ZGlmZiAtLWdpdCBhL0FuZHJvaWQubWsgYi9BbmRyb2lkLm1rCmluZGV4IDZlMWJkYzUuLjMwNDEwNjUgMTAwNjQ0Ci0tLSBhL0FuZHJvaWQubWsKKysrIGIvQW5kcm9pZC5tawpAQCAtODYsNyArODYsNiBAQAogCWNvcmUvamF2YS9hbmRyb2lkL2FwcC9JU2VhcmNoTWFuYWdlci5haWRsIFwKIAljb3JlL2phdmEvYW5kcm9pZC9hcHAvSVNlYXJjaE1hbmFnZXJDYWxsYmFjay5haWRsIFwKIAljb3JlL2phdmEvYW5kcm9pZC9hcHAvSVNlcnZpY2VDb25uZWN0aW9uLmFpZGwgXAotCWNvcmUvamF2YS9hbmRyb2lkL2FwcC9JU3RhdHVzQmFyLmFpZGwgXAogCWNvcmUvamF2YS9hbmRyb2lkL2FwcC9JVGh1bWJuYWlsUmVjZWl2ZXIuYWlkbCBcCiAJY29yZS9qYXZhL2FuZHJvaWQvYXBwL0lUcmFuc2llbnROb3RpZmljYXRpb24uYWlkbCBcCiAJY29yZS9qYXZhL2FuZHJvaWQvYXBwL0lVaU1vZGVNYW5hZ2VyLmFpZGwgXApAQCAtMTU1LDYgKzE1NCw4IEBACiAJY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL2JhY2t1cC9JQmFja3VwVHJhbnNwb3J0LmFpZGwgXAogCWNvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9vcy9JRHJvcEJveE1hbmFnZXJTZXJ2aWNlLmFpZGwgXAogCWNvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9vcy9JUmVzdWx0UmVjZWl2ZXIuYWlkbCBcCisJY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3N0YXR1c2Jhci9JU3RhdHVzQmFyLmFpZGwgXAorCWNvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9zdGF0dXNiYXIvSVN0YXR1c0JhclNlcnZpY2UuYWlkbCBcCiAJY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3ZpZXcvSUlucHV0Q29udGV4dC5haWRsIFwKIAljb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdmlldy9JSW5wdXRDb250ZXh0Q2FsbGJhY2suYWlkbCBcCiAJY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3ZpZXcvSUlucHV0TWV0aG9kLmFpZGwgXApAQCAtMTk4LDYgKzE5OSw5IEBACiBMT0NBTF9NT0RVTEUgOj0gZnJhbWV3b3JrCiBMT0NBTF9NT0RVTEVfQ0xBU1MgOj0gSkFWQV9MSUJSQVJJRVMKIAorTE9DQUxfTk9fRU1NQV9JTlNUUlVNRU5UIDo9IHRydWUKK0xPQ0FMX05PX0VNTUFfQ09NUElMRSA6PSB0cnVlCisKICMgTGlzdCBvZiBjbGFzc2VzIGFuZCBpbnRlcmZhY2VzIHdoaWNoIHNob3VsZCBiZSBsb2FkZWQgYnkgdGhlIFp5Z290ZS4KIExPQ0FMX0pBVkFfUkVTT1VSQ0VfRklMRVMgKz0gJChMT0NBTF9QQVRIKS9wcmVsb2FkZWQtY2xhc3NlcwogCkBAIC0yOTQsNyArMjk4LDcgQEAKICMgYXMgImZpbmFsIiBpbiB0aGUgb2ZmaWNpYWwgU0RLIEFQSXMuCiBmd2Jhc2VfZGlyc190b19kb2N1bWVudCArPSBjb3JlL2NvbmZpZy9zZGsKIAotIyBUaGVzZSBhcmUgcmVsYXRpdmUgdG8gZGFsdmlrL2xpYmNvcmUKKyMgVGhlc2UgYXJlIHJlbGF0aXZlIHRvIGxpYmNvcmUKICMgSW50ZW50aW9uYWxseSBub3QgaW5jbHVkZWQgZnJvbSBsaWJjb3JlOgogIyAgICAgaWN1IG9wZW5zc2wgc3VuY29tcGF0IHN1cHBvcnQKIGxpYmNvcmVfdG9fZG9jdW1lbnQgOj0gXApAQCAtMzM0LDcgKzMzOCw3IEBACiBkaXJzX3RvX2RvY3VtZW50IDo9IFwKIAkkKGZ3YmFzZV9kaXJzX3RvX2RvY3VtZW50KSBcCiAJJChub25fYmFzZV9kaXJzKSBcCi0JJChhZGRwcmVmaXggLi4vLi4vZGFsdmlrL2xpYmNvcmUvLCAkKGxpYmNvcmVfdG9fZG9jdW1lbnQpKQorCSQoYWRkcHJlZml4IC4uLy4uL2xpYmNvcmUvLCAkKGxpYmNvcmVfdG9fZG9jdW1lbnQpKQogCiBodG1sX2RpcnMgOj0gXAogCSQoRlJBTUVXT1JLU19CQVNFX1NVQkRJUlMpIFwKQEAgLTM0NSw2ICszNDksMTAgQEAKIAkkKGNhbGwgZmluZC1vdGhlci1qYXZhLWZpbGVzLCAkKGRpcnNfdG9fZG9jdW1lbnQpKSBcCiAJJChjYWxsIGZpbmQtb3RoZXItaHRtbC1maWxlcywgJChodG1sX2RpcnMpKQogCisjIFRoaXMgaXMgdXNlZCBieSBpZGUubWsgYXMgdGhlIGxpc3Qgb2Ygc291cmNlIGZpbGVzIHRoYXQgYXJlCisjIGFsd2F5cyBpbmNsdWRlZC4KK0lOVEVSTkFMX1NES19TT1VSQ0VfRElSUyA6PSAkKGFkZHByZWZpeCAkKExPQ0FMX1BBVEgpLywkKGRpcnNfdG9fZG9jdW1lbnQpKQorCiBmcmFtZXdvcmtfZG9jc19MT0NBTF9EUk9JRERPQ19TT1VSQ0VfUEFUSCA6PSBcCiAJJChGUkFNRVdPUktTX0JBU0VfSkFWQV9TUkNfRElSUykKIApAQCAtMzk2LDYgKzQwNCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VzL3NhbXBsZXMvQ3ViZUxpdmVXYWxscGFwZXIgIkxpdmUgV2FsbHBhcGVyIiBcCiAJCS1zYW1wbGVjb2RlICQoc2FtcGxlX2RpcikvSG9tZSBcCiAJCSAgICAgICAgICAgIHJlc291cmNlcy9zYW1wbGVzL0hvbWUgIkhvbWUiIFwKKwkJLXNhbXBsZWNvZGUgJChzYW1wbGVfZGlyKS9IZWF2eVdlaWdodCBcCisJCSAgICAgICAgICAgIHJlc291cmNlcy9zYW1wbGVzL0hlYXZ5V2VpZ2h0ICJIZWF2eSBXZWlnaHQgQXBwIiBcCiAJCS1zYW1wbGVjb2RlICQoc2FtcGxlX2RpcikvSmV0Qm95IFwKIAkJICAgICAgICAgICAgcmVzb3VyY2VzL3NhbXBsZXMvSmV0Qm95ICJKZXRCb3kiIFwKIAkJLXNhbXBsZWNvZGUgJChzYW1wbGVfZGlyKS9MdW5hckxhbmRlciBcCkBAIC00MDQsOCArNDE0LDggQEAKIAkJICAgICAgICAgICAgcmVzb3VyY2VzL3NhbXBsZXMvTXVsdGlSZXNvbHV0aW9uICJNdWx0aXBsZSBSZXNvbHV0aW9ucyIgXAogCQktc2FtcGxlY29kZSAkKHNhbXBsZV9kaXIpL05vdGVQYWQgXAogCQkgICAgICAgICAgICByZXNvdXJjZXMvc2FtcGxlcy9Ob3RlUGFkICJOb3RlIFBhZCIgXAotICAgICAgICAgICAgICAgIC1zYW1wbGVjb2RlICQoc2FtcGxlX2RpcikvU2FtcGxlU3luY0FkYXB0ZXIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlcy9zYW1wbGVzL1NhbXBsZVN5bmNBZGFwdGVyICJTYW1wbGUgU3luYyBBZGFwdGVyIiBcCisJCS1zYW1wbGVjb2RlICQoc2FtcGxlX2RpcikvU2FtcGxlU3luY0FkYXB0ZXIgXAorCQkgICAgICAgICAgICByZXNvdXJjZXMvc2FtcGxlcy9TYW1wbGVTeW5jQWRhcHRlciAiU2FtcGxlIFN5bmMgQWRhcHRlciIgXAogCQktc2FtcGxlY29kZSAkKHNhbXBsZV9kaXIpL1NlYXJjaGFibGVEaWN0aW9uYXJ5IFwKIAkJICAgICAgICAgICAgcmVzb3VyY2VzL3NhbXBsZXMvU2VhcmNoYWJsZURpY3Rpb25hcnkgIlNlYXJjaGFibGUgRGljdGlvbmFyeSB2MiIgXAogCQktc2FtcGxlY29kZSAkKHNhbXBsZV9kaXIpL1NuYWtlIFwKQEAgLTU5Miw2ICs2MDIsOSBAQAogCiBMT0NBTF9NT0RVTEUgOj0gZXh0CiAKK0xPQ0FMX05PX0VNTUFfSU5TVFJVTUVOVCA6PSB0cnVlCitMT0NBTF9OT19FTU1BX0NPTVBJTEUgOj0gdHJ1ZQorCiBpbmNsdWRlICQoQlVJTERfSkFWQV9MSUJSQVJZKQogCiAKZGlmZiAtLWdpdCBhL0NsZWFuU3BlYy5tayBiL0NsZWFuU3BlYy5tawppbmRleCA3MDc0MDRiLi4yNmQ4YTFiIDEwMDY0NAotLS0gYS9DbGVhblNwZWMubWsKKysrIGIvQ2xlYW5TcGVjLm1rCkBAIC01MSw2ICs1MSw5IEBACiAkKGNhbGwgYWRkLWNsZWFuLXN0ZXAsIHJtIC1yZiAkKE9VVF9ESVIpL3RhcmdldC9jb21tb24vb2JqL0pBVkFfTElCUkFSSUVTL2ZyYW1ld29ya19pbnRlcm1lZGlhdGVzL3NyYy9jb3JlL2phdmEvYW5kcm9pZC9hcHApCiAkKGNhbGwgYWRkLWNsZWFuLXN0ZXAsIHJtIC1yZiAkKE9VVF9ESVIpL3RhcmdldC9jb21tb24vb2JqL0pBVkFfTElCUkFSSUVTL2ZyYW1ld29ya19pbnRlcm1lZGlhdGVzL3NyYy9jb3JlL2phdmEvYW5kcm9pZC9jb250ZW50KQogJChjYWxsIGFkZC1jbGVhbi1zdGVwLCBybSAtcmYgJChPVVRfRElSKS90YXJnZXQvY29tbW9uL29iai9BUFBTL0ZyYW1ld29ya1Rlc3RfaW50ZXJtZWRpYXRlcy8pCiskKGNhbGwgYWRkLWNsZWFuLXN0ZXAsIHJtIC1yZiAkKE9VVF9ESVIpL3RhcmdldC9jb21tb24vb2JqL0pBVkFfTElCUkFSSUVTL2FuZHJvaWQucG9saWN5KikKKyQoY2FsbCBhZGQtY2xlYW4tc3RlcCwgcm0gLXJmICQoVEFSR0VUX09VVF9KQVZBX0xJQlJBUklFUykvYW5kcm9pZC5wb2xpY3kuamFyKQorJChjYWxsIGFkZC1jbGVhbi1zdGVwLCBybSAtcmYgJChPVVRfRElSKS90YXJnZXQvY29tbW9uL29iai9KQVZBX0xJQlJBUklFUy9mcmFtZXdvcmtfaW50ZXJtZWRpYXRlcykKIAogCiAjICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgpkaWZmIC0tZ2l0IGEvYXBpLzkueG1sIGIvYXBpLzkueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3NTk2YmQKLS0tIC9kZXYvbnVsbAorKysgYi9hcGkvOS54bWwKQEAgLTAsMCArMSwzOTU3MzYgQEAKKzxhcGk+Cis8cGFja2FnZSBuYW1lPSJhbmRyb2lkIgorPgorPGNsYXNzIG5hbWU9Ik1hbmlmZXN0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1hbmlmZXN0IgorIHR5cGU9ImFuZHJvaWQuTWFuaWZlc3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTWFuaWZlc3QucGVybWlzc2lvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1hbmlmZXN0LnBlcm1pc3Npb24iCisgdHlwZT0iYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iQUNDRVNTX0NIRUNLSU5fUFJPUEVSVElFUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uQUNDRVNTX0NIRUNLSU5fUFJPUEVSVElFUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ0NFU1NfQ09BUlNFX0xPQ0FUSU9OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5BQ0NFU1NfQ09BUlNFX0xPQ0FUSU9OJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDQ0VTU19GSU5FX0xPQ0FUSU9OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5BQ0NFU1NfRklORV9MT0NBVElPTiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ0NFU1NfTE9DQVRJT05fRVhUUkFfQ09NTUFORFMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLkFDQ0VTU19MT0NBVElPTl9FWFRSQV9DT01NQU5EUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ0NFU1NfTU9DS19MT0NBVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uQUNDRVNTX01PQ0tfTE9DQVRJT04mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNDRVNTX05FVFdPUktfU1RBVEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLkFDQ0VTU19ORVRXT1JLX1NUQVRFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDQ0VTU19TVVJGQUNFX0ZMSU5HRVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLkFDQ0VTU19TVVJGQUNFX0ZMSU5HRVImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNDRVNTX1dJRklfU1RBVEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLkFDQ0VTU19XSUZJX1NUQVRFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDQ09VTlRfTUFOQUdFUiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uQUNDT1VOVF9NQU5BR0VSJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFVVEhFTlRJQ0FURV9BQ0NPVU5UUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uQVVUSEVOVElDQVRFX0FDQ09VTlRTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJBVFRFUllfU1RBVFMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLkJBVFRFUllfU1RBVFMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQklORF9BUFBXSURHRVQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLkJJTkRfQVBQV0lER0VUJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJJTkRfREVWSUNFX0FETUlOIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5CSU5EX0RFVklDRV9BRE1JTiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJCSU5EX0lOUFVUX01FVEhPRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uQklORF9JTlBVVF9NRVRIT0QmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQklORF9XQUxMUEFQRVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLkJJTkRfV0FMTFBBUEVSJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJMVUVUT09USCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uQkxVRVRPT1RIJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJMVUVUT09USF9BRE1JTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uQkxVRVRPT1RIX0FETUlOJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJSSUNLIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5CUklDSyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJCUk9BRENBU1RfUEFDS0FHRV9SRU1PVkVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5CUk9BRENBU1RfUEFDS0FHRV9SRU1PVkVEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJST0FEQ0FTVF9TTVMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLkJST0FEQ0FTVF9TTVMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQlJPQURDQVNUX1NUSUNLWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uQlJPQURDQVNUX1NUSUNLWSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJCUk9BRENBU1RfV0FQX1BVU0giCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLkJST0FEQ0FTVF9XQVBfUFVTSCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDQUxMX1BIT05FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5DQUxMX1BIT05FJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNBTExfUFJJVklMRUdFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uQ0FMTF9QUklWSUxFR0VEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNBTUVSQSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uQ0FNRVJBJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNIQU5HRV9DT01QT05FTlRfRU5BQkxFRF9TVEFURSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uQ0hBTkdFX0NPTVBPTkVOVF9FTkFCTEVEX1NUQVRFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNIQU5HRV9DT05GSUdVUkFUSU9OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5DSEFOR0VfQ09ORklHVVJBVElPTiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDSEFOR0VfTkVUV09SS19TVEFURSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uQ0hBTkdFX05FVFdPUktfU1RBVEUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hBTkdFX1dJRklfTVVMVElDQVNUX1NUQVRFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5DSEFOR0VfV0lGSV9NVUxUSUNBU1RfU1RBVEUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hBTkdFX1dJRklfU1RBVEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLkNIQU5HRV9XSUZJX1NUQVRFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNMRUFSX0FQUF9DQUNIRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uQ0xFQVJfQVBQX0NBQ0hFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNMRUFSX0FQUF9VU0VSX0RBVEEiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLkNMRUFSX0FQUF9VU0VSX0RBVEEmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVFJPTF9MT0NBVElPTl9VUERBVEVTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5DT05UUk9MX0xPQ0FUSU9OX1VQREFURVMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVMRVRFX0NBQ0hFX0ZJTEVTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5ERUxFVEVfQ0FDSEVfRklMRVMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVMRVRFX1BBQ0tBR0VTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5ERUxFVEVfUEFDS0FHRVMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVWSUNFX1BPV0VSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5ERVZJQ0VfUE9XRVImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRElBR05PU1RJQyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uRElBR05PU1RJQyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJESVNBQkxFX0tFWUdVQVJEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5ESVNBQkxFX0tFWUdVQVJEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRVTVAiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLkRVTVAmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhQQU5EX1NUQVRVU19CQVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLkVYUEFORF9TVEFUVVNfQkFSJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZBQ1RPUllfVEVTVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uRkFDVE9SWV9URVNUJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQVNITElHSFQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLkZMQVNITElHSFQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRk9SQ0VfQkFDSyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uRk9SQ0VfQkFDSyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHRVRfQUNDT1VOVFMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLkdFVF9BQ0NPVU5UUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHRVRfUEFDS0FHRV9TSVpFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5HRVRfUEFDS0FHRV9TSVpFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdFVF9UQVNLUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uR0VUX1RBU0tTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMT0JBTF9TRUFSQ0giCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLkdMT0JBTF9TRUFSQ0gmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSEFSRFdBUkVfVEVTVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uSEFSRFdBUkVfVEVTVCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTkpFQ1RfRVZFTlRTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5JTkpFQ1RfRVZFTlRTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklOU1RBTExfTE9DQVRJT05fUFJPVklERVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLklOU1RBTExfTE9DQVRJT05fUFJPVklERVImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU5TVEFMTF9QQUNLQUdFUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uSU5TVEFMTF9QQUNLQUdFUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTlRFUk5BTF9TWVNURU1fV0lORE9XIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5JTlRFUk5BTF9TWVNURU1fV0lORE9XJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklOVEVSTkVUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5JTlRFUk5FVCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLSUxMX0JBQ0tHUk9VTkRfUFJPQ0VTU0VTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5LSUxMX0JBQ0tHUk9VTkRfUFJPQ0VTU0VTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1BTkFHRV9BQ0NPVU5UUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uTUFOQUdFX0FDQ09VTlRTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1BTkFHRV9BUFBfVE9LRU5TIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5NQU5BR0VfQVBQX1RPS0VOUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNQVNURVJfQ0xFQVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLk1BU1RFUl9DTEVBUiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNT0RJRllfQVVESU9fU0VUVElOR1MiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLk1PRElGWV9BVURJT19TRVRUSU5HUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNT0RJRllfUEhPTkVfU1RBVEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLk1PRElGWV9QSE9ORV9TVEFURSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNT1VOVF9GT1JNQVRfRklMRVNZU1RFTVMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLk1PVU5UX0ZPUk1BVF9GSUxFU1lTVEVNUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNT1VOVF9VTk1PVU5UX0ZJTEVTWVNURU1TIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5NT1VOVF9VTk1PVU5UX0ZJTEVTWVNURU1TJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBFUlNJU1RFTlRfQUNUSVZJVFkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLlBFUlNJU1RFTlRfQUNUSVZJVFkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJPQ0VTU19PVVRHT0lOR19DQUxMUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uUFJPQ0VTU19PVVRHT0lOR19DQUxMUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRUFEX0NBTEVOREFSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5SRUFEX0NBTEVOREFSJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFQURfQ09OVEFDVFMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLlJFQURfQ09OVEFDVFMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkVBRF9GUkFNRV9CVUZGRVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLlJFQURfRlJBTUVfQlVGRkVSJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFQURfSElTVE9SWV9CT09LTUFSS1MiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y29tLmFuZHJvaWQuYnJvd3Nlci5wZXJtaXNzaW9uLlJFQURfSElTVE9SWV9CT09LTUFSS1MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkVBRF9JTlBVVF9TVEFURSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uUkVBRF9JTlBVVF9TVEFURSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRUFEX0xPR1MiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLlJFQURfTE9HUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRUFEX09XTkVSX0RBVEEiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLlJFQURfT1dORVJfREFUQSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRUFEX1BIT05FX1NUQVRFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5SRUFEX1BIT05FX1NUQVRFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFQURfU01TIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5SRUFEX1NNUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRUFEX1NZTkNfU0VUVElOR1MiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLlJFQURfU1lOQ19TRVRUSU5HUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRUFEX1NZTkNfU1RBVFMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLlJFQURfU1lOQ19TVEFUUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRUJPT1QiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLlJFQk9PVCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRUNFSVZFX0JPT1RfQ09NUExFVEVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5SRUNFSVZFX0JPT1RfQ09NUExFVEVEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFQ0VJVkVfTU1TIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5SRUNFSVZFX01NUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRUNFSVZFX1NNUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uUkVDRUlWRV9TTVMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkVDRUlWRV9XQVBfUFVTSCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uUkVDRUlWRV9XQVBfUFVTSCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRUNPUkRfQVVESU8iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLlJFQ09SRF9BVURJTyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRU9SREVSX1RBU0tTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5SRU9SREVSX1RBU0tTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFU1RBUlRfUEFDS0FHRVMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLlJFU1RBUlRfUEFDS0FHRVMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRU5EX1NNUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uU0VORF9TTVMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VUX0FDVElWSVRZX1dBVENIRVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLlNFVF9BQ1RJVklUWV9XQVRDSEVSJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFVF9BTFdBWVNfRklOSVNIIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5TRVRfQUxXQVlTX0ZJTklTSCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRVRfQU5JTUFUSU9OX1NDQUxFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5TRVRfQU5JTUFUSU9OX1NDQUxFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFVF9ERUJVR19BUFAiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLlNFVF9ERUJVR19BUFAmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VUX09SSUVOVEFUSU9OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5TRVRfT1JJRU5UQVRJT04mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VUX1BSRUZFUlJFRF9BUFBMSUNBVElPTlMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLlNFVF9QUkVGRVJSRURfQVBQTElDQVRJT05TJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VUX1BST0NFU1NfTElNSVQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLlNFVF9QUk9DRVNTX0xJTUlUJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFVF9USU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5TRVRfVElNRSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRVRfVElNRV9aT05FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5TRVRfVElNRV9aT05FJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFVF9XQUxMUEFQRVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLlNFVF9XQUxMUEFQRVImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VUX1dBTExQQVBFUl9ISU5UUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uU0VUX1dBTExQQVBFUl9ISU5UUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTSUdOQUxfUEVSU0lTVEVOVF9QUk9DRVNTRVMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLlNJR05BTF9QRVJTSVNURU5UX1BST0NFU1NFUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFUVVNfQkFSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5TVEFUVVNfQkFSJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNVQlNDUklCRURfRkVFRFNfUkVBRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uU1VCU0NSSUJFRF9GRUVEU19SRUFEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNVQlNDUklCRURfRkVFRFNfV1JJVEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLlNVQlNDUklCRURfRkVFRFNfV1JJVEUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1lTVEVNX0FMRVJUX1dJTkRPVyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uU1lTVEVNX0FMRVJUX1dJTkRPVyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVUERBVEVfREVWSUNFX1NUQVRTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5VUERBVEVfREVWSUNFX1NUQVRTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVTRV9DUkVERU5USUFMUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uVVNFX0NSRURFTlRJQUxTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlZJQlJBVEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLlZJQlJBVEUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0FLRV9MT0NLIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5XQUtFX0xPQ0smcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV1JJVEVfQVBOX1NFVFRJTkdTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5XUklURV9BUE5fU0VUVElOR1MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV1JJVEVfQ0FMRU5EQVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLldSSVRFX0NBTEVOREFSJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldSSVRFX0NPTlRBQ1RTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5XUklURV9DT05UQUNUUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXUklURV9FWFRFUk5BTF9TVE9SQUdFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5XUklURV9FWFRFUk5BTF9TVE9SQUdFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldSSVRFX0dTRVJWSUNFUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uV1JJVEVfR1NFUlZJQ0VTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldSSVRFX0hJU1RPUllfQk9PS01BUktTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2NvbS5hbmRyb2lkLmJyb3dzZXIucGVybWlzc2lvbi5XUklURV9ISVNUT1JZX0JPT0tNQVJLUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXUklURV9PV05FUl9EQVRBIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5XUklURV9PV05FUl9EQVRBJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldSSVRFX1NFQ1VSRV9TRVRUSU5HUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24uV1JJVEVfU0VDVVJFX1NFVFRJTkdTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldSSVRFX1NFVFRJTkdTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5XUklURV9TRVRUSU5HUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXUklURV9TTVMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLldSSVRFX1NNUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXUklURV9TWU5DX1NFVFRJTkdTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi5XUklURV9TWU5DX1NFVFRJTkdTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNYW5pZmVzdC5wZXJtaXNzaW9uX2dyb3VwIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTWFuaWZlc3QucGVybWlzc2lvbl9ncm91cCIKKyB0eXBlPSJhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb25fZ3JvdXAiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxmaWVsZCBuYW1lPSJBQ0NPVU5UUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24tZ3JvdXAuQUNDT1VOVFMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09TVF9NT05FWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24tZ3JvdXAuQ09TVF9NT05FWSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERVZFTE9QTUVOVF9UT09MUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24tZ3JvdXAuREVWRUxPUE1FTlRfVE9PTFMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSEFSRFdBUkVfQ09OVFJPTFMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wZXJtaXNzaW9uLWdyb3VwLkhBUkRXQVJFX0NPTlRST0xTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxPQ0FUSU9OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi1ncm91cC5MT0NBVElPTiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNRVNTQUdFUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24tZ3JvdXAuTUVTU0FHRVMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTkVUV09SSyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24tZ3JvdXAuTkVUV09SSyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQRVJTT05BTF9JTkZPIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi1ncm91cC5QRVJTT05BTF9JTkZPJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBIT05FX0NBTExTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi1ncm91cC5QSE9ORV9DQUxMUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVE9SQUdFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucGVybWlzc2lvbi1ncm91cC5TVE9SQUdFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNZU1RFTV9UT09MUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnBlcm1pc3Npb24tZ3JvdXAuU1lTVEVNX1RPT0xTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlIiCisgdHlwZT0iYW5kcm9pZC5SIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlIuYW5pbSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlIuYW5pbSIKKyB0eXBlPSJhbmRyb2lkLlIuYW5pbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9ImFjY2VsZXJhdGVfZGVjZWxlcmF0ZV9pbnRlcnBvbGF0b3IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzQzMjU4MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhY2NlbGVyYXRlX2ludGVycG9sYXRvciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3NDMyNTgxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImFudGljaXBhdGVfaW50ZXJwb2xhdG9yIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTc0MzI1ODMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYW50aWNpcGF0ZV9vdmVyc2hvb3RfaW50ZXJwb2xhdG9yIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTc0MzI1ODUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYm91bmNlX2ludGVycG9sYXRvciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3NDMyNTg2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImN5Y2xlX2ludGVycG9sYXRvciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3NDMyNTg4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRlY2VsZXJhdGVfaW50ZXJwb2xhdG9yIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTc0MzI1ODIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZmFkZV9pbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3NDMyNTc2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImZhZGVfb3V0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTc0MzI1NzciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibGluZWFyX2ludGVycG9sYXRvciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3NDMyNTg3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im92ZXJzaG9vdF9pbnRlcnBvbGF0b3IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzQzMjU4NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzbGlkZV9pbl9sZWZ0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTc0MzI1NzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2xpZGVfb3V0X3JpZ2h0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTc0MzI1NzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlIuYXJyYXkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSLmFycmF5IgorIHR5cGU9ImFuZHJvaWQuUi5hcnJheSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9ImVtYWlsQWRkcmVzc1R5cGVzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcyMzU5NjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW1Qcm90b2NvbHMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzIzNTk2OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJvcmdhbml6YXRpb25UeXBlcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MjM1OTcwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InBob25lVHlwZXMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzIzNTk3MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwb3N0YWxBZGRyZXNzVHlwZXMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzIzNTk3MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUi5hdHRyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUi5hdHRyIgorIHR5cGU9ImFuZHJvaWQuUi5hdHRyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iYWJzTGlzdFZpZXdTdHlsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODU4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImFjY291bnRQcmVmZXJlbmNlcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImFjY291bnRUeXBlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0MDciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYWN0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI3OTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYWN0aXZpdHlDbG9zZUVudGVyQW5pbWF0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5MzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYWN0aXZpdHlDbG9zZUV4aXRBbmltYXRpb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjkzOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhY3Rpdml0eU9wZW5FbnRlckFuaW1hdGlvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTM2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImFjdGl2aXR5T3BlbkV4aXRBbmltYXRpb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjkzNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhZGRTdGF0ZXNGcm9tQ2hpbGRyZW4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjk5MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhZGp1c3RWaWV3Qm91bmRzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwMzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYWxlcnREaWFsb2dTdHlsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODQ1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImFsbG93QmFja3VwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzOTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYWxsb3dDbGVhclVzZXJEYXRhIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI3NTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYWxsb3dTaW5nbGVUYXAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzM1MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhbGxvd1Rhc2tSZXBhcmVudGluZyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImFscGhhYmV0aWNTaG9ydGN1dCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjM1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImFsd2F5c0RyYXduV2l0aENhY2hlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5OTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYWx3YXlzUmV0YWluVGFza1N0YXRlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyNjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYW5nbGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzE2OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhbmltYXRlT25DbGljayIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImFuaW1hdGlvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjEzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImFuaW1hdGlvbkNhY2hlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5ODkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYW5pbWF0aW9uRHVyYXRpb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzAyNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhbmltYXRpb25PcmRlciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjE0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImFudGlhbGlhcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDM0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImFueURlbnNpdHkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzM3MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhcGlLZXkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzI4MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhdXRob3IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQ0NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhdXRob3JpdGllcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyNzc2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImF1dG9Db21wbGV0ZVRleHRWaWV3U3R5bGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjg1OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhdXRvTGluayIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImF1dG9TdGFydCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDQ1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImF1dG9UZXh0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxMTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhdXRvVXJsRGV0ZWN0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0MDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYmFja2dyb3VuZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTY0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJhY2tncm91bmREaW1BbW91bnQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjgwMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJiYWNrZ3JvdW5kRGltRW5hYmxlZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjk1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJhY2t1cEFnZW50IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzOTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYmFzZWxpbmVBbGlnbkJvdHRvbSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDQyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJhc2VsaW5lQWxpZ25lZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDQ2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJhc2VsaW5lQWxpZ25lZENoaWxkSW5kZXgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzA0NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJib3R0b20iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzE4NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJib3R0b21CcmlnaHQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjk1NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJib3R0b21EYXJrIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5NTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYm90dG9tTGVmdFJhZGl1cyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTc5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJvdHRvbU1lZGl1bSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTU4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJvdHRvbU9mZnNldCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzUxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJvdHRvbVJpZ2h0UmFkaXVzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxODAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYnVmZmVyVHlwZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDg2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJ1dHRvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDE1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJ1dHRvblN0eWxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4MjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYnV0dG9uU3R5bGVJbnNldCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJ1dHRvblN0eWxlU21hbGwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjgyNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJidXR0b25TdHlsZVRvZ2dsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODI3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNhY2hlQ29sb3JIaW50IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwMDkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY2FuZGlkYXRlc1RleHRTdHlsZVNwYW5zIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzMTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY2FwaXRhbGl6ZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTEzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY2VudGVyQnJpZ2h0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5NTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY2VudGVyQ29sb3IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzI3NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjZW50ZXJEYXJrIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5NTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY2VudGVyTWVkaXVtIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5NTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY2VudGVyWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTcwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNlbnRlclkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzE3MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjaGVja0JveFByZWZlcmVuY2VTdHlsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODk1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNoZWNrTWFyayIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNoZWNrYWJsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjM3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNoZWNrYWJsZUJlaGF2aW9yIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyMzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY2hlY2tib3hTdHlsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODYwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNoZWNrZWQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzAxNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjaGVja2VkQnV0dG9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwODAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY2hpbGREaXZpZGVyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwMjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY2hpbGRJbmRpY2F0b3IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzAyMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjaGlsZEluZGljYXRvckxlZnQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzAyMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjaGlsZEluZGljYXRvclJpZ2h0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwMjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY2hvaWNlTW9kZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDUxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNsZWFyVGFza09uTGF1bmNoIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI3NzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY2xpY2thYmxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5ODEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY2xpcENoaWxkcmVuIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5ODYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY2xpcE9yaWVudGF0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyNzQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY2xpcFRvUGFkZGluZyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTg3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNvZGVzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzMzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY29sbGFwc2VDb2x1bW5zIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwODMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY29sb3IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzE3MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjb2xvckJhY2tncm91bmQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjgwMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjb2xvckJhY2tncm91bmRDYWNoZUhpbnQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQzNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjb2xvckZvcmVncm91bmQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjgwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjb2xvckZvcmVncm91bmRJbnZlcnNlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyNzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY29sdW1uRGVsYXkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzIxNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjb2x1bW5XaWR0aCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDMxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNvbXBsZXRpb25IaW50IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxMjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY29tcGxldGlvbkhpbnRWaWV3IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxMjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY29tcGxldGlvblRocmVzaG9sZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNvbmZpZ0NoYW5nZXMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjc4MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjb25maWd1cmUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzM1NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjb25zdGFudFNpemUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzE1OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjb250ZW50IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzNTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY29udGVudEF1dGhvcml0eSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDA4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNvbnRlbnREZXNjcmlwdGlvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzc5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNyb3BUb1BhZGRpbmciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzA0MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjdXJzb3JWaXNpYmxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwOTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY3ljbGVzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyMjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGFzaEdhcCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTc1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRhc2hXaWR0aCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTc0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRhdGEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjc5OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkZWJ1Z2dhYmxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI3NjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGVmYXVsdFZhbHVlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyNDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGVsYXkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzIxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkZXBlbmRlbmN5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyNDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGVzY2VuZGFudEZvY3VzYWJpbGl0eSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTkzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRlc2NyaXB0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI3ODQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGV0YWNoV2FsbHBhcGVyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0MzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGV0YWlsQ29sdW1uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0MjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGV0YWlsU29jaWFsU3VtbWFyeSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRpYWwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzAxMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkaWFsb2dJY29uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyNTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGlhbG9nTGF5b3V0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyNTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGlhbG9nTWVzc2FnZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjUxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRpYWxvZ1ByZWZlcmVuY2VTdHlsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODk3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRpYWxvZ1RpdGxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyNTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGlnaXRzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxMTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGlyZWN0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyMTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGlyZWN0aW9uUHJpb3JpdHkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzIxOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkaXNhYmxlRGVwZW5kZW50c1N0YXRlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyNDkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGlzYWJsZWRBbHBoYSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODAzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRpdGhlciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDM2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRpdmlkZXIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzA0OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkaXZpZGVySGVpZ2h0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwNTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZHJhd1NlbGVjdG9yT25Ub3AiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzAwNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkcmF3YWJsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTYxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRyYXdhYmxlQm90dG9tIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxMTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZHJhd2FibGVMZWZ0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxMTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZHJhd2FibGVQYWRkaW5nIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxMjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZHJhd2FibGVSaWdodCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRyYXdhYmxlVG9wIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxMTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZHJhd2luZ0NhY2hlUXVhbGl0eSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTg0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRyb3BEb3duQW5jaG9yIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzNjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZHJvcERvd25IZWlnaHQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzM5NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkcm9wRG93bkhpbnRBcHBlYXJhbmNlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4ODgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZHJvcERvd25Ib3Jpem9udGFsT2Zmc2V0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0MzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZHJvcERvd25JdGVtU3R5bGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjg4NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkcm9wRG93bkxpc3RWaWV3U3R5bGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjg2MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkcm9wRG93blNlbGVjdG9yIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxMjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZHJvcERvd25WZXJ0aWNhbE9mZnNldCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDM3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRyb3BEb3duV2lkdGgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzM2MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkdXBsaWNhdGVQYXJlbnRTdGF0ZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTg1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImR1cmF0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxNjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZWRpdFRleHRQcmVmZXJlbmNlU3R5bGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjg5OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJlZGl0VGV4dFN0eWxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4NjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZWRpdGFibGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzExNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImVkaXRvckV4dHJhcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImVsbGlwc2l6ZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImVtcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDk2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImVuYWJsZWQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjc2NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImVuZENvbG9yIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxNjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZW5kWWVhciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTMzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImVudHJpZXMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjkzMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJlbnRyeVZhbHVlcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImV2ZW50c0ludGVyY2VwdGlvbkVuYWJsZWQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzM4OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJleGNsdWRlRnJvbVJlY2VudHMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjc3NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJleHBhbmRhYmxlTGlzdFByZWZlcnJlZENoaWxkSW5kaWNhdG9yTGVmdCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODM0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImV4cGFuZGFibGVMaXN0UHJlZmVycmVkQ2hpbGRJbmRpY2F0b3JSaWdodCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODM1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImV4cGFuZGFibGVMaXN0UHJlZmVycmVkQ2hpbGRQYWRkaW5nTGVmdCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODMxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImV4cGFuZGFibGVMaXN0UHJlZmVycmVkSXRlbUluZGljYXRvckxlZnQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjgzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJleHBhbmRhYmxlTGlzdFByZWZlcnJlZEl0ZW1JbmRpY2F0b3JSaWdodCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODMzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImV4cGFuZGFibGVMaXN0UHJlZmVycmVkSXRlbVBhZGRpbmdMZWZ0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4MzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZXhwYW5kYWJsZUxpc3RWaWV3U3R5bGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjg2MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJleHBhbmRhYmxlTGlzdFZpZXdXaGl0ZVN0eWxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0NDYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZXhwb3J0ZWQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjc2OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJleHRyYVRlbnNpb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzM3MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmYWN0b3IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzIxOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmYWRlRHVyYXRpb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzM4NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmYWRlRW5hYmxlZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzkwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImZhZGVPZmZzZXQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzM4MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmYWRlU2Nyb2xsYmFycyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDM0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImZhZGluZ0VkZ2UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjk3NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmYWRpbmdFZGdlTGVuZ3RoIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5NzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZmFzdFNjcm9sbEVuYWJsZWQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzMwMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmaWxsQWZ0ZXIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzE5NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmaWxsQmVmb3JlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxOTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZmlsbEVuYWJsZWQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzM0MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmaWxsVmlld3BvcnQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzEzMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmaWx0ZXIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzAzNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmaW5pc2hPbkNsb3NlU3lzdGVtRGlhbG9ncyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDMxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImZpbmlzaE9uVGFza0xhdW5jaCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyNzcyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImZpdHNTeXN0ZW1XaW5kb3dzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5NzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZmxpcEludGVydmFsIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxMjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZm9jdXNhYmxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5NzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZm9jdXNhYmxlSW5Ub3VjaE1vZGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjk3MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmb290ZXJEaXZpZGVyc0VuYWJsZWQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzMxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmb3JlZ3JvdW5kIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwMTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZm9yZWdyb3VuZEdyYXZpdHkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzI2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmb3JtYXQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzAxMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmcmVlemVzVGV4dCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImZyb21BbHBoYSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjEwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImZyb21EZWdyZWVzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxODciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZnJvbVhEZWx0YSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjA2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImZyb21YU2NhbGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzIwMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmcm9tWURlbHRhIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyMDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZnJvbVlTY2FsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjA0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImZ1bGxCcmlnaHQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjk1NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmdWxsRGFyayIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTUwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImZ1bmN0aW9uYWxUZXN0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI3ODciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZ2FsbGVyeUl0ZW1CYWNrZ3JvdW5kIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4MjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZ2FsbGVyeVN0eWxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4NjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZ2VzdHVyZUNvbG9yIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzODEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZ2VzdHVyZVN0cm9rZUFuZ2xlVGhyZXNob2xkIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzODgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZ2VzdHVyZVN0cm9rZUxlbmd0aFRocmVzaG9sZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzg2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Imdlc3R1cmVTdHJva2VTcXVhcmVuZXNzVGhyZXNob2xkIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzODciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZ2VzdHVyZVN0cm9rZVR5cGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzM4NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJnZXN0dXJlU3Ryb2tlV2lkdGgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzM4MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJnbEVzVmVyc2lvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzkzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImdyYWRpZW50UmFkaXVzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxNzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZ3JhbnRVcmlQZXJtaXNzaW9ucyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyNzc5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImdyYXZpdHkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjkyNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJncmlkVmlld1N0eWxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4NjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZ3JvdXBJbmRpY2F0b3IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzAxOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJoYW5kX2hvdXIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzAxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJoYW5kX21pbnV0ZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImhhbmRsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzU0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImhhbmRsZVByb2ZpbGluZyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyNzg2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImhhcHRpY0ZlZWRiYWNrRW5hYmxlZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzU4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Imhhc0NvZGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjc2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJoZWFkZXJCYWNrZ3JvdW5kIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwNTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaGVhZGVyRGl2aWRlcnNFbmFibGVkIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzMTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaGVpZ2h0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwOTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaGludCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDg4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Imhvcml6b250YWxEaXZpZGVyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwNTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaG9yaXpvbnRhbEdhcCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzI3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Imhvcml6b250YWxTcGFjaW5nIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwMjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaG9zdCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyNzkyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Imljb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjc1NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY29uUHJldmlldyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzM3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImlkIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5NjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWdub3JlR3Jhdml0eSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjYzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImltYWdlQnV0dG9uU3R5bGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjg2NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpbWFnZVdlbGxTdHlsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODY3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImltZUFjdGlvbklkIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzNjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW1lQWN0aW9uTGFiZWwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzM2NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpbWVFeHRyYWN0RW50ZXJBbmltYXRpb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzM2OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpbWVFeHRyYWN0RXhpdEFuaW1hdGlvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzY5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImltZUZ1bGxzY3JlZW5CYWNrZ3JvdW5kIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzMDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW1lT3B0aW9ucyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzY0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImluQW5pbWF0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxMjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW5jbHVkZUZvbnRQYWRkaW5nIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxMDMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW5jbHVkZUluR2xvYmFsU2VhcmNoIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzNzQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW5kZXRlcm1pbmF0ZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDY1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImluZGV0ZXJtaW5hdGVCZWhhdmlvciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDcwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImluZGV0ZXJtaW5hdGVEcmF3YWJsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDY3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImluZGV0ZXJtaW5hdGVEdXJhdGlvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDY5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImluZGV0ZXJtaW5hdGVPbmx5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwNjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW5kaWNhdG9yTGVmdCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImluZGljYXRvclJpZ2h0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwMjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW5mbGF0ZWRJZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTk1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImluaXRPcmRlciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyNzc4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImluaXRpYWxMYXlvdXQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzM0NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpbm5lclJhZGl1cyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzU5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImlubmVyUmFkaXVzUmF0aW8iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzE2MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpbnB1dE1ldGhvZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW5wdXRUeXBlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyOTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW5zZXRCb3R0b20iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzE5NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpbnNldExlZnQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzE5MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpbnNldFJpZ2h0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxOTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW5zZXRUb3AiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzE5MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpbnN0YWxsTG9jYXRpb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQ0NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpbnRlcnBvbGF0b3IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzA3MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpc0RlZmF1bHQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzI5NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpc0luZGljYXRvciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDc5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImlzTW9kaWZpZXIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzMzNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpc1JlcGVhdGFibGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzMzNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpc1Njcm9sbENvbnRhaW5lciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzQyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImlzU3RpY2t5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzMzUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaXRlbUJhY2tncm91bmQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzA1NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpdGVtSWNvbkRpc2FibGVkQWxwaGEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzA1NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpdGVtVGV4dEFwcGVhcmFuY2UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzA1MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrZWVwU2NyZWVuT24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzI4NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrZXkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzI0MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrZXlCYWNrZ3JvdW5kIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzMTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia2V5RWRnZUZsYWdzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzMzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia2V5SGVpZ2h0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzMjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia2V5SWNvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzQwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtleUxhYmVsIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzMzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia2V5T3V0cHV0VGV4dCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzM4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtleVByZXZpZXdIZWlnaHQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzMyMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrZXlQcmV2aWV3TGF5b3V0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzMTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia2V5UHJldmlld09mZnNldCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtleVRleHRDb2xvciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzE4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtleVRleHRTaXplIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia2V5V2lkdGgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzMyNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrZXlib2FyZE1vZGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzM0MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrZXljb2RlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5NDkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia2lsbEFmdGVyUmVzdG9yZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxhYmVsIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI3NTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibGFiZWxUZXh0U2l6ZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzE3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxhcmdlU2NyZWVucyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzk4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxhdW5jaE1vZGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjc4MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsYXlvdXQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjk5NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsYXlvdXRBbmltYXRpb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjk4OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsYXlvdXRfYWJvdmUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzE0MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsYXlvdXRfYWxpZ25CYXNlbGluZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTQyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxheW91dF9hbGlnbkJvdHRvbSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTQ2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxheW91dF9hbGlnbkxlZnQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzE0MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsYXlvdXRfYWxpZ25QYXJlbnRCb3R0b20iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzE1MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsYXlvdXRfYWxpZ25QYXJlbnRMZWZ0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxNDciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibGF5b3V0X2FsaWduUGFyZW50UmlnaHQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzE0OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsYXlvdXRfYWxpZ25QYXJlbnRUb3AiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzE0OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsYXlvdXRfYWxpZ25SaWdodCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTQ1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxheW91dF9hbGlnblRvcCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTQ0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxheW91dF9hbGlnbldpdGhQYXJlbnRJZk1pc3NpbmciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzE1NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsYXlvdXRfYmVsb3ciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzE0MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsYXlvdXRfY2VudGVySG9yaXpvbnRhbCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTUyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxheW91dF9jZW50ZXJJblBhcmVudCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTUxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxheW91dF9jZW50ZXJWZXJ0aWNhbCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTUzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxheW91dF9jb2x1bW4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzA4NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsYXlvdXRfZ3Jhdml0eSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTMxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxheW91dF9oZWlnaHQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjk5NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsYXlvdXRfbWFyZ2luIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5OTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibGF5b3V0X21hcmdpbkJvdHRvbSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDAyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxheW91dF9tYXJnaW5MZWZ0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5OTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibGF5b3V0X21hcmdpblJpZ2h0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwMDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibGF5b3V0X21hcmdpblRvcCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxheW91dF9zY2FsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTU1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxheW91dF9zcGFuIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwODUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibGF5b3V0X3RvTGVmdE9mIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxMzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibGF5b3V0X3RvUmlnaHRPZiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTM5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxheW91dF93ZWlnaHQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzEzNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsYXlvdXRfd2lkdGgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjk5NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsYXlvdXRfeCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTM1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxheW91dF95IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxMzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibGVmdCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTgxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxpbmVTcGFjaW5nRXh0cmEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzI4NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsaW5lU3BhY2luZ011bHRpcGxpZXIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzI4OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsaW5lcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDkyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxpbmtzQ2xpY2thYmxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5MjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibGlzdENob2ljZUluZGljYXRvck11bHRpcGxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyOTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibGlzdENob2ljZUluZGljYXRvclNpbmdsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjg5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Imxpc3REaXZpZGVyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyODQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibGlzdFByZWZlcnJlZEl0ZW1IZWlnaHQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjgyOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsaXN0U2VsZWN0b3IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzAwMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsaXN0U2VwYXJhdG9yVGV4dFZpZXdTdHlsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjcyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Imxpc3RWaWV3U3R5bGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjg2OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsaXN0Vmlld1doaXRlU3R5bGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjg2OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsb25nQ2xpY2thYmxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5ODIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibWFuYWdlU3BhY2VBY3Rpdml0eSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyNzU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1hcFZpZXdTdHlsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODkwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1hcnF1ZWVSZXBlYXRMaW1pdCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjkzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1heCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDYyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1heEVtcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDk1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1heEhlaWdodCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDQwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1heEl0ZW1zUGVyUm93IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwNjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibWF4TGVuZ3RoIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxMDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibWF4TGV2ZWwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzE4NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJtYXhMaW5lcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDkxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1heFJvd3MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzA1OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJtYXhTZGtWZXJzaW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzNzciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibWF4V2lkdGgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzAzOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJtZWFzdXJlQWxsQ2hpbGRyZW4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzAxOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJtZW51Q2F0ZWdvcnkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzIzMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJtaW1lVHlwZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyNzkwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1pbkVtcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDk4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1pbkhlaWdodCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDcyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1pbkxldmVsIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxODUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibWluTGluZXMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzA5NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJtaW5TZGtWZXJzaW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyNzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibWluV2lkdGgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzA3MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJtb2RlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxMzQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibW9yZUljb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzA2MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJtdWx0aXByb2Nlc3MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjc3MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJuYW1lIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI3NTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibmVnYXRpdmVCdXR0b25UZXh0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyNTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibmV4dEZvY3VzRG93biIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTgwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im5leHRGb2N1c0xlZnQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjk3NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJuZXh0Rm9jdXNSaWdodCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTc4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im5leHRGb2N1c1VwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5NzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibm9IaXN0b3J5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzMDkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibm9ybWFsU2NyZWVucyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzk3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im51bUNvbHVtbnMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzAzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJudW1TdGFycyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDc2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im51bWVyaWMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzEwOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im51bWVyaWNTaG9ydGN1dCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjM2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im9uQ2xpY2siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzM3NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJvbmVzaG90IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxNTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ib3JkZXIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzI0MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJvcmRlckluQ2F0ZWdvcnkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzIzMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJvcmRlcmluZ0Zyb21YbWwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzIzOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJvcmllbnRhdGlvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im91dEFuaW1hdGlvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InBhZGRpbmciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjk2NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwYWRkaW5nQm90dG9tIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5NjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icGFkZGluZ0xlZnQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjk2NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwYWRkaW5nUmlnaHQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjk2OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwYWRkaW5nVG9wIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5NjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icGFuZWxCYWNrZ3JvdW5kIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4NDYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icGFuZWxDb2xvckJhY2tncm91bmQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjg0OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwYW5lbENvbG9yRm9yZWdyb3VuZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InBhbmVsRnVsbEJhY2tncm91bmQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjg0NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwYW5lbFRleHRBcHBlYXJhbmNlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4NTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icGFzc3dvcmQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzEwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InBhdGgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjc5NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwYXRoUGF0dGVybiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyNzk2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InBhdGhQcmVmaXgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjc5NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwZXJtaXNzaW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI3NTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icGVybWlzc2lvbkdyb3VwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI3NjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icGVyc2lzdGVudCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyNzY1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InBlcnNpc3RlbnREcmF3aW5nQ2FjaGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjk5MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwaG9uZU51bWJlciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTExIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icGl2b3RYIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxODkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icGl2b3RZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxOTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icG9wdXBCYWNrZ3JvdW5kIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxMjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icG9wdXBDaGFyYWN0ZXJzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzMzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icG9wdXBLZXlib2FyZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzMxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InBvcHVwTGF5b3V0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzMjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icG9wdXBXaW5kb3dTdHlsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODcwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InBvcnQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjc5MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwb3NpdGl2ZUJ1dHRvblRleHQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzI1MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwcmVmZXJlbmNlQ2F0ZWdvcnlTdHlsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODkyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByZWZlcmVuY2VJbmZvcm1hdGlvblN0eWxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4OTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJlZmVyZW5jZUxheW91dENoaWxkIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5MDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJlZmVyZW5jZVNjcmVlblN0eWxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4OTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJlZmVyZW5jZVN0eWxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4OTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJpb3JpdHkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjc4MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwcml2YXRlSW1lT3B0aW9ucyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjk5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByb2Nlc3MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjc2OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwcm9ncmVzcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDYzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByb2dyZXNzQmFyU3R5bGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjg3MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwcm9ncmVzc0JhclN0eWxlSG9yaXpvbnRhbCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODcyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByb2dyZXNzQmFyU3R5bGVJbnZlcnNlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzOTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJvZ3Jlc3NCYXJTdHlsZUxhcmdlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4NzQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJvZ3Jlc3NCYXJTdHlsZUxhcmdlSW52ZXJzZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDAxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByb2dyZXNzQmFyU3R5bGVTbWFsbCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODczIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByb2dyZXNzQmFyU3R5bGVTbWFsbEludmVyc2UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwcm9ncmVzc0JhclN0eWxlU21hbGxUaXRsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjc5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByb2dyZXNzRHJhd2FibGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzA2OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwcm9tcHQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzEzMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwcm90ZWN0aW9uTGV2ZWwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjc2MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJxdWVyeUFjdGlvbk1zZyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjI3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InF1ZXJ5QWZ0ZXJaZXJvUmVzdWx0cyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzk0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InF1aWNrQ29udGFjdEJhZGdlU3R5bGVTbWFsbFdpbmRvd0xhcmdlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0NDMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icXVpY2tDb250YWN0QmFkZ2VTdHlsZVNtYWxsV2luZG93TWVkaXVtIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0NDIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icXVpY2tDb250YWN0QmFkZ2VTdHlsZVNtYWxsV2luZG93U21hbGwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQ0MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJxdWlja0NvbnRhY3RCYWRnZVN0eWxlV2luZG93TGFyZ2UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQ0MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJxdWlja0NvbnRhY3RCYWRnZVN0eWxlV2luZG93TWVkaXVtIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0MzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icXVpY2tDb250YWN0QmFkZ2VTdHlsZVdpbmRvd1NtYWxsIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0MzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icmFkaW9CdXR0b25TdHlsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODc4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InJhZGl1cyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTc2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InJhdGluZyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDc3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InJhdGluZ0JhclN0eWxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4NzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icmF0aW5nQmFyU3R5bGVJbmRpY2F0b3IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzI4MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJyYXRpbmdCYXJTdHlsZVNtYWxsIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4NzciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icmVhZFBlcm1pc3Npb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjc1OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJyZXBlYXRDb3VudCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTk5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InJlcGVhdE1vZGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzIwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJyZXFGaXZlV2F5TmF2IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzMTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icmVxSGFyZEtleWJvYXJkIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzMDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icmVxS2V5Ym9hcmRUeXBlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzMDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icmVxTmF2aWdhdGlvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzA2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InJlcVRvdWNoU2NyZWVuIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzMDMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icmVxdWlyZWQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQwNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJyZXNpemVhYmxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0MDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icmVzb3VyY2UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjc4OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJyZXN0b3JlQW55VmVyc2lvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDUwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InJlc3RvcmVOZWVkc0FwcGxpY2F0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0MjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJyaWdodCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTgzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InJpbmd0b25lUHJlZmVyZW5jZVN0eWxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4OTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icmluZ3RvbmVUeXBlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyNTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icm93RGVsYXkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzIxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJyb3dFZGdlRmxhZ3MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzMyOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJyb3dIZWlnaHQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzA1OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzYXZlRW5hYmxlZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTgzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNjYWxlR3Jhdml0eSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjYyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNjYWxlSGVpZ2h0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyNjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2NhbGVUeXBlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwMzciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2NhbGVXaWR0aCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjYwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNjaGVtZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyNzkxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNjcmVlbk9yaWVudGF0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI3ODIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2Nyb2xsSG9yaXpvbnRhbGx5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwOTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2Nyb2xsVmlld1N0eWxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4ODAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2Nyb2xsWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTYyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNjcm9sbFkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjk2MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzY3JvbGxiYXJBbHdheXNEcmF3SG9yaXpvbnRhbFRyYWNrIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4NTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2Nyb2xsYmFyQWx3YXlzRHJhd1ZlcnRpY2FsVHJhY2siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjg1NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzY3JvbGxiYXJEZWZhdWx0RGVsYXlCZWZvcmVGYWRlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0MzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2Nyb2xsYmFyRmFkZUR1cmF0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0MzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2Nyb2xsYmFyU2l6ZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODUxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNjcm9sbGJhclN0eWxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4NzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2Nyb2xsYmFyVGh1bWJIb3Jpem9udGFsIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4NTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2Nyb2xsYmFyVGh1bWJWZXJ0aWNhbCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODUzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNjcm9sbGJhclRyYWNrSG9yaXpvbnRhbCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODU0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNjcm9sbGJhclRyYWNrVmVydGljYWwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjg1NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzY3JvbGxiYXJzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5NzQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2Nyb2xsaW5nQ2FjaGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzAwNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzZWFyY2hCdXR0b25UZXh0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyNjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzZWFyY2hNb2RlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyMjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2VhcmNoU2V0dGluZ3NEZXNjcmlwdGlvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDAyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNlYXJjaFN1Z2dlc3RBdXRob3JpdHkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzIyMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzZWFyY2hTdWdnZXN0SW50ZW50QWN0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyMjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2VhcmNoU3VnZ2VzdEludGVudERhdGEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzIyNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzZWFyY2hTdWdnZXN0UGF0aCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNlYXJjaFN1Z2dlc3RTZWxlY3Rpb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzIyNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzZWFyY2hTdWdnZXN0VGhyZXNob2xkIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzNzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2Vjb25kYXJ5UHJvZ3Jlc3MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzA2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzZWVrQmFyU3R5bGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjg3NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzZWxlY3RBbGxPbkZvY3VzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxMDIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2VsZWN0YWJsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjM4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNldHRpbmdzQWN0aXZpdHkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzMwMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzaGFkb3dDb2xvciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTA1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNoYWRvd0R4IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxMDYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2hhZG93RHkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzEwNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzaGFkb3dSYWRpdXMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzEwOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzaGFwZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTYyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNoYXJlSW50ZXJwb2xhdG9yIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxOTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2hhcmVkVXNlcklkIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI3NjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2hhcmVkVXNlckxhYmVsIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzNjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2hvdWxkRGlzYWJsZVZpZXciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzI0NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzaG93RGVmYXVsdCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjU4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNob3dTaWxlbnQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzI1OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzaHJpbmtDb2x1bW5zIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwODIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2luZ2xlTGluZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTAxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic21hbGxJY29uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0MjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic21hbGxTY3JlZW5zIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzOTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic21vb3RoU2Nyb2xsYmFyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzMTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic291bmRFZmZlY3RzRW5hYmxlZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjg1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNwYWNpbmciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzAyNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzcGlubmVyRHJvcERvd25JdGVtU3R5bGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjg4NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzcGlubmVySXRlbVN0eWxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4ODkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3Bpbm5lclN0eWxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4ODEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3JjIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwMzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RhY2tGcm9tQm90dG9tIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwMDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RhclN0eWxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4ODIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RhcnRDb2xvciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTY1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN0YXJ0T2Zmc2V0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxOTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RhcnRZZWFyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxMzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RhdGVOb3ROZWVkZWQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjc3NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdGF0ZV9hYm92ZV9hbmNob3IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjkyMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdGF0ZV9hY3RpdmUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjkxNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdGF0ZV9jaGVja2FibGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjkxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdGF0ZV9jaGVja2VkIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5MTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RhdGVfZW1wdHkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjkyMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdGF0ZV9lbmFibGVkIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5MTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RhdGVfZXhwYW5kZWQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjkyMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdGF0ZV9maXJzdCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN0YXRlX2ZvY3VzZWQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjkwOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdGF0ZV9sYXN0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5MTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RhdGVfbG9uZ19wcmVzc2FibGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzMyNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdGF0ZV9taWRkbGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjkxNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdGF0ZV9wcmVzc2VkIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5MTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RhdGVfc2VsZWN0ZWQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjkxMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdGF0ZV9zaW5nbGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjkxNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdGF0ZV93aW5kb3dfZm9jdXNlZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTA5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN0ZXBTaXplIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwNzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RyZWFtVHlwZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjczIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN0cmV0Y2hDb2x1bW5zIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwODEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RyZXRjaE1vZGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzAzMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdWdnZXN0QWN0aW9uTXNnIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyMjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3VnZ2VzdEFjdGlvbk1zZ0NvbHVtbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjI5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN1bW1hcnkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzI0MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdW1tYXJ5Q29sdW1uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0MjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3VtbWFyeU9mZiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN1bW1hcnlPbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjQ3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN1cHBvcnRzVXBsb2FkaW5nIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0MTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3luY2FibGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjc3NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0YWJTdHJpcEVuYWJsZWQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQ1MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0YWJTdHJpcExlZnQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQ1MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0YWJTdHJpcFJpZ2h0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0NTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGFiV2lkZ2V0U3R5bGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjg4MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0YWciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjk2MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0YXJnZXRBY3Rpdml0eSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjY2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRhcmdldENsYXNzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI3OTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGFyZ2V0UGFja2FnZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyNzg1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRhcmdldFNka1ZlcnNpb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzM3NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0YXNrQWZmaW5pdHkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjc3MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0YXNrQ2xvc2VFbnRlckFuaW1hdGlvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTQyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRhc2tDbG9zZUV4aXRBbmltYXRpb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjk0MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0YXNrT3BlbkVudGVyQW5pbWF0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5NDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGFza09wZW5FeGl0QW5pbWF0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5NDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGFza1RvQmFja0VudGVyQW5pbWF0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5NDYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGFza1RvQmFja0V4aXRBbmltYXRpb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjk0NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0YXNrVG9Gcm9udEVudGVyQW5pbWF0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5NDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGFza1RvRnJvbnRFeGl0QW5pbWF0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5NDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGVuc2lvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzcwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRlc3RPbmx5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzNzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGV4dCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDg3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRleHRBcHBlYXJhbmNlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4MDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGV4dEFwcGVhcmFuY2VCdXR0b24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzI3MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0ZXh0QXBwZWFyYW5jZUludmVyc2UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjgwNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0ZXh0QXBwZWFyYW5jZUxhcmdlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4MTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGV4dEFwcGVhcmFuY2VMYXJnZUludmVyc2UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjgxOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0ZXh0QXBwZWFyYW5jZU1lZGl1bSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODE3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRleHRBcHBlYXJhbmNlTWVkaXVtSW52ZXJzZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRleHRBcHBlYXJhbmNlU2VhcmNoUmVzdWx0U3VidGl0bGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQyNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0ZXh0QXBwZWFyYW5jZVNlYXJjaFJlc3VsdFRpdGxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0MjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGV4dEFwcGVhcmFuY2VTbWFsbCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODE4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRleHRBcHBlYXJhbmNlU21hbGxJbnZlcnNlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4MjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGV4dENoZWNrTWFyayIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRleHRDaGVja01hcmtJbnZlcnNlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4MjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGV4dENvbG9yIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5MDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGV4dENvbG9ySGlnaGxpZ2h0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5MDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGV4dENvbG9ySGludCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTA2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRleHRDb2xvckhpbnRJbnZlcnNlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4MTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGV4dENvbG9yTGluayIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTA3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRleHRDb2xvclByaW1hcnkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjgwNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0ZXh0Q29sb3JQcmltYXJ5RGlzYWJsZU9ubHkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjgwNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0ZXh0Q29sb3JQcmltYXJ5SW52ZXJzZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODA5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRleHRDb2xvclByaW1hcnlJbnZlcnNlRGlzYWJsZU9ubHkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQwMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0ZXh0Q29sb3JQcmltYXJ5SW52ZXJzZU5vRGlzYWJsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODEzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRleHRDb2xvclByaW1hcnlOb0Rpc2FibGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjgxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0ZXh0Q29sb3JTZWNvbmRhcnkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjgwOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0ZXh0Q29sb3JTZWNvbmRhcnlJbnZlcnNlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4MTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGV4dENvbG9yU2Vjb25kYXJ5SW52ZXJzZU5vRGlzYWJsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODE0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRleHRDb2xvclNlY29uZGFyeU5vRGlzYWJsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRleHRDb2xvclRlcnRpYXJ5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyODIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGV4dENvbG9yVGVydGlhcnlJbnZlcnNlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyODMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGV4dEZpbHRlckVuYWJsZWQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzAwNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0ZXh0T2ZmIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwNDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGV4dE9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwNDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGV4dFNjYWxlWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDg5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRleHRTaXplIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5MDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGV4dFN0eWxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5MDMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGV4dFZpZXdTdHlsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODg0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRoZW1lIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI3NTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGhpY2tuZXNzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzNjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGhpY2tuZXNzUmF0aW8iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzE2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0aHVtYiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDc0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRodW1iT2Zmc2V0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwNzUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGh1bWJuYWlsIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0MjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGlsZU1vZGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzI2NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0aW50IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMwNDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGl0bGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzIzMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0aXRsZUNvbmRlbnNlZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjM0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRvQWxwaGEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzIxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0b0RlZ3JlZXMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzE4OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0b1hEZWx0YSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjA3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRvWFNjYWxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyMDMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idG9ZRGVsdGEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzIwOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0b1lTY2FsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjA1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRvcCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTgyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRvcEJyaWdodCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTU1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRvcERhcmsiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjk1MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0b3BMZWZ0UmFkaXVzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxNzciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idG9wT2Zmc2V0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzNTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idG9wUmlnaHRSYWRpdXMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzE3OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0cmFuc2NyaXB0TW9kZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDA4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InR5cGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzE2OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0eXBlZmFjZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTAyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InVuY2VydGFpbkdlc3R1cmVDb2xvciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzgyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InVuc2VsZWN0ZWRBbHBoYSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMjc4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InVwZGF0ZVBlcmlvZE1pbGxpcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzQ0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InVzZUxldmVsIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxNjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idXNlclZpc2libGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQwOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ2YWx1ZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyNzg4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InZhcmlhYmxlUGFkZGluZyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMTU3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InZlcnNpb25Db2RlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyOTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idmVyc2lvbk5hbWUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzI5MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ2ZXJ0aWNhbENvcnJlY3Rpb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzMyMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ2ZXJ0aWNhbERpdmlkZXIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzA1NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ2ZXJ0aWNhbEdhcCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMzI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InZlcnRpY2FsU3BhY2luZyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDI5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InZpc2liaWxpdHkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjk3MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ2aXNpYmxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMxNTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idm1TYWZlTW9kZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InZvaWNlTGFuZ3VhZ2UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzM0OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ2b2ljZUxhbmd1YWdlTW9kZWwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzM0NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ2b2ljZU1heFJlc3VsdHMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzM1MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ2b2ljZVByb21wdFRleHQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzM0OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ2b2ljZVNlYXJjaE1vZGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzM0NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ3YWxscGFwZXJDbG9zZUVudGVyQW5pbWF0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0MTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0id2FsbHBhcGVyQ2xvc2VFeGl0QW5pbWF0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0MTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0id2FsbHBhcGVySW50cmFDbG9zZUVudGVyQW5pbWF0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0MTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0id2FsbHBhcGVySW50cmFDbG9zZUV4aXRBbmltYXRpb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQxOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ3YWxscGFwZXJJbnRyYU9wZW5FbnRlckFuaW1hdGlvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDE1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IndhbGxwYXBlckludHJhT3BlbkV4aXRBbmltYXRpb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ3YWxscGFwZXJPcGVuRW50ZXJBbmltYXRpb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ3YWxscGFwZXJPcGVuRXhpdEFuaW1hdGlvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IndlYlRleHRWaWV3U3R5bGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQ0OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ3ZWJWaWV3U3R5bGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjg4NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ3ZWlnaHRTdW0iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzA0OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ3aWRnZXRMYXlvdXQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzI0MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ3aWR0aCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzMDk3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IndpbmRvd0FuaW1hdGlvblN0eWxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5MjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0id2luZG93QmFja2dyb3VuZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODM2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IndpbmRvd0NvbnRlbnRPdmVybGF5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4NDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0id2luZG93RGlzYWJsZVByZXZpZXciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzI5OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ3aW5kb3dFbnRlckFuaW1hdGlvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTMyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IndpbmRvd0V4aXRBbmltYXRpb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjkzMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ3aW5kb3dGcmFtZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODM3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IndpbmRvd0Z1bGxzY3JlZW4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzI3NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ3aW5kb3dIaWRlQW5pbWF0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI5MzUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0id2luZG93SXNGbG9hdGluZyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODM5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IndpbmRvd0lzVHJhbnNsdWNlbnQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjg0MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ3aW5kb3dOb0Rpc3BsYXkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzI5NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ3aW5kb3dOb1RpdGxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4MzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0id2luZG93U2hvd0FuaW1hdGlvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTM0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IndpbmRvd1Nob3dXYWxscGFwZXIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQxMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ3aW5kb3dTb2Z0SW5wdXRNb2RlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMzMDciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0id2luZG93VGl0bGVCYWNrZ3JvdW5kU3R5bGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjg0NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ3aW5kb3dUaXRsZVNpemUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0Mjg0MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ3aW5kb3dUaXRsZVN0eWxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI4NDMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0id3JpdGVQZXJtaXNzaW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDI3NjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ieCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyOTI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MjkyNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ5ZXNOb1ByZWZlcmVuY2VTdHlsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQyODk2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InpBZGp1c3RtZW50IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDMyMDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlIuYm9vbCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlIuYm9vbCIKKyB0eXBlPSJhbmRyb2lkLlIuYm9vbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSLmNvbG9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUi5jb2xvciIKKyB0eXBlPSJhbmRyb2lkLlIuY29sb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxmaWVsZCBuYW1lPSJiYWNrZ3JvdW5kX2RhcmsiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzE3MDQ0NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJiYWNrZ3JvdW5kX2xpZ2h0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcxNzA0NDciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYmxhY2siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzE3MDQ0NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkYXJrZXJfZ3JheSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MTcwNDMyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByaW1hcnlfdGV4dF9kYXJrIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcxNzA0MzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJpbWFyeV90ZXh0X2Rhcmtfbm9kaXNhYmxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcxNzA0MzQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJpbWFyeV90ZXh0X2xpZ2h0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcxNzA0MzUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJpbWFyeV90ZXh0X2xpZ2h0X25vZGlzYWJsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MTcwNDM2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNlY29uZGFyeV90ZXh0X2RhcmsiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzE3MDQzNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzZWNvbmRhcnlfdGV4dF9kYXJrX25vZGlzYWJsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MTcwNDM4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNlY29uZGFyeV90ZXh0X2xpZ2h0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcxNzA0MzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2Vjb25kYXJ5X3RleHRfbGlnaHRfbm9kaXNhYmxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcxNzA0NDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGFiX2luZGljYXRvcl90ZXh0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcxNzA0NDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGVydGlhcnlfdGV4dF9kYXJrIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcxNzA0NDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGVydGlhcnlfdGV4dF9saWdodCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MTcwNDQ5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRyYW5zcGFyZW50IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcxNzA0NDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0id2hpdGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzE3MDQ0MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ3aWRnZXRfZWRpdHRleHRfZGFyayIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MTcwNDQyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSLmRpbWVuIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUi5kaW1lbiIKKyB0eXBlPSJhbmRyb2lkLlIuZGltZW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxmaWVsZCBuYW1lPSJhcHBfaWNvbl9zaXplIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcxMDQ4OTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGh1bWJuYWlsX2hlaWdodCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MTA0ODk3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRodW1ibmFpbF93aWR0aCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MTA0ODk4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSLmRyYXdhYmxlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUi5kcmF3YWJsZSIKKyB0eXBlPSJhbmRyb2lkLlIuZHJhd2FibGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxmaWVsZCBuYW1lPSJhbGVydF9kYXJrX2ZyYW1lIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1MDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYWxlcnRfbGlnaHRfZnJhbWUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTUwNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhcnJvd19kb3duX2Zsb2F0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1MDYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYXJyb3dfdXBfZmxvYXQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTUwNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJib3R0b21fYmFyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2NTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYnRuX2RlZmF1bHQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTUwOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJidG5fZGVmYXVsdF9zbWFsbCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTA5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJ0bl9kaWFsb2ciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTUyNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJidG5fZHJvcGRvd24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTUxMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJidG5fbWludXMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTUxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJidG5fcGx1cyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJ0bl9yYWRpbyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTEzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJ0bl9zdGFyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1MTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYnRuX3N0YXJfYmlnX29mZiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTE1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJ0bl9zdGFyX2JpZ19vbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJ1dHRvbl9vbm9mZl9pbmRpY2F0b3Jfb2ZmIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1MTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYnV0dG9uX29ub2ZmX2luZGljYXRvcl9vbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTE3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNoZWNrYm94X29mZl9iYWNrZ3JvdW5kIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1MTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY2hlY2tib3hfb25fYmFja2dyb3VuZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRhcmtfaGVhZGVyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2NjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGlhbG9nX2ZyYW1lIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1MjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGl2aWRlcl9ob3Jpem9udGFsX2JyaWdodCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRpdmlkZXJfaG9yaXpvbnRhbF9kYXJrIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1MjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGl2aWRlcl9ob3Jpem9udGFsX2RpbV9kYXJrIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1MjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGl2aWRlcl9ob3Jpem9udGFsX3RleHRmaWVsZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImVkaXRfdGV4dCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImVkaXRib3hfYmFja2dyb3VuZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImVkaXRib3hfYmFja2dyb3VuZF9ub3JtYWwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTUyOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJlZGl0Ym94X2Ryb3Bkb3duX2RhcmtfZnJhbWUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTUzMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJlZGl0Ym94X2Ryb3Bkb3duX2xpZ2h0X2ZyYW1lIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1MzEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZ2FsbGVyeV90aHVtYiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTMyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImljX2J0bl9zcGVha19ub3ciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTY2OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19kZWxldGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTUzMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19kaWFsb2dfYWxlcnQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTU0MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19kaWFsb2dfZGlhbGVyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1NDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfZGlhbG9nX2VtYWlsIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1NDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfZGlhbG9nX2luZm8iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTY1OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19kaWFsb2dfbWFwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1NDYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfaW5wdXRfYWRkIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1NDciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfaW5wdXRfZGVsZXRlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1NDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfaW5wdXRfZ2V0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1NDkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfbG9ja19pZGxlX2FsYXJtIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1NTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfbG9ja19pZGxlX2NoYXJnaW5nIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1MzQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfbG9ja19pZGxlX2xvY2siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTUzNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19sb2NrX2lkbGVfbG93X2JhdHRlcnkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTUzNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19sb2NrX2xvY2siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTU1MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19sb2NrX3Bvd2VyX29mZiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTUyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImljX2xvY2tfc2lsZW50X21vZGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTU1MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19sb2NrX3NpbGVudF9tb2RlX29mZiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTU0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImljX21lZGlhX2ZmIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1MzciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfbWVkaWFfbmV4dCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTM4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImljX21lZGlhX3BhdXNlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1MzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfbWVkaWFfcGxheSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTQwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImljX21lZGlhX3ByZXZpb3VzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1NDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfbWVkaWFfcmV3IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1NDIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfbWVudV9hZGQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTU1NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19tZW51X2FnZW5kYSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImljX21lbnVfYWx3YXlzX2xhbmRzY2FwZV9wb3J0cmFpdCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTU3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImljX21lbnVfY2FsbCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTU4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImljX21lbnVfY2FtZXJhIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1NTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfbWVudV9jbG9zZV9jbGVhcl9jYW5jZWwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTU2MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19tZW51X2NvbXBhc3MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTU2MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19tZW51X2Nyb3AiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTU2MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19tZW51X2RheSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTYzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImljX21lbnVfZGVsZXRlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1NjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfbWVudV9kaXJlY3Rpb25zIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1NjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfbWVudV9lZGl0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1NjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfbWVudV9nYWxsZXJ5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1NjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfbWVudV9oZWxwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1NjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfbWVudV9pbmZvX2RldGFpbHMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTU2OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19tZW51X21hbmFnZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTcwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImljX21lbnVfbWFwbW9kZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTcxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImljX21lbnVfbW9udGgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTU3MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19tZW51X21vcmUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTU3MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19tZW51X215X2NhbGVuZGFyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1NzQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfbWVudV9teWxvY2F0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1NzUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfbWVudV9teXBsYWNlcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTc2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImljX21lbnVfcHJlZmVyZW5jZXMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTU3NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19tZW51X3JlY2VudF9oaXN0b3J5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1NzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfbWVudV9yZXBvcnRfaW1hZ2UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTU3OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19tZW51X3JldmVydCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTgwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImljX21lbnVfcm90YXRlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1ODEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfbWVudV9zYXZlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1ODIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfbWVudV9zZWFyY2giCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTU4MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19tZW51X3NlbmQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTU4NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19tZW51X3NldF9hcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTg1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImljX21lbnVfc2hhcmUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTU4NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19tZW51X3NsaWRlc2hvdyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTg3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImljX21lbnVfc29ydF9hbHBoYWJldGljYWxseSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjYwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImljX21lbnVfc29ydF9ieV9zaXplIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2NjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfbWVudV90b2RheSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTg4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImljX21lbnVfdXBsb2FkIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1ODkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfbWVudV91cGxvYWRfeW91X3R1YmUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTU5MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19tZW51X3ZpZXciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTU5MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19tZW51X3dlZWsiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTU5MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19tZW51X3pvb20iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTU5MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19ub3RpZmljYXRpb25fY2xlYXJfYWxsIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1OTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfbm90aWZpY2F0aW9uX292ZXJsYXkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTU5NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY19wYXJ0aWFsX3NlY3VyZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTk2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImljX3BvcHVwX2Rpc2tfZnVsbCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTk3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImljX3BvcHVwX3JlbWluZGVyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE1OTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfcG9wdXBfc3luYyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNTk5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImljX3NlYXJjaF9jYXRlZ29yeV9kZWZhdWx0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2MDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNfc2VjdXJlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2MDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibGlzdF9zZWxlY3Rvcl9iYWNrZ3JvdW5kIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2MDIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibWVudV9mcmFtZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjAzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1lbnVfZnVsbF9mcmFtZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjA0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1lbnVpdGVtX2JhY2tncm91bmQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTYwNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwaWN0dXJlX2ZyYW1lIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2MDYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJlc2VuY2VfYXdheSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjA3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByZXNlbmNlX2J1c3kiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTYwOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwcmVzZW5jZV9pbnZpc2libGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTYwOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwcmVzZW5jZV9vZmZsaW5lIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2MTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJlc2VuY2Vfb25saW5lIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2MTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJvZ3Jlc3NfaG9yaXpvbnRhbCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByb2dyZXNzX2luZGV0ZXJtaW5hdGVfaG9yaXpvbnRhbCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjEzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InJhZGlvYnV0dG9uX29mZl9iYWNrZ3JvdW5kIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2MTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icmFkaW9idXR0b25fb25fYmFja2dyb3VuZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjE1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNjcmVlbl9iYWNrZ3JvdW5kX2RhcmsiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTY1NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzY3JlZW5fYmFja2dyb3VuZF9kYXJrX3RyYW5zcGFyZW50IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2NzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2NyZWVuX2JhY2tncm91bmRfbGlnaHQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTY1NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzY3JlZW5fYmFja2dyb3VuZF9saWdodF90cmFuc3BhcmVudCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjc0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNwaW5uZXJfYmFja2dyb3VuZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNwaW5uZXJfZHJvcGRvd25fYmFja2dyb3VuZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjE3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN0YXJfYmlnX29mZiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjE5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN0YXJfYmlnX29uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2MTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3Rhcl9vZmYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTYyMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdGFyX29uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2MjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RhdF9ub3RpZnlfY2FsbF9tdXRlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2MjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RhdF9ub3RpZnlfY2hhdCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN0YXRfbm90aWZ5X2Vycm9yIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2MjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RhdF9ub3RpZnlfbWlzc2VkX2NhbGwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTYzMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdGF0X25vdGlmeV9tb3JlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2MjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RhdF9ub3RpZnlfc2RjYXJkIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2MjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RhdF9ub3RpZnlfc2RjYXJkX3ByZXBhcmUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTY3NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdGF0X25vdGlmeV9zZGNhcmRfdXNiIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2MjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RhdF9ub3RpZnlfc3luYyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN0YXRfbm90aWZ5X3N5bmNfbm9hbmltIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2MjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RhdF9ub3RpZnlfdm9pY2VtYWlsIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2MzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RhdF9zeXNfZGF0YV9ibHVldG9vdGgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTYzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdGF0X3N5c19kb3dubG9hZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjMzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN0YXRfc3lzX2Rvd25sb2FkX2RvbmUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTYzNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdGF0X3N5c19oZWFkc2V0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2MzUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RhdF9zeXNfcGhvbmVfY2FsbCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjM2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN0YXRfc3lzX3Bob25lX2NhbGxfZm9yd2FyZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjM3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN0YXRfc3lzX3Bob25lX2NhbGxfb25faG9sZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjM4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN0YXRfc3lzX3NwZWFrZXJwaG9uZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjM5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN0YXRfc3lzX3VwbG9hZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjQwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN0YXRfc3lzX3VwbG9hZF9kb25lIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2NDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RhdF9zeXNfdnBfcGhvbmVfY2FsbCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjcxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN0YXRfc3lzX3ZwX3Bob25lX2NhbGxfb25faG9sZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjcyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN0YXRfc3lzX3dhcm5pbmciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTY0MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdGF0dXNfYmFyX2l0ZW1fYXBwX2JhY2tncm91bmQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTY0MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdGF0dXNfYmFyX2l0ZW1fYmFja2dyb3VuZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjQ0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN5bV9hY3Rpb25fY2FsbCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjQ1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN5bV9hY3Rpb25fY2hhdCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjQ2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN5bV9hY3Rpb25fZW1haWwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTY0NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzeW1fY2FsbF9pbmNvbWluZyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN5bV9jYWxsX21pc3NlZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjQ5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN5bV9jYWxsX291dGdvaW5nIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2NTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3ltX2NvbnRhY3RfY2FyZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjUyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN5bV9kZWZfYXBwX2ljb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTY1MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0aXRsZV9iYXIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTY1MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0aXRsZV9iYXJfdGFsbCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjcwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRvYXN0X2ZyYW1lIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2NTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iem9vbV9wbGF0ZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjU1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSLmlkIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUi5pZCIKKyB0eXBlPSJhbmRyb2lkLlIuaWQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxmaWVsZCBuYW1lPSJhZGRUb0RpY3Rpb25hcnkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjkwODMzMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJiYWNrZ3JvdW5kIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgyODgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYnV0dG9uMSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTA4MzEzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJ1dHRvbjIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjkwODMxNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJidXR0b24zIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgzMTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY2FuZGlkYXRlc0FyZWEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjkwODMxNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjaGVja2JveCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTA4Mjg5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNsb3NlQnV0dG9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgzMjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY29udGVudCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTA4MjkwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNvcHkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjkwODMyMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjb3B5VXJsIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgzMjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY3VzdG9tIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgzMzEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY3V0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgzMjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZWRpdCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTA4MjkxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImVtcHR5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgyOTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZXh0cmFjdEFyZWEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjkwODMxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJoaW50IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgyOTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTA4Mjk0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Imljb24xIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgyOTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNvbjIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjkwODI5NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpbnB1dCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTA4Mjk3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImlucHV0QXJlYSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTA4MzE4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImlucHV0RXh0cmFjdEVkaXRUZXh0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgzMjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia2V5Ym9hcmRWaWV3IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgzMjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibGlzdCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTA4Mjk4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1lc3NhZ2UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjkwODI5OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwYXN0ZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTA4MzIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByaW1hcnkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjkwODMwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwcm9ncmVzcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTA4MzAxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNlY29uZGFyeVByb2dyZXNzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgzMDMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2VsZWN0QWxsIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgzMTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2VsZWN0ZWRJY29uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgzMDIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RhcnRTZWxlY3RpbmdUZXh0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgzMjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RvcFNlbGVjdGluZ1RleHQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjkwODMyOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdW1tYXJ5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgzMDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3dpdGNoSW5wdXRNZXRob2QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjkwODMyNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0YWJjb250ZW50IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgzMDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGFiaG9zdCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTA4MzA2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRhYnMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjkwODMwNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0ZXh0MSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTA4MzA4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRleHQyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgzMDkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGl0bGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjkwODMxMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0b2dnbGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjkwODMxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ3aWRnZXRfZnJhbWUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjkwODMxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUi5pbnRlZ2VyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUi5pbnRlZ2VyIgorIHR5cGU9ImFuZHJvaWQuUi5pbnRlZ2VyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iY29uZmlnX2xvbmdBbmltVGltZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3Njk0NzIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNvbmZpZ19tZWRpdW1BbmltVGltZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3Njk0NzIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNvbmZpZ19zaG9ydEFuaW1UaW1lIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTc2OTQ3MjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlIubGF5b3V0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUi5sYXlvdXQiCisgdHlwZT0iYW5kcm9pZC5SLmxheW91dCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9ImFjdGl2aXR5X2xpc3RfaXRlbSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzY3MDQwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJyb3dzZXJfbGlua19jb250ZXh0X2hlYWRlciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzY3MDU0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImV4cGFuZGFibGVfbGlzdF9jb250ZW50IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczNjcwNDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJlZmVyZW5jZV9jYXRlZ29yeSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzY3MDQyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNlbGVjdF9kaWFsb2dfaXRlbSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzY3MDU3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNlbGVjdF9kaWFsb2dfbXVsdGljaG9pY2UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzM2NzA1OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzZWxlY3RfZGlhbG9nX3NpbmdsZWNob2ljZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzY3MDU4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNpbXBsZV9kcm9wZG93bl9pdGVtXzFsaW5lIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczNjcwNTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2ltcGxlX2V4cGFuZGFibGVfbGlzdF9pdGVtXzEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzM2NzA0NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzaW1wbGVfZXhwYW5kYWJsZV9saXN0X2l0ZW1fMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzY3MDQ3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNpbXBsZV9nYWxsZXJ5X2l0ZW0iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzM2NzA1MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzaW1wbGVfbGlzdF9pdGVtXzEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzM2NzA0MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzaW1wbGVfbGlzdF9pdGVtXzIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzM2NzA0NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzaW1wbGVfbGlzdF9pdGVtX2NoZWNrZWQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzM2NzA0NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzaW1wbGVfbGlzdF9pdGVtX211bHRpcGxlX2Nob2ljZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzY3MDU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNpbXBsZV9saXN0X2l0ZW1fc2luZ2xlX2Nob2ljZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzY3MDU1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNpbXBsZV9zcGlubmVyX2Ryb3Bkb3duX2l0ZW0iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzM2NzA0OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzaW1wbGVfc3Bpbm5lcl9pdGVtIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczNjcwNDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGVzdF9saXN0X2l0ZW0iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzM2NzA1MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0d29fbGluZV9saXN0X2l0ZW0iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzM2NzA1MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUi5wbHVyYWxzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUi5wbHVyYWxzIgorIHR5cGU9ImFuZHJvaWQuUi5wbHVyYWxzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlIucmF3IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUi5yYXciCisgdHlwZT0iYW5kcm9pZC5SLnJhdyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSLnN0cmluZyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlIuc3RyaW5nIgorIHR5cGU9ImFuZHJvaWQuUi5zdHJpbmciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxmaWVsZCBuYW1lPSJWaWRlb1ZpZXdfZXJyb3JfYnV0dG9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcwMzkzNzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVmlkZW9WaWV3X2Vycm9yX3RleHRfaW52YWxpZF9wcm9ncmVzc2l2ZV9wbGF5YmFjayIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MDM5MzgxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlZpZGVvVmlld19lcnJvcl90ZXh0X3Vua25vd24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzAzOTM3NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJWaWRlb1ZpZXdfZXJyb3JfdGl0bGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzAzOTM3OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjYW5jZWwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzAzOTM2MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjb3B5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcwMzkzNjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY29weVVybCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MDM5MzYyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImN1dCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MDM5MzYzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRlZmF1bHRNc2lzZG5BbHBoYVRhZyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MDM5MzY1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRlZmF1bHRWb2ljZU1haWxBbHBoYVRhZyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MDM5MzY0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRpYWxvZ19hbGVydF90aXRsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MDM5MzgwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImVtcHR5UGhvbmVOdW1iZXIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzAzOTM2NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJodHRwRXJyb3JCYWRVcmwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzAzOTM2NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJodHRwRXJyb3JVbnN1cHBvcnRlZFNjaGVtZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MDM5MzY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im5vIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcwMzkzNjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ib2siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzAzOTM3MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwYXN0ZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MDM5MzcxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNlYXJjaF9nbyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MDM5MzcyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNlbGVjdEFsbCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MDM5MzczIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InVua25vd25OYW1lIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcwMzkzNzQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idW50aXRsZWQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzAzOTM3NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ5ZXMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzAzOTM3OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUi5zdHlsZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlIuc3R5bGUiCisgdHlwZT0iYW5kcm9pZC5SLnN0eWxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iQW5pbWF0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM4MjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQW5pbWF0aW9uX0FjdGl2aXR5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM4MjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQW5pbWF0aW9uX0RpYWxvZyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFuaW1hdGlvbl9JbnB1dE1ldGhvZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczOTEwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFuaW1hdGlvbl9Ub2FzdCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFuaW1hdGlvbl9UcmFuc2x1Y2VudCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODI3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1lZGlhQnV0dG9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM4NzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTWVkaWFCdXR0b25fRmZ3ZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODgzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1lZGlhQnV0dG9uX05leHQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzg4MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNZWRpYUJ1dHRvbl9QYXVzZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODg1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1lZGlhQnV0dG9uX1BsYXkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzg4MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNZWRpYUJ1dHRvbl9QcmV2aW91cyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODgwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1lZGlhQnV0dG9uX1JldyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODg0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRleHRBcHBlYXJhbmNlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM4ODYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVGV4dEFwcGVhcmFuY2VfRGlhbG9nV2luZG93VGl0bGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzg4OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUZXh0QXBwZWFyYW5jZV9JbnZlcnNlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM4ODciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVGV4dEFwcGVhcmFuY2VfTGFyZ2UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzg5MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUZXh0QXBwZWFyYW5jZV9MYXJnZV9JbnZlcnNlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM4OTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVGV4dEFwcGVhcmFuY2VfTWVkaXVtIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM4OTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVGV4dEFwcGVhcmFuY2VfTWVkaXVtX0ludmVyc2UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzg5MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUZXh0QXBwZWFyYW5jZV9TbWFsbCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODk0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRleHRBcHBlYXJhbmNlX1NtYWxsX0ludmVyc2UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzg5NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUZXh0QXBwZWFyYW5jZV9UaGVtZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODg4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRleHRBcHBlYXJhbmNlX1RoZW1lX0RpYWxvZyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODk2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRleHRBcHBlYXJhbmNlX1dpZGdldCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODk3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRleHRBcHBlYXJhbmNlX1dpZGdldF9CdXR0b24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzg5OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUZXh0QXBwZWFyYW5jZV9XaWRnZXRfRHJvcERvd25IaW50IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM5MDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVGV4dEFwcGVhcmFuY2VfV2lkZ2V0X0Ryb3BEb3duSXRlbSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczOTA1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRleHRBcHBlYXJhbmNlX1dpZGdldF9FZGl0VGV4dCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczOTAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRleHRBcHBlYXJhbmNlX1dpZGdldF9JY29uTWVudV9JdGVtIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM4OTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVGV4dEFwcGVhcmFuY2VfV2lkZ2V0X1RhYldpZGdldCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczOTAxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRleHRBcHBlYXJhbmNlX1dpZGdldF9UZXh0VmlldyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczOTAyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRleHRBcHBlYXJhbmNlX1dpZGdldF9UZXh0Vmlld19Qb3B1cE1lbnUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3MzkwMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUZXh0QXBwZWFyYW5jZV9XaWRnZXRfVGV4dFZpZXdfU3Bpbm5lckl0ZW0iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3MzkwNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUZXh0QXBwZWFyYW5jZV9XaW5kb3dUaXRsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczOTA3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRoZW1lIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM4MjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVGhlbWVfQmxhY2siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3MzgzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUaGVtZV9CbGFja19Ob1RpdGxlQmFyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM4MzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVGhlbWVfQmxhY2tfTm9UaXRsZUJhcl9GdWxsc2NyZWVuIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM4MzQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVGhlbWVfRGlhbG9nIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM4MzUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVGhlbWVfSW5wdXRNZXRob2QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3MzkwOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUaGVtZV9MaWdodCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODM2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRoZW1lX0xpZ2h0X05vVGl0bGVCYXIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3MzgzNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUaGVtZV9MaWdodF9Ob1RpdGxlQmFyX0Z1bGxzY3JlZW4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3MzgzOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUaGVtZV9MaWdodF9QYW5lbCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczOTE0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRoZW1lX0xpZ2h0X1dhbGxwYXBlclNldHRpbmdzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM5MjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVGhlbWVfTm9EaXNwbGF5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM5MDkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVGhlbWVfTm9UaXRsZUJhciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODMwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRoZW1lX05vVGl0bGVCYXJfRnVsbHNjcmVlbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODMxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRoZW1lX1BhbmVsIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM5MTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVGhlbWVfVHJhbnNsdWNlbnQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3MzgzOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUaGVtZV9UcmFuc2x1Y2VudF9Ob1RpdGxlQmFyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM4NDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVGhlbWVfVHJhbnNsdWNlbnRfTm9UaXRsZUJhcl9GdWxsc2NyZWVuIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM4NDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVGhlbWVfV2FsbHBhcGVyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM5MTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVGhlbWVfV2FsbHBhcGVyU2V0dGluZ3MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3MzkyMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUaGVtZV9XYWxscGFwZXJfTm9UaXRsZUJhciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczOTE5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRoZW1lX1dhbGxwYXBlcl9Ob1RpdGxlQmFyX0Z1bGxzY3JlZW4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3MzkyMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXaWRnZXQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzg0MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXaWRnZXRfQWJzTGlzdFZpZXciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzg0MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXaWRnZXRfQXV0b0NvbXBsZXRlVGV4dFZpZXciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzg2MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXaWRnZXRfQnV0dG9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM4NDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV2lkZ2V0X0J1dHRvbl9JbnNldCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODQ1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldpZGdldF9CdXR0b25fU21hbGwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzg0NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXaWRnZXRfQnV0dG9uX1RvZ2dsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODQ3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldpZGdldF9Db21wb3VuZEJ1dHRvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldpZGdldF9Db21wb3VuZEJ1dHRvbl9DaGVja0JveCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODQ5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldpZGdldF9Db21wb3VuZEJ1dHRvbl9SYWRpb0J1dHRvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODUwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldpZGdldF9Db21wb3VuZEJ1dHRvbl9TdGFyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM4NTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV2lkZ2V0X0Ryb3BEb3duSXRlbSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODY3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldpZGdldF9Ecm9wRG93bkl0ZW1fU3Bpbm5lciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldpZGdldF9FZGl0VGV4dCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODU5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldpZGdldF9FeHBhbmRhYmxlTGlzdFZpZXciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzg2MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXaWRnZXRfR2FsbGVyeSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODc3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldpZGdldF9HcmlkVmlldyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODc0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldpZGdldF9JbWFnZUJ1dHRvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODYyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldpZGdldF9JbWFnZVdlbGwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzg2MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXaWRnZXRfS2V5Ym9hcmRWaWV3IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM5MTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV2lkZ2V0X0xpc3RWaWV3IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM4NzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV2lkZ2V0X0xpc3RWaWV3X0Ryb3BEb3duIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM4NzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV2lkZ2V0X0xpc3RWaWV3X01lbnUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzg3MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXaWRnZXRfTGlzdFZpZXdfV2hpdGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzg3MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXaWRnZXRfUG9wdXBXaW5kb3ciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzg3OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXaWRnZXRfUHJvZ3Jlc3NCYXIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzg1MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXaWRnZXRfUHJvZ3Jlc3NCYXJfSG9yaXpvbnRhbCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODU1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldpZGdldF9Qcm9ncmVzc0Jhcl9JbnZlcnNlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM5MTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV2lkZ2V0X1Byb2dyZXNzQmFyX0xhcmdlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM4NTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV2lkZ2V0X1Byb2dyZXNzQmFyX0xhcmdlX0ludmVyc2UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3MzkxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXaWRnZXRfUHJvZ3Jlc3NCYXJfU21hbGwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzg1NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXaWRnZXRfUHJvZ3Jlc3NCYXJfU21hbGxfSW52ZXJzZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczOTE3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldpZGdldF9SYXRpbmdCYXIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzg1NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXaWRnZXRfU2Nyb2xsVmlldyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODY5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldpZGdldF9TZWVrQmFyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM4NTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV2lkZ2V0X1NwaW5uZXIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzg2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXaWRnZXRfVGFiV2lkZ2V0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM4NzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV2lkZ2V0X1RleHRWaWV3IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM4NTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV2lkZ2V0X1RleHRWaWV3X1BvcHVwTWVudSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODY1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldpZGdldF9UZXh0Vmlld19TcGlubmVySXRlbSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczODY2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldpZGdldF9XZWJWaWV3IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM4NzUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlIueG1sIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUi54bWwiCisgdHlwZT0iYW5kcm9pZC5SLnhtbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQuYWNjZXNzaWJpbGl0eXNlcnZpY2UiCis+Cis8Y2xhc3MgbmFtZT0iQWNjZXNzaWJpbGl0eVNlcnZpY2UiCisgZXh0ZW5kcz0iYW5kcm9pZC5hcHAuU2VydmljZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWNjZXNzaWJpbGl0eVNlcnZpY2UiCisgdHlwZT0iYW5kcm9pZC5hY2Nlc3NpYmlsaXR5c2VydmljZS5BY2Nlc3NpYmlsaXR5U2VydmljZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJvbkFjY2Vzc2liaWxpdHlFdmVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5hY2Nlc3NpYmlsaXR5LkFjY2Vzc2liaWxpdHlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkJpbmQiCisgcmV0dXJuPSJhbmRyb2lkLm9zLklCaW5kZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uSW50ZXJydXB0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU2VydmljZUNvbm5lY3RlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2VydmljZUluZm8iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZm8iIHR5cGU9ImFuZHJvaWQuYWNjZXNzaWJpbGl0eXNlcnZpY2UuQWNjZXNzaWJpbGl0eVNlcnZpY2VJbmZvIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iU0VSVklDRV9JTlRFUkZBQ0UiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5hY2Nlc3NpYmlsaXR5c2VydmljZS5BY2Nlc3NpYmlsaXR5U2VydmljZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQWNjZXNzaWJpbGl0eVNlcnZpY2VJbmZvIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWNjZXNzaWJpbGl0eVNlcnZpY2VJbmZvIgorIHR5cGU9ImFuZHJvaWQuYWNjZXNzaWJpbGl0eXNlcnZpY2UuQWNjZXNzaWJpbGl0eVNlcnZpY2VJbmZvIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmNlbCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWd6IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFRkFVTFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZFRURCQUNLX0FVRElCTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZFRURCQUNLX0dFTkVSSUMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGRUVEQkFDS19IQVBUSUMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZFRURCQUNLX1NQT0tFTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkVFREJBQ0tfVklTVUFMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJldmVudFR5cGVzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImZlZWRiYWNrVHlwZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmbGFncyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJub3RpZmljYXRpb25UaW1lb3V0IgorIHR5cGU9ImxvbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwYWNrYWdlTmFtZXMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iYW5kcm9pZC5hY2NvdW50cyIKKz4KKzxjbGFzcyBuYW1lPSJBYnN0cmFjdEFjY291bnRBdXRoZW50aWNhdG9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFic3RyYWN0QWNjb3VudEF1dGhlbnRpY2F0b3IiCisgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BYnN0cmFjdEFjY291bnRBdXRoZW50aWNhdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRBY2NvdW50IgorIHJldHVybj0iYW5kcm9pZC5vcy5CdW5kbGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzcG9uc2UiIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudEF1dGhlbnRpY2F0b3JSZXNwb25zZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjb3VudFR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF1dGhUb2tlblR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVpcmVkRmVhdHVyZXMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3B0aW9ucyIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5ldHdvcmtFcnJvckV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5OZXR3b3JrRXJyb3JFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29uZmlybUNyZWRlbnRpYWxzIgorIHJldHVybj0iYW5kcm9pZC5vcy5CdW5kbGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzcG9uc2UiIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudEF1dGhlbnRpY2F0b3JSZXNwb25zZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjb3VudCIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcHRpb25zIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTmV0d29ya0Vycm9yRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmFjY291bnRzLk5ldHdvcmtFcnJvckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlZGl0UHJvcGVydGllcyIKKyByZXR1cm49ImFuZHJvaWQub3MuQnVuZGxlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3BvbnNlIiB0eXBlPSJhbmRyb2lkLmFjY291bnRzLkFjY291bnRBdXRoZW50aWNhdG9yUmVzcG9uc2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY291bnRUeXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFjY291bnRSZW1vdmFsQWxsb3dlZCIKKyByZXR1cm49ImFuZHJvaWQub3MuQnVuZGxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZSIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50QXV0aGVudGljYXRvclJlc3BvbnNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY2NvdW50IiB0eXBlPSJhbmRyb2lkLmFjY291bnRzLkFjY291bnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5ldHdvcmtFcnJvckV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5OZXR3b3JrRXJyb3JFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXV0aFRva2VuIgorIHJldHVybj0iYW5kcm9pZC5vcy5CdW5kbGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzcG9uc2UiIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudEF1dGhlbnRpY2F0b3JSZXNwb25zZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjb3VudCIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdXRoVG9rZW5UeXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcHRpb25zIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTmV0d29ya0Vycm9yRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmFjY291bnRzLk5ldHdvcmtFcnJvckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdXRoVG9rZW5MYWJlbCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0aFRva2VuVHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJQmluZGVyIgorIHJldHVybj0iYW5kcm9pZC5vcy5JQmluZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzRmVhdHVyZXMiCisgcmV0dXJuPSJhbmRyb2lkLm9zLkJ1bmRsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZSIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50QXV0aGVudGljYXRvclJlc3BvbnNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY2NvdW50IiB0eXBlPSJhbmRyb2lkLmFjY291bnRzLkFjY291bnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmVzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5ldHdvcmtFcnJvckV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5OZXR3b3JrRXJyb3JFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlQ3JlZGVudGlhbHMiCisgcmV0dXJuPSJhbmRyb2lkLm9zLkJ1bmRsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZSIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50QXV0aGVudGljYXRvclJlc3BvbnNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY2NvdW50IiB0eXBlPSJhbmRyb2lkLmFjY291bnRzLkFjY291bnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF1dGhUb2tlblR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9wdGlvbnMiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOZXR3b3JrRXJyb3JFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuTmV0d29ya0Vycm9yRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFjY291bnQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBY2NvdW50IgorIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFjY291bnQiCisgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im5hbWUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idHlwZSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQWNjb3VudEF1dGhlbnRpY2F0b3JBY3Rpdml0eSIKKyBleHRlbmRzPSJhbmRyb2lkLmFwcC5BY3Rpdml0eSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFjY291bnRBdXRoZW50aWNhdG9yQWN0aXZpdHkiCisgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50QXV0aGVudGljYXRvckFjdGl2aXR5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InNldEFjY291bnRBdXRoZW50aWNhdG9yUmVzdWx0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHQiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFjY291bnRBdXRoZW50aWNhdG9yUmVzcG9uc2UiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBY2NvdW50QXV0aGVudGljYXRvclJlc3BvbnNlIgorIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudEF1dGhlbnRpY2F0b3JSZXNwb25zZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmNlbCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uRXJyb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlcnJvckNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXJyb3JNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uUmVxdWVzdENvbnRpbnVlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25SZXN1bHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHQiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFjY291bnRNYW5hZ2VyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYWRkQWNjb3VudCIKKyByZXR1cm49ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudE1hbmFnZXJGdXR1cmUmbHQ7YW5kcm9pZC5vcy5CdW5kbGUmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY2NvdW50VHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0aFRva2VuVHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWlyZWRGZWF0dXJlcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhZGRBY2NvdW50T3B0aW9ucyIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGl2aXR5IiB0eXBlPSJhbmRyb2lkLmFwcC5BY3Rpdml0eSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsbGJhY2siIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudE1hbmFnZXJDYWxsYmFjayZsdDthbmRyb2lkLm9zLkJ1bmRsZSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhhbmRsZXIiIHR5cGU9ImFuZHJvaWQub3MuSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRBY2NvdW50RXhwbGljaXRseSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY291bnQiIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFzc3dvcmQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVzZXJkYXRhIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRPbkFjY291bnRzVXBkYXRlZExpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuT25BY2NvdW50c1VwZGF0ZUxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJhbmRyb2lkLm9zLkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVwZGF0ZUltbWVkaWF0ZWx5IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImJsb2NraW5nR2V0QXV0aFRva2VuIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjb3VudCIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdXRoVG9rZW5UeXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJub3RpZnlBdXRoRmFpbHVyZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQXV0aGVudGljYXRvckV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BdXRoZW50aWNhdG9yRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iT3BlcmF0aW9uQ2FuY2VsZWRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuT3BlcmF0aW9uQ2FuY2VsZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJQYXNzd29yZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY291bnQiIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb25maXJtQ3JlZGVudGlhbHMiCisgcmV0dXJuPSJhbmRyb2lkLmFjY291bnRzLkFjY291bnRNYW5hZ2VyRnV0dXJlJmx0O2FuZHJvaWQub3MuQnVuZGxlJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjb3VudCIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcHRpb25zIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aXZpdHkiIHR5cGU9ImFuZHJvaWQuYXBwLkFjdGl2aXR5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsYmFjayIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50TWFuYWdlckNhbGxiYWNrJmx0O2FuZHJvaWQub3MuQnVuZGxlJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlciIgdHlwZT0iYW5kcm9pZC5vcy5IYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVkaXRQcm9wZXJ0aWVzIgorIHJldHVybj0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50TWFuYWdlckZ1dHVyZSZsdDthbmRyb2lkLm9zLkJ1bmRsZSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY291bnRUeXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpdml0eSIgdHlwZT0iYW5kcm9pZC5hcHAuQWN0aXZpdHkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbGxiYWNrIiB0eXBlPSJhbmRyb2lkLmFjY291bnRzLkFjY291bnRNYW5hZ2VyQ2FsbGJhY2smbHQ7YW5kcm9pZC5vcy5CdW5kbGUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJhbmRyb2lkLm9zLkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50TWFuYWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBY2NvdW50cyIKKyByZXR1cm49ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFjY291bnRzQnlUeXBlIgorIHJldHVybj0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50W10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWNjb3VudHNCeVR5cGVBbmRGZWF0dXJlcyIKKyByZXR1cm49ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudE1hbmFnZXJGdXR1cmUmbHQ7YW5kcm9pZC5hY2NvdW50cy5BY2NvdW50W10mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmZWF0dXJlcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsYmFjayIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50TWFuYWdlckNhbGxiYWNrJmx0O2FuZHJvaWQuYWNjb3VudHMuQWNjb3VudFtdJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlciIgdHlwZT0iYW5kcm9pZC5vcy5IYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF1dGhUb2tlbiIKKyByZXR1cm49ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudE1hbmFnZXJGdXR1cmUmbHQ7YW5kcm9pZC5vcy5CdW5kbGUmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY2NvdW50IiB0eXBlPSJhbmRyb2lkLmFjY291bnRzLkFjY291bnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF1dGhUb2tlblR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9wdGlvbnMiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpdml0eSIgdHlwZT0iYW5kcm9pZC5hcHAuQWN0aXZpdHkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbGxiYWNrIiB0eXBlPSJhbmRyb2lkLmFjY291bnRzLkFjY291bnRNYW5hZ2VyQ2FsbGJhY2smbHQ7YW5kcm9pZC5vcy5CdW5kbGUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJhbmRyb2lkLm9zLkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXV0aFRva2VuIgorIHJldHVybj0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50TWFuYWdlckZ1dHVyZSZsdDthbmRyb2lkLm9zLkJ1bmRsZSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY291bnQiIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0aFRva2VuVHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibm90aWZ5QXV0aEZhaWx1cmUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbGxiYWNrIiB0eXBlPSJhbmRyb2lkLmFjY291bnRzLkFjY291bnRNYW5hZ2VyQ2FsbGJhY2smbHQ7YW5kcm9pZC5vcy5CdW5kbGUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJhbmRyb2lkLm9zLkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXV0aFRva2VuQnlGZWF0dXJlcyIKKyByZXR1cm49ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudE1hbmFnZXJGdXR1cmUmbHQ7YW5kcm9pZC5vcy5CdW5kbGUmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY2NvdW50VHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0aFRva2VuVHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmVhdHVyZXMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aXZpdHkiIHR5cGU9ImFuZHJvaWQuYXBwLkFjdGl2aXR5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhZGRBY2NvdW50T3B0aW9ucyIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImdldEF1dGhUb2tlbk9wdGlvbnMiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsYmFjayIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50TWFuYWdlckNhbGxiYWNrJmx0O2FuZHJvaWQub3MuQnVuZGxlJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlciIgdHlwZT0iYW5kcm9pZC5vcy5IYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF1dGhlbnRpY2F0b3JUeXBlcyIKKyByZXR1cm49ImFuZHJvaWQuYWNjb3VudHMuQXV0aGVudGljYXRvckRlc2NyaXB0aW9uW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFzc3dvcmQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY2NvdW50IiB0eXBlPSJhbmRyb2lkLmFjY291bnRzLkFjY291bnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VXNlckRhdGEiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY2NvdW50IiB0eXBlPSJhbmRyb2lkLmFjY291bnRzLkFjY291bnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNGZWF0dXJlcyIKKyByZXR1cm49ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudE1hbmFnZXJGdXR1cmUmbHQ7amF2YS5sYW5nLkJvb2xlYW4mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY2NvdW50IiB0eXBlPSJhbmRyb2lkLmFjY291bnRzLkFjY291bnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmVzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbGxiYWNrIiB0eXBlPSJhbmRyb2lkLmFjY291bnRzLkFjY291bnRNYW5hZ2VyQ2FsbGJhY2smbHQ7amF2YS5sYW5nLkJvb2xlYW4mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJhbmRyb2lkLm9zLkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW52YWxpZGF0ZUF1dGhUb2tlbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY291bnRUeXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdXRoVG9rZW4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGVla0F1dGhUb2tlbiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY291bnQiIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0aFRva2VuVHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVBY2NvdW50IgorIHJldHVybj0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50TWFuYWdlckZ1dHVyZSZsdDtqYXZhLmxhbmcuQm9vbGVhbiZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY291bnQiIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsbGJhY2siIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudE1hbmFnZXJDYWxsYmFjayZsdDtqYXZhLmxhbmcuQm9vbGVhbiZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhhbmRsZXIiIHR5cGU9ImFuZHJvaWQub3MuSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVPbkFjY291bnRzVXBkYXRlZExpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuT25BY2NvdW50c1VwZGF0ZUxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEF1dGhUb2tlbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY291bnQiIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0aFRva2VuVHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0aFRva2VuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBhc3N3b3JkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjb3VudCIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXNzd29yZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRVc2VyRGF0YSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY291bnQiIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVDcmVkZW50aWFscyIKKyByZXR1cm49ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudE1hbmFnZXJGdXR1cmUmbHQ7YW5kcm9pZC5vcy5CdW5kbGUmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY2NvdW50IiB0eXBlPSJhbmRyb2lkLmFjY291bnRzLkFjY291bnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF1dGhUb2tlblR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9wdGlvbnMiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpdml0eSIgdHlwZT0iYW5kcm9pZC5hcHAuQWN0aXZpdHkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbGxiYWNrIiB0eXBlPSJhbmRyb2lkLmFjY291bnRzLkFjY291bnRNYW5hZ2VyQ2FsbGJhY2smbHQ7YW5kcm9pZC5vcy5CdW5kbGUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJhbmRyb2lkLm9zLkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fQVVUSEVOVElDQVRPUl9JTlRFTlQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5hY2NvdW50cy5BY2NvdW50QXV0aGVudGljYXRvciZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBVVRIRU5USUNBVE9SX0FUVFJJQlVURVNfTkFNRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthY2NvdW50LWF1dGhlbnRpY2F0b3ImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVVUSEVOVElDQVRPUl9NRVRBX0RBVEFfTkFNRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmFjY291bnRzLkFjY291bnRBdXRoZW50aWNhdG9yJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVSUk9SX0NPREVfQkFEX0FSR1VNRU5UUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVJST1JfQ09ERV9CQURfUkVRVUVTVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVJST1JfQ09ERV9DQU5DRUxFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVJST1JfQ09ERV9JTlZBTElEX1JFU1BPTlNFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFUlJPUl9DT0RFX05FVFdPUktfRVJST1IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVSUk9SX0NPREVfUkVNT1RFX0VYQ0VQVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVJST1JfQ09ERV9VTlNVUFBPUlRFRF9PUEVSQVRJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWV9BQ0NPVU5UUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthY2NvdW50cyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlfQUNDT1VOVF9BVVRIRU5USUNBVE9SX1JFU1BPTlNFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FjY291bnRBdXRoZW50aWNhdG9yUmVzcG9uc2UmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZX0FDQ09VTlRfTUFOQUdFUl9SRVNQT05TRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthY2NvdW50TWFuYWdlclJlc3BvbnNlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWV9BQ0NPVU5UX05BTUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YXV0aEFjY291bnQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZX0FDQ09VTlRfVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthY2NvdW50VHlwZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlfQVVUSEVOVElDQVRPUl9UWVBFUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthdXRoZW50aWNhdG9yX3R5cGVzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWV9BVVRIVE9LRU4iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YXV0aHRva2VuJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWV9BVVRIX0ZBSUxFRF9NRVNTQUdFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2F1dGhGYWlsZWRNZXNzYWdlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWV9BVVRIX1RPS0VOX0xBQkVMIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2F1dGhUb2tlbkxhYmVsS2V5JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWV9CT09MRUFOX1JFU1VMVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtib29sZWFuUmVzdWx0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWV9FUlJPUl9DT0RFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2Vycm9yQ29kZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlfRVJST1JfTUVTU0FHRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtlcnJvck1lc3NhZ2UmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZX0lOVEVOVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtpbnRlbnQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZX1BBU1NXT1JEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3Bhc3N3b3JkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWV9VU0VSREFUQSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt1c2VyZGF0YSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMT0dJTl9BQ0NPVU5UU19DSEFOR0VEX0FDVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmFjY291bnRzLkxPR0lOX0FDQ09VTlRTX0NIQU5HRUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJBY2NvdW50TWFuYWdlckNhbGxiYWNrIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0icnVuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmdXR1cmUiIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudE1hbmFnZXJGdXR1cmUmbHQ7ViZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJBY2NvdW50TWFuYWdlckZ1dHVyZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNhbmNlbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF5SW50ZXJydXB0SWZSdW5uaW5nIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlc3VsdCIKKyByZXR1cm49IlYiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iQXV0aGVudGljYXRvckV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BdXRoZW50aWNhdG9yRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iT3BlcmF0aW9uQ2FuY2VsZWRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuT3BlcmF0aW9uQ2FuY2VsZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVzdWx0IgorIHJldHVybj0iViIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lb3V0IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQXV0aGVudGljYXRvckV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BdXRoZW50aWNhdG9yRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iT3BlcmF0aW9uQ2FuY2VsZWRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuT3BlcmF0aW9uQ2FuY2VsZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNDYW5jZWxsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNEb25lIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJBY2NvdW50c0V4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWNjb3VudHNFeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50c0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFjY291bnRzRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudHNFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBY2NvdW50c0V4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLmFjY291bnRzLkFjY291bnRzRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFjY291bnRzRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudHNFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkF1dGhlbnRpY2F0b3JEZXNjcmlwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkF1dGhlbnRpY2F0b3JEZXNjcmlwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLmFjY291bnRzLkF1dGhlbnRpY2F0b3JEZXNjcmlwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYWJlbElkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imljb25JZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzbWFsbEljb25JZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3S2V5IgorIHJldHVybj0iYW5kcm9pZC5hY2NvdW50cy5BdXRoZW50aWNhdG9yRGVzY3JpcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImFjY291bnRQcmVmZXJlbmNlc0lkIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNvbklkIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibGFiZWxJZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InBhY2thZ2VOYW1lIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNtYWxsSWNvbklkIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idHlwZSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQXV0aGVudGljYXRvckV4Y2VwdGlvbiIKKyBleHRlbmRzPSJhbmRyb2lkLmFjY291bnRzLkFjY291bnRzRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXV0aGVudGljYXRvckV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLmFjY291bnRzLkF1dGhlbnRpY2F0b3JFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBdXRoZW50aWNhdG9yRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQXV0aGVudGljYXRvckV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkF1dGhlbnRpY2F0b3JFeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BdXRoZW50aWNhdG9yRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkF1dGhlbnRpY2F0b3JFeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BdXRoZW50aWNhdG9yRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJOZXR3b3JrRXJyb3JFeGNlcHRpb24iCisgZXh0ZW5kcz0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50c0V4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik5ldHdvcmtFcnJvckV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLmFjY291bnRzLk5ldHdvcmtFcnJvckV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik5ldHdvcmtFcnJvckV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLmFjY291bnRzLk5ldHdvcmtFcnJvckV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik5ldHdvcmtFcnJvckV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLmFjY291bnRzLk5ldHdvcmtFcnJvckV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOZXR3b3JrRXJyb3JFeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5OZXR3b3JrRXJyb3JFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJPbkFjY291bnRzVXBkYXRlTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvbkFjY291bnRzVXBkYXRlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjb3VudHMiIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJPcGVyYXRpb25DYW5jZWxlZEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJhbmRyb2lkLmFjY291bnRzLkFjY291bnRzRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iT3BlcmF0aW9uQ2FuY2VsZWRFeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5PcGVyYXRpb25DYW5jZWxlZEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik9wZXJhdGlvbkNhbmNlbGVkRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuT3BlcmF0aW9uQ2FuY2VsZWRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJPcGVyYXRpb25DYW5jZWxlZEV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLmFjY291bnRzLk9wZXJhdGlvbkNhbmNlbGVkRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik9wZXJhdGlvbkNhbmNlbGVkRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuT3BlcmF0aW9uQ2FuY2VsZWRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iYW5kcm9pZC5hcHAiCis+Cis8Y2xhc3MgbmFtZT0iQWN0aXZpdHkiCisgZXh0ZW5kcz0iYW5kcm9pZC52aWV3LkNvbnRleHRUaGVtZVdyYXBwZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnRDYWxsYmFja3MiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC52aWV3LktleUV2ZW50LkNhbGxiYWNrIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudmlldy5MYXlvdXRJbmZsYXRlci5GYWN0b3J5Ij4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudmlldy5WaWV3Lk9uQ3JlYXRlQ29udGV4dE1lbnVMaXN0ZW5lciI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnZpZXcuV2luZG93LkNhbGxiYWNrIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBY3Rpdml0eSIKKyB0eXBlPSJhbmRyb2lkLmFwcC5BY3Rpdml0eSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRDb250ZW50VmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAuTGF5b3V0UGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb3NlQ29udGV4dE1lbnUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb3NlT3B0aW9uc01lbnUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVBlbmRpbmdSZXN1bHQiCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5QZW5kaW5nSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpc21pc3NEaWFsb2ciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzcGF0Y2hLZXlFdmVudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzcGF0Y2hQb3B1bGF0ZUFjY2Vzc2liaWxpdHlFdmVudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuYWNjZXNzaWJpbGl0eS5BY2Nlc3NpYmlsaXR5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzcGF0Y2hUb3VjaEV2ZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXYiIHR5cGU9ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXNwYXRjaFRyYWNrYmFsbEV2ZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXYiIHR5cGU9ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaW5kVmlld0J5SWQiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaW5pc2giCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmlzaEFjdGl2aXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdENvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaW5pc2hBY3Rpdml0eUZyb21DaGlsZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkIiB0eXBlPSJhbmRyb2lkLmFwcC5BY3Rpdml0eSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdENvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaW5pc2hGcm9tQ2hpbGQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZCIgdHlwZT0iYW5kcm9pZC5hcHAuQWN0aXZpdHkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXBwbGljYXRpb24iCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5BcHBsaWNhdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENhbGxpbmdBY3Rpdml0eSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENhbGxpbmdQYWNrYWdlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDaGFuZ2luZ0NvbmZpZ3VyYXRpb25zIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbXBvbmVudE5hbWUiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDdXJyZW50Rm9jdXMiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZUNvdW50IgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEludGVudCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGFzdE5vbkNvbmZpZ3VyYXRpb25JbnN0YW5jZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGF5b3V0SW5mbGF0ZXIiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuTGF5b3V0SW5mbGF0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9jYWxDbGFzc05hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1lbnVJbmZsYXRlciIKKyByZXR1cm49ImFuZHJvaWQudmlldy5NZW51SW5mbGF0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFyZW50IgorIHJldHVybj0iYW5kcm9pZC5hcHAuQWN0aXZpdHkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcmVmZXJlbmNlcyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5TaGFyZWRQcmVmZXJlbmNlcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlcXVlc3RlZE9yaWVudGF0aW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRhc2tJZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaXRsZSIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaXRsZUNvbG9yIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Vm9sdW1lQ29udHJvbFN0cmVhbSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdpbmRvdyIKKyByZXR1cm49ImFuZHJvaWQudmlldy5XaW5kb3ciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V2luZG93TWFuYWdlciIKKyByZXR1cm49ImFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc1dpbmRvd0ZvY3VzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0NoaWxkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRmluaXNoaW5nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1Rhc2tSb290IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYW5hZ2VkUXVlcnkiCisgcmV0dXJuPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvamVjdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGlvbkFyZ3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic29ydE9yZGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1vdmVUYXNrVG9CYWNrIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibm9uUm9vdCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkFjdGl2aXR5UmVzdWx0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdENvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQXR0YWNoZWRUb1dpbmRvdyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25CYWNrUHJlc3NlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DaGlsZFRpdGxlQ2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkQWN0aXZpdHkiIHR5cGU9ImFuZHJvaWQuYXBwLkFjdGl2aXR5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aXRsZSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNvbmZpZ3VyYXRpb25DaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3Q29uZmlnIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLkNvbmZpZ3VyYXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Db250ZW50Q2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Db250ZXh0SXRlbVNlbGVjdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXRlbSIgdHlwZT0iYW5kcm9pZC52aWV3Lk1lbnVJdGVtIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ29udGV4dE1lbnVDbG9zZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZW51IiB0eXBlPSJhbmRyb2lkLnZpZXcuTWVudSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNyZWF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNhdmVkSW5zdGFuY2VTdGF0ZSIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DcmVhdGVDb250ZXh0TWVudSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lbnUiIHR5cGU9ImFuZHJvaWQudmlldy5Db250ZXh0TWVudSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1lbnVJbmZvIiB0eXBlPSJhbmRyb2lkLnZpZXcuQ29udGV4dE1lbnUuQ29udGV4dE1lbnVJbmZvIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ3JlYXRlRGVzY3JpcHRpb24iCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ3JlYXRlRGlhbG9nIgorIHJldHVybj0iYW5kcm9pZC5hcHAuRGlhbG9nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DcmVhdGVEaWFsb2ciCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5EaWFsb2ciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZ3MiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ3JlYXRlT3B0aW9uc01lbnUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZW51IiB0eXBlPSJhbmRyb2lkLnZpZXcuTWVudSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNyZWF0ZVBhbmVsTWVudSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmVJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZW51IiB0eXBlPSJhbmRyb2lkLnZpZXcuTWVudSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNyZWF0ZVBhbmVsVmlldyIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZWF0dXJlSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNyZWF0ZVRodW1ibmFpbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dEJpdG1hcCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbnZhcyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DcmVhdGVWaWV3IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkRlc3Ryb3kiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uRGV0YWNoZWRGcm9tV2luZG93IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbktleURvd24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25LZXlMb25nUHJlc3MiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25LZXlNdWx0aXBsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVwZWF0Q291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbktleVVwIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LktleUV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uTG93TWVtb3J5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbk1lbnVJdGVtU2VsZWN0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZWF0dXJlSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXRlbSIgdHlwZT0iYW5kcm9pZC52aWV3Lk1lbnVJdGVtIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uTWVudU9wZW5lZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmVJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZW51IiB0eXBlPSJhbmRyb2lkLnZpZXcuTWVudSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbk5ld0ludGVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbk9wdGlvbnNJdGVtU2VsZWN0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpdGVtIiB0eXBlPSJhbmRyb2lkLnZpZXcuTWVudUl0ZW0iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25PcHRpb25zTWVudUNsb3NlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lbnUiIHR5cGU9ImFuZHJvaWQudmlldy5NZW51Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uUGFuZWxDbG9zZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZWF0dXJlSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVudSIgdHlwZT0iYW5kcm9pZC52aWV3Lk1lbnUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25QYXVzZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Qb3N0Q3JlYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2F2ZWRJbnN0YW5jZVN0YXRlIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblBvc3RSZXN1bWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uUHJlcGFyZURpYWxvZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlhbG9nIiB0eXBlPSJhbmRyb2lkLmFwcC5EaWFsb2ciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25QcmVwYXJlRGlhbG9nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlhbG9nIiB0eXBlPSJhbmRyb2lkLmFwcC5EaWFsb2ciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZ3MiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uUHJlcGFyZU9wdGlvbnNNZW51IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVudSIgdHlwZT0iYW5kcm9pZC52aWV3Lk1lbnUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25QcmVwYXJlUGFuZWwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZWF0dXJlSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1lbnUiIHR5cGU9ImFuZHJvaWQudmlldy5NZW51Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uUmVzdGFydCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25SZXN0b3JlSW5zdGFuY2VTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNhdmVkSW5zdGFuY2VTdGF0ZSIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25SZXN1bWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uUmV0YWluTm9uQ29uZmlndXJhdGlvbkluc3RhbmNlIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblNhdmVJbnN0YW5jZVN0YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0U3RhdGUiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU2VhcmNoUmVxdWVzdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblN0YXJ0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblN0b3AiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uVGl0bGVDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGl0bGUiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbG9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Ub3VjaEV2ZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblRyYWNrYmFsbEV2ZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblVzZXJJbnRlcmFjdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Vc2VyTGVhdmVIaW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbldpbmRvd0F0dHJpYnV0ZXNDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25XaW5kb3dGb2N1c0NoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoYXNGb2N1cyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuQ29udGV4dE1lbnUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuT3B0aW9uc01lbnUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im92ZXJyaWRlUGVuZGluZ1RyYW5zaXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbnRlckFuaW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhpdEFuaW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3RlckZvckNvbnRleHRNZW51IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlRGlhbG9nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcXVlc3RXaW5kb3dGZWF0dXJlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZWF0dXJlSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJydW5PblVpVGhyZWFkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb24iIHR5cGU9ImphdmEubGFuZy5SdW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb250ZW50VmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxheW91dFJlc0lEIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29udGVudFZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb250ZW50VmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAuTGF5b3V0UGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERlZmF1bHRLZXlNb2RlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RmVhdHVyZURyYXdhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZWF0dXJlSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHJhd2FibGUiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RmVhdHVyZURyYXdhYmxlQWxwaGEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmVJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbHBoYSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZlYXR1cmVEcmF3YWJsZVJlc291cmNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZWF0dXJlSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGZWF0dXJlRHJhd2FibGVVcmkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmVJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJbnRlbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdJbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGVyc2lzdGVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlzUGVyc2lzdGVudCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQcm9ncmVzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvZ3Jlc3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQcm9ncmVzc0JhckluZGV0ZXJtaW5hdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV0ZXJtaW5hdGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UHJvZ3Jlc3NCYXJJbmRldGVybWluYXRlVmlzaWJpbGl0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlzaWJsZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQcm9ncmVzc0JhclZpc2liaWxpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpc2libGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UmVxdWVzdGVkT3JpZW50YXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0ZWRPcmllbnRhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJlc3VsdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJlc3VsdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNlY29uZGFyeVByb2dyZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWNvbmRhcnlQcm9ncmVzcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRpdGxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGl0bGUiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGl0bGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aXRsZUlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGl0bGVDb2xvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHRDb2xvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZpc2libGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aXNpYmxlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZvbHVtZUNvbnRyb2xTdHJlYW0iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbVR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaG93RGlhbG9nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNob3dEaWFsb2ciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZ3MiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0QWN0aXZpdHlGb3JSZXN1bHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3RDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRBY3Rpdml0eUZyb21DaGlsZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkIiB0eXBlPSJhbmRyb2lkLmFwcC5BY3Rpdml0eSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0QWN0aXZpdHlJZk5lZWRlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdENvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydEludGVudFNlbmRlckZvclJlc3VsdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudFNlbmRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdENvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsbEluSW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFnc01hc2siIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3NWYWx1ZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXh0cmFGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlbnRTZW5kZXIuU2VuZEludGVudEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudFNlbmRlci5TZW5kSW50ZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0SW50ZW50U2VuZGVyRnJvbUNoaWxkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hpbGQiIHR5cGU9ImFuZHJvaWQuYXBwLkFjdGl2aXR5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnRTZW5kZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3RDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGxJbkludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3NNYXNrIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzVmFsdWVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4dHJhRmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZW50U2VuZGVyLlNlbmRJbnRlbnRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnRTZW5kZXIuU2VuZEludGVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydE1hbmFnaW5nQ3Vyc29yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnROZXh0TWF0Y2hpbmdBY3Rpdml0eSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydFNlYXJjaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluaXRpYWxRdWVyeSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0SW5pdGlhbFF1ZXJ5IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcHBTZWFyY2hEYXRhIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ2xvYmFsU2VhcmNoIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0b3BNYW5hZ2luZ0N1cnNvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRha2VLZXlFdmVudHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJnZXQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idHJpZ2dlclNlYXJjaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InF1ZXJ5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcHBTZWFyY2hEYXRhIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bnJlZ2lzdGVyRm9yQ29udGV4dE1lbnUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkRFRkFVTFRfS0VZU19ESUFMRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFRkFVTFRfS0VZU19ESVNBQkxFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUX0tFWVNfU0VBUkNIX0dMT0JBTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVGQVVMVF9LRVlTX1NFQVJDSF9MT0NBTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVGQVVMVF9LRVlTX1NIT1JUQ1VUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT0NVU0VEX1NUQVRFX1NFVCIKKyB0eXBlPSJpbnRbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRVNVTFRfQ0FOQ0VMRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFU1VMVF9GSVJTVF9VU0VSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRVNVTFRfT0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQWN0aXZpdHlHcm91cCIKKyBleHRlbmRzPSJhbmRyb2lkLmFwcC5BY3Rpdml0eSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFjdGl2aXR5R3JvdXAiCisgdHlwZT0iYW5kcm9pZC5hcHAuQWN0aXZpdHlHcm91cCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFjdGl2aXR5R3JvdXAiCisgdHlwZT0iYW5kcm9pZC5hcHAuQWN0aXZpdHlHcm91cCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpbmdsZUFjdGl2aXR5TW9kZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEN1cnJlbnRBY3Rpdml0eSIKKyByZXR1cm49ImFuZHJvaWQuYXBwLkFjdGl2aXR5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvY2FsQWN0aXZpdHlNYW5hZ2VyIgorIHJldHVybj0iYW5kcm9pZC5hcHAuTG9jYWxBY3Rpdml0eU1hbmFnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBY3Rpdml0eU1hbmFnZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXREZXZpY2VDb25maWd1cmF0aW9uSW5mbyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5wbS5Db25maWd1cmF0aW9uSW5mbyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNZW1vcnlDbGFzcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNZW1vcnlJbmZvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0SW5mbyIgdHlwZT0iYW5kcm9pZC5hcHAuQWN0aXZpdHlNYW5hZ2VyLk1lbW9yeUluZm8iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvY2Vzc01lbW9yeUluZm8iCisgcmV0dXJuPSJhbmRyb2lkLm9zLkRlYnVnLk1lbW9yeUluZm9bXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGlkcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvY2Vzc2VzSW5FcnJvclN0YXRlIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5hcHAuQWN0aXZpdHlNYW5hZ2VyLlByb2Nlc3NFcnJvclN0YXRlSW5mbyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVjZW50VGFza3MiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLmFwcC5BY3Rpdml0eU1hbmFnZXIuUmVjZW50VGFza0luZm8mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXhOdW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU2VjdXJpdHlFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5TZWN1cml0eUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSdW5uaW5nQXBwUHJvY2Vzc2VzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5hcHAuQWN0aXZpdHlNYW5hZ2VyLlJ1bm5pbmdBcHBQcm9jZXNzSW5mbyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UnVubmluZ1NlcnZpY2VDb250cm9sUGFuZWwiCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5QZW5kaW5nSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZXJ2aWNlIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU2VjdXJpdHlFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5TZWN1cml0eUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSdW5uaW5nU2VydmljZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLmFwcC5BY3Rpdml0eU1hbmFnZXIuUnVubmluZ1NlcnZpY2VJbmZvJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF4TnVtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNlY3VyaXR5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU2VjdXJpdHlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UnVubmluZ1Rhc2tzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5hcHAuQWN0aXZpdHlNYW5hZ2VyLlJ1bm5pbmdUYXNrSW5mbyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1heE51bSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTZWN1cml0eUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLlNlY3VyaXR5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzVXNlckFNb25rZXkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ia2lsbEJhY2tncm91bmRQcm9jZXNzZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYWNrYWdlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXN0YXJ0UGFja2FnZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2FnZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJSRUNFTlRfV0lUSF9FWENMVURFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFjdGl2aXR5TWFuYWdlci5NZW1vcnlJbmZvIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBY3Rpdml0eU1hbmFnZXIuTWVtb3J5SW5mbyIKKyB0eXBlPSJhbmRyb2lkLmFwcC5BY3Rpdml0eU1hbmFnZXIuTWVtb3J5SW5mbyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRGcm9tUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImF2YWlsTWVtIgorIHR5cGU9ImxvbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsb3dNZW1vcnkiCisgdHlwZT0iYm9vbGVhbiIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRocmVzaG9sZCIKKyB0eXBlPSJsb25nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFjdGl2aXR5TWFuYWdlci5Qcm9jZXNzRXJyb3JTdGF0ZUluZm8iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFjdGl2aXR5TWFuYWdlci5Qcm9jZXNzRXJyb3JTdGF0ZUluZm8iCisgdHlwZT0iYW5kcm9pZC5hcHAuQWN0aXZpdHlNYW5hZ2VyLlByb2Nlc3NFcnJvclN0YXRlSW5mbyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRGcm9tUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkFTSEVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5PVF9SRVNQT05ESU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOT19FUlJPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY29uZGl0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNyYXNoRGF0YSIKKyB0eXBlPSJieXRlW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsb25nTXNnIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwaWQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJvY2Vzc05hbWUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNob3J0TXNnIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdGFja1RyYWNlIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0YWciCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InVpZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQWN0aXZpdHlNYW5hZ2VyLlJlY2VudFRhc2tJbmZvIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBY3Rpdml0eU1hbmFnZXIuUmVjZW50VGFza0luZm8iCisgdHlwZT0iYW5kcm9pZC5hcHAuQWN0aXZpdHlNYW5hZ2VyLlJlY2VudFRhc2tJbmZvIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZEZyb21QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYmFzZUludGVudCIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ib3JpZ0FjdGl2aXR5IgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFjdGl2aXR5TWFuYWdlci5SdW5uaW5nQXBwUHJvY2Vzc0luZm8iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFjdGl2aXR5TWFuYWdlci5SdW5uaW5nQXBwUHJvY2Vzc0luZm8iCisgdHlwZT0iYW5kcm9pZC5hcHAuQWN0aXZpdHlNYW5hZ2VyLlJ1bm5pbmdBcHBQcm9jZXNzSW5mbyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFjdGl2aXR5TWFuYWdlci5SdW5uaW5nQXBwUHJvY2Vzc0luZm8iCisgdHlwZT0iYW5kcm9pZC5hcHAuQWN0aXZpdHlNYW5hZ2VyLlJ1bm5pbmdBcHBQcm9jZXNzSW5mbyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBQcm9jZXNzTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icFBpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwQXJyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRGcm9tUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklNUE9SVEFOQ0VfQkFDS0dST1VORCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTVBPUlRBTkNFX0VNUFRZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklNUE9SVEFOQ0VfRk9SRUdST1VORCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTVBPUlRBTkNFX1NFUlZJQ0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU1QT1JUQU5DRV9WSVNJQkxFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFQVNPTl9QUk9WSURFUl9JTl9VU0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFQVNPTl9TRVJWSUNFX0lOX1VTRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkVBU09OX1VOS05PV04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImltcG9ydGFuY2UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW1wb3J0YW5jZVJlYXNvbkNvZGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW1wb3J0YW5jZVJlYXNvbkNvbXBvbmVudCIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImltcG9ydGFuY2VSZWFzb25QaWQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibHJ1IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InBpZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwa2dMaXN0IgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByb2Nlc3NOYW1lIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ1aWQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFjdGl2aXR5TWFuYWdlci5SdW5uaW5nU2VydmljZUluZm8iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFjdGl2aXR5TWFuYWdlci5SdW5uaW5nU2VydmljZUluZm8iCisgdHlwZT0iYW5kcm9pZC5hcHAuQWN0aXZpdHlNYW5hZ2VyLlJ1bm5pbmdTZXJ2aWNlSW5mbyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRGcm9tUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfRk9SRUdST1VORCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19QRVJTSVNURU5UX1BST0NFU1MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfU1RBUlRFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19TWVNURU1fUFJPQ0VTUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYWN0aXZlU2luY2UiCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNsaWVudENvdW50IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNsaWVudExhYmVsIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNsaWVudFBhY2thZ2UiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNyYXNoQ291bnQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZmxhZ3MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZm9yZWdyb3VuZCIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibGFzdEFjdGl2aXR5VGltZSIKKyB0eXBlPSJsb25nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icGlkIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByb2Nlc3MiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InJlc3RhcnRpbmciCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNlcnZpY2UiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdGFydGVkIgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ1aWQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFjdGl2aXR5TWFuYWdlci5SdW5uaW5nVGFza0luZm8iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFjdGl2aXR5TWFuYWdlci5SdW5uaW5nVGFza0luZm8iCisgdHlwZT0iYW5kcm9pZC5hcHAuQWN0aXZpdHlNYW5hZ2VyLlJ1bm5pbmdUYXNrSW5mbyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRGcm9tUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJhc2VBY3Rpdml0eSIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRlc2NyaXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJudW1BY3Rpdml0aWVzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im51bVJ1bm5pbmciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGh1bWJuYWlsIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idG9wQWN0aXZpdHkiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQWxhcm1NYW5hZ2VyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY2FuY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3BlcmF0aW9uIiB0eXBlPSJhbmRyb2lkLmFwcC5QZW5kaW5nSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHJpZ2dlckF0VGltZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3BlcmF0aW9uIiB0eXBlPSJhbmRyb2lkLmFwcC5QZW5kaW5nSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEluZXhhY3RSZXBlYXRpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRyaWdnZXJBdFRpbWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVydmFsIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcGVyYXRpb24iIHR5cGU9ImFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UmVwZWF0aW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0cmlnZ2VyQXRUaW1lIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlcnZhbCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3BlcmF0aW9uIiB0eXBlPSJhbmRyb2lkLmFwcC5QZW5kaW5nSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRpbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtaWxsaXMiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGltZVpvbmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lWm9uZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkVMQVBTRURfUkVBTFRJTUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVMQVBTRURfUkVBTFRJTUVfV0FLRVVQIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTlRFUlZBTF9EQVkiCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODY0MDAwMDBMIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklOVEVSVkFMX0ZJRlRFRU5fTUlOVVRFUyIKKyB0eXBlPSJsb25nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI5MDAwMDBMIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklOVEVSVkFMX0hBTEZfREFZIgorIHR5cGU9ImxvbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQzMjAwMDAwTCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTlRFUlZBTF9IQUxGX0hPVVIiCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTgwMDAwMEwiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU5URVJWQUxfSE9VUiIKKyB0eXBlPSJsb25nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjAwMDAwTCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSVEMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJUQ19XQUtFVVAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBbGVydERpYWxvZyIKKyBleHRlbmRzPSJhbmRyb2lkLmFwcC5EaWFsb2ciCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFsZXJ0RGlhbG9nIgorIHR5cGU9ImFuZHJvaWQuYXBwLkFsZXJ0RGlhbG9nIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFsZXJ0RGlhbG9nIgorIHR5cGU9ImFuZHJvaWQuYXBwLkFsZXJ0RGlhbG9nIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFsZXJ0RGlhbG9nIgorIHR5cGU9ImFuZHJvaWQuYXBwLkFsZXJ0RGlhbG9nIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbmNlbGFibGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbmNlbExpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlLk9uQ2FuY2VsTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRCdXR0b24iCisgcmV0dXJuPSJhbmRyb2lkLndpZGdldC5CdXR0b24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndoaWNoQnV0dG9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGlzdFZpZXciCisgcmV0dXJuPSJhbmRyb2lkLndpZGdldC5MaXN0VmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCdXR0b24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aGljaEJ1dHRvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImFuZHJvaWQub3MuTWVzc2FnZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCdXR0b24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aGljaEJ1dHRvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkRpYWxvZ0ludGVyZmFjZS5PbkNsaWNrTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QnV0dG9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImFuZHJvaWQub3MuTWVzc2FnZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCdXR0b24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlLk9uQ2xpY2tMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCdXR0b24yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImFuZHJvaWQub3MuTWVzc2FnZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCdXR0b24yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkRpYWxvZ0ludGVyZmFjZS5PbkNsaWNrTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QnV0dG9uMyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJhbmRyb2lkLm9zLk1lc3NhZ2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QnV0dG9uMyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UuT25DbGlja0xpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEN1c3RvbVRpdGxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3VzdG9tVGl0bGVWaWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJY29uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJY29uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWNvbiIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJbnZlcnNlQmFja2dyb3VuZEZvcmNlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcmNlSW52ZXJzZUJhY2tncm91bmQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWVzc2FnZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmlld1NwYWNpbmdMZWZ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXdTcGFjaW5nVG9wIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXdTcGFjaW5nUmlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmlld1NwYWNpbmdCb3R0b20iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBbGVydERpYWxvZy5CdWlsZGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFsZXJ0RGlhbG9nLkJ1aWxkZXIiCisgdHlwZT0iYW5kcm9pZC5hcHAuQWxlcnREaWFsb2cuQnVpbGRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY3JlYXRlIgorIHJldHVybj0iYW5kcm9pZC5hcHAuQWxlcnREaWFsb2ciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QWRhcHRlciIKKyByZXR1cm49ImFuZHJvaWQuYXBwLkFsZXJ0RGlhbG9nLkJ1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFkYXB0ZXIiIHR5cGU9ImFuZHJvaWQud2lkZ2V0Lkxpc3RBZGFwdGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkRpYWxvZ0ludGVyZmFjZS5PbkNsaWNrTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2FuY2VsYWJsZSIKKyByZXR1cm49ImFuZHJvaWQuYXBwLkFsZXJ0RGlhbG9nLkJ1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbmNlbGFibGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q3Vyc29yIgorIHJldHVybj0iYW5kcm9pZC5hcHAuQWxlcnREaWFsb2cuQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UuT25DbGlja0xpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYWJlbENvbHVtbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDdXN0b21UaXRsZSIKKyByZXR1cm49ImFuZHJvaWQuYXBwLkFsZXJ0RGlhbG9nLkJ1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN1c3RvbVRpdGxlVmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SWNvbiIKKyByZXR1cm49ImFuZHJvaWQuYXBwLkFsZXJ0RGlhbG9nLkJ1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imljb25JZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEljb24iCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5BbGVydERpYWxvZy5CdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpY29uIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEludmVyc2VCYWNrZ3JvdW5kRm9yY2VkIgorIHJldHVybj0iYW5kcm9pZC5hcHAuQWxlcnREaWFsb2cuQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXNlSW52ZXJzZUJhY2tncm91bmQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SXRlbXMiCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5BbGVydERpYWxvZy5CdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpdGVtc0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlLk9uQ2xpY2tMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJdGVtcyIKKyByZXR1cm49ImFuZHJvaWQuYXBwLkFsZXJ0RGlhbG9nLkJ1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Iml0ZW1zIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlLk9uQ2xpY2tMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNZXNzYWdlIgorIHJldHVybj0iYW5kcm9pZC5hcHAuQWxlcnREaWFsb2cuQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZUlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWVzc2FnZSIKKyByZXR1cm49ImFuZHJvaWQuYXBwLkFsZXJ0RGlhbG9nLkJ1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TXVsdGlDaG9pY2VJdGVtcyIKKyByZXR1cm49ImFuZHJvaWQuYXBwLkFsZXJ0RGlhbG9nLkJ1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Iml0ZW1zSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hlY2tlZEl0ZW1zIiB0eXBlPSJib29sZWFuW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlLk9uTXVsdGlDaG9pY2VDbGlja0xpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE11bHRpQ2hvaWNlSXRlbXMiCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5BbGVydERpYWxvZy5CdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpdGVtcyIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGVja2VkSXRlbXMiIHR5cGU9ImJvb2xlYW5bXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UuT25NdWx0aUNob2ljZUNsaWNrTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TXVsdGlDaG9pY2VJdGVtcyIKKyByZXR1cm49ImFuZHJvaWQuYXBwLkFsZXJ0RGlhbG9nLkJ1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlzQ2hlY2tlZENvbHVtbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGFiZWxDb2x1bW4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlLk9uTXVsdGlDaG9pY2VDbGlja0xpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE5lZ2F0aXZlQnV0dG9uIgorIHJldHVybj0iYW5kcm9pZC5hcHAuQWxlcnREaWFsb2cuQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dElkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlLk9uQ2xpY2tMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXROZWdhdGl2ZUJ1dHRvbiIKKyByZXR1cm49ImFuZHJvaWQuYXBwLkFsZXJ0RGlhbG9nLkJ1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlLk9uQ2xpY2tMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXROZXV0cmFsQnV0dG9uIgorIHJldHVybj0iYW5kcm9pZC5hcHAuQWxlcnREaWFsb2cuQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dElkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlLk9uQ2xpY2tMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXROZXV0cmFsQnV0dG9uIgorIHJldHVybj0iYW5kcm9pZC5hcHAuQWxlcnREaWFsb2cuQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UuT25DbGlja0xpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9uQ2FuY2VsTGlzdGVuZXIiCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5BbGVydERpYWxvZy5CdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvbkNhbmNlbExpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlLk9uQ2FuY2VsTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25JdGVtU2VsZWN0ZWRMaXN0ZW5lciIKKyByZXR1cm49ImFuZHJvaWQuYXBwLkFsZXJ0RGlhbG9nLkJ1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLndpZGdldC5BZGFwdGVyVmlldy5Pbkl0ZW1TZWxlY3RlZExpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9uS2V5TGlzdGVuZXIiCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5BbGVydERpYWxvZy5CdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvbktleUxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlLk9uS2V5TGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UG9zaXRpdmVCdXR0b24iCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5BbGVydERpYWxvZy5CdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0SWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UuT25DbGlja0xpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBvc2l0aXZlQnV0dG9uIgorIHJldHVybj0iYW5kcm9pZC5hcHAuQWxlcnREaWFsb2cuQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UuT25DbGlja0xpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNpbmdsZUNob2ljZUl0ZW1zIgorIHJldHVybj0iYW5kcm9pZC5hcHAuQWxlcnREaWFsb2cuQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXRlbXNJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGVja2VkSXRlbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkRpYWxvZ0ludGVyZmFjZS5PbkNsaWNrTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2luZ2xlQ2hvaWNlSXRlbXMiCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5BbGVydERpYWxvZy5CdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGVja2VkSXRlbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYWJlbENvbHVtbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UuT25DbGlja0xpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNpbmdsZUNob2ljZUl0ZW1zIgorIHJldHVybj0iYW5kcm9pZC5hcHAuQWxlcnREaWFsb2cuQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXRlbXMiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2VbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hlY2tlZEl0ZW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UuT25DbGlja0xpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNpbmdsZUNob2ljZUl0ZW1zIgorIHJldHVybj0iYW5kcm9pZC5hcHAuQWxlcnREaWFsb2cuQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWRhcHRlciIgdHlwZT0iYW5kcm9pZC53aWRnZXQuTGlzdEFkYXB0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoZWNrZWRJdGVtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlLk9uQ2xpY2tMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUaXRsZSIKKyByZXR1cm49ImFuZHJvaWQuYXBwLkFsZXJ0RGlhbG9nLkJ1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpdGxlSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUaXRsZSIKKyByZXR1cm49ImFuZHJvaWQuYXBwLkFsZXJ0RGlhbG9nLkJ1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpdGxlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZpZXciCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5BbGVydERpYWxvZy5CdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaG93IgorIHJldHVybj0iYW5kcm9pZC5hcHAuQWxlcnREaWFsb2ciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQWxpYXNBY3Rpdml0eSIKKyBleHRlbmRzPSJhbmRyb2lkLmFwcC5BY3Rpdml0eSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFsaWFzQWN0aXZpdHkiCisgdHlwZT0iYW5kcm9pZC5hcHAuQWxpYXNBY3Rpdml0eSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBcHBsaWNhdGlvbiIKKyBleHRlbmRzPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dFdyYXBwZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnRDYWxsYmFja3MiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFwcGxpY2F0aW9uIgorIHR5cGU9ImFuZHJvaWQuYXBwLkFwcGxpY2F0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9Im9uQ29uZmlndXJhdGlvbkNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdDb25maWciIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuQ29uZmlndXJhdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNyZWF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Mb3dNZW1vcnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uVGVybWluYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEYXRlUGlja2VyRGlhbG9nIgorIGV4dGVuZHM9ImFuZHJvaWQuYXBwLkFsZXJ0RGlhbG9nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLndpZGdldC5EYXRlUGlja2VyLk9uRGF0ZUNoYW5nZWRMaXN0ZW5lciI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlLk9uQ2xpY2tMaXN0ZW5lciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGF0ZVBpY2tlckRpYWxvZyIKKyB0eXBlPSJhbmRyb2lkLmFwcC5EYXRlUGlja2VyRGlhbG9nIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbGxCYWNrIiB0eXBlPSJhbmRyb2lkLmFwcC5EYXRlUGlja2VyRGlhbG9nLk9uRGF0ZVNldExpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5ZWFyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vbnRoT2ZZZWFyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRheU9mTW9udGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGF0ZVBpY2tlckRpYWxvZyIKKyB0eXBlPSJhbmRyb2lkLmFwcC5EYXRlUGlja2VyRGlhbG9nIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbGxCYWNrIiB0eXBlPSJhbmRyb2lkLmFwcC5EYXRlUGlja2VyRGlhbG9nLk9uRGF0ZVNldExpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5ZWFyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vbnRoT2ZZZWFyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRheU9mTW9udGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9Im9uQ2xpY2siCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaWFsb2ciIHR5cGU9ImFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoaWNoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25EYXRlQ2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkRhdGVQaWNrZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InllYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9udGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlRGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InllYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9udGhPZlllYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF5T2ZNb250aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJEYXRlUGlja2VyRGlhbG9nLk9uRGF0ZVNldExpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvbkRhdGVTZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkRhdGVQaWNrZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InllYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9udGhPZlllYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF5T2ZNb250aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJEaWFsb2ciCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5jb250ZW50LkRpYWxvZ0ludGVyZmFjZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQuQ2FsbGJhY2siPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC52aWV3LlZpZXcuT25DcmVhdGVDb250ZXh0TWVudUxpc3RlbmVyIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudmlldy5XaW5kb3cuQ2FsbGJhY2siPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRpYWxvZyIKKyB0eXBlPSJhbmRyb2lkLmFwcC5EaWFsb2ciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGlhbG9nIgorIHR5cGU9ImFuZHJvaWQuYXBwLkRpYWxvZyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEaWFsb2ciCisgdHlwZT0iYW5kcm9pZC5hcHAuRGlhbG9nIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbmNlbGFibGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbmNlbExpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlLk9uQ2FuY2VsTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRDb250ZW50VmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAuTGF5b3V0UGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNhbmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvc2VPcHRpb25zTWVudSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzbWlzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzcGF0Y2hLZXlFdmVudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzcGF0Y2hQb3B1bGF0ZUFjY2Vzc2liaWxpdHlFdmVudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuYWNjZXNzaWJpbGl0eS5BY2Nlc3NpYmlsaXR5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzcGF0Y2hUb3VjaEV2ZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXYiIHR5cGU9ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXNwYXRjaFRyYWNrYmFsbEV2ZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXYiIHR5cGU9ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaW5kVmlld0J5SWQiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZXh0IgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDdXJyZW50Rm9jdXMiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMYXlvdXRJbmZsYXRlciIKKyByZXR1cm49ImFuZHJvaWQudmlldy5MYXlvdXRJbmZsYXRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPd25lckFjdGl2aXR5IgorIHJldHVybj0iYW5kcm9pZC5hcHAuQWN0aXZpdHkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWb2x1bWVDb250cm9sU3RyZWFtIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V2luZG93IgorIHJldHVybj0iYW5kcm9pZC52aWV3LldpbmRvdyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoaWRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1Nob3dpbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQXR0YWNoZWRUb1dpbmRvdyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25CYWNrUHJlc3NlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Db250ZW50Q2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Db250ZXh0SXRlbVNlbGVjdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXRlbSIgdHlwZT0iYW5kcm9pZC52aWV3Lk1lbnVJdGVtIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ29udGV4dE1lbnVDbG9zZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZW51IiB0eXBlPSJhbmRyb2lkLnZpZXcuTWVudSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNyZWF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNhdmVkSW5zdGFuY2VTdGF0ZSIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DcmVhdGVDb250ZXh0TWVudSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lbnUiIHR5cGU9ImFuZHJvaWQudmlldy5Db250ZXh0TWVudSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1lbnVJbmZvIiB0eXBlPSJhbmRyb2lkLnZpZXcuQ29udGV4dE1lbnUuQ29udGV4dE1lbnVJbmZvIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ3JlYXRlT3B0aW9uc01lbnUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZW51IiB0eXBlPSJhbmRyb2lkLnZpZXcuTWVudSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNyZWF0ZVBhbmVsTWVudSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmVJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZW51IiB0eXBlPSJhbmRyb2lkLnZpZXcuTWVudSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNyZWF0ZVBhbmVsVmlldyIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZWF0dXJlSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkRldGFjaGVkRnJvbVdpbmRvdyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25LZXlEb3duIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LktleUV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uS2V5TG9uZ1ByZXNzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LktleUV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uS2V5TXVsdGlwbGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcGVhdENvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25LZXlVcCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbk1lbnVJdGVtU2VsZWN0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZWF0dXJlSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXRlbSIgdHlwZT0iYW5kcm9pZC52aWV3Lk1lbnVJdGVtIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uTWVudU9wZW5lZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmVJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZW51IiB0eXBlPSJhbmRyb2lkLnZpZXcuTWVudSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbk9wdGlvbnNJdGVtU2VsZWN0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpdGVtIiB0eXBlPSJhbmRyb2lkLnZpZXcuTWVudUl0ZW0iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25PcHRpb25zTWVudUNsb3NlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lbnUiIHR5cGU9ImFuZHJvaWQudmlldy5NZW51Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uUGFuZWxDbG9zZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZWF0dXJlSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVudSIgdHlwZT0iYW5kcm9pZC52aWV3Lk1lbnUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25QcmVwYXJlT3B0aW9uc01lbnUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZW51IiB0eXBlPSJhbmRyb2lkLnZpZXcuTWVudSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblByZXBhcmVQYW5lbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmVJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVudSIgdHlwZT0iYW5kcm9pZC52aWV3Lk1lbnUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25SZXN0b3JlSW5zdGFuY2VTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNhdmVkSW5zdGFuY2VTdGF0ZSIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TYXZlSW5zdGFuY2VTdGF0ZSIKKyByZXR1cm49ImFuZHJvaWQub3MuQnVuZGxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU2VhcmNoUmVxdWVzdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblN0YXJ0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblN0b3AiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uVG91Y2hFdmVudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25UcmFja2JhbGxFdmVudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25XaW5kb3dBdHRyaWJ1dGVzQ2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uV2luZG93Rm9jdXNDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFzRm9jdXMiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3BlbkNvbnRleHRNZW51IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3Blbk9wdGlvbnNNZW51IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3RlckZvckNvbnRleHRNZW51IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVxdWVzdFdpbmRvd0ZlYXR1cmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmVJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENhbmNlbE1lc3NhZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImFuZHJvaWQub3MuTWVzc2FnZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDYW5jZWxhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDYW5jZWxlZE9uVG91Y2hPdXRzaWRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FuY2VsIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbnRlbnRWaWV3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGF5b3V0UmVzSUQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb250ZW50VmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbnRlbnRWaWV3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cC5MYXlvdXRQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGlzbWlzc01lc3NhZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImFuZHJvaWQub3MuTWVzc2FnZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGZWF0dXJlRHJhd2FibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmVJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkcmF3YWJsZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGZWF0dXJlRHJhd2FibGVBbHBoYSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmVhdHVyZUlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFscGhhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RmVhdHVyZURyYXdhYmxlUmVzb3VyY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmVJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZlYXR1cmVEcmF3YWJsZVVyaSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmVhdHVyZUlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9uQ2FuY2VsTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkRpYWxvZ0ludGVyZmFjZS5PbkNhbmNlbExpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9uRGlzbWlzc0xpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UuT25EaXNtaXNzTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25LZXlMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9uS2V5TGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UuT25LZXlMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPblNob3dMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlLk9uU2hvd0xpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE93bmVyQWN0aXZpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGl2aXR5IiB0eXBlPSJhbmRyb2lkLmFwcC5BY3Rpdml0eSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUaXRsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpdGxlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRpdGxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGl0bGVJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZvbHVtZUNvbnRyb2xTdHJlYW0iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbVR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaG93IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0YWtlS2V5RXZlbnRzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ2V0IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVucmVnaXN0ZXJGb3JDb250ZXh0TWVudSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkV4cGFuZGFibGVMaXN0QWN0aXZpdHkiCisgZXh0ZW5kcz0iYW5kcm9pZC5hcHAuQWN0aXZpdHkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQud2lkZ2V0LkV4cGFuZGFibGVMaXN0Vmlldy5PbkNoaWxkQ2xpY2tMaXN0ZW5lciI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLndpZGdldC5FeHBhbmRhYmxlTGlzdFZpZXcuT25Hcm91cENvbGxhcHNlTGlzdGVuZXIiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC53aWRnZXQuRXhwYW5kYWJsZUxpc3RWaWV3Lk9uR3JvdXBFeHBhbmRMaXN0ZW5lciI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnZpZXcuVmlldy5PbkNyZWF0ZUNvbnRleHRNZW51TGlzdGVuZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkV4cGFuZGFibGVMaXN0QWN0aXZpdHkiCisgdHlwZT0iYW5kcm9pZC5hcHAuRXhwYW5kYWJsZUxpc3RBY3Rpdml0eSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRFeHBhbmRhYmxlTGlzdEFkYXB0ZXIiCisgcmV0dXJuPSJhbmRyb2lkLndpZGdldC5FeHBhbmRhYmxlTGlzdEFkYXB0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RXhwYW5kYWJsZUxpc3RWaWV3IgorIHJldHVybj0iYW5kcm9pZC53aWRnZXQuRXhwYW5kYWJsZUxpc3RWaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlbGVjdGVkSWQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlbGVjdGVkUG9zaXRpb24iCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ2hpbGRDbGljayIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iYW5kcm9pZC53aWRnZXQuRXhwYW5kYWJsZUxpc3RWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZFBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uR3JvdXBDb2xsYXBzZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkdyb3VwRXhwYW5kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldExpc3RBZGFwdGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWRhcHRlciIgdHlwZT0iYW5kcm9pZC53aWRnZXQuRXhwYW5kYWJsZUxpc3RBZGFwdGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNlbGVjdGVkQ2hpbGQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cFBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2hvdWxkRXhwYW5kR3JvdXAiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2VsZWN0ZWRHcm91cCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbnN0cnVtZW50YXRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikluc3RydW1lbnRhdGlvbiIKKyB0eXBlPSJhbmRyb2lkLmFwcC5JbnN0cnVtZW50YXRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkTW9uaXRvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vbml0b3IiIHR5cGU9ImFuZHJvaWQuYXBwLkluc3RydW1lbnRhdGlvbi5BY3Rpdml0eU1vbml0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkTW9uaXRvciIKKyByZXR1cm49ImFuZHJvaWQuYXBwLkluc3RydW1lbnRhdGlvbi5BY3Rpdml0eU1vbml0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbHRlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudEZpbHRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0IiB0eXBlPSJhbmRyb2lkLmFwcC5JbnN0cnVtZW50YXRpb24uQWN0aXZpdHlSZXN1bHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJsb2NrIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZE1vbml0b3IiCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5JbnN0cnVtZW50YXRpb24uQWN0aXZpdHlNb25pdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbHMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdCIgdHlwZT0iYW5kcm9pZC5hcHAuSW5zdHJ1bWVudGF0aW9uLkFjdGl2aXR5UmVzdWx0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJibG9jayIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYWxsQWN0aXZpdHlPbkNyZWF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGl2aXR5IiB0eXBlPSJhbmRyb2lkLmFwcC5BY3Rpdml0eSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaWNpY2xlIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYWxsQWN0aXZpdHlPbkRlc3Ryb3kiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpdml0eSIgdHlwZT0iYW5kcm9pZC5hcHAuQWN0aXZpdHkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2FsbEFjdGl2aXR5T25OZXdJbnRlbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpdml0eSIgdHlwZT0iYW5kcm9pZC5hcHAuQWN0aXZpdHkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYWxsQWN0aXZpdHlPblBhdXNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aXZpdHkiIHR5cGU9ImFuZHJvaWQuYXBwLkFjdGl2aXR5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNhbGxBY3Rpdml0eU9uUG9zdENyZWF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGl2aXR5IiB0eXBlPSJhbmRyb2lkLmFwcC5BY3Rpdml0eSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaWNpY2xlIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYWxsQWN0aXZpdHlPblJlc3RhcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpdml0eSIgdHlwZT0iYW5kcm9pZC5hcHAuQWN0aXZpdHkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2FsbEFjdGl2aXR5T25SZXN0b3JlSW5zdGFuY2VTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGl2aXR5IiB0eXBlPSJhbmRyb2lkLmFwcC5BY3Rpdml0eSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2F2ZWRJbnN0YW5jZVN0YXRlIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYWxsQWN0aXZpdHlPblJlc3VtZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGl2aXR5IiB0eXBlPSJhbmRyb2lkLmFwcC5BY3Rpdml0eSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYWxsQWN0aXZpdHlPblNhdmVJbnN0YW5jZVN0YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aXZpdHkiIHR5cGU9ImFuZHJvaWQuYXBwLkFjdGl2aXR5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXRTdGF0ZSIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2FsbEFjdGl2aXR5T25TdGFydCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGl2aXR5IiB0eXBlPSJhbmRyb2lkLmFwcC5BY3Rpdml0eSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYWxsQWN0aXZpdHlPblN0b3AiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpdml0eSIgdHlwZT0iYW5kcm9pZC5hcHAuQWN0aXZpdHkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2FsbEFjdGl2aXR5T25Vc2VyTGVhdmluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGl2aXR5IiB0eXBlPSJhbmRyb2lkLmFwcC5BY3Rpdml0eSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYWxsQXBwbGljYXRpb25PbkNyZWF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFwcCIgdHlwZT0iYW5kcm9pZC5hcHAuQXBwbGljYXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tNb25pdG9ySGl0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9uaXRvciIgdHlwZT0iYW5kcm9pZC5hcHAuSW5zdHJ1bWVudGF0aW9uLkFjdGl2aXR5TW9uaXRvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWluSGl0cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZFBlcmZvcm1hbmNlU25hcHNob3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmlzaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdENvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0cyIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWxsb2NDb3VudHMiCisgcmV0dXJuPSJhbmRyb2lkLm9zLkJ1bmRsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCaW5kZXJDb3VudHMiCisgcmV0dXJuPSJhbmRyb2lkLm9zLkJ1bmRsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb21wb25lbnROYW1lIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGV4dCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db250ZXh0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRhcmdldENvbnRleHQiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnZva2VDb250ZXh0TWVudUFjdGlvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldEFjdGl2aXR5IiB0eXBlPSJhbmRyb2lkLmFwcC5BY3Rpdml0eSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imludm9rZU1lbnVBY3Rpb25TeW5jIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0QWN0aXZpdHkiIHR5cGU9ImFuZHJvaWQuYXBwLkFjdGl2aXR5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFnIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNQcm9maWxpbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld0FjdGl2aXR5IgorIHJldHVybj0iYW5kcm9pZC5hcHAuQWN0aXZpdHkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNsYXp6IiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b2tlbiIgdHlwZT0iYW5kcm9pZC5vcy5JQmluZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcHBsaWNhdGlvbiIgdHlwZT0iYW5kcm9pZC5hcHAuQXBwbGljYXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5mbyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLkFjdGl2aXR5SW5mbyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGl0bGUiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iYW5kcm9pZC5hcHAuQWN0aXZpdHkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYXN0Tm9uQ29uZmlndXJhdGlvbkluc3RhbmNlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW5zdGFudGlhdGlvbkV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkluc3RhbnRpYXRpb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3QWN0aXZpdHkiCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5BY3Rpdml0eSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2wiIHR5cGU9ImphdmEubGFuZy5DbGFzc0xvYWRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2xhc3NOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNsYXNzTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5DbGFzc05vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW5zdGFudGlhdGlvbkV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkluc3RhbnRpYXRpb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3QXBwbGljYXRpb24iCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5BcHBsaWNhdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2wiIHR5cGU9ImphdmEubGFuZy5DbGFzc0xvYWRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2xhc3NOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkNsYXNzTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBY2Nlc3NFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnN0YW50aWF0aW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW5zdGFudGlhdGlvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdBcHBsaWNhdGlvbiIKKyByZXR1cm49ImFuZHJvaWQuYXBwLkFwcGxpY2F0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNsYXp6IiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGFzc05vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBY2Nlc3NFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ikluc3RhbnRpYXRpb25FeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnN0YW50aWF0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ3JlYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJndW1lbnRzIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkRlc3Ryb3kiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uRXhjZXB0aW9uIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU3RhcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZU1vbml0b3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb25pdG9yIiB0eXBlPSJhbmRyb2lkLmFwcC5JbnN0cnVtZW50YXRpb24uQWN0aXZpdHlNb25pdG9yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJ1bk9uTWFpblN5bmMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJydW5uZXIiIHR5cGU9ImphdmEubGFuZy5SdW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kQ2hhcmFjdGVyU3luYyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kS2V5RG93blVwU3luYyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmRLZXlTeW5jIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kUG9pbnRlclN5bmMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmRTdGF0dXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdHMiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmRTdHJpbmdTeW5jIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kVHJhY2tiYWxsRXZlbnRTeW5jIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBdXRvbWF0aWNQZXJmb3JtYW5jZVNuYXBzaG90cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW5Ub3VjaE1vZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpblRvdWNoIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydEFjdGl2aXR5U3luYyIKKyByZXR1cm49ImFuZHJvaWQuYXBwLkFjdGl2aXR5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRBbGxvY0NvdW50aW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydFBlcmZvcm1hbmNlU25hcHNob3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0UHJvZmlsaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdG9wQWxsb2NDb3VudGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RvcFByb2ZpbGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id2FpdEZvcklkbGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWNpcGllbnQiIHR5cGU9ImphdmEubGFuZy5SdW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3YWl0Rm9ySWRsZVN5bmMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndhaXRGb3JNb25pdG9yIgorIHJldHVybj0iYW5kcm9pZC5hcHAuQWN0aXZpdHkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vbml0b3IiIHR5cGU9ImFuZHJvaWQuYXBwLkluc3RydW1lbnRhdGlvbi5BY3Rpdml0eU1vbml0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id2FpdEZvck1vbml0b3JXaXRoVGltZW91dCIKKyByZXR1cm49ImFuZHJvaWQuYXBwLkFjdGl2aXR5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb25pdG9yIiB0eXBlPSJhbmRyb2lkLmFwcC5JbnN0cnVtZW50YXRpb24uQWN0aXZpdHlNb25pdG9yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lT3V0IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iUkVQT1JUX0tFWV9JREVOVElGSUVSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2lkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFUE9SVF9LRVlfU1RSRUFNUkVTVUxUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3N0cmVhbSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW5zdHJ1bWVudGF0aW9uLkFjdGl2aXR5TW9uaXRvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnN0cnVtZW50YXRpb24uQWN0aXZpdHlNb25pdG9yIgorIHR5cGU9ImFuZHJvaWQuYXBwLkluc3RydW1lbnRhdGlvbi5BY3Rpdml0eU1vbml0b3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aGljaCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudEZpbHRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0IiB0eXBlPSJhbmRyb2lkLmFwcC5JbnN0cnVtZW50YXRpb24uQWN0aXZpdHlSZXN1bHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJsb2NrIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnN0cnVtZW50YXRpb24uQWN0aXZpdHlNb25pdG9yIgorIHR5cGU9ImFuZHJvaWQuYXBwLkluc3RydW1lbnRhdGlvbi5BY3Rpdml0eU1vbml0b3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbHMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdCIgdHlwZT0iYW5kcm9pZC5hcHAuSW5zdHJ1bWVudGF0aW9uLkFjdGl2aXR5UmVzdWx0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJibG9jayIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEZpbHRlciIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnRGaWx0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIaXRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGFzdEFjdGl2aXR5IgorIHJldHVybj0iYW5kcm9pZC5hcHAuQWN0aXZpdHkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXN1bHQiCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5JbnN0cnVtZW50YXRpb24uQWN0aXZpdHlSZXN1bHQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0Jsb2NraW5nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndhaXRGb3JBY3Rpdml0eSIKKyByZXR1cm49ImFuZHJvaWQuYXBwLkFjdGl2aXR5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id2FpdEZvckFjdGl2aXR5V2l0aFRpbWVvdXQiCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5BY3Rpdml0eSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lT3V0IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ikluc3RydW1lbnRhdGlvbi5BY3Rpdml0eVJlc3VsdCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikluc3RydW1lbnRhdGlvbi5BY3Rpdml0eVJlc3VsdCIKKyB0eXBlPSJhbmRyb2lkLmFwcC5JbnN0cnVtZW50YXRpb24uQWN0aXZpdHlSZXN1bHQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdERhdGEiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRSZXN1bHRDb2RlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlc3VsdERhdGEiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkludGVudFNlcnZpY2UiCisgZXh0ZW5kcz0iYW5kcm9pZC5hcHAuU2VydmljZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW50ZW50U2VydmljZSIKKyB0eXBlPSJhbmRyb2lkLmFwcC5JbnRlbnRTZXJ2aWNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9Im9uQmluZCIKKyByZXR1cm49ImFuZHJvaWQub3MuSUJpbmRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uSGFuZGxlSW50ZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW50ZW50UmVkZWxpdmVyeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVuYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iS2V5Z3VhcmRNYW5hZ2VyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZXhpdEtleWd1YXJkU2VjdXJlbHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsYmFjayIgdHlwZT0iYW5kcm9pZC5hcHAuS2V5Z3VhcmRNYW5hZ2VyLk9uS2V5Z3VhcmRFeGl0UmVzdWx0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluS2V5Z3VhcmRSZXN0cmljdGVkSW5wdXRNb2RlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdLZXlndWFyZExvY2siCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5LZXlndWFyZE1hbmFnZXIuS2V5Z3VhcmRMb2NrIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iS2V5Z3VhcmRNYW5hZ2VyLktleWd1YXJkTG9jayIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImRpc2FibGVLZXlndWFyZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVlbmFibGVLZXlndWFyZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IktleWd1YXJkTWFuYWdlci5PbktleWd1YXJkRXhpdFJlc3VsdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25LZXlndWFyZEV4aXRSZXN1bHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN1Y2Nlc3MiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkxhdW5jaGVyQWN0aXZpdHkiCisgZXh0ZW5kcz0iYW5kcm9pZC5hcHAuTGlzdEFjdGl2aXR5IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMYXVuY2hlckFjdGl2aXR5IgorIHR5cGU9ImFuZHJvaWQuYXBwLkxhdW5jaGVyQWN0aXZpdHkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0VGFyZ2V0SW50ZW50IgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkludGVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnRlbnRGb3JQb3NpdGlvbiIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXRlbUZvclBvc2l0aW9uIgorIHJldHVybj0iYW5kcm9pZC5hcHAuTGF1bmNoZXJBY3Rpdml0eS5MaXN0SXRlbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYWtlTGlzdEl0ZW1zIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5hcHAuTGF1bmNoZXJBY3Rpdml0eS5MaXN0SXRlbSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25RdWVyeVBhY2thZ2VNYW5hZ2VyIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5jb250ZW50LnBtLlJlc29sdmVJbmZvJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icXVlcnlJbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TZXRDb250ZW50VmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTGF1bmNoZXJBY3Rpdml0eS5JY29uUmVzaXplciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGF1bmNoZXJBY3Rpdml0eS5JY29uUmVzaXplciIKKyB0eXBlPSJhbmRyb2lkLmFwcC5MYXVuY2hlckFjdGl2aXR5Lkljb25SZXNpemVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUljb25UaHVtYm5haWwiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpY29uIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkxhdW5jaGVyQWN0aXZpdHkuTGlzdEl0ZW0iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGF1bmNoZXJBY3Rpdml0eS5MaXN0SXRlbSIKKyB0eXBlPSJhbmRyb2lkLmFwcC5MYXVuY2hlckFjdGl2aXR5Lkxpc3RJdGVtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iY2xhc3NOYW1lIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJleHRyYXMiCisgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY29uIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsYWJlbCIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icGFja2FnZU5hbWUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InJlc29sdmVJbmZvIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5SZXNvbHZlSW5mbyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJMaXN0QWN0aXZpdHkiCisgZXh0ZW5kcz0iYW5kcm9pZC5hcHAuQWN0aXZpdHkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMaXN0QWN0aXZpdHkiCisgdHlwZT0iYW5kcm9pZC5hcHAuTGlzdEFjdGl2aXR5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldExpc3RBZGFwdGVyIgorIHJldHVybj0iYW5kcm9pZC53aWRnZXQuTGlzdEFkYXB0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGlzdFZpZXciCisgcmV0dXJuPSJhbmRyb2lkLndpZGdldC5MaXN0VmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZWxlY3RlZEl0ZW1JZCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2VsZWN0ZWRJdGVtUG9zaXRpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25MaXN0SXRlbUNsaWNrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibCIgdHlwZT0iYW5kcm9pZC53aWRnZXQuTGlzdFZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMaXN0QWRhcHRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFkYXB0ZXIiIHR5cGU9ImFuZHJvaWQud2lkZ2V0Lkxpc3RBZGFwdGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNlbGVjdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTG9jYWxBY3Rpdml0eU1hbmFnZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxvY2FsQWN0aXZpdHlNYW5hZ2VyIgorIHR5cGU9ImFuZHJvaWQuYXBwLkxvY2FsQWN0aXZpdHlNYW5hZ2VyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyZW50IiB0eXBlPSJhbmRyb2lkLmFwcC5BY3Rpdml0eSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2luZ2xlTW9kZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc3Ryb3lBY3Rpdml0eSIKKyByZXR1cm49ImFuZHJvaWQudmlldy5XaW5kb3ciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaW5pc2giIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzcGF0Y2hDcmVhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0ZSIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzcGF0Y2hEZXN0cm95IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmluaXNoaW5nIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpc3BhdGNoUGF1c2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaW5pc2hpbmciIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzcGF0Y2hSZXN1bWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpc3BhdGNoU3RvcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWN0aXZpdHkiCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5BY3Rpdml0eSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3VycmVudEFjdGl2aXR5IgorIHJldHVybj0iYW5kcm9pZC5hcHAuQWN0aXZpdHkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3VycmVudElkIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVBbGxBY3Rpdml0aWVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzYXZlSW5zdGFuY2VTdGF0ZSIKKyByZXR1cm49ImFuZHJvaWQub3MuQnVuZGxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0QWN0aXZpdHkiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuV2luZG93IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik5vdGlmaWNhdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik5vdGlmaWNhdGlvbiIKKyB0eXBlPSJhbmRyb2lkLmFwcC5Ob3RpZmljYXRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOb3RpZmljYXRpb24iCisgdHlwZT0iYW5kcm9pZC5hcHAuTm90aWZpY2F0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWNvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aWNrZXJUZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aGVuIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOb3RpZmljYXRpb24iCisgdHlwZT0iYW5kcm9pZC5hcHAuTm90aWZpY2F0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyY2VsIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TGF0ZXN0RXZlbnRJbmZvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRlbnRUaXRsZSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGVudFRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRlbnRJbnRlbnQiIHR5cGU9ImFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmNlbCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFRkFVTFRfQUxMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVGQVVMVF9MSUdIVFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFRkFVTFRfU09VTkQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFRkFVTFRfVklCUkFURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19BVVRPX0NBTkNFTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfRk9SRUdST1VORF9TRVJWSUNFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19JTlNJU1RFTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfTk9fQ0xFQVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX09OR09JTkdfRVZFTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfT05MWV9BTEVSVF9PTkNFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX1NIT1dfTElHSFRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVFJFQU1fREVGQVVMVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImF1ZGlvU3RyZWFtVHlwZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjb250ZW50SW50ZW50IgorIHR5cGU9ImFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjb250ZW50VmlldyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5SZW1vdGVWaWV3cyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRlZmF1bHRzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRlbGV0ZUludGVudCIKKyB0eXBlPSJhbmRyb2lkLmFwcC5QZW5kaW5nSW50ZW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZmxhZ3MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWNvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY29uTGV2ZWwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibGVkQVJHQiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsZWRPZmZNUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsZWRPbk1TIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im51bWJlciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzb3VuZCIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0aWNrZXJUZXh0IgorIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ2aWJyYXRlIgorIHR5cGU9ImxvbmdbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IndoZW4iCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJOb3RpZmljYXRpb25NYW5hZ2VyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY2FuY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYW5jZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2FuY2VsQWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJub3RpZnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJub3RpZmljYXRpb24iIHR5cGU9ImFuZHJvaWQuYXBwLk5vdGlmaWNhdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJub3RpZnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5vdGlmaWNhdGlvbiIgdHlwZT0iYW5kcm9pZC5hcHAuTm90aWZpY2F0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBlbmRpbmdJbnRlbnQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJjYW5jZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWN0aXZpdHkiCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5QZW5kaW5nSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QnJvYWRjYXN0IgorIHJldHVybj0iYW5kcm9pZC5hcHAuUGVuZGluZ0ludGVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdENvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEludGVudFNlbmRlciIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnRTZW5kZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2VydmljZSIKKyByZXR1cm49ImFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3RDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUYXJnZXRQYWNrYWdlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkUGVuZGluZ0ludGVudE9yTnVsbEZyb21QYXJjZWwiCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5QZW5kaW5nSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iUGVuZGluZ0ludGVudC5DYW5jZWxlZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5hcHAuUGVuZGluZ0ludGVudC5DYW5jZWxlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQZW5kaW5nSW50ZW50LkNhbmNlbGVkRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmFwcC5QZW5kaW5nSW50ZW50LkNhbmNlbGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBlbmRpbmdJbnRlbnQuQ2FuY2VsZWRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQuQ2FuY2VsZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib25GaW5pc2hlZCIgdHlwZT0iYW5kcm9pZC5hcHAuUGVuZGluZ0ludGVudC5PbkZpbmlzaGVkIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJhbmRyb2lkLm9zLkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBlbmRpbmdJbnRlbnQuQ2FuY2VsZWRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQuQ2FuY2VsZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib25GaW5pc2hlZCIgdHlwZT0iYW5kcm9pZC5hcHAuUGVuZGluZ0ludGVudC5PbkZpbmlzaGVkIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJhbmRyb2lkLm9zLkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBlbmRpbmdJbnRlbnQuQ2FuY2VsZWRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQuQ2FuY2VsZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVQZW5kaW5nSW50ZW50T3JOdWxsVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlbmRlciIgdHlwZT0iYW5kcm9pZC5hcHAuUGVuZGluZ0ludGVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19DQU5DRUxfQ1VSUkVOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI2ODQzNTQ1NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX05PX0NSRUFURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUzNjg3MDkxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX09ORV9TSE9UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTA3Mzc0MTgyNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX1VQREFURV9DVVJSRU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTM0MjE3NzI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQZW5kaW5nSW50ZW50LkNhbmNlbGVkRXhjZXB0aW9uIgorIGV4dGVuZHM9ImFuZHJvaWQudXRpbC5BbmRyb2lkRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQZW5kaW5nSW50ZW50LkNhbmNlbGVkRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQuQ2FuY2VsZWRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQZW5kaW5nSW50ZW50LkNhbmNlbGVkRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQuQ2FuY2VsZWRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQZW5kaW5nSW50ZW50LkNhbmNlbGVkRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQuQ2FuY2VsZWRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLkV4Y2VwdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJQZW5kaW5nSW50ZW50Lk9uRmluaXNoZWQiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uU2VuZEZpbmlzaGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwZW5kaW5nSW50ZW50IiB0eXBlPSJhbmRyb2lkLmFwcC5QZW5kaW5nSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdENvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0RGF0YSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0RXh0cmFzIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iUHJvZ3Jlc3NEaWFsb2ciCisgZXh0ZW5kcz0iYW5kcm9pZC5hcHAuQWxlcnREaWFsb2ciCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcm9ncmVzc0RpYWxvZyIKKyB0eXBlPSJhbmRyb2lkLmFwcC5Qcm9ncmVzc0RpYWxvZyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcm9ncmVzc0RpYWxvZyIKKyB0eXBlPSJhbmRyb2lkLmFwcC5Qcm9ncmVzc0RpYWxvZyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0TWF4IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb2dyZXNzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlY29uZGFyeVByb2dyZXNzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluY3JlbWVudFByb2dyZXNzQnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaWZmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5jcmVtZW50U2Vjb25kYXJ5UHJvZ3Jlc3NCeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpZmYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0luZGV0ZXJtaW5hdGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU3RhcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEluZGV0ZXJtaW5hdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRldGVybWluYXRlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEluZGV0ZXJtaW5hdGVEcmF3YWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWF4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UHJvZ3Jlc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByb2dyZXNzRHJhd2FibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByb2dyZXNzU3R5bGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNlY29uZGFyeVByb2dyZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2Vjb25kYXJ5UHJvZ3Jlc3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaG93IgorIHJldHVybj0iYW5kcm9pZC5hcHAuUHJvZ3Jlc3NEaWFsb2ciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRpdGxlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNob3ciCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5Qcm9ncmVzc0RpYWxvZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGl0bGUiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV0ZXJtaW5hdGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2hvdyIKKyByZXR1cm49ImFuZHJvaWQuYXBwLlByb2dyZXNzRGlhbG9nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aXRsZSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXRlcm1pbmF0ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FuY2VsYWJsZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaG93IgorIHJldHVybj0iYW5kcm9pZC5hcHAuUHJvZ3Jlc3NEaWFsb2ciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRpdGxlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRldGVybWluYXRlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYW5jZWxhYmxlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYW5jZWxMaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkRpYWxvZ0ludGVyZmFjZS5PbkNhbmNlbExpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iU1RZTEVfSE9SSVpPTlRBTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RZTEVfU1BJTk5FUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNlYXJjaE1hbmFnZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5jb250ZW50LkRpYWxvZ0ludGVyZmFjZS5PbkNhbmNlbExpc3RlbmVyIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UuT25EaXNtaXNzTGlzdGVuZXIiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRTZWFyY2hhYmxlSW5mbyIKKyByZXR1cm49ImFuZHJvaWQuYXBwLlNlYXJjaGFibGVJbmZvIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb21wb25lbnROYW1lIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZWFyY2hhYmxlc0luR2xvYmFsU2VhcmNoIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5hcHAuU2VhcmNoYWJsZUluZm8mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ2FuY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaWFsb2ciIHR5cGU9ImFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25EaXNtaXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaWFsb2ciIHR5cGU9ImFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25DYW5jZWxMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmFwcC5TZWFyY2hNYW5hZ2VyLk9uQ2FuY2VsTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25EaXNtaXNzTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5hcHAuU2VhcmNoTWFuYWdlci5PbkRpc21pc3NMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydFNlYXJjaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluaXRpYWxRdWVyeSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0SW5pdGlhbFF1ZXJ5IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYXVuY2hBY3Rpdml0eSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFwcFNlYXJjaERhdGEiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJnbG9iYWxTZWFyY2giIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RvcFNlYXJjaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idHJpZ2dlclNlYXJjaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InF1ZXJ5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYXVuY2hBY3Rpdml0eSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFwcFNlYXJjaERhdGEiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0tFWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthY3Rpb25fa2V5JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9NU0ciCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YWN0aW9uX21zZyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBUFBfREFUQSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthcHBfZGF0YSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDVVJTT1JfRVhUUkFfS0VZX0lOX1BST0dSRVNTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2luX3Byb2dyZXNzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX0RBVEFfS0VZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2ludGVudF9leHRyYV9kYXRhX2tleSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9TRUxFQ1RfUVVFUlkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c2VsZWN0X3F1ZXJ5JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklOVEVOVF9BQ1RJT05fR0xPQkFMX1NFQVJDSCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnNlYXJjaC5hY3Rpb24uR0xPQkFMX1NFQVJDSCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTlRFTlRfQUNUSU9OX1NFQVJDSEFCTEVTX0NIQU5HRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5zZWFyY2guYWN0aW9uLlNFQVJDSEFCTEVTX0NIQU5HRUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU5URU5UX0FDVElPTl9TRUFSQ0hfU0VUVElOR1MiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5zZWFyY2guYWN0aW9uLlNFQVJDSF9TRVRUSU5HUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTlRFTlRfQUNUSU9OX1NFQVJDSF9TRVRUSU5HU19DSEFOR0VEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc2VhcmNoLmFjdGlvbi5TRVRUSU5HU19DSEFOR0VEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklOVEVOVF9BQ1RJT05fV0VCX1NFQVJDSF9TRVRUSU5HUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnNlYXJjaC5hY3Rpb24uV0VCX1NFQVJDSF9TRVRUSU5HUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNRU5VX0tFWSIKKyB0eXBlPSJjaGFyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUVOVV9LRVlDT0RFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUVVFUlkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cXVlcnkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0hPUlRDVVRfTUlNRV9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ZuZC5hbmRyb2lkLmN1cnNvci5pdGVtL3ZuZC5hbmRyb2lkLnNlYXJjaC5zdWdnZXN0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNVR0dFU1RfQ09MVU1OX0ZPUk1BVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzdWdnZXN0X2Zvcm1hdCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVUdHRVNUX0NPTFVNTl9JQ09OXzEiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c3VnZ2VzdF9pY29uXzEmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1VHR0VTVF9DT0xVTU5fSUNPTl8yIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3N1Z2dlc3RfaWNvbl8yJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNVR0dFU1RfQ09MVU1OX0lOVEVOVF9BQ1RJT04iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c3VnZ2VzdF9pbnRlbnRfYWN0aW9uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNVR0dFU1RfQ09MVU1OX0lOVEVOVF9EQVRBIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3N1Z2dlc3RfaW50ZW50X2RhdGEmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1VHR0VTVF9DT0xVTU5fSU5URU5UX0RBVEFfSUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c3VnZ2VzdF9pbnRlbnRfZGF0YV9pZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVUdHRVNUX0NPTFVNTl9JTlRFTlRfRVhUUkFfREFUQSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzdWdnZXN0X2ludGVudF9leHRyYV9kYXRhJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNVR0dFU1RfQ09MVU1OX1FVRVJZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3N1Z2dlc3RfaW50ZW50X3F1ZXJ5JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNVR0dFU1RfQ09MVU1OX1NIT1JUQ1VUX0lEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3N1Z2dlc3Rfc2hvcnRjdXRfaWQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1VHR0VTVF9DT0xVTU5fU1BJTk5FUl9XSElMRV9SRUZSRVNISU5HIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3N1Z2dlc3Rfc3Bpbm5lcl93aGlsZV9yZWZyZXNoaW5nJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNVR0dFU1RfQ09MVU1OX1RFWFRfMSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzdWdnZXN0X3RleHRfMSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVUdHRVNUX0NPTFVNTl9URVhUXzIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c3VnZ2VzdF90ZXh0XzImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1VHR0VTVF9DT0xVTU5fVEVYVF8yX1VSTCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzdWdnZXN0X3RleHRfMl91cmwmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1VHR0VTVF9NSU1FX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLmRpci92bmQuYW5kcm9pZC5zZWFyY2guc3VnZ2VzdCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVUdHRVNUX05FVkVSX01BS0VfU0hPUlRDVVQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Xy0xJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNVR0dFU1RfUEFSQU1FVEVSX0xJTUlUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2xpbWl0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNVR0dFU1RfVVJJX1BBVEhfUVVFUlkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c2VhcmNoX3N1Z2dlc3RfcXVlcnkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1VHR0VTVF9VUklfUEFUSF9TSE9SVENVVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzZWFyY2hfc3VnZ2VzdF9zaG9ydGN1dCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVU0VSX1FVRVJZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3VzZXJfcXVlcnkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJTZWFyY2hNYW5hZ2VyLk9uQ2FuY2VsTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uQ2FuY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iU2VhcmNoTWFuYWdlci5PbkRpc21pc3NMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25EaXNtaXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJTZWFyY2hhYmxlSW5mbyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImF1dG9VcmxEZXRlY3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SGludElkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEltZU9wdGlvbnMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5wdXRUeXBlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlYXJjaEFjdGl2aXR5IgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2V0dGluZ3NEZXNjcmlwdGlvbklkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1Z2dlc3RBdXRob3JpdHkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1Z2dlc3RJbnRlbnRBY3Rpb24iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1Z2dlc3RJbnRlbnREYXRhIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdWdnZXN0UGFja2FnZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3VnZ2VzdFBhdGgiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1Z2dlc3RTZWxlY3Rpb24iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1Z2dlc3RUaHJlc2hvbGQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Vm9pY2VMYW5ndWFnZUlkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZvaWNlTGFuZ3VhZ2VNb2RlSWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Vm9pY2VNYXhSZXN1bHRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZvaWNlUHJvbXB0VGV4dElkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZvaWNlU2VhcmNoRW5hYmxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Vm9pY2VTZWFyY2hMYXVuY2hSZWNvZ25pemVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWb2ljZVNlYXJjaExhdW5jaFdlYlNlYXJjaCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVlcnlBZnRlclplcm9SZXN1bHRzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaG91bGRJbmNsdWRlSW5HbG9iYWxTZWFyY2giCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNob3VsZFJld3JpdGVRdWVyeUZyb21EYXRhIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaG91bGRSZXdyaXRlUXVlcnlGcm9tVGV4dCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2VydmljZSIKKyBleHRlbmRzPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dFdyYXBwZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudENhbGxiYWNrcyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2VydmljZSIKKyB0eXBlPSJhbmRyb2lkLmFwcC5TZXJ2aWNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImR1bXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZCIgdHlwZT0iamF2YS5pby5GaWxlRGVzY3JpcHRvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id3JpdGVyIiB0eXBlPSJqYXZhLmlvLlByaW50V3JpdGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcmdzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXBwbGljYXRpb24iCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5BcHBsaWNhdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQmluZCIKKyByZXR1cm49ImFuZHJvaWQub3MuSUJpbmRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Db25maWd1cmF0aW9uQ2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld0NvbmZpZyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5Db25maWd1cmF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ3JlYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkRlc3Ryb3kiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uTG93TWVtb3J5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblJlYmluZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblN0YXJ0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0SWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblN0YXJ0Q29tbWFuZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydElkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25VbmJpbmQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Rm9yZWdyb3VuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpc0ZvcmVncm91bmQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRGb3JlZ3JvdW5kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJub3RpZmljYXRpb24iIHR5cGU9ImFuZHJvaWQuYXBwLk5vdGlmaWNhdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdG9wRm9yZWdyb3VuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVtb3ZlTm90aWZpY2F0aW9uIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0b3BTZWxmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0b3BTZWxmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydElkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RvcFNlbGZSZXN1bHQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0SWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IlNUQVJUX0NPTlRJTlVBVElPTl9NQVNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RBUlRfRkxBR19SRURFTElWRVJZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFSVF9GTEFHX1JFVFJZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFSVF9OT1RfU1RJQ0tZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFSVF9SRURFTElWRVJfSU5URU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFSVF9TVElDS1kiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNUQVJUX1NUSUNLWV9DT01QQVRJQklMSVRZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVGFiQWN0aXZpdHkiCisgZXh0ZW5kcz0iYW5kcm9pZC5hcHAuQWN0aXZpdHlHcm91cCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRhYkFjdGl2aXR5IgorIHR5cGU9ImFuZHJvaWQuYXBwLlRhYkFjdGl2aXR5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldFRhYkhvc3QiCisgcmV0dXJuPSJhbmRyb2lkLndpZGdldC5UYWJIb3N0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRhYldpZGdldCIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LlRhYldpZGdldCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREZWZhdWx0VGFiIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERlZmF1bHRUYWIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlRpbWVQaWNrZXJEaWFsb2ciCisgZXh0ZW5kcz0iYW5kcm9pZC5hcHAuQWxlcnREaWFsb2ciCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UuT25DbGlja0xpc3RlbmVyIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQud2lkZ2V0LlRpbWVQaWNrZXIuT25UaW1lQ2hhbmdlZExpc3RlbmVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUaW1lUGlja2VyRGlhbG9nIgorIHR5cGU9ImFuZHJvaWQuYXBwLlRpbWVQaWNrZXJEaWFsb2ciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsbEJhY2siIHR5cGU9ImFuZHJvaWQuYXBwLlRpbWVQaWNrZXJEaWFsb2cuT25UaW1lU2V0TGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhvdXJPZkRheSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaW51dGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXMyNEhvdXJWaWV3IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUaW1lUGlja2VyRGlhbG9nIgorIHR5cGU9ImFuZHJvaWQuYXBwLlRpbWVQaWNrZXJEaWFsb2ciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsbEJhY2siIHR5cGU9ImFuZHJvaWQuYXBwLlRpbWVQaWNrZXJEaWFsb2cuT25UaW1lU2V0TGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhvdXJPZkRheSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaW51dGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXMyNEhvdXJWaWV3IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ib25DbGljayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpYWxvZyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkRpYWxvZ0ludGVyZmFjZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2hpY2giIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblRpbWVDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGltZVBpY2tlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaG91ck9mRGF5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbnV0ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZVRpbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3VyT2ZEYXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWludXRPZkhvdXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iVGltZVBpY2tlckRpYWxvZy5PblRpbWVTZXRMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25UaW1lU2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLndpZGdldC5UaW1lUGlja2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJob3VyT2ZEYXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWludXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlVpTW9kZU1hbmFnZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJkaXNhYmxlQ2FyTW9kZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5hYmxlQ2FyTW9kZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3VycmVudE1vZGVUeXBlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5pZ2h0TW9kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXROaWdodE1vZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fRU5URVJfQ0FSX01PREUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0VOVEVSX0RFU0tfTU9ERSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fRVhJVF9DQVJfTU9ERSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fRVhJVF9ERVNLX01PREUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRElTQUJMRV9DQVJfTU9ERV9HT19IT01FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFTkFCTEVfQ0FSX01PREVfR09fQ0FSX0hPTUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1PREVfTklHSFRfQVVUTyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTU9ERV9OSUdIVF9OTyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTU9ERV9OSUdIVF9ZRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJXYWxscGFwZXJJbmZvIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJXYWxscGFwZXJJbmZvIgorIHR5cGU9ImFuZHJvaWQuYXBwLldhbGxwYXBlckluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VydmljZSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlJlc29sdmVJbmZvIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHVtcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InB3IiB0eXBlPSJhbmRyb2lkLnV0aWwuUHJpbnRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlZml4IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbXBvbmVudCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhY2thZ2VOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZXJ2aWNlSW5mbyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5wbS5TZXJ2aWNlSW5mbyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZXJ2aWNlTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2V0dGluZ3NBY3Rpdml0eSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZEF1dGhvciIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBtIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZERlc2NyaXB0aW9uIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG0iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2FkSWNvbiIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBtIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZExhYmVsIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG0iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2FkVGh1bWJuYWlsIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG0iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJXYWxscGFwZXJNYW5hZ2VyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY2xlYXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhcldhbGxwYXBlck9mZnNldHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aW5kb3dUb2tlbiIgdHlwZT0iYW5kcm9pZC5vcy5JQmluZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlc2lyZWRNaW5pbXVtSGVpZ2h0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlc2lyZWRNaW5pbXVtV2lkdGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RHJhd2FibGUiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZhc3REcmF3YWJsZSIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5XYWxscGFwZXJNYW5hZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdhbGxwYXBlckluZm8iCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5XYWxscGFwZXJJbmZvIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBlZWtEcmF3YWJsZSIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGVla0Zhc3REcmF3YWJsZSIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VuZFdhbGxwYXBlckNvbW1hbmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aW5kb3dUb2tlbiIgdHlwZT0iYW5kcm9pZC5vcy5JQmluZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4dHJhcyIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Qml0bWFwIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYml0bWFwIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UmVzb3VyY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTdHJlYW0iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRXYWxscGFwZXJPZmZzZXRTdGVwcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InhTdGVwIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieVN0ZXAiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFdhbGxwYXBlck9mZnNldHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aW5kb3dUb2tlbiIgdHlwZT0iYW5kcm9pZC5vcy5JQmluZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4T2Zmc2V0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieU9mZnNldCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VnZ2VzdERlc2lyZWREaW1lbnNpb25zIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWluaW11bVdpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbmltdW1IZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkFDVElPTl9MSVZFX1dBTExQQVBFUl9DSE9PU0VSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc2VydmljZS53YWxscGFwZXIuTElWRV9XQUxMUEFQRVJfQ0hPT1NFUiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT01NQU5EX0RST1AiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5ob21lLmRyb3AmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09NTUFORF9UQVAiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC53YWxscGFwZXIudGFwJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQuYXBwLmFkbWluIgorPgorPGNsYXNzIG5hbWU9IkRldmljZUFkbWluSW5mbyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGV2aWNlQWRtaW5JbmZvIgorIHR5cGU9ImFuZHJvaWQuYXBwLmFkbWluLkRldmljZUFkbWluSW5mbyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWNlaXZlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlJlc29sdmVJbmZvIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHVtcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InB3IiB0eXBlPSJhbmRyb2lkLnV0aWwuUHJpbnRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlZml4IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFjdGl2aXR5SW5mbyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5wbS5BY3Rpdml0eUluZm8iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29tcG9uZW50IgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFja2FnZU5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlY2VpdmVyTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGFnRm9yUG9saWN5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9saWN5SWRlbnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1Zpc2libGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvYWREZXNjcmlwdGlvbiIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBtIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZEljb24iCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvYWRMYWJlbCIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBtIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXNlc1BvbGljeSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvbGljeUlkZW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVU0VTX1BPTElDWV9GT1JDRV9MT0NLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVU0VTX1BPTElDWV9MSU1JVF9QQVNTV09SRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVVNFU19QT0xJQ1lfUkVTRVRfUEFTU1dPUkQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVTRVNfUE9MSUNZX1dBVENIX0xPR0lOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVU0VTX1BPTElDWV9XSVBFX0RBVEEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEZXZpY2VBZG1pblJlY2VpdmVyIgorIGV4dGVuZHM9ImFuZHJvaWQuY29udGVudC5Ccm9hZGNhc3RSZWNlaXZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRldmljZUFkbWluUmVjZWl2ZXIiCisgdHlwZT0iYW5kcm9pZC5hcHAuYWRtaW4uRGV2aWNlQWRtaW5SZWNlaXZlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRNYW5hZ2VyIgorIHJldHVybj0iYW5kcm9pZC5hcHAuYWRtaW4uRGV2aWNlUG9saWN5TWFuYWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V2hvIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uRGlzYWJsZVJlcXVlc3RlZCIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25EaXNhYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25FbmFibGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblBhc3N3b3JkQ2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25QYXNzd29yZEZhaWxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25QYXNzd29yZFN1Y2NlZWRlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25SZWNlaXZlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkFDVElPTl9ERVZJQ0VfQURNSU5fRElTQUJMRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5hcHAuYWN0aW9uLkRFVklDRV9BRE1JTl9ESVNBQkxFRCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fREVWSUNFX0FETUlOX0RJU0FCTEVfUkVRVUVTVEVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuYXBwLmFjdGlvbi5ERVZJQ0VfQURNSU5fRElTQUJMRV9SRVFVRVNURUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0RFVklDRV9BRE1JTl9FTkFCTEVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuYXBwLmFjdGlvbi5ERVZJQ0VfQURNSU5fRU5BQkxFRCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fUEFTU1dPUkRfQ0hBTkdFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmFwcC5hY3Rpb24uQUNUSU9OX1BBU1NXT1JEX0NIQU5HRUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1BBU1NXT1JEX0ZBSUxFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmFwcC5hY3Rpb24uQUNUSU9OX1BBU1NXT1JEX0ZBSUxFRCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fUEFTU1dPUkRfU1VDQ0VFREVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuYXBwLmFjdGlvbi5BQ1RJT05fUEFTU1dPUkRfU1VDQ0VFREVEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFVklDRV9BRE1JTl9NRVRBX0RBVEEiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5hcHAuZGV2aWNlX2FkbWluJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX0RJU0FCTEVfV0FSTklORyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmFwcC5leHRyYS5ESVNBQkxFX1dBUk5JTkcmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRldmljZVBvbGljeU1hbmFnZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRBY3RpdmVBZG1pbnMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3VycmVudEZhaWxlZFBhc3N3b3JkQXR0ZW1wdHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF4aW11bUZhaWxlZFBhc3N3b3Jkc0ZvcldpcGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFkbWluIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYXhpbXVtVGltZVRvTG9jayIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFkbWluIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXNzd29yZE1heGltdW1MZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InF1YWxpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXNzd29yZE1pbmltdW1MZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFkbWluIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXNzd29yZFF1YWxpdHkiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFkbWluIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0FjdGl2ZVBhc3N3b3JkU3VmZmljaWVudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNBZG1pbkFjdGl2ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndobyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9ja05vdyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlQWN0aXZlQWRtaW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aG8iIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc2V0UGFzc3dvcmQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXNzd29yZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNYXhpbXVtRmFpbGVkUGFzc3dvcmRzRm9yV2lwZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFkbWluIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibnVtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWF4aW11bVRpbWVUb0xvY2siCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhZG1pbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVNcyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQYXNzd29yZE1pbmltdW1MZW5ndGgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhZG1pbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBhc3N3b3JkUXVhbGl0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFkbWluIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icXVhbGl0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndpcGVEYXRhIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkFDVElPTl9BRERfREVWSUNFX0FETUlOIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuYXBwLmFjdGlvbi5BRERfREVWSUNFX0FETUlOJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9TRVRfTkVXX1BBU1NXT1JEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuYXBwLmFjdGlvbi5TRVRfTkVXX1BBU1NXT1JEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX0FERF9FWFBMQU5BVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmFwcC5leHRyYS5BRERfRVhQTEFOQVRJT04mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfREVWSUNFX0FETUlOIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuYXBwLmV4dHJhLkRFVklDRV9BRE1JTiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQQVNTV09SRF9RVUFMSVRZX0FMUEhBQkVUSUMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNjIxNDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEFTU1dPUkRfUVVBTElUWV9BTFBIQU5VTUVSSUMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjc2ODAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEFTU1dPUkRfUVVBTElUWV9OVU1FUklDIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTMxMDcyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBBU1NXT1JEX1FVQUxJVFlfU09NRVRISU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjU1MzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEFTU1dPUkRfUVVBTElUWV9VTlNQRUNJRklFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkVTRVRfUEFTU1dPUkRfUkVRVUlSRV9FTlRSWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iYW5kcm9pZC5hcHAuYmFja3VwIgorPgorPGNsYXNzIG5hbWU9IkJhY2t1cEFnZW50IgorIGV4dGVuZHM9ImFuZHJvaWQuY29udGVudC5Db250ZXh0V3JhcHBlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmFja3VwQWdlbnQiCisgdHlwZT0iYW5kcm9pZC5hcHAuYmFja3VwLkJhY2t1cEFnZW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9Im9uQmFja3VwIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvbGRTdGF0ZSIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxGaWxlRGVzY3JpcHRvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYW5kcm9pZC5hcHAuYmFja3VwLkJhY2t1cERhdGFPdXRwdXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1N0YXRlIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbEZpbGVEZXNjcmlwdG9yIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNyZWF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25EZXN0cm95IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblJlc3RvcmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImFuZHJvaWQuYXBwLmJhY2t1cC5CYWNrdXBEYXRhSW5wdXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFwcFZlcnNpb25Db2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1N0YXRlIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbEZpbGVEZXNjcmlwdG9yIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCYWNrdXBBZ2VudEhlbHBlciIKKyBleHRlbmRzPSJhbmRyb2lkLmFwcC5iYWNrdXAuQmFja3VwQWdlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYWNrdXBBZ2VudEhlbHBlciIKKyB0eXBlPSJhbmRyb2lkLmFwcC5iYWNrdXAuQmFja3VwQWdlbnRIZWxwZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkSGVscGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5UHJlZml4IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWxwZXIiIHR5cGU9ImFuZHJvaWQuYXBwLmJhY2t1cC5CYWNrdXBIZWxwZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25CYWNrdXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvbGRTdGF0ZSIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxGaWxlRGVzY3JpcHRvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYW5kcm9pZC5hcHAuYmFja3VwLkJhY2t1cERhdGFPdXRwdXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1N0YXRlIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbEZpbGVEZXNjcmlwdG9yIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblJlc3RvcmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJhbmRyb2lkLmFwcC5iYWNrdXAuQmFja3VwRGF0YUlucHV0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcHBWZXJzaW9uQ29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdTdGF0ZSIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxGaWxlRGVzY3JpcHRvciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQmFja3VwRGF0YUlucHV0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0RGF0YVNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0S2V5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkRW50aXR5RGF0YSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkTmV4dEhlYWRlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNraXBFbnRpdHlEYXRhIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQmFja3VwRGF0YUlucHV0U3RyZWFtIgorIGV4dGVuZHM9ImphdmEuaW8uSW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0S2V5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJhY2t1cERhdGFPdXRwdXQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUVudGl0eURhdGEiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUVudGl0eUhlYWRlciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhU2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQmFja3VwSGVscGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0icGVyZm9ybUJhY2t1cCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2xkU3RhdGUiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsRmlsZURlc2NyaXB0b3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImFuZHJvaWQuYXBwLmJhY2t1cC5CYWNrdXBEYXRhT3V0cHV0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdTdGF0ZSIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxGaWxlRGVzY3JpcHRvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXN0b3JlRW50aXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJhbmRyb2lkLmFwcC5iYWNrdXAuQmFja3VwRGF0YUlucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlTmV3U3RhdGVEZXNjcmlwdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmQiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsRmlsZURlc2NyaXB0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkJhY2t1cE1hbmFnZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJhY2t1cE1hbmFnZXIiCisgdHlwZT0iYW5kcm9pZC5hcHAuYmFja3VwLkJhY2t1cE1hbmFnZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRhdGFDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkYXRhQ2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2FnZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVxdWVzdFJlc3RvcmUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9ic2VydmVyIiB0eXBlPSJhbmRyb2lkLmFwcC5iYWNrdXAuUmVzdG9yZU9ic2VydmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkZpbGVCYWNrdXBIZWxwZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC5hcHAuYmFja3VwLkZpbGVCYWNrdXBIZWxwZXJCYXNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLmFwcC5iYWNrdXAuQmFja3VwSGVscGVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGaWxlQmFja3VwSGVscGVyIgorIHR5cGU9ImFuZHJvaWQuYXBwLmJhY2t1cC5GaWxlQmFja3VwSGVscGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGVzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nLi4uIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0icGVyZm9ybUJhY2t1cCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9sZFN0YXRlIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbEZpbGVEZXNjcmlwdG9yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJhbmRyb2lkLmFwcC5iYWNrdXAuQmFja3VwRGF0YU91dHB1dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3U3RhdGUiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsRmlsZURlc2NyaXB0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzdG9yZUVudGl0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImFuZHJvaWQuYXBwLmJhY2t1cC5CYWNrdXBEYXRhSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRmlsZUJhY2t1cEhlbHBlckJhc2UiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0iIgorPgorPG1ldGhvZCBuYW1lPSJ3cml0ZU5ld1N0YXRlRGVzY3JpcHRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxGaWxlRGVzY3JpcHRvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSZXN0b3JlT2JzZXJ2ZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVzdG9yZU9ic2VydmVyIgorIHR5cGU9ImFuZHJvaWQuYXBwLmJhY2t1cC5SZXN0b3JlT2JzZXJ2ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ib25VcGRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJub3dCZWluZ1Jlc3RvcmVkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnJlbnRQYWNrYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc3RvcmVGaW5pc2hlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVycm9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzdG9yZVN0YXJ0aW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibnVtUGFja2FnZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTaGFyZWRQcmVmZXJlbmNlc0JhY2t1cEhlbHBlciIKKyBleHRlbmRzPSJhbmRyb2lkLmFwcC5iYWNrdXAuRmlsZUJhY2t1cEhlbHBlckJhc2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQuYXBwLmJhY2t1cC5CYWNrdXBIZWxwZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNoYXJlZFByZWZlcmVuY2VzQmFja3VwSGVscGVyIgorIHR5cGU9ImFuZHJvaWQuYXBwLmJhY2t1cC5TaGFyZWRQcmVmZXJlbmNlc0JhY2t1cEhlbHBlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmR3JvdXBzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nLi4uIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0icGVyZm9ybUJhY2t1cCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9sZFN0YXRlIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbEZpbGVEZXNjcmlwdG9yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJhbmRyb2lkLmFwcC5iYWNrdXAuQmFja3VwRGF0YU91dHB1dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3U3RhdGUiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsRmlsZURlc2NyaXB0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzdG9yZUVudGl0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImFuZHJvaWQuYXBwLmJhY2t1cC5CYWNrdXBEYXRhSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJhbmRyb2lkLmFwcHdpZGdldCIKKz4KKzxjbGFzcyBuYW1lPSJBcHBXaWRnZXRIb3N0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBcHBXaWRnZXRIb3N0IgorIHR5cGU9ImFuZHJvaWQuYXBwd2lkZ2V0LkFwcFdpZGdldEhvc3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdElkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhbGxvY2F0ZUFwcFdpZGdldElkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVZpZXciCisgcmV0dXJuPSJhbmRyb2lkLmFwcHdpZGdldC5BcHBXaWRnZXRIb3N0VmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXBwV2lkZ2V0SWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXBwV2lkZ2V0IiB0eXBlPSJhbmRyb2lkLmFwcHdpZGdldC5BcHBXaWRnZXRQcm92aWRlckluZm8iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVsZXRlQWxsSG9zdHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVsZXRlQXBwV2lkZ2V0SWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcHBXaWRnZXRJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlbGV0ZUhvc3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ3JlYXRlVmlldyIKKyByZXR1cm49ImFuZHJvaWQuYXBwd2lkZ2V0LkFwcFdpZGdldEhvc3RWaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXBwV2lkZ2V0SWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXBwV2lkZ2V0IiB0eXBlPSJhbmRyb2lkLmFwcHdpZGdldC5BcHBXaWRnZXRQcm92aWRlckluZm8iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Qcm92aWRlckNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcHBXaWRnZXRJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcHBXaWRnZXQiIHR5cGU9ImFuZHJvaWQuYXBwd2lkZ2V0LkFwcFdpZGdldFByb3ZpZGVySW5mbyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydExpc3RlbmluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RvcExpc3RlbmluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQXBwV2lkZ2V0SG9zdFZpZXciCisgZXh0ZW5kcz0iYW5kcm9pZC53aWRnZXQuRnJhbWVMYXlvdXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBcHBXaWRnZXRIb3N0VmlldyIKKyB0eXBlPSJhbmRyb2lkLmFwcHdpZGdldC5BcHBXaWRnZXRIb3N0VmlldyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBcHBXaWRnZXRIb3N0VmlldyIKKyB0eXBlPSJhbmRyb2lkLmFwcHdpZGdldC5BcHBXaWRnZXRIb3N0VmlldyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbmltYXRpb25JbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbmltYXRpb25PdXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEFwcFdpZGdldElkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFwcFdpZGdldEluZm8iCisgcmV0dXJuPSJhbmRyb2lkLmFwcHdpZGdldC5BcHBXaWRnZXRQcm92aWRlckluZm8iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVmYXVsdFZpZXciCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFcnJvclZpZXciCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmVwYXJlVmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFwcFdpZGdldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFwcFdpZGdldElkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZm8iIHR5cGU9ImFuZHJvaWQuYXBwd2lkZ2V0LkFwcFdpZGdldFByb3ZpZGVySW5mbyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVBcHBXaWRnZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZW1vdGVWaWV3cyIgdHlwZT0iYW5kcm9pZC53aWRnZXQuUmVtb3RlVmlld3MiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQXBwV2lkZ2V0TWFuYWdlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImJpbmRBcHBXaWRnZXRJZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFwcFdpZGdldElkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBcHBXaWRnZXRJZHMiCisgcmV0dXJuPSJpbnRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFwcFdpZGdldEluZm8iCisgcmV0dXJuPSJhbmRyb2lkLmFwcHdpZGdldC5BcHBXaWRnZXRQcm92aWRlckluZm8iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFwcFdpZGdldElkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFsbGVkUHJvdmlkZXJzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5hcHB3aWRnZXQuQXBwV2lkZ2V0UHJvdmlkZXJJbmZvJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImFuZHJvaWQuYXBwd2lkZ2V0LkFwcFdpZGdldE1hbmFnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlQXBwV2lkZ2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXBwV2lkZ2V0SWRzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmlld3MiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlJlbW90ZVZpZXdzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZUFwcFdpZGdldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFwcFdpZGdldElkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXdzIiB0eXBlPSJhbmRyb2lkLndpZGdldC5SZW1vdGVWaWV3cyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVBcHBXaWRnZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXdzIiB0eXBlPSJhbmRyb2lkLndpZGdldC5SZW1vdGVWaWV3cyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkFDVElPTl9BUFBXSURHRVRfQ09ORklHVVJFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuYXBwd2lkZ2V0LmFjdGlvbi5BUFBXSURHRVRfQ09ORklHVVJFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9BUFBXSURHRVRfREVMRVRFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmFwcHdpZGdldC5hY3Rpb24uQVBQV0lER0VUX0RFTEVURUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0FQUFdJREdFVF9ESVNBQkxFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmFwcHdpZGdldC5hY3Rpb24uQVBQV0lER0VUX0RJU0FCTEVEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9BUFBXSURHRVRfRU5BQkxFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmFwcHdpZGdldC5hY3Rpb24uQVBQV0lER0VUX0VOQUJMRUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0FQUFdJREdFVF9QSUNLIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuYXBwd2lkZ2V0LmFjdGlvbi5BUFBXSURHRVRfUElDSyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fQVBQV0lER0VUX1VQREFURSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmFwcHdpZGdldC5hY3Rpb24uQVBQV0lER0VUX1VQREFURSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9BUFBXSURHRVRfSUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YXBwV2lkZ2V0SWQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfQVBQV0lER0VUX0lEUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthcHBXaWRnZXRJZHMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfQ1VTVE9NX0VYVFJBUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtjdXN0b21FeHRyYXMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfQ1VTVE9NX0lORk8iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y3VzdG9tSW5mbyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTlZBTElEX0FQUFdJREdFVF9JRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUVUQV9EQVRBX0FQUFdJREdFVF9QUk9WSURFUiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmFwcHdpZGdldC5wcm92aWRlciZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQXBwV2lkZ2V0UHJvdmlkZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC5jb250ZW50LkJyb2FkY2FzdFJlY2VpdmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXBwV2lkZ2V0UHJvdmlkZXIiCisgdHlwZT0iYW5kcm9pZC5hcHB3aWRnZXQuQXBwV2lkZ2V0UHJvdmlkZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ib25EZWxldGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFwcFdpZGdldElkcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25EaXNhYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uRW5hYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uUmVjZWl2ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25VcGRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXBwV2lkZ2V0TWFuYWdlciIgdHlwZT0iYW5kcm9pZC5hcHB3aWRnZXQuQXBwV2lkZ2V0TWFuYWdlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXBwV2lkZ2V0SWRzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBcHBXaWRnZXRQcm92aWRlckluZm8iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBcHBXaWRnZXRQcm92aWRlckluZm8iCisgdHlwZT0iYW5kcm9pZC5hcHB3aWRnZXQuQXBwV2lkZ2V0UHJvdmlkZXJJbmZvIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXBwV2lkZ2V0UHJvdmlkZXJJbmZvIgorIHR5cGU9ImFuZHJvaWQuYXBwd2lkZ2V0LkFwcFdpZGdldFByb3ZpZGVySW5mbyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNvbmZpZ3VyZSIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Imljb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW5pdGlhbExheW91dCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsYWJlbCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibWluSGVpZ2h0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1pbldpZHRoIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByb3ZpZGVyIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idXBkYXRlUGVyaW9kTWlsbGlzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQuYmx1ZXRvb3RoIgorPgorPGNsYXNzIG5hbWU9IkJsdWV0b290aEFkYXB0ZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNhbmNlbERpc2NvdmVyeSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tCbHVldG9vdGhBZGRyZXNzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhZGRyZXNzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpc2FibGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuYWJsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWRkcmVzcyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Qm9uZGVkRGV2aWNlcyIKKyByZXR1cm49ImphdmEudXRpbC5TZXQmbHQ7YW5kcm9pZC5ibHVldG9vdGguQmx1ZXRvb3RoRGV2aWNlJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWZhdWx0QWRhcHRlciIKKyByZXR1cm49ImFuZHJvaWQuYmx1ZXRvb3RoLkJsdWV0b290aEFkYXB0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlbW90ZURldmljZSIKKyByZXR1cm49ImFuZHJvaWQuYmx1ZXRvb3RoLkJsdWV0b290aERldmljZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWRkcmVzcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTY2FuTW9kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdGF0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0Rpc2NvdmVyaW5nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0VuYWJsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxpc3RlblVzaW5nUmZjb21tV2l0aFNlcnZpY2VSZWNvcmQiCisgcmV0dXJuPSJhbmRyb2lkLmJsdWV0b290aC5CbHVldG9vdGhTZXJ2ZXJTb2NrZXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InV1aWQiIHR5cGU9ImphdmEudXRpbC5VVUlEIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXROYW1lIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydERpc2NvdmVyeSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fRElTQ09WRVJZX0ZJTklTSEVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuYmx1ZXRvb3RoLmFkYXB0ZXIuYWN0aW9uLkRJU0NPVkVSWV9GSU5JU0hFRCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fRElTQ09WRVJZX1NUQVJURUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5ibHVldG9vdGguYWRhcHRlci5hY3Rpb24uRElTQ09WRVJZX1NUQVJURUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0xPQ0FMX05BTUVfQ0hBTkdFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmJsdWV0b290aC5hZGFwdGVyLmFjdGlvbi5MT0NBTF9OQU1FX0NIQU5HRUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1JFUVVFU1RfRElTQ09WRVJBQkxFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuYmx1ZXRvb3RoLmFkYXB0ZXIuYWN0aW9uLlJFUVVFU1RfRElTQ09WRVJBQkxFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9SRVFVRVNUX0VOQUJMRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmJsdWV0b290aC5hZGFwdGVyLmFjdGlvbi5SRVFVRVNUX0VOQUJMRSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fU0NBTl9NT0RFX0NIQU5HRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5ibHVldG9vdGguYWRhcHRlci5hY3Rpb24uU0NBTl9NT0RFX0NIQU5HRUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1NUQVRFX0NIQU5HRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5ibHVldG9vdGguYWRhcHRlci5hY3Rpb24uU1RBVEVfQ0hBTkdFRCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFUlJPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0yMTQ3NDgzNjQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX0RJU0NPVkVSQUJMRV9EVVJBVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmJsdWV0b290aC5hZGFwdGVyLmV4dHJhLkRJU0NPVkVSQUJMRV9EVVJBVElPTiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9MT0NBTF9OQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuYmx1ZXRvb3RoLmFkYXB0ZXIuZXh0cmEuTE9DQUxfTkFNRSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9QUkVWSU9VU19TQ0FOX01PREUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5ibHVldG9vdGguYWRhcHRlci5leHRyYS5QUkVWSU9VU19TQ0FOX01PREUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfUFJFVklPVVNfU1RBVEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5ibHVldG9vdGguYWRhcHRlci5leHRyYS5QUkVWSU9VU19TVEFURSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9TQ0FOX01PREUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5ibHVldG9vdGguYWRhcHRlci5leHRyYS5TQ0FOX01PREUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfU1RBVEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5ibHVldG9vdGguYWRhcHRlci5leHRyYS5TVEFURSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ0FOX01PREVfQ09OTkVDVEFCTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ0FOX01PREVfQ09OTkVDVEFCTEVfRElTQ09WRVJBQkxFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NBTl9NT0RFX05PTkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFURV9PRkYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFURV9PTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNUQVRFX1RVUk5JTkdfT0ZGIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RBVEVfVFVSTklOR19PTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjExIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCbHVldG9vdGhDbGFzcyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGV2aWNlQ2xhc3MiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWFqb3JEZXZpY2VDbGFzcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNTZXJ2aWNlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VydmljZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQmx1ZXRvb3RoQ2xhc3MuRGV2aWNlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJsdWV0b290aENsYXNzLkRldmljZSIKKyB0eXBlPSJhbmRyb2lkLmJsdWV0b290aC5CbHVldG9vdGhDbGFzcy5EZXZpY2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxmaWVsZCBuYW1lPSJBVURJT19WSURFT19DQU1DT1JERVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDc2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFVRElPX1ZJREVPX0NBUl9BVURJTyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwNTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVVESU9fVklERU9fSEFORFNGUkVFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBVURJT19WSURFT19IRUFEUEhPTkVTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTA0OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBVURJT19WSURFT19ISUZJX0FVRElPIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTA2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBVURJT19WSURFT19MT1VEU1BFQUtFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwNDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVVESU9fVklERU9fTUlDUk9QSE9ORSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwNDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVVESU9fVklERU9fUE9SVEFCTEVfQVVESU8iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDUyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFVRElPX1ZJREVPX1NFVF9UT1BfQk9YIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTA2MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBVURJT19WSURFT19VTkNBVEVHT1JJWkVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAyNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBVURJT19WSURFT19WQ1IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFVRElPX1ZJREVPX1ZJREVPX0NBTUVSQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwNzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVVESU9fVklERU9fVklERU9fQ09ORkVSRU5DSU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTA4OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBVURJT19WSURFT19WSURFT19ESVNQTEFZX0FORF9MT1VEU1BFQUtFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwODQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVVESU9fVklERU9fVklERU9fR0FNSU5HX1RPWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwOTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVVESU9fVklERU9fVklERU9fTU9OSVRPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwODAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVVESU9fVklERU9fV0VBUkFCTEVfSEVBRFNFVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09NUFVURVJfREVTS1RPUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI2MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT01QVVRFUl9IQU5ESEVMRF9QQ19QREEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09NUFVURVJfTEFQVE9QIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTVBVVEVSX1BBTE1fU0laRV9QQ19QREEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09NUFVURVJfU0VSVkVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjY0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTVBVVEVSX1VOQ0FURUdPUklaRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09NUFVURVJfV0VBUkFCTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyODAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSEVBTFRIX0JMT09EX1BSRVNTVVJFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjMwOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIRUFMVEhfREFUQV9ESVNQTEFZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjMzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIRUFMVEhfR0xVQ09TRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIzMjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSEVBTFRIX1BVTFNFX09YSU1FVEVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjMyNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIRUFMVEhfUFVMU0VfUkFURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIzMjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSEVBTFRIX1RIRVJNT01FVEVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjMxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIRUFMVEhfVU5DQVRFR09SSVpFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIzMDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSEVBTFRIX1dFSUdISU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjMxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQSE9ORV9DRUxMVUxBUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQSE9ORV9DT1JETEVTUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUyMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQSE9ORV9JU0ROIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTMyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBIT05FX01PREVNX09SX0dBVEVXQVkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEhPTkVfU01BUlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEhPTkVfVU5DQVRFR09SSVpFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT1lfQ09OVFJPTExFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwNjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ZX0RPTExfQUNUSU9OX0ZJR1VSRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwNjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ZX0dBTUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMDY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPWV9ST0JPVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwNTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ZX1VOQ0FURUdPUklaRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMDQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPWV9WRUhJQ0xFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjA1NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXRUFSQUJMRV9HTEFTU0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTgxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXRUFSQUJMRV9IRUxNRVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxODA4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldFQVJBQkxFX0pBQ0tFVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE4MDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0VBUkFCTEVfUEFHRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxODAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldFQVJBQkxFX1VOQ0FURUdPUklaRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzkyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldFQVJBQkxFX1dSSVNUX1dBVENIIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTc5NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQmx1ZXRvb3RoQ2xhc3MuRGV2aWNlLk1ham9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJsdWV0b290aENsYXNzLkRldmljZS5NYWpvciIKKyB0eXBlPSJhbmRyb2lkLmJsdWV0b290aC5CbHVldG9vdGhDbGFzcy5EZXZpY2UuTWFqb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxmaWVsZCBuYW1lPSJBVURJT19WSURFTyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09NUFVURVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSEVBTFRIIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjMwNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTUFHSU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTUzNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNSVNDIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJORVRXT1JLSU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBFUklQSEVSQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjgwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBIT05FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwNDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVU5DQVRFR09SSVpFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc5MzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0VBUkFCTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzkyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCbHVldG9vdGhDbGFzcy5TZXJ2aWNlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmx1ZXRvb3RoQ2xhc3MuU2VydmljZSIKKyB0eXBlPSJhbmRyb2lkLmJsdWV0b290aC5CbHVldG9vdGhDbGFzcy5TZXJ2aWNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iQVVESU8iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMDk3MTUyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNBUFRVUkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MjQyODgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU5GT1JNQVRJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4Mzg4NjA4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxJTUlURURfRElTQ09WRVJBQklMSVRZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODE5MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJORVRXT1JLSU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTMxMDcyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9CSkVDVF9UUkFOU0ZFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwNDg1NzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUE9TSVRJT05JTkciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NTUzNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRU5ERVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNjIxNDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEVMRVBIT05ZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDE5NDMwNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQmx1ZXRvb3RoRGV2aWNlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iY3JlYXRlUmZjb21tU29ja2V0VG9TZXJ2aWNlUmVjb3JkIgorIHJldHVybj0iYW5kcm9pZC5ibHVldG9vdGguQmx1ZXRvb3RoU29ja2V0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1dWlkIiB0eXBlPSJqYXZhLnV0aWwuVVVJRCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBZGRyZXNzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCbHVldG9vdGhDbGFzcyIKKyByZXR1cm49ImFuZHJvaWQuYmx1ZXRvb3RoLkJsdWV0b290aENsYXNzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJvbmRTdGF0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkFDVElPTl9BQ0xfQ09OTkVDVEVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuYmx1ZXRvb3RoLmRldmljZS5hY3Rpb24uQUNMX0NPTk5FQ1RFRCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fQUNMX0RJU0NPTk5FQ1RFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmJsdWV0b290aC5kZXZpY2UuYWN0aW9uLkFDTF9ESVNDT05ORUNURUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0FDTF9ESVNDT05ORUNUX1JFUVVFU1RFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmJsdWV0b290aC5kZXZpY2UuYWN0aW9uLkFDTF9ESVNDT05ORUNUX1JFUVVFU1RFRCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fQk9ORF9TVEFURV9DSEFOR0VEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuYmx1ZXRvb3RoLmRldmljZS5hY3Rpb24uQk9ORF9TVEFURV9DSEFOR0VEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9DTEFTU19DSEFOR0VEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuYmx1ZXRvb3RoLmRldmljZS5hY3Rpb24uQ0xBU1NfQ0hBTkdFRCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fRk9VTkQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5ibHVldG9vdGguZGV2aWNlLmFjdGlvbi5GT1VORCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fTkFNRV9DSEFOR0VEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuYmx1ZXRvb3RoLmRldmljZS5hY3Rpb24uTkFNRV9DSEFOR0VEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJPTkRfQk9OREVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQk9ORF9CT05ESU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQk9ORF9OT05FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFUlJPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0yMTQ3NDgzNjQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX0JPTkRfU1RBVEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5ibHVldG9vdGguZGV2aWNlLmV4dHJhLkJPTkRfU1RBVEUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfQ0xBU1MiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5ibHVldG9vdGguZGV2aWNlLmV4dHJhLkNMQVNTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX0RFVklDRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmJsdWV0b290aC5kZXZpY2UuZXh0cmEuREVWSUNFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX05BTUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5ibHVldG9vdGguZGV2aWNlLmV4dHJhLk5BTUUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfUFJFVklPVVNfQk9ORF9TVEFURSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmJsdWV0b290aC5kZXZpY2UuZXh0cmEuUFJFVklPVVNfQk9ORF9TVEFURSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9SU1NJIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuYmx1ZXRvb3RoLmRldmljZS5leHRyYS5SU1NJJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCbHVldG9vdGhTZXJ2ZXJTb2NrZXQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLkNsb3NlYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImFjY2VwdCIKKyByZXR1cm49ImFuZHJvaWQuYmx1ZXRvb3RoLkJsdWV0b290aFNvY2tldCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWNjZXB0IgorIHJldHVybj0iYW5kcm9pZC5ibHVldG9vdGguQmx1ZXRvb3RoU29ja2V0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lb3V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb3NlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQmx1ZXRvb3RoU29ja2V0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5DbG9zZWFibGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbm5lY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnB1dFN0cmVhbSIKKyByZXR1cm49ImphdmEuaW8uSW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE91dHB1dFN0cmVhbSIKKyByZXR1cm49ImphdmEuaW8uT3V0cHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZW1vdGVEZXZpY2UiCisgcmV0dXJuPSJhbmRyb2lkLmJsdWV0b290aC5CbHVldG9vdGhEZXZpY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJhbmRyb2lkLmNvbnRlbnQiCis+Cis8Y2xhc3MgbmFtZT0iQWJzdHJhY3RUaHJlYWRlZFN5bmNBZGFwdGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFic3RyYWN0VGhyZWFkZWRTeW5jQWRhcHRlciIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQWJzdHJhY3RUaHJlYWRlZFN5bmNBZGFwdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF1dG9Jbml0aWFsaXplIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGV4dCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db250ZXh0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN5bmNBZGFwdGVyQmluZGVyIgorIHJldHVybj0iYW5kcm9pZC5vcy5JQmluZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25QZXJmb3JtU3luYyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjb3VudCIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHRyYXMiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdXRob3JpdHkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFByb3ZpZGVyQ2xpZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzeW5jUmVzdWx0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuU3luY1Jlc3VsdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblN5bmNDYW5jZWxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJMT0dfU1lOQ19ERVRBSUxTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjc0MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQWN0aXZpdHlOb3RGb3VuZEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFjdGl2aXR5Tm90Rm91bmRFeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LkFjdGl2aXR5Tm90Rm91bmRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBY3Rpdml0eU5vdEZvdW5kRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5BY3Rpdml0eU5vdEZvdW5kRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFzeW5jUXVlcnlIYW5kbGVyIgorIGV4dGVuZHM9ImFuZHJvaWQub3MuSGFuZGxlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXN5bmNRdWVyeUhhbmRsZXIiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LkFzeW5jUXVlcnlIYW5kbGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjYW5jZWxPcGVyYXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRva2VuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlSGFuZGxlciIKKyByZXR1cm49ImFuZHJvaWQub3MuSGFuZGxlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9vcGVyIiB0eXBlPSJhbmRyb2lkLm9zLkxvb3BlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkRlbGV0ZUNvbXBsZXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idG9rZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29va2llIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkluc2VydENvbXBsZXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idG9rZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29va2llIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblF1ZXJ5Q29tcGxldGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0b2tlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb29raWUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25VcGRhdGVDb21wbGV0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRva2VuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb2tpZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnREZWxldGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRva2VuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb2tpZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0aW9uQXJncyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0SW5zZXJ0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0b2tlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb29raWUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbml0aWFsVmFsdWVzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFZhbHVlcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydFF1ZXJ5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idG9rZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29va2llIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvamVjdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGlvbkFyZ3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JkZXJCeSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydFVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idG9rZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29va2llIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWVzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFZhbHVlcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3Rpb25BcmdzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQXN5bmNRdWVyeUhhbmRsZXIuV29ya2VyQXJncyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFzeW5jUXVlcnlIYW5kbGVyLldvcmtlckFyZ3MiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LkFzeW5jUXVlcnlIYW5kbGVyLldvcmtlckFyZ3MiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxmaWVsZCBuYW1lPSJjb29raWUiCisgdHlwZT0iamF2YS5sYW5nLk9iamVjdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImhhbmRsZXIiCisgdHlwZT0iYW5kcm9pZC5vcy5IYW5kbGVyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ib3JkZXJCeSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJvamVjdGlvbiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJyZXN1bHQiCisgdHlwZT0iamF2YS5sYW5nLk9iamVjdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNlbGVjdGlvbiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2VsZWN0aW9uQXJncyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ1cmkiCisgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idmFsdWVzIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFzeW5jUXVlcnlIYW5kbGVyLldvcmtlckhhbmRsZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC5vcy5IYW5kbGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXN5bmNRdWVyeUhhbmRsZXIuV29ya2VySGFuZGxlciIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQXN5bmNRdWVyeUhhbmRsZXIuV29ya2VySGFuZGxlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxvb3BlciIgdHlwZT0iYW5kcm9pZC5vcy5Mb29wZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCcm9hZGNhc3RSZWNlaXZlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCcm9hZGNhc3RSZWNlaXZlciIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQnJvYWRjYXN0UmVjZWl2ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWJvcnRCcm9hZGNhc3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJBYm9ydEJyb2FkY2FzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBYm9ydEJyb2FkY2FzdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWJ1Z1VucmVnaXN0ZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVzdWx0Q29kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlc3VsdERhdGEiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVzdWx0RXh0cmFzIgorIHJldHVybj0iYW5kcm9pZC5vcy5CdW5kbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFrZU1hcCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0luaXRpYWxTdGlja3lCcm9hZGNhc3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNPcmRlcmVkQnJvYWRjYXN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uUmVjZWl2ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwZWVrU2VydmljZSIKKyByZXR1cm49ImFuZHJvaWQub3MuSUJpbmRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXlDb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VydmljZSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREZWJ1Z1VucmVnaXN0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlYnVnIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9yZGVyZWRIaW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpc09yZGVyZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UmVzdWx0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4dHJhcyIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UmVzdWx0Q29kZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJlc3VsdERhdGEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UmVzdWx0RXh0cmFzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleHRyYXMiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDb21wb25lbnRDYWxsYmFja3MiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvbkNvbmZpZ3VyYXRpb25DaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdDb25maWciIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuQ29uZmlndXJhdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkxvd01lbW9yeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ29tcG9uZW50TmFtZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5DbG9uZWFibGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNvbXBhcmFibGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb21wb25lbnROYW1lIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGtnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjbHMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbXBvbmVudE5hbWUiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwa2ciIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjbHMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbXBvbmVudE5hbWUiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwa2ciIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjbHMiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29tcG9uZW50TmFtZSIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcGFyZVRvIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGF0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZsYXR0ZW5Ub1Nob3J0U3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmbGF0dGVuVG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENsYXNzTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFja2FnZU5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNob3J0Q2xhc3NOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkRnJvbVBhcmNlbCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1Nob3J0U3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bmZsYXR0ZW5Gcm9tU3RyaW5nIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29udGVudFByb3ZpZGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudENhbGxiYWNrcyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29udGVudFByb3ZpZGVyIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UHJvdmlkZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYXBwbHlCYXRjaCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db250ZW50UHJvdmlkZXJSZXN1bHRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3BlcmF0aW9ucyIgdHlwZT0iamF2YS51dGlsLkFycmF5TGlzdCZsdDthbmRyb2lkLmNvbnRlbnQuQ29udGVudFByb3ZpZGVyT3BlcmF0aW9uJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iT3BlcmF0aW9uQXBwbGljYXRpb25FeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5PcGVyYXRpb25BcHBsaWNhdGlvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhdHRhY2hJbmZvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZm8iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5Qcm92aWRlckluZm8iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYnVsa0luc2VydCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlcyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRWYWx1ZXNbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWxldGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0aW9uQXJncyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbnRleHQiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhdGhQZXJtaXNzaW9ucyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5wbS5QYXRoUGVybWlzc2lvbltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVhZFBlcm1pc3Npb24iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHlwZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V3JpdGVQZXJtaXNzaW9uIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imluc2VydCIKKyByZXR1cm49ImFuZHJvaWQubmV0LlVyaSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWVzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFZhbHVlcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1RlbXBvcmFyeSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Db25maWd1cmF0aW9uQ2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld0NvbmZpZyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5Db25maWd1cmF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ3JlYXRlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uTG93TWVtb3J5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuQXNzZXRGaWxlIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnJlcy5Bc3NldEZpbGVEZXNjcmlwdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRmlsZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuRmlsZSIKKyByZXR1cm49ImFuZHJvaWQub3MuUGFyY2VsRmlsZURlc2NyaXB0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJGaWxlTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wZW5GaWxlSGVscGVyIgorIHJldHVybj0iYW5kcm9pZC5vcy5QYXJjZWxGaWxlRGVzY3JpcHRvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRmlsZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJxdWVyeSIKKyByZXR1cm49ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm9qZWN0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0aW9uQXJncyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzb3J0T3JkZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGF0aFBlcm1pc3Npb25zIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwZXJtaXNzaW9ucyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhdGhQZXJtaXNzaW9uW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UmVhZFBlcm1pc3Npb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pc3Npb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0V3JpdGVQZXJtaXNzaW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwZXJtaXNzaW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWVzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFZhbHVlcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3Rpb25BcmdzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29udGVudFByb3ZpZGVyQ2xpZW50IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYXBwbHlCYXRjaCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db250ZW50UHJvdmlkZXJSZXN1bHRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3BlcmF0aW9ucyIgdHlwZT0iamF2YS51dGlsLkFycmF5TGlzdCZsdDthbmRyb2lkLmNvbnRlbnQuQ29udGVudFByb3ZpZGVyT3BlcmF0aW9uJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iT3BlcmF0aW9uQXBwbGljYXRpb25FeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5PcGVyYXRpb25BcHBsaWNhdGlvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iUmVtb3RlRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJidWxrSW5zZXJ0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5pdGlhbFZhbHVlcyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRWYWx1ZXNbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUmVtb3RlRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWxldGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGlvbkFyZ3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUmVtb3RlRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhbENvbnRlbnRQcm92aWRlciIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db250ZW50UHJvdmlkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHlwZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZW1vdGVFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imluc2VydCIKKyByZXR1cm49ImFuZHJvaWQubmV0LlVyaSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluaXRpYWxWYWx1ZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZW1vdGVFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wZW5Bc3NldEZpbGUiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucmVzLkFzc2V0RmlsZURlc2NyaXB0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJGaWxlTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJSZW1vdGVFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wZW5GaWxlIgorIHJldHVybj0iYW5kcm9pZC5vcy5QYXJjZWxGaWxlRGVzY3JpcHRvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlJlbW90ZUV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVlcnkiCisgcmV0dXJuPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb2plY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3Rpb25BcmdzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNvcnRPcmRlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUmVtb3RlRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWxlYXNlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGlvbkFyZ3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUmVtb3RlRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb250ZW50UHJvdmlkZXJPcGVyYXRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iYXBwbHkiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFByb3ZpZGVyUmVzdWx0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRQcm92aWRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmFja1JlZnMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UHJvdmlkZXJSZXN1bHRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibnVtQmFja1JlZnMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iT3BlcmF0aW9uQXBwbGljYXRpb25FeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5PcGVyYXRpb25BcHBsaWNhdGlvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFVyaSIKKyByZXR1cm49ImFuZHJvaWQubmV0LlVyaSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1JlYWRPcGVyYXRpb24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzV3JpdGVPcGVyYXRpb24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzWWllbGRBbGxvd2VkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdBc3NlcnRRdWVyeSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db250ZW50UHJvdmlkZXJPcGVyYXRpb24uQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdEZWxldGUiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFByb3ZpZGVyT3BlcmF0aW9uLkJ1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3SW5zZXJ0IgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRQcm92aWRlck9wZXJhdGlvbi5CdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1VwZGF0ZSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db250ZW50UHJvdmlkZXJPcGVyYXRpb24uQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNvbHZlU2VsZWN0aW9uQXJnc0JhY2tSZWZlcmVuY2VzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiYWNrUmVmcyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRQcm92aWRlclJlc3VsdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJudW1CYWNrUmVmcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc29sdmVWYWx1ZUJhY2tSZWZlcmVuY2VzIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRWYWx1ZXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJhY2tSZWZzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFByb3ZpZGVyUmVzdWx0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im51bUJhY2tSZWZzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29udGVudFByb3ZpZGVyT3BlcmF0aW9uLkJ1aWxkZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImJ1aWxkIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRQcm92aWRlck9wZXJhdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3aXRoRXhwZWN0ZWRDb3VudCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db250ZW50UHJvdmlkZXJPcGVyYXRpb24uQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3aXRoU2VsZWN0aW9uIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRQcm92aWRlck9wZXJhdGlvbi5CdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGlvbkFyZ3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3aXRoU2VsZWN0aW9uQmFja1JlZmVyZW5jZSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db250ZW50UHJvdmlkZXJPcGVyYXRpb24uQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0aW9uQXJnSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJldmlvdXNSZXN1bHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3aXRoVmFsdWUiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFByb3ZpZGVyT3BlcmF0aW9uLkJ1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id2l0aFZhbHVlQmFja1JlZmVyZW5jZSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db250ZW50UHJvdmlkZXJPcGVyYXRpb24uQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcmV2aW91c1Jlc3VsdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndpdGhWYWx1ZUJhY2tSZWZlcmVuY2VzIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRQcm92aWRlck9wZXJhdGlvbi5CdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiYWNrUmVmZXJlbmNlcyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRWYWx1ZXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id2l0aFZhbHVlcyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db250ZW50UHJvdmlkZXJPcGVyYXRpb24uQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWVzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFZhbHVlcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3aXRoWWllbGRBbGxvd2VkIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRQcm92aWRlck9wZXJhdGlvbi5CdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ5aWVsZEFsbG93ZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29udGVudFByb3ZpZGVyUmVzdWx0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29udGVudFByb3ZpZGVyUmVzdWx0IgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UHJvdmlkZXJSZXN1bHQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29udGVudFByb3ZpZGVyUmVzdWx0IgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UHJvdmlkZXJSZXN1bHQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb250ZW50UHJvdmlkZXJSZXN1bHQiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRQcm92aWRlclJlc3VsdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY291bnQiCisgdHlwZT0iamF2YS5sYW5nLkludGVnZXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InVyaSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb250ZW50UXVlcnlNYXAiCisgZXh0ZW5kcz0iamF2YS51dGlsLk9ic2VydmFibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb250ZW50UXVlcnlNYXAiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRRdWVyeU1hcCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWVPZktleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2VlcFVwZGF0ZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhhbmRsZXJGb3JVcGRhdGVOb3RpZmljYXRpb25zIiB0eXBlPSJhbmRyb2lkLm9zLkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSb3dzIgorIHJldHVybj0iamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCBhbmRyb2lkLmNvbnRlbnQuQ29udGVudFZhbHVlcyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWYWx1ZXMiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFZhbHVlcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyb3dOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcXVlcnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEtlZXBVcGRhdGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2VlcFVwZGF0ZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29udGVudFJlc29sdmVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbnRlbnRSZXNvbHZlciIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhY3F1aXJlQ29udGVudFByb3ZpZGVyQ2xpZW50IgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRQcm92aWRlckNsaWVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhY3F1aXJlQ29udGVudFByb3ZpZGVyQ2xpZW50IgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRQcm92aWRlckNsaWVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZFBlcmlvZGljU3luYyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjb3VudCIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdXRob3JpdHkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4dHJhcyIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvbGxGcmVxdWVuY3kiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkU3RhdHVzQ2hhbmdlTGlzdGVuZXIiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1hc2siIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsbGJhY2siIHR5cGU9ImFuZHJvaWQuY29udGVudC5TeW5jU3RhdHVzT2JzZXJ2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXBwbHlCYXRjaCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db250ZW50UHJvdmlkZXJSZXN1bHRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0aG9yaXR5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcGVyYXRpb25zIiB0eXBlPSJqYXZhLnV0aWwuQXJyYXlMaXN0Jmx0O2FuZHJvaWQuY29udGVudC5Db250ZW50UHJvdmlkZXJPcGVyYXRpb24mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJPcGVyYXRpb25BcHBsaWNhdGlvbkV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50Lk9wZXJhdGlvbkFwcGxpY2F0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJSZW1vdGVFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImJ1bGtJbnNlcnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlcyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRWYWx1ZXNbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYW5jZWxTeW5jIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYW5jZWxTeW5jIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY2NvdW50IiB0eXBlPSJhbmRyb2lkLmFjY291bnRzLkFjY291bnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF1dGhvcml0eSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWxldGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoZXJlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3Rpb25BcmdzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3VycmVudFN5bmMiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuU3luY0luZm8iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJc1N5bmNhYmxlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY291bnQiIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0aG9yaXR5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1hc3RlclN5bmNBdXRvbWF0aWNhbGx5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBlcmlvZGljU3luY3MiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLmNvbnRlbnQuUGVyaW9kaWNTeW5jJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY2NvdW50IiB0eXBlPSJhbmRyb2lkLmFjY291bnRzLkFjY291bnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF1dGhvcml0eSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTeW5jQWRhcHRlclR5cGVzIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LlN5bmNBZGFwdGVyVHlwZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3luY0F1dG9tYXRpY2FsbHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY291bnQiIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0aG9yaXR5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFR5cGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imluc2VydCIKKyByZXR1cm49ImFuZHJvaWQubmV0LlVyaSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWVzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFZhbHVlcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1N5bmNBY3RpdmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY291bnQiIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0aG9yaXR5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU3luY1BlbmRpbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY291bnQiIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0aG9yaXR5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5vdGlmeUNoYW5nZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvYnNlcnZlciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5Db250ZW50T2JzZXJ2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibm90aWZ5Q2hhbmdlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9ic2VydmVyIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkNvbnRlbnRPYnNlcnZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3luY1RvTmV0d29yayIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuQXNzZXRGaWxlRGVzY3JpcHRvciIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5yZXMuQXNzZXRGaWxlRGVzY3JpcHRvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRmlsZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuRmlsZURlc2NyaXB0b3IiCisgcmV0dXJuPSJhbmRyb2lkLm9zLlBhcmNlbEZpbGVEZXNjcmlwdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJGaWxlTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wZW5JbnB1dFN0cmVhbSIKKyByZXR1cm49ImphdmEuaW8uSW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3Blbk91dHB1dFN0cmVhbSIKKyByZXR1cm49ImphdmEuaW8uT3V0cHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJGaWxlTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wZW5PdXRwdXRTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLk91dHB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRmlsZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJxdWVyeSIKKyByZXR1cm49ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm9qZWN0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0aW9uQXJncyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzb3J0T3JkZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVnaXN0ZXJDb250ZW50T2JzZXJ2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJub3RpZnlGb3JEZXNjZW5kZW50cyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JzZXJ2ZXIiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ29udGVudE9ic2VydmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZVBlcmlvZGljU3luYyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjb3VudCIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdXRob3JpdHkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4dHJhcyIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlU3RhdHVzQ2hhbmdlTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhhbmRsZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXF1ZXN0U3luYyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjb3VudCIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdXRob3JpdHkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4dHJhcyIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SXNTeW5jYWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjb3VudCIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdXRob3JpdHkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN5bmNhYmxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWFzdGVyU3luY0F1dG9tYXRpY2FsbHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN5bmMiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3luY0F1dG9tYXRpY2FsbHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY291bnQiIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0aG9yaXR5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzeW5jIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0U3luYyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4dHJhcyIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5yZWdpc3RlckNvbnRlbnRPYnNlcnZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JzZXJ2ZXIiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ29udGVudE9ic2VydmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWVzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFZhbHVlcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2hlcmUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGlvbkFyZ3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWxpZGF0ZVN5bmNFeHRyYXNCdW5kbGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4dHJhcyIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDVVJTT1JfRElSX0JBU0VfVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2bmQuYW5kcm9pZC5jdXJzb3IuZGlyJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNVUlNPUl9JVEVNX0JBU0VfVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2bmQuYW5kcm9pZC5jdXJzb3IuaXRlbSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ0hFTUVfQU5EUk9JRF9SRVNPVVJDRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnJlc291cmNlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDSEVNRV9DT05URU5UIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2NvbnRlbnQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NIRU1FX0ZJTEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZmlsZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTWU5DX0VYVFJBU19BQ0NPVU5UIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FjY291bnQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTWU5DX0VYVFJBU19ESVNDQVJEX0xPQ0FMX0RFTEVUSU9OUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkaXNjYXJkX2RlbGV0aW9ucyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTWU5DX0VYVFJBU19ET19OT1RfUkVUUlkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZG9fbm90X3JldHJ5JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNZTkNfRVhUUkFTX0VYUEVESVRFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtleHBlZGl0ZWQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1lOQ19FWFRSQVNfRk9SQ0UiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Zm9yY2UmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTWU5DX0VYVFJBU19JR05PUkVfQkFDS09GRiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtpZ25vcmVfYmFja29mZiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTWU5DX0VYVFJBU19JR05PUkVfU0VUVElOR1MiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aWdub3JlX3NldHRpbmdzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNZTkNfRVhUUkFTX0lOSVRJQUxJWkUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aW5pdGlhbGl6ZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTWU5DX0VYVFJBU19NQU5VQUwiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Zm9yY2UmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1lOQ19FWFRSQVNfT1ZFUlJJREVfVE9PX01BTllfREVMRVRJT05TIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RlbGV0aW9uc19vdmVycmlkZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTWU5DX0VYVFJBU19VUExPQUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dXBsb2FkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNZTkNfT0JTRVJWRVJfVFlQRV9BQ1RJVkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNZTkNfT0JTRVJWRVJfVFlQRV9QRU5ESU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTWU5DX09CU0VSVkVSX1RZUEVfU0VUVElOR1MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb250ZW50VXJpcyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29udGVudFVyaXMiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRVcmlzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZElkIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJpLkJ1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVpbGRlciIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpLkJ1aWxkZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlSWQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRlbnRVcmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3aXRoQXBwZW5kZWRJZCIKKyByZXR1cm49ImFuZHJvaWQubmV0LlVyaSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZW50VXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbnRlbnRWYWx1ZXMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbnRlbnRWYWx1ZXMiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRWYWx1ZXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb250ZW50VmFsdWVzIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb250ZW50VmFsdWVzIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZnJvbSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRWYWx1ZXMiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbGVhciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29udGFpbnNLZXkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXNCb29sZWFuIgorIHJldHVybj0iamF2YS5sYW5nLkJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBc0J5dGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuQnl0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFzQnl0ZUFycmF5IgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXNEb3VibGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuRG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXNGbG9hdCIKKyByZXR1cm49ImphdmEubGFuZy5GbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFzSW50ZWdlciIKKyByZXR1cm49ImphdmEubGFuZy5JbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXNMb25nIgorIHJldHVybj0iamF2YS5sYW5nLkxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBc1Nob3J0IgorIHJldHVybj0iamF2YS5sYW5nLlNob3J0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXNTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuQnl0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLkludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLkxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLkZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5Eb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLkJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dEFsbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im90aGVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFZhbHVlcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXROdWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlU2V0IgorIHJldHVybj0iamF2YS51dGlsLlNldCZsdDtqYXZhLnV0aWwuTWFwLkVudHJ5Jmx0O2phdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5PYmplY3QmZ3Q7Jmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyY2VsIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEFHIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O0NvbnRlbnRWYWx1ZXMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbnRleHQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29udGV4dCIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJiaW5kU2VydmljZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VydmljZSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29ubiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LlNlcnZpY2VDb25uZWN0aW9uIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrQ2FsbGluZ09yU2VsZlBlcm1pc3Npb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGVybWlzc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGVja0NhbGxpbmdPclNlbGZVcmlQZXJtaXNzaW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlRmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGVja0NhbGxpbmdQZXJtaXNzaW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pc3Npb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tDYWxsaW5nVXJpUGVybWlzc2lvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZUZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tQZXJtaXNzaW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pc3Npb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1aWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGVja1VyaVBlcm1pc3Npb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1aWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZUZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tVcmlQZXJtaXNzaW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWFkUGVybWlzc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id3JpdGVQZXJtaXNzaW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idWlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGVGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyV2FsbHBhcGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVBhY2thZ2VDb250ZXh0IgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2FnZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkYXRhYmFzZUxpc3QiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWxldGVEYXRhYmFzZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWxldGVGaWxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZm9yY2VDYWxsaW5nT3JTZWxmUGVybWlzc2lvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGVybWlzc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmZvcmNlQ2FsbGluZ09yU2VsZlVyaVBlcm1pc3Npb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlRmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmZvcmNlQ2FsbGluZ1Blcm1pc3Npb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pc3Npb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5mb3JjZUNhbGxpbmdVcmlQZXJtaXNzaW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZUZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5mb3JjZVBlcm1pc3Npb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pc3Npb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1aWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmZvcmNlVXJpUGVybWlzc2lvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1aWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZUZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5mb3JjZVVyaVBlcm1pc3Npb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWFkUGVybWlzc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id3JpdGVQZXJtaXNzaW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idWlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGVGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbGVMaXN0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXBwbGljYXRpb25Db250ZXh0IgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBcHBsaWNhdGlvbkluZm8iCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucG0uQXBwbGljYXRpb25JbmZvIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXNzZXRzIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnJlcy5Bc3NldE1hbmFnZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDYWNoZURpciIKKyByZXR1cm49ImphdmEuaW8uRmlsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENsYXNzTG9hZGVyIgorIHJldHVybj0iamF2YS5sYW5nLkNsYXNzTG9hZGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudFJlc29sdmVyIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERhdGFiYXNlUGF0aCIKKyByZXR1cm49ImphdmEuaW8uRmlsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERpciIKKyByZXR1cm49ImphdmEuaW8uRmlsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RXh0ZXJuYWxDYWNoZURpciIKKyByZXR1cm49ImphdmEuaW8uRmlsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEV4dGVybmFsRmlsZXNEaXIiCisgcmV0dXJuPSJqYXZhLmlvLkZpbGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGaWxlU3RyZWFtUGF0aCIKKyByZXR1cm49ImphdmEuaW8uRmlsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpbGVzRGlyIgorIHJldHVybj0iamF2YS5pby5GaWxlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWFpbkxvb3BlciIKKyByZXR1cm49ImFuZHJvaWQub3MuTG9vcGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFja2FnZUNvZGVQYXRoIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhY2thZ2VNYW5hZ2VyIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFja2FnZU5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFja2FnZVJlc291cmNlUGF0aCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXNvdXJjZXMiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNoYXJlZFByZWZlcmVuY2VzIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LlNoYXJlZFByZWZlcmVuY2VzIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXRBcmdzIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Li4uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN5c3RlbVNlcnZpY2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGV4dCIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaGVtZSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzLlRoZW1lIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V2FsbHBhcGVyIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V2FsbHBhcGVyRGVzaXJlZE1pbmltdW1IZWlnaHQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdhbGxwYXBlckRlc2lyZWRNaW5pbXVtV2lkdGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdyYW50VXJpUGVybWlzc2lvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idG9QYWNrYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZUZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNSZXN0cmljdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvYnRhaW5TdHlsZWRBdHRyaWJ1dGVzIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnJlcy5UeXBlZEFycmF5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvYnRhaW5TdHlsZWRBdHRyaWJ1dGVzIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnJlcy5UeXBlZEFycmF5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc2lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvYnRhaW5TdHlsZWRBdHRyaWJ1dGVzIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnJlcy5UeXBlZEFycmF5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNldCIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9idGFpblN0eWxlZEF0dHJpYnV0ZXMiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucmVzLlR5cGVkQXJyYXkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2V0IiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlQXR0ciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZTdHlsZVJlcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wZW5GaWxlSW5wdXQiCisgcmV0dXJuPSJqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJGaWxlTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wZW5GaWxlT3V0cHV0IgorIHJldHVybj0iamF2YS5pby5GaWxlT3V0cHV0U3RyZWFtIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRmlsZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuT3JDcmVhdGVEYXRhYmFzZSIKKyByZXR1cm49ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZURhdGFiYXNlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFjdG9yeSIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlRGF0YWJhc2UuQ3Vyc29yRmFjdG9yeSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwZWVrV2FsbHBhcGVyIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVnaXN0ZXJSZWNlaXZlciIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVjZWl2ZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Ccm9hZGNhc3RSZWNlaXZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsdGVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50RmlsdGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlZ2lzdGVyUmVjZWl2ZXIiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlY2VpdmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQnJvYWRjYXN0UmVjZWl2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbHRlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudEZpbHRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnJvYWRjYXN0UGVybWlzc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NoZWR1bGVyIiB0eXBlPSJhbmRyb2lkLm9zLkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlU3RpY2t5QnJvYWRjYXN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmV2b2tlVXJpUGVybWlzc2lvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGVGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmRCcm9hZGNhc3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kQnJvYWRjYXN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlY2VpdmVyUGVybWlzc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kT3JkZXJlZEJyb2FkY2FzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWNlaXZlclBlcm1pc3Npb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VuZE9yZGVyZWRCcm9hZGNhc3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVjZWl2ZXJQZXJtaXNzaW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRSZWNlaXZlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkJyb2FkY2FzdFJlY2VpdmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY2hlZHVsZXIiIHR5cGU9ImFuZHJvaWQub3MuSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5pdGlhbENvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5pdGlhbERhdGEiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluaXRpYWxFeHRyYXMiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmRTdGlja3lCcm9hZGNhc3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kU3RpY2t5T3JkZXJlZEJyb2FkY2FzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRSZWNlaXZlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkJyb2FkY2FzdFJlY2VpdmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY2hlZHVsZXIiIHR5cGU9ImFuZHJvaWQub3MuSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5pdGlhbENvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5pdGlhbERhdGEiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluaXRpYWxFeHRyYXMiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRoZW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFdhbGxwYXBlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiaXRtYXAiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRXYWxscGFwZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRBY3Rpdml0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0SW5zdHJ1bWVudGF0aW9uIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbGFzc05hbWUiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm9maWxlRmlsZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJndW1lbnRzIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydEludGVudFNlbmRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50U2VuZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWxsSW5JbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzTWFzayIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFnc1ZhbHVlcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHRyYUZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVudFNlbmRlci5TZW5kSW50ZW50RXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50U2VuZGVyLlNlbmRJbnRlbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRTZXJ2aWNlIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VydmljZSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdG9wU2VydmljZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VydmljZSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bmJpbmRTZXJ2aWNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb25uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuU2VydmljZUNvbm5lY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5yZWdpc3RlclJlY2VpdmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWNlaXZlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkJyb2FkY2FzdFJlY2VpdmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQUNDRVNTSUJJTElUWV9TRVJWSUNFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FjY2Vzc2liaWxpdHkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNDT1VOVF9TRVJWSUNFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FjY291bnQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSVZJVFlfU0VSVklDRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthY3Rpdml0eSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBTEFSTV9TRVJWSUNFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FsYXJtJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFVRElPX1NFUlZJQ0UiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YXVkaW8mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQklORF9BVVRPX0NSRUFURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQklORF9ERUJVR19VTkJJTkQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJJTkRfTk9UX0ZPUkVHUk9VTkQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNMSVBCT0FSRF9TRVJWSUNFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2NsaXBib2FyZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05ORUNUSVZJVFlfU0VSVklDRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtjb25uZWN0aXZpdHkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVYVF9JR05PUkVfU0VDVVJJVFkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTlRFWFRfSU5DTFVERV9DT0RFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URVhUX1JFU1RSSUNURUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFVklDRV9QT0xJQ1lfU0VSVklDRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkZXZpY2VfcG9saWN5JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRST1BCT1hfU0VSVklDRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkcm9wYm94JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklOUFVUX01FVEhPRF9TRVJWSUNFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2lucHV0X21ldGhvZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlHVUFSRF9TRVJWSUNFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2tleWd1YXJkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxBWU9VVF9JTkZMQVRFUl9TRVJWSUNFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2xheW91dF9pbmZsYXRlciZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMT0NBVElPTl9TRVJWSUNFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2xvY2F0aW9uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1PREVfQVBQRU5EIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI3NjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTU9ERV9QUklWQVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNT0RFX1dPUkxEX1JFQURBQkxFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNT0RFX1dPUkxEX1dSSVRFQUJMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTk9USUZJQ0FUSU9OX1NFUlZJQ0UiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bm90aWZpY2F0aW9uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBPV0VSX1NFUlZJQ0UiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cG93ZXImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VBUkNIX1NFUlZJQ0UiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c2VhcmNoJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFTlNPUl9TRVJWSUNFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3NlbnNvciZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJURUxFUEhPTllfU0VSVklDRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtwaG9uZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVSV9NT0RFX1NFUlZJQ0UiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dWltb2RlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlZJQlJBVE9SX1NFUlZJQ0UiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dmlicmF0b3ImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0FMTFBBUEVSX1NFUlZJQ0UiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7d2FsbHBhcGVyJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRklfU0VSVklDRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt3aWZpJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJTkRPV19TRVJWSUNFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dpbmRvdyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29udGV4dFdyYXBwZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb250ZXh0V3JhcHBlciIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dFdyYXBwZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiYXNlIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImF0dGFjaEJhc2VDb250ZXh0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYmFzZSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYmluZFNlcnZpY2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZXJ2aWNlIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb25uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuU2VydmljZUNvbm5lY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tDYWxsaW5nT3JTZWxmUGVybWlzc2lvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGVybWlzc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGVja0NhbGxpbmdPclNlbGZVcmlQZXJtaXNzaW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZUZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tDYWxsaW5nUGVybWlzc2lvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGVybWlzc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGVja0NhbGxpbmdVcmlQZXJtaXNzaW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZUZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tQZXJtaXNzaW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwZXJtaXNzaW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idWlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tVcmlQZXJtaXNzaW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlRmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGVja1VyaVBlcm1pc3Npb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWFkUGVybWlzc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id3JpdGVQZXJtaXNzaW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idWlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGVGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyV2FsbHBhcGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlUGFja2FnZUNvbnRleHQiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2FnZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkYXRhYmFzZUxpc3QiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVsZXRlRGF0YWJhc2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlbGV0ZUZpbGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZm9yY2VDYWxsaW5nT3JTZWxmUGVybWlzc2lvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pc3Npb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5mb3JjZUNhbGxpbmdPclNlbGZVcmlQZXJtaXNzaW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGVGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZm9yY2VDYWxsaW5nUGVybWlzc2lvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pc3Npb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5mb3JjZUNhbGxpbmdVcmlQZXJtaXNzaW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGVGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZm9yY2VQZXJtaXNzaW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGVybWlzc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZm9yY2VVcmlQZXJtaXNzaW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1aWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZUZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5mb3JjZVVyaVBlcm1pc3Npb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVhZFBlcm1pc3Npb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndyaXRlUGVybWlzc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlRmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaWxlTGlzdCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBcHBsaWNhdGlvbkNvbnRleHQiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBcHBsaWNhdGlvbkluZm8iCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucG0uQXBwbGljYXRpb25JbmZvIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFzc2V0cyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5yZXMuQXNzZXRNYW5hZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJhc2VDb250ZXh0IgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2FjaGVEaXIiCisgcmV0dXJuPSJqYXZhLmlvLkZpbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2xhc3NMb2FkZXIiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2xhc3NMb2FkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudFJlc29sdmVyIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREYXRhYmFzZVBhdGgiCisgcmV0dXJuPSJqYXZhLmlvLkZpbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGlyIgorIHJldHVybj0iamF2YS5pby5GaWxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RXh0ZXJuYWxDYWNoZURpciIKKyByZXR1cm49ImphdmEuaW8uRmlsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeHRlcm5hbEZpbGVzRGlyIgorIHJldHVybj0iamF2YS5pby5GaWxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpbGVTdHJlYW1QYXRoIgorIHJldHVybj0iamF2YS5pby5GaWxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpbGVzRGlyIgorIHJldHVybj0iamF2YS5pby5GaWxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1haW5Mb29wZXIiCisgcmV0dXJuPSJhbmRyb2lkLm9zLkxvb3BlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYWNrYWdlQ29kZVBhdGgiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhY2thZ2VNYW5hZ2VyIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhY2thZ2VOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYWNrYWdlUmVzb3VyY2VQYXRoIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXNvdXJjZXMiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaGFyZWRQcmVmZXJlbmNlcyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5TaGFyZWRQcmVmZXJlbmNlcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN5c3RlbVNlcnZpY2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRoZW1lIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMuVGhlbWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V2FsbHBhcGVyIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRXYWxscGFwZXJEZXNpcmVkTWluaW11bUhlaWdodCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRXYWxscGFwZXJEZXNpcmVkTWluaW11bVdpZHRoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdyYW50VXJpUGVybWlzc2lvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRvUGFja2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGVGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wZW5GaWxlSW5wdXQiCisgcmV0dXJuPSJqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRmlsZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuRmlsZU91dHB1dCIKKyByZXR1cm49ImphdmEuaW8uRmlsZU91dHB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJGaWxlTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wZW5PckNyZWF0ZURhdGFiYXNlIgorIHJldHVybj0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlRGF0YWJhc2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFjdG9yeSIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlRGF0YWJhc2UuQ3Vyc29yRmFjdG9yeSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwZWVrV2FsbHBhcGVyIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3RlclJlY2VpdmVyIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkludGVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVjZWl2ZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Ccm9hZGNhc3RSZWNlaXZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsdGVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50RmlsdGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlZ2lzdGVyUmVjZWl2ZXIiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWNlaXZlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkJyb2FkY2FzdFJlY2VpdmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWx0ZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnRGaWx0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJyb2FkY2FzdFBlcm1pc3Npb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNjaGVkdWxlciIgdHlwZT0iYW5kcm9pZC5vcy5IYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZVN0aWNreUJyb2FkY2FzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXZva2VVcmlQZXJtaXNzaW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGVGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmRCcm9hZGNhc3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VuZEJyb2FkY2FzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVjZWl2ZXJQZXJtaXNzaW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmRPcmRlcmVkQnJvYWRjYXN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWNlaXZlclBlcm1pc3Npb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VuZE9yZGVyZWRCcm9hZGNhc3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlY2VpdmVyUGVybWlzc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0UmVjZWl2ZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Ccm9hZGNhc3RSZWNlaXZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NoZWR1bGVyIiB0eXBlPSJhbmRyb2lkLm9zLkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluaXRpYWxDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluaXRpYWxEYXRhIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbml0aWFsRXh0cmFzIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kU3RpY2t5QnJvYWRjYXN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmRTdGlja3lPcmRlcmVkQnJvYWRjYXN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRSZWNlaXZlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkJyb2FkY2FzdFJlY2VpdmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY2hlZHVsZXIiIHR5cGU9ImFuZHJvaWQub3MuSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5pdGlhbENvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5pdGlhbERhdGEiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluaXRpYWxFeHRyYXMiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRoZW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRXYWxscGFwZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiaXRtYXAiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRXYWxscGFwZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydEFjdGl2aXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0SW5zdHJ1bWVudGF0aW9uIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2xhc3NOYW1lIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvZmlsZUZpbGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZ3VtZW50cyIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRJbnRlbnRTZW5kZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnRTZW5kZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGxJbkludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3NNYXNrIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzVmFsdWVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4dHJhRmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZW50U2VuZGVyLlNlbmRJbnRlbnRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnRTZW5kZXIuU2VuZEludGVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydFNlcnZpY2UiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VydmljZSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdG9wU2VydmljZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5iaW5kU2VydmljZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbm4iIHR5cGU9ImFuZHJvaWQuY29udGVudC5TZXJ2aWNlQ29ubmVjdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bnJlZ2lzdGVyUmVjZWl2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWNlaXZlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkJyb2FkY2FzdFJlY2VpdmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJEaWFsb2dJbnRlcmZhY2UiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJjYW5jZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzbWlzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkJVVFRPTjEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJVVFRPTjIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJVVFRPTjMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJVVFRPTl9ORUdBVElWRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0yIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJVVFRPTl9ORVVUUkFMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQlVUVE9OX1BPU0lUSVZFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iRGlhbG9nSW50ZXJmYWNlLk9uQ2FuY2VsTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uQ2FuY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaWFsb2ciIHR5cGU9ImFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJEaWFsb2dJbnRlcmZhY2UuT25DbGlja0xpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvbkNsaWNrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaWFsb2ciIHR5cGU9ImFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoaWNoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJEaWFsb2dJbnRlcmZhY2UuT25EaXNtaXNzTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uRGlzbWlzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlhbG9nIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iRGlhbG9nSW50ZXJmYWNlLk9uS2V5TGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uS2V5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaWFsb2ciIHR5cGU9ImFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkRpYWxvZ0ludGVyZmFjZS5Pbk11bHRpQ2hvaWNlQ2xpY2tMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25DbGljayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlhbG9nIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aGljaCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpc0NoZWNrZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJEaWFsb2dJbnRlcmZhY2UuT25TaG93TGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uU2hvdyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlhbG9nIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJFbnRpdHkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRW50aXR5IgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5FbnRpdHkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkU3ViVmFsdWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWVzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFZhbHVlcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbnRpdHlWYWx1ZXMiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFZhbHVlcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdWJWYWx1ZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuQXJyYXlMaXN0Jmx0O2FuZHJvaWQuY29udGVudC5FbnRpdHkuTmFtZWRDb250ZW50VmFsdWVzJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJFbnRpdHkuTmFtZWRDb250ZW50VmFsdWVzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkVudGl0eS5OYW1lZENvbnRlbnRWYWx1ZXMiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LkVudGl0eS5OYW1lZENvbnRlbnRWYWx1ZXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWVzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFZhbHVlcyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0idXJpIgorIHR5cGU9ImFuZHJvaWQubmV0LlVyaSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idmFsdWVzIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkVudGl0eUl0ZXJhdG9yIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC5JdGVyYXRvciI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImNsb3NlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJJbnRlbnQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkludGVudCIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW50ZW50IgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnRlbnQiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW50ZW50IgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnRlbnQiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VDb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2xzIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkludGVudCIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2FnZUNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjbHMiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZENhdGVnb3J5IgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkludGVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F0ZWdvcnkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkRmxhZ3MiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9uZUZpbHRlciIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlQ2hvb3NlciIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aXRsZSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbGxJbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3RoZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmlsdGVyRXF1YWxzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3RoZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmlsdGVySGFzaENvZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWN0aW9uIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCb29sZWFuQXJyYXlFeHRyYSIKKyByZXR1cm49ImJvb2xlYW5bXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCb29sZWFuRXh0cmEiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZhdWx0VmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QnVuZGxlRXh0cmEiCisgcmV0dXJuPSJhbmRyb2lkLm9zLkJ1bmRsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCeXRlQXJyYXlFeHRyYSIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCeXRlRXh0cmEiCisgcmV0dXJuPSJieXRlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZhdWx0VmFsdWUiIHR5cGU9ImJ5dGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2F0ZWdvcmllcyIKKyByZXR1cm49ImphdmEudXRpbC5TZXQmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hhckFycmF5RXh0cmEiCisgcmV0dXJuPSJjaGFyW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hhckV4dHJhIgorIHJldHVybj0iY2hhciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoYXJTZXF1ZW5jZUFycmF5RXh0cmEiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hhclNlcXVlbmNlQXJyYXlMaXN0RXh0cmEiCisgcmV0dXJuPSJqYXZhLnV0aWwuQXJyYXlMaXN0Jmx0O2phdmEubGFuZy5DaGFyU2VxdWVuY2UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoYXJTZXF1ZW5jZUV4dHJhIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb21wb25lbnQiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREYXRhIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJpIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERhdGFTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERvdWJsZUFycmF5RXh0cmEiCisgcmV0dXJuPSJkb3VibGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREb3VibGVFeHRyYSIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RXh0cmFzIgorIHJldHVybj0iYW5kcm9pZC5vcy5CdW5kbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmxhZ3MiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmxvYXRBcnJheUV4dHJhIgorIHJldHVybj0iZmxvYXRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGbG9hdEV4dHJhIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmF1bHRWYWx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW50QXJyYXlFeHRyYSIKKyByZXR1cm49ImludFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEludEV4dHJhIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZhdWx0VmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnRlZ2VyQXJyYXlMaXN0RXh0cmEiCisgcmV0dXJuPSJqYXZhLnV0aWwuQXJyYXlMaXN0Jmx0O2phdmEubGFuZy5JbnRlZ2VyJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnRlbnQiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJVUklTeW50YXhFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlVSSVN5bnRheEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnRlbnRPbGQiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iVVJJU3ludGF4RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5VUklTeW50YXhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9uZ0FycmF5RXh0cmEiCisgcmV0dXJuPSJsb25nW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9uZ0V4dHJhIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhY2thZ2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmNlbGFibGVBcnJheUV4dHJhIgorIHJldHVybj0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFyY2VsYWJsZUFycmF5TGlzdEV4dHJhIgorIHJldHVybj0iamF2YS51dGlsLkFycmF5TGlzdCZsdDtUJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJjZWxhYmxlRXh0cmEiCisgcmV0dXJuPSJUIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNjaGVtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2VyaWFsaXphYmxlRXh0cmEiCisgcmV0dXJuPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaG9ydEFycmF5RXh0cmEiCisgcmV0dXJuPSJzaG9ydFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNob3J0RXh0cmEiCisgcmV0dXJuPSJzaG9ydCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJzaG9ydCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTb3VyY2VCb3VuZHMiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RyaW5nQXJyYXlFeHRyYSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdHJpbmdBcnJheUxpc3RFeHRyYSIKKyByZXR1cm49ImphdmEudXRpbC5BcnJheUxpc3QmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RyaW5nRXh0cmEiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFR5cGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc0NhdGVnb3J5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F0ZWdvcnkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzRXh0cmEiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc0ZpbGVEZXNjcmlwdG9ycyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VJbnRlbnQiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc291cmNlcyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcnNlciIgdHlwZT0ib3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJYbWxQdWxsUGFyc2VyRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1scHVsbC52MS5YbWxQdWxsUGFyc2VyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlVXJpIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkludGVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlVSSVN5bnRheEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuVVJJU3ludGF4RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dENoYXJTZXF1ZW5jZUFycmF5TGlzdEV4dHJhIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkludGVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEudXRpbC5BcnJheUxpc3QmbHQ7amF2YS5sYW5nLkNoYXJTZXF1ZW5jZSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0RXh0cmEiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRFeHRyYSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJieXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dEV4dHJhIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkludGVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0RXh0cmEiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0ic2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0RXh0cmEiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dEV4dHJhIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkludGVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0RXh0cmEiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0RXh0cmEiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dEV4dHJhIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkludGVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0RXh0cmEiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRFeHRyYSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0RXh0cmEiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0RXh0cmEiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0RXh0cmEiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYm9vbGVhbltdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dEV4dHJhIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkludGVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRFeHRyYSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJzaG9ydFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dEV4dHJhIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkludGVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRFeHRyYSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRFeHRyYSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJsb25nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0RXh0cmEiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRFeHRyYSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJkb3VibGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRFeHRyYSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0RXh0cmEiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dEV4dHJhIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkludGVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dEV4dHJhcyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRFeHRyYXMiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleHRyYXMiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dEludGVnZXJBcnJheUxpc3RFeHRyYSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLnV0aWwuQXJyYXlMaXN0Jmx0O2phdmEubGFuZy5JbnRlZ2VyJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRQYXJjZWxhYmxlQXJyYXlMaXN0RXh0cmEiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS51dGlsLkFycmF5TGlzdCZsdDs/IGV4dGVuZHMgYW5kcm9pZC5vcy5QYXJjZWxhYmxlJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRTdHJpbmdBcnJheUxpc3RFeHRyYSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLnV0aWwuQXJyYXlMaXN0Jmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRGcm9tUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZUNhdGVnb3J5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F0ZWdvcnkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlRXh0cmEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcGxhY2VFeHRyYXMiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVwbGFjZUV4dHJhcyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4dHJhcyIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzb2x2ZUFjdGl2aXR5IgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBtIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzb2x2ZUFjdGl2aXR5SW5mbyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5wbS5BY3Rpdml0eUluZm8iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBtIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzb2x2ZVR5cGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNvbHZlVHlwZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc29sdmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc29sdmVUeXBlSWZOZWVkZWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvbHZlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBY3Rpb24iCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2xhc3MiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYWNrYWdlQ29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNscyIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0Oz8mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENsYXNzTmFtZSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VDb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2xhc3NOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENsYXNzTmFtZSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjbGFzc05hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29tcG9uZW50IgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkludGVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29tcG9uZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREYXRhIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkludGVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERhdGFBbmRUeXBlIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkludGVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEV4dHJhc0NsYXNzTG9hZGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9hZGVyIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NMb2FkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RmxhZ3MiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBhY2thZ2UiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYWNrYWdlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTb3VyY2VCb3VuZHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VHlwZSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9VUkkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9VcmkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0FJUlBMQU5FX01PREVfQ0hBTkdFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uQUlSUExBTkVfTU9ERSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fQUxMX0FQUFMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLkFMTF9BUFBTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9BTlNXRVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLkFOU1dFUiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fQVRUQUNIX0RBVEEiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLkFUVEFDSF9EQVRBJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9CQVRURVJZX0NIQU5HRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLkJBVFRFUllfQ0hBTkdFRCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fQkFUVEVSWV9MT1ciCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLkJBVFRFUllfTE9XJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9CQVRURVJZX09LQVkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLkJBVFRFUllfT0tBWSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fQk9PVF9DT01QTEVURUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLkJPT1RfQ09NUExFVEVEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9CVUdfUkVQT1JUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5CVUdfUkVQT1JUJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9DQUxMIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5DQUxMJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9DQUxMX0JVVFRPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uQ0FMTF9CVVRUT04mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0NBTUVSQV9CVVRUT04iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLkNBTUVSQV9CVVRUT04mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0NIT09TRVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLkNIT09TRVImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0NMT1NFX1NZU1RFTV9ESUFMT0dTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5DTE9TRV9TWVNURU1fRElBTE9HUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fQ09ORklHVVJBVElPTl9DSEFOR0VEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5DT05GSUdVUkFUSU9OX0NIQU5HRUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0NSRUFURV9TSE9SVENVVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uQ1JFQVRFX1NIT1JUQ1VUJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9EQVRFX0NIQU5HRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLkRBVEVfQ0hBTkdFRCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fREVGQVVMVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uVklFVyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fREVMRVRFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5ERUxFVEUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0RFVklDRV9TVE9SQUdFX0xPVyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uREVWSUNFX1NUT1JBR0VfTE9XJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9ERVZJQ0VfU1RPUkFHRV9PSyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uREVWSUNFX1NUT1JBR0VfT0smcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0RJQUwiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLkRJQUwmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0RPQ0tfRVZFTlQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLkRPQ0tfRVZFTlQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0VESVQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLkVESVQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0ZBQ1RPUllfVEVTVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uRkFDVE9SWV9URVNUJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9HRVRfQ09OVEVOVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uR0VUX0NPTlRFTlQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0dUQUxLX1NFUlZJQ0VfQ09OTkVDVEVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5HVEFMS19DT05ORUNURUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0dUQUxLX1NFUlZJQ0VfRElTQ09OTkVDVEVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5HVEFMS19ESVNDT05ORUNURUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0hFQURTRVRfUExVRyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uSEVBRFNFVF9QTFVHJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9JTlBVVF9NRVRIT0RfQ0hBTkdFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uSU5QVVRfTUVUSE9EX0NIQU5HRUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0lOU0VSVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uSU5TRVJUJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9JTlNFUlRfT1JfRURJVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uSU5TRVJUX09SX0VESVQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0xPQ0FMRV9DSEFOR0VEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5MT0NBTEVfQ0hBTkdFRCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fTUFJTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uTUFJTiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fTUFOQUdFX1BBQ0tBR0VfU1RPUkFHRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uTUFOQUdFX1BBQ0tBR0VfU1RPUkFHRSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fTUVESUFfQkFEX1JFTU9WQUwiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLk1FRElBX0JBRF9SRU1PVkFMJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9NRURJQV9CVVRUT04iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLk1FRElBX0JVVFRPTiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fTUVESUFfQ0hFQ0tJTkciCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLk1FRElBX0NIRUNLSU5HJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9NRURJQV9FSkVDVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uTUVESUFfRUpFQ1QmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX01FRElBX01PVU5URUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLk1FRElBX01PVU5URUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX01FRElBX05PRlMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLk1FRElBX05PRlMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX01FRElBX1JFTU9WRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLk1FRElBX1JFTU9WRUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX01FRElBX1NDQU5ORVJfRklOSVNIRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLk1FRElBX1NDQU5ORVJfRklOSVNIRUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX01FRElBX1NDQU5ORVJfU0NBTl9GSUxFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5NRURJQV9TQ0FOTkVSX1NDQU5fRklMRSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fTUVESUFfU0NBTk5FUl9TVEFSVEVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5NRURJQV9TQ0FOTkVSX1NUQVJURUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX01FRElBX1NIQVJFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uTUVESUFfU0hBUkVEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9NRURJQV9VTk1PVU5UQUJMRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uTUVESUFfVU5NT1VOVEFCTEUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX01FRElBX1VOTU9VTlRFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uTUVESUFfVU5NT1VOVEVEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9ORVdfT1VUR09JTkdfQ0FMTCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uTkVXX09VVEdPSU5HX0NBTEwmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1BBQ0tBR0VfQURERUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLlBBQ0tBR0VfQURERUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1BBQ0tBR0VfQ0hBTkdFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uUEFDS0FHRV9DSEFOR0VEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9QQUNLQUdFX0RBVEFfQ0xFQVJFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uUEFDS0FHRV9EQVRBX0NMRUFSRUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1BBQ0tBR0VfSU5TVEFMTCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uUEFDS0FHRV9JTlNUQUxMJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9QQUNLQUdFX1JFTU9WRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLlBBQ0tBR0VfUkVNT1ZFRCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fUEFDS0FHRV9SRVBMQUNFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uUEFDS0FHRV9SRVBMQUNFRCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fUEFDS0FHRV9SRVNUQVJURUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLlBBQ0tBR0VfUkVTVEFSVEVEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9QSUNLIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5QSUNLJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9QSUNLX0FDVElWSVRZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5QSUNLX0FDVElWSVRZJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9QT1dFUl9DT05ORUNURUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLkFDVElPTl9QT1dFUl9DT05ORUNURUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1BPV0VSX0RJU0NPTk5FQ1RFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uQUNUSU9OX1BPV0VSX0RJU0NPTk5FQ1RFRCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fUE9XRVJfVVNBR0VfU1VNTUFSWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uUE9XRVJfVVNBR0VfU1VNTUFSWSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fUFJPVklERVJfQ0hBTkdFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uUFJPVklERVJfQ0hBTkdFRCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fUkVCT09UIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5SRUJPT1QmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1JVTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uUlVOJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9TQ1JFRU5fT0ZGIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5TQ1JFRU5fT0ZGJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9TQ1JFRU5fT04iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLlNDUkVFTl9PTiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fU0VBUkNIIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5TRUFSQ0gmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1NFQVJDSF9MT05HX1BSRVNTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5TRUFSQ0hfTE9OR19QUkVTUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fU0VORCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uU0VORCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fU0VORFRPIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5TRU5EVE8mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1NFTkRfTVVMVElQTEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLlNFTkRfTVVMVElQTEUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1NFVF9XQUxMUEFQRVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLlNFVF9XQUxMUEFQRVImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1NIVVRET1dOIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5BQ1RJT05fU0hVVERPV04mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1NZTkMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLlNZTkMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1NZU1RFTV9UVVRPUklBTCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uU1lTVEVNX1RVVE9SSUFMJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9USU1FWk9ORV9DSEFOR0VEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5USU1FWk9ORV9DSEFOR0VEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9USU1FX0NIQU5HRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLlRJTUVfU0VUJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9USU1FX1RJQ0siCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLlRJTUVfVElDSyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fVUlEX1JFTU9WRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLlVJRF9SRU1PVkVEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9VTVNfQ09OTkVDVEVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5VTVNfQ09OTkVDVEVEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9VTVNfRElTQ09OTkVDVEVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5VTVNfRElTQ09OTkVDVEVEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9VU0VSX1BSRVNFTlQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLlVTRVJfUFJFU0VOVCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fVklFVyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uVklFVyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fVk9JQ0VfQ09NTUFORCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uVk9JQ0VfQ09NTUFORCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fV0FMTFBBUEVSX0NIQU5HRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLldBTExQQVBFUl9DSEFOR0VEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9XRUJfU0VBUkNIIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5XRUJfU0VBUkNIJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNBVEVHT1JZX0FMVEVSTkFUSVZFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmNhdGVnb3J5LkFMVEVSTkFUSVZFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNBVEVHT1JZX0JST1dTQUJMRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5jYXRlZ29yeS5CUk9XU0FCTEUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0FURUdPUllfQ0FSX0RPQ0siCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuY2F0ZWdvcnkuQ0FSX0RPQ0smcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0FURUdPUllfQ0FSX01PREUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuY2F0ZWdvcnkuQ0FSX01PREUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0FURUdPUllfREVGQVVMVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5jYXRlZ29yeS5ERUZBVUxUJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNBVEVHT1JZX0RFU0tfRE9DSyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5jYXRlZ29yeS5ERVNLX0RPQ0smcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0FURUdPUllfREVWRUxPUE1FTlRfUFJFRkVSRU5DRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5jYXRlZ29yeS5ERVZFTE9QTUVOVF9QUkVGRVJFTkNFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNBVEVHT1JZX0VNQkVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmNhdGVnb3J5LkVNQkVEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNBVEVHT1JZX0ZSQU1FV09SS19JTlNUUlVNRU5UQVRJT05fVEVTVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5jYXRlZ29yeS5GUkFNRVdPUktfSU5TVFJVTUVOVEFUSU9OX1RFU1QmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0FURUdPUllfSE9NRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5jYXRlZ29yeS5IT01FJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNBVEVHT1JZX0lORk8iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuY2F0ZWdvcnkuSU5GTyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDQVRFR09SWV9MQVVOQ0hFUiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5jYXRlZ29yeS5MQVVOQ0hFUiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDQVRFR09SWV9NT05LRVkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuY2F0ZWdvcnkuTU9OS0VZJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNBVEVHT1JZX09QRU5BQkxFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmNhdGVnb3J5Lk9QRU5BQkxFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNBVEVHT1JZX1BSRUZFUkVOQ0UiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuY2F0ZWdvcnkuUFJFRkVSRU5DRSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDQVRFR09SWV9TQU1QTEVfQ09ERSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5jYXRlZ29yeS5TQU1QTEVfQ09ERSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDQVRFR09SWV9TRUxFQ1RFRF9BTFRFUk5BVElWRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5jYXRlZ29yeS5TRUxFQ1RFRF9BTFRFUk5BVElWRSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDQVRFR09SWV9UQUIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuY2F0ZWdvcnkuVEFCJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNBVEVHT1JZX1RFU1QiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuY2F0ZWdvcnkuVEVTVCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDQVRFR09SWV9VTklUX1RFU1QiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuY2F0ZWdvcnkuVU5JVF9URVNUJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfQUxBUk1fQ09VTlQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuZXh0cmEuQUxBUk1fQ09VTlQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfQkNDIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmV4dHJhLkJDQyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9DQyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5leHRyYS5DQyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9DSEFOR0VEX0NPTVBPTkVOVF9OQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmV4dHJhLmNoYW5nZWRfY29tcG9uZW50X25hbWUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9DSEFOR0VEX0NPTVBPTkVOVF9OQU1FX0xJU1QiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuZXh0cmEuY2hhbmdlZF9jb21wb25lbnRfbmFtZV9saXN0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX0RBVEFfUkVNT1ZFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5leHRyYS5EQVRBX1JFTU9WRUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfRE9DS19TVEFURSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5leHRyYS5ET0NLX1NUQVRFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX0RPQ0tfU1RBVEVfQ0FSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9ET0NLX1NUQVRFX0RFU0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX0RPQ0tfU1RBVEVfVU5ET0NLRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX0RPTlRfS0lMTF9BUFAiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuZXh0cmEuRE9OVF9LSUxMX0FQUCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9FTUFJTCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5leHRyYS5FTUFJTCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9JTklUSUFMX0lOVEVOVFMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuZXh0cmEuSU5JVElBTF9JTlRFTlRTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX0lOVEVOVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5leHRyYS5JTlRFTlQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfS0VZX0VWRU5UIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmV4dHJhLktFWV9FVkVOVCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9QSE9ORV9OVU1CRVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuZXh0cmEuUEhPTkVfTlVNQkVSJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX1JFTU9URV9JTlRFTlRfVE9LRU4iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuZXh0cmEucmVtb3RlX2ludGVudF90b2tlbiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9SRVBMQUNJTkciCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuZXh0cmEuUkVQTEFDSU5HJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX1NIT1JUQ1VUX0lDT04iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuZXh0cmEuc2hvcnRjdXQuSUNPTiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9TSE9SVENVVF9JQ09OX1JFU09VUkNFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmV4dHJhLnNob3J0Y3V0LklDT05fUkVTT1VSQ0UmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfU0hPUlRDVVRfSU5URU5UIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmV4dHJhLnNob3J0Y3V0LklOVEVOVCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9TSE9SVENVVF9OQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmV4dHJhLnNob3J0Y3V0Lk5BTUUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfU1RSRUFNIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmV4dHJhLlNUUkVBTSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9TVUJKRUNUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmV4dHJhLlNVQkpFQ1QmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfVEVNUExBVEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuZXh0cmEuVEVNUExBVEUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfVEVYVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5leHRyYS5URVhUJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX1RJVExFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmV4dHJhLlRJVExFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX1VJRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5leHRyYS5VSUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRklMTF9JTl9BQ1RJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZJTExfSU5fQ0FURUdPUklFUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRklMTF9JTl9DT01QT05FTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZJTExfSU5fREFUQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRklMTF9JTl9QQUNLQUdFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRklMTF9JTl9TT1VSQ0VfQk9VTkRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19BQ1RJVklUWV9CUk9VR0hUX1RPX0ZST05UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDE5NDMwNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX0FDVElWSVRZX0NMRUFSX1RPUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjY3MTA4ODY0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfQUNUSVZJVFlfQ0xFQVJfV0hFTl9UQVNLX1JFU0VUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTI0Mjg4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfQUNUSVZJVFlfRVhDTFVERV9GUk9NX1JFQ0VOVFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4Mzg4NjA4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfQUNUSVZJVFlfRk9SV0FSRF9SRVNVTFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzU1NDQzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX0FDVElWSVRZX0xBVU5DSEVEX0ZST01fSElTVE9SWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwNDg1NzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19BQ1RJVklUWV9NVUxUSVBMRV9UQVNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTM0MjE3NzI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfQUNUSVZJVFlfTkVXX1RBU0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNjg0MzU0NTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19BQ1RJVklUWV9OT19BTklNQVRJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NTUzNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX0FDVElWSVRZX05PX0hJU1RPUlkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDczNzQxODI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfQUNUSVZJVFlfTk9fVVNFUl9BQ1RJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNjIxNDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19BQ1RJVklUWV9QUkVWSU9VU19JU19UT1AiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjc3NzIxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX0FDVElWSVRZX1JFT1JERVJfVE9fRlJPTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMzEwNzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19BQ1RJVklUWV9SRVNFVF9UQVNLX0lGX05FRURFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwOTcxNTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19BQ1RJVklUWV9TSU5HTEVfVE9QIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTM2ODcwOTEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfREVCVUdfTE9HX1JFU09MVVRJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfRlJPTV9CQUNLR1JPVU5EIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX0dSQU5UX1JFQURfVVJJX1BFUk1JU1NJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfR1JBTlRfV1JJVEVfVVJJX1BFUk1JU1NJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfUkVDRUlWRVJfUkVHSVNURVJFRF9PTkxZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTA3Mzc0MTgyNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX1JFQ0VJVkVSX1JFUExBQ0VfUEVORElORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUzNjg3MDkxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNRVRBREFUQV9ET0NLX0hPTUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5kb2NrX2hvbWUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVVJJX0lOVEVOVF9TQ0hFTUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbnRlbnQuRmlsdGVyQ29tcGFyaXNvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkludGVudC5GaWx0ZXJDb21wYXJpc29uIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQuRmlsdGVyQ29tcGFyaXNvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEludGVudCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW50ZW50LlNob3J0Y3V0SWNvblJlc291cmNlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnRlbnQuU2hvcnRjdXRJY29uUmVzb3VyY2UiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudC5TaG9ydGN1dEljb25SZXNvdXJjZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZyb21Db250ZXh0IgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkludGVudC5TaG9ydGN1dEljb25SZXNvdXJjZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzb3VyY2VJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icGFja2FnZU5hbWUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InJlc291cmNlTmFtZSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkludGVudEZpbHRlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkludGVudEZpbHRlciIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50RmlsdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW50ZW50RmlsdGVyIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnRGaWx0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkludGVudEZpbHRlciIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50RmlsdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhVHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZW50RmlsdGVyLk1hbGZvcm1lZE1pbWVUeXBlRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50RmlsdGVyLk1hbGZvcm1lZE1pbWVUeXBlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnRlbnRGaWx0ZXIiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudEZpbHRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im8iIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnRGaWx0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhY3Rpb25zSXRlcmF0b3IiCisgcmV0dXJuPSJqYXZhLnV0aWwuSXRlcmF0b3ImbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRBY3Rpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRDYXRlZ29yeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F0ZWdvcnkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkRGF0YUF1dGhvcml0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGREYXRhUGF0aCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZERhdGFTY2hlbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNjaGVtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGREYXRhVHlwZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZW50RmlsdGVyLk1hbGZvcm1lZE1pbWVUeXBlRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50RmlsdGVyLk1hbGZvcm1lZE1pbWVUeXBlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImF1dGhvcml0aWVzSXRlcmF0b3IiCisgcmV0dXJuPSJqYXZhLnV0aWwuSXRlcmF0b3ImbHQ7YW5kcm9pZC5jb250ZW50LkludGVudEZpbHRlci5BdXRob3JpdHlFbnRyeSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYXRlZ29yaWVzSXRlcmF0b3IiCisgcmV0dXJuPSJqYXZhLnV0aWwuSXRlcmF0b3ImbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb3VudEFjdGlvbnMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb3VudENhdGVnb3JpZXMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb3VudERhdGFBdXRob3JpdGllcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvdW50RGF0YVBhdGhzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY291bnREYXRhU2NoZW1lcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvdW50RGF0YVR5cGVzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkludGVudEZpbHRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGFUeXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkdW1wIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHUiIHR5cGU9ImFuZHJvaWQudXRpbC5QcmludGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmaXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWN0aW9uIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENhdGVnb3J5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERhdGFBdXRob3JpdHkiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50RmlsdGVyLkF1dGhvcml0eUVudHJ5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGF0YVBhdGgiCisgcmV0dXJuPSJhbmRyb2lkLm9zLlBhdHRlcm5NYXRjaGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGF0YVNjaGVtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREYXRhVHlwZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcmlvcml0eSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc0FjdGlvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc0NhdGVnb3J5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXRlZ29yeSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNEYXRhQXV0aG9yaXR5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzRGF0YVBhdGgiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzRGF0YVNjaGVtZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NoZW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc0RhdGFUeXBlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1hdGNoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc29sdmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc29sdmUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvZ1RhZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYXRjaCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNjaGVtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYXRlZ29yaWVzIiB0eXBlPSJqYXZhLnV0aWwuU2V0Jmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2dUYWciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWF0Y2hBY3Rpb24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYXRjaENhdGVnb3JpZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdGVnb3JpZXMiIHR5cGU9ImphdmEudXRpbC5TZXQmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWF0Y2hEYXRhIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNjaGVtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1hdGNoRGF0YUF1dGhvcml0eSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGF0aHNJdGVyYXRvciIKKyByZXR1cm49ImphdmEudXRpbC5JdGVyYXRvciZsdDthbmRyb2lkLm9zLlBhdHRlcm5NYXRjaGVyJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRGcm9tWG1sIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyc2VyIiB0eXBlPSJvcmcueG1scHVsbC52MS5YbWxQdWxsUGFyc2VyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzY2hlbWVzSXRlcmF0b3IiCisgcmV0dXJuPSJqYXZhLnV0aWwuSXRlcmF0b3ImbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQcmlvcml0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJpb3JpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0eXBlc0l0ZXJhdG9yIgorIHJldHVybj0iamF2YS51dGlsLkl0ZXJhdG9yJmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1htbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlcmlhbGl6ZXIiIHR5cGU9Im9yZy54bWxwdWxsLnYxLlhtbFNlcmlhbGl6ZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNQVRDSF9BREpVU1RNRU5UX01BU0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NTUzNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNQVRDSF9BREpVU1RNRU5UX05PUk1BTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyNzY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1BVENIX0NBVEVHT1JZX0VNUFRZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTA0ODU3NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNQVRDSF9DQVRFR09SWV9IT1NUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzE0NTcyOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNQVRDSF9DQVRFR09SWV9NQVNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjY4MzY5OTIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1BVENIX0NBVEVHT1JZX1BBVEgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MjQyODgwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1BVENIX0NBVEVHT1JZX1BPUlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MTk0MzA0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1BVENIX0NBVEVHT1JZX1NDSEVNRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwOTcxNTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUFUQ0hfQ0FURUdPUllfVFlQRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjYyOTE0NTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTk9fTUFUQ0hfQUNUSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTk9fTUFUQ0hfQ0FURUdPUlkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOT19NQVRDSF9EQVRBIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTk9fTUFUQ0hfVFlQRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNZU1RFTV9ISUdIX1BSSU9SSVRZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTWVNURU1fTE9XX1BSSU9SSVRZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEwMDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkludGVudEZpbHRlci5BdXRob3JpdHlFbnRyeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkludGVudEZpbHRlci5BdXRob3JpdHlFbnRyeSIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50RmlsdGVyLkF1dGhvcml0eUVudHJ5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEhvc3QiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBvcnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWF0Y2giCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbnRlbnRGaWx0ZXIuTWFsZm9ybWVkTWltZVR5cGVFeGNlcHRpb24iCisgZXh0ZW5kcz0iYW5kcm9pZC51dGlsLkFuZHJvaWRFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkludGVudEZpbHRlci5NYWxmb3JtZWRNaW1lVHlwZUV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50RmlsdGVyLk1hbGZvcm1lZE1pbWVUeXBlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW50ZW50RmlsdGVyLk1hbGZvcm1lZE1pbWVUeXBlRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnRGaWx0ZXIuTWFsZm9ybWVkTWltZVR5cGVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW50ZW50U2VuZGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZEludGVudFNlbmRlck9yTnVsbEZyb21QYXJjZWwiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50U2VuZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kSW50ZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvbkZpbmlzaGVkIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50U2VuZGVyLk9uRmluaXNoZWQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhhbmRsZXIiIHR5cGU9ImFuZHJvaWQub3MuSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZW50U2VuZGVyLlNlbmRJbnRlbnRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnRTZW5kZXIuU2VuZEludGVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUludGVudFNlbmRlck9yTnVsbFRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZW5kZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnRTZW5kZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im91dCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iSW50ZW50U2VuZGVyLk9uRmluaXNoZWQiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uU2VuZEZpbmlzaGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJJbnRlbnRTZW5kZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnRTZW5kZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHREYXRhIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRFeHRyYXMiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJJbnRlbnRTZW5kZXIuU2VuZEludGVudEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJhbmRyb2lkLnV0aWwuQW5kcm9pZEV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW50ZW50U2VuZGVyLlNlbmRJbnRlbnRFeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudFNlbmRlci5TZW5kSW50ZW50RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW50ZW50U2VuZGVyLlNlbmRJbnRlbnRFeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudFNlbmRlci5TZW5kSW50ZW50RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW50ZW50U2VuZGVyLlNlbmRJbnRlbnRFeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudFNlbmRlci5TZW5kSW50ZW50RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5FeGNlcHRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNdXRhYmxlQ29udGV4dFdyYXBwZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC5jb250ZW50LkNvbnRleHRXcmFwcGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTXV0YWJsZUNvbnRleHRXcmFwcGVyIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5NdXRhYmxlQ29udGV4dFdyYXBwZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiYXNlIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InNldEJhc2VDb250ZXh0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYmFzZSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iT3BlcmF0aW9uQXBwbGljYXRpb25FeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLkV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik9wZXJhdGlvbkFwcGxpY2F0aW9uRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5PcGVyYXRpb25BcHBsaWNhdGlvbkV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik9wZXJhdGlvbkFwcGxpY2F0aW9uRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5PcGVyYXRpb25BcHBsaWNhdGlvbkV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik9wZXJhdGlvbkFwcGxpY2F0aW9uRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5PcGVyYXRpb25BcHBsaWNhdGlvbkV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJPcGVyYXRpb25BcHBsaWNhdGlvbkV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuT3BlcmF0aW9uQXBwbGljYXRpb25FeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iT3BlcmF0aW9uQXBwbGljYXRpb25FeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC5jb250ZW50Lk9wZXJhdGlvbkFwcGxpY2F0aW9uRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibnVtU3VjY2Vzc2Z1bFlpZWxkUG9pbnRzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik9wZXJhdGlvbkFwcGxpY2F0aW9uRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5PcGVyYXRpb25BcHBsaWNhdGlvbkV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im51bVN1Y2Nlc3NmdWxZaWVsZFBvaW50cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0TnVtU3VjY2Vzc2Z1bFlpZWxkUG9pbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBlcmlvZGljU3luYyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBlcmlvZGljU3luYyIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuUGVyaW9kaWNTeW5jIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjb3VudCIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdXRob3JpdHkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4dHJhcyIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBlcmlvZCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhY2NvdW50IgorIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYXV0aG9yaXR5IgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImV4dHJhcyIKKyB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icGVyaW9kIgorIHR5cGU9ImxvbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSZWNlaXZlckNhbGxOb3RBbGxvd2VkRXhjZXB0aW9uIgorIGV4dGVuZHM9ImFuZHJvaWQudXRpbC5BbmRyb2lkUnVudGltZUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlY2VpdmVyQ2FsbE5vdEFsbG93ZWRFeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LlJlY2VpdmVyQ2FsbE5vdEFsbG93ZWRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTZWFyY2hSZWNlbnRTdWdnZXN0aW9uc1Byb3ZpZGVyIgorIGV4dGVuZHM9ImFuZHJvaWQuY29udGVudC5Db250ZW50UHJvdmlkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTZWFyY2hSZWNlbnRTdWdnZXN0aW9uc1Byb3ZpZGVyIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5TZWFyY2hSZWNlbnRTdWdnZXN0aW9uc1Byb3ZpZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlbGV0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0aW9uQXJncyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFR5cGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnNlcnQiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ3JlYXRlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJxdWVyeSIKKyByZXR1cm49ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvamVjdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGlvbkFyZ3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic29ydE9yZGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldHVwU3VnZ2VzdGlvbnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJhdXRob3JpdHkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGlvbkFyZ3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkRBVEFCQVNFX01PREVfMkxJTkVTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVRBQkFTRV9NT0RFX1FVRVJJRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iU2VydmljZUNvbm5lY3Rpb24iCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvblNlcnZpY2VDb25uZWN0ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZXJ2aWNlIiB0eXBlPSJhbmRyb2lkLm9zLklCaW5kZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TZXJ2aWNlRGlzY29ubmVjdGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlNoYXJlZFByZWZlcmVuY2VzIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY29udGFpbnMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlZGl0IgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LlNoYXJlZFByZWZlcmVuY2VzLkVkaXRvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFsbCIKKyByZXR1cm49ImphdmEudXRpbC5NYXAmbHQ7amF2YS5sYW5nLlN0cmluZywgPyZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCb29sZWFuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlZhbHVlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZsb2F0IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZWYWx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmVmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb25nIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlZhbHVlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZWYWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3Rlck9uU2hhcmVkUHJlZmVyZW5jZUNoYW5nZUxpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LlNoYXJlZFByZWZlcmVuY2VzLk9uU2hhcmVkUHJlZmVyZW5jZUNoYW5nZUxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVucmVnaXN0ZXJPblNoYXJlZFByZWZlcmVuY2VDaGFuZ2VMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5TaGFyZWRQcmVmZXJlbmNlcy5PblNoYXJlZFByZWZlcmVuY2VDaGFuZ2VMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlNoYXJlZFByZWZlcmVuY2VzLkVkaXRvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY2xlYXIiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuU2hhcmVkUHJlZmVyZW5jZXMuRWRpdG9yIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tbWl0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dEJvb2xlYW4iCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuU2hhcmVkUHJlZmVyZW5jZXMuRWRpdG9yIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0RmxvYXQiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuU2hhcmVkUHJlZmVyZW5jZXMuRWRpdG9yIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dEludCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5TaGFyZWRQcmVmZXJlbmNlcy5FZGl0b3IiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dExvbmciCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuU2hhcmVkUHJlZmVyZW5jZXMuRWRpdG9yIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0U3RyaW5nIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LlNoYXJlZFByZWZlcmVuY2VzLkVkaXRvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5TaGFyZWRQcmVmZXJlbmNlcy5FZGl0b3IiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iU2hhcmVkUHJlZmVyZW5jZXMuT25TaGFyZWRQcmVmZXJlbmNlQ2hhbmdlTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uU2hhcmVkUHJlZmVyZW5jZUNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNoYXJlZFByZWZlcmVuY2VzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuU2hhcmVkUHJlZmVyZW5jZXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iU3luY0FkYXB0ZXJUeXBlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3luY0FkYXB0ZXJUeXBlIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5TeW5jQWRhcHRlclR5cGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhdXRob3JpdHkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY291bnRUeXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1c2VyVmlzaWJsZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3VwcG9ydHNVcGxvYWRpbmciIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN5bmNBZGFwdGVyVHlwZSIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuU3luY0FkYXB0ZXJUeXBlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNVc2VyVmlzaWJsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3S2V5IgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LlN5bmNBZGFwdGVyVHlwZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhdXRob3JpdHkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY291bnRUeXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzVXBsb2FkaW5nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImFjY291bnRUeXBlIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImF1dGhvcml0eSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpc0tleSIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3luY0NvbnRleHQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRTeW5jQ29udGV4dEJpbmRlciIKKyByZXR1cm49ImFuZHJvaWQub3MuSUJpbmRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkZpbmlzaGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuU3luY1Jlc3VsdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTeW5jSW5mbyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iYWNjb3VudCIKKyB0eXBlPSJhbmRyb2lkLmFjY291bnRzLkFjY291bnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImF1dGhvcml0eSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdGFydFRpbWUiCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlN5bmNSZXN1bHQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN5bmNSZXN1bHQiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LlN5bmNSZXN1bHQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xlYXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzRXJyb3IiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc0hhcmRFcnJvciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzU29mdEVycm9yIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYWRlU29tZVByb2dyZXNzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b0RlYnVnU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyY2VsIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkFMUkVBRFlfSU5fUFJPR1JFU1MiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LlN5bmNSZXN1bHQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkYXRhYmFzZUVycm9yIgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkZWxheVVudGlsIgorIHR5cGU9ImxvbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmdWxsU3luY1JlcXVlc3RlZCIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibW9yZVJlY29yZHNUb0dldCIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icGFydGlhbFN5bmNVbmF2YWlsYWJsZSIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RhdHMiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LlN5bmNTdGF0cyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3luY0FscmVhZHlJblByb2dyZXNzIgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRvb01hbnlEZWxldGlvbnMiCisgdHlwZT0iYm9vbGVhbiIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRvb01hbnlSZXRyaWVzIgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3luY1N0YXRzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3luY1N0YXRzIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5TeW5jU3RhdHMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTeW5jU3RhdHMiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LlN5bmNTdGF0cyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibnVtQXV0aEV4Y2VwdGlvbnMiCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im51bUNvbmZsaWN0RGV0ZWN0ZWRFeGNlcHRpb25zIgorIHR5cGU9ImxvbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJudW1EZWxldGVzIgorIHR5cGU9ImxvbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJudW1FbnRyaWVzIgorIHR5cGU9ImxvbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJudW1JbnNlcnRzIgorIHR5cGU9ImxvbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJudW1Jb0V4Y2VwdGlvbnMiCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im51bVBhcnNlRXhjZXB0aW9ucyIKKyB0eXBlPSJsb25nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibnVtU2tpcHBlZEVudHJpZXMiCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im51bVVwZGF0ZXMiCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iU3luY1N0YXR1c09ic2VydmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25TdGF0dXNDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aGljaCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJVcmlNYXRjaGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVcmlNYXRjaGVyIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5VcmlNYXRjaGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkVVJJIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0aG9yaXR5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWF0Y2giCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iTk9fTUFUQ0giCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJhbmRyb2lkLmNvbnRlbnQucG0iCis+Cis8Y2xhc3MgbmFtZT0iQWN0aXZpdHlJbmZvIgorIGV4dGVuZHM9ImFuZHJvaWQuY29udGVudC5wbS5Db21wb25lbnRJbmZvIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFjdGl2aXR5SW5mbyIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uQWN0aXZpdHlJbmZvIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWN0aXZpdHlJbmZvIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5BY3Rpdml0eUluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uQWN0aXZpdHlJbmZvIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkdW1wIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHciIHR5cGU9ImFuZHJvaWQudXRpbC5QcmludGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmaXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGhlbWVSZXNvdXJjZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ09ORklHX0ZPTlRfU0NBTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDczNzQxODI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTkZJR19LRVlCT0FSRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTkZJR19LRVlCT0FSRF9ISURERU4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05GSUdfTE9DQUxFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05GSUdfTUNDIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05GSUdfTU5DIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05GSUdfTkFWSUdBVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjY0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTkZJR19PUklFTlRBVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05GSUdfU0NSRUVOX0xBWU9VVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI1NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05GSUdfVE9VQ0hTQ1JFRU4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTkZJR19VSV9NT0RFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19BTExPV19UQVNLX1JFUEFSRU5USU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19BTFdBWVNfUkVUQUlOX1RBU0tfU1RBVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfQ0xFQVJfVEFTS19PTl9MQVVOQ0giCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfRVhDTFVERV9GUk9NX1JFQ0VOVFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX0ZJTklTSF9PTl9DTE9TRV9TWVNURU1fRElBTE9HUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI1NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX0ZJTklTSF9PTl9UQVNLX0xBVU5DSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19NVUxUSVBST0NFU1MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfTk9fSElTVE9SWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX1NUQVRFX05PVF9ORUVERUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMQVVOQ0hfTVVMVElQTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxBVU5DSF9TSU5HTEVfSU5TVEFOQ0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxBVU5DSF9TSU5HTEVfVEFTSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTEFVTkNIX1NJTkdMRV9UT1AiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDUkVFTl9PUklFTlRBVElPTl9CRUhJTkQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDUkVFTl9PUklFTlRBVElPTl9MQU5EU0NBUEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDUkVFTl9PUklFTlRBVElPTl9OT1NFTlNPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NSRUVOX09SSUVOVEFUSU9OX1BPUlRSQUlUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ1JFRU5fT1JJRU5UQVRJT05fU0VOU09SIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ1JFRU5fT1JJRU5UQVRJT05fVU5TUEVDSUZJRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ1JFRU5fT1JJRU5UQVRJT05fVVNFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY29uZmlnQ2hhbmdlcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmbGFncyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsYXVuY2hNb2RlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InBlcm1pc3Npb24iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNjcmVlbk9yaWVudGF0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNvZnRJbnB1dE1vZGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGFyZ2V0QWN0aXZpdHkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRhc2tBZmZpbml0eSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGhlbWUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFwcGxpY2F0aW9uSW5mbyIKKyBleHRlbmRzPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZUl0ZW1JbmZvIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFwcGxpY2F0aW9uSW5mbyIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uQXBwbGljYXRpb25JbmZvIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXBwbGljYXRpb25JbmZvIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5BcHBsaWNhdGlvbkluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uQXBwbGljYXRpb25JbmZvIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkdW1wIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHciIHR5cGU9ImFuZHJvaWQudXRpbC5QcmludGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmaXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZERlc2NyaXB0aW9uIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG0iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19BTExPV19CQUNLVVAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjc2OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX0FMTE9XX0NMRUFSX1VTRVJfREFUQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjY0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfQUxMT1dfVEFTS19SRVBBUkVOVElORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfREVCVUdHQUJMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19GQUNUT1JZX1RFU1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX0hBU19DT0RFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX0tJTExfQUZURVJfUkVTVE9SRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjY1NTM2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfUEVSU0lTVEVOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19SRVNJWkVBQkxFX0ZPUl9TQ1JFRU5TIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDA5NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX1JFU1RPUkVfQU5ZX1ZFUlNJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMzEwNzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19TVVBQT1JUU19MQVJHRV9TQ1JFRU5TIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjA0OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX1NVUFBPUlRTX05PUk1BTF9TQ1JFRU5TIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAyNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX1NVUFBPUlRTX1NDUkVFTl9ERU5TSVRJRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4MTkyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfU1VQUE9SVFNfU01BTExfU0NSRUVOUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX1NZU1RFTSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19URVNUX09OTFkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19VUERBVEVEX1NZU1RFTV9BUFAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19WTV9TQUZFX01PREUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjM4NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJiYWNrdXBBZ2VudE5hbWUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNsYXNzTmFtZSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGF0YURpciIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGVzY3JpcHRpb25SZXMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZW5hYmxlZCIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZmxhZ3MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibWFuYWdlU3BhY2VBY3Rpdml0eU5hbWUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InBlcm1pc3Npb24iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByb2Nlc3NOYW1lIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwdWJsaWNTb3VyY2VEaXIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNoYXJlZExpYnJhcnlGaWxlcyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzb3VyY2VEaXIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRhcmdldFNka1ZlcnNpb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGFza0FmZmluaXR5IgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0aGVtZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ1aWQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFwcGxpY2F0aW9uSW5mby5EaXNwbGF5TmFtZUNvbXBhcmF0b3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuQ29tcGFyYXRvciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXBwbGljYXRpb25JbmZvLkRpc3BsYXlOYW1lQ29tcGFyYXRvciIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uQXBwbGljYXRpb25JbmZvLkRpc3BsYXlOYW1lQ29tcGFyYXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBtIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFhIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uQXBwbGljYXRpb25JbmZvIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhYiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLkFwcGxpY2F0aW9uSW5mbyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb21wb25lbnRJbmZvIgorIGV4dGVuZHM9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlSXRlbUluZm8iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb21wb25lbnRJbmZvIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5Db21wb25lbnRJbmZvIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29tcG9uZW50SW5mbyIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uQ29tcG9uZW50SW5mbyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWciIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5Db21wb25lbnRJbmZvIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb21wb25lbnRJbmZvIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5Db21wb25lbnRJbmZvIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEljb25SZXNvdXJjZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iYXBwbGljYXRpb25JbmZvIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5BcHBsaWNhdGlvbkluZm8iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkZXNjcmlwdGlvblJlcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJlbmFibGVkIgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJleHBvcnRlZCIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJvY2Vzc05hbWUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb25maWd1cmF0aW9uSW5mbyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbmZpZ3VyYXRpb25JbmZvIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5Db25maWd1cmF0aW9uSW5mbyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbmZpZ3VyYXRpb25JbmZvIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5Db25maWd1cmF0aW9uSW5mbyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWciIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5Db25maWd1cmF0aW9uSW5mbyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R2xFc1ZlcnNpb24iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyY2VsYWJsZUZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0VTX1ZFUlNJT05fVU5ERUZJTkVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTlBVVF9GRUFUVVJFX0ZJVkVfV0FZX05BViIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU5QVVRfRkVBVFVSRV9IQVJEX0tFWUJPQVJEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJyZXFHbEVzVmVyc2lvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJyZXFJbnB1dEZlYXR1cmVzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InJlcUtleWJvYXJkVHlwZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJyZXFOYXZpZ2F0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InJlcVRvdWNoU2NyZWVuIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJGZWF0dXJlSW5mbyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZlYXR1cmVJbmZvIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5GZWF0dXJlSW5mbyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZlYXR1cmVJbmZvIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5GZWF0dXJlSW5mbyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWciIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5GZWF0dXJlSW5mbyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R2xFc1ZlcnNpb24iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyY2VsYWJsZUZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfUkVRVUlSRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0VTX1ZFUlNJT05fVU5ERUZJTkVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmbGFncyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJuYW1lIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJyZXFHbEVzVmVyc2lvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW5zdHJ1bWVudGF0aW9uSW5mbyIKKyBleHRlbmRzPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZUl0ZW1JbmZvIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikluc3RydW1lbnRhdGlvbkluZm8iCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLkluc3RydW1lbnRhdGlvbkluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnN0cnVtZW50YXRpb25JbmZvIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5JbnN0cnVtZW50YXRpb25JbmZvIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLkluc3RydW1lbnRhdGlvbkluZm8iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkYXRhRGlyIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmdW5jdGlvbmFsVGVzdCIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaGFuZGxlUHJvZmlsaW5nIgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwdWJsaWNTb3VyY2VEaXIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNvdXJjZURpciIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGFyZ2V0UGFja2FnZSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkxhYmVsZWRJbnRlbnQiCisgZXh0ZW5kcz0iYW5kcm9pZC5jb250ZW50LkludGVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxhYmVsZWRJbnRlbnQiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLkxhYmVsZWRJbnRlbnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnSW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2VQYWNrYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYWJlbFJlcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpY29uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxhYmVsZWRJbnRlbnQiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLkxhYmVsZWRJbnRlbnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnSW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2VQYWNrYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJub25Mb2NhbGl6ZWRMYWJlbCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaWNvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMYWJlbGVkSW50ZW50IgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5MYWJlbGVkSW50ZW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlUGFja2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGFiZWxSZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaWNvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMYWJlbGVkSW50ZW50IgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5MYWJlbGVkSW50ZW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlUGFja2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibm9uTG9jYWxpemVkTGFiZWwiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imljb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEljb25SZXNvdXJjZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMYWJlbFJlc291cmNlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5vbkxvY2FsaXplZExhYmVsIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTb3VyY2VQYWNrYWdlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2FkSWNvbiIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBtIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZExhYmVsIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG0iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBhY2thZ2VJbmZvIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGFja2FnZUluZm8iCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VJbmZvIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJjZWxhYmxlRmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYWN0aXZpdGllcyIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uQWN0aXZpdHlJbmZvW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhcHBsaWNhdGlvbkluZm8iCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLkFwcGxpY2F0aW9uSW5mbyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNvbmZpZ1ByZWZlcmVuY2VzIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5Db25maWd1cmF0aW9uSW5mb1tdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZ2lkcyIKKyB0eXBlPSJpbnRbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Imluc3RydW1lbnRhdGlvbiIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uSW5zdHJ1bWVudGF0aW9uSW5mb1tdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icGFja2FnZU5hbWUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InBlcm1pc3Npb25zIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QZXJtaXNzaW9uSW5mb1tdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJvdmlkZXJzIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5Qcm92aWRlckluZm9bXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InJlY2VpdmVycyIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uQWN0aXZpdHlJbmZvW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJyZXFGZWF0dXJlcyIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uRmVhdHVyZUluZm9bXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InJlcXVlc3RlZFBlcm1pc3Npb25zIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNlcnZpY2VzIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5TZXJ2aWNlSW5mb1tdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2hhcmVkVXNlcklkIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzaGFyZWRVc2VyTGFiZWwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2lnbmF0dXJlcyIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uU2lnbmF0dXJlW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ2ZXJzaW9uQ29kZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ2ZXJzaW9uTmFtZSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBhY2thZ2VJdGVtSW5mbyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGFja2FnZUl0ZW1JbmZvIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlSXRlbUluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQYWNrYWdlSXRlbUluZm8iCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VJdGVtSW5mbyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWciIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlSXRlbUluZm8iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBhY2thZ2VJdGVtSW5mbyIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZUl0ZW1JbmZvIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImR1bXBCYWNrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHciIHR5cGU9ImFuZHJvaWQudXRpbC5QcmludGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmaXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHVtcEZyb250IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHciIHR5cGU9ImFuZHJvaWQudXRpbC5QcmludGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmaXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZEljb24iCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvYWRMYWJlbCIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBtIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZFhtbE1ldGFEYXRhIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnJlcy5YbWxSZXNvdXJjZVBhcnNlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG0iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmNlbGFibGVGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iaWNvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsYWJlbFJlcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJtZXRhRGF0YSIKKyB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im5hbWUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im5vbkxvY2FsaXplZExhYmVsIgorIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwYWNrYWdlTmFtZSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBhY2thZ2VJdGVtSW5mby5EaXNwbGF5TmFtZUNvbXBhcmF0b3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuQ29tcGFyYXRvciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGFja2FnZUl0ZW1JbmZvLkRpc3BsYXlOYW1lQ29tcGFyYXRvciIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZUl0ZW1JbmZvLkRpc3BsYXlOYW1lQ29tcGFyYXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBtIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFhIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZUl0ZW1JbmZvIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhYiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VJdGVtSW5mbyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQYWNrYWdlTWFuYWdlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQYWNrYWdlTWFuYWdlciIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkUGFja2FnZVRvUHJlZmVycmVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZFBlcm1pc3Npb24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZm8iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QZXJtaXNzaW9uSW5mbyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRQZXJtaXNzaW9uQXN5bmMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZm8iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QZXJtaXNzaW9uSW5mbyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRQcmVmZXJyZWRBY3Rpdml0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWx0ZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnRGaWx0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1hdGNoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNldCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aXZpdHkiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNhbm9uaWNhbFRvQ3VycmVudFBhY2thZ2VOYW1lcyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrUGVybWlzc2lvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwZXJtTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGtnTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGVja1NpZ25hdHVyZXMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGtnMSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGtnMiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGVja1NpZ25hdHVyZXMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idWlkMSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1aWQyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJQYWNrYWdlUHJlZmVycmVkQWN0aXZpdGllcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2FnZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3VycmVudFRvQ2Fub25pY2FsUGFja2FnZU5hbWVzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWVzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWN0aXZpdHlJY29uIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpdml0eU5hbWUiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWN0aXZpdHlJY29uIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBY3Rpdml0eUluZm8iCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucG0uQWN0aXZpdHlJbmZvIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNsYXNzTmFtZSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbGxQZXJtaXNzaW9uR3JvdXBzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5jb250ZW50LnBtLlBlcm1pc3Npb25Hcm91cEluZm8mZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXBwbGljYXRpb25FbmFibGVkU2V0dGluZyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYWNrYWdlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBcHBsaWNhdGlvbkljb24iCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZm8iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5BcHBsaWNhdGlvbkluZm8iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXBwbGljYXRpb25JY29uIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYWNrYWdlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFwcGxpY2F0aW9uSW5mbyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5wbS5BcHBsaWNhdGlvbkluZm8iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2FnZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBcHBsaWNhdGlvbkxhYmVsIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmZvIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uQXBwbGljYXRpb25JbmZvIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbXBvbmVudEVuYWJsZWRTZXR0aW5nIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbXBvbmVudE5hbWUiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlZmF1bHRBY3Rpdml0eUljb24iCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RHJhd2FibGUiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcHBJbmZvIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uQXBwbGljYXRpb25JbmZvIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbGxlZEFwcGxpY2F0aW9ucyIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2FuZHJvaWQuY29udGVudC5wbS5BcHBsaWNhdGlvbkluZm8mZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFsbGVkUGFja2FnZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZUluZm8mZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFsbGVyUGFja2FnZU5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RydW1lbnRhdGlvbkluZm8iCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucG0uSW5zdHJ1bWVudGF0aW9uSW5mbyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbGFzc05hbWUiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGF1bmNoSW50ZW50Rm9yUGFja2FnZSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2FnZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZUZvclVpZCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idWlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFja2FnZUFyY2hpdmVJbmZvIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VJbmZvIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcmNoaXZlRmlsZVBhdGgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFja2FnZUdpZHMiCisgcmV0dXJuPSJpbnRbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYWNrYWdlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhY2thZ2VJbmZvIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VJbmZvIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFja2FnZXNGb3JVaWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idWlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGVybWlzc2lvbkdyb3VwSW5mbyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5wbS5QZXJtaXNzaW9uR3JvdXBJbmZvIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQZXJtaXNzaW9uSW5mbyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5wbS5QZXJtaXNzaW9uSW5mbyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJlZmVycmVkQWN0aXZpdGllcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXRGaWx0ZXJzIiB0eXBlPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLmNvbnRlbnQuSW50ZW50RmlsdGVyJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0QWN0aXZpdGllcyIgdHlwZT0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYWNrYWdlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcmVmZXJyZWRQYWNrYWdlcyIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2FuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlSW5mbyZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZWNlaXZlckluZm8iCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucG0uQWN0aXZpdHlJbmZvIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNsYXNzTmFtZSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXNvdXJjZXNGb3JBY3Rpdml0eSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGl2aXR5TmFtZSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXNvdXJjZXNGb3JBcHBsaWNhdGlvbiIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFwcCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLkFwcGxpY2F0aW9uSW5mbyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlc291cmNlc0ZvckFwcGxpY2F0aW9uIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXBwUGFja2FnZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZXJ2aWNlSW5mbyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5wbS5TZXJ2aWNlSW5mbyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbGFzc05hbWUiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3lzdGVtQXZhaWxhYmxlRmVhdHVyZXMiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucG0uRmVhdHVyZUluZm9bXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN5c3RlbVNoYXJlZExpYnJhcnlOYW1lcyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRleHQiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcHBJbmZvIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uQXBwbGljYXRpb25JbmZvIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFhtbCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5yZXMuWG1sUmVzb3VyY2VQYXJzZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2FnZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc2lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFwcEluZm8iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5BcHBsaWNhdGlvbkluZm8iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzU3lzdGVtRmVhdHVyZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1NhZmVNb2RlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InF1ZXJ5QnJvYWRjYXN0UmVjZWl2ZXJzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5jb250ZW50LnBtLlJlc29sdmVJbmZvJmd0OyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVlcnlDb250ZW50UHJvdmlkZXJzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5jb250ZW50LnBtLlByb3ZpZGVySW5mbyZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvY2Vzc05hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InF1ZXJ5SW5zdHJ1bWVudGF0aW9uIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5jb250ZW50LnBtLkluc3RydW1lbnRhdGlvbkluZm8mZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldFBhY2thZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVlcnlJbnRlbnRBY3Rpdml0aWVzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5jb250ZW50LnBtLlJlc29sdmVJbmZvJmd0OyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVlcnlJbnRlbnRBY3Rpdml0eU9wdGlvbnMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLmNvbnRlbnQucG0uUmVzb2x2ZUluZm8mZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbGxlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNwZWNpZmljcyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVlcnlJbnRlbnRTZXJ2aWNlcyIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2FuZHJvaWQuY29udGVudC5wbS5SZXNvbHZlSW5mbyZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InF1ZXJ5UGVybWlzc2lvbnNCeUdyb3VwIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5jb250ZW50LnBtLlBlcm1pc3Npb25JbmZvJmd0OyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZVBhY2thZ2VGcm9tUHJlZmVycmVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZVBlcm1pc3Npb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzb2x2ZUFjdGl2aXR5IgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnBtLlJlc29sdmVJbmZvIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNvbHZlQ29udGVudFByb3ZpZGVyIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnBtLlByb3ZpZGVySW5mbyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc29sdmVTZXJ2aWNlIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnBtLlJlc29sdmVJbmZvIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBcHBsaWNhdGlvbkVuYWJsZWRTZXR0aW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYWNrYWdlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3U3RhdGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb21wb25lbnRFbmFibGVkU2V0dGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29tcG9uZW50TmFtZSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1N0YXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDT01QT05FTlRfRU5BQkxFRF9TVEFURV9ERUZBVUxUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT01QT05FTlRfRU5BQkxFRF9TVEFURV9ESVNBQkxFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09NUE9ORU5UX0VOQUJMRURfU1RBVEVfRU5BQkxFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRE9OVF9LSUxMX0FQUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkVBVFVSRV9CTFVFVE9PVEgiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5oYXJkd2FyZS5ibHVldG9vdGgmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkVBVFVSRV9DQU1FUkEiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5oYXJkd2FyZS5jYW1lcmEmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkVBVFVSRV9DQU1FUkFfQVVUT0ZPQ1VTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaGFyZHdhcmUuY2FtZXJhLmF1dG9mb2N1cyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGRUFUVVJFX0NBTUVSQV9GTEFTSCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmhhcmR3YXJlLmNhbWVyYS5mbGFzaCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGRUFUVVJFX0xJVkVfV0FMTFBBUEVSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc29mdHdhcmUubGl2ZV93YWxscGFwZXImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkVBVFVSRV9MT0NBVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmhhcmR3YXJlLmxvY2F0aW9uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZFQVRVUkVfTE9DQVRJT05fR1BTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaGFyZHdhcmUubG9jYXRpb24uZ3BzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZFQVRVUkVfTE9DQVRJT05fTkVUV09SSyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmhhcmR3YXJlLmxvY2F0aW9uLm5ldHdvcmsmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkVBVFVSRV9NSUNST1BIT05FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaGFyZHdhcmUubWljcm9waG9uZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGRUFUVVJFX1NFTlNPUl9BQ0NFTEVST01FVEVSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaGFyZHdhcmUuc2Vuc29yLmFjY2VsZXJvbWV0ZXImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkVBVFVSRV9TRU5TT1JfQ09NUEFTUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmhhcmR3YXJlLnNlbnNvci5jb21wYXNzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZFQVRVUkVfU0VOU09SX0xJR0hUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaGFyZHdhcmUuc2Vuc29yLmxpZ2h0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZFQVRVUkVfU0VOU09SX1BST1hJTUlUWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmhhcmR3YXJlLnNlbnNvci5wcm94aW1pdHkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkVBVFVSRV9URUxFUEhPTlkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5oYXJkd2FyZS50ZWxlcGhvbnkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkVBVFVSRV9URUxFUEhPTllfQ0RNQSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmhhcmR3YXJlLnRlbGVwaG9ueS5jZG1hJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZFQVRVUkVfVEVMRVBIT05ZX0dTTSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmhhcmR3YXJlLnRlbGVwaG9ueS5nc20mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkVBVFVSRV9UT1VDSFNDUkVFTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmhhcmR3YXJlLnRvdWNoc2NyZWVuJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZFQVRVUkVfVE9VQ0hTQ1JFRU5fTVVMVElUT1VDSCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmhhcmR3YXJlLnRvdWNoc2NyZWVuLm11bHRpdG91Y2gmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkVBVFVSRV9UT1VDSFNDUkVFTl9NVUxUSVRPVUNIX0RJU1RJTkNUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaGFyZHdhcmUudG91Y2hzY3JlZW4ubXVsdGl0b3VjaC5kaXN0aW5jdCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGRUFUVVJFX1dJRkkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5oYXJkd2FyZS53aWZpJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdFVF9BQ1RJVklUSUVTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHRVRfQ09ORklHVVJBVElPTlMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjM4NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHRVRfRElTQUJMRURfQ09NUE9ORU5UUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHRVRfR0lEUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI1NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHRVRfSU5TVFJVTUVOVEFUSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0VUX0lOVEVOVF9GSUxURVJTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0VUX01FVEFfREFUQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHRVRfUEVSTUlTU0lPTlMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MDk2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdFVF9QUk9WSURFUlMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdFVF9SRUNFSVZFUlMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdFVF9SRVNPTFZFRF9GSUxURVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHRVRfU0VSVklDRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdFVF9TSEFSRURfTElCUkFSWV9GSUxFUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0VUX1NJR05BVFVSRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHRVRfVU5JTlNUQUxMRURfUEFDS0FHRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4MTkyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdFVF9VUklfUEVSTUlTU0lPTl9QQVRURVJOUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwNDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUFUQ0hfREVGQVVMVF9PTkxZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjU1MzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEVSTUlTU0lPTl9ERU5JRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQRVJNSVNTSU9OX0dSQU5URUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNJR05BVFVSRV9GSVJTVF9OT1RfU0lHTkVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0lHTkFUVVJFX01BVENIIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTSUdOQVRVUkVfTkVJVEhFUl9TSUdORUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNJR05BVFVSRV9OT19NQVRDSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0zIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNJR05BVFVSRV9TRUNPTkRfTk9UX1NJR05FRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0yIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNJR05BVFVSRV9VTktOT1dOX1BBQ0tBR0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIgorIGV4dGVuZHM9ImFuZHJvaWQudXRpbC5BbmRyb2lkRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBhY2thZ2VTdGF0cyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBhY2thZ2VTdGF0cyIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZVN0YXRzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGtnTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGFja2FnZVN0YXRzIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlU3RhdHMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQYWNrYWdlU3RhdHMiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VTdGF0cyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBTdGF0cyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VTdGF0cyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJjZWxhYmxlRmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY2FjaGVTaXplIgorIHR5cGU9ImxvbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjb2RlU2l6ZSIKKyB0eXBlPSJsb25nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGF0YVNpemUiCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InBhY2thZ2VOYW1lIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUGF0aFBlcm1pc3Npb24iCisgZXh0ZW5kcz0iYW5kcm9pZC5vcy5QYXR0ZXJuTWF0Y2hlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBhdGhQZXJtaXNzaW9uIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYXRoUGVybWlzc2lvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdHRlcm4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVhZFBlcm1pc3Npb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndyaXRlUGVybWlzc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGF0aFBlcm1pc3Npb24iCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhdGhQZXJtaXNzaW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldFJlYWRQZXJtaXNzaW9uIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRXcml0ZVBlcm1pc3Npb24iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUGVybWlzc2lvbkdyb3VwSW5mbyIKKyBleHRlbmRzPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZUl0ZW1JbmZvIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBlcm1pc3Npb25Hcm91cEluZm8iCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBlcm1pc3Npb25Hcm91cEluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQZXJtaXNzaW9uR3JvdXBJbmZvIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QZXJtaXNzaW9uR3JvdXBJbmZvIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBlcm1pc3Npb25Hcm91cEluZm8iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvYWREZXNjcmlwdGlvbiIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBtIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRlc2NyaXB0aW9uUmVzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im5vbkxvY2FsaXplZERlc2NyaXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUGVybWlzc2lvbkluZm8iCisgZXh0ZW5kcz0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VJdGVtSW5mbyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQZXJtaXNzaW9uSW5mbyIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGVybWlzc2lvbkluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQZXJtaXNzaW9uSW5mbyIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGVybWlzc2lvbkluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGVybWlzc2lvbkluZm8iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvYWREZXNjcmlwdGlvbiIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBtIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBST1RFQ1RJT05fREFOR0VST1VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQUk9URUNUSU9OX05PUk1BTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJPVEVDVElPTl9TSUdOQVRVUkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBST1RFQ1RJT05fU0lHTkFUVVJFX09SX1NZU1RFTSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGVzY3JpcHRpb25SZXMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZ3JvdXAiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im5vbkxvY2FsaXplZERlc2NyaXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwcm90ZWN0aW9uTGV2ZWwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlByb3ZpZGVySW5mbyIKKyBleHRlbmRzPSJhbmRyb2lkLmNvbnRlbnQucG0uQ29tcG9uZW50SW5mbyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByb3ZpZGVySW5mbyIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUHJvdmlkZXJJbmZvIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJvdmlkZXJJbmZvIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5Qcm92aWRlckluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUHJvdmlkZXJJbmZvIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYXV0aG9yaXR5IgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJncmFudFVyaVBlcm1pc3Npb25zIgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpbml0T3JkZXIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaXNTeW5jYWJsZSIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJtdWx0aXByb2Nlc3MiCisgdHlwZT0iYm9vbGVhbiIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InBhdGhQZXJtaXNzaW9ucyIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGF0aFBlcm1pc3Npb25bXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InJlYWRQZXJtaXNzaW9uIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ1cmlQZXJtaXNzaW9uUGF0dGVybnMiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXR0ZXJuTWF0Y2hlcltdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0id3JpdGVQZXJtaXNzaW9uIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmVzb2x2ZUluZm8iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZXNvbHZlSW5mbyIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUmVzb2x2ZUluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkdW1wIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHciIHR5cGU9ImFuZHJvaWQudXRpbC5QcmludGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmaXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SWNvblJlc291cmNlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZEljb24iCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvYWRMYWJlbCIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBtIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJjZWxhYmxlRmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYWN0aXZpdHlJbmZvIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5BY3Rpdml0eUluZm8iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmaWx0ZXIiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudEZpbHRlciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Imljb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaXNEZWZhdWx0IgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsYWJlbFJlcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJtYXRjaCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJub25Mb2NhbGl6ZWRMYWJlbCIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJlZmVycmVkT3JkZXIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJpb3JpdHkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icmVzb2x2ZVBhY2thZ2VOYW1lIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzZXJ2aWNlSW5mbyIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uU2VydmljZUluZm8iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzcGVjaWZpY0luZGV4IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSZXNvbHZlSW5mby5EaXNwbGF5TmFtZUNvbXBhcmF0b3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuQ29tcGFyYXRvciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVzb2x2ZUluZm8uRGlzcGxheU5hbWVDb21wYXJhdG9yIgorIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5SZXNvbHZlSW5mby5EaXNwbGF5TmFtZUNvbXBhcmF0b3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY29tcGFyZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUmVzb2x2ZUluZm8iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5SZXNvbHZlSW5mbyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTZXJ2aWNlSW5mbyIKKyBleHRlbmRzPSJhbmRyb2lkLmNvbnRlbnQucG0uQ29tcG9uZW50SW5mbyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTZXJ2aWNlSW5mbyIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uU2VydmljZUluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTZXJ2aWNlSW5mbyIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uU2VydmljZUluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uU2VydmljZUluZm8iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImR1bXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwdyIgdHlwZT0iYW5kcm9pZC51dGlsLlByaW50ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByZWZpeCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icGVybWlzc2lvbiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNpZ25hdHVyZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNpZ25hdHVyZSIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uU2lnbmF0dXJlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2lnbmF0dXJlIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNpZ25hdHVyZSIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uU2lnbmF0dXJlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9CeXRlQXJyYXkiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9DaGFycyIKKyByZXR1cm49ImNoYXJbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b0NoYXJzIgorIHJldHVybj0iY2hhcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleGlzdGluZ0FycmF5IiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im91dExlbiIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9DaGFyc1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJjZWxhYmxlRmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iYW5kcm9pZC5jb250ZW50LnJlcyIKKz4KKzxjbGFzcyBuYW1lPSJBc3NldEZpbGVEZXNjcmlwdG9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXNzZXRGaWxlRGVzY3JpcHRvciIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLkFzc2V0RmlsZURlc2NyaXB0b3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxGaWxlRGVzY3JpcHRvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnRPZmZzZXQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb3NlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlSW5wdXRTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlT3V0cHV0U3RyZWFtIgorIHJldHVybj0iamF2YS5pby5GaWxlT3V0cHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlY2xhcmVkTGVuZ3RoIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGaWxlRGVzY3JpcHRvciIKKyByZXR1cm49ImphdmEuaW8uRmlsZURlc2NyaXB0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGVuZ3RoIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJjZWxGaWxlRGVzY3JpcHRvciIKKyByZXR1cm49ImFuZHJvaWQub3MuUGFyY2VsRmlsZURlc2NyaXB0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RhcnRPZmZzZXQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVTktOT1dOX0xFTkdUSCIKKyB0eXBlPSJsb25nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMUwiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFzc2V0RmlsZURlc2NyaXB0b3IuQXV0b0Nsb3NlSW5wdXRTdHJlYW0iCisgZXh0ZW5kcz0iYW5kcm9pZC5vcy5QYXJjZWxGaWxlRGVzY3JpcHRvci5BdXRvQ2xvc2VJbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXNzZXRGaWxlRGVzY3JpcHRvci5BdXRvQ2xvc2VJbnB1dFN0cmVhbSIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLkFzc2V0RmlsZURlc2NyaXB0b3IuQXV0b0Nsb3NlSW5wdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5Bc3NldEZpbGVEZXNjcmlwdG9yIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFzc2V0RmlsZURlc2NyaXB0b3IuQXV0b0Nsb3NlT3V0cHV0U3RyZWFtIgorIGV4dGVuZHM9ImFuZHJvaWQub3MuUGFyY2VsRmlsZURlc2NyaXB0b3IuQXV0b0Nsb3NlT3V0cHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBc3NldEZpbGVEZXNjcmlwdG9yLkF1dG9DbG9zZU91dHB1dFN0cmVhbSIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLkFzc2V0RmlsZURlc2NyaXB0b3IuQXV0b0Nsb3NlT3V0cHV0U3RyZWFtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuQXNzZXRGaWxlRGVzY3JpcHRvciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBc3NldE1hbmFnZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNsb3NlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhbGVzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsaXN0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3BlbiIKKyByZXR1cm49ImphdmEuaW8uSW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wZW4iCisgcmV0dXJuPSJqYXZhLmlvLklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGVOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY2Nlc3NNb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wZW5GZCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5yZXMuQXNzZXRGaWxlRGVzY3JpcHRvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3Blbk5vbkFzc2V0RmQiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucmVzLkFzc2V0RmlsZURlc2NyaXB0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wZW5Ob25Bc3NldEZkIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnJlcy5Bc3NldEZpbGVEZXNjcmlwdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb2tpZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3BlblhtbFJlc291cmNlUGFyc2VyIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnJlcy5YbWxSZXNvdXJjZVBhcnNlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3BlblhtbFJlc291cmNlUGFyc2VyIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnJlcy5YbWxSZXNvdXJjZVBhcnNlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29raWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQUNDRVNTX0JVRkZFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNDRVNTX1JBTkRPTSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNDRVNTX1NUUkVBTUlORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNDRVNTX1VOS05PV04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBc3NldE1hbmFnZXIuQXNzZXRJbnB1dFN0cmVhbSIKKyBleHRlbmRzPSJqYXZhLmlvLklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYXZhaWxhYmxlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb3NlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBc3NldEludCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1hcmsiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlYWRsaW1pdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1hcmtTdXBwb3J0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNraXAiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbG9yU3RhdGVMaXN0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29sb3JTdGF0ZUxpc3QiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5Db2xvclN0YXRlTGlzdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlcyIgdHlwZT0iaW50W11bXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sb3JzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUZyb21YbWwiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucmVzLkNvbG9yU3RhdGVMaXN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJzZXIiIHR5cGU9Im9yZy54bWxwdWxsLnYxLlhtbFB1bGxQYXJzZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJYbWxQdWxsUGFyc2VyRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1scHVsbC52MS5YbWxQdWxsUGFyc2VyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sb3JGb3JTdGF0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdGVTZXQiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZhdWx0Q29sb3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWZhdWx0Q29sb3IiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTdGF0ZWZ1bCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5yZXMuQ29sb3JTdGF0ZUxpc3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sb3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3aXRoQWxwaGEiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucmVzLkNvbG9yU3RhdGVMaXN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbHBoYSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbmZpZ3VyYXRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ29tcGFyYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbmZpZ3VyYXRpb24iCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5Db25maWd1cmF0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29uZmlndXJhdGlvbiIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLkNvbmZpZ3VyYXRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLkNvbmZpZ3VyYXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlVG8iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoYXQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuQ29uZmlndXJhdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpZmYiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbHRhIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLkNvbmZpZ3VyYXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXF1YWxzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhhdCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5Db25maWd1cmF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5lZWROZXdSZXNvdXJjZXMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbmZpZ0NoYW5nZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZXJlc3RpbmdDaGFuZ2VzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZEZyb21QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5Db25maWd1cmF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRvRGVmYXVsdHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZUZyb20iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbHRhIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLkNvbmZpZ3VyYXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIQVJES0VZQk9BUkRISURERU5fTk8iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhBUkRLRVlCT0FSREhJRERFTl9VTkRFRklORUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhBUkRLRVlCT0FSREhJRERFTl9ZRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUJPQVJESElEREVOX05PIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlCT0FSREhJRERFTl9VTkRFRklORUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUJPQVJESElEREVOX1lFUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQk9BUkRfMTJLRVkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUJPQVJEX05PS0VZUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQk9BUkRfUVdFUlRZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlCT0FSRF9VTkRFRklORUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5BVklHQVRJT05ISURERU5fTk8iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5BVklHQVRJT05ISURERU5fVU5ERUZJTkVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOQVZJR0FUSU9OSElEREVOX1lFUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTkFWSUdBVElPTl9EUEFEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOQVZJR0FUSU9OX05PTkFWIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOQVZJR0FUSU9OX1RSQUNLQkFMTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTkFWSUdBVElPTl9VTkRFRklORUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5BVklHQVRJT05fV0hFRUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9SSUVOVEFUSU9OX0xBTkRTQ0FQRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1JJRU5UQVRJT05fUE9SVFJBSVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9SSUVOVEFUSU9OX1NRVUFSRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1JJRU5UQVRJT05fVU5ERUZJTkVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ1JFRU5MQVlPVVRfTE9OR19NQVNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NSRUVOTEFZT1VUX0xPTkdfTk8iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ1JFRU5MQVlPVVRfTE9OR19VTkRFRklORUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDUkVFTkxBWU9VVF9MT05HX1lFUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDUkVFTkxBWU9VVF9TSVpFX0xBUkdFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ1JFRU5MQVlPVVRfU0laRV9NQVNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NSRUVOTEFZT1VUX1NJWkVfTk9STUFMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ1JFRU5MQVlPVVRfU0laRV9TTUFMTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NSRUVOTEFZT1VUX1NJWkVfVU5ERUZJTkVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT1VDSFNDUkVFTl9GSU5HRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPVUNIU0NSRUVOX05PVE9VQ0giCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPVUNIU0NSRUVOX1NUWUxVUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9VQ0hTQ1JFRU5fVU5ERUZJTkVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVSV9NT0RFX05JR0hUX01BU0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVSV9NT0RFX05JR0hUX05PIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVUlfTU9ERV9OSUdIVF9VTkRFRklORUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVJX01PREVfTklHSFRfWUVTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVUlfTU9ERV9UWVBFX0NBUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVUlfTU9ERV9UWVBFX0RFU0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVJX01PREVfVFlQRV9NQVNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVUlfTU9ERV9UWVBFX05PUk1BTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVUlfTU9ERV9UWVBFX1VOREVGSU5FRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZm9udFNjYWxlIgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaGFyZEtleWJvYXJkSGlkZGVuIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtleWJvYXJkIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtleWJvYXJkSGlkZGVuIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxvY2FsZSIKKyB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibWNjIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1uYyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJuYXZpZ2F0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im5hdmlnYXRpb25IaWRkZW4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ib3JpZW50YXRpb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2NyZWVuTGF5b3V0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRvdWNoc2NyZWVuIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InVpTW9kZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmVzb3VyY2VzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZXNvdXJjZXMiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhc3NldHMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuQXNzZXRNYW5hZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXRyaWNzIiB0eXBlPSJhbmRyb2lkLnV0aWwuRGlzcGxheU1ldHJpY3MiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbmZpZyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5Db25maWd1cmF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZmluaXNoUHJlbG9hZGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmbHVzaExheW91dENhY2hlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFuaW1hdGlvbiIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5yZXMuWG1sUmVzb3VyY2VQYXJzZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXNzZXRzIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnJlcy5Bc3NldE1hbmFnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCb29sZWFuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb2xvciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb2xvclN0YXRlTGlzdCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5yZXMuQ29sb3JTdGF0ZUxpc3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29uZmlndXJhdGlvbiIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5yZXMuQ29uZmlndXJhdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREaW1lbnNpb24iCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREaW1lbnNpb25QaXhlbE9mZnNldCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREaW1lbnNpb25QaXhlbFNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGlzcGxheU1ldHJpY3MiCisgcmV0dXJuPSJhbmRyb2lkLnV0aWwuRGlzcGxheU1ldHJpY3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RHJhd2FibGUiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZyYWN0aW9uIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJhc2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGJhc2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJZGVudGlmaWVyIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZUeXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZQYWNrYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEludEFycmF5IgorIHJldHVybj0iaW50W10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW50ZWdlciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMYXlvdXQiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucmVzLlhtbFJlc291cmNlUGFyc2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1vdmllIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5Nb3ZpZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRRdWFudGl0eVN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InF1YW50aXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcm1hdEFyZ3MiIHR5cGU9ImphdmEubGFuZy5PYmplY3QuLi4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UXVhbnRpdHlTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxdWFudGl0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFF1YW50aXR5VGV4dCIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InF1YW50aXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVzb3VyY2VFbnRyeU5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlc291cmNlTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc2lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVzb3VyY2VQYWNrYWdlTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc2lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVzb3VyY2VUeXBlTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc2lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXRBcmdzIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Li4uIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0cmluZ0FycmF5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN5c3RlbSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGV4dCIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGV4dCIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZiIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUZXh0QXJyYXkiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXRWYWx1ZSIgdHlwZT0iYW5kcm9pZC51dGlsLlR5cGVkVmFsdWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc29sdmVSZWZzIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZhbHVlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0VmFsdWUiIHR5cGU9ImFuZHJvaWQudXRpbC5UeXBlZFZhbHVlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvbHZlUmVmcyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRYbWwiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucmVzLlhtbFJlc291cmNlUGFyc2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1RoZW1lIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMuVGhlbWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvYnRhaW5BdHRyaWJ1dGVzIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnJlcy5UeXBlZEFycmF5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZXQiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvYnRhaW5UeXBlZEFycmF5IgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnJlcy5UeXBlZEFycmF5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wZW5SYXdSZXNvdXJjZSIKKyByZXR1cm49ImphdmEuaW8uSW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3BlblJhd1Jlc291cmNlIgorIHJldHVybj0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImFuZHJvaWQudXRpbC5UeXBlZFZhbHVlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wZW5SYXdSZXNvdXJjZUZkIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnJlcy5Bc3NldEZpbGVEZXNjcmlwdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlQnVuZGxlRXh0cmEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWdOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0QnVuZGxlIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZUJ1bmRsZUV4dHJhcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcnNlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5YbWxSZXNvdXJjZVBhcnNlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0QnVuZGxlIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlhtbFB1bGxQYXJzZXJFeGNlcHRpb24iIHR5cGU9Im9yZy54bWxwdWxsLnYxLlhtbFB1bGxQYXJzZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlQ29uZmlndXJhdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbmZpZyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5Db25maWd1cmF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXRyaWNzIiB0eXBlPSJhbmRyb2lkLnV0aWwuRGlzcGxheU1ldHJpY3MiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmVzb3VyY2VzLlRoZW1lIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJhcHBseVN0eWxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9yY2UiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHVtcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByaW9yaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlZml4IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9idGFpblN0eWxlZEF0dHJpYnV0ZXMiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucmVzLlR5cGVkQXJyYXkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvYnRhaW5TdHlsZWRBdHRyaWJ1dGVzIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnJlcy5UeXBlZEFycmF5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib2J0YWluU3R5bGVkQXR0cmlidXRlcyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5yZXMuVHlwZWRBcnJheSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2V0IiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlQXR0ciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZTdHlsZVJlcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc29sdmVBdHRyaWJ1dGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXRWYWx1ZSIgdHlwZT0iYW5kcm9pZC51dGlsLlR5cGVkVmFsdWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc29sdmVSZWZzIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3RoZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzLlRoZW1lIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlR5cGVkQXJyYXkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRCb29sZWFuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmVmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sb3IiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sb3JTdGF0ZUxpc3QiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucmVzLkNvbG9yU3RhdGVMaXN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERpbWVuc2lvbiIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZWYWx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGltZW5zaW9uUGl4ZWxPZmZzZXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGltZW5zaW9uUGl4ZWxTaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZWYWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERyYXdhYmxlIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGbG9hdCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZWYWx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RnJhY3Rpb24iCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmFzZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYmFzZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZWYWx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5kZXgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5kZXhDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW50ZWdlciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmVmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMYXlvdXREaW1lbnNpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGF5b3V0RGltZW5zaW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZWYWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5vblJlc291cmNlU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQb3NpdGlvbkRlc2NyaXB0aW9uIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXNvdXJjZUlkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZWYWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlc291cmNlcyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGV4dCIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGV4dEFycmF5IgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZhbHVlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0VmFsdWUiIHR5cGU9ImFuZHJvaWQudXRpbC5UeXBlZFZhbHVlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc1ZhbHVlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGVla1ZhbHVlIgorIHJldHVybj0iYW5kcm9pZC51dGlsLlR5cGVkVmFsdWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVjeWNsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlhtbFJlc291cmNlUGFyc2VyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlciI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImNsb3NlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQuZGF0YWJhc2UiCis+Cis8Y2xhc3MgbmFtZT0iQWJzdHJhY3RDdXJzb3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLmRhdGFiYXNlLkNyb3NzUHJvY2Vzc0N1cnNvciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzdHJhY3RDdXJzb3IiCisgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5BYnN0cmFjdEN1cnNvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjaGVja1Bvc2l0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29weVN0cmluZ1RvQnVmZmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWFjdGl2YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaWxsV2luZG93IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2luZG93IiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvcldpbmRvdyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCbG9iIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb2x1bW5Db3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb2x1bW5JbmRleCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb2x1bW5JbmRleE9yVGhyb3ciCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sdW1uTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sdW1uTmFtZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERvdWJsZSIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeHRyYXMiCisgcmV0dXJuPSJhbmRyb2lkLm9zLkJ1bmRsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGbG9hdCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEludCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb25nIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQb3NpdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNob3J0IgorIHJldHVybj0ic2hvcnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVcGRhdGVkRmllbGQiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdhbnRzQWxsT25Nb3ZlQ2FsbHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdpbmRvdyIKKyByZXR1cm49ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yV2luZG93IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQWZ0ZXJMYXN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQmVmb3JlRmlyc3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNDbG9zZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRmllbGRVcGRhdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0ZpcnN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTGFzdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc051bGwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1vdmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1vdmVUb0ZpcnN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1vdmVUb0xhc3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibW92ZVRvTmV4dCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtb3ZlVG9Qb3NpdGlvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtb3ZlVG9QcmV2aW91cyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNoYW5nZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGZDaGFuZ2UiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Nb3ZlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2xkUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3UG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3RlckNvbnRlbnRPYnNlcnZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9ic2VydmVyIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkNvbnRlbnRPYnNlcnZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3RlckRhdGFTZXRPYnNlcnZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9ic2VydmVyIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkRhdGFTZXRPYnNlcnZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXF1ZXJ5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNwb25kIgorIHJldHVybj0iYW5kcm9pZC5vcy5CdW5kbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4dHJhcyIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Tm90aWZpY2F0aW9uVXJpIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5vdGlmeVVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVucmVnaXN0ZXJDb250ZW50T2JzZXJ2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYnNlcnZlciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5Db250ZW50T2JzZXJ2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5yZWdpc3RlckRhdGFTZXRPYnNlcnZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9ic2VydmVyIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkRhdGFTZXRPYnNlcnZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Im1DbG9zZWQiCisgdHlwZT0iYm9vbGVhbiIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1Db250ZW50UmVzb2x2ZXIiCisgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1DdXJyZW50Um93SUQiCisgdHlwZT0iamF2YS5sYW5nLkxvbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJtUG9zIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1Sb3dJZENvbHVtbkluZGV4IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1VcGRhdGVkUm93cyIKKyB0eXBlPSJqYXZhLnV0aWwuSGFzaE1hcCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBYnN0cmFjdEN1cnNvci5TZWxmQ29udGVudE9ic2VydmVyIgorIGV4dGVuZHM9ImFuZHJvaWQuZGF0YWJhc2UuQ29udGVudE9ic2VydmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBYnN0cmFjdEN1cnNvci5TZWxmQ29udGVudE9ic2VydmVyIgorIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQWJzdHJhY3RDdXJzb3IuU2VsZkNvbnRlbnRPYnNlcnZlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5BYnN0cmFjdEN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFic3RyYWN0V2luZG93ZWRDdXJzb3IiCisgZXh0ZW5kcz0iYW5kcm9pZC5kYXRhYmFzZS5BYnN0cmFjdEN1cnNvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzdHJhY3RXaW5kb3dlZEN1cnNvciIKKyB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkFic3RyYWN0V2luZG93ZWRDdXJzb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0RG91YmxlIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZsb2F0IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvbmciCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNob3J0IgorIHJldHVybj0ic2hvcnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNXaW5kb3ciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQmxvYiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNGbG9hdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNMb25nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc051bGwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU3RyaW5nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRXaW5kb3ciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aW5kb3ciIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yV2luZG93Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0ibVdpbmRvdyIKKyB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvcldpbmRvdyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDaGFyQXJyYXlCdWZmZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2hhckFycmF5QnVmZmVyIgorIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ2hhckFycmF5QnVmZmVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDaGFyQXJyYXlCdWZmZXIiCisgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DaGFyQXJyYXlCdWZmZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWYiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iZGF0YSIKKyB0eXBlPSJjaGFyW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzaXplQ29waWVkIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb250ZW50T2JzZXJ2YWJsZSIKKyBleHRlbmRzPSJhbmRyb2lkLmRhdGFiYXNlLk9ic2VydmFibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb250ZW50T2JzZXJ2YWJsZSIKKyB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkNvbnRlbnRPYnNlcnZhYmxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRpc3BhdGNoQ2hhbmdlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZkNoYW5nZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJub3RpZnlDaGFuZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWxmQ2hhbmdlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlZ2lzdGVyT2JzZXJ2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYnNlcnZlciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5Db250ZW50T2JzZXJ2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29udGVudE9ic2VydmVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbnRlbnRPYnNlcnZlciIKKyB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkNvbnRlbnRPYnNlcnZlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhhbmRsZXIiIHR5cGU9ImFuZHJvaWQub3MuSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlbGl2ZXJTZWxmTm90aWZpY2F0aW9ucyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzcGF0Y2hDaGFuZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGZDaGFuZ2UiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DaGFuZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWxmQ2hhbmdlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDcm9zc1Byb2Nlc3NDdXJzb3IiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJmaWxsV2luZG93IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lub3ciIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yV2luZG93Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdpbmRvdyIKKyByZXR1cm49ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yV2luZG93IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Nb3ZlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvbGRQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iQ3Vyc29yIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY2xvc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29weVN0cmluZ1RvQnVmZmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ2hhckFycmF5QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlYWN0aXZhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QmxvYiIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbHVtbkNvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sdW1uSW5kZXgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb2x1bW5JbmRleE9yVGhyb3ciCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbHVtbk5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sdW1uTmFtZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERvdWJsZSIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEV4dHJhcyIKKyByZXR1cm49ImFuZHJvaWQub3MuQnVuZGxlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmxvYXQiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEludCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvbmciCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UG9zaXRpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaG9ydCIKKyByZXR1cm49InNob3J0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdhbnRzQWxsT25Nb3ZlQ2FsbHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNBZnRlckxhc3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNCZWZvcmVGaXJzdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0Nsb3NlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0ZpcnN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTGFzdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc051bGwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibW92ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibW92ZVRvRmlyc3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibW92ZVRvTGFzdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtb3ZlVG9OZXh0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1vdmVUb1Bvc2l0aW9uIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1vdmVUb1ByZXZpb3VzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlZ2lzdGVyQ29udGVudE9ic2VydmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYnNlcnZlciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5Db250ZW50T2JzZXJ2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVnaXN0ZXJEYXRhU2V0T2JzZXJ2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9ic2VydmVyIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkRhdGFTZXRPYnNlcnZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXF1ZXJ5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc3BvbmQiCisgcmV0dXJuPSJhbmRyb2lkLm9zLkJ1bmRsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleHRyYXMiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE5vdGlmaWNhdGlvblVyaSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVucmVnaXN0ZXJDb250ZW50T2JzZXJ2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9ic2VydmVyIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkNvbnRlbnRPYnNlcnZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bnJlZ2lzdGVyRGF0YVNldE9ic2VydmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYnNlcnZlciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5EYXRhU2V0T2JzZXJ2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkN1cnNvckluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLkluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDdXJzb3JJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29ySW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ3Vyc29ySW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvckluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ3Vyc29ySm9pbmVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkl0ZXJhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC5JdGVyYXRvciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ3Vyc29ySm9pbmVyIgorIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29ySm9pbmVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yTGVmdCIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWVzTGVmdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3JSaWdodCIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWVzUmlnaHQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9Imhhc05leHQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Iml0ZXJhdG9yIgorIHJldHVybj0iamF2YS51dGlsLkl0ZXJhdG9yJmx0O2FuZHJvaWQuZGF0YWJhc2UuQ3Vyc29ySm9pbmVyLlJlc3VsdCZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV4dCIKKyByZXR1cm49ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29ySm9pbmVyLlJlc3VsdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkN1cnNvckpvaW5lci5SZXN1bHQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkVudW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvckpvaW5lci5SZXN1bHQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZXMiCisgcmV0dXJuPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvckpvaW5lci5SZXN1bHRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ3Vyc29yV2luZG93IgorIGV4dGVuZHM9ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZUNsb3NhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkN1cnNvcldpbmRvdyIKKyB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvcldpbmRvdyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsV2luZG93IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWxsb2NSb3ciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29weVN0cmluZ1RvQnVmZmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icm93IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ2hhckFycmF5QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZnJlZUxhc3RSb3ciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJsb2IiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvdyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2wiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREb3VibGUiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvdyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2wiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGbG9hdCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyb3ciIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyb3ciIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9uZyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvdyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2wiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROdW1Sb3dzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNob3J0IgorIHJldHVybj0ic2hvcnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvdyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2wiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdGFydFBvc2l0aW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvdyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2wiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0Jsb2IiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyb3ciIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNGbG9hdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvdyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2wiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0xvbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyb3ciIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNOdWxsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icm93IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU3RyaW5nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icm93IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld0Zyb21QYXJjZWwiCisgcmV0dXJuPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvcldpbmRvdyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkFsbFJlZmVyZW5jZXNSZWxlYXNlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0QmxvYiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJvdyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2wiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXREb3VibGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyb3ciIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0TG9uZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyb3ciIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0TnVsbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvdyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2wiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRTdHJpbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icm93IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE51bUNvbHVtbnMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OdW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTdGFydFBvc2l0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ3Vyc29yV3JhcHBlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ3Vyc29yV3JhcHBlciIKKyB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvcldyYXBwZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvcHlTdHJpbmdUb0J1ZmZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DaGFyQXJyYXlCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVhY3RpdmF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QmxvYiIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb2x1bW5Db3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb2x1bW5JbmRleCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb2x1bW5JbmRleE9yVGhyb3ciCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb2x1bW5OYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb2x1bW5OYW1lcyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREb3VibGUiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RXh0cmFzIgorIHJldHVybj0iYW5kcm9pZC5vcy5CdW5kbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmxvYXQiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9uZyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UG9zaXRpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2hvcnQiCisgcmV0dXJuPSJzaG9ydCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdhbnRzQWxsT25Nb3ZlQ2FsbHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQWZ0ZXJMYXN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0JlZm9yZUZpcnN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0Nsb3NlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNGaXJzdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNMYXN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc051bGwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1vdmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtb3ZlVG9GaXJzdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibW92ZVRvTGFzdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibW92ZVRvTmV4dCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibW92ZVRvUG9zaXRpb24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1vdmVUb1ByZXZpb3VzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3RlckNvbnRlbnRPYnNlcnZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9ic2VydmVyIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkNvbnRlbnRPYnNlcnZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3RlckRhdGFTZXRPYnNlcnZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9ic2VydmVyIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkRhdGFTZXRPYnNlcnZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXF1ZXJ5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNwb25kIgorIHJldHVybj0iYW5kcm9pZC5vcy5CdW5kbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4dHJhcyIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Tm90aWZpY2F0aW9uVXJpIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVucmVnaXN0ZXJDb250ZW50T2JzZXJ2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYnNlcnZlciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5Db250ZW50T2JzZXJ2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5yZWdpc3RlckRhdGFTZXRPYnNlcnZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9ic2VydmVyIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkRhdGFTZXRPYnNlcnZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEYXRhU2V0T2JzZXJ2YWJsZSIKKyBleHRlbmRzPSJhbmRyb2lkLmRhdGFiYXNlLk9ic2VydmFibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEYXRhU2V0T2JzZXJ2YWJsZSIKKyB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkRhdGFTZXRPYnNlcnZhYmxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9Im5vdGlmeUNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5vdGlmeUludmFsaWRhdGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEYXRhU2V0T2JzZXJ2ZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGF0YVNldE9ic2VydmVyIgorIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuRGF0YVNldE9ic2VydmVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9Im9uQ2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25JbnZhbGlkYXRlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRGF0YWJhc2VVdGlscyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGF0YWJhc2VVdGlscyIKKyB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkRhdGFiYXNlVXRpbHMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYXBwZW5kRXNjYXBlZFNRTFN0cmluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2IiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdCdWlsZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzcWxTdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXBwZW5kVmFsdWVUb1NxbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcWwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdCdWlsZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJiaW5kT2JqZWN0VG9Qcm9ncmFtIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9nIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVQcm9ncmFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVEYkZyb21TcWxTdGF0ZW1lbnRzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGJOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYlZlcnNpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3FsU3RhdGVtZW50cyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjdXJzb3JEb3VibGVUb0NvbnRlbnRWYWx1ZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpZWxkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3Vyc29yRG91YmxlVG9Db250ZW50VmFsdWVzSWZQcmVzZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3Vyc29yRG91YmxlVG9DdXJzb3JWYWx1ZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpZWxkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImN1cnNvckZsb2F0VG9Db250ZW50VmFsdWVzSWZQcmVzZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3Vyc29ySW50VG9Db250ZW50VmFsdWVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWVzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFZhbHVlcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjdXJzb3JJbnRUb0NvbnRlbnRWYWx1ZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpZWxkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3Vyc29ySW50VG9Db250ZW50VmFsdWVzSWZQcmVzZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3Vyc29yTG9uZ1RvQ29udGVudFZhbHVlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmllbGQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlcyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRWYWx1ZXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3Vyc29yTG9uZ1RvQ29udGVudFZhbHVlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmllbGQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlcyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRWYWx1ZXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjdXJzb3JMb25nVG9Db250ZW50VmFsdWVzSWZQcmVzZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3Vyc29yUm93VG9Db250ZW50VmFsdWVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImN1cnNvclNob3J0VG9Db250ZW50VmFsdWVzSWZQcmVzZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3Vyc29yU3RyaW5nVG9Db250ZW50VmFsdWVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWVzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFZhbHVlcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjdXJzb3JTdHJpbmdUb0NvbnRlbnRWYWx1ZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpZWxkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3Vyc29yU3RyaW5nVG9Db250ZW50VmFsdWVzSWZQcmVzZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3Vyc29yU3RyaW5nVG9JbnNlcnRIZWxwZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpZWxkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnNlcnRlciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5EYXRhYmFzZVV0aWxzLkluc2VydEhlbHBlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkdW1wQ3VycmVudFJvdyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkdW1wQ3VycmVudFJvdyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyZWFtIiB0eXBlPSJqYXZhLmlvLlByaW50U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImR1bXBDdXJyZW50Um93IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzYiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHVtcEN1cnJlbnRSb3dUb1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkdW1wQ3Vyc29yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImR1bXBDdXJzb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbSIgdHlwZT0iamF2YS5pby5QcmludFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkdW1wQ3Vyc29yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzYiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHVtcEN1cnNvclRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbGxhdGlvbktleSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIZXhDb2xsYXRpb25LZXkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9uZ0ZvclF1ZXJ5IgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYiIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlRGF0YWJhc2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InF1ZXJ5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3Rpb25BcmdzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9uZ0ZvclF1ZXJ5IgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9nIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVTdGF0ZW1lbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGlvbkFyZ3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJxdWVyeU51bUVudHJpZXMiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRiIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVEYXRhYmFzZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGFibGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZEV4Y2VwdGlvbkZyb21QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVwbHkiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRFeGNlcHRpb25XaXRoRmlsZU5vdEZvdW5kRXhjZXB0aW9uRnJvbVBhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVwbHkiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJGaWxlTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRFeGNlcHRpb25XaXRoT3BlcmF0aW9uQXBwbGljYXRpb25FeGNlcHRpb25Gcm9tUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXBseSIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik9wZXJhdGlvbkFwcGxpY2F0aW9uRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuT3BlcmF0aW9uQXBwbGljYXRpb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3FsRXNjYXBlU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdHJpbmdGb3JRdWVyeSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGIiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZURhdGFiYXNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxdWVyeSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0aW9uQXJncyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0cmluZ0ZvclF1ZXJ5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9nIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVTdGF0ZW1lbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGlvbkFyZ3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUV4Y2VwdGlvblRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcGx5IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZSIgdHlwZT0iamF2YS5sYW5nLkV4Y2VwdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEYXRhYmFzZVV0aWxzLkluc2VydEhlbHBlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEYXRhYmFzZVV0aWxzLkluc2VydEhlbHBlciIKKyB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkRhdGFiYXNlVXRpbHMuSW5zZXJ0SGVscGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGIiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZURhdGFiYXNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0YWJsZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJiaW5kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJiaW5kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImJpbmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJiaW5kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJiaW5kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYmluZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYmluZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImJpbmROdWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhlY3V0ZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sdW1uSW5kZXgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnNlcnQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByZXBhcmVGb3JJbnNlcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByZXBhcmVGb3JSZXBsYWNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXBsYWNlIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWVzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFZhbHVlcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IlRBQkxFX0lORk9fUFJBR01BX0RFRkFVTFRfSU5ERVgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNYXRyaXhDdXJzb3IiCisgZXh0ZW5kcz0iYW5kcm9pZC5kYXRhYmFzZS5BYnN0cmFjdEN1cnNvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1hdHJpeEN1cnNvciIKKyB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLk1hdHJpeEN1cnNvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWVzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluaXRpYWxDYXBhY2l0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNYXRyaXhDdXJzb3IiCisgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5NYXRyaXhDdXJzb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OYW1lcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkUm93IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uVmFsdWVzIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkUm93IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uVmFsdWVzIiB0eXBlPSJqYXZhLmxhbmcuSXRlcmFibGUmbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sdW1uTmFtZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RG91YmxlIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGbG9hdCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvbmciCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaG9ydCIKKyByZXR1cm49InNob3J0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc051bGwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdSb3ciCisgcmV0dXJuPSJhbmRyb2lkLmRhdGFiYXNlLk1hdHJpeEN1cnNvci5Sb3dCdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik1hdHJpeEN1cnNvci5Sb3dCdWlsZGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYWRkIgorIHJldHVybj0iYW5kcm9pZC5kYXRhYmFzZS5NYXRyaXhDdXJzb3IuUm93QnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uVmFsdWUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTWVyZ2VDdXJzb3IiCisgZXh0ZW5kcz0iYW5kcm9pZC5kYXRhYmFzZS5BYnN0cmFjdEN1cnNvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1lcmdlQ3Vyc29yIgorIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuTWVyZ2VDdXJzb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3JzIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvcltdIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sdW1uTmFtZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RG91YmxlIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGbG9hdCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvbmciCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaG9ydCIKKyByZXR1cm49InNob3J0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc051bGwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJPYnNlcnZhYmxlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik9ic2VydmFibGUiCisgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5PYnNlcnZhYmxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InJlZ2lzdGVyT2JzZXJ2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYnNlcnZlciIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bnJlZ2lzdGVyQWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bnJlZ2lzdGVyT2JzZXJ2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYnNlcnZlciIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Im1PYnNlcnZlcnMiCisgdHlwZT0iamF2YS51dGlsLkFycmF5TGlzdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNRTEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNRTEV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLlNRTEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNRTEV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLlNRTEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVycm9yIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3RhbGVEYXRhRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RhbGVEYXRhRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuU3RhbGVEYXRhRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RhbGVEYXRhRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuU3RhbGVEYXRhRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzY3JpcHRpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlIgorPgorPGNsYXNzIG5hbWU9IlNRTGl0ZUFib3J0RXhjZXB0aW9uIgorIGV4dGVuZHM9ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNRTGl0ZUFib3J0RXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZUFib3J0RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1FMaXRlQWJvcnRFeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlQWJvcnRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlcnJvciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNRTGl0ZUNsb3NhYmxlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNRTGl0ZUNsb3NhYmxlIgorIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZUNsb3NhYmxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFjcXVpcmVSZWZlcmVuY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQWxsUmVmZXJlbmNlc1JlbGVhc2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQWxsUmVmZXJlbmNlc1JlbGVhc2VkRnJvbUNvbnRhaW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVsZWFzZVJlZmVyZW5jZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVsZWFzZVJlZmVyZW5jZUZyb21Db250YWluZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNRTGl0ZUNvbnN0cmFpbnRFeGNlcHRpb24iCisgZXh0ZW5kcz0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1FMaXRlQ29uc3RyYWludEV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVDb25zdHJhaW50RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1FMaXRlQ29uc3RyYWludEV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVDb25zdHJhaW50RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXJyb3IiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTUUxpdGVDdXJzb3IiCisgZXh0ZW5kcz0iYW5kcm9pZC5kYXRhYmFzZS5BYnN0cmFjdFdpbmRvd2VkQ3Vyc29yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1FMaXRlQ3Vyc29yIgorIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZUN1cnNvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRiIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVEYXRhYmFzZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHJpdmVyIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVDdXJzb3JEcml2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVkaXRUYWJsZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icXVlcnkiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZVF1ZXJ5Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sdW1uTmFtZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGF0YWJhc2UiCisgcmV0dXJuPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVEYXRhYmFzZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTZWxlY3Rpb25Bcmd1bWVudHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3Rpb25BcmdzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlNRTGl0ZUN1cnNvckRyaXZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImN1cnNvckNsb3NlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjdXJzb3JEZWFjdGl2YXRlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjdXJzb3JSZXF1ZXJpZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVlcnkiCisgcmV0dXJuPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWN0b3J5IiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVEYXRhYmFzZS5DdXJzb3JGYWN0b3J5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiaW5kQXJncyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEJpbmRBcmd1bWVudHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJpbmRBcmdzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlNRTGl0ZURhdGFiYXNlIgorIGV4dGVuZHM9ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZUNsb3NhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImJlZ2luVHJhbnNhY3Rpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImJlZ2luVHJhbnNhY3Rpb25XaXRoTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0cmFuc2FjdGlvbkxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVUcmFuc2FjdGlvbkxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb3NlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21waWxlU3RhdGVtZW50IgorIHJldHVybj0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlU3RhdGVtZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcWwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlIgorIHJldHVybj0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlRGF0YWJhc2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFjdG9yeSIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlRGF0YWJhc2UuQ3Vyc29yRmFjdG9yeSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWxldGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhYmxlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aGVyZUNsYXVzZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2hlcmVBcmdzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5kVHJhbnNhY3Rpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4ZWNTUUwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcWwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhlY1NRTCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNxbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmluZEFyZ3MiIHR5cGU9ImphdmEubGFuZy5PYmplY3RbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaW5kRWRpdFRhYmxlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWJsZXMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF4aW11bVNpemUiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhZ2VTaXplIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXRoIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN5bmNlZFRhYmxlcyIKKyByZXR1cm49ImphdmEudXRpbC5NYXAmbHQ7amF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmVyc2lvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpblRyYW5zYWN0aW9uIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnNlcnQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWJsZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibnVsbENvbHVtbkhhY2siIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlcyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRWYWx1ZXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5zZXJ0T3JUaHJvdyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhYmxlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJudWxsQ29sdW1uSGFjayIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWVzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFZhbHVlcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnNlcnRXaXRoT25Db25mbGljdCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhYmxlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJudWxsQ29sdW1uSGFjayIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5pdGlhbFZhbHVlcyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRWYWx1ZXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbmZsaWN0QWxnb3JpdGhtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNEYkxvY2tlZEJ5Q3VycmVudFRocmVhZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNEYkxvY2tlZEJ5T3RoZXJUaHJlYWRzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc09wZW4iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUmVhZE9ubHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1hcmtUYWJsZVN5bmNhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFibGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbGV0ZWRUYWJsZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYXJrVGFibGVTeW5jYWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhYmxlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3JlaWduS2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cGRhdGVUYWJsZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZWVkVXBncmFkZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1ZlcnNpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkFsbFJlZmVyZW5jZXNSZWxlYXNlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3BlbkRhdGFiYXNlIgorIHJldHVybj0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlRGF0YWJhc2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFjdG9yeSIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlRGF0YWJhc2UuQ3Vyc29yRmFjdG9yeSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuT3JDcmVhdGVEYXRhYmFzZSIKKyByZXR1cm49ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZURhdGFiYXNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGUiIHR5cGU9ImphdmEuaW8uRmlsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFjdG9yeSIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlRGF0YWJhc2UuQ3Vyc29yRmFjdG9yeSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuT3JDcmVhdGVEYXRhYmFzZSIKKyByZXR1cm49ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZURhdGFiYXNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdGgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY3RvcnkiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZURhdGFiYXNlLkN1cnNvckZhY3RvcnkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVlcnkiCisgcmV0dXJuPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlzdGluY3QiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRhYmxlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5zIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0aW9uQXJncyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJncm91cEJ5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYXZpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9yZGVyQnkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxpbWl0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InF1ZXJ5IgorIHJldHVybj0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhYmxlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5zIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0aW9uQXJncyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJncm91cEJ5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYXZpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9yZGVyQnkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVlcnkiCisgcmV0dXJuPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFibGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbnMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3Rpb25BcmdzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwQnkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhhdmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JkZXJCeSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGltaXQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVlcnlXaXRoRmFjdG9yeSIKKyByZXR1cm49ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3JGYWN0b3J5IiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVEYXRhYmFzZS5DdXJzb3JGYWN0b3J5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaXN0aW5jdCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGFibGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbnMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3Rpb25BcmdzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwQnkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhhdmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JkZXJCeSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGltaXQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmF3UXVlcnkiCisgcmV0dXJuPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3FsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3Rpb25BcmdzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmF3UXVlcnlXaXRoRmFjdG9yeSIKKyByZXR1cm49ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3JGYWN0b3J5IiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVEYXRhYmFzZS5DdXJzb3JGYWN0b3J5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzcWwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGlvbkFyZ3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZWRpdFRhYmxlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbGVhc2VNZW1vcnkiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcGxhY2UiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWJsZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibnVsbENvbHVtbkhhY2siIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluaXRpYWxWYWx1ZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcGxhY2VPclRocm93IgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFibGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im51bGxDb2x1bW5IYWNrIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbml0aWFsVmFsdWVzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFZhbHVlcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMb2NhbGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbGUiIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TG9ja2luZ0VuYWJsZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NraW5nRW5hYmxlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNYXhpbXVtU2l6ZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im51bUJ5dGVzIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBhZ2VTaXplIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibnVtQnl0ZXMiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VHJhbnNhY3Rpb25TdWNjZXNzZnVsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRWZXJzaW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmVyc2lvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFibGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlcyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRWYWx1ZXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoZXJlQ2xhdXNlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aGVyZUFyZ3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVXaXRoT25Db25mbGljdCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFibGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlcyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRWYWx1ZXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoZXJlQ2xhdXNlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aGVyZUFyZ3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29uZmxpY3RBbGdvcml0aG0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ5aWVsZElmQ29udGVuZGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InlpZWxkSWZDb250ZW5kZWRTYWZlbHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InlpZWxkSWZDb250ZW5kZWRTYWZlbHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzbGVlcEFmdGVyWWllbGREZWxheSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNPTkZMSUNUX0FCT1JUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05GTElDVF9GQUlMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05GTElDVF9JR05PUkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTkZMSUNUX05PTkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTkZMSUNUX1JFUExBQ0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTkZMSUNUX1JPTExCQUNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDUkVBVEVfSUZfTkVDRVNTQVJZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjY4NDM1NDU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5PX0xPQ0FMSVpFRF9DT0xMQVRPUlMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUEVOX1JFQURPTkxZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUEVOX1JFQURXUklURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1FMSVRFX01BWF9MSUtFX1BBVFRFUk5fTEVOR1RIIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTAwMDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJTUUxpdGVEYXRhYmFzZS5DdXJzb3JGYWN0b3J5IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJuZXdDdXJzb3IiCisgcmV0dXJuPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYiIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlRGF0YWJhc2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1hc3RlclF1ZXJ5IiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVDdXJzb3JEcml2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVkaXRUYWJsZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icXVlcnkiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZVF1ZXJ5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJTUUxpdGVEYXRhYmFzZUNvcnJ1cHRFeGNlcHRpb24iCisgZXh0ZW5kcz0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1FMaXRlRGF0YWJhc2VDb3JydXB0RXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZURhdGFiYXNlQ29ycnVwdEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNRTGl0ZURhdGFiYXNlQ29ycnVwdEV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVEYXRhYmFzZUNvcnJ1cHRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlcnJvciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNRTGl0ZURpc2tJT0V4Y2VwdGlvbiIKKyBleHRlbmRzPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTUUxpdGVEaXNrSU9FeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlRGlza0lPRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1FMaXRlRGlza0lPRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZURpc2tJT0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVycm9yIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU1FMaXRlRG9uZUV4Y2VwdGlvbiIKKyBleHRlbmRzPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTUUxpdGVEb25lRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZURvbmVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTUUxpdGVEb25lRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZURvbmVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlcnJvciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNRTGl0ZUV4Y2VwdGlvbiIKKyBleHRlbmRzPSJhbmRyb2lkLmRhdGFiYXNlLlNRTEV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNRTGl0ZUV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTUUxpdGVFeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXJyb3IiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTUUxpdGVGdWxsRXhjZXB0aW9uIgorIGV4dGVuZHM9ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNRTGl0ZUZ1bGxFeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlRnVsbEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNRTGl0ZUZ1bGxFeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlRnVsbEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVycm9yIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU1FMaXRlTWlzdXNlRXhjZXB0aW9uIgorIGV4dGVuZHM9ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNRTGl0ZU1pc3VzZUV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVNaXN1c2VFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTUUxpdGVNaXN1c2VFeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlTWlzdXNlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXJyb3IiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTUUxpdGVPcGVuSGVscGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNRTGl0ZU9wZW5IZWxwZXIiCisgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlT3BlbkhlbHBlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmYWN0b3J5IiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVEYXRhYmFzZS5DdXJzb3JGYWN0b3J5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2ZXJzaW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZWFkYWJsZURhdGFiYXNlIgorIHJldHVybj0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlRGF0YWJhc2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRXcml0YWJsZURhdGFiYXNlIgorIHJldHVybj0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlRGF0YWJhc2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNyZWF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGIiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZURhdGFiYXNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uT3BlbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRiIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVEYXRhYmFzZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblVwZ3JhZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRiIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVEYXRhYmFzZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2xkVmVyc2lvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdWZXJzaW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU1FMaXRlUHJvZ3JhbSIKKyBleHRlbmRzPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVDbG9zYWJsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImJpbmRCbG9iIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJiaW5kRG91YmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJiaW5kTG9uZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImJpbmROdWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJiaW5kU3RyaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJCaW5kaW5ncyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbXBpbGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNxbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9yY2VDb21waWxhdGlvbiIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVbmlxdWVJZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5hdGl2ZV9iaW5kX2Jsb2IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuYXRpdmVfYmluZF9kb3VibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuYXRpdmVfYmluZF9sb25nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5hdGl2ZV9iaW5kX251bGwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuYXRpdmVfYmluZF9zdHJpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmF0aXZlX2NvbXBpbGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcWwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmF0aXZlX2ZpbmFsaXplIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkFsbFJlZmVyZW5jZXNSZWxlYXNlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJtRGF0YWJhc2UiCisgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlRGF0YWJhc2UiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im5IYW5kbGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJuU3RhdGVtZW50IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNRTGl0ZVF1ZXJ5IgorIGV4dGVuZHM9ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZVByb2dyYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU1FMaXRlUXVlcnlCdWlsZGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTUUxpdGVRdWVyeUJ1aWxkZXIiCisgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlUXVlcnlCdWlsZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZENvbHVtbnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdCdWlsZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5zIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXBwZW5kV2hlcmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbldoZXJlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZFdoZXJlRXNjYXBlU3RyaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5XaGVyZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJidWlsZFF1ZXJ5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvamVjdGlvbkluIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0aW9uQXJncyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJncm91cEJ5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYXZpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNvcnRPcmRlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGltaXQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYnVpbGRRdWVyeVN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlzdGluY3QiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRhYmxlcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1ucyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aGVyZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBCeSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGF2aW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcmRlckJ5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsaW1pdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJidWlsZFVuaW9uUXVlcnkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdWJRdWVyaWVzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNvcnRPcmRlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGltaXQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYnVpbGRVbmlvblN1YlF1ZXJ5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZURpc2NyaW1pbmF0b3JDb2x1bW4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVuaW9uQ29sdW1ucyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5zUHJlc2VudEluVGFibGUiIHR5cGU9ImphdmEudXRpbC5TZXQmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbXB1dGVkQ29sdW1uc09mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlRGlzY3JpbWluYXRvclZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGlvbkFyZ3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBCeSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGF2aW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRhYmxlcyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVlcnkiCisgcmV0dXJuPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGIiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZURhdGFiYXNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm9qZWN0aW9uSW4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3Rpb25BcmdzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwQnkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhhdmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic29ydE9yZGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InF1ZXJ5IgorIHJldHVybj0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRiIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVEYXRhYmFzZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvamVjdGlvbkluIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0aW9uQXJncyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJncm91cEJ5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYXZpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNvcnRPcmRlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGltaXQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q3Vyc29yRmFjdG9yeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY3RvcnkiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZURhdGFiYXNlLkN1cnNvckZhY3RvcnkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGlzdGluY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXN0aW5jdCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQcm9qZWN0aW9uTWFwIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uTWFwIiB0eXBlPSJqYXZhLnV0aWwuTWFwJmx0O2phdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRhYmxlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluVGFibGVzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNRTGl0ZVN0YXRlbWVudCIKKyBleHRlbmRzPSJhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVQcm9ncmFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImV4ZWN1dGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4ZWN1dGVJbnNlcnQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNpbXBsZVF1ZXJ5Rm9yTG9uZyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2ltcGxlUXVlcnlGb3JTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJTUUxpdGVUcmFuc2FjdGlvbkxpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25CZWdpbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNvbW1pdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblJvbGxiYWNrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQuZ2VzdHVyZSIKKz4KKzxjbGFzcyBuYW1lPSJHZXN0dXJlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iR2VzdHVyZSIKKyB0eXBlPSJhbmRyb2lkLmdlc3R1cmUuR2VzdHVyZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRTdHJva2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJva2UiIHR5cGU9ImFuZHJvaWQuZ2VzdHVyZS5HZXN0dXJlU3Ryb2tlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJvdW5kaW5nQm94IgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5SZWN0RiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJRCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGVuZ3RoIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3Ryb2tlcyIKKyByZXR1cm49ImphdmEudXRpbC5BcnJheUxpc3QmbHQ7YW5kcm9pZC5nZXN0dXJlLkdlc3R1cmVTdHJva2UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0cm9rZXNDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b0JpdG1hcCIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZWRnZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJudW1TYW1wbGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sb3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b0JpdG1hcCIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5zZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sb3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1BhdGgiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLlBhdGgiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9QYXRoIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5QYXRoIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhdGgiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9QYXRoIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5QYXRoIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZWRnZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJudW1TYW1wbGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1BhdGgiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLlBhdGgiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdGgiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGF0aCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVkZ2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibnVtU2FtcGxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJHZXN0dXJlTGlicmFyaWVzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJmcm9tRmlsZSIKKyByZXR1cm49ImFuZHJvaWQuZ2VzdHVyZS5HZXN0dXJlTGlicmFyeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZyb21GaWxlIgorIHJldHVybj0iYW5kcm9pZC5nZXN0dXJlLkdlc3R1cmVMaWJyYXJ5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdGgiIHR5cGU9ImphdmEuaW8uRmlsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmcm9tUHJpdmF0ZUZpbGUiCisgcmV0dXJuPSJhbmRyb2lkLmdlc3R1cmUuR2VzdHVyZUxpYnJhcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZnJvbVJhd1Jlc291cmNlIgorIHJldHVybj0iYW5kcm9pZC5nZXN0dXJlLkdlc3R1cmVMaWJyYXJ5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvdXJjZUlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iR2VzdHVyZUxpYnJhcnkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iR2VzdHVyZUxpYnJhcnkiCisgdHlwZT0iYW5kcm9pZC5nZXN0dXJlLkdlc3R1cmVMaWJyYXJ5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZEdlc3R1cmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbnRyeU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imdlc3R1cmUiIHR5cGU9ImFuZHJvaWQuZ2VzdHVyZS5HZXN0dXJlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdlc3R1cmVFbnRyaWVzIgorIHJldHVybj0iamF2YS51dGlsLlNldCZsdDtqYXZhLmxhbmcuU3RyaW5nJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRHZXN0dXJlcyIKKyByZXR1cm49ImphdmEudXRpbC5BcnJheUxpc3QmbHQ7YW5kcm9pZC5nZXN0dXJlLkdlc3R1cmUmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbnRyeU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T3JpZW50YXRpb25TdHlsZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZXF1ZW5jZVR5cGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNSZWFkT25seSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWNvZ25pemUiCisgcmV0dXJuPSJqYXZhLnV0aWwuQXJyYXlMaXN0Jmx0O2FuZHJvaWQuZ2VzdHVyZS5QcmVkaWN0aW9uJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ2VzdHVyZSIgdHlwZT0iYW5kcm9pZC5nZXN0dXJlLkdlc3R1cmUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlRW50cnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbnRyeU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlR2VzdHVyZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVudHJ5TmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ2VzdHVyZSIgdHlwZT0iYW5kcm9pZC5nZXN0dXJlLkdlc3R1cmUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2F2ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPcmllbnRhdGlvblN0eWxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3R5bGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTZXF1ZW5jZVR5cGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJtU3RvcmUiCisgdHlwZT0iYW5kcm9pZC5nZXN0dXJlLkdlc3R1cmVTdG9yZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ikdlc3R1cmVPdmVybGF5VmlldyIKKyBleHRlbmRzPSJhbmRyb2lkLndpZGdldC5GcmFtZUxheW91dCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikdlc3R1cmVPdmVybGF5VmlldyIKKyB0eXBlPSJhbmRyb2lkLmdlc3R1cmUuR2VzdHVyZU92ZXJsYXlWaWV3IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikdlc3R1cmVPdmVybGF5VmlldyIKKyB0eXBlPSJhbmRyb2lkLmdlc3R1cmUuR2VzdHVyZU92ZXJsYXlWaWV3IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJHZXN0dXJlT3ZlcmxheVZpZXciCisgdHlwZT0iYW5kcm9pZC5nZXN0dXJlLkdlc3R1cmVPdmVybGF5VmlldyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmU3R5bGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZE9uR2VzdHVyZUxpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQuZ2VzdHVyZS5HZXN0dXJlT3ZlcmxheVZpZXcuT25HZXN0dXJlTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkT25HZXN0dXJlUGVyZm9ybWVkTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5nZXN0dXJlLkdlc3R1cmVPdmVybGF5Vmlldy5Pbkdlc3R1cmVQZXJmb3JtZWRMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRPbkdlc3R1cmluZ0xpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQuZ2VzdHVyZS5HZXN0dXJlT3ZlcmxheVZpZXcuT25HZXN0dXJpbmdMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYW5jZWxDbGVhckFuaW1hdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2FuY2VsR2VzdHVyZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbmltYXRlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDdXJyZW50U3Ryb2tlIgorIHJldHVybj0iamF2YS51dGlsLkFycmF5TGlzdCZsdDthbmRyb2lkLmdlc3R1cmUuR2VzdHVyZVBvaW50Jmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGYWRlT2Zmc2V0IgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRHZXN0dXJlIgorIHJldHVybj0iYW5kcm9pZC5nZXN0dXJlLkdlc3R1cmUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R2VzdHVyZUNvbG9yIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdlc3R1cmVQYXRoIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5QYXRoIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdlc3R1cmVQYXRoIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5QYXRoIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhdGgiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R2VzdHVyZVN0cm9rZUFuZ2xlVGhyZXNob2xkIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R2VzdHVyZVN0cm9rZUxlbmd0aFRocmVzaG9sZCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdlc3R1cmVTdHJva2VTcXVhcmVuZXNzVHJlc2hvbGQiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRHZXN0dXJlU3Ryb2tlVHlwZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRHZXN0dXJlU3Ryb2tlV2lkdGgiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPcmllbnRhdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVbmNlcnRhaW5HZXN0dXJlQ29sb3IiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNFdmVudHNJbnRlcmNlcHRpb25FbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0ZhZGVFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0dlc3R1cmVWaXNpYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0dlc3R1cmluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlQWxsT25HZXN0dXJlTGlzdGVuZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVBbGxPbkdlc3R1cmVQZXJmb3JtZWRMaXN0ZW5lcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZUFsbE9uR2VzdHVyaW5nTGlzdGVuZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVPbkdlc3R1cmVMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmdlc3R1cmUuR2VzdHVyZU92ZXJsYXlWaWV3Lk9uR2VzdHVyZUxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZU9uR2VzdHVyZVBlcmZvcm1lZExpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQuZ2VzdHVyZS5HZXN0dXJlT3ZlcmxheVZpZXcuT25HZXN0dXJlUGVyZm9ybWVkTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlT25HZXN0dXJpbmdMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmdlc3R1cmUuR2VzdHVyZU92ZXJsYXlWaWV3Lk9uR2VzdHVyaW5nTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RXZlbnRzSW50ZXJjZXB0aW9uRW5hYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVuYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RmFkZUVuYWJsZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWRlRW5hYmxlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGYWRlT2Zmc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFkZU9mZnNldCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRHZXN0dXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ2VzdHVyZSIgdHlwZT0iYW5kcm9pZC5nZXN0dXJlLkdlc3R1cmUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0R2VzdHVyZUNvbG9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sb3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRHZXN0dXJlU3Ryb2tlQW5nbGVUaHJlc2hvbGQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJnZXN0dXJlU3Ryb2tlQW5nbGVUaHJlc2hvbGQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEdlc3R1cmVTdHJva2VMZW5ndGhUaHJlc2hvbGQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJnZXN0dXJlU3Ryb2tlTGVuZ3RoVGhyZXNob2xkIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRHZXN0dXJlU3Ryb2tlU3F1YXJlbmVzc1RyZXNob2xkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ2VzdHVyZVN0cm9rZVNxdWFyZW5lc3NUcmVzaG9sZCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0R2VzdHVyZVN0cm9rZVR5cGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJnZXN0dXJlU3Ryb2tlVHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEdlc3R1cmVTdHJva2VXaWR0aCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdlc3R1cmVTdHJva2VXaWR0aCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0R2VzdHVyZVZpc2libGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aXNpYmxlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9yaWVudGF0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZW50YXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRVbmNlcnRhaW5HZXN0dXJlQ29sb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iR0VTVFVSRV9TVFJPS0VfVFlQRV9NVUxUSVBMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0VTVFVSRV9TVFJPS0VfVFlQRV9TSU5HTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9SSUVOVEFUSU9OX0hPUklaT05UQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9SSUVOVEFUSU9OX1ZFUlRJQ0FMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ikdlc3R1cmVPdmVybGF5Vmlldy5Pbkdlc3R1cmVMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25HZXN0dXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdmVybGF5IiB0eXBlPSJhbmRyb2lkLmdlc3R1cmUuR2VzdHVyZU92ZXJsYXlWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uR2VzdHVyZUNhbmNlbGxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3ZlcmxheSIgdHlwZT0iYW5kcm9pZC5nZXN0dXJlLkdlc3R1cmVPdmVybGF5VmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkdlc3R1cmVFbmRlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3ZlcmxheSIgdHlwZT0iYW5kcm9pZC5nZXN0dXJlLkdlc3R1cmVPdmVybGF5VmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkdlc3R1cmVTdGFydGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdmVybGF5IiB0eXBlPSJhbmRyb2lkLmdlc3R1cmUuR2VzdHVyZU92ZXJsYXlWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iR2VzdHVyZU92ZXJsYXlWaWV3Lk9uR2VzdHVyZVBlcmZvcm1lZExpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvbkdlc3R1cmVQZXJmb3JtZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im92ZXJsYXkiIHR5cGU9ImFuZHJvaWQuZ2VzdHVyZS5HZXN0dXJlT3ZlcmxheVZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imdlc3R1cmUiIHR5cGU9ImFuZHJvaWQuZ2VzdHVyZS5HZXN0dXJlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iR2VzdHVyZU92ZXJsYXlWaWV3Lk9uR2VzdHVyaW5nTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uR2VzdHVyaW5nRW5kZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im92ZXJsYXkiIHR5cGU9ImFuZHJvaWQuZ2VzdHVyZS5HZXN0dXJlT3ZlcmxheVZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25HZXN0dXJpbmdTdGFydGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdmVybGF5IiB0eXBlPSJhbmRyb2lkLmdlc3R1cmUuR2VzdHVyZU92ZXJsYXlWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJHZXN0dXJlUG9pbnQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikdlc3R1cmVQb2ludCIKKyB0eXBlPSJhbmRyb2lkLmdlc3R1cmUuR2VzdHVyZVBvaW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0idGltZXN0YW1wIgorIHR5cGU9ImxvbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IngiCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InkiCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJHZXN0dXJlU3RvcmUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikdlc3R1cmVTdG9yZSIKKyB0eXBlPSJhbmRyb2lkLmdlc3R1cmUuR2VzdHVyZVN0b3JlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZEdlc3R1cmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbnRyeU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imdlc3R1cmUiIHR5cGU9ImFuZHJvaWQuZ2VzdHVyZS5HZXN0dXJlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdlc3R1cmVFbnRyaWVzIgorIHJldHVybj0iamF2YS51dGlsLlNldCZsdDtqYXZhLmxhbmcuU3RyaW5nJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRHZXN0dXJlcyIKKyByZXR1cm49ImphdmEudXRpbC5BcnJheUxpc3QmbHQ7YW5kcm9pZC5nZXN0dXJlLkdlc3R1cmUmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbnRyeU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T3JpZW50YXRpb25TdHlsZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZXF1ZW5jZVR5cGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzQ2hhbmdlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbSIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbSIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2xvc2VTdHJlYW0iIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlY29nbml6ZSIKKyByZXR1cm49ImphdmEudXRpbC5BcnJheUxpc3QmbHQ7YW5kcm9pZC5nZXN0dXJlLlByZWRpY3Rpb24mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJnZXN0dXJlIiB0eXBlPSJhbmRyb2lkLmdlc3R1cmUuR2VzdHVyZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVFbnRyeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVudHJ5TmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVHZXN0dXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW50cnlOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJnZXN0dXJlIiB0eXBlPSJhbmRyb2lkLmdlc3R1cmUuR2VzdHVyZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzYXZlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyZWFtIiB0eXBlPSJqYXZhLmlvLk91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2F2ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbSIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNsb3NlU3RyZWFtIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPcmllbnRhdGlvblN0eWxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3R5bGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTZXF1ZW5jZVR5cGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJPUklFTlRBVElPTl9JTlZBUklBTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9SSUVOVEFUSU9OX1NFTlNJVElWRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VRVUVOQ0VfSU5WQVJJQU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRVFVRU5DRV9TRU5TSVRJVkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJHZXN0dXJlU3Ryb2tlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJHZXN0dXJlU3Ryb2tlIgorIHR5cGU9ImFuZHJvaWQuZ2VzdHVyZS5HZXN0dXJlU3Ryb2tlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9pbnRzIiB0eXBlPSJqYXZhLnV0aWwuQXJyYXlMaXN0Jmx0O2FuZHJvaWQuZ2VzdHVyZS5HZXN0dXJlUG9pbnQmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xlYXJQYXRoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcHV0ZU9yaWVudGVkQm91bmRpbmdCb3giCisgcmV0dXJuPSJhbmRyb2lkLmdlc3R1cmUuT3JpZW50ZWRCb3VuZGluZ0JveCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXRoIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5QYXRoIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvUGF0aCIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuUGF0aCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJudW1TYW1wbGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImJvdW5kaW5nQm94IgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdEYiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Imxlbmd0aCIKKyB0eXBlPSJmbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icG9pbnRzIgorIHR5cGU9ImZsb2F0W10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJHZXN0dXJlVXRpbHMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNvbXB1dGVPcmllbnRlZEJvdW5kaW5nQm94IgorIHJldHVybj0iYW5kcm9pZC5nZXN0dXJlLk9yaWVudGVkQm91bmRpbmdCb3giCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZ2luYWxQb2ludHMiIHR5cGU9ImphdmEudXRpbC5BcnJheUxpc3QmbHQ7YW5kcm9pZC5nZXN0dXJlLkdlc3R1cmVQb2ludCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcHV0ZU9yaWVudGVkQm91bmRpbmdCb3giCisgcmV0dXJuPSJhbmRyb2lkLmdlc3R1cmUuT3JpZW50ZWRCb3VuZGluZ0JveCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnaW5hbFBvaW50cyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzcGF0aWFsU2FtcGxpbmciCisgcmV0dXJuPSJmbG9hdFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdlc3R1cmUiIHR5cGU9ImFuZHJvaWQuZ2VzdHVyZS5HZXN0dXJlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiaXRtYXBTaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3BhdGlhbFNhbXBsaW5nIgorIHJldHVybj0iZmxvYXRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJnZXN0dXJlIiB0eXBlPSJhbmRyb2lkLmdlc3R1cmUuR2VzdHVyZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYml0bWFwU2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJrZWVwQXNwZWN0UmF0aW8iIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGVtcG9yYWxTYW1wbGluZyIKKyByZXR1cm49ImZsb2F0W10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3Ryb2tlIiB0eXBlPSJhbmRyb2lkLmdlc3R1cmUuR2VzdHVyZVN0cm9rZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibnVtUG9pbnRzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iT3JpZW50ZWRCb3VuZGluZ0JveCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iY2VudGVyWCIKKyB0eXBlPSJmbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY2VudGVyWSIKKyB0eXBlPSJmbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaGVpZ2h0IgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJvcmllbnRhdGlvbiIKKyB0eXBlPSJmbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3F1YXJlbmVzcyIKKyB0eXBlPSJmbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0id2lkdGgiCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQcmVkaWN0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxmaWVsZCBuYW1lPSJuYW1lIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNjb3JlIgorIHR5cGU9ImRvdWJsZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQuZ3JhcGhpY3MiCis+Cis8Y2xhc3MgbmFtZT0iQXZvaWRYZmVybW9kZSIKKyBleHRlbmRzPSJhbmRyb2lkLmdyYXBoaWNzLlhmZXJtb2RlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXZvaWRYZmVybW9kZSIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkF2b2lkWGZlcm1vZGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcENvbG9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvbGVyYW5jZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkF2b2lkWGZlcm1vZGUuTW9kZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkF2b2lkWGZlcm1vZGUuTW9kZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRW51bSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuQXZvaWRYZmVybW9kZS5Nb2RlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVzIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5Bdm9pZFhmZXJtb2RlLk1vZGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQml0bWFwIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iY29tcHJlc3MiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwLkNvbXByZXNzRm9ybWF0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxdWFsaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbSIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29weSIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb25maWciIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwLkNvbmZpZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNNdXRhYmxlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvcHlQaXhlbHNGcm9tQnVmZmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJqYXZhLm5pby5CdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29weVBpeGVsc1RvQnVmZmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHN0IiB0eXBlPSJqYXZhLm5pby5CdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlQml0bWFwIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVCaXRtYXAiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlQml0bWFwIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLk1hdHJpeCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsdGVyIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUJpdG1hcCIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb25maWciIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwLkNvbmZpZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVCaXRtYXAiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvcnMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaWRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb25maWciIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwLkNvbmZpZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVCaXRtYXAiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvcnMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29uZmlnIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcC5Db25maWciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlU2NhbGVkQml0bWFwIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHN0V2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHN0SGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbHRlciIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVyYXNlQ29sb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXh0cmFjdEFscGhhIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXh0cmFjdEFscGhhIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhaW50IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXRYWSIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29uZmlnIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAuQ29uZmlnIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVuc2l0eSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIZWlnaHQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROaW5lUGF0Y2hDaHVuayIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQaXhlbCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGl4ZWxzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGl4ZWxzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmlkZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Um93Qnl0ZXMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTY2FsZWRIZWlnaHQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbnZhcyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2NhbGVkSGVpZ2h0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXRyaWNzIiB0eXBlPSJhbmRyb2lkLnV0aWwuRGlzcGxheU1ldHJpY3MiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2NhbGVkSGVpZ2h0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXREZW5zaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2NhbGVkV2lkdGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbnZhcyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2NhbGVkV2lkdGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1ldHJpY3MiIHR5cGU9ImFuZHJvaWQudXRpbC5EaXNwbGF5TWV0cmljcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTY2FsZWRXaWR0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0RGVuc2l0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdpZHRoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzQWxwaGEiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNNdXRhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUmVjeWNsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJlcGFyZVRvRHJhdyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVjeWNsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGVuc2l0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbnNpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQaXhlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBpeGVscyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBpeGVscyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVOU0lUWV9OT05FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQml0bWFwLkNvbXByZXNzRm9ybWF0IgorIGV4dGVuZHM9ImphdmEubGFuZy5FbnVtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAuQ29tcHJlc3NGb3JtYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZXMiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcC5Db21wcmVzc0Zvcm1hdFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCaXRtYXAuQ29uZmlnIgorIGV4dGVuZHM9ImphdmEubGFuZy5FbnVtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAuQ29uZmlnIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVzIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAuQ29uZmlnW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJpdG1hcEZhY3RvcnkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJpdG1hcEZhY3RvcnkiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXBGYWN0b3J5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlY29kZUJ5dGVBcnJheSIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcHRzIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcEZhY3RvcnkuT3B0aW9ucyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWNvZGVCeXRlQXJyYXkiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWNvZGVGaWxlIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9wdHMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwRmFjdG9yeS5PcHRpb25zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlY29kZUZpbGUiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWNvZGVGaWxlRGVzY3JpcHRvciIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZkIiB0eXBlPSJqYXZhLmlvLkZpbGVEZXNjcmlwdG9yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXRQYWRkaW5nIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9wdHMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwRmFjdG9yeS5PcHRpb25zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlY29kZUZpbGVEZXNjcmlwdG9yIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmQiIHR5cGU9ImphdmEuaW8uRmlsZURlc2NyaXB0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVjb2RlUmVzb3VyY2UiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcHRzIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcEZhY3RvcnkuT3B0aW9ucyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWNvZGVSZXNvdXJjZSIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVjb2RlUmVzb3VyY2VTdHJlYW0iCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYW5kcm9pZC51dGlsLlR5cGVkVmFsdWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlzIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYWQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3B0cyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXBGYWN0b3J5Lk9wdGlvbnMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVjb2RlU3RyZWFtIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXMiIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im91dFBhZGRpbmciIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3B0cyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXBGYWN0b3J5Lk9wdGlvbnMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVjb2RlU3RyZWFtIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXMiIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQml0bWFwRmFjdG9yeS5PcHRpb25zIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJpdG1hcEZhY3RvcnkuT3B0aW9ucyIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcEZhY3RvcnkuT3B0aW9ucyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJyZXF1ZXN0Q2FuY2VsRGVjb2RlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImluRGVuc2l0eSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpbkRpdGhlciIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW5JbnB1dFNoYXJlYWJsZSIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW5KdXN0RGVjb2RlQm91bmRzIgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpblByZWZlcnJlZENvbmZpZyIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcC5Db25maWciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpblB1cmdlYWJsZSIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW5TYW1wbGVTaXplIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImluU2NhbGVkIgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpblNjcmVlbkRlbnNpdHkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW5UYXJnZXREZW5zaXR5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImluVGVtcFN0b3JhZ2UiCisgdHlwZT0iYnl0ZVtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibUNhbmNlbCIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ib3V0SGVpZ2h0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im91dE1pbWVUeXBlIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJvdXRXaWR0aCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQml0bWFwU2hhZGVyIgorIGV4dGVuZHM9ImFuZHJvaWQuZ3JhcGhpY3MuU2hhZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQml0bWFwU2hhZGVyIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwU2hhZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYml0bWFwIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGlsZVgiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuU2hhZGVyLlRpbGVNb2RlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aWxlWSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5TaGFkZXIuVGlsZU1vZGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCbHVyTWFza0ZpbHRlciIKKyBleHRlbmRzPSJhbmRyb2lkLmdyYXBoaWNzLk1hc2tGaWx0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCbHVyTWFza0ZpbHRlciIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJsdXJNYXNrRmlsdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmFkaXVzIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3R5bGUiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQmx1ck1hc2tGaWx0ZXIuQmx1ciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJsdXJNYXNrRmlsdGVyLkJsdXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkVudW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLkJsdXJNYXNrRmlsdGVyLkJsdXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZXMiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLkJsdXJNYXNrRmlsdGVyLkJsdXJbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2FtZXJhIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDYW1lcmEiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5DYW1lcmEiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYXBwbHlUb0NhbnZhcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbnZhcyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZG90V2l0aE5vcm1hbCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImR4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkeiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF0cml4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF0cml4IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLk1hdHJpeCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXN0b3JlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJvdGF0ZVgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZyIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icm90YXRlWSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVnIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyb3RhdGVaIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZWciIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNhdmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idHJhbnNsYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InoiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNhbnZhcyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2FudmFzIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2FudmFzIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYml0bWFwIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2FudmFzIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ2wiIHR5cGU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLm9wZW5nbGVzLkdMIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xpcFBhdGgiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhdGgiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9wIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlZ2lvbi5PcCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGlwUGF0aCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdGgiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGF0aCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGlwUmVjdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlY3QiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdEYiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9wIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlZ2lvbi5PcCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGlwUmVjdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlY3QiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3AiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVnaW9uLk9wIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsaXBSZWN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWN0IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3RGIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsaXBSZWN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWN0IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xpcFJlY3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZWZ0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9wIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmlnaHQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3R0b20iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWdpb24uT3AiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xpcFJlY3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b3AiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaWdodCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xpcFJlY3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9wIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsaXBSZWdpb24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWdpb24iIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVnaW9uIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWdpb24uT3AiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xpcFJlZ2lvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlZ2lvbiIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWdpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29uY2F0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF0cml4IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLk1hdHJpeCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmF3QVJHQiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImEiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJnIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmF3QXJjIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3ZhbCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0RiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnRBbmdsZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN3ZWVwQW5nbGUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1c2VDZW50ZXIiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhaW50IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYXdCaXRtYXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiaXRtYXAiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZWZ0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9wIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhd0JpdG1hcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJpdG1hcCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkc3QiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdEYiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhaW50IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYXdCaXRtYXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiaXRtYXAiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHN0IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhaW50IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYXdCaXRtYXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvcnMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaWRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imhhc0FscGhhIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYWludCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYWludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmF3Qml0bWFwIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sb3JzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmlkZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imhhc0FscGhhIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYWludCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYWludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmF3Qml0bWFwIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYml0bWFwIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF0cml4IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLk1hdHJpeCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhd0JpdG1hcE1lc2giCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiaXRtYXAiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXNoV2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzaEhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2ZXJ0cyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmVydE9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvcnMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvck9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYWludCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYWludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmF3Q2lyY2xlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3giIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjeSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJhZGl1cyIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhaW50IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYXdDb2xvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbG9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhd0NvbG9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sb3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5Qb3J0ZXJEdWZmLk1vZGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhd0xpbmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydFgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydFkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdG9wWCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0b3BZIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhd0xpbmVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwdHMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYWludCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYWludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmF3TGluZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwdHMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhaW50IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYXdPdmFsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3ZhbCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0RiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhd1BhaW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhd1BhdGgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhdGgiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhaW50IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYXdQaWN0dXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGljdHVyZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QaWN0dXJlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYXdQaWN0dXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGljdHVyZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QaWN0dXJlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkc3QiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdEYiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhd1BpY3R1cmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwaWN0dXJlIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBpY3R1cmUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRzdCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYXdQb2ludCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYWludCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYWludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmF3UG9pbnRzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwdHMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYWludCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYWludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmF3UG9pbnRzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHRzIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYWludCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYWludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmF3UG9zVGV4dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYWludCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYWludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmF3UG9zVGV4dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvcyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhd1JHQiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhd1JlY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWN0IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3RGIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYWludCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYWludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmF3UmVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhd1JlY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZWZ0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9wIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmlnaHQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3R0b20iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYWludCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYWludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmF3Um91bmRSZWN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVjdCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0RiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icngiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyeSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhaW50IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYXdUZXh0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhaW50IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYXdUZXh0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhaW50IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYXdUZXh0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhd1RleHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYWludCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYWludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmF3VGV4dE9uUGF0aCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYXRoIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoT2Zmc2V0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idk9mZnNldCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhaW50IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYXdUZXh0T25QYXRoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYXRoIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoT2Zmc2V0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idk9mZnNldCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhaW50IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYXdWZXJ0aWNlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzLlZlcnRleE1vZGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZlcnRleENvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZlcnRzIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2ZXJ0T2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleE9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvcnMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvck9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRpY2VzIiB0eXBlPSJzaG9ydFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleE9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleENvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhaW50IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZyZWVHbENhY2hlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDbGlwQm91bmRzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYm91bmRzIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2xpcEJvdW5kcyIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlbnNpdHkiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RHJhd0ZpbHRlciIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuRHJhd0ZpbHRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRHTCIKKyByZXR1cm49ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLm9wZW5nbGVzLkdMIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhlaWdodCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1hdHJpeCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN0bSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5NYXRyaXgiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF0cml4IgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5NYXRyaXgiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTYXZlQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRXaWR0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzT3BhcXVlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InF1aWNrUmVqZWN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVjdCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0RiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMuRWRnZVR5cGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVpY2tSZWplY3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhdGgiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzLkVkZ2VUeXBlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InF1aWNrUmVqZWN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVmdCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvcCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJpZ2h0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYm90dG9tIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMuRWRnZVR5cGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzdG9yZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXN0b3JlVG9Db3VudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2F2ZUNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icm90YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZWdyZWVzIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyb3RhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZ3JlZXMiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJweCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InB5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzYXZlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2F2ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzYXZlRmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzYXZlTGF5ZXIiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdW5kcyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0RiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNhdmVGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNhdmVMYXllciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVmdCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvcCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJpZ2h0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYm90dG9tIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNhdmVGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNhdmVMYXllckFscGhhIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJib3VuZHMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdEYiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFscGhhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNhdmVGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNhdmVMYXllckFscGhhIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZWZ0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9wIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmlnaHQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3R0b20iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbHBoYSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzYXZlRmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzY2FsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3giIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzeSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2NhbGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3kiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJweCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InB5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCaXRtYXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiaXRtYXAiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERlbnNpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZW5zaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RHJhd0ZpbHRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbHRlciIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5EcmF3RmlsdGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE1hdHJpeCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1hdHJpeCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5NYXRyaXgiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Vmlld3BvcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJza2V3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzeCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0cmFuc2xhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImR4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQUxMX1NBVkVfRkxBRyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNMSVBfU0FWRV9GTEFHIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDTElQX1RPX0xBWUVSX1NBVkVfRkxBRyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZVTExfQ09MT1JfTEFZRVJfU0FWRV9GTEFHIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIQVNfQUxQSEFfTEFZRVJfU0FWRV9GTEFHIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNQVRSSVhfU0FWRV9GTEFHIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2FudmFzLkVkZ2VUeXBlIgorIGV4dGVuZHM9ImphdmEubGFuZy5FbnVtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMuRWRnZVR5cGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZXMiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLkNhbnZhcy5FZGdlVHlwZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDYW52YXMuVmVydGV4TW9kZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRW51bSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzLlZlcnRleE1vZGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZXMiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLkNhbnZhcy5WZXJ0ZXhNb2RlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbG9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb2xvciIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkNvbG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9IkhTVlRvQ29sb3IiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaHN2IiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IkhTVlRvQ29sb3IiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxwaGEiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaHN2IiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IlJHQlRvSFNWIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JlZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoc3YiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWxwaGEiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sb3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcmdiIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFscGhhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJncmVlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJibHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYmx1ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbG9yVG9IU1YiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbG9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhzdiIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJncmVlbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlQ29sb3IiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sb3JTdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbG9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmdiIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJncmVlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJibHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJCTEFDSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xNjc3NzIxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJCTFVFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTE2Nzc2OTYxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNZQU4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMTY3MTE2ODEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREtHUkFZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEyMzAzMjkyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdSQVkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItNzgyOTM2OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHUkVFTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xNjcxMTkzNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMVEdSQVkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMzM1NTQ0NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNQUdFTlRBIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTY1MjgxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii02NTUzNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUUkFOU1BBUkVOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0hJVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJZRUxMT1ciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMjU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb2xvckZpbHRlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29sb3JGaWx0ZXIiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5Db2xvckZpbHRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb2xvck1hdHJpeCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29sb3JNYXRyaXgiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5Db2xvck1hdHJpeCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbG9yTWF0cml4IgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ29sb3JNYXRyaXgiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbG9yTWF0cml4IgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ29sb3JNYXRyaXgiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ29sb3JNYXRyaXgiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRBcnJheSIKKyByZXR1cm49ImZsb2F0W10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwb3N0Q29uY2F0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zdG1hdHJpeCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5Db2xvck1hdHJpeCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmVDb25jYXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcmVtYXRyaXgiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ29sb3JNYXRyaXgiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5Db2xvck1hdHJpeCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29uY2F0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF0QSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5Db2xvck1hdHJpeCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF0QiIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5Db2xvck1hdHJpeCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSR0IyWVVWIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSb3RhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJheGlzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZ3JlZXMiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNhdHVyYXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzYXQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNjYWxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iclNjYWxlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ1NjYWxlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYlNjYWxlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYVNjYWxlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRZVVYyUkdCIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb2xvck1hdHJpeENvbG9yRmlsdGVyIgorIGV4dGVuZHM9ImFuZHJvaWQuZ3JhcGhpY3MuQ29sb3JGaWx0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb2xvck1hdHJpeENvbG9yRmlsdGVyIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ29sb3JNYXRyaXhDb2xvckZpbHRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1hdHJpeCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5Db2xvck1hdHJpeCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29sb3JNYXRyaXhDb2xvckZpbHRlciIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkNvbG9yTWF0cml4Q29sb3JGaWx0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbXBvc2VQYXRoRWZmZWN0IgorIGV4dGVuZHM9ImFuZHJvaWQuZ3JhcGhpY3MuUGF0aEVmZmVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbXBvc2VQYXRoRWZmZWN0IgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ29tcG9zZVBhdGhFZmZlY3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXRlcnBlIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhdGhFZmZlY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlubmVycGUiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGF0aEVmZmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbXBvc2VTaGFkZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC5ncmFwaGljcy5TaGFkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb21wb3NlU2hhZGVyIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ29tcG9zZVNoYWRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNoYWRlckEiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuU2hhZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzaGFkZXJCIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlNoYWRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5YZmVybW9kZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29tcG9zZVNoYWRlciIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkNvbXBvc2VTaGFkZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaGFkZXJBIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlNoYWRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2hhZGVyQiIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5TaGFkZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUG9ydGVyRHVmZi5Nb2RlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29ybmVyUGF0aEVmZmVjdCIKKyBleHRlbmRzPSJhbmRyb2lkLmdyYXBoaWNzLlBhdGhFZmZlY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb3JuZXJQYXRoRWZmZWN0IgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ29ybmVyUGF0aEVmZmVjdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJhZGl1cyIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEYXNoUGF0aEVmZmVjdCIKKyBleHRlbmRzPSJhbmRyb2lkLmdyYXBoaWNzLlBhdGhFZmZlY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEYXNoUGF0aEVmZmVjdCIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkRhc2hQYXRoRWZmZWN0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZXJ2YWxzIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwaGFzZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEaXNjcmV0ZVBhdGhFZmZlY3QiCisgZXh0ZW5kcz0iYW5kcm9pZC5ncmFwaGljcy5QYXRoRWZmZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGlzY3JldGVQYXRoRWZmZWN0IgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuRGlzY3JldGVQYXRoRWZmZWN0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VnbWVudExlbmd0aCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRldmlhdGlvbiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEcmF3RmlsdGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEcmF3RmlsdGVyIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuRHJhd0ZpbHRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJFbWJvc3NNYXNrRmlsdGVyIgorIGV4dGVuZHM9ImFuZHJvaWQuZ3JhcGhpY3MuTWFza0ZpbHRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkVtYm9zc01hc2tGaWx0ZXIiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5FbWJvc3NNYXNrRmlsdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlyZWN0aW9uIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbWJpZW50IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3BlY3VsYXIiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJibHVyUmFkaXVzIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkltYWdlRm9ybWF0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbWFnZUZvcm1hdCIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkltYWdlRm9ybWF0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEJpdHNQZXJQaXhlbCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkpQRUciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTlYxNiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5WMjEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSR0JfNTY1IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVTktOT1dOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJZVVkyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkludGVycG9sYXRvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW50ZXJwb2xhdG9yIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuSW50ZXJwb2xhdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWVDb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnRlcnBvbGF0b3IiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5JbnRlcnBvbGF0b3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZUNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZyYW1lQ291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEtleUZyYW1lQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWYWx1ZUNvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZUNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZUNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZyYW1lQ291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRLZXlGcmFtZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZWMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWVzIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEtleUZyYW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNlYyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJsZW5kIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJlcGVhdE1pcnJvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcGVhdENvdW50IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWlycm9yIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRpbWVUb1ZhbHVlcyIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuSW50ZXJwb2xhdG9yLlJlc3VsdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWVzIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRpbWVUb1ZhbHVlcyIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuSW50ZXJwb2xhdG9yLlJlc3VsdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNlYyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW50ZXJwb2xhdG9yLlJlc3VsdCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRW51bSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuSW50ZXJwb2xhdG9yLlJlc3VsdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlcyIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuSW50ZXJwb2xhdG9yLlJlc3VsdFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJMYXllclJhc3Rlcml6ZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC5ncmFwaGljcy5SYXN0ZXJpemVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGF5ZXJSYXN0ZXJpemVyIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuTGF5ZXJSYXN0ZXJpemVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZExheWVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImR4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZExheWVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTGlnaHRpbmdDb2xvckZpbHRlciIKKyBleHRlbmRzPSJhbmRyb2lkLmdyYXBoaWNzLkNvbG9yRmlsdGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGlnaHRpbmdDb2xvckZpbHRlciIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkxpZ2h0aW5nQ29sb3JGaWx0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtdWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWRkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJMaW5lYXJHcmFkaWVudCIKKyBleHRlbmRzPSJhbmRyb2lkLmdyYXBoaWNzLlNoYWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxpbmVhckdyYWRpZW50IgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuTGluZWFyR3JhZGllbnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4MCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkwIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieDEiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5MSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbG9ycyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9ucyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGlsZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5TaGFkZXIuVGlsZU1vZGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxpbmVhckdyYWRpZW50IgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuTGluZWFyR3JhZGllbnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4MCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkwIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieDEiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5MSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbG9yMCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvcjEiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGlsZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5TaGFkZXIuVGlsZU1vZGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNYXNrRmlsdGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNYXNrRmlsdGVyIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuTWFza0ZpbHRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNYXRyaXgiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1hdHJpeCIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLk1hdHJpeCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1hdHJpeCIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLk1hdHJpeCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5NYXRyaXgiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRWYWx1ZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW52ZXJ0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW52ZXJzZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5NYXRyaXgiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNJZGVudGl0eSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWFwUG9pbnRzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHN0IiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkc3RJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNyY0luZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvaW50Q291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYXBQb2ludHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkc3QiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYXBQb2ludHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwdHMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWFwUmFkaXVzIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJhZGl1cyIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWFwUmVjdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRzdCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0RiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3RGIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1hcFJlY3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWN0IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3RGIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1hcFZlY3RvcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkc3QiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRzdEluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmVjdG9yQ291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYXBWZWN0b3JzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHN0IiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWFwVmVjdG9ycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZlY3MiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9zdENvbmNhdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im90aGVyIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLk1hdHJpeCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwb3N0Um90YXRlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVncmVlcyIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InB4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBvc3RSb3RhdGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZWdyZWVzIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwb3N0U2NhbGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzeCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJweSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9zdFNjYWxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3giIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzeSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9zdFNrZXciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJreCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imt5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJweSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9zdFNrZXciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJreCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imt5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwb3N0VHJhbnNsYXRlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkeSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJlQ29uY2F0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3RoZXIiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuTWF0cml4Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByZVJvdGF0ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZ3JlZXMiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJweCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InB5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmVSb3RhdGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZWdyZWVzIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmVTY2FsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3kiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJweCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InB5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmVTY2FsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3kiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByZVNrZXciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJreCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imt5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJweSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJlU2tldyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imt4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia3kiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByZVRyYW5zbGF0ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImR4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlY3RTdGF5c1JlY3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuTWF0cml4Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbmNhdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImEiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuTWF0cml4Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLk1hdHJpeCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQb2x5VG9Qb2x5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzcmNJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkc3QiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRzdEluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvaW50Q291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZWN0VG9SZWN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3RGIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkc3QiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdEYiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0ZiIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5NYXRyaXguU2NhbGVUb0ZpdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSb3RhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZWdyZWVzIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJweSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Um90YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVncmVlcyIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2NhbGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzeCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJweSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2NhbGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzeCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTaW5Db3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaW5WYWx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvc1ZhbHVlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJweSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2luQ29zIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2luVmFsdWUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3NWYWx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2tldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imt4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia3kiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJweCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InB5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTa2V3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia3giIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJreSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VHJhbnNsYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkeSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VmFsdWVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWVzIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvU2hvcnRTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iTVBFUlNQXzAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1QRVJTUF8xIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNUEVSU1BfMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTVNDQUxFX1giCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1TQ0FMRV9ZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNU0tFV19YIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNU0tFV19ZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNVFJBTlNfWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTVRSQU5TX1kiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNYXRyaXguU2NhbGVUb0ZpdCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRW51bSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuTWF0cml4LlNjYWxlVG9GaXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZXMiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLk1hdHJpeC5TY2FsZVRvRml0W10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik1vdmllIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZGVjb2RlQnl0ZUFycmF5IgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5Nb3ZpZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlY29kZUZpbGUiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLk1vdmllIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdGhOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlY29kZVN0cmVhbSIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuTW92aWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpcyIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmF3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYW52YXMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhaW50IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYW52YXMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHVyYXRpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoZWlnaHQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc09wYXF1ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUaW1lIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWxhdGl2ZU1pbGxpc2Vjb25kcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndpZHRoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTmluZVBhdGNoIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOaW5lUGF0Y2giCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5OaW5lUGF0Y2giCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiaXRtYXAiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaHVuayIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzcmNOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZHJhdyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbnZhcyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3RGIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYW52YXMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYW52YXMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYWludCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYWludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZW5zaXR5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhlaWdodCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUcmFuc3BhcmVudFJlZ2lvbiIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuUmVnaW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V2lkdGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzQWxwaGEiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNOaW5lUGF0Y2hDaHVuayIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaHVuayIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBhaW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYWludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQYWludCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGFpbnQiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYWludCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBhaW50IgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQYWludCIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhc2NlbnQiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImJyZWFrVGV4dCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYXhXaWR0aCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1lYXN1cmVkV2lkdGgiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYnJlYWtUZXh0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVhc3VyZUZvcndhcmRzIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYXhXaWR0aCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1lYXN1cmVkV2lkdGgiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYnJlYWtUZXh0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZWFzdXJlRm9yd2FyZHMiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1heFdpZHRoIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVhc3VyZWRXaWR0aCIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhclNoYWRvd0xheWVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZXNjZW50IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbHBoYSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbG9yIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sb3JGaWx0ZXIiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLkNvbG9yRmlsdGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpbGxQYXRoIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhdGgiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRzdCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYXRoIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZsYWdzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Rm9udE1ldHJpY3MiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXRyaWNzIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50LkZvbnRNZXRyaWNzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZvbnRNZXRyaWNzIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5QYWludC5Gb250TWV0cmljcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGb250TWV0cmljc0ludCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmbWkiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQuRm9udE1ldHJpY3NJbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Rm9udE1ldHJpY3NJbnQiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50LkZvbnRNZXRyaWNzSW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZvbnRTcGFjaW5nIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWFza0ZpbHRlciIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuTWFza0ZpbHRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXRoRWZmZWN0IgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5QYXRoRWZmZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJhc3Rlcml6ZXIiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLlJhc3Rlcml6ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2hhZGVyIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5TaGFkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3Ryb2tlQ2FwIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5QYWludC5DYXAiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3Ryb2tlSm9pbiIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQuSm9pbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdHJva2VNaXRlciIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3Ryb2tlV2lkdGgiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0eWxlIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5QYWludC5TdHlsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUZXh0QWxpZ24iCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50LkFsaWduIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRleHRCb3VuZHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYm91bmRzIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGV4dEJvdW5kcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYm91bmRzIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGV4dFBhdGgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYXRoIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRleHRQYXRoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYXRoIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRleHRTY2FsZVgiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRleHRTaXplIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUZXh0U2tld1giCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRleHRXaWR0aHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGhzIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRleHRXaWR0aHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aHMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGV4dFdpZHRocyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRocyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUZXh0V2lkdGhzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aHMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHlwZWZhY2UiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLlR5cGVmYWNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFhmZXJtb2RlIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5YZmVybW9kZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0FudGlBbGlhcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0RpdGhlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0Zha2VCb2xkVGV4dCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0ZpbHRlckJpdG1hcCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0xpbmVhclRleHQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTdHJpa2VUaHJ1VGV4dCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1N1YnBpeGVsVGV4dCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1VuZGVybGluZVRleHQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWVhc3VyZVRleHQiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1lYXN1cmVUZXh0IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1lYXN1cmVUZXh0IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWVhc3VyZVRleHQiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYWludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBUkdCIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImciIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFscGhhIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QW50aUFsaWFzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhYSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb2xvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sb3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb2xvckZpbHRlciIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuQ29sb3JGaWx0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbHRlciIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5Db2xvckZpbHRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREaXRoZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpdGhlciIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGYWtlQm9sZFRleHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZha2VCb2xkVGV4dCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGaWx0ZXJCaXRtYXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbHRlciIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGbGFncyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMaW5lYXJUZXh0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaW5lYXJUZXh0IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE1hc2tGaWx0ZXIiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLk1hc2tGaWx0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1hc2tmaWx0ZXIiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuTWFza0ZpbHRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQYXRoRWZmZWN0IgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5QYXRoRWZmZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlZmZlY3QiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGF0aEVmZmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSYXN0ZXJpemVyIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5SYXN0ZXJpemVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyYXN0ZXJpemVyIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJhc3Rlcml6ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2hhZGVyIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5TaGFkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNoYWRlciIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5TaGFkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2hhZG93TGF5ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJhZGl1cyIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImR4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN0cmlrZVRocnVUZXh0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpa2VUaHJ1VGV4dCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTdHJva2VDYXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXAiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQuQ2FwIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN0cm9rZUpvaW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJqb2luIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50LkpvaW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3Ryb2tlTWl0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1pdGVyIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTdHJva2VXaWR0aCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN0eWxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3R5bGUiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQuU3R5bGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3VicGl4ZWxUZXh0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdWJwaXhlbFRleHQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGV4dEFsaWduIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxpZ24iIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQuQWxpZ24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGV4dFNjYWxlWCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NhbGVYIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUZXh0U2l6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dFNpemUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRleHRTa2V3WCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2tld1giIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFR5cGVmYWNlIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5UeXBlZmFjZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZWZhY2UiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuVHlwZWZhY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VW5kZXJsaW5lVGV4dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idW5kZXJsaW5lVGV4dCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRYZmVybW9kZSIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuWGZlcm1vZGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InhmZXJtb2RlIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlhmZXJtb2RlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQU5USV9BTElBU19GTEFHIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERVZfS0VSTl9URVhUX0ZMQUciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRElUSEVSX0ZMQUciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZBS0VfQk9MRF9URVhUX0ZMQUciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGSUxURVJfQklUTUFQX0ZMQUciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxJTkVBUl9URVhUX0ZMQUciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVFJJS0VfVEhSVV9URVhUX0ZMQUciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVUJQSVhFTF9URVhUX0ZMQUciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVU5ERVJMSU5FX1RFWFRfRkxBRyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBhaW50LkFsaWduIgorIGV4dGVuZHM9ImphdmEubGFuZy5FbnVtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5QYWludC5BbGlnbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlcyIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQuQWxpZ25bXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUGFpbnQuQ2FwIgorIGV4dGVuZHM9ImphdmEubGFuZy5FbnVtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5QYWludC5DYXAiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZXMiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50LkNhcFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQYWludC5Gb250TWV0cmljcyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQYWludC5Gb250TWV0cmljcyIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50LkZvbnRNZXRyaWNzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iYXNjZW50IgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYm90dG9tIgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGVzY2VudCIKKyB0eXBlPSJmbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxlYWRpbmciCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0b3AiCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUGFpbnQuRm9udE1ldHJpY3NJbnQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGFpbnQuRm9udE1ldHJpY3NJbnQiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYWludC5Gb250TWV0cmljc0ludCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9ImFzY2VudCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJib3R0b20iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGVzY2VudCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsZWFkaW5nIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRvcCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUGFpbnQuSm9pbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRW51bSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQuSm9pbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlcyIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQuSm9pbltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQYWludC5TdHlsZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRW51bSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQuU3R5bGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZXMiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50LlN0eWxlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBhaW50RmxhZ3NEcmF3RmlsdGVyIgorIGV4dGVuZHM9ImFuZHJvaWQuZ3JhcGhpY3MuRHJhd0ZpbHRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBhaW50RmxhZ3NEcmF3RmlsdGVyIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnRGbGFnc0RyYXdGaWx0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbGVhckJpdHMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2V0Qml0cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUGF0aCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGF0aCIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhdGgiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQYXRoIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGF0aCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYXRoIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkQXJjIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3ZhbCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0RiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnRBbmdsZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN3ZWVwQW5nbGUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZENpcmNsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmFkaXVzIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlyIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhdGguRGlyZWN0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZE92YWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdmFsIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3RGIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaXIiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGF0aC5EaXJlY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkUGF0aCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYXRoIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkeCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImR5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRQYXRoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhdGgiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkUGF0aCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYXRoIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYXRyaXgiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuTWF0cml4Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZFJlY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWN0IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3RGIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaXIiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGF0aC5EaXJlY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkUmVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b3AiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaWdodCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRpciIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYXRoLkRpcmVjdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRSb3VuZFJlY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWN0IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3RGIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyeCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJ5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlyIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhdGguRGlyZWN0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZFJvdW5kUmVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlY3QiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdEYiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJhZGlpIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaXIiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGF0aC5EaXJlY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXJjVG8iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdmFsIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3RGIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydEFuZ2xlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3dlZXBBbmdsZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcmNlTW92ZVRvIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFyY1RvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3ZhbCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0RiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnRBbmdsZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN3ZWVwQW5nbGUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb3NlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wdXRlQm91bmRzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYm91bmRzIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3RGIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleGFjdCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjdWJpY1RvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieDEiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5MSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngyIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieTIiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4MyIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkzIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGaWxsVHlwZSIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuUGF0aC5GaWxsVHlwZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbmNSZXNlcnZlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXh0cmFQdENvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNFbXB0eSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNJbnZlcnNlRmlsbFR5cGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUmVjdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlY3QiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdEYiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGluZVRvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1vdmVUbyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvZmZzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkeCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImR5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHN0IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhdGgiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib2Zmc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkeSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVhZFRvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieDEiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5MSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngyIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieTIiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJDdWJpY1RvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieDEiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5MSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngyIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieTIiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4MyIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkzIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyTGluZVRvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkeSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ick1vdmVUbyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImR4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJRdWFkVG8iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkeDEiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkeTEiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkeDIiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkeTIiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXdpbmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYXRoIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZpbGxUeXBlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZnQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGF0aC5GaWxsVHlwZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMYXN0UG9pbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkeCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImR5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b2dnbGVJbnZlcnNlRmlsbFR5cGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRyYW5zZm9ybSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1hdHJpeCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5NYXRyaXgiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRzdCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYXRoIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRyYW5zZm9ybSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1hdHJpeCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5NYXRyaXgiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUGF0aC5EaXJlY3Rpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLkVudW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLlBhdGguRGlyZWN0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVzIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5QYXRoLkRpcmVjdGlvbltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQYXRoLkZpbGxUeXBlIgorIGV4dGVuZHM9ImphdmEubGFuZy5FbnVtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5QYXRoLkZpbGxUeXBlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVzIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5QYXRoLkZpbGxUeXBlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBhdGhEYXNoUGF0aEVmZmVjdCIKKyBleHRlbmRzPSJhbmRyb2lkLmdyYXBoaWNzLlBhdGhFZmZlY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQYXRoRGFzaFBhdGhFZmZlY3QiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYXRoRGFzaFBhdGhFZmZlY3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaGFwZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYXRoIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhZHZhbmNlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGhhc2UiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdHlsZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYXRoRGFzaFBhdGhFZmZlY3QuU3R5bGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQYXRoRGFzaFBhdGhFZmZlY3QuU3R5bGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkVudW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLlBhdGhEYXNoUGF0aEVmZmVjdC5TdHlsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlcyIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuUGF0aERhc2hQYXRoRWZmZWN0LlN0eWxlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBhdGhFZmZlY3QiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBhdGhFZmZlY3QiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYXRoRWZmZWN0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBhdGhNZWFzdXJlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQYXRoTWVhc3VyZSIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhdGhNZWFzdXJlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGF0aE1lYXN1cmUiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYXRoTWVhc3VyZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdGgiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGF0aCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9yY2VDbG9zZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRMZW5ndGgiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYXRyaXgiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXN0YW5jZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1hdHJpeCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5NYXRyaXgiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UG9zVGFuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlzdGFuY2UiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3MiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRhbiIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZWdtZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnREIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RvcEQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkc3QiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGF0aCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnRXaXRoTW92ZVRvIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ2xvc2VkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0Q29udG91ciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGF0aCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdGgiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGF0aCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9yY2VDbG9zZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJQT1NJVElPTl9NQVRSSVhfRkxBRyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEFOR0VOVF9NQVRSSVhfRkxBRyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBpY3R1cmUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBpY3R1cmUiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QaWN0dXJlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGljdHVyZSIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBpY3R1cmUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGljdHVyZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImJlZ2luUmVjb3JkaW5nIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUZyb21TdHJlYW0iCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLlBpY3R1cmUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyZWFtIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYW52YXMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZFJlY29yZGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SGVpZ2h0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V2lkdGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvU3RyZWFtIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyZWFtIiB0eXBlPSJqYXZhLmlvLk91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQaXhlbEZvcm1hdCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGl4ZWxGb3JtYXQiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QaXhlbEZvcm1hdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJmb3JtYXRIYXNBbHBoYSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9ybWF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGl4ZWxGb3JtYXRJbmZvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcm1hdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmZvIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBpeGVsRm9ybWF0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQV84IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJKUEVHIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTEFfODgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMXzgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QQVFVRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJHQkFfNDQ0NCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkdCQV81NTUxIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSR0JBXzg4ODgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJHQlhfODg4OCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkdCXzMzMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjExIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJHQl81NjUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJHQl84ODgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRSQU5TTFVDRU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFJBTlNQQVJFTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVTktOT1dOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJZQ2JDcl80MjBfU1AiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IllDYkNyXzQyMl9JIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJZQ2JDcl80MjJfU1AiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJpdHNQZXJQaXhlbCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJieXRlc1BlclBpeGVsIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQaXhlbFhvclhmZXJtb2RlIgorIGV4dGVuZHM9ImFuZHJvaWQuZ3JhcGhpY3MuWGZlcm1vZGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQaXhlbFhvclhmZXJtb2RlIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGl4ZWxYb3JYZmVybW9kZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9wQ29sb3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBvaW50IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQb2ludCIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBvaW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUG9pbnQiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5Qb2ludCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQb2ludCIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBvaW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBvaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZXF1YWxzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZWdhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib2Zmc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkeCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkeSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0ieCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQb2ludEYiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBvaW50RiIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBvaW50RiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBvaW50RiIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBvaW50RiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUG9pbnRGIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUG9pbnRGIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5Qb2ludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImVxdWFscyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxlbmd0aCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGVuZ3RoIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5lZ2F0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvZmZzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImR4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5Qb2ludEYiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJ4IgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ieSIKKyB0eXBlPSJmbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQb3J0ZXJEdWZmIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQb3J0ZXJEdWZmIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUG9ydGVyRHVmZiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQb3J0ZXJEdWZmLk1vZGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkVudW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLlBvcnRlckR1ZmYuTW9kZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlcyIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuUG9ydGVyRHVmZi5Nb2RlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBvcnRlckR1ZmZDb2xvckZpbHRlciIKKyBleHRlbmRzPSJhbmRyb2lkLmdyYXBoaWNzLkNvbG9yRmlsdGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUG9ydGVyRHVmZkNvbG9yRmlsdGVyIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUG9ydGVyRHVmZkNvbG9yRmlsdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjQ29sb3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5Qb3J0ZXJEdWZmLk1vZGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQb3J0ZXJEdWZmWGZlcm1vZGUiCisgZXh0ZW5kcz0iYW5kcm9pZC5ncmFwaGljcy5YZmVybW9kZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBvcnRlckR1ZmZYZmVybW9kZSIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBvcnRlckR1ZmZYZmVybW9kZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUG9ydGVyRHVmZi5Nb2RlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmFkaWFsR3JhZGllbnQiCisgZXh0ZW5kcz0iYW5kcm9pZC5ncmFwaGljcy5TaGFkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSYWRpYWxHcmFkaWVudCIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJhZGlhbEdyYWRpZW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyYWRpdXMiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvcnMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbnMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRpbGUiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuU2hhZGVyLlRpbGVNb2RlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSYWRpYWxHcmFkaWVudCIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJhZGlhbEdyYWRpZW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyYWRpdXMiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvcjAiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sb3IxIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRpbGUiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuU2hhZGVyLlRpbGVNb2RlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmFzdGVyaXplciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmFzdGVyaXplciIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJhc3Rlcml6ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmVjdCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVjdCIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZWN0IgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9wIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZWN0IgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNlbnRlclgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjZW50ZXJZIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29udGFpbnMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb250YWlucyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9wIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbnRhaW5zIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhhY3RDZW50ZXJYIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJleGFjdENlbnRlclkiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZsYXR0ZW5Ub1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGVpZ2h0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5zZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkeCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkeSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImludGVyc2VjdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9wIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImludGVyc2VjdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnRlcnNlY3RzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVmdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b3AiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYm90dG9tIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW50ZXJzZWN0cyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNFbXB0eSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvZmZzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkeCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkeSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9mZnNldFRvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3TGVmdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdUb3AiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkRnJvbVBhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZWZ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvcCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3R0b20iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFbXB0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW50ZXJzZWN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic29ydCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9TaG9ydFN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5mbGF0dGVuRnJvbVN0cmluZyIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5pb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZWZ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvcCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3R0b20iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bmlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bmlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndpZHRoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJvdHRvbSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsZWZ0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InJpZ2h0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRvcCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmVjdEYiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZWN0RiIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3RGIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVjdEYiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0RiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b3AiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaWdodCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlY3RGIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdEYiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3RGIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZWN0RiIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3RGIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2VudGVyWCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2VudGVyWSIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29udGFpbnMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29udGFpbnMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZWZ0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9wIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmlnaHQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3R0b20iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbnRhaW5zIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0RiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImhlaWdodCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5zZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkeCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImR5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnRlcnNlY3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZWZ0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9wIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmlnaHQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3R0b20iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImludGVyc2VjdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdEYiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW50ZXJzZWN0cyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b3AiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaWdodCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW50ZXJzZWN0cyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0RiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0RiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0VtcHR5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9mZnNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImR4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9mZnNldFRvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3TGVmdCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1RvcCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZEZyb21QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbiIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icm91bmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkc3QiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyb3VuZE91dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRzdCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b3AiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaWdodCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3RGIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVtcHR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJbnRlcnNlY3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3RGIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3RGIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNvcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVuaW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVmdCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvcCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJpZ2h0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYm90dG9tIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bmlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdEYiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5pb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id2lkdGgiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJib3R0b20iCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsZWZ0IgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icmlnaHQiCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0b3AiCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmVnaW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVnaW9uIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVnaW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVnaW9uIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVnaW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVnaW9uIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlZ2lvbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVnaW9uIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVnaW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZWdpb24iCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWdpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZWZ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvcCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3R0b20iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNvbnRhaW5zIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJvdW5kYXJ5UGF0aCIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuUGF0aCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCb3VuZGFyeVBhdGgiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhdGgiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Qm91bmRzIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5SZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJvdW5kcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0NvbXBsZXgiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNFbXB0eSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1JlY3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3AiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9wIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlZ2lvbi5PcCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9wIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWdpb24uT3AiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3AiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWdpb24iIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVnaW9uIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWdpb24uT3AiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3AiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWN0IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlZ2lvbiIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWdpb24iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9wIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlZ2lvbi5PcCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlZ2lvbjEiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVnaW9uIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWdpb24yIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlZ2lvbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3AiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVnaW9uLk9wIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InF1aWNrQ29udGFpbnMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVpY2tDb250YWlucyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVmdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b3AiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYm90dG9tIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVpY2tSZWplY3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVpY2tSZWplY3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9wIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InF1aWNrUmVqZWN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZ24iIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVnaW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlZ2lvbiIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWdpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9wIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVtcHR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQYXRoIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYXRoIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjbGlwIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlZ2lvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0cmFuc2xhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkeCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkeSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRyYW5zbGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHN0IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlZ2lvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bmlvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJlZ2lvbi5PcCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRW51bSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuUmVnaW9uLk9wIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVzIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5SZWdpb24uT3BbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmVnaW9uSXRlcmF0b3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlZ2lvbkl0ZXJhdG9yIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVnaW9uSXRlcmF0b3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWdpb24iIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVnaW9uIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ibmV4dCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNoYWRlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2hhZGVyIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuU2hhZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldExvY2FsTWF0cml4IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxNIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLk1hdHJpeCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMb2NhbE1hdHJpeCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsTSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5NYXRyaXgiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2hhZGVyLlRpbGVNb2RlIgorIGV4dGVuZHM9ImphdmEubGFuZy5FbnVtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5TaGFkZXIuVGlsZU1vZGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZXMiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLlNoYWRlci5UaWxlTW9kZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTdW1QYXRoRWZmZWN0IgorIGV4dGVuZHM9ImFuZHJvaWQuZ3JhcGhpY3MuUGF0aEVmZmVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN1bVBhdGhFZmZlY3QiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5TdW1QYXRoRWZmZWN0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlyc3QiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGF0aEVmZmVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2Vjb25kIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhdGhFZmZlY3QiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTd2VlcEdyYWRpZW50IgorIGV4dGVuZHM9ImFuZHJvaWQuZ3JhcGhpY3MuU2hhZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3dlZXBHcmFkaWVudCIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlN3ZWVwR3JhZGllbnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjeCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImN5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sb3JzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb25zIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTd2VlcEdyYWRpZW50IgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuU3dlZXBHcmFkaWVudCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3kiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvcjAiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sb3IxIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUeXBlZmFjZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZSIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuVHlwZWZhY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFtaWx5TmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3R5bGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGUiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLlR5cGVmYWNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhbWlseSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5UeXBlZmFjZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3R5bGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVGcm9tQXNzZXQiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLlR5cGVmYWNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1nciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5Bc3NldE1hbmFnZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhdGgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlRnJvbUZpbGUiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLlR5cGVmYWNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdGgiIHR5cGU9ImphdmEuaW8uRmlsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVGcm9tRmlsZSIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuVHlwZWZhY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWZhdWx0RnJvbVN0eWxlIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5UeXBlZmFjZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0eWxlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQm9sZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0l0YWxpYyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkJPTEQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJPTERfSVRBTElDIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuVHlwZWZhY2UiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVGQVVMVF9CT0xEIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuVHlwZWZhY2UiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSVRBTElDIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNT05PU1BBQ0UiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5UeXBlZmFjZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOT1JNQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNBTlNfU0VSSUYiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5UeXBlZmFjZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRVJJRiIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlR5cGVmYWNlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJYZmVybW9kZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iWGZlcm1vZGUiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5YZmVybW9kZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJZdXZJbWFnZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iWXV2SW1hZ2UiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5ZdXZJbWFnZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Inl1diIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmlkZXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY29tcHJlc3NUb0pwZWciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWN0YW5nbGUiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icXVhbGl0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdHJlYW0iIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhlaWdodCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdHJpZGVzIgorIHJldHVybj0iaW50W10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V2lkdGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0WXV2RGF0YSIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRZdXZGb3JtYXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlIgorPgorPGludGVyZmFjZSBuYW1lPSJBbmltYXRhYmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iaXNSdW5uaW5nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0b3AiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkFuaW1hdGlvbkRyYXdhYmxlIgorIGV4dGVuZHM9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGVDb250YWluZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuQW5pbWF0YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFuaW1hdGlvbkRyYXdhYmxlIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuQW5pbWF0aW9uRHJhd2FibGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkRnJhbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmcmFtZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHVyYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREdXJhdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZyYW1lIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROdW1iZXJPZkZyYW1lcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc09uZVNob3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUnVubmluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icnVuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPbmVTaG90IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib25lU2hvdCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RvcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQml0bWFwRHJhd2FibGUiCisgZXh0ZW5kcz0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJpdG1hcERyYXdhYmxlIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuQml0bWFwRHJhd2FibGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJpdG1hcERyYXdhYmxlIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuQml0bWFwRHJhd2FibGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCaXRtYXBEcmF3YWJsZSIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkJpdG1hcERyYXdhYmxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiaXRtYXAiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCaXRtYXBEcmF3YWJsZSIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkJpdG1hcERyYXdhYmxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYml0bWFwIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQml0bWFwRHJhd2FibGUiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5CaXRtYXBEcmF3YWJsZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsZXBhdGgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJpdG1hcERyYXdhYmxlIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuQml0bWFwRHJhd2FibGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlcGF0aCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQml0bWFwRHJhd2FibGUiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5CaXRtYXBEcmF3YWJsZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXMiIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJpdG1hcERyYXdhYmxlIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuQml0bWFwRHJhd2FibGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpcyIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRyYXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYW52YXMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJpdG1hcCIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29uc3RhbnRTdGF0ZSIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUuQ29uc3RhbnRTdGF0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdyYXZpdHkiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T3BhY2l0eSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYWludCIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaWxlTW9kZVgiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLlNoYWRlci5UaWxlTW9kZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaWxlTW9kZVkiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLlNoYWRlci5UaWxlTW9kZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBbHBoYSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFscGhhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QW50aUFsaWFzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWEiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29sb3JGaWx0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjZiIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5Db2xvckZpbHRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRHcmF2aXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3Jhdml0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRhcmdldERlbnNpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYW52YXMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRhcmdldERlbnNpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXRyaWNzIiB0eXBlPSJhbmRyb2lkLnV0aWwuRGlzcGxheU1ldHJpY3MiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGFyZ2V0RGVuc2l0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbnNpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUaWxlTW9kZVgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlNoYWRlci5UaWxlTW9kZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUaWxlTW9kZVhZIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieG1vZGUiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuU2hhZGVyLlRpbGVNb2RlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5bW9kZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5TaGFkZXIuVGlsZU1vZGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGlsZU1vZGVZIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlNoYWRlci5UaWxlTW9kZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDbGlwRHJhd2FibGUiCisgZXh0ZW5kcz0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZS5DYWxsYmFjayI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2xpcERyYXdhYmxlIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuQ2xpcERyYXdhYmxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHJhd2FibGUiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImdyYXZpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZW50YXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRyYXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYW52YXMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9wYWNpdHkiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW52YWxpZGF0ZURyYXdhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hvIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNjaGVkdWxlRHJhd2FibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aG8iIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoYXQiIHR5cGU9ImphdmEubGFuZy5SdW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2hlbiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBbHBoYSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFscGhhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29sb3JGaWx0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjZiIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5Db2xvckZpbHRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bnNjaGVkdWxlRHJhd2FibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aG8iIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoYXQiIHR5cGU9ImphdmEubGFuZy5SdW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkhPUklaT05UQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlZFUlRJQ0FMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29sb3JEcmF3YWJsZSIKKyBleHRlbmRzPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29sb3JEcmF3YWJsZSIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkNvbG9yRHJhd2FibGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb2xvckRyYXdhYmxlIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuQ29sb3JEcmF3YWJsZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbG9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkcmF3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FudmFzIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkNhbnZhcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbHBoYSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPcGFjaXR5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFscGhhIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxwaGEiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb2xvckZpbHRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbG9yRmlsdGVyIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkNvbG9yRmlsdGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRyYXdhYmxlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRyYXdhYmxlIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xlYXJDb2xvckZpbHRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29weUJvdW5kcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYm91bmRzIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29weUJvdW5kcyIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUZyb21QYXRoIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVGcm9tUmVzb3VyY2VTdHJlYW0iCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJhbmRyb2lkLnV0aWwuVHlwZWRWYWx1ZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXMiIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNyY05hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlRnJvbVJlc291cmNlU3RyZWFtIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYW5kcm9pZC51dGlsLlR5cGVkVmFsdWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlzIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzcmNOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcHRzIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcEZhY3RvcnkuT3B0aW9ucyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVGcm9tU3RyZWFtIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpcyIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVGcm9tWG1sIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyc2VyIiB0eXBlPSJvcmcueG1scHVsbC52MS5YbWxQdWxsUGFyc2VyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVGcm9tWG1sSW5uZXIiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJzZXIiIHR5cGU9Im9yZy54bWxwdWxsLnYxLlhtbFB1bGxQYXJzZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmF3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYW52YXMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJvdW5kcyIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoYW5naW5nQ29uZmlndXJhdGlvbnMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29uc3RhbnRTdGF0ZSIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUuQ29uc3RhbnRTdGF0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDdXJyZW50IgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnRyaW5zaWNIZWlnaHQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW50cmluc2ljV2lkdGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGV2ZWwiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNaW5pbXVtSGVpZ2h0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1pbmltdW1XaWR0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPcGFjaXR5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFkZGluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhZGRpbmciIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdGF0ZSIKKyByZXR1cm49ImludFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRyYW5zcGFyZW50UmVnaW9uIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5SZWdpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5mbGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJzZXIiIHR5cGU9Im9yZy54bWxwdWxsLnYxLlhtbFB1bGxQYXJzZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnZhbGlkYXRlU2VsZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTdGF0ZWZ1bCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNWaXNpYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im11dGF0ZSIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Cb3VuZHNDaGFuZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJib3VuZHMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkxldmVsQ2hhbmdlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGV2ZWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblN0YXRlQ2hhbmdlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdGUiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc29sdmVPcGFjaXR5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9wMSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcDIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzY2hlZHVsZVNlbGYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aGF0IiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoZW4iIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QWxwaGEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFscGhhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Qm91bmRzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVmdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b3AiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYm90dG9tIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Qm91bmRzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYm91bmRzIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2FsbGJhY2siCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNiIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlLkNhbGxiYWNrIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENoYW5naW5nQ29uZmlndXJhdGlvbnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb25maWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29sb3JGaWx0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNmIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkNvbG9yRmlsdGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbG9yRmlsdGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sb3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5Qb3J0ZXJEdWZmLk1vZGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGl0aGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGl0aGVyIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZpbHRlckJpdG1hcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbHRlciIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMZXZlbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGV2ZWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTdGF0ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlU2V0IiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRWaXNpYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlzaWJsZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdGFydCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bnNjaGVkdWxlU2VsZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndoYXQiIHR5cGU9ImphdmEubGFuZy5SdW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iRHJhd2FibGUuQ2FsbGJhY2siCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImludmFsaWRhdGVEcmF3YWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hvIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNjaGVkdWxlRHJhd2FibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndobyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2hhdCIgdHlwZT0iamF2YS5sYW5nLlJ1bm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aGVuIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVuc2NoZWR1bGVEcmF3YWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hvIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aGF0IiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkRyYXdhYmxlLkNvbnN0YW50U3RhdGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEcmF3YWJsZS5Db25zdGFudFN0YXRlIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUuQ29uc3RhbnRTdGF0ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDaGFuZ2luZ0NvbmZpZ3VyYXRpb25zIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3RHJhd2FibGUiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3RHJhd2FibGUiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRyYXdhYmxlQ29udGFpbmVyIgorIGV4dGVuZHM9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUuQ2FsbGJhY2siPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRyYXdhYmxlQ29udGFpbmVyIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGVDb250YWluZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZHJhdyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbnZhcyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T3BhY2l0eSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnZhbGlkYXRlRHJhd2FibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aG8iIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2NoZWR1bGVEcmF3YWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndobyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2hhdCIgdHlwZT0iamF2YS5sYW5nLlJ1bm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aGVuIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbGVjdERyYXdhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWR4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QWxwaGEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbHBoYSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbG9yRmlsdGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2YiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ29sb3JGaWx0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29uc3RhbnRTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlQ29udGFpbmVyLkRyYXdhYmxlQ29udGFpbmVyU3RhdGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5zY2hlZHVsZURyYXdhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hvIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aGF0IiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRHJhd2FibGVDb250YWluZXIuRHJhd2FibGVDb250YWluZXJTdGF0ZSIKKyBleHRlbmRzPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlLkNvbnN0YW50U3RhdGUiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImFkZENoaWxkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRyIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNhbkNvbnN0YW50U3RhdGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hhbmdpbmdDb25maWd1cmF0aW9ucyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDaGlsZENvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hpbGRyZW4iCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb25zdGFudEhlaWdodCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbnN0YW50TWluaW11bUhlaWdodCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbnN0YW50TWluaW11bVdpZHRoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29uc3RhbnRQYWRkaW5nIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5SZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29uc3RhbnRXaWR0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9wYWNpdHkiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJncm93QXJyYXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvbGRTaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1NpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0NvbnN0YW50U2l6ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1N0YXRlZnVsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbnN0YW50U2l6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29uc3RhbnQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VmFyaWFibGVQYWRkaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YXJpYWJsZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJHcmFkaWVudERyYXdhYmxlIgorIGV4dGVuZHM9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJHcmFkaWVudERyYXdhYmxlIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuR3JhZGllbnREcmF3YWJsZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkdyYWRpZW50RHJhd2FibGUiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5HcmFkaWVudERyYXdhYmxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZW50YXRpb24iIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuR3JhZGllbnREcmF3YWJsZS5PcmllbnRhdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sb3JzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRyYXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYW52YXMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9wYWNpdHkiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QWxwaGEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbHBoYSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbG9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJnYiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbG9yRmlsdGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2YiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ29sb3JGaWx0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29ybmVyUmFkaWkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyYWRpaSIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb3JuZXJSYWRpdXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyYWRpdXMiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEdyYWRpZW50Q2VudGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEdyYWRpZW50UmFkaXVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JhZGllbnRSYWRpdXMiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEdyYWRpZW50VHlwZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImdyYWRpZW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2hhcGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaGFwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTdHJva2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN0cm9rZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbG9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhc2hXaWR0aCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhc2hHYXAiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFVzZUxldmVsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXNlTGV2ZWwiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJMSU5FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMSU5FQVJfR1JBRElFTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9WQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJBRElBTF9HUkFESUVOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkVDVEFOR0xFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSSU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTV0VFUF9HUkFESUVOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkdyYWRpZW50RHJhd2FibGUuT3JpZW50YXRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLkVudW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkdyYWRpZW50RHJhd2FibGUuT3JpZW50YXRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZXMiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkdyYWRpZW50RHJhd2FibGUuT3JpZW50YXRpb25bXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW5zZXREcmF3YWJsZSIKKyBleHRlbmRzPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlLkNhbGxiYWNrIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnNldERyYXdhYmxlIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuSW5zZXREcmF3YWJsZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRyYXdhYmxlIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnNldERyYXdhYmxlIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuSW5zZXREcmF3YWJsZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRyYXdhYmxlIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnNldExlZnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5zZXRUb3AiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5zZXRSaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnNldEJvdHRvbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZHJhdyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbnZhcyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T3BhY2l0eSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnZhbGlkYXRlRHJhd2FibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aG8iIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2NoZWR1bGVEcmF3YWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndobyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2hhdCIgdHlwZT0iamF2YS5sYW5nLlJ1bm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aGVuIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFscGhhIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxwaGEiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb2xvckZpbHRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNmIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkNvbG9yRmlsdGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVuc2NoZWR1bGVEcmF3YWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndobyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2hhdCIgdHlwZT0iamF2YS5sYW5nLlJ1bm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkxheWVyRHJhd2FibGUiCisgZXh0ZW5kcz0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZS5DYWxsYmFjayI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGF5ZXJEcmF3YWJsZSIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkxheWVyRHJhd2FibGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsYXllcnMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRyYXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYW52YXMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmREcmF3YWJsZUJ5TGF5ZXJJZCIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RHJhd2FibGUiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE51bWJlck9mTGF5ZXJzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9wYWNpdHkiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW52YWxpZGF0ZURyYXdhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hvIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNjaGVkdWxlRHJhd2FibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aG8iIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoYXQiIHR5cGU9ImphdmEubGFuZy5SdW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2hlbiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBbHBoYSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFscGhhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29sb3JGaWx0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjZiIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5Db2xvckZpbHRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREcmF3YWJsZUJ5TGF5ZXJJZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRyYXdhYmxlIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldElkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMYXllckluc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVuc2NoZWR1bGVEcmF3YWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndobyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2hhdCIgdHlwZT0iamF2YS5sYW5nLlJ1bm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkxldmVsTGlzdERyYXdhYmxlIgorIGV4dGVuZHM9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGVDb250YWluZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMZXZlbExpc3REcmF3YWJsZSIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkxldmVsTGlzdERyYXdhYmxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZExldmVsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG93IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhpZ2giIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHJhd2FibGUiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTmluZVBhdGNoRHJhd2FibGUiCisgZXh0ZW5kcz0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik5pbmVQYXRjaERyYXdhYmxlIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuTmluZVBhdGNoRHJhd2FibGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJpdG1hcCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNodW5rIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhZGRpbmciIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTmluZVBhdGNoRHJhd2FibGUiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5OaW5lUGF0Y2hEcmF3YWJsZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJpdG1hcCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNodW5rIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhZGRpbmciIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTmluZVBhdGNoRHJhd2FibGUiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5OaW5lUGF0Y2hEcmF3YWJsZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0Y2giIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuTmluZVBhdGNoIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOaW5lUGF0Y2hEcmF3YWJsZSIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLk5pbmVQYXRjaERyYXdhYmxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0Y2giIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuTmluZVBhdGNoIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZHJhdyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbnZhcyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T3BhY2l0eSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYWludCIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QWxwaGEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbHBoYSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbG9yRmlsdGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2YiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ29sb3JGaWx0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGFyZ2V0RGVuc2l0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbnZhcyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGFyZ2V0RGVuc2l0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1ldHJpY3MiIHR5cGU9ImFuZHJvaWQudXRpbC5EaXNwbGF5TWV0cmljcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUYXJnZXREZW5zaXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVuc2l0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBhaW50RHJhd2FibGUiCisgZXh0ZW5kcz0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5TaGFwZURyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGFpbnREcmF3YWJsZSIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLlBhaW50RHJhd2FibGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQYWludERyYXdhYmxlIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuUGFpbnREcmF3YWJsZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbG9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJzZXRDb3JuZXJSYWRpaSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJhZGlpIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvcm5lclJhZGl1cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJhZGl1cyIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUGljdHVyZURyYXdhYmxlIgorIGV4dGVuZHM9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQaWN0dXJlRHJhd2FibGUiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5QaWN0dXJlRHJhd2FibGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwaWN0dXJlIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBpY3R1cmUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkcmF3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FudmFzIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkNhbnZhcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPcGFjaXR5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBpY3R1cmUiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLlBpY3R1cmUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QWxwaGEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbHBoYSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbG9yRmlsdGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sb3JGaWx0ZXIiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ29sb3JGaWx0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGljdHVyZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBpY3R1cmUiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGljdHVyZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSb3RhdGVEcmF3YWJsZSIKKyBleHRlbmRzPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlLkNhbGxiYWNrIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSb3RhdGVEcmF3YWJsZSIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLlJvdGF0ZURyYXdhYmxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRyYXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYW52YXMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERyYXdhYmxlIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPcGFjaXR5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImludmFsaWRhdGVEcmF3YWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndobyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzY2hlZHVsZURyYXdhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hvIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aGF0IiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoZW4iIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QWxwaGEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbHBoYSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbG9yRmlsdGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2YiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ29sb3JGaWx0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5zY2hlZHVsZURyYXdhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hvIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aGF0IiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2NhbGVEcmF3YWJsZSIKKyBleHRlbmRzPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlLkNhbGxiYWNrIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTY2FsZURyYXdhYmxlIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuU2NhbGVEcmF3YWJsZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRyYXdhYmxlIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJncmF2aXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNjYWxlV2lkdGgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY2FsZUhlaWdodCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkcmF3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FudmFzIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkNhbnZhcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREcmF3YWJsZSIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T3BhY2l0eSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnZhbGlkYXRlRHJhd2FibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aG8iIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2NoZWR1bGVEcmF3YWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndobyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2hhdCIgdHlwZT0iamF2YS5sYW5nLlJ1bm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aGVuIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFscGhhIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxwaGEiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb2xvckZpbHRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNmIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkNvbG9yRmlsdGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVuc2NoZWR1bGVEcmF3YWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndobyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2hhdCIgdHlwZT0iamF2YS5sYW5nLlJ1bm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNoYXBlRHJhd2FibGUiCisgZXh0ZW5kcz0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNoYXBlRHJhd2FibGUiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5TaGFwZURyYXdhYmxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2hhcGVEcmF3YWJsZSIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLlNoYXBlRHJhd2FibGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLnNoYXBlcy5TaGFwZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRyYXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYW52YXMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9wYWNpdHkiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFpbnQiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNoYWRlckZhY3RvcnkiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLlNoYXBlRHJhd2FibGUuU2hhZGVyRmFjdG9yeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaGFwZSIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuc2hhcGVzLlNoYXBlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluZmxhdGVUYWciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyc2VyIiB0eXBlPSJvcmcueG1scHVsbC52MS5YbWxQdWxsUGFyc2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkRyYXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaGFwZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5zaGFwZXMuU2hhcGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbnZhcyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhaW50IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFscGhhIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxwaGEiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb2xvckZpbHRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNmIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkNvbG9yRmlsdGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEludHJpbnNpY0hlaWdodCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEludHJpbnNpY1dpZHRoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQYWRkaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVmdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b3AiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYm90dG9tIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGFkZGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhZGRpbmciIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTaGFkZXJGYWN0b3J5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFjdCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5TaGFwZURyYXdhYmxlLlNoYWRlckZhY3RvcnkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2hhcGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLnNoYXBlcy5TaGFwZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTaGFwZURyYXdhYmxlLlNoYWRlckZhY3RvcnkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTaGFwZURyYXdhYmxlLlNoYWRlckZhY3RvcnkiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5TaGFwZURyYXdhYmxlLlNoYWRlckZhY3RvcnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0icmVzaXplIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5TaGFkZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3RhdGVMaXN0RHJhd2FibGUiCisgZXh0ZW5kcz0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZUNvbnRhaW5lciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN0YXRlTGlzdERyYXdhYmxlIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuU3RhdGVMaXN0RHJhd2FibGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkU3RhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0ZVNldCIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRyYXdhYmxlIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlRyYW5zaXRpb25EcmF3YWJsZSIKKyBleHRlbmRzPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkxheWVyRHJhd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUuQ2FsbGJhY2siPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRyYW5zaXRpb25EcmF3YWJsZSIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLlRyYW5zaXRpb25EcmF3YWJsZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxheWVycyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iaXNDcm9zc0ZhZGVFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldFRyYW5zaXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJldmVyc2VUcmFuc2l0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHVyYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDcm9zc0ZhZGVFbmFibGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5hYmxlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydFRyYW5zaXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkdXJhdGlvbk1pbGxpcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5zaGFwZXMiCis+Cis8Y2xhc3MgbmFtZT0iQXJjU2hhcGUiCisgZXh0ZW5kcz0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5zaGFwZXMuUmVjdFNoYXBlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXJjU2hhcGUiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5zaGFwZXMuQXJjU2hhcGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydEFuZ2xlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3dlZXBBbmdsZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJPdmFsU2hhcGUiCisgZXh0ZW5kcz0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5zaGFwZXMuUmVjdFNoYXBlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iT3ZhbFNoYXBlIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuc2hhcGVzLk92YWxTaGFwZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQYXRoU2hhcGUiCisgZXh0ZW5kcz0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5zaGFwZXMuU2hhcGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQYXRoU2hhcGUiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5zaGFwZXMuUGF0aFNoYXBlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYXRoIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGRXaWR0aCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0ZEhlaWdodCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkcmF3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FudmFzIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkNhbnZhcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmVjdFNoYXBlIgorIGV4dGVuZHM9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuc2hhcGVzLlNoYXBlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVjdFNoYXBlIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuc2hhcGVzLlJlY3RTaGFwZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkcmF3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FudmFzIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkNhbnZhcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVjdCIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdEYiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSb3VuZFJlY3RTaGFwZSIKKyBleHRlbmRzPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLnNoYXBlcy5SZWN0U2hhcGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSb3VuZFJlY3RTaGFwZSIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLnNoYXBlcy5Sb3VuZFJlY3RTaGFwZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dGVyUmFkaWkiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imluc2V0IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3RGIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbm5lclJhZGlpIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2hhcGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ2xvbmVhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTaGFwZSIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLnNoYXBlcy5TaGFwZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuc2hhcGVzLlNoYXBlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkNsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbnZhcyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhaW50IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhlaWdodCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V2lkdGgiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc0FscGhhIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblJlc2l6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQuaGFyZHdhcmUiCis+Cis8Y2xhc3MgbmFtZT0iQ2FtZXJhIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYWRkQ2FsbGJhY2tCdWZmZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsbGJhY2tCdWZmZXIiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhdXRvRm9jdXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNiIiB0eXBlPSJhbmRyb2lkLmhhcmR3YXJlLkNhbWVyYS5BdXRvRm9jdXNDYWxsYmFjayI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYW5jZWxBdXRvRm9jdXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFyYW1ldGVycyIKKyByZXR1cm49ImFuZHJvaWQuaGFyZHdhcmUuQ2FtZXJhLlBhcmFtZXRlcnMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9jayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wZW4iCisgcmV0dXJuPSJhbmRyb2lkLmhhcmR3YXJlLkNhbWVyYSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlY29ubmVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWxlYXNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERpc3BsYXlPcmllbnRhdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZWdyZWVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RXJyb3JDYWxsYmFjayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2IiIHR5cGU9ImFuZHJvaWQuaGFyZHdhcmUuQ2FtZXJhLkVycm9yQ2FsbGJhY2siPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25lU2hvdFByZXZpZXdDYWxsYmFjayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2IiIHR5cGU9ImFuZHJvaWQuaGFyZHdhcmUuQ2FtZXJhLlByZXZpZXdDYWxsYmFjayI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQYXJhbWV0ZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJhbmRyb2lkLmhhcmR3YXJlLkNhbWVyYS5QYXJhbWV0ZXJzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByZXZpZXdDYWxsYmFjayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2IiIHR5cGU9ImFuZHJvaWQuaGFyZHdhcmUuQ2FtZXJhLlByZXZpZXdDYWxsYmFjayI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQcmV2aWV3Q2FsbGJhY2tXaXRoQnVmZmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYiIgdHlwZT0iYW5kcm9pZC5oYXJkd2FyZS5DYW1lcmEuUHJldmlld0NhbGxiYWNrIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByZXZpZXdEaXNwbGF5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob2xkZXIiIHR5cGU9ImFuZHJvaWQudmlldy5TdXJmYWNlSG9sZGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRab29tQ2hhbmdlTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmhhcmR3YXJlLkNhbWVyYS5Pblpvb21DaGFuZ2VMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydFByZXZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydFNtb290aFpvb20iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdG9wUHJldmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0b3BTbW9vdGhab29tIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGFrZVBpY3R1cmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNodXR0ZXIiIHR5cGU9ImFuZHJvaWQuaGFyZHdhcmUuQ2FtZXJhLlNodXR0ZXJDYWxsYmFjayI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmF3IiB0eXBlPSJhbmRyb2lkLmhhcmR3YXJlLkNhbWVyYS5QaWN0dXJlQ2FsbGJhY2siPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImpwZWciIHR5cGU9ImFuZHJvaWQuaGFyZHdhcmUuQ2FtZXJhLlBpY3R1cmVDYWxsYmFjayI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0YWtlUGljdHVyZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2h1dHRlciIgdHlwZT0iYW5kcm9pZC5oYXJkd2FyZS5DYW1lcmEuU2h1dHRlckNhbGxiYWNrIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyYXciIHR5cGU9ImFuZHJvaWQuaGFyZHdhcmUuQ2FtZXJhLlBpY3R1cmVDYWxsYmFjayI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zdHZpZXciIHR5cGU9ImFuZHJvaWQuaGFyZHdhcmUuQ2FtZXJhLlBpY3R1cmVDYWxsYmFjayI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ianBlZyIgdHlwZT0iYW5kcm9pZC5oYXJkd2FyZS5DYW1lcmEuUGljdHVyZUNhbGxiYWNrIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVubG9jayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ0FNRVJBX0VSUk9SX1NFUlZFUl9ESUVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNBTUVSQV9FUlJPUl9VTktOT1dOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkNhbWVyYS5BdXRvRm9jdXNDYWxsYmFjayIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25BdXRvRm9jdXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN1Y2Nlc3MiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbWVyYSIgdHlwZT0iYW5kcm9pZC5oYXJkd2FyZS5DYW1lcmEiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJDYW1lcmEuRXJyb3JDYWxsYmFjayIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25FcnJvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXJyb3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FtZXJhIiB0eXBlPSJhbmRyb2lkLmhhcmR3YXJlLkNhbWVyYSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkNhbWVyYS5Pblpvb21DaGFuZ2VMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25ab29tQ2hhbmdlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ6b29tVmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RvcHBlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FtZXJhIiB0eXBlPSJhbmRyb2lkLmhhcmR3YXJlLkNhbWVyYSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ2FtZXJhLlBhcmFtZXRlcnMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJmbGF0dGVuIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QW50aWJhbmRpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbG9yRWZmZWN0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeHBvc3VyZUNvbXBlbnNhdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeHBvc3VyZUNvbXBlbnNhdGlvblN0ZXAiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGbGFzaE1vZGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZvY2FsTGVuZ3RoIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Rm9jdXNNb2RlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIb3Jpem9udGFsVmlld0FuZ2xlIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SnBlZ1F1YWxpdHkiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SnBlZ1RodW1ibmFpbFF1YWxpdHkiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SnBlZ1RodW1ibmFpbFNpemUiCisgcmV0dXJuPSJhbmRyb2lkLmhhcmR3YXJlLkNhbWVyYS5TaXplIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1heEV4cG9zdXJlQ29tcGVuc2F0aW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1heFpvb20iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWluRXhwb3N1cmVDb21wZW5zYXRpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGljdHVyZUZvcm1hdCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQaWN0dXJlU2l6ZSIKKyByZXR1cm49ImFuZHJvaWQuaGFyZHdhcmUuQ2FtZXJhLlNpemUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJldmlld0Zvcm1hdCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcmV2aWV3RnJhbWVSYXRlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByZXZpZXdTaXplIgorIHJldHVybj0iYW5kcm9pZC5oYXJkd2FyZS5DYW1lcmEuU2l6ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTY2VuZU1vZGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1cHBvcnRlZEFudGliYW5kaW5nIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3VwcG9ydGVkQ29sb3JFZmZlY3RzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3VwcG9ydGVkRmxhc2hNb2RlcyIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1cHBvcnRlZEZvY3VzTW9kZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDtqYXZhLmxhbmcuU3RyaW5nJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdXBwb3J0ZWRKcGVnVGh1bWJuYWlsU2l6ZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLmhhcmR3YXJlLkNhbWVyYS5TaXplJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdXBwb3J0ZWRQaWN0dXJlRm9ybWF0cyIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2phdmEubGFuZy5JbnRlZ2VyJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdXBwb3J0ZWRQaWN0dXJlU2l6ZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLmhhcmR3YXJlLkNhbWVyYS5TaXplJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdXBwb3J0ZWRQcmV2aWV3Rm9ybWF0cyIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2phdmEubGFuZy5JbnRlZ2VyJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdXBwb3J0ZWRQcmV2aWV3RnJhbWVSYXRlcyIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2phdmEubGFuZy5JbnRlZ2VyJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdXBwb3J0ZWRQcmV2aWV3U2l6ZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLmhhcmR3YXJlLkNhbWVyYS5TaXplJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdXBwb3J0ZWRTY2VuZU1vZGVzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3VwcG9ydGVkV2hpdGVCYWxhbmNlIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmVydGljYWxWaWV3QW5nbGUiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRXaGl0ZUJhbGFuY2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFpvb20iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Wm9vbVJhdGlvcyIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2phdmEubGFuZy5JbnRlZ2VyJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1Ntb290aFpvb21TdXBwb3J0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzWm9vbVN1cHBvcnRlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZUdwc0RhdGEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFudGliYW5kaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYW50aWJhbmRpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29sb3JFZmZlY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFeHBvc3VyZUNvbXBlbnNhdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Rmxhc2hNb2RlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Rm9jdXNNb2RlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0R3BzQWx0aXR1ZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbHRpdHVkZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEdwc0xhdGl0dWRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGF0aXR1ZGUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRHcHNMb25naXR1ZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb25naXR1ZGUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRHcHNQcm9jZXNzaW5nTWV0aG9kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvY2Vzc2luZ19tZXRob2QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0R3BzVGltZXN0YW1wIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZXN0YW1wIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEpwZWdRdWFsaXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icXVhbGl0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEpwZWdUaHVtYm5haWxRdWFsaXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icXVhbGl0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEpwZWdUaHVtYm5haWxTaXplIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGljdHVyZUZvcm1hdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBpeGVsX2Zvcm1hdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBpY3R1cmVTaXplIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UHJldmlld0Zvcm1hdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBpeGVsX2Zvcm1hdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByZXZpZXdGcmFtZVJhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmcHMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQcmV2aWV3U2l6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJvdGF0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icm90YXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTY2VuZU1vZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRXaGl0ZUJhbGFuY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRab29tIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bmZsYXR0ZW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmbGF0dGVuZWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBTlRJQkFORElOR181MEhaIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90OzUwaHomcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQU5USUJBTkRJTkdfNjBIWiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDs2MGh6JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFOVElCQU5ESU5HX0FVVE8iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YXV0byZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBTlRJQkFORElOR19PRkYiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7b2ZmJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVGRkVDVF9BUVVBIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FxdWEmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUZGRUNUX0JMQUNLQk9BUkQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YmxhY2tib2FyZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFRkZFQ1RfTU9OTyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDttb25vJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVGRkVDVF9ORUdBVElWRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtuZWdhdGl2ZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFRkZFQ1RfTk9ORSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtub25lJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVGRkVDVF9QT1NURVJJWkUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cG9zdGVyaXplJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVGRkVDVF9TRVBJQSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzZXBpYSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFRkZFQ1RfU09MQVJJWkUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c29sYXJpemUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUZGRUNUX1dISVRFQk9BUkQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7d2hpdGVib2FyZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFTSF9NT0RFX0FVVE8iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YXV0byZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFTSF9NT0RFX09GRiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtvZmYmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBU0hfTU9ERV9PTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtvbiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFTSF9NT0RFX1JFRF9FWUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cmVkLWV5ZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFTSF9NT0RFX1RPUkNIIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3RvcmNoJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPQ1VTX01PREVfQVVUTyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthdXRvJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPQ1VTX01PREVfRURPRiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtlZG9mJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPQ1VTX01PREVfRklYRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Zml4ZWQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRk9DVVNfTU9ERV9JTkZJTklUWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtpbmZpbml0eSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT0NVU19NT0RFX01BQ1JPIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O21hY3JvJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDRU5FX01PREVfQUNUSU9OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FjdGlvbiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ0VORV9NT0RFX0FVVE8iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YXV0byZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ0VORV9NT0RFX0JBUkNPREUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YmFyY29kZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ0VORV9NT0RFX0JFQUNIIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2JlYWNoJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDRU5FX01PREVfQ0FORExFTElHSFQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y2FuZGxlbGlnaHQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NFTkVfTU9ERV9GSVJFV09SS1MiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZmlyZXdvcmtzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDRU5FX01PREVfTEFORFNDQVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2xhbmRzY2FwZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ0VORV9NT0RFX05JR0hUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O25pZ2h0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDRU5FX01PREVfTklHSFRfUE9SVFJBSVQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bmlnaHQtcG9ydHJhaXQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NFTkVfTU9ERV9QQVJUWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtwYXJ0eSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ0VORV9NT0RFX1BPUlRSQUlUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3BvcnRyYWl0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDRU5FX01PREVfU05PVyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzbm93JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDRU5FX01PREVfU1BPUlRTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3Nwb3J0cyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ0VORV9NT0RFX1NURUFEWVBIT1RPIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3N0ZWFkeXBob3RvJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDRU5FX01PREVfU1VOU0VUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3N1bnNldCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ0VORV9NT0RFX1RIRUFUUkUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dGhlYXRyZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSElURV9CQUxBTkNFX0FVVE8iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YXV0byZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSElURV9CQUxBTkNFX0NMT1VEWV9EQVlMSUdIVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtjbG91ZHktZGF5bGlnaHQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0hJVEVfQkFMQU5DRV9EQVlMSUdIVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXlsaWdodCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSElURV9CQUxBTkNFX0ZMVU9SRVNDRU5UIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2ZsdW9yZXNjZW50JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldISVRFX0JBTEFOQ0VfSU5DQU5ERVNDRU5UIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2luY2FuZGVzY2VudCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSElURV9CQUxBTkNFX1NIQURFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3NoYWRlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldISVRFX0JBTEFOQ0VfVFdJTElHSFQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dHdpbGlnaHQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0hJVEVfQkFMQU5DRV9XQVJNX0ZMVU9SRVNDRU5UIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dhcm0tZmx1b3Jlc2NlbnQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDYW1lcmEuUGljdHVyZUNhbGxiYWNrIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvblBpY3R1cmVUYWtlbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYW1lcmEiIHR5cGU9ImFuZHJvaWQuaGFyZHdhcmUuQ2FtZXJhIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iQ2FtZXJhLlByZXZpZXdDYWxsYmFjayIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25QcmV2aWV3RnJhbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FtZXJhIiB0eXBlPSJhbmRyb2lkLmhhcmR3YXJlLkNhbWVyYSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkNhbWVyYS5TaHV0dGVyQ2FsbGJhY2siCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uU2h1dHRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ2FtZXJhLlNpemUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNhbWVyYS5TaXplIgorIHR5cGU9ImFuZHJvaWQuaGFyZHdhcmUuQ2FtZXJhLlNpemUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iaGVpZ2h0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IndpZHRoIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJHZW9tYWduZXRpY0ZpZWxkIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJHZW9tYWduZXRpY0ZpZWxkIgorIHR5cGU9ImFuZHJvaWQuaGFyZHdhcmUuR2VvbWFnbmV0aWNGaWVsZCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImdkTGF0aXR1ZGVEZWciIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJnZExvbmdpdHVkZURlZyIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFsdGl0dWRlTWV0ZXJzIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZU1pbGxpcyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldERlY2xpbmF0aW9uIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmllbGRTdHJlbmd0aCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhvcml6b250YWxTdHJlbmd0aCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluY2xpbmF0aW9uIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0WCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFkiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRaIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2Vuc29yIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0TWF4aW11bVJhbmdlIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UG93ZXIiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXNvbHV0aW9uIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHlwZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWZW5kb3IiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZlcnNpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJUWVBFX0FDQ0VMRVJPTUVURVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfQUxMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9HWVJPU0NPUEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfTElHSFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfTUFHTkVUSUNfRklFTEQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfT1JJRU5UQVRJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9QUkVTU1VSRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9QUk9YSU1JVFkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfVEVNUEVSQVRVUkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTZW5zb3JFdmVudCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iYWNjdXJhY3kiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2Vuc29yIgorIHR5cGU9ImFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGltZXN0YW1wIgorIHR5cGU9ImxvbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ2YWx1ZXMiCisgdHlwZT0iZmxvYXRbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJTZW5zb3JFdmVudExpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25BY2N1cmFjeUNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlbnNvciIgdHlwZT0iYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY3VyYWN5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TZW5zb3JDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlNlbnNvckxpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvbkFjY3VyYWN5Q2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2Vuc29yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY3VyYWN5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TZW5zb3JDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZW5zb3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWVzIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJTZW5zb3JNYW5hZ2VyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0RGVmYXVsdFNlbnNvciIKKyByZXR1cm49ImFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5jbGluYXRpb24iCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJJIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9yaWVudGF0aW9uIgorIHJldHVybj0iZmxvYXRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJSIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Um90YXRpb25NYXRyaXgiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IlIiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IkkiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImdyYXZpdHkiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imdlb21hZ25ldGljIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlbnNvckxpc3QiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLmhhcmR3YXJlLlNlbnNvciZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZW5zb3JzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVnaXN0ZXJMaXN0ZW5lciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbnNvcnMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3Rlckxpc3RlbmVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2Vuc29ycyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyYXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVnaXN0ZXJMaXN0ZW5lciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmhhcmR3YXJlLlNlbnNvckV2ZW50TGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbnNvciIgdHlwZT0iYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJhdGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3Rlckxpc3RlbmVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yRXZlbnRMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2Vuc29yIiB0eXBlPSJhbmRyb2lkLmhhcmR3YXJlLlNlbnNvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmF0ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJhbmRyb2lkLm9zLkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtYXBDb29yZGluYXRlU3lzdGVtIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpblIiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IlgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iWSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXRSIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVucmVnaXN0ZXJMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbnNvcnMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bnJlZ2lzdGVyTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmhhcmR3YXJlLlNlbnNvckxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVucmVnaXN0ZXJMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmhhcmR3YXJlLlNlbnNvckV2ZW50TGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbnNvciIgdHlwZT0iYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5yZWdpc3Rlckxpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yRXZlbnRMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkFYSVNfTUlOVVNfWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBWElTX01JTlVTX1kiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVhJU19NSU5VU19aIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTMxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFYSVNfWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVhJU19ZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBWElTX1oiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRBVEFfWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVRBX1kiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFUQV9aIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdSQVZJVFlfREVBVEhfU1RBUl9JIgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzLjUzMDM2MTRFLTdmIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdSQVZJVFlfRUFSVEgiCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjkuODA2NjVmIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdSQVZJVFlfSlVQSVRFUiIKKyB0eXBlPSJmbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjMuMTJmIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdSQVZJVFlfTUFSUyIKKyB0eXBlPSJmbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMy43MWYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR1JBVklUWV9NRVJDVVJZIgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzLjdmIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdSQVZJVFlfTU9PTiIKKyB0eXBlPSJmbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMS42ZiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHUkFWSVRZX05FUFRVTkUiCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjExLjBmIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdSQVZJVFlfUExVVE8iCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAuNmYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR1JBVklUWV9TQVRVUk4iCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjguOTZmIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdSQVZJVFlfU1VOIgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNzUuMGYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR1JBVklUWV9USEVfSVNMQU5EIgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0LjgxNTE2MmYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR1JBVklUWV9VUkFOVVMiCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjguNjlmIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdSQVZJVFlfVkVOVVMiCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjguODdmIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxJR0hUX0NMT1VEWSIKKyB0eXBlPSJmbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAwLjBmIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxJR0hUX0ZVTExNT09OIgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwLjI1ZiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMSUdIVF9OT19NT09OIgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwLjAwMTBmIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxJR0hUX09WRVJDQVNUIgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDAwMC4wZiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMSUdIVF9TSEFERSIKKyB0eXBlPSJmbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjAwMDAuMGYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTElHSFRfU1VOTElHSFQiCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjExMDAwMC4wZiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMSUdIVF9TVU5MSUdIVF9NQVgiCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMDAwMC4wZiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMSUdIVF9TVU5SSVNFIgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MDAuMGYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUFHTkVUSUNfRklFTERfRUFSVEhfTUFYIgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2MC4wZiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNQUdORVRJQ19GSUVMRF9FQVJUSF9NSU4iCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMwLjBmIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJBV19EQVRBX0lOREVYIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJBV19EQVRBX1giCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkFXX0RBVEFfWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSQVdfREFUQV9aIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFTlNPUl9BQ0NFTEVST01FVEVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFTlNPUl9BTEwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRU5TT1JfREVMQVlfRkFTVEVTVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VOU09SX0RFTEFZX0dBTUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFTlNPUl9ERUxBWV9OT1JNQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFTlNPUl9ERUxBWV9VSSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VOU09SX0xJR0hUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRU5TT1JfTUFHTkVUSUNfRklFTEQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VOU09SX01BWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjY0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VOU09SX01JTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRU5TT1JfT1JJRU5UQVRJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VOU09SX09SSUVOVEFUSU9OX1JBVyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFTlNPUl9QUk9YSU1JVFkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFTlNPUl9TVEFUVVNfQUNDVVJBQ1lfSElHSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VOU09SX1NUQVRVU19BQ0NVUkFDWV9MT1ciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFTlNPUl9TVEFUVVNfQUNDVVJBQ1lfTUVESVVNIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRU5TT1JfU1RBVFVTX1VOUkVMSUFCTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFTlNPUl9URU1QRVJBVFVSRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRU5TT1JfVFJJQ09SREVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFOREFSRF9HUkFWSVRZIgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI5LjgwNjY1ZiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJhbmRyb2lkLmlucHV0bWV0aG9kc2VydmljZSIKKz4KKzxjbGFzcyBuYW1lPSJBYnN0cmFjdElucHV0TWV0aG9kU2VydmljZSIKKyBleHRlbmRzPSJhbmRyb2lkLmFwcC5TZXJ2aWNlIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudmlldy5LZXlFdmVudC5DYWxsYmFjayI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzdHJhY3RJbnB1dE1ldGhvZFNlcnZpY2UiCisgdHlwZT0iYW5kcm9pZC5pbnB1dG1ldGhvZHNlcnZpY2UuQWJzdHJhY3RJbnB1dE1ldGhvZFNlcnZpY2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0S2V5RGlzcGF0Y2hlclN0YXRlIgorIHJldHVybj0iYW5kcm9pZC52aWV3LktleUV2ZW50LkRpc3BhdGNoZXJTdGF0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkJpbmQiCisgcmV0dXJuPSJhbmRyb2lkLm9zLklCaW5kZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ3JlYXRlSW5wdXRNZXRob2RJbnRlcmZhY2UiCisgcmV0dXJuPSJhbmRyb2lkLmlucHV0bWV0aG9kc2VydmljZS5BYnN0cmFjdElucHV0TWV0aG9kU2VydmljZS5BYnN0cmFjdElucHV0TWV0aG9kSW1wbCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ3JlYXRlSW5wdXRNZXRob2RTZXNzaW9uSW50ZXJmYWNlIgorIHJldHVybj0iYW5kcm9pZC5pbnB1dG1ldGhvZHNlcnZpY2UuQWJzdHJhY3RJbnB1dE1ldGhvZFNlcnZpY2UuQWJzdHJhY3RJbnB1dE1ldGhvZFNlc3Npb25JbXBsIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25UcmFja2JhbGxFdmVudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQWJzdHJhY3RJbnB1dE1ldGhvZFNlcnZpY2UuQWJzdHJhY3RJbnB1dE1ldGhvZEltcGwiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuSW5wdXRNZXRob2QiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFic3RyYWN0SW5wdXRNZXRob2RTZXJ2aWNlLkFic3RyYWN0SW5wdXRNZXRob2RJbXBsIgorIHR5cGU9ImFuZHJvaWQuaW5wdXRtZXRob2RzZXJ2aWNlLkFic3RyYWN0SW5wdXRNZXRob2RTZXJ2aWNlLkFic3RyYWN0SW5wdXRNZXRob2RJbXBsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVNlc3Npb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsYmFjayIgdHlwZT0iYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLklucHV0TWV0aG9kLlNlc3Npb25DYWxsYmFjayI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXZva2VTZXNzaW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2Vzc2lvbiIgdHlwZT0iYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLklucHV0TWV0aG9kU2Vzc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTZXNzaW9uRW5hYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlc3Npb24iIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5JbnB1dE1ldGhvZFNlc3Npb24iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQWJzdHJhY3RJbnB1dE1ldGhvZFNlcnZpY2UuQWJzdHJhY3RJbnB1dE1ldGhvZFNlc3Npb25JbXBsIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLklucHV0TWV0aG9kU2Vzc2lvbiI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzdHJhY3RJbnB1dE1ldGhvZFNlcnZpY2UuQWJzdHJhY3RJbnB1dE1ldGhvZFNlc3Npb25JbXBsIgorIHR5cGU9ImFuZHJvaWQuaW5wdXRtZXRob2RzZXJ2aWNlLkFic3RyYWN0SW5wdXRNZXRob2RTZXJ2aWNlLkFic3RyYWN0SW5wdXRNZXRob2RTZXNzaW9uSW1wbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkaXNwYXRjaEtleUV2ZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VxIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbGxiYWNrIiB0eXBlPSJhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuSW5wdXRNZXRob2RTZXNzaW9uLkV2ZW50Q2FsbGJhY2siPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzcGF0Y2hUcmFja2JhbGxFdmVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlcSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsYmFjayIgdHlwZT0iYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLklucHV0TWV0aG9kU2Vzc2lvbi5FdmVudENhbGxiYWNrIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRW5hYmxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNSZXZva2VkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXZva2VTZWxmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFbmFibGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5hYmxlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJFeHRyYWN0RWRpdFRleHQiCisgZXh0ZW5kcz0iYW5kcm9pZC53aWRnZXQuRWRpdFRleHQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFeHRyYWN0RWRpdFRleHQiCisgdHlwZT0iYW5kcm9pZC5pbnB1dG1ldGhvZHNlcnZpY2UuRXh0cmFjdEVkaXRUZXh0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkV4dHJhY3RFZGl0VGV4dCIKKyB0eXBlPSJhbmRyb2lkLmlucHV0bWV0aG9kc2VydmljZS5FeHRyYWN0RWRpdFRleHQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkV4dHJhY3RFZGl0VGV4dCIKKyB0eXBlPSJhbmRyb2lkLmlucHV0bWV0aG9kc2VydmljZS5FeHRyYWN0RWRpdFRleHQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJmaW5pc2hJbnRlcm5hbENoYW5nZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc1ZlcnRpY2FsU2Nyb2xsQmFyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydEludGVybmFsQ2hhbmdlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW5wdXRNZXRob2RTZXJ2aWNlIgorIGV4dGVuZHM9ImFuZHJvaWQuaW5wdXRtZXRob2RzZXJ2aWNlLkFic3RyYWN0SW5wdXRNZXRob2RTZXJ2aWNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW5wdXRNZXRob2RTZXJ2aWNlIgorIHR5cGU9ImFuZHJvaWQuaW5wdXRtZXRob2RzZXJ2aWNlLklucHV0TWV0aG9kU2VydmljZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDYW5kaWRhdGVzSGlkZGVuVmlzaWJpbGl0eSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDdXJyZW50SW5wdXRCaW5kaW5nIgorIHJldHVybj0iYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLklucHV0QmluZGluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDdXJyZW50SW5wdXRDb25uZWN0aW9uIgorIHJldHVybj0iYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLklucHV0Q29ubmVjdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDdXJyZW50SW5wdXRFZGl0b3JJbmZvIgorIHJldHVybj0iYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLkVkaXRvckluZm8iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3VycmVudElucHV0U3RhcnRlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGF5b3V0SW5mbGF0ZXIiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuTGF5b3V0SW5mbGF0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF4V2lkdGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGV4dEZvckltZUFjdGlvbiIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImltZU9wdGlvbnMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRXaW5kb3ciCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5EaWFsb2ciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGlkZVN0YXR1c0ljb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImhpZGVXaW5kb3ciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRXh0cmFjdFZpZXdTaG93biIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNGdWxsc2NyZWVuTW9kZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNJbnB1dFZpZXdTaG93biIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTaG93SW5wdXRSZXF1ZXN0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQXBwUHJpdmF0ZUNvbW1hbmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQmluZElucHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNvbXB1dGVJbnNldHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXRJbnNldHMiIHR5cGU9ImFuZHJvaWQuaW5wdXRtZXRob2RzZXJ2aWNlLklucHV0TWV0aG9kU2VydmljZS5JbnNldHMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Db25maWd1cmVXaW5kb3ciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aW4iIHR5cGU9ImFuZHJvaWQudmlldy5XaW5kb3ciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlzRnVsbHNjcmVlbiIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNDYW5kaWRhdGVzT25seSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNyZWF0ZUNhbmRpZGF0ZXNWaWV3IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DcmVhdGVFeHRyYWN0VGV4dFZpZXciCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNyZWF0ZUlucHV0TWV0aG9kSW50ZXJmYWNlIgorIHJldHVybj0iYW5kcm9pZC5pbnB1dG1ldGhvZHNlcnZpY2UuQWJzdHJhY3RJbnB1dE1ldGhvZFNlcnZpY2UuQWJzdHJhY3RJbnB1dE1ldGhvZEltcGwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DcmVhdGVJbnB1dE1ldGhvZFNlc3Npb25JbnRlcmZhY2UiCisgcmV0dXJuPSJhbmRyb2lkLmlucHV0bWV0aG9kc2VydmljZS5BYnN0cmFjdElucHV0TWV0aG9kU2VydmljZS5BYnN0cmFjdElucHV0TWV0aG9kU2Vzc2lvbkltcGwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DcmVhdGVJbnB1dFZpZXciCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkRpc3BsYXlDb21wbGV0aW9ucyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbXBsZXRpb25zIiB0eXBlPSJhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuQ29tcGxldGlvbkluZm9bXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkV2YWx1YXRlRnVsbHNjcmVlbk1vZGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uRXZhbHVhdGVJbnB1dFZpZXdTaG93biIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25FeHRyYWN0VGV4dENvbnRleHRNZW51SXRlbSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25FeHRyYWN0ZWRDdXJzb3JNb3ZlbWVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImR4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25FeHRyYWN0ZWRTZWxlY3Rpb25DaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25FeHRyYWN0ZWRUZXh0Q2xpY2tlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25FeHRyYWN0aW5nSW5wdXRDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZWkiIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5FZGl0b3JJbmZvIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uRmluaXNoQ2FuZGlkYXRlc1ZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaW5pc2hpbmdJbnB1dCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkZpbmlzaElucHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkZpbmlzaElucHV0VmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbmlzaGluZ0lucHV0IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uSW5pdGlhbGl6ZUludGVyZmFjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25LZXlEb3duIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LktleUV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uS2V5TG9uZ1ByZXNzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LktleUV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uS2V5TXVsdGlwbGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25LZXlVcCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblNob3dJbnB1dFJlcXVlc3RlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbmZpZ0NoYW5nZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblN0YXJ0Q2FuZGlkYXRlc1ZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmZvIiB0eXBlPSJhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuRWRpdG9ySW5mbyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdGFydGluZyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblN0YXJ0SW5wdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhdHRyaWJ1dGUiIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5FZGl0b3JJbmZvIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXN0YXJ0aW5nIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU3RhcnRJbnB1dFZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmZvIiB0eXBlPSJhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuRWRpdG9ySW5mbyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdGFydGluZyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblVuYmluZElucHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblVwZGF0ZUN1cnNvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld0N1cnNvciIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uVXBkYXRlRXh0cmFjdGVkVGV4dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRva2VuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5FeHRyYWN0ZWRUZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uVXBkYXRlRXh0cmFjdGluZ1ZpZXdzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZWkiIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5FZGl0b3JJbmZvIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uVXBkYXRlRXh0cmFjdGluZ1Zpc2liaWxpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlaSIgdHlwZT0iYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLkVkaXRvckluZm8iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25VcGRhdGVTZWxlY3Rpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvbGRTZWxTdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvbGRTZWxFbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3U2VsU3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3U2VsRW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbmRpZGF0ZXNTdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYW5kaWRhdGVzRW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25XaW5kb3dIaWRkZW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uV2luZG93U2hvd24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcXVlc3RIaWRlU2VsZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VuZERlZmF1bHRFZGl0b3JBY3Rpb24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmcm9tRW50ZXJLZXkiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VuZERvd25VcEtleUV2ZW50cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUV2ZW50Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmRLZXlDaGFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhckNvZGUiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2FuZGlkYXRlc1ZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDYW5kaWRhdGVzVmlld1Nob3duIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2hvd24iIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RXh0cmFjdFZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFeHRyYWN0Vmlld1Nob3duIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2hvd24iIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW5wdXRWaWV3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2hvd1N0YXR1c0ljb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpY29uUmVzSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaG93V2luZG93IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2hvd0lucHV0IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN3aXRjaElucHV0TWV0aG9kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlRnVsbHNjcmVlbk1vZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZUlucHV0Vmlld1Nob3duIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbnB1dE1ldGhvZFNlcnZpY2UuSW5wdXRNZXRob2RJbXBsIgorIGV4dGVuZHM9ImFuZHJvaWQuaW5wdXRtZXRob2RzZXJ2aWNlLkFic3RyYWN0SW5wdXRNZXRob2RTZXJ2aWNlLkFic3RyYWN0SW5wdXRNZXRob2RJbXBsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW5wdXRNZXRob2RTZXJ2aWNlLklucHV0TWV0aG9kSW1wbCIKKyB0eXBlPSJhbmRyb2lkLmlucHV0bWV0aG9kc2VydmljZS5JbnB1dE1ldGhvZFNlcnZpY2UuSW5wdXRNZXRob2RJbXBsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImF0dGFjaFRva2VuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idG9rZW4iIHR5cGU9ImFuZHJvaWQub3MuSUJpbmRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJiaW5kSW5wdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiaW5kaW5nIiB0eXBlPSJhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuSW5wdXRCaW5kaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImhpZGVTb2Z0SW5wdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRSZWNlaXZlciIgdHlwZT0iYW5kcm9pZC5vcy5SZXN1bHRSZWNlaXZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXN0YXJ0SW5wdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpYyIgdHlwZT0iYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLklucHV0Q29ubmVjdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cmlidXRlIiB0eXBlPSJhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuRWRpdG9ySW5mbyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaG93U29mdElucHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0UmVjZWl2ZXIiIHR5cGU9ImFuZHJvaWQub3MuUmVzdWx0UmVjZWl2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRJbnB1dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImljIiB0eXBlPSJhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuSW5wdXRDb25uZWN0aW9uIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRyaWJ1dGUiIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5FZGl0b3JJbmZvIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVuYmluZElucHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbnB1dE1ldGhvZFNlcnZpY2UuSW5wdXRNZXRob2RTZXNzaW9uSW1wbCIKKyBleHRlbmRzPSJhbmRyb2lkLmlucHV0bWV0aG9kc2VydmljZS5BYnN0cmFjdElucHV0TWV0aG9kU2VydmljZS5BYnN0cmFjdElucHV0TWV0aG9kU2Vzc2lvbkltcGwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnB1dE1ldGhvZFNlcnZpY2UuSW5wdXRNZXRob2RTZXNzaW9uSW1wbCIKKyB0eXBlPSJhbmRyb2lkLmlucHV0bWV0aG9kc2VydmljZS5JbnB1dE1ldGhvZFNlcnZpY2UuSW5wdXRNZXRob2RTZXNzaW9uSW1wbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhcHBQcml2YXRlQ29tbWFuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzcGxheUNvbXBsZXRpb25zIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29tcGxldGlvbnMiIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5Db21wbGV0aW9uSW5mb1tdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmlzaElucHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b2dnbGVTb2Z0SW5wdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaG93RmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGlkZUZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlQ3Vyc29yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3Q3Vyc29yIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlRXh0cmFjdGVkVGV4dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRva2VuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5FeHRyYWN0ZWRUZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZVNlbGVjdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9sZFNlbFN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9sZFNlbEVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdTZWxTdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdTZWxFbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FuZGlkYXRlc1N0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbmRpZGF0ZXNFbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbnB1dE1ldGhvZFNlcnZpY2UuSW5zZXRzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW5wdXRNZXRob2RTZXJ2aWNlLkluc2V0cyIKKyB0eXBlPSJhbmRyb2lkLmlucHV0bWV0aG9kc2VydmljZS5JbnB1dE1ldGhvZFNlcnZpY2UuSW5zZXRzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iVE9VQ0hBQkxFX0lOU0VUU19DT05URU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT1VDSEFCTEVfSU5TRVRTX0ZSQU1FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT1VDSEFCTEVfSU5TRVRTX1ZJU0lCTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNvbnRlbnRUb3BJbnNldHMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idG91Y2hhYmxlSW5zZXRzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InZpc2libGVUb3BJbnNldHMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IktleWJvYXJkIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJLZXlib2FyZCIKKyB0eXBlPSJhbmRyb2lkLmlucHV0bWV0aG9kc2VydmljZS5LZXlib2FyZCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4bWxMYXlvdXRSZXNJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJLZXlib2FyZCIKKyB0eXBlPSJhbmRyb2lkLmlucHV0bWV0aG9kc2VydmljZS5LZXlib2FyZCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4bWxMYXlvdXRSZXNJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5Ym9hcmQiCisgdHlwZT0iYW5kcm9pZC5pbnB1dG1ldGhvZHNlcnZpY2UuS2V5Ym9hcmQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGF5b3V0VGVtcGxhdGVSZXNJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGFyYWN0ZXJzIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5zIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imhvcml6b250YWxQYWRkaW5nIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVLZXlGcm9tWG1sIgorIHJldHVybj0iYW5kcm9pZC5pbnB1dG1ldGhvZHNlcnZpY2UuS2V5Ym9hcmQuS2V5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnQiIHR5cGU9ImFuZHJvaWQuaW5wdXRtZXRob2RzZXJ2aWNlLktleWJvYXJkLlJvdyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcnNlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5YbWxSZXNvdXJjZVBhcnNlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVSb3dGcm9tWG1sIgorIHJldHVybj0iYW5kcm9pZC5pbnB1dG1ldGhvZHNlcnZpY2UuS2V5Ym9hcmQuUm93IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJzZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuWG1sUmVzb3VyY2VQYXJzZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SGVpZ2h0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhvcml6b250YWxHYXAiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0S2V5SGVpZ2h0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEtleVdpZHRoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEtleXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLmlucHV0bWV0aG9kc2VydmljZS5LZXlib2FyZC5LZXkmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1pbldpZHRoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1vZGlmaWVyS2V5cyIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2FuZHJvaWQuaW5wdXRtZXRob2RzZXJ2aWNlLktleWJvYXJkLktleSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmVhcmVzdEtleXMiCisgcmV0dXJuPSJpbnRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2hpZnRLZXlJbmRleCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWZXJ0aWNhbEdhcCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1NoaWZ0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEhvcml6b250YWxHYXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJnYXAiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRLZXlIZWlnaHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRLZXlXaWR0aCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2hpZnRlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNoaWZ0U3RhdGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VmVydGljYWxHYXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJnYXAiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkVER0VfQk9UVE9NIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFREdFX0xFRlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVER0VfUklHSFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVER0VfVE9QIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX0FMVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii02IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfQ0FOQ0VMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9ERUxFVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX0RPTkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX01PREVfQ0hBTkdFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9TSElGVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJLZXlib2FyZC5LZXkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5Ym9hcmQuS2V5IgorIHR5cGU9ImFuZHJvaWQuaW5wdXRtZXRob2RzZXJ2aWNlLktleWJvYXJkLktleSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iYW5kcm9pZC5pbnB1dG1ldGhvZHNlcnZpY2UuS2V5Ym9hcmQuUm93Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJLZXlib2FyZC5LZXkiCisgdHlwZT0iYW5kcm9pZC5pbnB1dG1ldGhvZHNlcnZpY2UuS2V5Ym9hcmQuS2V5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyZW50IiB0eXBlPSJhbmRyb2lkLmlucHV0bWV0aG9kc2VydmljZS5LZXlib2FyZC5Sb3ciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJzZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuWG1sUmVzb3VyY2VQYXJzZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDdXJyZW50RHJhd2FibGVTdGF0ZSIKKyByZXR1cm49ImludFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzSW5zaWRlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25QcmVzc2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblJlbGVhc2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5zaWRlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNxdWFyZWREaXN0YW5jZUZyb20iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iY29kZXMiCisgdHlwZT0iaW50W10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJlZGdlRmxhZ3MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZ2FwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImhlaWdodCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY29uIgorIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpY29uUHJldmlldyIKKyB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibGFiZWwiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1vZGlmaWVyIgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJvbiIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icG9wdXBDaGFyYWN0ZXJzIgorIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwb3B1cFJlc0lkIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByZXNzZWQiCisgdHlwZT0iYm9vbGVhbiIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InJlcGVhdGFibGUiCisgdHlwZT0iYm9vbGVhbiIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN0aWNreSIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGV4dCIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0id2lkdGgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ieCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJLZXlib2FyZC5Sb3ciCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5Ym9hcmQuUm93IgorIHR5cGU9ImFuZHJvaWQuaW5wdXRtZXRob2RzZXJ2aWNlLktleWJvYXJkLlJvdyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iYW5kcm9pZC5pbnB1dG1ldGhvZHNlcnZpY2UuS2V5Ym9hcmQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IktleWJvYXJkLlJvdyIKKyB0eXBlPSJhbmRyb2lkLmlucHV0bWV0aG9kc2VydmljZS5LZXlib2FyZC5Sb3ciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnQiIHR5cGU9ImFuZHJvaWQuaW5wdXRtZXRob2RzZXJ2aWNlLktleWJvYXJkIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJzZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuWG1sUmVzb3VyY2VQYXJzZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9ImRlZmF1bHRIZWlnaHQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGVmYXVsdEhvcml6b250YWxHYXAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGVmYXVsdFdpZHRoIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1vZGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icm93RWRnZUZsYWdzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InZlcnRpY2FsR2FwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJLZXlib2FyZFZpZXciCisgZXh0ZW5kcz0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudmlldy5WaWV3Lk9uQ2xpY2tMaXN0ZW5lciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5Ym9hcmRWaWV3IgorIHR5cGU9ImFuZHJvaWQuaW5wdXRtZXRob2RzZXJ2aWNlLktleWJvYXJkVmlldyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5Ym9hcmRWaWV3IgorIHR5cGU9ImFuZHJvaWQuaW5wdXRtZXRob2RzZXJ2aWNlLktleWJvYXJkVmlldyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmU3R5bGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb3NpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEtleWJvYXJkIgorIHJldHVybj0iYW5kcm9pZC5pbnB1dG1ldGhvZHNlcnZpY2UuS2V5Ym9hcmQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T25LZXlib2FyZEFjdGlvbkxpc3RlbmVyIgorIHJldHVybj0iYW5kcm9pZC5pbnB1dG1ldGhvZHNlcnZpY2UuS2V5Ym9hcmRWaWV3Lk9uS2V5Ym9hcmRBY3Rpb25MaXN0ZW5lciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYW5kbGVCYWNrIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnZhbGlkYXRlQWxsS2V5cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW52YWxpZGF0ZUtleSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNQcmV2aWV3RW5hYmxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNQcm94aW1pdHlDb3JyZWN0aW9uRW5hYmxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTaGlmdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNsaWNrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25EZXRhY2hlZEZyb21XaW5kb3ciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uRHJhdyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbnZhcyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Mb25nUHJlc3MiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3B1cEtleSIgdHlwZT0iYW5kcm9pZC5pbnB1dG1ldGhvZHNlcnZpY2UuS2V5Ym9hcmQuS2V5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uTWVhc3VyZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoTWVhc3VyZVNwZWMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0TWVhc3VyZVNwZWMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblNpemVDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9sZHciIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2xkaCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEtleWJvYXJkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5Ym9hcmQiIHR5cGU9ImFuZHJvaWQuaW5wdXRtZXRob2RzZXJ2aWNlLktleWJvYXJkIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9uS2V5Ym9hcmRBY3Rpb25MaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmlucHV0bWV0aG9kc2VydmljZS5LZXlib2FyZFZpZXcuT25LZXlib2FyZEFjdGlvbkxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBvcHVwT2Zmc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UG9wdXBQYXJlbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQcmV2aWV3RW5hYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByZXZpZXdFbmFibGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByb3hpbWl0eUNvcnJlY3Rpb25FbmFibGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5hYmxlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTaGlmdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2hpZnRlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRWZXJ0aWNhbENvcnJlY3Rpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2ZXJ0aWNhbE9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN3aXBlRG93biIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3dpcGVMZWZ0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzd2lwZVJpZ2h0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzd2lwZVVwIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iS2V5Ym9hcmRWaWV3Lk9uS2V5Ym9hcmRBY3Rpb25MaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25LZXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByaW1hcnlDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUNvZGVzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblByZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcmltYXJ5Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uUmVsZWFzZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJpbWFyeUNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblRleHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3dpcGVEb3duIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN3aXBlTGVmdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzd2lwZVJpZ2h0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN3aXBlVXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iYW5kcm9pZC5sb2NhdGlvbiIKKz4KKzxjbGFzcyBuYW1lPSJBZGRyZXNzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWRkcmVzcyIKKyB0eXBlPSJhbmRyb2lkLmxvY2F0aW9uLkFkZHJlc3MiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbGUiIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbGVhckxhdGl0dWRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhckxvbmdpdHVkZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBZGRyZXNzTGluZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWRtaW5BcmVhIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb3VudHJ5Q29kZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q291bnRyeU5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEV4dHJhcyIKKyByZXR1cm49ImFuZHJvaWQub3MuQnVuZGxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZlYXR1cmVOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMYXRpdHVkZSIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhbGUiCisgcmV0dXJuPSJqYXZhLnV0aWwuTG9jYWxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvY2FsaXR5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb25naXR1ZGUiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF4QWRkcmVzc0xpbmVJbmRleCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQaG9uZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UG9zdGFsQ29kZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJlbWlzZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1YkFkbWluQXJlYSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3ViTG9jYWxpdHkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1YlRob3JvdWdoZmFyZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGhvcm91Z2hmYXJlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVcmwiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc0xhdGl0dWRlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNMb25naXR1ZGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFkZHJlc3NMaW5lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBZG1pbkFyZWEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhZG1pbkFyZWEiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q291bnRyeUNvZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudHJ5Q29kZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb3VudHJ5TmFtZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50cnlOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEV4dHJhcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4dHJhcyIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RmVhdHVyZU5hbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZWF0dXJlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMYXRpdHVkZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxhdGl0dWRlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TG9jYWxpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbGl0eSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMb25naXR1ZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb25naXR1ZGUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQaG9uZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBob25lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBvc3RhbENvZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3N0YWxDb2RlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByZW1pc2VzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlbWlzZXMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3ViQWRtaW5BcmVhIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3ViQWRtaW5BcmVhIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN1YkxvY2FsaXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3VibG9jYWxpdHkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3ViVGhvcm91Z2hmYXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3VidGhvcm91Z2hmYXJlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRob3JvdWdoZmFyZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRob3JvdWdoZmFyZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRVcmwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJVcmwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmNlbCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDcml0ZXJpYSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNyaXRlcmlhIgorIHR5cGU9ImFuZHJvaWQubG9jYXRpb24uQ3JpdGVyaWEiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDcml0ZXJpYSIKKyB0eXBlPSJhbmRyb2lkLmxvY2F0aW9uLkNyaXRlcmlhIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3JpdGVyaWEiIHR5cGU9ImFuZHJvaWQubG9jYXRpb24uQ3JpdGVyaWEiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFjY3VyYWN5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBvd2VyUmVxdWlyZW1lbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNBbHRpdHVkZVJlcXVpcmVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0JlYXJpbmdSZXF1aXJlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNDb3N0QWxsb3dlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTcGVlZFJlcXVpcmVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBY2N1cmFjeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY3VyYWN5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QWx0aXR1ZGVSZXF1aXJlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsdGl0dWRlUmVxdWlyZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QmVhcmluZ1JlcXVpcmVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYmVhcmluZ1JlcXVpcmVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvc3RBbGxvd2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29zdEFsbG93ZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UG93ZXJSZXF1aXJlbWVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxldmVsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3BlZWRSZXF1aXJlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNwZWVkUmVxdWlyZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmNlbCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBQ0NVUkFDWV9DT0FSU0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDQ1VSQUNZX0ZJTkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTk9fUkVRVUlSRU1FTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBPV0VSX0hJR0giCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBPV0VSX0xPVyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUE9XRVJfTUVESVVNIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iR2VvY29kZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iR2VvY29kZXIiCisgdHlwZT0iYW5kcm9pZC5sb2NhdGlvbi5HZW9jb2RlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbGUiIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikdlb2NvZGVyIgorIHR5cGU9ImFuZHJvaWQubG9jYXRpb24uR2VvY29kZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEZyb21Mb2NhdGlvbiIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2FuZHJvaWQubG9jYXRpb24uQWRkcmVzcyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxhdGl0dWRlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvbmdpdHVkZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYXhSZXN1bHRzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZyb21Mb2NhdGlvbk5hbWUiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLmxvY2F0aW9uLkFkZHJlc3MmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1heFJlc3VsdHMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RnJvbUxvY2F0aW9uTmFtZSIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2FuZHJvaWQubG9jYXRpb24uQWRkcmVzcyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF4UmVzdWx0cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb3dlckxlZnRMYXRpdHVkZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb3dlckxlZnRMb25naXR1ZGUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXBwZXJSaWdodExhdGl0dWRlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVwcGVyUmlnaHRMb25naXR1ZGUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iR3BzU2F0ZWxsaXRlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRBemltdXRoIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RWxldmF0aW9uIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJuIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNuciIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc0FsbWFuYWMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc0VwaGVtZXJpcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXNlZEluRml4IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJHcHNTdGF0dXMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldE1heFNhdGVsbGl0ZXMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2F0ZWxsaXRlcyIKKyByZXR1cm49ImphdmEubGFuZy5JdGVyYWJsZSZsdDthbmRyb2lkLmxvY2F0aW9uLkdwc1NhdGVsbGl0ZSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGltZVRvRmlyc3RGaXgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJHUFNfRVZFTlRfRklSU1RfRklYIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHUFNfRVZFTlRfU0FURUxMSVRFX1NUQVRVUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR1BTX0VWRU5UX1NUQVJURUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdQU19FVkVOVF9TVE9QUEVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ikdwc1N0YXR1cy5MaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25HcHNTdGF0dXNDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iR3BzU3RhdHVzLk5tZWFMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25ObWVhUmVjZWl2ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVzdGFtcCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibm1lYSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iTG9jYXRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMb2NhdGlvbiIKKyB0eXBlPSJhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxvY2F0aW9uIgorIHR5cGU9ImFuZHJvaWQubG9jYXRpb24uTG9jYXRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsIiB0eXBlPSJhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYmVhcmluZ1RvIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImFuZHJvaWQubG9jYXRpb24uTG9jYXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29udmVydCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29vcmRpbmF0ZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXRwdXRUeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29udmVydCIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29yZGluYXRlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzdGFuY2VCZXR3ZWVuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydExhdGl0dWRlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0TG9uZ2l0dWRlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZExhdGl0dWRlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZExvbmdpdHVkZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRzIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpc3RhbmNlVG8iCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5sb2NhdGlvbi5Mb2NhdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkdW1wIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHciIHR5cGU9ImFuZHJvaWQudXRpbC5QcmludGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmaXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWNjdXJhY3kiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbHRpdHVkZSIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCZWFyaW5nIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RXh0cmFzIgorIHJldHVybj0iYW5kcm9pZC5vcy5CdW5kbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGF0aXR1ZGUiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9uZ2l0dWRlIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb3ZpZGVyIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTcGVlZCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRpbWUiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc0FjY3VyYWN5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNBbHRpdHVkZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzQmVhcmluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzU3BlZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZUFjY3VyYWN5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVBbHRpdHVkZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlQmVhcmluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlU3BlZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsIiB0eXBlPSJhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFjY3VyYWN5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjdXJhY3kiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFsdGl0dWRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWx0aXR1ZGUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCZWFyaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYmVhcmluZyIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RXh0cmFzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXh0cmFzIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMYXRpdHVkZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxhdGl0dWRlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TG9uZ2l0dWRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9uZ2l0dWRlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UHJvdmlkZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTcGVlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNwZWVkIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUaW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyY2VsIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRk9STUFUX0RFR1JFRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPUk1BVF9NSU5VVEVTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT1JNQVRfU0VDT05EUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJMb2NhdGlvbkxpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25Mb2NhdGlvbkNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uUHJvdmlkZXJEaXNhYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Qcm92aWRlckVuYWJsZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU3RhdHVzQ2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXR1cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHRyYXMiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJMb2NhdGlvbk1hbmFnZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJhZGRHcHNTdGF0dXNMaXN0ZW5lciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmxvY2F0aW9uLkdwc1N0YXR1cy5MaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRObWVhTGlzdGVuZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5sb2NhdGlvbi5HcHNTdGF0dXMuTm1lYUxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZFByb3hpbWl0eUFsZXJ0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGF0aXR1ZGUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9uZ2l0dWRlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJhZGl1cyIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGlyYXRpb24iIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5hcHAuUGVuZGluZ0ludGVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRUZXN0UHJvdmlkZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1aXJlc05ldHdvcmsiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVpcmVzU2F0ZWxsaXRlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1aXJlc0NlbGwiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imhhc01vbmV0YXJ5Q29zdCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3VwcG9ydHNBbHRpdHVkZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3VwcG9ydHNTcGVlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3VwcG9ydHNCZWFyaW5nIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3dlclJlcXVpcmVtZW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY3VyYWN5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJUZXN0UHJvdmlkZXJFbmFibGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJUZXN0UHJvdmlkZXJMb2NhdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyVGVzdFByb3ZpZGVyU3RhdHVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWxsUHJvdmlkZXJzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QmVzdFByb3ZpZGVyIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3JpdGVyaWEiIHR5cGU9ImFuZHJvaWQubG9jYXRpb24uQ3JpdGVyaWEiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuYWJsZWRPbmx5IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdwc1N0YXR1cyIKKyByZXR1cm49ImFuZHJvaWQubG9jYXRpb24uR3BzU3RhdHVzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0dXMiIHR5cGU9ImFuZHJvaWQubG9jYXRpb24uR3BzU3RhdHVzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExhc3RLbm93bkxvY2F0aW9uIgorIHJldHVybj0iYW5kcm9pZC5sb2NhdGlvbi5Mb2NhdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvdmlkZXIiCisgcmV0dXJuPSJhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uUHJvdmlkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvdmlkZXJzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVuYWJsZWRPbmx5IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb3ZpZGVycyIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjcml0ZXJpYSIgdHlwZT0iYW5kcm9pZC5sb2NhdGlvbi5Dcml0ZXJpYSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5hYmxlZE9ubHkiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNQcm92aWRlckVuYWJsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVHcHNTdGF0dXNMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmxvY2F0aW9uLkdwc1N0YXR1cy5MaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVObWVhTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5sb2NhdGlvbi5HcHNTdGF0dXMuTm1lYUxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZVByb3hpbWl0eUFsZXJ0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmFwcC5QZW5kaW5nSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZVRlc3RQcm92aWRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZVVwZGF0ZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5sb2NhdGlvbi5Mb2NhdGlvbkxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZVVwZGF0ZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVxdWVzdExvY2F0aW9uVXBkYXRlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaW5UaW1lIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaW5EaXN0YW5jZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVxdWVzdExvY2F0aW9uVXBkYXRlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaW5UaW1lIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaW5EaXN0YW5jZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxvb3BlciIgdHlwZT0iYW5kcm9pZC5vcy5Mb29wZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVxdWVzdExvY2F0aW9uVXBkYXRlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaW5UaW1lIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaW5EaXN0YW5jZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5hcHAuUGVuZGluZ0ludGVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kRXh0cmFDb21tYW5kIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbW1hbmQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4dHJhcyIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGVzdFByb3ZpZGVyRW5hYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmFibGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRlc3RQcm92aWRlckxvY2F0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvYyIgdHlwZT0iYW5kcm9pZC5sb2NhdGlvbi5Mb2NhdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUZXN0UHJvdmlkZXJTdGF0dXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdHVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4dHJhcyIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVwZGF0ZVRpbWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJHUFNfUFJPVklERVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Z3BzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWV9MT0NBVElPTl9DSEFOR0VEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2xvY2F0aW9uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWV9QUk9WSURFUl9FTkFCTEVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3Byb3ZpZGVyRW5hYmxlZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlfUFJPWElNSVRZX0VOVEVSSU5HIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2VudGVyaW5nJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWV9TVEFUVVNfQ0hBTkdFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzdGF0dXMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTkVUV09SS19QUk9WSURFUiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtuZXR3b3JrJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBBU1NJVkVfUFJPVklERVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cGFzc2l2ZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTG9jYXRpb25Qcm92aWRlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0QWNjdXJhY3kiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQb3dlclJlcXVpcmVtZW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzTW9uZXRhcnlDb3N0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1lZXRzQ3JpdGVyaWEiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjcml0ZXJpYSIgdHlwZT0iYW5kcm9pZC5sb2NhdGlvbi5Dcml0ZXJpYSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXF1aXJlc0NlbGwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVxdWlyZXNOZXR3b3JrIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcXVpcmVzU2F0ZWxsaXRlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzQWx0aXR1ZGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNCZWFyaW5nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzU3BlZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBVkFJTEFCTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9VVF9PRl9TRVJWSUNFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJURU1QT1JBUklMWV9VTkFWQUlMQUJMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iYW5kcm9pZC5tZWRpYSIKKz4KKzxjbGFzcyBuYW1lPSJBc3luY1BsYXllciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXN5bmNQbGF5ZXIiCisgdHlwZT0iYW5kcm9pZC5tZWRpYS5Bc3luY1BsYXllciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InBsYXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxvb3BpbmciIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0b3AiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkF1ZGlvRm9ybWF0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBdWRpb0Zvcm1hdCIKKyB0eXBlPSJhbmRyb2lkLm1lZGlhLkF1ZGlvRm9ybWF0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iQ0hBTk5FTF9DT05GSUdVUkFUSU9OX0RFRkFVTFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hBTk5FTF9DT05GSUdVUkFUSU9OX0lOVkFMSUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hBTk5FTF9DT05GSUdVUkFUSU9OX01PTk8iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hBTk5FTF9DT05GSUdVUkFUSU9OX1NURVJFTyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDSEFOTkVMX0lOVkFMSUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNIQU5ORUxfSU5fQkFDSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNIQU5ORUxfSU5fQkFDS19QUk9DRVNTRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hBTk5FTF9JTl9ERUZBVUxUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDSEFOTkVMX0lOX0ZST05UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hBTk5FTF9JTl9GUk9OVF9QUk9DRVNTRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hBTk5FTF9JTl9MRUZUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDSEFOTkVMX0lOX0xFRlRfUFJPQ0VTU0VEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hBTk5FTF9JTl9NT05PIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hBTk5FTF9JTl9QUkVTU1VSRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hBTk5FTF9JTl9SSUdIVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hBTk5FTF9JTl9SSUdIVF9QUk9DRVNTRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hBTk5FTF9JTl9TVEVSRU8iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDSEFOTkVMX0lOX1ZPSUNFX0ROTElOSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyNzY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNIQU5ORUxfSU5fVk9JQ0VfVVBMSU5LIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYzODQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hBTk5FTF9JTl9YX0FYSVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMDQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNIQU5ORUxfSU5fWV9BWElTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDA5NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDSEFOTkVMX0lOX1pfQVhJUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgxOTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hBTk5FTF9PVVRfNVBPSU5UMSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI1MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDSEFOTkVMX09VVF83UE9JTlQxIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAyMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDSEFOTkVMX09VVF9CQUNLX0NFTlRFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hBTk5FTF9PVVRfQkFDS19MRUZUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hBTk5FTF9PVVRfQkFDS19SSUdIVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDSEFOTkVMX09VVF9ERUZBVUxUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDSEFOTkVMX09VVF9GUk9OVF9DRU5URVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDSEFOTkVMX09VVF9GUk9OVF9MRUZUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDSEFOTkVMX09VVF9GUk9OVF9MRUZUX09GX0NFTlRFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI1NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDSEFOTkVMX09VVF9GUk9OVF9SSUdIVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hBTk5FTF9PVVRfRlJPTlRfUklHSFRfT0ZfQ0VOVEVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNIQU5ORUxfT1VUX0xPV19GUkVRVUVOQ1kiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDSEFOTkVMX09VVF9NT05PIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDSEFOTkVMX09VVF9RVUFEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjA0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNIQU5ORUxfT1VUX1NURVJFTyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNIQU5ORUxfT1VUX1NVUlJPVU5EIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTA1MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFTkNPRElOR19ERUZBVUxUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFTkNPRElOR19JTlZBTElEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFTkNPRElOR19QQ01fMTZCSVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVOQ09ESU5HX1BDTV84QklUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQXVkaW9NYW5hZ2VyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYWJhbmRvbkF1ZGlvRm9jdXMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImwiIHR5cGU9ImFuZHJvaWQubWVkaWEuQXVkaW9NYW5hZ2VyLk9uQXVkaW9Gb2N1c0NoYW5nZUxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkanVzdFN0cmVhbVZvbHVtZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbVR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlyZWN0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRqdXN0U3VnZ2VzdGVkU3RyZWFtVm9sdW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlyZWN0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN1Z2dlc3RlZFN0cmVhbVR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGp1c3RWb2x1bWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXJlY3Rpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNb2RlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtZXRlcnMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJpbmdlck1vZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Um91dGluZyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RyZWFtTWF4Vm9sdW1lIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJlYW1UeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RyZWFtVm9sdW1lIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJlYW1UeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmlicmF0ZVNldHRpbmciCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpYnJhdGVUeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNCbHVldG9vdGhBMmRwT24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQmx1ZXRvb3RoU2NvQXZhaWxhYmxlT2ZmQ2FsbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNCbHVldG9vdGhTY29PbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNNaWNyb3Bob25lTXV0ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNNdXNpY0FjdGl2ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTcGVha2VycGhvbmVPbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNXaXJlZEhlYWRzZXRPbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZFNvdW5kRWZmZWN0cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGxheVNvdW5kRWZmZWN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZWZmZWN0VHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBsYXlTb3VuZEVmZmVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVmZmVjdFR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idm9sdW1lIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3Rlck1lZGlhQnV0dG9uRXZlbnRSZWNlaXZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50UmVjZWl2ZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcXVlc3RBdWRpb0ZvY3VzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsIiB0eXBlPSJhbmRyb2lkLm1lZGlhLkF1ZGlvTWFuYWdlci5PbkF1ZGlvRm9jdXNDaGFuZ2VMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyZWFtVHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkdXJhdGlvbkhpbnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCbHVldG9vdGhBMmRwT24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9uIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEJsdWV0b290aFNjb09uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib24iIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWljcm9waG9uZU11dGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvbiIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNb2RlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBhcmFtZXRlcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlWYWx1ZVBhaXJzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJpbmdlck1vZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyaW5nZXJNb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Um91dGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyb3V0ZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFzayIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNwZWFrZXJwaG9uZU9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib24iIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RyZWFtTXV0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbVR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RyZWFtU29sbyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbVR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RyZWFtVm9sdW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyZWFtVHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZpYnJhdGVTZXR0aW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlicmF0ZVR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmlicmF0ZVNldHRpbmciIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRXaXJlZEhlYWRzZXRPbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib24iIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2hvdWxkVmlicmF0ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpYnJhdGVUeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRCbHVldG9vdGhTY28iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0b3BCbHVldG9vdGhTY28iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVubG9hZFNvdW5kRWZmZWN0cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5yZWdpc3Rlck1lZGlhQnV0dG9uRXZlbnRSZWNlaXZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50UmVjZWl2ZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0FVRElPX0JFQ09NSU5HX05PSVNZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQubWVkaWEuQVVESU9fQkVDT01JTkdfTk9JU1kmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1NDT19BVURJT19TVEFURV9DSEFOR0VEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQubWVkaWEuU0NPX0FVRElPX1NUQVRFX0NIQU5HRUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQURKVVNUX0xPV0VSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQURKVVNUX1JBSVNFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBREpVU1RfU0FNRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVVESU9GT0NVU19HQUlOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBVURJT0ZPQ1VTX0dBSU5fVFJBTlNJRU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBVURJT0ZPQ1VTX0dBSU5fVFJBTlNJRU5UX01BWV9EVUNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBVURJT0ZPQ1VTX0xPU1MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBVURJT0ZPQ1VTX0xPU1NfVFJBTlNJRU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVVESU9GT0NVU19MT1NTX1RSQU5TSUVOVF9DQU5fRFVDSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0zIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFVRElPRk9DVVNfUkVRVUVTVF9GQUlMRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFVRElPRk9DVVNfUkVRVUVTVF9HUkFOVEVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9SSU5HRVJfTU9ERSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLm1lZGlhLkVYVFJBX1JJTkdFUl9NT0RFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX1NDT19BVURJT19TVEFURSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLm1lZGlhLmV4dHJhLlNDT19BVURJT19TVEFURSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9WSUJSQVRFX1NFVFRJTkciCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5tZWRpYS5FWFRSQV9WSUJSQVRFX1NFVFRJTkcmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfVklCUkFURV9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQubWVkaWEuRVhUUkFfVklCUkFURV9UWVBFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfQUxMT1dfUklOR0VSX01PREVTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX1BMQVlfU09VTkQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfUkVNT1ZFX1NPVU5EX0FORF9WSUJSQVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX1NIT1dfVUkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfVklCUkFURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZYX0ZPQ1VTX05BVklHQVRJT05fRE9XTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRlhfRk9DVVNfTkFWSUdBVElPTl9MRUZUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGWF9GT0NVU19OQVZJR0FUSU9OX1JJR0hUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGWF9GT0NVU19OQVZJR0FUSU9OX1VQIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGWF9LRVlQUkVTU19ERUxFVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZYX0tFWVBSRVNTX1JFVFVSTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRlhfS0VZUFJFU1NfU1BBQ0VCQVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZYX0tFWVBSRVNTX1NUQU5EQVJEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGWF9LRVlfQ0xJQ0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1PREVfQ1VSUkVOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1PREVfSU5WQUxJRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0yIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1PREVfSU5fQ0FMTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTU9ERV9OT1JNQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1PREVfUklOR1RPTkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5VTV9TVFJFQU1TIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJJTkdFUl9NT0RFX0NIQU5HRURfQUNUSU9OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQubWVkaWEuUklOR0VSX01PREVfQ0hBTkdFRCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSSU5HRVJfTU9ERV9OT1JNQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJJTkdFUl9NT0RFX1NJTEVOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUklOR0VSX01PREVfVklCUkFURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUk9VVEVfQUxMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJST1VURV9CTFVFVE9PVEgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUk9VVEVfQkxVRVRPT1RIX0EyRFAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJPVVRFX0JMVUVUT09USF9TQ08iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUk9VVEVfRUFSUElFQ0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUk9VVEVfSEVBRFNFVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJST1VURV9TUEVBS0VSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDT19BVURJT19TVEFURV9DT05ORUNURUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDT19BVURJT19TVEFURV9ESVNDT05ORUNURUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDT19BVURJT19TVEFURV9FUlJPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNUUkVBTV9BTEFSTSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RSRUFNX0RUTUYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNUUkVBTV9NVVNJQyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RSRUFNX05PVElGSUNBVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RSRUFNX1JJTkciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNUUkVBTV9TWVNURU0iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNUUkVBTV9WT0lDRV9DQUxMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVU0VfREVGQVVMVF9TVFJFQU1fVFlQRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0yMTQ3NDgzNjQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlZJQlJBVEVfU0VUVElOR19DSEFOR0VEX0FDVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLm1lZGlhLlZJQlJBVEVfU0VUVElOR19DSEFOR0VEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlZJQlJBVEVfU0VUVElOR19PRkYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlZJQlJBVEVfU0VUVElOR19PTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVklCUkFURV9TRVRUSU5HX09OTFlfU0lMRU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJWSUJSQVRFX1RZUEVfTk9USUZJQ0FUSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJWSUJSQVRFX1RZUEVfUklOR0VSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkF1ZGlvTWFuYWdlci5PbkF1ZGlvRm9jdXNDaGFuZ2VMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25BdWRpb0ZvY3VzQ2hhbmdlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmb2N1c0NoYW5nZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJBdWRpb1JlY29yZCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXVkaW9SZWNvcmQiCisgdHlwZT0iYW5kcm9pZC5tZWRpYS5BdWRpb1JlY29yZCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImF1ZGlvU291cmNlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNhbXBsZVJhdGVJbkh6IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYW5uZWxDb25maWciIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXVkaW9Gb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyU2l6ZUluQnl0ZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0QXVkaW9Gb3JtYXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXVkaW9Tb3VyY2UiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hhbm5lbENvbmZpZ3VyYXRpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hhbm5lbENvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1pbkJ1ZmZlclNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2FtcGxlUmF0ZUluSHoiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhbm5lbENvbmZpZyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdWRpb0Zvcm1hdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5vdGlmaWNhdGlvbk1hcmtlclBvc2l0aW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBvc2l0aW9uTm90aWZpY2F0aW9uUGVyaW9kIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlY29yZGluZ1N0YXRlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNhbXBsZVJhdGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RhdGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXVkaW9EYXRhIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldEluQnl0ZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZUluQnl0ZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhdWRpb0RhdGEiIHR5cGU9InNob3J0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldEluU2hvcnRzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNpemVJblNob3J0cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImF1ZGlvQnVmZmVyIiB0eXBlPSJqYXZhLm5pby5CeXRlQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzaXplSW5CeXRlcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbGVhc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE5vdGlmaWNhdGlvbk1hcmtlclBvc2l0aW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXJrZXJJbkZyYW1lcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBvc2l0aW9uTm90aWZpY2F0aW9uUGVyaW9kIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwZXJpb2RJbkZyYW1lcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJlY29yZFBvc2l0aW9uVXBkYXRlTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5tZWRpYS5BdWRpb1JlY29yZC5PblJlY29yZFBvc2l0aW9uVXBkYXRlTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UmVjb3JkUG9zaXRpb25VcGRhdGVMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLm1lZGlhLkF1ZGlvUmVjb3JkLk9uUmVjb3JkUG9zaXRpb25VcGRhdGVMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlciIgdHlwZT0iYW5kcm9pZC5vcy5IYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0UmVjb3JkaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0b3AiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJFUlJPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVSUk9SX0JBRF9WQUxVRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0yIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVSUk9SX0lOVkFMSURfT1BFUkFUSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkVDT1JEU1RBVEVfUkVDT1JESU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRUNPUkRTVEFURV9TVE9QUEVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFURV9JTklUSUFMSVpFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RBVEVfVU5JTklUSUFMSVpFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1VDQ0VTUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJBdWRpb1JlY29yZC5PblJlY29yZFBvc2l0aW9uVXBkYXRlTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uTWFya2VyUmVhY2hlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVjb3JkZXIiIHR5cGU9ImFuZHJvaWQubWVkaWEuQXVkaW9SZWNvcmQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25QZXJpb2RpY05vdGlmaWNhdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVjb3JkZXIiIHR5cGU9ImFuZHJvaWQubWVkaWEuQXVkaW9SZWNvcmQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkF1ZGlvVHJhY2siCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkF1ZGlvVHJhY2siCisgdHlwZT0iYW5kcm9pZC5tZWRpYS5BdWRpb1RyYWNrIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyZWFtVHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzYW1wbGVSYXRlSW5IeiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGFubmVsQ29uZmlnIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF1ZGlvRm9ybWF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlclNpemVJbkJ5dGVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZmx1c2giCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF1ZGlvRm9ybWF0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoYW5uZWxDb25maWd1cmF0aW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoYW5uZWxDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYXhWb2x1bWUiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1pbkJ1ZmZlclNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2FtcGxlUmF0ZUluSHoiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhbm5lbENvbmZpZyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdWRpb0Zvcm1hdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1pblZvbHVtZSIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmF0aXZlRnJhbWVDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYXRpdmVPdXRwdXRTYW1wbGVSYXRlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbVR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROb3RpZmljYXRpb25NYXJrZXJQb3NpdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQbGF5U3RhdGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGxheWJhY2tIZWFkUG9zaXRpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGxheWJhY2tSYXRlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBvc2l0aW9uTm90aWZpY2F0aW9uUGVyaW9kIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNhbXBsZVJhdGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RhdGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RyZWFtVHlwZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXVzZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwbGF5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbGVhc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbG9hZFN0YXRpY0RhdGEiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TG9vcFBvaW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnRJbkZyYW1lcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmRJbkZyYW1lcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb29wQ291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXROb3RpZmljYXRpb25NYXJrZXJQb3NpdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFya2VySW5GcmFtZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQbGF5YmFja0hlYWRQb3NpdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb25JbkZyYW1lcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBsYXliYWNrUG9zaXRpb25VcGRhdGVMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLm1lZGlhLkF1ZGlvVHJhY2suT25QbGF5YmFja1Bvc2l0aW9uVXBkYXRlTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGxheWJhY2tQb3NpdGlvblVwZGF0ZUxpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQubWVkaWEuQXVkaW9UcmFjay5PblBsYXliYWNrUG9zaXRpb25VcGRhdGVMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlciIgdHlwZT0iYW5kcm9pZC5vcy5IYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBsYXliYWNrUmF0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2FtcGxlUmF0ZUluSHoiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQb3NpdGlvbk5vdGlmaWNhdGlvblBlcmlvZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGVyaW9kSW5GcmFtZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RlcmVvVm9sdW1lIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZWZ0Vm9sdW1lIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmlnaHRWb2x1bWUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0b3AiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImF1ZGlvRGF0YSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXRJbkJ5dGVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNpemVJbkJ5dGVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImF1ZGlvRGF0YSIgdHlwZT0ic2hvcnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0SW5TaG9ydHMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZUluU2hvcnRzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJFUlJPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVSUk9SX0JBRF9WQUxVRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0yIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVSUk9SX0lOVkFMSURfT1BFUkFUSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTU9ERV9TVEFUSUMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1PREVfU1RSRUFNIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQTEFZU1RBVEVfUEFVU0VEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQTEFZU1RBVEVfUExBWUlORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUExBWVNUQVRFX1NUT1BQRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNUQVRFX0lOSVRJQUxJWkVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFURV9OT19TVEFUSUNfREFUQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RBVEVfVU5JTklUSUFMSVpFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1VDQ0VTUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJBdWRpb1RyYWNrLk9uUGxheWJhY2tQb3NpdGlvblVwZGF0ZUxpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvbk1hcmtlclJlYWNoZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRyYWNrIiB0eXBlPSJhbmRyb2lkLm1lZGlhLkF1ZGlvVHJhY2siPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25QZXJpb2RpY05vdGlmaWNhdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHJhY2siIHR5cGU9ImFuZHJvaWQubWVkaWEuQXVkaW9UcmFjayI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ2FtY29yZGVyUHJvZmlsZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49ImFuZHJvaWQubWVkaWEuQ2FtY29yZGVyUHJvZmlsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJxdWFsaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJRVUFMSVRZX0hJR0giCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlFVQUxJVFlfTE9XIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhdWRpb0JpdFJhdGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYXVkaW9DaGFubmVscyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhdWRpb0NvZGVjIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImF1ZGlvU2FtcGxlUmF0ZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkdXJhdGlvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmaWxlRm9ybWF0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InF1YWxpdHkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idmlkZW9CaXRSYXRlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InZpZGVvQ29kZWMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idmlkZW9GcmFtZUhlaWdodCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ2aWRlb0ZyYW1lUmF0ZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ2aWRlb0ZyYW1lV2lkdGgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNhbWVyYVByb2ZpbGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNhbWVyYVByb2ZpbGUiCisgdHlwZT0iYW5kcm9pZC5tZWRpYS5DYW1lcmFQcm9maWxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEpwZWdFbmNvZGluZ1F1YWxpdHlQYXJhbWV0ZXIiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icXVhbGl0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iUVVBTElUWV9ISUdIIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJRVUFMSVRZX0xPVyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUVVBTElUWV9NRURJVU0iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJFeGlmSW50ZXJmYWNlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFeGlmSW50ZXJmYWNlIgorIHR5cGU9ImFuZHJvaWQubWVkaWEuRXhpZkludGVyZmFjZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGVuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEF0dHJpYnV0ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdHRyaWJ1dGVEb3VibGUiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXR0cmlidXRlSW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmF1bHRWYWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExhdExvbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXRwdXQiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGh1bWJuYWlsIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc1RodW1ibmFpbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2F2ZUF0dHJpYnV0ZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBdHRyaWJ1dGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iT1JJRU5UQVRJT05fRkxJUF9IT1JJWk9OVEFMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUklFTlRBVElPTl9GTElQX1ZFUlRJQ0FMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUklFTlRBVElPTl9OT1JNQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9SSUVOVEFUSU9OX1JPVEFURV8xODAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9SSUVOVEFUSU9OX1JPVEFURV8yNzAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9SSUVOVEFUSU9OX1JPVEFURV85MCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1JJRU5UQVRJT05fVFJBTlNQT1NFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUklFTlRBVElPTl9UUkFOU1ZFUlNFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUklFTlRBVElPTl9VTkRFRklORUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRBR19EQVRFVElNRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtEYXRlVGltZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUQUdfRkxBU0giCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Rmxhc2gmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEFHX0ZPQ0FMX0xFTkdUSCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtGb2NhbExlbmd0aCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUQUdfR1BTX0RBVEVTVEFNUCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtHUFNEYXRlU3RhbXAmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEFHX0dQU19MQVRJVFVERSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtHUFNMYXRpdHVkZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUQUdfR1BTX0xBVElUVURFX1JFRiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtHUFNMYXRpdHVkZVJlZiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUQUdfR1BTX0xPTkdJVFVERSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtHUFNMb25naXR1ZGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEFHX0dQU19MT05HSVRVREVfUkVGIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O0dQU0xvbmdpdHVkZVJlZiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUQUdfR1BTX1BST0NFU1NJTkdfTUVUSE9EIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O0dQU1Byb2Nlc3NpbmdNZXRob2QmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEFHX0dQU19USU1FU1RBTVAiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7R1BTVGltZVN0YW1wJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRBR19JTUFHRV9MRU5HVEgiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7SW1hZ2VMZW5ndGgmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEFHX0lNQUdFX1dJRFRIIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O0ltYWdlV2lkdGgmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEFHX01BS0UiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7TWFrZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUQUdfTU9ERUwiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7TW9kZWwmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEFHX09SSUVOVEFUSU9OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O09yaWVudGF0aW9uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRBR19XSElURV9CQUxBTkNFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O1doaXRlQmFsYW5jZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSElURUJBTEFOQ0VfQVVUTyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0hJVEVCQUxBTkNFX01BTlVBTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkZhY2VEZXRlY3RvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRmFjZURldGVjdG9yIgorIHR5cGU9ImFuZHJvaWQubWVkaWEuRmFjZURldGVjdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1heEZhY2VzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJmaW5kRmFjZXMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJpdG1hcCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY2VzIiB0eXBlPSJhbmRyb2lkLm1lZGlhLkZhY2VEZXRlY3Rvci5GYWNlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRmFjZURldGVjdG9yLkZhY2UiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJjb25maWRlbmNlIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXllc0Rpc3RhbmNlIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWlkUG9pbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb2ludCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5Qb2ludEYiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9zZSIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJldWxlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ09ORklERU5DRV9USFJFU0hPTEQiCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAuNGYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVVMRVJfWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVVMRVJfWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVVMRVJfWiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkpldFBsYXllciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNsZWFyUXVldWUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5DbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9zZUpldEZpbGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEpldFBsYXllciIKKyByZXR1cm49ImFuZHJvaWQubWVkaWEuSmV0UGxheWVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF4VHJhY2tzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZEpldEZpbGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvYWRKZXRGaWxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWZkIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLkFzc2V0RmlsZURlc2NyaXB0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGF1c2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBsYXkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InF1ZXVlSmV0U2VnbWVudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlZ21lbnROdW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGliTnVtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcGVhdENvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRyYW5zcG9zZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtdXRlRmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXNlcklEIiB0eXBlPSJieXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InF1ZXVlSmV0U2VnbWVudE11dGVBcnJheSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlZ21lbnROdW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGliTnVtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcGVhdENvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRyYW5zcG9zZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtdXRlQXJyYXkiIHR5cGU9ImJvb2xlYW5bXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXNlcklEIiB0eXBlPSJieXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbGVhc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEV2ZW50TGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5tZWRpYS5KZXRQbGF5ZXIuT25KZXRFdmVudExpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEV2ZW50TGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5tZWRpYS5KZXRQbGF5ZXIuT25KZXRFdmVudExpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJhbmRyb2lkLm9zLkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TXV0ZUFycmF5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXV0ZUFycmF5IiB0eXBlPSJib29sZWFuW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN5bmMiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TXV0ZUZsYWciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0cmFja0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im11dGVGbGFnIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzeW5jIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE11dGVGbGFncyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im11dGVGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzeW5jIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRyaWdnZXJDbGlwIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2xpcElkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkpldFBsYXllci5PbkpldEV2ZW50TGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uSmV0RXZlbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBsYXllciIgdHlwZT0iYW5kcm9pZC5tZWRpYS5KZXRQbGF5ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlZ21lbnQiIHR5cGU9InNob3J0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0cmFjayIgdHlwZT0iYnl0ZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhbm5lbCIgdHlwZT0iYnl0ZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udHJvbGxlciIgdHlwZT0iYnl0ZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJ5dGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25KZXROdW1RdWV1ZWRTZWdtZW50VXBkYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbGF5ZXIiIHR5cGU9ImFuZHJvaWQubWVkaWEuSmV0UGxheWVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYlNlZ21lbnRzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25KZXRQYXVzZVVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGxheWVyIiB0eXBlPSJhbmRyb2lkLm1lZGlhLkpldFBsYXllciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGF1c2VkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25KZXRVc2VySWRVcGRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBsYXllciIgdHlwZT0iYW5kcm9pZC5tZWRpYS5KZXRQbGF5ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVzZXJJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXBlYXRDb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJNZWRpYVBsYXllciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTWVkaWFQbGF5ZXIiCisgdHlwZT0iYW5kcm9pZC5tZWRpYS5NZWRpYVBsYXllciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjcmVhdGUiCisgcmV0dXJuPSJhbmRyb2lkLm1lZGlhLk1lZGlhUGxheWVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGUiCisgcmV0dXJuPSJhbmRyb2lkLm1lZGlhLk1lZGlhUGxheWVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9sZGVyIiB0eXBlPSJhbmRyb2lkLnZpZXcuU3VyZmFjZUhvbGRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGUiCisgcmV0dXJuPSJhbmRyb2lkLm1lZGlhLk1lZGlhUGxheWVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEN1cnJlbnRQb3NpdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldER1cmF0aW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmlkZW9IZWlnaHQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWaWRlb1dpZHRoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNMb29waW5nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUGxheWluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXVzZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmVwYXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByZXBhcmVBc3luYyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbGVhc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZWVrVG8iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZWMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEF1ZGlvU3RyZWFtVHlwZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyZWFtdHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERhdGFTb3VyY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU2VjdXJpdHlFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5TZWN1cml0eUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREYXRhU291cmNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGF0YVNvdXJjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZkIiB0eXBlPSJqYXZhLmlvLkZpbGVEZXNjcmlwdG9yIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGF0YVNvdXJjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmQiIHR5cGU9ImphdmEuaW8uRmlsZURlc2NyaXB0b3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGlzcGxheSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNoIiB0eXBlPSJhbmRyb2lkLnZpZXcuU3VyZmFjZUhvbGRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMb29waW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb29waW5nIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9uQnVmZmVyaW5nVXBkYXRlTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5tZWRpYS5NZWRpYVBsYXllci5PbkJ1ZmZlcmluZ1VwZGF0ZUxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9uQ29tcGxldGlvbkxpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQubWVkaWEuTWVkaWFQbGF5ZXIuT25Db21wbGV0aW9uTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25FcnJvckxpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQubWVkaWEuTWVkaWFQbGF5ZXIuT25FcnJvckxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9uSW5mb0xpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQubWVkaWEuTWVkaWFQbGF5ZXIuT25JbmZvTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25QcmVwYXJlZExpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQubWVkaWEuTWVkaWFQbGF5ZXIuT25QcmVwYXJlZExpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9uU2Vla0NvbXBsZXRlTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5tZWRpYS5NZWRpYVBsYXllci5PblNlZWtDb21wbGV0ZUxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9uVmlkZW9TaXplQ2hhbmdlZExpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQubWVkaWEuTWVkaWFQbGF5ZXIuT25WaWRlb1NpemVDaGFuZ2VkTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2NyZWVuT25XaGlsZVBsYXlpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzY3JlZW5PbiIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRWb2x1bWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnRWb2x1bWUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaWdodFZvbHVtZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0V2FrZU1vZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0b3AiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJNRURJQV9FUlJPUl9OT1RfVkFMSURfRk9SX1BST0dSRVNTSVZFX1BMQVlCQUNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1FRElBX0VSUk9SX1NFUlZFUl9ESUVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1FRElBX0VSUk9SX1VOS05PV04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1FRElBX0lORk9fQkFEX0lOVEVSTEVBVklORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNRURJQV9JTkZPX01FVEFEQVRBX1VQREFURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgwMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNRURJQV9JTkZPX05PVF9TRUVLQUJMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgwMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNRURJQV9JTkZPX1VOS05PV04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1FRElBX0lORk9fVklERU9fVFJBQ0tfTEFHR0lORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjcwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ik1lZGlhUGxheWVyLk9uQnVmZmVyaW5nVXBkYXRlTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uQnVmZmVyaW5nVXBkYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtcCIgdHlwZT0iYW5kcm9pZC5tZWRpYS5NZWRpYVBsYXllciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGVyY2VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iTWVkaWFQbGF5ZXIuT25Db21wbGV0aW9uTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uQ29tcGxldGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXAiIHR5cGU9ImFuZHJvaWQubWVkaWEuTWVkaWFQbGF5ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJNZWRpYVBsYXllci5PbkVycm9yTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uRXJyb3IiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1wIiB0eXBlPSJhbmRyb2lkLm1lZGlhLk1lZGlhUGxheWVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aGF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4dHJhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJNZWRpYVBsYXllci5PbkluZm9MaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25JbmZvIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtcCIgdHlwZT0iYW5kcm9pZC5tZWRpYS5NZWRpYVBsYXllciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2hhdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHRyYSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iTWVkaWFQbGF5ZXIuT25QcmVwYXJlZExpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvblByZXBhcmVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtcCIgdHlwZT0iYW5kcm9pZC5tZWRpYS5NZWRpYVBsYXllciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9Ik1lZGlhUGxheWVyLk9uU2Vla0NvbXBsZXRlTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uU2Vla0NvbXBsZXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtcCIgdHlwZT0iYW5kcm9pZC5tZWRpYS5NZWRpYVBsYXllciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9Ik1lZGlhUGxheWVyLk9uVmlkZW9TaXplQ2hhbmdlZExpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvblZpZGVvU2l6ZUNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1wIiB0eXBlPSJhbmRyb2lkLm1lZGlhLk1lZGlhUGxheWVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iTWVkaWFSZWNvcmRlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTWVkaWFSZWNvcmRlciIKKyB0eXBlPSJhbmRyb2lkLm1lZGlhLk1lZGlhUmVjb3JkZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0QXVkaW9Tb3VyY2VNYXgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1heEFtcGxpdHVkZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJlcGFyZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVsZWFzZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QXVkaW9DaGFubmVscyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im51bUNoYW5uZWxzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QXVkaW9FbmNvZGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhdWRpb19lbmNvZGVyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBdWRpb0VuY29kaW5nQml0UmF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJpdFJhdGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBdWRpb1NhbXBsaW5nUmF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNhbXBsaW5nUmF0ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEF1ZGlvU291cmNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhdWRpb19zb3VyY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENhbWVyYSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iYW5kcm9pZC5oYXJkd2FyZS5DYW1lcmEiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWF4RHVyYXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1heF9kdXJhdGlvbl9tcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWF4RmlsZVNpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1heF9maWxlc2l6ZV9ieXRlcyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9uRXJyb3JMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImwiIHR5cGU9ImFuZHJvaWQubWVkaWEuTWVkaWFSZWNvcmRlci5PbkVycm9yTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25JbmZvTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5tZWRpYS5NZWRpYVJlY29yZGVyLk9uSW5mb0xpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE91dHB1dEZpbGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZCIgdHlwZT0iamF2YS5pby5GaWxlRGVzY3JpcHRvciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE91dHB1dEZpbGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T3V0cHV0Rm9ybWF0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXRwdXRfZm9ybWF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQcmV2aWV3RGlzcGxheSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN2IiB0eXBlPSJhbmRyb2lkLnZpZXcuU3VyZmFjZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQcm9maWxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvZmlsZSIgdHlwZT0iYW5kcm9pZC5tZWRpYS5DYW1jb3JkZXJQcm9maWxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZpZGVvRW5jb2RlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlkZW9fZW5jb2RlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VmlkZW9FbmNvZGluZ0JpdFJhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiaXRSYXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VmlkZW9GcmFtZVJhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJhdGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZpZGVvU2l6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRWaWRlb1NvdXJjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlkZW9fc291cmNlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0b3AiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Ik1FRElBX1JFQ09SREVSX0VSUk9SX1VOS05PV04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1FRElBX1JFQ09SREVSX0lORk9fTUFYX0RVUkFUSU9OX1JFQUNIRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4MDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUVESUFfUkVDT1JERVJfSU5GT19NQVhfRklMRVNJWkVfUkVBQ0hFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgwMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNRURJQV9SRUNPUkRFUl9JTkZPX1VOS05PV04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNZWRpYVJlY29yZGVyLkF1ZGlvRW5jb2RlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxmaWVsZCBuYW1lPSJBTVJfTkIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFRkFVTFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNZWRpYVJlY29yZGVyLkF1ZGlvU291cmNlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGZpZWxkIG5hbWU9IkNBTUNPUkRFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVGQVVMVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUlDIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJWT0lDRV9DQUxMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJWT0lDRV9ET1dOTElOSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVk9JQ0VfUkVDT0dOSVRJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlZPSUNFX1VQTElOSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJNZWRpYVJlY29yZGVyLk9uRXJyb3JMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25FcnJvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXIiIHR5cGU9ImFuZHJvaWQubWVkaWEuTWVkaWFSZWNvcmRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2hhdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHRyYSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iTWVkaWFSZWNvcmRlci5PbkluZm9MaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25JbmZvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtciIgdHlwZT0iYW5kcm9pZC5tZWRpYS5NZWRpYVJlY29yZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aGF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4dHJhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9Ik1lZGlhUmVjb3JkZXIuT3V0cHV0Rm9ybWF0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGZpZWxkIG5hbWU9IkRFRkFVTFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1QRUdfNCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkFXX0FNUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEhSRUVfR1BQIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTWVkaWFSZWNvcmRlci5WaWRlb0VuY29kZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iREVGQVVMVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSDI2MyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSDI2NCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTVBFR180X1NQIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTWVkaWFSZWNvcmRlci5WaWRlb1NvdXJjZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxmaWVsZCBuYW1lPSJDQU1FUkEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFRkFVTFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNZWRpYVNjYW5uZXJDb25uZWN0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQuY29udGVudC5TZXJ2aWNlQ29ubmVjdGlvbiI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTWVkaWFTY2FubmVyQ29ubmVjdGlvbiIKKyB0eXBlPSJhbmRyb2lkLm1lZGlhLk1lZGlhU2Nhbm5lckNvbm5lY3Rpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2xpZW50IiB0eXBlPSJhbmRyb2lkLm1lZGlhLk1lZGlhU2Nhbm5lckNvbm5lY3Rpb24uTWVkaWFTY2FubmVyQ29ubmVjdGlvbkNsaWVudCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNvbm5lY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpc2Nvbm5lY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ29ubmVjdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU2VydmljZUNvbm5lY3RlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNsYXNzTmFtZSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlcnZpY2UiIHR5cGU9ImFuZHJvaWQub3MuSUJpbmRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblNlcnZpY2VEaXNjb25uZWN0ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbGFzc05hbWUiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNjYW5GaWxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWltZVR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2NhbkZpbGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXRocyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaW1lVHlwZXMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsbGJhY2siIHR5cGU9ImFuZHJvaWQubWVkaWEuTWVkaWFTY2FubmVyQ29ubmVjdGlvbi5PblNjYW5Db21wbGV0ZWRMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iTWVkaWFTY2FubmVyQ29ubmVjdGlvbi5NZWRpYVNjYW5uZXJDb25uZWN0aW9uQ2xpZW50IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5tZWRpYS5NZWRpYVNjYW5uZXJDb25uZWN0aW9uLk9uU2NhbkNvbXBsZXRlZExpc3RlbmVyIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0ib25NZWRpYVNjYW5uZXJDb25uZWN0ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TY2FuQ29tcGxldGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9Ik1lZGlhU2Nhbm5lckNvbm5lY3Rpb24uT25TY2FuQ29tcGxldGVkTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uU2NhbkNvbXBsZXRlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlJpbmd0b25lIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0U3RyZWFtVHlwZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaXRsZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUGxheWluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGxheSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RyZWFtVHlwZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbVR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdG9wIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSaW5ndG9uZU1hbmFnZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJpbmd0b25lTWFuYWdlciIKKyB0eXBlPSJhbmRyb2lkLm1lZGlhLlJpbmd0b25lTWFuYWdlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGl2aXR5IiB0eXBlPSJhbmRyb2lkLmFwcC5BY3Rpdml0eSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmluZ3RvbmVNYW5hZ2VyIgorIHR5cGU9ImFuZHJvaWQubWVkaWEuUmluZ3RvbmVNYW5hZ2VyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRBY3R1YWxEZWZhdWx0UmluZ3RvbmVVcmkiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDdXJzb3IiCisgcmV0dXJuPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWZhdWx0VHlwZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZWZhdWx0UmluZ3RvbmVVcmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWZhdWx0VXJpIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJpIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbmNsdWRlRHJtIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSaW5ndG9uZSIKKyByZXR1cm49ImFuZHJvaWQubWVkaWEuUmluZ3RvbmUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmluZ3RvbmUiCisgcmV0dXJuPSJhbmRyb2lkLm1lZGlhLlJpbmd0b25lIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaW5ndG9uZVVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJpbmd0b25lUG9zaXRpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJpbmd0b25lVXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmluZ3RvbmVVcmkiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RvcFByZXZpb3VzUmluZ3RvbmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZhbGlkUmluZ3RvbmVVcmkiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5mZXJTdHJlYW1UeXBlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRGVmYXVsdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmluZ3RvbmVVcmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBY3R1YWxEZWZhdWx0UmluZ3RvbmVVcmkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJpbmd0b25lVXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW5jbHVkZURybSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluY2x1ZGVEcm0iIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RvcFByZXZpb3VzUmluZ3RvbmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdG9wUHJldmlvdXNSaW5ndG9uZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUeXBlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0b3BQcmV2aW91c1Jpbmd0b25lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkFDVElPTl9SSU5HVE9ORV9QSUNLRVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuYWN0aW9uLlJJTkdUT05FX1BJQ0tFUiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9SSU5HVE9ORV9ERUZBVUxUX1VSSSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5leHRyYS5yaW5ndG9uZS5ERUZBVUxUX1VSSSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9SSU5HVE9ORV9FWElTVElOR19VUkkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuZXh0cmEucmluZ3RvbmUuRVhJU1RJTkdfVVJJJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX1JJTkdUT05FX0lOQ0xVREVfRFJNIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmV4dHJhLnJpbmd0b25lLklOQ0xVREVfRFJNJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX1JJTkdUT05FX1BJQ0tFRF9VUkkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuZXh0cmEucmluZ3RvbmUuUElDS0VEX1VSSSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9SSU5HVE9ORV9TSE9XX0RFRkFVTFQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuZXh0cmEucmluZ3RvbmUuU0hPV19ERUZBVUxUJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX1JJTkdUT05FX1NIT1dfU0lMRU5UIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmV4dHJhLnJpbmd0b25lLlNIT1dfU0lMRU5UJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX1JJTkdUT05FX1RJVExFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmV4dHJhLnJpbmd0b25lLlRJVExFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX1JJTkdUT05FX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuZXh0cmEucmluZ3RvbmUuVFlQRSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJRF9DT0xVTU5fSU5ERVgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRJVExFX0NPTFVNTl9JTkRFWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9BTEFSTSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9BTEwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfTk9USUZJQ0FUSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX1JJTkdUT05FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVUklfQ09MVU1OX0lOREVYIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU291bmRQb29sIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTb3VuZFBvb2wiCisgdHlwZT0iYW5kcm9pZC5tZWRpYS5Tb3VuZFBvb2wiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXhTdHJlYW1zIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbVR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjUXVhbGl0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYXV0b1BhdXNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXV0b1Jlc3VtZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvYWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdGgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByaW9yaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByaW9yaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWZkIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLkFzc2V0RmlsZURlc2NyaXB0b3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByaW9yaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmQiIHR5cGU9ImphdmEuaW8uRmlsZURlc2NyaXB0b3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcmlvcml0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhdXNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbUlEIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGxheSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdW5kSUQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVmdFZvbHVtZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJpZ2h0Vm9sdW1lIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJpb3JpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9vcCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyYXRlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWxlYXNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzdW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbUlEIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TG9vcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJlYW1JRCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb29wIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25Mb2FkQ29tcGxldGVMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLm1lZGlhLlNvdW5kUG9vbC5PbkxvYWRDb21wbGV0ZUxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByaW9yaXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbUlEIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByaW9yaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UmF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJlYW1JRCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyYXRlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRWb2x1bWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyZWFtSUQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVmdFZvbHVtZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJpZ2h0Vm9sdW1lIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdG9wIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbUlEIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5sb2FkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdW5kSUQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iU291bmRQb29sLk9uTG9hZENvbXBsZXRlTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uTG9hZENvbXBsZXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VuZFBvb2wiIHR5cGU9ImFuZHJvaWQubWVkaWEuU291bmRQb29sIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzYW1wbGVJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0dXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iVGh1bWJuYWlsVXRpbHMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRodW1ibmFpbFV0aWxzIgorIHR5cGU9ImFuZHJvaWQubWVkaWEuVGh1bWJuYWlsVXRpbHMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY3JlYXRlVmlkZW9UaHVtYm5haWwiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlUGF0aCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2luZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4dHJhY3RUaHVtYm5haWwiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJleHRyYWN0VGh1bWJuYWlsIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9wdGlvbnMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Ik9QVElPTlNfUkVDWUNMRV9JTlBVVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlRvbmVHZW5lcmF0b3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRvbmVHZW5lcmF0b3IiCisgdHlwZT0iYW5kcm9pZC5tZWRpYS5Ub25lR2VuZXJhdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyZWFtVHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2b2x1bWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InJlbGVhc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRUb25lIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idG9uZVR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydFRvbmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRvbmVUeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImR1cmF0aW9uTXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdG9wVG9uZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Ik1BWF9WT0xVTUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUlOX1ZPTFVNRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX0FCQlJfQUxFUlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI5NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfQUJCUl9JTlRFUkNFUFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfQUJCUl9SRU9SREVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX0FMRVJUX0FVVE9SRURJQUxfTElURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijg3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfQ0RNQV9BTEVSVF9DQUxMX0dVQVJEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX0FMRVJUX0lOQ0FMTF9MSVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX0FMRVJUX05FVFdPUktfTElURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijg2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfQ0RNQV9BTlNXRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfQ0FMTERST1BfTElURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijk1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfQ0RNQV9DQUxMX1NJR05BTF9JU0ROX0lOVEVSR1JPVVAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfQ0FMTF9TSUdOQUxfSVNETl9OT1JNQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfQ0FMTF9TSUdOQUxfSVNETl9QQVQzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX0NBTExfU0lHTkFMX0lTRE5fUEFUNSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfQ0RNQV9DQUxMX1NJR05BTF9JU0ROX1BBVDYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfQ0FMTF9TSUdOQUxfSVNETl9QQVQ3IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX0NBTExfU0lHTkFMX0lTRE5fUElOR19SSU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX0NBTExfU0lHTkFMX0lTRE5fU1BfUFJJIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX0NPTkZJUk0iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfRElBTF9UT05FX0xJVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfRU1FUkdFTkNZX1JJTkdCQUNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX0hJR0hfTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfQ0RNQV9ISUdIX1BCWF9MIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX0hJR0hfUEJYX1NMUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfQ0RNQV9ISUdIX1BCWF9TUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfQ0RNQV9ISUdIX1BCWF9TU0wiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfSElHSF9QQlhfU19YNCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfQ0RNQV9ISUdIX1NMUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjY1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfQ0RNQV9ISUdIX1NTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX0hJR0hfU1NMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX0hJR0hfU1NfMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjYyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfQ0RNQV9ISUdIX1NfWDQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfSU5URVJDRVBUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX0tFWVBBRF9WT0xVTUVfS0VZX0xJVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfTE9XX0wiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfTE9XX1BCWF9MIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX0xPV19QQlhfU0xTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX0xPV19QQlhfU1MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfTE9XX1BCWF9TU0wiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfTE9XX1BCWF9TX1g0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX0xPV19TTFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfTE9XX1NTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX0xPV19TU0wiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfTE9XX1NTXzIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfTE9XX1NfWDQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfTUVEX0wiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfTUVEX1BCWF9MIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX01FRF9QQlhfU0xTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX01FRF9QQlhfU1MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfTUVEX1BCWF9TU0wiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfTUVEX1BCWF9TX1g0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX01FRF9TTFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfTUVEX1NTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX01FRF9TU0wiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfTUVEX1NTXzIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfTUVEX1NfWDQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfTkVUV09SS19CVVNZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX05FVFdPUktfQlVTWV9PTkVfU0hPVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijk2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfQ0RNQV9ORVRXT1JLX0NBTExXQUlUSU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX05FVFdPUktfVVNBX1JJTkdCQUNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX09ORV9NSU5fQkVFUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijg4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfQ0RNQV9QSVAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfUFJFU1NIT0xES0VZX0xJVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI5MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0NETUFfUkVPUkRFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfQ0RNQV9TSUdOQUxfT0ZGIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9DRE1BX1NPRlRfRVJST1JfTElURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijk0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfRFRNRl8wIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0RUTUZfMSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9EVE1GXzIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfRFRNRl8zIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0RUTUZfNCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9EVE1GXzUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfRFRNRl82IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0RUTUZfNyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9EVE1GXzgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfRFRNRl85IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0RUTUZfQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfRFRNRl9CIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9EVE1GX0MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX0RUTUZfRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfRFRNRl9QIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9EVE1GX1MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX1BST1BfQUNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9QUk9QX0JFRVAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX1BST1BfQkVFUDIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX1BST1BfTkFDSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfUFJPUF9QUk9NUFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX1NVUF9CVVNZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9TVVBfQ0FMTF9XQUlUSU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9ORV9TVVBfQ09ORklSTSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfU1VQX0NPTkdFU1RJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX1NVUF9DT05HRVNUSU9OX0FCQlJFViIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfU1VQX0RJQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX1NVUF9FUlJPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfU1VQX0lOVEVSQ0VQVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfU1VQX0lOVEVSQ0VQVF9BQkJSRVYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX1NVUF9QSVAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX1NVUF9SQURJT19BQ0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUT05FX1NVUF9SQURJT19OT1RBVkFJTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPTkVfU1VQX1JJTkdUT05FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iYW5kcm9pZC5uZXQiCis+Cis8Y2xhc3MgbmFtZT0iQ29ubmVjdGl2aXR5TWFuYWdlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldEFjdGl2ZU5ldHdvcmtJbmZvIgorIHJldHVybj0iYW5kcm9pZC5uZXQuTmV0d29ya0luZm8iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWxsTmV0d29ya0luZm8iCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5OZXR3b3JrSW5mb1tdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJhY2tncm91bmREYXRhU2V0dGluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmV0d29ya0luZm8iCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5OZXR3b3JrSW5mbyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV0d29ya1R5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROZXR3b3JrUHJlZmVyZW5jZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc05ldHdvcmtUeXBlVmFsaWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ldHdvcmtUeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVxdWVzdFJvdXRlVG9Ib3N0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV0d29ya1R5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdEFkZHJlc3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXROZXR3b3JrUHJlZmVyZW5jZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByZWZlcmVuY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydFVzaW5nTmV0d29ya0ZlYXR1cmUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ldHdvcmtUeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RvcFVzaW5nTmV0d29ya0ZlYXR1cmUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ldHdvcmtUeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fQkFDS0dST1VORF9EQVRBX1NFVFRJTkdfQ0hBTkdFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLm5ldC5jb25uLkJBQ0tHUk9VTkRfREFUQV9TRVRUSU5HX0NIQU5HRUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OTkVDVElWSVRZX0FDVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLm5ldC5jb25uLkNPTk5FQ1RJVklUWV9DSEFOR0UmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVGQVVMVF9ORVRXT1JLX1BSRUZFUkVOQ0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX0VYVFJBX0lORk8iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZXh0cmFJbmZvJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX0lTX0ZBSUxPVkVSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2lzRmFpbG92ZXImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfTkVUV09SS19JTkZPIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O25ldHdvcmtJbmZvJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX05PX0NPTk5FQ1RJVklUWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtub0Nvbm5lY3Rpdml0eSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9PVEhFUl9ORVRXT1JLX0lORk8iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7b3RoZXJOZXR3b3JrJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX1JFQVNPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtyZWFzb24mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9NT0JJTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfTU9CSUxFX0RVTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9NT0JJTEVfSElQUkkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfTU9CSUxFX01NUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9NT0JJTEVfU1VQTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9XSUZJIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX1dJTUFYIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ3JlZGVudGlhbHMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNyZWRlbnRpYWxzIgorIHR5cGU9ImFuZHJvaWQubmV0LkNyZWRlbnRpYWxzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJnaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEdpZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQaWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VWlkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRoY3BJbmZvIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGhjcEluZm8iCisgdHlwZT0iYW5kcm9pZC5uZXQuRGhjcEluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJkbnMxIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRuczIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZ2F0ZXdheSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpcEFkZHJlc3MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibGVhc2VEdXJhdGlvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJuZXRtYXNrIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNlcnZlckFkZHJlc3MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkxvY2FsU2VydmVyU29ja2V0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMb2NhbFNlcnZlclNvY2tldCIKKyB0eXBlPSJhbmRyb2lkLm5ldC5Mb2NhbFNlcnZlclNvY2tldCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMb2NhbFNlcnZlclNvY2tldCIKKyB0eXBlPSJhbmRyb2lkLm5ldC5Mb2NhbFNlcnZlclNvY2tldCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZkIiB0eXBlPSJqYXZhLmlvLkZpbGVEZXNjcmlwdG9yIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFjY2VwdCIKKyByZXR1cm49ImFuZHJvaWQubmV0LkxvY2FsU29ja2V0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpbGVEZXNjcmlwdG9yIgorIHJldHVybj0iamF2YS5pby5GaWxlRGVzY3JpcHRvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhbFNvY2tldEFkZHJlc3MiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5Mb2NhbFNvY2tldEFkZHJlc3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTG9jYWxTb2NrZXQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxvY2FsU29ja2V0IgorIHR5cGU9ImFuZHJvaWQubmV0LkxvY2FsU29ja2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImJpbmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiaW5kcG9pbnQiIHR5cGU9ImFuZHJvaWQubmV0LkxvY2FsU29ja2V0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb25uZWN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kcG9pbnQiIHR5cGU9ImFuZHJvaWQubmV0LkxvY2FsU29ja2V0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29ubmVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZHBvaW50IiB0eXBlPSJhbmRyb2lkLm5ldC5Mb2NhbFNvY2tldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVvdXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QW5jaWxsYXJ5RmlsZURlc2NyaXB0b3JzIgorIHJldHVybj0iamF2YS5pby5GaWxlRGVzY3JpcHRvcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGaWxlRGVzY3JpcHRvciIKKyByZXR1cm49ImphdmEuaW8uRmlsZURlc2NyaXB0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5wdXRTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhbFNvY2tldEFkZHJlc3MiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5Mb2NhbFNvY2tldEFkZHJlc3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T3V0cHV0U3RyZWFtIgorIHJldHVybj0iamF2YS5pby5PdXRwdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBlZXJDcmVkZW50aWFscyIKKyByZXR1cm49ImFuZHJvaWQubmV0LkNyZWRlbnRpYWxzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZWNlaXZlQnVmZmVyU2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVtb3RlU29ja2V0QWRkcmVzcyIKKyByZXR1cm49ImFuZHJvaWQubmV0LkxvY2FsU29ja2V0QWRkcmVzcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZW5kQnVmZmVyU2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U29UaW1lb3V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0JvdW5kIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ2xvc2VkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0Nvbm5lY3RlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0lucHV0U2h1dGRvd24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzT3V0cHV0U2h1dGRvd24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZpbGVEZXNjcmlwdG9yc0ZvclNlbmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZHMiIHR5cGU9ImphdmEuaW8uRmlsZURlc2NyaXB0b3JbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZWNlaXZlQnVmZmVyU2l6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2VuZEJ1ZmZlclNpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNvVGltZW91dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2h1dGRvd25JbnB1dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNodXRkb3duT3V0cHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTG9jYWxTb2NrZXRBZGRyZXNzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMb2NhbFNvY2tldEFkZHJlc3MiCisgdHlwZT0iYW5kcm9pZC5uZXQuTG9jYWxTb2NrZXRBZGRyZXNzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXNwYWNlIiB0eXBlPSJhbmRyb2lkLm5ldC5Mb2NhbFNvY2tldEFkZHJlc3MuTmFtZXNwYWNlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMb2NhbFNvY2tldEFkZHJlc3MiCisgdHlwZT0iYW5kcm9pZC5uZXQuTG9jYWxTb2NrZXRBZGRyZXNzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWVzcGFjZSIKKyByZXR1cm49ImFuZHJvaWQubmV0LkxvY2FsU29ja2V0QWRkcmVzcy5OYW1lc3BhY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTG9jYWxTb2NrZXRBZGRyZXNzLk5hbWVzcGFjZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRW51bSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImFuZHJvaWQubmV0LkxvY2FsU29ja2V0QWRkcmVzcy5OYW1lc3BhY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZXMiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5Mb2NhbFNvY2tldEFkZHJlc3MuTmFtZXNwYWNlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik1haWxUbyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldEJvZHkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENjIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIZWFkZXJzIgorIHJldHVybj0iamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdWJqZWN0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUbyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNNYWlsVG8iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZSIKKyByZXR1cm49ImFuZHJvaWQubmV0Lk1haWxUbyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhcnNlRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLm5ldC5QYXJzZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Ik1BSUxUT19TQ0hFTUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bWFpbHRvOiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTmV0d29ya0luZm8iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZXRhaWxlZFN0YXRlIgorIHJldHVybj0iYW5kcm9pZC5uZXQuTmV0d29ya0luZm8uRGV0YWlsZWRTdGF0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeHRyYUluZm8iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlYXNvbiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RhdGUiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5OZXR3b3JrSW5mby5TdGF0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdWJ0eXBlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1YnR5cGVOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFR5cGVOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0F2YWlsYWJsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNDb25uZWN0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ29ubmVjdGVkT3JDb25uZWN0aW5nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0ZhaWxvdmVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1JvYW1pbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJOZXR3b3JrSW5mby5EZXRhaWxlZFN0YXRlIgorIGV4dGVuZHM9ImphdmEubGFuZy5FbnVtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iYW5kcm9pZC5uZXQuTmV0d29ya0luZm8uRGV0YWlsZWRTdGF0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlcyIKKyByZXR1cm49ImFuZHJvaWQubmV0Lk5ldHdvcmtJbmZvLkRldGFpbGVkU3RhdGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTmV0d29ya0luZm8uU3RhdGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkVudW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5OZXR3b3JrSW5mby5TdGF0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlcyIKKyByZXR1cm49ImFuZHJvaWQubmV0Lk5ldHdvcmtJbmZvLlN0YXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBhcnNlRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0icmVzcG9uc2UiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQcm94eSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcm94eSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5Qcm94eSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXREZWZhdWx0SG9zdCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlZmF1bHRQb3J0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIb3N0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN0eCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UG9ydCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN0eCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJQUk9YWV9DSEFOR0VfQUNUSU9OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5QUk9YWV9DSEFOR0UmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNTTENlcnRpZmljYXRlU29ja2V0RmFjdG9yeSIKKyBleHRlbmRzPSJqYXZheC5uZXQuc3NsLlNTTFNvY2tldEZhY3RvcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTU0xDZXJ0aWZpY2F0ZVNvY2tldEZhY3RvcnkiCisgdHlwZT0iYW5kcm9pZC5uZXQuU1NMQ2VydGlmaWNhdGVTb2NrZXRGYWN0b3J5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kc2hha2VUaW1lb3V0TWlsbGlzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVTb2NrZXQiCisgcmV0dXJuPSJqYXZhLm5ldC5Tb2NrZXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImsiIHR5cGU9ImphdmEubmV0LlNvY2tldCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjbG9zZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlU29ja2V0IgorIHJldHVybj0iamF2YS5uZXQuU29ja2V0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhZGRyIiB0eXBlPSJqYXZhLm5ldC5JbmV0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbEFkZHIiIHR5cGU9ImphdmEubmV0LkluZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbFBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlU29ja2V0IgorIHJldHVybj0iamF2YS5uZXQuU29ja2V0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhZGRyIiB0eXBlPSJqYXZhLm5ldC5JbmV0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVTb2NrZXQiCisgcmV0dXJuPSJqYXZhLm5ldC5Tb2NrZXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imhvc3QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxBZGRyIiB0eXBlPSJqYXZhLm5ldC5JbmV0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxQb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVNvY2tldCIKKyByZXR1cm49ImphdmEubmV0LlNvY2tldCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWZhdWx0IgorIHJldHVybj0iamF2YXgubmV0LlNvY2tldEZhY3RvcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZHNoYWtlVGltZW91dE1pbGxpcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlZmF1bHQiCisgcmV0dXJuPSJqYXZheC5uZXQuc3NsLlNTTFNvY2tldEZhY3RvcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZHNoYWtlVGltZW91dE1pbGxpcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYWNoZSIgdHlwZT0iYW5kcm9pZC5uZXQuU1NMU2Vzc2lvbkNhY2hlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlZmF1bHRDaXBoZXJTdWl0ZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SHR0cFNvY2tldEZhY3RvcnkiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5zc2wuU1NMU29ja2V0RmFjdG9yeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kc2hha2VUaW1lb3V0TWlsbGlzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhY2hlIiB0eXBlPSJhbmRyb2lkLm5ldC5TU0xTZXNzaW9uQ2FjaGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zZWN1cmUiCisgcmV0dXJuPSJqYXZheC5uZXQuc3NsLlNTTFNvY2tldEZhY3RvcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZHNoYWtlVGltZW91dE1pbGxpcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYWNoZSIgdHlwZT0iYW5kcm9pZC5uZXQuU1NMU2Vzc2lvbkNhY2hlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1cHBvcnRlZENpcGhlclN1aXRlcyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTU0xTZXNzaW9uQ2FjaGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1NMU2Vzc2lvbkNhY2hlIgorIHR5cGU9ImFuZHJvaWQubmV0LlNTTFNlc3Npb25DYWNoZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpciIgdHlwZT0iamF2YS5pby5GaWxlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1NMU2Vzc2lvbkNhY2hlIgorIHR5cGU9ImFuZHJvaWQubmV0LlNTTFNlc3Npb25DYWNoZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVHJhZmZpY1N0YXRzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUcmFmZmljU3RhdHMiCisgdHlwZT0iYW5kcm9pZC5uZXQuVHJhZmZpY1N0YXRzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldE1vYmlsZVJ4Qnl0ZXMiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNb2JpbGVSeFBhY2tldHMiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNb2JpbGVUeEJ5dGVzIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TW9iaWxlVHhQYWNrZXRzIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VG90YWxSeEJ5dGVzIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VG90YWxSeFBhY2tldHMiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUb3RhbFR4Qnl0ZXMiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUb3RhbFR4UGFja2V0cyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFVpZFJ4Qnl0ZXMiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idWlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VWlkVHhCeXRlcyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1aWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IlVOU1VQUE9SVEVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlVyaSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5Db21wYXJhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImJ1aWxkVXBvbiIKKyByZXR1cm49ImFuZHJvaWQubmV0LlVyaS5CdWlsZGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcGFyZVRvIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdGhlciIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlY29kZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmNvZGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5jb2RlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbGxvdyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmcm9tRmlsZSIKKyByZXR1cm49ImFuZHJvaWQubmV0LlVyaSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlIiB0eXBlPSJqYXZhLmlvLkZpbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZnJvbVBhcnRzIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJpIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNjaGVtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3NwIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmcmFnbWVudCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdXRob3JpdHkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RW5jb2RlZEF1dGhvcml0eSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbmNvZGVkRnJhZ21lbnQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RW5jb2RlZFBhdGgiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RW5jb2RlZFF1ZXJ5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVuY29kZWRTY2hlbWVTcGVjaWZpY1BhcnQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RW5jb2RlZFVzZXJJbmZvIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZyYWdtZW50IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhvc3QiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGFzdFBhdGhTZWdtZW50IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhdGgiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGF0aFNlZ21lbnRzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQb3J0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UXVlcnkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UXVlcnlQYXJhbWV0ZXIiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UXVlcnlQYXJhbWV0ZXJzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTY2hlbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2NoZW1lU3BlY2lmaWNQYXJ0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFVzZXJJbmZvIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQWJzb2x1dGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzSGllcmFyY2hpY2FsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzT3BhcXVlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1JlbGF0aXZlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJpIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaVN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3aXRoQXBwZW5kZWRQYXRoIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJpIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJhc2VVcmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aFNlZ21lbnQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVNUFRZIgorIHR5cGU9ImFuZHJvaWQubmV0LlVyaSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVXJpLkJ1aWxkZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVcmkuQnVpbGRlciIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkuQnVpbGRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhcHBlbmRFbmNvZGVkUGF0aCIKKyByZXR1cm49ImFuZHJvaWQubmV0LlVyaS5CdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdTZWdtZW50IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZFBhdGgiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmkuQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3U2VnbWVudCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmRRdWVyeVBhcmFtZXRlciIKKyByZXR1cm49ImFuZHJvaWQubmV0LlVyaS5CdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImF1dGhvcml0eSIKKyByZXR1cm49ImFuZHJvaWQubmV0LlVyaS5CdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhdXRob3JpdHkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYnVpbGQiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5jb2RlZEF1dGhvcml0eSIKKyByZXR1cm49ImFuZHJvaWQubmV0LlVyaS5CdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhdXRob3JpdHkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5jb2RlZEZyYWdtZW50IgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJpLkJ1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZyYWdtZW50IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuY29kZWRPcGFxdWVQYXJ0IgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJpLkJ1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9wYXF1ZVBhcnQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5jb2RlZFBhdGgiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmkuQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmNvZGVkUXVlcnkiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmkuQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icXVlcnkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZnJhZ21lbnQiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmkuQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZnJhZ21lbnQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3BhcXVlUGFydCIKKyByZXR1cm49ImFuZHJvaWQubmV0LlVyaS5CdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcGFxdWVQYXJ0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhdGgiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmkuQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJxdWVyeSIKKyByZXR1cm49ImFuZHJvaWQubmV0LlVyaS5CdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJxdWVyeSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzY2hlbWUiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmkuQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NoZW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlVybFF1ZXJ5U2FuaXRpemVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVcmxRdWVyeVNhbml0aXplciIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmxRdWVyeVNhbml0aXplciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlVybFF1ZXJ5U2FuaXRpemVyIgorIHR5cGU9ImFuZHJvaWQubmV0LlVybFF1ZXJ5U2FuaXRpemVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkU2FuaXRpemVkRW50cnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWNvZGVIZXhEaWdpdCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbGxCdXROdWxBbmRBbmdsZUJyYWNrZXRzTGVnYWwiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmxRdWVyeVNhbml0aXplci5WYWx1ZVNhbml0aXplciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWxsQnV0TnVsTGVnYWwiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmxRdWVyeVNhbml0aXplci5WYWx1ZVNhbml0aXplciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWxsQnV0V2hpdGVzcGFjZUxlZ2FsIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJsUXVlcnlTYW5pdGl6ZXIuVmFsdWVTYW5pdGl6ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFsbElsbGVnYWwiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmxRdWVyeVNhbml0aXplci5WYWx1ZVNhbml0aXplciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWxsb3dVbnJlZ2lzdGVyZWRQYXJhbWF0ZXJzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbXBBbmRTcGFjZUxlZ2FsIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJsUXVlcnlTYW5pdGl6ZXIuVmFsdWVTYW5pdGl6ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFtcExlZ2FsIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJsUXVlcnlTYW5pdGl6ZXIuVmFsdWVTYW5pdGl6ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVmZmVjdGl2ZVZhbHVlU2FuaXRpemVyIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJsUXVlcnlTYW5pdGl6ZXIuVmFsdWVTYW5pdGl6ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJhbWV0ZXJMaXN0IgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5uZXQuVXJsUXVlcnlTYW5pdGl6ZXIuUGFyYW1ldGVyVmFsdWVQYWlyJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJhbWV0ZXJTZXQiCisgcmV0dXJuPSJqYXZhLnV0aWwuU2V0Jmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByZWZlckZpcnN0UmVwZWF0ZWRQYXJhbWV0ZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNwYWNlTGVnYWwiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmxRdWVyeVNhbml0aXplci5WYWx1ZVNhbml0aXplciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VW5yZWdpc3RlcmVkUGFyYW1ldGVyVmFsdWVTYW5pdGl6ZXIiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmxRdWVyeVNhbml0aXplci5WYWx1ZVNhbml0aXplciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVcmxBbmRTcGFjZUxlZ2FsIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJsUXVlcnlTYW5pdGl6ZXIuVmFsdWVTYW5pdGl6ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFVybExlZ2FsIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJsUXVlcnlTYW5pdGl6ZXIuVmFsdWVTYW5pdGl6ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZhbHVlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZhbHVlU2FuaXRpemVyIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJsUXVlcnlTYW5pdGl6ZXIuVmFsdWVTYW5pdGl6ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNQYXJhbWV0ZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNIZXhEaWdpdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VFbnRyeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VRdWVyeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InF1ZXJ5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlVXJsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlZ2lzdGVyUGFyYW1ldGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZVNhbml0aXplciIgdHlwZT0iYW5kcm9pZC5uZXQuVXJsUXVlcnlTYW5pdGl6ZXIuVmFsdWVTYW5pdGl6ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVnaXN0ZXJQYXJhbWV0ZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVycyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZVNhbml0aXplciIgdHlwZT0iYW5kcm9pZC5uZXQuVXJsUXVlcnlTYW5pdGl6ZXIuVmFsdWVTYW5pdGl6ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QWxsb3dVbnJlZ2lzdGVyZWRQYXJhbWF0ZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxsb3dVbnJlZ2lzdGVyZWRQYXJhbWF0ZXJzIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByZWZlckZpcnN0UmVwZWF0ZWRQYXJhbWV0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmZXJGaXJzdFJlcGVhdGVkUGFyYW1ldGVyIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFVucmVnaXN0ZXJlZFBhcmFtZXRlclZhbHVlU2FuaXRpemVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2FuaXRpemVyIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmxRdWVyeVNhbml0aXplci5WYWx1ZVNhbml0aXplciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bmVzY2FwZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJVcmxRdWVyeVNhbml0aXplci5JbGxlZ2FsQ2hhcmFjdGVyVmFsdWVTYW5pdGl6ZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm5ldC5VcmxRdWVyeVNhbml0aXplci5WYWx1ZVNhbml0aXplciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iVXJsUXVlcnlTYW5pdGl6ZXIuSWxsZWdhbENoYXJhY3RlclZhbHVlU2FuaXRpemVyIgorIHR5cGU9ImFuZHJvaWQubmV0LlVybFF1ZXJ5U2FuaXRpemVyLklsbGVnYWxDaGFyYWN0ZXJWYWx1ZVNhbml0aXplciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJzYW5pdGl6ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQUxMX0JVVF9OVUxfQU5EX0FOR0xFX0JSQUNLRVRTX0xFR0FMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTQzOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBTExfQlVUX05VTF9MRUdBTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE1MzUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUxMX0JVVF9XSElURVNQQUNFX0xFR0FMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTUzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBTExfSUxMRUdBTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUxMX09LIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjA0NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBTExfV0hJVEVTUEFDRV9PSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQU1QX0FORF9TUEFDRV9MRUdBTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBTVBfTEVHQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQU1QX09LIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRRVU9URV9PSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR1RfT0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMVF9PSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5PTl83X0JJVF9BU0NJSV9PSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTlVMX09LIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9USEVSX1dISVRFU1BBQ0VfT0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBDVF9PSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI1NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ1JJUFRfVVJMX09LIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAyNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTUEFDRV9MRUdBTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1BBQ0VfT0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNRVU9URV9PSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVSTF9BTkRfU1BBQ0VfTEVHQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVVJMX0xFR0FMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDA0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJVcmxRdWVyeVNhbml0aXplci5QYXJhbWV0ZXJWYWx1ZVBhaXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlVybFF1ZXJ5U2FuaXRpemVyLlBhcmFtZXRlclZhbHVlUGFpciIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmxRdWVyeVNhbml0aXplci5QYXJhbWV0ZXJWYWx1ZVBhaXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxmaWVsZCBuYW1lPSJtUGFyYW1ldGVyIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJtVmFsdWUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iVXJsUXVlcnlTYW5pdGl6ZXIuVmFsdWVTYW5pdGl6ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InNhbml0aXplIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJhbmRyb2lkLm5ldC5odHRwIgorPgorPGNsYXNzIG5hbWU9IkFuZHJvaWRIdHRwQ2xpZW50IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5IdHRwQ2xpZW50Ij4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iY2xvc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpc2FibGVDdXJsTG9nZ2luZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5hYmxlQ3VybExvZ2dpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZXZlbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4ZWN1dGUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lm1ldGhvZHMuSHR0cFVyaVJlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4ZWN1dGUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lm1ldGhvZHMuSHR0cFVyaVJlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhlY3V0ZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4ZWN1dGUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwSG9zdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4ZWN1dGUiCisgcmV0dXJuPSJUIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lm1ldGhvZHMuSHR0cFVyaVJlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3BvbnNlSGFuZGxlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5SZXNwb25zZUhhbmRsZXImbHQ7PyBleHRlbmRzIFQmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGllbnRQcm90b2NvbEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5DbGllbnRQcm90b2NvbEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhlY3V0ZSIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQubWV0aG9kcy5IdHRwVXJpUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzcG9uc2VIYW5kbGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LlJlc3BvbnNlSGFuZGxlciZsdDs/IGV4dGVuZHMgVCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2xpZW50UHJvdG9jb2xFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuQ2xpZW50UHJvdG9jb2xFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4ZWN1dGUiCisgcmV0dXJuPSJUIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwSG9zdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZUhhbmRsZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuUmVzcG9uc2VIYW5kbGVyJmx0Oz8gZXh0ZW5kcyBUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2xpZW50UHJvdG9jb2xFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuQ2xpZW50UHJvdG9jb2xFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4ZWN1dGUiCisgcmV0dXJuPSJUIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwSG9zdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZUhhbmRsZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuUmVzcG9uc2VIYW5kbGVyJmx0Oz8gZXh0ZW5kcyBUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGllbnRQcm90b2NvbEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5DbGllbnRQcm90b2NvbEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29tcHJlc3NlZEVudGl0eSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5lbnRpdHkuQWJzdHJhY3RIdHRwRW50aXR5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzb2x2ZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbm5lY3Rpb25NYW5hZ2VyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNvbm4uQ2xpZW50Q29ubmVjdGlvbk1hbmFnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWluR3ppcFNpemUiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc29sdmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtcyIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVbmd6aXBwZWRDb250ZW50IgorIHJldHVybj0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbnRpdHkiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRW50aXR5Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtb2RpZnlSZXF1ZXN0VG9BY2NlcHRHemlwUmVzcG9uc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdJbnN0YW5jZSIKKyByZXR1cm49ImFuZHJvaWQubmV0Lmh0dHAuQW5kcm9pZEh0dHBDbGllbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXNlckFnZW50IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdJbnN0YW5jZSIKKyByZXR1cm49ImFuZHJvaWQubmV0Lmh0dHAuQW5kcm9pZEh0dHBDbGllbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXNlckFnZW50IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlRGF0ZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0ZVN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkRFRkFVTFRfU1lOQ19NSU5fR1pJUF9CWVRFUyIKKyB0eXBlPSJsb25nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3NsQ2VydGlmaWNhdGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNzbENlcnRpZmljYXRlIgorIHR5cGU9ImFuZHJvaWQubmV0Lmh0dHAuU3NsQ2VydGlmaWNhdGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imlzc3VlZFRvIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpc3N1ZWRCeSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsaWROb3RCZWZvcmUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbGlkTm90QWZ0ZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNzbENlcnRpZmljYXRlIgorIHR5cGU9ImFuZHJvaWQubmV0Lmh0dHAuU3NsQ2VydGlmaWNhdGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpc3N1ZWRUbyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNzdWVkQnkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbGlkTm90QmVmb3JlIiB0eXBlPSJqYXZhLnV0aWwuRGF0ZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsaWROb3RBZnRlciIgdHlwZT0iamF2YS51dGlsLkRhdGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNzbENlcnRpZmljYXRlIgorIHR5cGU9ImFuZHJvaWQubmV0Lmh0dHAuU3NsQ2VydGlmaWNhdGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjZXJ0aWZpY2F0ZSIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlDZXJ0aWZpY2F0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldElzc3VlZEJ5IgorIHJldHVybj0iYW5kcm9pZC5uZXQuaHR0cC5Tc2xDZXJ0aWZpY2F0ZS5ETmFtZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJc3N1ZWRUbyIKKyByZXR1cm49ImFuZHJvaWQubmV0Lmh0dHAuU3NsQ2VydGlmaWNhdGUuRE5hbWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmFsaWROb3RBZnRlciIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWYWxpZE5vdEFmdGVyRGF0ZSIKKyByZXR1cm49ImphdmEudXRpbC5EYXRlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZhbGlkTm90QmVmb3JlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZhbGlkTm90QmVmb3JlRGF0ZSIKKyByZXR1cm49ImphdmEudXRpbC5EYXRlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc3RvcmVTdGF0ZSIKKyByZXR1cm49ImFuZHJvaWQubmV0Lmh0dHAuU3NsQ2VydGlmaWNhdGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVuZGxlIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzYXZlU3RhdGUiCisgcmV0dXJuPSJhbmRyb2lkLm9zLkJ1bmRsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjZXJ0aWZpY2F0ZSIgdHlwZT0iYW5kcm9pZC5uZXQuaHR0cC5Tc2xDZXJ0aWZpY2F0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTc2xDZXJ0aWZpY2F0ZS5ETmFtZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3NsQ2VydGlmaWNhdGUuRE5hbWUiCisgdHlwZT0iYW5kcm9pZC5uZXQuaHR0cC5Tc2xDZXJ0aWZpY2F0ZS5ETmFtZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q05hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VU5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNzbEVycm9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTc2xFcnJvciIKKyB0eXBlPSJhbmRyb2lkLm5ldC5odHRwLlNzbEVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXJyb3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2VydGlmaWNhdGUiIHR5cGU9ImFuZHJvaWQubmV0Lmh0dHAuU3NsQ2VydGlmaWNhdGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNzbEVycm9yIgorIHR5cGU9ImFuZHJvaWQubmV0Lmh0dHAuU3NsRXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlcnJvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjZXJ0aWZpY2F0ZSIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlDZXJ0aWZpY2F0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZEVycm9yIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXJyb3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDZXJ0aWZpY2F0ZSIKKyByZXR1cm49ImFuZHJvaWQubmV0Lmh0dHAuU3NsQ2VydGlmaWNhdGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJpbWFyeUVycm9yIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc0Vycm9yIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXJyb3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IlNTTF9FWFBJUkVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTU0xfSURNSVNNQVRDSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1NMX01BWF9FUlJPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1NMX05PVFlFVFZBTElEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTU0xfVU5UUlVTVEVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJhbmRyb2lkLm5ldC53aWZpIgorPgorPGNsYXNzIG5hbWU9IlNjYW5SZXN1bHQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJCU1NJRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1NJRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY2FwYWJpbGl0aWVzIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmcmVxdWVuY3kiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibGV2ZWwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlN1cHBsaWNhbnRTdGF0ZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRW51bSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzVmFsaWRTdGF0ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdGUiIHR5cGU9ImFuZHJvaWQubmV0LndpZmkuU3VwcGxpY2FudFN0YXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC53aWZpLlN1cHBsaWNhbnRTdGF0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlcyIKKyByZXR1cm49ImFuZHJvaWQubmV0LndpZmkuU3VwcGxpY2FudFN0YXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJXaWZpQ29uZmlndXJhdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IldpZmlDb25maWd1cmF0aW9uIgorIHR5cGU9ImFuZHJvaWQubmV0LndpZmkuV2lmaUNvbmZpZ3VyYXRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJCU1NJRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1NJRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYWxsb3dlZEF1dGhBbGdvcml0aG1zIgorIHR5cGU9ImphdmEudXRpbC5CaXRTZXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhbGxvd2VkR3JvdXBDaXBoZXJzIgorIHR5cGU9ImphdmEudXRpbC5CaXRTZXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhbGxvd2VkS2V5TWFuYWdlbWVudCIKKyB0eXBlPSJqYXZhLnV0aWwuQml0U2V0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYWxsb3dlZFBhaXJ3aXNlQ2lwaGVycyIKKyB0eXBlPSJqYXZhLnV0aWwuQml0U2V0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYWxsb3dlZFByb3RvY29scyIKKyB0eXBlPSJqYXZhLnV0aWwuQml0U2V0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaGlkZGVuU1NJRCIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibmV0d29ya0lkIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByZVNoYXJlZEtleSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJpb3JpdHkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RhdHVzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IndlcEtleXMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0id2VwVHhLZXlJbmRleCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iV2lmaUNvbmZpZ3VyYXRpb24uQXV0aEFsZ29yaXRobSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxmaWVsZCBuYW1lPSJMRUFQIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUEVOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTSEFSRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN0cmluZ3MiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InZhck5hbWUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YXV0aF9hbGcmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IldpZmlDb25maWd1cmF0aW9uLkdyb3VwQ2lwaGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGZpZWxkIG5hbWU9IkNDTVAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRLSVAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldFUDEwNCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0VQNDAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN0cmluZ3MiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InZhck5hbWUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Z3JvdXAmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IldpZmlDb25maWd1cmF0aW9uLktleU1nbXQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iSUVFRTgwMjFYIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOT05FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXUEFfRUFQIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXUEFfUFNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdHJpbmdzIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ2YXJOYW1lIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2tleV9tZ210JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJXaWZpQ29uZmlndXJhdGlvbi5QYWlyd2lzZUNpcGhlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxmaWVsZCBuYW1lPSJDQ01QIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOT05FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUS0lQIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdHJpbmdzIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ2YXJOYW1lIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3BhaXJ3aXNlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJXaWZpQ29uZmlndXJhdGlvbi5Qcm90b2NvbCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxmaWVsZCBuYW1lPSJSU04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldQQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RyaW5ncyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idmFyTmFtZSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtwcm90byZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iV2lmaUNvbmZpZ3VyYXRpb24uU3RhdHVzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGZpZWxkIG5hbWU9IkNVUlJFTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRJU0FCTEVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFTkFCTEVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdHJpbmdzIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iV2lmaUluZm8iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCU1NJRCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGV0YWlsZWRTdGF0ZU9mIgorIHJldHVybj0iYW5kcm9pZC5uZXQuTmV0d29ya0luZm8uRGV0YWlsZWRTdGF0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdXBwU3RhdGUiIHR5cGU9ImFuZHJvaWQubmV0LndpZmkuU3VwcGxpY2FudFN0YXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhpZGRlblNTSUQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElwQWRkcmVzcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaW5rU3BlZWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWFjQWRkcmVzcyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmV0d29ya0lkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJzc2kiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U1NJRCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3VwcGxpY2FudFN0YXRlIgorIHJldHVybj0iYW5kcm9pZC5uZXQud2lmaS5TdXBwbGljYW50U3RhdGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iTElOS19TUEVFRF9VTklUUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtNYnBzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJXaWZpTWFuYWdlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImFkZE5ldHdvcmsiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbmZpZyIgdHlwZT0iYW5kcm9pZC5uZXQud2lmaS5XaWZpQ29uZmlndXJhdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYWxjdWxhdGVTaWduYWxMZXZlbCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyc3NpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im51bUxldmVscyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbXBhcmVTaWduYWxMZXZlbCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyc3NpQSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyc3NpQiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZU11bHRpY2FzdExvY2siCisgcmV0dXJuPSJhbmRyb2lkLm5ldC53aWZpLldpZmlNYW5hZ2VyLk11bHRpY2FzdExvY2siCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVXaWZpTG9jayIKKyByZXR1cm49ImFuZHJvaWQubmV0LndpZmkuV2lmaU1hbmFnZXIuV2lmaUxvY2siCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2tUeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVXaWZpTG9jayIKKyByZXR1cm49ImFuZHJvaWQubmV0LndpZmkuV2lmaU1hbmFnZXIuV2lmaUxvY2siCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXNhYmxlTmV0d29yayIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ldElkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzY29ubmVjdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5hYmxlTmV0d29yayIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ldElkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRpc2FibGVPdGhlcnMiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29uZmlndXJlZE5ldHdvcmtzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5uZXQud2lmaS5XaWZpQ29uZmlndXJhdGlvbiZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29ubmVjdGlvbkluZm8iCisgcmV0dXJuPSJhbmRyb2lkLm5ldC53aWZpLldpZmlJbmZvIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERoY3BJbmZvIgorIHJldHVybj0iYW5kcm9pZC5uZXQuRGhjcEluZm8iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2NhblJlc3VsdHMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLm5ldC53aWZpLlNjYW5SZXN1bHQmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdpZmlTdGF0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1dpZmlFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwaW5nU3VwcGxpY2FudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhc3NvY2lhdGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlY29ubmVjdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlTmV0d29yayIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ldElkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2F2ZUNvbmZpZ3VyYXRpb24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFdpZmlFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5hYmxlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydFNjYW4iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZU5ldHdvcmsiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbmZpZyIgdHlwZT0iYW5kcm9pZC5uZXQud2lmaS5XaWZpQ29uZmlndXJhdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkFDVElPTl9QSUNLX1dJRklfTkVUV09SSyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLm5ldC53aWZpLlBJQ0tfV0lGSV9ORVRXT1JLJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVSUk9SX0FVVEhFTlRJQ0FUSU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9CU1NJRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtic3NpZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9ORVRXT1JLX0lORk8iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bmV0d29ya0luZm8mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfTkVXX1JTU0kiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bmV3UnNzaSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9ORVdfU1RBVEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bmV3U3RhdGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfUFJFVklPVVNfV0lGSV9TVEFURSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtwcmV2aW91c193aWZpX3N0YXRlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX1NVUFBMSUNBTlRfQ09OTkVDVEVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2Nvbm5lY3RlZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9TVVBQTElDQU5UX0VSUk9SIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3N1cHBsaWNhbnRFcnJvciZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9XSUZJX1NUQVRFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dpZmlfc3RhdGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTkVUV09SS19JRFNfQ0hBTkdFRF9BQ1RJT04iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5uZXQud2lmaS5ORVRXT1JLX0lEU19DSEFOR0VEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5FVFdPUktfU1RBVEVfQ0hBTkdFRF9BQ1RJT04iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5uZXQud2lmaS5TVEFURV9DSEFOR0UmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUlNTSV9DSEFOR0VEX0FDVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLm5ldC53aWZpLlJTU0lfQ0hBTkdFRCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ0FOX1JFU1VMVFNfQVZBSUxBQkxFX0FDVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLm5ldC53aWZpLlNDQU5fUkVTVUxUUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVVBQTElDQU5UX0NPTk5FQ1RJT05fQ0hBTkdFX0FDVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLm5ldC53aWZpLnN1cHBsaWNhbnQuQ09OTkVDVElPTl9DSEFOR0UmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1VQUExJQ0FOVF9TVEFURV9DSEFOR0VEX0FDVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLm5ldC53aWZpLnN1cHBsaWNhbnQuU1RBVEVfQ0hBTkdFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRklfTU9ERV9GVUxMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSUZJX01PREVfU0NBTl9PTkxZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSUZJX1NUQVRFX0NIQU5HRURfQUNUSU9OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQubmV0LndpZmkuV0lGSV9TVEFURV9DSEFOR0VEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRklfU1RBVEVfRElTQUJMRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRklfU1RBVEVfRElTQUJMSU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSUZJX1NUQVRFX0VOQUJMRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRklfU1RBVEVfRU5BQkxJTkciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRklfU1RBVEVfVU5LTk9XTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IldpZmlNYW5hZ2VyLk11bHRpY2FzdExvY2siCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJhY3F1aXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0hlbGQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbGVhc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJlZmVyZW5jZUNvdW50ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWZDb3VudGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IldpZmlNYW5hZ2VyLldpZmlMb2NrIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYWNxdWlyZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNIZWxkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWxlYXNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZWZlcmVuY2VDb3VudGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVmQ291bnRlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQub3BlbmdsIgorPgorPGNsYXNzIG5hbWU9IkVUQzEiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkVUQzEiCisgdHlwZT0iYW5kcm9pZC5vcGVuZ2wuRVRDMSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZWNvZGVCbG9jayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbiIgdHlwZT0iamF2YS5uaW8uQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWNvZGVJbWFnZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbiIgdHlwZT0iamF2YS5uaW8uQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBpeGVsU2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmNvZGVCbG9jayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbiIgdHlwZT0iamF2YS5uaW8uQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWxpZFBpeGVsTWFzayIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmNvZGVJbWFnZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbiIgdHlwZT0iamF2YS5uaW8uQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGl4ZWxTaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmlkZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXRIZWFkZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVhZGVyIiB0eXBlPSJqYXZhLm5pby5CdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVuY29kZWREYXRhU2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhlaWdodCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhlYWRlciIgdHlwZT0iamF2YS5uaW8uQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdpZHRoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVhZGVyIiB0eXBlPSJqYXZhLm5pby5CdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNWYWxpZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoZWFkZXIiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkRFQ09ERURfQkxPQ0tfU0laRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVOQ09ERURfQkxPQ0tfU0laRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVRDMV9SR0I4X09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MTk2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVUQ19QS01fSEVBREVSX1NJWkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRVRDMVV0aWwiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkVUQzFVdGlsIgorIHR5cGU9ImFuZHJvaWQub3BlbmdsLkVUQzFVdGlsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNvbXByZXNzVGV4dHVyZSIKKyByZXR1cm49ImFuZHJvaWQub3BlbmdsLkVUQzFVdGlsLkVUQzFUZXh0dXJlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0IiB0eXBlPSJqYXZhLm5pby5CdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwaXhlbFNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaWRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlVGV4dHVyZSIKKyByZXR1cm49ImFuZHJvaWQub3BlbmdsLkVUQzFVdGlsLkVUQzFUZXh0dXJlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0IiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0VUQzFTdXBwb3J0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZFRleHR1cmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZXZlbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3JkZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFsbGJhY2tGb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFsbGJhY2tUeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0IiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2FkVGV4dHVyZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxldmVsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvcmRlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmYWxsYmFja0Zvcm1hdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmYWxsYmFja1R5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dHVyZSIgdHlwZT0iYW5kcm9pZC5vcGVuZ2wuRVRDMVV0aWwuRVRDMVRleHR1cmUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUZXh0dXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0dXJlIiB0eXBlPSJhbmRyb2lkLm9wZW5nbC5FVEMxVXRpbC5FVEMxVGV4dHVyZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0cHV0IiB0eXBlPSJqYXZhLmlvLk91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRVRDMVV0aWwuRVRDMVRleHR1cmUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRVRDMVV0aWwuRVRDMVRleHR1cmUiCisgdHlwZT0iYW5kcm9pZC5vcGVuZ2wuRVRDMVV0aWwuRVRDMVRleHR1cmUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldERhdGEiCisgcmV0dXJuPSJqYXZhLm5pby5CeXRlQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhlaWdodCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRXaWR0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJHTERlYnVnSGVscGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJHTERlYnVnSGVscGVyIgorIHR5cGU9ImFuZHJvaWQub3BlbmdsLkdMRGVidWdIZWxwZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0id3JhcCIKKyByZXR1cm49ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLm9wZW5nbGVzLkdMIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImdsIiB0eXBlPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5vcGVuZ2xlcy5HTCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29uZmlnRmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9nIiB0eXBlPSJqYXZhLmlvLldyaXRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cmFwIgorIHJldHVybj0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlZ2wiIHR5cGU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0wiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbmZpZ0ZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvZyIgdHlwZT0iamF2YS5pby5Xcml0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDT05GSUdfQ0hFQ0tfR0xfRVJST1IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTkZJR19DSEVDS19USFJFQUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTkZJR19MT0dfQVJHVU1FTlRfTkFNRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVSUk9SX1dST05HX1RIUkVBRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI4NjcyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJHTEVTMTAiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkdMRVMxMCIKKyB0eXBlPSJhbmRyb2lkLm9wZW5nbC5HTEVTMTAiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2xBY3RpdmVUZXh0dXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHR1cmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEFscGhhRnVuYyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmdW5jIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlZiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xBbHBoYUZ1bmN4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZ1bmMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xCaW5kVGV4dHVyZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dHVyZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQmxlbmRGdW5jIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNmYWN0b3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGZhY3RvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ2xlYXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFzayIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ2xlYXJDb2xvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJncmVlbiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJsdWUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbHBoYSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xDbGVhckNvbG9yeCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JlZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbHBoYSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ2xlYXJEZXB0aGYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVwdGgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ2xlYXJEZXB0aHgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVwdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbENsZWFyU3RlbmNpbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xDbGllbnRBY3RpdmVUZXh0dXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHR1cmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbENvbG9yNGYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVkIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JlZW4iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJibHVlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxwaGEiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ29sb3I0eCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JlZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbHBoYSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ29sb3JNYXNrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JlZW4iIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFscGhhIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ29sb3JQb2ludGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaWRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvaW50ZXIiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbENvbXByZXNzZWRUZXhJbWFnZTJEIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZXZlbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlcm5hbGZvcm1hdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYm9yZGVyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImltYWdlU2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJqYXZhLm5pby5CdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGV2ZWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieG9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5b2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW1hZ2VTaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbENvcHlUZXhJbWFnZTJEIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZXZlbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlcm5hbGZvcm1hdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvcmRlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ29weVRleFN1YkltYWdlMkQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxldmVsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InhvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieW9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xDdWxsRmFjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEZWxldGVUZXh0dXJlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHR1cmVzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEZWxldGVUZXh0dXJlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHR1cmVzIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEZXB0aEZ1bmMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZnVuYyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRGVwdGhNYXNrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWciIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEZXB0aFJhbmdlZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ6TmVhciIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InpGYXIiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRGVwdGhSYW5nZXgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iek5lYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iekZhciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRGlzYWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXAiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbERpc2FibGVDbGllbnRTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRHJhd0FycmF5cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpcnN0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEcmF3RWxlbWVudHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGljZXMiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEVuYWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXAiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEVuYWJsZUNsaWVudFN0YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xGaW5pc2giCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEZsdXNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xGb2dmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEZvZ2Z2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xGb2dmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkZsb2F0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRm9neCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRm9neHYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xGb2d4diIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEZyb250RmFjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xGcnVzdHVtZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZWZ0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmlnaHQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3R0b20iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b3AiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6TmVhciIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InpGYXIiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRnJ1c3R1bXgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVmdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3R0b20iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9wIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InpOZWFyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InpGYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdlblRleHR1cmVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dHVyZXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdlblRleHR1cmVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dHVyZXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldEVycm9yIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldEludGVnZXJ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0SW50ZWdlcnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsSGludCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTGlnaHRNb2RlbGYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTGlnaHRNb2RlbGZ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xMaWdodE1vZGVsZnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5GbG9hdEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbExpZ2h0TW9kZWx4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xMaWdodE1vZGVseHYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xMaWdodE1vZGVseHYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xMaWdodGYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTGlnaHRmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTGlnaHRmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkZsb2F0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTGlnaHR4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xMaWdodHh2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTGlnaHR4diIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbExpbmVXaWR0aCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xMaW5lV2lkdGh4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xMb2FkSWRlbnRpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbExvYWRNYXRyaXhmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im0iIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTG9hZE1hdHJpeGYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibSIgdHlwZT0iamF2YS5uaW8uRmxvYXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xMb2FkTWF0cml4eCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xMb2FkTWF0cml4eCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xMb2dpY09wIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9wY29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTWF0ZXJpYWxmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTWF0ZXJpYWxmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWNlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xNYXRlcmlhbGZ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5GbG9hdEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbE1hdGVyaWFseCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWNlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xNYXRlcmlhbHh2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xNYXRlcmlhbHh2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xNYXRyaXhNb2RlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbE11bHRNYXRyaXhmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im0iIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTXVsdE1hdHJpeGYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibSIgdHlwZT0iamF2YS5uaW8uRmxvYXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xNdWx0TWF0cml4eCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xNdWx0TWF0cml4eCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xNdWx0aVRleENvb3JkNGYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InEiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTXVsdGlUZXhDb29yZDR4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xOb3JtYWwzZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJueCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im55IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibnoiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTm9ybWFsM3giCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibnkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibnoiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbE5vcm1hbFBvaW50ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaWRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvaW50ZXIiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbE9ydGhvZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZWZ0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmlnaHQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3R0b20iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b3AiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6TmVhciIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InpGYXIiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsT3J0aG94IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYm90dG9tIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvcCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6TmVhciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6RmFyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xQaXhlbFN0b3JlaSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsUG9pbnRTaXplIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsUG9pbnRTaXpleCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xQb2x5Z29uT2Zmc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY3RvciIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVuaXRzIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFBvbHlnb25PZmZzZXR4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY3RvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsUG9wTWF0cml4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xQdXNoTWF0cml4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xSZWFkUGl4ZWxzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9ybWF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGl4ZWxzIiB0eXBlPSJqYXZhLm5pby5CdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xSb3RhdGVmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFuZ2xlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFJvdGF0ZXgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYW5nbGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InoiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFNhbXBsZUNvdmVyYWdlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW52ZXJ0IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsU2FtcGxlQ292ZXJhZ2V4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImludmVydCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFNjYWxlZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InoiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsU2NhbGV4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xTY2lzc29yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFNoYWRlTW9kZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsU3RlbmNpbEZ1bmMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZnVuYyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFzayIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsU3RlbmNpbE1hc2siCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFzayIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsU3RlbmNpbE9wIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhaWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iemZhaWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ienBhc3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleENvb3JkUG9pbnRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmlkZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb2ludGVyIiB0eXBlPSJqYXZhLm5pby5CdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhFbnZmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhFbnZmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleEVudmZ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkZsb2F0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4RW52eCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleEVudnh2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleEVudnh2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleEltYWdlMkQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxldmVsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVybmFsZm9ybWF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3JkZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9ybWF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGl4ZWxzIiB0eXBlPSJqYXZhLm5pby5CdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhQYXJhbWV0ZXJmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhQYXJhbWV0ZXJ4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4U3ViSW1hZ2UyRCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGV2ZWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieG9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5b2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwaXhlbHMiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRyYW5zbGF0ZWYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRyYW5zbGF0ZXgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InoiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFZlcnRleFBvaW50ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9pbnRlciIgdHlwZT0iamF2YS5uaW8uQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVmlld3BvcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iR0xfQUREIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjYwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0FMSUFTRURfTElORV9XSURUSF9SQU5HRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzOTAyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0FMSUFTRURfUE9JTlRfU0laRV9SQU5HRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzOTAxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0FMUEhBIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjQwNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9BTFBIQV9CSVRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQxMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9BTFBIQV9URVNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzAwOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9BTFdBWVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQU1CSUVOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQ2MDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQU1CSUVOVF9BTkRfRElGRlVTRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjU2MzQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQU5EIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTM3NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9BTkRfSU5WRVJURUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MzgwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0FORF9SRVZFUlNFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTM3OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9CQUNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAyOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9CTEVORCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMwNDIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQkxVRV9CSVRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9CWVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTEyMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DQ1ciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMzA1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NMQU1QX1RPX0VER0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzA3MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DTEVBUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUzNzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ09MT1JfQVJSQVkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjg4NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DT0xPUl9CVUZGRVJfQklUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYzODQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ09MT1JfTE9HSUNfT1AiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMDU4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTE9SX01BVEVSSUFMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjkwMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0NDY3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTlNUQU5UX0FUVEVOVUFUSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDYxNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DT1BZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTM3OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DT1BZX0lOVkVSVEVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTM4OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DVUxMX0ZBQ0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyODg0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NXIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjMwNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ERUNBTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijg0NDkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfREVDUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc2ODMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfREVQVEhfQklUUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfREVQVEhfQlVGRkVSX0JJVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI1NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ERVBUSF9URVNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjkyOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ESUZGVVNFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDYwOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ESVRIRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMDI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0RPTlRfQ0FSRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQzNTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRFNUX0FMUEhBIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzcyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0RTVF9DT0xPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc3NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9FTUlTU0lPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjU2MzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRVFVQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRVFVSVYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1Mzg1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0VYUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwNDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRVhQMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwNDkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRVhURU5TSU9OUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc5MzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRkFMU0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZBU1RFU1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MzUzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZJWEVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTEzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9GTEFUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzQyNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9GTE9BVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxMjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRk9HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjkxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9GT0dfQ09MT1IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTE4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZPR19ERU5TSVRZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjkxNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9GT0dfRU5EIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjkxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9GT0dfSElOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMxNTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRk9HX01PREUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTE3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZPR19TVEFSVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5MTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlJPTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZST05UX0FORF9CQUNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9HRVFVQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfR1JFQVRFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9HUkVFTl9CSVRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX0ZPUk1BVF9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTczOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX1RZUEVfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzU3MzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfSU5DUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc2ODIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfSU5WQUxJRF9FTlVNIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTI4MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9JTlZBTElEX09QRVJBVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyODIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfSU5WQUxJRF9WQUxVRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyODEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfSU5WRVJUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTM4NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9LRUVQIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzY4MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MRVFVQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTEVTUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSUdIVDAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjM4NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSUdIVDEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjM4NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSUdIVDIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjM4NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSUdIVDMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjM4NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSUdIVDQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjM4OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSUdIVDUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjM4OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSUdIVDYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjM5MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSUdIVDciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjM5MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSUdIVElORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI4OTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTElHSFRfTU9ERUxfQU1CSUVOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI4OTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTElHSFRfTU9ERUxfVFdPX1NJREUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyODk4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0xJTkVBUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijk3MjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTElORUFSX0FUVEVOVUFUSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDYxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijk5ODciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTElORUFSX01JUE1BUF9ORUFSRVNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOTk4NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSU5FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTElORV9MT09QIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSU5FX1NNT09USCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI4NDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTElORV9TTU9PVEhfSElOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMxNTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTElORV9TVFJJUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTFVNSU5BTkNFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjQwOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MVU1JTkFOQ0VfQUxQSEEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NDEwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01BWF9FTEVNRU5UU19JTkRJQ0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzMwMDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUFYX0VMRU1FTlRTX1ZFUlRJQ0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzMwMDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUFYX0xJR0hUUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzNzciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUFYX01PREVMVklFV19TVEFDS19ERVBUSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzODIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUFYX1BST0pFQ1RJT05fU1RBQ0tfREVQVEgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzg0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01BWF9URVhUVVJFX1NJWkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzc5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01BWF9URVhUVVJFX1NUQUNLX0RFUFRIIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzM4NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NQVhfVEVYVFVSRV9VTklUUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDE4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01BWF9WSUVXUE9SVF9ESU1TIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzM4NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NT0RFTFZJRVciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1ODg4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01PRFVMQVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODQ0OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NVUxUSVNBTVBMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyOTI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX05BTkQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MzkwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX05FQVJFU1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI5NzI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX05FQVJFU1RfTUlQTUFQX0xJTkVBUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijk5ODYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTkVBUkVTVF9NSVBNQVBfTkVBUkVTVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijk5ODQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTkVWRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTklDRVNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDM1NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9OT09QIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTM4MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9OT1IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1Mzg0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX05PUk1BTElaRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5NzciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTk9STUFMX0FSUkFZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI4ODUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTk9URVFVQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTk9fRVJST1IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX05VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0NDY2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX09ORSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfT05FX01JTlVTX0RTVF9BTFBIQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc3MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9PTkVfTUlOVVNfRFNUX0NPTE9SIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzc1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX09ORV9NSU5VU19TUkNfQUxQSEEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3NzEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfT05FX01JTlVTX1NSQ19DT0xPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc2OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9PUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUzODMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfT1JfSU5WRVJURUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1Mzg5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX09SX1JFVkVSU0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1Mzg3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX09VVF9PRl9NRU1PUlkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjg1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BBQ0tfQUxJR05NRU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzMzMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QQUxFVFRFNF9SNV9HNl9CNV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTczMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QQUxFVFRFNF9SR0I1X0ExX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NzMyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BBTEVUVEU0X1JHQjhfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzU3MjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUEFMRVRURTRfUkdCQTRfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzU3MzEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUEFMRVRURTRfUkdCQThfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzU3MjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUEFMRVRURThfUjVfRzZfQjVfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzU3MzUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUEFMRVRURThfUkdCNV9BMV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTczNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QQUxFVFRFOF9SR0I4X09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NzMzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BBTEVUVEU4X1JHQkE0X09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NzM2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BBTEVUVEU4X1JHQkE4X09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NzM0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BFUlNQRUNUSVZFX0NPUlJFQ1RJT05fSElOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMxNTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUE9JTlRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QT0lOVF9GQURFX1RIUkVTSE9MRF9TSVpFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzMwNjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUE9JTlRfU0laRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI4MzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUE9JTlRfU01PT1RIIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjgzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QT0lOVF9TTU9PVEhfSElOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMxNTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUE9MWUdPTl9PRkZTRVRfRklMTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyODIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BPTFlHT05fU01PT1RIX0hJTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMTU1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BPU0lUSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDYxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QUk9KRUNUSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTg4OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9RVUFEUkFUSUNfQVRURU5VQVRJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0NjE3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JFRF9CSVRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQxMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SRU5ERVJFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc5MzciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUkVQRUFUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTA0OTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUkVQTEFDRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc2ODEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUkVTQ0FMRV9OT1JNQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjgyNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SR0IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NDA3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JHQkEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NDA4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NBTVBMRV9BTFBIQV9UT19DT1ZFUkFHRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyOTI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NBTVBMRV9BTFBIQV9UT19PTkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjkyNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TQU1QTEVfQ09WRVJBR0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjkyOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TQ0lTU09SX1RFU1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMDg5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NFVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUzOTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU0hJTklORVNTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTYzMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TSE9SVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxMjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU01PT1RIIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzQyNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TTU9PVEhfTElORV9XSURUSF9SQU5HRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI4NTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU01PT1RIX1BPSU5UX1NJWkVfUkFOR0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyODM0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NQRUNVTEFSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDYxMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TUE9UX0NVVE9GRiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQ2MTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1BPVF9ESVJFQ1RJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0NjEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NQT1RfRVhQT05FTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0NjEzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NSQ19BTFBIQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc3MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TUkNfQUxQSEFfU0FUVVJBVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3NzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1JDX0NPTE9SIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NUQUNLX09WRVJGTE9XIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTI4MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TVEFDS19VTkRFUkZMT1ciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjg0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NURU5DSUxfQklUUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1RFTkNJTF9CVUZGRVJfQklUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAyNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TVEVOQ0lMX1RFU1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTYwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NVQlBJWEVMX0JJVFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDA4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1ODkwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzM5ODQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzk4NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMTAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzk5NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMTEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzk5NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMTIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzk5NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMTMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzk5NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMTQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzk5OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMTUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzk5OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMTYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDAwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMTciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDAwMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMTgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDAwMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMTkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDAwMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzOTg2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUyMCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDA0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUyMSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDA1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUyMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDA2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUyMyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDA3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUyNCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDA4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUyNSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDA5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUyNiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDEwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUyNyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDExIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUyOCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUyOSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDEzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzM5ODciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTMwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwMTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTMxIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwMTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzk4OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFNSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzOTg5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkU2IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzM5OTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzk5MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFOCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzOTkyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkU5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzM5OTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV8yRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV9DT09SRF9BUlJBWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyODg4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfRU5WIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODk2MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFX0VOVl9DT0xPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijg3MDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV9FTlZfTU9ERSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijg3MDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV9NQUdfRklMVEVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAyNDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV9NSU5fRklMVEVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAyNDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV9XUkFQX1MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDI0MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFX1dSQVBfVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMjQzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RSSUFOR0xFUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVFJJQU5HTEVfRkFOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9UUklBTkdMRV9TVFJJUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVFJVRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVU5QQUNLX0FMSUdOTUVOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzMTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVU5TSUdORURfQllURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxMjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVU5TSUdORURfU0hPUlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MTIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjgxOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9VTlNJR05FRF9TSE9SVF81XzVfNV8xIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI4MjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVU5TSUdORURfU0hPUlRfNV82XzUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzYzNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9WRU5ET1IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3OTM2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1ZFUlNJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3OTM4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1ZFUlRFWF9BUlJBWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyODg0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1hPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUzODIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfWkVSTyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkdMRVMxMEV4dCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iR0xFUzEwRXh0IgorIHR5cGU9ImFuZHJvaWQub3BlbmdsLkdMRVMxMEV4dCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnbFF1ZXJ5TWF0cml4eE9FUyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1hbnRpc3NhIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFudGlzc2FPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwb25lbnQiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHBvbmVudE9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsUXVlcnlNYXRyaXh4T0VTIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFudGlzc2EiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwb25lbnQiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJHTEVTMTEiCisgZXh0ZW5kcz0iYW5kcm9pZC5vcGVuZ2wuR0xFUzEwIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iR0xFUzExIgorIHR5cGU9ImFuZHJvaWQub3BlbmdsLkdMRVMxMSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnbEJpbmRCdWZmZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQnVmZmVyRGF0YSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJqYXZhLm5pby5CdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVzYWdlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xCdWZmZXJTdWJEYXRhIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJqYXZhLm5pby5CdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xDbGlwUGxhbmVmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBsYW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVxdWF0aW9uIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbENsaXBQbGFuZWYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGxhbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXF1YXRpb24iIHR5cGU9ImphdmEubmlvLkZsb2F0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ2xpcFBsYW5leCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbGFuZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlcXVhdGlvbiIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ2xpcFBsYW5leCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbGFuZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlcXVhdGlvbiIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ29sb3I0dWIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVkIiB0eXBlPSJieXRlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJncmVlbiIgdHlwZT0iYnl0ZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmx1ZSIgdHlwZT0iYnl0ZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxwaGEiIHR5cGU9ImJ5dGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xDb2xvclBvaW50ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmlkZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbERlbGV0ZUJ1ZmZlcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXJzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEZWxldGVCdWZmZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVycyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRHJhd0VsZW1lbnRzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdlbkJ1ZmZlcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXJzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZW5CdWZmZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVycyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0Qm9vbGVhbnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJib29sZWFuW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0Qm9vbGVhbnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRDbGlwUGxhbmVmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVxbiIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRDbGlwUGxhbmVmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVxbiIgdHlwZT0iamF2YS5uaW8uRmxvYXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRDbGlwUGxhbmV4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVxbiIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0Q2xpcFBsYW5leCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlcW4iIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldEZpeGVkdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldEZpeGVkdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldEZsb2F0diIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0RmxvYXR2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uRmxvYXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRMaWdodGZ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRMaWdodGZ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uRmxvYXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRMaWdodHh2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0TGlnaHR4diIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldE1hdGVyaWFsZnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFjZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0TWF0ZXJpYWxmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWNlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uRmxvYXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRNYXRlcmlhbHh2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRNYXRlcmlhbHh2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRUZXhFbnZmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbnYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFRleEVudmZ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVudiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkZsb2F0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0VGV4RW52aXYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW52IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0VGV4RW52aXYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW52IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0VGV4RW52eHYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW52IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0VGV4RW52eHYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW52IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0VGV4UGFyYW1ldGVyZnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRUZXhQYXJhbWV0ZXJmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5GbG9hdEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFRleFBhcmFtZXRlcml2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFRleFBhcmFtZXRlcml2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFRleFBhcmFtZXRlcnh2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFRleFBhcmFtZXRlcnh2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbElzQnVmZmVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsSXNFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhcCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsSXNUZXh0dXJlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHR1cmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbE5vcm1hbFBvaW50ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xQb2ludFBhcmFtZXRlcmYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsUG9pbnRQYXJhbWV0ZXJmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsUG9pbnRQYXJhbWV0ZXJmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkZsb2F0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsUG9pbnRQYXJhbWV0ZXJ4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xQb2ludFBhcmFtZXRlcnh2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsUG9pbnRQYXJhbWV0ZXJ4diIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFBvaW50U2l6ZVBvaW50ZXJPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaWRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvaW50ZXIiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleENvb3JkUG9pbnRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaWRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4RW52aSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleEVudml2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleEVudml2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleFBhcmFtZXRlcmZ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4UGFyYW1ldGVyZnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uRmxvYXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhQYXJhbWV0ZXJpIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4UGFyYW1ldGVyaXYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4UGFyYW1ldGVyaXYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4UGFyYW1ldGVyeHYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4UGFyYW1ldGVyeHYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVmVydGV4UG9pbnRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaWRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iR0xfQUNUSVZFX1RFWFRVUkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDAxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9BRERfU0lHTkVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQxNjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQUxQSEFfU0NBTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0FMUEhBX1RFU1RfRlVOQyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMwMDkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQUxQSEFfVEVTVF9SRUYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMDEwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0FSUkFZX0JVRkZFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0OTYyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0FSUkFZX0JVRkZFUl9CSU5ESU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ5NjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQkxFTkRfRFNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzA0MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9CTEVORF9TUkMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMDQxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0JVRkZFUl9BQ0NFU1MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTAwMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9CVUZGRVJfU0laRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0NjYwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0JVRkZFUl9VU0FHRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0NjYxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NMSUVOVF9BQ1RJVkVfVEVYVFVSRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDE3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NMSVBfUExBTkUwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIyODgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ0xJUF9QTEFORTEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjI4OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DTElQX1BMQU5FMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMjkwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NMSVBfUExBTkUzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIyOTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ0xJUF9QTEFORTQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjI5MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DTElQX1BMQU5FNSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMjkzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTE9SX0FSUkFZX0JVRkZFUl9CSU5ESU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ5NjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ09MT1JfQVJSQVlfUE9JTlRFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyOTEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTE9SX0FSUkFZX1NJWkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjg5NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DT0xPUl9BUlJBWV9TVFJJREUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjg5OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DT0xPUl9BUlJBWV9UWVBFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI4OTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ09MT1JfQ0xFQVJfVkFMVUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMTA2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTE9SX1dSSVRFTUFTSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMxMDciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ09NQklORSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MTYwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTUJJTkVfQUxQSEEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDE2MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DT01CSU5FX1JHQiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MTYxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTlNUQU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQxNjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ09PUkRfUkVQTEFDRV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDkxNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DVUxMX0ZBQ0VfTU9ERSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI4ODUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ1VSUkVOVF9DT0xPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI4MTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ1VSUkVOVF9OT1JNQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyODE4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NVUlJFTlRfVEVYVFVSRV9DT09SRFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyODE5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0RFUFRIX0NMRUFSX1ZBTFVFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjkzMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ERVBUSF9GVU5DIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjkzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ERVBUSF9SQU5HRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5MjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfREVQVEhfV1JJVEVNQVNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjkzMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ET1QzX1JHQiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0NDc4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0RPVDNfUkdCQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0NDc5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0RZTkFNSUNfRFJBVyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1MDQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ5NjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0OTY1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZST05UX0ZBQ0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyODg2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0dFTkVSQVRFX01JUE1BUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzMTY5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0dFTkVSQVRFX01JUE1BUF9ISU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzMxNzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfSU5URVJQT0xBVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDE2NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSU5FX1dJRFRIIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjg0OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MT0dJQ19PUF9NT0RFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzA1NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NQVRSSVhfTU9ERSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5NzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUFYX0NMSVBfUExBTkVTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzM3OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NT0RFTFZJRVdfTUFUUklYIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjk4MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NT0RFTFZJRVdfTUFUUklYX0ZMT0FUX0FTX0lOVF9CSVRTX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1MjEzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01PREVMVklFV19TVEFDS19ERVBUSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5NzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTk9STUFMX0FSUkFZX0JVRkZFUl9CSU5ESU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ5NjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTk9STUFMX0FSUkFZX1BPSU5URVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjkxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9OT1JNQUxfQVJSQVlfU1RSSURFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI4OTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTk9STUFMX0FSUkFZX1RZUEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjg5NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9PUEVSQU5EMF9BTFBIQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MjAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX09QRVJBTkQwX1JHQiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MTkyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX09QRVJBTkQxX0FMUEhBIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQyMDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfT1BFUkFORDFfUkdCIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQxOTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfT1BFUkFORDJfQUxQSEEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDIwMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9PUEVSQU5EMl9SR0IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDE5NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QT0lOVF9ESVNUQU5DRV9BVFRFTlVBVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzMDY1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BPSU5UX0ZBREVfVEhSRVNIT0xEX1NJWkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzA2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QT0lOVF9TSVpFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjgzMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QT0lOVF9TSVpFX0FSUkFZX0JVRkZFUl9CSU5ESU5HX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NzQzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BPSU5UX1NJWkVfQVJSQVlfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzU3NDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUE9JTlRfU0laRV9BUlJBWV9QT0lOVEVSX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1MjEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BPSU5UX1NJWkVfQVJSQVlfU1RSSURFX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1MjExIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BPSU5UX1NJWkVfQVJSQVlfVFlQRV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTIxMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QT0lOVF9TSVpFX01BWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzMDYzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BPSU5UX1NJWkVfTUlOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzMwNjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUE9JTlRfU1BSSVRFX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0OTEzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BPTFlHT05fT0ZGU0VUX0ZBQ1RPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyODI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BPTFlHT05fT0ZGU0VUX1VOSVRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTA3NTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUFJFVklPVVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDE2OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QUklNQVJZX0NPTE9SIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQxNjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUFJPSkVDVElPTl9NQVRSSVgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTgzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BST0pFQ1RJT05fTUFUUklYX0ZMT0FUX0FTX0lOVF9CSVRTX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1MjE0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BST0pFQ1RJT05fU1RBQ0tfREVQVEgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTgwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JHQl9TQ0FMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MTYzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NBTVBMRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjkzNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TQU1QTEVfQlVGRkVSUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyOTM2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NBTVBMRV9DT1ZFUkFHRV9JTlZFUlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjkzOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TQU1QTEVfQ09WRVJBR0VfVkFMVUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjkzOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TQ0lTU09SX0JPWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMwODgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU0hBREVfTU9ERUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NSQzBfQUxQSEEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDE4NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TUkMwX1JHQiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MTc2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NSQzFfQUxQSEEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDE4NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TUkMxX1JHQiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MTc3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NSQzJfQUxQSEEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDE4NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TUkMyX1JHQiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MTc4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NUQVRJQ19EUkFXIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzUwNDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1RFTkNJTF9DTEVBUl9WQUxVRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5NjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1RFTkNJTF9GQUlMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjk2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TVEVOQ0lMX0ZVTkMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTYyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NURU5DSUxfUEFTU19ERVBUSF9GQUlMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjk2NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TVEVOQ0lMX1BBU1NfREVQVEhfUEFTUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5NjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1RFTkNJTF9SRUYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTY3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NURU5DSUxfVkFMVUVfTUFTSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5NjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1RFTkNJTF9XUklURU1BU0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NVQlRSQUNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwMjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV9CSU5ESU5HXzJEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI4NzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV9DT09SRF9BUlJBWV9CVUZGRVJfQklORElORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0OTcwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfQ09PUkRfQVJSQVlfUE9JTlRFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyOTE0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfQ09PUkRfQVJSQVlfU0laRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyOTA0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfQ09PUkRfQVJSQVlfU1RSSURFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI5MDYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV9DT09SRF9BUlJBWV9UWVBFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI5MDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV9NQVRSSVgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTg0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfTUFUUklYX0ZMT0FUX0FTX0lOVF9CSVRTX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1MjE1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfU1RBQ0tfREVQVEgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTgxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1ZFUlRFWF9BUlJBWV9CVUZGRVJfQklORElORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0OTY2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1ZFUlRFWF9BUlJBWV9QT0lOVEVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI5MTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVkVSVEVYX0FSUkFZX1NJWkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjg5MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9WRVJURVhfQVJSQVlfU1RSSURFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI4OTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVkVSVEVYX0FSUkFZX1RZUEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjg5MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9WSUVXUE9SVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5NzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfV1JJVEVfT05MWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1MDAxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJHTEVTMTFFeHQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkdMRVMxMUV4dCIKKyB0eXBlPSJhbmRyb2lkLm9wZW5nbC5HTEVTMTFFeHQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2xBbHBoYUZ1bmN4T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZ1bmMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xCaW5kRnJhbWVidWZmZXJPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZyYW1lYnVmZmVyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xCaW5kUmVuZGVyYnVmZmVyT0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZW5kZXJidWZmZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEJsZW5kRXF1YXRpb25PRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQmxlbmRFcXVhdGlvblNlcGFyYXRlT0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGVSR0IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZUFscGhhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xCbGVuZEZ1bmNTZXBhcmF0ZU9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmNSR0IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHN0UkdCIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNyY0FscGhhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRzdEFscGhhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzT0VTIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xDbGVhckNvbG9yeE9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JlZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbHBoYSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ2xlYXJEZXB0aGZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVwdGgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ2xlYXJEZXB0aHhPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVwdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbENsaXBQbGFuZWZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGxhbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXF1YXRpb24iIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ2xpcFBsYW5lZk9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbGFuZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlcXVhdGlvbiIgdHlwZT0iamF2YS5uaW8uRmxvYXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xDbGlwUGxhbmV4T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBsYW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVxdWF0aW9uIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xDbGlwUGxhbmV4T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBsYW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVxdWF0aW9uIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xDb2xvcjR4T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJncmVlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJibHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFscGhhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xDdXJyZW50UGFsZXR0ZU1hdHJpeE9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXRyaXhwYWxldHRlaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbERlbGV0ZUZyYW1lYnVmZmVyc09FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZyYW1lYnVmZmVycyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRGVsZXRlRnJhbWVidWZmZXJzT0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZnJhbWVidWZmZXJzIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEZWxldGVSZW5kZXJidWZmZXJzT0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVuZGVyYnVmZmVycyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRGVsZXRlUmVuZGVyYnVmZmVyc09FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlbmRlcmJ1ZmZlcnMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbERlcHRoUmFuZ2VmT0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InpOZWFyIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iekZhciIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEZXB0aFJhbmdleE9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ6TmVhciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6RmFyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEcmF3VGV4Zk9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InoiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEcmF3VGV4ZnZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29vcmRzIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbERyYXdUZXhmdk9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29yZHMiIHR5cGU9ImphdmEubmlvLkZsb2F0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRHJhd1RleGlPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InoiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEcmF3VGV4aXZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29vcmRzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEcmF3VGV4aXZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29vcmRzIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEcmF3VGV4c09FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJzaG9ydCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0ic2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InoiIHR5cGU9InNob3J0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0ic2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0ic2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEcmF3VGV4c3ZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29vcmRzIiB0eXBlPSJzaG9ydFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbERyYXdUZXhzdk9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29yZHMiIHR5cGU9ImphdmEubmlvLlNob3J0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRHJhd1RleHhPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InoiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEcmF3VGV4eHZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29vcmRzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEcmF3VGV4eHZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29vcmRzIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xFR0xJbWFnZVRhcmdldFJlbmRlcmJ1ZmZlclN0b3JhZ2VPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImltYWdlIiB0eXBlPSJqYXZhLm5pby5CdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW1hZ2UiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEZvZ3hPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEZvZ3h2T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRm9neHZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlck9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0YWNobWVudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZW5kZXJidWZmZXJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVuZGVyYnVmZmVyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRE9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0YWNobWVudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dHVyZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZXZlbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRnJ1c3R1bWZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVmdCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJpZ2h0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYm90dG9tIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9wIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iek5lYXIiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6RmFyIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEZydXN0dW14T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYm90dG9tIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvcCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6TmVhciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6RmFyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZW5GcmFtZWJ1ZmZlcnNPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmcmFtZWJ1ZmZlcnMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdlbkZyYW1lYnVmZmVyc09FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZyYW1lYnVmZmVycyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2VuUmVuZGVyYnVmZmVyc09FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlbmRlcmJ1ZmZlcnMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdlblJlbmRlcmJ1ZmZlcnNPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZW5kZXJidWZmZXJzIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZW5lcmF0ZU1pcG1hcE9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldENsaXBQbGFuZWZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXFuIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldENsaXBQbGFuZWZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXFuIiB0eXBlPSJqYXZhLm5pby5GbG9hdEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldENsaXBQbGFuZXhPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXFuIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRDbGlwUGxhbmV4T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVxbiIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0Rml4ZWR2T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0Rml4ZWR2T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dGFjaG1lbnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdk9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0YWNobWVudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldExpZ2h0eHZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRMaWdodHh2T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0TWF0ZXJpYWx4dk9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWNlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0TWF0ZXJpYWx4dk9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWNlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0VGV4RW52eHZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW52IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0VGV4RW52eHZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW52IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0VGV4R2VuZnZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29vcmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFRleEdlbmZ2T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb3JkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uRmxvYXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRUZXhHZW5pdk9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29yZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFRleEdlbml2T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb3JkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0VGV4R2VueHZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29vcmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRUZXhHZW54dk9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29yZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFRleFBhcmFtZXRlcnh2T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFRleFBhcmFtZXRlcnh2T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbElzRnJhbWVidWZmZXJPRVMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZnJhbWVidWZmZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbElzUmVuZGVyYnVmZmVyT0VTIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlbmRlcmJ1ZmZlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTGlnaHRNb2RlbHhPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbExpZ2h0TW9kZWx4dk9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbExpZ2h0TW9kZWx4dk9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbExpZ2h0eE9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTGlnaHR4dk9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbExpZ2h0eHZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xMaW5lV2lkdGh4T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xMb2FkTWF0cml4eE9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xMb2FkTWF0cml4eE9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xMb2FkUGFsZXR0ZUZyb21Nb2RlbFZpZXdNYXRyaXhPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbE1hdGVyaWFseE9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWNlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xNYXRlcmlhbHh2T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xNYXRlcmlhbHh2T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xNYXRyaXhJbmRleFBvaW50ZXJPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9pbnRlciIgdHlwZT0iamF2YS5uaW8uQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTXVsdE1hdHJpeHhPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibSIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTXVsdE1hdHJpeHhPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibSIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTXVsdGlUZXhDb29yZDR4T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xOb3JtYWwzeE9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJueCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJueSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJueiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsT3J0aG9mT0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaWdodCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvcCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InpOZWFyIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iekZhciIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xPcnRob3hPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVmdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3R0b20iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9wIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InpOZWFyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InpGYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFBvaW50UGFyYW1ldGVyeE9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsUG9pbnRQYXJhbWV0ZXJ4dk9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFBvaW50UGFyYW1ldGVyeHZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xQb2ludFNpemV4T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFBvbHlnb25PZmZzZXR4T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY3RvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsUmVuZGVyYnVmZmVyU3RvcmFnZU9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZXJuYWxmb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xSb3RhdGV4T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFuZ2xlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xTYW1wbGVDb3ZlcmFnZXhPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW52ZXJ0IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsU2NhbGV4T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhFbnZ4T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4RW52eHZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4RW52eHZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4R2VuZk9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29yZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhHZW5mdk9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29yZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4R2VuZnZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29vcmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5GbG9hdEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleEdlbmlPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29vcmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleEdlbml2T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb3JkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4R2VuaXZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29vcmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhHZW54T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb3JkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhHZW54dk9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29yZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleEdlbnh2T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb3JkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4UGFyYW1ldGVyeE9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleFBhcmFtZXRlcnh2T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleFBhcmFtZXRlcnh2T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRyYW5zbGF0ZXhPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InoiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFdlaWdodFBvaW50ZXJPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9pbnRlciIgdHlwZT0iamF2YS5uaW8uQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iR0xfM0RDX1hZX0FNRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0ODEwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMXzNEQ19YX0FNRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0ODA5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0FUQ19SR0JBX0VYUExJQ0lUX0FMUEhBX0FNRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1OTg3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0FUQ19SR0JBX0lOVEVSUE9MQVRFRF9BTFBIQV9BTUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDc5OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9BVENfUkdCX0FNRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1OTg2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0JHUkEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjk5MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9CTEVORF9EU1RfQUxQSEFfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI5NzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQkxFTkRfRFNUX1JHQl9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjk2OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9CTEVORF9FUVVBVElPTl9BTFBIQV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDg3NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9CTEVORF9FUVVBVElPTl9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjc3NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9CTEVORF9FUVVBVElPTl9SR0JfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI3NzciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQkxFTkRfU1JDX0FMUEhBX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyOTcxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0JMRU5EX1NSQ19SR0JfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI5NjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQlVGRkVSX0FDQ0VTU19PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTAwMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9CVUZGRVJfTUFQUEVEX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1MDA0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0JVRkZFUl9NQVBfUE9JTlRFUl9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTAwNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DT0xPUl9BVFRBQ0hNRU5UMF9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjA2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DVVJSRU5UX1BBTEVUVEVfTUFUUklYX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0ODgzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0RFQ1JfV1JBUF9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDA1NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ERVBUSDI0X1NURU5DSUw4X09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1MDU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0RFUFRIX0FUVEFDSE1FTlRfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYwOTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfREVQVEhfQ09NUE9ORU5UMTZfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzMxODkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfREVQVEhfQ09NUE9ORU5UMjRfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzMxOTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfREVQVEhfQ09NUE9ORU5UMzJfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzMxOTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfREVQVEhfU1RFTkNJTF9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDA0MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9FVEMxX1JHQjhfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYxOTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRklYRURfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTEzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDQ5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEVfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYwNDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0VfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYwNTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xFVkVMX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDUwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZSQU1FQlVGRkVSX0JJTkRJTkdfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYwMDYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlJBTUVCVUZGRVJfQ09NUExFVEVfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYwNTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDU0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfRElNRU5TSU9OU19PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjA1NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0ZPUk1BVFNfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYwNTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NSVNTSU5HX0FUVEFDSE1FTlRfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYwNTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlJBTUVCVUZGRVJfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYxNjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlJBTUVCVUZGRVJfVU5TVVBQT1JURURfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYwNjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlVOQ19BRERfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI3NzQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlVOQ19SRVZFUlNFX1NVQlRSQUNUX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyNzc5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZVTkNfU1VCVFJBQ1RfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI3NzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfSU5DUl9XUkFQX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDU1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0lOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyODYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUFUUklYX0lOREVYX0FSUkFZX0JVRkZFUl9CSU5ESU5HX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NzQyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01BVFJJWF9JTkRFWF9BUlJBWV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDg4NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NQVRSSVhfSU5ERVhfQVJSQVlfUE9JTlRFUl9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDg4OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NQVRSSVhfSU5ERVhfQVJSQVlfU0laRV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDg4NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NQVRSSVhfSU5ERVhfQVJSQVlfU1RSSURFX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0ODg4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01BVFJJWF9JTkRFWF9BUlJBWV9UWVBFX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0ODg3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01BVFJJWF9QQUxFVFRFX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0ODgwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01BWF9DVUJFX01BUF9URVhUVVJFX1NJWkVfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwNzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUFYX1BBTEVUVEVfTUFUUklDRVNfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ4ODIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUFYX1JFTkRFUkJVRkZFUl9TSVpFX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01BWF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDQ3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01BWF9WRVJURVhfVU5JVFNfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ0NjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUlSUk9SRURfUkVQRUFUX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzNjQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01PREVMVklFV19NQVRSSVhfRkxPQVRfQVNfSU5UX0JJVFNfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzUyMTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTk9ORV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX05PUk1BTF9NQVBfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwNjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUFJPSkVDVElPTl9NQVRSSVhfRkxPQVRfQVNfSU5UX0JJVFNfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzUyMTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUkVGTEVDVElPTl9NQVBfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwNjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUkVOREVSQlVGRkVSX0FMUEhBX1NJWkVfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYxNzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUkVOREVSQlVGRkVSX0JJTkRJTkdfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYwMDciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUkVOREVSQlVGRkVSX0JMVUVfU0laRV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjE3OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SRU5ERVJCVUZGRVJfREVQVEhfU0laRV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjE4MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SRU5ERVJCVUZGRVJfR1JFRU5fU0laRV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjE3NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SRU5ERVJCVUZGRVJfSEVJR0hUX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MTYzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JFTkRFUkJVRkZFUl9JTlRFUk5BTF9GT1JNQVRfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYxNjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUkVOREVSQlVGRkVSX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MTYxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JFTkRFUkJVRkZFUl9SRURfU0laRV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjE3NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SRU5ERVJCVUZGRVJfU1RFTkNJTF9TSVpFX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MTgxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JFTkRFUkJVRkZFUl9XSURUSF9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjE2MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SR0I1NjVfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYxOTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUkdCNV9BMV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjg1NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SR0I4X09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyODQ5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JHQkE0X09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyODU0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JHQkE4X09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyODU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NURU5DSUxfQVRUQUNITUVOVF9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjEyOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TVEVOQ0lMX0lOREVYMV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjE2NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TVEVOQ0lMX0lOREVYNF9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjE2NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TVEVOQ0lMX0lOREVYOF9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjE2OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFX0JJTkRJTkdfQ1VCRV9NQVBfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwNjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV9DUk9QX1JFQ1RfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzU3NDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV9DVUJFX01BUF9ORUdBVElWRV9YX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDcwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDA3MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1pfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwNzQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV9DVUJFX01BUF9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDA2NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1hfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwNjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV9DVUJFX01BUF9QT1NJVElWRV9ZX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDcxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWl9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDA3MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFX0dFTl9NT0RFX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijk0NzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV9HRU5fU1RSX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MTkyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfTUFUUklYX0ZMT0FUX0FTX0lOVF9CSVRTX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1MjE1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwNDYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVU5TSUdORURfSU5UXzI0XzhfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwNDIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfV0VJR0hUX0FSUkFZX0JVRkZFUl9CSU5ESU5HX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0OTc0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1dFSUdIVF9BUlJBWV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDQ3NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9XRUlHSFRfQVJSQVlfUE9JTlRFUl9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDQ3NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9XRUlHSFRfQVJSQVlfU0laRV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDQ3NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9XRUlHSFRfQVJSQVlfU1RSSURFX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0NDc0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1dFSUdIVF9BUlJBWV9UWVBFX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0NDczIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1dSSVRFX09OTFlfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzUwMDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkdMRVMyMCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iR0xFUzIwIgorIHR5cGU9ImFuZHJvaWQub3BlbmdsLkdMRVMyMCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnbEFjdGl2ZVRleHR1cmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dHVyZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQXR0YWNoU2hhZGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb2dyYW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2hhZGVyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xCaW5kQXR0cmliTG9jYXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvZ3JhbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQmluZEJ1ZmZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xCaW5kRnJhbWVidWZmZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZyYW1lYnVmZmVyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xCaW5kUmVuZGVyYnVmZmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZW5kZXJidWZmZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEJpbmRUZXh0dXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0dXJlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xCbGVuZENvbG9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlZCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImdyZWVuIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFscGhhIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEJsZW5kRXF1YXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQmxlbmRFcXVhdGlvblNlcGFyYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGVSR0IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZUFscGhhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xCbGVuZEZ1bmMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2ZhY3RvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZmFjdG9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xCbGVuZEZ1bmNTZXBhcmF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmNSR0IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHN0UkdCIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNyY0FscGhhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRzdEFscGhhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xCdWZmZXJEYXRhIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXNhZ2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEJ1ZmZlclN1YkRhdGEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbENsZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1hc2siIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbENsZWFyQ29sb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVkIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JlZW4iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJibHVlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxwaGEiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ2xlYXJEZXB0aGYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVwdGgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ2xlYXJTdGVuY2lsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbENvbG9yTWFzayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImdyZWVuIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJibHVlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbHBoYSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbENvbXBpbGVTaGFkZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2hhZGVyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xDb21wcmVzc2VkVGV4SW1hZ2UyRCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGV2ZWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZXJuYWxmb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvcmRlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbWFnZVNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iamF2YS5uaW8uQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ29tcHJlc3NlZFRleFN1YkltYWdlMkQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxldmVsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InhvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieW9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9ybWF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImltYWdlU2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJqYXZhLm5pby5CdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xDb3B5VGV4SW1hZ2UyRCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGV2ZWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZXJuYWxmb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3JkZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbENvcHlUZXhTdWJJbWFnZTJEIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZXZlbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4b2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InlvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ3JlYXRlUHJvZ3JhbSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xDcmVhdGVTaGFkZXIiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xDdWxsRmFjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEZWxldGVCdWZmZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVycyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRGVsZXRlQnVmZmVycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlcnMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbERlbGV0ZUZyYW1lYnVmZmVycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZyYW1lYnVmZmVycyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRGVsZXRlRnJhbWVidWZmZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZnJhbWVidWZmZXJzIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEZWxldGVQcm9ncmFtIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb2dyYW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbERlbGV0ZVJlbmRlcmJ1ZmZlcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZW5kZXJidWZmZXJzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEZWxldGVSZW5kZXJidWZmZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVuZGVyYnVmZmVycyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRGVsZXRlU2hhZGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNoYWRlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRGVsZXRlVGV4dHVyZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0dXJlcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRGVsZXRlVGV4dHVyZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0dXJlcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRGVwdGhGdW5jIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZ1bmMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbERlcHRoTWFzayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmbGFnIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRGVwdGhSYW5nZWYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iek5lYXIiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6RmFyIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbERldGFjaFNoYWRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9ncmFtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNoYWRlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRGlzYWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXAiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRHJhd0FycmF5cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpcnN0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEcmF3RWxlbWVudHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGljZXMiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEVuYWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXAiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xGaW5pc2giCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEZsdXNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xGcmFtZWJ1ZmZlclJlbmRlcmJ1ZmZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0YWNobWVudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZW5kZXJidWZmZXJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVuZGVyYnVmZmVyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0YWNobWVudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dHVyZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZXZlbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRnJvbnRGYWNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdlbkJ1ZmZlcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXJzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZW5CdWZmZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVycyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2VuRnJhbWVidWZmZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZnJhbWVidWZmZXJzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZW5GcmFtZWJ1ZmZlcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmcmFtZWJ1ZmZlcnMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdlblJlbmRlcmJ1ZmZlcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZW5kZXJidWZmZXJzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZW5SZW5kZXJidWZmZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVuZGVyYnVmZmVycyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2VuVGV4dHVyZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0dXJlcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2VuVGV4dHVyZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0dXJlcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2VuZXJhdGVNaXBtYXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRBY3RpdmVBdHRyaWIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvZ3JhbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aE9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZU9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZU9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWVPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldEFjdGl2ZUF0dHJpYiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9ncmFtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZnNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJieXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0QWN0aXZlVW5pZm9ybSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9ncmFtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZnNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoT2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzaXplT2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlT2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZU9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0QWN0aXZlVW5pZm9ybSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9ncmFtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZnNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJieXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0QXR0YWNoZWRTaGFkZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb2dyYW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF4Y291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudE9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzaGFkZXJzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2hhZGVyc09mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0QXR0YWNoZWRTaGFkZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb2dyYW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF4Y291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2hhZGVycyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0QXR0cmliTG9jYXRpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9ncmFtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRCb29sZWFudiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImJvb2xlYW5bXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRCb29sZWFudiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldEJ1ZmZlclBhcmFtZXRlcml2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldEJ1ZmZlclBhcmFtZXRlcml2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldEVycm9yIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldEZsb2F0diIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0RmxvYXR2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uRmxvYXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRGcmFtZWJ1ZmZlckF0dGFjaG1lbnRQYXJhbWV0ZXJpdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0YWNobWVudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRhY2htZW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0SW50ZWdlcnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRJbnRlZ2VydiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFByb2dyYW1JbmZvTG9nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb2dyYW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFByb2dyYW1pdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9ncmFtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0UHJvZ3JhbWl2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb2dyYW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRTaGFkZXJJbmZvTG9nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNoYWRlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNoYWRlcnR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlY2lzaW9udHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyYW5nZSIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJhbmdlT2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByZWNpc2lvbiIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByZWNpc2lvbk9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNoYWRlcnR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlY2lzaW9udHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyYW5nZSIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcmVjaXNpb24iIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFNoYWRlclNvdXJjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaGFkZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmc2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGhPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZU9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0U2hhZGVyU291cmNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNoYWRlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImJ5dGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRTaGFkZXJpdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaGFkZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRTaGFkZXJpdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaGFkZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0VGV4UGFyYW1ldGVyZnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRUZXhQYXJhbWV0ZXJmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5GbG9hdEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFRleFBhcmFtZXRlcml2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFRleFBhcmFtZXRlcml2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFVuaWZvcm1Mb2NhdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb2dyYW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFVuaWZvcm1mdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9ncmFtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRVbmlmb3JtZnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvZ3JhbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkZsb2F0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0VW5pZm9ybWl2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb2dyYW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRVbmlmb3JtaXYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvZ3JhbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFZlcnRleEF0dHJpYmZ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRWZXJ0ZXhBdHRyaWJmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkZsb2F0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0VmVydGV4QXR0cmliaXYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRWZXJ0ZXhBdHRyaWJpdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEhpbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbElzQnVmZmVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsSXNFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhcCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsSXNGcmFtZWJ1ZmZlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmcmFtZWJ1ZmZlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsSXNQcm9ncmFtIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb2dyYW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbElzUmVuZGVyYnVmZmVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlbmRlcmJ1ZmZlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsSXNTaGFkZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2hhZGVyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xJc1RleHR1cmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dHVyZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTGluZVdpZHRoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbExpbmtQcm9ncmFtIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb2dyYW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFBpeGVsU3RvcmVpIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xQb2x5Z29uT2Zmc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY3RvciIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVuaXRzIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFJlYWRQaXhlbHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwaXhlbHMiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFJlbGVhc2VTaGFkZXJDb21waWxlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsUmVuZGVyYnVmZmVyU3RvcmFnZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZXJuYWxmb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xTYW1wbGVDb3ZlcmFnZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImludmVydCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFNjaXNzb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsU2hhZGVyQmluYXJ5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2hhZGVycyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiaW5hcnlmb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmluYXJ5IiB0eXBlPSJqYXZhLm5pby5CdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsU2hhZGVyQmluYXJ5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2hhZGVycyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiaW5hcnlmb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmluYXJ5IiB0eXBlPSJqYXZhLm5pby5CdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsU2hhZGVyU291cmNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNoYWRlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xTdGVuY2lsRnVuYyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmdW5jIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlZiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYXNrIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xTdGVuY2lsRnVuY1NlcGFyYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZnVuYyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFzayIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsU3RlbmNpbE1hc2siCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFzayIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsU3RlbmNpbE1hc2tTZXBhcmF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWNlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1hc2siIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFN0ZW5jaWxPcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWlsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InpmYWlsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InpwYXNzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xTdGVuY2lsT3BTZXBhcmF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWNlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZhaWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iemZhaWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ienBhc3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleEltYWdlMkQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxldmVsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVybmFsZm9ybWF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3JkZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9ybWF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGl4ZWxzIiB0eXBlPSJqYXZhLm5pby5CdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhQYXJhbWV0ZXJmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhQYXJhbWV0ZXJmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleFBhcmFtZXRlcmZ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkZsb2F0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4UGFyYW1ldGVyaSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleFBhcmFtZXRlcml2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleFBhcmFtZXRlcml2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleFN1YkltYWdlMkQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxldmVsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InhvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieW9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9ybWF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGl4ZWxzIiB0eXBlPSJqYXZhLm5pby5CdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xVbmlmb3JtMWYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xVbmlmb3JtMWZ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVW5pZm9ybTFmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJqYXZhLm5pby5GbG9hdEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFVuaWZvcm0xaSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xVbmlmb3JtMWl2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFVuaWZvcm0xaXYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVW5pZm9ybTJmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFVuaWZvcm0yZnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xVbmlmb3JtMmZ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImphdmEubmlvLkZsb2F0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVW5pZm9ybTJpIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVW5pZm9ybTJpdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xVbmlmb3JtMml2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFVuaWZvcm0zZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InoiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVW5pZm9ybTNmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFVuaWZvcm0zZnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iamF2YS5uaW8uRmxvYXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xVbmlmb3JtM2kiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InoiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFVuaWZvcm0zaXYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVW5pZm9ybTNpdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xVbmlmb3JtNGYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idyIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xVbmlmb3JtNGZ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVW5pZm9ybTRmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJqYXZhLm5pby5GbG9hdEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFVuaWZvcm00aSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xVbmlmb3JtNGl2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFVuaWZvcm00aXYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVW5pZm9ybU1hdHJpeDJmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0cmFuc3Bvc2UiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFVuaWZvcm1NYXRyaXgyZnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHJhbnNwb3NlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5uaW8uRmxvYXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xVbmlmb3JtTWF0cml4M2Z2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRyYW5zcG9zZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVW5pZm9ybU1hdHJpeDNmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0cmFuc3Bvc2UiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLm5pby5GbG9hdEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFVuaWZvcm1NYXRyaXg0ZnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHJhbnNwb3NlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xVbmlmb3JtTWF0cml4NGZ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRyYW5zcG9zZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubmlvLkZsb2F0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVXNlUHJvZ3JhbSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9ncmFtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xWYWxpZGF0ZVByb2dyYW0iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvZ3JhbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVmVydGV4QXR0cmliMWYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5keCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFZlcnRleEF0dHJpYjFmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmR4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlcyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xWZXJ0ZXhBdHRyaWIxZnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5keCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImphdmEubmlvLkZsb2F0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVmVydGV4QXR0cmliMmYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5keCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xWZXJ0ZXhBdHRyaWIyZnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5keCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVmVydGV4QXR0cmliMmZ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZHgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWVzIiB0eXBlPSJqYXZhLm5pby5GbG9hdEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFZlcnRleEF0dHJpYjNmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZHgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFZlcnRleEF0dHJpYjNmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmR4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlcyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xWZXJ0ZXhBdHRyaWIzZnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5keCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImphdmEubmlvLkZsb2F0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVmVydGV4QXR0cmliNGYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5keCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InoiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFZlcnRleEF0dHJpYjRmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmR4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlcyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xWZXJ0ZXhBdHRyaWI0ZnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5keCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImphdmEubmlvLkZsb2F0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVmVydGV4QXR0cmliUG9pbnRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5keCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibm9ybWFsaXplZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaWRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InB0ciIgdHlwZT0iamF2YS5uaW8uQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVmlld3BvcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iR0xfQUNUSVZFX0FUVFJJQlVURVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTcyMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9BQ1RJVkVfQVRUUklCVVRFX01BWF9MRU5HVEgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTcyMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9BQ1RJVkVfVEVYVFVSRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0FDVElWRV9VTklGT1JNUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NzE4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0FDVElWRV9VTklGT1JNX01BWF9MRU5HVEgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTcxOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9BTElBU0VEX0xJTkVfV0lEVEhfUkFOR0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzkwMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9BTElBU0VEX1BPSU5UX1NJWkVfUkFOR0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzkwMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9BTFBIQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjY0MDYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQUxQSEFfQklUUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQUxXQVlTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTE5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0FSUkFZX0JVRkZFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0OTYyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0FSUkFZX0JVRkZFUl9CSU5ESU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ5NjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQVRUQUNIRURfU0hBREVSUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NzE3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0JBQ0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDI5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0JMRU5EIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzA0MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9CTEVORF9DT0xPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyNzczIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0JMRU5EX0RTVF9BTFBIQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyOTcwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0JMRU5EX0RTVF9SR0IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjk2OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9CTEVORF9FUVVBVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyNzc3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0JMRU5EX0VRVUFUSU9OX0FMUEhBIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ4NzciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQkxFTkRfRVFVQVRJT05fUkdCIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI3NzciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQkxFTkRfU1JDX0FMUEhBIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI5NzEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQkxFTkRfU1JDX1JHQiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyOTY5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0JMVUVfQklUUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQk9PTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NjcwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0JPT0xfVkVDMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NjcxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0JPT0xfVkVDMyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NjcyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0JPT0xfVkVDNCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NjczIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0JVRkZFUl9TSVpFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ2NjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQlVGRkVSX1VTQUdFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ2NjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQllURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxMjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ0NXIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjMwNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DTEFNUF9UT19FREdFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzMwNzEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ09MT1JfQVRUQUNITUVOVDAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjA2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DT0xPUl9CVUZGRVJfQklUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYzODQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ09MT1JfQ0xFQVJfVkFMVUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMTA2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTE9SX1dSSVRFTUFTSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMxMDciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ09NUElMRV9TVEFUVVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTcxMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0NDY3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTlNUQU5UX0FMUEhBIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI3NzEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ09OU1RBTlRfQ09MT1IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjc2OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DVUxMX0ZBQ0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyODg0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NVTExfRkFDRV9NT0RFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjg4NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DVVJSRU5UX1BST0dSQU0iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTcyNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DVVJSRU5UX1ZFUlRFWF9BVFRSSUIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDM0MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DVyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIzMDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfREVDUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc2ODMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfREVDUl9XUkFQIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwNTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfREVMRVRFX1NUQVRVUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NzEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0RFUFRIX0FUVEFDSE1FTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjA5NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ERVBUSF9CSVRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQxNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ERVBUSF9CVUZGRVJfQklUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0RFUFRIX0NMRUFSX1ZBTFVFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjkzMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ERVBUSF9DT01QT05FTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NDAyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0RFUFRIX0NPTVBPTkVOVDE2IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzMxODkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfREVQVEhfRlVOQyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5MzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfREVQVEhfUkFOR0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0RFUFRIX1RFU1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTI5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0RFUFRIX1dSSVRFTUFTSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5MzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRElUSEVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzAyNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ET05UX0NBUkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MzUyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0RTVF9BTFBIQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc3MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9EU1RfQ09MT1IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3NzQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRFlOQU1JQ19EUkFXIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzUwNDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDk2MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUl9CSU5ESU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ5NjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRVFVQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRVhURU5TSU9OUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc5MzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRkFMU0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZBU1RFU1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MzUzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZJWEVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTEzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9GTE9BVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxMjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRkxPQVRfTUFUMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1Njc0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZMT0FUX01BVDMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTY3NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9GTE9BVF9NQVQ0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzU2NzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRkxPQVRfVkVDMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NjY0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZMT0FUX1ZFQzMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTY2NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9GTE9BVF9WRUM0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzU2NjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlJBR01FTlRfU0hBREVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzU2MzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlJBTUVCVUZGRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjE2MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYwNDkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9PQkpFQ1RfVFlQRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV9DVUJFX01BUF9GQUNFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYwNTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xFVkVMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYwNTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlJBTUVCVUZGRVJfQklORElORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDA2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZSQU1FQlVGRkVSX0NPTVBMRVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYwNTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYwNTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9ESU1FTlNJT05TIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYwNTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9NSVNTSU5HX0FUVEFDSE1FTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjA1NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9GUkFNRUJVRkZFUl9VTlNVUFBPUlRFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDYxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZST05UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAyOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9GUk9OVF9BTkRfQkFDSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlJPTlRfRkFDRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI4ODYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlVOQ19BREQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjc3NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9GVU5DX1JFVkVSU0VfU1VCVFJBQ1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjc3OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9GVU5DX1NVQlRSQUNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI3NzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfR0VORVJBVEVfTUlQTUFQX0hJTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzE3MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9HRVFVQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfR1JFQVRFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9HUkVFTl9CSVRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ISUdIX0ZMT0FUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYzMzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfSElHSF9JTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjM0MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9JTVBMRU1FTlRBVElPTl9DT0xPUl9SRUFEX0ZPUk1BVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NzM5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfVFlQRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NzM4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0lOQ1IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3NjgyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0lOQ1JfV1JBUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDU1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0lORk9fTE9HX0xFTkdUSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NzE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0lOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxMjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfSU5UX1ZFQzIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTY2NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9JTlRfVkVDMyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NjY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0lOVF9WRUM0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzU2NjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfSU5WQUxJRF9FTlVNIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTI4MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9JTlZBTElEX0ZSQU1FQlVGRkVSX09QRVJBVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyODYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfSU5WQUxJRF9PUEVSQVRJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjgyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0lOVkFMSURfVkFMVUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjgxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0lOVkVSVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUzODYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfS0VFUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc2ODAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTEVRVUFMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTE1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0xFU1MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTElORUFSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOTcyOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSU5FQVJfTUlQTUFQX0xJTkVBUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijk5ODciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTElORUFSX01JUE1BUF9ORUFSRVNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOTk4NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSU5FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTElORV9MT09QIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSU5FX1NUUklQIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSU5FX1dJRFRIIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjg0OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSU5LX1NUQVRVUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NzE0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0xPV19GTE9BVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MzM2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0xPV19JTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjMzOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MVU1JTkFOQ0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NDA5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0xVTUlOQU5DRV9BTFBIQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjY0MTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUFYX0NPTUJJTkVEX1RFWFRVUkVfSU1BR0VfVU5JVFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTY2MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NQVhfQ1VCRV9NQVBfVEVYVFVSRV9TSVpFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwNzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUFYX0ZSQUdNRU5UX1VOSUZPUk1fVkVDVE9SUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MzQ5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01BWF9SRU5ERVJCVUZGRVJfU0laRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01BWF9URVhUVVJFX0lNQUdFX1VOSVRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ5MzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUFYX1RFWFRVUkVfU0laRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzNzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUFYX1ZBUllJTkdfVkVDVE9SUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MzQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01BWF9WRVJURVhfQVRUUklCUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0OTIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01BWF9WRVJURVhfVEVYVFVSRV9JTUFHRV9VTklUUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NjYwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01BWF9WRVJURVhfVU5JRk9STV9WRUNUT1JTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYzNDciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUFYX1ZJRVdQT1JUX0RJTVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzg2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01FRElVTV9GTE9BVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MzM3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01FRElVTV9JTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjM0MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NSVJST1JFRF9SRVBFQVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzY0OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ORUFSRVNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOTcyOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ORUFSRVNUX01JUE1BUF9MSU5FQVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI5OTg2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX05FQVJFU1RfTUlQTUFQX05FQVJFU1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI5OTg0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX05FVkVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX05JQ0VTVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQzNTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTk9ORSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTk9URVFVQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTk9fRVJST1IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX05VTV9DT01QUkVTU0VEX1RFWFRVUkVfRk9STUFUUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0NDY2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX05VTV9TSEFERVJfQklOQVJZX0ZPUk1BVFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjM0NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9PTkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX09ORV9NSU5VU19DT05TVEFOVF9BTFBIQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyNzcyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyNzcwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX09ORV9NSU5VU19EU1RfQUxQSEEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3NzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfT05FX01JTlVTX0RTVF9DT0xPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc3NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9PTkVfTUlOVVNfU1JDX0FMUEhBIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzcxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX09ORV9NSU5VU19TUkNfQ09MT1IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3NjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfT1VUX09GX01FTU9SWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyODUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUEFDS19BTElHTk1FTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzMzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BPSU5UUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUE9MWUdPTl9PRkZTRVRfRkFDVE9SIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI4MjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUE9MWUdPTl9PRkZTRVRfRklMTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyODIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BPTFlHT05fT0ZGU0VUX1VOSVRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTA3NTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUkVEX0JJVFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDEwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JFTkRFUkJVRkZFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MTYxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JFTkRFUkJVRkZFUl9BTFBIQV9TSVpFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYxNzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUkVOREVSQlVGRkVSX0JJTkRJTkciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjAwNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SRU5ERVJCVUZGRVJfQkxVRV9TSVpFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYxNzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUkVOREVSQlVGRkVSX0RFUFRIX1NJWkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjE4MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SRU5ERVJCVUZGRVJfR1JFRU5fU0laRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MTc3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JFTkRFUkJVRkZFUl9IRUlHSFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjE2MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SRU5ERVJCVUZGRVJfSU5URVJOQUxfRk9STUFUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYxNjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUkVOREVSQlVGRkVSX1JFRF9TSVpFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYxNzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUkVOREVSQlVGRkVSX1NURU5DSUxfU0laRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MTgxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JFTkRFUkJVRkZFUl9XSURUSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MTYyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JFTkRFUkVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzkzNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SRVBFQVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDQ5NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SRVBMQUNFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzY4MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SR0IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NDA3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JHQjU2NSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MTk0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JHQjVfQTEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjg1NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SR0JBIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjQwOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SR0JBNCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyODU0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NBTVBMRVJfMkQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTY3OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TQU1QTEVSX0NVQkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTY4MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TQU1QTEVTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI5MzciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI5MjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU0FNUExFX0JVRkZFUlMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjkzNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TQU1QTEVfQ09WRVJBR0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjkyOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TQU1QTEVfQ09WRVJBR0VfSU5WRVJUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI5MzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU0FNUExFX0NPVkVSQUdFX1ZBTFVFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI5MzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU0NJU1NPUl9CT1giCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMDg4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NDSVNTT1JfVEVTVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMwODkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU0hBREVSX0JJTkFSWV9GT1JNQVRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYzNDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU0hBREVSX0NPTVBJTEVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYzNDYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU0hBREVSX1NPVVJDRV9MRU5HVEgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTcyMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TSEFERVJfVFlQRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NjYzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NIQURJTkdfTEFOR1VBR0VfVkVSU0lPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NzI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NIT1JUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTEyMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TUkNfQUxQSEEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3NzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1JDX0FMUEhBX1NBVFVSQVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzc2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NSQ19DT0xPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc2OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TVEFUSUNfRFJBVyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1MDQ0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NURU5DSUxfQVRUQUNITUVOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MTI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NURU5DSUxfQkFDS19GQUlMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ4MTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1RFTkNJTF9CQUNLX0ZVTkMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDgxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TVEVOQ0lMX0JBQ0tfUEFTU19ERVBUSF9GQUlMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ4MTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1RFTkNJTF9CQUNLX1BBU1NfREVQVEhfUEFTUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0ODE5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NURU5DSUxfQkFDS19SRUYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjAwMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TVEVOQ0lMX0JBQ0tfVkFMVUVfTUFTSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDA0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NURU5DSUxfQkFDS19XUklURU1BU0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjAwNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TVEVOQ0lMX0JJVFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDE1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NURU5DSUxfQlVGRkVSX0JJVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1RFTkNJTF9DTEVBUl9WQUxVRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5NjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1RFTkNJTF9GQUlMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjk2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TVEVOQ0lMX0ZVTkMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTYyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NURU5DSUxfSU5ERVgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NDAxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NURU5DSUxfSU5ERVg4IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYxNjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1RFTkNJTF9QQVNTX0RFUFRIX0ZBSUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTY1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NURU5DSUxfUEFTU19ERVBUSF9QQVNTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjk2NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TVEVOQ0lMX1JFRiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5NjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1RFTkNJTF9URVNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjk2MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TVEVOQ0lMX1ZBTFVFX01BU0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTYzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NURU5DSUxfV1JJVEVNQVNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjk2OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TVFJFQU1fRFJBVyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1MDQwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NVQlBJWEVMX0JJVFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDA4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1ODkwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzM5ODQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzk4NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMTAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzk5NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMTEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzk5NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMTIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzk5NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMTMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzk5NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMTQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzk5OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMTUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzk5OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMTYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDAwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMTciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDAwMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMTgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDAwMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMTkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDAwMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzOTg2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUyMCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDA0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUyMSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDA1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUyMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDA2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUyMyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDA3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUyNCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDA4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUyNSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDA5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUyNiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDEwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUyNyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDExIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUyOCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUyOSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDEzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzM5ODciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTMwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwMTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTMxIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwMTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzk4OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFNSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzOTg5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkU2IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzM5OTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzk5MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFOCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzOTkyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkU5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzM5OTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV8yRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV9CSU5ESU5HXzJEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI4NzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV9CSU5ESU5HX0NVQkVfTUFQIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwNjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV9DVUJFX01BUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDY3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDcwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDcyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfQ1VCRV9NQVBfTkVHQVRJVkVfWiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDc0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDY5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDcxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfQ1VCRV9NQVBfUE9TSVRJVkVfWiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDczIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfTUFHX0ZJTFRFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMjQwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfTUlOX0ZJTFRFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMjQxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfV1JBUF9TIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAyNDIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV9XUkFQX1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDI0MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9UUklBTkdMRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RSSUFOR0xFX0ZBTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVFJJQU5HTEVfU1RSSVAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RSVUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1VOUEFDS19BTElHTk1FTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzE3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1VOU0lHTkVEX0JZVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MTIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1VOU0lHTkVEX0lOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxMjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVU5TSUdORURfU0hPUlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MTIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjgxOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9VTlNJR05FRF9TSE9SVF81XzVfNV8xIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI4MjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVU5TSUdORURfU0hPUlRfNV82XzUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzYzNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9WQUxJREFURV9TVEFUVVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTcxNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9WRU5ET1IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3OTM2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1ZFUlNJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3OTM4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfQlVGRkVSX0JJTkRJTkciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDk3NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9WRVJURVhfQVRUUklCX0FSUkFZX0VOQUJMRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDMzOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9WRVJURVhfQVRUUklCX0FSUkFZX05PUk1BTElaRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDkyMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9WRVJURVhfQVRUUklCX0FSUkFZX1BPSU5URVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDM3MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9WRVJURVhfQVRUUklCX0FSUkFZX1NJWkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDMzOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9WRVJURVhfQVRUUklCX0FSUkFZX1NUUklERSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MzQwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1ZFUlRFWF9BVFRSSUJfQVJSQVlfVFlQRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MzQxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1ZFUlRFWF9TSEFERVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTYzMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9WSUVXUE9SVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5NzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfWkVSTyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkdMRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iR0xFeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC5vcGVuZ2wuR0xFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlcnJvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJHTEV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLm9wZW5nbC5HTEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVycm9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkdMU3VyZmFjZVZpZXciCisgZXh0ZW5kcz0iYW5kcm9pZC52aWV3LlN1cmZhY2VWaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnZpZXcuU3VyZmFjZUhvbGRlci5DYWxsYmFjayI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iR0xTdXJmYWNlVmlldyIKKyB0eXBlPSJhbmRyb2lkLm9wZW5nbC5HTFN1cmZhY2VWaWV3IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkdMU3VyZmFjZVZpZXciCisgdHlwZT0iYW5kcm9pZC5vcGVuZ2wuR0xTdXJmYWNlVmlldyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldERlYnVnRmxhZ3MiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVuZGVyTW9kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblBhdXNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblJlc3VtZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVldWVFdmVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImphdmEubGFuZy5SdW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXF1ZXN0UmVuZGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREZWJ1Z0ZsYWdzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVidWdGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVHTENvbmZpZ0Nob29zZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb25maWdDaG9vc2VyIiB0eXBlPSJhbmRyb2lkLm9wZW5nbC5HTFN1cmZhY2VWaWV3LkVHTENvbmZpZ0Nob29zZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RUdMQ29uZmlnQ2hvb3NlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5lZWREZXB0aCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFR0xDb25maWdDaG9vc2VyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVkU2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJncmVlblNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmx1ZVNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxwaGFTaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlcHRoU2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGVuY2lsU2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVHTENvbnRleHRDbGllbnRWZXJzaW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmVyc2lvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVHTENvbnRleHRGYWN0b3J5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFjdG9yeSIgdHlwZT0iYW5kcm9pZC5vcGVuZ2wuR0xTdXJmYWNlVmlldy5FR0xDb250ZXh0RmFjdG9yeSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFR0xXaW5kb3dTdXJmYWNlRmFjdG9yeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY3RvcnkiIHR5cGU9ImFuZHJvaWQub3BlbmdsLkdMU3VyZmFjZVZpZXcuRUdMV2luZG93U3VyZmFjZUZhY3RvcnkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0R0xXcmFwcGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ2xXcmFwcGVyIiB0eXBlPSJhbmRyb2lkLm9wZW5nbC5HTFN1cmZhY2VWaWV3LkdMV3JhcHBlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZW5kZXJNb2RlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVuZGVyTW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJlbmRlcmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVuZGVyZXIiIHR5cGU9ImFuZHJvaWQub3BlbmdsLkdMU3VyZmFjZVZpZXcuUmVuZGVyZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VyZmFjZUNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob2xkZXIiIHR5cGU9ImFuZHJvaWQudmlldy5TdXJmYWNlSG9sZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VyZmFjZUNyZWF0ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob2xkZXIiIHR5cGU9ImFuZHJvaWQudmlldy5TdXJmYWNlSG9sZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cmZhY2VEZXN0cm95ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob2xkZXIiIHR5cGU9ImFuZHJvaWQudmlldy5TdXJmYWNlSG9sZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iREVCVUdfQ0hFQ0tfR0xfRVJST1IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFQlVHX0xPR19HTF9DQUxMUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkVOREVSTU9ERV9DT05USU5VT1VTTFkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFTkRFUk1PREVfV0hFTl9ESVJUWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJHTFN1cmZhY2VWaWV3LkVHTENvbmZpZ0Nob29zZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNob29zZUNvbmZpZyIKKyByZXR1cm49ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0xDb25maWciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZWdsIiB0eXBlPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMMTAiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRpc3BsYXkiIHR5cGU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0xEaXNwbGF5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iR0xTdXJmYWNlVmlldy5FR0xDb250ZXh0RmFjdG9yeSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY3JlYXRlQ29udGV4dCIKKyByZXR1cm49ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0xDb250ZXh0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVnbCIgdHlwZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTDEwIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaXNwbGF5IiB0eXBlPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMRGlzcGxheSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZWdsQ29uZmlnIiB0eXBlPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMQ29uZmlnIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlc3Ryb3lDb250ZXh0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlZ2wiIHR5cGU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0wxMCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlzcGxheSIgdHlwZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTERpc3BsYXkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0xDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iR0xTdXJmYWNlVmlldy5FR0xXaW5kb3dTdXJmYWNlRmFjdG9yeSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY3JlYXRlV2luZG93U3VyZmFjZSIKKyByZXR1cm49ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0xTdXJmYWNlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVnbCIgdHlwZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTDEwIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaXNwbGF5IiB0eXBlPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMRGlzcGxheSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29uZmlnIiB0eXBlPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMQ29uZmlnIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYXRpdmVXaW5kb3ciIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVzdHJveVN1cmZhY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVnbCIgdHlwZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTDEwIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaXNwbGF5IiB0eXBlPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMRGlzcGxheSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3VyZmFjZSIgdHlwZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTFN1cmZhY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJHTFN1cmZhY2VWaWV3LkdMV3JhcHBlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0id3JhcCIKKyByZXR1cm49ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLm9wZW5nbGVzLkdMIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImdsIiB0eXBlPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5vcGVuZ2xlcy5HTCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkdMU3VyZmFjZVZpZXcuUmVuZGVyZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uRHJhd0ZyYW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJnbCIgdHlwZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3Mub3BlbmdsZXMuR0wxMCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblN1cmZhY2VDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJnbCIgdHlwZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3Mub3BlbmdsZXMuR0wxMCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TdXJmYWNlQ3JlYXRlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ2wiIHR5cGU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLm9wZW5nbGVzLkdMMTAiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbmZpZyIgdHlwZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTENvbmZpZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iR0xVIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJHTFUiCisgdHlwZT0iYW5kcm9pZC5vcGVuZ2wuR0xVIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdsdUVycm9yU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlcnJvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsdUxvb2tBdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ2wiIHR5cGU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLm9wZW5nbGVzLkdMMTAiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV5ZVgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleWVZIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXllWiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNlbnRlclgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjZW50ZXJZIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2VudGVyWiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVwWCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVwWSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVwWiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2x1T3J0aG8yRCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ2wiIHR5cGU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLm9wZW5nbGVzLkdMMTAiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaWdodCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvcCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2x1UGVyc3BlY3RpdmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImdsIiB0eXBlPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5vcGVuZ2xlcy5HTDEwIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3Z5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXNwZWN0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iek5lYXIiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6RmFyIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbHVQcm9qZWN0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9ialgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvYmpZIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqWiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGVsIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlbE9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm9qZWN0IiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm9qZWN0T2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3T2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpbiIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2luT2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2x1VW5Qcm9qZWN0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpblgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aW5ZIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2luWiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGVsIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlbE9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm9qZWN0IiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm9qZWN0T2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3T2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9iaiIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqT2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iR0xVdGlscyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0SW50ZXJuYWxGb3JtYXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYml0bWFwIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJpdG1hcCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGV4SW1hZ2UyRCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxldmVsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVybmFsZm9ybWF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJpdG1hcCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvcmRlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRleEltYWdlMkQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZXZlbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlcm5hbGZvcm1hdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiaXRtYXAiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvcmRlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRleEltYWdlMkQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZXZlbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiaXRtYXAiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3JkZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0ZXhTdWJJbWFnZTJEIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGV2ZWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieG9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5b2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJpdG1hcCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGV4U3ViSW1hZ2UyRCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxldmVsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InhvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieW9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiaXRtYXAiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik1hdHJpeCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTWF0cml4IgorIHR5cGU9ImFuZHJvaWQub3BlbmdsLk1hdHJpeCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJmcnVzdHVtTSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibSIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaWdodCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvcCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5lYXIiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmYXIiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImludmVydE0iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1JbnYiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1JbnZPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibSIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibU9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxlbmd0aCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibXVsdGlwbHlNTSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHQiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdE9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsaHMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxoc09mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaHMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJoc09mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im11bHRpcGx5TVYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0VmVjIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRWZWNPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGhzTWF0IiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsaHNNYXRPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmhzVmVjIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaHNWZWNPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcnRob00iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im0iIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1PZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVmdCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJpZ2h0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYm90dG9tIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9wIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmVhciIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZhciIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icm90YXRlTSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icm0iIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJtT2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im0iIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1PZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icm90YXRlTSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibSIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibU9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzY2FsZU0iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNtIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzbU9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtT2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2NhbGVNIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtT2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SWRlbnRpdHlNIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzbSIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic21PZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMb29rQXRNIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJybSIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icm1PZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXllWCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV5ZVkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleWVaIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2VudGVyWCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNlbnRlclkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjZW50ZXJaIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXBYIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXBZIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXBaIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSb3RhdGVFdWxlck0iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJtIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJybU9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InoiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJvdGF0ZU0iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJtIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJybU9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0cmFuc2xhdGVNIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0bSIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG1PZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibSIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibU9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InoiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRyYW5zbGF0ZU0iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im0iIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1PZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0cmFuc3Bvc2VNIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtVHJhbnMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1UcmFuc09mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtT2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVmlzaWJpbGl0eSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVmlzaWJpbGl0eSIKKyB0eXBlPSJhbmRyb2lkLm9wZW5nbC5WaXNpYmlsaXR5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNvbXB1dGVCb3VuZGluZ1NwaGVyZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbnMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uc09mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbnNDb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzcGhlcmUiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNwaGVyZU9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZydXN0dW1DdWxsU3BoZXJlcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im12cCIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibXZwT2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNwaGVyZXMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNwaGVyZXNPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3BoZXJlc0NvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdHMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRzT2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdHNDYXBhY2l0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZpc2liaWxpdHlUZXN0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id3MiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndzT2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9ucyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb25zT2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGljZXMiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kaWNlc09mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleENvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJhbmRyb2lkLm9zIgorPgorPGNsYXNzIG5hbWU9IkFzeW5jVGFzayIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBc3luY1Rhc2siCisgdHlwZT0iYW5kcm9pZC5vcy5Bc3luY1Rhc2siCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2FuY2VsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXlJbnRlcnJ1cHRJZlJ1bm5pbmciIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZG9JbkJhY2tncm91bmQiCisgcmV0dXJuPSJSZXN1bHQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJQYXJhbXMuLi4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhlY3V0ZSIKKyByZXR1cm49ImFuZHJvaWQub3MuQXN5bmNUYXNrJmx0O1BhcmFtcywgUHJvZ3Jlc3MsIFJlc3VsdCZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJQYXJhbXMuLi4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iUmVzdWx0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkV4ZWN1dGlvbkV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49IlJlc3VsdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lb3V0IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRXhlY3V0aW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRpb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlRpbWVvdXRFeGNlcHRpb24iIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVvdXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RhdHVzIgorIHJldHVybj0iYW5kcm9pZC5vcy5Bc3luY1Rhc2suU3RhdHVzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNDYW5jZWxsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DYW5jZWxsZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uUG9zdEV4ZWN1dGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHQiIHR5cGU9IlJlc3VsdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblByZUV4ZWN1dGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uUHJvZ3Jlc3NVcGRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9IlByb2dyZXNzLi4uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1Ymxpc2hQcm9ncmVzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWVzIiB0eXBlPSJQcm9ncmVzcy4uLiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBc3luY1Rhc2suU3RhdHVzIgorIGV4dGVuZHM9ImphdmEubGFuZy5FbnVtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iYW5kcm9pZC5vcy5Bc3luY1Rhc2suU3RhdHVzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVzIgorIHJldHVybj0iYW5kcm9pZC5vcy5Bc3luY1Rhc2suU3RhdHVzW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJhZFBhcmNlbGFibGVFeGNlcHRpb24iCisgZXh0ZW5kcz0iYW5kcm9pZC51dGlsLkFuZHJvaWRSdW50aW1lRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmFkUGFyY2VsYWJsZUV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLm9zLkJhZFBhcmNlbGFibGVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJhZFBhcmNlbGFibGVFeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC5vcy5CYWRQYXJjZWxhYmxlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5FeGNlcHRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCYXR0ZXJ5TWFuYWdlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmF0dGVyeU1hbmFnZXIiCisgdHlwZT0iYW5kcm9pZC5vcy5CYXR0ZXJ5TWFuYWdlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9IkJBVFRFUllfSEVBTFRIX0RFQUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJBVFRFUllfSEVBTFRIX0dPT0QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJBVFRFUllfSEVBTFRIX09WRVJIRUFUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJCQVRURVJZX0hFQUxUSF9PVkVSX1ZPTFRBR0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJBVFRFUllfSEVBTFRIX1VOS05PV04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJBVFRFUllfSEVBTFRIX1VOU1BFQ0lGSUVEX0ZBSUxVUkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJBVFRFUllfUExVR0dFRF9BQyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQkFUVEVSWV9QTFVHR0VEX1VTQiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQkFUVEVSWV9TVEFUVVNfQ0hBUkdJTkciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJBVFRFUllfU1RBVFVTX0RJU0NIQVJHSU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJCQVRURVJZX1NUQVRVU19GVUxMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJCQVRURVJZX1NUQVRVU19OT1RfQ0hBUkdJTkciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJBVFRFUllfU1RBVFVTX1VOS05PV04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX0hFQUxUSCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtoZWFsdGgmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfSUNPTl9TTUFMTCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtpY29uLXNtYWxsJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX0xFVkVMIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2xldmVsJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX1BMVUdHRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cGx1Z2dlZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9QUkVTRU5UIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ByZXNlbnQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfU0NBTEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c2NhbGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfU1RBVFVTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3N0YXR1cyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9URUNITk9MT0dZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3RlY2hub2xvZ3kmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfVEVNUEVSQVRVUkUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dGVtcGVyYXR1cmUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfVk9MVEFHRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2b2x0YWdlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCaW5kZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5JQmluZGVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCaW5kZXIiCisgdHlwZT0iYW5kcm9pZC5vcy5CaW5kZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYXR0YWNoSW50ZXJmYWNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3duZXIiIHR5cGU9ImFuZHJvaWQub3MuSUludGVyZmFjZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzY3JpcHRvciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhckNhbGxpbmdJZGVudGl0eSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHVtcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZkIiB0eXBlPSJqYXZhLmlvLkZpbGVEZXNjcmlwdG9yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcmdzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHVtcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZkIiB0eXBlPSJqYXZhLmlvLkZpbGVEZXNjcmlwdG9yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3V0IiB0eXBlPSJqYXZhLmlvLlByaW50V3JpdGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcmdzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmx1c2hQZW5kaW5nQ29tbWFuZHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENhbGxpbmdQaWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2FsbGluZ1VpZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnRlcmZhY2VEZXNjcmlwdG9yIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0JpbmRlckFsaXZlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJqb2luVGhyZWFkUG9vbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGlua1RvRGVhdGgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWNpcGllbnQiIHR5cGU9ImFuZHJvaWQub3MuSUJpbmRlci5EZWF0aFJlY2lwaWVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblRyYW5zYWN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVwbHkiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZW1vdGVFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBpbmdCaW5kZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InF1ZXJ5TG9jYWxJbnRlcmZhY2UiCisgcmV0dXJuPSJhbmRyb2lkLm9zLklJbnRlcmZhY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc2NyaXB0b3IiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzdG9yZUNhbGxpbmdJZGVudGl0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRva2VuIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRyYW5zYWN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXBseSIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlJlbW90ZUV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5saW5rVG9EZWF0aCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlY2lwaWVudCIgdHlwZT0iYW5kcm9pZC5vcy5JQmluZGVyLkRlYXRoUmVjaXBpZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJ1aWxkIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCdWlsZCIKKyB0eXBlPSJhbmRyb2lkLm9zLkJ1aWxkIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iQk9BUkQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJCT09UTE9BREVSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQlJBTkQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDUFVfQUJJIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ1BVX0FCSTIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERVZJQ0UiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJESVNQTEFZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRklOR0VSUFJJTlQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIQVJEV0FSRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhPU1QiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1BTlVGQUNUVVJFUiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1PREVMIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJPRFVDVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJBRElPIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEFHUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRJTUUiCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVU5LTk9XTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt1bmtub3duJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVTRVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQnVpbGQuVkVSU0lPTiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCdWlsZC5WRVJTSU9OIgorIHR5cGU9ImFuZHJvaWQub3MuQnVpbGQuVkVSU0lPTiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9IkNPREVOQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU5DUkVNRU5UQUwiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRUxFQVNFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0RLIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTREtfSU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQnVpbGQuVkVSU0lPTl9DT0RFUyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCdWlsZC5WRVJTSU9OX0NPREVTIgorIHR5cGU9ImFuZHJvaWQub3MuQnVpbGQuVkVSU0lPTl9DT0RFUyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9IkJBU0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJBU0VfMV8xIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDVVBDQUtFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDVVJfREVWRUxPUE1FTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDAwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJET05VVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUNMQUlSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFQ0xBSVJfMF8xIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFQ0xBSVJfTVIxIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGUk9ZTyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJ1bmRsZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5DbG9uZWFibGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCdW5kbGUiCisgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCdW5kbGUiCisgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2FkZXIiIHR5cGU9ImphdmEubGFuZy5DbGFzc0xvYWRlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQnVuZGxlIgorIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FwYWNpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQnVuZGxlIgorIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbGVhciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbnRhaW5zS2V5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJvb2xlYW4iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Qm9vbGVhbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJvb2xlYW5BcnJheSIKKyByZXR1cm49ImJvb2xlYW5bXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJ1bmRsZSIKKyByZXR1cm49ImFuZHJvaWQub3MuQnVuZGxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Qnl0ZSIKKyByZXR1cm49ImJ5dGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCeXRlIgorIHJldHVybj0iamF2YS5sYW5nLkJ5dGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJieXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJ5dGVBcnJheSIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoYXIiCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hhciIKKyByZXR1cm49ImNoYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoYXJBcnJheSIKKyByZXR1cm49ImNoYXJbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoYXJTZXF1ZW5jZSIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDaGFyU2VxdWVuY2VBcnJheSIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2VbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoYXJTZXF1ZW5jZUFycmF5TGlzdCIKKyByZXR1cm49ImphdmEudXRpbC5BcnJheUxpc3QmbHQ7amF2YS5sYW5nLkNoYXJTZXF1ZW5jZSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREb3VibGUiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREb3VibGUiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RG91YmxlQXJyYXkiCisgcmV0dXJuPSJkb3VibGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZsb2F0IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGbG9hdCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmF1bHRWYWx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmxvYXRBcnJheSIKKyByZXR1cm49ImZsb2F0W10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW50QXJyYXkiCisgcmV0dXJuPSJpbnRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEludGVnZXJBcnJheUxpc3QiCisgcmV0dXJuPSJqYXZhLnV0aWwuQXJyYXlMaXN0Jmx0O2phdmEubGFuZy5JbnRlZ2VyJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvbmciCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9uZyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvbmdBcnJheSIKKyByZXR1cm49ImxvbmdbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmNlbGFibGUiCisgcmV0dXJuPSJUIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFyY2VsYWJsZUFycmF5IgorIHJldHVybj0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJjZWxhYmxlQXJyYXlMaXN0IgorIHJldHVybj0iamF2YS51dGlsLkFycmF5TGlzdCZsdDtUJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlcmlhbGl6YWJsZSIKKyByZXR1cm49ImphdmEuaW8uU2VyaWFsaXphYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2hvcnQiCisgcmV0dXJuPSJzaG9ydCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNob3J0IgorIHJldHVybj0ic2hvcnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJzaG9ydCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaG9ydEFycmF5IgorIHJldHVybj0ic2hvcnRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNwYXJzZVBhcmNlbGFibGVBcnJheSIKKyByZXR1cm49ImFuZHJvaWQudXRpbC5TcGFyc2VBcnJheSZsdDtUJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdHJpbmdBcnJheSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0cmluZ0FycmF5TGlzdCIKKyByZXR1cm49ImphdmEudXRpbC5BcnJheUxpc3QmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNGaWxlRGVzY3JpcHRvcnMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRW1wdHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImtleVNldCIKKyByZXR1cm49ImphdmEudXRpbC5TZXQmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0QWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFwIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRCb29sZWFuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRCb29sZWFuQXJyYXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJib29sZWFuW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0QnVuZGxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0Qnl0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJ5dGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0Qnl0ZUFycmF5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dENoYXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dENoYXJBcnJheSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRDaGFyU2VxdWVuY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dENoYXJTZXF1ZW5jZUFycmF5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dENoYXJTZXF1ZW5jZUFycmF5TGlzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEudXRpbC5BcnJheUxpc3QmbHQ7amF2YS5sYW5nLkNoYXJTZXF1ZW5jZSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0RG91YmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dERvdWJsZUFycmF5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZG91YmxlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0RmxvYXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRGbG9hdEFycmF5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRJbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0SW50QXJyYXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRJbnRlZ2VyQXJyYXlMaXN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS51dGlsLkFycmF5TGlzdCZsdDtqYXZhLmxhbmcuSW50ZWdlciZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0TG9uZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0TG9uZ0FycmF5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0ibG9uZ1tdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dFBhcmNlbGFibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0UGFyY2VsYWJsZUFycmF5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0UGFyY2VsYWJsZUFycmF5TGlzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEudXRpbC5BcnJheUxpc3QmbHQ7PyBleHRlbmRzIGFuZHJvaWQub3MuUGFyY2VsYWJsZSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0U2VyaWFsaXphYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0U2hvcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJzaG9ydCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRTaG9ydEFycmF5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0ic2hvcnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRTcGFyc2VQYXJjZWxhYmxlQXJyYXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJhbmRyb2lkLnV0aWwuU3BhcnNlQXJyYXkmbHQ7PyBleHRlbmRzIGFuZHJvaWQub3MuUGFyY2VsYWJsZSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0U3RyaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRTdHJpbmdBcnJheSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRTdHJpbmdBcnJheUxpc3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLnV0aWwuQXJyYXlMaXN0Jmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRGcm9tUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyY2VsIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2xhc3NMb2FkZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2FkZXIiIHR5cGU9ImphdmEubGFuZy5DbGFzc0xvYWRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJjZWwiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFTVBUWSIKKyB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29uZGl0aW9uVmFyaWFibGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbmRpdGlvblZhcmlhYmxlIgorIHR5cGU9ImFuZHJvaWQub3MuQ29uZGl0aW9uVmFyaWFibGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb25kaXRpb25WYXJpYWJsZSIKKyB0eXBlPSJhbmRyb2lkLm9zLkNvbmRpdGlvblZhcmlhYmxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJibG9jayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYmxvY2siCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lb3V0IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb3NlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb3VudERvd25UaW1lciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb3VudERvd25UaW1lciIKKyB0eXBlPSJhbmRyb2lkLm9zLkNvdW50RG93blRpbWVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWlsbGlzSW5GdXR1cmUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50RG93bkludGVydmFsIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2FuY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uRmluaXNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uVGljayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWlsbGlzVW50aWxGaW5pc2hlZCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydCIKKyByZXR1cm49ImFuZHJvaWQub3MuQ291bnREb3duVGltZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRlYWRPYmplY3RFeGNlcHRpb24iCisgZXh0ZW5kcz0iYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEZWFkT2JqZWN0RXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQub3MuRGVhZE9iamVjdEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEZWJ1ZyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY2hhbmdlRGVidWdQb3J0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkdW1wSHByb2ZEYXRhIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHVtcFNlcnZpY2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZkIiB0eXBlPSJqYXZhLmlvLkZpbGVEZXNjcmlwdG9yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcmdzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5hYmxlRW11bGF0b3JUcmFjZU91dHB1dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCaW5kZXJEZWF0aE9iamVjdENvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJpbmRlckxvY2FsT2JqZWN0Q291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QmluZGVyUHJveHlPYmplY3RDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCaW5kZXJSZWNlaXZlZFRyYW5zYWN0aW9ucyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QmluZGVyU2VudFRyYW5zYWN0aW9ucyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R2xvYmFsQWxsb2NDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdsb2JhbEFsbG9jU2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdsb2JhbENsYXNzSW5pdENvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R2xvYmFsQ2xhc3NJbml0VGltZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdsb2JhbEV4dGVybmFsQWxsb2NDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdsb2JhbEV4dGVybmFsQWxsb2NTaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R2xvYmFsRXh0ZXJuYWxGcmVlZENvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R2xvYmFsRXh0ZXJuYWxGcmVlZFNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRHbG9iYWxGcmVlZENvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R2xvYmFsRnJlZWRTaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R2xvYmFsR2NJbnZvY2F0aW9uQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2FkZWRDbGFzc0NvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWVtb3J5SW5mbyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZW1vcnlJbmZvIiB0eXBlPSJhbmRyb2lkLm9zLkRlYnVnLk1lbW9yeUluZm8iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmF0aXZlSGVhcEFsbG9jYXRlZFNpemUiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYXRpdmVIZWFwRnJlZVNpemUiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYXRpdmVIZWFwU2l6ZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRocmVhZEFsbG9jQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaHJlYWRBbGxvY1NpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaHJlYWRFeHRlcm5hbEFsbG9jQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaHJlYWRFeHRlcm5hbEFsbG9jU2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRocmVhZEdjSW52b2NhdGlvbkNvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNEZWJ1Z2dlckNvbm5lY3RlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmludExvYWRlZENsYXNzZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXRBbGxDb3VudHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXRHbG9iYWxBbGxvY0NvdW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc2V0R2xvYmFsQWxsb2NTaXplIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc2V0R2xvYmFsQ2xhc3NJbml0Q291bnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXRHbG9iYWxDbGFzc0luaXRUaW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc2V0R2xvYmFsRXh0ZXJuYWxBbGxvY0NvdW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc2V0R2xvYmFsRXh0ZXJuYWxBbGxvY1NpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXRHbG9iYWxFeHRlcm5hbEZyZWVkQ291bnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXRHbG9iYWxFeHRlcm5hbEZyZWVkU2l6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldEdsb2JhbEZyZWVkQ291bnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXRHbG9iYWxGcmVlZFNpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXRHbG9iYWxHY0ludm9jYXRpb25Db3VudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldFRocmVhZEFsbG9jQ291bnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXRUaHJlYWRBbGxvY1NpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXRUaHJlYWRFeHRlcm5hbEFsbG9jQ291bnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXRUaHJlYWRFeHRlcm5hbEFsbG9jU2l6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldFRocmVhZEdjSW52b2NhdGlvbkNvdW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFsbG9jYXRpb25MaW1pdCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaW1pdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEdsb2JhbEFsbG9jYXRpb25MaW1pdCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaW1pdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0QWxsb2NDb3VudGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydE1ldGhvZFRyYWNpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRNZXRob2RUcmFjaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0cmFjZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRNZXRob2RUcmFjaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0cmFjZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlclNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydE1ldGhvZFRyYWNpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRyYWNlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyU2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0TmF0aXZlVHJhY2luZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdG9wQWxsb2NDb3VudGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdG9wTWV0aG9kVHJhY2luZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdG9wTmF0aXZlVHJhY2luZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0aHJlYWRDcHVUaW1lTmFub3MiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id2FpdEZvckRlYnVnZ2VyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndhaXRpbmdGb3JEZWJ1Z2dlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IlNIT1dfQ0xBU1NMT0FERVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNIT1dfRlVMTF9ERVRBSUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNIT1dfSU5JVElBTElaRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRSQUNFX0NPVU5UX0FMTE9DUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRlYnVnLkluc3RydWN0aW9uQ291bnQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGVidWcuSW5zdHJ1Y3Rpb25Db3VudCIKKyB0eXBlPSJhbmRyb2lkLm9zLkRlYnVnLkluc3RydWN0aW9uQ291bnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY29sbGVjdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xvYmFsTWV0aG9kSW52b2NhdGlvbnMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xvYmFsVG90YWwiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXRBbmRTdGFydCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRGVidWcuTWVtb3J5SW5mbyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGVidWcuTWVtb3J5SW5mbyIKKyB0eXBlPSJhbmRyb2lkLm9zLkRlYnVnLk1lbW9yeUluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUb3RhbFByaXZhdGVEaXJ0eSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUb3RhbFBzcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUb3RhbFNoYXJlZERpcnR5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRGcm9tUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRhbHZpa1ByaXZhdGVEaXJ0eSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkYWx2aWtQc3MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGFsdmlrU2hhcmVkRGlydHkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibmF0aXZlUHJpdmF0ZURpcnR5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im5hdGl2ZVBzcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJuYXRpdmVTaGFyZWREaXJ0eSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJvdGhlclByaXZhdGVEaXJ0eSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJvdGhlclBzcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJvdGhlclNoYXJlZERpcnR5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEcm9wQm94TWFuYWdlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRHJvcEJveE1hbmFnZXIiCisgdHlwZT0iYW5kcm9pZC5vcy5Ecm9wQm94TWFuYWdlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGREYXRhIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkRmlsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsZSIgdHlwZT0iamF2YS5pby5GaWxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRUZXh0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5leHRFbnRyeSIKKyByZXR1cm49ImFuZHJvaWQub3MuRHJvcEJveE1hbmFnZXIuRW50cnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNlYyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1RhZ0VuYWJsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJJU19FTVBUWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSVNfR1pJUFBFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSVNfVEVYVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRyb3BCb3hNYW5hZ2VyLkVudHJ5IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEcm9wQm94TWFuYWdlci5FbnRyeSIKKyB0eXBlPSJhbmRyb2lkLm9zLkRyb3BCb3hNYW5hZ2VyLkVudHJ5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaWxsaXMiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRyb3BCb3hNYW5hZ2VyLkVudHJ5IgorIHR5cGU9ImFuZHJvaWQub3MuRHJvcEJveE1hbmFnZXIuRW50cnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbGxpcyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRHJvcEJveE1hbmFnZXIuRW50cnkiCisgdHlwZT0iYW5kcm9pZC5vcy5Ecm9wQm94TWFuYWdlci5FbnRyeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWlsbGlzIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRyb3BCb3hNYW5hZ2VyLkVudHJ5IgorIHR5cGU9ImFuZHJvaWQub3MuRHJvcEJveE1hbmFnZXIuRW50cnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbGxpcyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxGaWxlRGVzY3JpcHRvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRHJvcEJveE1hbmFnZXIuRW50cnkiCisgdHlwZT0iYW5kcm9pZC5vcy5Ecm9wQm94TWFuYWdlci5FbnRyeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWlsbGlzIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJqYXZhLmlvLkZpbGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmxhZ3MiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5wdXRTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUYWciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRleHQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXhCeXRlcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRpbWVNaWxsaXMiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRW52aXJvbm1lbnQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkVudmlyb25tZW50IgorIHR5cGU9ImFuZHJvaWQub3MuRW52aXJvbm1lbnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0RGF0YURpcmVjdG9yeSIKKyByZXR1cm49ImphdmEuaW8uRmlsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERvd25sb2FkQ2FjaGVEaXJlY3RvcnkiCisgcmV0dXJuPSJqYXZhLmlvLkZpbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeHRlcm5hbFN0b3JhZ2VEaXJlY3RvcnkiCisgcmV0dXJuPSJqYXZhLmlvLkZpbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeHRlcm5hbFN0b3JhZ2VQdWJsaWNEaXJlY3RvcnkiCisgcmV0dXJuPSJqYXZhLmlvLkZpbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeHRlcm5hbFN0b3JhZ2VTdGF0ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSb290RGlyZWN0b3J5IgorIHJldHVybj0iamF2YS5pby5GaWxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJESVJFQ1RPUllfQUxBUk1TIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRJUkVDVE9SWV9EQ0lNIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRJUkVDVE9SWV9ET1dOTE9BRFMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRElSRUNUT1JZX01PVklFUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJESVJFQ1RPUllfTVVTSUMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRElSRUNUT1JZX05PVElGSUNBVElPTlMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRElSRUNUT1JZX1BJQ1RVUkVTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRJUkVDVE9SWV9QT0RDQVNUUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJESVJFQ1RPUllfUklOR1RPTkVTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1FRElBX0JBRF9SRU1PVkFMIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2JhZF9yZW1vdmFsJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1FRElBX0NIRUNLSU5HIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2NoZWNraW5nJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1FRElBX01PVU5URUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bW91bnRlZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNRURJQV9NT1VOVEVEX1JFQURfT05MWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDttb3VudGVkX3JvJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1FRElBX05PRlMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bm9mcyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNRURJQV9SRU1PVkVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3JlbW92ZWQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUVESUFfU0hBUkVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3NoYXJlZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNRURJQV9VTk1PVU5UQUJMRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt1bm1vdW50YWJsZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNRURJQV9VTk1PVU5URUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dW5tb3VudGVkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJGaWxlT2JzZXJ2ZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRmlsZU9ic2VydmVyIgorIHR5cGU9ImFuZHJvaWQub3MuRmlsZU9ic2VydmVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRmlsZU9ic2VydmVyIgorIHR5cGU9ImFuZHJvaWQub3MuRmlsZU9ic2VydmVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFzayIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ib25FdmVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydFdhdGNoaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdG9wV2F0Y2hpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQUNDRVNTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBTExfRVZFTlRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDA5NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBVFRSSUIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNMT1NFX05PV1JJVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDTE9TRV9XUklURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ1JFQVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFTEVURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUxFVEVfU0VMRiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTU9ESUZZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNT1ZFRF9GUk9NIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTU9WRURfVE8iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTU9WRV9TRUxGIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjA0OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUEVOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkhhbmRsZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkhhbmRsZXIiCisgdHlwZT0iYW5kcm9pZC5vcy5IYW5kbGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSGFuZGxlciIKKyB0eXBlPSJhbmRyb2lkLm9zLkhhbmRsZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsYmFjayIgdHlwZT0iYW5kcm9pZC5vcy5IYW5kbGVyLkNhbGxiYWNrIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIYW5kbGVyIgorIHR5cGU9ImFuZHJvaWQub3MuSGFuZGxlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxvb3BlciIgdHlwZT0iYW5kcm9pZC5vcy5Mb29wZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkhhbmRsZXIiCisgdHlwZT0iYW5kcm9pZC5vcy5IYW5kbGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9vcGVyIiB0eXBlPSJhbmRyb2lkLm9zLkxvb3BlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsbGJhY2siIHR5cGU9ImFuZHJvaWQub3MuSGFuZGxlci5DYWxsYmFjayI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRpc3BhdGNoTWVzc2FnZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iYW5kcm9pZC5vcy5NZXNzYWdlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImR1bXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InB3IiB0eXBlPSJhbmRyb2lkLnV0aWwuUHJpbnRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlZml4IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvb3BlciIKKyByZXR1cm49ImFuZHJvaWQub3MuTG9vcGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFuZGxlTWVzc2FnZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iYW5kcm9pZC5vcy5NZXNzYWdlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc01lc3NhZ2VzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aGF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzTWVzc2FnZXMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndoYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9idGFpbk1lc3NhZ2UiCisgcmV0dXJuPSJhbmRyb2lkLm9zLk1lc3NhZ2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvYnRhaW5NZXNzYWdlIgorIHJldHVybj0iYW5kcm9pZC5vcy5NZXNzYWdlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndoYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvYnRhaW5NZXNzYWdlIgorIHJldHVybj0iYW5kcm9pZC5vcy5NZXNzYWdlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndoYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9idGFpbk1lc3NhZ2UiCisgcmV0dXJuPSJhbmRyb2lkLm9zLk1lc3NhZ2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hhdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcmcxIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZzIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvYnRhaW5NZXNzYWdlIgorIHJldHVybj0iYW5kcm9pZC5vcy5NZXNzYWdlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndoYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJnMSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcmcyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9iaiIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwb3N0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9zdEF0RnJvbnRPZlF1ZXVlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9zdEF0VGltZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iamF2YS5sYW5nLlJ1bm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cHRpbWVNaWxsaXMiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9zdEF0VGltZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iamF2YS5sYW5nLlJ1bm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b2tlbiIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXB0aW1lTWlsbGlzIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBvc3REZWxheWVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbGF5TWlsbGlzIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZUNhbGxiYWNrcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iamF2YS5sYW5nLlJ1bm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZUNhbGxiYWNrcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iamF2YS5sYW5nLlJ1bm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b2tlbiIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVDYWxsYmFja3NBbmRNZXNzYWdlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idG9rZW4iIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlTWVzc2FnZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndoYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVNZXNzYWdlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hhdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VuZEVtcHR5TWVzc2FnZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hhdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmRFbXB0eU1lc3NhZ2VBdFRpbWUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndoYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXB0aW1lTWlsbGlzIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmRFbXB0eU1lc3NhZ2VEZWxheWVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aGF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbGF5TWlsbGlzIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmRNZXNzYWdlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImFuZHJvaWQub3MuTWVzc2FnZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kTWVzc2FnZUF0RnJvbnRPZlF1ZXVlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImFuZHJvaWQub3MuTWVzc2FnZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kTWVzc2FnZUF0VGltZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iYW5kcm9pZC5vcy5NZXNzYWdlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cHRpbWVNaWxsaXMiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VuZE1lc3NhZ2VEZWxheWVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImFuZHJvaWQub3MuTWVzc2FnZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVsYXlNaWxsaXMiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkhhbmRsZXIuQ2FsbGJhY2siCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImhhbmRsZU1lc3NhZ2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iYW5kcm9pZC5vcy5NZXNzYWdlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJIYW5kbGVyVGhyZWFkIgorIGV4dGVuZHM9ImphdmEubGFuZy5UaHJlYWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIYW5kbGVyVGhyZWFkIgorIHR5cGU9ImFuZHJvaWQub3MuSGFuZGxlclRocmVhZCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkhhbmRsZXJUaHJlYWQiCisgdHlwZT0iYW5kcm9pZC5vcy5IYW5kbGVyVGhyZWFkIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJpb3JpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldExvb3BlciIKKyByZXR1cm49ImFuZHJvaWQub3MuTG9vcGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRocmVhZElkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uTG9vcGVyUHJlcGFyZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InF1aXQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJJQmluZGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZHVtcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmQiIHR5cGU9ImphdmEuaW8uRmlsZURlc2NyaXB0b3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZ3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUmVtb3RlRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnRlcmZhY2VEZXNjcmlwdG9yIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJSZW1vdGVFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQmluZGVyQWxpdmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGlua1RvRGVhdGgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlY2lwaWVudCIgdHlwZT0iYW5kcm9pZC5vcy5JQmluZGVyLkRlYXRoUmVjaXBpZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZW1vdGVFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBpbmdCaW5kZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVlcnlMb2NhbEludGVyZmFjZSIKKyByZXR1cm49ImFuZHJvaWQub3MuSUludGVyZmFjZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXNjcmlwdG9yIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRyYW5zYWN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXBseSIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlJlbW90ZUV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5saW5rVG9EZWF0aCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVjaXBpZW50IiB0eXBlPSJhbmRyb2lkLm9zLklCaW5kZXIuRGVhdGhSZWNpcGllbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJEVU1QX1RSQU5TQUNUSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTU5ODMxMTc2MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGSVJTVF9DQUxMX1RSQU5TQUNUSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX09ORVdBWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU5URVJGQUNFX1RSQU5TQUNUSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTU5ODk2ODkwMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMQVNUX0NBTExfVFJBTlNBQ1RJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjc3NzIxNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQSU5HX1RSQU5TQUNUSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTU5OTA5ODQzOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJJQmluZGVyLkRlYXRoUmVjaXBpZW50IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJiaW5kZXJEaWVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iSUludGVyZmFjZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImFzQmluZGVyIgorIHJldHVybj0iYW5kcm9pZC5vcy5JQmluZGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9Ikxvb3BlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImR1bXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwdyIgdHlwZT0iYW5kcm9pZC51dGlsLlByaW50ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByZWZpeCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYWluTG9vcGVyIgorIHJldHVybj0iYW5kcm9pZC5vcy5Mb29wZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGhyZWFkIgorIHJldHVybj0iamF2YS5sYW5nLlRocmVhZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb29wIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibXlMb29wZXIiCisgcmV0dXJuPSJhbmRyb2lkLm9zLkxvb3BlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibXlRdWV1ZSIKKyByZXR1cm49ImFuZHJvaWQub3MuTWVzc2FnZVF1ZXVlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmVwYXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJlcGFyZU1haW5Mb29wZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJxdWl0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNZXNzYWdlTG9nZ2luZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByaW50ZXIiIHR5cGU9ImFuZHJvaWQudXRpbC5QcmludGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik1lbW9yeUZpbGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1lbW9yeUZpbGUiCisgdHlwZT0iYW5kcm9pZC5vcy5NZW1vcnlGaWxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWxsb3dQdXJnaW5nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGxvd1B1cmdpbmciIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb3NlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnB1dFN0cmVhbSIKKyByZXR1cm49ImphdmEuaW8uSW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T3V0cHV0U3RyZWFtIgorIHJldHVybj0iamF2YS5pby5PdXRwdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNQdXJnaW5nQWxsb3dlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRCeXRlcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNyY09mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0T2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlQnl0ZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjT2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3RPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTWVzc2FnZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTWVzc2FnZSIKKyB0eXBlPSJhbmRyb2lkLm9zLk1lc3NhZ2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY29weUZyb20iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvIiB0eXBlPSJhbmRyb2lkLm9zLk1lc3NhZ2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDYWxsYmFjayIKKyByZXR1cm49ImphdmEubGFuZy5SdW5uYWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREYXRhIgorIHJldHVybj0iYW5kcm9pZC5vcy5CdW5kbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGFyZ2V0IgorIHJldHVybj0iYW5kcm9pZC5vcy5IYW5kbGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdoZW4iCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9idGFpbiIKKyByZXR1cm49ImFuZHJvaWQub3MuTWVzc2FnZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9idGFpbiIKKyByZXR1cm49ImFuZHJvaWQub3MuTWVzc2FnZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnIiB0eXBlPSJhbmRyb2lkLm9zLk1lc3NhZ2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib2J0YWluIgorIHJldHVybj0iYW5kcm9pZC5vcy5NZXNzYWdlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImgiIHR5cGU9ImFuZHJvaWQub3MuSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvYnRhaW4iCisgcmV0dXJuPSJhbmRyb2lkLm9zLk1lc3NhZ2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaCIgdHlwZT0iYW5kcm9pZC5vcy5IYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsYmFjayIgdHlwZT0iamF2YS5sYW5nLlJ1bm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9idGFpbiIKKyByZXR1cm49ImFuZHJvaWQub3MuTWVzc2FnZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoIiB0eXBlPSJhbmRyb2lkLm9zLkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvYnRhaW4iCisgcmV0dXJuPSJhbmRyb2lkLm9zLk1lc3NhZ2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaCIgdHlwZT0iYW5kcm9pZC5vcy5IYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aGF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9iaiIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvYnRhaW4iCisgcmV0dXJuPSJhbmRyb2lkLm9zLk1lc3NhZ2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaCIgdHlwZT0iYW5kcm9pZC5vcy5IYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aGF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZzEiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJnMiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9idGFpbiIKKyByZXR1cm49ImFuZHJvaWQub3MuTWVzc2FnZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoIiB0eXBlPSJhbmRyb2lkLm9zLkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJnMSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcmcyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9iaiIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwZWVrRGF0YSIKKyByZXR1cm49ImFuZHJvaWQub3MuQnVuZGxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlY3ljbGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmRUb1RhcmdldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGF0YSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRhcmdldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iYW5kcm9pZC5vcy5IYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYXJnMSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhcmcyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im9iaiIKKyB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icmVwbHlUbyIKKyB0eXBlPSJhbmRyb2lkLm9zLk1lc3NlbmdlciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IndoYXQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik1lc3NhZ2VRdWV1ZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImFkZElkbGVIYW5kbGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJhbmRyb2lkLm9zLk1lc3NhZ2VRdWV1ZS5JZGxlSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVJZGxlSGFuZGxlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlciIgdHlwZT0iYW5kcm9pZC5vcy5NZXNzYWdlUXVldWUuSWRsZUhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ik1lc3NhZ2VRdWV1ZS5JZGxlSGFuZGxlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0icXVldWVJZGxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJNZXNzZW5nZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1lc3NlbmdlciIKKyB0eXBlPSJhbmRyb2lkLm9zLk1lc3NlbmdlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iYW5kcm9pZC5vcy5IYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNZXNzZW5nZXIiCisgdHlwZT0iYW5kcm9pZC5vcy5NZXNzZW5nZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImFuZHJvaWQub3MuSUJpbmRlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QmluZGVyIgorIHJldHVybj0iYW5kcm9pZC5vcy5JQmluZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRNZXNzZW5nZXJPck51bGxGcm9tUGFyY2VsIgorIHJldHVybj0iYW5kcm9pZC5vcy5NZXNzZW5nZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJhbmRyb2lkLm9zLk1lc3NhZ2UiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlJlbW90ZUV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVNZXNzZW5nZXJPck51bGxUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2VuZ2VyIiB0eXBlPSJhbmRyb2lkLm9zLk1lc3NlbmdlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBhcmNlbCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYXBwZW5kRnJvbSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJjZWwiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlQmluZGVyQXJyYXkiCisgcmV0dXJuPSJhbmRyb2lkLm9zLklCaW5kZXJbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUJpbmRlckFycmF5TGlzdCIKKyByZXR1cm49ImphdmEudXRpbC5BcnJheUxpc3QmbHQ7YW5kcm9pZC5vcy5JQmluZGVyJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUJvb2xlYW5BcnJheSIKKyByZXR1cm49ImJvb2xlYW5bXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUJ5dGVBcnJheSIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlQ2hhckFycmF5IgorIHJldHVybj0iY2hhcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlRG91YmxlQXJyYXkiCisgcmV0dXJuPSJkb3VibGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUZsb2F0QXJyYXkiCisgcmV0dXJuPSJmbG9hdFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlSW50QXJyYXkiCisgcmV0dXJuPSJpbnRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUxvbmdBcnJheSIKKyByZXR1cm49ImxvbmdbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVN0cmluZ0FycmF5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlU3RyaW5nQXJyYXlMaXN0IgorIHJldHVybj0iamF2YS51dGlsLkFycmF5TGlzdCZsdDtqYXZhLmxhbmcuU3RyaW5nJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVR5cGVkQXJyYXkiCisgcmV0dXJuPSJUW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3ImbHQ7VCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlVHlwZWRBcnJheUxpc3QiCisgcmV0dXJuPSJqYXZhLnV0aWwuQXJyYXlMaXN0Jmx0O1QmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yJmx0O1QmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRhdGFBdmFpbCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGF0YUNhcGFjaXR5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkYXRhUG9zaXRpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRhdGFTaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmZvcmNlSW50ZXJmYWNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVyZmFjZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzRmlsZURlc2NyaXB0b3JzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWFyc2hhbGwiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9idGFpbiIKKyByZXR1cm49ImFuZHJvaWQub3MuUGFyY2VsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib2J0YWluIgorIHJldHVybj0iYW5kcm9pZC5vcy5QYXJjZWwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkQXJyYXkiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0W10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9hZGVyIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NMb2FkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZEFycmF5TGlzdCIKKyByZXR1cm49ImphdmEudXRpbC5BcnJheUxpc3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9hZGVyIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NMb2FkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZEJpbmRlckFycmF5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImFuZHJvaWQub3MuSUJpbmRlcltdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRCaW5kZXJMaXN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0IiB0eXBlPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLm9zLklCaW5kZXImZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRCb29sZWFuQXJyYXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iYm9vbGVhbltdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRCdW5kbGUiCisgcmV0dXJuPSJhbmRyb2lkLm9zLkJ1bmRsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRCdW5kbGUiCisgcmV0dXJuPSJhbmRyb2lkLm9zLkJ1bmRsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2FkZXIiIHR5cGU9ImphdmEubGFuZy5DbGFzc0xvYWRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkQnl0ZSIKKyByZXR1cm49ImJ5dGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkQnl0ZUFycmF5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkQ2hhckFycmF5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkRG91YmxlIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkRG91YmxlQXJyYXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iZG91YmxlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZEV4Y2VwdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkRXhjZXB0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkRmlsZURlc2NyaXB0b3IiCisgcmV0dXJuPSJhbmRyb2lkLm9zLlBhcmNlbEZpbGVEZXNjcmlwdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZEZsb2F0IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRGbG9hdEFycmF5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZEhhc2hNYXAiCisgcmV0dXJuPSJqYXZhLnV0aWwuSGFzaE1hcCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2FkZXIiIHR5cGU9ImphdmEubGFuZy5DbGFzc0xvYWRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkSW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkSW50QXJyYXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZExpc3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dFZhbCIgdHlwZT0iamF2YS51dGlsLkxpc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvYWRlciIgdHlwZT0iamF2YS5sYW5nLkNsYXNzTG9hZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRMb25nIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZExvbmdBcnJheSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJsb25nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZE1hcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0VmFsIiB0eXBlPSJqYXZhLnV0aWwuTWFwIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2FkZXIiIHR5cGU9ImphdmEubGFuZy5DbGFzc0xvYWRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkUGFyY2VsYWJsZSIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9hZGVyIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NMb2FkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZFBhcmNlbGFibGVBcnJheSIKKyByZXR1cm49ImFuZHJvaWQub3MuUGFyY2VsYWJsZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvYWRlciIgdHlwZT0iamF2YS5sYW5nLkNsYXNzTG9hZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRTZXJpYWxpemFibGUiCisgcmV0dXJuPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRTcGFyc2VBcnJheSIKKyByZXR1cm49ImFuZHJvaWQudXRpbC5TcGFyc2VBcnJheSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2FkZXIiIHR5cGU9ImphdmEubGFuZy5DbGFzc0xvYWRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkU3BhcnNlQm9vbGVhbkFycmF5IgorIHJldHVybj0iYW5kcm9pZC51dGlsLlNwYXJzZUJvb2xlYW5BcnJheSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkU3RyaW5nQXJyYXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRTdHJpbmdMaXN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0IiB0eXBlPSJqYXZhLnV0aWwuTGlzdCZsdDtqYXZhLmxhbmcuU3RyaW5nJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkU3Ryb25nQmluZGVyIgorIHJldHVybj0iYW5kcm9pZC5vcy5JQmluZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkVHlwZWRBcnJheSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJUW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yJmx0O1QmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRUeXBlZExpc3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3QiIHR5cGU9ImphdmEudXRpbC5MaXN0Jmx0O1QmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciZsdDtUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkVmFsdWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvYWRlciIgdHlwZT0iamF2YS5sYW5nLkNsYXNzTG9hZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlY3ljbGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGF0YUNhcGFjaXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREYXRhUG9zaXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGF0YVNpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVubWFyc2hhbGwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZlc3QiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVBcnJheSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVCaW5kZXJBcnJheSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJhbmRyb2lkLm9zLklCaW5kZXJbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUJpbmRlckxpc3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5vcy5JQmluZGVyJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUJvb2xlYW5BcnJheSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJib29sZWFuW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVCdW5kbGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVCeXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImJ5dGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVCeXRlQXJyYXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUJ5dGVBcnJheSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVDaGFyQXJyYXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlRG91YmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlRG91YmxlQXJyYXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iZG91YmxlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVFeGNlcHRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImUiIHR5cGU9ImphdmEubGFuZy5FeGNlcHRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVGaWxlRGVzY3JpcHRvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImphdmEuaW8uRmlsZURlc2NyaXB0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVGbG9hdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlRmxvYXRBcnJheSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlSW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlSW50QXJyYXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVJbnRlcmZhY2VUb2tlbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlcmZhY2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlTGlzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJqYXZhLnV0aWwuTGlzdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUxvbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlTG9uZ0FycmF5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImxvbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZU1hcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJqYXZhLnV0aWwuTWFwIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlTm9FeGNlcHRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVQYXJjZWxhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmNlbGFibGVGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlUGFyY2VsYWJsZUFycmF5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iVFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJjZWxhYmxlRmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVNlcmlhbGl6YWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVTcGFyc2VBcnJheSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJhbmRyb2lkLnV0aWwuU3BhcnNlQXJyYXkmbHQ7amF2YS5sYW5nLk9iamVjdCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVTcGFyc2VCb29sZWFuQXJyYXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iYW5kcm9pZC51dGlsLlNwYXJzZUJvb2xlYW5BcnJheSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVN0cmluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVTdHJpbmdBcnJheSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVTdHJpbmdMaXN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImphdmEudXRpbC5MaXN0Jmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlU3Ryb25nQmluZGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iYW5kcm9pZC5vcy5JQmluZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlU3Ryb25nSW50ZXJmYWNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImFuZHJvaWQub3MuSUludGVyZmFjZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVR5cGVkQXJyYXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iVFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJjZWxhYmxlRmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVR5cGVkTGlzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJqYXZhLnV0aWwuTGlzdCZsdDtUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVZhbHVlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iU1RSSU5HX0NSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBhcmNlbEZpbGVEZXNjcmlwdG9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGFyY2VsRmlsZURlc2NyaXB0b3IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxGaWxlRGVzY3JpcHRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc2NyaXB0b3IiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsRmlsZURlc2NyaXB0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZnJvbVNvY2tldCIKKyByZXR1cm49ImFuZHJvaWQub3MuUGFyY2VsRmlsZURlc2NyaXB0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic29ja2V0IiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmlsZURlc2NyaXB0b3IiCisgcmV0dXJuPSJqYXZhLmlvLkZpbGVEZXNjcmlwdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0YXRTaXplIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wZW4iCisgcmV0dXJuPSJhbmRyb2lkLm9zLlBhcmNlbEZpbGVEZXNjcmlwdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGUiIHR5cGU9ImphdmEuaW8uRmlsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJGaWxlTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNT0RFX0FQUEVORCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzNTU0NDMyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1PREVfQ1JFQVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTM0MjE3NzI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1PREVfUkVBRF9PTkxZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjY4NDM1NDU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1PREVfUkVBRF9XUklURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgwNTMwNjM2OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNT0RFX1RSVU5DQVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjcxMDg4NjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTU9ERV9XT1JMRF9SRUFEQUJMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTU9ERV9XT1JMRF9XUklURUFCTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1PREVfV1JJVEVfT05MWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUzNjg3MDkxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUGFyY2VsRmlsZURlc2NyaXB0b3IuQXV0b0Nsb3NlSW5wdXRTdHJlYW0iCisgZXh0ZW5kcz0iamF2YS5pby5GaWxlSW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBhcmNlbEZpbGVEZXNjcmlwdG9yLkF1dG9DbG9zZUlucHV0U3RyZWFtIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsRmlsZURlc2NyaXB0b3IuQXV0b0Nsb3NlSW5wdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxGaWxlRGVzY3JpcHRvciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBhcmNlbEZpbGVEZXNjcmlwdG9yLkF1dG9DbG9zZU91dHB1dFN0cmVhbSIKKyBleHRlbmRzPSJqYXZhLmlvLkZpbGVPdXRwdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBhcmNlbEZpbGVEZXNjcmlwdG9yLkF1dG9DbG9zZU91dHB1dFN0cmVhbSIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbEZpbGVEZXNjcmlwdG9yLkF1dG9DbG9zZU91dHB1dFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZkIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbEZpbGVEZXNjcmlwdG9yIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUGFyY2VsRm9ybWF0RXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGFyY2VsRm9ybWF0RXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsRm9ybWF0RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGFyY2VsRm9ybWF0RXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsRm9ybWF0RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVhc29uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUGFyY2VsVXVpZCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGFyY2VsVXVpZCIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbFV1aWQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1dWlkIiB0eXBlPSJqYXZhLnV0aWwuVVVJRCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZnJvbVN0cmluZyIKKyByZXR1cm49ImFuZHJvaWQub3MuUGFyY2VsVXVpZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1dWlkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFV1aWQiCisgcmV0dXJuPSJqYXZhLnV0aWwuVVVJRCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iUGFyY2VsYWJsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRTX0ZJTEVfREVTQ1JJUFRPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEFSQ0VMQUJMRV9XUklURV9SRVRVUk5fVkFMVUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlBhcmNlbGFibGUuQ3JlYXRvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY3JlYXRlRnJvbVBhcmNlbCIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdBcnJheSIKKyByZXR1cm49IlRbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlBhdHRlcm5NYXRjaGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGF0dGVybk1hdGNoZXIiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXR0ZXJuTWF0Y2hlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdHRlcm4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGF0dGVybk1hdGNoZXIiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXR0ZXJuTWF0Y2hlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhdGgiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHlwZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1hdGNoIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEFUVEVSTl9MSVRFUkFMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQQVRURVJOX1BSRUZJWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEFUVEVSTl9TSU1QTEVfR0xPQiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBvd2VyTWFuYWdlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdvVG9TbGVlcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTY3JlZW5PbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3V2FrZUxvY2siCisgcmV0dXJuPSJhbmRyb2lkLm9zLlBvd2VyTWFuYWdlci5XYWtlTG9jayIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGFnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYm9vdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlYXNvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1c2VyQWN0aXZpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aGVuIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJub0NoYW5nZUxpZ2h0cyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkFDUVVJUkVfQ0FVU0VTX1dBS0VVUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI2ODQzNTQ1NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGVUxMX1dBS0VfTE9DSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9OX0FGVEVSX1JFTEVBU0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MzY4NzA5MTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEFSVElBTF9XQUtFX0xPQ0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDUkVFTl9CUklHSFRfV0FLRV9MT0NLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NSRUVOX0RJTV9XQUtFX0xPQ0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQb3dlck1hbmFnZXIuV2FrZUxvY2siCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJhY3F1aXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhY3F1aXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0hlbGQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbGVhc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJlZmVyZW5jZUNvdW50ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQcm9jZXNzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcm9jZXNzIgorIHR5cGU9ImFuZHJvaWQub3MuUHJvY2VzcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRFbGFwc2VkQ3B1VGltZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R2lkRm9yTmFtZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaHJlYWRQcmlvcml0eSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVaWRGb3JOYW1lIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImtpbGxQcm9jZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im15UGlkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im15VGlkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im15VWlkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmRTaWduYWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2lnbmFsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGhyZWFkUHJpb3JpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJpb3JpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTZWN1cml0eUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLlNlY3VyaXR5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRocmVhZFByaW9yaXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJpb3JpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTZWN1cml0eUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLlNlY3VyaXR5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzUHJvY2Vzc2VzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkJMVUVUT09USF9HSUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMDAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZJUlNUX0FQUExJQ0FUSU9OX1VJRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMDAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxBU1RfQVBQTElDQVRJT05fVUlEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOTk5OTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEhPTkVfVUlEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAwMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTSUdOQUxfS0lMTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0lHTkFMX1FVSVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNJR05BTF9VU1IxIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1lTVEVNX1VJRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEhSRUFEX1BSSU9SSVRZX0FVRElPIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRIUkVBRF9QUklPUklUWV9CQUNLR1JPVU5EIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEhSRUFEX1BSSU9SSVRZX0RFRkFVTFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRIUkVBRF9QUklPUklUWV9ESVNQTEFZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEhSRUFEX1BSSU9SSVRZX0ZPUkVHUk9VTkQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUSFJFQURfUFJJT1JJVFlfTEVTU19GQVZPUkFCTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRIUkVBRF9QUklPUklUWV9MT1dFU1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUSFJFQURfUFJJT1JJVFlfTU9SRV9GQVZPUkFCTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUSFJFQURfUFJJT1JJVFlfVVJHRU5UX0FVRElPIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTE5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRIUkVBRF9QUklPUklUWV9VUkdFTlRfRElTUExBWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii04IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSZWNvdmVyeVN5c3RlbSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVjb3ZlcnlTeXN0ZW0iCisgdHlwZT0iYW5kcm9pZC5vcy5SZWNvdmVyeVN5c3RlbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJpbnN0YWxsUGFja2FnZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VGaWxlIiB0eXBlPSJqYXZhLmlvLkZpbGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYm9vdFdpcGVVc2VyRGF0YSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZlcmlmeVBhY2thZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VGaWxlIiB0eXBlPSJqYXZhLmlvLkZpbGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLm9zLlJlY292ZXJ5U3lzdGVtLlByb2dyZXNzTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRldmljZUNlcnRzWmlwRmlsZSIgdHlwZT0iamF2YS5pby5GaWxlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJHZW5lcmFsU2VjdXJpdHlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuR2VuZXJhbFNlY3VyaXR5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iUmVjb3ZlcnlTeXN0ZW0uUHJvZ3Jlc3NMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25Qcm9ncmVzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvZ3Jlc3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iUmVtb3RlQ2FsbGJhY2tMaXN0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZW1vdGVDYWxsYmFja0xpc3QiCisgdHlwZT0iYW5kcm9pZC5vcy5SZW1vdGVDYWxsYmFja0xpc3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYmVnaW5Ccm9hZGNhc3QiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmluaXNoQnJvYWRjYXN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCcm9hZGNhc3RDb29raWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJyb2FkY2FzdEl0ZW0iCisgcmV0dXJuPSJFIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImtpbGwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ2FsbGJhY2tEaWVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsbGJhY2siIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DYWxsYmFja0RpZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsYmFjayIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29va2llIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlZ2lzdGVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsbGJhY2siIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVnaXN0ZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsYmFjayIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29va2llIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVucmVnaXN0ZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsYmFjayIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSZW1vdGVFeGNlcHRpb24iCisgZXh0ZW5kcz0iYW5kcm9pZC51dGlsLkFuZHJvaWRFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZW1vdGVFeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmVzdWx0UmVjZWl2ZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZXN1bHRSZWNlaXZlciIKKyB0eXBlPSJhbmRyb2lkLm9zLlJlc3VsdFJlY2VpdmVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlciIgdHlwZT0iYW5kcm9pZC5vcy5IYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblJlY2VpdmVSZXN1bHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdERhdGEiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdERhdGEiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3RhdEZzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdGF0RnMiCisgdHlwZT0iYW5kcm9pZC5vcy5TdGF0RnMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0QXZhaWxhYmxlQmxvY2tzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QmxvY2tDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJsb2NrU2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZyZWVCbG9ja3MiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXN0YXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlN5c3RlbUNsb2NrIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJjdXJyZW50VGhyZWFkVGltZU1pbGxpcyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVsYXBzZWRSZWFsdGltZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEN1cnJlbnRUaW1lTWlsbGlzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbGxpcyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzbGVlcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXMiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXB0aW1lTWlsbGlzIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVG9rZW5XYXRjaGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRva2VuV2F0Y2hlciIKKyB0eXBlPSJhbmRyb2lkLm9zLlRva2VuV2F0Y2hlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImgiIHR5cGU9ImFuZHJvaWQub3MuSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGFnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWNxdWlyZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRva2VuIiB0eXBlPSJhbmRyb2lkLm9zLklCaW5kZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhY3F1aXJlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhbnVwIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idG9rZW4iIHR5cGU9ImFuZHJvaWQub3MuSUJpbmRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idW5saW5rIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImR1bXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQWNxdWlyZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbGVhc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0b2tlbiIgdHlwZT0iYW5kcm9pZC5vcy5JQmluZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbGVhc2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlZpYnJhdG9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY2FuY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2aWJyYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWlsbGlzZWNvbmRzIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZpYnJhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXR0ZXJuIiB0eXBlPSJsb25nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcGVhdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iYW5kcm9pZC5wcmVmZXJlbmNlIgorPgorPGNsYXNzIG5hbWU9IkNoZWNrQm94UHJlZmVyZW5jZSIKKyBleHRlbmRzPSJhbmRyb2lkLnByZWZlcmVuY2UuUHJlZmVyZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNoZWNrQm94UHJlZmVyZW5jZSIKKyB0eXBlPSJhbmRyb2lkLnByZWZlcmVuY2UuQ2hlY2tCb3hQcmVmZXJlbmNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZTdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDaGVja0JveFByZWZlcmVuY2UiCisgdHlwZT0iYW5kcm9pZC5wcmVmZXJlbmNlLkNoZWNrQm94UHJlZmVyZW5jZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2hlY2tCb3hQcmVmZXJlbmNlIgorIHR5cGU9ImFuZHJvaWQucHJlZmVyZW5jZS5DaGVja0JveFByZWZlcmVuY2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldERpc2FibGVEZXBlbmRlbnRzU3RhdGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1bW1hcnlPZmYiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1bW1hcnlPbiIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNDaGVja2VkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDaGVja2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hlY2tlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREaXNhYmxlRGVwZW5kZW50c1N0YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlzYWJsZURlcGVuZGVudHNTdGF0ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTdW1tYXJ5T2ZmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3VtbWFyeSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTdW1tYXJ5T2ZmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3VtbWFyeVJlc0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3VtbWFyeU9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3VtbWFyeSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTdW1tYXJ5T24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdW1tYXJ5UmVzSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEaWFsb2dQcmVmZXJlbmNlIgorIGV4dGVuZHM9ImFuZHJvaWQucHJlZmVyZW5jZS5QcmVmZXJlbmNlIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UuT25DbGlja0xpc3RlbmVyIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UuT25EaXNtaXNzTGlzdGVuZXIiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcmVmZXJlbmNlLlByZWZlcmVuY2VNYW5hZ2VyLk9uQWN0aXZpdHlEZXN0cm95TGlzdGVuZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRpYWxvZ1ByZWZlcmVuY2UiCisgdHlwZT0iYW5kcm9pZC5wcmVmZXJlbmNlLkRpYWxvZ1ByZWZlcmVuY2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRpYWxvZ1ByZWZlcmVuY2UiCisgdHlwZT0iYW5kcm9pZC5wcmVmZXJlbmNlLkRpYWxvZ1ByZWZlcmVuY2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXREaWFsb2ciCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5EaWFsb2ciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGlhbG9nSWNvbiIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGlhbG9nTGF5b3V0UmVzb3VyY2UiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGlhbG9nTWVzc2FnZSIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGlhbG9nVGl0bGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5lZ2F0aXZlQnV0dG9uVGV4dCIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UG9zaXRpdmVCdXR0b25UZXh0IgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkFjdGl2aXR5RGVzdHJveSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25CaW5kRGlhbG9nVmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ2xpY2siCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaWFsb2ciIHR5cGU9ImFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoaWNoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DcmVhdGVEaWFsb2dWaWV3IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25EaWFsb2dDbG9zZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGl2ZVJlc3VsdCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkRpc21pc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaWFsb2ciIHR5cGU9ImFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25QcmVwYXJlRGlhbG9nQnVpbGRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1aWxkZXIiIHR5cGU9ImFuZHJvaWQuYXBwLkFsZXJ0RGlhbG9nLkJ1aWxkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGlhbG9nSWNvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpYWxvZ0ljb24iIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGlhbG9nSWNvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpYWxvZ0ljb25SZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREaWFsb2dMYXlvdXRSZXNvdXJjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpYWxvZ0xheW91dFJlc0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGlhbG9nTWVzc2FnZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpYWxvZ01lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGlhbG9nTWVzc2FnZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpYWxvZ01lc3NhZ2VSZXNJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERpYWxvZ1RpdGxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlhbG9nVGl0bGUiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGlhbG9nVGl0bGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaWFsb2dUaXRsZVJlc0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TmVnYXRpdmVCdXR0b25UZXh0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmVnYXRpdmVCdXR0b25UZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE5lZ2F0aXZlQnV0dG9uVGV4dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5lZ2F0aXZlQnV0dG9uVGV4dFJlc0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UG9zaXRpdmVCdXR0b25UZXh0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpdmVCdXR0b25UZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBvc2l0aXZlQnV0dG9uVGV4dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aXZlQnV0dG9uVGV4dFJlc0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2hvd0RpYWxvZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJFZGl0VGV4dFByZWZlcmVuY2UiCisgZXh0ZW5kcz0iYW5kcm9pZC5wcmVmZXJlbmNlLkRpYWxvZ1ByZWZlcmVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFZGl0VGV4dFByZWZlcmVuY2UiCisgdHlwZT0iYW5kcm9pZC5wcmVmZXJlbmNlLkVkaXRUZXh0UHJlZmVyZW5jZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmU3R5bGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRWRpdFRleHRQcmVmZXJlbmNlIgorIHR5cGU9ImFuZHJvaWQucHJlZmVyZW5jZS5FZGl0VGV4dFByZWZlcmVuY2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkVkaXRUZXh0UHJlZmVyZW5jZSIKKyB0eXBlPSJhbmRyb2lkLnByZWZlcmVuY2UuRWRpdFRleHRQcmVmZXJlbmNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRFZGl0VGV4dCIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LkVkaXRUZXh0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRleHQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQWRkRWRpdFRleHRUb0RpYWxvZ1ZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaWFsb2dWaWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZWRpdFRleHQiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkVkaXRUZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRleHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ikxpc3RQcmVmZXJlbmNlIgorIGV4dGVuZHM9ImFuZHJvaWQucHJlZmVyZW5jZS5EaWFsb2dQcmVmZXJlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGlzdFByZWZlcmVuY2UiCisgdHlwZT0iYW5kcm9pZC5wcmVmZXJlbmNlLkxpc3RQcmVmZXJlbmNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMaXN0UHJlZmVyZW5jZSIKKyB0eXBlPSJhbmRyb2lkLnByZWZlcmVuY2UuTGlzdFByZWZlcmVuY2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImZpbmRJbmRleE9mVmFsdWUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVudHJpZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RW50cnkiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVudHJ5VmFsdWVzIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZhbHVlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFbnRyaWVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW50cmllcyIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVudHJpZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbnRyaWVzUmVzSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFbnRyeVZhbHVlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVudHJ5VmFsdWVzIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RW50cnlWYWx1ZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbnRyeVZhbHVlc1Jlc0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VmFsdWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRWYWx1ZUluZGV4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQcmVmZXJlbmNlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5Db21wYXJhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcmVmZXJlbmNlIgorIHR5cGU9ImFuZHJvaWQucHJlZmVyZW5jZS5QcmVmZXJlbmNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZTdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcmVmZXJlbmNlIgorIHR5cGU9ImFuZHJvaWQucHJlZmVyZW5jZS5QcmVmZXJlbmNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcmVmZXJlbmNlIgorIHR5cGU9ImFuZHJvaWQucHJlZmVyZW5jZS5QcmVmZXJlbmNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjYWxsQ2hhbmdlTGlzdGVuZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdWYWx1ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlVG8iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFub3RoZXIiIHR5cGU9ImFuZHJvaWQucHJlZmVyZW5jZS5QcmVmZXJlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmRQcmVmZXJlbmNlSW5IaWVyYXJjaHkiCisgcmV0dXJuPSJhbmRyb2lkLnByZWZlcmVuY2UuUHJlZmVyZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbnRleHQiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZXBlbmRlbmN5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFZGl0b3IiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuU2hhcmVkUHJlZmVyZW5jZXMuRWRpdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEludGVudCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0S2V5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMYXlvdXRSZXNvdXJjZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPblByZWZlcmVuY2VDaGFuZ2VMaXN0ZW5lciIKKyByZXR1cm49ImFuZHJvaWQucHJlZmVyZW5jZS5QcmVmZXJlbmNlLk9uUHJlZmVyZW5jZUNoYW5nZUxpc3RlbmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9uUHJlZmVyZW5jZUNsaWNrTGlzdGVuZXIiCisgcmV0dXJuPSJhbmRyb2lkLnByZWZlcmVuY2UuUHJlZmVyZW5jZS5PblByZWZlcmVuY2VDbGlja0xpc3RlbmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9yZGVyIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBlcnNpc3RlZEJvb2xlYW4iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZWZhdWx0UmV0dXJuVmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGVyc2lzdGVkRmxvYXQiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFJldHVyblZhbHVlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQZXJzaXN0ZWRJbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmF1bHRSZXR1cm5WYWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBlcnNpc3RlZExvbmciCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZWZhdWx0UmV0dXJuVmFsdWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGVyc2lzdGVkU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFJldHVyblZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByZWZlcmVuY2VNYW5hZ2VyIgorIHJldHVybj0iYW5kcm9pZC5wcmVmZXJlbmNlLlByZWZlcmVuY2VNYW5hZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNoYXJlZFByZWZlcmVuY2VzIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LlNoYXJlZFByZWZlcmVuY2VzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNob3VsZERpc2FibGVWaWV3IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdW1tYXJ5IgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaXRsZSIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmlldyIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb252ZXJ0VmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRXaWRnZXRMYXlvdXRSZXNvdXJjZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNLZXkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRW5hYmxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNQZXJzaXN0ZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1NlbGVjdGFibGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5vdGlmeUNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5vdGlmeURlcGVuZGVuY3lDaGFuZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXNhYmxlRGVwZW5kZW50cyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJub3RpZnlIaWVyYXJjaHlDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkF0dGFjaGVkVG9BY3Rpdml0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25BdHRhY2hlZFRvSGllcmFyY2h5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlZmVyZW5jZU1hbmFnZXIiIHR5cGU9ImFuZHJvaWQucHJlZmVyZW5jZS5QcmVmZXJlbmNlTWFuYWdlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkJpbmRWaWV3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DbGljayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DcmVhdGVWaWV3IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkRlcGVuZGVuY3lDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVwZW5kZW5jeSIgdHlwZT0iYW5kcm9pZC5wcmVmZXJlbmNlLlByZWZlcmVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRpc2FibGVEZXBlbmRlbnQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25HZXREZWZhdWx0VmFsdWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJhIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLlR5cGVkQXJyYXkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25QcmVwYXJlRm9yUmVtb3ZhbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25SZXN0b3JlSW5zdGFuY2VTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TYXZlSW5zdGFuY2VTdGF0ZSIKKyByZXR1cm49ImFuZHJvaWQub3MuUGFyY2VsYWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblNldEluaXRpYWxWYWx1ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3RvcmVQZXJzaXN0ZWRWYWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBlcnNpc3RCb29sZWFuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGVyc2lzdEZsb2F0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBlcnNpc3RJbnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBlcnNpc3RMb25nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGVyc2lzdFN0cmluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc3RvcmVIaWVyYXJjaHlTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRhaW5lciIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2F2ZUhpZXJhcmNoeVN0YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGFpbmVyIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREZWZhdWx0VmFsdWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZWZhdWx0VmFsdWUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGVwZW5kZW5jeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlcGVuZGVuY3lLZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RW5hYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVuYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW50ZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEtleSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMYXlvdXRSZXNvdXJjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxheW91dFJlc0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25QcmVmZXJlbmNlQ2hhbmdlTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvblByZWZlcmVuY2VDaGFuZ2VMaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5wcmVmZXJlbmNlLlByZWZlcmVuY2UuT25QcmVmZXJlbmNlQ2hhbmdlTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25QcmVmZXJlbmNlQ2xpY2tMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9uUHJlZmVyZW5jZUNsaWNrTGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQucHJlZmVyZW5jZS5QcmVmZXJlbmNlLk9uUHJlZmVyZW5jZUNsaWNrTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T3JkZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcmRlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBlcnNpc3RlbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwZXJzaXN0ZW50IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNlbGVjdGFibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3RhYmxlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNob3VsZERpc2FibGVWaWV3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2hvdWxkRGlzYWJsZVZpZXciIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3VtbWFyeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN1bW1hcnkiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3VtbWFyeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN1bW1hcnlSZXNJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRpdGxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGl0bGUiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGl0bGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aXRsZVJlc0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0V2lkZ2V0TGF5b3V0UmVzb3VyY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWRnZXRMYXlvdXRSZXNJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNob3VsZENvbW1pdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2hvdWxkRGlzYWJsZURlcGVuZGVudHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNob3VsZFBlcnNpc3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iREVGQVVMVF9PUkRFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIxNDc0ODM2NDciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlByZWZlcmVuY2UuQmFzZVNhdmVkU3RhdGUiCisgZXh0ZW5kcz0iYW5kcm9pZC52aWV3LkFic1NhdmVkU3RhdGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByZWZlcmVuY2UuQmFzZVNhdmVkU3RhdGUiCisgdHlwZT0iYW5kcm9pZC5wcmVmZXJlbmNlLlByZWZlcmVuY2UuQmFzZVNhdmVkU3RhdGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcmVmZXJlbmNlLkJhc2VTYXZlZFN0YXRlIgorIHR5cGU9ImFuZHJvaWQucHJlZmVyZW5jZS5QcmVmZXJlbmNlLkJhc2VTYXZlZFN0YXRlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3VwZXJTdGF0ZSIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iUHJlZmVyZW5jZS5PblByZWZlcmVuY2VDaGFuZ2VMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25QcmVmZXJlbmNlQ2hhbmdlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmZXJlbmNlIiB0eXBlPSJhbmRyb2lkLnByZWZlcmVuY2UuUHJlZmVyZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3VmFsdWUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJQcmVmZXJlbmNlLk9uUHJlZmVyZW5jZUNsaWNrTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uUHJlZmVyZW5jZUNsaWNrIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmZXJlbmNlIiB0eXBlPSJhbmRyb2lkLnByZWZlcmVuY2UuUHJlZmVyZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iUHJlZmVyZW5jZUFjdGl2aXR5IgorIGV4dGVuZHM9ImFuZHJvaWQuYXBwLkxpc3RBY3Rpdml0eSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJlZmVyZW5jZUFjdGl2aXR5IgorIHR5cGU9ImFuZHJvaWQucHJlZmVyZW5jZS5QcmVmZXJlbmNlQWN0aXZpdHkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkUHJlZmVyZW5jZXNGcm9tSW50ZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZFByZWZlcmVuY2VzRnJvbVJlc291cmNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlZmVyZW5jZXNSZXNJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmRQcmVmZXJlbmNlIgorIHJldHVybj0iYW5kcm9pZC5wcmVmZXJlbmNlLlByZWZlcmVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcmVmZXJlbmNlTWFuYWdlciIKKyByZXR1cm49ImFuZHJvaWQucHJlZmVyZW5jZS5QcmVmZXJlbmNlTWFuYWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcmVmZXJlbmNlU2NyZWVuIgorIHJldHVybj0iYW5kcm9pZC5wcmVmZXJlbmNlLlByZWZlcmVuY2VTY3JlZW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25QcmVmZXJlbmNlVHJlZUNsaWNrIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlZmVyZW5jZVNjcmVlbiIgdHlwZT0iYW5kcm9pZC5wcmVmZXJlbmNlLlByZWZlcmVuY2VTY3JlZW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByZWZlcmVuY2UiIHR5cGU9ImFuZHJvaWQucHJlZmVyZW5jZS5QcmVmZXJlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByZWZlcmVuY2VTY3JlZW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmZXJlbmNlU2NyZWVuIiB0eXBlPSJhbmRyb2lkLnByZWZlcmVuY2UuUHJlZmVyZW5jZVNjcmVlbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQcmVmZXJlbmNlQ2F0ZWdvcnkiCisgZXh0ZW5kcz0iYW5kcm9pZC5wcmVmZXJlbmNlLlByZWZlcmVuY2VHcm91cCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByZWZlcmVuY2VDYXRlZ29yeSIKKyB0eXBlPSJhbmRyb2lkLnByZWZlcmVuY2UuUHJlZmVyZW5jZUNhdGVnb3J5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZTdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcmVmZXJlbmNlQ2F0ZWdvcnkiCisgdHlwZT0iYW5kcm9pZC5wcmVmZXJlbmNlLlByZWZlcmVuY2VDYXRlZ29yeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJlZmVyZW5jZUNhdGVnb3J5IgorIHR5cGU9ImFuZHJvaWQucHJlZmVyZW5jZS5QcmVmZXJlbmNlQ2F0ZWdvcnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlByZWZlcmVuY2VHcm91cCIKKyBleHRlbmRzPSJhbmRyb2lkLnByZWZlcmVuY2UuUHJlZmVyZW5jZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJlZmVyZW5jZUdyb3VwIgorIHR5cGU9ImFuZHJvaWQucHJlZmVyZW5jZS5QcmVmZXJlbmNlR3JvdXAiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByZWZlcmVuY2VHcm91cCIKKyB0eXBlPSJhbmRyb2lkLnByZWZlcmVuY2UuUHJlZmVyZW5jZUdyb3VwIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkSXRlbUZyb21JbmZsYXRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByZWZlcmVuY2UiIHR5cGU9ImFuZHJvaWQucHJlZmVyZW5jZS5QcmVmZXJlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZFByZWZlcmVuY2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmZXJlbmNlIiB0eXBlPSJhbmRyb2lkLnByZWZlcmVuY2UuUHJlZmVyZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXNwYXRjaFJlc3RvcmVJbnN0YW5jZVN0YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGFpbmVyIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXNwYXRjaFNhdmVJbnN0YW5jZVN0YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGFpbmVyIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaW5kUHJlZmVyZW5jZSIKKyByZXR1cm49ImFuZHJvaWQucHJlZmVyZW5jZS5QcmVmZXJlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJlZmVyZW5jZSIKKyByZXR1cm49ImFuZHJvaWQucHJlZmVyZW5jZS5QcmVmZXJlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByZWZlcmVuY2VDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc09uU2FtZVNjcmVlbkFzQ2hpbGRyZW4iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzT3JkZXJpbmdBc0FkZGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblByZXBhcmVBZGRQcmVmZXJlbmNlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlZmVyZW5jZSIgdHlwZT0iYW5kcm9pZC5wcmVmZXJlbmNlLlByZWZlcmVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlQWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVQcmVmZXJlbmNlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlZmVyZW5jZSIgdHlwZT0iYW5kcm9pZC5wcmVmZXJlbmNlLlByZWZlcmVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T3JkZXJpbmdBc0FkZGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JkZXJpbmdBc0FkZGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlByZWZlcmVuY2VNYW5hZ2VyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY3JlYXRlUHJlZmVyZW5jZVNjcmVlbiIKKyByZXR1cm49ImFuZHJvaWQucHJlZmVyZW5jZS5QcmVmZXJlbmNlU2NyZWVuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaW5kUHJlZmVyZW5jZSIKKyByZXR1cm49ImFuZHJvaWQucHJlZmVyZW5jZS5QcmVmZXJlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVmYXVsdFNoYXJlZFByZWZlcmVuY2VzIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LlNoYXJlZFByZWZlcmVuY2VzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNoYXJlZFByZWZlcmVuY2VzIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LlNoYXJlZFByZWZlcmVuY2VzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNoYXJlZFByZWZlcmVuY2VzTW9kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaGFyZWRQcmVmZXJlbmNlc05hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERlZmF1bHRWYWx1ZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWFkQWdhaW4iIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGVmYXVsdFZhbHVlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNoYXJlZFByZWZlcmVuY2VzTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2hhcmVkUHJlZmVyZW5jZXNNb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlYWRBZ2FpbiIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTaGFyZWRQcmVmZXJlbmNlc01vZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaGFyZWRQcmVmZXJlbmNlc01vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTaGFyZWRQcmVmZXJlbmNlc05hbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaGFyZWRQcmVmZXJlbmNlc05hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJLRVlfSEFTX1NFVF9ERUZBVUxUX1ZBTFVFUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtfaGFzX3NldF9kZWZhdWx0X3ZhbHVlcyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNRVRBREFUQV9LRVlfUFJFRkVSRU5DRVMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wcmVmZXJlbmNlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iUHJlZmVyZW5jZU1hbmFnZXIuT25BY3Rpdml0eURlc3Ryb3lMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25BY3Rpdml0eURlc3Ryb3kiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJQcmVmZXJlbmNlTWFuYWdlci5PbkFjdGl2aXR5UmVzdWx0TGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uQWN0aXZpdHlSZXN1bHQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3RDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdENvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlByZWZlcmVuY2VNYW5hZ2VyLk9uQWN0aXZpdHlTdG9wTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uQWN0aXZpdHlTdG9wIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJQcmVmZXJlbmNlU2NyZWVuIgorIGV4dGVuZHM9ImFuZHJvaWQucHJlZmVyZW5jZS5QcmVmZXJlbmNlR3JvdXAiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC53aWRnZXQuQWRhcHRlclZpZXcuT25JdGVtQ2xpY2tMaXN0ZW5lciI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlLk9uRGlzbWlzc0xpc3RlbmVyIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iYmluZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RWaWV3IiB0eXBlPSJhbmRyb2lkLndpZGdldC5MaXN0VmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREaWFsb2ciCisgcmV0dXJuPSJhbmRyb2lkLmFwcC5EaWFsb2ciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Um9vdEFkYXB0ZXIiCisgcmV0dXJuPSJhbmRyb2lkLndpZGdldC5MaXN0QWRhcHRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNyZWF0ZVJvb3RBZGFwdGVyIgorIHJldHVybj0iYW5kcm9pZC53aWRnZXQuTGlzdEFkYXB0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25EaXNtaXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlhbG9nIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uSXRlbUNsaWNrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyZW50IiB0eXBlPSJhbmRyb2lkLndpZGdldC5BZGFwdGVyVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJpbmd0b25lUHJlZmVyZW5jZSIKKyBleHRlbmRzPSJhbmRyb2lkLnByZWZlcmVuY2UuUHJlZmVyZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcmVmZXJlbmNlLlByZWZlcmVuY2VNYW5hZ2VyLk9uQWN0aXZpdHlSZXN1bHRMaXN0ZW5lciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmluZ3RvbmVQcmVmZXJlbmNlIgorIHR5cGU9ImFuZHJvaWQucHJlZmVyZW5jZS5SaW5ndG9uZVByZWZlcmVuY2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJpbmd0b25lUHJlZmVyZW5jZSIKKyB0eXBlPSJhbmRyb2lkLnByZWZlcmVuY2UuUmluZ3RvbmVQcmVmZXJlbmNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSaW5ndG9uZVByZWZlcmVuY2UiCisgdHlwZT0iYW5kcm9pZC5wcmVmZXJlbmNlLlJpbmd0b25lUHJlZmVyZW5jZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0UmluZ3RvbmVUeXBlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNob3dEZWZhdWx0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaG93U2lsZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkFjdGl2aXR5UmVzdWx0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdENvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uUHJlcGFyZVJpbmd0b25lUGlja2VySW50ZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmluZ3RvbmVQaWNrZXJJbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25SZXN0b3JlUmluZ3RvbmUiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TYXZlUmluZ3RvbmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJyaW5ndG9uZVVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJpbmd0b25lVHlwZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTaG93RGVmYXVsdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNob3dEZWZhdWx0IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNob3dTaWxlbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaG93U2lsZW50IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iYW5kcm9pZC5wcm92aWRlciIKKz4KKzxpbnRlcmZhY2UgbmFtZT0iQmFzZUNvbHVtbnMiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGZpZWxkIG5hbWU9Il9DT1VOVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtfY291bnQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iX0lEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O19pZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkJyb3dzZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJyb3dzZXIiCisgdHlwZT0iYW5kcm9pZC5wcm92aWRlci5Ccm93c2VyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZFNlYXJjaFVybCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VhcmNoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNhbkNsZWFySGlzdG9yeSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhckhpc3RvcnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJTZWFyY2hlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWxldGVGcm9tSGlzdG9yeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlbGV0ZUhpc3RvcnlUaW1lRnJhbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJlZ2luIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWxsQm9va21hcmtzIgorIHJldHVybj0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFsbFZpc2l0ZWRVcmxzIgorIHJldHVybj0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcXVlc3RBbGxJY29ucyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2hlcmUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLndlYmtpdC5XZWJJY29uRGF0YWJhc2UuSWNvbkxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNhdmVCb29rbWFyayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGl0bGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kU3RyaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRydW5jYXRlSGlzdG9yeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVWaXNpdGVkSGlzdG9yeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWFsIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQk9PS01BUktTX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfQVBQTElDQVRJT05fSUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y29tLmFuZHJvaWQuYnJvd3Nlci5hcHBsaWNhdGlvbl9pZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9IRUFERVJTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2NvbS5hbmRyb2lkLmJyb3dzZXIuaGVhZGVycyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJISVNUT1JZX1BST0pFQ1RJT04iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhJU1RPUllfUFJPSkVDVElPTl9CT09LTUFSS19JTkRFWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSElTVE9SWV9QUk9KRUNUSU9OX0RBVEVfSU5ERVgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhJU1RPUllfUFJPSkVDVElPTl9GQVZJQ09OX0lOREVYIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJISVNUT1JZX1BST0pFQ1RJT05fSURfSU5ERVgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhJU1RPUllfUFJPSkVDVElPTl9USVRMRV9JTkRFWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSElTVE9SWV9QUk9KRUNUSU9OX1VSTF9JTkRFWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSElTVE9SWV9QUk9KRUNUSU9OX1ZJU0lUU19JTkRFWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU5JVElBTF9aT09NX0xFVkVMIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2Jyb3dzZXIuaW5pdGlhbFpvb21MZXZlbCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRUFSQ0hFU19QUk9KRUNUSU9OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRUFSQ0hFU19QUk9KRUNUSU9OX0RBVEVfSU5ERVgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFQVJDSEVTX1BST0pFQ1RJT05fU0VBUkNIX0lOREVYIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRUFSQ0hFU19VUkkiCisgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRSVU5DQVRFX0hJU1RPUllfUFJPSkVDVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFJVTkNBVEVfSElTVE9SWV9QUk9KRUNUSU9OX0lEX0lOREVYIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUUlVOQ0FURV9OX09MREVTVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJyb3dzZXIuQm9va21hcmtDb2x1bW5zIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5CYXNlQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQnJvd3Nlci5Cb29rbWFya0NvbHVtbnMiCisgdHlwZT0iYW5kcm9pZC5wcm92aWRlci5Ccm93c2VyLkJvb2ttYXJrQ29sdW1ucyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9IkJPT0tNQVJLIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2Jvb2ttYXJrJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNSRUFURUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y3JlYXRlZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVRFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkFWSUNPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtmYXZpY29uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRJVExFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3RpdGxlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVSTCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt1cmwmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVklTSVRTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3Zpc2l0cyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQnJvd3Nlci5TZWFyY2hDb2x1bW5zIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5CYXNlQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQnJvd3Nlci5TZWFyY2hDb2x1bW5zIgorIHR5cGU9ImFuZHJvaWQucHJvdmlkZXIuQnJvd3Nlci5TZWFyY2hDb2x1bW5zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iREFURSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXRlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFQVJDSCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzZWFyY2gmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVVJMIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3VybCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2FsbExvZyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2FsbExvZyIKKyB0eXBlPSJhbmRyb2lkLnByb3ZpZGVyLkNhbGxMb2ciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxmaWVsZCBuYW1lPSJBVVRIT1JJVFkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y2FsbF9sb2cmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9VUkkiCisgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDYWxsTG9nLkNhbGxzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5CYXNlQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2FsbExvZy5DYWxscyIKKyB0eXBlPSJhbmRyb2lkLnByb3ZpZGVyLkNhbGxMb2cuQ2FsbHMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0TGFzdE91dGdvaW5nQ2FsbCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDQUNIRURfTkFNRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtuYW1lJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNBQ0hFRF9OVU1CRVJfTEFCRUwiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bnVtYmVybGFiZWwmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0FDSEVEX05VTUJFUl9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O251bWJlcnR5cGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9GSUxURVJfVVJJIgorIHR5cGU9ImFuZHJvaWQubmV0LlVyaSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX0lURU1fVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2bmQuYW5kcm9pZC5jdXJzb3IuaXRlbS9jYWxscyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLmRpci9jYWxscyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFURSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXRlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFRkFVTFRfU09SVF9PUkRFUiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXRlIERFU0MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRFVSQVRJT04iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZHVyYXRpb24mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU5DT01JTkdfVFlQRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUlTU0VEX1RZUEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5FVyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtuZXcmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTlVNQkVSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O251bWJlciZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPVVRHT0lOR19UWVBFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3R5cGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbnRhY3RzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGZpZWxkIG5hbWU9IkFVVEhPUklUWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtjb250YWN0cyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfVVJJIgorIHR5cGU9ImFuZHJvaWQubmV0LlVyaSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktJTkRfRU1BSUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0lORF9JTSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLSU5EX09SR0FOSVpBVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLSU5EX1BIT05FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktJTkRfUE9TVEFMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb250YWN0cy5Db250YWN0TWV0aG9kcyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkJhc2VDb2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHMuQ29udGFjdE1ldGhvZHNDb2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHMuUGVvcGxlQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImFkZFBvc3RhbExvY2F0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zdGFsSWQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxhdGl0dWRlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvbmdpdHVkZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlY29kZUltUHJvdG9jb2wiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5jb2RlZFN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmNvZGVDdXN0b21JbVByb3RvY29sIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3RvY29sU3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuY29kZVByZWRlZmluZWRJbVByb3RvY29sIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3RvY29sIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGlzcGxheUxhYmVsIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtpbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYWJlbCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfRU1BSUxfSVRFTV9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ZuZC5hbmRyb2lkLmN1cnNvci5pdGVtL2VtYWlsJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9FTUFJTF9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ZuZC5hbmRyb2lkLmN1cnNvci5kaXIvZW1haWwmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX0VNQUlMX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX0lNX0lURU1fVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2bmQuYW5kcm9pZC5jdXJzb3IuaXRlbS9qYWJiZXItaW0mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1BPU1RBTF9JVEVNX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLml0ZW0vcG9zdGFsLWFkZHJlc3MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1BPU1RBTF9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ZuZC5hbmRyb2lkLmN1cnNvci5kaXIvcG9zdGFsLWFkZHJlc3MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLmRpci9jb250YWN0LW1ldGhvZHMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUX1NPUlRfT1JERVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bmFtZSBBU0MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQRVJTT05fSUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cGVyc29uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUE9TVEFMX0xPQ0FUSU9OX0xBVElUVURFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGEmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQT1NUQUxfTE9DQVRJT05fTE9OR0lUVURFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2F1eF9kYXRhJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJPVE9DT0xfQUlNIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBST1RPQ09MX0dPT0dMRV9UQUxLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBST1RPQ09MX0lDUSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQUk9UT0NPTF9KQUJCRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJPVE9DT0xfTVNOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBST1RPQ09MX1FRIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBST1RPQ09MX1NLWVBFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBST1RPQ09MX1lBSE9PIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ29udGFjdHMuQ29udGFjdE1ldGhvZHNDb2x1bW5zIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iQVVYX0RBVEEiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YXV4X2RhdGEmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVRBIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGEmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJU1BSSU1BUlkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aXNwcmltYXJ5JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0lORCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtraW5kJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTEFCRUwiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bGFiZWwmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3R5cGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX0NVU1RPTSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX0hPTUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9PVEhFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX1dPUksiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJDb250YWN0cy5FeHRlbnNpb25zIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQmFzZUNvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5Db250YWN0cy5FeHRlbnNpb25zQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9JVEVNX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLml0ZW0vY29udGFjdF9leHRlbnNpb25zJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ZuZC5hbmRyb2lkLmN1cnNvci5kaXIvY29udGFjdF9leHRlbnNpb25zJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9VUkkiCisgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVGQVVMVF9TT1JUX09SREVSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3BlcnNvbiwgbmFtZSBBU0MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQRVJTT05fSUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cGVyc29uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDb250YWN0cy5FeHRlbnNpb25zQ29sdW1ucyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGZpZWxkIG5hbWU9Ik5BTUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bmFtZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlZBTFVFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ZhbHVlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJDb250YWN0cy5Hcm91cE1lbWJlcnNoaXAiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5CYXNlQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzLkdyb3Vwc0NvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfRElSRUNUT1JZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2dyb3VwbWVtYmVyc2hpcCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfSVRFTV9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ZuZC5hbmRyb2lkLmN1cnNvci5pdGVtL2NvbnRhY3RzZ3JvdXBtZW1iZXJzaGlwJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ZuZC5hbmRyb2lkLmN1cnNvci5kaXIvY29udGFjdHNncm91cG1lbWJlcnNoaXAmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUX1NPUlRfT1JERVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Z3JvdXBfaWQgQVNDJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR1JPVVBfSUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Z3JvdXBfaWQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHUk9VUF9TWU5DX0FDQ09VTlQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Z3JvdXBfc3luY19hY2NvdW50JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR1JPVVBfU1lOQ19BQ0NPVU5UX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Z3JvdXBfc3luY19hY2NvdW50X3R5cGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHUk9VUF9TWU5DX0lEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2dyb3VwX3N5bmNfaWQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQRVJTT05fSUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cGVyc29uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkFXX0NPTlRFTlRfVVJJIgorIHR5cGU9ImFuZHJvaWQubmV0LlVyaSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb250YWN0cy5Hcm91cHMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5CYXNlQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzLkdyb3Vwc0NvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfSVRFTV9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ZuZC5hbmRyb2lkLmN1cnNvci5pdGVtL2NvbnRhY3RzZ3JvdXAmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLmRpci9jb250YWN0c2dyb3VwJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9VUkkiCisgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVGQVVMVF9TT1JUX09SREVSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O25hbWUgQVNDJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVMRVRFRF9DT05URU5UX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHUk9VUF9BTkRST0lEX1NUQVJSRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7U3RhcnJlZCBpbiBBbmRyb2lkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR1JPVVBfTVlfQ09OVEFDVFMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Q29udGFjdHMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkNvbnRhY3RzLkdyb3Vwc0NvbHVtbnMiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxmaWVsZCBuYW1lPSJOQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O25hbWUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOT1RFUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtub3RlcyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNIT1VMRF9TWU5DIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3Nob3VsZF9zeW5jJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1lTVEVNX0lEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3N5c3RlbV9pZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ29udGFjdHMuSW50ZW50cyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29udGFjdHMuSW50ZW50cyIKKyB0eXBlPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzLkludGVudHMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9IkFUVEFDSF9JTUFHRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtjb20uYW5kcm9pZC5jb250YWN0cy5hY3Rpb24uQVRUQUNIX0lNQUdFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfQ1JFQVRFX0RFU0NSSVBUSU9OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2NvbS5hbmRyb2lkLmNvbnRhY3RzLmFjdGlvbi5DUkVBVEVfREVTQ1JJUFRJT04mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9GT1JDRV9DUkVBVEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y29tLmFuZHJvaWQuY29udGFjdHMuYWN0aW9uLkZPUkNFX0NSRUFURSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFQVJDSF9TVUdHRVNUSU9OX0NMSUNLRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wcm92aWRlci5Db250YWN0cy5TRUFSQ0hfU1VHR0VTVElPTl9DTElDS0VEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VBUkNIX1NVR0dFU1RJT05fQ1JFQVRFX0NPTlRBQ1RfQ0xJQ0tFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzLlNFQVJDSF9TVUdHRVNUSU9OX0NSRUFURV9DT05UQUNUX0NMSUNLRUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRUFSQ0hfU1VHR0VTVElPTl9ESUFMX05VTUJFUl9DTElDS0VEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQucHJvdmlkZXIuQ29udGFjdHMuU0VBUkNIX1NVR0dFU1RJT05fRElBTF9OVU1CRVJfQ0xJQ0tFRCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNIT1dfT1JfQ1JFQVRFX0NPTlRBQ1QiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y29tLmFuZHJvaWQuY29udGFjdHMuYWN0aW9uLlNIT1dfT1JfQ1JFQVRFX0NPTlRBQ1QmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29udGFjdHMuSW50ZW50cy5JbnNlcnQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbnRhY3RzLkludGVudHMuSW5zZXJ0IgorIHR5cGU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHMuSW50ZW50cy5JbnNlcnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9IkFDVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uSU5TRVJUJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09NUEFOWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtjb21wYW55JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRU1BSUwiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZW1haWwmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFTUFJTF9JU1BSSU1BUlkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZW1haWxfaXNwcmltYXJ5JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRU1BSUxfVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtlbWFpbF90eXBlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRlVMTF9NT0RFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2Z1bGxfbW9kZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklNX0hBTkRMRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtpbV9oYW5kbGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTV9JU1BSSU1BUlkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aW1faXNwcmltYXJ5JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU1fUFJPVE9DT0wiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aW1fcHJvdG9jb2wmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJKT0JfVElUTEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7am9iX3RpdGxlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTkFNRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtuYW1lJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTk9URVMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bm90ZXMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQSE9ORSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtwaG9uZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBIT05FVElDX05BTUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cGhvbmV0aWNfbmFtZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBIT05FX0lTUFJJTUFSWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtwaG9uZV9pc3ByaW1hcnkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQSE9ORV9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3Bob25lX3R5cGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQT1NUQUwiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cG9zdGFsJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUE9TVEFMX0lTUFJJTUFSWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtwb3N0YWxfaXNwcmltYXJ5JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUE9TVEFMX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cG9zdGFsX3R5cGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRUNPTkRBUllfRU1BSUwiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c2Vjb25kYXJ5X2VtYWlsJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VDT05EQVJZX0VNQUlMX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c2Vjb25kYXJ5X2VtYWlsX3R5cGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRUNPTkRBUllfUEhPTkUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c2Vjb25kYXJ5X3Bob25lJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VDT05EQVJZX1BIT05FX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c2Vjb25kYXJ5X3Bob25lX3R5cGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJURVJUSUFSWV9FTUFJTCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt0ZXJ0aWFyeV9lbWFpbCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRFUlRJQVJZX0VNQUlMX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dGVydGlhcnlfZW1haWxfdHlwZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRFUlRJQVJZX1BIT05FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3RlcnRpYXJ5X3Bob25lJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEVSVElBUllfUEhPTkVfVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt0ZXJ0aWFyeV9waG9uZV90eXBlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbnRhY3RzLkludGVudHMuVUkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbnRhY3RzLkludGVudHMuVUkiCisgdHlwZT0iYW5kcm9pZC5wcm92aWRlci5Db250YWN0cy5JbnRlbnRzLlVJIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxmaWVsZCBuYW1lPSJGSUxURVJfQ09OVEFDVFNfQUNUSU9OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2NvbS5hbmRyb2lkLmNvbnRhY3RzLmFjdGlvbi5GSUxURVJfQ09OVEFDVFMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGSUxURVJfVEVYVF9FWFRSQV9LRVkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y29tLmFuZHJvaWQuY29udGFjdHMuZXh0cmEuRklMVEVSX1RFWFQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHUk9VUF9OQU1FX0VYVFJBX0tFWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtjb20uYW5kcm9pZC5jb250YWN0cy5leHRyYS5HUk9VUCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxJU1RfQUxMX0NPTlRBQ1RTX0FDVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtjb20uYW5kcm9pZC5jb250YWN0cy5hY3Rpb24uTElTVF9BTExfQ09OVEFDVFMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMSVNUX0NPTlRBQ1RTX1dJVEhfUEhPTkVTX0FDVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtjb20uYW5kcm9pZC5jb250YWN0cy5hY3Rpb24uTElTVF9DT05UQUNUU19XSVRIX1BIT05FUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxJU1RfREVGQVVMVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtjb20uYW5kcm9pZC5jb250YWN0cy5hY3Rpb24uTElTVF9ERUZBVUxUJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTElTVF9GUkVRVUVOVF9BQ1RJT04iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y29tLmFuZHJvaWQuY29udGFjdHMuYWN0aW9uLkxJU1RfRlJFUVVFTlQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMSVNUX0dST1VQX0FDVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtjb20uYW5kcm9pZC5jb250YWN0cy5hY3Rpb24uTElTVF9HUk9VUCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxJU1RfU1RBUlJFRF9BQ1RJT04iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y29tLmFuZHJvaWQuY29udGFjdHMuYWN0aW9uLkxJU1RfU1RBUlJFRCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxJU1RfU1RSRVFVRU5UX0FDVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtjb20uYW5kcm9pZC5jb250YWN0cy5hY3Rpb24uTElTVF9TVFJFUVVFTlQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUSVRMRV9FWFRSQV9LRVkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y29tLmFuZHJvaWQuY29udGFjdHMuZXh0cmEuVElUTEVfRVhUUkEmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkNvbnRhY3RzLk9yZ2FuaXphdGlvbkNvbHVtbnMiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxmaWVsZCBuYW1lPSJDT01QQU5ZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2NvbXBhbnkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJU1BSSU1BUlkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aXNwcmltYXJ5JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTEFCRUwiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bGFiZWwmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQRVJTT05fSUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cGVyc29uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVElUTEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dGl0bGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3R5cGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX0NVU1RPTSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX09USEVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfV09SSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkNvbnRhY3RzLk9yZ2FuaXphdGlvbnMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5CYXNlQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzLk9yZ2FuaXphdGlvbkNvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXREaXNwbGF5TGFiZWwiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYWJlbCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfRElSRUNUT1JZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O29yZ2FuaXphdGlvbnMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUX1NPUlRfT1JERVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y29tcGFueSwgdGl0bGUsIGlzcHJpbWFyeSBBU0MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29udGFjdHMuUGVvcGxlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQmFzZUNvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5Db250YWN0cy5QZW9wbGVDb2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHMuUGhvbmVzQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzLlByZXNlbmNlQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImFkZFRvR3JvdXAiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvbHZlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGVyc29uSWQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRUb0dyb3VwIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJpIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzb2x2ZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBlcnNvbklkIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJncm91cElkIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZFRvTXlDb250YWN0c0dyb3VwIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJpIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzb2x2ZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBlcnNvbklkIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVBlcnNvbkluTXlDb250YWN0c0dyb3VwIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJpIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzb2x2ZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlcyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRWYWx1ZXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZENvbnRhY3RQaG90byIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBlcnNvbiIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbGFjZWhvbGRlckltYWdlUmVzb3VyY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3B0aW9ucyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXBGYWN0b3J5Lk9wdGlvbnMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWFya0FzQ29udGFjdGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc29sdmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwZXJzb25JZCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuQ29udGFjdFBob3RvSW5wdXRTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBlcnNvbiIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InF1ZXJ5R3JvdXBzIgorIHJldHVybj0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvbHZlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGVyc29uIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBob3RvRGF0YSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGVyc29uIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfRklMVEVSX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX0lURU1fVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2bmQuYW5kcm9pZC5jdXJzb3IuaXRlbS9wZXJzb24mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLmRpci9wZXJzb24mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUX1NPUlRfT1JERVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bmFtZSBBU0MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUxFVEVEX0NPTlRFTlRfVVJJIgorIHR5cGU9ImFuZHJvaWQubmV0LlVyaSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBSSU1BUllfRU1BSUxfSUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cHJpbWFyeV9lbWFpbCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBSSU1BUllfT1JHQU5JWkFUSU9OX0lEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ByaW1hcnlfb3JnYW5pemF0aW9uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJJTUFSWV9QSE9ORV9JRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtwcmltYXJ5X3Bob25lJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbnRhY3RzLlBlb3BsZS5Db250YWN0TWV0aG9kcyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkJhc2VDb2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHMuQ29udGFjdE1ldGhvZHNDb2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHMuUGVvcGxlQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9ESVJFQ1RPUlkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y29udGFjdF9tZXRob2RzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVGQVVMVF9TT1JUX09SREVSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGEgQVNDJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbnRhY3RzLlBlb3BsZS5FeHRlbnNpb25zIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkJhc2VDb2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHMuRXh0ZW5zaW9uc0NvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfRElSRUNUT1JZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2V4dGVuc2lvbnMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUX1NPUlRfT1JERVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bmFtZSBBU0MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQRVJTT05fSUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cGVyc29uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbnRhY3RzLlBlb3BsZS5QaG9uZXMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5CYXNlQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzLlBlb3BsZUNvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5Db250YWN0cy5QaG9uZXNDb2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxmaWVsZCBuYW1lPSJDT05URU5UX0RJUkVDVE9SWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtwaG9uZXMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUX1NPUlRfT1JERVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bnVtYmVyIEFTQyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ29udGFjdHMuUGVvcGxlQ29sdW1ucyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGZpZWxkIG5hbWU9IkNVU1RPTV9SSU5HVE9ORSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtjdXN0b21fcmluZ3RvbmUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJESVNQTEFZX05BTUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGlzcGxheV9uYW1lJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTEFTVF9USU1FX0NPTlRBQ1RFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtsYXN0X3RpbWVfY29udGFjdGVkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTkFNRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtuYW1lJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTk9URVMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bm90ZXMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQSE9ORVRJQ19OQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3Bob25ldGljX25hbWUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQSE9UT19WRVJTSU9OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3Bob3RvX3ZlcnNpb24mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRU5EX1RPX1ZPSUNFTUFJTCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzZW5kX3RvX3ZvaWNlbWFpbCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNUQVJSRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c3RhcnJlZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRJTUVTX0NPTlRBQ1RFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt0aW1lc19jb250YWN0ZWQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkNvbnRhY3RzLlBob25lcyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkJhc2VDb2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHMuUGVvcGxlQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzLlBob25lc0NvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXREaXNwbGF5TGFiZWwiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYWJlbCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGFiZWxBcnJheSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERpc3BsYXlMYWJlbCIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxhYmVsIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9GSUxURVJfVVJMIgorIHR5cGU9ImFuZHJvaWQubmV0LlVyaSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfSVRFTV9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ZuZC5hbmRyb2lkLmN1cnNvci5pdGVtL3Bob25lJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ZuZC5hbmRyb2lkLmN1cnNvci5kaXIvcGhvbmUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUX1NPUlRfT1JERVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bmFtZSBBU0MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQRVJTT05fSUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cGVyc29uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDb250YWN0cy5QaG9uZXNDb2x1bW5zIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iSVNQUklNQVJZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2lzcHJpbWFyeSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxBQkVMIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2xhYmVsJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTlVNQkVSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O251bWJlciZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5VTUJFUl9LRVkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bnVtYmVyX2tleSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dHlwZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfQ1VTVE9NIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfRkFYX0hPTUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9GQVhfV09SSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX0hPTUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9NT0JJTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9PVEhFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX1BBR0VSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfV09SSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkNvbnRhY3RzLlBob3RvcyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkJhc2VDb2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHMuUGhvdG9zQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9ESVJFQ1RPUlkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cGhvdG8mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUX1NPUlRfT1JERVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cGVyc29uIEFTQyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ29udGFjdHMuUGhvdG9zQ29sdW1ucyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGZpZWxkIG5hbWU9IkRBVEEiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRPV05MT0FEX1JFUVVJUkVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2Rvd25sb2FkX3JlcXVpcmVkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhJU1RTX09OX1NFUlZFUiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtleGlzdHNfb25fc2VydmVyJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTE9DQUxfVkVSU0lPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtsb2NhbF92ZXJzaW9uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEVSU09OX0lEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3BlcnNvbiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNZTkNfRVJST1IiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c3luY19lcnJvciZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkNvbnRhY3RzLlByZXNlbmNlQ29sdW1ucyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGZpZWxkIG5hbWU9IkFWQUlMQUJMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVdBWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRE9fTk9UX0RJU1RVUkIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklETEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklNX0FDQ09VTlQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aW1fYWNjb3VudCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklNX0hBTkRMRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtpbV9oYW5kbGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTV9QUk9UT0NPTCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtpbV9wcm90b2NvbCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklOVklTSUJMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT0ZGTElORSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJFU0VOQ0VfQ1VTVE9NX1NUQVRVUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzdGF0dXMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJFU0VOQ0VfU1RBVFVTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O21vZGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJJT1JJVFkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cHJpb3JpdHkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJDb250YWN0cy5TZXR0aW5ncyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkJhc2VDb2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHMuU2V0dGluZ3NDb2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0U2V0dGluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjb3VudCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNldHRpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY291bnQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX0RJUkVDVE9SWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzZXR0aW5ncyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfVVJJIgorIHR5cGU9ImFuZHJvaWQubmV0LlVyaSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFRkFVTFRfU09SVF9PUkRFUiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtrZXkgQVNDJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1lOQ19FVkVSWVRISU5HIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3N5bmNFdmVyeXRoaW5nJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDb250YWN0cy5TZXR0aW5nc0NvbHVtbnMiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxmaWVsZCBuYW1lPSJLRVkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7a2V5JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVkFMVUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dmFsdWUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJfU1lOQ19BQ0NPVU5UIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O19zeW5jX2FjY291bnQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJfU1lOQ19BQ0NPVU5UX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7X3N5bmNfYWNjb3VudF90eXBlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJDb250YWN0c0NvbnRyYWN0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbnRhY3RzQ29udHJhY3QiCisgdHlwZT0iYW5kcm9pZC5wcm92aWRlci5Db250YWN0c0NvbnRyYWN0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iQVVUSE9SSVRZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2NvbS5hbmRyb2lkLmNvbnRhY3RzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFVVEhPUklUWV9VUkkiCisgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNBTExFUl9JU19TWU5DQURBUFRFUiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtjYWxsZXJfaXNfc3luY2FkYXB0ZXImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbnRhY3RzQ29udHJhY3QuQWdncmVnYXRpb25FeGNlcHRpb25zIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkJhc2VDb2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxmaWVsZCBuYW1lPSJDT05URU5UX0lURU1fVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2bmQuYW5kcm9pZC5jdXJzb3IuaXRlbS9hZ2dyZWdhdGlvbl9leGNlcHRpb24mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ZuZC5hbmRyb2lkLmN1cnNvci5kaXIvYWdncmVnYXRpb25fZXhjZXB0aW9uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfVVJJIgorIHR5cGU9ImFuZHJvaWQubmV0LlVyaSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSQVdfQ09OVEFDVF9JRDEiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cmF3X2NvbnRhY3RfaWQxJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJBV19DT05UQUNUX0lEMiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtyYXdfY29udGFjdF9pZDImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt0eXBlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfQVVUT01BVElDIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX0tFRVBfU0VQQVJBVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfS0VFUF9UT0dFVEhFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDb250YWN0c0NvbnRyYWN0LkJhc2VTeW5jQ29sdW1ucyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxmaWVsZCBuYW1lPSJTWU5DMSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzeW5jMSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTWU5DMiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzeW5jMiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTWU5DMyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzeW5jMyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTWU5DNCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzeW5jNCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkNvbnRhY3RzQ29udHJhY3QuQ29tbW9uRGF0YUtpbmRzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDb250YWN0c0NvbnRyYWN0LkNvbW1vbkRhdGFLaW5kcy5CYXNlVHlwZXMiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iVFlQRV9DVVNUT00iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkNvbnRhY3RzQ29udHJhY3QuQ29tbW9uRGF0YUtpbmRzLkNvbW1vbkNvbHVtbnMiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzQ29udHJhY3QuQ29tbW9uRGF0YUtpbmRzLkJhc2VUeXBlcyI+Cis8L2ltcGxlbWVudHM+Cis8ZmllbGQgbmFtZT0iREFUQSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXRhMSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMQUJFTCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXRhMyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGEyJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ29udGFjdHNDb250cmFjdC5Db21tb25EYXRhS2luZHMuRW1haWwiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHNDb250cmFjdC5Db21tb25EYXRhS2luZHMuQ29tbW9uQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzQ29udHJhY3QuRGF0YUNvbHVtbnNXaXRoSm9pbnMiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlTGFiZWwiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYWJlbCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlTGFiZWxSZXNvdXJjZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfRklMVEVSX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9JVEVNX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLml0ZW0vZW1haWxfdjImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9MT09LVVBfVVJJIgorIHR5cGU9ImFuZHJvaWQubmV0LlVyaSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLmRpci9lbWFpbF92MiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRElTUExBWV9OQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGE0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfSE9NRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9NT0JJTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfT1RIRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfV09SSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbnRhY3RzQ29udHJhY3QuQ29tbW9uRGF0YUtpbmRzLkV2ZW50IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzQ29udHJhY3QuQ29tbW9uRGF0YUtpbmRzLkNvbW1vbkNvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5Db250YWN0c0NvbnRyYWN0LkRhdGFDb2x1bW5zV2l0aEpvaW5zIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0VHlwZVJlc291cmNlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImphdmEubGFuZy5JbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9JVEVNX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLml0ZW0vY29udGFjdF9ldmVudCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFSVF9EQVRFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGExJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfQU5OSVZFUlNBUlkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfQklSVEhEQVkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfT1RIRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb250YWN0c0NvbnRyYWN0LkNvbW1vbkRhdGFLaW5kcy5Hcm91cE1lbWJlcnNoaXAiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHNDb250cmFjdC5EYXRhQ29sdW1uc1dpdGhKb2lucyI+Cis8L2ltcGxlbWVudHM+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9JVEVNX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLml0ZW0vZ3JvdXBfbWVtYmVyc2hpcCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHUk9VUF9ST1dfSUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTEmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR1JPVVBfU09VUkNFX0lEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2dyb3VwX3NvdXJjZWlkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb250YWN0c0NvbnRyYWN0LkNvbW1vbkRhdGFLaW5kcy5JbSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5Db250YWN0c0NvbnRyYWN0LkNvbW1vbkRhdGFLaW5kcy5Db21tb25Db2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHNDb250cmFjdC5EYXRhQ29sdW1uc1dpdGhKb2lucyI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImdldFByb3RvY29sTGFiZWwiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYWJlbCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm90b2NvbExhYmVsUmVzb3VyY2UiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHlwZUxhYmVsIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGFiZWwiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHlwZUxhYmVsUmVzb3VyY2UiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX0lURU1fVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2bmQuYW5kcm9pZC5jdXJzb3IuaXRlbS9pbSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDVVNUT01fUFJPVE9DT0wiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTYmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJPVE9DT0wiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJPVE9DT0xfQUlNIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQUk9UT0NPTF9DVVNUT00iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQUk9UT0NPTF9HT09HTEVfVEFMSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJPVE9DT0xfSUNRIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQUk9UT0NPTF9KQUJCRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBST1RPQ09MX01TTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJPVE9DT0xfTkVUTUVFVElORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJPVE9DT0xfUVEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBST1RPQ09MX1NLWVBFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQUk9UT0NPTF9ZQUhPTyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9IT01FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX09USEVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX1dPUksiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb250YWN0c0NvbnRyYWN0LkNvbW1vbkRhdGFLaW5kcy5OaWNrbmFtZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5Db250YWN0c0NvbnRyYWN0LkNvbW1vbkRhdGFLaW5kcy5Db21tb25Db2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHNDb250cmFjdC5EYXRhQ29sdW1uc1dpdGhKb2lucyI+Cis8L2ltcGxlbWVudHM+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9JVEVNX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLml0ZW0vbmlja25hbWUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTkFNRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXRhMSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX0RFRkFVTFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfSU5JVElBTFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfTUFJTkRFTl9OQU1FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX09USEVSX05BTUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfU0hPUlRfTkFNRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbnRhY3RzQ29udHJhY3QuQ29tbW9uRGF0YUtpbmRzLk5vdGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHNDb250cmFjdC5EYXRhQ29sdW1uc1dpdGhKb2lucyI+Cis8L2ltcGxlbWVudHM+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9JVEVNX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLml0ZW0vbm90ZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOT1RFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGExJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb250YWN0c0NvbnRyYWN0LkNvbW1vbkRhdGFLaW5kcy5Pcmdhbml6YXRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHNDb250cmFjdC5Db21tb25EYXRhS2luZHMuQ29tbW9uQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzQ29udHJhY3QuRGF0YUNvbHVtbnNXaXRoSm9pbnMiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlTGFiZWwiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYWJlbCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlTGFiZWxSZXNvdXJjZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNPTVBBTlkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTEmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9JVEVNX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLml0ZW0vb3JnYW5pemF0aW9uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFUEFSVE1FTlQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSk9CX0RFU0NSSVBUSU9OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGE2JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9GRklDRV9MT0NBVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXRhOSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQSE9ORVRJQ19OQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGE4JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNZTUJPTCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXRhNyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUSVRMRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXRhNCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX09USEVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX1dPUksiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb250YWN0c0NvbnRyYWN0LkNvbW1vbkRhdGFLaW5kcy5QaG9uZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5Db250YWN0c0NvbnRyYWN0LkNvbW1vbkRhdGFLaW5kcy5Db21tb25Db2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHNDb250cmFjdC5EYXRhQ29sdW1uc1dpdGhKb2lucyI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImdldFR5cGVMYWJlbCIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxhYmVsIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFR5cGVMYWJlbFJlc291cmNlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9GSUxURVJfVVJJIgorIHR5cGU9ImFuZHJvaWQubmV0LlVyaSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX0lURU1fVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2bmQuYW5kcm9pZC5jdXJzb3IuaXRlbS9waG9uZV92MiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLmRpci9waG9uZV92MiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTlVNQkVSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGExJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfQVNTSVNUQU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9DQUxMQkFDSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9DQVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfQ09NUEFOWV9NQUlOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9GQVhfSE9NRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9GQVhfV09SSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9IT01FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX0lTRE4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX01BSU4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX01NUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfTU9CSUxFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX09USEVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX09USEVSX0ZBWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfUEFHRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfUkFESU8iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX1RFTEVYIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9UVFlfVEREIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9XT1JLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX1dPUktfTU9CSUxFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9XT1JLX1BBR0VSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbnRhY3RzQ29udHJhY3QuQ29tbW9uRGF0YUtpbmRzLlBob3RvIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzQ29udHJhY3QuRGF0YUNvbHVtbnNXaXRoSm9pbnMiPgorPC9pbXBsZW1lbnRzPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfSVRFTV9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ZuZC5hbmRyb2lkLmN1cnNvci5pdGVtL3Bob3RvJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBIT1RPIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGExNSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29udGFjdHNDb250cmFjdC5Db21tb25EYXRhS2luZHMuUmVsYXRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHNDb250cmFjdC5Db21tb25EYXRhS2luZHMuQ29tbW9uQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzQ29udHJhY3QuRGF0YUNvbHVtbnNXaXRoSm9pbnMiPgorPC9pbXBsZW1lbnRzPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfSVRFTV9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ZuZC5hbmRyb2lkLmN1cnNvci5pdGVtL3JlbGF0aW9uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5BTUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTEmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9BU1NJU1RBTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfQlJPVEhFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9DSElMRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9ET01FU1RJQ19QQVJUTkVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX0ZBVEhFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9GUklFTkQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfTUFOQUdFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9NT1RIRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfUEFSRU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX1BBUlRORVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX1JFRkVSUkVEX0JZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9SRUxBVElWRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfU0lTVEVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9TUE9VU0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29udGFjdHNDb250cmFjdC5Db21tb25EYXRhS2luZHMuU3RydWN0dXJlZE5hbWUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHNDb250cmFjdC5EYXRhQ29sdW1uc1dpdGhKb2lucyI+Cis8L2ltcGxlbWVudHM+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9JVEVNX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLml0ZW0vbmFtZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJESVNQTEFZX05BTUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTEmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkFNSUxZX05BTUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0lWRU5fTkFNRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXRhMiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNSURETEVfTkFNRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXRhNSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQSE9ORVRJQ19GQU1JTFlfTkFNRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXRhOSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQSE9ORVRJQ19HSVZFTl9OQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGE3JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBIT05FVElDX01JRERMRV9OQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGE4JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBSRUZJWCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXRhNCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVUZGSVgiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTYmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbnRhY3RzQ29udHJhY3QuQ29tbW9uRGF0YUtpbmRzLlN0cnVjdHVyZWRQb3N0YWwiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHNDb250cmFjdC5Db21tb25EYXRhS2luZHMuQ29tbW9uQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzQ29udHJhY3QuRGF0YUNvbHVtbnNXaXRoSm9pbnMiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlTGFiZWwiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYWJlbCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlTGFiZWxSZXNvdXJjZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNJVFkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTcmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9JVEVNX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLml0ZW0vcG9zdGFsLWFkZHJlc3NfdjImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ZuZC5hbmRyb2lkLmN1cnNvci5kaXIvcG9zdGFsLWFkZHJlc3NfdjImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9VUkkiCisgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPVU5UUlkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTEwJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPUk1BVFRFRF9BRERSRVNTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGExJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5FSUdIQk9SSE9PRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXRhNiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQT0JPWCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXRhNSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQT1NUQ09ERSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXRhOSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRUdJT04iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTgmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RSRUVUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGE0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfSE9NRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9PVEhFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9XT1JLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29udGFjdHNDb250cmFjdC5Db21tb25EYXRhS2luZHMuV2Vic2l0ZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5Db250YWN0c0NvbnRyYWN0LkNvbW1vbkRhdGFLaW5kcy5Db21tb25Db2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHNDb250cmFjdC5EYXRhQ29sdW1uc1dpdGhKb2lucyI+Cis8L2ltcGxlbWVudHM+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9JVEVNX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLml0ZW0vd2Vic2l0ZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX0JMT0ciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfRlRQIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX0hPTUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfSE9NRVBBR0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfT1RIRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfUFJPRklMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9XT1JLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVUkwiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTEmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDb250YWN0c0NvbnRyYWN0LkNvbnRhY3RPcHRpb25zQ29sdW1ucyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxmaWVsZCBuYW1lPSJDVVNUT01fUklOR1RPTkUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y3VzdG9tX3Jpbmd0b25lJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxBU1RfVElNRV9DT05UQUNURUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bGFzdF90aW1lX2NvbnRhY3RlZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRU5EX1RPX1ZPSUNFTUFJTCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzZW5kX3RvX3ZvaWNlbWFpbCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFSUkVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3N0YXJyZWQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVElNRVNfQ09OVEFDVEVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3RpbWVzX2NvbnRhY3RlZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJDb250YWN0c0NvbnRyYWN0LkNvbnRhY3RTdGF0dXNDb2x1bW5zIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGZpZWxkIG5hbWU9IkNPTlRBQ1RfUFJFU0VOQ0UiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y29udGFjdF9wcmVzZW5jZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05UQUNUX1NUQVRVUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtjb250YWN0X3N0YXR1cyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05UQUNUX1NUQVRVU19JQ09OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2NvbnRhY3Rfc3RhdHVzX2ljb24mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEFDVF9TVEFUVVNfTEFCRUwiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y29udGFjdF9zdGF0dXNfbGFiZWwmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEFDVF9TVEFUVVNfUkVTX1BBQ0tBR0UiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y29udGFjdF9zdGF0dXNfcmVzX3BhY2thZ2UmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEFDVF9TVEFUVVNfVElNRVNUQU1QIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2NvbnRhY3Rfc3RhdHVzX3RzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ29udGFjdHNDb250cmFjdC5Db250YWN0cyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQmFzZUNvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5Db250YWN0c0NvbnRyYWN0LkNvbnRhY3RPcHRpb25zQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzQ29udHJhY3QuQ29udGFjdFN0YXR1c0NvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5Db250YWN0c0NvbnRyYWN0LkNvbnRhY3RzQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImdldExvb2t1cFVyaSIKKyByZXR1cm49ImFuZHJvaWQubmV0LlVyaSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvbHZlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGFjdFVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvb2t1cFVyaSIKKyByZXR1cm49ImFuZHJvaWQubmV0LlVyaSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250YWN0SWQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxvb2t1cEtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb29rdXBDb250YWN0IgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJpIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc29sdmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb29rdXBVcmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYXJrQXNDb250YWN0ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc29sdmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250YWN0SWQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3BlbkNvbnRhY3RQaG90b0lucHV0U3RyZWFtIgorIHJldHVybj0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGFjdFVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9GSUxURVJfVVJJIgorIHR5cGU9ImFuZHJvaWQubmV0LlVyaSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX0dST1VQX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9JVEVNX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLml0ZW0vY29udGFjdCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX0xPT0tVUF9VUkkiCisgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfU1RSRVFVRU5UX0ZJTFRFUl9VUkkiCisgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfU1RSRVFVRU5UX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ZuZC5hbmRyb2lkLmN1cnNvci5kaXIvY29udGFjdCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9WQ0FSRF9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3RleHQveC12Y2FyZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1ZDQVJEX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbnRhY3RzQ29udHJhY3QuQ29udGFjdHMuQWdncmVnYXRpb25TdWdnZXN0aW9ucyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5CYXNlQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzQ29udHJhY3QuQ29udGFjdHNDb2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxmaWVsZCBuYW1lPSJDT05URU5UX0RJUkVDVE9SWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzdWdnZXN0aW9ucyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29udGFjdHNDb250cmFjdC5Db250YWN0cy5EYXRhIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkJhc2VDb2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHNDb250cmFjdC5EYXRhQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9ESVJFQ1RPUlkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29udGFjdHNDb250cmFjdC5Db250YWN0cy5QaG90byIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5CYXNlQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzQ29udHJhY3QuRGF0YUNvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfRElSRUNUT1JZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3Bob3RvJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ29udGFjdHNDb250cmFjdC5Db250YWN0c0NvbHVtbnMiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8ZmllbGQgbmFtZT0iRElTUExBWV9OQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2Rpc3BsYXlfbmFtZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIQVNfUEhPTkVfTlVNQkVSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2hhc19waG9uZV9udW1iZXImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU5fVklTSUJMRV9HUk9VUCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtpbl92aXNpYmxlX2dyb3VwJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxPT0tVUF9LRVkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bG9va3VwJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBIT1RPX0lEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3Bob3RvX2lkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ29udGFjdHNDb250cmFjdC5EYXRhIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzQ29udHJhY3QuRGF0YUNvbHVtbnNXaXRoSm9pbnMiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRDb250YWN0TG9va3VwVXJpIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJpIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc29sdmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhVXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLmRpci9kYXRhJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfVVJJIgorIHR5cGU9ImFuZHJvaWQubmV0LlVyaSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkNvbnRhY3RzQ29udHJhY3QuRGF0YUNvbHVtbnMiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8ZmllbGQgbmFtZT0iREFUQTEiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTEmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFUQTEwIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGExMCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVRBMTEiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTExJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRBVEExMiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXRhMTImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFUQTEzIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGExMyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVRBMTQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTE0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRBVEExNSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXRhMTUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFUQTIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFUQTMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFUQTQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFUQTUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFUQTYiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTYmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFUQTciCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTcmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFUQTgiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTgmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFUQTkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YTkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFUQV9WRVJTSU9OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGFfdmVyc2lvbiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJU19QUklNQVJZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2lzX3ByaW1hcnkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSVNfU1VQRVJfUFJJTUFSWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtpc19zdXBlcl9wcmltYXJ5JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1JTUVUWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O21pbWV0eXBlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJBV19DT05UQUNUX0lEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3Jhd19jb250YWN0X2lkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNZTkMxIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGFfc3luYzEmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1lOQzIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YV9zeW5jMiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTWU5DMyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXRhX3N5bmMzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNZTkM0IgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGFfc3luYzQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iQ29udGFjdHNDb250cmFjdC5EYXRhQ29sdW1uc1dpdGhKb2lucyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQmFzZUNvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5Db250YWN0c0NvbnRyYWN0LkNvbnRhY3RPcHRpb25zQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzQ29udHJhY3QuQ29udGFjdFN0YXR1c0NvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5Db250YWN0c0NvbnRyYWN0LkNvbnRhY3RzQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzQ29udHJhY3QuRGF0YUNvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5Db250YWN0c0NvbnRyYWN0LlJhd0NvbnRhY3RzQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzQ29udHJhY3QuU3RhdHVzQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJDb250YWN0c0NvbnRyYWN0Lkdyb3VwcyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5CYXNlQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzQ29udHJhY3QuR3JvdXBzQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzQ29udHJhY3QuU3luY0NvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJuZXdFbnRpdHlJdGVyYXRvciIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5FbnRpdHlJdGVyYXRvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9JVEVNX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLml0ZW0vZ3JvdXAmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9TVU1NQVJZX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ZuZC5hbmRyb2lkLmN1cnNvci5kaXIvZ3JvdXAmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9VUkkiCisgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ29udGFjdHNDb250cmFjdC5Hcm91cHNDb2x1bW5zIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGZpZWxkIG5hbWU9IkRFTEVURUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGVsZXRlZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHUk9VUF9WSVNJQkxFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2dyb3VwX3Zpc2libGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTk9URVMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bm90ZXMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0hPVUxEX1NZTkMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c2hvdWxkX3N5bmMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1VNTUFSWV9DT1VOVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzdW1tX2NvdW50JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNVTU1BUllfV0lUSF9QSE9ORVMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c3VtbV9waG9uZXMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1lTVEVNX0lEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3N5c3RlbV9pZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUSVRMRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt0aXRsZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkNvbnRhY3RzQ29udHJhY3QuSW50ZW50cyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbnRhY3RzQ29udHJhY3QuSW50ZW50cyIKKyB0eXBlPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzQ29udHJhY3QuSW50ZW50cyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9IkFUVEFDSF9JTUFHRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtjb20uYW5kcm9pZC5jb250YWN0cy5hY3Rpb24uQVRUQUNIX0lNQUdFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX0NSRUFURV9ERVNDUklQVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtjb20uYW5kcm9pZC5jb250YWN0cy5hY3Rpb24uQ1JFQVRFX0RFU0NSSVBUSU9OJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX0ZPUkNFX0NSRUFURSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtjb20uYW5kcm9pZC5jb250YWN0cy5hY3Rpb24uRk9SQ0VfQ1JFQVRFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFQVJDSF9TVUdHRVNUSU9OX0NMSUNLRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wcm92aWRlci5Db250YWN0cy5TRUFSQ0hfU1VHR0VTVElPTl9DTElDS0VEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFQVJDSF9TVUdHRVNUSU9OX0NSRUFURV9DT05UQUNUX0NMSUNLRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wcm92aWRlci5Db250YWN0cy5TRUFSQ0hfU1VHR0VTVElPTl9DUkVBVEVfQ09OVEFDVF9DTElDS0VEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFQVJDSF9TVUdHRVNUSU9OX0RJQUxfTlVNQkVSX0NMSUNLRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wcm92aWRlci5Db250YWN0cy5TRUFSQ0hfU1VHR0VTVElPTl9ESUFMX05VTUJFUl9DTElDS0VEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNIT1dfT1JfQ1JFQVRFX0NPTlRBQ1QiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y29tLmFuZHJvaWQuY29udGFjdHMuYWN0aW9uLlNIT1dfT1JfQ1JFQVRFX0NPTlRBQ1QmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbnRhY3RzQ29udHJhY3QuSW50ZW50cy5JbnNlcnQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb250YWN0c0NvbnRyYWN0LkludGVudHMuSW5zZXJ0IgorIHR5cGU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHNDb250cmFjdC5JbnRlbnRzLkluc2VydCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9IkFDVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uSU5TRVJUJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTVBBTlkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y29tcGFueSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFTUFJTCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtlbWFpbCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFTUFJTF9JU1BSSU1BUlkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZW1haWxfaXNwcmltYXJ5JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVNQUlMX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZW1haWxfdHlwZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGVUxMX01PREUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZnVsbF9tb2RlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklNX0hBTkRMRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtpbV9oYW5kbGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU1fSVNQUklNQVJZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2ltX2lzcHJpbWFyeSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTV9QUk9UT0NPTCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtpbV9wcm90b2NvbCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJKT0JfVElUTEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7am9iX3RpdGxlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5BTUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bmFtZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOT1RFUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtub3RlcyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQSE9ORSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtwaG9uZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQSE9ORVRJQ19OQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3Bob25ldGljX25hbWUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEhPTkVfSVNQUklNQVJZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3Bob25lX2lzcHJpbWFyeSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQSE9ORV9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3Bob25lX3R5cGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUE9TVEFMIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3Bvc3RhbCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQT1NUQUxfSVNQUklNQVJZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3Bvc3RhbF9pc3ByaW1hcnkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUE9TVEFMX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cG9zdGFsX3R5cGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VDT05EQVJZX0VNQUlMIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3NlY29uZGFyeV9lbWFpbCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRUNPTkRBUllfRU1BSUxfVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzZWNvbmRhcnlfZW1haWxfdHlwZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRUNPTkRBUllfUEhPTkUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c2Vjb25kYXJ5X3Bob25lJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFQ09OREFSWV9QSE9ORV9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3NlY29uZGFyeV9waG9uZV90eXBlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRFUlRJQVJZX0VNQUlMIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3RlcnRpYXJ5X2VtYWlsJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRFUlRJQVJZX0VNQUlMX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dGVydGlhcnlfZW1haWxfdHlwZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJURVJUSUFSWV9QSE9ORSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt0ZXJ0aWFyeV9waG9uZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJURVJUSUFSWV9QSE9ORV9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3RlcnRpYXJ5X3Bob25lX3R5cGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbnRhY3RzQ29udHJhY3QuUGhvbmVMb29rdXAiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQmFzZUNvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5Db250YWN0c0NvbnRyYWN0LkNvbnRhY3RPcHRpb25zQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzQ29udHJhY3QuQ29udGFjdHNDb2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHNDb250cmFjdC5QaG9uZUxvb2t1cENvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfRklMVEVSX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDb250YWN0c0NvbnRyYWN0LlBob25lTG9va3VwQ29sdW1ucyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxmaWVsZCBuYW1lPSJMQUJFTCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtsYWJlbCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOVU1CRVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bnVtYmVyJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dHlwZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkNvbnRhY3RzQ29udHJhY3QuUHJlc2VuY2UiCisgZXh0ZW5kcz0iYW5kcm9pZC5wcm92aWRlci5Db250YWN0c0NvbnRyYWN0LlN0YXR1c1VwZGF0ZXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb250YWN0c0NvbnRyYWN0LlByZXNlbmNlIgorIHR5cGU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHNDb250cmFjdC5QcmVzZW5jZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ29udGFjdHNDb250cmFjdC5QcmVzZW5jZUNvbHVtbnMiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8ZmllbGQgbmFtZT0iQ1VTVE9NX1BST1RPQ09MIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2N1c3RvbV9wcm90b2NvbCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVRBX0lEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ByZXNlbmNlX2RhdGFfaWQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU1fQUNDT1VOVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtpbV9hY2NvdW50JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklNX0hBTkRMRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtpbV9oYW5kbGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJPVE9DT0wiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cHJvdG9jb2wmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJDb250YWN0c0NvbnRyYWN0LlF1aWNrQ29udGFjdCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbnRhY3RzQ29udHJhY3QuUXVpY2tDb250YWN0IgorIHR5cGU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHNDb250cmFjdC5RdWlja0NvbnRhY3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ic2hvd1F1aWNrQ29udGFjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxvb2t1cFVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4Y2x1ZGVNaW1lcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNob3dRdWlja0NvbnRhY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9va3VwVXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhjbHVkZU1pbWVzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJNT0RFX0xBUkdFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNT0RFX01FRElVTSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTU9ERV9TTUFMTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbnRhY3RzQ29udHJhY3QuUmF3Q29udGFjdHMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQmFzZUNvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5Db250YWN0c0NvbnRyYWN0LkNvbnRhY3RPcHRpb25zQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzQ29udHJhY3QuUmF3Q29udGFjdHNDb2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHNDb250cmFjdC5TeW5jQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImdldENvbnRhY3RMb29rdXBVcmkiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzb2x2ZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJhd0NvbnRhY3RVcmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdFbnRpdHlJdGVyYXRvciIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5FbnRpdHlJdGVyYXRvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQUdHUkVHQVRJT05fTU9ERV9ERUZBVUxUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBR0dSRUdBVElPTl9NT0RFX0RJU0FCTEVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBR0dSRUdBVElPTl9NT0RFX0lNTUVESUFURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUdHUkVHQVRJT05fTU9ERV9TVVNQRU5ERUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfSVRFTV9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ZuZC5hbmRyb2lkLmN1cnNvci5pdGVtL3Jhd19jb250YWN0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2bmQuYW5kcm9pZC5jdXJzb3IuZGlyL3Jhd19jb250YWN0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfVVJJIgorIHR5cGU9ImFuZHJvaWQubmV0LlVyaSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29udGFjdHNDb250cmFjdC5SYXdDb250YWN0cy5EYXRhIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkJhc2VDb2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHNDb250cmFjdC5EYXRhQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9ESVJFQ1RPUlkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29udGFjdHNDb250cmFjdC5SYXdDb250YWN0cy5FbnRpdHkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQmFzZUNvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5Db250YWN0c0NvbnRyYWN0LkRhdGFDb2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxmaWVsZCBuYW1lPSJDT05URU5UX0RJUkVDVE9SWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtlbnRpdHkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFUQV9JRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXRhX2lkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ29udGFjdHNDb250cmFjdC5SYXdDb250YWN0c0NvbHVtbnMiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8ZmllbGQgbmFtZT0iQUdHUkVHQVRJT05fTU9ERSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthZ2dyZWdhdGlvbl9tb2RlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTlRBQ1RfSUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y29udGFjdF9pZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUxFVEVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RlbGV0ZWQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJDb250YWN0c0NvbnRyYWN0LlJhd0NvbnRhY3RzRW50aXR5IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkJhc2VDb2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHNDb250cmFjdC5EYXRhQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkNvbnRhY3RzQ29udHJhY3QuUmF3Q29udGFjdHNDb2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLmRpci9yYXdfY29udGFjdF9lbnRpdHkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9VUkkiCisgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRBVEFfSUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YV9pZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29udGFjdHNDb250cmFjdC5TZXR0aW5ncyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5Db250YWN0c0NvbnRyYWN0LlNldHRpbmdzQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9JVEVNX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLml0ZW0vc2V0dGluZyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLmRpci9zZXR0aW5nJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfVVJJIgorIHR5cGU9ImFuZHJvaWQubmV0LlVyaSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkNvbnRhY3RzQ29udHJhY3QuU2V0dGluZ3NDb2x1bW5zIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGZpZWxkIG5hbWU9IkFDQ09VTlRfTkFNRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthY2NvdW50X25hbWUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNDT1VOVF9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FjY291bnRfdHlwZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBTllfVU5TWU5DRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW55X3Vuc3luY2VkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNIT1VMRF9TWU5DIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3Nob3VsZF9zeW5jJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVOR1JPVVBFRF9DT1VOVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzdW1tX2NvdW50JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVOR1JPVVBFRF9WSVNJQkxFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3VuZ3JvdXBlZF92aXNpYmxlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVOR1JPVVBFRF9XSVRIX1BIT05FUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzdW1tX3Bob25lcyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJDb250YWN0c0NvbnRyYWN0LlN0YXR1c0NvbHVtbnMiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8ZmllbGQgbmFtZT0iQVZBSUxBQkxFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBV0FZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJET19OT1RfRElTVFVSQiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSURMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU5WSVNJQkxFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPRkZMSU5FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQUkVTRU5DRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDttb2RlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBSRVNFTkNFX0NVU1RPTV9TVEFUVVMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c3RhdHVzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJFU0VOQ0VfU1RBVFVTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O21vZGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFUVVMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c3RhdHVzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNUQVRVU19JQ09OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3N0YXR1c19pY29uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNUQVRVU19MQUJFTCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzdGF0dXNfbGFiZWwmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RBVFVTX1JFU19QQUNLQUdFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3N0YXR1c19yZXNfcGFja2FnZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFUVVNfVElNRVNUQU1QIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3N0YXR1c190cyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkNvbnRhY3RzQ29udHJhY3QuU3RhdHVzVXBkYXRlcyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHNDb250cmFjdC5QcmVzZW5jZUNvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5Db250YWN0c0NvbnRyYWN0LlN0YXR1c0NvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRQcmVzZW5jZUljb25SZXNvdXJjZUlkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdHVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJlc2VuY2VQcmVjZWRlbmNlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdHVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX0lURU1fVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2bmQuYW5kcm9pZC5jdXJzb3IuaXRlbS9zdGF0dXMtdXBkYXRlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2bmQuYW5kcm9pZC5jdXJzb3IuZGlyL3N0YXR1cy11cGRhdGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9VUkkiCisgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ29udGFjdHNDb250cmFjdC5TeW5jQ29sdW1ucyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQ29udGFjdHNDb250cmFjdC5CYXNlU3luY0NvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPGZpZWxkIG5hbWU9IkFDQ09VTlRfTkFNRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthY2NvdW50X25hbWUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNDT1VOVF9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FjY291bnRfdHlwZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJESVJUWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkaXJ0eSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTT1VSQ0VfSUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c291cmNlaWQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVkVSU0lPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2ZXJzaW9uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ29udGFjdHNDb250cmFjdC5TeW5jU3RhdGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuU3luY1N0YXRlQ29udHJhY3QuQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRQcm92aWRlckNsaWVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjb3VudCIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZW1vdGVFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdpdGhVcmkiCisgcmV0dXJuPSJhbmRyb2lkLnV0aWwuUGFpciZsdDthbmRyb2lkLm5ldC5VcmksIGJ5dGVbXSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UHJvdmlkZXJDbGllbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY291bnQiIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUmVtb3RlRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdTZXRPcGVyYXRpb24iCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFByb3ZpZGVyT3BlcmF0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY291bnQiIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UHJvdmlkZXJDbGllbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY291bnQiIHR5cGU9ImFuZHJvaWQuYWNjb3VudHMuQWNjb3VudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZW1vdGVFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9ESVJFQ1RPUlkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c3luY3N0YXRlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfVVJJIgorIHR5cGU9ImFuZHJvaWQubmV0LlVyaSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTGl2ZUZvbGRlcnMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkJhc2VDb2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fQ1JFQVRFX0xJVkVfRk9MREVSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5DUkVBVEVfTElWRV9GT0xERVImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVTQ1JJUFRJT04iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGVzY3JpcHRpb24mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRElTUExBWV9NT0RFX0dSSUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRJU1BMQVlfTU9ERV9MSVNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9MSVZFX0ZPTERFUl9CQVNFX0lOVEVOVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5leHRyYS5saXZlZm9sZGVyLkJBU0VfSU5URU5UJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX0xJVkVfRk9MREVSX0RJU1BMQVlfTU9ERSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5leHRyYS5saXZlZm9sZGVyLkRJU1BMQVlfTU9ERSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9MSVZFX0ZPTERFUl9JQ09OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmV4dHJhLmxpdmVmb2xkZXIuSUNPTiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9MSVZFX0ZPTERFUl9OQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmV4dHJhLmxpdmVmb2xkZXIuTkFNRSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJQ09OX0JJVE1BUCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtpY29uX2JpdG1hcCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJQ09OX1BBQ0tBR0UiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aWNvbl9wYWNrYWdlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklDT05fUkVTT1VSQ0UiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aWNvbl9yZXNvdXJjZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTlRFTlQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aW50ZW50JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5BTUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bmFtZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTWVkaWFTdG9yZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNZWRpYVN0b3JlIgorIHR5cGU9ImFuZHJvaWQucHJvdmlkZXIuTWVkaWFTdG9yZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRNZWRpYVNjYW5uZXJVcmkiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkFDVElPTl9JTUFHRV9DQVBUVVJFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQubWVkaWEuYWN0aW9uLklNQUdFX0NBUFRVUkUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1ZJREVPX0NBUFRVUkUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5tZWRpYS5hY3Rpb24uVklERU9fQ0FQVFVSRSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBVVRIT1JJVFkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bWVkaWEmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfRFVSQVRJT05fTElNSVQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuZXh0cmEuZHVyYXRpb25MaW1pdCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9GSU5JU0hfT05fQ09NUExFVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5leHRyYS5maW5pc2hPbkNvbXBsZXRpb24mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfRlVMTF9TQ1JFRU4iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuZXh0cmEuZnVsbFNjcmVlbiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9NRURJQV9BTEJVTSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5leHRyYS5hbGJ1bSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9NRURJQV9BUlRJU1QiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5pbnRlbnQuZXh0cmEuYXJ0aXN0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX01FRElBX0ZPQ1VTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmV4dHJhLmZvY3VzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX01FRElBX1RJVExFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmV4dHJhLnRpdGxlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX09VVFBVVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtvdXRwdXQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfU0NSRUVOX09SSUVOVEFUSU9OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmV4dHJhLnNjcmVlbk9yaWVudGF0aW9uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX1NIT1dfQUNUSU9OX0lDT05TIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmV4dHJhLnNob3dBY3Rpb25JY29ucyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9TSVpFX0xJTUlUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmV4dHJhLnNpemVMaW1pdCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9WSURFT19RVUFMSVRZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmV4dHJhLnZpZGVvUXVhbGl0eSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTlRFTlRfQUNUSU9OX01FRElBX1NFQVJDSCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uTUVESUFfU0VBUkNIJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklOVEVOVF9BQ1RJT05fTVVTSUNfUExBWUVSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuaW50ZW50LmFjdGlvbi5NVVNJQ19QTEFZRVImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU5URU5UX0FDVElPTl9TVElMTF9JTUFHRV9DQU1FUkEiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5tZWRpYS5hY3Rpb24uU1RJTExfSU1BR0VfQ0FNRVJBJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklOVEVOVF9BQ1RJT05fVklERU9fQ0FNRVJBIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQubWVkaWEuYWN0aW9uLlZJREVPX0NBTUVSQSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNRURJQV9TQ0FOTkVSX1ZPTFVNRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2b2x1bWUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVU5LTk9XTl9TVFJJTkciCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Jmx0O3Vua25vd24mZ3Q7JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNZWRpYVN0b3JlLkF1ZGlvIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTWVkaWFTdG9yZS5BdWRpbyIKKyB0eXBlPSJhbmRyb2lkLnByb3ZpZGVyLk1lZGlhU3RvcmUuQXVkaW8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ia2V5Rm9yIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJNZWRpYVN0b3JlLkF1ZGlvLkFsYnVtQ29sdW1ucyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxmaWVsZCBuYW1lPSJBTEJVTSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbGJ1bSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBTEJVTV9BUlQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YWxidW1fYXJ0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFMQlVNX0lEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FsYnVtX2lkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFMQlVNX0tFWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbGJ1bV9rZXkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVJUSVNUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FydGlzdCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGSVJTVF9ZRUFSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O21pbnllYXImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTEFTVF9ZRUFSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O21heHllYXImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTlVNQkVSX09GX1NPTkdTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O251bXNvbmdzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5VTUJFUl9PRl9TT05HU19GT1JfQVJUSVNUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O251bXNvbmdzX2J5X2FydGlzdCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9Ik1lZGlhU3RvcmUuQXVkaW8uQWxidW1zIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkJhc2VDb2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuTWVkaWFTdG9yZS5BdWRpby5BbGJ1bUNvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1lZGlhU3RvcmUuQXVkaW8uQWxidW1zIgorIHR5cGU9ImFuZHJvaWQucHJvdmlkZXIuTWVkaWFTdG9yZS5BdWRpby5BbGJ1bXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudFVyaSIKKyByZXR1cm49ImFuZHJvaWQubmV0LlVyaSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2b2x1bWVOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ZuZC5hbmRyb2lkLmN1cnNvci5kaXIvYWxidW1zJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFRkFVTFRfU09SVF9PUkRFUiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbGJ1bV9rZXkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRU5UUllfQ09OVEVOVF9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ZuZC5hbmRyb2lkLmN1cnNvci5pdGVtL2FsYnVtJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVEVSTkFMX0NPTlRFTlRfVVJJIgorIHR5cGU9ImFuZHJvaWQubmV0LlVyaSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTlRFUk5BTF9DT05URU5UX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJNZWRpYVN0b3JlLkF1ZGlvLkFydGlzdENvbHVtbnMiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iQVJUSVNUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FydGlzdCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBUlRJU1RfS0VZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FydGlzdF9rZXkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTlVNQkVSX09GX0FMQlVNUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtudW1iZXJfb2ZfYWxidW1zJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5VTUJFUl9PRl9UUkFDS1MiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bnVtYmVyX29mX3RyYWNrcyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9Ik1lZGlhU3RvcmUuQXVkaW8uQXJ0aXN0cyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5CYXNlQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLk1lZGlhU3RvcmUuQXVkaW8uQXJ0aXN0Q29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTWVkaWFTdG9yZS5BdWRpby5BcnRpc3RzIgorIHR5cGU9ImFuZHJvaWQucHJvdmlkZXIuTWVkaWFTdG9yZS5BdWRpby5BcnRpc3RzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldENvbnRlbnRVcmkiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idm9sdW1lTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2bmQuYW5kcm9pZC5jdXJzb3IuZGlyL2FydGlzdHMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVGQVVMVF9TT1JUX09SREVSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FydGlzdF9rZXkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRU5UUllfQ09OVEVOVF9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ZuZC5hbmRyb2lkLmN1cnNvci5pdGVtL2FydGlzdCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRFUk5BTF9DT05URU5UX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU5URVJOQUxfQ09OVEVOVF9VUkkiCisgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNZWRpYVN0b3JlLkF1ZGlvLkFydGlzdHMuQWxidW1zIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLk1lZGlhU3RvcmUuQXVkaW8uQWxidW1Db2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNZWRpYVN0b3JlLkF1ZGlvLkFydGlzdHMuQWxidW1zIgorIHR5cGU9ImFuZHJvaWQucHJvdmlkZXIuTWVkaWFTdG9yZS5BdWRpby5BcnRpc3RzLkFsYnVtcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZW50VXJpIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJpIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idm9sdW1lTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJ0aXN0SWQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ik1lZGlhU3RvcmUuQXVkaW8uQXVkaW9Db2x1bW5zIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5NZWRpYVN0b3JlLk1lZGlhQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8ZmllbGQgbmFtZT0iQUxCVU0iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YWxidW0mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUxCVU1fQVJUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FsYnVtX2FydCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBTEJVTV9JRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbGJ1bV9pZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBTEJVTV9LRVkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YWxidW1fa2V5JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFSVElTVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthcnRpc3QmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVJUSVNUX0lEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FydGlzdF9pZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBUlRJU1RfS0VZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FydGlzdF9rZXkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQk9PS01BUksiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Ym9va21hcmsmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09NUE9TRVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y29tcG9zZXImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRFVSQVRJT04iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZHVyYXRpb24mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSVNfQUxBUk0iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aXNfYWxhcm0mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSVNfTVVTSUMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aXNfbXVzaWMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSVNfTk9USUZJQ0FUSU9OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2lzX25vdGlmaWNhdGlvbiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJU19QT0RDQVNUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2lzX3BvZGNhc3QmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSVNfUklOR1RPTkUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aXNfcmluZ3RvbmUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVElUTEVfS0VZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3RpdGxlX2tleSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUUkFDSyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt0cmFjayZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJZRUFSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3llYXImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJNZWRpYVN0b3JlLkF1ZGlvLkdlbnJlcyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5CYXNlQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLk1lZGlhU3RvcmUuQXVkaW8uR2VucmVzQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTWVkaWFTdG9yZS5BdWRpby5HZW5yZXMiCisgdHlwZT0iYW5kcm9pZC5wcm92aWRlci5NZWRpYVN0b3JlLkF1ZGlvLkdlbnJlcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZW50VXJpIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJpIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZvbHVtZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLmRpci9nZW5yZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUX1NPUlRfT1JERVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bmFtZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFTlRSWV9DT05URU5UX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLml0ZW0vZ2VucmUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhURVJOQUxfQ09OVEVOVF9VUkkiCisgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklOVEVSTkFMX0NPTlRFTlRfVVJJIgorIHR5cGU9ImFuZHJvaWQubmV0LlVyaSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTWVkaWFTdG9yZS5BdWRpby5HZW5yZXMuTWVtYmVycyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5NZWRpYVN0b3JlLkF1ZGlvLkF1ZGlvQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTWVkaWFTdG9yZS5BdWRpby5HZW5yZXMuTWVtYmVycyIKKyB0eXBlPSJhbmRyb2lkLnByb3ZpZGVyLk1lZGlhU3RvcmUuQXVkaW8uR2VucmVzLk1lbWJlcnMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudFVyaSIKKyByZXR1cm49ImFuZHJvaWQubmV0LlVyaSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZvbHVtZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImdlbnJlSWQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBVURJT19JRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthdWRpb19pZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX0RJUkVDVE9SWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDttZW1iZXJzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFRkFVTFRfU09SVF9PUkRFUiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt0aXRsZV9rZXkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0VOUkVfSUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Z2VucmVfaWQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJNZWRpYVN0b3JlLkF1ZGlvLkdlbnJlc0NvbHVtbnMiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iTkFNRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtuYW1lJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iTWVkaWFTdG9yZS5BdWRpby5NZWRpYSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5NZWRpYVN0b3JlLkF1ZGlvLkF1ZGlvQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTWVkaWFTdG9yZS5BdWRpby5NZWRpYSIKKyB0eXBlPSJhbmRyb2lkLnByb3ZpZGVyLk1lZGlhU3RvcmUuQXVkaW8uTWVkaWEiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudFVyaSIKKyByZXR1cm49ImFuZHJvaWQubmV0LlVyaSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2b2x1bWVOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbnRlbnRVcmlGb3JQYXRoIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJpIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdGgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLmRpci9hdWRpbyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUX1NPUlRfT1JERVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dGl0bGVfa2V5JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVEVSTkFMX0NPTlRFTlRfVVJJIgorIHR5cGU9ImFuZHJvaWQubmV0LlVyaSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9NQVhfQllURVMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5wcm92aWRlci5NZWRpYVN0b3JlLmV4dHJhLk1BWF9CWVRFUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTlRFUk5BTF9DT05URU5UX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkVDT1JEX1NPVU5EX0FDVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnByb3ZpZGVyLk1lZGlhU3RvcmUuUkVDT1JEX1NPVU5EJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNZWRpYVN0b3JlLkF1ZGlvLlBsYXlsaXN0cyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5CYXNlQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLk1lZGlhU3RvcmUuQXVkaW8uUGxheWxpc3RzQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTWVkaWFTdG9yZS5BdWRpby5QbGF5bGlzdHMiCisgdHlwZT0iYW5kcm9pZC5wcm92aWRlci5NZWRpYVN0b3JlLkF1ZGlvLlBsYXlsaXN0cyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZW50VXJpIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJpIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZvbHVtZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLmRpci9wbGF5bGlzdCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUX1NPUlRfT1JERVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bmFtZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFTlRSWV9DT05URU5UX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLml0ZW0vcGxheWxpc3QmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhURVJOQUxfQ09OVEVOVF9VUkkiCisgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklOVEVSTkFMX0NPTlRFTlRfVVJJIgorIHR5cGU9ImFuZHJvaWQubmV0LlVyaSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTWVkaWFTdG9yZS5BdWRpby5QbGF5bGlzdHMuTWVtYmVycyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5NZWRpYVN0b3JlLkF1ZGlvLkF1ZGlvQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTWVkaWFTdG9yZS5BdWRpby5QbGF5bGlzdHMuTWVtYmVycyIKKyB0eXBlPSJhbmRyb2lkLnByb3ZpZGVyLk1lZGlhU3RvcmUuQXVkaW8uUGxheWxpc3RzLk1lbWJlcnMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudFVyaSIKKyByZXR1cm49ImFuZHJvaWQubmV0LlVyaSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZvbHVtZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBsYXlsaXN0SWQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibW92ZUl0ZW0iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbGF5bGlzdElkIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmcm9tIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBVURJT19JRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthdWRpb19pZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX0RJUkVDVE9SWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDttZW1iZXJzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFRkFVTFRfU09SVF9PUkRFUiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtwbGF5X29yZGVyJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBMQVlMSVNUX0lEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3BsYXlsaXN0X2lkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBMQVlfT1JERVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cGxheV9vcmRlciZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJfSUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7X2lkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iTWVkaWFTdG9yZS5BdWRpby5QbGF5bGlzdHNDb2x1bW5zIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGZpZWxkIG5hbWU9IkRBVEEiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7X2RhdGEmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFURV9BRERFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXRlX2FkZGVkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRBVEVfTU9ESUZJRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0ZV9tb2RpZmllZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O25hbWUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJNZWRpYVN0b3JlLkltYWdlcyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1lZGlhU3RvcmUuSW1hZ2VzIgorIHR5cGU9ImFuZHJvaWQucHJvdmlkZXIuTWVkaWFTdG9yZS5JbWFnZXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ik1lZGlhU3RvcmUuSW1hZ2VzLkltYWdlQ29sdW1ucyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuTWVkaWFTdG9yZS5NZWRpYUNvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPGZpZWxkIG5hbWU9IkJVQ0tFVF9ESVNQTEFZX05BTUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YnVja2V0X2Rpc3BsYXlfbmFtZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJCVUNLRVRfSUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YnVja2V0X2lkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRBVEVfVEFLRU4iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0ZXRha2VuJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFU0NSSVBUSU9OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2Rlc2NyaXB0aW9uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklTX1BSSVZBVEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aXNwcml2YXRlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxBVElUVURFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2xhdGl0dWRlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxPTkdJVFVERSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtsb25naXR1ZGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUlOSV9USFVNQl9NQUdJQyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDttaW5pX3RodW1iX21hZ2ljJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9SSUVOVEFUSU9OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O29yaWVudGF0aW9uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBJQ0FTQV9JRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtwaWNhc2FfaWQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJNZWRpYVN0b3JlLkltYWdlcy5NZWRpYSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5NZWRpYVN0b3JlLkltYWdlcy5JbWFnZUNvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1lZGlhU3RvcmUuSW1hZ2VzLk1lZGlhIgorIHR5cGU9ImFuZHJvaWQucHJvdmlkZXIuTWVkaWFTdG9yZS5JbWFnZXMuTWVkaWEiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Qml0bWFwIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbnRlbnRVcmkiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idm9sdW1lTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnNlcnRJbWFnZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW1hZ2VQYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZXNjcmlwdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRmlsZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnNlcnRJbWFnZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGl0bGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc2NyaXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InF1ZXJ5IgorIHJldHVybj0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb2plY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJxdWVyeSIKKyByZXR1cm49ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm9qZWN0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoZXJlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcmRlckJ5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InF1ZXJ5IgorIHJldHVybj0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb2plY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3Rpb25BcmdzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9yZGVyQnkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLmRpci9pbWFnZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUX1NPUlRfT1JERVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YnVja2V0X2Rpc3BsYXlfbmFtZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRFUk5BTF9DT05URU5UX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU5URVJOQUxfQ09OVEVOVF9VUkkiCisgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNZWRpYVN0b3JlLkltYWdlcy5UaHVtYm5haWxzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5CYXNlQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTWVkaWFTdG9yZS5JbWFnZXMuVGh1bWJuYWlscyIKKyB0eXBlPSJhbmRyb2lkLnByb3ZpZGVyLk1lZGlhU3RvcmUuSW1hZ2VzLlRodW1ibmFpbHMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2FuY2VsVGh1bWJuYWlsUmVxdWVzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWdJZCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYW5jZWxUaHVtYm5haWxSZXF1ZXN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZ0lkIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJncm91cElkIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbnRlbnRVcmkiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idm9sdW1lTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaHVtYm5haWwiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZ0lkIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJraW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9wdGlvbnMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwRmFjdG9yeS5PcHRpb25zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRodW1ibmFpbCIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnSWQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwSWQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtpbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3B0aW9ucyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXBGYWN0b3J5Lk9wdGlvbnMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVlcnkiCisgcmV0dXJuPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvamVjdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InF1ZXJ5TWluaVRodW1ibmFpbCIKKyByZXR1cm49ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWdJZCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2luZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm9qZWN0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVlcnlNaW5pVGh1bWJuYWlscyIKKyByZXR1cm49ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJraW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb2plY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkRBVEEiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7X2RhdGEmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVGQVVMVF9TT1JUX09SREVSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2ltYWdlX2lkIEFTQyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRFUk5BTF9DT05URU5UX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRlVMTF9TQ1JFRU5fS0lORCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSEVJR0hUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2hlaWdodCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTUFHRV9JRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtpbWFnZV9pZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTlRFUk5BTF9DT05URU5UX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0lORCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtraW5kJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1JQ1JPX0tJTkQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1JTklfS0lORCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEhVTUJfREFUQSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt0aHVtYl9kYXRhJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRFRIIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dpZHRoJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iTWVkaWFTdG9yZS5NZWRpYUNvbHVtbnMiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLkJhc2VDb2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxmaWVsZCBuYW1lPSJEQVRBIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O19kYXRhJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRBVEVfQURERUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0ZV9hZGRlZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVRFX01PRElGSUVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGVfbW9kaWZpZWQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRElTUExBWV9OQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O19kaXNwbGF5X25hbWUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUlNRV9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O21pbWVfdHlwZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTSVpFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O19zaXplJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRJVExFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3RpdGxlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iTWVkaWFTdG9yZS5WaWRlbyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1lZGlhU3RvcmUuVmlkZW8iCisgdHlwZT0iYW5kcm9pZC5wcm92aWRlci5NZWRpYVN0b3JlLlZpZGVvIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InF1ZXJ5IgorIHJldHVybj0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb2plY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkRFRkFVTFRfU09SVF9PUkRFUiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtfZGlzcGxheV9uYW1lJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNZWRpYVN0b3JlLlZpZGVvLk1lZGlhIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnByb3ZpZGVyLk1lZGlhU3RvcmUuVmlkZW8uVmlkZW9Db2x1bW5zIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNZWRpYVN0b3JlLlZpZGVvLk1lZGlhIgorIHR5cGU9ImFuZHJvaWQucHJvdmlkZXIuTWVkaWFTdG9yZS5WaWRlby5NZWRpYSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZW50VXJpIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJpIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZvbHVtZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm5kLmFuZHJvaWQuY3Vyc29yLmRpci92aWRlbyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUX1NPUlRfT1JERVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dGl0bGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhURVJOQUxfQ09OVEVOVF9VUkkiCisgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklOVEVSTkFMX0NPTlRFTlRfVVJJIgorIHR5cGU9ImFuZHJvaWQubmV0LlVyaSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTWVkaWFTdG9yZS5WaWRlby5UaHVtYm5haWxzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5CYXNlQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTWVkaWFTdG9yZS5WaWRlby5UaHVtYm5haWxzIgorIHR5cGU9ImFuZHJvaWQucHJvdmlkZXIuTWVkaWFTdG9yZS5WaWRlby5UaHVtYm5haWxzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNhbmNlbFRodW1ibmFpbFJlcXVlc3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnSWQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2FuY2VsVGh1bWJuYWlsUmVxdWVzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWdJZCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBJZCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZW50VXJpIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJpIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZvbHVtZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGh1bWJuYWlsIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWdJZCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2luZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcHRpb25zIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcEZhY3RvcnkuT3B0aW9ucyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaHVtYm5haWwiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZ0lkIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJncm91cElkIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJraW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9wdGlvbnMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwRmFjdG9yeS5PcHRpb25zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iREFUQSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtfZGF0YSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUX1NPUlRfT1JERVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dmlkZW9faWQgQVNDJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVEVSTkFMX0NPTlRFTlRfVVJJIgorIHR5cGU9ImFuZHJvaWQubmV0LlVyaSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGVUxMX1NDUkVFTl9LSU5EIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIRUlHSFQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aGVpZ2h0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklOVEVSTkFMX0NPTlRFTlRfVVJJIgorIHR5cGU9ImFuZHJvaWQubmV0LlVyaSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLSU5EIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2tpbmQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUlDUk9fS0lORCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUlOSV9LSU5EIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJWSURFT19JRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2aWRlb19pZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSURUSCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt3aWR0aCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ik1lZGlhU3RvcmUuVmlkZW8uVmlkZW9Db2x1bW5zIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5NZWRpYVN0b3JlLk1lZGlhQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8ZmllbGQgbmFtZT0iQUxCVU0iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YWxidW0mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVJUSVNUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FydGlzdCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJCT09LTUFSSyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtib29rbWFyayZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJCVUNLRVRfRElTUExBWV9OQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2J1Y2tldF9kaXNwbGF5X25hbWUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQlVDS0VUX0lEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2J1Y2tldF9pZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDQVRFR09SWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtjYXRlZ29yeSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVRFX1RBS0VOIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGV0YWtlbiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERVNDUklQVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkZXNjcmlwdGlvbiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEVVJBVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkdXJhdGlvbiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJU19QUklWQVRFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2lzcHJpdmF0ZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMQU5HVUFHRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtsYW5ndWFnZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMQVRJVFVERSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtsYXRpdHVkZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMT05HSVRVREUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bG9uZ2l0dWRlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1JTklfVEhVTUJfTUFHSUMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bWluaV90aHVtYl9tYWdpYyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRVNPTFVUSU9OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3Jlc29sdXRpb24mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEFHUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt0YWdzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9Ik9wZW5hYmxlQ29sdW1ucyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iRElTUExBWV9OQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O19kaXNwbGF5X25hbWUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0laRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtfc2l6ZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlNlYXJjaFJlY2VudFN1Z2dlc3Rpb25zIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTZWFyY2hSZWNlbnRTdWdnZXN0aW9ucyIKKyB0eXBlPSJhbmRyb2lkLnByb3ZpZGVyLlNlYXJjaFJlY2VudFN1Z2dlc3Rpb25zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF1dGhvcml0eSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xlYXJIaXN0b3J5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzYXZlUmVjZW50UXVlcnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJxdWVyeVN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZTIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idHJ1bmNhdGVIaXN0b3J5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1heEVudHJpZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IlFVRVJJRVNfUFJPSkVDVElPTl8xTElORSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUVVFUklFU19QUk9KRUNUSU9OXzJMSU5FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJRVUVSSUVTX1BST0pFQ1RJT05fREFURV9JTkRFWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUVVFUklFU19QUk9KRUNUSU9OX0RJU1BMQVkxX0lOREVYIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJRVUVSSUVTX1BST0pFQ1RJT05fRElTUExBWTJfSU5ERVgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlFVRVJJRVNfUFJPSkVDVElPTl9RVUVSWV9JTkRFWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNldHRpbmdzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNldHRpbmdzIgorIHR5cGU9ImFuZHJvaWQucHJvdmlkZXIuU2V0dGluZ3MiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fQUNDRVNTSUJJTElUWV9TRVRUSU5HUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnNldHRpbmdzLkFDQ0VTU0lCSUxJVFlfU0VUVElOR1MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0FERF9BQ0NPVU5UIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc2V0dGluZ3MuQUREX0FDQ09VTlRfU0VUVElOR1MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0FJUlBMQU5FX01PREVfU0VUVElOR1MiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5zZXR0aW5ncy5BSVJQTEFORV9NT0RFX1NFVFRJTkdTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9BUE5fU0VUVElOR1MiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5zZXR0aW5ncy5BUE5fU0VUVElOR1MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0FQUExJQ0FUSU9OX0RFVkVMT1BNRU5UX1NFVFRJTkdTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc2V0dGluZ3MuQVBQTElDQVRJT05fREVWRUxPUE1FTlRfU0VUVElOR1MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0FQUExJQ0FUSU9OX1NFVFRJTkdTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc2V0dGluZ3MuQVBQTElDQVRJT05fU0VUVElOR1MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0JMVUVUT09USF9TRVRUSU5HUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnNldHRpbmdzLkJMVUVUT09USF9TRVRUSU5HUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fREFUQV9ST0FNSU5HX1NFVFRJTkdTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc2V0dGluZ3MuREFUQV9ST0FNSU5HX1NFVFRJTkdTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9EQVRFX1NFVFRJTkdTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc2V0dGluZ3MuREFURV9TRVRUSU5HUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fREVWSUNFX0lORk9fU0VUVElOR1MiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5zZXR0aW5ncy5ERVZJQ0VfSU5GT19TRVRUSU5HUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fRElTUExBWV9TRVRUSU5HUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnNldHRpbmdzLkRJU1BMQVlfU0VUVElOR1MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0lOUFVUX01FVEhPRF9TRVRUSU5HUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnNldHRpbmdzLklOUFVUX01FVEhPRF9TRVRUSU5HUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fSU5URVJOQUxfU1RPUkFHRV9TRVRUSU5HUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnNldHRpbmdzLklOVEVSTkFMX1NUT1JBR0VfU0VUVElOR1MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0xPQ0FMRV9TRVRUSU5HUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnNldHRpbmdzLkxPQ0FMRV9TRVRUSU5HUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fTE9DQVRJT05fU09VUkNFX1NFVFRJTkdTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc2V0dGluZ3MuTE9DQVRJT05fU09VUkNFX1NFVFRJTkdTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9NQU5BR0VfQVBQTElDQVRJT05TX1NFVFRJTkdTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc2V0dGluZ3MuTUFOQUdFX0FQUExJQ0FUSU9OU19TRVRUSU5HUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fTUVNT1JZX0NBUkRfU0VUVElOR1MiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5zZXR0aW5ncy5NRU1PUllfQ0FSRF9TRVRUSU5HUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fTkVUV09SS19PUEVSQVRPUl9TRVRUSU5HUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnNldHRpbmdzLk5FVFdPUktfT1BFUkFUT1JfU0VUVElOR1MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1BSSVZBQ1lfU0VUVElOR1MiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5zZXR0aW5ncy5QUklWQUNZX1NFVFRJTkdTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9RVUlDS19MQVVOQ0hfU0VUVElOR1MiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5zZXR0aW5ncy5RVUlDS19MQVVOQ0hfU0VUVElOR1MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1NFQVJDSF9TRVRUSU5HUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnNlYXJjaC5hY3Rpb24uU0VBUkNIX1NFVFRJTkdTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9TRUNVUklUWV9TRVRUSU5HUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnNldHRpbmdzLlNFQ1VSSVRZX1NFVFRJTkdTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9TRVRUSU5HUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnNldHRpbmdzLlNFVFRJTkdTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9TT1VORF9TRVRUSU5HUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnNldHRpbmdzLlNPVU5EX1NFVFRJTkdTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9TWU5DX1NFVFRJTkdTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc2V0dGluZ3MuU1lOQ19TRVRUSU5HUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fVVNFUl9ESUNUSU9OQVJZX1NFVFRJTkdTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc2V0dGluZ3MuVVNFUl9ESUNUSU9OQVJZX1NFVFRJTkdTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9XSUZJX0lQX1NFVFRJTkdTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc2V0dGluZ3MuV0lGSV9JUF9TRVRUSU5HUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fV0lGSV9TRVRUSU5HUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnNldHRpbmdzLldJRklfU0VUVElOR1MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1dJUkVMRVNTX1NFVFRJTkdTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc2V0dGluZ3MuV0lSRUxFU1NfU0VUVElOR1MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVVUSE9SSVRZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3NldHRpbmdzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX0FVVEhPUklUSUVTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2F1dGhvcml0aWVzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTZXR0aW5ncy5OYW1lVmFsdWVUYWJsZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuQmFzZUNvbHVtbnMiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNldHRpbmdzLk5hbWVWYWx1ZVRhYmxlIgorIHR5cGU9ImFuZHJvaWQucHJvdmlkZXIuU2V0dGluZ3MuTmFtZVZhbHVlVGFibGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0VXJpRm9yIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJpIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dFN0cmluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzb2x2ZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Ik5BTUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bmFtZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJWQUxVRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2YWx1ZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2V0dGluZ3MuU2VjdXJlIgorIGV4dGVuZHM9ImFuZHJvaWQucHJvdmlkZXIuU2V0dGluZ3MuTmFtZVZhbHVlVGFibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2V0dGluZ3MuU2VjdXJlIgorIHR5cGU9ImFuZHJvaWQucHJvdmlkZXIuU2V0dGluZ3MuU2VjdXJlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEZsb2F0IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmxvYXQiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU2V0dGluZ3MuU2V0dGluZ05vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLnByb3ZpZGVyLlNldHRpbmdzLlNldHRpbmdOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEludCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU2V0dGluZ3MuU2V0dGluZ05vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLnByb3ZpZGVyLlNldHRpbmdzLlNldHRpbmdOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb25nIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvbmciCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTZXR0aW5ncy5TZXR0aW5nTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQucHJvdmlkZXIuU2V0dGluZ3MuU2V0dGluZ05vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvbHZlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVcmlGb3IiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5VcmkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0xvY2F0aW9uUHJvdmlkZXJFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRGbG9hdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRJbnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dExvbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRTdHJpbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc29sdmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMb2NhdGlvblByb3ZpZGVyRW5hYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBQ0NFU1NJQklMSVRZX0VOQUJMRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YWNjZXNzaWJpbGl0eV9lbmFibGVkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFEQl9FTkFCTEVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FkYl9lbmFibGVkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFMTE9XRURfR0VPTE9DQVRJT05fT1JJR0lOUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbGxvd2VkX2dlb2xvY2F0aW9uX29yaWdpbnMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUxMT1dfTU9DS19MT0NBVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDttb2NrX2xvY2F0aW9uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFORFJPSURfSUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZF9pZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJCQUNLR1JPVU5EX0RBVEEiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YmFja2dyb3VuZF9kYXRhJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJMVUVUT09USF9PTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtibHVldG9vdGhfb24mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9VUkkiCisgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRBVEFfUk9BTUlORyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXRhX3JvYW1pbmcmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVGQVVMVF9JTlBVVF9NRVRIT0QiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGVmYXVsdF9pbnB1dF9tZXRob2QmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVWSUNFX1BST1ZJU0lPTkVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RldmljZV9wcm92aXNpb25lZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFTkFCTEVEX0FDQ0VTU0lCSUxJVFlfU0VSVklDRVMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZW5hYmxlZF9hY2Nlc3NpYmlsaXR5X3NlcnZpY2VzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVOQUJMRURfSU5QVVRfTUVUSE9EUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtlbmFibGVkX2lucHV0X21ldGhvZHMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSFRUUF9QUk9YWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwX3Byb3h5JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklOU1RBTExfTk9OX01BUktFVF9BUFBTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2luc3RhbGxfbm9uX21hcmtldF9hcHBzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxPQ0FUSU9OX1BST1ZJREVSU19BTExPV0VEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2xvY2F0aW9uX3Byb3ZpZGVyc19hbGxvd2VkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxPQ0tfUEFUVEVSTl9FTkFCTEVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2xvY2tfcGF0dGVybl9hdXRvbG9jayZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMT0NLX1BBVFRFUk5fVEFDVElMRV9GRUVEQkFDS19FTkFCTEVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2xvY2tfcGF0dGVybl90YWN0aWxlX2ZlZWRiYWNrX2VuYWJsZWQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTE9DS19QQVRURVJOX1ZJU0lCTEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bG9ja19wYXR0ZXJuX3Zpc2libGVfcGF0dGVybiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMT0dHSU5HX0lEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2xvZ2dpbmdfaWQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJORVRXT1JLX1BSRUZFUkVOQ0UiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bmV0d29ya19wcmVmZXJlbmNlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBBUkVOVEFMX0NPTlRST0xfRU5BQkxFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtwYXJlbnRhbF9jb250cm9sX2VuYWJsZWQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEFSRU5UQUxfQ09OVFJPTF9MQVNUX1VQREFURSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtwYXJlbnRhbF9jb250cm9sX2xhc3RfdXBkYXRlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBBUkVOVEFMX0NPTlRST0xfUkVESVJFQ1RfVVJMIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3BhcmVudGFsX2NvbnRyb2xfcmVkaXJlY3RfdXJsJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFVFRJTkdTX0NMQVNTTkFNRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzZXR0aW5nc19jbGFzc25hbWUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1lTX1BST1BfU0VUVElOR19WRVJTSU9OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3N5cy5zZXR0aW5nc19zZWN1cmVfdmVyc2lvbiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUVFNfREVGQVVMVF9DT1VOVFJZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3R0c19kZWZhdWx0X2NvdW50cnkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFRTX0RFRkFVTFRfTEFORyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt0dHNfZGVmYXVsdF9sYW5nJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRUU19ERUZBVUxUX1BJVENIIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3R0c19kZWZhdWx0X3BpdGNoJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRUU19ERUZBVUxUX1JBVEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dHRzX2RlZmF1bHRfcmF0ZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUVFNfREVGQVVMVF9TWU5USCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt0dHNfZGVmYXVsdF9zeW50aCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUVFNfREVGQVVMVF9WQVJJQU5UIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3R0c19kZWZhdWx0X3ZhcmlhbnQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFRTX0VOQUJMRURfUExVR0lOUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt0dHNfZW5hYmxlZF9wbHVnaW5zJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRUU19VU0VfREVGQVVMVFMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dHRzX3VzZV9kZWZhdWx0cyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVU0JfTUFTU19TVE9SQUdFX0VOQUJMRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dXNiX21hc3Nfc3RvcmFnZV9lbmFibGVkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVTRV9HT09HTEVfTUFJTCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt1c2VfZ29vZ2xlX21haWwmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0lGSV9NQVhfREhDUF9SRVRSWV9DT1VOVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt3aWZpX21heF9kaGNwX3JldHJ5X2NvdW50JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRklfTU9CSUxFX0RBVEFfVFJBTlNJVElPTl9XQUtFTE9DS19USU1FT1VUX01TIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dpZmlfbW9iaWxlX2RhdGFfdHJhbnNpdGlvbl93YWtlbG9ja190aW1lb3V0X21zJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRklfTkVUV09SS1NfQVZBSUxBQkxFX05PVElGSUNBVElPTl9PTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt3aWZpX25ldHdvcmtzX2F2YWlsYWJsZV9ub3RpZmljYXRpb25fb24mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0lGSV9ORVRXT1JLU19BVkFJTEFCTEVfUkVQRUFUX0RFTEFZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dpZmlfbmV0d29ya3NfYXZhaWxhYmxlX3JlcGVhdF9kZWxheSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSUZJX05VTV9PUEVOX05FVFdPUktTX0tFUFQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7d2lmaV9udW1fb3Blbl9uZXR3b3Jrc19rZXB0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRklfT04iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7d2lmaV9vbiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSUZJX1dBVENIRE9HX0FDQ0VQVEFCTEVfUEFDS0VUX0xPU1NfUEVSQ0VOVEFHRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt3aWZpX3dhdGNoZG9nX2FjY2VwdGFibGVfcGFja2V0X2xvc3NfcGVyY2VudGFnZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSUZJX1dBVENIRE9HX0FQX0NPVU5UIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dpZmlfd2F0Y2hkb2dfYXBfY291bnQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0lGSV9XQVRDSERPR19CQUNLR1JPVU5EX0NIRUNLX0RFTEFZX01TIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dpZmlfd2F0Y2hkb2dfYmFja2dyb3VuZF9jaGVja19kZWxheV9tcyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSUZJX1dBVENIRE9HX0JBQ0tHUk9VTkRfQ0hFQ0tfRU5BQkxFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt3aWZpX3dhdGNoZG9nX2JhY2tncm91bmRfY2hlY2tfZW5hYmxlZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSUZJX1dBVENIRE9HX0JBQ0tHUk9VTkRfQ0hFQ0tfVElNRU9VVF9NUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt3aWZpX3dhdGNoZG9nX2JhY2tncm91bmRfY2hlY2tfdGltZW91dF9tcyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSUZJX1dBVENIRE9HX0lOSVRJQUxfSUdOT1JFRF9QSU5HX0NPVU5UIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dpZmlfd2F0Y2hkb2dfaW5pdGlhbF9pZ25vcmVkX3BpbmdfY291bnQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0lGSV9XQVRDSERPR19NQVhfQVBfQ0hFQ0tTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dpZmlfd2F0Y2hkb2dfbWF4X2FwX2NoZWNrcyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSUZJX1dBVENIRE9HX09OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dpZmlfd2F0Y2hkb2dfb24mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0lGSV9XQVRDSERPR19QSU5HX0NPVU5UIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dpZmlfd2F0Y2hkb2dfcGluZ19jb3VudCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSUZJX1dBVENIRE9HX1BJTkdfREVMQVlfTVMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7d2lmaV93YXRjaGRvZ19waW5nX2RlbGF5X21zJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRklfV0FUQ0hET0dfUElOR19USU1FT1VUX01TIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dpZmlfd2F0Y2hkb2dfcGluZ190aW1lb3V0X21zJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRklfV0FUQ0hET0dfV0FUQ0hfTElTVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt3aWZpX3dhdGNoZG9nX3dhdGNoX2xpc3QmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNldHRpbmdzLlNldHRpbmdOb3RGb3VuZEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJhbmRyb2lkLnV0aWwuQW5kcm9pZEV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2V0dGluZ3MuU2V0dGluZ05vdEZvdW5kRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQucHJvdmlkZXIuU2V0dGluZ3MuU2V0dGluZ05vdEZvdW5kRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2V0dGluZ3MuU3lzdGVtIgorIGV4dGVuZHM9ImFuZHJvaWQucHJvdmlkZXIuU2V0dGluZ3MuTmFtZVZhbHVlVGFibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2V0dGluZ3MuU3lzdGVtIgorIHR5cGU9ImFuZHJvaWQucHJvdmlkZXIuU2V0dGluZ3MuU3lzdGVtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldENvbmZpZ3VyYXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXRDb25maWciIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuQ29uZmlndXJhdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGbG9hdCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWYiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZsb2F0IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNldHRpbmdzLlNldHRpbmdOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5wcm92aWRlci5TZXR0aW5ncy5TZXR0aW5nTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNldHRpbmdzLlNldHRpbmdOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5wcm92aWRlci5TZXR0aW5ncy5TZXR0aW5nTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9uZyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb25nIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU2V0dGluZ3MuU2V0dGluZ05vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLnByb3ZpZGVyLlNldHRpbmdzLlNldHRpbmdOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaG93R1RhbGtTZXJ2aWNlU3RhdHVzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzb2x2ZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VXJpRm9yIgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJpIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0Q29uZmlndXJhdGlvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbmZpZyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5Db25maWd1cmF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dEZsb2F0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dEludCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0TG9uZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dFN0cmluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzb2x2ZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNob3dHVGFsa1NlcnZpY2VTdGF0dXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFnIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQUNDRUxFUk9NRVRFUl9ST1RBVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthY2NlbGVyb21ldGVyX3JvdGF0aW9uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFEQl9FTkFCTEVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FkYl9lbmFibGVkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUlSUExBTkVfTU9ERV9PTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthaXJwbGFuZV9tb2RlX29uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFJUlBMQU5FX01PREVfUkFESU9TIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FpcnBsYW5lX21vZGVfcmFkaW9zJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFMQVJNX0FMRVJUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FsYXJtX2FsZXJ0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFMV0FZU19GSU5JU0hfQUNUSVZJVElFUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbHdheXNfZmluaXNoX2FjdGl2aXRpZXMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQU5EUk9JRF9JRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkX2lkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVBQRU5EX0ZPUl9MQVNUX0FVRElCTEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7X2xhc3RfYXVkaWJsZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBVVRPX1RJTUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YXV0b190aW1lJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJMVUVUT09USF9ESVNDT1ZFUkFCSUxJVFkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Ymx1ZXRvb3RoX2Rpc2NvdmVyYWJpbGl0eSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJCTFVFVE9PVEhfRElTQ09WRVJBQklMSVRZX1RJTUVPVVQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Ymx1ZXRvb3RoX2Rpc2NvdmVyYWJpbGl0eV90aW1lb3V0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJMVUVUT09USF9PTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtibHVldG9vdGhfb24mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFUQV9ST0FNSU5HIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGFfcm9hbWluZyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRBVEVfRk9STUFUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGVfZm9ybWF0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFQlVHX0FQUCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkZWJ1Z19hcHAmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVGQVVMVF9BTEFSTV9BTEVSVF9VUkkiCisgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFRkFVTFRfTk9USUZJQ0FUSU9OX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVGQVVMVF9SSU5HVE9ORV9VUkkiCisgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFVklDRV9QUk9WSVNJT05FRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkZXZpY2VfcHJvdmlzaW9uZWQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJESU1fU0NSRUVOIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RpbV9zY3JlZW4mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRFRNRl9UT05FX1dIRU5fRElBTElORyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkdG1mX3RvbmUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRU5EX0JVVFRPTl9CRUhBVklPUiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtlbmRfYnV0dG9uX2JlaGF2aW9yJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPTlRfU0NBTEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Zm9udF9zY2FsZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIQVBUSUNfRkVFREJBQ0tfRU5BQkxFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtoYXB0aWNfZmVlZGJhY2tfZW5hYmxlZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIVFRQX1BST1hZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHBfcHJveHkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTlNUQUxMX05PTl9NQVJLRVRfQVBQUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtpbnN0YWxsX25vbl9tYXJrZXRfYXBwcyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxPQ0FUSU9OX1BST1ZJREVSU19BTExPV0VEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2xvY2F0aW9uX3Byb3ZpZGVyc19hbGxvd2VkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTE9DS19QQVRURVJOX0VOQUJMRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bG9ja19wYXR0ZXJuX2F1dG9sb2NrJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTE9DS19QQVRURVJOX1RBQ1RJTEVfRkVFREJBQ0tfRU5BQkxFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtsb2NrX3BhdHRlcm5fdGFjdGlsZV9mZWVkYmFja19lbmFibGVkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTE9DS19QQVRURVJOX1ZJU0lCTEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bG9ja19wYXR0ZXJuX3Zpc2libGVfcGF0dGVybiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxPR0dJTkdfSUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bG9nZ2luZ19pZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1PREVfUklOR0VSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O21vZGVfcmluZ2VyJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1PREVfUklOR0VSX1NUUkVBTVNfQUZGRUNURUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bW9kZV9yaW5nZXJfc3RyZWFtc19hZmZlY3RlZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNVVRFX1NUUkVBTVNfQUZGRUNURUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bXV0ZV9zdHJlYW1zX2FmZmVjdGVkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5FVFdPUktfUFJFRkVSRU5DRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtuZXR3b3JrX3ByZWZlcmVuY2UmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJORVhUX0FMQVJNX0ZPUk1BVFRFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtuZXh0X2FsYXJtX2Zvcm1hdHRlZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOT1RJRklDQVRJT05fU09VTkQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bm90aWZpY2F0aW9uX3NvdW5kJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBBUkVOVEFMX0NPTlRST0xfRU5BQkxFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtwYXJlbnRhbF9jb250cm9sX2VuYWJsZWQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQQVJFTlRBTF9DT05UUk9MX0xBU1RfVVBEQVRFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3BhcmVudGFsX2NvbnRyb2xfbGFzdF91cGRhdGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQQVJFTlRBTF9DT05UUk9MX1JFRElSRUNUX1VSTCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtwYXJlbnRhbF9jb250cm9sX3JlZGlyZWN0X3VybCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJBRElPX0JMVUVUT09USCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtibHVldG9vdGgmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkFESU9fQ0VMTCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtjZWxsJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJBRElPX1dJRkkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7d2lmaSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSSU5HVE9ORSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtyaW5ndG9uZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ1JFRU5fQlJJR0hUTkVTUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzY3JlZW5fYnJpZ2h0bmVzcyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ1JFRU5fQlJJR0hUTkVTU19NT0RFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3NjcmVlbl9icmlnaHRuZXNzX21vZGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NSRUVOX0JSSUdIVE5FU1NfTU9ERV9BVVRPTUFUSUMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDUkVFTl9CUklHSFRORVNTX01PREVfTUFOVUFMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ1JFRU5fT0ZGX1RJTUVPVVQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c2NyZWVuX29mZl90aW1lb3V0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFVFRJTkdTX0NMQVNTTkFNRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzZXR0aW5nc19jbGFzc25hbWUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRVRVUF9XSVpBUkRfSEFTX1JVTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzZXR1cF93aXphcmRfaGFzX3J1biZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTSE9XX0dUQUxLX1NFUlZJQ0VfU1RBVFVTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O1NIT1dfR1RBTEtfU0VSVklDRV9TVEFUVVMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0hPV19QUk9DRVNTRVMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c2hvd19wcm9jZXNzZXMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0hPV19XRUJfU1VHR0VTVElPTlMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c2hvd193ZWJfc3VnZ2VzdGlvbnMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU09VTkRfRUZGRUNUU19FTkFCTEVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3NvdW5kX2VmZmVjdHNfZW5hYmxlZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFZX09OX1dISUxFX1BMVUdHRURfSU4iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c3RheV9vbl93aGlsZV9wbHVnZ2VkX2luJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNZU19QUk9QX1NFVFRJTkdfVkVSU0lPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzeXMuc2V0dGluZ3Nfc3lzdGVtX3ZlcnNpb24mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEVYVF9BVVRPX0NBUFMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YXV0b19jYXBzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRFWFRfQVVUT19QVU5DVFVBVEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YXV0b19wdW5jdHVhdGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEVYVF9BVVRPX1JFUExBQ0UiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YXV0b19yZXBsYWNlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRFWFRfU0hPV19QQVNTV09SRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzaG93X3Bhc3N3b3JkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRJTUVfMTJfMjQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dGltZV8xMl8yNCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUUkFOU0lUSU9OX0FOSU1BVElPTl9TQ0FMRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt0cmFuc2l0aW9uX2FuaW1hdGlvbl9zY2FsZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVU0JfTUFTU19TVE9SQUdFX0VOQUJMRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dXNiX21hc3Nfc3RvcmFnZV9lbmFibGVkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVVNFX0dPT0dMRV9NQUlMIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3VzZV9nb29nbGVfbWFpbCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlZJQlJBVEVfT04iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dmlicmF0ZV9vbiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJWT0xVTUVfQUxBUk0iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dm9sdW1lX2FsYXJtJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlZPTFVNRV9CTFVFVE9PVEhfU0NPIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ZvbHVtZV9ibHVldG9vdGhfc2NvJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlZPTFVNRV9NVVNJQyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2b2x1bWVfbXVzaWMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVk9MVU1FX05PVElGSUNBVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2b2x1bWVfbm90aWZpY2F0aW9uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlZPTFVNRV9SSU5HIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3ZvbHVtZV9yaW5nJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlZPTFVNRV9TRVRUSU5HUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVk9MVU1FX1NZU1RFTSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2b2x1bWVfc3lzdGVtJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlZPTFVNRV9WT0lDRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2b2x1bWVfdm9pY2UmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0FJVF9GT1JfREVCVUdHRVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7d2FpdF9mb3JfZGVidWdnZXImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0FMTFBBUEVSX0FDVElWSVRZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dhbGxwYXBlcl9hY3Rpdml0eSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSUZJX01BWF9ESENQX1JFVFJZX0NPVU5UIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dpZmlfbWF4X2RoY3BfcmV0cnlfY291bnQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSUZJX01PQklMRV9EQVRBX1RSQU5TSVRJT05fV0FLRUxPQ0tfVElNRU9VVF9NUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt3aWZpX21vYmlsZV9kYXRhX3RyYW5zaXRpb25fd2FrZWxvY2tfdGltZW91dF9tcyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRklfTkVUV09SS1NfQVZBSUxBQkxFX05PVElGSUNBVElPTl9PTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt3aWZpX25ldHdvcmtzX2F2YWlsYWJsZV9ub3RpZmljYXRpb25fb24mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSUZJX05FVFdPUktTX0FWQUlMQUJMRV9SRVBFQVRfREVMQVkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7d2lmaV9uZXR3b3Jrc19hdmFpbGFibGVfcmVwZWF0X2RlbGF5JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0lGSV9OVU1fT1BFTl9ORVRXT1JLU19LRVBUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dpZmlfbnVtX29wZW5fbmV0d29ya3Nfa2VwdCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRklfT04iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7d2lmaV9vbiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRklfU0xFRVBfUE9MSUNZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dpZmlfc2xlZXBfcG9saWN5JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRklfU0xFRVBfUE9MSUNZX0RFRkFVTFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRklfU0xFRVBfUE9MSUNZX05FVkVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSUZJX1NMRUVQX1BPTElDWV9ORVZFUl9XSElMRV9QTFVHR0VEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSUZJX1NUQVRJQ19ETlMxIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dpZmlfc3RhdGljX2RuczEmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0lGSV9TVEFUSUNfRE5TMiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt3aWZpX3N0YXRpY19kbnMyJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRklfU1RBVElDX0dBVEVXQVkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7d2lmaV9zdGF0aWNfZ2F0ZXdheSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSUZJX1NUQVRJQ19JUCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt3aWZpX3N0YXRpY19pcCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSUZJX1NUQVRJQ19ORVRNQVNLIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dpZmlfc3RhdGljX25ldG1hc2smcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0lGSV9VU0VfU1RBVElDX0lQIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dpZmlfdXNlX3N0YXRpY19pcCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSUZJX1dBVENIRE9HX0FDQ0VQVEFCTEVfUEFDS0VUX0xPU1NfUEVSQ0VOVEFHRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt3aWZpX3dhdGNoZG9nX2FjY2VwdGFibGVfcGFja2V0X2xvc3NfcGVyY2VudGFnZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRklfV0FUQ0hET0dfQVBfQ09VTlQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7d2lmaV93YXRjaGRvZ19hcF9jb3VudCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRklfV0FUQ0hET0dfQkFDS0dST1VORF9DSEVDS19ERUxBWV9NUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt3aWZpX3dhdGNoZG9nX2JhY2tncm91bmRfY2hlY2tfZGVsYXlfbXMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSUZJX1dBVENIRE9HX0JBQ0tHUk9VTkRfQ0hFQ0tfRU5BQkxFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt3aWZpX3dhdGNoZG9nX2JhY2tncm91bmRfY2hlY2tfZW5hYmxlZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRklfV0FUQ0hET0dfQkFDS0dST1VORF9DSEVDS19USU1FT1VUX01TIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dpZmlfd2F0Y2hkb2dfYmFja2dyb3VuZF9jaGVja190aW1lb3V0X21zJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0lGSV9XQVRDSERPR19JTklUSUFMX0lHTk9SRURfUElOR19DT1VOVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt3aWZpX3dhdGNoZG9nX2luaXRpYWxfaWdub3JlZF9waW5nX2NvdW50JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0lGSV9XQVRDSERPR19NQVhfQVBfQ0hFQ0tTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dpZmlfd2F0Y2hkb2dfbWF4X2FwX2NoZWNrcyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRklfV0FUQ0hET0dfT04iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7d2lmaV93YXRjaGRvZ19vbiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRklfV0FUQ0hET0dfUElOR19DT1VOVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt3aWZpX3dhdGNoZG9nX3BpbmdfY291bnQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSUZJX1dBVENIRE9HX1BJTkdfREVMQVlfTVMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7d2lmaV93YXRjaGRvZ19waW5nX2RlbGF5X21zJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0lGSV9XQVRDSERPR19QSU5HX1RJTUVPVVRfTVMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7d2lmaV93YXRjaGRvZ19waW5nX3RpbWVvdXRfbXMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSU5ET1dfQU5JTUFUSU9OX1NDQUxFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dpbmRvd19hbmltYXRpb25fc2NhbGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlN5bmNTdGF0ZUNvbnRyYWN0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTeW5jU3RhdGVDb250cmFjdCIKKyB0eXBlPSJhbmRyb2lkLnByb3ZpZGVyLlN5bmNTdGF0ZUNvbnRyYWN0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJTeW5jU3RhdGVDb250cmFjdC5Db2x1bW5zIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5CYXNlQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8ZmllbGQgbmFtZT0iQUNDT1VOVF9OQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FjY291bnRfbmFtZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ0NPVU5UX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YWNjb3VudF90eXBlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRBVEEiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlN5bmNTdGF0ZUNvbnRyYWN0LkNvbnN0YW50cyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQucHJvdmlkZXIuU3luY1N0YXRlQ29udHJhY3QuQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3luY1N0YXRlQ29udHJhY3QuQ29uc3RhbnRzIgorIHR5cGU9ImFuZHJvaWQucHJvdmlkZXIuU3luY1N0YXRlQ29udHJhY3QuQ29uc3RhbnRzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9ESVJFQ1RPUlkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c3luY3N0YXRlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTeW5jU3RhdGVDb250cmFjdC5IZWxwZXJzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3luY1N0YXRlQ29udHJhY3QuSGVscGVycyIKKyB0eXBlPSJhbmRyb2lkLnByb3ZpZGVyLlN5bmNTdGF0ZUNvbnRyYWN0LkhlbHBlcnMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFByb3ZpZGVyQ2xpZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjb3VudCIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZW1vdGVFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdpdGhVcmkiCisgcmV0dXJuPSJhbmRyb2lkLnV0aWwuUGFpciZsdDthbmRyb2lkLm5ldC5VcmksIGJ5dGVbXSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UHJvdmlkZXJDbGllbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY2NvdW50IiB0eXBlPSJhbmRyb2lkLmFjY291bnRzLkFjY291bnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlJlbW90ZUV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5zZXJ0IgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJpIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFByb3ZpZGVyQ2xpZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjb3VudCIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlJlbW90ZUV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3U2V0T3BlcmF0aW9uIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRQcm92aWRlck9wZXJhdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjb3VudCIgdHlwZT0iYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3VXBkYXRlT3BlcmF0aW9uIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRQcm92aWRlck9wZXJhdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50UHJvdmlkZXJDbGllbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY2NvdW50IiB0eXBlPSJhbmRyb2lkLmFjY291bnRzLkFjY291bnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUmVtb3RlRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFByb3ZpZGVyQ2xpZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZW1vdGVFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlVzZXJEaWN0aW9uYXJ5IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVc2VyRGljdGlvbmFyeSIKKyB0eXBlPSJhbmRyb2lkLnByb3ZpZGVyLlVzZXJEaWN0aW9uYXJ5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iQVVUSE9SSVRZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3VzZXJfZGljdGlvbmFyeSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX1VSSSIKKyB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlVzZXJEaWN0aW9uYXJ5LldvcmRzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5wcm92aWRlci5CYXNlQ29sdW1ucyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iVXNlckRpY3Rpb25hcnkuV29yZHMiCisgdHlwZT0iYW5kcm9pZC5wcm92aWRlci5Vc2VyRGljdGlvbmFyeS5Xb3JkcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRXb3JkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id29yZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZnJlcXVlbmN5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsZVR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkFQUF9JRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthcHBpZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05URU5UX0lURU1fVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2bmQuYW5kcm9pZC5jdXJzb3IuaXRlbS92bmQuZ29vZ2xlLnVzZXJ3b3JkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2bmQuYW5kcm9pZC5jdXJzb3IuZGlyL3ZuZC5nb29nbGUudXNlcndvcmQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9VUkkiCisgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFRkFVTFRfU09SVF9PUkRFUiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtmcmVxdWVuY3kgREVTQyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGUkVRVUVOQ1kiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZnJlcXVlbmN5JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxPQ0FMRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtsb2NhbGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTE9DQUxFX1RZUEVfQUxMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMT0NBTEVfVFlQRV9DVVJSRU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXT1JEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3dvcmQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iX0lEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O19pZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJhbmRyb2lkLnNheCIKKz4KKzxjbGFzcyBuYW1lPSJFbGVtZW50IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hpbGQiCisgcmV0dXJuPSJhbmRyb2lkLnNheC5FbGVtZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hpbGQiCisgcmV0dXJuPSJhbmRyb2lkLnNheC5FbGVtZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXF1aXJlQ2hpbGQiCisgcmV0dXJuPSJhbmRyb2lkLnNheC5FbGVtZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVxdWlyZUNoaWxkIgorIHJldHVybj0iYW5kcm9pZC5zYXguRWxlbWVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RWxlbWVudExpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZWxlbWVudExpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLnNheC5FbGVtZW50TGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RW5kRWxlbWVudExpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kRWxlbWVudExpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLnNheC5FbmRFbGVtZW50TGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RW5kVGV4dEVsZW1lbnRMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZFRleHRFbGVtZW50TGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQuc2F4LkVuZFRleHRFbGVtZW50TGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RhcnRFbGVtZW50TGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydEVsZW1lbnRMaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5zYXguU3RhcnRFbGVtZW50TGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGV4dEVsZW1lbnRMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVsZW1lbnRMaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5zYXguVGV4dEVsZW1lbnRMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iRWxlbWVudExpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQuc2F4LkVuZEVsZW1lbnRMaXN0ZW5lciI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnNheC5TdGFydEVsZW1lbnRMaXN0ZW5lciI+Cis8L2ltcGxlbWVudHM+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iRW5kRWxlbWVudExpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZW5kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iRW5kVGV4dEVsZW1lbnRMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImVuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYm9keSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iUm9vdEVsZW1lbnQiCisgZXh0ZW5kcz0iYW5kcm9pZC5zYXguRWxlbWVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJvb3RFbGVtZW50IgorIHR5cGU9ImFuZHJvaWQuc2F4LlJvb3RFbGVtZW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJvb3RFbGVtZW50IgorIHR5cGU9ImFuZHJvaWQuc2F4LlJvb3RFbGVtZW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudEhhbmRsZXIiCisgcmV0dXJuPSJvcmcueG1sLnNheC5Db250ZW50SGFuZGxlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iU3RhcnRFbGVtZW50TGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJzdGFydCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cmlidXRlcyIgdHlwZT0ib3JnLnhtbC5zYXguQXR0cmlidXRlcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlRleHRFbGVtZW50TGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5zYXguRW5kVGV4dEVsZW1lbnRMaXN0ZW5lciI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnNheC5TdGFydEVsZW1lbnRMaXN0ZW5lciI+Cis8L2ltcGxlbWVudHM+Cis8L2ludGVyZmFjZT4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQuc2VydmljZS53YWxscGFwZXIiCis+Cis8Y2xhc3MgbmFtZT0iV2FsbHBhcGVyU2VydmljZSIKKyBleHRlbmRzPSJhbmRyb2lkLmFwcC5TZXJ2aWNlIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJXYWxscGFwZXJTZXJ2aWNlIgorIHR5cGU9ImFuZHJvaWQuc2VydmljZS53YWxscGFwZXIuV2FsbHBhcGVyU2VydmljZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJvbkJpbmQiCisgcmV0dXJuPSJhbmRyb2lkLm9zLklCaW5kZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ3JlYXRlRW5naW5lIgorIHJldHVybj0iYW5kcm9pZC5zZXJ2aWNlLndhbGxwYXBlci5XYWxscGFwZXJTZXJ2aWNlLkVuZ2luZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iU0VSVklDRV9JTlRFUkZBQ0UiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5zZXJ2aWNlLndhbGxwYXBlci5XYWxscGFwZXJTZXJ2aWNlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFUlZJQ0VfTUVUQV9EQVRBIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc2VydmljZS53YWxscGFwZXImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IldhbGxwYXBlclNlcnZpY2UuRW5naW5lIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJXYWxscGFwZXJTZXJ2aWNlLkVuZ2luZSIKKyB0eXBlPSJhbmRyb2lkLnNlcnZpY2Uud2FsbHBhcGVyLldhbGxwYXBlclNlcnZpY2UuRW5naW5lIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldERlc2lyZWRNaW5pbXVtSGVpZ2h0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlc2lyZWRNaW5pbXVtV2lkdGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3VyZmFjZUhvbGRlciIKKyByZXR1cm49ImFuZHJvaWQudmlldy5TdXJmYWNlSG9sZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUHJldmlldyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNWaXNpYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNvbW1hbmQiCisgcmV0dXJuPSJhbmRyb2lkLm9zLkJ1bmRsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHRyYXMiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRSZXF1ZXN0ZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DcmVhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdXJmYWNlSG9sZGVyIiB0eXBlPSJhbmRyb2lkLnZpZXcuU3VyZmFjZUhvbGRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkRlc2lyZWRTaXplQ2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc2lyZWRXaWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZXNpcmVkSGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25EZXN0cm95IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbk9mZnNldHNDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieE9mZnNldCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InlPZmZzZXQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4T2Zmc2V0U3RlcCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InlPZmZzZXRTdGVwIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieFBpeGVsT2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InlQaXhlbE9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU3VyZmFjZUNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob2xkZXIiIHR5cGU9ImFuZHJvaWQudmlldy5TdXJmYWNlSG9sZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TdXJmYWNlQ3JlYXRlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhvbGRlciIgdHlwZT0iYW5kcm9pZC52aWV3LlN1cmZhY2VIb2xkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TdXJmYWNlRGVzdHJveWVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9sZGVyIiB0eXBlPSJhbmRyb2lkLnZpZXcuU3VyZmFjZUhvbGRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblRvdWNoRXZlbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uVmlzaWJpbGl0eUNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aXNpYmxlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRvdWNoRXZlbnRzRW5hYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVuYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJhbmRyb2lkLnNwZWVjaCIKKz4KKzxpbnRlcmZhY2UgbmFtZT0iUmVjb2duaXRpb25MaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uQmVnaW5uaW5nT2ZTcGVlY2giCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25CdWZmZXJSZWNlaXZlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25FbmRPZlNwZWVjaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkVycm9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlcnJvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uRXZlbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50VHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uUGFydGlhbFJlc3VsdHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcnRpYWxSZXN1bHRzIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblJlYWR5Rm9yU3BlZWNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uUmVzdWx0cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0cyIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25SbXNDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJybXNkQiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlJlY29nbml0aW9uU2VydmljZSIKKyBleHRlbmRzPSJhbmRyb2lkLmFwcC5TZXJ2aWNlIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZWNvZ25pdGlvblNlcnZpY2UiCisgdHlwZT0iYW5kcm9pZC5zcGVlY2guUmVjb2duaXRpb25TZXJ2aWNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9Im9uQmluZCIKKyByZXR1cm49ImFuZHJvaWQub3MuSUJpbmRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DYW5jZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLnNwZWVjaC5SZWNvZ25pdGlvblNlcnZpY2UuQ2FsbGJhY2siPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TdGFydExpc3RlbmluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVjb2duaXplckludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQuc3BlZWNoLlJlY29nbml0aW9uU2VydmljZS5DYWxsYmFjayI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblN0b3BMaXN0ZW5pbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLnNwZWVjaC5SZWNvZ25pdGlvblNlcnZpY2UuQ2FsbGJhY2siPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJTRVJWSUNFX0lOVEVSRkFDRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnNwZWVjaC5SZWNvZ25pdGlvblNlcnZpY2UmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VSVklDRV9NRVRBX0RBVEEiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5zcGVlY2gmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJlY29nbml0aW9uU2VydmljZS5DYWxsYmFjayIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImJlZ2lubmluZ09mU3BlZWNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iUmVtb3RlRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJidWZmZXJSZWNlaXZlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZW1vdGVFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZE9mU3BlZWNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iUmVtb3RlRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlcnJvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVycm9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlJlbW90ZUV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFydGlhbFJlc3VsdHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJ0aWFsUmVzdWx0cyIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlJlbW90ZUV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZHlGb3JTcGVlY2giCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZW1vdGVFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc3VsdHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRzIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUmVtb3RlRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJybXNDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icm1zZEIiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZW1vdGVFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJlY29nbml6ZXJJbnRlbnQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRWb2ljZURldGFpbHNJbnRlbnQiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fR0VUX0xBTkdVQUdFX0RFVEFJTFMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5zcGVlY2guYWN0aW9uLkdFVF9MQU5HVUFHRV9ERVRBSUxTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9SRUNPR05JWkVfU1BFRUNIIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc3BlZWNoLmFjdGlvbi5SRUNPR05JWkVfU1BFRUNIJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9XRUJfU0VBUkNIIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc3BlZWNoLmFjdGlvbi5XRUJfU0VBUkNIJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFVEFJTFNfTUVUQV9EQVRBIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc3BlZWNoLkRFVEFJTFMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfQ0FMTElOR19QQUNLQUdFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2NhbGxpbmdfcGFja2FnZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9MQU5HVUFHRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnNwZWVjaC5leHRyYS5MQU5HVUFHRSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9MQU5HVUFHRV9NT0RFTCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnNwZWVjaC5leHRyYS5MQU5HVUFHRV9NT0RFTCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9MQU5HVUFHRV9QUkVGRVJFTkNFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc3BlZWNoLmV4dHJhLkxBTkdVQUdFX1BSRUZFUkVOQ0UmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfTUFYX1JFU1VMVFMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5zcGVlY2guZXh0cmEuTUFYX1JFU1VMVFMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfT05MWV9SRVRVUk5fTEFOR1VBR0VfUFJFRkVSRU5DRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnNwZWVjaC5leHRyYS5PTkxZX1JFVFVSTl9MQU5HVUFHRV9QUkVGRVJFTkNFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX1BBUlRJQUxfUkVTVUxUUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnNwZWVjaC5leHRyYS5QQVJUSUFMX1JFU1VMVFMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfUFJPTVBUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc3BlZWNoLmV4dHJhLlBST01QVCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9SRVNVTFRTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc3BlZWNoLmV4dHJhLlJFU1VMVFMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfUkVTVUxUU19QRU5ESU5HSU5URU5UIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc3BlZWNoLmV4dHJhLlJFU1VMVFNfUEVORElOR0lOVEVOVCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9SRVNVTFRTX1BFTkRJTkdJTlRFTlRfQlVORExFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc3BlZWNoLmV4dHJhLlJFU1VMVFNfUEVORElOR0lOVEVOVF9CVU5ETEUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfU1BFRUNIX0lOUFVUX0NPTVBMRVRFX1NJTEVOQ0VfTEVOR1RIX01JTExJUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnNwZWVjaC5leHRyYXMuU1BFRUNIX0lOUFVUX0NPTVBMRVRFX1NJTEVOQ0VfTEVOR1RIX01JTExJUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9TUEVFQ0hfSU5QVVRfTUlOSU1VTV9MRU5HVEhfTUlMTElTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc3BlZWNoLmV4dHJhcy5TUEVFQ0hfSU5QVVRfTUlOSU1VTV9MRU5HVEhfTUlMTElTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX1NQRUVDSF9JTlBVVF9QT1NTSUJMWV9DT01QTEVURV9TSUxFTkNFX0xFTkdUSF9NSUxMSVMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5zcGVlY2guZXh0cmFzLlNQRUVDSF9JTlBVVF9QT1NTSUJMWV9DT01QTEVURV9TSUxFTkNFX0xFTkdUSF9NSUxMSVMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfU1VQUE9SVEVEX0xBTkdVQUdFUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnNwZWVjaC5leHRyYS5TVVBQT1JURURfTEFOR1VBR0VTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxBTkdVQUdFX01PREVMX0ZSRUVfRk9STSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtmcmVlX2Zvcm0mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTEFOR1VBR0VfTU9ERUxfV0VCX1NFQVJDSCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt3ZWJfc2VhcmNoJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFU1VMVF9BVURJT19FUlJPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkVTVUxUX0NMSUVOVF9FUlJPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkVTVUxUX05FVFdPUktfRVJST1IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFU1VMVF9OT19NQVRDSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkVTVUxUX1NFUlZFUl9FUlJPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNwZWVjaFJlY29nbml6ZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJjYW5jZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVNwZWVjaFJlY29nbml6ZXIiCisgcmV0dXJuPSJhbmRyb2lkLnNwZWVjaC5TcGVlY2hSZWNvZ25pemVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVNwZWVjaFJlY29nbml6ZXIiCisgcmV0dXJuPSJhbmRyb2lkLnNwZWVjaC5TcGVlY2hSZWNvZ25pemVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZXJ2aWNlQ29tcG9uZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZXN0cm95IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1JlY29nbml0aW9uQXZhaWxhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZWNvZ25pdGlvbkxpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQuc3BlZWNoLlJlY29nbml0aW9uTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRMaXN0ZW5pbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWNvZ25pemVySW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0b3BMaXN0ZW5pbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iRVJST1JfQVVESU8iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVSUk9SX0NMSUVOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVJST1JfSU5TVUZGSUNJRU5UX1BFUk1JU1NJT05TIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFUlJPUl9ORVRXT1JLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFUlJPUl9ORVRXT1JLX1RJTUVPVVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVSUk9SX05PX01BVENIIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFUlJPUl9SRUNPR05JWkVSX0JVU1kiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVSUk9SX1NFUlZFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVJST1JfU1BFRUNIX1RJTUVPVVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFU1VMVFNfUkVDT0dOSVRJT04iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cmVzdWx0c19yZWNvZ25pdGlvbiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJhbmRyb2lkLnNwZWVjaC50dHMiCis+Cis8Y2xhc3MgbmFtZT0iVGV4dFRvU3BlZWNoIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUZXh0VG9TcGVlY2giCisgdHlwZT0iYW5kcm9pZC5zcGVlY2gudHRzLlRleHRUb1NwZWVjaCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5zcGVlY2gudHRzLlRleHRUb1NwZWVjaC5PbkluaXRMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZEVhcmNvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZWFyY29uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYWNrYWdlbmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzb3VyY2VJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZEVhcmNvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZWFyY29uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlbmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRTcGVlY2giCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvdXJjZUlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkU3BlZWNoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlbmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcmVEZWZhdWx0c0VuZm9yY2VkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWZhdWx0RW5naW5lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMYW5ndWFnZSIKKyByZXR1cm49ImphdmEudXRpbC5Mb2NhbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNMYW5ndWFnZUF2YWlsYWJsZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jIiB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU3BlYWtpbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBsYXlFYXJjb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVhcmNvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icXVldWVNb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS51dGlsLkhhc2hNYXAmbHQ7amF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGxheVNpbGVuY2UiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImR1cmF0aW9uSW5NcyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icXVldWVNb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS51dGlsLkhhc2hNYXAmbHQ7amF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RW5naW5lQnlQYWNrYWdlTmFtZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5naW5lUGFja2FnZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TGFuZ3VhZ2UiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvYyIgdHlwZT0iamF2YS51dGlsLkxvY2FsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPblV0dGVyYW5jZUNvbXBsZXRlZExpc3RlbmVyIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC5zcGVlY2gudHRzLlRleHRUb1NwZWVjaC5PblV0dGVyYW5jZUNvbXBsZXRlZExpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBpdGNoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwaXRjaCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3BlZWNoUmF0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3BlZWNoUmF0ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2h1dGRvd24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNwZWFrIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxdWV1ZU1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLnV0aWwuSGFzaE1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdG9wIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN5bnRoZXNpemVUb0ZpbGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS51dGlsLkhhc2hNYXAmbHQ7amF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGVuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1RUU19RVUVVRV9QUk9DRVNTSU5HX0NPTVBMRVRFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnNwZWVjaC50dHMuVFRTX1FVRVVFX1BST0NFU1NJTkdfQ09NUExFVEVEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVSUk9SIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTEFOR19BVkFJTEFCTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxBTkdfQ09VTlRSWV9BVkFJTEFCTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxBTkdfQ09VTlRSWV9WQVJfQVZBSUxBQkxFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMQU5HX01JU1NJTkdfREFUQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxBTkdfTk9UX1NVUFBPUlRFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0yIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlFVRVVFX0FERCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUVVFVUVfRkxVU0giCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNVQ0NFU1MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUZXh0VG9TcGVlY2guRW5naW5lIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUZXh0VG9TcGVlY2guRW5naW5lIgorIHR5cGU9ImFuZHJvaWQuc3BlZWNoLnR0cy5UZXh0VG9TcGVlY2guRW5naW5lIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0NIRUNLX1RUU19EQVRBIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQuc3BlZWNoLnR0cy5lbmdpbmUuQ0hFQ0tfVFRTX0RBVEEmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0lOU1RBTExfVFRTX0RBVEEiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5zcGVlY2gudHRzLmVuZ2luZS5JTlNUQUxMX1RUU19EQVRBJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9UVFNfREFUQV9JTlNUQUxMRUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5zcGVlY2gudHRzLmVuZ2luZS5UVFNfREFUQV9JTlNUQUxMRUQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hFQ0tfVk9JQ0VfREFUQV9CQURfREFUQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNIRUNLX1ZPSUNFX0RBVEFfRkFJTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hFQ0tfVk9JQ0VfREFUQV9NSVNTSU5HX0RBVEEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDSEVDS19WT0lDRV9EQVRBX01JU1NJTkdfVk9MVU1FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hFQ0tfVk9JQ0VfREFUQV9QQVNTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUX1NUUkVBTSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfQVZBSUxBQkxFX1ZPSUNFUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthdmFpbGFibGVWb2ljZXMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfQ0hFQ0tfVk9JQ0VfREFUQV9GT1IiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y2hlY2tWb2ljZURhdGFGb3ImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfVFRTX0RBVEFfSU5TVEFMTEVEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RhdGFJbnN0YWxsZWQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfVU5BVkFJTEFCTEVfVk9JQ0VTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3VuYXZhaWxhYmxlVm9pY2VzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX1ZPSUNFX0RBVEFfRklMRVMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YUZpbGVzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX1ZPSUNFX0RBVEFfRklMRVNfSU5GTyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkYXRhRmlsZXNJbmZvJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX1ZPSUNFX0RBVEFfUk9PVF9ESVJFQ1RPUlkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGF0YVJvb3QmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZX1BBUkFNX1NUUkVBTSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzdHJlYW1UeXBlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWV9QQVJBTV9VVFRFUkFOQ0VfSUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dXR0ZXJhbmNlSWQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJUZXh0VG9TcGVlY2guT25Jbml0TGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uSW5pdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdHVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJUZXh0VG9TcGVlY2guT25VdHRlcmFuY2VDb21wbGV0ZWRMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25VdHRlcmFuY2VDb21wbGV0ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InV0dGVyYW5jZUlkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQudGVsZXBob255IgorPgorPGNsYXNzIG5hbWU9IkNlbGxMb2NhdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDZWxsTG9jYXRpb24iCisgdHlwZT0iYW5kcm9pZC50ZWxlcGhvbnkuQ2VsbExvY2F0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEVtcHR5IgorIHJldHVybj0iYW5kcm9pZC50ZWxlcGhvbnkuQ2VsbExvY2F0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVxdWVzdExvY2F0aW9uVXBkYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik5laWdoYm9yaW5nQ2VsbEluZm8iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOZWlnaGJvcmluZ0NlbGxJbmZvIgorIHR5cGU9ImFuZHJvaWQudGVsZXBob255Lk5laWdoYm9yaW5nQ2VsbEluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik5laWdoYm9yaW5nQ2VsbEluZm8iCisgdHlwZT0iYW5kcm9pZC50ZWxlcGhvbnkuTmVpZ2hib3JpbmdDZWxsSW5mbyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icnNzaSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTmVpZ2hib3JpbmdDZWxsSW5mbyIKKyB0eXBlPSJhbmRyb2lkLnRlbGVwaG9ueS5OZWlnaGJvcmluZ0NlbGxJbmZvIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icnNzaSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmFkaW9UeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik5laWdoYm9yaW5nQ2VsbEluZm8iCisgdHlwZT0iYW5kcm9pZC50ZWxlcGhvbnkuTmVpZ2hib3JpbmdDZWxsSW5mbyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2lkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExhYyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROZXR3b3JrVHlwZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQc2MiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UnNzaSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDaWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJzc2kiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJzc2kiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVOS05PV05fQ0lEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVU5LTk9XTl9SU1NJIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBob25lTnVtYmVyRm9ybWF0dGluZ1RleHRXYXRjaGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5UZXh0V2F0Y2hlciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGhvbmVOdW1iZXJGb3JtYXR0aW5nVGV4dFdhdGNoZXIiCisgdHlwZT0iYW5kcm9pZC50ZWxlcGhvbnkuUGhvbmVOdW1iZXJGb3JtYXR0aW5nVGV4dFdhdGNoZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWZ0ZXJUZXh0Q2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC50ZXh0LkVkaXRhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImJlZm9yZVRleHRDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWZ0ZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblRleHRDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmVmb3JlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUGhvbmVOdW1iZXJVdGlscyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGhvbmVOdW1iZXJVdGlscyIKKyB0eXBlPSJhbmRyb2lkLnRlbGVwaG9ueS5QaG9uZU51bWJlclV0aWxzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNhbGxlZFBhcnR5QkNERnJhZ21lbnRUb1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnl0ZXMiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNhbGxlZFBhcnR5QkNEVG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ5dGVzIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbXBhcmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbnZlcnRLZXlwYWRMZXR0ZXJzVG9EaWdpdHMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4dHJhY3ROZXR3b3JrUG9ydGlvbiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGhvbmVOdW1iZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXh0cmFjdFBvc3REaWFsUG9ydGlvbiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGhvbmVOdW1iZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0SmFwYW5lc2VOdW1iZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImFuZHJvaWQudGV4dC5FZGl0YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXROYW5wTnVtYmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJhbmRyb2lkLnRleHQuRWRpdGFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0TnVtYmVyIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0TnVtYmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJhbmRyb2lkLnRleHQuRWRpdGFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmF1bHRGb3JtYXR0aW5nVHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZvcm1hdFR5cGVGb3JMb2NhbGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxlIiB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE51bWJlckZyb21JbnRlbnQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RyaXBwZWRSZXZlcnNlZCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGhvbmVOdW1iZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXMxMktleSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRGlhbGFibGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0VtZXJnZW5jeU51bWJlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibnVtYmVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzR2xvYmFsUGhvbmVOdW1iZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBob25lTnVtYmVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzSVNPRGlnaXQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNOb25TZXBhcmF0b3IiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1JlYWxseURpYWxhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTdGFydHNQb3N0RGlhbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzV2VsbEZvcm1lZFNtc0FkZHJlc3MiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFkZHJlc3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV0d29ya1BvcnRpb25Ub0NhbGxlZFBhcnR5QkNEIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV0d29ya1BvcnRpb25Ub0NhbGxlZFBhcnR5QkNEV2l0aExlbmd0aCIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im51bWJlclRvQ2FsbGVkUGFydHlCQ0QiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibnVtYmVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0cmluZ0Zyb21TdHJpbmdBbmRUT0EiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IlRPQSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0cmlwU2VwYXJhdG9ycyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGhvbmVOdW1iZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9DYWxsZXJJRE1pbk1hdGNoIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwaG9uZU51bWJlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b2FGcm9tU3RyaW5nIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJGT1JNQVRfSkFQQU4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPUk1BVF9OQU5QIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT1JNQVRfVU5LTk9XTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEFVU0UiCisgdHlwZT0iY2hhciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9BX0ludGVybmF0aW9uYWwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9BX1Vua25vd24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0FJVCIKKyB0eXBlPSJjaGFyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSUxEIgorIHR5cGU9ImNoYXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQaG9uZVN0YXRlTGlzdGVuZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBob25lU3RhdGVMaXN0ZW5lciIKKyB0eXBlPSJhbmRyb2lkLnRlbGVwaG9ueS5QaG9uZVN0YXRlTGlzdGVuZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ib25DYWxsRm9yd2FyZGluZ0luZGljYXRvckNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjZmkiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DYWxsU3RhdGVDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5jb21pbmdOdW1iZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DZWxsTG9jYXRpb25DaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImFuZHJvaWQudGVsZXBob255LkNlbGxMb2NhdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkRhdGFBY3Rpdml0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpcmVjdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uRGF0YUNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uRGF0YUNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXR3b3JrVHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uTWVzc2FnZVdhaXRpbmdJbmRpY2F0b3JDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXdpIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU2VydmljZVN0YXRlQ2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlcnZpY2VTdGF0ZSIgdHlwZT0iYW5kcm9pZC50ZWxlcGhvbnkuU2VydmljZVN0YXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU2lnbmFsU3RyZW5ndGhDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhc3UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblNpZ25hbFN0cmVuZ3Roc0NoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaWduYWxTdHJlbmd0aCIgdHlwZT0iYW5kcm9pZC50ZWxlcGhvbnkuU2lnbmFsU3RyZW5ndGgiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJMSVNURU5fQ0FMTF9GT1JXQVJESU5HX0lORElDQVRPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTElTVEVOX0NBTExfU1RBVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMSVNURU5fQ0VMTF9MT0NBVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxJU1RFTl9EQVRBX0FDVElWSVRZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxJU1RFTl9EQVRBX0NPTk5FQ1RJT05fU1RBVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMSVNURU5fTUVTU0FHRV9XQUlUSU5HX0lORElDQVRPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTElTVEVOX05PTkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxJU1RFTl9TRVJWSUNFX1NUQVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMSVNURU5fU0lHTkFMX1NUUkVOR1RIIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxJU1RFTl9TSUdOQUxfU1RSRU5HVEhTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTZXJ2aWNlU3RhdGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTZXJ2aWNlU3RhdGUiCisgdHlwZT0iYW5kcm9pZC50ZWxlcGhvbnkuU2VydmljZVN0YXRlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2VydmljZVN0YXRlIgorIHR5cGU9ImFuZHJvaWQudGVsZXBob255LlNlcnZpY2VTdGF0ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImFuZHJvaWQudGVsZXBob255LlNlcnZpY2VTdGF0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2VydmljZVN0YXRlIgorIHR5cGU9ImFuZHJvaWQudGVsZXBob255LlNlcnZpY2VTdGF0ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNvcHlGcm9tIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iYW5kcm9pZC50ZWxlcGhvbnkuU2VydmljZVN0YXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SXNNYW51YWxTZWxlY3Rpb24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9wZXJhdG9yQWxwaGFMb25nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPcGVyYXRvckFscGhhU2hvcnQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9wZXJhdG9yTnVtZXJpYyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Um9hbWluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RhdGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SXNNYW51YWxTZWxlY3Rpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpc01hbnVhbCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPcGVyYXRvck5hbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb25nTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2hvcnROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJudW1lcmljIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJvYW1pbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyb2FtaW5nIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN0YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTdGF0ZU9mZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RhdGVPdXRPZlNlcnZpY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFURV9FTUVSR0VOQ1lfT05MWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RBVEVfSU5fU0VSVklDRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RBVEVfT1VUX09GX1NFUlZJQ0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNUQVRFX1BPV0VSX09GRiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNpZ25hbFN0cmVuZ3RoIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2RtYURibSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDZG1hRWNpbyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFdmRvRGJtIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEV2ZG9FY2lvIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEV2ZG9TbnIiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R3NtQml0RXJyb3JSYXRlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdzbVNpZ25hbFN0cmVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzR3NtIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTbXNNYW5hZ2VyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJkaXZpZGVNZXNzYWdlIgorIHJldHVybj0iamF2YS51dGlsLkFycmF5TGlzdCZsdDtqYXZhLmxhbmcuU3RyaW5nJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWZhdWx0IgorIHJldHVybj0iYW5kcm9pZC50ZWxlcGhvbnkuU21zTWFuYWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmREYXRhTWVzc2FnZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3RpbmF0aW9uQWRkcmVzcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NBZGRyZXNzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0aW5hdGlvblBvcnQiIHR5cGU9InNob3J0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbnRJbnRlbnQiIHR5cGU9ImFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbGl2ZXJ5SW50ZW50IiB0eXBlPSJhbmRyb2lkLmFwcC5QZW5kaW5nSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmRNdWx0aXBhcnRUZXh0TWVzc2FnZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3RpbmF0aW9uQWRkcmVzcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NBZGRyZXNzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJ0cyIgdHlwZT0iamF2YS51dGlsLkFycmF5TGlzdCZsdDtqYXZhLmxhbmcuU3RyaW5nJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VudEludGVudHMiIHR5cGU9ImphdmEudXRpbC5BcnJheUxpc3QmbHQ7YW5kcm9pZC5hcHAuUGVuZGluZ0ludGVudCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbGl2ZXJ5SW50ZW50cyIgdHlwZT0iamF2YS51dGlsLkFycmF5TGlzdCZsdDthbmRyb2lkLmFwcC5QZW5kaW5nSW50ZW50Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kVGV4dE1lc3NhZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0aW5hdGlvbkFkZHJlc3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNjQWRkcmVzcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VudEludGVudCIgdHlwZT0iYW5kcm9pZC5hcHAuUGVuZGluZ0ludGVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVsaXZlcnlJbnRlbnQiIHR5cGU9ImFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJSRVNVTFRfRVJST1JfR0VORVJJQ19GQUlMVVJFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRVNVTFRfRVJST1JfTk9fU0VSVklDRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkVTVUxUX0VSUk9SX05VTExfUERVIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRVNVTFRfRVJST1JfUkFESU9fT0ZGIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFUVVNfT05fSUNDX0ZSRUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNUQVRVU19PTl9JQ0NfUkVBRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RBVFVTX09OX0lDQ19TRU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFUVVNfT05fSUNDX1VOUkVBRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RBVFVTX09OX0lDQ19VTlNFTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTbXNNZXNzYWdlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY2FsY3VsYXRlTGVuZ3RoIgorIHJldHVybj0iaW50W10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnQm9keSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXNlN2JpdE9ubHkiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2FsY3VsYXRlTGVuZ3RoIgorIHJldHVybj0iaW50W10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZUJvZHkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVzZTdiaXRPbmx5IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUZyb21QZHUiCisgcmV0dXJuPSJhbmRyb2lkLnRlbGVwaG9ueS5TbXNNZXNzYWdlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBkdSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERpc3BsYXlNZXNzYWdlQm9keSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGlzcGxheU9yaWdpbmF0aW5nQWRkcmVzcyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RW1haWxCb2R5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbWFpbEZyb20iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluZGV4T25JY2MiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5kZXhPblNpbSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1lc3NhZ2VCb2R5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNZXNzYWdlQ2xhc3MiCisgcmV0dXJuPSJhbmRyb2lkLnRlbGVwaG9ueS5TbXNNZXNzYWdlLk1lc3NhZ2VDbGFzcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPcmlnaW5hdGluZ0FkZHJlc3MiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBkdSIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm90b2NvbElkZW50aWZpZXIiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHNldWRvU3ViamVjdCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2VydmljZUNlbnRlckFkZHJlc3MiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0YXR1cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdGF0dXNPbkljYyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdGF0dXNPblNpbSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1Ym1pdFBkdSIKKyByZXR1cm49ImFuZHJvaWQudGVsZXBob255LlNtc01lc3NhZ2UuU3VibWl0UGR1IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNjQWRkcmVzcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdGluYXRpb25BZGRyZXNzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0dXNSZXBvcnRSZXF1ZXN0ZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3VibWl0UGR1IgorIHJldHVybj0iYW5kcm9pZC50ZWxlcGhvbnkuU21zTWVzc2FnZS5TdWJtaXRQZHUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NBZGRyZXNzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0aW5hdGlvbkFkZHJlc3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3RpbmF0aW9uUG9ydCIgdHlwZT0ic2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdHVzUmVwb3J0UmVxdWVzdGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRQTGF5ZXJMZW5ndGhGb3JQRFUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGR1IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRpbWVzdGFtcE1pbGxpcyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VXNlckRhdGEiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNDcGhzTXdpTWVzc2FnZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNFbWFpbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNNV0lDbGVhck1lc3NhZ2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTVdJU2V0TWVzc2FnZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNNd2lEb250U3RvcmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUmVwbGFjZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNSZXBseVBhdGhQcmVzZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1N0YXR1c1JlcG9ydE1lc3NhZ2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iRU5DT0RJTkdfMTZCSVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVOQ09ESU5HXzdCSVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVOQ09ESU5HXzhCSVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVOQ09ESU5HX1VOS05PV04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1BWF9VU0VSX0RBVEFfQllURVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUFYX1VTRVJfREFUQV9CWVRFU19XSVRIX0hFQURFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEzNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNQVhfVVNFUl9EQVRBX1NFUFRFVFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUFYX1VTRVJfREFUQV9TRVBURVRTX1dJVEhfSEVBREVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTUzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTbXNNZXNzYWdlLk1lc3NhZ2VDbGFzcyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRW51bSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImFuZHJvaWQudGVsZXBob255LlNtc01lc3NhZ2UuTWVzc2FnZUNsYXNzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVzIgorIHJldHVybj0iYW5kcm9pZC50ZWxlcGhvbnkuU21zTWVzc2FnZS5NZXNzYWdlQ2xhc3NbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU21zTWVzc2FnZS5TdWJtaXRQZHUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iZW5jb2RlZE1lc3NhZ2UiCisgdHlwZT0iYnl0ZVtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZW5jb2RlZFNjQWRkcmVzcyIKKyB0eXBlPSJieXRlW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVGVsZXBob255TWFuYWdlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldENhbGxTdGF0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDZWxsTG9jYXRpb24iCisgcmV0dXJuPSJhbmRyb2lkLnRlbGVwaG9ueS5DZWxsTG9jYXRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGF0YUFjdGl2aXR5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERhdGFTdGF0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZXZpY2VJZCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGV2aWNlU29mdHdhcmVWZXJzaW9uIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaW5lMU51bWJlciIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmVpZ2hib3JpbmdDZWxsSW5mbyIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2FuZHJvaWQudGVsZXBob255Lk5laWdoYm9yaW5nQ2VsbEluZm8mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5ldHdvcmtDb3VudHJ5SXNvIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROZXR3b3JrT3BlcmF0b3IiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5ldHdvcmtPcGVyYXRvck5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5ldHdvcmtUeXBlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBob25lVHlwZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaW1Db3VudHJ5SXNvIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaW1PcGVyYXRvciIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2ltT3BlcmF0b3JOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaW1TZXJpYWxOdW1iZXIiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNpbVN0YXRlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1YnNjcmliZXJJZCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Vm9pY2VNYWlsQWxwaGFUYWciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZvaWNlTWFpbE51bWJlciIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzSWNjQ2FyZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNOZXR3b3JrUm9hbWluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGlzdGVuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQudGVsZXBob255LlBob25lU3RhdGVMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnRzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fUEhPTkVfU1RBVEVfQ0hBTkdFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmludGVudC5hY3Rpb24uUEhPTkVfU1RBVEUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0FMTF9TVEFURV9JRExFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDQUxMX1NUQVRFX09GRkhPT0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNBTExfU1RBVEVfUklOR0lORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFUQV9BQ1RJVklUWV9ET1JNQU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVRBX0FDVElWSVRZX0lOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVRBX0FDVElWSVRZX0lOT1VUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVRBX0FDVElWSVRZX05PTkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRBVEFfQUNUSVZJVFlfT1VUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVRBX0NPTk5FQ1RFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFUQV9DT05ORUNUSU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVRBX0RJU0NPTk5FQ1RFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFUQV9TVVNQRU5ERUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX0lOQ09NSU5HX05VTUJFUiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtpbmNvbWluZ19udW1iZXImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfU1RBVEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c3RhdGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhUUkFfU1RBVEVfSURMRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVFJBX1NUQVRFX09GRkhPT0siCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFRSQV9TVEFURV9SSU5HSU5HIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTkVUV09SS19UWVBFXzF4UlRUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJORVRXT1JLX1RZUEVfQ0RNQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTkVUV09SS19UWVBFX0VER0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5FVFdPUktfVFlQRV9FVkRPXzAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5FVFdPUktfVFlQRV9FVkRPX0EiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5FVFdPUktfVFlQRV9HUFJTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJORVRXT1JLX1RZUEVfSFNEUEEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5FVFdPUktfVFlQRV9IU1BBIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTkVUV09SS19UWVBFX0hTVVBBIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJORVRXT1JLX1RZUEVfSURFTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjExIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5FVFdPUktfVFlQRV9VTVRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJORVRXT1JLX1RZUEVfVU5LTk9XTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEhPTkVfVFlQRV9DRE1BIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQSE9ORV9UWVBFX0dTTSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEhPTkVfVFlQRV9OT05FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTSU1fU1RBVEVfQUJTRU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTSU1fU1RBVEVfTkVUV09SS19MT0NLRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNJTV9TVEFURV9QSU5fUkVRVUlSRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNJTV9TVEFURV9QVUtfUkVRVUlSRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNJTV9TVEFURV9SRUFEWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0lNX1NUQVRFX1VOS05PV04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQudGVsZXBob255LmNkbWEiCis+Cis8Y2xhc3MgbmFtZT0iQ2RtYUNlbGxMb2NhdGlvbiIKKyBleHRlbmRzPSJhbmRyb2lkLnRlbGVwaG9ueS5DZWxsTG9jYXRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDZG1hQ2VsbExvY2F0aW9uIgorIHR5cGU9ImFuZHJvaWQudGVsZXBob255LmNkbWEuQ2RtYUNlbGxMb2NhdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNkbWFDZWxsTG9jYXRpb24iCisgdHlwZT0iYW5kcm9pZC50ZWxlcGhvbnkuY2RtYS5DZG1hQ2VsbExvY2F0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVuZGxlIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImZpbGxJbk5vdGlmaWVyQnVuZGxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVuZGxlVG9GaWxsIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCYXNlU3RhdGlvbklkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJhc2VTdGF0aW9uTGF0aXR1ZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QmFzZVN0YXRpb25Mb25naXR1ZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmV0d29ya0lkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN5c3RlbUlkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENlbGxMb2NhdGlvbkRhdGEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiYXNlU3RhdGlvbklkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJhc2VTdGF0aW9uTGF0aXR1ZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmFzZVN0YXRpb25Mb25naXR1ZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDZWxsTG9jYXRpb25EYXRhIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYmFzZVN0YXRpb25JZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiYXNlU3RhdGlvbkxhdGl0dWRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJhc2VTdGF0aW9uTG9uZ2l0dWRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN5c3RlbUlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ldHdvcmtJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN0YXRlSW52YWxpZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJhbmRyb2lkLnRlbGVwaG9ueS5nc20iCis+Cis8Y2xhc3MgbmFtZT0iR3NtQ2VsbExvY2F0aW9uIgorIGV4dGVuZHM9ImFuZHJvaWQudGVsZXBob255LkNlbGxMb2NhdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkdzbUNlbGxMb2NhdGlvbiIKKyB0eXBlPSJhbmRyb2lkLnRlbGVwaG9ueS5nc20uR3NtQ2VsbExvY2F0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iR3NtQ2VsbExvY2F0aW9uIgorIHR5cGU9ImFuZHJvaWQudGVsZXBob255LmdzbS5Hc21DZWxsTG9jYXRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidW5kbGUiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZmlsbEluTm90aWZpZXJCdW5kbGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDaWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGFjIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldExhY0FuZENpZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxhYyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTdGF0ZUludmFsaWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNtc01hbmFnZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZGl2aWRlTWVzc2FnZSIKKyByZXR1cm49ImphdmEudXRpbC5BcnJheUxpc3QmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlZmF1bHQiCisgcmV0dXJuPSJhbmRyb2lkLnRlbGVwaG9ueS5nc20uU21zTWFuYWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kRGF0YU1lc3NhZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdGluYXRpb25BZGRyZXNzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY0FkZHJlc3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3RpbmF0aW9uUG9ydCIgdHlwZT0ic2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VudEludGVudCIgdHlwZT0iYW5kcm9pZC5hcHAuUGVuZGluZ0ludGVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVsaXZlcnlJbnRlbnQiIHR5cGU9ImFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VuZE11bHRpcGFydFRleHRNZXNzYWdlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3RpbmF0aW9uQWRkcmVzcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NBZGRyZXNzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJ0cyIgdHlwZT0iamF2YS51dGlsLkFycmF5TGlzdCZsdDtqYXZhLmxhbmcuU3RyaW5nJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VudEludGVudHMiIHR5cGU9ImphdmEudXRpbC5BcnJheUxpc3QmbHQ7YW5kcm9pZC5hcHAuUGVuZGluZ0ludGVudCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbGl2ZXJ5SW50ZW50cyIgdHlwZT0iamF2YS51dGlsLkFycmF5TGlzdCZsdDthbmRyb2lkLmFwcC5QZW5kaW5nSW50ZW50Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kVGV4dE1lc3NhZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdGluYXRpb25BZGRyZXNzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY0FkZHJlc3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbnRJbnRlbnQiIHR5cGU9ImFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbGl2ZXJ5SW50ZW50IiB0eXBlPSJhbmRyb2lkLmFwcC5QZW5kaW5nSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iUkVTVUxUX0VSUk9SX0dFTkVSSUNfRkFJTFVSRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRVNVTFRfRVJST1JfTk9fU0VSVklDRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRVNVTFRfRVJST1JfTlVMTF9QRFUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkVTVUxUX0VSUk9SX1JBRElPX09GRiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFUVVNfT05fU0lNX0ZSRUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RBVFVTX09OX1NJTV9SRUFEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNUQVRVU19PTl9TSU1fU0VOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFUVVNfT05fU0lNX1VOUkVBRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFUVVNfT05fU0lNX1VOU0VOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU21zTWVzc2FnZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTbXNNZXNzYWdlIgorIHR5cGU9ImFuZHJvaWQudGVsZXBob255LmdzbS5TbXNNZXNzYWdlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2FsY3VsYXRlTGVuZ3RoIgorIHJldHVybj0iaW50W10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlQm9keSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXNlN2JpdE9ubHkiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2FsY3VsYXRlTGVuZ3RoIgorIHJldHVybj0iaW50W10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlQm9keSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXNlN2JpdE9ubHkiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlRnJvbVBkdSIKKyByZXR1cm49ImFuZHJvaWQudGVsZXBob255LmdzbS5TbXNNZXNzYWdlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGR1IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGlzcGxheU1lc3NhZ2VCb2R5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERpc3BsYXlPcmlnaW5hdGluZ0FkZHJlc3MiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RW1haWxCb2R5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVtYWlsRnJvbSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbmRleE9uU2ltIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWVzc2FnZUJvZHkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWVzc2FnZUNsYXNzIgorIHJldHVybj0iYW5kcm9pZC50ZWxlcGhvbnkuZ3NtLlNtc01lc3NhZ2UuTWVzc2FnZUNsYXNzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T3JpZ2luYXRpbmdBZGRyZXNzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBkdSIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb3RvY29sSWRlbnRpZmllciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBzZXVkb1N1YmplY3QiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2VydmljZUNlbnRlckFkZHJlc3MiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RhdHVzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RhdHVzT25TaW0iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdWJtaXRQZHUiCisgcmV0dXJuPSJhbmRyb2lkLnRlbGVwaG9ueS5nc20uU21zTWVzc2FnZS5TdWJtaXRQZHUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzY0FkZHJlc3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3RpbmF0aW9uQWRkcmVzcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdHVzUmVwb3J0UmVxdWVzdGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1Ym1pdFBkdSIKKyByZXR1cm49ImFuZHJvaWQudGVsZXBob255LmdzbS5TbXNNZXNzYWdlLlN1Ym1pdFBkdSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNjQWRkcmVzcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdGluYXRpb25BZGRyZXNzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0aW5hdGlvblBvcnQiIHR5cGU9InNob3J0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXR1c1JlcG9ydFJlcXVlc3RlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUUExheWVyTGVuZ3RoRm9yUERVIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGR1IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRpbWVzdGFtcE1pbGxpcyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVc2VyRGF0YSIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ3Boc013aU1lc3NhZ2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNFbWFpbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc01XSUNsZWFyTWVzc2FnZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc01XSVNldE1lc3NhZ2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNNd2lEb250U3RvcmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNSZXBsYWNlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUmVwbHlQYXRoUHJlc2VudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1N0YXR1c1JlcG9ydE1lc3NhZ2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJFTkNPRElOR18xNkJJVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFTkNPRElOR183QklUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVOQ09ESU5HXzhCSVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRU5DT0RJTkdfVU5LTk9XTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNQVhfVVNFUl9EQVRBX0JZVEVTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTQwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUFYX1VTRVJfREFUQV9TRVBURVRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUFYX1VTRVJfREFUQV9TRVBURVRTX1dJVEhfSEVBREVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTUzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNtc01lc3NhZ2UuTWVzc2FnZUNsYXNzIgorIGV4dGVuZHM9ImphdmEubGFuZy5FbnVtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJhbmRyb2lkLnRlbGVwaG9ueS5nc20uU21zTWVzc2FnZS5NZXNzYWdlQ2xhc3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZXMiCisgcmV0dXJuPSJhbmRyb2lkLnRlbGVwaG9ueS5nc20uU21zTWVzc2FnZS5NZXNzYWdlQ2xhc3NbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU21zTWVzc2FnZS5TdWJtaXRQZHUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTbXNNZXNzYWdlLlN1Ym1pdFBkdSIKKyB0eXBlPSJhbmRyb2lkLnRlbGVwaG9ueS5nc20uU21zTWVzc2FnZS5TdWJtaXRQZHUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9ImVuY29kZWRNZXNzYWdlIgorIHR5cGU9ImJ5dGVbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZW5jb2RlZFNjQWRkcmVzcyIKKyB0eXBlPSJieXRlW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQudGVzdCIKKz4KKzxjbGFzcyBuYW1lPSJBY3Rpdml0eUluc3RydW1lbnRhdGlvblRlc3RDYXNlIgorIGV4dGVuZHM9ImFuZHJvaWQudGVzdC5BY3Rpdml0eVRlc3RDYXNlIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFjdGl2aXR5SW5zdHJ1bWVudGF0aW9uVGVzdENhc2UiCisgdHlwZT0iYW5kcm9pZC50ZXN0LkFjdGl2aXR5SW5zdHJ1bWVudGF0aW9uVGVzdENhc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwa2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGl2aXR5Q2xhc3MiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDtUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWN0aXZpdHlJbnN0cnVtZW50YXRpb25UZXN0Q2FzZSIKKyB0eXBlPSJhbmRyb2lkLnRlc3QuQWN0aXZpdHlJbnN0cnVtZW50YXRpb25UZXN0Q2FzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBrZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aXZpdHlDbGFzcyIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0O1QmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbml0aWFsVG91Y2hNb2RlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0QWN0aXZpdHkiCisgcmV0dXJuPSJUIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRlc3RBY3Rpdml0eVRlc3RDYXNlU2V0VXBQcm9wZXJseSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBY3Rpdml0eUluc3RydW1lbnRhdGlvblRlc3RDYXNlMiIKKyBleHRlbmRzPSJhbmRyb2lkLnRlc3QuQWN0aXZpdHlUZXN0Q2FzZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWN0aXZpdHlJbnN0cnVtZW50YXRpb25UZXN0Q2FzZTIiCisgdHlwZT0iYW5kcm9pZC50ZXN0LkFjdGl2aXR5SW5zdHJ1bWVudGF0aW9uVGVzdENhc2UyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwa2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGl2aXR5Q2xhc3MiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDtUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWN0aXZpdHlJbnN0cnVtZW50YXRpb25UZXN0Q2FzZTIiCisgdHlwZT0iYW5kcm9pZC50ZXN0LkFjdGl2aXR5SW5zdHJ1bWVudGF0aW9uVGVzdENhc2UyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aXZpdHlDbGFzcyIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0O1QmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0QWN0aXZpdHkiCisgcmV0dXJuPSJUIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFjdGl2aXR5SW5pdGlhbFRvdWNoTW9kZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluaXRpYWxUb3VjaE1vZGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QWN0aXZpdHlJbnRlbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFjdGl2aXR5VGVzdENhc2UiCisgZXh0ZW5kcz0iYW5kcm9pZC50ZXN0Lkluc3RydW1lbnRhdGlvblRlc3RDYXNlIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBY3Rpdml0eVRlc3RDYXNlIgorIHR5cGU9ImFuZHJvaWQudGVzdC5BY3Rpdml0eVRlc3RDYXNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEFjdGl2aXR5IgorIHJldHVybj0iYW5kcm9pZC5hcHAuQWN0aXZpdHkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2NydWJDbGFzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3RDYXNlQ2xhc3MiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBY2Nlc3NFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QWN0aXZpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXN0QWN0aXZpdHkiIHR5cGU9ImFuZHJvaWQuYXBwLkFjdGl2aXR5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFjdGl2aXR5VW5pdFRlc3RDYXNlIgorIGV4dGVuZHM9ImFuZHJvaWQudGVzdC5BY3Rpdml0eVRlc3RDYXNlIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBY3Rpdml0eVVuaXRUZXN0Q2FzZSIKKyB0eXBlPSJhbmRyb2lkLnRlc3QuQWN0aXZpdHlVbml0VGVzdENhc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpdml0eUNsYXNzIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7VCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRBY3Rpdml0eSIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmluaXNoZWRBY3Rpdml0eVJlcXVlc3QiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVxdWVzdGVkT3JpZW50YXRpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RhcnRlZEFjdGl2aXR5SW50ZW50IgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkludGVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdGFydGVkQWN0aXZpdHlSZXF1ZXN0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRmluaXNoQ2FsbGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBY3Rpdml0eUNvbnRleHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpdml0eUNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFwcGxpY2F0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXBwbGljYXRpb24iIHR5cGU9ImFuZHJvaWQuYXBwLkFwcGxpY2F0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0QWN0aXZpdHkiCisgcmV0dXJuPSJUIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNhdmVkSW5zdGFuY2VTdGF0ZSIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxhc3ROb25Db25maWd1cmF0aW9uSW5zdGFuY2UiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQW5kcm9pZFRlc3RDYXNlIgorIGV4dGVuZHM9Imp1bml0LmZyYW1ld29yay5UZXN0Q2FzZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFuZHJvaWRUZXN0Q2FzZSIKKyB0eXBlPSJhbmRyb2lkLnRlc3QuQW5kcm9pZFRlc3RDYXNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFzc2VydEFjdGl2aXR5UmVxdWlyZXNQZXJtaXNzaW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2FnZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNsYXNzTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGVybWlzc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRSZWFkaW5nQ29udGVudFVyaVJlcXVpcmVzUGVybWlzc2lvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwZXJtaXNzaW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzc2VydFdyaXRpbmdDb250ZW50VXJpUmVxdWlyZXNQZXJtaXNzaW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pc3Npb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGV4dCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db250ZXh0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNjcnViQ2xhc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXN0Q2FzZUNsYXNzIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBY2Nlc3NFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbnRleHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0ZXN0QW5kcm9pZFRlc3RDYXNlU2V0dXBQcm9wZXJseSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJtQ29udGV4dCIKKyB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBbmRyb2lkVGVzdFJ1bm5lciIKKyBleHRlbmRzPSJqdW5pdC5ydW5uZXIuQmFzZVRlc3RSdW5uZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBbmRyb2lkVGVzdFJ1bm5lciIKKyB0eXBlPSJhbmRyb2lkLnRlc3QuQW5kcm9pZFRlc3RSdW5uZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkVGVzdExpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVzdExpc3RlbmVyIiB0eXBlPSJqdW5pdC5mcmFtZXdvcmsuVGVzdExpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyVGVzdExpc3RlbmVycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlVGVzdFJlc3VsdCIKKyByZXR1cm49Imp1bml0LmZyYW1ld29yay5UZXN0UmVzdWx0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRlc3RDYXNlcyIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2p1bml0LmZyYW1ld29yay5UZXN0Q2FzZSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGVzdENsYXNzTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGVzdFJlc3VsdCIKKyByZXR1cm49Imp1bml0LmZyYW1ld29yay5UZXN0UmVzdWx0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJ1bkZhaWxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icnVuVGVzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icnVuVGVzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3RSZXN1bHQiIHR5cGU9Imp1bml0LmZyYW1ld29yay5UZXN0UmVzdWx0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbnRleHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJbnN0cnVtZW50YWl0b24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imluc3RydW1lbnRhdGlvbiIgdHlwZT0iYW5kcm9pZC5hcHAuSW5zdHJ1bWVudGF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEluc3RydW1lbnRhdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imluc3RydW1lbnRhdGlvbiIgdHlwZT0iYW5kcm9pZC5hcHAuSW5zdHJ1bWVudGF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRlc3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXN0IiB0eXBlPSJqdW5pdC5mcmFtZXdvcmsuVGVzdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUZXN0Q2xhc3NOYW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVzdENsYXNzTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGVzdE1ldGhvZE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGVzdEVuZGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVzdE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGVzdEZhaWxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXR1cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXN0IiB0eXBlPSJqdW5pdC5mcmFtZXdvcmsuVGVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idCIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0ZXN0U3RhcnRlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3ROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFwcGxpY2F0aW9uVGVzdENhc2UiCisgZXh0ZW5kcz0iYW5kcm9pZC50ZXN0LkFuZHJvaWRUZXN0Q2FzZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXBwbGljYXRpb25UZXN0Q2FzZSIKKyB0eXBlPSJhbmRyb2lkLnRlc3QuQXBwbGljYXRpb25UZXN0Q2FzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFwcGxpY2F0aW9uQ2xhc3MiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDtUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUFwcGxpY2F0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFwcGxpY2F0aW9uIgorIHJldHVybj0iVCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTeXN0ZW1Db250ZXh0IgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGVybWluYXRlQXBwbGljYXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGVzdEFwcGxpY2F0aW9uVGVzdENhc2VTZXRVcFByb3Blcmx5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQXNzZXJ0aW9uRmFpbGVkRXJyb3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkVycm9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXNzZXJ0aW9uRmFpbGVkRXJyb3IiCisgdHlwZT0iYW5kcm9pZC50ZXN0LkFzc2VydGlvbkZhaWxlZEVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXNzZXJ0aW9uRmFpbGVkRXJyb3IiCisgdHlwZT0iYW5kcm9pZC50ZXN0LkFzc2VydGlvbkZhaWxlZEVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXJyb3JNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29tcGFyaXNvbkZhaWx1cmUiCisgZXh0ZW5kcz0iYW5kcm9pZC50ZXN0LkFzc2VydGlvbkZhaWxlZEVycm9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29tcGFyaXNvbkZhaWx1cmUiCisgdHlwZT0iYW5kcm9pZC50ZXN0LkNvbXBhcmlzb25GYWlsdXJlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdHVhbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkZsYWt5VGVzdCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5hbm5vdGF0aW9uLkFubm90YXRpb24iPgorPC9pbXBsZW1lbnRzPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbnN0cnVtZW50YXRpb25UZXN0Q2FzZSIKKyBleHRlbmRzPSJqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnN0cnVtZW50YXRpb25UZXN0Q2FzZSIKKyB0eXBlPSJhbmRyb2lkLnRlc3QuSW5zdHJ1bWVudGF0aW9uVGVzdENhc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdHJ1bWVudGF0aW9uIgorIHJldHVybj0iYW5kcm9pZC5hcHAuSW5zdHJ1bWVudGF0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluamVjdEluc3J1bWVudGF0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnN0cnVtZW50YXRpb24iIHR5cGU9ImFuZHJvaWQuYXBwLkluc3RydW1lbnRhdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbmplY3RJbnN0cnVtZW50YXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnN0cnVtZW50YXRpb24iIHR5cGU9ImFuZHJvaWQuYXBwLkluc3RydW1lbnRhdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsYXVuY2hBY3Rpdml0eSIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGtnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpdml0eUNscyIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0O1QmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHRyYXMiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxhdW5jaEFjdGl2aXR5V2l0aEludGVudCIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGtnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpdml0eUNscyIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0O1QmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icnVuVGVzdE9uVWlUaHJlYWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlRocm93YWJsZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kS2V5cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleXNTZXF1ZW5jZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kS2V5cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleXMiIHR5cGU9ImludC4uLiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kUmVwZWF0ZWRLZXlzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5cyIgdHlwZT0iaW50Li4uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ikluc3RydW1lbnRhdGlvblRlc3RSdW5uZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC5hcHAuSW5zdHJ1bWVudGF0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRlc3QuVGVzdFN1aXRlUHJvdmlkZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikluc3RydW1lbnRhdGlvblRlc3RSdW5uZXIiCisgdHlwZT0iYW5kcm9pZC50ZXN0Lkluc3RydW1lbnRhdGlvblRlc3RSdW5uZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0QWxsVGVzdHMiCisgcmV0dXJuPSJqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFuZHJvaWRUZXN0UnVubmVyIgorIHJldHVybj0iYW5kcm9pZC50ZXN0LkFuZHJvaWRUZXN0UnVubmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvYWRlciIKKyByZXR1cm49ImphdmEubGFuZy5DbGFzc0xvYWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUZXN0U3VpdGUiCisgcmV0dXJuPSJqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iUkVQT1JUX0tFWV9OQU1FX0NMQVNTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2NsYXNzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFUE9SVF9LRVlfTkFNRV9URVNUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3Rlc3QmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkVQT1JUX0tFWV9OVU1fQ1VSUkVOVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtjdXJyZW50JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFUE9SVF9LRVlfTlVNX1RPVEFMIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O251bXRlc3RzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFUE9SVF9LRVlfU1RBQ0siCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c3RhY2smcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkVQT1JUX1ZBTFVFX0lEIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O0luc3RydW1lbnRhdGlvblRlc3RSdW5uZXImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkVQT1JUX1ZBTFVFX1JFU1VMVF9FUlJPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFUE9SVF9WQUxVRV9SRVNVTFRfRkFJTFVSRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0yIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFUE9SVF9WQUxVRV9SRVNVTFRfT0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFUE9SVF9WQUxVRV9SRVNVTFRfU1RBUlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbnN0cnVtZW50YXRpb25UZXN0U3VpdGUiCisgZXh0ZW5kcz0ianVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikluc3RydW1lbnRhdGlvblRlc3RTdWl0ZSIKKyB0eXBlPSJhbmRyb2lkLnRlc3QuSW5zdHJ1bWVudGF0aW9uVGVzdFN1aXRlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5zdHIiIHR5cGU9ImFuZHJvaWQuYXBwLkluc3RydW1lbnRhdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW5zdHJ1bWVudGF0aW9uVGVzdFN1aXRlIgorIHR5cGU9ImFuZHJvaWQudGVzdC5JbnN0cnVtZW50YXRpb25UZXN0U3VpdGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnN0ciIgdHlwZT0iYW5kcm9pZC5hcHAuSW5zdHJ1bWVudGF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnN0cnVtZW50YXRpb25UZXN0U3VpdGUiCisgdHlwZT0iYW5kcm9pZC50ZXN0Lkluc3RydW1lbnRhdGlvblRlc3RTdWl0ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUNsYXNzIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imluc3RyIiB0eXBlPSJhbmRyb2lkLmFwcC5JbnN0cnVtZW50YXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJc29sYXRlZENvbnRleHQiCisgZXh0ZW5kcz0iYW5kcm9pZC5jb250ZW50LkNvbnRleHRXcmFwcGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSXNvbGF0ZWRDb250ZXh0IgorIHR5cGU9ImFuZHJvaWQudGVzdC5Jc29sYXRlZENvbnRleHQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvbHZlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0Q29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRBbmRDbGVhckJyb2FkY2FzdEludGVudHMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLmNvbnRlbnQuSW50ZW50Jmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNb3JlQXNzZXJ0cyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0QXNzaWduYWJsZUZyb20iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdHVhbCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRBc3NpZ25hYmxlRnJvbSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWQiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0dWFsIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0Q29udGFpbnNSZWdleCIKKyByZXR1cm49ImphdmEudXRpbC5yZWdleC5NYXRjaFJlc3VsdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3RlZFJlZ2V4IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3R1YWwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0Q29udGFpbnNSZWdleCIKKyByZXR1cm49ImphdmEudXRpbC5yZWdleC5NYXRjaFJlc3VsdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3RlZFJlZ2V4IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3R1YWwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0Q29udGVudHNJbkFueU9yZGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3R1YWwiIHR5cGU9ImphdmEubGFuZy5JdGVyYWJsZSZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWQiIHR5cGU9ImphdmEubGFuZy5PYmplY3QuLi4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0Q29udGVudHNJbkFueU9yZGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY3R1YWwiIHR5cGU9ImphdmEubGFuZy5JdGVyYWJsZSZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWQiIHR5cGU9ImphdmEubGFuZy5PYmplY3QuLi4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0Q29udGVudHNJbk9yZGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3R1YWwiIHR5cGU9ImphdmEubGFuZy5JdGVyYWJsZSZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWQiIHR5cGU9ImphdmEubGFuZy5PYmplY3QuLi4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0Q29udGVudHNJbk9yZGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY3R1YWwiIHR5cGU9ImphdmEubGFuZy5JdGVyYWJsZSZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWQiIHR5cGU9ImphdmEubGFuZy5PYmplY3QuLi4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0RW1wdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Iml0ZXJhYmxlIiB0eXBlPSJqYXZhLmxhbmcuSXRlcmFibGUmbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0RW1wdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Iml0ZXJhYmxlIiB0eXBlPSJqYXZhLmxhbmcuSXRlcmFibGUmbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0RW1wdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1hcCIgdHlwZT0iamF2YS51dGlsLk1hcCZsdDs/LCA/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRFbXB0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFwIiB0eXBlPSJqYXZhLnV0aWwuTWFwJmx0Oz8sID8mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzc2VydEVxdWFscyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWQiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0dWFsIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0RXF1YWxzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3RlZCIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3R1YWwiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRFcXVhbHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0dWFsIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRFcXVhbHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0dWFsIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRFcXVhbHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkIiB0eXBlPSJkb3VibGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0dWFsIiB0eXBlPSJkb3VibGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRFcXVhbHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkIiB0eXBlPSJkb3VibGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0dWFsIiB0eXBlPSJkb3VibGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRFcXVhbHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdHVhbCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzc2VydEVxdWFscyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWQiIHR5cGU9ImphdmEubGFuZy5PYmplY3RbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0dWFsIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0RXF1YWxzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3RlZCIgdHlwZT0iamF2YS51dGlsLlNldCZsdDs/IGV4dGVuZHMgamF2YS5sYW5nLk9iamVjdCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdHVhbCIgdHlwZT0iamF2YS51dGlsLlNldCZsdDs/IGV4dGVuZHMgamF2YS5sYW5nLk9iamVjdCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0RXF1YWxzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3RlZCIgdHlwZT0iamF2YS51dGlsLlNldCZsdDs/IGV4dGVuZHMgamF2YS5sYW5nLk9iamVjdCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdHVhbCIgdHlwZT0iamF2YS51dGlsLlNldCZsdDs/IGV4dGVuZHMgamF2YS5sYW5nLk9iamVjdCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0TWF0Y2hlc1JlZ2V4IgorIHJldHVybj0iamF2YS51dGlsLnJlZ2V4Lk1hdGNoUmVzdWx0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkUmVnZXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdHVhbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRNYXRjaGVzUmVnZXgiCisgcmV0dXJuPSJqYXZhLnV0aWwucmVnZXguTWF0Y2hSZXN1bHQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWRSZWdleCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0dWFsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzc2VydE5vdENvbnRhaW5zUmVnZXgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkUmVnZXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdHVhbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnROb3RDb250YWluc1JlZ2V4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3RlZFJlZ2V4IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3R1YWwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0Tm90RW1wdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Iml0ZXJhYmxlIiB0eXBlPSJqYXZhLmxhbmcuSXRlcmFibGUmbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0Tm90RW1wdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Iml0ZXJhYmxlIiB0eXBlPSJqYXZhLmxhbmcuSXRlcmFibGUmbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0Tm90RW1wdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1hcCIgdHlwZT0iamF2YS51dGlsLk1hcCZsdDs/LCA/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnROb3RFbXB0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFwIiB0eXBlPSJqYXZhLnV0aWwuTWFwJmx0Oz8sID8mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzc2VydE5vdEVxdWFsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bmV4cGVjdGVkIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3R1YWwiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0Tm90RXF1YWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVuZXhwZWN0ZWQiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdHVhbCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnROb3RNYXRjaGVzUmVnZXgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkUmVnZXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdHVhbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnROb3RNYXRjaGVzUmVnZXgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkUmVnZXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdHVhbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGVja0VxdWFsc0FuZEhhc2hDb2RlTWV0aG9kcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGhzIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaHMiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkUmVzdWx0IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrRXF1YWxzQW5kSGFzaENvZGVNZXRob2RzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaHMiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJocyIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWRSZXN1bHQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlBlcmZvcm1hbmNlVGVzdENhc2UiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJpc1BlcmZvcm1hbmNlT25seSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydFBlcmZvcm1hbmNlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVybWVkaWF0ZXMiIHR5cGU9ImFuZHJvaWQudGVzdC5QZXJmb3JtYW5jZVRlc3RDYXNlLkludGVybWVkaWF0ZXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJQZXJmb3JtYW5jZVRlc3RDYXNlLkludGVybWVkaWF0ZXMiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImFkZEludGVybWVkaWF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRJbnRlcm1lZGlhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVJbk5TIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmlzaFRpbWluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVhbFRpbWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW50ZXJuYWxJdGVyYXRpb25zIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0VGltaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWFsVGltZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iUHJvdmlkZXJUZXN0Q2FzZSIKKyBleHRlbmRzPSJhbmRyb2lkLnRlc3QuSW5zdHJ1bWVudGF0aW9uVGVzdENhc2UiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJvdmlkZXJUZXN0Q2FzZSIKKyB0eXBlPSJhbmRyb2lkLnRlc3QuUHJvdmlkZXJUZXN0Q2FzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyQ2xhc3MiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDtUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXJBdXRob3JpdHkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRNb2NrQ29udGVudFJlc29sdmVyIgorIHJldHVybj0iYW5kcm9pZC50ZXN0Lm1vY2suTW9ja0NvbnRlbnRSZXNvbHZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNb2NrQ29udGV4dCIKKyByZXR1cm49ImFuZHJvaWQudGVzdC5Jc29sYXRlZENvbnRleHQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvdmlkZXIiCisgcmV0dXJuPSJUIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1Jlc29sdmVyV2l0aENvbnRlbnRQcm92aWRlckZyb21TcWwiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldENvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlckNsYXNzIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7VCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF1dGhvcml0eSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YWJhc2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhYmFzZVZlcnNpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3FsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW5zdGFudGlhdGlvbkV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkluc3RhbnRpYXRpb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUHJvdmlkZXJUZXN0Q2FzZTIiCisgZXh0ZW5kcz0iYW5kcm9pZC50ZXN0LkFuZHJvaWRUZXN0Q2FzZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJvdmlkZXJUZXN0Q2FzZTIiCisgdHlwZT0iYW5kcm9pZC50ZXN0LlByb3ZpZGVyVGVzdENhc2UyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXJDbGFzcyIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0O1QmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlckF1dGhvcml0eSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldE1vY2tDb250ZW50UmVzb2x2ZXIiCisgcmV0dXJuPSJhbmRyb2lkLnRlc3QubW9jay5Nb2NrQ29udGVudFJlc29sdmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1vY2tDb250ZXh0IgorIHJldHVybj0iYW5kcm9pZC50ZXN0Lklzb2xhdGVkQ29udGV4dCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm92aWRlciIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3UmVzb2x2ZXJXaXRoQ29udGVudFByb3ZpZGVyRnJvbVNxbCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0Q29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGVuYW1lUHJlZml4IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlckNsYXNzIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7VCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF1dGhvcml0eSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YWJhc2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhYmFzZVZlcnNpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3FsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW5zdGFudGlhdGlvbkV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkluc3RhbnRpYXRpb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmVuYW1pbmdEZWxlZ2F0aW5nQ29udGV4dCIKKyBleHRlbmRzPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dFdyYXBwZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZW5hbWluZ0RlbGVnYXRpbmdDb250ZXh0IgorIHR5cGU9ImFuZHJvaWQudGVzdC5SZW5hbWluZ0RlbGVnYXRpbmdDb250ZXh0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGVQcmVmaXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlbmFtaW5nRGVsZWdhdGluZ0NvbnRleHQiCisgdHlwZT0iYW5kcm9pZC50ZXN0LlJlbmFtaW5nRGVsZWdhdGluZ0NvbnRleHQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsZUNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlUHJlZml4IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0RGF0YWJhc2VQcmVmaXgiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1ha2VFeGlzdGluZ0ZpbGVzQW5kRGJzQWNjZXNzaWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJvdmlkZXJXaXRoUmVuYW1lZENvbnRleHQiCisgcmV0dXJuPSJUIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRlbnRQcm92aWRlciIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0O1QmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsZVByZWZpeCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBY2Nlc3NFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ikluc3RhbnRpYXRpb25FeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnN0YW50aWF0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByb3ZpZGVyV2l0aFJlbmFtZWRDb250ZXh0IgorIHJldHVybj0iVCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZW50UHJvdmlkZXIiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDtUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGVQcmVmaXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFsbG93QWNjZXNzVG9FeGlzdGluZ0ZpbGVzQW5kRGJzIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW5zdGFudGlhdGlvbkV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkluc3RhbnRpYXRpb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2VydmljZVRlc3RDYXNlIgorIGV4dGVuZHM9ImFuZHJvaWQudGVzdC5BbmRyb2lkVGVzdENhc2UiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNlcnZpY2VUZXN0Q2FzZSIKKyB0eXBlPSJhbmRyb2lkLnRlc3QuU2VydmljZVRlc3RDYXNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VydmljZUNsYXNzIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7VCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJiaW5kU2VydmljZSIKKyByZXR1cm49ImFuZHJvaWQub3MuSUJpbmRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFwcGxpY2F0aW9uIgorIHJldHVybj0iYW5kcm9pZC5hcHAuQXBwbGljYXRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2VydmljZSIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3lzdGVtQ29udGV4dCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db250ZXh0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFwcGxpY2F0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXBwbGljYXRpb24iIHR5cGU9ImFuZHJvaWQuYXBwLkFwcGxpY2F0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldHVwU2VydmljZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2h1dGRvd25TZXJ2aWNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydFNlcnZpY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGVzdFNlcnZpY2VUZXN0Q2FzZVNldFVwUHJvcGVybHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2luZ2xlTGF1bmNoQWN0aXZpdHlUZXN0Q2FzZSIKKyBleHRlbmRzPSJhbmRyb2lkLnRlc3QuSW5zdHJ1bWVudGF0aW9uVGVzdENhc2UiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNpbmdsZUxhdW5jaEFjdGl2aXR5VGVzdENhc2UiCisgdHlwZT0iYW5kcm9pZC50ZXN0LlNpbmdsZUxhdW5jaEFjdGl2aXR5VGVzdENhc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwa2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGl2aXR5Q2xhc3MiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDtUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEFjdGl2aXR5IgorIHJldHVybj0iVCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0ZXN0QWN0aXZpdHlUZXN0Q2FzZVNldFVwUHJvcGVybHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3luY0Jhc2VJbnN0cnVtZW50YXRpb24iCisgZXh0ZW5kcz0iYW5kcm9pZC50ZXN0Lkluc3RydW1lbnRhdGlvblRlc3RDYXNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3luY0Jhc2VJbnN0cnVtZW50YXRpb24iCisgdHlwZT0iYW5kcm9pZC50ZXN0LlN5bmNCYXNlSW5zdHJ1bWVudGF0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNhbmNlbFN5bmNzYW5kRGlzYWJsZUF1dG9TeW5jIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzeW5jUHJvdmlkZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjb3VudE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF1dGhvcml0eSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJUZXN0U3VpdGVQcm92aWRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldFRlc3RTdWl0ZSIKKyByZXR1cm49Imp1bml0LmZyYW1ld29yay5UZXN0U3VpdGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iVG91Y2hVdGlscyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVG91Y2hVdGlscyIKKyB0eXBlPSJhbmRyb2lkLnRlc3QuVG91Y2hVdGlscyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbGlja1ZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3QiIHR5cGU9ImFuZHJvaWQudGVzdC5JbnN0cnVtZW50YXRpb25UZXN0Q2FzZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXN0IiB0eXBlPSJhbmRyb2lkLnRlc3QuQWN0aXZpdHlJbnN0cnVtZW50YXRpb25UZXN0Q2FzZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZnJvbVgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b1giIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmcm9tWSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvWSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0ZXBDb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYWciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3QiIHR5cGU9ImFuZHJvaWQudGVzdC5JbnN0cnVtZW50YXRpb25UZXN0Q2FzZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZnJvbVgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b1giIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmcm9tWSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvWSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0ZXBDb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYWdRdWFydGVyU2NyZWVuRG93biIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXN0IiB0eXBlPSJhbmRyb2lkLnRlc3QuQWN0aXZpdHlJbnN0cnVtZW50YXRpb25UZXN0Q2FzZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmFnUXVhcnRlclNjcmVlbkRvd24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3QiIHR5cGU9ImFuZHJvaWQudGVzdC5JbnN0cnVtZW50YXRpb25UZXN0Q2FzZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aXZpdHkiIHR5cGU9ImFuZHJvaWQuYXBwLkFjdGl2aXR5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYWdRdWFydGVyU2NyZWVuVXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVzdCIgdHlwZT0iYW5kcm9pZC50ZXN0LkFjdGl2aXR5SW5zdHJ1bWVudGF0aW9uVGVzdENhc2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhZ1F1YXJ0ZXJTY3JlZW5VcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVzdCIgdHlwZT0iYW5kcm9pZC50ZXN0Lkluc3RydW1lbnRhdGlvblRlc3RDYXNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpdml0eSIgdHlwZT0iYW5kcm9pZC5hcHAuQWN0aXZpdHkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhZ1ZpZXdCeSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3QiIHR5cGU9ImFuZHJvaWQudGVzdC5BY3Rpdml0eUluc3RydW1lbnRhdGlvblRlc3RDYXNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3Jhdml0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWx0YVgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVsdGFZIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhZ1ZpZXdCeSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3QiIHR5cGU9ImFuZHJvaWQudGVzdC5JbnN0cnVtZW50YXRpb25UZXN0Q2FzZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImdyYXZpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVsdGFYIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbHRhWSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYWdWaWV3VG8iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXN0IiB0eXBlPSJhbmRyb2lkLnRlc3QuQWN0aXZpdHlJbnN0cnVtZW50YXRpb25UZXN0Q2FzZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImdyYXZpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9YIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvWSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYWdWaWV3VG8iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVzdCIgdHlwZT0iYW5kcm9pZC50ZXN0Lkluc3RydW1lbnRhdGlvblRlc3RDYXNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3Jhdml0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b1giIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9ZIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhZ1ZpZXdUb0JvdHRvbSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXN0IiB0eXBlPSJhbmRyb2lkLnRlc3QuQWN0aXZpdHlJbnN0cnVtZW50YXRpb25UZXN0Q2FzZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhZ1ZpZXdUb0JvdHRvbSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVzdCIgdHlwZT0iYW5kcm9pZC50ZXN0Lkluc3RydW1lbnRhdGlvblRlc3RDYXNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpdml0eSIgdHlwZT0iYW5kcm9pZC5hcHAuQWN0aXZpdHkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYWdWaWV3VG9Cb3R0b20iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVzdCIgdHlwZT0iYW5kcm9pZC50ZXN0LkFjdGl2aXR5SW5zdHJ1bWVudGF0aW9uVGVzdENhc2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGVwQ291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmFnVmlld1RvQm90dG9tIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXN0IiB0eXBlPSJhbmRyb2lkLnRlc3QuSW5zdHJ1bWVudGF0aW9uVGVzdENhc2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGl2aXR5IiB0eXBlPSJhbmRyb2lkLmFwcC5BY3Rpdml0eSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0ZXBDb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYWdWaWV3VG9Ub3AiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVzdCIgdHlwZT0iYW5kcm9pZC50ZXN0LkFjdGl2aXR5SW5zdHJ1bWVudGF0aW9uVGVzdENhc2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYWdWaWV3VG9Ub3AiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVzdCIgdHlwZT0iYW5kcm9pZC50ZXN0LkFjdGl2aXR5SW5zdHJ1bWVudGF0aW9uVGVzdENhc2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGVwQ291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmFnVmlld1RvVG9wIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXN0IiB0eXBlPSJhbmRyb2lkLnRlc3QuSW5zdHJ1bWVudGF0aW9uVGVzdENhc2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYWdWaWV3VG9Ub3AiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3QiIHR5cGU9ImFuZHJvaWQudGVzdC5JbnN0cnVtZW50YXRpb25UZXN0Q2FzZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0ZXBDb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYWdWaWV3VG9YIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVzdCIgdHlwZT0iYW5kcm9pZC50ZXN0LkFjdGl2aXR5SW5zdHJ1bWVudGF0aW9uVGVzdENhc2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJncmF2aXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvWCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYWdWaWV3VG9YIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3QiIHR5cGU9ImFuZHJvaWQudGVzdC5JbnN0cnVtZW50YXRpb25UZXN0Q2FzZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImdyYXZpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9YIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhZ1ZpZXdUb1kiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXN0IiB0eXBlPSJhbmRyb2lkLnRlc3QuQWN0aXZpdHlJbnN0cnVtZW50YXRpb25UZXN0Q2FzZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImdyYXZpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9ZIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhZ1ZpZXdUb1kiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVzdCIgdHlwZT0iYW5kcm9pZC50ZXN0Lkluc3RydW1lbnRhdGlvblRlc3RDYXNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3Jhdml0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b1kiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb25nQ2xpY2tWaWV3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3QiIHR5cGU9ImFuZHJvaWQudGVzdC5BY3Rpdml0eUluc3RydW1lbnRhdGlvblRlc3RDYXNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb25nQ2xpY2tWaWV3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXN0IiB0eXBlPSJhbmRyb2lkLnRlc3QuSW5zdHJ1bWVudGF0aW9uVGVzdENhc2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNjcm9sbFRvQm90dG9tIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3QiIHR5cGU9ImFuZHJvaWQudGVzdC5BY3Rpdml0eUluc3RydW1lbnRhdGlvblRlc3RDYXNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNjcm9sbFRvQm90dG9tIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXN0IiB0eXBlPSJhbmRyb2lkLnRlc3QuSW5zdHJ1bWVudGF0aW9uVGVzdENhc2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGl2aXR5IiB0eXBlPSJhbmRyb2lkLmFwcC5BY3Rpdml0eSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzY3JvbGxUb1RvcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXN0IiB0eXBlPSJhbmRyb2lkLnRlc3QuQWN0aXZpdHlJbnN0cnVtZW50YXRpb25UZXN0Q2FzZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzY3JvbGxUb1RvcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVzdCIgdHlwZT0iYW5kcm9pZC50ZXN0Lkluc3RydW1lbnRhdGlvblRlc3RDYXNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpdml0eSIgdHlwZT0iYW5kcm9pZC5hcHAuQWN0aXZpdHkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGFwVmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVzdCIgdHlwZT0iYW5kcm9pZC50ZXN0Lkluc3RydW1lbnRhdGlvblRlc3RDYXNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b3VjaEFuZENhbmNlbFZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3QiIHR5cGU9ImFuZHJvaWQudGVzdC5JbnN0cnVtZW50YXRpb25UZXN0Q2FzZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVWlUaHJlYWRUZXN0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLmFubm90YXRpb24uQW5ub3RhdGlvbiI+Cis8L2ltcGxlbWVudHM+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlZpZXdBc3NlcnRzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0QmFzZWxpbmVBbGlnbmVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaXJzdCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlY29uZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0Qm90dG9tQWxpZ25lZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlyc3QiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWNvbmQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzc2VydEJvdHRvbUFsaWduZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpcnN0IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2Vjb25kIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFyZ2luIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0R3JvdXBDb250YWlucyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0R3JvdXBJbnRlZ3JpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRHcm91cE5vdENvbnRhaW5zIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRIYXNTY3JlZW5Db29yZGluYXRlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZ2luIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzc2VydEhvcml6b250YWxDZW50ZXJBbGlnbmVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWZlcmVuY2UiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXN0IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRMZWZ0QWxpZ25lZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlyc3QiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWNvbmQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzc2VydExlZnRBbGlnbmVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaXJzdCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlY29uZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1hcmdpbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzc2VydE9mZlNjcmVlbkFib3ZlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnaW4iIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRPZmZTY3JlZW5CZWxvdyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZ2luIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0T25TY3JlZW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWdpbiIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzc2VydFJpZ2h0QWxpZ25lZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlyc3QiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWNvbmQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzc2VydFJpZ2h0QWxpZ25lZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlyc3QiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWNvbmQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYXJnaW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRUb3BBbGlnbmVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaXJzdCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlY29uZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0VG9wQWxpZ25lZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlyc3QiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWNvbmQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYXJnaW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRWZXJ0aWNhbENlbnRlckFsaWduZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlZmVyZW5jZSIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3QiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iYW5kcm9pZC50ZXN0Lm1vY2siCis+Cis8Y2xhc3MgbmFtZT0iTW9ja0FwcGxpY2F0aW9uIgorIGV4dGVuZHM9ImFuZHJvaWQuYXBwLkFwcGxpY2F0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTW9ja0FwcGxpY2F0aW9uIgorIHR5cGU9ImFuZHJvaWQudGVzdC5tb2NrLk1vY2tBcHBsaWNhdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNb2NrQ29udGVudFByb3ZpZGVyIgorIGV4dGVuZHM9ImFuZHJvaWQuY29udGVudC5Db250ZW50UHJvdmlkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNb2NrQ29udGVudFByb3ZpZGVyIgorIHR5cGU9ImFuZHJvaWQudGVzdC5tb2NrLk1vY2tDb250ZW50UHJvdmlkZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNb2NrQ29udGVudFByb3ZpZGVyIgorIHR5cGU9ImFuZHJvaWQudGVzdC5tb2NrLk1vY2tDb250ZW50UHJvdmlkZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTW9ja0NvbnRlbnRQcm92aWRlciIKKyB0eXBlPSJhbmRyb2lkLnRlc3QubW9jay5Nb2NrQ29udGVudFByb3ZpZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlYWRQZXJtaXNzaW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3cml0ZVBlcm1pc3Npb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhdGhQZXJtaXNzaW9ucyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhdGhQZXJtaXNzaW9uW10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZWxldGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGlvbkFyZ3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5zZXJ0IgorIHJldHVybj0iYW5kcm9pZC5uZXQuVXJpIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWVzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFZhbHVlcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNyZWF0ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVlcnkiCisgcmV0dXJuPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb2plY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3Rpb25BcmdzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNvcnRPcmRlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGlvbkFyZ3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNb2NrQ29udGVudFJlc29sdmVyIgorIGV4dGVuZHM9ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNb2NrQ29udGVudFJlc29sdmVyIgorIHR5cGU9ImFuZHJvaWQudGVzdC5tb2NrLk1vY2tDb250ZW50UmVzb2x2ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkUHJvdmlkZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRlbnRQcm92aWRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNb2NrQ29udGV4dCIKKyBleHRlbmRzPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1vY2tDb250ZXh0IgorIHR5cGU9ImFuZHJvaWQudGVzdC5tb2NrLk1vY2tDb250ZXh0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImJpbmRTZXJ2aWNlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VydmljZSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29ubiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LlNlcnZpY2VDb25uZWN0aW9uIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrQ2FsbGluZ09yU2VsZlBlcm1pc3Npb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pc3Npb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tDYWxsaW5nT3JTZWxmVXJpUGVybWlzc2lvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGVGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrQ2FsbGluZ1Blcm1pc3Npb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pc3Npb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tDYWxsaW5nVXJpUGVybWlzc2lvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGVGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrUGVybWlzc2lvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGVybWlzc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrVXJpUGVybWlzc2lvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1aWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZUZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tVcmlQZXJtaXNzaW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVhZFBlcm1pc3Npb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndyaXRlUGVybWlzc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlRmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhcldhbGxwYXBlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlUGFja2FnZUNvbnRleHQiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2FnZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkYXRhYmFzZUxpc3QiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVsZXRlRGF0YWJhc2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlbGV0ZUZpbGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZm9yY2VDYWxsaW5nT3JTZWxmUGVybWlzc2lvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pc3Npb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5mb3JjZUNhbGxpbmdPclNlbGZVcmlQZXJtaXNzaW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGVGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZm9yY2VDYWxsaW5nUGVybWlzc2lvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pc3Npb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5mb3JjZUNhbGxpbmdVcmlQZXJtaXNzaW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGVGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZm9yY2VQZXJtaXNzaW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGVybWlzc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZm9yY2VVcmlQZXJtaXNzaW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1aWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZUZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5mb3JjZVVyaVBlcm1pc3Npb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVhZFBlcm1pc3Npb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndyaXRlUGVybWlzc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlRmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaWxlTGlzdCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBcHBsaWNhdGlvbkNvbnRleHQiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBcHBsaWNhdGlvbkluZm8iCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucG0uQXBwbGljYXRpb25JbmZvIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFzc2V0cyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5yZXMuQXNzZXRNYW5hZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENhY2hlRGlyIgorIHJldHVybj0iamF2YS5pby5GaWxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENsYXNzTG9hZGVyIgorIHJldHVybj0iamF2YS5sYW5nLkNsYXNzTG9hZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbnRlbnRSZXNvbHZlciIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGF0YWJhc2VQYXRoIgorIHJldHVybj0iamF2YS5pby5GaWxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERpciIKKyByZXR1cm49ImphdmEuaW8uRmlsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEV4dGVybmFsQ2FjaGVEaXIiCisgcmV0dXJuPSJqYXZhLmlvLkZpbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RXh0ZXJuYWxGaWxlc0RpciIKKyByZXR1cm49ImphdmEuaW8uRmlsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGaWxlU3RyZWFtUGF0aCIKKyByZXR1cm49ImphdmEuaW8uRmlsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGaWxlc0RpciIKKyByZXR1cm49ImphdmEuaW8uRmlsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYWluTG9vcGVyIgorIHJldHVybj0iYW5kcm9pZC5vcy5Mb29wZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFja2FnZUNvZGVQYXRoIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYWNrYWdlTWFuYWdlciIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYWNrYWdlTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFja2FnZVJlc291cmNlUGF0aCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVzb3VyY2VzIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2hhcmVkUHJlZmVyZW5jZXMiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuU2hhcmVkUHJlZmVyZW5jZXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTeXN0ZW1TZXJ2aWNlIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaGVtZSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzLlRoZW1lIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdhbGxwYXBlciIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V2FsbHBhcGVyRGVzaXJlZE1pbmltdW1IZWlnaHQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V2FsbHBhcGVyRGVzaXJlZE1pbmltdW1XaWR0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJncmFudFVyaVBlcm1pc3Npb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0b1BhY2thZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlRmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuRmlsZUlucHV0IgorIHJldHVybj0iamF2YS5pby5GaWxlSW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3BlbkZpbGVPdXRwdXQiCisgcmV0dXJuPSJqYXZhLmlvLkZpbGVPdXRwdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRmlsZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuT3JDcmVhdGVEYXRhYmFzZSIKKyByZXR1cm49ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZURhdGFiYXNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY3RvcnkiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZURhdGFiYXNlLkN1cnNvckZhY3RvcnkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGVla1dhbGxwYXBlciIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVnaXN0ZXJSZWNlaXZlciIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlY2VpdmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQnJvYWRjYXN0UmVjZWl2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbHRlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudEZpbHRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3RlclJlY2VpdmVyIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkludGVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVjZWl2ZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Ccm9hZGNhc3RSZWNlaXZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsdGVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50RmlsdGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJicm9hZGNhc3RQZXJtaXNzaW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY2hlZHVsZXIiIHR5cGU9ImFuZHJvaWQub3MuSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVTdGlja3lCcm9hZGNhc3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmV2b2tlVXJpUGVybWlzc2lvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlRmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kQnJvYWRjYXN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmRCcm9hZGNhc3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlY2VpdmVyUGVybWlzc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kT3JkZXJlZEJyb2FkY2FzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVjZWl2ZXJQZXJtaXNzaW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmRPcmRlcmVkQnJvYWRjYXN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWNlaXZlclBlcm1pc3Npb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdFJlY2VpdmVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQnJvYWRjYXN0UmVjZWl2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNjaGVkdWxlciIgdHlwZT0iYW5kcm9pZC5vcy5IYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbml0aWFsQ29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbml0aWFsRGF0YSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5pdGlhbEV4dHJhcyIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VuZFN0aWNreUJyb2FkY2FzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kU3RpY2t5T3JkZXJlZEJyb2FkY2FzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0UmVjZWl2ZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Ccm9hZGNhc3RSZWNlaXZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NoZWR1bGVyIiB0eXBlPSJhbmRyb2lkLm9zLkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluaXRpYWxDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluaXRpYWxEYXRhIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbml0aWFsRXh0cmFzIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUaGVtZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc2lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0V2FsbHBhcGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYml0bWFwIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0V2FsbHBhcGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRBY3Rpdml0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydEluc3RydW1lbnRhdGlvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNsYXNzTmFtZSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb2ZpbGVGaWxlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcmd1bWVudHMiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0SW50ZW50U2VuZGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50U2VuZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWxsSW5JbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzTWFzayIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFnc1ZhbHVlcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHRyYUZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVudFNlbmRlci5TZW5kSW50ZW50RXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50U2VuZGVyLlNlbmRJbnRlbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRTZXJ2aWNlIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlcnZpY2UiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RvcFNlcnZpY2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZXJ2aWNlIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVuYmluZFNlcnZpY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb25uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuU2VydmljZUNvbm5lY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5yZWdpc3RlclJlY2VpdmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVjZWl2ZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Ccm9hZGNhc3RSZWNlaXZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNb2NrQ3Vyc29yIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNb2NrQ3Vyc29yIgorIHR5cGU9ImFuZHJvaWQudGVzdC5tb2NrLk1vY2tDdXJzb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWJvcnRVcGRhdGVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tbWl0VXBkYXRlcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tbWl0VXBkYXRlcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlcyIgdHlwZT0iamF2YS51dGlsLk1hcCZsdDs/IGV4dGVuZHMgamF2YS5sYW5nLkxvbmcsID8gZXh0ZW5kcyBqYXZhLnV0aWwuTWFwJmx0O2phdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5PYmplY3QmZ3Q7Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb3B5U3RyaW5nVG9CdWZmZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ2hhckFycmF5QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlYWN0aXZhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlbGV0ZVJvdyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QmxvYiIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb2x1bW5Db3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb2x1bW5JbmRleCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb2x1bW5JbmRleE9yVGhyb3ciCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sdW1uTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sdW1uTmFtZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RG91YmxlIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEV4dHJhcyIKKyByZXR1cm49ImFuZHJvaWQub3MuQnVuZGxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZsb2F0IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvbmciCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBvc2l0aW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNob3J0IgorIHJldHVybj0ic2hvcnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRXYW50c0FsbE9uTW92ZUNhbGxzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNVcGRhdGVzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0FmdGVyTGFzdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNCZWZvcmVGaXJzdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNDbG9zZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRmlyc3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTGFzdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNOdWxsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtb3ZlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibW92ZVRvRmlyc3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1vdmVUb0xhc3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1vdmVUb05leHQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1vdmVUb1Bvc2l0aW9uIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtb3ZlVG9QcmV2aW91cyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVnaXN0ZXJDb250ZW50T2JzZXJ2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYnNlcnZlciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5Db250ZW50T2JzZXJ2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVnaXN0ZXJEYXRhU2V0T2JzZXJ2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYnNlcnZlciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5EYXRhU2V0T2JzZXJ2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVxdWVyeSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzcG9uZCIKKyByZXR1cm49ImFuZHJvaWQub3MuQnVuZGxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleHRyYXMiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE5vdGlmaWNhdGlvblVyaSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXBwb3J0c1VwZGF0ZXMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVucmVnaXN0ZXJDb250ZW50T2JzZXJ2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYnNlcnZlciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5Db250ZW50T2JzZXJ2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5yZWdpc3RlckRhdGFTZXRPYnNlcnZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9ic2VydmVyIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkRhdGFTZXRPYnNlcnZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVCbG9iIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVEb3VibGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZUZsb2F0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZUludCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlTG9uZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZVNob3J0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9InNob3J0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZVN0cmluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZVRvTnVsbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTW9ja0RpYWxvZ0ludGVyZmFjZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLmNvbnRlbnQuRGlhbG9nSW50ZXJmYWNlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNb2NrRGlhbG9nSW50ZXJmYWNlIgorIHR5cGU9ImFuZHJvaWQudGVzdC5tb2NrLk1vY2tEaWFsb2dJbnRlcmZhY2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2FuY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXNtaXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNb2NrUGFja2FnZU1hbmFnZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTW9ja1BhY2thZ2VNYW5hZ2VyIgorIHR5cGU9ImFuZHJvaWQudGVzdC5tb2NrLk1vY2tQYWNrYWdlTWFuYWdlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRQYWNrYWdlVG9QcmVmZXJyZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYWNrYWdlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRQZXJtaXNzaW9uIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5mbyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBlcm1pc3Npb25JbmZvIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZFBlcm1pc3Npb25Bc3luYyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZm8iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QZXJtaXNzaW9uSW5mbyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRQcmVmZXJyZWRBY3Rpdml0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbHRlciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudEZpbHRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF0Y2giIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2V0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpdml0eSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2Fub25pY2FsVG9DdXJyZW50UGFja2FnZU5hbWVzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrUGVybWlzc2lvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGVybU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBrZ05hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tTaWduYXR1cmVzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwa2cxIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwa2cyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrU2lnbmF0dXJlcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idWlkMSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1aWQyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJQYWNrYWdlUHJlZmVycmVkQWN0aXZpdGllcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImN1cnJlbnRUb0Nhbm9uaWNhbFBhY2thZ2VOYW1lcyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBY3Rpdml0eUljb24iCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpdml0eU5hbWUiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWN0aXZpdHlJY29uIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWN0aXZpdHlJbmZvIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnBtLkFjdGl2aXR5SW5mbyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2xhc3NOYW1lIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFsbFBlcm1pc3Npb25Hcm91cHMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLmNvbnRlbnQucG0uUGVybWlzc2lvbkdyb3VwSW5mbyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXBwbGljYXRpb25FbmFibGVkU2V0dGluZyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2FnZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXBwbGljYXRpb25JY29uIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5mbyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLkFwcGxpY2F0aW9uSW5mbyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBcHBsaWNhdGlvbkljb24iCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYWNrYWdlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFwcGxpY2F0aW9uSW5mbyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5wbS5BcHBsaWNhdGlvbkluZm8iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXBwbGljYXRpb25MYWJlbCIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZm8iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5BcHBsaWNhdGlvbkluZm8iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29tcG9uZW50RW5hYmxlZFNldHRpbmciCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbXBvbmVudE5hbWUiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlZmF1bHRBY3Rpdml0eUljb24iCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERyYXdhYmxlIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2FnZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc2lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFwcEluZm8iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5BcHBsaWNhdGlvbkluZm8iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFsbGVkQXBwbGljYXRpb25zIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5jb250ZW50LnBtLkFwcGxpY2F0aW9uSW5mbyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFsbGVkUGFja2FnZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZUluZm8mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbGxlclBhY2thZ2VOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2FnZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdHJ1bWVudGF0aW9uSW5mbyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5wbS5JbnN0cnVtZW50YXRpb25JbmZvIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbGFzc05hbWUiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGF1bmNoSW50ZW50Rm9yUGFja2FnZSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWVGb3JVaWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1aWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYWNrYWdlR2lkcyIKKyByZXR1cm49ImludFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYWNrYWdlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhY2thZ2VJbmZvIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VJbmZvIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYWNrYWdlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhY2thZ2VzRm9yVWlkIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1aWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQZXJtaXNzaW9uR3JvdXBJbmZvIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnBtLlBlcm1pc3Npb25Hcm91cEluZm8iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQZXJtaXNzaW9uSW5mbyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5wbS5QZXJtaXNzaW9uSW5mbyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByZWZlcnJlZEFjdGl2aXRpZXMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dEZpbHRlcnMiIHR5cGU9ImphdmEudXRpbC5MaXN0Jmx0O2FuZHJvaWQuY29udGVudC5JbnRlbnRGaWx0ZXImZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXRBY3Rpdml0aWVzIiB0eXBlPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByZWZlcnJlZFBhY2thZ2VzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VJbmZvJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZWNlaXZlckluZm8iCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucG0uQWN0aXZpdHlJbmZvIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbGFzc05hbWUiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVzb3VyY2VzRm9yQWN0aXZpdHkiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aXZpdHlOYW1lIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlc291cmNlc0ZvckFwcGxpY2F0aW9uIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFwcCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLkFwcGxpY2F0aW9uSW5mbyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXNvdXJjZXNGb3JBcHBsaWNhdGlvbiIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcHBQYWNrYWdlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlcnZpY2VJbmZvIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnBtLlNlcnZpY2VJbmZvIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbGFzc05hbWUiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3lzdGVtQXZhaWxhYmxlRmVhdHVyZXMiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucG0uRmVhdHVyZUluZm9bXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTeXN0ZW1TaGFyZWRMaWJyYXJ5TmFtZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGV4dCIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcHBJbmZvIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uQXBwbGljYXRpb25JbmZvIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFhtbCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5yZXMuWG1sUmVzb3VyY2VQYXJzZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcHBJbmZvIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uQXBwbGljYXRpb25JbmZvIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc1N5c3RlbUZlYXR1cmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU2FmZU1vZGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InF1ZXJ5QnJvYWRjYXN0UmVjZWl2ZXJzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5jb250ZW50LnBtLlJlc29sdmVJbmZvJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InF1ZXJ5Q29udGVudFByb3ZpZGVycyIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2FuZHJvaWQuY29udGVudC5wbS5Qcm92aWRlckluZm8mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9jZXNzTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idWlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVlcnlJbnN0cnVtZW50YXRpb24iCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLmNvbnRlbnQucG0uSW5zdHJ1bWVudGF0aW9uSW5mbyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldFBhY2thZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVlcnlJbnRlbnRBY3Rpdml0aWVzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5jb250ZW50LnBtLlJlc29sdmVJbmZvJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InF1ZXJ5SW50ZW50QWN0aXZpdHlPcHRpb25zIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5jb250ZW50LnBtLlJlc29sdmVJbmZvJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsbGVyIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3BlY2lmaWNzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJxdWVyeUludGVudFNlcnZpY2VzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5jb250ZW50LnBtLlJlc29sdmVJbmZvJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InF1ZXJ5UGVybWlzc2lvbnNCeUdyb3VwIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7YW5kcm9pZC5jb250ZW50LnBtLlBlcm1pc3Npb25JbmZvJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXAiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVQYWNrYWdlRnJvbVByZWZlcnJlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZVBlcm1pc3Npb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc29sdmVBY3Rpdml0eSIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5wbS5SZXNvbHZlSW5mbyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc29sdmVDb250ZW50UHJvdmlkZXIiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucG0uUHJvdmlkZXJJbmZvIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc29sdmVTZXJ2aWNlIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnBtLlJlc29sdmVJbmZvIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QXBwbGljYXRpb25FbmFibGVkU2V0dGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdTdGF0ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbXBvbmVudEVuYWJsZWRTZXR0aW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29tcG9uZW50TmFtZSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1N0YXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTW9ja1Jlc291cmNlcyIKKyBleHRlbmRzPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1vY2tSZXNvdXJjZXMiCisgdHlwZT0iYW5kcm9pZC50ZXN0Lm1vY2suTW9ja1Jlc291cmNlcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQudGVzdC5zdWl0ZWJ1aWxkZXIiCis+Cis8Y2xhc3MgbmFtZT0iVGVzdE1ldGhvZCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGVzdE1ldGhvZCIKKyB0eXBlPSJhbmRyb2lkLnRlc3Quc3VpdGVidWlsZGVyLlRlc3RNZXRob2QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXRob2QiIHR5cGU9ImphdmEubGFuZy5yZWZsZWN0Lk1ldGhvZCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5jbG9zaW5nQ2xhc3MiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDs/IGV4dGVuZHMganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGVzdE1ldGhvZCIKKyB0eXBlPSJhbmRyb2lkLnRlc3Quc3VpdGVidWlsZGVyLlRlc3RNZXRob2QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXRob2ROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmNsb3NpbmdDbGFzcyIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0Oz8gZXh0ZW5kcyBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2UmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUZXN0TWV0aG9kIgorIHR5cGU9ImFuZHJvaWQudGVzdC5zdWl0ZWJ1aWxkZXIuVGVzdE1ldGhvZCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3RDYXNlIiB0eXBlPSJqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2UiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVUZXN0IgorIHJldHVybj0ianVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW5zdGFudGlhdGlvbkV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkluc3RhbnRpYXRpb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ikludm9jYXRpb25UYXJnZXRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5yZWZsZWN0Lkludm9jYXRpb25UYXJnZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QW5ub3RhdGlvbiIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFubm90YXRpb25DbGFzcyIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0O1QmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVuY2xvc2luZ0NsYXNzIgorIHJldHVybj0iamF2YS5sYW5nLkNsYXNzJmx0Oz8gZXh0ZW5kcyBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVuY2xvc2luZ0NsYXNzbmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVGVzdFN1aXRlQnVpbGRlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGVzdFN1aXRlQnVpbGRlciIKKyB0eXBlPSJhbmRyb2lkLnRlc3Quc3VpdGVidWlsZGVyLlRlc3RTdWl0ZUJ1aWxkZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbGF6eiIgdHlwZT0iamF2YS5sYW5nLkNsYXNzIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUZXN0U3VpdGVCdWlsZGVyIgorIHR5cGU9ImFuZHJvaWQudGVzdC5zdWl0ZWJ1aWxkZXIuVGVzdFN1aXRlQnVpbGRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNsYXNzTG9hZGVyIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NMb2FkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRSZXF1aXJlbWVudHMiCisgcmV0dXJuPSJhbmRyb2lkLnRlc3Quc3VpdGVidWlsZGVyLlRlc3RTdWl0ZUJ1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByZWRpY2F0ZXMiIHR5cGU9ImphdmEudXRpbC5MaXN0Jmx0O2NvbS5hbmRyb2lkLmludGVybmFsLnV0aWwuUHJlZGljYXRlJmx0O2FuZHJvaWQudGVzdC5zdWl0ZWJ1aWxkZXIuVGVzdE1ldGhvZCZndDsmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZFJlcXVpcmVtZW50cyIKKyByZXR1cm49ImFuZHJvaWQudGVzdC5zdWl0ZWJ1aWxkZXIuVGVzdFN1aXRlQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcmVkaWNhdGVzIiB0eXBlPSJjb20uYW5kcm9pZC5pbnRlcm5hbC51dGlsLlByZWRpY2F0ZSZsdDthbmRyb2lkLnRlc3Quc3VpdGVidWlsZGVyLlRlc3RNZXRob2QmZ3Q7Li4uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImJ1aWxkIgorIHJldHVybj0ianVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4Y2x1ZGVQYWNrYWdlcyIKKyByZXR1cm49ImFuZHJvaWQudGVzdC5zdWl0ZWJ1aWxkZXIuVGVzdFN1aXRlQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2FnZU5hbWVzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nLi4uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1aXRlTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5jbHVkZUFsbFBhY2thZ2VzVW5kZXJIZXJlIgorIHJldHVybj0iYW5kcm9pZC50ZXN0LnN1aXRlYnVpbGRlci5UZXN0U3VpdGVCdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5jbHVkZVBhY2thZ2VzIgorIHJldHVybj0iYW5kcm9pZC50ZXN0LnN1aXRlYnVpbGRlci5UZXN0U3VpdGVCdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYWNrYWdlTmFtZXMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmcuLi4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmFtZWQiCisgcmV0dXJuPSJhbmRyb2lkLnRlc3Quc3VpdGVidWlsZGVyLlRlc3RTdWl0ZUJ1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1N1aXRlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUZXN0U3VpdGVCdWlsZGVyLkZhaWxlZFRvQ3JlYXRlVGVzdHMiCisgZXh0ZW5kcz0ianVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUZXN0U3VpdGVCdWlsZGVyLkZhaWxlZFRvQ3JlYXRlVGVzdHMiCisgdHlwZT0iYW5kcm9pZC50ZXN0LnN1aXRlYnVpbGRlci5UZXN0U3VpdGVCdWlsZGVyLkZhaWxlZFRvQ3JlYXRlVGVzdHMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5FeGNlcHRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJ0ZXN0U3VpdGVDb25zdHJ1Y3Rpb25GYWlsZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iYW5kcm9pZC50ZXN0LnN1aXRlYnVpbGRlci5hbm5vdGF0aW9uIgorPgorPGNsYXNzIG5hbWU9IkxhcmdlVGVzdCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5hbm5vdGF0aW9uLkFubm90YXRpb24iPgorPC9pbXBsZW1lbnRzPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNZWRpdW1UZXN0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLmFubm90YXRpb24uQW5ub3RhdGlvbiI+Cis8L2ltcGxlbWVudHM+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNtYWxsVGVzdCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5hbm5vdGF0aW9uLkFubm90YXRpb24iPgorPC9pbXBsZW1lbnRzPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTbW9rZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5hbm5vdGF0aW9uLkFubm90YXRpb24iPgorPC9pbXBsZW1lbnRzPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTdXBwcmVzcyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5hbm5vdGF0aW9uLkFubm90YXRpb24iPgorPC9pbXBsZW1lbnRzPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQudGV4dCIKKz4KKzxjbGFzcyBuYW1lPSJBbHRlcmVkQ2hhclNlcXVlbmNlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0LkdldENoYXJzIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iY2hhckF0IgorIHJldHVybj0iY2hhciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2ZmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hhcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWFrZSIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5BbHRlcmVkQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3ViIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN1YnN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN1YmVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1YlNlcXVlbmNlIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQW5kcm9pZENoYXJhY3RlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQW5kcm9pZENoYXJhY3RlciIKKyB0eXBlPSJhbmRyb2lkLnRleHQuQW5kcm9pZENoYXJhY3RlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXREaXJlY3Rpb25hbGl0aWVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RWFzdEFzaWFuV2lkdGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnB1dCIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFYXN0QXNpYW5XaWR0aHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNaXJyb3IiCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2giIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWlycm9yIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkVBU1RfQVNJQU5fV0lEVEhfQU1CSUdVT1VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFQVNUX0FTSUFOX1dJRFRIX0ZVTExfV0lEVEgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVBU1RfQVNJQU5fV0lEVEhfSEFMRl9XSURUSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUFTVF9BU0lBTl9XSURUSF9OQVJST1ciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVBU1RfQVNJQU5fV0lEVEhfTkVVVFJBTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUFTVF9BU0lBTl9XSURUSF9XSURFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQW5ub3RhdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuUGFyY2VsYWJsZVNwYW4iPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFubm90YXRpb24iCisgdHlwZT0iYW5kcm9pZC50ZXh0LkFubm90YXRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBbm5vdGF0aW9uIgorIHR5cGU9ImFuZHJvaWQudGV4dC5Bbm5vdGF0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0S2V5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTcGFuVHlwZUlkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZhbHVlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQXV0b1RleHQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQm9yaW5nTGF5b3V0IgorIGV4dGVuZHM9ImFuZHJvaWQudGV4dC5MYXlvdXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5UZXh0VXRpbHMuRWxsaXBzaXplQ2FsbGJhY2siPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJvcmluZ0xheW91dCIKKyB0eXBlPSJhbmRyb2lkLnRleHQuQm9yaW5nTGF5b3V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYWludCIgdHlwZT0iYW5kcm9pZC50ZXh0LlRleHRQYWludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0ZXJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbGlnbiIgdHlwZT0iYW5kcm9pZC50ZXh0LkxheW91dC5BbGlnbm1lbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNwYWNpbmdtdWx0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3BhY2luZ2FkZCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1ldHJpY3MiIHR5cGU9ImFuZHJvaWQudGV4dC5Cb3JpbmdMYXlvdXQuTWV0cmljcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5jbHVkZXBhZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQm9yaW5nTGF5b3V0IgorIHR5cGU9ImFuZHJvaWQudGV4dC5Cb3JpbmdMYXlvdXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhaW50IiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXRlcndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFsaWduIiB0eXBlPSJhbmRyb2lkLnRleHQuTGF5b3V0LkFsaWdubWVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3BhY2luZ211bHQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzcGFjaW5nYWRkIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWV0cmljcyIgdHlwZT0iYW5kcm9pZC50ZXh0LkJvcmluZ0xheW91dC5NZXRyaWNzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmNsdWRlcGFkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbGxpcHNpemUiIHR5cGU9ImFuZHJvaWQudGV4dC5UZXh0VXRpbHMuVHJ1bmNhdGVBdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZWxsaXBzaXplZFdpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJlbGxpcHNpemVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Qm90dG9tUGFkZGluZyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbGxpcHNpc0NvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RWxsaXBzaXNTdGFydCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExpbmVDb250YWluc1RhYiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaW5lQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGluZURlc2NlbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaW5lRGlyZWN0aW9ucyIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5MYXlvdXQuRGlyZWN0aW9ucyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGluZVN0YXJ0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGluZVRvcCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFncmFwaERpcmVjdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRvcFBhZGRpbmciCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNCb3JpbmciCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuQm9yaW5nTGF5b3V0Lk1ldHJpY3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQudGV4dC5UZXh0UGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNCb3JpbmciCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuQm9yaW5nTGF5b3V0Lk1ldHJpY3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQudGV4dC5UZXh0UGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1ldHJpY3MiIHR5cGU9ImFuZHJvaWQudGV4dC5Cb3JpbmdMYXlvdXQuTWV0cmljcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYWtlIgorIHJldHVybj0iYW5kcm9pZC50ZXh0LkJvcmluZ0xheW91dCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhaW50IiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXRlcndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFsaWduIiB0eXBlPSJhbmRyb2lkLnRleHQuTGF5b3V0LkFsaWdubWVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3BhY2luZ211bHQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzcGFjaW5nYWRkIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWV0cmljcyIgdHlwZT0iYW5kcm9pZC50ZXh0LkJvcmluZ0xheW91dC5NZXRyaWNzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmNsdWRlcGFkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1ha2UiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuQm9yaW5nTGF5b3V0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQudGV4dC5UZXh0UGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im91dGVyd2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxpZ24iIHR5cGU9ImFuZHJvaWQudGV4dC5MYXlvdXQuQWxpZ25tZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzcGFjaW5nbXVsdCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNwYWNpbmdhZGQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXRyaWNzIiB0eXBlPSJhbmRyb2lkLnRleHQuQm9yaW5nTGF5b3V0Lk1ldHJpY3MiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluY2x1ZGVwYWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVsbGlwc2l6ZSIgdHlwZT0iYW5kcm9pZC50ZXh0LlRleHRVdGlscy5UcnVuY2F0ZUF0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbGxpcHNpemVkV2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXBsYWNlT3JNYWtlIgorIHJldHVybj0iYW5kcm9pZC50ZXh0LkJvcmluZ0xheW91dCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYWludCIgdHlwZT0iYW5kcm9pZC50ZXh0LlRleHRQYWludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0ZXJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbGlnbiIgdHlwZT0iYW5kcm9pZC50ZXh0LkxheW91dC5BbGlnbm1lbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNwYWNpbmdtdWx0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3BhY2luZ2FkZCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1ldHJpY3MiIHR5cGU9ImFuZHJvaWQudGV4dC5Cb3JpbmdMYXlvdXQuTWV0cmljcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5jbHVkZXBhZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXBsYWNlT3JNYWtlIgorIHJldHVybj0iYW5kcm9pZC50ZXh0LkJvcmluZ0xheW91dCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYWludCIgdHlwZT0iYW5kcm9pZC50ZXh0LlRleHRQYWludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0ZXJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbGlnbiIgdHlwZT0iYW5kcm9pZC50ZXh0LkxheW91dC5BbGlnbm1lbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNwYWNpbmdtdWx0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3BhY2luZ2FkZCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1ldHJpY3MiIHR5cGU9ImFuZHJvaWQudGV4dC5Cb3JpbmdMYXlvdXQuTWV0cmljcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5jbHVkZXBhZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZWxsaXBzaXplIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFV0aWxzLlRydW5jYXRlQXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVsbGlwc2l6ZWRXaWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJvcmluZ0xheW91dC5NZXRyaWNzIgorIGV4dGVuZHM9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQuRm9udE1ldHJpY3NJbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJvcmluZ0xheW91dC5NZXRyaWNzIgorIHR5cGU9ImFuZHJvaWQudGV4dC5Cb3JpbmdMYXlvdXQuTWV0cmljcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9IndpZHRoIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDbGlwYm9hcmRNYW5hZ2VyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0VGV4dCIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzVGV4dCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGV4dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRHluYW1pY0xheW91dCIKKyBleHRlbmRzPSJhbmRyb2lkLnRleHQuTGF5b3V0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRHluYW1pY0xheW91dCIKKyB0eXBlPSJhbmRyb2lkLnRleHQuRHluYW1pY0xheW91dCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJhc2UiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhaW50IiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbGlnbiIgdHlwZT0iYW5kcm9pZC50ZXh0LkxheW91dC5BbGlnbm1lbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNwYWNpbmdtdWx0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3BhY2luZ2FkZCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluY2x1ZGVwYWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkR5bmFtaWNMYXlvdXQiCisgdHlwZT0iYW5kcm9pZC50ZXh0LkR5bmFtaWNMYXlvdXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiYXNlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaXNwbGF5IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYWludCIgdHlwZT0iYW5kcm9pZC50ZXh0LlRleHRQYWludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxpZ24iIHR5cGU9ImFuZHJvaWQudGV4dC5MYXlvdXQuQWxpZ25tZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzcGFjaW5nbXVsdCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNwYWNpbmdhZGQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmNsdWRlcGFkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEeW5hbWljTGF5b3V0IgorIHR5cGU9ImFuZHJvaWQudGV4dC5EeW5hbWljTGF5b3V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYmFzZSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlzcGxheSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQudGV4dC5UZXh0UGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFsaWduIiB0eXBlPSJhbmRyb2lkLnRleHQuTGF5b3V0LkFsaWdubWVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3BhY2luZ211bHQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzcGFjaW5nYWRkIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5jbHVkZXBhZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZWxsaXBzaXplIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFV0aWxzLlRydW5jYXRlQXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVsbGlwc2l6ZWRXaWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Qm90dG9tUGFkZGluZyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbGxpcHNpc0NvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RWxsaXBzaXNTdGFydCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExpbmVDb250YWluc1RhYiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaW5lQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGluZURlc2NlbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaW5lRGlyZWN0aW9ucyIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5MYXlvdXQuRGlyZWN0aW9ucyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGluZVN0YXJ0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGluZVRvcCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFncmFwaERpcmVjdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRvcFBhZGRpbmciCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkVkaXRhYmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5BcHBlbmRhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0LkdldENoYXJzIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5TcGFubmFibGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuRWRpdGFibGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuRWRpdGFibGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXBwZW5kIgorIHJldHVybj0iYW5kcm9pZC50ZXh0LkVkaXRhYmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJTcGFucyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWxldGUiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuRWRpdGFibGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3QiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGaWx0ZXJzIgorIHJldHVybj0iYW5kcm9pZC50ZXh0LklucHV0RmlsdGVyW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnNlcnQiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuRWRpdGFibGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hlcmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5zZXJ0IgorIHJldHVybj0iYW5kcm9pZC50ZXh0LkVkaXRhYmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndoZXJlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVwbGFjZSIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5FZGl0YWJsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcGxhY2UiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuRWRpdGFibGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3QiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGaWx0ZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWx0ZXJzIiB0eXBlPSJhbmRyb2lkLnRleHQuSW5wdXRGaWx0ZXJbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iRWRpdGFibGUuRmFjdG9yeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFZGl0YWJsZS5GYWN0b3J5IgorIHR5cGU9ImFuZHJvaWQudGV4dC5FZGl0YWJsZS5GYWN0b3J5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iYW5kcm9pZC50ZXh0LkVkaXRhYmxlLkZhY3RvcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdFZGl0YWJsZSIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5FZGl0YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJHZXRDaGFycyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hhcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3RvZmYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iSHRtbCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImZyb21IdG1sIgorIHJldHVybj0iYW5kcm9pZC50ZXh0LlNwYW5uZWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZyb21IdG1sIgorIHJldHVybj0iYW5kcm9pZC50ZXh0LlNwYW5uZWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbWFnZUdldHRlciIgdHlwZT0iYW5kcm9pZC50ZXh0Lkh0bWwuSW1hZ2VHZXR0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRhZ0hhbmRsZXIiIHR5cGU9ImFuZHJvaWQudGV4dC5IdG1sLlRhZ0hhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9IdG1sIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5lZCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iSHRtbC5JbWFnZUdldHRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0RHJhd2FibGUiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9Ikh0bWwuVGFnSGFuZGxlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iaGFuZGxlVGFnIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcGVuaW5nIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0YWciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHB1dCIgdHlwZT0iYW5kcm9pZC50ZXh0LkVkaXRhYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4bWxSZWFkZXIiIHR5cGU9Im9yZy54bWwuc2F4LlhNTFJlYWRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IklucHV0RmlsdGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZmlsdGVyIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5lZCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iSW5wdXRGaWx0ZXIuQWxsQ2FwcyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5JbnB1dEZpbHRlciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW5wdXRGaWx0ZXIuQWxsQ2FwcyIKKyB0eXBlPSJhbmRyb2lkLnRleHQuSW5wdXRGaWx0ZXIuQWxsQ2FwcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJmaWx0ZXIiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5lZCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbnB1dEZpbHRlci5MZW5ndGhGaWx0ZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuSW5wdXRGaWx0ZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IklucHV0RmlsdGVyLkxlbmd0aEZpbHRlciIKKyB0eXBlPSJhbmRyb2lkLnRleHQuSW5wdXRGaWx0ZXIuTGVuZ3RoRmlsdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJmaWx0ZXIiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5lZCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iSW5wdXRUeXBlIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxmaWVsZCBuYW1lPSJUWVBFX0NMQVNTX0RBVEVUSU1FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX0NMQVNTX05VTUJFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9DTEFTU19QSE9ORSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9DTEFTU19URVhUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX0RBVEVUSU1FX1ZBUklBVElPTl9EQVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9EQVRFVElNRV9WQVJJQVRJT05fTk9STUFMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX0RBVEVUSU1FX1ZBUklBVElPTl9USU1FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9NQVNLX0NMQVNTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9NQVNLX0ZMQUdTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY3NzMxMjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9NQVNLX1ZBUklBVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQwODAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9OVUxMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX05VTUJFUl9GTEFHX0RFQ0lNQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4MTkyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfTlVNQkVSX0ZMQUdfU0lHTkVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDA5NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX1RFWFRfRkxBR19BVVRPX0NPTVBMRVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjU1MzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9URVhUX0ZMQUdfQVVUT19DT1JSRUNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI3NjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9URVhUX0ZMQUdfQ0FQX0NIQVJBQ1RFUlMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MDk2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfVEVYVF9GTEFHX0NBUF9TRU5URU5DRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjM4NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX1RFWFRfRkxBR19DQVBfV09SRFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4MTkyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfVEVYVF9GTEFHX0lNRV9NVUxUSV9MSU5FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjYyMTQ0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfVEVYVF9GTEFHX01VTFRJX0xJTkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMzEwNzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9URVhUX0ZMQUdfTk9fU1VHR0VTVElPTlMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MjQyODgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9URVhUX1ZBUklBVElPTl9FTUFJTF9BRERSRVNTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9URVhUX1ZBUklBVElPTl9FTUFJTF9TVUJKRUNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9URVhUX1ZBUklBVElPTl9GSUxURVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9URVhUX1ZBUklBVElPTl9MT05HX01FU1NBR0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX1RFWFRfVkFSSUFUSU9OX05PUk1BTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9URVhUX1ZBUklBVElPTl9QQVNTV09SRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX1RFWFRfVkFSSUFUSU9OX1BFUlNPTl9OQU1FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9URVhUX1ZBUklBVElPTl9QSE9ORVRJQyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE5MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX1RFWFRfVkFSSUFUSU9OX1BPU1RBTF9BRERSRVNTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfVEVYVF9WQVJJQVRJT05fU0hPUlRfTUVTU0FHRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjY0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfVEVYVF9WQVJJQVRJT05fVVJJIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9URVhUX1ZBUklBVElPTl9WSVNJQkxFX1BBU1NXT1JEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTQ0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfVEVYVF9WQVJJQVRJT05fV0VCX0VESVRfVEVYVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkxheW91dCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMYXlvdXQiCisgdHlwZT0iYW5kcm9pZC50ZXh0LkxheW91dCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhaW50IiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbGlnbiIgdHlwZT0iYW5kcm9pZC50ZXh0LkxheW91dC5BbGlnbm1lbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNwYWNpbmdNdWx0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3BhY2luZ0FkZCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkcmF3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhdyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoaWdobGlnaHQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGF0aCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGlnaGxpZ2h0UGFpbnQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvck9mZnNldFZlcnRpY2FsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWxpZ25tZW50IgorIHJldHVybj0iYW5kcm9pZC50ZXh0LkxheW91dC5BbGlnbm1lbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCb3R0b21QYWRkaW5nIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3Vyc29yUGF0aCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvaW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGF0aCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZWRpdGluZ0J1ZmZlciIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZXNpcmVkV2lkdGgiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhaW50IiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlc2lyZWRXaWR0aCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhaW50IiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVsbGlwc2lzQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVsbGlwc2lzU3RhcnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVsbGlwc2l6ZWRXaWR0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIZWlnaHQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGluZUFzY2VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGluZUJhc2VsaW5lIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaW5lQm90dG9tIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaW5lQm91bmRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdW5kcyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExpbmVDb250YWluc1RhYiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExpbmVDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExpbmVEZXNjZW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaW5lRGlyZWN0aW9ucyIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5MYXlvdXQuRGlyZWN0aW9ucyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGluZUVuZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGluZUZvck9mZnNldCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGluZUZvclZlcnRpY2FsIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2ZXJ0aWNhbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExpbmVMZWZ0IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaW5lTWF4IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaW5lUmlnaHQiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExpbmVTdGFydCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGluZVRvcCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGluZVZpc2libGVFbmQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaW5lV2lkdGgiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9mZnNldEZvckhvcml6b250YWwiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9yaXoiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9mZnNldFRvTGVmdE9mIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPZmZzZXRUb1JpZ2h0T2YiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhaW50IgorIHJldHVybj0iYW5kcm9pZC50ZXh0LlRleHRQYWludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFncmFwaEFsaWdubWVudCIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5MYXlvdXQuQWxpZ25tZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJhZ3JhcGhEaXJlY3Rpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFncmFwaExlZnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFncmFwaFJpZ2h0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcmltYXJ5SG9yaXpvbnRhbCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZWNvbmRhcnlIb3Jpem9udGFsIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlbGVjdGlvblBhdGgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYXRoIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNwYWNpbmdBZGQiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNwYWNpbmdNdWx0aXBsaWVyIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUZXh0IgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRvcFBhZGRpbmciCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRXaWR0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluY3JlYXNlV2lkdGhUbyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTcGFubmVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iRElSX0xFRlRfVE9fUklHSFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRJUl9SSUdIVF9UT19MRUZUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkxheW91dC5BbGlnbm1lbnQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkVudW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuTGF5b3V0LkFsaWdubWVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlcyIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5MYXlvdXQuQWxpZ25tZW50W10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkxheW91dC5EaXJlY3Rpb25zIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJMb2dpbkZpbHRlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5JbnB1dEZpbHRlciI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImZpbHRlciIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImFuZHJvaWQudGV4dC5TcGFubmVkIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkc3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQWxsb3dlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkludmFsaWRDaGFyYWN0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU3RhcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU3RvcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTG9naW5GaWx0ZXIuUGFzc3dvcmRGaWx0ZXJHTWFpbCIKKyBleHRlbmRzPSJhbmRyb2lkLnRleHQuTG9naW5GaWx0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxvZ2luRmlsdGVyLlBhc3N3b3JkRmlsdGVyR01haWwiCisgdHlwZT0iYW5kcm9pZC50ZXh0LkxvZ2luRmlsdGVyLlBhc3N3b3JkRmlsdGVyR01haWwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMb2dpbkZpbHRlci5QYXNzd29yZEZpbHRlckdNYWlsIgorIHR5cGU9ImFuZHJvaWQudGV4dC5Mb2dpbkZpbHRlci5QYXNzd29yZEZpbHRlckdNYWlsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXBwZW5kSW52YWxpZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImlzQWxsb3dlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTG9naW5GaWx0ZXIuVXNlcm5hbWVGaWx0ZXJHTWFpbCIKKyBleHRlbmRzPSJhbmRyb2lkLnRleHQuTG9naW5GaWx0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxvZ2luRmlsdGVyLlVzZXJuYW1lRmlsdGVyR01haWwiCisgdHlwZT0iYW5kcm9pZC50ZXh0LkxvZ2luRmlsdGVyLlVzZXJuYW1lRmlsdGVyR01haWwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMb2dpbkZpbHRlci5Vc2VybmFtZUZpbHRlckdNYWlsIgorIHR5cGU9ImFuZHJvaWQudGV4dC5Mb2dpbkZpbHRlci5Vc2VybmFtZUZpbHRlckdNYWlsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXBwZW5kSW52YWxpZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImlzQWxsb3dlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTG9naW5GaWx0ZXIuVXNlcm5hbWVGaWx0ZXJHZW5lcmljIgorIGV4dGVuZHM9ImFuZHJvaWQudGV4dC5Mb2dpbkZpbHRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTG9naW5GaWx0ZXIuVXNlcm5hbWVGaWx0ZXJHZW5lcmljIgorIHR5cGU9ImFuZHJvaWQudGV4dC5Mb2dpbkZpbHRlci5Vc2VybmFtZUZpbHRlckdlbmVyaWMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMb2dpbkZpbHRlci5Vc2VybmFtZUZpbHRlckdlbmVyaWMiCisgdHlwZT0iYW5kcm9pZC50ZXh0LkxvZ2luRmlsdGVyLlVzZXJuYW1lRmlsdGVyR2VuZXJpYyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFwcGVuZEludmFsaWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJpc0FsbG93ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJOb0NvcHlTcGFuIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9Ik5vQ29weVNwYW4uQ29uY3JldGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuTm9Db3B5U3BhbiI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTm9Db3B5U3Bhbi5Db25jcmV0ZSIKKyB0eXBlPSJhbmRyb2lkLnRleHQuTm9Db3B5U3Bhbi5Db25jcmV0ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iUGFyY2VsYWJsZVNwYW4iCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0U3BhblR5cGVJZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJTZWxlY3Rpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJleHRlbmREb3duIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYXlvdXQiIHR5cGU9ImFuZHJvaWQudGV4dC5MYXlvdXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXh0ZW5kTGVmdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGF5b3V0IiB0eXBlPSJhbmRyb2lkLnRleHQuTGF5b3V0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4dGVuZFJpZ2h0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYXlvdXQiIHR5cGU9ImFuZHJvaWQudGV4dC5MYXlvdXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXh0ZW5kU2VsZWN0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImFuZHJvaWQudGV4dC5TcGFubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXh0ZW5kVG9MZWZ0RWRnZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGF5b3V0IiB0eXBlPSJhbmRyb2lkLnRleHQuTGF5b3V0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4dGVuZFRvUmlnaHRFZGdlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYXlvdXQiIHR5cGU9ImFuZHJvaWQudGV4dC5MYXlvdXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXh0ZW5kVXAiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImFuZHJvaWQudGV4dC5TcGFubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxheW91dCIgdHlwZT0iYW5kcm9pZC50ZXh0LkxheW91dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZWxlY3Rpb25FbmQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlbGVjdGlvblN0YXJ0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtb3ZlRG93biIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGF5b3V0IiB0eXBlPSJhbmRyb2lkLnRleHQuTGF5b3V0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1vdmVMZWZ0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYXlvdXQiIHR5cGU9ImFuZHJvaWQudGV4dC5MYXlvdXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibW92ZVJpZ2h0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYXlvdXQiIHR5cGU9ImFuZHJvaWQudGV4dC5MYXlvdXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibW92ZVRvTGVmdEVkZ2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImFuZHJvaWQudGV4dC5TcGFubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxheW91dCIgdHlwZT0iYW5kcm9pZC50ZXh0LkxheW91dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtb3ZlVG9SaWdodEVkZ2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImFuZHJvaWQudGV4dC5TcGFubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxheW91dCIgdHlwZT0iYW5kcm9pZC50ZXh0LkxheW91dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtb3ZlVXAiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImFuZHJvaWQudGV4dC5TcGFubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxheW91dCIgdHlwZT0iYW5kcm9pZC50ZXh0LkxheW91dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVTZWxlY3Rpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZWxlY3RBbGwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTZWxlY3Rpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImFuZHJvaWQudGV4dC5TcGFubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0b3AiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTZWxlY3Rpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IlNFTEVDVElPTl9FTkQiCisgdHlwZT0iamF2YS5sYW5nLk9iamVjdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRUxFQ1RJT05fU1RBUlQiCisgdHlwZT0iamF2YS5sYW5nLk9iamVjdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlNwYW5XYXRjaGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5Ob0NvcHlTcGFuIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0ib25TcGFuQWRkZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImFuZHJvaWQudGV4dC5TcGFubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoYXQiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU3BhbkNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImFuZHJvaWQudGV4dC5TcGFubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoYXQiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9zdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5zdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TcGFuUmVtb3ZlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2hhdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJTcGFubmFibGUiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0LlNwYW5uZWQiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVTcGFuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aGF0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNwYW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndoYXQiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJTcGFubmFibGUuRmFjdG9yeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTcGFubmFibGUuRmFjdG9yeSIKKyB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlLkZhY3RvcnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlLkZhY3RvcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdTcGFubmFibGUiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3Bhbm5hYmxlU3RyaW5nIgorIGV4dGVuZHM9ImFuZHJvaWQudGV4dC5TcGFubmFibGVTdHJpbmdJbnRlcm5hbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuR2V0Q2hhcnMiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3Bhbm5hYmxlU3RyaW5nIgorIHR5cGU9ImFuZHJvaWQudGV4dC5TcGFubmFibGVTdHJpbmciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVTcGFuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hhdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTcGFuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hhdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3ViU2VxdWVuY2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTcGFubmFibGVTdHJpbmdCdWlsZGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5BcHBlbmRhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0LkVkaXRhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5HZXRDaGFycyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTcGFubmFibGVTdHJpbmdCdWlsZGVyIgorIHR5cGU9ImFuZHJvaWQudGV4dC5TcGFubmFibGVTdHJpbmdCdWlsZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3Bhbm5hYmxlU3RyaW5nQnVpbGRlciIKKyB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlU3RyaW5nQnVpbGRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNwYW5uYWJsZVN0cmluZ0J1aWxkZXIiCisgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZVN0cmluZ0J1aWxkZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZCIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5TcGFubmFibGVTdHJpbmdCdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZCIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5TcGFubmFibGVTdHJpbmdCdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlU3RyaW5nQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGFyQXQiCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aGVyZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhclNwYW5zIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWxldGUiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlU3RyaW5nQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hhcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0b2ZmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmlsdGVycyIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5JbnB1dEZpbHRlcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNwYW5FbmQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndoYXQiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3BhbkZsYWdzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aGF0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNwYW5TdGFydCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hhdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTcGFucyIKKyByZXR1cm49IlRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icXVlcnlTdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxdWVyeUVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJraW5kIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7VCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5zZXJ0IgorIHJldHVybj0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZVN0cmluZ0J1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndoZXJlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRiIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnNlcnQiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlU3RyaW5nQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hlcmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGIiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHRTcGFuVHJhbnNpdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGltaXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2luZCIgdHlwZT0iamF2YS5sYW5nLkNsYXNzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZVNwYW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aGF0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcGxhY2UiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlU3RyaW5nQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRiIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcGxhY2UiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlU3RyaW5nQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRiIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0YnN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRiZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RmlsdGVycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbHRlcnMiIHR5cGU9ImFuZHJvaWQudGV4dC5JbnB1dEZpbHRlcltdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNwYW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aGF0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdWJTZXF1ZW5jZSIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlU3RyaW5nQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3Bhbm5hYmxlU3RyaW5nSW50ZXJuYWwiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSIiCis+Cis8bWV0aG9kIG5hbWU9ImNoYXJBdCIKKyByZXR1cm49ImNoYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoYXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTcGFuRW5kIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aGF0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNwYW5GbGFncyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hhdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTcGFuU3RhcnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndoYXQiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3BhbnMiCisgcmV0dXJuPSJUW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InF1ZXJ5U3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icXVlcnlFbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2luZCIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0O1QmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxlbmd0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHRTcGFuVHJhbnNpdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGltaXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2luZCIgdHlwZT0iamF2YS5sYW5nLkNsYXNzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJTcGFubmVkIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRTcGFuRW5kIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTcGFuRmxhZ3MiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFnIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNwYW5TdGFydCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWciIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3BhbnMiCisgcmV0dXJuPSJUW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDtUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0U3BhblRyYW5zaXRpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGltaXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5sYW5nLkNsYXNzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iU1BBTl9DT01QT1NJTkciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1BBTl9FWENMVVNJVkVfRVhDTFVTSVZFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1BBTl9FWENMVVNJVkVfSU5DTFVTSVZFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1BBTl9JTkNMVVNJVkVfRVhDTFVTSVZFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1BBTl9JTkNMVVNJVkVfSU5DTFVTSVZFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1BBTl9JTlRFUk1FRElBVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1BBTl9NQVJLX01BUksiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTUEFOX01BUktfUE9JTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTUEFOX1BBUkFHUkFQSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNQQU5fUE9JTlRfTUFSSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNQQU5fUE9JTlRfTUFSS19NQVNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1BBTl9QT0lOVF9QT0lOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNQQU5fUFJJT1JJVFkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjcxMTY4MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTUEFOX1BSSU9SSVRZX1NISUZUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1BBTl9VU0VSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTE2Nzc3MjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNQQU5fVVNFUl9TSElGVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iU3Bhbm5lZFN0cmluZyIKKyBleHRlbmRzPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlU3RyaW5nSW50ZXJuYWwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuR2V0Q2hhcnMiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0LlNwYW5uZWQiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNwYW5uZWRTdHJpbmciCisgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uZWRTdHJpbmciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJzdWJTZXF1ZW5jZSIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuU3Bhbm5lZFN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3RhdGljTGF5b3V0IgorIGV4dGVuZHM9ImFuZHJvaWQudGV4dC5MYXlvdXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdGF0aWNMYXlvdXQiCisgdHlwZT0iYW5kcm9pZC50ZXh0LlN0YXRpY0xheW91dCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQudGV4dC5UZXh0UGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFsaWduIiB0eXBlPSJhbmRyb2lkLnRleHQuTGF5b3V0LkFsaWdubWVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3BhY2luZ211bHQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzcGFjaW5nYWRkIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5jbHVkZXBhZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RhdGljTGF5b3V0IgorIHR5cGU9ImFuZHJvaWQudGV4dC5TdGF0aWNMYXlvdXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZnN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYWludCIgdHlwZT0iYW5kcm9pZC50ZXh0LlRleHRQYWludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0ZXJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbGlnbiIgdHlwZT0iYW5kcm9pZC50ZXh0LkxheW91dC5BbGlnbm1lbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNwYWNpbmdtdWx0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3BhY2luZ2FkZCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluY2x1ZGVwYWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN0YXRpY0xheW91dCIKKyB0eXBlPSJhbmRyb2lkLnRleHQuU3RhdGljTGF5b3V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQudGV4dC5UZXh0UGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im91dGVyd2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxpZ24iIHR5cGU9ImFuZHJvaWQudGV4dC5MYXlvdXQuQWxpZ25tZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzcGFjaW5nbXVsdCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNwYWNpbmdhZGQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmNsdWRlcGFkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbGxpcHNpemUiIHR5cGU9ImFuZHJvaWQudGV4dC5UZXh0VXRpbHMuVHJ1bmNhdGVBdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZWxsaXBzaXplZFdpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRCb3R0b21QYWRkaW5nIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVsbGlwc2lzQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbGxpcHNpc1N0YXJ0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGluZUNvbnRhaW5zVGFiIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExpbmVDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaW5lRGVzY2VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExpbmVEaXJlY3Rpb25zIgorIHJldHVybj0iYW5kcm9pZC50ZXh0LkxheW91dC5EaXJlY3Rpb25zIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaW5lU3RhcnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaW5lVG9wIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFyYWdyYXBoRGlyZWN0aW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VG9wUGFkZGluZyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUZXh0UGFpbnQiCisgZXh0ZW5kcz0iYW5kcm9pZC5ncmFwaGljcy5QYWludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRleHRQYWludCIKKyB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGV4dFBhaW50IgorIHR5cGU9ImFuZHJvaWQudGV4dC5UZXh0UGFpbnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUZXh0UGFpbnQiCisgdHlwZT0iYW5kcm9pZC50ZXh0LlRleHRQYWludCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InAiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0cCIgdHlwZT0iYW5kcm9pZC50ZXh0LlRleHRQYWludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImJhc2VsaW5lU2hpZnQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYmdDb2xvciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkZW5zaXR5IgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZHJhd2FibGVTdGF0ZSIKKyB0eXBlPSJpbnRbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxpbmtDb2xvciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVGV4dFV0aWxzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY29tbWFFbGxpcHNpemUiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InAiIHR5cGU9ImFuZHJvaWQudGV4dC5UZXh0UGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF2YWlsIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib25lTW9yZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9yZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb25jYXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UuLi4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29weVNwYW5zRnJvbSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5lZCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtpbmQiIHR5cGU9ImphdmEubGFuZy5DbGFzcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdG9mZiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImR1bXBTcGFucyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3MiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByaW50ZXIiIHR5cGU9ImFuZHJvaWQudXRpbC5QcmludGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmaXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZWxsaXBzaXplIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdmFpbCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoZXJlIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFV0aWxzLlRydW5jYXRlQXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZWxsaXBzaXplIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdmFpbCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoZXJlIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFV0aWxzLlRydW5jYXRlQXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByZXNlcnZlTGVuZ3RoIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsYmFjayIgdHlwZT0iYW5kcm9pZC50ZXh0LlRleHRVdGlscy5FbGxpcHNpemVDYWxsYmFjayI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlcXVhbHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImEiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhwYW5kVGVtcGxhdGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlbXBsYXRlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZXMiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UuLi4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2Fwc01vZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3MiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXFNb2RlcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoYXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0b2ZmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T2Zmc2V0QWZ0ZXIiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T2Zmc2V0QmVmb3JlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJldmVyc2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHJpbW1lZExlbmd0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imh0bWxFbmNvZGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5kZXhPZiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaCIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbmRleE9mIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluZGV4T2YiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2giIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluZGV4T2YiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmVlZGxlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluZGV4T2YiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmVlZGxlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluZGV4T2YiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmVlZGxlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0RpZ2l0c09ubHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0ciIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0VtcHR5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHIiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNHcmFwaGljIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHIiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNHcmFwaGljIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImpvaW4iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbGltaXRlciIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9rZW5zIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iam9pbiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVsaW1pdGVyIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b2tlbnMiIHR5cGU9ImphdmEubGFuZy5JdGVyYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsYXN0SW5kZXhPZiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaCIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsYXN0SW5kZXhPZiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaCIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGFzdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxhc3RJbmRleE9mIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYXN0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVnaW9uTWF0Y2hlcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib25lIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR3byIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib29mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXBsYWNlIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZW1wbGF0ZSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0aW5hdGlvbnMiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2VbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzcGxpdCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHByZXNzaW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNwbGl0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhdHRlcm4iIHR5cGU9ImphdmEudXRpbC5yZWdleC5QYXR0ZXJuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0cmluZ09yU3Bhbm5lZFN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1YnN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjcyIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmNlbGFibGVGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ0FQX01PREVfQ0hBUkFDVEVSUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQwOTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0FQX01PREVfU0VOVEVOQ0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYzODQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0FQX01PREVfV09SRFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4MTkyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNIQVJfU0VRVUVOQ0VfQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlRleHRVdGlscy5FbGxpcHNpemVDYWxsYmFjayIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZWxsaXBzaXplZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlRleHRVdGlscy5TaW1wbGVTdHJpbmdTcGxpdHRlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC5JdGVyYXRvciI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuVGV4dFV0aWxzLlN0cmluZ1NwbGl0dGVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUZXh0VXRpbHMuU2ltcGxlU3RyaW5nU3BsaXR0ZXIiCisgdHlwZT0iYW5kcm9pZC50ZXh0LlRleHRVdGlscy5TaW1wbGVTdHJpbmdTcGxpdHRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbGltaXRlciIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9Imhhc05leHQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Iml0ZXJhdG9yIgorIHJldHVybj0iamF2YS51dGlsLkl0ZXJhdG9yJmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RyaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJUZXh0VXRpbHMuU3RyaW5nU3BsaXR0ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuSXRlcmFibGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJzZXRTdHJpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iVGV4dFV0aWxzLlRydW5jYXRlQXQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkVudW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuVGV4dFV0aWxzLlRydW5jYXRlQXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZXMiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuVGV4dFV0aWxzLlRydW5jYXRlQXRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlRleHRXYXRjaGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5Ob0NvcHlTcGFuIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iYWZ0ZXJUZXh0Q2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iYW5kcm9pZC50ZXh0LkVkaXRhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImJlZm9yZVRleHRDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhZnRlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uVGV4dENoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJlZm9yZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQudGV4dC5mb3JtYXQiCis+Cis8Y2xhc3MgbmFtZT0iRGF0ZUZvcm1hdCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGF0ZUZvcm1hdCIKKyB0eXBlPSJhbmRyb2lkLnRleHQuZm9ybWF0LkRhdGVGb3JtYXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZm9ybWF0IgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluRm9ybWF0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpblRpbWVJbk1pbGxpcyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5Gb3JtYXQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluRGF0ZSIgdHlwZT0iamF2YS51dGlsLkRhdGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0IgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluRm9ybWF0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbkRhdGUiIHR5cGU9ImphdmEudXRpbC5DYWxlbmRhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREYXRlRm9ybWF0IgorIHJldHVybj0iamF2YS50ZXh0LkRhdGVGb3JtYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREYXRlRm9ybWF0T3JkZXIiCisgcmV0dXJuPSJjaGFyW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb25nRGF0ZUZvcm1hdCIKKyByZXR1cm49ImphdmEudGV4dC5EYXRlRm9ybWF0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWVkaXVtRGF0ZUZvcm1hdCIKKyByZXR1cm49ImphdmEudGV4dC5EYXRlRm9ybWF0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGltZUZvcm1hdCIKKyByZXR1cm49ImphdmEudGV4dC5EYXRlRm9ybWF0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXMyNEhvdXJGb3JtYXQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQU1fUE0iCisgdHlwZT0iY2hhciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0FQSVRBTF9BTV9QTSIKKyB0eXBlPSJjaGFyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVRFIgorIHR5cGU9ImNoYXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVkiCisgdHlwZT0iY2hhciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSE9VUiIKKyB0eXBlPSJjaGFyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSE9VUl9PRl9EQVkiCisgdHlwZT0iY2hhciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTA3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1JTlVURSIKKyB0eXBlPSJjaGFyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTU9OVEgiCisgdHlwZT0iY2hhciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUVVPVEUiCisgdHlwZT0iY2hhciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VDT05EUyIKKyB0eXBlPSJjaGFyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVElNRV9aT05FIgorIHR5cGU9ImNoYXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJZRUFSIgorIHR5cGU9ImNoYXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRGF0ZVV0aWxzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEYXRlVXRpbHMiCisgdHlwZT0iYW5kcm9pZC50ZXh0LmZvcm1hdC5EYXRlVXRpbHMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZm9ybWF0RGF0ZVJhbmdlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnRNaWxsaXMiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZE1pbGxpcyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXREYXRlUmFuZ2UiCisgcmV0dXJuPSJqYXZhLnV0aWwuRm9ybWF0dGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXR0ZXIiIHR5cGU9ImphdmEudXRpbC5Gb3JtYXR0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0TWlsbGlzIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmRNaWxsaXMiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0RGF0ZVRpbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaWxsaXMiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0RWxhcHNlZFRpbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVsYXBzZWRTZWNvbmRzIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdEVsYXBzZWRUaW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWN5Y2xlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nQnVpbGRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZWxhcHNlZFNlY29uZHMiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0U2FtZURheVRpbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlbiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibm93IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRlU3R5bGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZVN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QU1QTVN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYW1wbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERheU9mV2Vla1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF5T2ZXZWVrIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFiYnJldiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1vbnRoU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb250aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhYmJyZXYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZWxhdGl2ZURhdGVUaW1lU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWluUmVzb2x1dGlvbiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHJhbnNpdGlvblJlc29sdXRpb24iIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVsYXRpdmVUaW1lU3BhblN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnRUaW1lIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlbGF0aXZlVGltZVNwYW5TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5vdyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWluUmVzb2x1dGlvbiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZWxhdGl2ZVRpbWVTcGFuU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJub3ciIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1pblJlc29sdXRpb24iIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVsYXRpdmVUaW1lU3BhblN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbGxpcyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2l0aFByZXBvc2l0aW9uIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlbGF0aXZlVGltZVNwYW5TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaWxsaXMiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNUb2RheSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hlbiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkFCQlJFVl9NT05USF9GT1JNQVQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7JWImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUJCUkVWX1dFRUtEQVlfRk9STUFUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90OyVhJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRBWV9JTl9NSUxMSVMiCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODY0MDAwMDBMIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPUk1BVF8xMkhPVVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT1JNQVRfMjRIT1VSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPUk1BVF9BQkJSRVZfQUxMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTI0Mjg4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPUk1BVF9BQkJSRVZfTU9OVEgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NTUzNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT1JNQVRfQUJCUkVWX1JFTEFUSVZFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjYyMTQ0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPUk1BVF9BQkJSRVZfVElNRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2Mzg0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPUk1BVF9BQkJSRVZfV0VFS0RBWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyNzY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPUk1BVF9DQVBfQU1QTSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI1NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT1JNQVRfQ0FQX01JRE5JR0hUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDA5NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT1JNQVRfQ0FQX05PT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPUk1BVF9DQVBfTk9PTl9NSUROSUdIVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxMjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRk9STUFUX05PX01JRE5JR0hUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjA0OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT1JNQVRfTk9fTU9OVEhfREFZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRk9STUFUX05PX05PT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRk9STUFUX05PX05PT05fTUlETklHSFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNTYwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPUk1BVF9OT19ZRUFSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT1JNQVRfTlVNRVJJQ19EQVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTMxMDcyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPUk1BVF9TSE9XX0RBVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT1JNQVRfU0hPV19USU1FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT1JNQVRfU0hPV19XRUVLREFZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT1JNQVRfU0hPV19ZRUFSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT1JNQVRfVVRDIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODE5MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIT1VSX0lOX01JTExJUyIKKyB0eXBlPSJsb25nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjAwMDAwTCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIT1VSX01JTlVURV8yNCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDslSDolTSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMRU5HVEhfTE9ORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxFTkdUSF9NRURJVU0iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMRU5HVEhfU0hPUlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMRU5HVEhfU0hPUlRFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxFTkdUSF9TSE9SVEVTVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1JTlVURV9JTl9NSUxMSVMiCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjAwMDBMIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1PTlRIX0RBWV9GT1JNQVQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7JS1kJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1PTlRIX0ZPUk1BVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDslQiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOVU1FUklDX01PTlRIX0ZPUk1BVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDslbSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRUNPTkRfSU5fTUlMTElTIgorIHR5cGU9ImxvbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMDBMIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldFRUtEQVlfRk9STUFUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90OyVBJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldFRUtfSU5fTUlMTElTIgorIHR5cGU9ImxvbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjYwNDgwMDAwMEwiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iWUVBUl9GT1JNQVQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7JVkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iWUVBUl9GT1JNQVRfVFdPX0RJR0lUUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDslZyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJZRUFSX0lOX01JTExJUyIKKyB0eXBlPSJsb25nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMTQ0OTYwMDAwMEwiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2FtZU1vbnRoVGFibGUiCisgdHlwZT0iaW50W10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2FtZVllYXJUYWJsZSIKKyB0eXBlPSJpbnRbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRm9ybWF0dGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZvcm1hdHRlciIKKyB0eXBlPSJhbmRyb2lkLnRleHQuZm9ybWF0LkZvcm1hdHRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJmb3JtYXRGaWxlU2l6ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im51bWJlciIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXRJcEFkZHJlc3MiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFkZHIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXRTaG9ydEZpbGVTaXplIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibnVtYmVyIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlRpbWUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRpbWUiCisgdHlwZT0iYW5kcm9pZC50ZXh0LmZvcm1hdC5UaW1lIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZXpvbmUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRpbWUiCisgdHlwZT0iYW5kcm9pZC50ZXh0LmZvcm1hdC5UaW1lIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGltZSIKKyB0eXBlPSJhbmRyb2lkLnRleHQuZm9ybWF0LlRpbWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdGhlciIgdHlwZT0iYW5kcm9pZC50ZXh0LmZvcm1hdC5UaW1lIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWZ0ZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGF0IiB0eXBlPSJhbmRyb2lkLnRleHQuZm9ybWF0LlRpbWUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYmVmb3JlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhhdCIgdHlwZT0iYW5kcm9pZC50ZXh0LmZvcm1hdC5UaW1lIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZXpvbmUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcGFyZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImEiIHR5cGU9ImFuZHJvaWQudGV4dC5mb3JtYXQuVGltZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iYW5kcm9pZC50ZXh0LmZvcm1hdC5UaW1lIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcm1hdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXQyNDQ1IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdDMzMzkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGxEYXkiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWN0dWFsTWF4aW11bSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmllbGQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDdXJyZW50VGltZXpvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SnVsaWFuRGF5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbGxpcyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ210b2ZmIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdlZWtOdW1iZXIiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNFcG9jaCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZSIgdHlwZT0iYW5kcm9pZC50ZXh0LmZvcm1hdC5UaW1lIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5vcm1hbGl6ZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWdub3JlRHN0IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZTMzMzkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWlsbGlzIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoYXQiIHR5cGU9ImFuZHJvaWQudGV4dC5mb3JtYXQuVGltZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWNvbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWludXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhvdXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9udGhEYXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9udGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieWVhciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vbnRoRGF5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vbnRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InllYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRKdWxpYW5EYXkiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJqdWxpYW5EYXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUb05vdyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzd2l0Y2hUaW1lem9uZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZXpvbmUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9NaWxsaXMiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imlnbm9yZURzdCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkVQT0NIX0pVTElBTl9EQVkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNDQwNTg4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZSSURBWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSE9VUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUlOVVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNT05EQVkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1PTlRIIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNT05USF9EQVkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNBVFVSREFZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRUNPTkQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNVTkRBWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEhVUlNEQVkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRJTUVaT05FX1VUQyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtVVEMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFVFU0RBWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0VETkVTREFZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXRUVLX0RBWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0VFS19OVU0iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IllFQVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IllFQVJfREFZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhbGxEYXkiCisgdHlwZT0iYm9vbGVhbiIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImdtdG9mZiIKKyB0eXBlPSJsb25nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaG91ciIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpc0RzdCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJtaW51dGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibW9udGgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibW9udGhEYXkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2Vjb25kIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRpbWV6b25lIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ3ZWVrRGF5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InllYXIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ieWVhckRheSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJhbmRyb2lkLnRleHQubWV0aG9kIgorPgorPGNsYXNzIG5hbWU9IkFycm93S2V5TW92ZW1lbnRNZXRob2QiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0Lm1ldGhvZC5Nb3ZlbWVudE1ldGhvZCI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXJyb3dLZXlNb3ZlbWVudE1ldGhvZCIKKyB0eXBlPSJhbmRyb2lkLnRleHQubWV0aG9kLkFycm93S2V5TW92ZW1lbnRNZXRob2QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2FuU2VsZWN0QXJiaXRyYXJpbHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iYW5kcm9pZC50ZXh0Lm1ldGhvZC5Nb3ZlbWVudE1ldGhvZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluaXRpYWxpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWRnZXQiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRleHRWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uS2V5RG93biIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZGdldCIgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGV4dFZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LktleUV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uS2V5T3RoZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLndpZGdldC5UZXh0VmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbktleVVwIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkZ2V0IiB0eXBlPSJhbmRyb2lkLndpZGdldC5UZXh0VmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJrZXlDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25UYWtlRm9jdXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLndpZGdldC5UZXh0VmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Ub3VjaEV2ZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkZ2V0IiB0eXBlPSJhbmRyb2lkLndpZGdldC5UZXh0VmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uVHJhY2tiYWxsRXZlbnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWRnZXQiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRleHRWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJhc2VLZXlMaXN0ZW5lciIKKyBleHRlbmRzPSJhbmRyb2lkLnRleHQubWV0aG9kLk1ldGFLZXlLZXlMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQubWV0aG9kLktleUxpc3RlbmVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNlS2V5TGlzdGVuZXIiCisgdHlwZT0iYW5kcm9pZC50ZXh0Lm1ldGhvZC5CYXNlS2V5TGlzdGVuZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYmFja3NwYWNlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRlbnQiIHR5cGU9ImFuZHJvaWQudGV4dC5FZGl0YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LktleUV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uS2V5T3RoZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGVudCIgdHlwZT0iYW5kcm9pZC50ZXh0LkVkaXRhYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LktleUV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNoYXJhY3RlclBpY2tlckRpYWxvZyIKKyBleHRlbmRzPSJhbmRyb2lkLmFwcC5EaWFsb2ciCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQud2lkZ2V0LkFkYXB0ZXJWaWV3Lk9uSXRlbUNsaWNrTGlzdGVuZXIiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC52aWV3LlZpZXcuT25DbGlja0xpc3RlbmVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDaGFyYWN0ZXJQaWNrZXJEaWFsb2ciCisgdHlwZT0iYW5kcm9pZC50ZXh0Lm1ldGhvZC5DaGFyYWN0ZXJQaWNrZXJEaWFsb2ciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImFuZHJvaWQudGV4dC5FZGl0YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3B0aW9ucyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5zZXJ0IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ib25DbGljayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uSXRlbUNsaWNrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyZW50IiB0eXBlPSJhbmRyb2lkLndpZGdldC5BZGFwdGVyVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRhdGVLZXlMaXN0ZW5lciIKKyBleHRlbmRzPSJhbmRyb2lkLnRleHQubWV0aG9kLk51bWJlcktleUxpc3RlbmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGF0ZUtleUxpc3RlbmVyIgorIHR5cGU9ImFuZHJvaWQudGV4dC5tZXRob2QuRGF0ZUtleUxpc3RlbmVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEFjY2VwdGVkQ2hhcnMiCisgcmV0dXJuPSJjaGFyW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5wdXRUeXBlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iYW5kcm9pZC50ZXh0Lm1ldGhvZC5EYXRlS2V5TGlzdGVuZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNIQVJBQ1RFUlMiCisgdHlwZT0iY2hhcltdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEYXRlVGltZUtleUxpc3RlbmVyIgorIGV4dGVuZHM9ImFuZHJvaWQudGV4dC5tZXRob2QuTnVtYmVyS2V5TGlzdGVuZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEYXRlVGltZUtleUxpc3RlbmVyIgorIHR5cGU9ImFuZHJvaWQudGV4dC5tZXRob2QuRGF0ZVRpbWVLZXlMaXN0ZW5lciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRBY2NlcHRlZENoYXJzIgorIHJldHVybj0iY2hhcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElucHV0VHlwZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5tZXRob2QuRGF0ZVRpbWVLZXlMaXN0ZW5lciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ0hBUkFDVEVSUyIKKyB0eXBlPSJjaGFyW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRpYWxlcktleUxpc3RlbmVyIgorIGV4dGVuZHM9ImFuZHJvaWQudGV4dC5tZXRob2QuTnVtYmVyS2V5TGlzdGVuZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEaWFsZXJLZXlMaXN0ZW5lciIKKyB0eXBlPSJhbmRyb2lkLnRleHQubWV0aG9kLkRpYWxlcktleUxpc3RlbmVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEFjY2VwdGVkQ2hhcnMiCisgcmV0dXJuPSJjaGFyW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5wdXRUeXBlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iYW5kcm9pZC50ZXh0Lm1ldGhvZC5EaWFsZXJLZXlMaXN0ZW5lciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ0hBUkFDVEVSUyIKKyB0eXBlPSJjaGFyW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRpZ2l0c0tleUxpc3RlbmVyIgorIGV4dGVuZHM9ImFuZHJvaWQudGV4dC5tZXRob2QuTnVtYmVyS2V5TGlzdGVuZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEaWdpdHNLZXlMaXN0ZW5lciIKKyB0eXBlPSJhbmRyb2lkLnRleHQubWV0aG9kLkRpZ2l0c0tleUxpc3RlbmVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGlnaXRzS2V5TGlzdGVuZXIiCisgdHlwZT0iYW5kcm9pZC50ZXh0Lm1ldGhvZC5EaWdpdHNLZXlMaXN0ZW5lciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpZ24iIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlY2ltYWwiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRBY2NlcHRlZENoYXJzIgorIHJldHVybj0iY2hhcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElucHV0VHlwZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5tZXRob2QuRGlnaXRzS2V5TGlzdGVuZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5tZXRob2QuRGlnaXRzS2V5TGlzdGVuZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2lnbiIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVjaW1hbCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5tZXRob2QuRGlnaXRzS2V5TGlzdGVuZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjZXB0ZWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSGlkZVJldHVybnNUcmFuc2Zvcm1hdGlvbk1ldGhvZCIKKyBleHRlbmRzPSJhbmRyb2lkLnRleHQubWV0aG9kLlJlcGxhY2VtZW50VHJhbnNmb3JtYXRpb25NZXRob2QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIaWRlUmV0dXJuc1RyYW5zZm9ybWF0aW9uTWV0aG9kIgorIHR5cGU9ImFuZHJvaWQudGV4dC5tZXRob2QuSGlkZVJldHVybnNUcmFuc2Zvcm1hdGlvbk1ldGhvZCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5tZXRob2QuSGlkZVJldHVybnNUcmFuc2Zvcm1hdGlvbk1ldGhvZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9yaWdpbmFsIgorIHJldHVybj0iY2hhcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlcGxhY2VtZW50IgorIHJldHVybj0iY2hhcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJLZXlMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNsZWFyTWV0YUtleVN0YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGVudCIgdHlwZT0iYW5kcm9pZC50ZXh0LkVkaXRhYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0ZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnB1dFR5cGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbktleURvd24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJhbmRyb2lkLnRleHQuRWRpdGFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbktleU90aGVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC50ZXh0LkVkaXRhYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LktleUV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uS2V5VXAiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJhbmRyb2lkLnRleHQuRWRpdGFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iTGlua01vdmVtZW50TWV0aG9kIgorIGV4dGVuZHM9ImFuZHJvaWQudGV4dC5tZXRob2QuU2Nyb2xsaW5nTW92ZW1lbnRNZXRob2QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMaW5rTW92ZW1lbnRNZXRob2QiCisgdHlwZT0iYW5kcm9pZC50ZXh0Lm1ldGhvZC5MaW5rTW92ZW1lbnRNZXRob2QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQubWV0aG9kLk1vdmVtZW50TWV0aG9kIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTWV0YUtleUtleUxpc3RlbmVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1ldGFLZXlLZXlMaXN0ZW5lciIKKyB0eXBlPSJhbmRyb2lkLnRleHQubWV0aG9kLk1ldGFLZXlLZXlMaXN0ZW5lciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGp1c3RNZXRhQWZ0ZXJLZXlwcmVzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGVudCIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGp1c3RNZXRhQWZ0ZXJLZXlwcmVzcyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdGUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJNZXRhS2V5U3RhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGVudCIgdHlwZT0iYW5kcm9pZC50ZXh0LkVkaXRhYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0ZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhck1ldGFLZXlTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGVudCIgdHlwZT0iYW5kcm9pZC50ZXh0LkVkaXRhYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0ZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhck1ldGFLZXlTdGF0ZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aGljaCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1ldGFTdGF0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWV0YVN0YXRlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWV0YSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1ldGFTdGF0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1ldGFTdGF0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXRhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFuZGxlS2V5RG93biIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdGUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYW5kbGVLZXlVcCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdGUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc01ldGFUcmFja2VyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aGF0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU2VsZWN0aW5nTWV0YVRyYWNrZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoYXQiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25LZXlEb3duIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRlbnQiIHR5cGU9ImFuZHJvaWQudGV4dC5FZGl0YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LktleUV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uS2V5VXAiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGVudCIgdHlwZT0iYW5kcm9pZC50ZXh0LkVkaXRhYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJrZXlDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXRMb2NrZWRNZXRhIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZW50IiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc2V0TG9ja2VkTWV0YSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdGUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXRNZXRhU3RhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImFuZHJvaWQudGV4dC5TcGFubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJNRVRBX0FMVF9MT0NLRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUVUQV9BTFRfT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1FVEFfQ0FQX0xPQ0tFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI1NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNRVRBX1NISUZUX09OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNRVRBX1NZTV9MT0NLRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1FVEFfU1lNX09OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ik1vdmVtZW50TWV0aG9kIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY2FuU2VsZWN0QXJiaXRyYXJpbHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5pdGlhbGl6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkZ2V0IiB0eXBlPSJhbmRyb2lkLndpZGdldC5UZXh0VmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbktleURvd24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZGdldCIgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGV4dFZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImFuZHJvaWQudGV4dC5TcGFubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbktleU90aGVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLndpZGdldC5UZXh0VmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbktleVVwIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWRnZXQiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRleHRWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJrZXlDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25UYWtlRm9jdXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZGdldCIgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGV4dFZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImFuZHJvaWQudGV4dC5TcGFubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRpcmVjdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uVG91Y2hFdmVudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkZ2V0IiB0eXBlPSJhbmRyb2lkLndpZGdldC5UZXh0VmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblRyYWNrYmFsbEV2ZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWRnZXQiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRleHRWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJNdWx0aVRhcEtleUxpc3RlbmVyIgorIGV4dGVuZHM9ImFuZHJvaWQudGV4dC5tZXRob2QuQmFzZUtleUxpc3RlbmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuU3BhbldhdGNoZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik11bHRpVGFwS2V5TGlzdGVuZXIiCisgdHlwZT0iYW5kcm9pZC50ZXh0Lm1ldGhvZC5NdWx0aVRhcEtleUxpc3RlbmVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FwIiB0eXBlPSJhbmRyb2lkLnRleHQubWV0aG9kLlRleHRLZXlMaXN0ZW5lci5DYXBpdGFsaXplIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdXRvdGV4dCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldElucHV0VHlwZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5tZXRob2QuTXVsdGlUYXBLZXlMaXN0ZW5lciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhdXRvdGV4dCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FwIiB0eXBlPSJhbmRyb2lkLnRleHQubWV0aG9kLlRleHRLZXlMaXN0ZW5lci5DYXBpdGFsaXplIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU3BhbkFkZGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2hhdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TcGFuQ2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZiIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2hhdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0b3AiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblNwYW5SZW1vdmVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2hhdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTnVtYmVyS2V5TGlzdGVuZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC50ZXh0Lm1ldGhvZC5CYXNlS2V5TGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0LklucHV0RmlsdGVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOdW1iZXJLZXlMaXN0ZW5lciIKKyB0eXBlPSJhbmRyb2lkLnRleHQubWV0aG9kLk51bWJlcktleUxpc3RlbmVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImZpbHRlciIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImFuZHJvaWQudGV4dC5TcGFubmVkIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkc3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFjY2VwdGVkQ2hhcnMiCisgcmV0dXJuPSJjaGFyW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb29rdXAiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRlbnQiIHR5cGU9ImFuZHJvaWQudGV4dC5TcGFubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib2siCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY2VwdCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBhc3N3b3JkVHJhbnNmb3JtYXRpb25NZXRob2QiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0LlRleHRXYXRjaGVyIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5tZXRob2QuVHJhbnNmb3JtYXRpb25NZXRob2QiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBhc3N3b3JkVHJhbnNmb3JtYXRpb25NZXRob2QiCisgdHlwZT0iYW5kcm9pZC50ZXh0Lm1ldGhvZC5QYXNzd29yZFRyYW5zZm9ybWF0aW9uTWV0aG9kIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFmdGVyVGV4dENoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJhbmRyb2lkLnRleHQuRWRpdGFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYmVmb3JlVGV4dENoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhZnRlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iYW5kcm9pZC50ZXh0Lm1ldGhvZC5QYXNzd29yZFRyYW5zZm9ybWF0aW9uTWV0aG9kIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHJhbnNmb3JtYXRpb24iCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uRm9jdXNDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZVRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZvY3VzZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRpcmVjdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcmV2aW91c2x5Rm9jdXNlZFJlY3QiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblRleHRDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmVmb3JlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUXdlcnR5S2V5TGlzdGVuZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC50ZXh0Lm1ldGhvZC5CYXNlS2V5TGlzdGVuZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJRd2VydHlLZXlMaXN0ZW5lciIKKyB0eXBlPSJhbmRyb2lkLnRleHQubWV0aG9kLlF3ZXJ0eUtleUxpc3RlbmVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FwIiB0eXBlPSJhbmRyb2lkLnRleHQubWV0aG9kLlRleHRLZXlMaXN0ZW5lci5DYXBpdGFsaXplIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdXRvdGV4dCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldElucHV0VHlwZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5tZXRob2QuUXdlcnR5S2V5TGlzdGVuZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0b3RleHQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhcCIgdHlwZT0iYW5kcm9pZC50ZXh0Lm1ldGhvZC5UZXh0S2V5TGlzdGVuZXIuQ2FwaXRhbGl6ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYXJrQXNSZXBsYWNlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGVudCIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWdpbmFsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJlcGxhY2VtZW50VHJhbnNmb3JtYXRpb25NZXRob2QiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQubWV0aG9kLlRyYW5zZm9ybWF0aW9uTWV0aG9kIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZXBsYWNlbWVudFRyYW5zZm9ybWF0aW9uTWV0aG9kIgorIHR5cGU9ImFuZHJvaWQudGV4dC5tZXRob2QuUmVwbGFjZW1lbnRUcmFuc2Zvcm1hdGlvbk1ldGhvZCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRPcmlnaW5hbCIKKyByZXR1cm49ImNoYXJbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlcGxhY2VtZW50IgorIHJldHVybj0iY2hhcltdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHJhbnNmb3JtYXRpb24iCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uRm9jdXNDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZVRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZvY3VzZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRpcmVjdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcmV2aW91c2x5Rm9jdXNlZFJlY3QiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTY3JvbGxpbmdNb3ZlbWVudE1ldGhvZCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQubWV0aG9kLk1vdmVtZW50TWV0aG9kIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTY3JvbGxpbmdNb3ZlbWVudE1ldGhvZCIKKyB0eXBlPSJhbmRyb2lkLnRleHQubWV0aG9kLlNjcm9sbGluZ01vdmVtZW50TWV0aG9kIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNhblNlbGVjdEFyYml0cmFyaWx5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkb3duIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkZ2V0IiB0eXBlPSJhbmRyb2lkLndpZGdldC5UZXh0VmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iYW5kcm9pZC50ZXh0Lm1ldGhvZC5Nb3ZlbWVudE1ldGhvZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluaXRpYWxpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWRnZXQiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRleHRWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxlZnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWRnZXQiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRleHRWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImFuZHJvaWQudGV4dC5TcGFubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25LZXlEb3duIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkZ2V0IiB0eXBlPSJhbmRyb2lkLndpZGdldC5UZXh0VmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJrZXlDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25LZXlPdGhlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRleHRWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LktleUV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uS2V5VXAiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWRnZXQiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRleHRWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImFuZHJvaWQudGV4dC5TcGFubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblRha2VGb2N1cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZGdldCIgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGV4dFZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImFuZHJvaWQudGV4dC5TcGFubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRpciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uVG91Y2hFdmVudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZGdldCIgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGV4dFZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblRyYWNrYmFsbEV2ZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkZ2V0IiB0eXBlPSJhbmRyb2lkLndpZGdldC5UZXh0VmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyaWdodCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZGdldCIgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGV4dFZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZGdldCIgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGV4dFZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTaW5nbGVMaW5lVHJhbnNmb3JtYXRpb25NZXRob2QiCisgZXh0ZW5kcz0iYW5kcm9pZC50ZXh0Lm1ldGhvZC5SZXBsYWNlbWVudFRyYW5zZm9ybWF0aW9uTWV0aG9kIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2luZ2xlTGluZVRyYW5zZm9ybWF0aW9uTWV0aG9kIgorIHR5cGU9ImFuZHJvaWQudGV4dC5tZXRob2QuU2luZ2xlTGluZVRyYW5zZm9ybWF0aW9uTWV0aG9kIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iYW5kcm9pZC50ZXh0Lm1ldGhvZC5TaW5nbGVMaW5lVHJhbnNmb3JtYXRpb25NZXRob2QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPcmlnaW5hbCIKKyByZXR1cm49ImNoYXJbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXBsYWNlbWVudCIKKyByZXR1cm49ImNoYXJbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUZXh0S2V5TGlzdGVuZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC50ZXh0Lm1ldGhvZC5CYXNlS2V5TGlzdGVuZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5TcGFuV2F0Y2hlciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGV4dEtleUxpc3RlbmVyIgorIHR5cGU9ImFuZHJvaWQudGV4dC5tZXRob2QuVGV4dEtleUxpc3RlbmVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FwIiB0eXBlPSJhbmRyb2lkLnRleHQubWV0aG9kLlRleHRLZXlMaXN0ZW5lci5DYXBpdGFsaXplIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdXRvdGV4dCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJhbmRyb2lkLnRleHQuRWRpdGFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5wdXRUeXBlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iYW5kcm9pZC50ZXh0Lm1ldGhvZC5UZXh0S2V5TGlzdGVuZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0b3RleHQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhcCIgdHlwZT0iYW5kcm9pZC50ZXh0Lm1ldGhvZC5UZXh0S2V5TGlzdGVuZXIuQ2FwaXRhbGl6ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5tZXRob2QuVGV4dEtleUxpc3RlbmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TcGFuQWRkZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aGF0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblNwYW5DaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2hhdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TcGFuUmVtb3ZlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImFuZHJvaWQudGV4dC5TcGFubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoYXQiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbGVhc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNob3VsZENhcCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FwIiB0eXBlPSJhbmRyb2lkLnRleHQubWV0aG9kLlRleHRLZXlMaXN0ZW5lci5DYXBpdGFsaXplIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjcyIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2ZmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVGV4dEtleUxpc3RlbmVyLkNhcGl0YWxpemUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkVudW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQubWV0aG9kLlRleHRLZXlMaXN0ZW5lci5DYXBpdGFsaXplIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVzIgorIHJldHVybj0iYW5kcm9pZC50ZXh0Lm1ldGhvZC5UZXh0S2V5TGlzdGVuZXIuQ2FwaXRhbGl6ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUaW1lS2V5TGlzdGVuZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC50ZXh0Lm1ldGhvZC5OdW1iZXJLZXlMaXN0ZW5lciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRpbWVLZXlMaXN0ZW5lciIKKyB0eXBlPSJhbmRyb2lkLnRleHQubWV0aG9kLlRpbWVLZXlMaXN0ZW5lciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRBY2NlcHRlZENoYXJzIgorIHJldHVybj0iY2hhcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElucHV0VHlwZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5tZXRob2QuVGltZUtleUxpc3RlbmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDSEFSQUNURVJTIgorIHR5cGU9ImNoYXJbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVG91Y2giCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRJbml0aWFsU2Nyb2xsWCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWRnZXQiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRleHRWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImFuZHJvaWQudGV4dC5TcGFubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5pdGlhbFNjcm9sbFkiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkZ2V0IiB0eXBlPSJhbmRyb2lkLndpZGdldC5UZXh0VmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uVG91Y2hFdmVudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkZ2V0IiB0eXBlPSJhbmRyb2lkLndpZGdldC5UZXh0VmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNjcm9sbFRvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWRnZXQiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRleHRWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYXlvdXQiIHR5cGU9ImFuZHJvaWQudGV4dC5MYXlvdXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJUcmFuc2Zvcm1hdGlvbk1ldGhvZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldFRyYW5zZm9ybWF0aW9uIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uRm9jdXNDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlVGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9jdXNlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlyZWN0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByZXZpb3VzbHlGb2N1c2VkUmVjdCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQudGV4dC5zdHlsZSIKKz4KKzxjbGFzcyBuYW1lPSJBYnNvbHV0ZVNpemVTcGFuIgorIGV4dGVuZHM9ImFuZHJvaWQudGV4dC5zdHlsZS5NZXRyaWNBZmZlY3RpbmdTcGFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuUGFyY2VsYWJsZVNwYW4iPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFic29sdXRlU2l6ZVNwYW4iCisgdHlwZT0iYW5kcm9pZC50ZXh0LnN0eWxlLkFic29sdXRlU2l6ZVNwYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFic29sdXRlU2l6ZVNwYW4iCisgdHlwZT0iYW5kcm9pZC50ZXh0LnN0eWxlLkFic29sdXRlU2l6ZVNwYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRpcCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzb2x1dGVTaXplU3BhbiIKKyB0eXBlPSJhbmRyb2lkLnRleHQuc3R5bGUuQWJzb2x1dGVTaXplU3BhbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERpcCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTcGFuVHlwZUlkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZURyYXdTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRzIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZU1lYXN1cmVTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRzIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQWxpZ25tZW50U3BhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuc3R5bGUuUGFyYWdyYXBoU3R5bGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRBbGlnbm1lbnQiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuTGF5b3V0LkFsaWdubWVudCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJBbGlnbm1lbnRTcGFuLlN0YW5kYXJkIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0LnN0eWxlLkFsaWdubWVudFNwYW4iPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0LlBhcmNlbGFibGVTcGFuIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBbGlnbm1lbnRTcGFuLlN0YW5kYXJkIgorIHR5cGU9ImFuZHJvaWQudGV4dC5zdHlsZS5BbGlnbm1lbnRTcGFuLlN0YW5kYXJkIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxpZ24iIHR5cGU9ImFuZHJvaWQudGV4dC5MYXlvdXQuQWxpZ25tZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBbGlnbm1lbnRTcGFuLlN0YW5kYXJkIgorIHR5cGU9ImFuZHJvaWQudGV4dC5zdHlsZS5BbGlnbm1lbnRTcGFuLlN0YW5kYXJkIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWxpZ25tZW50IgorIHJldHVybj0iYW5kcm9pZC50ZXh0LkxheW91dC5BbGlnbm1lbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3BhblR5cGVJZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQmFja2dyb3VuZENvbG9yU3BhbiIKKyBleHRlbmRzPSJhbmRyb2lkLnRleHQuc3R5bGUuQ2hhcmFjdGVyU3R5bGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5QYXJjZWxhYmxlU3BhbiI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuc3R5bGUuVXBkYXRlQXBwZWFyYW5jZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmFja2dyb3VuZENvbG9yU3BhbiIKKyB0eXBlPSJhbmRyb2lkLnRleHQuc3R5bGUuQmFja2dyb3VuZENvbG9yU3BhbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbG9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJhY2tncm91bmRDb2xvclNwYW4iCisgdHlwZT0iYW5kcm9pZC50ZXh0LnN0eWxlLkJhY2tncm91bmRDb2xvclNwYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCYWNrZ3JvdW5kQ29sb3IiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3BhblR5cGVJZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVEcmF3U3RhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkcyIgdHlwZT0iYW5kcm9pZC50ZXh0LlRleHRQYWludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQnVsbGV0U3BhbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuc3R5bGUuTGVhZGluZ01hcmdpblNwYW4iPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0LlBhcmNlbGFibGVTcGFuIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCdWxsZXRTcGFuIgorIHR5cGU9ImFuZHJvaWQudGV4dC5zdHlsZS5CdWxsZXRTcGFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQnVsbGV0U3BhbiIKKyB0eXBlPSJhbmRyb2lkLnRleHQuc3R5bGUuQnVsbGV0U3BhbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImdhcFdpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJ1bGxldFNwYW4iCisgdHlwZT0iYW5kcm9pZC50ZXh0LnN0eWxlLkJ1bGxldFNwYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJnYXBXaWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCdWxsZXRTcGFuIgorIHR5cGU9ImFuZHJvaWQudGV4dC5zdHlsZS5CdWxsZXRTcGFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhd0xlYWRpbmdNYXJnaW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkNhbnZhcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYWludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9wIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJhc2VsaW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlyc3QiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImwiIHR5cGU9ImFuZHJvaWQudGV4dC5MYXlvdXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGVhZGluZ01hcmdpbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlyc3QiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3BhblR5cGVJZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJTVEFOREFSRF9HQVBfV0lEVEgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDaGFyYWN0ZXJTdHlsZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDaGFyYWN0ZXJTdHlsZSIKKyB0eXBlPSJhbmRyb2lkLnRleHQuc3R5bGUuQ2hhcmFjdGVyU3R5bGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0VW5kZXJseWluZyIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5zdHlsZS5DaGFyYWN0ZXJTdHlsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVEcmF3U3RhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRwIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyYXAiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuc3R5bGUuQ2hhcmFjdGVyU3R5bGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3MiIHR5cGU9ImFuZHJvaWQudGV4dC5zdHlsZS5DaGFyYWN0ZXJTdHlsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDbGlja2FibGVTcGFuIgorIGV4dGVuZHM9ImFuZHJvaWQudGV4dC5zdHlsZS5DaGFyYWN0ZXJTdHlsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuc3R5bGUuVXBkYXRlQXBwZWFyYW5jZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2xpY2thYmxlU3BhbiIKKyB0eXBlPSJhbmRyb2lkLnRleHQuc3R5bGUuQ2xpY2thYmxlU3BhbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJvbkNsaWNrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWRnZXQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZURyYXdTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRzIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRyYXdhYmxlTWFyZ2luU3BhbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuc3R5bGUuTGVhZGluZ01hcmdpblNwYW4iPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0LnN0eWxlLkxpbmVIZWlnaHRTcGFuIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEcmF3YWJsZU1hcmdpblNwYW4iCisgdHlwZT0iYW5kcm9pZC50ZXh0LnN0eWxlLkRyYXdhYmxlTWFyZ2luU3BhbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRyYXdhYmxlTWFyZ2luU3BhbiIKKyB0eXBlPSJhbmRyb2lkLnRleHQuc3R5bGUuRHJhd2FibGVNYXJnaW5TcGFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjaG9vc2VIZWlnaHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXN0YXJ0diIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZtIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50LkZvbnRNZXRyaWNzSW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYXdMZWFkaW5nTWFyZ2luIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InAiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvcCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiYXNlbGluZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3R0b20iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpcnN0IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYXlvdXQiIHR5cGU9ImFuZHJvaWQudGV4dC5MYXlvdXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGVhZGluZ01hcmdpbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlyc3QiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRHluYW1pY0RyYXdhYmxlU3BhbiIKKyBleHRlbmRzPSJhbmRyb2lkLnRleHQuc3R5bGUuUmVwbGFjZW1lbnRTcGFuIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEeW5hbWljRHJhd2FibGVTcGFuIgorIHR5cGU9ImFuZHJvaWQudGV4dC5zdHlsZS5EeW5hbWljRHJhd2FibGVTcGFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRHluYW1pY0RyYXdhYmxlU3BhbiIKKyB0eXBlPSJhbmRyb2lkLnRleHQuc3R5bGUuRHluYW1pY0RyYXdhYmxlU3BhbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZlcnRpY2FsQWxpZ25tZW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkcmF3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FudmFzIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkNhbnZhcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b3AiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3R0b20iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RHJhd2FibGUiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYWludC5Gb250TWV0cmljc0ludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWZXJ0aWNhbEFsaWdubWVudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkFMSUdOX0JBU0VMSU5FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBTElHTl9CT1RUT00iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1WZXJ0aWNhbEFsaWdubWVudCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJGb3JlZ3JvdW5kQ29sb3JTcGFuIgorIGV4dGVuZHM9ImFuZHJvaWQudGV4dC5zdHlsZS5DaGFyYWN0ZXJTdHlsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0LlBhcmNlbGFibGVTcGFuIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5zdHlsZS5VcGRhdGVBcHBlYXJhbmNlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGb3JlZ3JvdW5kQ29sb3JTcGFuIgorIHR5cGU9ImFuZHJvaWQudGV4dC5zdHlsZS5Gb3JlZ3JvdW5kQ29sb3JTcGFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sb3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRm9yZWdyb3VuZENvbG9yU3BhbiIKKyB0eXBlPSJhbmRyb2lkLnRleHQuc3R5bGUuRm9yZWdyb3VuZENvbG9yU3BhbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZvcmVncm91bmRDb2xvciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTcGFuVHlwZUlkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZURyYXdTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRzIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJY29uTWFyZ2luU3BhbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuc3R5bGUuTGVhZGluZ01hcmdpblNwYW4iPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0LnN0eWxlLkxpbmVIZWlnaHRTcGFuIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJY29uTWFyZ2luU3BhbiIKKyB0eXBlPSJhbmRyb2lkLnRleHQuc3R5bGUuSWNvbk1hcmdpblNwYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSWNvbk1hcmdpblNwYW4iCisgdHlwZT0iYW5kcm9pZC50ZXh0LnN0eWxlLkljb25NYXJnaW5TcGFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2hvb3NlSGVpZ2h0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlzdGFydHYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYWludC5Gb250TWV0cmljc0ludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmF3TGVhZGluZ01hcmdpbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRpciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b3AiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmFzZWxpbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYm90dG9tIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaXJzdCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGF5b3V0IiB0eXBlPSJhbmRyb2lkLnRleHQuTGF5b3V0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExlYWRpbmdNYXJnaW4iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpcnN0IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkltYWdlU3BhbiIKKyBleHRlbmRzPSJhbmRyb2lkLnRleHQuc3R5bGUuRHluYW1pY0RyYXdhYmxlU3BhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkltYWdlU3BhbiIKKyB0eXBlPSJhbmRyb2lkLnRleHQuc3R5bGUuSW1hZ2VTcGFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW1hZ2VTcGFuIgorIHR5cGU9ImFuZHJvaWQudGV4dC5zdHlsZS5JbWFnZVNwYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2ZXJ0aWNhbEFsaWdubWVudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbWFnZVNwYW4iCisgdHlwZT0iYW5kcm9pZC50ZXh0LnN0eWxlLkltYWdlU3BhbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW1hZ2VTcGFuIgorIHR5cGU9ImFuZHJvaWQudGV4dC5zdHlsZS5JbWFnZVNwYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZlcnRpY2FsQWxpZ25tZW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkltYWdlU3BhbiIKKyB0eXBlPSJhbmRyb2lkLnRleHQuc3R5bGUuSW1hZ2VTcGFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW1hZ2VTcGFuIgorIHR5cGU9ImFuZHJvaWQudGV4dC5zdHlsZS5JbWFnZVNwYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2ZXJ0aWNhbEFsaWdubWVudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbWFnZVNwYW4iCisgdHlwZT0iYW5kcm9pZC50ZXh0LnN0eWxlLkltYWdlU3BhbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW1hZ2VTcGFuIgorIHR5cGU9ImFuZHJvaWQudGV4dC5zdHlsZS5JbWFnZVNwYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZlcnRpY2FsQWxpZ25tZW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkltYWdlU3BhbiIKKyB0eXBlPSJhbmRyb2lkLnRleHQuc3R5bGUuSW1hZ2VTcGFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbWFnZVNwYW4iCisgdHlwZT0iYW5kcm9pZC50ZXh0LnN0eWxlLkltYWdlU3BhbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmVydGljYWxBbGlnbm1lbnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW1hZ2VTcGFuIgorIHR5cGU9ImFuZHJvaWQudGV4dC5zdHlsZS5JbWFnZVNwYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzb3VyY2VJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbWFnZVNwYW4iCisgdHlwZT0iYW5kcm9pZC50ZXh0LnN0eWxlLkltYWdlU3BhbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvdXJjZUlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZlcnRpY2FsQWxpZ25tZW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXREcmF3YWJsZSIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U291cmNlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iTGVhZGluZ01hcmdpblNwYW4iCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0LnN0eWxlLlBhcmFncmFwaFN0eWxlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZHJhd0xlYWRpbmdNYXJnaW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRpciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b3AiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmFzZWxpbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYm90dG9tIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaXJzdCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGF5b3V0IiB0eXBlPSJhbmRyb2lkLnRleHQuTGF5b3V0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExlYWRpbmdNYXJnaW4iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlyc3QiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJMZWFkaW5nTWFyZ2luU3Bhbi5MZWFkaW5nTWFyZ2luU3BhbjIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuc3R5bGUuTGVhZGluZ01hcmdpblNwYW4iPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0LnN0eWxlLldyYXBUb2dldGhlclNwYW4iPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRMZWFkaW5nTWFyZ2luTGluZUNvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkxlYWRpbmdNYXJnaW5TcGFuLlN0YW5kYXJkIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0LnN0eWxlLkxlYWRpbmdNYXJnaW5TcGFuIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5QYXJjZWxhYmxlU3BhbiI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGVhZGluZ01hcmdpblNwYW4uU3RhbmRhcmQiCisgdHlwZT0iYW5kcm9pZC50ZXh0LnN0eWxlLkxlYWRpbmdNYXJnaW5TcGFuLlN0YW5kYXJkIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlyc3QiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMZWFkaW5nTWFyZ2luU3Bhbi5TdGFuZGFyZCIKKyB0eXBlPSJhbmRyb2lkLnRleHQuc3R5bGUuTGVhZGluZ01hcmdpblNwYW4uU3RhbmRhcmQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJldmVyeSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMZWFkaW5nTWFyZ2luU3Bhbi5TdGFuZGFyZCIKKyB0eXBlPSJhbmRyb2lkLnRleHQuc3R5bGUuTGVhZGluZ01hcmdpblNwYW4uU3RhbmRhcmQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmF3TGVhZGluZ01hcmdpbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRpciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b3AiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmFzZWxpbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYm90dG9tIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaXJzdCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGF5b3V0IiB0eXBlPSJhbmRyb2lkLnRleHQuTGF5b3V0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExlYWRpbmdNYXJnaW4iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpcnN0IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNwYW5UeXBlSWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJMaW5lQmFja2dyb3VuZFNwYW4iCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0LnN0eWxlLlBhcmFncmFwaFN0eWxlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZHJhd0JhY2tncm91bmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZWZ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvcCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiYXNlbGluZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3R0b20iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxudW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkxpbmVIZWlnaHRTcGFuIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5zdHlsZS5QYXJhZ3JhcGhTdHlsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuc3R5bGUuV3JhcFRvZ2V0aGVyU3BhbiI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImNob29zZUhlaWdodCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNwYW5zdGFydHYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYWludC5Gb250TWV0cmljc0ludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkxpbmVIZWlnaHRTcGFuLldpdGhEZW5zaXR5IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0LnN0eWxlLkxpbmVIZWlnaHRTcGFuIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iY2hvb3NlSGVpZ2h0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3BhbnN0YXJ0diIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZtIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50LkZvbnRNZXRyaWNzSW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYWludCIgdHlwZT0iYW5kcm9pZC50ZXh0LlRleHRQYWludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iTWFza0ZpbHRlclNwYW4iCisgZXh0ZW5kcz0iYW5kcm9pZC50ZXh0LnN0eWxlLkNoYXJhY3RlclN0eWxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuc3R5bGUuVXBkYXRlQXBwZWFyYW5jZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTWFza0ZpbHRlclNwYW4iCisgdHlwZT0iYW5kcm9pZC50ZXh0LnN0eWxlLk1hc2tGaWx0ZXJTcGFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsdGVyIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLk1hc2tGaWx0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRNYXNrRmlsdGVyIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5NYXNrRmlsdGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZURyYXdTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRzIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik1ldHJpY0FmZmVjdGluZ1NwYW4iCisgZXh0ZW5kcz0iYW5kcm9pZC50ZXh0LnN0eWxlLkNoYXJhY3RlclN0eWxlIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5zdHlsZS5VcGRhdGVMYXlvdXQiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1ldHJpY0FmZmVjdGluZ1NwYW4iCisgdHlwZT0iYW5kcm9pZC50ZXh0LnN0eWxlLk1ldHJpY0FmZmVjdGluZ1NwYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0idXBkYXRlTWVhc3VyZVN0YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJQYXJhZ3JhcGhTdHlsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJRdW90ZVNwYW4iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0LnN0eWxlLkxlYWRpbmdNYXJnaW5TcGFuIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5QYXJjZWxhYmxlU3BhbiI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUXVvdGVTcGFuIgorIHR5cGU9ImFuZHJvaWQudGV4dC5zdHlsZS5RdW90ZVNwYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJRdW90ZVNwYW4iCisgdHlwZT0iYW5kcm9pZC50ZXh0LnN0eWxlLlF1b3RlU3BhbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbG9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlF1b3RlU3BhbiIKKyB0eXBlPSJhbmRyb2lkLnRleHQuc3R5bGUuUXVvdGVTcGFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhd0xlYWRpbmdNYXJnaW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkNhbnZhcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYWludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9wIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJhc2VsaW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlyc3QiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxheW91dCIgdHlwZT0iYW5kcm9pZC50ZXh0LkxheW91dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb2xvciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMZWFkaW5nTWFyZ2luIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaXJzdCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTcGFuVHlwZUlkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSYXN0ZXJpemVyU3BhbiIKKyBleHRlbmRzPSJhbmRyb2lkLnRleHQuc3R5bGUuQ2hhcmFjdGVyU3R5bGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5zdHlsZS5VcGRhdGVBcHBlYXJhbmNlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSYXN0ZXJpemVyU3BhbiIKKyB0eXBlPSJhbmRyb2lkLnRleHQuc3R5bGUuUmFzdGVyaXplclNwYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJhc3Rlcml6ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRSYXN0ZXJpemVyIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5SYXN0ZXJpemVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZURyYXdTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRzIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJlbGF0aXZlU2l6ZVNwYW4iCisgZXh0ZW5kcz0iYW5kcm9pZC50ZXh0LnN0eWxlLk1ldHJpY0FmZmVjdGluZ1NwYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5QYXJjZWxhYmxlU3BhbiI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVsYXRpdmVTaXplU3BhbiIKKyB0eXBlPSJhbmRyb2lkLnRleHQuc3R5bGUuUmVsYXRpdmVTaXplU3BhbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3BvcnRpb24iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZWxhdGl2ZVNpemVTcGFuIgorIHR5cGU9ImFuZHJvaWQudGV4dC5zdHlsZS5SZWxhdGl2ZVNpemVTcGFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2l6ZUNoYW5nZSIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNwYW5UeXBlSWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlRHJhd1N0YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHMiIHR5cGU9ImFuZHJvaWQudGV4dC5UZXh0UGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlTWVhc3VyZVN0YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHMiIHR5cGU9ImFuZHJvaWQudGV4dC5UZXh0UGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJlcGxhY2VtZW50U3BhbiIKKyBleHRlbmRzPSJhbmRyb2lkLnRleHQuc3R5bGUuTWV0cmljQWZmZWN0aW5nU3BhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVwbGFjZW1lbnRTcGFuIgorIHR5cGU9ImFuZHJvaWQudGV4dC5zdHlsZS5SZXBsYWNlbWVudFNwYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZHJhdyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FudmFzIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkNhbnZhcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b3AiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3R0b20iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYWludCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QYWludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZtIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBhaW50LkZvbnRNZXRyaWNzSW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZURyYXdTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRzIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZU1lYXN1cmVTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InAiIHR5cGU9ImFuZHJvaWQudGV4dC5UZXh0UGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2NhbGVYU3BhbiIKKyBleHRlbmRzPSJhbmRyb2lkLnRleHQuc3R5bGUuTWV0cmljQWZmZWN0aW5nU3BhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0LlBhcmNlbGFibGVTcGFuIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTY2FsZVhTcGFuIgorIHR5cGU9ImFuZHJvaWQudGV4dC5zdHlsZS5TY2FsZVhTcGFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvcG9ydGlvbiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNjYWxlWFNwYW4iCisgdHlwZT0iYW5kcm9pZC50ZXh0LnN0eWxlLlNjYWxlWFNwYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTY2FsZVgiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTcGFuVHlwZUlkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZURyYXdTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRzIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZU1lYXN1cmVTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRzIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTdHJpa2V0aHJvdWdoU3BhbiIKKyBleHRlbmRzPSJhbmRyb2lkLnRleHQuc3R5bGUuQ2hhcmFjdGVyU3R5bGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5QYXJjZWxhYmxlU3BhbiI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuc3R5bGUuVXBkYXRlQXBwZWFyYW5jZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RyaWtldGhyb3VnaFNwYW4iCisgdHlwZT0iYW5kcm9pZC50ZXh0LnN0eWxlLlN0cmlrZXRocm91Z2hTcGFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RyaWtldGhyb3VnaFNwYW4iCisgdHlwZT0iYW5kcm9pZC50ZXh0LnN0eWxlLlN0cmlrZXRocm91Z2hTcGFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3BhblR5cGVJZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVEcmF3U3RhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkcyIgdHlwZT0iYW5kcm9pZC50ZXh0LlRleHRQYWludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3R5bGVTcGFuIgorIGV4dGVuZHM9ImFuZHJvaWQudGV4dC5zdHlsZS5NZXRyaWNBZmZlY3RpbmdTcGFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuUGFyY2VsYWJsZVNwYW4iPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN0eWxlU3BhbiIKKyB0eXBlPSJhbmRyb2lkLnRleHQuc3R5bGUuU3R5bGVTcGFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3R5bGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3R5bGVTcGFuIgorIHR5cGU9ImFuZHJvaWQudGV4dC5zdHlsZS5TdHlsZVNwYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTcGFuVHlwZUlkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0eWxlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZURyYXdTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRzIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZU1lYXN1cmVTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhaW50IiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTdWJzY3JpcHRTcGFuIgorIGV4dGVuZHM9ImFuZHJvaWQudGV4dC5zdHlsZS5NZXRyaWNBZmZlY3RpbmdTcGFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuUGFyY2VsYWJsZVNwYW4iPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN1YnNjcmlwdFNwYW4iCisgdHlwZT0iYW5kcm9pZC50ZXh0LnN0eWxlLlN1YnNjcmlwdFNwYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdWJzY3JpcHRTcGFuIgorIHR5cGU9ImFuZHJvaWQudGV4dC5zdHlsZS5TdWJzY3JpcHRTcGFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3BhblR5cGVJZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVEcmF3U3RhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0cCIgdHlwZT0iYW5kcm9pZC50ZXh0LlRleHRQYWludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVNZWFzdXJlU3RhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0cCIgdHlwZT0iYW5kcm9pZC50ZXh0LlRleHRQYWludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3VwZXJzY3JpcHRTcGFuIgorIGV4dGVuZHM9ImFuZHJvaWQudGV4dC5zdHlsZS5NZXRyaWNBZmZlY3RpbmdTcGFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuUGFyY2VsYWJsZVNwYW4iPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN1cGVyc2NyaXB0U3BhbiIKKyB0eXBlPSJhbmRyb2lkLnRleHQuc3R5bGUuU3VwZXJzY3JpcHRTcGFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3VwZXJzY3JpcHRTcGFuIgorIHR5cGU9ImFuZHJvaWQudGV4dC5zdHlsZS5TdXBlcnNjcmlwdFNwYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTcGFuVHlwZUlkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZURyYXdTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRwIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZU1lYXN1cmVTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRwIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iVGFiU3RvcFNwYW4iCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0LnN0eWxlLlBhcmFncmFwaFN0eWxlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0VGFiU3RvcCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJUYWJTdG9wU3Bhbi5TdGFuZGFyZCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5zdHlsZS5UYWJTdG9wU3BhbiI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGFiU3RvcFNwYW4uU3RhbmRhcmQiCisgdHlwZT0iYW5kcm9pZC50ZXh0LnN0eWxlLlRhYlN0b3BTcGFuLlN0YW5kYXJkIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hlcmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldFRhYlN0b3AiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVGV4dEFwcGVhcmFuY2VTcGFuIgorIGV4dGVuZHM9ImFuZHJvaWQudGV4dC5zdHlsZS5NZXRyaWNBZmZlY3RpbmdTcGFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuUGFyY2VsYWJsZVNwYW4iPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRleHRBcHBlYXJhbmNlU3BhbiIKKyB0eXBlPSJhbmRyb2lkLnRleHQuc3R5bGUuVGV4dEFwcGVhcmFuY2VTcGFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFwcGVhcmFuY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGV4dEFwcGVhcmFuY2VTcGFuIgorIHR5cGU9ImFuZHJvaWQudGV4dC5zdHlsZS5UZXh0QXBwZWFyYW5jZVNwYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXBwZWFyYW5jZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvckxpc3QiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGV4dEFwcGVhcmFuY2VTcGFuIgorIHR5cGU9ImFuZHJvaWQudGV4dC5zdHlsZS5UZXh0QXBwZWFyYW5jZVNwYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYW1pbHkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sb3IiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuQ29sb3JTdGF0ZUxpc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxpbmtDb2xvciIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5Db2xvclN0YXRlTGlzdCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGV4dEFwcGVhcmFuY2VTcGFuIgorIHR5cGU9ImFuZHJvaWQudGV4dC5zdHlsZS5UZXh0QXBwZWFyYW5jZVNwYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGYW1pbHkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExpbmtUZXh0Q29sb3IiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucmVzLkNvbG9yU3RhdGVMaXN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNwYW5UeXBlSWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGV4dENvbG9yIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnJlcy5Db2xvclN0YXRlTGlzdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUZXh0U2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUZXh0U3R5bGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlRHJhd1N0YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHMiIHR5cGU9ImFuZHJvaWQudGV4dC5UZXh0UGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlTWVhc3VyZVN0YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHMiIHR5cGU9ImFuZHJvaWQudGV4dC5UZXh0UGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlR5cGVmYWNlU3BhbiIKKyBleHRlbmRzPSJhbmRyb2lkLnRleHQuc3R5bGUuTWV0cmljQWZmZWN0aW5nU3BhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC50ZXh0LlBhcmNlbGFibGVTcGFuIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUeXBlZmFjZVNwYW4iCisgdHlwZT0iYW5kcm9pZC50ZXh0LnN0eWxlLlR5cGVmYWNlU3BhbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhbWlseSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVHlwZWZhY2VTcGFuIgorIHR5cGU9ImFuZHJvaWQudGV4dC5zdHlsZS5UeXBlZmFjZVNwYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGYW1pbHkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNwYW5UeXBlSWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlRHJhd1N0YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHMiIHR5cGU9ImFuZHJvaWQudGV4dC5UZXh0UGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlTWVhc3VyZVN0YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpbnQiIHR5cGU9ImFuZHJvaWQudGV4dC5UZXh0UGFpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlVSTFNwYW4iCisgZXh0ZW5kcz0iYW5kcm9pZC50ZXh0LnN0eWxlLkNsaWNrYWJsZVNwYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5QYXJjZWxhYmxlU3BhbiI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iVVJMU3BhbiIKKyB0eXBlPSJhbmRyb2lkLnRleHQuc3R5bGUuVVJMU3BhbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVVJMU3BhbiIKKyB0eXBlPSJhbmRyb2lkLnRleHQuc3R5bGUuVVJMU3BhbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNwYW5UeXBlSWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VVJMIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNsaWNrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkZ2V0IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVW5kZXJsaW5lU3BhbiIKKyBleHRlbmRzPSJhbmRyb2lkLnRleHQuc3R5bGUuQ2hhcmFjdGVyU3R5bGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5QYXJjZWxhYmxlU3BhbiI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuc3R5bGUuVXBkYXRlQXBwZWFyYW5jZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iVW5kZXJsaW5lU3BhbiIKKyB0eXBlPSJhbmRyb2lkLnRleHQuc3R5bGUuVW5kZXJsaW5lU3BhbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlVuZGVybGluZVNwYW4iCisgdHlwZT0iYW5kcm9pZC50ZXh0LnN0eWxlLlVuZGVybGluZVNwYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTcGFuVHlwZUlkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZURyYXdTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRzIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFBhaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iVXBkYXRlQXBwZWFyYW5jZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iVXBkYXRlTGF5b3V0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5zdHlsZS5VcGRhdGVBcHBlYXJhbmNlIj4KKzwvaW1wbGVtZW50cz4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJXcmFwVG9nZXRoZXJTcGFuIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5zdHlsZS5QYXJhZ3JhcGhTdHlsZSI+Cis8L2ltcGxlbWVudHM+Cis8L2ludGVyZmFjZT4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQudGV4dC51dGlsIgorPgorPGNsYXNzIG5hbWU9IkxpbmtpZnkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxpbmtpZnkiCisgdHlwZT0iYW5kcm9pZC50ZXh0LnV0aWwuTGlua2lmeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRMaW5rcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYXNrIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkTGlua3MiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGV4dFZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1hc2siIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRMaW5rcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJhbmRyb2lkLndpZGdldC5UZXh0VmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0dGVybiIgdHlwZT0iamF2YS51dGlsLnJlZ2V4LlBhdHRlcm4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNjaGVtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRMaW5rcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJhbmRyb2lkLndpZGdldC5UZXh0VmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icCIgdHlwZT0iamF2YS51dGlsLnJlZ2V4LlBhdHRlcm4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNjaGVtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF0Y2hGaWx0ZXIiIHR5cGU9ImFuZHJvaWQudGV4dC51dGlsLkxpbmtpZnkuTWF0Y2hGaWx0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRyYW5zZm9ybUZpbHRlciIgdHlwZT0iYW5kcm9pZC50ZXh0LnV0aWwuTGlua2lmeS5UcmFuc2Zvcm1GaWx0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkTGlua3MiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0dGVybiIgdHlwZT0iamF2YS51dGlsLnJlZ2V4LlBhdHRlcm4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNjaGVtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRMaW5rcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJhbmRyb2lkLnRleHQuU3Bhbm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwIiB0eXBlPSJqYXZhLnV0aWwucmVnZXguUGF0dGVybiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NoZW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYXRjaEZpbHRlciIgdHlwZT0iYW5kcm9pZC50ZXh0LnV0aWwuTGlua2lmeS5NYXRjaEZpbHRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHJhbnNmb3JtRmlsdGVyIiB0eXBlPSJhbmRyb2lkLnRleHQudXRpbC5MaW5raWZ5LlRyYW5zZm9ybUZpbHRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkFMTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVNQUlMX0FERFJFU1NFUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUFQX0FERFJFU1NFUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEhPTkVfTlVNQkVSUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0VCX1VSTFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNQaG9uZU51bWJlck1hdGNoRmlsdGVyIgorIHR5cGU9ImFuZHJvaWQudGV4dC51dGlsLkxpbmtpZnkuTWF0Y2hGaWx0ZXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic1Bob25lTnVtYmVyVHJhbnNmb3JtRmlsdGVyIgorIHR5cGU9ImFuZHJvaWQudGV4dC51dGlsLkxpbmtpZnkuVHJhbnNmb3JtRmlsdGVyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNVcmxNYXRjaEZpbHRlciIKKyB0eXBlPSJhbmRyb2lkLnRleHQudXRpbC5MaW5raWZ5Lk1hdGNoRmlsdGVyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iTGlua2lmeS5NYXRjaEZpbHRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYWNjZXB0TWF0Y2giCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iTGlua2lmeS5UcmFuc2Zvcm1GaWx0ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InRyYW5zZm9ybVVybCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF0Y2giIHR5cGU9ImphdmEudXRpbC5yZWdleC5NYXRjaGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlJmYzgyMlRva2VuIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZmM4MjJUb2tlbiIKKyB0eXBlPSJhbmRyb2lkLnRleHQudXRpbC5SZmM4MjJUb2tlbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFkZHJlc3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbW1lbnQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRBZGRyZXNzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb21tZW50IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJxdW90ZUNvbW1lbnQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbW1lbnQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVvdGVOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InF1b3RlTmFtZUlmTmVjZXNzYXJ5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFkZHJlc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhZGRyZXNzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbW1lbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb21tZW50IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE5hbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJmYzgyMlRva2VuaXplciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLndpZGdldC5NdWx0aUF1dG9Db21wbGV0ZVRleHRWaWV3LlRva2VuaXplciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmZjODIyVG9rZW5pemVyIgorIHR5cGU9ImFuZHJvaWQudGV4dC51dGlsLlJmYzgyMlRva2VuaXplciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJmaW5kVG9rZW5FbmQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmRUb2tlblN0YXJ0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0ZXJtaW5hdGVUb2tlbiIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9rZW5pemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im91dCIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7YW5kcm9pZC50ZXh0LnV0aWwuUmZjODIyVG9rZW4mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRva2VuaXplIgorIHJldHVybj0iYW5kcm9pZC50ZXh0LnV0aWwuUmZjODIyVG9rZW5bXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iYW5kcm9pZC51dGlsIgorPgorPGNsYXNzIG5hbWU9IkFuZHJvaWRFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLkV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFuZHJvaWRFeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC51dGlsLkFuZHJvaWRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBbmRyb2lkRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQudXRpbC5BbmRyb2lkRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQW5kcm9pZEV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLnV0aWwuQW5kcm9pZEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuRXhjZXB0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQW5kcm9pZFJ1bnRpbWVFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBbmRyb2lkUnVudGltZUV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLnV0aWwuQW5kcm9pZFJ1bnRpbWVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBbmRyb2lkUnVudGltZUV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLnV0aWwuQW5kcm9pZFJ1bnRpbWVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBbmRyb2lkUnVudGltZUV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLnV0aWwuQW5kcm9pZFJ1bnRpbWVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLkV4Y2VwdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJBdHRyaWJ1dGVTZXQiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRBdHRyaWJ1dGVCb29sZWFuVmFsdWUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWVzcGFjZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cmlidXRlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZhdWx0VmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXR0cmlidXRlQm9vbGVhblZhbHVlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZhdWx0VmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXR0cmlidXRlQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdHRyaWJ1dGVGbG9hdFZhbHVlIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXNwYWNlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRyaWJ1dGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmF1bHRWYWx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXR0cmlidXRlRmxvYXRWYWx1ZSIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmF1bHRWYWx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXR0cmlidXRlSW50VmFsdWUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXNwYWNlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRyaWJ1dGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmF1bHRWYWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF0dHJpYnV0ZUludFZhbHVlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmF1bHRWYWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF0dHJpYnV0ZUxpc3RWYWx1ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lc3BhY2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJpYnV0ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3B0aW9ucyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZhdWx0VmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdHRyaWJ1dGVMaXN0VmFsdWUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3B0aW9ucyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZhdWx0VmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdHRyaWJ1dGVOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF0dHJpYnV0ZU5hbWVSZXNvdXJjZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF0dHJpYnV0ZVJlc291cmNlVmFsdWUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXNwYWNlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRyaWJ1dGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmF1bHRWYWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF0dHJpYnV0ZVJlc291cmNlVmFsdWUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXR0cmlidXRlVW5zaWduZWRJbnRWYWx1ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lc3BhY2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJpYnV0ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXR0cmlidXRlVW5zaWduZWRJbnRWYWx1ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZhdWx0VmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdHRyaWJ1dGVWYWx1ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdHRyaWJ1dGVWYWx1ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXNwYWNlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENsYXNzQXR0cmlidXRlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElkQXR0cmlidXRlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElkQXR0cmlidXRlUmVzb3VyY2VWYWx1ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZWZhdWx0VmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQb3NpdGlvbkRlc2NyaXB0aW9uIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0eWxlQXR0cmlidXRlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkJhc2U2NCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImRlY29kZSIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVjb2RlIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVjb2RlIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmNvZGUiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmNvZGUiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuY29kZVRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnB1dCIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuY29kZVRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnB1dCIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkxGIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOT19DTE9TRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5PX1BBRERJTkciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5PX1dSQVAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVSTF9TQUZFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQmFzZTY0SW5wdXRTdHJlYW0iCisgZXh0ZW5kcz0iamF2YS5pby5GaWx0ZXJJbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJhc2U2NElucHV0U3RyZWFtIgorIHR5cGU9ImFuZHJvaWQudXRpbC5CYXNlNjRJbnB1dFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQmFzZTY0T3V0cHV0U3RyZWFtIgorIGV4dGVuZHM9ImphdmEuaW8uRmlsdGVyT3V0cHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmFzZTY0T3V0cHV0U3RyZWFtIgorIHR5cGU9ImFuZHJvaWQudXRpbC5CYXNlNjRPdXRwdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29uZmlnIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbmZpZyIKKyB0eXBlPSJhbmRyb2lkLnV0aWwuQ29uZmlnIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iREVCVUciCisgdHlwZT0iYm9vbGVhbiIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMT0dEIgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMT0dWIgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJPRklMRSIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFTEVBU0UiCisgdHlwZT0iYm9vbGVhbiIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEZWJ1Z1V0aWxzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEZWJ1Z1V0aWxzIgorIHR5cGU9ImFuZHJvaWQudXRpbC5EZWJ1Z1V0aWxzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImlzT2JqZWN0U2VsZWN0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEaXNwbGF5TWV0cmljcyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGlzcGxheU1ldHJpY3MiCisgdHlwZT0iYW5kcm9pZC51dGlsLkRpc3BsYXlNZXRyaWNzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InNldFRvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibyIgdHlwZT0iYW5kcm9pZC51dGlsLkRpc3BsYXlNZXRyaWNzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRvRGVmYXVsdHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iREVOU0lUWV9ERUZBVUxUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFTlNJVFlfSElHSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI0MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERU5TSVRZX0xPVyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERU5TSVRZX01FRElVTSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkZW5zaXR5IgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGVuc2l0eURwaSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJoZWlnaHRQaXhlbHMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2NhbGVkRGVuc2l0eSIKKyB0eXBlPSJmbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IndpZHRoUGl4ZWxzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InhkcGkiCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ5ZHBpIgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkV2ZW50TG9nIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFdmVudExvZyIKKyB0eXBlPSJhbmRyb2lkLnV0aWwuRXZlbnRMb2ciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0VGFnQ29kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRhZ05hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRFdmVudHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFncyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHB1dCIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7YW5kcm9pZC51dGlsLkV2ZW50TG9nLkV2ZW50Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVFdmVudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlRXZlbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWciIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVFdmVudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdHIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVFdmVudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Li4uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkV2ZW50TG9nLkV2ZW50IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldERhdGEiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvY2Vzc0lkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRhZyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaHJlYWRJZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaW1lTmFub3MiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkV2ZW50TG9nVGFncyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFdmVudExvZ1RhZ3MiCisgdHlwZT0iYW5kcm9pZC51dGlsLkV2ZW50TG9nVGFncyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFdmVudExvZ1RhZ3MiCisgdHlwZT0iYW5kcm9pZC51dGlsLkV2ZW50TG9nVGFncyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0IiB0eXBlPSJqYXZhLmlvLkJ1ZmZlcmVkUmVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49ImFuZHJvaWQudXRpbC5FdmVudExvZ1RhZ3MuRGVzY3JpcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iYW5kcm9pZC51dGlsLkV2ZW50TG9nVGFncy5EZXNjcmlwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFnIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRXZlbnRMb2dUYWdzLkRlc2NyaXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGZpZWxkIG5hbWU9Im1OYW1lIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1UYWciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRmxvYXRNYXRoIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY2VpbCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvcyIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYW5nbGUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZsb29yIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2luIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbmdsZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3FydCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkxvZyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ciIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRyIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0YWNrVHJhY2VTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRyIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImkiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHIiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNMb2dnYWJsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxldmVsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJpbnRsbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcmlvcml0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0YWciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InYiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRyIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InciCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHIiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRyIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Ind0ZiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3dGYiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ciIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3dGYiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRyIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQVNTRVJUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUJVRyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVJST1IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklORk8iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlZFUkJPU0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldBUk4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJMb2dQcmludGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudXRpbC5QcmludGVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMb2dQcmludGVyIgorIHR5cGU9ImFuZHJvaWQudXRpbC5Mb2dQcmludGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJpb3JpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGFnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0icHJpbnRsbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTW9udGhEaXNwbGF5SGVscGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNb250aERpc3BsYXlIZWxwZXIiCisgdHlwZT0iYW5kcm9pZC51dGlsLk1vbnRoRGlzcGxheUhlbHBlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InllYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9udGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2Vla1N0YXJ0RGF5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1vbnRoRGlzcGxheUhlbHBlciIKKyB0eXBlPSJhbmRyb2lkLnV0aWwuTW9udGhEaXNwbGF5SGVscGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieWVhciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb250aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sdW1uT2YiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRheSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERheUF0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyb3ciIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGlnaXRzRm9yUm93IgorIHJldHVybj0iaW50W10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvdyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpcnN0RGF5T2ZNb250aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNb250aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROdW1iZXJPZkRheXNJbk1vbnRoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9mZnNldCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSb3dPZiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V2Vla1N0YXJ0RGF5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFllYXIiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNXaXRoaW5DdXJyZW50TW9udGgiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyb3ciIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV4dE1vbnRoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmV2aW91c01vbnRoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQYWlyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQYWlyIgorIHR5cGU9ImFuZHJvaWQudXRpbC5QYWlyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlyc3QiIHR5cGU9IkYiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlY29uZCIgdHlwZT0iUyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZSIKKyByZXR1cm49ImFuZHJvaWQudXRpbC5QYWlyJmx0O0EsIEImZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImEiIHR5cGU9IkEiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9IkIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJmaXJzdCIKKyB0eXBlPSJGIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzZWNvbmQiCisgdHlwZT0iUyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBhdHRlcm5zIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY29uY2F0R3JvdXBzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1hdGNoZXIiIHR5cGU9ImphdmEudXRpbC5yZWdleC5NYXRjaGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpZ2l0c0FuZFBsdXNPbmx5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1hdGNoZXIiIHR5cGU9ImphdmEudXRpbC5yZWdleC5NYXRjaGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iRE9NQUlOX05BTUUiCisgdHlwZT0iamF2YS51dGlsLnJlZ2V4LlBhdHRlcm4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRU1BSUxfQUREUkVTUyIKKyB0eXBlPSJqYXZhLnV0aWwucmVnZXguUGF0dGVybiIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHT09EX0lSSV9DSEFSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2EtekEtWjAtOVx1MDBhMC1cdWQ3ZmZcdWY5MDAtXHVmZGNmXHVmZGYwLVx1ZmZlZiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJUF9BRERSRVNTIgorIHR5cGU9ImphdmEudXRpbC5yZWdleC5QYXR0ZXJuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBIT05FIgorIHR5cGU9ImphdmEudXRpbC5yZWdleC5QYXR0ZXJuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPUF9MRVZFTF9ET01BSU4iCisgdHlwZT0iamF2YS51dGlsLnJlZ2V4LlBhdHRlcm4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9QX0xFVkVMX0RPTUFJTl9TVFIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7KChhZXJvfGFycGF8YXNpYXxhW2NkZWZnaWxtbm9xcnN0dXd4el0pfChiaXp8YlthYmRlZmdoaWptbm9yc3R2d3l6XSl8KGNhdHxjb218Y29vcHxjW2FjZGZnaGlrbG1ub3J1dnh5el0pfGRbZWprbW96XXwoZWR1fGVbY2VncnN0dV0pfGZbaWprbW9yXXwoZ292fGdbYWJkZWZnaGlsbW5wcXJzdHV3eV0pfGhba21ucnR1XXwoaW5mb3xpbnR8aVtkZWxtbm9xcnN0XSl8KGpvYnN8altlbW9wXSl8a1tlZ2hpbW5wcnd5el18bFthYmNpa3JzdHV2eV18KG1pbHxtb2JpfG11c2V1bXxtW2FjZGVnaGtsbW5vcHFyc3R1dnd4eXpdKXwobmFtZXxuZXR8blthY2VmZ2lsb3BydXpdKXwob3JnfG9tKXwocHJvfHBbYWVmZ2hrbG1ucnN0d3ldKXxxYXxyW2Vvc3V3XXxzW2FiY2RlZ2hpamtsbW5vcnR1dnl6XXwodGVsfHRyYXZlbHx0W2NkZmdoamtsbW5vcHJ0dnd6XSl8dVthZ2tzeXpdfHZbYWNlZ2ludV18d1tmc118KHhuXFwtXFwtMHp3bTU2ZHx4blxcLVxcLTExYjViczNhOWFqNmd8eG5cXC1cXC04MGFraGJ5a25qNGZ8eG5cXC1cXC05dDRiMTF5aTVhfHhuXFwtXFwtZGViYTBhZHx4blxcLVxcLWc2dzI1MWR8eG5cXC1cXC1oZ2JrNmFqN2Y1M2JiYXx4blxcLVxcLWhsY2o2YXlhOWVzYzdhfHhuXFwtXFwtanhhbHBkbHB8eG5cXC1cXC1rZ2JlY2h0dnx4blxcLVxcLXpja3phaCl8eVtldHVdfHpbYW13XSkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9QX0xFVkVMX0RPTUFJTl9TVFJfRk9SX1dFQl9VUkwiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7KD86KD86YWVyb3xhcnBhfGFzaWF8YVtjZGVmZ2lsbW5vcXJzdHV3eHpdKXwoPzpiaXp8YlthYmRlZmdoaWptbm9yc3R2d3l6XSl8KD86Y2F0fGNvbXxjb29wfGNbYWNkZmdoaWtsbW5vcnV2eHl6XSl8ZFtlamttb3pdfCg/OmVkdXxlW2NlZ3JzdHVdKXxmW2lqa21vcl18KD86Z292fGdbYWJkZWZnaGlsbW5wcXJzdHV3eV0pfGhba21ucnR1XXwoPzppbmZvfGludHxpW2RlbG1ub3Fyc3RdKXwoPzpqb2JzfGpbZW1vcF0pfGtbZWdoaW1ucHJ3eXpdfGxbYWJjaWtyc3R1dnldfCg/Om1pbHxtb2JpfG11c2V1bXxtW2FjZGVnaGtsbW5vcHFyc3R1dnd4eXpdKXwoPzpuYW1lfG5ldHxuW2FjZWZnaWxvcHJ1el0pfCg/Om9yZ3xvbSl8KD86cHJvfHBbYWVmZ2hrbG1ucnN0d3ldKXxxYXxyW2Vvc3V3XXxzW2FiY2RlZ2hpamtsbW5vcnR1dnl6XXwoPzp0ZWx8dHJhdmVsfHRbY2RmZ2hqa2xtbm9wcnR2d3pdKXx1W2Fna3N5el18dlthY2VnaW51XXx3W2ZzXXwoPzp4blxcLVxcLTB6d201NmR8eG5cXC1cXC0xMWI1YnMzYTlhajZnfHhuXFwtXFwtODBha2hieWtuajRmfHhuXFwtXFwtOXQ0YjExeWk1YXx4blxcLVxcLWRlYmEwYWR8eG5cXC1cXC1nNncyNTFkfHhuXFwtXFwtaGdiazZhajdmNTNiYmF8eG5cXC1cXC1obGNqNmF5YTllc2M3YXx4blxcLVxcLWp4YWxwZGxwfHhuXFwtXFwta2diZWNodHZ8eG5cXC1cXC16Y2t6YWgpfHlbZXR1XXx6W2Ftd10pKSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXRUJfVVJMIgorIHR5cGU9ImphdmEudXRpbC5yZWdleC5QYXR0ZXJuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQcmludFN0cmVhbVByaW50ZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC51dGlsLlByaW50ZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByaW50U3RyZWFtUHJpbnRlciIKKyB0eXBlPSJhbmRyb2lkLnV0aWwuUHJpbnRTdHJlYW1QcmludGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHciIHR5cGU9ImphdmEuaW8uUHJpbnRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJwcmludGxuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQcmludFdyaXRlclByaW50ZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC51dGlsLlByaW50ZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByaW50V3JpdGVyUHJpbnRlciIKKyB0eXBlPSJhbmRyb2lkLnV0aWwuUHJpbnRXcml0ZXJQcmludGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHciIHR5cGU9ImphdmEuaW8uUHJpbnRXcml0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJwcmludGxuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iUHJpbnRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InByaW50bG4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlNwYXJzZUFycmF5IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTcGFyc2VBcnJheSIKKyB0eXBlPSJhbmRyb2lkLnV0aWwuU3BhcnNlQXJyYXkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTcGFyc2VBcnJheSIKKyB0eXBlPSJhbmRyb2lkLnV0aWwuU3BhcnNlQXJyYXkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbml0aWFsQ2FwYWNpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVsZXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iRSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iRSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlSWZLZXlOb3RGb3VuZCIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbmRleE9mS2V5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbmRleE9mVmFsdWUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImtleUF0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRWYWx1ZUF0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZUF0IgorIHJldHVybj0iRSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTcGFyc2VCb29sZWFuQXJyYXkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNwYXJzZUJvb2xlYW5BcnJheSIKKyB0eXBlPSJhbmRyb2lkLnV0aWwuU3BhcnNlQm9vbGVhbkFycmF5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3BhcnNlQm9vbGVhbkFycmF5IgorIHR5cGU9ImFuZHJvaWQudXRpbC5TcGFyc2VCb29sZWFuQXJyYXkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbml0aWFsQ2FwYWNpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVsZXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlSWZLZXlOb3RGb3VuZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbmRleE9mS2V5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbmRleE9mVmFsdWUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImtleUF0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlQXQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNwYXJzZUludEFycmF5IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTcGFyc2VJbnRBcnJheSIKKyB0eXBlPSJhbmRyb2lkLnV0aWwuU3BhcnNlSW50QXJyYXkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTcGFyc2VJbnRBcnJheSIKKyB0eXBlPSJhbmRyb2lkLnV0aWwuU3BhcnNlSW50QXJyYXkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbml0aWFsQ2FwYWNpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWxldGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlSWZLZXlOb3RGb3VuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluZGV4T2ZLZXkiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluZGV4T2ZWYWx1ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJrZXlBdCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVBdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZUF0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlN0YXRlU2V0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdGF0ZVNldCIKKyB0eXBlPSJhbmRyb2lkLnV0aWwuU3RhdGVTZXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZHVtcCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdGVzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1dpbGRDYXJkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0ZVNldE9yU3BlYyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhdGVTZXRNYXRjaGVzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0ZVNwZWMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0ZVNldCIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhdGVTZXRNYXRjaGVzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0ZVNwZWMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRyaW1TdGF0ZVNldCIKKyByZXR1cm49ImludFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1NpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IldJTERfQ0FSRCIKKyB0eXBlPSJpbnRbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3RyaW5nQnVpbGRlclByaW50ZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC51dGlsLlByaW50ZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN0cmluZ0J1aWxkZXJQcmludGVyIgorIHR5cGU9ImFuZHJvaWQudXRpbC5TdHJpbmdCdWlsZGVyUHJpbnRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1aWxkZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdCdWlsZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0icHJpbnRsbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVGltZUZvcm1hdEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUaW1lVXRpbHMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRpbWVVdGlscyIKKyB0eXBlPSJhbmRyb2lkLnV0aWwuVGltZVV0aWxzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldFRpbWVab25lIgorIHJldHVybj0iamF2YS51dGlsLlRpbWVab25lIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkc3QiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoZW4iIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50cnkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGltZVpvbmVEYXRhYmFzZVZlcnNpb24iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVGltaW5nTG9nZ2VyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUaW1pbmdMb2dnZXIiCisgdHlwZT0iYW5kcm9pZC51dGlsLlRpbWluZ0xvZ2dlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGFiZWwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRTcGxpdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNwbGl0TGFiZWwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHVtcFRvTG9nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGFiZWwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlR5cGVkVmFsdWUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlR5cGVkVmFsdWUiCisgdHlwZT0iYW5kcm9pZC51dGlsLlR5cGVkVmFsdWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYXBwbHlEaW1lbnNpb24iCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWV0cmljcyIgdHlwZT0iYW5kcm9pZC51dGlsLkRpc3BsYXlNZXRyaWNzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvZXJjZVRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvZXJjZVRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbXBsZXhUb0RpbWVuc2lvbiIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWV0cmljcyIgdHlwZT0iYW5kcm9pZC51dGlsLkRpc3BsYXlNZXRyaWNzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbXBsZXhUb0RpbWVuc2lvbk5vaXN5IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXRyaWNzIiB0eXBlPSJhbmRyb2lkLnV0aWwuRGlzcGxheU1ldHJpY3MiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcGxleFRvRGltZW5zaW9uUGl4ZWxPZmZzZXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXRyaWNzIiB0eXBlPSJhbmRyb2lkLnV0aWwuRGlzcGxheU1ldHJpY3MiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcGxleFRvRGltZW5zaW9uUGl4ZWxTaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWV0cmljcyIgdHlwZT0iYW5kcm9pZC51dGlsLkRpc3BsYXlNZXRyaWNzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbXBsZXhUb0Zsb2F0IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29tcGxleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbXBsZXhUb0ZyYWN0aW9uIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiYXNlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGJhc2UiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERpbWVuc2lvbiIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXRyaWNzIiB0eXBlPSJhbmRyb2lkLnV0aWwuRGlzcGxheU1ldHJpY3MiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmxvYXQiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZyYWN0aW9uIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJhc2UiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYmFzZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VG8iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdGhlciIgdHlwZT0iYW5kcm9pZC51dGlsLlR5cGVkVmFsdWUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDT01QTEVYX01BTlRJU1NBX01BU0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjc3NzIxNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT01QTEVYX01BTlRJU1NBX1NISUZUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT01QTEVYX1JBRElYXzBwMjMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTVBMRVhfUkFESVhfMTZwNyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09NUExFWF9SQURJWF8yM3AwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT01QTEVYX1JBRElYXzhwMTUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTVBMRVhfUkFESVhfTUFTSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09NUExFWF9SQURJWF9TSElGVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09NUExFWF9VTklUX0RJUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09NUExFWF9VTklUX0ZSQUNUSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT01QTEVYX1VOSVRfRlJBQ1RJT05fUEFSRU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT01QTEVYX1VOSVRfSU4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTVBMRVhfVU5JVF9NQVNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09NUExFWF9VTklUX01NIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT01QTEVYX1VOSVRfUFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTVBMRVhfVU5JVF9QWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09NUExFWF9VTklUX1NISUZUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT01QTEVYX1VOSVRfU1AiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFTlNJVFlfREVGQVVMVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVOU0lUWV9OT05FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjU1MzUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9BVFRSSUJVVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfRElNRU5TSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX0ZJUlNUX0NPTE9SX0lOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfRklSU1RfSU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9GTE9BVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9GUkFDVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9JTlRfQk9PTEVBTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfSU5UX0NPTE9SX0FSR0I0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9JTlRfQ09MT1JfQVJHQjgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX0lOVF9DT0xPUl9SR0I0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9JTlRfQ09MT1JfUkdCOCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfSU5UX0RFQyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfSU5UX0hFWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfTEFTVF9DT0xPUl9JTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX0xBU1RfSU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9OVUxMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX1JFRkVSRU5DRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9TVFJJTkciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImFzc2V0Q29va2llIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNoYW5naW5nQ29uZmlndXJhdGlvbnMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGF0YSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkZW5zaXR5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InJlc291cmNlSWQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic3RyaW5nIgorIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0eXBlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJYbWwiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlhtbCIKKyB0eXBlPSJhbmRyb2lkLnV0aWwuWG1sIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFzQXR0cmlidXRlU2V0IgorIHJldHVybj0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJzZXIiIHR5cGU9Im9yZy54bWxwdWxsLnYxLlhtbFB1bGxQYXJzZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmluZEVuY29kaW5nQnlOYW1lIgorIHJldHVybj0iYW5kcm9pZC51dGlsLlhtbC5FbmNvZGluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmNvZGluZ05hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdQdWxsUGFyc2VyIgorIHJldHVybj0ib3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1NlcmlhbGl6ZXIiCisgcmV0dXJuPSJvcmcueG1scHVsbC52MS5YbWxTZXJpYWxpemVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InhtbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGVudEhhbmRsZXIiIHR5cGU9Im9yZy54bWwuc2F4LkNvbnRlbnRIYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9ImphdmEuaW8uUmVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZW50SGFuZGxlciIgdHlwZT0ib3JnLnhtbC5zYXguQ29udGVudEhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuY29kaW5nIiB0eXBlPSJhbmRyb2lkLnV0aWwuWG1sLkVuY29kaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZW50SGFuZGxlciIgdHlwZT0ib3JnLnhtbC5zYXguQ29udGVudEhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkZFQVRVUkVfUkVMQVhFRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iWG1sLkVuY29kaW5nIgorIGV4dGVuZHM9ImphdmEubGFuZy5FbnVtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iYW5kcm9pZC51dGlsLlhtbC5FbmNvZGluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlcyIKKyByZXR1cm49ImFuZHJvaWQudXRpbC5YbWwuRW5jb2RpbmdbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJhbmRyb2lkLnZpZXciCis+Cis8Y2xhc3MgbmFtZT0iQWJzU2F2ZWRTdGF0ZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzU2F2ZWRTdGF0ZSIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuQWJzU2F2ZWRTdGF0ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN1cGVyU3RhdGUiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzU2F2ZWRTdGF0ZSIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuQWJzU2F2ZWRTdGF0ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1cGVyU3RhdGUiCisgcmV0dXJuPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVNUFRZX1NUQVRFIgorIHR5cGU9ImFuZHJvaWQudmlldy5BYnNTYXZlZFN0YXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ29udGV4dE1lbnUiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC52aWV3Lk1lbnUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJjbGVhckhlYWRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRIZWFkZXJJY29uIgorIHJldHVybj0iYW5kcm9pZC52aWV3LkNvbnRleHRNZW51IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imljb25SZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRIZWFkZXJJY29uIgorIHJldHVybj0iYW5kcm9pZC52aWV3LkNvbnRleHRNZW51IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imljb24iIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SGVhZGVyVGl0bGUiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuQ29udGV4dE1lbnUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGl0bGVSZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRIZWFkZXJUaXRsZSIKKyByZXR1cm49ImFuZHJvaWQudmlldy5Db250ZXh0TWVudSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aXRsZSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRIZWFkZXJWaWV3IgorIHJldHVybj0iYW5kcm9pZC52aWV3LkNvbnRleHRNZW51IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iQ29udGV4dE1lbnUuQ29udGV4dE1lbnVJbmZvIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ29udGV4dFRoZW1lV3JhcHBlciIKKyBleHRlbmRzPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dFdyYXBwZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb250ZXh0VGhlbWVXcmFwcGVyIgorIHR5cGU9ImFuZHJvaWQudmlldy5Db250ZXh0VGhlbWVXcmFwcGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29udGV4dFRoZW1lV3JhcHBlciIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuQ29udGV4dFRoZW1lV3JhcHBlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJhc2UiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVtZXJlcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ib25BcHBseVRoZW1lUmVzb3VyY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVtZSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMuVGhlbWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc2lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpcnN0IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRpc3BsYXkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXREaXNwbGF5SWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SGVpZ2h0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWV0cmljcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dE1ldHJpY3MiIHR5cGU9ImFuZHJvaWQudXRpbC5EaXNwbGF5TWV0cmljcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPcmllbnRhdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGl4ZWxGb3JtYXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVmcmVzaFJhdGUiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSb3RhdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRXaWR0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iREVGQVVMVF9ESVNQTEFZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRm9jdXNGaW5kZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJmaW5kTmVhcmVzdFRvdWNoYWJsZSIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyb290IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlyZWN0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbHRhcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmluZE5leHRGb2N1cyIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvb3QiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZvY3VzZWQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaXJlY3Rpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaW5kTmV4dEZvY3VzRnJvbVJlY3QiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icm9vdCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9jdXNlZFJlY3QiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlyZWN0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuRm9jdXNGaW5kZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJHZXN0dXJlRGV0ZWN0b3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikdlc3R1cmVEZXRlY3RvciIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuR2VzdHVyZURldGVjdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC52aWV3Lkdlc3R1cmVEZXRlY3Rvci5Pbkdlc3R1cmVMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlciIgdHlwZT0iYW5kcm9pZC5vcy5IYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJHZXN0dXJlRGV0ZWN0b3IiCisgdHlwZT0iYW5kcm9pZC52aWV3Lkdlc3R1cmVEZXRlY3RvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQudmlldy5HZXN0dXJlRGV0ZWN0b3IuT25HZXN0dXJlTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikdlc3R1cmVEZXRlY3RvciIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuR2VzdHVyZURldGVjdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLnZpZXcuR2VzdHVyZURldGVjdG9yLk9uR2VzdHVyZUxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJHZXN0dXJlRGV0ZWN0b3IiCisgdHlwZT0iYW5kcm9pZC52aWV3Lkdlc3R1cmVEZXRlY3RvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC52aWV3Lkdlc3R1cmVEZXRlY3Rvci5Pbkdlc3R1cmVMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlciIgdHlwZT0iYW5kcm9pZC5vcy5IYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJHZXN0dXJlRGV0ZWN0b3IiCisgdHlwZT0iYW5kcm9pZC52aWV3Lkdlc3R1cmVEZXRlY3RvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC52aWV3Lkdlc3R1cmVEZXRlY3Rvci5Pbkdlc3R1cmVMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlciIgdHlwZT0iYW5kcm9pZC5vcy5IYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpZ25vcmVNdWx0aXRvdWNoIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iaXNMb25ncHJlc3NFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblRvdWNoRXZlbnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJldiIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldElzTG9uZ3ByZXNzRW5hYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlzTG9uZ3ByZXNzRW5hYmxlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPbkRvdWJsZVRhcExpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib25Eb3VibGVUYXBMaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC52aWV3Lkdlc3R1cmVEZXRlY3Rvci5PbkRvdWJsZVRhcExpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJHZXN0dXJlRGV0ZWN0b3IuT25Eb3VibGVUYXBMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25Eb3VibGVUYXAiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImUiIHR5cGU9ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkRvdWJsZVRhcEV2ZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TaW5nbGVUYXBDb25maXJtZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImUiIHR5cGU9ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9Ikdlc3R1cmVEZXRlY3Rvci5Pbkdlc3R1cmVMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25Eb3duIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25GbGluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZTEiIHR5cGU9ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZTIiIHR5cGU9ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmVsb2NpdHlYIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmVsb2NpdHlZIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkxvbmdQcmVzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZSIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU2Nyb2xsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlMSIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlMiIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaXN0YW5jZVgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaXN0YW5jZVkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU2hvd1ByZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TaW5nbGVUYXBVcCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZSIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJHZXN0dXJlRGV0ZWN0b3IuU2ltcGxlT25HZXN0dXJlTGlzdGVuZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnZpZXcuR2VzdHVyZURldGVjdG9yLk9uRG91YmxlVGFwTGlzdGVuZXIiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC52aWV3Lkdlc3R1cmVEZXRlY3Rvci5Pbkdlc3R1cmVMaXN0ZW5lciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iR2VzdHVyZURldGVjdG9yLlNpbXBsZU9uR2VzdHVyZUxpc3RlbmVyIgorIHR5cGU9ImFuZHJvaWQudmlldy5HZXN0dXJlRGV0ZWN0b3IuU2ltcGxlT25HZXN0dXJlTGlzdGVuZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ib25Eb3VibGVUYXAiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Eb3VibGVUYXBFdmVudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImUiIHR5cGU9ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkRvd24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25GbGluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImUxIiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImUyIiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZlbG9jaXR5WCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZlbG9jaXR5WSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Mb25nUHJlc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TY3JvbGwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlMSIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlMiIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaXN0YW5jZVgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaXN0YW5jZVkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU2hvd1ByZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZSIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU2luZ2xlVGFwQ29uZmlybWVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZSIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU2luZ2xlVGFwVXAiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iR3Jhdml0eSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iR3Jhdml0eSIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuR3Jhdml0eSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhcHBseSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3Jhdml0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGFpbmVyIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im91dFJlY3QiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBseSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3Jhdml0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGFpbmVyIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InhBZGoiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieUFkaiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXRSZWN0IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXBwbHlEaXNwbGF5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncmF2aXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRpc3BsYXkiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5vdXRPYmoiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0hvcml6b250YWwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImdyYXZpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1ZlcnRpY2FsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncmF2aXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBWElTX0NMSVAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFYSVNfUFVMTF9BRlRFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVhJU19QVUxMX0JFRk9SRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVhJU19TUEVDSUZJRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFYSVNfWF9TSElGVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVhJU19ZX1NISUZUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJCT1RUT00iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDRU5URVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDRU5URVJfSE9SSVpPTlRBTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0VOVEVSX1ZFUlRJQ0FMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0xJUF9IT1JJWk9OVEFMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDTElQX1ZFUlRJQ0FMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRJU1BMQVlfQ0xJUF9IT1JJWk9OVEFMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY3NzcyMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRElTUExBWV9DTElQX1ZFUlRJQ0FMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjY4NDM1NDU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZJTEwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRklMTF9IT1JJWk9OVEFMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGSUxMX1ZFUlRJQ0FMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhPUklaT05UQUxfR1JBVklUWV9NQVNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMRUZUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOT19HUkFWSVRZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSSUdIVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVE9QIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVkVSVElDQUxfR1JBVklUWV9NQVNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJIYXB0aWNGZWVkYmFja0NvbnN0YW50cyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iRkxBR19JR05PUkVfR0xPQkFMX1NFVFRJTkciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfSUdOT1JFX1ZJRVdfU0VUVElORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQk9BUkRfVEFQIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMT05HX1BSRVNTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJWSVJUVUFMX0tFWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkluZmxhdGVFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbmZsYXRlRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQudmlldy5JbmZsYXRlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW5mbGF0ZUV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuSW5mbGF0ZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRocm93YWJsZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW5mbGF0ZUV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuSW5mbGF0ZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkluZmxhdGVFeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC52aWV3LkluZmxhdGVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aHJvd2FibGUiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJLZXlDaGFyYWN0ZXJNYXAiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJkZXZpY2VIYXNLZXkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZXZpY2VIYXNLZXlzIgorIHJldHVybj0iYm9vbGVhbltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUNvZGVzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWV0YSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlYWRDaGFyIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY2VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGlzcGxheUxhYmVsIgorIHJldHVybj0iY2hhciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEV2ZW50cyIKKyByZXR1cm49ImFuZHJvaWQudmlldy5LZXlFdmVudFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGFycyIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEtleURhdGEiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdHMiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlDaGFyYWN0ZXJNYXAuS2V5RGF0YSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRLZXlib2FyZFR5cGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF0Y2giCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYXJzIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF0Y2giCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYXJzIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGlmaWVycyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE51bWJlciIKKyByZXR1cm49ImNoYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1ByaW50aW5nS2V5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvYWQiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuS2V5Q2hhcmFjdGVyTWFwIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleWJvYXJkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBTFBIQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQlVJTFRfSU5fS0VZQk9BUkQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTUJJTklOR19BQ0NFTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMjE0NzQ4MzY0OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT01CSU5JTkdfQUNDRU5UX01BU0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMTQ3NDgzNjQ3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhFWF9JTlBVVCIKKyB0eXBlPSJjaGFyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2MTE4NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOVU1FUklDIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQSUNLRVJfRElBTE9HX0lOUFVUIgorIHR5cGU9ImNoYXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjYxMTg1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBSRURJQ1RJVkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJLZXlDaGFyYWN0ZXJNYXAuS2V5RGF0YSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJLZXlDaGFyYWN0ZXJNYXAuS2V5RGF0YSIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5Q2hhcmFjdGVyTWFwLktleURhdGEiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxmaWVsZCBuYW1lPSJNRVRBX0xFTkdUSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGlzcGxheUxhYmVsIgorIHR5cGU9ImNoYXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJtZXRhIgorIHR5cGU9ImNoYXJbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im51bWJlciIKKyB0eXBlPSJjaGFyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IktleUV2ZW50IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5RXZlbnQiCisgdHlwZT0iYW5kcm9pZC52aWV3LktleUV2ZW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5RXZlbnQiCisgdHlwZT0iYW5kcm9pZC52aWV3LktleUV2ZW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZG93blRpbWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50VGltZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVwZWF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IktleUV2ZW50IgorIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRvd25UaW1lIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudFRpbWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcGVhdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXRhU3RhdGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5RXZlbnQiCisgdHlwZT0iYW5kcm9pZC52aWV3LktleUV2ZW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZG93blRpbWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50VGltZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVwZWF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1ldGFTdGF0ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZXZpY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NhbmNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5RXZlbnQiCisgdHlwZT0iYW5kcm9pZC52aWV3LktleUV2ZW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZG93blRpbWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50VGltZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVwZWF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1ldGFTdGF0ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZXZpY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NhbmNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5RXZlbnQiCisgdHlwZT0iYW5kcm9pZC52aWV3LktleUV2ZW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhcmFjdGVycyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV2aWNlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IktleUV2ZW50IgorIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWdFdmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LktleUV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJLZXlFdmVudCIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWdFdmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LktleUV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudFRpbWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1JlcGVhdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2hhbmdlQWN0aW9uIgorIHJldHVybj0iYW5kcm9pZC52aWV3LktleUV2ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoYW5nZUZsYWdzIgorIHJldHVybj0iYW5kcm9pZC52aWV3LktleUV2ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hhbmdlVGltZVJlcGVhdCIKKyByZXR1cm49ImFuZHJvaWQudmlldy5LZXlFdmVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LktleUV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudFRpbWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1JlcGVhdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoYW5nZVRpbWVSZXBlYXQiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnRUaW1lIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdSZXBlYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3RmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpc3BhdGNoIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlY2VpdmVyIiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQuQ2FsbGJhY2siPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzcGF0Y2giCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlY2VpdmVyIiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQuQ2FsbGJhY2siPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlIiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQuRGlzcGF0Y2hlclN0YXRlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWN0aW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hhcmFjdGVycyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWFkQ2hhciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY2NlbnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERldmljZUlkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGlzcGxheUxhYmVsIgorIHJldHVybj0iY2hhciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREb3duVGltZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFdmVudFRpbWUiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmxhZ3MiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRLZXlDb2RlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0S2V5RGF0YSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdHMiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlDaGFyYWN0ZXJNYXAuS2V5RGF0YSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYXRjaCIKKyByZXR1cm49ImNoYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYXJzIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF0Y2giCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGFycyIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RpZmllcnMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYXhLZXlDb2RlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWV0YVN0YXRlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TnVtYmVyIgorIHJldHVybj0iY2hhciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXBlYXRDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNjYW5Db2RlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VW5pY29kZUNoYXIiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VW5pY29kZUNoYXIiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1ldGEiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0FsdFByZXNzZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNDYW5jZWxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0xvbmdQcmVzcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc01vZGlmaWVyS2V5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNQcmludGluZ0tleSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTaGlmdFByZXNzZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTeW1QcmVzc2VkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU3lzdGVtIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzVHJhY2tpbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRUcmFja2luZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkFDVElPTl9ET1dOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fTVVMVElQTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9VUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX0NBTkNFTEVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19DQU5DRUxFRF9MT05HX1BSRVNTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfRURJVE9SX0FDVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfRlJPTV9TWVNURU0iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfS0VFUF9UT1VDSF9NT0RFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX0xPTkdfUFJFU1MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19TT0ZUX0tFWUJPQVJEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX1RSQUNLSU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfVklSVFVBTF9IQVJEX0tFWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjY0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfV09LRV9IRVJFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFXzAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfMSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV8yIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFXzMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFXzQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFXzUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFXzYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFXzciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFXzgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFXzkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX0EiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX0FMVF9MRUZUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9BTFRfUklHSFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX0FQT1NUUk9QSEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX0FUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9CIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9CQUNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX0JBQ0tTTEFTSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjczIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfQyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfQ0FMTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9DQU1FUkEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX0NMRUFSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9DT01NQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjU1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfREVMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9EUEFEX0NFTlRFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfRFBBRF9ET1dOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9EUEFEX0xFRlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX0RQQURfUklHSFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX0RQQURfVVAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX0VORENBTEwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfRU5URVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX0VOVkVMT1BFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9FUVVBTFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX0VYUExPUkVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9GIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9GT0NVUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfRyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfR1JBVkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX0giCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX0hFQURTRVRIT09LIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9IT01FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX0kiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX0oiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX0wiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX0xFRlRfQlJBQ0tFVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjcxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfTSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfTUVESUFfRkFTVF9GT1JXQVJEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9NRURJQV9ORVhUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9NRURJQV9QTEFZX1BBVVNFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9NRURJQV9QUkVWSU9VUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijg4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfTUVESUFfUkVXSU5EIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9NRURJQV9TVE9QIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9NRU5VIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9NSU5VUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjY5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfTVVURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjkxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfTk9USUZJQ0FUSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9OVU0iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX08iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX1AiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX1BFUklPRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfUExVUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfUE9VTkQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX1BPV0VSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9RIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9SIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9SSUdIVF9CUkFDS0VUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9TIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9TRUFSQ0giCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX1NFTUlDT0xPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfU0hJRlRfTEVGVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjU5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfU0hJRlRfUklHSFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX1NMQVNIIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9TT0ZUX0xFRlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfU09GVF9SSUdIVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9TUEFDRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjYyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfU1RBUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfU1lNIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9UQUIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX1UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX1VOS05PV04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfViIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfVk9MVU1FX0RPV04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX1ZPTFVNRV9VUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfVyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfWiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjU0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1BWF9LRVlDT0RFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNRVRBX0FMVF9MRUZUX09OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUVUQV9BTFRfT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1FVEFfQUxUX1JJR0hUX09OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUVUQV9TSElGVF9MRUZUX09OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUVUQV9TSElGVF9PTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUVUQV9TSElGVF9SSUdIVF9PTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNRVRBX1NZTV9PTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJLZXlFdmVudC5DYWxsYmFjayIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25LZXlEb3duIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25LZXlMb25nUHJlc3MiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbktleU11bHRpcGxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25LZXlVcCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LktleUV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJLZXlFdmVudC5EaXNwYXRjaGVyU3RhdGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5RXZlbnQuRGlzcGF0Y2hlclN0YXRlIgorIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudC5EaXNwYXRjaGVyU3RhdGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iaGFuZGxlVXBFdmVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNUcmFja2luZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGVyZm9ybWVkTG9uZ1ByZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRUcmFja2luZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJMYXlvdXRJbmZsYXRlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMYXlvdXRJbmZsYXRlciIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuTGF5b3V0SW5mbGF0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGF5b3V0SW5mbGF0ZXIiCisgdHlwZT0iYW5kcm9pZC52aWV3LkxheW91dEluZmxhdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZ2luYWwiIHR5cGU9ImFuZHJvaWQudmlldy5MYXlvdXRJbmZsYXRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3Q29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9uZUluQ29udGV4dCIKKyByZXR1cm49ImFuZHJvaWQudmlldy5MYXlvdXRJbmZsYXRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdDb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVWaWV3IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlZml4IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkNsYXNzTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkluZmxhdGVFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQudmlldy5JbmZsYXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZyb20iCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuTGF5b3V0SW5mbGF0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGV4dCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db250ZXh0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZhY3RvcnkiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuTGF5b3V0SW5mbGF0ZXIuRmFjdG9yeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpbHRlciIKKyByZXR1cm49ImFuZHJvaWQudmlldy5MYXlvdXRJbmZsYXRlci5GaWx0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5mbGF0ZSIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvdXJjZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyb290IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluZmxhdGUiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyc2VyIiB0eXBlPSJvcmcueG1scHVsbC52MS5YbWxQdWxsUGFyc2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyb290IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluZmxhdGUiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzb3VyY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icm9vdCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0YWNoVG9Sb290IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluZmxhdGUiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyc2VyIiB0eXBlPSJvcmcueG1scHVsbC52MS5YbWxQdWxsUGFyc2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyb290IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRhY2hUb1Jvb3QiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DcmVhdGVWaWV3IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGFzc05vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGYWN0b3J5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFjdG9yeSIgdHlwZT0iYW5kcm9pZC52aWV3LkxheW91dEluZmxhdGVyLkZhY3RvcnkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RmlsdGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsdGVyIiB0eXBlPSJhbmRyb2lkLnZpZXcuTGF5b3V0SW5mbGF0ZXIuRmlsdGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJMYXlvdXRJbmZsYXRlci5GYWN0b3J5IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvbkNyZWF0ZVZpZXciCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJMYXlvdXRJbmZsYXRlci5GaWx0ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uTG9hZENsYXNzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbGF6eiIgdHlwZT0iamF2YS5sYW5nLkNsYXNzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iTWVudSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImFkZCIKKyByZXR1cm49ImFuZHJvaWQudmlldy5NZW51SXRlbSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aXRsZSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGQiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuTWVudUl0ZW0iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGl0bGVSZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGQiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuTWVudUl0ZW0iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpdGVtSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JkZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGl0bGUiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkIgorIHJldHVybj0iYW5kcm9pZC52aWV3Lk1lbnVJdGVtIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXRlbUlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9yZGVyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRpdGxlUmVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkSW50ZW50T3B0aW9ucyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cElkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Iml0ZW1JZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcmRlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsZXIiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzcGVjaWZpY3MiIHR5cGU9ImFuZHJvaWQuY29udGVudC5JbnRlbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXRTcGVjaWZpY0l0ZW1zIiB0eXBlPSJhbmRyb2lkLnZpZXcuTWVudUl0ZW1bXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRTdWJNZW51IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlN1Yk1lbnUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGl0bGUiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkU3ViTWVudSIKKyByZXR1cm49ImFuZHJvaWQudmlldy5TdWJNZW51IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpdGxlUmVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkU3ViTWVudSIKKyByZXR1cm49ImFuZHJvaWQudmlldy5TdWJNZW51IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXRlbUlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9yZGVyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRpdGxlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZFN1Yk1lbnUiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuU3ViTWVudSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cElkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Iml0ZW1JZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcmRlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aXRsZVJlcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb3NlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmRJdGVtIgorIHJldHVybj0iYW5kcm9pZC52aWV3Lk1lbnVJdGVtIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SXRlbSIKKyByZXR1cm49ImFuZHJvaWQudmlldy5NZW51SXRlbSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc1Zpc2libGVJdGVtcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1Nob3J0Y3V0S2V5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGVyZm9ybUlkZW50aWZpZXJBY3Rpb24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGVyZm9ybVNob3J0Y3V0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlR3JvdXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVJdGVtIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEdyb3VwQ2hlY2thYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGVja2FibGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4Y2x1c2l2ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRHcm91cEVuYWJsZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0R3JvdXBWaXNpYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2aXNpYmxlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFF3ZXJ0eU1vZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlzUXdlcnR5IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNBVEVHT1JZX0FMVEVSTkFUSVZFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjYyMTQ0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNBVEVHT1JZX0NPTlRBSU5FUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjY1NTM2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNBVEVHT1JZX1NFQ09OREFSWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE5NjYwOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDQVRFR09SWV9TWVNURU0iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMzEwNzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRklSU1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfQUxXQVlTX1BFUkZPUk1fQ0xPU0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfQVBQRU5EX1RPX0dST1VQIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX1BFUkZPUk1fTk9fQ0xPU0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5PTkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iTWVudUluZmxhdGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNZW51SW5mbGF0ZXIiCisgdHlwZT0iYW5kcm9pZC52aWV3Lk1lbnVJbmZsYXRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iaW5mbGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lbnVSZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVudSIgdHlwZT0iYW5kcm9pZC52aWV3Lk1lbnUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ik1lbnVJdGVtIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0QWxwaGFiZXRpY1Nob3J0Y3V0IgorIHJldHVybj0iY2hhciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdyb3VwSWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJY29uIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEludGVudCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5JbnRlbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJdGVtSWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNZW51SW5mbyIKKyByZXR1cm49ImFuZHJvaWQudmlldy5Db250ZXh0TWVudS5Db250ZXh0TWVudUluZm8iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROdW1lcmljU2hvcnRjdXQiCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T3JkZXIiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdWJNZW51IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlN1Yk1lbnUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaXRsZSIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaXRsZUNvbmRlbnNlZCIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNTdWJNZW51IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ2hlY2thYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ2hlY2tlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0VuYWJsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNWaXNpYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFscGhhYmV0aWNTaG9ydGN1dCIKKyByZXR1cm49ImFuZHJvaWQudmlldy5NZW51SXRlbSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbHBoYUNoYXIiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2hlY2thYmxlIgorIHJldHVybj0iYW5kcm9pZC52aWV3Lk1lbnVJdGVtIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoZWNrYWJsZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDaGVja2VkIgorIHJldHVybj0iYW5kcm9pZC52aWV3Lk1lbnVJdGVtIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoZWNrZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RW5hYmxlZCIKKyByZXR1cm49ImFuZHJvaWQudmlldy5NZW51SXRlbSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmFibGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEljb24iCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuTWVudUl0ZW0iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWNvbiIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJY29uIgorIHJldHVybj0iYW5kcm9pZC52aWV3Lk1lbnVJdGVtIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imljb25SZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJbnRlbnQiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuTWVudUl0ZW0iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE51bWVyaWNTaG9ydGN1dCIKKyByZXR1cm49ImFuZHJvaWQudmlldy5NZW51SXRlbSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJudW1lcmljQ2hhciIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPbk1lbnVJdGVtQ2xpY2tMaXN0ZW5lciIKKyByZXR1cm49ImFuZHJvaWQudmlldy5NZW51SXRlbSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZW51SXRlbUNsaWNrTGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQudmlldy5NZW51SXRlbS5Pbk1lbnVJdGVtQ2xpY2tMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTaG9ydGN1dCIKKyByZXR1cm49ImFuZHJvaWQudmlldy5NZW51SXRlbSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJudW1lcmljQ2hhciIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxwaGFDaGFyIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRpdGxlIgorIHJldHVybj0iYW5kcm9pZC52aWV3Lk1lbnVJdGVtIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpdGxlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRpdGxlIgorIHJldHVybj0iYW5kcm9pZC52aWV3Lk1lbnVJdGVtIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpdGxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGl0bGVDb25kZW5zZWQiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuTWVudUl0ZW0iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGl0bGUiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VmlzaWJsZSIKKyByZXR1cm49ImFuZHJvaWQudmlldy5NZW51SXRlbSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aXNpYmxlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iTWVudUl0ZW0uT25NZW51SXRlbUNsaWNrTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uTWVudUl0ZW1DbGljayIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXRlbSIgdHlwZT0iYW5kcm9pZC52aWV3Lk1lbnVJdGVtIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJNb3Rpb25FdmVudCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImFkZEJhdGNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJldmVudFRpbWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlc3N1cmUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWV0YVN0YXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaW5kUG9pbnRlckluZGV4IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvaW50ZXJJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFjdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFjdGlvbkluZGV4IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWN0aW9uTWFza2VkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGV2aWNlSWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREb3duVGltZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFZGdlRmxhZ3MiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFdmVudFRpbWUiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SGlzdG9yaWNhbEV2ZW50VGltZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SGlzdG9yaWNhbFByZXNzdXJlIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SGlzdG9yaWNhbFByZXNzdXJlIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9pbnRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhpc3RvcmljYWxTaXplIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SGlzdG9yaWNhbFNpemUiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb2ludGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SGlzdG9yaWNhbFgiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIaXN0b3JpY2FsWCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvaW50ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIaXN0b3JpY2FsWSIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhpc3RvcmljYWxZIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9pbnRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhpc3RvcnlTaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWV0YVN0YXRlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UG9pbnRlckNvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UG9pbnRlcklkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvaW50ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByZXNzdXJlIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcmVzc3VyZSIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvaW50ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJhd1giCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJhd1kiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNpemUiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNpemUiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb2ludGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRYIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRYIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9pbnRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0WFByZWNpc2lvbiIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0WSIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0WSIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvaW50ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFlQcmVjaXNpb24iCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9idGFpbiIKKyByZXR1cm49ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkb3duVGltZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnRUaW1lIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcmVzc3VyZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXRhU3RhdGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieFByZWNpc2lvbiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InlQcmVjaXNpb24iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZXZpY2VJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlZGdlRmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvYnRhaW4iCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZG93blRpbWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50VGltZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvaW50ZXJzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlc3N1cmUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWV0YVN0YXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InhQcmVjaXNpb24iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5UHJlY2lzaW9uIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV2aWNlSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZWRnZUZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib2J0YWluIgorIHJldHVybj0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRvd25UaW1lIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudFRpbWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1ldGFTdGF0ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9idGFpbiIKKyByZXR1cm49ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvIiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib2J0YWluTm9IaXN0b3J5IgorIHJldHVybj0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im8iIHR5cGU9ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvZmZzZXRMb2NhdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVsdGFYIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVsdGFZIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWN5Y2xlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBY3Rpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVkZ2VGbGFncyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMb2NhdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0NBTkNFTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0RPV04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9NQVNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjU1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9NT1ZFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fT1VUU0lERSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1BPSU5URVJfMV9ET1dOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9QT0lOVEVSXzFfVVAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1BPSU5URVJfMl9ET1dOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjYxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1BPSU5URVJfMl9VUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI2MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9QT0lOVEVSXzNfRE9XTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9QT0lOVEVSXzNfVVAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fUE9JTlRFUl9ET1dOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fUE9JTlRFUl9JRF9NQVNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjUyODAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fUE9JTlRFUl9JRF9TSElGVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fUE9JTlRFUl9JTkRFWF9NQVNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjUyODAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1BPSU5URVJfSU5ERVhfU0hJRlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9QT0lOVEVSX1VQIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fVVAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRURHRV9CT1RUT00iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVER0VfTEVGVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRURHRV9SSUdIVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRURHRV9UT1AiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJPcmllbnRhdGlvbkV2ZW50TGlzdGVuZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iT3JpZW50YXRpb25FdmVudExpc3RlbmVyIgorIHR5cGU9ImFuZHJvaWQudmlldy5PcmllbnRhdGlvbkV2ZW50TGlzdGVuZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iT3JpZW50YXRpb25FdmVudExpc3RlbmVyIgorIHR5cGU9ImFuZHJvaWQudmlldy5PcmllbnRhdGlvbkV2ZW50TGlzdGVuZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmF0ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2FuRGV0ZWN0T3JpZW50YXRpb24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpc2FibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuYWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25PcmllbnRhdGlvbkNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWVudGF0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJPUklFTlRBVElPTl9VTktOT1dOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik9yaWVudGF0aW9uTGlzdGVuZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yTGlzdGVuZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik9yaWVudGF0aW9uTGlzdGVuZXIiCisgdHlwZT0iYW5kcm9pZC52aWV3Lk9yaWVudGF0aW9uTGlzdGVuZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iT3JpZW50YXRpb25MaXN0ZW5lciIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuT3JpZW50YXRpb25MaXN0ZW5lciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyYXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkaXNhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmFibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQWNjdXJhY3lDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2Vuc29yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY3VyYWN5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25PcmllbnRhdGlvbkNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWVudGF0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TZW5zb3JDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2Vuc29yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlcyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Ik9SSUVOVEFUSU9OX1VOS05PV04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2NhbGVHZXN0dXJlRGV0ZWN0b3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNjYWxlR2VzdHVyZURldGVjdG9yIgorIHR5cGU9ImFuZHJvaWQudmlldy5TY2FsZUdlc3R1cmVEZXRlY3RvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC52aWV3LlNjYWxlR2VzdHVyZURldGVjdG9yLk9uU2NhbGVHZXN0dXJlTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDdXJyZW50U3BhbiIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEV2ZW50VGltZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Rm9jdXNYIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Rm9jdXNZIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJldmlvdXNTcGFuIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2NhbGVGYWN0b3IiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaW1lRGVsdGEiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzSW5Qcm9ncmVzcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Ub3VjaEV2ZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iU2NhbGVHZXN0dXJlRGV0ZWN0b3IuT25TY2FsZUdlc3R1cmVMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25TY2FsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0ZWN0b3IiIHR5cGU9ImFuZHJvaWQudmlldy5TY2FsZUdlc3R1cmVEZXRlY3RvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblNjYWxlQmVnaW4iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGVjdG9yIiB0eXBlPSJhbmRyb2lkLnZpZXcuU2NhbGVHZXN0dXJlRGV0ZWN0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TY2FsZUVuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0ZWN0b3IiIHR5cGU9ImFuZHJvaWQudmlldy5TY2FsZUdlc3R1cmVEZXRlY3RvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iU2NhbGVHZXN0dXJlRGV0ZWN0b3IuU2ltcGxlT25TY2FsZUdlc3R1cmVMaXN0ZW5lciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudmlldy5TY2FsZUdlc3R1cmVEZXRlY3Rvci5PblNjYWxlR2VzdHVyZUxpc3RlbmVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTY2FsZUdlc3R1cmVEZXRlY3Rvci5TaW1wbGVPblNjYWxlR2VzdHVyZUxpc3RlbmVyIgorIHR5cGU9ImFuZHJvaWQudmlldy5TY2FsZUdlc3R1cmVEZXRlY3Rvci5TaW1wbGVPblNjYWxlR2VzdHVyZUxpc3RlbmVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9Im9uU2NhbGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRlY3RvciIgdHlwZT0iYW5kcm9pZC52aWV3LlNjYWxlR2VzdHVyZURldGVjdG9yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU2NhbGVCZWdpbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGVjdG9yIiB0eXBlPSJhbmRyb2lkLnZpZXcuU2NhbGVHZXN0dXJlRGV0ZWN0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TY2FsZUVuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGVjdG9yIiB0eXBlPSJhbmRyb2lkLnZpZXcuU2NhbGVHZXN0dXJlRGV0ZWN0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU291bmRFZmZlY3RDb25zdGFudHMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRDb250YW50Rm9yRm9jdXNEaXJlY3Rpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlyZWN0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDTElDSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTkFWSUdBVElPTl9ET1dOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOQVZJR0FUSU9OX0xFRlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5BVklHQVRJT05fUklHSFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5BVklHQVRJT05fVVAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iU3ViTWVudSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnZpZXcuTWVudSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImNsZWFySGVhZGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEl0ZW0iCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuTWVudUl0ZW0iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRIZWFkZXJJY29uIgorIHJldHVybj0iYW5kcm9pZC52aWV3LlN1Yk1lbnUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWNvblJlcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEhlYWRlckljb24iCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuU3ViTWVudSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpY29uIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEhlYWRlclRpdGxlIgorIHJldHVybj0iYW5kcm9pZC52aWV3LlN1Yk1lbnUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGl0bGVSZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRIZWFkZXJUaXRsZSIKKyByZXR1cm49ImFuZHJvaWQudmlldy5TdWJNZW51IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpdGxlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEhlYWRlclZpZXciCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuU3ViTWVudSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJY29uIgorIHJldHVybj0iYW5kcm9pZC52aWV3LlN1Yk1lbnUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWNvblJlcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEljb24iCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuU3ViTWVudSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpY29uIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJTdXJmYWNlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZnJlZXplIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImhpZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNWYWxpZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2NrQ2FudmFzIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpcnR5IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU3VyZmFjZS5PdXRPZlJlc291cmNlc0V4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC52aWV3LlN1cmZhY2UuT3V0T2ZSZXNvdXJjZXNFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZEZyb21QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QWxwaGEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFscGhhIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGbGFncyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFzayIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZyZWV6ZVRpbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMYXllciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iem9yZGVyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWF0cml4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkc2R4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHRkeCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRzZHkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkdGR5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPcmllbnRhdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlzcGxheSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcmllbnRhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBvc2l0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTaXplIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUcmFuc3BhcmVudFJlZ2lvbkhpbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlZ2lvbiIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWdpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2hvdyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bmZyZWV6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bmxvY2tDYW52YXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbnZhcyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5sb2NrQ2FudmFzQW5kUG9zdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FudmFzIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkNhbnZhcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRlhfU1VSRkFDRV9CTFVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjU1MzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRlhfU1VSRkFDRV9ESU0iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMzEwNzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRlhfU1VSRkFDRV9NQVNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOTgzMDQwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZYX1NVUkZBQ0VfTk9STUFMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHUFUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhBUkRXQVJFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJISURERU4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5PTl9QUkVNVUxUSVBMSUVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBVU0hfQlVGRkVSUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJST1RBVElPTl8wIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJST1RBVElPTl8xODAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJPVEFUSU9OXzI3MCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUk9UQVRJT05fOTAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFQ1VSRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVVJBQ0VfRlJPWkVOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNVUkZBQ0VfQkxVUl9GUkVFWkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVVJGQUNFX0RJVEhFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1VSRkFDRV9GUk9aRU4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNVUkZBQ0VfSElEREVOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3VyZmFjZS5PdXRPZlJlc291cmNlc0V4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdXJmYWNlLk91dE9mUmVzb3VyY2VzRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQudmlldy5TdXJmYWNlLk91dE9mUmVzb3VyY2VzRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3VyZmFjZS5PdXRPZlJlc291cmNlc0V4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuU3VyZmFjZS5PdXRPZlJlc291cmNlc0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iU3VyZmFjZUhvbGRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImFkZENhbGxiYWNrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsYmFjayIgdHlwZT0iYW5kcm9pZC52aWV3LlN1cmZhY2VIb2xkZXIuQ2FsbGJhY2siPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3VyZmFjZSIKKyByZXR1cm49ImFuZHJvaWQudmlldy5TdXJmYWNlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3VyZmFjZUZyYW1lIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5SZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNDcmVhdGluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2NrQ2FudmFzIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2NrQ2FudmFzIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlydHkiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVDYWxsYmFjayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsbGJhY2siIHR5cGU9ImFuZHJvaWQudmlldy5TdXJmYWNlSG9sZGVyLkNhbGxiYWNrIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZpeGVkU2l6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Rm9ybWF0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRLZWVwU2NyZWVuT24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNjcmVlbk9uIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNpemVGcm9tTGF5b3V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFR5cGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bmxvY2tDYW52YXNBbmRQb3N0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYW52YXMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iU1VSRkFDRV9UWVBFX0dQVSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVVJGQUNFX1RZUEVfSEFSRFdBUkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1VSRkFDRV9UWVBFX05PUk1BTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1VSRkFDRV9UWVBFX1BVU0hfQlVGRkVSUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJTdXJmYWNlSG9sZGVyLkJhZFN1cmZhY2VUeXBlRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdXJmYWNlSG9sZGVyLkJhZFN1cmZhY2VUeXBlRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQudmlldy5TdXJmYWNlSG9sZGVyLkJhZFN1cmZhY2VUeXBlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3VyZmFjZUhvbGRlci5CYWRTdXJmYWNlVHlwZUV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuU3VyZmFjZUhvbGRlci5CYWRTdXJmYWNlVHlwZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iU3VyZmFjZUhvbGRlci5DYWxsYmFjayIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ic3VyZmFjZUNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhvbGRlciIgdHlwZT0iYW5kcm9pZC52aWV3LlN1cmZhY2VIb2xkZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcm1hdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXJmYWNlQ3JlYXRlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9sZGVyIiB0eXBlPSJhbmRyb2lkLnZpZXcuU3VyZmFjZUhvbGRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXJmYWNlRGVzdHJveWVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob2xkZXIiIHR5cGU9ImFuZHJvaWQudmlldy5TdXJmYWNlSG9sZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJTdXJmYWNlVmlldyIKKyBleHRlbmRzPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN1cmZhY2VWaWV3IgorIHR5cGU9ImFuZHJvaWQudmlldy5TdXJmYWNlVmlldyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdXJmYWNlVmlldyIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuU3VyZmFjZVZpZXciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN1cmZhY2VWaWV3IgorIHR5cGU9ImFuZHJvaWQudmlldy5TdXJmYWNlVmlldyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmU3R5bGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdhdGhlclRyYW5zcGFyZW50UmVnaW9uIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVnaW9uIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlZ2lvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIb2xkZXIiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuU3VyZmFjZUhvbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRaT3JkZXJNZWRpYU92ZXJsYXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpc01lZGlhT3ZlcmxheSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRaT3JkZXJPblRvcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9uVG9wIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlRvdWNoRGVsZWdhdGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRvdWNoRGVsZWdhdGUiCisgdHlwZT0iYW5kcm9pZC52aWV3LlRvdWNoRGVsZWdhdGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJib3VuZHMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVsZWdhdGVWaWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9Im9uVG91Y2hFdmVudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBQk9WRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQkVMT1ciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPX0xFRlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRPX1JJR0hUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVmVsb2NpdHlUcmFja2VyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJhZGRNb3ZlbWVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2IiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbXB1dGVDdXJyZW50VmVsb2NpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbXB1dGVDdXJyZW50VmVsb2NpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYXhWZWxvY2l0eSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0WFZlbG9jaXR5IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0WFZlbG9jaXR5IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0WVZlbG9jaXR5IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0WVZlbG9jaXR5IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib2J0YWluIgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZlbG9jaXR5VHJhY2tlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlY3ljbGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlZpZXciCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC52aWV3LmFjY2Vzc2liaWxpdHkuQWNjZXNzaWJpbGl0eUV2ZW50U291cmNlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUuQ2FsbGJhY2siPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC52aWV3LktleUV2ZW50LkNhbGxiYWNrIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJWaWV3IgorIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlZpZXciCisgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlZpZXciCisgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRGb2N1c2FibGVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlld3MiIHR5cGU9ImphdmEudXRpbC5BcnJheUxpc3QmbHQ7YW5kcm9pZC52aWV3LlZpZXcmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaXJlY3Rpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRGb2N1c2FibGVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlld3MiIHR5cGU9ImphdmEudXRpbC5BcnJheUxpc3QmbHQ7YW5kcm9pZC52aWV3LlZpZXcmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaXJlY3Rpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9jdXNhYmxlTW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZFRvdWNoYWJsZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3cyIgdHlwZT0iamF2YS51dGlsLkFycmF5TGlzdCZsdDthbmRyb2lkLnZpZXcuVmlldyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXdha2VuU2Nyb2xsQmFycyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXdha2VuU2Nyb2xsQmFycyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0RGVsYXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhd2FrZW5TY3JvbGxCYXJzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnREZWxheSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnZhbGlkYXRlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImJyaW5nVG9Gcm9udCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYnVpbGREcmF3aW5nQ2FjaGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImJ1aWxkRHJhd2luZ0NhY2hlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0b1NjYWxlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNhbmNlbExvbmdQcmVzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tJbnB1dENvbm5lY3Rpb25Qcm94eSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyQW5pbWF0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhckZvY3VzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wdXRlSG9yaXpvbnRhbFNjcm9sbEV4dGVudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wdXRlSG9yaXpvbnRhbFNjcm9sbE9mZnNldCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wdXRlSG9yaXpvbnRhbFNjcm9sbFJhbmdlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbXB1dGVTY3JvbGwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbXB1dGVWZXJ0aWNhbFNjcm9sbEV4dGVudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wdXRlVmVydGljYWxTY3JvbGxPZmZzZXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcHV0ZVZlcnRpY2FsU2Nyb2xsUmFuZ2UiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlQ29udGV4dE1lbnUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZW51IiB0eXBlPSJhbmRyb2lkLnZpZXcuQ29udGV4dE1lbnUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVzdHJveURyYXdpbmdDYWNoZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzcGF0Y2hDb25maWd1cmF0aW9uQ2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld0NvbmZpZyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5Db25maWd1cmF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpc3BhdGNoRGlzcGxheUhpbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoaW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzcGF0Y2hEcmF3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FudmFzIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkNhbnZhcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXNwYXRjaEtleUV2ZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXNwYXRjaEtleUV2ZW50UHJlSW1lIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXNwYXRjaEtleVNob3J0Y3V0RXZlbnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LktleUV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpc3BhdGNoUG9wdWxhdGVBY2Nlc3NpYmlsaXR5RXZlbnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LmFjY2Vzc2liaWxpdHkuQWNjZXNzaWJpbGl0eUV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpc3BhdGNoUmVzdG9yZUluc3RhbmNlU3RhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250YWluZXIiIHR5cGU9ImFuZHJvaWQudXRpbC5TcGFyc2VBcnJheSZsdDthbmRyb2lkLm9zLlBhcmNlbGFibGUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpc3BhdGNoU2F2ZUluc3RhbmNlU3RhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250YWluZXIiIHR5cGU9ImFuZHJvaWQudXRpbC5TcGFyc2VBcnJheSZsdDthbmRyb2lkLm9zLlBhcmNlbGFibGUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpc3BhdGNoU2V0UHJlc3NlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByZXNzZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzcGF0Y2hTZXRTZWxlY3RlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpc3BhdGNoVG91Y2hFdmVudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzcGF0Y2hUcmFja2JhbGxFdmVudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzcGF0Y2hVbmhhbmRsZWRNb3ZlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9jdXNlZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRpcmVjdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpc3BhdGNoVmlzaWJpbGl0eUNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGFuZ2VkVmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZpc2liaWxpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXNwYXRjaFdpbmRvd0ZvY3VzQ2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imhhc0ZvY3VzIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpc3BhdGNoV2luZG93VmlzaWJpbGl0eUNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aXNpYmlsaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhdyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbnZhcyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhd2FibGVTdGF0ZUNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmRGb2N1cyIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmRWaWV3QnlJZCIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmluZFZpZXdXaXRoVGFnIgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFnIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpdFN5c3RlbVdpbmRvd3MiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnNldHMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb2N1c1NlYXJjaCIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXJlY3Rpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JjZUxheW91dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QW5pbWF0aW9uIgorIHJldHVybj0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5BbmltYXRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXBwbGljYXRpb25XaW5kb3dUb2tlbiIKKyByZXR1cm49ImFuZHJvaWQub3MuSUJpbmRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCYWNrZ3JvdW5kIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCYXNlbGluZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCb3R0b20iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCb3R0b21GYWRpbmdFZGdlU3RyZW5ndGgiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCb3R0b21QYWRkaW5nT2Zmc2V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbnRlbnREZXNjcmlwdGlvbiIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGV4dCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db250ZXh0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGV4dE1lbnVJbmZvIgorIHJldHVybj0iYW5kcm9pZC52aWV3LkNvbnRleHRNZW51LkNvbnRleHRNZW51SW5mbyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWZhdWx0U2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1lYXN1cmVTcGVjIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RHJhd2FibGVTdGF0ZSIKKyByZXR1cm49ImludFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RHJhd2luZ0NhY2hlIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RHJhd2luZ0NhY2hlIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImF1dG9TY2FsZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREcmF3aW5nQ2FjaGVCYWNrZ3JvdW5kQ29sb3IiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RHJhd2luZ0NhY2hlUXVhbGl0eSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREcmF3aW5nUmVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dFJlY3QiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREcmF3aW5nVGltZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Rm9jdXNhYmxlcyIKKyByZXR1cm49ImphdmEudXRpbC5BcnJheUxpc3QmbHQ7YW5kcm9pZC52aWV3LlZpZXcmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXJlY3Rpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGb2N1c2VkUmVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRHbG9iYWxWaXNpYmxlUmVjdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ2xvYmFsT2Zmc2V0IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBvaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdsb2JhbFZpc2libGVSZWN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SGFuZGxlciIKKyByZXR1cm49ImFuZHJvaWQub3MuSGFuZGxlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIZWlnaHQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIaXRSZWN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0UmVjdCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhvcml6b250YWxGYWRpbmdFZGdlTGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhvcml6b250YWxTY3JvbGxiYXJIZWlnaHQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0S2VlcFNjcmVlbk9uIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRLZXlEaXNwYXRjaGVyU3RhdGUiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQuRGlzcGF0Y2hlclN0YXRlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExheW91dFBhcmFtcyIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3R3JvdXAuTGF5b3V0UGFyYW1zIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExlZnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMZWZ0RmFkaW5nRWRnZVN0cmVuZ3RoIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGVmdFBhZGRpbmdPZmZzZXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9jYWxWaXNpYmxlUmVjdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvY2F0aW9uSW5XaW5kb3ciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9jYXRpb25PblNjcmVlbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNZWFzdXJlZEhlaWdodCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1lYXN1cmVkV2lkdGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROZXh0Rm9jdXNEb3duSWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmV4dEZvY3VzTGVmdElkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5leHRGb2N1c1JpZ2h0SWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmV4dEZvY3VzVXBJZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPbkZvY3VzQ2hhbmdlTGlzdGVuZXIiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldy5PbkZvY3VzQ2hhbmdlTGlzdGVuZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFkZGluZ0JvdHRvbSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYWRkaW5nTGVmdCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYWRkaW5nUmlnaHQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFkZGluZ1RvcCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJlbnQiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlld1BhcmVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlc291cmNlcyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJpZ2h0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmlnaHRGYWRpbmdFZGdlU3RyZW5ndGgiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSaWdodFBhZGRpbmdPZmZzZXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Um9vdFZpZXciCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTY3JvbGxCYXJTdHlsZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTY3JvbGxYIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2Nyb2xsWSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNvbGlkQ29sb3IiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3VnZ2VzdGVkTWluaW11bUhlaWdodCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdWdnZXN0ZWRNaW5pbXVtV2lkdGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGFnIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUYWciCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUb3AiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUb3BGYWRpbmdFZGdlU3RyZW5ndGgiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUb3BQYWRkaW5nT2Zmc2V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRvdWNoRGVsZWdhdGUiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVG91Y2hEZWxlZ2F0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUb3VjaGFibGVzIgorIHJldHVybj0iamF2YS51dGlsLkFycmF5TGlzdCZsdDthbmRyb2lkLnZpZXcuVmlldyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmVydGljYWxGYWRpbmdFZGdlTGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZlcnRpY2FsU2Nyb2xsYmFyV2lkdGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Vmlld1RyZWVPYnNlcnZlciIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3VHJlZU9ic2VydmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZpc2liaWxpdHkiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V2lkdGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRXaW5kb3dBdHRhY2hDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRXaW5kb3dUb2tlbiIKKyByZXR1cm49ImFuZHJvaWQub3MuSUJpbmRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRXaW5kb3dWaXNpYmlsaXR5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdpbmRvd1Zpc2libGVEaXNwbGF5RnJhbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXRSZWN0IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzRm9jdXMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc0ZvY3VzYWJsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzV2luZG93Rm9jdXMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluZmxhdGUiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzb3VyY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icm9vdCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbml0aWFsaXplRmFkaW5nRWRnZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImEiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuVHlwZWRBcnJheSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbml0aWFsaXplU2Nyb2xsYmFycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImEiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuVHlwZWRBcnJheSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnZhbGlkYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlydHkiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnZhbGlkYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImludmFsaWRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImludmFsaWRhdGVEcmF3YWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRyYXdhYmxlIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ2xpY2thYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0RyYXdpbmdDYWNoZUVuYWJsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRHVwbGljYXRlUGFyZW50U3RhdGVFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0VuYWJsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRm9jdXNhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRm9jdXNhYmxlSW5Ub3VjaE1vZGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNGb2N1c2VkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0hhcHRpY0ZlZWRiYWNrRW5hYmxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNIb3Jpem9udGFsRmFkaW5nRWRnZUVuYWJsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzSG9yaXpvbnRhbFNjcm9sbEJhckVuYWJsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzSW5FZGl0TW9kZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNJblRvdWNoTW9kZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNMYXlvdXRSZXF1ZXN0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTG9uZ0NsaWNrYWJsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNPcGFxdWUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUGFkZGluZ09mZnNldFJlcXVpcmVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1ByZXNzZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU2F2ZUVuYWJsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU2Nyb2xsYmFyRmFkaW5nRW5hYmxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTZWxlY3RlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTaG93biIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTb3VuZEVmZmVjdHNFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1ZlcnRpY2FsRmFkaW5nRWRnZUVuYWJsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzVmVydGljYWxTY3JvbGxCYXJFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsYXlvdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtZWFzdXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aE1lYXN1cmVTcGVjIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodE1lYXN1cmVTcGVjIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWVyZ2VEcmF3YWJsZVN0YXRlcyIKKyByZXR1cm49ImludFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJhc2VTdGF0ZSIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFkZGl0aW9uYWxTdGF0ZSIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib2Zmc2V0TGVmdEFuZFJpZ2h0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib2Zmc2V0VG9wQW5kQm90dG9tIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25BbmltYXRpb25FbmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQW5pbWF0aW9uU3RhcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQXR0YWNoZWRUb1dpbmRvdyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DaGVja0lzVGV4dEVkaXRvciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Db25maWd1cmF0aW9uQ2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld0NvbmZpZyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5Db25maWd1cmF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ3JlYXRlQ29udGV4dE1lbnUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZW51IiB0eXBlPSJhbmRyb2lkLnZpZXcuQ29udGV4dE1lbnUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DcmVhdGVEcmF3YWJsZVN0YXRlIgorIHJldHVybj0iaW50W10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4dHJhU3BhY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNyZWF0ZUlucHV0Q29ubmVjdGlvbiIKKyByZXR1cm49ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5JbnB1dENvbm5lY3Rpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dEF0dHJzIiB0eXBlPSJhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuRWRpdG9ySW5mbyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkRldGFjaGVkRnJvbVdpbmRvdyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25EaXNwbGF5SGludCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhpbnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkRyYXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYW52YXMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uRHJhd1Njcm9sbEJhcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbnZhcyIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5DYW52YXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25GaW5pc2hJbmZsYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkZpbmlzaFRlbXBvcmFyeURldGFjaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Gb2N1c0NoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJnYWluRm9jdXMiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRpcmVjdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcmV2aW91c2x5Rm9jdXNlZFJlY3QiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbktleURvd24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25LZXlMb25nUHJlc3MiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25LZXlNdWx0aXBsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVwZWF0Q291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbktleVByZUltZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbktleVNob3J0Y3V0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LktleUV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uS2V5VXAiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25MYXlvdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGFuZ2VkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZWZ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvcCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3R0b20iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbk1lYXN1cmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aE1lYXN1cmVTcGVjIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodE1lYXN1cmVTcGVjIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25SZXN0b3JlSW5zdGFuY2VTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TYXZlSW5zdGFuY2VTdGF0ZSIKKyByZXR1cm49ImFuZHJvaWQub3MuUGFyY2VsYWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblNjcm9sbENoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2xkbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvbGR0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TZXRBbHBoYSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFscGhhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TaXplQ2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InciIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvbGR3IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9sZGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblN0YXJ0VGVtcG9yYXJ5RGV0YWNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblRvdWNoRXZlbnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uVHJhY2tiYWxsRXZlbnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uVmlzaWJpbGl0eUNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGFuZ2VkVmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZpc2liaWxpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbldpbmRvd0ZvY3VzQ2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imhhc1dpbmRvd0ZvY3VzIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uV2luZG93VmlzaWJpbGl0eUNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aXNpYmlsaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGVyZm9ybUNsaWNrIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwZXJmb3JtSGFwdGljRmVlZGJhY2siCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZWVkYmFja0NvbnN0YW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGVyZm9ybUhhcHRpY0ZlZWRiYWNrIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmVlZGJhY2tDb25zdGFudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBlcmZvcm1Mb25nQ2xpY2siCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBsYXlTb3VuZEVmZmVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdW5kQ29uc3RhbnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwb3N0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aW9uIiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9zdERlbGF5ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb24iIHR5cGU9ImphdmEubGFuZy5SdW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVsYXlNaWxsaXMiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9zdEludmFsaWRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBvc3RJbnZhbGlkYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVmdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b3AiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYm90dG9tIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9zdEludmFsaWRhdGVEZWxheWVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVsYXlNaWxsaXNlY29uZHMiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9zdEludmFsaWRhdGVEZWxheWVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVsYXlNaWxsaXNlY29uZHMiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9wIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlZnJlc2hEcmF3YWJsZVN0YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVDYWxsYmFja3MiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb24iIHR5cGU9ImphdmEubGFuZy5SdW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXF1ZXN0Rm9jdXMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVxdWVzdEZvY3VzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXJlY3Rpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXF1ZXN0Rm9jdXMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXJlY3Rpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJldmlvdXNseUZvY3VzZWRSZWN0IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVxdWVzdEZvY3VzRnJvbVRvdWNoIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcXVlc3RMYXlvdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcXVlc3RSZWN0YW5nbGVPblNjcmVlbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlY3RhbmdsZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcXVlc3RSZWN0YW5nbGVPblNjcmVlbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlY3RhbmdsZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbW1lZGlhdGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzb2x2ZVNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZWFzdXJlU3BlYyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc3RvcmVIaWVyYXJjaHlTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRhaW5lciIgdHlwZT0iYW5kcm9pZC51dGlsLlNwYXJzZUFycmF5Jmx0O2FuZHJvaWQub3MuUGFyY2VsYWJsZSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2F2ZUhpZXJhcmNoeVN0YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGFpbmVyIiB0eXBlPSJhbmRyb2lkLnV0aWwuU3BhcnNlQXJyYXkmbHQ7YW5kcm9pZC5vcy5QYXJjZWxhYmxlJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzY2hlZHVsZURyYXdhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hvIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aGF0IiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoZW4iIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2Nyb2xsQnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzY3JvbGxUbyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmRBY2Nlc3NpYmlsaXR5RXZlbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJldmVudFR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kQWNjZXNzaWJpbGl0eUV2ZW50VW5jaGVja2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5hY2Nlc3NpYmlsaXR5LkFjY2Vzc2liaWxpdHlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBbmltYXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbmltYXRpb24iIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uQW5pbWF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEJhY2tncm91bmRDb2xvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbG9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QmFja2dyb3VuZERyYXdhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCYWNrZ3JvdW5kUmVzb3VyY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENsaWNrYWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNsaWNrYWJsZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb250ZW50RGVzY3JpcHRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZW50RGVzY3JpcHRpb24iIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RHJhd2luZ0NhY2hlQmFja2dyb3VuZENvbG9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sb3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREcmF3aW5nQ2FjaGVFbmFibGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5hYmxlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREcmF3aW5nQ2FjaGVRdWFsaXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icXVhbGl0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldER1cGxpY2F0ZVBhcmVudFN0YXRlRW5hYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVuYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RW5hYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVuYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RmFkaW5nRWRnZUxlbmd0aCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZvY3VzYWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZvY3VzYWJsZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGb2N1c2FibGVJblRvdWNoTW9kZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZvY3VzYWJsZUluVG91Y2hNb2RlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEhhcHRpY0ZlZWRiYWNrRW5hYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhhcHRpY0ZlZWRiYWNrRW5hYmxlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRIb3Jpem9udGFsRmFkaW5nRWRnZUVuYWJsZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3Jpem9udGFsRmFkaW5nRWRnZUVuYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SG9yaXpvbnRhbFNjcm9sbEJhckVuYWJsZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3Jpem9udGFsU2Nyb2xsQmFyRW5hYmxlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0S2VlcFNjcmVlbk9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2VlcFNjcmVlbk9uIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldExheW91dFBhcmFtcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cC5MYXlvdXRQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TG9uZ0NsaWNrYWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvbmdDbGlja2FibGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWVhc3VyZWREaW1lbnNpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lYXN1cmVkV2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVhc3VyZWRIZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNaW5pbXVtSGVpZ2h0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWluSGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWluaW11bVdpZHRoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWluV2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXROZXh0Rm9jdXNEb3duSWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXh0Rm9jdXNEb3duSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXROZXh0Rm9jdXNMZWZ0SWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXh0Rm9jdXNMZWZ0SWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXROZXh0Rm9jdXNSaWdodElkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV4dEZvY3VzUmlnaHRJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE5leHRGb2N1c1VwSWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXh0Rm9jdXNVcElkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25DbGlja0xpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXcuT25DbGlja0xpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9uQ3JlYXRlQ29udGV4dE1lbnVMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImwiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Lk9uQ3JlYXRlQ29udGV4dE1lbnVMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPbkZvY3VzQ2hhbmdlTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldy5PbkZvY3VzQ2hhbmdlTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25LZXlMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImwiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Lk9uS2V5TGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25Mb25nQ2xpY2tMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImwiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Lk9uTG9uZ0NsaWNrTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25Ub3VjaExpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXcuT25Ub3VjaExpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBhZGRpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZWZ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvcCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3R0b20iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQcmVzc2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlc3NlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTYXZlRW5hYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVuYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2Nyb2xsQmFyU3R5bGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNjcm9sbENvbnRhaW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlzU2Nyb2xsQ29udGFpbmVyIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNjcm9sbGJhckZhZGluZ0VuYWJsZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWRlU2Nyb2xsYmFycyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTZWxlY3RlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNvdW5kRWZmZWN0c0VuYWJsZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VuZEVmZmVjdHNFbmFibGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRhZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUYWciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGFnIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRvdWNoRGVsZWdhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZWxlZ2F0ZSIgdHlwZT0iYW5kcm9pZC52aWV3LlRvdWNoRGVsZWdhdGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VmVydGljYWxGYWRpbmdFZGdlRW5hYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZlcnRpY2FsRmFkaW5nRWRnZUVuYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VmVydGljYWxTY3JvbGxCYXJFbmFibGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmVydGljYWxTY3JvbGxCYXJFbmFibGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZpc2liaWxpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aXNpYmlsaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0V2lsbE5vdENhY2hlRHJhd2luZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpbGxOb3RDYWNoZURyYXdpbmciIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0V2lsbE5vdERyYXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWxsTm90RHJhdyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaG93Q29udGV4dE1lbnUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0QW5pbWF0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYW5pbWF0aW9uIiB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFuaW1hdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bnNjaGVkdWxlRHJhd2FibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aG8iIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoYXQiIHR5cGU9ImphdmEubGFuZy5SdW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bnNjaGVkdWxlRHJhd2FibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aG8iIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmVyaWZ5RHJhd2FibGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aG8iIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id2lsbE5vdENhY2hlRHJhd2luZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id2lsbE5vdERyYXciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iRFJBV0lOR19DQUNIRV9RVUFMSVRZX0FVVE8iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRSQVdJTkdfQ0FDSEVfUVVBTElUWV9ISUdIIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTA0ODU3NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEUkFXSU5HX0NBQ0hFX1FVQUxJVFlfTE9XIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTI0Mjg4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVNUFRZX1NUQVRFX1NFVCIKKyB0eXBlPSJpbnRbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFTkFCTEVEX0ZPQ1VTRURfU0VMRUNURURfU1RBVEVfU0VUIgorIHR5cGU9ImludFtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVOQUJMRURfRk9DVVNFRF9TRUxFQ1RFRF9XSU5ET1dfRk9DVVNFRF9TVEFURV9TRVQiCisgdHlwZT0iaW50W10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRU5BQkxFRF9GT0NVU0VEX1NUQVRFX1NFVCIKKyB0eXBlPSJpbnRbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFTkFCTEVEX0ZPQ1VTRURfV0lORE9XX0ZPQ1VTRURfU1RBVEVfU0VUIgorIHR5cGU9ImludFtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVOQUJMRURfU0VMRUNURURfU1RBVEVfU0VUIgorIHR5cGU9ImludFtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVOQUJMRURfU0VMRUNURURfV0lORE9XX0ZPQ1VTRURfU1RBVEVfU0VUIgorIHR5cGU9ImludFtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVOQUJMRURfU1RBVEVfU0VUIgorIHR5cGU9ImludFtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVOQUJMRURfV0lORE9XX0ZPQ1VTRURfU1RBVEVfU0VUIgorIHR5cGU9ImludFtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPQ1VTQUJMRVNfQUxMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT0NVU0FCTEVTX1RPVUNIX01PREUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPQ1VTRURfU0VMRUNURURfU1RBVEVfU0VUIgorIHR5cGU9ImludFtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPQ1VTRURfU0VMRUNURURfV0lORE9XX0ZPQ1VTRURfU1RBVEVfU0VUIgorIHR5cGU9ImludFtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPQ1VTRURfU1RBVEVfU0VUIgorIHR5cGU9ImludFtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPQ1VTRURfV0lORE9XX0ZPQ1VTRURfU1RBVEVfU0VUIgorIHR5cGU9ImludFtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPQ1VTX0JBQ0tXQVJEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT0NVU19ET1dOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTMwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPQ1VTX0ZPUldBUkQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPQ1VTX0xFRlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT0NVU19SSUdIVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjY2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPQ1VTX1VQIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR09ORSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSEFQVElDX0ZFRURCQUNLX0VOQUJMRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNjg0MzU0NTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU5WSVNJQkxFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRUVQX1NDUkVFTl9PTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjY3MTA4ODY0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5PX0lEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJFU1NFRF9FTkFCTEVEX0ZPQ1VTRURfU0VMRUNURURfU1RBVEVfU0VUIgorIHR5cGU9ImludFtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBSRVNTRURfRU5BQkxFRF9GT0NVU0VEX1NFTEVDVEVEX1dJTkRPV19GT0NVU0VEX1NUQVRFX1NFVCIKKyB0eXBlPSJpbnRbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQUkVTU0VEX0VOQUJMRURfRk9DVVNFRF9TVEFURV9TRVQiCisgdHlwZT0iaW50W10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJFU1NFRF9FTkFCTEVEX0ZPQ1VTRURfV0lORE9XX0ZPQ1VTRURfU1RBVEVfU0VUIgorIHR5cGU9ImludFtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBSRVNTRURfRU5BQkxFRF9TRUxFQ1RFRF9TVEFURV9TRVQiCisgdHlwZT0iaW50W10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJFU1NFRF9FTkFCTEVEX1NFTEVDVEVEX1dJTkRPV19GT0NVU0VEX1NUQVRFX1NFVCIKKyB0eXBlPSJpbnRbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQUkVTU0VEX0VOQUJMRURfU1RBVEVfU0VUIgorIHR5cGU9ImludFtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBSRVNTRURfRU5BQkxFRF9XSU5ET1dfRk9DVVNFRF9TVEFURV9TRVQiCisgdHlwZT0iaW50W10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJFU1NFRF9GT0NVU0VEX1NFTEVDVEVEX1NUQVRFX1NFVCIKKyB0eXBlPSJpbnRbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQUkVTU0VEX0ZPQ1VTRURfU0VMRUNURURfV0lORE9XX0ZPQ1VTRURfU1RBVEVfU0VUIgorIHR5cGU9ImludFtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBSRVNTRURfRk9DVVNFRF9TVEFURV9TRVQiCisgdHlwZT0iaW50W10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJFU1NFRF9GT0NVU0VEX1dJTkRPV19GT0NVU0VEX1NUQVRFX1NFVCIKKyB0eXBlPSJpbnRbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQUkVTU0VEX1NFTEVDVEVEX1NUQVRFX1NFVCIKKyB0eXBlPSJpbnRbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQUkVTU0VEX1NFTEVDVEVEX1dJTkRPV19GT0NVU0VEX1NUQVRFX1NFVCIKKyB0eXBlPSJpbnRbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQUkVTU0VEX1dJTkRPV19GT0NVU0VEX1NUQVRFX1NFVCIKKyB0eXBlPSJpbnRbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ1JPTExCQVJTX0lOU0lERV9JTlNFVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2Nzc3MjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDUk9MTEJBUlNfSU5TSURFX09WRVJMQVkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDUk9MTEJBUlNfT1VUU0lERV9JTlNFVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUwMzMxNjQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDUk9MTEJBUlNfT1VUU0lERV9PVkVSTEFZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzM1NTQ0MzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VMRUNURURfU1RBVEVfU0VUIgorIHR5cGU9ImludFtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFTEVDVEVEX1dJTkRPV19GT0NVU0VEX1NUQVRFX1NFVCIKKyB0eXBlPSJpbnRbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTT1VORF9FRkZFQ1RTX0VOQUJMRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMzQyMTc3MjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVklFV19MT0dfVEFHIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O1ZpZXcmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVklTSUJMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0lORE9XX0ZPQ1VTRURfU1RBVEVfU0VUIgorIHR5cGU9ImludFtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJWaWV3LkJhc2VTYXZlZFN0YXRlIgorIGV4dGVuZHM9ImFuZHJvaWQudmlldy5BYnNTYXZlZFN0YXRlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJWaWV3LkJhc2VTYXZlZFN0YXRlIgorIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3LkJhc2VTYXZlZFN0YXRlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVmlldy5CYXNlU2F2ZWRTdGF0ZSIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldy5CYXNlU2F2ZWRTdGF0ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN1cGVyU3RhdGUiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVmlldy5NZWFzdXJlU3BlYyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJWaWV3Lk1lYXN1cmVTcGVjIgorIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Lk1lYXN1cmVTcGVjIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldE1vZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVhc3VyZVNwZWMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lYXN1cmVTcGVjIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWFrZU1lYXN1cmVTcGVjIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZWFzdXJlU3BlYyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQVRfTU9TVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0yMTQ3NDgzNjQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYQUNUTFkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDczNzQxODI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVOU1BFQ0lGSUVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlZpZXcuT25DbGlja0xpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvbkNsaWNrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlZpZXcuT25DcmVhdGVDb250ZXh0TWVudUxpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvbkNyZWF0ZUNvbnRleHRNZW51IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZW51IiB0eXBlPSJhbmRyb2lkLnZpZXcuQ29udGV4dE1lbnUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZW51SW5mbyIgdHlwZT0iYW5kcm9pZC52aWV3LkNvbnRleHRNZW51LkNvbnRleHRNZW51SW5mbyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlZpZXcuT25Gb2N1c0NoYW5nZUxpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvbkZvY3VzQ2hhbmdlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFzRm9jdXMiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJWaWV3Lk9uS2V5TGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uS2V5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LktleUV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iVmlldy5PbkxvbmdDbGlja0xpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvbkxvbmdDbGljayIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJWaWV3Lk9uVG91Y2hMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25Ub3VjaCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlZpZXdDb25maWd1cmF0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJWaWV3Q29uZmlndXJhdGlvbiIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0NvbmZpZ3VyYXRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlld0NvbmZpZ3VyYXRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RG91YmxlVGFwVGltZW91dCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVkZ2VTbG9wIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGYWRpbmdFZGdlTGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRHbG9iYWxBY3Rpb25LZXlUaW1lb3V0IgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEp1bXBUYXBUaW1lb3V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9uZ1ByZXNzVGltZW91dCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1heGltdW1EcmF3aW5nQ2FjaGVTaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYXhpbXVtRmxpbmdWZWxvY2l0eSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWluaW11bUZsaW5nVmVsb2NpdHkiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByZXNzZWRTdGF0ZUR1cmF0aW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2NhbGVkRG91YmxlVGFwU2xvcCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTY2FsZWRFZGdlU2xvcCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTY2FsZWRGYWRpbmdFZGdlTGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNjYWxlZE1heGltdW1EcmF3aW5nQ2FjaGVTaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNjYWxlZE1heGltdW1GbGluZ1ZlbG9jaXR5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNjYWxlZE1pbmltdW1GbGluZ1ZlbG9jaXR5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNjYWxlZFBhZ2luZ1RvdWNoU2xvcCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTY2FsZWRTY3JvbGxCYXJTaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNjYWxlZFRvdWNoU2xvcCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTY2FsZWRXaW5kb3dUb3VjaFNsb3AiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2Nyb2xsQmFyRmFkZUR1cmF0aW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2Nyb2xsQmFyU2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2Nyb2xsRGVmYXVsdERlbGF5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2Nyb2xsRnJpY3Rpb24iCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRhcFRpbWVvdXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUb3VjaFNsb3AiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdpbmRvd1RvdWNoU2xvcCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Wm9vbUNvbnRyb2xzVGltZW91dCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJWaWV3RGVidWciCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlZpZXdEZWJ1ZyIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0RlYnVnIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImR1bXBDYXB0dXJlZFZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydEhpZXJhcmNoeVRyYWNpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByZWZpeCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRSZWN5Y2xlclRyYWNpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByZWZpeCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RvcEhpZXJhcmNoeVRyYWNpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RvcFJlY3ljbGVyVHJhY2luZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0cmFjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3RGVidWcuUmVjeWNsZXJUcmFjZVR5cGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlcnMiIHR5cGU9ImludC4uLiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0cmFjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3RGVidWcuSGllcmFyY2h5VHJhY2VUeXBlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iVFJBQ0VfSElFUkFSQ0hZIgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRSQUNFX1JFQ1lDTEVSIgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJWaWV3RGVidWcuQ2FwdHVyZWRWaWV3UHJvcGVydHkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5hbm5vdGF0aW9uLkFubm90YXRpb24iPgorPC9pbXBsZW1lbnRzPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJWaWV3RGVidWcuRXhwb3J0ZWRQcm9wZXJ0eSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLmFubm90YXRpb24uQW5ub3RhdGlvbiI+Cis8L2ltcGxlbWVudHM+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlZpZXdEZWJ1Zy5GbGFnVG9TdHJpbmciCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5hbm5vdGF0aW9uLkFubm90YXRpb24iPgorPC9pbXBsZW1lbnRzPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJWaWV3RGVidWcuSGllcmFyY2h5VHJhY2VUeXBlIgorIGV4dGVuZHM9ImphdmEubGFuZy5FbnVtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXdEZWJ1Zy5IaWVyYXJjaHlUcmFjZVR5cGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZXMiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlld0RlYnVnLkhpZXJhcmNoeVRyYWNlVHlwZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJWaWV3RGVidWcuSW50VG9TdHJpbmciCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5hbm5vdGF0aW9uLkFubm90YXRpb24iPgorPC9pbXBsZW1lbnRzPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJWaWV3RGVidWcuUmVjeWNsZXJUcmFjZVR5cGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkVudW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlld0RlYnVnLlJlY3ljbGVyVHJhY2VUeXBlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVzIgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXdEZWJ1Zy5SZWN5Y2xlclRyYWNlVHlwZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJWaWV3R3JvdXAiCisgZXh0ZW5kcz0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC52aWV3LlZpZXdNYW5hZ2VyIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudmlldy5WaWV3UGFyZW50Ij4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJWaWV3R3JvdXAiCisgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJWaWV3R3JvdXAiCisgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVmlld0dyb3VwIgorIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRTdGF0ZXNGcm9tQ2hpbGRyZW4iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZFZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkVmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRWaWV3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hpbGQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRWaWV3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hpbGQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAuTGF5b3V0UGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZFZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cC5MYXlvdXRQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkVmlld0luTGF5b3V0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hpbGQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAuTGF5b3V0UGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZFZpZXdJbkxheW91dCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwLkxheW91dFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJldmVudFJlcXVlc3RMYXlvdXQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXR0YWNoTGF5b3V0QW5pbWF0aW9uUGFyYW1ldGVycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwLkxheW91dFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhdHRhY2hWaWV3VG9QYXJlbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cC5MYXlvdXRQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYnJpbmdDaGlsZFRvRnJvbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2FuQW5pbWF0ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tMYXlvdXRQYXJhbXMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwLkxheW91dFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGlsZERyYXdhYmxlU3RhdGVDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hpbGQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFudXBMYXlvdXRTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhckNoaWxkRm9jdXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJEaXNhcHBlYXJpbmdDaGlsZHJlbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVidWciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXB0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRldGFjaEFsbFZpZXdzRnJvbVBhcmVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGV0YWNoVmlld0Zyb21QYXJlbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGV0YWNoVmlld0Zyb21QYXJlbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRldGFjaFZpZXdzRnJvbVBhcmVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzcGF0Y2hGcmVlemVTZWxmT25seSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRhaW5lciIgdHlwZT0iYW5kcm9pZC51dGlsLlNwYXJzZUFycmF5Jmx0O2FuZHJvaWQub3MuUGFyY2VsYWJsZSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzcGF0Y2hTZXRTZWxlY3RlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpc3BhdGNoVGhhd1NlbGZPbmx5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGFpbmVyIiB0eXBlPSJhbmRyb2lkLnV0aWwuU3BhcnNlQXJyYXkmbHQ7YW5kcm9pZC5vcy5QYXJjZWxhYmxlJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmF3Q2hpbGQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYW52YXMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRyYXdpbmdUaW1lIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvY3VzU2VhcmNoIgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZvY3VzZWQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaXJlY3Rpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb2N1c2FibGVWaWV3QXZhaWxhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2F0aGVyVHJhbnNwYXJlbnRSZWdpb24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWdpb24iIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVnaW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdlbmVyYXRlRGVmYXVsdExheW91dFBhcmFtcyIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3R3JvdXAuTGF5b3V0UGFyYW1zIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdlbmVyYXRlTGF5b3V0UGFyYW1zIgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXdHcm91cC5MYXlvdXRQYXJhbXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdlbmVyYXRlTGF5b3V0UGFyYW1zIgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXdHcm91cC5MYXlvdXRQYXJhbXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InAiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAuTGF5b3V0UGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoaWxkQXQiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDaGlsZENvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoaWxkRHJhd2luZ09yZGVyIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZENvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDaGlsZE1lYXN1cmVTcGVjIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNwZWMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFkZGluZyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZERpbWVuc2lvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoaWxkU3RhdGljVHJhbnNmb3JtYXRpb24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InQiIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uVHJhbnNmb3JtYXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hpbGRWaXNpYmxlUmVjdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUG9pbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVzY2VuZGFudEZvY3VzYWJpbGl0eSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGb2N1c2VkQ2hpbGQiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMYXlvdXRBbmltYXRpb24iCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkxheW91dEFuaW1hdGlvbkNvbnRyb2xsZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGF5b3V0QW5pbWF0aW9uTGlzdGVuZXIiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFuaW1hdGlvbi5BbmltYXRpb25MaXN0ZW5lciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQZXJzaXN0ZW50RHJhd2luZ0NhY2hlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluZGV4T2ZDaGlsZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hpbGQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImludmFsaWRhdGVDaGlsZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hpbGQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaXJ0eSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImludmFsaWRhdGVDaGlsZEluUGFyZW50IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXdQYXJlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlydHkiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0Fsd2F5c0RyYXduV2l0aENhY2hlRW5hYmxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNBbmltYXRpb25DYWNoZUVuYWJsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ2hpbGRyZW5EcmF3aW5nT3JkZXJFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0NoaWxkcmVuRHJhd25XaXRoQ2FjaGVFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtZWFzdXJlQ2hpbGQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudFdpZHRoTWVhc3VyZVNwZWMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyZW50SGVpZ2h0TWVhc3VyZVNwZWMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtZWFzdXJlQ2hpbGRXaXRoTWFyZ2lucyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyZW50V2lkdGhNZWFzdXJlU3BlYyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aFVzZWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyZW50SGVpZ2h0TWVhc3VyZVNwZWMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0VXNlZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1lYXN1cmVDaGlsZHJlbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoTWVhc3VyZVNwZWMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0TWVhc3VyZVNwZWMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvZmZzZXREZXNjZW5kYW50UmVjdFRvTXlDb29yZHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc2NlbmRhbnQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWN0IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib2Zmc2V0UmVjdEludG9EZXNjZW5kYW50Q29vcmRzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXNjZW5kYW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVjdCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uSW50ZXJjZXB0VG91Y2hFdmVudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2IiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25MYXlvdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYW5nZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblJlcXVlc3RGb2N1c0luRGVzY2VuZGFudHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXJlY3Rpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJldmlvdXNseUZvY3VzZWRSZWN0IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVjb21wdXRlVmlld0F0dHJpYnV0ZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlQWxsVmlld3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZUFsbFZpZXdzSW5MYXlvdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZURldGFjaGVkVmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYW5pbWF0ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVWaWV3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlVmlld0F0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVWaWV3SW5MYXlvdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVWaWV3cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlVmlld3NJbkxheW91dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVxdWVzdENoaWxkRm9jdXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZvY3VzZWQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcXVlc3RDaGlsZFJlY3RhbmdsZU9uU2NyZWVuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hpbGQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWN0YW5nbGUiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW1tZWRpYXRlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcXVlc3REaXNhbGxvd0ludGVyY2VwdFRvdWNoRXZlbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXNhbGxvd0ludGVyY2VwdCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXF1ZXN0VHJhbnNwYXJlbnRSZWdpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2NoZWR1bGVMYXlvdXRBbmltYXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFkZFN0YXRlc0Zyb21DaGlsZHJlbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFkZHNTdGF0ZXMiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QWx3YXlzRHJhd25XaXRoQ2FjaGVFbmFibGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWx3YXlzIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFuaW1hdGlvbkNhY2hlRW5hYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVuYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2hpbGRyZW5EcmF3aW5nQ2FjaGVFbmFibGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5hYmxlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDaGlsZHJlbkRyYXdpbmdPcmRlckVuYWJsZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmFibGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENoaWxkcmVuRHJhd25XaXRoQ2FjaGVFbmFibGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5hYmxlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDbGlwQ2hpbGRyZW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbGlwQ2hpbGRyZW4iIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2xpcFRvUGFkZGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNsaXBUb1BhZGRpbmciIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGVzY2VuZGFudEZvY3VzYWJpbGl0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZvY3VzYWJpbGl0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldExheW91dEFuaW1hdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRyb2xsZXIiIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uTGF5b3V0QW5pbWF0aW9uQ29udHJvbGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMYXlvdXRBbmltYXRpb25MaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFuaW1hdGlvbkxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFuaW1hdGlvbi5BbmltYXRpb25MaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPbkhpZXJhcmNoeUNoYW5nZUxpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAuT25IaWVyYXJjaHlDaGFuZ2VMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQZXJzaXN0ZW50RHJhd2luZ0NhY2hlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHJhd2luZ0NhY2hlVG9LZWVwIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RhdGljVHJhbnNmb3JtYXRpb25zRW5hYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVuYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2hvd0NvbnRleHRNZW51Rm9yQ2hpbGQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnaW5hbFZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0TGF5b3V0QW5pbWF0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVWaWV3TGF5b3V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cC5MYXlvdXRQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDTElQX1RPX1BBRERJTkdfTUFTSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPQ1VTX0FGVEVSX0RFU0NFTkRBTlRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjYyMTQ0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPQ1VTX0JFRk9SRV9ERVNDRU5EQU5UUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEzMTA3MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT0NVU19CTE9DS19ERVNDRU5EQU5UUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM5MzIxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQRVJTSVNURU5UX0FMTF9DQUNIRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBFUlNJU1RFTlRfQU5JTUFUSU9OX0NBQ0hFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQRVJTSVNURU5UX05PX0NBQ0hFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQRVJTSVNURU5UX1NDUk9MTElOR19DQUNIRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlZpZXdHcm91cC5MYXlvdXRQYXJhbXMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVmlld0dyb3VwLkxheW91dFBhcmFtcyIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwLkxheW91dFBhcmFtcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVmlld0dyb3VwLkxheW91dFBhcmFtcyIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwLkxheW91dFBhcmFtcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJWaWV3R3JvdXAuTGF5b3V0UGFyYW1zIgorIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAuTGF5b3V0UGFyYW1zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwLkxheW91dFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InNldEJhc2VBdHRyaWJ1dGVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5UeXBlZEFycmF5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aEF0dHIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0QXR0ciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iRklMTF9QQVJFTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1BVENIX1BBUkVOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldSQVBfQ09OVEVOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0yIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImhlaWdodCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsYXlvdXRBbmltYXRpb25QYXJhbWV0ZXJzIgorIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uTGF5b3V0QW5pbWF0aW9uQ29udHJvbGxlci5BbmltYXRpb25QYXJhbWV0ZXJzIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0id2lkdGgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlZpZXdHcm91cC5NYXJnaW5MYXlvdXRQYXJhbXMiCisgZXh0ZW5kcz0iYW5kcm9pZC52aWV3LlZpZXdHcm91cC5MYXlvdXRQYXJhbXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlZpZXdHcm91cC5NYXJnaW5MYXlvdXRQYXJhbXMiCisgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cC5NYXJnaW5MYXlvdXRQYXJhbXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlZpZXdHcm91cC5NYXJnaW5MYXlvdXRQYXJhbXMiCisgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cC5NYXJnaW5MYXlvdXRQYXJhbXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVmlld0dyb3VwLk1hcmdpbkxheW91dFBhcmFtcyIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwLk1hcmdpbkxheW91dFBhcmFtcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cC5NYXJnaW5MYXlvdXRQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlZpZXdHcm91cC5NYXJnaW5MYXlvdXRQYXJhbXMiCisgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cC5NYXJnaW5MYXlvdXRQYXJhbXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAuTGF5b3V0UGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ic2V0TWFyZ2lucyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9wIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iYm90dG9tTWFyZ2luIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxlZnRNYXJnaW4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icmlnaHRNYXJnaW4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idG9wTWFyZ2luIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iVmlld0dyb3VwLk9uSGllcmFyY2h5Q2hhbmdlTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uQ2hpbGRWaWV3QWRkZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNoaWxkVmlld1JlbW92ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlZpZXdNYW5hZ2VyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYWRkVmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cC5MYXlvdXRQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlVmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlVmlld0xheW91dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cC5MYXlvdXRQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJWaWV3UGFyZW50IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYnJpbmdDaGlsZFRvRnJvbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGlsZERyYXdhYmxlU3RhdGVDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJDaGlsZEZvY3VzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlQ29udGV4dE1lbnUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lbnUiIHR5cGU9ImFuZHJvaWQudmlldy5Db250ZXh0TWVudSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb2N1c1NlYXJjaCIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaXJlY3Rpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb2N1c2FibGVWaWV3QXZhaWxhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDaGlsZFZpc2libGVSZWN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBvaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmVudCIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3UGFyZW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW52YWxpZGF0ZUNoaWxkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnZhbGlkYXRlQ2hpbGRJblBhcmVudCIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3UGFyZW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTGF5b3V0UmVxdWVzdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlY29tcHV0ZVZpZXdBdHRyaWJ1dGVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVxdWVzdENoaWxkRm9jdXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9jdXNlZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVxdWVzdENoaWxkUmVjdGFuZ2xlT25TY3JlZW4iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVjdGFuZ2xlIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImltbWVkaWF0ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXF1ZXN0RGlzYWxsb3dJbnRlcmNlcHRUb3VjaEV2ZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXNhbGxvd0ludGVyY2VwdCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXF1ZXN0TGF5b3V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcXVlc3RUcmFuc3BhcmVudFJlZ2lvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hpbGQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNob3dDb250ZXh0TWVudUZvckNoaWxkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnaW5hbFZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJWaWV3U3R1YiIKKyBleHRlbmRzPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVmlld1N0dWIiCisgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdTdHViIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlZpZXdTdHViIgorIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3U3R1YiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYXlvdXRSZXNvdXJjZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJWaWV3U3R1YiIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld1N0dWIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlZpZXdTdHViIgorIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3U3R1YiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmU3R5bGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEluZmxhdGVkSWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGF5b3V0UmVzb3VyY2UiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5mbGF0ZSIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEluZmxhdGVkSWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmZsYXRlZElkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TGF5b3V0UmVzb3VyY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsYXlvdXRSZXNvdXJjZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9uSW5mbGF0ZUxpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5mbGF0ZUxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld1N0dWIuT25JbmZsYXRlTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlZpZXdTdHViLk9uSW5mbGF0ZUxpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvbkluZmxhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0dWIiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3U3R1YiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5mbGF0ZWQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJWaWV3VHJlZU9ic2VydmVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJhZGRPbkdsb2JhbEZvY3VzQ2hhbmdlTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdUcmVlT2JzZXJ2ZXIuT25HbG9iYWxGb2N1c0NoYW5nZUxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZE9uR2xvYmFsTGF5b3V0TGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdUcmVlT2JzZXJ2ZXIuT25HbG9iYWxMYXlvdXRMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRPblByZURyYXdMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld1RyZWVPYnNlcnZlci5PblByZURyYXdMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRPblNjcm9sbENoYW5nZWRMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld1RyZWVPYnNlcnZlci5PblNjcm9sbENoYW5nZWRMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRPblRvdWNoTW9kZUNoYW5nZUxpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3VHJlZU9ic2VydmVyLk9uVG91Y2hNb2RlQ2hhbmdlTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzcGF0Y2hPbkdsb2JhbExheW91dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXNwYXRjaE9uUHJlRHJhdyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0FsaXZlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVHbG9iYWxPbkxheW91dExpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmljdGltIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld1RyZWVPYnNlcnZlci5Pbkdsb2JhbExheW91dExpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZU9uR2xvYmFsRm9jdXNDaGFuZ2VMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpY3RpbSIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdUcmVlT2JzZXJ2ZXIuT25HbG9iYWxGb2N1c0NoYW5nZUxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZU9uUHJlRHJhd0xpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmljdGltIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld1RyZWVPYnNlcnZlci5PblByZURyYXdMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVPblNjcm9sbENoYW5nZWRMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpY3RpbSIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdUcmVlT2JzZXJ2ZXIuT25TY3JvbGxDaGFuZ2VkTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlT25Ub3VjaE1vZGVDaGFuZ2VMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpY3RpbSIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdUcmVlT2JzZXJ2ZXIuT25Ub3VjaE1vZGVDaGFuZ2VMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iVmlld1RyZWVPYnNlcnZlci5Pbkdsb2JhbEZvY3VzQ2hhbmdlTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uR2xvYmFsRm9jdXNDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvbGRGb2N1cyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld0ZvY3VzIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlZpZXdUcmVlT2JzZXJ2ZXIuT25HbG9iYWxMYXlvdXRMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25HbG9iYWxMYXlvdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJWaWV3VHJlZU9ic2VydmVyLk9uUHJlRHJhd0xpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvblByZURyYXciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJWaWV3VHJlZU9ic2VydmVyLk9uU2Nyb2xsQ2hhbmdlZExpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvblNjcm9sbENoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJWaWV3VHJlZU9ic2VydmVyLk9uVG91Y2hNb2RlQ2hhbmdlTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uVG91Y2hNb2RlQ2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNJblRvdWNoTW9kZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iV2luZG93IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IldpbmRvdyIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuV2luZG93IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRDb250ZW50VmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cC5MYXlvdXRQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkRmxhZ3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyRmxhZ3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb3NlQWxsUGFuZWxzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb3NlUGFuZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmVJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmRWaWV3QnlJZCIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF0dHJpYnV0ZXMiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDYWxsYmFjayIKKyByZXR1cm49ImFuZHJvaWQudmlldy5XaW5kb3cuQ2FsbGJhY2siCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb250YWluZXIiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuV2luZG93IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGV4dCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db250ZXh0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3VycmVudEZvY3VzIgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWNvclZpZXciCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZlYXR1cmVzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Rm9yY2VkV2luZG93RmxhZ3MiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMYXlvdXRJbmZsYXRlciIKKyByZXR1cm49ImFuZHJvaWQudmlldy5MYXlvdXRJbmZsYXRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvY2FsRmVhdHVyZXMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWb2x1bWVDb250cm9sU3RyZWFtIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V2luZG93TWFuYWdlciIKKyByZXR1cm49ImFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdpbmRvd1N0eWxlIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnJlcy5UeXBlZEFycmF5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzQ2hpbGRyZW4iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzU29mdElucHV0TW9kZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0FjdGl2ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0Zsb2F0aW5nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU2hvcnRjdXRLZXkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYWtlQWN0aXZlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQWN0aXZlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ29uZmlndXJhdGlvbkNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld0NvbmZpZyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5Db25maWd1cmF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wZW5QYW5lbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmVhdHVyZUlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGVla0RlY29yVmlldyIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGVyZm9ybUNvbnRleHRNZW51SWRlbnRpZmllckFjdGlvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwZXJmb3JtUGFuZWxJZGVudGlmaWVyQWN0aW9uIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZWF0dXJlSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwZXJmb3JtUGFuZWxTaG9ydGN1dCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmVhdHVyZUlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXF1ZXN0RmVhdHVyZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmVJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc3RvcmVIaWVyYXJjaHlTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2F2ZWRJbnN0YW5jZVN0YXRlIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzYXZlSGllcmFyY2h5U3RhdGUiCisgcmV0dXJuPSJhbmRyb2lkLm9zLkJ1bmRsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEF0dHJpYnV0ZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhIiB0eXBlPSJhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QmFja2dyb3VuZERyYXdhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkcmF3YWJsZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCYWNrZ3JvdW5kRHJhd2FibGVSZXNvdXJjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc2lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2FsbGJhY2siCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsYmFjayIgdHlwZT0iYW5kcm9pZC52aWV3LldpbmRvdy5DYWxsYmFjayI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDaGlsZERyYXdhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZWF0dXJlSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHJhd2FibGUiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2hpbGRJbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmVJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbnRhaW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRhaW5lciIgdHlwZT0iYW5kcm9pZC52aWV3LldpbmRvdyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb250ZW50VmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGF5b3V0UmVzSUQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb250ZW50VmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29udGVudFZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAuTGF5b3V0UGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERlZmF1bHRXaW5kb3dGb3JtYXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGZWF0dXJlRHJhd2FibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmVJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkcmF3YWJsZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGZWF0dXJlRHJhd2FibGVBbHBoYSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmVhdHVyZUlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFscGhhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RmVhdHVyZURyYXdhYmxlUmVzb3VyY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmVJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZlYXR1cmVEcmF3YWJsZVVyaSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmVhdHVyZUlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZlYXR1cmVJbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmVJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZsYWdzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFzayIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZvcm1hdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcm1hdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEdyYXZpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncmF2aXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TGF5b3V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U29mdElucHV0TW9kZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUaXRsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGl0bGUiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGl0bGVDb2xvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dENvbG9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VHlwZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRWb2x1bWVDb250cm9sU3RyZWFtIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJlYW1UeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0V2luZG93QW5pbWF0aW9ucyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0V2luZG93TWFuYWdlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndtIiB0eXBlPSJhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXBwVG9rZW4iIHR5cGU9ImFuZHJvaWQub3MuSUJpbmRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXBwTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXBlckRpc3BhdGNoS2V5RXZlbnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwZXJEaXNwYXRjaFRvdWNoRXZlbnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwZXJEaXNwYXRjaFRyYWNrYmFsbEV2ZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRha2VLZXlFdmVudHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImdldCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b2dnbGVQYW5lbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmVhdHVyZUlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUX0ZFQVRVUkVTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkVBVFVSRV9DT05URVhUX01FTlUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZFQVRVUkVfQ1VTVE9NX1RJVExFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGRUFUVVJFX0lOREVURVJNSU5BVEVfUFJPR1JFU1MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZFQVRVUkVfTEVGVF9JQ09OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGRUFUVVJFX05PX1RJVExFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGRUFUVVJFX09QVElPTlNfUEFORUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZFQVRVUkVfUFJPR1JFU1MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZFQVRVUkVfUklHSFRfSUNPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSURfQU5EUk9JRF9DT05URU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgyOTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJPR1JFU1NfRU5EIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAwMDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJPR1JFU1NfSU5ERVRFUk1JTkFURV9PRkYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQUk9HUkVTU19JTkRFVEVSTUlOQVRFX09OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJPR1JFU1NfU0VDT05EQVJZX0VORCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMwMDAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBST0dSRVNTX1NFQ09OREFSWV9TVEFSVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwMDAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBST0dSRVNTX1NUQVJUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQUk9HUkVTU19WSVNJQklMSVRZX09GRiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0yIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBST0dSRVNTX1ZJU0lCSUxJVFlfT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IldpbmRvdy5DYWxsYmFjayIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZGlzcGF0Y2hLZXlFdmVudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXNwYXRjaFBvcHVsYXRlQWNjZXNzaWJpbGl0eUV2ZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LmFjY2Vzc2liaWxpdHkuQWNjZXNzaWJpbGl0eUV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpc3BhdGNoVG91Y2hFdmVudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXNwYXRjaFRyYWNrYmFsbEV2ZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQXR0YWNoZWRUb1dpbmRvdyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNvbnRlbnRDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ3JlYXRlUGFuZWxNZW51IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZWF0dXJlSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVudSIgdHlwZT0iYW5kcm9pZC52aWV3Lk1lbnUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DcmVhdGVQYW5lbFZpZXciCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZWF0dXJlSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkRldGFjaGVkRnJvbVdpbmRvdyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbk1lbnVJdGVtU2VsZWN0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmVJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpdGVtIiB0eXBlPSJhbmRyb2lkLnZpZXcuTWVudUl0ZW0iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25NZW51T3BlbmVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZWF0dXJlSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVudSIgdHlwZT0iYW5kcm9pZC52aWV3Lk1lbnUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25QYW5lbENsb3NlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmVhdHVyZUlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1lbnUiIHR5cGU9ImFuZHJvaWQudmlldy5NZW51Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uUHJlcGFyZVBhbmVsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZWF0dXJlSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1lbnUiIHR5cGU9ImFuZHJvaWQudmlldy5NZW51Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU2VhcmNoUmVxdWVzdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uV2luZG93QXR0cmlidXRlc0NoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25XaW5kb3dGb2N1c0NoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imhhc0ZvY3VzIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iV2luZG93TWFuYWdlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnZpZXcuVmlld01hbmFnZXIiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXREZWZhdWx0RGlzcGxheSIKKyByZXR1cm49ImFuZHJvaWQudmlldy5EaXNwbGF5IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlVmlld0ltbWVkaWF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IldpbmRvd01hbmFnZXIuQmFkVG9rZW5FeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IldpbmRvd01hbmFnZXIuQmFkVG9rZW5FeGNlcHRpb24iCisgdHlwZT0iYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXIuQmFkVG9rZW5FeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJXaW5kb3dNYW5hZ2VyLkJhZFRva2VuRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkJhZFRva2VuRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIgorIGV4dGVuZHM9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAuTGF5b3V0UGFyYW1zIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMiCisgdHlwZT0iYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMiCisgdHlwZT0iYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iX3R5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMiCisgdHlwZT0iYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iX3R5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iX2ZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIgorIHR5cGU9ImFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Il90eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Il9mbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJfZm9ybWF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIgorIHR5cGU9ImFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InciIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJfdHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJfZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iX2Zvcm1hdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcyIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieHBvcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5cG9zIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Il90eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Il9mbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJfZm9ybWF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIgorIHR5cGU9ImFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNvcHlGcm9tIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im8iIHR5cGU9ImFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWJ1ZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHB1dCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRpdGxlIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1heVVzZUlucHV0TWV0aG9kIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRpdGxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aXRsZSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyY2VsYWJsZUZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBTFBIQV9DSEFOR0VEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFOSU1BVElPTl9DSEFOR0VEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQlJJR0hUTkVTU19PVkVSUklERV9GVUxMIgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxLjBmIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJSSUdIVE5FU1NfT1ZFUlJJREVfTk9ORSIKKyB0eXBlPSJmbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEuMGYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQlJJR0hUTkVTU19PVkVSUklERV9PRkYiCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAuMGYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJESU1fQU1PVU5UX0NIQU5HRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGSVJTVF9BUFBMSUNBVElPTl9XSU5ET1ciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZJUlNUX1NVQl9XSU5ET1ciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZJUlNUX1NZU1RFTV9XSU5ET1ciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMDAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdTX0NIQU5HRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfQUxMT1dfTE9DS19XSElMRV9TQ1JFRU5fT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfQUxUX0ZPQ1VTQUJMRV9JTSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEzMTA3MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX0JMVVJfQkVISU5EIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX0RJTV9CRUhJTkQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfRElTTUlTU19LRVlHVUFSRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQxOTQzMDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19ESVRIRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MDk2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfRk9SQ0VfTk9UX0ZVTExTQ1JFRU4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMDQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfRlVMTFNDUkVFTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19JR05PUkVfQ0hFRUtfUFJFU1NFUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyNzY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfS0VFUF9TQ1JFRU5fT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19MQVlPVVRfSU5TRVRfREVDT1IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NTUzNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX0xBWU9VVF9JTl9TQ1JFRU4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19MQVlPVVRfTk9fTElNSVRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfTk9UX0ZPQ1VTQUJMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19OT1RfVE9VQ0hBQkxFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19OT1RfVE9VQ0hfTU9EQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX1NDQUxFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2Mzg0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfU0VDVVJFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODE5MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX1NIT1dfV0FMTFBBUEVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTA0ODU3NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX1NIT1dfV0hFTl9MT0NLRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MjQyODgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19UT1VDSEFCTEVfV0hFTl9XQUtJTkciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX1RVUk5fU0NSRUVOX09OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjA5NzE1MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX1dBVENIX09VVFNJREVfVE9VQ0giCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNjIxNDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRk9STUFUX0NIQU5HRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxBU1RfQVBQTElDQVRJT05fV0lORE9XIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTEFTVF9TVUJfV0lORE9XIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTk5OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMQVNUX1NZU1RFTV9XSU5ET1ciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTk5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxBWU9VVF9DSEFOR0VEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNRU1PUllfVFlQRV9DSEFOR0VEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1FTU9SWV9UWVBFX0dQVSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNRU1PUllfVFlQRV9IQVJEV0FSRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNRU1PUllfVFlQRV9OT1JNQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1FTU9SWV9UWVBFX1BVU0hfQlVGRkVSUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NSRUVOX0JSSUdIVE5FU1NfQ0hBTkdFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwNDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NSRUVOX09SSUVOVEFUSU9OX0NIQU5HRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNPRlRfSU5QVVRfQURKVVNUX1BBTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNPRlRfSU5QVVRfQURKVVNUX1JFU0laRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNPRlRfSU5QVVRfQURKVVNUX1VOU1BFQ0lGSUVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTT0ZUX0lOUFVUX0lTX0ZPUldBUkRfTkFWSUdBVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI1NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTT0ZUX0lOUFVUX01BU0tfQURKVVNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjQwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNPRlRfSU5QVVRfTUFTS19TVEFURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNPRlRfSU5QVVRfTU9ERV9DSEFOR0VEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNPRlRfSU5QVVRfU1RBVEVfQUxXQVlTX0hJRERFTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU09GVF9JTlBVVF9TVEFURV9BTFdBWVNfVklTSUJMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU09GVF9JTlBVVF9TVEFURV9ISURERU4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNPRlRfSU5QVVRfU1RBVEVfVU5DSEFOR0VEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTT0ZUX0lOUFVUX1NUQVRFX1VOU1BFQ0lGSUVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTT0ZUX0lOUFVUX1NUQVRFX1ZJU0lCTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRJVExFX0NIQU5HRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX0FQUExJQ0FUSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX0FQUExJQ0FUSU9OX0FUVEFDSEVEX0RJQUxPRyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMDMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9BUFBMSUNBVElPTl9NRURJQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9BUFBMSUNBVElPTl9QQU5FTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9BUFBMSUNBVElPTl9TVEFSVElORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9BUFBMSUNBVElPTl9TVUJfUEFORUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDAyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfQkFTRV9BUFBMSUNBVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9DSEFOR0VEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX0lOUFVUX01FVEhPRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwMTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9JTlBVVF9NRVRIT0RfRElBTE9HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjAxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX0tFWUdVQVJEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjAwNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX0tFWUdVQVJEX0RJQUxPRyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwMDkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9QSE9ORSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwMDIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9QUklPUklUWV9QSE9ORSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwMDciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9TRUFSQ0hfQkFSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjAwMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX1NUQVRVU19CQVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMDAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfU1RBVFVTX0JBUl9QQU5FTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwMTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9TWVNURU1fQUxFUlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMDAzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfU1lTVEVNX0RJQUxPRyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwMDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9TWVNURU1fRVJST1IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMDEwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfU1lTVEVNX09WRVJMQVkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMDA2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfVE9BU1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMDA1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfV0FMTFBBUEVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjAxMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhbHBoYSIKKyB0eXBlPSJmbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJ1dHRvbkJyaWdodG5lc3MiCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkaW1BbW91bnQiCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmbGFncyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmb3JtYXQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZ3Jhdml0eSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJob3Jpem9udGFsTWFyZ2luIgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaG9yaXpvbnRhbFdlaWdodCIKKyB0eXBlPSJmbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1lbW9yeVR5cGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icGFja2FnZU5hbWUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNjcmVlbkJyaWdodG5lc3MiCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzY3JlZW5PcmllbnRhdGlvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzb2Z0SW5wdXRNb2RlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRva2VuIgorIHR5cGU9ImFuZHJvaWQub3MuSUJpbmRlciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InR5cGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idmVydGljYWxNYXJnaW4iCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ2ZXJ0aWNhbFdlaWdodCIKKyB0eXBlPSJmbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IndpbmRvd0FuaW1hdGlvbnMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ieCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQudmlldy5hY2Nlc3NpYmlsaXR5IgorPgorPGNsYXNzIG5hbWU9IkFjY2Vzc2liaWxpdHlFdmVudCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWRkZWRDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCZWZvcmVUZXh0IgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDbGFzc05hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbnRlbnREZXNjcmlwdGlvbiIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3VycmVudEl0ZW1JbmRleCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFdmVudFRpbWUiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEV2ZW50VHlwZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGcm9tSW5kZXgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SXRlbUNvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhY2thZ2VOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJjZWxhYmxlRGF0YSIKKyByZXR1cm49ImFuZHJvaWQub3MuUGFyY2VsYWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZW1vdmVkQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGV4dCIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2phdmEubGFuZy5DaGFyU2VxdWVuY2UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluaXRGcm9tUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyY2VsIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0NoZWNrZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRW5hYmxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNGdWxsU2NyZWVuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1Bhc3N3b3JkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvYnRhaW4iCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuYWNjZXNzaWJpbGl0eS5BY2Nlc3NpYmlsaXR5RXZlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnRUeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib2J0YWluIgorIHJldHVybj0iYW5kcm9pZC52aWV3LmFjY2Vzc2liaWxpdHkuQWNjZXNzaWJpbGl0eUV2ZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVjeWNsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QWRkZWRDb3VudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFkZGVkQ291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCZWZvcmVUZXh0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYmVmb3JlVGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDaGVja2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNDaGVja2VkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENsYXNzTmFtZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNsYXNzTmFtZSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb250ZW50RGVzY3JpcHRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZW50RGVzY3JpcHRpb24iIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q3VycmVudEl0ZW1JbmRleCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnJlbnRJdGVtSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFbmFibGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNFbmFibGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEV2ZW50VGltZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50VGltZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFdmVudFR5cGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJldmVudFR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGcm9tSW5kZXgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmcm9tSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGdWxsU2NyZWVuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNGdWxsU2NyZWVuIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEl0ZW1Db3VudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Iml0ZW1Db3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBhY2thZ2VOYW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2FnZU5hbWUiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGFyY2VsYWJsZURhdGEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJjZWxhYmxlRGF0YSIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBhc3N3b3JkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNQYXNzd29yZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZW1vdmVkQ291bnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZW1vdmVkQ291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyY2VsIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU5WQUxJRF9QT1NJVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1BWF9URVhUX0xFTkdUSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFU19BTExfTUFTSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfTk9USUZJQ0FUSU9OX1NUQVRFX0NIQU5HRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX1ZJRVdfQ0xJQ0tFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9WSUVXX0ZPQ1VTRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfVklFV19MT05HX0NMSUNLRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfVklFV19TRUxFQ1RFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9WSUVXX1RFWFRfQ0hBTkdFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfV0lORE9XX1NUQVRFX0NIQU5HRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkFjY2Vzc2liaWxpdHlFdmVudFNvdXJjZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InNlbmRBY2Nlc3NpYmlsaXR5RXZlbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50VHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmRBY2Nlc3NpYmlsaXR5RXZlbnRVbmNoZWNrZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuYWNjZXNzaWJpbGl0eS5BY2Nlc3NpYmlsaXR5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkFjY2Vzc2liaWxpdHlNYW5hZ2VyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRBY2Nlc3NpYmlsaXR5U2VydmljZUxpc3QiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLmNvbnRlbnQucG0uU2VydmljZUluZm8mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImludGVycnVwdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kQWNjZXNzaWJpbGl0eUV2ZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5hY2Nlc3NpYmlsaXR5LkFjY2Vzc2liaWxpdHlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQudmlldy5hbmltYXRpb24iCis+Cis8Y2xhc3MgbmFtZT0iQWNjZWxlcmF0ZURlY2VsZXJhdGVJbnRlcnBvbGF0b3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5JbnRlcnBvbGF0b3IiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFjY2VsZXJhdGVEZWNlbGVyYXRlSW50ZXJwb2xhdG9yIgorIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uQWNjZWxlcmF0ZURlY2VsZXJhdGVJbnRlcnBvbGF0b3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBY2NlbGVyYXRlRGVjZWxlcmF0ZUludGVycG9sYXRvciIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFjY2VsZXJhdGVEZWNlbGVyYXRlSW50ZXJwb2xhdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0SW50ZXJwb2xhdGlvbiIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnB1dCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQWNjZWxlcmF0ZUludGVycG9sYXRvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkludGVycG9sYXRvciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWNjZWxlcmF0ZUludGVycG9sYXRvciIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFjY2VsZXJhdGVJbnRlcnBvbGF0b3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBY2NlbGVyYXRlSW50ZXJwb2xhdG9yIgorIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uQWNjZWxlcmF0ZUludGVycG9sYXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY3RvciIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFjY2VsZXJhdGVJbnRlcnBvbGF0b3IiCisgdHlwZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5BY2NlbGVyYXRlSW50ZXJwb2xhdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0SW50ZXJwb2xhdGlvbiIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnB1dCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQWxwaGFBbmltYXRpb24iCisgZXh0ZW5kcz0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5BbmltYXRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBbHBoYUFuaW1hdGlvbiIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFscGhhQW5pbWF0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBbHBoYUFuaW1hdGlvbiIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFscGhhQW5pbWF0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZnJvbUFscGhhIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9BbHBoYSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBbmltYXRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ2xvbmVhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBbmltYXRpb24iCisgdHlwZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5BbmltYXRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBbmltYXRpb24iCisgdHlwZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5BbmltYXRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhcHBseVRyYW5zZm9ybWF0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZXJwb2xhdGVkVGltZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InQiIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uVHJhbnNmb3JtYXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2FuY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wdXRlRHVyYXRpb25IaW50IgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbnN1cmVJbnRlcnBvbGF0b3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERldGFjaFdhbGxwYXBlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RHVyYXRpb24iCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpbGxBZnRlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmlsbEJlZm9yZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW50ZXJwb2xhdG9yIgorIHJldHVybj0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5JbnRlcnBvbGF0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVwZWF0Q291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVwZWF0TW9kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdGFydE9mZnNldCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RhcnRUaW1lIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUcmFuc2Zvcm1hdGlvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnJlbnRUaW1lIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXRUcmFuc2Zvcm1hdGlvbiIgdHlwZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5UcmFuc2Zvcm1hdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRaQWRqdXN0bWVudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNFbmRlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzU3RhcnRlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5pdGlhbGl6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnRXaWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnRIZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0ZpbGxFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0luaXRpYWxpemVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzb2x2ZVNpemUiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyZW50U2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc3RyaWN0RHVyYXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkdXJhdGlvbk1pbGxpcyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzY2FsZUN1cnJlbnREdXJhdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNjYWxlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBbmltYXRpb25MaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFuaW1hdGlvbi5BbmltYXRpb25MaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREZXRhY2hXYWxscGFwZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhY2hXYWxscGFwZXIiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RHVyYXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkdXJhdGlvbk1pbGxpcyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGaWxsQWZ0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxsQWZ0ZXIiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RmlsbEJlZm9yZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGxCZWZvcmUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RmlsbEVuYWJsZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxsRW5hYmxlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJbnRlcnBvbGF0b3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzSUQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJbnRlcnBvbGF0b3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpIiB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkludGVycG9sYXRvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZXBlYXRDb3VudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcGVhdENvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UmVwZWF0TW9kZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcGVhdE1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTdGFydE9mZnNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0T2Zmc2V0IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN0YXJ0VGltZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0VGltZU1pbGxpcyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRaQWRqdXN0bWVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InpBZGp1c3RtZW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0Tm93IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3aWxsQ2hhbmdlQm91bmRzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3aWxsQ2hhbmdlVHJhbnNmb3JtYXRpb25NYXRyaXgiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQUJTT0xVVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklORklOSVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkVMQVRJVkVfVE9fUEFSRU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRUxBVElWRV9UT19TRUxGIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRVNUQVJUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRVZFUlNFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFSVF9PTl9GSVJTVF9GUkFNRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlpPUkRFUl9CT1RUT00iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJaT1JERVJfTk9STUFMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJaT1JERVJfVE9QIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkFuaW1hdGlvbi5BbmltYXRpb25MaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25BbmltYXRpb25FbmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFuaW1hdGlvbiIgdHlwZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5BbmltYXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25BbmltYXRpb25SZXBlYXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFuaW1hdGlvbiIgdHlwZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5BbmltYXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25BbmltYXRpb25TdGFydCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYW5pbWF0aW9uIiB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFuaW1hdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQW5pbWF0aW9uLkRlc2NyaXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFuaW1hdGlvbi5EZXNjcmlwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFuaW1hdGlvbi5EZXNjcmlwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9InR5cGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idmFsdWUiCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQW5pbWF0aW9uU2V0IgorIGV4dGVuZHM9ImFuZHJvaWQudmlldy5hbmltYXRpb24uQW5pbWF0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQW5pbWF0aW9uU2V0IgorIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uQW5pbWF0aW9uU2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBbmltYXRpb25TZXQiCisgdHlwZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5BbmltYXRpb25TZXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaGFyZUludGVycG9sYXRvciIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZEFuaW1hdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImEiIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uQW5pbWF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFuaW1hdGlvbnMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFuaW1hdGlvbiZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQW5pbWF0aW9uVXRpbHMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFuaW1hdGlvblV0aWxzIgorIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uQW5pbWF0aW9uVXRpbHMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY3VycmVudEFuaW1hdGlvblRpbWVNaWxsaXMiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZEFuaW1hdGlvbiIKKyByZXR1cm49ImFuZHJvaWQudmlldy5hbmltYXRpb24uQW5pbWF0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvYWRJbnRlcnBvbGF0b3IiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkludGVycG9sYXRvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2FkTGF5b3V0QW5pbWF0aW9uIgorIHJldHVybj0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5MYXlvdXRBbmltYXRpb25Db250cm9sbGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1ha2VJbkFuaW1hdGlvbiIKKyByZXR1cm49ImFuZHJvaWQudmlldy5hbmltYXRpb24uQW5pbWF0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmcm9tTGVmdCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYWtlSW5DaGlsZEJvdHRvbUFuaW1hdGlvbiIKKyByZXR1cm49ImFuZHJvaWQudmlldy5hbmltYXRpb24uQW5pbWF0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1ha2VPdXRBbmltYXRpb24iCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFuaW1hdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9SaWdodCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBbnRpY2lwYXRlSW50ZXJwb2xhdG9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uSW50ZXJwb2xhdG9yIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBbnRpY2lwYXRlSW50ZXJwb2xhdG9yIgorIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uQW50aWNpcGF0ZUludGVycG9sYXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFudGljaXBhdGVJbnRlcnBvbGF0b3IiCisgdHlwZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5BbnRpY2lwYXRlSW50ZXJwb2xhdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVuc2lvbiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFudGljaXBhdGVJbnRlcnBvbGF0b3IiCisgdHlwZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5BbnRpY2lwYXRlSW50ZXJwb2xhdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0SW50ZXJwb2xhdGlvbiIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBbnRpY2lwYXRlT3ZlcnNob290SW50ZXJwb2xhdG9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uSW50ZXJwb2xhdG9yIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBbnRpY2lwYXRlT3ZlcnNob290SW50ZXJwb2xhdG9yIgorIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uQW50aWNpcGF0ZU92ZXJzaG9vdEludGVycG9sYXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFudGljaXBhdGVPdmVyc2hvb3RJbnRlcnBvbGF0b3IiCisgdHlwZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5BbnRpY2lwYXRlT3ZlcnNob290SW50ZXJwb2xhdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVuc2lvbiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFudGljaXBhdGVPdmVyc2hvb3RJbnRlcnBvbGF0b3IiCisgdHlwZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5BbnRpY2lwYXRlT3ZlcnNob290SW50ZXJwb2xhdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVuc2lvbiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4dHJhVGVuc2lvbiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFudGljaXBhdGVPdmVyc2hvb3RJbnRlcnBvbGF0b3IiCisgdHlwZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5BbnRpY2lwYXRlT3ZlcnNob290SW50ZXJwb2xhdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0SW50ZXJwb2xhdGlvbiIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCb3VuY2VJbnRlcnBvbGF0b3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5JbnRlcnBvbGF0b3IiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJvdW5jZUludGVycG9sYXRvciIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkJvdW5jZUludGVycG9sYXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJvdW5jZUludGVycG9sYXRvciIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkJvdW5jZUludGVycG9sYXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEludGVycG9sYXRpb24iCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ3ljbGVJbnRlcnBvbGF0b3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5JbnRlcnBvbGF0b3IiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkN5Y2xlSW50ZXJwb2xhdG9yIgorIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uQ3ljbGVJbnRlcnBvbGF0b3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjeWNsZXMiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDeWNsZUludGVycG9sYXRvciIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkN5Y2xlSW50ZXJwb2xhdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0SW50ZXJwb2xhdGlvbiIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnB1dCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRGVjZWxlcmF0ZUludGVycG9sYXRvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkludGVycG9sYXRvciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGVjZWxlcmF0ZUludGVycG9sYXRvciIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkRlY2VsZXJhdGVJbnRlcnBvbGF0b3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEZWNlbGVyYXRlSW50ZXJwb2xhdG9yIgorIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uRGVjZWxlcmF0ZUludGVycG9sYXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY3RvciIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRlY2VsZXJhdGVJbnRlcnBvbGF0b3IiCisgdHlwZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5EZWNlbGVyYXRlSW50ZXJwb2xhdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0SW50ZXJwb2xhdGlvbiIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnB1dCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iR3JpZExheW91dEFuaW1hdGlvbkNvbnRyb2xsZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5MYXlvdXRBbmltYXRpb25Db250cm9sbGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iR3JpZExheW91dEFuaW1hdGlvbkNvbnRyb2xsZXIiCisgdHlwZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5HcmlkTGF5b3V0QW5pbWF0aW9uQ29udHJvbGxlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iR3JpZExheW91dEFuaW1hdGlvbkNvbnRyb2xsZXIiCisgdHlwZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5HcmlkTGF5b3V0QW5pbWF0aW9uQ29udHJvbGxlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFuaW1hdGlvbiIgdHlwZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5BbmltYXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkdyaWRMYXlvdXRBbmltYXRpb25Db250cm9sbGVyIgorIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uR3JpZExheW91dEFuaW1hdGlvbkNvbnRyb2xsZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbmltYXRpb24iIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uQW5pbWF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5EZWxheSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJvd0RlbGF5IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldENvbHVtbkRlbGF5IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGlyZWN0aW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERpcmVjdGlvblByaW9yaXR5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJvd0RlbGF5IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29sdW1uRGVsYXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5EZWxheSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGlyZWN0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlyZWN0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGlyZWN0aW9uUHJpb3JpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXJlY3Rpb25Qcmlvcml0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJvd0RlbGF5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icm93RGVsYXkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iRElSRUNUSU9OX0JPVFRPTV9UT19UT1AiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRJUkVDVElPTl9IT1JJWk9OVEFMX01BU0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRJUkVDVElPTl9MRUZUX1RPX1JJR0hUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJESVJFQ1RJT05fUklHSFRfVE9fTEVGVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRElSRUNUSU9OX1RPUF9UT19CT1RUT00iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRJUkVDVElPTl9WRVJUSUNBTF9NQVNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQUklPUklUWV9DT0xVTU4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBSSU9SSVRZX05PTkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBSSU9SSVRZX1JPVyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkdyaWRMYXlvdXRBbmltYXRpb25Db250cm9sbGVyLkFuaW1hdGlvblBhcmFtZXRlcnMiCisgZXh0ZW5kcz0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5MYXlvdXRBbmltYXRpb25Db250cm9sbGVyLkFuaW1hdGlvblBhcmFtZXRlcnMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkdyaWRMYXlvdXRBbmltYXRpb25Db250cm9sbGVyLkFuaW1hdGlvblBhcmFtZXRlcnMiCisgdHlwZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5HcmlkTGF5b3V0QW5pbWF0aW9uQ29udHJvbGxlci5BbmltYXRpb25QYXJhbWV0ZXJzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iY29sdW1uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNvbHVtbnNDb3VudCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJyb3ciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icm93c0NvdW50IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iSW50ZXJwb2xhdG9yIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0SW50ZXJwb2xhdGlvbiIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iTGF5b3V0QW5pbWF0aW9uQ29udHJvbGxlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGF5b3V0QW5pbWF0aW9uQ29udHJvbGxlciIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkxheW91dEFuaW1hdGlvbkNvbnRyb2xsZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxheW91dEFuaW1hdGlvbkNvbnRyb2xsZXIiCisgdHlwZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5MYXlvdXRBbmltYXRpb25Db250cm9sbGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYW5pbWF0aW9uIiB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFuaW1hdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGF5b3V0QW5pbWF0aW9uQ29udHJvbGxlciIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkxheW91dEFuaW1hdGlvbkNvbnRyb2xsZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbmltYXRpb24iIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uQW5pbWF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWxheSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRBbmltYXRpb24iCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFuaW1hdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbmltYXRpb25Gb3JWaWV3IgorIHJldHVybj0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5BbmltYXRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVsYXkiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWxheUZvclZpZXciCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnRlcnBvbGF0b3IiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkludGVycG9sYXRvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPcmRlciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUcmFuc2Zvcm1lZEluZGV4IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uTGF5b3V0QW5pbWF0aW9uQ29udHJvbGxlci5BbmltYXRpb25QYXJhbWV0ZXJzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRG9uZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QW5pbWF0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc291cmNlSUQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBbmltYXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbmltYXRpb24iIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uQW5pbWF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERlbGF5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVsYXkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEludGVycG9sYXRvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvdXJjZUlEIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW50ZXJwb2xhdG9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZXJwb2xhdG9yIiB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkludGVycG9sYXRvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPcmRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9yZGVyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndpbGxPdmVybGFwIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Ik9SREVSX05PUk1BTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1JERVJfUkFORE9NIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUkRFUl9SRVZFUlNFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJtQW5pbWF0aW9uIgorIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uQW5pbWF0aW9uIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibUludGVycG9sYXRvciIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkludGVycG9sYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1SYW5kb21pemVyIgorIHR5cGU9ImphdmEudXRpbC5SYW5kb20iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTGF5b3V0QW5pbWF0aW9uQ29udHJvbGxlci5BbmltYXRpb25QYXJhbWV0ZXJzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxheW91dEFuaW1hdGlvbkNvbnRyb2xsZXIuQW5pbWF0aW9uUGFyYW1ldGVycyIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkxheW91dEFuaW1hdGlvbkNvbnRyb2xsZXIuQW5pbWF0aW9uUGFyYW1ldGVycyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9ImNvdW50IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImluZGV4IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJMaW5lYXJJbnRlcnBvbGF0b3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5JbnRlcnBvbGF0b3IiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxpbmVhckludGVycG9sYXRvciIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkxpbmVhckludGVycG9sYXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxpbmVhckludGVycG9sYXRvciIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkxpbmVhckludGVycG9sYXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEludGVycG9sYXRpb24iCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik92ZXJzaG9vdEludGVycG9sYXRvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkludGVycG9sYXRvciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iT3ZlcnNob290SW50ZXJwb2xhdG9yIgorIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uT3ZlcnNob290SW50ZXJwb2xhdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iT3ZlcnNob290SW50ZXJwb2xhdG9yIgorIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uT3ZlcnNob290SW50ZXJwb2xhdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVuc2lvbiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik92ZXJzaG9vdEludGVycG9sYXRvciIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLk92ZXJzaG9vdEludGVycG9sYXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEludGVycG9sYXRpb24iCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUm90YXRlQW5pbWF0aW9uIgorIGV4dGVuZHM9ImFuZHJvaWQudmlldy5hbmltYXRpb24uQW5pbWF0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUm90YXRlQW5pbWF0aW9uIgorIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uUm90YXRlQW5pbWF0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSb3RhdGVBbmltYXRpb24iCisgdHlwZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5Sb3RhdGVBbmltYXRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmcm9tRGVncmVlcyIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvRGVncmVlcyIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJvdGF0ZUFuaW1hdGlvbiIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLlJvdGF0ZUFuaW1hdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZyb21EZWdyZWVzIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9EZWdyZWVzIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGl2b3RYIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGl2b3RZIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUm90YXRlQW5pbWF0aW9uIgorIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uUm90YXRlQW5pbWF0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZnJvbURlZ3JlZXMiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b0RlZ3JlZXMiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwaXZvdFhUeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBpdm90WFZhbHVlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGl2b3RZVHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwaXZvdFlWYWx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTY2FsZUFuaW1hdGlvbiIKKyBleHRlbmRzPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFuaW1hdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNjYWxlQW5pbWF0aW9uIgorIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uU2NhbGVBbmltYXRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNjYWxlQW5pbWF0aW9uIgorIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uU2NhbGVBbmltYXRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmcm9tWCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvWCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZyb21ZIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9ZIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2NhbGVBbmltYXRpb24iCisgdHlwZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5TY2FsZUFuaW1hdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZyb21YIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9YIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZnJvbVkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b1kiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwaXZvdFgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwaXZvdFkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTY2FsZUFuaW1hdGlvbiIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLlNjYWxlQW5pbWF0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZnJvbVgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b1giIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmcm9tWSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvWSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBpdm90WFR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGl2b3RYVmFsdWUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwaXZvdFlUeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBpdm90WVZhbHVlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlRyYW5zZm9ybWF0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUcmFuc2Zvcm1hdGlvbiIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLlRyYW5zZm9ybWF0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wb3NlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idCIgdHlwZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5UcmFuc2Zvcm1hdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbHBoYSIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1hdHJpeCIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuTWF0cml4IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRyYW5zZm9ybWF0aW9uVHlwZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0IiB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLlRyYW5zZm9ybWF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFscGhhIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxwaGEiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRyYW5zZm9ybWF0aW9uVHlwZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRyYW5zZm9ybWF0aW9uVHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvU2hvcnRTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iVFlQRV9BTFBIQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfQk9USCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfSURFTlRJVFkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX01BVFJJWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1BbHBoYSIKKyB0eXBlPSJmbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1NYXRyaXgiCisgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5NYXRyaXgiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJtVHJhbnNmb3JtYXRpb25UeXBlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUcmFuc2xhdGVBbmltYXRpb24iCisgZXh0ZW5kcz0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5BbmltYXRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUcmFuc2xhdGVBbmltYXRpb24iCisgdHlwZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5UcmFuc2xhdGVBbmltYXRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRyYW5zbGF0ZUFuaW1hdGlvbiIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLlRyYW5zbGF0ZUFuaW1hdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZyb21YRGVsdGEiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b1hEZWx0YSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZyb21ZRGVsdGEiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b1lEZWx0YSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRyYW5zbGF0ZUFuaW1hdGlvbiIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLlRyYW5zbGF0ZUFuaW1hdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZyb21YVHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmcm9tWFZhbHVlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9YVHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b1hWYWx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZyb21ZVHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmcm9tWVZhbHVlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9ZVHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b1lWYWx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZCIKKz4KKzxjbGFzcyBuYW1lPSJCYXNlSW5wdXRDb25uZWN0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5JbnB1dENvbm5lY3Rpb24iPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJhc2VJbnB1dENvbm5lY3Rpb24iCisgdHlwZT0iYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLkJhc2VJbnB1dENvbm5lY3Rpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXRWaWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZnVsbEVkaXRvciIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImJlZ2luQmF0Y2hFZGl0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhck1ldGFLZXlTdGF0ZXMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0ZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21taXRDb21wbGV0aW9uIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLkNvbXBsZXRpb25JbmZvIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbW1pdFRleHQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdDdXJzb3JQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlbGV0ZVN1cnJvdW5kaW5nVGV4dCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnRMZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmlnaHRMZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmRCYXRjaEVkaXQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmlzaENvbXBvc2luZ1RleHQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbXBvc2luZ1NwYW5FbmQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb21wb3NpbmdTcGFuU3RhcnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDdXJzb3JDYXBzTW9kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxTW9kZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFZGl0YWJsZSIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5FZGl0YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeHRyYWN0ZWRUZXh0IgorIHJldHVybj0iYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLkV4dHJhY3RlZFRleHQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5FeHRyYWN0ZWRUZXh0UmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUZXh0QWZ0ZXJDdXJzb3IiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUZXh0QmVmb3JlQ3Vyc29yIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGVyZm9ybUNvbnRleHRNZW51QWN0aW9uIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwZXJmb3JtRWRpdG9yQWN0aW9uIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aW9uQ29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBlcmZvcm1Qcml2YXRlQ29tbWFuZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlQ29tcG9zaW5nU3BhbnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXBvcnRGdWxsc2NyZWVuTW9kZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVuYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VuZEtleUV2ZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb21wb3NpbmdTcGFucyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb21wb3NpbmdUZXh0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3Q3Vyc29yUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTZWxlY3Rpb24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb21wbGV0aW9uSW5mbyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29tcGxldGlvbkluZm8iCisgdHlwZT0iYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLkNvbXBsZXRpb25JbmZvIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbXBsZXRpb25JbmZvIgorIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5Db21wbGV0aW9uSW5mbyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYWJlbCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SWQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExhYmVsIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQb3NpdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUZXh0IgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJFZGl0b3JJbmZvIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudGV4dC5JbnB1dFR5cGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFZGl0b3JJbmZvIgorIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5FZGl0b3JJbmZvIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHVtcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InB3IiB0eXBlPSJhbmRyb2lkLnV0aWwuUHJpbnRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlZml4IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU1FX0FDVElPTl9ET05FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTUVfQUNUSU9OX0dPIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTUVfQUNUSU9OX05FWFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklNRV9BQ1RJT05fTk9ORSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU1FX0FDVElPTl9TRUFSQ0giCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklNRV9BQ1RJT05fU0VORCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU1FX0FDVElPTl9VTlNQRUNJRklFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU1FX0ZMQUdfTk9fQUNDRVNTT1JZX0FDVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUzNjg3MDkxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTUVfRkxBR19OT19FTlRFUl9BQ1RJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDczNzQxODI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklNRV9GTEFHX05PX0VYVFJBQ1RfVUkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNjg0MzU0NTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU1FX01BU0tfQUNUSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjU1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklNRV9OVUxMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhY3Rpb25JZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhY3Rpb25MYWJlbCIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZXh0cmFzIgorIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZmllbGRJZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmaWVsZE5hbWUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImhpbnRUZXh0IgorIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpbWVPcHRpb25zIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImluaXRpYWxDYXBzTW9kZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpbml0aWFsU2VsRW5kIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImluaXRpYWxTZWxTdGFydCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpbnB1dFR5cGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibGFiZWwiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InBhY2thZ2VOYW1lIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwcml2YXRlSW1lT3B0aW9ucyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkV4dHJhY3RlZFRleHQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFeHRyYWN0ZWRUZXh0IgorIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5FeHRyYWN0ZWRUZXh0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX1NFTEVDVElORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19TSU5HTEVfTElORSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZmxhZ3MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icGFydGlhbEVuZE9mZnNldCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwYXJ0aWFsU3RhcnRPZmZzZXQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2VsZWN0aW9uRW5kIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNlbGVjdGlvblN0YXJ0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN0YXJ0T2Zmc2V0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRleHQiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJFeHRyYWN0ZWRUZXh0UmVxdWVzdCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkV4dHJhY3RlZFRleHRSZXF1ZXN0IgorIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5FeHRyYWN0ZWRUZXh0UmVxdWVzdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9QYXJjZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZmxhZ3MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaGludE1heENoYXJzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImhpbnRNYXhMaW5lcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0b2tlbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW5wdXRCaW5kaW5nIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnB1dEJpbmRpbmciCisgdHlwZT0iYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLklucHV0QmluZGluZyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbm4iIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5JbnB1dENvbm5lY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbm5Ub2tlbiIgdHlwZT0iYW5kcm9pZC5vcy5JQmluZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1aWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IklucHV0QmluZGluZyIKKyB0eXBlPSJhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuSW5wdXRCaW5kaW5nIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29ubiIgdHlwZT0iYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLklucHV0Q29ubmVjdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmluZGluZyIgdHlwZT0iYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLklucHV0QmluZGluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29ubmVjdGlvbiIKKyByZXR1cm49ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5JbnB1dENvbm5lY3Rpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29ubmVjdGlvblRva2VuIgorIHJldHVybj0iYW5kcm9pZC5vcy5JQmluZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBpZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVaWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IklucHV0Q29ubmVjdGlvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImJlZ2luQmF0Y2hFZGl0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyTWV0YUtleVN0YXRlcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdGVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tbWl0Q29tcGxldGlvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLkNvbXBsZXRpb25JbmZvIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbW1pdFRleHQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld0N1cnNvclBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVsZXRlU3Vycm91bmRpbmdUZXh0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZWZ0TGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJpZ2h0TGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5kQmF0Y2hFZGl0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmlzaENvbXBvc2luZ1RleHQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3Vyc29yQ2Fwc01vZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxTW9kZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeHRyYWN0ZWRUZXh0IgorIHJldHVybj0iYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLkV4dHJhY3RlZFRleHQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdCIgdHlwZT0iYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLkV4dHJhY3RlZFRleHRSZXF1ZXN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRleHRBZnRlckN1cnNvciIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRleHRCZWZvcmVDdXJzb3IiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwZXJmb3JtQ29udGV4dE1lbnVBY3Rpb24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGVyZm9ybUVkaXRvckFjdGlvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZWRpdG9yQWN0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGVyZm9ybVByaXZhdGVDb21tYW5kIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcG9ydEZ1bGxzY3JlZW5Nb2RlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmFibGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmRLZXlFdmVudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb21wb3NpbmdUZXh0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdDdXJzb3JQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNlbGVjdGlvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJHRVRfRVhUUkFDVEVEX1RFWFRfTU9OSVRPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0VUX1RFWFRfV0lUSF9TVFlMRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iSW5wdXRDb25uZWN0aW9uV3JhcHBlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuSW5wdXRDb25uZWN0aW9uIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnB1dENvbm5lY3Rpb25XcmFwcGVyIgorIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5JbnB1dENvbm5lY3Rpb25XcmFwcGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuSW5wdXRDb25uZWN0aW9uIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtdXRhYmxlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYmVnaW5CYXRjaEVkaXQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyTWV0YUtleVN0YXRlcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbW1pdENvbXBsZXRpb24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuQ29tcGxldGlvbkluZm8iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tbWl0VGV4dCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld0N1cnNvclBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVsZXRlU3Vycm91bmRpbmdUZXh0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVmdExlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaWdodExlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZEJhdGNoRWRpdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmluaXNoQ29tcG9zaW5nVGV4dCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3Vyc29yQ2Fwc01vZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcU1vZGVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RXh0cmFjdGVkVGV4dCIKKyByZXR1cm49ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5FeHRyYWN0ZWRUZXh0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuRXh0cmFjdGVkVGV4dFJlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGV4dEFmdGVyQ3Vyc29yIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRleHRCZWZvcmVDdXJzb3IiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGVyZm9ybUNvbnRleHRNZW51QWN0aW9uIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwZXJmb3JtRWRpdG9yQWN0aW9uIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZWRpdG9yQWN0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGVyZm9ybVByaXZhdGVDb21tYW5kIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXBvcnRGdWxsc2NyZWVuTW9kZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVuYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VuZEtleUV2ZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb21wb3NpbmdUZXh0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3Q3Vyc29yUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTZWxlY3Rpb24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUYXJnZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5JbnB1dENvbm5lY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IklucHV0TWV0aG9kIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYXR0YWNoVG9rZW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRva2VuIiB0eXBlPSJhbmRyb2lkLm9zLklCaW5kZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYmluZElucHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiaW5kaW5nIiB0eXBlPSJhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuSW5wdXRCaW5kaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVNlc3Npb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbGxiYWNrIiB0eXBlPSJhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuSW5wdXRNZXRob2QuU2Vzc2lvbkNhbGxiYWNrIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImhpZGVTb2Z0SW5wdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdFJlY2VpdmVyIiB0eXBlPSJhbmRyb2lkLm9zLlJlc3VsdFJlY2VpdmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc3RhcnRJbnB1dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXRDb25uZWN0aW9uIiB0eXBlPSJhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuSW5wdXRDb25uZWN0aW9uIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRyaWJ1dGUiIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5FZGl0b3JJbmZvIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJldm9rZVNlc3Npb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlc3Npb24iIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5JbnB1dE1ldGhvZFNlc3Npb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2Vzc2lvbkVuYWJsZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlc3Npb24iIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5JbnB1dE1ldGhvZFNlc3Npb24iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2hvd1NvZnRJbnB1dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0UmVjZWl2ZXIiIHR5cGU9ImFuZHJvaWQub3MuUmVzdWx0UmVjZWl2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRJbnB1dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXRDb25uZWN0aW9uIiB0eXBlPSJhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuSW5wdXRDb25uZWN0aW9uIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmZvIiB0eXBlPSJhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuRWRpdG9ySW5mbyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bmJpbmRJbnB1dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IlNFUlZJQ0VfSU5URVJGQUNFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FuZHJvaWQudmlldy5JbnB1dE1ldGhvZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRVJWSUNFX01FVEFfREFUQSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLnZpZXcuaW0mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0hPV19FWFBMSUNJVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0hPV19GT1JDRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IklucHV0TWV0aG9kLlNlc3Npb25DYWxsYmFjayIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ic2Vzc2lvbkNyZWF0ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlc3Npb24iIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5JbnB1dE1ldGhvZFNlc3Npb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IklucHV0TWV0aG9kSW5mbyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW5wdXRNZXRob2RJbmZvIgorIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5JbnB1dE1ldGhvZEluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VydmljZSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlJlc29sdmVJbmZvIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW5wdXRNZXRob2RJbmZvIgorIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5JbnB1dE1ldGhvZEluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYWNrYWdlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2xhc3NOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYWJlbCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2V0dGluZ3NBY3Rpdml0eSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHVtcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InB3IiB0eXBlPSJhbmRyb2lkLnV0aWwuUHJpbnRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlZml4IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbXBvbmVudCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElkIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJc0RlZmF1bHRSZXNvdXJjZUlkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhY2thZ2VOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZXJ2aWNlSW5mbyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5wbS5TZXJ2aWNlSW5mbyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZXJ2aWNlTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2V0dGluZ3NBY3Rpdml0eSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZEljb24iCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvYWRMYWJlbCIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBtIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUb1BhcmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ1JFQVRPUiIKKyB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUuQ3JlYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW5wdXRNZXRob2RNYW5hZ2VyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJkaXNwbGF5Q29tcGxldGlvbnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29tcGxldGlvbnMiIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5Db21wbGV0aW9uSW5mb1tdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVuYWJsZWRJbnB1dE1ldGhvZExpc3QiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuSW5wdXRNZXRob2RJbmZvJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnB1dE1ldGhvZExpc3QiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuSW5wdXRNZXRob2RJbmZvJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoaWRlU29mdElucHV0RnJvbUlucHV0TWV0aG9kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idG9rZW4iIHR5cGU9ImFuZHJvaWQub3MuSUJpbmRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoaWRlU29mdElucHV0RnJvbVdpbmRvdyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpbmRvd1Rva2VuIiB0eXBlPSJhbmRyb2lkLm9zLklCaW5kZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGlkZVNvZnRJbnB1dEZyb21XaW5kb3ciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aW5kb3dUb2tlbiIgdHlwZT0iYW5kcm9pZC5vcy5JQmluZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRSZWNlaXZlciIgdHlwZT0iYW5kcm9pZC5vcy5SZXN1bHRSZWNlaXZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoaWRlU3RhdHVzSWNvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImltZVRva2VuIiB0eXBlPSJhbmRyb2lkLm9zLklCaW5kZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNBY2NlcHRpbmdUZXh0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0FjdGl2ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQWN0aXZlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0Z1bGxzY3JlZW5Nb2RlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1dhdGNoaW5nQ3Vyc29yIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzdGFydElucHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VuZEFwcFByaXZhdGVDb21tYW5kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW5wdXRNZXRob2QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0b2tlbiIgdHlwZT0iYW5kcm9pZC5vcy5JQmluZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaG93SW5wdXRNZXRob2RQaWNrZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNob3dTb2Z0SW5wdXQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaG93U29mdElucHV0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdFJlY2VpdmVyIiB0eXBlPSJhbmRyb2lkLm9zLlJlc3VsdFJlY2VpdmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNob3dTb2Z0SW5wdXRGcm9tSW5wdXRNZXRob2QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0b2tlbiIgdHlwZT0iYW5kcm9pZC5vcy5JQmluZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNob3dTdGF0dXNJY29uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW1lVG9rZW4iIHR5cGU9ImFuZHJvaWQub3MuSUJpbmRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2FnZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imljb25JZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvZ2dsZVNvZnRJbnB1dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNob3dGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoaWRlRmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b2dnbGVTb2Z0SW5wdXRGcm9tV2luZG93IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2luZG93VG9rZW4iIHR5cGU9ImFuZHJvaWQub3MuSUJpbmRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2hvd0ZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhpZGVGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZUN1cnNvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZWZ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvcCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3R0b20iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVFeHRyYWN0ZWRUZXh0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRva2VuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5FeHRyYWN0ZWRUZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZVNlbGVjdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWxTdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWxFbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FuZGlkYXRlc1N0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbmRpZGF0ZXNFbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkhJREVfSU1QTElDSVRfT05MWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSElERV9OT1RfQUxXQVlTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRVNVTFRfSElEREVOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRVNVTFRfU0hPV04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFU1VMVF9VTkNIQU5HRURfSElEREVOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRVNVTFRfVU5DSEFOR0VEX1NIT1dOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTSE9XX0ZPUkNFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0hPV19JTVBMSUNJVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJJbnB1dE1ldGhvZFNlc3Npb24iCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJhcHBQcml2YXRlQ29tbWFuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXNwYXRjaEtleUV2ZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZXEiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsbGJhY2siIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5JbnB1dE1ldGhvZFNlc3Npb24uRXZlbnRDYWxsYmFjayI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXNwYXRjaFRyYWNrYmFsbEV2ZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZXEiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5Nb3Rpb25FdmVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsbGJhY2siIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5JbnB1dE1ldGhvZFNlc3Npb24uRXZlbnRDYWxsYmFjayI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXNwbGF5Q29tcGxldGlvbnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbXBsZXRpb25zIiB0eXBlPSJhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuQ29tcGxldGlvbkluZm9bXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaW5pc2hJbnB1dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b2dnbGVTb2Z0SW5wdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNob3dGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoaWRlRmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVDdXJzb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld0N1cnNvciIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5SZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZUV4dHJhY3RlZFRleHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRva2VuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5FeHRyYWN0ZWRUZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZVNlbGVjdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2xkU2VsU3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2xkU2VsRW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1NlbFN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1NlbEVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYW5kaWRhdGVzU3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FuZGlkYXRlc0VuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iSW5wdXRNZXRob2RTZXNzaW9uLkV2ZW50Q2FsbGJhY2siCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImZpbmlzaGVkRXZlbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlcSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQud2Via2l0IgorPgorPGNsYXNzIG5hbWU9IkNhY2hlTWFuYWdlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDYWNoZU1hbmFnZXIiCisgdHlwZT0iYW5kcm9pZC53ZWJraXQuQ2FjaGVNYW5hZ2VyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNhY2hlRGlzYWJsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5kQ2FjaGVUcmFuc2FjdGlvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENhY2hlRmlsZSIKKyByZXR1cm49ImFuZHJvaWQud2Via2l0LkNhY2hlTWFuYWdlci5DYWNoZVJlc3VsdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlYWRlcnMiIHR5cGU9ImphdmEudXRpbC5NYXAmbHQ7amF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2FjaGVGaWxlQmFzZURpciIKKyByZXR1cm49ImphdmEuaW8uRmlsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNhdmVDYWNoZUZpbGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FjaGVSZXQiIHR5cGU9ImFuZHJvaWQud2Via2l0LkNhY2hlTWFuYWdlci5DYWNoZVJlc3VsdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydENhY2hlVHJhbnNhY3Rpb24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDYWNoZU1hbmFnZXIuQ2FjaGVSZXN1bHQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2FjaGVNYW5hZ2VyLkNhY2hlUmVzdWx0IgorIHR5cGU9ImFuZHJvaWQud2Via2l0LkNhY2hlTWFuYWdlci5DYWNoZVJlc3VsdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZW50RGlzcG9zaXRpb24iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbnRlbnRMZW5ndGgiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVUYWciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVuY29kaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeHBpcmVzIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeHBpcmVzU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIdHRwU3RhdHVzQ29kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnB1dFN0cmVhbSIKKyByZXR1cm49ImphdmEuaW8uSW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGFzdE1vZGlmaWVkIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhbFBhdGgiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvY2F0aW9uIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNaW1lVHlwZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T3V0cHV0U3RyZWFtIgorIHJldHVybj0iamF2YS5pby5PdXRwdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RW5jb2RpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmNvZGluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJbnB1dFN0cmVhbSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbSIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb25zb2xlTWVzc2FnZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29uc29sZU1lc3NhZ2UiCisgdHlwZT0iYW5kcm9pZC53ZWJraXQuQ29uc29sZU1lc3NhZ2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2VJZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZU51bWJlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtc2dMZXZlbCIgdHlwZT0iYW5kcm9pZC53ZWJraXQuQ29uc29sZU1lc3NhZ2UuTWVzc2FnZUxldmVsIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ibGluZU51bWJlciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtZXNzYWdlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtZXNzYWdlTGV2ZWwiCisgcmV0dXJuPSJhbmRyb2lkLndlYmtpdC5Db25zb2xlTWVzc2FnZS5NZXNzYWdlTGV2ZWwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic291cmNlSWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRW51bSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImFuZHJvaWQud2Via2l0LkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlcyIKKyByZXR1cm49ImFuZHJvaWQud2Via2l0LkNvbnNvbGVNZXNzYWdlLk1lc3NhZ2VMZXZlbFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb29raWVNYW5hZ2VyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJhY2NlcHRDb29raWUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29va2llIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iYW5kcm9pZC53ZWJraXQuQ29va2llTWFuYWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzQ29va2llcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVBbGxDb29raWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZUV4cGlyZWRDb29raWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZVNlc3Npb25Db29raWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFjY2VwdENvb2tpZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjZXB0IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvb2tpZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29va2llU3luY01hbmFnZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC53ZWJraXQuV2ViU3luY01hbmFnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVJbnN0YW5jZSIKKyByZXR1cm49ImFuZHJvaWQud2Via2l0LkNvb2tpZVN5bmNNYW5hZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJhbmRyb2lkLndlYmtpdC5Db29raWVTeW5jTWFuYWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3luY0Zyb21SYW1Ub0ZsYXNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEYXRlU29ydGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEYXRlU29ydGVyIgorIHR5cGU9ImFuZHJvaWQud2Via2l0LkRhdGVTb3J0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEJvdW5kYXJ5IgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbmRleCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMYWJlbCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJEQVlfQ09VTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iRG93bmxvYWRMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uRG93bmxvYWRTdGFydCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1c2VyQWdlbnQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRlbnREaXNwb3NpdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWltZXR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRlbnRMZW5ndGgiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9Ikdlb2xvY2F0aW9uUGVybWlzc2lvbnMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iR2VvbG9jYXRpb25QZXJtaXNzaW9ucyIKKyB0eXBlPSJhbmRyb2lkLndlYmtpdC5HZW9sb2NhdGlvblBlcm1pc3Npb25zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFsbG93IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZ2luIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZ2luIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyQWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbGxvd2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZ2luIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsYmFjayIgdHlwZT0iYW5kcm9pZC53ZWJraXQuVmFsdWVDYWxsYmFjayZsdDtqYXZhLmxhbmcuQm9vbGVhbiZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJhbmRyb2lkLndlYmtpdC5HZW9sb2NhdGlvblBlcm1pc3Npb25zIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T3JpZ2lucyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbGxiYWNrIiB0eXBlPSJhbmRyb2lkLndlYmtpdC5WYWx1ZUNhbGxiYWNrJmx0O2phdmEudXRpbC5TZXQmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJHZW9sb2NhdGlvblBlcm1pc3Npb25zLkNhbGxiYWNrIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJpbnZva2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWdpbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxsb3ciIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlbWVtYmVyIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJIdHRwQXV0aEhhbmRsZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC5vcy5IYW5kbGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNhbmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJvY2VlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVzZXJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXNzd29yZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1c2VIdHRwQXV0aFVzZXJuYW1lUGFzc3dvcmQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkpzUHJvbXB0UmVzdWx0IgorIGV4dGVuZHM9ImFuZHJvaWQud2Via2l0LkpzUmVzdWx0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNvbmZpcm0iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSnNSZXN1bHQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJjYW5jZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29uZmlybSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3YWtlVXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJtUmVzdWx0IgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTWltZVR5cGVNYXAiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRFeHRlbnNpb25Gcm9tTWltZVR5cGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtaW1lVHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGaWxlRXh0ZW5zaW9uRnJvbVVybCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1pbWVUeXBlRnJvbUV4dGVuc2lvbiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4dGVuc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaW5nbGV0b24iCisgcmV0dXJuPSJhbmRyb2lkLndlYmtpdC5NaW1lVHlwZU1hcCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc0V4dGVuc2lvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4dGVuc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNNaW1lVHlwZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbWVUeXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBsdWdpbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQbHVnaW4iCisgdHlwZT0iYW5kcm9pZC53ZWJraXQuUGx1Z2luIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzY3JpcHRpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkaXNwYXRjaENsaWNrRXZlbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlc2NyaXB0aW9uIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpbGVOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGF0aCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDbGlja0hhbmRsZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhhbmRsZXIiIHR5cGU9ImFuZHJvaWQud2Via2l0LlBsdWdpbi5QcmVmZXJlbmNlc0NsaWNrSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREZXNjcmlwdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzY3JpcHRpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RmlsZU5hbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGVOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE5hbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGF0aCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iUGx1Z2luLlByZWZlcmVuY2VzQ2xpY2tIYW5kbGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJoYW5kbGVDbGlja0V2ZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iUGx1Z2luRGF0YSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBsdWdpbkRhdGEiCisgdHlwZT0iYW5kcm9pZC53ZWJraXQuUGx1Z2luRGF0YSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyZWFtIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlYWRlcnMiIHR5cGU9ImphdmEudXRpbC5NYXAmbHQ7amF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZ1tdJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudExlbmd0aCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIZWFkZXJzIgorIHJldHVybj0iamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nW10mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5wdXRTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RhdHVzQ29kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBsdWdpbkxpc3QiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGx1Z2luTGlzdCIKKyB0eXBlPSJhbmRyb2lkLndlYmtpdC5QbHVnaW5MaXN0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkUGx1Z2luIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBsdWdpbiIgdHlwZT0iYW5kcm9pZC53ZWJraXQuUGx1Z2luIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGlzdCIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwbHVnaW5DbGlja2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZVBsdWdpbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbHVnaW4iIHR5cGU9ImFuZHJvaWQud2Via2l0LlBsdWdpbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iUGx1Z2luU3R1YiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldEVtYmVkZGVkVmlldyIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Ik5QUCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGdWxsU2NyZWVuVmlldyIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Ik5QUCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iU3NsRXJyb3JIYW5kbGVyIgorIGV4dGVuZHM9ImFuZHJvaWQub3MuSGFuZGxlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJjYW5jZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByb2NlZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlVSTFV0aWwiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVVJMVXRpbCIKKyB0eXBlPSJhbmRyb2lkLndlYmtpdC5VUkxVdGlsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNvbXBvc2VTZWFyY2hVcmwiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluUXVlcnkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRlbXBsYXRlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxdWVyeVBsYWNlSG9sZGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlY29kZSIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imd1ZXNzRmlsZU5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZW50RGlzcG9zaXRpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbWVUeXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imd1ZXNzVXJsIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpblVybCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0Fib3V0VXJsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNBc3NldFVybCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ29udGVudFVybCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ29va2llbGVzc1Byb3h5VXJsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0RhdGFVcmwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0ZpbGVVcmwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0h0dHBVcmwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0h0dHBzVXJsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNKYXZhU2NyaXB0VXJsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNOZXR3b3JrVXJsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNWYWxpZFVybCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0cmlwQW5jaG9yIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlVybEludGVyY2VwdEhhbmRsZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldFBsdWdpbkRhdGEiCisgcmV0dXJuPSJhbmRyb2lkLndlYmtpdC5QbHVnaW5EYXRhIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWFkZXJzIiB0eXBlPSJqYXZhLnV0aWwuTWFwJmx0O2phdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlcnZpY2UiCisgcmV0dXJuPSJhbmRyb2lkLndlYmtpdC5DYWNoZU1hbmFnZXIuQ2FjaGVSZXN1bHQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlYWRlcnMiIHR5cGU9ImphdmEudXRpbC5NYXAmbHQ7amF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlVybEludGVyY2VwdFJlZ2lzdHJ5IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVXJsSW50ZXJjZXB0UmVnaXN0cnkiCisgdHlwZT0iYW5kcm9pZC53ZWJraXQuVXJsSW50ZXJjZXB0UmVnaXN0cnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0UGx1Z2luRGF0YSIKKyByZXR1cm49ImFuZHJvaWQud2Via2l0LlBsdWdpbkRhdGEiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVhZGVycyIgdHlwZT0iamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdXJyb2dhdGUiCisgcmV0dXJuPSJhbmRyb2lkLndlYmtpdC5DYWNoZU1hbmFnZXIuQ2FjaGVSZXN1bHQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVhZGVycyIgdHlwZT0iamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3RlckhhbmRsZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJhbmRyb2lkLndlYmtpdC5VcmxJbnRlcmNlcHRIYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFVybEludGVyY2VwdERpc2FibGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlzYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5yZWdpc3RlckhhbmRsZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJhbmRyb2lkLndlYmtpdC5VcmxJbnRlcmNlcHRIYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVybEludGVyY2VwdERpc2FibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iVmFsdWVDYWxsYmFjayIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uUmVjZWl2ZVZhbHVlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iV2ViQmFja0ZvcndhcmRMaXN0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5DbG9uZWFibGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRDdXJyZW50SW5kZXgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDdXJyZW50SXRlbSIKKyByZXR1cm49ImFuZHJvaWQud2Via2l0LldlYkhpc3RvcnlJdGVtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SXRlbUF0SW5kZXgiCisgcmV0dXJuPSJhbmRyb2lkLndlYmtpdC5XZWJIaXN0b3J5SXRlbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJXZWJDaHJvbWVDbGllbnQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IldlYkNocm9tZUNsaWVudCIKKyB0eXBlPSJhbmRyb2lkLndlYmtpdC5XZWJDaHJvbWVDbGllbnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0RGVmYXVsdFZpZGVvUG9zdGVyIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmlkZW9Mb2FkaW5nUHJvZ3Jlc3NWaWV3IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmlzaXRlZEhpc3RvcnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsYmFjayIgdHlwZT0iYW5kcm9pZC53ZWJraXQuVmFsdWVDYWxsYmFjayZsdDtqYXZhLmxhbmcuU3RyaW5nW10mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ2xvc2VXaW5kb3ciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aW5kb3ciIHR5cGU9ImFuZHJvaWQud2Via2l0LldlYlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Db25zb2xlTWVzc2FnZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZU51bWJlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2VJRCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNvbnNvbGVNZXNzYWdlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29uc29sZU1lc3NhZ2UiIHR5cGU9ImFuZHJvaWQud2Via2l0LkNvbnNvbGVNZXNzYWdlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ3JlYXRlV2luZG93IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC53ZWJraXQuV2ViVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlhbG9nIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1c2VyR2VzdHVyZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0TXNnIiB0eXBlPSJhbmRyb2lkLm9zLk1lc3NhZ2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25FeGNlZWRlZERhdGFiYXNlUXVvdGEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGFiYXNlSWRlbnRpZmllciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3VycmVudFF1b3RhIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlc3RpbWF0ZWRTaXplIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b3RhbFVzZWRRdW90YSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icXVvdGFVcGRhdGVyIiB0eXBlPSJhbmRyb2lkLndlYmtpdC5XZWJTdG9yYWdlLlF1b3RhVXBkYXRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkdlb2xvY2F0aW9uUGVybWlzc2lvbnNIaWRlUHJvbXB0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkdlb2xvY2F0aW9uUGVybWlzc2lvbnNTaG93UHJvbXB0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZ2luIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsYmFjayIgdHlwZT0iYW5kcm9pZC53ZWJraXQuR2VvbG9jYXRpb25QZXJtaXNzaW9ucy5DYWxsYmFjayI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkhpZGVDdXN0b21WaWV3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkpzQWxlcnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLndlYmtpdC5XZWJWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdCIgdHlwZT0iYW5kcm9pZC53ZWJraXQuSnNSZXN1bHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Kc0JlZm9yZVVubG9hZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQud2Via2l0LldlYlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0IiB0eXBlPSJhbmRyb2lkLndlYmtpdC5Kc1Jlc3VsdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkpzQ29uZmlybSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQud2Via2l0LldlYlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0IiB0eXBlPSJhbmRyb2lkLndlYmtpdC5Kc1Jlc3VsdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkpzUHJvbXB0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC53ZWJraXQuV2ViVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZhdWx0VmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdCIgdHlwZT0iYW5kcm9pZC53ZWJraXQuSnNQcm9tcHRSZXN1bHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Kc1RpbWVvdXQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uUHJvZ3Jlc3NDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC53ZWJraXQuV2ViVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3UHJvZ3Jlc3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblJlYWNoZWRNYXhBcHBDYWNoZVNpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcGFjZU5lZWRlZCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG90YWxVc2VkUXVvdGEiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InF1b3RhVXBkYXRlciIgdHlwZT0iYW5kcm9pZC53ZWJraXQuV2ViU3RvcmFnZS5RdW90YVVwZGF0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25SZWNlaXZlZEljb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLndlYmtpdC5XZWJWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpY29uIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblJlY2VpdmVkVGl0bGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLndlYmtpdC5XZWJWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aXRsZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblJlY2VpdmVkVG91Y2hJY29uVXJsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC53ZWJraXQuV2ViVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcmVjb21wb3NlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblJlcXVlc3RGb2N1cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQud2Via2l0LldlYlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TaG93Q3VzdG9tVmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsYmFjayIgdHlwZT0iYW5kcm9pZC53ZWJraXQuV2ViQ2hyb21lQ2xpZW50LkN1c3RvbVZpZXdDYWxsYmFjayI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iV2ViQ2hyb21lQ2xpZW50LkN1c3RvbVZpZXdDYWxsYmFjayIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25DdXN0b21WaWV3SGlkZGVuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJXZWJIaXN0b3J5SXRlbSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ2xvbmVhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0RmF2aWNvbiIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9yaWdpbmFsVXJsIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaXRsZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VXJsIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJXZWJJY29uRGF0YWJhc2UiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNsb3NlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImFuZHJvaWQud2Via2l0LldlYkljb25EYXRhYmFzZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wZW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbGVhc2VJY29uRm9yUGFnZVVybCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVBbGxJY29ucyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVxdWVzdEljb25Gb3JQYWdlVXJsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC53ZWJraXQuV2ViSWNvbkRhdGFiYXNlLkljb25MaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXRhaW5JY29uRm9yUGFnZVVybCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iV2ViSWNvbkRhdGFiYXNlLkljb25MaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25SZWNlaXZlZEljb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaWNvbiIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5CaXRtYXAiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IldlYlNldHRpbmdzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0QWxsb3dGaWxlQWNjZXNzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCbG9ja05ldHdvcmtJbWFnZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCbG9ja05ldHdvcmtMb2FkcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCdWlsdEluWm9vbUNvbnRyb2xzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDYWNoZU1vZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3Vyc2l2ZUZvbnRGYW1pbHkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGF0YWJhc2VFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERhdGFiYXNlUGF0aCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWZhdWx0Rml4ZWRGb250U2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlZmF1bHRGb250U2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlZmF1bHRUZXh0RW5jb2RpbmdOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlZmF1bHRab29tIgorIHJldHVybj0iYW5kcm9pZC53ZWJraXQuV2ViU2V0dGluZ3MuWm9vbURlbnNpdHkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RG9tU3RvcmFnZUVuYWJsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmFudGFzeUZvbnRGYW1pbHkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Rml4ZWRGb250RmFtaWx5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEphdmFTY3JpcHRDYW5PcGVuV2luZG93c0F1dG9tYXRpY2FsbHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SmF2YVNjcmlwdEVuYWJsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGF5b3V0QWxnb3JpdGhtIgorIHJldHVybj0iYW5kcm9pZC53ZWJraXQuV2ViU2V0dGluZ3MuTGF5b3V0QWxnb3JpdGhtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGlnaHRUb3VjaEVuYWJsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvYWRXaXRoT3ZlcnZpZXdNb2RlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWluaW11bUZvbnRTaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWluaW11bUxvZ2ljYWxGb250U2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hdkR1bXAiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBsdWdpblN0YXRlIgorIHJldHVybj0iYW5kcm9pZC53ZWJraXQuV2ViU2V0dGluZ3MuUGx1Z2luU3RhdGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQbHVnaW5zRW5hYmxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBsdWdpbnNQYXRoIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNhbnNTZXJpZkZvbnRGYW1pbHkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2F2ZUZvcm1EYXRhIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTYXZlUGFzc3dvcmQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlcmlmRm9udEZhbWlseSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdGFuZGFyZEZvbnRGYW1pbHkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGV4dFNpemUiCisgcmV0dXJuPSJhbmRyb2lkLndlYmtpdC5XZWJTZXR0aW5ncy5UZXh0U2l6ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFVzZURvdWJsZVRyZWUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVc2VXaWRlVmlld1BvcnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VXNlckFnZW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVc2VyQWdlbnRTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QWxsb3dGaWxlQWNjZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxsb3ciIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QXBwQ2FjaGVFbmFibGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmbGFnIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFwcENhY2hlTWF4U2l6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXBwQ2FjaGVNYXhTaXplIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFwcENhY2hlUGF0aCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXBwQ2FjaGVQYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEJsb2NrTmV0d29ya0ltYWdlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmbGFnIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEJsb2NrTmV0d29ya0xvYWRzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmbGFnIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEJ1aWx0SW5ab29tQ29udHJvbHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmFibGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENhY2hlTW9kZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDdXJzaXZlRm9udEZhbWlseSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9udCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREYXRhYmFzZUVuYWJsZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWciIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGF0YWJhc2VQYXRoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhYmFzZVBhdGgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGVmYXVsdEZpeGVkRm9udFNpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREZWZhdWx0Rm9udFNpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREZWZhdWx0VGV4dEVuY29kaW5nTmFtZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5jb2RpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGVmYXVsdFpvb20iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ6b29tIiB0eXBlPSJhbmRyb2lkLndlYmtpdC5XZWJTZXR0aW5ncy5ab29tRGVuc2l0eSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREb21TdG9yYWdlRW5hYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGYW50YXN5Rm9udEZhbWlseSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9udCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGaXhlZEZvbnRGYW1pbHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZvbnQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0R2VvbG9jYXRpb25EYXRhYmFzZVBhdGgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGFiYXNlUGF0aCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRHZW9sb2NhdGlvbkVuYWJsZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWciIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SmF2YVNjcmlwdENhbk9wZW5XaW5kb3dzQXV0b21hdGljYWxseSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRKYXZhU2NyaXB0RW5hYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMYXlvdXRBbGdvcml0aG0iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImwiIHR5cGU9ImFuZHJvaWQud2Via2l0LldlYlNldHRpbmdzLkxheW91dEFsZ29yaXRobSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMaWdodFRvdWNoRW5hYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVuYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TG9hZFdpdGhPdmVydmlld01vZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdmVydmlldyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWciIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWluaW11bUZvbnRTaXplIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWluaW11bUxvZ2ljYWxGb250U2l6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE5hdkR1bXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmFibGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE5lZWRJbml0aWFsRm9jdXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmbGFnIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBsdWdpblN0YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0ZSIgdHlwZT0iYW5kcm9pZC53ZWJraXQuV2ViU2V0dGluZ3MuUGx1Z2luU3RhdGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGx1Z2luc0VuYWJsZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQbHVnaW5zUGF0aCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGx1Z2luc1BhdGgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UmVuZGVyUHJpb3JpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByaW9yaXR5IiB0eXBlPSJhbmRyb2lkLndlYmtpdC5XZWJTZXR0aW5ncy5SZW5kZXJQcmlvcml0eSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTYW5zU2VyaWZGb250RmFtaWx5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmb250IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNhdmVGb3JtRGF0YSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNhdmUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2F2ZVBhc3N3b3JkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2F2ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTZXJpZkZvbnRGYW1pbHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZvbnQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RhbmRhcmRGb250RmFtaWx5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmb250IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN1cHBvcnRNdWx0aXBsZVdpbmRvd3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN1cHBvcnQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3VwcG9ydFpvb20iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdXBwb3J0IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRleHRTaXplIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0IiB0eXBlPSJhbmRyb2lkLndlYmtpdC5XZWJTZXR0aW5ncy5UZXh0U2l6ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRVc2VEb3VibGVUcmVlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVzZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRVc2VXaWRlVmlld1BvcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVzZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRVc2VyQWdlbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idWEiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRVc2VyQWdlbnRTdHJpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVhIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRNdWx0aXBsZVdpbmRvd3MiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydFpvb20iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iTE9BRF9DQUNIRV9FTFNFX05FVFdPUksiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxPQURfQ0FDSEVfT05MWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTE9BRF9ERUZBVUxUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTE9BRF9OT1JNQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxPQURfTk9fQ0FDSEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJXZWJTZXR0aW5ncy5MYXlvdXRBbGdvcml0aG0iCisgZXh0ZW5kcz0iamF2YS5sYW5nLkVudW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJhbmRyb2lkLndlYmtpdC5XZWJTZXR0aW5ncy5MYXlvdXRBbGdvcml0aG0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZXMiCisgcmV0dXJuPSJhbmRyb2lkLndlYmtpdC5XZWJTZXR0aW5ncy5MYXlvdXRBbGdvcml0aG1bXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iV2ViU2V0dGluZ3MuUGx1Z2luU3RhdGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkVudW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJhbmRyb2lkLndlYmtpdC5XZWJTZXR0aW5ncy5QbHVnaW5TdGF0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlcyIKKyByZXR1cm49ImFuZHJvaWQud2Via2l0LldlYlNldHRpbmdzLlBsdWdpblN0YXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IldlYlNldHRpbmdzLlJlbmRlclByaW9yaXR5IgorIGV4dGVuZHM9ImphdmEubGFuZy5FbnVtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iYW5kcm9pZC53ZWJraXQuV2ViU2V0dGluZ3MuUmVuZGVyUHJpb3JpdHkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZXMiCisgcmV0dXJuPSJhbmRyb2lkLndlYmtpdC5XZWJTZXR0aW5ncy5SZW5kZXJQcmlvcml0eVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJXZWJTZXR0aW5ncy5UZXh0U2l6ZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRW51bSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImFuZHJvaWQud2Via2l0LldlYlNldHRpbmdzLlRleHRTaXplIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVzIgorIHJldHVybj0iYW5kcm9pZC53ZWJraXQuV2ViU2V0dGluZ3MuVGV4dFNpemVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iV2ViU2V0dGluZ3MuWm9vbURlbnNpdHkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkVudW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJhbmRyb2lkLndlYmtpdC5XZWJTZXR0aW5ncy5ab29tRGVuc2l0eSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlcyIKKyByZXR1cm49ImFuZHJvaWQud2Via2l0LldlYlNldHRpbmdzLlpvb21EZW5zaXR5W10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IldlYlN0b3JhZ2UiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iV2ViU3RvcmFnZSIKKyB0eXBlPSJhbmRyb2lkLndlYmtpdC5XZWJTdG9yYWdlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlbGV0ZUFsbERhdGEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlbGV0ZU9yaWdpbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWdpbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImFuZHJvaWQud2Via2l0LldlYlN0b3JhZ2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPcmlnaW5zIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsbGJhY2siIHR5cGU9ImFuZHJvaWQud2Via2l0LlZhbHVlQ2FsbGJhY2smbHQ7amF2YS51dGlsLk1hcCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UXVvdGFGb3JPcmlnaW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnaW4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbGxiYWNrIiB0eXBlPSJhbmRyb2lkLndlYmtpdC5WYWx1ZUNhbGxiYWNrJmx0O2phdmEubGFuZy5Mb25nJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVc2FnZUZvck9yaWdpbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWdpbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsbGJhY2siIHR5cGU9ImFuZHJvaWQud2Via2l0LlZhbHVlQ2FsbGJhY2smbHQ7amF2YS5sYW5nLkxvbmcmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFF1b3RhRm9yT3JpZ2luIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZ2luIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxdW90YSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iV2ViU3RvcmFnZS5RdW90YVVwZGF0ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZVF1b3RhIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdRdW90YSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iV2ViU3luY01hbmFnZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSIiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IldlYlN5bmNNYW5hZ2VyIgorIHR5cGU9ImFuZHJvaWQud2Via2l0LldlYlN5bmNNYW5hZ2VyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJvblN5bmNJbml0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldFN5bmMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJ1biIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRTeW5jIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdG9wU3luYyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3luYyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJMT0dUQUciCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7d2Vic3luYyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJtRGF0YUJhc2UiCisgdHlwZT0iYW5kcm9pZC53ZWJraXQuV2ViVmlld0RhdGFiYXNlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibUhhbmRsZXIiCisgdHlwZT0iYW5kcm9pZC5vcy5IYW5kbGVyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IldlYlZpZXciCisgZXh0ZW5kcz0iYW5kcm9pZC53aWRnZXQuQWJzb2x1dGVMYXlvdXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAuT25IaWVyYXJjaHlDaGFuZ2VMaXN0ZW5lciI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnZpZXcuVmlld1RyZWVPYnNlcnZlci5Pbkdsb2JhbEZvY3VzQ2hhbmdlTGlzdGVuZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IldlYlZpZXciCisgdHlwZT0iYW5kcm9pZC53ZWJraXQuV2ViVmlldyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJXZWJWaWV3IgorIHR5cGU9ImFuZHJvaWQud2Via2l0LldlYlZpZXciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IldlYlZpZXciCisgdHlwZT0iYW5kcm9pZC53ZWJraXQuV2ViVmlldyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmU3R5bGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZEphdmFzY3JpcHRJbnRlcmZhY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVyZmFjZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2FuR29CYWNrIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYW5Hb0JhY2tPckZvcndhcmQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGVwcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNhbkdvRm9yd2FyZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2FwdHVyZVBpY3R1cmUiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLlBpY3R1cmUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJDYWNoZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluY2x1ZGVEaXNrRmlsZXMiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJGb3JtRGF0YSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJIaXN0b3J5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhck1hdGNoZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyU3NsUHJlZmVyZW5jZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyVmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29weUJhY2tGb3J3YXJkTGlzdCIKKyByZXR1cm49ImFuZHJvaWQud2Via2l0LldlYkJhY2tGb3J3YXJkTGlzdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWJ1Z0R1bXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlc3Ryb3kiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpc2FibGVQbGF0Zm9ybU5vdGlmaWNhdGlvbnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZG9jdW1lbnRIYXNJbWFnZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZSIgdHlwZT0iYW5kcm9pZC5vcy5NZXNzYWdlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVtdWxhdGVTaGlmdEhlbGQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuYWJsZVBsYXRmb3JtTm90aWZpY2F0aW9ucyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaW5kQWRkcmVzcyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWRkciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaW5kQWxsIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaW5kIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmROZXh0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9yd2FyZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmbGluZ1Njcm9sbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZ4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZnJlZU1lbW9yeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2VydGlmaWNhdGUiCisgcmV0dXJuPSJhbmRyb2lkLm5ldC5odHRwLlNzbENlcnRpZmljYXRlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbnRlbnRIZWlnaHQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmF2aWNvbiIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhpdFRlc3RSZXN1bHQiCisgcmV0dXJuPSJhbmRyb2lkLndlYmtpdC5XZWJWaWV3LkhpdFRlc3RSZXN1bHQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SHR0cEF1dGhVc2VybmFtZVBhc3N3b3JkIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWFsbSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPcmlnaW5hbFVybCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGx1Z2luTGlzdCIKKyByZXR1cm49ImFuZHJvaWQud2Via2l0LlBsdWdpbkxpc3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvZ3Jlc3MiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2NhbGUiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZXR0aW5ncyIKKyByZXR1cm49ImFuZHJvaWQud2Via2l0LldlYlNldHRpbmdzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRpdGxlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVcmwiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFpvb21Db250cm9scyIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ29CYWNrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnb0JhY2tPckZvcndhcmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGVwcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdvRm9yd2FyZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW52b2tlWm9vbVBpY2tlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZERhdGEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaW1lVHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5jb2RpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZERhdGFXaXRoQmFzZVVSTCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJhc2VVcmwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbWVUeXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmNvZGluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGlzdG9yeVVybCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2FkVXJsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHRyYUhlYWRlcnMiIHR5cGU9ImphdmEudXRpbC5NYXAmbHQ7amF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZFVybCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNoaWxkVmlld0FkZGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DaGlsZFZpZXdSZW1vdmVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hpbGQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uR2xvYmFsRm9jdXNDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvbGRGb2N1cyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld0ZvY3VzIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvdmVybGF5SG9yaXpvbnRhbFNjcm9sbGJhciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3ZlcmxheVZlcnRpY2FsU2Nyb2xsYmFyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYWdlRG93biIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYWdlVXAiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0b3AiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGF1c2VUaW1lcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBvc3RVcmwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvc3REYXRhIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVmcmVzaFBsdWdpbnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlbG9hZE9wZW5QYWdlcyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWxvYWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcXVlc3RGb2N1c05vZGVIcmVmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaHJlZk1zZyIgdHlwZT0iYW5kcm9pZC5vcy5NZXNzYWdlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcXVlc3RJbWFnZVJlZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iYW5kcm9pZC5vcy5NZXNzYWdlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc3RvcmVQaWN0dXJlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iamF2YS5pby5GaWxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc3RvcmVTdGF0ZSIKKyByZXR1cm49ImFuZHJvaWQud2Via2l0LldlYkJhY2tGb3J3YXJkTGlzdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5TdGF0ZSIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzdW1lVGltZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzYXZlUGFzc3dvcmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1c2VybmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFzc3dvcmQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2F2ZVBpY3R1cmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iamF2YS5pby5GaWxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNhdmVTdGF0ZSIKKyByZXR1cm49ImFuZHJvaWQud2Via2l0LldlYkJhY2tGb3J3YXJkTGlzdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0U3RhdGUiIHR5cGU9ImFuZHJvaWQub3MuQnVuZGxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENlcnRpZmljYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2VydGlmaWNhdGUiIHR5cGU9ImFuZHJvaWQubmV0Lmh0dHAuU3NsQ2VydGlmaWNhdGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RG93bmxvYWRMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLndlYmtpdC5Eb3dubG9hZExpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEhvcml6b250YWxTY3JvbGxiYXJPdmVybGF5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3ZlcmxheSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRIdHRwQXV0aFVzZXJuYW1lUGFzc3dvcmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWFsbSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXNlcm5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhc3N3b3JkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEluaXRpYWxTY2FsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNjYWxlSW5QZXJjZW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWFwVHJhY2tiYWxsVG9BcnJvd0tleXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZXRNYXAiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TmV0d29ya0F2YWlsYWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ldHdvcmtVcCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQaWN0dXJlTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC53ZWJraXQuV2ViVmlldy5QaWN0dXJlTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VmVydGljYWxTY3JvbGxiYXJPdmVybGF5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3ZlcmxheSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRXZWJDaHJvbWVDbGllbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbGllbnQiIHR5cGU9ImFuZHJvaWQud2Via2l0LldlYkNocm9tZUNsaWVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRXZWJWaWV3Q2xpZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2xpZW50IiB0eXBlPSJhbmRyb2lkLndlYmtpdC5XZWJWaWV3Q2xpZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0b3BMb2FkaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ6b29tSW4iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Inpvb21PdXQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iU0NIRU1FX0dFTyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtnZW86MCwwP3E9JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDSEVNRV9NQUlMVE8iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bWFpbHRvOiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ0hFTUVfVEVMIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3RlbDomcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IldlYlZpZXcuSGl0VGVzdFJlc3VsdCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldEV4dHJhIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQU5DSE9SX1RZUEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVESVRfVEVYVF9UWVBFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFTUFJTF9UWVBFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHRU9fVFlQRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU1BR0VfQU5DSE9SX1RZUEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklNQUdFX1RZUEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBIT05FX1RZUEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNSQ19BTkNIT1JfVFlQRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1JDX0lNQUdFX0FOQ0hPUl9UWVBFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVTktOT1dOX1RZUEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iV2ViVmlldy5QaWN0dXJlTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uTmV3UGljdHVyZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC53ZWJraXQuV2ViVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGljdHVyZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5QaWN0dXJlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJXZWJWaWV3LldlYlZpZXdUcmFuc3BvcnQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IldlYlZpZXcuV2ViVmlld1RyYW5zcG9ydCIKKyB0eXBlPSJhbmRyb2lkLndlYmtpdC5XZWJWaWV3LldlYlZpZXdUcmFuc3BvcnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0V2ViVmlldyIKKyByZXR1cm49ImFuZHJvaWQud2Via2l0LldlYlZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRXZWJWaWV3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3ZWJ2aWV3IiB0eXBlPSJhbmRyb2lkLndlYmtpdC5XZWJWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IldlYlZpZXdDbGllbnQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IldlYlZpZXdDbGllbnQiCisgdHlwZT0iYW5kcm9pZC53ZWJraXQuV2ViVmlld0NsaWVudCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkb1VwZGF0ZVZpc2l0ZWRIaXN0b3J5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC53ZWJraXQuV2ViVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpc1JlbG9hZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkZvcm1SZXN1Ym1pc3Npb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLndlYmtpdC5XZWJWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkb250UmVzZW5kIiB0eXBlPSJhbmRyb2lkLm9zLk1lc3NhZ2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc2VuZCIgdHlwZT0iYW5kcm9pZC5vcy5NZXNzYWdlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uTG9hZFJlc291cmNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC53ZWJraXQuV2ViVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uUGFnZUZpbmlzaGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC53ZWJraXQuV2ViVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uUGFnZVN0YXJ0ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLndlYmtpdC5XZWJWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZhdmljb24iIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uUmVjZWl2ZWRFcnJvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQud2Via2l0LldlYlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVycm9yQ29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZXNjcmlwdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFpbGluZ1VybCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblJlY2VpdmVkSHR0cEF1dGhSZXF1ZXN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC53ZWJraXQuV2ViVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlciIgdHlwZT0iYW5kcm9pZC53ZWJraXQuSHR0cEF1dGhIYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWFsbSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblJlY2VpdmVkU3NsRXJyb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLndlYmtpdC5XZWJWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJhbmRyb2lkLndlYmtpdC5Tc2xFcnJvckhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVycm9yIiB0eXBlPSJhbmRyb2lkLm5ldC5odHRwLlNzbEVycm9yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU2NhbGVDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC53ZWJraXQuV2ViVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2xkU2NhbGUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdTY2FsZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Ub29NYW55UmVkaXJlY3RzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLndlYmtpdC5XZWJWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYW5jZWxNc2ciIHR5cGU9ImFuZHJvaWQub3MuTWVzc2FnZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGludWVNc2ciIHR5cGU9ImFuZHJvaWQub3MuTWVzc2FnZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblVuaGFuZGxlZEtleUV2ZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC53ZWJraXQuV2ViVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaG91bGRPdmVycmlkZUtleUV2ZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC53ZWJraXQuV2ViVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaG91bGRPdmVycmlkZVVybExvYWRpbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLndlYmtpdC5XZWJWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJFUlJPUl9BVVRIRU5USUNBVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii00IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVSUk9SX0JBRF9VUkwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVJST1JfQ09OTkVDVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii02IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVSUk9SX0ZBSUxFRF9TU0xfSEFORFNIQUtFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTExIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVSUk9SX0ZJTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVJST1JfRklMRV9OT1RfRk9VTkQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVJST1JfSE9TVF9MT09LVVAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFUlJPUl9JTyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii03IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVSUk9SX1BST1hZX0FVVEhFTlRJQ0FUSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVJST1JfUkVESVJFQ1RfTE9PUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii05IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVSUk9SX1RJTUVPVVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFUlJPUl9UT09fTUFOWV9SRVFVRVNUUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFUlJPUl9VTktOT1dOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVJST1JfVU5TVVBQT1JURURfQVVUSF9TQ0hFTUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFUlJPUl9VTlNVUFBPUlRFRF9TQ0hFTUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IldlYlZpZXdEYXRhYmFzZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNsZWFyRm9ybURhdGEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFySHR0cEF1dGhVc2VybmFtZVBhc3N3b3JkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhclVzZXJuYW1lUGFzc3dvcmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iYW5kcm9pZC53ZWJraXQuV2ViVmlld0RhdGFiYXNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzRm9ybURhdGEiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc0h0dHBBdXRoVXNlcm5hbWVQYXNzd29yZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzVXNlcm5hbWVQYXNzd29yZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJMT0dUQUciCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7d2Vidmlld2RhdGFiYXNlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQud2lkZ2V0IgorPgorPGNsYXNzIG5hbWU9IkFic0xpc3RWaWV3IgorIGV4dGVuZHM9ImFuZHJvaWQud2lkZ2V0LkFkYXB0ZXJWaWV3IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQud2lkZ2V0LkZpbHRlci5GaWx0ZXJMaXN0ZW5lciI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnRleHQuVGV4dFdhdGNoZXIiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC52aWV3LlZpZXdUcmVlT2JzZXJ2ZXIuT25HbG9iYWxMYXlvdXRMaXN0ZW5lciI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnZpZXcuVmlld1RyZWVPYnNlcnZlci5PblRvdWNoTW9kZUNoYW5nZUxpc3RlbmVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBYnNMaXN0VmlldyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5BYnNMaXN0VmlldyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBYnNMaXN0VmlldyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5BYnNMaXN0VmlldyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzTGlzdFZpZXciCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQWJzTGlzdFZpZXciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZnRlclRleHRDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iYW5kcm9pZC50ZXh0LkVkaXRhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImJlZm9yZVRleHRDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWZ0ZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhclRleHRGaWx0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENhY2hlQ29sb3JIaW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExpc3RQYWRkaW5nQm90dG9tIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExpc3RQYWRkaW5nTGVmdCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaXN0UGFkZGluZ1JpZ2h0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExpc3RQYWRkaW5nVG9wIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlbGVjdGVkVmlldyIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlbGVjdG9yIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUZXh0RmlsdGVyIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUcmFuc2NyaXB0TW9kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYW5kbGVEYXRhQ2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzVGV4dEZpbHRlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW52YWxpZGF0ZVZpZXdzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0Zhc3RTY3JvbGxFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0luRmlsdGVyTW9kZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTY3JvbGxpbmdDYWNoZUVuYWJsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU21vb3RoU2Nyb2xsYmFyRW5hYmxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTdGFja0Zyb21Cb3R0b20iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzVGV4dEZpbHRlckVuYWJsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxheW91dENoaWxkcmVuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkZpbHRlckNvbXBsZXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkdsb2JhbExheW91dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25SZXN0b3JlSW5zdGFuY2VTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TYXZlSW5zdGFuY2VTdGF0ZSIKKyByZXR1cm49ImFuZHJvaWQub3MuUGFyY2VsYWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblRleHRDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmVmb3JlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Ub3VjaE1vZGVDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNJblRvdWNoTW9kZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwb2ludFRvUG9zaXRpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBvaW50VG9Sb3dJZCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlY2xhaW1WaWV3cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXdzIiB0eXBlPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLnZpZXcuVmlldyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2FjaGVDb2xvckhpbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERyYXdTZWxlY3Rvck9uVG9wIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib25Ub3AiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RmFzdFNjcm9sbEVuYWJsZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmFibGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZpbHRlclRleHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWx0ZXJUZXh0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9uU2Nyb2xsTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsIiB0eXBlPSJhbmRyb2lkLndpZGdldC5BYnNMaXN0Vmlldy5PblNjcm9sbExpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJlY3ljbGVyTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC53aWRnZXQuQWJzTGlzdFZpZXcuUmVjeWNsZXJMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTY3JvbGxJbmRpY2F0b3JzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXAiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkb3duIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTY3JvbGxpbmdDYWNoZUVuYWJsZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmFibGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNlbGVjdG9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzSUQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTZWxlY3RvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlbCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTbW9vdGhTY3JvbGxiYXJFbmFibGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5hYmxlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTdGFja0Zyb21Cb3R0b20iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGFja0Zyb21Cb3R0b20iIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGV4dEZpbHRlckVuYWJsZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0RmlsdGVyRW5hYmxlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUcmFuc2NyaXB0TW9kZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzbW9vdGhTY3JvbGxCeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpc3RhbmNlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImR1cmF0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic21vb3RoU2Nyb2xsVG9Qb3NpdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic21vb3RoU2Nyb2xsVG9Qb3NpdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdW5kUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2ZXJpZnlEcmF3YWJsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRyIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iVFJBTlNDUklQVF9NT0RFX0FMV0FZU19TQ1JPTEwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRSQU5TQ1JJUFRfTU9ERV9ESVNBQkxFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFJBTlNDUklQVF9NT0RFX05PUk1BTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFic0xpc3RWaWV3LkxheW91dFBhcmFtcyIKKyBleHRlbmRzPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwLkxheW91dFBhcmFtcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzTGlzdFZpZXcuTGF5b3V0UGFyYW1zIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkFic0xpc3RWaWV3LkxheW91dFBhcmFtcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzTGlzdFZpZXcuTGF5b3V0UGFyYW1zIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkFic0xpc3RWaWV3LkxheW91dFBhcmFtcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InciIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBYnNMaXN0Vmlldy5MYXlvdXRQYXJhbXMiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQWJzTGlzdFZpZXcuTGF5b3V0UGFyYW1zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXdUeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFic0xpc3RWaWV3LkxheW91dFBhcmFtcyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5BYnNMaXN0Vmlldy5MYXlvdXRQYXJhbXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAuTGF5b3V0UGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkFic0xpc3RWaWV3Lk9uU2Nyb2xsTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uU2Nyb2xsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLndpZGdldC5BYnNMaXN0VmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlyc3RWaXNpYmxlSXRlbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2aXNpYmxlSXRlbUNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvdGFsSXRlbUNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TY3JvbGxTdGF0ZUNoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkFic0xpc3RWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY3JvbGxTdGF0ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iU0NST0xMX1NUQVRFX0ZMSU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ1JPTExfU1RBVEVfSURMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NST0xMX1NUQVRFX1RPVUNIX1NDUk9MTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iQWJzTGlzdFZpZXcuUmVjeWNsZXJMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25Nb3ZlZFRvU2NyYXBIZWFwIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQWJzU2Vla0JhciIKKyBleHRlbmRzPSJhbmRyb2lkLndpZGdldC5Qcm9ncmVzc0JhciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzU2Vla0JhciIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5BYnNTZWVrQmFyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFic1NlZWtCYXIiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQWJzU2Vla0JhciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzU2Vla0JhciIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5BYnNTZWVrQmFyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZTdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0S2V5UHJvZ3Jlc3NJbmNyZW1lbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGh1bWJPZmZzZXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0S2V5UHJvZ3Jlc3NJbmNyZW1lbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmNyZW1lbnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUaHVtYiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRodW1iIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRodW1iT2Zmc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGh1bWJPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBYnNTcGlubmVyIgorIGV4dGVuZHM9ImFuZHJvaWQud2lkZ2V0LkFkYXB0ZXJWaWV3IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBYnNTcGlubmVyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkFic1NwaW5uZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzU3Bpbm5lciIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5BYnNTcGlubmVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBYnNTcGlubmVyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkFic1NwaW5uZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRBZGFwdGVyIgorIHJldHVybj0iYW5kcm9pZC53aWRnZXQuU3Bpbm5lckFkYXB0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2VsZWN0ZWRWaWV3IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25SZXN0b3JlSW5zdGFuY2VTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TYXZlSW5zdGFuY2VTdGF0ZSIKKyByZXR1cm49ImFuZHJvaWQub3MuUGFyY2VsYWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwb2ludFRvUG9zaXRpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFkYXB0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhZGFwdGVyIiB0eXBlPSJhbmRyb2lkLndpZGdldC5TcGlubmVyQWRhcHRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTZWxlY3Rpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbmltYXRlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNlbGVjdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQWJzb2x1dGVMYXlvdXQiCisgZXh0ZW5kcz0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzb2x1dGVMYXlvdXQiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQWJzb2x1dGVMYXlvdXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzb2x1dGVMYXlvdXQiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQWJzb2x1dGVMYXlvdXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFic29sdXRlTGF5b3V0IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkFic29sdXRlTGF5b3V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZTdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ib25MYXlvdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGFuZ2VkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQWJzb2x1dGVMYXlvdXQuTGF5b3V0UGFyYW1zIgorIGV4dGVuZHM9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAuTGF5b3V0UGFyYW1zIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBYnNvbHV0ZUxheW91dC5MYXlvdXRQYXJhbXMiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQWJzb2x1dGVMYXlvdXQuTGF5b3V0UGFyYW1zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBYnNvbHV0ZUxheW91dC5MYXlvdXRQYXJhbXMiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQWJzb2x1dGVMYXlvdXQuTGF5b3V0UGFyYW1zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBYnNvbHV0ZUxheW91dC5MYXlvdXRQYXJhbXMiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQWJzb2x1dGVMYXlvdXQuTGF5b3V0UGFyYW1zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwLkxheW91dFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlYnVnIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0cHV0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0ieCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQWRhcHRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldENvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SXRlbSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJdGVtSWQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SXRlbVZpZXdUeXBlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmlldyIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnZlcnRWaWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZpZXdUeXBlQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNTdGFibGVJZHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNFbXB0eSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3RlckRhdGFTZXRPYnNlcnZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JzZXJ2ZXIiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuRGF0YVNldE9ic2VydmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVucmVnaXN0ZXJEYXRhU2V0T2JzZXJ2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9ic2VydmVyIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkRhdGFTZXRPYnNlcnZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IklHTk9SRV9JVEVNX1ZJRVdfVFlQRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5PX1NFTEVDVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0yMTQ3NDgzNjQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQWRhcHRlclZpZXciCisgZXh0ZW5kcz0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWRhcHRlclZpZXciCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQWRhcHRlclZpZXciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWRhcHRlclZpZXciCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQWRhcHRlclZpZXciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFkYXB0ZXJWaWV3IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkFkYXB0ZXJWaWV3IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZTdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0QWRhcHRlciIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbXB0eVZpZXciCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGaXJzdFZpc2libGVQb3NpdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJdGVtQXRQb3NpdGlvbiIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SXRlbUlkQXRQb3NpdGlvbiIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGFzdFZpc2libGVQb3NpdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPbkl0ZW1DbGlja0xpc3RlbmVyIgorIHJldHVybj0iYW5kcm9pZC53aWRnZXQuQWRhcHRlclZpZXcuT25JdGVtQ2xpY2tMaXN0ZW5lciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9uSXRlbUxvbmdDbGlja0xpc3RlbmVyIgorIHJldHVybj0iYW5kcm9pZC53aWRnZXQuQWRhcHRlclZpZXcuT25JdGVtTG9uZ0NsaWNrTGlzdGVuZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPbkl0ZW1TZWxlY3RlZExpc3RlbmVyIgorIHJldHVybj0iYW5kcm9pZC53aWRnZXQuQWRhcHRlclZpZXcuT25JdGVtU2VsZWN0ZWRMaXN0ZW5lciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBvc2l0aW9uRm9yVmlldyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2VsZWN0ZWRJdGVtIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZWxlY3RlZEl0ZW1JZCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2VsZWN0ZWRJdGVtUG9zaXRpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2VsZWN0ZWRWaWV3IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkxheW91dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYW5nZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9wIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBlcmZvcm1JdGVtQ2xpY2siCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QWRhcHRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWRhcHRlciIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFbXB0eVZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbXB0eVZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9uSXRlbUNsaWNrTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC53aWRnZXQuQWRhcHRlclZpZXcuT25JdGVtQ2xpY2tMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPbkl0ZW1Mb25nQ2xpY2tMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLndpZGdldC5BZGFwdGVyVmlldy5Pbkl0ZW1Mb25nQ2xpY2tMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPbkl0ZW1TZWxlY3RlZExpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkFkYXB0ZXJWaWV3Lk9uSXRlbVNlbGVjdGVkTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2VsZWN0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iSU5WQUxJRF9QT1NJVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklOVkFMSURfUk9XX0lEIgorIHR5cGU9ImxvbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii05MjIzMzcyMDM2ODU0Nzc1ODA4TCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJVEVNX1ZJRVdfVFlQRV9IRUFERVJfT1JfRk9PVEVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSVRFTV9WSUVXX1RZUEVfSUdOT1JFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFkYXB0ZXJWaWV3LkFkYXB0ZXJDb250ZXh0TWVudUluZm8iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnZpZXcuQ29udGV4dE1lbnUuQ29udGV4dE1lbnVJbmZvIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBZGFwdGVyVmlldy5BZGFwdGVyQ29udGV4dE1lbnVJbmZvIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkFkYXB0ZXJWaWV3LkFkYXB0ZXJDb250ZXh0TWVudUluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXRWaWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9ImlkIgorIHR5cGU9ImxvbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwb3NpdGlvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0YXJnZXRWaWV3IgorIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJBZGFwdGVyVmlldy5Pbkl0ZW1DbGlja0xpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvbkl0ZW1DbGljayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyZW50IiB0eXBlPSJhbmRyb2lkLndpZGdldC5BZGFwdGVyVmlldyZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iQWRhcHRlclZpZXcuT25JdGVtTG9uZ0NsaWNrTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uSXRlbUxvbmdDbGljayIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyZW50IiB0eXBlPSJhbmRyb2lkLndpZGdldC5BZGFwdGVyVmlldyZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iQWRhcHRlclZpZXcuT25JdGVtU2VsZWN0ZWRMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25JdGVtU2VsZWN0ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iYW5kcm9pZC53aWRnZXQuQWRhcHRlclZpZXcmbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbk5vdGhpbmdTZWxlY3RlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyZW50IiB0eXBlPSJhbmRyb2lkLndpZGdldC5BZGFwdGVyVmlldyZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQWxwaGFiZXRJbmRleGVyIgorIGV4dGVuZHM9ImFuZHJvaWQuZGF0YWJhc2UuRGF0YVNldE9ic2VydmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLndpZGdldC5TZWN0aW9uSW5kZXhlciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWxwaGFiZXRJbmRleGVyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkFscGhhYmV0SW5kZXhlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNvcnRlZENvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFscGhhYmV0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY29tcGFyZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id29yZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGV0dGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBvc2l0aW9uRm9yU2VjdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VjdGlvbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2VjdGlvbkZvclBvc2l0aW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlY3Rpb25zIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEN1cnNvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJtQWxwaGFiZXQiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1Db2x1bW5JbmRleCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJtRGF0YUN1cnNvciIKKyB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBbmFsb2dDbG9jayIKKyBleHRlbmRzPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFuYWxvZ0Nsb2NrIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkFuYWxvZ0Nsb2NrIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFuYWxvZ0Nsb2NrIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkFuYWxvZ0Nsb2NrIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBbmFsb2dDbG9jayIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5BbmFsb2dDbG9jayIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmU3R5bGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFycmF5QWRhcHRlciIKKyBleHRlbmRzPSJhbmRyb2lkLndpZGdldC5CYXNlQWRhcHRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC53aWRnZXQuRmlsdGVyYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXJyYXlBZGFwdGVyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkFycmF5QWRhcHRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0Vmlld1Jlc291cmNlSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXJyYXlBZGFwdGVyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkFycmF5QWRhcHRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvdXJjZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0Vmlld1Jlc291cmNlSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXJyYXlBZGFwdGVyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkFycmF5QWRhcHRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0Vmlld1Jlc291cmNlSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0cyIgdHlwZT0iVFtdIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBcnJheUFkYXB0ZXIiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQXJyYXlBZGFwdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc291cmNlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHRWaWV3UmVzb3VyY2VJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3RzIiB0eXBlPSJUW10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFycmF5QWRhcHRlciIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5BcnJheUFkYXB0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dFZpZXdSZXNvdXJjZUlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdHMiIHR5cGU9ImphdmEudXRpbC5MaXN0Jmx0O1QmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBcnJheUFkYXB0ZXIiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQXJyYXlBZGFwdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc291cmNlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHRWaWV3UmVzb3VyY2VJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3RzIiB0eXBlPSJqYXZhLnV0aWwuTGlzdCZsdDtUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlRnJvbVJlc291cmNlIgorIHJldHVybj0iYW5kcm9pZC53aWRnZXQuQXJyYXlBZGFwdGVyJmx0O2phdmEubGFuZy5DaGFyU2VxdWVuY2UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0QXJyYXlSZXNJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0Vmlld1Jlc0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGV4dCIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5Db250ZXh0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpbHRlciIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LkZpbHRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJdGVtIgorIHJldHVybj0iVCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJdGVtSWQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBvc2l0aW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpdGVtIiB0eXBlPSJUIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZpZXciCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udmVydFZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5zZXJ0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJUIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREcm9wRG93blZpZXdSZXNvdXJjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc291cmNlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Tm90aWZ5T25DaGFuZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJub3RpZnlPbkNoYW5nZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzb3J0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29tcGFyYXRvciIgdHlwZT0iamF2YS51dGlsLkNvbXBhcmF0b3ImbHQ7PyBzdXBlciBUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBdXRvQ29tcGxldGVUZXh0VmlldyIKKyBleHRlbmRzPSJhbmRyb2lkLndpZGdldC5FZGl0VGV4dCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC53aWRnZXQuRmlsdGVyLkZpbHRlckxpc3RlbmVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBdXRvQ29tcGxldGVUZXh0VmlldyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5BdXRvQ29tcGxldGVUZXh0VmlldyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBdXRvQ29tcGxldGVUZXh0VmlldyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5BdXRvQ29tcGxldGVUZXh0VmlldyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXV0b0NvbXBsZXRlVGV4dFZpZXciCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQXV0b0NvbXBsZXRlVGV4dFZpZXciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbGVhckxpc3RTZWxlY3Rpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbnZlcnRTZWxlY3Rpb25Ub1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdGVkSXRlbSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXNtaXNzRHJvcERvd24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVub3VnaFRvRmlsdGVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBZGFwdGVyIgorIHJldHVybj0iYW5kcm9pZC53aWRnZXQuTGlzdEFkYXB0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RHJvcERvd25BbmNob3IiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RHJvcERvd25CYWNrZ3JvdW5kIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREcm9wRG93bkhlaWdodCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREcm9wRG93bkhvcml6b250YWxPZmZzZXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RHJvcERvd25WZXJ0aWNhbE9mZnNldCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREcm9wRG93bldpZHRoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpbHRlciIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LkZpbHRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJdGVtQ2xpY2tMaXN0ZW5lciIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LkFkYXB0ZXJWaWV3Lk9uSXRlbUNsaWNrTGlzdGVuZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJdGVtU2VsZWN0ZWRMaXN0ZW5lciIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LkFkYXB0ZXJWaWV3Lk9uSXRlbVNlbGVjdGVkTGlzdGVuZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaXN0U2VsZWN0aW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9uSXRlbUNsaWNrTGlzdGVuZXIiCisgcmV0dXJuPSJhbmRyb2lkLndpZGdldC5BZGFwdGVyVmlldy5Pbkl0ZW1DbGlja0xpc3RlbmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9uSXRlbVNlbGVjdGVkTGlzdGVuZXIiCisgcmV0dXJuPSJhbmRyb2lkLndpZGdldC5BZGFwdGVyVmlldy5Pbkl0ZW1TZWxlY3RlZExpc3RlbmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRocmVzaG9sZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWYWxpZGF0b3IiCisgcmV0dXJuPSJhbmRyb2lkLndpZGdldC5BdXRvQ29tcGxldGVUZXh0Vmlldy5WYWxpZGF0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNQZXJmb3JtaW5nQ29tcGxldGlvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNQb3B1cFNob3dpbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uRmlsdGVyQ29tcGxldGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBlcmZvcm1Db21wbGV0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwZXJmb3JtRmlsdGVyaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5Q29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBlcmZvcm1WYWxpZGF0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXBsYWNlVGV4dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QWRhcHRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFkYXB0ZXIiIHR5cGU9IlQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29tcGxldGlvbkhpbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoaW50IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERyb3BEb3duQW5jaG9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREcm9wRG93bkJhY2tncm91bmREcmF3YWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RHJvcERvd25CYWNrZ3JvdW5kUmVzb3VyY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERyb3BEb3duSGVpZ2h0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RHJvcERvd25Ib3Jpem9udGFsT2Zmc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RHJvcERvd25WZXJ0aWNhbE9mZnNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERyb3BEb3duV2lkdGgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldExpc3RTZWxlY3Rpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9uSXRlbUNsaWNrTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsIiB0eXBlPSJhbmRyb2lkLndpZGdldC5BZGFwdGVyVmlldy5Pbkl0ZW1DbGlja0xpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9uSXRlbVNlbGVjdGVkTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsIiB0eXBlPSJhbmRyb2lkLndpZGdldC5BZGFwdGVyVmlldy5Pbkl0ZW1TZWxlY3RlZExpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRocmVzaG9sZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRocmVzaG9sZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZhbGlkYXRvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbGlkYXRvciIgdHlwZT0iYW5kcm9pZC53aWRnZXQuQXV0b0NvbXBsZXRlVGV4dFZpZXcuVmFsaWRhdG9yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNob3dEcm9wRG93biIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkF1dG9Db21wbGV0ZVRleHRWaWV3LlZhbGlkYXRvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZml4VGV4dCIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW52YWxpZFRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNWYWxpZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQmFzZUFkYXB0ZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLndpZGdldC5MaXN0QWRhcHRlciI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLndpZGdldC5TcGlubmVyQWRhcHRlciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmFzZUFkYXB0ZXIiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQmFzZUFkYXB0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYXJlQWxsSXRlbXNFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREcm9wRG93blZpZXciCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udmVydFZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SXRlbVZpZXdUeXBlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZpZXdUeXBlQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzU3RhYmxlSWRzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0VtcHR5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0VuYWJsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5vdGlmeURhdGFTZXRDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJub3RpZnlEYXRhU2V0SW52YWxpZGF0ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlZ2lzdGVyRGF0YVNldE9ic2VydmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JzZXJ2ZXIiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuRGF0YVNldE9ic2VydmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVucmVnaXN0ZXJEYXRhU2V0T2JzZXJ2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYnNlcnZlciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5EYXRhU2V0T2JzZXJ2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQmFzZUV4cGFuZGFibGVMaXN0QWRhcHRlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQud2lkZ2V0LkV4cGFuZGFibGVMaXN0QWRhcHRlciI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLndpZGdldC5IZXRlcm9nZW5lb3VzRXhwYW5kYWJsZUxpc3QiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJhc2VFeHBhbmRhYmxlTGlzdEFkYXB0ZXIiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQmFzZUV4cGFuZGFibGVMaXN0QWRhcHRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhcmVBbGxJdGVtc0VuYWJsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoaWxkVHlwZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZFBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hpbGRUeXBlQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29tYmluZWRDaGlsZElkIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBJZCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hpbGRJZCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb21iaW5lZEdyb3VwSWQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cElkIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdyb3VwVHlwZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdyb3VwVHlwZUNvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRW1wdHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5vdGlmeURhdGFTZXRDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJub3RpZnlEYXRhU2V0SW52YWxpZGF0ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uR3JvdXBDb2xsYXBzZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cFBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Hcm91cEV4cGFuZGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlZ2lzdGVyRGF0YVNldE9ic2VydmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JzZXJ2ZXIiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuRGF0YVNldE9ic2VydmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVucmVnaXN0ZXJEYXRhU2V0T2JzZXJ2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYnNlcnZlciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5EYXRhU2V0T2JzZXJ2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQnV0dG9uIgorIGV4dGVuZHM9ImFuZHJvaWQud2lkZ2V0LlRleHRWaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQnV0dG9uIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkJ1dHRvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCdXR0b24iCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQnV0dG9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCdXR0b24iCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQnV0dG9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZTdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2hlY2tCb3giCisgZXh0ZW5kcz0iYW5kcm9pZC53aWRnZXQuQ29tcG91bmRCdXR0b24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDaGVja0JveCIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5DaGVja0JveCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDaGVja0JveCIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5DaGVja0JveCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2hlY2tCb3giCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQ2hlY2tCb3giCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ2hlY2thYmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iaXNDaGVja2VkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENoZWNrZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoZWNrZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9nZ2xlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJDaGVja2VkVGV4dFZpZXciCisgZXh0ZW5kcz0iYW5kcm9pZC53aWRnZXQuVGV4dFZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQud2lkZ2V0LkNoZWNrYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2hlY2tlZFRleHRWaWV3IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkNoZWNrZWRUZXh0VmlldyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDaGVja2VkVGV4dFZpZXciCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQ2hlY2tlZFRleHRWaWV3IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDaGVja2VkVGV4dFZpZXciCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQ2hlY2tlZFRleHRWaWV3IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZTdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iaXNDaGVja2VkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDaGVja01hcmtEcmF3YWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc2lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2hlY2tNYXJrRHJhd2FibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENoZWNrZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGVja2VkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvZ2dsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2hyb25vbWV0ZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC53aWRnZXQuVGV4dFZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDaHJvbm9tZXRlciIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5DaHJvbm9tZXRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDaHJvbm9tZXRlciIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5DaHJvbm9tZXRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2hyb25vbWV0ZXIiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQ2hyb25vbWV0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRCYXNlIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGb3JtYXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9uQ2hyb25vbWV0ZXJUaWNrTGlzdGVuZXIiCisgcmV0dXJuPSJhbmRyb2lkLndpZGdldC5DaHJvbm9tZXRlci5PbkNocm9ub21ldGVyVGlja0xpc3RlbmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEJhc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiYXNlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZvcm1hdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcm1hdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPbkNocm9ub21ldGVyVGlja0xpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkNocm9ub21ldGVyLk9uQ2hyb25vbWV0ZXJUaWNrTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0b3AiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDaHJvbm9tZXRlci5PbkNocm9ub21ldGVyVGlja0xpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvbkNocm9ub21ldGVyVGljayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hyb25vbWV0ZXIiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkNocm9ub21ldGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJDb21wb3VuZEJ1dHRvbiIKKyBleHRlbmRzPSJhbmRyb2lkLndpZGdldC5CdXR0b24iCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC53aWRnZXQuQ2hlY2thYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb21wb3VuZEJ1dHRvbiIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5Db21wb3VuZEJ1dHRvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb21wb3VuZEJ1dHRvbiIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5Db21wb3VuZEJ1dHRvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29tcG91bmRCdXR0b24iCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQ29tcG91bmRCdXR0b24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJpc0NoZWNrZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEJ1dHRvbkRyYXdhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCdXR0b25EcmF3YWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2hlY2tlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoZWNrZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25DaGVja2VkQ2hhbmdlTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC53aWRnZXQuQ29tcG91bmRCdXR0b24uT25DaGVja2VkQ2hhbmdlTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9nZ2xlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ29tcG91bmRCdXR0b24uT25DaGVja2VkQ2hhbmdlTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uQ2hlY2tlZENoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1dHRvblZpZXciIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkNvbXBvdW5kQnV0dG9uIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpc0NoZWNrZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkN1cnNvckFkYXB0ZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC53aWRnZXQuQmFzZUFkYXB0ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC53aWRnZXQuRmlsdGVyYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ3Vyc29yQWRhcHRlciIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5DdXJzb3JBZGFwdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDdXJzb3JBZGFwdGVyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkN1cnNvckFkYXB0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF1dG9SZXF1ZXJ5IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYmluZFZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGFuZ2VDdXJzb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbnZlcnRUb1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3Vyc29yIgorIHJldHVybj0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmlsdGVyIgorIHJldHVybj0iYW5kcm9pZC53aWRnZXQuRmlsdGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpbHRlclF1ZXJ5UHJvdmlkZXIiCisgcmV0dXJuPSJhbmRyb2lkLndpZGdldC5GaWx0ZXJRdWVyeVByb3ZpZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEl0ZW0iCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEl0ZW1JZCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmlldyIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb252ZXJ0VmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbml0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdXRvUmVxdWVyeSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdEcm9wRG93blZpZXciCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdWaWV3IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkNvbnRlbnRDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJydW5RdWVyeU9uQmFja2dyb3VuZFRocmVhZCIKKyByZXR1cm49ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb25zdHJhaW50IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZpbHRlclF1ZXJ5UHJvdmlkZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWx0ZXJRdWVyeVByb3ZpZGVyIiB0eXBlPSJhbmRyb2lkLndpZGdldC5GaWx0ZXJRdWVyeVByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkN1cnNvclRyZWVBZGFwdGVyIgorIGV4dGVuZHM9ImFuZHJvaWQud2lkZ2V0LkJhc2VFeHBhbmRhYmxlTGlzdEFkYXB0ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC53aWRnZXQuRmlsdGVyYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ3Vyc29yVHJlZUFkYXB0ZXIiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQ3Vyc29yVHJlZUFkYXB0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ3Vyc29yVHJlZUFkYXB0ZXIiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuQ3Vyc29yVHJlZUFkYXB0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0b1JlcXVlcnkiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJiaW5kQ2hpbGRWaWV3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlzTGFzdENoaWxkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImJpbmRHcm91cFZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNFeHBhbmRlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGFuZ2VDdXJzb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbnZlcnRUb1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hpbGQiCisgcmV0dXJuPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZFBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hpbGRJZCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hpbGRQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoaWxkVmlldyIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cFBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNMYXN0Q2hpbGQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnZlcnRWaWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoaWxkcmVuQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDaGlsZHJlbkN1cnNvciIKKyByZXR1cm49ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwQ3Vyc29yIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDdXJzb3IiCisgcmV0dXJuPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGaWx0ZXIiCisgcmV0dXJuPSJhbmRyb2lkLndpZGdldC5GaWx0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmlsdGVyUXVlcnlQcm92aWRlciIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LkZpbHRlclF1ZXJ5UHJvdmlkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R3JvdXAiCisgcmV0dXJuPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdyb3VwQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R3JvdXBJZCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRHcm91cFZpZXciCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpc0V4cGFuZGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb252ZXJ0VmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNTdGFibGVJZHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ2hpbGRTZWxlY3RhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZFBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3Q2hpbGRWaWV3IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlzTGFzdENoaWxkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3R3JvdXBWaWV3IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlzRXhwYW5kZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJub3RpZnlEYXRhU2V0Q2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlbGVhc2VDdXJzb3JzIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJ1blF1ZXJ5T25CYWNrZ3JvdW5kVGhyZWFkIgorIHJldHVybj0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnN0cmFpbnQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2hpbGRyZW5DdXJzb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cFBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkcmVuQ3Vyc29yIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGaWx0ZXJRdWVyeVByb3ZpZGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsdGVyUXVlcnlQcm92aWRlciIgdHlwZT0iYW5kcm9pZC53aWRnZXQuRmlsdGVyUXVlcnlQcm92aWRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRHcm91cEN1cnNvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRGF0ZVBpY2tlciIKKyBleHRlbmRzPSJhbmRyb2lkLndpZGdldC5GcmFtZUxheW91dCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRhdGVQaWNrZXIiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuRGF0ZVBpY2tlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEYXRlUGlja2VyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkRhdGVQaWNrZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRhdGVQaWNrZXIiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuRGF0ZVBpY2tlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmU3R5bGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldERheU9mTW9udGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TW9udGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0WWVhciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbml0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieWVhciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb250aE9mWWVhciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXlPZk1vbnRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9uRGF0ZUNoYW5nZWRMaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC53aWRnZXQuRGF0ZVBpY2tlci5PbkRhdGVDaGFuZ2VkTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlRGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InllYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9udGhPZlllYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF5T2ZNb250aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJEYXRlUGlja2VyLk9uRGF0ZUNoYW5nZWRMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25EYXRlQ2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC53aWRnZXQuRGF0ZVBpY2tlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieWVhciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb250aE9mWWVhciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXlPZk1vbnRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkRpYWxlckZpbHRlciIKKyBleHRlbmRzPSJhbmRyb2lkLndpZGdldC5SZWxhdGl2ZUxheW91dCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRpYWxlckZpbHRlciIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5EaWFsZXJGaWx0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGlhbGVyRmlsdGVyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkRpYWxlckZpbHRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJUZXh0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREaWdpdHMiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpbHRlclRleHQiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExldHRlcnMiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1vZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNRd2VydHlLZXlib2FyZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Nb2RlQ2hhbmdlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2xkTW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdNb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlRmlsdGVyV2F0Y2hlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndhdGNoZXIiIHR5cGU9ImFuZHJvaWQudGV4dC5UZXh0V2F0Y2hlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREaWdpdHNXYXRjaGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2F0Y2hlciIgdHlwZT0iYW5kcm9pZC50ZXh0LlRleHRXYXRjaGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZpbHRlcldhdGNoZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3YXRjaGVyIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFdhdGNoZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TGV0dGVyc1dhdGNoZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3YXRjaGVyIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFdhdGNoZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TW9kZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld01vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkRJR0lUU19BTkRfTEVUVEVSUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRElHSVRTX0FORF9MRVRURVJTX05PX0RJR0lUUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRElHSVRTX0FORF9MRVRURVJTX05PX0xFVFRFUlMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRJR0lUU19PTkxZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMRVRURVJTX09OTFkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEaWdpdGFsQ2xvY2siCisgZXh0ZW5kcz0iYW5kcm9pZC53aWRnZXQuVGV4dFZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEaWdpdGFsQ2xvY2siCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuRGlnaXRhbENsb2NrIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRpZ2l0YWxDbG9jayIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5EaWdpdGFsQ2xvY2siCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJFZGl0VGV4dCIKKyBleHRlbmRzPSJhbmRyb2lkLndpZGdldC5UZXh0VmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkVkaXRUZXh0IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkVkaXRUZXh0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkVkaXRUZXh0IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkVkaXRUZXh0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFZGl0VGV4dCIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5FZGl0VGV4dCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmU3R5bGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImV4dGVuZFNlbGVjdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VsZWN0QWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTZWxlY3Rpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdG9wIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2VsZWN0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iRXhwYW5kYWJsZUxpc3RBZGFwdGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYXJlQWxsSXRlbXNFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoaWxkIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cFBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDaGlsZElkIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cFBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDaGlsZFZpZXciCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cFBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNMYXN0Q2hpbGQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnZlcnRWaWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoaWxkcmVuQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbWJpbmVkQ2hpbGRJZCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBJZCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hpbGRJZCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb21iaW5lZEdyb3VwSWQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwSWQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R3JvdXAiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRHcm91cENvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R3JvdXBJZCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdyb3VwVmlldyIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNFeHBhbmRlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udmVydFZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzU3RhYmxlSWRzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ2hpbGRTZWxlY3RhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cFBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0VtcHR5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uR3JvdXBDb2xsYXBzZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkdyb3VwRXhwYW5kZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3RlckRhdGFTZXRPYnNlcnZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JzZXJ2ZXIiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuRGF0YVNldE9ic2VydmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVucmVnaXN0ZXJEYXRhU2V0T2JzZXJ2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9ic2VydmVyIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkRhdGFTZXRPYnNlcnZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iRXhwYW5kYWJsZUxpc3RWaWV3IgorIGV4dGVuZHM9ImFuZHJvaWQud2lkZ2V0Lkxpc3RWaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRXhwYW5kYWJsZUxpc3RWaWV3IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkV4cGFuZGFibGVMaXN0VmlldyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFeHBhbmRhYmxlTGlzdFZpZXciCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuRXhwYW5kYWJsZUxpc3RWaWV3IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFeHBhbmRhYmxlTGlzdFZpZXciCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuRXhwYW5kYWJsZUxpc3RWaWV3IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZTdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY29sbGFwc2VHcm91cCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwUG9zIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhwYW5kR3JvdXAiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cFBvcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEV4cGFuZGFibGVMaXN0QWRhcHRlciIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LkV4cGFuZGFibGVMaXN0QWRhcHRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeHBhbmRhYmxlTGlzdFBvc2l0aW9uIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhdExpc3RQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZsYXRMaXN0UG9zaXRpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2tlZFBvc2l0aW9uIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhY2tlZFBvc2l0aW9uQ2hpbGQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2VkUG9zaXRpb24iIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFja2VkUG9zaXRpb25Gb3JDaGlsZCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZFBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFja2VkUG9zaXRpb25Gb3JHcm91cCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhY2tlZFBvc2l0aW9uR3JvdXAiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2VkUG9zaXRpb24iIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFja2VkUG9zaXRpb25UeXBlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2tlZFBvc2l0aW9uIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlbGVjdGVkSWQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlbGVjdGVkUG9zaXRpb24iCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzR3JvdXBFeHBhbmRlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBZGFwdGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWRhcHRlciIgdHlwZT0iYW5kcm9pZC53aWRnZXQuRXhwYW5kYWJsZUxpc3RBZGFwdGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENoaWxkRGl2aWRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkRGl2aWRlciIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDaGlsZEluZGljYXRvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkSW5kaWNhdG9yIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENoaWxkSW5kaWNhdG9yQm91bmRzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVmdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEdyb3VwSW5kaWNhdG9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBJbmRpY2F0b3IiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW5kaWNhdG9yQm91bmRzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVmdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9uQ2hpbGRDbGlja0xpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib25DaGlsZENsaWNrTGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkV4cGFuZGFibGVMaXN0Vmlldy5PbkNoaWxkQ2xpY2tMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPbkdyb3VwQ2xpY2tMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9uR3JvdXBDbGlja0xpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLndpZGdldC5FeHBhbmRhYmxlTGlzdFZpZXcuT25Hcm91cENsaWNrTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25Hcm91cENvbGxhcHNlTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvbkdyb3VwQ29sbGFwc2VMaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC53aWRnZXQuRXhwYW5kYWJsZUxpc3RWaWV3Lk9uR3JvdXBDb2xsYXBzZUxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9uR3JvdXBFeHBhbmRMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9uR3JvdXBFeHBhbmRMaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC53aWRnZXQuRXhwYW5kYWJsZUxpc3RWaWV3Lk9uR3JvdXBFeHBhbmRMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTZWxlY3RlZENoaWxkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZFBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNob3VsZEV4cGFuZEdyb3VwIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNlbGVjdGVkR3JvdXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cFBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDSElMRF9JTkRJQ0FUT1JfSU5IRVJJVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBBQ0tFRF9QT1NJVElPTl9UWVBFX0NISUxEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQQUNLRURfUE9TSVRJT05fVFlQRV9HUk9VUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEFDS0VEX1BPU0lUSU9OX1RZUEVfTlVMTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEFDS0VEX1BPU0lUSU9OX1ZBTFVFX05VTEwiCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDI5NDk2NzI5NUwiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkV4cGFuZGFibGVMaXN0Vmlldy5FeHBhbmRhYmxlTGlzdENvbnRleHRNZW51SW5mbyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudmlldy5Db250ZXh0TWVudS5Db250ZXh0TWVudUluZm8iPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkV4cGFuZGFibGVMaXN0Vmlldy5FeHBhbmRhYmxlTGlzdENvbnRleHRNZW51SW5mbyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5FeHBhbmRhYmxlTGlzdFZpZXcuRXhwYW5kYWJsZUxpc3RDb250ZXh0TWVudUluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXRWaWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2VkUG9zaXRpb24iIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxmaWVsZCBuYW1lPSJpZCIKKyB0eXBlPSJsb25nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icGFja2VkUG9zaXRpb24iCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRhcmdldFZpZXciCisgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkV4cGFuZGFibGVMaXN0Vmlldy5PbkNoaWxkQ2xpY2tMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25DaGlsZENsaWNrIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnQiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkV4cGFuZGFibGVMaXN0VmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hpbGRQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkV4cGFuZGFibGVMaXN0Vmlldy5Pbkdyb3VwQ2xpY2tMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25Hcm91cENsaWNrIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnQiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkV4cGFuZGFibGVMaXN0VmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJFeHBhbmRhYmxlTGlzdFZpZXcuT25Hcm91cENvbGxhcHNlTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uR3JvdXBDb2xsYXBzZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iRXhwYW5kYWJsZUxpc3RWaWV3Lk9uR3JvdXBFeHBhbmRMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25Hcm91cEV4cGFuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJGaWx0ZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRmlsdGVyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkZpbHRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjb252ZXJ0UmVzdWx0VG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRWYWx1ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaWx0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnN0cmFpbnQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmlsdGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb25zdHJhaW50IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC53aWRnZXQuRmlsdGVyLkZpbHRlckxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBlcmZvcm1GaWx0ZXJpbmciCisgcmV0dXJuPSJhbmRyb2lkLndpZGdldC5GaWx0ZXIuRmlsdGVyUmVzdWx0cyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb25zdHJhaW50IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1Ymxpc2hSZXN1bHRzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb25zdHJhaW50IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRzIiB0eXBlPSJhbmRyb2lkLndpZGdldC5GaWx0ZXIuRmlsdGVyUmVzdWx0cyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iRmlsdGVyLkZpbHRlckxpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvbkZpbHRlckNvbXBsZXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJGaWx0ZXIuRmlsdGVyUmVzdWx0cyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGaWx0ZXIuRmlsdGVyUmVzdWx0cyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5GaWx0ZXIuRmlsdGVyUmVzdWx0cyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9ImNvdW50IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InZhbHVlcyIKKyB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJGaWx0ZXJRdWVyeVByb3ZpZGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0icnVuUXVlcnkiCisgcmV0dXJuPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb25zdHJhaW50IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iRmlsdGVyYWJsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldEZpbHRlciIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LkZpbHRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJGcmFtZUxheW91dCIKKyBleHRlbmRzPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRnJhbWVMYXlvdXQiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuRnJhbWVMYXlvdXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRnJhbWVMYXlvdXQiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuRnJhbWVMYXlvdXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZyYW1lTGF5b3V0IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkZyYW1lTGF5b3V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZTdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q29uc2lkZXJHb25lQ2hpbGRyZW5XaGVuTWVhc3VyaW5nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGb3JlZ3JvdW5kIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkxheW91dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYW5nZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9wIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZvcmVncm91bmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkcmF3YWJsZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGb3JlZ3JvdW5kR3Jhdml0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcmVncm91bmRHcmF2aXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWVhc3VyZUFsbENoaWxkcmVuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVhc3VyZUFsbCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJGcmFtZUxheW91dC5MYXlvdXRQYXJhbXMiCisgZXh0ZW5kcz0iYW5kcm9pZC52aWV3LlZpZXdHcm91cC5NYXJnaW5MYXlvdXRQYXJhbXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZyYW1lTGF5b3V0LkxheW91dFBhcmFtcyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5GcmFtZUxheW91dC5MYXlvdXRQYXJhbXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZyYW1lTGF5b3V0LkxheW91dFBhcmFtcyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5GcmFtZUxheW91dC5MYXlvdXRQYXJhbXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRnJhbWVMYXlvdXQuTGF5b3V0UGFyYW1zIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkZyYW1lTGF5b3V0LkxheW91dFBhcmFtcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJncmF2aXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZyYW1lTGF5b3V0LkxheW91dFBhcmFtcyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5GcmFtZUxheW91dC5MYXlvdXRQYXJhbXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAuTGF5b3V0UGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGcmFtZUxheW91dC5MYXlvdXRQYXJhbXMiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuRnJhbWVMYXlvdXQuTGF5b3V0UGFyYW1zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwLk1hcmdpbkxheW91dFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iZ3Jhdml0eSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iR2FsbGVyeSIKKyBleHRlbmRzPSJhbmRyb2lkLndpZGdldC5BYnNTcGlubmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnZpZXcuR2VzdHVyZURldGVjdG9yLk9uR2VzdHVyZUxpc3RlbmVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJHYWxsZXJ5IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkdhbGxlcnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iR2FsbGVyeSIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5HYWxsZXJ5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJHYWxsZXJ5IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkdhbGxlcnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJvbkRvd24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25GbGluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImUxIiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImUyIiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZlbG9jaXR5WCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZlbG9jaXR5WSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Mb25nUHJlc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TY3JvbGwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlMSIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlMiIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaXN0YW5jZVgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaXN0YW5jZVkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU2hvd1ByZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZSIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU2luZ2xlVGFwVXAiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QW5pbWF0aW9uRHVyYXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbmltYXRpb25EdXJhdGlvbk1pbGxpcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENhbGxiYWNrRHVyaW5nRmxpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaG91bGRDYWxsYmFjayIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRHcmF2aXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3Jhdml0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNwYWNpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcGFjaW5nIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VW5zZWxlY3RlZEFscGhhIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idW5zZWxlY3RlZEFscGhhIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJHYWxsZXJ5LkxheW91dFBhcmFtcyIKKyBleHRlbmRzPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwLkxheW91dFBhcmFtcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iR2FsbGVyeS5MYXlvdXRQYXJhbXMiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuR2FsbGVyeS5MYXlvdXRQYXJhbXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkdhbGxlcnkuTGF5b3V0UGFyYW1zIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkdhbGxlcnkuTGF5b3V0UGFyYW1zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkdhbGxlcnkuTGF5b3V0UGFyYW1zIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkdhbGxlcnkuTGF5b3V0UGFyYW1zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwLkxheW91dFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkdyaWRWaWV3IgorIGV4dGVuZHM9ImFuZHJvaWQud2lkZ2V0LkFic0xpc3RWaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iR3JpZFZpZXciCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuR3JpZFZpZXciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iR3JpZFZpZXciCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuR3JpZFZpZXciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkdyaWRWaWV3IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkdyaWRWaWV3IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZTdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0QWRhcHRlciIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0Lkxpc3RBZGFwdGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0cmV0Y2hNb2RlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFkYXB0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhZGFwdGVyIiB0eXBlPSJhbmRyb2lkLndpZGdldC5MaXN0QWRhcHRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb2x1bW5XaWR0aCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbldpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0R3Jhdml0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImdyYXZpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRIb3Jpem9udGFsU3BhY2luZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imhvcml6b250YWxTcGFjaW5nIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TnVtQ29sdW1ucyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im51bUNvbHVtbnMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTZWxlY3Rpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN0cmV0Y2hNb2RlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyZXRjaE1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRWZXJ0aWNhbFNwYWNpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2ZXJ0aWNhbFNwYWNpbmciIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkFVVE9fRklUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTk9fU1RSRVRDSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RSRVRDSF9DT0xVTU5fV0lEVEgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNUUkVUQ0hfU1BBQ0lORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RSRVRDSF9TUEFDSU5HX1VOSUZPUk0iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJIZWFkZXJWaWV3TGlzdEFkYXB0ZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC53aWRnZXQuRmlsdGVyYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLndpZGdldC5XcmFwcGVyTGlzdEFkYXB0ZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkhlYWRlclZpZXdMaXN0QWRhcHRlciIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5IZWFkZXJWaWV3TGlzdEFkYXB0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoZWFkZXJWaWV3SW5mb3MiIHR5cGU9ImphdmEudXRpbC5BcnJheUxpc3QmbHQ7YW5kcm9pZC53aWRnZXQuTGlzdFZpZXcuRml4ZWRWaWV3SW5mbyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZvb3RlclZpZXdJbmZvcyIgdHlwZT0iamF2YS51dGlsLkFycmF5TGlzdCZsdDthbmRyb2lkLndpZGdldC5MaXN0Vmlldy5GaXhlZFZpZXdJbmZvJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWRhcHRlciIgdHlwZT0iYW5kcm9pZC53aWRnZXQuTGlzdEFkYXB0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhcmVBbGxJdGVtc0VuYWJsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpbHRlciIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LkZpbHRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGb290ZXJzQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SGVhZGVyc0NvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEl0ZW0iCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEl0ZW1JZCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SXRlbVZpZXdUeXBlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZpZXciCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udmVydFZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Vmlld1R5cGVDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRXcmFwcGVkQWRhcHRlciIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0Lkxpc3RBZGFwdGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc1N0YWJsZUlkcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNFbXB0eSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3RlckRhdGFTZXRPYnNlcnZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9ic2VydmVyIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkRhdGFTZXRPYnNlcnZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVGb290ZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVIZWFkZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bnJlZ2lzdGVyRGF0YVNldE9ic2VydmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JzZXJ2ZXIiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuRGF0YVNldE9ic2VydmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJIZXRlcm9nZW5lb3VzRXhwYW5kYWJsZUxpc3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRDaGlsZFR5cGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZFBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hpbGRUeXBlQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRHcm91cFR5cGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdyb3VwVHlwZUNvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9Ikhvcml6b250YWxTY3JvbGxWaWV3IgorIGV4dGVuZHM9ImFuZHJvaWQud2lkZ2V0LkZyYW1lTGF5b3V0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSG9yaXpvbnRhbFNjcm9sbFZpZXciCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuSG9yaXpvbnRhbFNjcm9sbFZpZXciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSG9yaXpvbnRhbFNjcm9sbFZpZXciCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuSG9yaXpvbnRhbFNjcm9sbFZpZXciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikhvcml6b250YWxTY3JvbGxWaWV3IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0Lkhvcml6b250YWxTY3JvbGxWaWV3IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZTdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYXJyb3dTY3JvbGwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXJlY3Rpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wdXRlU2Nyb2xsRGVsdGFUb0dldENoaWxkUmVjdE9uU2NyZWVuIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWN0IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhlY3V0ZUtleUV2ZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmbGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZlbG9jaXR5WCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZ1bGxTY3JvbGwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXJlY3Rpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYXhTY3JvbGxBbW91bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNGaWxsVmlld3BvcnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU21vb3RoU2Nyb2xsaW5nRW5hYmxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFnZVNjcm9sbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpcmVjdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZpbGxWaWV3cG9ydCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGxWaWV3cG9ydCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTbW9vdGhTY3JvbGxpbmdFbmFibGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic21vb3RoU2Nyb2xsaW5nRW5hYmxlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzbW9vdGhTY3JvbGxCeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzbW9vdGhTY3JvbGxUbyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW1hZ2VCdXR0b24iCisgZXh0ZW5kcz0iYW5kcm9pZC53aWRnZXQuSW1hZ2VWaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW1hZ2VCdXR0b24iCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuSW1hZ2VCdXR0b24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW1hZ2VCdXR0b24iCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuSW1hZ2VCdXR0b24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkltYWdlQnV0dG9uIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkltYWdlQnV0dG9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZTdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW1hZ2VTd2l0Y2hlciIKKyBleHRlbmRzPSJhbmRyb2lkLndpZGdldC5WaWV3U3dpdGNoZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbWFnZVN3aXRjaGVyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkltYWdlU3dpdGNoZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW1hZ2VTd2l0Y2hlciIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5JbWFnZVN3aXRjaGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ic2V0SW1hZ2VEcmF3YWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRyYXdhYmxlIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEltYWdlUmVzb3VyY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEltYWdlVVJJIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW1hZ2VWaWV3IgorIGV4dGVuZHM9ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW1hZ2VWaWV3IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkltYWdlVmlldyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbWFnZVZpZXciCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuSW1hZ2VWaWV3IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbWFnZVZpZXciCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuSW1hZ2VWaWV3IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZTdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xlYXJDb2xvckZpbHRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREcmF3YWJsZSIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW1hZ2VNYXRyaXgiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLk1hdHJpeCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTY2FsZVR5cGUiCisgcmV0dXJuPSJhbmRyb2lkLndpZGdldC5JbWFnZVZpZXcuU2NhbGVUeXBlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ3JlYXRlRHJhd2FibGVTdGF0ZSIKKyByZXR1cm49ImludFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleHRyYVNwYWNlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QWRqdXN0Vmlld0JvdW5kcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFkanVzdFZpZXdCb3VuZHMiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QWxwaGEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbHBoYSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbG9yRmlsdGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlBvcnRlckR1ZmYuTW9kZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb2xvckZpbHRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sb3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb2xvckZpbHRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNmIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkNvbG9yRmlsdGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZyYW1lIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEltYWdlQml0bWFwIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYm0iIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEltYWdlRHJhd2FibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkcmF3YWJsZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJbWFnZUxldmVsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGV2ZWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJbWFnZU1hdHJpeCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1hdHJpeCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5NYXRyaXgiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW1hZ2VSZXNvdXJjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW1hZ2VTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVyZ2UiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW1hZ2VVUkkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImFuZHJvaWQubmV0LlVyaSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNYXhIZWlnaHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXhIZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNYXhXaWR0aCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1heFdpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2NhbGVUeXBlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NhbGVUeXBlIiB0eXBlPSJhbmRyb2lkLndpZGdldC5JbWFnZVZpZXcuU2NhbGVUeXBlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkltYWdlVmlldy5TY2FsZVR5cGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkVudW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJhbmRyb2lkLndpZGdldC5JbWFnZVZpZXcuU2NhbGVUeXBlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVzIgorIHJldHVybj0iYW5kcm9pZC53aWRnZXQuSW1hZ2VWaWV3LlNjYWxlVHlwZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJMaW5lYXJMYXlvdXQiCisgZXh0ZW5kcz0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxpbmVhckxheW91dCIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5MaW5lYXJMYXlvdXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGluZWFyTGF5b3V0IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkxpbmVhckxheW91dCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEJhc2VsaW5lQWxpZ25lZENoaWxkSW5kZXgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T3JpZW50YXRpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V2VpZ2h0U3VtIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNCYXNlbGluZUFsaWduZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uTGF5b3V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhbmdlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEJhc2VsaW5lQWxpZ25lZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJhc2VsaW5lQWxpZ25lZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCYXNlbGluZUFsaWduZWRDaGlsZEluZGV4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEdyYXZpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncmF2aXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SG9yaXpvbnRhbEdyYXZpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3Jpem9udGFsR3Jhdml0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9yaWVudGF0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZW50YXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRWZXJ0aWNhbEdyYXZpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2ZXJ0aWNhbEdyYXZpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRXZWlnaHRTdW0iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3ZWlnaHRTdW0iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iSE9SSVpPTlRBTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVkVSVElDQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJMaW5lYXJMYXlvdXQuTGF5b3V0UGFyYW1zIgorIGV4dGVuZHM9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAuTWFyZ2luTGF5b3V0UGFyYW1zIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMaW5lYXJMYXlvdXQuTGF5b3V0UGFyYW1zIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkxpbmVhckxheW91dC5MYXlvdXRQYXJhbXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxpbmVhckxheW91dC5MYXlvdXRQYXJhbXMiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuTGluZWFyTGF5b3V0LkxheW91dFBhcmFtcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMaW5lYXJMYXlvdXQuTGF5b3V0UGFyYW1zIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LkxpbmVhckxheW91dC5MYXlvdXRQYXJhbXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2VpZ2h0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGluZWFyTGF5b3V0LkxheW91dFBhcmFtcyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5MaW5lYXJMYXlvdXQuTGF5b3V0UGFyYW1zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cC5MYXlvdXRQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxpbmVhckxheW91dC5MYXlvdXRQYXJhbXMiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuTGluZWFyTGF5b3V0LkxheW91dFBhcmFtcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cC5NYXJnaW5MYXlvdXRQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZWJ1ZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHB1dCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImdyYXZpdHkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0id2VpZ2h0IgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJMaXN0QWRhcHRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLndpZGdldC5BZGFwdGVyIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iYXJlQWxsSXRlbXNFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRW5hYmxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iTGlzdFZpZXciCisgZXh0ZW5kcz0iYW5kcm9pZC53aWRnZXQuQWJzTGlzdFZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMaXN0VmlldyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5MaXN0VmlldyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMaXN0VmlldyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5MaXN0VmlldyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGlzdFZpZXciCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuTGlzdFZpZXciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRGb290ZXJWaWV3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlzU2VsZWN0YWJsZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRGb290ZXJWaWV3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkSGVhZGVyVmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpc1NlbGVjdGFibGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkSGVhZGVyVmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyQ2hvaWNlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmluZFZpZXdUcmF2ZXJzYWwiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaW5kVmlld1dpdGhUYWdUcmF2ZXJzYWwiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFnIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFkYXB0ZXIiCisgcmV0dXJuPSJhbmRyb2lkLndpZGdldC5MaXN0QWRhcHRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDaGVja0l0ZW1JZHMiCisgcmV0dXJuPSJsb25nW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDaGVja2VkSXRlbUlkcyIKKyByZXR1cm49ImxvbmdbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDaGVja2VkSXRlbVBvc2l0aW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoZWNrZWRJdGVtUG9zaXRpb25zIgorIHJldHVybj0iYW5kcm9pZC51dGlsLlNwYXJzZUJvb2xlYW5BcnJheSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDaG9pY2VNb2RlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERpdmlkZXIiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERpdmlkZXJIZWlnaHQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Rm9vdGVyVmlld3NDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIZWFkZXJWaWV3c0NvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEl0ZW1zQ2FuRm9jdXMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1heFNjcm9sbEFtb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0l0ZW1DaGVja2VkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVGb290ZXJWaWV3IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlSGVhZGVyVmlldyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFkYXB0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhZGFwdGVyIiB0eXBlPSJhbmRyb2lkLndpZGdldC5MaXN0QWRhcHRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDaG9pY2VNb2RlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hvaWNlTW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERpdmlkZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXZpZGVyIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERpdmlkZXJIZWlnaHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGb290ZXJEaXZpZGVyc0VuYWJsZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmb290ZXJEaXZpZGVyc0VuYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SGVhZGVyRGl2aWRlcnNFbmFibGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVhZGVyRGl2aWRlcnNFbmFibGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEl0ZW1DaGVja2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SXRlbXNDYW5Gb2N1cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Iml0ZW1zQ2FuRm9jdXMiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2VsZWN0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTZWxlY3Rpb25BZnRlckhlYWRlclZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNlbGVjdGlvbkZyb21Ub3AiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDSE9JQ0VfTU9ERV9NVUxUSVBMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hPSUNFX01PREVfTk9ORSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hPSUNFX01PREVfU0lOR0xFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTGlzdFZpZXcuRml4ZWRWaWV3SW5mbyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGlzdFZpZXcuRml4ZWRWaWV3SW5mbyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5MaXN0Vmlldy5GaXhlZFZpZXdJbmZvIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iZGF0YSIKKyB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaXNTZWxlY3RhYmxlIgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ2aWV3IgorIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik1lZGlhQ29udHJvbGxlciIKKyBleHRlbmRzPSJhbmRyb2lkLndpZGdldC5GcmFtZUxheW91dCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1lZGlhQ29udHJvbGxlciIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5NZWRpYUNvbnRyb2xsZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1lZGlhQ29udHJvbGxlciIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5NZWRpYUNvbnRyb2xsZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXNlRmFzdEZvcndhcmQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1lZGlhQ29udHJvbGxlciIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5NZWRpYUNvbnRyb2xsZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImhpZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU2hvd2luZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25GaW5pc2hJbmZsYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBbmNob3JWaWV3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWVkaWFQbGF5ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbGF5ZXIiIHR5cGU9ImFuZHJvaWQud2lkZ2V0Lk1lZGlhQ29udHJvbGxlci5NZWRpYVBsYXllckNvbnRyb2wiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UHJldk5leHRMaXN0ZW5lcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXh0IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldy5PbkNsaWNrTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByZXYiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Lk9uQ2xpY2tMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaG93IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaG93IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJNZWRpYUNvbnRyb2xsZXIuTWVkaWFQbGF5ZXJDb250cm9sIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJjYW5QYXVzZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYW5TZWVrQmFja3dhcmQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2FuU2Vla0ZvcndhcmQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QnVmZmVyUGVyY2VudGFnZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEN1cnJlbnRQb3NpdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldER1cmF0aW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNQbGF5aW5nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhdXNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlZWtUbyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9Ik11bHRpQXV0b0NvbXBsZXRlVGV4dFZpZXciCisgZXh0ZW5kcz0iYW5kcm9pZC53aWRnZXQuQXV0b0NvbXBsZXRlVGV4dFZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNdWx0aUF1dG9Db21wbGV0ZVRleHRWaWV3IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0Lk11bHRpQXV0b0NvbXBsZXRlVGV4dFZpZXciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTXVsdGlBdXRvQ29tcGxldGVUZXh0VmlldyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5NdWx0aUF1dG9Db21wbGV0ZVRleHRWaWV3IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNdWx0aUF1dG9Db21wbGV0ZVRleHRWaWV3IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0Lk11bHRpQXV0b0NvbXBsZXRlVGV4dFZpZXciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJwZXJmb3JtRmlsdGVyaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUb2tlbml6ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0IiB0eXBlPSJhbmRyb2lkLndpZGdldC5NdWx0aUF1dG9Db21wbGV0ZVRleHRWaWV3LlRva2VuaXplciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNdWx0aUF1dG9Db21wbGV0ZVRleHRWaWV3LkNvbW1hVG9rZW5pemVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC53aWRnZXQuTXVsdGlBdXRvQ29tcGxldGVUZXh0Vmlldy5Ub2tlbml6ZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik11bHRpQXV0b0NvbXBsZXRlVGV4dFZpZXcuQ29tbWFUb2tlbml6ZXIiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuTXVsdGlBdXRvQ29tcGxldGVUZXh0Vmlldy5Db21tYVRva2VuaXplciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJmaW5kVG9rZW5FbmQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmRUb2tlblN0YXJ0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0ZXJtaW5hdGVUb2tlbiIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ik11bHRpQXV0b0NvbXBsZXRlVGV4dFZpZXcuVG9rZW5pemVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJmaW5kVG9rZW5FbmQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmluZFRva2VuU3RhcnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGVybWluYXRlVG9rZW4iCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlBvcHVwV2luZG93IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQb3B1cFdpbmRvdyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5Qb3B1cFdpbmRvdyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQb3B1cFdpbmRvdyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5Qb3B1cFdpbmRvdyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUG9wdXBXaW5kb3ciCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuUG9wdXBXaW5kb3ciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBvcHVwV2luZG93IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlBvcHVwV2luZG93IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUG9wdXBXaW5kb3ciCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuUG9wdXBXaW5kb3ciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZW50VmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBvcHVwV2luZG93IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlBvcHVwV2luZG93IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBvcHVwV2luZG93IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlBvcHVwV2luZG93IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGVudFZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUG9wdXBXaW5kb3ciCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuUG9wdXBXaW5kb3ciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZW50VmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb2N1c2FibGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkaXNtaXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbmltYXRpb25TdHlsZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCYWNrZ3JvdW5kIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZW50VmlldyIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhlaWdodCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnB1dE1ldGhvZE1vZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF4QXZhaWxhYmxlSGVpZ2h0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbmNob3IiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1heEF2YWlsYWJsZUhlaWdodCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYW5jaG9yIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieU9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNvZnRJbnB1dE1vZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V2lkdGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNBYm92ZUFuY2hvciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNDbGlwcGluZ0VuYWJsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRm9jdXNhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc091dHNpZGVUb3VjaGFibGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU2hvd2luZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNUb3VjaGFibGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFuaW1hdGlvblN0eWxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYW5pbWF0aW9uU3R5bGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCYWNrZ3JvdW5kRHJhd2FibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiYWNrZ3JvdW5kIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENsaXBwaW5nRW5hYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVuYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29udGVudFZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZW50VmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Rm9jdXNhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9jdXNhYmxlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEhlaWdodCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldElnbm9yZUNoZWVrUHJlc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldElucHV0TWV0aG9kTW9kZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPbkRpc21pc3NMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9uRGlzbWlzc0xpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLndpZGdldC5Qb3B1cFdpbmRvdy5PbkRpc21pc3NMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPdXRzaWRlVG91Y2hhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idG91Y2hhYmxlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNvZnRJbnB1dE1vZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VG91Y2hJbnRlcmNlcHRvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImwiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Lk9uVG91Y2hMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUb3VjaGFibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0b3VjaGFibGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0V2lkdGgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFdpbmRvd0xheW91dE1vZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aFNwZWMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0U3BlYyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNob3dBc0Ryb3BEb3duIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYW5jaG9yIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaG93QXNEcm9wRG93biIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFuY2hvciIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InhvZmYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieW9mZiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNob3dBdExvY2F0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3Jhdml0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcmNlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFuY2hvciIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFuY2hvciIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InhvZmYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieW9mZiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IklOUFVUX01FVEhPRF9GUk9NX0ZPQ1VTQUJMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU5QVVRfTUVUSE9EX05FRURFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU5QVVRfTUVUSE9EX05PVF9ORUVERUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iUG9wdXBXaW5kb3cuT25EaXNtaXNzTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uRGlzbWlzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iUHJvZ3Jlc3NCYXIiCisgZXh0ZW5kcz0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcm9ncmVzc0JhciIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5Qcm9ncmVzc0JhciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcm9ncmVzc0JhciIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5Qcm9ncmVzc0JhciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJvZ3Jlc3NCYXIiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuUHJvZ3Jlc3NCYXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRJbmRldGVybWluYXRlRHJhd2FibGUiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEludGVycG9sYXRvciIKKyByZXR1cm49ImFuZHJvaWQudmlldy5hbmltYXRpb24uSW50ZXJwb2xhdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1heCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb2dyZXNzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvZ3Jlc3NEcmF3YWJsZSIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2Vjb25kYXJ5UHJvZ3Jlc3MiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbmNyZW1lbnRQcm9ncmVzc0J5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpZmYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbmNyZW1lbnRTZWNvbmRhcnlQcm9ncmVzc0J5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpZmYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0luZGV0ZXJtaW5hdGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25SZXN0b3JlSW5zdGFuY2VTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TYXZlSW5zdGFuY2VTdGF0ZSIKKyByZXR1cm49ImFuZHJvaWQub3MuUGFyY2VsYWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJbmRldGVybWluYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRldGVybWluYXRlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEluZGV0ZXJtaW5hdGVEcmF3YWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW50ZXJwb2xhdG9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc0lEIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW50ZXJwb2xhdG9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZXJwb2xhdG9yIiB0eXBlPSJhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkludGVycG9sYXRvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNYXgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1heCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByb2dyZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9ncmVzcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByb2dyZXNzRHJhd2FibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNlY29uZGFyeVByb2dyZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWNvbmRhcnlQcm9ncmVzcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlF1aWNrQ29udGFjdEJhZGdlIgorIGV4dGVuZHM9ImFuZHJvaWQud2lkZ2V0LkltYWdlVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC52aWV3LlZpZXcuT25DbGlja0xpc3RlbmVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJRdWlja0NvbnRhY3RCYWRnZSIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5RdWlja0NvbnRhY3RCYWRnZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJRdWlja0NvbnRhY3RCYWRnZSIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5RdWlja0NvbnRhY3RCYWRnZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUXVpY2tDb250YWN0QmFkZ2UiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuUXVpY2tDb250YWN0QmFkZ2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhc3NpZ25Db250YWN0RnJvbUVtYWlsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW1haWxBZGRyZXNzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYXp5TG9va3VwIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzc2lnbkNvbnRhY3RGcm9tUGhvbmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwaG9uZU51bWJlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGF6eUxvb2t1cCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NpZ25Db250YWN0VXJpIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGFjdFVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ2xpY2siCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFeGNsdWRlTWltZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleGNsdWRlTWltZXMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNb2RlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0ibUV4Y2x1ZGVNaW1lcyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmFkaW9CdXR0b24iCisgZXh0ZW5kcz0iYW5kcm9pZC53aWRnZXQuQ29tcG91bmRCdXR0b24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSYWRpb0J1dHRvbiIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5SYWRpb0J1dHRvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSYWRpb0J1dHRvbiIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5SYWRpb0J1dHRvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmFkaW9CdXR0b24iCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuUmFkaW9CdXR0b24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSYWRpb0dyb3VwIgorIGV4dGVuZHM9ImFuZHJvaWQud2lkZ2V0LkxpbmVhckxheW91dCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJhZGlvR3JvdXAiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuUmFkaW9Hcm91cCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSYWRpb0dyb3VwIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlJhZGlvR3JvdXAiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjaGVjayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJDaGVjayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hlY2tlZFJhZGlvQnV0dG9uSWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25DaGVja2VkQ2hhbmdlTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC53aWRnZXQuUmFkaW9Hcm91cC5PbkNoZWNrZWRDaGFuZ2VMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSYWRpb0dyb3VwLkxheW91dFBhcmFtcyIKKyBleHRlbmRzPSJhbmRyb2lkLndpZGdldC5MaW5lYXJMYXlvdXQuTGF5b3V0UGFyYW1zIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSYWRpb0dyb3VwLkxheW91dFBhcmFtcyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5SYWRpb0dyb3VwLkxheW91dFBhcmFtcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmFkaW9Hcm91cC5MYXlvdXRQYXJhbXMiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuUmFkaW9Hcm91cC5MYXlvdXRQYXJhbXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmFkaW9Hcm91cC5MYXlvdXRQYXJhbXMiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuUmFkaW9Hcm91cC5MYXlvdXRQYXJhbXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5pdFdlaWdodCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJhZGlvR3JvdXAuTGF5b3V0UGFyYW1zIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlJhZGlvR3JvdXAuTGF5b3V0UGFyYW1zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cC5MYXlvdXRQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJhZGlvR3JvdXAuTGF5b3V0UGFyYW1zIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlJhZGlvR3JvdXAuTGF5b3V0UGFyYW1zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwLk1hcmdpbkxheW91dFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJSYWRpb0dyb3VwLk9uQ2hlY2tlZENoYW5nZUxpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvbkNoZWNrZWRDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cCIgdHlwZT0iYW5kcm9pZC53aWRnZXQuUmFkaW9Hcm91cCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hlY2tlZElkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlJhdGluZ0JhciIKKyBleHRlbmRzPSJhbmRyb2lkLndpZGdldC5BYnNTZWVrQmFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmF0aW5nQmFyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlJhdGluZ0JhciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmU3R5bGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmF0aW5nQmFyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlJhdGluZ0JhciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmF0aW5nQmFyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlJhdGluZ0JhciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0TnVtU3RhcnMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T25SYXRpbmdCYXJDaGFuZ2VMaXN0ZW5lciIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LlJhdGluZ0Jhci5PblJhdGluZ0JhckNoYW5nZUxpc3RlbmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJhdGluZyIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0ZXBTaXplIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNJbmRpY2F0b3IiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldElzSW5kaWNhdG9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNJbmRpY2F0b3IiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TnVtU3RhcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJudW1TdGFycyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9uUmF0aW5nQmFyQ2hhbmdlTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC53aWRnZXQuUmF0aW5nQmFyLk9uUmF0aW5nQmFyQ2hhbmdlTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UmF0aW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmF0aW5nIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTdGVwU2l6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0ZXBTaXplIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iUmF0aW5nQmFyLk9uUmF0aW5nQmFyQ2hhbmdlTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uUmF0aW5nQ2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmF0aW5nQmFyIiB0eXBlPSJhbmRyb2lkLndpZGdldC5SYXRpbmdCYXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJhdGluZyIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZyb21Vc2VyIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJSZWxhdGl2ZUxheW91dCIKKyBleHRlbmRzPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVsYXRpdmVMYXlvdXQiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuUmVsYXRpdmVMYXlvdXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVsYXRpdmVMYXlvdXQiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuUmVsYXRpdmVMYXlvdXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlbGF0aXZlTGF5b3V0IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlJlbGF0aXZlTGF5b3V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZTdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ib25MYXlvdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGFuZ2VkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0R3Jhdml0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImdyYXZpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRIb3Jpem9udGFsR3Jhdml0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imhvcml6b250YWxHcmF2aXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SWdub3JlR3Jhdml0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXdJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZlcnRpY2FsR3Jhdml0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZlcnRpY2FsR3Jhdml0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQUJPVkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFMSUdOX0JBU0VMSU5FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBTElHTl9CT1RUT00iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFMSUdOX0xFRlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFMSUdOX1BBUkVOVF9CT1RUT00iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBTElHTl9QQVJFTlRfTEVGVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUxJR05fUEFSRU5UX1JJR0hUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUxJR05fUEFSRU5UX1RPUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFMSUdOX1JJR0hUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBTElHTl9UT1AiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJFTE9XIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDRU5URVJfSE9SSVpPTlRBTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNFTlRFUl9JTl9QQVJFTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDRU5URVJfVkVSVElDQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMRUZUX09GIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSSUdIVF9PRiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFJVRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSZWxhdGl2ZUxheW91dC5MYXlvdXRQYXJhbXMiCisgZXh0ZW5kcz0iYW5kcm9pZC52aWV3LlZpZXdHcm91cC5NYXJnaW5MYXlvdXRQYXJhbXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlbGF0aXZlTGF5b3V0LkxheW91dFBhcmFtcyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5SZWxhdGl2ZUxheW91dC5MYXlvdXRQYXJhbXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlbGF0aXZlTGF5b3V0LkxheW91dFBhcmFtcyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5SZWxhdGl2ZUxheW91dC5MYXlvdXRQYXJhbXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVsYXRpdmVMYXlvdXQuTGF5b3V0UGFyYW1zIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlJlbGF0aXZlTGF5b3V0LkxheW91dFBhcmFtcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cC5MYXlvdXRQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlbGF0aXZlTGF5b3V0LkxheW91dFBhcmFtcyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5SZWxhdGl2ZUxheW91dC5MYXlvdXRQYXJhbXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAuTWFyZ2luTGF5b3V0UGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkUnVsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZlcmIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRSdWxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmVyYiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbmNob3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWJ1ZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHB1dCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSdWxlcyIKKyByZXR1cm49ImludFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iYWxpZ25XaXRoUGFyZW50IgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmVtb3RlVmlld3MiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC52aWV3LkxheW91dEluZmxhdGVyLkZpbHRlciI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLm9zLlBhcmNlbGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlbW90ZVZpZXdzIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlJlbW90ZVZpZXdzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2FnZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxheW91dElkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlbW90ZVZpZXdzIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlJlbW90ZVZpZXdzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyY2VsIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZFZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3SWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmVzdGVkVmlldyIgdHlwZT0iYW5kcm9pZC53aWRnZXQuUmVtb3RlVmlld3MiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXBwbHkiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZXNjcmliZUNvbnRlbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExheW91dElkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhY2thZ2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uTG9hZENsYXNzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2xhenoiIHR5cGU9ImphdmEubGFuZy5DbGFzcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFwcGx5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZUFsbFZpZXdzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlld0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Qml0bWFwIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlld0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1ldGhvZE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCb29sZWFuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlld0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1ldGhvZE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEJ1bmRsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXdJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXRob2ROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Qnl0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXdJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXRob2ROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYnl0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDaGFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlld0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1ldGhvZE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENoYXJTZXF1ZW5jZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXdJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXRob2ROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDaHJvbm9tZXRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXdJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiYXNlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0ZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RG91YmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlld0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1ldGhvZE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RmxvYXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3SWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWV0aG9kTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEltYWdlVmlld0JpdG1hcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXdJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiaXRtYXAiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEltYWdlVmlld1Jlc291cmNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlld0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNyY0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW1hZ2VWaWV3VXJpIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlld0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEludCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXdJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXRob2ROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldExvbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3SWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWV0aG9kTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25DbGlja1BlbmRpbmdJbnRlbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3SWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGVuZGluZ0ludGVudCIgdHlwZT0iYW5kcm9pZC5hcHAuUGVuZGluZ0ludGVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQcm9ncmVzc0JhciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXdJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvZ3Jlc3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXRlcm1pbmF0ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTaG9ydCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXdJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXRob2ROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0ic2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RyaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlld0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1ldGhvZE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRleHRDb2xvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXdJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRleHRWaWV3VGV4dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXdJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFVyaSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXdJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXRob2ROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZpZXdWaXNpYmlsaXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlld0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZpc2liaWxpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDUkVBVE9SIgorIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZS5DcmVhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSZW1vdGVWaWV3cy5BY3Rpb25FeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlbW90ZVZpZXdzLkFjdGlvbkV4Y2VwdGlvbiIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5SZW1vdGVWaWV3cy5BY3Rpb25FeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleCIgdHlwZT0iamF2YS5sYW5nLkV4Y2VwdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVtb3RlVmlld3MuQWN0aW9uRXhjZXB0aW9uIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlJlbW90ZVZpZXdzLkFjdGlvbkV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSZW1vdGVWaWV3cy5SZW1vdGVWaWV3IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuYW5ub3RhdGlvbi5Bbm5vdGF0aW9uIj4KKzwvaW1wbGVtZW50cz4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmVzb3VyY2VDdXJzb3JBZGFwdGVyIgorIGV4dGVuZHM9ImFuZHJvaWQud2lkZ2V0LkN1cnNvckFkYXB0ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlc291cmNlQ3Vyc29yQWRhcHRlciIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5SZXNvdXJjZUN1cnNvckFkYXB0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGF5b3V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZXNvdXJjZUN1cnNvckFkYXB0ZXIiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuUmVzb3VyY2VDdXJzb3JBZGFwdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxheW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0b1JlcXVlcnkiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJuZXdWaWV3IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RHJvcERvd25WaWV3UmVzb3VyY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkcm9wRG93bkxheW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZpZXdSZXNvdXJjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxheW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJlc291cmNlQ3Vyc29yVHJlZUFkYXB0ZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC53aWRnZXQuQ3Vyc29yVHJlZUFkYXB0ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlc291cmNlQ3Vyc29yVHJlZUFkYXB0ZXIiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuUmVzb3VyY2VDdXJzb3JUcmVlQWRhcHRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2xsYXBzZWRHcm91cExheW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHBhbmRlZEdyb3VwTGF5b3V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkTGF5b3V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxhc3RDaGlsZExheW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZXNvdXJjZUN1cnNvclRyZWVBZGFwdGVyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlJlc291cmNlQ3Vyc29yVHJlZUFkYXB0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sbGFwc2VkR3JvdXBMYXlvdXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwYW5kZWRHcm91cExheW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZExheW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZXNvdXJjZUN1cnNvclRyZWVBZGFwdGVyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlJlc291cmNlQ3Vyc29yVHJlZUFkYXB0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBMYXlvdXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hpbGRMYXlvdXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9Im5ld0NoaWxkVmlldyIKKyByZXR1cm49ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNMYXN0Q2hpbGQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdHcm91cFZpZXciCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlzRXhwYW5kZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTY3JvbGxWaWV3IgorIGV4dGVuZHM9ImFuZHJvaWQud2lkZ2V0LkZyYW1lTGF5b3V0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2Nyb2xsVmlldyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5TY3JvbGxWaWV3IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNjcm9sbFZpZXciCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuU2Nyb2xsVmlldyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2Nyb2xsVmlldyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5TY3JvbGxWaWV3IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZTdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYXJyb3dTY3JvbGwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXJlY3Rpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wdXRlU2Nyb2xsRGVsdGFUb0dldENoaWxkUmVjdE9uU2NyZWVuIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWN0IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlJlY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhlY3V0ZUtleUV2ZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5LZXlFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmbGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZlbG9jaXR5WSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZ1bGxTY3JvbGwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXJlY3Rpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYXhTY3JvbGxBbW91bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNGaWxsVmlld3BvcnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU21vb3RoU2Nyb2xsaW5nRW5hYmxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFnZVNjcm9sbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpcmVjdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZpbGxWaWV3cG9ydCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGxWaWV3cG9ydCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTbW9vdGhTY3JvbGxpbmdFbmFibGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic21vb3RoU2Nyb2xsaW5nRW5hYmxlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzbW9vdGhTY3JvbGxCeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzbW9vdGhTY3JvbGxUbyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2Nyb2xsZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNjcm9sbGVyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlNjcm9sbGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNjcm9sbGVyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlNjcm9sbGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVycG9sYXRvciIgdHlwZT0iYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5JbnRlcnBvbGF0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhYm9ydEFuaW1hdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcHV0ZVNjcm9sbE9mZnNldCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXh0ZW5kRHVyYXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleHRlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmbGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0WCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydFkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmVsb2NpdHlYIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZlbG9jaXR5WSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaW5YIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1heFgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWluWSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYXhZIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9yY2VGaW5pc2hlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmluaXNoZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3VyclgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDdXJyWSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldER1cmF0aW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmluYWxYIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmluYWxZIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RhcnRYIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RhcnRZIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNGaW5pc2hlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGaW5hbFgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdYIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RmluYWxZIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3WSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0U2Nyb2xsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnRYIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0WSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkeCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkeSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0U2Nyb2xsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnRYIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0WSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkeCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkeSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkdXJhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRpbWVQYXNzZWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlNlY3Rpb25JbmRleGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0UG9zaXRpb25Gb3JTZWN0aW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlY3Rpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZWN0aW9uRm9yUG9zaXRpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZWN0aW9ucyIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3RbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJTZWVrQmFyIgorIGV4dGVuZHM9ImFuZHJvaWQud2lkZ2V0LkFic1NlZWtCYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTZWVrQmFyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlNlZWtCYXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2Vla0JhciIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5TZWVrQmFyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTZWVrQmFyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlNlZWtCYXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJzZXRPblNlZWtCYXJDaGFuZ2VMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImwiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlNlZWtCYXIuT25TZWVrQmFyQ2hhbmdlTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlNlZWtCYXIuT25TZWVrQmFyQ2hhbmdlTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im9uUHJvZ3Jlc3NDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWVrQmFyIiB0eXBlPSJhbmRyb2lkLndpZGdldC5TZWVrQmFyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm9ncmVzcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmcm9tVXNlciIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblN0YXJ0VHJhY2tpbmdUb3VjaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2Vla0JhciIgdHlwZT0iYW5kcm9pZC53aWRnZXQuU2Vla0JhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblN0b3BUcmFja2luZ1RvdWNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWVrQmFyIiB0eXBlPSJhbmRyb2lkLndpZGdldC5TZWVrQmFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJTaW1wbGVBZGFwdGVyIgorIGV4dGVuZHM9ImFuZHJvaWQud2lkZ2V0LkJhc2VBZGFwdGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLndpZGdldC5GaWx0ZXJhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTaW1wbGVBZGFwdGVyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlNpbXBsZUFkYXB0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iamF2YS51dGlsLkxpc3QmbHQ7PyBleHRlbmRzIGphdmEudXRpbC5NYXAmbHQ7amF2YS5sYW5nLlN0cmluZywgPyZndDsmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvdXJjZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmcm9tIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldENvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpbHRlciIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LkZpbHRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJdGVtIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJdGVtSWQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZpZXciCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udmVydFZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Vmlld0JpbmRlciIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LlNpbXBsZUFkYXB0ZXIuVmlld0JpbmRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREcm9wRG93blZpZXdSZXNvdXJjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc291cmNlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Vmlld0JpbmRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXdCaW5kZXIiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlNpbXBsZUFkYXB0ZXIuVmlld0JpbmRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRWaWV3SW1hZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJhbmRyb2lkLndpZGdldC5JbWFnZVZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Vmlld0ltYWdlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC53aWRnZXQuSW1hZ2VWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRWaWV3VGV4dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRleHRWaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJTaW1wbGVBZGFwdGVyLlZpZXdCaW5kZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InNldFZpZXdWYWx1ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHRSZXByZXNlbnRhdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iU2ltcGxlQ3Vyc29yQWRhcHRlciIKKyBleHRlbmRzPSJhbmRyb2lkLndpZGdldC5SZXNvdXJjZUN1cnNvckFkYXB0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTaW1wbGVDdXJzb3JBZGFwdGVyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlNpbXBsZUN1cnNvckFkYXB0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGF5b3V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmcm9tIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImJpbmRWaWV3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9ImFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoYW5nZUN1cnNvckFuZENvbHVtbnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZnJvbSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0byIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3Vyc29yVG9TdHJpbmdDb252ZXJ0ZXIiCisgcmV0dXJuPSJhbmRyb2lkLndpZGdldC5TaW1wbGVDdXJzb3JBZGFwdGVyLkN1cnNvclRvU3RyaW5nQ29udmVydGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0cmluZ0NvbnZlcnNpb25Db2x1bW4iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Vmlld0JpbmRlciIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LlNpbXBsZUN1cnNvckFkYXB0ZXIuVmlld0JpbmRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDdXJzb3JUb1N0cmluZ0NvbnZlcnRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvclRvU3RyaW5nQ29udmVydGVyIiB0eXBlPSJhbmRyb2lkLndpZGdldC5TaW1wbGVDdXJzb3JBZGFwdGVyLkN1cnNvclRvU3RyaW5nQ29udmVydGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN0cmluZ0NvbnZlcnNpb25Db2x1bW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmdDb252ZXJzaW9uQ29sdW1uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Vmlld0JpbmRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXdCaW5kZXIiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlNpbXBsZUN1cnNvckFkYXB0ZXIuVmlld0JpbmRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRWaWV3SW1hZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJhbmRyb2lkLndpZGdldC5JbWFnZVZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZpZXdUZXh0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGV4dFZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlNpbXBsZUN1cnNvckFkYXB0ZXIuQ3Vyc29yVG9TdHJpbmdDb252ZXJ0ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNvbnZlcnRUb1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlNpbXBsZUN1cnNvckFkYXB0ZXIuVmlld0JpbmRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ic2V0Vmlld1ZhbHVlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iU2ltcGxlQ3Vyc29yVHJlZUFkYXB0ZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC53aWRnZXQuUmVzb3VyY2VDdXJzb3JUcmVlQWRhcHRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2ltcGxlQ3Vyc29yVHJlZUFkYXB0ZXIiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuU2ltcGxlQ3Vyc29yVHJlZUFkYXB0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sbGFwc2VkR3JvdXBMYXlvdXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwYW5kZWRHcm91cExheW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJncm91cEZyb20iIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBUbyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkTGF5b3V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxhc3RDaGlsZExheW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZEZyb20iIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hpbGRUbyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNpbXBsZUN1cnNvclRyZWVBZGFwdGVyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlNpbXBsZUN1cnNvclRyZWVBZGFwdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbGxhcHNlZEdyb3VwTGF5b3V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGFuZGVkR3JvdXBMYXlvdXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBGcm9tIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwVG8iIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZExheW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZEZyb20iIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hpbGRUbyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNpbXBsZUN1cnNvclRyZWVBZGFwdGVyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlNpbXBsZUN1cnNvclRyZWVBZGFwdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwTGF5b3V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwRnJvbSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJncm91cFRvIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hpbGRMYXlvdXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hpbGRGcm9tIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkVG8iIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYmluZENoaWxkVmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNMYXN0Q2hpbGQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYmluZEdyb3VwVmlldyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJhbmRyb2lkLmRhdGFiYXNlLkN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNFeHBhbmRlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWaWV3QmluZGVyIgorIHJldHVybj0iYW5kcm9pZC53aWRnZXQuU2ltcGxlQ3Vyc29yVHJlZUFkYXB0ZXIuVmlld0JpbmRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRWaWV3QmluZGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlld0JpbmRlciIgdHlwZT0iYW5kcm9pZC53aWRnZXQuU2ltcGxlQ3Vyc29yVHJlZUFkYXB0ZXIuVmlld0JpbmRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRWaWV3SW1hZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJhbmRyb2lkLndpZGdldC5JbWFnZVZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZpZXdUZXh0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGV4dFZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlNpbXBsZUN1cnNvclRyZWVBZGFwdGVyLlZpZXdCaW5kZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InNldFZpZXdWYWx1ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0iYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlNpbXBsZUV4cGFuZGFibGVMaXN0QWRhcHRlciIKKyBleHRlbmRzPSJhbmRyb2lkLndpZGdldC5CYXNlRXhwYW5kYWJsZUxpc3RBZGFwdGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2ltcGxlRXhwYW5kYWJsZUxpc3RBZGFwdGVyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlNpbXBsZUV4cGFuZGFibGVMaXN0QWRhcHRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJncm91cERhdGEiIHR5cGU9ImphdmEudXRpbC5MaXN0Jmx0Oz8gZXh0ZW5kcyBqYXZhLnV0aWwuTWFwJmx0O2phdmEubGFuZy5TdHJpbmcsID8mZ3Q7Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBMYXlvdXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBGcm9tIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwVG8iIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZERhdGEiIHR5cGU9ImphdmEudXRpbC5MaXN0Jmx0Oz8gZXh0ZW5kcyBqYXZhLnV0aWwuTGlzdCZsdDs/IGV4dGVuZHMgamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCA/Jmd0OyZndDsmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZExheW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZEZyb20iIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hpbGRUbyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNpbXBsZUV4cGFuZGFibGVMaXN0QWRhcHRlciIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5TaW1wbGVFeHBhbmRhYmxlTGlzdEFkYXB0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBEYXRhIiB0eXBlPSJqYXZhLnV0aWwuTGlzdCZsdDs/IGV4dGVuZHMgamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCA/Jmd0OyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGFuZGVkR3JvdXBMYXlvdXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sbGFwc2VkR3JvdXBMYXlvdXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBGcm9tIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwVG8iIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZERhdGEiIHR5cGU9ImphdmEudXRpbC5MaXN0Jmx0Oz8gZXh0ZW5kcyBqYXZhLnV0aWwuTGlzdCZsdDs/IGV4dGVuZHMgamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCA/Jmd0OyZndDsmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZExheW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZEZyb20iIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hpbGRUbyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNpbXBsZUV4cGFuZGFibGVMaXN0QWRhcHRlciIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5TaW1wbGVFeHBhbmRhYmxlTGlzdEFkYXB0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBEYXRhIiB0eXBlPSJqYXZhLnV0aWwuTGlzdCZsdDs/IGV4dGVuZHMgamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCA/Jmd0OyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGFuZGVkR3JvdXBMYXlvdXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sbGFwc2VkR3JvdXBMYXlvdXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBGcm9tIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwVG8iIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZERhdGEiIHR5cGU9ImphdmEudXRpbC5MaXN0Jmx0Oz8gZXh0ZW5kcyBqYXZhLnV0aWwuTGlzdCZsdDs/IGV4dGVuZHMgamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCA/Jmd0OyZndDsmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZExheW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYXN0Q2hpbGRMYXlvdXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hpbGRGcm9tIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkVG8iIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hpbGQiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cFBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoaWxkUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDaGlsZElkIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZFBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hpbGRWaWV3IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hpbGRQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpc0xhc3RDaGlsZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udmVydFZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hpbGRyZW5Db3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdyb3VwIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdyb3VwQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R3JvdXBJZCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwUG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRHcm91cFZpZXciCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpc0V4cGFuZGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb252ZXJ0VmlldyIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNTdGFibGVJZHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ2hpbGRTZWxlY3RhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGlsZFBvc2l0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3Q2hpbGRWaWV3IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlzTGFzdENoaWxkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3R3JvdXBWaWV3IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlzRXhwYW5kZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTbGlkaW5nRHJhd2VyIgorIGV4dGVuZHM9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTbGlkaW5nRHJhd2VyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlNsaWRpbmdEcmF3ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNsaWRpbmdEcmF3ZXIiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuU2xpZGluZ0RyYXdlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmU3R5bGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFuaW1hdGVDbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYW5pbWF0ZU9wZW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFuaW1hdGVUb2dnbGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb3NlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZW50IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SGFuZGxlIgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNNb3ZpbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzT3BlbmVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2NrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkxheW91dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYW5nZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPbkRyYXdlckNsb3NlTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvbkRyYXdlckNsb3NlTGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlNsaWRpbmdEcmF3ZXIuT25EcmF3ZXJDbG9zZUxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9uRHJhd2VyT3Blbkxpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib25EcmF3ZXJPcGVuTGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlNsaWRpbmdEcmF3ZXIuT25EcmF3ZXJPcGVuTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25EcmF3ZXJTY3JvbGxMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9uRHJhd2VyU2Nyb2xsTGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlNsaWRpbmdEcmF3ZXIuT25EcmF3ZXJTY3JvbGxMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b2dnbGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVubG9jayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJPUklFTlRBVElPTl9IT1JJWk9OVEFMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUklFTlRBVElPTl9WRVJUSUNBTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJTbGlkaW5nRHJhd2VyLk9uRHJhd2VyQ2xvc2VMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25EcmF3ZXJDbG9zZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJTbGlkaW5nRHJhd2VyLk9uRHJhd2VyT3Blbkxpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvbkRyYXdlck9wZW5lZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlNsaWRpbmdEcmF3ZXIuT25EcmF3ZXJTY3JvbGxMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25TY3JvbGxFbmRlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblNjcm9sbFN0YXJ0ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlNwaW5uZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC53aWRnZXQuQWJzU3Bpbm5lciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC5jb250ZW50LkRpYWxvZ0ludGVyZmFjZS5PbkNsaWNrTGlzdGVuZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNwaW5uZXIiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuU3Bpbm5lciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTcGlubmVyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlNwaW5uZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNwaW5uZXIiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuU3Bpbm5lciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmU3R5bGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldFByb21wdCIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25DbGljayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpYWxvZyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkRpYWxvZ0ludGVyZmFjZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2hpY2giIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQcm9tcHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9tcHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UHJvbXB0SWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9tcHRJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJTcGlubmVyQWRhcHRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLndpZGdldC5BZGFwdGVyIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0RHJvcERvd25WaWV3IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udmVydFZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnQiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlRhYkhvc3QiCisgZXh0ZW5kcz0iYW5kcm9pZC53aWRnZXQuRnJhbWVMYXlvdXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudmlldy5WaWV3VHJlZU9ic2VydmVyLk9uVG91Y2hNb2RlQ2hhbmdlTGlzdGVuZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRhYkhvc3QiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGFiSG9zdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUYWJIb3N0IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRhYkhvc3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRUYWIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWJTcGVjIiB0eXBlPSJhbmRyb2lkLndpZGdldC5UYWJIb3N0LlRhYlNwZWMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJBbGxUYWJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDdXJyZW50VGFiIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEN1cnJlbnRUYWJUYWciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEN1cnJlbnRUYWJWaWV3IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3VycmVudFZpZXciCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUYWJDb250ZW50VmlldyIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LkZyYW1lTGF5b3V0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRhYldpZGdldCIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LlRhYldpZGdldCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdUYWJTcGVjIgorIHJldHVybj0iYW5kcm9pZC53aWRnZXQuVGFiSG9zdC5UYWJTcGVjIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Ub3VjaE1vZGVDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNJblRvdWNoTW9kZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDdXJyZW50VGFiIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDdXJyZW50VGFiQnlUYWciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25UYWJDaGFuZ2VkTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsIiB0eXBlPSJhbmRyb2lkLndpZGdldC5UYWJIb3N0Lk9uVGFiQ2hhbmdlTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0dXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldHVwIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aXZpdHlHcm91cCIgdHlwZT0iYW5kcm9pZC5hcHAuTG9jYWxBY3Rpdml0eU1hbmFnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlRhYkhvc3QuT25UYWJDaGFuZ2VMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ib25UYWJDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWJJZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlRhYkhvc3QuVGFiQ29udGVudEZhY3RvcnkiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVRhYkNvbnRlbnQiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YWciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlRhYkhvc3QuVGFiU3BlYyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldFRhZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29udGVudCIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LlRhYkhvc3QuVGFiU3BlYyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmlld0lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29udGVudCIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LlRhYkhvc3QuVGFiU3BlYyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGVudEZhY3RvcnkiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRhYkhvc3QuVGFiQ29udGVudEZhY3RvcnkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29udGVudCIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LlRhYkhvc3QuVGFiU3BlYyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEluZGljYXRvciIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LlRhYkhvc3QuVGFiU3BlYyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGFiZWwiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW5kaWNhdG9yIgorIHJldHVybj0iYW5kcm9pZC53aWRnZXQuVGFiSG9zdC5UYWJTcGVjIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsYWJlbCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaWNvbiIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJbmRpY2F0b3IiCisgcmV0dXJuPSJhbmRyb2lkLndpZGdldC5UYWJIb3N0LlRhYlNwZWMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlRhYldpZGdldCIKKyBleHRlbmRzPSJhbmRyb2lkLndpZGdldC5MaW5lYXJMYXlvdXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQudmlldy5WaWV3Lk9uRm9jdXNDaGFuZ2VMaXN0ZW5lciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGFiV2lkZ2V0IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRhYldpZGdldCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUYWJXaWRnZXQiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGFiV2lkZ2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUYWJXaWRnZXQiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGFiV2lkZ2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZTdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZGlzcGF0Y2hEcmF3IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FudmFzIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLkNhbnZhcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb2N1c0N1cnJlbnRUYWIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoaWxkVGFiVmlld0F0IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGFiQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTdHJpcEVuYWJsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uRm9jdXNDaGFuZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFzRm9jdXMiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q3VycmVudFRhYiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGl2aWRlckRyYXdhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHJhd2FibGUiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGl2aWRlckRyYXdhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMZWZ0U3RyaXBEcmF3YWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRyYXdhYmxlIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldExlZnRTdHJpcERyYXdhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSaWdodFN0cmlwRHJhd2FibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkcmF3YWJsZSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSaWdodFN0cmlwRHJhd2FibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN0cmlwRW5hYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmlwRW5hYmxlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUYWJsZUxheW91dCIKKyBleHRlbmRzPSJhbmRyb2lkLndpZGdldC5MaW5lYXJMYXlvdXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUYWJsZUxheW91dCIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5UYWJsZUxheW91dCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUYWJsZUxheW91dCIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5UYWJsZUxheW91dCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImlzQ29sdW1uQ29sbGFwc2VkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0NvbHVtblNocmlua2FibGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ29sdW1uU3RyZXRjaGFibGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU2hyaW5rQWxsQ29sdW1ucyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTdHJldGNoQWxsQ29sdW1ucyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29sdW1uQ29sbGFwc2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNDb2xsYXBzZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29sdW1uU2hyaW5rYWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlzU2hyaW5rYWJsZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb2x1bW5TdHJldGNoYWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlzU3RyZXRjaGFibGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2hyaW5rQWxsQ29sdW1ucyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNocmlua0FsbENvbHVtbnMiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RyZXRjaEFsbENvbHVtbnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJldGNoQWxsQ29sdW1ucyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUYWJsZUxheW91dC5MYXlvdXRQYXJhbXMiCisgZXh0ZW5kcz0iYW5kcm9pZC53aWRnZXQuTGluZWFyTGF5b3V0LkxheW91dFBhcmFtcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGFibGVMYXlvdXQuTGF5b3V0UGFyYW1zIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRhYmxlTGF5b3V0LkxheW91dFBhcmFtcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGFibGVMYXlvdXQuTGF5b3V0UGFyYW1zIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRhYmxlTGF5b3V0LkxheW91dFBhcmFtcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InciIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUYWJsZUxheW91dC5MYXlvdXRQYXJhbXMiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGFibGVMYXlvdXQuTGF5b3V0UGFyYW1zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluaXRXZWlnaHQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUYWJsZUxheW91dC5MYXlvdXRQYXJhbXMiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGFibGVMYXlvdXQuTGF5b3V0UGFyYW1zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGFibGVMYXlvdXQuTGF5b3V0UGFyYW1zIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRhYmxlTGF5b3V0LkxheW91dFBhcmFtcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InAiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3R3JvdXAuTGF5b3V0UGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUYWJsZUxheW91dC5MYXlvdXRQYXJhbXMiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGFibGVMYXlvdXQuTGF5b3V0UGFyYW1zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwLk1hcmdpbkxheW91dFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlRhYmxlUm93IgorIGV4dGVuZHM9ImFuZHJvaWQud2lkZ2V0LkxpbmVhckxheW91dCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRhYmxlUm93IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRhYmxlUm93IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRhYmxlUm93IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRhYmxlUm93IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0VmlydHVhbENoaWxkQXQiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZpcnR1YWxDaGlsZENvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlRhYmxlUm93LkxheW91dFBhcmFtcyIKKyBleHRlbmRzPSJhbmRyb2lkLndpZGdldC5MaW5lYXJMYXlvdXQuTGF5b3V0UGFyYW1zIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUYWJsZVJvdy5MYXlvdXRQYXJhbXMiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGFibGVSb3cuTGF5b3V0UGFyYW1zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUYWJsZVJvdy5MYXlvdXRQYXJhbXMiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGFibGVSb3cuTGF5b3V0UGFyYW1zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRhYmxlUm93LkxheW91dFBhcmFtcyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5UYWJsZVJvdy5MYXlvdXRQYXJhbXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5pdFdlaWdodCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRhYmxlUm93LkxheW91dFBhcmFtcyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5UYWJsZVJvdy5MYXlvdXRQYXJhbXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUYWJsZVJvdy5MYXlvdXRQYXJhbXMiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGFibGVSb3cuTGF5b3V0UGFyYW1zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRhYmxlUm93LkxheW91dFBhcmFtcyIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5UYWJsZVJvdy5MYXlvdXRQYXJhbXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwIiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwLkxheW91dFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGFibGVSb3cuTGF5b3V0UGFyYW1zIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRhYmxlUm93LkxheW91dFBhcmFtcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0iYW5kcm9pZC52aWV3LlZpZXdHcm91cC5NYXJnaW5MYXlvdXRQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9ImNvbHVtbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzcGFuIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUZXh0U3dpdGNoZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC53aWRnZXQuVmlld1N3aXRjaGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGV4dFN3aXRjaGVyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRleHRTd2l0Y2hlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUZXh0U3dpdGNoZXIiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGV4dFN3aXRjaGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ic2V0Q3VycmVudFRleHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRleHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlRleHRWaWV3IgorIGV4dGVuZHM9ImFuZHJvaWQudmlldy5WaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnZpZXcuVmlld1RyZWVPYnNlcnZlci5PblByZURyYXdMaXN0ZW5lciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGV4dFZpZXciCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGV4dFZpZXciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGV4dFZpZXciCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGV4dFZpZXciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRleHRWaWV3IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRleHRWaWV3IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZTdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkVGV4dENoYW5nZWRMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndhdGNoZXIiIHR5cGU9ImFuZHJvaWQudGV4dC5UZXh0V2F0Y2hlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXBwZW5kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYmVnaW5CYXRjaEVkaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImJyaW5nUG9pbnRJbnRvVmlldyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyQ29tcG9zaW5nVGV4dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVidWciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXB0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpZFRvdWNoRm9jdXNTZWxlY3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZEJhdGNoRWRpdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXh0cmFjdFRleHQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJhbmRyb2lkLnZpZXcuaW5wdXRtZXRob2QuRXh0cmFjdGVkVGV4dFJlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im91dFRleHQiIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5FeHRyYWN0ZWRUZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF1dG9MaW5rTWFzayIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbXBvdW5kRHJhd2FibGVQYWRkaW5nIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbXBvdW5kRHJhd2FibGVzIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbXBvdW5kUGFkZGluZ0JvdHRvbSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb21wb3VuZFBhZGRpbmdMZWZ0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbXBvdW5kUGFkZGluZ1JpZ2h0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbXBvdW5kUGFkZGluZ1RvcCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDdXJyZW50SGludFRleHRDb2xvciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEN1cnJlbnRUZXh0Q29sb3IiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWZhdWx0RWRpdGFibGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlZmF1bHRNb3ZlbWVudE1ldGhvZCIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5tZXRob2QuTW92ZW1lbnRNZXRob2QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RWRpdGFibGVUZXh0IgorIHJldHVybj0iYW5kcm9pZC50ZXh0LkVkaXRhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVsbGlwc2l6ZSIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5UZXh0VXRpbHMuVHJ1bmNhdGVBdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFcnJvciIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RXh0ZW5kZWRQYWRkaW5nQm90dG9tIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEV4dGVuZGVkUGFkZGluZ1RvcCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGaWx0ZXJzIgorIHJldHVybj0iYW5kcm9pZC50ZXh0LklucHV0RmlsdGVyW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RnJlZXplc1RleHQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdyYXZpdHkiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SGludCIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SGludFRleHRDb2xvcnMiCisgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQucmVzLkNvbG9yU3RhdGVMaXN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW1lQWN0aW9uSWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW1lQWN0aW9uTGFiZWwiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEltZU9wdGlvbnMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5wdXRFeHRyYXMiCisgcmV0dXJuPSJhbmRyb2lkLm9zLkJ1bmRsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3JlYXRlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElucHV0VHlwZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRLZXlMaXN0ZW5lciIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5tZXRob2QuS2V5TGlzdGVuZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMYXlvdXQiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuTGF5b3V0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGluZUJvdW5kcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3VuZHMiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuUmVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaW5lQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGluZUhlaWdodCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaW5rVGV4dENvbG9ycyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5yZXMuQ29sb3JTdGF0ZUxpc3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaW5rc0NsaWNrYWJsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNb3ZlbWVudE1ldGhvZCIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5tZXRob2QuTW92ZW1lbnRNZXRob2QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYWludCIKKyByZXR1cm49ImFuZHJvaWQudGV4dC5UZXh0UGFpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFpbnRGbGFncyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcml2YXRlSW1lT3B0aW9ucyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2VsZWN0aW9uRW5kIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlbGVjdGlvblN0YXJ0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRleHQiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRleHRDb2xvciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuVHlwZWRBcnJheSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGV4dENvbG9ycyIKKyByZXR1cm49ImFuZHJvaWQuY29udGVudC5yZXMuQ29sb3JTdGF0ZUxpc3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUZXh0Q29sb3JzIgorIHJldHVybj0iYW5kcm9pZC5jb250ZW50LnJlcy5Db2xvclN0YXRlTGlzdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuVHlwZWRBcnJheSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUZXh0U2NhbGVYIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGV4dFNpemUiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUb3RhbFBhZGRpbmdCb3R0b20iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VG90YWxQYWRkaW5nTGVmdCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUb3RhbFBhZGRpbmdSaWdodCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUb3RhbFBhZGRpbmdUb3AiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHJhbnNmb3JtYXRpb25NZXRob2QiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQubWV0aG9kLlRyYW5zZm9ybWF0aW9uTWV0aG9kIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHlwZWZhY2UiCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLlR5cGVmYWNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFVybHMiCisgcmV0dXJuPSJhbmRyb2lkLnRleHQuc3R5bGUuVVJMU3BhbltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc1NlbGVjdGlvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNJbnB1dE1ldGhvZFRhcmdldCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1vdmVDdXJzb3JUb1Zpc2libGVPZmZzZXQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQmVnaW5CYXRjaEVkaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uQ29tbWl0Q29tcGxldGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5Db21wbGV0aW9uSW5mbyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkVkaXRvckFjdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGlvbkNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkVuZEJhdGNoRWRpdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25QcmVEcmF3IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblByaXZhdGVJTUVDb21tYW5kIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblJlc3RvcmVJbnN0YW5jZVN0YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdGUiIHR5cGU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblNhdmVJbnN0YW5jZVN0YXRlIgorIHJldHVybj0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU2VsZWN0aW9uQ2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlbFN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlbEVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uVGV4dENoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiZWZvcmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWZ0ZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblRleHRDb250ZXh0TWVudUl0ZW0iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZVRleHRDaGFuZ2VkTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3YXRjaGVyIiB0eXBlPSJhbmRyb2lkLnRleHQuVGV4dFdhdGNoZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QXV0b0xpbmtNYXNrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXNrIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29tcG91bmREcmF3YWJsZVBhZGRpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb21wb3VuZERyYXdhYmxlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvcCIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmlnaHQiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb21wb3VuZERyYXdhYmxlc1dpdGhJbnRyaW5zaWNCb3VuZHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZWZ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvcCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3R0b20iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb21wb3VuZERyYXdhYmxlc1dpdGhJbnRyaW5zaWNCb3VuZHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZWZ0IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b3AiIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJpZ2h0IiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3R0b20iIHR5cGU9ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q3Vyc29yVmlzaWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZpc2libGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RWRpdGFibGVGYWN0b3J5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWN0b3J5IiB0eXBlPSJhbmRyb2lkLnRleHQuRWRpdGFibGUuRmFjdG9yeSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFbGxpcHNpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aGVyZSIgdHlwZT0iYW5kcm9pZC50ZXh0LlRleHRVdGlscy5UcnVuY2F0ZUF0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVtcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVtcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVycm9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXJyb3IiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RXJyb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlcnJvciIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaWNvbiIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFeHRyYWN0ZWRUZXh0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLkV4dHJhY3RlZFRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RmlsdGVycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbHRlcnMiIHR5cGU9ImFuZHJvaWQudGV4dC5JbnB1dEZpbHRlcltdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZyYW1lIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZyZWV6ZXNUZXh0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZnJlZXplc1RleHQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0R3Jhdml0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImdyYXZpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRIZWlnaHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwaXhlbHMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRIaWdobGlnaHRDb2xvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbG9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SGludCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGludCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRIaW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEhpbnRUZXh0Q29sb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbG9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SGludFRleHRDb2xvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sb3JzIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucmVzLkNvbG9yU3RhdGVMaXN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEhvcml6b250YWxseVNjcm9sbGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndoZXRoZXIiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW1lQWN0aW9uTGFiZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsYWJlbCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aW9uSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJbWVPcHRpb25zIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW1lT3B0aW9ucyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEluY2x1ZGVGb250UGFkZGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluY2x1ZGVwYWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW5wdXRFeHRyYXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4bWxSZXNJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJbnB1dFR5cGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0S2V5TGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnB1dCIgdHlwZT0iYW5kcm9pZC50ZXh0Lm1ldGhvZC5LZXlMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMaW5lU3BhY2luZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFkZCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im11bHQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldExpbmVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMaW5rVGV4dENvbG9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldExpbmtUZXh0Q29sb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbG9ycyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5Db2xvclN0YXRlTGlzdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMaW5rc0NsaWNrYWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hldGhlciIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNYXJxdWVlUmVwZWF0TGltaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXJxdWVlTGltaXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNYXhFbXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXhlbXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNYXhIZWlnaHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXhIZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNYXhMaW5lcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1heGxpbmVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWF4V2lkdGgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXhwaXhlbHMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNaW5FbXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtaW5lbXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNaW5IZWlnaHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtaW5IZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNaW5MaW5lcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbmxpbmVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWluV2lkdGgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtaW5waXhlbHMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNb3ZlbWVudE1ldGhvZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibW92ZW1lbnQiIHR5cGU9ImFuZHJvaWQudGV4dC5tZXRob2QuTW92ZW1lbnRNZXRob2QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25FZGl0b3JBY3Rpb25MaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImwiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRleHRWaWV3Lk9uRWRpdG9yQWN0aW9uTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGFpbnRGbGFncyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UHJpdmF0ZUltZU9wdGlvbnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJhd0lucHV0VHlwZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTY3JvbGxlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlNjcm9sbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNlbGVjdEFsbE9uRm9jdXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3RBbGxPbkZvY3VzIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNoYWRvd0xheWVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmFkaXVzIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkeSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbG9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2luZ2xlTGluZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2luZ2xlTGluZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpbmdsZUxpbmUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3Bhbm5hYmxlRmFjdG9yeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFjdG9yeSIgdHlwZT0iYW5kcm9pZC50ZXh0LlNwYW5uYWJsZS5GYWN0b3J5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRleHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGV4dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRleHRWaWV3LkJ1ZmZlclR5cGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGV4dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUZXh0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRleHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc2lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRleHRWaWV3LkJ1ZmZlclR5cGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGV4dEFwcGVhcmFuY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUZXh0Q29sb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRleHRDb2xvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbG9ycyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnJlcy5Db2xvclN0YXRlTGlzdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUZXh0S2VlcFN0YXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRleHRLZWVwU3RhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRleHRWaWV3LkJ1ZmZlclR5cGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGV4dFNjYWxlWCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRleHRTaXplIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGV4dFNpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRyYW5zZm9ybWF0aW9uTWV0aG9kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXRob2QiIHR5cGU9ImFuZHJvaWQudGV4dC5tZXRob2QuVHJhbnNmb3JtYXRpb25NZXRob2QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VHlwZWZhY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZiIgdHlwZT0iYW5kcm9pZC5ncmFwaGljcy5UeXBlZmFjZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3R5bGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUeXBlZmFjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRmIiB0eXBlPSJhbmRyb2lkLmdyYXBoaWNzLlR5cGVmYWNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFdpZHRoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGl4ZWxzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVGV4dFZpZXcuQnVmZmVyVHlwZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRW51bSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LlRleHRWaWV3LkJ1ZmZlclR5cGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZXMiCisgcmV0dXJuPSJhbmRyb2lkLndpZGdldC5UZXh0Vmlldy5CdWZmZXJUeXBlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJUZXh0Vmlldy5PbkVkaXRvckFjdGlvbkxpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvbkVkaXRvckFjdGlvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGV4dFZpZXciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGlvbklkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuS2V5RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlRleHRWaWV3LlNhdmVkU3RhdGUiCisgZXh0ZW5kcz0iYW5kcm9pZC52aWV3LlZpZXcuQmFzZVNhdmVkU3RhdGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlRpbWVQaWNrZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC53aWRnZXQuRnJhbWVMYXlvdXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUaW1lUGlja2VyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRpbWVQaWNrZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGltZVBpY2tlciIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5UaW1lUGlja2VyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUaW1lUGlja2VyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlRpbWVQaWNrZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDdXJyZW50SG91ciIKKyByZXR1cm49ImphdmEubGFuZy5JbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEN1cnJlbnRNaW51dGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpczI0SG91clZpZXciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEN1cnJlbnRIb3VyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3VycmVudEhvdXIiIHR5cGU9ImphdmEubGFuZy5JbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEN1cnJlbnRNaW51dGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJyZW50TWludXRlIiB0eXBlPSJqYXZhLmxhbmcuSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJczI0SG91clZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpczI0SG91clZpZXciIHR5cGU9ImphdmEubGFuZy5Cb29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9uVGltZUNoYW5nZWRMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9uVGltZUNoYW5nZWRMaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC53aWRnZXQuVGltZVBpY2tlci5PblRpbWVDaGFuZ2VkTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlRpbWVQaWNrZXIuT25UaW1lQ2hhbmdlZExpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvblRpbWVDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLndpZGdldC5UaW1lUGlja2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJob3VyT2ZEYXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWludXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlRvYXN0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUb2FzdCIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5Ub2FzdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2FuY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREdXJhdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRHcmF2aXR5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhvcml6b250YWxNYXJnaW4iCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWZXJ0aWNhbE1hcmdpbiIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZpZXciCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRYT2Zmc2V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFlPZmZzZXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWFrZVRleHQiCisgcmV0dXJuPSJhbmRyb2lkLndpZGdldC5Ub2FzdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHVyYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYWtlVGV4dCIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LlRvYXN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkdXJhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJSZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzLk5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldER1cmF0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHVyYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRHcmF2aXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3Jhdml0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4T2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InlPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNYXJnaW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3Jpem9udGFsTWFyZ2luIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmVydGljYWxNYXJnaW4iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRleHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNJZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRleHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aWV3IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlldyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaG93IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkxFTkdUSF9MT05HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMRU5HVEhfU0hPUlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUb2dnbGVCdXR0b24iCisgZXh0ZW5kcz0iYW5kcm9pZC53aWRnZXQuQ29tcG91bmRCdXR0b24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUb2dnbGVCdXR0b24iCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuVG9nZ2xlQnV0dG9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZTdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUb2dnbGVCdXR0b24iCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuVG9nZ2xlQnV0dG9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUb2dnbGVCdXR0b24iCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuVG9nZ2xlQnV0dG9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRUZXh0T2ZmIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUZXh0T24iCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRleHRPZmYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0T2ZmIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRleHRPbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHRPbiIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUd29MaW5lTGlzdEl0ZW0iCisgZXh0ZW5kcz0iYW5kcm9pZC53aWRnZXQuUmVsYXRpdmVMYXlvdXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUd29MaW5lTGlzdEl0ZW0iCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuVHdvTGluZUxpc3RJdGVtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlR3b0xpbmVMaXN0SXRlbSIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5Ud29MaW5lTGlzdEl0ZW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlR3b0xpbmVMaXN0SXRlbSIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5Ud29MaW5lTGlzdEl0ZW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRUZXh0MSIKKyByZXR1cm49ImFuZHJvaWQud2lkZ2V0LlRleHRWaWV3IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRleHQyIgorIHJldHVybj0iYW5kcm9pZC53aWRnZXQuVGV4dFZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVmlkZW9WaWV3IgorIGV4dGVuZHM9ImFuZHJvaWQudmlldy5TdXJmYWNlVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC53aWRnZXQuTWVkaWFDb250cm9sbGVyLk1lZGlhUGxheWVyQ29udHJvbCI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iVmlkZW9WaWV3IgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlZpZGVvVmlldyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJWaWRlb1ZpZXciCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuVmlkZW9WaWV3IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJWaWRlb1ZpZXciCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuVmlkZW9WaWV3IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZTdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2FuUGF1c2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNhblNlZWtCYWNrd2FyZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2FuU2Vla0ZvcndhcmQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJ1ZmZlclBlcmNlbnRhZ2UiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3VycmVudFBvc2l0aW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldER1cmF0aW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUGxheWluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGF1c2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc29sdmVBZGp1c3RlZFNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc2lyZWRTaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1lYXN1cmVTcGVjIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzdW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZWVrVG8iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2VjIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWVkaWFDb250cm9sbGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udHJvbGxlciIgdHlwZT0iYW5kcm9pZC53aWRnZXQuTWVkaWFDb250cm9sbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9uQ29tcGxldGlvbkxpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibCIgdHlwZT0iYW5kcm9pZC5tZWRpYS5NZWRpYVBsYXllci5PbkNvbXBsZXRpb25MaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPbkVycm9yTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsIiB0eXBlPSJhbmRyb2lkLm1lZGlhLk1lZGlhUGxheWVyLk9uRXJyb3JMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPblByZXBhcmVkTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsIiB0eXBlPSJhbmRyb2lkLm1lZGlhLk1lZGlhUGxheWVyLk9uUHJlcGFyZWRMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRWaWRlb1BhdGgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZpZGVvVVJJIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJhbmRyb2lkLm5ldC5VcmkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0b3BQbGF5YmFjayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VzcGVuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVmlld0FuaW1hdG9yIgorIGV4dGVuZHM9ImFuZHJvaWQud2lkZ2V0LkZyYW1lTGF5b3V0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVmlld0FuaW1hdG9yIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlZpZXdBbmltYXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJWaWV3QW5pbWF0b3IiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuVmlld0FuaW1hdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q3VycmVudFZpZXciCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREaXNwbGF5ZWRDaGlsZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbkFuaW1hdGlvbiIKKyByZXR1cm49ImFuZHJvaWQudmlldy5hbmltYXRpb24uQW5pbWF0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE91dEFuaW1hdGlvbiIKKyByZXR1cm49ImFuZHJvaWQudmlldy5hbmltYXRpb24uQW5pbWF0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFuaW1hdGVGaXJzdFZpZXciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbmltYXRlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERpc3BsYXllZENoaWxkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hpY2hDaGlsZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEluQW5pbWF0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5BbmltYXRpb24iIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uQW5pbWF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEluQW5pbWF0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc291cmNlSUQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPdXRBbmltYXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXRBbmltYXRpb24iIHR5cGU9ImFuZHJvaWQudmlldy5hbmltYXRpb24uQW5pbWF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE91dEFuaW1hdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvdXJjZUlEIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2hvd05leHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNob3dQcmV2aW91cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVmlld0ZsaXBwZXIiCisgZXh0ZW5kcz0iYW5kcm9pZC53aWRnZXQuVmlld0FuaW1hdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVmlld0ZsaXBwZXIiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuVmlld0ZsaXBwZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVmlld0ZsaXBwZXIiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuVmlld0ZsaXBwZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJpc0F1dG9TdGFydCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNGbGlwcGluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QXV0b1N0YXJ0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0b1N0YXJ0IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZsaXBJbnRlcnZhbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbGxpc2Vjb25kcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0RmxpcHBpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0b3BGbGlwcGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVmlld1N3aXRjaGVyIgorIGV4dGVuZHM9ImFuZHJvaWQud2lkZ2V0LlZpZXdBbmltYXRvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlZpZXdTd2l0Y2hlciIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5WaWV3U3dpdGNoZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVmlld1N3aXRjaGVyIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0LlZpZXdTd2l0Y2hlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRycyIgdHlwZT0iYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldE5leHRWaWV3IgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZhY3RvcnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWN0b3J5IiB0eXBlPSJhbmRyb2lkLndpZGdldC5WaWV3U3dpdGNoZXIuVmlld0ZhY3RvcnkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlZpZXdTd2l0Y2hlci5WaWV3RmFjdG9yeSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ibWFrZVZpZXciCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iV3JhcHBlckxpc3RBZGFwdGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQud2lkZ2V0Lkxpc3RBZGFwdGVyIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0V3JhcHBlZEFkYXB0ZXIiCisgcmV0dXJuPSJhbmRyb2lkLndpZGdldC5MaXN0QWRhcHRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJab29tQnV0dG9uIgorIGV4dGVuZHM9ImFuZHJvaWQud2lkZ2V0LkltYWdlQnV0dG9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnZpZXcuVmlldy5PbkxvbmdDbGlja0xpc3RlbmVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJab29tQnV0dG9uIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0Llpvb21CdXR0b24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iWm9vbUJ1dHRvbiIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5ab29tQnV0dG9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJab29tQnV0dG9uIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0Llpvb21CdXR0b24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cnMiIHR5cGU9ImFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZlN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJvbkxvbmdDbGljayIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFpvb21TcGVlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNwZWVkIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ilpvb21CdXR0b25zQ29udHJvbGxlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJhbmRyb2lkLnZpZXcuVmlldy5PblRvdWNoTGlzdGVuZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ilpvb21CdXR0b25zQ29udHJvbGxlciIKKyB0eXBlPSJhbmRyb2lkLndpZGdldC5ab29tQnV0dG9uc0NvbnRyb2xsZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvd25lclZpZXciIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGFpbmVyIgorIHJldHVybj0iYW5kcm9pZC52aWV3LlZpZXdHcm91cCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRab29tQ29udHJvbHMiCisgcmV0dXJuPSJhbmRyb2lkLnZpZXcuVmlldyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0F1dG9EaXNtaXNzZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzVmlzaWJsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Ub3VjaCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEF1dG9EaXNtaXNzZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhdXRvRGlzbWlzcyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGb2N1c2FibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmb2N1c2FibGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25ab29tTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iYW5kcm9pZC53aWRnZXQuWm9vbUJ1dHRvbnNDb250cm9sbGVyLk9uWm9vbUxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZpc2libGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aXNpYmxlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFpvb21JbkVuYWJsZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmFibGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFpvb21PdXRFbmFibGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5hYmxlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRab29tU3BlZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcGVlZCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iWm9vbUJ1dHRvbnNDb250cm9sbGVyLk9uWm9vbUxpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvblZpc2liaWxpdHlDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2aXNpYmxlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uWm9vbSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iem9vbUluIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJab29tQ29udHJvbHMiCisgZXh0ZW5kcz0iYW5kcm9pZC53aWRnZXQuTGluZWFyTGF5b3V0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iWm9vbUNvbnRyb2xzIgorIHR5cGU9ImFuZHJvaWQud2lkZ2V0Llpvb21Db250cm9scyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJab29tQ29udHJvbHMiCisgdHlwZT0iYW5kcm9pZC53aWRnZXQuWm9vbUNvbnRyb2xzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJzIiB0eXBlPSJhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iaGlkZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SXNab29tSW5FbmFibGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNFbmFibGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldElzWm9vbU91dEVuYWJsZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpc0VuYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T25ab29tSW5DbGlja0xpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Lk9uQ2xpY2tMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPblpvb21PdXRDbGlja0xpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQudmlldy5WaWV3Lk9uQ2xpY2tMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRab29tU3BlZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcGVlZCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaG93IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImNvbS5hbmRyb2lkLmludGVybmFsLnV0aWwiCis+Cis8aW50ZXJmYWNlIG5hbWU9IlByZWRpY2F0ZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImFwcGx5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcmcwIiB0eXBlPSJUIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImRhbHZpay5hbm5vdGF0aW9uIgorPgorPGNsYXNzIG5hbWU9IlRlc3RUYXJnZXQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuYW5ub3RhdGlvbi5Bbm5vdGF0aW9uIj4KKzwvaW1wbGVtZW50cz4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVGVzdFRhcmdldENsYXNzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLmFubm90YXRpb24uQW5ub3RhdGlvbiI+Cis8L2ltcGxlbWVudHM+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iZGFsdmlrLmJ5dGVjb2RlIgorPgorPGludGVyZmFjZSBuYW1lPSJPcGNvZGVzIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxmaWVsZCBuYW1lPSJPUF9BRERfRE9VQkxFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0FERF9ET1VCTEVfMkFERFIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMDMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfQUREX0ZMT0FUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0FERF9GTE9BVF8yQUREUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE5OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9BRERfSU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTQ0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0FERF9JTlRfMkFERFIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfQUREX0lOVF9MSVQxNiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9BRERfSU5UX0xJVDgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfQUREX0xPTkciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfQUREX0xPTkdfMkFERFIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxODciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfQUdFVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0FHRVRfQk9PTEVBTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjcxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0FHRVRfQllURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjcyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0FHRVRfQ0hBUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjczIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0FHRVRfT0JKRUNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfQUdFVF9TSE9SVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0FHRVRfV0lERSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjY5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0FORF9JTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNDkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfQU5EX0lOVF8yQUREUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE4MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9BTkRfSU5UX0xJVDE2IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjEzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0FORF9JTlRfTElUOCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIyMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9BTkRfTE9ORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9BTkRfTE9OR18yQUREUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE5MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9BUFVUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfQVBVVF9CT09MRUFOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfQVBVVF9CWVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfQVBVVF9DSEFSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfQVBVVF9PQkpFQ1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9BUFVUX1NIT1JUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfQVBVVF9XSURFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfQVJSQVlfTEVOR1RIIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfQlJFQUtQT0lOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIzNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9DSEVDS19DQVNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfQ01QR19ET1VCTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9DTVBHX0ZMT0FUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfQ01QTF9ET1VCTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9DTVBMX0ZMT0FUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfQ01QX0xPTkciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9DT05TVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0NPTlNUXzE2IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfQ09OU1RfNCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0NPTlNUX0NMQVNTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfQ09OU1RfSElHSDE2IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfQ09OU1RfU1RSSU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfQ09OU1RfU1RSSU5HX0pVTUJPIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfQ09OU1RfV0lERSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0NPTlNUX1dJREVfMTYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9DT05TVF9XSURFXzMyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfQ09OU1RfV0lERV9ISUdIMTYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9ESVZfRE9VQkxFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTc0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0RJVl9ET1VCTEVfMkFERFIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMDYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfRElWX0ZMT0FUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0RJVl9GTE9BVF8yQUREUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9ESVZfSU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTQ3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0RJVl9JTlRfMkFERFIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfRElWX0lOVF9MSVQxNiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9ESVZfSU5UX0xJVDgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfRElWX0xPTkciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfRElWX0xPTkdfMkFERFIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxOTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfRE9VQkxFX1RPX0ZMT0FUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTQwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0RPVUJMRV9UT19JTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfRE9VQkxFX1RPX0xPTkciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfRVhFQ1VURV9JTkxJTkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfRVhFQ1VURV9JTkxJTkVfUkFOR0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfRklMTEVEX05FV19BUlJBWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0ZJTExFRF9ORVdfQVJSQVlfUkFOR0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9GSUxMX0FSUkFZX0RBVEEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9GTE9BVF9UT19ET1VCTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMzciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfRkxPQVRfVE9fSU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTM1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0ZMT0FUX1RPX0xPTkciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfR09UTyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0dPVE9fMTYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9HT1RPXzMyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfSUZfRVEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9JRl9FUVoiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9JRl9HRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0lGX0dFWiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjU5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0lGX0dUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfSUZfR1RaIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfSUZfTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9JRl9MRVoiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9JRl9MVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0lGX0xUWiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjU4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0lGX05FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfSUZfTkVaIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfSUdFVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0lHRVRfQk9PTEVBTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijg1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0lHRVRfQllURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijg2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0lHRVRfQ0hBUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijg3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0lHRVRfT0JKRUNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfSUdFVF9PQkpFQ1RfUVVJQ0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfSUdFVF9RVUlDSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI0MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9JR0VUX1NIT1JUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfSUdFVF9XSURFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfSUdFVF9XSURFX1FVSUNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjQzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0lOU1RBTkNFX09GIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfSU5UX1RPX0JZVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfSU5UX1RPX0NIQVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNDIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfSU5UX1RPX0RPVUJMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEzMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9JTlRfVE9fRkxPQVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfSU5UX1RPX0xPTkciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfSU5UX1RPX1NIT1JUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTQzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0lOVk9LRV9ESVJFQ1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfSU5WT0tFX0RJUkVDVF9FTVBUWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI0MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9JTlZPS0VfRElSRUNUX1JBTkdFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTE4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0lOVk9LRV9JTlRFUkZBQ0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfSU5WT0tFX0lOVEVSRkFDRV9SQU5HRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9JTlZPS0VfU1RBVElDIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTEzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0lOVk9LRV9TVEFUSUNfUkFOR0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfSU5WT0tFX1NVUEVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTExIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0lOVk9LRV9TVVBFUl9RVUlDSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI1MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9JTlZPS0VfU1VQRVJfUVVJQ0tfUkFOR0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfSU5WT0tFX1NVUEVSX1JBTkdFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTE3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0lOVk9LRV9WSVJUVUFMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTEwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0lOVk9LRV9WSVJUVUFMX1FVSUNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0lOVk9LRV9WSVJUVUFMX1FVSUNLX1JBTkdFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjQ5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0lOVk9LRV9WSVJUVUFMX1JBTkdFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0lQVVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9JUFVUX0JPT0xFQU4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI5MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9JUFVUX0JZVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI5MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9JUFVUX0NIQVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI5NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9JUFVUX09CSkVDVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjkxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0lQVVRfT0JKRUNUX1FVSUNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjQ3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0lQVVRfUVVJQ0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfSVBVVF9TSE9SVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijk1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0lQVVRfV0lERSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjkwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0lQVVRfV0lERV9RVUlDSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI0NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9MT05HX1RPX0RPVUJMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEzNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9MT05HX1RPX0ZMT0FUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTMzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0xPTkdfVE9fSU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTMyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX01PTklUT1JfRU5URVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9NT05JVE9SX0VYSVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9NT1ZFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9NT1ZFXzE2IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9NT1ZFX0VYQ0VQVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX01PVkVfRlJPTTE2IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9NT1ZFX09CSkVDVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfTU9WRV9PQkpFQ1RfMTYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX01PVkVfT0JKRUNUX0ZST00xNiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfTU9WRV9SRVNVTFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9NT1ZFX1JFU1VMVF9PQkpFQ1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9NT1ZFX1JFU1VMVF9XSURFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfTU9WRV9XSURFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9NT1ZFX1dJREVfMTYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX01PVkVfV0lERV9GUk9NMTYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX01VTF9ET1VCTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfTVVMX0RPVUJMRV8yQUREUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9NVUxfRkxPQVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfTVVMX0ZMT0FUXzJBRERSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX01VTF9JTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNDYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfTVVMX0lOVF8yQUREUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9NVUxfSU5UX0xJVDE2IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjEwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX01VTF9JTlRfTElUOCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIxOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9NVUxfTE9ORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE1NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9NVUxfTE9OR18yQUREUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE4OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9ORUdfRE9VQkxFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX05FR19GTE9BVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9ORUdfSU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX05FR19MT05HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX05FV19BUlJBWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX05FV19JTlNUQU5DRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX05PUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfTk9UX0lOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9OT1RfTE9ORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9PUl9JTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfT1JfSU5UXzJBRERSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTgyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX09SX0lOVF9MSVQxNiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIxNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9PUl9JTlRfTElUOCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIyMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9PUl9MT05HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX09SX0xPTkdfMkFERFIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxOTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfUEFDS0VEX1NXSVRDSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX1JFTV9ET1VCTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfUkVNX0RPVUJMRV8yQUREUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9SRU1fRkxPQVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfUkVNX0ZMT0FUXzJBRERSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjAyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX1JFTV9JTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfUkVNX0lOVF8yQUREUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE4MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9SRU1fSU5UX0xJVDE2IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX1JFTV9JTlRfTElUOCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIyMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9SRU1fTE9ORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE1OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9SRU1fTE9OR18yQUREUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE5MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9SRVRVUk4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9SRVRVUk5fT0JKRUNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfUkVUVVJOX1ZPSUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9SRVRVUk5fV0lERSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX1JTVUJfSU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjA5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX1JTVUJfSU5UX0xJVDgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfU0dFVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijk2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX1NHRVRfQk9PTEVBTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijk5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX1NHRVRfQllURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9TR0VUX0NIQVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfU0dFVF9PQkpFQ1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI5OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9TR0VUX1NIT1JUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX1NHRVRfV0lERSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijk3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX1NITF9JTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfU0hMX0lOVF8yQUREUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE4NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9TSExfSU5UX0xJVDgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfU0hMX0xPTkciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfU0hMX0xPTkdfMkFERFIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxOTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfU0hSX0lOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE1MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9TSFJfSU5UXzJBRERSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTg1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX1NIUl9JTlRfTElUOCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIyNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9TSFJfTE9ORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9TSFJfTE9OR18yQUREUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE5NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9TUEFSU0VfU1dJVENIIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfU1BVVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9TUFVUX0JPT0xFQU4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfU1BVVF9CWVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTA3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX1NQVVRfQ0hBUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9TUFVUX09CSkVDVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9TUFVUX1NIT1JUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTA5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX1NQVVRfV0lERSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9TVUJfRE9VQkxFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX1NVQl9ET1VCTEVfMkFERFIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfU1VCX0ZMT0FUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX1NVQl9GTE9BVF8yQUREUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE5OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9TVUJfSU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTQ1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX1NVQl9JTlRfMkFERFIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfU1VCX0xPTkciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfU1VCX0xPTkdfMkFERFIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxODgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfVEhST1ciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9USFJPV19WRVJJRklDQVRJT05fRVJST1IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMzciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfVVNIUl9JTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfVVNIUl9JTlRfMkFERFIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxODYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfVVNIUl9JTlRfTElUOCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIyNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9VU0hSX0xPTkciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfVVNIUl9MT05HXzJBRERSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTk3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX1hPUl9JTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BfWE9SX0lOVF8yQUREUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE4MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9YT1JfSU5UX0xJVDE2IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjE1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX1hPUl9JTlRfTElUOCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIyMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9YT1JfTE9ORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPUF9YT1JfTE9OR18yQUREUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE5NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iZGFsdmlrLnN5c3RlbSIKKz4KKzxjbGFzcyBuYW1lPSJBbGxvY2F0aW9uTGltaXRFcnJvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuVmlydHVhbE1hY2hpbmVFcnJvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWxsb2NhdGlvbkxpbWl0RXJyb3IiCisgdHlwZT0iZGFsdmlrLnN5c3RlbS5BbGxvY2F0aW9uTGltaXRFcnJvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFsbG9jYXRpb25MaW1pdEVycm9yIgorIHR5cGU9ImRhbHZpay5zeXN0ZW0uQWxsb2NhdGlvbkxpbWl0RXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRGV4Q2xhc3NMb2FkZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkNsYXNzTG9hZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGV4Q2xhc3NMb2FkZXIiCisgdHlwZT0iZGFsdmlrLnN5c3RlbS5EZXhDbGFzc0xvYWRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRleFBhdGgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRleE91dHB1dERpciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGliUGF0aCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyZW50IiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NMb2FkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEZXhGaWxlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRleEZpbGUiCisgdHlwZT0iZGFsdmlrLnN5c3RlbS5EZXhGaWxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsZSIgdHlwZT0iamF2YS5pby5GaWxlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGV4RmlsZSIKKyB0eXBlPSJkYWx2aWsuc3lzdGVtLkRleEZpbGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVudHJpZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuRW51bWVyYXRpb24mbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNEZXhPcHROZWVkZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvYWRDbGFzcyIKKyByZXR1cm49ImphdmEubGFuZy5DbGFzcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9hZGVyIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NMb2FkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZERleCIKKyByZXR1cm49ImRhbHZpay5zeXN0ZW0uRGV4RmlsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2VQYXRoTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0cHV0UGF0aE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBhdGhDbGFzc0xvYWRlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuQ2xhc3NMb2FkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQYXRoQ2xhc3NMb2FkZXIiCisgdHlwZT0iZGFsdmlrLnN5c3RlbS5QYXRoQ2xhc3NMb2FkZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnQiIHR5cGU9ImphdmEubGFuZy5DbGFzc0xvYWRlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGF0aENsYXNzTG9hZGVyIgorIHR5cGU9ImRhbHZpay5zeXN0ZW0uUGF0aENsYXNzTG9hZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGliUGF0aCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyZW50IiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NMb2FkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQb3RlbnRpYWxEZWFkbG9ja0Vycm9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5WaXJ0dWFsTWFjaGluZUVycm9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQb3RlbnRpYWxEZWFkbG9ja0Vycm9yIgorIHR5cGU9ImRhbHZpay5zeXN0ZW0uUG90ZW50aWFsRGVhZGxvY2tFcnJvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBvdGVudGlhbERlYWRsb2NrRXJyb3IiCisgdHlwZT0iZGFsdmlrLnN5c3RlbS5Qb3RlbnRpYWxEZWFkbG9ja0Vycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlN0YWxlRGV4Q2FjaGVFcnJvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuVmlydHVhbE1hY2hpbmVFcnJvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RhbGVEZXhDYWNoZUVycm9yIgorIHR5cGU9ImRhbHZpay5zeXN0ZW0uU3RhbGVEZXhDYWNoZUVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RhbGVEZXhDYWNoZUVycm9yIgorIHR5cGU9ImRhbHZpay5zeXN0ZW0uU3RhbGVEZXhDYWNoZUVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlRlbXBvcmFyeURpcmVjdG9yeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUZW1wb3JhcnlEaXJlY3RvcnkiCisgdHlwZT0iZGFsdmlrLnN5c3RlbS5UZW1wb3JhcnlEaXJlY3RvcnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ic2V0VXBEaXJlY3RvcnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJhc2VEaXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VXBEaXJlY3RvcnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYmFzZURpciIgdHlwZT0iamF2YS5pby5GaWxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlRvdWNoRGV4IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRvdWNoRGV4IgorIHR5cGU9ImRhbHZpay5zeXN0ZW0uVG91Y2hEZXgiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ibWFpbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJncyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRleEZpbGVzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlZNRGVidWciCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZHVtcEhwcm9mRGF0YSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWxsb2NDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtpbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0cnVjdGlvbkNvdW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50cyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9hZGVkQ2xhc3NDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNEZWJ1Z2dlckNvbm5lY3RlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRGVidWdnaW5nRW5hYmxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxhc3REZWJ1Z2dlckFjdGl2aXR5IgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJpbnRMb2FkZWRDbGFzc2VzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXRBbGxvY0NvdW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtpbmRzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXRJbnN0cnVjdGlvbkNvdW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QWxsb2NhdGlvbkxpbWl0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGltaXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRHbG9iYWxBbGxvY2F0aW9uTGltaXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaW1pdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0QWxsb2NDb3VudGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0RW11bGF0b3JUcmFjaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRJbnN0cnVjdGlvbkNvdW50aW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRNZXRob2RUcmFjaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRNZXRob2RUcmFjaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0cmFjZUZpbGVOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXJTaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RvcEFsbG9jQ291bnRpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdG9wRW11bGF0b3JUcmFjaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RvcEluc3RydWN0aW9uQ291bnRpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdG9wTWV0aG9kVHJhY2luZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRocmVhZENwdVRpbWVOYW5vcyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iREVGQVVMVF9NRVRIT0RfVFJBQ0VfRklMRV9OQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90Oy9zZGNhcmQvZG10cmFjZS50cmFjZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktJTkRfQUxMX0NPVU5UUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktJTkRfR0xPQkFMX0FMTE9DQVRFRF9CWVRFUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0lORF9HTE9CQUxfQUxMT0NBVEVEX09CSkVDVFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktJTkRfR0xPQkFMX0NMQVNTX0lOSVRfQ09VTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLSU5EX0dMT0JBTF9DTEFTU19JTklUX1RJTUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLSU5EX0dMT0JBTF9FWFRfQUxMT0NBVEVEX0JZVEVTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODE5MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLSU5EX0dMT0JBTF9FWFRfQUxMT0NBVEVEX09CSkVDVFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MDk2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktJTkRfR0xPQkFMX0VYVF9GUkVFRF9CWVRFUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyNzY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktJTkRfR0xPQkFMX0VYVF9GUkVFRF9PQkpFQ1RTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYzODQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0lORF9HTE9CQUxfRlJFRURfQllURVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktJTkRfR0xPQkFMX0ZSRUVEX09CSkVDVFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktJTkRfR0xPQkFMX0dDX0lOVk9DQVRJT05TIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0lORF9USFJFQURfQUxMT0NBVEVEX0JZVEVTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTMxMDcyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktJTkRfVEhSRUFEX0FMTE9DQVRFRF9PQkpFQ1RTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjU1MzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0lORF9USFJFQURfQ0xBU1NfSU5JVF9DT1VOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwOTcxNTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0lORF9USFJFQURfQ0xBU1NfSU5JVF9USU1FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDE5NDMwNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLSU5EX1RIUkVBRF9FWFRfQUxMT0NBVEVEX0JZVEVTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTM2ODcwOTEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktJTkRfVEhSRUFEX0VYVF9BTExPQ0FURURfT0JKRUNUUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI2ODQzNTQ1NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLSU5EX1RIUkVBRF9FWFRfRlJFRURfQllURVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMjE0NzQ4MzY0OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLSU5EX1RIUkVBRF9FWFRfRlJFRURfT0JKRUNUUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwNzM3NDE4MjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0lORF9USFJFQURfRlJFRURfQllURVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MjQyODgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0lORF9USFJFQURfRlJFRURfT0JKRUNUUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI2MjE0NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLSU5EX1RIUkVBRF9HQ19JTlZPQ0FUSU9OUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwNDg1NzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFJBQ0VfQ09VTlRfQUxMT0NTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVk1SdW50aW1lIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdjU29mdFJlZmVyZW5jZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RXh0ZXJuYWxCeXRlc0FsbG9jYXRlZCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNaW5pbXVtSGVhcFNpemUiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJ1bnRpbWUiCisgcmV0dXJuPSJkYWx2aWsuc3lzdGVtLlZNUnVudGltZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRhcmdldEhlYXBVdGlsaXphdGlvbiIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icnVuRmluYWxpemF0aW9uU3luYyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNaW5pbXVtSGVhcFNpemUiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGFyZ2V0SGVhcFV0aWxpemF0aW9uIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1RhcmdldCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVk1TdGFjayIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlZNU3RhY2siCisgdHlwZT0iZGFsdmlrLnN5c3RlbS5WTVN0YWNrIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldENhbGxpbmdDbGFzc0xvYWRlciIKKyByZXR1cm49ImphdmEubGFuZy5DbGFzc0xvYWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2FsbGluZ0NsYXNzTG9hZGVyMiIKKyByZXR1cm49ImphdmEubGFuZy5DbGFzc0xvYWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2xhc3NlcyIKKyByZXR1cm49ImphdmEubGFuZy5DbGFzcyZsdDs/Jmd0O1tdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF4RGVwdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RvcEF0UHJpdmlsZWdlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaHJlYWRTdGFja1RyYWNlIgorIHJldHVybj0iamF2YS5sYW5nLlN0YWNrVHJhY2VFbGVtZW50W10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0IiB0eXBlPSJqYXZhLmxhbmcuVGhyZWFkIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ilp5Z290ZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZm9yayIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ya0FuZFNwZWNpYWxpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1aWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ2lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImdpZHMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWJ1Z0ZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJsaW1pdHMiIHR5cGU9ImludFtdW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ya0FuZFNwZWNpYWxpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1aWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ2lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImdpZHMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmFibGVEZWJ1Z2dlciIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmxpbWl0cyIgdHlwZT0iaW50W11bXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JrU3lzdGVtU2VydmVyIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idWlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImdpZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJnaWRzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVidWdGbGFncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJybGltaXRzIiB0eXBlPSJpbnRbXVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvcmtTeXN0ZW1TZXJ2ZXIiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1aWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ2lkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImdpZHMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmFibGVEZWJ1Z2dlciIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmxpbWl0cyIgdHlwZT0iaW50W11bXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkRFQlVHX0VOQUJMRV9BU1NFUlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFQlVHX0VOQUJMRV9DSEVDS0pOSSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVCVUdfRU5BQkxFX0RFQlVHR0VSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUJVR19FTkFCTEVfU0FGRU1PREUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImphdmEuYXd0LmZvbnQiCis+Cis8Y2xhc3MgbmFtZT0iTnVtZXJpY1NoYXBlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGV4dHVhbFNoYXBlciIKKyByZXR1cm49ImphdmEuYXd0LmZvbnQuTnVtZXJpY1NoYXBlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyYW5nZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdENvbnRleHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZXh0dWFsU2hhcGVyIgorIHJldHVybj0iamF2YS5hd3QuZm9udC5OdW1lcmljU2hhcGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJhbmdlcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJhbmdlcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaGFwZXIiCisgcmV0dXJuPSJqYXZhLmF3dC5mb250Lk51bWVyaWNTaGFwZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2luZ2xlUmFuZ2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0NvbnRleHR1YWwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNoYXBlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2hhcGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBTExfUkFOR0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTI0Mjg3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFSQUJJQyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQkVOR0FMSSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFVkFOQUdBUkkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVBU1RFUk5fQVJBQklDIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFVEhJT1BJQyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjY1NTM2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVVUk9QRUFOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHVUpBUkFUSSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjY0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdVUk1VS0hJIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0FOTkFEQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0hNRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMzEwNzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTEFPIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODE5MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNQUxBWUFMQU0iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMDQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1PTkdPTElBTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI2MjE0NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNWUFOTUFSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI3NjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1JJWUEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEFNSUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEVMVUdVIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRIQUkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MDk2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRJQkVUQU4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjM4NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVGV4dEF0dHJpYnV0ZSIKKyBleHRlbmRzPSJqYXZhLnRleHQuQXR0cmlidXRlZENoYXJhY3Rlckl0ZXJhdG9yLkF0dHJpYnV0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGV4dEF0dHJpYnV0ZSIKKyB0eXBlPSJqYXZhLmF3dC5mb250LlRleHRBdHRyaWJ1dGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxmaWVsZCBuYW1lPSJCQUNLR1JPVU5EIgorIHR5cGU9ImphdmEuYXd0LmZvbnQuVGV4dEF0dHJpYnV0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJCSURJX0VNQkVERElORyIKKyB0eXBlPSJqYXZhLmF3dC5mb250LlRleHRBdHRyaWJ1dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hBUl9SRVBMQUNFTUVOVCIKKyB0eXBlPSJqYXZhLmF3dC5mb250LlRleHRBdHRyaWJ1dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkFNSUxZIgorIHR5cGU9ImphdmEuYXd0LmZvbnQuVGV4dEF0dHJpYnV0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT05UIgorIHR5cGU9ImphdmEuYXd0LmZvbnQuVGV4dEF0dHJpYnV0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT1JFR1JPVU5EIgorIHR5cGU9ImphdmEuYXd0LmZvbnQuVGV4dEF0dHJpYnV0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTlBVVF9NRVRIT0RfSElHSExJR0hUIgorIHR5cGU9ImphdmEuYXd0LmZvbnQuVGV4dEF0dHJpYnV0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTlBVVF9NRVRIT0RfVU5ERVJMSU5FIgorIHR5cGU9ImphdmEuYXd0LmZvbnQuVGV4dEF0dHJpYnV0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJKVVNUSUZJQ0FUSU9OIgorIHR5cGU9ImphdmEuYXd0LmZvbnQuVGV4dEF0dHJpYnV0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJKVVNUSUZJQ0FUSU9OX0ZVTEwiCisgdHlwZT0iamF2YS5sYW5nLkZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkpVU1RJRklDQVRJT05fTk9ORSIKKyB0eXBlPSJqYXZhLmxhbmcuRmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTlVNRVJJQ19TSEFQSU5HIgorIHR5cGU9ImphdmEuYXd0LmZvbnQuVGV4dEF0dHJpYnV0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQT1NUVVJFIgorIHR5cGU9ImphdmEuYXd0LmZvbnQuVGV4dEF0dHJpYnV0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQT1NUVVJFX09CTElRVUUiCisgdHlwZT0iamF2YS5sYW5nLkZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBPU1RVUkVfUkVHVUxBUiIKKyB0eXBlPSJqYXZhLmxhbmcuRmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUlVOX0RJUkVDVElPTiIKKyB0eXBlPSJqYXZhLmF3dC5mb250LlRleHRBdHRyaWJ1dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUlVOX0RJUkVDVElPTl9MVFIiCisgdHlwZT0iamF2YS5sYW5nLkJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUlVOX0RJUkVDVElPTl9SVEwiCisgdHlwZT0iamF2YS5sYW5nLkJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0laRSIKKyB0eXBlPSJqYXZhLmF3dC5mb250LlRleHRBdHRyaWJ1dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RSSUtFVEhST1VHSCIKKyB0eXBlPSJqYXZhLmF3dC5mb250LlRleHRBdHRyaWJ1dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RSSUtFVEhST1VHSF9PTiIKKyB0eXBlPSJqYXZhLmxhbmcuQm9vbGVhbiIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVVBFUlNDUklQVCIKKyB0eXBlPSJqYXZhLmF3dC5mb250LlRleHRBdHRyaWJ1dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1VQRVJTQ1JJUFRfU1VCIgorIHR5cGU9ImphdmEubGFuZy5JbnRlZ2VyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNVUEVSU0NSSVBUX1NVUEVSIgorIHR5cGU9ImphdmEubGFuZy5JbnRlZ2VyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNXQVBfQ09MT1JTIgorIHR5cGU9ImphdmEuYXd0LmZvbnQuVGV4dEF0dHJpYnV0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTV0FQX0NPTE9SU19PTiIKKyB0eXBlPSJqYXZhLmxhbmcuQm9vbGVhbiIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUUkFOU0ZPUk0iCisgdHlwZT0iamF2YS5hd3QuZm9udC5UZXh0QXR0cmlidXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVOREVSTElORSIKKyB0eXBlPSJqYXZhLmF3dC5mb250LlRleHRBdHRyaWJ1dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVU5ERVJMSU5FX0xPV19EQVNIRUQiCisgdHlwZT0iamF2YS5sYW5nLkludGVnZXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVU5ERVJMSU5FX0xPV19ET1RURUQiCisgdHlwZT0iamF2YS5sYW5nLkludGVnZXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVU5ERVJMSU5FX0xPV19HUkFZIgorIHR5cGU9ImphdmEubGFuZy5JbnRlZ2VyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVOREVSTElORV9MT1dfT05FX1BJWEVMIgorIHR5cGU9ImphdmEubGFuZy5JbnRlZ2VyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVOREVSTElORV9MT1dfVFdPX1BJWEVMIgorIHR5cGU9ImphdmEubGFuZy5JbnRlZ2VyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVOREVSTElORV9PTiIKKyB0eXBlPSJqYXZhLmxhbmcuSW50ZWdlciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXRUlHSFQiCisgdHlwZT0iamF2YS5hd3QuZm9udC5UZXh0QXR0cmlidXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldFSUdIVF9CT0xEIgorIHR5cGU9ImphdmEubGFuZy5GbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXRUlHSFRfREVNSUJPTEQiCisgdHlwZT0iamF2YS5sYW5nLkZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldFSUdIVF9ERU1JTElHSFQiCisgdHlwZT0iamF2YS5sYW5nLkZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldFSUdIVF9FWFRSQUJPTEQiCisgdHlwZT0iamF2YS5sYW5nLkZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldFSUdIVF9FWFRSQV9MSUdIVCIKKyB0eXBlPSJqYXZhLmxhbmcuRmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0VJR0hUX0hFQVZZIgorIHR5cGU9ImphdmEubGFuZy5GbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXRUlHSFRfTElHSFQiCisgdHlwZT0iamF2YS5sYW5nLkZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldFSUdIVF9NRURJVU0iCisgdHlwZT0iamF2YS5sYW5nLkZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldFSUdIVF9SRUdVTEFSIgorIHR5cGU9ImphdmEubGFuZy5GbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXRUlHSFRfU0VNSUJPTEQiCisgdHlwZT0iamF2YS5sYW5nLkZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldFSUdIVF9VTFRSQUJPTEQiCisgdHlwZT0iamF2YS5sYW5nLkZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRFRIIgorIHR5cGU9ImphdmEuYXd0LmZvbnQuVGV4dEF0dHJpYnV0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSURUSF9DT05ERU5TRUQiCisgdHlwZT0iamF2YS5sYW5nLkZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldJRFRIX0VYVEVOREVEIgorIHR5cGU9ImphdmEubGFuZy5GbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSURUSF9SRUdVTEFSIgorIHR5cGU9ImphdmEubGFuZy5GbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXSURUSF9TRU1JX0NPTkRFTlNFRCIKKyB0eXBlPSJqYXZhLmxhbmcuRmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0lEVEhfU0VNSV9FWFRFTkRFRCIKKyB0eXBlPSJqYXZhLmxhbmcuRmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iamF2YS5iZWFucyIKKz4KKzxjbGFzcyBuYW1lPSJJbmRleGVkUHJvcGVydHlDaGFuZ2VFdmVudCIKKyBleHRlbmRzPSJqYXZhLmJlYW5zLlByb3BlcnR5Q2hhbmdlRXZlbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbmRleGVkUHJvcGVydHlDaGFuZ2VFdmVudCIKKyB0eXBlPSJqYXZhLmJlYW5zLkluZGV4ZWRQcm9wZXJ0eUNoYW5nZUV2ZW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm9wZXJ0eU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9sZFZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdWYWx1ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEluZGV4IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlByb3BlcnR5Q2hhbmdlRXZlbnQiCisgZXh0ZW5kcz0iamF2YS51dGlsLkV2ZW50T2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJvcGVydHlDaGFuZ2VFdmVudCIKKyB0eXBlPSJqYXZhLmJlYW5zLlByb3BlcnR5Q2hhbmdlRXZlbnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3BlcnR5TmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2xkVmFsdWUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1ZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0TmV3VmFsdWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9sZFZhbHVlIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm9wYWdhdGlvbklkIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm9wZXJ0eU5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByb3BhZ2F0aW9uSWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9wYWdhdGlvbklkIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJQcm9wZXJ0eUNoYW5nZUxpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC5FdmVudExpc3RlbmVyIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0icHJvcGVydHlDaGFuZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJqYXZhLmJlYW5zLlByb3BlcnR5Q2hhbmdlRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlByb3BlcnR5Q2hhbmdlTGlzdGVuZXJQcm94eSIKKyBleHRlbmRzPSJqYXZhLnV0aWwuRXZlbnRMaXN0ZW5lclByb3h5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmJlYW5zLlByb3BlcnR5Q2hhbmdlTGlzdGVuZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByb3BlcnR5Q2hhbmdlTGlzdGVuZXJQcm94eSIKKyB0eXBlPSJqYXZhLmJlYW5zLlByb3BlcnR5Q2hhbmdlTGlzdGVuZXJQcm94eSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3BlcnR5TmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImphdmEuYmVhbnMuUHJvcGVydHlDaGFuZ2VMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldFByb3BlcnR5TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJvcGVydHlDaGFuZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iamF2YS5iZWFucy5Qcm9wZXJ0eUNoYW5nZUV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlByb3BlcnR5Q2hhbmdlU3VwcG9ydCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJvcGVydHlDaGFuZ2VTdXBwb3J0IgorIHR5cGU9ImphdmEuYmVhbnMuUHJvcGVydHlDaGFuZ2VTdXBwb3J0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlQmVhbiIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZFByb3BlcnR5Q2hhbmdlTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3BlcnR5TmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImphdmEuYmVhbnMuUHJvcGVydHlDaGFuZ2VMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRQcm9wZXJ0eUNoYW5nZUxpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iamF2YS5iZWFucy5Qcm9wZXJ0eUNoYW5nZUxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpcmVJbmRleGVkUHJvcGVydHlDaGFuZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9wZXJ0eU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9sZFZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdWYWx1ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaXJlSW5kZXhlZFByb3BlcnR5Q2hhbmdlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvcGVydHlOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvbGRWYWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3VmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmlyZUluZGV4ZWRQcm9wZXJ0eUNoYW5nZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3BlcnR5TmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2xkVmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3VmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaXJlUHJvcGVydHlDaGFuZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9wZXJ0eU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9sZFZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdWYWx1ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaXJlUHJvcGVydHlDaGFuZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9wZXJ0eU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9sZFZhbHVlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdWYWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaXJlUHJvcGVydHlDaGFuZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9wZXJ0eU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9sZFZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1ZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmlyZVByb3BlcnR5Q2hhbmdlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImphdmEuYmVhbnMuUHJvcGVydHlDaGFuZ2VFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm9wZXJ0eUNoYW5nZUxpc3RlbmVycyIKKyByZXR1cm49ImphdmEuYmVhbnMuUHJvcGVydHlDaGFuZ2VMaXN0ZW5lcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3BlcnR5TmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm9wZXJ0eUNoYW5nZUxpc3RlbmVycyIKKyByZXR1cm49ImphdmEuYmVhbnMuUHJvcGVydHlDaGFuZ2VMaXN0ZW5lcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzTGlzdGVuZXJzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9wZXJ0eU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlUHJvcGVydHlDaGFuZ2VMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvcGVydHlOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iamF2YS5iZWFucy5Qcm9wZXJ0eUNoYW5nZUxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZVByb3BlcnR5Q2hhbmdlTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJqYXZhLmJlYW5zLlByb3BlcnR5Q2hhbmdlTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJqYXZhLmlvIgorPgorPGNsYXNzIG5hbWU9IkJ1ZmZlcmVkSW5wdXRTdHJlYW0iCisgZXh0ZW5kcz0iamF2YS5pby5GaWx0ZXJJbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJ1ZmZlcmVkSW5wdXRTdHJlYW0iCisgdHlwZT0iamF2YS5pby5CdWZmZXJlZElucHV0U3RyZWFtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJ1ZmZlcmVkSW5wdXRTdHJlYW0iCisgdHlwZT0iamF2YS5pby5CdWZmZXJlZElucHV0U3RyZWFtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iYnVmIgorIHR5cGU9ImJ5dGVbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJ0cnVlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY291bnQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibWFya2xpbWl0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1hcmtwb3MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icG9zIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCdWZmZXJlZE91dHB1dFN0cmVhbSIKKyBleHRlbmRzPSJqYXZhLmlvLkZpbHRlck91dHB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJ1ZmZlcmVkT3V0cHV0U3RyZWFtIgorIHR5cGU9ImphdmEuaW8uQnVmZmVyZWRPdXRwdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCdWZmZXJlZE91dHB1dFN0cmVhbSIKKyB0eXBlPSJqYXZhLmlvLkJ1ZmZlcmVkT3V0cHV0U3RyZWFtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0IiB0eXBlPSJqYXZhLmlvLk91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxmaWVsZCBuYW1lPSJidWYiCisgdHlwZT0iYnl0ZVtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY291bnQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJ1ZmZlcmVkUmVhZGVyIgorIGV4dGVuZHM9ImphdmEuaW8uUmVhZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQnVmZmVyZWRSZWFkZXIiCisgdHlwZT0iamF2YS5pby5CdWZmZXJlZFJlYWRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJqYXZhLmlvLlJlYWRlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQnVmZmVyZWRSZWFkZXIiCisgdHlwZT0iamF2YS5pby5CdWZmZXJlZFJlYWRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJqYXZhLmlvLlJlYWRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkTGluZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJ1ZmZlcmVkV3JpdGVyIgorIGV4dGVuZHM9ImphdmEuaW8uV3JpdGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQnVmZmVyZWRXcml0ZXIiCisgdHlwZT0iamF2YS5pby5CdWZmZXJlZFdyaXRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dCIgdHlwZT0iamF2YS5pby5Xcml0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJ1ZmZlcmVkV3JpdGVyIgorIHR5cGU9ImphdmEuaW8uQnVmZmVyZWRXcml0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImphdmEuaW8uV3JpdGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZsdXNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3TGluZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2J1ZiIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQnl0ZUFycmF5SW5wdXRTdHJlYW0iCisgZXh0ZW5kcz0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJ5dGVBcnJheUlucHV0U3RyZWFtIgorIHR5cGU9ImphdmEuaW8uQnl0ZUFycmF5SW5wdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWYiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQnl0ZUFycmF5SW5wdXRTdHJlYW0iCisgdHlwZT0iamF2YS5pby5CeXRlQXJyYXlJbnB1dFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJidWYiCisgdHlwZT0iYnl0ZVtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY291bnQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibWFyayIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwb3MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJ5dGVBcnJheU91dHB1dFN0cmVhbSIKKyBleHRlbmRzPSJqYXZhLmlvLk91dHB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJ5dGVBcnJheU91dHB1dFN0cmVhbSIKKyB0eXBlPSJqYXZhLmlvLkJ5dGVBcnJheU91dHB1dFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJ5dGVBcnJheU91dHB1dFN0cmVhbSIKKyB0eXBlPSJqYXZhLmlvLkJ5dGVBcnJheU91dHB1dFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InJlc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9CeXRlQXJyYXkiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGlieXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib25lQnl0ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG8iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dCIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iYnVmIgorIHR5cGU9ImJ5dGVbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNvdW50IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDaGFyQXJyYXlSZWFkZXIiCisgZXh0ZW5kcz0iamF2YS5pby5SZWFkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDaGFyQXJyYXlSZWFkZXIiCisgdHlwZT0iamF2YS5pby5DaGFyQXJyYXlSZWFkZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWYiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2hhckFycmF5UmVhZGVyIgorIHR5cGU9ImphdmEuaW8uQ2hhckFycmF5UmVhZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb3NlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImJ1ZiIKKyB0eXBlPSJjaGFyW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjb3VudCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJtYXJrZWRQb3MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icG9zIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDaGFyQXJyYXlXcml0ZXIiCisgZXh0ZW5kcz0iamF2YS5pby5Xcml0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDaGFyQXJyYXlXcml0ZXIiCisgdHlwZT0iamF2YS5pby5DaGFyQXJyYXlXcml0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDaGFyQXJyYXlXcml0ZXIiCisgdHlwZT0iamF2YS5pby5DaGFyQXJyYXlXcml0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbml0aWFsU2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZsdXNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b0NoYXJBcnJheSIKKyByZXR1cm49ImNoYXJbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG8iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImphdmEuaW8uV3JpdGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImJ1ZiIKKyB0eXBlPSJjaGFyW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjb3VudCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2hhckNvbnZlcnNpb25FeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5pby5JT0V4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNoYXJDb252ZXJzaW9uRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuaW8uQ2hhckNvbnZlcnNpb25FeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDaGFyQ29udmVyc2lvbkV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmlvLkNoYXJDb252ZXJzaW9uRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDbG9zZWFibGUiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJEYXRhSW5wdXQiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJyZWFkQm9vbGVhbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZEJ5dGUiCisgcmV0dXJuPSJieXRlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRDaGFyIgorIHJldHVybj0iY2hhciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkRG91YmxlIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRGbG9hdCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRGdWxseSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRGdWxseSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkSW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRMaW5lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkTG9uZyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZFNob3J0IgorIHJldHVybj0ic2hvcnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZFVURiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZFVuc2lnbmVkQnl0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkVW5zaWduZWRTaG9ydCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJza2lwQnl0ZXMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkRhdGFJbnB1dFN0cmVhbSIKKyBleHRlbmRzPSJqYXZhLmlvLkZpbHRlcklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLkRhdGFJbnB1dCI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGF0YUlucHV0U3RyZWFtIgorIHR5cGU9ImphdmEuaW8uRGF0YUlucHV0U3RyZWFtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRCb29sZWFuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkQnl0ZSIKKyByZXR1cm49ImJ5dGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZENoYXIiCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWREb3VibGUiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZEZsb2F0IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZEZ1bGx5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZEZ1bGx5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkSW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRMaW5lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRMb25nIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkU2hvcnQiCisgcmV0dXJuPSJzaG9ydCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkVVRGIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkVVRGIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJqYXZhLmlvLkRhdGFJbnB1dCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZFVuc2lnbmVkQnl0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkVW5zaWduZWRTaG9ydCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJza2lwQnl0ZXMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkRhdGFPdXRwdXQiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvbmVCeXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlQm9vbGVhbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUJ5dGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUJ5dGVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlQ2hhciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlQ2hhcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0ciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVEb3VibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUZsb2F0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUludCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlTG9uZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVNob3J0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVVVEYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0ciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkRhdGFPdXRwdXRTdHJlYW0iCisgZXh0ZW5kcz0iamF2YS5pby5GaWx0ZXJPdXRwdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uRGF0YU91dHB1dCI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGF0YU91dHB1dFN0cmVhbSIKKyB0eXBlPSJqYXZhLmlvLkRhdGFPdXRwdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ic2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlQm9vbGVhbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUJ5dGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUJ5dGVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlQ2hhciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlQ2hhcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0ciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVEb3VibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUZsb2F0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUludCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlTG9uZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVNob3J0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVVVEYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0ciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJ3cml0dGVuIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJFT0ZFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5pby5JT0V4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkVPRkV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmlvLkVPRkV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkVPRkV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmlvLkVPRkV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iRXh0ZXJuYWxpemFibGUiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJyZWFkRXh0ZXJuYWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0IiB0eXBlPSJqYXZhLmlvLk9iamVjdElucHV0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGFzc05vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVFeHRlcm5hbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0cHV0IiB0eXBlPSJqYXZhLmlvLk9iamVjdE91dHB1dCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkZpbGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNvbXBhcmFibGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZpbGUiCisgdHlwZT0iamF2YS5pby5GaWxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlyIiB0eXBlPSJqYXZhLmlvLkZpbGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZpbGUiCisgdHlwZT0iamF2YS5pby5GaWxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRmlsZSIKKyB0eXBlPSJqYXZhLmlvLkZpbGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXJQYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGaWxlIgorIHR5cGU9ImphdmEuaW8uRmlsZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iamF2YS5uZXQuVVJJIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2FuUmVhZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2FuV3JpdGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbXBhcmVUbyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYW5vdGhlciIgdHlwZT0iamF2YS5pby5GaWxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZU5ld0ZpbGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVUZW1wRmlsZSIKKyByZXR1cm49ImphdmEuaW8uRmlsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmaXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN1ZmZpeCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlVGVtcEZpbGUiCisgcmV0dXJuPSJqYXZhLmlvLkZpbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlZml4IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdWZmaXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRpcmVjdG9yeSIgdHlwZT0iamF2YS5pby5GaWxlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWxldGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlbGV0ZU9uRXhpdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhpc3RzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBYnNvbHV0ZUZpbGUiCisgcmV0dXJuPSJqYXZhLmlvLkZpbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWJzb2x1dGVQYXRoIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDYW5vbmljYWxGaWxlIgorIHJldHVybj0iamF2YS5pby5GaWxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDYW5vbmljYWxQYXRoIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFyZW50IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJlbnRGaWxlIgorIHJldHVybj0iamF2YS5pby5GaWxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhdGgiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQWJzb2x1dGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRGlyZWN0b3J5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0ZpbGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzSGlkZGVuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsYXN0TW9kaWZpZWQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxlbmd0aCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGlzdCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsaXN0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWx0ZXIiIHR5cGU9ImphdmEuaW8uRmlsZW5hbWVGaWx0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGlzdEZpbGVzIgorIHJldHVybj0iamF2YS5pby5GaWxlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGlzdEZpbGVzIgorIHJldHVybj0iamF2YS5pby5GaWxlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbHRlciIgdHlwZT0iamF2YS5pby5GaWxlbmFtZUZpbHRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsaXN0RmlsZXMiCisgcmV0dXJuPSJqYXZhLmlvLkZpbGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsdGVyIiB0eXBlPSJqYXZhLmlvLkZpbGVGaWx0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGlzdFJvb3RzIgorIHJldHVybj0iamF2YS5pby5GaWxlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJta2RpciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWtkaXJzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW5hbWVUbyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImphdmEuaW8uRmlsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMYXN0TW9kaWZpZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJlYWRPbmx5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1VSSSIKKyByZXR1cm49ImphdmEubmV0LlVSSSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1VSTCIKKyByZXR1cm49ImphdmEubmV0LlVSTCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iTWFsZm9ybWVkVVJMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5NYWxmb3JtZWRVUkxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJwYXRoU2VwYXJhdG9yIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icGF0aFNlcGFyYXRvckNoYXIiCisgdHlwZT0iY2hhciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzZXBhcmF0b3IiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzZXBhcmF0b3JDaGFyIgorIHR5cGU9ImNoYXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkZpbGVEZXNjcmlwdG9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZpbGVEZXNjcmlwdG9yIgorIHR5cGU9ImphdmEuaW8uRmlsZURlc2NyaXB0b3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ic3luYyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlN5bmNGYWlsZWRFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uU3luY0ZhaWxlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWxpZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJlcnIiCisgdHlwZT0iamF2YS5pby5GaWxlRGVzY3JpcHRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpbiIKKyB0eXBlPSJqYXZhLmlvLkZpbGVEZXNjcmlwdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im91dCIKKyB0eXBlPSJqYXZhLmlvLkZpbGVEZXNjcmlwdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iRmlsZUZpbHRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImFjY2VwdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aG5hbWUiIHR5cGU9ImphdmEuaW8uRmlsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iRmlsZUlucHV0U3RyZWFtIgorIGV4dGVuZHM9ImphdmEuaW8uSW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uQ2xvc2VhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGaWxlSW5wdXRTdHJlYW0iCisgdHlwZT0iamF2YS5pby5GaWxlSW5wdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlIiB0eXBlPSJqYXZhLmlvLkZpbGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZpbGVJbnB1dFN0cmVhbSIKKyB0eXBlPSJqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZkIiB0eXBlPSJqYXZhLmlvLkZpbGVEZXNjcmlwdG9yIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGaWxlSW5wdXRTdHJlYW0iCisgdHlwZT0iamF2YS5pby5GaWxlSW5wdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRmlsZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldENoYW5uZWwiCisgcmV0dXJuPSJqYXZhLm5pby5jaGFubmVscy5GaWxlQ2hhbm5lbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGRCIKKyByZXR1cm49ImphdmEuaW8uRmlsZURlc2NyaXB0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRmlsZU5vdEZvdW5kRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEuaW8uSU9FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGaWxlTm90Rm91bmRFeGNlcHRpb24iCisgdHlwZT0iamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGaWxlTm90Rm91bmRFeGNlcHRpb24iCisgdHlwZT0iamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRmlsZU91dHB1dFN0cmVhbSIKKyBleHRlbmRzPSJqYXZhLmlvLk91dHB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5DbG9zZWFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZpbGVPdXRwdXRTdHJlYW0iCisgdHlwZT0iamF2YS5pby5GaWxlT3V0cHV0U3RyZWFtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsZSIgdHlwZT0iamF2YS5pby5GaWxlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJGaWxlTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGaWxlT3V0cHV0U3RyZWFtIgorIHR5cGU9ImphdmEuaW8uRmlsZU91dHB1dFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGUiIHR5cGU9ImphdmEuaW8uRmlsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXBwZW5kIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJGaWxlTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGaWxlT3V0cHV0U3RyZWFtIgorIHR5cGU9ImphdmEuaW8uRmlsZU91dHB1dFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZkIiB0eXBlPSJqYXZhLmlvLkZpbGVEZXNjcmlwdG9yIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGaWxlT3V0cHV0U3RyZWFtIgorIHR5cGU9ImphdmEuaW8uRmlsZU91dHB1dFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGVuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJGaWxlTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGaWxlT3V0cHV0U3RyZWFtIgorIHR5cGU9ImphdmEuaW8uRmlsZU91dHB1dFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGVuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcHBlbmQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDaGFubmVsIgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuRmlsZUNoYW5uZWwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RkQiCisgcmV0dXJuPSJqYXZhLmlvLkZpbGVEZXNjcmlwdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib25lQnl0ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJGaWxlUGVybWlzc2lvbiIKKyBleHRlbmRzPSJqYXZhLnNlY3VyaXR5LlBlcm1pc3Npb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZpbGVQZXJtaXNzaW9uIgorIHR5cGU9ImphdmEuaW8uRmlsZVBlcm1pc3Npb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb25zIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZXF1YWxzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFjdGlvbnMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc2hDb2RlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImltcGxpZXMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlBlcm1pc3Npb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRmlsZVJlYWRlciIKKyBleHRlbmRzPSJqYXZhLmlvLklucHV0U3RyZWFtUmVhZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRmlsZVJlYWRlciIKKyB0eXBlPSJqYXZhLmlvLkZpbGVSZWFkZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlIiB0eXBlPSJqYXZhLmlvLkZpbGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZpbGVSZWFkZXIiCisgdHlwZT0iamF2YS5pby5GaWxlUmVhZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmQiIHR5cGU9ImphdmEuaW8uRmlsZURlc2NyaXB0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZpbGVSZWFkZXIiCisgdHlwZT0iamF2YS5pby5GaWxlUmVhZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsZW5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJGaWxlV3JpdGVyIgorIGV4dGVuZHM9ImphdmEuaW8uT3V0cHV0U3RyZWFtV3JpdGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRmlsZVdyaXRlciIKKyB0eXBlPSJqYXZhLmlvLkZpbGVXcml0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlIiB0eXBlPSJqYXZhLmlvLkZpbGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGaWxlV3JpdGVyIgorIHR5cGU9ImphdmEuaW8uRmlsZVdyaXRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGUiIHR5cGU9ImphdmEuaW8uRmlsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXBwZW5kIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRmlsZVdyaXRlciIKKyB0eXBlPSJqYXZhLmlvLkZpbGVXcml0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZCIgdHlwZT0iamF2YS5pby5GaWxlRGVzY3JpcHRvciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRmlsZVdyaXRlciIKKyB0eXBlPSJqYXZhLmlvLkZpbGVXcml0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlbmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZpbGVXcml0ZXIiCisgdHlwZT0iamF2YS5pby5GaWxlV3JpdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsZW5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFwcGVuZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iRmlsZW5hbWVGaWx0ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJhY2NlcHQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpciIgdHlwZT0iamF2YS5pby5GaWxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlbmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iRmlsdGVySW5wdXRTdHJlYW0iCisgZXh0ZW5kcz0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZpbHRlcklucHV0U3RyZWFtIgorIHR5cGU9ImphdmEuaW8uRmlsdGVySW5wdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbiIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InJlYWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iaW4iCisgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkZpbHRlck91dHB1dFN0cmVhbSIKKyBleHRlbmRzPSJqYXZhLmlvLk91dHB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZpbHRlck91dHB1dFN0cmVhbSIKKyB0eXBlPSJqYXZhLmlvLkZpbHRlck91dHB1dFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dCIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9uZUJ5dGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJvdXQiCisgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRmlsdGVyUmVhZGVyIgorIGV4dGVuZHM9ImphdmEuaW8uUmVhZGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGaWx0ZXJSZWFkZXIiCisgdHlwZT0iamF2YS5pby5GaWx0ZXJSZWFkZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbiIgdHlwZT0iamF2YS5pby5SZWFkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJpbiIKKyB0eXBlPSJqYXZhLmlvLlJlYWRlciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJGaWx0ZXJXcml0ZXIiCisgZXh0ZW5kcz0iamF2YS5pby5Xcml0ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZpbHRlcldyaXRlciIKKyB0eXBlPSJqYXZhLmlvLkZpbHRlcldyaXRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dCIgdHlwZT0iamF2YS5pby5Xcml0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZsdXNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0ib3V0IgorIHR5cGU9ImphdmEuaW8uV3JpdGVyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJGbHVzaGFibGUiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJmbHVzaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IklPRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJT0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSU9FeGNlcHRpb24iCisgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbnB1dFN0cmVhbSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uQ2xvc2VhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnB1dFN0cmVhbSIKKyB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImF2YWlsYWJsZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYXJrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVhZGxpbWl0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWFya1N1cHBvcnRlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2tpcCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IklucHV0U3RyZWFtUmVhZGVyIgorIGV4dGVuZHM9ImphdmEuaW8uUmVhZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW5wdXRTdHJlYW1SZWFkZXIiCisgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbVJlYWRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnB1dFN0cmVhbVJlYWRlciIKKyB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtUmVhZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuYyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5VbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnB1dFN0cmVhbVJlYWRlciIKKyB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtUmVhZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlYyIgdHlwZT0iamF2YS5uaW8uY2hhcnNldC5DaGFyc2V0RGVjb2RlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW5wdXRTdHJlYW1SZWFkZXIiCisgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbVJlYWRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGFyc2V0IiB0eXBlPSJqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVuY29kaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWYiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbnRlcnJ1cHRlZElPRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEuaW8uSU9FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnRlcnJ1cHRlZElPRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuaW8uSW50ZXJydXB0ZWRJT0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkludGVycnVwdGVkSU9FeGNlcHRpb24iCisgdHlwZT0iamF2YS5pby5JbnRlcnJ1cHRlZElPRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iYnl0ZXNUcmFuc2ZlcnJlZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW52YWxpZENsYXNzRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEuaW8uT2JqZWN0U3RyZWFtRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW52YWxpZENsYXNzRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuaW8uSW52YWxpZENsYXNzRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW52YWxpZENsYXNzRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuaW8uSW52YWxpZENsYXNzRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2xhc3NOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxmaWVsZCBuYW1lPSJjbGFzc25hbWUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbnZhbGlkT2JqZWN0RXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEuaW8uT2JqZWN0U3RyZWFtRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW52YWxpZE9iamVjdEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmlvLkludmFsaWRPYmplY3RFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTGluZU51bWJlcklucHV0U3RyZWFtIgorIGV4dGVuZHM9ImphdmEuaW8uRmlsdGVySW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxpbmVOdW1iZXJJbnB1dFN0cmVhbSIKKyB0eXBlPSJqYXZhLmlvLkxpbmVOdW1iZXJJbnB1dFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0TGluZU51bWJlciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMaW5lTnVtYmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZU51bWJlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkxpbmVOdW1iZXJSZWFkZXIiCisgZXh0ZW5kcz0iamF2YS5pby5CdWZmZXJlZFJlYWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxpbmVOdW1iZXJSZWFkZXIiCisgdHlwZT0iamF2YS5pby5MaW5lTnVtYmVyUmVhZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9ImphdmEuaW8uUmVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMaW5lTnVtYmVyUmVhZGVyIgorIHR5cGU9ImphdmEuaW8uTGluZU51bWJlclJlYWRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJqYXZhLmlvLlJlYWRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0TGluZU51bWJlciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMaW5lTnVtYmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZU51bWJlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik5vdEFjdGl2ZUV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmlvLk9iamVjdFN0cmVhbUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik5vdEFjdGl2ZUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmlvLk5vdEFjdGl2ZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik5vdEFjdGl2ZUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmlvLk5vdEFjdGl2ZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJOb3RTZXJpYWxpemFibGVFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5pby5PYmplY3RTdHJlYW1FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOb3RTZXJpYWxpemFibGVFeGNlcHRpb24iCisgdHlwZT0iamF2YS5pby5Ob3RTZXJpYWxpemFibGVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOb3RTZXJpYWxpemFibGVFeGNlcHRpb24iCisgdHlwZT0iamF2YS5pby5Ob3RTZXJpYWxpemFibGVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ik9iamVjdElucHV0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uRGF0YUlucHV0Ij4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iYXZhaWxhYmxlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb3NlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkT2JqZWN0IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGFzc05vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2tpcCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idG9Ta2lwIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iT2JqZWN0SW5wdXRTdHJlYW0iCisgZXh0ZW5kcz0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5PYmplY3RJbnB1dCI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLk9iamVjdFN0cmVhbUNvbnN0YW50cyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iT2JqZWN0SW5wdXRTdHJlYW0iCisgdHlwZT0iamF2YS5pby5PYmplY3RJbnB1dFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTZWN1cml0eUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLlNlY3VyaXR5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJPYmplY3RJbnB1dFN0cmVhbSIKKyB0eXBlPSJqYXZhLmlvLk9iamVjdElucHV0U3RyZWFtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTdHJlYW1Db3JydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uU3RyZWFtQ29ycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZGVmYXVsdFJlYWRPYmplY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGFzc05vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vdEFjdGl2ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5Ob3RBY3RpdmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5hYmxlUmVzb2x2ZU9iamVjdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVuYWJsZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU2VjdXJpdHlFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5TZWN1cml0eUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkQm9vbGVhbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRCeXRlIgorIHJldHVybj0iYnl0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZENoYXIiCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkQ2xhc3NEZXNjcmlwdG9yIgorIHJldHVybj0iamF2YS5pby5PYmplY3RTdHJlYW1DbGFzcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxleGNlcHRpb24gbmFtZT0iQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkNsYXNzTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWREb3VibGUiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRGaWVsZHMiCisgcmV0dXJuPSJqYXZhLmlvLk9iamVjdElucHV0U3RyZWFtLkdldEZpZWxkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGFzc05vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vdEFjdGl2ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5Ob3RBY3RpdmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZEZsb2F0IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRGdWxseSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkRnVsbHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkSW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkTGluZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZExvbmciCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkT2JqZWN0IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGFzc05vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ik9wdGlvbmFsRGF0YUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5PcHRpb25hbERhdGFFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZE9iamVjdE92ZXJyaWRlIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxleGNlcHRpb24gbmFtZT0iQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkNsYXNzTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJPcHRpb25hbERhdGFFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uT3B0aW9uYWxEYXRhRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRTaG9ydCIKKyByZXR1cm49InNob3J0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkU3RyZWFtSGVhZGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlN0cmVhbUNvcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5TdHJlYW1Db3JydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZFVURiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRVbnNoYXJlZCIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkNsYXNzTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5DbGFzc05vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkVW5zaWduZWRCeXRlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkVW5zaWduZWRTaG9ydCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVnaXN0ZXJWYWxpZGF0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEuaW8uT2JqZWN0SW5wdXRWYWxpZGF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcmlvcml0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkT2JqZWN0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLkludmFsaWRPYmplY3RFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vdEFjdGl2ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5Ob3RBY3RpdmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzb2x2ZUNsYXNzIgorIHJldHVybj0iamF2YS5sYW5nLkNsYXNzJmx0Oz8mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJvc0NsYXNzIiB0eXBlPSJqYXZhLmlvLk9iamVjdFN0cmVhbUNsYXNzIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGFzc05vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzb2x2ZU9iamVjdCIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzb2x2ZVByb3h5Q2xhc3MiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVyZmFjZU5hbWVzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNsYXNzTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5DbGFzc05vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJza2lwQnl0ZXMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJPYmplY3RJbnB1dFN0cmVhbS5HZXRGaWVsZCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik9iamVjdElucHV0U3RyZWFtLkdldEZpZWxkIgorIHR5cGU9ImphdmEuaW8uT2JqZWN0SW5wdXRTdHJlYW0uR2V0RmllbGQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZGVmYXVsdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49ImNoYXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49ImJ5dGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJieXRlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49InNob3J0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmF1bHRWYWx1ZSIgdHlwZT0ic2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmF1bHRWYWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmF1bHRWYWx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmF1bHRWYWx1ZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9iamVjdFN0cmVhbUNsYXNzIgorIHJldHVybj0iamF2YS5pby5PYmplY3RTdHJlYW1DbGFzcyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJPYmplY3RJbnB1dFZhbGlkYXRpb24iCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJ2YWxpZGF0ZU9iamVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZE9iamVjdEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JbnZhbGlkT2JqZWN0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iT2JqZWN0T3V0cHV0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uRGF0YU91dHB1dCI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImNsb3NlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmbHVzaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVPYmplY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iaiIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9Ik9iamVjdE91dHB1dFN0cmVhbSIKKyBleHRlbmRzPSJqYXZhLmlvLk91dHB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5PYmplY3RPdXRwdXQiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5PYmplY3RTdHJlYW1Db25zdGFudHMiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik9iamVjdE91dHB1dFN0cmVhbSIKKyB0eXBlPSJqYXZhLmlvLk9iamVjdE91dHB1dFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTZWN1cml0eUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLlNlY3VyaXR5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJPYmplY3RPdXRwdXRTdHJlYW0iCisgdHlwZT0iamF2YS5pby5PYmplY3RPdXRwdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXRwdXQiIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFubm90YXRlQ2xhc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJhQ2xhc3MiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYW5ub3RhdGVQcm94eUNsYXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYUNsYXNzIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlZmF1bHRXcml0ZU9iamVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYWluIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5hYmxlUmVwbGFjZU9iamVjdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVuYWJsZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU2VjdXJpdHlFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5TZWN1cml0eUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRGaWVsZHMiCisgcmV0dXJuPSJqYXZhLmlvLk9iamVjdE91dHB1dFN0cmVhbS5QdXRGaWVsZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVwbGFjZU9iamVjdCIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1c2VQcm90b2NvbFZlcnNpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2ZXJzaW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVCb29sZWFuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlQnl0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlQnl0ZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVDaGFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVDaGFycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUNsYXNzRGVzY3JpcHRvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNsYXNzRGVzYyIgdHlwZT0iamF2YS5pby5PYmplY3RTdHJlYW1DbGFzcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVEb3VibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUZpZWxkcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlRmxvYXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlSW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVMb25nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlT2JqZWN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlT2JqZWN0T3ZlcnJpZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlU2hvcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVN0cmVhbUhlYWRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVVRGIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVW5zaGFyZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik9iamVjdE91dHB1dFN0cmVhbS5QdXRGaWVsZCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik9iamVjdE91dHB1dFN0cmVhbS5QdXRGaWVsZCIKKyB0eXBlPSJqYXZhLmlvLk9iamVjdE91dHB1dFN0cmVhbS5QdXRGaWVsZCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYnl0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJzaG9ydCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImphdmEuaW8uT2JqZWN0T3V0cHV0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJPYmplY3RTdHJlYW1DbGFzcyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImZvckNsYXNzIgorIHJldHVybj0iamF2YS5sYW5nLkNsYXNzJmx0Oz8mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpZWxkIgorIHJldHVybj0iamF2YS5pby5PYmplY3RTdHJlYW1GaWVsZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGaWVsZHMiCisgcmV0dXJuPSJqYXZhLmlvLk9iamVjdFN0cmVhbUZpZWxkW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2VyaWFsVmVyc2lvblVJRCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9va3VwIgorIHJldHVybj0iamF2YS5pby5PYmplY3RTdHJlYW1DbGFzcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbCIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0Oz8mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iTk9fRklFTERTIgorIHR5cGU9ImphdmEuaW8uT2JqZWN0U3RyZWFtRmllbGRbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ik9iamVjdFN0cmVhbUNvbnN0YW50cyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iUFJPVE9DT0xfVkVSU0lPTl8xIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQUk9UT0NPTF9WRVJTSU9OXzIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDX0JMT0NLX0RBVEEiCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ19FTlVNIgorIHR5cGU9ImJ5dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDX0VYVEVSTkFMSVpBQkxFIgorIHR5cGU9ImJ5dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NfU0VSSUFMSVpBQkxFIgorIHR5cGU9ImJ5dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NfV1JJVEVfTUVUSE9EIgorIHR5cGU9ImJ5dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RSRUFNX01BR0lDIgorIHR5cGU9InNob3J0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMjEyNjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RSRUFNX1ZFUlNJT04iCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1VCQ0xBU1NfSU1QTEVNRU5UQVRJT05fUEVSTUlTU0lPTiIKKyB0eXBlPSJqYXZhLmlvLlNlcmlhbGl6YWJsZVBlcm1pc3Npb24iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1VCU1RJVFVUSU9OX1BFUk1JU1NJT04iCisgdHlwZT0iamF2YS5pby5TZXJpYWxpemFibGVQZXJtaXNzaW9uIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRDX0FSUkFZIgorIHR5cGU9ImJ5dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjExNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUQ19CQVNFIgorIHR5cGU9ImJ5dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjExMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUQ19CTE9DS0RBVEEiCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTE5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRDX0JMT0NLREFUQUxPTkciCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRDX0NMQVNTIgorIHR5cGU9ImJ5dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjExOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUQ19DTEFTU0RFU0MiCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTE0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRDX0VOREJMT0NLREFUQSIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVENfRU5VTSIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVENfRVhDRVBUSU9OIgorIHR5cGU9ImJ5dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUQ19MT05HU1RSSU5HIgorIHR5cGU9ImJ5dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUQ19NQVgiCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRDX05VTEwiCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRDX09CSkVDVCIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVENfUFJPWFlDTEFTU0RFU0MiCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRDX1JFRkVSRU5DRSIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVENfUkVTRVQiCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRDX1NUUklORyIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYmFzZVdpcmVIYW5kbGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4MjU3NTM2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iT2JqZWN0U3RyZWFtRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEuaW8uSU9FeGNlcHRpb24iCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik9iamVjdFN0cmVhbUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmlvLk9iamVjdFN0cmVhbUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik9iamVjdFN0cmVhbUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmlvLk9iamVjdFN0cmVhbUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJPYmplY3RTdHJlYW1GaWVsZCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ29tcGFyYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iT2JqZWN0U3RyZWFtRmllbGQiCisgdHlwZT0iamF2YS5pby5PYmplY3RTdHJlYW1GaWVsZCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNsIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik9iamVjdFN0cmVhbUZpZWxkIgorIHR5cGU9ImphdmEuaW8uT2JqZWN0U3RyZWFtRmllbGQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjbCIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0Oz8mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bnNoYXJlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNvbXBhcmVUbyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibyIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPZmZzZXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHlwZSIKKyByZXR1cm49ImphdmEubGFuZy5DbGFzcyZsdDs/Jmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlQ29kZSIKKyByZXR1cm49ImNoYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHlwZVN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNQcmltaXRpdmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzVW5zaGFyZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9mZnNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1ZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iT3B0aW9uYWxEYXRhRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEuaW8uT2JqZWN0U3RyZWFtRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iZW9mIgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsZW5ndGgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik91dHB1dFN0cmVhbSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uQ2xvc2VhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uRmx1c2hhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJPdXRwdXRTdHJlYW0iCisgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmbHVzaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib25lQnl0ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJPdXRwdXRTdHJlYW1Xcml0ZXIiCisgZXh0ZW5kcz0iamF2YS5pby5Xcml0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJPdXRwdXRTdHJlYW1Xcml0ZXIiCisgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW1Xcml0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJPdXRwdXRTdHJlYW1Xcml0ZXIiCisgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW1Xcml0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iT3V0cHV0U3RyZWFtV3JpdGVyIgorIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtV3JpdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0IiB0eXBlPSJqYXZhLmlvLk91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3MiIHR5cGU9ImphdmEubmlvLmNoYXJzZXQuQ2hhcnNldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iT3V0cHV0U3RyZWFtV3JpdGVyIgorIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtV3JpdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0IiB0eXBlPSJqYXZhLmlvLk91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5jIiB0eXBlPSJqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXRFbmNvZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmbHVzaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVuY29kaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZiIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUGlwZWRJbnB1dFN0cmVhbSIKKyBleHRlbmRzPSJqYXZhLmlvLklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGlwZWRJbnB1dFN0cmVhbSIKKyB0eXBlPSJqYXZhLmlvLlBpcGVkSW5wdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQaXBlZElucHV0U3RyZWFtIgorIHR5cGU9ImphdmEuaW8uUGlwZWRJbnB1dFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dCIgdHlwZT0iamF2YS5pby5QaXBlZE91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjb25uZWN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJqYXZhLmlvLlBpcGVkT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlY2VpdmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9uZUJ5dGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJQSVBFX1NJWkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJ1ZmZlciIKKyB0eXBlPSJieXRlW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJvdXQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBpcGVkT3V0cHV0U3RyZWFtIgorIGV4dGVuZHM9ImphdmEuaW8uT3V0cHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGlwZWRPdXRwdXRTdHJlYW0iCisgdHlwZT0iamF2YS5pby5QaXBlZE91dHB1dFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBpcGVkT3V0cHV0U3RyZWFtIgorIHR5cGU9ImphdmEuaW8uUGlwZWRPdXRwdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJqYXZhLmlvLlBpcGVkSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY29ubmVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbSIgdHlwZT0iamF2YS5pby5QaXBlZElucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9uZUJ5dGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUGlwZWRSZWFkZXIiCisgZXh0ZW5kcz0iamF2YS5pby5SZWFkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQaXBlZFJlYWRlciIKKyB0eXBlPSJqYXZhLmlvLlBpcGVkUmVhZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGlwZWRSZWFkZXIiCisgdHlwZT0iamF2YS5pby5QaXBlZFJlYWRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dCIgdHlwZT0iamF2YS5pby5QaXBlZFdyaXRlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29ubmVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iamF2YS5pby5QaXBlZFdyaXRlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBpcGVkV3JpdGVyIgorIGV4dGVuZHM9ImphdmEuaW8uV3JpdGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGlwZWRXcml0ZXIiCisgdHlwZT0iamF2YS5pby5QaXBlZFdyaXRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBpcGVkV3JpdGVyIgorIHR5cGU9ImphdmEuaW8uUGlwZWRXcml0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJqYXZhLmlvLlBpcGVkUmVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb3NlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29ubmVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlYWRlciIgdHlwZT0iamF2YS5pby5QaXBlZFJlYWRlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmx1c2giCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUHJpbnRTdHJlYW0iCisgZXh0ZW5kcz0iamF2YS5pby5GaWx0ZXJPdXRwdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5BcHBlbmRhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uQ2xvc2VhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcmludFN0cmVhbSIKKyB0eXBlPSJqYXZhLmlvLlByaW50U3RyZWFtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0IiB0eXBlPSJqYXZhLmlvLk91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJpbnRTdHJlYW0iCisgdHlwZT0iamF2YS5pby5QcmludFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dCIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF1dG9mbHVzaCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJpbnRTdHJlYW0iCisgdHlwZT0iamF2YS5pby5QcmludFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dCIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF1dG9mbHVzaCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5jIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByaW50U3RyZWFtIgorIHR5cGU9ImphdmEuaW8uUHJpbnRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlIiB0eXBlPSJqYXZhLmlvLkZpbGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByaW50U3RyZWFtIgorIHR5cGU9ImphdmEuaW8uUHJpbnRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlIiB0eXBlPSJqYXZhLmlvLkZpbGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNzbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRmlsZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5VbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcmludFN0cmVhbSIKKyB0eXBlPSJqYXZhLmlvLlByaW50U3RyZWFtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByaW50U3RyZWFtIgorIHR5cGU9ImphdmEuaW8uUHJpbnRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3NuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJGaWxlTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJqYXZhLmlvLlByaW50U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZCIKKyByZXR1cm49ImphdmEuaW8uUHJpbnRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNzcSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJqYXZhLmlvLlByaW50U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjc3EiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrRXJyb3IiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdCIKKyByZXR1cm49ImphdmEuaW8uUHJpbnRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcm1hdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJncyIgdHlwZT0iamF2YS5sYW5nLk9iamVjdC4uLiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXQiCisgcmV0dXJuPSJqYXZhLmlvLlByaW50U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsIiB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZ3MiIHR5cGU9ImphdmEubGFuZy5PYmplY3QuLi4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJpbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGFyQXJyYXkiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmludCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByaW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZG51bSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByaW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZm51bSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJpbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnVtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJpbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsbnVtIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByaW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByaW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJpbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJib29sIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByaW50ZiIKKyByZXR1cm49ImphdmEuaW8uUHJpbnRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcm1hdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJncyIgdHlwZT0iamF2YS5sYW5nLk9iamVjdC4uLiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmludGYiCisgcmV0dXJuPSJqYXZhLmlvLlByaW50U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsIiB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZ3MiIHR5cGU9ImphdmEubGFuZy5PYmplY3QuLi4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJpbnRsbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJpbnRsbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYXJBcnJheSIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByaW50bG4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaCIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmludGxuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZG51bSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByaW50bG4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmbnVtIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmludGxuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW51bSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByaW50bG4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsbnVtIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByaW50bG4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJpbnRsbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByaW50bG4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJib29sIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVycm9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQcmludFdyaXRlciIKKyBleHRlbmRzPSJqYXZhLmlvLldyaXRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByaW50V3JpdGVyIgorIHR5cGU9ImphdmEuaW8uUHJpbnRXcml0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcmludFdyaXRlciIKKyB0eXBlPSJqYXZhLmlvLlByaW50V3JpdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0IiB0eXBlPSJqYXZhLmlvLk91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0b2ZsdXNoIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcmludFdyaXRlciIKKyB0eXBlPSJqYXZhLmlvLlByaW50V3JpdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id3IiIHR5cGU9ImphdmEuaW8uV3JpdGVyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcmludFdyaXRlciIKKyB0eXBlPSJqYXZhLmlvLlByaW50V3JpdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id3IiIHR5cGU9ImphdmEuaW8uV3JpdGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdXRvZmx1c2giIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByaW50V3JpdGVyIgorIHR5cGU9ImphdmEuaW8uUHJpbnRXcml0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlIiB0eXBlPSJqYXZhLmlvLkZpbGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByaW50V3JpdGVyIgorIHR5cGU9ImphdmEuaW8uUHJpbnRXcml0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlIiB0eXBlPSJqYXZhLmlvLkZpbGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNzbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRmlsZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5VbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcmludFdyaXRlciIKKyB0eXBlPSJqYXZhLmlvLlByaW50V3JpdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByaW50V3JpdGVyIgorIHR5cGU9ImphdmEuaW8uUHJpbnRXcml0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3NuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJGaWxlTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjaGVja0Vycm9yIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmx1c2giCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdCIKKyByZXR1cm49ImphdmEuaW8uUHJpbnRXcml0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcm1hdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJncyIgdHlwZT0iamF2YS5sYW5nLk9iamVjdC4uLiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXQiCisgcmV0dXJuPSJqYXZhLmlvLlByaW50V3JpdGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsIiB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZ3MiIHR5cGU9ImphdmEubGFuZy5PYmplY3QuLi4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJpbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGFyQXJyYXkiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmludCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByaW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZG51bSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByaW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZm51bSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJpbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnVtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJpbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsbnVtIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByaW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByaW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByaW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYm9vbCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmludGYiCisgcmV0dXJuPSJqYXZhLmlvLlByaW50V3JpdGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZ3MiIHR5cGU9ImphdmEubGFuZy5PYmplY3QuLi4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJpbnRmIgorIHJldHVybj0iamF2YS5pby5QcmludFdyaXRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibCIgdHlwZT0iamF2YS51dGlsLkxvY2FsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9ybWF0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcmdzIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Li4uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByaW50bG4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByaW50bG4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGFyQXJyYXkiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmludGxuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2giIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJpbnRsbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRudW0iIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmludGxuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZm51bSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJpbnRsbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmludGxuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG51bSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmludGxuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByaW50bG4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJpbnRsbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJvb2wiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RXJyb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0ib3V0IgorIHR5cGU9ImphdmEuaW8uV3JpdGVyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlB1c2hiYWNrSW5wdXRTdHJlYW0iCisgZXh0ZW5kcz0iamF2YS5pby5GaWx0ZXJJbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlB1c2hiYWNrSW5wdXRTdHJlYW0iCisgdHlwZT0iamF2YS5pby5QdXNoYmFja0lucHV0U3RyZWFtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlB1c2hiYWNrSW5wdXRTdHJlYW0iCisgdHlwZT0iamF2YS5pby5QdXNoYmFja0lucHV0U3RyZWFtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InVucmVhZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bnJlYWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bnJlYWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvbmVCeXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iYnVmIgorIHR5cGU9ImJ5dGVbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InBvcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUHVzaGJhY2tSZWFkZXIiCisgZXh0ZW5kcz0iamF2YS5pby5GaWx0ZXJSZWFkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQdXNoYmFja1JlYWRlciIKKyB0eXBlPSJqYXZhLmlvLlB1c2hiYWNrUmVhZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9ImphdmEuaW8uUmVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQdXNoYmFja1JlYWRlciIKKyB0eXBlPSJqYXZhLmlvLlB1c2hiYWNrUmVhZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9ImphdmEuaW8uUmVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJ1bnJlYWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5yZWFkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5yZWFkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib25lQ2hhciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSYW5kb21BY2Nlc3NGaWxlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uQ2xvc2VhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uRGF0YUlucHV0Ij4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uRGF0YU91dHB1dCI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmFuZG9tQWNjZXNzRmlsZSIKKyB0eXBlPSJqYXZhLmlvLlJhbmRvbUFjY2Vzc0ZpbGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlIiB0eXBlPSJqYXZhLmlvLkZpbGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJhbmRvbUFjY2Vzc0ZpbGUiCisgdHlwZT0iamF2YS5pby5SYW5kb21BY2Nlc3NGaWxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoYW5uZWwiCisgcmV0dXJuPSJqYXZhLm5pby5jaGFubmVscy5GaWxlQ2hhbm5lbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RkQiCisgcmV0dXJuPSJqYXZhLmlvLkZpbGVEZXNjcmlwdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpbGVQb2ludGVyIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGVuZ3RoIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZEJvb2xlYW4iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRCeXRlIgorIHJldHVybj0iYnl0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkQ2hhciIKKyByZXR1cm49ImNoYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZERvdWJsZSIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkRmxvYXQiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkRnVsbHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkRnVsbHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZEludCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkTGluZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZExvbmciCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRTaG9ydCIKKyByZXR1cm49InNob3J0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRVVEYiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRVbnNpZ25lZEJ5dGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZFVuc2lnbmVkU2hvcnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VlayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvcyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TGVuZ3RoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3TGVuZ3RoIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJza2lwQnl0ZXMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9uZUJ5dGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVCb29sZWFuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlQnl0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlQnl0ZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0ciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVDaGFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVDaGFycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZURvdWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlRmxvYXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlSW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVMb25nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlU2hvcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVVURiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSZWFkZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLkNsb3NlYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuUmVhZGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlYWRlciIKKyB0eXBlPSJqYXZhLmlvLlJlYWRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlYWRlciIKKyB0eXBlPSJqYXZhLmlvLlJlYWRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2siIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWFyayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlYWRMaW1pdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYXJrU3VwcG9ydGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWYiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWYiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iamF2YS5uaW8uQ2hhckJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNraXAiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJsb2NrIgorIHR5cGU9ImphdmEubGFuZy5PYmplY3QiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2VxdWVuY2VJbnB1dFN0cmVhbSIKKyBleHRlbmRzPSJqYXZhLmlvLklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2VxdWVuY2VJbnB1dFN0cmVhbSIKKyB0eXBlPSJqYXZhLmlvLlNlcXVlbmNlSW5wdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzMSIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iczIiIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNlcXVlbmNlSW5wdXRTdHJlYW0iCisgdHlwZT0iamF2YS5pby5TZXF1ZW5jZUlucHV0U3RyZWFtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZSIgdHlwZT0iamF2YS51dGlsLkVudW1lcmF0aW9uJmx0Oz8gZXh0ZW5kcyBqYXZhLmlvLklucHV0U3RyZWFtJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InJlYWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJTZXJpYWxpemFibGUiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iU2VyaWFsaXphYmxlUGVybWlzc2lvbiIKKyBleHRlbmRzPSJqYXZhLnNlY3VyaXR5LkJhc2ljUGVybWlzc2lvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2VyaWFsaXphYmxlUGVybWlzc2lvbiIKKyB0eXBlPSJqYXZhLmlvLlNlcmlhbGl6YWJsZVBlcm1pc3Npb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwZXJtaXNzaW9uTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2VyaWFsaXphYmxlUGVybWlzc2lvbiIKKyB0eXBlPSJqYXZhLmlvLlNlcmlhbGl6YWJsZVBlcm1pc3Npb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb25zIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3RyZWFtQ29ycnVwdGVkRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEuaW8uT2JqZWN0U3RyZWFtRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RyZWFtQ29ycnVwdGVkRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuaW8uU3RyZWFtQ29ycnVwdGVkRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RyZWFtQ29ycnVwdGVkRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuaW8uU3RyZWFtQ29ycnVwdGVkRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlN0cmVhbVRva2VuaXplciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RyZWFtVG9rZW5pemVyIgorIHR5cGU9ImphdmEuaW8uU3RyZWFtVG9rZW5pemVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpcyIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RyZWFtVG9rZW5pemVyIgorIHR5cGU9ImphdmEuaW8uU3RyZWFtVG9rZW5pemVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iamF2YS5pby5SZWFkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjb21tZW50Q2hhciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW9sSXNTaWduaWZpY2FudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWciIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGluZW5vIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxvd2VyQ2FzZU1vZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmbGFnIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHRUb2tlbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3JkaW5hcnlDaGFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2giIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcmRpbmFyeUNoYXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG93IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VOdW1iZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXNoQmFjayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVvdGVDaGFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2giIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldFN5bnRheCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2xhc2hTbGFzaENvbW1lbnRzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzbGFzaFN0YXJDb21tZW50cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWciIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id2hpdGVzcGFjZUNoYXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG93IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id29yZENoYXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG93IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJUVF9FT0YiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUVF9FT0wiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUVF9OVU1CRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUVF9XT1JEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibnZhbCIKKyB0eXBlPSJkb3VibGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdmFsIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0dHlwZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3RyaW5nQnVmZmVySW5wdXRTdHJlYW0iCisgZXh0ZW5kcz0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RyaW5nQnVmZmVySW5wdXRTdHJlYW0iCisgdHlwZT0iamF2YS5pby5TdHJpbmdCdWZmZXJJbnB1dFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0ciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InJlYWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImJ1ZmZlciIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY291bnQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icG9zIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTdHJpbmdSZWFkZXIiCisgZXh0ZW5kcz0iamF2YS5pby5SZWFkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdHJpbmdSZWFkZXIiCisgdHlwZT0iamF2YS5pby5TdHJpbmdSZWFkZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3RyaW5nV3JpdGVyIgorIGV4dGVuZHM9ImphdmEuaW8uV3JpdGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RyaW5nV3JpdGVyIgorIHR5cGU9ImphdmEuaW8uU3RyaW5nV3JpdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RyaW5nV3JpdGVyIgorIHR5cGU9ImphdmEuaW8uU3RyaW5nV3JpdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5pdGlhbFNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb3NlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmx1c2giCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJ1ZmZlciIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYnVmIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlN5bmNGYWlsZWRFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5pby5JT0V4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN5bmNGYWlsZWRFeGNlcHRpb24iCisgdHlwZT0iamF2YS5pby5TeW5jRmFpbGVkRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlVURkRhdGFGb3JtYXRFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5pby5JT0V4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlVURkRhdGFGb3JtYXRFeGNlcHRpb24iCisgdHlwZT0iamF2YS5pby5VVEZEYXRhRm9ybWF0RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVVRGRGF0YUZvcm1hdEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmlvLlVURkRhdGFGb3JtYXRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmlvLklPRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmlvLlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuaW8uVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJXcml0ZUFib3J0ZWRFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5pby5PYmplY3RTdHJlYW1FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJXcml0ZUFib3J0ZWRFeGNlcHRpb24iCisgdHlwZT0iamF2YS5pby5Xcml0ZUFib3J0ZWRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyb290Q2F1c2UiIHR5cGU9ImphdmEubGFuZy5FeGNlcHRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9ImRldGFpbCIKKyB0eXBlPSJqYXZhLmxhbmcuRXhjZXB0aW9uIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IldyaXRlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5BcHBlbmRhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uQ2xvc2VhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uRmx1c2hhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJXcml0ZXIiCisgdHlwZT0iamF2YS5pby5Xcml0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJXcml0ZXIiCisgdHlwZT0iamF2YS5pby5Xcml0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NrIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYXBwZW5kIgorIHJldHVybj0iamF2YS5pby5Xcml0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZCIKKyByZXR1cm49ImphdmEuaW8uV3JpdGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjc3EiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZCIKKyByZXR1cm49ImphdmEuaW8uV3JpdGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjc3EiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmx1c2giCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWYiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib25lQ2hhciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0ciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImxvY2siCisgdHlwZT0iamF2YS5sYW5nLk9iamVjdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImphdmEubGFuZyIKKz4KKzxjbGFzcyBuYW1lPSJBYnN0cmFjdE1ldGhvZEVycm9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5JbmNvbXBhdGlibGVDbGFzc0NoYW5nZUVycm9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzdHJhY3RNZXRob2RFcnJvciIKKyB0eXBlPSJqYXZhLmxhbmcuQWJzdHJhY3RNZXRob2RFcnJvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFic3RyYWN0TWV0aG9kRXJyb3IiCisgdHlwZT0iamF2YS5sYW5nLkFic3RyYWN0TWV0aG9kRXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQWJzdHJhY3RTdHJpbmdCdWlsZGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0iIgorPgorPG1ldGhvZCBuYW1lPSJjYXBhY2l0eSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGFyQXQiCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvZGVQb2ludEF0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvZGVQb2ludEJlZm9yZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb2RlUG9pbnRDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYmVnaW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmRJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuc3VyZUNhcGFjaXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWluIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hhcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0U3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbmRleE9mIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5kZXhPZiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3ViU3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxhc3RJbmRleE9mIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGFzdEluZGV4T2YiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN1YlN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib2Zmc2V0QnlDb2RlUG9pbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2RlUG9pbnRPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDaGFyQXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaCIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMZW5ndGgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdWJTZXF1ZW5jZSIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1YnN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3Vic3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idHJpbVRvU2l6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkFwcGVuZGFibGUiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJqYXZhLmxhbmcuQXBwZW5kYWJsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJqYXZhLmxhbmcuQXBwZW5kYWJsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjc3EiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZCIKKyByZXR1cm49ImphdmEubGFuZy5BcHBlbmRhYmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNzcSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJBcml0aG1ldGljRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXJpdGhtZXRpY0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmxhbmcuQXJpdGhtZXRpY0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFyaXRobWV0aWNFeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLkFyaXRobWV0aWNFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5JbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5BcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLkFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmxhbmcuQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFycmF5U3RvcmVFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBcnJheVN0b3JlRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5BcnJheVN0b3JlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXJyYXlTdG9yZUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmxhbmcuQXJyYXlTdG9yZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBc3NlcnRpb25FcnJvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRXJyb3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBc3NlcnRpb25FcnJvciIKKyB0eXBlPSJqYXZhLmxhbmcuQXNzZXJ0aW9uRXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBc3NlcnRpb25FcnJvciIKKyB0eXBlPSJqYXZhLmxhbmcuQXNzZXJ0aW9uRXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBc3NlcnRpb25FcnJvciIKKyB0eXBlPSJqYXZhLmxhbmcuQXNzZXJ0aW9uRXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBc3NlcnRpb25FcnJvciIKKyB0eXBlPSJqYXZhLmxhbmcuQXNzZXJ0aW9uRXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBc3NlcnRpb25FcnJvciIKKyB0eXBlPSJqYXZhLmxhbmcuQXNzZXJ0aW9uRXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFzc2VydGlvbkVycm9yIgorIHR5cGU9ImphdmEubGFuZy5Bc3NlcnRpb25FcnJvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFzc2VydGlvbkVycm9yIgorIHR5cGU9ImphdmEubGFuZy5Bc3NlcnRpb25FcnJvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBc3NlcnRpb25FcnJvciIKKyB0eXBlPSJqYXZhLmxhbmcuQXNzZXJ0aW9uRXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCb29sZWFuIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNvbXBhcmFibGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJvb2xlYW4iCisgdHlwZT0iamF2YS5sYW5nLkJvb2xlYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJvb2xlYW4iCisgdHlwZT0iamF2YS5sYW5nLkJvb2xlYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImJvb2xlYW5WYWx1ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcGFyZVRvIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGF0IiB0eXBlPSJqYXZhLmxhbmcuQm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCb29sZWFuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VCb29sZWFuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iamF2YS5sYW5nLkJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJqYXZhLmxhbmcuQm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iRkFMU0UiCisgdHlwZT0iamF2YS5sYW5nLkJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFJVRSIKKyB0eXBlPSJqYXZhLmxhbmcuQm9vbGVhbiIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFIgorIHR5cGU9ImphdmEubGFuZy5DbGFzcyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQnl0ZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuTnVtYmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5Db21wYXJhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCeXRlIgorIHR5cGU9ImphdmEubGFuZy5CeXRlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJ5dGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJ5dGUiCisgdHlwZT0iamF2YS5sYW5nLkJ5dGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik51bWJlckZvcm1hdEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLk51bWJlckZvcm1hdEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNvbXBhcmVUbyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuQnl0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWNvZGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuQnl0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik51bWJlckZvcm1hdEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLk51bWJlckZvcm1hdEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkb3VibGVWYWx1ZSIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmbG9hdFZhbHVlIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW50VmFsdWUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9uZ1ZhbHVlIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZUJ5dGUiCisgcmV0dXJuPSJieXRlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTnVtYmVyRm9ybWF0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuTnVtYmVyRm9ybWF0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlQnl0ZSIKKyByZXR1cm49ImJ5dGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyYWRpeCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOdW1iZXJGb3JtYXRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5OdW1iZXJGb3JtYXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJieXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJqYXZhLmxhbmcuQnl0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik51bWJlckZvcm1hdEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLk51bWJlckZvcm1hdEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iamF2YS5sYW5nLkJ5dGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyYWRpeCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOdW1iZXJGb3JtYXRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5OdW1iZXJGb3JtYXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImphdmEubGFuZy5CeXRlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImJ5dGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJNQVhfVkFMVUUiCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTI3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1JTl9WQUxVRSIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMTI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNJWkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEUiCisgdHlwZT0iamF2YS5sYW5nLkNsYXNzIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ2hhclNlcXVlbmNlIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY2hhckF0IgorIHJldHVybj0iY2hhciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxlbmd0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1YlNlcXVlbmNlIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ2hhcmFjdGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNvbXBhcmFibGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNoYXJhY3RlciIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjaGFyQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZVBvaW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hhclZhbHVlIgorIHJldHVybj0iY2hhciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb2RlUG9pbnRBdCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZXEiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29kZVBvaW50QXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VxIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29kZVBvaW50QXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VxIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxpbWl0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29kZVBvaW50QmVmb3JlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlcSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb2RlUG9pbnRCZWZvcmUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VxIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29kZVBvaW50QmVmb3JlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlcSIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvZGVQb2ludENvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlcSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmVnaW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmRJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvZGVQb2ludENvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlcSIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlVG8iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlnaXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmFkaXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaWdpdCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2RlUG9pbnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmFkaXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JEaWdpdCIKKyByZXR1cm49ImNoYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlnaXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmFkaXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREaXJlY3Rpb25hbGl0eSIKKyByZXR1cm49ImJ5dGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREaXJlY3Rpb25hbGl0eSIKKyByZXR1cm49ImJ5dGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZVBvaW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TnVtZXJpY1ZhbHVlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TnVtZXJpY1ZhbHVlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvZGVQb2ludCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFR5cGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvZGVQb2ludCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRGVmaW5lZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0RlZmluZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvZGVQb2ludCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRGlnaXQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNEaWdpdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZVBvaW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNIaWdoU3Vycm9nYXRlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaCIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0lTT0NvbnRyb2wiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNJU09Db250cm9sIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNJZGVudGlmaWVySWdub3JhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzSWRlbnRpZmllcklnbm9yYWJsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZVBvaW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNKYXZhSWRlbnRpZmllclBhcnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNKYXZhSWRlbnRpZmllclBhcnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvZGVQb2ludCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzSmF2YUlkZW50aWZpZXJTdGFydCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0phdmFJZGVudGlmaWVyU3RhcnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvZGVQb2ludCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzSmF2YUxldHRlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzSmF2YUxldHRlck9yRGlnaXQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0xldHRlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0xldHRlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZVBvaW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNMZXR0ZXJPckRpZ2l0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTGV0dGVyT3JEaWdpdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZVBvaW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNMb3dTdXJyb2dhdGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTG93ZXJDYXNlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTG93ZXJDYXNlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2RlUG9pbnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc01pcnJvcmVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTWlycm9yZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvZGVQb2ludCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU3BhY2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1NwYWNlQ2hhciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1NwYWNlQ2hhciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZVBvaW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTdXBwbGVtZW50YXJ5Q29kZVBvaW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2RlUG9pbnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1N1cnJvZ2F0ZVBhaXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhpZ2giIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvdyIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1RpdGxlQ2FzZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1RpdGxlQ2FzZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZVBvaW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNVbmljb2RlSWRlbnRpZmllclBhcnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNVbmljb2RlSWRlbnRpZmllclBhcnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvZGVQb2ludCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzVW5pY29kZUlkZW50aWZpZXJTdGFydCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1VuaWNvZGVJZGVudGlmaWVyU3RhcnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvZGVQb2ludCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzVXBwZXJDYXNlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzVXBwZXJDYXNlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2RlUG9pbnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1ZhbGlkQ29kZVBvaW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2RlUG9pbnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1doaXRlc3BhY2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNXaGl0ZXNwYWNlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2RlUG9pbnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvZmZzZXRCeUNvZGVQb2ludHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VxIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2RlUG9pbnRPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvZmZzZXRCeUNvZGVQb2ludHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VxIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvZGVQb2ludE9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJldmVyc2VCeXRlcyIKKyByZXR1cm49ImNoYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b0NoYXJzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvZGVQb2ludCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkc3QiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHN0SW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b0NoYXJzIgorIHJldHVybj0iY2hhcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvZGVQb2ludCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvQ29kZVBvaW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhpZ2giIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvdyIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b0xvd2VyQ2FzZSIKKyByZXR1cm49ImNoYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b0xvd2VyQ2FzZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2RlUG9pbnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9UaXRsZUNhc2UiCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9UaXRsZUNhc2UiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZVBvaW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9VcHBlckNhc2UiCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9VcHBlckNhc2UiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZVBvaW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyYWN0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNPTUJJTklOR19TUEFDSU5HX01BUksiCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05ORUNUT1JfUFVOQ1RVQVRJT04iCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVFJPTCIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDVVJSRU5DWV9TWU1CT0wiCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFTSF9QVU5DVFVBVElPTiIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUNJTUFMX0RJR0lUX05VTUJFUiIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRJUkVDVElPTkFMSVRZX0FSQUJJQ19OVU1CRVIiCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJESVJFQ1RJT05BTElUWV9CT1VOREFSWV9ORVVUUkFMIgorIHR5cGU9ImJ5dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRElSRUNUSU9OQUxJVFlfQ09NTU9OX05VTUJFUl9TRVBBUkFUT1IiCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJESVJFQ1RJT05BTElUWV9FVVJPUEVBTl9OVU1CRVIiCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJESVJFQ1RJT05BTElUWV9FVVJPUEVBTl9OVU1CRVJfU0VQQVJBVE9SIgorIHR5cGU9ImJ5dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRElSRUNUSU9OQUxJVFlfRVVST1BFQU5fTlVNQkVSX1RFUk1JTkFUT1IiCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJESVJFQ1RJT05BTElUWV9MRUZUX1RPX1JJR0hUIgorIHR5cGU9ImJ5dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRElSRUNUSU9OQUxJVFlfTEVGVF9UT19SSUdIVF9FTUJFRERJTkciCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRElSRUNUSU9OQUxJVFlfTEVGVF9UT19SSUdIVF9PVkVSUklERSIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJESVJFQ1RJT05BTElUWV9OT05TUEFDSU5HX01BUksiCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJESVJFQ1RJT05BTElUWV9PVEhFUl9ORVVUUkFMUyIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJESVJFQ1RJT05BTElUWV9QQVJBR1JBUEhfU0VQQVJBVE9SIgorIHR5cGU9ImJ5dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRJUkVDVElPTkFMSVRZX1BPUF9ESVJFQ1RJT05BTF9GT1JNQVQiCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRElSRUNUSU9OQUxJVFlfUklHSFRfVE9fTEVGVCIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRJUkVDVElPTkFMSVRZX1JJR0hUX1RPX0xFRlRfQVJBQklDIgorIHR5cGU9ImJ5dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRElSRUNUSU9OQUxJVFlfUklHSFRfVE9fTEVGVF9FTUJFRERJTkciCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRElSRUNUSU9OQUxJVFlfUklHSFRfVE9fTEVGVF9PVkVSUklERSIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJESVJFQ1RJT05BTElUWV9TRUdNRU5UX1NFUEFSQVRPUiIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJESVJFQ1RJT05BTElUWV9VTkRFRklORUQiCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRElSRUNUSU9OQUxJVFlfV0hJVEVTUEFDRSIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFTkNMT1NJTkdfTUFSSyIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVORF9QVU5DVFVBVElPTiIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGSU5BTF9RVU9URV9QVU5DVFVBVElPTiIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT1JNQVQiCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU5JVElBTF9RVU9URV9QVU5DVFVBVElPTiIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMRVRURVJfTlVNQkVSIgorIHR5cGU9ImJ5dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxJTkVfU0VQQVJBVE9SIgorIHR5cGU9ImJ5dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxPV0VSQ0FTRV9MRVRURVIiCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNQVRIX1NZTUJPTCIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNQVhfQ09ERV9QT0lOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjExMTQxMTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUFYX0hJR0hfU1VSUk9HQVRFIgorIHR5cGU9ImNoYXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjU2MzE5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1BWF9MT1dfU1VSUk9HQVRFIgorIHR5cGU9ImNoYXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjU3MzQzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1BWF9SQURJWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1BWF9TVVJST0dBVEUiCisgdHlwZT0iY2hhciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTczNDMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUFYX1ZBTFVFIgorIHR5cGU9ImNoYXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjY1NTM1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1JTl9DT0RFX1BPSU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNSU5fSElHSF9TVVJST0dBVEUiCisgdHlwZT0iY2hhciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTUyOTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUlOX0xPV19TVVJST0dBVEUiCisgdHlwZT0iY2hhciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTYzMjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUlOX1JBRElYIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNSU5fU1VQUExFTUVOVEFSWV9DT0RFX1BPSU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjU1MzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUlOX1NVUlJPR0FURSIKKyB0eXBlPSJjaGFyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1NTI5NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNSU5fVkFMVUUiCisgdHlwZT0iY2hhciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNT0RJRklFUl9MRVRURVIiCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNT0RJRklFUl9TWU1CT0wiCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTk9OX1NQQUNJTkdfTUFSSyIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9USEVSX0xFVFRFUiIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9USEVSX05VTUJFUiIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPVEhFUl9QVU5DVFVBVElPTiIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPVEhFUl9TWU1CT0wiCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEFSQUdSQVBIX1NFUEFSQVRPUiIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQUklWQVRFX1VTRSIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTSVpFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1BBQ0VfU0VQQVJBVE9SIgorIHR5cGU9ImJ5dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNUQVJUX1BVTkNUVUFUSU9OIgorIHR5cGU9ImJ5dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNVUlJPR0FURSIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUSVRMRUNBU0VfTEVUVEVSIgorIHR5cGU9ImJ5dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVU5BU1NJR05FRCIKKyB0eXBlPSJieXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVQUEVSQ0FTRV9MRVRURVIiCisgdHlwZT0iYnl0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2hhcmFjdGVyLlN1YnNldCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDaGFyYWN0ZXIuU3Vic2V0IgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuU3Vic2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZXF1YWxzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzaENvZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIGV4dGVuZHM9ImphdmEubGFuZy5DaGFyYWN0ZXIuU3Vic2V0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJmb3JOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJibG9ja05hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib2YiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9mIgorIHJldHVybj0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZVBvaW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBRUdFQU5fTlVNQkVSUyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBTFBIQUJFVElDX1BSRVNFTlRBVElPTl9GT1JNUyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBUkFCSUMiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVJBQklDX1BSRVNFTlRBVElPTl9GT1JNU19BIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFSQUJJQ19QUkVTRU5UQVRJT05fRk9STVNfQiIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBUk1FTklBTiIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBUlJPV1MiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQkFTSUNfTEFUSU4iCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQkVOR0FMSSIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJCTE9DS19FTEVNRU5UUyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJCT1BPTU9GTyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJCT1BPTU9GT19FWFRFTkRFRCIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJCT1hfRFJBV0lORyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJCUkFJTExFX1BBVFRFUk5TIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJVSElEIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJZWkFOVElORV9NVVNJQ0FMX1NZTUJPTFMiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hFUk9LRUUiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0pLX0NPTVBBVElCSUxJVFkiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0pLX0NPTVBBVElCSUxJVFlfRk9STVMiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0pLX0NPTVBBVElCSUxJVFlfSURFT0dSQVBIUyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDSktfQ09NUEFUSUJJTElUWV9JREVPR1JBUEhTX1NVUFBMRU1FTlQiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0pLX1JBRElDQUxTX1NVUFBMRU1FTlQiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0pLX1NZTUJPTFNfQU5EX1BVTkNUVUFUSU9OIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNKS19VTklGSUVEX0lERU9HUkFQSFMiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0pLX1VOSUZJRURfSURFT0dSQVBIU19FWFRFTlNJT05fQSIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDSktfVU5JRklFRF9JREVPR1JBUEhTX0VYVEVOU0lPTl9CIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTUJJTklOR19ESUFDUklUSUNBTF9NQVJLUyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT01CSU5JTkdfSEFMRl9NQVJLUyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT01CSU5JTkdfTUFSS1NfRk9SX1NZTUJPTFMiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVFJPTF9QSUNUVVJFUyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDVVJSRU5DWV9TWU1CT0xTIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNZUFJJT1RfU1lMTEFCQVJZIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNZUklMTElDIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNZUklMTElDX1NVUFBMRU1FTlRBUlkiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVTRVJFVCIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERVZBTkFHQVJJIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRJTkdCQVRTIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVOQ0xPU0VEX0FMUEhBTlVNRVJJQ1MiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRU5DTE9TRURfQ0pLX0xFVFRFUlNfQU5EX01PTlRIUyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFVEhJT1BJQyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHRU5FUkFMX1BVTkNUVUFUSU9OIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdFT01FVFJJQ19TSEFQRVMiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0VPUkdJQU4iCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR09USElDIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdSRUVLIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdSRUVLX0VYVEVOREVEIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdVSkFSQVRJIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdVUk1VS0hJIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhBTEZXSURUSF9BTkRfRlVMTFdJRFRIX0ZPUk1TIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhBTkdVTF9DT01QQVRJQklMSVRZX0pBTU8iCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSEFOR1VMX0pBTU8iCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSEFOR1VMX1NZTExBQkxFUyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIQU5VTk9PIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhFQlJFVyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJISUdIX1BSSVZBVEVfVVNFX1NVUlJPR0FURVMiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSElHSF9TVVJST0dBVEVTIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhJUkFHQU5BIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklERU9HUkFQSElDX0RFU0NSSVBUSU9OX0NIQVJBQ1RFUlMiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSVBBX0VYVEVOU0lPTlMiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0FOQlVOIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktBTkdYSV9SQURJQ0FMUyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLQU5OQURBIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktBVEFLQU5BIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktBVEFLQU5BX1BIT05FVElDX0VYVEVOU0lPTlMiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0hNRVIiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0hNRVJfU1lNQk9MUyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMQU8iCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTEFUSU5fMV9TVVBQTEVNRU5UIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxBVElOX0VYVEVOREVEX0EiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTEFUSU5fRVhURU5ERURfQURESVRJT05BTCIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMQVRJTl9FWFRFTkRFRF9CIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxFVFRFUkxJS0VfU1lNQk9MUyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMSU1CVSIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMSU5FQVJfQl9JREVPR1JBTVMiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTElORUFSX0JfU1lMTEFCQVJZIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxPV19TVVJST0dBVEVTIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1BTEFZQUxBTSIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNQVRIRU1BVElDQUxfQUxQSEFOVU1FUklDX1NZTUJPTFMiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUFUSEVNQVRJQ0FMX09QRVJBVE9SUyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNSVNDRUxMQU5FT1VTX01BVEhFTUFUSUNBTF9TWU1CT0xTX0EiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUlTQ0VMTEFORU9VU19NQVRIRU1BVElDQUxfU1lNQk9MU19CIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1JU0NFTExBTkVPVVNfU1lNQk9MUyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNSVNDRUxMQU5FT1VTX1NZTUJPTFNfQU5EX0FSUk9XUyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNSVNDRUxMQU5FT1VTX1RFQ0hOSUNBTCIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNT05HT0xJQU4iCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTVVTSUNBTF9TWU1CT0xTIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1ZQU5NQVIiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTlVNQkVSX0ZPUk1TIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9HSEFNIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9MRF9JVEFMSUMiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BUSUNBTF9DSEFSQUNURVJfUkVDT0dOSVRJT04iCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1JJWUEiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1NNQU5ZQSIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQSE9ORVRJQ19FWFRFTlNJT05TIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBSSVZBVEVfVVNFX0FSRUEiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUlVOSUMiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0hBVklBTiIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTSU5IQUxBIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNNQUxMX0ZPUk1fVkFSSUFOVFMiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1BBQ0lOR19NT0RJRklFUl9MRVRURVJTIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNQRUNJQUxTIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNVUEVSU0NSSVBUU19BTkRfU1VCU0NSSVBUUyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVVBQTEVNRU5UQUxfQVJST1dTX0EiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1VQUExFTUVOVEFMX0FSUk9XU19CIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNVUFBMRU1FTlRBTF9NQVRIRU1BVElDQUxfT1BFUkFUT1JTIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNVUFBMRU1FTlRBUllfUFJJVkFURV9VU0VfQVJFQV9BIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNVUFBMRU1FTlRBUllfUFJJVkFURV9VU0VfQVJFQV9CIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNVUlJPR0FURVNfQVJFQSIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNZUklBQyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUQUdBTE9HIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRBR0JBTldBIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRBR1MiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEFJX0xFIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRBSV9YVUFOX0pJTkdfU1lNQk9MUyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUQU1JTCIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJURUxVR1UiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEhBQU5BIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRIQUkiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVElCRVRBTiIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVR0FSSVRJQyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVTklGSUVEX0NBTkFESUFOX0FCT1JJR0lOQUxfU1lMTEFCSUNTIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlZBUklBVElPTl9TRUxFQ1RPUlMiCisgdHlwZT0iamF2YS5sYW5nLkNoYXJhY3Rlci5Vbmljb2RlQmxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVkFSSUFUSU9OX1NFTEVDVE9SU19TVVBQTEVNRU5UIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IllJSklOR19IRVhBR1JBTV9TWU1CT0xTIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IllJX1JBRElDQUxTIgorIHR5cGU9ImphdmEubGFuZy5DaGFyYWN0ZXIuVW5pY29kZUJsb2NrIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IllJX1NZTExBQkxFUyIKKyB0eXBlPSJqYXZhLmxhbmcuQ2hhcmFjdGVyLlVuaWNvZGVCbG9jayIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2xhc3MiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcucmVmbGVjdC5Bbm5vdGF0ZWRFbGVtZW50Ij4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5yZWZsZWN0LkdlbmVyaWNEZWNsYXJhdGlvbiI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcucmVmbGVjdC5UeXBlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iYXNTdWJjbGFzcyIKKyByZXR1cm49ImphdmEubGFuZy5DbGFzcyZsdDs/IGV4dGVuZHMgVSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNsYXp6IiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7VSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2FzdCIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iaiIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZXNpcmVkQXNzZXJ0aW9uU3RhdHVzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvck5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2xhc3NOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGFzc05vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLkNsYXNzJmx0Oz8mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNsYXNzTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5pdGlhbGl6ZUJvb2xlYW4iIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNsYXNzTG9hZGVyIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NMb2FkZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNsYXNzTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5DbGFzc05vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFubm90YXRpb24iCisgcmV0dXJuPSJBIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbm5vdGF0aW9uQ2xhc3MiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDtBJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbm5vdGF0aW9ucyIKKyByZXR1cm49ImphdmEubGFuZy5hbm5vdGF0aW9uLkFubm90YXRpb25bXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDYW5vbmljYWxOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDbGFzc0xvYWRlciIKKyByZXR1cm49ImphdmEubGFuZy5DbGFzc0xvYWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDbGFzc2VzIgorIHJldHVybj0iamF2YS5sYW5nLkNsYXNzW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29tcG9uZW50VHlwZSIKKyByZXR1cm49ImphdmEubGFuZy5DbGFzcyZsdDs/Jmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbnN0cnVjdG9yIgorIHJldHVybj0iamF2YS5sYW5nLnJlZmxlY3QuQ29uc3RydWN0b3ImbHQ7VCZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlclR5cGVzIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MuLi4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaE1ldGhvZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLk5vU3VjaE1ldGhvZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU2VjdXJpdHlFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5TZWN1cml0eUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb25zdHJ1Y3RvcnMiCisgcmV0dXJuPSJqYXZhLmxhbmcucmVmbGVjdC5Db25zdHJ1Y3RvcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTZWN1cml0eUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLlNlY3VyaXR5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlY2xhcmVkQW5ub3RhdGlvbnMiCisgcmV0dXJuPSJqYXZhLmxhbmcuYW5ub3RhdGlvbi5Bbm5vdGF0aW9uW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWNsYXJlZENsYXNzZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2xhc3NbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU2VjdXJpdHlFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5TZWN1cml0eUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWNsYXJlZENvbnN0cnVjdG9yIgorIHJldHVybj0iamF2YS5sYW5nLnJlZmxlY3QuQ29uc3RydWN0b3ImbHQ7VCZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlclR5cGVzIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MuLi4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaE1ldGhvZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLk5vU3VjaE1ldGhvZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU2VjdXJpdHlFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5TZWN1cml0eUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWNsYXJlZENvbnN0cnVjdG9ycyIKKyByZXR1cm49ImphdmEubGFuZy5yZWZsZWN0LkNvbnN0cnVjdG9yW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNlY3VyaXR5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU2VjdXJpdHlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVjbGFyZWRGaWVsZCIKKyByZXR1cm49ImphdmEubGFuZy5yZWZsZWN0LkZpZWxkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hGaWVsZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLk5vU3VjaEZpZWxkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTZWN1cml0eUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLlNlY3VyaXR5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlY2xhcmVkRmllbGRzIgorIHJldHVybj0iamF2YS5sYW5nLnJlZmxlY3QuRmllbGRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU2VjdXJpdHlFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5TZWN1cml0eUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWNsYXJlZE1ldGhvZCIKKyByZXR1cm49ImphdmEubGFuZy5yZWZsZWN0Lk1ldGhvZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyVHlwZXMiIHR5cGU9ImphdmEubGFuZy5DbGFzcy4uLiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoTWV0aG9kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuTm9TdWNoTWV0aG9kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTZWN1cml0eUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLlNlY3VyaXR5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlY2xhcmVkTWV0aG9kcyIKKyByZXR1cm49ImphdmEubGFuZy5yZWZsZWN0Lk1ldGhvZFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTZWN1cml0eUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLlNlY3VyaXR5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlY2xhcmluZ0NsYXNzIgorIHJldHVybj0iamF2YS5sYW5nLkNsYXNzJmx0Oz8mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RW5jbG9zaW5nQ2xhc3MiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbmNsb3NpbmdDb25zdHJ1Y3RvciIKKyByZXR1cm49ImphdmEubGFuZy5yZWZsZWN0LkNvbnN0cnVjdG9yJmx0Oz8mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RW5jbG9zaW5nTWV0aG9kIgorIHJldHVybj0iamF2YS5sYW5nLnJlZmxlY3QuTWV0aG9kIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RW51bUNvbnN0YW50cyIKKyByZXR1cm49IlRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGaWVsZCIKKyByZXR1cm49ImphdmEubGFuZy5yZWZsZWN0LkZpZWxkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hGaWVsZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLk5vU3VjaEZpZWxkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTZWN1cml0eUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLlNlY3VyaXR5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpZWxkcyIKKyByZXR1cm49ImphdmEubGFuZy5yZWZsZWN0LkZpZWxkW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNlY3VyaXR5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU2VjdXJpdHlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R2VuZXJpY0ludGVyZmFjZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcucmVmbGVjdC5UeXBlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R2VuZXJpY1N1cGVyY2xhc3MiCisgcmV0dXJuPSJqYXZhLmxhbmcucmVmbGVjdC5UeXBlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEludGVyZmFjZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2xhc3NbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1ldGhvZCIKKyByZXR1cm49ImphdmEubGFuZy5yZWZsZWN0Lk1ldGhvZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyVHlwZXMiIHR5cGU9ImphdmEubGFuZy5DbGFzcy4uLiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoTWV0aG9kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuTm9TdWNoTWV0aG9kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTZWN1cml0eUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLlNlY3VyaXR5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1ldGhvZHMiCisgcmV0dXJuPSJqYXZhLmxhbmcucmVmbGVjdC5NZXRob2RbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU2VjdXJpdHlFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5TZWN1cml0eUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNb2RpZmllcnMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYWNrYWdlIgorIHJldHVybj0iamF2YS5sYW5nLlBhY2thZ2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvdGVjdGlvbkRvbWFpbiIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHJvdGVjdGlvbkRvbWFpbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXNvdXJjZSIKKyByZXR1cm49ImphdmEubmV0LlVSTCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXNvdXJjZUFzU3RyZWFtIgorIHJldHVybj0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaWduZXJzIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNpbXBsZU5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1cGVyY2xhc3MiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyBzdXBlciBUJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFR5cGVQYXJhbWV0ZXJzIgorIHJldHVybj0iamF2YS5sYW5nLnJlZmxlY3QuVHlwZVZhcmlhYmxlJmx0O2phdmEubGFuZy5DbGFzcyZsdDtUJmd0OyZndDtbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQW5ub3RhdGlvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNBbm5vdGF0aW9uUHJlc2VudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFubm90YXRpb25DbGFzcyIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0Oz8gZXh0ZW5kcyBqYXZhLmxhbmcuYW5ub3RhdGlvbi5Bbm5vdGF0aW9uJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0Fub255bW91c0NsYXNzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQXJyYXkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQXNzaWduYWJsZUZyb20iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNscyIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0Oz8mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRW51bSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNJbnN0YW5jZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzSW50ZXJmYWNlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTG9jYWxDbGFzcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNNZW1iZXJDbGFzcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNQcmltaXRpdmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTeW50aGV0aWMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld0luc3RhbmNlIgorIHJldHVybj0iVCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBY2Nlc3NFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ikluc3RhbnRpYXRpb25FeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnN0YW50aWF0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNsYXNzQ2FzdEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNsYXNzQ2FzdEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NDYXN0RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2xhc3NDYXN0RXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5DbGFzc0Nhc3RFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2xhc3NDaXJjdWxhcml0eUVycm9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5MaW5rYWdlRXJyb3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDbGFzc0NpcmN1bGFyaXR5RXJyb3IiCisgdHlwZT0iamF2YS5sYW5nLkNsYXNzQ2lyY3VsYXJpdHlFcnJvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNsYXNzQ2lyY3VsYXJpdHlFcnJvciIKKyB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NDaXJjdWxhcml0eUVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNsYXNzRm9ybWF0RXJyb3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkxpbmthZ2VFcnJvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNsYXNzRm9ybWF0RXJyb3IiCisgdHlwZT0iamF2YS5sYW5nLkNsYXNzRm9ybWF0RXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDbGFzc0Zvcm1hdEVycm9yIgorIHR5cGU9ImphdmEubGFuZy5DbGFzc0Zvcm1hdEVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNsYXNzTG9hZGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNsYXNzTG9hZGVyIgorIHR5cGU9ImphdmEubGFuZy5DbGFzc0xvYWRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNsYXNzTG9hZGVyIgorIHR5cGU9ImphdmEubGFuZy5DbGFzc0xvYWRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudExvYWRlciIgdHlwZT0iamF2YS5sYW5nLkNsYXNzTG9hZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xlYXJBc3NlcnRpb25TdGF0dXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlZmluZUNsYXNzIgorIHJldHVybj0iamF2YS5sYW5nLkNsYXNzJmx0Oz8mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2xhc3NSZXAiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGFzc0Zvcm1hdEVycm9yIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NGb3JtYXRFcnJvciI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWZpbmVDbGFzcyIKKyByZXR1cm49ImphdmEubGFuZy5DbGFzcyZsdDs/Jmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbGFzc05hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNsYXNzUmVwIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2xhc3NGb3JtYXRFcnJvciIgdHlwZT0iamF2YS5sYW5nLkNsYXNzRm9ybWF0RXJyb3IiPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVmaW5lQ2xhc3MiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2xhc3NOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjbGFzc1JlcCIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3RlY3Rpb25Eb21haW4iIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJvdGVjdGlvbkRvbWFpbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2xhc3NGb3JtYXRFcnJvciIgdHlwZT0iamF2YS5sYW5nLkNsYXNzRm9ybWF0RXJyb3IiPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVmaW5lQ2xhc3MiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdGVjdGlvbkRvbWFpbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Qcm90ZWN0aW9uRG9tYWluIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGFzc0Zvcm1hdEVycm9yIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NGb3JtYXRFcnJvciI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWZpbmVQYWNrYWdlIgorIHJldHVybj0iamF2YS5sYW5nLlBhY2thZ2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNwZWNUaXRsZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3BlY1ZlcnNpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNwZWNWZW5kb3IiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImltcGxUaXRsZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW1wbFZlcnNpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImltcGxWZW5kb3IiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlYWxCYXNlIiB0eXBlPSJqYXZhLm5ldC5VUkwiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaW5kQ2xhc3MiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNsYXNzTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkNsYXNzTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmluZExpYnJhcnkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaWJOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmRMb2FkZWRDbGFzcyIKKyByZXR1cm49ImphdmEubGFuZy5DbGFzcyZsdDs/Jmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbGFzc05hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmluZFJlc291cmNlIgorIHJldHVybj0iamF2YS5uZXQuVVJMIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmRSZXNvdXJjZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuRW51bWVyYXRpb24mbHQ7amF2YS5uZXQuVVJMJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmluZFN5c3RlbUNsYXNzIgorIHJldHVybj0iamF2YS5sYW5nLkNsYXNzJmx0Oz8mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNsYXNzTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkNsYXNzTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFja2FnZSIKKyByZXR1cm49ImphdmEubGFuZy5QYWNrYWdlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhY2thZ2VzIgorIHJldHVybj0iamF2YS5sYW5nLlBhY2thZ2VbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJlbnQiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2xhc3NMb2FkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXNvdXJjZSIKKyByZXR1cm49ImphdmEubmV0LlVSTCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXNvdXJjZUFzU3RyZWFtIgorIHJldHVybj0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXNvdXJjZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuRW51bWVyYXRpb24mbHQ7amF2YS5uZXQuVVJMJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3lzdGVtQ2xhc3NMb2FkZXIiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2xhc3NMb2FkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTeXN0ZW1SZXNvdXJjZSIKKyByZXR1cm49ImphdmEubmV0LlVSTCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN5c3RlbVJlc291cmNlQXNTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc05hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3lzdGVtUmVzb3VyY2VzIgorIHJldHVybj0iamF2YS51dGlsLkVudW1lcmF0aW9uJmx0O2phdmEubmV0LlVSTCZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZENsYXNzIgorIHJldHVybj0iamF2YS5sYW5nLkNsYXNzJmx0Oz8mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbGFzc05hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNsYXNzTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5DbGFzc05vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvYWRDbGFzcyIKKyByZXR1cm49ImphdmEubGFuZy5DbGFzcyZsdDs/Jmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2xhc3NOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvbHZlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGFzc05vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNvbHZlQ2xhc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNsYXp6IiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2xhc3NBc3NlcnRpb25TdGF0dXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5hYmxlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERlZmF1bHRBc3NlcnRpb25TdGF0dXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmFibGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGFja2FnZUFzc2VydGlvblN0YXR1cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmFibGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2lnbmVycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0Oz8mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzaWduZXJzIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNsYXNzTm90Rm91bmRFeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLkNsYXNzTm90Rm91bmRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDbGFzc05vdEZvdW5kRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5DbGFzc05vdEZvdW5kRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0RXhjZXB0aW9uIgorIHJldHVybj0iamF2YS5sYW5nLlRocm93YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLkNsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLkNsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDbG9uZWFibGUiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkNvbXBhcmFibGUiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlVG8iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYW5vdGhlciIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ29tcGlsZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNvbW1hbmQiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNtZCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21waWxlQ2xhc3MiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNsYXNzVG9Db21waWxlIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcGlsZUNsYXNzZXMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWVSb290IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpc2FibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5hYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRlcHJlY2F0ZWQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuYW5ub3RhdGlvbi5Bbm5vdGF0aW9uIj4KKzwvaW1wbGVtZW50cz4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRG91YmxlIgorIGV4dGVuZHM9ImphdmEubGFuZy5OdW1iZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNvbXBhcmFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRvdWJsZSIKKyB0eXBlPSJqYXZhLmxhbmcuRG91YmxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRG91YmxlIgorIHR5cGU9ImphdmEubGFuZy5Eb3VibGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik51bWJlckZvcm1hdEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLk51bWJlckZvcm1hdEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNvbXBhcmUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZG91YmxlMSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkb3VibGUyIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcGFyZVRvIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5Eb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZG91YmxlVG9Mb25nQml0cyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRvdWJsZVRvUmF3TG9uZ0JpdHMiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkb3VibGVWYWx1ZSIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmbG9hdFZhbHVlIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW50VmFsdWUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNJbmZpbml0ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNJbmZpbml0ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTmFOIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc05hTiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvbmdCaXRzVG9Eb3VibGUiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiaXRzIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvbmdWYWx1ZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VEb3VibGUiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOdW1iZXJGb3JtYXRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5OdW1iZXJGb3JtYXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9IZXhTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJqYXZhLmxhbmcuRG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTnVtYmVyRm9ybWF0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuTnVtYmVyRm9ybWF0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJqYXZhLmxhbmcuRG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Ik1BWF9WQUxVRSIKKyB0eXBlPSJkb3VibGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEuNzk3NjkzMTM0ODYyMzE1N0UzMDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUlOX1ZBTFVFIgorIHR5cGU9ImRvdWJsZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNC45RS0zMjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTkVHQVRJVkVfSU5GSU5JVFkiCisgdHlwZT0iZG91YmxlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIoLTEuMCAvIDAuMCkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTmFOIgorIHR5cGU9ImRvdWJsZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iKDAuMCAvIDAuMCkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUE9TSVRJVkVfSU5GSU5JVFkiCisgdHlwZT0iZG91YmxlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIoMS4wIC8gMC4wKSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTSVpFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkVudW0iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ29tcGFyYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iRW51bSIKKyB0eXBlPSJqYXZhLmxhbmcuRW51bSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9yZGluYWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkNsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbXBhcmVUbyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvIiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVxdWFscyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3RoZXIiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVjbGFyaW5nQ2xhc3MiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7RSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNoQ29kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3JkaW5hbCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJUIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVudW1UeXBlIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7VCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRW51bUNvbnN0YW50Tm90UHJlc2VudEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkVudW1Db25zdGFudE5vdFByZXNlbnRFeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLkVudW1Db25zdGFudE5vdFByZXNlbnRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbnVtVHlwZSIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0Oz8gZXh0ZW5kcyBqYXZhLmxhbmcuRW51bSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnN0YW50TmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNvbnN0YW50TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW51bVR5cGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyBleHRlbmRzIGphdmEubGFuZy5FbnVtJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJFcnJvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuVGhyb3dhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRXJyb3IiCisgdHlwZT0iamF2YS5sYW5nLkVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRXJyb3IiCisgdHlwZT0iamF2YS5sYW5nLkVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRXJyb3IiCisgdHlwZT0iamF2YS5sYW5nLkVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhyb3dhYmxlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFcnJvciIKKyB0eXBlPSJqYXZhLmxhbmcuRXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aHJvd2FibGUiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLlRocm93YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmxhbmcuRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5FeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLkV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRocm93YWJsZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5FeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aHJvd2FibGUiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJFeGNlcHRpb25JbkluaXRpYWxpemVyRXJyb3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkxpbmthZ2VFcnJvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkV4Y2VwdGlvbkluSW5pdGlhbGl6ZXJFcnJvciIKKyB0eXBlPSJqYXZhLmxhbmcuRXhjZXB0aW9uSW5Jbml0aWFsaXplckVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRXhjZXB0aW9uSW5Jbml0aWFsaXplckVycm9yIgorIHR5cGU9ImphdmEubGFuZy5FeGNlcHRpb25JbkluaXRpYWxpemVyRXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFeGNlcHRpb25JbkluaXRpYWxpemVyRXJyb3IiCisgdHlwZT0iamF2YS5sYW5nLkV4Y2VwdGlvbkluSW5pdGlhbGl6ZXJFcnJvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEV4Y2VwdGlvbiIKKyByZXR1cm49ImphdmEubGFuZy5UaHJvd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRmxvYXQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk51bWJlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ29tcGFyYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iRmxvYXQiCisgdHlwZT0iamF2YS5sYW5nLkZsb2F0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGbG9hdCIKKyB0eXBlPSJqYXZhLmxhbmcuRmxvYXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGbG9hdCIKKyB0eXBlPSJqYXZhLmxhbmcuRmxvYXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik51bWJlckZvcm1hdEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLk51bWJlckZvcm1hdEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNvbXBhcmUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxvYXQxIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxvYXQyIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlVG8iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iamF2YS5sYW5nLkZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRvdWJsZVZhbHVlIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZsb2F0VG9JbnRCaXRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZsb2F0VG9SYXdJbnRCaXRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZsb2F0VmFsdWUiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnRCaXRzVG9GbG9hdCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYml0cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImludFZhbHVlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzSW5maW5pdGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzSW5maW5pdGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImYiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTmFOIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc05hTiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9uZ1ZhbHVlIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZUZsb2F0IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOdW1iZXJGb3JtYXRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5OdW1iZXJGb3JtYXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9IZXhTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImYiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iamF2YS5sYW5nLkZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTnVtYmVyRm9ybWF0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuTnVtYmVyRm9ybWF0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJqYXZhLmxhbmcuRmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJNQVhfVkFMVUUiCisgdHlwZT0iZmxvYXQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMuNDAyODIzNUUzOGYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUlOX1ZBTFVFIgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxLjRFLTQ1ZiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJORUdBVElWRV9JTkZJTklUWSIKKyB0eXBlPSJmbG9hdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iKC0xLjBmIC8gMC4wZikiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTmFOIgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIoMC4wZiAvIDAuMGYpIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBPU0lUSVZFX0lORklOSVRZIgorIHR5cGU9ImZsb2F0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIoMS4wZiAvIDAuMGYpIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNJWkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFIgorIHR5cGU9ImphdmEubGFuZy5DbGFzcyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSWxsZWdhbEFjY2Vzc0Vycm9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5JbmNvbXBhdGlibGVDbGFzc0NoYW5nZUVycm9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSWxsZWdhbEFjY2Vzc0Vycm9yIgorIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQWNjZXNzRXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbGxlZ2FsQWNjZXNzRXJyb3IiCisgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBY2Nlc3NFcnJvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IklsbGVnYWxNb25pdG9yU3RhdGVFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbGxlZ2FsTW9uaXRvclN0YXRlRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsTW9uaXRvclN0YXRlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSWxsZWdhbE1vbml0b3JTdGF0ZUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbE1vbml0b3JTdGF0ZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IklsbGVnYWxUaHJlYWRTdGF0ZUV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSWxsZWdhbFRocmVhZFN0YXRlRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsVGhyZWFkU3RhdGVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbGxlZ2FsVGhyZWFkU3RhdGVFeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxUaHJlYWRTdGF0ZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbmNvbXBhdGlibGVDbGFzc0NoYW5nZUVycm9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5MaW5rYWdlRXJyb3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbmNvbXBhdGlibGVDbGFzc0NoYW5nZUVycm9yIgorIHR5cGU9ImphdmEubGFuZy5JbmNvbXBhdGlibGVDbGFzc0NoYW5nZUVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW5jb21wYXRpYmxlQ2xhc3NDaGFuZ2VFcnJvciIKKyB0eXBlPSJqYXZhLmxhbmcuSW5jb21wYXRpYmxlQ2xhc3NDaGFuZ2VFcnJvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmxhbmcuSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLkluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW5oZXJpdGFibGVUaHJlYWRMb2NhbCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuVGhyZWFkTG9jYWwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbmhlcml0YWJsZVRocmVhZExvY2FsIgorIHR5cGU9ImphdmEubGFuZy5Jbmhlcml0YWJsZVRocmVhZExvY2FsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNoaWxkVmFsdWUiCisgcmV0dXJuPSJUIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnRWYWx1ZSIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbnN0YW50aWF0aW9uRXJyb3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkluY29tcGF0aWJsZUNsYXNzQ2hhbmdlRXJyb3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnN0YW50aWF0aW9uRXJyb3IiCisgdHlwZT0iamF2YS5sYW5nLkluc3RhbnRpYXRpb25FcnJvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikluc3RhbnRpYXRpb25FcnJvciIKKyB0eXBlPSJqYXZhLmxhbmcuSW5zdGFudGlhdGlvbkVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ikluc3RhbnRpYXRpb25FeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLkV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikluc3RhbnRpYXRpb25FeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLkluc3RhbnRpYXRpb25FeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnN0YW50aWF0aW9uRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5JbnN0YW50aWF0aW9uRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkludGVnZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk51bWJlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ29tcGFyYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW50ZWdlciIKKyB0eXBlPSJqYXZhLmxhbmcuSW50ZWdlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkludGVnZXIiCisgdHlwZT0iamF2YS5sYW5nLkludGVnZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik51bWJlckZvcm1hdEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLk51bWJlckZvcm1hdEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImJpdENvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlVG8iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iamF2YS5sYW5nLkludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVjb2RlIgorIHJldHVybj0iamF2YS5sYW5nLkludGVnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOdW1iZXJGb3JtYXRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5OdW1iZXJGb3JtYXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZG91YmxlVmFsdWUiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmxvYXRWYWx1ZSIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEludGVnZXIiCisgcmV0dXJuPSJqYXZhLmxhbmcuSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW50ZWdlciIKKyByZXR1cm49ImphdmEubGFuZy5JbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW50ZWdlciIKKyByZXR1cm49ImphdmEubGFuZy5JbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoaWdoZXN0T25lQml0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnRWYWx1ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb25nVmFsdWUiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxvd2VzdE9uZUJpdCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibnVtYmVyT2ZMZWFkaW5nWmVyb3MiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im51bWJlck9mVHJhaWxpbmdaZXJvcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VJbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOdW1iZXJGb3JtYXRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5OdW1iZXJGb3JtYXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VJbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyYWRpeCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOdW1iZXJGb3JtYXRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5OdW1iZXJGb3JtYXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmV2ZXJzZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmV2ZXJzZUJ5dGVzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyb3RhdGVMZWZ0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlzdGFuY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyb3RhdGVSaWdodCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRpc3RhbmNlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2lnbnVtIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b0JpbmFyeVN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvSGV4U3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9PY3RhbFN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmFkaXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iamF2YS5sYW5nLkludGVnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOdW1iZXJGb3JtYXRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5OdW1iZXJGb3JtYXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImphdmEubGFuZy5JbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmFkaXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTnVtYmVyRm9ybWF0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuTnVtYmVyRm9ybWF0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJqYXZhLmxhbmcuSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJNQVhfVkFMVUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMTQ3NDgzNjQ3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1JTl9WQUxVRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0yMTQ3NDgzNjQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNJWkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFIgorIHR5cGU9ImphdmEubGFuZy5DbGFzcyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW50ZXJuYWxFcnJvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuVmlydHVhbE1hY2hpbmVFcnJvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkludGVybmFsRXJyb3IiCisgdHlwZT0iamF2YS5sYW5nLkludGVybmFsRXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnRlcm5hbEVycm9yIgorIHR5cGU9ImphdmEubGFuZy5JbnRlcm5hbEVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ikl0ZXJhYmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iaXRlcmF0b3IiCisgcmV0dXJuPSJqYXZhLnV0aWwuSXRlcmF0b3ImbHQ7VCZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iTGlua2FnZUVycm9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5FcnJvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxpbmthZ2VFcnJvciIKKyB0eXBlPSJqYXZhLmxhbmcuTGlua2FnZUVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGlua2FnZUVycm9yIgorIHR5cGU9ImphdmEubGFuZy5MaW5rYWdlRXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTG9uZyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuTnVtYmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5Db21wYXJhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMb25nIgorIHR5cGU9ImphdmEubGFuZy5Mb25nIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxvbmciCisgdHlwZT0iamF2YS5sYW5nLkxvbmciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik51bWJlckZvcm1hdEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLk51bWJlckZvcm1hdEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImJpdENvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcGFyZVRvIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5Mb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlY29kZSIKKyByZXR1cm49ImphdmEubGFuZy5Mb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTnVtYmVyRm9ybWF0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuTnVtYmVyRm9ybWF0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRvdWJsZVZhbHVlIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZsb2F0VmFsdWUiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb25nIgorIHJldHVybj0iamF2YS5sYW5nLkxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuTG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmF1bHRWYWx1ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb25nIgorIHJldHVybj0iamF2YS5sYW5nLkxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZhdWx0VmFsdWUiIHR5cGU9ImphdmEubGFuZy5Mb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImhpZ2hlc3RPbmVCaXQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW50VmFsdWUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9uZ1ZhbHVlIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb3dlc3RPbmVCaXQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibnVtYmVyT2ZMZWFkaW5nWmVyb3MiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJudW1iZXJPZlRyYWlsaW5nWmVyb3MiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZUxvbmciCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTnVtYmVyRm9ybWF0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuTnVtYmVyRm9ybWF0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlTG9uZyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyYWRpeCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOdW1iZXJGb3JtYXRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5OdW1iZXJGb3JtYXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmV2ZXJzZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXZlcnNlQnl0ZXMiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icm90YXRlTGVmdCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlzdGFuY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyb3RhdGVSaWdodCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlzdGFuY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaWdudW0iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b0JpbmFyeVN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b0hleFN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b09jdGFsU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyYWRpeCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJqYXZhLmxhbmcuTG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik51bWJlckZvcm1hdEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLk51bWJlckZvcm1hdEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iamF2YS5sYW5nLkxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyYWRpeCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOdW1iZXJGb3JtYXRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5OdW1iZXJGb3JtYXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImphdmEubGFuZy5Mb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJNQVhfVkFMVUUiCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOTIyMzM3MjAzNjg1NDc3NTgwN0wiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUlOX1ZBTFVFIgorIHR5cGU9ImxvbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii05MjIzMzcyMDM2ODU0Nzc1ODA4TCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTSVpFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik1hdGgiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9IklFRUVyZW1haW5kZXIiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhYnMiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFicyIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImYiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFicyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWJzIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFjb3MiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNpbiIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhdGFuIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImF0YW4yIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2JydCIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjZWlsIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvcyIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb3NoIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4cCIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJleHBtMSIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmbG9vciIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoeXBvdCIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvZyIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2cxMCIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2cxcCIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYXgiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZDEiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZDIiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYXgiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmMSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImYyIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYXgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaTEiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaTIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYXgiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImwxIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsMiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtaW4iCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZDEiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZDIiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtaW4iCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmMSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImYyIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtaW4iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaTEiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaTIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtaW4iCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImwxIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsMiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwb3ciCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyYW5kb20iCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyaW50IgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJvdW5kIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icm91bmQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2lnbnVtIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaWdudW0iCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaW4iCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2luaCIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzcXJ0IgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRhbiIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0YW5oIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvRGVncmVlcyIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbmdyYWQiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1JhZGlhbnMiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYW5nZGVnIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idWxwIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bHAiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkUiCisgdHlwZT0iZG91YmxlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyLjcxODI4MTgyODQ1OTA0NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQSSIKKyB0eXBlPSJkb3VibGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMuMTQxNTkyNjUzNTg5NzkzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJOZWdhdGl2ZUFycmF5U2l6ZUV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik5lZ2F0aXZlQXJyYXlTaXplRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5OZWdhdGl2ZUFycmF5U2l6ZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik5lZ2F0aXZlQXJyYXlTaXplRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5OZWdhdGl2ZUFycmF5U2l6ZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJOb0NsYXNzRGVmRm91bmRFcnJvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuTGlua2FnZUVycm9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTm9DbGFzc0RlZkZvdW5kRXJyb3IiCisgdHlwZT0iamF2YS5sYW5nLk5vQ2xhc3NEZWZGb3VuZEVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTm9DbGFzc0RlZkZvdW5kRXJyb3IiCisgdHlwZT0iamF2YS5sYW5nLk5vQ2xhc3NEZWZGb3VuZEVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik5vU3VjaEZpZWxkRXJyb3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkluY29tcGF0aWJsZUNsYXNzQ2hhbmdlRXJyb3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOb1N1Y2hGaWVsZEVycm9yIgorIHR5cGU9ImphdmEubGFuZy5Ob1N1Y2hGaWVsZEVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTm9TdWNoRmllbGRFcnJvciIKKyB0eXBlPSJqYXZhLmxhbmcuTm9TdWNoRmllbGRFcnJvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJOb1N1Y2hGaWVsZEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTm9TdWNoRmllbGRFeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLk5vU3VjaEZpZWxkRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTm9TdWNoRmllbGRFeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLk5vU3VjaEZpZWxkRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik5vU3VjaE1ldGhvZEVycm9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5JbmNvbXBhdGlibGVDbGFzc0NoYW5nZUVycm9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTm9TdWNoTWV0aG9kRXJyb3IiCisgdHlwZT0iamF2YS5sYW5nLk5vU3VjaE1ldGhvZEVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTm9TdWNoTWV0aG9kRXJyb3IiCisgdHlwZT0iamF2YS5sYW5nLk5vU3VjaE1ldGhvZEVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik5vU3VjaE1ldGhvZEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTm9TdWNoTWV0aG9kRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5Ob1N1Y2hNZXRob2RFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOb1N1Y2hNZXRob2RFeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLk5vU3VjaE1ldGhvZEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJOdWxsUG9pbnRlckV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik51bGxQb2ludGVyRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik51bGxQb2ludGVyRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5OdWxsUG9pbnRlckV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJOdW1iZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTnVtYmVyIgorIHR5cGU9ImphdmEubGFuZy5OdW1iZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYnl0ZVZhbHVlIgorIHJldHVybj0iYnl0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkb3VibGVWYWx1ZSIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZsb2F0VmFsdWUiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImludFZhbHVlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9uZ1ZhbHVlIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNob3J0VmFsdWUiCisgcmV0dXJuPSJzaG9ydCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJOdW1iZXJGb3JtYXRFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik51bWJlckZvcm1hdEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmxhbmcuTnVtYmVyRm9ybWF0RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTnVtYmVyRm9ybWF0RXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5OdW1iZXJGb3JtYXRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iT2JqZWN0IgorIHR5cGU9ImphdmEubGFuZy5PYmplY3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkNsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVxdWFscyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im8iIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmluYWxpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJUaHJvd2FibGUiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2xhc3MiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyBleHRlbmRzIGphdmEubGFuZy5PYmplY3QmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNoQ29kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5vdGlmeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5vdGlmeUFsbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3YWl0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndhaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbGxpcyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3YWl0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbGxpcyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFub3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJPdXRPZk1lbW9yeUVycm9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5WaXJ0dWFsTWFjaGluZUVycm9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iT3V0T2ZNZW1vcnlFcnJvciIKKyB0eXBlPSJqYXZhLmxhbmcuT3V0T2ZNZW1vcnlFcnJvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik91dE9mTWVtb3J5RXJyb3IiCisgdHlwZT0iamF2YS5sYW5nLk91dE9mTWVtb3J5RXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iT3ZlcnJpZGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuYW5ub3RhdGlvbi5Bbm5vdGF0aW9uIj4KKzwvaW1wbGVtZW50cz4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUGFja2FnZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcucmVmbGVjdC5Bbm5vdGF0ZWRFbGVtZW50Ij4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0QW5ub3RhdGlvbiIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFubm90YXRpb25UeXBlIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7VCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QW5ub3RhdGlvbnMiCisgcmV0dXJuPSJqYXZhLmxhbmcuYW5ub3RhdGlvbi5Bbm5vdGF0aW9uW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVjbGFyZWRBbm5vdGF0aW9ucyIKKyByZXR1cm49ImphdmEubGFuZy5hbm5vdGF0aW9uLkFubm90YXRpb25bXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbXBsZW1lbnRhdGlvblRpdGxlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbXBsZW1lbnRhdGlvblZlbmRvciIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW1wbGVtZW50YXRpb25WZXJzaW9uIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYWNrYWdlIgorIHJldHVybj0iamF2YS5sYW5nLlBhY2thZ2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2FnZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFja2FnZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuUGFja2FnZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3BlY2lmaWNhdGlvblRpdGxlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTcGVjaWZpY2F0aW9uVmVuZG9yIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTcGVjaWZpY2F0aW9uVmVyc2lvbiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNBbm5vdGF0aW9uUHJlc2VudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFubm90YXRpb25UeXBlIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyBleHRlbmRzIGphdmEubGFuZy5hbm5vdGF0aW9uLkFubm90YXRpb24mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ29tcGF0aWJsZVdpdGgiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2ZXJzaW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOdW1iZXJGb3JtYXRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5OdW1iZXJGb3JtYXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTZWFsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU2VhbGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLm5ldC5VUkwiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUHJvY2VzcyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcm9jZXNzIgorIHR5cGU9ImphdmEubGFuZy5Qcm9jZXNzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlc3Ryb3kiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhpdFZhbHVlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RXJyb3JTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5wdXRTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T3V0cHV0U3RyZWFtIgorIHJldHVybj0iamF2YS5pby5PdXRwdXRTdHJlYW0iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3YWl0Rm9yIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUHJvY2Vzc0J1aWxkZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJvY2Vzc0J1aWxkZXIiCisgdHlwZT0iamF2YS5sYW5nLlByb2Nlc3NCdWlsZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29tbWFuZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZy4uLiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJvY2Vzc0J1aWxkZXIiCisgdHlwZT0iamF2YS5sYW5nLlByb2Nlc3NCdWlsZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29tbWFuZCIgdHlwZT0iamF2YS51dGlsLkxpc3QmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjb21tYW5kIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tbWFuZCIKKyByZXR1cm49ImphdmEubGFuZy5Qcm9jZXNzQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29tbWFuZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZy4uLiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21tYW5kIgorIHJldHVybj0iamF2YS5sYW5nLlByb2Nlc3NCdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb21tYW5kIiB0eXBlPSJqYXZhLnV0aWwuTGlzdCZsdDtqYXZhLmxhbmcuU3RyaW5nJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXJlY3RvcnkiCisgcmV0dXJuPSJqYXZhLmlvLkZpbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlyZWN0b3J5IgorIHJldHVybj0iamF2YS5sYW5nLlByb2Nlc3NCdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXJlY3RvcnkiIHR5cGU9ImphdmEuaW8uRmlsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbnZpcm9ubWVudCIKKyByZXR1cm49ImphdmEudXRpbC5NYXAmbHQ7amF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVkaXJlY3RFcnJvclN0cmVhbSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVkaXJlY3RFcnJvclN0cmVhbSIKKyByZXR1cm49ImphdmEubGFuZy5Qcm9jZXNzQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVkaXJlY3RFcnJvclN0cmVhbSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydCIKKyByZXR1cm49ImphdmEubGFuZy5Qcm9jZXNzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iUmVhZGFibGUiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNiIiB0eXBlPSJqYXZhLm5pby5DaGFyQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlJ1bm5hYmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0icnVuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJSdW50aW1lIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYWRkU2h1dGRvd25Ib29rIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9vayIgdHlwZT0iamF2YS5sYW5nLlRocmVhZCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhdmFpbGFibGVQcm9jZXNzb3JzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4ZWMiCisgcmV0dXJuPSJqYXZhLmxhbmcuUHJvY2VzcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvZ0FycmF5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4ZWMiCisgcmV0dXJuPSJqYXZhLmxhbmcuUHJvY2VzcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvZ0FycmF5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVudnAiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhlYyIKKyByZXR1cm49ImphdmEubGFuZy5Qcm9jZXNzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9nQXJyYXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW52cCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaXJlY3RvcnkiIHR5cGU9ImphdmEuaW8uRmlsZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhlYyIKKyByZXR1cm49ImphdmEubGFuZy5Qcm9jZXNzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJleGVjIgorIHJldHVybj0iamF2YS5sYW5nLlByb2Nlc3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVudnAiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhlYyIKKyByZXR1cm49ImphdmEubGFuZy5Qcm9jZXNzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbnZwIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRpcmVjdG9yeSIgdHlwZT0iamF2YS5pby5GaWxlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJleGl0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZyZWVNZW1vcnkiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9jYWxpemVkSW5wdXRTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbSIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhbGl6ZWRPdXRwdXRTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLk91dHB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJlYW0iIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJ1bnRpbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuUnVudGltZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImhhbHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdGhOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvYWRMaWJyYXJ5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGliTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYXhNZW1vcnkiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlU2h1dGRvd25Ib29rIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9vayIgdHlwZT0iamF2YS5sYW5nLlRocmVhZCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJydW5GaW5hbGl6YXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJ1bkZpbmFsaXplcnNPbkV4aXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icnVuIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvdGFsTWVtb3J5IgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRyYWNlSW5zdHJ1Y3Rpb25zIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5hYmxlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRyYWNlTWV0aG9kQ2FsbHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmFibGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUnVudGltZUV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUnVudGltZUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJ1bnRpbWVFeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSdW50aW1lRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhyb3dhYmxlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSdW50aW1lRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhyb3dhYmxlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUnVudGltZVBlcm1pc3Npb24iCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5CYXNpY1Blcm1pc3Npb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJ1bnRpbWVQZXJtaXNzaW9uIgorIHR5cGU9ImphdmEubGFuZy5SdW50aW1lUGVybWlzc2lvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pc3Npb25OYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSdW50aW1lUGVybWlzc2lvbiIKKyB0eXBlPSJqYXZhLmxhbmcuUnVudGltZVBlcm1pc3Npb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb25zIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2VjdXJpdHlFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTZWN1cml0eUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmxhbmcuU2VjdXJpdHlFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTZWN1cml0eUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmxhbmcuU2VjdXJpdHlFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTZWN1cml0eUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmxhbmcuU2VjdXJpdHlFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2VjdXJpdHlFeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLlNlY3VyaXR5RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTZWN1cml0eU1hbmFnZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNlY3VyaXR5TWFuYWdlciIKKyB0eXBlPSJqYXZhLmxhbmcuU2VjdXJpdHlNYW5hZ2VyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNoZWNrQWNjZXB0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrQWNjZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhyZWFkIiB0eXBlPSJqYXZhLmxhbmcuVGhyZWFkIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrQWNjZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXAiIHR5cGU9ImphdmEubGFuZy5UaHJlYWRHcm91cCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGVja0F3dEV2ZW50UXVldWVBY2Nlc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrQ29ubmVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imhvc3QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGVja0Nvbm5lY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tDcmVhdGVDbGFzc0xvYWRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tEZWxldGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrRXhlYyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNtZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGVja0V4aXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0dXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGVja0xpbmsiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaWJOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrTGlzdGVuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrTWVtYmVyQWNjZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2xzIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGVja011bHRpY2FzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1hZGRyIiB0eXBlPSJqYXZhLm5ldC5JbmV0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGVja011bHRpY2FzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFkZHIiIHR5cGU9ImphdmEubmV0LkluZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0dGwiIHR5cGU9ImJ5dGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tQYWNrYWdlQWNjZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFja2FnZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tQYWNrYWdlRGVmaW5pdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrUGVybWlzc2lvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pc3Npb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuUGVybWlzc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGVja1Blcm1pc3Npb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwZXJtaXNzaW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlBlcm1pc3Npb24iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tQcmludEpvYkFjY2VzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tQcm9wZXJ0aWVzQWNjZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGVja1Byb3BlcnR5QWNjZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrUmVhZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZkIiB0eXBlPSJqYXZhLmlvLkZpbGVEZXNjcmlwdG9yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrUmVhZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tSZWFkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGVja1NlY3VyaXR5QWNjZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrU2V0RmFjdG9yeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tTeXN0ZW1DbGlwYm9hcmRBY2Nlc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrVG9wTGV2ZWxXaW5kb3ciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aW5kb3ciIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tXcml0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZkIiB0eXBlPSJqYXZhLmlvLkZpbGVEZXNjcmlwdG9yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrV3JpdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsYXNzRGVwdGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGFzc0xvYWRlckRlcHRoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3VycmVudENsYXNzTG9hZGVyIgorIHJldHVybj0iamF2YS5sYW5nLkNsYXNzTG9hZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3VycmVudExvYWRlZENsYXNzIgorIHJldHVybj0iamF2YS5sYW5nLkNsYXNzJmx0Oz8mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2xhc3NDb250ZXh0IgorIHJldHVybj0iamF2YS5sYW5nLkNsYXNzW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5DaGVjayIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZWN1cml0eUNvbnRleHQiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRocmVhZEdyb3VwIgorIHJldHVybj0iamF2YS5sYW5nLlRocmVhZEdyb3VwIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluQ2xhc3MiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5DbGFzc0xvYWRlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImluQ2hlY2siCisgdHlwZT0iYm9vbGVhbiIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNob3J0IgorIGV4dGVuZHM9ImphdmEubGFuZy5OdW1iZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNvbXBhcmFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNob3J0IgorIHR5cGU9ImphdmEubGFuZy5TaG9ydCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTnVtYmVyRm9ybWF0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuTnVtYmVyRm9ybWF0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTaG9ydCIKKyB0eXBlPSJqYXZhLmxhbmcuU2hvcnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0ic2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlVG8iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iamF2YS5sYW5nLlNob3J0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlY29kZSIKKyByZXR1cm49ImphdmEubGFuZy5TaG9ydCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik51bWJlckZvcm1hdEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLk51bWJlckZvcm1hdEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkb3VibGVWYWx1ZSIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmbG9hdFZhbHVlIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW50VmFsdWUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9uZ1ZhbHVlIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZVNob3J0IgorIHJldHVybj0ic2hvcnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOdW1iZXJGb3JtYXRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5OdW1iZXJGb3JtYXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VTaG9ydCIKKyByZXR1cm49InNob3J0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmFkaXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTnVtYmVyRm9ybWF0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuTnVtYmVyRm9ybWF0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJldmVyc2VCeXRlcyIKKyByZXR1cm49InNob3J0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9InNob3J0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0ic2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImphdmEubGFuZy5TaG9ydCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik51bWJlckZvcm1hdEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLk51bWJlckZvcm1hdEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iamF2YS5sYW5nLlNob3J0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmFkaXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTnVtYmVyRm9ybWF0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuTnVtYmVyRm9ybWF0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJqYXZhLmxhbmcuU2hvcnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0ic2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJNQVhfVkFMVUUiCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyNzY3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1JTl9WQUxVRSIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTMyNzY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNJWkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFIgorIHR5cGU9ImphdmEubGFuZy5DbGFzcyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3RhY2tPdmVyZmxvd0Vycm9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5WaXJ0dWFsTWFjaGluZUVycm9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RhY2tPdmVyZmxvd0Vycm9yIgorIHR5cGU9ImphdmEubGFuZy5TdGFja092ZXJmbG93RXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdGFja092ZXJmbG93RXJyb3IiCisgdHlwZT0iamF2YS5sYW5nLlN0YWNrT3ZlcmZsb3dFcnJvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTdGFja1RyYWNlRWxlbWVudCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdGFja1RyYWNlRWxlbWVudCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RhY2tUcmFjZUVsZW1lbnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbHMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1ldGhvZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q2xhc3NOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGaWxlTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGluZU51bWJlciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNZXRob2ROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc05hdGl2ZU1ldGhvZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3RyaWN0TWF0aCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iSUVFRXJlbWFpbmRlciIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFicyIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWJzIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWJzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhYnMiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImwiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWNvcyIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc2luIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImF0YW4iCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXRhbjIiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYnJ0IgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNlaWwiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29zIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvc2giCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhwIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4cG0xIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZsb29yIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imh5cG90IgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9nIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvZzEwIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvZzFwIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1heCIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkMSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkMiIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1heCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImYxIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZjIiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1heCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpMSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpMiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1heCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibDEiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImwyIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1pbiIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkMSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkMiIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1pbiIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImYxIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZjIiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1pbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpMSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpMiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1pbiIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibDEiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImwyIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBvdyIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJhbmRvbSIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJpbnQiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icm91bmQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyb3VuZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaWdudW0iCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNpZ251bSIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImYiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNpbiIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaW5oIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNxcnQiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGFuIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRhbmgiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9EZWdyZWVzIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFuZ3JhZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvUmFkaWFucyIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbmdkZWciIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bHAiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVscCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImYiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iRSIKKyB0eXBlPSJkb3VibGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIuNzE4MjgxODI4NDU5MDQ1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBJIgorIHR5cGU9ImRvdWJsZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMy4xNDE1OTI2NTM1ODk3OTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlN0cmluZyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNvbXBhcmFibGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN0cmluZyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RyaW5nIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN0cmluZyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhpZ2giIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RyaW5nIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdHJpbmciCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoaWdoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdHJpbmciCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuY29kaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN0cmluZyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmNvZGluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5VbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdHJpbmciCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RyaW5nIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdHJpbmciCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RyaW5nIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmdidWZmZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN0cmluZyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZVBvaW50cyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdHJpbmciCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNiIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nQnVpbGRlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNoYXJBdCIKKyByZXR1cm49ImNoYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29kZVBvaW50QXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29kZVBvaW50QmVmb3JlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvZGVQb2ludENvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiZWdpbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZEluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcGFyZVRvIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcGFyZVRvSWdub3JlQ2FzZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbmNhdCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb250YWlucyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNzIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbnRlbnRFcXVhbHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJidWYiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29udGVudEVxdWFscyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNzIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvcHlWYWx1ZU9mIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29weVZhbHVlT2YiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5kc1dpdGgiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdWZmaXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXF1YWxzSWdub3JlQ2FzZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcm1hdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJncyIgdHlwZT0iamF2YS5sYW5nLk9iamVjdC4uLiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvYyIgdHlwZT0iamF2YS51dGlsLkxvY2FsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9ybWF0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcmdzIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Li4uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJ5dGVzIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJ5dGVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJ5dGVzIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmNvZGluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5VbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoYXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluZGV4T2YiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbmRleE9mIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5kZXhPZiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluZGV4T2YiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN1YlN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnRlcm4iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGFzdEluZGV4T2YiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsYXN0SW5kZXhPZiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxhc3RJbmRleE9mIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGFzdEluZGV4T2YiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN1YlN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWF0Y2hlcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cHIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib2Zmc2V0QnlDb2RlUG9pbnRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2RlUG9pbnRPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpb25NYXRjaGVzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhpc1N0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVnaW9uTWF0Y2hlcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imlnbm9yZUNhc2UiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoaXNTdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcGxhY2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvbGRDaGFyIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdDaGFyIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcGxhY2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcGxhY2VtZW50IiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcGxhY2VBbGwiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleHByIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdWJzdGl0dXRlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcGxhY2VGaXJzdCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cHIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN1YnN0aXR1dGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3BsaXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cHIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3BsaXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cHIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1heCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0c1dpdGgiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmaXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRzV2l0aCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByZWZpeCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdWJTZXF1ZW5jZSIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1YnN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3Vic3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9DaGFyQXJyYXkiCisgcmV0dXJuPSJjaGFyW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9Mb3dlckNhc2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvTG93ZXJDYXNlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxlIiB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvVXBwZXJDYXNlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1VwcGVyQ2FzZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsZSIgdHlwZT0iamF2YS51dGlsLkxvY2FsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0cmltIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ0FTRV9JTlNFTlNJVElWRV9PUkRFUiIKKyB0eXBlPSJqYXZhLnV0aWwuQ29tcGFyYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3RyaW5nQnVmZmVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5BYnN0cmFjdFN0cmluZ0J1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkFwcGVuZGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RyaW5nQnVmZmVyIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdHJpbmdCdWZmZXIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhcGFjaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN0cmluZ0J1ZmZlciIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdHJpbmdCdWZmZXIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNzIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYXBwZW5kIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXBwZW5kIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iaiIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNiIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhcnMiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYXJzIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZENvZGVQb2ludCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvZGVQb2ludCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlbGV0ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVsZXRlQ2hhckF0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imluc2VydCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2giIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5zZXJ0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnNlcnQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5zZXJ0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnNlcnQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5zZXJ0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5zZXJ0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imluc2VydCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imluc2VydCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhcnMiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnNlcnQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYXJzIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imluc2VydCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnNlcnQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcGxhY2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmV2ZXJzZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTdHJpbmdCdWlsZGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5BYnN0cmFjdFN0cmluZ0J1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkFwcGVuZGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RyaW5nQnVpbGRlciIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nQnVpbGRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN0cmluZ0J1aWxkZXIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXBhY2l0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdHJpbmdCdWlsZGVyIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmdCdWlsZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VxIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdHJpbmdCdWlsZGVyIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmdCdWlsZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYXBwZW5kIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXBwZW5kIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXBwZW5kIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG5nIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdCdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdCdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXBwZW5kIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0ciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2IiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXBwZW5kIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXBwZW5kIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0ciIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXBwZW5kIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNzcSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3NxIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmRDb2RlUG9pbnQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZVBvaW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVsZXRlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlbGV0ZUNoYXJBdCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdCdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imluc2VydCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdCdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnNlcnQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5zZXJ0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5zZXJ0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imluc2VydCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdCdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5zZXJ0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5zZXJ0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5zZXJ0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdHIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5zZXJ0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imluc2VydCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdCdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0ck9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdHJMZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnNlcnQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5zZXJ0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXBsYWNlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdHIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmV2ZXJzZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdCdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlN0cmluZ0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLkluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdHJpbmdJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmdJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RyaW5nSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nSW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN0cmluZ0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZ0luZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3VwcHJlc3NXYXJuaW5ncyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5hbm5vdGF0aW9uLkFubm90YXRpb24iPgorPC9pbXBsZW1lbnRzPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTeXN0ZW0iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImFycmF5Y29weSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNyY1BvcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0UG9zIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyUHJvcGVydHkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjdXJyZW50VGltZU1pbGxpcyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4aXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnYyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm9wZXJ0aWVzIgorIHJldHVybj0iamF2YS51dGlsLlByb3BlcnRpZXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm9wZXJ0eSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvcCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm9wZXJ0eSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvcCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlY3VyaXR5TWFuYWdlciIKKyByZXR1cm49ImphdmEubGFuZy5TZWN1cml0eU1hbmFnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRlbnYiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0ZW52IgorIHJldHVybj0iamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlkZW50aXR5SGFzaENvZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbk9iamVjdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbmhlcml0ZWRDaGFubmVsIgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuQ2hhbm5lbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2FkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2FkTGlicmFyeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGliTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYXBMaWJyYXJ5TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1c2VyTGliTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuYW5vVGltZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0idHJ1ZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJ1bkZpbmFsaXphdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJydW5GaW5hbGl6ZXJzT25FeGl0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWciIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RXJyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdFcnIiIHR5cGU9ImphdmEuaW8uUHJpbnRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld0luIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE91dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3T3V0IiB0eXBlPSJqYXZhLmlvLlByaW50U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByb3BlcnRpZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InAiIHR5cGU9ImphdmEudXRpbC5Qcm9wZXJ0aWVzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByb3BlcnR5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9wIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTZWN1cml0eU1hbmFnZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNtIiB0eXBlPSJqYXZhLmxhbmcuU2VjdXJpdHlNYW5hZ2VyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iZXJyIgorIHR5cGU9ImphdmEuaW8uUHJpbnRTdHJlYW0iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW4iCisgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJvdXQiCisgdHlwZT0iamF2YS5pby5QcmludFN0cmVhbSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVGhyZWFkIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5SdW5uYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGhyZWFkIgorIHR5cGU9ImphdmEubGFuZy5UaHJlYWQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUaHJlYWQiCisgdHlwZT0iamF2YS5sYW5nLlRocmVhZCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJ1bm5hYmxlIiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRocmVhZCIKKyB0eXBlPSJqYXZhLmxhbmcuVGhyZWFkIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icnVubmFibGUiIHR5cGU9ImphdmEubGFuZy5SdW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhyZWFkTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGhyZWFkIgorIHR5cGU9ImphdmEubGFuZy5UaHJlYWQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aHJlYWROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUaHJlYWQiCisgdHlwZT0iamF2YS5sYW5nLlRocmVhZCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwIiB0eXBlPSJqYXZhLmxhbmcuVGhyZWFkR3JvdXAiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJ1bm5hYmxlIiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRocmVhZCIKKyB0eXBlPSJqYXZhLmxhbmcuVGhyZWFkIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXAiIHR5cGU9ImphdmEubGFuZy5UaHJlYWRHcm91cCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icnVubmFibGUiIHR5cGU9ImphdmEubGFuZy5SdW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhyZWFkTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGhyZWFkIgorIHR5cGU9ImphdmEubGFuZy5UaHJlYWQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cCIgdHlwZT0iamF2YS5sYW5nLlRocmVhZEdyb3VwIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aHJlYWROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUaHJlYWQiCisgdHlwZT0iamF2YS5sYW5nLlRocmVhZCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwIiB0eXBlPSJqYXZhLmxhbmcuVGhyZWFkR3JvdXAiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJ1bm5hYmxlIiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRocmVhZE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YWNrU2l6ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFjdGl2ZUNvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tBY2Nlc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY291bnRTdGFja0ZyYW1lcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImN1cnJlbnRUaHJlYWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuVGhyZWFkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVzdHJveSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkdW1wU3RhY2siCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW51bWVyYXRlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRocmVhZHMiIHR5cGU9ImphdmEubGFuZy5UaHJlYWRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbGxTdGFja1RyYWNlcyIKKyByZXR1cm49ImphdmEudXRpbC5NYXAmbHQ7amF2YS5sYW5nLlRocmVhZCwgamF2YS5sYW5nLlN0YWNrVHJhY2VFbGVtZW50W10mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGV4dENsYXNzTG9hZGVyIgorIHJldHVybj0iamF2YS5sYW5nLkNsYXNzTG9hZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlZmF1bHRVbmNhdWdodEV4Y2VwdGlvbkhhbmRsZXIiCisgcmV0dXJuPSJqYXZhLmxhbmcuVGhyZWFkLlVuY2F1Z2h0RXhjZXB0aW9uSGFuZGxlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElkIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByaW9yaXR5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RhY2tUcmFjZSIKKyByZXR1cm49ImphdmEubGFuZy5TdGFja1RyYWNlRWxlbWVudFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0YXRlIgorIHJldHVybj0iamF2YS5sYW5nLlRocmVhZC5TdGF0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaHJlYWRHcm91cCIKKyByZXR1cm49ImphdmEubGFuZy5UaHJlYWRHcm91cCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFVuY2F1Z2h0RXhjZXB0aW9uSGFuZGxlciIKKyByZXR1cm49ImphdmEubGFuZy5UaHJlYWQuVW5jYXVnaHRFeGNlcHRpb25IYW5kbGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImhvbGRzTG9jayIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImludGVycnVwdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW50ZXJydXB0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNBbGl2ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0RhZW1vbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0ludGVycnVwdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJqb2luIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImpvaW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbGxpcyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJqb2luIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtaWxsaXMiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbm9zIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzdW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icnVuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb250ZXh0Q2xhc3NMb2FkZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbCIgdHlwZT0iamF2YS5sYW5nLkNsYXNzTG9hZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERhZW1vbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNEYWVtb24iIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGVmYXVsdFVuY2F1Z2h0RXhjZXB0aW9uSGFuZGxlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlciIgdHlwZT0iamF2YS5sYW5nLlRocmVhZC5VbmNhdWdodEV4Y2VwdGlvbkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TmFtZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhyZWFkTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQcmlvcml0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJpb3JpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRVbmNhdWdodEV4Y2VwdGlvbkhhbmRsZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJqYXZhLmxhbmcuVGhyZWFkLlVuY2F1Z2h0RXhjZXB0aW9uSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzbGVlcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzbGVlcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWlsbGlzIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW5vcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0b3AiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdG9wIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhyb3dhYmxlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1c3BlbmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ5aWVsZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Ik1BWF9QUklPUklUWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1JTl9QUklPUklUWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTk9STV9QUklPUklUWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlRocmVhZC5TdGF0ZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRW51bSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImphdmEubGFuZy5UaHJlYWQuU3RhdGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuVGhyZWFkLlN0YXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJUaHJlYWQuVW5jYXVnaHRFeGNlcHRpb25IYW5kbGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJ1bmNhdWdodEV4Y2VwdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhyZWFkIiB0eXBlPSJqYXZhLmxhbmcuVGhyZWFkIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleCIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iVGhyZWFkRGVhdGgiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkVycm9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGhyZWFkRGVhdGgiCisgdHlwZT0iamF2YS5sYW5nLlRocmVhZERlYXRoIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlRocmVhZEdyb3VwIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5UaHJlYWQuVW5jYXVnaHRFeGNlcHRpb25IYW5kbGVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUaHJlYWRHcm91cCIKKyB0eXBlPSJqYXZhLmxhbmcuVGhyZWFkR3JvdXAiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUaHJlYWRHcm91cCIKKyB0eXBlPSJqYXZhLmxhbmcuVGhyZWFkR3JvdXAiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnQiIHR5cGU9ImphdmEubGFuZy5UaHJlYWRHcm91cCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFjdGl2ZUNvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFjdGl2ZUdyb3VwQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWxsb3dUaHJlYWRTdXNwZW5zaW9uIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrQWNjZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlc3Ryb3kiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW51bWVyYXRlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aHJlYWRzIiB0eXBlPSJqYXZhLmxhbmcuVGhyZWFkW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW51bWVyYXRlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aHJlYWRzIiB0eXBlPSJqYXZhLmxhbmcuVGhyZWFkW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlY3Vyc2UiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW51bWVyYXRlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cHMiIHR5cGU9ImphdmEubGFuZy5UaHJlYWRHcm91cFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVudW1lcmF0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXBzIiB0eXBlPSJqYXZhLmxhbmcuVGhyZWFkR3JvdXBbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVjdXJzZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYXhQcmlvcml0eSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFyZW50IgorIHJldHVybj0iamF2YS5sYW5nLlRocmVhZEdyb3VwIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW50ZXJydXB0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRGFlbW9uIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRGVzdHJveWVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxpc3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcmVudE9mIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJnIiB0eXBlPSJqYXZhLmxhbmcuVGhyZWFkR3JvdXAiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzdW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGFlbW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpc0RhZW1vbiIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNYXhQcmlvcml0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3TWF4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RvcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1c3BlbmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bmNhdWdodEV4Y2VwdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InQiIHR5cGU9ImphdmEubGFuZy5UaHJlYWQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImUiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVGhyZWFkTG9jYWwiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRocmVhZExvY2FsIgorIHR5cGU9ImphdmEubGFuZy5UaHJlYWRMb2NhbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJUIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluaXRpYWxWYWx1ZSIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUaHJvd2FibGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRocm93YWJsZSIKKyB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGhyb3dhYmxlIgorIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUaHJvd2FibGUiCisgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRocm93YWJsZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGhyb3dhYmxlIgorIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aHJvd2FibGUiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJmaWxsSW5TdGFja1RyYWNlIgorIHJldHVybj0iamF2YS5sYW5nLlRocm93YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDYXVzZSIKKyByZXR1cm49ImphdmEubGFuZy5UaHJvd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9jYWxpemVkTWVzc2FnZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWVzc2FnZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RhY2tUcmFjZSIKKyByZXR1cm49ImphdmEubGFuZy5TdGFja1RyYWNlRWxlbWVudFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluaXRDYXVzZSIKKyByZXR1cm49ImphdmEubGFuZy5UaHJvd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRocm93YWJsZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmludFN0YWNrVHJhY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByaW50U3RhY2tUcmFjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVyciIgdHlwZT0iamF2YS5pby5QcmludFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmludFN0YWNrVHJhY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlcnIiIHR5cGU9ImphdmEuaW8uUHJpbnRXcml0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RhY2tUcmFjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRyYWNlIiB0eXBlPSJqYXZhLmxhbmcuU3RhY2tUcmFjZUVsZW1lbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUeXBlTm90UHJlc2VudEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlR5cGVOb3RQcmVzZW50RXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5UeXBlTm90UHJlc2VudEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGVOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InR5cGVOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJVbmtub3duRXJyb3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLlZpcnR1YWxNYWNoaW5lRXJyb3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVbmtub3duRXJyb3IiCisgdHlwZT0iamF2YS5sYW5nLlVua25vd25FcnJvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlVua25vd25FcnJvciIKKyB0eXBlPSJqYXZhLmxhbmcuVW5rbm93bkVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlVuc2F0aXNmaWVkTGlua0Vycm9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5MaW5rYWdlRXJyb3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVbnNhdGlzZmllZExpbmtFcnJvciIKKyB0eXBlPSJqYXZhLmxhbmcuVW5zYXRpc2ZpZWRMaW5rRXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVbnNhdGlzZmllZExpbmtFcnJvciIKKyB0eXBlPSJqYXZhLmxhbmcuVW5zYXRpc2ZpZWRMaW5rRXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVW5zdXBwb3J0ZWRDbGFzc1ZlcnNpb25FcnJvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuQ2xhc3NGb3JtYXRFcnJvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlVuc3VwcG9ydGVkQ2xhc3NWZXJzaW9uRXJyb3IiCisgdHlwZT0iamF2YS5sYW5nLlVuc3VwcG9ydGVkQ2xhc3NWZXJzaW9uRXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVbnN1cHBvcnRlZENsYXNzVmVyc2lvbkVycm9yIgorIHR5cGU9ImphdmEubGFuZy5VbnN1cHBvcnRlZENsYXNzVmVyc2lvbkVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLlVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLlVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLlVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5VbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVmVyaWZ5RXJyb3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkxpbmthZ2VFcnJvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlZlcmlmeUVycm9yIgorIHR5cGU9ImphdmEubGFuZy5WZXJpZnlFcnJvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlZlcmlmeUVycm9yIgorIHR5cGU9ImphdmEubGFuZy5WZXJpZnlFcnJvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJWaXJ0dWFsTWFjaGluZUVycm9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5FcnJvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVmlydHVhbE1hY2hpbmVFcnJvciIKKyB0eXBlPSJqYXZhLmxhbmcuVmlydHVhbE1hY2hpbmVFcnJvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlZpcnR1YWxNYWNoaW5lRXJyb3IiCisgdHlwZT0iamF2YS5sYW5nLlZpcnR1YWxNYWNoaW5lRXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVm9pZCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxmaWVsZCBuYW1lPSJUWVBFIgorIHR5cGU9ImphdmEubGFuZy5DbGFzcyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJqYXZhLmxhbmcuYW5ub3RhdGlvbiIKKz4KKzxpbnRlcmZhY2UgbmFtZT0iQW5ub3RhdGlvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImFubm90YXRpb25UeXBlIgorIHJldHVybj0iamF2YS5sYW5nLkNsYXNzJmx0Oz8gZXh0ZW5kcyBqYXZhLmxhbmcuYW5ub3RhdGlvbi5Bbm5vdGF0aW9uJmd0OyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVxdWFscyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc2hDb2RlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkFubm90YXRpb25Gb3JtYXRFcnJvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRXJyb3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBbm5vdGF0aW9uRm9ybWF0RXJyb3IiCisgdHlwZT0iamF2YS5sYW5nLmFubm90YXRpb24uQW5ub3RhdGlvbkZvcm1hdEVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQW5ub3RhdGlvbkZvcm1hdEVycm9yIgorIHR5cGU9ImphdmEubGFuZy5hbm5vdGF0aW9uLkFubm90YXRpb25Gb3JtYXRFcnJvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBbm5vdGF0aW9uRm9ybWF0RXJyb3IiCisgdHlwZT0iamF2YS5sYW5nLmFubm90YXRpb24uQW5ub3RhdGlvbkZvcm1hdEVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBbm5vdGF0aW9uVHlwZU1pc21hdGNoRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQW5ub3RhdGlvblR5cGVNaXNtYXRjaEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmxhbmcuYW5ub3RhdGlvbi5Bbm5vdGF0aW9uVHlwZU1pc21hdGNoRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZWxlbWVudCIgdHlwZT0iamF2YS5sYW5nLnJlZmxlY3QuTWV0aG9kIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3VuZFR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJlbGVtZW50IgorIHJldHVybj0iamF2YS5sYW5nLnJlZmxlY3QuTWV0aG9kIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvdW5kVHlwZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRG9jdW1lbnRlZCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5hbm5vdGF0aW9uLkFubm90YXRpb24iPgorPC9pbXBsZW1lbnRzPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJFbGVtZW50VHlwZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRW51bSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJqYXZhLmxhbmcuYW5ub3RhdGlvbi5FbGVtZW50VHlwZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlcyIKKyByZXR1cm49ImphdmEubGFuZy5hbm5vdGF0aW9uLkVsZW1lbnRUeXBlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkluY29tcGxldGVBbm5vdGF0aW9uRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW5jb21wbGV0ZUFubm90YXRpb25FeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLmFubm90YXRpb24uSW5jb21wbGV0ZUFubm90YXRpb25FeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbm5vdGF0aW9uVHlwZSIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0Oz8gZXh0ZW5kcyBqYXZhLmxhbmcuYW5ub3RhdGlvbi5Bbm5vdGF0aW9uJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZWxlbWVudE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhbm5vdGF0aW9uVHlwZSIKKyByZXR1cm49ImphdmEubGFuZy5DbGFzcyZsdDs/IGV4dGVuZHMgamF2YS5sYW5nLmFubm90YXRpb24uQW5ub3RhdGlvbiZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZWxlbWVudE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkluaGVyaXRlZCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5hbm5vdGF0aW9uLkFubm90YXRpb24iPgorPC9pbXBsZW1lbnRzPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSZXRlbnRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuYW5ub3RhdGlvbi5Bbm5vdGF0aW9uIj4KKzwvaW1wbGVtZW50cz4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmV0ZW50aW9uUG9saWN5IgorIGV4dGVuZHM9ImphdmEubGFuZy5FbnVtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImphdmEubGFuZy5hbm5vdGF0aW9uLlJldGVudGlvblBvbGljeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlcyIKKyByZXR1cm49ImphdmEubGFuZy5hbm5vdGF0aW9uLlJldGVudGlvblBvbGljeVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUYXJnZXQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuYW5ub3RhdGlvbi5Bbm5vdGF0aW9uIj4KKzwvaW1wbGVtZW50cz4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJqYXZhLmxhbmcucmVmIgorPgorPGNsYXNzIG5hbWU9IlBoYW50b21SZWZlcmVuY2UiCisgZXh0ZW5kcz0iamF2YS5sYW5nLnJlZi5SZWZlcmVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQaGFudG9tUmVmZXJlbmNlIgorIHR5cGU9ImphdmEubGFuZy5yZWYuUGhhbnRvbVJlZmVyZW5jZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9IlQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InEiIHR5cGU9ImphdmEubGFuZy5yZWYuUmVmZXJlbmNlUXVldWUmbHQ7PyBzdXBlciBUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJlZmVyZW5jZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY2xlYXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVucXVldWUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNFbnF1ZXVlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmVmZXJlbmNlUXVldWUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlZmVyZW5jZVF1ZXVlIgorIHR5cGU9ImphdmEubGFuZy5yZWYuUmVmZXJlbmNlUXVldWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0icG9sbCIKKyByZXR1cm49ImphdmEubGFuZy5yZWYuUmVmZXJlbmNlJmx0Oz8gZXh0ZW5kcyBUJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZSIKKyByZXR1cm49ImphdmEubGFuZy5yZWYuUmVmZXJlbmNlJmx0Oz8gZXh0ZW5kcyBUJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmUiCisgcmV0dXJuPSJqYXZhLmxhbmcucmVmLlJlZmVyZW5jZSZsdDs/IGV4dGVuZHMgVCZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNvZnRSZWZlcmVuY2UiCisgZXh0ZW5kcz0iamF2YS5sYW5nLnJlZi5SZWZlcmVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTb2Z0UmVmZXJlbmNlIgorIHR5cGU9ImphdmEubGFuZy5yZWYuU29mdFJlZmVyZW5jZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9IlQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNvZnRSZWZlcmVuY2UiCisgdHlwZT0iamF2YS5sYW5nLnJlZi5Tb2Z0UmVmZXJlbmNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icSIgdHlwZT0iamF2YS5sYW5nLnJlZi5SZWZlcmVuY2VRdWV1ZSZsdDs/IHN1cGVyIFQmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iV2Vha1JlZmVyZW5jZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcucmVmLlJlZmVyZW5jZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IldlYWtSZWZlcmVuY2UiCisgdHlwZT0iamF2YS5sYW5nLnJlZi5XZWFrUmVmZXJlbmNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iV2Vha1JlZmVyZW5jZSIKKyB0eXBlPSJqYXZhLmxhbmcucmVmLldlYWtSZWZlcmVuY2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJUIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxIiB0eXBlPSJqYXZhLmxhbmcucmVmLlJlZmVyZW5jZVF1ZXVlJmx0Oz8gc3VwZXIgVCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImphdmEubGFuZy5yZWZsZWN0IgorPgorPGNsYXNzIG5hbWU9IkFjY2Vzc2libGVPYmplY3QiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLnJlZmxlY3QuQW5ub3RhdGVkRWxlbWVudCI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWNjZXNzaWJsZU9iamVjdCIKKyB0eXBlPSJqYXZhLmxhbmcucmVmbGVjdC5BY2Nlc3NpYmxlT2JqZWN0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEFubm90YXRpb24iCisgcmV0dXJuPSJUIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbm5vdGF0aW9uVHlwZSIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0O1QmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFubm90YXRpb25zIgorIHJldHVybj0iamF2YS5sYW5nLmFubm90YXRpb24uQW5ub3RhdGlvbltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlY2xhcmVkQW5ub3RhdGlvbnMiCisgcmV0dXJuPSJqYXZhLmxhbmcuYW5ub3RhdGlvbi5Bbm5vdGF0aW9uW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNBY2Nlc3NpYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0Fubm90YXRpb25QcmVzZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYW5ub3RhdGlvblR5cGUiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDs/IGV4dGVuZHMgamF2YS5sYW5nLmFubm90YXRpb24uQW5ub3RhdGlvbiZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QWNjZXNzaWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0cyIgdHlwZT0iamF2YS5sYW5nLnJlZmxlY3QuQWNjZXNzaWJsZU9iamVjdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmbGFnIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTZWN1cml0eUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLlNlY3VyaXR5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFjY2Vzc2libGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmbGFnIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTZWN1cml0eUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLlNlY3VyaXR5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJBbm5vdGF0ZWRFbGVtZW50IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0QW5ub3RhdGlvbiIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYW5ub3RhdGlvblR5cGUiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDtUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbm5vdGF0aW9ucyIKKyByZXR1cm49ImphdmEubGFuZy5hbm5vdGF0aW9uLkFubm90YXRpb25bXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlY2xhcmVkQW5ub3RhdGlvbnMiCisgcmV0dXJuPSJqYXZhLmxhbmcuYW5ub3RhdGlvbi5Bbm5vdGF0aW9uW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0Fubm90YXRpb25QcmVzZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbm5vdGF0aW9uVHlwZSIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0Oz8gZXh0ZW5kcyBqYXZhLmxhbmcuYW5ub3RhdGlvbi5Bbm5vdGF0aW9uJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQXJyYXkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJvb2xlYW4iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5BcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCeXRlIgorIHJldHVybj0iYnl0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hhciIKKyByZXR1cm49ImNoYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERvdWJsZSIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmxvYXQiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5BcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9uZyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNob3J0IgorIHJldHVybj0ic2hvcnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld0luc3RhbmNlIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb21wb25lbnRUeXBlIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRpbWVuc2lvbnMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5lZ2F0aXZlQXJyYXlTaXplRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuTmVnYXRpdmVBcnJheVNpemVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbXBvbmVudFR5cGUiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOZWdhdGl2ZUFycmF5U2l6ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLk5lZ2F0aXZlQXJyYXlTaXplRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5BcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCb29sZWFuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Qnl0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJieXRlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5BcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDaGFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERvdWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZsb2F0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5BcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5BcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMb25nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkFycmF5SW5kZXhPdXRPZkJvdW5kc0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNob3J0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9InNob3J0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJBcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5BcnJheUluZGV4T3V0T2ZCb3VuZHNFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb25zdHJ1Y3RvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcucmVmbGVjdC5BY2Nlc3NpYmxlT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5yZWZsZWN0LkdlbmVyaWNEZWNsYXJhdGlvbiI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcucmVmbGVjdC5NZW1iZXIiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXREZWNsYXJpbmdDbGFzcyIKKyByZXR1cm49ImphdmEubGFuZy5DbGFzcyZsdDtUJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeGNlcHRpb25UeXBlcyIKKyByZXR1cm49ImphdmEubGFuZy5DbGFzcyZsdDs/Jmd0O1tdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdlbmVyaWNFeGNlcHRpb25UeXBlcyIKKyByZXR1cm49ImphdmEubGFuZy5yZWZsZWN0LlR5cGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRHZW5lcmljUGFyYW1ldGVyVHlwZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcucmVmbGVjdC5UeXBlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TW9kaWZpZXJzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtZXRlckFubm90YXRpb25zIgorIHJldHVybj0iamF2YS5sYW5nLmFubm90YXRpb24uQW5ub3RhdGlvbltdW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFyYW1ldGVyVHlwZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDtbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlUGFyYW1ldGVycyIKKyByZXR1cm49ImphdmEubGFuZy5yZWZsZWN0LlR5cGVWYXJpYWJsZSZsdDtqYXZhLmxhbmcucmVmbGVjdC5Db25zdHJ1Y3RvciZsdDtUJmd0OyZndDtbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1N5bnRoZXRpYyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNWYXJBcmdzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdJbnN0YW5jZSIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZ3MiIHR5cGU9ImphdmEubGFuZy5PYmplY3QuLi4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBY2Nlc3NFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ikluc3RhbnRpYXRpb25FeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnN0YW50aWF0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcucmVmbGVjdC5JbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvR2VuZXJpY1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRmllbGQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLnJlZmxlY3QuQWNjZXNzaWJsZU9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcucmVmbGVjdC5NZW1iZXIiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBY2Nlc3NFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Qm9vbGVhbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBY2Nlc3NFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCeXRlIgorIHJldHVybj0iYnl0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoYXIiCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBY2Nlc3NFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVjbGFyaW5nQ2xhc3MiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RG91YmxlIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBY2Nlc3NFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmxvYXQiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdlbmVyaWNUeXBlIgorIHJldHVybj0iamF2YS5sYW5nLnJlZmxlY3QuVHlwZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBY2Nlc3NFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb25nIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1vZGlmaWVycyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaG9ydCIKKyByZXR1cm49InNob3J0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBY2Nlc3NFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHlwZSIKKyByZXR1cm49ImphdmEubGFuZy5DbGFzcyZsdDs/Jmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0VudW1Db25zdGFudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTeW50aGV0aWMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBY2Nlc3NFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Qm9vbGVhbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBY2Nlc3NFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Qnl0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJ5dGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBY2Nlc3NFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2hhciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBY2Nlc3NFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RG91YmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZsb2F0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBY2Nlc3NFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldExvbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNob3J0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0ic2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBY2Nlc3NFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9HZW5lcmljU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iR2VuZXJpY0FycmF5VHlwZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcucmVmbGVjdC5UeXBlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0R2VuZXJpY0NvbXBvbmVudFR5cGUiCisgcmV0dXJuPSJqYXZhLmxhbmcucmVmbGVjdC5UeXBlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJHZW5lcmljRGVjbGFyYXRpb24iCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlUGFyYW1ldGVycyIKKyByZXR1cm49ImphdmEubGFuZy5yZWZsZWN0LlR5cGVWYXJpYWJsZSZsdDs/Jmd0O1tdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkdlbmVyaWNTaWduYXR1cmVGb3JtYXRFcnJvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuQ2xhc3NGb3JtYXRFcnJvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkdlbmVyaWNTaWduYXR1cmVGb3JtYXRFcnJvciIKKyB0eXBlPSJqYXZhLmxhbmcucmVmbGVjdC5HZW5lcmljU2lnbmF0dXJlRm9ybWF0RXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ikludm9jYXRpb25IYW5kbGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iaW52b2tlIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm94eSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWV0aG9kIiB0eXBlPSJqYXZhLmxhbmcucmVmbGVjdC5NZXRob2QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZ3MiIHR5cGU9ImphdmEubGFuZy5PYmplY3RbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iVGhyb3dhYmxlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJJbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5yZWZsZWN0Lkludm9jYXRpb25UYXJnZXRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnZvY2F0aW9uVGFyZ2V0RXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5yZWZsZWN0Lkludm9jYXRpb25UYXJnZXRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikludm9jYXRpb25UYXJnZXRFeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLnJlZmxlY3QuSW52b2NhdGlvblRhcmdldEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldFRhcmdldEV4Y2VwdGlvbiIKKyByZXR1cm49ImphdmEubGFuZy5UaHJvd2FibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTWFsZm9ybWVkUGFyYW1ldGVyaXplZFR5cGVFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNYWxmb3JtZWRQYXJhbWV0ZXJpemVkVHlwZUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLmxhbmcucmVmbGVjdC5NYWxmb3JtZWRQYXJhbWV0ZXJpemVkVHlwZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iTWVtYmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0RGVjbGFyaW5nQ2xhc3MiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2xhc3MiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNb2RpZmllcnMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU3ludGhldGljIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iREVDTEFSRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBVQkxJQyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJNZXRob2QiCisgZXh0ZW5kcz0iamF2YS5sYW5nLnJlZmxlY3QuQWNjZXNzaWJsZU9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcucmVmbGVjdC5HZW5lcmljRGVjbGFyYXRpb24iPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLnJlZmxlY3QuTWVtYmVyIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0RGVjbGFyaW5nQ2xhc3MiCisgcmV0dXJuPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVmYXVsdFZhbHVlIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeGNlcHRpb25UeXBlcyIKKyByZXR1cm49ImphdmEubGFuZy5DbGFzcyZsdDs/Jmd0O1tdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdlbmVyaWNFeGNlcHRpb25UeXBlcyIKKyByZXR1cm49ImphdmEubGFuZy5yZWZsZWN0LlR5cGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRHZW5lcmljUGFyYW1ldGVyVHlwZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcucmVmbGVjdC5UeXBlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R2VuZXJpY1JldHVyblR5cGUiCisgcmV0dXJuPSJqYXZhLmxhbmcucmVmbGVjdC5UeXBlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1vZGlmaWVycyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJhbWV0ZXJBbm5vdGF0aW9ucyIKKyByZXR1cm49ImphdmEubGFuZy5hbm5vdGF0aW9uLkFubm90YXRpb25bXVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtZXRlclR5cGVzIgorIHJldHVybj0iamF2YS5sYW5nLkNsYXNzJmx0Oz8mZ3Q7W10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmV0dXJuVHlwZSIKKyByZXR1cm49ImphdmEubGFuZy5DbGFzcyZsdDs/Jmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlUGFyYW1ldGVycyIKKyByZXR1cm49ImphdmEubGFuZy5yZWZsZWN0LlR5cGVWYXJpYWJsZSZsdDtqYXZhLmxhbmcucmVmbGVjdC5NZXRob2QmZ3Q7W10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW52b2tlIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVjZWl2ZXIiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZ3MiIHR5cGU9ImphdmEubGFuZy5PYmplY3QuLi4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBY2Nlc3NFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ikludm9jYXRpb25UYXJnZXRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5yZWZsZWN0Lkludm9jYXRpb25UYXJnZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNCcmlkZ2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU3ludGhldGljIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1ZhckFyZ3MiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvR2VuZXJpY1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTW9kaWZpZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1vZGlmaWVyIgorIHR5cGU9ImphdmEubGFuZy5yZWZsZWN0Lk1vZGlmaWVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImlzQWJzdHJhY3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGlmaWVycyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRmluYWwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGlmaWVycyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzSW50ZXJmYWNlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb2RpZmllcnMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc05hdGl2ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kaWZpZXJzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNQcml2YXRlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb2RpZmllcnMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1Byb3RlY3RlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kaWZpZXJzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNQdWJsaWMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGlmaWVycyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU3RhdGljIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb2RpZmllcnMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1N0cmljdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kaWZpZXJzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTeW5jaHJvbml6ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGlmaWVycyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzVHJhbnNpZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb2RpZmllcnMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1ZvbGF0aWxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb2RpZmllcnMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kaWZpZXJzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBQlNUUkFDVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRklOQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTlRFUkZBQ0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTkFUSVZFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBSSVZBVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBST1RFQ1RFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFVCTElDIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFUSUMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNUUklDVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwNDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1lOQ0hST05JWkVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFJBTlNJRU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlZPTEFUSUxFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJQYXJhbWV0ZXJpemVkVHlwZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcucmVmbGVjdC5UeXBlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0QWN0dWFsVHlwZUFyZ3VtZW50cyIKKyByZXR1cm49ImphdmEubGFuZy5yZWZsZWN0LlR5cGVbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE93bmVyVHlwZSIKKyByZXR1cm49ImphdmEubGFuZy5yZWZsZWN0LlR5cGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSYXdUeXBlIgorIHJldHVybj0iamF2YS5sYW5nLnJlZmxlY3QuVHlwZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJQcm94eSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJveHkiCisgdHlwZT0iamF2YS5sYW5nLnJlZmxlY3QuUHJveHkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJoIiB0eXBlPSJqYXZhLmxhbmcucmVmbGVjdC5JbnZvY2F0aW9uSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEludm9jYXRpb25IYW5kbGVyIgorIHJldHVybj0iamF2YS5sYW5nLnJlZmxlY3QuSW52b2NhdGlvbkhhbmRsZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJveHkiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm94eUNsYXNzIgorIHJldHVybj0iamF2YS5sYW5nLkNsYXNzJmx0Oz8mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvYWRlciIgdHlwZT0iamF2YS5sYW5nLkNsYXNzTG9hZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlcmZhY2VzIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsuLi4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1Byb3h5Q2xhc3MiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNsIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3UHJveHlJbnN0YW5jZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9hZGVyIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NMb2FkZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVyZmFjZXMiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDs/Jmd0O1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoIiB0eXBlPSJqYXZhLmxhbmcucmVmbGVjdC5JbnZvY2F0aW9uSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iaCIKKyB0eXBlPSJqYXZhLmxhbmcucmVmbGVjdC5JbnZvY2F0aW9uSGFuZGxlciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSZWZsZWN0UGVybWlzc2lvbiIKKyBleHRlbmRzPSJqYXZhLnNlY3VyaXR5LkJhc2ljUGVybWlzc2lvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVmbGVjdFBlcm1pc3Npb24iCisgdHlwZT0iamF2YS5sYW5nLnJlZmxlY3QuUmVmbGVjdFBlcm1pc3Npb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwZXJtaXNzaW9uTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVmbGVjdFBlcm1pc3Npb24iCisgdHlwZT0iamF2YS5sYW5nLnJlZmxlY3QuUmVmbGVjdFBlcm1pc3Npb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb25zIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlR5cGUiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlR5cGVWYXJpYWJsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcucmVmbGVjdC5UeXBlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0Qm91bmRzIgorIHJldHVybj0iamF2YS5sYW5nLnJlZmxlY3QuVHlwZVtdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R2VuZXJpY0RlY2xhcmF0aW9uIgorIHJldHVybj0iRCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlVuZGVjbGFyZWRUaHJvd2FibGVFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVbmRlY2xhcmVkVGhyb3dhYmxlRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubGFuZy5yZWZsZWN0LlVuZGVjbGFyZWRUaHJvd2FibGVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlVuZGVjbGFyZWRUaHJvd2FibGVFeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLnJlZmxlY3QuVW5kZWNsYXJlZFRocm93YWJsZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldFVuZGVjbGFyZWRUaHJvd2FibGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuVGhyb3dhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJXaWxkY2FyZFR5cGUiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLnJlZmxlY3QuVHlwZSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImdldExvd2VyQm91bmRzIgorIHJldHVybj0iamF2YS5sYW5nLnJlZmxlY3QuVHlwZVtdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VXBwZXJCb3VuZHMiCisgcmV0dXJuPSJqYXZhLmxhbmcucmVmbGVjdC5UeXBlW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJqYXZhLm1hdGgiCis+Cis8Y2xhc3MgbmFtZT0iQmlnRGVjaW1hbCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuTnVtYmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ29tcGFyYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmlnRGVjaW1hbCIKKyB0eXBlPSJqYXZhLm1hdGguQmlnRGVjaW1hbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmlnRGVjaW1hbCIKKyB0eXBlPSJqYXZhLm1hdGguQmlnRGVjaW1hbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWMiIHR5cGU9ImphdmEubWF0aC5NYXRoQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmlnRGVjaW1hbCIKKyB0eXBlPSJqYXZhLm1hdGguQmlnRGVjaW1hbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJpZ0RlY2ltYWwiCisgdHlwZT0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbiIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYyIgdHlwZT0iamF2YS5tYXRoLk1hdGhDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCaWdEZWNpbWFsIgorIHR5cGU9ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCaWdEZWNpbWFsIgorIHR5cGU9ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYyIgdHlwZT0iamF2YS5tYXRoLk1hdGhDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCaWdEZWNpbWFsIgorIHR5cGU9ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJpZ0RlY2ltYWwiCisgdHlwZT0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWMiIHR5cGU9ImphdmEubWF0aC5NYXRoQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmlnRGVjaW1hbCIKKyB0eXBlPSJqYXZhLm1hdGguQmlnRGVjaW1hbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJpZ0RlY2ltYWwiCisgdHlwZT0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYyIgdHlwZT0iamF2YS5tYXRoLk1hdGhDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCaWdEZWNpbWFsIgorIHR5cGU9ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idW5zY2FsZWRWYWwiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY2FsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCaWdEZWNpbWFsIgorIHR5cGU9ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idW5zY2FsZWRWYWwiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY2FsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYyIgdHlwZT0iamF2YS5tYXRoLk1hdGhDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCaWdEZWNpbWFsIgorIHR5cGU9ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJpZ0RlY2ltYWwiCisgdHlwZT0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWMiIHR5cGU9ImphdmEubWF0aC5NYXRoQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmlnRGVjaW1hbCIKKyB0eXBlPSJqYXZhLm1hdGguQmlnRGVjaW1hbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmlnRGVjaW1hbCIKKyB0eXBlPSJqYXZhLm1hdGguQmlnRGVjaW1hbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWMiIHR5cGU9ImphdmEubWF0aC5NYXRoQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFicyIKKyByZXR1cm49ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFicyIKKyByZXR1cm49ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYyIgdHlwZT0iamF2YS5tYXRoLk1hdGhDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhdWdlbmQiIHR5cGU9ImphdmEubWF0aC5CaWdEZWNpbWFsIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhdWdlbmQiIHR5cGU9ImphdmEubWF0aC5CaWdEZWNpbWFsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYyIgdHlwZT0iamF2YS5tYXRoLk1hdGhDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImJ5dGVWYWx1ZUV4YWN0IgorIHJldHVybj0iYnl0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlVG8iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGl2aWRlIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpdmlzb3IiIHR5cGU9ImphdmEubWF0aC5CaWdEZWNpbWFsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY2FsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyb3VuZGluZ01vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXZpZGUiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnRGVjaW1hbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGl2aXNvciIgdHlwZT0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNjYWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJvdW5kaW5nTW9kZSIgdHlwZT0iamF2YS5tYXRoLlJvdW5kaW5nTW9kZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXZpZGUiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnRGVjaW1hbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGl2aXNvciIgdHlwZT0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJvdW5kaW5nTW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpdmlkZSIKKyByZXR1cm49ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXZpc29yIiB0eXBlPSJqYXZhLm1hdGguQmlnRGVjaW1hbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icm91bmRpbmdNb2RlIiB0eXBlPSJqYXZhLm1hdGguUm91bmRpbmdNb2RlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpdmlkZSIKKyByZXR1cm49ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXZpc29yIiB0eXBlPSJqYXZhLm1hdGguQmlnRGVjaW1hbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXZpZGUiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnRGVjaW1hbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGl2aXNvciIgdHlwZT0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1jIiB0eXBlPSJqYXZhLm1hdGguTWF0aENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGl2aWRlQW5kUmVtYWluZGVyIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0RlY2ltYWxbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGl2aXNvciIgdHlwZT0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGl2aWRlQW5kUmVtYWluZGVyIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0RlY2ltYWxbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGl2aXNvciIgdHlwZT0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1jIiB0eXBlPSJqYXZhLm1hdGguTWF0aENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGl2aWRlVG9JbnRlZ3JhbFZhbHVlIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpdmlzb3IiIHR5cGU9ImphdmEubWF0aC5CaWdEZWNpbWFsIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpdmlkZVRvSW50ZWdyYWxWYWx1ZSIKKyByZXR1cm49ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXZpc29yIiB0eXBlPSJqYXZhLm1hdGguQmlnRGVjaW1hbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWMiIHR5cGU9ImphdmEubWF0aC5NYXRoQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkb3VibGVWYWx1ZSIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmbG9hdFZhbHVlIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW50VmFsdWUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW50VmFsdWVFeGFjdCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb25nVmFsdWUiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvbmdWYWx1ZUV4YWN0IgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYXgiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnRGVjaW1hbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJqYXZhLm1hdGguQmlnRGVjaW1hbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtaW4iCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnRGVjaW1hbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJqYXZhLm1hdGguQmlnRGVjaW1hbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtb3ZlUG9pbnRMZWZ0IgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtb3ZlUG9pbnRSaWdodCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibXVsdGlwbHkiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnRGVjaW1hbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXVsdGlwbGljYW5kIiB0eXBlPSJqYXZhLm1hdGguQmlnRGVjaW1hbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtdWx0aXBseSIKKyByZXR1cm49ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtdWx0aXBsaWNhbmQiIHR5cGU9ImphdmEubWF0aC5CaWdEZWNpbWFsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYyIgdHlwZT0iamF2YS5tYXRoLk1hdGhDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5lZ2F0ZSIKKyByZXR1cm49ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5lZ2F0ZSIKKyByZXR1cm49ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYyIgdHlwZT0iamF2YS5tYXRoLk1hdGhDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBsdXMiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnRGVjaW1hbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwbHVzIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1jIiB0eXBlPSJqYXZhLm1hdGguTWF0aENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG93IgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwb3ciCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnRGVjaW1hbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYyIgdHlwZT0iamF2YS5tYXRoLk1hdGhDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByZWNpc2lvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1haW5kZXIiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnRGVjaW1hbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGl2aXNvciIgdHlwZT0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtYWluZGVyIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpdmlzb3IiIHR5cGU9ImphdmEubWF0aC5CaWdEZWNpbWFsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYyIgdHlwZT0iamF2YS5tYXRoLk1hdGhDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJvdW5kIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1jIiB0eXBlPSJqYXZhLm1hdGguTWF0aENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2NhbGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2NhbGVCeVBvd2VyT2ZUZW4iCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnRGVjaW1hbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNjYWxlIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1NjYWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJvdW5kaW5nTW9kZSIgdHlwZT0iamF2YS5tYXRoLlJvdW5kaW5nTW9kZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTY2FsZSIKKyByZXR1cm49ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdTY2FsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyb3VuZGluZ01vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTY2FsZSIKKyByZXR1cm49ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdTY2FsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNob3J0VmFsdWVFeGFjdCIKKyByZXR1cm49InNob3J0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNpZ251bSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdHJpcFRyYWlsaW5nWmVyb3MiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnRGVjaW1hbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdWJ0cmFjdCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdWJ0cmFoZW5kIiB0eXBlPSJqYXZhLm1hdGguQmlnRGVjaW1hbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdWJ0cmFjdCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdWJ0cmFoZW5kIiB0eXBlPSJqYXZhLm1hdGguQmlnRGVjaW1hbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWMiIHR5cGU9ImphdmEubWF0aC5NYXRoQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b0JpZ0ludGVnZXIiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b0JpZ0ludGVnZXJFeGFjdCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvRW5naW5lZXJpbmdTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvUGxhaW5TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVscCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVuc2NhbGVkVmFsdWUiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idW5zY2FsZWRWYWwiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNjYWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVuc2NhbGVkVmFsIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnRGVjaW1hbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Ik9ORSIKKyB0eXBlPSJqYXZhLm1hdGguQmlnRGVjaW1hbCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJST1VORF9DRUlMSU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJST1VORF9ET1dOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJST1VORF9GTE9PUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUk9VTkRfSEFMRl9ET1dOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJST1VORF9IQUxGX0VWRU4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJPVU5EX0hBTEZfVVAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJPVU5EX1VOTkVDRVNTQVJZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJST1VORF9VUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEVOIgorIHR5cGU9ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlpFUk8iCisgdHlwZT0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJpZ0ludGVnZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk51bWJlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNvbXBhcmFibGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJpZ0ludGVnZXIiCisgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJudW1CaXRzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJuZCIgdHlwZT0iamF2YS51dGlsLlJhbmRvbSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmlnSW50ZWdlciIKKyB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJpdExlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjZXJ0YWludHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icm5kIiB0eXBlPSJqYXZhLnV0aWwuUmFuZG9tIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCaWdJbnRlZ2VyIgorIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCaWdJbnRlZ2VyIgorIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyYWRpeCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCaWdJbnRlZ2VyIgorIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2lnbnVtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1hZ25pdHVkZSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCaWdJbnRlZ2VyIgorIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhYnMiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGQiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhbmQiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhbmROb3QiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJiaXRDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJiaXRMZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJCaXQiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbXBhcmVUbyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXZpZGUiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGl2aXNvciIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGl2aWRlQW5kUmVtYWluZGVyIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXJbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGl2aXNvciIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZG91YmxlVmFsdWUiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmxpcEJpdCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmxvYXRWYWx1ZSIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdjZCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvd2VzdFNldEJpdCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnRWYWx1ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1Byb2JhYmxlUHJpbWUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjZXJ0YWludHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb25nVmFsdWUiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1heCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1pbiIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1vZCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtIiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtb2RJbnZlcnNlIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im0iIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1vZFBvdyIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleHBvbmVudCIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im0iIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im11bHRpcGx5IgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmVnYXRlIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV4dFByb2JhYmxlUHJpbWUiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJub3QiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvciIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBvdyIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleHAiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcm9iYWJsZVByaW1lIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYml0TGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJuZCIgdHlwZT0iamF2YS51dGlsLlJhbmRvbSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1haW5kZXIiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGl2aXNvciIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Qml0IgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaGlmdExlZnQiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNoaWZ0UmlnaHQiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNpZ251bSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdWJ0cmFjdCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRlc3RCaXQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9CeXRlQXJyYXkiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyYWRpeCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ieG9yIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJPTkUiCisgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEVOIgorIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlpFUk8iCisgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik1hdGhDb250ZXh0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1hdGhDb250ZXh0IgorIHR5cGU9ImphdmEubWF0aC5NYXRoQ29udGV4dCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByZWNpc2lvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNYXRoQ29udGV4dCIKKyB0eXBlPSJqYXZhLm1hdGguTWF0aENvbnRleHQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcmVjaXNpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icm91bmRpbmdNb2RlIiB0eXBlPSJqYXZhLm1hdGguUm91bmRpbmdNb2RlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNYXRoQ29udGV4dCIKKyB0eXBlPSJqYXZhLm1hdGguTWF0aENvbnRleHQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRQcmVjaXNpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Um91bmRpbmdNb2RlIgorIHJldHVybj0iamF2YS5tYXRoLlJvdW5kaW5nTW9kZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkRFQ0lNQUwxMjgiCisgdHlwZT0iamF2YS5tYXRoLk1hdGhDb250ZXh0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFQ0lNQUwzMiIKKyB0eXBlPSJqYXZhLm1hdGguTWF0aENvbnRleHQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVDSU1BTDY0IgorIHR5cGU9ImphdmEubWF0aC5NYXRoQ29udGV4dCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVTkxJTUlURUQiCisgdHlwZT0iamF2YS5tYXRoLk1hdGhDb250ZXh0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSb3VuZGluZ01vZGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkVudW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iamF2YS5tYXRoLlJvdW5kaW5nTW9kZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJqYXZhLm1hdGguUm91bmRpbmdNb2RlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZXMiCisgcmV0dXJuPSJqYXZhLm1hdGguUm91bmRpbmdNb2RlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iamF2YS5uZXQiCis+Cis8Y2xhc3MgbmFtZT0iQXV0aGVudGljYXRvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBdXRoZW50aWNhdG9yIgorIHR5cGU9ImphdmEubmV0LkF1dGhlbnRpY2F0b3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0UGFzc3dvcmRBdXRoZW50aWNhdGlvbiIKKyByZXR1cm49ImphdmEubmV0LlBhc3N3b3JkQXV0aGVudGljYXRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVxdWVzdGluZ0hvc3QiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVxdWVzdGluZ1BvcnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXF1ZXN0aW5nUHJvbXB0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlcXVlc3RpbmdQcm90b2NvbCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXF1ZXN0aW5nU2NoZW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlcXVlc3RpbmdTaXRlIgorIHJldHVybj0iamF2YS5uZXQuSW5ldEFkZHJlc3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXF1ZXN0aW5nVVJMIgorIHJldHVybj0iamF2YS5uZXQuVVJMIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlcXVlc3RvclR5cGUiCisgcmV0dXJuPSJqYXZhLm5ldC5BdXRoZW50aWNhdG9yLlJlcXVlc3RvclR5cGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVxdWVzdFBhc3N3b3JkQXV0aGVudGljYXRpb24iCisgcmV0dXJuPSJqYXZhLm5ldC5QYXNzd29yZEF1dGhlbnRpY2F0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ickFkZHIiIHR5cGU9ImphdmEubmV0LkluZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyUG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyUHJvdG9jb2wiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJQcm9tcHQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJTY2hlbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVxdWVzdFBhc3N3b3JkQXV0aGVudGljYXRpb24iCisgcmV0dXJuPSJqYXZhLm5ldC5QYXNzd29yZEF1dGhlbnRpY2F0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ickhvc3QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJBZGRyIiB0eXBlPSJqYXZhLm5ldC5JbmV0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iclBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iclByb3RvY29sIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyUHJvbXB0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyU2NoZW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcXVlc3RQYXNzd29yZEF1dGhlbnRpY2F0aW9uIgorIHJldHVybj0iamF2YS5uZXQuUGFzc3dvcmRBdXRoZW50aWNhdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJySG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ickFkZHIiIHR5cGU9ImphdmEubmV0LkluZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyUG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyUHJvdG9jb2wiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJQcm9tcHQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJTY2hlbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJVUkwiIHR5cGU9ImphdmEubmV0LlVSTCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxVHlwZSIgdHlwZT0iamF2YS5uZXQuQXV0aGVudGljYXRvci5SZXF1ZXN0b3JUeXBlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERlZmF1bHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImEiIHR5cGU9ImphdmEubmV0LkF1dGhlbnRpY2F0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQXV0aGVudGljYXRvci5SZXF1ZXN0b3JUeXBlIgorIGV4dGVuZHM9ImphdmEubGFuZy5FbnVtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iamF2YS5uZXQuQXV0aGVudGljYXRvci5SZXF1ZXN0b3JUeXBlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVzIgorIHJldHVybj0iamF2YS5uZXQuQXV0aGVudGljYXRvci5SZXF1ZXN0b3JUeXBlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJpbmRFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5uZXQuU29ja2V0RXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmluZEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLm5ldC5CaW5kRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmluZEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLm5ldC5CaW5kRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNhY2hlUmVxdWVzdCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDYWNoZVJlcXVlc3QiCisgdHlwZT0iamF2YS5uZXQuQ2FjaGVSZXF1ZXN0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFib3J0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJvZHkiCisgcmV0dXJuPSJqYXZhLmlvLk91dHB1dFN0cmVhbSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDYWNoZVJlc3BvbnNlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNhY2hlUmVzcG9uc2UiCisgdHlwZT0iamF2YS5uZXQuQ2FjaGVSZXNwb25zZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRCb2R5IgorIHJldHVybj0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIZWFkZXJzIgorIHJldHVybj0iamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLnV0aWwuTGlzdCZsdDtqYXZhLmxhbmcuU3RyaW5nJmd0OyZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29ubmVjdEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb25uZWN0RXhjZXB0aW9uIgorIHR5cGU9ImphdmEubmV0LkNvbm5lY3RFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb25uZWN0RXhjZXB0aW9uIgorIHR5cGU9ImphdmEubmV0LkNvbm5lY3RFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29udGVudEhhbmRsZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29udGVudEhhbmRsZXIiCisgdHlwZT0iamF2YS5uZXQuQ29udGVudEhhbmRsZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudCIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idUNvbm4iIHR5cGU9ImphdmEubmV0LlVSTENvbm5lY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbnRlbnQiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1Q29ubiIgdHlwZT0iamF2YS5uZXQuVVJMQ29ubmVjdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZXMiIHR5cGU9ImphdmEubGFuZy5DbGFzc1tdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ29udGVudEhhbmRsZXJGYWN0b3J5IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY3JlYXRlQ29udGVudEhhbmRsZXIiCisgcmV0dXJuPSJqYXZhLm5ldC5Db250ZW50SGFuZGxlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZW50VHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ29va2llSGFuZGxlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb29raWVIYW5kbGVyIgorIHR5cGU9ImphdmEubmV0LkNvb2tpZUhhbmRsZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLnV0aWwuTGlzdCZsdDtqYXZhLmxhbmcuU3RyaW5nJmd0OyZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLm5ldC5VUkkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3RIZWFkZXJzIiB0eXBlPSJqYXZhLnV0aWwuTWFwJmx0O2phdmEubGFuZy5TdHJpbmcsIGphdmEudXRpbC5MaXN0Jmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVmYXVsdCIKKyByZXR1cm49ImphdmEubmV0LkNvb2tpZUhhbmRsZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iamF2YS5uZXQuVVJJIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZUhlYWRlcnMiIHR5cGU9ImphdmEudXRpbC5NYXAmbHQ7amF2YS5sYW5nLlN0cmluZywgamF2YS51dGlsLkxpc3QmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREZWZhdWx0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjSGFuZGxlciIgdHlwZT0iamF2YS5uZXQuQ29va2llSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEYXRhZ3JhbVBhY2tldCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEYXRhZ3JhbVBhY2tldCIKKyB0eXBlPSJqYXZhLm5ldC5EYXRhZ3JhbVBhY2tldCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRhdGFncmFtUGFja2V0IgorIHR5cGU9ImphdmEubmV0LkRhdGFncmFtUGFja2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRhdGFncmFtUGFja2V0IgorIHR5cGU9ImphdmEubmV0LkRhdGFncmFtUGFja2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imhvc3QiIHR5cGU9ImphdmEubmV0LkluZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhUG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEYXRhZ3JhbVBhY2tldCIKKyB0eXBlPSJqYXZhLm5ldC5EYXRhZ3JhbVBhY2tldCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imhvc3QiIHR5cGU9ImphdmEubmV0LkluZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRhdGFncmFtUGFja2V0IgorIHR5cGU9ImphdmEubmV0LkRhdGFncmFtUGFja2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic29ja0FkZHIiIHR5cGU9ImphdmEubmV0LlNvY2tldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNvY2tldEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuU29ja2V0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEYXRhZ3JhbVBhY2tldCIKKyB0eXBlPSJqYXZhLm5ldC5EYXRhZ3JhbVBhY2tldCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzb2NrQWRkciIgdHlwZT0iamF2YS5uZXQuU29ja2V0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRBZGRyZXNzIgorIHJldHVybj0iamF2YS5uZXQuSW5ldEFkZHJlc3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREYXRhIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T2Zmc2V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UG9ydCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNvY2tldEFkZHJlc3MiCisgcmV0dXJuPSJqYXZhLm5ldC5Tb2NrZXRBZGRyZXNzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QWRkcmVzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWRkciIgdHlwZT0iamF2YS5uZXQuSW5ldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGF0YSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFuT2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFMZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREYXRhIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWYiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMZW5ndGgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBvcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFQb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U29ja2V0QWRkcmVzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic29ja0FkZHIiIHR5cGU9ImphdmEubmV0LlNvY2tldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRGF0YWdyYW1Tb2NrZXQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRhdGFncmFtU29ja2V0IgorIHR5cGU9ImphdmEubmV0LkRhdGFncmFtU29ja2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRhdGFncmFtU29ja2V0IgorIHR5cGU9ImphdmEubmV0LkRhdGFncmFtU29ja2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYVBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRhdGFncmFtU29ja2V0IgorIHR5cGU9ImphdmEubmV0LkRhdGFncmFtU29ja2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYVBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWRkciIgdHlwZT0iamF2YS5uZXQuSW5ldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNvY2tldEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuU29ja2V0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEYXRhZ3JhbVNvY2tldCIKKyB0eXBlPSJqYXZhLm5ldC5EYXRhZ3JhbVNvY2tldCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvY2tldEltcGwiIHR5cGU9ImphdmEubmV0LkRhdGFncmFtU29ja2V0SW1wbCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGF0YWdyYW1Tb2NrZXQiCisgdHlwZT0iamF2YS5uZXQuRGF0YWdyYW1Tb2NrZXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbEFkZHIiIHR5cGU9ImphdmEubmV0LlNvY2tldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNvY2tldEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuU29ja2V0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYmluZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsQWRkciIgdHlwZT0iamF2YS5uZXQuU29ja2V0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbm5lY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbkFkZHJlc3MiIHR5cGU9ImphdmEubmV0LkluZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhUG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbm5lY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZW1vdGVBZGRyIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTb2NrZXRFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlNvY2tldEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXNjb25uZWN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCcm9hZGNhc3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTb2NrZXRFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlNvY2tldEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDaGFubmVsIgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuRGF0YWdyYW1DaGFubmVsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluZXRBZGRyZXNzIgorIHJldHVybj0iamF2YS5uZXQuSW5ldEFkZHJlc3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9jYWxBZGRyZXNzIgorIHJldHVybj0iamF2YS5uZXQuSW5ldEFkZHJlc3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9jYWxQb3J0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvY2FsU29ja2V0QWRkcmVzcyIKKyByZXR1cm49ImphdmEubmV0LlNvY2tldEFkZHJlc3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UG9ydCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZWNlaXZlQnVmZmVyU2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTb2NrZXRFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlNvY2tldEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZW1vdGVTb2NrZXRBZGRyZXNzIgorIHJldHVybj0iamF2YS5uZXQuU29ja2V0QWRkcmVzcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXVzZUFkZHJlc3MiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTb2NrZXRFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlNvY2tldEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZW5kQnVmZmVyU2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTb2NrZXRFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlNvY2tldEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTb1RpbWVvdXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHJhZmZpY0NsYXNzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTb2NrZXRFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlNvY2tldEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0JvdW5kIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0Nsb3NlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNDb25uZWN0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlY2VpdmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2siIHR5cGU9ImphdmEubmV0LkRhdGFncmFtUGFja2V0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFjayIgdHlwZT0iamF2YS5uZXQuRGF0YWdyYW1QYWNrZXQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEJyb2FkY2FzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJyb2FkY2FzdCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGF0YWdyYW1Tb2NrZXRJbXBsRmFjdG9yeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWMiIHR5cGU9ImphdmEubmV0LkRhdGFncmFtU29ja2V0SW1wbEZhY3RvcnkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJlY2VpdmVCdWZmZXJTaXplIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNvY2tldEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuU29ja2V0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJldXNlQWRkcmVzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJldXNlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTb2NrZXRFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlNvY2tldEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTZW5kQnVmZmVyU2l6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTb2NrZXRFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlNvY2tldEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTb1RpbWVvdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVvdXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VHJhZmZpY0NsYXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRGF0YWdyYW1Tb2NrZXRJbXBsIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5uZXQuU29ja2V0T3B0aW9ucyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGF0YWdyYW1Tb2NrZXRJbXBsIgorIHR5cGU9ImphdmEubmV0LkRhdGFncmFtU29ja2V0SW1wbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJiaW5kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFkZHIiIHR5cGU9ImphdmEubmV0LkluZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTb2NrZXRFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlNvY2tldEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb25uZWN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5ldEFkZHIiIHR5cGU9ImphdmEubmV0LkluZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNvY2tldEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuU29ja2V0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGlzY29ubmVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmlsZURlc2NyaXB0b3IiCisgcmV0dXJuPSJqYXZhLmlvLkZpbGVEZXNjcmlwdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvY2FsUG9ydCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUVEwiCisgcmV0dXJuPSJieXRlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGltZVRvTGl2ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJqb2luIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJhZGRyIiB0eXBlPSJqYXZhLm5ldC5JbmV0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iam9pbkdyb3VwIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJhZGRyIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXRJbnRlcmZhY2UiIHR5cGU9ImphdmEubmV0Lk5ldHdvcmtJbnRlcmZhY2UiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxlYXZlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJhZGRyIiB0eXBlPSJqYXZhLm5ldC5JbmV0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGVhdmVHcm91cCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWRkciIgdHlwZT0iamF2YS5uZXQuU29ja2V0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV0SW50ZXJmYWNlIiB0eXBlPSJqYXZhLm5ldC5OZXR3b3JrSW50ZXJmYWNlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwZWVrIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlbmRlciIgdHlwZT0iamF2YS5uZXQuSW5ldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBlZWtEYXRhIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2siIHR5cGU9ImphdmEubmV0LkRhdGFncmFtUGFja2V0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWNlaXZlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYWNrIiB0eXBlPSJqYXZhLm5ldC5EYXRhZ3JhbVBhY2tldCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFjayIgdHlwZT0iamF2YS5uZXQuRGF0YWdyYW1QYWNrZXQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRUTCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0dGwiIHR5cGU9ImJ5dGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRpbWVUb0xpdmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR0bCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImZkIgorIHR5cGU9ImphdmEuaW8uRmlsZURlc2NyaXB0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsb2NhbFBvcnQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJEYXRhZ3JhbVNvY2tldEltcGxGYWN0b3J5IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY3JlYXRlRGF0YWdyYW1Tb2NrZXRJbXBsIgorIHJldHVybj0iamF2YS5uZXQuRGF0YWdyYW1Tb2NrZXRJbXBsIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJGaWxlTmFtZU1hcCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldENvbnRlbnRUeXBlRm9yIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iSHR0cFJldHJ5RXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEuaW8uSU9FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIdHRwUmV0cnlFeGNlcHRpb24iCisgdHlwZT0iamF2YS5uZXQuSHR0cFJldHJ5RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBSZXRyeUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLm5ldC5IdHRwUmV0cnlFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhdGlvbiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVhc29uIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNwb25zZUNvZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSHR0cFVSTENvbm5lY3Rpb24iCisgZXh0ZW5kcz0iamF2YS5uZXQuVVJMQ29ubmVjdGlvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSHR0cFVSTENvbm5lY3Rpb24iCisgdHlwZT0iamF2YS5uZXQuSHR0cFVSTENvbm5lY3Rpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImphdmEubmV0LlVSTCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRpc2Nvbm5lY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RXJyb3JTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZvbGxvd1JlZGlyZWN0cyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZUZvbGxvd1JlZGlyZWN0cyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVxdWVzdE1ldGhvZCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVzcG9uc2VDb2RlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXNwb25zZU1lc3NhZ2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDaHVua2VkU3RyZWFtaW5nTW9kZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNodW5rbGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Rml4ZWRMZW5ndGhTdHJlYW1pbmdNb2RlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGVudExlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZvbGxvd1JlZGlyZWN0cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0byIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJbnN0YW5jZUZvbGxvd1JlZGlyZWN0cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZvbGxvd1JlZGlyZWN0cyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZXF1ZXN0TWV0aG9kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWV0aG9kIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQcm90b2NvbEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuUHJvdG9jb2xFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXNpbmdQcm94eSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkhUVFBfQUNDRVBURUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMDIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSFRUUF9CQURfR0FURVdBWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUwMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIVFRQX0JBRF9NRVRIT0QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSFRUUF9CQURfUkVRVUVTVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIVFRQX0NMSUVOVF9USU1FT1VUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDA4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhUVFBfQ09ORkxJQ1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MDkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSFRUUF9DUkVBVEVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjAxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhUVFBfRU5USVRZX1RPT19MQVJHRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQxMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIVFRQX0ZPUkJJRERFTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQwMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIVFRQX0dBVEVXQVlfVElNRU9VVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUwNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIVFRQX0dPTkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSFRUUF9JTlRFUk5BTF9FUlJPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIVFRQX0xFTkdUSF9SRVFVSVJFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIVFRQX01PVkVEX1BFUk0iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSFRUUF9NT1ZFRF9URU1QIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzAyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhUVFBfTVVMVF9DSE9JQ0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSFRUUF9OT1RfQUNDRVBUQUJMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQwNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIVFRQX05PVF9BVVRIT1JJVEFUSVZFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjAzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhUVFBfTk9UX0ZPVU5EIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDA0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhUVFBfTk9UX0lNUExFTUVOVEVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTAxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhUVFBfTk9UX01PRElGSUVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzA0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhUVFBfTk9fQ09OVEVOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIVFRQX09LIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhUVFBfUEFSVElBTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIVFRQX1BBWU1FTlRfUkVRVUlSRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MDIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSFRUUF9QUkVDT05fRkFJTEVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhUVFBfUFJPWFlfQVVUSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQwNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIVFRQX1JFUV9UT09fTE9ORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQxNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIVFRQX1JFU0VUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjA1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhUVFBfU0VFX09USEVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzAzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhUVFBfU0VSVkVSX0VSUk9SIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSFRUUF9VTkFVVEhPUklaRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSFRUUF9VTkFWQUlMQUJMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUwMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIVFRQX1VOU1VQUE9SVEVEX1RZUEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSFRUUF9VU0VfUFJPWFkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSFRUUF9WRVJTSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTA1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNodW5rTGVuZ3RoIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImZpeGVkQ29udGVudExlbmd0aCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpbnN0YW5jZUZvbGxvd1JlZGlyZWN0cyIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibWV0aG9kIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJyZXNwb25zZUNvZGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icmVzcG9uc2VNZXNzYWdlIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW5ldDRBZGRyZXNzIgorIGV4dGVuZHM9ImphdmEubmV0LkluZXRBZGRyZXNzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW5ldDZBZGRyZXNzIgorIGV4dGVuZHM9ImphdmEubmV0LkluZXRBZGRyZXNzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0QnlBZGRyZXNzIgorIHJldHVybj0iamF2YS5uZXQuSW5ldDZBZGRyZXNzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imhvc3QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFkZHIiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NvcGVfaWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iVW5rbm93bkhvc3RFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlVua25vd25Ib3N0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJ5QWRkcmVzcyIKKyByZXR1cm49ImphdmEubmV0LkluZXQ2QWRkcmVzcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhZGRyIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5pZiIgdHlwZT0iamF2YS5uZXQuTmV0d29ya0ludGVyZmFjZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iVW5rbm93bkhvc3RFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlVua25vd25Ib3N0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNjb3BlSWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2NvcGVkSW50ZXJmYWNlIgorIHJldHVybj0iamF2YS5uZXQuTmV0d29ya0ludGVyZmFjZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0lQdjRDb21wYXRpYmxlQWRkcmVzcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW5ldEFkZHJlc3MiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRBZGRyZXNzIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFsbEJ5TmFtZSIKKyByZXR1cm49ImphdmEubmV0LkluZXRBZGRyZXNzW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iVW5rbm93bkhvc3RFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlVua25vd25Ib3N0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJ5QWRkcmVzcyIKKyByZXR1cm49ImphdmEubmV0LkluZXRBZGRyZXNzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlwQWRkcmVzcyIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJVbmtub3duSG9zdEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuVW5rbm93bkhvc3RFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QnlBZGRyZXNzIgorIHJldHVybj0iamF2YS5uZXQuSW5ldEFkZHJlc3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlwQWRkcmVzcyIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJVbmtub3duSG9zdEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuVW5rbm93bkhvc3RFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QnlOYW1lIgorIHJldHVybj0iamF2YS5uZXQuSW5ldEFkZHJlc3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iVW5rbm93bkhvc3RFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlVua25vd25Ib3N0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENhbm9uaWNhbEhvc3ROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIb3N0QWRkcmVzcyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SG9zdE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvY2FsSG9zdCIKKyByZXR1cm49ImphdmEubmV0LkluZXRBZGRyZXNzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlVua25vd25Ib3N0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Vbmtub3duSG9zdEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0FueUxvY2FsQWRkcmVzcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNMaW5rTG9jYWxBZGRyZXNzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0xvb3BiYWNrQWRkcmVzcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNNQ0dsb2JhbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNNQ0xpbmtMb2NhbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNNQ05vZGVMb2NhbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNNQ09yZ0xvY2FsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc01DU2l0ZUxvY2FsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc011bHRpY2FzdEFkZHJlc3MiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUmVhY2hhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1JlYWNoYWJsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ldGlmIiB0eXBlPSJqYXZhLm5ldC5OZXR3b3JrSW50ZXJmYWNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0dGwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1NpdGVMb2NhbEFkZHJlc3MiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkluZXRTb2NrZXRBZGRyZXNzIgorIGV4dGVuZHM9ImphdmEubmV0LlNvY2tldEFkZHJlc3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbmV0U29ja2V0QWRkcmVzcyIKKyB0eXBlPSJqYXZhLm5ldC5JbmV0U29ja2V0QWRkcmVzcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW5ldFNvY2tldEFkZHJlc3MiCisgdHlwZT0iamF2YS5uZXQuSW5ldFNvY2tldEFkZHJlc3MiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhZGRyZXNzIiB0eXBlPSJqYXZhLm5ldC5JbmV0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbmV0U29ja2V0QWRkcmVzcyIKKyB0eXBlPSJqYXZhLm5ldC5JbmV0U29ja2V0QWRkcmVzcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imhvc3QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVVucmVzb2x2ZWQiCisgcmV0dXJuPSJqYXZhLm5ldC5JbmV0U29ja2V0QWRkcmVzcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXF1YWxzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb2NrZXRBZGRyIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFkZHJlc3MiCisgcmV0dXJuPSJqYXZhLm5ldC5JbmV0QWRkcmVzcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhvc3ROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBvcnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNoQ29kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzVW5yZXNvbHZlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJKYXJVUkxDb25uZWN0aW9uIgorIGV4dGVuZHM9ImphdmEubmV0LlVSTENvbm5lY3Rpb24iCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkphclVSTENvbm5lY3Rpb24iCisgdHlwZT0iamF2YS5uZXQuSmFyVVJMQ29ubmVjdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iamF2YS5uZXQuVVJMIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRVUkxFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0Lk1hbGZvcm1lZFVSTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEF0dHJpYnV0ZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuamFyLkF0dHJpYnV0ZXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENlcnRpZmljYXRlcyIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbnRyeU5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEphckVudHJ5IgorIHJldHVybj0iamF2YS51dGlsLmphci5KYXJFbnRyeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SmFyRmlsZSIKKyByZXR1cm49ImphdmEudXRpbC5qYXIuSmFyRmlsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRKYXJGaWxlVVJMIgorIHJldHVybj0iamF2YS5uZXQuVVJMIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1haW5BdHRyaWJ1dGVzIgorIHJldHVybj0iamF2YS51dGlsLmphci5BdHRyaWJ1dGVzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYW5pZmVzdCIKKyByZXR1cm49ImphdmEudXRpbC5qYXIuTWFuaWZlc3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iamFyRmlsZVVSTENvbm5lY3Rpb24iCisgdHlwZT0iamF2YS5uZXQuVVJMQ29ubmVjdGlvbiIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNYWxmb3JtZWRVUkxFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5pby5JT0V4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1hbGZvcm1lZFVSTEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLm5ldC5NYWxmb3JtZWRVUkxFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNYWxmb3JtZWRVUkxFeGNlcHRpb24iCisgdHlwZT0iamF2YS5uZXQuTWFsZm9ybWVkVVJMRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik11bHRpY2FzdFNvY2tldCIKKyBleHRlbmRzPSJqYXZhLm5ldC5EYXRhZ3JhbVNvY2tldCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik11bHRpY2FzdFNvY2tldCIKKyB0eXBlPSJqYXZhLm5ldC5NdWx0aWNhc3RTb2NrZXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTXVsdGljYXN0U29ja2V0IgorIHR5cGU9ImphdmEubmV0Lk11bHRpY2FzdFNvY2tldCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFQb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNdWx0aWNhc3RTb2NrZXQiCisgdHlwZT0iamF2YS5uZXQuTXVsdGljYXN0U29ja2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxBZGRyIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEludGVyZmFjZSIKKyByZXR1cm49ImphdmEubmV0LkluZXRBZGRyZXNzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTb2NrZXRFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlNvY2tldEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb29wYmFja01vZGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTb2NrZXRFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlNvY2tldEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROZXR3b3JrSW50ZXJmYWNlIgorIHJldHVybj0iamF2YS5uZXQuTmV0d29ya0ludGVyZmFjZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VFRMIgorIHJldHVybj0iYnl0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaW1lVG9MaXZlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJqb2luR3JvdXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cEFkZHIiIHR5cGU9ImphdmEubmV0LkluZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJqb2luR3JvdXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cEFkZHJlc3MiIHR5cGU9ImphdmEubmV0LlNvY2tldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ldEludGVyZmFjZSIgdHlwZT0iamF2YS5uZXQuTmV0d29ya0ludGVyZmFjZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGVhdmVHcm91cCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imdyb3VwQWRkciIgdHlwZT0iamF2YS5uZXQuSW5ldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxlYXZlR3JvdXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cEFkZHJlc3MiIHR5cGU9ImphdmEubmV0LlNvY2tldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ldEludGVyZmFjZSIgdHlwZT0iamF2YS5uZXQuTmV0d29ya0ludGVyZmFjZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFjayIgdHlwZT0iamF2YS5uZXQuRGF0YWdyYW1QYWNrZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR0bCIgdHlwZT0iYnl0ZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW50ZXJmYWNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWRkciIgdHlwZT0iamF2YS5uZXQuSW5ldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNvY2tldEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuU29ja2V0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldExvb3BiYWNrTW9kZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxvb3AiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNvY2tldEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuU29ja2V0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE5ldHdvcmtJbnRlcmZhY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXRJbnRlcmZhY2UiIHR5cGU9ImphdmEubmV0Lk5ldHdvcmtJbnRlcmZhY2UiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNvY2tldEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuU29ja2V0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRUTCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHRsIiB0eXBlPSJieXRlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUaW1lVG9MaXZlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHRsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik5ldFBlcm1pc3Npb24iCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5CYXNpY1Blcm1pc3Npb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik5ldFBlcm1pc3Npb24iCisgdHlwZT0iamF2YS5uZXQuTmV0UGVybWlzc2lvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik5ldFBlcm1pc3Npb24iCisgdHlwZT0iamF2YS5uZXQuTmV0UGVybWlzc2lvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGlvbnMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJOZXR3b3JrSW50ZXJmYWNlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRCeUluZXRBZGRyZXNzIgorIHJldHVybj0iamF2YS5uZXQuTmV0d29ya0ludGVyZmFjZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhZGRyZXNzIiB0eXBlPSJqYXZhLm5ldC5JbmV0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QnlOYW1lIgorIHJldHVybj0iamF2YS5uZXQuTmV0d29ya0ludGVyZmFjZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlcmZhY2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTb2NrZXRFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlNvY2tldEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREaXNwbGF5TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5ldEFkZHJlc3NlcyIKKyByZXR1cm49ImphdmEudXRpbC5FbnVtZXJhdGlvbiZsdDtqYXZhLm5ldC5JbmV0QWRkcmVzcyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmV0d29ya0ludGVyZmFjZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuRW51bWVyYXRpb24mbHQ7amF2YS5uZXQuTmV0d29ya0ludGVyZmFjZSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTm9Sb3V0ZVRvSG9zdEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOb1JvdXRlVG9Ib3N0RXhjZXB0aW9uIgorIHR5cGU9ImphdmEubmV0Lk5vUm91dGVUb0hvc3RFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOb1JvdXRlVG9Ib3N0RXhjZXB0aW9uIgorIHR5cGU9ImphdmEubmV0Lk5vUm91dGVUb0hvc3RFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUGFzc3dvcmRBdXRoZW50aWNhdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQYXNzd29yZEF1dGhlbnRpY2F0aW9uIgorIHR5cGU9ImphdmEubmV0LlBhc3N3b3JkQXV0aGVudGljYXRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1c2VyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFzc3dvcmQiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldFBhc3N3b3JkIgorIHJldHVybj0iY2hhcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFVzZXJOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQb3J0VW5yZWFjaGFibGVFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5uZXQuU29ja2V0RXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUG9ydFVucmVhY2hhYmxlRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubmV0LlBvcnRVbnJlYWNoYWJsZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBvcnRVbnJlYWNoYWJsZUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLm5ldC5Qb3J0VW5yZWFjaGFibGVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUHJvdG9jb2xFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5pby5JT0V4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByb3RvY29sRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubmV0LlByb3RvY29sRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJvdG9jb2xFeGNlcHRpb24iCisgdHlwZT0iamF2YS5uZXQuUHJvdG9jb2xFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUHJveHkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByb3h5IgorIHR5cGU9ImphdmEubmV0LlByb3h5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5uZXQuUHJveHkuVHlwZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2EiIHR5cGU9ImphdmEubmV0LlNvY2tldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRyZXNzIgorIHJldHVybj0iamF2YS5uZXQuU29ja2V0QWRkcmVzcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlcXVhbHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iaiIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNoQ29kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InR5cGUiCisgcmV0dXJuPSJqYXZhLm5ldC5Qcm94eS5UeXBlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iTk9fUFJPWFkiCisgdHlwZT0iamF2YS5uZXQuUHJveHkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlByb3h5LlR5cGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkVudW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJqYXZhLm5ldC5Qcm94eS5UeXBlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVzIgorIHJldHVybj0iamF2YS5uZXQuUHJveHkuVHlwZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQcm94eVNlbGVjdG9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByb3h5U2VsZWN0b3IiCisgdHlwZT0iamF2YS5uZXQuUHJveHlTZWxlY3RvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjb25uZWN0RmFpbGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubmV0LlVSSSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2EiIHR5cGU9ImphdmEubmV0LlNvY2tldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlvZSIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWZhdWx0IgorIHJldHVybj0iamF2YS5uZXQuUHJveHlTZWxlY3RvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbGVjdCIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2phdmEubmV0LlByb3h5Jmd0OyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubmV0LlVSSSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREZWZhdWx0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3RvciIgdHlwZT0iamF2YS5uZXQuUHJveHlTZWxlY3RvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSZXNwb25zZUNhY2hlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlc3BvbnNlQ2FjaGUiCisgdHlwZT0iamF2YS5uZXQuUmVzcG9uc2VDYWNoZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJqYXZhLm5ldC5DYWNoZVJlc3BvbnNlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iamF2YS5uZXQuVVJJIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJycXN0TWV0aG9kIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJycXN0SGVhZGVycyIgdHlwZT0iamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLnV0aWwuTGlzdCZsdDtqYXZhLmxhbmcuU3RyaW5nJmd0OyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlZmF1bHQiCisgcmV0dXJuPSJqYXZhLm5ldC5SZXNwb25zZUNhY2hlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0iamF2YS5uZXQuQ2FjaGVSZXF1ZXN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iamF2YS5uZXQuVVJJIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb25uIiB0eXBlPSJqYXZhLm5ldC5VUkxDb25uZWN0aW9uIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREZWZhdWx0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZUNhY2hlIiB0eXBlPSJqYXZhLm5ldC5SZXNwb25zZUNhY2hlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNlY3VyZUNhY2hlUmVzcG9uc2UiCisgZXh0ZW5kcz0iamF2YS5uZXQuQ2FjaGVSZXNwb25zZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2VjdXJlQ2FjaGVSZXNwb25zZSIKKyB0eXBlPSJqYXZhLm5ldC5TZWN1cmVDYWNoZVJlc3BvbnNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldENpcGhlclN1aXRlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvY2FsQ2VydGlmaWNhdGVDaGFpbiIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2phdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZSZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhbFByaW5jaXBhbCIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHJpbmNpcGFsIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGVlclByaW5jaXBhbCIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHJpbmNpcGFsIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNTTFBlZXJVbnZlcmlmaWVkRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTFBlZXJVbnZlcmlmaWVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlcnZlckNlcnRpZmljYXRlQ2hhaW4iCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDtqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGUmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNTTFBlZXJVbnZlcmlmaWVkRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTFBlZXJVbnZlcmlmaWVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNlcnZlclNvY2tldCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2VydmVyU29ja2V0IgorIHR5cGU9ImphdmEubmV0LlNlcnZlclNvY2tldCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTZXJ2ZXJTb2NrZXQiCisgdHlwZT0iamF2YS5uZXQuU2VydmVyU29ja2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNlcnZlclNvY2tldCIKKyB0eXBlPSJqYXZhLm5ldC5TZXJ2ZXJTb2NrZXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiYWNrbG9nIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTZXJ2ZXJTb2NrZXQiCisgdHlwZT0iamF2YS5uZXQuU2VydmVyU29ja2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmFja2xvZyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbEFkZHIiIHR5cGU9ImphdmEubmV0LkluZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFjY2VwdCIKKyByZXR1cm49ImphdmEubmV0LlNvY2tldCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYmluZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsQWRkciIgdHlwZT0iamF2YS5uZXQuU29ja2V0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYmluZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsQWRkciIgdHlwZT0iamF2YS5uZXQuU29ja2V0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmFja2xvZyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoYW5uZWwiCisgcmV0dXJuPSJqYXZhLm5pby5jaGFubmVscy5TZXJ2ZXJTb2NrZXRDaGFubmVsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluZXRBZGRyZXNzIgorIHJldHVybj0iamF2YS5uZXQuSW5ldEFkZHJlc3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9jYWxQb3J0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvY2FsU29ja2V0QWRkcmVzcyIKKyByZXR1cm49ImphdmEubmV0LlNvY2tldEFkZHJlc3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVjZWl2ZUJ1ZmZlclNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNvY2tldEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuU29ja2V0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJldXNlQWRkcmVzcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNvY2tldEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuU29ja2V0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNvVGltZW91dCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbXBsQWNjZXB0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJhU29ja2V0IiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQm91bmQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ2xvc2VkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQZXJmb3JtYW5jZVByZWZlcmVuY2VzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29ubmVjdGlvblRpbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGF0ZW5jeSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiYW5kd2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZWNlaXZlQnVmZmVyU2l6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UmV1c2VBZGRyZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmV1c2UiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNvY2tldEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuU29ja2V0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNvVGltZW91dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTb2NrZXRFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlNvY2tldEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTb2NrZXRGYWN0b3J5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFGYWN0b3J5IiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRJbXBsRmFjdG9yeSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU29ja2V0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTb2NrZXQiCisgdHlwZT0iamF2YS5uZXQuU29ja2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU29ja2V0IgorIHR5cGU9ImphdmEubmV0LlNvY2tldCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3h5IiB0eXBlPSJqYXZhLm5ldC5Qcm94eSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU29ja2V0IgorIHR5cGU9ImphdmEubmV0LlNvY2tldCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRzdE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRzdFBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlVua25vd25Ib3N0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Vbmtub3duSG9zdEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU29ja2V0IgorIHR5cGU9ImphdmEubmV0LlNvY2tldCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRzdE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRzdFBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxBZGRyZXNzIiB0eXBlPSJqYXZhLm5ldC5JbmV0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxQb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTb2NrZXQiCisgdHlwZT0iamF2YS5uZXQuU29ja2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3N0TmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdHJlYW1pbmciIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTb2NrZXQiCisgdHlwZT0iamF2YS5uZXQuU29ja2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHN0QWRkcmVzcyIgdHlwZT0iamF2YS5uZXQuSW5ldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRzdFBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNvY2tldCIKKyB0eXBlPSJqYXZhLm5ldC5Tb2NrZXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkc3RBZGRyZXNzIiB0eXBlPSJqYXZhLm5ldC5JbmV0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHN0UG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbEFkZHJlc3MiIHR5cGU9ImphdmEubmV0LkluZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbFBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNvY2tldCIKKyB0eXBlPSJqYXZhLm5ldC5Tb2NrZXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFkZHIiIHR5cGU9ImphdmEubmV0LkluZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbWluZyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNvY2tldCIKKyB0eXBlPSJqYXZhLm5ldC5Tb2NrZXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbkltcGwiIHR5cGU9ImphdmEubmV0LlNvY2tldEltcGwiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNvY2tldEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuU29ja2V0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYmluZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsQWRkciIgdHlwZT0iamF2YS5uZXQuU29ja2V0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbm5lY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZW1vdGVBZGRyIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb25uZWN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVtb3RlQWRkciIgdHlwZT0iamF2YS5uZXQuU29ja2V0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDaGFubmVsIgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuU29ja2V0Q2hhbm5lbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbmV0QWRkcmVzcyIKKyByZXR1cm49ImphdmEubmV0LkluZXRBZGRyZXNzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElucHV0U3RyZWFtIgorIHJldHVybj0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0S2VlcEFsaXZlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9jYWxBZGRyZXNzIgorIHJldHVybj0iamF2YS5uZXQuSW5ldEFkZHJlc3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9jYWxQb3J0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvY2FsU29ja2V0QWRkcmVzcyIKKyByZXR1cm49ImphdmEubmV0LlNvY2tldEFkZHJlc3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T09CSW5saW5lIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T3V0cHV0U3RyZWFtIgorIHJldHVybj0iamF2YS5pby5PdXRwdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBvcnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVjZWl2ZUJ1ZmZlclNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVtb3RlU29ja2V0QWRkcmVzcyIKKyByZXR1cm49ImphdmEubmV0LlNvY2tldEFkZHJlc3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmV1c2VBZGRyZXNzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2VuZEJ1ZmZlclNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U29MaW5nZXIiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNvY2tldEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuU29ja2V0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNvVGltZW91dCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTb2NrZXRFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlNvY2tldEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUY3BOb0RlbGF5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHJhZmZpY0NsYXNzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTb2NrZXRFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlNvY2tldEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0JvdW5kIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0Nsb3NlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNDb25uZWN0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzSW5wdXRTaHV0ZG93biIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNPdXRwdXRTaHV0ZG93biIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VuZFVyZ2VudERhdGEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRLZWVwQWxpdmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T09CSW5saW5lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib29iaW5saW5lIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTb2NrZXRFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlNvY2tldEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQZXJmb3JtYW5jZVByZWZlcmVuY2VzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29ubmVjdGlvblRpbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGF0ZW5jeSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiYW5kd2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZWNlaXZlQnVmZmVyU2l6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTb2NrZXRFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlNvY2tldEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZXVzZUFkZHJlc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXVzZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2VuZEJ1ZmZlclNpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U29MaW5nZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvbiIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTb2NrZXRFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlNvY2tldEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTb1RpbWVvdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVvdXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U29ja2V0SW1wbEZhY3RvcnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFjIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRJbXBsRmFjdG9yeSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGNwTm9EZWxheSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9uIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTb2NrZXRFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlNvY2tldEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUcmFmZmljQ2xhc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTb2NrZXRFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlNvY2tldEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaHV0ZG93bklucHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2h1dGRvd25PdXRwdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTb2NrZXRBZGRyZXNzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNvY2tldEFkZHJlc3MiCisgdHlwZT0iamF2YS5uZXQuU29ja2V0QWRkcmVzcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTb2NrZXRFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5pby5JT0V4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNvY2tldEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTb2NrZXRFeGNlcHRpb24iCisgdHlwZT0iamF2YS5uZXQuU29ja2V0RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNvY2tldEltcGwiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLm5ldC5Tb2NrZXRPcHRpb25zIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTb2NrZXRJbXBsIgorIHR5cGU9ImphdmEubmV0LlNvY2tldEltcGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWNjZXB0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdTb2NrZXQiIHR5cGU9ImphdmEubmV0LlNvY2tldEltcGwiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImF2YWlsYWJsZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJiaW5kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJhZGRyZXNzIiB0eXBlPSJqYXZhLm5ldC5JbmV0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29ubmVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb25uZWN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJhZGRyZXNzIiB0eXBlPSJqYXZhLm5ldC5JbmV0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb25uZWN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZW1vdGVBZGRyIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lb3V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNTdHJlYW1pbmciIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpbGVEZXNjcmlwdG9yIgorIHJldHVybj0iamF2YS5pby5GaWxlRGVzY3JpcHRvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbmV0QWRkcmVzcyIKKyByZXR1cm49ImphdmEubmV0LkluZXRBZGRyZXNzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElucHV0U3RyZWFtIgorIHJldHVybj0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhbFBvcnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T3B0aW9uIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcHRJRCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTb2NrZXRFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlNvY2tldEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPdXRwdXRTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLk91dHB1dFN0cmVhbSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQb3J0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxpc3RlbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYmFja2xvZyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kVXJnZW50RGF0YSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T3B0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcHRJRCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNvY2tldEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuU29ja2V0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBlcmZvcm1hbmNlUHJlZmVyZW5jZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb25uZWN0aW9uVGltZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYXRlbmN5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJhbmR3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNodXRkb3duSW5wdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaHV0ZG93bk91dHB1dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzVXJnZW50RGF0YSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJhZGRyZXNzIgorIHR5cGU9ImphdmEubmV0LkluZXRBZGRyZXNzIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZmQiCisgdHlwZT0iamF2YS5pby5GaWxlRGVzY3JpcHRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxvY2FscG9ydCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwb3J0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iU29ja2V0SW1wbEZhY3RvcnkiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVTb2NrZXRJbXBsIgorIHJldHVybj0iamF2YS5uZXQuU29ja2V0SW1wbCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iU29ja2V0T3B0aW9ucyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldE9wdGlvbiIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3B0SUQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU29ja2V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T3B0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcHRJRCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWwiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNvY2tldEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuU29ja2V0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iSVBfTVVMVElDQVNUX0lGIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSVBfTVVMVElDQVNUX0lGMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklQX01VTFRJQ0FTVF9MT09QIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSVBfVE9TIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTT19CSU5EQUREUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNPX0JST0FEQ0FTVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNPX0tFRVBBTElWRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU09fTElOR0VSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNPX09PQklOTElORSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQwOTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU09fUkNWQlVGIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDA5OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTT19SRVVTRUFERFIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNPX1NOREJVRiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQwOTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU09fVElNRU9VVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQxMDIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVENQX05PREVMQVkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iU29ja2V0UGVybWlzc2lvbiIKKyBleHRlbmRzPSJqYXZhLnNlY3VyaXR5LlBlcm1pc3Npb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNvY2tldFBlcm1pc3Npb24iCisgdHlwZT0iamF2YS5uZXQuU29ja2V0UGVybWlzc2lvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imhvc3QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImVxdWFscyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im90aGVyIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFjdGlvbnMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc2hDb2RlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImltcGxpZXMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlBlcm1pc3Npb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU29ja2V0VGltZW91dEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmlvLkludGVycnVwdGVkSU9FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTb2NrZXRUaW1lb3V0RXhjZXB0aW9uIgorIHR5cGU9ImphdmEubmV0LlNvY2tldFRpbWVvdXRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTb2NrZXRUaW1lb3V0RXhjZXB0aW9uIgorIHR5cGU9ImphdmEubmV0LlNvY2tldFRpbWVvdXRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVVJJIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNvbXBhcmFibGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlVSSSIKKyB0eXBlPSJqYXZhLm5ldC5VUkkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlVSSVN5bnRheEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuVVJJU3ludGF4RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVUkkiCisgdHlwZT0iamF2YS5uZXQuVVJJIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NoZW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzc3AiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZyYWciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlVSSVN5bnRheEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuVVJJU3ludGF4RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVUkkiCisgdHlwZT0iamF2YS5uZXQuVVJJIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NoZW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1c2VyaW5mbyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxdWVyeSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZnJhZ21lbnQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlVSSVN5bnRheEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuVVJJU3ludGF4RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVUkkiCisgdHlwZT0iamF2YS5uZXQuVVJJIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NoZW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmcmFnbWVudCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iVVJJU3ludGF4RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5VUklTeW50YXhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlVSSSIKKyB0eXBlPSJqYXZhLm5ldC5VUkkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzY2hlbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF1dGhvcml0eSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icXVlcnkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZyYWdtZW50IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJVUklTeW50YXhFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlVSSVN5bnRheEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNvbXBhcmVUbyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLm5ldC5VUkkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlIgorIHJldHVybj0iamF2YS5uZXQuVVJJIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdXRob3JpdHkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZyYWdtZW50IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIb3N0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXRoIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQb3J0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFF1ZXJ5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSYXdBdXRob3JpdHkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJhd0ZyYWdtZW50IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSYXdQYXRoIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSYXdRdWVyeSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmF3U2NoZW1lU3BlY2lmaWNQYXJ0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSYXdVc2VySW5mbyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2NoZW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTY2hlbWVTcGVjaWZpY1BhcnQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFVzZXJJbmZvIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0Fic29sdXRlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc09wYXF1ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibm9ybWFsaXplIgorIHJldHVybj0iamF2YS5uZXQuVVJJIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlU2VydmVyQXV0aG9yaXR5IgorIHJldHVybj0iamF2YS5uZXQuVVJJIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJVUklTeW50YXhFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlVSSVN5bnRheEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWxhdGl2aXplIgorIHJldHVybj0iamF2YS5uZXQuVVJJIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWxhdGl2ZSIgdHlwZT0iamF2YS5uZXQuVVJJIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc29sdmUiCisgcmV0dXJuPSJqYXZhLm5ldC5VUkkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlbGF0aXZlIiB0eXBlPSJqYXZhLm5ldC5VUkkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzb2x2ZSIKKyByZXR1cm49ImphdmEubmV0LlVSSSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVsYXRpdmUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9BU0NJSVN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9VUkwiCisgcmV0dXJuPSJqYXZhLm5ldC5VUkwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9Ik1hbGZvcm1lZFVSTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuTWFsZm9ybWVkVVJMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlVSSVN5bnRheEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVVJJU3ludGF4RXhjZXB0aW9uIgorIHR5cGU9ImphdmEubmV0LlVSSVN5bnRheEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWFzb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlVSSVN5bnRheEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLm5ldC5VUklTeW50YXhFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnB1dCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVhc29uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0SW5kZXgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5wdXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlYXNvbiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVVJMIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlVSTCIKKyB0eXBlPSJqYXZhLm5ldC5VUkwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcGVjIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRVUkxFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0Lk1hbGZvcm1lZFVSTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVVJMIgorIHR5cGU9ImphdmEubmV0LlVSTCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImphdmEubmV0LlVSTCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3BlYyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTWFsZm9ybWVkVVJMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5NYWxmb3JtZWRVUkxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlVSTCIKKyB0eXBlPSJqYXZhLm5ldC5VUkwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJqYXZhLm5ldC5VUkwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNwZWMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhhbmRsZXIiIHR5cGU9ImphdmEubmV0LlVSTFN0cmVhbUhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik1hbGZvcm1lZFVSTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuTWFsZm9ybWVkVVJMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVUkwiCisgdHlwZT0iamF2YS5uZXQuVVJMIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdG9jb2wiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imhvc3QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik1hbGZvcm1lZFVSTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuTWFsZm9ybWVkVVJMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVUkwiCisgdHlwZT0iamF2YS5uZXQuVVJMIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdG9jb2wiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imhvc3QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTWFsZm9ybWVkVVJMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5NYWxmb3JtZWRVUkxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlVSTCIKKyB0eXBlPSJqYXZhLm5ldC5VUkwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm90b2NvbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJqYXZhLm5ldC5VUkxTdHJlYW1IYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRVUkxFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0Lk1hbGZvcm1lZFVSTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEF1dGhvcml0eSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudCIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudCIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZXMiIHR5cGU9ImphdmEubGFuZy5DbGFzc1tdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWZhdWx0UG9ydCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGaWxlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIb3N0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXRoIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQb3J0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb3RvY29sIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRRdWVyeSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVmIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVc2VySW5mbyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3BlbkNvbm5lY3Rpb24iCisgcmV0dXJuPSJqYXZhLm5ldC5VUkxDb25uZWN0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuQ29ubmVjdGlvbiIKKyByZXR1cm49ImphdmEubmV0LlVSTENvbm5lY3Rpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3h5IiB0eXBlPSJqYXZhLm5ldC5Qcm94eSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3BlblN0cmVhbSIKKyByZXR1cm49ImphdmEuaW8uSW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2FtZUZpbGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdGhlclVSTCIgdHlwZT0iamF2YS5uZXQuVVJMIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3RvY29sIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlZiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm90b2NvbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdXRob3JpdHkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVzZXJJbmZvIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxdWVyeSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVmIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFVSTFN0cmVhbUhhbmRsZXJGYWN0b3J5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbUZhY3RvcnkiIHR5cGU9ImphdmEubmV0LlVSTFN0cmVhbUhhbmRsZXJGYWN0b3J5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvRXh0ZXJuYWxGb3JtIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1VSSSIKKyByZXR1cm49ImphdmEubmV0LlVSSSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iVVJJU3ludGF4RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5VUklTeW50YXhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVVJMQ2xhc3NMb2FkZXIiCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5TZWN1cmVDbGFzc0xvYWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlVSTENsYXNzTG9hZGVyIgorIHR5cGU9ImphdmEubmV0LlVSTENsYXNzTG9hZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJscyIgdHlwZT0iamF2YS5uZXQuVVJMW10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlVSTENsYXNzTG9hZGVyIgorIHR5cGU9ImphdmEubmV0LlVSTENsYXNzTG9hZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJscyIgdHlwZT0iamF2YS5uZXQuVVJMW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iamF2YS5sYW5nLkNsYXNzTG9hZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVUkxDbGFzc0xvYWRlciIKKyB0eXBlPSJqYXZhLm5ldC5VUkxDbGFzc0xvYWRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlYXJjaFVybHMiIHR5cGU9ImphdmEubmV0LlVSTFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnQiIHR5cGU9ImphdmEubGFuZy5DbGFzc0xvYWRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFjdG9yeSIgdHlwZT0iamF2YS5uZXQuVVJMU3RyZWFtSGFuZGxlckZhY3RvcnkiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRVUkwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImphdmEubmV0LlVSTCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWZpbmVQYWNrYWdlIgorIHJldHVybj0iamF2YS5sYW5nLlBhY2thZ2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYW5pZmVzdCIgdHlwZT0iamF2YS51dGlsLmphci5NYW5pZmVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLm5ldC5VUkwiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaW5kUmVzb3VyY2UiCisgcmV0dXJuPSJqYXZhLm5ldC5VUkwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmluZFJlc291cmNlcyIKKyByZXR1cm49ImphdmEudXRpbC5FbnVtZXJhdGlvbiZsdDtqYXZhLm5ldC5VUkwmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVUkxzIgorIHJldHVybj0iamF2YS5uZXQuVVJMW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLm5ldC5VUkxDbGFzc0xvYWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmxzIiB0eXBlPSJqYXZhLm5ldC5VUkxbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdJbnN0YW5jZSIKKyByZXR1cm49ImphdmEubmV0LlVSTENsYXNzTG9hZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybHMiIHR5cGU9ImphdmEubmV0LlVSTFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnRDbCIgdHlwZT0iamF2YS5sYW5nLkNsYXNzTG9hZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlVSTENvbm5lY3Rpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVVJMQ29ubmVjdGlvbiIKKyB0eXBlPSJqYXZhLm5ldC5VUkxDb25uZWN0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLm5ldC5VUkwiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRSZXF1ZXN0UHJvcGVydHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3VmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29ubmVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWxsb3dVc2VySW50ZXJhY3Rpb24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbm5lY3RUaW1lb3V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbnRlbnQiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZW50IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZXMiIHR5cGU9ImphdmEubGFuZy5DbGFzc1tdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZW50RW5jb2RpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbnRlbnRMZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudFR5cGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERhdGUiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlZmF1bHRBbGxvd1VzZXJJbnRlcmFjdGlvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWZhdWx0UmVxdWVzdFByb3BlcnR5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpZWxkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlZmF1bHRVc2VDYWNoZXMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERvSW5wdXQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERvT3V0cHV0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeHBpcmF0aW9uIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGaWxlTmFtZU1hcCIKKyByZXR1cm49ImphdmEubmV0LkZpbGVOYW1lTWFwIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SGVhZGVyRmllbGQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIZWFkZXJGaWVsZCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIZWFkZXJGaWVsZERhdGUiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhlYWRlckZpZWxkSW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SGVhZGVyRmllbGRLZXkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3NuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SGVhZGVyRmllbGRzIgorIHJldHVybj0iamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLnV0aWwuTGlzdCZsdDtqYXZhLmxhbmcuU3RyaW5nJmd0OyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SWZNb2RpZmllZFNpbmNlIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnB1dFN0cmVhbSIKKyByZXR1cm49ImphdmEuaW8uSW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExhc3RNb2RpZmllZCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T3V0cHV0U3RyZWFtIgorIHJldHVybj0iamF2YS5pby5PdXRwdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBlcm1pc3Npb24iCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlBlcm1pc3Npb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlYWRUaW1lb3V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlcXVlc3RQcm9wZXJ0aWVzIgorIHJldHVybj0iamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLnV0aWwuTGlzdCZsdDtqYXZhLmxhbmcuU3RyaW5nJmd0OyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVxdWVzdFByb3BlcnR5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmllbGQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VVJMIgorIHJldHVybj0iamF2YS5uZXQuVVJMIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFVzZUNhY2hlcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ3Vlc3NDb250ZW50VHlwZUZyb21OYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ3Vlc3NDb250ZW50VHlwZUZyb21TdHJlYW0iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlzIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBbGxvd1VzZXJJbnRlcmFjdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1ZhbHVlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbm5lY3RUaW1lb3V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbnRlbnRIYW5kbGVyRmFjdG9yeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZW50RmFjdG9yeSIgdHlwZT0iamF2YS5uZXQuQ29udGVudEhhbmRsZXJGYWN0b3J5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERlZmF1bHRBbGxvd1VzZXJJbnRlcmFjdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxsb3dzIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERlZmF1bHRSZXF1ZXN0UHJvcGVydHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmllbGQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERlZmF1bHRVc2VDYWNoZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdWYWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREb0lucHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3VmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RG9PdXRwdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdWYWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGaWxlTmFtZU1hcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFwIiB0eXBlPSJqYXZhLm5ldC5GaWxlTmFtZU1hcCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJZk1vZGlmaWVkU2luY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdWYWx1ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZWFkVGltZW91dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVvdXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZXF1ZXN0UHJvcGVydHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3VmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VXNlQ2FjaGVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3VmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJhbGxvd1VzZXJJbnRlcmFjdGlvbiIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY29ubmVjdGVkIgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkb0lucHV0IgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkb091dHB1dCIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaWZNb2RpZmllZFNpbmNlIgorIHR5cGU9ImxvbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ1cmwiCisgdHlwZT0iamF2YS5uZXQuVVJMIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idXNlQ2FjaGVzIgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVVJMRGVjb2RlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVVJMRGVjb2RlciIKKyB0eXBlPSJqYXZhLm5ldC5VUkxEZWNvZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlY29kZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlY29kZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5jIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVVJMRW5jb2RlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImVuY29kZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuY29kZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5jIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVVJMU3RyZWFtSGFuZGxlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVUkxTdHJlYW1IYW5kbGVyIgorIHR5cGU9ImphdmEubmV0LlVSTFN0cmVhbUhhbmRsZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZXF1YWxzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsMSIgdHlwZT0iamF2YS5uZXQuVVJMIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwyIiB0eXBlPSJqYXZhLm5ldC5VUkwiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVmYXVsdFBvcnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SG9zdEFkZHJlc3MiCisgcmV0dXJuPSJqYXZhLm5ldC5JbmV0QWRkcmVzcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLm5ldC5VUkwiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzaENvZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iamF2YS5uZXQuVVJMIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhvc3RzRXF1YWwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwxIiB0eXBlPSJqYXZhLm5ldC5VUkwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVybDIiIHR5cGU9ImphdmEubmV0LlVSTCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuQ29ubmVjdGlvbiIKKyByZXR1cm49ImphdmEubmV0LlVSTENvbm5lY3Rpb24iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idSIgdHlwZT0iamF2YS5uZXQuVVJMIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuQ29ubmVjdGlvbiIKKyByZXR1cm49ImphdmEubmV0LlVSTENvbm5lY3Rpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InUiIHR5cGU9ImphdmEubmV0LlVSTCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJveHkiIHR5cGU9ImphdmEubmV0LlByb3h5Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZVVSTCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InUiIHR5cGU9ImphdmEubmV0LlVSTCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzYW1lRmlsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybDEiIHR5cGU9ImphdmEubmV0LlVSTCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsMiIgdHlwZT0iamF2YS5uZXQuVVJMIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFVSTCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idSIgdHlwZT0iamF2YS5uZXQuVVJMIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm90b2NvbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWYiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VVJMIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idSIgdHlwZT0iamF2YS5uZXQuVVJMIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm90b2NvbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdXRob3JpdHkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVzZXJJbmZvIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxdWVyeSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVmIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvRXh0ZXJuYWxGb3JtIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLm5ldC5VUkwiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlVSTFN0cmVhbUhhbmRsZXJGYWN0b3J5IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY3JlYXRlVVJMU3RyZWFtSGFuZGxlciIKKyByZXR1cm49ImphdmEubmV0LlVSTFN0cmVhbUhhbmRsZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdG9jb2wiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlVua25vd25Ib3N0RXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEuaW8uSU9FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVbmtub3duSG9zdEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLm5ldC5Vbmtub3duSG9zdEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlVua25vd25Ib3N0RXhjZXB0aW9uIgorIHR5cGU9ImphdmEubmV0LlVua25vd25Ib3N0RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlVua25vd25TZXJ2aWNlRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEuaW8uSU9FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVbmtub3duU2VydmljZUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLm5ldC5Vbmtub3duU2VydmljZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlVua25vd25TZXJ2aWNlRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubmV0LlVua25vd25TZXJ2aWNlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iamF2YS5uaW8iCis+Cis8Y2xhc3MgbmFtZT0iQnVmZmVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJjYXBhY2l0eSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyIgorIHJldHVybj0iamF2YS5uaW8uQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmxpcCIKKyByZXR1cm49ImphdmEubmlvLkJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc1JlbWFpbmluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1JlYWRPbmx5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxpbWl0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGltaXQiCisgcmV0dXJuPSJqYXZhLm5pby5CdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3TGltaXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYXJrIgorIHJldHVybj0iamF2YS5uaW8uQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9zaXRpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwb3NpdGlvbiIKKyByZXR1cm49ImphdmEubmlvLkJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdQb3NpdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbWFpbmluZyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc2V0IgorIHJldHVybj0iamF2YS5uaW8uQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmV3aW5kIgorIHJldHVybj0iamF2YS5uaW8uQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQnVmZmVyT3ZlcmZsb3dFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCdWZmZXJPdmVyZmxvd0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLm5pby5CdWZmZXJPdmVyZmxvd0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCdWZmZXJVbmRlcmZsb3dFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCdWZmZXJVbmRlcmZsb3dFeGNlcHRpb24iCisgdHlwZT0iamF2YS5uaW8uQnVmZmVyVW5kZXJmbG93RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJ5dGVCdWZmZXIiCisgZXh0ZW5kcz0iamF2YS5uaW8uQnVmZmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5Db21wYXJhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iYWxsb2NhdGUiCisgcmV0dXJuPSJqYXZhLm5pby5CeXRlQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhcGFjaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWxsb2NhdGVEaXJlY3QiCisgcmV0dXJuPSJqYXZhLm5pby5CeXRlQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhcGFjaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXJyYXkiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcnJheU9mZnNldCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzQ2hhckJ1ZmZlciIKKyByZXR1cm49ImphdmEubmlvLkNoYXJCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc0RvdWJsZUJ1ZmZlciIKKyByZXR1cm49ImphdmEubmlvLkRvdWJsZUJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzRmxvYXRCdWZmZXIiCisgcmV0dXJuPSJqYXZhLm5pby5GbG9hdEJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzSW50QnVmZmVyIgorIHJldHVybj0iamF2YS5uaW8uSW50QnVmZmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNMb25nQnVmZmVyIgorIHJldHVybj0iamF2YS5uaW8uTG9uZ0J1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzUmVhZE9ubHlCdWZmZXIiCisgcmV0dXJuPSJqYXZhLm5pby5CeXRlQnVmZmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNTaG9ydEJ1ZmZlciIKKyByZXR1cm49ImphdmEubmlvLlNob3J0QnVmZmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcGFjdCIKKyByZXR1cm49ImphdmEubmlvLkJ5dGVCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlVG8iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im90aGVyQnVmZmVyIiB0eXBlPSJqYXZhLm5pby5CeXRlQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImR1cGxpY2F0ZSIKKyByZXR1cm49ImphdmEubmlvLkJ5dGVCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJieXRlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iamF2YS5uaW8uQnl0ZUJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49ImphdmEubmlvLkJ5dGVCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2ZmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49ImJ5dGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDaGFyIgorIHJldHVybj0iY2hhciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoYXIiCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RG91YmxlIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RG91YmxlIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmxvYXQiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZsb2F0IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb25nIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvbmciCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2hvcnQiCisgcmV0dXJuPSJzaG9ydCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNob3J0IgorIHJldHVybj0ic2hvcnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNBcnJheSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0RpcmVjdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcmRlciIKKyByZXR1cm49ImphdmEubmlvLkJ5dGVPcmRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9yZGVyIgorIHJldHVybj0iamF2YS5uaW8uQnl0ZUJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJieXRlT3JkZXIiIHR5cGU9ImphdmEubmlvLkJ5dGVPcmRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJqYXZhLm5pby5CeXRlQnVmZmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImJ5dGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0iamF2YS5uaW8uQnl0ZUJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJqYXZhLm5pby5CeXRlQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2ZmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49ImphdmEubmlvLkJ5dGVCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJqYXZhLm5pby5CeXRlQnVmZmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImJ5dGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0Q2hhciIKKyByZXR1cm49ImphdmEubmlvLkJ5dGVCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0Q2hhciIKKyByZXR1cm49ImphdmEubmlvLkJ5dGVCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0RG91YmxlIgorIHJldHVybj0iamF2YS5uaW8uQnl0ZUJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dERvdWJsZSIKKyByZXR1cm49ImphdmEubmlvLkJ5dGVCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRGbG9hdCIKKyByZXR1cm49ImphdmEubmlvLkJ5dGVCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dEZsb2F0IgorIHJldHVybj0iamF2YS5uaW8uQnl0ZUJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0SW50IgorIHJldHVybj0iamF2YS5uaW8uQnl0ZUJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dEludCIKKyByZXR1cm49ImphdmEubmlvLkJ5dGVCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRMb25nIgorIHJldHVybj0iamF2YS5uaW8uQnl0ZUJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRMb25nIgorIHJldHVybj0iamF2YS5uaW8uQnl0ZUJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRTaG9ydCIKKyByZXR1cm49ImphdmEubmlvLkJ5dGVCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9InNob3J0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dFNob3J0IgorIHJldHVybj0iamF2YS5uaW8uQnl0ZUJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0ic2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2xpY2UiCisgcmV0dXJuPSJqYXZhLm5pby5CeXRlQnVmZmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JhcCIKKyByZXR1cm49ImphdmEubmlvLkJ5dGVCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cmFwIgorIHJldHVybj0iamF2YS5uaW8uQnl0ZUJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCeXRlT3JkZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im5hdGl2ZU9yZGVyIgorIHJldHVybj0iamF2YS5uaW8uQnl0ZU9yZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJCSUdfRU5ESUFOIgorIHR5cGU9ImphdmEubmlvLkJ5dGVPcmRlciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMSVRUTEVfRU5ESUFOIgorIHR5cGU9ImphdmEubmlvLkJ5dGVPcmRlciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2hhckJ1ZmZlciIKKyBleHRlbmRzPSJqYXZhLm5pby5CdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkFwcGVuZGFibGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ29tcGFyYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuUmVhZGFibGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJhbGxvY2F0ZSIKKyByZXR1cm49ImphdmEubmlvLkNoYXJCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FwYWNpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJqYXZhLm5pby5DaGFyQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZCIKKyByZXR1cm49ImphdmEubmlvLkNoYXJCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNzcSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJqYXZhLm5pby5DaGFyQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjc3EiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFycmF5IgorIHJldHVybj0iY2hhcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXJyYXlPZmZzZXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc1JlYWRPbmx5QnVmZmVyIgorIHJldHVybj0iamF2YS5uaW8uQ2hhckJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoYXJBdCIKKyByZXR1cm49ImNoYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wYWN0IgorIHJldHVybj0iamF2YS5uaW8uQ2hhckJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbXBhcmVUbyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3RoZXJCdWZmZXIiIHR5cGU9ImphdmEubmlvLkNoYXJCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHVwbGljYXRlIgorIHJldHVybj0iamF2YS5uaW8uQ2hhckJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49ImNoYXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJqYXZhLm5pby5DaGFyQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iamF2YS5uaW8uQ2hhckJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iY2hhciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc0FycmF5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRGlyZWN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxlbmd0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9yZGVyIgorIHJldHVybj0iamF2YS5uaW8uQnl0ZU9yZGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0iamF2YS5uaW8uQ2hhckJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49ImphdmEubmlvLkNoYXJCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0iamF2YS5uaW8uQ2hhckJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJqYXZhLm5pby5DaGFyQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImphdmEubmlvLkNoYXJCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0iamF2YS5uaW8uQ2hhckJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49ImphdmEubmlvLkNoYXJCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49ImphdmEubmlvLkNoYXJCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0ciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJqYXZhLm5pby5DaGFyQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzbGljZSIKKyByZXR1cm49ImphdmEubmlvLkNoYXJCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdWJTZXF1ZW5jZSIKKyByZXR1cm49ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JhcCIKKyByZXR1cm49ImphdmEubmlvLkNoYXJCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cmFwIgorIHJldHVybj0iamF2YS5uaW8uQ2hhckJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cmFwIgorIHJldHVybj0iamF2YS5uaW8uQ2hhckJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaHNlcSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cmFwIgorIHJldHVybj0iamF2YS5uaW8uQ2hhckJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaHNlcSIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRG91YmxlQnVmZmVyIgorIGV4dGVuZHM9ImphdmEubmlvLkJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ29tcGFyYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImFsbG9jYXRlIgorIHJldHVybj0iamF2YS5uaW8uRG91YmxlQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhcGFjaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXJyYXkiCisgcmV0dXJuPSJkb3VibGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFycmF5T2Zmc2V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNSZWFkT25seUJ1ZmZlciIKKyByZXR1cm49ImphdmEubmlvLkRvdWJsZUJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbXBhY3QiCisgcmV0dXJuPSJqYXZhLm5pby5Eb3VibGVCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlVG8iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im90aGVyQnVmZmVyIiB0eXBlPSJqYXZhLm5pby5Eb3VibGVCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHVwbGljYXRlIgorIHJldHVybj0iamF2YS5uaW8uRG91YmxlQnVmZmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iamF2YS5uaW8uRG91YmxlQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJkb3VibGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJqYXZhLm5pby5Eb3VibGVCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImRvdWJsZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzQXJyYXkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNEaXJlY3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3JkZXIiCisgcmV0dXJuPSJqYXZhLm5pby5CeXRlT3JkZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJqYXZhLm5pby5Eb3VibGVCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49ImphdmEubmlvLkRvdWJsZUJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImRvdWJsZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49ImphdmEubmlvLkRvdWJsZUJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJkb3VibGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2ZmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49ImphdmEubmlvLkRvdWJsZUJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJqYXZhLm5pby5Eb3VibGVCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0iamF2YS5uaW8uRG91YmxlQnVmZmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImQiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzbGljZSIKKyByZXR1cm49ImphdmEubmlvLkRvdWJsZUJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyYXAiCisgcmV0dXJuPSJqYXZhLm5pby5Eb3VibGVCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImRvdWJsZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyYXAiCisgcmV0dXJuPSJqYXZhLm5pby5Eb3VibGVCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImRvdWJsZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJGbG9hdEJ1ZmZlciIKKyBleHRlbmRzPSJqYXZhLm5pby5CdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNvbXBhcmFibGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJhbGxvY2F0ZSIKKyByZXR1cm49ImphdmEubmlvLkZsb2F0QnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhcGFjaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXJyYXkiCisgcmV0dXJuPSJmbG9hdFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXJyYXlPZmZzZXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc1JlYWRPbmx5QnVmZmVyIgorIHJldHVybj0iamF2YS5uaW8uRmxvYXRCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wYWN0IgorIHJldHVybj0iamF2YS5uaW8uRmxvYXRCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlVG8iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im90aGVyQnVmZmVyIiB0eXBlPSJqYXZhLm5pby5GbG9hdEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkdXBsaWNhdGUiCisgcmV0dXJuPSJqYXZhLm5pby5GbG9hdEJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iamF2YS5uaW8uRmxvYXRCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iamF2YS5uaW8uRmxvYXRCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc0FycmF5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRGlyZWN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9yZGVyIgorIHJldHVybj0iamF2YS5uaW8uQnl0ZU9yZGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0iamF2YS5uaW8uRmxvYXRCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZiIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0iamF2YS5uaW8uRmxvYXRCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49ImphdmEubmlvLkZsb2F0QnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJqYXZhLm5pby5GbG9hdEJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJqYXZhLm5pby5GbG9hdEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJqYXZhLm5pby5GbG9hdEJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzbGljZSIKKyByZXR1cm49ImphdmEubmlvLkZsb2F0QnVmZmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JhcCIKKyByZXR1cm49ImphdmEubmlvLkZsb2F0QnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyYXAiCisgcmV0dXJuPSJqYXZhLm5pby5GbG9hdEJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW50QnVmZmVyIgorIGV4dGVuZHM9ImphdmEubmlvLkJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ29tcGFyYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImFsbG9jYXRlIgorIHJldHVybj0iamF2YS5uaW8uSW50QnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhcGFjaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXJyYXkiCisgcmV0dXJuPSJpbnRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFycmF5T2Zmc2V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNSZWFkT25seUJ1ZmZlciIKKyByZXR1cm49ImphdmEubmlvLkludEJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbXBhY3QiCisgcmV0dXJuPSJqYXZhLm5pby5JbnRCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlVG8iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im90aGVyQnVmZmVyIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHVwbGljYXRlIgorIHJldHVybj0iamF2YS5uaW8uSW50QnVmZmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iamF2YS5uaW8uSW50QnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJqYXZhLm5pby5JbnRCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzQXJyYXkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNEaXJlY3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3JkZXIiCisgcmV0dXJuPSJqYXZhLm5pby5CeXRlT3JkZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJqYXZhLm5pby5JbnRCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49ImphdmEubmlvLkludEJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49ImphdmEubmlvLkludEJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2ZmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49ImphdmEubmlvLkludEJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0iamF2YS5uaW8uSW50QnVmZmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzbGljZSIKKyByZXR1cm49ImphdmEubmlvLkludEJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyYXAiCisgcmV0dXJuPSJqYXZhLm5pby5JbnRCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyYXAiCisgcmV0dXJuPSJqYXZhLm5pby5JbnRCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbnZhbGlkTWFya0V4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW52YWxpZE1hcmtFeGNlcHRpb24iCisgdHlwZT0iamF2YS5uaW8uSW52YWxpZE1hcmtFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTG9uZ0J1ZmZlciIKKyBleHRlbmRzPSJqYXZhLm5pby5CdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNvbXBhcmFibGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJhbGxvY2F0ZSIKKyByZXR1cm49ImphdmEubmlvLkxvbmdCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FwYWNpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcnJheSIKKyByZXR1cm49ImxvbmdbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFycmF5T2Zmc2V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNSZWFkT25seUJ1ZmZlciIKKyByZXR1cm49ImphdmEubmlvLkxvbmdCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wYWN0IgorIHJldHVybj0iamF2YS5uaW8uTG9uZ0J1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbXBhcmVUbyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3RoZXJCdWZmZXIiIHR5cGU9ImphdmEubmlvLkxvbmdCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHVwbGljYXRlIgorIHJldHVybj0iamF2YS5uaW8uTG9uZ0J1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJqYXZhLm5pby5Mb25nQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0IiB0eXBlPSJsb25nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iamF2YS5uaW8uTG9uZ0J1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVzdCIgdHlwZT0ibG9uZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc0FycmF5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRGlyZWN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9yZGVyIgorIHJldHVybj0iamF2YS5uaW8uQnl0ZU9yZGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0iamF2YS5uaW8uTG9uZ0J1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49ImphdmEubmlvLkxvbmdCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJsb25nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0iamF2YS5uaW8uTG9uZ0J1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJsb25nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJqYXZhLm5pby5Mb25nQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImphdmEubmlvLkxvbmdCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0iamF2YS5uaW8uTG9uZ0J1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNsaWNlIgorIHJldHVybj0iamF2YS5uaW8uTG9uZ0J1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyYXAiCisgcmV0dXJuPSJqYXZhLm5pby5Mb25nQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJsb25nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JhcCIKKyByZXR1cm49ImphdmEubmlvLkxvbmdCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImxvbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTWFwcGVkQnl0ZUJ1ZmZlciIKKyBleHRlbmRzPSJqYXZhLm5pby5CeXRlQnVmZmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZm9yY2UiCisgcmV0dXJuPSJqYXZhLm5pby5NYXBwZWRCeXRlQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNMb2FkZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZCIKKyByZXR1cm49ImphdmEubmlvLk1hcHBlZEJ5dGVCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSZWFkT25seUJ1ZmZlckV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZWFkT25seUJ1ZmZlckV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLm5pby5SZWFkT25seUJ1ZmZlckV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTaG9ydEJ1ZmZlciIKKyBleHRlbmRzPSJqYXZhLm5pby5CdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNvbXBhcmFibGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJhbGxvY2F0ZSIKKyByZXR1cm49ImphdmEubmlvLlNob3J0QnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhcGFjaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXJyYXkiCisgcmV0dXJuPSJzaG9ydFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXJyYXlPZmZzZXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc1JlYWRPbmx5QnVmZmVyIgorIHJldHVybj0iamF2YS5uaW8uU2hvcnRCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wYWN0IgorIHJldHVybj0iamF2YS5uaW8uU2hvcnRCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlVG8iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im90aGVyQnVmZmVyIiB0eXBlPSJqYXZhLm5pby5TaG9ydEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkdXBsaWNhdGUiCisgcmV0dXJuPSJqYXZhLm5pby5TaG9ydEJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49InNob3J0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iamF2YS5uaW8uU2hvcnRCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9InNob3J0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iamF2YS5uaW8uU2hvcnRCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3QiIHR5cGU9InNob3J0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJzaG9ydCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc0FycmF5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRGlyZWN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9yZGVyIgorIHJldHVybj0iamF2YS5uaW8uQnl0ZU9yZGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0iamF2YS5uaW8uU2hvcnRCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0ic2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0iamF2YS5uaW8uU2hvcnRCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJzaG9ydFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49ImphdmEubmlvLlNob3J0QnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9InNob3J0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJqYXZhLm5pby5TaG9ydEJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJqYXZhLm5pby5TaG9ydEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJqYXZhLm5pby5TaG9ydEJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJzaG9ydCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzbGljZSIKKyByZXR1cm49ImphdmEubmlvLlNob3J0QnVmZmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JhcCIKKyByZXR1cm49ImphdmEubmlvLlNob3J0QnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJzaG9ydFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyYXAiCisgcmV0dXJuPSJqYXZhLm5pby5TaG9ydEJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0ic2hvcnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJqYXZhLm5pby5jaGFubmVscyIKKz4KKzxjbGFzcyBuYW1lPSJBbHJlYWR5Q29ubmVjdGVkRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBbHJlYWR5Q29ubmVjdGVkRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubmlvLmNoYW5uZWxzLkFscmVhZHlDb25uZWN0ZWRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQXN5bmNocm9ub3VzQ2xvc2VFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5uaW8uY2hhbm5lbHMuQ2xvc2VkQ2hhbm5lbEV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFzeW5jaHJvbm91c0Nsb3NlRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubmlvLmNoYW5uZWxzLkFzeW5jaHJvbm91c0Nsb3NlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJCeXRlQ2hhbm5lbCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLm5pby5jaGFubmVscy5SZWFkYWJsZUJ5dGVDaGFubmVsIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubmlvLmNoYW5uZWxzLldyaXRhYmxlQnl0ZUNoYW5uZWwiPgorPC9pbXBsZW1lbnRzPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ2FuY2VsbGVkS2V5RXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDYW5jZWxsZWRLZXlFeGNlcHRpb24iCisgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuQ2FuY2VsbGVkS2V5RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDaGFubmVsIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uQ2xvc2VhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iY2xvc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzT3BlbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ2hhbm5lbHMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im5ld0NoYW5uZWwiCisgcmV0dXJuPSJqYXZhLm5pby5jaGFubmVscy5SZWFkYWJsZUJ5dGVDaGFubmVsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0U3RyZWFtIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld0NoYW5uZWwiCisgcmV0dXJuPSJqYXZhLm5pby5jaGFubmVscy5Xcml0YWJsZUJ5dGVDaGFubmVsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHB1dFN0cmVhbSIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3SW5wdXRTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYW5uZWwiIHR5cGU9ImphdmEubmlvLmNoYW5uZWxzLlJlYWRhYmxlQnl0ZUNoYW5uZWwiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3T3V0cHV0U3RyZWFtIgorIHJldHVybj0iamF2YS5pby5PdXRwdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhbm5lbCIgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuV3JpdGFibGVCeXRlQ2hhbm5lbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdSZWFkZXIiCisgcmV0dXJuPSJqYXZhLmlvLlJlYWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGFubmVsIiB0eXBlPSJqYXZhLm5pby5jaGFubmVscy5SZWFkYWJsZUJ5dGVDaGFubmVsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWNvZGVyIiB0eXBlPSJqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXREZWNvZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaW5CdWZmZXJDYXBhY2l0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1JlYWRlciIKKyByZXR1cm49ImphdmEuaW8uUmVhZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYW5uZWwiIHR5cGU9ImphdmEubmlvLmNoYW5uZWxzLlJlYWRhYmxlQnl0ZUNoYW5uZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYXJzZXROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1dyaXRlciIKKyByZXR1cm49ImphdmEuaW8uV3JpdGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYW5uZWwiIHR5cGU9ImphdmEubmlvLmNoYW5uZWxzLldyaXRhYmxlQnl0ZUNoYW5uZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuY29kZXIiIHR5cGU9ImphdmEubmlvLmNoYXJzZXQuQ2hhcnNldEVuY29kZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbkJ1ZmZlckNhcGFjaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3V3JpdGVyIgorIHJldHVybj0iamF2YS5pby5Xcml0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhbm5lbCIgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuV3JpdGFibGVCeXRlQ2hhbm5lbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhcnNldE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2xvc2VkQnlJbnRlcnJ1cHRFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5uaW8uY2hhbm5lbHMuQXN5bmNocm9ub3VzQ2xvc2VFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDbG9zZWRCeUludGVycnVwdEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLm5pby5jaGFubmVscy5DbG9zZWRCeUludGVycnVwdEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDbG9zZWRDaGFubmVsRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEuaW8uSU9FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDbG9zZWRDaGFubmVsRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubmlvLmNoYW5uZWxzLkNsb3NlZENoYW5uZWxFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2xvc2VkU2VsZWN0b3JFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNsb3NlZFNlbGVjdG9yRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubmlvLmNoYW5uZWxzLkNsb3NlZFNlbGVjdG9yRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbm5lY3Rpb25QZW5kaW5nRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb25uZWN0aW9uUGVuZGluZ0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLm5pby5jaGFubmVscy5Db25uZWN0aW9uUGVuZGluZ0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEYXRhZ3JhbUNoYW5uZWwiCisgZXh0ZW5kcz0iamF2YS5uaW8uY2hhbm5lbHMuc3BpLkFic3RyYWN0U2VsZWN0YWJsZUNoYW5uZWwiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5uaW8uY2hhbm5lbHMuQnl0ZUNoYW5uZWwiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5uaW8uY2hhbm5lbHMuR2F0aGVyaW5nQnl0ZUNoYW5uZWwiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5uaW8uY2hhbm5lbHMuU2NhdHRlcmluZ0J5dGVDaGFubmVsIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEYXRhZ3JhbUNoYW5uZWwiCisgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuRGF0YWdyYW1DaGFubmVsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0b3JQcm92aWRlciIgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuc3BpLlNlbGVjdG9yUHJvdmlkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjb25uZWN0IgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuRGF0YWdyYW1DaGFubmVsIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFkZHJlc3MiIHR5cGU9ImphdmEubmV0LlNvY2tldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpc2Nvbm5lY3QiCisgcmV0dXJuPSJqYXZhLm5pby5jaGFubmVscy5EYXRhZ3JhbUNoYW5uZWwiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNDb25uZWN0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3BlbiIKKyByZXR1cm49ImphdmEubmlvLmNoYW5uZWxzLkRhdGFncmFtQ2hhbm5lbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0cyIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0cyIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlcltdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWNlaXZlIgorIHJldHVybj0iamF2YS5uZXQuU29ja2V0QWRkcmVzcyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJqYXZhLm5pby5CeXRlQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhZGRyZXNzIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzb2NrZXQiCisgcmV0dXJuPSJqYXZhLm5ldC5EYXRhZ3JhbVNvY2tldCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbGlkT3BzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJqYXZhLm5pby5CeXRlQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlcyIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZXMiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRmlsZUNoYW5uZWwiCisgZXh0ZW5kcz0iamF2YS5uaW8uY2hhbm5lbHMuc3BpLkFic3RyYWN0SW50ZXJydXB0aWJsZUNoYW5uZWwiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5uaW8uY2hhbm5lbHMuQnl0ZUNoYW5uZWwiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5uaW8uY2hhbm5lbHMuR2F0aGVyaW5nQnl0ZUNoYW5uZWwiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5uaW8uY2hhbm5lbHMuU2NhdHRlcmluZ0J5dGVDaGFubmVsIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGaWxlQ2hhbm5lbCIKKyB0eXBlPSJqYXZhLm5pby5jaGFubmVscy5GaWxlQ2hhbm5lbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJmb3JjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWV0YWRhdGEiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvY2siCisgcmV0dXJuPSJqYXZhLm5pby5jaGFubmVscy5GaWxlTG9jayIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2NrIgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuRmlsZUxvY2siCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNoYXJlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWFwIgorIHJldHVybj0iamF2YS5uaW8uTWFwcGVkQnl0ZUJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJqYXZhLm5pby5jaGFubmVscy5GaWxlQ2hhbm5lbC5NYXBNb2RlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9zaXRpb24iCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBvc2l0aW9uIgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuRmlsZUNoYW5uZWwiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXJzIiB0eXBlPSJqYXZhLm5pby5CeXRlQnVmZmVyW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlcnMiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibnVtYmVyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNpemUiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRyYW5zZmVyRnJvbSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJqYXZhLm5pby5jaGFubmVscy5SZWFkYWJsZUJ5dGVDaGFubmVsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRyYW5zZmVyVG8iCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJqYXZhLm5pby5jaGFubmVscy5Xcml0YWJsZUJ5dGVDaGFubmVsIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0cnVuY2F0ZSIKKyByZXR1cm49ImphdmEubmlvLmNoYW5uZWxzLkZpbGVDaGFubmVsIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRyeUxvY2siCisgcmV0dXJuPSJqYXZhLm5pby5jaGFubmVscy5GaWxlTG9jayIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0cnlMb2NrIgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuRmlsZUxvY2siCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNoYXJlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJqYXZhLm5pby5CeXRlQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVycyIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlcltdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVycyIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkZpbGVDaGFubmVsLk1hcE1vZGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iUFJJVkFURSIKKyB0eXBlPSJqYXZhLm5pby5jaGFubmVscy5GaWxlQ2hhbm5lbC5NYXBNb2RlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFQURfT05MWSIKKyB0eXBlPSJqYXZhLm5pby5jaGFubmVscy5GaWxlQ2hhbm5lbC5NYXBNb2RlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFQURfV1JJVEUiCisgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuRmlsZUNoYW5uZWwuTWFwTW9kZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRmlsZUxvY2siCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRmlsZUxvY2siCisgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuRmlsZUxvY2siCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGFubmVsIiB0eXBlPSJqYXZhLm5pby5jaGFubmVscy5GaWxlQ2hhbm5lbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNoYXJlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNoYW5uZWwiCisgcmV0dXJuPSJqYXZhLm5pby5jaGFubmVscy5GaWxlQ2hhbm5lbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU2hhcmVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzVmFsaWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3ZlcmxhcHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9zaXRpb24iCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVsZWFzZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2l6ZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJGaWxlTG9ja0ludGVycnVwdGlvbkV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmlvLklPRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRmlsZUxvY2tJbnRlcnJ1cHRpb25FeGNlcHRpb24iCisgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuRmlsZUxvY2tJbnRlcnJ1cHRpb25FeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkdhdGhlcmluZ0J5dGVDaGFubmVsIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubmlvLmNoYW5uZWxzLldyaXRhYmxlQnl0ZUNoYW5uZWwiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVycyIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlcltdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVycyIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJJbGxlZ2FsQmxvY2tpbmdNb2RlRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbGxlZ2FsQmxvY2tpbmdNb2RlRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubmlvLmNoYW5uZWxzLklsbGVnYWxCbG9ja2luZ01vZGVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSWxsZWdhbFNlbGVjdG9yRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbGxlZ2FsU2VsZWN0b3JFeGNlcHRpb24iCisgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuSWxsZWdhbFNlbGVjdG9yRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJJbnRlcnJ1cHRpYmxlQ2hhbm5lbCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLm5pby5jaGFubmVscy5DaGFubmVsIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iY2xvc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJOb0Nvbm5lY3Rpb25QZW5kaW5nRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOb0Nvbm5lY3Rpb25QZW5kaW5nRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubmlvLmNoYW5uZWxzLk5vQ29ubmVjdGlvblBlbmRpbmdFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTm9uUmVhZGFibGVDaGFubmVsRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOb25SZWFkYWJsZUNoYW5uZWxFeGNlcHRpb24iCisgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuTm9uUmVhZGFibGVDaGFubmVsRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik5vbldyaXRhYmxlQ2hhbm5lbEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTm9uV3JpdGFibGVDaGFubmVsRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubmlvLmNoYW5uZWxzLk5vbldyaXRhYmxlQ2hhbm5lbEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJOb3RZZXRCb3VuZEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTm90WWV0Qm91bmRFeGNlcHRpb24iCisgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuTm90WWV0Qm91bmRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTm90WWV0Q29ubmVjdGVkRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOb3RZZXRDb25uZWN0ZWRFeGNlcHRpb24iCisgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuTm90WWV0Q29ubmVjdGVkRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik92ZXJsYXBwaW5nRmlsZUxvY2tFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik92ZXJsYXBwaW5nRmlsZUxvY2tFeGNlcHRpb24iCisgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuT3ZlcmxhcHBpbmdGaWxlTG9ja0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQaXBlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBpcGUiCisgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuUGlwZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJvcGVuIgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuUGlwZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaW5rIgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuUGlwZS5TaW5rQ2hhbm5lbCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNvdXJjZSIKKyByZXR1cm49ImphdmEubmlvLmNoYW5uZWxzLlBpcGUuU291cmNlQ2hhbm5lbCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBpcGUuU2lua0NoYW5uZWwiCisgZXh0ZW5kcz0iamF2YS5uaW8uY2hhbm5lbHMuc3BpLkFic3RyYWN0U2VsZWN0YWJsZUNoYW5uZWwiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLm5pby5jaGFubmVscy5HYXRoZXJpbmdCeXRlQ2hhbm5lbCI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLm5pby5jaGFubmVscy5Xcml0YWJsZUJ5dGVDaGFubmVsIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQaXBlLlNpbmtDaGFubmVsIgorIHR5cGU9ImphdmEubmlvLmNoYW5uZWxzLlBpcGUuU2lua0NoYW5uZWwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuc3BpLlNlbGVjdG9yUHJvdmlkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJ2YWxpZE9wcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBpcGUuU291cmNlQ2hhbm5lbCIKKyBleHRlbmRzPSJqYXZhLm5pby5jaGFubmVscy5zcGkuQWJzdHJhY3RTZWxlY3RhYmxlQ2hhbm5lbCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubmlvLmNoYW5uZWxzLlJlYWRhYmxlQnl0ZUNoYW5uZWwiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5uaW8uY2hhbm5lbHMuU2NhdHRlcmluZ0J5dGVDaGFubmVsIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQaXBlLlNvdXJjZUNoYW5uZWwiCisgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuUGlwZS5Tb3VyY2VDaGFubmVsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEubmlvLmNoYW5uZWxzLnNwaS5TZWxlY3RvclByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0idmFsaWRPcHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iUmVhZGFibGVCeXRlQ2hhbm5lbCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLm5pby5jaGFubmVscy5DaGFubmVsIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0icmVhZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iU2NhdHRlcmluZ0J5dGVDaGFubmVsIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubmlvLmNoYW5uZWxzLlJlYWRhYmxlQnl0ZUNoYW5uZWwiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXJzIiB0eXBlPSJqYXZhLm5pby5CeXRlQnVmZmVyW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlcnMiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iU2VsZWN0YWJsZUNoYW5uZWwiCisgZXh0ZW5kcz0iamF2YS5uaW8uY2hhbm5lbHMuc3BpLkFic3RyYWN0SW50ZXJydXB0aWJsZUNoYW5uZWwiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5uaW8uY2hhbm5lbHMuQ2hhbm5lbCI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2VsZWN0YWJsZUNoYW5uZWwiCisgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuU2VsZWN0YWJsZUNoYW5uZWwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYmxvY2tpbmdMb2NrIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbmZpZ3VyZUJsb2NraW5nIgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuU2VsZWN0YWJsZUNoYW5uZWwiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYmxvY2siIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQmxvY2tpbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNSZWdpc3RlcmVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImtleUZvciIKKyByZXR1cm49ImphdmEubmlvLmNoYW5uZWxzLlNlbGVjdGlvbktleSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWwiIHR5cGU9ImphdmEubmlvLmNoYW5uZWxzLlNlbGVjdG9yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByb3ZpZGVyIgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuc3BpLlNlbGVjdG9yUHJvdmlkZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3RlciIKKyByZXR1cm49ImphdmEubmlvLmNoYW5uZWxzLlNlbGVjdGlvbktleSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3RvciIgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuU2VsZWN0b3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9wZXJhdGlvbnMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2xvc2VkQ2hhbm5lbEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuQ2xvc2VkQ2hhbm5lbEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3RlciIKKyByZXR1cm49ImphdmEubmlvLmNoYW5uZWxzLlNlbGVjdGlvbktleSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWwiIHR5cGU9ImphdmEubmlvLmNoYW5uZWxzLlNlbGVjdG9yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcHMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDbG9zZWRDaGFubmVsRXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5pby5jaGFubmVscy5DbG9zZWRDaGFubmVsRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbGlkT3BzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2VsZWN0aW9uS2V5IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNlbGVjdGlvbktleSIKKyB0eXBlPSJqYXZhLm5pby5jaGFubmVscy5TZWxlY3Rpb25LZXkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYXR0YWNoIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbk9iamVjdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhdHRhY2htZW50IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNhbmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGFubmVsIgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuU2VsZWN0YWJsZUNoYW5uZWwiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnRlcmVzdE9wcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImludGVyZXN0T3BzIgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuU2VsZWN0aW9uS2V5IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9wZXJhdGlvbnMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0FjY2VwdGFibGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNDb25uZWN0YWJsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1JlYWRhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzVmFsaWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNXcml0YWJsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkeU9wcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbGVjdG9yIgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuU2VsZWN0b3IiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Ik9QX0FDQ0VQVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX0NPTk5FQ1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX1JFQUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QX1dSSVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2VsZWN0b3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2VsZWN0b3IiCisgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuU2VsZWN0b3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzT3BlbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJrZXlzIgorIHJldHVybj0iamF2YS51dGlsLlNldCZsdDtqYXZhLm5pby5jaGFubmVscy5TZWxlY3Rpb25LZXkmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3BlbiIKKyByZXR1cm49ImphdmEubmlvLmNoYW5uZWxzLlNlbGVjdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByb3ZpZGVyIgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuc3BpLlNlbGVjdG9yUHJvdmlkZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZWxlY3QiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VsZWN0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVvdXQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbGVjdE5vdyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZWxlY3RlZEtleXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuU2V0Jmx0O2phdmEubmlvLmNoYW5uZWxzLlNlbGVjdGlvbktleSZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3YWtldXAiCisgcmV0dXJuPSJqYXZhLm5pby5jaGFubmVscy5TZWxlY3RvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNlcnZlclNvY2tldENoYW5uZWwiCisgZXh0ZW5kcz0iamF2YS5uaW8uY2hhbm5lbHMuc3BpLkFic3RyYWN0U2VsZWN0YWJsZUNoYW5uZWwiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNlcnZlclNvY2tldENoYW5uZWwiCisgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuU2VydmVyU29ja2V0Q2hhbm5lbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdG9yUHJvdmlkZXIiIHR5cGU9ImphdmEubmlvLmNoYW5uZWxzLnNwaS5TZWxlY3RvclByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWNjZXB0IgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuU29ja2V0Q2hhbm5lbCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuIgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuU2VydmVyU29ja2V0Q2hhbm5lbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzb2NrZXQiCisgcmV0dXJuPSJqYXZhLm5ldC5TZXJ2ZXJTb2NrZXQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWxpZE9wcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNvY2tldENoYW5uZWwiCisgZXh0ZW5kcz0iamF2YS5uaW8uY2hhbm5lbHMuc3BpLkFic3RyYWN0U2VsZWN0YWJsZUNoYW5uZWwiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5uaW8uY2hhbm5lbHMuQnl0ZUNoYW5uZWwiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5uaW8uY2hhbm5lbHMuR2F0aGVyaW5nQnl0ZUNoYW5uZWwiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5uaW8uY2hhbm5lbHMuU2NhdHRlcmluZ0J5dGVDaGFubmVsIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTb2NrZXRDaGFubmVsIgorIHR5cGU9ImphdmEubmlvLmNoYW5uZWxzLlNvY2tldENoYW5uZWwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3RvclByb3ZpZGVyIiB0eXBlPSJqYXZhLm5pby5jaGFubmVscy5zcGkuU2VsZWN0b3JQcm92aWRlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNvbm5lY3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFkZHJlc3MiIHR5cGU9ImphdmEubmV0LlNvY2tldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmlzaENvbm5lY3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ29ubmVjdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ29ubmVjdGlvblBlbmRpbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3BlbiIKKyByZXR1cm49ImphdmEubmlvLmNoYW5uZWxzLlNvY2tldENoYW5uZWwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3BlbiIKKyByZXR1cm49ImphdmEubmlvLmNoYW5uZWxzLlNvY2tldENoYW5uZWwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWRkcmVzcyIgdHlwZT0iamF2YS5uZXQuU29ja2V0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldHMiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldHMiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic29ja2V0IgorIHJldHVybj0iamF2YS5uZXQuU29ja2V0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsaWRPcHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2VzIiB0eXBlPSJqYXZhLm5pby5CeXRlQnVmZmVyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGUiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlcyIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlcltdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJVbnJlc29sdmVkQWRkcmVzc0V4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVW5yZXNvbHZlZEFkZHJlc3NFeGNlcHRpb24iCisgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuVW5yZXNvbHZlZEFkZHJlc3NFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVW5zdXBwb3J0ZWRBZGRyZXNzVHlwZUV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVW5zdXBwb3J0ZWRBZGRyZXNzVHlwZUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLm5pby5jaGFubmVscy5VbnN1cHBvcnRlZEFkZHJlc3NUeXBlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJXcml0YWJsZUJ5dGVDaGFubmVsIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubmlvLmNoYW5uZWxzLkNoYW5uZWwiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImphdmEubmlvLmNoYW5uZWxzLnNwaSIKKz4KKzxjbGFzcyBuYW1lPSJBYnN0cmFjdEludGVycnVwdGlibGVDaGFubmVsIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5uaW8uY2hhbm5lbHMuQ2hhbm5lbCI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLm5pby5jaGFubmVscy5JbnRlcnJ1cHRpYmxlQ2hhbm5lbCI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzdHJhY3RJbnRlcnJ1cHRpYmxlQ2hhbm5lbCIKKyB0eXBlPSJqYXZhLm5pby5jaGFubmVscy5zcGkuQWJzdHJhY3RJbnRlcnJ1cHRpYmxlQ2hhbm5lbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJiZWdpbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdWNjZXNzIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJBc3luY2hyb25vdXNDbG9zZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuQXN5bmNocm9ub3VzQ2xvc2VFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW1wbENsb3NlQ2hhbm5lbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNPcGVuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQWJzdHJhY3RTZWxlY3RhYmxlQ2hhbm5lbCIKKyBleHRlbmRzPSJqYXZhLm5pby5jaGFubmVscy5TZWxlY3RhYmxlQ2hhbm5lbCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzdHJhY3RTZWxlY3RhYmxlQ2hhbm5lbCIKKyB0eXBlPSJqYXZhLm5pby5jaGFubmVscy5zcGkuQWJzdHJhY3RTZWxlY3RhYmxlQ2hhbm5lbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdG9yUHJvdmlkZXIiIHR5cGU9ImphdmEubmlvLmNoYW5uZWxzLnNwaS5TZWxlY3RvclByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYmxvY2tpbmdMb2NrIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbmZpZ3VyZUJsb2NraW5nIgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuU2VsZWN0YWJsZUNoYW5uZWwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYmxvY2tpbmdNb2RlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbXBsQ2xvc2VDaGFubmVsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImltcGxDbG9zZVNlbGVjdGFibGVDaGFubmVsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbXBsQ29uZmlndXJlQmxvY2tpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJsb2NraW5nTW9kZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNCbG9ja2luZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1JlZ2lzdGVyZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJrZXlGb3IiCisgcmV0dXJuPSJqYXZhLm5pby5jaGFubmVscy5TZWxlY3Rpb25LZXkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3RvciIgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuU2VsZWN0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJvdmlkZXIiCisgcmV0dXJuPSJqYXZhLm5pby5jaGFubmVscy5zcGkuU2VsZWN0b3JQcm92aWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlZ2lzdGVyIgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuU2VsZWN0aW9uS2V5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdG9yIiB0eXBlPSJqYXZhLm5pby5jaGFubmVscy5TZWxlY3RvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZXJlc3RTZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0YWNobWVudCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2xvc2VkQ2hhbm5lbEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuQ2xvc2VkQ2hhbm5lbEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBYnN0cmFjdFNlbGVjdGlvbktleSIKKyBleHRlbmRzPSJqYXZhLm5pby5jaGFubmVscy5TZWxlY3Rpb25LZXkiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFic3RyYWN0U2VsZWN0aW9uS2V5IgorIHR5cGU9ImphdmEubmlvLmNoYW5uZWxzLnNwaS5BYnN0cmFjdFNlbGVjdGlvbktleSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjYW5jZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNWYWxpZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBYnN0cmFjdFNlbGVjdG9yIgorIGV4dGVuZHM9ImphdmEubmlvLmNoYW5uZWxzLlNlbGVjdG9yIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBYnN0cmFjdFNlbGVjdG9yIgorIHR5cGU9ImphdmEubmlvLmNoYW5uZWxzLnNwaS5BYnN0cmFjdFNlbGVjdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0b3JQcm92aWRlciIgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuc3BpLlNlbGVjdG9yUHJvdmlkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJiZWdpbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYW5jZWxsZWRLZXlzIgorIHJldHVybj0iamF2YS51dGlsLlNldCZsdDtqYXZhLm5pby5jaGFubmVscy5TZWxlY3Rpb25LZXkmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlcmVnaXN0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuc3BpLkFic3RyYWN0U2VsZWN0aW9uS2V5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbXBsQ2xvc2VTZWxlY3RvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNPcGVuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByb3ZpZGVyIgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuc3BpLlNlbGVjdG9yUHJvdmlkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3RlciIKKyByZXR1cm49ImphdmEubmlvLmNoYW5uZWxzLlNlbGVjdGlvbktleSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGFubmVsIiB0eXBlPSJqYXZhLm5pby5jaGFubmVscy5zcGkuQWJzdHJhY3RTZWxlY3RhYmxlQ2hhbm5lbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3BlcmF0aW9ucyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRhY2htZW50IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNlbGVjdG9yUHJvdmlkZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2VsZWN0b3JQcm92aWRlciIKKyB0eXBlPSJqYXZhLm5pby5jaGFubmVscy5zcGkuU2VsZWN0b3JQcm92aWRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJpbmhlcml0ZWRDaGFubmVsIgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuQ2hhbm5lbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3BlbkRhdGFncmFtQ2hhbm5lbCIKKyByZXR1cm49ImphdmEubmlvLmNoYW5uZWxzLkRhdGFncmFtQ2hhbm5lbCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuUGlwZSIKKyByZXR1cm49ImphdmEubmlvLmNoYW5uZWxzLlBpcGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3BlblNlbGVjdG9yIgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuc3BpLkFic3RyYWN0U2VsZWN0b3IiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3BlblNlcnZlclNvY2tldENoYW5uZWwiCisgcmV0dXJuPSJqYXZhLm5pby5jaGFubmVscy5TZXJ2ZXJTb2NrZXRDaGFubmVsIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wZW5Tb2NrZXRDaGFubmVsIgorIHJldHVybj0iamF2YS5uaW8uY2hhbm5lbHMuU29ja2V0Q2hhbm5lbCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcm92aWRlciIKKyByZXR1cm49ImphdmEubmlvLmNoYW5uZWxzLnNwaS5TZWxlY3RvclByb3ZpZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImphdmEubmlvLmNoYXJzZXQiCis+Cis8Y2xhc3MgbmFtZT0iQ2hhcmFjdGVyQ29kaW5nRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEuaW8uSU9FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDaGFyYWN0ZXJDb2RpbmdFeGNlcHRpb24iCisgdHlwZT0iamF2YS5uaW8uY2hhcnNldC5DaGFyYWN0ZXJDb2RpbmdFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2hhcnNldCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5Db21wYXJhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDaGFyc2V0IgorIHR5cGU9ImphdmEubmlvLmNoYXJzZXQuQ2hhcnNldCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbm9uaWNhbE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFsaWFzZXMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFsaWFzZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuU2V0Jmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXZhaWxhYmxlQ2hhcnNldHMiCisgcmV0dXJuPSJqYXZhLnV0aWwuU29ydGVkTWFwJmx0O2phdmEubGFuZy5TdHJpbmcsIGphdmEubmlvLmNoYXJzZXQuQ2hhcnNldCZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYW5FbmNvZGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbXBhcmVUbyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGFyc2V0IiB0eXBlPSJqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29udGFpbnMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYXJzZXQiIHR5cGU9ImphdmEubmlvLmNoYXJzZXQuQ2hhcnNldCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWNvZGUiCisgcmV0dXJuPSJqYXZhLm5pby5DaGFyQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWZhdWx0Q2hhcnNldCIKKyByZXR1cm49ImphdmEubmlvLmNoYXJzZXQuQ2hhcnNldCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpc3BsYXlOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXNwbGF5TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImwiIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5jb2RlIgorIHJldHVybj0iamF2YS5uaW8uQnl0ZUJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImphdmEubmlvLkNoYXJCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5jb2RlIgorIHJldHVybj0iamF2YS5uaW8uQnl0ZUJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVxdWFscyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvck5hbWUiCisgcmV0dXJuPSJqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhcnNldE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzaENvZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1JlZ2lzdGVyZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTdXBwb3J0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhcnNldE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdEZWNvZGVyIgorIHJldHVybj0iamF2YS5uaW8uY2hhcnNldC5DaGFyc2V0RGVjb2RlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld0VuY29kZXIiCisgcmV0dXJuPSJqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXRFbmNvZGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2hhcnNldERlY29kZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2hhcnNldERlY29kZXIiCisgdHlwZT0iamF2YS5uaW8uY2hhcnNldC5DaGFyc2V0RGVjb2RlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYXJzZXQiIHR5cGU9ImphdmEubmlvLmNoYXJzZXQuQ2hhcnNldCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXZlcmFnZUNoYXJzUGVyQnl0ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1heENoYXJzUGVyQnl0ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhdmVyYWdlQ2hhcnNQZXJCeXRlIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGFyc2V0IgorIHJldHVybj0iamF2YS5uaW8uY2hhcnNldC5DaGFyc2V0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVjb2RlIgorIHJldHVybj0iamF2YS5uaW8uQ2hhckJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbiIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2hhcmFjdGVyQ29kaW5nRXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5pby5jaGFyc2V0LkNoYXJhY3RlckNvZGluZ0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWNvZGUiCisgcmV0dXJuPSJqYXZhLm5pby5jaGFyc2V0LkNvZGVyUmVzdWx0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJqYXZhLm5pby5CeXRlQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImphdmEubmlvLkNoYXJCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZE9mSW5wdXQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVjb2RlTG9vcCIKKyByZXR1cm49ImphdmEubmlvLmNoYXJzZXQuQ29kZXJSZXN1bHQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im91dCIgdHlwZT0iamF2YS5uaW8uQ2hhckJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZXRlY3RlZENoYXJzZXQiCisgcmV0dXJuPSJqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmx1c2giCisgcmV0dXJuPSJqYXZhLm5pby5jaGFyc2V0LkNvZGVyUmVzdWx0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dCIgdHlwZT0iamF2YS5uaW8uQ2hhckJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbXBsRmx1c2giCisgcmV0dXJuPSJqYXZhLm5pby5jaGFyc2V0LkNvZGVyUmVzdWx0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImphdmEubmlvLkNoYXJCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW1wbE9uTWFsZm9ybWVkSW5wdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdBY3Rpb24iIHR5cGU9ImphdmEubmlvLmNoYXJzZXQuQ29kaW5nRXJyb3JBY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW1wbE9uVW5tYXBwYWJsZUNoYXJhY3RlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld0FjdGlvbiIgdHlwZT0iamF2YS5uaW8uY2hhcnNldC5Db2RpbmdFcnJvckFjdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbXBsUmVwbGFjZVdpdGgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdSZXBsYWNlbWVudCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbXBsUmVzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQXV0b0RldGVjdGluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNDaGFyc2V0RGV0ZWN0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1hbGZvcm1lZElucHV0QWN0aW9uIgorIHJldHVybj0iamF2YS5uaW8uY2hhcnNldC5Db2RpbmdFcnJvckFjdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYXhDaGFyc1BlckJ5dGUiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uTWFsZm9ybWVkSW5wdXQiCisgcmV0dXJuPSJqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXREZWNvZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld0FjdGlvbiIgdHlwZT0iamF2YS5uaW8uY2hhcnNldC5Db2RpbmdFcnJvckFjdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblVubWFwcGFibGVDaGFyYWN0ZXIiCisgcmV0dXJuPSJqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXREZWNvZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld0FjdGlvbiIgdHlwZT0iamF2YS5uaW8uY2hhcnNldC5Db2RpbmdFcnJvckFjdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXBsYWNlV2l0aCIKKyByZXR1cm49ImphdmEubmlvLmNoYXJzZXQuQ2hhcnNldERlY29kZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3UmVwbGFjZW1lbnQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVwbGFjZW1lbnQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXQiCisgcmV0dXJuPSJqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXREZWNvZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5tYXBwYWJsZUNoYXJhY3RlckFjdGlvbiIKKyByZXR1cm49ImphdmEubmlvLmNoYXJzZXQuQ29kaW5nRXJyb3JBY3Rpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2hhcnNldEVuY29kZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2hhcnNldEVuY29kZXIiCisgdHlwZT0iamF2YS5uaW8uY2hhcnNldC5DaGFyc2V0RW5jb2RlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNzIiB0eXBlPSJqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF2ZXJhZ2VCeXRlc1BlckNoYXIiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYXhCeXRlc1BlckNoYXIiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDaGFyc2V0RW5jb2RlciIKKyB0eXBlPSJqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXRFbmNvZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3MiIHR5cGU9ImphdmEubmlvLmNoYXJzZXQuQ2hhcnNldCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXZlcmFnZUJ5dGVzUGVyQ2hhciIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1heEJ5dGVzUGVyQ2hhciIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcGxhY2VtZW50IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhdmVyYWdlQnl0ZXNQZXJDaGFyIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYW5FbmNvZGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNhbkVuY29kZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlcXVlbmNlIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoYXJzZXQiCisgcmV0dXJuPSJqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmNvZGUiCisgcmV0dXJuPSJqYXZhLm5pby5CeXRlQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJqYXZhLm5pby5DaGFyQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDaGFyYWN0ZXJDb2RpbmdFeGNlcHRpb24iIHR5cGU9ImphdmEubmlvLmNoYXJzZXQuQ2hhcmFjdGVyQ29kaW5nRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuY29kZSIKKyByZXR1cm49ImphdmEubmlvLmNoYXJzZXQuQ29kZXJSZXN1bHQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9ImphdmEubmlvLkNoYXJCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im91dCIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kT2ZJbnB1dCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmNvZGVMb29wIgorIHJldHVybj0iamF2YS5uaW8uY2hhcnNldC5Db2RlclJlc3VsdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbiIgdHlwZT0iamF2YS5uaW8uQ2hhckJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0IiB0eXBlPSJqYXZhLm5pby5CeXRlQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZsdXNoIgorIHJldHVybj0iamF2YS5uaW8uY2hhcnNldC5Db2RlclJlc3VsdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW1wbEZsdXNoIgorIHJldHVybj0iamF2YS5uaW8uY2hhcnNldC5Db2RlclJlc3VsdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0IiB0eXBlPSJqYXZhLm5pby5CeXRlQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImltcGxPbk1hbGZvcm1lZElucHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3QWN0aW9uIiB0eXBlPSJqYXZhLm5pby5jaGFyc2V0LkNvZGluZ0Vycm9yQWN0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImltcGxPblVubWFwcGFibGVDaGFyYWN0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdBY3Rpb24iIHR5cGU9ImphdmEubmlvLmNoYXJzZXQuQ29kaW5nRXJyb3JBY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW1wbFJlcGxhY2VXaXRoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3UmVwbGFjZW1lbnQiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbXBsUmVzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTGVnYWxSZXBsYWNlbWVudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcGwiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYWxmb3JtZWRJbnB1dEFjdGlvbiIKKyByZXR1cm49ImphdmEubmlvLmNoYXJzZXQuQ29kaW5nRXJyb3JBY3Rpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWF4Qnl0ZXNQZXJDaGFyIgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbk1hbGZvcm1lZElucHV0IgorIHJldHVybj0iamF2YS5uaW8uY2hhcnNldC5DaGFyc2V0RW5jb2RlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdBY3Rpb24iIHR5cGU9ImphdmEubmlvLmNoYXJzZXQuQ29kaW5nRXJyb3JBY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25Vbm1hcHBhYmxlQ2hhcmFjdGVyIgorIHJldHVybj0iamF2YS5uaW8uY2hhcnNldC5DaGFyc2V0RW5jb2RlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdBY3Rpb24iIHR5cGU9ImphdmEubmlvLmNoYXJzZXQuQ29kaW5nRXJyb3JBY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVwbGFjZVdpdGgiCisgcmV0dXJuPSJqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXRFbmNvZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcGxhY2VtZW50IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVwbGFjZW1lbnQiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldCIKKyByZXR1cm49ImphdmEubmlvLmNoYXJzZXQuQ2hhcnNldEVuY29kZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bm1hcHBhYmxlQ2hhcmFjdGVyQWN0aW9uIgorIHJldHVybj0iamF2YS5uaW8uY2hhcnNldC5Db2RpbmdFcnJvckFjdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb2Rlck1hbGZ1bmN0aW9uRXJyb3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkVycm9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29kZXJNYWxmdW5jdGlvbkVycm9yIgorIHR5cGU9ImphdmEubmlvLmNoYXJzZXQuQ29kZXJNYWxmdW5jdGlvbkVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXgiIHR5cGU9ImphdmEubGFuZy5FeGNlcHRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb2RlclJlc3VsdCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImlzRXJyb3IiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTWFsZm9ybWVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc092ZXJmbG93IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1VuZGVyZmxvdyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNVbm1hcHBhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWFsZm9ybWVkRm9yTGVuZ3RoIgorIHJldHVybj0iamF2YS5uaW8uY2hhcnNldC5Db2RlclJlc3VsdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGhyb3dFeGNlcHRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJCdWZmZXJPdmVyZmxvd0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5uaW8uQnVmZmVyT3ZlcmZsb3dFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkJ1ZmZlclVuZGVyZmxvd0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5uaW8uQnVmZmVyVW5kZXJmbG93RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJDaGFyYWN0ZXJDb2RpbmdFeGNlcHRpb24iIHR5cGU9ImphdmEubmlvLmNoYXJzZXQuQ2hhcmFjdGVyQ29kaW5nRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRJbnB1dEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uaW8uY2hhcnNldC5NYWxmb3JtZWRJbnB1dEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iVW5tYXBwYWJsZUNoYXJhY3RlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uaW8uY2hhcnNldC5Vbm1hcHBhYmxlQ2hhcmFjdGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVubWFwcGFibGVGb3JMZW5ndGgiCisgcmV0dXJuPSJqYXZhLm5pby5jaGFyc2V0LkNvZGVyUmVzdWx0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Ik9WRVJGTE9XIgorIHR5cGU9ImphdmEubmlvLmNoYXJzZXQuQ29kZXJSZXN1bHQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVU5ERVJGTE9XIgorIHR5cGU9ImphdmEubmlvLmNoYXJzZXQuQ29kZXJSZXN1bHQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvZGluZ0Vycm9yQWN0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxmaWVsZCBuYW1lPSJJR05PUkUiCisgdHlwZT0iamF2YS5uaW8uY2hhcnNldC5Db2RpbmdFcnJvckFjdGlvbiIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRVBMQUNFIgorIHR5cGU9ImphdmEubmlvLmNoYXJzZXQuQ29kaW5nRXJyb3JBY3Rpb24iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkVQT1JUIgorIHR5cGU9ImphdmEubmlvLmNoYXJzZXQuQ29kaW5nRXJyb3JBY3Rpb24iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IklsbGVnYWxDaGFyc2V0TmFtZUV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSWxsZWdhbENoYXJzZXROYW1lRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubmlvLmNoYXJzZXQuSWxsZWdhbENoYXJzZXROYW1lRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhcnNldCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldENoYXJzZXROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNYWxmb3JtZWRJbnB1dEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLm5pby5jaGFyc2V0LkNoYXJhY3RlckNvZGluZ0V4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1hbGZvcm1lZElucHV0RXhjZXB0aW9uIgorIHR5cGU9ImphdmEubmlvLmNoYXJzZXQuTWFsZm9ybWVkSW5wdXRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldElucHV0TGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlVubWFwcGFibGVDaGFyYWN0ZXJFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5uaW8uY2hhcnNldC5DaGFyYWN0ZXJDb2RpbmdFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVbm1hcHBhYmxlQ2hhcmFjdGVyRXhjZXB0aW9uIgorIHR5cGU9ImphdmEubmlvLmNoYXJzZXQuVW5tYXBwYWJsZUNoYXJhY3RlckV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0SW5wdXRMZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVW5zdXBwb3J0ZWRDaGFyc2V0RXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVbnN1cHBvcnRlZENoYXJzZXRFeGNlcHRpb24iCisgdHlwZT0iamF2YS5uaW8uY2hhcnNldC5VbnN1cHBvcnRlZENoYXJzZXRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGFyc2V0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hhcnNldE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iamF2YS5uaW8uY2hhcnNldC5zcGkiCis+Cis8Y2xhc3MgbmFtZT0iQ2hhcnNldFByb3ZpZGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNoYXJzZXRQcm92aWRlciIKKyB0eXBlPSJqYXZhLm5pby5jaGFyc2V0LnNwaS5DaGFyc2V0UHJvdmlkZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2hhcnNldEZvck5hbWUiCisgcmV0dXJuPSJqYXZhLm5pby5jaGFyc2V0LkNoYXJzZXQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhcnNldE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hhcnNldHMiCisgcmV0dXJuPSJqYXZhLnV0aWwuSXRlcmF0b3ImbHQ7amF2YS5uaW8uY2hhcnNldC5DaGFyc2V0Jmd0OyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iamF2YS5zZWN1cml0eSIKKz4KKzxjbGFzcyBuYW1lPSJBY2Nlc3NDb250cm9sQ29udGV4dCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBY2Nlc3NDb250cm9sQ29udGV4dCIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LkFjY2Vzc0NvbnRyb2xDb250ZXh0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkFjY2Vzc0NvbnRyb2xDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb21iaW5lciIgdHlwZT0iamF2YS5zZWN1cml0eS5Eb21haW5Db21iaW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWNjZXNzQ29udHJvbENvbnRleHQiCisgdHlwZT0iamF2YS5zZWN1cml0eS5BY2Nlc3NDb250cm9sQ29udGV4dCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJvdGVjdGlvbkRvbWFpbltdIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2hlY2tQZXJtaXNzaW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGVybSIgdHlwZT0iamF2YS5zZWN1cml0eS5QZXJtaXNzaW9uIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJBY2Nlc3NDb250cm9sRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkFjY2Vzc0NvbnRyb2xFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RG9tYWluQ29tYmluZXIiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LkRvbWFpbkNvbWJpbmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFjY2Vzc0NvbnRyb2xFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLlNlY3VyaXR5RXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWNjZXNzQ29udHJvbEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LkFjY2Vzc0NvbnRyb2xFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBY2Nlc3NDb250cm9sRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuQWNjZXNzQ29udHJvbEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm0iIHR5cGU9ImphdmEuc2VjdXJpdHkuUGVybWlzc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldFBlcm1pc3Npb24iCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlBlcm1pc3Npb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQWNjZXNzQ29udHJvbGxlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY2hlY2tQZXJtaXNzaW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwZXJtIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlBlcm1pc3Npb24iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkFjY2Vzc0NvbnRyb2xFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuQWNjZXNzQ29udHJvbEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkb1ByaXZpbGVnZWQiCisgcmV0dXJuPSJUIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Qcml2aWxlZ2VkQWN0aW9uJmx0O1QmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRvUHJpdmlsZWdlZCIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByaXZpbGVnZWRBY3Rpb24mbHQ7VCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImphdmEuc2VjdXJpdHkuQWNjZXNzQ29udHJvbENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZG9Qcml2aWxlZ2VkIgorIHJldHVybj0iVCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJpdmlsZWdlZEV4Y2VwdGlvbkFjdGlvbiZsdDtUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUHJpdmlsZWdlZEFjdGlvbkV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Qcml2aWxlZ2VkQWN0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRvUHJpdmlsZWdlZCIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByaXZpbGVnZWRFeGNlcHRpb25BY3Rpb24mbHQ7VCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImphdmEuc2VjdXJpdHkuQWNjZXNzQ29udHJvbENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlByaXZpbGVnZWRBY3Rpb25FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJpdmlsZWdlZEFjdGlvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZXh0IgorIHJldHVybj0iamF2YS5zZWN1cml0eS5BY2Nlc3NDb250cm9sQ29udGV4dCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFsZ29yaXRobVBhcmFtZXRlckdlbmVyYXRvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWxnb3JpdGhtUGFyYW1ldGVyR2VuZXJhdG9yIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuQWxnb3JpdGhtUGFyYW1ldGVyR2VuZXJhdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1HZW5TcGkiIHR5cGU9ImphdmEuc2VjdXJpdHkuQWxnb3JpdGhtUGFyYW1ldGVyR2VuZXJhdG9yU3BpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iamF2YS5zZWN1cml0eS5Qcm92aWRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2VuZXJhdGVQYXJhbWV0ZXJzIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5BbGdvcml0aG1QYXJhbWV0ZXJzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWxnb3JpdGhtIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5BbGdvcml0aG1QYXJhbWV0ZXJHZW5lcmF0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5BbGdvcml0aG1QYXJhbWV0ZXJHZW5lcmF0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LkFsZ29yaXRobVBhcmFtZXRlckdlbmVyYXRvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb3ZpZGVyIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5Qcm92aWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbml0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJhbmRvbSIgdHlwZT0iamF2YS5zZWN1cml0eS5TZWN1cmVSYW5kb20iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5pdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ2VuUGFyYW1TcGVjIiB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImdlblBhcmFtU3BlYyIgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLkFsZ29yaXRobVBhcmFtZXRlclNwZWMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJhbmRvbSIgdHlwZT0iamF2YS5zZWN1cml0eS5TZWN1cmVSYW5kb20iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBbGdvcml0aG1QYXJhbWV0ZXJHZW5lcmF0b3JTcGkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWxnb3JpdGhtUGFyYW1ldGVyR2VuZXJhdG9yU3BpIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuQWxnb3JpdGhtUGFyYW1ldGVyR2VuZXJhdG9yU3BpIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUdlbmVyYXRlUGFyYW1ldGVycyIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuQWxnb3JpdGhtUGFyYW1ldGVycyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUluaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmFuZG9tIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlNlY3VyZVJhbmRvbSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVJbml0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJnZW5QYXJhbVNwZWMiIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5BbGdvcml0aG1QYXJhbWV0ZXJTcGVjIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyYW5kb20iIHR5cGU9ImphdmEuc2VjdXJpdHkuU2VjdXJlUmFuZG9tIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQWxnb3JpdGhtUGFyYW1ldGVycyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWxnb3JpdGhtUGFyYW1ldGVycyIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LkFsZ29yaXRobVBhcmFtZXRlcnMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGdQcmFtU3BpIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkFsZ29yaXRobVBhcmFtZXRlcnNTcGkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRBbGdvcml0aG0iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RW5jb2RlZCIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbmNvZGVkIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcm1hdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LkFsZ29yaXRobVBhcmFtZXRlcnMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5BbGdvcml0aG1QYXJhbWV0ZXJzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsZ29yaXRobSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5BbGdvcml0aG1QYXJhbWV0ZXJzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsZ29yaXRobSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFyYW1ldGVyU3BlYyIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1TcGVjIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7VCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRQYXJhbWV0ZXJTcGVjRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuSW52YWxpZFBhcmFtZXRlclNwZWNFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvdmlkZXIiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5pdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1TcGVjIiB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZFBhcmFtZXRlclNwZWNFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5JbnZhbGlkUGFyYW1ldGVyU3BlY0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbml0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5pdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcm1hdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQWxnb3JpdGhtUGFyYW1ldGVyc1NwaSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBbGdvcml0aG1QYXJhbWV0ZXJzU3BpIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuQWxnb3JpdGhtUGFyYW1ldGVyc1NwaSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVHZXRFbmNvZGVkIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUdldEVuY29kZWQiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9ybWF0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVHZXRQYXJhbWV0ZXJTcGVjIgorIHJldHVybj0iVCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbVNwZWMiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDtUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZFBhcmFtZXRlclNwZWNFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5JbnZhbGlkUGFyYW1ldGVyU3BlY0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVJbml0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbVNwZWMiIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5BbGdvcml0aG1QYXJhbWV0ZXJTcGVjIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkUGFyYW1ldGVyU3BlY0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLkludmFsaWRQYXJhbWV0ZXJTcGVjRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUluaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVJbml0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9ybWF0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVUb1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBbGxQZXJtaXNzaW9uIgorIGV4dGVuZHM9ImphdmEuc2VjdXJpdHkuUGVybWlzc2lvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWxsUGVybWlzc2lvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LkFsbFBlcm1pc3Npb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb25zIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBbGxQZXJtaXNzaW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuQWxsUGVybWlzc2lvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJlcXVhbHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWN0aW9ucyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzaENvZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW1wbGllcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pc3Npb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuUGVybWlzc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBdXRoUHJvdmlkZXIiCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5Qcm92aWRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXV0aFByb3ZpZGVyIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuQXV0aFByb3ZpZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmVyc2lvbiIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmZvIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ibG9naW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN1YmplY3QiIHR5cGU9ImphdmF4LnNlY3VyaXR5LmF1dGguU3ViamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlciIgdHlwZT0iamF2YXguc2VjdXJpdHkuYXV0aC5jYWxsYmFjay5DYWxsYmFja0hhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkxvZ2luRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5zZWN1cml0eS5hdXRoLmxvZ2luLkxvZ2luRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvZ291dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iTG9naW5FeGNlcHRpb24iIHR5cGU9ImphdmF4LnNlY3VyaXR5LmF1dGgubG9naW4uTG9naW5FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2FsbGJhY2tIYW5kbGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJqYXZheC5zZWN1cml0eS5hdXRoLmNhbGxiYWNrLkNhbGxiYWNrSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCYXNpY1Blcm1pc3Npb24iCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5QZXJtaXNzaW9uIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY1Blcm1pc3Npb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5CYXNpY1Blcm1pc3Npb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY1Blcm1pc3Npb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5CYXNpY1Blcm1pc3Npb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJlcXVhbHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWN0aW9ucyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzaENvZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW1wbGllcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pc3Npb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuUGVybWlzc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ2VydGlmaWNhdGUiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImRlY29kZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyZWFtIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iS2V5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmNvZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbSIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZvcm1hdCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRHdWFyYW50b3IiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlByaW5jaXBhbCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByaW5jaXBhbCIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHJpbmNpcGFsIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHVibGljS2V5IgorIHJldHVybj0iamF2YS5zZWN1cml0eS5QdWJsaWNLZXkiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkNvZGVTaWduZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29kZVNpZ25lciIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LkNvZGVTaWduZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaWduZXJDZXJ0UGF0aCIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lc3RhbXAiIHR5cGU9ImphdmEuc2VjdXJpdHkuVGltZXN0YW1wIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0U2lnbmVyQ2VydFBhdGgiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFBhdGgiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGltZXN0YW1wIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5UaW1lc3RhbXAiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29kZVNvdXJjZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29kZVNvdXJjZSIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LkNvZGVTb3VyY2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iamF2YS5uZXQuVVJMIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjZXJ0cyIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvZGVTb3VyY2UiCisgdHlwZT0iamF2YS5zZWN1cml0eS5Db2RlU291cmNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImphdmEubmV0LlVSTCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2lnbmVycyIgdHlwZT0iamF2YS5zZWN1cml0eS5Db2RlU2lnbmVyW10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDZXJ0aWZpY2F0ZXMiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvZGVTaWduZXJzIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5Db2RlU2lnbmVyW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhdGlvbiIKKyByZXR1cm49ImphdmEubmV0LlVSTCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImltcGxpZXMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjcyIgdHlwZT0iamF2YS5zZWN1cml0eS5Db2RlU291cmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRpZ2VzdEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLnNlY3VyaXR5LkdlbmVyYWxTZWN1cml0eUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRpZ2VzdEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LkRpZ2VzdEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGlnZXN0RXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuRGlnZXN0RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGlnZXN0RXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuRGlnZXN0RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRpZ2VzdEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LkRpZ2VzdEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRGlnZXN0SW5wdXRTdHJlYW0iCisgZXh0ZW5kcz0iamF2YS5pby5GaWx0ZXJJbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRpZ2VzdElucHV0U3RyZWFtIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuRGlnZXN0SW5wdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJlYW0iIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRpZ2VzdCIgdHlwZT0iamF2YS5zZWN1cml0eS5NZXNzYWdlRGlnZXN0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0TWVzc2FnZURpZ2VzdCIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuTWVzc2FnZURpZ2VzdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9uIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE1lc3NhZ2VEaWdlc3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaWdlc3QiIHR5cGU9ImphdmEuc2VjdXJpdHkuTWVzc2FnZURpZ2VzdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImRpZ2VzdCIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5Lk1lc3NhZ2VEaWdlc3QiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRGlnZXN0T3V0cHV0U3RyZWFtIgorIGV4dGVuZHM9ImphdmEuaW8uRmlsdGVyT3V0cHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGlnZXN0T3V0cHV0U3RyZWFtIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuRGlnZXN0T3V0cHV0U3RyZWFtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyZWFtIiB0eXBlPSJqYXZhLmlvLk91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlnZXN0IiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk1lc3NhZ2VEaWdlc3QiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRNZXNzYWdlRGlnZXN0IgorIHJldHVybj0iamF2YS5zZWN1cml0eS5NZXNzYWdlRGlnZXN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib24iIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWVzc2FnZURpZ2VzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpZ2VzdCIgdHlwZT0iamF2YS5zZWN1cml0eS5NZXNzYWdlRGlnZXN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iZGlnZXN0IgorIHR5cGU9ImphdmEuc2VjdXJpdHkuTWVzc2FnZURpZ2VzdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iRG9tYWluQ29tYmluZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJjb21iaW5lIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5Qcm90ZWN0aW9uRG9tYWluW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3VycmVudCIgdHlwZT0iamF2YS5zZWN1cml0eS5Qcm90ZWN0aW9uRG9tYWluW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFzc2lnbmVkIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3RlY3Rpb25Eb21haW5bXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iR2VuZXJhbFNlY3VyaXR5RXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJHZW5lcmFsU2VjdXJpdHlFeGNlcHRpb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5HZW5lcmFsU2VjdXJpdHlFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkdlbmVyYWxTZWN1cml0eUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LkdlbmVyYWxTZWN1cml0eUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkdlbmVyYWxTZWN1cml0eUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LkdlbmVyYWxTZWN1cml0eUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJHZW5lcmFsU2VjdXJpdHlFeGNlcHRpb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5HZW5lcmFsU2VjdXJpdHlFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJHdWFyZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNoZWNrR3VhcmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU2VjdXJpdHlFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5TZWN1cml0eUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iR3VhcmRlZE9iamVjdCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iR3VhcmRlZE9iamVjdCIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5Lkd1YXJkZWRPYmplY3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imd1YXJkIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lkd1YXJkIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0T2JqZWN0IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU2VjdXJpdHlFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5TZWN1cml0eUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJZGVudGl0eSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5QcmluY2lwYWwiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IklkZW50aXR5IgorIHR5cGU9ImphdmEuc2VjdXJpdHkuSWRlbnRpdHkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJZGVudGl0eSIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LklkZW50aXR5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSWRlbnRpdHkiCisgdHlwZT0iamF2YS5zZWN1cml0eS5JZGVudGl0eSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNjb3BlIiB0eXBlPSJqYXZhLnNlY3VyaXR5LklkZW50aXR5U2NvcGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IktleU1hbmFnZW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5TWFuYWdlbWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZENlcnRpZmljYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2VydGlmaWNhdGUiIHR5cGU9ImphdmEuc2VjdXJpdHkuQ2VydGlmaWNhdGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IktleU1hbmFnZW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5TWFuYWdlbWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjZXJ0aWZpY2F0ZXMiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LkNlcnRpZmljYXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXF1YWxzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5mbyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQdWJsaWNLZXkiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlB1YmxpY0tleSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTY29wZSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuSWRlbnRpdHlTY29wZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlkZW50aXR5RXF1YWxzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWRlbnRpdHkiIHR5cGU9ImphdmEuc2VjdXJpdHkuSWRlbnRpdHkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlQ2VydGlmaWNhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjZXJ0aWZpY2F0ZSIgdHlwZT0iamF2YS5zZWN1cml0eS5DZXJ0aWZpY2F0ZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iS2V5TWFuYWdlbWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlNYW5hZ2VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEluZm8iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmZvIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFB1YmxpY0tleSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5zZWN1cml0eS5QdWJsaWNLZXkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IktleU1hbmFnZW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5TWFuYWdlbWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IklkZW50aXR5U2NvcGUiCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5JZGVudGl0eSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJZGVudGl0eVNjb3BlIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuSWRlbnRpdHlTY29wZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IklkZW50aXR5U2NvcGUiCisgdHlwZT0iamF2YS5zZWN1cml0eS5JZGVudGl0eVNjb3BlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSWRlbnRpdHlTY29wZSIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LklkZW50aXR5U2NvcGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY29wZSIgdHlwZT0iamF2YS5zZWN1cml0eS5JZGVudGl0eVNjb3BlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJLZXlNYW5hZ2VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleU1hbmFnZW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRJZGVudGl0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWRlbnRpdHkiIHR5cGU9ImphdmEuc2VjdXJpdHkuSWRlbnRpdHkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IktleU1hbmFnZW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5TWFuYWdlbWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJZGVudGl0eSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuSWRlbnRpdHkiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJZGVudGl0eSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuSWRlbnRpdHkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByaW5jaXBhbCIgdHlwZT0iamF2YS5zZWN1cml0eS5QcmluY2lwYWwiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SWRlbnRpdHkiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LklkZW50aXR5IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5zZWN1cml0eS5QdWJsaWNLZXkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3lzdGVtU2NvcGUiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LklkZW50aXR5U2NvcGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpZGVudGl0aWVzIgorIHJldHVybj0iamF2YS51dGlsLkVudW1lcmF0aW9uJmx0O2phdmEuc2VjdXJpdHkuSWRlbnRpdHkmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlSWRlbnRpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkZW50aXR5IiB0eXBlPSJqYXZhLnNlY3VyaXR5LklkZW50aXR5Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJLZXlNYW5hZ2VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleU1hbmFnZW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3lzdGVtU2NvcGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNjb3BlIiB0eXBlPSJqYXZhLnNlY3VyaXR5LklkZW50aXR5U2NvcGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5HZW5lcmFsU2VjdXJpdHlFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLnNlY3VyaXR5LktleUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkludmFsaWRLZXlFeGNlcHRpb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnZhbGlkS2V5RXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkludmFsaWRLZXlFeGNlcHRpb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkludmFsaWRLZXlFeGNlcHRpb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbnZhbGlkUGFyYW1ldGVyRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnZhbGlkUGFyYW1ldGVyRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZFBhcmFtZXRlckV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW52YWxpZFBhcmFtZXRlckV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRQYXJhbWV0ZXJFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IktleSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImdldEFsZ29yaXRobSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbmNvZGVkIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Rm9ybWF0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0ic2VyaWFsVmVyc2lvblVJRCIKKyB0eXBlPSJsb25nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NjAzMzg0MTUyNzQ5NTY3NjU0TCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IktleUV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLnNlY3VyaXR5LkdlbmVyYWxTZWN1cml0eUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IktleUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LktleUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5RXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5RXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IktleUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LktleUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iS2V5RmFjdG9yeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5RmFjdG9yeSIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LktleUZhY3RvcnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlGYWNTcGkiIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5RmFjdG9yeVNwaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFsZ29yaXRobSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdlbmVyYXRlUHJpdmF0ZSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHJpdmF0ZUtleSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlTcGVjIiB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuS2V5U3BlYyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleVNwZWNFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5JbnZhbGlkS2V5U3BlY0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZW5lcmF0ZVB1YmxpYyIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHVibGljS2V5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleVNwZWMiIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5LZXlTcGVjIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkS2V5U3BlY0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLkludmFsaWRLZXlTcGVjRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFsZ29yaXRobSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuS2V5RmFjdG9yeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LktleUZhY3RvcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LktleUZhY3RvcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iamF2YS5zZWN1cml0eS5Qcm92aWRlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRLZXlTcGVjIgorIHJldHVybj0iVCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJrZXlTcGVjIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7VCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlTcGVjRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuSW52YWxpZEtleVNwZWNFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvdmlkZXIiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idHJhbnNsYXRlS2V5IgorIHJldHVybj0iamF2YS5zZWN1cml0eS5LZXkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IktleUZhY3RvcnlTcGkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5RmFjdG9yeVNwaSIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LktleUZhY3RvcnlTcGkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZW5naW5lR2VuZXJhdGVQcml2YXRlIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5Qcml2YXRlS2V5IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleVNwZWMiIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5LZXlTcGVjIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkS2V5U3BlY0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLkludmFsaWRLZXlTcGVjRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUdlbmVyYXRlUHVibGljIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5QdWJsaWNLZXkiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5U3BlYyIgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLktleVNwZWMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlTcGVjRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuSW52YWxpZEtleVNwZWNFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lR2V0S2V5U3BlYyIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5U3BlYyIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0O1QmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkS2V5U3BlY0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLkludmFsaWRLZXlTcGVjRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZVRyYW5zbGF0ZUtleSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuS2V5IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJLZXlNYW5hZ2VtZW50RXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEuc2VjdXJpdHkuS2V5RXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5TWFuYWdlbWVudEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LktleU1hbmFnZW1lbnRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IktleU1hbmFnZW1lbnRFeGNlcHRpb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlNYW5hZ2VtZW50RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5TWFuYWdlbWVudEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LktleU1hbmFnZW1lbnRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5TWFuYWdlbWVudEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LktleU1hbmFnZW1lbnRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IktleVBhaXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5UGFpciIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVBhaXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwdWJsaWNLZXkiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHVibGljS2V5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcml2YXRlS2V5IiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByaXZhdGVLZXkiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRQcml2YXRlIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5Qcml2YXRlS2V5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFB1YmxpYyIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHVibGljS2V5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IktleVBhaXJHZW5lcmF0b3IiCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5LZXlQYWlyR2VuZXJhdG9yU3BpIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJLZXlQYWlyR2VuZXJhdG9yIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5UGFpckdlbmVyYXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsZ29yaXRobSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdlbktleVBhaXIiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LktleVBhaXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZW5lcmF0ZUtleVBhaXIiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LktleVBhaXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWxnb3JpdGhtIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuS2V5UGFpckdlbmVyYXRvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LktleVBhaXJHZW5lcmF0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LktleVBhaXJHZW5lcmF0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iamF2YS5zZWN1cml0eS5Qcm92aWRlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm92aWRlciIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbml0aWFsaXplIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5c2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluaXRpYWxpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLkFsZ29yaXRobVBhcmFtZXRlclNwZWMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbml0aWFsaXplIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5c2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyYW5kb20iIHR5cGU9ImphdmEuc2VjdXJpdHkuU2VjdXJlUmFuZG9tIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IktleVBhaXJHZW5lcmF0b3JTcGkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5UGFpckdlbmVyYXRvclNwaSIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVBhaXJHZW5lcmF0b3JTcGkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2VuZXJhdGVLZXlQYWlyIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5LZXlQYWlyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5pdGlhbGl6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5c2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyYW5kb20iIHR5cGU9ImphdmEuc2VjdXJpdHkuU2VjdXJlUmFuZG9tIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluaXRpYWxpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5BbGdvcml0aG1QYXJhbWV0ZXJTcGVjIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyYW5kb20iIHR5cGU9ImphdmEuc2VjdXJpdHkuU2VjdXJlUmFuZG9tIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iS2V5UmVwIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJLZXlSZXAiCisgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlSZXAiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVJlcC5UeXBlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcm1hdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5jb2RlZCIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0icmVhZFJlc29sdmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJPYmplY3RTdHJlYW1FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uT2JqZWN0U3RyZWFtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IktleVJlcC5UeXBlIgorIGV4dGVuZHM9ImphdmEubGFuZy5FbnVtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5LZXlSZXAuVHlwZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlcyIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuS2V5UmVwLlR5cGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iS2V5U3RvcmUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IktleVN0b3JlIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5U3RvcmUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlTdG9yZVNwaSIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZVNwaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhbGlhc2VzIgorIHJldHVybj0iamF2YS51dGlsLkVudW1lcmF0aW9uJmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IktleVN0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbnRhaW5zQWxpYXMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsaWFzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJLZXlTdG9yZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWxldGVFbnRyeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxpYXMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IktleVN0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVudHJ5SW5zdGFuY2VPZiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxpYXMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVudHJ5Q2xhc3MiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDs/IGV4dGVuZHMgamF2YS5zZWN1cml0eS5LZXlTdG9yZS5FbnRyeSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IktleVN0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENlcnRpZmljYXRlIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsaWFzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJLZXlTdG9yZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDZXJ0aWZpY2F0ZUFsaWFzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjZXJ0IiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IktleVN0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENlcnRpZmljYXRlQ2hhaW4iCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGlhcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iS2V5U3RvcmVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5U3RvcmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3JlYXRpb25EYXRlIgorIHJldHVybj0iamF2YS51dGlsLkRhdGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxpYXMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IktleVN0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlZmF1bHRUeXBlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RW50cnkiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlLkVudHJ5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsaWFzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZS5Qcm90ZWN0aW9uUGFyYW1ldGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJLZXlTdG9yZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iVW5yZWNvdmVyYWJsZUVudHJ5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlVucmVjb3ZlcmFibGVFbnRyeUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuS2V5U3RvcmUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iS2V5U3RvcmVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5U3RvcmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJLZXlTdG9yZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJLZXlTdG9yZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRLZXkiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LktleSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGlhcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFzc3dvcmQiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iS2V5U3RvcmVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5U3RvcmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlVucmVjb3ZlcmFibGVLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuVW5yZWNvdmVyYWJsZUtleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm92aWRlciIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ2VydGlmaWNhdGVFbnRyeSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxpYXMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IktleVN0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzS2V5RW50cnkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsaWFzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJLZXlTdG9yZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2FkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJlYW0iIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhc3N3b3JkIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNlcnRpZmljYXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvYWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlLkxvYWRTdG9yZVBhcmFtZXRlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2VydGlmaWNhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2VydGlmaWNhdGVFbnRyeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxpYXMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNlcnQiIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iS2V5U3RvcmVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5U3RvcmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RW50cnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsaWFzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbnRyeSIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZS5FbnRyeSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5U3RvcmUuUHJvdGVjdGlvblBhcmFtZXRlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iS2V5U3RvcmVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5U3RvcmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0S2V5RW50cnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsaWFzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXNzd29yZCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGFpbiIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IktleVN0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEtleUVudHJ5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGlhcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYWluIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iS2V5U3RvcmVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5U3RvcmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJLZXlTdG9yZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdG9yZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyZWFtIiB0eXBlPSJqYXZhLmlvLk91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFzc3dvcmQiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2VydGlmaWNhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IktleVN0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0b3JlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZS5Mb2FkU3RvcmVQYXJhbWV0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNlcnRpZmljYXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJLZXlTdG9yZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJLZXlTdG9yZS5CdWlsZGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5U3RvcmUuQnVpbGRlciIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlLkJ1aWxkZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0S2V5U3RvcmUiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IktleVN0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb3RlY3Rpb25QYXJhbWV0ZXIiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlLlByb3RlY3Rpb25QYXJhbWV0ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxpYXMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IktleVN0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld0luc3RhbmNlIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5LZXlTdG9yZS5CdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleVN0b3JlIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm90ZWN0aW9uUGFyYW1ldGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlLlByb3RlY3Rpb25QYXJhbWV0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlLkJ1aWxkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGUiIHR5cGU9ImphdmEuaW8uRmlsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdGVjdGlvblBhcmFtZXRlciIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZS5Qcm90ZWN0aW9uUGFyYW1ldGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld0luc3RhbmNlIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5LZXlTdG9yZS5CdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm90ZWN0aW9uUGFyYW1ldGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlLlByb3RlY3Rpb25QYXJhbWV0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iS2V5U3RvcmUuQ2FsbGJhY2tIYW5kbGVyUHJvdGVjdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuS2V5U3RvcmUuUHJvdGVjdGlvblBhcmFtZXRlciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5U3RvcmUuQ2FsbGJhY2tIYW5kbGVyUHJvdGVjdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlLkNhbGxiYWNrSGFuZGxlclByb3RlY3Rpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJqYXZheC5zZWN1cml0eS5hdXRoLmNhbGxiYWNrLkNhbGxiYWNrSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldENhbGxiYWNrSGFuZGxlciIKKyByZXR1cm49ImphdmF4LnNlY3VyaXR5LmF1dGguY2FsbGJhY2suQ2FsbGJhY2tIYW5kbGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJLZXlTdG9yZS5FbnRyeSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJLZXlTdG9yZS5Mb2FkU3RvcmVQYXJhbWV0ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldFByb3RlY3Rpb25QYXJhbWV0ZXIiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlLlByb3RlY3Rpb25QYXJhbWV0ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iS2V5U3RvcmUuUGFzc3dvcmRQcm90ZWN0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YXguc2VjdXJpdHkuYXV0aC5EZXN0cm95YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlLlByb3RlY3Rpb25QYXJhbWV0ZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IktleVN0b3JlLlBhc3N3b3JkUHJvdGVjdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlLlBhc3N3b3JkUHJvdGVjdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhc3N3b3JkIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZXN0cm95IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJEZXN0cm95RmFpbGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5zZWN1cml0eS5hdXRoLkRlc3Ryb3lGYWlsZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFzc3dvcmQiCisgcmV0dXJuPSJjaGFyW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0Rlc3Ryb3llZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJLZXlTdG9yZS5Qcml2YXRlS2V5RW50cnkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuS2V5U3RvcmUuRW50cnkiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IktleVN0b3JlLlByaXZhdGVLZXlFbnRyeSIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlLlByaXZhdGVLZXlFbnRyeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByaXZhdGVLZXkiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJpdmF0ZUtleSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhaW4iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q2VydGlmaWNhdGUiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2VydGlmaWNhdGVDaGFpbiIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByaXZhdGVLZXkiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlByaXZhdGVLZXkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IktleVN0b3JlLlByb3RlY3Rpb25QYXJhbWV0ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJLZXlTdG9yZS5TZWNyZXRLZXlFbnRyeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZS5FbnRyeSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5U3RvcmUuU2VjcmV0S2V5RW50cnkiCisgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZS5TZWNyZXRLZXlFbnRyeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlY3JldEtleSIgdHlwZT0iamF2YXguY3J5cHRvLlNlY3JldEtleSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldFNlY3JldEtleSIKKyByZXR1cm49ImphdmF4LmNyeXB0by5TZWNyZXRLZXkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iS2V5U3RvcmUuVHJ1c3RlZENlcnRpZmljYXRlRW50cnkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuS2V5U3RvcmUuRW50cnkiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IktleVN0b3JlLlRydXN0ZWRDZXJ0aWZpY2F0ZUVudHJ5IgorIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5U3RvcmUuVHJ1c3RlZENlcnRpZmljYXRlRW50cnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0cnVzdENlcnRpZmljYXRlIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRUcnVzdGVkQ2VydGlmaWNhdGUiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iS2V5U3RvcmVFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5HZW5lcmFsU2VjdXJpdHlFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJLZXlTdG9yZUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJLZXlTdG9yZUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5U3RvcmVFeGNlcHRpb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJLZXlTdG9yZUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJLZXlTdG9yZVNwaSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJLZXlTdG9yZVNwaSIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlU3BpIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUFsaWFzZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuRW51bWVyYXRpb24mbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVDb250YWluc0FsaWFzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGlhcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVEZWxldGVFbnRyeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxpYXMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IktleVN0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUVudHJ5SW5zdGFuY2VPZiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsaWFzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbnRyeUNsYXNzIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyBleHRlbmRzIGphdmEuc2VjdXJpdHkuS2V5U3RvcmUuRW50cnkmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUdldENlcnRpZmljYXRlIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsaWFzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUdldENlcnRpZmljYXRlQWxpYXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNlcnQiIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVHZXRDZXJ0aWZpY2F0ZUNoYWluIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxpYXMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lR2V0Q3JlYXRpb25EYXRlIgorIHJldHVybj0iamF2YS51dGlsLkRhdGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxpYXMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lR2V0RW50cnkiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlLkVudHJ5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGlhcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdFBhcmFtIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlLlByb3RlY3Rpb25QYXJhbWV0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IktleVN0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJVbnJlY292ZXJhYmxlRW50cnlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuVW5yZWNvdmVyYWJsZUVudHJ5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUdldEtleSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuS2V5IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsaWFzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXNzd29yZCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJVbnJlY292ZXJhYmxlS2V5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlVucmVjb3ZlcmFibGVLZXlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lSXNDZXJ0aWZpY2F0ZUVudHJ5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGlhcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVJc0tleUVudHJ5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGlhcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVMb2FkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJlYW0iIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhc3N3b3JkIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNlcnRpZmljYXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUxvYWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZS5Mb2FkU3RvcmVQYXJhbWV0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNlcnRpZmljYXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZVNldENlcnRpZmljYXRlRW50cnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsaWFzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjZXJ0IiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IktleVN0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZVNldEVudHJ5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxpYXMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVudHJ5IiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlLkVudHJ5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm90UGFyYW0iIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5U3RvcmUuUHJvdGVjdGlvblBhcmFtZXRlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iS2V5U3RvcmVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5U3RvcmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lU2V0S2V5RW50cnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsaWFzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXNzd29yZCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGFpbiIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IktleVN0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZVNldEtleUVudHJ5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGlhcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYWluIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iS2V5U3RvcmVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5U3RvcmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lU2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZVN0b3JlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJlYW0iIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXNzd29yZCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDZXJ0aWZpY2F0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVTdG9yZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlLkxvYWRTdG9yZVBhcmFtZXRlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2VydGlmaWNhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTWVzc2FnZURpZ2VzdCIKKyBleHRlbmRzPSJqYXZhLnNlY3VyaXR5Lk1lc3NhZ2VEaWdlc3RTcGkiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1lc3NhZ2VEaWdlc3QiCisgdHlwZT0iamF2YS5zZWN1cml0eS5NZXNzYWdlRGlnZXN0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZGlnZXN0IgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRpZ2VzdCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRGlnZXN0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkRpZ2VzdEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaWdlc3QiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWxnb3JpdGhtIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERpZ2VzdExlbmd0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5NZXNzYWdlRGlnZXN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsZ29yaXRobSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuTWVzc2FnZURpZ2VzdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hQcm92aWRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hQcm92aWRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuTWVzc2FnZURpZ2VzdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb3ZpZGVyIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5Qcm92aWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRXF1YWwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpZ2VzdGEiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlnZXN0YiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcmcwIiB0eXBlPSJieXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnB1dCIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTWVzc2FnZURpZ2VzdFNwaSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNZXNzYWdlRGlnZXN0U3BpIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuTWVzc2FnZURpZ2VzdFNwaSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkNsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lRGlnZXN0IgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lRGlnZXN0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWYiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJEaWdlc3RFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuRGlnZXN0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUdldERpZ2VzdExlbmd0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVSZXNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVVcGRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0IiB0eXBlPSJieXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZVVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZVVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0IiB0eXBlPSJqYXZhLm5pby5CeXRlQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLnNlY3VyaXR5LkdlbmVyYWxTZWN1cml0eUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5HZW5lcmFsU2VjdXJpdHlFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOb1N1Y2hQcm92aWRlckV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOb1N1Y2hQcm92aWRlckV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBlcm1pc3Npb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnNlY3VyaXR5Lkd1YXJkIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQZXJtaXNzaW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuUGVybWlzc2lvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjaGVja0d1YXJkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTZWN1cml0eUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLlNlY3VyaXR5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVxdWFscyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFjdGlvbnMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNoQ29kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImltcGxpZXMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pc3Npb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuUGVybWlzc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdQZXJtaXNzaW9uQ29sbGVjdGlvbiIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUGVybWlzc2lvbkNvbGxlY3Rpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUGVybWlzc2lvbkNvbGxlY3Rpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGVybWlzc2lvbkNvbGxlY3Rpb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5QZXJtaXNzaW9uQ29sbGVjdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pc3Npb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuUGVybWlzc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbGVtZW50cyIKKyByZXR1cm49ImphdmEudXRpbC5FbnVtZXJhdGlvbiZsdDtqYXZhLnNlY3VyaXR5LlBlcm1pc3Npb24mZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW1wbGllcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGVybWlzc2lvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5QZXJtaXNzaW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUmVhZE9ubHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJlYWRPbmx5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQZXJtaXNzaW9ucyIKKyBleHRlbmRzPSJqYXZhLnNlY3VyaXR5LlBlcm1pc3Npb25Db2xsZWN0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQZXJtaXNzaW9ucyIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LlBlcm1pc3Npb25zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pc3Npb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuUGVybWlzc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbGVtZW50cyIKKyByZXR1cm49ImphdmEudXRpbC5FbnVtZXJhdGlvbiZsdDtqYXZhLnNlY3VyaXR5LlBlcm1pc3Npb24mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImltcGxpZXMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwZXJtaXNzaW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlBlcm1pc3Npb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUG9saWN5IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBvbGljeSIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LlBvbGljeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRQZXJtaXNzaW9ucyIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUGVybWlzc2lvbkNvbGxlY3Rpb24iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3MiIHR5cGU9ImphdmEuc2VjdXJpdHkuQ29kZVNvdXJjZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQZXJtaXNzaW9ucyIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUGVybWlzc2lvbkNvbGxlY3Rpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRvbWFpbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Qcm90ZWN0aW9uRG9tYWluIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBvbGljeSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUG9saWN5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW1wbGllcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRvbWFpbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Qcm90ZWN0aW9uRG9tYWluIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwZXJtaXNzaW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlBlcm1pc3Npb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVmcmVzaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQb2xpY3kiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvbGljeSIgdHlwZT0iamF2YS5zZWN1cml0eS5Qb2xpY3kiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlByaW5jaXBhbCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImVxdWFscyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzaENvZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlByaXZhdGVLZXkiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5LZXkiPgorPC9pbXBsZW1lbnRzPgorPGZpZWxkIG5hbWU9InNlcmlhbFZlcnNpb25VSUQiCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjAzNDA0NDMxNDU4OTUxMzQzMEwiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iUHJpdmlsZWdlZEFjdGlvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InJ1biIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iUHJpdmlsZWdlZEFjdGlvbkV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJpdmlsZWdlZEFjdGlvbkV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LlByaXZpbGVnZWRBY3Rpb25FeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleCIgdHlwZT0iamF2YS5sYW5nLkV4Y2VwdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEV4Y2VwdGlvbiIKKyByZXR1cm49ImphdmEubGFuZy5FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlByaXZpbGVnZWRFeGNlcHRpb25BY3Rpb24iCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJydW4iCisgcmV0dXJuPSJUIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iUHJvdGVjdGlvbkRvbWFpbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJvdGVjdGlvbkRvbWFpbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3RlY3Rpb25Eb21haW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjcyIgdHlwZT0iamF2YS5zZWN1cml0eS5Db2RlU291cmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwZXJtaXNzaW9ucyIgdHlwZT0iamF2YS5zZWN1cml0eS5QZXJtaXNzaW9uQ29sbGVjdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJvdGVjdGlvbkRvbWFpbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3RlY3Rpb25Eb21haW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjcyIgdHlwZT0iamF2YS5zZWN1cml0eS5Db2RlU291cmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwZXJtaXNzaW9ucyIgdHlwZT0iamF2YS5zZWN1cml0eS5QZXJtaXNzaW9uQ29sbGVjdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2wiIHR5cGU9ImphdmEubGFuZy5DbGFzc0xvYWRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJpbmNpcGFscyIgdHlwZT0iamF2YS5zZWN1cml0eS5QcmluY2lwYWxbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldENsYXNzTG9hZGVyIgorIHJldHVybj0iamF2YS5sYW5nLkNsYXNzTG9hZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29kZVNvdXJjZSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuQ29kZVNvdXJjZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBlcm1pc3Npb25zIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5QZXJtaXNzaW9uQ29sbGVjdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByaW5jaXBhbHMiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlByaW5jaXBhbFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW1wbGllcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pc3Npb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuUGVybWlzc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQcm92aWRlciIKKyBleHRlbmRzPSJqYXZhLnV0aWwuUHJvcGVydGllcyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJvdmlkZXIiCisgdHlwZT0iamF2YS5zZWN1cml0eS5Qcm92aWRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZlcnNpb24iIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5mbyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEluZm8iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlcnZpY2UiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyLlNlcnZpY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlcnZpY2VzIgorIHJldHVybj0iamF2YS51dGlsLlNldCZsdDtqYXZhLnNlY3VyaXR5LlByb3ZpZGVyLlNlcnZpY2UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmVyc2lvbiIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0QWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0IiB0eXBlPSJqYXZhLnV0aWwuTWFwJmx0Oz8sID8mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dFNlcnZpY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIuU2VydmljZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVTZXJ2aWNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyLlNlcnZpY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUHJvdmlkZXIuU2VydmljZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcm92aWRlci5TZXJ2aWNlIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIuU2VydmljZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNsYXNzTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxpYXNlcyIgdHlwZT0iamF2YS51dGlsLkxpc3QmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJpYnV0ZXMiIHR5cGU9ImphdmEudXRpbC5NYXAmbHQ7amF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRBbGdvcml0aG0iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXR0cmlidXRlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENsYXNzTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm92aWRlciIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld0luc3RhbmNlIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29uc3RydWN0b3JQYXJhbWV0ZXIiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNQYXJhbWV0ZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXIiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUHJvdmlkZXJFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcm92aWRlckV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcm92aWRlckV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJvdmlkZXJFeGNlcHRpb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5Qcm92aWRlckV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcm92aWRlckV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iUHVibGljS2V5IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuS2V5Ij4KKzwvaW1wbGVtZW50cz4KKzxmaWVsZCBuYW1lPSJzZXJpYWxWZXJzaW9uVUlEIgorIHR5cGU9ImxvbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjcxODczOTI0NzExNTkxNTEwNzJMIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iU2VjdXJlQ2xhc3NMb2FkZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkNsYXNzTG9hZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2VjdXJlQ2xhc3NMb2FkZXIiCisgdHlwZT0iamF2YS5zZWN1cml0eS5TZWN1cmVDbGFzc0xvYWRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNlY3VyZUNsYXNzTG9hZGVyIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuU2VjdXJlQ2xhc3NMb2FkZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnQiIHR5cGU9ImphdmEubGFuZy5DbGFzc0xvYWRlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlZmluZUNsYXNzIgorIHJldHVybj0iamF2YS5sYW5nLkNsYXNzJmx0Oz8mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2ZmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjcyIgdHlwZT0iamF2YS5zZWN1cml0eS5Db2RlU291cmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlZmluZUNsYXNzIgorIHJldHVybj0iamF2YS5sYW5nLkNsYXNzJmx0Oz8mZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNzIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkNvZGVTb3VyY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGVybWlzc2lvbnMiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlBlcm1pc3Npb25Db2xsZWN0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2Rlc291cmNlIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkNvZGVTb3VyY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2VjdXJlUmFuZG9tIgorIGV4dGVuZHM9ImphdmEudXRpbC5SYW5kb20iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTZWN1cmVSYW5kb20iCisgdHlwZT0iamF2YS5zZWN1cml0eS5TZWN1cmVSYW5kb20iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTZWN1cmVSYW5kb20iCisgdHlwZT0iamF2YS5zZWN1cml0eS5TZWN1cmVSYW5kb20iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWVkIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNlY3VyZVJhbmRvbSIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LlNlY3VyZVJhbmRvbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlY3VyZVJhbmRvbVNwaSIgdHlwZT0iamF2YS5zZWN1cml0eS5TZWN1cmVSYW5kb21TcGkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2VuZXJhdGVTZWVkIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJudW1CeXRlcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFsZ29yaXRobSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlNlY3VyZVJhbmRvbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlNlY3VyZVJhbmRvbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hQcm92aWRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hQcm92aWRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuU2VjdXJlUmFuZG9tIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsZ29yaXRobSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvdmlkZXIiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2VlZCIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJudW1CeXRlcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibnVtQml0cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNlZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlZWQiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTZWN1cmVSYW5kb21TcGkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2VjdXJlUmFuZG9tU3BpIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuU2VjdXJlUmFuZG9tU3BpIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUdlbmVyYXRlU2VlZCIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJudW1CeXRlcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZU5leHRCeXRlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnl0ZXMiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVTZXRTZWVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWVkIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2VjdXJpdHkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImFkZFByb3ZpZGVyIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFsZ29yaXRobVByb3BlcnR5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsZ05hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3BOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFsZ29yaXRobXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuU2V0Jmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlcnZpY2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb3BlcnR5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvdmlkZXIiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm92aWRlcnMiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb3ZpZGVycyIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHJvdmlkZXJbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWx0ZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvdmlkZXJzIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5Qcm92aWRlcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsdGVyIiB0eXBlPSJqYXZhLnV0aWwuTWFwJmx0O2phdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imluc2VydFByb3ZpZGVyQXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iamF2YS5zZWN1cml0eS5Qcm92aWRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVQcm92aWRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByb3BlcnR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdG51bSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTZWN1cml0eVBlcm1pc3Npb24iCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5CYXNpY1Blcm1pc3Npb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNlY3VyaXR5UGVybWlzc2lvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LlNlY3VyaXR5UGVybWlzc2lvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNlY3VyaXR5UGVybWlzc2lvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LlNlY3VyaXR5UGVybWlzc2lvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNpZ25hdHVyZSIKKyBleHRlbmRzPSJqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZVNwaSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2lnbmF0dXJlIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuU2lnbmF0dXJlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0QWxnb3JpdGhtIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5TaWduYXR1cmUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5TaWduYXR1cmUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtZXRlciIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZFBhcmFtZXRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkUGFyYW1ldGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtZXRlcnMiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LkFsZ29yaXRobVBhcmFtZXRlcnMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm92aWRlciIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbml0U2lnbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJpdmF0ZUtleSIgdHlwZT0iamF2YS5zZWN1cml0eS5Qcml2YXRlS2V5Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkS2V5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRLZXlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5pdFNpZ24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByaXZhdGVLZXkiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJpdmF0ZUtleSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmFuZG9tIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlNlY3VyZVJhbmRvbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluaXRWZXJpZnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InB1YmxpY0tleSIgdHlwZT0iamF2YS5zZWN1cml0eS5QdWJsaWNLZXkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbml0VmVyaWZ5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjZXJ0aWZpY2F0ZSIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkS2V5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRLZXlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGFyYW1ldGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZFBhcmFtZXRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkUGFyYW1ldGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBhcmFtZXRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNpZ24iCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU2lnbmF0dXJlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaWduIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dGJ1ZiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNpZ25hdHVyZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5TaWduYXR1cmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJieXRlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTaWduYXR1cmVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuU2lnbmF0dXJlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTaWduYXR1cmVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuU2lnbmF0dXJlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNpZ25hdHVyZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5TaWduYXR1cmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJqYXZhLm5pby5CeXRlQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTaWduYXR1cmVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuU2lnbmF0dXJlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZlcmlmeSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2lnbmF0dXJlIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNpZ25hdHVyZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5TaWduYXR1cmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmVyaWZ5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaWduYXR1cmUiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTaWduYXR1cmVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuU2lnbmF0dXJlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iU0lHTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVU5JTklUSUFMSVpFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVkVSSUZZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzdGF0ZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2lnbmF0dXJlRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEuc2VjdXJpdHkuR2VuZXJhbFNlY3VyaXR5RXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2lnbmF0dXJlRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuU2lnbmF0dXJlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTaWduYXR1cmVFeGNlcHRpb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5TaWduYXR1cmVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTaWduYXR1cmVFeGNlcHRpb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5TaWduYXR1cmVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2lnbmF0dXJlRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuU2lnbmF0dXJlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTaWduYXR1cmVTcGkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2lnbmF0dXJlU3BpIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuU2lnbmF0dXJlU3BpIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5DbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVHZXRQYXJhbWV0ZXIiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRQYXJhbWV0ZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZFBhcmFtZXRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVHZXRQYXJhbWV0ZXJzIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5BbGdvcml0aG1QYXJhbWV0ZXJzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUluaXRTaWduIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcml2YXRlS2V5IiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByaXZhdGVLZXkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVJbml0U2lnbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByaXZhdGVLZXkiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJpdmF0ZUtleSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmFuZG9tIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlNlY3VyZVJhbmRvbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUluaXRWZXJpZnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InB1YmxpY0tleSIgdHlwZT0iamF2YS5zZWN1cml0eS5QdWJsaWNLZXkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVTZXRQYXJhbWV0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkUGFyYW1ldGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRQYXJhbWV0ZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lU2V0UGFyYW1ldGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZVNpZ24iCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxleGNlcHRpb24gbmFtZT0iU2lnbmF0dXJlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVTaWduIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXRidWYiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTaWduYXR1cmVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuU2lnbmF0dXJlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZVVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iYnl0ZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU2lnbmF0dXJlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVVcGRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2ZmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTaWduYXR1cmVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuU2lnbmF0dXJlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZVVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0IiB0eXBlPSJqYXZhLm5pby5CeXRlQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZVZlcmlmeSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2lnQnl0ZXMiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU2lnbmF0dXJlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVWZXJpZnkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaWdCeXRlcyIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNpZ25hdHVyZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5TaWduYXR1cmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJhcHBSYW5kb20iCisgdHlwZT0iamF2YS5zZWN1cml0eS5TZWN1cmVSYW5kb20iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2lnbmVkT2JqZWN0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNpZ25lZE9iamVjdCIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LlNpZ25lZE9iamVjdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNpZ25pbmdLZXkiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJpdmF0ZUtleSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2lnbmluZ0VuZ2luZSIgdHlwZT0iamF2YS5zZWN1cml0eS5TaWduYXR1cmUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkS2V5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRLZXlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNpZ25hdHVyZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5TaWduYXR1cmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRBbGdvcml0aG0iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9iamVjdCIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkNsYXNzTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5DbGFzc05vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaWduYXR1cmUiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmVyaWZ5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmVyaWZpY2F0aW9uS2V5IiB0eXBlPSJqYXZhLnNlY3VyaXR5LlB1YmxpY0tleSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmVyaWZpY2F0aW9uRW5naW5lIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTaWduYXR1cmVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuU2lnbmF0dXJlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNpZ25lciIKKyBleHRlbmRzPSJqYXZhLnNlY3VyaXR5LklkZW50aXR5IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNpZ25lciIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LlNpZ25lciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNpZ25lciIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LlNpZ25lciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNpZ25lciIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LlNpZ25lciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNjb3BlIiB0eXBlPSJqYXZhLnNlY3VyaXR5LklkZW50aXR5U2NvcGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IktleU1hbmFnZW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5TWFuYWdlbWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldFByaXZhdGVLZXkiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlByaXZhdGVLZXkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0S2V5UGFpciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFpciIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlQYWlyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkUGFyYW1ldGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRQYXJhbWV0ZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IktleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVGltZXN0YW1wIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRpbWVzdGFtcCIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LlRpbWVzdGFtcCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVzdGFtcCIgdHlwZT0iamF2YS51dGlsLkRhdGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNpZ25lckNlcnRQYXRoIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFBhdGgiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRTaWduZXJDZXJ0UGF0aCIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0UGF0aCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaW1lc3RhbXAiCisgcmV0dXJuPSJqYXZhLnV0aWwuRGF0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJVbnJlY292ZXJhYmxlRW50cnlFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5HZW5lcmFsU2VjdXJpdHlFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVbnJlY292ZXJhYmxlRW50cnlFeGNlcHRpb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5VbnJlY292ZXJhYmxlRW50cnlFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVbnJlY292ZXJhYmxlRW50cnlFeGNlcHRpb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5VbnJlY292ZXJhYmxlRW50cnlFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJVbnJlY292ZXJhYmxlS2V5RXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEuc2VjdXJpdHkuR2VuZXJhbFNlY3VyaXR5RXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVW5yZWNvdmVyYWJsZUtleUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LlVucmVjb3ZlcmFibGVLZXlFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlVucmVjb3ZlcmFibGVLZXlFeGNlcHRpb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5VbnJlY292ZXJhYmxlS2V5RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlVucmVzb2x2ZWRQZXJtaXNzaW9uIgorIGV4dGVuZHM9ImphdmEuc2VjdXJpdHkuUGVybWlzc2lvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iVW5yZXNvbHZlZFBlcm1pc3Npb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5VbnJlc29sdmVkUGVybWlzc2lvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGlvbnMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNlcnRzIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImVxdWFscyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iaiIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBY3Rpb25zIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVbnJlc29sdmVkQWN0aW9ucyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VW5yZXNvbHZlZENlcnRzIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VW5yZXNvbHZlZE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFVucmVzb2x2ZWRUeXBlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNoQ29kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbXBsaWVzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGVybWlzc2lvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5QZXJtaXNzaW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iamF2YS5zZWN1cml0eS5hY2wiCis+Cis8aW50ZXJmYWNlIG5hbWU9IkFjbCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnNlY3VyaXR5LmFjbC5Pd25lciI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImFkZEVudHJ5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsZXIiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJpbmNpcGFsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbnRyeSIgdHlwZT0iamF2YS5zZWN1cml0eS5hY2wuQWNsRW50cnkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vdE93bmVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmFjbC5Ob3RPd25lckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGVja1Blcm1pc3Npb24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByaW5jaXBhbCIgdHlwZT0iamF2YS5zZWN1cml0eS5QcmluY2lwYWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pc3Npb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuYWNsLlBlcm1pc3Npb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW50cmllcyIKKyByZXR1cm49ImphdmEudXRpbC5FbnVtZXJhdGlvbiZsdDtqYXZhLnNlY3VyaXR5LmFjbC5BY2xFbnRyeSZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBlcm1pc3Npb25zIgorIHJldHVybj0iamF2YS51dGlsLkVudW1lcmF0aW9uJmx0O2phdmEuc2VjdXJpdHkuYWNsLlBlcm1pc3Npb24mZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVzZXIiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJpbmNpcGFsIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZUVudHJ5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsZXIiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJpbmNpcGFsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbnRyeSIgdHlwZT0iamF2YS5zZWN1cml0eS5hY2wuQWNsRW50cnkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vdE93bmVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmFjbC5Ob3RPd25lckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXROYW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsZXIiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJpbmNpcGFsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb3RPd25lckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5hY2wuTm90T3duZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJBY2xFbnRyeSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ2xvbmVhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iYWRkUGVybWlzc2lvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGVybWlzc2lvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5hY2wuUGVybWlzc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGVja1Blcm1pc3Npb24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pc3Npb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuYWNsLlBlcm1pc3Npb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJpbmNpcGFsIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5QcmluY2lwYWwiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc05lZ2F0aXZlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBlcm1pc3Npb25zIgorIHJldHVybj0iamF2YS51dGlsLkVudW1lcmF0aW9uJmx0O2phdmEuc2VjdXJpdHkuYWNsLlBlcm1pc3Npb24mZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlUGVybWlzc2lvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGVybWlzc2lvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5hY2wuUGVybWlzc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXROZWdhdGl2ZVBlcm1pc3Npb25zIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByaW5jaXBhbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXNlciIgdHlwZT0iamF2YS5zZWN1cml0eS5QcmluY2lwYWwiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkFjbE5vdEZvdW5kRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBY2xOb3RGb3VuZEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmFjbC5BY2xOb3RGb3VuZEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iR3JvdXAiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5QcmluY2lwYWwiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJhZGRNZW1iZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVzZXIiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJpbmNpcGFsIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTWVtYmVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZW1iZXIiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJpbmNpcGFsIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1lbWJlcnMiCisgcmV0dXJuPSJqYXZhLnV0aWwuRW51bWVyYXRpb24mbHQ7PyBleHRlbmRzIGphdmEuc2VjdXJpdHkuUHJpbmNpcGFsJmd0OyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZU1lbWJlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXNlciIgdHlwZT0iamF2YS5zZWN1cml0eS5QcmluY2lwYWwiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9Ikxhc3RPd25lckV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGFzdE93bmVyRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuYWNsLkxhc3RPd25lckV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJOb3RPd25lckV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTm90T3duZXJFeGNlcHRpb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5hY2wuTm90T3duZXJFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ik93bmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYWRkT3duZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbGxlciIgdHlwZT0iamF2YS5zZWN1cml0eS5QcmluY2lwYWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im93bmVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByaW5jaXBhbCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTm90T3duZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuYWNsLk5vdE93bmVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlbGV0ZU93bmVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsZXIiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJpbmNpcGFsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvd25lciIgdHlwZT0iamF2YS5zZWN1cml0eS5QcmluY2lwYWwiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ikxhc3RPd25lckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5hY2wuTGFzdE93bmVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJOb3RPd25lckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5hY2wuTm90T3duZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNPd25lciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3duZXIiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJpbmNpcGFsIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iUGVybWlzc2lvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImVxdWFscyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYW5vdGhlciIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJqYXZhLnNlY3VyaXR5LmNlcnQiCis+Cis8Y2xhc3MgbmFtZT0iQ1JMIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNSTCIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ1JMIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldFR5cGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNSZXZva2VkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjZXJ0IiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ1JMRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEuc2VjdXJpdHkuR2VuZXJhbFNlY3VyaXR5RXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ1JMRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DUkxFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNSTEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ1JMRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ1JMRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DUkxFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ1JMRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DUkxFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDUkxTZWxlY3RvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ2xvbmVhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWF0Y2giCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNybCIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNSTCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ2VydFBhdGgiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2VydFBhdGgiCisgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldENlcnRpZmljYXRlcyIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0Oz8gZXh0ZW5kcyBqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGUmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RW5jb2RlZCIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJDZXJ0aWZpY2F0ZUVuY29kaW5nRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFbmNvZGluZ0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbmNvZGVkIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVuY29kaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDZXJ0aWZpY2F0ZUVuY29kaW5nRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFbmNvZGluZ0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbmNvZGluZ3MiCisgcmV0dXJuPSJqYXZhLnV0aWwuSXRlcmF0b3ImbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVJlcGxhY2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJPYmplY3RTdHJlYW1FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uT2JqZWN0U3RyZWFtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNlcnRQYXRoLkNlcnRQYXRoUmVwIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNlcnRQYXRoLkNlcnRQYXRoUmVwIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0UGF0aC5DZXJ0UGF0aFJlcCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InJlYWRSZXNvbHZlIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxleGNlcHRpb24gbmFtZT0iT2JqZWN0U3RyZWFtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLk9iamVjdFN0cmVhbUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDZXJ0UGF0aEJ1aWxkZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNlcnRQYXRoQnVpbGRlciIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFBhdGhCdWlsZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVpbGRlclNwaSIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoQnVpbGRlclNwaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFsZ29yaXRobSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImJ1aWxkIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoQnVpbGRlclJlc3VsdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0UGF0aFBhcmFtZXRlcnMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNlcnRQYXRoQnVpbGRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoQnVpbGRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFsZ29yaXRobSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWZhdWx0VHlwZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFBhdGhCdWlsZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsZ29yaXRobSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoQnVpbGRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb3ZpZGVyIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5Qcm92aWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNlcnRQYXRoQnVpbGRlckV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLnNlY3VyaXR5LkdlbmVyYWxTZWN1cml0eUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNlcnRQYXRoQnVpbGRlckV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFBhdGhCdWlsZGVyRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2VydFBhdGhCdWlsZGVyRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0UGF0aEJ1aWxkZXJFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2VydFBhdGhCdWlsZGVyRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0UGF0aEJ1aWxkZXJFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNlcnRQYXRoQnVpbGRlckV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFBhdGhCdWlsZGVyRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDZXJ0UGF0aEJ1aWxkZXJSZXN1bHQiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENlcnRQYXRoIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkNlcnRQYXRoQnVpbGRlclNwaSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDZXJ0UGF0aEJ1aWxkZXJTcGkiCisgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoQnVpbGRlclNwaSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVCdWlsZCIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0UGF0aEJ1aWxkZXJSZXN1bHQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFBhdGhQYXJhbWV0ZXJzIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDZXJ0UGF0aEJ1aWxkZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0UGF0aEJ1aWxkZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ2VydFBhdGhQYXJhbWV0ZXJzIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5DbG9uZWFibGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ2VydFBhdGhWYWxpZGF0b3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNlcnRQYXRoVmFsaWRhdG9yIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0UGF0aFZhbGlkYXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbGlkYXRvclNwaSIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoVmFsaWRhdG9yU3BpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iamF2YS5zZWN1cml0eS5Qcm92aWRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0QWxnb3JpdGhtIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlZmF1bHRUeXBlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFBhdGhWYWxpZGF0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoVmFsaWRhdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsZ29yaXRobSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoVmFsaWRhdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsZ29yaXRobSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvdmlkZXIiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsaWRhdGUiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFBhdGhWYWxpZGF0b3JSZXN1bHQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2VydFBhdGgiIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0UGF0aCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFBhdGhQYXJhbWV0ZXJzIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDZXJ0UGF0aFZhbGlkYXRvckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoVmFsaWRhdG9yRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2VydFBhdGhWYWxpZGF0b3JFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5HZW5lcmFsU2VjdXJpdHlFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDZXJ0UGF0aFZhbGlkYXRvckV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFBhdGhWYWxpZGF0b3JFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjZXJ0UGF0aCIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDZXJ0UGF0aFZhbGlkYXRvckV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFBhdGhWYWxpZGF0b3JFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDZXJ0UGF0aFZhbGlkYXRvckV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFBhdGhWYWxpZGF0b3JFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2VydFBhdGhWYWxpZGF0b3JFeGNlcHRpb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoVmFsaWRhdG9yRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDZXJ0UGF0aFZhbGlkYXRvckV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFBhdGhWYWxpZGF0b3JFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q2VydFBhdGgiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFBhdGgiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5kZXgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkNlcnRQYXRoVmFsaWRhdG9yUmVzdWx0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5DbG9uZWFibGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ2VydFBhdGhWYWxpZGF0b3JTcGkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2VydFBhdGhWYWxpZGF0b3JTcGkiCisgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoVmFsaWRhdG9yU3BpIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZVZhbGlkYXRlIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoVmFsaWRhdG9yUmVzdWx0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNlcnRQYXRoIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFBhdGgiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoUGFyYW1ldGVycyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2VydFBhdGhWYWxpZGF0b3JFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0UGF0aFZhbGlkYXRvckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDZXJ0U2VsZWN0b3IiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1hdGNoIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjZXJ0IiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkNlcnRTdG9yZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2VydFN0b3JlIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0U3RvcmUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdG9yZVNwaSIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRTdG9yZVNwaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRTdG9yZVBhcmFtZXRlcnMiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDUkxzIgorIHJldHVybj0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyBleHRlbmRzIGphdmEuc2VjdXJpdHkuY2VydC5DUkwmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdG9yIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ1JMU2VsZWN0b3IiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNlcnRTdG9yZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRTdG9yZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDZXJ0U3RvcmVQYXJhbWV0ZXJzIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRTdG9yZVBhcmFtZXRlcnMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDZXJ0aWZpY2F0ZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDs/IGV4dGVuZHMgamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWxlY3RvciIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRTZWxlY3RvciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2VydFN0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFN0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlZmF1bHRUeXBlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFN0b3JlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRTdG9yZVBhcmFtZXRlcnMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0U3RvcmUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFN0b3JlUGFyYW1ldGVycyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFN0b3JlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRTdG9yZVBhcmFtZXRlcnMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvdmlkZXIiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHlwZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDZXJ0U3RvcmVFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5HZW5lcmFsU2VjdXJpdHlFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDZXJ0U3RvcmVFeGNlcHRpb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRTdG9yZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNlcnRTdG9yZUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFN0b3JlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNlcnRTdG9yZUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFN0b3JlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDZXJ0U3RvcmVFeGNlcHRpb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRTdG9yZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ2VydFN0b3JlUGFyYW1ldGVycyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ2xvbmVhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkNlcnRTdG9yZVNwaSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDZXJ0U3RvcmVTcGkiCisgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRTdG9yZVNwaSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRTdG9yZVBhcmFtZXRlcnMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUdldENSTHMiCisgcmV0dXJuPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDs/IGV4dGVuZHMgamF2YS5zZWN1cml0eS5jZXJ0LkNSTCZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VsZWN0b3IiIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DUkxTZWxlY3RvciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2VydFN0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFN0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUdldENlcnRpZmljYXRlcyIKKyByZXR1cm49ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0Oz8gZXh0ZW5kcyBqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGUmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlbGVjdG9yIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFNlbGVjdG9yIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDZXJ0U3RvcmVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0U3RvcmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2VydGlmaWNhdGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2VydGlmaWNhdGUiCisgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEVuY29kZWQiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iQ2VydGlmaWNhdGVFbmNvZGluZ0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlRW5jb2RpbmdFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHVibGljS2V5IgorIHJldHVybj0iamF2YS5zZWN1cml0eS5QdWJsaWNLZXkiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZlcmlmeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLnNlY3VyaXR5LlB1YmxpY0tleSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2VydGlmaWNhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hQcm92aWRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hQcm92aWRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU2lnbmF0dXJlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2ZXJpZnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5zZWN1cml0eS5QdWJsaWNLZXkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNpZ1Byb3ZpZGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDZXJ0aWZpY2F0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkS2V5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRLZXlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTaWduYXR1cmVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuU2lnbmF0dXJlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlUmVwbGFjZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8ZXhjZXB0aW9uIG5hbWU9Ik9iamVjdFN0cmVhbUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5PYmplY3RTdHJlYW1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2VydGlmaWNhdGUuQ2VydGlmaWNhdGVSZXAiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2VydGlmaWNhdGUuQ2VydGlmaWNhdGVSZXAiCisgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlLkNlcnRpZmljYXRlUmVwIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0icmVhZFJlc29sdmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJPYmplY3RTdHJlYW1FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uT2JqZWN0U3RyZWFtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNlcnRpZmljYXRlRW5jb2RpbmdFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2VydGlmaWNhdGVFbmNvZGluZ0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFbmNvZGluZ0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2VydGlmaWNhdGVFbmNvZGluZ0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFbmNvZGluZ0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNlcnRpZmljYXRlRW5jb2RpbmdFeGNlcHRpb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlRW5jb2RpbmdFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2VydGlmaWNhdGVFbmNvZGluZ0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFbmNvZGluZ0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2VydGlmaWNhdGVFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5HZW5lcmFsU2VjdXJpdHlFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDZXJ0aWZpY2F0ZUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNlcnRpZmljYXRlRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNlcnRpZmljYXRlRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDZXJ0aWZpY2F0ZUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNlcnRpZmljYXRlRXhwaXJlZEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDZXJ0aWZpY2F0ZUV4cGlyZWRFeGNlcHRpb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlRXhwaXJlZEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2VydGlmaWNhdGVFeHBpcmVkRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUV4cGlyZWRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2VydGlmaWNhdGVGYWN0b3J5IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDZXJ0aWZpY2F0ZUZhY3RvcnkiCisgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlRmFjdG9yeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNlcnRGYWNTcGkiIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUZhY3RvcnlTcGkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2VuZXJhdGVDUkwiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ1JMIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluU3RyZWFtIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDUkxFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DUkxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2VuZXJhdGVDUkxzIgorIHJldHVybj0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyBleHRlbmRzIGphdmEuc2VjdXJpdHkuY2VydC5DUkwmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluU3RyZWFtIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDUkxFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DUkxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2VuZXJhdGVDZXJ0UGF0aCIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0UGF0aCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpblN0cmVhbSIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2VydGlmaWNhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZW5lcmF0ZUNlcnRQYXRoIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluU3RyZWFtIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmNvZGluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2VydGlmaWNhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZW5lcmF0ZUNlcnRQYXRoIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNlcnRpZmljYXRlcyIgdHlwZT0iamF2YS51dGlsLkxpc3QmbHQ7PyBleHRlbmRzIGphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNlcnRpZmljYXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2VuZXJhdGVDZXJ0aWZpY2F0ZSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpblN0cmVhbSIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2VydGlmaWNhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZW5lcmF0ZUNlcnRpZmljYXRlcyIKKyByZXR1cm49ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0Oz8gZXh0ZW5kcyBqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGUmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluU3RyZWFtIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDZXJ0aWZpY2F0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENlcnRQYXRoRW5jb2RpbmdzIgorIHJldHVybj0iamF2YS51dGlsLkl0ZXJhdG9yJmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVGYWN0b3J5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2VydGlmaWNhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUZhY3RvcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2VydGlmaWNhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVGYWN0b3J5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNlcnRpZmljYXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvdmlkZXIiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHlwZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDZXJ0aWZpY2F0ZUZhY3RvcnlTcGkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2VydGlmaWNhdGVGYWN0b3J5U3BpIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUZhY3RvcnlTcGkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZW5naW5lR2VuZXJhdGVDUkwiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ1JMIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluU3RyZWFtIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDUkxFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DUkxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lR2VuZXJhdGVDUkxzIgorIHJldHVybj0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyBleHRlbmRzIGphdmEuc2VjdXJpdHkuY2VydC5DUkwmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluU3RyZWFtIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDUkxFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DUkxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lR2VuZXJhdGVDZXJ0UGF0aCIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0UGF0aCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5TdHJlYW0iIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNlcnRpZmljYXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lR2VuZXJhdGVDZXJ0UGF0aCIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0UGF0aCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5TdHJlYW0iIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuY29kaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDZXJ0aWZpY2F0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUdlbmVyYXRlQ2VydFBhdGgiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFBhdGgiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNlcnRpZmljYXRlcyIgdHlwZT0iamF2YS51dGlsLkxpc3QmbHQ7PyBleHRlbmRzIGphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNlcnRpZmljYXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lR2VuZXJhdGVDZXJ0aWZpY2F0ZSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpblN0cmVhbSIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2VydGlmaWNhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVHZW5lcmF0ZUNlcnRpZmljYXRlcyIKKyByZXR1cm49ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0Oz8gZXh0ZW5kcyBqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGUmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluU3RyZWFtIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDZXJ0aWZpY2F0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUdldENlcnRQYXRoRW5jb2RpbmdzIgorIHJldHVybj0iamF2YS51dGlsLkl0ZXJhdG9yJmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNlcnRpZmljYXRlTm90WWV0VmFsaWRFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2VydGlmaWNhdGVOb3RZZXRWYWxpZEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVOb3RZZXRWYWxpZEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2VydGlmaWNhdGVOb3RZZXRWYWxpZEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVOb3RZZXRWYWxpZEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDZXJ0aWZpY2F0ZVBhcnNpbmdFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2VydGlmaWNhdGVQYXJzaW5nRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZVBhcnNpbmdFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNlcnRpZmljYXRlUGFyc2luZ0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVQYXJzaW5nRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2VydGlmaWNhdGVQYXJzaW5nRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZVBhcnNpbmdFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2VydGlmaWNhdGVQYXJzaW5nRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZVBhcnNpbmdFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvbGxlY3Rpb25DZXJ0U3RvcmVQYXJhbWV0ZXJzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0U3RvcmVQYXJhbWV0ZXJzIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb2xsZWN0aW9uQ2VydFN0b3JlUGFyYW1ldGVycyIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ29sbGVjdGlvbkNlcnRTdG9yZVBhcmFtZXRlcnMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb2xsZWN0aW9uQ2VydFN0b3JlUGFyYW1ldGVycyIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ29sbGVjdGlvbkNlcnRTdG9yZVBhcmFtZXRlcnMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xsZWN0aW9uIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb2xsZWN0aW9uIgorIHJldHVybj0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTERBUENlcnRTdG9yZVBhcmFtZXRlcnMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRTdG9yZVBhcmFtZXRlcnMiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxEQVBDZXJ0U3RvcmVQYXJhbWV0ZXJzIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5MREFQQ2VydFN0b3JlUGFyYW1ldGVycyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlcnZlck5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTERBUENlcnRTdG9yZVBhcmFtZXRlcnMiCisgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkxEQVBDZXJ0U3RvcmVQYXJhbWV0ZXJzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTERBUENlcnRTdG9yZVBhcmFtZXRlcnMiCisgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkxEQVBDZXJ0U3RvcmVQYXJhbWV0ZXJzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VydmVyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQb3J0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlcnZlck5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBLSVhCdWlsZGVyUGFyYW1ldGVycyIKKyBleHRlbmRzPSJqYXZhLnNlY3VyaXR5LmNlcnQuUEtJWFBhcmFtZXRlcnMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQS0lYQnVpbGRlclBhcmFtZXRlcnMiCisgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LlBLSVhCdWlsZGVyUGFyYW1ldGVycyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRydXN0QW5jaG9ycyIgdHlwZT0iamF2YS51dGlsLlNldCZsdDtqYXZhLnNlY3VyaXR5LmNlcnQuVHJ1c3RBbmNob3ImZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXRDb25zdHJhaW50cyIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRTZWxlY3RvciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQS0lYQnVpbGRlclBhcmFtZXRlcnMiCisgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LlBLSVhCdWlsZGVyUGFyYW1ldGVycyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleVN0b3JlIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXRDb25zdHJhaW50cyIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRTZWxlY3RvciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJLZXlTdG9yZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldE1heFBhdGhMZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWF4UGF0aExlbmd0aCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1heFBhdGhMZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQS0lYQ2VydFBhdGhCdWlsZGVyUmVzdWx0IgorIGV4dGVuZHM9ImphdmEuc2VjdXJpdHkuY2VydC5QS0lYQ2VydFBhdGhWYWxpZGF0b3JSZXN1bHQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0UGF0aEJ1aWxkZXJSZXN1bHQiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBLSVhDZXJ0UGF0aEJ1aWxkZXJSZXN1bHQiCisgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LlBLSVhDZXJ0UGF0aEJ1aWxkZXJSZXN1bHQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjZXJ0UGF0aCIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0cnVzdEFuY2hvciIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LlRydXN0QW5jaG9yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb2xpY3lUcmVlIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuUG9saWN5Tm9kZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3ViamVjdFB1YmxpY0tleSIgdHlwZT0iamF2YS5zZWN1cml0eS5QdWJsaWNLZXkiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDZXJ0UGF0aCIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0UGF0aCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQS0lYQ2VydFBhdGhDaGVja2VyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUEtJWENlcnRQYXRoQ2hlY2tlciIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuUEtJWENlcnRQYXRoQ2hlY2tlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjaGVjayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2VydCIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bnJlc29sdmVkQ3JpdEV4dHMiIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDZXJ0UGF0aFZhbGlkYXRvckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoVmFsaWRhdG9yRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdXBwb3J0ZWRFeHRlbnNpb25zIgorIHJldHVybj0iamF2YS51dGlsLlNldCZsdDtqYXZhLmxhbmcuU3RyaW5nJmd0OyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcndhcmQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNlcnRQYXRoVmFsaWRhdG9yRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFBhdGhWYWxpZGF0b3JFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNGb3J3YXJkQ2hlY2tpbmdTdXBwb3J0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUEtJWENlcnRQYXRoVmFsaWRhdG9yUmVzdWx0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0UGF0aFZhbGlkYXRvclJlc3VsdCI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUEtJWENlcnRQYXRoVmFsaWRhdG9yUmVzdWx0IgorIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5QS0lYQ2VydFBhdGhWYWxpZGF0b3JSZXN1bHQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0cnVzdEFuY2hvciIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LlRydXN0QW5jaG9yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb2xpY3lUcmVlIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuUG9saWN5Tm9kZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3ViamVjdFB1YmxpY0tleSIgdHlwZT0iamF2YS5zZWN1cml0eS5QdWJsaWNLZXkiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UG9saWN5VHJlZSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuY2VydC5Qb2xpY3lOb2RlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFB1YmxpY0tleSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHVibGljS2V5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRydXN0QW5jaG9yIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0LlRydXN0QW5jaG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBLSVhQYXJhbWV0ZXJzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0UGF0aFBhcmFtZXRlcnMiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBLSVhQYXJhbWV0ZXJzIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5QS0lYUGFyYW1ldGVycyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRydXN0QW5jaG9ycyIgdHlwZT0iamF2YS51dGlsLlNldCZsdDtqYXZhLnNlY3VyaXR5LmNlcnQuVHJ1c3RBbmNob3ImZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBLSVhQYXJhbWV0ZXJzIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5QS0lYUGFyYW1ldGVycyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleVN0b3JlIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IktleVN0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkQ2VydFBhdGhDaGVja2VyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hlY2tlciIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LlBLSVhDZXJ0UGF0aENoZWNrZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkQ2VydFN0b3JlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RvcmUiIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0U3RvcmUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENlcnRQYXRoQ2hlY2tlcnMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDtqYXZhLnNlY3VyaXR5LmNlcnQuUEtJWENlcnRQYXRoQ2hlY2tlciZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2VydFN0b3JlcyIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2phdmEuc2VjdXJpdHkuY2VydC5DZXJ0U3RvcmUmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERhdGUiCisgcmV0dXJuPSJqYXZhLnV0aWwuRGF0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbml0aWFsUG9saWNpZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuU2V0Jmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBvbGljeVF1YWxpZmllcnNSZWplY3RlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2lnUHJvdmlkZXIiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRhcmdldENlcnRDb25zdHJhaW50cyIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0U2VsZWN0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHJ1c3RBbmNob3JzIgorIHJldHVybj0iamF2YS51dGlsLlNldCZsdDtqYXZhLnNlY3VyaXR5LmNlcnQuVHJ1c3RBbmNob3ImZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQW55UG9saWN5SW5oaWJpdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0V4cGxpY2l0UG9saWN5UmVxdWlyZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUG9saWN5TWFwcGluZ0luaGliaXRlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNSZXZvY2F0aW9uRW5hYmxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QW55UG9saWN5SW5oaWJpdGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYW55UG9saWN5SW5oaWJpdGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENlcnRQYXRoQ2hlY2tlcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjZXJ0UGF0aENoZWNrZXJzIiB0eXBlPSJqYXZhLnV0aWwuTGlzdCZsdDtqYXZhLnNlY3VyaXR5LmNlcnQuUEtJWENlcnRQYXRoQ2hlY2tlciZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2VydFN0b3JlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNlcnRTdG9yZXMiIHR5cGU9ImphdmEudXRpbC5MaXN0Jmx0O2phdmEuc2VjdXJpdHkuY2VydC5DZXJ0U3RvcmUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRlIiB0eXBlPSJqYXZhLnV0aWwuRGF0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFeHBsaWNpdFBvbGljeVJlcXVpcmVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwbGljaXRQb2xpY3lSZXF1aXJlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJbml0aWFsUG9saWNpZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbml0aWFsUG9saWNpZXMiIHR5cGU9ImphdmEudXRpbC5TZXQmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UG9saWN5TWFwcGluZ0luaGliaXRlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvbGljeU1hcHBpbmdJbmhpYml0ZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UG9saWN5UXVhbGlmaWVyc1JlamVjdGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9saWN5UXVhbGlmaWVyc1JlamVjdGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJldm9jYXRpb25FbmFibGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmV2b2NhdGlvbkVuYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2lnUHJvdmlkZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaWdQcm92aWRlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUYXJnZXRDZXJ0Q29uc3RyYWludHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXRDZXJ0Q29uc3RyYWludHMiIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0U2VsZWN0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VHJ1c3RBbmNob3JzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHJ1c3RBbmNob3JzIiB0eXBlPSJqYXZhLnV0aWwuU2V0Jmx0O2phdmEuc2VjdXJpdHkuY2VydC5UcnVzdEFuY2hvciZndDsiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iUG9saWN5Tm9kZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldENoaWxkcmVuIgorIHJldHVybj0iamF2YS51dGlsLkl0ZXJhdG9yJmx0Oz8gZXh0ZW5kcyBqYXZhLnNlY3VyaXR5LmNlcnQuUG9saWN5Tm9kZSZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZXB0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEV4cGVjdGVkUG9saWNpZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuU2V0Jmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFyZW50IgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0LlBvbGljeU5vZGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQb2xpY3lRdWFsaWZpZXJzIgorIHJldHVybj0iamF2YS51dGlsLlNldCZsdDs/IGV4dGVuZHMgamF2YS5zZWN1cml0eS5jZXJ0LlBvbGljeVF1YWxpZmllckluZm8mZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmFsaWRQb2xpY3kiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNDcml0aWNhbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iUG9saWN5UXVhbGlmaWVySW5mbyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUG9saWN5UXVhbGlmaWVySW5mbyIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuUG9saWN5UXVhbGlmaWVySW5mbyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVuY29kZWQiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRFbmNvZGVkIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UG9saWN5UXVhbGlmaWVyIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UG9saWN5UXVhbGlmaWVySWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVHJ1c3RBbmNob3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRydXN0QW5jaG9yIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5UcnVzdEFuY2hvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRydXN0ZWRDZXJ0IiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuWDUwOUNlcnRpZmljYXRlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lQ29uc3RyYWludHMiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVHJ1c3RBbmNob3IiCisgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LlRydXN0QW5jaG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYVB1YmxpY0tleSIgdHlwZT0iamF2YS5zZWN1cml0eS5QdWJsaWNLZXkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWVDb25zdHJhaW50cyIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUcnVzdEFuY2hvciIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuVHJ1c3RBbmNob3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYVByaW5jaXBhbCIgdHlwZT0iamF2YXguc2VjdXJpdHkuYXV0aC54NTAwLlg1MDBQcmluY2lwYWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhUHVibGljS2V5IiB0eXBlPSJqYXZhLnNlY3VyaXR5LlB1YmxpY0tleSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZUNvbnN0cmFpbnRzIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDQSIKKyByZXR1cm49ImphdmF4LnNlY3VyaXR5LmF1dGgueDUwMC5YNTAwUHJpbmNpcGFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q0FOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENBUHVibGljS2V5IgorIHJldHVybj0iamF2YS5zZWN1cml0eS5QdWJsaWNLZXkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lQ29uc3RyYWludHMiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUcnVzdGVkQ2VydCIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuY2VydC5YNTA5Q2VydGlmaWNhdGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJYNTA5Q1JMIgorIGV4dGVuZHM9ImphdmEuc2VjdXJpdHkuY2VydC5DUkwiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlFeHRlbnNpb24iPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ilg1MDlDUkwiCisgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlDUkwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0RW5jb2RlZCIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJDUkxFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DUkxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SXNzdWVyRE4iCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlByaW5jaXBhbCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElzc3Vlclg1MDBQcmluY2lwYWwiCisgcmV0dXJuPSJqYXZheC5zZWN1cml0eS5hdXRoLng1MDAuWDUwMFByaW5jaXBhbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROZXh0VXBkYXRlIgorIHJldHVybj0iamF2YS51dGlsLkRhdGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXZva2VkQ2VydGlmaWNhdGUiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LmNlcnQuWDUwOUNSTEVudHJ5IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlcmlhbE51bWJlciIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmV2b2tlZENlcnRpZmljYXRlIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlDUkxFbnRyeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2VydGlmaWNhdGUiIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5YNTA5Q2VydGlmaWNhdGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmV2b2tlZENlcnRpZmljYXRlcyIKKyByZXR1cm49ImphdmEudXRpbC5TZXQmbHQ7PyBleHRlbmRzIGphdmEuc2VjdXJpdHkuY2VydC5YNTA5Q1JMRW50cnkmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2lnQWxnTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaWdBbGdPSUQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2lnQWxnUGFyYW1zIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2lnbmF0dXJlIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VEJTQ2VydExpc3QiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iQ1JMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ1JMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRoaXNVcGRhdGUiCisgcmV0dXJuPSJqYXZhLnV0aWwuRGF0ZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZlcnNpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2ZXJpZnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5zZWN1cml0eS5QdWJsaWNLZXkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNSTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNSTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hQcm92aWRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hQcm92aWRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU2lnbmF0dXJlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2ZXJpZnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5zZWN1cml0eS5QdWJsaWNLZXkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNpZ1Byb3ZpZGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDUkxFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DUkxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNpZ25hdHVyZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5TaWduYXR1cmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iWDUwOUNSTEVudHJ5IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlFeHRlbnNpb24iPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ilg1MDlDUkxFbnRyeSIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuWDUwOUNSTEVudHJ5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldENlcnRpZmljYXRlSXNzdWVyIgorIHJldHVybj0iamF2YXguc2VjdXJpdHkuYXV0aC54NTAwLlg1MDBQcmluY2lwYWwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RW5jb2RlZCIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJDUkxFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DUkxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmV2b2NhdGlvbkRhdGUiCisgcmV0dXJuPSJqYXZhLnV0aWwuRGF0ZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlcmlhbE51bWJlciIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzRXh0ZW5zaW9ucyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJYNTA5Q1JMU2VsZWN0b3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNSTFNlbGVjdG9yIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJYNTA5Q1JMU2VsZWN0b3IiCisgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlDUkxTZWxlY3RvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRJc3N1ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpc3N1ZXIiIHR5cGU9ImphdmF4LnNlY3VyaXR5LmF1dGgueDUwMC5YNTAwUHJpbmNpcGFsIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZElzc3Vlck5hbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpc3NfbmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkSXNzdWVyTmFtZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imlzc19uYW1lIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDZXJ0aWZpY2F0ZUNoZWNraW5nIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlDZXJ0aWZpY2F0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREYXRlQW5kVGltZSIKKyByZXR1cm49ImphdmEudXRpbC5EYXRlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElzc3Vlck5hbWVzIgorIHJldHVybj0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7amF2YS5sYW5nLk9iamVjdCZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SXNzdWVycyIKKyByZXR1cm49ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0O2phdmF4LnNlY3VyaXR5LmF1dGgueDUwMC5YNTAwUHJpbmNpcGFsJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYXhDUkwiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNaW5DUkwiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYXRjaCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNybCIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNSTCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDZXJ0aWZpY2F0ZUNoZWNraW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2VydCIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlDZXJ0aWZpY2F0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREYXRlQW5kVGltZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGVBbmRUaW1lIiB0eXBlPSJqYXZhLnV0aWwuRGF0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJc3N1ZXJOYW1lcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWVzIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SXNzdWVycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imlzc3VlcnMiIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0O2phdmF4LnNlY3VyaXR5LmF1dGgueDUwMC5YNTAwUHJpbmNpcGFsJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNYXhDUkxOdW1iZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXhDUkwiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE1pbkNSTE51bWJlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbkNSTCIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iWDUwOUNlcnRTZWxlY3RvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydFNlbGVjdG9yIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJYNTA5Q2VydFNlbGVjdG9yIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5YNTA5Q2VydFNlbGVjdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZFBhdGhUb05hbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZFBhdGhUb05hbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkU3ViamVjdEFsdGVybmF0aXZlTmFtZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRTdWJqZWN0QWx0ZXJuYXRpdmVOYW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFnIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF1dGhvcml0eUtleUlkZW50aWZpZXIiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QmFzaWNDb25zdHJhaW50cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDZXJ0aWZpY2F0ZSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuY2VydC5YNTA5Q2VydGlmaWNhdGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2VydGlmaWNhdGVWYWxpZCIKKyByZXR1cm49ImphdmEudXRpbC5EYXRlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEV4dGVuZGVkS2V5VXNhZ2UiCisgcmV0dXJuPSJqYXZhLnV0aWwuU2V0Jmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElzc3VlciIKKyByZXR1cm49ImphdmF4LnNlY3VyaXR5LmF1dGgueDUwMC5YNTAwUHJpbmNpcGFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElzc3VlckFzQnl0ZXMiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElzc3VlckFzU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRLZXlVc2FnZSIKKyByZXR1cm49ImJvb2xlYW5bXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYXRjaEFsbFN1YmplY3RBbHROYW1lcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZUNvbnN0cmFpbnRzIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhdGhUb05hbWVzIgorIHJldHVybj0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7amF2YS51dGlsLkxpc3QmbHQ7PyZndDsmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBvbGljeSIKKyByZXR1cm49ImphdmEudXRpbC5TZXQmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJpdmF0ZUtleVZhbGlkIgorIHJldHVybj0iamF2YS51dGlsLkRhdGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2VyaWFsTnVtYmVyIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3ViamVjdCIKKyByZXR1cm49ImphdmF4LnNlY3VyaXR5LmF1dGgueDUwMC5YNTAwUHJpbmNpcGFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1YmplY3RBbHRlcm5hdGl2ZU5hbWVzIgorIHJldHVybj0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7amF2YS51dGlsLkxpc3QmbHQ7PyZndDsmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1YmplY3RBc0J5dGVzIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdWJqZWN0QXNTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1YmplY3RLZXlJZGVudGlmaWVyIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1YmplY3RQdWJsaWNLZXkiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlB1YmxpY0tleSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdWJqZWN0UHVibGljS2V5QWxnSUQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1hdGNoIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2VydGlmaWNhdGUiIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBdXRob3JpdHlLZXlJZGVudGlmaWVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0aG9yaXR5S2V5SWRlbnRpZmllciIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEJhc2ljQ29uc3RyYWludHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoTGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2VydGlmaWNhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjZXJ0aWZpY2F0ZSIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlDZXJ0aWZpY2F0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDZXJ0aWZpY2F0ZVZhbGlkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2VydGlmaWNhdGVWYWxpZCIgdHlwZT0iamF2YS51dGlsLkRhdGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RXh0ZW5kZWRLZXlVc2FnZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleVVzYWdlIiB0eXBlPSJqYXZhLnV0aWwuU2V0Jmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJc3N1ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpc3N1ZXIiIHR5cGU9ImphdmF4LnNlY3VyaXR5LmF1dGgueDUwMC5YNTAwUHJpbmNpcGFsIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldElzc3VlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imlzc3Vlck5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldElzc3VlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imlzc3VlckROIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEtleVVzYWdlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5VXNhZ2UiIHR5cGU9ImJvb2xlYW5bXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNYXRjaEFsbFN1YmplY3RBbHROYW1lcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1hdGNoQWxsTmFtZXMiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TmFtZUNvbnN0cmFpbnRzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnl0ZXMiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGF0aFRvTmFtZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lcyIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7amF2YS51dGlsLkxpc3QmbHQ7PyZndDsmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQb2xpY3kiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb2xpY2llcyIgdHlwZT0iamF2YS51dGlsLlNldCZsdDtqYXZhLmxhbmcuU3RyaW5nJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UHJpdmF0ZUtleVZhbGlkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJpdmF0ZUtleVZhbGlkIiB0eXBlPSJqYXZhLnV0aWwuRGF0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTZXJpYWxOdW1iZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZXJpYWxOdW1iZXIiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN1YmplY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdWJqZWN0IiB0eXBlPSJqYXZheC5zZWN1cml0eS5hdXRoLng1MDAuWDUwMFByaW5jaXBhbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTdWJqZWN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3ViamVjdEROIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTdWJqZWN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3ViamVjdEROIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN1YmplY3RBbHRlcm5hdGl2ZU5hbWVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXMiIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0O2phdmEudXRpbC5MaXN0Jmx0Oz8mZ3Q7Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3ViamVjdEtleUlkZW50aWZpZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdWJqZWN0S2V5SWRlbnRpZmllciIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN1YmplY3RQdWJsaWNLZXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHVibGljS2V5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN1YmplY3RQdWJsaWNLZXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3ViamVjdFB1YmxpY0tleUFsZ0lEIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2lkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJYNTA5Q2VydGlmaWNhdGUiCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuY2VydC5YNTA5RXh0ZW5zaW9uIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJYNTA5Q2VydGlmaWNhdGUiCisgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlDZXJ0aWZpY2F0ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjaGVja1ZhbGlkaXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJDZXJ0aWZpY2F0ZUV4cGlyZWRFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUV4cGlyZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkNlcnRpZmljYXRlTm90WWV0VmFsaWRFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZU5vdFlldFZhbGlkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrVmFsaWRpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGUiIHR5cGU9ImphdmEudXRpbC5EYXRlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDZXJ0aWZpY2F0ZUV4cGlyZWRFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUV4cGlyZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkNlcnRpZmljYXRlTm90WWV0VmFsaWRFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZU5vdFlldFZhbGlkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJhc2ljQ29uc3RyYWludHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeHRlbmRlZEtleVVzYWdlIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkNlcnRpZmljYXRlUGFyc2luZ0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlUGFyc2luZ0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJc3N1ZXJBbHRlcm5hdGl2ZU5hbWVzIgorIHJldHVybj0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7amF2YS51dGlsLkxpc3QmbHQ7PyZndDsmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJDZXJ0aWZpY2F0ZVBhcnNpbmdFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZVBhcnNpbmdFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SXNzdWVyRE4iCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlByaW5jaXBhbCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElzc3VlclVuaXF1ZUlEIgorIHJldHVybj0iYm9vbGVhbltdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SXNzdWVyWDUwMFByaW5jaXBhbCIKKyByZXR1cm49ImphdmF4LnNlY3VyaXR5LmF1dGgueDUwMC5YNTAwUHJpbmNpcGFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEtleVVzYWdlIgorIHJldHVybj0iYm9vbGVhbltdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Tm90QWZ0ZXIiCisgcmV0dXJuPSJqYXZhLnV0aWwuRGF0ZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5vdEJlZm9yZSIKKyByZXR1cm49ImphdmEudXRpbC5EYXRlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2VyaWFsTnVtYmVyIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaWdBbGdOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNpZ0FsZ09JRCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaWdBbGdQYXJhbXMiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaWduYXR1cmUiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdWJqZWN0QWx0ZXJuYXRpdmVOYW1lcyIKKyByZXR1cm49ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0O2phdmEudXRpbC5MaXN0Jmx0Oz8mZ3Q7Jmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iQ2VydGlmaWNhdGVQYXJzaW5nRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVQYXJzaW5nRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1YmplY3RETiIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHJpbmNpcGFsIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3ViamVjdFVuaXF1ZUlEIgorIHJldHVybj0iYm9vbGVhbltdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3ViamVjdFg1MDBQcmluY2lwYWwiCisgcmV0dXJuPSJqYXZheC5zZWN1cml0eS5hdXRoLng1MDAuWDUwMFByaW5jaXBhbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUQlNDZXJ0aWZpY2F0ZSIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJDZXJ0aWZpY2F0ZUVuY29kaW5nRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFbmNvZGluZ0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWZXJzaW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ilg1MDlFeHRlbnNpb24iCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRDcml0aWNhbEV4dGVuc2lvbk9JRHMiCisgcmV0dXJuPSJqYXZhLnV0aWwuU2V0Jmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RXh0ZW5zaW9uVmFsdWUiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2lkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5vbkNyaXRpY2FsRXh0ZW5zaW9uT0lEcyIKKyByZXR1cm49ImphdmEudXRpbC5TZXQmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNVbnN1cHBvcnRlZENyaXRpY2FsRXh0ZW5zaW9uIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImphdmEuc2VjdXJpdHkuaW50ZXJmYWNlcyIKKz4KKzxpbnRlcmZhY2UgbmFtZT0iRFNBS2V5IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0UGFyYW1zIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5pbnRlcmZhY2VzLkRTQVBhcmFtcyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iRFNBS2V5UGFpckdlbmVyYXRvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImluaXRpYWxpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5zZWN1cml0eS5pbnRlcmZhY2VzLkRTQVBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmFuZG9tIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlNlY3VyZVJhbmRvbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZFBhcmFtZXRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkUGFyYW1ldGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluaXRpYWxpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJnZW5QYXJhbXMiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJhbmRvbSIgdHlwZT0iamF2YS5zZWN1cml0eS5TZWN1cmVSYW5kb20iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRQYXJhbWV0ZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZFBhcmFtZXRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkRTQVBhcmFtcyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldEciCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFAiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFEiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iRFNBUHJpdmF0ZUtleSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnNlY3VyaXR5LmludGVyZmFjZXMuRFNBS2V5Ij4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuUHJpdmF0ZUtleSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImdldFgiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0ic2VyaWFsVmVyc2lvblVJRCIKKyB0eXBlPSJsb25nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3Nzc2NDk3NDgyNTMzNzkwMjc5TCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJEU0FQdWJsaWNLZXkiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5pbnRlcmZhY2VzLkRTQUtleSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnNlY3VyaXR5LlB1YmxpY0tleSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImdldFkiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0ic2VyaWFsVmVyc2lvblVJRCIKKyB0eXBlPSJsb25nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjM0NTI2MzMyNzc5MDIyMzMyTCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJFQ0tleSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtcyIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuc3BlYy5FQ1BhcmFtZXRlclNwZWMiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkVDUHJpdmF0ZUtleSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnNlY3VyaXR5LmludGVyZmFjZXMuRUNLZXkiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5Qcml2YXRlS2V5Ij4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0UyIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJzZXJpYWxWZXJzaW9uVUlEIgorIHR5cGU9ImxvbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii03ODk2Mzk0OTU2OTI1NjA5MTg0TCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJFQ1B1YmxpY0tleSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnNlY3VyaXR5LmludGVyZmFjZXMuRUNLZXkiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5QdWJsaWNLZXkiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRXIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5zcGVjLkVDUG9pbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9InNlcmlhbFZlcnNpb25VSUQiCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTMzMTQ5ODg2Mjk4Nzk2MzI4MjZMIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlJTQUtleSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldE1vZHVsdXMiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iUlNBTXVsdGlQcmltZVByaXZhdGVDcnRLZXkiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5pbnRlcmZhY2VzLlJTQVByaXZhdGVLZXkiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRDcnRDb2VmZmljaWVudCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T3RoZXJQcmltZUluZm8iCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LnNwZWMuUlNBT3RoZXJQcmltZUluZm9bXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByaW1lRXhwb25lbnRQIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcmltZUV4cG9uZW50USIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJpbWVQIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcmltZVEiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFB1YmxpY0V4cG9uZW50IgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9InNlcmlhbFZlcnNpb25VSUQiCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjE4MDU4NTMzNTM0NjI4MDA4TCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJSU0FQcml2YXRlQ3J0S2V5IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuaW50ZXJmYWNlcy5SU0FQcml2YXRlS2V5Ij4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0Q3J0Q29lZmZpY2llbnQiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByaW1lRXhwb25lbnRQIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcmltZUV4cG9uZW50USIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJpbWVQIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcmltZVEiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFB1YmxpY0V4cG9uZW50IgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9InNlcmlhbFZlcnNpb25VSUQiCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTU2ODIyMTQyNTM1Mjc3MDAzNjhMIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlJTQVByaXZhdGVLZXkiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5Qcml2YXRlS2V5Ij4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuaW50ZXJmYWNlcy5SU0FLZXkiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRQcml2YXRlRXhwb25lbnQiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0ic2VyaWFsVmVyc2lvblVJRCIKKyB0eXBlPSJsb25nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MTg3MTQ0ODA0OTM2NTk1MDIyTCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJSU0FQdWJsaWNLZXkiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5QdWJsaWNLZXkiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5pbnRlcmZhY2VzLlJTQUtleSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImdldFB1YmxpY0V4cG9uZW50IgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9InNlcmlhbFZlcnNpb25VSUQiCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTg3Mjc0MzQwOTYyNDExMDExOTRMIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJqYXZhLnNlY3VyaXR5LnNwZWMiCis+Cis8aW50ZXJmYWNlIG5hbWU9IkFsZ29yaXRobVBhcmFtZXRlclNwZWMiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iRFNBUGFyYW1ldGVyU3BlYyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnNlY3VyaXR5LnNwZWMuQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnNlY3VyaXR5LmludGVyZmFjZXMuRFNBUGFyYW1zIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEU0FQYXJhbWV0ZXJTcGVjIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5EU0FQYXJhbWV0ZXJTcGVjIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icCIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InEiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJnIiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEciCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0USIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRTQVByaXZhdGVLZXlTcGVjIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuc3BlYy5LZXlTcGVjIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEU0FQcml2YXRlS2V5U3BlYyIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuRFNBUHJpdmF0ZUtleVNwZWMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icCIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InEiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJnIiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEciCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0USIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFgiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEU0FQdWJsaWNLZXlTcGVjIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuc3BlYy5LZXlTcGVjIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEU0FQdWJsaWNLZXlTcGVjIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5EU0FQdWJsaWNLZXlTcGVjIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InAiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxIiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZyIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRHIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFEiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRZIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkVDRmllbGQiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRGaWVsZFNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iRUNGaWVsZEYybSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnNlY3VyaXR5LnNwZWMuRUNGaWVsZCI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iRUNGaWVsZEYybSIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuRUNGaWVsZEYybSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRUNGaWVsZEYybSIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuRUNGaWVsZEYybSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icnAiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFQ0ZpZWxkRjJtIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5FQ0ZpZWxkRjJtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJrcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRGaWVsZFNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNaWRUZXJtc09mUmVkdWN0aW9uUG9seW5vbWlhbCIKKyByZXR1cm49ImludFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlZHVjdGlvblBvbHlub21pYWwiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJFQ0ZpZWxkRnAiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5zcGVjLkVDRmllbGQiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkVDRmllbGRGcCIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuRUNGaWVsZEZwIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icCIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRGaWVsZFNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkVDR2VuUGFyYW1ldGVyU3BlYyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnNlY3VyaXR5LnNwZWMuQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iRUNHZW5QYXJhbWV0ZXJTcGVjIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5FQ0dlblBhcmFtZXRlclNwZWMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRUNQYXJhbWV0ZXJTcGVjIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuc3BlYy5BbGdvcml0aG1QYXJhbWV0ZXJTcGVjIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFQ1BhcmFtZXRlclNwZWMiCisgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLkVDUGFyYW1ldGVyU3BlYyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnZlIiB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuRWxsaXB0aWNDdXJ2ZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ2VuZXJhdG9yIiB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuRUNQb2ludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JkZXIiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2ZhY3RvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q29mYWN0b3IiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3VydmUiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LnNwZWMuRWxsaXB0aWNDdXJ2ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRHZW5lcmF0b3IiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LnNwZWMuRUNQb2ludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPcmRlciIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkVDUG9pbnQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkVDUG9pbnQiCisgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLkVDUG9pbnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhZmZpbmVYIiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWZmaW5lWSIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRBZmZpbmVYIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWZmaW5lWSIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iUE9JTlRfSU5GSU5JVFkiCisgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLkVDUG9pbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkVDUHJpdmF0ZUtleVNwZWMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5zcGVjLktleVNwZWMiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkVDUHJpdmF0ZUtleVNwZWMiCisgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLkVDUHJpdmF0ZUtleVNwZWMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuRUNQYXJhbWV0ZXJTcGVjIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0UGFyYW1zIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5zcGVjLkVDUGFyYW1ldGVyU3BlYyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRUNQdWJsaWNLZXlTcGVjIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuc3BlYy5LZXlTcGVjIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFQ1B1YmxpY0tleVNwZWMiCisgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLkVDUHVibGljS2V5U3BlYyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InciIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5FQ1BvaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5FQ1BhcmFtZXRlclNwZWMiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJhbXMiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LnNwZWMuRUNQYXJhbWV0ZXJTcGVjIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFciCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LnNwZWMuRUNQb2ludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJFbGxpcHRpY0N1cnZlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFbGxpcHRpY0N1cnZlIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5FbGxpcHRpY0N1cnZlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmllbGQiIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5FQ0ZpZWxkIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhIiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlZWQiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRWxsaXB0aWNDdXJ2ZSIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuRWxsaXB0aWNDdXJ2ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpZWxkIiB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuRUNGaWVsZCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYSIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0QSIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEIiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGaWVsZCIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuc3BlYy5FQ0ZpZWxkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlZWQiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRW5jb2RlZEtleVNwZWMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnNlY3VyaXR5LnNwZWMuS2V5U3BlYyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iRW5jb2RlZEtleVNwZWMiCisgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLkVuY29kZWRLZXlTcGVjIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5jb2RlZEtleSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0RW5jb2RlZCIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGb3JtYXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW52YWxpZEtleVNwZWNFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5HZW5lcmFsU2VjdXJpdHlFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnZhbGlkS2V5U3BlY0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuSW52YWxpZEtleVNwZWNFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkludmFsaWRLZXlTcGVjRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5JbnZhbGlkS2V5U3BlY0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkludmFsaWRLZXlTcGVjRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5JbnZhbGlkS2V5U3BlY0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnZhbGlkS2V5U3BlY0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuSW52YWxpZEtleVNwZWNFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkludmFsaWRQYXJhbWV0ZXJTcGVjRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEuc2VjdXJpdHkuR2VuZXJhbFNlY3VyaXR5RXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW52YWxpZFBhcmFtZXRlclNwZWNFeGNlcHRpb24iCisgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLkludmFsaWRQYXJhbWV0ZXJTcGVjRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnZhbGlkUGFyYW1ldGVyU3BlY0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuSW52YWxpZFBhcmFtZXRlclNwZWNFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IktleVNwZWMiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iTUdGMVBhcmFtZXRlclNwZWMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5zcGVjLkFsZ29yaXRobVBhcmFtZXRlclNwZWMiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1HRjFQYXJhbWV0ZXJTcGVjIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5NR0YxUGFyYW1ldGVyU3BlYyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1kTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldERpZ2VzdEFsZ29yaXRobSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJTSEExIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5NR0YxUGFyYW1ldGVyU3BlYyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTSEEyNTYiCisgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLk1HRjFQYXJhbWV0ZXJTcGVjIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNIQTM4NCIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuTUdGMVBhcmFtZXRlclNwZWMiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0hBNTEyIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5NR0YxUGFyYW1ldGVyU3BlYyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUEtDUzhFbmNvZGVkS2V5U3BlYyIKKyBleHRlbmRzPSJqYXZhLnNlY3VyaXR5LnNwZWMuRW5jb2RlZEtleVNwZWMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQS0NTOEVuY29kZWRLZXlTcGVjIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5QS0NTOEVuY29kZWRLZXlTcGVjIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5jb2RlZEtleSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Rm9ybWF0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBTU1BhcmFtZXRlclNwZWMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5zcGVjLkFsZ29yaXRobVBhcmFtZXRlclNwZWMiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBTU1BhcmFtZXRlclNwZWMiCisgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLlBTU1BhcmFtZXRlclNwZWMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzYWx0TGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBTU1BhcmFtZXRlclNwZWMiCisgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLlBTU1BhcmFtZXRlclNwZWMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1nZk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1nZlNwZWMiIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5BbGdvcml0aG1QYXJhbWV0ZXJTcGVjIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzYWx0TGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRyYWlsZXJGaWVsZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0RGlnZXN0QWxnb3JpdGhtIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNR0ZBbGdvcml0aG0iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1HRlBhcmFtZXRlcnMiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LnNwZWMuQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTYWx0TGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRyYWlsZXJGaWVsZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkRFRkFVTFQiCisgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLlBTU1BhcmFtZXRlclNwZWMiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJTQUtleUdlblBhcmFtZXRlclNwZWMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5zcGVjLkFsZ29yaXRobVBhcmFtZXRlclNwZWMiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJTQUtleUdlblBhcmFtZXRlclNwZWMiCisgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLlJTQUtleUdlblBhcmFtZXRlclNwZWMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InB1YmxpY0V4cG9uZW50IiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEtleXNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHVibGljRXhwb25lbnQiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkYwIgorIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkY0IgorIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSU0FNdWx0aVByaW1lUHJpdmF0ZUNydEtleVNwZWMiCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5zcGVjLlJTQVByaXZhdGVLZXlTcGVjIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUlNBTXVsdGlQcmltZVByaXZhdGVDcnRLZXlTcGVjIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5SU0FNdWx0aVByaW1lUHJpdmF0ZUNydEtleVNwZWMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb2R1bHVzIiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHVibGljRXhwb25lbnQiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcml2YXRlRXhwb25lbnQiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcmltZVAiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcmltZVEiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcmltZUV4cG9uZW50UCIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByaW1lRXhwb25lbnRRIiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3J0Q29lZmZpY2llbnQiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdGhlclByaW1lSW5mbyIgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLlJTQU90aGVyUHJpbWVJbmZvW10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDcnRDb2VmZmljaWVudCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE90aGVyUHJpbWVJbmZvIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5zcGVjLlJTQU90aGVyUHJpbWVJbmZvW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJpbWVFeHBvbmVudFAiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcmltZUV4cG9uZW50USIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByaW1lUCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByaW1lUSIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFB1YmxpY0V4cG9uZW50IgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUlNBT3RoZXJQcmltZUluZm8iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJTQU90aGVyUHJpbWVJbmZvIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5SU0FPdGhlclByaW1lSW5mbyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByaW1lIiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJpbWVFeHBvbmVudCIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNydENvZWZmaWNpZW50IiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldENydENvZWZmaWNpZW50IgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeHBvbmVudCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJpbWUiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJTQVByaXZhdGVDcnRLZXlTcGVjIgorIGV4dGVuZHM9ImphdmEuc2VjdXJpdHkuc3BlYy5SU0FQcml2YXRlS2V5U3BlYyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJTQVByaXZhdGVDcnRLZXlTcGVjIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5SU0FQcml2YXRlQ3J0S2V5U3BlYyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZHVsdXMiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwdWJsaWNFeHBvbmVudCIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByaXZhdGVFeHBvbmVudCIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByaW1lUCIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByaW1lUSIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByaW1lRXhwb25lbnRQIiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJpbWVFeHBvbmVudFEiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjcnRDb2VmZmljaWVudCIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDcnRDb2VmZmljaWVudCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByaW1lRXhwb25lbnRQIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJpbWVFeHBvbmVudFEiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcmltZVAiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcmltZVEiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQdWJsaWNFeHBvbmVudCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJTQVByaXZhdGVLZXlTcGVjIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuc3BlYy5LZXlTcGVjIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSU0FQcml2YXRlS2V5U3BlYyIKKyB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuUlNBUHJpdmF0ZUtleVNwZWMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb2R1bHVzIiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJpdmF0ZUV4cG9uZW50IiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldE1vZHVsdXMiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcml2YXRlRXhwb25lbnQiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSU0FQdWJsaWNLZXlTcGVjIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuc3BlYy5LZXlTcGVjIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSU0FQdWJsaWNLZXlTcGVjIgorIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5SU0FQdWJsaWNLZXlTcGVjIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kdWx1cyIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InB1YmxpY0V4cG9uZW50IiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldE1vZHVsdXMiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQdWJsaWNFeHBvbmVudCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ilg1MDlFbmNvZGVkS2V5U3BlYyIKKyBleHRlbmRzPSJqYXZhLnNlY3VyaXR5LnNwZWMuRW5jb2RlZEtleVNwZWMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJYNTA5RW5jb2RlZEtleVNwZWMiCisgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLlg1MDlFbmNvZGVkS2V5U3BlYyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVuY29kZWRLZXkiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEZvcm1hdCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImphdmEuc3FsIgorPgorPGludGVyZmFjZSBuYW1lPSJBcnJheSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldEFycmF5IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBcnJheSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFycmF5IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFwIiB0eXBlPSJqYXZhLnV0aWwuTWFwJmx0O2phdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5DbGFzcyZsdDs/Jmd0OyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFycmF5IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXAiIHR5cGU9ImphdmEudXRpbC5NYXAmbHQ7amF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLkNsYXNzJmx0Oz8mZ3Q7Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QmFzZVR5cGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QmFzZVR5cGVOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXN1bHRTZXQiCisgcmV0dXJuPSJqYXZhLnNxbC5SZXN1bHRTZXQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVzdWx0U2V0IgorIHJldHVybj0iamF2YS5zcWwuUmVzdWx0U2V0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXN1bHRTZXQiCisgcmV0dXJuPSJqYXZhLnNxbC5SZXN1bHRTZXQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1hcCIgdHlwZT0iamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXN1bHRTZXQiCisgcmV0dXJuPSJqYXZhLnNxbC5SZXN1bHRTZXQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFwIiB0eXBlPSJqYXZhLnV0aWwuTWFwJmx0O2phdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5DbGFzcyZsdDs/Jmd0OyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJCYXRjaFVwZGF0ZUV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXRjaFVwZGF0ZUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNxbC5CYXRjaFVwZGF0ZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJhdGNoVXBkYXRlRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc3FsLkJhdGNoVXBkYXRlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXBkYXRlQ291bnRzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmF0Y2hVcGRhdGVFeGNlcHRpb24iCisgdHlwZT0iamF2YS5zcWwuQmF0Y2hVcGRhdGVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWFzb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVwZGF0ZUNvdW50cyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJhdGNoVXBkYXRlRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc3FsLkJhdGNoVXBkYXRlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVhc29uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJTUUxTdGF0ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXBkYXRlQ291bnRzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmF0Y2hVcGRhdGVFeGNlcHRpb24iCisgdHlwZT0iamF2YS5zcWwuQmF0Y2hVcGRhdGVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWFzb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IlNRTFN0YXRlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2ZW5kb3JDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVwZGF0ZUNvdW50cyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRVcGRhdGVDb3VudHMiCisgcmV0dXJuPSJpbnRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQmxvYiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldEJpbmFyeVN0cmVhbSIKKyByZXR1cm49ImphdmEuaW8uSW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Qnl0ZXMiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGVuZ3RoIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwb3NpdGlvbiIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0dGVybiIgdHlwZT0iamF2YS5zcWwuQmxvYiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBvc2l0aW9uIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXR0ZXJuIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCaW5hcnlTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLk91dHB1dFN0cmVhbSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3MiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEJ5dGVzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvcyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlQnl0ZXMiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Qnl0ZXMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVCeXRlcyIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRydW5jYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iQ2FsbGFibGVTdGF0ZW1lbnQiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zcWwuUHJlcGFyZWRTdGF0ZW1lbnQiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRBcnJheSIKKyByZXR1cm49ImphdmEuc3FsLkFycmF5IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFycmF5IgorIHJldHVybj0iamF2YS5zcWwuQXJyYXkiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QmlnRGVjaW1hbCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJpZ0RlY2ltYWwiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnRGVjaW1hbCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNjYWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJpZ0RlY2ltYWwiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnRGVjaW1hbCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCbG9iIgorIHJldHVybj0iamF2YS5zcWwuQmxvYiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCbG9iIgorIHJldHVybj0iamF2YS5zcWwuQmxvYiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCb29sZWFuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCb29sZWFuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCeXRlIgorIHJldHVybj0iYnl0ZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCeXRlIgorIHJldHVybj0iYnl0ZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCeXRlcyIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCeXRlcyIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDbG9iIgorIHJldHVybj0iamF2YS5zcWwuQ2xvYiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDbG9iIgorIHJldHVybj0iamF2YS5zcWwuQ2xvYiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREYXRlIgorIHJldHVybj0iamF2YS5zcWwuRGF0ZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREYXRlIgorIHJldHVybj0iamF2YS5zcWwuRGF0ZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYWwiIHR5cGU9ImphdmEudXRpbC5DYWxlbmRhciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGF0ZSIKKyByZXR1cm49ImphdmEuc3FsLkRhdGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGF0ZSIKKyByZXR1cm49ImphdmEuc3FsLkRhdGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsIiB0eXBlPSJqYXZhLnV0aWwuQ2FsZW5kYXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERvdWJsZSIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREb3VibGUiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmxvYXQiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGbG9hdCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlck5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEludCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9uZyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9uZyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T2JqZWN0IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPYmplY3QiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1hcCIgdHlwZT0iamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPYmplY3QiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlck5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9iamVjdCIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFwIiB0eXBlPSJqYXZhLnV0aWwuTWFwJmx0O2phdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5DbGFzcyZsdDs/Jmd0OyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlZiIKKyByZXR1cm49ImphdmEuc3FsLlJlZiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZWYiCisgcmV0dXJuPSJqYXZhLnNxbC5SZWYiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2hvcnQiCisgcmV0dXJuPSJzaG9ydCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaG9ydCIKKyByZXR1cm49InNob3J0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlck5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaW1lIgorIHJldHVybj0iamF2YS5zcWwuVGltZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaW1lIgorIHJldHVybj0iamF2YS5zcWwuVGltZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYWwiIHR5cGU9ImphdmEudXRpbC5DYWxlbmRhciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGltZSIKKyByZXR1cm49ImphdmEuc3FsLlRpbWUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGltZSIKKyByZXR1cm49ImphdmEuc3FsLlRpbWUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsIiB0eXBlPSJqYXZhLnV0aWwuQ2FsZW5kYXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRpbWVzdGFtcCIKKyByZXR1cm49ImphdmEuc3FsLlRpbWVzdGFtcCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaW1lc3RhbXAiCisgcmV0dXJuPSJqYXZhLnNxbC5UaW1lc3RhbXAiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsIiB0eXBlPSJqYXZhLnV0aWwuQ2FsZW5kYXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRpbWVzdGFtcCIKKyByZXR1cm49ImphdmEuc3FsLlRpbWVzdGFtcCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaW1lc3RhbXAiCisgcmV0dXJuPSJqYXZhLnNxbC5UaW1lc3RhbXAiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsIiB0eXBlPSJqYXZhLnV0aWwuQ2FsZW5kYXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFVSTCIKKyByZXR1cm49ImphdmEubmV0LlVSTCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVUkwiCisgcmV0dXJuPSJqYXZhLm5ldC5VUkwiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVnaXN0ZXJPdXRQYXJhbWV0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNxbFR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVnaXN0ZXJPdXRQYXJhbWV0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNxbFR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NhbGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVnaXN0ZXJPdXRQYXJhbWV0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3FsVHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVnaXN0ZXJPdXRQYXJhbWV0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlck5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNxbFR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVnaXN0ZXJPdXRQYXJhbWV0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlck5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNxbFR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NhbGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVnaXN0ZXJPdXRQYXJhbWV0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlck5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNxbFR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFzY2lpU3RyZWFtIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVJbnB1dFN0cmVhbSIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEJpZ0RlY2ltYWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlck5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUJpZ0RlY2ltYWwiIHR5cGU9ImphdmEubWF0aC5CaWdEZWNpbWFsIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCaW5hcnlTdHJlYW0iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlck5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUlucHV0U3RyZWFtIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Qm9vbGVhbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlQm9vbGVhbiIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Qnl0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlQnl0ZSIgdHlwZT0iYnl0ZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Qnl0ZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlck5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUJ5dGVzIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENoYXJhY3RlclN0cmVhbSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVhZGVyIiB0eXBlPSJqYXZhLmlvLlJlYWRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlck5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZURhdGUiIHR5cGU9ImphdmEuc3FsLkRhdGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlck5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZURhdGUiIHR5cGU9ImphdmEuc3FsLkRhdGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbCIgdHlwZT0iamF2YS51dGlsLkNhbGVuZGFyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREb3VibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlck5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZURvdWJsZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGbG9hdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlRmxvYXQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlck5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUludCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMb25nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVMb25nIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXROdWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzcWxUeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE51bGwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlck5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNxbFR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9iamVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlT2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPYmplY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlck5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZU9iamVjdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0U3FsVHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPYmplY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlck5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZU9iamVjdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0U3FsVHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY2FsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTaG9ydCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlU2hvcnQiIHR5cGU9InNob3J0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTdHJpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlck5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGltZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlVGltZSIgdHlwZT0iamF2YS5zcWwuVGltZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGltZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlVGltZSIgdHlwZT0iamF2YS5zcWwuVGltZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsIiB0eXBlPSJqYXZhLnV0aWwuQ2FsZW5kYXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRpbWVzdGFtcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlVGltZXN0YW1wIiB0eXBlPSJqYXZhLnNxbC5UaW1lc3RhbXAiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRpbWVzdGFtcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlVGltZXN0YW1wIiB0eXBlPSJqYXZhLnNxbC5UaW1lc3RhbXAiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbCIgdHlwZT0iamF2YS51dGlsLkNhbGVuZGFyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRVUkwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlck5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVVSTCIgdHlwZT0iamF2YS5uZXQuVVJMIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3YXNOdWxsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkNsb2IiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRBc2NpaVN0cmVhbSIKKyByZXR1cm49ImphdmEuaW8uSW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hhcmFjdGVyU3RyZWFtIgorIHJldHVybj0iamF2YS5pby5SZWFkZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3ViU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3MiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsZW5ndGgiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBvc2l0aW9uIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWFyY2hzdHIiIHR5cGU9ImphdmEuc3FsLkNsb2IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwb3NpdGlvbiIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VhcmNoc3RyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QXNjaWlTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLk91dHB1dFN0cmVhbSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3MiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENoYXJhY3RlclN0cmVhbSIKKyByZXR1cm49ImphdmEuaW8uV3JpdGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvcyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RyaW5nIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvcyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTdHJpbmciCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdHIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idHJ1bmNhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJDb25uZWN0aW9uIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY2xlYXJXYXJuaW5ncyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbW1pdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlU3RhdGVtZW50IgorIHJldHVybj0iamF2YS5zcWwuU3RhdGVtZW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVN0YXRlbWVudCIKKyByZXR1cm49ImphdmEuc3FsLlN0YXRlbWVudCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRTZXRUeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdFNldENvbmN1cnJlbmN5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVN0YXRlbWVudCIKKyByZXR1cm49ImphdmEuc3FsLlN0YXRlbWVudCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRTZXRUeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdFNldENvbmN1cnJlbmN5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdFNldEhvbGRhYmlsaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF1dG9Db21taXQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENhdGFsb2ciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhvbGRhYmlsaXR5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1ldGFEYXRhIgorIHJldHVybj0iamF2YS5zcWwuRGF0YWJhc2VNZXRhRGF0YSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUcmFuc2FjdGlvbklzb2xhdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlTWFwIgorIHJldHVybj0iamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdhcm5pbmdzIgorIHJldHVybj0iamF2YS5zcWwuU1FMV2FybmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0Nsb3NlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNSZWFkT25seSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmF0aXZlU1FMIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcWwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByZXBhcmVDYWxsIgorIHJldHVybj0iamF2YS5zcWwuQ2FsbGFibGVTdGF0ZW1lbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3FsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmVwYXJlQ2FsbCIKKyByZXR1cm49ImphdmEuc3FsLkNhbGxhYmxlU3RhdGVtZW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNxbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0U2V0VHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRTZXRDb25jdXJyZW5jeSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmVwYXJlQ2FsbCIKKyByZXR1cm49ImphdmEuc3FsLkNhbGxhYmxlU3RhdGVtZW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNxbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0U2V0VHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRTZXRDb25jdXJyZW5jeSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRTZXRIb2xkYWJpbGl0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmVwYXJlU3RhdGVtZW50IgorIHJldHVybj0iamF2YS5zcWwuUHJlcGFyZWRTdGF0ZW1lbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3FsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmVwYXJlU3RhdGVtZW50IgorIHJldHVybj0iamF2YS5zcWwuUHJlcGFyZWRTdGF0ZW1lbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3FsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdXRvR2VuZXJhdGVkS2V5cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmVwYXJlU3RhdGVtZW50IgorIHJldHVybj0iamF2YS5zcWwuUHJlcGFyZWRTdGF0ZW1lbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3FsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleGVzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJlcGFyZVN0YXRlbWVudCIKKyByZXR1cm49ImphdmEuc3FsLlByZXBhcmVkU3RhdGVtZW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNxbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0U2V0VHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRTZXRDb25jdXJyZW5jeSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmVwYXJlU3RhdGVtZW50IgorIHJldHVybj0iamF2YS5zcWwuUHJlcGFyZWRTdGF0ZW1lbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3FsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHRTZXRUeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdFNldENvbmN1cnJlbmN5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdFNldEhvbGRhYmlsaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByZXBhcmVTdGF0ZW1lbnQiCisgcmV0dXJuPSJqYXZhLnNxbC5QcmVwYXJlZFN0YXRlbWVudCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcWwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWVzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbGVhc2VTYXZlcG9pbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNhdmVwb2ludCIgdHlwZT0iamF2YS5zcWwuU2F2ZXBvaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyb2xsYmFjayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icm9sbGJhY2siCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNhdmVwb2ludCIgdHlwZT0iamF2YS5zcWwuU2F2ZXBvaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBdXRvQ29tbWl0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhdXRvQ29tbWl0IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDYXRhbG9nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXRhbG9nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRIb2xkYWJpbGl0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9sZGFiaWxpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UmVhZE9ubHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlYWRPbmx5IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTYXZlcG9pbnQiCisgcmV0dXJuPSJqYXZhLnNxbC5TYXZlcG9pbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2F2ZXBvaW50IgorIHJldHVybj0iamF2YS5zcWwuU2F2ZXBvaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRyYW5zYWN0aW9uSXNvbGF0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZXZlbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUeXBlTWFwIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXAiIHR5cGU9ImphdmEudXRpbC5NYXAmbHQ7amF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLkNsYXNzJmx0Oz8mZ3Q7Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJUUkFOU0FDVElPTl9OT05FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUUkFOU0FDVElPTl9SRUFEX0NPTU1JVFRFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFJBTlNBQ1RJT05fUkVBRF9VTkNPTU1JVFRFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFJBTlNBQ1RJT05fUkVQRUFUQUJMRV9SRUFEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUUkFOU0FDVElPTl9TRVJJQUxJWkFCTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iRGF0YVRydW5jYXRpb24iCisgZXh0ZW5kcz0iamF2YS5zcWwuU1FMV2FybmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRhdGFUcnVuY2F0aW9uIgorIHR5cGU9ImphdmEuc3FsLkRhdGFUcnVuY2F0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVyIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWFkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhU2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0cmFuc2ZlclNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldERhdGFTaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluZGV4IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtZXRlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVhZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHJhbnNmZXJTaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJEYXRhYmFzZU1ldGFEYXRhIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYWxsUHJvY2VkdXJlc0FyZUNhbGxhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhbGxUYWJsZXNBcmVTZWxlY3RhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkYXRhRGVmaW5pdGlvbkNhdXNlc1RyYW5zYWN0aW9uQ29tbWl0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkYXRhRGVmaW5pdGlvbklnbm9yZWRJblRyYW5zYWN0aW9ucyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVsZXRlc0FyZURldGVjdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRvZXNNYXhSb3dTaXplSW5jbHVkZUJsb2JzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdHRyaWJ1dGVzIgorIHJldHVybj0iamF2YS5zcWwuUmVzdWx0U2V0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdGFsb2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNjaGVtYVBhdHRlcm4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGVOYW1lUGF0dGVybiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cmlidXRlTmFtZVBhdHRlcm4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJlc3RSb3dJZGVudGlmaWVyIgorIHJldHVybj0iamF2YS5zcWwuUmVzdWx0U2V0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdGFsb2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNjaGVtYSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGFibGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNjb3BlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im51bGxhYmxlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDYXRhbG9nU2VwYXJhdG9yIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDYXRhbG9nVGVybSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2F0YWxvZ3MiCisgcmV0dXJuPSJqYXZhLnNxbC5SZXN1bHRTZXQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sdW1uUHJpdmlsZWdlcyIKKyByZXR1cm49ImphdmEuc3FsLlJlc3VsdFNldCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXRhbG9nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY2hlbWEiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRhYmxlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OYW1lUGF0dGVybiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sdW1ucyIKKyByZXR1cm49ImphdmEuc3FsLlJlc3VsdFNldCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXRhbG9nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY2hlbWFQYXR0ZXJuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0YWJsZU5hbWVQYXR0ZXJuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OYW1lUGF0dGVybiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29ubmVjdGlvbiIKKyByZXR1cm49ImphdmEuc3FsLkNvbm5lY3Rpb24iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3Jvc3NSZWZlcmVuY2UiCisgcmV0dXJuPSJqYXZhLnNxbC5SZXN1bHRTZXQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJpbWFyeUNhdGFsb2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByaW1hcnlTY2hlbWEiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByaW1hcnlUYWJsZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9yZWlnbkNhdGFsb2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcmVpZ25TY2hlbWEiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcmVpZ25UYWJsZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGF0YWJhc2VNYWpvclZlcnNpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGF0YWJhc2VNaW5vclZlcnNpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGF0YWJhc2VQcm9kdWN0TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGF0YWJhc2VQcm9kdWN0VmVyc2lvbiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVmYXVsdFRyYW5zYWN0aW9uSXNvbGF0aW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERyaXZlck1ham9yVmVyc2lvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERyaXZlck1pbm9yVmVyc2lvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERyaXZlck5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERyaXZlclZlcnNpb24iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEV4cG9ydGVkS2V5cyIKKyByZXR1cm49ImphdmEuc3FsLlJlc3VsdFNldCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXRhbG9nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY2hlbWEiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRhYmxlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeHRyYU5hbWVDaGFyYWN0ZXJzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJZGVudGlmaWVyUXVvdGVTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEltcG9ydGVkS2V5cyIKKyByZXR1cm49ImphdmEuc3FsLlJlc3VsdFNldCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXRhbG9nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY2hlbWEiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRhYmxlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbmRleEluZm8iCisgcmV0dXJuPSJqYXZhLnNxbC5SZXN1bHRTZXQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F0YWxvZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NoZW1hIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0YWJsZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idW5pcXVlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcHByb3hpbWF0ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SkRCQ01ham9yVmVyc2lvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRKREJDTWlub3JWZXJzaW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1heEJpbmFyeUxpdGVyYWxMZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF4Q2F0YWxvZ05hbWVMZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF4Q2hhckxpdGVyYWxMZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF4Q29sdW1uTmFtZUxlbmd0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYXhDb2x1bW5zSW5Hcm91cEJ5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1heENvbHVtbnNJbkluZGV4IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1heENvbHVtbnNJbk9yZGVyQnkiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF4Q29sdW1uc0luU2VsZWN0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1heENvbHVtbnNJblRhYmxlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1heENvbm5lY3Rpb25zIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1heEN1cnNvck5hbWVMZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF4SW5kZXhMZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF4UHJvY2VkdXJlTmFtZUxlbmd0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYXhSb3dTaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1heFNjaGVtYU5hbWVMZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF4U3RhdGVtZW50TGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1heFN0YXRlbWVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF4VGFibGVOYW1lTGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1heFRhYmxlc0luU2VsZWN0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1heFVzZXJOYW1lTGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE51bWVyaWNGdW5jdGlvbnMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByaW1hcnlLZXlzIgorIHJldHVybj0iamF2YS5zcWwuUmVzdWx0U2V0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdGFsb2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNjaGVtYSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGFibGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb2NlZHVyZUNvbHVtbnMiCisgcmV0dXJuPSJqYXZhLnNxbC5SZXN1bHRTZXQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F0YWxvZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NoZW1hUGF0dGVybiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvY2VkdXJlTmFtZVBhdHRlcm4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWVQYXR0ZXJuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm9jZWR1cmVUZXJtIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm9jZWR1cmVzIgorIHJldHVybj0iamF2YS5zcWwuUmVzdWx0U2V0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdGFsb2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNjaGVtYVBhdHRlcm4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb2NlZHVyZU5hbWVQYXR0ZXJuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXN1bHRTZXRIb2xkYWJpbGl0eSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTUUxLZXl3b3JkcyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U1FMU3RhdGVUeXBlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNjaGVtYVRlcm0iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNjaGVtYXMiCisgcmV0dXJuPSJqYXZhLnNxbC5SZXN1bHRTZXQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2VhcmNoU3RyaW5nRXNjYXBlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdHJpbmdGdW5jdGlvbnMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1cGVyVGFibGVzIgorIHJldHVybj0iamF2YS5zcWwuUmVzdWx0U2V0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdGFsb2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNjaGVtYVBhdHRlcm4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRhYmxlTmFtZVBhdHRlcm4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1cGVyVHlwZXMiCisgcmV0dXJuPSJqYXZhLnNxbC5SZXN1bHRTZXQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F0YWxvZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NoZW1hUGF0dGVybiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZU5hbWVQYXR0ZXJuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTeXN0ZW1GdW5jdGlvbnMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRhYmxlUHJpdmlsZWdlcyIKKyByZXR1cm49ImphdmEuc3FsLlJlc3VsdFNldCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXRhbG9nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY2hlbWFQYXR0ZXJuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0YWJsZU5hbWVQYXR0ZXJuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUYWJsZVR5cGVzIgorIHJldHVybj0iamF2YS5zcWwuUmVzdWx0U2V0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRhYmxlcyIKKyByZXR1cm49ImphdmEuc3FsLlJlc3VsdFNldCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXRhbG9nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY2hlbWFQYXR0ZXJuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0YWJsZU5hbWVQYXR0ZXJuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaW1lRGF0ZUZ1bmN0aW9ucyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHlwZUluZm8iCisgcmV0dXJuPSJqYXZhLnNxbC5SZXN1bHRTZXQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VURUcyIKKyByZXR1cm49ImphdmEuc3FsLlJlc3VsdFNldCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXRhbG9nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY2hlbWFQYXR0ZXJuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlTmFtZVBhdHRlcm4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGVzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VVJMIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVc2VyTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmVyc2lvbkNvbHVtbnMiCisgcmV0dXJuPSJqYXZhLnNxbC5SZXN1bHRTZXQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F0YWxvZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NoZW1hIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0YWJsZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5zZXJ0c0FyZURldGVjdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ2F0YWxvZ0F0U3RhcnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUmVhZE9ubHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvY2F0b3JzVXBkYXRlQ29weSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibnVsbFBsdXNOb25OdWxsSXNOdWxsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJudWxsc0FyZVNvcnRlZEF0RW5kIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJudWxsc0FyZVNvcnRlZEF0U3RhcnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im51bGxzQXJlU29ydGVkSGlnaCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibnVsbHNBcmVTb3J0ZWRMb3ciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im90aGVyc0RlbGV0ZXNBcmVWaXNpYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im90aGVyc0luc2VydHNBcmVWaXNpYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im90aGVyc1VwZGF0ZXNBcmVWaXNpYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im93bkRlbGV0ZXNBcmVWaXNpYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im93bkluc2VydHNBcmVWaXNpYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im93blVwZGF0ZXNBcmVWaXNpYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0b3Jlc0xvd2VyQ2FzZUlkZW50aWZpZXJzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdG9yZXNMb3dlckNhc2VRdW90ZWRJZGVudGlmaWVycyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RvcmVzTWl4ZWRDYXNlSWRlbnRpZmllcnMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0b3Jlc01peGVkQ2FzZVF1b3RlZElkZW50aWZpZXJzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdG9yZXNVcHBlckNhc2VJZGVudGlmaWVycyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RvcmVzVXBwZXJDYXNlUXVvdGVkSWRlbnRpZmllcnMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzQU5TSTkyRW50cnlMZXZlbFNRTCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNBTlNJOTJGdWxsU1FMIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXBwb3J0c0FOU0k5MkludGVybWVkaWF0ZVNRTCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNBbHRlclRhYmxlV2l0aEFkZENvbHVtbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNBbHRlclRhYmxlV2l0aERyb3BDb2x1bW4iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzQmF0Y2hVcGRhdGVzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXBwb3J0c0NhdGFsb2dzSW5EYXRhTWFuaXB1bGF0aW9uIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXBwb3J0c0NhdGFsb2dzSW5JbmRleERlZmluaXRpb25zIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXBwb3J0c0NhdGFsb2dzSW5Qcml2aWxlZ2VEZWZpbml0aW9ucyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNDYXRhbG9nc0luUHJvY2VkdXJlQ2FsbHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzQ2F0YWxvZ3NJblRhYmxlRGVmaW5pdGlvbnMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzQ29sdW1uQWxpYXNpbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzQ29udmVydCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNDb252ZXJ0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmcm9tVHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b1R5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNDb3JlU1FMR3JhbW1hciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNDb3JyZWxhdGVkU3VicXVlcmllcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNEYXRhRGVmaW5pdGlvbkFuZERhdGFNYW5pcHVsYXRpb25UcmFuc2FjdGlvbnMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzRGF0YU1hbmlwdWxhdGlvblRyYW5zYWN0aW9uc09ubHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzRGlmZmVyZW50VGFibGVDb3JyZWxhdGlvbk5hbWVzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXBwb3J0c0V4cHJlc3Npb25zSW5PcmRlckJ5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXBwb3J0c0V4dGVuZGVkU1FMR3JhbW1hciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNGdWxsT3V0ZXJKb2lucyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNHZXRHZW5lcmF0ZWRLZXlzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXBwb3J0c0dyb3VwQnkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzR3JvdXBCeUJleW9uZFNlbGVjdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNHcm91cEJ5VW5yZWxhdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXBwb3J0c0ludGVncml0eUVuaGFuY2VtZW50RmFjaWxpdHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzTGlrZUVzY2FwZUNsYXVzZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNMaW1pdGVkT3V0ZXJKb2lucyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNNaW5pbXVtU1FMR3JhbW1hciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNNaXhlZENhc2VJZGVudGlmaWVycyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNNaXhlZENhc2VRdW90ZWRJZGVudGlmaWVycyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNNdWx0aXBsZU9wZW5SZXN1bHRzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXBwb3J0c011bHRpcGxlUmVzdWx0U2V0cyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNNdWx0aXBsZVRyYW5zYWN0aW9ucyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNOYW1lZFBhcmFtZXRlcnMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzTm9uTnVsbGFibGVDb2x1bW5zIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXBwb3J0c09wZW5DdXJzb3JzQWNyb3NzQ29tbWl0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXBwb3J0c09wZW5DdXJzb3JzQWNyb3NzUm9sbGJhY2siCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzT3BlblN0YXRlbWVudHNBY3Jvc3NDb21taXQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzT3BlblN0YXRlbWVudHNBY3Jvc3NSb2xsYmFjayIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNPcmRlckJ5VW5yZWxhdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXBwb3J0c091dGVySm9pbnMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzUG9zaXRpb25lZERlbGV0ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNQb3NpdGlvbmVkVXBkYXRlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXBwb3J0c1Jlc3VsdFNldENvbmN1cnJlbmN5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbmN1cnJlbmN5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzUmVzdWx0U2V0SG9sZGFiaWxpdHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhvbGRhYmlsaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzUmVzdWx0U2V0VHlwZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXBwb3J0c1NhdmVwb2ludHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzU2NoZW1hc0luRGF0YU1hbmlwdWxhdGlvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNTY2hlbWFzSW5JbmRleERlZmluaXRpb25zIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXBwb3J0c1NjaGVtYXNJblByaXZpbGVnZURlZmluaXRpb25zIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXBwb3J0c1NjaGVtYXNJblByb2NlZHVyZUNhbGxzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXBwb3J0c1NjaGVtYXNJblRhYmxlRGVmaW5pdGlvbnMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzU2VsZWN0Rm9yVXBkYXRlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXBwb3J0c1N0YXRlbWVudFBvb2xpbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzU3RvcmVkUHJvY2VkdXJlcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNTdWJxdWVyaWVzSW5Db21wYXJpc29ucyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNTdWJxdWVyaWVzSW5FeGlzdHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cHBvcnRzU3VicXVlcmllc0luSW5zIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXBwb3J0c1N1YnF1ZXJpZXNJblF1YW50aWZpZWRzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXBwb3J0c1RhYmxlQ29ycmVsYXRpb25OYW1lcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNUcmFuc2FjdGlvbklzb2xhdGlvbkxldmVsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZXZlbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXBwb3J0c1RyYW5zYWN0aW9ucyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNVbmlvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VwcG9ydHNVbmlvbkFsbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlc0FyZURldGVjdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVzZXNMb2NhbEZpbGVQZXJUYWJsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXNlc0xvY2FsRmlsZXMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iYXR0cmlidXRlTm9OdWxscyIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhdHRyaWJ1dGVOdWxsYWJsZSIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhdHRyaWJ1dGVOdWxsYWJsZVVua25vd24iCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYmVzdFJvd05vdFBzZXVkbyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYmVzdFJvd1BzZXVkbyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYmVzdFJvd1Nlc3Npb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJlc3RSb3dUZW1wb3JhcnkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImJlc3RSb3dUcmFuc2FjdGlvbiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iYmVzdFJvd1Vua25vd24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNvbHVtbk5vTnVsbHMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNvbHVtbk51bGxhYmxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjb2x1bW5OdWxsYWJsZVVua25vd24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImltcG9ydGVkS2V5Q2FzY2FkZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW1wb3J0ZWRLZXlJbml0aWFsbHlEZWZlcnJlZCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW1wb3J0ZWRLZXlJbml0aWFsbHlJbW1lZGlhdGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImltcG9ydGVkS2V5Tm9BY3Rpb24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImltcG9ydGVkS2V5Tm90RGVmZXJyYWJsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW1wb3J0ZWRLZXlSZXN0cmljdCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW1wb3J0ZWRLZXlTZXREZWZhdWx0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpbXBvcnRlZEtleVNldE51bGwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByb2NlZHVyZUNvbHVtbkluIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwcm9jZWR1cmVDb2x1bW5Jbk91dCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJvY2VkdXJlQ29sdW1uT3V0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwcm9jZWR1cmVDb2x1bW5SZXN1bHQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByb2NlZHVyZUNvbHVtblJldHVybiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJvY2VkdXJlQ29sdW1uVW5rbm93biIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJvY2VkdXJlTm9OdWxscyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJvY2VkdXJlTm9SZXN1bHQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByb2NlZHVyZU51bGxhYmxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwcm9jZWR1cmVOdWxsYWJsZVVua25vd24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByb2NlZHVyZVJlc3VsdFVua25vd24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByb2NlZHVyZVJldHVybnNSZXN1bHQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNxbFN0YXRlU1FMOTkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNxbFN0YXRlWE9wZW4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRhYmxlSW5kZXhDbHVzdGVyZWQiCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGFibGVJbmRleEhhc2hlZCIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0YWJsZUluZGV4T3RoZXIiCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGFibGVJbmRleFN0YXRpc3RpYyIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0eXBlTm9OdWxscyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idHlwZU51bGxhYmxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0eXBlTnVsbGFibGVVbmtub3duIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0eXBlUHJlZEJhc2ljIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ0eXBlUHJlZENoYXIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InR5cGVQcmVkTm9uZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idHlwZVNlYXJjaGFibGUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InZlcnNpb25Db2x1bW5Ob3RQc2V1ZG8iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InZlcnNpb25Db2x1bW5Qc2V1ZG8iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InZlcnNpb25Db2x1bW5Vbmtub3duIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkRhdGUiCisgZXh0ZW5kcz0iamF2YS51dGlsLkRhdGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEYXRlIgorIHR5cGU9ImphdmEuc3FsLkRhdGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVllYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlTW9udGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlRGF5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRhdGUiCisgdHlwZT0iamF2YS5zcWwuRGF0ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZURhdGUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iamF2YS5zcWwuRGF0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRlU3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJEcml2ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJhY2NlcHRzVVJMIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbm5lY3QiCisgcmV0dXJuPSJqYXZhLnNxbC5Db25uZWN0aW9uIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5mbyIgdHlwZT0iamF2YS51dGlsLlByb3BlcnRpZXMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1ham9yVmVyc2lvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1pbm9yVmVyc2lvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb3BlcnR5SW5mbyIKKyByZXR1cm49ImphdmEuc3FsLkRyaXZlclByb3BlcnR5SW5mb1tdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVybCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5mbyIgdHlwZT0iamF2YS51dGlsLlByb3BlcnRpZXMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImpkYmNDb21wbGlhbnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkRyaXZlck1hbmFnZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJkZXJlZ2lzdGVyRHJpdmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkcml2ZXIiIHR5cGU9ImphdmEuc3FsLkRyaXZlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29ubmVjdGlvbiIKKyByZXR1cm49ImphdmEuc3FsLkNvbm5lY3Rpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb25uZWN0aW9uIgorIHJldHVybj0iamF2YS5zcWwuQ29ubmVjdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZm8iIHR5cGU9ImphdmEudXRpbC5Qcm9wZXJ0aWVzIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb25uZWN0aW9uIgorIHJldHVybj0iamF2YS5zcWwuQ29ubmVjdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVzZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhc3N3b3JkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREcml2ZXIiCisgcmV0dXJuPSJqYXZhLnNxbC5Ecml2ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREcml2ZXJzIgorIHJldHVybj0iamF2YS51dGlsLkVudW1lcmF0aW9uJmx0O2phdmEuc3FsLkRyaXZlciZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2dTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLlByaW50U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2dXcml0ZXIiCisgcmV0dXJuPSJqYXZhLmlvLlByaW50V3JpdGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9naW5UaW1lb3V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJpbnRsbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3RlckRyaXZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHJpdmVyIiB0eXBlPSJqYXZhLnNxbC5Ecml2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldExvZ1N0cmVhbSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImphdmEuaW8uUHJpbnRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TG9nV3JpdGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImphdmEuaW8uUHJpbnRXcml0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TG9naW5UaW1lb3V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWNvbmRzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRHJpdmVyUHJvcGVydHlJbmZvIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEcml2ZXJQcm9wZXJ0eUluZm8iCisgdHlwZT0iamF2YS5zcWwuRHJpdmVyUHJvcGVydHlJbmZvIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9ImNob2ljZXMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZGVzY3JpcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im5hbWUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InJlcXVpcmVkIgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ2YWx1ZSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJQYXJhbWV0ZXJNZXRhRGF0YSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtZXRlckNsYXNzTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJhbWV0ZXJDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJhbWV0ZXJNb2RlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFyYW1ldGVyVHlwZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbUluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtZXRlclR5cGVOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbUluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByZWNpc2lvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbUluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNjYWxlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNOdWxsYWJsZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbUluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU2lnbmVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbUluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0icGFyYW1ldGVyTW9kZUluIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwYXJhbWV0ZXJNb2RlSW5PdXQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InBhcmFtZXRlck1vZGVPdXQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InBhcmFtZXRlck1vZGVVbmtub3duIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwYXJhbWV0ZXJOb051bGxzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwYXJhbWV0ZXJOdWxsYWJsZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icGFyYW1ldGVyTnVsbGFibGVVbmtub3duIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJQcmVwYXJlZFN0YXRlbWVudCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnNxbC5TdGF0ZW1lbnQiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJhZGRCYXRjaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJQYXJhbWV0ZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJleGVjdXRlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJleGVjdXRlUXVlcnkiCisgcmV0dXJuPSJqYXZhLnNxbC5SZXN1bHRTZXQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhlY3V0ZVVwZGF0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNZXRhRGF0YSIKKyByZXR1cm49ImphdmEuc3FsLlJlc3VsdFNldE1ldGFEYXRhIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtZXRlck1ldGFEYXRhIgorIHJldHVybj0iamF2YS5zcWwuUGFyYW1ldGVyTWV0YURhdGEiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QXJyYXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUFycmF5IiB0eXBlPSJqYXZhLnNxbC5BcnJheSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QXNjaWlTdHJlYW0iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUlucHV0U3RyZWFtIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QmlnRGVjaW1hbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlQmlnRGVjaW1hbCIgdHlwZT0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEJpbmFyeVN0cmVhbSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlSW5wdXRTdHJlYW0iIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCbG9iIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVCbG9iIiB0eXBlPSJqYXZhLnNxbC5CbG9iIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCb29sZWFuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVCb29sZWFuIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCeXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVCeXRlIiB0eXBlPSJieXRlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCeXRlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlQnl0ZXMiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2hhcmFjdGVyU3RyZWFtIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWFkZXIiIHR5cGU9ImphdmEuaW8uUmVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2xvYiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlQ2xvYiIgdHlwZT0iamF2YS5zcWwuQ2xvYiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlRGF0ZSIgdHlwZT0iamF2YS5zcWwuRGF0ZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlRGF0ZSIgdHlwZT0iamF2YS5zcWwuRGF0ZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsIiB0eXBlPSJqYXZhLnV0aWwuQ2FsZW5kYXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERvdWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlRG91YmxlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZsb2F0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVGbG9hdCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEludCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlSW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldExvbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUxvbmciIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE51bGwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNxbFR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TnVsbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzcWxUeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGVOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPYmplY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZU9iamVjdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T2JqZWN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVPYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldFNxbFR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T2JqZWN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVPYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldFNxbFR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NhbGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UmVmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVSZWYiIHR5cGU9ImphdmEuc3FsLlJlZiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2hvcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVNob3J0IiB0eXBlPSJzaG9ydCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RyaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVTdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRpbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVRpbWUiIHR5cGU9ImphdmEuc3FsLlRpbWUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRpbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVRpbWUiIHR5cGU9ImphdmEuc3FsLlRpbWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbCIgdHlwZT0iamF2YS51dGlsLkNhbGVuZGFyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUaW1lc3RhbXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVRpbWVzdGFtcCIgdHlwZT0iamF2YS5zcWwuVGltZXN0YW1wIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUaW1lc3RhbXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVRpbWVzdGFtcCIgdHlwZT0iamF2YS5zcWwuVGltZXN0YW1wIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYWwiIHR5cGU9ImphdmEudXRpbC5DYWxlbmRhciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VVJMIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVVUkwiIHR5cGU9ImphdmEubmV0LlVSTCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VW5pY29kZVN0cmVhbSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVJbnB1dFN0cmVhbSIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iUmVmIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0QmFzZVR5cGVOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPYmplY3QiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9iamVjdCIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFwIiB0eXBlPSJqYXZhLnV0aWwuTWFwJmx0O2phdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5DbGFzcyZsdDs/Jmd0OyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9iamVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iUmVzdWx0U2V0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYWJzb2x1dGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvdyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZnRlckxhc3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImJlZm9yZUZpcnN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYW5jZWxSb3dVcGRhdGVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhcldhcm5pbmdzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVsZXRlUm93IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaW5kQ29sdW1uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpcnN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBcnJheSIKKyByZXR1cm49ImphdmEuc3FsLkFycmF5IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFycmF5IgorIHJldHVybj0iamF2YS5zcWwuQXJyYXkiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXNjaWlTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFzY2lpU3RyZWFtIgorIHJldHVybj0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCaWdEZWNpbWFsIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QmlnRGVjaW1hbCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NhbGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QmlnRGVjaW1hbCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJpZ0RlY2ltYWwiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnRGVjaW1hbCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNjYWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJpbmFyeVN0cmVhbSIKKyByZXR1cm49ImphdmEuaW8uSW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QmluYXJ5U3RyZWFtIgorIHJldHVybj0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCbG9iIgorIHJldHVybj0iamF2YS5zcWwuQmxvYiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCbG9iIgorIHJldHVybj0iamF2YS5zcWwuQmxvYiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCb29sZWFuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCb29sZWFuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCeXRlIgorIHJldHVybj0iYnl0ZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCeXRlIgorIHJldHVybj0iYnl0ZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCeXRlcyIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCeXRlcyIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDaGFyYWN0ZXJTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLlJlYWRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDaGFyYWN0ZXJTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLlJlYWRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDbG9iIgorIHJldHVybj0iamF2YS5zcWwuQ2xvYiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDbG9iIgorIHJldHVybj0iamF2YS5zcWwuQ2xvYiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb25jdXJyZW5jeSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDdXJzb3JOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREYXRlIgorIHJldHVybj0iamF2YS5zcWwuRGF0ZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREYXRlIgorIHJldHVybj0iamF2YS5zcWwuRGF0ZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYWwiIHR5cGU9ImphdmEudXRpbC5DYWxlbmRhciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGF0ZSIKKyByZXR1cm49ImphdmEuc3FsLkRhdGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGF0ZSIKKyByZXR1cm49ImphdmEuc3FsLkRhdGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsIiB0eXBlPSJqYXZhLnV0aWwuQ2FsZW5kYXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERvdWJsZSIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREb3VibGUiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmV0Y2hEaXJlY3Rpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmV0Y2hTaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZsb2F0IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmxvYXQiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvbmciCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvbmciCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1ldGFEYXRhIgorIHJldHVybj0iamF2YS5zcWwuUmVzdWx0U2V0TWV0YURhdGEiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T2JqZWN0IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPYmplY3QiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1hcCIgdHlwZT0iamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPYmplY3QiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9iamVjdCIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFwIiB0eXBlPSJqYXZhLnV0aWwuTWFwJmx0O2phdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5DbGFzcyZsdDs/Jmd0OyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlZiIKKyByZXR1cm49ImphdmEuc3FsLlJlZiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZWYiCisgcmV0dXJuPSJqYXZhLnNxbC5SZWYiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Um93IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNob3J0IgorIHJldHVybj0ic2hvcnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2hvcnQiCisgcmV0dXJuPSJzaG9ydCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdGF0ZW1lbnQiCisgcmV0dXJuPSJqYXZhLnNxbC5TdGF0ZW1lbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRpbWUiCisgcmV0dXJuPSJqYXZhLnNxbC5UaW1lIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRpbWUiCisgcmV0dXJuPSJqYXZhLnNxbC5UaW1lIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbCIgdHlwZT0iamF2YS51dGlsLkNhbGVuZGFyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaW1lIgorIHJldHVybj0iamF2YS5zcWwuVGltZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaW1lIgorIHJldHVybj0iamF2YS5zcWwuVGltZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYWwiIHR5cGU9ImphdmEudXRpbC5DYWxlbmRhciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGltZXN0YW1wIgorIHJldHVybj0iamF2YS5zcWwuVGltZXN0YW1wIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRpbWVzdGFtcCIKKyByZXR1cm49ImphdmEuc3FsLlRpbWVzdGFtcCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYWwiIHR5cGU9ImphdmEudXRpbC5DYWxlbmRhciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGltZXN0YW1wIgorIHJldHVybj0iamF2YS5zcWwuVGltZXN0YW1wIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRpbWVzdGFtcCIKKyByZXR1cm49ImphdmEuc3FsLlRpbWVzdGFtcCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYWwiIHR5cGU9ImphdmEudXRpbC5DYWxlbmRhciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHlwZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVUkwiCisgcmV0dXJuPSJqYXZhLm5ldC5VUkwiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VVJMIgorIHJldHVybj0iamF2YS5uZXQuVVJMIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFVuaWNvZGVTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VW5pY29kZVN0cmVhbSIKKyByZXR1cm49ImphdmEuaW8uSW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRXYXJuaW5ncyIKKyByZXR1cm49ImphdmEuc3FsLlNRTFdhcm5pbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5zZXJ0Um93IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0FmdGVyTGFzdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNCZWZvcmVGaXJzdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNGaXJzdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNMYXN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsYXN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtb3ZlVG9DdXJyZW50Um93IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtb3ZlVG9JbnNlcnRSb3ciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByZXZpb3VzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWZyZXNoUm93IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWxhdGl2ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icm93cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyb3dEZWxldGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyb3dJbnNlcnRlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icm93VXBkYXRlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RmV0Y2hEaXJlY3Rpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpcmVjdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGZXRjaFNpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvd3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlQXJyYXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImphdmEuc3FsLkFycmF5Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVBcnJheSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iamF2YS5zcWwuQXJyYXkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZUFzY2lpU3RyZWFtIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlQXNjaWlTdHJlYW0iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVCaWdEZWNpbWFsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJqYXZhLm1hdGguQmlnRGVjaW1hbCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlQmlnRGVjaW1hbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZUJpbmFyeVN0cmVhbSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZUJpbmFyeVN0cmVhbSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZUJsb2IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImphdmEuc3FsLkJsb2IiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZUJsb2IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImphdmEuc3FsLkJsb2IiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZUJvb2xlYW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZUJvb2xlYW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZUJ5dGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImJ5dGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZUJ5dGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImJ5dGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZUJ5dGVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZUJ5dGVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZUNoYXJhY3RlclN0cmVhbSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iamF2YS5pby5SZWFkZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVDaGFyYWN0ZXJTdHJlYW0iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlYWRlciIgdHlwZT0iamF2YS5pby5SZWFkZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVDbG9iIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJqYXZhLnNxbC5DbG9iIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVDbG9iIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJqYXZhLnNxbC5DbG9iIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVEYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJqYXZhLnNxbC5EYXRlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVEYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJqYXZhLnNxbC5EYXRlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVEb3VibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlRG91YmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZUZsb2F0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlRmxvYXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVJbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlSW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZUxvbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZUxvbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZU51bGwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZU51bGwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZU9iamVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlT2JqZWN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY2FsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVPYmplY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZU9iamVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NhbGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlUmVmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJqYXZhLnNxbC5SZWYiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZVJlZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iamF2YS5zcWwuUmVmIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVSb3ciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZVNob3J0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJzaG9ydCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlU2hvcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9InNob3J0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGVTdHJpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZVN0cmluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlVGltZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iamF2YS5zcWwuVGltZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlVGltZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iamF2YS5zcWwuVGltZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlVGltZXN0YW1wIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJqYXZhLnNxbC5UaW1lc3RhbXAiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZVRpbWVzdGFtcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iamF2YS5zcWwuVGltZXN0YW1wIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3YXNOdWxsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNMT1NFX0NVUlNPUlNfQVRfQ09NTUlUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05DVVJfUkVBRF9PTkxZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAwNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05DVVJfVVBEQVRBQkxFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAwOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGRVRDSF9GT1JXQVJEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGRVRDSF9SRVZFUlNFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAwMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGRVRDSF9VTktOT1dOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAwMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIT0xEX0NVUlNPUlNfT1ZFUl9DT01NSVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRZUEVfRk9SV0FSRF9PTkxZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAwMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX1NDUk9MTF9JTlNFTlNJVElWRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFlQRV9TQ1JPTExfU0VOU0lUSVZFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAwNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJSZXN1bHRTZXRNZXRhRGF0YSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldENhdGFsb2dOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sdW1uQ2xhc3NOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sdW1uQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sdW1uRGlzcGxheVNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbHVtbkxhYmVsIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sdW1uTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbHVtblR5cGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbHVtblR5cGVOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJlY2lzaW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTY2FsZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2NoZW1hTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRhYmxlTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQXV0b0luY3JlbWVudCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ2FzZVNlbnNpdGl2ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ3VycmVuY3kiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0RlZmluaXRlbHlXcml0YWJsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTnVsbGFibGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUmVhZE9ubHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1NlYXJjaGFibGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1NpZ25lZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzV3JpdGFibGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImNvbHVtbk5vTnVsbHMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNvbHVtbk51bGxhYmxlIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjb2x1bW5OdWxsYWJsZVVua25vd24iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlNRTERhdGEiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRTUUxUeXBlTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZFNRTCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyZWFtIiB0eXBlPSJqYXZhLnNxbC5TUUxJbnB1dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlU1FMIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJlYW0iIHR5cGU9ImphdmEuc3FsLlNRTE91dHB1dCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlNRTEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1FMRXhjZXB0aW9uIgorIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNRTEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVSZWFzb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNRTEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVSZWFzb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVNRTFN0YXRlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTUUxFeGNlcHRpb24iCisgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlUmVhc29uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVTUUxTdGF0ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlRXJyb3JDb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRFcnJvckNvZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmV4dEV4Y2VwdGlvbiIKKyByZXR1cm49ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTUUxTdGF0ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TmV4dEV4Y2VwdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4IiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlNRTElucHV0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0icmVhZEFycmF5IgorIHJldHVybj0iamF2YS5zcWwuQXJyYXkiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZEFzY2lpU3RyZWFtIgorIHJldHVybj0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkQmlnRGVjaW1hbCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdEZWNpbWFsIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRCaW5hcnlTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRCbG9iIgorIHJldHVybj0iamF2YS5zcWwuQmxvYiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkQm9vbGVhbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZEJ5dGUiCisgcmV0dXJuPSJieXRlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRCeXRlcyIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkQ2hhcmFjdGVyU3RyZWFtIgorIHJldHVybj0iamF2YS5pby5SZWFkZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZENsb2IiCisgcmV0dXJuPSJqYXZhLnNxbC5DbG9iIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWREYXRlIgorIHJldHVybj0iamF2YS5zcWwuRGF0ZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkRG91YmxlIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRGbG9hdCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRJbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZExvbmciCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRPYmplY3QiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRSZWYiCisgcmV0dXJuPSJqYXZhLnNxbC5SZWYiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZFNob3J0IgorIHJldHVybj0ic2hvcnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZFN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZFRpbWUiCisgcmV0dXJuPSJqYXZhLnNxbC5UaW1lIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWRUaW1lc3RhbXAiCisgcmV0dXJuPSJqYXZhLnNxbC5UaW1lc3RhbXAiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZFVSTCIKKyByZXR1cm49ImphdmEubmV0LlVSTCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3YXNOdWxsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlNRTE91dHB1dCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9IndyaXRlQXJyYXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUFycmF5IiB0eXBlPSJqYXZhLnNxbC5BcnJheSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVBc2NpaVN0cmVhbSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlU3RyZWFtIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUJpZ0RlY2ltYWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUJpZ0RlY2ltYWwiIHR5cGU9ImphdmEubWF0aC5CaWdEZWNpbWFsIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUJpbmFyeVN0cmVhbSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlU3RyZWFtIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUJsb2IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUJsb2IiIHR5cGU9ImphdmEuc3FsLkJsb2IiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlQm9vbGVhbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlRmxhZyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVCeXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVCeXRlIiB0eXBlPSJieXRlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUJ5dGVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVCeXRlcyIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUNoYXJhY3RlclN0cmVhbSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlU3RyZWFtIiB0eXBlPSJqYXZhLmlvLlJlYWRlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVDbG9iIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVDbG9iIiB0eXBlPSJqYXZhLnNxbC5DbG9iIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZURhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZURhdGUiIHR5cGU9ImphdmEuc3FsLkRhdGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlRG91YmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVEb3VibGUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVGbG9hdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlRmxvYXQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUludCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlSW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlTG9uZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlTG9uZyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVPYmplY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZU9iamVjdCIgdHlwZT0iamF2YS5zcWwuU1FMRGF0YSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVSZWYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVJlZiIgdHlwZT0iamF2YS5zcWwuUmVmIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVNob3J0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVTaG9ydCIgdHlwZT0ic2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlU3RyaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVTdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlU3RydWN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVTdHJ1Y3QiIHR5cGU9ImphdmEuc3FsLlN0cnVjdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUaW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVUaW1lIiB0eXBlPSJqYXZhLnNxbC5UaW1lIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRpbWVzdGFtcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlVGltZXN0YW1wIiB0eXBlPSJqYXZhLnNxbC5UaW1lc3RhbXAiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVVJMIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVVUkwiIHR5cGU9ImphdmEubmV0LlVSTCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlNRTFBlcm1pc3Npb24iCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5CYXNpY1Blcm1pc3Npb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5HdWFyZCI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1FMUGVybWlzc2lvbiIKKyB0eXBlPSJqYXZhLnNxbC5TUUxQZXJtaXNzaW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1FMUGVybWlzc2lvbiIKKyB0eXBlPSJqYXZhLnNxbC5TUUxQZXJtaXNzaW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aW9ucyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNRTFdhcm5pbmciCisgZXh0ZW5kcz0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1FMV2FybmluZyIKKyB0eXBlPSJqYXZhLnNxbC5TUUxXYXJuaW5nIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1FMV2FybmluZyIKKyB0eXBlPSJqYXZhLnNxbC5TUUxXYXJuaW5nIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlUmVhc29uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTUUxXYXJuaW5nIgorIHR5cGU9ImphdmEuc3FsLlNRTFdhcm5pbmciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVSZWFzb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVNRTFN0YXRlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTUUxXYXJuaW5nIgorIHR5cGU9ImphdmEuc3FsLlNRTFdhcm5pbmciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVSZWFzb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVNRTFN0YXRlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVFcnJvckNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldE5leHRXYXJuaW5nIgorIHJldHVybj0iamF2YS5zcWwuU1FMV2FybmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXROZXh0V2FybmluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InciIHR5cGU9ImphdmEuc3FsLlNRTFdhcm5pbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlNhdmVwb2ludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldFNhdmVwb2ludElkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNhdmVwb2ludE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iU3RhdGVtZW50IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYWRkQmF0Y2giCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNxbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2FuY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhckJhdGNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhcldhcm5pbmdzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhlY3V0ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3FsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJleGVjdXRlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcWwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF1dG9HZW5lcmF0ZWRLZXlzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4ZWN1dGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNxbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXhlcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4ZWN1dGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNxbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uTmFtZXMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhlY3V0ZUJhdGNoIgorIHJldHVybj0iaW50W10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhlY3V0ZVF1ZXJ5IgorIHJldHVybj0iamF2YS5zcWwuUmVzdWx0U2V0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNxbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhlY3V0ZVVwZGF0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcWwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4ZWN1dGVVcGRhdGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3FsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdXRvR2VuZXJhdGVkS2V5cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJleGVjdXRlVXBkYXRlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNxbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXhlcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4ZWN1dGVVcGRhdGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3FsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OYW1lcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb25uZWN0aW9uIgorIHJldHVybj0iamF2YS5zcWwuQ29ubmVjdGlvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGZXRjaERpcmVjdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGZXRjaFNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R2VuZXJhdGVkS2V5cyIKKyByZXR1cm49ImphdmEuc3FsLlJlc3VsdFNldCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYXhGaWVsZFNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF4Um93cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNb3JlUmVzdWx0cyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TW9yZVJlc3VsdHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnJlbnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UXVlcnlUaW1lb3V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlc3VsdFNldCIKKyByZXR1cm49ImphdmEuc3FsLlJlc3VsdFNldCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXN1bHRTZXRDb25jdXJyZW5jeSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXN1bHRTZXRIb2xkYWJpbGl0eSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXN1bHRTZXRUeXBlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFVwZGF0ZUNvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdhcm5pbmdzIgorIHJldHVybj0iamF2YS5zcWwuU1FMV2FybmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDdXJzb3JOYW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFc2NhcGVQcm9jZXNzaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmFibGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZldGNoRGlyZWN0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXJlY3Rpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RmV0Y2hTaXplIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyb3dzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE1heEZpZWxkU2l6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE1heFJvd3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1heCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRRdWVyeVRpbWVvdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlY29uZHMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDTE9TRV9BTExfUkVTVUxUUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0xPU0VfQ1VSUkVOVF9SRVNVTFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYRUNVVEVfRkFJTEVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VFUF9DVVJSRU5UX1JFU1VMVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTk9fR0VORVJBVEVEX0tFWVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFVFVSTl9HRU5FUkFURURfS0VZUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1VDQ0VTU19OT19JTkZPIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iU3RydWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0QXR0cmlidXRlcyIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3RbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdHRyaWJ1dGVzIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdFtdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZU1hcCIgdHlwZT0iamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuQ2xhc3MmbHQ7PyZndDsmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTUUxUeXBlTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlRpbWUiCisgZXh0ZW5kcz0iamF2YS51dGlsLkRhdGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUaW1lIgorIHR5cGU9ImphdmEuc3FsLlRpbWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUhvdXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlTWludXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVNlY29uZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUaW1lIgorIHR5cGU9ImphdmEuc3FsLlRpbWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVUaW1lIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImphdmEuc3FsLlRpbWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZVN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUaW1lc3RhbXAiCisgZXh0ZW5kcz0iamF2YS51dGlsLkRhdGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUaW1lc3RhbXAiCisgdHlwZT0iamF2YS5zcWwuVGltZXN0YW1wIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVZZWFyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZU1vbnRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZURhdGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlSG91ciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVNaW51dGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlU2Vjb25kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZU5hbm8iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUaW1lc3RhbXAiCisgdHlwZT0iamF2YS5zcWwuVGltZXN0YW1wIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlVGltZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFmdGVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlVGltZXN0YW1wIiB0eXBlPSJqYXZhLnNxbC5UaW1lc3RhbXAiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYmVmb3JlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlVGltZXN0YW1wIiB0eXBlPSJqYXZhLnNxbC5UaW1lc3RhbXAiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcGFyZVRvIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVUaW1lc3RhbXAiIHR5cGU9ImphdmEuc3FsLlRpbWVzdGFtcCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlcXVhbHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVUaW1lc3RhbXAiIHR5cGU9ImphdmEuc3FsLlRpbWVzdGFtcCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYW5vcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXROYW5vcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJqYXZhLnNxbC5UaW1lc3RhbXAiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlR5cGVzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxmaWVsZCBuYW1lPSJBUlJBWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwMDMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQklHSU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQklOQVJZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQklUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQkxPQiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwMDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQk9PTEVBTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNIQVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNMT0IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMDA1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRBVEFMSU5LIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjkxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFQ0lNQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRJU1RJTkNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjAwMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJET1VCTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMT0FUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTlRFR0VSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJKQVZBX09CSkVDVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwMDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTE9OR1ZBUkJJTkFSWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii00IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxPTkdWQVJDSEFSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTlVMTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTlVNRVJJQyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1RIRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMTExIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFRiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwMDYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU01BTExJTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNUUlVDVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwMDIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVElNRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjkyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRJTUVTVEFNUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjkzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRJTllJTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJWQVJCSU5BUlkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJWQVJDSEFSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iamF2YS50ZXh0IgorPgorPGNsYXNzIG5hbWU9IkFubm90YXRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFubm90YXRpb24iCisgdHlwZT0iamF2YS50ZXh0LkFubm90YXRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhdHRyaWJ1dGUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkF0dHJpYnV0ZWRDaGFyYWN0ZXJJdGVyYXRvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnRleHQuQ2hhcmFjdGVySXRlcmF0b3IiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRBbGxBdHRyaWJ1dGVLZXlzIgorIHJldHVybj0iamF2YS51dGlsLlNldCZsdDtqYXZhLnRleHQuQXR0cmlidXRlZENoYXJhY3Rlckl0ZXJhdG9yLkF0dHJpYnV0ZSZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdHRyaWJ1dGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJpYnV0ZSIgdHlwZT0iamF2YS50ZXh0LkF0dHJpYnV0ZWRDaGFyYWN0ZXJJdGVyYXRvci5BdHRyaWJ1dGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXR0cmlidXRlcyIKKyByZXR1cm49ImphdmEudXRpbC5NYXAmbHQ7amF2YS50ZXh0LkF0dHJpYnV0ZWRDaGFyYWN0ZXJJdGVyYXRvci5BdHRyaWJ1dGUsIGphdmEubGFuZy5PYmplY3QmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UnVuTGltaXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSdW5MaW1pdCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhdHRyaWJ1dGUiIHR5cGU9ImphdmEudGV4dC5BdHRyaWJ1dGVkQ2hhcmFjdGVySXRlcmF0b3IuQXR0cmlidXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJ1bkxpbWl0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJpYnV0ZXMiIHR5cGU9ImphdmEudXRpbC5TZXQmbHQ7PyBleHRlbmRzIGphdmEudGV4dC5BdHRyaWJ1dGVkQ2hhcmFjdGVySXRlcmF0b3IuQXR0cmlidXRlJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSdW5TdGFydCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJ1blN0YXJ0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJpYnV0ZSIgdHlwZT0iamF2YS50ZXh0LkF0dHJpYnV0ZWRDaGFyYWN0ZXJJdGVyYXRvci5BdHRyaWJ1dGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UnVuU3RhcnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cmlidXRlcyIgdHlwZT0iamF2YS51dGlsLlNldCZsdDs/IGV4dGVuZHMgamF2YS50ZXh0LkF0dHJpYnV0ZWRDaGFyYWN0ZXJJdGVyYXRvci5BdHRyaWJ1dGUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJBdHRyaWJ1dGVkQ2hhcmFjdGVySXRlcmF0b3IuQXR0cmlidXRlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkF0dHJpYnV0ZWRDaGFyYWN0ZXJJdGVyYXRvci5BdHRyaWJ1dGUiCisgdHlwZT0iamF2YS50ZXh0LkF0dHJpYnV0ZWRDaGFyYWN0ZXJJdGVyYXRvci5BdHRyaWJ1dGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZXF1YWxzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzaENvZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkUmVzb2x2ZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRPYmplY3RFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSW52YWxpZE9iamVjdEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IklOUFVUX01FVEhPRF9TRUdNRU5UIgorIHR5cGU9ImphdmEudGV4dC5BdHRyaWJ1dGVkQ2hhcmFjdGVySXRlcmF0b3IuQXR0cmlidXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxBTkdVQUdFIgorIHR5cGU9ImphdmEudGV4dC5BdHRyaWJ1dGVkQ2hhcmFjdGVySXRlcmF0b3IuQXR0cmlidXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFQURJTkciCisgdHlwZT0iamF2YS50ZXh0LkF0dHJpYnV0ZWRDaGFyYWN0ZXJJdGVyYXRvci5BdHRyaWJ1dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkF0dHJpYnV0ZWRTdHJpbmciCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkF0dHJpYnV0ZWRTdHJpbmciCisgdHlwZT0iamF2YS50ZXh0LkF0dHJpYnV0ZWRTdHJpbmciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpdGVyYXRvciIgdHlwZT0iamF2YS50ZXh0LkF0dHJpYnV0ZWRDaGFyYWN0ZXJJdGVyYXRvciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXR0cmlidXRlZFN0cmluZyIKKyB0eXBlPSJqYXZhLnRleHQuQXR0cmlidXRlZFN0cmluZyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Iml0ZXJhdG9yIiB0eXBlPSJqYXZhLnRleHQuQXR0cmlidXRlZENoYXJhY3Rlckl0ZXJhdG9yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXR0cmlidXRlZFN0cmluZyIKKyB0eXBlPSJqYXZhLnRleHQuQXR0cmlidXRlZFN0cmluZyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Iml0ZXJhdG9yIiB0eXBlPSJqYXZhLnRleHQuQXR0cmlidXRlZENoYXJhY3Rlckl0ZXJhdG9yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cmlidXRlcyIgdHlwZT0iamF2YS50ZXh0LkF0dHJpYnV0ZWRDaGFyYWN0ZXJJdGVyYXRvci5BdHRyaWJ1dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXR0cmlidXRlZFN0cmluZyIKKyB0eXBlPSJqYXZhLnRleHQuQXR0cmlidXRlZFN0cmluZyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBdHRyaWJ1dGVkU3RyaW5nIgorIHR5cGU9ImphdmEudGV4dC5BdHRyaWJ1dGVkU3RyaW5nIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJpYnV0ZXMiIHR5cGU9ImphdmEudXRpbC5NYXAmbHQ7PyBleHRlbmRzIGphdmEudGV4dC5BdHRyaWJ1dGVkQ2hhcmFjdGVySXRlcmF0b3IuQXR0cmlidXRlLCA/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZEF0dHJpYnV0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJpYnV0ZSIgdHlwZT0iamF2YS50ZXh0LkF0dHJpYnV0ZWRDaGFyYWN0ZXJJdGVyYXRvci5BdHRyaWJ1dGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZEF0dHJpYnV0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJpYnV0ZSIgdHlwZT0iamF2YS50ZXh0LkF0dHJpYnV0ZWRDaGFyYWN0ZXJJdGVyYXRvci5BdHRyaWJ1dGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRBdHRyaWJ1dGVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cmlidXRlcyIgdHlwZT0iamF2YS51dGlsLk1hcCZsdDs/IGV4dGVuZHMgamF2YS50ZXh0LkF0dHJpYnV0ZWRDaGFyYWN0ZXJJdGVyYXRvci5BdHRyaWJ1dGUsID8mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJdGVyYXRvciIKKyByZXR1cm49ImphdmEudGV4dC5BdHRyaWJ1dGVkQ2hhcmFjdGVySXRlcmF0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SXRlcmF0b3IiCisgcmV0dXJuPSJqYXZhLnRleHQuQXR0cmlidXRlZENoYXJhY3Rlckl0ZXJhdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhdHRyaWJ1dGVzIiB0eXBlPSJqYXZhLnRleHQuQXR0cmlidXRlZENoYXJhY3Rlckl0ZXJhdG9yLkF0dHJpYnV0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEl0ZXJhdG9yIgorIHJldHVybj0iamF2YS50ZXh0LkF0dHJpYnV0ZWRDaGFyYWN0ZXJJdGVyYXRvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cmlidXRlcyIgdHlwZT0iamF2YS50ZXh0LkF0dHJpYnV0ZWRDaGFyYWN0ZXJJdGVyYXRvci5BdHRyaWJ1dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQmlkaSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCaWRpIgorIHR5cGU9ImphdmEudGV4dC5CaWRpIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYWdyYXBoIiB0eXBlPSJqYXZhLnRleHQuQXR0cmlidXRlZENoYXJhY3Rlckl0ZXJhdG9yIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCaWRpIgorIHR5cGU9ImphdmEudGV4dC5CaWRpIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0U3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW1iZWRkaW5ncyIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbWJTdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhZ3JhcGhMZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmlkaSIKKyB0eXBlPSJqYXZhLnRleHQuQmlkaSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFncmFwaCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImJhc2VJc0xlZnRUb1JpZ2h0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVMaW5lQmlkaSIKKyByZXR1cm49ImphdmEudGV4dC5CaWRpIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaW5lU3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZUxpbWl0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QmFzZUxldmVsIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExlbmd0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMZXZlbEF0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSdW5Db3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSdW5MZXZlbCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icnVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UnVuTGltaXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJ1biIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJ1blN0YXJ0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJydW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0xlZnRUb1JpZ2h0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc01peGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1JpZ2h0VG9MZWZ0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW9yZGVyVmlzdWFsbHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxldmVscyIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZXZlbFN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdHMiIHR5cGU9ImphdmEubGFuZy5PYmplY3RbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0U3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXF1aXJlc0JpZGkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGltaXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkRJUkVDVElPTl9ERUZBVUxUX0xFRlRfVE9fUklHSFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJESVJFQ1RJT05fREVGQVVMVF9SSUdIVF9UT19MRUZUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRElSRUNUSU9OX0xFRlRfVE9fUklHSFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRJUkVDVElPTl9SSUdIVF9UT19MRUZUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQnJlYWtJdGVyYXRvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5DbG9uZWFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJyZWFrSXRlcmF0b3IiCisgdHlwZT0iamF2YS50ZXh0LkJyZWFrSXRlcmF0b3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImN1cnJlbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaXJzdCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvbGxvd2luZyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdmFpbGFibGVMb2NhbGVzIgorIHJldHVybj0iamF2YS51dGlsLkxvY2FsZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hhcmFjdGVySW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnRleHQuQnJlYWtJdGVyYXRvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoYXJhY3Rlckluc3RhbmNlIgorIHJldHVybj0iamF2YS50ZXh0LkJyZWFrSXRlcmF0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hlcmUiIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaW5lSW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnRleHQuQnJlYWtJdGVyYXRvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExpbmVJbnN0YW5jZSIKKyByZXR1cm49ImphdmEudGV4dC5CcmVha0l0ZXJhdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndoZXJlIiB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvbmciCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZW50ZW5jZUluc3RhbmNlIgorIHJldHVybj0iamF2YS50ZXh0LkJyZWFrSXRlcmF0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZW50ZW5jZUluc3RhbmNlIgorIHJldHVybj0iamF2YS50ZXh0LkJyZWFrSXRlcmF0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hlcmUiIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2hvcnQiCisgcmV0dXJuPSJzaG9ydCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWYiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGV4dCIKKyByZXR1cm49ImphdmEudGV4dC5DaGFyYWN0ZXJJdGVyYXRvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdvcmRJbnN0YW5jZSIKKyByZXR1cm49ImphdmEudGV4dC5CcmVha0l0ZXJhdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V29yZEluc3RhbmNlIgorIHJldHVybj0iamF2YS50ZXh0LkJyZWFrSXRlcmF0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2hlcmUiIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNCb3VuZGFyeSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxhc3QiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV4dCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJlY2VkaW5nIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcmV2aW91cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRleHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdUZXh0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRleHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1RleHQiIHR5cGU9ImphdmEudGV4dC5DaGFyYWN0ZXJJdGVyYXRvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkRPTkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkNoYXJhY3Rlckl0ZXJhdG9yIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5DbG9uZWFibGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjdXJyZW50IgorIHJldHVybj0iY2hhciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpcnN0IgorIHJldHVybj0iY2hhciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJlZ2luSW5kZXgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbmRJbmRleCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluZGV4IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGFzdCIKKyByZXR1cm49ImNoYXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0IgorIHJldHVybj0iY2hhciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByZXZpb3VzIgorIHJldHVybj0iY2hhciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEluZGV4IgorIHJldHVybj0iY2hhciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iRE9ORSIKKyB0eXBlPSJjaGFyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NTUzNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkNob2ljZUZvcm1hdCIKKyBleHRlbmRzPSJqYXZhLnRleHQuTnVtYmVyRm9ybWF0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2hvaWNlRm9ybWF0IgorIHR5cGU9ImphdmEudGV4dC5DaG9pY2VGb3JtYXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaW1pdHMiIHR5cGU9ImRvdWJsZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXRzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNob2ljZUZvcm1hdCIKKyB0eXBlPSJqYXZhLnRleHQuQ2hvaWNlRm9ybWF0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVtcGxhdGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhcHBseVBhdHRlcm4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZW1wbGF0ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpZWxkIiB0eXBlPSJqYXZhLnRleHQuRmllbGRQb3NpdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZCIgdHlwZT0iamF2YS50ZXh0LkZpZWxkUG9zaXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Rm9ybWF0cyIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3RbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaW1pdHMiCisgcmV0dXJuPSJkb3VibGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0RG91YmxlIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0RG91YmxlIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluY3JlbWVudCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZSIKKyByZXR1cm49ImphdmEubGFuZy5OdW1iZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImphdmEudGV4dC5QYXJzZVBvc2l0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByZXZpb3VzRG91YmxlIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDaG9pY2VzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGltaXRzIiB0eXBlPSJkb3VibGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9ybWF0cyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvUGF0dGVybiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29sbGF0aW9uRWxlbWVudEl0ZXJhdG9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRNYXhFeHBhbnNpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9yZGVyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T2Zmc2V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJldmlvdXMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJpbWFyeU9yZGVyIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JkZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2Vjb25kYXJ5T3JkZXIiCisgcmV0dXJuPSJzaG9ydCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9yZGVyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T2Zmc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3T2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGV4dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0iamF2YS50ZXh0LkNoYXJhY3Rlckl0ZXJhdG9yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRleHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGVydGlhcnlPcmRlciIKKyByZXR1cm49InNob3J0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JkZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Ik5VTExPUkRFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb2xsYXRpb25LZXkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ29tcGFyYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImNvbXBhcmVUbyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEudGV4dC5Db2xsYXRpb25LZXkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U291cmNlU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b0J5dGVBcnJheSIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb2xsYXRvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5DbG9uZWFibGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLkNvbXBhcmF0b3IiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbGxhdG9yIgorIHR5cGU9ImphdmEudGV4dC5Db2xsYXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcGFyZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0MSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0MiIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZzEiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZzIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXF1YWxzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nMSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nMiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdmFpbGFibGVMb2NhbGVzIgorIHJldHVybj0iamF2YS51dGlsLkxvY2FsZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sbGF0aW9uS2V5IgorIHJldHVybj0iamF2YS50ZXh0LkNvbGxhdGlvbktleSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVjb21wb3NpdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImphdmEudGV4dC5Db2xsYXRvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YS50ZXh0LkNvbGxhdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsZSIgdHlwZT0iamF2YS51dGlsLkxvY2FsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdHJlbmd0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNoQ29kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERlY29tcG9zaXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN0cmVuZ3RoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNBTk9OSUNBTF9ERUNPTVBPU0lUSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGVUxMX0RFQ09NUE9TSVRJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklERU5USUNBTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTk9fREVDT01QT1NJVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJJTUFSWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VDT05EQVJZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJURVJUSUFSWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRhdGVGb3JtYXQiCisgZXh0ZW5kcz0iamF2YS50ZXh0LkZvcm1hdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGF0ZUZvcm1hdCIKKyB0eXBlPSJqYXZhLnRleHQuRGF0ZUZvcm1hdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJmb3JtYXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZCIgdHlwZT0iamF2YS50ZXh0LkZpZWxkUG9zaXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRlIiB0eXBlPSJqYXZhLnV0aWwuRGF0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGUiIHR5cGU9ImphdmEudXRpbC5EYXRlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpZWxkIiB0eXBlPSJqYXZhLnRleHQuRmllbGRQb3NpdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdmFpbGFibGVMb2NhbGVzIgorIHJldHVybj0iamF2YS51dGlsLkxvY2FsZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2FsZW5kYXIiCisgcmV0dXJuPSJqYXZhLnV0aWwuQ2FsZW5kYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGF0ZUluc3RhbmNlIgorIHJldHVybj0iamF2YS50ZXh0LkRhdGVGb3JtYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERhdGVJbnN0YW5jZSIKKyByZXR1cm49ImphdmEudGV4dC5EYXRlRm9ybWF0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3R5bGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREYXRlSW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnRleHQuRGF0ZUZvcm1hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsZSIgdHlwZT0iamF2YS51dGlsLkxvY2FsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREYXRlVGltZUluc3RhbmNlIgorIHJldHVybj0iamF2YS50ZXh0LkRhdGVGb3JtYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERhdGVUaW1lSW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnRleHQuRGF0ZUZvcm1hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGVTdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lU3R5bGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREYXRlVGltZUluc3RhbmNlIgorIHJldHVybj0iamF2YS50ZXh0LkRhdGVGb3JtYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRlU3R5bGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZVN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsZSIgdHlwZT0iamF2YS51dGlsLkxvY2FsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImphdmEudGV4dC5EYXRlRm9ybWF0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROdW1iZXJGb3JtYXQiCisgcmV0dXJuPSJqYXZhLnRleHQuTnVtYmVyRm9ybWF0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRpbWVJbnN0YW5jZSIKKyByZXR1cm49ImphdmEudGV4dC5EYXRlRm9ybWF0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaW1lSW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnRleHQuRGF0ZUZvcm1hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0eWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGltZUluc3RhbmNlIgorIHJldHVybj0iamF2YS50ZXh0LkRhdGVGb3JtYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbGUiIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGltZVpvbmUiCisgcmV0dXJuPSJqYXZhLnV0aWwuVGltZVpvbmUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNMZW5pZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZSIKKyByZXR1cm49ImphdmEudXRpbC5EYXRlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhcnNlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnRleHQuUGFyc2VFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJqYXZhLnV0aWwuRGF0ZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJqYXZhLnRleHQuUGFyc2VQb3NpdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZU9iamVjdCIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImphdmEudGV4dC5QYXJzZVBvc2l0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENhbGVuZGFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsIiB0eXBlPSJqYXZhLnV0aWwuQ2FsZW5kYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TGVuaWVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE51bWJlckZvcm1hdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcm1hdCIgdHlwZT0iamF2YS50ZXh0Lk51bWJlckZvcm1hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUaW1lWm9uZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWV6b25lIiB0eXBlPSJqYXZhLnV0aWwuVGltZVpvbmUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBTV9QTV9GSUVMRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRBVEVfRklFTEQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRBWV9PRl9XRUVLX0ZJRUxEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVlfT0ZfV0VFS19JTl9NT05USF9GSUVMRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjExIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRBWV9PRl9ZRUFSX0ZJRUxEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVGQVVMVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVJBX0ZJRUxEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGVUxMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIT1VSMF9GSUVMRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhPVVIxX0ZJRUxEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSE9VUl9PRl9EQVkwX0ZJRUxEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIT1VSX09GX0RBWTFfRklFTEQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxPTkciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1FRElVTSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUlMTElTRUNPTkRfRklFTEQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1JTlVURV9GSUVMRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTU9OVEhfRklFTEQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFQ09ORF9GSUVMRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0hPUlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRJTUVaT05FX0ZJRUxEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0VFS19PRl9NT05USF9GSUVMRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldFRUtfT0ZfWUVBUl9GSUVMRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IllFQVJfRklFTEQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNhbGVuZGFyIgorIHR5cGU9ImphdmEudXRpbC5DYWxlbmRhciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im51bWJlckZvcm1hdCIKKyB0eXBlPSJqYXZhLnRleHQuTnVtYmVyRm9ybWF0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRhdGVGb3JtYXQuRmllbGQiCisgZXh0ZW5kcz0iamF2YS50ZXh0LkZvcm1hdC5GaWVsZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGF0ZUZvcm1hdC5GaWVsZCIKKyB0eXBlPSJqYXZhLnRleHQuRGF0ZUZvcm1hdC5GaWVsZCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpZWxkTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsZW5kYXJGaWVsZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q2FsZW5kYXJGaWVsZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvZkNhbGVuZGFyRmllbGQiCisgcmV0dXJuPSJqYXZhLnRleHQuRGF0ZUZvcm1hdC5GaWVsZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYWxlbmRhckZpZWxkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBTV9QTSIKKyB0eXBlPSJqYXZhLnRleHQuRGF0ZUZvcm1hdC5GaWVsZCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVlfT0ZfTU9OVEgiCisgdHlwZT0iamF2YS50ZXh0LkRhdGVGb3JtYXQuRmllbGQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFZX09GX1dFRUsiCisgdHlwZT0iamF2YS50ZXh0LkRhdGVGb3JtYXQuRmllbGQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFZX09GX1dFRUtfSU5fTU9OVEgiCisgdHlwZT0iamF2YS50ZXh0LkRhdGVGb3JtYXQuRmllbGQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFZX09GX1lFQVIiCisgdHlwZT0iamF2YS50ZXh0LkRhdGVGb3JtYXQuRmllbGQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVJBIgorIHR5cGU9ImphdmEudGV4dC5EYXRlRm9ybWF0LkZpZWxkIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhPVVIwIgorIHR5cGU9ImphdmEudGV4dC5EYXRlRm9ybWF0LkZpZWxkIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhPVVIxIgorIHR5cGU9ImphdmEudGV4dC5EYXRlRm9ybWF0LkZpZWxkIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhPVVJfT0ZfREFZMCIKKyB0eXBlPSJqYXZhLnRleHQuRGF0ZUZvcm1hdC5GaWVsZCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIT1VSX09GX0RBWTEiCisgdHlwZT0iamF2YS50ZXh0LkRhdGVGb3JtYXQuRmllbGQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUlMTElTRUNPTkQiCisgdHlwZT0iamF2YS50ZXh0LkRhdGVGb3JtYXQuRmllbGQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUlOVVRFIgorIHR5cGU9ImphdmEudGV4dC5EYXRlRm9ybWF0LkZpZWxkIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1PTlRIIgorIHR5cGU9ImphdmEudGV4dC5EYXRlRm9ybWF0LkZpZWxkIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFQ09ORCIKKyB0eXBlPSJqYXZhLnRleHQuRGF0ZUZvcm1hdC5GaWVsZCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUSU1FX1pPTkUiCisgdHlwZT0iamF2YS50ZXh0LkRhdGVGb3JtYXQuRmllbGQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0VFS19PRl9NT05USCIKKyB0eXBlPSJqYXZhLnRleHQuRGF0ZUZvcm1hdC5GaWVsZCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXRUVLX09GX1lFQVIiCisgdHlwZT0iamF2YS50ZXh0LkRhdGVGb3JtYXQuRmllbGQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iWUVBUiIKKyB0eXBlPSJqYXZhLnRleHQuRGF0ZUZvcm1hdC5GaWVsZCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRGF0ZUZvcm1hdFN5bWJvbHMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGF0ZUZvcm1hdFN5bWJvbHMiCisgdHlwZT0iamF2YS50ZXh0LkRhdGVGb3JtYXRTeW1ib2xzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGF0ZUZvcm1hdFN5bWJvbHMiCisgdHlwZT0iamF2YS50ZXh0LkRhdGVGb3JtYXRTeW1ib2xzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxlIiB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFtUG1TdHJpbmdzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVyYXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9jYWxQYXR0ZXJuQ2hhcnMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1vbnRocyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaG9ydE1vbnRocyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaG9ydFdlZWtkYXlzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdlZWtkYXlzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFpvbmVTdHJpbmdzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QW1QbVN0cmluZ3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RXJhcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMb2NhbFBhdHRlcm5DaGFycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TW9udGhzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNob3J0TW9udGhzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNob3J0V2Vla2RheXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0V2Vla2RheXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Wm9uZVN0cmluZ3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW11bXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEZWNpbWFsRm9ybWF0IgorIGV4dGVuZHM9ImphdmEudGV4dC5OdW1iZXJGb3JtYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEZWNpbWFsRm9ybWF0IgorIHR5cGU9ImphdmEudGV4dC5EZWNpbWFsRm9ybWF0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGVjaW1hbEZvcm1hdCIKKyB0eXBlPSJqYXZhLnRleHQuRGVjaW1hbEZvcm1hdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdHRlcm4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRlY2ltYWxGb3JtYXQiCisgdHlwZT0iamF2YS50ZXh0LkRlY2ltYWxGb3JtYXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXR0ZXJuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS50ZXh0LkRlY2ltYWxGb3JtYXRTeW1ib2xzIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYXBwbHlMb2NhbGl6ZWRQYXR0ZXJuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0dGVybiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBseVBhdHRlcm4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXR0ZXJuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImphdmEudGV4dC5GaWVsZFBvc2l0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJqYXZhLnRleHQuRmllbGRQb3NpdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im51bWJlciIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG9BcHBlbmRUbyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zIiB0eXBlPSJqYXZhLnRleHQuRmllbGRQb3NpdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWNpbWFsRm9ybWF0U3ltYm9scyIKKyByZXR1cm49ImphdmEudGV4dC5EZWNpbWFsRm9ybWF0U3ltYm9scyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRHcm91cGluZ1NpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TXVsdGlwbGllciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROZWdhdGl2ZVByZWZpeCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmVnYXRpdmVTdWZmaXgiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBvc2l0aXZlUHJlZml4IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQb3NpdGl2ZVN1ZmZpeCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNEZWNpbWFsU2VwYXJhdG9yQWx3YXlzU2hvd24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUGFyc2VCaWdEZWNpbWFsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZSIKKyByZXR1cm49ImphdmEubGFuZy5OdW1iZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImphdmEudGV4dC5QYXJzZVBvc2l0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERlY2ltYWxGb3JtYXRTeW1ib2xzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEudGV4dC5EZWNpbWFsRm9ybWF0U3ltYm9scyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREZWNpbWFsU2VwYXJhdG9yQWx3YXlzU2hvd24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRHcm91cGluZ1NpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE11bHRpcGxpZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE5lZ2F0aXZlUHJlZml4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TmVnYXRpdmVTdWZmaXgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQYXJzZUJpZ0RlY2ltYWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdWYWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQb3NpdGl2ZVByZWZpeCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBvc2l0aXZlU3VmZml4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9Mb2NhbGl6ZWRQYXR0ZXJuIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1BhdHRlcm4iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRlY2ltYWxGb3JtYXRTeW1ib2xzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGVjaW1hbEZvcm1hdFN5bWJvbHMiCisgdHlwZT0iamF2YS50ZXh0LkRlY2ltYWxGb3JtYXRTeW1ib2xzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGVjaW1hbEZvcm1hdFN5bWJvbHMiCisgdHlwZT0iamF2YS50ZXh0LkRlY2ltYWxGb3JtYXRTeW1ib2xzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxlIiB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEN1cnJlbmN5IgorIHJldHVybj0iamF2YS51dGlsLkN1cnJlbmN5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEN1cnJlbmN5U3ltYm9sIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWNpbWFsU2VwYXJhdG9yIgorIHJldHVybj0iY2hhciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREaWdpdCIKKyByZXR1cm49ImNoYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0R3JvdXBpbmdTZXBhcmF0b3IiCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluZmluaXR5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnRlcm5hdGlvbmFsQ3VycmVuY3lTeW1ib2wiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1pbnVzU2lnbiIKKyByZXR1cm49ImNoYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TW9uZXRhcnlEZWNpbWFsU2VwYXJhdG9yIgorIHJldHVybj0iY2hhciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYU4iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhdHRlcm5TZXBhcmF0b3IiCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBlck1pbGwiCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBlcmNlbnQiCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFplcm9EaWdpdCIKKyByZXR1cm49ImNoYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q3VycmVuY3kiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJyZW5jeSIgdHlwZT0iamF2YS51dGlsLkN1cnJlbmN5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEN1cnJlbmN5U3ltYm9sIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGVjaW1hbFNlcGFyYXRvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERpZ2l0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0R3JvdXBpbmdTZXBhcmF0b3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJbmZpbml0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEludGVybmF0aW9uYWxDdXJyZW5jeVN5bWJvbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE1pbnVzU2lnbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE1vbmV0YXJ5RGVjaW1hbFNlcGFyYXRvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE5hTiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBhdHRlcm5TZXBhcmF0b3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQZXJNaWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGVyY2VudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFplcm9EaWdpdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkZpZWxkUG9zaXRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZpZWxkUG9zaXRpb24iCisgdHlwZT0iamF2YS50ZXh0LkZpZWxkUG9zaXRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGaWVsZFBvc2l0aW9uIgorIHR5cGU9ImphdmEudGV4dC5GaWVsZFBvc2l0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cmlidXRlIiB0eXBlPSJqYXZhLnRleHQuRm9ybWF0LkZpZWxkIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGaWVsZFBvc2l0aW9uIgorIHR5cGU9ImphdmEudGV4dC5GaWVsZFBvc2l0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cmlidXRlIiB0eXBlPSJqYXZhLnRleHQuRm9ybWF0LkZpZWxkIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0QmVnaW5JbmRleCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbmRJbmRleCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGaWVsZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGaWVsZEF0dHJpYnV0ZSIKKyByZXR1cm49ImphdmEudGV4dC5Gb3JtYXQuRmllbGQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QmVnaW5JbmRleCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RW5kSW5kZXgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkZvcm1hdCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5DbG9uZWFibGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZvcm1hdCIKKyB0eXBlPSJqYXZhLnRleHQuRm9ybWF0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZCIgdHlwZT0iamF2YS50ZXh0LkZpZWxkUG9zaXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0VG9DaGFyYWN0ZXJJdGVyYXRvciIKKyByZXR1cm49ImphdmEudGV4dC5BdHRyaWJ1dGVkQ2hhcmFjdGVySXRlcmF0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZU9iamVjdCIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFyc2VFeGNlcHRpb24iIHR5cGU9ImphdmEudGV4dC5QYXJzZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZU9iamVjdCIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0iamF2YS50ZXh0LlBhcnNlUG9zaXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRm9ybWF0LkZpZWxkIgorIGV4dGVuZHM9ImphdmEudGV4dC5BdHRyaWJ1dGVkQ2hhcmFjdGVySXRlcmF0b3IuQXR0cmlidXRlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGb3JtYXQuRmllbGQiCisgdHlwZT0iamF2YS50ZXh0LkZvcm1hdC5GaWVsZCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpZWxkTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik1lc3NhZ2VGb3JtYXQiCisgZXh0ZW5kcz0iamF2YS50ZXh0LkZvcm1hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1lc3NhZ2VGb3JtYXQiCisgdHlwZT0iamF2YS50ZXh0Lk1lc3NhZ2VGb3JtYXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZW1wbGF0ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxlIiB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNZXNzYWdlRm9ybWF0IgorIHR5cGU9ImphdmEudGV4dC5NZXNzYWdlRm9ybWF0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVtcGxhdGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhcHBseVBhdHRlcm4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZW1wbGF0ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdHMiIHR5cGU9ImphdmEubGFuZy5PYmplY3RbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZCIgdHlwZT0iamF2YS50ZXh0LkZpZWxkUG9zaXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmllbGQiIHR5cGU9ImphdmEudGV4dC5GaWVsZFBvc2l0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVtcGxhdGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdHMiIHR5cGU9ImphdmEubGFuZy5PYmplY3QuLi4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Rm9ybWF0cyIKKyByZXR1cm49ImphdmEudGV4dC5Gb3JtYXRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGb3JtYXRzQnlBcmd1bWVudEluZGV4IgorIHJldHVybj0iamF2YS50ZXh0LkZvcm1hdFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvY2FsZSIKKyByZXR1cm49ImphdmEudXRpbC5Mb2NhbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0W10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFyc2VFeGNlcHRpb24iIHR5cGU9ImphdmEudGV4dC5QYXJzZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3RbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0iamF2YS50ZXh0LlBhcnNlUG9zaXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VPYmplY3QiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJqYXZhLnRleHQuUGFyc2VQb3NpdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGb3JtYXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9ybWF0IiB0eXBlPSJqYXZhLnRleHQuRm9ybWF0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZvcm1hdEJ5QXJndW1lbnRJbmRleCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZ0luZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcm1hdCIgdHlwZT0iamF2YS50ZXh0LkZvcm1hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGb3JtYXRzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9ybWF0cyIgdHlwZT0iamF2YS50ZXh0LkZvcm1hdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZvcm1hdHNCeUFyZ3VtZW50SW5kZXgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXRzIiB0eXBlPSJqYXZhLnRleHQuRm9ybWF0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TG9jYWxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxlIiB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvUGF0dGVybiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTWVzc2FnZUZvcm1hdC5GaWVsZCIKKyBleHRlbmRzPSJqYXZhLnRleHQuRm9ybWF0LkZpZWxkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNZXNzYWdlRm9ybWF0LkZpZWxkIgorIHR5cGU9ImphdmEudGV4dC5NZXNzYWdlRm9ybWF0LkZpZWxkIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmllbGROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxmaWVsZCBuYW1lPSJBUkdVTUVOVCIKKyB0eXBlPSJqYXZhLnRleHQuTWVzc2FnZUZvcm1hdC5GaWVsZCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTnVtYmVyRm9ybWF0IgorIGV4dGVuZHM9ImphdmEudGV4dC5Gb3JtYXQiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik51bWJlckZvcm1hdCIKKyB0eXBlPSJqYXZhLnRleHQuTnVtYmVyRm9ybWF0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmllbGQiIHR5cGU9ImphdmEudGV4dC5GaWVsZFBvc2l0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZCIgdHlwZT0iamF2YS50ZXh0LkZpZWxkUG9zaXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZpZWxkIiB0eXBlPSJqYXZhLnRleHQuRmllbGRQb3NpdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdmFpbGFibGVMb2NhbGVzIgorIHJldHVybj0iamF2YS51dGlsLkxvY2FsZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3VycmVuY3kiCisgcmV0dXJuPSJqYXZhLnV0aWwuQ3VycmVuY3kiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3VycmVuY3lJbnN0YW5jZSIKKyByZXR1cm49ImphdmEudGV4dC5OdW1iZXJGb3JtYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEN1cnJlbmN5SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnRleHQuTnVtYmVyRm9ybWF0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsZSIgdHlwZT0iamF2YS51dGlsLkxvY2FsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImphdmEudGV4dC5OdW1iZXJGb3JtYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YS50ZXh0Lk51bWJlckZvcm1hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbGUiIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW50ZWdlckluc3RhbmNlIgorIHJldHVybj0iamF2YS50ZXh0Lk51bWJlckZvcm1hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW50ZWdlckluc3RhbmNlIgorIHJldHVybj0iamF2YS50ZXh0Lk51bWJlckZvcm1hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbGUiIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF4aW11bUZyYWN0aW9uRGlnaXRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1heGltdW1JbnRlZ2VyRGlnaXRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1pbmltdW1GcmFjdGlvbkRpZ2l0cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNaW5pbXVtSW50ZWdlckRpZ2l0cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROdW1iZXJJbnN0YW5jZSIKKyByZXR1cm49ImphdmEudGV4dC5OdW1iZXJGb3JtYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE51bWJlckluc3RhbmNlIgorIHJldHVybj0iamF2YS50ZXh0Lk51bWJlckZvcm1hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbGUiIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGVyY2VudEluc3RhbmNlIgorIHJldHVybj0iamF2YS50ZXh0Lk51bWJlckZvcm1hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGVyY2VudEluc3RhbmNlIgorIHJldHVybj0iamF2YS50ZXh0Lk51bWJlckZvcm1hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbGUiIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNHcm91cGluZ1VzZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUGFyc2VJbnRlZ2VyT25seSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuTnVtYmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhcnNlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnRleHQuUGFyc2VFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuTnVtYmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zaXRpb24iIHR5cGU9ImphdmEudGV4dC5QYXJzZVBvc2l0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlT2JqZWN0IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJqYXZhLnRleHQuUGFyc2VQb3NpdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDdXJyZW5jeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnJlbmN5IiB0eXBlPSJqYXZhLnV0aWwuQ3VycmVuY3kiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0R3JvdXBpbmdVc2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWF4aW11bUZyYWN0aW9uRGlnaXRzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNYXhpbXVtSW50ZWdlckRpZ2l0cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWluaW11bUZyYWN0aW9uRGlnaXRzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNaW5pbXVtSW50ZWdlckRpZ2l0cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGFyc2VJbnRlZ2VyT25seSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iRlJBQ1RJT05fRklFTEQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklOVEVHRVJfRklFTEQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJOdW1iZXJGb3JtYXQuRmllbGQiCisgZXh0ZW5kcz0iamF2YS50ZXh0LkZvcm1hdC5GaWVsZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTnVtYmVyRm9ybWF0LkZpZWxkIgorIHR5cGU9ImphdmEudGV4dC5OdW1iZXJGb3JtYXQuRmllbGQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9IkNVUlJFTkNZIgorIHR5cGU9ImphdmEudGV4dC5OdW1iZXJGb3JtYXQuRmllbGQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVDSU1BTF9TRVBBUkFUT1IiCisgdHlwZT0iamF2YS50ZXh0Lk51bWJlckZvcm1hdC5GaWVsZCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFBPTkVOVCIKKyB0eXBlPSJqYXZhLnRleHQuTnVtYmVyRm9ybWF0LkZpZWxkIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYUE9ORU5UX1NJR04iCisgdHlwZT0iamF2YS50ZXh0Lk51bWJlckZvcm1hdC5GaWVsZCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFBPTkVOVF9TWU1CT0wiCisgdHlwZT0iamF2YS50ZXh0Lk51bWJlckZvcm1hdC5GaWVsZCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGUkFDVElPTiIKKyB0eXBlPSJqYXZhLnRleHQuTnVtYmVyRm9ybWF0LkZpZWxkIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdST1VQSU5HX1NFUEFSQVRPUiIKKyB0eXBlPSJqYXZhLnRleHQuTnVtYmVyRm9ybWF0LkZpZWxkIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklOVEVHRVIiCisgdHlwZT0iamF2YS50ZXh0Lk51bWJlckZvcm1hdC5GaWVsZCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQRVJDRU5UIgorIHR5cGU9ImphdmEudGV4dC5OdW1iZXJGb3JtYXQuRmllbGQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEVSTUlMTEUiCisgdHlwZT0iamF2YS50ZXh0Lk51bWJlckZvcm1hdC5GaWVsZCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTSUdOIgorIHR5cGU9ImphdmEudGV4dC5OdW1iZXJGb3JtYXQuRmllbGQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlBhcnNlRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQYXJzZUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnRleHQuUGFyc2VFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0RXJyb3JPZmZzZXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUGFyc2VQb3NpdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGFyc2VQb3NpdGlvbiIKKyB0eXBlPSJqYXZhLnRleHQuUGFyc2VQb3NpdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRFcnJvckluZGV4IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluZGV4IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVycm9ySW5kZXgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEluZGV4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSdWxlQmFzZWRDb2xsYXRvciIKKyBleHRlbmRzPSJqYXZhLnRleHQuQ29sbGF0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSdWxlQmFzZWRDb2xsYXRvciIKKyB0eXBlPSJqYXZhLnRleHQuUnVsZUJhc2VkQ29sbGF0b3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJydWxlcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFyc2VFeGNlcHRpb24iIHR5cGU9ImphdmEudGV4dC5QYXJzZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNvbXBhcmUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvciIKKyByZXR1cm49ImphdmEudGV4dC5Db2xsYXRpb25FbGVtZW50SXRlcmF0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0iamF2YS50ZXh0LkNoYXJhY3Rlckl0ZXJhdG9yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbGxhdGlvbkVsZW1lbnRJdGVyYXRvciIKKyByZXR1cm49ImphdmEudGV4dC5Db2xsYXRpb25FbGVtZW50SXRlcmF0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb2xsYXRpb25LZXkiCisgcmV0dXJuPSJqYXZhLnRleHQuQ29sbGF0aW9uS2V5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UnVsZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc2hDb2RlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNpbXBsZURhdGVGb3JtYXQiCisgZXh0ZW5kcz0iamF2YS50ZXh0LkRhdGVGb3JtYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTaW1wbGVEYXRlRm9ybWF0IgorIHR5cGU9ImphdmEudGV4dC5TaW1wbGVEYXRlRm9ybWF0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2ltcGxlRGF0ZUZvcm1hdCIKKyB0eXBlPSJqYXZhLnRleHQuU2ltcGxlRGF0ZUZvcm1hdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdHRlcm4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNpbXBsZURhdGVGb3JtYXQiCisgdHlwZT0iamF2YS50ZXh0LlNpbXBsZURhdGVGb3JtYXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZW1wbGF0ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEudGV4dC5EYXRlRm9ybWF0U3ltYm9scyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2ltcGxlRGF0ZUZvcm1hdCIKKyB0eXBlPSJqYXZhLnRleHQuU2ltcGxlRGF0ZUZvcm1hdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlbXBsYXRlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbGUiIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhcHBseUxvY2FsaXplZFBhdHRlcm4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZW1wbGF0ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBseVBhdHRlcm4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZW1wbGF0ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRlIiB0eXBlPSJqYXZhLnV0aWwuRGF0ZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZFBvcyIgdHlwZT0iamF2YS50ZXh0LkZpZWxkUG9zaXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0MkRpZ2l0WWVhclN0YXJ0IgorIHJldHVybj0iamF2YS51dGlsLkRhdGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGF0ZUZvcm1hdFN5bWJvbHMiCisgcmV0dXJuPSJqYXZhLnRleHQuRGF0ZUZvcm1hdFN5bWJvbHMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJqYXZhLnV0aWwuRGF0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3NpdGlvbiIgdHlwZT0iamF2YS50ZXh0LlBhcnNlUG9zaXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0MkRpZ2l0WWVhclN0YXJ0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0ZSIgdHlwZT0iamF2YS51dGlsLkRhdGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGF0ZUZvcm1hdFN5bWJvbHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS50ZXh0LkRhdGVGb3JtYXRTeW1ib2xzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvTG9jYWxpemVkUGF0dGVybiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9QYXR0ZXJuIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudGV4dC5DaGFyYWN0ZXJJdGVyYXRvciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IiCisgdHlwZT0iamF2YS50ZXh0LlN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN0cmluZ0NoYXJhY3Rlckl0ZXJhdG9yIgorIHR5cGU9ImphdmEudGV4dC5TdHJpbmdDaGFyYWN0ZXJJdGVyYXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdHJpbmdDaGFyYWN0ZXJJdGVyYXRvciIKKyB0eXBlPSJqYXZhLnRleHQuU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3VycmVudCIKKyByZXR1cm49ImNoYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmlyc3QiCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJlZ2luSW5kZXgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RW5kSW5kZXgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5kZXgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGFzdCIKKyByZXR1cm49ImNoYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV4dCIKKyByZXR1cm49ImNoYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJldmlvdXMiCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEluZGV4IgorIHJldHVybj0iY2hhciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUZXh0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJqYXZhLnV0aWwiCis+Cis8Y2xhc3MgbmFtZT0iQWJzdHJhY3RDb2xsZWN0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLkNvbGxlY3Rpb24iPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFic3RyYWN0Q29sbGVjdGlvbiIKKyB0eXBlPSJqYXZhLnV0aWwuQWJzdHJhY3RDb2xsZWN0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRBbGwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xsZWN0aW9uIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDs/IGV4dGVuZHMgRSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbnRhaW5zIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbnRhaW5zQWxsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sbGVjdGlvbiIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNFbXB0eSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXRlcmF0b3IiCisgcmV0dXJuPSJqYXZhLnV0aWwuSXRlcmF0b3ImbHQ7RSZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlQWxsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sbGVjdGlvbiIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmV0YWluQWxsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sbGVjdGlvbiIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvQXJyYXkiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0W10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9BcnJheSIKKyByZXR1cm49IlRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGVudHMiIHR5cGU9IlRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBYnN0cmFjdExpc3QiCisgZXh0ZW5kcz0iamF2YS51dGlsLkFic3RyYWN0Q29sbGVjdGlvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuTGlzdCI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzdHJhY3RMaXN0IgorIHR5cGU9ImphdmEudXRpbC5BYnN0cmFjdExpc3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZEFsbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbGxlY3Rpb24iIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0Oz8gZXh0ZW5kcyBFJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJFIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5kZXhPZiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Iml0ZXJhdG9yIgorIHJldHVybj0iamF2YS51dGlsLkl0ZXJhdG9yJmx0O0UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxhc3RJbmRleE9mIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGlzdEl0ZXJhdG9yIgorIHJldHVybj0iamF2YS51dGlsLkxpc3RJdGVyYXRvciZsdDtFJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsaXN0SXRlcmF0b3IiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdEl0ZXJhdG9yJmx0O0UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZSIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlUmFuZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXQiCisgcmV0dXJuPSJFIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3ViTGlzdCIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O0UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Im1vZENvdW50IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9InRydWUiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFic3RyYWN0TWFwIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLk1hcCI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzdHJhY3RNYXAiCisgdHlwZT0iamF2YS51dGlsLkFic3RyYWN0TWFwIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb250YWluc0tleSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb250YWluc1ZhbHVlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW50cnlTZXQiCisgcmV0dXJuPSJqYXZhLnV0aWwuU2V0Jmx0O2phdmEudXRpbC5NYXAuRW50cnkmbHQ7SywgViZndDsmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iViIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRW1wdHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImtleVNldCIKKyByZXR1cm49ImphdmEudXRpbC5TZXQmbHQ7SyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0iViIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJLIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iViI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRBbGwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXAiIHR5cGU9ImphdmEudXRpbC5NYXAmbHQ7PyBleHRlbmRzIEssID8gZXh0ZW5kcyBWJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmUiCisgcmV0dXJuPSJWIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDtWJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBYnN0cmFjdFF1ZXVlIgorIGV4dGVuZHM9ImphdmEudXRpbC5BYnN0cmFjdENvbGxlY3Rpb24iCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLlF1ZXVlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBYnN0cmFjdFF1ZXVlIgorIHR5cGU9ImphdmEudXRpbC5BYnN0cmFjdFF1ZXVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImVsZW1lbnQiCisgcmV0dXJuPSJFIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZSIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQWJzdHJhY3RTZXF1ZW50aWFsTGlzdCIKKyBleHRlbmRzPSJqYXZhLnV0aWwuQWJzdHJhY3RMaXN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBYnN0cmFjdFNlcXVlbnRpYWxMaXN0IgorIHR5cGU9ImphdmEudXRpbC5BYnN0cmFjdFNlcXVlbnRpYWxMaXN0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGlzdEl0ZXJhdG9yIgorIHJldHVybj0iamF2YS51dGlsLkxpc3RJdGVyYXRvciZsdDtFJmd0OyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFic3RyYWN0U2V0IgorIGV4dGVuZHM9ImphdmEudXRpbC5BYnN0cmFjdENvbGxlY3Rpb24iCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLlNldCI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzdHJhY3RTZXQiCisgdHlwZT0iamF2YS51dGlsLkFic3RyYWN0U2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFycmF5TGlzdCIKKyBleHRlbmRzPSJqYXZhLnV0aWwuQWJzdHJhY3RMaXN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ2xvbmVhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC5SYW5kb21BY2Nlc3MiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFycmF5TGlzdCIKKyB0eXBlPSJqYXZhLnV0aWwuQXJyYXlMaXN0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FwYWNpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXJyYXlMaXN0IgorIHR5cGU9ImphdmEudXRpbC5BcnJheUxpc3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBcnJheUxpc3QiCisgdHlwZT0iamF2YS51dGlsLkFycmF5TGlzdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbGxlY3Rpb24iIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0Oz8gZXh0ZW5kcyBFJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbnN1cmVDYXBhY2l0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbmltdW1DYXBhY2l0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0cmltVG9TaXplIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBcnJheXMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJhc0xpc3QiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDtUJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iVC4uLiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJiaW5hcnlTZWFyY2giCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJ5dGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYmluYXJ5U2VhcmNoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImJpbmFyeVNlYXJjaCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iZG91YmxlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYmluYXJ5U2VhcmNoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYmluYXJ5U2VhcmNoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJiaW5hcnlTZWFyY2giCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImxvbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYmluYXJ5U2VhcmNoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImJpbmFyeVNlYXJjaCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iVFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29tcGFyYXRvciIgdHlwZT0iamF2YS51dGlsLkNvbXBhcmF0b3ImbHQ7PyBzdXBlciBUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJiaW5hcnlTZWFyY2giCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9InNob3J0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJzaG9ydCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWVwRXF1YWxzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheTEiIHR5cGU9ImphdmEubGFuZy5PYmplY3RbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkyIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVlcEhhc2hDb2RlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVlcFRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVxdWFscyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkxIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5MiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVxdWFscyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkxIiB0eXBlPSJzaG9ydFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheTIiIHR5cGU9InNob3J0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXF1YWxzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheTEiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkyIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXF1YWxzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheTEiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheTIiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVxdWFscyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkxIiB0eXBlPSJsb25nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5MiIgdHlwZT0ibG9uZ1tdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVxdWFscyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkxIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheTIiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXF1YWxzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheTEiIHR5cGU9ImRvdWJsZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheTIiIHR5cGU9ImRvdWJsZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVxdWFscyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkxIiB0eXBlPSJib29sZWFuW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5MiIgdHlwZT0iYm9vbGVhbltdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVxdWFscyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkxIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5MiIgdHlwZT0iamF2YS5sYW5nLk9iamVjdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbGwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJieXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbGwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYnl0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0ic2hvcnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9InNob3J0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbGwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJzaG9ydFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9InNob3J0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbGwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbGwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmlsbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0ibG9uZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0ibG9uZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmlsbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iZG91YmxlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmlsbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImRvdWJsZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iYm9vbGVhbltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iYm9vbGVhbltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmlsbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImphdmEubGFuZy5PYmplY3RbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmlsbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImphdmEubGFuZy5PYmplY3RbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc2hDb2RlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJib29sZWFuW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzaENvZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc2hDb2RlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJzaG9ydFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc2hDb2RlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzaENvZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNoQ29kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0ibG9uZ1tdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc2hDb2RlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc2hDb2RlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJkb3VibGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNoQ29kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNvcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic29ydCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic29ydCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzb3J0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzb3J0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iZG91YmxlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic29ydCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImRvdWJsZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzb3J0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzb3J0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic29ydCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNvcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic29ydCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImxvbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzb3J0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0ibG9uZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzb3J0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0ic2hvcnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzb3J0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0ic2hvcnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic29ydCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImphdmEubGFuZy5PYmplY3RbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzb3J0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzb3J0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iVFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29tcGFyYXRvciIgdHlwZT0iamF2YS51dGlsLkNvbXBhcmF0b3ImbHQ7PyBzdXBlciBUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzb3J0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iVFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb21wYXJhdG9yIiB0eXBlPSJqYXZhLnV0aWwuQ29tcGFyYXRvciZsdDs/IHN1cGVyIFQmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iYm9vbGVhbltdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iZG91YmxlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJsb25nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJzaG9ydFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcnJheSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJpdFNldCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ2xvbmVhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCaXRTZXQiCisgdHlwZT0iamF2YS51dGlsLkJpdFNldCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJpdFNldCIKKyB0eXBlPSJqYXZhLnV0aWwuQml0U2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmJpdHMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJzIiB0eXBlPSJqYXZhLnV0aWwuQml0U2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFuZE5vdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJzIiB0eXBlPSJqYXZhLnV0aWwuQml0U2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNhcmRpbmFsaXR5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zMSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3MyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZsaXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmbGlwIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zMSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3MyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iamF2YS51dGlsLkJpdFNldCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zMSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3MyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW50ZXJzZWN0cyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJzIiB0eXBlPSJqYXZhLnV0aWwuQml0U2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRW1wdHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxlbmd0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0Q2xlYXJCaXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHRTZXRCaXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnMiIHR5cGU9ImphdmEudXRpbC5CaXRTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3MxIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvczIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3MxIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvczIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ieG9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnMiIHR5cGU9ImphdmEudXRpbC5CaXRTZXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2FsZW5kYXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ2xvbmVhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5Db21wYXJhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDYWxlbmRhciIKKyB0eXBlPSJqYXZhLnV0aWwuQ2FsZW5kYXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDYWxlbmRhciIKKyB0eXBlPSJqYXZhLnV0aWwuQ2FsZW5kYXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lem9uZSIgdHlwZT0iamF2YS51dGlsLlRpbWVab25lIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbGUiIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpZWxkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWZ0ZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYWxlbmRhciIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJiZWZvcmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYWxlbmRhciIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmllbGQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcGFyZVRvIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbm90aGVyQ2FsZW5kYXIiIHR5cGU9ImphdmEudXRpbC5DYWxlbmRhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wbGV0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcHV0ZUZpZWxkcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wdXRlVGltZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpZWxkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWN0dWFsTWF4aW11bSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmllbGQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBY3R1YWxNaW5pbXVtIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF2YWlsYWJsZUxvY2FsZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTG9jYWxlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpcnN0RGF5T2ZXZWVrIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdyZWF0ZXN0TWluaW11bSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YS51dGlsLkNhbGVuZGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImphdmEudXRpbC5DYWxlbmRhciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsZSIgdHlwZT0iamF2YS51dGlsLkxvY2FsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImphdmEudXRpbC5DYWxlbmRhciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWV6b25lIiB0eXBlPSJqYXZhLnV0aWwuVGltZVpvbmUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnV0aWwuQ2FsZW5kYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lem9uZSIgdHlwZT0iamF2YS51dGlsLlRpbWVab25lIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbGUiIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGVhc3RNYXhpbXVtIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpZWxkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF4aW11bSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1pbmltYWxEYXlzSW5GaXJzdFdlZWsiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWluaW11bSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRpbWUiCisgcmV0dXJuPSJqYXZhLnV0aWwuRGF0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRpbWVJbk1pbGxpcyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGltZVpvbmUiCisgcmV0dXJuPSJqYXZhLnV0aWwuVGltZVpvbmUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW50ZXJuYWxHZXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmllbGQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0xlbmllbnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU2V0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJvbGwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJvbGwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpZWxkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluY3JlbWVudCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieWVhciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb250aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InllYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9udGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhvdXJPZkRheSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaW51dGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InllYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9udGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhvdXJPZkRheSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaW51dGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2Vjb25kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Rmlyc3REYXlPZldlZWsiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldExlbmllbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNaW5pbWFsRGF5c0luRmlyc3RXZWVrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUaW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRlIiB0eXBlPSJqYXZhLnV0aWwuRGF0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUaW1lSW5NaWxsaXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtaWxsaXNlY29uZHMiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGltZVpvbmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lem9uZSIgdHlwZT0iamF2YS51dGlsLlRpbWVab25lIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQU0iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFNX1BNIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBUFJJTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVVHVVNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVlfT0ZfTU9OVEgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRBWV9PRl9XRUVLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVlfT0ZfV0VFS19JTl9NT05USCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFZX09GX1lFQVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFQ0VNQkVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRFNUX09GRlNFVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVSQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkVCUlVBUlkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZJRUxEX0NPVU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRlJJREFZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIT1VSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSE9VUl9PRl9EQVkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJKQU5VQVJZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJKVUxZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJKVU5FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNQVJDSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUFZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNSUxMSVNFQ09ORCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1JTlVURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1PTkRBWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTU9OVEgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5PVkVNQkVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT0NUT0JFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUE0iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNBVFVSREFZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRUNPTkQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTRVBURU1CRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNVTkRBWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEhVUlNEQVkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRVRVNEQVkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVOREVDSU1CRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXRURORVNEQVkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldFRUtfT0ZfTU9OVEgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldFRUtfT0ZfWUVBUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iWUVBUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iWk9ORV9PRkZTRVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhcmVGaWVsZHNTZXQiCisgdHlwZT0iYm9vbGVhbiIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImZpZWxkcyIKKyB0eXBlPSJpbnRbXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImlzU2V0IgorIHR5cGU9ImJvb2xlYW5bXSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImlzVGltZVNldCIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0idGltZSIKKyB0eXBlPSJsb25nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDb2xsZWN0aW9uIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5JdGVyYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImFkZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZEFsbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sbGVjdGlvbiIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyBleHRlbmRzIEUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbnRhaW5zIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29udGFpbnNBbGwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbGxlY3Rpb24iIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0Oz8mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVxdWFscyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc2hDb2RlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNFbXB0eSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpdGVyYXRvciIKKyByZXR1cm49ImphdmEudXRpbC5JdGVyYXRvciZsdDtFJmd0OyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZUFsbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sbGVjdGlvbiIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmV0YWluQWxsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xsZWN0aW9uIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9BcnJheSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3RbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvQXJyYXkiCisgcmV0dXJuPSJUW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9IlRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ29sbGVjdGlvbnMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJhZGRBbGwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0Oz8gc3VwZXIgVCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImEiIHR5cGU9IlQuLi4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYmluYXJ5U2VhcmNoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3QiIHR5cGU9ImphdmEudXRpbC5MaXN0Jmx0Oz8gZXh0ZW5kcyBqYXZhLmxhbmcuQ29tcGFyYWJsZSZsdDs/IHN1cGVyIFQmZ3Q7Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJUIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImJpbmFyeVNlYXJjaCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0IiB0eXBlPSJqYXZhLnV0aWwuTGlzdCZsdDs/IGV4dGVuZHMgVCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29tcGFyYXRvciIgdHlwZT0iamF2YS51dGlsLkNvbXBhcmF0b3ImbHQ7PyBzdXBlciBUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGVja2VkQ29sbGVjdGlvbiIKKyByZXR1cm49ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0O0UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0O0UmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7RSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tlZExpc3QiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDtFJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0IiB0eXBlPSJqYXZhLnV0aWwuTGlzdCZsdDtFJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0O0UmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrZWRNYXAiCisgcmV0dXJuPSJqYXZhLnV0aWwuTWFwJmx0O0ssIFYmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im0iIHR5cGU9ImphdmEudXRpbC5NYXAmbHQ7SywgViZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtleVR5cGUiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDtLJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWVUeXBlIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7ViZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tlZFNldCIKKyByZXR1cm49ImphdmEudXRpbC5TZXQmbHQ7RSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS51dGlsLlNldCZsdDtFJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0O0UmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrZWRTb3J0ZWRNYXAiCisgcmV0dXJuPSJqYXZhLnV0aWwuU29ydGVkTWFwJmx0O0ssIFYmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im0iIHR5cGU9ImphdmEudXRpbC5Tb3J0ZWRNYXAmbHQ7SywgViZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtleVR5cGUiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDtLJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWVUeXBlIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7ViZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tlZFNvcnRlZFNldCIKKyByZXR1cm49ImphdmEudXRpbC5Tb3J0ZWRTZXQmbHQ7RSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS51dGlsLlNvcnRlZFNldCZsdDtFJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0O0UmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvcHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc3RpbmF0aW9uIiB0eXBlPSJqYXZhLnV0aWwuTGlzdCZsdDs/IHN1cGVyIFQmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmEudXRpbC5MaXN0Jmx0Oz8gZXh0ZW5kcyBUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkaXNqb2ludCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYzEiIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0Oz8mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjMiIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW1wdHlMaXN0IgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7VCZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVtcHR5TWFwIgorIHJldHVybj0iamF2YS51dGlsLk1hcCZsdDtLLCBWJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW1wdHlTZXQiCisgcmV0dXJuPSJqYXZhLnV0aWwuU2V0Jmx0O1QmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbnVtZXJhdGlvbiIKKyByZXR1cm49ImphdmEudXRpbC5FbnVtZXJhdGlvbiZsdDtUJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xsZWN0aW9uIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDtUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0IiB0eXBlPSJqYXZhLnV0aWwuTGlzdCZsdDs/IHN1cGVyIFQmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9IlQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZnJlcXVlbmN5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0Oz8mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluZGV4T2ZTdWJMaXN0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3QiIHR5cGU9ImphdmEudXRpbC5MaXN0Jmx0Oz8mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdWJsaXN0IiB0eXBlPSJqYXZhLnV0aWwuTGlzdCZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsYXN0SW5kZXhPZlN1Ykxpc3QiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdCIgdHlwZT0iamF2YS51dGlsLkxpc3QmbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN1Ymxpc3QiIHR5cGU9ImphdmEudXRpbC5MaXN0Jmx0Oz8mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxpc3QiCisgcmV0dXJuPSJqYXZhLnV0aWwuQXJyYXlMaXN0Jmx0O1QmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVudW1lcmF0aW9uIiB0eXBlPSJqYXZhLnV0aWwuRW51bWVyYXRpb24mbHQ7VCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWF4IgorIHJldHVybj0iVCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xsZWN0aW9uIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDs/IGV4dGVuZHMgVCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWF4IgorIHJldHVybj0iVCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xsZWN0aW9uIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDs/IGV4dGVuZHMgVCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbXBhcmF0b3IiIHR5cGU9ImphdmEudXRpbC5Db21wYXJhdG9yJmx0Oz8gc3VwZXIgVCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWluIgorIHJldHVybj0iVCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xsZWN0aW9uIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDs/IGV4dGVuZHMgVCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWluIgorIHJldHVybj0iVCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xsZWN0aW9uIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDs/IGV4dGVuZHMgVCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbXBhcmF0b3IiIHR5cGU9ImphdmEudXRpbC5Db21wYXJhdG9yJmx0Oz8gc3VwZXIgVCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibkNvcGllcyIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O1QmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9IlQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVwbGFjZUFsbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdCIgdHlwZT0iamF2YS51dGlsLkxpc3QmbHQ7VCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9iaiIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqMiIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXZlcnNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0IiB0eXBlPSJqYXZhLnV0aWwuTGlzdCZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXZlcnNlT3JkZXIiCisgcmV0dXJuPSJqYXZhLnV0aWwuQ29tcGFyYXRvciZsdDtUJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJldmVyc2VPcmRlciIKKyByZXR1cm49ImphdmEudXRpbC5Db21wYXJhdG9yJmx0O1QmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImphdmEudXRpbC5Db21wYXJhdG9yJmx0O1QmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJvdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibHN0IiB0eXBlPSJqYXZhLnV0aWwuTGlzdCZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlzdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNodWZmbGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3QiIHR5cGU9ImphdmEudXRpbC5MaXN0Jmx0Oz8mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNodWZmbGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3QiIHR5cGU9ImphdmEudXRpbC5MaXN0Jmx0Oz8mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyYW5kb20iIHR5cGU9ImphdmEudXRpbC5SYW5kb20iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2luZ2xldG9uIgorIHJldHVybj0iamF2YS51dGlsLlNldCZsdDtFJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2luZ2xldG9uTGlzdCIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O0UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaW5nbGV0b25NYXAiCisgcmV0dXJuPSJqYXZhLnV0aWwuTWFwJmx0O0ssIFYmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iSyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9IlYiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic29ydCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdCIgdHlwZT0iamF2YS51dGlsLkxpc3QmbHQ7VCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic29ydCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdCIgdHlwZT0iamF2YS51dGlsLkxpc3QmbHQ7VCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbXBhcmF0b3IiIHR5cGU9ImphdmEudXRpbC5Db21wYXJhdG9yJmx0Oz8gc3VwZXIgVCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3dhcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdCIgdHlwZT0iamF2YS51dGlsLkxpc3QmbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4MSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleDIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzeW5jaHJvbml6ZWRDb2xsZWN0aW9uIgorIHJldHVybj0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7VCZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sbGVjdGlvbiIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7VCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3luY2hyb25pemVkTGlzdCIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O1QmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3QiIHR5cGU9ImphdmEudXRpbC5MaXN0Jmx0O1QmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN5bmNocm9uaXplZE1hcCIKKyByZXR1cm49ImphdmEudXRpbC5NYXAmbHQ7SywgViZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFwIiB0eXBlPSJqYXZhLnV0aWwuTWFwJmx0O0ssIFYmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN5bmNocm9uaXplZFNldCIKKyByZXR1cm49ImphdmEudXRpbC5TZXQmbHQ7RSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2V0IiB0eXBlPSJqYXZhLnV0aWwuU2V0Jmx0O0UmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN5bmNocm9uaXplZFNvcnRlZE1hcCIKKyByZXR1cm49ImphdmEudXRpbC5Tb3J0ZWRNYXAmbHQ7SywgViZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFwIiB0eXBlPSJqYXZhLnV0aWwuU29ydGVkTWFwJmx0O0ssIFYmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN5bmNocm9uaXplZFNvcnRlZFNldCIKKyByZXR1cm49ImphdmEudXRpbC5Tb3J0ZWRTZXQmbHQ7RSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2V0IiB0eXBlPSJqYXZhLnV0aWwuU29ydGVkU2V0Jmx0O0UmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVubW9kaWZpYWJsZUNvbGxlY3Rpb24iCisgcmV0dXJuPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDtFJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xsZWN0aW9uIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDs/IGV4dGVuZHMgRSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5tb2RpZmlhYmxlTGlzdCIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O0UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3QiIHR5cGU9ImphdmEudXRpbC5MaXN0Jmx0Oz8gZXh0ZW5kcyBFJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bm1vZGlmaWFibGVNYXAiCisgcmV0dXJuPSJqYXZhLnV0aWwuTWFwJmx0O0ssIFYmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1hcCIgdHlwZT0iamF2YS51dGlsLk1hcCZsdDs/IGV4dGVuZHMgSywgPyBleHRlbmRzIFYmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVubW9kaWZpYWJsZVNldCIKKyByZXR1cm49ImphdmEudXRpbC5TZXQmbHQ7RSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2V0IiB0eXBlPSJqYXZhLnV0aWwuU2V0Jmx0Oz8gZXh0ZW5kcyBFJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bm1vZGlmaWFibGVTb3J0ZWRNYXAiCisgcmV0dXJuPSJqYXZhLnV0aWwuU29ydGVkTWFwJmx0O0ssIFYmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1hcCIgdHlwZT0iamF2YS51dGlsLlNvcnRlZE1hcCZsdDtLLCA/IGV4dGVuZHMgViZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5tb2RpZmlhYmxlU29ydGVkU2V0IgorIHJldHVybj0iamF2YS51dGlsLlNvcnRlZFNldCZsdDtFJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZXQiIHR5cGU9ImphdmEudXRpbC5Tb3J0ZWRTZXQmbHQ7RSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJFTVBUWV9MSVNUIgorIHR5cGU9ImphdmEudXRpbC5MaXN0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVNUFRZX01BUCIKKyB0eXBlPSJqYXZhLnV0aWwuTWFwIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVNUFRZX1NFVCIKKyB0eXBlPSJqYXZhLnV0aWwuU2V0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ29tcGFyYXRvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNvbXBhcmUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0MSIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0MiIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlcXVhbHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ29uY3VycmVudE1vZGlmaWNhdGlvbkV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbmN1cnJlbnRNb2RpZmljYXRpb25FeGNlcHRpb24iCisgdHlwZT0iamF2YS51dGlsLkNvbmN1cnJlbnRNb2RpZmljYXRpb25FeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb25jdXJyZW50TW9kaWZpY2F0aW9uRXhjZXB0aW9uIgorIHR5cGU9ImphdmEudXRpbC5Db25jdXJyZW50TW9kaWZpY2F0aW9uRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkN1cnJlbmN5IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRDdXJyZW5jeUNvZGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlZmF1bHRGcmFjdGlvbkRpZ2l0cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImphdmEudXRpbC5DdXJyZW5jeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJyZW5jeUNvZGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZhLnV0aWwuQ3VycmVuY3kiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxlIiB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN5bWJvbCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3ltYm9sIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxlIiB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRhdGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ29tcGFyYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGF0ZSIKKyB0eXBlPSJqYXZhLnV0aWwuRGF0ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRhdGUiCisgdHlwZT0iamF2YS51dGlsLkRhdGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InllYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9udGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRhdGUiCisgdHlwZT0iamF2YS51dGlsLkRhdGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InllYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9udGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhvdXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWludXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRhdGUiCisgdHlwZT0iamF2YS51dGlsLkRhdGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InllYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9udGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhvdXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWludXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlY29uZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEYXRlIgorIHR5cGU9ImphdmEudXRpbC5EYXRlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWlsbGlzZWNvbmRzIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEYXRlIgorIHR5cGU9ImphdmEudXRpbC5EYXRlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJVVEMiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieWVhciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb250aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaG91ciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaW51dGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2Vjb25kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWZ0ZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRlIiB0eXBlPSJqYXZhLnV0aWwuRGF0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJiZWZvcmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRlIiB0eXBlPSJqYXZhLnV0aWwuRGF0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcGFyZVRvIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRlIiB0eXBlPSJqYXZhLnV0aWwuRGF0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREYXRlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGF5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SG91cnMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNaW51dGVzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TW9udGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZWNvbmRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGltZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGltZXpvbmVPZmZzZXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRZZWFyIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRheSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEhvdXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3VyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWludXRlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWludXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TW9udGgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vbnRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2Vjb25kcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2Vjb25kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGltZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbGxpc2Vjb25kcyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRZZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ5ZWFyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9HTVRTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9Mb2NhbGVTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRGljdGlvbmFyeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEaWN0aW9uYXJ5IgorIHR5cGU9ImphdmEudXRpbC5EaWN0aW9uYXJ5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImVsZW1lbnRzIgorIHJldHVybj0iamF2YS51dGlsLkVudW1lcmF0aW9uJmx0O1YmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iViIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNFbXB0eSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJrZXlzIgorIHJldHVybj0iamF2YS51dGlsLkVudW1lcmF0aW9uJmx0O0smZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0iViIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9IksiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJWIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZSIKKyByZXR1cm49IlYiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEdXBsaWNhdGVGb3JtYXRGbGFnc0V4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLnV0aWwuSWxsZWdhbEZvcm1hdEV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkR1cGxpY2F0ZUZvcm1hdEZsYWdzRXhjZXB0aW9uIgorIHR5cGU9ImphdmEudXRpbC5EdXBsaWNhdGVGb3JtYXRGbGFnc0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImYiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRGbGFncyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRW1wdHlTdGFja0V4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkVtcHR5U3RhY2tFeGNlcHRpb24iCisgdHlwZT0iamF2YS51dGlsLkVtcHR5U3RhY2tFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRW51bU1hcCIKKyBleHRlbmRzPSJqYXZhLnV0aWwuQWJzdHJhY3RNYXAiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5DbG9uZWFibGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLk1hcCI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iRW51bU1hcCIKKyB0eXBlPSJqYXZhLnV0aWwuRW51bU1hcCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleVR5cGUiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDtLJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRW51bU1hcCIKKyB0eXBlPSJqYXZhLnV0aWwuRW51bU1hcCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1hcCIgdHlwZT0iamF2YS51dGlsLkVudW1NYXAmbHQ7SywgPyBleHRlbmRzIFYmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFbnVtTWFwIgorIHR5cGU9ImphdmEudXRpbC5FbnVtTWFwIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFwIiB0eXBlPSJqYXZhLnV0aWwuTWFwJmx0O0ssID8gZXh0ZW5kcyBWJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS51dGlsLkVudW1NYXAmbHQ7SywgViZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW50cnlTZXQiCisgcmV0dXJuPSJqYXZhLnV0aWwuU2V0Jmx0O2phdmEudXRpbC5NYXAuRW50cnkmbHQ7SywgViZndDsmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkVudW1TZXQiCisgZXh0ZW5kcz0iamF2YS51dGlsLkFic3RyYWN0U2V0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5DbG9uZWFibGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJhbGxPZiIKKyByZXR1cm49ImphdmEudXRpbC5FbnVtU2V0Jmx0O0UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVsZW1lbnRUeXBlIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7RSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLnV0aWwuRW51bVNldCZsdDtFJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wbGVtZW50T2YiCisgcmV0dXJuPSJqYXZhLnV0aWwuRW51bVNldCZsdDtFJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLnV0aWwuRW51bVNldCZsdDtFJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb3B5T2YiCisgcmV0dXJuPSJqYXZhLnV0aWwuRW51bVNldCZsdDtFJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLnV0aWwuRW51bVNldCZsdDtFJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb3B5T2YiCisgcmV0dXJuPSJqYXZhLnV0aWwuRW51bVNldCZsdDtFJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDtFJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJub25lT2YiCisgcmV0dXJuPSJqYXZhLnV0aWwuRW51bVNldCZsdDtFJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbGVtZW50VHlwZSIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0O0UmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9mIgorIHJldHVybj0iamF2YS51dGlsLkVudW1TZXQmbHQ7RSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZSIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvZiIKKyByZXR1cm49ImphdmEudXRpbC5FbnVtU2V0Jmx0O0UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImUxIiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlMiIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvZiIKKyByZXR1cm49ImphdmEudXRpbC5FbnVtU2V0Jmx0O0UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImUxIiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlMiIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZTMiIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib2YiCisgcmV0dXJuPSJqYXZhLnV0aWwuRW51bVNldCZsdDtFJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlMSIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZTIiIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImUzIiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlNCIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvZiIKKyByZXR1cm49ImphdmEudXRpbC5FbnVtU2V0Jmx0O0UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImUxIiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlMiIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZTMiIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImU0IiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlNSIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvZiIKKyByZXR1cm49ImphdmEudXRpbC5FbnVtU2V0Jmx0O0UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdGhlcnMiIHR5cGU9IkUuLi4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmFuZ2UiCisgcmV0dXJuPSJqYXZhLnV0aWwuRW51bVNldCZsdDtFJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJFbnVtZXJhdGlvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Imhhc01vcmVFbGVtZW50cyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0RWxlbWVudCIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkV2ZW50TGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iRXZlbnRMaXN0ZW5lclByb3h5IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLkV2ZW50TGlzdGVuZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkV2ZW50TGlzdGVuZXJQcm94eSIKKyB0eXBlPSJqYXZhLnV0aWwuRXZlbnRMaXN0ZW5lclByb3h5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImphdmEudXRpbC5FdmVudExpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0TGlzdGVuZXIiCisgcmV0dXJuPSJqYXZhLnV0aWwuRXZlbnRMaXN0ZW5lciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJFdmVudE9iamVjdCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iRXZlbnRPYmplY3QiCisgdHlwZT0iamF2YS51dGlsLkV2ZW50T2JqZWN0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0U291cmNlIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9InNvdXJjZSIKKyB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0IgorIHRyYW5zaWVudD0idHJ1ZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRm9ybWF0RmxhZ3NDb252ZXJzaW9uTWlzbWF0Y2hFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS51dGlsLklsbGVnYWxGb3JtYXRFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGb3JtYXRGbGFnc0NvbnZlcnNpb25NaXNtYXRjaEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnV0aWwuRm9ybWF0RmxhZ3NDb252ZXJzaW9uTWlzbWF0Y2hFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udmVyc2lvbiIKKyByZXR1cm49ImNoYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmxhZ3MiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJGb3JtYXR0YWJsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdFRvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXR0ZXIiIHR5cGU9ImphdmEudXRpbC5Gb3JtYXR0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWdzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByZWNpc2lvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsRm9ybWF0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnV0aWwuSWxsZWdhbEZvcm1hdEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iRm9ybWF0dGFibGVGbGFncyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iQUxURVJOQVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMRUZUX0pVU1RJRlkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVQUEVSQ0FTRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkZvcm1hdHRlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uQ2xvc2VhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uRmx1c2hhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGb3JtYXR0ZXIiCisgdHlwZT0iamF2YS51dGlsLkZvcm1hdHRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZvcm1hdHRlciIKKyB0eXBlPSJqYXZhLnV0aWwuRm9ybWF0dGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYSIgdHlwZT0iamF2YS5sYW5nLkFwcGVuZGFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZvcm1hdHRlciIKKyB0eXBlPSJqYXZhLnV0aWwuRm9ybWF0dGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibCIgdHlwZT0iamF2YS51dGlsLkxvY2FsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRm9ybWF0dGVyIgorIHR5cGU9ImphdmEudXRpbC5Gb3JtYXR0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhIiB0eXBlPSJqYXZhLmxhbmcuQXBwZW5kYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibCIgdHlwZT0iamF2YS51dGlsLkxvY2FsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRm9ybWF0dGVyIgorIHR5cGU9ImphdmEudXRpbC5Gb3JtYXR0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRmlsZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRm9ybWF0dGVyIgorIHR5cGU9ImphdmEudXRpbC5Gb3JtYXR0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3NuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJGaWxlTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZvcm1hdHRlciIKKyB0eXBlPSJqYXZhLnV0aWwuRm9ybWF0dGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNzbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibCIgdHlwZT0iamF2YS51dGlsLkxvY2FsZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRmlsZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5VbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGb3JtYXR0ZXIiCisgdHlwZT0iamF2YS51dGlsLkZvcm1hdHRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGUiIHR5cGU9ImphdmEuaW8uRmlsZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRmlsZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRm9ybWF0dGVyIgorIHR5cGU9ImphdmEudXRpbC5Gb3JtYXR0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlIiB0eXBlPSJqYXZhLmlvLkZpbGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNzbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRmlsZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5VbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGb3JtYXR0ZXIiCisgdHlwZT0iamF2YS51dGlsLkZvcm1hdHRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGUiIHR5cGU9ImphdmEuaW8uRmlsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3NuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsIiB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJGaWxlTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZvcm1hdHRlciIKKyB0eXBlPSJqYXZhLnV0aWwuRm9ybWF0dGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3MiIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGb3JtYXR0ZXIiCisgdHlwZT0iamF2YS51dGlsLkZvcm1hdHRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9zIiB0eXBlPSJqYXZhLmlvLk91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3NuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZvcm1hdHRlciIKKyB0eXBlPSJqYXZhLnV0aWwuRm9ybWF0dGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3MiIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjc24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImwiIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRm9ybWF0dGVyIgorIHR5cGU9ImphdmEudXRpbC5Gb3JtYXR0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcyIgdHlwZT0iamF2YS5pby5QcmludFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb3NlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmbHVzaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0IgorIHJldHVybj0iamF2YS51dGlsLkZvcm1hdHRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9ybWF0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcmdzIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Li4uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdCIKKyByZXR1cm49ImphdmEudXRpbC5Gb3JtYXR0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImwiIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcm1hdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJncyIgdHlwZT0iamF2YS5sYW5nLk9iamVjdC4uLiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpb0V4Y2VwdGlvbiIKKyByZXR1cm49ImphdmEuaW8uSU9FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9jYWxlIgorIHJldHVybj0iamF2YS51dGlsLkxvY2FsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvdXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuQXBwZW5kYWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJGb3JtYXR0ZXIuQmlnRGVjaW1hbExheW91dEZvcm0iCisgZXh0ZW5kcz0iamF2YS5sYW5nLkVudW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJqYXZhLnV0aWwuRm9ybWF0dGVyLkJpZ0RlY2ltYWxMYXlvdXRGb3JtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVzIgorIHJldHVybj0iamF2YS51dGlsLkZvcm1hdHRlci5CaWdEZWNpbWFsTGF5b3V0Rm9ybVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJGb3JtYXR0ZXJDbG9zZWRFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZvcm1hdHRlckNsb3NlZEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnV0aWwuRm9ybWF0dGVyQ2xvc2VkRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkdyZWdvcmlhbkNhbGVuZGFyIgorIGV4dGVuZHM9ImphdmEudXRpbC5DYWxlbmRhciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkdyZWdvcmlhbkNhbGVuZGFyIgorIHR5cGU9ImphdmEudXRpbC5HcmVnb3JpYW5DYWxlbmRhciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkdyZWdvcmlhbkNhbGVuZGFyIgorIHR5cGU9ImphdmEudXRpbC5HcmVnb3JpYW5DYWxlbmRhciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InllYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9udGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkdyZWdvcmlhbkNhbGVuZGFyIgorIHR5cGU9ImphdmEudXRpbC5HcmVnb3JpYW5DYWxlbmRhciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InllYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9udGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhvdXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWludXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkdyZWdvcmlhbkNhbGVuZGFyIgorIHR5cGU9ImphdmEudXRpbC5HcmVnb3JpYW5DYWxlbmRhciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InllYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9udGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhvdXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWludXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlY29uZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJHcmVnb3JpYW5DYWxlbmRhciIKKyB0eXBlPSJqYXZhLnV0aWwuR3JlZ29yaWFuQ2FsZW5kYXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbGUiIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkdyZWdvcmlhbkNhbGVuZGFyIgorIHR5cGU9ImphdmEudXRpbC5HcmVnb3JpYW5DYWxlbmRhciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWV6b25lIiB0eXBlPSJqYXZhLnV0aWwuVGltZVpvbmUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkdyZWdvcmlhbkNhbGVuZGFyIgorIHR5cGU9ImphdmEudXRpbC5HcmVnb3JpYW5DYWxlbmRhciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWV6b25lIiB0eXBlPSJqYXZhLnV0aWwuVGltZVpvbmUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsZSIgdHlwZT0iamF2YS51dGlsLkxvY2FsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpZWxkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcHV0ZUZpZWxkcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcHV0ZVRpbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdyZWF0ZXN0TWluaW11bSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmllbGQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRHcmVnb3JpYW5DaGFuZ2UiCisgcmV0dXJuPSJqYXZhLnV0aWwuRGF0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExlYXN0TWF4aW11bSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmllbGQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYXhpbXVtIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1pbmltdW0iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpZWxkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNMZWFwWWVhciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InllYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyb2xsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmllbGQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5jcmVtZW50IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEdyZWdvcmlhbkNoYW5nZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGUiIHR5cGU9ImphdmEudXRpbC5EYXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkJDIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSGFzaE1hcCIKKyBleHRlbmRzPSJqYXZhLnV0aWwuQWJzdHJhY3RNYXAiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5DbG9uZWFibGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikhhc2hNYXAiCisgdHlwZT0iamF2YS51dGlsLkhhc2hNYXAiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIYXNoTWFwIgorIHR5cGU9ImphdmEudXRpbC5IYXNoTWFwIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FwYWNpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSGFzaE1hcCIKKyB0eXBlPSJqYXZhLnV0aWwuSGFzaE1hcCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhcGFjaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvYWRGYWN0b3IiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIYXNoTWFwIgorIHR5cGU9ImphdmEudXRpbC5IYXNoTWFwIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFwIiB0eXBlPSJqYXZhLnV0aWwuTWFwJmx0Oz8gZXh0ZW5kcyBLLCA/IGV4dGVuZHMgViZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW50cnlTZXQiCisgcmV0dXJuPSJqYXZhLnV0aWwuU2V0Jmx0O2phdmEudXRpbC5NYXAuRW50cnkmbHQ7SywgViZndDsmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ikhhc2hTZXQiCisgZXh0ZW5kcz0iamF2YS51dGlsLkFic3RyYWN0U2V0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ2xvbmVhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC5TZXQiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikhhc2hTZXQiCisgdHlwZT0iamF2YS51dGlsLkhhc2hTZXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIYXNoU2V0IgorIHR5cGU9ImphdmEudXRpbC5IYXNoU2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FwYWNpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSGFzaFNldCIKKyB0eXBlPSJqYXZhLnV0aWwuSGFzaFNldCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhcGFjaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvYWRGYWN0b3IiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIYXNoU2V0IgorIHR5cGU9ImphdmEudXRpbC5IYXNoU2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sbGVjdGlvbiIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyBleHRlbmRzIEUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Iml0ZXJhdG9yIgorIHJldHVybj0iamF2YS51dGlsLkl0ZXJhdG9yJmx0O0UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSGFzaHRhYmxlIgorIGV4dGVuZHM9ImphdmEudXRpbC5EaWN0aW9uYXJ5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ2xvbmVhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC5NYXAiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikhhc2h0YWJsZSIKKyB0eXBlPSJqYXZhLnV0aWwuSGFzaHRhYmxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSGFzaHRhYmxlIgorIHR5cGU9ImphdmEudXRpbC5IYXNodGFibGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXBhY2l0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIYXNodGFibGUiCisgdHlwZT0iamF2YS51dGlsLkhhc2h0YWJsZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhcGFjaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvYWRGYWN0b3IiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIYXNodGFibGUiCisgdHlwZT0iamF2YS51dGlsLkhhc2h0YWJsZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1hcCIgdHlwZT0iamF2YS51dGlsLk1hcCZsdDs/IGV4dGVuZHMgSywgPyBleHRlbmRzIFYmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xlYXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29udGFpbnMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb250YWluc0tleSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbnRhaW5zVmFsdWUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVsZW1lbnRzIgorIHJldHVybj0iamF2YS51dGlsLkVudW1lcmF0aW9uJmx0O1YmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW50cnlTZXQiCisgcmV0dXJuPSJqYXZhLnV0aWwuU2V0Jmx0O2phdmEudXRpbC5NYXAuRW50cnkmbHQ7SywgViZndDsmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iViIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNFbXB0eSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJrZXlTZXQiCisgcmV0dXJuPSJqYXZhLnV0aWwuU2V0Jmx0O0smZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ia2V5cyIKKyByZXR1cm49ImphdmEudXRpbC5FbnVtZXJhdGlvbiZsdDtLJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49IlYiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJLIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iViI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRBbGwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1hcCIgdHlwZT0iamF2YS51dGlsLk1hcCZsdDs/IGV4dGVuZHMgSywgPyBleHRlbmRzIFYmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlaGFzaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlIgorIHJldHVybj0iViIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlcyIKKyByZXR1cm49ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0O1YmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSWRlbnRpdHlIYXNoTWFwIgorIGV4dGVuZHM9ImphdmEudXRpbC5BYnN0cmFjdE1hcCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuTWFwIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJZGVudGl0eUhhc2hNYXAiCisgdHlwZT0iamF2YS51dGlsLklkZW50aXR5SGFzaE1hcCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IklkZW50aXR5SGFzaE1hcCIKKyB0eXBlPSJqYXZhLnV0aWwuSWRlbnRpdHlIYXNoTWFwIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF4U2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJZGVudGl0eUhhc2hNYXAiCisgdHlwZT0iamF2YS51dGlsLklkZW50aXR5SGFzaE1hcCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1hcCIgdHlwZT0iamF2YS51dGlsLk1hcCZsdDs/IGV4dGVuZHMgSywgPyBleHRlbmRzIFYmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVudHJ5U2V0IgorIHJldHVybj0iamF2YS51dGlsLlNldCZsdDtqYXZhLnV0aWwuTWFwLkVudHJ5Jmx0O0ssIFYmZ3Q7Jmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbGxlZ2FsRm9ybWF0Q29kZVBvaW50RXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEudXRpbC5JbGxlZ2FsRm9ybWF0RXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iSWxsZWdhbEZvcm1hdENvZGVQb2ludEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnV0aWwuSWxsZWdhbEZvcm1hdENvZGVQb2ludEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldENvZGVQb2ludCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbGxlZ2FsRm9ybWF0Q29udmVyc2lvbkV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLnV0aWwuSWxsZWdhbEZvcm1hdEV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IklsbGVnYWxGb3JtYXRDb252ZXJzaW9uRXhjZXB0aW9uIgorIHR5cGU9ImphdmEudXRpbC5JbGxlZ2FsRm9ybWF0Q29udmVyc2lvbkV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZyIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0Oz8mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0QXJndW1lbnRDbGFzcyIKKyByZXR1cm49ImphdmEubGFuZy5DbGFzcyZsdDs/Jmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb252ZXJzaW9uIgorIHJldHVybj0iY2hhciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbGxlZ2FsRm9ybWF0RXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSWxsZWdhbEZvcm1hdEZsYWdzRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEudXRpbC5JbGxlZ2FsRm9ybWF0RXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iSWxsZWdhbEZvcm1hdEZsYWdzRXhjZXB0aW9uIgorIHR5cGU9ImphdmEudXRpbC5JbGxlZ2FsRm9ybWF0RmxhZ3NFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0RmxhZ3MiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IklsbGVnYWxGb3JtYXRQcmVjaXNpb25FeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS51dGlsLklsbGVnYWxGb3JtYXRFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbGxlZ2FsRm9ybWF0UHJlY2lzaW9uRXhjZXB0aW9uIgorIHR5cGU9ImphdmEudXRpbC5JbGxlZ2FsRm9ybWF0UHJlY2lzaW9uRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0UHJlY2lzaW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IklsbGVnYWxGb3JtYXRXaWR0aEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLnV0aWwuSWxsZWdhbEZvcm1hdEV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IklsbGVnYWxGb3JtYXRXaWR0aEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnV0aWwuSWxsZWdhbEZvcm1hdFdpZHRoRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0V2lkdGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW5wdXRNaXNtYXRjaEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLnV0aWwuTm9TdWNoRWxlbWVudEV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IklucHV0TWlzbWF0Y2hFeGNlcHRpb24iCisgdHlwZT0iamF2YS51dGlsLklucHV0TWlzbWF0Y2hFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnB1dE1pc21hdGNoRXhjZXB0aW9uIgorIHR5cGU9ImphdmEudXRpbC5JbnB1dE1pc21hdGNoRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW52YWxpZFByb3BlcnRpZXNGb3JtYXRFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5pby5JT0V4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkludmFsaWRQcm9wZXJ0aWVzRm9ybWF0RXhjZXB0aW9uIgorIHR5cGU9ImphdmEudXRpbC5JbnZhbGlkUHJvcGVydGllc0Zvcm1hdEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkludmFsaWRQcm9wZXJ0aWVzRm9ybWF0RXhjZXB0aW9uIgorIHR5cGU9ImphdmEudXRpbC5JbnZhbGlkUHJvcGVydGllc0Zvcm1hdEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iSXRlcmF0b3IiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJoYXNOZXh0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHQiCisgcmV0dXJuPSJFIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJMaW5rZWRIYXNoTWFwIgorIGV4dGVuZHM9ImphdmEudXRpbC5IYXNoTWFwIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGlua2VkSGFzaE1hcCIKKyB0eXBlPSJqYXZhLnV0aWwuTGlua2VkSGFzaE1hcCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxpbmtlZEhhc2hNYXAiCisgdHlwZT0iamF2YS51dGlsLkxpbmtlZEhhc2hNYXAiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbml0aWFsQ2FwYWNpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGlua2VkSGFzaE1hcCIKKyB0eXBlPSJqYXZhLnV0aWwuTGlua2VkSGFzaE1hcCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluaXRpYWxDYXBhY2l0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2FkRmFjdG9yIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGlua2VkSGFzaE1hcCIKKyB0eXBlPSJqYXZhLnV0aWwuTGlua2VkSGFzaE1hcCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluaXRpYWxDYXBhY2l0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2FkRmFjdG9yIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjZXNzT3JkZXIiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxpbmtlZEhhc2hNYXAiCisgdHlwZT0iamF2YS51dGlsLkxpbmtlZEhhc2hNYXAiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXAiIHR5cGU9ImphdmEudXRpbC5NYXAmbHQ7PyBleHRlbmRzIEssID8gZXh0ZW5kcyBWJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InJlbW92ZUVsZGVzdEVudHJ5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZWxkZXN0IiB0eXBlPSJqYXZhLnV0aWwuTWFwLkVudHJ5Jmx0O0ssIFYmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkxpbmtlZEhhc2hTZXQiCisgZXh0ZW5kcz0iamF2YS51dGlsLkhhc2hTZXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5DbG9uZWFibGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLlNldCI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGlua2VkSGFzaFNldCIKKyB0eXBlPSJqYXZhLnV0aWwuTGlua2VkSGFzaFNldCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxpbmtlZEhhc2hTZXQiCisgdHlwZT0iamF2YS51dGlsLkxpbmtlZEhhc2hTZXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXBhY2l0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMaW5rZWRIYXNoU2V0IgorIHR5cGU9ImphdmEudXRpbC5MaW5rZWRIYXNoU2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FwYWNpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9hZEZhY3RvciIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxpbmtlZEhhc2hTZXQiCisgdHlwZT0iamF2YS51dGlsLkxpbmtlZEhhc2hTZXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xsZWN0aW9uIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDs/IGV4dGVuZHMgRSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJMaW5rZWRMaXN0IgorIGV4dGVuZHM9ImphdmEudXRpbC5BYnN0cmFjdFNlcXVlbnRpYWxMaXN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ2xvbmVhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC5MaXN0Ij4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC5RdWV1ZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGlua2VkTGlzdCIKKyB0eXBlPSJqYXZhLnV0aWwuTGlua2VkTGlzdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxpbmtlZExpc3QiCisgdHlwZT0iamF2YS51dGlsLkxpbmtlZExpc3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xsZWN0aW9uIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDs/IGV4dGVuZHMgRSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRGaXJzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRMYXN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbGVtZW50IgorIHJldHVybj0iRSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGaXJzdCIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGFzdCIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGlzdEl0ZXJhdG9yIgorIHJldHVybj0iamF2YS51dGlsLkxpc3RJdGVyYXRvciZsdDtFJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvZmZlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im8iIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGVlayIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9sbCIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlIgorIHJldHVybj0iRSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVGaXJzdCIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlTGFzdCIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iTGlzdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImFkZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZEFsbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sbGVjdGlvbiIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyBleHRlbmRzIEUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZEFsbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sbGVjdGlvbiIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyBleHRlbmRzIEUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbnRhaW5zIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29udGFpbnNBbGwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbGxlY3Rpb24iIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0Oz8mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVxdWFscyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNoQ29kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluZGV4T2YiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRW1wdHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXRlcmF0b3IiCisgcmV0dXJuPSJqYXZhLnV0aWwuSXRlcmF0b3ImbHQ7RSZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsYXN0SW5kZXhPZiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGlzdEl0ZXJhdG9yIgorIHJldHVybj0iamF2YS51dGlsLkxpc3RJdGVyYXRvciZsdDtFJmd0OyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxpc3RJdGVyYXRvciIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0SXRlcmF0b3ImbHQ7RSZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmUiCisgcmV0dXJuPSJFIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlQWxsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xsZWN0aW9uIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXRhaW5BbGwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbGxlY3Rpb24iIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0Oz8mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdWJMaXN0IgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7RSZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9BcnJheSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3RbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvQXJyYXkiCisgcmV0dXJuPSJUW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9IlRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9Ikxpc3RJdGVyYXRvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuSXRlcmF0b3IiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJhZGQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNOZXh0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc1ByZXZpb3VzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHQiCisgcmV0dXJuPSJFIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV4dEluZGV4IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJldmlvdXMiCisgcmV0dXJuPSJFIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJldmlvdXNJbmRleCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iTGlzdFJlc291cmNlQnVuZGxlIgorIGV4dGVuZHM9ImphdmEudXRpbC5SZXNvdXJjZUJ1bmRsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGlzdFJlc291cmNlQnVuZGxlIgorIHR5cGU9ImphdmEudXRpbC5MaXN0UmVzb3VyY2VCdW5kbGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudHMiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0W11bXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEtleXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuRW51bWVyYXRpb24mbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFuZGxlR2V0T2JqZWN0IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTG9jYWxlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTG9jYWxlIgorIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsYW5ndWFnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTG9jYWxlIgorIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsYW5ndWFnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnRyeSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTG9jYWxlIgorIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsYW5ndWFnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnRyeSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFyaWFudCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdmFpbGFibGVMb2NhbGVzIgorIHJldHVybj0iamF2YS51dGlsLkxvY2FsZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q291bnRyeSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVmYXVsdCIKKyByZXR1cm49ImphdmEudXRpbC5Mb2NhbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREaXNwbGF5Q291bnRyeSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREaXNwbGF5Q291bnRyeSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsZSIgdHlwZT0iamF2YS51dGlsLkxvY2FsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREaXNwbGF5TGFuZ3VhZ2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGlzcGxheUxhbmd1YWdlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxlIiB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERpc3BsYXlOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERpc3BsYXlOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxlIiB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERpc3BsYXlWYXJpYW50IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERpc3BsYXlWYXJpYW50IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxlIiB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElTTzNDb3VudHJ5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iTWlzc2luZ1Jlc291cmNlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnV0aWwuTWlzc2luZ1Jlc291cmNlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElTTzNMYW5ndWFnZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9Ik1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLk1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJU09Db3VudHJpZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJU09MYW5ndWFnZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMYW5ndWFnZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmFyaWFudCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGVmYXVsdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbGUiIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDQU5BREEiCisgdHlwZT0iamF2YS51dGlsLkxvY2FsZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDQU5BREFfRlJFTkNIIgorIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0hJTkEiCisgdHlwZT0iamF2YS51dGlsLkxvY2FsZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDSElORVNFIgorIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRU5HTElTSCIKKyB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZSQU5DRSIKKyB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZSRU5DSCIKKyB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdFUk1BTiIKKyB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdFUk1BTlkiCisgdHlwZT0iamF2YS51dGlsLkxvY2FsZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJVEFMSUFOIgorIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSVRBTFkiCisgdHlwZT0iamF2YS51dGlsLkxvY2FsZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJKQVBBTiIKKyB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkpBUEFORVNFIgorIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS09SRUEiCisgdHlwZT0iamF2YS51dGlsLkxvY2FsZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLT1JFQU4iCisgdHlwZT0iamF2YS51dGlsLkxvY2FsZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQUkMiCisgdHlwZT0iamF2YS51dGlsLkxvY2FsZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTSU1QTElGSUVEX0NISU5FU0UiCisgdHlwZT0iamF2YS51dGlsLkxvY2FsZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUQUlXQU4iCisgdHlwZT0iamF2YS51dGlsLkxvY2FsZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUUkFESVRJT05BTF9DSElORVNFIgorIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVUsiCisgdHlwZT0iamF2YS51dGlsLkxvY2FsZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVUyIKKyB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iTWFwIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY2xlYXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29udGFpbnNLZXkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb250YWluc1ZhbHVlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbnRyeVNldCIKKyByZXR1cm49ImphdmEudXRpbC5TZXQmbHQ7amF2YS51dGlsLk1hcC5FbnRyeSZsdDtLLCBWJmd0OyZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlcXVhbHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJWIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNoQ29kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRW1wdHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ia2V5U2V0IgorIHJldHVybj0iamF2YS51dGlsLlNldCZsdDtLJmd0OyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49IlYiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJLIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iViI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRBbGwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1hcCIgdHlwZT0iamF2YS51dGlsLk1hcCZsdDs/IGV4dGVuZHMgSywgPyBleHRlbmRzIFYmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZSIKKyByZXR1cm49IlYiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDtWJmd0OyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iTWFwLkVudHJ5IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJlcXVhbHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRLZXkiCisgcmV0dXJuPSJLIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiCisgcmV0dXJuPSJWIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzaENvZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRWYWx1ZSIKKyByZXR1cm49IlYiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJWIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJNaXNzaW5nRm9ybWF0QXJndW1lbnRFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS51dGlsLklsbGVnYWxGb3JtYXRFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNaXNzaW5nRm9ybWF0QXJndW1lbnRFeGNlcHRpb24iCisgdHlwZT0iamF2YS51dGlsLk1pc3NpbmdGb3JtYXRBcmd1bWVudEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRGb3JtYXRTcGVjaWZpZXIiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik1pc3NpbmdGb3JtYXRXaWR0aEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLnV0aWwuSWxsZWdhbEZvcm1hdEV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1pc3NpbmdGb3JtYXRXaWR0aEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnV0aWwuTWlzc2luZ0Zvcm1hdFdpZHRoRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEZvcm1hdFNwZWNpZmllciIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTWlzc2luZ1Jlc291cmNlRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTWlzc2luZ1Jlc291cmNlRXhjZXB0aW9uIgorIHR5cGU9ImphdmEudXRpbC5NaXNzaW5nUmVzb3VyY2VFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjbGFzc05hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc291cmNlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldENsYXNzTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0S2V5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJOb1N1Y2hFbGVtZW50RXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTm9TdWNoRWxlbWVudEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnV0aWwuTm9TdWNoRWxlbWVudEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik5vU3VjaEVsZW1lbnRFeGNlcHRpb24iCisgdHlwZT0iamF2YS51dGlsLk5vU3VjaEVsZW1lbnRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iT2JzZXJ2YWJsZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iT2JzZXJ2YWJsZSIKKyB0eXBlPSJqYXZhLnV0aWwuT2JzZXJ2YWJsZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRPYnNlcnZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9ic2VydmVyIiB0eXBlPSJqYXZhLnV0aWwuT2JzZXJ2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb3VudE9ic2VydmVycyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWxldGVPYnNlcnZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JzZXJ2ZXIiIHR5cGU9ImphdmEudXRpbC5PYnNlcnZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWxldGVPYnNlcnZlcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzQ2hhbmdlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibm90aWZ5T2JzZXJ2ZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJub3RpZnlPYnNlcnZlcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJPYnNlcnZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JzZXJ2YWJsZSIgdHlwZT0iamF2YS51dGlsLk9ic2VydmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlByaW9yaXR5UXVldWUiCisgZXh0ZW5kcz0iamF2YS51dGlsLkFic3RyYWN0UXVldWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcmlvcml0eVF1ZXVlIgorIHR5cGU9ImphdmEudXRpbC5Qcmlvcml0eVF1ZXVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJpb3JpdHlRdWV1ZSIKKyB0eXBlPSJqYXZhLnV0aWwuUHJpb3JpdHlRdWV1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluaXRpYWxDYXBhY2l0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcmlvcml0eVF1ZXVlIgorIHR5cGU9ImphdmEudXRpbC5Qcmlvcml0eVF1ZXVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5pdGlhbENhcGFjaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbXBhcmF0b3IiIHR5cGU9ImphdmEudXRpbC5Db21wYXJhdG9yJmx0Oz8gc3VwZXIgRSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByaW9yaXR5UXVldWUiCisgdHlwZT0iamF2YS51dGlsLlByaW9yaXR5UXVldWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDs/IGV4dGVuZHMgRSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByaW9yaXR5UXVldWUiCisgdHlwZT0iamF2YS51dGlsLlByaW9yaXR5UXVldWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJqYXZhLnV0aWwuUHJpb3JpdHlRdWV1ZSZsdDs/IGV4dGVuZHMgRSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByaW9yaXR5UXVldWUiCisgdHlwZT0iamF2YS51dGlsLlByaW9yaXR5UXVldWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJqYXZhLnV0aWwuU29ydGVkU2V0Jmx0Oz8gZXh0ZW5kcyBFJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNvbXBhcmF0b3IiCisgcmV0dXJuPSJqYXZhLnV0aWwuQ29tcGFyYXRvciZsdDs/IHN1cGVyIEUmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Iml0ZXJhdG9yIgorIHJldHVybj0iamF2YS51dGlsLkl0ZXJhdG9yJmx0O0UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9mZmVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibyIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwZWVrIgorIHJldHVybj0iRSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwb2xsIgorIHJldHVybj0iRSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlByb3BlcnRpZXMiCisgZXh0ZW5kcz0iamF2YS51dGlsLkhhc2h0YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByb3BlcnRpZXMiCisgdHlwZT0iamF2YS51dGlsLlByb3BlcnRpZXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcm9wZXJ0aWVzIgorIHR5cGU9ImphdmEudXRpbC5Qcm9wZXJ0aWVzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvcGVydGllcyIgdHlwZT0iamF2YS51dGlsLlByb3BlcnRpZXMiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRQcm9wZXJ0eSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvcGVydHkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZhdWx0VmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGlzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dCIgdHlwZT0iamF2YS5pby5QcmludFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsaXN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id3JpdGVyIiB0eXBlPSJqYXZhLmlvLlByaW50V3JpdGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvYWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2FkRnJvbVhNTCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkUHJvcGVydGllc0Zvcm1hdEV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLkludmFsaWRQcm9wZXJ0aWVzRm9ybWF0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByb3BlcnR5TmFtZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuRW51bWVyYXRpb24mbHQ7PyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2F2ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0IiB0eXBlPSJqYXZhLmlvLk91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29tbWVudCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQcm9wZXJ0eSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0b3JlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb21tZW50IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdG9yZVRvWE1MIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3MiIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb21tZW50IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdG9yZVRvWE1MIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcyIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbW1lbnQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuY29kaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImRlZmF1bHRzIgorIHR5cGU9ImphdmEudXRpbC5Qcm9wZXJ0aWVzIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlByb3BlcnR5UGVybWlzc2lvbiIKKyBleHRlbmRzPSJqYXZhLnNlY3VyaXR5LkJhc2ljUGVybWlzc2lvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJvcGVydHlQZXJtaXNzaW9uIgorIHR5cGU9ImphdmEudXRpbC5Qcm9wZXJ0eVBlcm1pc3Npb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb25zIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUHJvcGVydHlSZXNvdXJjZUJ1bmRsZSIKKyBleHRlbmRzPSJqYXZhLnV0aWwuUmVzb3VyY2VCdW5kbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcm9wZXJ0eVJlc291cmNlQnVuZGxlIgorIHR5cGU9ImphdmEudXRpbC5Qcm9wZXJ0eVJlc291cmNlQnVuZGxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyZWFtIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEtleXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuRW51bWVyYXRpb24mbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFuZGxlR2V0T2JqZWN0IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJRdWV1ZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImVsZW1lbnQiCisgcmV0dXJuPSJFIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib2ZmZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im8iIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGVlayIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwb2xsIgorIHJldHVybj0iRSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZSIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iUmFuZG9tIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSYW5kb20iCisgdHlwZT0iamF2YS51dGlsLlJhbmRvbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJhbmRvbSIKKyB0eXBlPSJqYXZhLnV0aWwuUmFuZG9tIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VlZCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9Im5leHQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYml0cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHRCb29sZWFuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0Qnl0ZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWYiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0RG91YmxlIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHRGbG9hdCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHRHYXVzc2lhbiIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHRJbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV4dEludCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHRMb25nIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTZWVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWVkIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJSYW5kb21BY2Nlc3MiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iUmVzb3VyY2VCdW5kbGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVzb3VyY2VCdW5kbGUiCisgdHlwZT0iamF2YS51dGlsLlJlc291cmNlQnVuZGxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEJ1bmRsZSIKKyByZXR1cm49ImphdmEudXRpbC5SZXNvdXJjZUJ1bmRsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1bmRsZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLk1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCdW5kbGUiCisgcmV0dXJuPSJqYXZhLnV0aWwuUmVzb3VyY2VCdW5kbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidW5kbGVOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbGUiIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QnVuZGxlIgorIHJldHVybj0iamF2YS51dGlsLlJlc291cmNlQnVuZGxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1bmRsZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsZSIgdHlwZT0iamF2YS51dGlsLkxvY2FsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9hZGVyIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NMb2FkZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLk1pc3NpbmdSZXNvdXJjZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRLZXlzIgorIHJldHVybj0iamF2YS51dGlsLkVudW1lcmF0aW9uJmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9jYWxlIgorIHJldHVybj0iamF2YS51dGlsLkxvY2FsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPYmplY3QiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdHJpbmdBcnJheSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFuZGxlR2V0T2JqZWN0IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGFyZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVuZGxlIiB0eXBlPSJqYXZhLnV0aWwuUmVzb3VyY2VCdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJwYXJlbnQiCisgdHlwZT0iamF2YS51dGlsLlJlc291cmNlQnVuZGxlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNjYW5uZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuSXRlcmF0b3IiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNjYW5uZXIiCisgdHlwZT0iamF2YS51dGlsLlNjYW5uZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImphdmEuaW8uRmlsZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRmlsZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2Nhbm5lciIKKyB0eXBlPSJqYXZhLnV0aWwuU2Nhbm5lciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iamF2YS5pby5GaWxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGFyc2V0TmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRmlsZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2Nhbm5lciIKKyB0eXBlPSJqYXZhLnV0aWwuU2Nhbm5lciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2Nhbm5lciIKKyB0eXBlPSJqYXZhLnV0aWwuU2Nhbm5lciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2Nhbm5lciIKKyB0eXBlPSJqYXZhLnV0aWwuU2Nhbm5lciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhcnNldE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNjYW5uZXIiCisgdHlwZT0iamF2YS51dGlsLlNjYW5uZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImphdmEubGFuZy5SZWFkYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2Nhbm5lciIKKyB0eXBlPSJqYXZhLnV0aWwuU2Nhbm5lciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuUmVhZGFibGVCeXRlQ2hhbm5lbCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2Nhbm5lciIKKyB0eXBlPSJqYXZhLnV0aWwuU2Nhbm5lciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iamF2YS5uaW8uY2hhbm5lbHMuUmVhZGFibGVCeXRlQ2hhbm5lbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhcnNldE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVsaW1pdGVyIgorIHJldHVybj0iamF2YS51dGlsLnJlZ2V4LlBhdHRlcm4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmluZEluTGluZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdHRlcm4iIHR5cGU9ImphdmEudXRpbC5yZWdleC5QYXR0ZXJuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmRJbkxpbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXR0ZXJuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmRXaXRoaW5Ib3Jpem9uIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0dGVybiIgdHlwZT0iamF2YS51dGlsLnJlZ2V4LlBhdHRlcm4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imhvcml6b24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaW5kV2l0aGluSG9yaXpvbiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdHRlcm4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imhvcml6b24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNOZXh0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNOZXh0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0dGVybiIgdHlwZT0iamF2YS51dGlsLnJlZ2V4LlBhdHRlcm4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzTmV4dCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdHRlcm4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzTmV4dEJpZ0RlY2ltYWwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc05leHRCaWdJbnRlZ2VyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNOZXh0QmlnSW50ZWdlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJhZGl4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzTmV4dEJvb2xlYW4iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc05leHRCeXRlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNOZXh0Qnl0ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJhZGl4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzTmV4dERvdWJsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzTmV4dEZsb2F0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNOZXh0SW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNOZXh0SW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmFkaXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNOZXh0TGluZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzTmV4dExvbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc05leHRMb25nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmFkaXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNOZXh0U2hvcnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc05leHRTaG9ydCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJhZGl4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW9FeGNlcHRpb24iCisgcmV0dXJuPSJqYXZhLmlvLklPRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvY2FsZSIKKyByZXR1cm49ImphdmEudXRpbC5Mb2NhbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWF0Y2giCisgcmV0dXJuPSJqYXZhLnV0aWwucmVnZXguTWF0Y2hSZXN1bHQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV4dCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV4dCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdHRlcm4iIHR5cGU9ImphdmEudXRpbC5yZWdleC5QYXR0ZXJuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXR0ZXJuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHRCaWdEZWNpbWFsIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV4dEJpZ0ludGVnZXIiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0QmlnSW50ZWdlciIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyYWRpeCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHRCb29sZWFuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0Qnl0ZSIKKyByZXR1cm49ImJ5dGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV4dEJ5dGUiCisgcmV0dXJuPSJieXRlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyYWRpeCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHREb3VibGUiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV4dEZsb2F0IgorIHJldHVybj0iZmxvYXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV4dEludCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0SW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyYWRpeCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHRMaW5lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0TG9uZyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV4dExvbmciCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyYWRpeCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHRTaG9ydCIKKyByZXR1cm49InNob3J0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHRTaG9ydCIKKyByZXR1cm49InNob3J0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyYWRpeCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJhZGl4IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2tpcCIKKyByZXR1cm49ImphdmEudXRpbC5TY2FubmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXR0ZXJuIiB0eXBlPSJqYXZhLnV0aWwucmVnZXguUGF0dGVybiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJza2lwIgorIHJldHVybj0iamF2YS51dGlsLlNjYW5uZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdHRlcm4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXNlRGVsaW1pdGVyIgorIHJldHVybj0iamF2YS51dGlsLlNjYW5uZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdHRlcm4iIHR5cGU9ImphdmEudXRpbC5yZWdleC5QYXR0ZXJuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVzZURlbGltaXRlciIKKyByZXR1cm49ImphdmEudXRpbC5TY2FubmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXR0ZXJuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVzZUxvY2FsZSIKKyByZXR1cm49ImphdmEudXRpbC5TY2FubmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsIiB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVzZVJhZGl4IgorIHJldHVybj0iamF2YS51dGlsLlNjYW5uZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJhZGl4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlNldCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImFkZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZEFsbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sbGVjdGlvbiIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyBleHRlbmRzIEUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbnRhaW5zIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29udGFpbnNBbGwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbGxlY3Rpb24iIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0Oz8mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVxdWFscyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc2hDb2RlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNFbXB0eSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpdGVyYXRvciIKKyByZXR1cm49ImphdmEudXRpbC5JdGVyYXRvciZsdDtFJmd0OyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZUFsbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sbGVjdGlvbiIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmV0YWluQWxsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2xsZWN0aW9uIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9BcnJheSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3RbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvQXJyYXkiCisgcmV0dXJuPSJUW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9IlRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iU2ltcGxlVGltZVpvbmUiCisgZXh0ZW5kcz0iamF2YS51dGlsLlRpbWVab25lIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2ltcGxlVGltZVpvbmUiCisgdHlwZT0iamF2YS51dGlsLlNpbXBsZVRpbWVab25lIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNpbXBsZVRpbWVab25lIgorIHR5cGU9ImphdmEudXRpbC5TaW1wbGVUaW1lWm9uZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydE1vbnRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0RGF5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0RGF5T2ZXZWVrIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0VGltZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmRNb250aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmREYXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kRGF5T2ZXZWVrIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZFRpbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2ltcGxlVGltZVpvbmUiCisgdHlwZT0iamF2YS51dGlsLlNpbXBsZVRpbWVab25lIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0TW9udGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnREYXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnREYXlPZldlZWsiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnRUaW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZE1vbnRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZERheSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmREYXlPZldlZWsiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kVGltZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXlsaWdodFNhdmluZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2ltcGxlVGltZVpvbmUiCisgdHlwZT0iamF2YS51dGlsLlNpbXBsZVRpbWVab25lIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0TW9udGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnREYXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnREYXlPZldlZWsiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnRUaW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0VGltZU1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kTW9udGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kRGF5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZERheU9mV2VlayIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmRUaW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZFRpbWVNb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRheWxpZ2h0U2F2aW5ncyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0T2Zmc2V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlcmEiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieWVhciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb250aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF5T2ZXZWVrIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSYXdPZmZzZXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5EYXlsaWdodFRpbWUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lIiB0eXBlPSJqYXZhLnV0aWwuRGF0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREU1RTYXZpbmdzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWlsbGlzZWNvbmRzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RW5kUnVsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vbnRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRheU9mTW9udGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVuZFJ1bGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb250aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF5T2ZXZWVrIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFbmRSdWxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9udGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRheU9mV2VlayIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFmdGVyIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJhd09mZnNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN0YXJ0UnVsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vbnRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRheU9mTW9udGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN0YXJ0UnVsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vbnRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRheSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXlPZldlZWsiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN0YXJ0UnVsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vbnRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRheSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXlPZldlZWsiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhZnRlciIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTdGFydFllYXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ5ZWFyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXNlRGF5bGlnaHRUaW1lIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IlNUQU5EQVJEX1RJTUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVUQ19USU1FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXQUxMX1RJTUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iU29ydGVkTWFwIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC5NYXAiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJjb21wYXJhdG9yIgorIHJldHVybj0iamF2YS51dGlsLkNvbXBhcmF0b3ImbHQ7PyBzdXBlciBLJmd0OyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpcnN0S2V5IgorIHJldHVybj0iSyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImhlYWRNYXAiCisgcmV0dXJuPSJqYXZhLnV0aWwuU29ydGVkTWFwJmx0O0ssIFYmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZEtleSIgdHlwZT0iSyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsYXN0S2V5IgorIHJldHVybj0iSyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1Yk1hcCIKKyByZXR1cm49ImphdmEudXRpbC5Tb3J0ZWRNYXAmbHQ7SywgViZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnRLZXkiIHR5cGU9IksiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZEtleSIgdHlwZT0iSyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0YWlsTWFwIgorIHJldHVybj0iamF2YS51dGlsLlNvcnRlZE1hcCZsdDtLLCBWJmd0OyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydEtleSIgdHlwZT0iSyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlNvcnRlZFNldCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuU2V0Ij4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iY29tcGFyYXRvciIKKyByZXR1cm49ImphdmEudXRpbC5Db21wYXJhdG9yJmx0Oz8gc3VwZXIgRSZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaXJzdCIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoZWFkU2V0IgorIHJldHVybj0iamF2YS51dGlsLlNvcnRlZFNldCZsdDtFJmd0OyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGFzdCIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdWJTZXQiCisgcmV0dXJuPSJqYXZhLnV0aWwuU29ydGVkU2V0Jmx0O0UmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGFpbFNldCIKKyByZXR1cm49ImphdmEudXRpbC5Tb3J0ZWRTZXQmbHQ7RSZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlN0YWNrIgorIGV4dGVuZHM9ImphdmEudXRpbC5WZWN0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdGFjayIKKyB0eXBlPSJqYXZhLnV0aWwuU3RhY2siCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZW1wdHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBlZWsiCisgcmV0dXJuPSJFIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9wIgorIHJldHVybj0iRSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1c2giCisgcmV0dXJuPSJFIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VhcmNoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im8iIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3RyaW5nVG9rZW5pemVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC5FbnVtZXJhdGlvbiI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RyaW5nVG9rZW5pemVyIgorIHR5cGU9ImphdmEudXRpbC5TdHJpbmdUb2tlbml6ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN0cmluZ1Rva2VuaXplciIKKyB0eXBlPSJqYXZhLnV0aWwuU3RyaW5nVG9rZW5pemVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWxpbWl0ZXJzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdHJpbmdUb2tlbml6ZXIiCisgdHlwZT0iamF2YS51dGlsLlN0cmluZ1Rva2VuaXplciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVsaW1pdGVycyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmV0dXJuRGVsaW1pdGVycyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNvdW50VG9rZW5zIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc01vcmVFbGVtZW50cyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzTW9yZVRva2VucyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV4dEVsZW1lbnQiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHRUb2tlbiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV4dFRva2VuIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVsaW1zIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlRpbWVab25lIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGltZVpvbmUiCisgdHlwZT0iamF2YS51dGlsLlRpbWVab25lIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdmFpbGFibGVJRHMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF2YWlsYWJsZUlEcyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERTVFNhdmluZ3MiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVmYXVsdCIKKyByZXR1cm49ImphdmEudXRpbC5UaW1lWm9uZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGlzcGxheU5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGlzcGxheU5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsZSIgdHlwZT0iamF2YS51dGlsLkxvY2FsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREaXNwbGF5TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF5bGlnaHRUaW1lIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERpc3BsYXlOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF5bGlnaHRUaW1lIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdHlsZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbGUiIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SUQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9mZnNldCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPZmZzZXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXJhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InllYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9udGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRheU9mV2VlayIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmF3T2Zmc2V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGltZVpvbmUiCisgcmV0dXJuPSJqYXZhLnV0aWwuVGltZVpvbmUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc1NhbWVSdWxlcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InpvbmUiIHR5cGU9ImphdmEudXRpbC5UaW1lWm9uZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbkRheWxpZ2h0VGltZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZSIgdHlwZT0iamF2YS51dGlsLkRhdGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGVmYXVsdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lem9uZSIgdHlwZT0iamF2YS51dGlsLlRpbWVab25lIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldElEIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSYXdPZmZzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVzZURheWxpZ2h0VGltZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkxPTkciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNIT1JUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVGltZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRpbWVyIgorIHR5cGU9ImphdmEudXRpbC5UaW1lciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlzRGFlbW9uIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUaW1lciIKKyB0eXBlPSJqYXZhLnV0aWwuVGltZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUaW1lciIKKyB0eXBlPSJqYXZhLnV0aWwuVGltZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpc0RhZW1vbiIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGltZXIiCisgdHlwZT0iamF2YS51dGlsLlRpbWVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNhbmNlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHVyZ2UiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2NoZWR1bGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXNrIiB0eXBlPSJqYXZhLnV0aWwuVGltZXJUYXNrIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aGVuIiB0eXBlPSJqYXZhLnV0aWwuRGF0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzY2hlZHVsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhc2siIHR5cGU9ImphdmEudXRpbC5UaW1lclRhc2siPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbGF5IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNjaGVkdWxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFzayIgdHlwZT0iamF2YS51dGlsLlRpbWVyVGFzayI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVsYXkiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBlcmlvZCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzY2hlZHVsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhc2siIHR5cGU9ImphdmEudXRpbC5UaW1lclRhc2siPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoZW4iIHR5cGU9ImphdmEudXRpbC5EYXRlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwZXJpb2QiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2NoZWR1bGVBdEZpeGVkUmF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhc2siIHR5cGU9ImphdmEudXRpbC5UaW1lclRhc2siPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbGF5IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwZXJpb2QiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2NoZWR1bGVBdEZpeGVkUmF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhc2siIHR5cGU9ImphdmEudXRpbC5UaW1lclRhc2siPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndoZW4iIHR5cGU9ImphdmEudXRpbC5EYXRlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwZXJpb2QiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVGltZXJUYXNrIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLlJ1bm5hYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUaW1lclRhc2siCisgdHlwZT0iamF2YS51dGlsLlRpbWVyVGFzayIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjYW5jZWwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJ1biIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzY2hlZHVsZWRFeGVjdXRpb25UaW1lIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUb29NYW55TGlzdGVuZXJzRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUb29NYW55TGlzdGVuZXJzRXhjZXB0aW9uIgorIHR5cGU9ImphdmEudXRpbC5Ub29NYW55TGlzdGVuZXJzRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVG9vTWFueUxpc3RlbmVyc0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnV0aWwuVG9vTWFueUxpc3RlbmVyc0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRldGFpbE1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUcmVlTWFwIgorIGV4dGVuZHM9ImphdmEudXRpbC5BYnN0cmFjdE1hcCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuU29ydGVkTWFwIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUcmVlTWFwIgorIHR5cGU9ImphdmEudXRpbC5UcmVlTWFwIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVHJlZU1hcCIKKyB0eXBlPSJqYXZhLnV0aWwuVHJlZU1hcCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbXBhcmF0b3IiIHR5cGU9ImphdmEudXRpbC5Db21wYXJhdG9yJmx0Oz8gc3VwZXIgSyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRyZWVNYXAiCisgdHlwZT0iamF2YS51dGlsLlRyZWVNYXAiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXAiIHR5cGU9ImphdmEudXRpbC5NYXAmbHQ7PyBleHRlbmRzIEssID8gZXh0ZW5kcyBWJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVHJlZU1hcCIKKyB0eXBlPSJqYXZhLnV0aWwuVHJlZU1hcCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1hcCIgdHlwZT0iamF2YS51dGlsLlNvcnRlZE1hcCZsdDtLLCA/IGV4dGVuZHMgViZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcGFyYXRvciIKKyByZXR1cm49ImphdmEudXRpbC5Db21wYXJhdG9yJmx0Oz8gc3VwZXIgSyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW50cnlTZXQiCisgcmV0dXJuPSJqYXZhLnV0aWwuU2V0Jmx0O2phdmEudXRpbC5NYXAuRW50cnkmbHQ7SywgViZndDsmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpcnN0S2V5IgorIHJldHVybj0iSyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoZWFkTWFwIgorIHJldHVybj0iamF2YS51dGlsLlNvcnRlZE1hcCZsdDtLLCBWJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kS2V5IiB0eXBlPSJLIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxhc3RLZXkiCisgcmV0dXJuPSJLIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1Yk1hcCIKKyByZXR1cm49ImphdmEudXRpbC5Tb3J0ZWRNYXAmbHQ7SywgViZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0S2V5IiB0eXBlPSJLIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmRLZXkiIHR5cGU9IksiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGFpbE1hcCIKKyByZXR1cm49ImphdmEudXRpbC5Tb3J0ZWRNYXAmbHQ7SywgViZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0S2V5IiB0eXBlPSJLIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlRyZWVTZXQiCisgZXh0ZW5kcz0iamF2YS51dGlsLkFic3RyYWN0U2V0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ2xvbmVhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC5Tb3J0ZWRTZXQiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRyZWVTZXQiCisgdHlwZT0iamF2YS51dGlsLlRyZWVTZXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUcmVlU2V0IgorIHR5cGU9ImphdmEudXRpbC5UcmVlU2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sbGVjdGlvbiIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyBleHRlbmRzIEUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUcmVlU2V0IgorIHR5cGU9ImphdmEudXRpbC5UcmVlU2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29tcGFyYXRvciIgdHlwZT0iamF2YS51dGlsLkNvbXBhcmF0b3ImbHQ7PyBzdXBlciBFJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVHJlZVNldCIKKyB0eXBlPSJqYXZhLnV0aWwuVHJlZVNldCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNldCIgdHlwZT0iamF2YS51dGlsLlNvcnRlZFNldCZsdDtFJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wYXJhdG9yIgorIHJldHVybj0iamF2YS51dGlsLkNvbXBhcmF0b3ImbHQ7PyBzdXBlciBFJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaXJzdCIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGVhZFNldCIKKyByZXR1cm49ImphdmEudXRpbC5Tb3J0ZWRTZXQmbHQ7RSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZCIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpdGVyYXRvciIKKyByZXR1cm49ImphdmEudXRpbC5JdGVyYXRvciZsdDtFJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsYXN0IgorIHJldHVybj0iRSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1YlNldCIKKyByZXR1cm49ImphdmEudXRpbC5Tb3J0ZWRTZXQmbHQ7RSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGFpbFNldCIKKyByZXR1cm49ImphdmEudXRpbC5Tb3J0ZWRTZXQmbHQ7RSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlVVSUQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ29tcGFyYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iVVVJRCIKKyB0eXBlPSJqYXZhLnV0aWwuVVVJRCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vc3RTaWdCaXRzIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZWFzdFNpZ0JpdHMiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9ja1NlcXVlbmNlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbXBhcmVUbyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXVpZCIgdHlwZT0iamF2YS51dGlsLlVVSUQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZnJvbVN0cmluZyIKKyByZXR1cm49ImphdmEudXRpbC5VVUlEIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InV1aWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGVhc3RTaWduaWZpY2FudEJpdHMiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1vc3RTaWduaWZpY2FudEJpdHMiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5hbWVVVUlERnJvbUJ5dGVzIgorIHJldHVybj0iamF2YS51dGlsLlVVSUQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5vZGUiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJhbmRvbVVVSUQiCisgcmV0dXJuPSJqYXZhLnV0aWwuVVVJRCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRpbWVzdGFtcCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFyaWFudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2ZXJzaW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlVua25vd25Gb3JtYXRDb252ZXJzaW9uRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEudXRpbC5JbGxlZ2FsRm9ybWF0RXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVW5rbm93bkZvcm1hdENvbnZlcnNpb25FeGNlcHRpb24iCisgdHlwZT0iamF2YS51dGlsLlVua25vd25Gb3JtYXRDb252ZXJzaW9uRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldENvbnZlcnNpb24iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlVua25vd25Gb3JtYXRGbGFnc0V4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLnV0aWwuSWxsZWdhbEZvcm1hdEV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlVua25vd25Gb3JtYXRGbGFnc0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnV0aWwuVW5rbm93bkZvcm1hdEZsYWdzRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEZsYWdzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJWZWN0b3IiCisgZXh0ZW5kcz0iamF2YS51dGlsLkFic3RyYWN0TGlzdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuTGlzdCI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuUmFuZG9tQWNjZXNzIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJWZWN0b3IiCisgdHlwZT0iamF2YS51dGlsLlZlY3RvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlZlY3RvciIKKyB0eXBlPSJqYXZhLnV0aWwuVmVjdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FwYWNpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVmVjdG9yIgorIHR5cGU9ImphdmEudXRpbC5WZWN0b3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXBhY2l0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYXBhY2l0eUluY3JlbWVudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJWZWN0b3IiCisgdHlwZT0iamF2YS51dGlsLlZlY3RvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbGxlY3Rpb24iIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0Oz8gZXh0ZW5kcyBFJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZEVsZW1lbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYXBhY2l0eSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvcHlJbnRvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbGVtZW50cyIgdHlwZT0iamF2YS5sYW5nLk9iamVjdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVsZW1lbnRBdCIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbGVtZW50cyIKKyByZXR1cm49ImphdmEudXRpbC5FbnVtZXJhdGlvbiZsdDtFJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbnN1cmVDYXBhY2l0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWluaW11bUNhcGFjaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmlyc3RFbGVtZW50IgorIHJldHVybj0iRSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5kZXhPZiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5zZXJ0RWxlbWVudEF0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGFzdEVsZW1lbnQiCisgcmV0dXJuPSJFIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGFzdEluZGV4T2YiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZUFsbEVsZW1lbnRzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZUVsZW1lbnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVFbGVtZW50QXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RWxlbWVudEF0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0aW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2l6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRyaW1Ub1NpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJjYXBhY2l0eUluY3JlbWVudCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJlbGVtZW50Q291bnQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZWxlbWVudERhdGEiCisgdHlwZT0iamF2YS5sYW5nLk9iamVjdFtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IldlYWtIYXNoTWFwIgorIGV4dGVuZHM9ImphdmEudXRpbC5BYnN0cmFjdE1hcCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLk1hcCI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iV2Vha0hhc2hNYXAiCisgdHlwZT0iamF2YS51dGlsLldlYWtIYXNoTWFwIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iV2Vha0hhc2hNYXAiCisgdHlwZT0iamF2YS51dGlsLldlYWtIYXNoTWFwIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FwYWNpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iV2Vha0hhc2hNYXAiCisgdHlwZT0iamF2YS51dGlsLldlYWtIYXNoTWFwIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FwYWNpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9hZEZhY3RvciIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IldlYWtIYXNoTWFwIgorIHR5cGU9ImphdmEudXRpbC5XZWFrSGFzaE1hcCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1hcCIgdHlwZT0iamF2YS51dGlsLk1hcCZsdDs/IGV4dGVuZHMgSywgPyBleHRlbmRzIFYmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZW50cnlTZXQiCisgcmV0dXJuPSJqYXZhLnV0aWwuU2V0Jmx0O2phdmEudXRpbC5NYXAuRW50cnkmbHQ7SywgViZndDsmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iamF2YS51dGlsLmNvbmN1cnJlbnQiCis+Cis8Y2xhc3MgbmFtZT0iQWJzdHJhY3RFeGVjdXRvclNlcnZpY2UiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvclNlcnZpY2UiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFic3RyYWN0RXhlY3V0b3JTZXJ2aWNlIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LkFic3RyYWN0RXhlY3V0b3JTZXJ2aWNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9Imludm9rZUFsbCIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2phdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZSZsdDtUJmd0OyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhc2tzIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDtqYXZhLnV0aWwuY29uY3VycmVudC5DYWxsYWJsZSZsdDtUJmd0OyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW52b2tlQWxsIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7amF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlJmx0O1QmZ3Q7Jmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFza3MiIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0O2phdmEudXRpbC5jb25jdXJyZW50LkNhbGxhYmxlJmx0O1QmZ3Q7Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW52b2tlQW55IgorIHJldHVybj0iVCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFza3MiIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0O2phdmEudXRpbC5jb25jdXJyZW50LkNhbGxhYmxlJmx0O1QmZ3Q7Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRXhlY3V0aW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRpb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW52b2tlQW55IgorIHJldHVybj0iVCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFza3MiIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0O2phdmEudXRpbC5jb25jdXJyZW50LkNhbGxhYmxlJmx0O1QmZ3Q7Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkV4ZWN1dGlvbkV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJUaW1lb3V0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lb3V0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1Ym1pdCIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZSZsdDs/Jmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFzayIgdHlwZT0iamF2YS5sYW5nLlJ1bm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1Ym1pdCIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZSZsdDtUJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFzayIgdHlwZT0iamF2YS5sYW5nLlJ1bm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHQiIHR5cGU9IlQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VibWl0IgorIHJldHVybj0iamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlJmx0O1QmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXNrIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5DYWxsYWJsZSZsdDtUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBcnJheUJsb2NraW5nUXVldWUiCisgZXh0ZW5kcz0iamF2YS51dGlsLkFic3RyYWN0UXVldWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC5jb25jdXJyZW50LkJsb2NraW5nUXVldWUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFycmF5QmxvY2tpbmdRdWV1ZSIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5BcnJheUJsb2NraW5nUXVldWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXBhY2l0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBcnJheUJsb2NraW5nUXVldWUiCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuQXJyYXlCbG9ja2luZ1F1ZXVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FwYWNpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFpciIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXJyYXlCbG9ja2luZ1F1ZXVlIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LkFycmF5QmxvY2tpbmdRdWV1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhcGFjaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZhaXIiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0Oz8gZXh0ZW5kcyBFJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRyYWluVG8iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0Oz8gc3VwZXIgRSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhaW5UbyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyBzdXBlciBFJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF4RWxlbWVudHMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpdGVyYXRvciIKKyByZXR1cm49ImphdmEudXRpbC5JdGVyYXRvciZsdDtFJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvZmZlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImUiIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib2ZmZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lb3V0IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwZWVrIgorIHJldHVybj0iRSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwb2xsIgorIHJldHVybj0iRSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwb2xsIgorIHJldHVybj0iRSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZSIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1haW5pbmdDYXBhY2l0eSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRha2UiCisgcmV0dXJuPSJFIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJCbG9ja2luZ1F1ZXVlIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC5RdWV1ZSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImFkZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZSIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb250YWlucyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibyIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmFpblRvIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0Oz8gc3VwZXIgRSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhaW5UbyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDs/IHN1cGVyIEUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYXhFbGVtZW50cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9mZmVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9mZmVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lb3V0IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwb2xsIgorIHJldHVybj0iRSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lb3V0IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImUiIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtYWluaW5nQ2FwYWNpdHkiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im8iIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGFrZSIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQnJva2VuQmFycmllckV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQnJva2VuQmFycmllckV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5Ccm9rZW5CYXJyaWVyRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQnJva2VuQmFycmllckV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5Ccm9rZW5CYXJyaWVyRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDYWxsYWJsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNhbGwiCisgcmV0dXJuPSJWIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ2FuY2VsbGF0aW9uRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDYW5jZWxsYXRpb25FeGNlcHRpb24iCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuQ2FuY2VsbGF0aW9uRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2FuY2VsbGF0aW9uRXhjZXB0aW9uIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LkNhbmNlbGxhdGlvbkV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ29tcGxldGlvblNlcnZpY2UiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJwb2xsIgorIHJldHVybj0iamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlJmx0O1YmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9sbCIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZSZsdDtWJmd0OyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lb3V0IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdWJtaXQiCisgcmV0dXJuPSJqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmUmbHQ7ViZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFzayIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuQ2FsbGFibGUmbHQ7ViZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VibWl0IgorIHJldHVybj0iamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlJmx0O1YmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhc2siIHR5cGU9ImphdmEubGFuZy5SdW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0IiB0eXBlPSJWIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRha2UiCisgcmV0dXJuPSJqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmUmbHQ7ViZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ29uY3VycmVudEhhc2hNYXAiCisgZXh0ZW5kcz0iamF2YS51dGlsLkFic3RyYWN0TWFwIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuY29uY3VycmVudC5Db25jdXJyZW50TWFwIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb25jdXJyZW50SGFzaE1hcCIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5Db25jdXJyZW50SGFzaE1hcCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluaXRpYWxDYXBhY2l0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2FkRmFjdG9yIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29uY3VycmVuY3lMZXZlbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb25jdXJyZW50SGFzaE1hcCIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5Db25jdXJyZW50SGFzaE1hcCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluaXRpYWxDYXBhY2l0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb25jdXJyZW50SGFzaE1hcCIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5Db25jdXJyZW50SGFzaE1hcCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbmN1cnJlbnRIYXNoTWFwIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LkNvbmN1cnJlbnRIYXNoTWFwIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibSIgdHlwZT0iamF2YS51dGlsLk1hcCZsdDs/IGV4dGVuZHMgSywgPyBleHRlbmRzIFYmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY29udGFpbnMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbGVtZW50cyIKKyByZXR1cm49ImphdmEudXRpbC5FbnVtZXJhdGlvbiZsdDtWJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbnRyeVNldCIKKyByZXR1cm49ImphdmEudXRpbC5TZXQmbHQ7amF2YS51dGlsLk1hcC5FbnRyeSZsdDtLLCBWJmd0OyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ia2V5cyIKKyByZXR1cm49ImphdmEudXRpbC5FbnVtZXJhdGlvbiZsdDtLJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRJZkFic2VudCIKKyByZXR1cm49IlYiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iSyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9IlYiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXBsYWNlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJLIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvbGRWYWx1ZSIgdHlwZT0iViI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3VmFsdWUiIHR5cGU9IlYiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVwbGFjZSIKKyByZXR1cm49IlYiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iSyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9IlYiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29uY3VycmVudExpbmtlZFF1ZXVlIgorIGV4dGVuZHM9ImphdmEudXRpbC5BYnN0cmFjdFF1ZXVlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuUXVldWUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbmN1cnJlbnRMaW5rZWRRdWV1ZSIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5Db25jdXJyZW50TGlua2VkUXVldWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb25jdXJyZW50TGlua2VkUXVldWUiCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuQ29uY3VycmVudExpbmtlZFF1ZXVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyBleHRlbmRzIEUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iaXRlcmF0b3IiCisgcmV0dXJuPSJqYXZhLnV0aWwuSXRlcmF0b3ImbHQ7RSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib2ZmZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBlZWsiCisgcmV0dXJuPSJFIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBvbGwiCisgcmV0dXJuPSJFIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkNvbmN1cnJlbnRNYXAiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLk1hcCI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9InB1dElmQWJzZW50IgorIHJldHVybj0iViIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9IksiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJWIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXBsYWNlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9IksiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9sZFZhbHVlIiB0eXBlPSJWIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdWYWx1ZSIgdHlwZT0iViI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXBsYWNlIgorIHJldHVybj0iViIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9IksiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJWIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJDb3B5T25Xcml0ZUFycmF5TGlzdCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ2xvbmVhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC5MaXN0Ij4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC5SYW5kb21BY2Nlc3MiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvcHlPbldyaXRlQXJyYXlMaXN0IgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LkNvcHlPbldyaXRlQXJyYXlMaXN0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29weU9uV3JpdGVBcnJheUxpc3QiCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuQ29weU9uV3JpdGVBcnJheUxpc3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDs/IGV4dGVuZHMgRSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvcHlPbldyaXRlQXJyYXlMaXN0IgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LkNvcHlPbldyaXRlQXJyYXlMaXN0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idG9Db3B5SW4iIHR5cGU9IkVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImUiIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZWxlbWVudCIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRBbGwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDs/IGV4dGVuZHMgRSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkQWxsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyBleHRlbmRzIEUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZEFsbEFic2VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyBleHRlbmRzIEUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZElmQWJzZW50IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZSIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbnRhaW5zIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibyIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb250YWluc0FsbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0Oz8mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5kZXhPZiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibyIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbmRleE9mIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRW1wdHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Iml0ZXJhdG9yIgorIHJldHVybj0iamF2YS51dGlsLkl0ZXJhdG9yJmx0O0UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxhc3RJbmRleE9mIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxhc3RJbmRleE9mIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxpc3RJdGVyYXRvciIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0SXRlcmF0b3ImbHQ7RSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGlzdEl0ZXJhdG9yIgorIHJldHVybj0iamF2YS51dGlsLkxpc3RJdGVyYXRvciZsdDtFJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmUiCisgcmV0dXJuPSJFIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im8iIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlQWxsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmV0YWluQWxsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0IgorIHJldHVybj0iRSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZWxlbWVudCIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1Ykxpc3QiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDtFJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZnJvbUluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b0FycmF5IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvQXJyYXkiCisgcmV0dXJuPSJUW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImEiIHR5cGU9IlRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb3B5T25Xcml0ZUFycmF5U2V0IgorIGV4dGVuZHM9ImphdmEudXRpbC5BYnN0cmFjdFNldCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvcHlPbldyaXRlQXJyYXlTZXQiCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuQ29weU9uV3JpdGVBcnJheVNldCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvcHlPbldyaXRlQXJyYXlTZXQiCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuQ29weU9uV3JpdGVBcnJheVNldCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0Oz8gZXh0ZW5kcyBFJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9Iml0ZXJhdG9yIgorIHJldHVybj0iamF2YS51dGlsLkl0ZXJhdG9yJmx0O0UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ291bnREb3duTGF0Y2giCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvdW50RG93bkxhdGNoIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LkNvdW50RG93bkxhdGNoIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImF3YWl0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhd2FpdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVvdXQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVuaXQiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvdW50RG93biIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q291bnQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkN5Y2xpY0JhcnJpZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkN5Y2xpY0JhcnJpZXIiCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuQ3ljbGljQmFycmllciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcnRpZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmFycmllckFjdGlvbiIgdHlwZT0iamF2YS5sYW5nLlJ1bm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDeWNsaWNCYXJyaWVyIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LkN5Y2xpY0JhcnJpZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJ0aWVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhd2FpdCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iQnJva2VuQmFycmllckV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuQnJva2VuQmFycmllckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhd2FpdCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkJyb2tlbkJhcnJpZXJFeGNlcHRpb24iIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LkJyb2tlbkJhcnJpZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlRpbWVvdXRFeGNlcHRpb24iIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVvdXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TnVtYmVyV2FpdGluZyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJ0aWVzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQnJva2VuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRGVsYXlRdWV1ZSIKKyBleHRlbmRzPSJqYXZhLnV0aWwuQWJzdHJhY3RRdWV1ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuQmxvY2tpbmdRdWV1ZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGVsYXlRdWV1ZSIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5EZWxheVF1ZXVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGVsYXlRdWV1ZSIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5EZWxheVF1ZXVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyBleHRlbmRzIEUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZHJhaW5UbyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyBzdXBlciBFJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmFpblRvIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDs/IHN1cGVyIEUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYXhFbGVtZW50cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Iml0ZXJhdG9yIgorIHJldHVybj0iamF2YS51dGlsLkl0ZXJhdG9yJmx0O0UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9mZmVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZSIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvZmZlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImUiIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVvdXQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVuaXQiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBlZWsiCisgcmV0dXJuPSJFIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBvbGwiCisgcmV0dXJuPSJFIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBvbGwiCisgcmV0dXJuPSJFIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lb3V0IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbWFpbmluZ0NhcGFjaXR5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGFrZSIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkRlbGF5ZWQiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNvbXBhcmFibGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXREZWxheSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkV4Y2hhbmdlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRXhjaGFuZ2VyIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LkV4Y2hhbmdlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJleGNoYW5nZSIKKyByZXR1cm49IlYiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9IlYiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhjaGFuZ2UiCisgcmV0dXJuPSJWIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJWIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lb3V0IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iVGltZW91dEV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZW91dEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJFeGVjdXRpb25FeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLkV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkV4ZWN1dGlvbkV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRpb25FeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFeGVjdXRpb25FeGNlcHRpb24iCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0aW9uRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRXhlY3V0aW9uRXhjZXB0aW9uIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dGlvbkV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFeGVjdXRpb25FeGNlcHRpb24iCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0aW9uRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iRXhlY3V0b3IiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJleGVjdXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb21tYW5kIiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkV4ZWN1dG9yQ29tcGxldGlvblNlcnZpY2UiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuQ29tcGxldGlvblNlcnZpY2UiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkV4ZWN1dG9yQ29tcGxldGlvblNlcnZpY2UiCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JDb21wbGV0aW9uU2VydmljZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4ZWN1dG9yIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRXhlY3V0b3JDb21wbGV0aW9uU2VydmljZSIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvckNvbXBsZXRpb25TZXJ2aWNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhlY3V0b3IiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb21wbGV0aW9uUXVldWUiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LkJsb2NraW5nUXVldWUmbHQ7amF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlJmx0O1YmZ3Q7Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InBvbGwiCisgcmV0dXJuPSJqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmUmbHQ7ViZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9sbCIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZSZsdDtWJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VibWl0IgorIHJldHVybj0iamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlJmx0O1YmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXNrIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5DYWxsYWJsZSZsdDtWJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdWJtaXQiCisgcmV0dXJuPSJqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmUmbHQ7ViZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhc2siIHR5cGU9ImphdmEubGFuZy5SdW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0IiB0eXBlPSJWIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRha2UiCisgcmV0dXJuPSJqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmUmbHQ7ViZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkV4ZWN1dG9yU2VydmljZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRvciI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImF3YWl0VGVybWluYXRpb24iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVvdXQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVuaXQiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imludm9rZUFsbCIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2phdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZSZsdDtUJmd0OyZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFza3MiIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0O2phdmEudXRpbC5jb25jdXJyZW50LkNhbGxhYmxlJmx0O1QmZ3Q7Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnZva2VBbGwiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDtqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmUmbHQ7VCZndDsmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhc2tzIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDtqYXZhLnV0aWwuY29uY3VycmVudC5DYWxsYWJsZSZsdDtUJmd0OyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVvdXQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVuaXQiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imludm9rZUFueSIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFza3MiIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0O2phdmEudXRpbC5jb25jdXJyZW50LkNhbGxhYmxlJmx0O1QmZ3Q7Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRXhlY3V0aW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRpb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW52b2tlQW55IgorIHJldHVybj0iVCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXNrcyIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7amF2YS51dGlsLmNvbmN1cnJlbnQuQ2FsbGFibGUmbHQ7VCZndDsmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lb3V0IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRXhlY3V0aW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRpb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlRpbWVvdXRFeGNlcHRpb24iIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVvdXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTaHV0ZG93biIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1Rlcm1pbmF0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2h1dGRvd24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2h1dGRvd25Ob3ciCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDtqYXZhLmxhbmcuUnVubmFibGUmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VibWl0IgorIHJldHVybj0iamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlJmx0O1QmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhc2siIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LkNhbGxhYmxlJmx0O1QmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1Ym1pdCIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZSZsdDtUJmd0OyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXNrIiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdCIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdWJtaXQiCisgcmV0dXJuPSJqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmUmbHQ7PyZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFzayIgdHlwZT0iamF2YS5sYW5nLlJ1bm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJFeGVjdXRvcnMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJjYWxsYWJsZSIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LkNhbGxhYmxlJmx0O1QmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhc2siIHR5cGU9ImphdmEubGFuZy5SdW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0IiB0eXBlPSJUIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNhbGxhYmxlIgorIHJldHVybj0iamF2YS51dGlsLmNvbmN1cnJlbnQuQ2FsbGFibGUmbHQ7amF2YS5sYW5nLk9iamVjdCZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFzayIgdHlwZT0iamF2YS5sYW5nLlJ1bm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNhbGxhYmxlIgorIHJldHVybj0iamF2YS51dGlsLmNvbmN1cnJlbnQuQ2FsbGFibGUmbHQ7amF2YS5sYW5nLk9iamVjdCZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByaXZpbGVnZWRBY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2FsbGFibGUiCisgcmV0dXJuPSJqYXZhLnV0aWwuY29uY3VycmVudC5DYWxsYWJsZSZsdDtqYXZhLmxhbmcuT2JqZWN0Jmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJpdmlsZWdlZEV4Y2VwdGlvbkFjdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWZhdWx0VGhyZWFkRmFjdG9yeSIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZEZhY3RvcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdDYWNoZWRUaHJlYWRQb29sIgorIHJldHVybj0iamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JTZXJ2aWNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3Q2FjaGVkVGhyZWFkUG9vbCIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9yU2VydmljZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aHJlYWRGYWN0b3J5IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRGYWN0b3J5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld0ZpeGVkVGhyZWFkUG9vbCIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9yU2VydmljZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuVGhyZWFkcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld0ZpeGVkVGhyZWFkUG9vbCIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9yU2VydmljZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuVGhyZWFkcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aHJlYWRGYWN0b3J5IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRGYWN0b3J5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1NjaGVkdWxlZFRocmVhZFBvb2wiCisgcmV0dXJuPSJqYXZhLnV0aWwuY29uY3VycmVudC5TY2hlZHVsZWRFeGVjdXRvclNlcnZpY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29yZVBvb2xTaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3U2NoZWR1bGVkVGhyZWFkUG9vbCIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LlNjaGVkdWxlZEV4ZWN1dG9yU2VydmljZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb3JlUG9vbFNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhyZWFkRmFjdG9yeSIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkRmFjdG9yeSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdTaW5nbGVUaHJlYWRFeGVjdXRvciIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9yU2VydmljZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1NpbmdsZVRocmVhZEV4ZWN1dG9yIgorIHJldHVybj0iamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JTZXJ2aWNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRocmVhZEZhY3RvcnkiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZEZhY3RvcnkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3U2luZ2xlVGhyZWFkU2NoZWR1bGVkRXhlY3V0b3IiCisgcmV0dXJuPSJqYXZhLnV0aWwuY29uY3VycmVudC5TY2hlZHVsZWRFeGVjdXRvclNlcnZpY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdTaW5nbGVUaHJlYWRTY2hlZHVsZWRFeGVjdXRvciIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LlNjaGVkdWxlZEV4ZWN1dG9yU2VydmljZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aHJlYWRGYWN0b3J5IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRGYWN0b3J5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByaXZpbGVnZWRDYWxsYWJsZSIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LkNhbGxhYmxlJmx0O1QmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbGxhYmxlIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5DYWxsYWJsZSZsdDtUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcml2aWxlZ2VkQ2FsbGFibGVVc2luZ0N1cnJlbnRDbGFzc0xvYWRlciIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LkNhbGxhYmxlJmx0O1QmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbGxhYmxlIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5DYWxsYWJsZSZsdDtUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcml2aWxlZ2VkVGhyZWFkRmFjdG9yeSIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZEZhY3RvcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bmNvbmZpZ3VyYWJsZUV4ZWN1dG9yU2VydmljZSIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dG9yU2VydmljZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleGVjdXRvciIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JTZXJ2aWNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVuY29uZmlndXJhYmxlU2NoZWR1bGVkRXhlY3V0b3JTZXJ2aWNlIgorIHJldHVybj0iamF2YS51dGlsLmNvbmN1cnJlbnQuU2NoZWR1bGVkRXhlY3V0b3JTZXJ2aWNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4ZWN1dG9yIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5TY2hlZHVsZWRFeGVjdXRvclNlcnZpY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkZ1dHVyZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNhbmNlbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF5SW50ZXJydXB0SWZSdW5uaW5nIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49IlYiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iRXhlY3V0aW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRpb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iViIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lb3V0IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRXhlY3V0aW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5FeGVjdXRpb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlRpbWVvdXRFeGNlcHRpb24iIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVvdXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNDYW5jZWxsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNEb25lIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJGdXR1cmVUYXNrIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC5jb25jdXJyZW50LkZ1dHVyZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZ1dHVyZVRhc2siCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuRnV0dXJlVGFzayIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbGxhYmxlIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5DYWxsYWJsZSZsdDtWJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRnV0dXJlVGFzayIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmVUYXNrIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icnVubmFibGUiIHR5cGU9ImphdmEubGFuZy5SdW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0IiB0eXBlPSJWIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2FuY2VsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF5SW50ZXJydXB0SWZSdW5uaW5nIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRvbmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49IlYiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkV4ZWN1dGlvbkV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49IlYiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVvdXQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVuaXQiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJFeGVjdXRpb25FeGNlcHRpb24iIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LkV4ZWN1dGlvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iVGltZW91dEV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZW91dEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0NhbmNlbGxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNEb25lIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJydW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJ1bkFuZFJlc2V0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJWIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEV4Y2VwdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InQiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTGlua2VkQmxvY2tpbmdRdWV1ZSIKKyBleHRlbmRzPSJqYXZhLnV0aWwuQWJzdHJhY3RRdWV1ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuQmxvY2tpbmdRdWV1ZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGlua2VkQmxvY2tpbmdRdWV1ZSIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5MaW5rZWRCbG9ja2luZ1F1ZXVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGlua2VkQmxvY2tpbmdRdWV1ZSIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5MaW5rZWRCbG9ja2luZ1F1ZXVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FwYWNpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGlua2VkQmxvY2tpbmdRdWV1ZSIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5MaW5rZWRCbG9ja2luZ1F1ZXVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyBleHRlbmRzIEUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZHJhaW5UbyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyBzdXBlciBFJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmFpblRvIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDs/IHN1cGVyIEUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYXhFbGVtZW50cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Iml0ZXJhdG9yIgorIHJldHVybj0iamF2YS51dGlsLkl0ZXJhdG9yJmx0O0UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9mZmVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZSIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib2ZmZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBlZWsiCisgcmV0dXJuPSJFIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBvbGwiCisgcmV0dXJuPSJFIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lb3V0IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwb2xsIgorIHJldHVybj0iRSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbWFpbmluZ0NhcGFjaXR5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGFrZSIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUHJpb3JpdHlCbG9ja2luZ1F1ZXVlIgorIGV4dGVuZHM9ImphdmEudXRpbC5BYnN0cmFjdFF1ZXVlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuY29uY3VycmVudC5CbG9ja2luZ1F1ZXVlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcmlvcml0eUJsb2NraW5nUXVldWUiCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuUHJpb3JpdHlCbG9ja2luZ1F1ZXVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJpb3JpdHlCbG9ja2luZ1F1ZXVlIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlByaW9yaXR5QmxvY2tpbmdRdWV1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluaXRpYWxDYXBhY2l0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcmlvcml0eUJsb2NraW5nUXVldWUiCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuUHJpb3JpdHlCbG9ja2luZ1F1ZXVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5pdGlhbENhcGFjaXR5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbXBhcmF0b3IiIHR5cGU9ImphdmEudXRpbC5Db21wYXJhdG9yJmx0Oz8gc3VwZXIgRSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByaW9yaXR5QmxvY2tpbmdRdWV1ZSIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5Qcmlvcml0eUJsb2NraW5nUXVldWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDs/IGV4dGVuZHMgRSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjb21wYXJhdG9yIgorIHJldHVybj0iamF2YS51dGlsLkNvbXBhcmF0b3ImbHQ7PyBzdXBlciBFJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcmFpblRvIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDs/IHN1cGVyIEUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYWluVG8iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0Oz8gc3VwZXIgRSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1heEVsZW1lbnRzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXRlcmF0b3IiCisgcmV0dXJuPSJqYXZhLnV0aWwuSXRlcmF0b3ImbHQ7RSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib2ZmZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9mZmVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZSIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGVlayIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9sbCIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9sbCIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVvdXQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVuaXQiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImUiIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtYWluaW5nQ2FwYWNpdHkiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0YWtlIgorIHJldHVybj0iRSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSZWplY3RlZEV4ZWN1dGlvbkV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlamVjdGVkRXhlY3V0aW9uRXhjZXB0aW9uIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlJlamVjdGVkRXhlY3V0aW9uRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVqZWN0ZWRFeGVjdXRpb25FeGNlcHRpb24iCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuUmVqZWN0ZWRFeGVjdXRpb25FeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZWplY3RlZEV4ZWN1dGlvbkV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5SZWplY3RlZEV4ZWN1dGlvbkV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZWplY3RlZEV4ZWN1dGlvbkV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5SZWplY3RlZEV4ZWN1dGlvbkV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlJlamVjdGVkRXhlY3V0aW9uSGFuZGxlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InJlamVjdGVkRXhlY3V0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4ZWN1dG9yIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJTY2hlZHVsZWRFeGVjdXRvclNlcnZpY2UiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuRXhlY3V0b3JTZXJ2aWNlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0ic2NoZWR1bGUiCisgcmV0dXJuPSJqYXZhLnV0aWwuY29uY3VycmVudC5TY2hlZHVsZWRGdXR1cmUmbHQ7PyZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29tbWFuZCIgdHlwZT0iamF2YS5sYW5nLlJ1bm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWxheSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2NoZWR1bGUiCisgcmV0dXJuPSJqYXZhLnV0aWwuY29uY3VycmVudC5TY2hlZHVsZWRGdXR1cmUmbHQ7ViZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsbGFibGUiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LkNhbGxhYmxlJmx0O1YmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWxheSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2NoZWR1bGVBdEZpeGVkUmF0ZSIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LlNjaGVkdWxlZEZ1dHVyZSZsdDs/Jmd0OyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb21tYW5kIiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluaXRpYWxEZWxheSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGVyaW9kIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzY2hlZHVsZVdpdGhGaXhlZERlbGF5IgorIHJldHVybj0iamF2YS51dGlsLmNvbmN1cnJlbnQuU2NoZWR1bGVkRnV0dXJlJmx0Oz8mZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbW1hbmQiIHR5cGU9ImphdmEubGFuZy5SdW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5pdGlhbERlbGF5IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWxheSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJTY2hlZHVsZWRGdXR1cmUiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuRGVsYXllZCI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuY29uY3VycmVudC5GdXR1cmUiPgorPC9pbXBsZW1lbnRzPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iU2NoZWR1bGVkVGhyZWFkUG9vbEV4ZWN1dG9yIgorIGV4dGVuZHM9ImphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuU2NoZWR1bGVkRXhlY3V0b3JTZXJ2aWNlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTY2hlZHVsZWRUaHJlYWRQb29sRXhlY3V0b3IiCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuU2NoZWR1bGVkVGhyZWFkUG9vbEV4ZWN1dG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29yZVBvb2xTaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNjaGVkdWxlZFRocmVhZFBvb2xFeGVjdXRvciIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5TY2hlZHVsZWRUaHJlYWRQb29sRXhlY3V0b3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb3JlUG9vbFNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhyZWFkRmFjdG9yeSIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkRmFjdG9yeSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2NoZWR1bGVkVGhyZWFkUG9vbEV4ZWN1dG9yIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlNjaGVkdWxlZFRocmVhZFBvb2xFeGVjdXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvcmVQb29sU2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5SZWplY3RlZEV4ZWN1dGlvbkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNjaGVkdWxlZFRocmVhZFBvb2xFeGVjdXRvciIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5TY2hlZHVsZWRUaHJlYWRQb29sRXhlY3V0b3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb3JlUG9vbFNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhyZWFkRmFjdG9yeSIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkRmFjdG9yeSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlciIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuUmVqZWN0ZWRFeGVjdXRpb25IYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGludWVFeGlzdGluZ1BlcmlvZGljVGFza3NBZnRlclNodXRkb3duUG9saWN5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeGVjdXRlRXhpc3RpbmdEZWxheWVkVGFza3NBZnRlclNodXRkb3duUG9saWN5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzY2hlZHVsZSIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LlNjaGVkdWxlZEZ1dHVyZSZsdDs/Jmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29tbWFuZCIgdHlwZT0iamF2YS5sYW5nLlJ1bm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWxheSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2NoZWR1bGUiCisgcmV0dXJuPSJqYXZhLnV0aWwuY29uY3VycmVudC5TY2hlZHVsZWRGdXR1cmUmbHQ7ViZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbGxhYmxlIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5DYWxsYWJsZSZsdDtWJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVsYXkiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVuaXQiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNjaGVkdWxlQXRGaXhlZFJhdGUiCisgcmV0dXJuPSJqYXZhLnV0aWwuY29uY3VycmVudC5TY2hlZHVsZWRGdXR1cmUmbHQ7PyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbW1hbmQiIHR5cGU9ImphdmEubGFuZy5SdW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5pdGlhbERlbGF5IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwZXJpb2QiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVuaXQiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNjaGVkdWxlV2l0aEZpeGVkRGVsYXkiCisgcmV0dXJuPSJqYXZhLnV0aWwuY29uY3VycmVudC5TY2hlZHVsZWRGdXR1cmUmbHQ7PyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbW1hbmQiIHR5cGU9ImphdmEubGFuZy5SdW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5pdGlhbERlbGF5IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWxheSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29udGludWVFeGlzdGluZ1BlcmlvZGljVGFza3NBZnRlclNodXRkb3duUG9saWN5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RXhlY3V0ZUV4aXN0aW5nRGVsYXllZFRhc2tzQWZ0ZXJTaHV0ZG93blBvbGljeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNlbWFwaG9yZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2VtYXBob3JlIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlNlbWFwaG9yZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pdHMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2VtYXBob3JlIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlNlbWFwaG9yZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pdHMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFpciIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFjcXVpcmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFjcXVpcmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwZXJtaXRzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWNxdWlyZVVuaW50ZXJydXB0aWJseSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWNxdWlyZVVuaW50ZXJydXB0aWJseSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pdHMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhdmFpbGFibGVQZXJtaXRzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRyYWluUGVybWl0cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRRdWV1ZUxlbmd0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFF1ZXVlZFRocmVhZHMiCisgcmV0dXJuPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDtqYXZhLmxhbmcuVGhyZWFkJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNRdWV1ZWRUaHJlYWRzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRmFpciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVkdWNlUGVybWl0cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlZHVjdGlvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbGVhc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbGVhc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwZXJtaXRzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idHJ5QWNxdWlyZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idHJ5QWNxdWlyZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVvdXQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVuaXQiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRyeUFjcXVpcmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwZXJtaXRzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idHJ5QWNxdWlyZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBlcm1pdHMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3luY2hyb25vdXNRdWV1ZSIKKyBleHRlbmRzPSJqYXZhLnV0aWwuQWJzdHJhY3RRdWV1ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuQmxvY2tpbmdRdWV1ZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3luY2hyb25vdXNRdWV1ZSIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5TeW5jaHJvbm91c1F1ZXVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3luY2hyb25vdXNRdWV1ZSIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5TeW5jaHJvbm91c1F1ZXVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFpciIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRyYWluVG8iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0Oz8gc3VwZXIgRSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZHJhaW5UbyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYyIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7PyBzdXBlciBFJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF4RWxlbWVudHMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpdGVyYXRvciIKKyByZXR1cm49ImphdmEudXRpbC5JdGVyYXRvciZsdDtFJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvZmZlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im8iIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVvdXQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVuaXQiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9mZmVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZSIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwZWVrIgorIHJldHVybj0iRSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwb2xsIgorIHJldHVybj0iRSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9sbCIKKyByZXR1cm49IkUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibyIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1haW5pbmdDYXBhY2l0eSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRha2UiCisgcmV0dXJuPSJFIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJUaHJlYWRGYWN0b3J5IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ibmV3VGhyZWFkIgorIHJldHVybj0iamF2YS5sYW5nLlRocmVhZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlRocmVhZFBvb2xFeGVjdXRvciIKKyBleHRlbmRzPSJqYXZhLnV0aWwuY29uY3VycmVudC5BYnN0cmFjdEV4ZWN1dG9yU2VydmljZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRocmVhZFBvb2xFeGVjdXRvciIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb3JlUG9vbFNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF4aW11bVBvb2xTaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtlZXBBbGl2ZVRpbWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVuaXQiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3b3JrUXVldWUiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LkJsb2NraW5nUXVldWUmbHQ7amF2YS5sYW5nLlJ1bm5hYmxlJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGhyZWFkUG9vbEV4ZWN1dG9yIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvcmVQb29sU2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYXhpbXVtUG9vbFNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2VlcEFsaXZlVGltZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndvcmtRdWV1ZSIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuQmxvY2tpbmdRdWV1ZSZsdDtqYXZhLmxhbmcuUnVubmFibGUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aHJlYWRGYWN0b3J5IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRGYWN0b3J5Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUaHJlYWRQb29sRXhlY3V0b3IiCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29yZVBvb2xTaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1heGltdW1Qb29sU2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJrZWVwQWxpdmVUaW1lIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id29ya1F1ZXVlIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5CbG9ja2luZ1F1ZXVlJmx0O2phdmEubGFuZy5SdW5uYWJsZSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhhbmRsZXIiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlJlamVjdGVkRXhlY3V0aW9uSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGhyZWFkUG9vbEV4ZWN1dG9yIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvcmVQb29sU2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYXhpbXVtUG9vbFNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2VlcEFsaXZlVGltZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndvcmtRdWV1ZSIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuQmxvY2tpbmdRdWV1ZSZsdDtqYXZhLmxhbmcuUnVubmFibGUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aHJlYWRGYWN0b3J5IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRGYWN0b3J5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5SZWplY3RlZEV4ZWN1dGlvbkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZnRlckV4ZWN1dGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InQiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXdhaXRUZXJtaW5hdGlvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVvdXQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVuaXQiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImJlZm9yZUV4ZWN1dGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0IiB0eXBlPSJqYXZhLmxhbmcuVGhyZWFkIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhlY3V0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbW1hbmQiIHR5cGU9ImphdmEubGFuZy5SdW5uYWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBY3RpdmVDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb21wbGV0ZWRUYXNrQ291bnQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvcmVQb29sU2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRLZWVwQWxpdmVUaW1lIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGFyZ2VzdFBvb2xTaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1heGltdW1Qb29sU2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQb29sU2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRRdWV1ZSIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LkJsb2NraW5nUXVldWUmbHQ7amF2YS5sYW5nLlJ1bm5hYmxlJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZWplY3RlZEV4ZWN1dGlvbkhhbmRsZXIiCisgcmV0dXJuPSJqYXZhLnV0aWwuY29uY3VycmVudC5SZWplY3RlZEV4ZWN1dGlvbkhhbmRsZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGFza0NvdW50IgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaHJlYWRGYWN0b3J5IgorIHJldHVybj0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkRmFjdG9yeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1NodXRkb3duIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1Rlcm1pbmF0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzVGVybWluYXRpbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByZXN0YXJ0QWxsQ29yZVRocmVhZHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJlc3RhcnRDb3JlVGhyZWFkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXJnZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFzayIgdHlwZT0iamF2YS5sYW5nLlJ1bm5hYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvcmVQb29sU2l6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvcmVQb29sU2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEtlZXBBbGl2ZVRpbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNYXhpbXVtUG9vbFNpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXhpbXVtUG9vbFNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZWplY3RlZEV4ZWN1dGlvbkhhbmRsZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5SZWplY3RlZEV4ZWN1dGlvbkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGhyZWFkRmFjdG9yeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRocmVhZEZhY3RvcnkiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZEZhY3RvcnkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2h1dGRvd24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNodXRkb3duTm93IgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7amF2YS5sYW5nLlJ1bm5hYmxlJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0ZXJtaW5hdGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUaHJlYWRQb29sRXhlY3V0b3IuQWJvcnRQb2xpY3kiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuY29uY3VycmVudC5SZWplY3RlZEV4ZWN1dGlvbkhhbmRsZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRocmVhZFBvb2xFeGVjdXRvci5BYm9ydFBvbGljeSIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaHJlYWRQb29sRXhlY3V0b3IuQWJvcnRQb2xpY3kiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0icmVqZWN0ZWRFeGVjdXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImUiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUaHJlYWRQb29sRXhlY3V0b3IuQ2FsbGVyUnVuc1BvbGljeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC5jb25jdXJyZW50LlJlamVjdGVkRXhlY3V0aW9uSGFuZGxlciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGhyZWFkUG9vbEV4ZWN1dG9yLkNhbGxlclJ1bnNQb2xpY3kiCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLkNhbGxlclJ1bnNQb2xpY3kiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0icmVqZWN0ZWRFeGVjdXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImUiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUaHJlYWRQb29sRXhlY3V0b3IuRGlzY2FyZE9sZGVzdFBvbGljeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC5jb25jdXJyZW50LlJlamVjdGVkRXhlY3V0aW9uSGFuZGxlciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGhyZWFkUG9vbEV4ZWN1dG9yLkRpc2NhcmRPbGRlc3RQb2xpY3kiCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLkRpc2NhcmRPbGRlc3RQb2xpY3kiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0icmVqZWN0ZWRFeGVjdXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImUiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUaHJlYWRQb29sRXhlY3V0b3IuRGlzY2FyZFBvbGljeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC5jb25jdXJyZW50LlJlamVjdGVkRXhlY3V0aW9uSGFuZGxlciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGhyZWFkUG9vbEV4ZWN1dG9yLkRpc2NhcmRQb2xpY3kiCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGhyZWFkUG9vbEV4ZWN1dG9yLkRpc2NhcmRQb2xpY3kiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0icmVqZWN0ZWRFeGVjdXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJqYXZhLmxhbmcuUnVubmFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImUiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRocmVhZFBvb2xFeGVjdXRvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUaW1lVW5pdCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRW51bSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJjb252ZXJ0IgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlRHVyYXRpb24iIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZVVuaXQiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNsZWVwIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0aW1lZEpvaW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aHJlYWQiIHR5cGU9ImphdmEubGFuZy5UaHJlYWQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVvdXQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGltZWRXYWl0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lb3V0IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvTWljcm9zIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHVyYXRpb24iIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9NaWxsaXMiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkdXJhdGlvbiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b05hbm9zIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHVyYXRpb24iIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9TZWNvbmRzIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHVyYXRpb24iIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVPZiIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVzIgorIHJldHVybj0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVGltZW91dEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGltZW91dEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lb3V0RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGltZW91dEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lb3V0RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuYXRvbWljIgorPgorPGNsYXNzIG5hbWU9IkF0b21pY0Jvb2xlYW4iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkF0b21pY0Jvb2xlYW4iCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuYXRvbWljLkF0b21pY0Jvb2xlYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbml0aWFsVmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkF0b21pY0Jvb2xlYW4iCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuYXRvbWljLkF0b21pY0Jvb2xlYW4iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY29tcGFyZUFuZFNldCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cGRhdGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFuZFNldCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3VmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdWYWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3ZWFrQ29tcGFyZUFuZFNldCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXBkYXRlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkF0b21pY0ludGVnZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk51bWJlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkF0b21pY0ludGVnZXIiCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuYXRvbWljLkF0b21pY0ludGVnZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbml0aWFsVmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXRvbWljSW50ZWdlciIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5hdG9taWMuQXRvbWljSW50ZWdlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRBbmRHZXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVsdGEiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlQW5kU2V0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3QiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXBkYXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVjcmVtZW50QW5kR2V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZG91YmxlVmFsdWUiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmxvYXRWYWx1ZSIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFuZEFkZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZWx0YSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFuZERlY3JlbWVudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFuZEluY3JlbWVudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFuZFNldCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdWYWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluY3JlbWVudEFuZEdldCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImludFZhbHVlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvbmdWYWx1ZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdWYWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndlYWtDb21wYXJlQW5kU2V0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3QiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXBkYXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQXRvbWljSW50ZWdlckFycmF5IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBdG9taWNJbnRlZ2VyQXJyYXkiCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuYXRvbWljLkF0b21pY0ludGVnZXJBcnJheSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBdG9taWNJbnRlZ2VyQXJyYXkiCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuYXRvbWljLkF0b21pY0ludGVnZXJBcnJheSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFycmF5IiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZEFuZEdldCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbHRhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcGFyZUFuZFNldCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3QiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXBkYXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVjcmVtZW50QW5kR2V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFuZEFkZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbHRhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QW5kRGVjcmVtZW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbmRJbmNyZW1lbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFuZFNldCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1ZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5jcmVtZW50QW5kR2V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3VmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3ZWFrQ29tcGFyZUFuZFNldCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3QiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXBkYXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQXRvbWljSW50ZWdlckZpZWxkVXBkYXRlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBdG9taWNJbnRlZ2VyRmllbGRVcGRhdGVyIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LmF0b21pYy5BdG9taWNJbnRlZ2VyRmllbGRVcGRhdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZEFuZEdldCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqIiB0eXBlPSJUIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWx0YSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbXBhcmVBbmRTZXQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iaiIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVwZGF0ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlY3JlbWVudEFuZEdldCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqIiB0eXBlPSJUIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9IlQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QW5kQWRkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9IlQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbHRhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QW5kRGVjcmVtZW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9IlQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QW5kSW5jcmVtZW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9IlQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QW5kU2V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9IlQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1ZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5jcmVtZW50QW5kR2V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9IlQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3VXBkYXRlciIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LmF0b21pYy5BdG9taWNJbnRlZ2VyRmllbGRVcGRhdGVyJmx0O1UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRjbGFzcyIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0O1UmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9IlQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1ZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id2Vha0NvbXBhcmVBbmRTZXQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iaiIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVwZGF0ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkF0b21pY0xvbmciCisgZXh0ZW5kcz0iamF2YS5sYW5nLk51bWJlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkF0b21pY0xvbmciCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuYXRvbWljLkF0b21pY0xvbmciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbml0aWFsVmFsdWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkF0b21pY0xvbmciCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuYXRvbWljLkF0b21pY0xvbmciCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkQW5kR2V0IgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZWx0YSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlQW5kU2V0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3QiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVwZGF0ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWNyZW1lbnRBbmRHZXQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZG91YmxlVmFsdWUiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmxvYXRWYWx1ZSIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbmRBZGQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbHRhIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFuZERlY3JlbWVudCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbmRJbmNyZW1lbnQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QW5kU2V0IgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdWYWx1ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbmNyZW1lbnRBbmRHZXQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW50VmFsdWUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9uZ1ZhbHVlIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1ZhbHVlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndlYWtDb21wYXJlQW5kU2V0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3QiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVwZGF0ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBdG9taWNMb25nQXJyYXkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkF0b21pY0xvbmdBcnJheSIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5hdG9taWMuQXRvbWljTG9uZ0FycmF5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkF0b21pY0xvbmdBcnJheSIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5hdG9taWMuQXRvbWljTG9uZ0FycmF5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImxvbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZEFuZEdldCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVsdGEiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcGFyZUFuZFNldCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3QiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVwZGF0ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWNyZW1lbnRBbmRHZXQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbmRBZGQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVsdGEiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QW5kRGVjcmVtZW50IgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QW5kSW5jcmVtZW50IgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QW5kU2V0IgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1ZhbHVlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluY3JlbWVudEFuZEdldCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxlbmd0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdWYWx1ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3ZWFrQ29tcGFyZUFuZFNldCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3QiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVwZGF0ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBdG9taWNMb25nRmllbGRVcGRhdGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkF0b21pY0xvbmdGaWVsZFVwZGF0ZXIiCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuYXRvbWljLkF0b21pY0xvbmdGaWVsZFVwZGF0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkQW5kR2V0IgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqIiB0eXBlPSJUIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWx0YSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlQW5kU2V0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9IlQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXBkYXRlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlY3JlbWVudEFuZEdldCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iaiIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iaiIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbmRBZGQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9IlQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbHRhIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFuZERlY3JlbWVudCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iaiIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbmRJbmNyZW1lbnQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9IlQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QW5kU2V0IgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqIiB0eXBlPSJUIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdWYWx1ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbmNyZW1lbnRBbmRHZXQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9IlQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3VXBkYXRlciIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LmF0b21pYy5BdG9taWNMb25nRmllbGRVcGRhdGVyJmx0O1UmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRjbGFzcyIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0O1UmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmaWVsZE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9IlQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1ZhbHVlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndlYWtDb21wYXJlQW5kU2V0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9IlQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXBkYXRlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkF0b21pY01hcmthYmxlUmVmZXJlbmNlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBdG9taWNNYXJrYWJsZVJlZmVyZW5jZSIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5hdG9taWMuQXRvbWljTWFya2FibGVSZWZlcmVuY2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbml0aWFsUmVmIiB0eXBlPSJWIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbml0aWFsTWFyayIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImF0dGVtcHRNYXJrIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWRSZWZlcmVuY2UiIHR5cGU9IlYiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld01hcmsiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcGFyZUFuZFNldCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkUmVmZXJlbmNlIiB0eXBlPSJWIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdSZWZlcmVuY2UiIHR5cGU9IlYiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkTWFyayIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3TWFyayIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJWIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXJrSG9sZGVyIiB0eXBlPSJib29sZWFuW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVmZXJlbmNlIgorIHJldHVybj0iViIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc01hcmtlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3UmVmZXJlbmNlIiB0eXBlPSJWIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdNYXJrIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndlYWtDb21wYXJlQW5kU2V0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWRSZWZlcmVuY2UiIHR5cGU9IlYiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1JlZmVyZW5jZSIgdHlwZT0iViI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWRNYXJrIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdNYXJrIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkF0b21pY1JlZmVyZW5jZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXRvbWljUmVmZXJlbmNlIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LmF0b21pYy5BdG9taWNSZWZlcmVuY2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbml0aWFsVmFsdWUiIHR5cGU9IlYiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkF0b21pY1JlZmVyZW5jZSIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5hdG9taWMuQXRvbWljUmVmZXJlbmNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNvbXBhcmVBbmRTZXQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdCIgdHlwZT0iViI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXBkYXRlIiB0eXBlPSJWIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49IlYiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbmRTZXQiCisgcmV0dXJuPSJWIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1ZhbHVlIiB0eXBlPSJWIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3VmFsdWUiIHR5cGU9IlYiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id2Vha0NvbXBhcmVBbmRTZXQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdCIgdHlwZT0iViI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXBkYXRlIiB0eXBlPSJWIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkF0b21pY1JlZmVyZW5jZUFycmF5IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBdG9taWNSZWZlcmVuY2VBcnJheSIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5hdG9taWMuQXRvbWljUmVmZXJlbmNlQXJyYXkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXRvbWljUmVmZXJlbmNlQXJyYXkiCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuYXRvbWljLkF0b21pY1JlZmVyZW5jZUFycmF5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9IkVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNvbXBhcmVBbmRTZXQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0IiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cGRhdGUiIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iRSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QW5kU2V0IgorIHJldHVybj0iRSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1ZhbHVlIiB0eXBlPSJFIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxlbmd0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdWYWx1ZSIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3ZWFrQ29tcGFyZUFuZFNldCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3QiIHR5cGU9IkUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVwZGF0ZSIgdHlwZT0iRSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBdG9taWNSZWZlcmVuY2VGaWVsZFVwZGF0ZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXRvbWljUmVmZXJlbmNlRmllbGRVcGRhdGVyIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LmF0b21pYy5BdG9taWNSZWZlcmVuY2VGaWVsZFVwZGF0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY29tcGFyZUFuZFNldCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqIiB0eXBlPSJUIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3QiIHR5cGU9IlYiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVwZGF0ZSIgdHlwZT0iViI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJWIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iaiIgdHlwZT0iVCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbmRTZXQiCisgcmV0dXJuPSJWIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9IlQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1ZhbHVlIiB0eXBlPSJWIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1VwZGF0ZXIiCisgcmV0dXJuPSJqYXZhLnV0aWwuY29uY3VycmVudC5hdG9taWMuQXRvbWljUmVmZXJlbmNlRmllbGRVcGRhdGVyJmx0O1UsIFcmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRjbGFzcyIgdHlwZT0iamF2YS5sYW5nLkNsYXNzJmx0O1UmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2Y2xhc3MiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDtXJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmllbGROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqIiB0eXBlPSJUIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdWYWx1ZSIgdHlwZT0iViI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3ZWFrQ29tcGFyZUFuZFNldCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqIiB0eXBlPSJUIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3QiIHR5cGU9IlYiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVwZGF0ZSIgdHlwZT0iViI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBdG9taWNTdGFtcGVkUmVmZXJlbmNlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBdG9taWNTdGFtcGVkUmVmZXJlbmNlIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LmF0b21pYy5BdG9taWNTdGFtcGVkUmVmZXJlbmNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5pdGlhbFJlZiIgdHlwZT0iViI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5pdGlhbFN0YW1wIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhdHRlbXB0U3RhbXAiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3RlZFJlZmVyZW5jZSIgdHlwZT0iViI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3U3RhbXAiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlQW5kU2V0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWRSZWZlcmVuY2UiIHR5cGU9IlYiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1JlZmVyZW5jZSIgdHlwZT0iViI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWRTdGFtcCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdTdGFtcCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49IlYiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YW1wSG9sZGVyIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZWZlcmVuY2UiCisgcmV0dXJuPSJWIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0YW1wIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1JlZmVyZW5jZSIgdHlwZT0iViI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3U3RhbXAiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3ZWFrQ29tcGFyZUFuZFNldCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkUmVmZXJlbmNlIiB0eXBlPSJWIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuZXdSZWZlcmVuY2UiIHR5cGU9IlYiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkU3RhbXAiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3U3RhbXAiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzIgorPgorPGNsYXNzIG5hbWU9IkFic3RyYWN0T3duYWJsZVN5bmNocm9uaXplciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9IiIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBYnN0cmFjdE93bmFibGVTeW5jaHJvbml6ZXIiCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuQWJzdHJhY3RPd25hYmxlU3luY2hyb25pemVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEV4Y2x1c2l2ZU93bmVyVGhyZWFkIgorIHJldHVybj0iamF2YS5sYW5nLlRocmVhZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEV4Y2x1c2l2ZU93bmVyVGhyZWFkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0IiB0eXBlPSJqYXZhLmxhbmcuVGhyZWFkIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFic3RyYWN0UXVldWVkU3luY2hyb25pemVyIgorIGV4dGVuZHM9ImphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkFic3RyYWN0T3duYWJsZVN5bmNocm9uaXplciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzdHJhY3RRdWV1ZWRTeW5jaHJvbml6ZXIiCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuQWJzdHJhY3RRdWV1ZWRTeW5jaHJvbml6ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWNxdWlyZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJnIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWNxdWlyZUludGVycnVwdGlibHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFjcXVpcmVTaGFyZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFjcXVpcmVTaGFyZWRJbnRlcnJ1cHRpYmx5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcmciIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlQW5kU2V0U3RhdGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cGRhdGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeGNsdXNpdmVRdWV1ZWRUaHJlYWRzIgorIHJldHVybj0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7amF2YS5sYW5nLlRocmVhZCZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGaXJzdFF1ZXVlZFRocmVhZCIKKyByZXR1cm49ImphdmEubGFuZy5UaHJlYWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRRdWV1ZUxlbmd0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFF1ZXVlZFRocmVhZHMiCisgcmV0dXJuPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDtqYXZhLmxhbmcuVGhyZWFkJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNoYXJlZFF1ZXVlZFRocmVhZHMiCisgcmV0dXJuPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDtqYXZhLmxhbmcuVGhyZWFkJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0YXRlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V2FpdFF1ZXVlTGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbmRpdGlvbiIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuQWJzdHJhY3RRdWV1ZWRTeW5jaHJvbml6ZXIuQ29uZGl0aW9uT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdhaXRpbmdUaHJlYWRzIgorIHJldHVybj0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7amF2YS5sYW5nLlRocmVhZCZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29uZGl0aW9uIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5BYnN0cmFjdFF1ZXVlZFN5bmNocm9uaXplci5Db25kaXRpb25PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzQ29udGVuZGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc1F1ZXVlZFRocmVhZHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzV2FpdGVycyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29uZGl0aW9uIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5BYnN0cmFjdFF1ZXVlZFN5bmNocm9uaXplci5Db25kaXRpb25PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNIZWxkRXhjbHVzaXZlbHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUXVldWVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aHJlYWQiIHR5cGU9ImphdmEubGFuZy5UaHJlYWQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3ducyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29uZGl0aW9uIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5BYnN0cmFjdFF1ZXVlZFN5bmNocm9uaXplci5Db25kaXRpb25PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVsZWFzZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJnIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVsZWFzZVNoYXJlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJnIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld1N0YXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idHJ5QWNxdWlyZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRyeUFjcXVpcmVOYW5vcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJnIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbm9zVGltZW91dCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0cnlBY3F1aXJlU2hhcmVkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcmciIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0cnlBY3F1aXJlU2hhcmVkTmFub3MiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW5vc1RpbWVvdXQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idHJ5UmVsZWFzZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRyeVJlbGVhc2VTaGFyZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcmciIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBYnN0cmFjdFF1ZXVlZFN5bmNocm9uaXplci5Db25kaXRpb25PYmplY3QiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuQ29uZGl0aW9uIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBYnN0cmFjdFF1ZXVlZFN5bmNocm9uaXplci5Db25kaXRpb25PYmplY3QiCisgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuQWJzdHJhY3RRdWV1ZWRTeW5jaHJvbml6ZXIuQ29uZGl0aW9uT2JqZWN0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImF3YWl0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImF3YWl0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhd2FpdE5hbm9zIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW5vc1RpbWVvdXQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXdhaXRVbmludGVycnVwdGlibHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXdhaXRVbnRpbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVhZGxpbmUiIHR5cGU9ImphdmEudXRpbC5EYXRlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdhaXRRdWV1ZUxlbmd0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdhaXRpbmdUaHJlYWRzIgorIHJldHVybj0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7amF2YS5sYW5nLlRocmVhZCZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNXYWl0ZXJzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNpZ25hbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaWduYWxBbGwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkNvbmRpdGlvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImF3YWl0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImF3YWl0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhd2FpdE5hbm9zIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW5vc1RpbWVvdXQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXdhaXRVbmludGVycnVwdGlibHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXdhaXRVbnRpbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVhZGxpbmUiIHR5cGU9ImphdmEudXRpbC5EYXRlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNpZ25hbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaWduYWxBbGwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJMb2NrIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ibG9jayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2NrSW50ZXJydXB0aWJseSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdDb25kaXRpb24iCisgcmV0dXJuPSJqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5Db25kaXRpb24iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0cnlMb2NrIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRyeUxvY2siCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVuaXQiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVubG9jayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iTG9ja1N1cHBvcnQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJwYXJrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcmtOYW5vcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFub3MiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFya1VudGlsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZWFkbGluZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bnBhcmsiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRocmVhZCIgdHlwZT0iamF2YS5sYW5nLlRocmVhZCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iUmVhZFdyaXRlTG9jayIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InJlYWRMb2NrIgorIHJldHVybj0iamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuTG9jayIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlTG9jayIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkxvY2siCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iUmVlbnRyYW50TG9jayIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5Mb2NrIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZWVudHJhbnRMb2NrIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLlJlZW50cmFudExvY2siCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZWVudHJhbnRMb2NrIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLlJlZW50cmFudExvY2siCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWlyIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0SG9sZENvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE93bmVyIgorIHJldHVybj0iamF2YS5sYW5nLlRocmVhZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRRdWV1ZUxlbmd0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFF1ZXVlZFRocmVhZHMiCisgcmV0dXJuPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDtqYXZhLmxhbmcuVGhyZWFkJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRXYWl0UXVldWVMZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbmRpdGlvbiIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuQ29uZGl0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdhaXRpbmdUaHJlYWRzIgorIHJldHVybj0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7amF2YS5sYW5nLlRocmVhZCZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbmRpdGlvbiIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuQ29uZGl0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc1F1ZXVlZFRocmVhZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhyZWFkIiB0eXBlPSJqYXZhLmxhbmcuVGhyZWFkIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc1F1ZXVlZFRocmVhZHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzV2FpdGVycyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbmRpdGlvbiIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuQ29uZGl0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRmFpciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0hlbGRCeUN1cnJlbnRUaHJlYWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTG9ja2VkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2NrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2NrSW50ZXJydXB0aWJseSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3Q29uZGl0aW9uIgorIHJldHVybj0iamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuQ29uZGl0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRyeUxvY2siCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRyeUxvY2siCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lb3V0IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bmxvY2siCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJlZW50cmFudFJlYWRXcml0ZUxvY2siCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuUmVhZFdyaXRlTG9jayI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVlbnRyYW50UmVhZFdyaXRlTG9jayIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5SZWVudHJhbnRSZWFkV3JpdGVMb2NrIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVlbnRyYW50UmVhZFdyaXRlTG9jayIKKyB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5SZWVudHJhbnRSZWFkV3JpdGVMb2NrIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFpciIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldE93bmVyIgorIHJldHVybj0iamF2YS5sYW5nLlRocmVhZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRRdWV1ZUxlbmd0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFF1ZXVlZFJlYWRlclRocmVhZHMiCisgcmV0dXJuPSJqYXZhLnV0aWwuQ29sbGVjdGlvbiZsdDtqYXZhLmxhbmcuVGhyZWFkJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRRdWV1ZWRUaHJlYWRzIgorIHJldHVybj0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7amF2YS5sYW5nLlRocmVhZCZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UXVldWVkV3JpdGVyVGhyZWFkcyIKKyByZXR1cm49ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0O2phdmEubGFuZy5UaHJlYWQmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlYWRMb2NrQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V2FpdFF1ZXVlTGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb25kaXRpb24iIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkNvbmRpdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRXYWl0aW5nVGhyZWFkcyIKKyByZXR1cm49ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0O2phdmEubGFuZy5UaHJlYWQmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb25kaXRpb24iIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkNvbmRpdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRXcml0ZUhvbGRDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNRdWV1ZWRUaHJlYWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRocmVhZCIgdHlwZT0iamF2YS5sYW5nLlRocmVhZCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNRdWV1ZWRUaHJlYWRzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc1dhaXRlcnMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb25kaXRpb24iIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkNvbmRpdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0ZhaXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNXcml0ZUxvY2tlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNXcml0ZUxvY2tlZEJ5Q3VycmVudFRocmVhZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZExvY2siCisgcmV0dXJuPSJqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5SZWVudHJhbnRSZWFkV3JpdGVMb2NrLlJlYWRMb2NrIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlTG9jayIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLlJlZW50cmFudFJlYWRXcml0ZUxvY2suV3JpdGVMb2NrIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJlZW50cmFudFJlYWRXcml0ZUxvY2suUmVhZExvY2siCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5Mb2NrIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZWVudHJhbnRSZWFkV3JpdGVMb2NrLlJlYWRMb2NrIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLlJlZW50cmFudFJlYWRXcml0ZUxvY2suUmVhZExvY2siCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NrIiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5SZWVudHJhbnRSZWFkV3JpdGVMb2NrIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ibG9jayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9ja0ludGVycnVwdGlibHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld0NvbmRpdGlvbiIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkNvbmRpdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0cnlMb2NrIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0cnlMb2NrIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5sb2NrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSZWVudHJhbnRSZWFkV3JpdGVMb2NrLldyaXRlTG9jayIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkxvY2siPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlZW50cmFudFJlYWRXcml0ZUxvY2suV3JpdGVMb2NrIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLlJlZW50cmFudFJlYWRXcml0ZUxvY2suV3JpdGVMb2NrIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jayIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQubG9ja3MuUmVlbnRyYW50UmVhZFdyaXRlTG9jayI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImxvY2siCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvY2tJbnRlcnJ1cHRpYmx5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdDb25kaXRpb24iCisgcmV0dXJuPSJqYXZhLnV0aWwuY29uY3VycmVudC5sb2Nrcy5Db25kaXRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idHJ5TG9jayIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idHJ5TG9jayIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVvdXQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVuaXQiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVubG9jayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJqYXZhLnV0aWwuamFyIgorPgorPGNsYXNzIG5hbWU9IkF0dHJpYnV0ZXMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuTWFwIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBdHRyaWJ1dGVzIgorIHR5cGU9ImphdmEudXRpbC5qYXIuQXR0cmlidXRlcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkF0dHJpYnV0ZXMiCisgdHlwZT0iamF2YS51dGlsLmphci5BdHRyaWJ1dGVzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cmliIiB0eXBlPSJqYXZhLnV0aWwuamFyLkF0dHJpYnV0ZXMiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkF0dHJpYnV0ZXMiCisgdHlwZT0iamF2YS51dGlsLmphci5BdHRyaWJ1dGVzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xlYXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb250YWluc0tleSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb250YWluc1ZhbHVlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW50cnlTZXQiCisgcmV0dXJuPSJqYXZhLnV0aWwuU2V0Jmx0O2phdmEudXRpbC5NYXAuRW50cnkmbHQ7amF2YS5sYW5nLk9iamVjdCwgamF2YS5sYW5nLk9iamVjdCZndDsmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEudXRpbC5qYXIuQXR0cmlidXRlcy5OYW1lIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZhbHVlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0VtcHR5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJrZXlTZXQiCisgcmV0dXJuPSJqYXZhLnV0aWwuU2V0Jmx0O2phdmEubGFuZy5PYmplY3QmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0QWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cmliIiB0eXBlPSJqYXZhLnV0aWwuTWFwJmx0Oz8sID8mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dFZhbHVlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlcyIKKyByZXR1cm49ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0O2phdmEubGFuZy5PYmplY3QmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0ibWFwIgorIHR5cGU9ImphdmEudXRpbC5NYXAiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQXR0cmlidXRlcy5OYW1lIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkF0dHJpYnV0ZXMuTmFtZSIKKyB0eXBlPSJqYXZhLnV0aWwuamFyLkF0dHJpYnV0ZXMuTmFtZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9IkNMQVNTX1BBVEgiCisgdHlwZT0iamF2YS51dGlsLmphci5BdHRyaWJ1dGVzLk5hbWUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9UWVBFIgorIHR5cGU9ImphdmEudXRpbC5qYXIuQXR0cmlidXRlcy5OYW1lIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYVEVOU0lPTl9JTlNUQUxMQVRJT04iCisgdHlwZT0iamF2YS51dGlsLmphci5BdHRyaWJ1dGVzLk5hbWUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhURU5TSU9OX0xJU1QiCisgdHlwZT0iamF2YS51dGlsLmphci5BdHRyaWJ1dGVzLk5hbWUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhURU5TSU9OX05BTUUiCisgdHlwZT0iamF2YS51dGlsLmphci5BdHRyaWJ1dGVzLk5hbWUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU1QTEVNRU5UQVRJT05fVElUTEUiCisgdHlwZT0iamF2YS51dGlsLmphci5BdHRyaWJ1dGVzLk5hbWUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU1QTEVNRU5UQVRJT05fVVJMIgorIHR5cGU9ImphdmEudXRpbC5qYXIuQXR0cmlidXRlcy5OYW1lIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklNUExFTUVOVEFUSU9OX1ZFTkRPUiIKKyB0eXBlPSJqYXZhLnV0aWwuamFyLkF0dHJpYnV0ZXMuTmFtZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTVBMRU1FTlRBVElPTl9WRU5ET1JfSUQiCisgdHlwZT0iamF2YS51dGlsLmphci5BdHRyaWJ1dGVzLk5hbWUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU1QTEVNRU5UQVRJT05fVkVSU0lPTiIKKyB0eXBlPSJqYXZhLnV0aWwuamFyLkF0dHJpYnV0ZXMuTmFtZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNQUlOX0NMQVNTIgorIHR5cGU9ImphdmEudXRpbC5qYXIuQXR0cmlidXRlcy5OYW1lIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1BTklGRVNUX1ZFUlNJT04iCisgdHlwZT0iamF2YS51dGlsLmphci5BdHRyaWJ1dGVzLk5hbWUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VBTEVEIgorIHR5cGU9ImphdmEudXRpbC5qYXIuQXR0cmlidXRlcy5OYW1lIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNJR05BVFVSRV9WRVJTSU9OIgorIHR5cGU9ImphdmEudXRpbC5qYXIuQXR0cmlidXRlcy5OYW1lIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNQRUNJRklDQVRJT05fVElUTEUiCisgdHlwZT0iamF2YS51dGlsLmphci5BdHRyaWJ1dGVzLk5hbWUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1BFQ0lGSUNBVElPTl9WRU5ET1IiCisgdHlwZT0iamF2YS51dGlsLmphci5BdHRyaWJ1dGVzLk5hbWUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1BFQ0lGSUNBVElPTl9WRVJTSU9OIgorIHR5cGU9ImphdmEudXRpbC5qYXIuQXR0cmlidXRlcy5OYW1lIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJKYXJFbnRyeSIKKyBleHRlbmRzPSJqYXZhLnV0aWwuemlwLlppcEVudHJ5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSmFyRW50cnkiCisgdHlwZT0iamF2YS51dGlsLmphci5KYXJFbnRyeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkphckVudHJ5IgorIHR5cGU9ImphdmEudXRpbC5qYXIuSmFyRW50cnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbnRyeSIgdHlwZT0iamF2YS51dGlsLnppcC5aaXBFbnRyeSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSmFyRW50cnkiCisgdHlwZT0iamF2YS51dGlsLmphci5KYXJFbnRyeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImplIiB0eXBlPSJqYXZhLnV0aWwuamFyLkphckVudHJ5Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0QXR0cmlidXRlcyIKKyByZXR1cm49ImphdmEudXRpbC5qYXIuQXR0cmlidXRlcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2VydGlmaWNhdGVzIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29kZVNpZ25lcnMiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LkNvZGVTaWduZXJbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJKYXJFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS51dGlsLnppcC5aaXBFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJKYXJFeGNlcHRpb24iCisgdHlwZT0iamF2YS51dGlsLmphci5KYXJFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJKYXJFeGNlcHRpb24iCisgdHlwZT0iamF2YS51dGlsLmphci5KYXJFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZXRhaWxNZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSmFyRmlsZSIKKyBleHRlbmRzPSJqYXZhLnV0aWwuemlwLlppcEZpbGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJKYXJGaWxlIgorIHR5cGU9ImphdmEudXRpbC5qYXIuSmFyRmlsZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGUiIHR5cGU9ImphdmEuaW8uRmlsZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkphckZpbGUiCisgdHlwZT0iamF2YS51dGlsLmphci5KYXJGaWxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsZSIgdHlwZT0iamF2YS5pby5GaWxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2ZXJpZnkiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJKYXJGaWxlIgorIHR5cGU9ImphdmEudXRpbC5qYXIuSmFyRmlsZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGUiIHR5cGU9ImphdmEuaW8uRmlsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmVyaWZ5IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJKYXJGaWxlIgorIHR5cGU9ImphdmEudXRpbC5qYXIuSmFyRmlsZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbGVuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSmFyRmlsZSIKKyB0eXBlPSJqYXZhLnV0aWwuamFyLkphckZpbGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlbmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmVyaWZ5IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEphckVudHJ5IgorIHJldHVybj0iamF2YS51dGlsLmphci5KYXJFbnRyeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYW5pZmVzdCIKKyByZXR1cm49ImphdmEudXRpbC5qYXIuTWFuaWZlc3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iTUFOSUZFU1RfTkFNRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtNRVRBLUlORi9NQU5JRkVTVC5NRiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSmFySW5wdXRTdHJlYW0iCisgZXh0ZW5kcz0iamF2YS51dGlsLnppcC5aaXBJbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkphcklucHV0U3RyZWFtIgorIHR5cGU9ImphdmEudXRpbC5qYXIuSmFySW5wdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJlYW0iIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZlcmlmeSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkphcklucHV0U3RyZWFtIgorIHR5cGU9ImphdmEudXRpbC5qYXIuSmFySW5wdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHJlYW0iIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0TWFuaWZlc3QiCisgcmV0dXJuPSJqYXZhLnV0aWwuamFyLk1hbmlmZXN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5leHRKYXJFbnRyeSIKKyByZXR1cm49ImphdmEudXRpbC5qYXIuSmFyRW50cnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ikphck91dHB1dFN0cmVhbSIKKyBleHRlbmRzPSJqYXZhLnV0aWwuemlwLlppcE91dHB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikphck91dHB1dFN0cmVhbSIKKyB0eXBlPSJqYXZhLnV0aWwuamFyLkphck91dHB1dFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9zIiB0eXBlPSJqYXZhLmlvLk91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWYiIHR5cGU9ImphdmEudXRpbC5qYXIuTWFuaWZlc3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJKYXJPdXRwdXRTdHJlYW0iCisgdHlwZT0iamF2YS51dGlsLmphci5KYXJPdXRwdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcyIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTWFuaWZlc3QiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTWFuaWZlc3QiCisgdHlwZT0iamF2YS51dGlsLmphci5NYW5pZmVzdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1hbmlmZXN0IgorIHR5cGU9ImphdmEudXRpbC5qYXIuTWFuaWZlc3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpcyIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1hbmlmZXN0IgorIHR5cGU9ImphdmEudXRpbC5qYXIuTWFuaWZlc3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYW4iIHR5cGU9ImphdmEudXRpbC5qYXIuTWFuaWZlc3QiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbGVhciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF0dHJpYnV0ZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuamFyLkF0dHJpYnV0ZXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RW50cmllcyIKKyByZXR1cm49ImphdmEudXRpbC5NYXAmbHQ7amF2YS5sYW5nLlN0cmluZywgamF2YS51dGlsLmphci5BdHRyaWJ1dGVzJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYWluQXR0cmlidXRlcyIKKyByZXR1cm49ImphdmEudXRpbC5qYXIuQXR0cmlidXRlcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXMiIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3MiIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQYWNrMjAwIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJuZXdQYWNrZXIiCisgcmV0dXJuPSJqYXZhLnV0aWwuamFyLlBhY2syMDAuUGFja2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3VW5wYWNrZXIiCisgcmV0dXJuPSJqYXZhLnV0aWwuamFyLlBhY2syMDAuVW5wYWNrZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iUGFjazIwMC5QYWNrZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImFkZFByb3BlcnR5Q2hhbmdlTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJqYXZhLmJlYW5zLlByb3BlcnR5Q2hhbmdlTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFjayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9ImphdmEudXRpbC5qYXIuSmFyRmlsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0IiB0eXBlPSJqYXZhLmlvLk91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFjayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9ImphdmEudXRpbC5qYXIuSmFySW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im91dCIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByb3BlcnRpZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuU29ydGVkTWFwJmx0O2phdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlUHJvcGVydHlDaGFuZ2VMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImphdmEuYmVhbnMuUHJvcGVydHlDaGFuZ2VMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNMQVNTX0FUVFJJQlVURV9QRlgiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cGFjay5jbGFzcy5hdHRyaWJ1dGUuJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPREVfQVRUUklCVVRFX1BGWCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtwYWNrLmNvZGUuYXR0cmlidXRlLiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUZMQVRFX0hJTlQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cGFjay5kZWZsYXRlLmhpbnQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUZGT1JUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3BhY2suZWZmb3J0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVSUk9SIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2Vycm9yJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZBTFNFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2ZhbHNlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZJRUxEX0FUVFJJQlVURV9QRlgiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cGFjay5maWVsZC5hdHRyaWJ1dGUuJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFRVAiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7a2VlcCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRUVQX0ZJTEVfT1JERVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cGFjay5rZWVwLmZpbGUub3JkZXImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTEFURVNUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2xhdGVzdCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNRVRIT0RfQVRUUklCVVRFX1BGWCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtwYWNrLm1ldGhvZC5hdHRyaWJ1dGUuJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1PRElGSUNBVElPTl9USU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3BhY2subW9kaWZpY2F0aW9uLnRpbWUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEFTUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtwYXNzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBBU1NfRklMRV9QRlgiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cGFjay5wYXNzLmZpbGUuJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBST0dSRVNTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3BhY2sucHJvZ3Jlc3MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VHTUVOVF9MSU1JVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtwYWNrLnNlZ21lbnQubGltaXQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RSSVAiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c3RyaXAmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFJVRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt0cnVlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVOS05PV05fQVRUUklCVVRFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3BhY2sudW5rbm93bi5hdHRyaWJ1dGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iUGFjazIwMC5VbnBhY2tlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYWRkUHJvcGVydHlDaGFuZ2VMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImphdmEuYmVhbnMuUHJvcGVydHlDaGFuZ2VMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcm9wZXJ0aWVzIgorIHJldHVybj0iamF2YS51dGlsLlNvcnRlZE1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nJmd0OyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZVByb3BlcnR5Q2hhbmdlTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJqYXZhLmJlYW5zLlByb3BlcnR5Q2hhbmdlTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5wYWNrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbiIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0IiB0eXBlPSJqYXZhLnV0aWwuamFyLkphck91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5wYWNrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbiIgdHlwZT0iamF2YS5pby5GaWxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9ImphdmEudXRpbC5qYXIuSmFyT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkRFRkxBVEVfSElOVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt1bnBhY2suZGVmbGF0ZS5oaW50JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZBTFNFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2ZhbHNlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFRVAiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7a2VlcCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQUk9HUkVTUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt1bnBhY2sucHJvZ3Jlc3MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVFJVRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt0cnVlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJqYXZhLnV0aWwubG9nZ2luZyIKKz4KKzxjbGFzcyBuYW1lPSJDb25zb2xlSGFuZGxlciIKKyBleHRlbmRzPSJqYXZhLnV0aWwubG9nZ2luZy5TdHJlYW1IYW5kbGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29uc29sZUhhbmRsZXIiCisgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuQ29uc29sZUhhbmRsZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRXJyb3JNYW5hZ2VyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFcnJvck1hbmFnZXIiCisgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuRXJyb3JNYW5hZ2VyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImVycm9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuRXhjZXB0aW9uIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlcnJvckNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNMT1NFX0ZBSUxVUkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMVVNIX0ZBSUxVUkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPUk1BVF9GQUlMVVJFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHRU5FUklDX0ZBSUxVUkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9QRU5fRkFJTFVSRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV1JJVEVfRkFJTFVSRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkZpbGVIYW5kbGVyIgorIGV4dGVuZHM9ImphdmEudXRpbC5sb2dnaW5nLlN0cmVhbUhhbmRsZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGaWxlSGFuZGxlciIKKyB0eXBlPSJqYXZhLnV0aWwubG9nZ2luZy5GaWxlSGFuZGxlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGaWxlSGFuZGxlciIKKyB0eXBlPSJqYXZhLnV0aWwubG9nZ2luZy5GaWxlSGFuZGxlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdHRlcm4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJGaWxlSGFuZGxlciIKKyB0eXBlPSJqYXZhLnV0aWwubG9nZ2luZy5GaWxlSGFuZGxlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdHRlcm4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFwcGVuZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZpbGVIYW5kbGVyIgorIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkZpbGVIYW5kbGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0dGVybiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGltaXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZpbGVIYW5kbGVyIgorIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkZpbGVIYW5kbGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0dGVybiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGltaXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXBwZW5kIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJGaWx0ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJpc0xvZ2dhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWNvcmQiIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkxvZ1JlY29yZCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iRm9ybWF0dGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZvcm1hdHRlciIKKyB0eXBlPSJqYXZhLnV0aWwubG9nZ2luZy5Gb3JtYXR0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZm9ybWF0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJqYXZhLnV0aWwubG9nZ2luZy5Mb2dSZWNvcmQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0TWVzc2FnZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkxvZ1JlY29yZCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIZWFkIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaCIgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUYWlsIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaCIgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJIYW5kbGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkhhbmRsZXIiCisgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuSGFuZGxlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmbHVzaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbmNvZGluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RXJyb3JNYW5hZ2VyIgorIHJldHVybj0iamF2YS51dGlsLmxvZ2dpbmcuRXJyb3JNYW5hZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpbHRlciIKKyByZXR1cm49ImphdmEudXRpbC5sb2dnaW5nLkZpbHRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGb3JtYXR0ZXIiCisgcmV0dXJuPSJqYXZhLnV0aWwubG9nZ2luZy5Gb3JtYXR0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGV2ZWwiCisgcmV0dXJuPSJqYXZhLnV0aWwubG9nZ2luZy5MZXZlbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0xvZ2dhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVjb3JkIiB0eXBlPSJqYXZhLnV0aWwubG9nZ2luZy5Mb2dSZWNvcmQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHVibGlzaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVjb3JkIiB0eXBlPSJqYXZhLnV0aWwubG9nZ2luZy5Mb2dSZWNvcmQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVwb3J0RXJyb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4IiB0eXBlPSJqYXZhLmxhbmcuRXhjZXB0aW9uIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RW5jb2RpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmNvZGluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU2VjdXJpdHlFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5TZWN1cml0eUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5VbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVycm9yTWFuYWdlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVtIiB0eXBlPSJqYXZhLnV0aWwubG9nZ2luZy5FcnJvck1hbmFnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RmlsdGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3RmlsdGVyIiB0eXBlPSJqYXZhLnV0aWwubG9nZ2luZy5GaWx0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Rm9ybWF0dGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3Rm9ybWF0dGVyIiB0eXBlPSJqYXZhLnV0aWwubG9nZ2luZy5Gb3JtYXR0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TGV2ZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdMZXZlbCIgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWwiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTGV2ZWwiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxldmVsIgorIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkxldmVsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGV2ZWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGV2ZWwiCisgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZXZlbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvdXJjZUJ1bmRsZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhbGl6ZWROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXNvdXJjZUJ1bmRsZU5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImludFZhbHVlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJqYXZhLnV0aWwubG9nZ2luZy5MZXZlbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBTEwiCisgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWwiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09ORklHIgorIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkxldmVsIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZJTkUiCisgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWwiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRklORVIiCisgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWwiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRklORVNUIgorIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkxldmVsIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklORk8iCisgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWwiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT0ZGIgorIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkxldmVsIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFVkVSRSIKKyB0eXBlPSJqYXZhLnV0aWwubG9nZ2luZy5MZXZlbCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXQVJOSU5HIgorIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkxldmVsIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJMb2dNYW5hZ2VyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMb2dNYW5hZ2VyIgorIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkxvZ01hbmFnZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkTG9nZ2VyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2dnZXIiIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkxvZ2dlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRQcm9wZXJ0eUNoYW5nZUxpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibCIgdHlwZT0iamF2YS5iZWFucy5Qcm9wZXJ0eUNoYW5nZUxpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrQWNjZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2dNYW5hZ2VyIgorIHJldHVybj0iamF2YS51dGlsLmxvZ2dpbmcuTG9nTWFuYWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvZ2dlciIKKyByZXR1cm49ImphdmEudXRpbC5sb2dnaW5nLkxvZ2dlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvZ2dlck5hbWVzIgorIHJldHVybj0iamF2YS51dGlsLkVudW1lcmF0aW9uJmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9nZ2luZ01YQmVhbiIKKyByZXR1cm49ImphdmEudXRpbC5sb2dnaW5nLkxvZ2dpbmdNWEJlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm9wZXJ0eSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZENvbmZpZ3VyYXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkQ29uZmlndXJhdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucyIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlUHJvcGVydHlDaGFuZ2VMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImwiIHR5cGU9ImphdmEuYmVhbnMuUHJvcGVydHlDaGFuZ2VMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkxPR0dJTkdfTVhCRUFOX05BTUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7amF2YS51dGlsLmxvZ2dpbmc6dHlwZT1Mb2dnaW5nJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJMb2dSZWNvcmQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxvZ1JlY29yZCIKKyB0eXBlPSJqYXZhLnV0aWwubG9nZ2luZy5Mb2dSZWNvcmQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZXZlbCIgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldExldmVsIgorIHJldHVybj0iamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9nZ2VyTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWVzc2FnZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWlsbGlzIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJhbWV0ZXJzIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlc291cmNlQnVuZGxlIgorIHJldHVybj0iamF2YS51dGlsLlJlc291cmNlQnVuZGxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlc291cmNlQnVuZGxlTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2VxdWVuY2VOdW1iZXIiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNvdXJjZUNsYXNzTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U291cmNlTWV0aG9kTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGhyZWFkSUQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGhyb3duIgorIHJldHVybj0iamF2YS5sYW5nLlRocm93YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMZXZlbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxldmVsIiB0eXBlPSJqYXZhLnV0aWwubG9nZ2luZy5MZXZlbCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMb2dnZXJOYW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9nZ2VyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNZXNzYWdlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNaWxsaXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtaWxsaXMiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGFyYW1ldGVycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlcnMiIHR5cGU9ImphdmEubGFuZy5PYmplY3RbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZXNvdXJjZUJ1bmRsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc291cmNlQnVuZGxlIiB0eXBlPSJqYXZhLnV0aWwuUmVzb3VyY2VCdW5kbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UmVzb3VyY2VCdW5kbGVOYW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzb3VyY2VCdW5kbGVOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNlcXVlbmNlTnVtYmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VxdWVuY2VOdW1iZXIiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U291cmNlQ2xhc3NOYW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlQ2xhc3NOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNvdXJjZU1ldGhvZE5hbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2VNZXRob2ROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRocmVhZElEIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhyZWFkSUQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUaHJvd24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aHJvd24iIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTG9nZ2VyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMb2dnZXIiCisgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuTG9nZ2VyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzb3VyY2VCdW5kbGVOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkSGFuZGxlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhhbmRsZXIiIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29uZmlnIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVudGVyaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlQ2xhc3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZU1ldGhvZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbnRlcmluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZUNsYXNzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2VNZXRob2QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVudGVyaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlQ2xhc3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZU1ldGhvZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhpdGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZUNsYXNzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2VNZXRob2QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhpdGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZUNsYXNzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2VNZXRob2QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaW5lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmVzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbm9ueW1vdXNMb2dnZXIiCisgcmV0dXJuPSJqYXZhLnV0aWwubG9nZ2luZy5Mb2dnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbm9ueW1vdXNMb2dnZXIiCisgcmV0dXJuPSJqYXZhLnV0aWwubG9nZ2luZy5Mb2dnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzb3VyY2VCdW5kbGVOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpbHRlciIKKyByZXR1cm49ImphdmEudXRpbC5sb2dnaW5nLkZpbHRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIYW5kbGVycyIKKyByZXR1cm49ImphdmEudXRpbC5sb2dnaW5nLkhhbmRsZXJbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMZXZlbCIKKyByZXR1cm49ImphdmEudXRpbC5sb2dnaW5nLkxldmVsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvZ2dlciIKKyByZXR1cm49ImphdmEudXRpbC5sb2dnaW5nLkxvZ2dlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvZ2dlciIKKyByZXR1cm49ImphdmEudXRpbC5sb2dnaW5nLkxvZ2dlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvdXJjZUJ1bmRsZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFyZW50IgorIHJldHVybj0iamF2YS51dGlsLmxvZ2dpbmcuTG9nZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlc291cmNlQnVuZGxlIgorIHJldHVybj0iamF2YS51dGlsLlJlc291cmNlQnVuZGxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlc291cmNlQnVuZGxlTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VXNlUGFyZW50SGFuZGxlcnMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluZm8iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNMb2dnYWJsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImwiIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkxldmVsIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvZ0xldmVsIiB0eXBlPSJqYXZhLnV0aWwubG9nZ2luZy5MZXZlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvZ0xldmVsIiB0eXBlPSJqYXZhLnV0aWwubG9nZ2luZy5MZXZlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2ciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2dMZXZlbCIgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9nTGV2ZWwiIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkxldmVsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRocm93biIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2ciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWNvcmQiIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkxvZ1JlY29yZCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2dwIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9nTGV2ZWwiIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkxldmVsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2VDbGFzcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlTWV0aG9kIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9ncCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvZ0xldmVsIiB0eXBlPSJqYXZhLnV0aWwubG9nZ2luZy5MZXZlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlQ2xhc3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZU1ldGhvZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2dwIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9nTGV2ZWwiIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkxldmVsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2VDbGFzcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlTWV0aG9kIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5sYW5nLk9iamVjdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvZ3AiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2dMZXZlbCIgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZUNsYXNzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2VNZXRob2QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhyb3duIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvZ3JiIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9nTGV2ZWwiIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkxldmVsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2VDbGFzcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlTWV0aG9kIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidW5kbGVOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9ncmIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2dMZXZlbCIgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZUNsYXNzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2VNZXRob2QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1bmRsZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9ncmIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2dMZXZlbCIgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZUNsYXNzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2VNZXRob2QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1bmRsZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9ncmIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2dMZXZlbCIgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWwiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZUNsYXNzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2VNZXRob2QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1bmRsZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhyb3duIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZUhhbmRsZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJqYXZhLnV0aWwubG9nZ2luZy5IYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZpbHRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5ld0ZpbHRlciIgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuRmlsdGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldExldmVsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3TGV2ZWwiIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkxldmVsIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBhcmVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuTG9nZ2VyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFVzZVBhcmVudEhhbmRsZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibm90aWZ5UGFyZW50SGFuZGxlcnMiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V2ZXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRocm93aW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlQ2xhc3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZU1ldGhvZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhyb3duIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Indhcm5pbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJnbG9iYWwiCisgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuTG9nZ2VyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iTG9nZ2luZ01YQmVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldExvZ2dlckxldmVsIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2dnZXJOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvZ2dlck5hbWVzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJlbnRMb2dnZXJOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2dnZXJOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldExvZ2dlckxldmVsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2dnZXJOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZXZlbE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkxvZ2dpbmdQZXJtaXNzaW9uIgorIGV4dGVuZHM9ImphdmEuc2VjdXJpdHkuQmFzaWNQZXJtaXNzaW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuR3VhcmQiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxvZ2dpbmdQZXJtaXNzaW9uIgorIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkxvZ2dpbmdQZXJtaXNzaW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aW9ucyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik1lbW9yeUhhbmRsZXIiCisgZXh0ZW5kcz0iamF2YS51dGlsLmxvZ2dpbmcuSGFuZGxlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1lbW9yeUhhbmRsZXIiCisgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuTWVtb3J5SGFuZGxlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1lbW9yeUhhbmRsZXIiCisgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuTWVtb3J5SGFuZGxlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwdXNoTGV2ZWwiIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkxldmVsIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZsdXNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQdXNoTGV2ZWwiCisgcmV0dXJuPSJqYXZhLnV0aWwubG9nZ2luZy5MZXZlbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdWJsaXNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWNvcmQiIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkxvZ1JlY29yZCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQdXNoTGV2ZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdMZXZlbCIgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuTGV2ZWwiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2ltcGxlRm9ybWF0dGVyIgorIGV4dGVuZHM9ImphdmEudXRpbC5sb2dnaW5nLkZvcm1hdHRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNpbXBsZUZvcm1hdHRlciIKKyB0eXBlPSJqYXZhLnV0aWwubG9nZ2luZy5TaW1wbGVGb3JtYXR0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZm9ybWF0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iciIgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuTG9nUmVjb3JkIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNvY2tldEhhbmRsZXIiCisgZXh0ZW5kcz0iamF2YS51dGlsLmxvZ2dpbmcuU3RyZWFtSGFuZGxlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNvY2tldEhhbmRsZXIiCisgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuU29ja2V0SGFuZGxlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTb2NrZXRIYW5kbGVyIgorIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLlNvY2tldEhhbmRsZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3RyZWFtSGFuZGxlciIKKyBleHRlbmRzPSJqYXZhLnV0aWwubG9nZ2luZy5IYW5kbGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RyZWFtSGFuZGxlciIKKyB0eXBlPSJqYXZhLnV0aWwubG9nZ2luZy5TdHJlYW1IYW5kbGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RyZWFtSGFuZGxlciIKKyB0eXBlPSJqYXZhLnV0aWwubG9nZ2luZy5TdHJlYW1IYW5kbGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3MiIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXR0ZXIiIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkZvcm1hdHRlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb3NlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmbHVzaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHVibGlzaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVjb3JkIiB0eXBlPSJqYXZhLnV0aWwubG9nZ2luZy5Mb2dSZWNvcmQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T3V0cHV0U3RyZWFtIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3MiIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlhNTEZvcm1hdHRlciIKKyBleHRlbmRzPSJqYXZhLnV0aWwubG9nZ2luZy5Gb3JtYXR0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJYTUxGb3JtYXR0ZXIiCisgdHlwZT0iamF2YS51dGlsLmxvZ2dpbmcuWE1MRm9ybWF0dGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImphdmEudXRpbC5sb2dnaW5nLkxvZ1JlY29yZCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImphdmEudXRpbC5wcmVmcyIKKz4KKzxjbGFzcyBuYW1lPSJBYnN0cmFjdFByZWZlcmVuY2VzIgorIGV4dGVuZHM9ImphdmEudXRpbC5wcmVmcy5QcmVmZXJlbmNlcyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzdHJhY3RQcmVmZXJlbmNlcyIKKyB0eXBlPSJqYXZhLnV0aWwucHJlZnMuQWJzdHJhY3RQcmVmZXJlbmNlcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0iamF2YS51dGlsLnByZWZzLkFic3RyYWN0UHJlZmVyZW5jZXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhYnNvbHV0ZVBhdGgiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZE5vZGVDaGFuZ2VMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5jbCIgdHlwZT0iamF2YS51dGlsLnByZWZzLk5vZGVDaGFuZ2VMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRQcmVmZXJlbmNlQ2hhbmdlTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwY2wiIHR5cGU9ImphdmEudXRpbC5wcmVmcy5QcmVmZXJlbmNlQ2hhbmdlTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2FjaGVkQ2hpbGRyZW4iCisgcmV0dXJuPSJqYXZhLnV0aWwucHJlZnMuQWJzdHJhY3RQcmVmZXJlbmNlc1tdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hpbGRTcGkiCisgcmV0dXJuPSJqYXZhLnV0aWwucHJlZnMuQWJzdHJhY3RQcmVmZXJlbmNlcyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoaWxkcmVuTmFtZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkJhY2tpbmdTdG9yZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLnByZWZzLkJhY2tpbmdTdG9yZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGlsZHJlbk5hbWVzU3BpIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkJhY2tpbmdTdG9yZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLnByZWZzLkJhY2tpbmdTdG9yZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkJhY2tpbmdTdG9yZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLnByZWZzLkJhY2tpbmdTdG9yZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJleHBvcnROb2RlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3N0cmVhbSIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkJhY2tpbmdTdG9yZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLnByZWZzLkJhY2tpbmdTdG9yZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhwb3J0U3VidHJlZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9zdHJlYW0iIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJCYWNraW5nU3RvcmVFeGNlcHRpb24iIHR5cGU9ImphdmEudXRpbC5wcmVmcy5CYWNraW5nU3RvcmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZsdXNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iQmFja2luZ1N0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnV0aWwucHJlZnMuQmFja2luZ1N0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZsdXNoU3BpIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJCYWNraW5nU3RvcmVFeGNlcHRpb24iIHR5cGU9ImphdmEudXRpbC5wcmVmcy5CYWNraW5nU3RvcmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZsdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCb29sZWFuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZsdCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCeXRlQXJyYXkiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmbHQiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDaGlsZCIKKyByZXR1cm49ImphdmEudXRpbC5wcmVmcy5BYnN0cmFjdFByZWZlcmVuY2VzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJCYWNraW5nU3RvcmVFeGNlcHRpb24iIHR5cGU9ImphdmEudXRpbC5wcmVmcy5CYWNraW5nU3RvcmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RG91YmxlIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmx0IiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmxvYXQiCisgcmV0dXJuPSJmbG9hdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZsdCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmx0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9uZyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmbHQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3BpIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNSZW1vdmVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1VzZXJOb2RlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJrZXlzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJCYWNraW5nU3RvcmVFeGNlcHRpb24iIHR5cGU9ImphdmEudXRpbC5wcmVmcy5CYWNraW5nU3RvcmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ia2V5c1NwaSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJCYWNraW5nU3RvcmVFeGNlcHRpb24iIHR5cGU9ImphdmEudXRpbC5wcmVmcy5CYWNraW5nU3RvcmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibm9kZSIKKyByZXR1cm49ImphdmEudXRpbC5wcmVmcy5QcmVmZXJlbmNlcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJub2RlRXhpc3RzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQmFja2luZ1N0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnV0aWwucHJlZnMuQmFja2luZ1N0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcmVudCIKKyByZXR1cm49ImphdmEudXRpbC5wcmVmcy5QcmVmZXJlbmNlcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dEJvb2xlYW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dEJ5dGVBcnJheSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXREb3VibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0RmxvYXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRJbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0TG9uZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0U3BpIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlTm9kZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkJhY2tpbmdTdG9yZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLnByZWZzLkJhY2tpbmdTdG9yZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVOb2RlQ2hhbmdlTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuY2wiIHR5cGU9ImphdmEudXRpbC5wcmVmcy5Ob2RlQ2hhbmdlTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlTm9kZVNwaSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxleGNlcHRpb24gbmFtZT0iQmFja2luZ1N0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnV0aWwucHJlZnMuQmFja2luZ1N0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZVByZWZlcmVuY2VDaGFuZ2VMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBjbCIgdHlwZT0iamF2YS51dGlsLnByZWZzLlByZWZlcmVuY2VDaGFuZ2VMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVTcGkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzeW5jIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iQmFja2luZ1N0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnV0aWwucHJlZnMuQmFja2luZ1N0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN5bmNTcGkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkJhY2tpbmdTdG9yZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLnByZWZzLkJhY2tpbmdTdG9yZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJsb2NrIgorIHR5cGU9ImphdmEubGFuZy5PYmplY3QiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im5ld05vZGUiCisgdHlwZT0iYm9vbGVhbiIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCYWNraW5nU3RvcmVFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLkV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJhY2tpbmdTdG9yZUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnV0aWwucHJlZnMuQmFja2luZ1N0b3JlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmFja2luZ1N0b3JlRXhjZXB0aW9uIgorIHR5cGU9ImphdmEudXRpbC5wcmVmcy5CYWNraW5nU3RvcmVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0IiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW52YWxpZFByZWZlcmVuY2VzRm9ybWF0RXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnZhbGlkUHJlZmVyZW5jZXNGb3JtYXRFeGNlcHRpb24iCisgdHlwZT0iamF2YS51dGlsLnByZWZzLkludmFsaWRQcmVmZXJlbmNlc0Zvcm1hdEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkludmFsaWRQcmVmZXJlbmNlc0Zvcm1hdEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnV0aWwucHJlZnMuSW52YWxpZFByZWZlcmVuY2VzRm9ybWF0RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idCIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW52YWxpZFByZWZlcmVuY2VzRm9ybWF0RXhjZXB0aW9uIgorIHR5cGU9ImphdmEudXRpbC5wcmVmcy5JbnZhbGlkUHJlZmVyZW5jZXNGb3JtYXRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0IiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTm9kZUNoYW5nZUV2ZW50IgorIGV4dGVuZHM9ImphdmEudXRpbC5FdmVudE9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik5vZGVDaGFuZ2VFdmVudCIKKyB0eXBlPSJqYXZhLnV0aWwucHJlZnMuTm9kZUNoYW5nZUV2ZW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icCIgdHlwZT0iamF2YS51dGlsLnByZWZzLlByZWZlcmVuY2VzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJqYXZhLnV0aWwucHJlZnMuUHJlZmVyZW5jZXMiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDaGlsZCIKKyByZXR1cm49ImphdmEudXRpbC5wcmVmcy5QcmVmZXJlbmNlcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJlbnQiCisgcmV0dXJuPSJqYXZhLnV0aWwucHJlZnMuUHJlZmVyZW5jZXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ik5vZGVDaGFuZ2VMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuRXZlbnRMaXN0ZW5lciI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImNoaWxkQWRkZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImUiIHR5cGU9ImphdmEudXRpbC5wcmVmcy5Ob2RlQ2hhbmdlRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hpbGRSZW1vdmVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJqYXZhLnV0aWwucHJlZnMuTm9kZUNoYW5nZUV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJQcmVmZXJlbmNlQ2hhbmdlRXZlbnQiCisgZXh0ZW5kcz0iamF2YS51dGlsLkV2ZW50T2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUHJlZmVyZW5jZUNoYW5nZUV2ZW50IgorIHR5cGU9ImphdmEudXRpbC5wcmVmcy5QcmVmZXJlbmNlQ2hhbmdlRXZlbnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwIiB0eXBlPSJqYXZhLnV0aWwucHJlZnMuUHJlZmVyZW5jZXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImsiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InYiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRLZXkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5ld1ZhbHVlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROb2RlIgorIHJldHVybj0iamF2YS51dGlsLnByZWZzLlByZWZlcmVuY2VzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJQcmVmZXJlbmNlQ2hhbmdlTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLkV2ZW50TGlzdGVuZXIiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJwcmVmZXJlbmNlQ2hhbmdlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwY2UiIHR5cGU9ImphdmEudXRpbC5wcmVmcy5QcmVmZXJlbmNlQ2hhbmdlRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlByZWZlcmVuY2VzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByZWZlcmVuY2VzIgorIHR5cGU9ImphdmEudXRpbC5wcmVmcy5QcmVmZXJlbmNlcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhYnNvbHV0ZVBhdGgiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkTm9kZUNoYW5nZUxpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuY2wiIHR5cGU9ImphdmEudXRpbC5wcmVmcy5Ob2RlQ2hhbmdlTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkUHJlZmVyZW5jZUNoYW5nZUxpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwY2wiIHR5cGU9ImphdmEudXRpbC5wcmVmcy5QcmVmZXJlbmNlQ2hhbmdlTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hpbGRyZW5OYW1lcyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJCYWNraW5nU3RvcmVFeGNlcHRpb24iIHR5cGU9ImphdmEudXRpbC5wcmVmcy5CYWNraW5nU3RvcmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkJhY2tpbmdTdG9yZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLnByZWZzLkJhY2tpbmdTdG9yZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJleHBvcnROb2RlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvc3RyZWFtIiB0eXBlPSJqYXZhLmlvLk91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQmFja2luZ1N0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnV0aWwucHJlZnMuQmFja2luZ1N0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJleHBvcnRTdWJ0cmVlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvc3RyZWFtIiB0eXBlPSJqYXZhLmlvLk91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQmFja2luZ1N0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnV0aWwucHJlZnMuQmFja2luZ1N0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmbHVzaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iQmFja2luZ1N0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnV0aWwucHJlZnMuQmFja2luZ1N0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZsdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCb29sZWFuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmx0IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJ5dGVBcnJheSIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmx0IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RG91YmxlIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmbHQiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGbG9hdCIKKyByZXR1cm49ImZsb2F0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmbHQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEludCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmx0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9uZyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZsdCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbXBvcnRQcmVmZXJlbmNlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXN0cmVhbSIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRQcmVmZXJlbmNlc0Zvcm1hdEV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLnByZWZzLkludmFsaWRQcmVmZXJlbmNlc0Zvcm1hdEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1VzZXJOb2RlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImtleXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iQmFja2luZ1N0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnV0aWwucHJlZnMuQmFja2luZ1N0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibm9kZSIKKyByZXR1cm49ImphdmEudXRpbC5wcmVmcy5QcmVmZXJlbmNlcyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5vZGVFeGlzdHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdGgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkJhY2tpbmdTdG9yZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLnByZWZzLkJhY2tpbmdTdG9yZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJlbnQiCisgcmV0dXJuPSJqYXZhLnV0aWwucHJlZnMuUHJlZmVyZW5jZXMiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0Qm9vbGVhbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRCeXRlQXJyYXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXREb3VibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRGbG9hdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0SW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0TG9uZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVOb2RlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJCYWNraW5nU3RvcmVFeGNlcHRpb24iIHR5cGU9ImphdmEudXRpbC5wcmVmcy5CYWNraW5nU3RvcmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlTm9kZUNoYW5nZUxpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuY2wiIHR5cGU9ImphdmEudXRpbC5wcmVmcy5Ob2RlQ2hhbmdlTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlUHJlZmVyZW5jZUNoYW5nZUxpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwY2wiIHR5cGU9ImphdmEudXRpbC5wcmVmcy5QcmVmZXJlbmNlQ2hhbmdlTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3luYyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iQmFja2luZ1N0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnV0aWwucHJlZnMuQmFja2luZ1N0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN5c3RlbU5vZGVGb3JQYWNrYWdlIgorIHJldHVybj0iamF2YS51dGlsLnByZWZzLlByZWZlcmVuY2VzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzeXN0ZW1Sb290IgorIHJldHVybj0iamF2YS51dGlsLnByZWZzLlByZWZlcmVuY2VzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXNlck5vZGVGb3JQYWNrYWdlIgorIHJldHVybj0iamF2YS51dGlsLnByZWZzLlByZWZlcmVuY2VzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1c2VyUm9vdCIKKyByZXR1cm49ImphdmEudXRpbC5wcmVmcy5QcmVmZXJlbmNlcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iTUFYX0tFWV9MRU5HVEgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNQVhfTkFNRV9MRU5HVEgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNQVhfVkFMVUVfTEVOR1RIIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODE5MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlByZWZlcmVuY2VzRmFjdG9yeSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InN5c3RlbVJvb3QiCisgcmV0dXJuPSJqYXZhLnV0aWwucHJlZnMuUHJlZmVyZW5jZXMiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1c2VyUm9vdCIKKyByZXR1cm49ImphdmEudXRpbC5wcmVmcy5QcmVmZXJlbmNlcyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImphdmEudXRpbC5yZWdleCIKKz4KKzxpbnRlcmZhY2UgbmFtZT0iTWF0Y2hSZXN1bHQiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJlbmQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXAiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJncm91cCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJncm91cCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXAiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJncm91cENvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJNYXRjaGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLnJlZ2V4Lk1hdGNoUmVzdWx0Ij4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iYXBwZW5kUmVwbGFjZW1lbnQiCisgcmV0dXJuPSJqYXZhLnV0aWwucmVnZXguTWF0Y2hlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXBsYWNlbWVudCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmRUYWlsIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ0J1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JvdXAiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmluZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmluZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ3JvdXAiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imdyb3VwIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJncm91cENvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc0FuY2hvcmluZ0JvdW5kcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzVHJhbnNwYXJlbnRCb3VuZHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImhpdEVuZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9va2luZ0F0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYXRjaGVzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXR0ZXJuIgorIHJldHVybj0iamF2YS51dGlsLnJlZ2V4LlBhdHRlcm4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVvdGVSZXBsYWNlbWVudCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpb24iCisgcmV0dXJuPSJqYXZhLnV0aWwucmVnZXguTWF0Y2hlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVnaW9uRW5kIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlZ2lvblN0YXJ0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcGxhY2VBbGwiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXBsYWNlbWVudCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXBsYWNlRmlyc3QiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXBsYWNlbWVudCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXF1aXJlRW5kIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldCIKKyByZXR1cm49ImphdmEudXRpbC5yZWdleC5NYXRjaGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnB1dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldCIKKyByZXR1cm49ImphdmEudXRpbC5yZWdleC5NYXRjaGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJncm91cCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9NYXRjaFJlc3VsdCIKKyByZXR1cm49ImphdmEudXRpbC5yZWdleC5NYXRjaFJlc3VsdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1c2VBbmNob3JpbmdCb3VuZHMiCisgcmV0dXJuPSJqYXZhLnV0aWwucmVnZXguTWF0Y2hlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXNlUGF0dGVybiIKKyByZXR1cm49ImphdmEudXRpbC5yZWdleC5NYXRjaGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXR0ZXJuIiB0eXBlPSJqYXZhLnV0aWwucmVnZXguUGF0dGVybiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1c2VUcmFuc3BhcmVudEJvdW5kcyIKKyByZXR1cm49ImphdmEudXRpbC5yZWdleC5NYXRjaGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQYXR0ZXJuIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJjb21waWxlIgorIHJldHVybj0iamF2YS51dGlsLnJlZ2V4LlBhdHRlcm4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0dGVybiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGF0dGVyblN5bnRheEV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLnJlZ2V4LlBhdHRlcm5TeW50YXhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcGlsZSIKKyByZXR1cm49ImphdmEudXRpbC5yZWdleC5QYXR0ZXJuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdHRlcm4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmxhZ3MiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWF0Y2hlciIKKyByZXR1cm49ImphdmEudXRpbC5yZWdleC5NYXRjaGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnB1dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYXRjaGVzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWdleCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImphdmEubGFuZy5DaGFyU2VxdWVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGF0dGVybiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVvdGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3BsaXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0U2VxIiB0eXBlPSJqYXZhLmxhbmcuQ2hhclNlcXVlbmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsaW1pdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNwbGl0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnB1dCIgdHlwZT0iamF2YS5sYW5nLkNoYXJTZXF1ZW5jZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNBTk9OX0VRIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNBU0VfSU5TRU5TSVRJVkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTU1FTlRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJET1RBTEwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMSVRFUkFMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTVVMVElMSU5FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVTklDT0RFX0NBU0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVTklYX0xJTkVTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUGF0dGVyblN5bnRheEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUGF0dGVyblN5bnRheEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZhLnV0aWwucmVnZXguUGF0dGVyblN5bnRheEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlc2NyaXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXR0ZXJuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0RGVzY3JpcHRpb24iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluZGV4IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhdHRlcm4iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iamF2YS51dGlsLnppcCIKKz4KKzxjbGFzcyBuYW1lPSJBZGxlcjMyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC56aXAuQ2hlY2tzdW0iPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFkbGVyMzIiCisgdHlwZT0iamF2YS51dGlsLnppcC5BZGxlcjMyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldFZhbHVlIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmJ5dGVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ1JDMzIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLnppcC5DaGVja3N1bSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ1JDMzIiCisgdHlwZT0iamF2YS51dGlsLnppcC5DUkMzMiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmJ5dGVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2hlY2tlZElucHV0U3RyZWFtIgorIGV4dGVuZHM9ImphdmEuaW8uRmlsdGVySW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDaGVja2VkSW5wdXRTdHJlYW0iCisgdHlwZT0iamF2YS51dGlsLnppcC5DaGVja2VkSW5wdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpcyIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3N1bSIgdHlwZT0iamF2YS51dGlsLnppcC5DaGVja3N1bSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldENoZWNrc3VtIgorIHJldHVybj0iamF2YS51dGlsLnppcC5DaGVja3N1bSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDaGVja2VkT3V0cHV0U3RyZWFtIgorIGV4dGVuZHM9ImphdmEuaW8uRmlsdGVyT3V0cHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2hlY2tlZE91dHB1dFN0cmVhbSIKKyB0eXBlPSJqYXZhLnV0aWwuemlwLkNoZWNrZWRPdXRwdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcyIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNzIiB0eXBlPSJqYXZhLnV0aWwuemlwLkNoZWNrc3VtIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q2hlY2tzdW0iCisgcmV0dXJuPSJqYXZhLnV0aWwuemlwLkNoZWNrc3VtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDaGVja3N1bSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldFZhbHVlIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYnl0ZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJEYXRhRm9ybWF0RXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEYXRhRm9ybWF0RXhjZXB0aW9uIgorIHR5cGU9ImphdmEudXRpbC56aXAuRGF0YUZvcm1hdEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRhdGFGb3JtYXRFeGNlcHRpb24iCisgdHlwZT0iamF2YS51dGlsLnppcC5EYXRhRm9ybWF0RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRlZmxhdGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEZWZsYXRlciIKKyB0eXBlPSJqYXZhLnV0aWwuemlwLkRlZmxhdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGVmbGF0ZXIiCisgdHlwZT0iamF2YS51dGlsLnppcC5EZWZsYXRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxldmVsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRlZmxhdGVyIgorIHR5cGU9ImphdmEudXRpbC56aXAuRGVmbGF0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZXZlbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJub0hlYWRlciIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlZmxhdGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlZmxhdGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYnl0ZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmluaXNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmlzaGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFkbGVyIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Qnl0ZXNSZWFkIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJ5dGVzV3JpdHRlbiIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUb3RhbEluIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VG90YWxPdXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZWVkc0lucHV0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERpY3Rpb25hcnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWYiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREaWN0aW9uYXJ5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWYiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2ZmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ieXRlcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldElucHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW5wdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmJ5dGVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TGV2ZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxldmVsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RyYXRlZ3kiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmF0ZWd5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJCRVNUX0NPTVBSRVNTSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJCRVNUX1NQRUVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUX0NPTVBSRVNTSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVGQVVMVF9TVFJBVEVHWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVGTEFURUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZJTFRFUkVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIVUZGTUFOX09OTFkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5PX0NPTVBSRVNTSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRGVmbGF0ZXJPdXRwdXRTdHJlYW0iCisgZXh0ZW5kcz0iamF2YS5pby5GaWx0ZXJPdXRwdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEZWZsYXRlck91dHB1dFN0cmVhbSIKKyB0eXBlPSJqYXZhLnV0aWwuemlwLkRlZmxhdGVyT3V0cHV0U3RyZWFtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3MiIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWYiIHR5cGU9ImphdmEudXRpbC56aXAuRGVmbGF0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRlZmxhdGVyT3V0cHV0U3RyZWFtIgorIHR5cGU9ImphdmEudXRpbC56aXAuRGVmbGF0ZXJPdXRwdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcyIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRlZmxhdGVyT3V0cHV0U3RyZWFtIgorIHR5cGU9ImphdmEudXRpbC56aXAuRGVmbGF0ZXJPdXRwdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcyIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZiIgdHlwZT0iamF2YS51dGlsLnppcC5EZWZsYXRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRlZmxhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaW5pc2giCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImJ1ZiIKKyB0eXBlPSJieXRlW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJkZWYiCisgdHlwZT0iamF2YS51dGlsLnppcC5EZWZsYXRlciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJHWklQSW5wdXRTdHJlYW0iCisgZXh0ZW5kcz0iamF2YS51dGlsLnppcC5JbmZsYXRlcklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iR1pJUElucHV0U3RyZWFtIgorIHR5cGU9ImphdmEudXRpbC56aXAuR1pJUElucHV0U3RyZWFtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXMiIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJHWklQSW5wdXRTdHJlYW0iCisgdHlwZT0iamF2YS51dGlsLnppcC5HWklQSW5wdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpcyIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iR1pJUF9NQUdJQyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NjE1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNyYyIKKyB0eXBlPSJqYXZhLnV0aWwuemlwLkNSQzMyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZW9zIgorIHR5cGU9ImJvb2xlYW4iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iR1pJUE91dHB1dFN0cmVhbSIKKyBleHRlbmRzPSJqYXZhLnV0aWwuemlwLkRlZmxhdGVyT3V0cHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iR1pJUE91dHB1dFN0cmVhbSIKKyB0eXBlPSJqYXZhLnV0aWwuemlwLkdaSVBPdXRwdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcyIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJHWklQT3V0cHV0U3RyZWFtIgorIHR5cGU9ImphdmEudXRpbC56aXAuR1pJUE91dHB1dFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9zIiB0eXBlPSJqYXZhLmlvLk91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iY3JjIgorIHR5cGU9ImphdmEudXRpbC56aXAuQ1JDMzIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW5mbGF0ZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkluZmxhdGVyIgorIHR5cGU9ImphdmEudXRpbC56aXAuSW5mbGF0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbmZsYXRlciIKKyB0eXBlPSJqYXZhLnV0aWwuemlwLkluZmxhdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibm9IZWFkZXIiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJlbmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmluaXNoZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWRsZXIiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCeXRlc1JlYWQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Qnl0ZXNXcml0dGVuIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlbWFpbmluZyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRvdGFsSW4iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUb3RhbE91dCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluZmxhdGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJEYXRhRm9ybWF0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnV0aWwuemlwLkRhdGFGb3JtYXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5mbGF0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWYiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2ZmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5ieXRlcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJEYXRhRm9ybWF0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnV0aWwuemlwLkRhdGFGb3JtYXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmVlZHNEaWN0aW9uYXJ5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5lZWRzSW5wdXQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGljdGlvbmFyeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGljdGlvbmFyeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYnl0ZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJbnB1dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW5wdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmJ5dGVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSW5mbGF0ZXJJbnB1dFN0cmVhbSIKKyBleHRlbmRzPSJqYXZhLmlvLkZpbHRlcklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW5mbGF0ZXJJbnB1dFN0cmVhbSIKKyB0eXBlPSJqYXZhLnV0aWwuemlwLkluZmxhdGVySW5wdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpcyIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW5mbGF0ZXJJbnB1dFN0cmVhbSIKKyB0eXBlPSJqYXZhLnV0aWwuemlwLkluZmxhdGVySW5wdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpcyIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5mIiB0eXBlPSJqYXZhLnV0aWwuemlwLkluZmxhdGVyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbmZsYXRlcklucHV0U3RyZWFtIgorIHR5cGU9ImphdmEudXRpbC56aXAuSW5mbGF0ZXJJbnB1dFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlzIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmYiIHR5cGU9ImphdmEudXRpbC56aXAuSW5mbGF0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJmaWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJidWYiCisgdHlwZT0iYnl0ZVtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaW5mIgorIHR5cGU9ImphdmEudXRpbC56aXAuSW5mbGF0ZXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsZW4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlppcEVudHJ5IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5DbG9uZWFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlppcEVudHJ5IgorIHR5cGU9ImphdmEudXRpbC56aXAuWmlwRW50cnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJaaXBFbnRyeSIKKyB0eXBlPSJqYXZhLnV0aWwuemlwLlppcEVudHJ5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iemUiIHR5cGU9ImphdmEudXRpbC56aXAuWmlwRW50cnkiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29tbWVudCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29tcHJlc3NlZFNpemUiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENyYyIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RXh0cmEiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWV0aG9kIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNpemUiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRpbWUiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRGlyZWN0b3J5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb21tZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbXByZXNzZWRTaXplIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q3JjIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RXh0cmEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWV0aG9kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTaXplIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGltZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iREVGTEFURUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNUT1JFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlppcEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmlvLklPRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iWmlwRXhjZXB0aW9uIgorIHR5cGU9ImphdmEudXRpbC56aXAuWmlwRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iWmlwRXhjZXB0aW9uIgorIHR5cGU9ImphdmEudXRpbC56aXAuWmlwRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGV0YWlsTWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlppcEZpbGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlppcEZpbGUiCisgdHlwZT0iamF2YS51dGlsLnppcC5aaXBGaWxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsZSIgdHlwZT0iamF2YS5pby5GaWxlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iWmlwRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnV0aWwuemlwLlppcEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iWmlwRmlsZSIKKyB0eXBlPSJqYXZhLnV0aWwuemlwLlppcEZpbGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmaWxlIiB0eXBlPSJqYXZhLmlvLkZpbGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlppcEZpbGUiCisgdHlwZT0iamF2YS51dGlsLnppcC5aaXBGaWxlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVudHJpZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuRW51bWVyYXRpb24mbHQ7PyBleHRlbmRzIGphdmEudXRpbC56aXAuWmlwRW50cnkmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVudHJ5IgorIHJldHVybj0iamF2YS51dGlsLnppcC5aaXBFbnRyeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW50cnlOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElucHV0U3RyZWFtIgorIHJldHVybj0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW50cnkiIHR5cGU9ImphdmEudXRpbC56aXAuWmlwRW50cnkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJPUEVOX0RFTEVURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT1BFTl9SRUFEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iWmlwSW5wdXRTdHJlYW0iCisgZXh0ZW5kcz0iamF2YS51dGlsLnppcC5JbmZsYXRlcklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iWmlwSW5wdXRTdHJlYW0iCisgdHlwZT0iamF2YS51dGlsLnppcC5aaXBJbnB1dFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmVhbSIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb3NlRW50cnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVaaXBFbnRyeSIKKyByZXR1cm49ImphdmEudXRpbC56aXAuWmlwRW50cnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmV4dEVudHJ5IgorIHJldHVybj0iamF2YS51dGlsLnppcC5aaXBFbnRyeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iWmlwT3V0cHV0U3RyZWFtIgorIGV4dGVuZHM9ImphdmEudXRpbC56aXAuRGVmbGF0ZXJPdXRwdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJaaXBPdXRwdXRTdHJlYW0iCisgdHlwZT0iamF2YS51dGlsLnppcC5aaXBPdXRwdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwMSIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9zZUVudHJ5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0TmV4dEVudHJ5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iemUiIHR5cGU9ImphdmEudXRpbC56aXAuWmlwRW50cnkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbW1lbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb21tZW50IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldExldmVsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGV2ZWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNZXRob2QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXRob2QiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkRFRkxBVEVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVE9SRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImphdmF4LmNyeXB0byIKKz4KKzxjbGFzcyBuYW1lPSJCYWRQYWRkaW5nRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEuc2VjdXJpdHkuR2VuZXJhbFNlY3VyaXR5RXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmFkUGFkZGluZ0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC5jcnlwdG8uQmFkUGFkZGluZ0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmFkUGFkZGluZ0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC5jcnlwdG8uQmFkUGFkZGluZ0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDaXBoZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNpcGhlciIKKyB0eXBlPSJqYXZheC5jcnlwdG8uQ2lwaGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2lwaGVyU3BpIiB0eXBlPSJqYXZheC5jcnlwdG8uQ2lwaGVyU3BpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iamF2YS5zZWN1cml0eS5Qcm92aWRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHJhbnNmb3JtYXRpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkb0ZpbmFsIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkJhZFBhZGRpbmdFeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5CYWRQYWRkaW5nRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQmxvY2tTaXplRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5jcnlwdG8uSWxsZWdhbEJsb2NrU2l6ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkb0ZpbmFsIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHB1dCIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXRwdXRPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQmFkUGFkZGluZ0V4Y2VwdGlvbiIgdHlwZT0iamF2YXguY3J5cHRvLkJhZFBhZGRpbmdFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxCbG9ja1NpemVFeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5JbGxlZ2FsQmxvY2tTaXplRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTaG9ydEJ1ZmZlckV4Y2VwdGlvbiIgdHlwZT0iamF2YXguY3J5cHRvLlNob3J0QnVmZmVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRvRmluYWwiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQmFkUGFkZGluZ0V4Y2VwdGlvbiIgdHlwZT0iamF2YXguY3J5cHRvLkJhZFBhZGRpbmdFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxCbG9ja1NpemVFeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5JbGxlZ2FsQmxvY2tTaXplRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRvRmluYWwiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXRPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXRMZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQmFkUGFkZGluZ0V4Y2VwdGlvbiIgdHlwZT0iamF2YXguY3J5cHRvLkJhZFBhZGRpbmdFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxCbG9ja1NpemVFeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5JbGxlZ2FsQmxvY2tTaXplRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRvRmluYWwiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXRPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXRMZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0cHV0IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkJhZFBhZGRpbmdFeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5CYWRQYWRkaW5nRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQmxvY2tTaXplRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5jcnlwdG8uSWxsZWdhbEJsb2NrU2l6ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU2hvcnRCdWZmZXJFeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5TaG9ydEJ1ZmZlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkb0ZpbmFsIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0T2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0TGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHB1dCIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXRwdXRPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQmFkUGFkZGluZ0V4Y2VwdGlvbiIgdHlwZT0iamF2YXguY3J5cHRvLkJhZFBhZGRpbmdFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxCbG9ja1NpemVFeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5JbGxlZ2FsQmxvY2tTaXplRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTaG9ydEJ1ZmZlckV4Y2VwdGlvbiIgdHlwZT0iamF2YXguY3J5cHRvLlNob3J0QnVmZmVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRvRmluYWwiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHB1dCIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQmFkUGFkZGluZ0V4Y2VwdGlvbiIgdHlwZT0iamF2YXguY3J5cHRvLkJhZFBhZGRpbmdFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxCbG9ja1NpemVFeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5JbGxlZ2FsQmxvY2tTaXplRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTaG9ydEJ1ZmZlckV4Y2VwdGlvbiIgdHlwZT0iamF2YXguY3J5cHRvLlNob3J0QnVmZmVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFsZ29yaXRobSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCbG9ja1NpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeGVtcHRpb25NZWNoYW5pc20iCisgcmV0dXJuPSJqYXZheC5jcnlwdG8uRXhlbXB0aW9uTWVjaGFuaXNtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SVYiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImphdmF4LmNyeXB0by5DaXBoZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0cmFuc2Zvcm1hdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoUGFkZGluZ0V4Y2VwdGlvbiIgdHlwZT0iamF2YXguY3J5cHRvLk5vU3VjaFBhZGRpbmdFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZheC5jcnlwdG8uQ2lwaGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHJhbnNmb3JtYXRpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hQYWRkaW5nRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5jcnlwdG8uTm9TdWNoUGFkZGluZ0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZheC5jcnlwdG8uQ2lwaGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHJhbnNmb3JtYXRpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hQYWRkaW5nRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5jcnlwdG8uTm9TdWNoUGFkZGluZ0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYXhBbGxvd2VkS2V5TGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHJhbnNmb3JtYXRpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF4QWxsb3dlZFBhcmFtZXRlclNwZWMiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LnNwZWMuQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRyYW5zZm9ybWF0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE91dHB1dFNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXRMZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJhbWV0ZXJzIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5BbGdvcml0aG1QYXJhbWV0ZXJzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvdmlkZXIiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5pdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3Btb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbml0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcG1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmFuZG9tIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlNlY3VyZVJhbmRvbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9wbW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5BbGdvcml0aG1QYXJhbWV0ZXJTcGVjIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbml0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcG1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmFuZG9tIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlNlY3VyZVJhbmRvbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkS2V5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRLZXlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5pdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3Btb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5zZWN1cml0eS5BbGdvcml0aG1QYXJhbWV0ZXJzIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbml0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcG1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkFsZ29yaXRobVBhcmFtZXRlcnMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJhbmRvbSIgdHlwZT0iamF2YS5zZWN1cml0eS5TZWN1cmVSYW5kb20iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9wbW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjZXJ0aWZpY2F0ZSIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkS2V5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRLZXlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5pdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3Btb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNlcnRpZmljYXRlIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJhbmRvbSIgdHlwZT0iamF2YS5zZWN1cml0eS5TZWN1cmVSYW5kb20iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bndyYXAiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LktleSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3cmFwcGVkS2V5IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndyYXBwZWRLZXlBbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndyYXBwZWRLZXlUeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGUiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGUiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXRPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXRMZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXRPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXRMZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0cHV0IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNob3J0QnVmZmVyRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5jcnlwdG8uU2hvcnRCdWZmZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0T2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0TGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHB1dCIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXRwdXRPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU2hvcnRCdWZmZXJFeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5TaG9ydEJ1ZmZlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHB1dCIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU2hvcnRCdWZmZXJFeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5TaG9ydEJ1ZmZlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cmFwIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxCbG9ja1NpemVFeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5JbGxlZ2FsQmxvY2tTaXplRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkS2V5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRLZXlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJERUNSWVBUX01PREUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVOQ1JZUFRfTU9ERSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJJVkFURV9LRVkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBVQkxJQ19LRVkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFQ1JFVF9LRVkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVOV1JBUF9NT0RFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXUkFQX01PREUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDaXBoZXJJbnB1dFN0cmVhbSIKKyBleHRlbmRzPSJqYXZhLmlvLkZpbHRlcklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2lwaGVySW5wdXRTdHJlYW0iCisgdHlwZT0iamF2YXguY3J5cHRvLkNpcGhlcklucHV0U3RyZWFtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXMiIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImphdmF4LmNyeXB0by5DaXBoZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNpcGhlcklucHV0U3RyZWFtIgorIHR5cGU9ImphdmF4LmNyeXB0by5DaXBoZXJJbnB1dFN0cmVhbSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlzIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2lwaGVyT3V0cHV0U3RyZWFtIgorIGV4dGVuZHM9ImphdmEuaW8uRmlsdGVyT3V0cHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2lwaGVyT3V0cHV0U3RyZWFtIgorIHR5cGU9ImphdmF4LmNyeXB0by5DaXBoZXJPdXRwdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcyIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImphdmF4LmNyeXB0by5DaXBoZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNpcGhlck91dHB1dFN0cmVhbSIKKyB0eXBlPSJqYXZheC5jcnlwdG8uQ2lwaGVyT3V0cHV0U3RyZWFtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3MiIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2lwaGVyU3BpIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNpcGhlclNwaSIKKyB0eXBlPSJqYXZheC5jcnlwdG8uQ2lwaGVyU3BpIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZURvRmluYWwiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXRPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXRMZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQmFkUGFkZGluZ0V4Y2VwdGlvbiIgdHlwZT0iamF2YXguY3J5cHRvLkJhZFBhZGRpbmdFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxCbG9ja1NpemVFeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5JbGxlZ2FsQmxvY2tTaXplRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZURvRmluYWwiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXRPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXRMZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0cHV0IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHB1dE9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJCYWRQYWRkaW5nRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5jcnlwdG8uQmFkUGFkZGluZ0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEJsb2NrU2l6ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YXguY3J5cHRvLklsbGVnYWxCbG9ja1NpemVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNob3J0QnVmZmVyRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5jcnlwdG8uU2hvcnRCdWZmZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lRG9GaW5hbCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHB1dCIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQmFkUGFkZGluZ0V4Y2VwdGlvbiIgdHlwZT0iamF2YXguY3J5cHRvLkJhZFBhZGRpbmdFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxCbG9ja1NpemVFeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5JbGxlZ2FsQmxvY2tTaXplRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTaG9ydEJ1ZmZlckV4Y2VwdGlvbiIgdHlwZT0iamF2YXguY3J5cHRvLlNob3J0QnVmZmVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUdldEJsb2NrU2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUdldElWIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lR2V0S2V5U2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUdldE91dHB1dFNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXRMZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVHZXRQYXJhbWV0ZXJzIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5BbGdvcml0aG1QYXJhbWV0ZXJzIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lSW5pdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3Btb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJhbmRvbSIgdHlwZT0iamF2YS5zZWN1cml0eS5TZWN1cmVSYW5kb20iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVJbml0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcG1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmFuZG9tIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlNlY3VyZVJhbmRvbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkS2V5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRLZXlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lSW5pdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3Btb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5zZWN1cml0eS5BbGdvcml0aG1QYXJhbWV0ZXJzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyYW5kb20iIHR5cGU9ImphdmEuc2VjdXJpdHkuU2VjdXJlUmFuZG9tIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVTZXRNb2RlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZVNldFBhZGRpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhZGRpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaFBhZGRpbmdFeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5Ob1N1Y2hQYWRkaW5nRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZVVud3JhcCIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuS2V5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3cmFwcGVkS2V5IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndyYXBwZWRLZXlBbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndyYXBwZWRLZXlUeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVVcGRhdGUiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXRPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXRMZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVVcGRhdGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXRPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXRMZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0cHV0IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHB1dE9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTaG9ydEJ1ZmZlckV4Y2VwdGlvbiIgdHlwZT0iamF2YXguY3J5cHRvLlNob3J0QnVmZmVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZVVwZGF0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHB1dCIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU2hvcnRCdWZmZXJFeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5TaG9ydEJ1ZmZlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVXcmFwIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQmxvY2tTaXplRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5jcnlwdG8uSWxsZWdhbEJsb2NrU2l6ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkVuY3J5cHRlZFByaXZhdGVLZXlJbmZvIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFbmNyeXB0ZWRQcml2YXRlS2V5SW5mbyIKKyB0eXBlPSJqYXZheC5jcnlwdG8uRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmNvZGVkIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFbmNyeXB0ZWRQcml2YXRlS2V5SW5mbyIKKyB0eXBlPSJqYXZheC5jcnlwdG8uRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmNyQWxnTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5jcnlwdGVkRGF0YSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFbmNyeXB0ZWRQcml2YXRlS2V5SW5mbyIKKyB0eXBlPSJqYXZheC5jcnlwdG8uRW5jcnlwdGVkUHJpdmF0ZUtleUluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGdQYXJhbXMiIHR5cGU9ImphdmEuc2VjdXJpdHkuQWxnb3JpdGhtUGFyYW1ldGVycyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5jcnlwdGVkRGF0YSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0QWxnTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWxnUGFyYW1ldGVycyIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuQWxnb3JpdGhtUGFyYW1ldGVycyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbmNvZGVkIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbmNyeXB0ZWREYXRhIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEtleVNwZWMiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LnNwZWMuUEtDUzhFbmNvZGVkS2V5U3BlYyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2lwaGVyIiB0eXBlPSJqYXZheC5jcnlwdG8uQ2lwaGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkS2V5U3BlY0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLkludmFsaWRLZXlTcGVjRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEtleVNwZWMiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LnNwZWMuUEtDUzhFbmNvZGVkS2V5U3BlYyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVjcnlwdEtleSIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRLZXlTcGVjIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5zcGVjLlBLQ1M4RW5jb2RlZEtleVNwZWMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlY3J5cHRLZXkiIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlck5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0S2V5U3BlYyIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuc3BlYy5QS0NTOEVuY29kZWRLZXlTcGVjIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZWNyeXB0S2V5IiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJFeGVtcHRpb25NZWNoYW5pc20iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkV4ZW1wdGlvbk1lY2hhbmlzbSIKKyB0eXBlPSJqYXZheC5jcnlwdG8uRXhlbXB0aW9uTWVjaGFuaXNtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhtZWNoU3BpIiB0eXBlPSJqYXZheC5jcnlwdG8uRXhlbXB0aW9uTWVjaGFuaXNtU3BpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iamF2YS5zZWN1cml0eS5Qcm92aWRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVjaGFuaXNtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2VuRXhlbXB0aW9uQmxvYiIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJFeGVtcHRpb25NZWNoYW5pc21FeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5FeGVtcHRpb25NZWNoYW5pc21FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZW5FeGVtcHRpb25CbG9iIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHB1dCIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJFeGVtcHRpb25NZWNoYW5pc21FeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5FeGVtcHRpb25NZWNoYW5pc21FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU2hvcnRCdWZmZXJFeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5TaG9ydEJ1ZmZlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZW5FeGVtcHRpb25CbG9iIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHB1dCIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXRwdXRPZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRXhlbXB0aW9uTWVjaGFuaXNtRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5jcnlwdG8uRXhlbXB0aW9uTWVjaGFuaXNtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNob3J0QnVmZmVyRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5jcnlwdG8uU2hvcnRCdWZmZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZheC5jcnlwdG8uRXhlbXB0aW9uTWVjaGFuaXNtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YXguY3J5cHRvLkV4ZW1wdGlvbk1lY2hhbmlzbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsZ29yaXRobSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YXguY3J5cHRvLkV4ZW1wdGlvbk1lY2hhbmlzbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsZ29yaXRobSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPdXRwdXRTaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0TGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm92aWRlciIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbml0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJFeGVtcHRpb25NZWNoYW5pc21FeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5FeGVtcHRpb25NZWNoYW5pc21FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbml0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iamF2YS5zZWN1cml0eS5BbGdvcml0aG1QYXJhbWV0ZXJzIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJFeGVtcHRpb25NZWNoYW5pc21FeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5FeGVtcHRpb25NZWNoYW5pc21FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtIiB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRXhlbXB0aW9uTWVjaGFuaXNtRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5jcnlwdG8uRXhlbXB0aW9uTWVjaGFuaXNtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0NyeXB0b0FsbG93ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkV4ZW1wdGlvbk1lY2hhbmlzbUV4Y2VwdGlvbiIgdHlwZT0iamF2YXguY3J5cHRvLkV4ZW1wdGlvbk1lY2hhbmlzbUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJFeGVtcHRpb25NZWNoYW5pc21FeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5HZW5lcmFsU2VjdXJpdHlFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFeGVtcHRpb25NZWNoYW5pc21FeGNlcHRpb24iCisgdHlwZT0iamF2YXguY3J5cHRvLkV4ZW1wdGlvbk1lY2hhbmlzbUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRXhlbXB0aW9uTWVjaGFuaXNtRXhjZXB0aW9uIgorIHR5cGU9ImphdmF4LmNyeXB0by5FeGVtcHRpb25NZWNoYW5pc21FeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRXhlbXB0aW9uTWVjaGFuaXNtU3BpIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkV4ZW1wdGlvbk1lY2hhbmlzbVNwaSIKKyB0eXBlPSJqYXZheC5jcnlwdG8uRXhlbXB0aW9uTWVjaGFuaXNtU3BpIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUdlbkV4ZW1wdGlvbkJsb2IiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxleGNlcHRpb24gbmFtZT0iRXhlbXB0aW9uTWVjaGFuaXNtRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5jcnlwdG8uRXhlbXB0aW9uTWVjaGFuaXNtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUdlbkV4ZW1wdGlvbkJsb2IiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0cHV0IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHB1dE9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJFeGVtcHRpb25NZWNoYW5pc21FeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5FeGVtcHRpb25NZWNoYW5pc21FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNob3J0QnVmZmVyRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5jcnlwdG8uU2hvcnRCdWZmZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lR2V0T3V0cHV0U2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnB1dExlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUluaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkV4ZW1wdGlvbk1lY2hhbmlzbUV4Y2VwdGlvbiIgdHlwZT0iamF2YXguY3J5cHRvLkV4ZW1wdGlvbk1lY2hhbmlzbUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUluaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5zZWN1cml0eS5BbGdvcml0aG1QYXJhbWV0ZXJzIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJFeGVtcHRpb25NZWNoYW5pc21FeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5FeGVtcHRpb25NZWNoYW5pc21FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUluaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLkFsZ29yaXRobVBhcmFtZXRlclNwZWMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkV4ZW1wdGlvbk1lY2hhbmlzbUV4Y2VwdGlvbiIgdHlwZT0iamF2YXguY3J5cHRvLkV4ZW1wdGlvbk1lY2hhbmlzbUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkS2V5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRLZXlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSWxsZWdhbEJsb2NrU2l6ZUV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLnNlY3VyaXR5LkdlbmVyYWxTZWN1cml0eUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IklsbGVnYWxCbG9ja1NpemVFeGNlcHRpb24iCisgdHlwZT0iamF2YXguY3J5cHRvLklsbGVnYWxCbG9ja1NpemVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IklsbGVnYWxCbG9ja1NpemVFeGNlcHRpb24iCisgdHlwZT0iamF2YXguY3J5cHRvLklsbGVnYWxCbG9ja1NpemVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iS2V5QWdyZWVtZW50IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJLZXlBZ3JlZW1lbnQiCisgdHlwZT0iamF2YXguY3J5cHRvLktleUFncmVlbWVudCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUFncmVlU3BpIiB0eXBlPSJqYXZheC5jcnlwdG8uS2V5QWdyZWVtZW50U3BpIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iamF2YS5zZWN1cml0eS5Qcm92aWRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZG9QaGFzZSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuS2V5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxhc3RQaGFzZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkS2V5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRLZXlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2VuZXJhdGVTZWNyZXQiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdlbmVyYXRlU2VjcmV0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNoYXJlZFNlY3JldCIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTaG9ydEJ1ZmZlckV4Y2VwdGlvbiIgdHlwZT0iamF2YXguY3J5cHRvLlNob3J0QnVmZmVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdlbmVyYXRlU2VjcmV0IgorIHJldHVybj0iamF2YXguY3J5cHRvLlNlY3JldEtleSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFsZ29yaXRobSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImphdmF4LmNyeXB0by5LZXlBZ3JlZW1lbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZheC5jcnlwdG8uS2V5QWdyZWVtZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZheC5jcnlwdG8uS2V5QWdyZWVtZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iamF2YS5zZWN1cml0eS5Qcm92aWRlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm92aWRlciIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbml0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkS2V5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRLZXlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5pdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmFuZG9tIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlNlY3VyZVJhbmRvbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLkFsZ29yaXRobVBhcmFtZXRlclNwZWMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLkFsZ29yaXRobVBhcmFtZXRlclNwZWMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJhbmRvbSIgdHlwZT0iamF2YS5zZWN1cml0eS5TZWN1cmVSYW5kb20iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IktleUFncmVlbWVudFNwaSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJLZXlBZ3JlZW1lbnRTcGkiCisgdHlwZT0iamF2YXguY3J5cHRvLktleUFncmVlbWVudFNwaSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVEb1BoYXNlIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5LZXkiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGFzdFBoYXNlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVHZW5lcmF0ZVNlY3JldCIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lR2VuZXJhdGVTZWNyZXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2hhcmVkU2VjcmV0IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNob3J0QnVmZmVyRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5jcnlwdG8uU2hvcnRCdWZmZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lR2VuZXJhdGVTZWNyZXQiCisgcmV0dXJuPSJqYXZheC5jcnlwdG8uU2VjcmV0S2V5IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsZ29yaXRobSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkS2V5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRLZXlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lSW5pdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmFuZG9tIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlNlY3VyZVJhbmRvbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUluaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLkFsZ29yaXRobVBhcmFtZXRlclNwZWMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJhbmRvbSIgdHlwZT0iamF2YS5zZWN1cml0eS5TZWN1cmVSYW5kb20iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IktleUdlbmVyYXRvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5R2VuZXJhdG9yIgorIHR5cGU9ImphdmF4LmNyeXB0by5LZXlHZW5lcmF0b3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlHZW5TcGkiIHR5cGU9ImphdmF4LmNyeXB0by5LZXlHZW5lcmF0b3JTcGkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZW5lcmF0ZUtleSIKKyByZXR1cm49ImphdmF4LmNyeXB0by5TZWNyZXRLZXkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbGdvcml0aG0iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZheC5jcnlwdG8uS2V5R2VuZXJhdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YXguY3J5cHRvLktleUdlbmVyYXRvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsZ29yaXRobSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YXguY3J5cHRvLktleUdlbmVyYXRvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsZ29yaXRobSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvdmlkZXIiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5pdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLkFsZ29yaXRobVBhcmFtZXRlclNwZWMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJhbmRvbSIgdHlwZT0iamF2YS5zZWN1cml0eS5TZWN1cmVSYW5kb20iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbml0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5pdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5c2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyYW5kb20iIHR5cGU9ImphdmEuc2VjdXJpdHkuU2VjdXJlUmFuZG9tIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJhbmRvbSIgdHlwZT0iamF2YS5zZWN1cml0eS5TZWN1cmVSYW5kb20iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iS2V5R2VuZXJhdG9yU3BpIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IktleUdlbmVyYXRvclNwaSIKKyB0eXBlPSJqYXZheC5jcnlwdG8uS2V5R2VuZXJhdG9yU3BpIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUdlbmVyYXRlS2V5IgorIHJldHVybj0iamF2YXguY3J5cHRvLlNlY3JldEtleSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUluaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLkFsZ29yaXRobVBhcmFtZXRlclNwZWMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJhbmRvbSIgdHlwZT0iamF2YS5zZWN1cml0eS5TZWN1cmVSYW5kb20iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVJbml0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJhbmRvbSIgdHlwZT0iamF2YS5zZWN1cml0eS5TZWN1cmVSYW5kb20iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lSW5pdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmFuZG9tIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlNlY3VyZVJhbmRvbSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNYWMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTWFjIgorIHR5cGU9ImphdmF4LmNyeXB0by5NYWMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYWNTcGkiIHR5cGU9ImphdmF4LmNyeXB0by5NYWNTcGkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5DbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkb0ZpbmFsIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkb0ZpbmFsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXRwdXQiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0T2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU2hvcnRCdWZmZXJFeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5TaG9ydEJ1ZmZlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkb0ZpbmFsIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbGdvcml0aG0iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZheC5jcnlwdG8uTWFjIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YXguY3J5cHRvLk1hYyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsZ29yaXRobSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YXguY3J5cHRvLk1hYyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsZ29yaXRobSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWFjTGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvdmlkZXIiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5pdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkS2V5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRLZXlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5pdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImJ5dGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTWFjU3BpIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1hY1NwaSIKKyB0eXBlPSJqYXZheC5jcnlwdG8uTWFjU3BpIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5DbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVEb0ZpbmFsIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lR2V0TWFjTGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lSW5pdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkS2V5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRLZXlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lUmVzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lVXBkYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnB1dCIgdHlwZT0iYnl0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVVcGRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVVcGRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnB1dCIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJOb1N1Y2hQYWRkaW5nRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEuc2VjdXJpdHkuR2VuZXJhbFNlY3VyaXR5RXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTm9TdWNoUGFkZGluZ0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC5jcnlwdG8uTm9TdWNoUGFkZGluZ0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTm9TdWNoUGFkZGluZ0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC5jcnlwdG8uTm9TdWNoUGFkZGluZ0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJOdWxsQ2lwaGVyIgorIGV4dGVuZHM9ImphdmF4LmNyeXB0by5DaXBoZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOdWxsQ2lwaGVyIgorIHR5cGU9ImphdmF4LmNyeXB0by5OdWxsQ2lwaGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNlYWxlZE9iamVjdCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2VhbGVkT2JqZWN0IgorIHR5cGU9ImphdmF4LmNyeXB0by5TZWFsZWRPYmplY3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJqYXZheC5jcnlwdG8uQ2lwaGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEJsb2NrU2l6ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YXguY3J5cHRvLklsbGVnYWxCbG9ja1NpemVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNlYWxlZE9iamVjdCIKKyB0eXBlPSJqYXZheC5jcnlwdG8uU2VhbGVkT2JqZWN0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic28iIHR5cGU9ImphdmF4LmNyeXB0by5TZWFsZWRPYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRBbGdvcml0aG0iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T2JqZWN0IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGFzc05vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuSW52YWxpZEtleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPYmplY3QiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImphdmF4LmNyeXB0by5DaXBoZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkJhZFBhZGRpbmdFeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5CYWRQYWRkaW5nRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGFzc05vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxCbG9ja1NpemVFeGNlcHRpb24iIHR5cGU9ImphdmF4LmNyeXB0by5JbGxlZ2FsQmxvY2tTaXplRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9iamVjdCIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNsYXNzTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5DbGFzc05vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hQcm92aWRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hQcm92aWRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImVuY29kZWRQYXJhbXMiCisgdHlwZT0iYnl0ZVtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJTZWNyZXRLZXkiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5LZXkiPgorPC9pbXBsZW1lbnRzPgorPGZpZWxkIG5hbWU9InNlcmlhbFZlcnNpb25VSUQiCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTQ3OTU4Nzg3MDk1OTUxNDY5NTJMIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iU2VjcmV0S2V5RmFjdG9yeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2VjcmV0S2V5RmFjdG9yeSIKKyB0eXBlPSJqYXZheC5jcnlwdG8uU2VjcmV0S2V5RmFjdG9yeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUZhY1NwaSIgdHlwZT0iamF2YXguY3J5cHRvLlNlY3JldEtleUZhY3RvcnlTcGkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZW5lcmF0ZVNlY3JldCIKKyByZXR1cm49ImphdmF4LmNyeXB0by5TZWNyZXRLZXkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5U3BlYyIgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLktleVNwZWMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlTcGVjRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuSW52YWxpZEtleVNwZWNFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWxnb3JpdGhtIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YXguY3J5cHRvLlNlY3JldEtleUZhY3RvcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZheC5jcnlwdG8uU2VjcmV0S2V5RmFjdG9yeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsZ29yaXRobSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YXguY3J5cHRvLlNlY3JldEtleUZhY3RvcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEtleVNwZWMiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LnNwZWMuS2V5U3BlYyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmF4LmNyeXB0by5TZWNyZXRLZXkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtleVNwZWMiIHR5cGU9ImphdmEubGFuZy5DbGFzcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleVNwZWNFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuc3BlYy5JbnZhbGlkS2V5U3BlY0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm92aWRlciIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0cmFuc2xhdGVLZXkiCisgcmV0dXJuPSJqYXZheC5jcnlwdG8uU2VjcmV0S2V5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YXguY3J5cHRvLlNlY3JldEtleSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNlY3JldEtleUZhY3RvcnlTcGkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2VjcmV0S2V5RmFjdG9yeVNwaSIKKyB0eXBlPSJqYXZheC5jcnlwdG8uU2VjcmV0S2V5RmFjdG9yeVNwaSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVHZW5lcmF0ZVNlY3JldCIKKyByZXR1cm49ImphdmF4LmNyeXB0by5TZWNyZXRLZXkiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5U3BlYyIgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLktleVNwZWMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkludmFsaWRLZXlTcGVjRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuSW52YWxpZEtleVNwZWNFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lR2V0S2V5U3BlYyIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuc3BlYy5LZXlTcGVjIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YXguY3J5cHRvLlNlY3JldEtleSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5U3BlYyIgdHlwZT0iamF2YS5sYW5nLkNsYXNzIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkS2V5U3BlY0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5zcGVjLkludmFsaWRLZXlTcGVjRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZVRyYW5zbGF0ZUtleSIKKyByZXR1cm49ImphdmF4LmNyeXB0by5TZWNyZXRLZXkiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZheC5jcnlwdG8uU2VjcmV0S2V5Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkS2V5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRLZXlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2hvcnRCdWZmZXJFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5HZW5lcmFsU2VjdXJpdHlFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTaG9ydEJ1ZmZlckV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC5jcnlwdG8uU2hvcnRCdWZmZXJFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNob3J0QnVmZmVyRXhjZXB0aW9uIgorIHR5cGU9ImphdmF4LmNyeXB0by5TaG9ydEJ1ZmZlckV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImphdmF4LmNyeXB0by5pbnRlcmZhY2VzIgorPgorPGludGVyZmFjZSBuYW1lPSJESEtleSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtcyIKKyByZXR1cm49ImphdmF4LmNyeXB0by5zcGVjLkRIUGFyYW1ldGVyU3BlYyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iREhQcml2YXRlS2V5IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmF4LmNyeXB0by5pbnRlcmZhY2VzLkRIS2V5Ij4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuUHJpdmF0ZUtleSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImdldFgiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0ic2VyaWFsVmVyc2lvblVJRCIKKyB0eXBlPSJsb25nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMjExNzkxMTEzMzgwMzk2NTUzTCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJESFB1YmxpY0tleSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZheC5jcnlwdG8uaW50ZXJmYWNlcy5ESEtleSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnNlY3VyaXR5LlB1YmxpY0tleSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImdldFkiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0ic2VyaWFsVmVyc2lvblVJRCIKKyB0eXBlPSJsb25nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItNjYyODEwMzU2MzM1MjUxOTE5M0wiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iUEJFS2V5IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmF4LmNyeXB0by5TZWNyZXRLZXkiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRJdGVyYXRpb25Db3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhc3N3b3JkIgorIHJldHVybj0iY2hhcltdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2FsdCIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0ic2VyaWFsVmVyc2lvblVJRCIKKyB0eXBlPSJsb25nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMTQzMDAxNTk5MzMwNDMzMzkyMUwiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImphdmF4LmNyeXB0by5zcGVjIgorPgorPGNsYXNzIG5hbWU9IkRFU0tleVNwZWMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5zcGVjLktleVNwZWMiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRFU0tleVNwZWMiCisgdHlwZT0iamF2YXguY3J5cHRvLnNwZWMuREVTS2V5U3BlYyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkS2V5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRLZXlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRFU0tleVNwZWMiCisgdHlwZT0iamF2YXguY3J5cHRvLnNwZWMuREVTS2V5U3BlYyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0S2V5IgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUGFyaXR5QWRqdXN0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzV2VhayIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkS2V5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRLZXlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJERVNfS0VZX0xFTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRFU2VkZUtleVNwZWMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5zcGVjLktleVNwZWMiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRFU2VkZUtleVNwZWMiCisgdHlwZT0iamF2YXguY3J5cHRvLnNwZWMuREVTZWRlS2V5U3BlYyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkS2V5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRLZXlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRFU2VkZUtleVNwZWMiCisgdHlwZT0iamF2YXguY3J5cHRvLnNwZWMuREVTZWRlS2V5U3BlYyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0S2V5IgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUGFyaXR5QWRqdXN0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iREVTX0VERV9LRVlfTEVOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRIR2VuUGFyYW1ldGVyU3BlYyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnNlY3VyaXR5LnNwZWMuQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iREhHZW5QYXJhbWV0ZXJTcGVjIgorIHR5cGU9ImphdmF4LmNyeXB0by5zcGVjLkRIR2VuUGFyYW1ldGVyU3BlYyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByaW1lU2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHBvbmVudFNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEV4cG9uZW50U2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcmltZVNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iREhQYXJhbWV0ZXJTcGVjIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuc3BlYy5BbGdvcml0aG1QYXJhbWV0ZXJTcGVjIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJESFBhcmFtZXRlclNwZWMiCisgdHlwZT0iamF2YXguY3J5cHRvLnNwZWMuREhQYXJhbWV0ZXJTcGVjIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icCIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImciIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJESFBhcmFtZXRlclNwZWMiCisgdHlwZT0iamF2YXguY3J5cHRvLnNwZWMuREhQYXJhbWV0ZXJTcGVjIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icCIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImciIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRHIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iREhQcml2YXRlS2V5U3BlYyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnNlY3VyaXR5LnNwZWMuS2V5U3BlYyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iREhQcml2YXRlS2V5U3BlYyIKKyB0eXBlPSJqYXZheC5jcnlwdG8uc3BlYy5ESFByaXZhdGVLZXlTcGVjIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InAiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJnIiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEciCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0WCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRIUHVibGljS2V5U3BlYyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnNlY3VyaXR5LnNwZWMuS2V5U3BlYyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iREhQdWJsaWNLZXlTcGVjIgorIHR5cGU9ImphdmF4LmNyeXB0by5zcGVjLkRIUHVibGljS2V5U3BlYyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwIiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZyIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRHIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UCIKKyByZXR1cm49ImphdmEubWF0aC5CaWdJbnRlZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFkiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJdlBhcmFtZXRlclNwZWMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5zcGVjLkFsZ29yaXRobVBhcmFtZXRlclNwZWMiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikl2UGFyYW1ldGVyU3BlYyIKKyB0eXBlPSJqYXZheC5jcnlwdG8uc3BlYy5JdlBhcmFtZXRlclNwZWMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpdiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJdlBhcmFtZXRlclNwZWMiCisgdHlwZT0iamF2YXguY3J5cHRvLnNwZWMuSXZQYXJhbWV0ZXJTcGVjIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXYiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0SVYiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iT0FFUFBhcmFtZXRlclNwZWMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5zcGVjLkFsZ29yaXRobVBhcmFtZXRlclNwZWMiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik9BRVBQYXJhbWV0ZXJTcGVjIgorIHR5cGU9ImphdmF4LmNyeXB0by5zcGVjLk9BRVBQYXJhbWV0ZXJTcGVjIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZ2ZOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZ2ZTcGVjIiB0eXBlPSJqYXZhLnNlY3VyaXR5LnNwZWMuQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icFNyYyIgdHlwZT0iamF2YXguY3J5cHRvLnNwZWMuUFNvdXJjZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldERpZ2VzdEFsZ29yaXRobSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TUdGQWxnb3JpdGhtIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNR0ZQYXJhbWV0ZXJzIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5zcGVjLkFsZ29yaXRobVBhcmFtZXRlclNwZWMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UFNvdXJjZSIKKyByZXR1cm49ImphdmF4LmNyeXB0by5zcGVjLlBTb3VyY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUIgorIHR5cGU9ImphdmF4LmNyeXB0by5zcGVjLk9BRVBQYXJhbWV0ZXJTcGVjIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQQkVLZXlTcGVjIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuc3BlYy5LZXlTcGVjIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQQkVLZXlTcGVjIgorIHR5cGU9ImphdmF4LmNyeXB0by5zcGVjLlBCRUtleVNwZWMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXNzd29yZCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQQkVLZXlTcGVjIgorIHR5cGU9ImphdmF4LmNyeXB0by5zcGVjLlBCRUtleVNwZWMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXNzd29yZCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzYWx0IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Iml0ZXJhdGlvbkNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtleUxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQQkVLZXlTcGVjIgorIHR5cGU9ImphdmF4LmNyeXB0by5zcGVjLlBCRUtleVNwZWMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXNzd29yZCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzYWx0IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Iml0ZXJhdGlvbkNvdW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbGVhclBhc3N3b3JkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEl0ZXJhdGlvbkNvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0S2V5TGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFzc3dvcmQiCisgcmV0dXJuPSJjaGFyW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTYWx0IgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUEJFUGFyYW1ldGVyU3BlYyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnNlY3VyaXR5LnNwZWMuQWxnb3JpdGhtUGFyYW1ldGVyU3BlYyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUEJFUGFyYW1ldGVyU3BlYyIKKyB0eXBlPSJqYXZheC5jcnlwdG8uc3BlYy5QQkVQYXJhbWV0ZXJTcGVjIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2FsdCIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpdGVyYXRpb25Db3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0SXRlcmF0aW9uQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2FsdCIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQU291cmNlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQU291cmNlIgorIHR5cGU9ImphdmF4LmNyeXB0by5zcGVjLlBTb3VyY2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwU3JjTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEFsZ29yaXRobSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUFNvdXJjZS5QU3BlY2lmaWVkIgorIGV4dGVuZHM9ImphdmF4LmNyeXB0by5zcGVjLlBTb3VyY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUFNvdXJjZS5QU3BlY2lmaWVkIgorIHR5cGU9ImphdmF4LmNyeXB0by5zcGVjLlBTb3VyY2UuUFNwZWNpZmllZCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InAiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldFZhbHVlIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iREVGQVVMVCIKKyB0eXBlPSJqYXZheC5jcnlwdG8uc3BlYy5QU291cmNlLlBTcGVjaWZpZWQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJDMlBhcmFtZXRlclNwZWMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5zcGVjLkFsZ29yaXRobVBhcmFtZXRlclNwZWMiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJDMlBhcmFtZXRlclNwZWMiCisgdHlwZT0iamF2YXguY3J5cHRvLnNwZWMuUkMyUGFyYW1ldGVyU3BlYyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVmZmVjdGl2ZUtleUJpdHMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUkMyUGFyYW1ldGVyU3BlYyIKKyB0eXBlPSJqYXZheC5jcnlwdG8uc3BlYy5SQzJQYXJhbWV0ZXJTcGVjIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZWZmZWN0aXZlS2V5Qml0cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpdiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSQzJQYXJhbWV0ZXJTcGVjIgorIHR5cGU9ImphdmF4LmNyeXB0by5zcGVjLlJDMlBhcmFtZXRlclNwZWMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlZmZlY3RpdmVLZXlCaXRzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Iml2IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0RWZmZWN0aXZlS2V5Qml0cyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJViIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSQzVQYXJhbWV0ZXJTcGVjIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuc3BlYy5BbGdvcml0aG1QYXJhbWV0ZXJTcGVjIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSQzVQYXJhbWV0ZXJTcGVjIgorIHR5cGU9ImphdmF4LmNyeXB0by5zcGVjLlJDNVBhcmFtZXRlclNwZWMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2ZXJzaW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJvdW5kcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3b3JkU2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSQzVQYXJhbWV0ZXJTcGVjIgorIHR5cGU9ImphdmF4LmNyeXB0by5zcGVjLlJDNVBhcmFtZXRlclNwZWMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2ZXJzaW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJvdW5kcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3b3JkU2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpdiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSQzVQYXJhbWV0ZXJTcGVjIgorIHR5cGU9ImphdmF4LmNyeXB0by5zcGVjLlJDNVBhcmFtZXRlclNwZWMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2ZXJzaW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJvdW5kcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3b3JkU2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpdiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldElWIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJvdW5kcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWZXJzaW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdvcmRTaXplIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNlY3JldEtleVNwZWMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5zcGVjLktleVNwZWMiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YXguY3J5cHRvLlNlY3JldEtleSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2VjcmV0S2V5U3BlYyIKKyB0eXBlPSJqYXZheC5jcnlwdG8uc3BlYy5TZWNyZXRLZXlTcGVjIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFsZ29yaXRobSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2VjcmV0S2V5U3BlYyIKKyB0eXBlPSJqYXZheC5jcnlwdG8uc3BlYy5TZWNyZXRLZXlTcGVjIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0QWxnb3JpdGhtIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbmNvZGVkIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZvcm1hdCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wiCis+Cis8aW50ZXJmYWNlIG5hbWU9IkVHTCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iRUdMMTAiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTCI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImVnbENob29zZUNvbmZpZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlzcGxheSIgdHlwZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTERpc3BsYXkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJpYl9saXN0IiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29uZmlncyIgdHlwZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTENvbmZpZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb25maWdfc2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJudW1fY29uZmlnIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlZ2xDb3B5QnVmZmVycyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlzcGxheSIgdHlwZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTERpc3BsYXkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN1cmZhY2UiIHR5cGU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0xTdXJmYWNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYXRpdmVfcGl4bWFwIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVnbENyZWF0ZUNvbnRleHQiCisgcmV0dXJuPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMQ29udGV4dCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXNwbGF5IiB0eXBlPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMRGlzcGxheSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29uZmlnIiB0eXBlPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMQ29uZmlnIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzaGFyZV9jb250ZXh0IiB0eXBlPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cmliX2xpc3QiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVnbENyZWF0ZVBidWZmZXJTdXJmYWNlIgorIHJldHVybj0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTFN1cmZhY2UiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlzcGxheSIgdHlwZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTERpc3BsYXkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbmZpZyIgdHlwZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTENvbmZpZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cmliX2xpc3QiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVnbENyZWF0ZVBpeG1hcFN1cmZhY2UiCisgcmV0dXJuPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMU3VyZmFjZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXNwbGF5IiB0eXBlPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMRGlzcGxheSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29uZmlnIiB0eXBlPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMQ29uZmlnIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYXRpdmVfcGl4bWFwIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRyaWJfbGlzdCIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZWdsQ3JlYXRlV2luZG93U3VyZmFjZSIKKyByZXR1cm49ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0xTdXJmYWNlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpc3BsYXkiIHR5cGU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0xEaXNwbGF5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb25maWciIHR5cGU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0xDb25maWciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hdGl2ZV93aW5kb3ciIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHJpYl9saXN0IiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlZ2xEZXN0cm95Q29udGV4dCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlzcGxheSIgdHlwZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTERpc3BsYXkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0xDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVnbERlc3Ryb3lTdXJmYWNlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXNwbGF5IiB0eXBlPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMRGlzcGxheSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3VyZmFjZSIgdHlwZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTFN1cmZhY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZWdsR2V0Q29uZmlnQXR0cmliIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXNwbGF5IiB0eXBlPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMRGlzcGxheSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29uZmlnIiB0eXBlPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMQ29uZmlnIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRyaWJ1dGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVnbEdldENvbmZpZ3MiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpc3BsYXkiIHR5cGU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0xEaXNwbGF5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb25maWdzIiB0eXBlPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMQ29uZmlnW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbmZpZ19zaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im51bV9jb25maWciIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVnbEdldEN1cnJlbnRDb250ZXh0IgorIHJldHVybj0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTENvbnRleHQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlZ2xHZXRDdXJyZW50RGlzcGxheSIKKyByZXR1cm49ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0xEaXNwbGF5IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZWdsR2V0Q3VycmVudFN1cmZhY2UiCisgcmV0dXJuPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMU3VyZmFjZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWFkZHJhdyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVnbEdldERpc3BsYXkiCisgcmV0dXJuPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMRGlzcGxheSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYXRpdmVfZGlzcGxheSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlZ2xHZXRFcnJvciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVnbEluaXRpYWxpemUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpc3BsYXkiIHR5cGU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0xEaXNwbGF5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYWpvcl9taW5vciIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZWdsTWFrZUN1cnJlbnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpc3BsYXkiIHR5cGU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0xEaXNwbGF5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkcmF3IiB0eXBlPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMU3VyZmFjZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVhZCIgdHlwZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTFN1cmZhY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0xDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVnbFF1ZXJ5Q29udGV4dCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlzcGxheSIgdHlwZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTERpc3BsYXkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0xDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRyaWJ1dGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVnbFF1ZXJ5U3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXNwbGF5IiB0eXBlPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMRGlzcGxheSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVnbFF1ZXJ5U3VyZmFjZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlzcGxheSIgdHlwZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTERpc3BsYXkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN1cmZhY2UiIHR5cGU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0xTdXJmYWNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRyaWJ1dGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVnbFN3YXBCdWZmZXJzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXNwbGF5IiB0eXBlPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMRGlzcGxheSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3VyZmFjZSIgdHlwZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTFN1cmZhY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZWdsVGVybWluYXRlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkaXNwbGF5IiB0eXBlPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMRGlzcGxheSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlZ2xXYWl0R0wiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZWdsV2FpdE5hdGl2ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5naW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJpbmRUYXJnZXQiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJFR0xfQUxQSEFfRk9STUFUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTI0MjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUdMX0FMUEhBX01BU0tfU0laRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMzUwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9BTFBIQV9TSVpFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIzMjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUdMX0JBRF9BQ0NFU1MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjI5MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFR0xfQkFEX0FMTE9DIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIyOTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUdMX0JBRF9BVFRSSUJVVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjI5MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFR0xfQkFEX0NPTkZJRyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMjkzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9CQURfQ09OVEVYVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMjk0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9CQURfQ1VSUkVOVF9TVVJGQUNFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIyOTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUdMX0JBRF9ESVNQTEFZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIyOTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUdMX0JBRF9NQVRDSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMjk3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9CQURfTkFUSVZFX1BJWE1BUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMjk4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9CQURfTkFUSVZFX1dJTkRPVyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMjk5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9CQURfUEFSQU1FVEVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIzMDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUdMX0JBRF9TVVJGQUNFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIzMDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUdMX0JMVUVfU0laRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMzIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9CVUZGRVJfU0laRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMzIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9DT0xPUlNQQUNFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTI0MjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUdMX0NPTE9SX0JVRkZFUl9UWVBFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIzNTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUdMX0NPTkZJR19DQVZFQVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjMyNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFR0xfQ09ORklHX0lEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIzMjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUdMX0NPUkVfTkFUSVZFX0VOR0lORSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMzc5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9ERUZBVUxUX0RJU1BMQVkiCisgdHlwZT0iamF2YS5sYW5nLk9iamVjdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0ibnVsbCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFR0xfREVQVEhfU0laRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMzI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9ET05UX0NBUkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFR0xfRFJBVyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMzc3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9FWFRFTlNJT05TIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIzNzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUdMX0dSRUVOX1NJWkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjMyMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFR0xfSEVJR0hUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIzNzQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUdMX0hPUklaT05UQUxfUkVTT0xVVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyNDMyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9MQVJHRVNUX1BCVUZGRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjM3NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFR0xfTEVWRUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjMyOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFR0xfTFVNSU5BTkNFX0JVRkZFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyNDMxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9MVU1JTkFOQ0VfU0laRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMzQ5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9NQVhfUEJVRkZFUl9IRUlHSFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjMzMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFR0xfTUFYX1BCVUZGRVJfUElYRUxTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIzMzEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUdMX01BWF9QQlVGRkVSX1dJRFRIIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIzMzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUdMX05BVElWRV9SRU5ERVJBQkxFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIzMzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUdMX05BVElWRV9WSVNVQUxfSUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjMzNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFR0xfTkFUSVZFX1ZJU1VBTF9UWVBFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIzMzUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUdMX05PTkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjM0NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFR0xfTk9OX0NPTkZPUk1BTlRfQ09ORklHIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIzNjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUdMX05PVF9JTklUSUFMSVpFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMjg5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9OT19DT05URVhUIgorIHR5cGU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0xDb250ZXh0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9OT19ESVNQTEFZIgorIHR5cGU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0xEaXNwbGF5IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9OT19TVVJGQUNFIgorIHR5cGU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0xTdXJmYWNlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9QQlVGRkVSX0JJVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUdMX1BJWEVMX0FTUEVDVF9SQVRJTyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyNDM0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9QSVhNQVBfQklUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFR0xfUkVBRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMzc4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9SRURfU0laRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMzI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9SRU5ERVJBQkxFX1RZUEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjM1MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFR0xfUkVOREVSX0JVRkZFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyNDIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9SR0JfQlVGRkVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTI0MzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUdMX1NBTVBMRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjMzNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFR0xfU0FNUExFX0JVRkZFUlMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjMzOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFR0xfU0lOR0xFX0JVRkZFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyNDIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9TTE9XX0NPTkZJRyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMzY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9TVEVOQ0lMX1NJWkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjMyNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFR0xfU1VDQ0VTUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMjg4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9TVVJGQUNFX1RZUEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjMzOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFR0xfVFJBTlNQQVJFTlRfQkxVRV9WQUxVRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMzQxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9UUkFOU1BBUkVOVF9HUkVFTl9WQUxVRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMzQyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9UUkFOU1BBUkVOVF9SRURfVkFMVUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjM0MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFR0xfVFJBTlNQQVJFTlRfUkdCIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIzNzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUdMX1RSQU5TUEFSRU5UX1RZUEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjM0MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFR0xfVkVORE9SIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIzNzEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUdMX1ZFUlNJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjM3MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFR0xfVkVSVElDQUxfUkVTT0xVVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyNDMzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9XSURUSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMzc1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVHTF9XSU5ET1dfQklUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJFR0wxMSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5lZ2wuRUdMMTAiPgorPC9pbXBsZW1lbnRzPgorPGZpZWxkIG5hbWU9IkVHTF9DT05URVhUX0xPU1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjMwMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkVHTENvbmZpZyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFR0xDb25maWciCisgdHlwZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTENvbmZpZyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJFR0xDb250ZXh0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkVHTENvbnRleHQiCisgdHlwZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTENvbnRleHQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0RUdMIgorIHJldHVybj0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEdMIgorIHJldHVybj0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3Mub3BlbmdsZXMuR0wiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJFR0xEaXNwbGF5IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkVHTERpc3BsYXkiCisgdHlwZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3MuZWdsLkVHTERpc3BsYXkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRUdMU3VyZmFjZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJFR0xTdXJmYWNlIgorIHR5cGU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLmVnbC5FR0xTdXJmYWNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3Mub3BlbmdsZXMiCis+Cis8aW50ZXJmYWNlIG5hbWU9IkdMIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJHTDEwIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLm9wZW5nbGVzLkdMIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2xBY3RpdmVUZXh0dXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0dXJlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xBbHBoYUZ1bmMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZ1bmMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVmIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEFscGhhRnVuY3giCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZ1bmMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xCaW5kVGV4dHVyZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHR1cmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEJsZW5kRnVuYyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2ZhY3RvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZmFjdG9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xDbGVhciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFzayIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ2xlYXJDb2xvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVkIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JlZW4iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJibHVlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxwaGEiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ2xlYXJDb2xvcngiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJncmVlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJibHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFscGhhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xDbGVhckRlcHRoZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVwdGgiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ2xlYXJEZXB0aHgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlcHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xDbGVhclN0ZW5jaWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbENsaWVudEFjdGl2ZVRleHR1cmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHR1cmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbENvbG9yNGYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlZCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImdyZWVuIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmx1ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFscGhhIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbENvbG9yNHgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJncmVlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJibHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFscGhhIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xDb2xvck1hc2siCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JlZW4iIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFscGhhIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ29sb3JQb2ludGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaWRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvaW50ZXIiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbENvbXByZXNzZWRUZXhJbWFnZTJEIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGV2ZWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZXJuYWxmb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvcmRlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbWFnZVNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iamF2YS5uaW8uQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ29tcHJlc3NlZFRleFN1YkltYWdlMkQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZXZlbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4b2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InlvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcm1hdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbWFnZVNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iamF2YS5uaW8uQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ29weVRleEltYWdlMkQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZXZlbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlcm5hbGZvcm1hdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvcmRlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ29weVRleFN1YkltYWdlMkQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZXZlbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4b2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InlvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ3VsbEZhY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbERlbGV0ZVRleHR1cmVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRleHR1cmVzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEZWxldGVUZXh0dXJlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0dXJlcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRGVwdGhGdW5jIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmdW5jIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEZXB0aE1hc2siCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWciIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEZXB0aFJhbmdlZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iek5lYXIiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6RmFyIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbERlcHRoUmFuZ2V4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ6TmVhciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6RmFyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEaXNhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXAiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbERpc2FibGVDbGllbnRTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbERyYXdBcnJheXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlyc3QiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbERyYXdFbGVtZW50cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGljZXMiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEVuYWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FwIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xFbmFibGVDbGllbnRTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEZpbmlzaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEZsdXNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRm9nZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRm9nZnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xGb2dmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5GbG9hdEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEZvZ3giCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xGb2d4diIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xGb2d4diIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xGcm9udEZhY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEZydXN0dW1mIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZWZ0IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmlnaHQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3R0b20iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0b3AiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6TmVhciIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InpGYXIiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRnJ1c3R1bXgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYm90dG9tIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvcCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6TmVhciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6RmFyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZW5UZXh0dXJlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0dXJlcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2VuVGV4dHVyZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dHVyZXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldEVycm9yIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRJbnRlZ2VydiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRJbnRlZ2VydiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEhpbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xMaWdodE1vZGVsZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTGlnaHRNb2RlbGZ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTGlnaHRNb2RlbGZ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkZsb2F0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTGlnaHRNb2RlbHgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xMaWdodE1vZGVseHYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTGlnaHRNb2RlbHh2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbExpZ2h0ZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTGlnaHRmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbExpZ2h0ZnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uRmxvYXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xMaWdodHgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xMaWdodHh2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbExpZ2h0eHYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTGluZVdpZHRoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xMaW5lV2lkdGh4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTG9hZElkZW50aXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTG9hZE1hdHJpeGYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im0iIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTG9hZE1hdHJpeGYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im0iIHR5cGU9ImphdmEubmlvLkZsb2F0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTG9hZE1hdHJpeHgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im0iIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbExvYWRNYXRyaXh4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xMb2dpY09wIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcGNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbE1hdGVyaWFsZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFjZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xNYXRlcmlhbGZ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWNlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xNYXRlcmlhbGZ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWNlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uRmxvYXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xNYXRlcmlhbHgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbE1hdGVyaWFseHYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xNYXRlcmlhbHh2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWNlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTWF0cml4TW9kZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTXVsdE1hdHJpeGYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im0iIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTXVsdE1hdHJpeGYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im0iIHR5cGU9ImphdmEubmlvLkZsb2F0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTXVsdE1hdHJpeHgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im0iIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbE11bHRNYXRyaXh4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xNdWx0aVRleENvb3JkNGYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InIiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbE11bHRpVGV4Q29vcmQ0eCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InEiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbE5vcm1hbDNmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJueCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im55IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibnoiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTm9ybWFsM3giCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im54IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im55IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im56IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xOb3JtYWxQb2ludGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmlkZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb2ludGVyIiB0eXBlPSJqYXZhLm5pby5CdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xPcnRob2YiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyaWdodCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvdHRvbSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvcCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InpOZWFyIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iekZhciIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xPcnRob3giCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlZnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYm90dG9tIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRvcCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6TmVhciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6RmFyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xQaXhlbFN0b3JlaSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFBvaW50U2l6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xQb2ludFNpemV4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xQb2x5Z29uT2Zmc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWN0b3IiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0cyIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xQb2x5Z29uT2Zmc2V0eCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFjdG9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVuaXRzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xQb3BNYXRyaXgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xQdXNoTWF0cml4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsUmVhZFBpeGVscyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwaXhlbHMiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFJvdGF0ZWYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFuZ2xlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFJvdGF0ZXgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFuZ2xlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xTYW1wbGVDb3ZlcmFnZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnZlcnQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xTYW1wbGVDb3ZlcmFnZXgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImludmVydCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFNjYWxlZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFNjYWxleCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InoiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFNjaXNzb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFNoYWRlTW9kZWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFN0ZW5jaWxGdW5jIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmdW5jIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlZiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYXNrIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xTdGVuY2lsTWFzayIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFzayIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsU3RlbmNpbE9wIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWlsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InpmYWlsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InpwYXNzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhDb29yZFBvaW50ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9pbnRlciIgdHlwZT0iamF2YS5uaW8uQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4RW52ZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleEVudmZ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleEVudmZ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5GbG9hdEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleEVudngiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4RW52eHYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleEVudnh2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhJbWFnZTJEIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGV2ZWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZXJuYWxmb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJvcmRlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwaXhlbHMiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleFBhcmFtZXRlcmYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhQYXJhbWV0ZXJ4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleFN1YkltYWdlMkQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZXZlbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ4b2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InlvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcm1hdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBpeGVscyIgdHlwZT0iamF2YS5uaW8uQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVHJhbnNsYXRlZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRyYW5zbGF0ZXgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IngiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ6IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xWZXJ0ZXhQb2ludGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaWRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvaW50ZXIiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFZpZXdwb3J0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJHTF9BREQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyNjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQUxJQVNFRF9MSU5FX1dJRFRIX1JBTkdFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzM5MDIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQUxJQVNFRF9QT0lOVF9TSVpFX1JBTkdFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzM5MDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQUxQSEEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NDA2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0FMUEhBX0JJVFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDEzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0FMUEhBX1RFU1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMDA4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0FMV0FZUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9BTUJJRU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDYwOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9BTUJJRU5UX0FORF9ESUZGVVNFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTYzNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9BTkQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1Mzc3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0FORF9JTlZFUlRFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUzODAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQU5EX1JFVkVSU0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1Mzc4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0JBQ0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDI5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0JMRU5EIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzA0MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9CTFVFX0JJVFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0JZVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MTIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NDVyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIzMDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ0xBTVBfVE9fRURHRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzMDcxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NMRUFSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTM3NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DT0xPUl9BUlJBWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyODg2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTE9SX0JVRkZFUl9CSVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjM4NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DT0xPUl9MT0dJQ19PUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMwNTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ09MT1JfTUFURVJJQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTAzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ0NjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ09OU1RBTlRfQVRURU5VQVRJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0NjE1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPUFkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1Mzc5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPUFlfSU5WRVJURUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1Mzg4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NVTExfRkFDRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI4ODQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ1ciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMzA0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0RFQ0FMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODQ0OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ERUNSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzY4MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ERVBUSF9CSVRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQxNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ERVBUSF9CVUZGRVJfQklUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0RFUFRIX1RFU1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTI5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0RJRkZVU0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0NjA5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0RJVEhFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMwMjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRE9OVF9DQVJFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDM1MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9EU1RfQUxQSEEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3NzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRFNUX0NPTE9SIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzc0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0VNSVNTSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTYzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9FUVVBTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9FUVVJViIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUzODUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRVhQIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjA0OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9FWFAyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjA0OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9FWFRFTlNJT05TIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzkzOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9GQUxTRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRkFTVEVTVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQzNTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRklYRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MTMyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZMQVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3NDI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZMT0FUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTEyNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9GT0ciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZPR19DT0xPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5MTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRk9HX0RFTlNJVFkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTE0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZPR19FTkQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZPR19ISU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzE1NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9GT0dfTU9ERSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5MTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRk9HX1NUQVJUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjkxNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9GUk9OVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlJPTlRfQU5EX0JBQ0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDMyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0dFUVVBTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9HUkVBVEVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0dSRUVOX0JJVFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDExIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfRk9STUFUX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NzM5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0lNUExFTUVOVEFUSU9OX0NPTE9SX1JFQURfVFlQRV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTczOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9JTkNSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzY4MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9JTlZBTElEX0VOVU0iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjgwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0lOVkFMSURfT1BFUkFUSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTI4MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9JTlZBTElEX1ZBTFVFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTI4MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9JTlZFUlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1Mzg2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0tFRVAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3NjgwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0xFUVVBTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MRVNTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTEzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0xJR0hUMCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2Mzg0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0xJR0hUMSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2Mzg1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0xJR0hUMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2Mzg2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0xJR0hUMyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2Mzg3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0xJR0hUNCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2Mzg4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0xJR0hUNSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2Mzg5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0xJR0hUNiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2MzkwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0xJR0hUNyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2MzkxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0xJR0hUSU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjg5NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSUdIVF9NT0RFTF9BTUJJRU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjg5OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSUdIVF9NT0RFTF9UV09fU0lERSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI4OTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTElORUFSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOTcyOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSU5FQVJfQVRURU5VQVRJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0NjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0xJTkVBUl9NSVBNQVBfTElORUFSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOTk4NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSU5FQVJfTUlQTUFQX05FQVJFU1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI5OTg1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0xJTkVTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSU5FX0xPT1AiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0xJTkVfU01PT1RIIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjg0OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSU5FX1NNT09USF9ISU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzE1NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSU5FX1NUUklQIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MVU1JTkFOQ0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NDA5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0xVTUlOQU5DRV9BTFBIQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjY0MTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUFYX0VMRU1FTlRTX0lORElDRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzAwMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NQVhfRUxFTUVOVFNfVkVSVElDRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzAwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NQVhfTElHSFRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzM3NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NQVhfTU9ERUxWSUVXX1NUQUNLX0RFUFRIIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzM4MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NQVhfUFJPSkVDVElPTl9TVEFDS19ERVBUSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzODQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUFYX1RFWFRVUkVfU0laRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzNzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUFYX1RFWFRVUkVfU1RBQ0tfREVQVEgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzg1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01BWF9URVhUVVJFX1VOSVRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwMTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUFYX1ZJRVdQT1JUX0RJTVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzg2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01PREVMVklFVyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjU4ODgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTU9EVUxBVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4NDQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01VTFRJU0FNUExFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI5MjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTkFORCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUzOTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTkVBUkVTVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijk3MjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTkVBUkVTVF9NSVBNQVBfTElORUFSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOTk4NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ORUFSRVNUX01JUE1BUF9ORUFSRVNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOTk4NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ORVZFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9OSUNFU1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MzU0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX05PT1AiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MzgxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX05PUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUzODQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTk9STUFMSVpFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjk3NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9OT1JNQUxfQVJSQVkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjg4NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9OT1RFUVVBTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9OT19FUlJPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTlVNX0NPTVBSRVNTRURfVEVYVFVSRV9GT1JNQVRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ0NjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfT05FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9PTkVfTUlOVVNfRFNUX0FMUEhBIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzczIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX09ORV9NSU5VU19EU1RfQ09MT1IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3NzUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfT05FX01JTlVTX1NSQ19BTFBIQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc3MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9PTkVfTUlOVVNfU1JDX0NPTE9SIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzY5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX09SIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTM4MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9PUl9JTlZFUlRFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUzODkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfT1JfUkVWRVJTRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUzODciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfT1VUX09GX01FTU9SWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyODUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUEFDS19BTElHTk1FTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzMzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BBTEVUVEU0X1I1X0c2X0I1X09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NzMwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BBTEVUVEU0X1JHQjVfQTFfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzU3MzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUEFMRVRURTRfUkdCOF9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTcyOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QQUxFVFRFNF9SR0JBNF9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTczMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QQUxFVFRFNF9SR0JBOF9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTcyOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QQUxFVFRFOF9SNV9HNl9CNV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTczNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QQUxFVFRFOF9SR0I1X0ExX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NzM3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BBTEVUVEU4X1JHQjhfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzU3MzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUEFMRVRURThfUkdCQTRfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzU3MzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUEFMRVRURThfUkdCQThfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzU3MzQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUEVSU1BFQ1RJVkVfQ09SUkVDVElPTl9ISU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzE1MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QT0lOVFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BPSU5UX0ZBREVfVEhSRVNIT0xEX1NJWkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzA2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QT0lOVF9TSVpFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjgzMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QT0lOVF9TTU9PVEgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyODMyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BPSU5UX1NNT09USF9ISU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzE1MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QT0xZR09OX09GRlNFVF9GSUxMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI4MjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUE9MWUdPTl9TTU9PVEhfSElOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMxNTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUE9TSVRJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0NjExIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BST0pFQ1RJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1ODg5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1FVQURSQVRJQ19BVFRFTlVBVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQ2MTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUkVEX0JJVFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDEwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JFTkRFUkVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzkzNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SRVBFQVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDQ5NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SRVBMQUNFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzY4MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SRVNDQUxFX05PUk1BTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyODI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JHQiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjY0MDciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUkdCQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjY0MDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU0FNUExFX0FMUEhBX1RPX0NPVkVSQUdFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI5MjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU0FNUExFX0FMUEhBX1RPX09ORSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyOTI3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NBTVBMRV9DT1ZFUkFHRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyOTI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NDSVNTT1JfVEVTVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMwODkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU0VUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTM5MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TSElOSU5FU1MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1NjMzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NIT1JUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTEyMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TTU9PVEgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3NDI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NNT09USF9MSU5FX1dJRFRIX1JBTkdFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjg1MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TTU9PVEhfUE9JTlRfU0laRV9SQU5HRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI4MzQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1BFQ1VMQVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0NjEwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NQT1RfQ1VUT0ZGIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDYxNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TUE9UX0RJUkVDVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQ2MTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1BPVF9FWFBPTkVOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQ2MTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1JDX0FMUEhBIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNzcwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NSQ19BTFBIQV9TQVRVUkFURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc3NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TUkNfQ09MT1IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI3NjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1RBQ0tfT1ZFUkZMT1ciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjgzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NUQUNLX1VOREVSRkxPVyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyODQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1RFTkNJTF9CSVRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQxNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TVEVOQ0lMX0JVRkZFUl9CSVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NURU5DSUxfVEVTVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5NjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1VCUElYRUxfQklUUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjU4OTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzk4NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzOTg1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUxMCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzOTk0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUxMSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzOTk1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUxMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzOTk2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUxMyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzOTk3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUxNCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzOTk4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUxNSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzOTk5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUxNiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUxNyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDAxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUxOCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDAyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUxOSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDAzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkUyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzM5ODYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTIwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwMDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTIxIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwMDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTIyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwMDYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTIzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwMDciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTI0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwMDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTI1IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwMDkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTI2IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwMTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTI3IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwMTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTI4IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwMTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTI5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwMTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzk4NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMzAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDAxNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFMzEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDAxNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFNCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzOTg4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkU1IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzM5ODkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzk5MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFNyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzOTkxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkU4IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzM5OTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRTkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzk5MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFXzJEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzU1MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFX0NPT1JEX0FSUkFZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI4ODgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV9FTlYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4OTYwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfRU5WX0NPTE9SIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODcwNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFX0VOVl9NT0RFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODcwNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFX01BR19GSUxURVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDI0MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFX01JTl9GSUxURVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDI0MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFX1dSQVBfUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMjQyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfV1JBUF9UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAyNDMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVFJJQU5HTEVTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9UUklBTkdMRV9GQU4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RSSUFOR0xFX1NUUklQIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9UUlVFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9VTlBBQ0tfQUxJR05NRU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzMxNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9VTlNJR05FRF9CWVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTEyMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9VTlNJR05FRF9TSE9SVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxMjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyODE5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1VOU0lHTkVEX1NIT1JUXzVfNV81XzEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjgyMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9VTlNJR05FRF9TSE9SVF81XzZfNSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzNjM1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1ZFTkRPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc5MzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVkVSU0lPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijc5MzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVkVSVEVYX0FSUkFZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI4ODQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfWE9SIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTM4MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9aRVJPIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJHTDEwRXh0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmF4Lm1pY3JvZWRpdGlvbi5raHJvbm9zLm9wZW5nbGVzLkdMIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2xRdWVyeU1hdHJpeHhPRVMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFudGlzc2EiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYW50aXNzYU9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHBvbmVudCIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cG9uZW50T2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xRdWVyeU1hdHJpeHhPRVMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFudGlzc2EiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwb25lbnQiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkdMMTEiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3Mub3BlbmdsZXMuR0wxMCI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImdsQmluZEJ1ZmZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQnVmZmVyRGF0YSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iamF2YS5uaW8uQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1c2FnZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQnVmZmVyU3ViRGF0YSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbENsaXBQbGFuZWYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBsYW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVxdWF0aW9uIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbENsaXBQbGFuZWYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBsYW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVxdWF0aW9uIiB0eXBlPSJqYXZhLm5pby5GbG9hdEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbENsaXBQbGFuZXgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBsYW5lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVxdWF0aW9uIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xDbGlwUGxhbmV4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbGFuZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlcXVhdGlvbiIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ29sb3I0dWIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlZCIgdHlwZT0iYnl0ZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZ3JlZW4iIHR5cGU9ImJ5dGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJsdWUiIHR5cGU9ImJ5dGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFscGhhIiB0eXBlPSJieXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQ29sb3JQb2ludGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaWRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRGVsZXRlQnVmZmVycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXJzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEZWxldGVCdWZmZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlcnMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbERyYXdFbGVtZW50cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2VuQnVmZmVycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXJzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZW5CdWZmZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlcnMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldEJvb2xlYW52IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImJvb2xlYW5bXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRCb29sZWFudiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0QnVmZmVyUGFyYW1ldGVyaXYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldENsaXBQbGFuZWYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVxbiIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRDbGlwUGxhbmVmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlcW4iIHR5cGU9ImphdmEubmlvLkZsb2F0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0Q2xpcFBsYW5leCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXFuIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRDbGlwUGxhbmV4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlcW4iIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldEZpeGVkdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRGaXhlZHYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0RmxvYXR2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0RmxvYXR2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkZsb2F0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0TGlnaHRmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlnaHQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldExpZ2h0ZnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uRmxvYXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRMaWdodHh2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldExpZ2h0eHYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0TWF0ZXJpYWxmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFjZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0TWF0ZXJpYWxmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFjZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkZsb2F0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0TWF0ZXJpYWx4diIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFjZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldE1hdGVyaWFseHYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY2UiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRQb2ludGVydiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5CdWZmZXJbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFRleEVudml2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbnYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRUZXhFbnZpdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW52IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0VGV4RW52eHYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVudiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFRleEVudnh2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbnYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRUZXhQYXJhbWV0ZXJmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRUZXhQYXJhbWV0ZXJmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uRmxvYXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRUZXhQYXJhbWV0ZXJpdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0VGV4UGFyYW1ldGVyaXYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFRleFBhcmFtZXRlcnh2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRUZXhQYXJhbWV0ZXJ4diIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsSXNCdWZmZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsSXNFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXAiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbElzVGV4dHVyZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dHVyZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsTm9ybWFsUG9pbnRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xQb2ludFBhcmFtZXRlcmYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFBvaW50UGFyYW1ldGVyZnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xQb2ludFBhcmFtZXRlcmZ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkZsb2F0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsUG9pbnRQYXJhbWV0ZXJ4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsUG9pbnRQYXJhbWV0ZXJ4diIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xQb2ludFBhcmFtZXRlcnh2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFBvaW50U2l6ZVBvaW50ZXJPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaWRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvaW50ZXIiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleENvb3JkUG9pbnRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmlkZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleEVudmkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4RW52aXYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleEVudml2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhQYXJhbWV0ZXJmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhQYXJhbWV0ZXJmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uRmxvYXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhQYXJhbWV0ZXJpIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleFBhcmFtZXRlcml2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhQYXJhbWV0ZXJpdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4UGFyYW1ldGVyeHYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleFBhcmFtZXRlcnh2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xWZXJ0ZXhQb2ludGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaWRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iR0xfQUNUSVZFX1RFWFRVUkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDAxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9BRERfU0lHTkVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQxNjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQUxQSEFfU0NBTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0FMUEhBX1RFU1RfRlVOQyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMwMDkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQUxQSEFfVEVTVF9SRUYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMDEwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0FSUkFZX0JVRkZFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0OTYyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0FSUkFZX0JVRkZFUl9CSU5ESU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ5NjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQkxFTkRfRFNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzA0MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9CTEVORF9TUkMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMDQxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0JVRkZFUl9BQ0NFU1MiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTAwMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9CVUZGRVJfU0laRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0NjYwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0JVRkZFUl9VU0FHRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0NjYxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NMSUVOVF9BQ1RJVkVfVEVYVFVSRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDE3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NMSVBfUExBTkUwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIyODgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ0xJUF9QTEFORTEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjI4OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DTElQX1BMQU5FMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMjkwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NMSVBfUExBTkUzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIyOTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ0xJUF9QTEFORTQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjI5MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DTElQX1BMQU5FNSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyMjkzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTE9SX0FSUkFZX0JVRkZFUl9CSU5ESU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ5NjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ09MT1JfQVJSQVlfUE9JTlRFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyOTEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTE9SX0FSUkFZX1NJWkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjg5NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DT0xPUl9BUlJBWV9TVFJJREUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjg5OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DT0xPUl9BUlJBWV9UWVBFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI4OTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ09MT1JfQ0xFQVJfVkFMVUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMTA2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTE9SX1dSSVRFTUFTSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMxMDciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ09NQklORSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MTYwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTUJJTkVfQUxQSEEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDE2MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DT01CSU5FX1JHQiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MTYxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTlNUQU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQxNjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ09PUkRfUkVQTEFDRV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDkxNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DVUxMX0ZBQ0VfTU9ERSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI4ODUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ1VSUkVOVF9DT0xPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI4MTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ1VSUkVOVF9OT1JNQUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyODE4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NVUlJFTlRfVEVYVFVSRV9DT09SRFMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyODE5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0RFUFRIX0NMRUFSX1ZBTFVFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjkzMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ERVBUSF9GVU5DIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjkzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ERVBUSF9SQU5HRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5MjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfREVQVEhfV1JJVEVNQVNLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjkzMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ET1QzX1JHQiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0NDc4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0RPVDNfUkdCQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0NDc5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0RZTkFNSUNfRFJBVyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1MDQ4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0VMRU1FTlRfQVJSQVlfQlVGRkVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ5NjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVJfQklORElORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0OTY1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZST05UX0ZBQ0UiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyODg2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0dFTkVSQVRFX01JUE1BUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzMTY5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0dFTkVSQVRFX01JUE1BUF9ISU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzMxNzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfSU5URVJQT0xBVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDE2NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MSU5FX1dJRFRIIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjg0OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9MT0dJQ19PUF9NT0RFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzA1NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NQVRSSVhfTU9ERSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5NzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUFYX0NMSVBfUExBTkVTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzM3OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NT0RFTFZJRVdfTUFUUklYIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjk4MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NT0RFTFZJRVdfTUFUUklYX0ZMT0FUX0FTX0lOVF9CSVRTX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1MjEzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01PREVMVklFV19TVEFDS19ERVBUSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5NzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTk9STUFMX0FSUkFZX0JVRkZFUl9CSU5ESU5HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ5NjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTk9STUFMX0FSUkFZX1BPSU5URVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjkxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9OT1JNQUxfQVJSQVlfU1RSSURFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI4OTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTk9STUFMX0FSUkFZX1RZUEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjg5NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9PUEVSQU5EMF9BTFBIQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MjAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX09QRVJBTkQwX1JHQiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MTkyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX09QRVJBTkQxX0FMUEhBIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQyMDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfT1BFUkFORDFfUkdCIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQxOTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfT1BFUkFORDJfQUxQSEEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDIwMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9PUEVSQU5EMl9SR0IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDE5NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QT0lOVF9ESVNUQU5DRV9BVFRFTlVBVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzMDY1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BPSU5UX0ZBREVfVEhSRVNIT0xEX1NJWkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzA2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QT0lOVF9TSVpFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjgzMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QT0lOVF9TSVpFX0FSUkFZX0JVRkZFUl9CSU5ESU5HX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NzQzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BPSU5UX1NJWkVfQVJSQVlfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzU3NDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUE9JTlRfU0laRV9BUlJBWV9QT0lOVEVSX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1MjEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BPSU5UX1NJWkVfQVJSQVlfU1RSSURFX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1MjExIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BPSU5UX1NJWkVfQVJSQVlfVFlQRV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTIxMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QT0lOVF9TSVpFX01BWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzMDYzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BPSU5UX1NJWkVfTUlOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzMwNjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUE9JTlRfU1BSSVRFX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0OTEzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BPTFlHT05fT0ZGU0VUX0ZBQ1RPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyODI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BPTFlHT05fT0ZGU0VUX1VOSVRTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTA3NTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUFJFVklPVVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDE2OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9QUklNQVJZX0NPTE9SIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQxNjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUFJPSkVDVElPTl9NQVRSSVgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTgzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BST0pFQ1RJT05fTUFUUklYX0ZMT0FUX0FTX0lOVF9CSVRTX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1MjE0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1BST0pFQ1RJT05fU1RBQ0tfREVQVEgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTgwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JHQl9TQ0FMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MTYzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NBTVBMRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjkzNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TQU1QTEVfQlVGRkVSUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyOTM2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NBTVBMRV9DT1ZFUkFHRV9JTlZFUlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjkzOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TQU1QTEVfQ09WRVJBR0VfVkFMVUUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjkzOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TQ0lTU09SX0JPWCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMwODgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU0hBREVfTU9ERUwiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NSQzBfQUxQSEEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDE4NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TUkMwX1JHQiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MTc2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NSQzFfQUxQSEEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDE4NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TUkMxX1JHQiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MTc3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NSQzJfQUxQSEEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDE4NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TUkMyX1JHQiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MTc4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NUQVRJQ19EUkFXIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzUwNDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1RFTkNJTF9DTEVBUl9WQUxVRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5NjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1RFTkNJTF9GQUlMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjk2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TVEVOQ0lMX0ZVTkMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTYyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NURU5DSUxfUEFTU19ERVBUSF9GQUlMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjk2NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9TVEVOQ0lMX1BBU1NfREVQVEhfUEFTUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5NjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1RFTkNJTF9SRUYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTY3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NURU5DSUxfVkFMVUVfTUFTSyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5NjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1RFTkNJTF9XUklURU1BU0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NVQlRSQUNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwMjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV9CSU5ESU5HXzJEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI4NzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV9DT09SRF9BUlJBWV9CVUZGRVJfQklORElORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0OTcwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfQ09PUkRfQVJSQVlfUE9JTlRFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyOTE0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfQ09PUkRfQVJSQVlfU0laRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyOTA0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfQ09PUkRfQVJSQVlfU1RSSURFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI5MDYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV9DT09SRF9BUlJBWV9UWVBFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI5MDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVEVYVFVSRV9NQVRSSVgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTg0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfTUFUUklYX0ZMT0FUX0FTX0lOVF9CSVRTX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1MjE1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfU1RBQ0tfREVQVEgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyOTgxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1ZFUlRFWF9BUlJBWV9CVUZGRVJfQklORElORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0OTY2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1ZFUlRFWF9BUlJBWV9QT0lOVEVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI5MTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVkVSVEVYX0FSUkFZX1NJWkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjg5MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9WRVJURVhfQVJSQVlfU1RSSURFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI4OTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfVkVSVEVYX0FSUkFZX1RZUEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjg5MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9WSUVXUE9SVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjI5NzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfV1JJVEVfT05MWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1MDAxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkdMMTFFeHQiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YXgubWljcm9lZGl0aW9uLmtocm9ub3Mub3BlbmdsZXMuR0wiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnbEN1cnJlbnRQYWxldHRlTWF0cml4T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXRyaXhwYWxldHRlaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbERyYXdUZXhmT0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InoiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEcmF3VGV4ZnZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb3JkcyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEcmF3VGV4ZnZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb3JkcyIgdHlwZT0iamF2YS5uaW8uRmxvYXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEcmF3VGV4aU9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InoiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEcmF3VGV4aXZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb3JkcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRHJhd1RleGl2T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29yZHMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbERyYXdUZXhzT0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4IiB0eXBlPSJzaG9ydCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieSIgdHlwZT0ic2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InoiIHR5cGU9InNob3J0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aWR0aCIgdHlwZT0ic2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0ic2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEcmF3VGV4c3ZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb3JkcyIgdHlwZT0ic2hvcnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEcmF3VGV4c3ZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb3JkcyIgdHlwZT0iamF2YS5uaW8uU2hvcnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEcmF3VGV4eE9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InoiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xEcmF3VGV4eHZPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb3JkcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRHJhd1RleHh2T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29yZHMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEVuYWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FwIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xFbmFibGVDbGllbnRTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJyYXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbExvYWRQYWxldHRlRnJvbU1vZGVsVmlld01hdHJpeE9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbE1hdHJpeEluZGV4UG9pbnRlck9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmlkZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb2ludGVyIiB0eXBlPSJqYXZhLm5pby5CdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xNYXRyaXhJbmRleFBvaW50ZXJPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhQYXJhbWV0ZXJmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtIiB0eXBlPSJmbG9hdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFdlaWdodFBvaW50ZXJPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdHJpZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9pbnRlciIgdHlwZT0iamF2YS5uaW8uQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsV2VpZ2h0UG9pbnRlck9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmlkZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkdMX01BVFJJWF9JTkRFWF9BUlJBWV9CVUZGRVJfQklORElOR19PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNTc0MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NQVRSSVhfSU5ERVhfQVJSQVlfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ4ODQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUFUUklYX0lOREVYX0FSUkFZX1BPSU5URVJfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ4ODkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUFUUklYX0lOREVYX0FSUkFZX1NJWkVfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ4ODYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUFUUklYX0lOREVYX0FSUkFZX1NUUklERV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDg4OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NQVRSSVhfSU5ERVhfQVJSQVlfVFlQRV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDg4NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NQVRSSVhfUEFMRVRURV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDg4MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NQVhfUEFMRVRURV9NQVRSSUNFU19PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDg4MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NQVhfVkVSVEVYX1VOSVRTX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0NDY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfQ1JPUF9SRUNUX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM1NzQxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1dFSUdIVF9BUlJBWV9CVUZGRVJfQklORElOR19PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDk3NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9XRUlHSFRfQVJSQVlfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ0NzciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfV0VJR0hUX0FSUkFZX1BPSU5URVJfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ0NzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfV0VJR0hUX0FSUkFZX1NJWkVfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ0NzUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfV0VJR0hUX0FSUkFZX1NUUklERV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDQ3NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9XRUlHSFRfQVJSQVlfVFlQRV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDQ3MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJHTDExRXh0ZW5zaW9uUGFjayIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5vcGVuZ2xlcy5HTCI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImdsQmluZEZyYW1lYnVmZmVyT0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZnJhbWVidWZmZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEJpbmRSZW5kZXJidWZmZXJPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZW5kZXJidWZmZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEJpbmRUZXh0dXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dHVyZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQmxlbmRFcXVhdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQmxlbmRFcXVhdGlvblNlcGFyYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlUkdCIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGVBbHBoYSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsQmxlbmRGdW5jU2VwYXJhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyY1JHQiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkc3RSR0IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjQWxwaGEiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHN0QWxwaGEiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbENoZWNrRnJhbWVidWZmZXJTdGF0dXNPRVMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xDb21wcmVzc2VkVGV4SW1hZ2UyRCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxldmVsIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVybmFsZm9ybWF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3JkZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW1hZ2VTaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImphdmEubmlvLkJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbENvcHlUZXhJbWFnZTJEIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGV2ZWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZXJuYWxmb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJib3JkZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbERlbGV0ZUZyYW1lYnVmZmVyc09FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmcmFtZWJ1ZmZlcnMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbERlbGV0ZUZyYW1lYnVmZmVyc09FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmcmFtZWJ1ZmZlcnMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbERlbGV0ZVJlbmRlcmJ1ZmZlcnNPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVuZGVyYnVmZmVycyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRGVsZXRlUmVuZGVyYnVmZmVyc09FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZW5kZXJidWZmZXJzIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xFbmFibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhcCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXJPRVMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRhY2htZW50IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlbmRlcmJ1ZmZlcnRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZW5kZXJidWZmZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEZyYW1lYnVmZmVyVGV4dHVyZTJET0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0YWNobWVudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dHVyZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZXZlbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2VuRnJhbWVidWZmZXJzT0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZyYW1lYnVmZmVycyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2VuRnJhbWVidWZmZXJzT0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZyYW1lYnVmZmVycyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2VuUmVuZGVyYnVmZmVyc09FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZW5kZXJidWZmZXJzIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZW5SZW5kZXJidWZmZXJzT0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlbmRlcmJ1ZmZlcnMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdlbmVyYXRlTWlwbWFwT0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0YWNobWVudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldEZyYW1lYnVmZmVyQXR0YWNobWVudFBhcmFtZXRlcml2T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0YWNobWVudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldEludGVnZXJ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldEludGVnZXJ2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2T0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdk9FUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsR2V0VGV4R2VuZnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb3JkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xHZXRUZXhHZW5mdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29vcmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5GbG9hdEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFRleEdlbml2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29yZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFRleEdlbml2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29yZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFRleEdlbnh2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29yZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbEdldFRleEdlbnh2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29yZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9ImphdmEubmlvLkludEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbElzRnJhbWVidWZmZXJPRVMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZyYW1lYnVmZmVyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xJc1JlbmRlcmJ1ZmZlck9FUyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVuZGVyYnVmZmVyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xSZW5kZXJidWZmZXJTdG9yYWdlT0VTIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZXJuYWxmb3JtYXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lkdGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVpZ2h0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xTdGVuY2lsT3AiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhaWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iemZhaWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ienBhc3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleEVudmYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhFbnZmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhFbnZmdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uRmxvYXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhFbnZ4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleEVudnh2IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhFbnZ4diIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4R2VuZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29vcmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW0iIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4R2VuZnYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb3JkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iZmxvYXRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhHZW5mdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29vcmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5GbG9hdEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFRleEdlbmkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb3JkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhHZW5pdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29vcmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJpbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhHZW5pdiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29vcmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG5hbWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJqYXZhLm5pby5JbnRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2xUZXhHZW54IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29yZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwbmFtZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4R2VueHYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb3JkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4R2VueHYiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb3JkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iamF2YS5uaW8uSW50QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsVGV4UGFyYW1ldGVyZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBuYW1lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkdMX0JMRU5EX0RTVF9BTFBIQSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyOTcwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0JMRU5EX0RTVF9SR0IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjk2OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9CTEVORF9FUVVBVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyNzc3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0JMRU5EX0VRVUFUSU9OX0FMUEhBIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQ4NzciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQkxFTkRfRVFVQVRJT05fUkdCIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI3NzciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQkxFTkRfU1JDX0FMUEhBIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI5NzEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQkxFTkRfU1JDX1JHQiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyOTY5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTE9SX0FUVEFDSE1FTlQwX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDY0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTE9SX0FUVEFDSE1FTlQxMF9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjA3NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DT0xPUl9BVFRBQ0hNRU5UMTFfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYwNzUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ09MT1JfQVRUQUNITUVOVDEyX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDc2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTE9SX0FUVEFDSE1FTlQxM19PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjA3NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9DT0xPUl9BVFRBQ0hNRU5UMTRfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYwNzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfQ09MT1JfQVRUQUNITUVOVDE1X09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDc5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTE9SX0FUVEFDSE1FTlQxX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDY1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTE9SX0FUVEFDSE1FTlQyX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDY2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTE9SX0FUVEFDSE1FTlQzX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDY3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTE9SX0FUVEFDSE1FTlQ0X09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTE9SX0FUVEFDSE1FTlQ1X09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDY5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTE9SX0FUVEFDSE1FTlQ2X09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDcwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTE9SX0FUVEFDSE1FTlQ3X09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDcxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTE9SX0FUVEFDSE1FTlQ4X09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDcyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0NPTE9SX0FUVEFDSE1FTlQ5X09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDczIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0RFQ1JfV1JBUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0RFUFRIX0FUVEFDSE1FTlRfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYwOTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfREVQVEhfQ09NUE9ORU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjQwMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9ERVBUSF9DT01QT05FTlQxNiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMzMTg5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0RFUFRIX0NPTVBPTkVOVDI0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzMxOTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfREVQVEhfQ09NUE9ORU5UMzIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMzE5MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9GUkFNRUJVRkZFUl9BVFRBQ0hNRU5UX09CSkVDVF9OQU1FX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDQ5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfT0JKRUNUX1RZUEVfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYwNDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0NVQkVfTUFQX0ZBQ0VfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYwNTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlJBTUVCVUZGRVJfQVRUQUNITUVOVF9URVhUVVJFX0xFVkVMX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDUwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZSQU1FQlVGRkVSX0JJTkRJTkdfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYwMDYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlJBTUVCVUZGRVJfQ09NUExFVEVfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYwNTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlJBTUVCVUZGRVJfSU5DT01QTEVURV9BVFRBQ0hNRU5UX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDU0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfRElNRU5TSU9OU19PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjA1NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX0RSQVdfQlVGRkVSX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDU5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfRk9STUFUU19PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjA1OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX01JU1NJTkdfQVRUQUNITUVOVF9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjA1NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9GUkFNRUJVRkZFUl9JTkNPTVBMRVRFX1JFQURfQlVGRkVSX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDYwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZSQU1FQlVGRkVSX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MTYwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZSQU1FQlVGRkVSX1VOU1VQUE9SVEVEX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDYxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0ZVTkNfQUREIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI3NzQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlVOQ19SRVZFUlNFX1NVQlRSQUNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI3NzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfRlVOQ19TVUJUUkFDVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyNzc4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0lOQ1JfV1JBUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDU1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX0lOVkFMSURfRlJBTUVCVUZGRVJfT1BFUkFUSU9OX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyODYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUFYX0NPTE9SX0FUVEFDSE1FTlRTX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MDYzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX01BWF9DVUJFX01BUF9URVhUVVJFX1NJWkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDA3NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9NQVhfUkVOREVSQlVGRkVSX1NJWkVfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwMjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTUlSUk9SRURfUkVQRUFUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzM2NDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfTk9STUFMX01BUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDY1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JFRkxFQ1RJT05fTUFQIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzQwNjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUkVOREVSQlVGRkVSX0FMUEhBX1NJWkVfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYxNzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUkVOREVSQlVGRkVSX0JJTkRJTkdfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYwMDciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUkVOREVSQlVGRkVSX0JMVUVfU0laRV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjE3OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SRU5ERVJCVUZGRVJfREVQVEhfU0laRV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjE4MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SRU5ERVJCVUZGRVJfR1JFRU5fU0laRV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjE3NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SRU5ERVJCVUZGRVJfSEVJR0hUX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MTYzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JFTkRFUkJVRkZFUl9JTlRFUk5BTF9GT1JNQVRfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYxNjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUkVOREVSQlVGRkVSX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MTYxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JFTkRFUkJVRkZFUl9SRURfU0laRV9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjE3NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SRU5ERVJCVUZGRVJfU1RFTkNJTF9TSVpFX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MTgxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JFTkRFUkJVRkZFUl9XSURUSF9PRVMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjE2MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SR0I1NjVfT0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzYxOTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfUkdCNV9BMSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyODU1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JHQjgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMjg0OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9SR0JBNCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMyODU0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1JHQkE4IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzI4NTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0xfU1RFTkNJTF9BVFRBQ0hNRU5UX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MTI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NURU5DSUxfSU5ERVgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2NDAxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NURU5DSUxfSU5ERVgxX09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MTY2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NURU5DSUxfSU5ERVg0X09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MTY3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NURU5DSUxfSU5ERVg4X09FUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM2MTY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1NUUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfQklORElOR19DVUJFX01BUCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM0MDY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdMX1RFWFRVUkVfQ1VCRV9NQVAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDA2NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1giCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDA3MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1kiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDA3MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFX0NVQkVfTUFQX05FR0FUSVZFX1oiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDA3NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1giCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDA2OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1kiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDA3MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFX0NVQkVfTUFQX1BPU0lUSVZFX1oiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNDA3MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFX0dFTl9NT0RFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOTQ3MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJHTF9URVhUVVJFX0dFTl9TVFIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzNjE5MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iamF2YXgubmV0IgorPgorPGNsYXNzIG5hbWU9IlNlcnZlclNvY2tldEZhY3RvcnkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2VydmVyU29ja2V0RmFjdG9yeSIKKyB0eXBlPSJqYXZheC5uZXQuU2VydmVyU29ja2V0RmFjdG9yeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVTZXJ2ZXJTb2NrZXQiCisgcmV0dXJuPSJqYXZhLm5ldC5TZXJ2ZXJTb2NrZXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVNlcnZlclNvY2tldCIKKyByZXR1cm49ImphdmEubmV0LlNlcnZlclNvY2tldCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVNlcnZlclNvY2tldCIKKyByZXR1cm49ImphdmEubmV0LlNlcnZlclNvY2tldCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJhY2tsb2ciIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlU2VydmVyU29ja2V0IgorIHJldHVybj0iamF2YS5uZXQuU2VydmVyU29ja2V0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmFja2xvZyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpQWRkcmVzcyIgdHlwZT0iamF2YS5uZXQuSW5ldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlZmF1bHQiCisgcmV0dXJuPSJqYXZheC5uZXQuU2VydmVyU29ja2V0RmFjdG9yeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU29ja2V0RmFjdG9yeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTb2NrZXRGYWN0b3J5IgorIHR5cGU9ImphdmF4Lm5ldC5Tb2NrZXRGYWN0b3J5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVNvY2tldCIKKyByZXR1cm49ImphdmEubmV0LlNvY2tldCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlU29ja2V0IgorIHJldHVybj0iamF2YS5uZXQuU29ja2V0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imhvc3QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlVua25vd25Ib3N0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Vbmtub3duSG9zdEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVTb2NrZXQiCisgcmV0dXJuPSJqYXZhLm5ldC5Tb2NrZXQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbEhvc3QiIHR5cGU9ImphdmEubmV0LkluZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbFBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlVua25vd25Ib3N0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Vbmtub3duSG9zdEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVTb2NrZXQiCisgcmV0dXJuPSJqYXZhLm5ldC5Tb2NrZXQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5uZXQuSW5ldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlU29ja2V0IgorIHJldHVybj0iamF2YS5uZXQuU29ja2V0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFkZHJlc3MiIHR5cGU9ImphdmEubmV0LkluZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsQWRkcmVzcyIgdHlwZT0iamF2YS5uZXQuSW5ldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsUG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWZhdWx0IgorIHJldHVybj0iamF2YXgubmV0LlNvY2tldEZhY3RvcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iamF2YXgubmV0LnNzbCIKKz4KKzxjbGFzcyBuYW1lPSJDZXJ0UGF0aFRydXN0TWFuYWdlclBhcmFtZXRlcnMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YXgubmV0LnNzbC5NYW5hZ2VyRmFjdG9yeVBhcmFtZXRlcnMiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNlcnRQYXRoVHJ1c3RNYW5hZ2VyUGFyYW1ldGVycyIKKyB0eXBlPSJqYXZheC5uZXQuc3NsLkNlcnRQYXRoVHJ1c3RNYW5hZ2VyUGFyYW1ldGVycyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlcnMiIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0UGF0aFBhcmFtZXRlcnMiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJhbWV0ZXJzIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRQYXRoUGFyYW1ldGVycyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJIYW5kc2hha2VDb21wbGV0ZWRFdmVudCIKKyBleHRlbmRzPSJqYXZhLnV0aWwuRXZlbnRPYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIYW5kc2hha2VDb21wbGV0ZWRFdmVudCIKKyB0eXBlPSJqYXZheC5uZXQuc3NsLkhhbmRzaGFrZUNvbXBsZXRlZEV2ZW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic29jayIgdHlwZT0iamF2YXgubmV0LnNzbC5TU0xTb2NrZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmF4Lm5ldC5zc2wuU1NMU2Vzc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldENpcGhlclN1aXRlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhbENlcnRpZmljYXRlcyIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvY2FsUHJpbmNpcGFsIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5QcmluY2lwYWwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGVlckNlcnRpZmljYXRlQ2hhaW4iCisgcmV0dXJuPSJqYXZheC5zZWN1cml0eS5jZXJ0Llg1MDlDZXJ0aWZpY2F0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTU0xQZWVyVW52ZXJpZmllZEV4Y2VwdGlvbiIgdHlwZT0iamF2YXgubmV0LnNzbC5TU0xQZWVyVW52ZXJpZmllZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQZWVyQ2VydGlmaWNhdGVzIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNTTFBlZXJVbnZlcmlmaWVkRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTFBlZXJVbnZlcmlmaWVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBlZXJQcmluY2lwYWwiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlByaW5jaXBhbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1NMUGVlclVudmVyaWZpZWRFeGNlcHRpb24iIHR5cGU9ImphdmF4Lm5ldC5zc2wuU1NMUGVlclVudmVyaWZpZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2Vzc2lvbiIKKyByZXR1cm49ImphdmF4Lm5ldC5zc2wuU1NMU2Vzc2lvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTb2NrZXQiCisgcmV0dXJuPSJqYXZheC5uZXQuc3NsLlNTTFNvY2tldCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iSGFuZHNoYWtlQ29tcGxldGVkTGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLkV2ZW50TGlzdGVuZXIiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJoYW5kc2hha2VDb21wbGV0ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJqYXZheC5uZXQuc3NsLkhhbmRzaGFrZUNvbXBsZXRlZEV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iSG9zdG5hbWVWZXJpZmllciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InZlcmlmeSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdG5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlc3Npb24iIHR5cGU9ImphdmF4Lm5ldC5zc2wuU1NMU2Vzc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iSHR0cHNVUkxDb25uZWN0aW9uIgorIGV4dGVuZHM9ImphdmEubmV0Lkh0dHBVUkxDb25uZWN0aW9uIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIdHRwc1VSTENvbm5lY3Rpb24iCisgdHlwZT0iamF2YXgubmV0LnNzbC5IdHRwc1VSTENvbm5lY3Rpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmwiIHR5cGU9ImphdmEubmV0LlVSTCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldENpcGhlclN1aXRlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlZmF1bHRIb3N0bmFtZVZlcmlmaWVyIgorIHJldHVybj0iamF2YXgubmV0LnNzbC5Ib3N0bmFtZVZlcmlmaWVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVmYXVsdFNTTFNvY2tldEZhY3RvcnkiCisgcmV0dXJuPSJqYXZheC5uZXQuc3NsLlNTTFNvY2tldEZhY3RvcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIb3N0bmFtZVZlcmlmaWVyIgorIHJldHVybj0iamF2YXgubmV0LnNzbC5Ib3N0bmFtZVZlcmlmaWVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvY2FsQ2VydGlmaWNhdGVzIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhbFByaW5jaXBhbCIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHJpbmNpcGFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBlZXJQcmluY2lwYWwiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LlByaW5jaXBhbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1NMUGVlclVudmVyaWZpZWRFeGNlcHRpb24iIHR5cGU9ImphdmF4Lm5ldC5zc2wuU1NMUGVlclVudmVyaWZpZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U1NMU29ja2V0RmFjdG9yeSIKKyByZXR1cm49ImphdmF4Lm5ldC5zc2wuU1NMU29ja2V0RmFjdG9yeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZXJ2ZXJDZXJ0aWZpY2F0ZXMiCisgcmV0dXJuPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTU0xQZWVyVW52ZXJpZmllZEV4Y2VwdGlvbiIgdHlwZT0iamF2YXgubmV0LnNzbC5TU0xQZWVyVW52ZXJpZmllZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREZWZhdWx0SG9zdG5hbWVWZXJpZmllciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idiIgdHlwZT0iamF2YXgubmV0LnNzbC5Ib3N0bmFtZVZlcmlmaWVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERlZmF1bHRTU0xTb2NrZXRGYWN0b3J5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZiIgdHlwZT0iamF2YXgubmV0LnNzbC5TU0xTb2NrZXRGYWN0b3J5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEhvc3RuYW1lVmVyaWZpZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2IiB0eXBlPSJqYXZheC5uZXQuc3NsLkhvc3RuYW1lVmVyaWZpZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U1NMU29ja2V0RmFjdG9yeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNmIiB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTFNvY2tldEZhY3RvcnkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJob3N0bmFtZVZlcmlmaWVyIgorIHR5cGU9ImphdmF4Lm5ldC5zc2wuSG9zdG5hbWVWZXJpZmllciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iS2V5TWFuYWdlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJLZXlNYW5hZ2VyRmFjdG9yeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5TWFuYWdlckZhY3RvcnkiCisgdHlwZT0iamF2YXgubmV0LnNzbC5LZXlNYW5hZ2VyRmFjdG9yeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY3RvcnlTcGkiIHR5cGU9ImphdmF4Lm5ldC5zc2wuS2V5TWFuYWdlckZhY3RvcnlTcGkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRBbGdvcml0aG0iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVmYXVsdEFsZ29yaXRobSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YXgubmV0LnNzbC5LZXlNYW5hZ2VyRmFjdG9yeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsZ29yaXRobSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImphdmF4Lm5ldC5zc2wuS2V5TWFuYWdlckZhY3RvcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hQcm92aWRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hQcm92aWRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImphdmF4Lm5ldC5zc2wuS2V5TWFuYWdlckZhY3RvcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEtleU1hbmFnZXJzIgorIHJldHVybj0iamF2YXgubmV0LnNzbC5LZXlNYW5hZ2VyW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm92aWRlciIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbml0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrcyIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFzc3dvcmQiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iS2V5U3RvcmVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5U3RvcmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlVucmVjb3ZlcmFibGVLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuVW5yZWNvdmVyYWJsZUtleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbml0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcGVjIiB0eXBlPSJqYXZheC5uZXQuc3NsLk1hbmFnZXJGYWN0b3J5UGFyYW1ldGVycyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IktleU1hbmFnZXJGYWN0b3J5U3BpIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IktleU1hbmFnZXJGYWN0b3J5U3BpIgorIHR5cGU9ImphdmF4Lm5ldC5zc2wuS2V5TWFuYWdlckZhY3RvcnlTcGkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZW5naW5lR2V0S2V5TWFuYWdlcnMiCisgcmV0dXJuPSJqYXZheC5uZXQuc3NsLktleU1hbmFnZXJbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUluaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtzIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXNzd29yZCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJLZXlTdG9yZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iVW5yZWNvdmVyYWJsZUtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5VbnJlY292ZXJhYmxlS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUluaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNwZWMiIHR5cGU9ImphdmF4Lm5ldC5zc2wuTWFuYWdlckZhY3RvcnlQYXJhbWV0ZXJzIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iS2V5U3RvcmVCdWlsZGVyUGFyYW1ldGVycyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZheC5uZXQuc3NsLk1hbmFnZXJGYWN0b3J5UGFyYW1ldGVycyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iS2V5U3RvcmVCdWlsZGVyUGFyYW1ldGVycyIKKyB0eXBlPSJqYXZheC5uZXQuc3NsLktleVN0b3JlQnVpbGRlclBhcmFtZXRlcnMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWlsZGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlLkJ1aWxkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IktleVN0b3JlQnVpbGRlclBhcmFtZXRlcnMiCisgdHlwZT0iamF2YXgubmV0LnNzbC5LZXlTdG9yZUJ1aWxkZXJQYXJhbWV0ZXJzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVycyIgdHlwZT0iamF2YS51dGlsLkxpc3QiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJhbWV0ZXJzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ik1hbmFnZXJGYWN0b3J5UGFyYW1ldGVycyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJTU0xDb250ZXh0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTU0xDb250ZXh0IgorIHR5cGU9ImphdmF4Lm5ldC5zc2wuU1NMQ29udGV4dCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHRTcGkiIHR5cGU9ImphdmF4Lm5ldC5zc2wuU1NMQ29udGV4dFNwaSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3RvY29sIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY3JlYXRlU1NMRW5naW5lIgorIHJldHVybj0iamF2YXgubmV0LnNzbC5TU0xFbmdpbmUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVTU0xFbmdpbmUiCisgcmV0dXJuPSJqYXZheC5uZXQuc3NsLlNTTEVuZ2luZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwZWVySG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGVlclBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDbGllbnRTZXNzaW9uQ29udGV4dCIKKyByZXR1cm49ImphdmF4Lm5ldC5zc2wuU1NMU2Vzc2lvbkNvbnRleHQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImphdmF4Lm5ldC5zc2wuU1NMQ29udGV4dCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm90b2NvbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnN0YW5jZSIKKyByZXR1cm49ImphdmF4Lm5ldC5zc2wuU1NMQ29udGV4dCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm90b2NvbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdmlkZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaFByb3ZpZGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YXgubmV0LnNzbC5TU0xDb250ZXh0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3RvY29sIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iamF2YS5zZWN1cml0eS5Qcm92aWRlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm90b2NvbCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm92aWRlciIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHJvdmlkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZXJ2ZXJTZXNzaW9uQ29udGV4dCIKKyByZXR1cm49ImphdmF4Lm5ldC5zc2wuU1NMU2Vzc2lvbkNvbnRleHQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZXJ2ZXJTb2NrZXRGYWN0b3J5IgorIHJldHVybj0iamF2YXgubmV0LnNzbC5TU0xTZXJ2ZXJTb2NrZXRGYWN0b3J5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U29ja2V0RmFjdG9yeSIKKyByZXR1cm49ImphdmF4Lm5ldC5zc2wuU1NMU29ja2V0RmFjdG9yeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImttIiB0eXBlPSJqYXZheC5uZXQuc3NsLktleU1hbmFnZXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idG0iIHR5cGU9ImphdmF4Lm5ldC5zc2wuVHJ1c3RNYW5hZ2VyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlNlY3VyZVJhbmRvbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iS2V5TWFuYWdlbWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlNYW5hZ2VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNTTENvbnRleHRTcGkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1NMQ29udGV4dFNwaSIKKyB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTENvbnRleHRTcGkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZW5naW5lQ3JlYXRlU1NMRW5naW5lIgorIHJldHVybj0iamF2YXgubmV0LnNzbC5TU0xFbmdpbmUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUNyZWF0ZVNTTEVuZ2luZSIKKyByZXR1cm49ImphdmF4Lm5ldC5zc2wuU1NMRW5naW5lIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lR2V0Q2xpZW50U2Vzc2lvbkNvbnRleHQiCisgcmV0dXJuPSJqYXZheC5uZXQuc3NsLlNTTFNlc3Npb25Db250ZXh0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lR2V0U2VydmVyU2Vzc2lvbkNvbnRleHQiCisgcmV0dXJuPSJqYXZheC5uZXQuc3NsLlNTTFNlc3Npb25Db250ZXh0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5naW5lR2V0U2VydmVyU29ja2V0RmFjdG9yeSIKKyByZXR1cm49ImphdmF4Lm5ldC5zc2wuU1NMU2VydmVyU29ja2V0RmFjdG9yeSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUdldFNvY2tldEZhY3RvcnkiCisgcmV0dXJuPSJqYXZheC5uZXQuc3NsLlNTTFNvY2tldEZhY3RvcnkiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVJbml0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJrbSIgdHlwZT0iamF2YXgubmV0LnNzbC5LZXlNYW5hZ2VyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRtIiB0eXBlPSJqYXZheC5uZXQuc3NsLlRydXN0TWFuYWdlcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzciIgdHlwZT0iamF2YS5zZWN1cml0eS5TZWN1cmVSYW5kb20iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IktleU1hbmFnZW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5TWFuYWdlbWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTU0xFbmdpbmUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1NMRW5naW5lIgorIHR5cGU9ImphdmF4Lm5ldC5zc2wuU1NMRW5naW5lIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1NMRW5naW5lIgorIHR5cGU9ImphdmF4Lm5ldC5zc2wuU1NMRW5naW5lIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYmVnaW5IYW5kc2hha2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNTTEV4Y2VwdGlvbiIgdHlwZT0iamF2YXgubmV0LnNzbC5TU0xFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvc2VJbmJvdW5kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTU0xFeGNlcHRpb24iIHR5cGU9ImphdmF4Lm5ldC5zc2wuU1NMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb3NlT3V0Ym91bmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVsZWdhdGVkVGFzayIKKyByZXR1cm49ImphdmEubGFuZy5SdW5uYWJsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVuYWJsZVNlc3Npb25DcmVhdGlvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbmFibGVkQ2lwaGVyU3VpdGVzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RW5hYmxlZFByb3RvY29scyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhhbmRzaGFrZVN0YXR1cyIKKyByZXR1cm49ImphdmF4Lm5ldC5zc2wuU1NMRW5naW5lUmVzdWx0LkhhbmRzaGFrZVN0YXR1cyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5lZWRDbGllbnRBdXRoIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBlZXJIb3N0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQZWVyUG9ydCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZXNzaW9uIgorIHJldHVybj0iamF2YXgubmV0LnNzbC5TU0xTZXNzaW9uIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3VwcG9ydGVkQ2lwaGVyU3VpdGVzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3VwcG9ydGVkUHJvdG9jb2xzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VXNlQ2xpZW50TW9kZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRXYW50Q2xpZW50QXV0aCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0luYm91bmREb25lIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzT3V0Ym91bmREb25lIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVuYWJsZVNlc3Npb25DcmVhdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFbmFibGVkQ2lwaGVyU3VpdGVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdWl0ZXMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFbmFibGVkUHJvdG9jb2xzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm90b2NvbHMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXROZWVkQ2xpZW50QXV0aCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmVlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRVc2VDbGllbnRNb2RlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFdhbnRDbGllbnRBdXRoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3YW50IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVud3JhcCIKKyByZXR1cm49ImphdmF4Lm5ldC5zc2wuU1NMRW5naW5lUmVzdWx0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHN0cyIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNTTEV4Y2VwdGlvbiIgdHlwZT0iamF2YXgubmV0LnNzbC5TU0xFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW53cmFwIgorIHJldHVybj0iamF2YXgubmV0LnNzbC5TU0xFbmdpbmVSZXN1bHQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyYyIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHN0IiB0eXBlPSJqYXZhLm5pby5CeXRlQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTU0xFeGNlcHRpb24iIHR5cGU9ImphdmF4Lm5ldC5zc2wuU1NMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVud3JhcCIKKyByZXR1cm49ImphdmF4Lm5ldC5zc2wuU1NMRW5naW5lUmVzdWx0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRzdHMiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1NMRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cmFwIgorIHJldHVybj0iamF2YXgubmV0LnNzbC5TU0xFbmdpbmVSZXN1bHQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjcyIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRzdCIgdHlwZT0iamF2YS5uaW8uQnl0ZUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1NMRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cmFwIgorIHJldHVybj0iamF2YXgubmV0LnNzbC5TU0xFbmdpbmVSZXN1bHQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNyY3MiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZHN0IiB0eXBlPSJqYXZhLm5pby5CeXRlQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTU0xFeGNlcHRpb24iIHR5cGU9ImphdmF4Lm5ldC5zc2wuU1NMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyYXAiCisgcmV0dXJuPSJqYXZheC5uZXQuc3NsLlNTTEVuZ2luZVJlc3VsdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3JjIiB0eXBlPSJqYXZhLm5pby5CeXRlQnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkc3QiIHR5cGU9ImphdmEubmlvLkJ5dGVCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNTTEV4Y2VwdGlvbiIgdHlwZT0iamF2YXgubmV0LnNzbC5TU0xFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU1NMRW5naW5lUmVzdWx0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTU0xFbmdpbmVSZXN1bHQiCisgdHlwZT0iamF2YXgubmV0LnNzbC5TU0xFbmdpbmVSZXN1bHQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0dXMiIHR5cGU9ImphdmF4Lm5ldC5zc2wuU1NMRW5naW5lUmVzdWx0LlN0YXR1cyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZHNoYWtlU3RhdHVzIiB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTEVuZ2luZVJlc3VsdC5IYW5kc2hha2VTdGF0dXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ5dGVzQ29uc3VtZWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnl0ZXNQcm9kdWNlZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYnl0ZXNDb25zdW1lZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImJ5dGVzUHJvZHVjZWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIYW5kc2hha2VTdGF0dXMiCisgcmV0dXJuPSJqYXZheC5uZXQuc3NsLlNTTEVuZ2luZVJlc3VsdC5IYW5kc2hha2VTdGF0dXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdGF0dXMiCisgcmV0dXJuPSJqYXZheC5uZXQuc3NsLlNTTEVuZ2luZVJlc3VsdC5TdGF0dXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTU0xFbmdpbmVSZXN1bHQuSGFuZHNoYWtlU3RhdHVzIgorIGV4dGVuZHM9ImphdmEubGFuZy5FbnVtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iamF2YXgubmV0LnNzbC5TU0xFbmdpbmVSZXN1bHQuSGFuZHNoYWtlU3RhdHVzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVzIgorIHJldHVybj0iamF2YXgubmV0LnNzbC5TU0xFbmdpbmVSZXN1bHQuSGFuZHNoYWtlU3RhdHVzW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNTTEVuZ2luZVJlc3VsdC5TdGF0dXMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLkVudW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InZhbHVlT2YiCisgcmV0dXJuPSJqYXZheC5uZXQuc3NsLlNTTEVuZ2luZVJlc3VsdC5TdGF0dXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZXMiCisgcmV0dXJuPSJqYXZheC5uZXQuc3NsLlNTTEVuZ2luZVJlc3VsdC5TdGF0dXNbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU1NMRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEuaW8uSU9FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTU0xFeGNlcHRpb24iCisgdHlwZT0iamF2YXgubmV0LnNzbC5TU0xFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWFzb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNTTEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTU0xFeGNlcHRpb24iCisgdHlwZT0iamF2YXgubmV0LnNzbC5TU0xFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNTTEhhbmRzaGFrZUV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZheC5uZXQuc3NsLlNTTEV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNTTEhhbmRzaGFrZUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTEhhbmRzaGFrZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlYXNvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNTTEtleUV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZheC5uZXQuc3NsLlNTTEV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNTTEtleUV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTEtleUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlYXNvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNTTFBlZXJVbnZlcmlmaWVkRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmF4Lm5ldC5zc2wuU1NMRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1NMUGVlclVudmVyaWZpZWRFeGNlcHRpb24iCisgdHlwZT0iamF2YXgubmV0LnNzbC5TU0xQZWVyVW52ZXJpZmllZEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlYXNvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNTTFBlcm1pc3Npb24iCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5CYXNpY1Blcm1pc3Npb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNTTFBlcm1pc3Npb24iCisgdHlwZT0iamF2YXgubmV0LnNzbC5TU0xQZXJtaXNzaW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1NMUGVybWlzc2lvbiIKKyB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTFBlcm1pc3Npb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb25zIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU1NMUHJvdG9jb2xFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YXgubmV0LnNzbC5TU0xFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTU0xQcm90b2NvbEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTFByb3RvY29sRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVhc29uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU1NMU2VydmVyU29ja2V0IgorIGV4dGVuZHM9ImphdmEubmV0LlNlcnZlclNvY2tldCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1NMU2VydmVyU29ja2V0IgorIHR5cGU9ImphdmF4Lm5ldC5zc2wuU1NMU2VydmVyU29ja2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNTTFNlcnZlclNvY2tldCIKKyB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTFNlcnZlclNvY2tldCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNTTFNlcnZlclNvY2tldCIKKyB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTFNlcnZlclNvY2tldCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmFja2xvZyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1NMU2VydmVyU29ja2V0IgorIHR5cGU9ImphdmF4Lm5ldC5zc2wuU1NMU2VydmVyU29ja2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiYWNrbG9nIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFkZHJlc3MiIHR5cGU9ImphdmEubmV0LkluZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEVuYWJsZVNlc3Npb25DcmVhdGlvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbmFibGVkQ2lwaGVyU3VpdGVzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RW5hYmxlZFByb3RvY29scyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5lZWRDbGllbnRBdXRoIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1cHBvcnRlZENpcGhlclN1aXRlcyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1cHBvcnRlZFByb3RvY29scyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFVzZUNsaWVudE1vZGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V2FudENsaWVudEF1dGgiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RW5hYmxlU2Vzc2lvbkNyZWF0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmbGFnIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVuYWJsZWRDaXBoZXJTdWl0ZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN1aXRlcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVuYWJsZWRQcm90b2NvbHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3RvY29scyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE5lZWRDbGllbnRBdXRoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZWVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFVzZUNsaWVudE1vZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0V2FudENsaWVudEF1dGgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndhbnQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU1NMU2VydmVyU29ja2V0RmFjdG9yeSIKKyBleHRlbmRzPSJqYXZheC5uZXQuU2VydmVyU29ja2V0RmFjdG9yeSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1NMU2VydmVyU29ja2V0RmFjdG9yeSIKKyB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTFNlcnZlclNvY2tldEZhY3RvcnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0RGVmYXVsdCIKKyByZXR1cm49ImphdmF4Lm5ldC5TZXJ2ZXJTb2NrZXRGYWN0b3J5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZWZhdWx0Q2lwaGVyU3VpdGVzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3VwcG9ydGVkQ2lwaGVyU3VpdGVzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlNTTFNlc3Npb24iCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRBcHBsaWNhdGlvbkJ1ZmZlclNpemUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDaXBoZXJTdWl0ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDcmVhdGlvblRpbWUiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SWQiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMYXN0QWNjZXNzZWRUaW1lIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvY2FsQ2VydGlmaWNhdGVzIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhbFByaW5jaXBhbCIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHJpbmNpcGFsIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFja2V0QnVmZmVyU2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBlZXJDZXJ0aWZpY2F0ZUNoYWluIgorIHJldHVybj0iamF2YXguc2VjdXJpdHkuY2VydC5YNTA5Q2VydGlmaWNhdGVbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTU0xQZWVyVW52ZXJpZmllZEV4Y2VwdGlvbiIgdHlwZT0iamF2YXgubmV0LnNzbC5TU0xQZWVyVW52ZXJpZmllZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQZWVyQ2VydGlmaWNhdGVzIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1NMUGVlclVudmVyaWZpZWRFeGNlcHRpb24iIHR5cGU9ImphdmF4Lm5ldC5zc2wuU1NMUGVlclVudmVyaWZpZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGVlckhvc3QiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGVlclBvcnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQZWVyUHJpbmNpcGFsIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5QcmluY2lwYWwiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1NMUGVlclVudmVyaWZpZWRFeGNlcHRpb24iIHR5cGU9ImphdmF4Lm5ldC5zc2wuU1NMUGVlclVudmVyaWZpZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvdG9jb2wiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2Vzc2lvbkNvbnRleHQiCisgcmV0dXJuPSJqYXZheC5uZXQuc3NsLlNTTFNlc3Npb25Db250ZXh0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmFsdWVOYW1lcyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImludmFsaWRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNWYWxpZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXRWYWx1ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlVmFsdWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlNTTFNlc3Npb25CaW5kaW5nRXZlbnQiCisgZXh0ZW5kcz0iamF2YS51dGlsLkV2ZW50T2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1NMU2Vzc2lvbkJpbmRpbmdFdmVudCIKKyB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTFNlc3Npb25CaW5kaW5nRXZlbnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZXNzaW9uIiB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTFNlc3Npb24iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZXNzaW9uIgorIHJldHVybj0iamF2YXgubmV0LnNzbC5TU0xTZXNzaW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJTU0xTZXNzaW9uQmluZGluZ0xpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC5FdmVudExpc3RlbmVyIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0idmFsdWVCb3VuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXZlbnQiIHR5cGU9ImphdmF4Lm5ldC5zc2wuU1NMU2Vzc2lvbkJpbmRpbmdFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZVVuYm91bmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV2ZW50IiB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTFNlc3Npb25CaW5kaW5nRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJTU0xTZXNzaW9uQ29udGV4dCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldElkcyIKKyByZXR1cm49ImphdmEudXRpbC5FbnVtZXJhdGlvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlc3Npb24iCisgcmV0dXJuPSJqYXZheC5uZXQuc3NsLlNTTFNlc3Npb24iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2Vzc2lvbklkIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2Vzc2lvbkNhY2hlU2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlc3Npb25UaW1lb3V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2Vzc2lvbkNhY2hlU2l6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2Vzc2lvblRpbWVvdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlY29uZHMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJTU0xTb2NrZXQiCisgZXh0ZW5kcz0iamF2YS5uZXQuU29ja2V0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTU0xTb2NrZXQiCisgdHlwZT0iamF2YXgubmV0LnNzbC5TU0xTb2NrZXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTU0xTb2NrZXQiCisgdHlwZT0iamF2YXgubmV0LnNzbC5TU0xTb2NrZXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJVbmtub3duSG9zdEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuVW5rbm93bkhvc3RFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNTTFNvY2tldCIKKyB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTFNvY2tldCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFkZHJlc3MiIHR5cGU9ImphdmEubmV0LkluZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTU0xTb2NrZXQiCisgdHlwZT0iamF2YXgubmV0LnNzbC5TU0xTb2NrZXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNsaWVudEFkZHJlc3MiIHR5cGU9ImphdmEubmV0LkluZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjbGllbnRQb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJVbmtub3duSG9zdEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuVW5rbm93bkhvc3RFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNTTFNvY2tldCIKKyB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTFNvY2tldCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFkZHJlc3MiIHR5cGU9ImphdmEubmV0LkluZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNsaWVudEFkZHJlc3MiIHR5cGU9ImphdmEubmV0LkluZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjbGllbnRQb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkSGFuZHNoYWtlQ29tcGxldGVkTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJqYXZheC5uZXQuc3NsLkhhbmRzaGFrZUNvbXBsZXRlZExpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVuYWJsZVNlc3Npb25DcmVhdGlvbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbmFibGVkQ2lwaGVyU3VpdGVzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZ1tdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RW5hYmxlZFByb3RvY29scyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5lZWRDbGllbnRBdXRoIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlc3Npb24iCisgcmV0dXJuPSJqYXZheC5uZXQuc3NsLlNTTFNlc3Npb24iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdXBwb3J0ZWRDaXBoZXJTdWl0ZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdXBwb3J0ZWRQcm90b2NvbHMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVc2VDbGllbnRNb2RlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdhbnRDbGllbnRBdXRoIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZUhhbmRzaGFrZUNvbXBsZXRlZExpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0iamF2YXgubmV0LnNzbC5IYW5kc2hha2VDb21wbGV0ZWRMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFbmFibGVTZXNzaW9uQ3JlYXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZsYWciIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RW5hYmxlZENpcGhlclN1aXRlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3VpdGVzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RW5hYmxlZFByb3RvY29scyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdG9jb2xzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TmVlZENsaWVudEF1dGgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5lZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VXNlQ2xpZW50TW9kZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRXYW50Q2xpZW50QXV0aCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id2FudCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydEhhbmRzaGFrZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU1NMU29ja2V0RmFjdG9yeSIKKyBleHRlbmRzPSJqYXZheC5uZXQuU29ja2V0RmFjdG9yeSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1NMU29ja2V0RmFjdG9yeSIKKyB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTFNvY2tldEZhY3RvcnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY3JlYXRlU29ja2V0IgorIHJldHVybj0iamF2YS5uZXQuU29ja2V0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubmV0LlNvY2tldCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdXRvQ2xvc2UiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERlZmF1bHQiCisgcmV0dXJuPSJqYXZheC5uZXQuU29ja2V0RmFjdG9yeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVmYXVsdENpcGhlclN1aXRlcyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1cHBvcnRlZENpcGhlclN1aXRlcyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJUcnVzdE1hbmFnZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iVHJ1c3RNYW5hZ2VyRmFjdG9yeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVHJ1c3RNYW5hZ2VyRmFjdG9yeSIKKyB0eXBlPSJqYXZheC5uZXQuc3NsLlRydXN0TWFuYWdlckZhY3RvcnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWN0b3J5U3BpIiB0eXBlPSJqYXZheC5uZXQuc3NsLlRydXN0TWFuYWdlckZhY3RvcnlTcGkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRBbGdvcml0aG0iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVmYXVsdEFsZ29yaXRobSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YXgubmV0LnNzbC5UcnVzdE1hbmFnZXJGYWN0b3J5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YXgubmV0LnNzbC5UcnVzdE1hbmFnZXJGYWN0b3J5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWxnb3JpdGhtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoUHJvdmlkZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZheC5uZXQuc3NsLlRydXN0TWFuYWdlckZhY3RvcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhbGdvcml0aG0iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByb3ZpZGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb3ZpZGVyIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5Qcm92aWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRydXN0TWFuYWdlcnMiCisgcmV0dXJuPSJqYXZheC5uZXQuc3NsLlRydXN0TWFuYWdlcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5pdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia3MiIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5U3RvcmUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IktleVN0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNwZWMiIHR5cGU9ImphdmF4Lm5ldC5zc2wuTWFuYWdlckZhY3RvcnlQYXJhbWV0ZXJzIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LkludmFsaWRBbGdvcml0aG1QYXJhbWV0ZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVHJ1c3RNYW5hZ2VyRmFjdG9yeVNwaSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUcnVzdE1hbmFnZXJGYWN0b3J5U3BpIgorIHR5cGU9ImphdmF4Lm5ldC5zc2wuVHJ1c3RNYW5hZ2VyRmFjdG9yeVNwaSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVHZXRUcnVzdE1hbmFnZXJzIgorIHJldHVybj0iamF2YXgubmV0LnNzbC5UcnVzdE1hbmFnZXJbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZ2luZUluaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtzIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJLZXlTdG9yZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmdpbmVJbml0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcGVjIiB0eXBlPSJqYXZheC5uZXQuc3NsLk1hbmFnZXJGYWN0b3J5UGFyYW1ldGVycyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEFsZ29yaXRobVBhcmFtZXRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkQWxnb3JpdGhtUGFyYW1ldGVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ilg1MDlFeHRlbmRlZEtleU1hbmFnZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZheC5uZXQuc3NsLlg1MDlLZXlNYW5hZ2VyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJYNTA5RXh0ZW5kZWRLZXlNYW5hZ2VyIgorIHR5cGU9ImphdmF4Lm5ldC5zc2wuWDUwOUV4dGVuZGVkS2V5TWFuYWdlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjaG9vc2VFbmdpbmVDbGllbnRBbGlhcyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleVR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNzdWVycyIgdHlwZT0iamF2YS5zZWN1cml0eS5QcmluY2lwYWxbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5naW5lIiB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTEVuZ2luZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaG9vc2VFbmdpbmVTZXJ2ZXJBbGlhcyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleVR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imlzc3VlcnMiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJpbmNpcGFsW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuZ2luZSIgdHlwZT0iamF2YXgubmV0LnNzbC5TU0xFbmdpbmUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ilg1MDlLZXlNYW5hZ2VyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmF4Lm5ldC5zc2wuS2V5TWFuYWdlciI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImNob29zZUNsaWVudEFsaWFzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlUeXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imlzc3VlcnMiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJpbmNpcGFsW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNvY2tldCIgdHlwZT0iamF2YS5uZXQuU29ja2V0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNob29zZVNlcnZlckFsaWFzIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlUeXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpc3N1ZXJzIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByaW5jaXBhbFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzb2NrZXQiIHR5cGU9ImphdmEubmV0LlNvY2tldCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDZXJ0aWZpY2F0ZUNoYWluIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlDZXJ0aWZpY2F0ZVtdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsaWFzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENsaWVudEFsaWFzZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5VHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNzdWVycyIgdHlwZT0iamF2YS5zZWN1cml0eS5QcmluY2lwYWxbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcml2YXRlS2V5IgorIHJldHVybj0iamF2YS5zZWN1cml0eS5Qcml2YXRlS2V5IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsaWFzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlcnZlckFsaWFzZXMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5VHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNzdWVycyIgdHlwZT0iamF2YS5zZWN1cml0eS5QcmluY2lwYWxbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9Ilg1MDlUcnVzdE1hbmFnZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YXgubmV0LnNzbC5UcnVzdE1hbmFnZXIiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJjaGVja0NsaWVudFRydXN0ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYWluIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuWDUwOUNlcnRpZmljYXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF1dGhUeXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDZXJ0aWZpY2F0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrU2VydmVyVHJ1c3RlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhaW4iIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5YNTA5Q2VydGlmaWNhdGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0aFR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNlcnRpZmljYXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWNjZXB0ZWRJc3N1ZXJzIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlDZXJ0aWZpY2F0ZVtdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iamF2YXguc2VjdXJpdHkuYXV0aCIKKz4KKzxjbGFzcyBuYW1lPSJBdXRoUGVybWlzc2lvbiIKKyBleHRlbmRzPSJqYXZhLnNlY3VyaXR5LkJhc2ljUGVybWlzc2lvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXV0aFBlcm1pc3Npb24iCisgdHlwZT0iamF2YXguc2VjdXJpdHkuYXV0aC5BdXRoUGVybWlzc2lvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkF1dGhQZXJtaXNzaW9uIgorIHR5cGU9ImphdmF4LnNlY3VyaXR5LmF1dGguQXV0aFBlcm1pc3Npb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb25zIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRGVzdHJveUZhaWxlZEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGVzdHJveUZhaWxlZEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC5zZWN1cml0eS5hdXRoLkRlc3Ryb3lGYWlsZWRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEZXN0cm95RmFpbGVkRXhjZXB0aW9uIgorIHR5cGU9ImphdmF4LnNlY3VyaXR5LmF1dGguRGVzdHJveUZhaWxlZEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iRGVzdHJveWFibGUiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJkZXN0cm95IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJEZXN0cm95RmFpbGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5zZWN1cml0eS5hdXRoLkRlc3Ryb3lGYWlsZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNEZXN0cm95ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlByaXZhdGVDcmVkZW50aWFsUGVybWlzc2lvbiIKKyBleHRlbmRzPSJqYXZhLnNlY3VyaXR5LlBlcm1pc3Npb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByaXZhdGVDcmVkZW50aWFsUGVybWlzc2lvbiIKKyB0eXBlPSJqYXZheC5zZWN1cml0eS5hdXRoLlByaXZhdGVDcmVkZW50aWFsUGVybWlzc2lvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImVxdWFscyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iaiIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBY3Rpb25zIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDcmVkZW50aWFsQ2xhc3MiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByaW5jaXBhbHMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW11bXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNoQ29kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbXBsaWVzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGVybWlzc2lvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5QZXJtaXNzaW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlN1YmplY3QiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3ViamVjdCIKKyB0eXBlPSJqYXZheC5zZWN1cml0eS5hdXRoLlN1YmplY3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdWJqZWN0IgorIHR5cGU9ImphdmF4LnNlY3VyaXR5LmF1dGguU3ViamVjdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlYWRPbmx5IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdWJqUHJpbmNpcGFscyIgdHlwZT0iamF2YS51dGlsLlNldCZsdDs/IGV4dGVuZHMgamF2YS5zZWN1cml0eS5QcmluY2lwYWwmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwdWJDcmVkZW50aWFscyIgdHlwZT0iamF2YS51dGlsLlNldCZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJpdkNyZWRlbnRpYWxzIiB0eXBlPSJqYXZhLnV0aWwuU2V0Jmx0Oz8mZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZG9BcyIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3ViamVjdCIgdHlwZT0iamF2YXguc2VjdXJpdHkuYXV0aC5TdWJqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJpdmlsZWdlZEFjdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkb0FzIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdWJqZWN0IiB0eXBlPSJqYXZheC5zZWN1cml0eS5hdXRoLlN1YmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Qcml2aWxlZ2VkRXhjZXB0aW9uQWN0aW9uIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQcml2aWxlZ2VkQWN0aW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByaXZpbGVnZWRBY3Rpb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZG9Bc1ByaXZpbGVnZWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN1YmplY3QiIHR5cGU9ImphdmF4LnNlY3VyaXR5LmF1dGguU3ViamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByaXZpbGVnZWRBY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImphdmEuc2VjdXJpdHkuQWNjZXNzQ29udHJvbENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZG9Bc1ByaXZpbGVnZWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN1YmplY3QiIHR5cGU9ImphdmF4LnNlY3VyaXR5LmF1dGguU3ViamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlByaXZpbGVnZWRFeGNlcHRpb25BY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9ImphdmEuc2VjdXJpdHkuQWNjZXNzQ29udHJvbENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlByaXZpbGVnZWRBY3Rpb25FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuUHJpdmlsZWdlZEFjdGlvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcmluY2lwYWxzIgorIHJldHVybj0iamF2YS51dGlsLlNldCZsdDtqYXZhLnNlY3VyaXR5LlByaW5jaXBhbCZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJpbmNpcGFscyIKKyByZXR1cm49ImphdmEudXRpbC5TZXQmbHQ7VCZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDtUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcml2YXRlQ3JlZGVudGlhbHMiCisgcmV0dXJuPSJqYXZhLnV0aWwuU2V0Jmx0O2phdmEubGFuZy5PYmplY3QmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByaXZhdGVDcmVkZW50aWFscyIKKyByZXR1cm49ImphdmEudXRpbC5TZXQmbHQ7VCZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImMiIHR5cGU9ImphdmEubGFuZy5DbGFzcyZsdDtUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQdWJsaWNDcmVkZW50aWFscyIKKyByZXR1cm49ImphdmEudXRpbC5TZXQmbHQ7amF2YS5sYW5nLk9iamVjdCZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHVibGljQ3JlZGVudGlhbHMiCisgcmV0dXJuPSJqYXZhLnV0aWwuU2V0Jmx0O1QmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7VCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3ViamVjdCIKKyByZXR1cm49ImphdmF4LnNlY3VyaXR5LmF1dGguU3ViamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJqYXZhLnNlY3VyaXR5LkFjY2Vzc0NvbnRyb2xDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUmVhZE9ubHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJlYWRPbmx5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTdWJqZWN0RG9tYWluQ29tYmluZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5Eb21haW5Db21iaW5lciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3ViamVjdERvbWFpbkNvbWJpbmVyIgorIHR5cGU9ImphdmF4LnNlY3VyaXR5LmF1dGguU3ViamVjdERvbWFpbkNvbWJpbmVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3ViamVjdCIgdHlwZT0iamF2YXguc2VjdXJpdHkuYXV0aC5TdWJqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY29tYmluZSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHJvdGVjdGlvbkRvbWFpbltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdXJyZW50RG9tYWlucyIgdHlwZT0iamF2YS5zZWN1cml0eS5Qcm90ZWN0aW9uRG9tYWluW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFzc2lnbmVkRG9tYWlucyIgdHlwZT0iamF2YS5zZWN1cml0eS5Qcm90ZWN0aW9uRG9tYWluW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3ViamVjdCIKKyByZXR1cm49ImphdmF4LnNlY3VyaXR5LmF1dGguU3ViamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImphdmF4LnNlY3VyaXR5LmF1dGguY2FsbGJhY2siCis+Cis8aW50ZXJmYWNlIG5hbWU9IkNhbGxiYWNrIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJDYWxsYmFja0hhbmRsZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJoYW5kbGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbGxiYWNrcyIgdHlwZT0iamF2YXguc2VjdXJpdHkuYXV0aC5jYWxsYmFjay5DYWxsYmFja1tdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iVW5zdXBwb3J0ZWRDYWxsYmFja0V4Y2VwdGlvbiIgdHlwZT0iamF2YXguc2VjdXJpdHkuYXV0aC5jYWxsYmFjay5VbnN1cHBvcnRlZENhbGxiYWNrRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJQYXNzd29yZENhbGxiYWNrIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmF4LnNlY3VyaXR5LmF1dGguY2FsbGJhY2suQ2FsbGJhY2siPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBhc3N3b3JkQ2FsbGJhY2siCisgdHlwZT0iamF2YXguc2VjdXJpdHkuYXV0aC5jYWxsYmFjay5QYXNzd29yZENhbGxiYWNrIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvbXB0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlY2hvT24iIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbGVhclBhc3N3b3JkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXNzd29yZCIKKyByZXR1cm49ImNoYXJbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm9tcHQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRWNob09uIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQYXNzd29yZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhc3N3b3JkIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVW5zdXBwb3J0ZWRDYWxsYmFja0V4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVW5zdXBwb3J0ZWRDYWxsYmFja0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC5zZWN1cml0eS5hdXRoLmNhbGxiYWNrLlVuc3VwcG9ydGVkQ2FsbGJhY2tFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsYmFjayIgdHlwZT0iamF2YXguc2VjdXJpdHkuYXV0aC5jYWxsYmFjay5DYWxsYmFjayI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVW5zdXBwb3J0ZWRDYWxsYmFja0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC5zZWN1cml0eS5hdXRoLmNhbGxiYWNrLlVuc3VwcG9ydGVkQ2FsbGJhY2tFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsYmFjayIgdHlwZT0iamF2YXguc2VjdXJpdHkuYXV0aC5jYWxsYmFjay5DYWxsYmFjayI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldENhbGxiYWNrIgorIHJldHVybj0iamF2YXguc2VjdXJpdHkuYXV0aC5jYWxsYmFjay5DYWxsYmFjayIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImphdmF4LnNlY3VyaXR5LmF1dGgubG9naW4iCis+Cis8Y2xhc3MgbmFtZT0iTG9naW5FeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5zZWN1cml0eS5HZW5lcmFsU2VjdXJpdHlFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMb2dpbkV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC5zZWN1cml0eS5hdXRoLmxvZ2luLkxvZ2luRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTG9naW5FeGNlcHRpb24iCisgdHlwZT0iamF2YXguc2VjdXJpdHkuYXV0aC5sb2dpbi5Mb2dpbkV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImphdmF4LnNlY3VyaXR5LmF1dGgueDUwMCIKKz4KKzxjbGFzcyBuYW1lPSJYNTAwUHJpbmNpcGFsIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5QcmluY2lwYWwiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ilg1MDBQcmluY2lwYWwiCisgdHlwZT0iamF2YXguc2VjdXJpdHkuYXV0aC54NTAwLlg1MDBQcmluY2lwYWwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ilg1MDBQcmluY2lwYWwiCisgdHlwZT0iamF2YXguc2VjdXJpdHkuYXV0aC54NTAwLlg1MDBQcmluY2lwYWwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbiIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iWDUwMFByaW5jaXBhbCIKKyB0eXBlPSJqYXZheC5zZWN1cml0eS5hdXRoLng1MDAuWDUwMFByaW5jaXBhbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRFbmNvZGVkIgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDQU5PTklDQUwiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Q0FOT05JQ0FMJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJGQzE3NzkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7UkZDMTc3OSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRkMyMjUzIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O1JGQzIyNTMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iamF2YXguc2VjdXJpdHkuY2VydCIKKz4KKzxjbGFzcyBuYW1lPSJDZXJ0aWZpY2F0ZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDZXJ0aWZpY2F0ZSIKKyB0eXBlPSJqYXZheC5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEVuY29kZWQiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iQ2VydGlmaWNhdGVFbmNvZGluZ0V4Y2VwdGlvbiIgdHlwZT0iamF2YXguc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUVuY29kaW5nRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFB1YmxpY0tleSIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHVibGljS2V5IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmVyaWZ5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEuc2VjdXJpdHkuUHVibGljS2V5Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDZXJ0aWZpY2F0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YXguc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hQcm92aWRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hQcm92aWRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU2lnbmF0dXJlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2ZXJpZnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5zZWN1cml0eS5QdWJsaWNLZXkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNpZ1Byb3ZpZGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDZXJ0aWZpY2F0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YXguc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW52YWxpZEtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5JbnZhbGlkS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hQcm92aWRlckV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hQcm92aWRlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU2lnbmF0dXJlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlNpZ25hdHVyZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDZXJ0aWZpY2F0ZUVuY29kaW5nRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmF4LnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDZXJ0aWZpY2F0ZUVuY29kaW5nRXhjZXB0aW9uIgorIHR5cGU9ImphdmF4LnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFbmNvZGluZ0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2VydGlmaWNhdGVFbmNvZGluZ0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlRW5jb2RpbmdFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2VydGlmaWNhdGVFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLkV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNlcnRpZmljYXRlRXhjZXB0aW9uIgorIHR5cGU9ImphdmF4LnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNlcnRpZmljYXRlRXhjZXB0aW9uIgorIHR5cGU9ImphdmF4LnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2VydGlmaWNhdGVFeHBpcmVkRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmF4LnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDZXJ0aWZpY2F0ZUV4cGlyZWRFeGNlcHRpb24iCisgdHlwZT0iamF2YXguc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUV4cGlyZWRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNlcnRpZmljYXRlRXhwaXJlZEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlRXhwaXJlZEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDZXJ0aWZpY2F0ZU5vdFlldFZhbGlkRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmF4LnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDZXJ0aWZpY2F0ZU5vdFlldFZhbGlkRXhjZXB0aW9uIgorIHR5cGU9ImphdmF4LnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVOb3RZZXRWYWxpZEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2VydGlmaWNhdGVOb3RZZXRWYWxpZEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlTm90WWV0VmFsaWRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2VydGlmaWNhdGVQYXJzaW5nRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmF4LnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDZXJ0aWZpY2F0ZVBhcnNpbmdFeGNlcHRpb24iCisgdHlwZT0iamF2YXguc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZVBhcnNpbmdFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNlcnRpZmljYXRlUGFyc2luZ0V4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlUGFyc2luZ0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJYNTA5Q2VydGlmaWNhdGUiCisgZXh0ZW5kcz0iamF2YXguc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iWDUwOUNlcnRpZmljYXRlIgorIHR5cGU9ImphdmF4LnNlY3VyaXR5LmNlcnQuWDUwOUNlcnRpZmljYXRlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNoZWNrVmFsaWRpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkNlcnRpZmljYXRlRXhwaXJlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YXguc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZUV4cGlyZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkNlcnRpZmljYXRlTm90WWV0VmFsaWRFeGNlcHRpb24iIHR5cGU9ImphdmF4LnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVOb3RZZXRWYWxpZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGVja1ZhbGlkaXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRlIiB0eXBlPSJqYXZhLnV0aWwuRGF0ZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2VydGlmaWNhdGVFeHBpcmVkRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlRXhwaXJlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iQ2VydGlmaWNhdGVOb3RZZXRWYWxpZEV4Y2VwdGlvbiIgdHlwZT0iamF2YXguc2VjdXJpdHkuY2VydC5DZXJ0aWZpY2F0ZU5vdFlldFZhbGlkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluc3RhbmNlIgorIHJldHVybj0iamF2YXguc2VjdXJpdHkuY2VydC5YNTA5Q2VydGlmaWNhdGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpblN0cmVhbSIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2VydGlmaWNhdGVFeGNlcHRpb24iIHR5cGU9ImphdmF4LnNlY3VyaXR5LmNlcnQuQ2VydGlmaWNhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZheC5zZWN1cml0eS5jZXJ0Llg1MDlDZXJ0aWZpY2F0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNlcnREYXRhIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNlcnRpZmljYXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5zZWN1cml0eS5jZXJ0LkNlcnRpZmljYXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElzc3VlckROIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5QcmluY2lwYWwiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROb3RBZnRlciIKKyByZXR1cm49ImphdmEudXRpbC5EYXRlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Tm90QmVmb3JlIgorIHJldHVybj0iamF2YS51dGlsLkRhdGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZXJpYWxOdW1iZXIiCisgcmV0dXJuPSJqYXZhLm1hdGguQmlnSW50ZWdlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNpZ0FsZ05hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2lnQWxnT0lEIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNpZ0FsZ1BhcmFtcyIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1YmplY3RETiIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHJpbmNpcGFsIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmVyc2lvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iamF2YXguc3FsIgorPgorPGNsYXNzIG5hbWU9IkNvbm5lY3Rpb25FdmVudCIKKyBleHRlbmRzPSJqYXZhLnV0aWwuRXZlbnRPYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb25uZWN0aW9uRXZlbnQiCisgdHlwZT0iamF2YXguc3FsLkNvbm5lY3Rpb25FdmVudCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUNvbm5lY3Rpb24iIHR5cGU9ImphdmF4LnNxbC5Qb29sZWRDb25uZWN0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb25uZWN0aW9uRXZlbnQiCisgdHlwZT0iamF2YXguc3FsLkNvbm5lY3Rpb25FdmVudCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUNvbm5lY3Rpb24iIHR5cGU9ImphdmF4LnNxbC5Qb29sZWRDb25uZWN0aW9uIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldFNRTEV4Y2VwdGlvbiIKKyByZXR1cm49ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ29ubmVjdGlvbkV2ZW50TGlzdGVuZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLkV2ZW50TGlzdGVuZXIiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJjb25uZWN0aW9uQ2xvc2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVFdmVudCIgdHlwZT0iamF2YXguc3FsLkNvbm5lY3Rpb25FdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb25uZWN0aW9uRXJyb3JPY2N1cnJlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlRXZlbnQiIHR5cGU9ImphdmF4LnNxbC5Db25uZWN0aW9uRXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJDb25uZWN0aW9uUG9vbERhdGFTb3VyY2UiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRMb2dXcml0ZXIiCisgcmV0dXJuPSJqYXZhLmlvLlByaW50V3JpdGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvZ2luVGltZW91dCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQb29sZWRDb25uZWN0aW9uIgorIHJldHVybj0iamF2YXguc3FsLlBvb2xlZENvbm5lY3Rpb24iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UG9vbGVkQ29ubmVjdGlvbiIKKyByZXR1cm49ImphdmF4LnNxbC5Qb29sZWRDb25uZWN0aW9uIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVVzZXIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVBhc3N3b3JkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMb2dXcml0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVdyaXRlciIgdHlwZT0iamF2YS5pby5QcmludFdyaXRlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TG9naW5UaW1lb3V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVUaW1lb3V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iRGF0YVNvdXJjZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldENvbm5lY3Rpb24iCisgcmV0dXJuPSJqYXZhLnNxbC5Db25uZWN0aW9uIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbm5lY3Rpb24iCisgcmV0dXJuPSJqYXZhLnNxbC5Db25uZWN0aW9uIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVVzZXJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVQYXNzd29yZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9nV3JpdGVyIgorIHJldHVybj0iamF2YS5pby5QcmludFdyaXRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2dpblRpbWVvdXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TG9nV3JpdGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVXcml0ZXIiIHR5cGU9ImphdmEuaW8uUHJpbnRXcml0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldExvZ2luVGltZW91dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlVGltZW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlBvb2xlZENvbm5lY3Rpb24iCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJhZGRDb25uZWN0aW9uRXZlbnRMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlTGlzdGVuZXIiIHR5cGU9ImphdmF4LnNxbC5Db25uZWN0aW9uRXZlbnRMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29ubmVjdGlvbiIKKyByZXR1cm49ImphdmEuc3FsLkNvbm5lY3Rpb24iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlQ29ubmVjdGlvbkV2ZW50TGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUxpc3RlbmVyIiB0eXBlPSJqYXZheC5zcWwuQ29ubmVjdGlvbkV2ZW50TGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJSb3dTZXQiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zcWwuUmVzdWx0U2V0Ij4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iYWRkUm93U2V0TGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUxpc3RlbmVyIiB0eXBlPSJqYXZheC5zcWwuUm93U2V0TGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJQYXJhbWV0ZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJleGVjdXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb21tYW5kIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERhdGFTb3VyY2VOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVzY2FwZVByb2Nlc3NpbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1heEZpZWxkU2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYXhSb3dzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhc3N3b3JkIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFF1ZXJ5VGltZW91dCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUcmFuc2FjdGlvbklzb2xhdGlvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFR5cGVNYXAiCisgcmV0dXJuPSJqYXZhLnV0aWwuTWFwJmx0O2phdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5DbGFzcyZsdDs/Jmd0OyZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VXJsIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVc2VybmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1JlYWRPbmx5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZVJvd1NldExpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVMaXN0ZW5lciIgdHlwZT0iamF2YXguc3FsLlJvd1NldExpc3RlbmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFycmF5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVBcnJheSIgdHlwZT0iamF2YS5zcWwuQXJyYXkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEFzY2lpU3RyZWFtIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVJbnB1dFN0cmVhbSIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEJpZ0RlY2ltYWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUJpZ0RlY2ltYWwiIHR5cGU9ImphdmEubWF0aC5CaWdEZWNpbWFsIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCaW5hcnlTdHJlYW0iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUlucHV0U3RyZWFtIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QmxvYiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlQmxvYiIgdHlwZT0iamF2YS5zcWwuQmxvYiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Qm9vbGVhbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlQm9vbGVhbiIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Qnl0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlQnl0ZSIgdHlwZT0iYnl0ZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Qnl0ZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUJ5dGVBcnJheSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDaGFyYWN0ZXJTdHJlYW0iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVJlYWRlciIgdHlwZT0iamF2YS5pby5SZWFkZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDbG9iIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVDbG9iIiB0eXBlPSJqYXZhLnNxbC5DbG9iIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb21tYW5kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbmN1cnJlbmN5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb25jdXJyZW5jeSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREYXRhU291cmNlTmFtZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlRGF0ZSIgdHlwZT0iamF2YS5zcWwuRGF0ZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlRGF0ZSIgdHlwZT0iamF2YS5zcWwuRGF0ZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlQ2FsZW5kYXIiIHR5cGU9ImphdmEudXRpbC5DYWxlbmRhciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RG91YmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVEb3VibGUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RXNjYXBlUHJvY2Vzc2luZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5hYmxlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGbG9hdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlRmxvYXQiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUludGVnZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TG9uZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlTG9uZyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWF4RmllbGRTaXplIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWF4Um93cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE51bGwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNxbFR5cGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TnVsbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3FsVHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0T2JqZWN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVPYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9iamVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlT2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXRTcWxUeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE9iamVjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlT2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXRTcWxUeXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNjYWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBhc3N3b3JkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXNzd29yZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UXVlcnlUaW1lb3V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWNvbmRzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJlYWRPbmx5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWFkT25seSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UmVmIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVSZWYiIHR5cGU9ImphdmEuc3FsLlJlZiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2hvcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVNob3J0IiB0eXBlPSJzaG9ydCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RyaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVTdHJpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRpbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVRpbWUiIHR5cGU9ImphdmEuc3FsLlRpbWUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRpbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlckluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVRpbWUiIHR5cGU9ImphdmEuc3FsLlRpbWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUNhbGVuZGFyIiB0eXBlPSJqYXZhLnV0aWwuQ2FsZW5kYXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRpbWVzdGFtcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlVGltZXN0YW1wIiB0eXBlPSJqYXZhLnNxbC5UaW1lc3RhbXAiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRpbWVzdGFtcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVySW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlVGltZXN0YW1wIiB0eXBlPSJqYXZhLnNxbC5UaW1lc3RhbXAiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUNhbGVuZGFyIiB0eXBlPSJqYXZhLnV0aWwuQ2FsZW5kYXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRyYW5zYWN0aW9uSXNvbGF0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZXZlbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUeXBlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFR5cGVNYXAiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVR5cGVNYXAiIHR5cGU9ImphdmEudXRpbC5NYXAmbHQ7amF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLkNsYXNzJmx0Oz8mZ3Q7Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VXJsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVVUkwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFVzZXJuYW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVVc2VybmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlJvd1NldEV2ZW50IgorIGV4dGVuZHM9ImphdmEudXRpbC5FdmVudE9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJvd1NldEV2ZW50IgorIHR5cGU9ImphdmF4LnNxbC5Sb3dTZXRFdmVudCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVNvdXJjZSIgdHlwZT0iamF2YXguc3FsLlJvd1NldCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJSb3dTZXRJbnRlcm5hbCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldENvbm5lY3Rpb24iCisgcmV0dXJuPSJqYXZhLnNxbC5Db25uZWN0aW9uIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9yaWdpbmFsIgorIHJldHVybj0iamF2YS5zcWwuUmVzdWx0U2V0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE9yaWdpbmFsUm93IgorIHJldHVybj0iamF2YS5zcWwuUmVzdWx0U2V0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtcyIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3RbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNZXRhRGF0YSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlTWV0YURhdGEiIHR5cGU9ImphdmF4LnNxbC5Sb3dTZXRNZXRhRGF0YSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJSb3dTZXRMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuRXZlbnRMaXN0ZW5lciI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImN1cnNvck1vdmVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVFdmVudCIgdHlwZT0iamF2YXguc3FsLlJvd1NldEV2ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJvd0NoYW5nZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUV2ZW50IiB0eXBlPSJqYXZheC5zcWwuUm93U2V0RXZlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icm93U2V0Q2hhbmdlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlRXZlbnQiIHR5cGU9ImphdmF4LnNxbC5Sb3dTZXRFdmVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlJvd1NldE1ldGFEYXRhIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc3FsLlJlc3VsdFNldE1ldGFEYXRhIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0ic2V0QXV0b0luY3JlbWVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0b0luY3JlbWVudCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2FzZVNlbnNpdGl2ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FzZVNlbnNpdGl2ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2F0YWxvZ05hbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdGFsb2dOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb2x1bW5Db3VudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uQ291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29sdW1uRGlzcGxheVNpemUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRpc3BsYXlTaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbHVtbkxhYmVsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVMYWJlbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29sdW1uTmFtZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlQ29sdW1uTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29sdW1uVHlwZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlU1FMVHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb2x1bW5UeXBlTmFtZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlVHlwZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEN1cnJlbmN5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpc0N1cnJlbmN5IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXROdWxsYWJsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibnVsbGFiaWxpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UHJlY2lzaW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVQcmVjaXNpb24iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2NhbGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVNjYWxlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNjaGVtYU5hbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRoZVNjaGVtYU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNlYXJjaGFibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbHVtbkluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlzU2VhcmNoYWJsZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2lnbmVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpc1NpZ25lZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1FMRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNxbC5TUUxFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGFibGVOYW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVUYWJsZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iUm93U2V0UmVhZGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0icmVhZERhdGEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUNhbGxlciIgdHlwZT0iamF2YXguc3FsLlJvd1NldEludGVybmFsIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTUUxFeGNlcHRpb24iIHR5cGU9ImphdmEuc3FsLlNRTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlJvd1NldFdyaXRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9IndyaXRlRGF0YSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlUm93U2V0IiB0eXBlPSJqYXZheC5zcWwuUm93U2V0SW50ZXJuYWwiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNRTEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zcWwuU1FMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImphdmF4LnhtbCIKKz4KKzxjbGFzcyBuYW1lPSJYTUxDb25zdGFudHMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iREVGQVVMVF9OU19QUkVGSVgiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZFQVRVUkVfU0VDVVJFX1BST0NFU1NJTkciCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cDovL2phdmF4LnhtbC5YTUxDb25zdGFudHMvZmVhdHVyZS9zZWN1cmUtcHJvY2Vzc2luZyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOVUxMX05TX1VSSSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDsmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkVMQVhOR19OU19VUkkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cDovL3JlbGF4bmcub3JnL25zL3N0cnVjdHVyZS8xLjAmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVzNDX1hNTF9TQ0hFTUFfSU5TVEFOQ0VfTlNfVVJJIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlczQ19YTUxfU0NIRU1BX05TX1VSSSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXM0NfWFBBVEhfREFUQVRZUEVfTlNfVVJJIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHA6Ly93d3cudzMub3JnLzIwMDMvMTEveHBhdGgtZGF0YXR5cGVzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlhNTE5TX0FUVFJJQlVURSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt4bWxucyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJYTUxOU19BVFRSSUJVVEVfTlNfVVJJIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHA6Ly93d3cudzMub3JnLzIwMDAveG1sbnMvJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlhNTF9EVERfTlNfVVJJIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHA6Ly93d3cudzMub3JnL1RSL1JFQy14bWwmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iWE1MX05TX1BSRUZJWCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt4bWwmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iWE1MX05TX1VSSSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwOi8vd3d3LnczLm9yZy9YTUwvMTk5OC9uYW1lc3BhY2UmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iamF2YXgueG1sLmRhdGF0eXBlIgorPgorPGNsYXNzIG5hbWU9IkRhdGF0eXBlQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGF0YXR5cGVDb25maWd1cmF0aW9uRXhjZXB0aW9uIgorIHR5cGU9ImphdmF4LnhtbC5kYXRhdHlwZS5EYXRhdHlwZUNvbmZpZ3VyYXRpb25FeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEYXRhdHlwZUNvbmZpZ3VyYXRpb25FeGNlcHRpb24iCisgdHlwZT0iamF2YXgueG1sLmRhdGF0eXBlLkRhdGF0eXBlQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRhdGF0eXBlQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC54bWwuZGF0YXR5cGUuRGF0YXR5cGVDb25maWd1cmF0aW9uRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRhdGF0eXBlQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC54bWwuZGF0YXR5cGUuRGF0YXR5cGVDb25maWd1cmF0aW9uRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEYXRhdHlwZUNvbnN0YW50cyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxmaWVsZCBuYW1lPSJBUFJJTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVVHVVNUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVRFIgorIHR5cGU9ImphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREFURVRJTUUiCisgdHlwZT0iamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVlTIgorIHR5cGU9ImphdmF4LnhtbC5kYXRhdHlwZS5EYXRhdHlwZUNvbnN0YW50cy5GaWVsZCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUNFTUJFUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRVUkFUSU9OIgorIHR5cGU9ImphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRFVSQVRJT05fREFZVElNRSIKKyB0eXBlPSJqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRVUkFUSU9OX1lFQVJNT05USCIKKyB0eXBlPSJqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVRVUFMIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGRUJSVUFSWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRklFTERfVU5ERUZJTkVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTIxNDc0ODM2NDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0RBWSIKKyB0eXBlPSJqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdNT05USCIKKyB0eXBlPSJqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdNT05USERBWSIKKyB0eXBlPSJqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdSRUFURVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkdZRUFSIgorIHR5cGU9ImphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR1lFQVJNT05USCIKKyB0eXBlPSJqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhPVVJTIgorIHR5cGU9ImphdmF4LnhtbC5kYXRhdHlwZS5EYXRhdHlwZUNvbnN0YW50cy5GaWVsZCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTkRFVEVSTUlOQVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJKQU5VQVJZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJKVUxZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJKVU5FIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJMRVNTRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNQVJDSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUFYX1RJTUVaT05FX09GRlNFVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii04NDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUFZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNSU5VVEVTIgorIHR5cGU9ImphdmF4LnhtbC5kYXRhdHlwZS5EYXRhdHlwZUNvbnN0YW50cy5GaWVsZCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNSU5fVElNRVpPTkVfT0ZGU0VUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iODQwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1PTlRIUyIKKyB0eXBlPSJqYXZheC54bWwuZGF0YXR5cGUuRGF0YXR5cGVDb25zdGFudHMuRmllbGQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTk9WRU1CRVIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJPQ1RPQkVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VDT05EUyIKKyB0eXBlPSJqYXZheC54bWwuZGF0YXR5cGUuRGF0YXR5cGVDb25zdGFudHMuRmllbGQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VQVEVNQkVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUSU1FIgorIHR5cGU9ImphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iWUVBUlMiCisgdHlwZT0iamF2YXgueG1sLmRhdGF0eXBlLkRhdGF0eXBlQ29uc3RhbnRzLkZpZWxkIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEYXRhdHlwZUNvbnN0YW50cy5GaWVsZCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRJZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEYXRhdHlwZUZhY3RvcnkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGF0YXR5cGVGYWN0b3J5IgorIHR5cGU9ImphdmF4LnhtbC5kYXRhdHlwZS5EYXRhdHlwZUZhY3RvcnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ibmV3RHVyYXRpb24iCisgcmV0dXJuPSJqYXZheC54bWwuZGF0YXR5cGUuRHVyYXRpb24iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGV4aWNhbFJlcHJlc2VudGF0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld0R1cmF0aW9uIgorIHJldHVybj0iamF2YXgueG1sLmRhdGF0eXBlLkR1cmF0aW9uIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImR1cmF0aW9uSW5NaWxsaVNlY29uZHMiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3RHVyYXRpb24iCisgcmV0dXJuPSJqYXZheC54bWwuZGF0YXR5cGUuRHVyYXRpb24iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNQb3NpdGl2ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ieWVhcnMiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb250aHMiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXlzIiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaG91cnMiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaW51dGVzIiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2Vjb25kcyIgdHlwZT0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3RHVyYXRpb24iCisgcmV0dXJuPSJqYXZheC54bWwuZGF0YXR5cGUuRHVyYXRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlzUG9zaXRpdmUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InllYXJzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vbnRocyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXlzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhvdXJzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbnV0ZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2Vjb25kcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld0R1cmF0aW9uRGF5VGltZSIKKyByZXR1cm49ImphdmF4LnhtbC5kYXRhdHlwZS5EdXJhdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGV4aWNhbFJlcHJlc2VudGF0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld0R1cmF0aW9uRGF5VGltZSIKKyByZXR1cm49ImphdmF4LnhtbC5kYXRhdHlwZS5EdXJhdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHVyYXRpb25Jbk1pbGxpc2Vjb25kcyIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdEdXJhdGlvbkRheVRpbWUiCisgcmV0dXJuPSJqYXZheC54bWwuZGF0YXR5cGUuRHVyYXRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlzUG9zaXRpdmUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRheSIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhvdXIiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaW51dGUiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWNvbmQiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld0R1cmF0aW9uRGF5VGltZSIKKyByZXR1cm49ImphdmF4LnhtbC5kYXRhdHlwZS5EdXJhdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNQb3NpdGl2ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhvdXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWludXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlY29uZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld0R1cmF0aW9uWWVhck1vbnRoIgorIHJldHVybj0iamF2YXgueG1sLmRhdGF0eXBlLkR1cmF0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZXhpY2FsUmVwcmVzZW50YXRpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3RHVyYXRpb25ZZWFyTW9udGgiCisgcmV0dXJuPSJqYXZheC54bWwuZGF0YXR5cGUuRHVyYXRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImR1cmF0aW9uSW5NaWxsaXNlY29uZHMiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3RHVyYXRpb25ZZWFyTW9udGgiCisgcmV0dXJuPSJqYXZheC54bWwuZGF0YXR5cGUuRHVyYXRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlzUG9zaXRpdmUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InllYXIiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb250aCIgdHlwZT0iamF2YS5tYXRoLkJpZ0ludGVnZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3RHVyYXRpb25ZZWFyTW9udGgiCisgcmV0dXJuPSJqYXZheC54bWwuZGF0YXR5cGUuRHVyYXRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlzUG9zaXRpdmUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InllYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9udGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdJbnN0YW5jZSIKKyByZXR1cm49ImphdmF4LnhtbC5kYXRhdHlwZS5EYXRhdHlwZUZhY3RvcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iRGF0YXR5cGVDb25maWd1cmF0aW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZheC54bWwuZGF0YXR5cGUuRGF0YXR5cGVDb25maWd1cmF0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1hNTEdyZWdvcmlhbkNhbGVuZGFyIgorIHJldHVybj0iamF2YXgueG1sLmRhdGF0eXBlLlhNTEdyZWdvcmlhbkNhbGVuZGFyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3WE1MR3JlZ29yaWFuQ2FsZW5kYXIiCisgcmV0dXJuPSJqYXZheC54bWwuZGF0YXR5cGUuWE1MR3JlZ29yaWFuQ2FsZW5kYXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGV4aWNhbFJlcHJlc2VudGF0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1hNTEdyZWdvcmlhbkNhbGVuZGFyIgorIHJldHVybj0iamF2YXgueG1sLmRhdGF0eXBlLlhNTEdyZWdvcmlhbkNhbGVuZGFyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbCIgdHlwZT0iamF2YS51dGlsLkdyZWdvcmlhbkNhbGVuZGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1hNTEdyZWdvcmlhbkNhbGVuZGFyIgorIHJldHVybj0iamF2YXgueG1sLmRhdGF0eXBlLlhNTEdyZWdvcmlhbkNhbGVuZGFyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InllYXIiIHR5cGU9ImphdmEubWF0aC5CaWdJbnRlZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb250aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaG91ciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaW51dGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2Vjb25kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZyYWN0aW9uYWxTZWNvbmQiIHR5cGU9ImphdmEubWF0aC5CaWdEZWNpbWFsIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lem9uZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1hNTEdyZWdvcmlhbkNhbGVuZGFyIgorIHJldHVybj0iamF2YXgueG1sLmRhdGF0eXBlLlhNTEdyZWdvcmlhbkNhbGVuZGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ5ZWFyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vbnRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRheSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJob3VyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbnV0ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWNvbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWlsbGlzZWNvbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZXpvbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdYTUxHcmVnb3JpYW5DYWxlbmRhckRhdGUiCisgcmV0dXJuPSJqYXZheC54bWwuZGF0YXR5cGUuWE1MR3JlZ29yaWFuQ2FsZW5kYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InllYXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9udGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWV6b25lIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3WE1MR3JlZ29yaWFuQ2FsZW5kYXJUaW1lIgorIHJldHVybj0iamF2YXgueG1sLmRhdGF0eXBlLlhNTEdyZWdvcmlhbkNhbGVuZGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3VycyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaW51dGVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlY29uZHMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZXpvbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdYTUxHcmVnb3JpYW5DYWxlbmRhclRpbWUiCisgcmV0dXJuPSJqYXZheC54bWwuZGF0YXR5cGUuWE1MR3JlZ29yaWFuQ2FsZW5kYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhvdXJzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbnV0ZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2Vjb25kcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmcmFjdGlvbmFsU2Vjb25kIiB0eXBlPSJqYXZhLm1hdGguQmlnRGVjaW1hbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZXpvbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdYTUxHcmVnb3JpYW5DYWxlbmRhclRpbWUiCisgcmV0dXJuPSJqYXZheC54bWwuZGF0YXR5cGUuWE1MR3JlZ29yaWFuQ2FsZW5kYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhvdXJzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbnV0ZXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2Vjb25kcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaWxsaXNlY29uZHMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZXpvbmUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkRBVEFUWVBFRkFDVE9SWV9JTVBMRU1FTlRBVElPTl9DTEFTUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRBVEFUWVBFRkFDVE9SWV9QUk9QRVJUWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtqYXZheC54bWwuZGF0YXR5cGUuRGF0YXR5cGVGYWN0b3J5JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEdXJhdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEdXJhdGlvbiIKKyB0eXBlPSJqYXZheC54bWwuZGF0YXR5cGUuRHVyYXRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkIgorIHJldHVybj0iamF2YXgueG1sLmRhdGF0eXBlLkR1cmF0aW9uIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJocyIgdHlwZT0iamF2YXgueG1sLmRhdGF0eXBlLkR1cmF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZFRvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYWxlbmRhciIgdHlwZT0iamF2YS51dGlsLkNhbGVuZGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZFRvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0ZSIgdHlwZT0iamF2YS51dGlsLkRhdGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcGFyZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkdXJhdGlvbiIgdHlwZT0iamF2YXgueG1sLmRhdGF0eXBlLkR1cmF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERheXMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmllbGQiCisgcmV0dXJuPSJqYXZhLmxhbmcuTnVtYmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpZWxkIiB0eXBlPSJqYXZheC54bWwuZGF0YXR5cGUuRGF0YXR5cGVDb25zdGFudHMuRmllbGQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SG91cnMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWludXRlcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNb250aHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2Vjb25kcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTaWduIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGltZUluTWlsbGlzIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnRJbnN0YW50IiB0eXBlPSJqYXZhLnV0aWwuQ2FsZW5kYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGltZUluTWlsbGlzIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnRJbnN0YW50IiB0eXBlPSJqYXZhLnV0aWwuRGF0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRYTUxTY2hlbWFUeXBlIgorIHJldHVybj0iamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRZZWFycyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNoQ29kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTG9uZ2VyVGhhbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImR1cmF0aW9uIiB0eXBlPSJqYXZheC54bWwuZGF0YXR5cGUuRHVyYXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTZXQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpZWxkIiB0eXBlPSJqYXZheC54bWwuZGF0YXR5cGUuRGF0YXR5cGVDb25zdGFudHMuRmllbGQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTaG9ydGVyVGhhbiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImR1cmF0aW9uIiB0eXBlPSJqYXZheC54bWwuZGF0YXR5cGUuRHVyYXRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibXVsdGlwbHkiCisgcmV0dXJuPSJqYXZheC54bWwuZGF0YXR5cGUuRHVyYXRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY3RvciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im11bHRpcGx5IgorIHJldHVybj0iamF2YXgueG1sLmRhdGF0eXBlLkR1cmF0aW9uIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY3RvciIgdHlwZT0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmVnYXRlIgorIHJldHVybj0iamF2YXgueG1sLmRhdGF0eXBlLkR1cmF0aW9uIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibm9ybWFsaXplV2l0aCIKKyByZXR1cm49ImphdmF4LnhtbC5kYXRhdHlwZS5EdXJhdGlvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydFRpbWVJbnN0YW50IiB0eXBlPSJqYXZhLnV0aWwuQ2FsZW5kYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3VidHJhY3QiCisgcmV0dXJuPSJqYXZheC54bWwuZGF0YXR5cGUuRHVyYXRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJocyIgdHlwZT0iamF2YXgueG1sLmRhdGF0eXBlLkR1cmF0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlhNTEdyZWdvcmlhbkNhbGVuZGFyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iWE1MR3JlZ29yaWFuQ2FsZW5kYXIiCisgdHlwZT0iamF2YXgueG1sLmRhdGF0eXBlLlhNTEdyZWdvcmlhbkNhbGVuZGFyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZHVyYXRpb24iIHR5cGU9ImphdmF4LnhtbC5kYXRhdHlwZS5EdXJhdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InhtbEdyZWdvcmlhbkNhbGVuZGFyIiB0eXBlPSJqYXZheC54bWwuZGF0YXR5cGUuWE1MR3JlZ29yaWFuQ2FsZW5kYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGF5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RW9uIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFb25BbmRZZWFyIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0ludGVnZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGcmFjdGlvbmFsU2Vjb25kIgorIHJldHVybj0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIb3VyIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWlsbGlzZWNvbmQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWludXRlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TW9udGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZWNvbmQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUaW1lWm9uZSIKKyByZXR1cm49ImphdmEudXRpbC5UaW1lWm9uZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZWZhdWx0Wm9uZW9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRpbWV6b25lIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0WE1MU2NoZW1hVHlwZSIKKyByZXR1cm49ImphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRZZWFyIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNWYWxpZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJub3JtYWxpemUiCisgcmV0dXJuPSJqYXZheC54bWwuZGF0YXR5cGUuWE1MR3JlZ29yaWFuQ2FsZW5kYXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREYXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRheSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZyYWN0aW9uYWxTZWNvbmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZyYWN0aW9uYWwiIHR5cGU9ImphdmEubWF0aC5CaWdEZWNpbWFsIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEhvdXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhvdXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNaWxsaXNlY29uZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWlsbGlzZWNvbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNaW51dGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbnV0ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE1vbnRoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb250aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNlY29uZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2Vjb25kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGltZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhvdXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWludXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlY29uZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRpbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3VyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbnV0ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWNvbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZnJhY3Rpb25hbCIgdHlwZT0iamF2YS5tYXRoLkJpZ0RlY2ltYWwiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGltZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhvdXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWludXRlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlY29uZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtaWxsaXNlY29uZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRpbWV6b25lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRZZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ5ZWFyIiB0eXBlPSJqYXZhLm1hdGguQmlnSW50ZWdlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRZZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ5ZWFyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9HcmVnb3JpYW5DYWxlbmRhciIKKyByZXR1cm49ImphdmEudXRpbC5HcmVnb3JpYW5DYWxlbmRhciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvR3JlZ29yaWFuQ2FsZW5kYXIiCisgcmV0dXJuPSJqYXZhLnV0aWwuR3JlZ29yaWFuQ2FsZW5kYXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZXpvbmUiIHR5cGU9ImphdmEudXRpbC5UaW1lWm9uZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYUxvY2FsZSIgdHlwZT0iamF2YS51dGlsLkxvY2FsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdHMiIHR5cGU9ImphdmF4LnhtbC5kYXRhdHlwZS5YTUxHcmVnb3JpYW5DYWxlbmRhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1hNTEZvcm1hdCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImphdmF4LnhtbC5uYW1lc3BhY2UiCis+Cis8aW50ZXJmYWNlIG5hbWU9Ik5hbWVzcGFjZUNvbnRleHQiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lc3BhY2VVUkkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByZWZpeCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcmVmaXgiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWVzcGFjZVVSSSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcmVmaXhlcyIKKyByZXR1cm49ImphdmEudXRpbC5JdGVyYXRvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lc3BhY2VVUkkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlFOYW1lIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuaW8uU2VyaWFsaXphYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJRTmFtZSIKKyB0eXBlPSJqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXNwYWNlVVJJIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbFBhcnQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlFOYW1lIgorIHR5cGU9ImphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lc3BhY2VVUkkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsUGFydCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlZml4IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJRTmFtZSIKKyB0eXBlPSJqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxQYXJ0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZXF1YWxzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3RUb1Rlc3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9jYWxQYXJ0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lc3BhY2VVUkkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByZWZpeCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzaENvZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0iamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJxTmFtZUFzU3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iamF2YXgueG1sLnBhcnNlcnMiCis+Cis8Y2xhc3MgbmFtZT0iRG9jdW1lbnRCdWlsZGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRvY3VtZW50QnVpbGRlciIKKyB0eXBlPSJqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0RE9NSW1wbGVtZW50YXRpb24iCisgcmV0dXJuPSJvcmcudzNjLmRvbS5ET01JbXBsZW1lbnRhdGlvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNjaGVtYSIKKyByZXR1cm49ImphdmF4LnhtbC52YWxpZGF0aW9uLlNjaGVtYSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc05hbWVzcGFjZUF3YXJlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzVmFsaWRhdGluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1hJbmNsdWRlQXdhcmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld0RvY3VtZW50IgorIHJldHVybj0ib3JnLnczYy5kb20uRG9jdW1lbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZSIKKyByZXR1cm49Im9yZy53M2MuZG9tLkRvY3VtZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpcyIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlIgorIHJldHVybj0ib3JnLnczYy5kb20uRG9jdW1lbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlzIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzeXN0ZW1JZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlIgorIHJldHVybj0ib3JnLnczYy5kb20uRG9jdW1lbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlIgorIHJldHVybj0ib3JnLnczYy5kb20uRG9jdW1lbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImYiIHR5cGU9ImphdmEuaW8uRmlsZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlIgorIHJldHVybj0ib3JnLnczYy5kb20uRG9jdW1lbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXMiIHR5cGU9Im9yZy54bWwuc2F4LklucHV0U291cmNlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVudGl0eVJlc29sdmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlciIgdHlwZT0ib3JnLnhtbC5zYXguRW50aXR5UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RXJyb3JIYW5kbGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlaCIgdHlwZT0ib3JnLnhtbC5zYXguRXJyb3JIYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRvY3VtZW50QnVpbGRlckZhY3RvcnkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRG9jdW1lbnRCdWlsZGVyRmFjdG9yeSIKKyB0eXBlPSJqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXJGYWN0b3J5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEF0dHJpYnV0ZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZlYXR1cmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24iIHR5cGU9ImphdmF4LnhtbC5wYXJzZXJzLlBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2NoZW1hIgorIHJldHVybj0iamF2YXgueG1sLnZhbGlkYXRpb24uU2NoZW1hIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ29hbGVzY2luZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNFeHBhbmRFbnRpdHlSZWZlcmVuY2VzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0lnbm9yaW5nQ29tbWVudHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzSWdub3JpbmdFbGVtZW50Q29udGVudFdoaXRlc3BhY2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTmFtZXNwYWNlQXdhcmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzVmFsaWRhdGluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNYSW5jbHVkZUF3YXJlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdEb2N1bWVudEJ1aWxkZXIiCisgcmV0dXJuPSJqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiIgdHlwZT0iamF2YXgueG1sLnBhcnNlcnMuUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdJbnN0YW5jZSIKKyByZXR1cm49ImphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlckZhY3RvcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBdHRyaWJ1dGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29hbGVzY2luZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvYWxlc2NpbmciIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RXhwYW5kRW50aXR5UmVmZXJlbmNlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGFuZEVudGl0eVJlZiIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGZWF0dXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiIgdHlwZT0iamF2YXgueG1sLnBhcnNlcnMuUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJZ25vcmluZ0NvbW1lbnRzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWdub3JlQ29tbWVudHMiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SWdub3JpbmdFbGVtZW50Q29udGVudFdoaXRlc3BhY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3aGl0ZXNwYWNlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE5hbWVzcGFjZUF3YXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXdhcmVuZXNzIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNjaGVtYSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNjaGVtYSIgdHlwZT0iamF2YXgueG1sLnZhbGlkYXRpb24uU2NoZW1hIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZhbGlkYXRpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWxpZGF0aW5nIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFhJbmNsdWRlQXdhcmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJGYWN0b3J5Q29uZmlndXJhdGlvbkVycm9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5FcnJvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZhY3RvcnlDb25maWd1cmF0aW9uRXJyb3IiCisgdHlwZT0iamF2YXgueG1sLnBhcnNlcnMuRmFjdG9yeUNvbmZpZ3VyYXRpb25FcnJvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZhY3RvcnlDb25maWd1cmF0aW9uRXJyb3IiCisgdHlwZT0iamF2YXgueG1sLnBhcnNlcnMuRmFjdG9yeUNvbmZpZ3VyYXRpb25FcnJvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRmFjdG9yeUNvbmZpZ3VyYXRpb25FcnJvciIKKyB0eXBlPSJqYXZheC54bWwucGFyc2Vycy5GYWN0b3J5Q29uZmlndXJhdGlvbkVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZSIgdHlwZT0iamF2YS5sYW5nLkV4Y2VwdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRmFjdG9yeUNvbmZpZ3VyYXRpb25FcnJvciIKKyB0eXBlPSJqYXZheC54bWwucGFyc2Vycy5GYWN0b3J5Q29uZmlndXJhdGlvbkVycm9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZSIgdHlwZT0iamF2YS5sYW5nLkV4Y2VwdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0RXhjZXB0aW9uIgorIHJldHVybj0iamF2YS5sYW5nLkV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIgorIHR5cGU9ImphdmF4LnhtbC5wYXJzZXJzLlBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIgorIHR5cGU9ImphdmF4LnhtbC5wYXJzZXJzLlBhcnNlckNvbmZpZ3VyYXRpb25FeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTQVhQYXJzZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU0FYUGFyc2VyIgorIHR5cGU9ImphdmF4LnhtbC5wYXJzZXJzLlNBWFBhcnNlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJzZXIiCisgcmV0dXJuPSJvcmcueG1sLnNheC5QYXJzZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvcGVydHkiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNjaGVtYSIKKyByZXR1cm49ImphdmF4LnhtbC52YWxpZGF0aW9uLlNjaGVtYSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRYTUxSZWFkZXIiCisgcmV0dXJuPSJvcmcueG1sLnNheC5YTUxSZWFkZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNOYW1lc3BhY2VBd2FyZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1ZhbGlkYXRpbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNYSW5jbHVkZUF3YXJlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlzIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYiIgdHlwZT0ib3JnLnhtbC5zYXguSGFuZGxlckJhc2UiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlzIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYiIgdHlwZT0ib3JnLnhtbC5zYXguSGFuZGxlckJhc2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN5c3RlbUlkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpcyIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGgiIHR5cGU9Im9yZy54bWwuc2F4LmhlbHBlcnMuRGVmYXVsdEhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlzIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaCIgdHlwZT0ib3JnLnhtbC5zYXguaGVscGVycy5EZWZhdWx0SGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3lzdGVtSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGIiIHR5cGU9Im9yZy54bWwuc2F4LkhhbmRsZXJCYXNlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRoIiB0eXBlPSJvcmcueG1sLnNheC5oZWxwZXJzLkRlZmF1bHRIYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmIiB0eXBlPSJqYXZhLmlvLkZpbGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhiIiB0eXBlPSJvcmcueG1sLnNheC5IYW5kbGVyQmFzZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZiIgdHlwZT0iamF2YS5pby5GaWxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkaCIgdHlwZT0ib3JnLnhtbC5zYXguaGVscGVycy5EZWZhdWx0SGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXMiIHR5cGU9Im9yZy54bWwuc2F4LklucHV0U291cmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYiIgdHlwZT0ib3JnLnhtbC5zYXguSGFuZGxlckJhc2UiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlzIiB0eXBlPSJvcmcueG1sLnNheC5JbnB1dFNvdXJjZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGgiIHR5cGU9Im9yZy54bWwuc2F4LmhlbHBlcnMuRGVmYXVsdEhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UHJvcGVydHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhOb3RSZWNvZ25pemVkRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhOb3RSZWNvZ25pemVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTQVhQYXJzZXJGYWN0b3J5IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNBWFBhcnNlckZhY3RvcnkiCisgdHlwZT0iamF2YXgueG1sLnBhcnNlcnMuU0FYUGFyc2VyRmFjdG9yeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRGZWF0dXJlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZheC54bWwucGFyc2Vycy5QYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhOb3RSZWNvZ25pemVkRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhOb3RSZWNvZ25pemVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTY2hlbWEiCisgcmV0dXJuPSJqYXZheC54bWwudmFsaWRhdGlvbi5TY2hlbWEiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNOYW1lc3BhY2VBd2FyZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNWYWxpZGF0aW5nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1hJbmNsdWRlQXdhcmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld0luc3RhbmNlIgorIHJldHVybj0iamF2YXgueG1sLnBhcnNlcnMuU0FYUGFyc2VyRmFjdG9yeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1NBWFBhcnNlciIKKyByZXR1cm49ImphdmF4LnhtbC5wYXJzZXJzLlNBWFBhcnNlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJQYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZheC54bWwucGFyc2Vycy5QYXJzZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGZWF0dXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiIgdHlwZT0iamF2YXgueG1sLnBhcnNlcnMuUGFyc2VyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TmFtZXNwYWNlQXdhcmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhd2FyZW5lc3MiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U2NoZW1hIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NoZW1hIiB0eXBlPSJqYXZheC54bWwudmFsaWRhdGlvbi5TY2hlbWEiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VmFsaWRhdGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbGlkYXRpbmciIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0WEluY2x1ZGVBd2FyZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iamF2YXgueG1sLnRyYW5zZm9ybSIKKz4KKzxpbnRlcmZhY2UgbmFtZT0iRXJyb3JMaXN0ZW5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImVycm9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleGNlcHRpb24iIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJFeGNlcHRpb24iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlRyYW5zZm9ybWVyRXhjZXB0aW9uIiB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZhdGFsRXJyb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4Y2VwdGlvbiIgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5UcmFuc2Zvcm1lckV4Y2VwdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iVHJhbnNmb3JtZXJFeGNlcHRpb24iIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id2FybmluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhjZXB0aW9uIiB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyRXhjZXB0aW9uIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJUcmFuc2Zvcm1lckV4Y2VwdGlvbiIgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5UcmFuc2Zvcm1lckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iT3V0cHV0S2V5cyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iQ0RBVEFfU0VDVElPTl9FTEVNRU5UUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtjZGF0YS1zZWN0aW9uLWVsZW1lbnRzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRPQ1RZUEVfUFVCTElDIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RvY3R5cGUtcHVibGljJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRPQ1RZUEVfU1lTVEVNIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2RvY3R5cGUtc3lzdGVtJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVOQ09ESU5HIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2VuY29kaW5nJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IklOREVOVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtpbmRlbnQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUVESUFfVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDttZWRpYS10eXBlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1FVEhPRCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDttZXRob2QmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT01JVF9YTUxfREVDTEFSQVRJT04iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7b21pdC14bWwtZGVjbGFyYXRpb24mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RBTkRBTE9ORSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzdGFuZGFsb25lJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlZFUlNJT04iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dmVyc2lvbiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlJlc3VsdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldFN5c3RlbUlkIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN5c3RlbUlkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzeXN0ZW1JZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IlBJX0RJU0FCTEVfT1VUUFVUX0VTQ0FQSU5HIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2phdmF4LnhtbC50cmFuc2Zvcm0uZGlzYWJsZS1vdXRwdXQtZXNjYXBpbmcmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUElfRU5BQkxFX09VVFBVVF9FU0NBUElORyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtqYXZheC54bWwudHJhbnNmb3JtLmVuYWJsZS1vdXRwdXQtZXNjYXBpbmcmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iU291cmNlIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0U3lzdGVtSWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3lzdGVtSWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN5c3RlbUlkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iU291cmNlTG9jYXRvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldENvbHVtbk51bWJlciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExpbmVOdW1iZXIiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQdWJsaWNJZCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTeXN0ZW1JZCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlRlbXBsYXRlcyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldE91dHB1dFByb3BlcnRpZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuUHJvcGVydGllcyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1RyYW5zZm9ybWVyIgorIHJldHVybj0iamF2YXgueG1sLnRyYW5zZm9ybS5UcmFuc2Zvcm1lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJUcmFuc2Zvcm1lckNvbmZpZ3VyYXRpb25FeGNlcHRpb24iIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJUcmFuc2Zvcm1lciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUcmFuc2Zvcm1lciIKKyB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsZWFyUGFyYW1ldGVycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFcnJvckxpc3RlbmVyIgorIHJldHVybj0iamF2YXgueG1sLnRyYW5zZm9ybS5FcnJvckxpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T3V0cHV0UHJvcGVydGllcyIKKyByZXR1cm49ImphdmEudXRpbC5Qcm9wZXJ0aWVzIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0T3V0cHV0UHJvcGVydHkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJhbWV0ZXIiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VVJJUmVzb2x2ZXIiCisgcmV0dXJuPSJqYXZheC54bWwudHJhbnNmb3JtLlVSSVJlc29sdmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVycm9yTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLkVycm9yTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPdXRwdXRQcm9wZXJ0aWVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvZm9ybWF0IiB0eXBlPSJqYXZhLnV0aWwuUHJvcGVydGllcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPdXRwdXRQcm9wZXJ0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQYXJhbWV0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFVSSVJlc29sdmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvbHZlciIgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5VUklSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0cmFuc2Zvcm0iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InhtbFNvdXJjZSIgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5Tb3VyY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHB1dFRhcmdldCIgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5SZXN1bHQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlRyYW5zZm9ybWVyRXhjZXB0aW9uIiB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlRyYW5zZm9ybWVyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVHJhbnNmb3JtZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIgorIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVHJhbnNmb3JtZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIgorIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibXNnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUcmFuc2Zvcm1lckNvbmZpZ3VyYXRpb25FeGNlcHRpb24iCisgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5UcmFuc2Zvcm1lckNvbmZpZ3VyYXRpb25FeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUcmFuc2Zvcm1lckNvbmZpZ3VyYXRpb25FeGNlcHRpb24iCisgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5UcmFuc2Zvcm1lckNvbmZpZ3VyYXRpb25FeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImUiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRyYW5zZm9ybWVyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0b3IiIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uU291cmNlTG9jYXRvciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVHJhbnNmb3JtZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIgorIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRvciIgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5Tb3VyY2VMb2NhdG9yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVHJhbnNmb3JtZXJFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLkV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRyYW5zZm9ybWVyRXhjZXB0aW9uIgorIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUcmFuc2Zvcm1lckV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVHJhbnNmb3JtZXJFeGNlcHRpb24iCisgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5UcmFuc2Zvcm1lckV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImUiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRyYW5zZm9ybWVyRXhjZXB0aW9uIgorIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdG9yIiB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLlNvdXJjZUxvY2F0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRyYW5zZm9ybWVyRXhjZXB0aW9uIgorIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdG9yIiB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLlNvdXJjZUxvY2F0b3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImUiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRFeGNlcHRpb24iCisgcmV0dXJuPSJqYXZhLmxhbmcuVGhyb3dhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvY2F0aW9uQXNTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvY2F0b3IiCisgcmV0dXJuPSJqYXZheC54bWwudHJhbnNmb3JtLlNvdXJjZUxvY2F0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWVzc2FnZUFuZExvY2F0aW9uIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMb2NhdG9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRpb24iIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uU291cmNlTG9jYXRvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJUcmFuc2Zvcm1lckZhY3RvcnkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVHJhbnNmb3JtZXJGYWN0b3J5IgorIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJGYWN0b3J5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEFzc29jaWF0ZWRTdHlsZXNoZWV0IgorIHJldHVybj0iamF2YXgueG1sLnRyYW5zZm9ybS5Tb3VyY2UiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLlNvdXJjZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVkaWEiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRpdGxlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGFyc2V0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJUcmFuc2Zvcm1lckNvbmZpZ3VyYXRpb25FeGNlcHRpb24iIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF0dHJpYnV0ZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFcnJvckxpc3RlbmVyIgorIHJldHVybj0iamF2YXgueG1sLnRyYW5zZm9ybS5FcnJvckxpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmVhdHVyZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVUklSZXNvbHZlciIKKyByZXR1cm49ImphdmF4LnhtbC50cmFuc2Zvcm0uVVJJUmVzb2x2ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdJbnN0YW5jZSIKKyByZXR1cm49ImphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJGYWN0b3J5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlRyYW5zZm9ybWVyRmFjdG9yeUNvbmZpZ3VyYXRpb25FcnJvciIgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5UcmFuc2Zvcm1lckZhY3RvcnlDb25maWd1cmF0aW9uRXJyb3IiPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3VGVtcGxhdGVzIgorIHJldHVybj0iamF2YXgueG1sLnRyYW5zZm9ybS5UZW1wbGF0ZXMiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLlNvdXJjZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iVHJhbnNmb3JtZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdUcmFuc2Zvcm1lciIKKyByZXR1cm49ImphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLlNvdXJjZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iVHJhbnNmb3JtZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdUcmFuc2Zvcm1lciIKKyByZXR1cm49ImphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iVHJhbnNmb3JtZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBdHRyaWJ1dGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVycm9yTGlzdGVuZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLkVycm9yTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RmVhdHVyZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlRyYW5zZm9ybWVyQ29uZmlndXJhdGlvbkV4Y2VwdGlvbiIgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5UcmFuc2Zvcm1lckNvbmZpZ3VyYXRpb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VVJJUmVzb2x2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc29sdmVyIiB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLlVSSVJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlRyYW5zZm9ybWVyRmFjdG9yeUNvbmZpZ3VyYXRpb25FcnJvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRXJyb3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUcmFuc2Zvcm1lckZhY3RvcnlDb25maWd1cmF0aW9uRXJyb3IiCisgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5UcmFuc2Zvcm1lckZhY3RvcnlDb25maWd1cmF0aW9uRXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUcmFuc2Zvcm1lckZhY3RvcnlDb25maWd1cmF0aW9uRXJyb3IiCisgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5UcmFuc2Zvcm1lckZhY3RvcnlDb25maWd1cmF0aW9uRXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRyYW5zZm9ybWVyRmFjdG9yeUNvbmZpZ3VyYXRpb25FcnJvciIKKyB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyRmFjdG9yeUNvbmZpZ3VyYXRpb25FcnJvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImUiIHR5cGU9ImphdmEubGFuZy5FeGNlcHRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRyYW5zZm9ybWVyRmFjdG9yeUNvbmZpZ3VyYXRpb25FcnJvciIKKyB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyRmFjdG9yeUNvbmZpZ3VyYXRpb25FcnJvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImUiIHR5cGU9ImphdmEubGFuZy5FeGNlcHRpb24iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1zZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEV4Y2VwdGlvbiIKKyByZXR1cm49ImphdmEubGFuZy5FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlVSSVJlc29sdmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0icmVzb2x2ZSIKKyByZXR1cm49ImphdmF4LnhtbC50cmFuc2Zvcm0uU291cmNlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhyZWYiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJhc2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlRyYW5zZm9ybWVyRXhjZXB0aW9uIiB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImphdmF4LnhtbC50cmFuc2Zvcm0uZG9tIgorPgorPGludGVyZmFjZSBuYW1lPSJET01Mb2NhdG9yIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmF4LnhtbC50cmFuc2Zvcm0uU291cmNlTG9jYXRvciI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImdldE9yaWdpbmF0aW5nTm9kZSIKKyByZXR1cm49Im9yZy53M2MuZG9tLk5vZGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iRE9NUmVzdWx0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmF4LnhtbC50cmFuc2Zvcm0uUmVzdWx0Ij4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJET01SZXN1bHQiCisgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5kb20uRE9NUmVzdWx0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRE9NUmVzdWx0IgorIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uZG9tLkRPTVJlc3VsdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5vZGUiIHR5cGU9Im9yZy53M2MuZG9tLk5vZGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRPTVJlc3VsdCIKKyB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLmRvbS5ET01SZXN1bHQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJub2RlIiB0eXBlPSJvcmcudzNjLmRvbS5Ob2RlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzeXN0ZW1JZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRE9NUmVzdWx0IgorIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uZG9tLkRPTVJlc3VsdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5vZGUiIHR5cGU9Im9yZy53M2MuZG9tLk5vZGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5leHRTaWJsaW5nIiB0eXBlPSJvcmcudzNjLmRvbS5Ob2RlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJET01SZXN1bHQiCisgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5kb20uRE9NUmVzdWx0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibm9kZSIgdHlwZT0ib3JnLnczYy5kb20uTm9kZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV4dFNpYmxpbmciIHR5cGU9Im9yZy53M2MuZG9tLk5vZGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN5c3RlbUlkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0TmV4dFNpYmxpbmciCisgcmV0dXJuPSJvcmcudzNjLmRvbS5Ob2RlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5vZGUiCisgcmV0dXJuPSJvcmcudzNjLmRvbS5Ob2RlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN5c3RlbUlkIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXROZXh0U2libGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5leHRTaWJsaW5nIiB0eXBlPSJvcmcudzNjLmRvbS5Ob2RlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE5vZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJub2RlIiB0eXBlPSJvcmcudzNjLmRvbS5Ob2RlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN5c3RlbUlkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3lzdGVtSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJGRUFUVVJFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHA6Ly9qYXZheC54bWwudHJhbnNmb3JtLmRvbS5ET01SZXN1bHQvZmVhdHVyZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRE9NU291cmNlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmF4LnhtbC50cmFuc2Zvcm0uU291cmNlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJET01Tb3VyY2UiCisgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5kb20uRE9NU291cmNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRE9NU291cmNlIgorIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uZG9tLkRPTVNvdXJjZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im4iIHR5cGU9Im9yZy53M2MuZG9tLk5vZGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRPTVNvdXJjZSIKKyB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLmRvbS5ET01Tb3VyY2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJub2RlIiB0eXBlPSJvcmcudzNjLmRvbS5Ob2RlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzeXN0ZW1JRCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldE5vZGUiCisgcmV0dXJuPSJvcmcudzNjLmRvbS5Ob2RlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN5c3RlbUlkIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXROb2RlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibm9kZSIgdHlwZT0ib3JnLnczYy5kb20uTm9kZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTeXN0ZW1JZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN5c3RlbUlEIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iRkVBVFVSRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwOi8vamF2YXgueG1sLnRyYW5zZm9ybS5kb20uRE9NU291cmNlL2ZlYXR1cmUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0iamF2YXgueG1sLnRyYW5zZm9ybS5zYXgiCis+Cis8Y2xhc3MgbmFtZT0iU0FYUmVzdWx0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmF4LnhtbC50cmFuc2Zvcm0uUmVzdWx0Ij4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTQVhSZXN1bHQiCisgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5zYXguU0FYUmVzdWx0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU0FYUmVzdWx0IgorIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uc2F4LlNBWFJlc3VsdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhhbmRsZXIiIHR5cGU9Im9yZy54bWwuc2F4LkNvbnRlbnRIYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0SGFuZGxlciIKKyByZXR1cm49Im9yZy54bWwuc2F4LkNvbnRlbnRIYW5kbGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExleGljYWxIYW5kbGVyIgorIHJldHVybj0ib3JnLnhtbC5zYXguZXh0LkxleGljYWxIYW5kbGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN5c3RlbUlkIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRIYW5kbGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlciIgdHlwZT0ib3JnLnhtbC5zYXguQ29udGVudEhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TGV4aWNhbEhhbmRsZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJvcmcueG1sLnNheC5leHQuTGV4aWNhbEhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3lzdGVtSWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzeXN0ZW1JZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkZFQVRVUkUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cDovL2phdmF4LnhtbC50cmFuc2Zvcm0uc2F4LlNBWFJlc3VsdC9mZWF0dXJlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTQVhTb3VyY2UiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YXgueG1sLnRyYW5zZm9ybS5Tb3VyY2UiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNBWFNvdXJjZSIKKyB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLnNheC5TQVhTb3VyY2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTQVhTb3VyY2UiCisgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5zYXguU0FYU291cmNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVhZGVyIiB0eXBlPSJvcmcueG1sLnNheC5YTUxSZWFkZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0U291cmNlIiB0eXBlPSJvcmcueG1sLnNheC5JbnB1dFNvdXJjZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU0FYU291cmNlIgorIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uc2F4LlNBWFNvdXJjZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0U291cmNlIiB0eXBlPSJvcmcueG1sLnNheC5JbnB1dFNvdXJjZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldElucHV0U291cmNlIgorIHJldHVybj0ib3JnLnhtbC5zYXguSW5wdXRTb3VyY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3lzdGVtSWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFhNTFJlYWRlciIKKyByZXR1cm49Im9yZy54bWwuc2F4LlhNTFJlYWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJbnB1dFNvdXJjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0U291cmNlIiB0eXBlPSJvcmcueG1sLnNheC5JbnB1dFNvdXJjZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTeXN0ZW1JZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN5c3RlbUlkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFhNTFJlYWRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlYWRlciIgdHlwZT0ib3JnLnhtbC5zYXguWE1MUmVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNvdXJjZVRvSW5wdXRTb3VyY2UiCisgcmV0dXJuPSJvcmcueG1sLnNheC5JbnB1dFNvdXJjZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uU291cmNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iRkVBVFVSRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwOi8vamF2YXgueG1sLnRyYW5zZm9ybS5zYXguU0FYU291cmNlL2ZlYXR1cmUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNBWFRyYW5zZm9ybWVyRmFjdG9yeSIKKyBleHRlbmRzPSJqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyRmFjdG9yeSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU0FYVHJhbnNmb3JtZXJGYWN0b3J5IgorIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uc2F4LlNBWFRyYW5zZm9ybWVyRmFjdG9yeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJuZXdUZW1wbGF0ZXNIYW5kbGVyIgorIHJldHVybj0iamF2YXgueG1sLnRyYW5zZm9ybS5zYXguVGVtcGxhdGVzSGFuZGxlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJUcmFuc2Zvcm1lckNvbmZpZ3VyYXRpb25FeGNlcHRpb24iIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1RyYW5zZm9ybWVySGFuZGxlciIKKyByZXR1cm49ImphdmF4LnhtbC50cmFuc2Zvcm0uc2F4LlRyYW5zZm9ybWVySGFuZGxlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uU291cmNlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJUcmFuc2Zvcm1lckNvbmZpZ3VyYXRpb25FeGNlcHRpb24iIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1RyYW5zZm9ybWVySGFuZGxlciIKKyByZXR1cm49ImphdmF4LnhtbC50cmFuc2Zvcm0uc2F4LlRyYW5zZm9ybWVySGFuZGxlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZW1wbGF0ZXMiIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uVGVtcGxhdGVzIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJUcmFuc2Zvcm1lckNvbmZpZ3VyYXRpb25FeGNlcHRpb24iIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1RyYW5zZm9ybWVySGFuZGxlciIKKyByZXR1cm49ImphdmF4LnhtbC50cmFuc2Zvcm0uc2F4LlRyYW5zZm9ybWVySGFuZGxlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJUcmFuc2Zvcm1lckNvbmZpZ3VyYXRpb25FeGNlcHRpb24iIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1hNTEZpbHRlciIKKyByZXR1cm49Im9yZy54bWwuc2F4LlhNTEZpbHRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uU291cmNlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJUcmFuc2Zvcm1lckNvbmZpZ3VyYXRpb25FeGNlcHRpb24iIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1hNTEZpbHRlciIKKyByZXR1cm49Im9yZy54bWwuc2F4LlhNTEZpbHRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZW1wbGF0ZXMiIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uVGVtcGxhdGVzIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJUcmFuc2Zvcm1lckNvbmZpZ3VyYXRpb25FeGNlcHRpb24iIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJDb25maWd1cmF0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iRkVBVFVSRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwOi8vamF2YXgueG1sLnRyYW5zZm9ybS5zYXguU0FYVHJhbnNmb3JtZXJGYWN0b3J5L2ZlYXR1cmUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkVBVFVSRV9YTUxGSUxURVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cDovL2phdmF4LnhtbC50cmFuc2Zvcm0uc2F4LlNBWFRyYW5zZm9ybWVyRmFjdG9yeS9mZWF0dXJlL3htbGZpbHRlciZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlRlbXBsYXRlc0hhbmRsZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLnhtbC5zYXguQ29udGVudEhhbmRsZXIiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRTeXN0ZW1JZCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUZW1wbGF0ZXMiCisgcmV0dXJuPSJqYXZheC54bWwudHJhbnNmb3JtLlRlbXBsYXRlcyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN5c3RlbUlkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzeXN0ZW1JRCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlRyYW5zZm9ybWVySGFuZGxlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcueG1sLnNheC5Db250ZW50SGFuZGxlciI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcueG1sLnNheC5EVERIYW5kbGVyIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy54bWwuc2F4LmV4dC5MZXhpY2FsSGFuZGxlciI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImdldFN5c3RlbUlkIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRyYW5zZm9ybWVyIgorIHJldHVybj0iamF2YXgueG1sLnRyYW5zZm9ybS5UcmFuc2Zvcm1lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJlc3VsdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0IiB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLlJlc3VsdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN5c3RlbUlkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzeXN0ZW1JRCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJqYXZheC54bWwudHJhbnNmb3JtLnN0cmVhbSIKKz4KKzxjbGFzcyBuYW1lPSJTdHJlYW1SZXN1bHQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YXgueG1sLnRyYW5zZm9ybS5SZXN1bHQiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN0cmVhbVJlc3VsdCIKKyB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLnN0cmVhbS5TdHJlYW1SZXN1bHQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdHJlYW1SZXN1bHQiCisgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5zdHJlYW0uU3RyZWFtUmVzdWx0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0cHV0U3RyZWFtIiB0eXBlPSJqYXZhLmlvLk91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RyZWFtUmVzdWx0IgorIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uc3RyZWFtLlN0cmVhbVJlc3VsdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndyaXRlciIgdHlwZT0iamF2YS5pby5Xcml0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN0cmVhbVJlc3VsdCIKKyB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLnN0cmVhbS5TdHJlYW1SZXN1bHQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzeXN0ZW1JZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RyZWFtUmVzdWx0IgorIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uc3RyZWFtLlN0cmVhbVJlc3VsdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImYiIHR5cGU9ImphdmEuaW8uRmlsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldE91dHB1dFN0cmVhbSIKKyByZXR1cm49ImphdmEuaW8uT3V0cHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN5c3RlbUlkIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRXcml0ZXIiCisgcmV0dXJuPSJqYXZhLmlvLldyaXRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPdXRwdXRTdHJlYW0iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXRwdXRTdHJlYW0iIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN5c3RlbUlkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3lzdGVtSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3lzdGVtSWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmIiB0eXBlPSJqYXZhLmlvLkZpbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0V3JpdGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id3JpdGVyIiB0eXBlPSJqYXZhLmlvLldyaXRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkZFQVRVUkUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cDovL2phdmF4LnhtbC50cmFuc2Zvcm0uc3RyZWFtLlN0cmVhbVJlc3VsdC9mZWF0dXJlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTdHJlYW1Tb3VyY2UiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YXgueG1sLnRyYW5zZm9ybS5Tb3VyY2UiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN0cmVhbVNvdXJjZSIKKyB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLnN0cmVhbS5TdHJlYW1Tb3VyY2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdHJlYW1Tb3VyY2UiCisgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5zdHJlYW0uU3RyZWFtU291cmNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXRTdHJlYW0iIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN0cmVhbVNvdXJjZSIKKyB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLnN0cmVhbS5TdHJlYW1Tb3VyY2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnB1dFN0cmVhbSIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3lzdGVtSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN0cmVhbVNvdXJjZSIKKyB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLnN0cmVhbS5TdHJlYW1Tb3VyY2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWFkZXIiIHR5cGU9ImphdmEuaW8uUmVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdHJlYW1Tb3VyY2UiCisgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5zdHJlYW0uU3RyZWFtU291cmNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVhZGVyIiB0eXBlPSJqYXZhLmlvLlJlYWRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3lzdGVtSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN0cmVhbVNvdXJjZSIKKyB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLnN0cmVhbS5TdHJlYW1Tb3VyY2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzeXN0ZW1JZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU3RyZWFtU291cmNlIgorIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uc3RyZWFtLlN0cmVhbVNvdXJjZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImYiIHR5cGU9ImphdmEuaW8uRmlsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldElucHV0U3RyZWFtIgorIHJldHVybj0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQdWJsaWNJZCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVhZGVyIgorIHJldHVybj0iamF2YS5pby5SZWFkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3lzdGVtSWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldElucHV0U3RyZWFtIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXRTdHJlYW0iIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UHVibGljSWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwdWJsaWNJZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZWFkZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWFkZXIiIHR5cGU9ImphdmEuaW8uUmVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN5c3RlbUlkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3lzdGVtSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3lzdGVtSWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmIiB0eXBlPSJqYXZhLmlvLkZpbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJGRUFUVVJFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHA6Ly9qYXZheC54bWwudHJhbnNmb3JtLnN0cmVhbS5TdHJlYW1Tb3VyY2UvZmVhdHVyZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJqYXZheC54bWwudmFsaWRhdGlvbiIKKz4KKzxjbGFzcyBuYW1lPSJTY2hlbWEiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2NoZW1hIgorIHR5cGU9ImphdmF4LnhtbC52YWxpZGF0aW9uLlNjaGVtYSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJuZXdWYWxpZGF0b3IiCisgcmV0dXJuPSJqYXZheC54bWwudmFsaWRhdGlvbi5WYWxpZGF0b3IiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdWYWxpZGF0b3JIYW5kbGVyIgorIHJldHVybj0iamF2YXgueG1sLnZhbGlkYXRpb24uVmFsaWRhdG9ySGFuZGxlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNjaGVtYUZhY3RvcnkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2NoZW1hRmFjdG9yeSIKKyB0eXBlPSJqYXZheC54bWwudmFsaWRhdGlvbi5TY2hlbWFGYWN0b3J5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEVycm9ySGFuZGxlciIKKyByZXR1cm49Im9yZy54bWwuc2F4LkVycm9ySGFuZGxlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZlYXR1cmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhOb3RSZWNvZ25pemVkRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhOb3RSZWNvZ25pemVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm9wZXJ0eSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlc291cmNlUmVzb2x2ZXIiCisgcmV0dXJuPSJvcmcudzNjLmRvbS5scy5MU1Jlc291cmNlUmVzb2x2ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1NjaGVtYUxhbmd1YWdlU3VwcG9ydGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzY2hlbWFMYW5ndWFnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdJbnN0YW5jZSIKKyByZXR1cm49ImphdmF4LnhtbC52YWxpZGF0aW9uLlNjaGVtYUZhY3RvcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzY2hlbWFMYW5ndWFnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdTY2hlbWEiCisgcmV0dXJuPSJqYXZheC54bWwudmFsaWRhdGlvbi5TY2hlbWEiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNjaGVtYSIgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5Tb3VyY2UiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1NjaGVtYSIKKyByZXR1cm49ImphdmF4LnhtbC52YWxpZGF0aW9uLlNjaGVtYSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NoZW1hIiB0eXBlPSJqYXZhLmlvLkZpbGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1NjaGVtYSIKKyByZXR1cm49ImphdmF4LnhtbC52YWxpZGF0aW9uLlNjaGVtYSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NoZW1hIiB0eXBlPSJqYXZhLm5ldC5VUkwiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1NjaGVtYSIKKyByZXR1cm49ImphdmF4LnhtbC52YWxpZGF0aW9uLlNjaGVtYSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzY2hlbWFzIiB0eXBlPSJqYXZheC54bWwudHJhbnNmb3JtLlNvdXJjZVtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdTY2hlbWEiCisgcmV0dXJuPSJqYXZheC54bWwudmFsaWRhdGlvbi5TY2hlbWEiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RXJyb3JIYW5kbGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlcnJvckhhbmRsZXIiIHR5cGU9Im9yZy54bWwuc2F4LkVycm9ySGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGZWF0dXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByb3BlcnR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhOb3RSZWNvZ25pemVkRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhOb3RSZWNvZ25pemVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZXNvdXJjZVJlc29sdmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvdXJjZVJlc29sdmVyIiB0eXBlPSJvcmcudzNjLmRvbS5scy5MU1Jlc291cmNlUmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2NoZW1hRmFjdG9yeUxvYWRlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTY2hlbWFGYWN0b3J5TG9hZGVyIgorIHR5cGU9ImphdmF4LnhtbC52YWxpZGF0aW9uLlNjaGVtYUZhY3RvcnlMb2FkZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ibmV3RmFjdG9yeSIKKyByZXR1cm49ImphdmF4LnhtbC52YWxpZGF0aW9uLlNjaGVtYUZhY3RvcnkiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NoZW1hTGFuZ3VhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVHlwZUluZm9Qcm92aWRlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUeXBlSW5mb1Byb3ZpZGVyIgorIHR5cGU9ImphdmF4LnhtbC52YWxpZGF0aW9uLlR5cGVJbmZvUHJvdmlkZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0QXR0cmlidXRlVHlwZUluZm8iCisgcmV0dXJuPSJvcmcudzNjLmRvbS5UeXBlSW5mbyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVsZW1lbnRUeXBlSW5mbyIKKyByZXR1cm49Im9yZy53M2MuZG9tLlR5cGVJbmZvIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNJZEF0dHJpYnV0ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1NwZWNpZmllZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJWYWxpZGF0b3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVmFsaWRhdG9yIgorIHR5cGU9ImphdmF4LnhtbC52YWxpZGF0aW9uLlZhbGlkYXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRFcnJvckhhbmRsZXIiCisgcmV0dXJuPSJvcmcueG1sLnNheC5FcnJvckhhbmRsZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGZWF0dXJlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvcGVydHkiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhOb3RSZWNvZ25pemVkRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhOb3RSZWNvZ25pemVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXNvdXJjZVJlc29sdmVyIgorIHJldHVybj0ib3JnLnczYy5kb20ubHMuTFNSZXNvdXJjZVJlc29sdmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RXJyb3JIYW5kbGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlcnJvckhhbmRsZXIiIHR5cGU9Im9yZy54bWwuc2F4LkVycm9ySGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGZWF0dXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByb3BlcnR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhOb3RSZWNvZ25pemVkRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhOb3RSZWNvZ25pemVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZXNvdXJjZVJlc29sdmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvdXJjZVJlc29sdmVyIiB0eXBlPSJvcmcudzNjLmRvbS5scy5MU1Jlc291cmNlUmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsaWRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9ImphdmF4LnhtbC50cmFuc2Zvcm0uU291cmNlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsaWRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5Tb3VyY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdCIgdHlwZT0iamF2YXgueG1sLnRyYW5zZm9ybS5SZXN1bHQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJWYWxpZGF0b3JIYW5kbGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLnhtbC5zYXguQ29udGVudEhhbmRsZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlZhbGlkYXRvckhhbmRsZXIiCisgdHlwZT0iamF2YXgueG1sLnZhbGlkYXRpb24uVmFsaWRhdG9ySGFuZGxlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZW50SGFuZGxlciIKKyByZXR1cm49Im9yZy54bWwuc2F4LkNvbnRlbnRIYW5kbGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RXJyb3JIYW5kbGVyIgorIHJldHVybj0ib3JnLnhtbC5zYXguRXJyb3JIYW5kbGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmVhdHVyZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb3BlcnR5IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVzb3VyY2VSZXNvbHZlciIKKyByZXR1cm49Im9yZy53M2MuZG9tLmxzLkxTUmVzb3VyY2VSZXNvbHZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFR5cGVJbmZvUHJvdmlkZXIiCisgcmV0dXJuPSJqYXZheC54bWwudmFsaWRhdGlvbi5UeXBlSW5mb1Byb3ZpZGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29udGVudEhhbmRsZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlY2VpdmVyIiB0eXBlPSJvcmcueG1sLnNheC5Db250ZW50SGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFcnJvckhhbmRsZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVycm9ySGFuZGxlciIgdHlwZT0ib3JnLnhtbC5zYXguRXJyb3JIYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZlYXR1cmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UHJvcGVydHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJlc291cmNlUmVzb2x2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc291cmNlUmVzb2x2ZXIiIHR5cGU9Im9yZy53M2MuZG9tLmxzLkxTUmVzb3VyY2VSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImphdmF4LnhtbC54cGF0aCIKKz4KKzxpbnRlcmZhY2UgbmFtZT0iWFBhdGgiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJjb21waWxlIgorIHJldHVybj0iamF2YXgueG1sLnhwYXRoLlhQYXRoRXhwcmVzc2lvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleHByZXNzaW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJYUGF0aEV4cHJlc3Npb25FeGNlcHRpb24iIHR5cGU9ImphdmF4LnhtbC54cGF0aC5YUGF0aEV4cHJlc3Npb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXZhbHVhdGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cHJlc3Npb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Iml0ZW0iIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJldHVyblR5cGUiIHR5cGU9ImphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlhQYXRoRXhwcmVzc2lvbkV4Y2VwdGlvbiIgdHlwZT0iamF2YXgueG1sLnhwYXRoLlhQYXRoRXhwcmVzc2lvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJldmFsdWF0ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwcmVzc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXRlbSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iWFBhdGhFeHByZXNzaW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZheC54bWwueHBhdGguWFBhdGhFeHByZXNzaW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV2YWx1YXRlIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleHByZXNzaW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9Im9yZy54bWwuc2F4LklucHV0U291cmNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXR1cm5UeXBlIiB0eXBlPSJqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJYUGF0aEV4cHJlc3Npb25FeGNlcHRpb24iIHR5cGU9ImphdmF4LnhtbC54cGF0aC5YUGF0aEV4cHJlc3Npb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXZhbHVhdGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cHJlc3Npb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0ib3JnLnhtbC5zYXguSW5wdXRTb3VyY2UiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlhQYXRoRXhwcmVzc2lvbkV4Y2VwdGlvbiIgdHlwZT0iamF2YXgueG1sLnhwYXRoLlhQYXRoRXhwcmVzc2lvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lc3BhY2VDb250ZXh0IgorIHJldHVybj0iamF2YXgueG1sLm5hbWVzcGFjZS5OYW1lc3BhY2VDb250ZXh0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0WFBhdGhGdW5jdGlvblJlc29sdmVyIgorIHJldHVybj0iamF2YXgueG1sLnhwYXRoLlhQYXRoRnVuY3Rpb25SZXNvbHZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFhQYXRoVmFyaWFibGVSZXNvbHZlciIKKyByZXR1cm49ImphdmF4LnhtbC54cGF0aC5YUGF0aFZhcmlhYmxlUmVzb2x2ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXROYW1lc3BhY2VDb250ZXh0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuc0NvbnRleHQiIHR5cGU9ImphdmF4LnhtbC5uYW1lc3BhY2UuTmFtZXNwYWNlQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRYUGF0aEZ1bmN0aW9uUmVzb2x2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc29sdmVyIiB0eXBlPSJqYXZheC54bWwueHBhdGguWFBhdGhGdW5jdGlvblJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFhQYXRoVmFyaWFibGVSZXNvbHZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzb2x2ZXIiIHR5cGU9ImphdmF4LnhtbC54cGF0aC5YUGF0aFZhcmlhYmxlUmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlhQYXRoQ29uc3RhbnRzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxmaWVsZCBuYW1lPSJCT09MRUFOIgorIHR5cGU9ImphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRE9NX09CSkVDVF9NT0RFTCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwOi8vamF2YS5zdW4uY29tL2pheHAveHBhdGgvZG9tJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5PREUiCisgdHlwZT0iamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOT0RFU0VUIgorIHR5cGU9ImphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTlVNQkVSIgorIHR5cGU9ImphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RSSU5HIgorIHR5cGU9ImphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlhQYXRoRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJYUGF0aEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC54bWwueHBhdGguWFBhdGhFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJYUGF0aEV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC54bWwueHBhdGguWFBhdGhFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJYUGF0aEV4cHJlc3Npb24iCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJldmFsdWF0ZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXRlbSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmV0dXJuVHlwZSIgdHlwZT0iamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iWFBhdGhFeHByZXNzaW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZheC54bWwueHBhdGguWFBhdGhFeHByZXNzaW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV2YWx1YXRlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpdGVtIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJYUGF0aEV4cHJlc3Npb25FeGNlcHRpb24iIHR5cGU9ImphdmF4LnhtbC54cGF0aC5YUGF0aEV4cHJlc3Npb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXZhbHVhdGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0ib3JnLnhtbC5zYXguSW5wdXRTb3VyY2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJldHVyblR5cGUiIHR5cGU9ImphdmF4LnhtbC5uYW1lc3BhY2UuUU5hbWUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlhQYXRoRXhwcmVzc2lvbkV4Y2VwdGlvbiIgdHlwZT0iamF2YXgueG1sLnhwYXRoLlhQYXRoRXhwcmVzc2lvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJldmFsdWF0ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJvcmcueG1sLnNheC5JbnB1dFNvdXJjZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iWFBhdGhFeHByZXNzaW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZheC54bWwueHBhdGguWFBhdGhFeHByZXNzaW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJYUGF0aEV4cHJlc3Npb25FeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YXgueG1sLnhwYXRoLlhQYXRoRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iWFBhdGhFeHByZXNzaW9uRXhjZXB0aW9uIgorIHR5cGU9ImphdmF4LnhtbC54cGF0aC5YUGF0aEV4cHJlc3Npb25FeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJYUGF0aEV4cHJlc3Npb25FeGNlcHRpb24iCisgdHlwZT0iamF2YXgueG1sLnhwYXRoLlhQYXRoRXhwcmVzc2lvbkV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iWFBhdGhGYWN0b3J5IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlhQYXRoRmFjdG9yeSIKKyB0eXBlPSJqYXZheC54bWwueHBhdGguWFBhdGhGYWN0b3J5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEZlYXR1cmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlhQYXRoRmFjdG9yeUNvbmZpZ3VyYXRpb25FeGNlcHRpb24iIHR5cGU9ImphdmF4LnhtbC54cGF0aC5YUGF0aEZhY3RvcnlDb25maWd1cmF0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzT2JqZWN0TW9kZWxTdXBwb3J0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iamVjdE1vZGVsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld0luc3RhbmNlIgorIHJldHVybj0iamF2YXgueG1sLnhwYXRoLlhQYXRoRmFjdG9yeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3SW5zdGFuY2UiCisgcmV0dXJuPSJqYXZheC54bWwueHBhdGguWFBhdGhGYWN0b3J5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJYUGF0aEZhY3RvcnlDb25maWd1cmF0aW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZheC54bWwueHBhdGguWFBhdGhGYWN0b3J5Q29uZmlndXJhdGlvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdJbnN0YW5jZSIKKyByZXR1cm49ImphdmF4LnhtbC54cGF0aC5YUGF0aEZhY3RvcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmYWN0b3J5Q2xhc3NOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjbGFzc0xvYWRlciIgdHlwZT0iamF2YS5sYW5nLkNsYXNzTG9hZGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJYUGF0aEZhY3RvcnlDb25maWd1cmF0aW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZheC54bWwueHBhdGguWFBhdGhGYWN0b3J5Q29uZmlndXJhdGlvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdYUGF0aCIKKyByZXR1cm49ImphdmF4LnhtbC54cGF0aC5YUGF0aCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZlYXR1cmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJYUGF0aEZhY3RvcnlDb25maWd1cmF0aW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZheC54bWwueHBhdGguWFBhdGhGYWN0b3J5Q29uZmlndXJhdGlvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRYUGF0aEZ1bmN0aW9uUmVzb2x2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc29sdmVyIiB0eXBlPSJqYXZheC54bWwueHBhdGguWFBhdGhGdW5jdGlvblJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFhQYXRoVmFyaWFibGVSZXNvbHZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzb2x2ZXIiIHR5cGU9ImphdmF4LnhtbC54cGF0aC5YUGF0aFZhcmlhYmxlUmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUX09CSkVDVF9NT0RFTF9VUkkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cDovL2phdmEuc3VuLmNvbS9qYXhwL3hwYXRoL2RvbSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUX1BST1BFUlRZX05BTUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7amF2YXgueG1sLnhwYXRoLlhQYXRoRmFjdG9yeSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iWFBhdGhGYWN0b3J5Q29uZmlndXJhdGlvbkV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZheC54bWwueHBhdGguWFBhdGhFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJYUGF0aEZhY3RvcnlDb25maWd1cmF0aW9uRXhjZXB0aW9uIgorIHR5cGU9ImphdmF4LnhtbC54cGF0aC5YUGF0aEZhY3RvcnlDb25maWd1cmF0aW9uRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iWFBhdGhGYWN0b3J5Q29uZmlndXJhdGlvbkV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC54bWwueHBhdGguWFBhdGhGYWN0b3J5Q29uZmlndXJhdGlvbkV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlhQYXRoRnVuY3Rpb24iCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJldmFsdWF0ZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJncyIgdHlwZT0iamF2YS51dGlsLkxpc3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlhQYXRoRnVuY3Rpb25FeGNlcHRpb24iIHR5cGU9ImphdmF4LnhtbC54cGF0aC5YUGF0aEZ1bmN0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJYUGF0aEZ1bmN0aW9uRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmF4LnhtbC54cGF0aC5YUGF0aEV4cHJlc3Npb25FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJYUGF0aEZ1bmN0aW9uRXhjZXB0aW9uIgorIHR5cGU9ImphdmF4LnhtbC54cGF0aC5YUGF0aEZ1bmN0aW9uRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iWFBhdGhGdW5jdGlvbkV4Y2VwdGlvbiIKKyB0eXBlPSJqYXZheC54bWwueHBhdGguWFBhdGhGdW5jdGlvbkV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlhQYXRoRnVuY3Rpb25SZXNvbHZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InJlc29sdmVGdW5jdGlvbiIKKyByZXR1cm49ImphdmF4LnhtbC54cGF0aC5YUGF0aEZ1bmN0aW9uIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZ1bmN0aW9uTmFtZSIgdHlwZT0iamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlhQYXRoVmFyaWFibGVSZXNvbHZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InJlc29sdmVWYXJpYWJsZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFyaWFibGVOYW1lIiB0eXBlPSJqYXZheC54bWwubmFtZXNwYWNlLlFOYW1lIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9Imp1bml0LmZyYW1ld29yayIKKz4KKzxjbGFzcyBuYW1lPSJBc3NlcnQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFzc2VydCIKKyB0eXBlPSJqdW5pdC5mcmFtZXdvcmsuQXNzZXJ0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFzc2VydEVxdWFscyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWQiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdHVhbCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRFcXVhbHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3R1YWwiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0RXF1YWxzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3RlZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0dWFsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzc2VydEVxdWFscyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdHVhbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRFcXVhbHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdHVhbCIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWx0YSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzc2VydEVxdWFscyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWQiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0dWFsIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbHRhIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0RXF1YWxzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3RlZCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdHVhbCIgdHlwZT0iZmxvYXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlbHRhIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRFcXVhbHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0dWFsIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVsdGEiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzc2VydEVxdWFscyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdHVhbCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRFcXVhbHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3R1YWwiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0RXF1YWxzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3RlZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0dWFsIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzc2VydEVxdWFscyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdHVhbCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRFcXVhbHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkIiB0eXBlPSJieXRlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3R1YWwiIHR5cGU9ImJ5dGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0RXF1YWxzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3RlZCIgdHlwZT0iYnl0ZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0dWFsIiB0eXBlPSJieXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzc2VydEVxdWFscyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWQiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdHVhbCIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRFcXVhbHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3R1YWwiIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0RXF1YWxzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3RlZCIgdHlwZT0ic2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdHVhbCIgdHlwZT0ic2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0RXF1YWxzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3RlZCIgdHlwZT0ic2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdHVhbCIgdHlwZT0ic2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0RXF1YWxzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleHBlY3RlZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3R1YWwiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRFcXVhbHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdHVhbCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzc2VydEZhbHNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb25kaXRpb24iIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0RmFsc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbmRpdGlvbiIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnROb3ROdWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0Tm90TnVsbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzc2VydE5vdFNhbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3R1YWwiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0Tm90U2FtZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWQiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdHVhbCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnROdWxsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmplY3QiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0TnVsbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqZWN0IiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzc2VydFNhbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGVkIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhY3R1YWwiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0U2FtZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWQiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdHVhbCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRUcnVlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb25kaXRpb24iIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0VHJ1ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29uZGl0aW9uIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZhaWwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmFpbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBc3NlcnRpb25GYWlsZWRFcnJvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuRXJyb3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBc3NlcnRpb25GYWlsZWRFcnJvciIKKyB0eXBlPSJqdW5pdC5mcmFtZXdvcmsuQXNzZXJ0aW9uRmFpbGVkRXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBc3NlcnRpb25GYWlsZWRFcnJvciIKKyB0eXBlPSJqdW5pdC5mcmFtZXdvcmsuQXNzZXJ0aW9uRmFpbGVkRXJyb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29tcGFyaXNvbkZhaWx1cmUiCisgZXh0ZW5kcz0ianVuaXQuZnJhbWV3b3JrLkFzc2VydGlvbkZhaWxlZEVycm9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29tcGFyaXNvbkZhaWx1cmUiCisgdHlwZT0ianVuaXQuZnJhbWV3b3JrLkNvbXBhcmlzb25GYWlsdXJlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwZWN0ZWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdHVhbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJQcm90ZWN0YWJsZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InByb3RlY3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlRocm93YWJsZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlRlc3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJjb3VudFRlc3RDYXNlcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJ1biIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0IiB0eXBlPSJqdW5pdC5mcmFtZXdvcmsuVGVzdFJlc3VsdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iVGVzdENhc2UiCisgZXh0ZW5kcz0ianVuaXQuZnJhbWV3b3JrLkFzc2VydCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqdW5pdC5mcmFtZXdvcmsuVGVzdCI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGVzdENhc2UiCisgdHlwZT0ianVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGVzdENhc2UiCisgdHlwZT0ianVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNvdW50VGVzdENhc2VzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVJlc3VsdCIKKyByZXR1cm49Imp1bml0LmZyYW1ld29yay5UZXN0UmVzdWx0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJ1biIKKyByZXR1cm49Imp1bml0LmZyYW1ld29yay5UZXN0UmVzdWx0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJ1biIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3VsdCIgdHlwZT0ianVuaXQuZnJhbWV3b3JrLlRlc3RSZXN1bHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icnVuQmFyZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlRocm93YWJsZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJydW5UZXN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxleGNlcHRpb24gbmFtZT0iVGhyb3dhYmxlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE5hbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFVwIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxleGNlcHRpb24gbmFtZT0iRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRlYXJEb3duIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxleGNlcHRpb24gbmFtZT0iRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlRlc3RGYWlsdXJlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUZXN0RmFpbHVyZSIKKyB0eXBlPSJqdW5pdC5mcmFtZXdvcmsuVGVzdEZhaWx1cmUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWlsZWRUZXN0IiB0eXBlPSJqdW5pdC5mcmFtZXdvcmsuVGVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGhyb3duRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZXhjZXB0aW9uTWVzc2FnZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmFpbGVkVGVzdCIKKyByZXR1cm49Imp1bml0LmZyYW1ld29yay5UZXN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRmFpbHVyZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGhyb3duRXhjZXB0aW9uIgorIHJldHVybj0iamF2YS5sYW5nLlRocm93YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0cmFjZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJmRmFpbGVkVGVzdCIKKyB0eXBlPSJqdW5pdC5mcmFtZXdvcmsuVGVzdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImZUaHJvd25FeGNlcHRpb24iCisgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iVGVzdExpc3RlbmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYWRkRXJyb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3QiIHR5cGU9Imp1bml0LmZyYW1ld29yay5UZXN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0IiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZEZhaWx1cmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3QiIHR5cGU9Imp1bml0LmZyYW1ld29yay5UZXN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0IiB0eXBlPSJqdW5pdC5mcmFtZXdvcmsuQXNzZXJ0aW9uRmFpbGVkRXJyb3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5kVGVzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVzdCIgdHlwZT0ianVuaXQuZnJhbWV3b3JrLlRlc3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRUZXN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXN0IiB0eXBlPSJqdW5pdC5mcmFtZXdvcmsuVGVzdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iVGVzdFJlc3VsdCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGVzdFJlc3VsdCIKKyB0eXBlPSJqdW5pdC5mcmFtZXdvcmsuVGVzdFJlc3VsdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRFcnJvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVzdCIgdHlwZT0ianVuaXQuZnJhbWV3b3JrLlRlc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InQiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkRmFpbHVyZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVzdCIgdHlwZT0ianVuaXQuZnJhbWV3b3JrLlRlc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InQiIHR5cGU9Imp1bml0LmZyYW1ld29yay5Bc3NlcnRpb25GYWlsZWRFcnJvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9Imp1bml0LmZyYW1ld29yay5UZXN0TGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5kVGVzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3QiIHR5cGU9Imp1bml0LmZyYW1ld29yay5UZXN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVycm9yQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlcnJvcnMiCisgcmV0dXJuPSJqYXZhLnV0aWwuRW51bWVyYXRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmYWlsdXJlQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmYWlsdXJlcyIKKyByZXR1cm49ImphdmEudXRpbC5FbnVtZXJhdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZUxpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsaXN0ZW5lciIgdHlwZT0ianVuaXQuZnJhbWV3b3JrLlRlc3RMaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJydW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXN0IiB0eXBlPSJqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icnVuQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJydW5Qcm90ZWN0ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXN0IiB0eXBlPSJqdW5pdC5mcmFtZXdvcmsuVGVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icCIgdHlwZT0ianVuaXQuZnJhbWV3b3JrLlByb3RlY3RhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNob3VsZFN0b3AiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRUZXN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVzdCIgdHlwZT0ianVuaXQuZnJhbWV3b3JrLlRlc3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RvcCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3YXNTdWNjZXNzZnVsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iZkVycm9ycyIKKyB0eXBlPSJqYXZhLnV0aWwuVmVjdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iZkZhaWx1cmVzIgorIHR5cGU9ImphdmEudXRpbC5WZWN0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmTGlzdGVuZXJzIgorIHR5cGU9ImphdmEudXRpbC5WZWN0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmUnVuVGVzdHMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlRlc3RTdWl0ZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqdW5pdC5mcmFtZXdvcmsuVGVzdCI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGVzdFN1aXRlIgorIHR5cGU9Imp1bml0LmZyYW1ld29yay5UZXN0U3VpdGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUZXN0U3VpdGUiCisgdHlwZT0ianVuaXQuZnJhbWV3b3JrLlRlc3RTdWl0ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUNsYXNzIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlRlc3RTdWl0ZSIKKyB0eXBlPSJqdW5pdC5mcmFtZXdvcmsuVGVzdFN1aXRlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhlQ2xhc3MiIHR5cGU9ImphdmEubGFuZy5DbGFzcyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGVzdFN1aXRlIgorIHR5cGU9Imp1bml0LmZyYW1ld29yay5UZXN0U3VpdGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkVGVzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3QiIHR5cGU9Imp1bml0LmZyYW1ld29yay5UZXN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZFRlc3RTdWl0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3RDbGFzcyIgdHlwZT0iamF2YS5sYW5nLkNsYXNzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvdW50VGVzdENhc2VzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVRlc3QiCisgcmV0dXJuPSJqdW5pdC5mcmFtZXdvcmsuVGVzdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGVDbGFzcyIgdHlwZT0iamF2YS5sYW5nLkNsYXNzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRlc3RDb25zdHJ1Y3RvciIKKyByZXR1cm49ImphdmEubGFuZy5yZWZsZWN0LkNvbnN0cnVjdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoZUNsYXNzIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaE1ldGhvZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLk5vU3VjaE1ldGhvZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJydW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXN1bHQiIHR5cGU9Imp1bml0LmZyYW1ld29yay5UZXN0UmVzdWx0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJ1blRlc3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXN0IiB0eXBlPSJqdW5pdC5mcmFtZXdvcmsuVGVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzdWx0IiB0eXBlPSJqdW5pdC5mcmFtZXdvcmsuVGVzdFJlc3VsdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXROYW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0ZXN0QXQiCisgcmV0dXJuPSJqdW5pdC5mcmFtZXdvcmsuVGVzdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0ZXN0Q291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGVzdHMiCisgcmV0dXJuPSJqYXZhLnV0aWwuRW51bWVyYXRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJqdW5pdC5ydW5uZXIiCis+Cis8Y2xhc3MgbmFtZT0iQmFzZVRlc3RSdW5uZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqdW5pdC5mcmFtZXdvcmsuVGVzdExpc3RlbmVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNlVGVzdFJ1bm5lciIKKyB0eXBlPSJqdW5pdC5ydW5uZXIuQmFzZVRlc3RSdW5uZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkRXJyb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3QiIHR5cGU9Imp1bml0LmZyYW1ld29yay5UZXN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0IiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZEZhaWx1cmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3QiIHR5cGU9Imp1bml0LmZyYW1ld29yay5UZXN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0IiB0eXBlPSJqdW5pdC5mcmFtZXdvcmsuQXNzZXJ0aW9uRmFpbGVkRXJyb3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJTdGF0dXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVsYXBzZWRUaW1lQXNTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJydW5UaW1lIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZFRlc3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3QiIHR5cGU9Imp1bml0LmZyYW1ld29yay5UZXN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4dHJhY3RDbGFzc05hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbGFzc05hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmlsdGVyZWRUcmFjZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idCIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGaWx0ZXJlZFRyYWNlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGFjayIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2FkZXIiCisgcmV0dXJuPSJqdW5pdC5ydW5uZXIuVGVzdFN1aXRlTG9hZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByZWZlcmVuY2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcmVmZXJlbmNlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGZsdCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByZWZlcmVuY2VzIgorIHJldHVybj0iamF2YS51dGlsLlByb3BlcnRpZXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUZXN0IgorIHJldHVybj0ianVuaXQuZnJhbWV3b3JrLlRlc3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN1aXRlQ2xhc3NOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluVkFKYXZhIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvYWRTdWl0ZUNsYXNzIgorIHJldHVybj0iamF2YS5sYW5nLkNsYXNzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdWl0ZUNsYXNzTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkNsYXNzTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJvY2Vzc0FyZ3VtZW50cyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZ3MiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJydW5GYWlsZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2F2ZVByZWZlcmVuY2VzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMb2FkaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5hYmxlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByZWZlcmVuY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByZWZlcmVuY2VzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmZXJlbmNlcyIgdHlwZT0iamF2YS51dGlsLlByb3BlcnRpZXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2hvd1N0YWNrUmF3IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0VGVzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGVzdCIgdHlwZT0ianVuaXQuZnJhbWV3b3JrLlRlc3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGVzdEVuZGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXN0TmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0ZXN0RmFpbGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0dXMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGVzdCIgdHlwZT0ianVuaXQuZnJhbWV3b3JrLlRlc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InQiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGVzdFN0YXJ0ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRlc3ROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRydW5jYXRlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVzZVJlbG9hZGluZ1Rlc3RTdWl0ZUxvYWRlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJTVUlURV9NRVRIT0ROQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3N1aXRlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iVGVzdFN1aXRlTG9hZGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ibG9hZCIKKyByZXR1cm49ImphdmEubGFuZy5DbGFzcyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdWl0ZUNsYXNzTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkNsYXNzTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVsb2FkIgorIHJldHVybj0iamF2YS5sYW5nLkNsYXNzIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFDbGFzcyIgdHlwZT0iamF2YS5sYW5nLkNsYXNzIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGFzc05vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iVmVyc2lvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImlkIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0ib3JnLmFwYWNoZS5jb21tb25zLmxvZ2dpbmciCis+Cis8aW50ZXJmYWNlIG5hbWU9IkxvZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImRlYnVnIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcmcwIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlYnVnIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcmcwIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcmcxIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVycm9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcmcwIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVycm9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcmcwIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcmcxIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZhdGFsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcmcwIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZhdGFsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcmcwIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcmcxIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluZm8iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZzAiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5mbyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJnMCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJnMSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0RlYnVnRW5hYmxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0Vycm9yRW5hYmxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0ZhdGFsRW5hYmxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0luZm9FbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzVHJhY2VFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzV2FybkVuYWJsZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idHJhY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZzAiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idHJhY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZzAiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZzEiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id2FybiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJnMCIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3YXJuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcmcwIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcmcxIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9Im9yZy5hcGFjaGUuaHR0cCIKKz4KKzxjbGFzcyBuYW1lPSJDb25uZWN0aW9uQ2xvc2VkRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEuaW8uSU9FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb25uZWN0aW9uQ2xvc2VkRXhjZXB0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5Db25uZWN0aW9uQ2xvc2VkRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDb25uZWN0aW9uUmV1c2VTdHJhdGVneSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImtlZXBBbGl2ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzcG9uc2UiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkZvcm1hdHRlZEhlYWRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0QnVmZmVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmFsdWVQb3MiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkhlYWRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldEVsZW1lbnRzIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlckVsZW1lbnRbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJQYXJzZUV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlBhcnNlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJIZWFkZXJFbGVtZW50IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJhbWV0ZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuTmFtZVZhbHVlUGFpciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtZXRlckJ5TmFtZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5OYW1lVmFsdWVQYWlyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFyYW1ldGVyQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJhbWV0ZXJzIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLk5hbWVWYWx1ZVBhaXJbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZhbHVlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iSGVhZGVyRWxlbWVudEl0ZXJhdG9yIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEudXRpbC5JdGVyYXRvciI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9Imhhc05leHQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV4dEVsZW1lbnQiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyRWxlbWVudCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iSGVhZGVySXRlcmF0b3IiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLkl0ZXJhdG9yIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iaGFzTmV4dCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0SGVhZGVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iSHR0cENsaWVudENvbm5lY3Rpb24iCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBDb25uZWN0aW9uIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZmx1c2giCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUmVzcG9uc2VBdmFpbGFibGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVvdXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVjZWl2ZVJlc3BvbnNlRW50aXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlY2VpdmVSZXNwb25zZUhlYWRlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmRSZXF1ZXN0RW50aXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEVudGl0eUVuY2xvc2luZ1JlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ikh0dHBFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kUmVxdWVzdEhlYWRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJIdHRwQ29ubmVjdGlvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNsb3NlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNZXRyaWNzIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkh0dHBDb25uZWN0aW9uTWV0cmljcyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNvY2tldFRpbWVvdXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc09wZW4iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTdGFsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTb2NrZXRUaW1lb3V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lb3V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2h1dGRvd24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iSHR0cENvbm5lY3Rpb25NZXRyaWNzIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0TWV0cmljIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXRyaWNOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlY2VpdmVkQnl0ZXNDb3VudCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXF1ZXN0Q291bnQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVzcG9uc2VDb3VudCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTZW50Qnl0ZXNDb3VudCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9Ikh0dHBFbnRpdHkiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJjb25zdW1lQ29udGVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudCIKKyByZXR1cm49ImphdmEuaW8uSW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZW50RW5jb2RpbmciCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudExlbmd0aCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZW50VHlwZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0NodW5rZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNSZXBlYXRhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU3RyZWFtaW5nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG8iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHN0cmVhbSIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iSHR0cEVudGl0eUVuY2xvc2luZ1JlcXVlc3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0Ij4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZXhwZWN0Q29udGludWUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RW50aXR5IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkh0dHBFbnRpdHkiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFbnRpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVudGl0eSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFbnRpdHkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9Ikh0dHBFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLkV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBFeGNlcHRpb24iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIdHRwRXhjZXB0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSHR0cEV4Y2VwdGlvbiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSHR0cEhvc3QiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ2xvbmVhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIdHRwSG9zdCIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3N0bmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY2hlbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBIb3N0IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwSG9zdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imhvc3RuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBIb3N0IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwSG9zdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imhvc3RuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIdHRwSG9zdCIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJodHRwaG9zdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkNsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhvc3ROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQb3J0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNjaGVtZU5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvSG9zdFN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9VUkkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iREVGQVVMVF9TQ0hFTUVfTkFNRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Imhvc3RuYW1lIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxjSG9zdG5hbWUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icG9ydCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNjaGVtZU5hbWUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJIdHRwSW5ldENvbm5lY3Rpb24iCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBDb25uZWN0aW9uIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0TG9jYWxBZGRyZXNzIgorIHJldHVybj0iamF2YS5uZXQuSW5ldEFkZHJlc3MiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhbFBvcnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZW1vdGVBZGRyZXNzIgorIHJldHVybj0iamF2YS5uZXQuSW5ldEFkZHJlc3MiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZW1vdGVQb3J0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJIdHRwTWVzc2FnZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImFkZEhlYWRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVhZGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZEhlYWRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29udGFpbnNIZWFkZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWxsSGVhZGVycyIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXJbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpcnN0SGVhZGVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhlYWRlcnMiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMYXN0SGVhZGVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtcyIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb3RvY29sVmVyc2lvbiIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbFZlcnNpb24iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoZWFkZXJJdGVyYXRvciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXJJdGVyYXRvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImhlYWRlckl0ZXJhdG9yIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlckl0ZXJhdG9yIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlSGVhZGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoZWFkZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlSGVhZGVycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRIZWFkZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhlYWRlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkhlYWRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRIZWFkZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEhlYWRlcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhlYWRlcnMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXJbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQYXJhbXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iSHR0cFJlcXVlc3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBNZXNzYWdlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0UmVxdWVzdExpbmUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuUmVxdWVzdExpbmUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9Ikh0dHBSZXF1ZXN0RmFjdG9yeSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im5ld0h0dHBSZXF1ZXN0IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3RsaW5lIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUmVxdWVzdExpbmUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik1ldGhvZE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLk1ldGhvZE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdIdHRwUmVxdWVzdCIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXRob2QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTWV0aG9kTm90U3VwcG9ydGVkRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuTWV0aG9kTm90U3VwcG9ydGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iSHR0cFJlcXVlc3RJbnRlcmNlcHRvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InByb2Nlc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJIdHRwUmVzcG9uc2UiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBNZXNzYWdlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0RW50aXR5IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkh0dHBFbnRpdHkiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhbGUiCisgcmV0dXJuPSJqYXZhLnV0aWwuTG9jYWxlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RhdHVzTGluZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5TdGF0dXNMaW5lIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RW50aXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbnRpdHkiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRW50aXR5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldExvY2FsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jIiB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJlYXNvblBocmFzZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVhc29uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RhdHVzQ29kZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RhdHVzTGluZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdHVzbGluZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlN0YXR1c0xpbmUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RhdHVzTGluZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUHJvdG9jb2xWZXJzaW9uIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RhdHVzTGluZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUHJvdG9jb2xWZXJzaW9uIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2RlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlYXNvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9Ikh0dHBSZXNwb25zZUZhY3RvcnkiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJuZXdIdHRwUmVzcG9uc2UiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlByb3RvY29sVmVyc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdHVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdIdHRwUmVzcG9uc2UiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXR1c2xpbmUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5TdGF0dXNMaW5lIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJIdHRwUmVzcG9uc2VJbnRlcmNlcHRvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InByb2Nlc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3BvbnNlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ikh0dHBFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9Ikh0dHBTZXJ2ZXJDb25uZWN0aW9uIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwQ29ubmVjdGlvbiI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImZsdXNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWNlaXZlUmVxdWVzdEVudGl0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFbnRpdHlFbmNsb3NpbmdSZXF1ZXN0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVjZWl2ZVJlcXVlc3RIZWFkZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlcXVlc3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlbmRSZXNwb25zZUVudGl0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzcG9uc2UiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ikh0dHBFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kUmVzcG9uc2VIZWFkZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3BvbnNlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJIdHRwU3RhdHVzIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxmaWVsZCBuYW1lPSJTQ19BQ0NFUFRFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ19CQURfR0FURVdBWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUwMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ19CQURfUkVRVUVTVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ19DT05GTElDVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQwOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ19DT05USU5VRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ19DUkVBVEVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjAxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDX0VYUEVDVEFUSU9OX0ZBSUxFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQxNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ19GQUlMRURfREVQRU5ERU5DWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQyNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ19GT1JCSURERU4iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MDMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NfR0FURVdBWV9USU1FT1VUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTA0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDX0dPTkUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NfSFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NfSU5TVUZGSUNJRU5UX1NQQUNFX09OX1JFU09VUkNFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDE5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDX0lOU1VGRklDSUVOVF9TVE9SQUdFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTA3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDX0lOVEVSTkFMX1NFUlZFUl9FUlJPUiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ19MRU5HVEhfUkVRVUlSRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NfTE9DS0VEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDX01FVEhPRF9GQUlMVVJFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDX01FVEhPRF9OT1RfQUxMT1dFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQwNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ19NT1ZFRF9QRVJNQU5FTlRMWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMwMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ19NT1ZFRF9URU1QT1JBUklMWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMwMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ19NVUxUSVBMRV9DSE9JQ0VTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDX01VTFRJX1NUQVRVUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ19OT05fQVVUSE9SSVRBVElWRV9JTkZPUk1BVElPTiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ19OT1RfQUNDRVBUQUJMRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQwNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ19OT1RfRk9VTkQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NfTk9UX0lNUExFTUVOVEVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNTAxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDX05PVF9NT0RJRklFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMwNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ19OT19DT05URU5UIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjA0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDX09LIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDX1BBUlRJQUxfQ09OVEVOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIwNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ19QQVlNRU5UX1JFUVVJUkVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDAyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDX1BSRUNPTkRJVElPTl9GQUlMRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NfUFJPQ0VTU0lORyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ19QUk9YWV9BVVRIRU5USUNBVElPTl9SRVFVSVJFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQwNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ19SRVFVRVNURURfUkFOR0VfTk9UX1NBVElTRklBQkxFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDX1JFUVVFU1RfVElNRU9VVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQwOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ19SRVFVRVNUX1RPT19MT05HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDEzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDX1JFUVVFU1RfVVJJX1RPT19MT05HIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDE0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDX1JFU0VUX0NPTlRFTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyMDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NfU0VFX09USEVSIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzAzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDX1NFUlZJQ0VfVU5BVkFJTEFCTEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI1MDMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NfU1dJVENISU5HX1BST1RPQ09MUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTQ19URU1QT1JBUllfUkVESVJFQ1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMDciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NfVU5BVVRIT1JJWkVEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDAxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDX1VOUFJPQ0VTU0FCTEVfRU5USVRZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNDIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNDX1VOU1VQUE9SVEVEX01FRElBX1RZUEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0MTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NfVVNFX1BST1hZIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzA1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iSHR0cFZlcnNpb24iCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLlByb3RvY29sVmVyc2lvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iSHR0cFZlcnNpb24iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBWZXJzaW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFqb3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWlub3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8ZmllbGQgbmFtZT0iSFRUUCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtIVFRQJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhUVFBfMF85IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwVmVyc2lvbiIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIVFRQXzFfMCIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFZlcnNpb24iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSFRUUF8xXzEiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBWZXJzaW9uIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNYWxmb3JtZWRDaHVua0NvZGluZ0V4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmlvLklPRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTWFsZm9ybWVkQ2h1bmtDb2RpbmdFeGNlcHRpb24iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLk1hbGZvcm1lZENodW5rQ29kaW5nRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTWFsZm9ybWVkQ2h1bmtDb2RpbmdFeGNlcHRpb24iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLk1hbGZvcm1lZENodW5rQ29kaW5nRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik1ldGhvZE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1ldGhvZE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuTWV0aG9kTm90U3VwcG9ydGVkRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTWV0aG9kTm90U3VwcG9ydGVkRXhjZXB0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5NZXRob2ROb3RTdXBwb3J0ZWRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJOYW1lVmFsdWVQYWlyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iTm9IdHRwUmVzcG9uc2VFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5pby5JT0V4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik5vSHR0cFJlc3BvbnNlRXhjZXB0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5Ob0h0dHBSZXNwb25zZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQYXJzZUV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBhcnNlRXhjZXB0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5QYXJzZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBhcnNlRXhjZXB0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5QYXJzZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQcm90b2NvbEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByb3RvY29sRXhjZXB0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByb3RvY29sRXhjZXB0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByb3RvY29sRXhjZXB0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUHJvdG9jb2xWZXJzaW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5DbG9uZWFibGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlByb3RvY29sVmVyc2lvbiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUHJvdG9jb2xWZXJzaW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvdG9jb2wiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1ham9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbm9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkNsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tcGFyZVRvVmVyc2lvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhhdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlByb3RvY29sVmVyc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlcXVhbHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iaiIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JWZXJzaW9uIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLlByb3RvY29sVmVyc2lvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFqb3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWlub3IiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYWpvciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1pbm9yIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvdG9jb2wiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ3JlYXRlckVxdWFscyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmVyc2lvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlByb3RvY29sVmVyc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNoQ29kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ29tcGFyYWJsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRoYXQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbFZlcnNpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGVzc0VxdWFscyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmVyc2lvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlByb3RvY29sVmVyc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Im1ham9yIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibWlub3IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwcm90b2NvbCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IlJlYXNvblBocmFzZUNhdGFsb2ciCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRSZWFzb24iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXR1cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2MiIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJSZXF1ZXN0TGluZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldE1ldGhvZCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm90b2NvbFZlcnNpb24iCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuUHJvdG9jb2xWZXJzaW9uIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VXJpIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iU3RhdHVzTGluZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldFByb3RvY29sVmVyc2lvbiIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbFZlcnNpb24iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZWFzb25QaHJhc2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RhdHVzQ29kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iVG9rZW5JdGVyYXRvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuSXRlcmF0b3IiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJoYXNOZXh0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHRUb2tlbiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iVW5zdXBwb3J0ZWRIdHRwVmVyc2lvbkV4Y2VwdGlvbiIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuUHJvdG9jb2xFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVbnN1cHBvcnRlZEh0dHBWZXJzaW9uRXhjZXB0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5VbnN1cHBvcnRlZEh0dHBWZXJzaW9uRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVW5zdXBwb3J0ZWRIdHRwVmVyc2lvbkV4Y2VwdGlvbiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuVW5zdXBwb3J0ZWRIdHRwVmVyc2lvbkV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoIgorPgorPGNsYXNzIG5hbWU9IkFVVEgiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iUFJPWFlfQVVUSCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtQcm94eS1BdXRoZW50aWNhdGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUFJPWFlfQVVUSF9SRVNQIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O1Byb3h5LUF1dGhvcml6YXRpb24mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV1dXX0FVVEgiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7V1dXLUF1dGhlbnRpY2F0ZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJXV1dfQVVUSF9SRVNQIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O0F1dGhvcml6YXRpb24mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJBdXRoU2NoZW1lIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYXV0aGVudGljYXRlIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjcmVkZW50aWFscyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmF1dGguQ3JlZGVudGlhbHMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQXV0aGVudGljYXRpb25FeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLkF1dGhlbnRpY2F0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtZXRlciIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZWFsbSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTY2hlbWVOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ29tcGxldGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNDb25uZWN0aW9uQmFzZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJvY2Vzc0NoYWxsZW5nZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVhZGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRDaGFsbGVuZ2VFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLk1hbGZvcm1lZENoYWxsZW5nZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkF1dGhTY2hlbWVGYWN0b3J5IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ibmV3SW5zdGFuY2UiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuYXV0aC5BdXRoU2NoZW1lIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJBdXRoU2NoZW1lUmVnaXN0cnkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXV0aFNjaGVtZVJlZ2lzdHJ5IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLkF1dGhTY2hlbWVSZWdpc3RyeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRBdXRoU2NoZW1lIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmF1dGguQXV0aFNjaGVtZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNjaGVtZU5hbWVzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3RlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFjdG9yeSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmF1dGguQXV0aFNjaGVtZUZhY3RvcnkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SXRlbXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1hcCIgdHlwZT0iamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCBvcmcuYXBhY2hlLmh0dHAuYXV0aC5BdXRoU2NoZW1lRmFjdG9yeSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5yZWdpc3RlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBdXRoU2NvcGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkF1dGhTY29wZSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuYXV0aC5BdXRoU2NvcGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlYWxtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY2hlbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkF1dGhTY29wZSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuYXV0aC5BdXRoU2NvcGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlYWxtIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBdXRoU2NvcGUiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmF1dGguQXV0aFNjb3BlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBdXRoU2NvcGUiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmF1dGguQXV0aFNjb3BlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0aHNjb3BlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuYXV0aC5BdXRoU2NvcGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRIb3N0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQb3J0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlYWxtIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTY2hlbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1hdGNoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aGF0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuYXV0aC5BdXRoU2NvcGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBTlkiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmF1dGguQXV0aFNjb3BlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFOWV9IT1NUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQU5ZX1BPUlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBTllfUkVBTE0iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBTllfU0NIRU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkF1dGhTdGF0ZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXV0aFN0YXRlIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLkF1dGhTdGF0ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRBdXRoU2NoZW1lIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmF1dGguQXV0aFNjaGVtZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdXRoU2NvcGUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuYXV0aC5BdXRoU2NvcGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3JlZGVudGlhbHMiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuYXV0aC5DcmVkZW50aWFscyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnZhbGlkYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1ZhbGlkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBdXRoU2NoZW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0aFNjaGVtZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmF1dGguQXV0aFNjaGVtZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBdXRoU2NvcGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhdXRoU2NvcGUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLkF1dGhTY29wZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDcmVkZW50aWFscyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNyZWRlbnRpYWxzIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuYXV0aC5DcmVkZW50aWFscyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBdXRoZW50aWNhdGlvbkV4Y2VwdGlvbiIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuUHJvdG9jb2xFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBdXRoZW50aWNhdGlvbkV4Y2VwdGlvbiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuYXV0aC5BdXRoZW50aWNhdGlvbkV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkF1dGhlbnRpY2F0aW9uRXhjZXB0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLkF1dGhlbnRpY2F0aW9uRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXV0aGVudGljYXRpb25FeGNlcHRpb24iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmF1dGguQXV0aGVudGljYXRpb25FeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJhc2ljVXNlclByaW5jaXBhbCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEuc2VjdXJpdHkuUHJpbmNpcGFsIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY1VzZXJQcmluY2lwYWwiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmF1dGguQmFzaWNVc2VyUHJpbmNpcGFsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXNlcm5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ3JlZGVudGlhbHMiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRQYXNzd29yZCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVc2VyUHJpbmNpcGFsIgorIHJldHVybj0iamF2YS5zZWN1cml0eS5QcmluY2lwYWwiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iSW52YWxpZENyZWRlbnRpYWxzRXhjZXB0aW9uIgorIGV4dGVuZHM9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLkF1dGhlbnRpY2F0aW9uRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW52YWxpZENyZWRlbnRpYWxzRXhjZXB0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLkludmFsaWRDcmVkZW50aWFsc0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkludmFsaWRDcmVkZW50aWFsc0V4Y2VwdGlvbiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuYXV0aC5JbnZhbGlkQ3JlZGVudGlhbHNFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnZhbGlkQ3JlZGVudGlhbHNFeGNlcHRpb24iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmF1dGguSW52YWxpZENyZWRlbnRpYWxzRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJNYWxmb3JtZWRDaGFsbGVuZ2VFeGNlcHRpb24iCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLlByb3RvY29sRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTWFsZm9ybWVkQ2hhbGxlbmdlRXhjZXB0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLk1hbGZvcm1lZENoYWxsZW5nZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik1hbGZvcm1lZENoYWxsZW5nZUV4Y2VwdGlvbiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuYXV0aC5NYWxmb3JtZWRDaGFsbGVuZ2VFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNYWxmb3JtZWRDaGFsbGVuZ2VFeGNlcHRpb24iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmF1dGguTWFsZm9ybWVkQ2hhbGxlbmdlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJOVENyZWRlbnRpYWxzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLkNyZWRlbnRpYWxzIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOVENyZWRlbnRpYWxzIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLk5UQ3JlZGVudGlhbHMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1c2VybmFtZVBhc3N3b3JkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOVENyZWRlbnRpYWxzIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLk5UQ3JlZGVudGlhbHMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1c2VyTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFzc3dvcmQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndvcmtzdGF0aW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkb21haW4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXREb21haW4iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhc3N3b3JkIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVc2VyTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VXNlclByaW5jaXBhbCIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHJpbmNpcGFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFdvcmtzdGF0aW9uIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJOVFVzZXJQcmluY2lwYWwiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5zZWN1cml0eS5QcmluY2lwYWwiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik5UVXNlclByaW5jaXBhbCIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuYXV0aC5OVFVzZXJQcmluY2lwYWwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkb21haW4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVzZXJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0RG9tYWluIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVc2VybmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iVXNlcm5hbWVQYXNzd29yZENyZWRlbnRpYWxzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLkNyZWRlbnRpYWxzIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVc2VybmFtZVBhc3N3b3JkQ3JlZGVudGlhbHMiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmF1dGguVXNlcm5hbWVQYXNzd29yZENyZWRlbnRpYWxzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXNlcm5hbWVQYXNzd29yZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVXNlcm5hbWVQYXNzd29yZENyZWRlbnRpYWxzIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLlVzZXJuYW1lUGFzc3dvcmRDcmVkZW50aWFscyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVzZXJOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXNzd29yZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldFBhc3N3b3JkIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVc2VyTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VXNlclByaW5jaXBhbCIKKyByZXR1cm49ImphdmEuc2VjdXJpdHkuUHJpbmNpcGFsIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmF1dGgucGFyYW1zIgorPgorPGludGVyZmFjZSBuYW1lPSJBdXRoUE5hbWVzIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxmaWVsZCBuYW1lPSJDUkVERU5USUFMX0NIQVJTRVQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cC5hdXRoLmNyZWRlbnRpYWwtY2hhcnNldCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkF1dGhQYXJhbUJlYW4iCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwQWJzdHJhY3RQYXJhbUJlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBdXRoUGFyYW1CZWFuIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLnBhcmFtcy5BdXRoUGFyYW1CZWFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJzZXRDcmVkZW50aWFsQ2hhcnNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYXJzZXQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQXV0aFBhcmFtcyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0Q3JlZGVudGlhbENoYXJzZXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENyZWRlbnRpYWxDaGFyc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhcnNldCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQiCis+Cis8aW50ZXJmYWNlIG5hbWU9IkF1dGhlbnRpY2F0aW9uSGFuZGxlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldENoYWxsZW5nZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTWFwJmx0O2phdmEubGFuZy5TdHJpbmcsIG9yZy5hcGFjaGUuaHR0cC5IZWFkZXImZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3BvbnNlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik1hbGZvcm1lZENoYWxsZW5nZUV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmF1dGguTWFsZm9ybWVkQ2hhbGxlbmdlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQXV0aGVudGljYXRpb25SZXF1ZXN0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3BvbnNlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VsZWN0U2NoZW1lIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmF1dGguQXV0aFNjaGVtZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGFsbGVuZ2VzIiB0eXBlPSJqYXZhLnV0aWwuTWFwJmx0O2phdmEubGFuZy5TdHJpbmcsIG9yZy5hcGFjaGUuaHR0cC5IZWFkZXImZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJBdXRoZW50aWNhdGlvbkV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmF1dGguQXV0aGVudGljYXRpb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkNpcmN1bGFyUmVkaXJlY3RFeGNlcHRpb24iCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5SZWRpcmVjdEV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNpcmN1bGFyUmVkaXJlY3RFeGNlcHRpb24iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5DaXJjdWxhclJlZGlyZWN0RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2lyY3VsYXJSZWRpcmVjdEV4Y2VwdGlvbiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LkNpcmN1bGFyUmVkaXJlY3RFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDaXJjdWxhclJlZGlyZWN0RXhjZXB0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuQ2lyY3VsYXJSZWRpcmVjdEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2xpZW50UHJvdG9jb2xFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5pby5JT0V4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNsaWVudFByb3RvY29sRXhjZXB0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuQ2xpZW50UHJvdG9jb2xFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDbGllbnRQcm90b2NvbEV4Y2VwdGlvbiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LkNsaWVudFByb3RvY29sRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2xpZW50UHJvdG9jb2xFeGNlcHRpb24iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5DbGllbnRQcm90b2NvbEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDbGllbnRQcm90b2NvbEV4Y2VwdGlvbiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LkNsaWVudFByb3RvY29sRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ29va2llU3RvcmUiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJhZGRDb29raWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb2tpZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJFeHBpcmVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRlIiB0eXBlPSJqYXZhLnV0aWwuRGF0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb29raWVzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7b3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWUmZ3Q7IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJDcmVkZW50aWFsc1Byb3ZpZGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY2xlYXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3JlZGVudGlhbHMiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuYXV0aC5DcmVkZW50aWFscyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhdXRoc2NvcGUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLkF1dGhTY29wZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDcmVkZW50aWFscyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXV0aHNjb3BlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuYXV0aC5BdXRoU2NvcGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNyZWRlbnRpYWxzIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuYXV0aC5DcmVkZW50aWFscyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9Ikh0dHBDbGllbnQiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJleGVjdXRlIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lm1ldGhvZHMuSHR0cFVyaVJlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNsaWVudFByb3RvY29sRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LkNsaWVudFByb3RvY29sRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJleGVjdXRlIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lm1ldGhvZHMuSHR0cFVyaVJlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2xpZW50UHJvdG9jb2xFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuQ2xpZW50UHJvdG9jb2xFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4ZWN1dGUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNsaWVudFByb3RvY29sRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LkNsaWVudFByb3RvY29sRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJleGVjdXRlIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwSG9zdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNsaWVudFByb3RvY29sRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LkNsaWVudFByb3RvY29sRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJleGVjdXRlIgorIHJldHVybj0iVCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lm1ldGhvZHMuSHR0cFVyaVJlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3BvbnNlSGFuZGxlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5SZXNwb25zZUhhbmRsZXImbHQ7PyBleHRlbmRzIFQmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGllbnRQcm90b2NvbEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5DbGllbnRQcm90b2NvbEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhlY3V0ZSIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5tZXRob2RzLkh0dHBVcmlSZXF1ZXN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZUhhbmRsZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuUmVzcG9uc2VIYW5kbGVyJmx0Oz8gZXh0ZW5kcyBUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGllbnRQcm90b2NvbEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5DbGllbnRQcm90b2NvbEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhlY3V0ZSIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzcG9uc2VIYW5kbGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LlJlc3BvbnNlSGFuZGxlciZsdDs/IGV4dGVuZHMgVCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNsaWVudFByb3RvY29sRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LkNsaWVudFByb3RvY29sRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJleGVjdXRlIgorIHJldHVybj0iVCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwSG9zdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZUhhbmRsZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuUmVzcG9uc2VIYW5kbGVyJmx0Oz8gZXh0ZW5kcyBUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGllbnRQcm90b2NvbEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5DbGllbnRQcm90b2NvbEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29ubmVjdGlvbk1hbmFnZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5DbGllbnRDb25uZWN0aW9uTWFuYWdlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtcyIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iSHR0cFJlcXVlc3RSZXRyeUhhbmRsZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJyZXRyeVJlcXVlc3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhlY3V0aW9uQ291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJIdHRwUmVzcG9uc2VFeGNlcHRpb24iCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5DbGllbnRQcm90b2NvbEV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBSZXNwb25zZUV4Y2VwdGlvbiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lkh0dHBSZXNwb25zZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXR1c0NvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldFN0YXR1c0NvZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTm9uUmVwZWF0YWJsZVJlcXVlc3RFeGNlcHRpb24iCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLlByb3RvY29sRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTm9uUmVwZWF0YWJsZVJlcXVlc3RFeGNlcHRpb24iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5Ob25SZXBlYXRhYmxlUmVxdWVzdEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik5vblJlcGVhdGFibGVSZXF1ZXN0RXhjZXB0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuTm9uUmVwZWF0YWJsZVJlcXVlc3RFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmVkaXJlY3RFeGNlcHRpb24iCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLlByb3RvY29sRXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVkaXJlY3RFeGNlcHRpb24iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5SZWRpcmVjdEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlZGlyZWN0RXhjZXB0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuUmVkaXJlY3RFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZWRpcmVjdEV4Y2VwdGlvbiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LlJlZGlyZWN0RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iUmVkaXJlY3RIYW5kbGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0TG9jYXRpb25VUkkiCisgcmV0dXJuPSJqYXZhLm5ldC5VUkkiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzcG9uc2UiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUHJvdG9jb2xFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1JlZGlyZWN0UmVxdWVzdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iUmVxdWVzdERpcmVjdG9yIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZXhlY3V0ZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJSZXNwb25zZUhhbmRsZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJoYW5kbGVSZXNwb25zZSIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzcG9uc2UiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNsaWVudFByb3RvY29sRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LkNsaWVudFByb3RvY29sRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlVzZXJUb2tlbkhhbmRsZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRVc2VyVG9rZW4iCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LmVudGl0eSIKKz4KKzxjbGFzcyBuYW1lPSJVcmxFbmNvZGVkRm9ybUVudGl0eSIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuZW50aXR5LlN0cmluZ0VudGl0eSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlVybEVuY29kZWRGb3JtRW50aXR5IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuZW50aXR5LlVybEVuY29kZWRGb3JtRW50aXR5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVycyIgdHlwZT0iamF2YS51dGlsLkxpc3QmbHQ7PyBleHRlbmRzIG9yZy5hcGFjaGUuaHR0cC5OYW1lVmFsdWVQYWlyJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5jb2RpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVXJsRW5jb2RlZEZvcm1FbnRpdHkiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5lbnRpdHkuVXJsRW5jb2RlZEZvcm1FbnRpdHkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbWV0ZXJzIiB0eXBlPSJqYXZhLnV0aWwuTGlzdCZsdDs/IGV4dGVuZHMgb3JnLmFwYWNoZS5odHRwLk5hbWVWYWx1ZVBhaXImZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQubWV0aG9kcyIKKz4KKzxpbnRlcmZhY2UgbmFtZT0iQWJvcnRhYmxlSHR0cFJlcXVlc3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJhYm9ydCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb25uZWN0aW9uUmVxdWVzdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29ublJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNsaWVudENvbm5lY3Rpb25SZXF1ZXN0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZWxlYXNlVHJpZ2dlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVsZWFzZVRyaWdnZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNvbm5lY3Rpb25SZWxlYXNlVHJpZ2dlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9Ikh0dHBEZWxldGUiCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5tZXRob2RzLkh0dHBSZXF1ZXN0QmFzZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBEZWxldGUiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5tZXRob2RzLkh0dHBEZWxldGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIdHRwRGVsZXRlIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQubWV0aG9kcy5IdHRwRGVsZXRlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLm5ldC5VUkkiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBEZWxldGUiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5tZXRob2RzLkh0dHBEZWxldGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRNZXRob2QiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iTUVUSE9EX05BTUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7REVMRVRFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJIdHRwRW50aXR5RW5jbG9zaW5nUmVxdWVzdEJhc2UiCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5tZXRob2RzLkh0dHBSZXF1ZXN0QmFzZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEVudGl0eUVuY2xvc2luZ1JlcXVlc3QiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBFbnRpdHlFbmNsb3NpbmdSZXF1ZXN0QmFzZSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lm1ldGhvZHMuSHR0cEVudGl0eUVuY2xvc2luZ1JlcXVlc3RCYXNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImV4cGVjdENvbnRpbnVlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbnRpdHkiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEVudGl0eSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFbnRpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbnRpdHkiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRW50aXR5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ikh0dHBHZXQiCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5tZXRob2RzLkh0dHBSZXF1ZXN0QmFzZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBHZXQiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5tZXRob2RzLkh0dHBHZXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIdHRwR2V0IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQubWV0aG9kcy5IdHRwR2V0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLm5ldC5VUkkiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBHZXQiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5tZXRob2RzLkh0dHBHZXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRNZXRob2QiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iTUVUSE9EX05BTUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7R0VUJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJIdHRwSGVhZCIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lm1ldGhvZHMuSHR0cFJlcXVlc3RCYXNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSHR0cEhlYWQiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5tZXRob2RzLkh0dHBIZWFkIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSHR0cEhlYWQiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5tZXRob2RzLkh0dHBIZWFkIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLm5ldC5VUkkiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBIZWFkIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQubWV0aG9kcy5IdHRwSGVhZCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldE1ldGhvZCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJNRVRIT0RfTkFNRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtIRUFEJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJIdHRwT3B0aW9ucyIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lm1ldGhvZHMuSHR0cFJlcXVlc3RCYXNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSHR0cE9wdGlvbnMiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5tZXRob2RzLkh0dHBPcHRpb25zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSHR0cE9wdGlvbnMiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5tZXRob2RzLkh0dHBPcHRpb25zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLm5ldC5VUkkiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBPcHRpb25zIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQubWV0aG9kcy5IdHRwT3B0aW9ucyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEFsbG93ZWRNZXRob2RzIgorIHJldHVybj0iamF2YS51dGlsLlNldCZsdDtqYXZhLmxhbmcuU3RyaW5nJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzcG9uc2UiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWV0aG9kIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Ik1FVEhPRF9OQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O09QVElPTlMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ikh0dHBQb3N0IgorIGV4dGVuZHM9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQubWV0aG9kcy5IdHRwRW50aXR5RW5jbG9zaW5nUmVxdWVzdEJhc2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIdHRwUG9zdCIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lm1ldGhvZHMuSHR0cFBvc3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIdHRwUG9zdCIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lm1ldGhvZHMuSHR0cFBvc3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubmV0LlVSSSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSHR0cFBvc3QiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5tZXRob2RzLkh0dHBQb3N0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0TWV0aG9kIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Ik1FVEhPRF9OQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O1BPU1QmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ikh0dHBQdXQiCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5tZXRob2RzLkh0dHBFbnRpdHlFbmNsb3NpbmdSZXF1ZXN0QmFzZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBQdXQiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5tZXRob2RzLkh0dHBQdXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIdHRwUHV0IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQubWV0aG9kcy5IdHRwUHV0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLm5ldC5VUkkiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBQdXQiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5tZXRob2RzLkh0dHBQdXQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRNZXRob2QiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iTUVUSE9EX05BTUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7UFVUJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJIdHRwUmVxdWVzdEJhc2UiCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuQWJzdHJhY3RIdHRwTWVzc2FnZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lm1ldGhvZHMuQWJvcnRhYmxlSHR0cFJlcXVlc3QiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lm1ldGhvZHMuSHR0cFVyaVJlcXVlc3QiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBSZXF1ZXN0QmFzZSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lm1ldGhvZHMuSHR0cFJlcXVlc3RCYXNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFib3J0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkNsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWV0aG9kIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb3RvY29sVmVyc2lvbiIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbFZlcnNpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVxdWVzdExpbmUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuUmVxdWVzdExpbmUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VVJJIgorIHJldHVybj0iamF2YS5uZXQuVVJJIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQWJvcnRlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29ubmVjdGlvblJlcXVlc3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb25uUmVxdWVzdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uQ2xpZW50Q29ubmVjdGlvblJlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJlbGVhc2VUcmlnZ2VyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVsZWFzZVRyaWdnZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNvbm5lY3Rpb25SZWxlYXNlVHJpZ2dlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VVJJIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLm5ldC5VUkkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSHR0cFRyYWNlIgorIGV4dGVuZHM9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQubWV0aG9kcy5IdHRwUmVxdWVzdEJhc2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIdHRwVHJhY2UiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5tZXRob2RzLkh0dHBUcmFjZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBUcmFjZSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lm1ldGhvZHMuSHR0cFRyYWNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLm5ldC5VUkkiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBUcmFjZSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lm1ldGhvZHMuSHR0cFRyYWNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0TWV0aG9kIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Ik1FVEhPRF9OQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O1RSQUNFJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iSHR0cFVyaVJlcXVlc3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0Ij4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iYWJvcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWV0aG9kIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFVSSSIKKyByZXR1cm49ImphdmEubmV0LlVSSSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQWJvcnRlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LnBhcmFtcyIKKz4KKzxpbnRlcmZhY2UgbmFtZT0iQWxsQ2xpZW50UE5hbWVzIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLnBhcmFtcy5BdXRoUE5hbWVzIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQucGFyYW1zLkNsaWVudFBOYW1lcyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5wYXJhbXMuQ29ubkNvbm5lY3Rpb25QTmFtZXMiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucGFyYW1zLkNvbm5NYW5hZ2VyUE5hbWVzIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnBhcmFtcy5Db25uUm91dGVQTmFtZXMiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5wYXJhbXMuQ29va2llU3BlY1BOYW1lcyI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkNvcmVDb25uZWN0aW9uUE5hbWVzIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuQ29yZVByb3RvY29sUE5hbWVzIj4KKzwvaW1wbGVtZW50cz4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkF1dGhQb2xpY3kiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iQkFTSUMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7QmFzaWMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRElHRVNUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O0RpZ2VzdCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOVExNIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O05UTE0mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDbGllbnRQTmFtZXMiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGZpZWxkIG5hbWU9IkFMTE9XX0NJUkNVTEFSX1JFRElSRUNUUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwLnByb3RvY29sLmFsbG93LWNpcmN1bGFyLXJlZGlyZWN0cyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05ORUNUSU9OX01BTkFHRVJfRkFDVE9SWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwLmNvbm5lY3Rpb24tbWFuYWdlci5mYWN0b3J5LW9iamVjdCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05ORUNUSU9OX01BTkFHRVJfRkFDVE9SWV9DTEFTU19OQU1FIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHAuY29ubmVjdGlvbi1tYW5hZ2VyLmZhY3RvcnktY2xhc3MtbmFtZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT09LSUVfUE9MSUNZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHAucHJvdG9jb2wuY29va2llLXBvbGljeSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUX0hFQURFUlMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cC5kZWZhdWx0LWhlYWRlcnMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVGQVVMVF9IT1NUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHAuZGVmYXVsdC1ob3N0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhBTkRMRV9BVVRIRU5USUNBVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwLnByb3RvY29sLmhhbmRsZS1hdXRoZW50aWNhdGlvbiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIQU5ETEVfUkVESVJFQ1RTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHAucHJvdG9jb2wuaGFuZGxlLXJlZGlyZWN0cyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNQVhfUkVESVJFQ1RTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHAucHJvdG9jb2wubWF4LXJlZGlyZWN0cyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRUpFQ1RfUkVMQVRJVkVfUkVESVJFQ1QiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cC5wcm90b2NvbC5yZWplY3QtcmVsYXRpdmUtcmVkaXJlY3QmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVklSVFVBTF9IT1NUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHAudmlydHVhbC1ob3N0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ2xpZW50UGFyYW1CZWFuIgorIGV4dGVuZHM9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cEFic3RyYWN0UGFyYW1CZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ2xpZW50UGFyYW1CZWFuIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQucGFyYW1zLkNsaWVudFBhcmFtQmVhbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ic2V0QWxsb3dDaXJjdWxhclJlZGlyZWN0cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsbG93IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbm5lY3Rpb25NYW5hZ2VyRmFjdG9yeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY3RvcnkiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNsaWVudENvbm5lY3Rpb25NYW5hZ2VyRmFjdG9yeSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb25uZWN0aW9uTWFuYWdlckZhY3RvcnlDbGFzc05hbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmYWN0b3J5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvb2tpZVBvbGljeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvbGljeSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREZWZhdWx0SGVhZGVycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhlYWRlcnMiIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0O29yZy5hcGFjaGUuaHR0cC5IZWFkZXImZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERlZmF1bHRIb3N0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEhhbmRsZUF1dGhlbnRpY2F0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEhhbmRsZVJlZGlyZWN0cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhhbmRsZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNYXhSZWRpcmVjdHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXhSZWRpcmVjdHMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZWplY3RSZWxhdGl2ZVJlZGlyZWN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVqZWN0IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZpcnR1YWxIb3N0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNvb2tpZVBvbGljeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxmaWVsZCBuYW1lPSJCRVNUX01BVENIIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2Jlc3QtbWF0Y2gmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQlJPV1NFUl9DT01QQVRJQklMSVRZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2NvbXBhdGliaWxpdHkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTkVUU0NBUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7bmV0c2NhcGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUkZDXzIxMDkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7cmZjMjEwOSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJSRkNfMjk2NSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtyZmMyOTY1JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJIdHRwQ2xpZW50UGFyYW1zIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0Q29va2llUG9saWN5IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0F1dGhlbnRpY2F0aW5nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1JlZGlyZWN0aW5nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBdXRoZW50aWNhdGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvb2tpZVBvbGljeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb2tpZVBvbGljeSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZWRpcmVjdGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5wcm90b2NvbCIKKz4KKzxpbnRlcmZhY2UgbmFtZT0iQ2xpZW50Q29udGV4dCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iQVVUSFNDSEVNRV9SRUdJU1RSWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwLmF1dGhzY2hlbWUtcmVnaXN0cnkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQVVUSF9TQ0hFTUVfUFJFRiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwLmF1dGguc2NoZW1lLXByZWYmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09PS0lFU1BFQ19SRUdJU1RSWSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwLmNvb2tpZXNwZWMtcmVnaXN0cnkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09PS0lFX09SSUdJTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwLmNvb2tpZS1vcmlnaW4mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09PS0lFX1NQRUMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cC5jb29raWUtc3BlYyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT09LSUVfU1RPUkUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cC5jb29raWUtc3RvcmUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ1JFRFNfUFJPVklERVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cC5hdXRoLmNyZWRlbnRpYWxzLXByb3ZpZGVyJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBST1hZX0FVVEhfU1RBVEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cC5hdXRoLnByb3h5LXNjb3BlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRBUkdFVF9BVVRIX1NUQVRFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHAuYXV0aC50YXJnZXQtc2NvcGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVVNFUl9UT0tFTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwLnVzZXItdG9rZW4mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJDbGllbnRDb250ZXh0Q29uZmlndXJlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LnByb3RvY29sLkNsaWVudENvbnRleHQiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNsaWVudENvbnRleHRDb25maWd1cmVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQucHJvdG9jb2wuQ2xpZW50Q29udGV4dENvbmZpZ3VyZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJzZXRBdXRoU2NoZW1lUHJlZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3QiIHR5cGU9ImphdmEudXRpbC5MaXN0Jmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEF1dGhTY2hlbWVSZWdpc3RyeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlZ2lzdHJ5IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuYXV0aC5BdXRoU2NoZW1lUmVnaXN0cnkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29va2llU3BlY1JlZ2lzdHJ5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVnaXN0cnkiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llU3BlY1JlZ2lzdHJ5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvb2tpZVN0b3JlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RvcmUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuQ29va2llU3RvcmUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q3JlZGVudGlhbHNQcm92aWRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LkNyZWRlbnRpYWxzUHJvdmlkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmVxdWVzdEFkZENvb2tpZXMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0SW50ZXJjZXB0b3IiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlcXVlc3RBZGRDb29raWVzIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQucHJvdG9jb2wuUmVxdWVzdEFkZENvb2tpZXMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0icHJvY2VzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmVxdWVzdERlZmF1bHRIZWFkZXJzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdEludGVyY2VwdG9yIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZXF1ZXN0RGVmYXVsdEhlYWRlcnMiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5wcm90b2NvbC5SZXF1ZXN0RGVmYXVsdEhlYWRlcnMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0icHJvY2VzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmVxdWVzdFByb3h5QXV0aGVudGljYXRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0SW50ZXJjZXB0b3IiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlcXVlc3RQcm94eUF1dGhlbnRpY2F0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQucHJvdG9jb2wuUmVxdWVzdFByb3h5QXV0aGVudGljYXRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0icHJvY2VzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmVxdWVzdFRhcmdldEF1dGhlbnRpY2F0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdEludGVyY2VwdG9yIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZXF1ZXN0VGFyZ2V0QXV0aGVudGljYXRpb24iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5wcm90b2NvbC5SZXF1ZXN0VGFyZ2V0QXV0aGVudGljYXRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0icHJvY2VzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmVzcG9uc2VQcm9jZXNzQ29va2llcyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlSW50ZXJjZXB0b3IiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlc3BvbnNlUHJvY2Vzc0Nvb2tpZXMiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5wcm90b2NvbC5SZXNwb25zZVByb2Nlc3NDb29raWVzIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InByb2Nlc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LnV0aWxzIgorPgorPGNsYXNzIG5hbWU9IkNsb25lVXRpbHMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2JqIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkNsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlVSSVV0aWxzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY3JlYXRlVVJJIgorIHJldHVybj0iamF2YS5uZXQuVVJJIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNjaGVtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxdWVyeSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZnJhZ21lbnQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlVSSVN5bnRheEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuVVJJU3ludGF4RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc29sdmUiCisgcmV0dXJuPSJqYXZhLm5ldC5VUkkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYmFzZVVSSSIgdHlwZT0iamF2YS5uZXQuVVJJIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWZlcmVuY2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzb2x2ZSIKKyByZXR1cm49ImphdmEubmV0LlVSSSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiYXNlVVJJIiB0eXBlPSJqYXZhLm5ldC5VUkkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlZmVyZW5jZSIgdHlwZT0iamF2YS5uZXQuVVJJIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJld3JpdGVVUkkiCisgcmV0dXJuPSJqYXZhLm5ldC5VUkkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLm5ldC5VUkkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkcm9wRnJhZ21lbnQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlVSSVN5bnRheEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuVVJJU3ludGF4RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJld3JpdGVVUkkiCisgcmV0dXJuPSJqYXZhLm5ldC5VUkkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLm5ldC5VUkkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJVUklTeW50YXhFeGNlcHRpb24iIHR5cGU9ImphdmEubmV0LlVSSVN5bnRheEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJVUkxFbmNvZGVkVXRpbHMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlVSTEVuY29kZWRVdGlscyIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LnV0aWxzLlVSTEVuY29kZWRVdGlscyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJmb3JtYXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlcnMiIHR5cGU9ImphdmEudXRpbC5MaXN0Jmx0Oz8gZXh0ZW5kcyBvcmcuYXBhY2hlLmh0dHAuTmFtZVZhbHVlUGFpciZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuY29kaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRW5jb2RlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW50aXR5IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEVudGl0eSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZSIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O29yZy5hcGFjaGUuaHR0cC5OYW1lVmFsdWVQYWlyJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubmV0LlVSSSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5jb2RpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDtvcmcuYXBhY2hlLmh0dHAuTmFtZVZhbHVlUGFpciZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW50aXR5IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEVudGl0eSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtZXRlcnMiIHR5cGU9ImphdmEudXRpbC5MaXN0Jmx0O29yZy5hcGFjaGUuaHR0cC5OYW1lVmFsdWVQYWlyJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2Nhbm5lciIgdHlwZT0iamF2YS51dGlsLlNjYW5uZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVuY29kaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9UWVBFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29ubiIKKz4KKzxjbGFzcyBuYW1lPSJCYXNpY0VvZlNlbnNvcldhdGNoZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uRW9mU2Vuc29yV2F0Y2hlciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmFzaWNFb2ZTZW5zb3JXYXRjaGVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLkJhc2ljRW9mU2Vuc29yV2F0Y2hlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbm4iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLk1hbmFnZWRDbGllbnRDb25uZWN0aW9uIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXVzZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImVvZkRldGVjdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id3JhcHBlZCIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RyZWFtQWJvcnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3cmFwcGVkIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdHJlYW1DbG9zZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3cmFwcGVkIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImF0dGVtcHRSZXVzZSIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibWFuYWdlZENvbm4iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uTWFuYWdlZENsaWVudENvbm5lY3Rpb24iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQmFzaWNNYW5hZ2VkRW50aXR5IgorIGV4dGVuZHM9Im9yZy5hcGFjaGUuaHR0cC5lbnRpdHkuSHR0cEVudGl0eVdyYXBwZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNvbm5lY3Rpb25SZWxlYXNlVHJpZ2dlciI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5Fb2ZTZW5zb3JXYXRjaGVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY01hbmFnZWRFbnRpdHkiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uQmFzaWNNYW5hZ2VkRW50aXR5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW50aXR5IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEVudGl0eSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29ubiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uTWFuYWdlZENsaWVudENvbm5lY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJldXNlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWJvcnRDb25uZWN0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW9mRGV0ZWN0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3cmFwcGVkIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWxlYXNlQ29ubmVjdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbGVhc2VNYW5hZ2VkQ29ubmVjdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0cmVhbUFib3J0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id3JhcHBlZCIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RyZWFtQ2xvc2VkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id3JhcHBlZCIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJhdHRlbXB0UmV1c2UiCisgdHlwZT0iYm9vbGVhbiIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibWFuYWdlZENvbm4iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uTWFuYWdlZENsaWVudENvbm5lY3Rpb24iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkNsaWVudENvbm5lY3Rpb25NYW5hZ2VyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY2xvc2VFeHBpcmVkQ29ubmVjdGlvbnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvc2VJZGxlQ29ubmVjdGlvbnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkbGV0aW1lIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0dW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2NoZW1lUmVnaXN0cnkiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5zY2hlbWUuU2NoZW1lUmVnaXN0cnkiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWxlYXNlQ29ubmVjdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29ubiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uTWFuYWdlZENsaWVudENvbm5lY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbGlkRHVyYXRpb24iIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVVbml0IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXF1ZXN0Q29ubmVjdGlvbiIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNsaWVudENvbm5lY3Rpb25SZXF1ZXN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvdXRlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkh0dHBSb3V0ZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdGUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2h1dGRvd24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJDbGllbnRDb25uZWN0aW9uTWFuYWdlckZhY3RvcnkiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJuZXdJbnN0YW5jZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNsaWVudENvbm5lY3Rpb25NYW5hZ2VyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzY2hlbWVSZWdpc3RyeSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uc2NoZW1lLlNjaGVtZVJlZ2lzdHJ5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iQ2xpZW50Q29ubmVjdGlvbk9wZXJhdG9yIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY3JlYXRlQ29ubmVjdGlvbiIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb25uLk9wZXJhdGVkQ2xpZW50Q29ubmVjdGlvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wZW5Db25uZWN0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb25uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5PcGVyYXRlZENsaWVudENvbm5lY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbCIgdHlwZT0iamF2YS5uZXQuSW5ldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZVNlY3VyZUNvbm5lY3Rpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbm4iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLk9wZXJhdGVkQ2xpZW50Q29ubmVjdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iQ2xpZW50Q29ubmVjdGlvblJlcXVlc3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJhYm9ydFJlcXVlc3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29ubmVjdGlvbiIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb25uLk1hbmFnZWRDbGllbnRDb25uZWN0aW9uIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVvdXQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR1bml0IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ29ubmVjdGlvblBvb2xUaW1lb3V0RXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5Db25uZWN0aW9uUG9vbFRpbWVvdXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW50ZXJydXB0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkNvbm5lY3RUaW1lb3V0RXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEuaW8uSW50ZXJydXB0ZWRJT0V4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbm5lY3RUaW1lb3V0RXhjZXB0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNvbm5lY3RUaW1lb3V0RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29ubmVjdFRpbWVvdXRFeGNlcHRpb24iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uQ29ubmVjdFRpbWVvdXRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkNvbm5lY3Rpb25LZWVwQWxpdmVTdHJhdGVneSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldEtlZXBBbGl2ZUR1cmF0aW9uIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJDb25uZWN0aW9uUG9vbFRpbWVvdXRFeGNlcHRpb24iCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLmNvbm4uQ29ubmVjdFRpbWVvdXRFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb25uZWN0aW9uUG9vbFRpbWVvdXRFeGNlcHRpb24iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uQ29ubmVjdGlvblBvb2xUaW1lb3V0RXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29ubmVjdGlvblBvb2xUaW1lb3V0RXhjZXB0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNvbm5lY3Rpb25Qb29sVGltZW91dEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ29ubmVjdGlvblJlbGVhc2VUcmlnZ2VyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYWJvcnRDb25uZWN0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWxlYXNlQ29ubmVjdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkVvZlNlbnNvcklucHV0U3RyZWFtIgorIGV4dGVuZHM9ImphdmEuaW8uSW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNvbm5lY3Rpb25SZWxlYXNlVHJpZ2dlciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iRW9mU2Vuc29ySW5wdXRTdHJlYW0iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uRW9mU2Vuc29ySW5wdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbiIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2F0Y2hlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uRW9mU2Vuc29yV2F0Y2hlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFib3J0Q29ubmVjdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoZWNrQWJvcnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjaGVja0Nsb3NlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2hlY2tFT0YiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJlb2YiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNSZWFkQWxsb3dlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbGVhc2VDb25uZWN0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJ3cmFwcGVkU3RyZWFtIgorIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkVvZlNlbnNvcldhdGNoZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJlb2ZEZXRlY3RlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id3JhcHBlZCIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RyZWFtQWJvcnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndyYXBwZWQiIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0cmVhbUNsb3NlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id3JhcHBlZCIgdHlwZT0iamF2YS5pby5JbnB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9Ikh0dHBIb3N0Q29ubmVjdEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLm5ldC5Db25uZWN0RXhjZXB0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSHR0cEhvc3RDb25uZWN0RXhjZXB0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLkh0dHBIb3N0Q29ubmVjdEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imhvc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwSG9zdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubmV0LkNvbm5lY3RFeGNlcHRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRIb3N0IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJNYW5hZ2VkQ2xpZW50Q29ubmVjdGlvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5Db25uZWN0aW9uUmVsZWFzZVRyaWdnZXIiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBDbGllbnRDb25uZWN0aW9uIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwSW5ldENvbm5lY3Rpb24iPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRSb3V0ZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U1NMU2Vzc2lvbiIKKyByZXR1cm49ImphdmF4Lm5ldC5zc2wuU1NMU2Vzc2lvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0YXRlIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTWFya2VkUmV1c2FibGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTZWN1cmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGF5ZXJQcm90b2NvbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWFya1JldXNhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wZW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvdXRlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkh0dHBSb3V0ZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SWRsZUR1cmF0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkdXJhdGlvbiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InR1bm5lbFByb3h5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXh0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlY3VyZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InR1bm5lbFRhcmdldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VjdXJlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5tYXJrUmV1c2FibGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9Ik11bHRpaG9tZVBsYWluU29ja2V0RmFjdG9yeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnNjaGVtZS5Tb2NrZXRGYWN0b3J5Ij4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iY29ubmVjdFNvY2tldCIKKyByZXR1cm49ImphdmEubmV0LlNvY2tldCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic29jayIgdHlwZT0iamF2YS5uZXQuU29ja2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsQWRkcmVzcyIgdHlwZT0iamF2YS5uZXQuSW5ldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsUG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlU29ja2V0IgorIHJldHVybj0iamF2YS5uZXQuU29ja2V0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNvY2tldEZhY3RvcnkiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5NdWx0aWhvbWVQbGFpblNvY2tldEZhY3RvcnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1NlY3VyZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic29jayIgdHlwZT0iamF2YS5uZXQuU29ja2V0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ik9wZXJhdGVkQ2xpZW50Q29ubmVjdGlvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSHR0cENsaWVudENvbm5lY3Rpb24iPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBJbmV0Q29ubmVjdGlvbiI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImdldFNvY2tldCIKKyByZXR1cm49ImphdmEubmV0LlNvY2tldCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRhcmdldEhvc3QiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1NlY3VyZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuQ29tcGxldGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWN1cmUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb2NrIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1cGRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvY2siIHR5cGU9ImphdmEubmV0LlNvY2tldCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlY3VyZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnBhcmFtcyIKKz4KKzxpbnRlcmZhY2UgbmFtZT0iQ29ubkNvbm5lY3Rpb25QTmFtZXMiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGZpZWxkIG5hbWU9Ik1BWF9TVEFUVVNfTElORV9HQVJCQUdFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHAuY29ubmVjdGlvbi5tYXgtc3RhdHVzLWxpbmUtZ2FyYmFnZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkNvbm5Db25uZWN0aW9uUGFyYW1CZWFuIgorIGV4dGVuZHM9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cEFic3RyYWN0UGFyYW1CZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29ubkNvbm5lY3Rpb25QYXJhbUJlYW4iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucGFyYW1zLkNvbm5Db25uZWN0aW9uUGFyYW1CZWFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJzZXRNYXhTdGF0dXNMaW5lR2FyYmFnZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1heFN0YXR1c0xpbmVHYXJiYWdlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkNvbm5NYW5hZ2VyUE5hbWVzIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxmaWVsZCBuYW1lPSJNQVhfQ09OTkVDVElPTlNfUEVSX1JPVVRFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHAuY29ubi1tYW5hZ2VyLm1heC1wZXItcm91dGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUFYX1RPVEFMX0NPTk5FQ1RJT05TIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHAuY29ubi1tYW5hZ2VyLm1heC10b3RhbCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUSU1FT1VUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHAuY29ubi1tYW5hZ2VyLnRpbWVvdXQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJDb25uTWFuYWdlclBhcmFtQmVhbiIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBBYnN0cmFjdFBhcmFtQmVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbm5NYW5hZ2VyUGFyYW1CZWFuIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnBhcmFtcy5Db25uTWFuYWdlclBhcmFtQmVhbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ic2V0Q29ubmVjdGlvbnNQZXJSb3V0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbm5QZXJSb3V0ZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucGFyYW1zLkNvbm5QZXJSb3V0ZUJlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWF4VG90YWxDb25uZWN0aW9ucyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1heENvbm5lY3Rpb25zIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGltZW91dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVvdXQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29ubk1hbmFnZXJQYXJhbXMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5wYXJhbXMuQ29ubk1hbmFnZXJQTmFtZXMiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvbm5NYW5hZ2VyUGFyYW1zIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnBhcmFtcy5Db25uTWFuYWdlclBhcmFtcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRNYXhDb25uZWN0aW9uc1BlclJvdXRlIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucGFyYW1zLkNvbm5QZXJSb3V0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYXhUb3RhbENvbm5lY3Rpb25zIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRpbWVvdXQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE1heENvbm5lY3Rpb25zUGVyUm91dGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb25uUGVyUm91dGUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnBhcmFtcy5Db25uUGVyUm91dGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWF4VG90YWxDb25uZWN0aW9ucyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1heFRvdGFsQ29ubmVjdGlvbnMiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUaW1lb3V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkRFRkFVTFRfTUFYX1RPVEFMX0NPTk5FQ1RJT05TIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDb25uUGVyUm91dGUiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRNYXhGb3JSb3V0ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyb3V0ZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5IdHRwUm91dGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkNvbm5QZXJSb3V0ZUJlYW4iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5wYXJhbXMuQ29ublBlclJvdXRlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb25uUGVyUm91dGVCZWFuIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnBhcmFtcy5Db25uUGVyUm91dGVCZWFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdE1heCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb25uUGVyUm91dGVCZWFuIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnBhcmFtcy5Db25uUGVyUm91dGVCZWFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldERlZmF1bHRNYXgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWF4Rm9yUm91dGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvdXRlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkh0dHBSb3V0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREZWZhdWx0TWF4UGVyUm91dGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNYXhGb3JSb3V0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvdXRlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkh0dHBSb3V0ZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWF4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TWF4Rm9yUm91dGVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFwIiB0eXBlPSJqYXZhLnV0aWwuTWFwJmx0O29yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlLCBqYXZhLmxhbmcuSW50ZWdlciZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUX01BWF9DT05ORUNUSU9OU19QRVJfUk9VVEUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ29ublJvdXRlUE5hbWVzIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxmaWVsZCBuYW1lPSJERUZBVUxUX1BST1hZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHAucm91dGUuZGVmYXVsdC1wcm94eSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT1JDRURfUk9VVEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cC5yb3V0ZS5mb3JjZWQtcm91dGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTE9DQUxfQUREUkVTUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwLnJvdXRlLmxvY2FsLWFkZHJlc3MmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJDb25uUm91dGVQYXJhbUJlYW4iCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwQWJzdHJhY3RQYXJhbUJlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb25uUm91dGVQYXJhbUJlYW4iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucGFyYW1zLkNvbm5Sb3V0ZVBhcmFtQmVhbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ic2V0RGVmYXVsdFByb3h5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFByb3h5IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Rm9yY2VkUm91dGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyb3V0ZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5IdHRwUm91dGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TG9jYWxBZGRyZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWRkcmVzcyIgdHlwZT0iamF2YS5uZXQuSW5ldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29ublJvdXRlUGFyYW1zIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnBhcmFtcy5Db25uUm91dGVQTmFtZXMiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXREZWZhdWx0UHJveHkiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Rm9yY2VkUm91dGUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkh0dHBSb3V0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhbEFkZHJlc3MiCisgcmV0dXJuPSJqYXZhLm5ldC5JbmV0QWRkcmVzcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREZWZhdWx0UHJveHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm94eSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZvcmNlZFJvdXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icm91dGUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldExvY2FsQWRkcmVzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsIiB0eXBlPSJqYXZhLm5ldC5JbmV0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Ik5PX0hPU1QiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5PX1JPVVRFIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmciCis+Cis8Y2xhc3MgbmFtZT0iQmFzaWNSb3V0ZURpcmVjdG9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlRGlyZWN0b3IiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJhc2ljUm91dGVEaXJlY3RvciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkJhc2ljUm91dGVEaXJlY3RvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkaXJlY3RTdGVwIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbGFuIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLlJvdXRlSW5mbyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFjdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5Sb3V0ZUluZm8iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmlyc3RTdGVwIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbGFuIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLlJvdXRlSW5mbyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0U3RlcCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGxhbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5Sb3V0ZUluZm8iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZhY3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuUm91dGVJbmZvIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByb3hpZWRTdGVwIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbGFuIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLlJvdXRlSW5mbyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFjdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5Sb3V0ZUluZm8iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSHR0cFJvdXRlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLlJvdXRlSW5mbyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iSHR0cFJvdXRlIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsIiB0eXBlPSJqYXZhLm5ldC5JbmV0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJveGllcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlY3VyZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHVubmVsbGVkIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLlJvdXRlSW5mby5UdW5uZWxUeXBlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYXllcmVkIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLlJvdXRlSW5mby5MYXllclR5cGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBSb3V0ZSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkh0dHBSb3V0ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbCIgdHlwZT0iamF2YS5uZXQuSW5ldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3h5IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlY3VyZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHVubmVsbGVkIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLlJvdXRlSW5mby5UdW5uZWxUeXBlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsYXllcmVkIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLlJvdXRlSW5mby5MYXllclR5cGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBSb3V0ZSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkh0dHBSb3V0ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbCIgdHlwZT0iamF2YS5uZXQuSW5ldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlY3VyZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSHR0cFJvdXRlIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBSb3V0ZSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkh0dHBSb3V0ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbCIgdHlwZT0iamF2YS5uZXQuSW5ldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3h5IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlY3VyZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5DbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlcXVhbHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im8iIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SG9wQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIb3BUYXJnZXQiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9wIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGF5ZXJUeXBlIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5Sb3V0ZUluZm8uTGF5ZXJUeXBlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9jYWxBZGRyZXNzIgorIHJldHVybj0iamF2YS5uZXQuSW5ldEFkZHJlc3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm94eUhvc3QiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUYXJnZXRIb3N0IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHVubmVsVHlwZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuUm91dGVJbmZvLlR1bm5lbFR5cGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNoQ29kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTGF5ZXJlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1NlY3VyZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1R1bm5lbGxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iSHR0cFJvdXRlRGlyZWN0b3IiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJuZXh0U3RlcCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbGFuIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLlJvdXRlSW5mbyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFjdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5Sb3V0ZUluZm8iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDT01QTEVURSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OTkVDVF9QUk9YWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OTkVDVF9UQVJHRVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxBWUVSX1BST1RPQ09MIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUVU5ORUxfUFJPWFkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRVTk5FTF9UQVJHRVQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVOUkVBQ0hBQkxFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iLTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iSHR0cFJvdXRlUGxhbm5lciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImRldGVybWluZVJvdXRlIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5IdHRwUm91dGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlJvdXRlSW5mbyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldEhvcENvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SG9wVGFyZ2V0IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhvcCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExheWVyVHlwZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuUm91dGVJbmZvLkxheWVyVHlwZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvY2FsQWRkcmVzcyIKKyByZXR1cm49ImphdmEubmV0LkluZXRBZGRyZXNzIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJveHlIb3N0IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGFyZ2V0SG9zdCIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwSG9zdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFR1bm5lbFR5cGUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLlJvdXRlSW5mby5UdW5uZWxUeXBlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNMYXllcmVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU2VjdXJlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzVHVubmVsbGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJSb3V0ZUluZm8uTGF5ZXJUeXBlIgorIGV4dGVuZHM9ImphdmEubGFuZy5FbnVtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5Sb3V0ZUluZm8uTGF5ZXJUeXBlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWVzIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5Sb3V0ZUluZm8uTGF5ZXJUeXBlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJvdXRlSW5mby5UdW5uZWxUeXBlIgorIGV4dGVuZHM9ImphdmEubGFuZy5FbnVtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZU9mIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5Sb3V0ZUluZm8uVHVubmVsVHlwZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlcyIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuUm91dGVJbmZvLlR1bm5lbFR5cGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUm91dGVUcmFja2VyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLlJvdXRlSW5mbyI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUm91dGVUcmFja2VyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuUm91dGVUcmFja2VyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsIiB0eXBlPSJqYXZhLm5ldC5JbmV0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUm91dGVUcmFja2VyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuUm91dGVUcmFja2VyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icm91dGUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkNsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbm5lY3RQcm94eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJveHkiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwSG9zdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VjdXJlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbm5lY3RUYXJnZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlY3VyZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlcXVhbHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im8iIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SG9wQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIb3BUYXJnZXQiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9wIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGF5ZXJUeXBlIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5Sb3V0ZUluZm8uTGF5ZXJUeXBlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9jYWxBZGRyZXNzIgorIHJldHVybj0iamF2YS5uZXQuSW5ldEFkZHJlc3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm94eUhvc3QiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUYXJnZXRIb3N0IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHVubmVsVHlwZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuUm91dGVJbmZvLlR1bm5lbFR5cGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNoQ29kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ29ubmVjdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTGF5ZXJlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1NlY3VyZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1R1bm5lbGxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsYXllclByb3RvY29sIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWN1cmUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9Sb3V0ZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idHVubmVsUHJveHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3h5IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlY3VyZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0dW5uZWxUYXJnZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlY3VyZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnNjaGVtZSIKKz4KKzxpbnRlcmZhY2UgbmFtZT0iSG9zdE5hbWVSZXNvbHZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InJlc29sdmUiCisgcmV0dXJuPSJqYXZhLm5ldC5JbmV0QWRkcmVzcyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3N0bmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJMYXllcmVkU29ja2V0RmFjdG9yeSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5zY2hlbWUuU29ja2V0RmFjdG9yeSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVNvY2tldCIKKyByZXR1cm49ImphdmEubmV0LlNvY2tldCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb2NrZXQiIHR5cGU9ImphdmEubmV0LlNvY2tldCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdXRvQ2xvc2UiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJVbmtub3duSG9zdEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuVW5rbm93bkhvc3RFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IlBsYWluU29ja2V0RmFjdG9yeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnNjaGVtZS5Tb2NrZXRGYWN0b3J5Ij4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQbGFpblNvY2tldEZhY3RvcnkiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uc2NoZW1lLlBsYWluU29ja2V0RmFjdG9yeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWVSZXNvbHZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uc2NoZW1lLkhvc3ROYW1lUmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBsYWluU29ja2V0RmFjdG9yeSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5zY2hlbWUuUGxhaW5Tb2NrZXRGYWN0b3J5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNvbm5lY3RTb2NrZXQiCisgcmV0dXJuPSJqYXZhLm5ldC5Tb2NrZXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvY2siIHR5cGU9ImphdmEubmV0LlNvY2tldCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbEFkZHJlc3MiIHR5cGU9ImphdmEubmV0LkluZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbFBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVNvY2tldCIKKyByZXR1cm49ImphdmEubmV0LlNvY2tldCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTb2NrZXRGYWN0b3J5IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNvbm4uc2NoZW1lLlBsYWluU29ja2V0RmFjdG9yeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU2VjdXJlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb2NrIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTY2hlbWUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2NoZW1lIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnNjaGVtZS5TY2hlbWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmYWN0b3J5IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5zY2hlbWUuU29ja2V0RmFjdG9yeSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZXF1YWxzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVmYXVsdFBvcnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNvY2tldEZhY3RvcnkiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5zY2hlbWUuU29ja2V0RmFjdG9yeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTGF5ZXJlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNvbHZlUG9ydCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2NoZW1lUmVnaXN0cnkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2NoZW1lUmVnaXN0cnkiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uc2NoZW1lLlNjaGVtZVJlZ2lzdHJ5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldCIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb25uLnNjaGVtZS5TY2hlbWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNjaGVtZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb25uLnNjaGVtZS5TY2hlbWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNjaGVtZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb25uLnNjaGVtZS5TY2hlbWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2NoZW1lTmFtZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDtqYXZhLmxhbmcuU3RyaW5nJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVnaXN0ZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5zY2hlbWUuU2NoZW1lIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NoIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5zY2hlbWUuU2NoZW1lIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEl0ZW1zIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXAiIHR5cGU9ImphdmEudXRpbC5NYXAmbHQ7amF2YS5sYW5nLlN0cmluZywgb3JnLmFwYWNoZS5odHRwLmNvbm4uc2NoZW1lLlNjaGVtZSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5yZWdpc3RlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb25uLnNjaGVtZS5TY2hlbWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJTb2NrZXRGYWN0b3J5IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY29ubmVjdFNvY2tldCIKKyByZXR1cm49ImphdmEubmV0LlNvY2tldCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb2NrIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imhvc3QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxBZGRyZXNzIiB0eXBlPSJqYXZhLm5ldC5JbmV0QWRkcmVzcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxQb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDb25uZWN0VGltZW91dEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uQ29ubmVjdFRpbWVvdXRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJVbmtub3duSG9zdEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5uZXQuVW5rbm93bkhvc3RFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlU29ja2V0IgorIHJldHVybj0iamF2YS5uZXQuU29ja2V0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU2VjdXJlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb2NrIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5zc2wiCis+Cis8Y2xhc3MgbmFtZT0iQWJzdHJhY3RWZXJpZmllciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnNzbC5YNTA5SG9zdG5hbWVWZXJpZmllciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzdHJhY3RWZXJpZmllciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5zc2wuQWJzdHJhY3RWZXJpZmllciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhY2NlcHRhYmxlQ291bnRyeVdpbGRjYXJkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb3VudERvdHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDTnMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2VydCIgdHlwZT0iamF2YS5zZWN1cml0eS5jZXJ0Llg1MDlDZXJ0aWZpY2F0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRETlNTdWJqZWN0QWx0cyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmdbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjZXJ0IiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuWDUwOUNlcnRpZmljYXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZlcmlmeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3NsIiB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTFNvY2tldCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmVyaWZ5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZXNzaW9uIiB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTFNlc3Npb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmVyaWZ5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjZXJ0IiB0eXBlPSJqYXZhLnNlY3VyaXR5LmNlcnQuWDUwOUNlcnRpZmljYXRlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTU0xFeGNlcHRpb24iIHR5cGU9ImphdmF4Lm5ldC5zc2wuU1NMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZlcmlmeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY25zIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN1YmplY3RBbHRzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmljdFdpdGhTdWJEb21haW5zIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTU0xFeGNlcHRpb24iIHR5cGU9ImphdmF4Lm5ldC5zc2wuU1NMRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFsbG93QWxsSG9zdG5hbWVWZXJpZmllciIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5zc2wuQWJzdHJhY3RWZXJpZmllciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFsbG93QWxsSG9zdG5hbWVWZXJpZmllciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5zc2wuQWxsb3dBbGxIb3N0bmFtZVZlcmlmaWVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZlcmlmeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY25zIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN1YmplY3RBbHRzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQnJvd3NlckNvbXBhdEhvc3RuYW1lVmVyaWZpZXIiCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLmNvbm4uc3NsLkFic3RyYWN0VmVyaWZpZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCcm93c2VyQ29tcGF0SG9zdG5hbWVWZXJpZmllciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5zc2wuQnJvd3NlckNvbXBhdEhvc3RuYW1lVmVyaWZpZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0idG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmVyaWZ5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjbnMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3ViamVjdEFsdHMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1NMRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTU0xTb2NrZXRGYWN0b3J5IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnNjaGVtZS5MYXllcmVkU29ja2V0RmFjdG9yeSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1NMU29ja2V0RmFjdG9yeSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5zc2wuU1NMU29ja2V0RmFjdG9yeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFsZ29yaXRobSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5c3RvcmUiIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5U3RvcmUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImtleXN0b3JlUGFzc3dvcmQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRydXN0c3RvcmUiIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5U3RvcmUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJhbmRvbSIgdHlwZT0iamF2YS5zZWN1cml0eS5TZWN1cmVSYW5kb20iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWVSZXNvbHZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uc2NoZW1lLkhvc3ROYW1lUmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IktleU1hbmFnZW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5TWFuYWdlbWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iS2V5U3RvcmVFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuS2V5U3RvcmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlVucmVjb3ZlcmFibGVLZXlFeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuVW5yZWNvdmVyYWJsZUtleUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU1NMU29ja2V0RmFjdG9yeSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5zc2wuU1NMU29ja2V0RmFjdG9yeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleXN0b3JlIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJrZXlzdG9yZVBhc3N3b3JkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0cnVzdHN0b3JlIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJLZXlNYW5hZ2VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleU1hbmFnZW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IktleVN0b3JlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LktleVN0b3JlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24iIHR5cGU9ImphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJVbnJlY292ZXJhYmxlS2V5RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5LlVucmVjb3ZlcmFibGVLZXlFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNTTFNvY2tldEZhY3RvcnkiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uc3NsLlNTTFNvY2tldEZhY3RvcnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXlzdG9yZSIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5c3RvcmVQYXNzd29yZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iS2V5TWFuYWdlbWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlNYW5hZ2VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJLZXlTdG9yZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iVW5yZWNvdmVyYWJsZUtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5VbnJlY292ZXJhYmxlS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTU0xTb2NrZXRGYWN0b3J5IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnNzbC5TU0xTb2NrZXRGYWN0b3J5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHJ1c3RzdG9yZSIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iS2V5TWFuYWdlbWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlNYW5hZ2VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJLZXlTdG9yZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5LZXlTdG9yZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIiB0eXBlPSJqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iVW5yZWNvdmVyYWJsZUtleUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5zZWN1cml0eS5VbnJlY292ZXJhYmxlS2V5RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY29ubmVjdFNvY2tldCIKKyByZXR1cm49ImphdmEubmV0LlNvY2tldCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic29jayIgdHlwZT0iamF2YS5uZXQuU29ja2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsQWRkcmVzcyIgdHlwZT0iamF2YS5uZXQuSW5ldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsUG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlU29ja2V0IgorIHJldHVybj0iamF2YS5uZXQuU29ja2V0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVTb2NrZXQiCisgcmV0dXJuPSJqYXZhLm5ldC5Tb2NrZXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvY2tldCIgdHlwZT0iamF2YS5uZXQuU29ja2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3J0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF1dG9DbG9zZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlVua25vd25Ib3N0RXhjZXB0aW9uIiB0eXBlPSJqYXZhLm5ldC5Vbmtub3duSG9zdEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIb3N0bmFtZVZlcmlmaWVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNvbm4uc3NsLlg1MDlIb3N0bmFtZVZlcmlmaWVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNvY2tldEZhY3RvcnkiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5zc2wuU1NMU29ja2V0RmFjdG9yeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU2VjdXJlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic29jayIgdHlwZT0iamF2YS5uZXQuU29ja2V0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SG9zdG5hbWVWZXJpZmllciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imhvc3RuYW1lVmVyaWZpZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnNzbC5YNTA5SG9zdG5hbWVWZXJpZmllciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkFMTE9XX0FMTF9IT1NUTkFNRV9WRVJJRklFUiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5zc2wuWDUwOUhvc3RuYW1lVmVyaWZpZXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQlJPV1NFUl9DT01QQVRJQkxFX0hPU1ROQU1FX1ZFUklGSUVSIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnNzbC5YNTA5SG9zdG5hbWVWZXJpZmllciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTU0wiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7U1NMJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNTTFYyIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O1NTTHYyJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNUUklDVF9IT1NUTkFNRV9WRVJJRklFUiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5zc2wuWDUwOUhvc3RuYW1lVmVyaWZpZXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVExTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O1RMUyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3RyaWN0SG9zdG5hbWVWZXJpZmllciIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5zc2wuQWJzdHJhY3RWZXJpZmllciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN0cmljdEhvc3RuYW1lVmVyaWZpZXIiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uc3NsLlN0cmljdEhvc3RuYW1lVmVyaWZpZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0idG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmVyaWZ5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjbnMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3ViamVjdEFsdHMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1NMRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iWDUwOUhvc3RuYW1lVmVyaWZpZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YXgubmV0LnNzbC5Ib3N0bmFtZVZlcmlmaWVyIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0idmVyaWZ5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZXNzaW9uIiB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTFNlc3Npb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmVyaWZ5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzc2wiIHR5cGU9ImphdmF4Lm5ldC5zc2wuU1NMU29ja2V0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2ZXJpZnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imhvc3QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNlcnQiIHR5cGU9ImphdmEuc2VjdXJpdHkuY2VydC5YNTA5Q2VydGlmaWNhdGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNTTEV4Y2VwdGlvbiIgdHlwZT0iamF2YXgubmV0LnNzbC5TU0xFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmVyaWZ5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJob3N0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjbnMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3ViamVjdEFsdHMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU1NMRXhjZXB0aW9uIiB0eXBlPSJqYXZheC5uZXQuc3NsLlNTTEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29ubi51dGlsIgorPgorPGNsYXNzIG5hbWU9IkluZXRBZGRyZXNzVXRpbHMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJpc0lQdjRBZGRyZXNzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnB1dCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0lQdjZBZGRyZXNzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnB1dCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0lQdjZIZXhDb21wcmVzc2VkQWRkcmVzcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNJUHY2U3RkQWRkcmVzcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29va2llIgorPgorPGludGVyZmFjZSBuYW1lPSJDbGllbnRDb29raWUiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJjb250YWluc0F0dHJpYnV0ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdHRyaWJ1dGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJDT01NRU5UVVJMX0FUVFIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y29tbWVudHVybCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT01NRU5UX0FUVFIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y29tbWVudCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJESVNDQVJEX0FUVFIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7ZGlzY2FyZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJET01BSU5fQVRUUiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtkb21haW4mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRVhQSVJFU19BVFRSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2V4cGlyZXMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUFYX0FHRV9BVFRSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O21heC1hZ2UmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEFUSF9BVFRSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3BhdGgmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUE9SVF9BVFRSIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O3BvcnQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VDVVJFX0FUVFIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7c2VjdXJlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlZFUlNJT05fQVRUUiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt2ZXJzaW9uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkNvb2tpZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldENvbW1lbnQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29tbWVudFVSTCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREb21haW4iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RXhwaXJ5RGF0ZSIKKyByZXR1cm49ImphdmEudXRpbC5EYXRlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXRoIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBvcnRzIgorIHJldHVybj0iaW50W10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWZXJzaW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNFeHBpcmVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRlIiB0eXBlPSJqYXZhLnV0aWwuRGF0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1BlcnNpc3RlbnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTZWN1cmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJDb29raWVBdHRyaWJ1dGVIYW5kbGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ibWF0Y2giCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb2tpZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWdpbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVPcmlnaW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb2tpZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5TZXRDb29raWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRDb29raWVFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbGlkYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29raWUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnaW4iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llT3JpZ2luIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRDb29raWVFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJDb29raWVJZGVudGl0eUNvbXBhcmF0b3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS51dGlsLkNvbXBhcmF0b3IiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvb2tpZUlkZW50aXR5Q29tcGFyYXRvciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZUlkZW50aXR5Q29tcGFyYXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjMSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImMyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb29raWVPcmlnaW4iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29va2llT3JpZ2luIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llT3JpZ2luIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9zdCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzZWN1cmUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRIb3N0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXRoIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQb3J0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU2VjdXJlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb29raWVQYXRoQ29tcGFyYXRvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLnV0aWwuQ29tcGFyYXRvciI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29va2llUGF0aENvbXBhcmF0b3IiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVQYXRoQ29tcGFyYXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjb21wYXJlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjMSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImMyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iQ29va2llU3BlYyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdENvb2tpZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDtvcmcuYXBhY2hlLmh0dHAuSGVhZGVyJmd0OyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29raWVzIiB0eXBlPSJqYXZhLnV0aWwuTGlzdCZsdDtvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmVyc2lvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZlcnNpb25IZWFkZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWF0Y2giCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb2tpZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWdpbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVPcmlnaW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDtvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZSZndDsiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVhZGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnaW4iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llT3JpZ2luIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRDb29raWVFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbGlkYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29raWUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnaW4iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llT3JpZ2luIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRDb29raWVFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iQ29va2llU3BlY0ZhY3RvcnkiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJuZXdJbnN0YW5jZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llU3BlYyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ29va2llU3BlY1JlZ2lzdHJ5IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvb2tpZVNwZWNSZWdpc3RyeSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZVNwZWNSZWdpc3RyeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDb29raWVTcGVjIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVTcGVjIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29va2llU3BlYyIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llU3BlYyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3BlY05hbWVzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7amF2YS5sYW5nLlN0cmluZyZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3RlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFjdG9yeSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVTcGVjRmFjdG9yeSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJdGVtcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFwIiB0eXBlPSJqYXZhLnV0aWwuTWFwJmx0O2phdmEubGFuZy5TdHJpbmcsIG9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llU3BlY0ZhY3RvcnkmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVucmVnaXN0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik1hbGZvcm1lZENvb2tpZUV4Y2VwdGlvbiIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuUHJvdG9jb2xFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNYWxmb3JtZWRDb29raWVFeGNlcHRpb24iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5NYWxmb3JtZWRDb29raWVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNYWxmb3JtZWRDb29raWVFeGNlcHRpb24iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5NYWxmb3JtZWRDb29raWVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJNYWxmb3JtZWRDb29raWVFeGNlcHRpb24iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5NYWxmb3JtZWRDb29raWVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJTTSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iQ09PS0lFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O0Nvb2tpZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT09LSUUyIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O0Nvb2tpZTImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VUX0NPT0tJRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtTZXQtQ29va2llJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFVF9DT09LSUUyIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O1NldC1Db29raWUyJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlNldENvb2tpZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9InNldENvbW1lbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbW1lbnQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RG9tYWluIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkb21haW4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RXhwaXJ5RGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhwaXJ5RGF0ZSIgdHlwZT0iamF2YS51dGlsLkRhdGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGF0aCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0aCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTZWN1cmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlY3VyZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRWYWx1ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VmVyc2lvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmVyc2lvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iU2V0Q29va2llMiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLlNldENvb2tpZSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9InNldENvbW1lbnRVUkwiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbW1lbnRVUkwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGlzY2FyZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGlzY2FyZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQb3J0cyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9ydHMiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUucGFyYW1zIgorPgorPGludGVyZmFjZSBuYW1lPSJDb29raWVTcGVjUE5hbWVzIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxmaWVsZCBuYW1lPSJEQVRFX1BBVFRFUk5TIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHAucHJvdG9jb2wuY29va2llLWRhdGVwYXR0ZXJucyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTSU5HTEVfQ09PS0lFX0hFQURFUiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwLnByb3RvY29sLnNpbmdsZS1jb29raWUtaGVhZGVyJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iQ29va2llU3BlY1BhcmFtQmVhbiIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBBYnN0cmFjdFBhcmFtQmVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNvb2tpZVNwZWNQYXJhbUJlYW4iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5wYXJhbXMuQ29va2llU3BlY1BhcmFtQmVhbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ic2V0RGF0ZVBhdHRlcm5zIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0dGVybnMiIHR5cGU9ImphdmEudXRpbC5Db2xsZWN0aW9uJmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNpbmdsZUhlYWRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNpbmdsZUhlYWRlciIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5lbnRpdHkiCis+Cis8Y2xhc3MgbmFtZT0iQWJzdHJhY3RIdHRwRW50aXR5IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFbnRpdHkiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFic3RyYWN0SHR0cEVudGl0eSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuZW50aXR5LkFic3RyYWN0SHR0cEVudGl0eSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjb25zdW1lQ29udGVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLlVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbnRlbnRFbmNvZGluZyIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudFR5cGUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ2h1bmtlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2h1bmtlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29udGVudEVuY29kaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGVudEVuY29kaW5nIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbnRlbnRFbmNvZGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNlU3RyaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbnRlbnRUeXBlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGVudFR5cGUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29udGVudFR5cGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjdFN0cmluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImNodW5rZWQiCisgdHlwZT0iYm9vbGVhbiIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNvbnRlbnRFbmNvZGluZyIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY29udGVudFR5cGUiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkhlYWRlciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCYXNpY0h0dHBFbnRpdHkiCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLmVudGl0eS5BYnN0cmFjdEh0dHBFbnRpdHkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY0h0dHBFbnRpdHkiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmVudGl0eS5CYXNpY0h0dHBFbnRpdHkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudCIKKyByZXR1cm49ImphdmEuaW8uSW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZW50TGVuZ3RoIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1JlcGVhdGFibGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU3RyZWFtaW5nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb250ZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5zdHJlYW0iIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29udGVudExlbmd0aCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0c3RyZWFtIiB0eXBlPSJqYXZhLmlvLk91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQnVmZmVyZWRIdHRwRW50aXR5IgorIGV4dGVuZHM9Im9yZy5hcGFjaGUuaHR0cC5lbnRpdHkuSHR0cEVudGl0eVdyYXBwZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCdWZmZXJlZEh0dHBFbnRpdHkiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmVudGl0eS5CdWZmZXJlZEh0dHBFbnRpdHkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbnRpdHkiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRW50aXR5Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJ5dGVBcnJheUVudGl0eSIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuZW50aXR5LkFic3RyYWN0SHR0cEVudGl0eSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQnl0ZUFycmF5RW50aXR5IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5lbnRpdHkuQnl0ZUFycmF5RW50aXR5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkNsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbnRlbnQiCisgcmV0dXJuPSJqYXZhLmlvLklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbnRlbnRMZW5ndGgiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUmVwZWF0YWJsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTdHJlYW1pbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG8iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXRzdHJlYW0iIHR5cGU9ImphdmEuaW8uT3V0cHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImNvbnRlbnQiCisgdHlwZT0iYnl0ZVtdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkNvbnRlbnRMZW5ndGhTdHJhdGVneSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImRldGVybWluZUxlbmd0aCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBNZXNzYWdlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNIVU5LRUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSItMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJREVOVElUWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ii0xIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkNvbnRlbnRQcm9kdWNlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG8iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHN0cmVhbSIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJFbnRpdHlUZW1wbGF0ZSIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuZW50aXR5LkFic3RyYWN0SHR0cEVudGl0eSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkVudGl0eVRlbXBsYXRlIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5lbnRpdHkuRW50aXR5VGVtcGxhdGUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZW50cHJvZHVjZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5lbnRpdHkuQ29udGVudFByb2R1Y2VyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudCIKKyByZXR1cm49ImphdmEuaW8uSW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudExlbmd0aCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNSZXBlYXRhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1N0cmVhbWluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUbyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHN0cmVhbSIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkZpbGVFbnRpdHkiCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLmVudGl0eS5BYnN0cmFjdEh0dHBFbnRpdHkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5DbG9uZWFibGUiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkZpbGVFbnRpdHkiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmVudGl0eS5GaWxlRW50aXR5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmlsZSIgdHlwZT0iamF2YS5pby5GaWxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZW50VHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5DbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZW50IgorIHJldHVybj0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudExlbmd0aCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNSZXBlYXRhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1N0cmVhbWluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUbyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHN0cmVhbSIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iZmlsZSIKKyB0eXBlPSJqYXZhLmlvLkZpbGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJIdHRwRW50aXR5V3JhcHBlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEVudGl0eSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iSHR0cEVudGl0eVdyYXBwZXIiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmVudGl0eS5IdHRwRW50aXR5V3JhcHBlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndyYXBwZWQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRW50aXR5Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY29uc3VtZUNvbnRlbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZW50IgorIHJldHVybj0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudEVuY29kaW5nIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZW50TGVuZ3RoIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZW50VHlwZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNDaHVua2VkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1JlcGVhdGFibGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU3RyZWFtaW5nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0c3RyZWFtIiB0eXBlPSJqYXZhLmlvLk91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJ3cmFwcGVkRW50aXR5IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRW50aXR5IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IklucHV0U3RyZWFtRW50aXR5IgorIGV4dGVuZHM9Im9yZy5hcGFjaGUuaHR0cC5lbnRpdHkuQWJzdHJhY3RIdHRwRW50aXR5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW5wdXRTdHJlYW1FbnRpdHkiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmVudGl0eS5JbnB1dFN0cmVhbUVudGl0eSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imluc3RyZWFtIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZW50IgorIHJldHVybj0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudExlbmd0aCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNSZXBlYXRhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1N0cmVhbWluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUbyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHN0cmVhbSIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNlcmlhbGl6YWJsZUVudGl0eSIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuZW50aXR5LkFic3RyYWN0SHR0cEVudGl0eSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNlcmlhbGl6YWJsZUVudGl0eSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuZW50aXR5LlNlcmlhbGl6YWJsZUVudGl0eSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlciIgdHlwZT0iamF2YS5pby5TZXJpYWxpemFibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlcml6ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZW50IgorIHJldHVybj0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZW50TGVuZ3RoIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1JlcGVhdGFibGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU3RyZWFtaW5nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0c3RyZWFtIiB0eXBlPSJqYXZhLmlvLk91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3RyaW5nRW50aXR5IgorIGV4dGVuZHM9Im9yZy5hcGFjaGUuaHR0cC5lbnRpdHkuQWJzdHJhY3RIdHRwRW50aXR5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ2xvbmVhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTdHJpbmdFbnRpdHkiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmVudGl0eS5TdHJpbmdFbnRpdHkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGFyc2V0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN0cmluZ0VudGl0eSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuZW50aXR5LlN0cmluZ0VudGl0eSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5DbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZW50IgorIHJldHVybj0iamF2YS5pby5JbnB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudExlbmd0aCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNSZXBlYXRhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1N0cmVhbWluZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVUbyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dHN0cmVhbSIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iY29udGVudCIKKyB0eXBlPSJieXRlW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsIgorPgorPGNsYXNzIG5hbWU9IkFic3RyYWN0SHR0cENsaWVudENvbm5lY3Rpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSHR0cENsaWVudENvbm5lY3Rpb24iPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFic3RyYWN0SHR0cENsaWVudENvbm5lY3Rpb24iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuQWJzdHJhY3RIdHRwQ2xpZW50Q29ubmVjdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRPcGVuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlRW50aXR5RGVzZXJpYWxpemVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmltcGwuZW50aXR5LkVudGl0eURlc2VyaWFsaXplciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVFbnRpdHlTZXJpYWxpemVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmltcGwuZW50aXR5LkVudGl0eVNlcmlhbGl6ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlSHR0cFJlc3BvbnNlRmFjdG9yeSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2VGYWN0b3J5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVJlcXVlc3RXcml0ZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuaW8uSHR0cE1lc3NhZ2VXcml0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmlvLlNlc3Npb25PdXRwdXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVJlc3BvbnNlUGFyc2VyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmlvLkh0dHBNZXNzYWdlUGFyc2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pby5TZXNzaW9uSW5wdXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3BvbnNlRmFjdG9yeSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZUZhY3RvcnkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRvRmx1c2giCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmbHVzaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1ldHJpY3MiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cENvbm5lY3Rpb25NZXRyaWNzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluaXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmlvLlNlc3Npb25JbnB1dEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0YnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW8uU2Vzc2lvbk91dHB1dEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNSZXNwb25zZUF2YWlsYWJsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVvdXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTdGFsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVjZWl2ZVJlc3BvbnNlRW50aXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzcG9uc2UiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ikh0dHBFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWNlaXZlUmVzcG9uc2VIZWFkZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VuZFJlcXVlc3RFbnRpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEVudGl0eUVuY2xvc2luZ1JlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ikh0dHBFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kUmVxdWVzdEhlYWRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFic3RyYWN0SHR0cFNlcnZlckNvbm5lY3Rpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFNlcnZlckNvbm5lY3Rpb24iPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFic3RyYWN0SHR0cFNlcnZlckNvbm5lY3Rpb24iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuQWJzdHJhY3RIdHRwU2VydmVyQ29ubmVjdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRPcGVuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlRW50aXR5RGVzZXJpYWxpemVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmltcGwuZW50aXR5LkVudGl0eURlc2VyaWFsaXplciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVFbnRpdHlTZXJpYWxpemVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmltcGwuZW50aXR5LkVudGl0eVNlcmlhbGl6ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlSHR0cFJlcXVlc3RGYWN0b3J5IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0RmFjdG9yeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVSZXF1ZXN0UGFyc2VyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmlvLkh0dHBNZXNzYWdlUGFyc2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pby5TZXNzaW9uSW5wdXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3RGYWN0b3J5IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlcXVlc3RGYWN0b3J5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVSZXNwb25zZVdyaXRlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5pby5IdHRwTWVzc2FnZVdyaXRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW8uU2Vzc2lvbk91dHB1dEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZG9GbHVzaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZsdXNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWV0cmljcyIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwQ29ubmVjdGlvbk1ldHJpY3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5pdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluYnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW8uU2Vzc2lvbklucHV0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXRidWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pby5TZXNzaW9uT3V0cHV0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1N0YWxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWNlaXZlUmVxdWVzdEVudGl0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRW50aXR5RW5jbG9zaW5nUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlY2VpdmVSZXF1ZXN0SGVhZGVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VuZFJlc3BvbnNlRW50aXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzcG9uc2UiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ikh0dHBFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kUmVzcG9uc2VIZWFkZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRlZmF1bHRDb25uZWN0aW9uUmV1c2VTdHJhdGVneSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuQ29ubmVjdGlvblJldXNlU3RyYXRlZ3kiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRlZmF1bHRDb25uZWN0aW9uUmV1c2VTdHJhdGVneSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5EZWZhdWx0Q29ubmVjdGlvblJldXNlU3RyYXRlZ3kiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY3JlYXRlVG9rZW5JdGVyYXRvciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5Ub2tlbkl0ZXJhdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJoaXQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXJJdGVyYXRvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJrZWVwQWxpdmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRlZmF1bHRIdHRwQ2xpZW50Q29ubmVjdGlvbiIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5Tb2NrZXRIdHRwQ2xpZW50Q29ubmVjdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRlZmF1bHRIdHRwQ2xpZW50Q29ubmVjdGlvbiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5EZWZhdWx0SHR0cENsaWVudENvbm5lY3Rpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYmluZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvY2tldCIgdHlwZT0iamF2YS5uZXQuU29ja2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRGVmYXVsdEh0dHBSZXF1ZXN0RmFjdG9yeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlcXVlc3RGYWN0b3J5Ij4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEZWZhdWx0SHR0cFJlcXVlc3RGYWN0b3J5IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLkRlZmF1bHRIdHRwUmVxdWVzdEZhY3RvcnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ibmV3SHR0cFJlcXVlc3QiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlcXVlc3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3RsaW5lIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUmVxdWVzdExpbmUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik1ldGhvZE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLk1ldGhvZE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdIdHRwUmVxdWVzdCIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWV0aG9kIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik1ldGhvZE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLk1ldGhvZE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEZWZhdWx0SHR0cFJlc3BvbnNlRmFjdG9yeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlRmFjdG9yeSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGVmYXVsdEh0dHBSZXNwb25zZUZhY3RvcnkiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuRGVmYXVsdEh0dHBSZXNwb25zZUZhY3RvcnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXRhbG9nIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUmVhc29uUGhyYXNlQ2F0YWxvZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGVmYXVsdEh0dHBSZXNwb25zZUZhY3RvcnkiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuRGVmYXVsdEh0dHBSZXNwb25zZUZhY3RvcnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZGV0ZXJtaW5lTG9jYWxlIgorIHJldHVybj0iamF2YS51dGlsLkxvY2FsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld0h0dHBSZXNwb25zZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlByb3RvY29sVmVyc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdHVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdIdHRwUmVzcG9uc2UiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0dXNsaW5lIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuU3RhdHVzTGluZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0icmVhc29uQ2F0YWxvZyIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUmVhc29uUGhyYXNlQ2F0YWxvZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRlZmF1bHRIdHRwU2VydmVyQ29ubmVjdGlvbiIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5Tb2NrZXRIdHRwU2VydmVyQ29ubmVjdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRlZmF1bHRIdHRwU2VydmVyQ29ubmVjdGlvbiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5EZWZhdWx0SHR0cFNlcnZlckNvbm5lY3Rpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYmluZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvY2tldCIgdHlwZT0iamF2YS5uZXQuU29ja2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRW5nbGlzaFJlYXNvblBocmFzZUNhdGFsb2ciCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLlJlYXNvblBocmFzZUNhdGFsb2ciPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkVuZ2xpc2hSZWFzb25QaHJhc2VDYXRhbG9nIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLkVuZ2xpc2hSZWFzb25QaHJhc2VDYXRhbG9nIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldFJlYXNvbiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXR1cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2MiIHR5cGU9ImphdmEudXRpbC5Mb2NhbGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJJTlNUQU5DRSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5FbmdsaXNoUmVhc29uUGhyYXNlQ2F0YWxvZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSHR0cENvbm5lY3Rpb25NZXRyaWNzSW1wbCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSHR0cENvbm5lY3Rpb25NZXRyaWNzIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIdHRwQ29ubmVjdGlvbk1ldHJpY3NJbXBsIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLkh0dHBDb25uZWN0aW9uTWV0cmljc0ltcGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpblRyYW5zcG9ydE1ldHJpYyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmlvLkh0dHBUcmFuc3BvcnRNZXRyaWNzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvdXRUcmFuc3BvcnRNZXRyaWMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pby5IdHRwVHJhbnNwb3J0TWV0cmljcyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldE1ldHJpYyIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1ldHJpY05hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVjZWl2ZWRCeXRlc0NvdW50IgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXF1ZXN0Q291bnQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlc3BvbnNlQ291bnQiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNlbnRCeXRlc0NvdW50IgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbmNyZW1lbnRSZXF1ZXN0Q291bnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluY3JlbWVudFJlc3BvbnNlQ291bnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNZXRyaWMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXRyaWNOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJSRUNFSVZFRF9CWVRFU19DT1VOVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwLnJlY2VpdmVkLWJ5dGVzLWNvdW50JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFUVVFU1RfQ09VTlQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cC5yZXF1ZXN0LWNvdW50JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlJFU1BPTlNFX0NPVU5UIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHAucmVzcG9uc2UtY291bnQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VOVF9CWVRFU19DT1VOVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwLnNlbnQtYnl0ZXMtY291bnQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik5vQ29ubmVjdGlvblJldXNlU3RyYXRlZ3kiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLkNvbm5lY3Rpb25SZXVzZVN0cmF0ZWd5Ij4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOb0Nvbm5lY3Rpb25SZXVzZVN0cmF0ZWd5IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLk5vQ29ubmVjdGlvblJldXNlU3RyYXRlZ3kiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ia2VlcEFsaXZlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzcG9uc2UiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTb2NrZXRIdHRwQ2xpZW50Q29ubmVjdGlvbiIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5BYnN0cmFjdEh0dHBDbGllbnRDb25uZWN0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEluZXRDb25uZWN0aW9uIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTb2NrZXRIdHRwQ2xpZW50Q29ubmVjdGlvbiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5Tb2NrZXRIdHRwQ2xpZW50Q29ubmVjdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhc3NlcnROb3RPcGVuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRPcGVuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJiaW5kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic29ja2V0IiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVNlc3Npb25JbnB1dEJ1ZmZlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5pby5TZXNzaW9uSW5wdXRCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvY2tldCIgdHlwZT0iamF2YS5uZXQuU29ja2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVTZXNzaW9uT3V0cHV0QnVmZmVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmlvLlNlc3Npb25PdXRwdXRCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvY2tldCIgdHlwZT0iamF2YS5uZXQuU29ja2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhbEFkZHJlc3MiCisgcmV0dXJuPSJqYXZhLm5ldC5JbmV0QWRkcmVzcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhbFBvcnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVtb3RlQWRkcmVzcyIKKyByZXR1cm49ImphdmEubmV0LkluZXRBZGRyZXNzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlbW90ZVBvcnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U29ja2V0IgorIHJldHVybj0iamF2YS5uZXQuU29ja2V0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNvY2tldFRpbWVvdXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNPcGVuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTb2NrZXRUaW1lb3V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNodXRkb3duIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU29ja2V0SHR0cFNlcnZlckNvbm5lY3Rpb24iCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLmltcGwuQWJzdHJhY3RIdHRwU2VydmVyQ29ubmVjdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBJbmV0Q29ubmVjdGlvbiI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iU29ja2V0SHR0cFNlcnZlckNvbm5lY3Rpb24iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuU29ja2V0SHR0cFNlcnZlckNvbm5lY3Rpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0Tm90T3BlbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXNzZXJ0T3BlbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYmluZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvY2tldCIgdHlwZT0iamF2YS5uZXQuU29ja2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVIdHRwRGF0YVJlY2VpdmVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmlvLlNlc3Npb25JbnB1dEJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic29ja2V0IiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlcnNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUh0dHBEYXRhVHJhbnNtaXR0ZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuaW8uU2Vzc2lvbk91dHB1dEJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic29ja2V0IiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlcnNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvY2FsQWRkcmVzcyIKKyByZXR1cm49ImphdmEubmV0LkluZXRBZGRyZXNzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvY2FsUG9ydCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZW1vdGVBZGRyZXNzIgorIHJldHVybj0iamF2YS5uZXQuSW5ldEFkZHJlc3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVtb3RlUG9ydCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTb2NrZXQiCisgcmV0dXJuPSJqYXZhLm5ldC5Tb2NrZXQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U29ja2V0VGltZW91dCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc09wZW4iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNvY2tldFRpbWVvdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lb3V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2h1dGRvd24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmF1dGgiCis+Cis8Y2xhc3MgbmFtZT0iQXV0aFNjaGVtZUJhc2UiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuYXV0aC5BdXRoU2NoZW1lIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBdXRoU2NoZW1lQmFzZSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5hdXRoLkF1dGhTY2hlbWVCYXNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImlzUHJveHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlQ2hhbGxlbmdlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRDaGFsbGVuZ2VFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLk1hbGZvcm1lZENoYWxsZW5nZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwcm9jZXNzQ2hhbGxlbmdlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVhZGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRDaGFsbGVuZ2VFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLk1hbGZvcm1lZENoYWxsZW5nZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCYXNpY1NjaGVtZSIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5hdXRoLlJGQzI2MTdTY2hlbWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY1NjaGVtZSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5hdXRoLkJhc2ljU2NoZW1lIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImF1dGhlbnRpY2F0ZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNyZWRlbnRpYWxzIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuYXV0aC5DcmVkZW50aWFscyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJBdXRoZW50aWNhdGlvbkV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmF1dGguQXV0aGVudGljYXRpb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXV0aGVudGljYXRlIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjcmVkZW50aWFscyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmF1dGguQ3JlZGVudGlhbHMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYXJzZXQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3h5IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNjaGVtZU5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ29tcGxldGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ29ubmVjdGlvbkJhc2VkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCYXNpY1NjaGVtZUZhY3RvcnkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmF1dGguQXV0aFNjaGVtZUZhY3RvcnkiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJhc2ljU2NoZW1lRmFjdG9yeSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5hdXRoLkJhc2ljU2NoZW1lRmFjdG9yeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJuZXdJbnN0YW5jZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5hdXRoLkF1dGhTY2hlbWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRpZ2VzdFNjaGVtZSIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5hdXRoLlJGQzI2MTdTY2hlbWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEaWdlc3RTY2hlbWUiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuYXV0aC5EaWdlc3RTY2hlbWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYXV0aGVudGljYXRlIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3JlZGVudGlhbHMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLkNyZWRlbnRpYWxzIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkF1dGhlbnRpY2F0aW9uRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuYXV0aC5BdXRoZW50aWNhdGlvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVDbm9uY2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2NoZW1lTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNDb21wbGV0ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNDb25uZWN0aW9uQmFzZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im92ZXJyaWRlUGFyYW10ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEaWdlc3RTY2hlbWVGYWN0b3J5IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLkF1dGhTY2hlbWVGYWN0b3J5Ij4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEaWdlc3RTY2hlbWVGYWN0b3J5IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmF1dGguRGlnZXN0U2NoZW1lRmFjdG9yeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJuZXdJbnN0YW5jZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5hdXRoLkF1dGhTY2hlbWUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJOVExNRW5naW5lIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2VuZXJhdGVUeXBlMU1zZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZG9tYWluIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3b3Jrc3RhdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTlRMTUVuZ2luZUV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuYXV0aC5OVExNRW5naW5lRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdlbmVyYXRlVHlwZTNNc2ciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVzZXJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXNzd29yZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZG9tYWluIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3b3Jrc3RhdGlvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhbGxlbmdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJOVExNRW5naW5lRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5hdXRoLk5UTE1FbmdpbmVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9Ik5UTE1FbmdpbmVFeGNlcHRpb24iCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLmF1dGguQXV0aGVudGljYXRpb25FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOVExNRW5naW5lRXhjZXB0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmF1dGguTlRMTUVuZ2luZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik5UTE1FbmdpbmVFeGNlcHRpb24iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuYXV0aC5OVExNRW5naW5lRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTlRMTUVuZ2luZUV4Y2VwdGlvbiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5hdXRoLk5UTE1FbmdpbmVFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYXVzZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik5UTE1TY2hlbWUiCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLmltcGwuYXV0aC5BdXRoU2NoZW1lQmFzZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik5UTE1TY2hlbWUiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuYXV0aC5OVExNU2NoZW1lIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5naW5lIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5hdXRoLk5UTE1FbmdpbmUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhdXRoZW50aWNhdGUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjcmVkZW50aWFscyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmF1dGguQ3JlZGVudGlhbHMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQXV0aGVudGljYXRpb25FeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLkF1dGhlbnRpY2F0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtZXRlciIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVhbG0iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNjaGVtZU5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ29tcGxldGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQ29ubmVjdGlvbkJhc2VkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZUNoYWxsZW5nZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwb3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik1hbGZvcm1lZENoYWxsZW5nZUV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmF1dGguTWFsZm9ybWVkQ2hhbGxlbmdlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJGQzI2MTdTY2hlbWUiCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLmltcGwuYXV0aC5BdXRoU2NoZW1lQmFzZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUkZDMjYxN1NjaGVtZSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5hdXRoLlJGQzI2MTdTY2hlbWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0UGFyYW1ldGVyIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJhbWV0ZXJzIgorIHJldHVybj0iamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZWFsbSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VDaGFsbGVuZ2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9zIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRDaGFsbGVuZ2VFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLk1hbGZvcm1lZENoYWxsZW5nZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJVbnN1cHBvcnRlZERpZ2VzdEFsZ29yaXRobUV4Y2VwdGlvbiIKKyBleHRlbmRzPSJqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlVuc3VwcG9ydGVkRGlnZXN0QWxnb3JpdGhtRXhjZXB0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmF1dGguVW5zdXBwb3J0ZWREaWdlc3RBbGdvcml0aG1FeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJVbnN1cHBvcnRlZERpZ2VzdEFsZ29yaXRobUV4Y2VwdGlvbiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5hdXRoLlVuc3VwcG9ydGVkRGlnZXN0QWxnb3JpdGhtRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iVW5zdXBwb3J0ZWREaWdlc3RBbGdvcml0aG1FeGNlcHRpb24iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuYXV0aC5VbnN1cHBvcnRlZERpZ2VzdEFsZ29yaXRobUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhdXNlIiB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jbGllbnQiCis+Cis8Y2xhc3MgbmFtZT0iQWJzdHJhY3RBdXRoZW50aWNhdGlvbkhhbmRsZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LkF1dGhlbnRpY2F0aW9uSGFuZGxlciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzdHJhY3RBdXRoZW50aWNhdGlvbkhhbmRsZXIiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY2xpZW50LkFic3RyYWN0QXV0aGVudGljYXRpb25IYW5kbGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEF1dGhQcmVmZXJlbmNlcyIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2phdmEubGFuZy5TdHJpbmcmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlQ2hhbGxlbmdlcyIKKyByZXR1cm49ImphdmEudXRpbC5NYXAmbHQ7amF2YS5sYW5nLlN0cmluZywgb3JnLmFwYWNoZS5odHRwLkhlYWRlciZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhlYWRlcnMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTWFsZm9ybWVkQ2hhbGxlbmdlRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuYXV0aC5NYWxmb3JtZWRDaGFsbGVuZ2VFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VsZWN0U2NoZW1lIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmF1dGguQXV0aFNjaGVtZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhbGxlbmdlcyIgdHlwZT0iamF2YS51dGlsLk1hcCZsdDtqYXZhLmxhbmcuU3RyaW5nLCBvcmcuYXBhY2hlLmh0dHAuSGVhZGVyJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzcG9uc2UiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQXV0aGVudGljYXRpb25FeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLkF1dGhlbnRpY2F0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkFic3RyYWN0SHR0cENsaWVudCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuSHR0cENsaWVudCI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzdHJhY3RIdHRwQ2xpZW50IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNsaWVudC5BYnN0cmFjdEh0dHBDbGllbnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb25tYW4iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNsaWVudENvbm5lY3Rpb25NYW5hZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZFJlcXVlc3RJbnRlcmNlcHRvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXRjcCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0SW50ZXJjZXB0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkUmVxdWVzdEludGVyY2VwdG9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpdGNwIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlcXVlc3RJbnRlcmNlcHRvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRSZXNwb25zZUludGVyY2VwdG9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpdGNwIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlSW50ZXJjZXB0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkUmVzcG9uc2VJbnRlcmNlcHRvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXRjcCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZUludGVyY2VwdG9yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyUmVxdWVzdEludGVyY2VwdG9ycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhclJlc3BvbnNlSW50ZXJjZXB0b3JzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUF1dGhTY2hlbWVSZWdpc3RyeSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5hdXRoLkF1dGhTY2hlbWVSZWdpc3RyeSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUNsaWVudENvbm5lY3Rpb25NYW5hZ2VyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNvbm4uQ2xpZW50Q29ubmVjdGlvbk1hbmFnZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVDbGllbnRSZXF1ZXN0RGlyZWN0b3IiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LlJlcXVlc3REaXJlY3RvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdEV4ZWMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwUmVxdWVzdEV4ZWN1dG9yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb25tYW4iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNsaWVudENvbm5lY3Rpb25NYW5hZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXVzdHJhdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkNvbm5lY3Rpb25SZXVzZVN0cmF0ZWd5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJrYXN0cmF0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5Db25uZWN0aW9uS2VlcEFsaXZlU3RyYXRlZ3kiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJvdXBsYW4iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlUGxhbm5lciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaHR0cFByb2Nlc3NvciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBQcm9jZXNzb3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJldHJ5SGFuZGxlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5IdHRwUmVxdWVzdFJldHJ5SGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVkaXJlY3RIYW5kbGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LlJlZGlyZWN0SGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0QXV0aEhhbmRsZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuQXV0aGVudGljYXRpb25IYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm94eUF1dGhIYW5kbGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LkF1dGhlbnRpY2F0aW9uSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdGVIYW5kbGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LlVzZXJUb2tlbkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUNvbm5lY3Rpb25LZWVwQWxpdmVTdHJhdGVneSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNvbm5lY3Rpb25LZWVwQWxpdmVTdHJhdGVneSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUNvbm5lY3Rpb25SZXVzZVN0cmF0ZWd5IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkNvbm5lY3Rpb25SZXVzZVN0cmF0ZWd5IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlQ29va2llU3BlY1JlZ2lzdHJ5IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVTcGVjUmVnaXN0cnkiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVDb29raWVTdG9yZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuQ29va2llU3RvcmUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVDcmVkZW50aWFsc1Byb3ZpZGVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5DcmVkZW50aWFsc1Byb3ZpZGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlSHR0cENvbnRleHQiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVIdHRwUGFyYW1zIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlSHR0cFByb2Nlc3NvciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5CYXNpY0h0dHBQcm9jZXNzb3IiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVIdHRwUmVxdWVzdFJldHJ5SGFuZGxlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuSHR0cFJlcXVlc3RSZXRyeUhhbmRsZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVIdHRwUm91dGVQbGFubmVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5IdHRwUm91dGVQbGFubmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlUHJveHlBdXRoZW50aWNhdGlvbkhhbmRsZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LkF1dGhlbnRpY2F0aW9uSGFuZGxlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVJlZGlyZWN0SGFuZGxlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuUmVkaXJlY3RIYW5kbGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlUmVxdWVzdEV4ZWN1dG9yIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBSZXF1ZXN0RXhlY3V0b3IiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVUYXJnZXRBdXRoZW50aWNhdGlvbkhhbmRsZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LkF1dGhlbnRpY2F0aW9uSGFuZGxlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVVzZXJUb2tlbkhhbmRsZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LlVzZXJUb2tlbkhhbmRsZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZXRlcm1pbmVQYXJhbXMiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4ZWN1dGUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQubWV0aG9kcy5IdHRwVXJpUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2xpZW50UHJvdG9jb2xFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuQ2xpZW50UHJvdG9jb2xFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4ZWN1dGUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQubWV0aG9kcy5IdHRwVXJpUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGllbnRQcm90b2NvbEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5DbGllbnRQcm90b2NvbEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhlY3V0ZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2xpZW50UHJvdG9jb2xFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuQ2xpZW50UHJvdG9jb2xFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4ZWN1dGUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2xpZW50UHJvdG9jb2xFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuQ2xpZW50UHJvdG9jb2xFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4ZWN1dGUiCisgcmV0dXJuPSJUIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lm1ldGhvZHMuSHR0cFVyaVJlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3BvbnNlSGFuZGxlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5SZXNwb25zZUhhbmRsZXImbHQ7PyBleHRlbmRzIFQmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGllbnRQcm90b2NvbEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5DbGllbnRQcm90b2NvbEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhlY3V0ZSIKKyByZXR1cm49IlQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQubWV0aG9kcy5IdHRwVXJpUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzcG9uc2VIYW5kbGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LlJlc3BvbnNlSGFuZGxlciZsdDs/IGV4dGVuZHMgVCZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2xpZW50UHJvdG9jb2xFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuQ2xpZW50UHJvdG9jb2xFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4ZWN1dGUiCisgcmV0dXJuPSJUIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwSG9zdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZUhhbmRsZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuUmVzcG9uc2VIYW5kbGVyJmx0Oz8gZXh0ZW5kcyBUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iQ2xpZW50UHJvdG9jb2xFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuQ2xpZW50UHJvdG9jb2xFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4ZWN1dGUiCisgcmV0dXJuPSJUIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwSG9zdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZUhhbmRsZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuUmVzcG9uc2VIYW5kbGVyJmx0Oz8gZXh0ZW5kcyBUJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGllbnRQcm90b2NvbEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5DbGllbnRQcm90b2NvbEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXV0aFNjaGVtZXMiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuYXV0aC5BdXRoU2NoZW1lUmVnaXN0cnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbm5lY3Rpb25LZWVwQWxpdmVTdHJhdGVneSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNvbm5lY3Rpb25LZWVwQWxpdmVTdHJhdGVneSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29ubmVjdGlvbk1hbmFnZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5DbGllbnRDb25uZWN0aW9uTWFuYWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29ubmVjdGlvblJldXNlU3RyYXRlZ3kiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuQ29ubmVjdGlvblJldXNlU3RyYXRlZ3kiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvb2tpZVNwZWNzIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVTcGVjUmVnaXN0cnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvb2tpZVN0b3JlIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5Db29raWVTdG9yZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q3JlZGVudGlhbHNQcm92aWRlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuQ3JlZGVudGlhbHNQcm92aWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SHR0cFByb2Nlc3NvciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5CYXNpY0h0dHBQcm9jZXNzb3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEh0dHBSZXF1ZXN0UmV0cnlIYW5kbGVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5IdHRwUmVxdWVzdFJldHJ5SGFuZGxlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFyYW1zIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm94eUF1dGhlbnRpY2F0aW9uSGFuZGxlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuQXV0aGVudGljYXRpb25IYW5kbGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZWRpcmVjdEhhbmRsZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LlJlZGlyZWN0SGFuZGxlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVxdWVzdEV4ZWN1dG9yIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBSZXF1ZXN0RXhlY3V0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlcXVlc3RJbnRlcmNlcHRvciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdEludGVyY2VwdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVxdWVzdEludGVyY2VwdG9yQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXNwb25zZUludGVyY2VwdG9yIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZUludGVyY2VwdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVzcG9uc2VJbnRlcmNlcHRvckNvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Um91dGVQbGFubmVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5IdHRwUm91dGVQbGFubmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUYXJnZXRBdXRoZW50aWNhdGlvbkhhbmRsZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LkF1dGhlbnRpY2F0aW9uSGFuZGxlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VXNlclRva2VuSGFuZGxlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuVXNlclRva2VuSGFuZGxlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlUmVxdWVzdEludGVyY2VwdG9yQnlDbGFzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNsYXp6IiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyBleHRlbmRzIG9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdEludGVyY2VwdG9yJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVSZXNwb25zZUludGVyY2VwdG9yQnlDbGFzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNsYXp6IiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MmbHQ7PyBleHRlbmRzIG9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2VJbnRlcmNlcHRvciZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QXV0aFNjaGVtZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImF1dGhTY2hlbWVSZWdpc3RyeSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmF1dGguQXV0aFNjaGVtZVJlZ2lzdHJ5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvb2tpZVNwZWNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29raWVTcGVjUmVnaXN0cnkiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llU3BlY1JlZ2lzdHJ5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvb2tpZVN0b3JlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29raWVTdG9yZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5Db29raWVTdG9yZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDcmVkZW50aWFsc1Byb3ZpZGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjcmVkc1Byb3ZpZGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LkNyZWRlbnRpYWxzUHJvdmlkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SHR0cFJlcXVlc3RSZXRyeUhhbmRsZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJldHJ5SGFuZGxlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5IdHRwUmVxdWVzdFJldHJ5SGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRLZWVwQWxpdmVTdHJhdGVneSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ia2VlcEFsaXZlU3RyYXRlZ3kiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNvbm5lY3Rpb25LZWVwQWxpdmVTdHJhdGVneSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQYXJhbXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByb3h5QXV0aGVudGljYXRpb25IYW5kbGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm94eUF1dGhIYW5kbGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LkF1dGhlbnRpY2F0aW9uSGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZWRpcmVjdEhhbmRsZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlZGlyZWN0SGFuZGxlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5SZWRpcmVjdEhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UmV1c2VTdHJhdGVneSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmV1c2VTdHJhdGVneSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkNvbm5lY3Rpb25SZXVzZVN0cmF0ZWd5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFJvdXRlUGxhbm5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icm91dGVQbGFubmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkh0dHBSb3V0ZVBsYW5uZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGFyZ2V0QXV0aGVudGljYXRpb25IYW5kbGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXRBdXRoSGFuZGxlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5BdXRoZW50aWNhdGlvbkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VXNlclRva2VuSGFuZGxlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXNlclRva2VuSGFuZGxlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5Vc2VyVG9rZW5IYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJhc2ljQ29va2llU3RvcmUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5Db29raWVTdG9yZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmFzaWNDb29raWVTdG9yZSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jbGllbnQuQmFzaWNDb29raWVTdG9yZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRDb29raWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb2tpZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkQ29va2llcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29va2llcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhckV4cGlyZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGUiIHR5cGU9ImphdmEudXRpbC5EYXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvb2tpZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDtvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCYXNpY0NyZWRlbnRpYWxzUHJvdmlkZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5DcmVkZW50aWFsc1Byb3ZpZGVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY0NyZWRlbnRpYWxzUHJvdmlkZXIiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY2xpZW50LkJhc2ljQ3JlZGVudGlhbHNQcm92aWRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbGVhciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDcmVkZW50aWFscyIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5hdXRoLkNyZWRlbnRpYWxzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImF1dGhzY29wZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmF1dGguQXV0aFNjb3BlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENyZWRlbnRpYWxzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhdXRoc2NvcGUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLkF1dGhTY29wZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3JlZGVudGlhbHMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLkNyZWRlbnRpYWxzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJhc2ljUmVzcG9uc2VIYW5kbGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuUmVzcG9uc2VIYW5kbGVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY1Jlc3BvbnNlSGFuZGxlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jbGllbnQuQmFzaWNSZXNwb25zZUhhbmRsZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iaGFuZGxlUmVzcG9uc2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSHR0cFJlc3BvbnNlRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lkh0dHBSZXNwb25zZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2xpZW50UGFyYW1zU3RhY2siCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5BYnN0cmFjdEh0dHBQYXJhbXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDbGllbnRQYXJhbXNTdGFjayIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jbGllbnQuQ2xpZW50UGFyYW1zU3RhY2siCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icnBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNsaWVudFBhcmFtc1N0YWNrIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNsaWVudC5DbGllbnRQYXJhbXNTdGFjayIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YWNrIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jbGllbnQuQ2xpZW50UGFyYW1zU3RhY2siPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNsaWVudFBhcmFtc1N0YWNrIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNsaWVudC5DbGllbnRQYXJhbXNTdGFjayIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YWNrIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jbGllbnQuQ2xpZW50UGFyYW1zU3RhY2siPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3BhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJycGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9wYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNvcHkiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXBwbGljYXRpb25QYXJhbXMiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDbGllbnRQYXJhbXMiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPdmVycmlkZVBhcmFtcyIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtZXRlciIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVxdWVzdFBhcmFtcyIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZVBhcmFtZXRlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGFyYW1ldGVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5VbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImFwcGxpY2F0aW9uUGFyYW1zIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY2xpZW50UGFyYW1zIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ib3ZlcnJpZGVQYXJhbXMiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJyZXF1ZXN0UGFyYW1zIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRlZmF1bHRDb25uZWN0aW9uS2VlcEFsaXZlU3RyYXRlZ3kiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uQ29ubmVjdGlvbktlZXBBbGl2ZVN0cmF0ZWd5Ij4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEZWZhdWx0Q29ubmVjdGlvbktlZXBBbGl2ZVN0cmF0ZWd5IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNsaWVudC5EZWZhdWx0Q29ubmVjdGlvbktlZXBBbGl2ZVN0cmF0ZWd5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEtlZXBBbGl2ZUR1cmF0aW9uIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzcG9uc2UiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEZWZhdWx0SHR0cENsaWVudCIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jbGllbnQuQWJzdHJhY3RIdHRwQ2xpZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRGVmYXVsdEh0dHBDbGllbnQiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY2xpZW50LkRlZmF1bHRIdHRwQ2xpZW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29ubWFuIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5DbGllbnRDb25uZWN0aW9uTWFuYWdlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRlZmF1bHRIdHRwQ2xpZW50IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNsaWVudC5EZWZhdWx0SHR0cENsaWVudCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEZWZhdWx0SHR0cENsaWVudCIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jbGllbnQuRGVmYXVsdEh0dHBDbGllbnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY3JlYXRlQXV0aFNjaGVtZVJlZ2lzdHJ5IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmF1dGguQXV0aFNjaGVtZVJlZ2lzdHJ5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUNsaWVudENvbm5lY3Rpb25NYW5hZ2VyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNvbm4uQ2xpZW50Q29ubmVjdGlvbk1hbmFnZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlQ29ubmVjdGlvbktlZXBBbGl2ZVN0cmF0ZWd5IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNvbm4uQ29ubmVjdGlvbktlZXBBbGl2ZVN0cmF0ZWd5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUNvbm5lY3Rpb25SZXVzZVN0cmF0ZWd5IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkNvbm5lY3Rpb25SZXVzZVN0cmF0ZWd5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUNvb2tpZVNwZWNSZWdpc3RyeSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llU3BlY1JlZ2lzdHJ5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUNvb2tpZVN0b3JlIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5Db29raWVTdG9yZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVDcmVkZW50aWFsc1Byb3ZpZGVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5DcmVkZW50aWFsc1Byb3ZpZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUh0dHBDb250ZXh0IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUh0dHBQYXJhbXMiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlSHR0cFByb2Nlc3NvciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5CYXNpY0h0dHBQcm9jZXNzb3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlSHR0cFJlcXVlc3RSZXRyeUhhbmRsZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lkh0dHBSZXF1ZXN0UmV0cnlIYW5kbGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUh0dHBSb3V0ZVBsYW5uZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkh0dHBSb3V0ZVBsYW5uZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlUHJveHlBdXRoZW50aWNhdGlvbkhhbmRsZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LkF1dGhlbnRpY2F0aW9uSGFuZGxlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVSZWRpcmVjdEhhbmRsZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LlJlZGlyZWN0SGFuZGxlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVSZXF1ZXN0RXhlY3V0b3IiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cFJlcXVlc3RFeGVjdXRvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVUYXJnZXRBdXRoZW50aWNhdGlvbkhhbmRsZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LkF1dGhlbnRpY2F0aW9uSGFuZGxlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVVc2VyVG9rZW5IYW5kbGVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5Vc2VyVG9rZW5IYW5kbGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRlZmF1bHRIdHRwUmVxdWVzdFJldHJ5SGFuZGxlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lkh0dHBSZXF1ZXN0UmV0cnlIYW5kbGVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEZWZhdWx0SHR0cFJlcXVlc3RSZXRyeUhhbmRsZXIiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY2xpZW50LkRlZmF1bHRIdHRwUmVxdWVzdFJldHJ5SGFuZGxlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJldHJ5Q291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdFNlbnRSZXRyeUVuYWJsZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRlZmF1bHRIdHRwUmVxdWVzdFJldHJ5SGFuZGxlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jbGllbnQuRGVmYXVsdEh0dHBSZXF1ZXN0UmV0cnlIYW5kbGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldFJldHJ5Q291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNSZXF1ZXN0U2VudFJldHJ5RW5hYmxlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmV0cnlSZXF1ZXN0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJleGVjdXRpb25Db3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRGVmYXVsdFByb3h5QXV0aGVudGljYXRpb25IYW5kbGVyIgorIGV4dGVuZHM9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNsaWVudC5BYnN0cmFjdEF1dGhlbnRpY2F0aW9uSGFuZGxlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRlZmF1bHRQcm94eUF1dGhlbnRpY2F0aW9uSGFuZGxlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jbGllbnQuRGVmYXVsdFByb3h5QXV0aGVudGljYXRpb25IYW5kbGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldENoYWxsZW5nZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTWFwJmx0O2phdmEubGFuZy5TdHJpbmcsIG9yZy5hcGFjaGUuaHR0cC5IZWFkZXImZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRDaGFsbGVuZ2VFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLk1hbGZvcm1lZENoYWxsZW5nZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0F1dGhlbnRpY2F0aW9uUmVxdWVzdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzcG9uc2UiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEZWZhdWx0UmVkaXJlY3RIYW5kbGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuUmVkaXJlY3RIYW5kbGVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEZWZhdWx0UmVkaXJlY3RIYW5kbGVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNsaWVudC5EZWZhdWx0UmVkaXJlY3RIYW5kbGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldExvY2F0aW9uVVJJIgorIHJldHVybj0iamF2YS5uZXQuVVJJIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQcm90b2NvbEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlByb3RvY29sRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUmVkaXJlY3RSZXF1ZXN0ZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRlZmF1bHRSZXF1ZXN0RGlyZWN0b3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5SZXF1ZXN0RGlyZWN0b3IiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRlZmF1bHRSZXF1ZXN0RGlyZWN0b3IiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY2xpZW50LkRlZmF1bHRSZXF1ZXN0RGlyZWN0b3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0RXhlYyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBSZXF1ZXN0RXhlY3V0b3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbm1hbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uQ2xpZW50Q29ubmVjdGlvbk1hbmFnZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJldXN0cmF0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuQ29ubmVjdGlvblJldXNlU3RyYXRlZ3kiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imthc3RyYXQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNvbm5lY3Rpb25LZWVwQWxpdmVTdHJhdGVneSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icm91cGxhbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5IdHRwUm91dGVQbGFubmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJodHRwUHJvY2Vzc29yIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cFByb2Nlc3NvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmV0cnlIYW5kbGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lkh0dHBSZXF1ZXN0UmV0cnlIYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWRpcmVjdEhhbmRsZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuUmVkaXJlY3RIYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXRBdXRoSGFuZGxlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNsaWVudC5BdXRoZW50aWNhdGlvbkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InByb3h5QXV0aEhhbmRsZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuQXV0aGVudGljYXRpb25IYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1c2VyVG9rZW5IYW5kbGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LlVzZXJUb2tlbkhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY3JlYXRlQ29ubmVjdFJlcXVlc3QiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlcXVlc3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvdXRlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkh0dHBSb3V0ZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVR1bm5lbFRvUHJveHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJyb3V0ZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5IdHRwUm91dGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhvcCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ikh0dHBFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVUdW5uZWxUb1RhcmdldCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvdXRlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkh0dHBSb3V0ZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGV0ZXJtaW5lUm91dGUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkh0dHBSb3V0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlc3RhYmxpc2hSb3V0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvdXRlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkh0dHBSb3V0ZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXhlY3V0ZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImhhbmRsZVJlc3BvbnNlIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmltcGwuY2xpZW50LlJvdXRlZFJlcXVlc3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvdXJlcSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY2xpZW50LlJvdXRlZFJlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3BvbnNlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ikh0dHBFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWxlYXNlQ29ubmVjdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmV3cml0ZVJlcXVlc3RVUkkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jbGllbnQuUmVxdWVzdFdyYXBwZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJvdXRlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkh0dHBSb3V0ZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUHJvdG9jb2xFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImNvbm5NYW5hZ2VyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNsaWVudENvbm5lY3Rpb25NYW5hZ2VyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJodHRwUHJvY2Vzc29yIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwUHJvY2Vzc29yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrZWVwQWxpdmVTdHJhdGVneSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5Db25uZWN0aW9uS2VlcEFsaXZlU3RyYXRlZ3kiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1hbmFnZWRDb25uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLk1hbmFnZWRDbGllbnRDb25uZWN0aW9uIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icGFyYW1zIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icmVkaXJlY3RIYW5kbGVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuUmVkaXJlY3RIYW5kbGVyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJyZXF1ZXN0RXhlYyIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cFJlcXVlc3RFeGVjdXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icmV0cnlIYW5kbGVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jbGllbnQuSHR0cFJlcXVlc3RSZXRyeUhhbmRsZXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InJldXNlU3RyYXRlZ3kiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkNvbm5lY3Rpb25SZXVzZVN0cmF0ZWd5IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJyb3V0ZVBsYW5uZXIiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5IdHRwUm91dGVQbGFubmVyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRGVmYXVsdFRhcmdldEF1dGhlbnRpY2F0aW9uSGFuZGxlciIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jbGllbnQuQWJzdHJhY3RBdXRoZW50aWNhdGlvbkhhbmRsZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEZWZhdWx0VGFyZ2V0QXV0aGVudGljYXRpb25IYW5kbGVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNsaWVudC5EZWZhdWx0VGFyZ2V0QXV0aGVudGljYXRpb25IYW5kbGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldENoYWxsZW5nZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTWFwJmx0O2phdmEubGFuZy5TdHJpbmcsIG9yZy5hcGFjaGUuaHR0cC5IZWFkZXImZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRDaGFsbGVuZ2VFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5hdXRoLk1hbGZvcm1lZENoYWxsZW5nZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0F1dGhlbnRpY2F0aW9uUmVxdWVzdGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzcG9uc2UiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEZWZhdWx0VXNlclRva2VuSGFuZGxlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50LlVzZXJUb2tlbkhhbmRsZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRlZmF1bHRVc2VyVG9rZW5IYW5kbGVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNsaWVudC5EZWZhdWx0VXNlclRva2VuSGFuZGxlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRVc2VyVG9rZW4iCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRW50aXR5RW5jbG9zaW5nUmVxdWVzdFdyYXBwZXIiCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLmltcGwuY2xpZW50LlJlcXVlc3RXcmFwcGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEVudGl0eUVuY2xvc2luZ1JlcXVlc3QiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkVudGl0eUVuY2xvc2luZ1JlcXVlc3RXcmFwcGVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNsaWVudC5FbnRpdHlFbmNsb3NpbmdSZXF1ZXN0V3JhcHBlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRW50aXR5RW5jbG9zaW5nUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUHJvdG9jb2xFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImV4cGVjdENvbnRpbnVlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbnRpdHkiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEVudGl0eSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFbnRpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbnRpdHkiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRW50aXR5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJlZGlyZWN0TG9jYXRpb25zIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZWRpcmVjdExvY2F0aW9ucyIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jbGllbnQuUmVkaXJlY3RMb2NhdGlvbnMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLm5ldC5VUkkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29udGFpbnMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubmV0LlVSSSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubmV0LlVSSSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSZXF1ZXN0V3JhcHBlciIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5BYnN0cmFjdEh0dHBNZXNzYWdlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lm1ldGhvZHMuSHR0cFVyaVJlcXVlc3QiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlcXVlc3RXcmFwcGVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNsaWVudC5SZXF1ZXN0V3JhcHBlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUHJvdG9jb2xFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFib3J0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5VbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeGVjQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWV0aG9kIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPcmlnaW5hbCIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm90b2NvbFZlcnNpb24iCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuUHJvdG9jb2xWZXJzaW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlcXVlc3RMaW5lIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLlJlcXVlc3RMaW5lIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFVSSSIKKyByZXR1cm49ImphdmEubmV0LlVSSSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbmNyZW1lbnRFeGVjQ291bnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQWJvcnRlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNSZXBlYXRhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNldEhlYWRlcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE1ldGhvZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1ldGhvZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQcm90b2NvbFZlcnNpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2ZXJzaW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUHJvdG9jb2xWZXJzaW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFVSSSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iamF2YS5uZXQuVVJJIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJvdXRlZFJlcXVlc3QiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJvdXRlZFJlcXVlc3QiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY2xpZW50LlJvdXRlZFJlcXVlc3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXEiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNsaWVudC5SZXF1ZXN0V3JhcHBlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icm91dGUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0UmVxdWVzdCIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNsaWVudC5SZXF1ZXN0V3JhcHBlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJvdXRlIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5IdHRwUm91dGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9InJlcXVlc3QiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY2xpZW50LlJlcXVlc3RXcmFwcGVyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJyb3V0ZSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkh0dHBSb3V0ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlR1bm5lbFJlZnVzZWRFeGNlcHRpb24iCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJUdW5uZWxSZWZ1c2VkRXhjZXB0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNsaWVudC5UdW5uZWxSZWZ1c2VkRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzcG9uc2UiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRSZXNwb25zZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uIgorPgorPGNsYXNzIG5hbWU9IkFic3RyYWN0Q2xpZW50Q29ubkFkYXB0ZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5NYW5hZ2VkQ2xpZW50Q29ubmVjdGlvbiI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzdHJhY3RDbGllbnRDb25uQWRhcHRlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLkFic3RyYWN0Q2xpZW50Q29ubkFkYXB0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZ3IiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNsaWVudENvbm5lY3Rpb25NYW5hZ2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb25uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5PcGVyYXRlZENsaWVudENvbm5lY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhYm9ydENvbm5lY3Rpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFzc2VydE5vdEFib3J0ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkludGVycnVwdGVkSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSW50ZXJydXB0ZWRJT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRWYWxpZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0id3JhcHBlZENvbm4iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLk9wZXJhdGVkQ2xpZW50Q29ubmVjdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZXRhY2giCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZsdXNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9jYWxBZGRyZXNzIgorIHJldHVybj0iamF2YS5uZXQuSW5ldEFkZHJlc3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9jYWxQb3J0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1hbmFnZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5DbGllbnRDb25uZWN0aW9uTWFuYWdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNZXRyaWNzIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkh0dHBDb25uZWN0aW9uTWV0cmljcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZW1vdGVBZGRyZXNzIgorIHJldHVybj0iamF2YS5uZXQuSW5ldEFkZHJlc3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVtb3RlUG9ydCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTU0xTZXNzaW9uIgorIHJldHVybj0iamF2YXgubmV0LnNzbC5TU0xTZXNzaW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNvY2tldFRpbWVvdXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V3JhcHBlZENvbm5lY3Rpb24iCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5PcGVyYXRlZENsaWVudENvbm5lY3Rpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNNYXJrZWRSZXVzYWJsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNPcGVuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1Jlc3BvbnNlQXZhaWxhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1NlY3VyZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTdGFsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWFya1JldXNhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWNlaXZlUmVzcG9uc2VFbnRpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlY2VpdmVSZXNwb25zZUhlYWRlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9Ikh0dHBFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWxlYXNlQ29ubmVjdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2VuZFJlcXVlc3RFbnRpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEVudGl0eUVuY2xvc2luZ1JlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ikh0dHBFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZW5kUmVxdWVzdEhlYWRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldElkbGVEdXJhdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImR1cmF0aW9uIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1bml0IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTb2NrZXRUaW1lb3V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVubWFya1JldXNhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBYnN0cmFjdFBvb2xFbnRyeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBYnN0cmFjdFBvb2xFbnRyeSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLkFic3RyYWN0UG9vbEVudHJ5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29ubk9wZXJhdG9yIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5DbGllbnRDb25uZWN0aW9uT3BlcmF0b3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJvdXRlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkh0dHBSb3V0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldFN0YXRlIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsYXllclByb3RvY29sIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3BlbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvdXRlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkh0dHBSb3V0ZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaHV0ZG93bkVudHJ5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0dW5uZWxQcm94eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5leHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwSG9zdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VjdXJlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idHVubmVsVGFyZ2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VjdXJlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJjb25uT3BlcmF0b3IiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uQ2xpZW50Q29ubmVjdGlvbk9wZXJhdG9yIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjb25uZWN0aW9uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLk9wZXJhdGVkQ2xpZW50Q29ubmVjdGlvbiIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icm91dGUiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5IdHRwUm91dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN0YXRlIgorIHR5cGU9ImphdmEubGFuZy5PYmplY3QiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InRyYWNrZXIiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5Sb3V0ZVRyYWNrZXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBYnN0cmFjdFBvb2xlZENvbm5BZGFwdGVyIgorIGV4dGVuZHM9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4uQWJzdHJhY3RDbGllbnRDb25uQWRhcHRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzdHJhY3RQb29sZWRDb25uQWRhcHRlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLkFic3RyYWN0UG9vbGVkQ29ubkFkYXB0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYW5hZ2VyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5DbGllbnRDb25uZWN0aW9uTWFuYWdlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW50cnkiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4uQWJzdHJhY3RQb29sRW50cnkiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRBdHRhY2hlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9zZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJvdXRlIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5IdHRwUm91dGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RhdGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxheWVyUHJvdG9jb2wiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icm91dGUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNodXRkb3duIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idHVubmVsUHJveHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXh0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlY3VyZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InR1bm5lbFRhcmdldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlY3VyZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0icG9vbEVudHJ5IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4uQWJzdHJhY3RQb29sRW50cnkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEZWZhdWx0Q2xpZW50Q29ubmVjdGlvbiIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5Tb2NrZXRIdHRwQ2xpZW50Q29ubmVjdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uT3BlcmF0ZWRDbGllbnRDb25uZWN0aW9uIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEZWZhdWx0Q2xpZW50Q29ubmVjdGlvbiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLkRlZmF1bHRDbGllbnRDb25uZWN0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldFNvY2tldCIKKyByZXR1cm49ImphdmEubmV0LlNvY2tldCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRhcmdldEhvc3QiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1NlY3VyZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuQ29tcGxldGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VjdXJlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3BlbmluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvY2siIHR5cGU9ImphdmEubmV0LlNvY2tldCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvY2siIHR5cGU9ImphdmEubmV0LlNvY2tldCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNlY3VyZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRlZmF1bHRDbGllbnRDb25uZWN0aW9uT3BlcmF0b3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uQ2xpZW50Q29ubmVjdGlvbk9wZXJhdG9yIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEZWZhdWx0Q2xpZW50Q29ubmVjdGlvbk9wZXJhdG9yIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4uRGVmYXVsdENsaWVudENvbm5lY3Rpb25PcGVyYXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNjaGVtZXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnNjaGVtZS5TY2hlbWVSZWdpc3RyeSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUNvbm5lY3Rpb24iCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5PcGVyYXRlZENsaWVudENvbm5lY3Rpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3BlbkNvbm5lY3Rpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb25uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5PcGVyYXRlZENsaWVudENvbm5lY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbCIgdHlwZT0iamF2YS5uZXQuSW5ldEFkZHJlc3MiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByZXBhcmVTb2NrZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb2NrIiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZVNlY3VyZUNvbm5lY3Rpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb25uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5PcGVyYXRlZENsaWVudENvbm5lY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9InNjaGVtZVJlZ2lzdHJ5IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnNjaGVtZS5TY2hlbWVSZWdpc3RyeSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJEZWZhdWx0SHR0cFJvdXRlUGxhbm5lciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkh0dHBSb3V0ZVBsYW5uZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRlZmF1bHRIdHRwUm91dGVQbGFubmVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4uRGVmYXVsdEh0dHBSb3V0ZVBsYW5uZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzY2hyZWciIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnNjaGVtZS5TY2hlbWVSZWdpc3RyeSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRldGVybWluZVJvdXRlIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5IdHRwUm91dGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJzY2hlbWVSZWdpc3RyeSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5zY2hlbWUuU2NoZW1lUmVnaXN0cnkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRGVmYXVsdFJlc3BvbnNlUGFyc2VyIgorIGV4dGVuZHM9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmlvLkFic3RyYWN0TWVzc2FnZVBhcnNlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRlZmF1bHRSZXNwb25zZVBhcnNlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLkRlZmF1bHRSZXNwb25zZVBhcnNlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmlvLlNlc3Npb25JbnB1dEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyc2VyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5MaW5lUGFyc2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZUZhY3RvcnkiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2VGYWN0b3J5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InBhcnNlSGVhZCIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwTWVzc2FnZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2Vzc2lvbkJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmlvLlNlc3Npb25JbnB1dEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IklkbGVDb25uZWN0aW9uSGFuZGxlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSWRsZUNvbm5lY3Rpb25IYW5kbGVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4uSWRsZUNvbm5lY3Rpb25IYW5kbGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFkZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbm5lY3Rpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwQ29ubmVjdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsaWREdXJhdGlvbiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvc2VFeHBpcmVkQ29ubmVjdGlvbnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb3NlSWRsZUNvbm5lY3Rpb25zIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWRsZVRpbWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29ubmVjdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBDb25uZWN0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZUFsbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTG9nZ2luZ1Nlc3Npb25JbnB1dEJ1ZmZlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuaW8uU2Vzc2lvbklucHV0QnVmZmVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMb2dnaW5nU2Vzc2lvbklucHV0QnVmZmVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4uTG9nZ2luZ1Nlc3Npb25JbnB1dEJ1ZmZlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW8uU2Vzc2lvbklucHV0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ3aXJlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLldpcmUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRNZXRyaWNzIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmlvLkh0dHBUcmFuc3BvcnRNZXRyaWNzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRGF0YUF2YWlsYWJsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVvdXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZExpbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkTGluZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkxvZ2dpbmdTZXNzaW9uT3V0cHV0QnVmZmVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5pby5TZXNzaW9uT3V0cHV0QnVmZmVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMb2dnaW5nU2Vzc2lvbk91dHB1dEJ1ZmZlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLkxvZ2dpbmdTZXNzaW9uT3V0cHV0QnVmZmVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW8uU2Vzc2lvbk91dHB1dEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0id2lyZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi5XaXJlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZmx1c2giCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNZXRyaWNzIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmlvLkh0dHBUcmFuc3BvcnRNZXRyaWNzIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVMaW5lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlTGluZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlByb3h5U2VsZWN0b3JSb3V0ZVBsYW5uZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5IdHRwUm91dGVQbGFubmVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJQcm94eVNlbGVjdG9yUm91dGVQbGFubmVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4uUHJveHlTZWxlY3RvclJvdXRlUGxhbm5lciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNjaHJlZyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uc2NoZW1lLlNjaGVtZVJlZ2lzdHJ5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwcm9zZWwiIHR5cGU9ImphdmEubmV0LlByb3h5U2VsZWN0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjaG9vc2VQcm94eSIKKyByZXR1cm49ImphdmEubmV0LlByb3h5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm94aWVzIiB0eXBlPSJqYXZhLnV0aWwuTGlzdCZsdDtqYXZhLm5ldC5Qcm94eSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBIb3N0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZXRlcm1pbmVQcm94eSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwSG9zdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZXRlcm1pbmVSb3V0ZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwSG9zdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ikh0dHBFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhvc3QiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJpc2EiIHR5cGU9ImphdmEubmV0LkluZXRTb2NrZXRBZGRyZXNzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb3h5U2VsZWN0b3IiCisgcmV0dXJuPSJqYXZhLm5ldC5Qcm94eVNlbGVjdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByb3h5U2VsZWN0b3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm9zZWwiIHR5cGU9ImphdmEubmV0LlByb3h5U2VsZWN0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJwcm94eVNlbGVjdG9yIgorIHR5cGU9ImphdmEubmV0LlByb3h5U2VsZWN0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzY2hlbWVSZWdpc3RyeSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5zY2hlbWUuU2NoZW1lUmVnaXN0cnkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2luZ2xlQ2xpZW50Q29ubk1hbmFnZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uQ2xpZW50Q29ubmVjdGlvbk1hbmFnZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNpbmdsZUNsaWVudENvbm5NYW5hZ2VyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4uU2luZ2xlQ2xpZW50Q29ubk1hbmFnZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NocmVnIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5zY2hlbWUuU2NoZW1lUmVnaXN0cnkiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhc3NlcnRTdGlsbFVwIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvc2VFeHBpcmVkQ29ubmVjdGlvbnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb3NlSWRsZUNvbm5lY3Rpb25zIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWRsZXRpbWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR1bml0IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVDb25uZWN0aW9uT3BlcmF0b3IiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5DbGllbnRDb25uZWN0aW9uT3BlcmF0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNjaHJlZyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uc2NoZW1lLlNjaGVtZVJlZ2lzdHJ5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbm5lY3Rpb24iCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5NYW5hZ2VkQ2xpZW50Q29ubmVjdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icm91dGUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTY2hlbWVSZWdpc3RyeSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb25uLnNjaGVtZS5TY2hlbWVSZWdpc3RyeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWxlYXNlQ29ubmVjdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbm4iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLk1hbmFnZWRDbGllbnRDb25uZWN0aW9uIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWxpZER1cmF0aW9uIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lVW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVxdWVzdENvbm5lY3Rpb24iCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5DbGllbnRDb25uZWN0aW9uUmVxdWVzdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyb3V0ZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5IdHRwUm91dGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJldm9rZUNvbm5lY3Rpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNodXRkb3duIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Ik1JU1VTRV9NRVNTQUdFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O0ludmFsaWQgdXNlIG9mIFNpbmdsZUNsaWVudENvbm5NYW5hZ2VyOiBjb25uZWN0aW9uIHN0aWxsIGFsbG9jYXRlZC5cbk1ha2Ugc3VyZSB0byByZWxlYXNlIHRoZSBjb25uZWN0aW9uIGJlZm9yZSBhbGxvY2F0aW5nIGFub3RoZXIgb25lLiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJhbHdheXNTaHV0RG93biIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY29ubk9wZXJhdG9yIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNsaWVudENvbm5lY3Rpb25PcGVyYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNvbm5lY3Rpb25FeHBpcmVzVGltZSIKKyB0eXBlPSJsb25nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaXNTaHV0RG93biIKKyB0eXBlPSJib29sZWFuIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsYXN0UmVsZWFzZVRpbWUiCisgdHlwZT0ibG9uZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1hbmFnZWRDb25uIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4uU2luZ2xlQ2xpZW50Q29ubk1hbmFnZXIuQ29ubkFkYXB0ZXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJzY2hlbWVSZWdpc3RyeSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5zY2hlbWUuU2NoZW1lUmVnaXN0cnkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ1bmlxdWVQb29sRW50cnkiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi5TaW5nbGVDbGllbnRDb25uTWFuYWdlci5Qb29sRW50cnkiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2luZ2xlQ2xpZW50Q29ubk1hbmFnZXIuQ29ubkFkYXB0ZXIiCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi5BYnN0cmFjdFBvb2xlZENvbm5BZGFwdGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU2luZ2xlQ2xpZW50Q29ubk1hbmFnZXIuQ29ubkFkYXB0ZXIiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi5TaW5nbGVDbGllbnRDb25uTWFuYWdlci5Db25uQWRhcHRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVudHJ5IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLlNpbmdsZUNsaWVudENvbm5NYW5hZ2VyLlBvb2xFbnRyeSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icm91dGUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU2luZ2xlQ2xpZW50Q29ubk1hbmFnZXIuUG9vbEVudHJ5IgorIGV4dGVuZHM9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4uQWJzdHJhY3RQb29sRW50cnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTaW5nbGVDbGllbnRDb25uTWFuYWdlci5Qb29sRW50cnkiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi5TaW5nbGVDbGllbnRDb25uTWFuYWdlci5Qb29sRW50cnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaHV0ZG93biIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IldpcmUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IldpcmUiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi5XaXJlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9nIiB0eXBlPSJvcmcuYXBhY2hlLmNvbW1vbnMubG9nZ2luZy5Mb2ciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJlbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnB1dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imluc3RyZWFtIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnB1dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2ZmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbnB1dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5wdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlucHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3V0cHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0c3RyZWFtIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvdXRwdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3V0cHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvdXRwdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im91dHB1dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi50c2NjbSIKKz4KKzxjbGFzcyBuYW1lPSJBYnN0cmFjdENvbm5Qb29sIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi50c2NjbS5SZWZRdWV1ZUhhbmRsZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFic3RyYWN0Q29ublBvb2wiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi50c2NjbS5BYnN0cmFjdENvbm5Qb29sIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb3NlQ29ubmVjdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbm4iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLk9wZXJhdGVkQ2xpZW50Q29ubmVjdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9zZUV4cGlyZWRDb25uZWN0aW9ucyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvc2VJZGxlQ29ubmVjdGlvbnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpZGxldGltZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHVuaXQiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRlbGV0ZUNsb3NlZENvbm5lY3Rpb25zIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuYWJsZUNvbm5lY3Rpb25HQyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmcmVlRW50cnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVudHJ5IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLnRzY2NtLkJhc2ljUG9vbEVudHJ5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXVzYWJsZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsaWREdXJhdGlvbiIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZVVuaXQiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVudHJ5IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi50c2NjbS5CYXNpY1Bvb2xFbnRyeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyb3V0ZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5IdHRwUm91dGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lb3V0IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0dW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNvbm5lY3Rpb25Qb29sVGltZW91dEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uQ29ubmVjdGlvblBvb2xUaW1lb3V0RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImhhbmRsZUxvc3RFbnRyeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icm91dGUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImhhbmRsZVJlZmVyZW5jZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlZiIgdHlwZT0iamF2YS5sYW5nLnJlZi5SZWZlcmVuY2UiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVxdWVzdFBvb2xFbnRyeSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4udHNjY20uUG9vbEVudHJ5UmVxdWVzdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyb3V0ZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5IdHRwUm91dGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNodXRkb3duIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImlkbGVDb25uSGFuZGxlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLklkbGVDb25uZWN0aW9uSGFuZGxlciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImlzU2h1dERvd24iCisgdHlwZT0iYm9vbGVhbiIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaXNzdWVkQ29ubmVjdGlvbnMiCisgdHlwZT0iamF2YS51dGlsLlNldCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im51bUNvbm5lY3Rpb25zIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InBvb2xMb2NrIgorIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkxvY2siCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InJlZlF1ZXVlIgorIHR5cGU9ImphdmEubGFuZy5yZWYuUmVmZXJlbmNlUXVldWUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQmFzaWNQb29sRW50cnkiCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi5BYnN0cmFjdFBvb2xFbnRyeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJhc2ljUG9vbEVudHJ5IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4udHNjY20uQmFzaWNQb29sRW50cnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvcCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uQ2xpZW50Q29ubmVjdGlvbk9wZXJhdG9yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyb3V0ZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5IdHRwUm91dGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InF1ZXVlIiB0eXBlPSJqYXZhLmxhbmcucmVmLlJlZmVyZW5jZVF1ZXVlJmx0O2phdmEubGFuZy5PYmplY3QmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q29ubmVjdGlvbiIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb25uLk9wZXJhdGVkQ2xpZW50Q29ubmVjdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBsYW5uZWRSb3V0ZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0V2Vha1JlZiIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4udHNjY20uQmFzaWNQb29sRW50cnlSZWYiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCYXNpY1Bvb2xFbnRyeVJlZiIKKyBleHRlbmRzPSJqYXZhLmxhbmcucmVmLldlYWtSZWZlcmVuY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY1Bvb2xFbnRyeVJlZiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLnRzY2NtLkJhc2ljUG9vbEVudHJ5UmVmIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW50cnkiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4udHNjY20uQmFzaWNQb29sRW50cnkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InF1ZXVlIiB0eXBlPSJqYXZhLmxhbmcucmVmLlJlZmVyZW5jZVF1ZXVlJmx0O2phdmEubGFuZy5PYmplY3QmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Um91dGUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkh0dHBSb3V0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJhc2ljUG9vbGVkQ29ubkFkYXB0ZXIiCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi5BYnN0cmFjdFBvb2xlZENvbm5BZGFwdGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmFzaWNQb29sZWRDb25uQWRhcHRlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLnRzY2NtLkJhc2ljUG9vbGVkQ29ubkFkYXB0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0c2NjbSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi50c2NjbS5UaHJlYWRTYWZlQ2xpZW50Q29ubk1hbmFnZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImVudHJ5IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLkFic3RyYWN0UG9vbEVudHJ5Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0UG9vbEVudHJ5IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi5BYnN0cmFjdFBvb2xFbnRyeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb25uUG9vbEJ5Um91dGUiCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi50c2NjbS5BYnN0cmFjdENvbm5Qb29sIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29ublBvb2xCeVJvdXRlIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4udHNjY20uQ29ublBvb2xCeVJvdXRlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3BlcmF0b3IiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNsaWVudENvbm5lY3Rpb25PcGVyYXRvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVFbnRyeSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4udHNjY20uQmFzaWNQb29sRW50cnkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvc3BsIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLnRzY2NtLlJvdXRlU3BlY2lmaWNQb29sIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uQ2xpZW50Q29ubmVjdGlvbk9wZXJhdG9yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUZyZWVDb25uUXVldWUiCisgcmV0dXJuPSJqYXZhLnV0aWwuUXVldWUmbHQ7b3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi50c2NjbS5CYXNpY1Bvb2xFbnRyeSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlUm91dGVUb1Bvb2xNYXAiCisgcmV0dXJuPSJqYXZhLnV0aWwuTWFwJmx0O29yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlLCBvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLnRzY2NtLlJvdXRlU3BlY2lmaWNQb29sJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVXYWl0aW5nVGhyZWFkUXVldWUiCisgcmV0dXJuPSJqYXZhLnV0aWwuUXVldWUmbHQ7b3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi50c2NjbS5XYWl0aW5nVGhyZWFkJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWxldGVDbG9zZWRDb25uZWN0aW9ucyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVsZXRlRW50cnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbnRyeSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi50c2NjbS5CYXNpY1Bvb2xFbnRyeSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWxldGVMZWFzdFVzZWRFbnRyeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZnJlZUVudHJ5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW50cnkiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4udHNjY20uQmFzaWNQb29sRW50cnkiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJldXNhYmxlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWxpZER1cmF0aW9uIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0aW1lVW5pdCIgdHlwZT0iamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZVVuaXQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29ubmVjdGlvbnNJblBvb2wiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvdXRlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkh0dHBSb3V0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbnRyeUJsb2NraW5nIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi50c2NjbS5CYXNpY1Bvb2xFbnRyeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icm91dGUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHVuaXQiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhYm9ydGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLnRzY2NtLldhaXRpbmdUaHJlYWRBYm9ydGVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDb25uZWN0aW9uUG9vbFRpbWVvdXRFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNvbm5lY3Rpb25Qb29sVGltZW91dEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGcmVlRW50cnkiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLnRzY2NtLkJhc2ljUG9vbEVudHJ5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJyb3NwbCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi50c2NjbS5Sb3V0ZVNwZWNpZmljUG9vbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdGUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Um91dGVQb29sIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi50c2NjbS5Sb3V0ZVNwZWNpZmljUG9vbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icm91dGUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjcmVhdGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFuZGxlTG9zdEVudHJ5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icm91dGUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1JvdXRlU3BlY2lmaWNQb29sIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi50c2NjbS5Sb3V0ZVNwZWNpZmljUG9vbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icm91dGUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5ld1dhaXRpbmdUaHJlYWQiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLnRzY2NtLldhaXRpbmdUaHJlYWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbmQiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkNvbmRpdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icm9zcGwiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4udHNjY20uUm91dGVTcGVjaWZpY1Bvb2wiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibm90aWZ5V2FpdGluZ1RocmVhZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvc3BsIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLnRzY2NtLlJvdXRlU3BlY2lmaWNQb29sIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcXVlc3RQb29sRW50cnkiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLnRzY2NtLlBvb2xFbnRyeVJlcXVlc3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJvdXRlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkh0dHBSb3V0ZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdGUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJmcmVlQ29ubmVjdGlvbnMiCisgdHlwZT0iamF2YS51dGlsLlF1ZXVlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibWF4VG90YWxDb25uZWN0aW9ucyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im9wZXJhdG9yIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNsaWVudENvbm5lY3Rpb25PcGVyYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icm91dGVUb1Bvb2wiCisgdHlwZT0iamF2YS51dGlsLk1hcCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0id2FpdGluZ1RocmVhZHMiCisgdHlwZT0iamF2YS51dGlsLlF1ZXVlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJQb29sRW50cnlSZXF1ZXN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYWJvcnRSZXF1ZXN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBvb2xFbnRyeSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4udHNjY20uQmFzaWNQb29sRW50cnkiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHVuaXQiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJDb25uZWN0aW9uUG9vbFRpbWVvdXRFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNvbm5lY3Rpb25Qb29sVGltZW91dEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW50ZXJydXB0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbnRlcnJ1cHRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlJlZlF1ZXVlSGFuZGxlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImhhbmRsZVJlZmVyZW5jZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVmIiB0eXBlPSJqYXZhLmxhbmcucmVmLlJlZmVyZW5jZSZsdDs/Jmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iUmVmUXVldWVXb3JrZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLlJ1bm5hYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZWZRdWV1ZVdvcmtlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLnRzY2NtLlJlZlF1ZXVlV29ya2VyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icXVldWUiIHR5cGU9ImphdmEubGFuZy5yZWYuUmVmZXJlbmNlUXVldWUmbHQ7PyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhhbmRsZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4udHNjY20uUmVmUXVldWVIYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0icnVuIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzaHV0ZG93biIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJyZWZIYW5kbGVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4udHNjY20uUmVmUXVldWVIYW5kbGVyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJyZWZRdWV1ZSIKKyB0eXBlPSJqYXZhLmxhbmcucmVmLlJlZmVyZW5jZVF1ZXVlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJ3b3JrZXJUaHJlYWQiCisgdHlwZT0iamF2YS5sYW5nLlRocmVhZCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJvdXRlU3BlY2lmaWNQb29sIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSb3V0ZVNwZWNpZmljUG9vbCIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLnRzY2NtLlJvdXRlU3BlY2lmaWNQb29sIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icm91dGUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYXhFbnRyaWVzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhbGxvY0VudHJ5IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi50c2NjbS5CYXNpY1Bvb2xFbnRyeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdGUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlZEVudHJ5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW50cnkiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4udHNjY20uQmFzaWNQb29sRW50cnkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZGVsZXRlRW50cnkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbnRyeSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi50c2NjbS5CYXNpY1Bvb2xFbnRyeSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkcm9wRW50cnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZyZWVFbnRyeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVudHJ5IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLnRzY2NtLkJhc2ljUG9vbEVudHJ5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENhcGFjaXR5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVudHJ5Q291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNYXhFbnRyaWVzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Um91dGUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5yb3V0aW5nLkh0dHBSb3V0ZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc1RocmVhZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNVbnVzZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHRUaHJlYWQiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLnRzY2NtLldhaXRpbmdUaHJlYWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVldWVUaHJlYWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ3dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi50c2NjbS5XYWl0aW5nVGhyZWFkIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZVRocmVhZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Ind0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLnRzY2NtLldhaXRpbmdUaHJlYWQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJmcmVlRW50cmllcyIKKyB0eXBlPSJqYXZhLnV0aWwuTGlua2VkTGlzdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibWF4RW50cmllcyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im51bUVudHJpZXMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icm91dGUiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5IdHRwUm91dGUiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IndhaXRpbmdUaHJlYWRzIgorIHR5cGU9ImphdmEudXRpbC5RdWV1ZSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlRocmVhZFNhZmVDbGllbnRDb25uTWFuYWdlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5DbGllbnRDb25uZWN0aW9uTWFuYWdlciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iVGhyZWFkU2FmZUNsaWVudENvbm5NYW5hZ2VyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4udHNjY20uVGhyZWFkU2FmZUNsaWVudENvbm5NYW5hZ2VyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InNjaHJlZyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uc2NoZW1lLlNjaGVtZVJlZ2lzdHJ5Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvc2VFeHBpcmVkQ29ubmVjdGlvbnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb3NlSWRsZUNvbm5lY3Rpb25zIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWRsZVRpbWVvdXQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR1bml0IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVDb25uZWN0aW9uT3BlcmF0b3IiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5DbGllbnRDb25uZWN0aW9uT3BlcmF0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNjaHJlZyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uc2NoZW1lLlNjaGVtZVJlZ2lzdHJ5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUNvbm5lY3Rpb25Qb29sIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi50c2NjbS5BYnN0cmFjdENvbm5Qb29sIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb25uZWN0aW9uc0luUG9vbCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icm91dGUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnJvdXRpbmcuSHR0cFJvdXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbm5lY3Rpb25zSW5Qb29sIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNjaGVtZVJlZ2lzdHJ5IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNvbm4uc2NoZW1lLlNjaGVtZVJlZ2lzdHJ5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbGVhc2VDb25uZWN0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29ubiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4uTWFuYWdlZENsaWVudENvbm5lY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbGlkRHVyYXRpb24iIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVVbml0IiB0eXBlPSJqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXF1ZXN0Q29ubmVjdGlvbiIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb25uLkNsaWVudENvbm5lY3Rpb25SZXF1ZXN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyb3V0ZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvbm4ucm91dGluZy5IdHRwUm91dGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNodXRkb3duIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImNvbm5PcGVyYXRvciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29ubi5DbGllbnRDb25uZWN0aW9uT3BlcmF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjb25uZWN0aW9uUG9vbCIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLnRzY2NtLkFic3RyYWN0Q29ublBvb2wiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNjaGVtZVJlZ2lzdHJ5IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb25uLnNjaGVtZS5TY2hlbWVSZWdpc3RyeSIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJXYWl0aW5nVGhyZWFkIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJXYWl0aW5nVGhyZWFkIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4udHNjY20uV2FpdGluZ1RocmVhZCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbmQiIHR5cGU9ImphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkNvbmRpdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icG9vbCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi50c2NjbS5Sb3V0ZVNwZWNpZmljUG9vbCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImF3YWl0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVhZGxpbmUiIHR5cGU9ImphdmEudXRpbC5EYXRlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkludGVycnVwdGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbmRpdGlvbiIKKyByZXR1cm49ImphdmEudXRpbC5jb25jdXJyZW50LmxvY2tzLkNvbmRpdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBvb2wiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb25uLnRzY2NtLlJvdXRlU3BlY2lmaWNQb29sIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGhyZWFkIgorIHJldHVybj0iamF2YS5sYW5nLlRocmVhZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImludGVycnVwdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id2FrZXVwIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJXYWl0aW5nVGhyZWFkQWJvcnRlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iV2FpdGluZ1RocmVhZEFib3J0ZXIiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29ubi50c2NjbS5XYWl0aW5nVGhyZWFkQWJvcnRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhYm9ydCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0V2FpdGluZ1RocmVhZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndhaXRpbmdUaHJlYWQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvbm4udHNjY20uV2FpdGluZ1RocmVhZCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZSIKKz4KKzxjbGFzcyBuYW1lPSJBYnN0cmFjdENvb2tpZUF0dHJpYnV0ZUhhbmRsZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZUF0dHJpYnV0ZUhhbmRsZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFic3RyYWN0Q29va2llQXR0cmlidXRlSGFuZGxlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb29raWUuQWJzdHJhY3RDb29raWVBdHRyaWJ1dGVIYW5kbGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9Im1hdGNoIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29va2llIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZ2luIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZU9yaWdpbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWxpZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb2tpZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWdpbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVPcmlnaW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik1hbGZvcm1lZENvb2tpZUV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5NYWxmb3JtZWRDb29raWVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQWJzdHJhY3RDb29raWVTcGVjIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVTcGVjIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBYnN0cmFjdENvb2tpZVNwZWMiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29va2llLkFic3RyYWN0Q29va2llU3BlYyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJmaW5kQXR0cmliSGFuZGxlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llQXR0cmlidXRlSGFuZGxlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdHRyaWJIYW5kbGVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVBdHRyaWJ1dGVIYW5kbGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF0dHJpYkhhbmRsZXJzIgorIHJldHVybj0iamF2YS51dGlsLkNvbGxlY3Rpb24mbHQ7b3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVBdHRyaWJ1dGVIYW5kbGVyJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3RlckF0dHJpYkhhbmRsZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZUF0dHJpYnV0ZUhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQmFzaWNDbGllbnRDb29raWUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5DbGllbnRDb29raWUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLlNldENvb2tpZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmFzaWNDbGllbnRDb29raWUiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29va2llLkJhc2ljQ2xpZW50Q29va2llIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkNsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29udGFpbnNBdHRyaWJ1dGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF0dHJpYnV0ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29tbWVudCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29tbWVudFVSTCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RG9tYWluIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFeHBpcnlEYXRlIgorIHJldHVybj0iamF2YS51dGlsLkRhdGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGF0aCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UG9ydHMiCisgcmV0dXJuPSJpbnRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmVyc2lvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0V4cGlyZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRlIiB0eXBlPSJqYXZhLnV0aWwuRGF0ZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1BlcnNpc3RlbnQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU2VjdXJlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBdHRyaWJ1dGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb21tZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29tbWVudCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREb21haW4iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkb21haW4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RXhwaXJ5RGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGlyeURhdGUiIHR5cGU9ImphdmEudXRpbC5EYXRlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBhdGgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNlY3VyZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlY3VyZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRWYWx1ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZlcnNpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2ZXJzaW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQmFzaWNDbGllbnRDb29raWUyIgorIGV4dGVuZHM9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5CYXNpY0NsaWVudENvb2tpZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5TZXRDb29raWUyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY0NsaWVudENvb2tpZTIiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29va2llLkJhc2ljQ2xpZW50Q29va2llMiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ic2V0Q29tbWVudFVSTCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbW1lbnRVUkwiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGlzY2FyZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRpc2NhcmQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UG9ydHMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3J0cyIgdHlwZT0iaW50W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQmFzaWNDb21tZW50SGFuZGxlciIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb29raWUuQWJzdHJhY3RDb29raWVBdHRyaWJ1dGVIYW5kbGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmFzaWNDb21tZW50SGFuZGxlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb29raWUuQmFzaWNDb21tZW50SGFuZGxlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJwYXJzZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb2tpZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5TZXRDb29raWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRDb29raWVFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJhc2ljRG9tYWluSGFuZGxlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZUF0dHJpYnV0ZUhhbmRsZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJhc2ljRG9tYWluSGFuZGxlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb29raWUuQmFzaWNEb21haW5IYW5kbGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9Im1hdGNoIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29va2llIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZ2luIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZU9yaWdpbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb2tpZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5TZXRDb29raWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRDb29raWVFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbGlkYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29va2llIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZ2luIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZU9yaWdpbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLk1hbGZvcm1lZENvb2tpZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCYXNpY0V4cGlyZXNIYW5kbGVyIgorIGV4dGVuZHM9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5BYnN0cmFjdENvb2tpZUF0dHJpYnV0ZUhhbmRsZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY0V4cGlyZXNIYW5kbGVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5CYXNpY0V4cGlyZXNIYW5kbGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0ZXBhdHRlcm5zIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJwYXJzZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb2tpZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5TZXRDb29raWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRDb29raWVFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJhc2ljTWF4QWdlSGFuZGxlciIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb29raWUuQWJzdHJhY3RDb29raWVBdHRyaWJ1dGVIYW5kbGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmFzaWNNYXhBZ2VIYW5kbGVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5CYXNpY01heEFnZUhhbmRsZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29raWUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuU2V0Q29va2llIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLk1hbGZvcm1lZENvb2tpZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCYXNpY1BhdGhIYW5kbGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llQXR0cmlidXRlSGFuZGxlciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmFzaWNQYXRoSGFuZGxlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb29raWUuQmFzaWNQYXRoSGFuZGxlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJtYXRjaCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb2tpZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWdpbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVPcmlnaW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29raWUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuU2V0Q29va2llIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLk1hbGZvcm1lZENvb2tpZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWxpZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb2tpZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWdpbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVPcmlnaW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik1hbGZvcm1lZENvb2tpZUV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5NYWxmb3JtZWRDb29raWVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQmFzaWNTZWN1cmVIYW5kbGVyIgorIGV4dGVuZHM9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5BYnN0cmFjdENvb2tpZUF0dHJpYnV0ZUhhbmRsZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY1NlY3VyZUhhbmRsZXIiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29va2llLkJhc2ljU2VjdXJlSGFuZGxlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJwYXJzZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb2tpZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5TZXRDb29raWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRDb29raWVFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJlc3RNYXRjaFNwZWMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVTcGVjIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCZXN0TWF0Y2hTcGVjIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5CZXN0TWF0Y2hTcGVjIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0ZXBhdHRlcm5zIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9uZUhlYWRlciIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmVzdE1hdGNoU3BlYyIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb29raWUuQmVzdE1hdGNoU3BlYyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJmb3JtYXRDb29raWVzIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7b3JnLmFwYWNoZS5odHRwLkhlYWRlciZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb2tpZXMiIHR5cGU9ImphdmEudXRpbC5MaXN0Jmx0O29yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llJmd0OyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWZXJzaW9uIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZlcnNpb25IZWFkZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1hdGNoIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29va2llIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZ2luIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZU9yaWdpbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZSIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O29yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVhZGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnaW4iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llT3JpZ2luIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRDb29raWVFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbGlkYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29va2llIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZ2luIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZU9yaWdpbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLk1hbGZvcm1lZENvb2tpZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCZXN0TWF0Y2hTcGVjRmFjdG9yeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZVNwZWNGYWN0b3J5Ij4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCZXN0TWF0Y2hTcGVjRmFjdG9yeSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb29raWUuQmVzdE1hdGNoU3BlY0ZhY3RvcnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ibmV3SW5zdGFuY2UiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZVNwZWMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJyb3dzZXJDb21wYXRTcGVjIgorIGV4dGVuZHM9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5Db29raWVTcGVjQmFzZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJyb3dzZXJDb21wYXRTcGVjIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5Ccm93c2VyQ29tcGF0U3BlYyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGVwYXR0ZXJucyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCcm93c2VyQ29tcGF0U3BlYyIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb29raWUuQnJvd3NlckNvbXBhdFNwZWMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZm9ybWF0Q29va2llcyIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O29yZy5hcGFjaGUuaHR0cC5IZWFkZXImZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29raWVzIiB0eXBlPSJqYXZhLnV0aWwuTGlzdCZsdDtvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmVyc2lvbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWZXJzaW9uSGVhZGVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZSIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O29yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVhZGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnaW4iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llT3JpZ2luIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRDb29raWVFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iREFURV9QQVRURVJOUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJyb3dzZXJDb21wYXRTcGVjRmFjdG9yeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZVNwZWNGYWN0b3J5Ij4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCcm93c2VyQ29tcGF0U3BlY0ZhY3RvcnkiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29va2llLkJyb3dzZXJDb21wYXRTcGVjRmFjdG9yeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJuZXdJbnN0YW5jZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llU3BlYyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29va2llU3BlY0Jhc2UiCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29va2llLkFic3RyYWN0Q29va2llU3BlYyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29va2llU3BlY0Jhc2UiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29va2llLkNvb2tpZVNwZWNCYXNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldERlZmF1bHREb21haW4iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWdpbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVPcmlnaW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVmYXVsdFBhdGgiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWdpbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVPcmlnaW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWF0Y2giCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29raWUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnaW4iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llT3JpZ2luIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlIgorIHJldHVybj0iamF2YS51dGlsLkxpc3QmbHQ7b3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWUmZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbGVtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkhlYWRlckVsZW1lbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZ2luIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZU9yaWdpbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLk1hbGZvcm1lZENvb2tpZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWxpZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb2tpZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWdpbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVPcmlnaW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik1hbGZvcm1lZENvb2tpZUV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5NYWxmb3JtZWRDb29raWVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRGF0ZVBhcnNlRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEYXRlUGFyc2VFeGNlcHRpb24iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29va2llLkRhdGVQYXJzZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRhdGVQYXJzZUV4Y2VwdGlvbiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb29raWUuRGF0ZVBhcnNlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRhdGVVdGlscyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZm9ybWF0RGF0ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0ZSIgdHlwZT0iamF2YS51dGlsLkRhdGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0RGF0ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0ZSIgdHlwZT0iamF2YS51dGlsLkRhdGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhdHRlcm4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VEYXRlIgorIHJldHVybj0iamF2YS51dGlsLkRhdGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0ZVZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJEYXRlUGFyc2VFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5EYXRlUGFyc2VFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VEYXRlIgorIHJldHVybj0iamF2YS51dGlsLkRhdGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0ZVZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRlRm9ybWF0cyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJEYXRlUGFyc2VFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5EYXRlUGFyc2VFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VEYXRlIgorIHJldHVybj0iamF2YS51dGlsLkRhdGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0ZVZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRlRm9ybWF0cyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydERhdGUiIHR5cGU9ImphdmEudXRpbC5EYXRlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJEYXRlUGFyc2VFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5EYXRlUGFyc2VFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJHTVQiCisgdHlwZT0iamF2YS51dGlsLlRpbWVab25lIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBBVFRFUk5fQVNDVElNRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtFRUUgTU1NIGQgSEg6bW06c3MgeXl5eSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQQVRURVJOX1JGQzEwMzYiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7RUVFRSwgZGQtTU1NLXl5IEhIOm1tOnNzIHp6eiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQQVRURVJOX1JGQzExMjMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7RUVFLCBkZCBNTU0geXl5eSBISDptbTpzcyB6enomcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik5ldHNjYXBlRG9tYWluSGFuZGxlciIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb29raWUuQmFzaWNEb21haW5IYW5kbGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTmV0c2NhcGVEb21haW5IYW5kbGVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5OZXRzY2FwZURvbWFpbkhhbmRsZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTmV0c2NhcGVEcmFmdEhlYWRlclBhcnNlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iTmV0c2NhcGVEcmFmdEhlYWRlclBhcnNlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb29raWUuTmV0c2NhcGVEcmFmdEhlYWRlclBhcnNlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJwYXJzZUhlYWRlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXJFbGVtZW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5QYXJzZXJDdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhcnNlRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUGFyc2VFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJERUZBVUxUIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5OZXRzY2FwZURyYWZ0SGVhZGVyUGFyc2VyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJOZXRzY2FwZURyYWZ0U3BlYyIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb29raWUuQ29va2llU3BlY0Jhc2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOZXRzY2FwZURyYWZ0U3BlYyIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb29raWUuTmV0c2NhcGVEcmFmdFNwZWMiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRlcGF0dGVybnMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iTmV0c2NhcGVEcmFmdFNwZWMiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29va2llLk5ldHNjYXBlRHJhZnRTcGVjIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdENvb2tpZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDtvcmcuYXBhY2hlLmh0dHAuSGVhZGVyJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29va2llcyIgdHlwZT0iamF2YS51dGlsLkxpc3QmbHQ7b3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWUmZ3Q7Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZlcnNpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmVyc2lvbkhlYWRlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDtvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhlYWRlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkhlYWRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZ2luIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZU9yaWdpbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLk1hbGZvcm1lZENvb2tpZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkVYUElSRVNfUEFUVEVSTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtFRUUsIGRkLU1NTS15eXl5IEhIOm1tOnNzIHomcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ik5ldHNjYXBlRHJhZnRTcGVjRmFjdG9yeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZVNwZWNGYWN0b3J5Ij4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOZXRzY2FwZURyYWZ0U3BlY0ZhY3RvcnkiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29va2llLk5ldHNjYXBlRHJhZnRTcGVjRmFjdG9yeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJuZXdJbnN0YW5jZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llU3BlYyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUkZDMjEwOURvbWFpbkhhbmRsZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVBdHRyaWJ1dGVIYW5kbGVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSRkMyMTA5RG9tYWluSGFuZGxlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb29raWUuUkZDMjEwOURvbWFpbkhhbmRsZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ibWF0Y2giCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29raWUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnaW4iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llT3JpZ2luIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29va2llIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLlNldENvb2tpZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik1hbGZvcm1lZENvb2tpZUV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5NYWxmb3JtZWRDb29raWVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsaWRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29raWUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnaW4iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llT3JpZ2luIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRDb29raWVFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJGQzIxMDlTcGVjIgorIGV4dGVuZHM9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5Db29raWVTcGVjQmFzZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJGQzIxMDlTcGVjIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5SRkMyMTA5U3BlYyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGVwYXR0ZXJucyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvbmVIZWFkZXIiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJGQzIxMDlTcGVjIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5SRkMyMTA5U3BlYyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJmb3JtYXRDb29raWVBc1ZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb29raWUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2ZXJzaW9uIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0Q29va2llcyIKKyByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O29yZy5hcGFjaGUuaHR0cC5IZWFkZXImZ3Q7IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29raWVzIiB0eXBlPSJqYXZhLnV0aWwuTGlzdCZsdDtvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZSZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0UGFyYW1Bc1ZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmVyc2lvbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZlcnNpb24iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmVyc2lvbkhlYWRlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDtvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZSZndDsiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhlYWRlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkhlYWRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZ2luIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZU9yaWdpbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLk1hbGZvcm1lZENvb2tpZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSRkMyMTA5U3BlY0ZhY3RvcnkiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVTcGVjRmFjdG9yeSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUkZDMjEwOVNwZWNGYWN0b3J5IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5SRkMyMTA5U3BlY0ZhY3RvcnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ibmV3SW5zdGFuY2UiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZVNwZWMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJGQzIxMDlWZXJzaW9uSGFuZGxlciIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb29raWUuQWJzdHJhY3RDb29raWVBdHRyaWJ1dGVIYW5kbGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUkZDMjEwOVZlcnNpb25IYW5kbGVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5SRkMyMTA5VmVyc2lvbkhhbmRsZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29raWUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuU2V0Q29va2llIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLk1hbGZvcm1lZENvb2tpZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSRkMyOTY1Q29tbWVudFVybEF0dHJpYnV0ZUhhbmRsZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVBdHRyaWJ1dGVIYW5kbGVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSRkMyOTY1Q29tbWVudFVybEF0dHJpYnV0ZUhhbmRsZXIiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29va2llLlJGQzI5NjVDb21tZW50VXJsQXR0cmlidXRlSGFuZGxlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJtYXRjaCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb2tpZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWdpbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVPcmlnaW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29raWUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuU2V0Q29va2llIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb21tZW50dXJsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRDb29raWVFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbGlkYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29va2llIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZ2luIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZU9yaWdpbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLk1hbGZvcm1lZENvb2tpZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSRkMyOTY1RGlzY2FyZEF0dHJpYnV0ZUhhbmRsZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVBdHRyaWJ1dGVIYW5kbGVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSRkMyOTY1RGlzY2FyZEF0dHJpYnV0ZUhhbmRsZXIiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29va2llLlJGQzI5NjVEaXNjYXJkQXR0cmlidXRlSGFuZGxlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJtYXRjaCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb2tpZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWdpbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVPcmlnaW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29raWUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuU2V0Q29va2llIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb21tZW50dXJsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRDb29raWVFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbGlkYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29va2llIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZ2luIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZU9yaWdpbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLk1hbGZvcm1lZENvb2tpZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSRkMyOTY1RG9tYWluQXR0cmlidXRlSGFuZGxlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZUF0dHJpYnV0ZUhhbmRsZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJGQzI5NjVEb21haW5BdHRyaWJ1dGVIYW5kbGVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5SRkMyOTY1RG9tYWluQXR0cmlidXRlSGFuZGxlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkb21haW5NYXRjaCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imhvc3QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRvbWFpbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJtYXRjaCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb2tpZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWdpbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVPcmlnaW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29raWUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuU2V0Q29va2llIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkb21haW4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik1hbGZvcm1lZENvb2tpZUV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5NYWxmb3JtZWRDb29raWVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsaWRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29raWUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnaW4iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llT3JpZ2luIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRDb29raWVFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJGQzI5NjVQb3J0QXR0cmlidXRlSGFuZGxlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZUF0dHJpYnV0ZUhhbmRsZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJGQzI5NjVQb3J0QXR0cmlidXRlSGFuZGxlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5jb29raWUuUkZDMjk2NVBvcnRBdHRyaWJ1dGVIYW5kbGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9Im1hdGNoIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29va2llIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib3JpZ2luIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZU9yaWdpbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb2tpZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5TZXRDb29raWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBvcnRWYWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLk1hbGZvcm1lZENvb2tpZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWxpZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvb2tpZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9yaWdpbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5Db29raWVPcmlnaW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik1hbGZvcm1lZENvb2tpZUV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5NYWxmb3JtZWRDb29raWVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUkZDMjk2NVNwZWMiCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29va2llLlJGQzIxMDlTcGVjIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iUkZDMjk2NVNwZWMiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29va2llLlJGQzI5NjVTcGVjIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iUkZDMjk2NVNwZWMiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29va2llLlJGQzI5NjVTcGVjIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0ZXBhdHRlcm5zIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9uZUhlYWRlciIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJGQzI5NjVTcGVjRmFjdG9yeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLkNvb2tpZVNwZWNGYWN0b3J5Ij4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSRkMyOTY1U3BlY0ZhY3RvcnkiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuY29va2llLlJGQzI5NjVTcGVjRmFjdG9yeSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJuZXdJbnN0YW5jZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llU3BlYyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUkZDMjk2NVZlcnNpb25BdHRyaWJ1dGVIYW5kbGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llQXR0cmlidXRlSGFuZGxlciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUkZDMjk2NVZlcnNpb25BdHRyaWJ1dGVIYW5kbGVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmNvb2tpZS5SRkMyOTY1VmVyc2lvbkF0dHJpYnV0ZUhhbmRsZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ibWF0Y2giCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29raWUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnaW4iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llT3JpZ2luIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29va2llIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuY29va2llLlNldENvb2tpZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ik1hbGZvcm1lZENvb2tpZUV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmNvb2tpZS5NYWxmb3JtZWRDb29raWVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsaWRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb29raWUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvcmlnaW4iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuQ29va2llT3JpZ2luIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJNYWxmb3JtZWRDb29raWVFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5jb29raWUuTWFsZm9ybWVkQ29va2llRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuZW50aXR5IgorPgorPGNsYXNzIG5hbWU9IkVudGl0eURlc2VyaWFsaXplciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRW50aXR5RGVzZXJpYWxpemVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmVudGl0eS5FbnRpdHlEZXNlcmlhbGl6ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZW5TdHJhdGVneSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmVudGl0eS5Db250ZW50TGVuZ3RoU3RyYXRlZ3kiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZXNlcmlhbGl6ZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwRW50aXR5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmlvLlNlc3Npb25JbnB1dEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBNZXNzYWdlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZG9EZXNlcmlhbGl6ZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5lbnRpdHkuQmFzaWNIdHRwRW50aXR5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmlvLlNlc3Npb25JbnB1dEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBNZXNzYWdlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRW50aXR5U2VyaWFsaXplciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iRW50aXR5U2VyaWFsaXplciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5lbnRpdHkuRW50aXR5U2VyaWFsaXplciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlblN0cmF0ZWd5IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuZW50aXR5LkNvbnRlbnRMZW5ndGhTdHJhdGVneSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRvU2VyaWFsaXplIgorIHJldHVybj0iamF2YS5pby5PdXRwdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dGJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmlvLlNlc3Npb25PdXRwdXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwTWVzc2FnZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNlcmlhbGl6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im91dGJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmlvLlNlc3Npb25PdXRwdXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwTWVzc2FnZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW50aXR5IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEVudGl0eSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkxheENvbnRlbnRMZW5ndGhTdHJhdGVneSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuZW50aXR5LkNvbnRlbnRMZW5ndGhTdHJhdGVneSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTGF4Q29udGVudExlbmd0aFN0cmF0ZWd5IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmVudGl0eS5MYXhDb250ZW50TGVuZ3RoU3RyYXRlZ3kiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZGV0ZXJtaW5lTGVuZ3RoIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBNZXNzYWdlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTdHJpY3RDb250ZW50TGVuZ3RoU3RyYXRlZ3kiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmVudGl0eS5Db250ZW50TGVuZ3RoU3RyYXRlZ3kiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlN0cmljdENvbnRlbnRMZW5ndGhTdHJhdGVneSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5lbnRpdHkuU3RyaWN0Q29udGVudExlbmd0aFN0cmF0ZWd5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRldGVybWluZUxlbmd0aCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwTWVzc2FnZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5pbyIKKz4KKzxjbGFzcyBuYW1lPSJBYnN0cmFjdE1lc3NhZ2VQYXJzZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuaW8uSHR0cE1lc3NhZ2VQYXJzZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFic3RyYWN0TWVzc2FnZVBhcnNlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5pby5BYnN0cmFjdE1lc3NhZ2VQYXJzZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pby5TZXNzaW9uSW5wdXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcnNlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuTGluZVBhcnNlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJwYXJzZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwTWVzc2FnZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlSGVhZCIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwTWVzc2FnZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZXNzaW9uQnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW8uU2Vzc2lvbklucHV0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhcnNlRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUGFyc2VFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VIZWFkZXJzIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluYnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW8uU2Vzc2lvbklucHV0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYXhIZWFkZXJDb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYXhMaW5lTGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcnNlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuTGluZVBhcnNlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0ibGluZVBhcnNlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5MaW5lUGFyc2VyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQWJzdHJhY3RNZXNzYWdlV3JpdGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmlvLkh0dHBNZXNzYWdlV3JpdGVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBYnN0cmFjdE1lc3NhZ2VXcml0ZXIiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuaW8uQWJzdHJhY3RNZXNzYWdlV3JpdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW8uU2Vzc2lvbk91dHB1dEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9ybWF0dGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5MaW5lRm9ybWF0dGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9IndyaXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBNZXNzYWdlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGVIZWFkTGluZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBNZXNzYWdlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImxpbmVCdWYiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsaW5lRm9ybWF0dGVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkxpbmVGb3JtYXR0ZXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InNlc3Npb25CdWZmZXIiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmlvLlNlc3Npb25PdXRwdXRCdWZmZXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBYnN0cmFjdFNlc3Npb25JbnB1dEJ1ZmZlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5pby5TZXNzaW9uSW5wdXRCdWZmZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFic3RyYWN0U2Vzc2lvbklucHV0QnVmZmVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmlvLkFic3RyYWN0U2Vzc2lvbklucHV0QnVmZmVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImZpbGxCdWZmZXIiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1ldHJpY3MiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuaW8uSHR0cFRyYW5zcG9ydE1ldHJpY3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzQnVmZmVyZWREYXRhIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbml0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5zdHJlYW0iIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlcnNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZExpbmUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYXJidWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZExpbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBYnN0cmFjdFNlc3Npb25PdXRwdXRCdWZmZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuaW8uU2Vzc2lvbk91dHB1dEJ1ZmZlciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQWJzdHJhY3RTZXNzaW9uT3V0cHV0QnVmZmVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmlvLkFic3RyYWN0U2Vzc2lvbk91dHB1dEJ1ZmZlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJmbHVzaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZsdXNoQnVmZmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWV0cmljcyIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5pby5IdHRwVHJhbnNwb3J0TWV0cmljcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbml0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0c3RyZWFtIiB0eXBlPSJqYXZhLmlvLk91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyc2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2ZmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlTGluZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlTGluZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2h1bmtlZElucHV0U3RyZWFtIgorIGV4dGVuZHM9ImphdmEuaW8uSW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDaHVua2VkSW5wdXRTdHJlYW0iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuaW8uQ2h1bmtlZElucHV0U3RyZWFtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pby5TZXNzaW9uSW5wdXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRGb290ZXJzIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlYWQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkNodW5rZWRPdXRwdXRTdHJlYW0iCisgZXh0ZW5kcz0iamF2YS5pby5PdXRwdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDaHVua2VkT3V0cHV0U3RyZWFtIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmlvLkNodW5rZWRPdXRwdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pby5TZXNzaW9uT3V0cHV0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXJTaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDaHVua2VkT3V0cHV0U3RyZWFtIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmlvLkNodW5rZWRPdXRwdXRTdHJlYW0iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pby5TZXNzaW9uT3V0cHV0QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImZpbmlzaCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZsdXNoQ2FjaGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmbHVzaENhY2hlV2l0aEFwcGVuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlclRvQXBwZW5kIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlQ2xvc2luZ0NodW5rIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ29udGVudExlbmd0aElucHV0U3RyZWFtIgorIGV4dGVuZHM9ImphdmEuaW8uSW5wdXRTdHJlYW0iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJDb250ZW50TGVuZ3RoSW5wdXRTdHJlYW0iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuaW8uQ29udGVudExlbmd0aElucHV0U3RyZWFtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pby5TZXNzaW9uSW5wdXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRlbnRMZW5ndGgiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJDb250ZW50TGVuZ3RoT3V0cHV0U3RyZWFtIgorIGV4dGVuZHM9ImphdmEuaW8uT3V0cHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iQ29udGVudExlbmd0aE91dHB1dFN0cmVhbSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5pby5Db250ZW50TGVuZ3RoT3V0cHV0U3RyZWFtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW8uU2Vzc2lvbk91dHB1dEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGVudExlbmd0aCIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9IndyaXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJIdHRwUmVxdWVzdFBhcnNlciIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5pby5BYnN0cmFjdE1lc3NhZ2VQYXJzZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIdHRwUmVxdWVzdFBhcnNlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5pby5IdHRwUmVxdWVzdFBhcnNlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmlvLlNlc3Npb25JbnB1dEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyc2VyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5MaW5lUGFyc2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0RmFjdG9yeSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0RmFjdG9yeSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJwYXJzZUhlYWQiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cE1lc3NhZ2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlc3Npb25CdWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pby5TZXNzaW9uSW5wdXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ikh0dHBFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iUGFyc2VFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5QYXJzZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJIdHRwUmVxdWVzdFdyaXRlciIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5pby5BYnN0cmFjdE1lc3NhZ2VXcml0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIdHRwUmVxdWVzdFdyaXRlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5pby5IdHRwUmVxdWVzdFdyaXRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmlvLlNlc3Npb25PdXRwdXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImZvcm1hdHRlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuTGluZUZvcm1hdHRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUhlYWRMaW5lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBNZXNzYWdlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJIdHRwUmVzcG9uc2VQYXJzZXIiCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLmltcGwuaW8uQWJzdHJhY3RNZXNzYWdlUGFyc2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSHR0cFJlc3BvbnNlUGFyc2VyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmlvLkh0dHBSZXNwb25zZVBhcnNlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmlvLlNlc3Npb25JbnB1dEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyc2VyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5MaW5lUGFyc2VyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZUZhY3RvcnkiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2VGYWN0b3J5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InBhcnNlSGVhZCIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwTWVzc2FnZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2Vzc2lvbkJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmlvLlNlc3Npb25JbnB1dEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJQYXJzZUV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlBhcnNlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ikh0dHBSZXNwb25zZVdyaXRlciIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5pby5BYnN0cmFjdE1lc3NhZ2VXcml0ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIdHRwUmVzcG9uc2VXcml0ZXIiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLmltcGwuaW8uSHR0cFJlc3BvbnNlV3JpdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW8uU2Vzc2lvbk91dHB1dEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9ybWF0dGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5MaW5lRm9ybWF0dGVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9IndyaXRlSGVhZExpbmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cE1lc3NhZ2UiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ikh0dHBUcmFuc3BvcnRNZXRyaWNzSW1wbCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuaW8uSHR0cFRyYW5zcG9ydE1ldHJpY3MiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBUcmFuc3BvcnRNZXRyaWNzSW1wbCIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5pby5IdHRwVHJhbnNwb3J0TWV0cmljc0ltcGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Qnl0ZXNUcmFuc2ZlcnJlZCIKKyByZXR1cm49ImxvbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5jcmVtZW50Qnl0ZXNUcmFuc2ZlcnJlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvdW50IiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCeXRlc1RyYW5zZmVycmVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSWRlbnRpdHlJbnB1dFN0cmVhbSIKKyBleHRlbmRzPSJqYXZhLmlvLklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSWRlbnRpdHlJbnB1dFN0cmVhbSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5pby5JZGVudGl0eUlucHV0U3RyZWFtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pby5TZXNzaW9uSW5wdXRCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJZGVudGl0eU91dHB1dFN0cmVhbSIKKyBleHRlbmRzPSJqYXZhLmlvLk91dHB1dFN0cmVhbSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IklkZW50aXR5T3V0cHV0U3RyZWFtIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmlvLklkZW50aXR5T3V0cHV0U3RyZWFtIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3V0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuaW8uU2Vzc2lvbk91dHB1dEJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9IndyaXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTb2NrZXRJbnB1dEJ1ZmZlciIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAuaW1wbC5pby5BYnN0cmFjdFNlc3Npb25JbnB1dEJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNvY2tldElucHV0QnVmZmVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmlvLlNvY2tldElucHV0QnVmZmVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic29ja2V0IiB0eXBlPSJqYXZhLm5ldC5Tb2NrZXQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlcnNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iaXNEYXRhQXZhaWxhYmxlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJTb2NrZXRPdXRwdXRCdWZmZXIiCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLmltcGwuaW8uQWJzdHJhY3RTZXNzaW9uT3V0cHV0QnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iU29ja2V0T3V0cHV0QnVmZmVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5pbXBsLmlvLlNvY2tldE91dHB1dEJ1ZmZlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvY2tldCIgdHlwZT0iamF2YS5uZXQuU29ja2V0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXJzaXplIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0ib3JnLmFwYWNoZS5odHRwLmlvIgorPgorPGludGVyZmFjZSBuYW1lPSJIdHRwTWVzc2FnZVBhcnNlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InBhcnNlIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkh0dHBNZXNzYWdlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9Ikh0dHBFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9Ikh0dHBNZXNzYWdlV3JpdGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0id3JpdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwTWVzc2FnZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iSHR0cFRyYW5zcG9ydE1ldHJpY3MiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRCeXRlc1RyYW5zZmVycmVkIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlc2V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iU2Vzc2lvbklucHV0QnVmZmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0TWV0cmljcyIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5pby5IdHRwVHJhbnNwb3J0TWV0cmljcyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRGF0YUF2YWlsYWJsZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGltZW91dCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2ZmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWFkTGluZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVhZExpbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iU2Vzc2lvbk91dHB1dEJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImZsdXNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNZXRyaWNzIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLmlvLkh0dHBUcmFuc3BvcnRNZXRyaWNzIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id3JpdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2ZmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZUxpbmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlTGluZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlIgorPgorPGNsYXNzIG5hbWU9IkFic3RyYWN0SHR0cE1lc3NhZ2UiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSHR0cE1lc3NhZ2UiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFic3RyYWN0SHR0cE1lc3NhZ2UiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuQWJzdHJhY3RIdHRwTWVzc2FnZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBYnN0cmFjdEh0dHBNZXNzYWdlIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkFic3RyYWN0SHR0cE1lc3NhZ2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkSGVhZGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVhZGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZEhlYWRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbnRhaW5zSGVhZGVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbGxIZWFkZXJzIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpcnN0SGVhZGVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIZWFkZXJzIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExhc3RIZWFkZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtcyIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoZWFkZXJJdGVyYXRvciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXJJdGVyYXRvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoZWFkZXJJdGVyYXRvciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXJJdGVyYXRvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVIZWFkZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoZWFkZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlSGVhZGVycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SGVhZGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVhZGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEhlYWRlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEhlYWRlcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoZWFkZXJzIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGFyYW1zIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJoZWFkZXJncm91cCIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5IZWFkZXJHcm91cCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InBhcmFtcyIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQmFzaWNIZWFkZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY0hlYWRlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5CYXNpY0hlYWRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkNsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVsZW1lbnRzIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlckVsZW1lbnRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iUGFyc2VFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5QYXJzZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQmFzaWNIZWFkZXJFbGVtZW50IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5DbG9uZWFibGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLkhlYWRlckVsZW1lbnQiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJhc2ljSGVhZGVyRWxlbWVudCIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5CYXNpY0hlYWRlckVsZW1lbnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1ldGVycyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLk5hbWVWYWx1ZVBhaXJbXSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmFzaWNIZWFkZXJFbGVtZW50IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkJhc2ljSGVhZGVyRWxlbWVudCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkNsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtZXRlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5OYW1lVmFsdWVQYWlyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtZXRlckJ5TmFtZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5OYW1lVmFsdWVQYWlyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtZXRlckNvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtZXRlcnMiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuTmFtZVZhbHVlUGFpcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZhbHVlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCYXNpY0hlYWRlckVsZW1lbnRJdGVyYXRvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyRWxlbWVudEl0ZXJhdG9yIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY0hlYWRlckVsZW1lbnRJdGVyYXRvciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5CYXNpY0hlYWRlckVsZW1lbnRJdGVyYXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhlYWRlckl0ZXJhdG9yIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVySXRlcmF0b3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcnNlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuSGVhZGVyVmFsdWVQYXJzZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJhc2ljSGVhZGVyRWxlbWVudEl0ZXJhdG9yIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkJhc2ljSGVhZGVyRWxlbWVudEl0ZXJhdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVhZGVySXRlcmF0b3IiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXJJdGVyYXRvciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9Imhhc05leHQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHQiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEVsZW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEudXRpbC5Ob1N1Y2hFbGVtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHRFbGVtZW50IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlckVsZW1lbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEVsZW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEudXRpbC5Ob1N1Y2hFbGVtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQmFzaWNIZWFkZXJJdGVyYXRvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVySXRlcmF0b3IiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJhc2ljSGVhZGVySXRlcmF0b3IiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuQmFzaWNIZWFkZXJJdGVyYXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhlYWRlcnMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImZpbHRlckhlYWRlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmluZE5leHQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZyb20iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNOZXh0IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJOb1N1Y2hFbGVtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLnV0aWwuTm9TdWNoRWxlbWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0SGVhZGVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoRWxlbWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLk5vU3VjaEVsZW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5VbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9ImFsbEhlYWRlcnMiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkhlYWRlcltdIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSJudWxsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjdXJyZW50SW5kZXgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaGVhZGVyTmFtZSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJhc2ljSGVhZGVyVmFsdWVGb3JtYXR0ZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuSGVhZGVyVmFsdWVGb3JtYXR0ZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJhc2ljSGVhZGVyVmFsdWVGb3JtYXR0ZXIiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuQmFzaWNIZWFkZXJWYWx1ZUZvcm1hdHRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkb0Zvcm1hdFZhbHVlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxdW90ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlc3RpbWF0ZUVsZW1lbnRzTGVuIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbGVtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkhlYWRlckVsZW1lbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlc3RpbWF0ZUhlYWRlckVsZW1lbnRMZW4iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVsZW0iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXJFbGVtZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVzdGltYXRlTmFtZVZhbHVlUGFpckxlbiIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibnZwIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuTmFtZVZhbHVlUGFpciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlc3RpbWF0ZVBhcmFtZXRlcnNMZW4iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im52cHMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5OYW1lVmFsdWVQYWlyW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0RWxlbWVudHMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZWxlbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXJFbGVtZW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InF1b3RlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXR0ZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkhlYWRlclZhbHVlRm9ybWF0dGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdEVsZW1lbnRzIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZWxlbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXJFbGVtZW50W10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InF1b3RlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdEhlYWRlckVsZW1lbnQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZWxlbSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkhlYWRlckVsZW1lbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InF1b3RlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXR0ZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkhlYWRlclZhbHVlRm9ybWF0dGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdEhlYWRlckVsZW1lbnQiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbGVtIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyRWxlbWVudCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icXVvdGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0TmFtZVZhbHVlUGFpciIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJudnAiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5OYW1lVmFsdWVQYWlyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxdW90ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9ybWF0dGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5IZWFkZXJWYWx1ZUZvcm1hdHRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXROYW1lVmFsdWVQYWlyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibnZwIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuTmFtZVZhbHVlUGFpciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icXVvdGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0UGFyYW1ldGVycyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJudnBzIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuTmFtZVZhbHVlUGFpcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxdW90ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9ybWF0dGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5IZWFkZXJWYWx1ZUZvcm1hdHRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXRQYXJhbWV0ZXJzIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibnZwcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLk5hbWVWYWx1ZVBhaXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icXVvdGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTZXBhcmF0b3IiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaCIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1Vuc2FmZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iREVGQVVMVCIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5CYXNpY0hlYWRlclZhbHVlRm9ybWF0dGVyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFUEFSQVRPUlMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7IDssOkAoKSZsdDsmZ3Q7XFxcJnF1b3Q7L1tdPz17fVx0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVOU0FGRV9DSEFSUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtcJnF1b3Q7XFwmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJhc2ljSGVhZGVyVmFsdWVQYXJzZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuSGVhZGVyVmFsdWVQYXJzZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJhc2ljSGVhZGVyVmFsdWVQYXJzZXIiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuQmFzaWNIZWFkZXJWYWx1ZVBhcnNlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVIZWFkZXJFbGVtZW50IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlckVsZW1lbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5OYW1lVmFsdWVQYWlyW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlTmFtZVZhbHVlUGFpciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5OYW1lVmFsdWVQYWlyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZUVsZW1lbnRzIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlckVsZW1lbnRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJzZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkhlYWRlclZhbHVlUGFyc2VyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYXJzZUV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlBhcnNlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlRWxlbWVudHMiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyRWxlbWVudFtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5QYXJzZXJDdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VIZWFkZXJFbGVtZW50IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlckVsZW1lbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyc2VyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5IZWFkZXJWYWx1ZVBhcnNlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFyc2VFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5QYXJzZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZUhlYWRlckVsZW1lbnQiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyRWxlbWVudCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuUGFyc2VyQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlTmFtZVZhbHVlUGFpciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5OYW1lVmFsdWVQYWlyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcnNlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuSGVhZGVyVmFsdWVQYXJzZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhcnNlRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUGFyc2VFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VOYW1lVmFsdWVQYWlyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLk5hbWVWYWx1ZVBhaXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLlBhcnNlckN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZU5hbWVWYWx1ZVBhaXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuTmFtZVZhbHVlUGFpciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuUGFyc2VyQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWxpbWl0ZXJzIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VQYXJhbWV0ZXJzIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLk5hbWVWYWx1ZVBhaXJbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJzZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkhlYWRlclZhbHVlUGFyc2VyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYXJzZUV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlBhcnNlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlUGFyYW1ldGVycyIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5OYW1lVmFsdWVQYWlyW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLlBhcnNlckN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkRFRkFVTFQiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuQmFzaWNIZWFkZXJWYWx1ZVBhcnNlciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQmFzaWNIdHRwRW50aXR5RW5jbG9zaW5nUmVxdWVzdCIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5CYXNpY0h0dHBSZXF1ZXN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEVudGl0eUVuY2xvc2luZ1JlcXVlc3QiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJhc2ljSHR0cEVudGl0eUVuY2xvc2luZ1JlcXVlc3QiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuQmFzaWNIdHRwRW50aXR5RW5jbG9zaW5nUmVxdWVzdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1ldGhvZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY0h0dHBFbnRpdHlFbmNsb3NpbmdSZXF1ZXN0IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkJhc2ljSHR0cEVudGl0eUVuY2xvc2luZ1JlcXVlc3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXRob2QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUHJvdG9jb2xWZXJzaW9uIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY0h0dHBFbnRpdHlFbmNsb3NpbmdSZXF1ZXN0IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkJhc2ljSHR0cEVudGl0eUVuY2xvc2luZ1JlcXVlc3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0bGluZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlJlcXVlc3RMaW5lIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZXhwZWN0Q29udGludWUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVudGl0eSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwRW50aXR5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVudGl0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVudGl0eSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFbnRpdHkiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQmFzaWNIdHRwUmVxdWVzdCIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5BYnN0cmFjdEh0dHBNZXNzYWdlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlcXVlc3QiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJhc2ljSHR0cFJlcXVlc3QiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuQmFzaWNIdHRwUmVxdWVzdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1ldGhvZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY0h0dHBSZXF1ZXN0IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkJhc2ljSHR0cFJlcXVlc3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXRob2QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUHJvdG9jb2xWZXJzaW9uIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY0h0dHBSZXF1ZXN0IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkJhc2ljSHR0cFJlcXVlc3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0bGluZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlJlcXVlc3RMaW5lIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvdG9jb2xWZXJzaW9uIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLlByb3RvY29sVmVyc2lvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXF1ZXN0TGluZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5SZXF1ZXN0TGluZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCYXNpY0h0dHBSZXNwb25zZSIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5BYnN0cmFjdEh0dHBNZXNzYWdlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY0h0dHBSZXNwb25zZSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5CYXNpY0h0dHBSZXNwb25zZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXR1c2xpbmUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5TdGF0dXNMaW5lIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjYXRhbG9nIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUmVhc29uUGhyYXNlQ2F0YWxvZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxlIiB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY0h0dHBSZXNwb25zZSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5CYXNpY0h0dHBSZXNwb25zZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXR1c2xpbmUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5TdGF0dXNMaW5lIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY0h0dHBSZXNwb25zZSIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5CYXNpY0h0dHBSZXNwb25zZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlByb3RvY29sVmVyc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWFzb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRFbnRpdHkiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEVudGl0eSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhbGUiCisgcmV0dXJuPSJqYXZhLnV0aWwuTG9jYWxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb3RvY29sVmVyc2lvbiIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbFZlcnNpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVhc29uIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0YXR1c0xpbmUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuU3RhdHVzTGluZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFbnRpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbnRpdHkiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRW50aXR5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldExvY2FsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvYyIgdHlwZT0iamF2YS51dGlsLkxvY2FsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZWFzb25QaHJhc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWFzb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RhdHVzQ29kZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTdGF0dXNMaW5lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdHVzbGluZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlN0YXR1c0xpbmUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RhdHVzTGluZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlByb3RvY29sVmVyc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN0YXR1c0xpbmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2ZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbFZlcnNpb24iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVhc29uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJhc2ljTGluZUZvcm1hdHRlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5MaW5lRm9ybWF0dGVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY0xpbmVGb3JtYXR0ZXIiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuQmFzaWNMaW5lRm9ybWF0dGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZFByb3RvY29sVmVyc2lvbiIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZlcnNpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbFZlcnNpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZG9Gb3JtYXRIZWFkZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVhZGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRvRm9ybWF0UmVxdWVzdExpbmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxbGluZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlJlcXVlc3RMaW5lIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImRvRm9ybWF0U3RhdHVzTGluZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0bGluZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlN0YXR1c0xpbmUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXN0aW1hdGVQcm90b2NvbFZlcnNpb25MZW4iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZlcnNpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbFZlcnNpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0SGVhZGVyIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhlYWRlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkhlYWRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9ybWF0dGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5MaW5lRm9ybWF0dGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdEhlYWRlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlYWRlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkhlYWRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXRQcm90b2NvbFZlcnNpb24iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmVyc2lvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlByb3RvY29sVmVyc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9ybWF0dGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5MaW5lRm9ybWF0dGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdFJlcXVlc3RMaW5lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcWxpbmUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5SZXF1ZXN0TGluZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9ybWF0dGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5MaW5lRm9ybWF0dGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdFJlcXVlc3RMaW5lIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxbGluZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlJlcXVlc3RMaW5lIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdFN0YXR1c0xpbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdGxpbmUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5TdGF0dXNMaW5lIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmb3JtYXR0ZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkxpbmVGb3JtYXR0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0U3RhdHVzTGluZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRsaW5lIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuU3RhdHVzTGluZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbml0QnVmZmVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkRFRkFVTFQiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuQmFzaWNMaW5lRm9ybWF0dGVyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCYXNpY0xpbmVQYXJzZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuTGluZVBhcnNlciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmFzaWNMaW5lUGFyc2VyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkJhc2ljTGluZVBhcnNlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3RvIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUHJvdG9jb2xWZXJzaW9uIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY0xpbmVQYXJzZXIiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuQmFzaWNMaW5lUGFyc2VyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVByb3RvY29sVmVyc2lvbiIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbFZlcnNpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1ham9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbm9yIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlUmVxdWVzdExpbmUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuUmVxdWVzdExpbmUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1ldGhvZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2ZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbFZlcnNpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlU3RhdHVzTGluZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5TdGF0dXNMaW5lIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2ZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbFZlcnNpb24iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXR1cyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZWFzb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzUHJvdG9jb2xWZXJzaW9uIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuUGFyc2VyQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlSGVhZGVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJzZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkxpbmVQYXJzZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhcnNlRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUGFyc2VFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VIZWFkZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFyc2VFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5QYXJzZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZVByb3RvY29sVmVyc2lvbiIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbFZlcnNpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyc2VyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5MaW5lUGFyc2VyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYXJzZUV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlBhcnNlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlUHJvdG9jb2xWZXJzaW9uIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLlByb3RvY29sVmVyc2lvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuUGFyc2VyQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYXJzZUV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlBhcnNlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlUmVxdWVzdExpbmUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuUmVxdWVzdExpbmUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyc2VyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5MaW5lUGFyc2VyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYXJzZUV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlBhcnNlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlUmVxdWVzdExpbmUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuUmVxdWVzdExpbmUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLlBhcnNlckN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFyc2VFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5QYXJzZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZVN0YXR1c0xpbmUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuU3RhdHVzTGluZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJzZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkxpbmVQYXJzZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhcnNlRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUGFyc2VFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VTdGF0dXNMaW5lIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLlN0YXR1c0xpbmUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLlBhcnNlckN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFyc2VFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5QYXJzZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJza2lwV2hpdGVzcGFjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLlBhcnNlckN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkRFRkFVTFQiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuQmFzaWNMaW5lUGFyc2VyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByb3RvY29sIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbFZlcnNpb24iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCYXNpY0xpc3RIZWFkZXJJdGVyYXRvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVySXRlcmF0b3IiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJhc2ljTGlzdEhlYWRlckl0ZXJhdG9yIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkJhc2ljTGlzdEhlYWRlckl0ZXJhdG9yIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVhZGVycyIgdHlwZT0iamF2YS51dGlsLkxpc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJmaWx0ZXJIZWFkZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmROZXh0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJmcm9tIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzTmV4dCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV4dCIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoRWxlbWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLk5vU3VjaEVsZW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV4dEhlYWRlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9Ik5vU3VjaEVsZW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEudXRpbC5Ob1N1Y2hFbGVtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJhbGxIZWFkZXJzIgorIHR5cGU9ImphdmEudXRpbC5MaXN0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjdXJyZW50SW5kZXgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iaGVhZGVyTmFtZSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibGFzdEluZGV4IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCYXNpY05hbWVWYWx1ZVBhaXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuTmFtZVZhbHVlUGFpciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmFzaWNOYW1lVmFsdWVQYWlyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkJhc2ljTmFtZVZhbHVlUGFpciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkNsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZhbHVlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCYXNpY1JlcXVlc3RMaW5lIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImphdmEubGFuZy5DbG9uZWFibGUiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLlJlcXVlc3RMaW5lIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY1JlcXVlc3RMaW5lIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkJhc2ljUmVxdWVzdExpbmUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXRob2QiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmVyc2lvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlByb3RvY29sVmVyc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5DbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNZXRob2QiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb3RvY29sVmVyc2lvbiIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbFZlcnNpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VXJpIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCYXNpY1N0YXR1c0xpbmUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuU3RhdHVzTGluZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmFzaWNTdGF0dXNMaW5lIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkJhc2ljU3RhdHVzTGluZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZlcnNpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbFZlcnNpb24iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXR1c0NvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVhc29uUGhyYXNlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2xvbmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJDbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkNsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb3RvY29sVmVyc2lvbiIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbFZlcnNpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVhc29uUGhyYXNlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdGF0dXNDb2RlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkJhc2ljVG9rZW5JdGVyYXRvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuVG9rZW5JdGVyYXRvciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmFzaWNUb2tlbkl0ZXJhdG9yIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkJhc2ljVG9rZW5JdGVyYXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhlYWRlckl0ZXJhdG9yIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVySXRlcmF0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVUb2tlbiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmaW5kTmV4dCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZnJvbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYXJzZUV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlBhcnNlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmRUb2tlbkVuZCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZnJvbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmRUb2tlblNlcGFyYXRvciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZnJvbSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZpbmRUb2tlblN0YXJ0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJmcm9tIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzTmV4dCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNIdHRwU2VwYXJhdG9yIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2giIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNUb2tlbkNoYXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaCIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1Rva2VuU2VwYXJhdG9yIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2giIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNXaGl0ZXNwYWNlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2giIHR5cGU9ImNoYXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV4dCIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoRWxlbWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLk5vU3VjaEVsZW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhcnNlRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUGFyc2VFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV4dFRva2VuIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iTm9TdWNoRWxlbWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS51dGlsLk5vU3VjaEVsZW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhcnNlRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUGFyc2VFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLlVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iSFRUUF9TRVBBUkFUT1JTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90OyAsOz0oKSZsdDsmZ3Q7QDpcXFwmcXVvdDsvW10/e31cdCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjdXJyZW50SGVhZGVyIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjdXJyZW50VG9rZW4iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImhlYWRlckl0IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXJJdGVyYXRvciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2VhcmNoUG9zIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCdWZmZXJlZEhlYWRlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ2xvbmVhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5Gb3JtYXR0ZWRIZWFkZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJ1ZmZlcmVkSGVhZGVyIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLkJ1ZmZlcmVkSGVhZGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhcnNlRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUGFyc2VFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkNsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QnVmZmVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVsZW1lbnRzIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlckVsZW1lbnRbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iUGFyc2VFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5QYXJzZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmFsdWVQb3MiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSGVhZGVyR3JvdXAiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iSGVhZGVyR3JvdXAiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuSGVhZGVyR3JvdXAiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYWRkSGVhZGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVhZGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkNsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29udGFpbnNIZWFkZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvcHkiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5IZWFkZXJHcm91cCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBbGxIZWFkZXJzIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbmRlbnNlZEhlYWRlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Rmlyc3RIZWFkZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEhlYWRlcnMiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGFzdEhlYWRlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXRlcmF0b3IiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVySXRlcmF0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXRlcmF0b3IiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVySXRlcmF0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlSGVhZGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVhZGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEhlYWRlcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoZWFkZXJzIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyW10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idXBkYXRlSGVhZGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGVhZGVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJIZWFkZXJWYWx1ZUZvcm1hdHRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdEVsZW1lbnRzIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbGVtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkhlYWRlckVsZW1lbnRbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icXVvdGUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0SGVhZGVyRWxlbWVudCIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZWxlbSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkhlYWRlckVsZW1lbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InF1b3RlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdE5hbWVWYWx1ZVBhaXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im52cCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLk5hbWVWYWx1ZVBhaXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InF1b3RlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZvcm1hdFBhcmFtZXRlcnMiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im52cHMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5OYW1lVmFsdWVQYWlyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InF1b3RlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iSGVhZGVyVmFsdWVQYXJzZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJwYXJzZUVsZW1lbnRzIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlckVsZW1lbnRbXSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5QYXJzZXJDdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhcnNlRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUGFyc2VFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VIZWFkZXJFbGVtZW50IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkhlYWRlckVsZW1lbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuUGFyc2VyQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYXJzZUV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlBhcnNlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlTmFtZVZhbHVlUGFpciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5OYW1lVmFsdWVQYWlyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLlBhcnNlckN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFyc2VFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5QYXJzZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZVBhcmFtZXRlcnMiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuTmFtZVZhbHVlUGFpcltdIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjdXJzb3IiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5tZXNzYWdlLlBhcnNlckN1cnNvciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFyc2VFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5QYXJzZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkxpbmVGb3JtYXR0ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJhcHBlbmRQcm90b2NvbFZlcnNpb24iCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZlcnNpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbFZlcnNpb24iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0SGVhZGVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoZWFkZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IZWFkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZm9ybWF0UmVxdWVzdExpbmUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcWxpbmUiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5SZXF1ZXN0TGluZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJmb3JtYXRTdGF0dXNMaW5lIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGF0bGluZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlN0YXR1c0xpbmUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJMaW5lUGFyc2VyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iaGFzUHJvdG9jb2xWZXJzaW9uIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5QYXJzZXJDdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VIZWFkZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSGVhZGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZmZlciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnV0aWwuQ2hhckFycmF5QnVmZmVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYXJzZUV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlBhcnNlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlUHJvdG9jb2xWZXJzaW9uIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLlByb3RvY29sVmVyc2lvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5QYXJzZXJDdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhcnNlRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUGFyc2VFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VSZXF1ZXN0TGluZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5SZXF1ZXN0TGluZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJidWZmZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3Vyc29yIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5QYXJzZXJDdXJzb3IiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhcnNlRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUGFyc2VFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2VTdGF0dXNMaW5lIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLlN0YXR1c0xpbmUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnVmZmVyIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImN1cnNvciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLm1lc3NhZ2UuUGFyc2VyQ3Vyc29yIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYXJzZUV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlBhcnNlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJQYXJzZXJDdXJzb3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBhcnNlckN1cnNvciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAubWVzc2FnZS5QYXJzZXJDdXJzb3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb3dlckJvdW5kIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVwcGVyQm91bmQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImF0RW5kIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb3dlckJvdW5kIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBvcyIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVcHBlckJvdW5kIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVwZGF0ZVBvcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcyIKKz4KKzxjbGFzcyBuYW1lPSJBYnN0cmFjdEh0dHBQYXJhbXMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkFic3RyYWN0SHR0cFBhcmFtcyIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkFic3RyYWN0SHR0cFBhcmFtcyIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRCb29sZWFuUGFyYW1ldGVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERvdWJsZVBhcmFtZXRlciIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW50UGFyYW1ldGVyIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZhdWx0VmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb25nUGFyYW1ldGVyIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUGFyYW1ldGVyRmFsc2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzUGFyYW1ldGVyVHJ1ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Qm9vbGVhblBhcmFtZXRlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RG91YmxlUGFyYW1ldGVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEludFBhcmFtZXRlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMb25nUGFyYW1ldGVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCYXNpY0h0dHBQYXJhbXMiCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5BYnN0cmFjdEh0dHBQYXJhbXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iamF2YS5sYW5nLkNsb25lYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmlvLlNlcmlhbGl6YWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iQmFzaWNIdHRwUGFyYW1zIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuQmFzaWNIdHRwUGFyYW1zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbG9uZSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkNsb25lTm90U3VwcG9ydGVkRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29weSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb3B5UGFyYW1zIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFyYW1ldGVyIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1BhcmFtZXRlclNldCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNQYXJhbWV0ZXJTZXRMb2NhbGx5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVQYXJhbWV0ZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBhcmFtZXRlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGFyYW1ldGVycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWVzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJDb3JlQ29ubmVjdGlvblBOYW1lcyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iQ09OTkVDVElPTl9USU1FT1VUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHAuY29ubmVjdGlvbi50aW1lb3V0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1BWF9IRUFERVJfQ09VTlQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cC5jb25uZWN0aW9uLm1heC1oZWFkZXItY291bnQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUFYX0xJTkVfTEVOR1RIIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHAuY29ubmVjdGlvbi5tYXgtbGluZS1sZW5ndGgmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU09DS0VUX0JVRkZFUl9TSVpFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHAuc29ja2V0LmJ1ZmZlci1zaXplJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNPX0xJTkdFUiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwLnNvY2tldC5saW5nZXImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU09fVElNRU9VVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwLnNvY2tldC50aW1lb3V0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNUQUxFX0NPTk5FQ1RJT05fQ0hFQ0siCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cC5jb25uZWN0aW9uLnN0YWxlY2hlY2smcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVENQX05PREVMQVkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cC50Y3Aubm9kZWxheSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJDb3JlUHJvdG9jb2xQTmFtZXMiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGZpZWxkIG5hbWU9IkhUVFBfQ09OVEVOVF9DSEFSU0VUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHAucHJvdG9jb2wuY29udGVudC1jaGFyc2V0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhUVFBfRUxFTUVOVF9DSEFSU0VUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHAucHJvdG9jb2wuZWxlbWVudC1jaGFyc2V0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik9SSUdJTl9TRVJWRVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cC5vcmlnaW4tc2VydmVyJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBST1RPQ09MX1ZFUlNJT04iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cC5wcm90b2NvbC52ZXJzaW9uJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNUUklDVF9UUkFOU0ZFUl9FTkNPRElORyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwLnByb3RvY29sLnN0cmljdC10cmFuc2Zlci1lbmNvZGluZyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVU0VSX0FHRU5UIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHAudXNlcmFnZW50JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlVTRV9FWFBFQ1RfQ09OVElOVUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cC5wcm90b2NvbC5leHBlY3QtY29udGludWUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iV0FJVF9GT1JfQ09OVElOVUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cC5wcm90b2NvbC53YWl0LWZvci1jb250aW51ZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkRlZmF1bHRlZEh0dHBQYXJhbXMiCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5BYnN0cmFjdEh0dHBQYXJhbXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRlZmF1bHRlZEh0dHBQYXJhbXMiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5EZWZhdWx0ZWRIdHRwUGFyYW1zIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWwiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdHMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNvcHkiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVmYXVsdHMiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFyYW1ldGVyIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVQYXJhbWV0ZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFBhcmFtZXRlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSHR0cEFic3RyYWN0UGFyYW1CZWFuIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBBYnN0cmFjdFBhcmFtQmVhbiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBBYnN0cmFjdFBhcmFtQmVhbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxmaWVsZCBuYW1lPSJwYXJhbXMiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSHR0cENvbm5lY3Rpb25QYXJhbUJlYW4iCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwQWJzdHJhY3RQYXJhbUJlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIdHRwQ29ubmVjdGlvblBhcmFtQmVhbiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBDb25uZWN0aW9uUGFyYW1CZWFuIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJzZXRDb25uZWN0aW9uVGltZW91dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbm5lY3Rpb25UaW1lb3V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TGluZ2VyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZ2VyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U29UaW1lb3V0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic29UaW1lb3V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U29ja2V0QnVmZmVyU2l6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvY2tldEJ1ZmZlclNpemUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTdGFsZUNoZWNraW5nRW5hYmxlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN0YWxlQ2hlY2tpbmdFbmFibGVkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRjcE5vRGVsYXkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0Y3BOb0RlbGF5IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ikh0dHBDb25uZWN0aW9uUGFyYW1zIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5Db3JlQ29ubmVjdGlvblBOYW1lcyI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImdldENvbm5lY3Rpb25UaW1lb3V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExpbmdlciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTb1RpbWVvdXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U29ja2V0QnVmZmVyU2l6ZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUY3BOb0RlbGF5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1N0YWxlQ2hlY2tpbmdFbmFibGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb25uZWN0aW9uVGltZW91dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVvdXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMaW5nZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNvVGltZW91dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWVvdXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTb2NrZXRCdWZmZXJTaXplIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN0YWxlQ2hlY2tpbmdFbmFibGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VGNwTm9EZWxheSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJIdHRwUGFyYW1zIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY29weSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJvb2xlYW5QYXJhbWV0ZXIiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmF1bHRWYWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREb3VibGVQYXJhbWV0ZXIiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVmYXVsdFZhbHVlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW50UGFyYW1ldGVyIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmF1bHRWYWx1ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvbmdQYXJhbWV0ZXIiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmF1bHRWYWx1ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJhbWV0ZXIiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNQYXJhbWV0ZXJGYWxzZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1BhcmFtZXRlclRydWUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlUGFyYW1ldGVyIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEJvb2xlYW5QYXJhbWV0ZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RG91YmxlUGFyYW1ldGVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW50UGFyYW1ldGVyIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TG9uZ1BhcmFtZXRlciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQYXJhbWV0ZXIiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9Ikh0dHBQcm90b2NvbFBhcmFtQmVhbiIKKyBleHRlbmRzPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBBYnN0cmFjdFBhcmFtQmVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBQcm90b2NvbFBhcmFtQmVhbiIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQcm90b2NvbFBhcmFtQmVhbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0ic2V0Q29udGVudENoYXJzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZW50Q2hhcnNldCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRIdHRwRWxlbWVudENoYXJzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJodHRwRWxlbWVudENoYXJzZXQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VXNlRXhwZWN0Q29udGludWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1c2VFeHBlY3RDb250aW51ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRVc2VyQWdlbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1c2VyQWdlbnQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VmVyc2lvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZlcnNpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwVmVyc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJIdHRwUHJvdG9jb2xQYXJhbXMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkNvcmVQcm90b2NvbFBOYW1lcyI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImdldENvbnRlbnRDaGFyc2V0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIdHRwRWxlbWVudENoYXJzZXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFVzZXJBZ2VudCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmVyc2lvbiIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5Qcm90b2NvbFZlcnNpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q29udGVudENoYXJzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGFyc2V0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEh0dHBFbGVtZW50Q2hhcnNldCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYXJzZXQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VXNlRXhwZWN0Q29udGludWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnBhcmFtcy5IdHRwUGFyYW1zIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFVzZXJBZ2VudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVzZXJhZ2VudCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRWZXJzaW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmVyc2lvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlByb3RvY29sVmVyc2lvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1c2VFeHBlY3RDb250aW51ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyYW1zIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucGFyYW1zLkh0dHBQYXJhbXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wiCis+Cis8Y2xhc3MgbmFtZT0iQmFzaWNIdHRwQ29udGV4dCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJhc2ljSHR0cENvbnRleHQiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkJhc2ljSHR0cENvbnRleHQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY0h0dHBDb250ZXh0IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5CYXNpY0h0dHBDb250ZXh0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyZW50Q29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0QXR0cmlidXRlIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlQXR0cmlidXRlIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QXR0cmlidXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9iaiIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJCYXNpY0h0dHBQcm9jZXNzb3IiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJqYXZhLmxhbmcuQ2xvbmVhYmxlIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwUHJvY2Vzc29yIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwUmVxdWVzdEludGVyY2VwdG9yTGlzdCI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cFJlc3BvbnNlSW50ZXJjZXB0b3JMaXN0Ij4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJCYXNpY0h0dHBQcm9jZXNzb3IiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkJhc2ljSHR0cFByb2Nlc3NvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRJbnRlcmNlcHRvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZXJjZXB0b3IiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdEludGVyY2VwdG9yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZEludGVyY2VwdG9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlcmNlcHRvciIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0SW50ZXJjZXB0b3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkSW50ZXJjZXB0b3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVyY2VwdG9yIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlSW50ZXJjZXB0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkSW50ZXJjZXB0b3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVyY2VwdG9yIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlSW50ZXJjZXB0b3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkUmVxdWVzdEludGVyY2VwdG9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXRjcCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0SW50ZXJjZXB0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkUmVxdWVzdEludGVyY2VwdG9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXRjcCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0SW50ZXJjZXB0b3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYWRkUmVzcG9uc2VJbnRlcmNlcHRvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Iml0Y3AiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2VJbnRlcmNlcHRvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhZGRSZXNwb25zZUludGVyY2VwdG9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXRjcCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZUludGVyY2VwdG9yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFySW50ZXJjZXB0b3JzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhclJlcXVlc3RJbnRlcmNlcHRvcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyUmVzcG9uc2VJbnRlcmNlcHRvcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iQ2xvbmVOb3RTdXBwb3J0ZWRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5DbG9uZU5vdFN1cHBvcnRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb3B5IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkJhc2ljSHR0cFByb2Nlc3NvciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjb3B5SW50ZXJjZXB0b3JzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuQmFzaWNIdHRwUHJvY2Vzc29yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlcXVlc3RJbnRlcmNlcHRvciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdEludGVyY2VwdG9yIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlcXVlc3RJbnRlcmNlcHRvckNvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlc3BvbnNlSW50ZXJjZXB0b3IiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlSW50ZXJjZXB0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVzcG9uc2VJbnRlcmNlcHRvckNvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByb2Nlc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByb2Nlc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlUmVxdWVzdEludGVyY2VwdG9yQnlDbGFzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNsYXp6IiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlUmVzcG9uc2VJbnRlcmNlcHRvckJ5Q2xhc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbGF6eiIgdHlwZT0iamF2YS5sYW5nLkNsYXNzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEludGVyY2VwdG9ycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3QiIHR5cGU9ImphdmEudXRpbC5MaXN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0icmVxdWVzdEludGVyY2VwdG9ycyIKKyB0eXBlPSJqYXZhLnV0aWwuTGlzdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InJlc3BvbnNlSW50ZXJjZXB0b3JzIgorIHR5cGU9ImphdmEudXRpbC5MaXN0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkRlZmF1bHRlZEh0dHBDb250ZXh0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEZWZhdWx0ZWRIdHRwQ29udGV4dCIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuRGVmYXVsdGVkSHR0cENvbnRleHQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZhdWx0cyIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0QXR0cmlidXRlIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVmYXVsdHMiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlQXR0cmlidXRlIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QXR0cmlidXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9iaiIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iRXhlY3V0aW9uQ29udGV4dCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZmllbGQgbmFtZT0iSFRUUF9DT05ORUNUSU9OIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHAuY29ubmVjdGlvbiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIVFRQX1BST1hZX0hPU1QiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cC5wcm94eV9ob3N0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhUVFBfUkVRVUVTVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwLnJlcXVlc3QmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSFRUUF9SRVFfU0VOVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwLnJlcXVlc3Rfc2VudCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJIVFRQX1JFU1BPTlNFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHAucmVzcG9uc2UmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSFRUUF9UQVJHRVRfSE9TVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwLnRhcmdldF9ob3N0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iSFRUUCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iaXNXaGl0ZXNwYWNlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaCIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkFTQ0lJIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O0FTQ0lJJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNIQVJTRVRfUEFSQU0iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7OyBjaGFyc2V0PSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDSFVOS19DT0RJTkciCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y2h1bmtlZCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJDT05OX0NMT1NFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O0Nsb3NlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTk5fRElSRUNUSVZFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O0Nvbm5lY3Rpb24mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OTl9LRUVQX0FMSVZFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O0tlZXAtQWxpdmUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09OVEVOVF9FTkNPRElORyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtDb250ZW50LUVuY29kaW5nJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfTEVOIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O0NvbnRlbnQtTGVuZ3RoJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTlRFTlRfVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtDb250ZW50LVR5cGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ1IiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJEQVRFX0hFQURFUiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtEYXRlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFRkFVTFRfQ09OVEVOVF9DSEFSU0VUIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O0lTTy04ODU5LTEmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iREVGQVVMVF9DT05URU5UX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFRkFVTFRfUFJPVE9DT0xfQ0hBUlNFVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtVUy1BU0NJSSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJFWFBFQ1RfQ09OVElOVUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7MTAwLUNvbnRpbnVlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVYUEVDVF9ESVJFQ1RJVkUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7RXhwZWN0JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJREVOVElUWV9DT0RJTkciCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aWRlbnRpdHkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSVNPXzg4NTlfMSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtJU08tODg1OS0xJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkxGIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iT0NURVRfU1RSRUFNX1RZUEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBMQUlOX1RFWFRfVFlQRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDt0ZXh0L3BsYWluJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFUlZFUl9IRUFERVIiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7U2VydmVyJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNQIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEFSR0VUX0hPU1QiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7SG9zdCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUUkFOU0ZFUl9FTkNPRElORyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtUcmFuc2Zlci1FbmNvZGluZyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVU0VSX0FHRU5UIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O1VzZXItQWdlbnQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVVNfQVNDSUkiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7VVMtQVNDSUkmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVVRGXzE2IgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O1VURi0xNiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVVEZfOCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtVVEYtOCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ikh0dHBDb250ZXh0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0QXR0cmlidXRlIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVBdHRyaWJ1dGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEF0dHJpYnV0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9iaiIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IlJFU0VSVkVEX1BSRUZJWCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwLiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9Ikh0dHBEYXRlR2VuZXJhdG9yIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIdHRwRGF0ZUdlbmVyYXRvciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cERhdGVHZW5lcmF0b3IiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q3VycmVudERhdGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJHTVQiCisgdHlwZT0iamF2YS51dGlsLlRpbWVab25lIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBBVFRFUk5fUkZDMTEyMyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtFRUUsIGRkIE1NTSB5eXl5IEhIOm1tOnNzIHp6eiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ikh0dHBFeHBlY3RhdGlvblZlcmlmaWVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0idmVyaWZ5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3BvbnNlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ikh0dHBFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iSHR0cFByb2Nlc3NvciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlcXVlc3RJbnRlcmNlcHRvciI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlSW50ZXJjZXB0b3IiPgorPC9pbXBsZW1lbnRzPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iSHR0cFJlcXVlc3RFeGVjdXRvciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSHR0cFJlcXVlc3RFeGVjdXRvciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cFJlcXVlc3RFeGVjdXRvciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjYW5SZXNwb25zZUhhdmVCb2R5IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkb1JlY2VpdmVSZXNwb25zZSIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29ubiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBDbGllbnRDb25uZWN0aW9uIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ikh0dHBFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkb1NlbmRSZXF1ZXN0IgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb25uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cENsaWVudENvbm5lY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4ZWN1dGUiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbm4iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwQ2xpZW50Q29ubmVjdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9zdFByb2Nlc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvY2Vzc29yIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cFByb2Nlc3NvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJlUHJvY2VzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvY2Vzc29yIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cFByb2Nlc3NvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ikh0dHBSZXF1ZXN0SGFuZGxlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImhhbmRsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9Ikh0dHBSZXF1ZXN0SGFuZGxlclJlZ2lzdHJ5IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwUmVxdWVzdEhhbmRsZXJSZXNvbHZlciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iSHR0cFJlcXVlc3RIYW5kbGVyUmVnaXN0cnkiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBSZXF1ZXN0SGFuZGxlclJlZ2lzdHJ5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9Imxvb2t1cCIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwUmVxdWVzdEhhbmRsZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3RVUkkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWF0Y2hVcmlSZXF1ZXN0UGF0dGVybiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGF0dGVybiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdFVyaSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZWdpc3RlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdHRlcm4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhhbmRsZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwUmVxdWVzdEhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SGFuZGxlcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtYXAiIHR5cGU9ImphdmEudXRpbC5NYXAiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5yZWdpc3RlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdHRlcm4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9Ikh0dHBSZXF1ZXN0SGFuZGxlclJlc29sdmVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ibG9va3VwIgorIHJldHVybj0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBSZXF1ZXN0SGFuZGxlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0VVJJIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iSHR0cFJlcXVlc3RJbnRlcmNlcHRvckxpc3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJhZGRSZXF1ZXN0SW50ZXJjZXB0b3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Iml0Y3AiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdEludGVyY2VwdG9yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZFJlcXVlc3RJbnRlcmNlcHRvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXRjcCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0SW50ZXJjZXB0b3IiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xlYXJSZXF1ZXN0SW50ZXJjZXB0b3JzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlcXVlc3RJbnRlcmNlcHRvciIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdEludGVyY2VwdG9yIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UmVxdWVzdEludGVyY2VwdG9yQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVSZXF1ZXN0SW50ZXJjZXB0b3JCeUNsYXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbGF6eiIgdHlwZT0iamF2YS5sYW5nLkNsYXNzIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEludGVyY2VwdG9ycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXRjcHMiIHR5cGU9ImphdmEudXRpbC5MaXN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iSHR0cFJlc3BvbnNlSW50ZXJjZXB0b3JMaXN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iYWRkUmVzcG9uc2VJbnRlcmNlcHRvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaXRjcCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZUludGVyY2VwdG9yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFkZFJlc3BvbnNlSW50ZXJjZXB0b3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Iml0Y3AiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2VJbnRlcmNlcHRvciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhclJlc3BvbnNlSW50ZXJjZXB0b3JzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlc3BvbnNlSW50ZXJjZXB0b3IiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlSW50ZXJjZXB0b3IiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZXNwb25zZUludGVyY2VwdG9yQ291bnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVSZXNwb25zZUludGVyY2VwdG9yQnlDbGFzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2xhenoiIHR5cGU9ImphdmEubGFuZy5DbGFzcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJbnRlcmNlcHRvcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Iml0Y3BzIiB0eXBlPSJqYXZhLnV0aWwuTGlzdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iSHR0cFNlcnZpY2UiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikh0dHBTZXJ2aWNlIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwU2VydmljZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb2MiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwUHJvY2Vzc29yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb25uU3RyYXRlZ3kiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5Db25uZWN0aW9uUmV1c2VTdHJhdGVneSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzcG9uc2VGYWN0b3J5IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlRmFjdG9yeSI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImRvU2VydmljZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzcG9uc2UiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBhcmFtcyIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYW5kbGVFeGNlcHRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJleCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3BvbnNlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImhhbmRsZVJlcXVlc3QiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb25uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFNlcnZlckNvbm5lY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbm5SZXVzZVN0cmF0ZWd5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29ublN0cmF0ZWd5IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuQ29ubmVjdGlvblJldXNlU3RyYXRlZ3kiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RXhwZWN0YXRpb25WZXJpZmllciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImV4cGVjdGF0aW9uVmVyaWZpZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwRXhwZWN0YXRpb25WZXJpZmllciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRIYW5kbGVyUmVzb2x2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyUmVzb2x2ZXIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwUmVxdWVzdEhhbmRsZXJSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRIdHRwUHJvY2Vzc29yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJvY2Vzc29yIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cFByb2Nlc3NvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQYXJhbXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJhbXMiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wYXJhbXMuSHR0cFBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRSZXNwb25zZUZhY3RvcnkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZUZhY3RvcnkiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2VGYWN0b3J5Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJlcXVlc3RDb25uQ29udHJvbCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlcXVlc3RJbnRlcmNlcHRvciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVxdWVzdENvbm5Db250cm9sIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5SZXF1ZXN0Q29ubkNvbnRyb2wiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0icHJvY2VzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmVxdWVzdENvbnRlbnQiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0SW50ZXJjZXB0b3IiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlcXVlc3RDb250ZW50IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5SZXF1ZXN0Q29udGVudCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJwcm9jZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ikh0dHBFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSZXF1ZXN0RGF0ZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlcXVlc3RJbnRlcmNlcHRvciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVxdWVzdERhdGUiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLlJlcXVlc3REYXRlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InByb2Nlc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJlcXVlc3RFeHBlY3RDb250aW51ZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlcXVlc3RJbnRlcmNlcHRvciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVxdWVzdEV4cGVjdENvbnRpbnVlIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5SZXF1ZXN0RXhwZWN0Q29udGludWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0icHJvY2VzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3QiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmVxdWVzdFRhcmdldEhvc3QiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0SW50ZXJjZXB0b3IiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlJlcXVlc3RUYXJnZXRIb3N0IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5SZXF1ZXN0VGFyZ2V0SG9zdCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJwcm9jZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXF1ZXN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ikh0dHBFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSZXF1ZXN0VXNlckFnZW50IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVxdWVzdEludGVyY2VwdG9yIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZXF1ZXN0VXNlckFnZW50IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5SZXF1ZXN0VXNlckFnZW50IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InByb2Nlc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlcXVlc3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJlc3BvbnNlQ29ubkNvbnRyb2wiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZUludGVyY2VwdG9yIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZXNwb25zZUNvbm5Db250cm9sIgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5SZXNwb25zZUNvbm5Db250cm9sIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InByb2Nlc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUmVzcG9uc2VDb250ZW50IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2VJbnRlcmNlcHRvciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVzcG9uc2VDb250ZW50IgorIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5SZXNwb25zZUNvbnRlbnQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0icHJvY2VzcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc3BvbnNlIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9Ikh0dHBFeGNlcHRpb24iIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJSZXNwb25zZURhdGUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZUludGVyY2VwdG9yIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJSZXNwb25zZURhdGUiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLlJlc3BvbnNlRGF0ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJwcm9jZXNzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzcG9uc2UiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2UiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNvbnRleHQiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5wcm90b2NvbC5IdHRwQ29udGV4dCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSHR0cEV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlJlc3BvbnNlU2VydmVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwUmVzcG9uc2VJbnRlcmNlcHRvciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iUmVzcG9uc2VTZXJ2ZXIiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLlJlc3BvbnNlU2VydmVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9InByb2Nlc3MiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNwb25zZSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dCIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkh0dHBDb250ZXh0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJIdHRwRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuSHR0cEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3luY0Jhc2ljSHR0cENvbnRleHQiCisgZXh0ZW5kcz0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLkJhc2ljSHR0cENvbnRleHQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTeW5jQmFzaWNIdHRwQ29udGV4dCIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuU3luY0Jhc2ljSHR0cENvbnRleHQiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnRDb250ZXh0IiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAucHJvdG9jb2wuSHR0cENvbnRleHQiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJVcmlQYXR0ZXJuTWF0Y2hlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVXJpUGF0dGVybk1hdGNoZXIiCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnByb3RvY29sLlVyaVBhdHRlcm5NYXRjaGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9Imxvb2t1cCIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3RVUkkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWF0Y2hVcmlSZXF1ZXN0UGF0dGVybiIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhdHRlcm4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3RVcmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVnaXN0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXR0ZXJuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEhhbmRsZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWFwIiB0eXBlPSJqYXZhLnV0aWwuTWFwIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InVucmVnaXN0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXR0ZXJuIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0ib3JnLmFwYWNoZS5odHRwLnV0aWwiCis+Cis8Y2xhc3MgbmFtZT0iQnl0ZUFycmF5QnVmZmVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkJ5dGVBcnJheUJ1ZmZlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5CeXRlQXJyYXlCdWZmZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXBhY2l0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYXBwZW5kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXBwZW5kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2ZmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2ZmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImJ1ZmZlciIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJieXRlQXQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjYXBhY2l0eSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNFbXB0eSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNGdWxsIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TGVuZ3RoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9CeXRlQXJyYXkiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iQ2hhckFycmF5QnVmZmVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNoYXJBcnJheUJ1ZmZlciIKKyB0eXBlPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5DaGFyQXJyYXlCdWZmZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYXBhY2l0eSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYXBwZW5kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYiIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmYiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYXBwZW5kIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ib2ZmIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC51dGlsLkNoYXJBcnJheUJ1ZmZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaCIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJiIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5CeXRlQXJyYXlCdWZmZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJhcHBlbmQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iYnVmZmVyIgorIHJldHVybj0iY2hhcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNhcGFjaXR5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNoYXJBdCIKKyByZXR1cm49ImNoYXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5zdXJlQ2FwYWNpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXF1aXJlZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImluZGV4T2YiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJlZ2luSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpbmRleE9mIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRW1wdHkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRnVsbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldExlbmd0aCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxlbiIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1YnN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJlZ2luSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5kSW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdWJzdHJpbmdUcmltbWVkIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYmVnaW5JbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlbmRJbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvQ2hhckFycmF5IgorIHJldHVybj0iY2hhcltdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkVuY29kaW5nVXRpbHMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldEFzY2lpQnl0ZXMiCisgcmV0dXJuPSJieXRlW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBc2NpaVN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXNjaWlTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImJ5dGVbXSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCeXRlcyIKKyByZXR1cm49ImJ5dGVbXSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjaGFyc2V0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iYnl0ZVtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYXJzZXQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJieXRlW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYXJzZXQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRW50aXR5VXRpbHMiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldENvbnRlbnRDaGFyU2V0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbnRpdHkiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRW50aXR5Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYXJzZUV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlBhcnNlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvQnl0ZUFycmF5IgorIHJldHVybj0iYnl0ZVtdIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVudGl0eSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFbnRpdHkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbnRpdHkiIHR5cGU9Im9yZy5hcGFjaGUuaHR0cC5IdHRwRW50aXR5Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZWZhdWx0Q2hhcnNldCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhcnNlRXhjZXB0aW9uIiB0eXBlPSJvcmcuYXBhY2hlLmh0dHAuUGFyc2VFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9TdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVudGl0eSIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLkh0dHBFbnRpdHkiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJQYXJzZUV4Y2VwdGlvbiIgdHlwZT0ib3JnLmFwYWNoZS5odHRwLlBhcnNlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkV4Y2VwdGlvblV0aWxzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJpbml0Q2F1c2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRocm93YWJsZSIgdHlwZT0iamF2YS5sYW5nLlRocm93YWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2F1c2UiIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTGFuZ1V0aWxzIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJlcXVhbHMiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9iajEiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9iajIiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXF1YWxzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhMSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdFtdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhMiIgdHlwZT0iamF2YS5sYW5nLk9iamVjdFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc2hDb2RlIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlZWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFzaGNvZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNoQ29kZSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzZWVkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImIiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzaENvZGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic2VlZCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvYmoiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJIQVNIX09GRlNFVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjM3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkhBU0hfU0VFRCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJWZXJzaW9uSW5mbyIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iVmVyc2lvbkluZm8iCisgdHlwZT0ib3JnLmFwYWNoZS5odHRwLnV0aWwuVmVyc2lvbkluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPHBhcmFtZXRlciBuYW1lPSJwY2tnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2R1bGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlbGVhc2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InRpbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNsc2xkciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImZyb21NYXAiCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5WZXJzaW9uSW5mbyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBja2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImluZm8iIHR5cGU9ImphdmEudXRpbC5NYXAiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNsc2xkciIgdHlwZT0iamF2YS5sYW5nLkNsYXNzTG9hZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENsYXNzbG9hZGVyIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE1vZHVsZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYWNrYWdlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlbGVhc2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGltZXN0YW1wIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImxvYWRWZXJzaW9uSW5mbyIKKyByZXR1cm49Im9yZy5hcGFjaGUuaHR0cC51dGlsLlZlcnNpb25JbmZvW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwY2tncyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjbHNsZHIiIHR5cGU9ImphdmEubGFuZy5DbGFzc0xvYWRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsb2FkVmVyc2lvbkluZm8iCisgcmV0dXJuPSJvcmcuYXBhY2hlLmh0dHAudXRpbC5WZXJzaW9uSW5mbyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBja2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNsc2xkciIgdHlwZT0iamF2YS5sYW5nLkNsYXNzTG9hZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iUFJPUEVSVFlfTU9EVUxFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2luZm8ubW9kdWxlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBST1BFUlRZX1JFTEVBU0UiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aW5mby5yZWxlYXNlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlBST1BFUlRZX1RJTUVTVEFNUCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtpbmZvLnRpbWVzdGFtcCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJVTkFWQUlMQUJMRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtVTkFWQUlMQUJMRSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJWRVJTSU9OX1BST1BFUlRZX0ZJTEUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7dmVyc2lvbi5wcm9wZXJ0aWVzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9Im9yZy5qc29uIgorPgorPGNsYXNzIG5hbWU9IkpTT05BcnJheSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSlNPTkFycmF5IgorIHR5cGU9Im9yZy5qc29uLkpTT05BcnJheSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkpTT05BcnJheSIKKyB0eXBlPSJvcmcuanNvbi5KU09OQXJyYXkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb3B5RnJvbSIgdHlwZT0iamF2YS51dGlsLkNvbGxlY3Rpb24iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkpTT05BcnJheSIKKyB0eXBlPSJvcmcuanNvbi5KU09OQXJyYXkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZWFkRnJvbSIgdHlwZT0ib3JnLmpzb24uSlNPTlRva2VuZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkpTT05FeGNlcHRpb24iIHR5cGU9Im9yZy5qc29uLkpTT05FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkpTT05BcnJheSIKKyB0eXBlPSJvcmcuanNvbi5KU09OQXJyYXkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJqc29uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJKU09ORXhjZXB0aW9uIiB0eXBlPSJvcmcuanNvbi5KU09ORXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSlNPTkV4Y2VwdGlvbiIgdHlwZT0ib3JnLmpzb24uSlNPTkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCb29sZWFuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSlNPTkV4Y2VwdGlvbiIgdHlwZT0ib3JnLmpzb24uSlNPTkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREb3VibGUiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkpTT05FeGNlcHRpb24iIHR5cGU9Im9yZy5qc29uLkpTT05FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJKU09ORXhjZXB0aW9uIiB0eXBlPSJvcmcuanNvbi5KU09ORXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEpTT05BcnJheSIKKyByZXR1cm49Im9yZy5qc29uLkpTT05BcnJheSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSlNPTkV4Y2VwdGlvbiIgdHlwZT0ib3JnLmpzb24uSlNPTkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRKU09OT2JqZWN0IgorIHJldHVybj0ib3JnLmpzb24uSlNPTk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSlNPTkV4Y2VwdGlvbiIgdHlwZT0ib3JnLmpzb24uSlNPTkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb25nIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSlNPTkV4Y2VwdGlvbiIgdHlwZT0ib3JnLmpzb24uSlNPTkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJKU09ORXhjZXB0aW9uIiB0eXBlPSJvcmcuanNvbi5KU09ORXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzTnVsbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iam9pbiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNlcGFyYXRvciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSlNPTkV4Y2VwdGlvbiIgdHlwZT0ib3JnLmpzb24uSlNPTkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJsZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3B0IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcHRCb29sZWFuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcHRCb29sZWFuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFsbGJhY2siIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3B0RG91YmxlIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wdERvdWJsZSIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFsbGJhY2siIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcHRJbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3B0SW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmYWxsYmFjayIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wdEpTT05BcnJheSIKKyByZXR1cm49Im9yZy5qc29uLkpTT05BcnJheSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcHRKU09OT2JqZWN0IgorIHJldHVybj0ib3JnLmpzb24uSlNPTk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcHRMb25nIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcHRMb25nIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFsbGJhY2siIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3B0U3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcHRTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmYWxsYmFjayIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJvcmcuanNvbi5KU09OQXJyYXkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49Im9yZy5qc29uLkpTT05BcnJheSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSlNPTkV4Y2VwdGlvbiIgdHlwZT0ib3JnLmpzb24uSlNPTkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJvcmcuanNvbi5KU09OQXJyYXkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0ib3JnLmpzb24uSlNPTkFycmF5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJvcmcuanNvbi5KU09OQXJyYXkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49Im9yZy5qc29uLkpTT05BcnJheSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkpTT05FeGNlcHRpb24iIHR5cGU9Im9yZy5qc29uLkpTT05FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0ib3JnLmpzb24uSlNPTkFycmF5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJKU09ORXhjZXB0aW9uIiB0eXBlPSJvcmcuanNvbi5KU09ORXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49Im9yZy5qc29uLkpTT05BcnJheSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSlNPTkV4Y2VwdGlvbiIgdHlwZT0ib3JnLmpzb24uSlNPTkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJvcmcuanNvbi5KU09OQXJyYXkiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJsb25nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJKU09ORXhjZXB0aW9uIiB0eXBlPSJvcmcuanNvbi5KU09ORXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49Im9yZy5qc29uLkpTT05BcnJheSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkpTT05FeGNlcHRpb24iIHR5cGU9Im9yZy5qc29uLkpTT05FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idG9KU09OT2JqZWN0IgorIHJldHVybj0ib3JnLmpzb24uSlNPTk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXMiIHR5cGU9Im9yZy5qc29uLkpTT05BcnJheSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSlNPTkV4Y2VwdGlvbiIgdHlwZT0ib3JnLmpzb24uSlNPTkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGVudFNwYWNlcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJKU09ORXhjZXB0aW9uIiB0eXBlPSJvcmcuanNvbi5KU09ORXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IkpTT05FeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLkV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkpTT05FeGNlcHRpb24iCisgdHlwZT0ib3JnLmpzb24uSlNPTkV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJKU09OT2JqZWN0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJKU09OT2JqZWN0IgorIHR5cGU9Im9yZy5qc29uLkpTT05PYmplY3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJKU09OT2JqZWN0IgorIHR5cGU9Im9yZy5qc29uLkpTT05PYmplY3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb3B5RnJvbSIgdHlwZT0iamF2YS51dGlsLk1hcCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iSlNPTk9iamVjdCIKKyB0eXBlPSJvcmcuanNvbi5KU09OT2JqZWN0IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVhZEZyb20iIHR5cGU9Im9yZy5qc29uLkpTT05Ub2tlbmVyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJKU09ORXhjZXB0aW9uIiB0eXBlPSJvcmcuanNvbi5KU09ORXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJKU09OT2JqZWN0IgorIHR5cGU9Im9yZy5qc29uLkpTT05PYmplY3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJqc29uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJKU09ORXhjZXB0aW9uIiB0eXBlPSJvcmcuanNvbi5KU09ORXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJKU09OT2JqZWN0IgorIHR5cGU9Im9yZy5qc29uLkpTT05PYmplY3QiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb3B5RnJvbSIgdHlwZT0ib3JnLmpzb24uSlNPTk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXMiIHR5cGU9ImphdmEubGFuZy5TdHJpbmdbXSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSlNPTkV4Y2VwdGlvbiIgdHlwZT0ib3JnLmpzb24uSlNPTkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImFjY3VtdWxhdGUiCisgcmV0dXJuPSJvcmcuanNvbi5KU09OT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSlNPTkV4Y2VwdGlvbiIgdHlwZT0ib3JnLmpzb24uSlNPTkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJKU09ORXhjZXB0aW9uIiB0eXBlPSJvcmcuanNvbi5KU09ORXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJvb2xlYW4iCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJKU09ORXhjZXB0aW9uIiB0eXBlPSJvcmcuanNvbi5KU09ORXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERvdWJsZSIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSlNPTkV4Y2VwdGlvbiIgdHlwZT0ib3JnLmpzb24uSlNPTkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkpTT05FeGNlcHRpb24iIHR5cGU9Im9yZy5qc29uLkpTT05FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SlNPTkFycmF5IgorIHJldHVybj0ib3JnLmpzb24uSlNPTkFycmF5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJKU09ORXhjZXB0aW9uIiB0eXBlPSJvcmcuanNvbi5KU09ORXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEpTT05PYmplY3QiCisgcmV0dXJuPSJvcmcuanNvbi5KU09OT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJKU09ORXhjZXB0aW9uIiB0eXBlPSJvcmcuanNvbi5KU09ORXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExvbmciCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJKU09ORXhjZXB0aW9uIiB0eXBlPSJvcmcuanNvbi5KU09ORXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkpTT05FeGNlcHRpb24iIHR5cGU9Im9yZy5qc29uLkpTT05FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc051bGwiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImtleXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuSXRlcmF0b3IiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5hbWVzIgorIHJldHVybj0ib3JnLmpzb24uSlNPTkFycmF5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im51bWJlclRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJudW1iZXIiIHR5cGU9ImphdmEubGFuZy5OdW1iZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkpTT05FeGNlcHRpb24iIHR5cGU9Im9yZy5qc29uLkpTT05FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3B0IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcHRCb29sZWFuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcHRCb29sZWFuIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFsbGJhY2siIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3B0RG91YmxlIgorIHJldHVybj0iZG91YmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wdERvdWJsZSIKKyByZXR1cm49ImRvdWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFsbGJhY2siIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcHRJbnQiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3B0SW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmYWxsYmFjayIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9wdEpTT05BcnJheSIKKyByZXR1cm49Im9yZy5qc29uLkpTT05BcnJheSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcHRKU09OT2JqZWN0IgorIHJldHVybj0ib3JnLmpzb24uSlNPTk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcHRMb25nIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcHRMb25nIgorIHJldHVybj0ibG9uZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmFsbGJhY2siIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib3B0U3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcHRTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJmYWxsYmFjayIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJvcmcuanNvbi5KU09OT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSlNPTkV4Y2VwdGlvbiIgdHlwZT0ib3JnLmpzb24uSlNPTkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXQiCisgcmV0dXJuPSJvcmcuanNvbi5KU09OT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJKU09ORXhjZXB0aW9uIiB0eXBlPSJvcmcuanNvbi5KU09ORXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InB1dCIKKyByZXR1cm49Im9yZy5qc29uLkpTT05PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkpTT05FeGNlcHRpb24iIHR5cGU9Im9yZy5qc29uLkpTT05FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0ib3JnLmpzb24uSlNPTk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkpTT05FeGNlcHRpb24iIHR5cGU9Im9yZy5qc29uLkpTT05FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0IgorIHJldHVybj0ib3JnLmpzb24uSlNPTk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkpTT05FeGNlcHRpb24iIHR5cGU9Im9yZy5qc29uLkpTT05FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHV0T3B0IgorIHJldHVybj0ib3JnLmpzb24uSlNPTk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkpTT05FeGNlcHRpb24iIHR5cGU9Im9yZy5qc29uLkpTT05FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icXVvdGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b0pTT05BcnJheSIKKyByZXR1cm49Im9yZy5qc29uLkpTT05BcnJheSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXMiIHR5cGU9Im9yZy5qc29uLkpTT05BcnJheSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSlNPTkV4Y2VwdGlvbiIgdHlwZT0ib3JnLmpzb24uSlNPTkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0b1N0cmluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGVudFNwYWNlcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJKU09ORXhjZXB0aW9uIiB0eXBlPSJvcmcuanNvbi5KU09ORXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iTlVMTCIKKyB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJKU09OU3RyaW5nZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkpTT05TdHJpbmdlciIKKyB0eXBlPSJvcmcuanNvbi5KU09OU3RyaW5nZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iYXJyYXkiCisgcmV0dXJuPSJvcmcuanNvbi5KU09OU3RyaW5nZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkpTT05FeGNlcHRpb24iIHR5cGU9Im9yZy5qc29uLkpTT05FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5kQXJyYXkiCisgcmV0dXJuPSJvcmcuanNvbi5KU09OU3RyaW5nZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkpTT05FeGNlcHRpb24iIHR5cGU9Im9yZy5qc29uLkpTT05FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5kT2JqZWN0IgorIHJldHVybj0ib3JnLmpzb24uSlNPTlN0cmluZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJKU09ORXhjZXB0aW9uIiB0eXBlPSJvcmcuanNvbi5KU09ORXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImtleSIKKyByZXR1cm49Im9yZy5qc29uLkpTT05TdHJpbmdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSlNPTkV4Y2VwdGlvbiIgdHlwZT0ib3JnLmpzb24uSlNPTkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvYmplY3QiCisgcmV0dXJuPSJvcmcuanNvbi5KU09OU3RyaW5nZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkpTT05FeGNlcHRpb24iIHR5cGU9Im9yZy5qc29uLkpTT05FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idmFsdWUiCisgcmV0dXJuPSJvcmcuanNvbi5KU09OU3RyaW5nZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJKU09ORXhjZXB0aW9uIiB0eXBlPSJvcmcuanNvbi5KU09ORXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InZhbHVlIgorIHJldHVybj0ib3JnLmpzb24uSlNPTlN0cmluZ2VyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSlNPTkV4Y2VwdGlvbiIgdHlwZT0ib3JnLmpzb24uSlNPTkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZSIKKyByZXR1cm49Im9yZy5qc29uLkpTT05TdHJpbmdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSlNPTkV4Y2VwdGlvbiIgdHlwZT0ib3JnLmpzb24uSlNPTkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ2YWx1ZSIKKyByZXR1cm49Im9yZy5qc29uLkpTT05TdHJpbmdlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkpTT05FeGNlcHRpb24iIHR5cGU9Im9yZy5qc29uLkpTT05FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iSlNPTlRva2VuZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkpTT05Ub2tlbmVyIgorIHR5cGU9Im9yZy5qc29uLkpTT05Ub2tlbmVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW4iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJiYWNrIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWhleGNoYXIiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGV4IiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im1vcmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHQiCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHQiCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjIiB0eXBlPSJjaGFyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJKU09ORXhjZXB0aW9uIiB0eXBlPSJvcmcuanNvbi5KU09ORXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSlNPTkV4Y2VwdGlvbiIgdHlwZT0ib3JnLmpzb24uSlNPTkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0Q2xlYW4iCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJKU09ORXhjZXB0aW9uIiB0eXBlPSJvcmcuanNvbi5KU09ORXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHRTdHJpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJxdW90ZSIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSlNPTkV4Y2VwdGlvbiIgdHlwZT0ib3JnLmpzb24uSlNPTkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0VG8iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleGNsdWRlZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0VG8iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJleGNsdWRlZCIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0VmFsdWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJKU09ORXhjZXB0aW9uIiB0eXBlPSJvcmcuanNvbi5KU09ORXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNraXBQYXN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGhydSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJza2lwVG8iCisgcmV0dXJuPSJjaGFyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0byIgdHlwZT0iY2hhciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzeW50YXhFcnJvciIKKyByZXR1cm49Im9yZy5qc29uLkpTT05FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8cGFja2FnZSBuYW1lPSJvcmcudzNjLmRvbSIKKz4KKzxpbnRlcmZhY2UgbmFtZT0iQXR0ciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcudzNjLmRvbS5Ob2RlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPd25lckVsZW1lbnQiCisgcmV0dXJuPSJvcmcudzNjLmRvbS5FbGVtZW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U2NoZW1hVHlwZUluZm8iCisgcmV0dXJuPSJvcmcudzNjLmRvbS5UeXBlSW5mbyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNwZWNpZmllZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0lkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZhbHVlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJDREFUQVNlY3Rpb24iCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLnczYy5kb20uVGV4dCI+Cis8L2ltcGxlbWVudHM+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iQ2hhcmFjdGVyRGF0YSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcudzNjLmRvbS5Ob2RlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iYXBwZW5kRGF0YSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJnIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJET01FeGNlcHRpb24iIHR5cGU9Im9yZy53M2MuZG9tLkRPTUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkZWxldGVEYXRhIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGF0YSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaW5zZXJ0RGF0YSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2Zmc2V0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFyZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVwbGFjZURhdGEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhcmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkRPTUV4Y2VwdGlvbiIgdHlwZT0ib3JnLnczYy5kb20uRE9NRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERhdGEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkRPTUV4Y2VwdGlvbiIgdHlwZT0ib3JnLnczYy5kb20uRE9NRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1YnN0cmluZ0RhdGEiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb3VudCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJET01FeGNlcHRpb24iIHR5cGU9Im9yZy53M2MuZG9tLkRPTUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkNvbW1lbnQiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLnczYy5kb20uQ2hhcmFjdGVyRGF0YSI+Cis8L2ltcGxlbWVudHM+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iRE9NQ29uZmlndXJhdGlvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNhblNldFBhcmFtZXRlciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5PYmplY3QiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFyYW1ldGVyIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJET01FeGNlcHRpb24iIHR5cGU9Im9yZy53M2MuZG9tLkRPTUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJhbWV0ZXJOYW1lcyIKKyByZXR1cm49Im9yZy53M2MuZG9tLkRPTVN0cmluZ0xpc3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQYXJhbWV0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJET01FeGNlcHRpb24iIHR5cGU9Im9yZy53M2MuZG9tLkRPTUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkRPTUVycm9yIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0TG9jYXRpb24iCisgcmV0dXJuPSJvcmcudzNjLmRvbS5ET01Mb2NhdG9yIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TWVzc2FnZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZWxhdGVkRGF0YSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRSZWxhdGVkRXhjZXB0aW9uIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNldmVyaXR5IgorIHJldHVybj0ic2hvcnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iU0VWRVJJVFlfRVJST1IiCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VWRVJJVFlfRkFUQUxfRVJST1IiCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0VWRVJJVFlfV0FSTklORyIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJET01FcnJvckhhbmRsZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJoYW5kbGVFcnJvciIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXJyb3IiIHR5cGU9Im9yZy53M2MuZG9tLkRPTUVycm9yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJET01FeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJET01FeGNlcHRpb24iCisgdHlwZT0ib3JnLnczYy5kb20uRE9NRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29kZSIgdHlwZT0ic2hvcnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGZpZWxkIG5hbWU9IkRPTVNUUklOR19TSVpFX0VSUiIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJISUVSQVJDSFlfUkVRVUVTVF9FUlIiCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU5ERVhfU0laRV9FUlIiCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU5VU0VfQVRUUklCVVRFX0VSUiIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU5WQUxJRF9BQ0NFU1NfRVJSIgorIHR5cGU9InNob3J0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTlZBTElEX0NIQVJBQ1RFUl9FUlIiCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSIgorIHR5cGU9InNob3J0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTlZBTElEX1NUQVRFX0VSUiIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTkFNRVNQQUNFX0VSUiIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTk9UX0ZPVU5EX0VSUiIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOT1RfU1VQUE9SVEVEX0VSUiIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOT19EQVRBX0FMTE9XRURfRVJSIgorIHR5cGU9InNob3J0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUiIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTWU5UQVhfRVJSIgorIHR5cGU9InNob3J0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFX01JU01BVENIX0VSUiIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVkFMSURBVElPTl9FUlIiCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IldST05HX0RPQ1VNRU5UX0VSUiIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjb2RlIgorIHR5cGU9InNob3J0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJET01JbXBsZW1lbnRhdGlvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZURvY3VtZW50IgorIHJldHVybj0ib3JnLnczYy5kb20uRG9jdW1lbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXNwYWNlVVJJIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxdWFsaWZpZWROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkb2N0eXBlIiB0eXBlPSJvcmcudzNjLmRvbS5Eb2N1bWVudFR5cGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkRPTUV4Y2VwdGlvbiIgdHlwZT0ib3JnLnczYy5kb20uRE9NRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZURvY3VtZW50VHlwZSIKKyByZXR1cm49Im9yZy53M2MuZG9tLkRvY3VtZW50VHlwZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJxdWFsaWZpZWROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwdWJsaWNJZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3lzdGVtSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkRPTUV4Y2VwdGlvbiIgdHlwZT0ib3JnLnczYy5kb20uRE9NRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZlYXR1cmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZlcnNpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzRmVhdHVyZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZmVhdHVyZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmVyc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkRPTUltcGxlbWVudGF0aW9uTGlzdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldExlbmd0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Iml0ZW0iCisgcmV0dXJuPSJvcmcudzNjLmRvbS5ET01JbXBsZW1lbnRhdGlvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iRE9NSW1wbGVtZW50YXRpb25Tb3VyY2UiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRET01JbXBsZW1lbnRhdGlvbiIKKyByZXR1cm49Im9yZy53M2MuZG9tLkRPTUltcGxlbWVudGF0aW9uIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmVzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERPTUltcGxlbWVudGF0aW9uTGlzdCIKKyByZXR1cm49Im9yZy53M2MuZG9tLkRPTUltcGxlbWVudGF0aW9uTGlzdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZWF0dXJlcyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkRPTUxvY2F0b3IiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRCeXRlT2Zmc2V0IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sdW1uTnVtYmVyIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGluZU51bWJlciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFJlbGF0ZWROb2RlIgorIHJldHVybj0ib3JnLnczYy5kb20uTm9kZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFVyaSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVdGYxNk9mZnNldCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iRE9NU3RyaW5nTGlzdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNvbnRhaW5zIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXRlbSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkRvY3VtZW50IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy53M2MuZG9tLk5vZGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJhZG9wdE5vZGUiCisgcmV0dXJuPSJvcmcudzNjLmRvbS5Ob2RlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InNvdXJjZSIgdHlwZT0ib3JnLnczYy5kb20uTm9kZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlQXR0cmlidXRlIgorIHJldHVybj0ib3JnLnczYy5kb20uQXR0ciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJET01FeGNlcHRpb24iIHR5cGU9Im9yZy53M2MuZG9tLkRPTUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVBdHRyaWJ1dGVOUyIKKyByZXR1cm49Im9yZy53M2MuZG9tLkF0dHIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXNwYWNlVVJJIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxdWFsaWZpZWROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJET01FeGNlcHRpb24iIHR5cGU9Im9yZy53M2MuZG9tLkRPTUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVDREFUQVNlY3Rpb24iCisgcmV0dXJuPSJvcmcudzNjLmRvbS5DREFUQVNlY3Rpb24iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlQ29tbWVudCIKKyByZXR1cm49Im9yZy53M2MuZG9tLkNvbW1lbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVEb2N1bWVudEZyYWdtZW50IgorIHJldHVybj0ib3JnLnczYy5kb20uRG9jdW1lbnRGcmFnbWVudCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUVsZW1lbnQiCisgcmV0dXJuPSJvcmcudzNjLmRvbS5FbGVtZW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZ05hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkRPTUV4Y2VwdGlvbiIgdHlwZT0ib3JnLnczYy5kb20uRE9NRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZUVsZW1lbnROUyIKKyByZXR1cm49Im9yZy53M2MuZG9tLkVsZW1lbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXNwYWNlVVJJIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxdWFsaWZpZWROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJET01FeGNlcHRpb24iIHR5cGU9Im9yZy53M2MuZG9tLkRPTUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVFbnRpdHlSZWZlcmVuY2UiCisgcmV0dXJuPSJvcmcudzNjLmRvbS5FbnRpdHlSZWZlcmVuY2UiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlUHJvY2Vzc2luZ0luc3RydWN0aW9uIgorIHJldHVybj0ib3JnLnczYy5kb20uUHJvY2Vzc2luZ0luc3RydWN0aW9uIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlVGV4dE5vZGUiCisgcmV0dXJuPSJvcmcudzNjLmRvbS5UZXh0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RG9jdHlwZSIKKyByZXR1cm49Im9yZy53M2MuZG9tLkRvY3VtZW50VHlwZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERvY3VtZW50RWxlbWVudCIKKyByZXR1cm49Im9yZy53M2MuZG9tLkVsZW1lbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREb2N1bWVudFVSSSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREb21Db25maWciCisgcmV0dXJuPSJvcmcudzNjLmRvbS5ET01Db25maWd1cmF0aW9uIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RWxlbWVudEJ5SWQiCisgcmV0dXJuPSJvcmcudzNjLmRvbS5FbGVtZW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVsZW1lbnRJZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbGVtZW50c0J5VGFnTmFtZSIKKyByZXR1cm49Im9yZy53M2MuZG9tLk5vZGVMaXN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhZ25hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RWxlbWVudHNCeVRhZ05hbWVOUyIKKyByZXR1cm49Im9yZy53M2MuZG9tLk5vZGVMaXN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWVzcGFjZVVSSSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEltcGxlbWVudGF0aW9uIgorIHJldHVybj0ib3JnLnczYy5kb20uRE9NSW1wbGVtZW50YXRpb24iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbnB1dEVuY29kaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0cmljdEVycm9yQ2hlY2tpbmciCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0WG1sRW5jb2RpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0WG1sU3RhbmRhbG9uZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRYbWxWZXJzaW9uIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImltcG9ydE5vZGUiCisgcmV0dXJuPSJvcmcudzNjLmRvbS5Ob2RlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImltcG9ydGVkTm9kZSIgdHlwZT0ib3JnLnczYy5kb20uTm9kZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGVlcCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibm9ybWFsaXplRG9jdW1lbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVuYW1lTm9kZSIKKyByZXR1cm49Im9yZy53M2MuZG9tLk5vZGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibiIgdHlwZT0ib3JnLnczYy5kb20uTm9kZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXNwYWNlVVJJIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxdWFsaWZpZWROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJET01FeGNlcHRpb24iIHR5cGU9Im9yZy53M2MuZG9tLkRPTUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREb2N1bWVudFVSSSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZG9jdW1lbnRVUkkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RyaWN0RXJyb3JDaGVja2luZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaWN0RXJyb3JDaGVja2luZyIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRYbWxTdGFuZGFsb25lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4bWxTdGFuZGFsb25lIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJET01FeGNlcHRpb24iIHR5cGU9Im9yZy53M2MuZG9tLkRPTUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRYbWxWZXJzaW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4bWxWZXJzaW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJET01FeGNlcHRpb24iIHR5cGU9Im9yZy53M2MuZG9tLkRPTUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkRvY3VtZW50RnJhZ21lbnQiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLnczYy5kb20uTm9kZSI+Cis8L2ltcGxlbWVudHM+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iRG9jdW1lbnRUeXBlIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy53M2MuZG9tLk5vZGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRFbnRpdGllcyIKKyByZXR1cm49Im9yZy53M2MuZG9tLk5hbWVkTm9kZU1hcCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEludGVybmFsU3Vic2V0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Tm90YXRpb25zIgorIHJldHVybj0ib3JnLnczYy5kb20uTmFtZWROb2RlTWFwIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHVibGljSWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3lzdGVtSWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJFbGVtZW50IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy53M2MuZG9tLk5vZGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRBdHRyaWJ1dGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXR0cmlidXRlTlMiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWVzcGFjZVVSSSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJET01FeGNlcHRpb24iIHR5cGU9Im9yZy53M2MuZG9tLkRPTUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdHRyaWJ1dGVOb2RlIgorIHJldHVybj0ib3JnLnczYy5kb20uQXR0ciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF0dHJpYnV0ZU5vZGVOUyIKKyByZXR1cm49Im9yZy53M2MuZG9tLkF0dHIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXNwYWNlVVJJIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkRPTUV4Y2VwdGlvbiIgdHlwZT0ib3JnLnczYy5kb20uRE9NRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVsZW1lbnRzQnlUYWdOYW1lIgorIHJldHVybj0ib3JnLnczYy5kb20uTm9kZUxpc3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbGVtZW50c0J5VGFnTmFtZU5TIgorIHJldHVybj0ib3JnLnczYy5kb20uTm9kZUxpc3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXNwYWNlVVJJIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkRPTUV4Y2VwdGlvbiIgdHlwZT0ib3JnLnczYy5kb20uRE9NRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFNjaGVtYVR5cGVJbmZvIgorIHJldHVybj0ib3JnLnczYy5kb20uVHlwZUluZm8iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUYWdOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imhhc0F0dHJpYnV0ZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNBdHRyaWJ1dGVOUyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXNwYWNlVVJJIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkRPTUV4Y2VwdGlvbiIgdHlwZT0ib3JnLnczYy5kb20uRE9NRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZUF0dHJpYnV0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlQXR0cmlidXRlTlMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWVzcGFjZVVSSSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJET01FeGNlcHRpb24iIHR5cGU9Im9yZy53M2MuZG9tLkRPTUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVBdHRyaWJ1dGVOb2RlIgorIHJldHVybj0ib3JnLnczYy5kb20uQXR0ciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvbGRBdHRyIiB0eXBlPSJvcmcudzNjLmRvbS5BdHRyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJET01FeGNlcHRpb24iIHR5cGU9Im9yZy53M2MuZG9tLkRPTUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBdHRyaWJ1dGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJET01FeGNlcHRpb24iIHR5cGU9Im9yZy53M2MuZG9tLkRPTUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBdHRyaWJ1dGVOUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXNwYWNlVVJJIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxdWFsaWZpZWROYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QXR0cmlidXRlTm9kZSIKKyByZXR1cm49Im9yZy53M2MuZG9tLkF0dHIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3QXR0ciIgdHlwZT0ib3JnLnczYy5kb20uQXR0ciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QXR0cmlidXRlTm9kZU5TIgorIHJldHVybj0ib3JnLnczYy5kb20uQXR0ciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdBdHRyIiB0eXBlPSJvcmcudzNjLmRvbS5BdHRyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJET01FeGNlcHRpb24iIHR5cGU9Im9yZy53M2MuZG9tLkRPTUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRJZEF0dHJpYnV0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaXNJZCIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SWRBdHRyaWJ1dGVOUyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXNwYWNlVVJJIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImlzSWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkRPTUV4Y2VwdGlvbiIgdHlwZT0ib3JnLnczYy5kb20uRE9NRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldElkQXR0cmlidXRlTm9kZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaWRBdHRyIiB0eXBlPSJvcmcudzNjLmRvbS5BdHRyIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpc0lkIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJET01FeGNlcHRpb24iIHR5cGU9Im9yZy53M2MuZG9tLkRPTUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkVudGl0eSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcudzNjLmRvbS5Ob2RlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0SW5wdXRFbmNvZGluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROb3RhdGlvbk5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHVibGljSWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3lzdGVtSWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0WG1sRW5jb2RpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0WG1sVmVyc2lvbiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkVudGl0eVJlZmVyZW5jZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcudzNjLmRvbS5Ob2RlIj4KKzwvaW1wbGVtZW50cz4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJOYW1lTGlzdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImNvbnRhaW5zIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzdHIiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29udGFpbnNOUyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXNwYWNlVVJJIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExlbmd0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZXNwYWNlVVJJIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iTmFtZWROb2RlTWFwIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0TGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZWRJdGVtIgorIHJldHVybj0ib3JnLnczYy5kb20uTm9kZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWVkSXRlbU5TIgorIHJldHVybj0ib3JnLnczYy5kb20uTm9kZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lc3BhY2VVUkkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXRlbSIKKyByZXR1cm49Im9yZy53M2MuZG9tLk5vZGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVOYW1lZEl0ZW0iCisgcmV0dXJuPSJvcmcudzNjLmRvbS5Ob2RlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkRPTUV4Y2VwdGlvbiIgdHlwZT0ib3JnLnczYy5kb20uRE9NRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlbW92ZU5hbWVkSXRlbU5TIgorIHJldHVybj0ib3JnLnczYy5kb20uTm9kZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lc3BhY2VVUkkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TmFtZWRJdGVtIgorIHJldHVybj0ib3JnLnczYy5kb20uTm9kZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcmciIHR5cGU9Im9yZy53M2MuZG9tLk5vZGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkRPTUV4Y2VwdGlvbiIgdHlwZT0ib3JnLnczYy5kb20uRE9NRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE5hbWVkSXRlbU5TIgorIHJldHVybj0ib3JnLnczYy5kb20uTm9kZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhcmciIHR5cGU9Im9yZy53M2MuZG9tLk5vZGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkRPTUV4Y2VwdGlvbiIgdHlwZT0ib3JnLnczYy5kb20uRE9NRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iTm9kZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImFwcGVuZENoaWxkIgorIHJldHVybj0ib3JnLnczYy5kb20uTm9kZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdDaGlsZCIgdHlwZT0ib3JnLnczYy5kb20uTm9kZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY2xvbmVOb2RlIgorIHJldHVybj0ib3JnLnczYy5kb20uTm9kZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJkZWVwIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbXBhcmVEb2N1bWVudFBvc2l0aW9uIgorIHJldHVybj0ic2hvcnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3RoZXIiIHR5cGU9Im9yZy53M2MuZG9tLk5vZGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkRPTUV4Y2VwdGlvbiIgdHlwZT0ib3JnLnczYy5kb20uRE9NRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF0dHJpYnV0ZXMiCisgcmV0dXJuPSJvcmcudzNjLmRvbS5OYW1lZE5vZGVNYXAiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRCYXNlVVJJIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoaWxkTm9kZXMiCisgcmV0dXJuPSJvcmcudzNjLmRvbS5Ob2RlTGlzdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZlYXR1cmUiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZlYXR1cmUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZlcnNpb24iIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Rmlyc3RDaGlsZCIKKyByZXR1cm49Im9yZy53M2MuZG9tLk5vZGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMYXN0Q2hpbGQiCisgcmV0dXJuPSJvcmcudzNjLmRvbS5Ob2RlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9jYWxOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWVzcGFjZVVSSSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROZXh0U2libGluZyIKKyByZXR1cm49Im9yZy53M2MuZG9tLk5vZGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROb2RlTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROb2RlVHlwZSIKKyByZXR1cm49InNob3J0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Tm9kZVZhbHVlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJET01FeGNlcHRpb24iIHR5cGU9Im9yZy53M2MuZG9tLkRPTUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRPd25lckRvY3VtZW50IgorIHJldHVybj0ib3JnLnczYy5kb20uRG9jdW1lbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQYXJlbnROb2RlIgorIHJldHVybj0ib3JnLnczYy5kb20uTm9kZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByZWZpeCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcmV2aW91c1NpYmxpbmciCisgcmV0dXJuPSJvcmcudzNjLmRvbS5Ob2RlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGV4dENvbnRlbnQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IkRPTUV4Y2VwdGlvbiIgdHlwZT0ib3JnLnczYy5kb20uRE9NRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFVzZXJEYXRhIgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJrZXkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaGFzQXR0cmlidXRlcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJoYXNDaGlsZE5vZGVzIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imluc2VydEJlZm9yZSIKKyByZXR1cm49Im9yZy53M2MuZG9tLk5vZGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3Q2hpbGQiIHR5cGU9Im9yZy53M2MuZG9tLk5vZGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlZkNoaWxkIiB0eXBlPSJvcmcudzNjLmRvbS5Ob2RlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJET01FeGNlcHRpb24iIHR5cGU9Im9yZy53M2MuZG9tLkRPTUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0RlZmF1bHROYW1lc3BhY2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWVzcGFjZVVSSSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0VxdWFsTm9kZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXJnIiB0eXBlPSJvcmcudzNjLmRvbS5Ob2RlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU2FtZU5vZGUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im90aGVyIiB0eXBlPSJvcmcudzNjLmRvbS5Ob2RlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU3VwcG9ydGVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJmZWF0dXJlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2ZXJzaW9uIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxvb2t1cE5hbWVzcGFjZVVSSSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlZml4IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imxvb2t1cFByZWZpeCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXNwYWNlVVJJIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5vcm1hbGl6ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVDaGlsZCIKKyByZXR1cm49Im9yZy53M2MuZG9tLk5vZGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib2xkQ2hpbGQiIHR5cGU9Im9yZy53M2MuZG9tLk5vZGUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkRPTUV4Y2VwdGlvbiIgdHlwZT0ib3JnLnczYy5kb20uRE9NRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcGxhY2VDaGlsZCIKKyByZXR1cm49Im9yZy53M2MuZG9tLk5vZGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmV3Q2hpbGQiIHR5cGU9Im9yZy53M2MuZG9tLk5vZGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9sZENoaWxkIiB0eXBlPSJvcmcudzNjLmRvbS5Ob2RlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJET01FeGNlcHRpb24iIHR5cGU9Im9yZy53M2MuZG9tLkRPTUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXROb2RlVmFsdWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5vZGVWYWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UHJlZml4IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmaXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkRPTUV4Y2VwdGlvbiIgdHlwZT0ib3JnLnczYy5kb20uRE9NRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFRleHRDb250ZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0Q29udGVudCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VXNlckRhdGEiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImtleSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlciIgdHlwZT0ib3JnLnczYy5kb20uVXNlckRhdGFIYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iQVRUUklCVVRFX05PREUiCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ0RBVEFfU0VDVElPTl9OT0RFIgorIHR5cGU9InNob3J0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNPTU1FTlRfTk9ERSIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJET0NVTUVOVF9GUkFHTUVOVF9OT0RFIgorIHR5cGU9InNob3J0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJET0NVTUVOVF9OT0RFIgorIHR5cGU9InNob3J0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRPQ1VNRU5UX1BPU0lUSU9OX0NPTlRBSU5FRF9CWSIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRE9DVU1FTlRfUE9TSVRJT05fQ09OVEFJTlMiCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRE9DVU1FTlRfUE9TSVRJT05fRElTQ09OTkVDVEVEIgorIHR5cGU9InNob3J0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRPQ1VNRU5UX1BPU0lUSU9OX0ZPTExPV0lORyIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJET0NVTUVOVF9QT1NJVElPTl9JTVBMRU1FTlRBVElPTl9TUEVDSUZJQyIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRE9DVU1FTlRfUE9TSVRJT05fUFJFQ0VESU5HIgorIHR5cGU9InNob3J0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRPQ1VNRU5UX1RZUEVfTk9ERSIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRUxFTUVOVF9OT0RFIgorIHR5cGU9InNob3J0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVOVElUWV9OT0RFIgorIHR5cGU9InNob3J0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVOVElUWV9SRUZFUkVOQ0VfTk9ERSIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOT1RBVElPTl9OT0RFIgorIHR5cGU9InNob3J0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREUiCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEVYVF9OT0RFIgorIHR5cGU9InNob3J0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9Ik5vZGVMaXN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0TGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXRlbSIKKyByZXR1cm49Im9yZy53M2MuZG9tLk5vZGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9Ik5vdGF0aW9uIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy53M2MuZG9tLk5vZGUiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRQdWJsaWNJZCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTeXN0ZW1JZCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlByb2Nlc3NpbmdJbnN0cnVjdGlvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcudzNjLmRvbS5Ob2RlIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0RGF0YSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUYXJnZXQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RGF0YSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJUZXh0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy53M2MuZG9tLkNoYXJhY3RlckRhdGEiPgorPC9pbXBsZW1lbnRzPgorPG1ldGhvZCBuYW1lPSJnZXRXaG9sZVRleHQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNFbGVtZW50Q29udGVudFdoaXRlc3BhY2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVwbGFjZVdob2xlVGV4dCIKKyByZXR1cm49Im9yZy53M2MuZG9tLlRleHQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGVudCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3BsaXRUZXh0IgorIHJldHVybj0ib3JnLnczYy5kb20uVGV4dCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJUeXBlSW5mbyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldFR5cGVOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFR5cGVOYW1lc3BhY2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNEZXJpdmVkRnJvbSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZU5hbWVzcGFjZUFyZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZU5hbWVBcmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRlcml2YXRpb25NZXRob2QiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkRFUklWQVRJT05fRVhURU5TSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERVJJVkFUSU9OX0xJU1QiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFUklWQVRJT05fUkVTVFJJQ1RJT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkRFUklWQVRJT05fVU5JT04iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlVzZXJEYXRhSGFuZGxlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImhhbmRsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ib3BlcmF0aW9uIiB0eXBlPSJzaG9ydCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ia2V5IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzcmMiIHR5cGU9Im9yZy53M2MuZG9tLk5vZGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRzdCIgdHlwZT0ib3JnLnczYy5kb20uTm9kZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Ik5PREVfQURPUFRFRCIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOT0RFX0NMT05FRCIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOT0RFX0RFTEVURUQiCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTk9ERV9JTVBPUlRFRCIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOT0RFX1JFTkFNRUQiCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9Im9yZy53M2MuZG9tLmxzIgorPgorPGludGVyZmFjZSBuYW1lPSJET01JbXBsZW1lbnRhdGlvbkxTIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY3JlYXRlTFNJbnB1dCIKKyByZXR1cm49Im9yZy53M2MuZG9tLmxzLkxTSW5wdXQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjcmVhdGVMU091dHB1dCIKKyByZXR1cm49Im9yZy53M2MuZG9tLmxzLkxTT3V0cHV0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlTFNQYXJzZXIiCisgcmV0dXJuPSJvcmcudzNjLmRvbS5scy5MU1BhcnNlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJzaG9ydCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2NoZW1hVHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY3JlYXRlTFNTZXJpYWxpemVyIgorIHJldHVybj0ib3JnLnczYy5kb20ubHMuTFNTZXJpYWxpemVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJNT0RFX0FTWU5DSFJPTk9VUyIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNT0RFX1NZTkNIUk9OT1VTIgorIHR5cGU9InNob3J0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iTFNFeGNlcHRpb24iCisgZXh0ZW5kcz0iamF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMU0V4Y2VwdGlvbiIKKyB0eXBlPSJvcmcudzNjLmRvbS5scy5MU0V4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNvZGUiIHR5cGU9InNob3J0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxmaWVsZCBuYW1lPSJQQVJTRV9FUlIiCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlNFUklBTElaRV9FUlIiCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjgyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImNvZGUiCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkxTSW5wdXQiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRCYXNlVVJJIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJ5dGVTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2VydGlmaWVkVGV4dCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDaGFyYWN0ZXJTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLlJlYWRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVuY29kaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFB1YmxpY0lkIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN0cmluZ0RhdGEiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3lzdGVtSWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QmFzZVVSSSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYmFzZVVSSSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRCeXRlU3RyZWFtIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJieXRlU3RyZWFtIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENlcnRpZmllZFRleHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNlcnRpZmllZFRleHQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2hhcmFjdGVyU3RyZWFtIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGFyYWN0ZXJTdHJlYW0iIHR5cGU9ImphdmEuaW8uUmVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVuY29kaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmNvZGluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQdWJsaWNJZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHVibGljSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3RyaW5nRGF0YSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RyaW5nRGF0YSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTeXN0ZW1JZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3lzdGVtSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJMU091dHB1dCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldEJ5dGVTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLk91dHB1dFN0cmVhbSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoYXJhY3RlclN0cmVhbSIKKyByZXR1cm49ImphdmEuaW8uV3JpdGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RW5jb2RpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3lzdGVtSWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Qnl0ZVN0cmVhbSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYnl0ZVN0cmVhbSIgdHlwZT0iamF2YS5pby5PdXRwdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0Q2hhcmFjdGVyU3RyZWFtIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaGFyYWN0ZXJTdHJlYW0iIHR5cGU9ImphdmEuaW8uV3JpdGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVuY29kaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmNvZGluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRTeXN0ZW1JZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3lzdGVtSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJMU1BhcnNlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImFib3J0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFzeW5jIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJ1c3kiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RG9tQ29uZmlnIgorIHJldHVybj0ib3JnLnczYy5kb20uRE9NQ29uZmlndXJhdGlvbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZpbHRlciIKKyByZXR1cm49Im9yZy53M2MuZG9tLmxzLkxTUGFyc2VyRmlsdGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJvcmcudzNjLmRvbS5Eb2N1bWVudCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnB1dCIgdHlwZT0ib3JnLnczYy5kb20ubHMuTFNJbnB1dCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkxTRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5scy5MU0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZVVSSSIKKyByZXR1cm49Im9yZy53M2MuZG9tLkRvY3VtZW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkxTRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5scy5MU0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZVdpdGhDb250ZXh0IgorIHJldHVybj0ib3JnLnczYy5kb20uTm9kZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbnB1dCIgdHlwZT0ib3JnLnczYy5kb20ubHMuTFNJbnB1dCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29udGV4dEFyZyIgdHlwZT0ib3JnLnczYy5kb20uTm9kZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWN0aW9uIiB0eXBlPSJzaG9ydCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iRE9NRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5ET01FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkxTRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5scy5MU0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRGaWx0ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImZpbHRlciIgdHlwZT0ib3JnLnczYy5kb20ubHMuTFNQYXJzZXJGaWx0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJBQ1RJT05fQVBQRU5EX0FTX0NISUxEUkVOIgorIHR5cGU9InNob3J0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFDVElPTl9JTlNFUlRfQUZURVIiCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0lOU0VSVF9CRUZPUkUiCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1JFUExBQ0UiCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX1JFUExBQ0VfQ0hJTERSRU4iCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iTFNQYXJzZXJGaWx0ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJhY2NlcHROb2RlIgorIHJldHVybj0ic2hvcnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibm9kZUFyZyIgdHlwZT0ib3JnLnczYy5kb20uTm9kZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRXaGF0VG9TaG93IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRFbGVtZW50IgorIHJldHVybj0ic2hvcnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZWxlbWVudEFyZyIgdHlwZT0ib3JnLnczYy5kb20uRWxlbWVudCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkZJTFRFUl9BQ0NFUFQiCisgdHlwZT0ic2hvcnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRklMVEVSX0lOVEVSUlVQVCIKKyB0eXBlPSJzaG9ydCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGSUxURVJfUkVKRUNUIgorIHR5cGU9InNob3J0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZJTFRFUl9TS0lQIgorIHR5cGU9InNob3J0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkxTUmVzb3VyY2VSZXNvbHZlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InJlc29sdmVSZXNvdXJjZSIKKyByZXR1cm49Im9yZy53M2MuZG9tLmxzLkxTSW5wdXQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXNwYWNlVVJJIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwdWJsaWNJZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3lzdGVtSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImJhc2VVUkkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJMU1NlcmlhbGl6ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXREb21Db25maWciCisgcmV0dXJuPSJvcmcudzNjLmRvbS5ET01Db25maWd1cmF0aW9uIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmV3TGluZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXROZXdMaW5lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuZXdMaW5lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJub2RlQXJnIiB0eXBlPSJvcmcudzNjLmRvbS5Ob2RlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkZXN0aW5hdGlvbiIgdHlwZT0ib3JnLnczYy5kb20ubHMuTFNPdXRwdXQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkxTRXhjZXB0aW9uIiB0eXBlPSJvcmcudzNjLmRvbS5scy5MU0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvU3RyaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJub2RlQXJnIiB0eXBlPSJvcmcudzNjLmRvbS5Ob2RlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJET01FeGNlcHRpb24iIHR5cGU9Im9yZy53M2MuZG9tLkRPTUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iTFNFeGNlcHRpb24iIHR5cGU9Im9yZy53M2MuZG9tLmxzLkxTRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9IndyaXRlVG9VUkkiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5vZGVBcmciIHR5cGU9Im9yZy53M2MuZG9tLk5vZGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iTFNFeGNlcHRpb24iIHR5cGU9Im9yZy53M2MuZG9tLmxzLkxTRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9Im9yZy54bWwuc2F4IgorPgorPGludGVyZmFjZSBuYW1lPSJBdHRyaWJ1dGVMaXN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRMZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHlwZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFR5cGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkF0dHJpYnV0ZXMiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRJbmRleCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbmRleCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJxTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMZW5ndGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhbE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UU5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHlwZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJxTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVUkkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZhbHVlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJxTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkNvbnRlbnRIYW5kbGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY2hhcmFjdGVycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2giIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZERvY3VtZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmRFbGVtZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZFByZWZpeE1hcHBpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByZWZpeCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaWdub3JhYmxlV2hpdGVzcGFjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2giIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByb2Nlc3NpbmdJbnN0cnVjdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREb2N1bWVudExvY2F0b3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0b3IiIHR5cGU9Im9yZy54bWwuc2F4LkxvY2F0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2tpcHBlZEVudGl0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnREb2N1bWVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRFbGVtZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHMiIHR5cGU9Im9yZy54bWwuc2F4LkF0dHJpYnV0ZXMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0UHJlZml4TWFwcGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlZml4IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iRFRESGFuZGxlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9Im5vdGF0aW9uRGVjbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHVibGljSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN5c3RlbUlkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bnBhcnNlZEVudGl0eURlY2wiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InB1YmxpY0lkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzeXN0ZW1JZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibm90YXRpb25OYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IkRvY3VtZW50SGFuZGxlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY2hhcmFjdGVycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2giIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZERvY3VtZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmRFbGVtZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpZ25vcmFibGVXaGl0ZXNwYWNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJvY2Vzc2luZ0luc3RydWN0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0YXJnZXQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImRhdGEiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERvY3VtZW50TG9jYXRvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRvciIgdHlwZT0ib3JnLnhtbC5zYXguTG9jYXRvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydERvY3VtZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydEVsZW1lbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHMiIHR5cGU9Im9yZy54bWwuc2F4LkF0dHJpYnV0ZUxpc3QiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iRW50aXR5UmVzb2x2ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJyZXNvbHZlRW50aXR5IgorIHJldHVybj0ib3JnLnhtbC5zYXguSW5wdXRTb3VyY2UiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHVibGljSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN5c3RlbUlkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJFcnJvckhhbmRsZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJlcnJvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhQYXJzZUV4Y2VwdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZmF0YWxFcnJvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhQYXJzZUV4Y2VwdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id2FybmluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhQYXJzZUV4Y2VwdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkhhbmRsZXJCYXNlIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLnhtbC5zYXguRFRESGFuZGxlciI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcueG1sLnNheC5Eb2N1bWVudEhhbmRsZXIiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLnhtbC5zYXguRW50aXR5UmVzb2x2ZXIiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLnhtbC5zYXguRXJyb3JIYW5kbGVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJIYW5kbGVyQmFzZSIKKyB0eXBlPSJvcmcueG1sLnNheC5IYW5kbGVyQmFzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjaGFyYWN0ZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2giIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZERvY3VtZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5kRWxlbWVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVycm9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZSIgdHlwZT0ib3JnLnhtbC5zYXguU0FYUGFyc2VFeGNlcHRpb24iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZhdGFsRXJyb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJvcmcueG1sLnNheC5TQVhQYXJzZUV4Y2VwdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaWdub3JhYmxlV2hpdGVzcGFjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJub3RhdGlvbkRlY2wiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwdWJsaWNJZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3lzdGVtSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJvY2Vzc2luZ0luc3RydWN0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNvbHZlRW50aXR5IgorIHJldHVybj0ib3JnLnhtbC5zYXguSW5wdXRTb3VyY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InB1YmxpY0lkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzeXN0ZW1JZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RG9jdW1lbnRMb2NhdG9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRvciIgdHlwZT0ib3JnLnhtbC5zYXguTG9jYXRvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydERvY3VtZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRFbGVtZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cmlidXRlcyIgdHlwZT0ib3JnLnhtbC5zYXguQXR0cmlidXRlTGlzdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5wYXJzZWRFbnRpdHlEZWNsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHVibGljSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN5c3RlbUlkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJub3RhdGlvbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id2FybmluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImUiIHR5cGU9Im9yZy54bWwuc2F4LlNBWFBhcnNlRXhjZXB0aW9uIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJJbnB1dFNvdXJjZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iSW5wdXRTb3VyY2UiCisgdHlwZT0ib3JnLnhtbC5zYXguSW5wdXRTb3VyY2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnB1dFNvdXJjZSIKKyB0eXBlPSJvcmcueG1sLnNheC5JbnB1dFNvdXJjZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN5c3RlbUlkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJJbnB1dFNvdXJjZSIKKyB0eXBlPSJvcmcueG1sLnNheC5JbnB1dFNvdXJjZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ5dGVTdHJlYW0iIHR5cGU9ImphdmEuaW8uSW5wdXRTdHJlYW0iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IklucHV0U291cmNlIgorIHR5cGU9Im9yZy54bWwuc2F4LklucHV0U291cmNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhcmFjdGVyU3RyZWFtIiB0eXBlPSJqYXZhLmlvLlJlYWRlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEJ5dGVTdHJlYW0iCisgcmV0dXJuPSJqYXZhLmlvLklucHV0U3RyZWFtIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENoYXJhY3RlclN0cmVhbSIKKyByZXR1cm49ImphdmEuaW8uUmVhZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVuY29kaW5nIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQdWJsaWNJZCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3lzdGVtSWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEJ5dGVTdHJlYW0iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJieXRlU3RyZWFtIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENoYXJhY3RlclN0cmVhbSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoYXJhY3RlclN0cmVhbSIgdHlwZT0iamF2YS5pby5SZWFkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RW5jb2RpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmNvZGluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQdWJsaWNJZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InB1YmxpY0lkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFN5c3RlbUlkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3lzdGVtSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8aW50ZXJmYWNlIG5hbWU9IkxvY2F0b3IiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJnZXRDb2x1bW5OdW1iZXIiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaW5lTnVtYmVyIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHVibGljSWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3lzdGVtSWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJQYXJzZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9InBhcnNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzb3VyY2UiIHR5cGU9Im9yZy54bWwuc2F4LklucHV0U291cmNlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InN5c3RlbUlkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RFRESGFuZGxlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlciIgdHlwZT0ib3JnLnhtbC5zYXguRFRESGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREb2N1bWVudEhhbmRsZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhhbmRsZXIiIHR5cGU9Im9yZy54bWwuc2F4LkRvY3VtZW50SGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFbnRpdHlSZXNvbHZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icmVzb2x2ZXIiIHR5cGU9Im9yZy54bWwuc2F4LkVudGl0eVJlc29sdmVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVycm9ySGFuZGxlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlciIgdHlwZT0ib3JnLnhtbC5zYXguRXJyb3JIYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldExvY2FsZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxlIiB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iU0FYRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTQVhFeGNlcHRpb24iCisgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU0FYRXhjZXB0aW9uIgorIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNBWEV4Y2VwdGlvbiIKKyB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJqYXZhLmxhbmcuRXhjZXB0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTQVhFeGNlcHRpb24iCisgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZSIgdHlwZT0iamF2YS5sYW5nLkV4Y2VwdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImdldEV4Y2VwdGlvbiIKKyByZXR1cm49ImphdmEubGFuZy5FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiIKKyBleHRlbmRzPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTQVhOb3RSZWNvZ25pemVkRXhjZXB0aW9uIgorIHR5cGU9Im9yZy54bWwuc2F4LlNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTQVhOb3RSZWNvZ25pemVkRXhjZXB0aW9uIgorIHR5cGU9Im9yZy54bWwuc2F4LlNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIgorIGV4dGVuZHM9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNBWE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIKKyB0eXBlPSJvcmcueG1sLnNheC5TQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iCisgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9IlNBWFBhcnNlRXhjZXB0aW9uIgorIGV4dGVuZHM9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IlNBWFBhcnNlRXhjZXB0aW9uIgorIHR5cGU9Im9yZy54bWwuc2F4LlNBWFBhcnNlRXhjZXB0aW9uIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWVzc2FnZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRvciIgdHlwZT0ib3JnLnhtbC5zYXguTG9jYXRvciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU0FYUGFyc2VFeGNlcHRpb24iCisgdHlwZT0ib3JnLnhtbC5zYXguU0FYUGFyc2VFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdG9yIiB0eXBlPSJvcmcueG1sLnNheC5Mb2NhdG9yIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJqYXZhLmxhbmcuRXhjZXB0aW9uIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJTQVhQYXJzZUV4Y2VwdGlvbiIKKyB0eXBlPSJvcmcueG1sLnNheC5TQVhQYXJzZUV4Y2VwdGlvbiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1lc3NhZ2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InB1YmxpY0lkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzeXN0ZW1JZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZU51bWJlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OdW1iZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iU0FYUGFyc2VFeGNlcHRpb24iCisgdHlwZT0ib3JnLnhtbC5zYXguU0FYUGFyc2VFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtZXNzYWdlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwdWJsaWNJZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3lzdGVtSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxpbmVOdW1iZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY29sdW1uTnVtYmVyIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImUiIHR5cGU9ImphdmEubGFuZy5FeGNlcHRpb24iPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDb2x1bW5OdW1iZXIiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGluZU51bWJlciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQdWJsaWNJZCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3lzdGVtSWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJYTUxGaWx0ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLnhtbC5zYXguWE1MUmVhZGVyIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0UGFyZW50IgorIHJldHVybj0ib3JnLnhtbC5zYXguWE1MUmVhZGVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGFyZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYXJlbnQiIHR5cGU9Im9yZy54bWwuc2F4LlhNTFJlYWRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8aW50ZXJmYWNlIG5hbWU9IlhNTFJlYWRlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImdldENvbnRlbnRIYW5kbGVyIgorIHJldHVybj0ib3JnLnhtbC5zYXguQ29udGVudEhhbmRsZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREVERIYW5kbGVyIgorIHJldHVybj0ib3JnLnhtbC5zYXguRFRESGFuZGxlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVudGl0eVJlc29sdmVyIgorIHJldHVybj0ib3JnLnhtbC5zYXguRW50aXR5UmVzb2x2ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFcnJvckhhbmRsZXIiCisgcmV0dXJuPSJvcmcueG1sLnNheC5FcnJvckhhbmRsZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGZWF0dXJlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhOb3RSZWNvZ25pemVkRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhOb3RSZWNvZ25pemVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm9wZXJ0eSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0IiB0eXBlPSJvcmcueG1sLnNheC5JbnB1dFNvdXJjZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzeXN0ZW1JZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbnRlbnRIYW5kbGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJvcmcueG1sLnNheC5Db250ZW50SGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREVERIYW5kbGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJvcmcueG1sLnNheC5EVERIYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEVudGl0eVJlc29sdmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvbHZlciIgdHlwZT0ib3JnLnhtbC5zYXguRW50aXR5UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RXJyb3JIYW5kbGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJvcmcueG1sLnNheC5FcnJvckhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RmVhdHVyZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByb3BlcnR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0ib3JnLnhtbC5zYXguZXh0IgorPgorPGludGVyZmFjZSBuYW1lPSJBdHRyaWJ1dGVzMiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcueG1sLnNheC5BdHRyaWJ1dGVzIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iaXNEZWNsYXJlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0RlY2xhcmVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJxTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0RlY2xhcmVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1NwZWNpZmllZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1NwZWNpZmllZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTcGVjaWZpZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InFOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJBdHRyaWJ1dGVzMkltcGwiCisgZXh0ZW5kcz0ib3JnLnhtbC5zYXguaGVscGVycy5BdHRyaWJ1dGVzSW1wbCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLnhtbC5zYXguZXh0LkF0dHJpYnV0ZXMyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBdHRyaWJ1dGVzMkltcGwiCisgdHlwZT0ib3JnLnhtbC5zYXguZXh0LkF0dHJpYnV0ZXMySW1wbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkF0dHJpYnV0ZXMySW1wbCIKKyB0eXBlPSJvcmcueG1sLnNheC5leHQuQXR0cmlidXRlczJJbXBsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cyIgdHlwZT0ib3JnLnhtbC5zYXguQXR0cmlidXRlcyI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImlzRGVjbGFyZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzRGVjbGFyZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0RlY2xhcmVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTcGVjaWZpZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzU3BlY2lmaWVkIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNTcGVjaWZpZWQiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJxTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREZWNsYXJlZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFNwZWNpZmllZCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJEZWNsSGFuZGxlciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImF0dHJpYnV0ZURlY2wiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibW9kZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVsZW1lbnREZWNsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlbCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZXh0ZXJuYWxFbnRpdHlEZWNsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwdWJsaWNJZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3lzdGVtSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImludGVybmFsRW50aXR5RGVjbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJEZWZhdWx0SGFuZGxlcjIiCisgZXh0ZW5kcz0ib3JnLnhtbC5zYXguaGVscGVycy5EZWZhdWx0SGFuZGxlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLnhtbC5zYXguZXh0LkRlY2xIYW5kbGVyIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy54bWwuc2F4LmV4dC5FbnRpdHlSZXNvbHZlcjIiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLnhtbC5zYXguZXh0LkxleGljYWxIYW5kbGVyIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJEZWZhdWx0SGFuZGxlcjIiCisgdHlwZT0ib3JnLnhtbC5zYXguZXh0LkRlZmF1bHRIYW5kbGVyMiIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhdHRyaWJ1dGVEZWNsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImFOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtb2RlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iY29tbWVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbGVtZW50RGVjbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGVsIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmRDREFUQSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZERURCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZEVudGl0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImV4dGVybmFsRW50aXR5RGVjbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InB1YmxpY0lkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzeXN0ZW1JZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RXh0ZXJuYWxTdWJzZXQiCisgcmV0dXJuPSJvcmcueG1sLnNheC5JbnB1dFNvdXJjZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYmFzZVVSSSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImludGVybmFsRW50aXR5RGVjbCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXNvbHZlRW50aXR5IgorIHJldHVybj0ib3JnLnhtbC5zYXguSW5wdXRTb3VyY2UiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InB1YmxpY0lkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiYXNlVVJJIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzeXN0ZW1JZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0Q0RBVEEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydERURCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InB1YmxpY0lkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzeXN0ZW1JZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRFbnRpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iRW50aXR5UmVzb2x2ZXIyIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy54bWwuc2F4LkVudGl0eVJlc29sdmVyIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0RXh0ZXJuYWxTdWJzZXQiCisgcmV0dXJuPSJvcmcueG1sLnNheC5JbnB1dFNvdXJjZSIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiYXNlVVJJIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzb2x2ZUVudGl0eSIKKyByZXR1cm49Im9yZy54bWwuc2F4LklucHV0U291cmNlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InB1YmxpY0lkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJiYXNlVVJJIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzeXN0ZW1JZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzxpbnRlcmZhY2UgbmFtZT0iTGV4aWNhbEhhbmRsZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJjb21tZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5kQ0RBVEEiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZERURCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5kRW50aXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydENEQVRBIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydERURCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHVibGljSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN5c3RlbUlkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydEVudGl0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgorPGludGVyZmFjZSBuYW1lPSJMb2NhdG9yMiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcueG1sLnNheC5Mb2NhdG9yIj4KKzwvaW1wbGVtZW50cz4KKzxtZXRob2QgbmFtZT0iZ2V0RW5jb2RpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0WE1MVmVyc2lvbiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPC9pbnRlcmZhY2U+Cis8Y2xhc3MgbmFtZT0iTG9jYXRvcjJJbXBsIgorIGV4dGVuZHM9Im9yZy54bWwuc2F4LmhlbHBlcnMuTG9jYXRvckltcGwiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy54bWwuc2F4LmV4dC5Mb2NhdG9yMiI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTG9jYXRvcjJJbXBsIgorIHR5cGU9Im9yZy54bWwuc2F4LmV4dC5Mb2NhdG9yMkltcGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMb2NhdG9yMkltcGwiCisgdHlwZT0ib3JnLnhtbC5zYXguZXh0LkxvY2F0b3IySW1wbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0b3IiIHR5cGU9Im9yZy54bWwuc2F4LkxvY2F0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRFbmNvZGluZyIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0WE1MVmVyc2lvbiIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RW5jb2RpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmNvZGluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRYTUxWZXJzaW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmVyc2lvbiIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9Im9yZy54bWwuc2F4LmhlbHBlcnMiCis+Cis8Y2xhc3MgbmFtZT0iQXR0cmlidXRlTGlzdEltcGwiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcueG1sLnNheC5BdHRyaWJ1dGVMaXN0Ij4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBdHRyaWJ1dGVMaXN0SW1wbCIKKyB0eXBlPSJvcmcueG1sLnNheC5oZWxwZXJzLkF0dHJpYnV0ZUxpc3RJbXBsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXR0cmlidXRlTGlzdEltcGwiCisgdHlwZT0ib3JnLnhtbC5zYXguaGVscGVycy5BdHRyaWJ1dGVMaXN0SW1wbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHMiIHR5cGU9Im9yZy54bWwuc2F4LkF0dHJpYnV0ZUxpc3QiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRBdHRyaWJ1dGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJjbGVhciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHlwZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVtb3ZlQXR0cmlidXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRBdHRyaWJ1dGVMaXN0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cyIgdHlwZT0ib3JnLnhtbC5zYXguQXR0cmlidXRlTGlzdCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJBdHRyaWJ1dGVzSW1wbCIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcueG1sLnNheC5BdHRyaWJ1dGVzIj4KKzwvaW1wbGVtZW50cz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJBdHRyaWJ1dGVzSW1wbCIKKyB0eXBlPSJvcmcueG1sLnNheC5oZWxwZXJzLkF0dHJpYnV0ZXNJbXBsIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iQXR0cmlidXRlc0ltcGwiCisgdHlwZT0ib3JnLnhtbC5zYXguaGVscGVycy5BdHRyaWJ1dGVzSW1wbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHMiIHR5cGU9Im9yZy54bWwuc2F4LkF0dHJpYnV0ZXMiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJhZGRBdHRyaWJ1dGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsZWFyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbmRleCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0SW5kZXgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InFOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExlbmd0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMb2NhbE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFFOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VHlwZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InFOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFVSSSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZhbHVlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJxTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZW1vdmVBdHRyaWJ1dGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEF0dHJpYnV0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0QXR0cmlidXRlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHMiIHR5cGU9Im9yZy54bWwuc2F4LkF0dHJpYnV0ZXMiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TG9jYWxOYW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFFOYW1lIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VHlwZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InR5cGUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0VVJJIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZhbHVlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iRGVmYXVsdEhhbmRsZXIiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLnhtbC5zYXguQ29udGVudEhhbmRsZXIiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLnhtbC5zYXguRFRESGFuZGxlciI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcueG1sLnNheC5FbnRpdHlSZXNvbHZlciI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcueG1sLnNheC5FcnJvckhhbmRsZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRlZmF1bHRIYW5kbGVyIgorIHR5cGU9Im9yZy54bWwuc2F4LmhlbHBlcnMuRGVmYXVsdEhhbmRsZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2hhcmFjdGVycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmREb2N1bWVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZEVsZW1lbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZFByZWZpeE1hcHBpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmaXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVycm9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZSIgdHlwZT0ib3JnLnhtbC5zYXguU0FYUGFyc2VFeGNlcHRpb24iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZhdGFsRXJyb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJvcmcueG1sLnNheC5TQVhQYXJzZUV4Y2VwdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaWdub3JhYmxlV2hpdGVzcGFjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJub3RhdGlvbkRlY2wiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwdWJsaWNJZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3lzdGVtSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByb2Nlc3NpbmdJbnN0cnVjdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzb2x2ZUVudGl0eSIKKyByZXR1cm49Im9yZy54bWwuc2F4LklucHV0U291cmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwdWJsaWNJZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3lzdGVtSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREb2N1bWVudExvY2F0b3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdG9yIiB0eXBlPSJvcmcueG1sLnNheC5Mb2NhdG9yIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNraXBwZWRFbnRpdHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydERvY3VtZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRFbGVtZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InFOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJhdHRyaWJ1dGVzIiB0eXBlPSJvcmcueG1sLnNheC5BdHRyaWJ1dGVzIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydFByZWZpeE1hcHBpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmaXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idW5wYXJzZWRFbnRpdHlEZWNsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icHVibGljSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN5c3RlbUlkIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJub3RhdGlvbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Indhcm5pbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJvcmcueG1sLnNheC5TQVhQYXJzZUV4Y2VwdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTG9jYXRvckltcGwiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLnhtbC5zYXguTG9jYXRvciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iTG9jYXRvckltcGwiCisgdHlwZT0ib3JnLnhtbC5zYXguaGVscGVycy5Mb2NhdG9ySW1wbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkxvY2F0b3JJbXBsIgorIHR5cGU9Im9yZy54bWwuc2F4LmhlbHBlcnMuTG9jYXRvckltcGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdG9yIiB0eXBlPSJvcmcueG1sLnNheC5Mb2NhdG9yIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sdW1uTnVtYmVyIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExpbmVOdW1iZXIiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHVibGljSWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN5c3RlbUlkIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb2x1bW5OdW1iZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjb2x1bW5OdW1iZXIiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRMaW5lTnVtYmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibGluZU51bWJlciIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFB1YmxpY0lkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHVibGljSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3lzdGVtSWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzeXN0ZW1JZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJOYW1lc3BhY2VTdXBwb3J0IgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJOYW1lc3BhY2VTdXBwb3J0IgorIHR5cGU9Im9yZy54bWwuc2F4LmhlbHBlcnMuTmFtZXNwYWNlU3VwcG9ydCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJkZWNsYXJlUHJlZml4IgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlZml4IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVjbGFyZWRQcmVmaXhlcyIKKyByZXR1cm49ImphdmEudXRpbC5FbnVtZXJhdGlvbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcmVmaXgiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJlZml4ZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuRW51bWVyYXRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJlZml4ZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuRW51bWVyYXRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRVUkkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmaXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNOYW1lc3BhY2VEZWNsVXJpcyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icG9wQ29udGV4dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJvY2Vzc05hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InFOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXJ0cyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZ1tdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpc0F0dHJpYnV0ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwdXNoQ29udGV4dCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzZXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE5hbWVzcGFjZURlY2xVcmlzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idmFsdWUiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxmaWVsZCBuYW1lPSJOU0RFQ0wiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cDovL3d3dy53My5vcmcveG1sbnMvMjAwMC8mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iWE1MTlMiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cDovL3d3dy53My5vcmcvWE1MLzE5OTgvbmFtZXNwYWNlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJQYXJzZXJBZGFwdGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy54bWwuc2F4LkRvY3VtZW50SGFuZGxlciI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcueG1sLnNheC5YTUxSZWFkZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBhcnNlckFkYXB0ZXIiCisgdHlwZT0ib3JnLnhtbC5zYXguaGVscGVycy5QYXJzZXJBZGFwdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IlBhcnNlckFkYXB0ZXIiCisgdHlwZT0ib3JnLnhtbC5zYXguaGVscGVycy5QYXJzZXJBZGFwdGVyIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyc2VyIiB0eXBlPSJvcmcueG1sLnNheC5QYXJzZXIiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJjaGFyYWN0ZXJzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2giIHR5cGU9ImNoYXJbXSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhcnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGVuZ3RoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZERvY3VtZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5kRWxlbWVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InFOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDb250ZW50SGFuZGxlciIKKyByZXR1cm49Im9yZy54bWwuc2F4LkNvbnRlbnRIYW5kbGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldERUREhhbmRsZXIiCisgcmV0dXJuPSJvcmcueG1sLnNheC5EVERIYW5kbGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVudGl0eVJlc29sdmVyIgorIHJldHVybj0ib3JnLnhtbC5zYXguRW50aXR5UmVzb2x2ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RXJyb3JIYW5kbGVyIgorIHJldHVybj0ib3JnLnhtbC5zYXguRXJyb3JIYW5kbGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZlYXR1cmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhOb3RSZWNvZ25pemVkRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhOb3RSZWNvZ25pemVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm9wZXJ0eSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imlnbm9yYWJsZVdoaXRlc3BhY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzeXN0ZW1JZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9Im9yZy54bWwuc2F4LklucHV0U291cmNlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJvY2Vzc2luZ0luc3RydWN0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb250ZW50SGFuZGxlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhhbmRsZXIiIHR5cGU9Im9yZy54bWwuc2F4LkNvbnRlbnRIYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERUREhhbmRsZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJvcmcueG1sLnNheC5EVERIYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERvY3VtZW50TG9jYXRvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0b3IiIHR5cGU9Im9yZy54bWwuc2F4LkxvY2F0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RW50aXR5UmVzb2x2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvbHZlciIgdHlwZT0ib3JnLnhtbC5zYXguRW50aXR5UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RXJyb3JIYW5kbGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlciIgdHlwZT0ib3JnLnhtbC5zYXguRXJyb3JIYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZlYXR1cmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UHJvcGVydHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnREb2N1bWVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0RWxlbWVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InFOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxQXR0cyIgdHlwZT0ib3JnLnhtbC5zYXguQXR0cmlidXRlTGlzdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iUGFyc2VyRmFjdG9yeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0ibWFrZVBhcnNlciIKKyByZXR1cm49Im9yZy54bWwuc2F4LlBhcnNlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJDbGFzc0Nhc3RFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5DbGFzc0Nhc3RFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IkNsYXNzTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5DbGFzc05vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFjY2Vzc0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSW5zdGFudGlhdGlvbkV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkluc3RhbnRpYXRpb25FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9Ik51bGxQb2ludGVyRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuTnVsbFBvaW50ZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibWFrZVBhcnNlciIKKyByZXR1cm49Im9yZy54bWwuc2F4LlBhcnNlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbGFzc05hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IkNsYXNzQ2FzdEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkNsYXNzQ2FzdEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLkNsYXNzTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBY2Nlc3NFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQWNjZXNzRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbnN0YW50aWF0aW9uRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSW5zdGFudGlhdGlvbkV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJYTUxGaWx0ZXJJbXBsIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy54bWwuc2F4LkNvbnRlbnRIYW5kbGVyIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy54bWwuc2F4LkRUREhhbmRsZXIiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLnhtbC5zYXguRW50aXR5UmVzb2x2ZXIiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLnhtbC5zYXguRXJyb3JIYW5kbGVyIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy54bWwuc2F4LlhNTEZpbHRlciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iWE1MRmlsdGVySW1wbCIKKyB0eXBlPSJvcmcueG1sLnNheC5oZWxwZXJzLlhNTEZpbHRlckltcGwiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJYTUxGaWx0ZXJJbXBsIgorIHR5cGU9Im9yZy54bWwuc2F4LmhlbHBlcnMuWE1MRmlsdGVySW1wbCIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmVudCIgdHlwZT0ib3JnLnhtbC5zYXguWE1MUmVhZGVyIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iY2hhcmFjdGVycyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmREb2N1bWVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZEVsZW1lbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVuZFByZWZpeE1hcHBpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmaXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVycm9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZSIgdHlwZT0ib3JnLnhtbC5zYXguU0FYUGFyc2VFeGNlcHRpb24iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZhdGFsRXJyb3IiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlIiB0eXBlPSJvcmcueG1sLnNheC5TQVhQYXJzZUV4Y2VwdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29udGVudEhhbmRsZXIiCisgcmV0dXJuPSJvcmcueG1sLnNheC5Db250ZW50SGFuZGxlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREVERIYW5kbGVyIgorIHJldHVybj0ib3JnLnhtbC5zYXguRFRESGFuZGxlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFbnRpdHlSZXNvbHZlciIKKyByZXR1cm49Im9yZy54bWwuc2F4LkVudGl0eVJlc29sdmVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEVycm9ySGFuZGxlciIKKyByZXR1cm49Im9yZy54bWwuc2F4LkVycm9ySGFuZGxlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGZWF0dXJlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UGFyZW50IgorIHJldHVybj0ib3JnLnhtbC5zYXguWE1MUmVhZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb3BlcnR5IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaWdub3JhYmxlV2hpdGVzcGFjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNoIiB0eXBlPSJjaGFyW10iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXJ0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxlbmd0aCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJub3RhdGlvbkRlY2wiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwdWJsaWNJZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3lzdGVtSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9Im9yZy54bWwuc2F4LklucHV0U291cmNlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzeXN0ZW1JZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByb2Nlc3NpbmdJbnN0cnVjdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRhcmdldCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZGF0YSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVzb2x2ZUVudGl0eSIKKyByZXR1cm49Im9yZy54bWwuc2F4LklucHV0U291cmNlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwdWJsaWNJZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3lzdGVtSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRDb250ZW50SGFuZGxlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhhbmRsZXIiIHR5cGU9Im9yZy54bWwuc2F4LkNvbnRlbnRIYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERUREhhbmRsZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJvcmcueG1sLnNheC5EVERIYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldERvY3VtZW50TG9jYXRvciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2F0b3IiIHR5cGU9Im9yZy54bWwuc2F4LkxvY2F0b3IiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RW50aXR5UmVzb2x2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvbHZlciIgdHlwZT0ib3JnLnhtbC5zYXguRW50aXR5UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RXJyb3JIYW5kbGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlciIgdHlwZT0ib3JnLnhtbC5zYXguRXJyb3JIYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZlYXR1cmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UGFyZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyZW50IiB0eXBlPSJvcmcueG1sLnNheC5YTUxSZWFkZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UHJvcGVydHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2tpcHBlZEVudGl0eSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0RG9jdW1lbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydEVsZW1lbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0icU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImF0dHMiIHR5cGU9Im9yZy54bWwuc2F4LkF0dHJpYnV0ZXMiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0UHJlZml4TWFwcGluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByZWZpeCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ1bnBhcnNlZEVudGl0eURlY2wiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwdWJsaWNJZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3lzdGVtSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5vdGF0aW9uTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0id2FybmluZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImUiIHR5cGU9Im9yZy54bWwuc2F4LlNBWFBhcnNlRXhjZXB0aW9uIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJYTUxSZWFkZXJBZGFwdGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy54bWwuc2F4LkNvbnRlbnRIYW5kbGVyIj4KKzwvaW1wbGVtZW50cz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy54bWwuc2F4LlBhcnNlciI+Cis8L2ltcGxlbWVudHM+Cis8Y29uc3RydWN0b3IgbmFtZT0iWE1MUmVhZGVyQWRhcHRlciIKKyB0eXBlPSJvcmcueG1sLnNheC5oZWxwZXJzLlhNTFJlYWRlckFkYXB0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvY29uc3RydWN0b3I+Cis8Y29uc3RydWN0b3IgbmFtZT0iWE1MUmVhZGVyQWRhcHRlciIKKyB0eXBlPSJvcmcueG1sLnNheC5oZWxwZXJzLlhNTFJlYWRlckFkYXB0ZXIiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ4bWxSZWFkZXIiIHR5cGU9Im9yZy54bWwuc2F4LlhNTFJlYWRlciI+Cis8L3BhcmFtZXRlcj4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNoYXJhY3RlcnMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5kRG9jdW1lbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmRFbGVtZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idXJpIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InFOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmRQcmVmaXhNYXBwaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlZml4IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Imlnbm9yYWJsZVdoaXRlc3BhY2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjaCIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW5ndGgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icGFyc2UiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzeXN0ZW1JZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5wdXQiIHR5cGU9Im9yZy54bWwuc2F4LklucHV0U291cmNlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icHJvY2Vzc2luZ0luc3RydWN0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGFyZ2V0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJkYXRhIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREVERIYW5kbGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlciIgdHlwZT0ib3JnLnhtbC5zYXguRFRESGFuZGxlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXREb2N1bWVudEhhbmRsZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJvcmcueG1sLnNheC5Eb2N1bWVudEhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RG9jdW1lbnRMb2NhdG9yIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYXRvciIgdHlwZT0ib3JnLnhtbC5zYXguTG9jYXRvciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFbnRpdHlSZXNvbHZlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InJlc29sdmVyIiB0eXBlPSJvcmcueG1sLnNheC5FbnRpdHlSZXNvbHZlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRFcnJvckhhbmRsZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJoYW5kbGVyIiB0eXBlPSJvcmcueG1sLnNheC5FcnJvckhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0TG9jYWxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxlIiB0eXBlPSJqYXZhLnV0aWwuTG9jYWxlIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJza2lwcGVkRW50aXR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnREb2N1bWVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN0YXJ0RWxlbWVudCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJxTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYXR0cyIgdHlwZT0ib3JnLnhtbC5zYXguQXR0cmlidXRlcyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRQcmVmaXhNYXBwaW5nIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icHJlZml4IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iWE1MUmVhZGVyRmFjdG9yeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iY3JlYXRlWE1MUmVhZGVyIgorIHJldHVybj0ib3JnLnhtbC5zYXguWE1MUmVhZGVyIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNyZWF0ZVhNTFJlYWRlciIKKyByZXR1cm49Im9yZy54bWwuc2F4LlhNTFJlYWRlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbGFzc05hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPC9wYWNrYWdlPgorPHBhY2thZ2UgbmFtZT0ib3JnLnhtbHB1bGwudjEiCis+Cis8aW50ZXJmYWNlIG5hbWU9IlhtbFB1bGxQYXJzZXIiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJkZWZpbmVFbnRpdHlSZXBsYWNlbWVudFRleHQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImVudGl0eU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InJlcGxhY2VtZW50VGV4dCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdHRyaWJ1dGVDb3VudCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF0dHJpYnV0ZU5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXR0cmlidXRlTmFtZXNwYWNlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF0dHJpYnV0ZVByZWZpeCIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBdHRyaWJ1dGVUeXBlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF0dHJpYnV0ZVZhbHVlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEF0dHJpYnV0ZVZhbHVlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lc3BhY2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sdW1uTnVtYmVyIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGVwdGgiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFdmVudFR5cGUiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRGZWF0dXJlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldElucHV0RW5jb2RpbmciCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGluZU51bWJlciIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZXNwYWNlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcmVmaXgiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZXNwYWNlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldE5hbWVzcGFjZUNvdW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlcHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlhtbFB1bGxQYXJzZXJFeGNlcHRpb24iIHR5cGU9Im9yZy54bWxwdWxsLnYxLlhtbFB1bGxQYXJzZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZXNwYWNlUHJlZml4IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwb3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lc3BhY2VVcmkiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBvcyIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJYbWxQdWxsUGFyc2VyRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1scHVsbC52MS5YbWxQdWxsUGFyc2VyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFBvc2l0aW9uRGVzY3JpcHRpb24iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJlZml4IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFByb3BlcnR5IgorIHJldHVybj0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFRleHQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGV4dENoYXJhY3RlcnMiCisgcmV0dXJuPSJjaGFyW10iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9sZGVyRm9yU3RhcnRBbmRMZW5ndGgiIHR5cGU9ImludFtdIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzQXR0cmlidXRlRGVmYXVsdCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc0VtcHR5RWxlbWVudFRhZyIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJpc1doaXRlc3BhY2UiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlhtbFB1bGxQYXJzZXJFeGNlcHRpb24iIHR5cGU9Im9yZy54bWxwdWxsLnYxLlhtbFB1bGxQYXJzZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV4dCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0VGFnIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJYbWxQdWxsUGFyc2VyRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1scHVsbC52MS5YbWxQdWxsUGFyc2VyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im5leHRUZXh0IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXh0VG9rZW4iCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlhtbFB1bGxQYXJzZXJFeGNlcHRpb24iIHR5cGU9Im9yZy54bWxwdWxsLnYxLlhtbFB1bGxQYXJzZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVxdWlyZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lc3BhY2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJYbWxQdWxsUGFyc2VyRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1scHVsbC52MS5YbWxQdWxsUGFyc2VyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZlYXR1cmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJYbWxQdWxsUGFyc2VyRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1scHVsbC52MS5YbWxQdWxsUGFyc2VyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldElucHV0IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbiIgdHlwZT0iamF2YS5pby5SZWFkZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlhtbFB1bGxQYXJzZXJFeGNlcHRpb24iIHR5cGU9Im9yZy54bWxwdWxsLnYxLlhtbFB1bGxQYXJzZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0SW5wdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImlucHV0U3RyZWFtIiB0eXBlPSJqYXZhLmlvLklucHV0U3RyZWFtIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnB1dEVuY29kaW5nIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJYbWxQdWxsUGFyc2VyRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1scHVsbC52MS5YbWxQdWxsUGFyc2VyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFByb3BlcnR5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlckV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNEU0VDVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQ09NTUVOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRE9DREVDTCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkVORF9ET0NVTUVOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRU5EX1RBRyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRU5USVRZX1JFRiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkVBVFVSRV9QUk9DRVNTX0RPQ0RFQ0wiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cDovL3htbHB1bGwub3JnL3YxL2RvYy9mZWF0dXJlcy5odG1sI3Byb2Nlc3MtZG9jZGVjbCZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGRUFUVVJFX1BST0NFU1NfTkFNRVNQQUNFUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwOi8veG1scHVsbC5vcmcvdjEvZG9jL2ZlYXR1cmVzLmh0bWwjcHJvY2Vzcy1uYW1lc3BhY2VzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZFQVRVUkVfUkVQT1JUX05BTUVTUEFDRV9BVFRSSUJVVEVTIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHA6Ly94bWxwdWxsLm9yZy92MS9kb2MvZmVhdHVyZXMuaHRtbCNyZXBvcnQtbmFtZXNwYWNlLXByZWZpeGVzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZFQVRVUkVfVkFMSURBVElPTiIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwOi8veG1scHVsbC5vcmcvdjEvZG9jL2ZlYXR1cmVzLmh0bWwjdmFsaWRhdGlvbiZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJR05PUkFCTEVfV0hJVEVTUEFDRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTk9fTkFNRVNQQUNFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90OyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQUk9DRVNTSU5HX0lOU1RSVUNUSU9OIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJTVEFSVF9ET0NVTUVOVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU1RBUlRfVEFHIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJURVhUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJUWVBFUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nW10iCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Im51bGwiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8L2ludGVyZmFjZT4KKzxjbGFzcyBuYW1lPSJYbWxQdWxsUGFyc2VyRXhjZXB0aW9uIgorIGV4dGVuZHM9ImphdmEubGFuZy5FeGNlcHRpb24iCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJYbWxQdWxsUGFyc2VyRXhjZXB0aW9uIgorIHR5cGU9Im9yZy54bWxwdWxsLnYxLlhtbFB1bGxQYXJzZXJFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9jb25zdHJ1Y3Rvcj4KKzxjb25zdHJ1Y3RvciBuYW1lPSJYbWxQdWxsUGFyc2VyRXhjZXB0aW9uIgorIHR5cGU9Im9yZy54bWxwdWxsLnYxLlhtbFB1bGxQYXJzZXJFeGNlcHRpb24iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJtc2ciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcnNlciIgdHlwZT0ib3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY2hhaW4iIHR5cGU9ImphdmEubGFuZy5UaHJvd2FibGUiPgorPC9wYXJhbWV0ZXI+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRDb2x1bW5OdW1iZXIiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RGV0YWlsIgorIHJldHVybj0iamF2YS5sYW5nLlRocm93YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRMaW5lTnVtYmVyIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iY29sdW1uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImRldGFpbCIKKyB0eXBlPSJqYXZhLmxhbmcuVGhyb3dhYmxlIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icm93IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJYbWxQdWxsUGFyc2VyRmFjdG9yeSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8Y29uc3RydWN0b3IgbmFtZT0iWG1sUHVsbFBhcnNlckZhY3RvcnkiCisgdHlwZT0ib3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlckZhY3RvcnkiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0RmVhdHVyZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNOYW1lc3BhY2VBd2FyZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNWYWxpZGF0aW5nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJuZXdJbnN0YW5jZSIKKyByZXR1cm49Im9yZy54bWxwdWxsLnYxLlhtbFB1bGxQYXJzZXJGYWN0b3J5IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlhtbFB1bGxQYXJzZXJFeGNlcHRpb24iIHR5cGU9Im9yZy54bWxwdWxsLnYxLlhtbFB1bGxQYXJzZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3SW5zdGFuY2UiCisgcmV0dXJuPSJvcmcueG1scHVsbC52MS5YbWxQdWxsUGFyc2VyRmFjdG9yeSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjbGFzc05hbWVzIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjb250ZXh0IiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3MiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlhtbFB1bGxQYXJzZXJFeGNlcHRpb24iIHR5cGU9Im9yZy54bWxwdWxsLnYxLlhtbFB1bGxQYXJzZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3UHVsbFBhcnNlciIKKyByZXR1cm49Im9yZy54bWxwdWxsLnYxLlhtbFB1bGxQYXJzZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlhtbFB1bGxQYXJzZXJFeGNlcHRpb24iIHR5cGU9Im9yZy54bWxwdWxsLnYxLlhtbFB1bGxQYXJzZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibmV3U2VyaWFsaXplciIKKyByZXR1cm49Im9yZy54bWxwdWxsLnYxLlhtbFNlcmlhbGl6ZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlhtbFB1bGxQYXJzZXJFeGNlcHRpb24iIHR5cGU9Im9yZy54bWxwdWxsLnYxLlhtbFB1bGxQYXJzZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RmVhdHVyZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJYbWxQdWxsUGFyc2VyRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1scHVsbC52MS5YbWxQdWxsUGFyc2VyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldE5hbWVzcGFjZUF3YXJlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYXdhcmVuZXNzIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldFZhbGlkYXRpbmciCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWxpZGF0aW5nIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iUFJPUEVSVFlfTkFNRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtvcmcueG1scHVsbC52MS5YbWxQdWxsUGFyc2VyRmFjdG9yeSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJjbGFzc05hbWVzTG9jYXRpb24iCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImZlYXR1cmVzIgorIHR5cGU9ImphdmEudXRpbC5IYXNoTWFwIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icGFyc2VyQ2xhc3NlcyIKKyB0eXBlPSJqYXZhLnV0aWwuQXJyYXlMaXN0IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ic2VyaWFsaXplckNsYXNzZXMiCisgdHlwZT0iamF2YS51dGlsLkFycmF5TGlzdCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KKzxpbnRlcmZhY2UgbmFtZT0iWG1sU2VyaWFsaXplciIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8bWV0aG9kIG5hbWU9ImF0dHJpYnV0ZSIKKyByZXR1cm49Im9yZy54bWxwdWxsLnYxLlhtbFNlcmlhbGl6ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXNwYWNlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNkc2VjdCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNvbW1lbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InRleHQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJkb2NkZWNsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ0ZXh0IiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZW5kRG9jdW1lbnQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJlbmRUYWciCisgcmV0dXJuPSJvcmcueG1scHVsbC52MS5YbWxTZXJpYWxpemVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWVzcGFjZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImVudGl0eVJlZiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImZsdXNoIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXREZXB0aCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZlYXR1cmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXROYW1lc3BhY2UiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJlZml4IgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lc3BhY2UiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImdlbmVyYXRlUHJlZml4IiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0UHJvcGVydHkiCisgcmV0dXJuPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaWdub3JhYmxlV2hpdGVzcGFjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InByb2Nlc3NpbmdJbnN0cnVjdGlvbiIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZlYXR1cmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0YXRlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPdXRwdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im9zIiB0eXBlPSJqYXZhLmlvLk91dHB1dFN0cmVhbSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5jb2RpbmciIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRPdXRwdXQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9IndyaXRlciIgdHlwZT0iamF2YS5pby5Xcml0ZXIiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQcmVmaXgiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByZWZpeCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXNwYWNlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UHJvcGVydHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InZhbHVlIiB0eXBlPSJqYXZhLmxhbmcuT2JqZWN0Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydERvY3VtZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJlbmNvZGluZyIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhbmRhbG9uZSIgdHlwZT0iamF2YS5sYW5nLkJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxTdGF0ZUV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdGFydFRhZyIKKyByZXR1cm49Im9yZy54bWxwdWxsLnYxLlhtbFNlcmlhbGl6ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXNwYWNlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJJT0V4Y2VwdGlvbiIgdHlwZT0iamF2YS5pby5JT0V4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJJbGxlZ2FsU3RhdGVFeGNlcHRpb24iIHR5cGU9ImphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0idGV4dCIKKyByZXR1cm49Im9yZy54bWxwdWxsLnYxLlhtbFNlcmlhbGl6ZXIiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idGV4dCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRleHQiCisgcmV0dXJuPSJvcmcueG1scHVsbC52MS5YbWxTZXJpYWxpemVyIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImJ1ZiIgdHlwZT0iY2hhcltdIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJzdGFydCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsZW4iIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIgdHlwZT0iamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8L2ludGVyZmFjZT4KKzwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9Im9yZy54bWxwdWxsLnYxLnNheDIiCis+Cis8Y2xhc3MgbmFtZT0iRHJpdmVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9Im9yZy54bWwuc2F4LkF0dHJpYnV0ZXMiPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0ib3JnLnhtbC5zYXguTG9jYXRvciI+Cis8L2ltcGxlbWVudHM+Cis8aW1wbGVtZW50cyBuYW1lPSJvcmcueG1sLnNheC5YTUxSZWFkZXIiPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRyaXZlciIKKyB0eXBlPSJvcmcueG1scHVsbC52MS5zYXgyLkRyaXZlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8ZXhjZXB0aW9uIG5hbWU9IlhtbFB1bGxQYXJzZXJFeGNlcHRpb24iIHR5cGU9Im9yZy54bWxwdWxsLnYxLlhtbFB1bGxQYXJzZXJFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L2NvbnN0cnVjdG9yPgorPGNvbnN0cnVjdG9yIG5hbWU9IkRyaXZlciIKKyB0eXBlPSJvcmcueG1scHVsbC52MS5zYXgyLkRyaXZlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBwIiB0eXBlPSJvcmcueG1scHVsbC52MS5YbWxQdWxsUGFyc2VyIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJYbWxQdWxsUGFyc2VyRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1scHVsbC52MS5YbWxQdWxsUGFyc2VyRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0Q29sdW1uTnVtYmVyIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldENvbnRlbnRIYW5kbGVyIgorIHJldHVybj0ib3JnLnhtbC5zYXguQ29udGVudEhhbmRsZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RFRESGFuZGxlciIKKyByZXR1cm49Im9yZy54bWwuc2F4LkRUREhhbmRsZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RW50aXR5UmVzb2x2ZXIiCisgcmV0dXJuPSJvcmcueG1sLnNheC5FbnRpdHlSZXNvbHZlciIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRFcnJvckhhbmRsZXIiCisgcmV0dXJuPSJvcmcueG1sLnNheC5FcnJvckhhbmRsZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0RmVhdHVyZSIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEluZGV4IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRJbmRleCIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TGVuZ3RoIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldExpbmVOdW1iZXIiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9jYWxOYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRQcm9wZXJ0eSIKKyByZXR1cm49ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWE5vdFJlY29nbml6ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWE5vdFN1cHBvcnRlZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFB1YmxpY0lkIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRRTmFtZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0U3lzdGVtSWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFR5cGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJpbmRleCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFR5cGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRUeXBlIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icU5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VVJJIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5kZXgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZGV4IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1cmkiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvY2FsTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InFOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic291cmNlIiB0eXBlPSJvcmcueG1sLnNheC5JbnB1dFNvdXJjZSI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InBhcnNlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3lzdGVtSWQiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJwYXJzZVN1YlRyZWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcCIgdHlwZT0ib3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlciI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iSU9FeGNlcHRpb24iIHR5cGU9ImphdmEuaW8uSU9FeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8ZXhjZXB0aW9uIG5hbWU9IlNBWEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldENvbnRlbnRIYW5kbGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlciIgdHlwZT0ib3JnLnhtbC5zYXguQ29udGVudEhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RFRESGFuZGxlciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImhhbmRsZXIiIHR5cGU9Im9yZy54bWwuc2F4LkRUREhhbmRsZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RW50aXR5UmVzb2x2ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJyZXNvbHZlciIgdHlwZT0ib3JnLnhtbC5zYXguRW50aXR5UmVzb2x2ZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0RXJyb3JIYW5kbGVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaGFuZGxlciIgdHlwZT0ib3JnLnhtbC5zYXguRXJyb3JIYW5kbGVyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEZlYXR1cmUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iYm9vbGVhbiI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0UHJvcGVydHkiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJuYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLk9iamVjdCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiIgdHlwZT0ib3JnLnhtbC5zYXguU0FYTm90UmVjb2duaXplZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzxleGNlcHRpb24gbmFtZT0iU0FYTm90U3VwcG9ydGVkRXhjZXB0aW9uIiB0eXBlPSJvcmcueG1sLnNheC5TQVhOb3RTdXBwb3J0ZWRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic3RhcnRFbGVtZW50IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibmFtZXNwYWNlIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhbE5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InFOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJTQVhFeGNlcHRpb24iIHR5cGU9Im9yZy54bWwuc2F4LlNBWEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkFQQUNIRV9EWU5BTUlDX1ZBTElEQVRJT05fRkVBVFVSRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtodHRwOi8vYXBhY2hlLm9yZy94bWwvZmVhdHVyZXMvdmFsaWRhdGlvbi9keW5hbWljJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkFQQUNIRV9TQ0hFTUFfVkFMSURBVElPTl9GRUFUVVJFIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHA6Ly9hcGFjaGUub3JnL3htbC9mZWF0dXJlcy92YWxpZGF0aW9uL3NjaGVtYSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJERUNMQVJBVElPTl9IQU5ETEVSX1BST1BFUlRZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHA6Ly94bWwub3JnL3NheC9wcm9wZXJ0aWVzL2RlY2xhcmF0aW9uLWhhbmRsZXImcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTEVYSUNBTF9IQU5ETEVSX1BST1BFUlRZIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IiZxdW90O2h0dHA6Ly94bWwub3JnL3NheC9wcm9wZXJ0aWVzL2xleGljYWwtaGFuZGxlciZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJOQU1FU1BBQ0VTX0ZFQVRVUkUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cDovL3htbC5vcmcvc2F4L2ZlYXR1cmVzL25hbWVzcGFjZXMmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTkFNRVNQQUNFX1BSRUZJWEVTX0ZFQVRVUkUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cDovL3htbC5vcmcvc2F4L2ZlYXR1cmVzL25hbWVzcGFjZS1wcmVmaXhlcyZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJWQUxJREFUSU9OX0ZFQVRVUkUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7aHR0cDovL3htbC5vcmcvc2F4L2ZlYXR1cmVzL3ZhbGlkYXRpb24mcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iY29udGVudEhhbmRsZXIiCisgdHlwZT0ib3JnLnhtbC5zYXguQ29udGVudEhhbmRsZXIiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJlcnJvckhhbmRsZXIiCisgdHlwZT0ib3JnLnhtbC5zYXguRXJyb3JIYW5kbGVyIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InByb3RlY3RlZCIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHAiCisgdHlwZT0ib3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlciIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwcm90ZWN0ZWQiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InN5c3RlbUlkIgorIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHJvdGVjdGVkIgorPgorPC9maWVsZD4KKzwvY2xhc3M+Cis8L3BhY2thZ2U+Cis8L2FwaT4KZGlmZiAtLWdpdCBhL2FwaS9jdXJyZW50LnhtbCBiL2FwaS9jdXJyZW50LnhtbAppbmRleCA5ZDI1OWYzLi5lNjZiMmU3IDEwMDY0NAotLS0gYS9hcGkvY3VycmVudC54bWwKKysrIGIvYXBpL2N1cnJlbnQueG1sCkBAIC0xNTU5LDYgKzE1NTksMjI2IEBACiAgdmlzaWJpbGl0eT0icHVibGljIgogPgogPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3NDMyNjA4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxMCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3NDMyNTk5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxMSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3NDMyNTk4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3NDMyNTk3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxMyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3NDMyNTk2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxNCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3NDMyNTk1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxNSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3NDMyNTk0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxNiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3NDMyNTkzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxNyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3NDMyNTkyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxOCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3NDMyNTkxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxOSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3NDMyNTkwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTc0MzI2MDciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDIwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTc0MzI1ODkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzQzMjYwNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3NDMyNjA1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ1IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTc0MzI2MDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzQzMjYwMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3NDMyNjAyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ4IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTc0MzI2MDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzQzMjYwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KIDxmaWVsZCBuYW1lPSJsaW5lYXJfaW50ZXJwb2xhdG9yIgogIHR5cGU9ImludCIKICB0cmFuc2llbnQ9ImZhbHNlIgpAQCAtMTY0Miw2ICsxODYyLDEzOCBAQAogIHZpc2liaWxpdHk9InB1YmxpYyIKID4KIDwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzIzNTk4NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzIzNTk3NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzIzNTk3NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzIzNTk3MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MjM1OTgzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcyMzU5ODIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzIzNTk4MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MjM1OTgwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ2IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcyMzU5NzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzIzNTk3OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkOCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MjM1OTc3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcyMzU5NzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+CiA8ZmllbGQgbmFtZT0ib3JnYW5pemF0aW9uVHlwZXMiCiAgdHlwZT0iaW50IgogIHRyYW5zaWVudD0iZmFsc2UiCkBAIC00MTU2LDYgKzQ1MDgsMTcgQEAKICB2aXNpYmlsaXR5PSJwdWJsaWMiCiA+CiA8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImhlYXZ5V2VpZ2h0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0NTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+CiA8ZmllbGQgbmFtZT0iaGVpZ2h0IgogIHR5cGU9ImludCIKICB0cmFuc2llbnQ9ImZhbHNlIgpAQCAtNDM1NCw2ICs0NzE3LDE3IEBACiAgdmlzaWJpbGl0eT0icHVibGljIgogPgogPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJpbW1lcnNpdmUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQ1NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KIDxmaWVsZCBuYW1lPSJpbkFuaW1hdGlvbiIKICB0eXBlPSJpbnQiCiAgdHJhbnNpZW50PSJmYWxzZSIKQEAgLTQ4OTMsNiArNTI2Nyw2OTkgQEAKICB2aXNpYmlsaXR5PSJwdWJsaWMiCiA+CiA8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM1MjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDEwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM1MTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDExIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM1MTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDEyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM1MDkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDEzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM1MDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDE0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM1MDciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDE1IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM1MDYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDE2IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM1MDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDE3IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM1MDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDE4IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM1MDMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDE5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM1MDIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzUxOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMjAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzUwMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMjEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzUwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMjIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQ5OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMjMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQ5OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMjQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQ5NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMjUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQ5NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMjYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQ5NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMjciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQ5NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMjgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQ5MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMjkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQ5MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNTE4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQzMCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDkxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQzMSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDkwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQzMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDg5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQzMyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDg4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQzNCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDg3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQzNSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDg2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQzNiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDg1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQzNyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDg0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQzOCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDgzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQzOSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDgyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM1MTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDQwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0ODEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDQxIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0ODAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDQyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0NzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDQzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0NzgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDQ0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0NzciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDQ1IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0NzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDQ2IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0NzUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDQ3IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0NzQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDQ4IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0NzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDQ5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0NzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzUxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNTAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQ3MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNTEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQ3MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNTIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQ2OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNTMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQ2OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNTQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQ2NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNTUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQ2NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNTYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQ2NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNTciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQ2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNTgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQ2MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNTkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQ2MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNTE1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ2MCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDYxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ2MSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDYwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ2MiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDU5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ2MyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNDU4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ3IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM1MTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzUxMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkOSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2ODQzNTEyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgogPGZpZWxkIG5hbWU9ImxhYmVsIgogIHR5cGU9ImludCIKICB0cmFuc2llbnQ9ImZhbHNlIgpAQCAtNTQ0Myw2ICs2NTEwLDE3IEBACiAgdmlzaWJpbGl0eT0icHVibGljIgogPgogPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJsb2dvIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY4NDM0NTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+CiA8ZmllbGQgbmFtZT0ibG9uZ0NsaWNrYWJsZSIKICB0eXBlPSJpbnQiCiAgdHJhbnNpZW50PSJmYWxzZSIKQEAgLTkzNzAsNiArMTA0NDgsMTcgQEAKICB2aXNpYmlsaXR5PSJwdWJsaWMiCiA+CiA8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InhsYXJnZVNjcmVlbnMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjg0MzQ1NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KIDxmaWVsZCBuYW1lPSJ5IgogIHR5cGU9ImludCIKICB0cmFuc2llbnQ9ImZhbHNlIgpAQCAtOTQ4MSw2ICsxMDU3MCwxNzEgQEAKICB2aXNpYmlsaXR5PSJwdWJsaWMiCiA+CiA8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcxNzA0NjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDEwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcxNzA0NTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDExIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcxNzA0NTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDEyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcxNzA0NTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDEzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcxNzA0NTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDE0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcxNzA0NTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDE1IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcxNzA0NTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzE3MDQ2MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MTcwNDYyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcxNzA0NjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzE3MDQ2MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MTcwNDU5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ3IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcxNzA0NTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzE3MDQ1NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkOSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MTcwNDU2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgogPGZpZWxkIG5hbWU9InByaW1hcnlfdGV4dF9kYXJrIgogIHR5cGU9ImludCIKICB0cmFuc2llbnQ9ImZhbHNlIgpAQCAtOTY2Myw2ICsxMDkxNywxNjAgQEAKICB2aXNpYmlsaXR5PSJwdWJsaWMiCiA+CiA8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcxMDQ5MTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDEwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcxMDQ5MDMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDExIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcxMDQ5MDIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDEyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcxMDQ5MDEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDEzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcxMDQ5MDAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDE0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcxMDQ4OTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzEwNDkxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MTA0OTEwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcxMDQ5MDkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzEwNDkwOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MTA0OTA3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ3IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcxMDQ5MDYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzEwNDkwNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkOSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MTA0OTA0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgogPGZpZWxkIG5hbWU9InRodW1ibmFpbF9oZWlnaHQiCiAgdHlwZT0iaW50IgogIHRyYW5zaWVudD0iZmFsc2UiCkBAIC0xMDg0Niw2ICsxMjI1NCw4NzUgQEAKICB2aXNpYmlsaXR5PSJwdWJsaWMiCiA+CiA8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE3NjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDEwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE3NTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDExIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE3NTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDEyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE3NDkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDEzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE3NDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDE0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE3NDciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDE1IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE3NDYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDE2IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE3NDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDE3IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE3NDQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDE4IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE3NDMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDE5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE3NDIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTc1OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMjAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTc0MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMjEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTc0MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMjIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTczOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMjMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTczOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMjQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTczNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMjUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTczNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMjYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTczNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMjciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTczNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMjgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTczMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMjkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTczMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNzU4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQzMCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNzMxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQzMSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNzMwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQzMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNzI5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQzMyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNzI4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQzNCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNzI3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQzNSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNzI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQzNiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNzI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQzNyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNzI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQzOCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNzIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQzOSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNzIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE3NTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDQwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE3MjEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDQxIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE3MjAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDQyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE3MTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDQzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE3MTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDQ0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE3MTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDQ1IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE3MTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDQ2IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE3MTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDQ3IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE3MTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDQ4IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE3MTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDQ5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE3MTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTc1NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNTAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTcxMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNTEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTcxMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNTIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTcwOSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNTMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTcwOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNTQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTcwNyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNTUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTcwNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNTYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTcwNSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNTciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTcwNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNTgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTcwMyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNTkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTcwMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNzU1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ2MCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNzAxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ2MSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNzAwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ2MiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjk5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ2MyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjk4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ2NCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjk3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ2NSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjk2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ2NiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjk1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ2NyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjk0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ2OCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjkzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ2OSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjkyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ3IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE3NTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDcwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2OTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDcxIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2OTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDcyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2ODkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDczIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2ODgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDc0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2ODciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDc1IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2ODYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDc2IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2ODUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDc3IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2ODQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDc4IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2ODMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDc5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2ODIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTc1MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkOSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNzUyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgogPGZpZWxkIG5hbWU9Imxpc3Rfc2VsZWN0b3JfYmFja2dyb3VuZCIKICB0eXBlPSJpbnQiCiAgdHJhbnNpZW50PSJmYWxzZSIKQEAgLTEwOTAxLDYgKzEzMTc4LDM5IEBACiAgdmlzaWJpbGl0eT0icHVibGljIgogPgogPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwcmVzZW5jZV9hdWRpb19hd2F5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczMDE2NzkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJlc2VuY2VfYXVkaW9fYnVzeSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjgwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByZXNlbmNlX2F1ZGlvX29ubGluZSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjgxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgogPGZpZWxkIG5hbWU9InByZXNlbmNlX2F3YXkiCiAgdHlwZT0iaW50IgogIHRyYW5zaWVudD0iZmFsc2UiCkBAIC0xMDk1Niw2ICsxMzI2NiwzOSBAQAogIHZpc2liaWxpdHk9InB1YmxpYyIKID4KIDwvZmllbGQ+Cis8ZmllbGQgbmFtZT0icHJlc2VuY2VfdmlkZW9fYXdheSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzAxNjc2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9InByZXNlbmNlX3ZpZGVvX2J1c3kiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTY3NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJwcmVzZW5jZV92aWRlb19vbmxpbmUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzMwMTY3OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KIDxmaWVsZCBuYW1lPSJwcm9ncmVzc19ob3Jpem9udGFsIgogIHR5cGU9ImludCIKICB0cmFuc2llbnQ9ImZhbHNlIgpAQCAtMTEyODIsNyArMTM2MjUsNyBAQAogIHZhbHVlPSIxNzMwMTYzNiIKICBzdGF0aWM9InRydWUiCiAgZmluYWw9InRydWUiCi0gZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKICB2aXNpYmlsaXR5PSJwdWJsaWMiCiA+CiA8L2ZpZWxkPgpAQCAtMTEyOTMsNyArMTM2MzYsNyBAQAogIHZhbHVlPSIxNzMwMTYzNyIKICBzdGF0aWM9InRydWUiCiAgZmluYWw9InRydWUiCi0gZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKICB2aXNpYmlsaXR5PSJwdWJsaWMiCiA+CiA8L2ZpZWxkPgpAQCAtMTEzMDQsNyArMTM2NDcsNyBAQAogIHZhbHVlPSIxNzMwMTYzOCIKICBzdGF0aWM9InRydWUiCiAgZmluYWw9InRydWUiCi0gZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKICB2aXNpYmlsaXR5PSJwdWJsaWMiCiA+CiA8L2ZpZWxkPgpAQCAtMTEzNDgsNyArMTM2OTEsNyBAQAogIHZhbHVlPSIxNzMwMTY3MSIKICBzdGF0aWM9InRydWUiCiAgZmluYWw9InRydWUiCi0gZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKICB2aXNpYmlsaXR5PSJwdWJsaWMiCiA+CiA8L2ZpZWxkPgpAQCAtMTEzNTksNyArMTM3MDIsNyBAQAogIHZhbHVlPSIxNzMwMTY3MiIKICBzdGF0aWM9InRydWUiCiAgZmluYWw9InRydWUiCi0gZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgZGVwcmVjYXRlZD0iZGVwcmVjYXRlZCIKICB2aXNpYmlsaXR5PSJwdWJsaWMiCiA+CiA8L2ZpZWxkPgpAQCAtMTE4MDksNiArMTQxNTIsMjM3IEBACiAgdmlzaWJpbGl0eT0icHVibGljIgogPgogPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTA4MzUyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxMCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTA4MzQzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxMSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTA4MzQyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTA4MzQxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxMyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTA4MzQwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxNCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTA4MzM5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxNSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTA4MzM4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxNiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTA4MzM3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxNyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTA4MzM2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxOCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTA4MzM1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxOSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTA4MzM0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgzNTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDIwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgzMzMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDIxIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgzMzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjkwODM1MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTA4MzQ5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ1IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgzNDgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjkwODM0NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTA4MzQ2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ4IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5MDgzNDUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjkwODM0NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KIDxmaWVsZCBuYW1lPSJsaXN0IgogIHR5cGU9ImludCIKICB0cmFuc2llbnQ9ImZhbHNlIgpAQCAtMTIwNzksNiArMTQ2NTMsMTYwIEBACiAgdmlzaWJpbGl0eT0icHVibGljIgogPgogPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3Njk0NzM2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxMCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3Njk0NzI3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxMSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3Njk0NzI2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3Njk0NzI1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxMyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3Njk0NzI0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxNCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3Njk0NzIzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTc2OTQ3MzUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzY5NDczNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3Njk0NzMzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ1IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTc2OTQ3MzIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzY5NDczMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3Njk0NzMwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ4IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTc2OTQ3MjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzY5NDcyOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KIDwvY2xhc3M+CiA8Y2xhc3MgbmFtZT0iUi5sYXlvdXQiCiAgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKQEAgLTEyMTI5LDYgKzE0ODU3LDE0OSBAQAogIHZpc2liaWxpdHk9InB1YmxpYyIKID4KIDwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzM2NzA3MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzM2NzA2MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzM2NzA2MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzM2NzA2MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzM2NzA2MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzY3MDcxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczNjcwNzAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzM2NzA2OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzY3MDY4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ2IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczNjcwNjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzM2NzA2NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkOCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MzY3MDY1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTczNjcwNjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+CiA8ZmllbGQgbmFtZT0icHJlZmVyZW5jZV9jYXRlZ29yeSIKICB0eXBlPSJpbnQiCiAgdHJhbnNpZW50PSJmYWxzZSIKQEAgLTEyNTIxLDYgKzE1MzkyLDEyNyBAQAogIHZpc2liaWxpdHk9InB1YmxpYyIKID4KIDwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzAzOTM5MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzAzOTM4MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMTEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzAzOTM4MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MDM5MzkxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcwMzkzOTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzAzOTM4OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MDM5Mzg4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ2IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcwMzkzODciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNzAzOTM4NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkOCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MDM5Mzg1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTcwMzkzODQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+CiA8ZmllbGQgbmFtZT0ibm8iCiAgdHlwZT0iaW50IgogIHRyYW5zaWVudD0iZmFsc2UiCkBAIC0xMzcwNCw2ICsxNjY5Niw0OTAgQEAKICB2aXNpYmlsaXR5PSJwdWJsaWMiCiA+CiA8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQxIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM5NjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDEwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM5NTkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDExIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM5NTgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDEyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM5NTciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDEzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM5NTYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDE0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM5NTUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDE1IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM5NTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDE2IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM5NTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDE3IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM5NTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDE4IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM5NTEiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDE5IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM5NTAiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzk2NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMjAiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzk0OSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMjEiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzk0OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMjIiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzk0NyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMjMiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzk0NiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMjQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzk0NSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMjUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzk0NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMjYiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzk0MyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMjciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzk0MiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMjgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzk0MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMjkiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzk0MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkMyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczOTY2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQzMCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczOTM5IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQzMSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczOTM4IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQzMiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczOTM3IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQzMyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczOTM2IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQzNCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczOTM1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQzNSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczOTM0IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQzNiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczOTMzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQzNyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczOTMyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQzOCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczOTMxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQzOSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczOTMwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM5NjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDQwIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM5MjkiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDQxIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM5MjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDQyIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM5MjciCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDQzIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM5MjYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDQ0IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM5MjUiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDUiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzk2NCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkNiIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczOTYzIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQ3IgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTY5NzM5NjIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZDgiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNjk3Mzk2MSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkOSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE2OTczOTYwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgogPC9jbGFzcz4KIDxjbGFzcyBuYW1lPSJSLnhtbCIKICBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgpAQCAtMTYwNjcsNiArMTk1NDMsMTcgQEAKICB2aXNpYmlsaXR5PSJwdWJsaWMiCiA+CiA8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iaXNJbW1lcnNpdmUiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+CiA8bWV0aG9kIG5hbWU9ImlzVGFza1Jvb3QiCiAgcmV0dXJuPSJib29sZWFuIgogIGFic3RyYWN0PSJmYWxzZSIKQEAgLTE3MDIwLDYgKzIwNTA3LDE5IEBACiA8cGFyYW1ldGVyIG5hbWU9InVyaSIgdHlwZT0iYW5kcm9pZC5uZXQuVXJpIj4KIDwvcGFyYW1ldGVyPgogPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEltbWVyc2l2ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImkiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KIDxtZXRob2QgbmFtZT0ic2V0SW50ZW50IgogIHJldHVybj0idm9pZCIKICBhYnN0cmFjdD0iZmFsc2UiCkBAIC0xODI1MCw2ICsyMTc1MCwxNyBAQAogIHZpc2liaWxpdHk9InB1YmxpYyIKID4KIDwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19IRUFWWV9XRUlHSFQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgogPGZpZWxkIG5hbWU9IklNUE9SVEFOQ0VfQkFDS0dST1VORCIKICB0eXBlPSJpbnQiCiAgdHJhbnNpZW50PSJmYWxzZSIKQEAgLTE4MjgzLDYgKzIxNzk0LDI4IEBACiAgdmlzaWJpbGl0eT0icHVibGljIgogPgogPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTVBPUlRBTkNFX0hFQVZZX1dFSUdIVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjE3MCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJJTVBPUlRBTkNFX1BFUkNFUFRJQkxFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTMwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgogPGZpZWxkIG5hbWU9IklNUE9SVEFOQ0VfU0VSVklDRSIKICB0eXBlPSJpbnQiCiAgdHJhbnNpZW50PSJmYWxzZSIKQEAgLTE4MzM4LDYgKzIxODcxLDE2IEBACiAgdmlzaWJpbGl0eT0icHVibGljIgogPgogPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmbGFncyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KIDxmaWVsZCBuYW1lPSJpbXBvcnRhbmNlIgogIHR5cGU9ImludCIKICB0cmFuc2llbnQ9ImZhbHNlIgpAQCAtMjI4MDAsNiArMjYzNDMsMTA5IEBACiA8L3BhcmFtZXRlcj4KIDwvbWV0aG9kPgogPC9jbGFzcz4KKzxjbGFzcyBuYW1lPSJOYXRpdmVBY3Rpdml0eSIKKyBleHRlbmRzPSJhbmRyb2lkLmFwcC5BY3Rpdml0eSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC52aWV3LklucHV0UXVldWUuQ2FsbGJhY2siPgorPC9pbXBsZW1lbnRzPgorPGltcGxlbWVudHMgbmFtZT0iYW5kcm9pZC52aWV3LlN1cmZhY2VIb2xkZXIuQ2FsbGJhY2siPgorPC9pbXBsZW1lbnRzPgorPGNvbnN0cnVjdG9yIG5hbWU9Ik5hdGl2ZUFjdGl2aXR5IgorIHR5cGU9ImFuZHJvaWQuYXBwLk5hdGl2ZUFjdGl2aXR5IgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9Im9uSW5wdXRRdWV1ZUNyZWF0ZWQiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJxdWV1ZSIgdHlwZT0iYW5kcm9pZC52aWV3LklucHV0UXVldWUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25JbnB1dFF1ZXVlRGVzdHJveWVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icXVldWUiIHR5cGU9ImFuZHJvaWQudmlldy5JbnB1dFF1ZXVlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cmZhY2VDaGFuZ2VkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9sZGVyIiB0eXBlPSJhbmRyb2lkLnZpZXcuU3VyZmFjZUhvbGRlciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZm9ybWF0IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9IndpZHRoIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImhlaWdodCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InN1cmZhY2VDcmVhdGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9sZGVyIiB0eXBlPSJhbmRyb2lkLnZpZXcuU3VyZmFjZUhvbGRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzdXJmYWNlRGVzdHJveWVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaG9sZGVyIiB0eXBlPSJhbmRyb2lkLnZpZXcuU3VyZmFjZUhvbGRlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9Ik1FVEFfREFUQV9MSUJfTkFNRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDthbmRyb2lkLmFwcC5saWJfbmFtZSZxdW90OyIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+CiA8Y2xhc3MgbmFtZT0iTm90aWZpY2F0aW9uIgogIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCiAgYWJzdHJhY3Q9ImZhbHNlIgpAQCAtMjI4NDIsNiArMjY0ODgsMTcgQEAKIDxwYXJhbWV0ZXIgbmFtZT0icGFyY2VsIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+CiA8L3BhcmFtZXRlcj4KIDwvY29uc3RydWN0b3I+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iYW5kcm9pZC5hcHAuTm90aWZpY2F0aW9uIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+CiA8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCiAgcmV0dXJuPSJpbnQiCiAgYWJzdHJhY3Q9ImZhbHNlIgpAQCAtMjI5NjMsNiArMjY2MjAsMTcgQEAKICB2aXNpYmlsaXR5PSJwdWJsaWMiCiA+CiA8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZMQUdfSElHSF9QUklPUklUWSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEyOCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KIDxmaWVsZCBuYW1lPSJGTEFHX0lOU0lTVEVOVCIKICB0eXBlPSJpbnQiCiAgdHJhbnNpZW50PSJmYWxzZSIKQEAgLTIzMDg5LDYgKzI2NzU3LDE2IEBACiAgdmlzaWJpbGl0eT0icHVibGljIgogPgogPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJmdWxsU2NyZWVuSW50ZW50IgorIHR5cGU9ImFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KIDxmaWVsZCBuYW1lPSJpY29uIgogIHR5cGU9ImludCIKICB0cmFuc2llbnQ9ImZhbHNlIgpAQCAtNDA1NDEsNiArNDQyMTksMTcgQEAKICB2aXNpYmlsaXR5PSJwdWJsaWMiCiA+CiA8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0VGFyZ2V0UGFja2FnZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KIDxtZXRob2QgbmFtZT0icmVhZEludGVudFNlbmRlck9yTnVsbEZyb21QYXJjZWwiCiAgcmV0dXJuPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50U2VuZGVyIgogIGFic3RyYWN0PSJmYWxzZSIKQEAgLTQyMzM2LDYgKzQ2MDI1LDE3IEBACiAgdmlzaWJpbGl0eT0icHVibGljIgogPgogPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX0lNTUVSU0lWRSIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUxMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KIDxmaWVsZCBuYW1lPSJGTEFHX01VTFRJUFJPQ0VTUyIKICB0eXBlPSJpbnQiCiAgdHJhbnNpZW50PSJmYWxzZSIKQEAgLTQyNzM1LDYgKzQ2NDM1LDE3IEBACiAgdmlzaWJpbGl0eT0icHVibGljIgogPgogPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGTEFHX0hFQVZZX1dFSUdIVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjEwNDg1NzYiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+CiA8ZmllbGQgbmFtZT0iRkxBR19LSUxMX0FGVEVSX1JFU1RPUkUiCiAgdHlwZT0iaW50IgogIHRyYW5zaWVudD0iZmFsc2UiCkBAIC00MjgyMyw2ICs0NjUzNCwxNyBAQAogIHZpc2liaWxpdHk9InB1YmxpYyIKID4KIDwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkxBR19TVVBQT1JUU19YTEFSR0VfU0NSRUVOUyIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjUyNDI4OCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KIDxmaWVsZCBuYW1lPSJGTEFHX1NZU1RFTSIKICB0eXBlPSJpbnQiCiAgdHJhbnNpZW50PSJmYWxzZSIKQEAgLTQ0MDM3LDYgKzQ3NzU5LDE5IEBACiA8cGFyYW1ldGVyIG5hbWU9InBtIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIiPgogPC9wYXJhbWV0ZXI+CiA8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ibG9hZExvZ28iCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwbSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+CiA8bWV0aG9kIG5hbWU9ImxvYWRYbWxNZXRhRGF0YSIKICByZXR1cm49ImFuZHJvaWQuY29udGVudC5yZXMuWG1sUmVzb3VyY2VQYXJzZXIiCiAgYWJzdHJhY3Q9ImZhbHNlIgpAQCAtNDQwODcsNiArNDc4MjIsMTYgQEAKICB2aXNpYmlsaXR5PSJwdWJsaWMiCiA+CiA8L2ZpZWxkPgorPGZpZWxkIG5hbWU9ImxvZ28iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+CiA8ZmllbGQgbmFtZT0ibWV0YURhdGEiCiAgdHlwZT0iYW5kcm9pZC5vcy5CdW5kbGUiCiAgdHJhbnNpZW50PSJmYWxzZSIKQEAgLTQ0MzY5LDYgKzQ4MTE0LDM2IEBACiA8ZXhjZXB0aW9uIG5hbWU9IlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiI+CiA8L2V4Y2VwdGlvbj4KIDwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBY3Rpdml0eUxvZ28iCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjdGl2aXR5TmFtZSIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWUiPgorPC9wYXJhbWV0ZXI+Cis8ZXhjZXB0aW9uIG5hbWU9IlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiI+Cis8L2V4Y2VwdGlvbj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBY3Rpdml0eUxvZ28iCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5jb250ZW50LkludGVudCI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+CiA8bWV0aG9kIG5hbWU9ImdldEFsbFBlcm1pc3Npb25Hcm91cHMiCiAgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDthbmRyb2lkLmNvbnRlbnQucG0uUGVybWlzc2lvbkdyb3VwSW5mbyZndDsiCiAgYWJzdHJhY3Q9InRydWUiCkBAIC00NDQ1Myw2ICs0ODIyOCwzNCBAQAogPHBhcmFtZXRlciBuYW1lPSJpbmZvIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uQXBwbGljYXRpb25JbmZvIj4KIDwvcGFyYW1ldGVyPgogPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEFwcGxpY2F0aW9uTG9nbyIKKyByZXR1cm49ImFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGUiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5mbyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLkFwcGxpY2F0aW9uSW5mbyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBcHBsaWNhdGlvbkxvZ28iCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KIDxtZXRob2QgbmFtZT0iZ2V0Q29tcG9uZW50RW5hYmxlZFNldHRpbmciCiAgcmV0dXJuPSJpbnQiCiAgYWJzdHJhY3Q9InRydWUiCkBAIC00NTE2NSw2ICs0ODk2OCwxNyBAQAogIHZpc2liaWxpdHk9InB1YmxpYyIKID4KIDwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRkVBVFVSRV9DQU1FUkFfRlJPTlQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5oYXJkd2FyZS5jYW1lcmEuZnJvbnQmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+CiA8ZmllbGQgbmFtZT0iRkVBVFVSRV9MSVZFX1dBTExQQVBFUiIKICB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgogIHRyYW5zaWVudD0iZmFsc2UiCkBAIC00Nzg2Miw2ICs1MTY3NiwxNyBAQAogIHZpc2liaWxpdHk9InB1YmxpYyIKID4KIDwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iU0NSRUVOTEFZT1VUX1NJWkVfWExBUkdFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KIDxmaWVsZCBuYW1lPSJUT1VDSFNDUkVFTl9GSU5HRVIiCiAgdHlwZT0iaW50IgogIHRyYW5zaWVudD0iZmFsc2UiCkBAIC03MTUxNSw2ICs3NTM0MCwzMiBAQAogIHZpc2liaWxpdHk9InB1YmxpYyIKID4KIDwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRDYW1lcmFJbmZvIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbWVyYUlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbWVyYUluZm8iIHR5cGU9ImFuZHJvaWQuaGFyZHdhcmUuQ2FtZXJhLkNhbWVyYUluZm8iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TnVtYmVyT2ZDYW1lcmFzIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9InRydWUiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgogPG1ldGhvZCBuYW1lPSJnZXRQYXJhbWV0ZXJzIgogIHJldHVybj0iYW5kcm9pZC5oYXJkd2FyZS5DYW1lcmEuUGFyYW1ldGVycyIKICBhYnN0cmFjdD0iZmFsc2UiCkBAIC03MTU0Nyw2ICs3NTM5OCwxOSBAQAogIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgogIHZpc2liaWxpdHk9InB1YmxpYyIKID4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FtZXJhSWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvcGVuIgorIHJldHVybj0iYW5kcm9pZC5oYXJkd2FyZS5DYW1lcmEiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KIDwvbWV0aG9kPgogPG1ldGhvZCBuYW1lPSJyZWNvbm5lY3QiCiAgcmV0dXJuPSJ2b2lkIgpAQCAtNzE3OTMsNiArNzU2NTcsMTYgQEAKICB2aXNpYmlsaXR5PSJwdWJsaWMiCiA+CiA8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNBTUVSQV9JRF9ERUZBVUxUIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+CiA8L2NsYXNzPgogPGludGVyZmFjZSBuYW1lPSJDYW1lcmEuQXV0b0ZvY3VzQ2FsbGJhY2siCiAgYWJzdHJhY3Q9InRydWUiCkBAIC03MTgxNyw2ICs3NTY5MSw2NSBAQAogPC9wYXJhbWV0ZXI+CiA8L21ldGhvZD4KIDwvaW50ZXJmYWNlPgorPGNsYXNzIG5hbWU9IkNhbWVyYS5DYW1lcmFJbmZvIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9IkNhbWVyYS5DYW1lcmFJbmZvIgorIHR5cGU9ImFuZHJvaWQuaGFyZHdhcmUuQ2FtZXJhLkNhbWVyYUluZm8iCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9jb25zdHJ1Y3Rvcj4KKzxmaWVsZCBuYW1lPSJDQU1FUkFfRkFDSU5HX0JBQ0siCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIwIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkNBTUVSQV9GQUNJTkdfRlJPTlQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Im1GYWNpbmciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0ibU9yaWVudGF0aW9uIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPC9jbGFzcz4KIDxpbnRlcmZhY2UgbmFtZT0iQ2FtZXJhLkVycm9yQ2FsbGJhY2siCiAgYWJzdHJhY3Q9InRydWUiCiAgc3RhdGljPSJ0cnVlIgpAQCAtNzE5NjMsNiArNzU4OTYsMTkgQEAKICB2aXNpYmlsaXR5PSJwdWJsaWMiCiA+CiA8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Rm9jdXNEaXN0YW5jZXMiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJvdXRwdXQiIHR5cGU9ImZsb2F0W10iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KIDxtZXRob2QgbmFtZT0iZ2V0Rm9jdXNNb2RlIgogIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKICBhYnN0cmFjdD0iZmFsc2UiCkBAIC03MjA1Myw2ICs3NTk5OSwxNyBAQAogIHZpc2liaWxpdHk9InB1YmxpYyIKID4KIDwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRNZXRlcmluZ01vZGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+CiA8bWV0aG9kIG5hbWU9ImdldE1pbkV4cG9zdXJlQ29tcGVuc2F0aW9uIgogIHJldHVybj0iaW50IgogIGFic3RyYWN0PSJmYWxzZSIKQEAgLTcyMTg1LDYgKzc2MTQyLDE3IEBACiAgdmlzaWJpbGl0eT0icHVibGljIgogPgogPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFN1cHBvcnRlZE1ldGVyaW5nTW9kZXMiCisgcmV0dXJuPSJqYXZhLnV0aWwuTGlzdCZsdDtqYXZhLmxhbmcuU3RyaW5nJmd0OyIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgogPG1ldGhvZCBuYW1lPSJnZXRTdXBwb3J0ZWRQaWN0dXJlRm9ybWF0cyIKICByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2phdmEubGFuZy5JbnRlZ2VyJmd0OyIKICBhYnN0cmFjdD0iZmFsc2UiCkBAIC03MjU1Myw2ICs3NjUyMSwxOSBAQAogPHBhcmFtZXRlciBuYW1lPSJoZWlnaHQiIHR5cGU9ImludCI+CiA8L3BhcmFtZXRlcj4KIDwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRNZXRlcmluZ01vZGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ2YWx1ZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgogPG1ldGhvZCBuYW1lPSJzZXRQaWN0dXJlRm9ybWF0IgogIHJldHVybj0idm9pZCIKICBhYnN0cmFjdD0iZmFsc2UiCkBAIC03Mjg4NSw2ICs3Njg2NiwzOSBAQAogIHZpc2liaWxpdHk9InB1YmxpYyIKID4KIDwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iRk9DVVNfRElTVEFOQ0VfRkFSX0lOREVYIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT0NVU19ESVNUQU5DRV9ORUFSX0lOREVYIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJGT0NVU19ESVNUQU5DRV9PUFRJTUFMX0lOREVYIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KIDxmaWVsZCBuYW1lPSJGT0NVU19NT0RFX0FVVE8iCiAgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKICB0cmFuc2llbnQ9ImZhbHNlIgpAQCAtNzI4OTYsNiArNzY5MTAsMTcgQEAKICB2aXNpYmlsaXR5PSJwdWJsaWMiCiA+CiA8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IkZPQ1VTX01PREVfQ09OVElOVU9VUyIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtjb250aW51b3VzJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgogPGZpZWxkIG5hbWU9IkZPQ1VTX01PREVfRURPRiIKICB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgogIHRyYW5zaWVudD0iZmFsc2UiCkBAIC03Mjk0MCw2ICs3Njk2NSwzOSBAQAogIHZpc2liaWxpdHk9InB1YmxpYyIKID4KIDwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iTUVURVJJTkdfTU9ERV9DRU5URVJfV0VJR0hURUQiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Y2VudGVyLXdlaWdodGVkJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1FVEVSSU5HX01PREVfRlJBTUVfQVZFUkFHRSIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtmcmFtZS1hdmVyYWdlJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1FVEVSSU5HX01PREVfU1BPVCIKKyB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSImcXVvdDtzcG90JnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgogPGZpZWxkIG5hbWU9IlNDRU5FX01PREVfQUNUSU9OIgogIHR5cGU9ImphdmEubGFuZy5TdHJpbmciCiAgdHJhbnNpZW50PSJmYWxzZSIKQEAgLTc3ODk0LDYgKzgxOTUyLDI4IEBACiAgdmlzaWJpbGl0eT0icHVibGljIgogPgogPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEJlYXJpbmdBY2N1cmFjeSIKKyByZXR1cm49ImludCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRIb3Jpem9udGFsQWNjdXJhY3kiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KIDxtZXRob2QgbmFtZT0iZ2V0UG93ZXJSZXF1aXJlbWVudCIKICByZXR1cm49ImludCIKICBhYnN0cmFjdD0iZmFsc2UiCkBAIC03NzkwNSw2ICs4MTk4NSwyOCBAQAogIHZpc2liaWxpdHk9InB1YmxpYyIKID4KIDwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRTcGVlZEFjY3VyYWN5IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldFZlcnRpY2FsQWNjdXJhY3kiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KIDxtZXRob2QgbmFtZT0iaXNBbHRpdHVkZVJlcXVpcmVkIgogIHJldHVybj0iYm9vbGVhbiIKICBhYnN0cmFjdD0iZmFsc2UiCkBAIC03Nzk3NSw2ICs4MjA3NywxOSBAQAogPHBhcmFtZXRlciBuYW1lPSJhbHRpdHVkZVJlcXVpcmVkIiB0eXBlPSJib29sZWFuIj4KIDwvcGFyYW1ldGVyPgogPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InNldEJlYXJpbmdBY2N1cmFjeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY3VyYWN5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KIDxtZXRob2QgbmFtZT0ic2V0QmVhcmluZ1JlcXVpcmVkIgogIHJldHVybj0idm9pZCIKICBhYnN0cmFjdD0iZmFsc2UiCkBAIC03ODAwMSw2ICs4MjExNiwxOSBAQAogPHBhcmFtZXRlciBuYW1lPSJjb3N0QWxsb3dlZCIgdHlwZT0iYm9vbGVhbiI+CiA8L3BhcmFtZXRlcj4KIDwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRIb3Jpem9udGFsQWNjdXJhY3kiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY2N1cmFjeSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+CiA8bWV0aG9kIG5hbWU9InNldFBvd2VyUmVxdWlyZW1lbnQiCiAgcmV0dXJuPSJ2b2lkIgogIGFic3RyYWN0PSJmYWxzZSIKQEAgLTc4MDE0LDYgKzgyMTQyLDE5IEBACiA8cGFyYW1ldGVyIG5hbWU9ImxldmVsIiB0eXBlPSJpbnQiPgogPC9wYXJhbWV0ZXI+CiA8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ic2V0U3BlZWRBY2N1cmFjeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImFjY3VyYWN5IiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KIDxtZXRob2QgbmFtZT0ic2V0U3BlZWRSZXF1aXJlZCIKICByZXR1cm49InZvaWQiCiAgYWJzdHJhY3Q9ImZhbHNlIgpAQCAtNzgwMjcsNiArODIxNjgsMTkgQEAKIDxwYXJhbWV0ZXIgbmFtZT0ic3BlZWRSZXF1aXJlZCIgdHlwZT0iYm9vbGVhbiI+CiA8L3BhcmFtZXRlcj4KIDwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRWZXJ0aWNhbEFjY3VyYWN5IgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iYWNjdXJhY3kiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgogPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgogIHJldHVybj0idm9pZCIKICBhYnN0cmFjdD0iZmFsc2UiCkBAIC03ODA2NCw2ICs4MjIxOCwzOSBAQAogIHZpc2liaWxpdHk9InB1YmxpYyIKID4KIDwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNDVVJBQ1lfSElHSCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNDVVJBQ1lfTE9XIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJBQ0NVUkFDWV9NRURJVU0iCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIyIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgogPGZpZWxkIG5hbWU9IkNSRUFUT1IiCiAgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCiAgdHJhbnNpZW50PSJmYWxzZSIKQEAgLTc4MjEwLDYgKzgyMzk3LDg2IEBACiA8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KIDwvZXhjZXB0aW9uPgogPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImlzSW1wbGVtZW50ZWQiCisgcmV0dXJuPSJqYXZhLmxhbmcuQm9vbGVhbiIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8L2NsYXNzPgorPGNsYXNzIG5hbWU9Ikdlb2NvZGVyUGFyYW1zIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxpbXBsZW1lbnRzIG5hbWU9ImFuZHJvaWQub3MuUGFyY2VsYWJsZSI+Cis8L2ltcGxlbWVudHM+Cis8bWV0aG9kIG5hbWU9ImRlc2NyaWJlQ29udGVudHMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0Q2xpZW50UGFja2FnZSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0TG9jYWxlIgorIHJldHVybj0iamF2YS51dGlsLkxvY2FsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ3cml0ZVRvUGFyY2VsIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icGFyY2VsIiB0eXBlPSJhbmRyb2lkLm9zLlBhcmNlbCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPGZpZWxkIG5hbWU9IkNSRUFUT1IiCisgdHlwZT0iYW5kcm9pZC5vcy5QYXJjZWxhYmxlLkNyZWF0b3IiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+CiA8L2NsYXNzPgogPGNsYXNzIG5hbWU9Ikdwc1NhdGVsbGl0ZSIKICBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgpAQCAtNzkzNjgsNiArODM2MzUsMjcgQEAKICBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKICB2aXNpYmlsaXR5PSJwdWJsaWMiCiA+Cis8cGFyYW1ldGVyIG5hbWU9Im1pblRpbWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im1pbkRpc3RhbmNlIiB0eXBlPSJmbG9hdCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY3JpdGVyaWEiIHR5cGU9ImFuZHJvaWQubG9jYXRpb24uQ3JpdGVyaWEiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxvb3BlciIgdHlwZT0iYW5kcm9pZC5vcy5Mb29wZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVxdWVzdExvY2F0aW9uVXBkYXRlcyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+CiA8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KIDwvcGFyYW1ldGVyPgogPHBhcmFtZXRlciBuYW1lPSJtaW5UaW1lIiB0eXBlPSJsb25nIj4KQEAgLTc5Mzc3LDYgKzgzNjY1LDg5IEBACiA8cGFyYW1ldGVyIG5hbWU9ImludGVudCIgdHlwZT0iYW5kcm9pZC5hcHAuUGVuZGluZ0ludGVudCI+CiA8L3BhcmFtZXRlcj4KIDwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXF1ZXN0TG9jYXRpb25VcGRhdGVzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ibWluVGltZSIgdHlwZT0ibG9uZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibWluRGlzdGFuY2UiIHR5cGU9ImZsb2F0Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJjcml0ZXJpYSIgdHlwZT0iYW5kcm9pZC5sb2NhdGlvbi5Dcml0ZXJpYSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmFwcC5QZW5kaW5nSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InJlcXVlc3RTaW5nbGVVcGRhdGUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwcm92aWRlciIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImFuZHJvaWQubG9jYXRpb24uTG9jYXRpb25MaXN0ZW5lciI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ibG9vcGVyIiB0eXBlPSJhbmRyb2lkLm9zLkxvb3BlciI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJyZXF1ZXN0U2luZ2xlVXBkYXRlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY3JpdGVyaWEiIHR5cGU9ImFuZHJvaWQubG9jYXRpb24uQ3JpdGVyaWEiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uTGlzdGVuZXIiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxvb3BlciIgdHlwZT0iYW5kcm9pZC5vcy5Mb29wZXIiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVxdWVzdFNpbmdsZVVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InByb3ZpZGVyIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVxdWVzdFNpbmdsZVVwZGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNyaXRlcmlhIiB0eXBlPSJhbmRyb2lkLmxvY2F0aW9uLkNyaXRlcmlhIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJpbnRlbnQiIHR5cGU9ImFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KIDxtZXRob2QgbmFtZT0ic2VuZEV4dHJhQ29tbWFuZCIKICByZXR1cm49ImJvb2xlYW4iCiAgYWJzdHJhY3Q9ImZhbHNlIgpAQCAtNzk2ODcsNiArODQwNTgsMzkwIEBACiA8L2ZpZWxkPgogPC9jbGFzcz4KIDwvcGFja2FnZT4KKzxwYWNrYWdlIG5hbWU9ImFuZHJvaWQubG9jYXRpb24ucHJvdmlkZXIiCis+Cis8Y2xhc3MgbmFtZT0iR2VvY29kZVByb3ZpZGVyIgorIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCisgYWJzdHJhY3Q9InRydWUiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPGNvbnN0cnVjdG9yIG5hbWU9Ikdlb2NvZGVQcm92aWRlciIKKyB0eXBlPSJhbmRyb2lkLmxvY2F0aW9uLnByb3ZpZGVyLkdlb2NvZGVQcm92aWRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRCaW5kZXIiCisgcmV0dXJuPSJhbmRyb2lkLm9zLklCaW5kZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25HZXRGcm9tTG9jYXRpb24iCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxhdGl0dWRlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9ImxvbmdpdHVkZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYXhSZXN1bHRzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iYW5kcm9pZC5sb2NhdGlvbi5HZW9jb2RlclBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWRkcnMiIHR5cGU9ImphdmEudXRpbC5MaXN0Jmx0O2FuZHJvaWQubG9jYXRpb24uQWRkcmVzcyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25HZXRGcm9tTG9jYXRpb25OYW1lIgorIHJldHVybj0iamF2YS5sYW5nLlN0cmluZyIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbk5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxvd2VyTGVmdExhdGl0dWRlIiB0eXBlPSJkb3VibGUiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Imxvd2VyTGVmdExvbmdpdHVkZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ1cHBlclJpZ2h0TGF0aXR1ZGUiIHR5cGU9ImRvdWJsZSI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idXBwZXJSaWdodExvbmdpdHVkZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJtYXhSZXN1bHRzIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InBhcmFtcyIgdHlwZT0iYW5kcm9pZC5sb2NhdGlvbi5HZW9jb2RlclBhcmFtcyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iYWRkcnMiIHR5cGU9ImphdmEudXRpbC5MaXN0Jmx0O2FuZHJvaWQubG9jYXRpb24uQWRkcmVzcyZndDsiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iTG9jYXRpb25Qcm92aWRlciIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxjb25zdHJ1Y3RvciBuYW1lPSJMb2NhdGlvblByb3ZpZGVyIgorIHR5cGU9ImFuZHJvaWQubG9jYXRpb24ucHJvdmlkZXIuTG9jYXRpb25Qcm92aWRlciIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJnZXRCaW5kZXIiCisgcmV0dXJuPSJhbmRyb2lkLm9zLklCaW5kZXIiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25BZGRMaXN0ZW5lciIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0idWlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25EaXNhYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uRW5hYmxlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uRW5hYmxlTG9jYXRpb25UcmFja2luZyIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZW5hYmxlIiB0eXBlPSJib29sZWFuIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uR2V0QWNjdXJhY3kiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkdldEludGVybmFsU3RhdGUiCisgcmV0dXJuPSJqYXZhLmxhbmcuU3RyaW5nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25HZXRQb3dlclJlcXVpcmVtZW50IgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25HZXRTdGF0dXMiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iZXh0cmFzIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvbkdldFN0YXR1c1VwZGF0ZVRpbWUiCisgcmV0dXJuPSJsb25nIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25IYXNNb25ldGFyeUNvc3QiCisgcmV0dXJuPSJib29sZWFuIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25NZWV0c0NyaXRlcmlhIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjcml0ZXJpYSIgdHlwZT0iYW5kcm9pZC5sb2NhdGlvbi5Dcml0ZXJpYSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblJlbW92ZUxpc3RlbmVyIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJ1aWQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblJlcXVpcmVzQ2VsbCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblJlcXVpcmVzTmV0d29yayIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblJlcXVpcmVzU2F0ZWxsaXRlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU2VuZEV4dHJhQ29tbWFuZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY29tbWFuZCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iZXh0cmFzIiB0eXBlPSJhbmRyb2lkLm9zLkJ1bmRsZSI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblNldE1pblRpbWUiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJ0cnVlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1pblRpbWUiIHR5cGU9ImxvbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25TdXBwb3J0c0FsdGl0dWRlIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU3VwcG9ydHNCZWFyaW5nIgorIHJldHVybj0iYm9vbGVhbiIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9Im9uU3VwcG9ydHNTcGVlZCIKKyByZXR1cm49ImJvb2xlYW4iCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblVwZGF0ZUxvY2F0aW9uIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iYW5kcm9pZC5sb2NhdGlvbi5Mb2NhdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJvblVwZGF0ZU5ldHdvcmtTdGF0ZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0ic3RhdGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5mbyIgdHlwZT0iYW5kcm9pZC5uZXQuTmV0d29ya0luZm8iPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0icmVwb3J0TG9jYXRpb24iCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJsb2NhdGlvbiIgdHlwZT0iYW5kcm9pZC5sb2NhdGlvbi5Mb2NhdGlvbiI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPC9jbGFzcz4KKzwvcGFja2FnZT4KIDxwYWNrYWdlIG5hbWU9ImFuZHJvaWQubWVkaWEiCiA+CiA8Y2xhc3MgbmFtZT0iQXN5bmNQbGF5ZXIiCkBAIC04MjUzOSw2ICs4NzI5NCwyMSBAQAogPHBhcmFtZXRlciBuYW1lPSJxdWFsaXR5IiB0eXBlPSJpbnQiPgogPC9wYXJhbWV0ZXI+CiA8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0IgorIHJldHVybj0iYW5kcm9pZC5tZWRpYS5DYW1jb3JkZXJQcm9maWxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbWVyYUlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InF1YWxpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgogPGZpZWxkIG5hbWU9IlFVQUxJVFlfSElHSCIKICB0eXBlPSJpbnQiCiAgdHJhbnNpZW50PSJmYWxzZSIKQEAgLTgyNzExLDYgKzg3NDgxLDIxIEBACiA8cGFyYW1ldGVyIG5hbWU9InF1YWxpdHkiIHR5cGU9ImludCI+CiA8L3BhcmFtZXRlcj4KIDwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRKcGVnRW5jb2RpbmdRdWFsaXR5UGFyYW1ldGVyIgorIHJldHVybj0iaW50IgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImNhbWVyYUlkIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InF1YWxpdHkiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgogPGZpZWxkIG5hbWU9IlFVQUxJVFlfSElHSCIKICB0eXBlPSJpbnQiCiAgdHJhbnNpZW50PSJmYWxzZSIKQEAgLTgyNzY1LDYgKzg3NTUwLDE5IEBACiA8ZXhjZXB0aW9uIG5hbWU9IklPRXhjZXB0aW9uIiB0eXBlPSJqYXZhLmlvLklPRXhjZXB0aW9uIj4KIDwvZXhjZXB0aW9uPgogPC9jb25zdHJ1Y3Rvcj4KKzxtZXRob2QgbmFtZT0iZ2V0QWx0aXR1ZGUiCisgcmV0dXJuPSJkb3VibGUiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImRlZmF1bHRWYWx1ZSIgdHlwZT0iZG91YmxlIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+CiA8bWV0aG9kIG5hbWU9ImdldEF0dHJpYnV0ZSIKICByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCiAgYWJzdHJhY3Q9ImZhbHNlIgpAQCAtODMwMDMsNiArODc4MDEsMjggQEAKICB2aXNpYmlsaXR5PSJwdWJsaWMiCiA+CiA8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IlRBR19HUFNfQUxUSVRVREUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7R1BTQWx0aXR1ZGUmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iVEFHX0dQU19BTFRJVFVERV9SRUYiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7R1BTQWx0aXR1ZGVSZWYmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+CiA8ZmllbGQgbmFtZT0iVEFHX0dQU19EQVRFU1RBTVAiCiAgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKICB0cmFuc2llbnQ9ImZhbHNlIgpAQCAtODQxNzksNiArODg5OTksMjggQEAKICB2aXNpYmlsaXR5PSJwdWJsaWMiCiA+CiA8L2ZpZWxkPgorPGZpZWxkIG5hbWU9Ik1FRElBX0lORk9fQlVGRkVSSU5HX0VORCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjcwMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNRURJQV9JTkZPX0JVRkZFUklOR19TVEFSVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9IjcwMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KIDxmaWVsZCBuYW1lPSJNRURJQV9JTkZPX01FVEFEQVRBX1VQREFURSIKICB0eXBlPSJpbnQiCiAgdHJhbnNpZW50PSJmYWxzZSIKQEAgLTEwNDQ3MCw2ICsxMDkzMTIsMjUgQEAKIDwvcGFyYW1ldGVyPgogPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgogPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im9mZnNldCIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdsRHJhd0VsZW1lbnRzIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9Im1vZGUiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0iY291bnQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0idHlwZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgogPHBhcmFtZXRlciBuYW1lPSJpbmRpY2VzIiB0eXBlPSJqYXZhLm5pby5CdWZmZXIiPgogPC9wYXJhbWV0ZXI+CiA8L21ldGhvZD4KQEAgLTEwNjg4OCw2ICsxMTE3NDksMjkgQEAKIDxtZXRob2QgbmFtZT0iZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyIgogIHJldHVybj0idm9pZCIKICBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJ0cnVlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImluZHgiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzxwYXJhbWV0ZXIgbmFtZT0ic2l6ZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJ0eXBlIiB0eXBlPSJpbnQiPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9Im5vcm1hbGl6ZWQiIHR5cGU9ImJvb2xlYW4iPgorPC9wYXJhbWV0ZXI+Cis8cGFyYW1ldGVyIG5hbWU9InN0cmlkZSIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJvZmZzZXQiIHR5cGU9ImludCI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnbFZlcnRleEF0dHJpYlBvaW50ZXIiCisgcmV0dXJuPSJ2b2lkIgorIGFic3RyYWN0PSJmYWxzZSIKICBuYXRpdmU9ImZhbHNlIgogIHN5bmNocm9uaXplZD0iZmFsc2UiCiAgc3RhdGljPSJ0cnVlIgpAQCAtMTEyNzY1LDYgKzExNzY0OSwxNyBAQAogIHZpc2liaWxpdHk9InB1YmxpYyIKID4KIDwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iR0lOR0VSQlJFQUQiCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMDAwMCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KIDwvY2xhc3M+CiA8Y2xhc3MgbmFtZT0iQnVuZGxlIgogIGV4dGVuZHM9ImphdmEubGFuZy5PYmplY3QiCkBAIC0xMjAzNTEsNiArMTI1MjQ2LDExNiBAQAogPC9wYXJhbWV0ZXI+CiA8L21ldGhvZD4KIDwvY2xhc3M+Cis8Y2xhc3MgbmFtZT0iU3RyaWN0TW9kZSIKKyBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgorIGFic3RyYWN0PSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxtZXRob2QgbmFtZT0iZ2V0VGhyZWFkQmxvY2tpbmdQb2xpY3kiCisgcmV0dXJuPSJpbnQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRUaHJlYWRCbG9ja2luZ1BvbGljeSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0icG9saWN5TWFzayIgdHlwZT0iaW50Ij4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+Cis8ZmllbGQgbmFtZT0iRElTQUxMT1dfRElTS19SRUFEIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJESVNBTExPV19ESVNLX1dSSVRFIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMSIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJESVNBTExPV19ORVRXT1JLIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNCIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQRU5BTFRZX0RFQVRIIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iNjQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEVOQUxUWV9ESUFMT0ciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIzMiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJQRU5BTFRZX0RST1BCT1giCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxMjgiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iUEVOQUxUWV9MT0ciCisgdHlwZT0iaW50IgorIHRyYW5zaWVudD0iZmFsc2UiCisgdm9sYXRpbGU9ImZhbHNlIgorIHZhbHVlPSIxNiIKKyBzdGF0aWM9InRydWUiCisgZmluYWw9InRydWUiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPC9maWVsZD4KKzwvY2xhc3M+CiA8Y2xhc3MgbmFtZT0iU3lzdGVtQ2xvY2siCiAgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKICBhYnN0cmFjdD0iZmFsc2UiCkBAIC0xMzE2NjAsNiArMTM2NjY1LDE3IEBACiAgdmlzaWJpbGl0eT0icHVibGljIgogPgogPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJNRURJQV9JR05PUkVfRklMRU5BTUUiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7Lm5vbWVkaWEmcXVvdDsiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+CiA8ZmllbGQgbmFtZT0iTUVESUFfU0NBTk5FUl9WT0xVTUUiCiAgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKICB0cmFuc2llbnQ9ImZhbHNlIgpAQCAtMTM0Mjk0LDYgKzEzOTMxMCwxNyBAQAogIHZpc2liaWxpdHk9InB1YmxpYyIKID4KIDwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iQUNUSU9OX0FQUExJQ0FUSU9OX0RFVEFJTFNfU0VUVElOR1MiCisgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iJnF1b3Q7YW5kcm9pZC5zZXR0aW5ncy5BUFBMSUNBVElPTl9ERVRBSUxTX1NFVFRJTkdTJnF1b3Q7IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgogPGZpZWxkIG5hbWU9IkFDVElPTl9BUFBMSUNBVElPTl9ERVZFTE9QTUVOVF9TRVRUSU5HUyIKICB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIgogIHRyYW5zaWVudD0iZmFsc2UiCkBAIC0xNDIyMzgsNiArMTQ3MjY1LDE3IEBACiAgdmlzaWJpbGl0eT0icHVibGljIgogPgogPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJORVRXT1JLX1RZUEVfRVZET19CIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iMTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+CiA8ZmllbGQgbmFtZT0iTkVUV09SS19UWVBFX0dQUlMiCiAgdHlwZT0iaW50IgogIHRyYW5zaWVudD0iZmFsc2UiCkBAIC0xNDg3MzIsNiArMTUzNzcwLDM2IEBACiA8ZXhjZXB0aW9uIG5hbWU9IlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiI+CiA8L2V4Y2VwdGlvbj4KIDwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBY3Rpdml0eUxvZ28iCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJhY3Rpdml0eU5hbWUiIHR5cGU9ImFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lIj4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QWN0aXZpdHlMb2dvIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW50ZW50IiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQuSW50ZW50Ij4KKzwvcGFyYW1ldGVyPgorPGV4Y2VwdGlvbiBuYW1lPSJQYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24iPgorPC9leGNlcHRpb24+Cis8L21ldGhvZD4KIDxtZXRob2QgbmFtZT0iZ2V0QWxsUGVybWlzc2lvbkdyb3VwcyIKICByZXR1cm49ImphdmEudXRpbC5MaXN0Jmx0O2FuZHJvaWQuY29udGVudC5wbS5QZXJtaXNzaW9uR3JvdXBJbmZvJmd0OyIKICBhYnN0cmFjdD0iZmFsc2UiCkBAIC0xNDg4MTYsNiArMTUzODg0LDM0IEBACiA8cGFyYW1ldGVyIG5hbWU9ImluZm8iIHR5cGU9ImFuZHJvaWQuY29udGVudC5wbS5BcHBsaWNhdGlvbkluZm8iPgogPC9wYXJhbWV0ZXI+CiA8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0iZ2V0QXBwbGljYXRpb25Mb2dvIgorIHJldHVybj0iYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZSIKKyBhYnN0cmFjdD0iZmFsc2UiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iaW5mbyIgdHlwZT0iYW5kcm9pZC5jb250ZW50LnBtLkFwcGxpY2F0aW9uSW5mbyI+Cis8L3BhcmFtZXRlcj4KKzwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJnZXRBcHBsaWNhdGlvbkxvZ28iCisgcmV0dXJuPSJhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlIgorIGFic3RyYWN0PSJmYWxzZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJwYWNrYWdlTmFtZSIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyI+Cis8L3BhcmFtZXRlcj4KKzxleGNlcHRpb24gbmFtZT0iUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIiB0eXBlPSJhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIj4KKzwvZXhjZXB0aW9uPgorPC9tZXRob2Q+CiA8bWV0aG9kIG5hbWU9ImdldENvbXBvbmVudEVuYWJsZWRTZXR0aW5nIgogIHJldHVybj0iaW50IgogIGFic3RyYWN0PSJmYWxzZSIKQEAgLTE0OTQyMyw2ICsxNTQ1MTksMjEgQEAKIDxwYXJhbWV0ZXIgbmFtZT0iZmxhZ3MiIHR5cGU9ImludCI+CiA8L3BhcmFtZXRlcj4KIDwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJzZXRQYWNrYWdlT2JiUGF0aCIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9InBhY2thZ2VOYW1lIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPHBhcmFtZXRlciBuYW1lPSJwYXRoIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+CiA8L2NsYXNzPgogPGNsYXNzIG5hbWU9Ik1vY2tSZXNvdXJjZXMiCiAgZXh0ZW5kcz0iYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXMiCkBAIC0xNjc4NDksNiArMTcyOTYwLDQ5IEBACiA8L3BhcmFtZXRlcj4KIDwvY29uc3RydWN0b3I+CiA8L2NsYXNzPgorPGNsYXNzIG5hbWU9IklucHV0UXVldWUiCisgZXh0ZW5kcz0iamF2YS5sYW5nLk9iamVjdCIKKyBhYnN0cmFjdD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2NsYXNzPgorPGludGVyZmFjZSBuYW1lPSJJbnB1dFF1ZXVlLkNhbGxiYWNrIgorIGFic3RyYWN0PSJ0cnVlIgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPG1ldGhvZCBuYW1lPSJvbklucHV0UXVldWVDcmVhdGVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJxdWV1ZSIgdHlwZT0iYW5kcm9pZC52aWV3LklucHV0UXVldWUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzxtZXRob2QgbmFtZT0ib25JbnB1dFF1ZXVlRGVzdHJveWVkIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJxdWV1ZSIgdHlwZT0iYW5kcm9pZC52aWV3LklucHV0UXVldWUiPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KKzwvaW50ZXJmYWNlPgogPGNsYXNzIG5hbWU9IktleUNoYXJhY3Rlck1hcCIKICBleHRlbmRzPSJqYXZhLmxhbmcuT2JqZWN0IgogIGFic3RyYWN0PSJmYWxzZSIKQEAgLTE2OTYzNyw2ICsxNzQ3OTEsMjggQEAKICB2aXNpYmlsaXR5PSJwdWJsaWMiCiA+CiA8L2ZpZWxkPgorPGZpZWxkIG5hbWU9IktFWUNPREVfUEFHRV9ET1dOIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOTMiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9QQUdFX1VQIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOTIiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+CiA8ZmllbGQgbmFtZT0iS0VZQ09ERV9QRVJJT0QiCiAgdHlwZT0iaW50IgogIHRyYW5zaWVudD0iZmFsc2UiCkBAIC0xNjk2NDgsNiArMTc0ODI0LDE3IEBACiAgdmlzaWJpbGl0eT0icHVibGljIgogPgogPC9maWVsZD4KKzxmaWVsZCBuYW1lPSJLRVlDT0RFX1BJQ1RTWU1CT0xTIgorIHR5cGU9ImludCIKKyB0cmFuc2llbnQ9ImZhbHNlIgorIHZvbGF0aWxlPSJmYWxzZSIKKyB2YWx1ZT0iOTQiCisgc3RhdGljPSJ0cnVlIgorIGZpbmFsPSJ0cnVlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzwvZmllbGQ+CiA8ZmllbGQgbmFtZT0iS0VZQ09ERV9QTFVTIgogIHR5cGU9ImludCIKICB0cmFuc2llbnQ9ImZhbHNlIgpAQCAtMTY5ODI0LDYgKzE3NTAxMSwxNyBAQAogIHZpc2liaWxpdHk9InB1YmxpYyIKID4KIDwvZmllbGQ+Cis8ZmllbGQgbmFtZT0iS0VZQ09ERV9TV0lUQ0hfQ0hBUlNFVCIKKyB0eXBlPSJpbnQiCisgdHJhbnNpZW50PSJmYWxzZSIKKyB2b2xhdGlsZT0iZmFsc2UiCisgdmFsdWU9Ijk1IgorIHN0YXRpYz0idHJ1ZSIKKyBmaW5hbD0idHJ1ZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L2ZpZWxkPgogPGZpZWxkIG5hbWU9IktFWUNPREVfU1lNIgogIHR5cGU9ImludCIKICB0cmFuc2llbnQ9ImZhbHNlIgpAQCAtMTcxODQ5LDcgKzE3NzA0Nyw3IEBACiAgc3luY2hyb25pemVkPSJmYWxzZSIKICBzdGF0aWM9InRydWUiCiAgZmluYWw9ImZhbHNlIgotIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIGRlcHJlY2F0ZWQ9ImRlcHJlY2F0ZWQiCiAgdmlzaWJpbGl0eT0icHVibGljIgogPgogPHBhcmFtZXRlciBuYW1lPSJkb3duVGltZSIgdHlwZT0ibG9uZyI+CkBAIC0xNzE5NDksNyArMTc3MTQ3LDcgQEAKICBuYXRpdmU9ImZhbHNlIgogIHN5bmNocm9uaXplZD0iZmFsc2UiCiAgc3RhdGljPSJmYWxzZSIKLSBmaW5hbD0iZmFsc2UiCisgZmluYWw9InRydWUiCiAgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCiAgdmlzaWJpbGl0eT0icHVibGljIgogPgpAQCAtMTgyMjU4LDYgKzE4NzQ1NiwxOSBAQAogPHBhcmFtZXRlciBuYW1lPSJldmVudCIgdHlwZT0iYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50Ij4KIDwvcGFyYW1ldGVyPgogPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9InRha2VJbnB1dFF1ZXVlIgorIHJldHVybj0idm9pZCIKKyBhYnN0cmFjdD0idHJ1ZSIKKyBuYXRpdmU9ImZhbHNlIgorIHN5bmNocm9uaXplZD0iZmFsc2UiCisgc3RhdGljPSJmYWxzZSIKKyBmaW5hbD0iZmFsc2UiCisgZGVwcmVjYXRlZD0ibm90IGRlcHJlY2F0ZWQiCisgdmlzaWJpbGl0eT0icHVibGljIgorPgorPHBhcmFtZXRlciBuYW1lPSJjYWxsYmFjayIgdHlwZT0iYW5kcm9pZC52aWV3LklucHV0UXVldWUuQ2FsbGJhY2siPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KIDxtZXRob2QgbmFtZT0idGFrZUtleUV2ZW50cyIKICByZXR1cm49InZvaWQiCiAgYWJzdHJhY3Q9InRydWUiCkBAIC0xODIyNzEsNiArMTg3NDgyLDE5IEBACiA8cGFyYW1ldGVyIG5hbWU9ImdldCIgdHlwZT0iYm9vbGVhbiI+CiA8L3BhcmFtZXRlcj4KIDwvbWV0aG9kPgorPG1ldGhvZCBuYW1lPSJ0YWtlU3VyZmFjZSIKKyByZXR1cm49InZvaWQiCisgYWJzdHJhY3Q9InRydWUiCisgbmF0aXZlPSJmYWxzZSIKKyBzeW5jaHJvbml6ZWQ9ImZhbHNlIgorIHN0YXRpYz0iZmFsc2UiCisgZmluYWw9ImZhbHNlIgorIGRlcHJlY2F0ZWQ9Im5vdCBkZXByZWNhdGVkIgorIHZpc2liaWxpdHk9InB1YmxpYyIKKz4KKzxwYXJhbWV0ZXIgbmFtZT0iY2FsbGJhY2siIHR5cGU9ImFuZHJvaWQudmlldy5TdXJmYWNlSG9sZGVyLkNhbGxiYWNrIj4KKzwvcGFyYW1ldGVyPgorPC9tZXRob2Q+CiA8bWV0aG9kIG5hbWU9InRvZ2dsZVBhbmVsIgogIHJldHVybj0idm9pZCIKICBhYnN0cmFjdD0idHJ1ZSIKQEAgLTIwNjY1NCw2ICsyMTE4NzgsMTcgQEAKIDxwYXJhbWV0ZXIgbmFtZT0icGFyZW50IiB0eXBlPSJhbmRyb2lkLnZpZXcuVmlld0dyb3VwIj4KIDwvcGFyYW1ldGVyPgogPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImNsb25lIgorIHJldHVybj0iYW5kcm9pZC53aWRnZXQuUmVtb3RlVmlld3MiCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8L21ldGhvZD4KIDxtZXRob2QgbmFtZT0iZGVzY3JpYmVDb250ZW50cyIKICByZXR1cm49ImludCIKICBhYnN0cmFjdD0iZmFsc2UiCkBAIC0yMTQwMjEsNyArMjE5MjU2LDcgQEAKICBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKICB2aXNpYmlsaXR5PSJwdWJsaWMiCiA+Ci08cGFyYW1ldGVyIG5hbWU9ImFyZzAiIHR5cGU9IlQiPgorPHBhcmFtZXRlciBuYW1lPSJ0IiB0eXBlPSJUIj4KIDwvcGFyYW1ldGVyPgogPC9tZXRob2Q+CiA8L2ludGVyZmFjZT4KQEAgLTIxNjgzMiw2ICsyMjIwNjcsMTkgQEAKIDxwYXJhbWV0ZXIgbmFtZT0icGFyZW50IiB0eXBlPSJqYXZhLmxhbmcuQ2xhc3NMb2FkZXIiPgogPC9wYXJhbWV0ZXI+CiA8L2NvbnN0cnVjdG9yPgorPG1ldGhvZCBuYW1lPSJmaW5kTGlicmFyeSIKKyByZXR1cm49ImphdmEubGFuZy5TdHJpbmciCisgYWJzdHJhY3Q9ImZhbHNlIgorIG5hdGl2ZT0iZmFsc2UiCisgc3luY2hyb25pemVkPSJmYWxzZSIKKyBzdGF0aWM9ImZhbHNlIgorIGZpbmFsPSJmYWxzZSIKKyBkZXByZWNhdGVkPSJub3QgZGVwcmVjYXRlZCIKKyB2aXNpYmlsaXR5PSJwdWJsaWMiCis+Cis8cGFyYW1ldGVyIG5hbWU9ImxpYm5hbWUiIHR5cGU9ImphdmEubGFuZy5TdHJpbmciPgorPC9wYXJhbWV0ZXI+Cis8L21ldGhvZD4KIDwvY2xhc3M+CiA8Y2xhc3MgbmFtZT0iUG90ZW50aWFsRGVhZGxvY2tFcnJvciIKICBleHRlbmRzPSJqYXZhLmxhbmcuVmlydHVhbE1hY2hpbmVFcnJvciIKZGlmZiAtLWdpdCBhL2NhbWVyYS9saWJjYW1lcmFzZXJ2aWNlL0FuZHJvaWQubWsgYi9jYW1lcmEvbGliY2FtZXJhc2VydmljZS9BbmRyb2lkLm1rCmluZGV4IGRmNWMxNjYuLjg3OTc1YWYgMTAwNjQ0Ci0tLSBhL2NhbWVyYS9saWJjYW1lcmFzZXJ2aWNlL0FuZHJvaWQubWsKKysrIGIvY2FtZXJhL2xpYmNhbWVyYXNlcnZpY2UvQW5kcm9pZC5tawpAQCAtMSwxNSArMSwxNCBAQAogTE9DQUxfUEFUSDo9ICQoY2FsbCBteS1kaXIpCiAKLSMKLSMgU2V0IFVTRV9DQU1FUkFfU1RVQiBmb3Igbm9uLWVtdWxhdG9yIGFuZCBub24tc2ltdWxhdG9yIGJ1aWxkcywgaWYgeW91IHdhbnQKLSMgdGhlIGNhbWVyYSBzZXJ2aWNlIHRvIHVzZSB0aGUgZmFrZSBjYW1lcmEuICBGb3IgZW11bGF0b3Igb3Igc2ltdWxhdG9yIGJ1aWxkcywKLSMgd2UgYWx3YXlzIHVzZSB0aGUgZmFrZSBjYW1lcmEuCisjIFNldCBVU0VfQ0FNRVJBX1NUVUIgaWYgeW91IGRvbid0IHdhbnQgdG8gdXNlIHRoZSBoYXJkd2FyZSBjYW1lcmEuCisKKyMgZm9yY2UgdGhlc2UgYnVpbGRzIHRvIHVzZSBjYW1lcmEgc3R1YiBvbmx5CitpZm5lcSAoJChmaWx0ZXIgc29vbmVyIGdlbmVyaWMgc2ltLCQoVEFSR0VUX0RFVklDRSkpLCkKKyAgVVNFX0NBTUVSQV9TVFVCOj10cnVlCitlbmRpZgogCiBpZmVxICgkKFVTRV9DQU1FUkFfU1RVQiksKQotVVNFX0NBTUVSQV9TVFVCOj1mYWxzZQotaWZuZXEgKCQoZmlsdGVyIHNvb25lciBnZW5lcmljIHNpbSwkKFRBUkdFVF9ERVZJQ0UpKSwpCi1VU0VfQ0FNRVJBX1NUVUI6PXRydWUKLWVuZGlmICNsaWJjYW1lcmFzdHViCisgIFVTRV9DQU1FUkFfU1RVQjo9ZmFsc2UKIGVuZGlmCiAKIGlmZXEgKCQoVVNFX0NBTUVSQV9TVFVCKSx0cnVlKQpAQCAtNTQsMTggKzUzLDE0IEBACiAKIExPQ0FMX01PRFVMRTo9IGxpYmNhbWVyYXNlcnZpY2UKIAotTE9DQUxfQ0ZMQUdTICs9IC1ETE9HX1RBRz1cIkNhbWVyYVNlcnZpY2VcIgotCiBpZmVxICgkKFRBUkdFVF9TSU1VTEFUT1IpLHRydWUpCiBMT0NBTF9DRkxBR1MgKz0gLURTSU5HTEVfUFJPQ0VTUwogZW5kaWYKIAogaWZlcSAoJChVU0VfQ0FNRVJBX1NUVUIpLCB0cnVlKQogTE9DQUxfU1RBVElDX0xJQlJBUklFUyArPSBsaWJjYW1lcmFzdHViCi1MT0NBTF9DRkxBR1MgKz0gLWluY2x1ZGUgQ2FtZXJhSGFyZHdhcmVTdHViLmgKIGVsc2UKIExPQ0FMX1NIQVJFRF9MSUJSQVJJRVMgKz0gbGliY2FtZXJhIAogZW5kaWYKIAogaW5jbHVkZSAkKEJVSUxEX1NIQVJFRF9MSUJSQVJZKQotCmRpZmYgLS1naXQgYS9jYW1lcmEvbGliY2FtZXJhc2VydmljZS9DYW1lcmFIYXJkd2FyZVN0dWIuY3BwIGIvY2FtZXJhL2xpYmNhbWVyYXNlcnZpY2UvQ2FtZXJhSGFyZHdhcmVTdHViLmNwcAppbmRleCA4YjY2Mzg5Li5iM2UwZWU2IDEwMDY0NAotLS0gYS9jYW1lcmEvbGliY2FtZXJhc2VydmljZS9DYW1lcmFIYXJkd2FyZVN0dWIuY3BwCisrKyBiL2NhbWVyYS9saWJjYW1lcmFzZXJ2aWNlL0NhbWVyYUhhcmR3YXJlU3R1Yi5jcHAKQEAgLTQ3LDE0ICs0NywxNCBAQAogewogICAgIENhbWVyYVBhcmFtZXRlcnMgcDsKIAotICAgIHAuc2V0KCJwcmV2aWV3LXNpemUtdmFsdWVzIiwiMzIweDI0MCIpOworICAgIHAuc2V0KENhbWVyYVBhcmFtZXRlcnM6OktFWV9TVVBQT1JURURfUFJFVklFV19TSVpFUywgIjMyMHgyNDAiKTsKICAgICBwLnNldFByZXZpZXdTaXplKDMyMCwgMjQwKTsKICAgICBwLnNldFByZXZpZXdGcmFtZVJhdGUoMTUpOwotICAgIHAuc2V0UHJldmlld0Zvcm1hdCgieXV2NDIyc3AiKTsKKyAgICBwLnNldFByZXZpZXdGb3JtYXQoQ2FtZXJhUGFyYW1ldGVyczo6UElYRUxfRk9STUFUX1lVVjQyMFNQKTsKIAotICAgIHAuc2V0KCJwaWN0dXJlLXNpemUtdmFsdWVzIiwgIjMyMHgyNDAiKTsKKyAgICBwLnNldChDYW1lcmFQYXJhbWV0ZXJzOjpLRVlfU1VQUE9SVEVEX1BJQ1RVUkVfU0laRVMsICIzMjB4MjQwIik7CiAgICAgcC5zZXRQaWN0dXJlU2l6ZSgzMjAsIDI0MCk7Ci0gICAgcC5zZXRQaWN0dXJlRm9ybWF0KCJqcGVnIik7CisgICAgcC5zZXRQaWN0dXJlRm9ybWF0KENhbWVyYVBhcmFtZXRlcnM6OlBJWEVMX0ZPUk1BVF9KUEVHKTsKIAogICAgIGlmIChzZXRQYXJhbWV0ZXJzKHApICE9IE5PX0VSUk9SKSB7CiAgICAgICAgIExPR0UoIkZhaWxlZCB0byBzZXQgZGVmYXVsdCBwYXJhbWV0ZXJzPyEiKTsKQEAgLTY2LDE0ICs2NiwxNCBAQAogICAgIC8vIENyZWF0ZSByYXcgaGVhcC4KICAgICBpbnQgcGljdHVyZV93aWR0aCwgcGljdHVyZV9oZWlnaHQ7CiAgICAgbVBhcmFtZXRlcnMuZ2V0UGljdHVyZVNpemUoJnBpY3R1cmVfd2lkdGgsICZwaWN0dXJlX2hlaWdodCk7Ci0gICAgbVJhd0hlYXAgPSBuZXcgTWVtb3J5SGVhcEJhc2UocGljdHVyZV93aWR0aCAqIDIgKiBwaWN0dXJlX2hlaWdodCk7CisgICAgbVJhd0hlYXAgPSBuZXcgTWVtb3J5SGVhcEJhc2UocGljdHVyZV93aWR0aCAqIHBpY3R1cmVfaGVpZ2h0ICogMyAvIDIpOwogCiAgICAgaW50IHByZXZpZXdfd2lkdGgsIHByZXZpZXdfaGVpZ2h0OwogICAgIG1QYXJhbWV0ZXJzLmdldFByZXZpZXdTaXplKCZwcmV2aWV3X3dpZHRoLCAmcHJldmlld19oZWlnaHQpOwogICAgIExPR0QoImluaXRIZWFwTG9ja2VkOiBwcmV2aWV3IHNpemU9JWR4JWQiLCBwcmV2aWV3X3dpZHRoLCBwcmV2aWV3X2hlaWdodCk7CiAKLSAgICAvLyBOb3RlIHRoYXQgd2UgZW5mb3JjZSB5dXY0MjIgaW4gc2V0UGFyYW1ldGVycygpLgotICAgIGludCBob3dfYmlnID0gcHJldmlld193aWR0aCAqIHByZXZpZXdfaGVpZ2h0ICogMjsKKyAgICAvLyBOb3RlIHRoYXQgd2UgZW5mb3JjZSB5dXY0MjBzcCBpbiBzZXRQYXJhbWV0ZXJzKCkuCisgICAgaW50IGhvd19iaWcgPSBwcmV2aWV3X3dpZHRoICogcHJldmlld19oZWlnaHQgKiAzIC8gMjsKIAogICAgIC8vIElmIHdlIGFyZSBiZWluZyByZWluaXRpYWxpemVkIHRvIHRoZSBzYW1lIHNpemUgYXMgYmVmb3JlLCBubwogICAgIC8vIHdvcmsgbmVlZHMgdG8gYmUgZG9uZS4KQEAgLTk5LDcgKzk5LDYgQEAKIHsKICAgICBkZWxldGUgbUZha2VDYW1lcmE7CiAgICAgbUZha2VDYW1lcmEgPSAwOyAvLyBwYXJhbm9pYQotICAgIHNpbmdsZXRvbi5jbGVhcigpOwogfQogCiBzcDxJTWVtb3J5SGVhcD4gQ2FtZXJhSGFyZHdhcmVTdHViOjpnZXRQcmV2aWV3SGVhcCgpIGNvbnN0CkBAIC0xNzUsNyArMTc0LDcgQEAKIAogICAgICAgICAvLyBGaWxsIHRoZSBjdXJyZW50IGZyYW1lIHdpdGggdGhlIGZha2UgY2FtZXJhLgogICAgICAgICB1aW50OF90ICpmcmFtZSA9ICgodWludDhfdCAqKWJhc2UpICsgb2Zmc2V0OwotICAgICAgICBmYWtlQ2FtZXJhLT5nZXROZXh0RnJhbWVBc1l1djQyMihmcmFtZSk7CisgICAgICAgIGZha2VDYW1lcmEtPmdldE5leHRGcmFtZUFzWXV2NDIwKGZyYW1lKTsKIAogICAgICAgICAvL0xPR1YoInByZXZpZXdUaHJlYWQ6IGdlbmVyYXRlZCBmcmFtZSB0byBidWZmZXIgJWQiLCBtQ3VycmVudFByZXZpZXdGcmFtZSk7CiAKQEAgLTI4OCw5ICsyODcsOSBAQAogICAgICAgICAvLyBJbiB0aGUgbWVhbnRpbWUganVzdCBtYWtlIGFub3RoZXIgZmFrZSBjYW1lcmEgcGljdHVyZS4KICAgICAgICAgaW50IHcsIGg7CiAgICAgICAgIG1QYXJhbWV0ZXJzLmdldFBpY3R1cmVTaXplKCZ3LCAmaCk7Ci0gICAgICAgIHNwPE1lbW9yeUJhc2U+IG1lbSA9IG5ldyBNZW1vcnlCYXNlKG1SYXdIZWFwLCAwLCB3ICogMiAqIGgpOworICAgICAgICBzcDxNZW1vcnlCYXNlPiBtZW0gPSBuZXcgTWVtb3J5QmFzZShtUmF3SGVhcCwgMCwgdyAqIGggKiAzIC8gMik7CiAgICAgICAgIEZha2VDYW1lcmEgY2FtKHcsIGgpOwotICAgICAgICBjYW0uZ2V0TmV4dEZyYW1lQXNZdXY0MjIoKHVpbnQ4X3QgKiltUmF3SGVhcC0+YmFzZSgpKTsKKyAgICAgICAgY2FtLmdldE5leHRGcmFtZUFzWXV2NDIwKCh1aW50OF90ICopbVJhd0hlYXAtPmJhc2UoKSk7CiAgICAgICAgIG1EYXRhQ2IoQ0FNRVJBX01TR19SQVdfSU1BR0UsIG1lbSwgbUNhbGxiYWNrQ29va2llKTsKICAgICB9CiAKQEAgLTMwNyw3ICszMDYsNyBAQAogewogICAgIHN0b3BQcmV2aWV3KCk7CiAgICAgaWYgKGNyZWF0ZVRocmVhZChiZWdpblBpY3R1cmVUaHJlYWQsIHRoaXMpID09IGZhbHNlKQotICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIHJldHVybiBVTktOT1dOX0VSUk9SOwogICAgIHJldHVybiBOT19FUlJPUjsKIH0KIApAQCAtMzM5LDEyICszMzgsMTQgQEAKICAgICBNdXRleDo6QXV0b2xvY2sgbG9jayhtTG9jayk7CiAgICAgLy8gWFhYIHZlcmlmeSBwYXJhbXMKIAotICAgIGlmIChzdHJjbXAocGFyYW1zLmdldFByZXZpZXdGb3JtYXQoKSwgInl1djQyMnNwIikgIT0gMCkgewotICAgICAgICBMT0dFKCJPbmx5IHl1djQyMnNwIHByZXZpZXcgaXMgc3VwcG9ydGVkIik7CisgICAgaWYgKHN0cmNtcChwYXJhbXMuZ2V0UHJldmlld0Zvcm1hdCgpLAorICAgICAgICBDYW1lcmFQYXJhbWV0ZXJzOjpQSVhFTF9GT1JNQVRfWVVWNDIwU1ApICE9IDApIHsKKyAgICAgICAgTE9HRSgiT25seSB5dXY0MjBzcCBwcmV2aWV3IGlzIHN1cHBvcnRlZCIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgaWYgKHN0cmNtcChwYXJhbXMuZ2V0UGljdHVyZUZvcm1hdCgpLCAianBlZyIpICE9IDApIHsKKyAgICBpZiAoc3RyY21wKHBhcmFtcy5nZXRQaWN0dXJlRm9ybWF0KCksCisgICAgICAgIENhbWVyYVBhcmFtZXRlcnM6OlBJWEVMX0ZPUk1BVF9KUEVHKSAhPSAwKSB7CiAgICAgICAgIExPR0UoIk9ubHkganBlZyBzdGlsbCBwaWN0dXJlcyBhcmUgc3VwcG9ydGVkIik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CkBAIC0zNzksMjIgKzM4MCwyOSBAQAogewogfQogCi13cDxDYW1lcmFIYXJkd2FyZUludGVyZmFjZT4gQ2FtZXJhSGFyZHdhcmVTdHViOjpzaW5nbGV0b247Ci0KIHNwPENhbWVyYUhhcmR3YXJlSW50ZXJmYWNlPiBDYW1lcmFIYXJkd2FyZVN0dWI6OmNyZWF0ZUluc3RhbmNlKCkKIHsKLSAgICBpZiAoc2luZ2xldG9uICE9IDApIHsKLSAgICAgICAgc3A8Q2FtZXJhSGFyZHdhcmVJbnRlcmZhY2U+IGhhcmR3YXJlID0gc2luZ2xldG9uLnByb21vdGUoKTsKLSAgICAgICAgaWYgKGhhcmR3YXJlICE9IDApIHsKLSAgICAgICAgICAgIHJldHVybiBoYXJkd2FyZTsKLSAgICAgICAgfQotICAgIH0KLSAgICBzcDxDYW1lcmFIYXJkd2FyZUludGVyZmFjZT4gaGFyZHdhcmUobmV3IENhbWVyYUhhcmR3YXJlU3R1YigpKTsKLSAgICBzaW5nbGV0b24gPSBoYXJkd2FyZTsKLSAgICByZXR1cm4gaGFyZHdhcmU7CisgICAgcmV0dXJuIG5ldyBDYW1lcmFIYXJkd2FyZVN0dWIoKTsKIH0KIAotZXh0ZXJuICJDIiBzcDxDYW1lcmFIYXJkd2FyZUludGVyZmFjZT4gb3BlbkNhbWVyYUhhcmR3YXJlKCkKK3N0YXRpYyBDYW1lcmFJbmZvIHNDYW1lcmFJbmZvW10gPSB7CisgICAgeworICAgICAgICBDQU1FUkFfRkFDSU5HX0JBQ0ssCisgICAgICAgIDkwLCAgLyogb3JpZW50YXRpb24gKi8KKyAgICB9Cit9OworCitleHRlcm4gIkMiIGludCBIQUxfZ2V0TnVtYmVyT2ZDYW1lcmFzKCkKK3sKKyAgICByZXR1cm4gc2l6ZW9mKHNDYW1lcmFJbmZvKSAvIHNpemVvZihzQ2FtZXJhSW5mb1swXSk7Cit9CisKK2V4dGVybiAiQyIgdm9pZCBIQUxfZ2V0Q2FtZXJhSW5mbyhpbnQgY2FtZXJhSWQsIHN0cnVjdCBDYW1lcmFJbmZvKiBjYW1lcmFJbmZvKQoreworICAgIG1lbWNweShjYW1lcmFJbmZvLCAmc0NhbWVyYUluZm9bY2FtZXJhSWRdLCBzaXplb2YoQ2FtZXJhSW5mbykpOworfQorCitleHRlcm4gIkMiIHNwPENhbWVyYUhhcmR3YXJlSW50ZXJmYWNlPiBIQUxfb3BlbkNhbWVyYUhhcmR3YXJlKGludCBjYW1lcmFJZCkKIHsKICAgICByZXR1cm4gQ2FtZXJhSGFyZHdhcmVTdHViOjpjcmVhdGVJbnN0YW5jZSgpOwogfQpkaWZmIC0tZ2l0IGEvY2FtZXJhL2xpYmNhbWVyYXNlcnZpY2UvQ2FtZXJhSGFyZHdhcmVTdHViLmggYi9jYW1lcmEvbGliY2FtZXJhc2VydmljZS9DYW1lcmFIYXJkd2FyZVN0dWIuaAppbmRleCA5NTc4MTNhNC4uZDM0MjdiYSAxMDA2NDQKLS0tIGEvY2FtZXJhL2xpYmNhbWVyYXNlcnZpY2UvQ2FtZXJhSGFyZHdhcmVTdHViLmgKKysrIGIvY2FtZXJhL2xpYmNhbWVyYXNlcnZpY2UvQ2FtZXJhSGFyZHdhcmVTdHViLmgKQEAgLTY3LDggKzY3LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIENhbWVyYUhhcmR3YXJlU3R1YigpOwogICAgIHZpcnR1YWwgICAgICAgICAgICAgfkNhbWVyYUhhcmR3YXJlU3R1YigpOwogCi0gICAgc3RhdGljIHdwPENhbWVyYUhhcmR3YXJlSW50ZXJmYWNlPiBzaW5nbGV0b247Ci0KICAgICBzdGF0aWMgY29uc3QgaW50IGtCdWZmZXJDb3VudCA9IDQ7CiAKICAgICBjbGFzcyBQcmV2aWV3VGhyZWFkIDogcHVibGljIFRocmVhZCB7CmRpZmYgLS1naXQgYS9jYW1lcmEvbGliY2FtZXJhc2VydmljZS9DYW1lcmFTZXJ2aWNlLmNwcCBiL2NhbWVyYS9saWJjYW1lcmFzZXJ2aWNlL0NhbWVyYVNlcnZpY2UuY3BwCmluZGV4IDI2OTAxODIuLjEwNjY4YTQgMTAwNjQ0Ci0tLSBhL2NhbWVyYS9saWJjYW1lcmFzZXJ2aWNlL0NhbWVyYVNlcnZpY2UuY3BwCisrKyBiL2NhbWVyYS9saWJjYW1lcmFzZXJ2aWNlL0NhbWVyYVNlcnZpY2UuY3BwCkBAIC0xNywzODMgKzE3LDQzNCBAQAogKi8KIAogI2RlZmluZSBMT0dfVEFHICJDYW1lcmFTZXJ2aWNlIgotI2luY2x1ZGUgPHV0aWxzL0xvZy5oPgogCi0jaW5jbHVkZSA8YmluZGVyL0lTZXJ2aWNlTWFuYWdlci5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8cHRocmVhZC5oPgorCiAjaW5jbHVkZSA8YmluZGVyL0lQQ1RocmVhZFN0YXRlLmg+Ci0jaW5jbHVkZSA8dXRpbHMvU3RyaW5nMTYuaD4KLSNpbmNsdWRlIDx1dGlscy9FcnJvcnMuaD4KKyNpbmNsdWRlIDxiaW5kZXIvSVNlcnZpY2VNYW5hZ2VyLmg+CiAjaW5jbHVkZSA8YmluZGVyL01lbW9yeUJhc2UuaD4KICNpbmNsdWRlIDxiaW5kZXIvTWVtb3J5SGVhcEJhc2UuaD4KLSNpbmNsdWRlIDxjYW1lcmEvSUNhbWVyYVNlcnZpY2UuaD4KKyNpbmNsdWRlIDxjdXRpbHMvYXRvbWljLmg+CisjaW5jbHVkZSA8aGFyZHdhcmUvaGFyZHdhcmUuaD4KKyNpbmNsdWRlIDxtZWRpYS9BdWRpb1N5c3RlbS5oPgorI2luY2x1ZGUgPG1lZGlhL21lZGlhcGxheWVyLmg+CiAjaW5jbHVkZSA8c3VyZmFjZWZsaW5nZXIvSVN1cmZhY2UuaD4KICNpbmNsdWRlIDx1aS9PdmVybGF5Lmg+CisjaW5jbHVkZSA8dXRpbHMvRXJyb3JzLmg+CisjaW5jbHVkZSA8dXRpbHMvTG9nLmg+CisjaW5jbHVkZSA8dXRpbHMvU3RyaW5nMTYuaD4KIAotI2luY2x1ZGUgPGhhcmR3YXJlL2hhcmR3YXJlLmg+Ci0KLSNpbmNsdWRlIDxtZWRpYS9tZWRpYXBsYXllci5oPgotI2luY2x1ZGUgPG1lZGlhL0F1ZGlvU3lzdGVtLmg+CiAjaW5jbHVkZSAiQ2FtZXJhU2VydmljZS5oIgogCi0jaW5jbHVkZSA8Y3V0aWxzL2F0b21pYy5oPgotCiBuYW1lc3BhY2UgYW5kcm9pZCB7CiAKLWV4dGVybiAiQyIgewotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSNpbmNsdWRlIDxmY250bC5oPgotI2luY2x1ZGUgPHB0aHJlYWQuaD4KLSNpbmNsdWRlIDxzaWduYWwuaD4KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIExvZ2dpbmcgc3VwcG9ydCAtLSB0aGlzIGlzIGZvciBkZWJ1Z2dpbmcgb25seQorLy8gVXNlICJhZGIgc2hlbGwgZHVtcHN5cyBtZWRpYS5jYW1lcmEgLXYgMSIgdG8gY2hhbmdlIGl0Lgorc3RhdGljIHZvbGF0aWxlIGludDMyX3QgZ0xvZ0xldmVsID0gMDsKKworI2RlZmluZSBMT0cxKC4uLikgTE9HRF9JRihnTG9nTGV2ZWwgPj0gMSwgX19WQV9BUkdTX18pOworI2RlZmluZSBMT0cyKC4uLikgTE9HRF9JRihnTG9nTGV2ZWwgPj0gMiwgX19WQV9BUkdTX18pOworCitzdGF0aWMgdm9pZCBzZXRMb2dMZXZlbChpbnQgbGV2ZWwpIHsKKyAgICBhbmRyb2lkX2F0b21pY193cml0ZShsZXZlbCwgJmdMb2dMZXZlbCk7CiB9CiAKLS8vIFdoZW4geW91IGVuYWJsZSB0aGlzLCBhcyB3ZWxsIGFzIERFQlVHX1JFRlM9MSBhbmQKLS8vIERFQlVHX1JFRlNfRU5BQkxFRF9CWV9ERUZBVUxUPTAgaW4gbGlidXRpbHMvUmVmQmFzZS5jcHAsIHRoaXMgd2lsbCB0cmFjayBhbGwKLS8vIHJlZmVyZW5jZXMgdG8gdGhlIENhbWVyYVNlcnZpY2U6OkNsaWVudCBpbiBvcmRlciB0byBjYXRjaCB0aGUgY2FzZSB3aGVyZSB0aGUKLS8vIGNsaWVudCBpcyBiZWluZyBkZXN0cm95ZWQgd2hpbGUgYSBjYWxsYmFjayBmcm9tIHRoZSBDYW1lcmFIYXJkd2FyZUludGVyZmFjZQotLy8gaXMgb3V0c3RhbmRpbmcuICBUaGlzIGlzIGEgc2VyaW91cyBidWcgYmVjYXVzZSBpZiB3ZSBtYWtlIGFub3RoZXIgY2FsbCBpbnRvCi0vLyBDYW1lcmFIYXJkd3JlSW50ZXJmYWNlIHRoYXQgaXRzZWxmIHRyaWdnZXJzIGEgY2FsbGJhY2ssIHdlIHdpbGwgZGVhZGxvY2suCi0KLSNkZWZpbmUgREVCVUdfQ0xJRU5UX1JFRkVSRU5DRVMgMAotCi0jZGVmaW5lIFBJQ1RVUkVfVElNRU9VVCBzZWNvbmRzKDUpCi0KLSNkZWZpbmUgREVCVUdfRFVNUF9QUkVWSUVXX0ZSQU1FX1RPX0ZJTEUgMCAvKiBuLXRoIGZyYW1lIHRvIHdyaXRlICovCi0jZGVmaW5lIERFQlVHX0RVTVBfSlBFR19TTkFQU0hPVF9UT19GSUxFIDAKLSNkZWZpbmUgREVCVUdfRFVNUF9ZVVZfU05BUFNIT1RfVE9fRklMRSAwCi0jZGVmaW5lIERFQlVHX0RVTVBfUE9TVFZJRVdfU05BUFNIT1RfVE9fRklMRSAwCi0KLSNpZiBERUJVR19EVU1QX1BSRVZJRVdfRlJBTUVfVE9fRklMRQotc3RhdGljIGludCBkZWJ1Z19mcmFtZV9jbnQ7Ci0jZW5kaWYKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogc3RhdGljIGludCBnZXRDYWxsaW5nUGlkKCkgewogICAgIHJldHVybiBJUENUaHJlYWRTdGF0ZTo6c2VsZigpLT5nZXRDYWxsaW5nUGlkKCk7CiB9CiAKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotdm9pZCBDYW1lcmFTZXJ2aWNlOjppbnN0YW50aWF0ZSgpIHsKLSAgICBkZWZhdWx0U2VydmljZU1hbmFnZXIoKS0+YWRkU2VydmljZSgKLSAgICAgICAgICAgIFN0cmluZzE2KCJtZWRpYS5jYW1lcmEiKSwgbmV3IENhbWVyYVNlcnZpY2UoKSk7CitzdGF0aWMgaW50IGdldENhbGxpbmdVaWQoKSB7CisgICAgcmV0dXJuIElQQ1RocmVhZFN0YXRlOjpzZWxmKCktPmdldENhbGxpbmdVaWQoKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1DYW1lcmFTZXJ2aWNlOjpDYW1lcmFTZXJ2aWNlKCkgOgotICAgIEJuQ2FtZXJhU2VydmljZSgpCi17Ci0gICAgTE9HSSgiQ2FtZXJhU2VydmljZSBzdGFydGVkOiBwaWQ9JWQiLCBnZXRwaWQoKSk7Ci0gICAgbVVzZXJzID0gMDsKLX0KKy8vIFRoaXMgaXMgdWdseSBhbmQgb25seSBzYWZlIGlmIHdlIG5ldmVyIHJlLWNyZWF0ZSB0aGUgQ2FtZXJhU2VydmljZSwgYnV0CisvLyBzaG91bGQgYmUgb2sgZm9yIG5vdy4KK3N0YXRpYyBDYW1lcmFTZXJ2aWNlICpnQ2FtZXJhU2VydmljZTsKIAotQ2FtZXJhU2VydmljZTo6fkNhbWVyYVNlcnZpY2UoKQorQ2FtZXJhU2VydmljZTo6Q2FtZXJhU2VydmljZSgpCis6bVNvdW5kUmVmKDApCiB7Ci0gICAgaWYgKG1DbGllbnQgIT0gMCkgewotICAgICAgICBMT0dFKCJtQ2xpZW50IHdhcyBzdGlsbCBjb25uZWN0ZWQgaW4gZGVzdHJ1Y3RvciEiKTsKKyAgICBMT0dJKCJDYW1lcmFTZXJ2aWNlIHN0YXJ0ZWQgKHBpZD0lZCkiLCBnZXRwaWQoKSk7CisKKyAgICBtTnVtYmVyT2ZDYW1lcmFzID0gSEFMX2dldE51bWJlck9mQ2FtZXJhcygpOworICAgIGlmIChtTnVtYmVyT2ZDYW1lcmFzID4gTUFYX0NBTUVSQVMpIHsKKyAgICAgICAgTE9HRSgiTnVtYmVyIG9mIGNhbWVyYXMoJWQpID4gTUFYX0NBTUVSQVMoJWQpLiIsCisgICAgICAgICAgICAgbU51bWJlck9mQ2FtZXJhcywgTUFYX0NBTUVSQVMpOworICAgICAgICBtTnVtYmVyT2ZDYW1lcmFzID0gTUFYX0NBTUVSQVM7CiAgICAgfQorCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtTnVtYmVyT2ZDYW1lcmFzOyBpKyspIHsKKyAgICAgICAgc2V0Q2FtZXJhRnJlZShpKTsKKyAgICB9CisKKyAgICBnQ2FtZXJhU2VydmljZSA9IHRoaXM7CiB9CiAKLXNwPElDYW1lcmE+IENhbWVyYVNlcnZpY2U6OmNvbm5lY3QoY29uc3Qgc3A8SUNhbWVyYUNsaWVudD4mIGNhbWVyYUNsaWVudCkKLXsKLSAgICBpbnQgY2FsbGluZ1BpZCA9IGdldENhbGxpbmdQaWQoKTsKLSAgICBMT0dWKCJDYW1lcmFTZXJ2aWNlOjpjb25uZWN0IEUgKHBpZCAlZCwgY2xpZW50ICVwKSIsIGNhbGxpbmdQaWQsCi0gICAgICAgICAgICBjYW1lcmFDbGllbnQtPmFzQmluZGVyKCkuZ2V0KCkpOwotCi0gICAgTXV0ZXg6OkF1dG9sb2NrIGxvY2sobVNlcnZpY2VMb2NrKTsKLSAgICBzcDxDbGllbnQ+IGNsaWVudDsKLSAgICBpZiAobUNsaWVudCAhPSAwKSB7Ci0gICAgICAgIHNwPENsaWVudD4gY3VycmVudENsaWVudCA9IG1DbGllbnQucHJvbW90ZSgpOwotICAgICAgICBpZiAoY3VycmVudENsaWVudCAhPSAwKSB7Ci0gICAgICAgICAgICBzcDxJQ2FtZXJhQ2xpZW50PiBjdXJyZW50Q2FtZXJhQ2xpZW50KGN1cnJlbnRDbGllbnQtPmdldENhbWVyYUNsaWVudCgpKTsKLSAgICAgICAgICAgIGlmIChjYW1lcmFDbGllbnQtPmFzQmluZGVyKCkgPT0gY3VycmVudENhbWVyYUNsaWVudC0+YXNCaW5kZXIoKSkgewotICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIHNhbWUgY2xpZW50IHJlY29ubmVjdGluZy4uLgotICAgICAgICAgICAgICAgIExPR1YoIkNhbWVyYVNlcnZpY2U6OmNvbm5lY3QgWCAocGlkICVkLCBzYW1lIGNsaWVudCAlcCkgaXMgcmVjb25uZWN0aW5nLi4uIiwKLSAgICAgICAgICAgICAgICAgICAgY2FsbGluZ1BpZCwgY2FtZXJhQ2xpZW50LT5hc0JpbmRlcigpLmdldCgpKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gY3VycmVudENsaWVudDsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gSXQncyBhbm90aGVyIGNsaWVudC4uLiByZWplY3QgaXQKLSAgICAgICAgICAgICAgICBMT0dWKCJDYW1lcmFTZXJ2aWNlOjpjb25uZWN0IFggKHBpZCAlZCwgbmV3IGNsaWVudCAlcCkgcmVqZWN0ZWQuICIKLSAgICAgICAgICAgICAgICAgICAgIihvbGQgcGlkICVkLCBvbGQgY2xpZW50ICVwKSIsCi0gICAgICAgICAgICAgICAgICAgIGNhbGxpbmdQaWQsIGNhbWVyYUNsaWVudC0+YXNCaW5kZXIoKS5nZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgY3VycmVudENsaWVudC0+bUNsaWVudFBpZCwgY3VycmVudENhbWVyYUNsaWVudC0+YXNCaW5kZXIoKS5nZXQoKSk7Ci0gICAgICAgICAgICAgICAgaWYgKGtpbGwoY3VycmVudENsaWVudC0+bUNsaWVudFBpZCwgMCkgPT0gLTEgJiYgZXJybm8gPT0gRVNSQ0gpIHsKLSAgICAgICAgICAgICAgICAgICAgTE9HVigiVGhlIG9sZCBjbGllbnQgaXMgZGVhZCEiKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGNsaWVudDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIGNhbid0IHByb21vdGUsIHRoZSBwcmV2aW91cyBjbGllbnQgaGFzIGRpZWQuLi4KLSAgICAgICAgICAgIExPR1YoIk5ldyBjbGllbnQgKHBpZCAlZCkgY29ubmVjdGluZywgb2xkIHJlZmVyZW5jZSB3YXMgZGFuZ2xpbmcuLi4iLAotICAgICAgICAgICAgICAgICAgICBjYWxsaW5nUGlkKTsKLSAgICAgICAgICAgIG1DbGllbnQuY2xlYXIoKTsKK0NhbWVyYVNlcnZpY2U6On5DYW1lcmFTZXJ2aWNlKCkgeworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbU51bWJlck9mQ2FtZXJhczsgaSsrKSB7CisgICAgICAgIGlmIChtQnVzeVtpXSkgeworICAgICAgICAgICAgTE9HRSgiY2FtZXJhICVkIGlzIHN0aWxsIGluIHVzZSBpbiBkZXN0cnVjdG9yISIsIGkpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKG1Vc2VycyA+IDApIHsKLSAgICAgICAgTE9HVigiU3RpbGwgaGF2ZSBjbGllbnQsIHJlamVjdGVkIik7Ci0gICAgICAgIHJldHVybiBjbGllbnQ7CisgICAgZ0NhbWVyYVNlcnZpY2UgPSBOVUxMOworfQorCitpbnQzMl90IENhbWVyYVNlcnZpY2U6OmdldE51bWJlck9mQ2FtZXJhcygpIHsKKyAgICByZXR1cm4gbU51bWJlck9mQ2FtZXJhczsKK30KKworc3RhdHVzX3QgQ2FtZXJhU2VydmljZTo6Z2V0Q2FtZXJhSW5mbyhpbnQgY2FtZXJhSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBDYW1lcmFJbmZvKiBjYW1lcmFJbmZvKSB7CisgICAgaWYgKGNhbWVyYUlkIDwgMCB8fCBjYW1lcmFJZCA+PSBtTnVtYmVyT2ZDYW1lcmFzKSB7CisgICAgICAgIHJldHVybiBCQURfVkFMVUU7CiAgICAgfQogCi0gICAgLy8gY3JlYXRlIGEgbmV3IENsaWVudCBvYmplY3QKLSAgICBjbGllbnQgPSBuZXcgQ2xpZW50KHRoaXMsIGNhbWVyYUNsaWVudCwgY2FsbGluZ1BpZCk7Ci0gICAgbUNsaWVudCA9IGNsaWVudDsKLSNpZiBERUJVR19DTElFTlRfUkVGRVJFTkNFUwotICAgIC8vIEVuYWJsZSB0cmFja2luZyBmb3IgdGhpcyBvYmplY3QsIGFuZCB0cmFjayBpbmNyZW1lbnRzIGFuZCBkZWNyZW1lbnRzIG9mCi0gICAgLy8gdGhlIHJlZmNvdW50LgotICAgIGNsaWVudC0+dHJhY2tNZSh0cnVlLCB0cnVlKTsKLSNlbmRpZgotICAgIExPR1YoIkNhbWVyYVNlcnZpY2U6OmNvbm5lY3QgWCIpOworICAgIEhBTF9nZXRDYW1lcmFJbmZvKGNhbWVyYUlkLCBjYW1lcmFJbmZvKTsKKyAgICByZXR1cm4gT0s7Cit9CisKK3NwPElDYW1lcmE+IENhbWVyYVNlcnZpY2U6OmNvbm5lY3QoCisgICAgICAgIGNvbnN0IHNwPElDYW1lcmFDbGllbnQ+JiBjYW1lcmFDbGllbnQsIGludCBjYW1lcmFJZCkgeworICAgIGludCBjYWxsaW5nUGlkID0gZ2V0Q2FsbGluZ1BpZCgpOworICAgIExPRzEoIkNhbWVyYVNlcnZpY2U6OmNvbm5lY3QgRSAocGlkICVkLCBpZCAlZCkiLCBjYWxsaW5nUGlkLCBjYW1lcmFJZCk7CisKKyAgICBzcDxDbGllbnQ+IGNsaWVudDsKKyAgICBpZiAoY2FtZXJhSWQgPCAwIHx8IGNhbWVyYUlkID49IG1OdW1iZXJPZkNhbWVyYXMpIHsKKyAgICAgICAgTE9HRSgiQ2FtZXJhU2VydmljZTo6Y29ubmVjdCBYIChwaWQgJWQpIHJlamVjdGVkIChpbnZhbGlkIGNhbWVyYUlkICVkKS4iLAorICAgICAgICAgICAgY2FsbGluZ1BpZCwgY2FtZXJhSWQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBNdXRleDo6QXV0b2xvY2sgbG9jayhtU2VydmljZUxvY2spOworICAgIGlmIChtQ2xpZW50W2NhbWVyYUlkXSAhPSAwKSB7CisgICAgICAgIGNsaWVudCA9IG1DbGllbnRbY2FtZXJhSWRdLnByb21vdGUoKTsKKyAgICAgICAgaWYgKGNsaWVudCAhPSAwKSB7CisgICAgICAgICAgICBpZiAoY2FtZXJhQ2xpZW50LT5hc0JpbmRlcigpID09IGNsaWVudC0+Z2V0Q2FtZXJhQ2xpZW50KCktPmFzQmluZGVyKCkpIHsKKyAgICAgICAgICAgICAgICBMT0cxKCJDYW1lcmFTZXJ2aWNlOjpjb25uZWN0IFggKHBpZCAlZCkgKHRoZSBzYW1lIGNsaWVudCkiLAorICAgICAgICAgICAgICAgICAgICBjYWxsaW5nUGlkKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2xpZW50OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBMT0dXKCJDYW1lcmFTZXJ2aWNlOjpjb25uZWN0IFggKHBpZCAlZCkgcmVqZWN0ZWQgKGV4aXN0aW5nIGNsaWVudCkuIiwKKyAgICAgICAgICAgICAgICAgICAgY2FsbGluZ1BpZCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbUNsaWVudFtjYW1lcmFJZF0uY2xlYXIoKTsKKyAgICB9CisKKyAgICBpZiAobUJ1c3lbY2FtZXJhSWRdKSB7CisgICAgICAgIExPR1coIkNhbWVyYVNlcnZpY2U6OmNvbm5lY3QgWCAocGlkICVkKSByZWplY3RlZCIKKyAgICAgICAgICAgICAiIChjYW1lcmEgJWQgaXMgc3RpbGwgYnVzeSkuIiwgY2FsbGluZ1BpZCwgY2FtZXJhSWQpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBjbGllbnQgPSBuZXcgQ2xpZW50KHRoaXMsIGNhbWVyYUNsaWVudCwgY2FtZXJhSWQsIGNhbGxpbmdQaWQpOworICAgIG1DbGllbnRbY2FtZXJhSWRdID0gY2xpZW50OworICAgIExPRzEoIkNhbWVyYVNlcnZpY2U6OmNvbm5lY3QgWCIpOwogICAgIHJldHVybiBjbGllbnQ7CiB9CiAKLXZvaWQgQ2FtZXJhU2VydmljZTo6cmVtb3ZlQ2xpZW50KGNvbnN0IHNwPElDYW1lcmFDbGllbnQ+JiBjYW1lcmFDbGllbnQpCi17Cit2b2lkIENhbWVyYVNlcnZpY2U6OnJlbW92ZUNsaWVudChjb25zdCBzcDxJQ2FtZXJhQ2xpZW50PiYgY2FtZXJhQ2xpZW50KSB7CiAgICAgaW50IGNhbGxpbmdQaWQgPSBnZXRDYWxsaW5nUGlkKCk7CisgICAgTE9HMSgiQ2FtZXJhU2VydmljZTo6cmVtb3ZlQ2xpZW50IEUgKHBpZCAlZCkiLCBjYWxsaW5nUGlkKTsKIAotICAgIC8vIERlY2xhcmUgdGhpcyBvdXRzaWRlIHRoZSBsb2NrIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIHRoZQotICAgIC8vIGRlc3RydWN0b3Igd29uJ3QgYmUgY2FsbGVkIHdpdGggdGhlIGxvY2sgaGVsZC4KLSAgICBzcDxDbGllbnQ+IGNsaWVudDsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1OdW1iZXJPZkNhbWVyYXM7IGkrKykgeworICAgICAgICAvLyBEZWNsYXJlIHRoaXMgYmVmb3JlIHRoZSBsb2NrIHRvIG1ha2UgYWJzb2x1dGVseSBzdXJlIHRoZQorICAgICAgICAvLyBkZXN0cnVjdG9yIHdvbid0IGJlIGNhbGxlZCB3aXRoIHRoZSBsb2NrIGhlbGQuCisgICAgICAgIHNwPENsaWVudD4gY2xpZW50OwogCi0gICAgTXV0ZXg6OkF1dG9sb2NrIGxvY2sobVNlcnZpY2VMb2NrKTsKKyAgICAgICAgTXV0ZXg6OkF1dG9sb2NrIGxvY2sobVNlcnZpY2VMb2NrKTsKIAotICAgIGlmIChtQ2xpZW50ID09IDApIHsKLSAgICAgICAgLy8gVGhpcyBoYXBwZW5zIHdoZW4gd2UgaGF2ZSBhbHJlYWR5IGRpc2Nvbm5lY3RlZC4KLSAgICAgICAgTE9HVigicmVtb3ZlQ2xpZW50IChwaWQgJWQpOiBhbHJlYWR5IGRpc2Nvbm5lY3RlZCIsIGNhbGxpbmdQaWQpOwotICAgICAgICByZXR1cm47CisgICAgICAgIC8vIFRoaXMgaGFwcGVucyB3aGVuIHdlIGhhdmUgYWxyZWFkeSBkaXNjb25uZWN0ZWQgKG9yIHRoaXMgaXMKKyAgICAgICAgLy8ganVzdCBhbm90aGVyIHVudXNlZCBjYW1lcmEpLgorICAgICAgICBpZiAobUNsaWVudFtpXSA9PSAwKSBjb250aW51ZTsKKworICAgICAgICAvLyBQcm9tb3RlIG1DbGllbnQuIEl0IGNhbiBmYWlsIGlmIHdlIGFyZSBjYWxsZWQgZnJvbSB0aGlzIHBhdGg6CisgICAgICAgIC8vIENsaWVudDo6fkNsaWVudCgpIC0+IGRpc2Nvbm5lY3QoKSAtPiByZW1vdmVDbGllbnQoKS4KKyAgICAgICAgY2xpZW50ID0gbUNsaWVudFtpXS5wcm9tb3RlKCk7CisKKyAgICAgICAgaWYgKGNsaWVudCA9PSAwKSB7CisgICAgICAgICAgICBtQ2xpZW50W2ldLmNsZWFyKCk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChjYW1lcmFDbGllbnQtPmFzQmluZGVyKCkgPT0gY2xpZW50LT5nZXRDYW1lcmFDbGllbnQoKS0+YXNCaW5kZXIoKSkgeworICAgICAgICAgICAgLy8gRm91bmQgb3VyIGNhbWVyYSwgY2xlYXIgYW5kIGxlYXZlLgorICAgICAgICAgICAgTE9HMSgicmVtb3ZlQ2xpZW50OiBjbGVhciBjYW1lcmEgJWQiLCBpKTsKKyAgICAgICAgICAgIG1DbGllbnRbaV0uY2xlYXIoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAgICAgfQogCi0gICAgLy8gUHJvbW90ZSBtQ2xpZW50LiBJdCBjYW4gZmFpbCBpZiB3ZSBhcmUgY2FsbGVkIGZyb20gdGhpcyBwYXRoOgotICAgIC8vIENsaWVudDo6fkNsaWVudCgpIC0+IGRpc2Nvbm5lY3QoKSAtPiByZW1vdmVDbGllbnQoKS4KLSAgICBjbGllbnQgPSBtQ2xpZW50LnByb21vdGUoKTsKLSAgICBpZiAoY2xpZW50ID09IDApIHsKLSAgICAgICAgTE9HVigicmVtb3ZlQ2xpZW50IChwaWQgJWQpOiBubyBtb3JlIHN0cm9uZyByZWZlcmVuY2UiLCBjYWxsaW5nUGlkKTsKLSAgICAgICAgbUNsaWVudC5jbGVhcigpOwotICAgICAgICByZXR1cm47CisgICAgTE9HMSgiQ2FtZXJhU2VydmljZTo6cmVtb3ZlQ2xpZW50IFggKHBpZCAlZCkiLCBjYWxsaW5nUGlkKTsKK30KKworc3A8Q2FtZXJhU2VydmljZTo6Q2xpZW50PiBDYW1lcmFTZXJ2aWNlOjpnZXRDbGllbnRCeUlkKGludCBjYW1lcmFJZCkgeworICAgIGlmIChjYW1lcmFJZCA8IDAgfHwgY2FtZXJhSWQgPj0gbU51bWJlck9mQ2FtZXJhcykgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIG1DbGllbnRbY2FtZXJhSWRdLnByb21vdGUoKTsKK30KKwordm9pZCBDYW1lcmFTZXJ2aWNlOjppbnN0YW50aWF0ZSgpIHsKKyAgICBkZWZhdWx0U2VydmljZU1hbmFnZXIoKS0+YWRkU2VydmljZShTdHJpbmcxNigibWVkaWEuY2FtZXJhIiksCisgICAgICAgIG5ldyBDYW1lcmFTZXJ2aWNlKCkpOworfQorCitzdGF0dXNfdCBDYW1lcmFTZXJ2aWNlOjpvblRyYW5zYWN0KAorICAgIHVpbnQzMl90IGNvZGUsIGNvbnN0IFBhcmNlbCYgZGF0YSwgUGFyY2VsKiByZXBseSwgdWludDMyX3QgZmxhZ3MpIHsKKyAgICAvLyBQZXJtaXNzaW9uIGNoZWNrcworICAgIHN3aXRjaCAoY29kZSkgeworICAgICAgICBjYXNlIEJuQ2FtZXJhU2VydmljZTo6Q09OTkVDVDoKKyAgICAgICAgICAgIGNvbnN0IGludCBwaWQgPSBnZXRDYWxsaW5nUGlkKCk7CisgICAgICAgICAgICBjb25zdCBpbnQgc2VsZl9waWQgPSBnZXRwaWQoKTsKKyAgICAgICAgICAgIGlmIChwaWQgIT0gc2VsZl9waWQpIHsKKyAgICAgICAgICAgICAgICAvLyB3ZSdyZSBjYWxsZWQgZnJvbSBhIGRpZmZlcmVudCBwcm9jZXNzLCBkbyB0aGUgcmVhbCBjaGVjaworICAgICAgICAgICAgICAgIGlmICghY2hlY2tDYWxsaW5nUGVybWlzc2lvbigKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZzE2KCJhbmRyb2lkLnBlcm1pc3Npb24uQ0FNRVJBIikpKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGludCB1aWQgPSBnZXRDYWxsaW5nVWlkKCk7CisgICAgICAgICAgICAgICAgICAgIExPR0UoIlBlcm1pc3Npb24gRGVuaWFsOiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgImNhbid0IHVzZSB0aGUgY2FtZXJhIHBpZD0lZCwgdWlkPSVkIiwgcGlkLCB1aWQpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gUEVSTUlTU0lPTl9ERU5JRUQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgaWYgKGNhbWVyYUNsaWVudC0+YXNCaW5kZXIoKSAhPSBjbGllbnQtPmdldENhbWVyYUNsaWVudCgpLT5hc0JpbmRlcigpKSB7Ci0gICAgICAgIC8vIHVnaCEgdGhhdCdzIG5vdCBvdXIgY2xpZW50ISEKLSAgICAgICAgTE9HVygicmVtb3ZlQ2xpZW50IChwaWQgJWQpOiBtQ2xpZW50IGRvZXNuJ3QgbWF0Y2ghIiwgY2FsbGluZ1BpZCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gb2theSwgZ29vZCwgZm9yZ2V0IGFib3V0IG1DbGllbnQKLSAgICAgICAgbUNsaWVudC5jbGVhcigpOwotICAgIH0KLQotICAgIExPR1YoInJlbW92ZUNsaWVudCAocGlkICVkKSBkb25lIiwgY2FsbGluZ1BpZCk7CisgICAgcmV0dXJuIEJuQ2FtZXJhU2VydmljZTo6b25UcmFuc2FjdChjb2RlLCBkYXRhLCByZXBseSwgZmxhZ3MpOwogfQogCi0vLyBUaGUgcmVhc29uIHdlIG5lZWQgdGhpcyBjb3VudCBpcyBhIG5ldyBDYW1lcmFTZXJ2aWNlOjpjb25uZWN0KCkgcmVxdWVzdCBtYXkKLS8vIGNvbWUgaW4gd2hpbGUgdGhlIHByZXZpb3VzIENsaWVudCdzIGRlc3RydWN0b3IgaGFzIG5vdCBiZWVuIHJ1biBvciBpcyBzdGlsbAotLy8gcnVubmluZy4gSWYgdGhlIGxhc3Qgc3Ryb25nIHJlZmVyZW5jZSBvZiB0aGUgcHJldmlvdXMgQ2xpZW50IGlzIGdvbmUgYnV0Ci0vLyBkZXN0cnVjdG9yIGhhcyBub3QgYmVlbiBydW4sIHdlIHNob3VsZCBub3QgYWxsb3cgdGhlIG5ldyBDbGllbnQgdG8gYmUgY3JlYXRlZAotLy8gYmVjYXVzZSB3ZSBuZWVkIHRvIHdhaXQgZm9yIHRoZSBwcmV2aW91cyBDbGllbnQgdG8gdGVhciBkb3duIHRoZSBoYXJkd2FyZQotLy8gZmlyc3QuCi12b2lkIENhbWVyYVNlcnZpY2U6OmluY1VzZXJzKCkgewotICAgIGFuZHJvaWRfYXRvbWljX2luYygmbVVzZXJzKTsKKy8vIFRoZSByZWFzb24gd2UgbmVlZCB0aGlzIGJ1c3kgYml0IGlzIGEgbmV3IENhbWVyYVNlcnZpY2U6OmNvbm5lY3QoKSByZXF1ZXN0CisvLyBtYXkgY29tZSBpbiB3aGlsZSB0aGUgcHJldmlvdXMgQ2xpZW50J3MgZGVzdHJ1Y3RvciBoYXMgbm90IGJlZW4gcnVuIG9yIGlzCisvLyBzdGlsbCBydW5uaW5nLiBJZiB0aGUgbGFzdCBzdHJvbmcgcmVmZXJlbmNlIG9mIHRoZSBwcmV2aW91cyBDbGllbnQgaXMgZ29uZQorLy8gYnV0IHRoZSBkZXN0cnVjdG9yIGhhcyBub3QgYmVlbiBmaW5pc2hlZCwgd2Ugc2hvdWxkIG5vdCBhbGxvdyB0aGUgbmV3IENsaWVudAorLy8gdG8gYmUgY3JlYXRlZCBiZWNhdXNlIHdlIG5lZWQgdG8gd2FpdCBmb3IgdGhlIHByZXZpb3VzIENsaWVudCB0byB0ZWFyIGRvd24KKy8vIHRoZSBoYXJkd2FyZSBmaXJzdC4KK3ZvaWQgQ2FtZXJhU2VydmljZTo6c2V0Q2FtZXJhQnVzeShpbnQgY2FtZXJhSWQpIHsKKyAgICBhbmRyb2lkX2F0b21pY193cml0ZSgxLCAmbUJ1c3lbY2FtZXJhSWRdKTsKIH0KIAotdm9pZCBDYW1lcmFTZXJ2aWNlOjpkZWNVc2VycygpIHsKLSAgICBhbmRyb2lkX2F0b21pY19kZWMoJm1Vc2Vycyk7Cit2b2lkIENhbWVyYVNlcnZpY2U6OnNldENhbWVyYUZyZWUoaW50IGNhbWVyYUlkKSB7CisgICAgYW5kcm9pZF9hdG9taWNfd3JpdGUoMCwgJm1CdXN5W2NhbWVyYUlkXSk7CiB9CiAKLXN0YXRpYyBzcDxNZWRpYVBsYXllcj4gbmV3TWVkaWFQbGF5ZXIoY29uc3QgY2hhciAqZmlsZSkKLXsKLSAgICBzcDxNZWRpYVBsYXllcj4gbXAgPSBuZXcgTWVkaWFQbGF5ZXIoKTsKLSAgICBpZiAobXAtPnNldERhdGFTb3VyY2UoZmlsZSwgTlVMTCAvKiBoZWFkZXJzICovKSA9PSBOT19FUlJPUikgeworLy8gV2Ugc2hhcmUgdGhlIG1lZGlhIHBsYXllcnMgZm9yIHNodXR0ZXIgYW5kIHJlY29yZGluZyBzb3VuZCBmb3IgYWxsIGNsaWVudHMuCisvLyBBIHJlZmVyZW5jZSBjb3VudCBpcyBrZXB0IHRvIGRldGVybWluZSB3aGVuIHdlIHdpbGwgYWN0dWFsbHkgcmVsZWFzZSB0aGUKKy8vIG1lZGlhIHBsYXllcnMuCisKK3N0YXRpYyBNZWRpYVBsYXllciogbmV3TWVkaWFQbGF5ZXIoY29uc3QgY2hhciAqZmlsZSkgeworICAgIE1lZGlhUGxheWVyKiBtcCA9IG5ldyBNZWRpYVBsYXllcigpOworICAgIGlmIChtcC0+c2V0RGF0YVNvdXJjZShmaWxlLCBOVUxMKSA9PSBOT19FUlJPUikgewogICAgICAgICBtcC0+c2V0QXVkaW9TdHJlYW1UeXBlKEF1ZGlvU3lzdGVtOjpFTkZPUkNFRF9BVURJQkxFKTsKICAgICAgICAgbXAtPnByZXBhcmUoKTsKICAgICB9IGVsc2UgewotICAgICAgICBtcC5jbGVhcigpOwotICAgICAgICBMT0dFKCJGYWlsZWQgdG8gbG9hZCBDYW1lcmFTZXJ2aWNlIHNvdW5kcy4iKTsKKyAgICAgICAgTE9HRSgiRmFpbGVkIHRvIGxvYWQgQ2FtZXJhU2VydmljZSBzb3VuZHM6ICVzIiwgZmlsZSk7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICByZXR1cm4gbXA7CiB9CiAKK3ZvaWQgQ2FtZXJhU2VydmljZTo6bG9hZFNvdW5kKCkgeworICAgIE11dGV4OjpBdXRvbG9jayBsb2NrKG1Tb3VuZExvY2spOworICAgIExPRzEoIkNhbWVyYVNlcnZpY2U6OmxvYWRTb3VuZCByZWY9JWQiLCBtU291bmRSZWYpOworICAgIGlmIChtU291bmRSZWYrKykgcmV0dXJuOworCisgICAgbVNvdW5kUGxheWVyW1NPVU5EX1NIVVRURVJdID0gbmV3TWVkaWFQbGF5ZXIoIi9zeXN0ZW0vbWVkaWEvYXVkaW8vdWkvY2FtZXJhX2NsaWNrLm9nZyIpOworICAgIG1Tb3VuZFBsYXllcltTT1VORF9SRUNPUkRJTkddID0gbmV3TWVkaWFQbGF5ZXIoIi9zeXN0ZW0vbWVkaWEvYXVkaW8vdWkvVmlkZW9SZWNvcmQub2dnIik7Cit9CisKK3ZvaWQgQ2FtZXJhU2VydmljZTo6cmVsZWFzZVNvdW5kKCkgeworICAgIE11dGV4OjpBdXRvbG9jayBsb2NrKG1Tb3VuZExvY2spOworICAgIExPRzEoIkNhbWVyYVNlcnZpY2U6OnJlbGVhc2VTb3VuZCByZWY9JWQiLCBtU291bmRSZWYpOworICAgIGlmICgtLW1Tb3VuZFJlZikgcmV0dXJuOworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOVU1fU09VTkRTOyBpKyspIHsKKyAgICAgICAgaWYgKG1Tb3VuZFBsYXllcltpXSAhPSAwKSB7CisgICAgICAgICAgICBtU291bmRQbGF5ZXJbaV0tPmRpc2Nvbm5lY3QoKTsKKyAgICAgICAgICAgIG1Tb3VuZFBsYXllcltpXS5jbGVhcigpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIENhbWVyYVNlcnZpY2U6OnBsYXlTb3VuZChzb3VuZF9raW5kIGtpbmQpIHsKKyAgICBMT0cxKCJwbGF5U291bmQoJWQpIiwga2luZCk7CisgICAgTXV0ZXg6OkF1dG9sb2NrIGxvY2sobVNvdW5kTG9jayk7CisgICAgc3A8TWVkaWFQbGF5ZXI+IHBsYXllciA9IG1Tb3VuZFBsYXllcltraW5kXTsKKyAgICBpZiAocGxheWVyICE9IDApIHsKKyAgICAgICAgLy8gZG8gbm90IHBsYXkgdGhlIHNvdW5kIGlmIHN0cmVhbSB2b2x1bWUgaXMgMAorICAgICAgICAvLyAodHlwaWNhbGx5IGJlY2F1c2UgcmluZ2VyIG1vZGUgaXMgc2lsZW50KS4KKyAgICAgICAgaW50IGluZGV4OworICAgICAgICBBdWRpb1N5c3RlbTo6Z2V0U3RyZWFtVm9sdW1lSW5kZXgoQXVkaW9TeXN0ZW06OkVORk9SQ0VEX0FVRElCTEUsICZpbmRleCk7CisgICAgICAgIGlmIChpbmRleCAhPSAwKSB7CisgICAgICAgICAgICBwbGF5ZXItPnNlZWtUbygwKTsKKyAgICAgICAgICAgIHBsYXllci0+c3RhcnQoKTsKKyAgICAgICAgfQorICAgIH0KK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCiBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OkNsaWVudChjb25zdCBzcDxDYW1lcmFTZXJ2aWNlPiYgY2FtZXJhU2VydmljZSwKLSAgICAgICAgY29uc3Qgc3A8SUNhbWVyYUNsaWVudD4mIGNhbWVyYUNsaWVudCwgcGlkX3QgY2xpZW50UGlkKQoteworICAgICAgICBjb25zdCBzcDxJQ2FtZXJhQ2xpZW50PiYgY2FtZXJhQ2xpZW50LCBpbnQgY2FtZXJhSWQsIGludCBjbGllbnRQaWQpIHsKICAgICBpbnQgY2FsbGluZ1BpZCA9IGdldENhbGxpbmdQaWQoKTsKLSAgICBMT0dWKCJDbGllbnQ6OkNsaWVudCBFIChwaWQgJWQpIiwgY2FsbGluZ1BpZCk7CisgICAgTE9HMSgiQ2xpZW50OjpDbGllbnQgRSAocGlkICVkKSIsIGNhbGxpbmdQaWQpOworCiAgICAgbUNhbWVyYVNlcnZpY2UgPSBjYW1lcmFTZXJ2aWNlOwogICAgIG1DYW1lcmFDbGllbnQgPSBjYW1lcmFDbGllbnQ7CisgICAgbUNhbWVyYUlkID0gY2FtZXJhSWQ7CiAgICAgbUNsaWVudFBpZCA9IGNsaWVudFBpZDsKLSAgICBtSGFyZHdhcmUgPSBvcGVuQ2FtZXJhSGFyZHdhcmUoKTsKKworICAgIG1IYXJkd2FyZSA9IEhBTF9vcGVuQ2FtZXJhSGFyZHdhcmUoY2FtZXJhSWQpOwogICAgIG1Vc2VPdmVybGF5ID0gbUhhcmR3YXJlLT51c2VPdmVybGF5KCk7CisgICAgbU1zZ0VuYWJsZWQgPSAwOwogCiAgICAgbUhhcmR3YXJlLT5zZXRDYWxsYmFja3Mobm90aWZ5Q2FsbGJhY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YUNhbGxiYWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFDYWxsYmFja1RpbWVzdGFtcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQ2FtZXJhU2VydmljZS5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKiljYW1lcmFJZCk7CiAKICAgICAvLyBFbmFibGUgem9vbSwgZXJyb3IsIGFuZCBmb2N1cyBtZXNzYWdlcyBieSBkZWZhdWx0Ci0gICAgbUhhcmR3YXJlLT5lbmFibGVNc2dUeXBlKENBTUVSQV9NU0dfRVJST1IgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQU1FUkFfTVNHX1pPT00gfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQU1FUkFfTVNHX0ZPQ1VTKTsKLQotICAgIG1NZWRpYVBsYXllckNsaWNrID0gbmV3TWVkaWFQbGF5ZXIoIi9zeXN0ZW0vbWVkaWEvYXVkaW8vdWkvY2FtZXJhX2NsaWNrLm9nZyIpOwotICAgIG1NZWRpYVBsYXllckJlZXAgPSBuZXdNZWRpYVBsYXllcigiL3N5c3RlbS9tZWRpYS9hdWRpby91aS9WaWRlb1JlY29yZC5vZ2ciKTsKKyAgICBlbmFibGVNc2dUeXBlKENBTUVSQV9NU0dfRVJST1IgfAorICAgICAgICAgICAgICAgICAgQ0FNRVJBX01TR19aT09NIHwKKyAgICAgICAgICAgICAgICAgIENBTUVSQV9NU0dfRk9DVVMpOwogICAgIG1PdmVybGF5VyA9IDA7CiAgICAgbU92ZXJsYXlIID0gMDsKIAogICAgIC8vIENhbGxiYWNrIGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQKICAgICBtUHJldmlld0NhbGxiYWNrRmxhZyA9IEZSQU1FX0NBTExCQUNLX0ZMQUdfTk9PUDsKICAgICBtT3JpZW50YXRpb24gPSAwOwotICAgIGNhbWVyYVNlcnZpY2UtPmluY1VzZXJzKCk7Ci0gICAgTE9HVigiQ2xpZW50OjpDbGllbnQgWCAocGlkICVkKSIsIGNhbGxpbmdQaWQpOworICAgIGNhbWVyYVNlcnZpY2UtPnNldENhbWVyYUJ1c3koY2FtZXJhSWQpOworICAgIGNhbWVyYVNlcnZpY2UtPmxvYWRTb3VuZCgpOworICAgIExPRzEoIkNsaWVudDo6Q2xpZW50IFggKHBpZCAlZCkiLCBjYWxsaW5nUGlkKTsKIH0KIAotc3RhdHVzX3QgQ2FtZXJhU2VydmljZTo6Q2xpZW50OjpjaGVja1BpZCgpCi17Ci0gICAgaW50IGNhbGxpbmdQaWQgPSBnZXRDYWxsaW5nUGlkKCk7Ci0gICAgaWYgKG1DbGllbnRQaWQgPT0gY2FsbGluZ1BpZCkgcmV0dXJuIE5PX0VSUk9SOwotICAgIExPR1coIkF0dGVtcHQgdG8gdXNlIGxvY2tlZCBjYW1lcmEgKGNsaWVudCAlcCkgZnJvbSBkaWZmZXJlbnQgcHJvY2VzcyAiCi0gICAgICAgICIgKG9sZCBwaWQgJWQsIG5ldyBwaWQgJWQpIiwKLSAgICAgICAgZ2V0Q2FtZXJhQ2xpZW50KCktPmFzQmluZGVyKCkuZ2V0KCksIG1DbGllbnRQaWQsIGNhbGxpbmdQaWQpOwotICAgIHJldHVybiAtRUJVU1k7Ci19Ci0KLXN0YXR1c190IENhbWVyYVNlcnZpY2U6OkNsaWVudDo6bG9jaygpCi17Ci0gICAgaW50IGNhbGxpbmdQaWQgPSBnZXRDYWxsaW5nUGlkKCk7Ci0gICAgTE9HVigibG9jayBmcm9tIHBpZCAlZCAobUNsaWVudFBpZCAlZCkiLCBjYWxsaW5nUGlkLCBtQ2xpZW50UGlkKTsKLSAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOwotICAgIC8vIGxvY2sgY2FtZXJhIHRvIHRoaXMgY2xpZW50IGlmIHRoZSB0aGUgY2FtZXJhIGlzIHVubG9ja2VkCi0gICAgaWYgKG1DbGllbnRQaWQgPT0gMCkgewotICAgICAgICBtQ2xpZW50UGlkID0gY2FsbGluZ1BpZDsKLSAgICAgICAgcmV0dXJuIE5PX0VSUk9SOwotICAgIH0KLSAgICAvLyByZXR1cm5zIE5PX0VSUk9SIGlmIHRoZSBjbGllbnQgYWxyZWFkeSBvd25zIHRoZSBjYW1lcmEsIC1FQlVTWSBvdGhlcndpc2UKLSAgICByZXR1cm4gY2hlY2tQaWQoKTsKLX0KLQotc3RhdHVzX3QgQ2FtZXJhU2VydmljZTo6Q2xpZW50Ojp1bmxvY2soKQotewotICAgIGludCBjYWxsaW5nUGlkID0gZ2V0Q2FsbGluZ1BpZCgpOwotICAgIExPR1YoInVubG9jayBmcm9tIHBpZCAlZCAobUNsaWVudFBpZCAlZCkiLCBjYWxsaW5nUGlkLCBtQ2xpZW50UGlkKTsKLSAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOwotICAgIC8vIGFsbG93IGFueW9uZSB0byB1c2UgY2FtZXJhCi0gICAgc3RhdHVzX3QgcmVzdWx0ID0gY2hlY2tQaWQoKTsKLSAgICBpZiAocmVzdWx0ID09IE5PX0VSUk9SKSB7Ci0gICAgICAgIG1DbGllbnRQaWQgPSAwOwotICAgICAgICBMT0dWKCJjbGVhciBtQ2FtZXJhQ2xpZW50IChwaWQgJWQpIiwgY2FsbGluZ1BpZCk7Ci0gICAgICAgIC8vIHdlIG5lZWQgdG8gcmVtb3ZlIHRoZSByZWZlcmVuY2Ugc28gdGhhdCB3aGVuIGFwcCBnb2VzCi0gICAgICAgIC8vIGF3YXksIHRoZSByZWZlcmVuY2UgY291bnQgZ29lcyB0byAwLgotICAgICAgICBtQ2FtZXJhQ2xpZW50LmNsZWFyKCk7Ci0gICAgfQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXR1c190IENhbWVyYVNlcnZpY2U6OkNsaWVudDo6Y29ubmVjdChjb25zdCBzcDxJQ2FtZXJhQ2xpZW50PiYgY2xpZW50KQotewotICAgIGludCBjYWxsaW5nUGlkID0gZ2V0Q2FsbGluZ1BpZCgpOwotCi0gICAgLy8gY29ubmVjdCBhIG5ldyBwcm9jZXNzIHRvIHRoZSBjYW1lcmEKLSAgICBMT0dWKCJDbGllbnQ6OmNvbm5lY3QgRSAocGlkICVkLCBjbGllbnQgJXApIiwgY2FsbGluZ1BpZCwgY2xpZW50LT5hc0JpbmRlcigpLmdldCgpKTsKLQotICAgIC8vIEkgaGF0ZSB0aGlzIGhhY2ssIGJ1dCB0aGluZ3MgZ2V0IHJlYWxseSB1Z2x5IHdoZW4gdGhlIG1lZGlhIHJlY29yZGVyCi0gICAgLy8gc2VydmljZSBpcyBoYW5kaW5nIGJhY2sgdGhlIGNhbWVyYSB0byB0aGUgYXBwLiBUaGUgSUNhbWVyYUNsaWVudAotICAgIC8vIGRlc3RydWN0b3Igd2lsbCBiZSBjYWxsZWQgZHVyaW5nIHRoZSBzYW1lIElQQywgbWFraW5nIGl0IGxvb2sgbGlrZQotICAgIC8vIHRoZSByZW1vdGUgY2xpZW50IGlzIHRyeWluZyB0byBkaXNjb25uZWN0LiBUaGlzIGhhY2sgdGVtcG9yYXJpbHkKLSAgICAvLyBzZXRzIHRoZSBtQ2xpZW50UGlkIHRvIGFuIGludmFsaWQgcGlkIHRvIHByZXZlbnQgdGhlIGhhcmR3YXJlIGZyb20KLSAgICAvLyBiZWluZyB0b3JuIGRvd24uCi0gICAgewotCi0gICAgICAgIC8vIGhvbGQgYSByZWZlcmVuY2UgdG8gdGhlIG9sZCBjbGllbnQgb3Igd2Ugd2lsbCBkZWFkbG9jayBpZiB0aGUgY2xpZW50IGlzCi0gICAgICAgIC8vIGluIHRoZSBzYW1lIHByb2Nlc3MgYW5kIHdlIGhvbGQgdGhlIGxvY2sgd2hlbiB3ZSByZW1vdmUgdGhlIHJlZmVyZW5jZQotICAgICAgICBzcDxJQ2FtZXJhQ2xpZW50PiBvbGRDbGllbnQ7Ci0gICAgICAgIHsKLSAgICAgICAgICAgIE11dGV4OjpBdXRvbG9jayBfbChtTG9jayk7Ci0gICAgICAgICAgICBpZiAobUNsaWVudFBpZCAhPSAwICYmIGNoZWNrUGlkKCkgIT0gTk9fRVJST1IpIHsKLSAgICAgICAgICAgICAgICBMT0dXKCJUcmllZCB0byBjb25uZWN0IHRvIGxvY2tlZCBjYW1lcmEgKG9sZCBwaWQgJWQsIG5ldyBwaWQgJWQpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIG1DbGllbnRQaWQsIGNhbGxpbmdQaWQpOwotICAgICAgICAgICAgICAgIHJldHVybiAtRUJVU1k7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBvbGRDbGllbnQgPSBtQ2FtZXJhQ2xpZW50OwotCi0gICAgICAgICAgICAvLyBkaWQgdGhlIGNsaWVudCBhY3R1YWxseSBjaGFuZ2U/Ci0gICAgICAgICAgICBpZiAoKG1DYW1lcmFDbGllbnQgIT0gTlVMTCkgJiYgKGNsaWVudC0+YXNCaW5kZXIoKSA9PSBtQ2FtZXJhQ2xpZW50LT5hc0JpbmRlcigpKSkgewotICAgICAgICAgICAgICAgIExPR1YoIkNvbm5lY3QgdG8gdGhlIHNhbWUgY2xpZW50Iik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5PX0VSUk9SOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBtQ2FtZXJhQ2xpZW50ID0gY2xpZW50OwotICAgICAgICAgICAgbUNsaWVudFBpZCA9IC0xOwotICAgICAgICAgICAgbVByZXZpZXdDYWxsYmFja0ZsYWcgPSBGUkFNRV9DQUxMQkFDS19GTEFHX05PT1A7Ci0gICAgICAgICAgICBMT0dWKCJDb25uZWN0IHRvIHRoZSBuZXcgY2xpZW50IChwaWQgJWQsIGNsaWVudCAlcCkiLAotICAgICAgICAgICAgICAgIGNhbGxpbmdQaWQsIG1DYW1lcmFDbGllbnQtPmFzQmluZGVyKCkuZ2V0KCkpOwotICAgICAgICB9Ci0KLSAgICB9Ci0gICAgLy8gdGhlIG9sZCBjbGllbnQgZGVzdHJ1Y3RvciBpcyBjYWxsZWQgd2hlbiBvbGRDbGllbnQgZ29lcyBvdXQgb2Ygc2NvcGUKLSAgICAvLyBub3cgd2Ugc2V0IHRoZSBuZXcgUElEIHRvIGxvY2sgdGhlIGludGVyZmFjZSBhZ2FpbgotICAgIG1DbGllbnRQaWQgPSBjYWxsaW5nUGlkOwotCi0gICAgcmV0dXJuIE5PX0VSUk9SOwotfQotCi0jaWYgSEFWRV9BTkRST0lEX09TCi1zdGF0aWMgdm9pZCAqdW5yZWdpc3Rlcl9zdXJmYWNlKHZvaWQgKmFyZykKLXsKK3N0YXRpYyB2b2lkICp1bnJlZ2lzdGVyX3N1cmZhY2Uodm9pZCAqYXJnKSB7CiAgICAgSVN1cmZhY2UgKnN1cmZhY2UgPSAoSVN1cmZhY2UgKilhcmc7CiAgICAgc3VyZmFjZS0+dW5yZWdpc3RlckJ1ZmZlcnMoKTsKICAgICBJUENUaHJlYWRTdGF0ZTo6c2VsZigpLT5mbHVzaENvbW1hbmRzKCk7CiAgICAgcmV0dXJuIE5VTEw7CiB9Ci0jZW5kaWYKIAotQ2FtZXJhU2VydmljZTo6Q2xpZW50Ojp+Q2xpZW50KCkKLXsKKy8vIHRlYXIgZG93biB0aGUgY2xpZW50CitDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6On5DbGllbnQoKSB7CiAgICAgaW50IGNhbGxpbmdQaWQgPSBnZXRDYWxsaW5nUGlkKCk7CisgICAgTE9HMSgiQ2xpZW50Ojp+Q2xpZW50IEUgKHBpZCAlZCwgdGhpcyAlcCkiLCBjYWxsaW5nUGlkLCB0aGlzKTsKIAotICAgIC8vIHRlYXIgZG93biBjbGllbnQKLSAgICBMT0dWKCJDbGllbnQ6On5DbGllbnQgRSAocGlkICVkLCBjbGllbnQgJXApIiwKLSAgICAgICAgICAgIGNhbGxpbmdQaWQsIGdldENhbWVyYUNsaWVudCgpLT5hc0JpbmRlcigpLmdldCgpKTsKICAgICBpZiAobVN1cmZhY2UgIT0gMCAmJiAhbVVzZU92ZXJsYXkpIHsKLSNpZiBIQVZFX0FORFJPSURfT1MKICAgICAgICAgcHRocmVhZF90IHRocjsKICAgICAgICAgLy8gV2UgdW5yZWdpc3RlciB0aGUgYnVmZmVycyBpbiBhIGRpZmZlcmVudCB0aHJlYWQgYmVjYXVzZSBiaW5kZXIgZG9lcwogICAgICAgICAvLyBub3QgbGV0IHVzIG1ha2Ugc3ljaHJvbm91cyB0cmFuc2FjdGlvbnMgaW4gYSBiaW5kZXIgZGVzdHJ1Y3RvciAodGhhdAogICAgICAgICAvLyBpcywgdXBvbiBvdXIgcmVhY2hpbmcgYSByZWZjb3VudCBvZiB6ZXJvLikKLSAgICAgICAgcHRocmVhZF9jcmVhdGUoJnRociwgTlVMTCwKKyAgICAgICAgcHRocmVhZF9jcmVhdGUoJnRociwKKyAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgIC8vIGF0dHIKICAgICAgICAgICAgICAgICAgICAgICAgdW5yZWdpc3Rlcl9zdXJmYWNlLAogICAgICAgICAgICAgICAgICAgICAgICBtU3VyZmFjZS5nZXQoKSk7CiAgICAgICAgIHB0aHJlYWRfam9pbih0aHIsIE5VTEwpOwotI2Vsc2UKLSAgICAgICAgbVN1cmZhY2UtPnVucmVnaXN0ZXJCdWZmZXJzKCk7Ci0jZW5kaWYKICAgICB9CiAKLSAgICBpZiAobU1lZGlhUGxheWVyQmVlcC5nZXQoKSAhPSBOVUxMKSB7Ci0gICAgICAgIG1NZWRpYVBsYXllckJlZXAtPmRpc2Nvbm5lY3QoKTsKLSAgICAgICAgbU1lZGlhUGxheWVyQmVlcC5jbGVhcigpOwotICAgIH0KLSAgICBpZiAobU1lZGlhUGxheWVyQ2xpY2suZ2V0KCkgIT0gTlVMTCkgewotICAgICAgICBtTWVkaWFQbGF5ZXJDbGljay0+ZGlzY29ubmVjdCgpOwotICAgICAgICBtTWVkaWFQbGF5ZXJDbGljay5jbGVhcigpOwotICAgIH0KLQotICAgIC8vIG1ha2Ugc3VyZSB3ZSB0ZWFyIGRvd24gdGhlIGhhcmR3YXJlCisgICAgLy8gc2V0IG1DbGllbnRQaWQgdG8gbGV0IGRpc2Nvbm5ldCgpIHRlYXIgZG93biB0aGUgaGFyZHdhcmUKICAgICBtQ2xpZW50UGlkID0gY2FsbGluZ1BpZDsKICAgICBkaXNjb25uZWN0KCk7Ci0gICAgTE9HVigiQ2xpZW50Ojp+Q2xpZW50IFggKHBpZCAlZCkiLCBtQ2xpZW50UGlkKTsKKyAgICBtQ2FtZXJhU2VydmljZS0+cmVsZWFzZVNvdW5kKCk7CisgICAgTE9HMSgiQ2xpZW50Ojp+Q2xpZW50IFggKHBpZCAlZCwgdGhpcyAlcCkiLCBjYWxsaW5nUGlkLCB0aGlzKTsKIH0KIAotdm9pZCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OmRpc2Nvbm5lY3QoKQoteworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdGF0dXNfdCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OmNoZWNrUGlkKCkgY29uc3QgewogICAgIGludCBjYWxsaW5nUGlkID0gZ2V0Q2FsbGluZ1BpZCgpOworICAgIGlmIChjYWxsaW5nUGlkID09IG1DbGllbnRQaWQpIHJldHVybiBOT19FUlJPUjsKIAotICAgIExPR1YoIkNsaWVudDo6ZGlzY29ubmVjdCgpIEUgKHBpZCAlZCBjbGllbnQgJXApIiwKLSAgICAgICAgICAgIGNhbGxpbmdQaWQsIGdldENhbWVyYUNsaWVudCgpLT5hc0JpbmRlcigpLmdldCgpKTsKKyAgICBMT0dXKCJhdHRlbXB0IHRvIHVzZSBhIGxvY2tlZCBjYW1lcmEgZnJvbSBhIGRpZmZlcmVudCBwcm9jZXNzIgorICAgICAgICAgIiAob2xkIHBpZCAlZCwgbmV3IHBpZCAlZCkiLCBtQ2xpZW50UGlkLCBjYWxsaW5nUGlkKTsKKyAgICByZXR1cm4gRUJVU1k7Cit9CiAKK3N0YXR1c190IENhbWVyYVNlcnZpY2U6OkNsaWVudDo6Y2hlY2tQaWRBbmRIYXJkd2FyZSgpIGNvbnN0IHsKKyAgICBzdGF0dXNfdCByZXN1bHQgPSBjaGVja1BpZCgpOworICAgIGlmIChyZXN1bHQgIT0gTk9fRVJST1IpIHJldHVybiByZXN1bHQ7CisgICAgaWYgKG1IYXJkd2FyZSA9PSAwKSB7CisgICAgICAgIExPR0UoImF0dGVtcHQgdG8gdXNlIGEgY2FtZXJhIGFmdGVyIGRpc2Nvbm5lY3QoKSAocGlkICVkKSIsIGdldENhbGxpbmdQaWQoKSk7CisgICAgICAgIHJldHVybiBJTlZBTElEX09QRVJBVElPTjsKKyAgICB9CisgICAgcmV0dXJuIE5PX0VSUk9SOworfQorCitzdGF0dXNfdCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OmxvY2soKSB7CisgICAgaW50IGNhbGxpbmdQaWQgPSBnZXRDYWxsaW5nUGlkKCk7CisgICAgTE9HMSgibG9jayAocGlkICVkKSIsIGNhbGxpbmdQaWQpOwogICAgIE11dGV4OjpBdXRvbG9jayBsb2NrKG1Mb2NrKTsKLSAgICBpZiAobUNsaWVudFBpZCA8PSAwKSB7Ci0gICAgICAgIExPR1YoImNhbWVyYSBpcyB1bmxvY2tlZCAobUNsaWVudFBpZCA9ICVkKSwgZG9uJ3QgdGVhciBkb3duIGhhcmR3YXJlIiwgbUNsaWVudFBpZCk7CisKKyAgICAvLyBsb2NrIGNhbWVyYSB0byB0aGlzIGNsaWVudCBpZiB0aGUgdGhlIGNhbWVyYSBpcyB1bmxvY2tlZAorICAgIGlmIChtQ2xpZW50UGlkID09IDApIHsKKyAgICAgICAgbUNsaWVudFBpZCA9IGNhbGxpbmdQaWQ7CisgICAgICAgIHJldHVybiBOT19FUlJPUjsKKyAgICB9CisKKyAgICAvLyByZXR1cm5zIE5PX0VSUk9SIGlmIHRoZSBjbGllbnQgYWxyZWFkeSBvd25zIHRoZSBjYW1lcmEsIEVCVVNZIG90aGVyd2lzZQorICAgIHJldHVybiBjaGVja1BpZCgpOworfQorCitzdGF0dXNfdCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OnVubG9jaygpIHsKKyAgICBpbnQgY2FsbGluZ1BpZCA9IGdldENhbGxpbmdQaWQoKTsKKyAgICBMT0cxKCJ1bmxvY2sgKHBpZCAlZCkiLCBjYWxsaW5nUGlkKTsKKyAgICBNdXRleDo6QXV0b2xvY2sgbG9jayhtTG9jayk7CisKKyAgICAvLyBhbGxvdyBhbnlvbmUgdG8gdXNlIGNhbWVyYSAoYWZ0ZXIgdGhleSBsb2NrIHRoZSBjYW1lcmEpCisgICAgc3RhdHVzX3QgcmVzdWx0ID0gY2hlY2tQaWQoKTsKKyAgICBpZiAocmVzdWx0ID09IE5PX0VSUk9SKSB7CisgICAgICAgIG1DbGllbnRQaWQgPSAwOworICAgICAgICBMT0cxKCJjbGVhciBtQ2FtZXJhQ2xpZW50IChwaWQgJWQpIiwgY2FsbGluZ1BpZCk7CisgICAgICAgIC8vIHdlIG5lZWQgdG8gcmVtb3ZlIHRoZSByZWZlcmVuY2UgdG8gSUNhbWVyYUNsaWVudCBzbyB0aGF0IHdoZW4gdGhlIGFwcAorICAgICAgICAvLyBnb2VzIGF3YXksIHRoZSByZWZlcmVuY2UgY291bnQgZ29lcyB0byAwLgorICAgICAgICBtQ2FtZXJhQ2xpZW50LmNsZWFyKCk7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8vIGNvbm5lY3QgYSBuZXcgY2xpZW50IHRvIHRoZSBjYW1lcmEKK3N0YXR1c190IENhbWVyYVNlcnZpY2U6OkNsaWVudDo6Y29ubmVjdChjb25zdCBzcDxJQ2FtZXJhQ2xpZW50PiYgY2xpZW50KSB7CisgICAgaW50IGNhbGxpbmdQaWQgPSBnZXRDYWxsaW5nUGlkKCk7CisgICAgTE9HMSgiY29ubmVjdCBFIChwaWQgJWQpIiwgY2FsbGluZ1BpZCk7CisgICAgTXV0ZXg6OkF1dG9sb2NrIGxvY2sobUxvY2spOworCisgICAgaWYgKG1DbGllbnRQaWQgIT0gMCAmJiBjaGVja1BpZCgpICE9IE5PX0VSUk9SKSB7CisgICAgICAgIExPR1coIlRyaWVkIHRvIGNvbm5lY3QgdG8gYSBsb2NrZWQgY2FtZXJhIChvbGQgcGlkICVkLCBuZXcgcGlkICVkKSIsCisgICAgICAgICAgICAgICAgbUNsaWVudFBpZCwgY2FsbGluZ1BpZCk7CisgICAgICAgIHJldHVybiBFQlVTWTsKKyAgICB9CisKKyAgICBpZiAobUNhbWVyYUNsaWVudCAhPSAwICYmIChjbGllbnQtPmFzQmluZGVyKCkgPT0gbUNhbWVyYUNsaWVudC0+YXNCaW5kZXIoKSkpIHsKKyAgICAgICAgTE9HMSgiQ29ubmVjdCB0byB0aGUgc2FtZSBjbGllbnQiKTsKKyAgICAgICAgcmV0dXJuIE5PX0VSUk9SOworICAgIH0KKworICAgIG1QcmV2aWV3Q2FsbGJhY2tGbGFnID0gRlJBTUVfQ0FMTEJBQ0tfRkxBR19OT09QOworICAgIG1DbGllbnRQaWQgPSBjYWxsaW5nUGlkOworICAgIG1DYW1lcmFDbGllbnQgPSBjbGllbnQ7CisKKyAgICBMT0cxKCJjb25uZWN0IFggKHBpZCAlZCkiLCBjYWxsaW5nUGlkKTsKKyAgICByZXR1cm4gTk9fRVJST1I7Cit9CisKK3ZvaWQgQ2FtZXJhU2VydmljZTo6Q2xpZW50OjpkaXNjb25uZWN0KCkgeworICAgIGludCBjYWxsaW5nUGlkID0gZ2V0Q2FsbGluZ1BpZCgpOworICAgIExPRzEoImRpc2Nvbm5lY3QgRSAocGlkICVkKSIsIGNhbGxpbmdQaWQpOworICAgIE11dGV4OjpBdXRvbG9jayBsb2NrKG1Mb2NrKTsKKworICAgIGlmIChjaGVja1BpZCgpICE9IE5PX0VSUk9SKSB7CisgICAgICAgIExPR1coImRpZmZlcmVudCBjbGllbnQgLSBkb24ndCBkaXNjb25uZWN0Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKGNoZWNrUGlkKCkgIT0gTk9fRVJST1IpIHsKLSAgICAgICAgTE9HVigiRGlmZmVyZW50IGNsaWVudCAtIGRvbid0IGRpc2Nvbm5lY3QiKTsKKworICAgIGlmIChtQ2xpZW50UGlkIDw9IDApIHsKKyAgICAgICAgTE9HMSgiY2FtZXJhIGlzIHVubG9ja2VkIChtQ2xpZW50UGlkID0gJWQpLCBkb24ndCB0ZWFyIGRvd24gaGFyZHdhcmUiLCBtQ2xpZW50UGlkKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNDAxLDgyNyArNDUyLDM2NiBAQAogICAgIC8vIGZyb20gdGhlIHVzZXIgZGlyZWN0bHksIG9yIGNhbGxlZCBieSB0aGUgZGVzdHJ1Y3Rvci4KICAgICBpZiAobUhhcmR3YXJlID09IDApIHJldHVybjsKIAotICAgIExPR1YoImhhcmR3YXJlIHRlYXJkb3duIik7CisgICAgTE9HMSgiaGFyZHdhcmUgdGVhcmRvd24iKTsKICAgICAvLyBCZWZvcmUgZGVzdHJveWluZyBtSGFyZHdhcmUsIHdlIG11c3QgbWFrZSBzdXJlIGl0J3MgaW4gdGhlCiAgICAgLy8gaWRsZSBzdGF0ZS4KKyAgICAvLyBUdXJuIG9mZiBhbGwgbWVzc2FnZXMuCisgICAgZGlzYWJsZU1zZ1R5cGUoQ0FNRVJBX01TR19BTExfTVNHUyk7CiAgICAgbUhhcmR3YXJlLT5zdG9wUHJldmlldygpOwotICAgIC8vIENhbmNlbCBhbGwgcGljdHVyZSBjYWxsYmFja3MuCi0gICAgbUhhcmR3YXJlLT5kaXNhYmxlTXNnVHlwZShDQU1FUkFfTVNHX1NIVVRURVIgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0FNRVJBX01TR19QT1NUVklFV19GUkFNRSB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQU1FUkFfTVNHX1JBV19JTUFHRSB8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQU1FUkFfTVNHX0NPTVBSRVNTRURfSU1BR0UpOwogICAgIG1IYXJkd2FyZS0+Y2FuY2VsUGljdHVyZSgpOwotICAgIC8vIFR1cm4gb2ZmIHJlbWFpbmluZyBtZXNzYWdlcy4KLSAgICBtSGFyZHdhcmUtPmRpc2FibGVNc2dUeXBlKENBTUVSQV9NU0dfQUxMX01TR1MpOwogICAgIC8vIFJlbGVhc2UgdGhlIGhhcmR3YXJlIHJlc291cmNlcy4KICAgICBtSGFyZHdhcmUtPnJlbGVhc2UoKTsKICAgICAvLyBSZWxlYXNlIHRoZSBoZWxkIG92ZXJsYXkgcmVzb3VyY2VzLgotICAgIGlmIChtVXNlT3ZlcmxheSkKLSAgICB7CisgICAgaWYgKG1Vc2VPdmVybGF5KSB7CiAgICAgICAgIG1PdmVybGF5UmVmID0gMDsKICAgICB9CiAgICAgbUhhcmR3YXJlLmNsZWFyKCk7CiAKICAgICBtQ2FtZXJhU2VydmljZS0+cmVtb3ZlQ2xpZW50KG1DYW1lcmFDbGllbnQpOwotICAgIG1DYW1lcmFTZXJ2aWNlLT5kZWNVc2VycygpOworICAgIG1DYW1lcmFTZXJ2aWNlLT5zZXRDYW1lcmFGcmVlKG1DYW1lcmFJZCk7CiAKLSAgICBMT0dWKCJDbGllbnQ6OmRpc2Nvbm5lY3QoKSBYIChwaWQgJWQpIiwgY2FsbGluZ1BpZCk7CisgICAgTE9HMSgiZGlzY29ubmVjdCBYIChwaWQgJWQpIiwgY2FsbGluZ1BpZCk7CiB9CiAKLS8vIHBhc3MgdGhlIGJ1ZmZlcmVkIElTdXJmYWNlIHRvIHRoZSBjYW1lcmEgc2VydmljZQotc3RhdHVzX3QgQ2FtZXJhU2VydmljZTo6Q2xpZW50OjpzZXRQcmV2aWV3RGlzcGxheShjb25zdCBzcDxJU3VyZmFjZT4mIHN1cmZhY2UpCi17Ci0gICAgTE9HVigic2V0UHJldmlld0Rpc3BsYXkoJXApIChwaWQgJWQpIiwKLSAgICAgICAgICgoc3VyZmFjZSA9PSBOVUxMKSA/IE5VTEwgOiBzdXJmYWNlLmdldCgpKSwgZ2V0Q2FsbGluZ1BpZCgpKTsKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gc2V0IHRoZSBJU3VyZmFjZSB0aGF0IHRoZSBwcmV2aWV3IHdpbGwgdXNlCitzdGF0dXNfdCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OnNldFByZXZpZXdEaXNwbGF5KGNvbnN0IHNwPElTdXJmYWNlPiYgc3VyZmFjZSkgeworICAgIExPRzEoInNldFByZXZpZXdEaXNwbGF5KCVwKSAocGlkICVkKSIsIHN1cmZhY2UuZ2V0KCksIGdldENhbGxpbmdQaWQoKSk7CiAgICAgTXV0ZXg6OkF1dG9sb2NrIGxvY2sobUxvY2spOwotICAgIHN0YXR1c190IHJlc3VsdCA9IGNoZWNrUGlkKCk7CisgICAgc3RhdHVzX3QgcmVzdWx0ID0gY2hlY2tQaWRBbmRIYXJkd2FyZSgpOwogICAgIGlmIChyZXN1bHQgIT0gTk9fRVJST1IpIHJldHVybiByZXN1bHQ7CiAKLSAgICBNdXRleDo6QXV0b2xvY2sgc3VyZmFjZUxvY2sobVN1cmZhY2VMb2NrKTsKICAgICByZXN1bHQgPSBOT19FUlJPUjsKKworICAgIC8vIHJldHVybiBpZiBubyBjaGFuZ2UgaW4gc3VyZmFjZS4KICAgICAvLyBhc0JpbmRlcigpIGlzIHNhZmUgb24gTlVMTCAocmV0dXJucyBOVUxMKQotICAgIGlmIChzdXJmYWNlLT5hc0JpbmRlcigpICE9IG1TdXJmYWNlLT5hc0JpbmRlcigpKSB7Ci0gICAgICAgIGlmIChtU3VyZmFjZSAhPSAwKSB7Ci0gICAgICAgICAgICBMT0dWKCJjbGVhcmluZyBvbGQgcHJldmlldyBzdXJmYWNlICVwIiwgbVN1cmZhY2UuZ2V0KCkpOwotICAgICAgICAgICAgaWYgKCAhbVVzZU92ZXJsYXkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbVN1cmZhY2UtPnVucmVnaXN0ZXJCdWZmZXJzKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy8gRm9yY2UgdGhlIGRlc3RydWN0aW9uIG9mIGFueSBwcmV2aW91cyBvdmVybGF5Ci0gICAgICAgICAgICAgICAgc3A8T3ZlcmxheT4gZHVtbXk7Ci0gICAgICAgICAgICAgICAgbUhhcmR3YXJlLT5zZXRPdmVybGF5KCBkdW1teSApOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIG1TdXJmYWNlID0gc3VyZmFjZTsKLSAgICAgICAgbU92ZXJsYXlSZWYgPSAwOwotICAgICAgICAvLyBJZiBwcmV2aWV3IGhhcyBiZWVuIGFscmVhZHkgc3RhcnRlZCwgc2V0IG92ZXJsYXkgb3IgcmVnaXN0ZXIgcHJldmlldwotICAgICAgICAvLyBidWZmZXJzIG5vdy4KLSAgICAgICAgaWYgKG1IYXJkd2FyZS0+cHJldmlld0VuYWJsZWQoKSkgewotICAgICAgICAgICAgaWYgKG1Vc2VPdmVybGF5KSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gc2V0T3ZlcmxheSgpOwotICAgICAgICAgICAgfSBlbHNlIGlmIChtU3VyZmFjZSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVnaXN0ZXJQcmV2aWV3QnVmZmVycygpOwotICAgICAgICAgICAgfQorICAgIGlmIChzdXJmYWNlLT5hc0JpbmRlcigpID09IG1TdXJmYWNlLT5hc0JpbmRlcigpKSB7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgaWYgKG1TdXJmYWNlICE9IDApIHsKKyAgICAgICAgTE9HMSgiY2xlYXJpbmcgb2xkIHByZXZpZXcgc3VyZmFjZSAlcCIsIG1TdXJmYWNlLmdldCgpKTsKKyAgICAgICAgaWYgKG1Vc2VPdmVybGF5KSB7CisgICAgICAgICAgICAvLyBGb3JjZSB0aGUgZGVzdHJ1Y3Rpb24gb2YgYW55IHByZXZpb3VzIG92ZXJsYXkKKyAgICAgICAgICAgIHNwPE92ZXJsYXk+IGR1bW15OworICAgICAgICAgICAgbUhhcmR3YXJlLT5zZXRPdmVybGF5KGR1bW15KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1TdXJmYWNlLT51bnJlZ2lzdGVyQnVmZmVycygpOwogICAgICAgICB9CiAgICAgfQorICAgIG1TdXJmYWNlID0gc3VyZmFjZTsKKyAgICBtT3ZlcmxheVJlZiA9IDA7CisgICAgLy8gSWYgcHJldmlldyBoYXMgYmVlbiBhbHJlYWR5IHN0YXJ0ZWQsIHNldCBvdmVybGF5IG9yIHJlZ2lzdGVyIHByZXZpZXcKKyAgICAvLyBidWZmZXJzIG5vdy4KKyAgICBpZiAobUhhcmR3YXJlLT5wcmV2aWV3RW5hYmxlZCgpKSB7CisgICAgICAgIGlmIChtVXNlT3ZlcmxheSkgeworICAgICAgICAgICAgcmVzdWx0ID0gc2V0T3ZlcmxheSgpOworICAgICAgICB9IGVsc2UgaWYgKG1TdXJmYWNlICE9IDApIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IHJlZ2lzdGVyUHJldmlld0J1ZmZlcnMoKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLS8vIHNldCB0aGUgcHJldmlldyBjYWxsYmFjayBmbGFnIHRvIGFmZmVjdCBob3cgdGhlIHJlY2VpdmVkIGZyYW1lcyBmcm9tCi0vLyBwcmV2aWV3IGFyZSBoYW5kbGVkLgotdm9pZCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OnNldFByZXZpZXdDYWxsYmFja0ZsYWcoaW50IGNhbGxiYWNrX2ZsYWcpCi17Ci0gICAgTE9HVigic2V0UHJldmlld0NhbGxiYWNrRmxhZyAocGlkICVkKSIsIGdldENhbGxpbmdQaWQoKSk7Ci0gICAgTXV0ZXg6OkF1dG9sb2NrIGxvY2sobUxvY2spOwotICAgIGlmIChjaGVja1BpZCgpICE9IE5PX0VSUk9SKSByZXR1cm47Ci0gICAgbVByZXZpZXdDYWxsYmFja0ZsYWcgPSBjYWxsYmFja19mbGFnOwotCi0gICAgaWYobVVzZU92ZXJsYXkpIHsKLSAgICAgICAgaWYobVByZXZpZXdDYWxsYmFja0ZsYWcgJiBGUkFNRV9DQUxMQkFDS19GTEFHX0VOQUJMRV9NQVNLKQotICAgICAgICAgICAgbUhhcmR3YXJlLT5lbmFibGVNc2dUeXBlKENBTUVSQV9NU0dfUFJFVklFV19GUkFNRSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1IYXJkd2FyZS0+ZGlzYWJsZU1zZ1R5cGUoQ0FNRVJBX01TR19QUkVWSUVXX0ZSQU1FKTsKLSAgICB9Ci19Ci0KLS8vIHN0YXJ0IHByZXZpZXcgbW9kZQotc3RhdHVzX3QgQ2FtZXJhU2VydmljZTo6Q2xpZW50OjpzdGFydENhbWVyYU1vZGUoY2FtZXJhX21vZGUgbW9kZSkKLXsKLSAgICBpbnQgY2FsbGluZ1BpZCA9IGdldENhbGxpbmdQaWQoKTsKLQotICAgIExPR1YoInN0YXJ0Q2FtZXJhTW9kZSglZCkgKHBpZCAlZCkiLCBtb2RlLCBjYWxsaW5nUGlkKTsKLQotICAgIC8qIHdlIGNhbm5vdCBjYWxsIGludG8gbUhhcmR3YXJlIHdpdGggbUxvY2sgaGVsZCBiZWNhdXNlCi0gICAgICogbUhhcmR3YXJlIGhhcyBjYWxsYmFja3Mgb250byB1cyB3aGljaCBhY3F1aXJlIHRoaXMgbG9jawotICAgICAqLwotCi0gICAgTXV0ZXg6OkF1dG9sb2NrIGxvY2sobUxvY2spOwotICAgIHN0YXR1c190IHJlc3VsdCA9IGNoZWNrUGlkKCk7Ci0gICAgaWYgKHJlc3VsdCAhPSBOT19FUlJPUikgcmV0dXJuIHJlc3VsdDsKLQotICAgIGlmIChtSGFyZHdhcmUgPT0gMCkgewotICAgICAgICBMT0dFKCJtSGFyZHdhcmUgaXMgTlVMTCwgcmV0dXJuaW5nLiIpOwotICAgICAgICByZXR1cm4gSU5WQUxJRF9PUEVSQVRJT047Ci0gICAgfQotCi0gICAgc3dpdGNoKG1vZGUpIHsKLSAgICBjYXNlIENBTUVSQV9SRUNPUkRJTkdfTU9ERToKLSAgICAgICAgaWYgKG1TdXJmYWNlID09IDApIHsKLSAgICAgICAgICAgIExPR0UoInNldFByZXZpZXdEaXNwbGF5IG11c3QgYmUgY2FsbGVkIGJlZm9yZSBzdGFydFJlY29yZGluZ01vZGUuIik7Ci0gICAgICAgICAgICByZXR1cm4gSU5WQUxJRF9PUEVSQVRJT047Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHN0YXJ0UmVjb3JkaW5nTW9kZSgpOwotCi0gICAgZGVmYXVsdDogLy8gQ0FNRVJBX1BSRVZJRVdfTU9ERQotICAgICAgICBpZiAobVN1cmZhY2UgPT0gMCkgewotICAgICAgICAgICAgTE9HVigibVN1cmZhY2UgaXMgbm90IHNldCB5ZXQuIik7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHN0YXJ0UHJldmlld01vZGUoKTsKLSAgICB9Ci19Ci0KLXN0YXR1c190IENhbWVyYVNlcnZpY2U6OkNsaWVudDo6c3RhcnRSZWNvcmRpbmdNb2RlKCkKLXsKLSAgICBMT0dWKCJzdGFydFJlY29yZGluZ01vZGUgKHBpZCAlZCkiLCBnZXRDYWxsaW5nUGlkKCkpOwotCi0gICAgc3RhdHVzX3QgcmV0ID0gVU5LTk9XTl9FUlJPUjsKLQotICAgIC8vIGlmIHByZXZpZXcgaGFzIG5vdCBiZWVuIHN0YXJ0ZWQsIHN0YXJ0IHByZXZpZXcgZmlyc3QKLSAgICBpZiAoIW1IYXJkd2FyZS0+cHJldmlld0VuYWJsZWQoKSkgewotICAgICAgICByZXQgPSBzdGFydFByZXZpZXdNb2RlKCk7Ci0gICAgICAgIGlmIChyZXQgIT0gTk9fRVJST1IpIHsKLSAgICAgICAgICAgIHJldHVybiByZXQ7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBpZiByZWNvcmRpbmcgaGFzIGJlZW4gZW5hYmxlZCwgbm90aGluZyBuZWVkcyB0byBiZSBkb25lCi0gICAgaWYgKG1IYXJkd2FyZS0+cmVjb3JkaW5nRW5hYmxlZCgpKSB7Ci0gICAgICAgIHJldHVybiBOT19FUlJPUjsKLSAgICB9Ci0KLSAgICAvLyBzdGFydCByZWNvcmRpbmcgbW9kZQotICAgIHJldCA9IG1IYXJkd2FyZS0+c3RhcnRSZWNvcmRpbmcoKTsKLSAgICBpZiAocmV0ICE9IE5PX0VSUk9SKSB7Ci0gICAgICAgIExPR0UoIm1IYXJkd2FyZS0+c3RhcnRSZWNvcmRpbmcoKSBmYWlsZWQgd2l0aCBzdGF0dXMgJWQiLCByZXQpOwotICAgIH0KLSAgICByZXR1cm4gcmV0OwotfQotCi1zdGF0dXNfdCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OnNldE92ZXJsYXkoKQotewotICAgIExPR1YoInNldE92ZXJsYXkiKTsKK3N0YXR1c190IENhbWVyYVNlcnZpY2U6OkNsaWVudDo6cmVnaXN0ZXJQcmV2aWV3QnVmZmVycygpIHsKICAgICBpbnQgdywgaDsKICAgICBDYW1lcmFQYXJhbWV0ZXJzIHBhcmFtcyhtSGFyZHdhcmUtPmdldFBhcmFtZXRlcnMoKSk7CiAgICAgcGFyYW1zLmdldFByZXZpZXdTaXplKCZ3LCAmaCk7CiAKLSAgICBpZiAoIHcgIT0gbU92ZXJsYXlXIHx8IGggIT0gbU92ZXJsYXlIICkKLSAgICB7Ci0gICAgICAgIC8vIEZvcmNlIHRoZSBkZXN0cnVjdGlvbiBvZiBhbnkgcHJldmlvdXMgb3ZlcmxheQotICAgICAgICBzcDxPdmVybGF5PiBkdW1teTsKLSAgICAgICAgbUhhcmR3YXJlLT5zZXRPdmVybGF5KCBkdW1teSApOwotICAgICAgICBtT3ZlcmxheVJlZiA9IDA7Ci0gICAgfQotCi0gICAgc3RhdHVzX3QgcmV0ID0gTk9fRVJST1I7Ci0gICAgaWYgKG1TdXJmYWNlICE9IDApIHsKLSAgICAgICAgaWYgKG1PdmVybGF5UmVmLmdldCgpID09IE5VTEwpIHsKLQotICAgICAgICAgICAgLy8gRklYTUU6Ci0gICAgICAgICAgICAvLyBTdXJmYWNlZmxpbmdlciBtYXkgaG9sZCBvbnRvIHRoZSBwcmV2aW91cyBvdmVybGF5IHJlZmVyZW5jZSBmb3Igc29tZQotICAgICAgICAgICAgLy8gdGltZSBhZnRlciB3ZSB0cnkgdG8gZGVzdHJveSBpdC4gcmV0cnkgYSBmZXcgdGltZXMuIEluIHRoZSBmdXR1cmUsIHdlCi0gICAgICAgICAgICAvLyBzaG91bGQgbWFrZSB0aGUgZGVzdHJveSBjYWxsIGJsb2NrLCBvciBwb3NzaWJseSBzcGVjaWZ5IHRoYXQgd2UgY2FuCi0gICAgICAgICAgICAvLyB3YWl0IGluIHRoZSBjcmVhdGVPdmVybGF5IGNhbGwgaWYgdGhlIHByZXZpb3VzIG92ZXJsYXkgaXMgaW4gdGhlIAotICAgICAgICAgICAgLy8gcHJvY2VzcyBvZiBiZWluZyBkZXN0cm95ZWQuCi0gICAgICAgICAgICBmb3IgKGludCByZXRyeSA9IDA7IHJldHJ5IDwgNTA7ICsrcmV0cnkpIHsKLSAgICAgICAgICAgICAgICBtT3ZlcmxheVJlZiA9IG1TdXJmYWNlLT5jcmVhdGVPdmVybGF5KHcsIGgsIE9WRVJMQVlfRk9STUFUX0RFRkFVTFQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtT3JpZW50YXRpb24pOwotICAgICAgICAgICAgICAgIGlmIChtT3ZlcmxheVJlZiAhPSBOVUxMKSBicmVhazsKLSAgICAgICAgICAgICAgICBMT0dXKCJPdmVybGF5IGNyZWF0ZSBmYWlsZWQgLSByZXRyeWluZyIpOwotICAgICAgICAgICAgICAgIHVzbGVlcCgyMDAwMCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIG1PdmVybGF5UmVmLmdldCgpID09IE5VTEwgKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIExPR0UoIk92ZXJsYXkgQ3JlYXRpb24gRmFpbGVkISIpOwotICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0ID0gbUhhcmR3YXJlLT5zZXRPdmVybGF5KG5ldyBPdmVybGF5KG1PdmVybGF5UmVmKSk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICByZXQgPSBtSGFyZHdhcmUtPnNldE92ZXJsYXkoTlVMTCk7Ci0gICAgfQotICAgIGlmIChyZXQgIT0gTk9fRVJST1IpIHsKLSAgICAgICAgTE9HRSgibUhhcmR3YXJlLT5zZXRPdmVybGF5KCkgZmFpbGVkIHdpdGggc3RhdHVzICVkXG4iLCByZXQpOwotICAgIH0KLQotICAgIG1PdmVybGF5VyA9IHc7Ci0gICAgbU92ZXJsYXlIID0gaDsKLQotICAgIHJldHVybiByZXQ7Ci19Ci0KLXN0YXR1c190IENhbWVyYVNlcnZpY2U6OkNsaWVudDo6cmVnaXN0ZXJQcmV2aWV3QnVmZmVycygpCi17Ci0gICAgaW50IHcsIGg7Ci0gICAgQ2FtZXJhUGFyYW1ldGVycyBwYXJhbXMobUhhcmR3YXJlLT5nZXRQYXJhbWV0ZXJzKCkpOwotICAgIHBhcmFtcy5nZXRQcmV2aWV3U2l6ZSgmdywgJmgpOwotCi0gICAgLy8gZG9uJ3QgdXNlIGEgaGFyZGNvZGVkIGZvcm1hdCBoZXJlCisgICAgLy8gRklYTUU6IGRvbid0IHVzZSBhIGhhcmRjb2RlZCBmb3JtYXQgaGVyZS4KICAgICBJU3VyZmFjZTo6QnVmZmVySGVhcCBidWZmZXJzKHcsIGgsIHcsIGgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQUxfUElYRUxfRk9STUFUX1lDckNiXzQyMF9TUCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1PcmllbnRhdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtSGFyZHdhcmUtPmdldFByZXZpZXdIZWFwKCkpOwogCi0gICAgc3RhdHVzX3QgcmV0ID0gbVN1cmZhY2UtPnJlZ2lzdGVyQnVmZmVycyhidWZmZXJzKTsKLSAgICBpZiAocmV0ICE9IE5PX0VSUk9SKSB7Ci0gICAgICAgIExPR0UoInJlZ2lzdGVyQnVmZmVycyBmYWlsZWQgd2l0aCBzdGF0dXMgJWQiLCByZXQpOworICAgIHN0YXR1c190IHJlc3VsdCA9IG1TdXJmYWNlLT5yZWdpc3RlckJ1ZmZlcnMoYnVmZmVycyk7CisgICAgaWYgKHJlc3VsdCAhPSBOT19FUlJPUikgeworICAgICAgICBMT0dFKCJyZWdpc3RlckJ1ZmZlcnMgZmFpbGVkIHdpdGggc3RhdHVzICVkIiwgcmVzdWx0KTsKICAgICB9Ci0gICAgcmV0dXJuIHJldDsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0dXNfdCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OnN0YXJ0UHJldmlld01vZGUoKQotewotICAgIExPR1YoInN0YXJ0UHJldmlld01vZGUgKHBpZCAlZCkiLCBnZXRDYWxsaW5nUGlkKCkpOworc3RhdHVzX3QgQ2FtZXJhU2VydmljZTo6Q2xpZW50OjpzZXRPdmVybGF5KCkgeworICAgIGludCB3LCBoOworICAgIENhbWVyYVBhcmFtZXRlcnMgcGFyYW1zKG1IYXJkd2FyZS0+Z2V0UGFyYW1ldGVycygpKTsKKyAgICBwYXJhbXMuZ2V0UHJldmlld1NpemUoJncsICZoKTsKKworICAgIGlmICh3ICE9IG1PdmVybGF5VyB8fCBoICE9IG1PdmVybGF5SCkgeworICAgICAgICAvLyBGb3JjZSB0aGUgZGVzdHJ1Y3Rpb24gb2YgYW55IHByZXZpb3VzIG92ZXJsYXkKKyAgICAgICAgc3A8T3ZlcmxheT4gZHVtbXk7CisgICAgICAgIG1IYXJkd2FyZS0+c2V0T3ZlcmxheShkdW1teSk7CisgICAgICAgIG1PdmVybGF5UmVmID0gMDsKKyAgICB9CisKKyAgICBzdGF0dXNfdCByZXN1bHQgPSBOT19FUlJPUjsKKyAgICBpZiAobVN1cmZhY2UgPT0gMCkgeworICAgICAgICByZXN1bHQgPSBtSGFyZHdhcmUtPnNldE92ZXJsYXkoTlVMTCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKG1PdmVybGF5UmVmID09IDApIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOgorICAgICAgICAgICAgLy8gU3VyZmFjZWZsaW5nZXIgbWF5IGhvbGQgb250byB0aGUgcHJldmlvdXMgb3ZlcmxheSByZWZlcmVuY2UgZm9yIHNvbWUKKyAgICAgICAgICAgIC8vIHRpbWUgYWZ0ZXIgd2UgdHJ5IHRvIGRlc3Ryb3kgaXQuIHJldHJ5IGEgZmV3IHRpbWVzLiBJbiB0aGUgZnV0dXJlLCB3ZQorICAgICAgICAgICAgLy8gc2hvdWxkIG1ha2UgdGhlIGRlc3Ryb3kgY2FsbCBibG9jaywgb3IgcG9zc2libHkgc3BlY2lmeSB0aGF0IHdlIGNhbgorICAgICAgICAgICAgLy8gd2FpdCBpbiB0aGUgY3JlYXRlT3ZlcmxheSBjYWxsIGlmIHRoZSBwcmV2aW91cyBvdmVybGF5IGlzIGluIHRoZQorICAgICAgICAgICAgLy8gcHJvY2VzcyBvZiBiZWluZyBkZXN0cm95ZWQuCisgICAgICAgICAgICBmb3IgKGludCByZXRyeSA9IDA7IHJldHJ5IDwgNTA7ICsrcmV0cnkpIHsKKyAgICAgICAgICAgICAgICBtT3ZlcmxheVJlZiA9IG1TdXJmYWNlLT5jcmVhdGVPdmVybGF5KHcsIGgsIE9WRVJMQVlfRk9STUFUX0RFRkFVTFQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtT3JpZW50YXRpb24pOworICAgICAgICAgICAgICAgIGlmIChtT3ZlcmxheVJlZiAhPSAwKSBicmVhazsKKyAgICAgICAgICAgICAgICBMT0dXKCJPdmVybGF5IGNyZWF0ZSBmYWlsZWQgLSByZXRyeWluZyIpOworICAgICAgICAgICAgICAgIHVzbGVlcCgyMDAwMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobU92ZXJsYXlSZWYgPT0gMCkgeworICAgICAgICAgICAgICAgIExPR0UoIk92ZXJsYXkgQ3JlYXRpb24gRmFpbGVkISIpOworICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVzdWx0ID0gbUhhcmR3YXJlLT5zZXRPdmVybGF5KG5ldyBPdmVybGF5KG1PdmVybGF5UmVmKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKHJlc3VsdCAhPSBOT19FUlJPUikgeworICAgICAgICBMT0dFKCJtSGFyZHdhcmUtPnNldE92ZXJsYXkoKSBmYWlsZWQgd2l0aCBzdGF0dXMgJWRcbiIsIHJlc3VsdCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgbU92ZXJsYXlXID0gdzsKKyAgICBtT3ZlcmxheUggPSBoOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLy8gc2V0IHRoZSBwcmV2aWV3IGNhbGxiYWNrIGZsYWcgdG8gYWZmZWN0IGhvdyB0aGUgcmVjZWl2ZWQgZnJhbWVzIGZyb20KKy8vIHByZXZpZXcgYXJlIGhhbmRsZWQuCit2b2lkIENhbWVyYVNlcnZpY2U6OkNsaWVudDo6c2V0UHJldmlld0NhbGxiYWNrRmxhZyhpbnQgY2FsbGJhY2tfZmxhZykgeworICAgIExPRzEoInNldFByZXZpZXdDYWxsYmFja0ZsYWcoJWQpIChwaWQgJWQpIiwgY2FsbGJhY2tfZmxhZywgZ2V0Q2FsbGluZ1BpZCgpKTsKKyAgICBNdXRleDo6QXV0b2xvY2sgbG9jayhtTG9jayk7CisgICAgaWYgKGNoZWNrUGlkQW5kSGFyZHdhcmUoKSAhPSBOT19FUlJPUikgcmV0dXJuOworCisgICAgbVByZXZpZXdDYWxsYmFja0ZsYWcgPSBjYWxsYmFja19mbGFnOworCisgICAgLy8gSWYgd2UgZG9uJ3QgdXNlIG92ZXJsYXksIHdlIGFsd2F5cyBuZWVkIHRoZSBwcmV2aWV3IGZyYW1lIGZvciBkaXNwbGF5LgorICAgIC8vIElmIHdlIGRvIHVzZSBvdmVybGF5LCB3ZSBvbmx5IG5lZWQgdGhlIHByZXZpZXcgZnJhbWUgaWYgdGhlIHVzZXIKKyAgICAvLyB3YW50cyB0aGUgZGF0YS4KKyAgICBpZiAobVVzZU92ZXJsYXkpIHsKKyAgICAgICAgaWYobVByZXZpZXdDYWxsYmFja0ZsYWcgJiBGUkFNRV9DQUxMQkFDS19GTEFHX0VOQUJMRV9NQVNLKSB7CisgICAgICAgICAgICBlbmFibGVNc2dUeXBlKENBTUVSQV9NU0dfUFJFVklFV19GUkFNRSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBkaXNhYmxlTXNnVHlwZShDQU1FUkFfTVNHX1BSRVZJRVdfRlJBTUUpOworICAgICAgICB9CisgICAgfQorfQorCisvLyBzdGFydCBwcmV2aWV3IG1vZGUKK3N0YXR1c190IENhbWVyYVNlcnZpY2U6OkNsaWVudDo6c3RhcnRQcmV2aWV3KCkgeworICAgIExPRzEoInN0YXJ0UHJldmlldyAocGlkICVkKSIsIGdldENhbGxpbmdQaWQoKSk7CisgICAgcmV0dXJuIHN0YXJ0Q2FtZXJhTW9kZShDQU1FUkFfUFJFVklFV19NT0RFKTsKK30KKworLy8gc3RhcnQgcmVjb3JkaW5nIG1vZGUKK3N0YXR1c190IENhbWVyYVNlcnZpY2U6OkNsaWVudDo6c3RhcnRSZWNvcmRpbmcoKSB7CisgICAgTE9HMSgic3RhcnRSZWNvcmRpbmcgKHBpZCAlZCkiLCBnZXRDYWxsaW5nUGlkKCkpOworICAgIHJldHVybiBzdGFydENhbWVyYU1vZGUoQ0FNRVJBX1JFQ09SRElOR19NT0RFKTsKK30KKworLy8gc3RhcnQgcHJldmlldyBvciByZWNvcmRpbmcKK3N0YXR1c190IENhbWVyYVNlcnZpY2U6OkNsaWVudDo6c3RhcnRDYW1lcmFNb2RlKGNhbWVyYV9tb2RlIG1vZGUpIHsKKyAgICBMT0cxKCJzdGFydENhbWVyYU1vZGUoJWQpIiwgbW9kZSk7CisgICAgTXV0ZXg6OkF1dG9sb2NrIGxvY2sobUxvY2spOworICAgIHN0YXR1c190IHJlc3VsdCA9IGNoZWNrUGlkQW5kSGFyZHdhcmUoKTsKKyAgICBpZiAocmVzdWx0ICE9IE5PX0VSUk9SKSByZXR1cm4gcmVzdWx0OworCisgICAgc3dpdGNoKG1vZGUpIHsKKyAgICAgICAgY2FzZSBDQU1FUkFfUFJFVklFV19NT0RFOgorICAgICAgICAgICAgaWYgKG1TdXJmYWNlID09IDApIHsKKyAgICAgICAgICAgICAgICBMT0cxKCJtU3VyZmFjZSBpcyBub3Qgc2V0IHlldC4iKTsKKyAgICAgICAgICAgICAgICAvLyBzdGlsbCBhYmxlIHRvIHN0YXJ0IHByZXZpZXcgaW4gdGhpcyBjYXNlLgorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHN0YXJ0UHJldmlld01vZGUoKTsKKyAgICAgICAgY2FzZSBDQU1FUkFfUkVDT1JESU5HX01PREU6CisgICAgICAgICAgICBpZiAobVN1cmZhY2UgPT0gMCkgeworICAgICAgICAgICAgICAgIExPR0UoIm1TdXJmYWNlIG11c3QgYmUgc2V0IGJlZm9yZSBzdGFydFJlY29yZGluZ01vZGUuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIElOVkFMSURfT1BFUkFUSU9OOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHN0YXJ0UmVjb3JkaW5nTW9kZSgpOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIFVOS05PV05fRVJST1I7CisgICAgfQorfQorCitzdGF0dXNfdCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OnN0YXJ0UHJldmlld01vZGUoKSB7CisgICAgTE9HMSgic3RhcnRQcmV2aWV3TW9kZSIpOworICAgIHN0YXR1c190IHJlc3VsdCA9IE5PX0VSUk9SOwogCiAgICAgLy8gaWYgcHJldmlldyBoYXMgYmVlbiBlbmFibGVkLCBub3RoaW5nIG5lZWRzIHRvIGJlIGRvbmUKICAgICBpZiAobUhhcmR3YXJlLT5wcmV2aWV3RW5hYmxlZCgpKSB7CiAgICAgICAgIHJldHVybiBOT19FUlJPUjsKICAgICB9CiAKLSAgICAvLyBzdGFydCBwcmV2aWV3IG1vZGUKLSNpZiBERUJVR19EVU1QX1BSRVZJRVdfRlJBTUVfVE9fRklMRQotICAgIGRlYnVnX2ZyYW1lX2NudCA9IDA7Ci0jZW5kaWYKLSAgICBzdGF0dXNfdCByZXQgPSBOT19FUlJPUjsKLQogICAgIGlmIChtVXNlT3ZlcmxheSkgewogICAgICAgICAvLyBJZiBwcmV2aWV3IGRpc3BsYXkgaGFzIGJlZW4gc2V0LCBzZXQgb3ZlcmxheSBub3cuCiAgICAgICAgIGlmIChtU3VyZmFjZSAhPSAwKSB7Ci0gICAgICAgICAgICByZXQgPSBzZXRPdmVybGF5KCk7CisgICAgICAgICAgICByZXN1bHQgPSBzZXRPdmVybGF5KCk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHJldCAhPSBOT19FUlJPUikgcmV0dXJuIHJldDsKLSAgICAgICAgcmV0ID0gbUhhcmR3YXJlLT5zdGFydFByZXZpZXcoKTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSBOT19FUlJPUikgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgcmVzdWx0ID0gbUhhcmR3YXJlLT5zdGFydFByZXZpZXcoKTsKICAgICB9IGVsc2UgewotICAgICAgICBtSGFyZHdhcmUtPmVuYWJsZU1zZ1R5cGUoQ0FNRVJBX01TR19QUkVWSUVXX0ZSQU1FKTsKLSAgICAgICAgcmV0ID0gbUhhcmR3YXJlLT5zdGFydFByZXZpZXcoKTsKLSAgICAgICAgaWYgKHJldCAhPSBOT19FUlJPUikgcmV0dXJuIHJldDsKKyAgICAgICAgZW5hYmxlTXNnVHlwZShDQU1FUkFfTVNHX1BSRVZJRVdfRlJBTUUpOworICAgICAgICByZXN1bHQgPSBtSGFyZHdhcmUtPnN0YXJ0UHJldmlldygpOworICAgICAgICBpZiAocmVzdWx0ICE9IE5PX0VSUk9SKSByZXR1cm4gcmVzdWx0OwogICAgICAgICAvLyBJZiBwcmV2aWV3IGRpc3BsYXkgaGFzIGJlZW4gc2V0LCByZWdpc3RlciBwcmV2aWV3IGJ1ZmZlcnMgbm93LgogICAgICAgICBpZiAobVN1cmZhY2UgIT0gMCkgewotICAgICAgICAgICAvLyBVbnJlZ2lzdGVyIGhlcmUgYmVjYXVzZSB0aGUgc3VyZmFjZSByZWdpc3RlcmVkIHdpdGggcmF3IGhlYXAuCisgICAgICAgICAgIC8vIFVucmVnaXN0ZXIgaGVyZSBiZWNhdXNlIHRoZSBzdXJmYWNlIG1heSBiZSBwcmV2aW91c2x5IHJlZ2lzdGVyZWQKKyAgICAgICAgICAgLy8gd2l0aCB0aGUgcmF3IChzbmFwc2hvdCkgaGVhcC4KICAgICAgICAgICAgbVN1cmZhY2UtPnVucmVnaXN0ZXJCdWZmZXJzKCk7Ci0gICAgICAgICAgIHJldCA9IHJlZ2lzdGVyUHJldmlld0J1ZmZlcnMoKTsKKyAgICAgICAgICAgcmVzdWx0ID0gcmVnaXN0ZXJQcmV2aWV3QnVmZmVycygpOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiByZXQ7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotc3RhdHVzX3QgQ2FtZXJhU2VydmljZTo6Q2xpZW50OjpzdGFydFByZXZpZXcoKQotewotICAgIExPR1YoInN0YXJ0UHJldmlldyAocGlkICVkKSIsIGdldENhbGxpbmdQaWQoKSk7CitzdGF0dXNfdCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OnN0YXJ0UmVjb3JkaW5nTW9kZSgpIHsKKyAgICBMT0cxKCJzdGFydFJlY29yZGluZ01vZGUiKTsKKyAgICBzdGF0dXNfdCByZXN1bHQgPSBOT19FUlJPUjsKIAotICAgIHJldHVybiBzdGFydENhbWVyYU1vZGUoQ0FNRVJBX1BSRVZJRVdfTU9ERSk7Ci19CisgICAgLy8gaWYgcmVjb3JkaW5nIGhhcyBiZWVuIGVuYWJsZWQsIG5vdGhpbmcgbmVlZHMgdG8gYmUgZG9uZQorICAgIGlmIChtSGFyZHdhcmUtPnJlY29yZGluZ0VuYWJsZWQoKSkgeworICAgICAgICByZXR1cm4gTk9fRVJST1I7CisgICAgfQogCi1zdGF0dXNfdCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OnN0YXJ0UmVjb3JkaW5nKCkKLXsKLSAgICBMT0dWKCJzdGFydFJlY29yZGluZyAocGlkICVkKSIsIGdldENhbGxpbmdQaWQoKSk7Ci0KLSAgICBpZiAobU1lZGlhUGxheWVyQmVlcC5nZXQoKSAhPSBOVUxMKSB7Ci0gICAgICAgIC8vIGRvIG5vdCBwbGF5IHJlY29yZCBqaW5nbGUgaWYgc3RyZWFtIHZvbHVtZSBpcyAwCi0gICAgICAgIC8vICh0eXBpY2FsbHkgYmVjYXVzZSByaW5nZXIgbW9kZSBpcyBzaWxlbnQpLgotICAgICAgICBpbnQgaW5kZXg7Ci0gICAgICAgIEF1ZGlvU3lzdGVtOjpnZXRTdHJlYW1Wb2x1bWVJbmRleChBdWRpb1N5c3RlbTo6RU5GT1JDRURfQVVESUJMRSwgJmluZGV4KTsKLSAgICAgICAgaWYgKGluZGV4ICE9IDApIHsKLSAgICAgICAgICAgIG1NZWRpYVBsYXllckJlZXAtPnNlZWtUbygwKTsKLSAgICAgICAgICAgIG1NZWRpYVBsYXllckJlZXAtPnN0YXJ0KCk7CisgICAgLy8gaWYgcHJldmlldyBoYXMgbm90IGJlZW4gc3RhcnRlZCwgc3RhcnQgcHJldmlldyBmaXJzdAorICAgIGlmICghbUhhcmR3YXJlLT5wcmV2aWV3RW5hYmxlZCgpKSB7CisgICAgICAgIHJlc3VsdCA9IHN0YXJ0UHJldmlld01vZGUoKTsKKyAgICAgICAgaWYgKHJlc3VsdCAhPSBOT19FUlJPUikgeworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICAgICAgfQogICAgIH0KIAotICAgIG1IYXJkd2FyZS0+ZW5hYmxlTXNnVHlwZShDQU1FUkFfTVNHX1ZJREVPX0ZSQU1FKTsKLQotICAgIHJldHVybiBzdGFydENhbWVyYU1vZGUoQ0FNRVJBX1JFQ09SRElOR19NT0RFKTsKKyAgICAvLyBzdGFydCByZWNvcmRpbmcgbW9kZQorICAgIGVuYWJsZU1zZ1R5cGUoQ0FNRVJBX01TR19WSURFT19GUkFNRSk7CisgICAgbUNhbWVyYVNlcnZpY2UtPnBsYXlTb3VuZChTT1VORF9SRUNPUkRJTkcpOworICAgIHJlc3VsdCA9IG1IYXJkd2FyZS0+c3RhcnRSZWNvcmRpbmcoKTsKKyAgICBpZiAocmVzdWx0ICE9IE5PX0VSUk9SKSB7CisgICAgICAgIExPR0UoIm1IYXJkd2FyZS0+c3RhcnRSZWNvcmRpbmcoKSBmYWlsZWQgd2l0aCBzdGF0dXMgJWQiLCByZXN1bHQpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiAvLyBzdG9wIHByZXZpZXcgbW9kZQotdm9pZCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OnN0b3BQcmV2aWV3KCkKLXsKLSAgICBMT0dWKCJzdG9wUHJldmlldyAocGlkICVkKSIsIGdldENhbGxpbmdQaWQoKSk7Cit2b2lkIENhbWVyYVNlcnZpY2U6OkNsaWVudDo6c3RvcFByZXZpZXcoKSB7CisgICAgTE9HMSgic3RvcFByZXZpZXcgKHBpZCAlZCkiLCBnZXRDYWxsaW5nUGlkKCkpOworICAgIE11dGV4OjpBdXRvbG9jayBsb2NrKG1Mb2NrKTsKKyAgICBpZiAoY2hlY2tQaWRBbmRIYXJkd2FyZSgpICE9IE5PX0VSUk9SKSByZXR1cm47CiAKLSAgICAvLyBob2xkIG1haW4gbG9jayBkdXJpbmcgc3RhdGUgdHJhbnNpdGlvbgotICAgIHsKLSAgICAgICAgTXV0ZXg6OkF1dG9sb2NrIGxvY2sobUxvY2spOwotICAgICAgICBpZiAoY2hlY2tQaWQoKSAhPSBOT19FUlJPUikgcmV0dXJuOworICAgIGRpc2FibGVNc2dUeXBlKENBTUVSQV9NU0dfUFJFVklFV19GUkFNRSk7CisgICAgbUhhcmR3YXJlLT5zdG9wUHJldmlldygpOwogCi0gICAgICAgIGlmIChtSGFyZHdhcmUgPT0gMCkgewotICAgICAgICAgICAgTE9HRSgibUhhcmR3YXJlIGlzIE5VTEwsIHJldHVybmluZy4iKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIG1IYXJkd2FyZS0+c3RvcFByZXZpZXcoKTsKLSAgICAgICAgbUhhcmR3YXJlLT5kaXNhYmxlTXNnVHlwZShDQU1FUkFfTVNHX1BSRVZJRVdfRlJBTUUpOwotICAgICAgICBMT0dWKCJzdG9wUHJldmlldygpLCBoYXJkd2FyZSBzdG9wcGVkIE9LIik7Ci0KLSAgICAgICAgaWYgKG1TdXJmYWNlICE9IDAgJiYgIW1Vc2VPdmVybGF5KSB7Ci0gICAgICAgICAgICBtU3VyZmFjZS0+dW5yZWdpc3RlckJ1ZmZlcnMoKTsKLSAgICAgICAgfQorICAgIGlmIChtU3VyZmFjZSAhPSAwICYmICFtVXNlT3ZlcmxheSkgeworICAgICAgICBtU3VyZmFjZS0+dW5yZWdpc3RlckJ1ZmZlcnMoKTsKICAgICB9CiAKLSAgICAvLyBob2xkIHByZXZpZXcgYnVmZmVyIGxvY2sKLSAgICB7Ci0gICAgICAgIE11dGV4OjpBdXRvbG9jayBsb2NrKG1QcmV2aWV3TG9jayk7Ci0gICAgICAgIG1QcmV2aWV3QnVmZmVyLmNsZWFyKCk7Ci0gICAgfQorICAgIG1QcmV2aWV3QnVmZmVyLmNsZWFyKCk7CiB9CiAKIC8vIHN0b3AgcmVjb3JkaW5nIG1vZGUKLXZvaWQgQ2FtZXJhU2VydmljZTo6Q2xpZW50OjpzdG9wUmVjb3JkaW5nKCkKLXsKLSAgICBMT0dWKCJzdG9wUmVjb3JkaW5nIChwaWQgJWQpIiwgZ2V0Q2FsbGluZ1BpZCgpKTsKK3ZvaWQgQ2FtZXJhU2VydmljZTo6Q2xpZW50OjpzdG9wUmVjb3JkaW5nKCkgeworICAgIExPRzEoInN0b3BSZWNvcmRpbmcgKHBpZCAlZCkiLCBnZXRDYWxsaW5nUGlkKCkpOworICAgIE11dGV4OjpBdXRvbG9jayBsb2NrKG1Mb2NrKTsKKyAgICBpZiAoY2hlY2tQaWRBbmRIYXJkd2FyZSgpICE9IE5PX0VSUk9SKSByZXR1cm47CiAKLSAgICAvLyBob2xkIG1haW4gbG9jayBkdXJpbmcgc3RhdGUgdHJhbnNpdGlvbgotICAgIHsKLSAgICAgICAgTXV0ZXg6OkF1dG9sb2NrIGxvY2sobUxvY2spOwotICAgICAgICBpZiAoY2hlY2tQaWQoKSAhPSBOT19FUlJPUikgcmV0dXJuOworICAgIG1DYW1lcmFTZXJ2aWNlLT5wbGF5U291bmQoU09VTkRfUkVDT1JESU5HKTsKKyAgICBkaXNhYmxlTXNnVHlwZShDQU1FUkFfTVNHX1ZJREVPX0ZSQU1FKTsKKyAgICBtSGFyZHdhcmUtPnN0b3BSZWNvcmRpbmcoKTsKIAotICAgICAgICBpZiAobUhhcmR3YXJlID09IDApIHsKLSAgICAgICAgICAgIExPR0UoIm1IYXJkd2FyZSBpcyBOVUxMLCByZXR1cm5pbmcuIik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobU1lZGlhUGxheWVyQmVlcC5nZXQoKSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBtTWVkaWFQbGF5ZXJCZWVwLT5zZWVrVG8oMCk7Ci0gICAgICAgICAgICBtTWVkaWFQbGF5ZXJCZWVwLT5zdGFydCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgbUhhcmR3YXJlLT5zdG9wUmVjb3JkaW5nKCk7Ci0gICAgICAgIG1IYXJkd2FyZS0+ZGlzYWJsZU1zZ1R5cGUoQ0FNRVJBX01TR19WSURFT19GUkFNRSk7Ci0gICAgICAgIExPR1YoInN0b3BSZWNvcmRpbmcoKSwgaGFyZHdhcmUgc3RvcHBlZCBPSyIpOwotICAgIH0KLQotICAgIC8vIGhvbGQgcHJldmlldyBidWZmZXIgbG9jawotICAgIHsKLSAgICAgICAgTXV0ZXg6OkF1dG9sb2NrIGxvY2sobVByZXZpZXdMb2NrKTsKLSAgICAgICAgbVByZXZpZXdCdWZmZXIuY2xlYXIoKTsKLSAgICB9CisgICAgbVByZXZpZXdCdWZmZXIuY2xlYXIoKTsKIH0KIAogLy8gcmVsZWFzZSBhIHJlY29yZGluZyBmcmFtZQotdm9pZCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OnJlbGVhc2VSZWNvcmRpbmdGcmFtZShjb25zdCBzcDxJTWVtb3J5PiYgbWVtKQotewordm9pZCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OnJlbGVhc2VSZWNvcmRpbmdGcmFtZShjb25zdCBzcDxJTWVtb3J5PiYgbWVtKSB7CiAgICAgTXV0ZXg6OkF1dG9sb2NrIGxvY2sobUxvY2spOwotICAgIGlmIChjaGVja1BpZCgpICE9IE5PX0VSUk9SKSByZXR1cm47Ci0KLSAgICBpZiAobUhhcmR3YXJlID09IDApIHsKLSAgICAgICAgTE9HRSgibUhhcmR3YXJlIGlzIE5VTEwsIHJldHVybmluZy4iKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQorICAgIGlmIChjaGVja1BpZEFuZEhhcmR3YXJlKCkgIT0gTk9fRVJST1IpIHJldHVybjsKICAgICBtSGFyZHdhcmUtPnJlbGVhc2VSZWNvcmRpbmdGcmFtZShtZW0pOwogfQogCi1ib29sIENhbWVyYVNlcnZpY2U6OkNsaWVudDo6cHJldmlld0VuYWJsZWQoKQoteworYm9vbCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OnByZXZpZXdFbmFibGVkKCkgeworICAgIExPRzEoInByZXZpZXdFbmFibGVkIChwaWQgJWQpIiwgZ2V0Q2FsbGluZ1BpZCgpKTsKKwogICAgIE11dGV4OjpBdXRvbG9jayBsb2NrKG1Mb2NrKTsKLSAgICBpZiAobUhhcmR3YXJlID09IDApIHJldHVybiBmYWxzZTsKKyAgICBpZiAoY2hlY2tQaWRBbmRIYXJkd2FyZSgpICE9IE5PX0VSUk9SKSByZXR1cm4gZmFsc2U7CiAgICAgcmV0dXJuIG1IYXJkd2FyZS0+cHJldmlld0VuYWJsZWQoKTsKIH0KIAotYm9vbCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OnJlY29yZGluZ0VuYWJsZWQoKQoteworYm9vbCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OnJlY29yZGluZ0VuYWJsZWQoKSB7CisgICAgTE9HMSgicmVjb3JkaW5nRW5hYmxlZCAocGlkICVkKSIsIGdldENhbGxpbmdQaWQoKSk7CisKICAgICBNdXRleDo6QXV0b2xvY2sgbG9jayhtTG9jayk7Ci0gICAgaWYgKG1IYXJkd2FyZSA9PSAwKSByZXR1cm4gZmFsc2U7CisgICAgaWYgKGNoZWNrUGlkQW5kSGFyZHdhcmUoKSAhPSBOT19FUlJPUikgcmV0dXJuIGZhbHNlOwogICAgIHJldHVybiBtSGFyZHdhcmUtPnJlY29yZGluZ0VuYWJsZWQoKTsKIH0KIAotLy8gU2FmZWx5IHJldHJpZXZlcyBhIHN0cm9uZyBwb2ludGVyIHRvIHRoZSBjbGllbnQgZHVyaW5nIGEgaGFyZHdhcmUgY2FsbGJhY2suCi1zcDxDYW1lcmFTZXJ2aWNlOjpDbGllbnQ+IENhbWVyYVNlcnZpY2U6OkNsaWVudDo6Z2V0Q2xpZW50RnJvbUNvb2tpZSh2b2lkKiB1c2VyKQotewotICAgIHNwPENsaWVudD4gY2xpZW50ID0gMDsKLSAgICBDYW1lcmFTZXJ2aWNlICpzZXJ2aWNlID0gc3RhdGljX2Nhc3Q8Q2FtZXJhU2VydmljZSo+KHVzZXIpOwotICAgIGlmIChzZXJ2aWNlICE9IE5VTEwpIHsKLSAgICAgICAgTXV0ZXg6OkF1dG9sb2NrIG91ckxvY2soc2VydmljZS0+bVNlcnZpY2VMb2NrKTsKLSAgICAgICAgaWYgKHNlcnZpY2UtPm1DbGllbnQgIT0gMCkgewotICAgICAgICAgICAgY2xpZW50ID0gc2VydmljZS0+bUNsaWVudC5wcm9tb3RlKCk7Ci0gICAgICAgICAgICBpZiAoY2xpZW50ID09IDApIHsKLSAgICAgICAgICAgICAgICBMT0dFKCJnZXRDbGllbnRGcm9tQ29va2llOiBjbGllbnQgYXBwZWFycyB0byBoYXZlIGRpZWQiKTsKLSAgICAgICAgICAgICAgICBzZXJ2aWNlLT5tQ2xpZW50LmNsZWFyKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBMT0dFKCJnZXRDbGllbnRGcm9tQ29va2llOiBnb3QgY2FsbGJhY2sgYnV0IGNsaWVudCB3YXMgTlVMTCIpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBjbGllbnQ7Ci19Ci0KLQotI2lmIERFQlVHX0RVTVBfSlBFR19TTkFQU0hPVF9UT19GSUxFIHx8IFwKLSAgICBERUJVR19EVU1QX1lVVl9TTkFQU0hPVF9UT19GSUxFIHx8IFwKLSAgICBERUJVR19EVU1QX1BSRVZJRVdfRlJBTUVfVE9fRklMRQotc3RhdGljIHZvaWQgZHVtcF90b19maWxlKGNvbnN0IGNoYXIgKmZuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQ4X3QgKmJ1ZiwgdWludDMyX3Qgc2l6ZSkKLXsKLSAgICBpbnQgbncsIGNudCA9IDA7Ci0gICAgdWludDMyX3Qgd3JpdHRlbiA9IDA7Ci0KLSAgICBMT0dWKCJvcGVuaW5nIGZpbGUgWyVzXVxuIiwgZm5hbWUpOwotICAgIGludCBmZCA9IG9wZW4oZm5hbWUsIE9fUkRXUiB8IE9fQ1JFQVQpOwotICAgIGlmIChmZCA8IDApIHsKLSAgICAgICAgTE9HRSgiZmFpbGVkIHRvIGNyZWF0ZSBmaWxlIFslc106ICVzIiwgZm5hbWUsIHN0cmVycm9yKGVycm5vKSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBMT0dWKCJ3cml0aW5nICVkIGJ5dGVzIHRvIGZpbGUgWyVzXVxuIiwgc2l6ZSwgZm5hbWUpOwotICAgIHdoaWxlICh3cml0dGVuIDwgc2l6ZSkgewotICAgICAgICBudyA9IDo6d3JpdGUoZmQsCi0gICAgICAgICAgICAgICAgICAgICBidWYgKyB3cml0dGVuLAotICAgICAgICAgICAgICAgICAgICAgc2l6ZSAtIHdyaXR0ZW4pOwotICAgICAgICBpZiAobncgPCAwKSB7Ci0gICAgICAgICAgICBMT0dFKCJmYWlsZWQgdG8gd3JpdGUgdG8gZmlsZSBbJXNdOiAlcyIsCi0gICAgICAgICAgICAgICAgIGZuYW1lLCBzdHJlcnJvcihlcnJubykpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgd3JpdHRlbiArPSBudzsKLSAgICAgICAgY250Kys7Ci0gICAgfQotICAgIExPR1YoImRvbmUgd3JpdGluZyAlZCBieXRlcyB0byBmaWxlIFslc10gaW4gJWQgcGFzc2VzXG4iLAotICAgICAgICAgc2l6ZSwgZm5hbWUsIGNudCk7Ci0gICAgOjpjbG9zZShmZCk7Ci19Ci0jZW5kaWYKLQotc3RhdHVzX3QgQ2FtZXJhU2VydmljZTo6Q2xpZW50OjphdXRvRm9jdXMoKQotewotICAgIExPR1YoImF1dG9Gb2N1cyAocGlkICVkKSIsIGdldENhbGxpbmdQaWQoKSk7CitzdGF0dXNfdCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OmF1dG9Gb2N1cygpIHsKKyAgICBMT0cxKCJhdXRvRm9jdXMgKHBpZCAlZCkiLCBnZXRDYWxsaW5nUGlkKCkpOwogCiAgICAgTXV0ZXg6OkF1dG9sb2NrIGxvY2sobUxvY2spOwotICAgIHN0YXR1c190IHJlc3VsdCA9IGNoZWNrUGlkKCk7CisgICAgc3RhdHVzX3QgcmVzdWx0ID0gY2hlY2tQaWRBbmRIYXJkd2FyZSgpOwogICAgIGlmIChyZXN1bHQgIT0gTk9fRVJST1IpIHJldHVybiByZXN1bHQ7CiAKLSAgICBpZiAobUhhcmR3YXJlID09IDApIHsKLSAgICAgICAgTE9HRSgibUhhcmR3YXJlIGlzIE5VTEwsIHJldHVybmluZy4iKTsKLSAgICAgICAgcmV0dXJuIElOVkFMSURfT1BFUkFUSU9OOwotICAgIH0KLQogICAgIHJldHVybiBtSGFyZHdhcmUtPmF1dG9Gb2N1cygpOwogfQogCi1zdGF0dXNfdCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OmNhbmNlbEF1dG9Gb2N1cygpCi17Ci0gICAgTE9HVigiY2FuY2VsQXV0b0ZvY3VzIChwaWQgJWQpIiwgZ2V0Q2FsbGluZ1BpZCgpKTsKK3N0YXR1c190IENhbWVyYVNlcnZpY2U6OkNsaWVudDo6Y2FuY2VsQXV0b0ZvY3VzKCkgeworICAgIExPRzEoImNhbmNlbEF1dG9Gb2N1cyAocGlkICVkKSIsIGdldENhbGxpbmdQaWQoKSk7CiAKICAgICBNdXRleDo6QXV0b2xvY2sgbG9jayhtTG9jayk7Ci0gICAgc3RhdHVzX3QgcmVzdWx0ID0gY2hlY2tQaWQoKTsKKyAgICBzdGF0dXNfdCByZXN1bHQgPSBjaGVja1BpZEFuZEhhcmR3YXJlKCk7CiAgICAgaWYgKHJlc3VsdCAhPSBOT19FUlJPUikgcmV0dXJuIHJlc3VsdDsKIAotICAgIGlmIChtSGFyZHdhcmUgPT0gMCkgewotICAgICAgICBMT0dFKCJtSGFyZHdhcmUgaXMgTlVMTCwgcmV0dXJuaW5nLiIpOwotICAgICAgICByZXR1cm4gSU5WQUxJRF9PUEVSQVRJT047Ci0gICAgfQotCiAgICAgcmV0dXJuIG1IYXJkd2FyZS0+Y2FuY2VsQXV0b0ZvY3VzKCk7CiB9CiAKIC8vIHRha2UgYSBwaWN0dXJlIC0gaW1hZ2UgaXMgcmV0dXJuZWQgaW4gY2FsbGJhY2sKLXN0YXR1c190IENhbWVyYVNlcnZpY2U6OkNsaWVudDo6dGFrZVBpY3R1cmUoKQotewotICAgIExPR1YoInRha2VQaWN0dXJlIChwaWQgJWQpIiwgZ2V0Q2FsbGluZ1BpZCgpKTsKK3N0YXR1c190IENhbWVyYVNlcnZpY2U6OkNsaWVudDo6dGFrZVBpY3R1cmUoKSB7CisgICAgTE9HMSgidGFrZVBpY3R1cmUgKHBpZCAlZCkiLCBnZXRDYWxsaW5nUGlkKCkpOwogCiAgICAgTXV0ZXg6OkF1dG9sb2NrIGxvY2sobUxvY2spOwotICAgIHN0YXR1c190IHJlc3VsdCA9IGNoZWNrUGlkKCk7CisgICAgc3RhdHVzX3QgcmVzdWx0ID0gY2hlY2tQaWRBbmRIYXJkd2FyZSgpOwogICAgIGlmIChyZXN1bHQgIT0gTk9fRVJST1IpIHJldHVybiByZXN1bHQ7CiAKLSAgICBpZiAobUhhcmR3YXJlID09IDApIHsKLSAgICAgICAgTE9HRSgibUhhcmR3YXJlIGlzIE5VTEwsIHJldHVybmluZy4iKTsKLSAgICAgICAgcmV0dXJuIElOVkFMSURfT1BFUkFUSU9OOwotICAgIH0KLQotICAgIG1IYXJkd2FyZS0+ZW5hYmxlTXNnVHlwZShDQU1FUkFfTVNHX1NIVVRURVIgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQU1FUkFfTVNHX1BPU1RWSUVXX0ZSQU1FIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ0FNRVJBX01TR19SQVdfSU1BR0UgfAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQU1FUkFfTVNHX0NPTVBSRVNTRURfSU1BR0UpOworICAgIGVuYWJsZU1zZ1R5cGUoQ0FNRVJBX01TR19TSFVUVEVSIHwKKyAgICAgICAgICAgICAgICAgIENBTUVSQV9NU0dfUE9TVFZJRVdfRlJBTUUgfAorICAgICAgICAgICAgICAgICAgQ0FNRVJBX01TR19SQVdfSU1BR0UgfAorICAgICAgICAgICAgICAgICAgQ0FNRVJBX01TR19DT01QUkVTU0VEX0lNQUdFKTsKIAogICAgIHJldHVybiBtSGFyZHdhcmUtPnRha2VQaWN0dXJlKCk7CiB9CiAKLS8vIHNuYXBzaG90IHRha2VuCi12b2lkIENhbWVyYVNlcnZpY2U6OkNsaWVudDo6aGFuZGxlU2h1dHRlcigKLSAgICBpbWFnZV9yZWN0X3R5cGUgKnNpemUgLy8gVGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgeXV2IHBpY3R1cmUgZm9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlZ2lzdGVyQnVmZmVyLiBJZiB0aGlzIGlzIE5VTEwsIHVzZSB0aGUgcGljdHVyZQotICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaXplIGZyb20gcGFyYW1ldGVycy4KLSkKLXsKLSAgICAvLyBQbGF5IHNodXR0ZXIgc291bmQuCi0gICAgaWYgKG1NZWRpYVBsYXllckNsaWNrLmdldCgpICE9IE5VTEwpIHsKLSAgICAgICAgLy8gZG8gbm90IHBsYXkgc2h1dHRlciBzb3VuZCBpZiBzdHJlYW0gdm9sdW1lIGlzIDAKLSAgICAgICAgLy8gKHR5cGljYWxseSBiZWNhdXNlIHJpbmdlciBtb2RlIGlzIHNpbGVudCkuCi0gICAgICAgIGludCBpbmRleDsKLSAgICAgICAgQXVkaW9TeXN0ZW06OmdldFN0cmVhbVZvbHVtZUluZGV4KEF1ZGlvU3lzdGVtOjpFTkZPUkNFRF9BVURJQkxFLCAmaW5kZXgpOwotICAgICAgICBpZiAoaW5kZXggIT0gMCkgewotICAgICAgICAgICAgbU1lZGlhUGxheWVyQ2xpY2stPnNlZWtUbygwKTsKLSAgICAgICAgICAgIG1NZWRpYVBsYXllckNsaWNrLT5zdGFydCgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLy8gU2NyZWVuIGdvZXMgYmxhY2sgYWZ0ZXIgdGhlIGJ1ZmZlciBpcyB1bnJlZ2lzdGVyZWQuCi0gICAgaWYgKG1TdXJmYWNlICE9IDAgJiYgIW1Vc2VPdmVybGF5KSB7Ci0gICAgICAgIG1TdXJmYWNlLT51bnJlZ2lzdGVyQnVmZmVycygpOwotICAgIH0KLQotICAgIHNwPElDYW1lcmFDbGllbnQ+IGMgPSBtQ2FtZXJhQ2xpZW50OwotICAgIGlmIChjICE9IE5VTEwpIHsKLSAgICAgICAgYy0+bm90aWZ5Q2FsbGJhY2soQ0FNRVJBX01TR19TSFVUVEVSLCAwLCAwKTsKLSAgICB9Ci0gICAgbUhhcmR3YXJlLT5kaXNhYmxlTXNnVHlwZShDQU1FUkFfTVNHX1NIVVRURVIpOwotCi0gICAgLy8gSXQgdGFrZXMgc29tZSB0aW1lIGJlZm9yZSB5dXZQaWN0dXJlIGNhbGxiYWNrIHRvIGJlIGNhbGxlZC4KLSAgICAvLyBSZWdpc3RlciB0aGUgYnVmZmVyIGZvciByYXcgaW1hZ2UgaGVyZSB0byByZWR1Y2UgbGF0ZW5jeS4KLSAgICBpZiAobVN1cmZhY2UgIT0gMCAmJiAhbVVzZU92ZXJsYXkpIHsKLSAgICAgICAgaW50IHcsIGg7Ci0gICAgICAgIENhbWVyYVBhcmFtZXRlcnMgcGFyYW1zKG1IYXJkd2FyZS0+Z2V0UGFyYW1ldGVycygpKTsKLSAgICAgICAgaWYgKHNpemUgPT0gTlVMTCkgewotICAgICAgICAgICAgcGFyYW1zLmdldFBpY3R1cmVTaXplKCZ3LCAmaCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB3ID0gc2l6ZS0+d2lkdGg7Ci0gICAgICAgICAgICBoID0gc2l6ZS0+aGVpZ2h0OwotICAgICAgICAgICAgdyAmPSB+MTsKLSAgICAgICAgICAgIGggJj0gfjE7Ci0gICAgICAgICAgICBMT0dWKCJTbmFwc2hvdCBpbWFnZSB3aWR0aD0lZCwgaGVpZ2h0PSVkIiwgdywgaCk7Ci0gICAgICAgIH0KLSAgICAgICAgLy8gRklYTUU6IGRvbid0IHVzZSBoYXJkY29kZWQgZm9ybWF0IGNvbnN0YW50cyBoZXJlCi0gICAgICAgIElTdXJmYWNlOjpCdWZmZXJIZWFwIGJ1ZmZlcnModywgaCwgdywgaCwKLSAgICAgICAgICAgIEhBTF9QSVhFTF9GT1JNQVRfWUNyQ2JfNDIwX1NQLCBtT3JpZW50YXRpb24sIDAsCi0gICAgICAgICAgICBtSGFyZHdhcmUtPmdldFJhd0hlYXAoKSk7Ci0KLSAgICAgICAgbVN1cmZhY2UtPnJlZ2lzdGVyQnVmZmVycyhidWZmZXJzKTsKLSAgICAgICAgSVBDVGhyZWFkU3RhdGU6OnNlbGYoKS0+Zmx1c2hDb21tYW5kcygpOwotICAgIH0KLX0KLQotLy8gcHJldmlldyBjYWxsYmFjayAtIGZyYW1lIGJ1ZmZlciB1cGRhdGUKLXZvaWQgQ2FtZXJhU2VydmljZTo6Q2xpZW50OjpoYW5kbGVQcmV2aWV3RGF0YShjb25zdCBzcDxJTWVtb3J5PiYgbWVtKQotewotICAgIHNzaXplX3Qgb2Zmc2V0OwotICAgIHNpemVfdCBzaXplOwotICAgIHNwPElNZW1vcnlIZWFwPiBoZWFwID0gbWVtLT5nZXRNZW1vcnkoJm9mZnNldCwgJnNpemUpOwotCi0jaWYgREVCVUdfSEVBUF9MRUFLUyAmJiAwIC8vIGRlYnVnZ2luZwotICAgIGlmIChnV2Vha0hlYXAgPT0gTlVMTCkgewotICAgICAgICBpZiAoZ1dlYWtIZWFwICE9IGhlYXApIHsKLSAgICAgICAgICAgIExPR1YoIlNFVFRJTkcgUFJFVklFVyBIRUFQIik7Ci0gICAgICAgICAgICBoZWFwLT50cmFja01lKHRydWUsIHRydWUpOwotICAgICAgICAgICAgZ1dlYWtIZWFwID0gaGVhcDsKLSAgICAgICAgfQotICAgIH0KLSNlbmRpZgotI2lmIERFQlVHX0RVTVBfUFJFVklFV19GUkFNRV9UT19GSUxFCi0gICAgewotICAgICAgICBpZiAoZGVidWdfZnJhbWVfY250KysgPT0gREVCVUdfRFVNUF9QUkVWSUVXX0ZSQU1FX1RPX0ZJTEUpIHsKLSAgICAgICAgICAgIGR1bXBfdG9fZmlsZSgiL2RhdGEvcHJldmlldy55dXYiLAotICAgICAgICAgICAgICAgICAgICAgICAgICh1aW50OF90ICopaGVhcC0+YmFzZSgpICsgb2Zmc2V0LCBzaXplKTsKLSAgICAgICAgfQotICAgIH0KLSNlbmRpZgotCi0gICAgaWYgKCFtVXNlT3ZlcmxheSkKLSAgICB7Ci0gICAgICAgIE11dGV4OjpBdXRvbG9jayBzdXJmYWNlTG9jayhtU3VyZmFjZUxvY2spOwotICAgICAgICBpZiAobVN1cmZhY2UgIT0gTlVMTCkgewotICAgICAgICAgICAgbVN1cmZhY2UtPnBvc3RCdWZmZXIob2Zmc2V0KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIGxvY2FsIGNvcHkgb2YgdGhlIGNhbGxiYWNrIGZsYWdzCi0gICAgaW50IGZsYWdzID0gbVByZXZpZXdDYWxsYmFja0ZsYWc7Ci0KLSAgICAvLyBpcyBjYWxsYmFjayBlbmFibGVkPwotICAgIGlmICghKGZsYWdzICYgRlJBTUVfQ0FMTEJBQ0tfRkxBR19FTkFCTEVfTUFTSykpIHsKLSAgICAgICAgLy8gSWYgdGhlIGVuYWJsZSBiaXQgaXMgb2ZmLCB0aGUgY29weS1vdXQgYW5kIG9uZS1zaG90IGJpdHMgYXJlIGlnbm9yZWQKLSAgICAgICAgTE9HVigiZnJhbWUgY2FsbGJhY2sgaXMgZGlhYmxlZCIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgLy8gaG9sZCBhIHN0cm9uZyBwb2ludGVyIHRvIHRoZSBjbGllbnQKLSAgICBzcDxJQ2FtZXJhQ2xpZW50PiBjID0gbUNhbWVyYUNsaWVudDsKLQotICAgIC8vIGNsZWFyIGNhbGxiYWNrIGZsYWdzIGlmIG5vIGNsaWVudCBvciBvbmUtc2hvdCBtb2RlCi0gICAgaWYgKChjID09IE5VTEwpIHx8IChtUHJldmlld0NhbGxiYWNrRmxhZyAmIEZSQU1FX0NBTExCQUNLX0ZMQUdfT05FX1NIT1RfTUFTSykpIHsKLSAgICAgICAgTE9HVigiRGlzYWJsZSBwcmV2aWV3IGNhbGxiYWNrIik7Ci0gICAgICAgIG1QcmV2aWV3Q2FsbGJhY2tGbGFnICY9IH4oRlJBTUVfQ0FMTEJBQ0tfRkxBR19PTkVfU0hPVF9NQVNLIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlJBTUVfQ0FMTEJBQ0tfRkxBR19DT1BZX09VVF9NQVNLIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlJBTUVfQ0FMTEJBQ0tfRkxBR19FTkFCTEVfTUFTSyk7Ci0gICAgICAgIC8vIFRPRE86IFNob3VsZG4ndCB3ZSB1c2UgdGhpcyBBUEkgZm9yIG5vbi1vdmVybGF5IGhhcmR3YXJlIGFzIHdlbGw/Ci0gICAgICAgIGlmIChtVXNlT3ZlcmxheSkKLSAgICAgICAgICAgIG1IYXJkd2FyZS0+ZGlzYWJsZU1zZ1R5cGUoQ0FNRVJBX01TR19QUkVWSUVXX0ZSQU1FKTsKLSAgICB9Ci0KLSAgICAvLyBJcyB0aGUgcmVjZWl2ZWQgZnJhbWUgY29waWVkIG91dCBvciBub3Q/Ci0gICAgaWYgKGZsYWdzICYgRlJBTUVfQ0FMTEJBQ0tfRkxBR19DT1BZX09VVF9NQVNLKSB7Ci0gICAgICAgIExPR1YoImZyYW1lIGlzIGNvcGllZCIpOwotICAgICAgICBjb3B5RnJhbWVBbmRQb3N0Q29waWVkRnJhbWUoYywgaGVhcCwgb2Zmc2V0LCBzaXplKTsKLSAgICB9IGVsc2UgewotICAgICAgICBMT0dWKCJmcmFtZSBpcyBmb3J3YXJkZWQiKTsKLSAgICAgICAgYy0+ZGF0YUNhbGxiYWNrKENBTUVSQV9NU0dfUFJFVklFV19GUkFNRSwgbWVtKTsKLSAgICB9Ci19Ci0KLS8vIHBpY3R1cmUgY2FsbGJhY2sgLSBwb3N0dmlldyBpbWFnZSByZWFkeQotdm9pZCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OmhhbmRsZVBvc3R2aWV3KGNvbnN0IHNwPElNZW1vcnk+JiBtZW0pCi17Ci0jaWYgREVCVUdfRFVNUF9QT1NUVklFV19TTkFQU0hPVF9UT19GSUxFIC8vIGZvciB0ZXN0aW5nIHB1cnNwb3NlcyBvbmx5Ci0gICAgewotICAgICAgICBzc2l6ZV90IG9mZnNldDsKLSAgICAgICAgc2l6ZV90IHNpemU7Ci0gICAgICAgIHNwPElNZW1vcnlIZWFwPiBoZWFwID0gbWVtLT5nZXRNZW1vcnkoJm9mZnNldCwgJnNpemUpOwotICAgICAgICBkdW1wX3RvX2ZpbGUoIi9kYXRhL3Bvc3R2aWV3Lnl1diIsCi0gICAgICAgICAgICAgICAgICAgICAodWludDhfdCAqKWhlYXAtPmJhc2UoKSArIG9mZnNldCwgc2l6ZSk7Ci0gICAgfQotI2VuZGlmCi0KLSAgICBzcDxJQ2FtZXJhQ2xpZW50PiBjID0gbUNhbWVyYUNsaWVudDsKLSAgICBpZiAoYyAhPSBOVUxMKSB7Ci0gICAgICAgIGMtPmRhdGFDYWxsYmFjayhDQU1FUkFfTVNHX1BPU1RWSUVXX0ZSQU1FLCBtZW0pOwotICAgIH0KLSAgICBtSGFyZHdhcmUtPmRpc2FibGVNc2dUeXBlKENBTUVSQV9NU0dfUE9TVFZJRVdfRlJBTUUpOwotfQotCi0vLyBwaWN0dXJlIGNhbGxiYWNrIC0gcmF3IGltYWdlIHJlYWR5Ci12b2lkIENhbWVyYVNlcnZpY2U6OkNsaWVudDo6aGFuZGxlUmF3UGljdHVyZShjb25zdCBzcDxJTWVtb3J5PiYgbWVtKQotewotICAgIHNzaXplX3Qgb2Zmc2V0OwotICAgIHNpemVfdCBzaXplOwotICAgIHNwPElNZW1vcnlIZWFwPiBoZWFwID0gbWVtLT5nZXRNZW1vcnkoJm9mZnNldCwgJnNpemUpOwotI2lmIERFQlVHX0hFQVBfTEVBS1MgJiYgMCAvLyBkZWJ1Z2dpbmcKLSAgICBnV2Vha0hlYXAgPSBoZWFwOyAvLyBkZWJ1Z2dpbmcKLSNlbmRpZgotCi0gICAgLy9MT0dWKCJoYW5kbGVSYXdQaWN0dXJlKCVkLCAlZCkiLCBvZmZzZXQsIHNpemUpOwotI2lmIERFQlVHX0RVTVBfWVVWX1NOQVBTSE9UX1RPX0ZJTEUgLy8gZm9yIHRlc3RpbmcgcHVyc3Bvc2VzIG9ubHkKLSAgICBkdW1wX3RvX2ZpbGUoIi9kYXRhL3Bob3RvLnl1diIsCi0gICAgICAgICAgICAgICAgICh1aW50OF90ICopaGVhcC0+YmFzZSgpICsgb2Zmc2V0LCBzaXplKTsKLSNlbmRpZgotCi0gICAgLy8gUHV0IHRoZSBZVVYgdmVyc2lvbiBvZiB0aGUgc25hcHNob3QgaW4gdGhlIHByZXZpZXcgZGlzcGxheS4KLSAgICBpZiAobVN1cmZhY2UgIT0gMCAmJiAhbVVzZU92ZXJsYXkpIHsKLSAgICAgICAgbVN1cmZhY2UtPnBvc3RCdWZmZXIob2Zmc2V0KTsKLSAgICB9Ci0KLSAgICBzcDxJQ2FtZXJhQ2xpZW50PiBjID0gbUNhbWVyYUNsaWVudDsKLSAgICBpZiAoYyAhPSBOVUxMKSB7Ci0gICAgICAgIGMtPmRhdGFDYWxsYmFjayhDQU1FUkFfTVNHX1JBV19JTUFHRSwgbWVtKTsKLSAgICB9Ci0gICAgbUhhcmR3YXJlLT5kaXNhYmxlTXNnVHlwZShDQU1FUkFfTVNHX1JBV19JTUFHRSk7Ci19Ci0KLS8vIHBpY3R1cmUgY2FsbGJhY2sgLSBjb21wcmVzc2VkIHBpY3R1cmUgcmVhZHkKLXZvaWQgQ2FtZXJhU2VydmljZTo6Q2xpZW50OjpoYW5kbGVDb21wcmVzc2VkUGljdHVyZShjb25zdCBzcDxJTWVtb3J5PiYgbWVtKQotewotI2lmIERFQlVHX0RVTVBfSlBFR19TTkFQU0hPVF9UT19GSUxFIC8vIGZvciB0ZXN0aW5nIHB1cnNwb3NlcyBvbmx5Ci0gICAgewotICAgICAgICBzc2l6ZV90IG9mZnNldDsKLSAgICAgICAgc2l6ZV90IHNpemU7Ci0gICAgICAgIHNwPElNZW1vcnlIZWFwPiBoZWFwID0gbWVtLT5nZXRNZW1vcnkoJm9mZnNldCwgJnNpemUpOwotICAgICAgICBkdW1wX3RvX2ZpbGUoIi9kYXRhL3Bob3RvLmpwZyIsCi0gICAgICAgICAgICAgICAgICAgICAodWludDhfdCAqKWhlYXAtPmJhc2UoKSArIG9mZnNldCwgc2l6ZSk7Ci0gICAgfQotI2VuZGlmCi0KLSAgICBzcDxJQ2FtZXJhQ2xpZW50PiBjID0gbUNhbWVyYUNsaWVudDsKLSAgICBpZiAoYyAhPSBOVUxMKSB7Ci0gICAgICAgIGMtPmRhdGFDYWxsYmFjayhDQU1FUkFfTVNHX0NPTVBSRVNTRURfSU1BR0UsIG1lbSk7Ci0gICAgfQotICAgIG1IYXJkd2FyZS0+ZGlzYWJsZU1zZ1R5cGUoQ0FNRVJBX01TR19DT01QUkVTU0VEX0lNQUdFKTsKLX0KLQotdm9pZCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6Om5vdGlmeUNhbGxiYWNrKGludDMyX3QgbXNnVHlwZSwgaW50MzJfdCBleHQxLCBpbnQzMl90IGV4dDIsIHZvaWQqIHVzZXIpCi17Ci0gICAgTE9HVigibm90aWZ5Q2FsbGJhY2soJWQpIiwgbXNnVHlwZSk7Ci0KLSAgICBzcDxDbGllbnQ+IGNsaWVudCA9IGdldENsaWVudEZyb21Db29raWUodXNlcik7Ci0gICAgaWYgKGNsaWVudCA9PSAwKSB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBzd2l0Y2ggKG1zZ1R5cGUpIHsKLSAgICAgICAgY2FzZSBDQU1FUkFfTVNHX1NIVVRURVI6Ci0gICAgICAgICAgICAvLyBleHQxIGlzIHRoZSBkaW1lbnNpb24gb2YgdGhlIHl1diBwaWN0dXJlLgotICAgICAgICAgICAgY2xpZW50LT5oYW5kbGVTaHV0dGVyKChpbWFnZV9yZWN0X3R5cGUgKilleHQxKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgc3A8SUNhbWVyYUNsaWVudD4gYyA9IGNsaWVudC0+bUNhbWVyYUNsaWVudDsKLSAgICAgICAgICAgIGlmIChjICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBjLT5ub3RpZnlDYWxsYmFjayhtc2dUeXBlLCBleHQxLCBleHQyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLQotI2lmIERFQlVHX0NMSUVOVF9SRUZFUkVOQ0VTCi0gICAgaWYgKGNsaWVudC0+Z2V0U3Ryb25nQ291bnQoKSA9PSAxKSB7Ci0gICAgICAgIExPR0UoIisrKysrKysrKysrKysrKysgKE5PVElGWSBDQUxMQkFDSykgVEhJUyBXSUxMIENBVVNFIEEgTE9DS1VQISIpOwotICAgICAgICBjbGllbnQtPnByaW50UmVmcygpOwotICAgIH0KLSNlbmRpZgotfQotCi12b2lkIENhbWVyYVNlcnZpY2U6OkNsaWVudDo6ZGF0YUNhbGxiYWNrKGludDMyX3QgbXNnVHlwZSwgY29uc3Qgc3A8SU1lbW9yeT4mIGRhdGFQdHIsIHZvaWQqIHVzZXIpCi17Ci0gICAgTE9HVigiZGF0YUNhbGxiYWNrKCVkKSIsIG1zZ1R5cGUpOwotCi0gICAgc3A8Q2xpZW50PiBjbGllbnQgPSBnZXRDbGllbnRGcm9tQ29va2llKHVzZXIpOwotICAgIGlmIChjbGllbnQgPT0gMCkgewotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc3A8SUNhbWVyYUNsaWVudD4gYyA9IGNsaWVudC0+bUNhbWVyYUNsaWVudDsKLSAgICBpZiAoZGF0YVB0ciA9PSBOVUxMKSB7Ci0gICAgICAgIExPR0UoIk51bGwgZGF0YSByZXR1cm5lZCBpbiBkYXRhIGNhbGxiYWNrIik7Ci0gICAgICAgIGlmIChjICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGMtPm5vdGlmeUNhbGxiYWNrKENBTUVSQV9NU0dfRVJST1IsIFVOS05PV05fRVJST1IsIDApOwotICAgICAgICAgICAgYy0+ZGF0YUNhbGxiYWNrKG1zZ1R5cGUsIE5VTEwpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBzd2l0Y2ggKG1zZ1R5cGUpIHsKLSAgICAgICAgY2FzZSBDQU1FUkFfTVNHX1BSRVZJRVdfRlJBTUU6Ci0gICAgICAgICAgICBjbGllbnQtPmhhbmRsZVByZXZpZXdEYXRhKGRhdGFQdHIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgQ0FNRVJBX01TR19QT1NUVklFV19GUkFNRToKLSAgICAgICAgICAgIGNsaWVudC0+aGFuZGxlUG9zdHZpZXcoZGF0YVB0cik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBDQU1FUkFfTVNHX1JBV19JTUFHRToKLSAgICAgICAgICAgIGNsaWVudC0+aGFuZGxlUmF3UGljdHVyZShkYXRhUHRyKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIENBTUVSQV9NU0dfQ09NUFJFU1NFRF9JTUFHRToKLSAgICAgICAgICAgIGNsaWVudC0+aGFuZGxlQ29tcHJlc3NlZFBpY3R1cmUoZGF0YVB0cik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGlmIChjICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBjLT5kYXRhQ2FsbGJhY2sobXNnVHlwZSwgZGF0YVB0cik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICB9Ci0KLSNpZiBERUJVR19DTElFTlRfUkVGRVJFTkNFUwotICAgIGlmIChjbGllbnQtPmdldFN0cm9uZ0NvdW50KCkgPT0gMSkgewotICAgICAgICBMT0dFKCIrKysrKysrKysrKysrKysrIChEQVRBIENBTExCQUNLKSBUSElTIFdJTEwgQ0FVU0UgQSBMT0NLVVAhIik7Ci0gICAgICAgIGNsaWVudC0+cHJpbnRSZWZzKCk7Ci0gICAgfQotI2VuZGlmCi19Ci0KLXZvaWQgQ2FtZXJhU2VydmljZTo6Q2xpZW50OjpkYXRhQ2FsbGJhY2tUaW1lc3RhbXAobnNlY3NfdCB0aW1lc3RhbXAsIGludDMyX3QgbXNnVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3A8SU1lbW9yeT4mIGRhdGFQdHIsIHZvaWQqIHVzZXIpCi17Ci0gICAgTE9HVigiZGF0YUNhbGxiYWNrVGltZXN0YW1wKCVkKSIsIG1zZ1R5cGUpOwotCi0gICAgc3A8Q2xpZW50PiBjbGllbnQgPSBnZXRDbGllbnRGcm9tQ29va2llKHVzZXIpOwotICAgIGlmIChjbGllbnQgPT0gMCkgewotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIHNwPElDYW1lcmFDbGllbnQ+IGMgPSBjbGllbnQtPm1DYW1lcmFDbGllbnQ7Ci0KLSAgICBpZiAoZGF0YVB0ciA9PSBOVUxMKSB7Ci0gICAgICAgIExPR0UoIk51bGwgZGF0YSByZXR1cm5lZCBpbiBkYXRhIHdpdGggdGltZXN0YW1wIGNhbGxiYWNrIik7Ci0gICAgICAgIGlmIChjICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGMtPm5vdGlmeUNhbGxiYWNrKENBTUVSQV9NU0dfRVJST1IsIFVOS05PV05fRVJST1IsIDApOwotICAgICAgICAgICAgYy0+ZGF0YUNhbGxiYWNrVGltZXN0YW1wKDAsIG1zZ1R5cGUsIE5VTEwpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYyAhPSBOVUxMKSB7Ci0gICAgICAgIGMtPmRhdGFDYWxsYmFja1RpbWVzdGFtcCh0aW1lc3RhbXAsIG1zZ1R5cGUsIGRhdGFQdHIpOwotICAgIH0KLQotI2lmIERFQlVHX0NMSUVOVF9SRUZFUkVOQ0VTCi0gICAgaWYgKGNsaWVudC0+Z2V0U3Ryb25nQ291bnQoKSA9PSAxKSB7Ci0gICAgICAgIExPR0UoIisrKysrKysrKysrKysrKysgKERBVEEgQ0FMTEJBQ0sgVElNRVNUQU1QKSBUSElTIFdJTEwgQ0FVU0UgQSBMT0NLVVAhIik7Ci0gICAgICAgIGNsaWVudC0+cHJpbnRSZWZzKCk7Ci0gICAgfQotI2VuZGlmCi19Ci0KIC8vIHNldCBwcmV2aWV3L2NhcHR1cmUgcGFyYW1ldGVycyAtIGtleS92YWx1ZSBwYWlycwotc3RhdHVzX3QgQ2FtZXJhU2VydmljZTo6Q2xpZW50OjpzZXRQYXJhbWV0ZXJzKGNvbnN0IFN0cmluZzgmIHBhcmFtcykKLXsKLSAgICBMT0dWKCJzZXRQYXJhbWV0ZXJzKCVzKSIsIHBhcmFtcy5zdHJpbmcoKSk7CitzdGF0dXNfdCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OnNldFBhcmFtZXRlcnMoY29uc3QgU3RyaW5nOCYgcGFyYW1zKSB7CisgICAgTE9HMSgic2V0UGFyYW1ldGVycyAocGlkICVkKSAoJXMpIiwgZ2V0Q2FsbGluZ1BpZCgpLCBwYXJhbXMuc3RyaW5nKCkpOwogCiAgICAgTXV0ZXg6OkF1dG9sb2NrIGxvY2sobUxvY2spOwotICAgIHN0YXR1c190IHJlc3VsdCA9IGNoZWNrUGlkKCk7CisgICAgc3RhdHVzX3QgcmVzdWx0ID0gY2hlY2tQaWRBbmRIYXJkd2FyZSgpOwogICAgIGlmIChyZXN1bHQgIT0gTk9fRVJST1IpIHJldHVybiByZXN1bHQ7CiAKLSAgICBpZiAobUhhcmR3YXJlID09IDApIHsKLSAgICAgICAgTE9HRSgibUhhcmR3YXJlIGlzIE5VTEwsIHJldHVybmluZy4iKTsKLSAgICAgICAgcmV0dXJuIElOVkFMSURfT1BFUkFUSU9OOwotICAgIH0KLQogICAgIENhbWVyYVBhcmFtZXRlcnMgcChwYXJhbXMpOwotCiAgICAgcmV0dXJuIG1IYXJkd2FyZS0+c2V0UGFyYW1ldGVycyhwKTsKIH0KIAogLy8gZ2V0IHByZXZpZXcvY2FwdHVyZSBwYXJhbWV0ZXJzIC0ga2V5L3ZhbHVlIHBhaXJzCi1TdHJpbmc4IENhbWVyYVNlcnZpY2U6OkNsaWVudDo6Z2V0UGFyYW1ldGVycygpIGNvbnN0Ci17CitTdHJpbmc4IENhbWVyYVNlcnZpY2U6OkNsaWVudDo6Z2V0UGFyYW1ldGVycygpIGNvbnN0IHsKICAgICBNdXRleDo6QXV0b2xvY2sgbG9jayhtTG9jayk7Ci0KLSAgICBpZiAobUhhcmR3YXJlID09IDApIHsKLSAgICAgICAgTE9HRSgibUhhcmR3YXJlIGlzIE5VTEwsIHJldHVybmluZy4iKTsKLSAgICAgICAgcmV0dXJuIFN0cmluZzgoKTsKLSAgICB9CisgICAgaWYgKGNoZWNrUGlkQW5kSGFyZHdhcmUoKSAhPSBOT19FUlJPUikgcmV0dXJuIFN0cmluZzgoKTsKIAogICAgIFN0cmluZzggcGFyYW1zKG1IYXJkd2FyZS0+Z2V0UGFyYW1ldGVycygpLmZsYXR0ZW4oKSk7Ci0gICAgTE9HVigiZ2V0UGFyYW1ldGVycyglcykiLCBwYXJhbXMuc3RyaW5nKCkpOworICAgIExPRzEoImdldFBhcmFtZXRlcnMgKHBpZCAlZCkgKCVzKSIsIGdldENhbGxpbmdQaWQoKSwgcGFyYW1zLnN0cmluZygpKTsKICAgICByZXR1cm4gcGFyYW1zOwogfQogCi1zdGF0dXNfdCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OnNlbmRDb21tYW5kKGludDMyX3QgY21kLCBpbnQzMl90IGFyZzEsIGludDMyX3QgYXJnMikKLXsKLSAgICBMT0dWKCJzZW5kQ29tbWFuZCAocGlkICVkKSIsIGdldENhbGxpbmdQaWQoKSk7CitzdGF0dXNfdCBDYW1lcmFTZXJ2aWNlOjpDbGllbnQ6OnNlbmRDb21tYW5kKGludDMyX3QgY21kLCBpbnQzMl90IGFyZzEsIGludDMyX3QgYXJnMikgeworICAgIExPRzEoInNlbmRDb21tYW5kIChwaWQgJWQpIiwgZ2V0Q2FsbGluZ1BpZCgpKTsKICAgICBNdXRleDo6QXV0b2xvY2sgbG9jayhtTG9jayk7Ci0gICAgc3RhdHVzX3QgcmVzdWx0ID0gY2hlY2tQaWQoKTsKKyAgICBzdGF0dXNfdCByZXN1bHQgPSBjaGVja1BpZEFuZEhhcmR3YXJlKCk7CiAgICAgaWYgKHJlc3VsdCAhPSBOT19FUlJPUikgcmV0dXJuIHJlc3VsdDsKIAogICAgIGlmIChjbWQgPT0gQ0FNRVJBX0NNRF9TRVRfRElTUExBWV9PUklFTlRBVElPTikgewpAQCAtMTI0OCw1MCArODM4LDM2NiBAQAogICAgICAgICByZXR1cm4gT0s7CiAgICAgfQogCi0gICAgaWYgKG1IYXJkd2FyZSA9PSAwKSB7Ci0gICAgICAgIExPR0UoIm1IYXJkd2FyZSBpcyBOVUxMLCByZXR1cm5pbmcuIik7Ci0gICAgICAgIHJldHVybiBJTlZBTElEX09QRVJBVElPTjsKLSAgICB9Ci0KICAgICByZXR1cm4gbUhhcmR3YXJlLT5zZW5kQ29tbWFuZChjbWQsIGFyZzEsIGFyZzIpOwogfQogCi12b2lkIENhbWVyYVNlcnZpY2U6OkNsaWVudDo6Y29weUZyYW1lQW5kUG9zdENvcGllZEZyYW1lKGNvbnN0IHNwPElDYW1lcmFDbGllbnQ+JiBjbGllbnQsCi0gICAgICAgIGNvbnN0IHNwPElNZW1vcnlIZWFwPiYgaGVhcCwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUpCi17Ci0gICAgTE9HVigiY29weUZyYW1lQW5kUG9zdENvcGllZEZyYW1lIik7CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgQ2FtZXJhU2VydmljZTo6Q2xpZW50OjplbmFibGVNc2dUeXBlKGludDMyX3QgbXNnVHlwZSkgeworICAgIGFuZHJvaWRfYXRvbWljX29yKG1zZ1R5cGUsICZtTXNnRW5hYmxlZCk7CisgICAgbUhhcmR3YXJlLT5lbmFibGVNc2dUeXBlKG1zZ1R5cGUpOworfQorCit2b2lkIENhbWVyYVNlcnZpY2U6OkNsaWVudDo6ZGlzYWJsZU1zZ1R5cGUoaW50MzJfdCBtc2dUeXBlKSB7CisgICAgYW5kcm9pZF9hdG9taWNfYW5kKH5tc2dUeXBlLCAmbU1zZ0VuYWJsZWQpOworICAgIG1IYXJkd2FyZS0+ZGlzYWJsZU1zZ1R5cGUobXNnVHlwZSk7Cit9CisKKyNkZWZpbmUgQ0hFQ0tfTUVTU0FHRV9JTlRFUlZBTCAxMCAvLyAxMG1zCitib29sIENhbWVyYVNlcnZpY2U6OkNsaWVudDo6bG9ja0lmTWVzc2FnZVdhbnRlZChpbnQzMl90IG1zZ1R5cGUpIHsKKyAgICBpbnQgc2xlZXBDb3VudCA9IDA7CisgICAgd2hpbGUgKG1Nc2dFbmFibGVkICYgbXNnVHlwZSkgeworICAgICAgICBpZiAobUxvY2sudHJ5TG9jaygpID09IE5PX0VSUk9SKSB7CisgICAgICAgICAgICBpZiAoc2xlZXBDb3VudCA+IDApIHsKKyAgICAgICAgICAgICAgICBMT0cxKCJsb2NrSWZNZXNzYWdlV2FudGVkKCVkKTogd2FpdGVkIGZvciAlZCBtcyIsCisgICAgICAgICAgICAgICAgICAgIG1zZ1R5cGUsIHNsZWVwQ291bnQgKiBDSEVDS19NRVNTQUdFX0lOVEVSVkFMKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGlmIChzbGVlcENvdW50KysgPT0gMCkgeworICAgICAgICAgICAgTE9HMSgibG9ja0lmTWVzc2FnZVdhbnRlZCglZCk6IGVudGVyIHNsZWVwIiwgbXNnVHlwZSk7CisgICAgICAgIH0KKyAgICAgICAgdXNsZWVwKENIRUNLX01FU1NBR0VfSU5URVJWQUwgKiAxMDAwKTsKKyAgICB9CisgICAgTE9HVygibG9ja0lmTWVzc2FnZVdhbnRlZCglZCk6IGRyb3BwZWQgdW53YW50ZWQgbWVzc2FnZSIsIG1zZ1R5cGUpOworICAgIHJldHVybiBmYWxzZTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBDb252ZXJ0cyBmcm9tIGEgcmF3IHBvaW50ZXIgdG8gdGhlIGNsaWVudCB0byBhIHN0cm9uZyBwb2ludGVyIGR1cmluZyBhCisvLyBoYXJkd2FyZSBjYWxsYmFjay4gVGhpcyByZXF1aXJlcyB0aGUgY2FsbGJhY2tzIG9ubHkgaGFwcGVuIHdoZW4gdGhlIGNsaWVudAorLy8gaXMgc3RpbGwgYWxpdmUuCitzcDxDYW1lcmFTZXJ2aWNlOjpDbGllbnQ+IENhbWVyYVNlcnZpY2U6OkNsaWVudDo6Z2V0Q2xpZW50RnJvbUNvb2tpZSh2b2lkKiB1c2VyKSB7CisgICAgc3A8Q2xpZW50PiBjbGllbnQgPSBnQ2FtZXJhU2VydmljZS0+Z2V0Q2xpZW50QnlJZCgoaW50KSB1c2VyKTsKKworICAgIC8vIFRoaXMgY291bGQgaGFwcGVuIGlmIHRoZSBDbGllbnQgaXMgaW4gdGhlIHByb2Nlc3Mgb2Ygc2h1dHRpbmcgZG93biAodGhlCisgICAgLy8gbGFzdCBzdHJvbmcgcmVmZXJlbmNlIGlzIGdvbmUsIGJ1dCB0aGUgZGVzdHJ1Y3RvciBoYXNuJ3QgZmluaXNoZWQKKyAgICAvLyBzdG9wcGluZyB0aGUgaGFyZHdhcmUpLgorICAgIGlmIChjbGllbnQgPT0gMCkgcmV0dXJuIE5VTEw7CisKKyAgICAvLyBUaGUgY2hlY2tzIGJlbG93IGFyZSBub3QgbmVjZXNzYXJ5IGFuZCBhcmUgZm9yIGRlYnVnZ2luZyBvbmx5LgorICAgIGlmIChjbGllbnQtPm1DYW1lcmFTZXJ2aWNlLmdldCgpICE9IGdDYW1lcmFTZXJ2aWNlKSB7CisgICAgICAgIExPR0UoIm1pc21hdGNoIHNlcnZpY2UhIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChjbGllbnQtPm1IYXJkd2FyZSA9PSAwKSB7CisgICAgICAgIExPR0UoIm1IYXJkd2FyZSA9PSAwOiBjYWxsYmFjayBhZnRlciBkaXNjb25uZWN0KCk/Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBjbGllbnQ7Cit9CisKKy8vIENhbGxiYWNrIG1lc3NhZ2VzIGNhbiBiZSBkaXNwYXRjaGVkIHRvIGludGVybmFsIGhhbmRsZXJzIG9yIHBhc3MgdG8gb3VyCisvLyBjbGllbnQncyBjYWxsYmFjayBmdW5jdGlvbnMsIGRlcGVuZGluZyBvbiB0aGUgbWVzc2FnZSB0eXBlLgorLy8KKy8vIG5vdGlmeUNhbGxiYWNrOgorLy8gICAgICBDQU1FUkFfTVNHX1NIVVRURVIgICAgICAgICAgICAgIGhhbmRsZVNodXR0ZXIKKy8vICAgICAgKG90aGVycykgICAgICAgICAgICAgICAgICAgICAgICBjLT5ub3RpZnlDYWxsYmFjaworLy8gZGF0YUNhbGxiYWNrOgorLy8gICAgICBDQU1FUkFfTVNHX1BSRVZJRVdfRlJBTUUgICAgICAgIGhhbmRsZVByZXZpZXdEYXRhCisvLyAgICAgIENBTUVSQV9NU0dfUE9TVFZJRVdfRlJBTUUgICAgICAgaGFuZGxlUG9zdHZpZXcKKy8vICAgICAgQ0FNRVJBX01TR19SQVdfSU1BR0UgICAgICAgICAgICBoYW5kbGVSYXdQaWN0dXJlCisvLyAgICAgIENBTUVSQV9NU0dfQ09NUFJFU1NFRF9JTUFHRSAgICAgaGFuZGxlQ29tcHJlc3NlZFBpY3R1cmUKKy8vICAgICAgKG90aGVycykgICAgICAgICAgICAgICAgICAgICAgICBjLT5kYXRhQ2FsbGJhY2sKKy8vIGRhdGFDYWxsYmFja1RpbWVzdGFtcAorLy8gICAgICAob3RoZXJzKSAgICAgICAgICAgICAgICAgICAgICAgIGMtPmRhdGFDYWxsYmFja1RpbWVzdGFtcAorLy8KKy8vIE5PVEU6IHRoZSAqQ2FsbGJhY2sgZnVuY3Rpb25zIGdyYWIgbUxvY2sgb2YgdGhlIGNsaWVudCBiZWZvcmUgcGFzc2luZworLy8gY29udHJvbCB0byBoYW5kbGUqIGZ1bmN0aW9ucy4gU28gdGhlIGhhbmRsZSogZnVuY3Rpb25zIG11c3QgcmVsZWFzZSB0aGUKKy8vIGxvY2sgYmVmb3JlIGNhbGxpbmcgdGhlIElDYW1lcmFDbGllbnQncyBjYWxsYmFja3MsIHNvIHRob3NlIGNhbGxiYWNrcyBjYW4KKy8vIGludm9rZSBtZXRob2RzIGluIHRoZSBDbGllbnQgY2xhc3MgYWdhaW4gKEZvciBleGFtcGxlLCB0aGUgcHJldmlldyBmcmFtZQorLy8gY2FsbGJhY2sgbWF5IHdhbnQgdG8gcmVsZWFzZVJlY29yZGluZ0ZyYW1lKS4gVGhlIGhhbmRsZSogZnVuY3Rpb25zIG11c3QKKy8vIHJlbGVhc2UgdGhlIGxvY2sgYWZ0ZXIgYWxsIGFjY2Vzc2VzIHRvIG1lbWJlciB2YXJpYWJsZXMsIHNvIGl0IG11c3QgYmUKKy8vIGhhbmRsZWQgdmVyeSBjYXJlZnVsbHkuCisKK3ZvaWQgQ2FtZXJhU2VydmljZTo6Q2xpZW50Ojpub3RpZnlDYWxsYmFjayhpbnQzMl90IG1zZ1R5cGUsIGludDMyX3QgZXh0MSwKKyAgICAgICAgaW50MzJfdCBleHQyLCB2b2lkKiB1c2VyKSB7CisgICAgTE9HMigibm90aWZ5Q2FsbGJhY2soJWQpIiwgbXNnVHlwZSk7CisKKyAgICBzcDxDbGllbnQ+IGNsaWVudCA9IGdldENsaWVudEZyb21Db29raWUodXNlcik7CisgICAgaWYgKGNsaWVudCA9PSAwKSByZXR1cm47CisgICAgaWYgKCFjbGllbnQtPmxvY2tJZk1lc3NhZ2VXYW50ZWQobXNnVHlwZSkpIHJldHVybjsKKworICAgIHN3aXRjaCAobXNnVHlwZSkgeworICAgICAgICBjYXNlIENBTUVSQV9NU0dfU0hVVFRFUjoKKyAgICAgICAgICAgIC8vIGV4dDEgaXMgdGhlIGRpbWVuc2lvbiBvZiB0aGUgeXV2IHBpY3R1cmUuCisgICAgICAgICAgICBjbGllbnQtPmhhbmRsZVNodXR0ZXIoKGltYWdlX3JlY3RfdHlwZSAqKWV4dDEpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBjbGllbnQtPmhhbmRsZUdlbmVyaWNOb3RpZnkobXNnVHlwZSwgZXh0MSwgZXh0Mik7CisgICAgICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQgQ2FtZXJhU2VydmljZTo6Q2xpZW50OjpkYXRhQ2FsbGJhY2soaW50MzJfdCBtc2dUeXBlLAorICAgICAgICBjb25zdCBzcDxJTWVtb3J5PiYgZGF0YVB0ciwgdm9pZCogdXNlcikgeworICAgIExPRzIoImRhdGFDYWxsYmFjayglZCkiLCBtc2dUeXBlKTsKKworICAgIHNwPENsaWVudD4gY2xpZW50ID0gZ2V0Q2xpZW50RnJvbUNvb2tpZSh1c2VyKTsKKyAgICBpZiAoY2xpZW50ID09IDApIHJldHVybjsKKyAgICBpZiAoIWNsaWVudC0+bG9ja0lmTWVzc2FnZVdhbnRlZChtc2dUeXBlKSkgcmV0dXJuOworCisgICAgaWYgKGRhdGFQdHIgPT0gMCkgeworICAgICAgICBMT0dFKCJOdWxsIGRhdGEgcmV0dXJuZWQgaW4gZGF0YSBjYWxsYmFjayIpOworICAgICAgICBjbGllbnQtPmhhbmRsZUdlbmVyaWNOb3RpZnkoQ0FNRVJBX01TR19FUlJPUiwgVU5LTk9XTl9FUlJPUiwgMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzd2l0Y2ggKG1zZ1R5cGUpIHsKKyAgICAgICAgY2FzZSBDQU1FUkFfTVNHX1BSRVZJRVdfRlJBTUU6CisgICAgICAgICAgICBjbGllbnQtPmhhbmRsZVByZXZpZXdEYXRhKGRhdGFQdHIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ0FNRVJBX01TR19QT1NUVklFV19GUkFNRToKKyAgICAgICAgICAgIGNsaWVudC0+aGFuZGxlUG9zdHZpZXcoZGF0YVB0cik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDQU1FUkFfTVNHX1JBV19JTUFHRToKKyAgICAgICAgICAgIGNsaWVudC0+aGFuZGxlUmF3UGljdHVyZShkYXRhUHRyKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIENBTUVSQV9NU0dfQ09NUFJFU1NFRF9JTUFHRToKKyAgICAgICAgICAgIGNsaWVudC0+aGFuZGxlQ29tcHJlc3NlZFBpY3R1cmUoZGF0YVB0cik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNsaWVudC0+aGFuZGxlR2VuZXJpY0RhdGEobXNnVHlwZSwgZGF0YVB0cik7CisgICAgICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK3ZvaWQgQ2FtZXJhU2VydmljZTo6Q2xpZW50OjpkYXRhQ2FsbGJhY2tUaW1lc3RhbXAobnNlY3NfdCB0aW1lc3RhbXAsCisgICAgICAgIGludDMyX3QgbXNnVHlwZSwgY29uc3Qgc3A8SU1lbW9yeT4mIGRhdGFQdHIsIHZvaWQqIHVzZXIpIHsKKyAgICBMT0cyKCJkYXRhQ2FsbGJhY2tUaW1lc3RhbXAoJWQpIiwgbXNnVHlwZSk7CisKKyAgICBzcDxDbGllbnQ+IGNsaWVudCA9IGdldENsaWVudEZyb21Db29raWUodXNlcik7CisgICAgaWYgKGNsaWVudCA9PSAwKSByZXR1cm47CisgICAgaWYgKCFjbGllbnQtPmxvY2tJZk1lc3NhZ2VXYW50ZWQobXNnVHlwZSkpIHJldHVybjsKKworICAgIGlmIChkYXRhUHRyID09IDApIHsKKyAgICAgICAgTE9HRSgiTnVsbCBkYXRhIHJldHVybmVkIGluIGRhdGEgd2l0aCB0aW1lc3RhbXAgY2FsbGJhY2siKTsKKyAgICAgICAgY2xpZW50LT5oYW5kbGVHZW5lcmljTm90aWZ5KENBTUVSQV9NU0dfRVJST1IsIFVOS05PV05fRVJST1IsIDApOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY2xpZW50LT5oYW5kbGVHZW5lcmljRGF0YVRpbWVzdGFtcCh0aW1lc3RhbXAsIG1zZ1R5cGUsIGRhdGFQdHIpOworfQorCisvLyBzbmFwc2hvdCB0YWtlbiBjYWxsYmFjaworLy8gInNpemUiIGlzIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIHl1diBwaWN0dXJlIGZvciByZWdpc3RlckJ1ZmZlci4KKy8vIElmIGl0IGlzIE5VTEwsIHVzZSB0aGUgcGljdHVyZSBzaXplIGZyb20gcGFyYW1ldGVycy4KK3ZvaWQgQ2FtZXJhU2VydmljZTo6Q2xpZW50OjpoYW5kbGVTaHV0dGVyKGltYWdlX3JlY3RfdHlwZSAqc2l6ZSkgeworICAgIG1DYW1lcmFTZXJ2aWNlLT5wbGF5U291bmQoU09VTkRfU0hVVFRFUik7CisKKyAgICAvLyBTY3JlZW4gZ29lcyBibGFjayBhZnRlciB0aGUgYnVmZmVyIGlzIHVucmVnaXN0ZXJlZC4KKyAgICBpZiAobVN1cmZhY2UgIT0gMCAmJiAhbVVzZU92ZXJsYXkpIHsKKyAgICAgICAgbVN1cmZhY2UtPnVucmVnaXN0ZXJCdWZmZXJzKCk7CisgICAgfQorCisgICAgc3A8SUNhbWVyYUNsaWVudD4gYyA9IG1DYW1lcmFDbGllbnQ7CisgICAgaWYgKGMgIT0gMCkgeworICAgICAgICBtTG9jay51bmxvY2soKTsKKyAgICAgICAgYy0+bm90aWZ5Q2FsbGJhY2soQ0FNRVJBX01TR19TSFVUVEVSLCAwLCAwKTsKKyAgICAgICAgaWYgKCFsb2NrSWZNZXNzYWdlV2FudGVkKENBTUVSQV9NU0dfU0hVVFRFUikpIHJldHVybjsKKyAgICB9CisgICAgZGlzYWJsZU1zZ1R5cGUoQ0FNRVJBX01TR19TSFVUVEVSKTsKKworICAgIC8vIEl0IHRha2VzIHNvbWUgdGltZSBiZWZvcmUgeXV2UGljdHVyZSBjYWxsYmFjayB0byBiZSBjYWxsZWQuCisgICAgLy8gUmVnaXN0ZXIgdGhlIGJ1ZmZlciBmb3IgcmF3IGltYWdlIGhlcmUgdG8gcmVkdWNlIGxhdGVuY3kuCisgICAgaWYgKG1TdXJmYWNlICE9IDAgJiYgIW1Vc2VPdmVybGF5KSB7CisgICAgICAgIGludCB3LCBoOworICAgICAgICBDYW1lcmFQYXJhbWV0ZXJzIHBhcmFtcyhtSGFyZHdhcmUtPmdldFBhcmFtZXRlcnMoKSk7CisgICAgICAgIGlmIChzaXplID09IE5VTEwpIHsKKyAgICAgICAgICAgIHBhcmFtcy5nZXRQaWN0dXJlU2l6ZSgmdywgJmgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdyA9IHNpemUtPndpZHRoOworICAgICAgICAgICAgaCA9IHNpemUtPmhlaWdodDsKKyAgICAgICAgICAgIHcgJj0gfjE7CisgICAgICAgICAgICBoICY9IH4xOworICAgICAgICAgICAgTE9HMSgiU25hcHNob3QgaW1hZ2Ugd2lkdGg9JWQsIGhlaWdodD0lZCIsIHcsIGgpOworICAgICAgICB9CisgICAgICAgIC8vIEZJWE1FOiBkb24ndCB1c2UgaGFyZGNvZGVkIGZvcm1hdCBjb25zdGFudHMgaGVyZQorICAgICAgICBJU3VyZmFjZTo6QnVmZmVySGVhcCBidWZmZXJzKHcsIGgsIHcsIGgsCisgICAgICAgICAgICBIQUxfUElYRUxfRk9STUFUX1lDckNiXzQyMF9TUCwgbU9yaWVudGF0aW9uLCAwLAorICAgICAgICAgICAgbUhhcmR3YXJlLT5nZXRSYXdIZWFwKCkpOworCisgICAgICAgIG1TdXJmYWNlLT5yZWdpc3RlckJ1ZmZlcnMoYnVmZmVycyk7CisgICAgICAgIElQQ1RocmVhZFN0YXRlOjpzZWxmKCktPmZsdXNoQ29tbWFuZHMoKTsKKyAgICB9CisKKyAgICBtTG9jay51bmxvY2soKTsKK30KKworLy8gcHJldmlldyBjYWxsYmFjayAtIGZyYW1lIGJ1ZmZlciB1cGRhdGUKK3ZvaWQgQ2FtZXJhU2VydmljZTo6Q2xpZW50OjpoYW5kbGVQcmV2aWV3RGF0YShjb25zdCBzcDxJTWVtb3J5PiYgbWVtKSB7CisgICAgc3NpemVfdCBvZmZzZXQ7CisgICAgc2l6ZV90IHNpemU7CisgICAgc3A8SU1lbW9yeUhlYXA+IGhlYXAgPSBtZW0tPmdldE1lbW9yeSgmb2Zmc2V0LCAmc2l6ZSk7CisKKyAgICBpZiAoIW1Vc2VPdmVybGF5KSB7CisgICAgICAgIGlmIChtU3VyZmFjZSAhPSAwKSB7CisgICAgICAgICAgICBtU3VyZmFjZS0+cG9zdEJ1ZmZlcihvZmZzZXQpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gbG9jYWwgY29weSBvZiB0aGUgY2FsbGJhY2sgZmxhZ3MKKyAgICBpbnQgZmxhZ3MgPSBtUHJldmlld0NhbGxiYWNrRmxhZzsKKworICAgIC8vIGlzIGNhbGxiYWNrIGVuYWJsZWQ/CisgICAgaWYgKCEoZmxhZ3MgJiBGUkFNRV9DQUxMQkFDS19GTEFHX0VOQUJMRV9NQVNLKSkgeworICAgICAgICAvLyBJZiB0aGUgZW5hYmxlIGJpdCBpcyBvZmYsIHRoZSBjb3B5LW91dCBhbmQgb25lLXNob3QgYml0cyBhcmUgaWdub3JlZAorICAgICAgICBMT0cyKCJmcmFtZSBjYWxsYmFjayBpcyBkaXNhYmxlZCIpOworICAgICAgICBtTG9jay51bmxvY2soKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIGhvbGQgYSBzdHJvbmcgcG9pbnRlciB0byB0aGUgY2xpZW50CisgICAgc3A8SUNhbWVyYUNsaWVudD4gYyA9IG1DYW1lcmFDbGllbnQ7CisKKyAgICAvLyBjbGVhciBjYWxsYmFjayBmbGFncyBpZiBubyBjbGllbnQgb3Igb25lLXNob3QgbW9kZQorICAgIGlmIChjID09IDAgfHwgKG1QcmV2aWV3Q2FsbGJhY2tGbGFnICYgRlJBTUVfQ0FMTEJBQ0tfRkxBR19PTkVfU0hPVF9NQVNLKSkgeworICAgICAgICBMT0cyKCJEaXNhYmxlIHByZXZpZXcgY2FsbGJhY2siKTsKKyAgICAgICAgbVByZXZpZXdDYWxsYmFja0ZsYWcgJj0gfihGUkFNRV9DQUxMQkFDS19GTEFHX09ORV9TSE9UX01BU0sgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZSQU1FX0NBTExCQUNLX0ZMQUdfQ09QWV9PVVRfTUFTSyB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRlJBTUVfQ0FMTEJBQ0tfRkxBR19FTkFCTEVfTUFTSyk7CisgICAgICAgIGlmIChtVXNlT3ZlcmxheSkgeworICAgICAgICAgICAgZGlzYWJsZU1zZ1R5cGUoQ0FNRVJBX01TR19QUkVWSUVXX0ZSQU1FKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChjICE9IDApIHsKKyAgICAgICAgLy8gSXMgdGhlIHJlY2VpdmVkIGZyYW1lIGNvcGllZCBvdXQgb3Igbm90PworICAgICAgICBpZiAoZmxhZ3MgJiBGUkFNRV9DQUxMQkFDS19GTEFHX0NPUFlfT1VUX01BU0spIHsKKyAgICAgICAgICAgIExPRzIoImZyYW1lIGlzIGNvcGllZCIpOworICAgICAgICAgICAgY29weUZyYW1lQW5kUG9zdENvcGllZEZyYW1lKGMsIGhlYXAsIG9mZnNldCwgc2l6ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBMT0cyKCJmcmFtZSBpcyBmb3J3YXJkZWQiKTsKKyAgICAgICAgICAgIG1Mb2NrLnVubG9jaygpOworICAgICAgICAgICAgYy0+ZGF0YUNhbGxiYWNrKENBTUVSQV9NU0dfUFJFVklFV19GUkFNRSwgbWVtKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIG1Mb2NrLnVubG9jaygpOworICAgIH0KK30KKworLy8gcGljdHVyZSBjYWxsYmFjayAtIHBvc3R2aWV3IGltYWdlIHJlYWR5Cit2b2lkIENhbWVyYVNlcnZpY2U6OkNsaWVudDo6aGFuZGxlUG9zdHZpZXcoY29uc3Qgc3A8SU1lbW9yeT4mIG1lbSkgeworICAgIGRpc2FibGVNc2dUeXBlKENBTUVSQV9NU0dfUE9TVFZJRVdfRlJBTUUpOworCisgICAgc3A8SUNhbWVyYUNsaWVudD4gYyA9IG1DYW1lcmFDbGllbnQ7CisgICAgbUxvY2sudW5sb2NrKCk7CisgICAgaWYgKGMgIT0gMCkgeworICAgICAgICBjLT5kYXRhQ2FsbGJhY2soQ0FNRVJBX01TR19QT1NUVklFV19GUkFNRSwgbWVtKTsKKyAgICB9Cit9CisKKy8vIHBpY3R1cmUgY2FsbGJhY2sgLSByYXcgaW1hZ2UgcmVhZHkKK3ZvaWQgQ2FtZXJhU2VydmljZTo6Q2xpZW50OjpoYW5kbGVSYXdQaWN0dXJlKGNvbnN0IHNwPElNZW1vcnk+JiBtZW0pIHsKKyAgICBkaXNhYmxlTXNnVHlwZShDQU1FUkFfTVNHX1JBV19JTUFHRSk7CisKKyAgICBzc2l6ZV90IG9mZnNldDsKKyAgICBzaXplX3Qgc2l6ZTsKKyAgICBzcDxJTWVtb3J5SGVhcD4gaGVhcCA9IG1lbS0+Z2V0TWVtb3J5KCZvZmZzZXQsICZzaXplKTsKKworICAgIC8vIFB1dCB0aGUgWVVWIHZlcnNpb24gb2YgdGhlIHNuYXBzaG90IGluIHRoZSBwcmV2aWV3IGRpc3BsYXkuCisgICAgaWYgKG1TdXJmYWNlICE9IDAgJiYgIW1Vc2VPdmVybGF5KSB7CisgICAgICAgIG1TdXJmYWNlLT5wb3N0QnVmZmVyKG9mZnNldCk7CisgICAgfQorCisgICAgc3A8SUNhbWVyYUNsaWVudD4gYyA9IG1DYW1lcmFDbGllbnQ7CisgICAgbUxvY2sudW5sb2NrKCk7CisgICAgaWYgKGMgIT0gMCkgeworICAgICAgICBjLT5kYXRhQ2FsbGJhY2soQ0FNRVJBX01TR19SQVdfSU1BR0UsIG1lbSk7CisgICAgfQorfQorCisvLyBwaWN0dXJlIGNhbGxiYWNrIC0gY29tcHJlc3NlZCBwaWN0dXJlIHJlYWR5Cit2b2lkIENhbWVyYVNlcnZpY2U6OkNsaWVudDo6aGFuZGxlQ29tcHJlc3NlZFBpY3R1cmUoY29uc3Qgc3A8SU1lbW9yeT4mIG1lbSkgeworICAgIGRpc2FibGVNc2dUeXBlKENBTUVSQV9NU0dfQ09NUFJFU1NFRF9JTUFHRSk7CisKKyAgICBzcDxJQ2FtZXJhQ2xpZW50PiBjID0gbUNhbWVyYUNsaWVudDsKKyAgICBtTG9jay51bmxvY2soKTsKKyAgICBpZiAoYyAhPSAwKSB7CisgICAgICAgIGMtPmRhdGFDYWxsYmFjayhDQU1FUkFfTVNHX0NPTVBSRVNTRURfSU1BR0UsIG1lbSk7CisgICAgfQorfQorCisKK3ZvaWQgQ2FtZXJhU2VydmljZTo6Q2xpZW50OjpoYW5kbGVHZW5lcmljTm90aWZ5KGludDMyX3QgbXNnVHlwZSwKKyAgICBpbnQzMl90IGV4dDEsIGludDMyX3QgZXh0MikgeworICAgIHNwPElDYW1lcmFDbGllbnQ+IGMgPSBtQ2FtZXJhQ2xpZW50OworICAgIG1Mb2NrLnVubG9jaygpOworICAgIGlmIChjICE9IDApIHsKKyAgICAgICAgYy0+bm90aWZ5Q2FsbGJhY2sobXNnVHlwZSwgZXh0MSwgZXh0Mik7CisgICAgfQorfQorCit2b2lkIENhbWVyYVNlcnZpY2U6OkNsaWVudDo6aGFuZGxlR2VuZXJpY0RhdGEoaW50MzJfdCBtc2dUeXBlLAorICAgIGNvbnN0IHNwPElNZW1vcnk+JiBkYXRhUHRyKSB7CisgICAgc3A8SUNhbWVyYUNsaWVudD4gYyA9IG1DYW1lcmFDbGllbnQ7CisgICAgbUxvY2sudW5sb2NrKCk7CisgICAgaWYgKGMgIT0gMCkgeworICAgICAgICBjLT5kYXRhQ2FsbGJhY2sobXNnVHlwZSwgZGF0YVB0cik7CisgICAgfQorfQorCit2b2lkIENhbWVyYVNlcnZpY2U6OkNsaWVudDo6aGFuZGxlR2VuZXJpY0RhdGFUaW1lc3RhbXAobnNlY3NfdCB0aW1lc3RhbXAsCisgICAgaW50MzJfdCBtc2dUeXBlLCBjb25zdCBzcDxJTWVtb3J5PiYgZGF0YVB0cikgeworICAgIHNwPElDYW1lcmFDbGllbnQ+IGMgPSBtQ2FtZXJhQ2xpZW50OworICAgIG1Mb2NrLnVubG9jaygpOworICAgIGlmIChjICE9IDApIHsKKyAgICAgICAgYy0+ZGF0YUNhbGxiYWNrVGltZXN0YW1wKHRpbWVzdGFtcCwgbXNnVHlwZSwgZGF0YVB0cik7CisgICAgfQorfQorCit2b2lkIENhbWVyYVNlcnZpY2U6OkNsaWVudDo6Y29weUZyYW1lQW5kUG9zdENvcGllZEZyYW1lKAorICAgICAgICBjb25zdCBzcDxJQ2FtZXJhQ2xpZW50PiYgY2xpZW50LCBjb25zdCBzcDxJTWVtb3J5SGVhcD4mIGhlYXAsCisgICAgICAgIHNpemVfdCBvZmZzZXQsIHNpemVfdCBzaXplKSB7CisgICAgTE9HMigiY29weUZyYW1lQW5kUG9zdENvcGllZEZyYW1lIik7CiAgICAgLy8gSXQgaXMgbmVjZXNzYXJ5IHRvIGNvcHkgb3V0IG9mIHBtZW0gYmVmb3JlIHNlbmRpbmcgdGhpcyB0bwogICAgIC8vIHRoZSBjYWxsYmFjay4gRm9yIGVmZmljaWVuY3ksIHJldXNlIHRoZSBzYW1lIE1lbW9yeUhlYXBCYXNlCiAgICAgLy8gcHJvdmlkZWQgaXQncyBiaWcgZW5vdWdoLiBEb24ndCBhbGxvY2F0ZSB0aGUgbWVtb3J5IG9yCiAgICAgLy8gcGVyZm9ybSB0aGUgY29weSBpZiB0aGVyZSdzIG5vIGNhbGxiYWNrLgotCiAgICAgLy8gaG9sZCB0aGUgcHJldmlldyBsb2NrIHdoaWxlIHdlIGdyYWIgYSByZWZlcmVuY2UgdG8gdGhlIHByZXZpZXcgYnVmZmVyCiAgICAgc3A8TWVtb3J5SGVhcEJhc2U+IHByZXZpZXdCdWZmZXI7Ci0gICAgewotICAgICAgICBNdXRleDo6QXV0b2xvY2sgbG9jayhtUHJldmlld0xvY2spOwotICAgICAgICBpZiAobVByZXZpZXdCdWZmZXIgPT0gMCkgewotICAgICAgICAgICAgbVByZXZpZXdCdWZmZXIgPSBuZXcgTWVtb3J5SGVhcEJhc2Uoc2l6ZSwgMCwgTlVMTCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoc2l6ZSA+IG1QcmV2aWV3QnVmZmVyLT52aXJ0dWFsU2l6ZSgpKSB7Ci0gICAgICAgICAgICBtUHJldmlld0J1ZmZlci5jbGVhcigpOwotICAgICAgICAgICAgbVByZXZpZXdCdWZmZXIgPSBuZXcgTWVtb3J5SGVhcEJhc2Uoc2l6ZSwgMCwgTlVMTCk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG1QcmV2aWV3QnVmZmVyID09IDApIHsKLSAgICAgICAgICAgIExPR0UoImZhaWxlZCB0byBhbGxvY2F0ZSBzcGFjZSBmb3IgcHJldmlldyBidWZmZXIiKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBwcmV2aWV3QnVmZmVyID0gbVByZXZpZXdCdWZmZXI7CisKKyAgICBpZiAobVByZXZpZXdCdWZmZXIgPT0gMCkgeworICAgICAgICBtUHJldmlld0J1ZmZlciA9IG5ldyBNZW1vcnlIZWFwQmFzZShzaXplLCAwLCBOVUxMKTsKKyAgICB9IGVsc2UgaWYgKHNpemUgPiBtUHJldmlld0J1ZmZlci0+dmlydHVhbFNpemUoKSkgeworICAgICAgICBtUHJldmlld0J1ZmZlci5jbGVhcigpOworICAgICAgICBtUHJldmlld0J1ZmZlciA9IG5ldyBNZW1vcnlIZWFwQmFzZShzaXplLCAwLCBOVUxMKTsKICAgICB9Ci0gICAgbWVtY3B5KHByZXZpZXdCdWZmZXItPmJhc2UoKSwKLSAgICAgICAgICAgKHVpbnQ4X3QgKiloZWFwLT5iYXNlKCkgKyBvZmZzZXQsIHNpemUpOworICAgIGlmIChtUHJldmlld0J1ZmZlciA9PSAwKSB7CisgICAgICAgIExPR0UoImZhaWxlZCB0byBhbGxvY2F0ZSBzcGFjZSBmb3IgcHJldmlldyBidWZmZXIiKTsKKyAgICAgICAgbUxvY2sudW5sb2NrKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgcHJldmlld0J1ZmZlciA9IG1QcmV2aWV3QnVmZmVyOworCisgICAgbWVtY3B5KHByZXZpZXdCdWZmZXItPmJhc2UoKSwgKHVpbnQ4X3QgKiloZWFwLT5iYXNlKCkgKyBvZmZzZXQsIHNpemUpOwogCiAgICAgc3A8TWVtb3J5QmFzZT4gZnJhbWUgPSBuZXcgTWVtb3J5QmFzZShwcmV2aWV3QnVmZmVyLCAwLCBzaXplKTsKICAgICBpZiAoZnJhbWUgPT0gMCkgewogICAgICAgICBMT0dFKCJmYWlsZWQgdG8gYWxsb2NhdGUgc3BhY2UgZm9yIGZyYW1lIGNhbGxiYWNrIik7CisgICAgICAgIG1Mb2NrLnVubG9jaygpOwogICAgICAgICByZXR1cm47CiAgICAgfQorCisgICAgbUxvY2sudW5sb2NrKCk7CiAgICAgY2xpZW50LT5kYXRhQ2FsbGJhY2soQ0FNRVJBX01TR19QUkVWSUVXX0ZSQU1FLCBmcmFtZSk7CiB9CiAKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwogc3RhdGljIGNvbnN0IGludCBrRHVtcExvY2tSZXRyaWVzID0gNTA7CiBzdGF0aWMgY29uc3QgaW50IGtEdW1wTG9ja1NsZWVwID0gNjAwMDA7CiAKQEAgLTEzMDgsOCArMTIxNCw3IEBACiAgICAgcmV0dXJuIGxvY2tlZDsKIH0KIAotc3RhdHVzX3QgQ2FtZXJhU2VydmljZTo6ZHVtcChpbnQgZmQsIGNvbnN0IFZlY3RvcjxTdHJpbmcxNj4mIGFyZ3MpCi17CitzdGF0dXNfdCBDYW1lcmFTZXJ2aWNlOjpkdW1wKGludCBmZCwgY29uc3QgVmVjdG9yPFN0cmluZzE2PiYgYXJncykgewogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBrRGVhZGxvY2tlZFN0cmluZyA9ICJDYW1lcmFTZXJ2aWNlIG1heSBiZSBkZWFkbG9ja2VkXG4iOwogCiAgICAgY29uc3Qgc2l6ZV90IFNJWkUgPSAyNTY7CkBAIC0xMzE5LDcgKzEyMjQsNyBAQAogICAgICAgICBzbnByaW50ZihidWZmZXIsIFNJWkUsICJQZXJtaXNzaW9uIERlbmlhbDogIgogICAgICAgICAgICAgICAgICJjYW4ndCBkdW1wIENhbWVyYVNlcnZpY2UgZnJvbSBwaWQ9JWQsIHVpZD0lZFxuIiwKICAgICAgICAgICAgICAgICBnZXRDYWxsaW5nUGlkKCksCi0gICAgICAgICAgICAgICAgSVBDVGhyZWFkU3RhdGU6OnNlbGYoKS0+Z2V0Q2FsbGluZ1VpZCgpKTsKKyAgICAgICAgICAgICAgICBnZXRDYWxsaW5nVWlkKCkpOwogICAgICAgICByZXN1bHQuYXBwZW5kKGJ1ZmZlcik7CiAgICAgICAgIHdyaXRlKGZkLCByZXN1bHQuc3RyaW5nKCksIHJlc3VsdC5zaXplKCkpOwogICAgIH0gZWxzZSB7CkBAIC0xMzMwLDg5ICsxMjM1LDM5IEBACiAgICAgICAgICAgICB3cml0ZShmZCwgcmVzdWx0LnN0cmluZygpLCByZXN1bHQuc2l6ZSgpKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmIChtQ2xpZW50ICE9IDApIHsKLSAgICAgICAgICAgIHNwPENsaWVudD4gY3VycmVudENsaWVudCA9IG1DbGllbnQucHJvbW90ZSgpOwotICAgICAgICAgICAgc3ByaW50ZihidWZmZXIsICJDbGllbnQgKCVwKSBQSUQ6ICVkXG4iLAotICAgICAgICAgICAgICAgICAgICBjdXJyZW50Q2xpZW50LT5nZXRDYW1lcmFDbGllbnQoKS0+YXNCaW5kZXIoKS5nZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgY3VycmVudENsaWVudC0+bUNsaWVudFBpZCk7CisgICAgICAgIGJvb2wgaGFzQ2xpZW50ID0gZmFsc2U7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbU51bWJlck9mQ2FtZXJhczsgaSsrKSB7CisgICAgICAgICAgICBzcDxDbGllbnQ+IGNsaWVudCA9IG1DbGllbnRbaV0ucHJvbW90ZSgpOworICAgICAgICAgICAgaWYgKGNsaWVudCA9PSAwKSBjb250aW51ZTsKKyAgICAgICAgICAgIGhhc0NsaWVudCA9IHRydWU7CisgICAgICAgICAgICBzcHJpbnRmKGJ1ZmZlciwgIkNsaWVudFslZF0gKCVwKSBQSUQ6ICVkXG4iLAorICAgICAgICAgICAgICAgICAgICBpLAorICAgICAgICAgICAgICAgICAgICBjbGllbnQtPmdldENhbWVyYUNsaWVudCgpLT5hc0JpbmRlcigpLmdldCgpLAorICAgICAgICAgICAgICAgICAgICBjbGllbnQtPm1DbGllbnRQaWQpOwogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChidWZmZXIpOwogICAgICAgICAgICAgd3JpdGUoZmQsIHJlc3VsdC5zdHJpbmcoKSwgcmVzdWx0LnNpemUoKSk7Ci0gICAgICAgICAgICBjdXJyZW50Q2xpZW50LT5tSGFyZHdhcmUtPmR1bXAoZmQsIGFyZ3MpOwotICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY2xpZW50LT5tSGFyZHdhcmUtPmR1bXAoZmQsIGFyZ3MpOworICAgICAgICB9CisgICAgICAgIGlmICghaGFzQ2xpZW50KSB7CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCJObyBjYW1lcmEgY2xpZW50IHlldC5cbiIpOwogICAgICAgICAgICAgd3JpdGUoZmQsIHJlc3VsdC5zdHJpbmcoKSwgcmVzdWx0LnNpemUoKSk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAobG9ja2VkKSBtU2VydmljZUxvY2sudW5sb2NrKCk7CisKKyAgICAgICAgLy8gY2hhbmdlIGxvZ2dpbmcgbGV2ZWwKKyAgICAgICAgaW50IG4gPSBhcmdzLnNpemUoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgKyAxIDwgbjsgaSsrKSB7CisgICAgICAgICAgICBpZiAoYXJnc1tpXSA9PSBTdHJpbmcxNigiLXYiKSkgeworICAgICAgICAgICAgICAgIFN0cmluZzggbGV2ZWxTdHIoYXJnc1tpKzFdKTsKKyAgICAgICAgICAgICAgICBpbnQgbGV2ZWwgPSBhdG9pKGxldmVsU3RyLnN0cmluZygpKTsKKyAgICAgICAgICAgICAgICBzcHJpbnRmKGJ1ZmZlciwgIlNldCBMb2cgTGV2ZWwgdG8gJWQiLCBsZXZlbCk7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChidWZmZXIpOworICAgICAgICAgICAgICAgIHNldExvZ0xldmVsKGxldmVsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KICAgICByZXR1cm4gTk9fRVJST1I7CiB9CiAKLQotc3RhdHVzX3QgQ2FtZXJhU2VydmljZTo6b25UcmFuc2FjdCgKLSAgICB1aW50MzJfdCBjb2RlLCBjb25zdCBQYXJjZWwmIGRhdGEsIFBhcmNlbCogcmVwbHksIHVpbnQzMl90IGZsYWdzKQotewotICAgIC8vIHBlcm1pc3Npb24gY2hlY2tzLi4uCi0gICAgc3dpdGNoIChjb2RlKSB7Ci0gICAgICAgIGNhc2UgQm5DYW1lcmFTZXJ2aWNlOjpDT05ORUNUOgotICAgICAgICAgICAgSVBDVGhyZWFkU3RhdGUqIGlwYyA9IElQQ1RocmVhZFN0YXRlOjpzZWxmKCk7Ci0gICAgICAgICAgICBjb25zdCBpbnQgcGlkID0gaXBjLT5nZXRDYWxsaW5nUGlkKCk7Ci0gICAgICAgICAgICBjb25zdCBpbnQgc2VsZl9waWQgPSBnZXRwaWQoKTsKLSAgICAgICAgICAgIGlmIChwaWQgIT0gc2VsZl9waWQpIHsKLSAgICAgICAgICAgICAgICAvLyB3ZSdyZSBjYWxsZWQgZnJvbSBhIGRpZmZlcmVudCBwcm9jZXNzLCBkbyB0aGUgcmVhbCBjaGVjawotICAgICAgICAgICAgICAgIGlmICghY2hlY2tDYWxsaW5nUGVybWlzc2lvbigKLSAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZzE2KCJhbmRyb2lkLnBlcm1pc3Npb24uQ0FNRVJBIikpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgY29uc3QgaW50IHVpZCA9IGlwYy0+Z2V0Q2FsbGluZ1VpZCgpOwotICAgICAgICAgICAgICAgICAgICBMT0dFKCJQZXJtaXNzaW9uIERlbmlhbDogIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW4ndCB1c2UgdGhlIGNhbWVyYSBwaWQ9JWQsIHVpZD0lZCIsIHBpZCwgdWlkKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFBFUk1JU1NJT05fREVOSUVEOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgIH0KLQotICAgIHN0YXR1c190IGVyciA9IEJuQ2FtZXJhU2VydmljZTo6b25UcmFuc2FjdChjb2RlLCBkYXRhLCByZXBseSwgZmxhZ3MpOwotCi0jaWYgREVCVUdfSEVBUF9MRUFLUwotICAgIExPR1YoIisrKyBvblRyYW5zYWN0IGVyciAlZCBjb2RlICVkIiwgZXJyLCBjb2RlKTsKLQotICAgIGlmIChlcnIgPT0gVU5LTk9XTl9UUkFOU0FDVElPTiB8fCBlcnIgPT0gUEVSTUlTU0lPTl9ERU5JRUQpIHsKLSAgICAgICAgLy8gdGhlICdzZXJ2aWNlJyBjb21tYW5kIGludGVycm9nYXRlcyB0aGlzIGJpbmRlciBmb3IgaXRzIG5hbWUsIGFuZCB0aGVuIHN1cHBsaWVzIGl0Ci0gICAgICAgIC8vIGV2ZW4gZm9yIHRoZSBkZWJ1Z2dpbmcgY29tbWFuZHMuICB0aGF0IG1lYW5zIHdlIG5lZWQgdG8gY2hlY2sgZm9yIGl0IGhlcmUsIHVzaW5nCi0gICAgICAgIC8vIElTdXJmYWNlQ29tcG9zZXIgKHNpbmNlIHdlIGRlbGVnYXRlZCB0aGUgSU5URVJGQUNFX1RSQU5TQUNUSU9OIGhhbmRsaW5nIHRvCi0gICAgICAgIC8vIEJuU3VyZmFjZUNvbXBvc2VyIGJlZm9yZSBmYWxsaW5nIHRocm91Z2ggdG8gdGhpcyBjb2RlKS4KLQotICAgICAgICBMT0dWKCIrKysgb25UcmFuc2FjdCBjb2RlICVkIiwgY29kZSk7Ci0KLSAgICAgICAgQ0hFQ0tfSU5URVJGQUNFKElDYW1lcmFTZXJ2aWNlLCBkYXRhLCByZXBseSk7Ci0KLSAgICAgICAgc3dpdGNoKGNvZGUpIHsKLSAgICAgICAgY2FzZSAxMDAwOgotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoZ1dlYWtIZWFwICE9IDApIHsKLSAgICAgICAgICAgICAgICBzcDxJTWVtb3J5SGVhcD4gaCA9IGdXZWFrSGVhcC5wcm9tb3RlKCk7Ci0gICAgICAgICAgICAgICAgSU1lbW9yeUhlYXAgKnAgPSBnV2Vha0hlYXAudW5zYWZlX2dldCgpOwotICAgICAgICAgICAgICAgIExPR1YoIkNIRUNLSU5HIFdFQUsgUkVGRVJFTkNFICVwICglcCkiLCBoLmdldCgpLCBwKTsKLSAgICAgICAgICAgICAgICBpZiAoaCAhPSAwKQotICAgICAgICAgICAgICAgICAgICBoLT5wcmludFJlZnMoKTsKLSAgICAgICAgICAgICAgICBib29sIGF0dGVtcHRfdG9fZGVsZXRlID0gZGF0YS5yZWFkSW50MzIoKSA9PSAxOwotICAgICAgICAgICAgICAgIGlmIChhdHRlbXB0X3RvX2RlbGV0ZSkgewotICAgICAgICAgICAgICAgICAgICAvLyBOT1QgU0FGRSEKLSAgICAgICAgICAgICAgICAgICAgTE9HVigiREVMRVRJTkcgV0VBSyBSRUZFUkVOQ0UgJXAgKCVwKSIsIGguZ2V0KCksIHApOwotICAgICAgICAgICAgICAgICAgICBpZiAocCkgZGVsZXRlIHA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiBOT19FUlJPUjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotI2VuZGlmIC8vIERFQlVHX0hFQVBfTEVBS1MKLQotICAgIHJldHVybiBlcnI7Ci19Ci0KIH07IC8vIG5hbWVzcGFjZSBhbmRyb2lkCmRpZmYgLS1naXQgYS9jYW1lcmEvbGliY2FtZXJhc2VydmljZS9DYW1lcmFTZXJ2aWNlLmggYi9jYW1lcmEvbGliY2FtZXJhc2VydmljZS9DYW1lcmFTZXJ2aWNlLmgKaW5kZXggYmM0OWIxZC4uODE5M2U3NyAxMDA2NDQKLS0tIGEvY2FtZXJhL2xpYmNhbWVyYXNlcnZpY2UvQ2FtZXJhU2VydmljZS5oCisrKyBiL2NhbWVyYS9saWJjYW1lcmFzZXJ2aWNlL0NhbWVyYVNlcnZpY2UuaApAQCAtMjEsMjA3ICsyMSwxNzQgQEAKIAogI2luY2x1ZGUgPGNhbWVyYS9JQ2FtZXJhU2VydmljZS5oPgogI2luY2x1ZGUgPGNhbWVyYS9DYW1lcmFIYXJkd2FyZUludGVyZmFjZS5oPgotI2luY2x1ZGUgPGNhbWVyYS9DYW1lcmEuaD4KKworLyogVGhpcyBuZWVkcyB0byBiZSBpbmNyZWFzZWQgaWYgd2UgY2FuIGhhdmUgbW9yZSBjYW1lcmFzICovCisjZGVmaW5lIE1BWF9DQU1FUkFTIDIKIAogbmFtZXNwYWNlIGFuZHJvaWQgewogCiBjbGFzcyBNZW1vcnlIZWFwQmFzZTsKIGNsYXNzIE1lZGlhUGxheWVyOwogCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNkZWZpbmUgTElLRUxZKCBleHAgKSAgICAgICAoX19idWlsdGluX2V4cGVjdCggKGV4cCkgIT0gMCwgdHJ1ZSAgKSkKLSNkZWZpbmUgVU5MSUtFTFkoIGV4cCApICAgICAoX19idWlsdGluX2V4cGVjdCggKGV4cCkgIT0gMCwgZmFsc2UgKSkKLQotLy8gV2hlbiBlbmFibGVkLCB0aGlzIGZlYXR1cmUgYWxsb3dzIHlvdSB0byBzZW5kIGFuIGV2ZW50IHRvIHRoZSBDYW1lcmFTZXJ2aWNlCi0vLyBzbyB0aGF0IHlvdSBjYW4gY2F1c2UgYWxsIHJlZmVyZW5jZXMgdG8gdGhlIGhlYXAgb2JqZWN0IGdXZWFrSGVhcCwgZGVmaW5lZAotLy8gYmVsb3csIHRvIGJlIHByaW50ZWQuIFlvdSB3aWxsIGFsc28gbmVlZCB0byBzZXQgREVCVUdfUkVGUz0xIGFuZAotLy8gREVCVUdfUkVGU19FTkFCTEVEX0JZX0RFRkFVTFQ9MCBpbiBsaWJ1dGlscy9SZWZCYXNlLmNwcC4gWW91IGp1c3QgaGF2ZSB0bwotLy8gc2V0IGdXZWFrSGVhcCB0byB0aGUgYXBwcm9wcmlhdGUgaGVhcCB5b3Ugd2FudCB0byB0cmFjay4KLQotI2RlZmluZSBERUJVR19IRUFQX0xFQUtTIDAKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1jbGFzcyBDYW1lcmFTZXJ2aWNlIDogcHVibGljIEJuQ2FtZXJhU2VydmljZQorY2xhc3MgQ2FtZXJhU2VydmljZTogcHVibGljIEJuQ2FtZXJhU2VydmljZQogewogICAgIGNsYXNzIENsaWVudDsKLQogcHVibGljOgotICAgIHN0YXRpYyB2b2lkIGluc3RhbnRpYXRlKCk7CisgICAgc3RhdGljIHZvaWQgICAgICAgICBpbnN0YW50aWF0ZSgpOwogCi0gICAgLy8gSUNhbWVyYVNlcnZpY2UgaW50ZXJmYWNlCi0gICAgdmlydHVhbCBzcDxJQ2FtZXJhPiAgICAgY29ubmVjdChjb25zdCBzcDxJQ2FtZXJhQ2xpZW50PiYgY2FtZXJhQ2xpZW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENhbWVyYVNlcnZpY2UoKTsKKyAgICB2aXJ0dWFsICAgICAgICAgICAgIH5DYW1lcmFTZXJ2aWNlKCk7CiAKLSAgICB2aXJ0dWFsIHN0YXR1c190ICAgICAgICBkdW1wKGludCBmZCwgY29uc3QgVmVjdG9yPFN0cmluZzE2PiYgYXJncyk7CisgICAgdmlydHVhbCBpbnQzMl90ICAgICBnZXROdW1iZXJPZkNhbWVyYXMoKTsKKyAgICB2aXJ0dWFsIHN0YXR1c190ICAgIGdldENhbWVyYUluZm8oaW50IGNhbWVyYUlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgQ2FtZXJhSW5mbyogY2FtZXJhSW5mbyk7CisgICAgdmlydHVhbCBzcDxJQ2FtZXJhPiBjb25uZWN0KGNvbnN0IHNwPElDYW1lcmFDbGllbnQ+JiBjYW1lcmFDbGllbnQsIGludCBjYW1lcmFJZCk7CisgICAgdmlydHVhbCB2b2lkICAgICAgICByZW1vdmVDbGllbnQoY29uc3Qgc3A8SUNhbWVyYUNsaWVudD4mIGNhbWVyYUNsaWVudCk7CisgICAgdmlydHVhbCBzcDxDbGllbnQ+ICBnZXRDbGllbnRCeUlkKGludCBjYW1lcmFJZCk7CiAKLSAgICAgICAgICAgIHZvaWQgICAgICAgICAgICByZW1vdmVDbGllbnQoY29uc3Qgc3A8SUNhbWVyYUNsaWVudD4mIGNhbWVyYUNsaWVudCk7CisgICAgdmlydHVhbCBzdGF0dXNfdCAgICBkdW1wKGludCBmZCwgY29uc3QgVmVjdG9yPFN0cmluZzE2PiYgYXJncyk7CisgICAgdmlydHVhbCBzdGF0dXNfdCAgICBvblRyYW5zYWN0KHVpbnQzMl90IGNvZGUsIGNvbnN0IFBhcmNlbCYgZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyY2VsKiByZXBseSwgdWludDMyX3QgZmxhZ3MpOwogCi0gICAgdmlydHVhbCBzdGF0dXNfdCBvblRyYW5zYWN0KAotICAgICAgICB1aW50MzJfdCBjb2RlLCBjb25zdCBQYXJjZWwmIGRhdGEsIFBhcmNlbCogcmVwbHksIHVpbnQzMl90IGZsYWdzKTsKKyAgICBlbnVtIHNvdW5kX2tpbmQgeworICAgICAgICBTT1VORF9TSFVUVEVSID0gMCwKKyAgICAgICAgU09VTkRfUkVDT1JESU5HID0gMSwKKyAgICAgICAgTlVNX1NPVU5EUworICAgIH07CisKKyAgICB2b2lkICAgICAgICAgICAgICAgIGxvYWRTb3VuZCgpOworICAgIHZvaWQgICAgICAgICAgICAgICAgcGxheVNvdW5kKHNvdW5kX2tpbmQga2luZCk7CisgICAgdm9pZCAgICAgICAgICAgICAgICByZWxlYXNlU291bmQoKTsKIAogcHJpdmF0ZToKKyAgICBNdXRleCAgICAgICAgICAgICAgIG1TZXJ2aWNlTG9jazsKKyAgICB3cDxDbGllbnQ+ICAgICAgICAgIG1DbGllbnRbTUFYX0NBTUVSQVNdOyAgLy8gcHJvdGVjdGVkIGJ5IG1TZXJ2aWNlTG9jaworICAgIGludCAgICAgICAgICAgICAgICAgbU51bWJlck9mQ2FtZXJhczsKIAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIGF0b21pY3MgdG8gcmVjb3JkIHdoZXRoZXIgdGhlIGhhcmR3YXJlIGlzIGFsbG9jYXRlZCB0byBzb21lIGNsaWVudC4KKyAgICB2b2xhdGlsZSBpbnQzMl90ICAgIG1CdXN5W01BWF9DQU1FUkFTXTsKKyAgICB2b2lkICAgICAgICAgICAgICAgIHNldENhbWVyYUJ1c3koaW50IGNhbWVyYUlkKTsKKyAgICB2b2lkICAgICAgICAgICAgICAgIHNldENhbWVyYUZyZWUoaW50IGNhbWVyYUlkKTsKIAotICAgIGNsYXNzIENsaWVudCA6IHB1YmxpYyBCbkNhbWVyYSB7CisgICAgLy8gc291bmRzCisgICAgTXV0ZXggICAgICAgICAgICAgICBtU291bmRMb2NrOworICAgIHNwPE1lZGlhUGxheWVyPiAgICAgbVNvdW5kUGxheWVyW05VTV9TT1VORFNdOworICAgIGludCAgICAgICAgICAgICAgICAgbVNvdW5kUmVmOyAgLy8gcmVmZXJlbmNlIGNvdW50IChyZWxlYXNlIGFsbCBNZWRpYVBsYXllciB3aGVuIDApCiAKKyAgICBjbGFzcyBDbGllbnQgOiBwdWJsaWMgQm5DYW1lcmEKKyAgICB7CiAgICAgcHVibGljOgorICAgICAgICAvLyBJQ2FtZXJhIGludGVyZmFjZSAoc2VlIElDYW1lcmEgZm9yIGRldGFpbHMpCiAgICAgICAgIHZpcnR1YWwgdm9pZCAgICAgICAgICAgIGRpc2Nvbm5lY3QoKTsKLQotICAgICAgICAvLyBjb25uZWN0IG5ldyBjbGllbnQgd2l0aCBleGlzdGluZyBjYW1lcmEgcmVtb3RlCiAgICAgICAgIHZpcnR1YWwgc3RhdHVzX3QgICAgICAgIGNvbm5lY3QoY29uc3Qgc3A8SUNhbWVyYUNsaWVudD4mIGNsaWVudCk7Ci0KLSAgICAgICAgLy8gcHJldmVudCBvdGhlciBwcm9jZXNzZXMgZnJvbSB1c2luZyB0aGlzIElDYW1lcmEgaW50ZXJmYWNlCiAgICAgICAgIHZpcnR1YWwgc3RhdHVzX3QgICAgICAgIGxvY2soKTsKLQotICAgICAgICAvLyBhbGxvdyBvdGhlciBwcm9jZXNzZXMgdG8gdXNlIHRoaXMgSUNhbWVyYSBpbnRlcmZhY2UKICAgICAgICAgdmlydHVhbCBzdGF0dXNfdCAgICAgICAgdW5sb2NrKCk7Ci0KLSAgICAgICAgLy8gcGFzcyB0aGUgYnVmZmVyZWQgSVN1cmZhY2UgdG8gdGhlIGNhbWVyYSBzZXJ2aWNlCiAgICAgICAgIHZpcnR1YWwgc3RhdHVzX3QgICAgICAgIHNldFByZXZpZXdEaXNwbGF5KGNvbnN0IHNwPElTdXJmYWNlPiYgc3VyZmFjZSk7Ci0KLSAgICAgICAgLy8gc2V0IHRoZSBwcmV2aWV3IGNhbGxiYWNrIGZsYWcgdG8gYWZmZWN0IGhvdyB0aGUgcmVjZWl2ZWQgZnJhbWVzIGZyb20KLSAgICAgICAgLy8gcHJldmlldyBhcmUgaGFuZGxlZC4KLSAgICAgICAgdmlydHVhbCB2b2lkICAgICAgICAgICAgc2V0UHJldmlld0NhbGxiYWNrRmxhZyhpbnQgY2FsbGJhY2tfZmxhZyk7Ci0KLSAgICAgICAgLy8gc3RhcnQgcHJldmlldyBtb2RlLCBtdXN0IGNhbGwgc2V0UHJldmlld0Rpc3BsYXkgZmlyc3QKKyAgICAgICAgdmlydHVhbCB2b2lkICAgICAgICAgICAgc2V0UHJldmlld0NhbGxiYWNrRmxhZyhpbnQgZmxhZyk7CiAgICAgICAgIHZpcnR1YWwgc3RhdHVzX3QgICAgICAgIHN0YXJ0UHJldmlldygpOwotCi0gICAgICAgIC8vIHN0b3AgcHJldmlldyBtb2RlCiAgICAgICAgIHZpcnR1YWwgdm9pZCAgICAgICAgICAgIHN0b3BQcmV2aWV3KCk7Ci0KLSAgICAgICAgLy8gZ2V0IHByZXZpZXcgc3RhdGUKICAgICAgICAgdmlydHVhbCBib29sICAgICAgICAgICAgcHJldmlld0VuYWJsZWQoKTsKLQotICAgICAgICAvLyBzdGFydCByZWNvcmRpbmcgbW9kZQogICAgICAgICB2aXJ0dWFsIHN0YXR1c190ICAgICAgICBzdGFydFJlY29yZGluZygpOwotCi0gICAgICAgIC8vIHN0b3AgcmVjb3JkaW5nIG1vZGUKICAgICAgICAgdmlydHVhbCB2b2lkICAgICAgICAgICAgc3RvcFJlY29yZGluZygpOwotCi0gICAgICAgIC8vIGdldCByZWNvcmRpbmcgc3RhdGUKICAgICAgICAgdmlydHVhbCBib29sICAgICAgICAgICAgcmVjb3JkaW5nRW5hYmxlZCgpOwotCi0gICAgICAgIC8vIHJlbGVhc2UgYSByZWNvcmRpbmcgZnJhbWUKICAgICAgICAgdmlydHVhbCB2b2lkICAgICAgICAgICAgcmVsZWFzZVJlY29yZGluZ0ZyYW1lKGNvbnN0IHNwPElNZW1vcnk+JiBtZW0pOwotCi0gICAgICAgIC8vIGF1dG8gZm9jdXMKICAgICAgICAgdmlydHVhbCBzdGF0dXNfdCAgICAgICAgYXV0b0ZvY3VzKCk7Ci0KLSAgICAgICAgLy8gY2FuY2VsIGF1dG8gZm9jdXMKICAgICAgICAgdmlydHVhbCBzdGF0dXNfdCAgICAgICAgY2FuY2VsQXV0b0ZvY3VzKCk7Ci0KLSAgICAgICAgLy8gdGFrZSBhIHBpY3R1cmUgLSByZXR1cm5zIGFuIElNZW1vcnkgKHJlZi1jb3VudGVkIG1tYXApCiAgICAgICAgIHZpcnR1YWwgc3RhdHVzX3QgICAgICAgIHRha2VQaWN0dXJlKCk7Ci0KLSAgICAgICAgLy8gc2V0IHByZXZpZXcvY2FwdHVyZSBwYXJhbWV0ZXJzIC0ga2V5L3ZhbHVlIHBhaXJzCiAgICAgICAgIHZpcnR1YWwgc3RhdHVzX3QgICAgICAgIHNldFBhcmFtZXRlcnMoY29uc3QgU3RyaW5nOCYgcGFyYW1zKTsKLQotICAgICAgICAvLyBnZXQgcHJldmlldy9jYXB0dXJlIHBhcmFtZXRlcnMgLSBrZXkvdmFsdWUgcGFpcnMKICAgICAgICAgdmlydHVhbCBTdHJpbmc4ICAgICAgICAgZ2V0UGFyYW1ldGVycygpIGNvbnN0OwotCi0gICAgICAgIC8vIHNlbmQgY29tbWFuZCB0byBjYW1lcmEgZHJpdmVyCiAgICAgICAgIHZpcnR1YWwgc3RhdHVzX3QgICAgICAgIHNlbmRDb21tYW5kKGludDMyX3QgY21kLCBpbnQzMl90IGFyZzEsIGludDMyX3QgYXJnMik7Ci0KLSAgICAgICAgLy8gb3VyIGNsaWVudC4uLgotICAgICAgICBjb25zdCBzcDxJQ2FtZXJhQ2xpZW50PiYgICAgZ2V0Q2FtZXJhQ2xpZW50KCkgY29uc3QgeyByZXR1cm4gbUNhbWVyYUNsaWVudDsgfQotCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIENhbWVyYVNlcnZpY2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsaWVudChjb25zdCBzcDxDYW1lcmFTZXJ2aWNlPiYgY2FtZXJhU2VydmljZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcDxJQ2FtZXJhQ2xpZW50PiYgY2FtZXJhQ2xpZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpZF90IGNsaWVudFBpZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENsaWVudCgpOwotICAgICAgICB2aXJ0dWFsICAgICAgICAgICAgICAgICB+Q2xpZW50KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcDxJQ2FtZXJhQ2xpZW50PiYgY2FtZXJhQ2xpZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNhbWVyYUlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNsaWVudFBpZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5DbGllbnQoKTsKIAotICAgICAgICAgICAgICAgICAgICBzdGF0dXNfdCAgICBjaGVja1BpZCgpOworICAgICAgICAvLyByZXR1cm4gb3VyIGNhbWVyYSBjbGllbnQKKyAgICAgICAgY29uc3Qgc3A8SUNhbWVyYUNsaWVudD4mICAgIGdldENhbWVyYUNsaWVudCgpIHsgcmV0dXJuIG1DYW1lcmFDbGllbnQ7IH0KIAotICAgICAgICBzdGF0aWMgICAgICB2b2lkICAgICAgICBub3RpZnlDYWxsYmFjayhpbnQzMl90IG1zZ1R5cGUsIGludDMyX3QgZXh0MSwgaW50MzJfdCBleHQyLCB2b2lkKiB1c2VyKTsKLSAgICAgICAgc3RhdGljICAgICAgdm9pZCAgICAgICAgZGF0YUNhbGxiYWNrKGludDMyX3QgbXNnVHlwZSwgY29uc3Qgc3A8SU1lbW9yeT4mIGRhdGFQdHIsIHZvaWQqIHVzZXIpOwotICAgICAgICBzdGF0aWMgICAgICB2b2lkICAgICAgICBkYXRhQ2FsbGJhY2tUaW1lc3RhbXAobnNlY3NfdCB0aW1lc3RhbXAsIGludDMyX3QgbXNnVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwPElNZW1vcnk+JiBkYXRhUHRyLCB2b2lkKiB1c2VyKTsKKyAgICAgICAgLy8gY2hlY2sgd2hldGhlciB0aGUgY2FsbGluZyBwcm9jZXNzIG1hdGNoZXMgbUNsaWVudFBpZC4KKyAgICAgICAgc3RhdHVzX3QgICAgICAgICAgICAgICAgY2hlY2tQaWQoKSBjb25zdDsKKyAgICAgICAgc3RhdHVzX3QgICAgICAgICAgICAgICAgY2hlY2tQaWRBbmRIYXJkd2FyZSgpIGNvbnN0OyAgLy8gYWxzbyBjaGVjayBtSGFyZHdhcmUgIT0gMAogCi0gICAgICAgIHN0YXRpYyAgICAgIHNwPENsaWVudD4gIGdldENsaWVudEZyb21Db29raWUodm9pZCogdXNlcik7Ci0KLSAgICAgICAgICAgICAgICAgICAgdm9pZCAgICAgICAgaGFuZGxlUHJldmlld0RhdGEoY29uc3Qgc3A8SU1lbW9yeT4mKTsKLSAgICAgICAgICAgICAgICAgICAgdm9pZCAgICAgICAgaGFuZGxlU2h1dHRlcihpbWFnZV9yZWN0X3R5cGUgKmltYWdlKTsKLSAgICAgICAgICAgICAgICAgICAgdm9pZCAgICAgICAgaGFuZGxlUG9zdHZpZXcoY29uc3Qgc3A8SU1lbW9yeT4mKTsKLSAgICAgICAgICAgICAgICAgICAgdm9pZCAgICAgICAgaGFuZGxlUmF3UGljdHVyZShjb25zdCBzcDxJTWVtb3J5PiYpOwotICAgICAgICAgICAgICAgICAgICB2b2lkICAgICAgICBoYW5kbGVDb21wcmVzc2VkUGljdHVyZShjb25zdCBzcDxJTWVtb3J5PiYpOwotCi0gICAgICAgICAgICAgICAgICAgIHZvaWQgICAgICAgIGNvcHlGcmFtZUFuZFBvc3RDb3BpZWRGcmFtZShjb25zdCBzcDxJQ2FtZXJhQ2xpZW50PiYgY2xpZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3A8SU1lbW9yeUhlYXA+JiBoZWFwLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSk7CisgICAgICAgIC8vIHRoZXNlIGFyZSBpbnRlcm5hbCBmdW5jdGlvbnMgdXNlZCB0byBzZXQgdXAgcHJldmlldyBidWZmZXJzCisgICAgICAgIHN0YXR1c190ICAgICAgICAgICAgICAgIHJlZ2lzdGVyUHJldmlld0J1ZmZlcnMoKTsKKyAgICAgICAgc3RhdHVzX3QgICAgICAgICAgICAgICAgc2V0T3ZlcmxheSgpOwogCiAgICAgICAgIC8vIGNhbWVyYSBvcGVyYXRpb24gbW9kZQogICAgICAgICBlbnVtIGNhbWVyYV9tb2RlIHsKICAgICAgICAgICAgIENBTUVSQV9QUkVWSUVXX01PREUgICA9IDAsICAvLyBmcmFtZSBhdXRvbWF0aWNhbGx5IHJlbGVhc2VkCiAgICAgICAgICAgICBDQU1FUkFfUkVDT1JESU5HX01PREUgPSAxLCAgLy8gZnJhbWUgaGFzIHRvIGJlIGV4cGxpY2l0bHkgcmVsZWFzZWQgYnkgcmVsZWFzZVJlY29yZGluZ0ZyYW1lKCkKICAgICAgICAgfTsKKyAgICAgICAgLy8gdGhlc2UgYXJlIGludGVybmFsIGZ1bmN0aW9ucyB1c2VkIGZvciBwcmV2aWV3L3JlY29yZGluZwogICAgICAgICBzdGF0dXNfdCAgICAgICAgICAgICAgICBzdGFydENhbWVyYU1vZGUoY2FtZXJhX21vZGUgbW9kZSk7CiAgICAgICAgIHN0YXR1c190ICAgICAgICAgICAgICAgIHN0YXJ0UHJldmlld01vZGUoKTsKICAgICAgICAgc3RhdHVzX3QgICAgICAgICAgICAgICAgc3RhcnRSZWNvcmRpbmdNb2RlKCk7Ci0gICAgICAgIHN0YXR1c190ICAgICAgICAgICAgICAgIHNldE92ZXJsYXkoKTsKLSAgICAgICAgc3RhdHVzX3QgICAgICAgICAgICAgICAgcmVnaXN0ZXJQcmV2aWV3QnVmZmVycygpOworCisgICAgICAgIC8vIHRoZXNlIGFyZSBzdGF0aWMgY2FsbGJhY2sgZnVuY3Rpb25zCisgICAgICAgIHN0YXRpYyB2b2lkICAgICAgICAgICAgIG5vdGlmeUNhbGxiYWNrKGludDMyX3QgbXNnVHlwZSwgaW50MzJfdCBleHQxLCBpbnQzMl90IGV4dDIsIHZvaWQqIHVzZXIpOworICAgICAgICBzdGF0aWMgdm9pZCAgICAgICAgICAgICBkYXRhQ2FsbGJhY2soaW50MzJfdCBtc2dUeXBlLCBjb25zdCBzcDxJTWVtb3J5PiYgZGF0YVB0ciwgdm9pZCogdXNlcik7CisgICAgICAgIHN0YXRpYyB2b2lkICAgICAgICAgICAgIGRhdGFDYWxsYmFja1RpbWVzdGFtcChuc2Vjc190IHRpbWVzdGFtcCwgaW50MzJfdCBtc2dUeXBlLCBjb25zdCBzcDxJTWVtb3J5PiYgZGF0YVB0ciwgdm9pZCogdXNlcik7CisgICAgICAgIC8vIGNvbnZlcnQgY2xpZW50IGZyb20gY29va2llCisgICAgICAgIHN0YXRpYyBzcDxDbGllbnQ+ICAgICAgIGdldENsaWVudEZyb21Db29raWUodm9pZCogdXNlcik7CisgICAgICAgIC8vIGhhbmRsZXJzIGZvciBtZXNzYWdlcworICAgICAgICB2b2lkICAgICAgICAgICAgICAgICAgICBoYW5kbGVTaHV0dGVyKGltYWdlX3JlY3RfdHlwZSAqc2l6ZSk7CisgICAgICAgIHZvaWQgICAgICAgICAgICAgICAgICAgIGhhbmRsZVByZXZpZXdEYXRhKGNvbnN0IHNwPElNZW1vcnk+JiBtZW0pOworICAgICAgICB2b2lkICAgICAgICAgICAgICAgICAgICBoYW5kbGVQb3N0dmlldyhjb25zdCBzcDxJTWVtb3J5PiYgbWVtKTsKKyAgICAgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgaGFuZGxlUmF3UGljdHVyZShjb25zdCBzcDxJTWVtb3J5PiYgbWVtKTsKKyAgICAgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgaGFuZGxlQ29tcHJlc3NlZFBpY3R1cmUoY29uc3Qgc3A8SU1lbW9yeT4mIG1lbSk7CisgICAgICAgIHZvaWQgICAgICAgICAgICAgICAgICAgIGhhbmRsZUdlbmVyaWNOb3RpZnkoaW50MzJfdCBtc2dUeXBlLCBpbnQzMl90IGV4dDEsIGludDMyX3QgZXh0Mik7CisgICAgICAgIHZvaWQgICAgICAgICAgICAgICAgICAgIGhhbmRsZUdlbmVyaWNEYXRhKGludDMyX3QgbXNnVHlwZSwgY29uc3Qgc3A8SU1lbW9yeT4mIGRhdGFQdHIpOworICAgICAgICB2b2lkICAgICAgICAgICAgICAgICAgICBoYW5kbGVHZW5lcmljRGF0YVRpbWVzdGFtcChuc2Vjc190IHRpbWVzdGFtcCwgaW50MzJfdCBtc2dUeXBlLCBjb25zdCBzcDxJTWVtb3J5PiYgZGF0YVB0cik7CisKKyAgICAgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgY29weUZyYW1lQW5kUG9zdENvcGllZEZyYW1lKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3A8SUNhbWVyYUNsaWVudD4mIGNsaWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwPElNZW1vcnlIZWFwPiYgaGVhcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBvZmZzZXQsIHNpemVfdCBzaXplKTsKKworICAgICAgICAvLyB0aGVzZSBhcmUgaW5pdGlhbGl6ZWQgaW4gdGhlIGNvbnN0cnVjdG9yLgorICAgICAgICBzcDxDYW1lcmFTZXJ2aWNlPiAgICAgICAgICAgICAgIG1DYW1lcmFTZXJ2aWNlOyAgLy8gaW1tdXRhYmxlIGFmdGVyIGNvbnN0cnVjdG9yCisgICAgICAgIHNwPElDYW1lcmFDbGllbnQ+ICAgICAgICAgICAgICAgbUNhbWVyYUNsaWVudDsKKyAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQ2FtZXJhSWQ7ICAgICAgIC8vIGltbXV0YWJsZSBhZnRlciBjb25zdHJ1Y3RvcgorICAgICAgICBwaWRfdCAgICAgICAgICAgICAgICAgICAgICAgICAgIG1DbGllbnRQaWQ7CisgICAgICAgIHNwPENhbWVyYUhhcmR3YXJlSW50ZXJmYWNlPiAgICAgbUhhcmR3YXJlOyAgICAgICAvLyBjbGVhcmVkIGFmdGVyIGRpc2Nvbm5lY3QoKQorICAgICAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Vc2VPdmVybGF5OyAgICAgLy8gaW1tdXRhYmxlIGFmdGVyIGNvbnN0cnVjdG9yCisgICAgICAgIHNwPE92ZXJsYXlSZWY+ICAgICAgICAgICAgICAgICAgbU92ZXJsYXlSZWY7CisgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbU92ZXJsYXlXOworICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1PdmVybGF5SDsKKyAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtUHJldmlld0NhbGxiYWNrRmxhZzsKKyAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtT3JpZW50YXRpb247CiAKICAgICAgICAgLy8gRW5zdXJlcyBhdG9taWNpdHkgYW1vbmcgdGhlIHB1YmxpYyBtZXRob2RzCi0gICAgICAgIG11dGFibGUgICAgIE11dGV4ICAgICAgICAgICAgICAgICAgICAgICBtTG9jazsKKyAgICAgICAgbXV0YWJsZSBNdXRleCAgICAgICAgICAgICAgICAgICBtTG9jazsKKyAgICAgICAgc3A8SVN1cmZhY2U+ICAgICAgICAgICAgICAgICAgICBtU3VyZmFjZTsKIAotICAgICAgICAvLyBtU3VyZmFjZUxvY2sgc3luY2hyb25pemVzIGFjY2VzcyB0byBtU3VyZmFjZSBiZXR3ZWVuCi0gICAgICAgIC8vIHNldFByZXZpZXdTdXJmYWNlKCkgYW5kIHBvc3RQcmV2aWV3RnJhbWUoKS4gIE5vdGUgdGhhdCBhbW9uZwotICAgICAgICAvLyB0aGUgcHVibGljIG1ldGhvZHMsIGFsbCBhY2Nlc3NlcyB0byBtU3VyZmFjZSBhcmUKLSAgICAgICAgLy8gc3luY3Job25pemVkIGJ5IG1Mb2NrLiAgSG93ZXZlciwgcG9zdFByZXZpZXdGcmFtZSgpIGlzIGNhbGxlZAotICAgICAgICAvLyBieSB0aGUgQ2FtZXJhSGFyZHdhcmVJbnRlcmZhY2UgY2FsbGJhY2ssIGFuZCBuZWVkcyB0bwotICAgICAgICAvLyBhY2Nlc3MgbVN1cmZhY2UuICBJdCBjYW5ub3QgaG9sZCBtTG9jaywgaG93ZXZlciwgYmVjYXVzZQotICAgICAgICAvLyBzdG9wUHJldmlldygpIG1heSBiZSBob2xkaW5nIHRoYXQgbG9jayB3aGlsZSBhdHRlbXB0aW5nCi0gICAgICAgIC8vIHRvIHN0b3AgcHJldmlldywgYW5kIHN0b3BQcmV2aWV3IGl0c2VsZiB3aWxsIGJsb2NrIHdhaXRpbmcKLSAgICAgICAgLy8gZm9yIGEgY2FsbGJhY2sgZnJvbSBDYW1lcmFIYXJkd2FyZUludGVyZmFjZS4gIElmIHRoaXMKLSAgICAgICAgLy8gaGFwcGVucywgaXQgd2lsbCBjYXVzZSBhIGRlYWRsb2NrLgotICAgICAgICBtdXRhYmxlICAgICBNdXRleCAgICAgICAgICAgICAgICAgICAgICAgbVN1cmZhY2VMb2NrOwotICAgICAgICBtdXRhYmxlICAgICBDb25kaXRpb24gICAgICAgICAgICAgICAgICAgbVJlYWR5OwotICAgICAgICAgICAgICAgICAgICBzcDxDYW1lcmFTZXJ2aWNlPiAgICAgICAgICAgbUNhbWVyYVNlcnZpY2U7Ci0gICAgICAgICAgICAgICAgICAgIHNwPElTdXJmYWNlPiAgICAgICAgICAgICAgICBtU3VyZmFjZTsKLSAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgIG1QcmV2aWV3Q2FsbGJhY2tGbGFnOwotICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgbU9yaWVudGF0aW9uOworICAgICAgICAvLyBJZiB0aGUgdXNlciB3YW50IHVzIHRvIHJldHVybiBhIGNvcHkgb2YgdGhlIHByZXZpZXcgZnJhbWUgKGluc3RlYWQKKyAgICAgICAgLy8gb2YgdGhlIG9yaWdpbmFsIG9uZSksIHdlIGFsbG9jYXRlIG1QcmV2aWV3QnVmZmVyIGFuZCByZXVzZSBpdCBpZiBwb3NzaWJsZS4KKyAgICAgICAgc3A8TWVtb3J5SGVhcEJhc2U+ICAgICAgICAgICAgICBtUHJldmlld0J1ZmZlcjsKIAotICAgICAgICAgICAgICAgICAgICBzcDxNZWRpYVBsYXllcj4gICAgICAgICAgICAgbU1lZGlhUGxheWVyQ2xpY2s7Ci0gICAgICAgICAgICAgICAgICAgIHNwPE1lZGlhUGxheWVyPiAgICAgICAgICAgICBtTWVkaWFQbGF5ZXJCZWVwOworICAgICAgICAvLyBXZSBuZWVkIHRvIGF2b2lkIHRoZSBkZWFkbG9jayB3aGVuIHRoZSBpbmNvbWluZyBjb21tYW5kIHRocmVhZCBhbmQKKyAgICAgICAgLy8gdGhlIENhbWVyYUhhcmR3YXJlSW50ZXJmYWNlIGNhbGxiYWNrIHRocmVhZCBib3RoIHdhbnQgdG8gZ3JhYiBtTG9jay4KKyAgICAgICAgLy8gQW4gZXh0cmEgZmxhZyBpcyB1c2VkIHRvIHRlbGwgdGhlIGNhbGxiYWNrIHRocmVhZCB0aGF0IGl0IHNob3VsZCBzdG9wCisgICAgICAgIC8vIHRyeWluZyB0byBkZWxpdmVyIHRoZSBjYWxsYmFjayBtZXNzYWdlcyBpZiB0aGUgY2xpZW50IGlzIG5vdAorICAgICAgICAvLyBpbnRlcmVzdGVkIGluIGl0IGFueW1vcmUuIEZvciBleGFtcGxlLCBpZiB0aGUgY2xpZW50IGlzIGNhbGxpbmcKKyAgICAgICAgLy8gc3RvcFByZXZpZXcoKSwgdGhlIHByZXZpZXcgZnJhbWUgbWVzc2FnZXMgZG8gbm90IG5lZWQgdG8gYmUgZGVsaXZlcmVkCisgICAgICAgIC8vIGFueW1vcmUuCiAKLSAgICAgICAgICAgICAgICAgICAgLy8gdGhlc2UgYXJlIGltbXV0YWJsZSBvbmNlIHRoZSBvYmplY3QgaXMgY3JlYXRlZCwKLSAgICAgICAgICAgICAgICAgICAgLy8gdGhleSBkb24ndCBuZWVkIHRvIGJlIHByb3RlY3RlZCBieSBhIGxvY2sKLSAgICAgICAgICAgICAgICAgICAgc3A8SUNhbWVyYUNsaWVudD4gICAgICAgICAgIG1DYW1lcmFDbGllbnQ7Ci0gICAgICAgICAgICAgICAgICAgIHNwPENhbWVyYUhhcmR3YXJlSW50ZXJmYWNlPiBtSGFyZHdhcmU7Ci0gICAgICAgICAgICAgICAgICAgIHBpZF90ICAgICAgICAgICAgICAgICAgICAgICBtQ2xpZW50UGlkOwotICAgICAgICAgICAgICAgICAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgbVVzZU92ZXJsYXk7CisgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24gdGFrZXMgdGhlIHNhbWUgcGFyYW1ldGVyIGFzIHRoZSBlbmFibGVNc2dUeXBlKCkgYW5kCisgICAgICAgIC8vIGRpc2FibGVNc2dUeXBlKCkgZnVuY3Rpb25zIGluIENhbWVyYUhhcmR3YXJlSW50ZXJmYWNlLgorICAgICAgICB2b2lkICAgICAgICAgICAgICAgICAgICBlbmFibGVNc2dUeXBlKGludDMyX3QgbXNnVHlwZSk7CisgICAgICAgIHZvaWQgICAgICAgICAgICAgICAgICAgIGRpc2FibGVNc2dUeXBlKGludDMyX3QgbXNnVHlwZSk7CisgICAgICAgIHZvbGF0aWxlIGludDMyX3QgICAgICAgIG1Nc2dFbmFibGVkOwogCi0gICAgICAgICAgICAgICAgICAgIHNwPE92ZXJsYXlSZWY+ICAgICAgICAgICAgICBtT3ZlcmxheVJlZjsKLSAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgIG1PdmVybGF5VzsKLSAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgIG1PdmVybGF5SDsKLQotICAgICAgICBtdXRhYmxlICAgICBNdXRleCAgICAgICAgICAgICAgICAgICAgICAgbVByZXZpZXdMb2NrOwotICAgICAgICAgICAgICAgICAgICBzcDxNZW1vcnlIZWFwQmFzZT4gICAgICAgICAgbVByZXZpZXdCdWZmZXI7CisgICAgICAgIC8vIFRoaXMgZnVuY3Rpb24ga2VlcHMgdHJ5aW5nIHRvIGdyYWIgbUxvY2ssIG9yIGdpdmUgdXAgaWYgdGhlIG1lc3NhZ2UKKyAgICAgICAgLy8gaXMgZm91bmQgdG8gYmUgZGlzYWJsZWQuIEl0IHJldHVybnMgdHJ1ZSBpZiBtTG9jayBpcyBncmFiYmVkLgorICAgICAgICBib29sICAgICAgICAgICAgICAgICAgICBsb2NrSWZNZXNzYWdlV2FudGVkKGludDMyX3QgbXNnVHlwZSk7CiAgICAgfTsKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2FtZXJhU2VydmljZSgpOwotICAgIHZpcnR1YWwgICAgICAgICAgICAgICAgIH5DYW1lcmFTZXJ2aWNlKCk7Ci0KLSAgICAvLyBXZSB1c2UgYSBjb3VudCBmb3IgbnVtYmVyIG9mIGNsaWVudHMgKHNob3VsZSBvbmx5IGJlIDAgb3IgMSkuCi0gICAgdm9sYXRpbGUgICAgaW50MzJfdCAgICAgICAgICAgICAgICAgICAgIG1Vc2VyczsKLSAgICB2aXJ0dWFsICAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgaW5jVXNlcnMoKTsKLSAgICB2aXJ0dWFsICAgICB2b2lkICAgICAgICAgICAgICAgICAgICAgICAgZGVjVXNlcnMoKTsKLQotICAgIG11dGFibGUgICAgIE11dGV4ICAgICAgICAgICAgICAgICAgICAgICBtU2VydmljZUxvY2s7Ci0gICAgICAgICAgICAgICAgd3A8Q2xpZW50PiAgICAgICAgICAgICAgICAgIG1DbGllbnQ7Ci0KLSNpZiBERUJVR19IRUFQX0xFQUtTCi0gICAgICAgICAgICAgICAgd3A8SU1lbW9yeUhlYXA+ICAgICAgICAgICAgIGdXZWFrSGVhcDsKLSNlbmRpZgogfTsKIAotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi19OyAvLyBuYW1lc3BhY2UgYW5kcm9pZAorfSAvLyBuYW1lc3BhY2UgYW5kcm9pZAogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2NhbWVyYS9saWJjYW1lcmFzZXJ2aWNlL0Zha2VDYW1lcmEuY3BwIGIvY2FtZXJhL2xpYmNhbWVyYXNlcnZpY2UvRmFrZUNhbWVyYS5jcHAKaW5kZXggNjc0OTg5OS4uZjNhNmE2NyAxMDA2NDQKLS0tIGEvY2FtZXJhL2xpYmNhbWVyYXNlcnZpY2UvRmFrZUNhbWVyYS5jcHAKKysrIGIvY2FtZXJhL2xpYmNhbWVyYXNlcnZpY2UvRmFrZUNhbWVyYS5jcHAKQEAgLTE5OCwxMCArMTk4LDExIEBACiBzdGF0aWMgY29uc3QgaW50ICBERUxUQSAgPSBrWWIqKDEgPDwgU0hJRlQyKTsKIHN0YXRpYyBjb25zdCBpbnQgIEdBTU1BICA9IGtZciooMSA8PCBTSElGVDIpOwogCi1pbnQzMl90IGNjcmdiMTZ0b3l1dl93b19jb2xvcmtleSh1aW50OF90ICpyZ2IxNix1aW50OF90ICp5dXY0MjIsdWludDMyX3QgKnBhcmFtLHVpbnQ4X3QgKnRhYmxlW10pCitpbnQzMl90IGNjcmdiMTZ0b3l1dl93b19jb2xvcmtleSh1aW50OF90ICpyZ2IxNiwgdWludDhfdCAqeXV2NDIwLAorICAgICAgICB1aW50MzJfdCAqcGFyYW0sIHVpbnQ4X3QgKnRhYmxlW10pCiB7CiAgICAgdWludDE2X3QgKmlucHV0UkdCID0gKHVpbnQxNl90KilyZ2IxNjsKLSAgICB1aW50OF90ICpvdXRZVVYgPSAgeXV2NDIyOworICAgIHVpbnQ4X3QgKm91dFlVViA9IHl1djQyMDsKICAgICBpbnQzMl90IHdpZHRoX2RzdCA9IHBhcmFtWzBdOwogICAgIGludDMyX3QgaGVpZ2h0X2RzdCA9IHBhcmFtWzFdOwogICAgIGludDMyX3QgcGl0Y2hfZHN0ID0gcGFyYW1bMl07CkBAIC0yNjAsMTIgKzI2MSwxNCBAQAogCiAgICAgICAgICAgICB0ZW1wWVswXSA9IHkwOwogICAgICAgICAgICAgdGVtcFlbMV0gPSB5MTsKLSAgICAgICAgICAgIHRlbXBVWzBdID0gdTsKLSAgICAgICAgICAgIHRlbXBWWzBdID0gdjsKLQogICAgICAgICAgICAgdGVtcFkgKz0gMjsKLSAgICAgICAgICAgIHRlbXBVICs9IDI7Ci0gICAgICAgICAgICB0ZW1wViArPSAyOworCisgICAgICAgICAgICBpZiAoKGomMSkgPT0gMCkgeworICAgICAgICAgICAgICAgIHRlbXBVWzBdID0gdTsKKyAgICAgICAgICAgICAgICB0ZW1wVlswXSA9IHY7CisgICAgICAgICAgICAgICAgdGVtcFUgKz0gMjsKKyAgICAgICAgICAgICAgICB0ZW1wViArPSAyOworICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgaW5wdXRSR0IgKz0gcGl0Y2hfc3JjOwpAQCAtMjc3LDcgKzI4MCw3IEBACiAjZGVmaW5lIG1pbihhLGIpICgoYSk8KGIpPyhhKTooYikpCiAjZGVmaW5lIG1heChhLGIpICgoYSk+KGIpPyhhKTooYikpCiAKLXN0YXRpYyB2b2lkIGNvbnZlcnRfcmdiMTZfdG9feXV2NDIyKHVpbnQ4X3QgKnJnYiwgdWludDhfdCAqeXV2LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCitzdGF0aWMgdm9pZCBjb252ZXJ0X3JnYjE2X3RvX3l1djQyMCh1aW50OF90ICpyZ2IsIHVpbnQ4X3QgKnl1diwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KQogewogICAgIGlmICghdGFibGVzX2luaXRpYWxpemVkKSB7CiAgICAgICAgIGluaXRZdGFiKCk7CkBAIC0zMjYsNyArMzI5LDcgQEAKICAgICBtQ2hlY2tZID0gMDsKIAogICAgIC8vIFRoaXMgd2lsbCBjYXVzZSBpdCB0byBiZSByZWFsbG9jYXRlZCBvbiB0aGUgbmV4dCBjYWxsCi0gICAgLy8gdG8gZ2V0TmV4dEZyYW1lQXNZdXY0MjIoKS4KKyAgICAvLyB0byBnZXROZXh0RnJhbWVBc1l1djQyMCgpLgogICAgIGRlbGV0ZVtdIG1UbXBSZ2IxNkJ1ZmZlcjsKICAgICBtVG1wUmdiMTZCdWZmZXIgPSAwOwogfQpAQCAtMzQ3LDEzICszNTAsMTMgQEAKICAgICBtQ291bnRlcisrOwogfQogCi12b2lkIEZha2VDYW1lcmE6OmdldE5leHRGcmFtZUFzWXV2NDIyKHVpbnQ4X3QgKmJ1ZmZlcikKK3ZvaWQgRmFrZUNhbWVyYTo6Z2V0TmV4dEZyYW1lQXNZdXY0MjAodWludDhfdCAqYnVmZmVyKQogewogICAgIGlmIChtVG1wUmdiMTZCdWZmZXIgPT0gMCkKICAgICAgICAgbVRtcFJnYjE2QnVmZmVyID0gbmV3IHVpbnQxNl90W21XaWR0aCAqIG1IZWlnaHRdOwogCiAgICAgZ2V0TmV4dEZyYW1lQXNSZ2I1NjUobVRtcFJnYjE2QnVmZmVyKTsKLSAgICBjb252ZXJ0X3JnYjE2X3RvX3l1djQyMigodWludDhfdCopbVRtcFJnYjE2QnVmZmVyLCBidWZmZXIsIG1XaWR0aCwgbUhlaWdodCk7CisgICAgY29udmVydF9yZ2IxNl90b195dXY0MjAoKHVpbnQ4X3QqKW1UbXBSZ2IxNkJ1ZmZlciwgYnVmZmVyLCBtV2lkdGgsIG1IZWlnaHQpOwogfQogCiB2b2lkIEZha2VDYW1lcmE6OmRyYXdTcXVhcmUodWludDE2X3QgKmRzdCwgaW50IHgsIGludCB5LCBpbnQgc2l6ZSwgaW50IGNvbG9yLCBpbnQgc2hhZG93KQpkaWZmIC0tZ2l0IGEvY2FtZXJhL2xpYmNhbWVyYXNlcnZpY2UvRmFrZUNhbWVyYS5oIGIvY2FtZXJhL2xpYmNhbWVyYXNlcnZpY2UvRmFrZUNhbWVyYS5oCmluZGV4IGY3Zjg4MDMuLjcyNGRlMjAgMTAwNjQ0Ci0tLSBhL2NhbWVyYS9saWJjYW1lcmFzZXJ2aWNlL0Zha2VDYW1lcmEuaAorKysgYi9jYW1lcmEvbGliY2FtZXJhc2VydmljZS9GYWtlQ2FtZXJhLmgKQEAgLTQwLDcgKzQwLDcgQEAKICAgICB+RmFrZUNhbWVyYSgpOwogCiAgICAgdm9pZCBzZXRTaXplKGludCB3aWR0aCwgaW50IGhlaWdodCk7Ci0gICAgdm9pZCBnZXROZXh0RnJhbWVBc1l1djQyMih1aW50OF90ICpidWZmZXIpOworICAgIHZvaWQgZ2V0TmV4dEZyYW1lQXNZdXY0MjAodWludDhfdCAqYnVmZmVyKTsKICAgICAvLyBXcml0ZSB0byB0aGUgZmQgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBjdXJyZW50IHN0YXRlLgogICAgIHZvaWQgZHVtcChpbnQgZmQpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9jYW1lcmEvdGVzdHMvQ2FtZXJhU2VydmljZVRlc3QvQW5kcm9pZC5tayBiL2NhbWVyYS90ZXN0cy9DYW1lcmFTZXJ2aWNlVGVzdC9BbmRyb2lkLm1rCmluZGV4IDliYjE5MGEuLmNmNGU0MmYgMTAwNjQ0Ci0tLSBhL2NhbWVyYS90ZXN0cy9DYW1lcmFTZXJ2aWNlVGVzdC9BbmRyb2lkLm1rCisrKyBiL2NhbWVyYS90ZXN0cy9DYW1lcmFTZXJ2aWNlVGVzdC9BbmRyb2lkLm1rCkBAIC0yMSw0ICsyMSw2IEBACiAgICAgICAgICAgICAgICAgbGliY2FtZXJhX2NsaWVudCBcCiAgICAgICAgICAgICAgICAgbGlic3VyZmFjZWZsaW5nZXJfY2xpZW50CiAKLWluY2x1ZGUgJChCVUlMRF9FWEVDVVRBQkxFKQorIyBEaXNhYmxlIGl0IGJlY2F1c2UgdGhlIElTdXJmYWNlIGludGVyZmFjZSBtYXkgY2hhbmdlLCBhbmQgYmVmb3JlIHdlIGhhdmUgYQorIyBjaGFuY2UgdG8gZml4IHRoaXMgdGVzdCwgd2UgZG9uJ3Qgd2FudCB0byBicmVhayBub3JtYWwgYnVpbGRzLgorI2luY2x1ZGUgJChCVUlMRF9FWEVDVVRBQkxFKQpkaWZmIC0tZ2l0IGEvY2FtZXJhL3Rlc3RzL0NhbWVyYVNlcnZpY2VUZXN0L0NhbWVyYVNlcnZpY2VUZXN0LmNwcCBiL2NhbWVyYS90ZXN0cy9DYW1lcmFTZXJ2aWNlVGVzdC9DYW1lcmFTZXJ2aWNlVGVzdC5jcHAKaW5kZXggOWZjNzk1Yi4uM2M4ZDU1MyAxMDA2NDQKLS0tIGEvY2FtZXJhL3Rlc3RzL0NhbWVyYVNlcnZpY2VUZXN0L0NhbWVyYVNlcnZpY2VUZXN0LmNwcAorKysgYi9jYW1lcmEvdGVzdHMvQ2FtZXJhU2VydmljZVRlc3QvQ2FtZXJhU2VydmljZVRlc3QuY3BwCkBAIC0zOCw3ICszOCw3IEBACiAgICAgSU5GTygiYXNzZXJ0aW9uIGZhaWxlZCBhdCBmaWxlICVzLCBsaW5lICVkLCBmdW5jdGlvbiAlczoiLAogICAgICAgICAgICAgZmlsZSwgbGluZSwgZnVuYyk7CiAgICAgSU5GTygiJXMiLCBleHByKTsKLSAgICBleGl0KDEpOworICAgIGFib3J0KCk7CiB9CiAKIHZvaWQgYXNzZXJ0X2VxX2ZhaWwoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKmZ1bmMsCkBAIC00Niw3ICs0Niw3IEBACiAgICAgSU5GTygiYXNzZXJ0aW9uIGZhaWxlZCBhdCBmaWxlICVzLCBsaW5lICVkLCBmdW5jdGlvbiAlczoiLAogICAgICAgICAgICAgZmlsZSwgbGluZSwgZnVuYyk7CiAgICAgSU5GTygiKGV4cGVjdGVkKSAlcyAhPSAoYWN0dWFsKSAlZCIsIGV4cHIsIGFjdHVhbCk7Ci0gICAgZXhpdCgxKTsKKyAgICBhYm9ydCgpOwogfQogCiAjZGVmaW5lIEFTU0VSVChlKSBcCkBAIC0xNTUsNyArMTU1LDcgQEAKICAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q2FsbGJhY2soaW50MzJfdCBtc2dUeXBlLCBpbnQzMl90IGV4dDEsIGludDMyX3QgZXh0Mik7CiAgICAgdmlydHVhbCB2b2lkIGRhdGFDYWxsYmFjayhpbnQzMl90IG1zZ1R5cGUsIGNvbnN0IHNwPElNZW1vcnk+JiBkYXRhKTsKICAgICB2aXJ0dWFsIHZvaWQgZGF0YUNhbGxiYWNrVGltZXN0YW1wKG5zZWNzX3QgdGltZXN0YW1wLAotICAgICAgICAgICAgaW50MzJfdCBtc2dUeXBlLCBjb25zdCBzcDxJTWVtb3J5PiYgZGF0YSkge30KKyAgICAgICAgICAgIGludDMyX3QgbXNnVHlwZSwgY29uc3Qgc3A8SU1lbW9yeT4mIGRhdGEpOwogCiAgICAgLy8gbmV3IGZ1bmN0aW9ucwogICAgIHZvaWQgY2xlYXJTdGF0KCk7CkBAIC0xNzYsNiArMTc2LDcgQEAKICAgICBEZWZhdWx0S2V5ZWRWZWN0b3I8aW50MzJfdCwgaW50PiBtRGF0YUNvdW50OwogICAgIERlZmF1bHRLZXllZFZlY3RvcjxpbnQzMl90LCBpbnQ+IG1EYXRhU2l6ZTsKICAgICBib29sIHRlc3QoT1Agb3AsIGludCB2MSwgaW50IHYyKTsKKyAgICB2b2lkIGFzc2VydFRlc3QoT1Agb3AsIGludCB2MSwgaW50IHYyKTsKIAogICAgIElDYW1lcmEgKm1SZWxlYXNlcjsKIH07CkBAIC0xOTksMjYgKzIwMCwzMyBAQAogICAgIHJldHVybiBmYWxzZTsKIH0KIAordm9pZCBNQ2FtZXJhQ2xpZW50Ojphc3NlcnRUZXN0KE9QIG9wLCBpbnQgdjEsIGludCB2MikgeworICAgIGlmICghdGVzdChvcCwgdjEsIHYyKSkgeworICAgICAgICBMT0dFKCJhc3NlcnRUZXN0IGZhaWxlZDogb3A9JWQsIHYxPSVkLCB2Mj0lZCIsIG9wLCB2MSwgdjIpOworICAgICAgICBBU1NFUlQoMCk7CisgICAgfQorfQorCiB2b2lkIE1DYW1lcmFDbGllbnQ6OmFzc2VydE5vdGlmeShpbnQzMl90IG1zZ1R5cGUsIE9QIG9wLCBpbnQgY291bnQpIHsKICAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOwogICAgIGludCB2ID0gbU5vdGlmeUNvdW50LnZhbHVlRm9yKG1zZ1R5cGUpOwotICAgIEFTU0VSVCh0ZXN0KG9wLCB2LCBjb3VudCkpOworICAgIGFzc2VydFRlc3Qob3AsIHYsIGNvdW50KTsKIH0KIAogdm9pZCBNQ2FtZXJhQ2xpZW50Ojphc3NlcnREYXRhKGludDMyX3QgbXNnVHlwZSwgT1Agb3AsIGludCBjb3VudCkgewogICAgIE11dGV4OjpBdXRvbG9jayBfbChtTG9jayk7CiAgICAgaW50IHYgPSBtRGF0YUNvdW50LnZhbHVlRm9yKG1zZ1R5cGUpOwotICAgIEFTU0VSVCh0ZXN0KG9wLCB2LCBjb3VudCkpOworICAgIGFzc2VydFRlc3Qob3AsIHYsIGNvdW50KTsKIH0KIAogdm9pZCBNQ2FtZXJhQ2xpZW50Ojphc3NlcnREYXRhU2l6ZShpbnQzMl90IG1zZ1R5cGUsIE9QIG9wLCBpbnQgZGF0YVNpemUpIHsKICAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOwogICAgIGludCB2ID0gbURhdGFTaXplLnZhbHVlRm9yKG1zZ1R5cGUpOwotICAgIEFTU0VSVCh0ZXN0KG9wLCB2LCBkYXRhU2l6ZSkpOworICAgIGFzc2VydFRlc3Qob3AsIHYsIGRhdGFTaXplKTsKIH0KIAogdm9pZCBNQ2FtZXJhQ2xpZW50Ojpub3RpZnlDYWxsYmFjayhpbnQzMl90IG1zZ1R5cGUsIGludDMyX3QgZXh0MSwgaW50MzJfdCBleHQyKSB7Ci0gICAgSU5GTyhfX2Z1bmNfXyk7CisgICAgSU5GTygiJXMiLCBfX2Z1bmNfXyk7CiAgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1Mb2NrKTsKICAgICBzc2l6ZV90IGkgPSBtTm90aWZ5Q291bnQuaW5kZXhPZktleShtc2dUeXBlKTsKICAgICBpZiAoaSA8IDApIHsKQEAgLTIzMCw3ICsyMzgsNyBAQAogfQogCiB2b2lkIE1DYW1lcmFDbGllbnQ6OmRhdGFDYWxsYmFjayhpbnQzMl90IG1zZ1R5cGUsIGNvbnN0IHNwPElNZW1vcnk+JiBkYXRhKSB7Ci0gICAgSU5GTyhfX2Z1bmNfXyk7CisgICAgSU5GTygiJXMiLCBfX2Z1bmNfXyk7CiAgICAgaW50IGRhdGFTaXplID0gZGF0YS0+c2l6ZSgpOwogICAgIElORk8oImRhdGEgdHlwZSA9ICVkLCBzaXplID0gJWQiLCBtc2dUeXBlLCBkYXRhU2l6ZSk7CiAgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1Mb2NrKTsKQEAgLTI1MCw2ICsyNTgsMTEgQEAKICAgICB9CiB9CiAKK3ZvaWQgTUNhbWVyYUNsaWVudDo6ZGF0YUNhbGxiYWNrVGltZXN0YW1wKG5zZWNzX3QgdGltZXN0YW1wLCBpbnQzMl90IG1zZ1R5cGUsCisgICAgICAgIGNvbnN0IHNwPElNZW1vcnk+JiBkYXRhKSB7CisgICAgZGF0YUNhbGxiYWNrKG1zZ1R5cGUsIGRhdGEpOworfQorCiB2b2lkIE1DYW1lcmFDbGllbnQ6OndhaXROb3RpZnkoaW50MzJfdCBtc2dUeXBlLCBPUCBvcCwgaW50IGNvdW50KSB7CiAgICAgSU5GTygid2FpdE5vdGlmeTogJWQsICVkLCAlZCIsIG1zZ1R5cGUsIG9wLCBjb3VudCk7CiAgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1Mb2NrKTsKQEAgLTI4NSw2ICsyOTgsNyBAQAogICAgIHZpcnR1YWwgc3A8T3ZlcmxheVJlZj4gY3JlYXRlT3ZlcmxheSgKICAgICAgICAgICAgIHVpbnQzMl90IHcsIHVpbnQzMl90IGgsIGludDMyX3QgZm9ybWF0LCBpbnQzMl90IG9yaWVudGF0aW9uKTsKICAgICB2aXJ0dWFsIHNwPEdyYXBoaWNCdWZmZXI+IHJlcXVlc3RCdWZmZXIoaW50IGJ1ZmZlcklkeCwgaW50IHVzYWdlKTsKKyAgICB2aXJ0dWFsIHN0YXR1c190IHNldEJ1ZmZlckNvdW50KGludCBidWZmZXJDb3VudCk7CiAKICAgICAvLyBuZXcgZnVuY3Rpb25zCiAgICAgdm9pZCBjbGVhclN0YXQoKTsKQEAgLTMwMCw3ICszMTQsNyBAQAogfTsKIAogc3RhdHVzX3QgTVN1cmZhY2U6OnJlZ2lzdGVyQnVmZmVycyhjb25zdCBCdWZmZXJIZWFwJiBidWZmZXJzKSB7Ci0gICAgSU5GTyhfX2Z1bmNfXyk7CisgICAgSU5GTygiJXMiLCBfX2Z1bmNfXyk7CiAgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1Mb2NrKTsKICAgICArK3JlZ2lzdGVyQnVmZmVyc0NvdW50OwogICAgIG1Db25kLnNpZ25hbCgpOwpAQCAtMzA4LDIxICszMjIsMjYgQEAKIH0KIAogdm9pZCBNU3VyZmFjZTo6cG9zdEJ1ZmZlcihzc2l6ZV90IG9mZnNldCkgewotICAgIC8vIElORk8oX19mdW5jX18pOworICAgIC8vIElORk8oIiVzIiwgX19mdW5jX18pOwogICAgIE11dGV4OjpBdXRvbG9jayBfbChtTG9jayk7CiAgICAgKytwb3N0QnVmZmVyQ291bnQ7CiAgICAgbUNvbmQuc2lnbmFsKCk7CiB9CiAKIHZvaWQgTVN1cmZhY2U6OnVucmVnaXN0ZXJCdWZmZXJzKCkgewotICAgIElORk8oX19mdW5jX18pOworICAgIElORk8oIiVzIiwgX19mdW5jX18pOwogICAgIE11dGV4OjpBdXRvbG9jayBfbChtTG9jayk7CiAgICAgKyt1bnJlZ2lzdGVyQnVmZmVyc0NvdW50OwogICAgIG1Db25kLnNpZ25hbCgpOwogfQogCiBzcDxHcmFwaGljQnVmZmVyPiBNU3VyZmFjZTo6cmVxdWVzdEJ1ZmZlcihpbnQgYnVmZmVySWR4LCBpbnQgdXNhZ2UpIHsKLSAgICBJTkZPKF9fZnVuY19fKTsKKyAgICBJTkZPKCIlcyIsIF9fZnVuY19fKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworc3RhdHVzX3QgTVN1cmZhY2U6OnNldEJ1ZmZlckNvdW50KGludCBidWZmZXJDb3VudCkgeworICAgIElORk8oIiVzIiwgX19mdW5jX18pOwogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC0zNDgsMTAgKzM2Nyw5IEBACiAKIHNwPE92ZXJsYXlSZWY+IE1TdXJmYWNlOjpjcmVhdGVPdmVybGF5KHVpbnQzMl90IHcsIHVpbnQzMl90IGgsIGludDMyX3QgZm9ybWF0LAogICAgICAgICBpbnQzMl90IG9yaWVudGF0aW9uKSB7Ci0gICAgLy8gV2UgZG9uJ3QgZXhwZWN0IHRoaXMgdG8gYmUgY2FsbGVkIGluIGN1cnJlbnQgaGFyZHdhcmUuCisgICAgLy8gTm90IGltcGxlbWVudGVkLgogICAgIEFTU0VSVCgwKTsKLSAgICBzcDxPdmVybGF5UmVmPiBkdW1teTsKLSAgICByZXR1cm4gZHVtbXk7CisgICAgcmV0dXJuIE5VTEw7CiB9CiAKIC8vCkBAIC0zNjgsMTcgKzM4NiwxNyBAQAogfQogCiB2b2lkIHB1dFRlbXBPYmplY3Qoc3A8SUJpbmRlcj4gb2JqKSB7Ci0gICAgSU5GTyhfX2Z1bmNfXyk7CisgICAgSU5GTygiJXMiLCBfX2Z1bmNfXyk7CiAgICAgZ2V0SG9sZGVyKCktPnB1dChvYmopOwogfQogCiBzcDxJQmluZGVyPiBnZXRUZW1wT2JqZWN0KCkgewotICAgIElORk8oX19mdW5jX18pOworICAgIElORk8oIiVzIiwgX19mdW5jX18pOwogICAgIHJldHVybiBnZXRIb2xkZXIoKS0+Z2V0KCk7CiB9CiAKIHZvaWQgY2xlYXJUZW1wT2JqZWN0KCkgewotICAgIElORk8oX19mdW5jX18pOworICAgIElORk8oIiVzIiwgX19mdW5jX18pOwogICAgIGdldEhvbGRlcigpLT5jbGVhcigpOwogfQogCkBAIC0zOTUsNjQgKzQxMyw3MSBAQAogICAgIHJldHVybiBjczsKIH0KIAoraW50IGdldE51bWJlck9mQ2FtZXJhcygpIHsKKyAgICBzcDxJQ2FtZXJhU2VydmljZT4gY3MgPSBnZXRDYW1lcmFTZXJ2aWNlKCk7CisgICAgcmV0dXJuIGNzLT5nZXROdW1iZXJPZkNhbWVyYXMoKTsKK30KKwogLy8KIC8vIFZhcmlvdXMgQ29ubmVjdCBUZXN0cwogLy8KLXZvaWQgdGVzdENvbm5lY3QoKSB7Ci0gICAgSU5GTyhfX2Z1bmNfXyk7Cit2b2lkIHRlc3RDb25uZWN0KGludCBjYW1lcmFJZCkgeworICAgIElORk8oIiVzIiwgX19mdW5jX18pOwogICAgIHNwPElDYW1lcmFTZXJ2aWNlPiBjcyA9IGdldENhbWVyYVNlcnZpY2UoKTsKICAgICBzcDxNQ2FtZXJhQ2xpZW50PiBjYyA9IG5ldyBNQ2FtZXJhQ2xpZW50KCk7Ci0gICAgc3A8SUNhbWVyYT4gYyA9IGNzLT5jb25uZWN0KGNjKTsKKyAgICBzcDxJQ2FtZXJhPiBjID0gY3MtPmNvbm5lY3QoY2MsIGNhbWVyYUlkKTsKICAgICBBU1NFUlQoYyAhPSAwKTsKICAgICBjLT5kaXNjb25uZWN0KCk7CiB9CiAKLXZvaWQgdGVzdEFsbG93Q29ubmVjdE9uY2VPbmx5KCkgewotICAgIElORk8oX19mdW5jX18pOwordm9pZCB0ZXN0QWxsb3dDb25uZWN0T25jZU9ubHkoaW50IGNhbWVyYUlkKSB7CisgICAgSU5GTygiJXMiLCBfX2Z1bmNfXyk7CiAgICAgc3A8SUNhbWVyYVNlcnZpY2U+IGNzID0gZ2V0Q2FtZXJhU2VydmljZSgpOwogICAgIC8vIENvbm5lY3QgdGhlIGZpcnN0IGNsaWVudC4KICAgICBzcDxNQ2FtZXJhQ2xpZW50PiBjYyA9IG5ldyBNQ2FtZXJhQ2xpZW50KCk7Ci0gICAgc3A8SUNhbWVyYT4gYyA9IGNzLT5jb25uZWN0KGNjKTsKKyAgICBzcDxJQ2FtZXJhPiBjID0gY3MtPmNvbm5lY3QoY2MsIGNhbWVyYUlkKTsKICAgICBBU1NFUlQoYyAhPSAwKTsKICAgICAvLyBTYW1lIGNsaWVudCAtLSBvay4KLSAgICBBU1NFUlQoY3MtPmNvbm5lY3QoY2MpICE9IDApOworICAgIEFTU0VSVChjcy0+Y29ubmVjdChjYywgY2FtZXJhSWQpICE9IDApOwogICAgIC8vIERpZmZlcmVudCBjbGllbnQgLS0gbm90IG9rLgogICAgIHNwPE1DYW1lcmFDbGllbnQ+IGNjMiA9IG5ldyBNQ2FtZXJhQ2xpZW50KCk7Ci0gICAgQVNTRVJUKGNzLT5jb25uZWN0KGNjMikgPT0gMCk7CisgICAgQVNTRVJUKGNzLT5jb25uZWN0KGNjMiwgY2FtZXJhSWQpID09IDApOwogICAgIGMtPmRpc2Nvbm5lY3QoKTsKIH0KIAogdm9pZCB0ZXN0UmVjb25uZWN0RmFpbGVkKCkgewotICAgIElORk8oX19mdW5jX18pOworICAgIElORk8oIiVzIiwgX19mdW5jX18pOwogICAgIHNwPElDYW1lcmE+IGMgPSBpbnRlcmZhY2VfY2FzdDxJQ2FtZXJhPihnZXRUZW1wT2JqZWN0KCkpOwotICAgIHNwPE1DYW1lcmFDbGllbnQ+IGNjMiA9IG5ldyBNQ2FtZXJhQ2xpZW50KCk7Ci0gICAgQVNTRVJUKGMtPmNvbm5lY3QoY2MyKSAhPSBOT19FUlJPUik7CisgICAgc3A8TUNhbWVyYUNsaWVudD4gY2MgPSBuZXcgTUNhbWVyYUNsaWVudCgpOworICAgIEFTU0VSVChjLT5jb25uZWN0KGNjKSAhPSBOT19FUlJPUik7CiB9CiAKIHZvaWQgdGVzdFJlY29ubmVjdFN1Y2Nlc3MoKSB7Ci0gICAgSU5GTyhfX2Z1bmNfXyk7CisgICAgSU5GTygiJXMiLCBfX2Z1bmNfXyk7CiAgICAgc3A8SUNhbWVyYT4gYyA9IGludGVyZmFjZV9jYXN0PElDYW1lcmE+KGdldFRlbXBPYmplY3QoKSk7CiAgICAgc3A8TUNhbWVyYUNsaWVudD4gY2MgPSBuZXcgTUNhbWVyYUNsaWVudCgpOwogICAgIEFTU0VSVChjLT5jb25uZWN0KGNjKSA9PSBOT19FUlJPUik7CisgICAgYy0+ZGlzY29ubmVjdCgpOwogfQogCiB2b2lkIHRlc3RMb2NrRmFpbGVkKCkgewotICAgIElORk8oX19mdW5jX18pOworICAgIElORk8oIiVzIiwgX19mdW5jX18pOwogICAgIHNwPElDYW1lcmE+IGMgPSBpbnRlcmZhY2VfY2FzdDxJQ2FtZXJhPihnZXRUZW1wT2JqZWN0KCkpOwogICAgIEFTU0VSVChjLT5sb2NrKCkgIT0gTk9fRVJST1IpOwogfQogCiB2b2lkIHRlc3RMb2NrVW5sb2NrU3VjY2VzcygpIHsKLSAgICBJTkZPKF9fZnVuY19fKTsKKyAgICBJTkZPKCIlcyIsIF9fZnVuY19fKTsKICAgICBzcDxJQ2FtZXJhPiBjID0gaW50ZXJmYWNlX2Nhc3Q8SUNhbWVyYT4oZ2V0VGVtcE9iamVjdCgpKTsKICAgICBBU1NFUlQoYy0+bG9jaygpID09IE5PX0VSUk9SKTsKICAgICBBU1NFUlQoYy0+dW5sb2NrKCkgPT0gTk9fRVJST1IpOwogfQogCiB2b2lkIHRlc3RMb2NrU3VjY2VzcygpIHsKLSAgICBJTkZPKF9fZnVuY19fKTsKKyAgICBJTkZPKCIlcyIsIF9fZnVuY19fKTsKICAgICBzcDxJQ2FtZXJhPiBjID0gaW50ZXJmYWNlX2Nhc3Q8SUNhbWVyYT4oZ2V0VGVtcE9iamVjdCgpKTsKICAgICBBU1NFUlQoYy0+bG9jaygpID09IE5PX0VSUk9SKTsKKyAgICBjLT5kaXNjb25uZWN0KCk7CiB9CiAKIC8vCkBAIC00OTksMTEgKzUyNCwxMSBAQAogICAgIH0KIH0KIAotdm9pZCB0ZXN0UmVjb25uZWN0KCkgewotICAgIElORk8oX19mdW5jX18pOwordm9pZCB0ZXN0UmVjb25uZWN0KGludCBjYW1lcmFJZCkgeworICAgIElORk8oIiVzIiwgX19mdW5jX18pOwogICAgIHNwPElDYW1lcmFTZXJ2aWNlPiBjcyA9IGdldENhbWVyYVNlcnZpY2UoKTsKICAgICBzcDxNQ2FtZXJhQ2xpZW50PiBjYyA9IG5ldyBNQ2FtZXJhQ2xpZW50KCk7Ci0gICAgc3A8SUNhbWVyYT4gYyA9IGNzLT5jb25uZWN0KGNjKTsKKyAgICBzcDxJQ2FtZXJhPiBjID0gY3MtPmNvbm5lY3QoY2MsIGNhbWVyYUlkKTsKICAgICBBU1NFUlQoYyAhPSAwKTsKICAgICAvLyBSZWNvbm5lY3QgdG8gdGhlIHNhbWUgY2xpZW50IC0tIG9rLgogICAgIEFTU0VSVChjLT5jb25uZWN0KGNjKSA9PSBOT19FUlJPUik7CkBAIC01MTQsMTAgKzUzOSwxMCBAQAogICAgIGNjLT5hc3NlcnROb3RpZnkoQ0FNRVJBX01TR19FUlJPUiwgTUNhbWVyYUNsaWVudDo6RVEsIDApOwogfQogCi12b2lkIHRlc3RMb2NrVW5sb2NrKCkgewordm9pZCB0ZXN0TG9ja1VubG9jayhpbnQgY2FtZXJhSWQpIHsKICAgICBzcDxJQ2FtZXJhU2VydmljZT4gY3MgPSBnZXRDYW1lcmFTZXJ2aWNlKCk7CiAgICAgc3A8TUNhbWVyYUNsaWVudD4gY2MgPSBuZXcgTUNhbWVyYUNsaWVudCgpOwotICAgIHNwPElDYW1lcmE+IGMgPSBjcy0+Y29ubmVjdChjYyk7CisgICAgc3A8SUNhbWVyYT4gYyA9IGNzLT5jb25uZWN0KGNjLCBjYW1lcmFJZCk7CiAgICAgQVNTRVJUKGMgIT0gMCk7CiAgICAgLy8gV2UgY2FuIGxvY2sgYXMgbWFueSB0aW1lcyBhcyB3ZSB3YW50LgogICAgIEFTU0VSVChjLT5sb2NrKCkgPT0gTk9fRVJST1IpOwpAQCAtNTMwLDE2ICs1NTUsMTUgQEAKICAgICBydW5JbkFub3RoZXJQcm9jZXNzKCJ0ZXN0TG9ja1VubG9ja1N1Y2Nlc3MiKTsKICAgICAvLyBVbmxvY2sgdGhlbiBsb2NrIGZyb20gYSBkaWZmZXJlbnQgcHJvY2VzcyAtLSBvay4KICAgICBydW5JbkFub3RoZXJQcm9jZXNzKCJ0ZXN0TG9ja1N1Y2Nlc3MiKTsKLSAgICBjLT5kaXNjb25uZWN0KCk7CiAgICAgY2xlYXJUZW1wT2JqZWN0KCk7CiB9CiAKLXZvaWQgdGVzdFJlY29ubmVjdEZyb21Bbm90aGVyUHJvY2VzcygpIHsKLSAgICBJTkZPKF9fZnVuY19fKTsKK3ZvaWQgdGVzdFJlY29ubmVjdEZyb21Bbm90aGVyUHJvY2VzcyhpbnQgY2FtZXJhSWQpIHsKKyAgICBJTkZPKCIlcyIsIF9fZnVuY19fKTsKIAogICAgIHNwPElDYW1lcmFTZXJ2aWNlPiBjcyA9IGdldENhbWVyYVNlcnZpY2UoKTsKICAgICBzcDxNQ2FtZXJhQ2xpZW50PiBjYyA9IG5ldyBNQ2FtZXJhQ2xpZW50KCk7Ci0gICAgc3A8SUNhbWVyYT4gYyA9IGNzLT5jb25uZWN0KGNjKTsKKyAgICBzcDxJQ2FtZXJhPiBjID0gY3MtPmNvbm5lY3QoY2MsIGNhbWVyYUlkKTsKICAgICBBU1NFUlQoYyAhPSAwKTsKICAgICAvLyBSZWNvbm5lY3QgZnJvbSBhIGRpZmZlcmVudCBwcm9jZXNzIC0tIG5vdCBvay4KICAgICBwdXRUZW1wT2JqZWN0KGMtPmFzQmluZGVyKCkpOwpAQCAtNTQ3LDcgKzU3MSw2IEBACiAgICAgLy8gVW5sb2NrIHRoZW4gcmVjb25uZWN0IGZyb20gYSBkaWZmZXJlbnQgcHJvY2VzcyAtLSBvay4KICAgICBBU1NFUlQoYy0+dW5sb2NrKCkgPT0gTk9fRVJST1IpOwogICAgIHJ1bkluQW5vdGhlclByb2Nlc3MoInRlc3RSZWNvbm5lY3RTdWNjZXNzIik7Ci0gICAgYy0+ZGlzY29ubmVjdCgpOwogICAgIGNsZWFyVGVtcE9iamVjdCgpOwogfQogCkBAIC01NjAsMTAgKzU4MywxMSBAQAogfQogCiAvLyBSdW4gYSB0ZXN0IGNhc2UKLSNkZWZpbmUgUlVOKGNsYXNzX25hbWUpIGRvIHsgXAorI2RlZmluZSBSVU4oY2xhc3NfbmFtZSwgY2FtZXJhSWQpIGRvIHsgXAogICAgIHsgXAogICAgICAgICBJTkZPKCNjbGFzc19uYW1lKTsgXAogICAgICAgICBjbGFzc19uYW1lIGluc3RhbmNlOyBcCisgICAgICAgIGluc3RhbmNlLmluaXQoY2FtZXJhSWQpOyBcCiAgICAgICAgIGluc3RhbmNlLnJ1bigpOyBcCiAgICAgfSBcCiAgICAgZmx1c2hDb21tYW5kcygpOyBcCkBAIC01NzEsMTkgKzU5NSwyMSBAQAogCiAvLyBCYXNlIHRlc3QgY2FzZSBhZnRlciB0aGUgdGhlIGNhbWVyYSBpcyBjb25uZWN0ZWQuCiBjbGFzcyBBZnRlckNvbm5lY3QgeworcHVibGljOgorICAgIHZvaWQgaW5pdChpbnQgY2FtZXJhSWQpIHsKKyAgICAgICAgY3MgPSBnZXRDYW1lcmFTZXJ2aWNlKCk7CisgICAgICAgIGNjID0gbmV3IE1DYW1lcmFDbGllbnQoKTsKKyAgICAgICAgYyA9IGNzLT5jb25uZWN0KGNjLCBjYW1lcmFJZCk7CisgICAgICAgIEFTU0VSVChjICE9IDApOworICAgIH0KKwogcHJvdGVjdGVkOgogICAgIHNwPElDYW1lcmFTZXJ2aWNlPiBjczsKICAgICBzcDxNQ2FtZXJhQ2xpZW50PiBjYzsKICAgICBzcDxJQ2FtZXJhPiBjOwogCi0gICAgQWZ0ZXJDb25uZWN0KCkgewotICAgICAgICBjcyA9IGdldENhbWVyYVNlcnZpY2UoKTsKLSAgICAgICAgY2MgPSBuZXcgTUNhbWVyYUNsaWVudCgpOwotICAgICAgICBjID0gY3MtPmNvbm5lY3QoY2MpOwotICAgICAgICBBU1NFUlQoYyAhPSAwKTsKLSAgICB9Ci0KICAgICB+QWZ0ZXJDb25uZWN0KCkgeworICAgICAgICBjLT5kaXNjb25uZWN0KCk7CiAgICAgICAgIGMuY2xlYXIoKTsKICAgICAgICAgY2MuY2xlYXIoKTsKICAgICAgICAgY3MuY2xlYXIoKTsKQEAgLTYxMiwxOSArNjM4LDE2IEBACiAgICAgICAgIHN1cmZhY2UtPndhaXRVbnRpbCgxLCAxMCwgMCk7IC8vIG5lZWRzIDEgcmVnaXN0ZXJCdWZmZXJzIGFuZCAxMCBwb3N0QnVmZmVyCiAgICAgICAgIHN1cmZhY2UtPmNsZWFyU3RhdCgpOwogCi0gICAgICAgIGMtPmRpc2Nvbm5lY3QoKTsKLSAgICAgICAgLy8gVE9ETzogQ2FtZXJhU2VydmljZSBjcmFzaGVzIGZvciB0aGlzLiBGaXggaXQuCi0jaWYgMAogICAgICAgICBzcDxNU3VyZmFjZT4gYW5vdGhlcl9zdXJmYWNlID0gbmV3IE1TdXJmYWNlKCk7CiAgICAgICAgIGMtPnNldFByZXZpZXdEaXNwbGF5KGFub3RoZXJfc3VyZmFjZSk7ICAvLyBqdXN0IHRvIG1ha2Ugc3VyZSB1bnJlZ2lzdGVyQnVmZmVycwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgY2FsbGVkLgogICAgICAgICBzdXJmYWNlLT53YWl0VW50aWwoMCwgMCwgMSk7ICAvLyBuZWVkcyB1bnJlZ2lzdGVyQnVmZmVycwotI2VuZGlmCisKICAgICAgICAgY2MtPmFzc2VydE5vdGlmeShDQU1FUkFfTVNHX0VSUk9SLCBNQ2FtZXJhQ2xpZW50OjpFUSwgMCk7CiAgICAgfQogfTsKIAotY2xhc3MgVGVzdFN0YXJ0UHJldmlld1dpdGhvdXREaXNwbGF5IDogQWZ0ZXJDb25uZWN0IHsKK2NsYXNzIFRlc3RTdGFydFByZXZpZXdXaXRob3V0RGlzcGxheSA6IHB1YmxpYyBBZnRlckNvbm5lY3QgewogcHVibGljOgogICAgIHZvaWQgcnVuKCkgewogICAgICAgICBBU1NFUlQoYy0+c3RhcnRQcmV2aWV3KCkgPT0gTk9fRVJST1IpOwpAQCAtNjM2LDE1ICs2NTksMTcgQEAKIAogLy8gQmFzZSB0ZXN0IGNhc2UgYWZ0ZXIgdGhlIHRoZSBjYW1lcmEgaXMgY29ubmVjdGVkIGFuZCB0aGUgcHJldmlldyBpcyBzdGFydGVkLgogY2xhc3MgQWZ0ZXJTdGFydFByZXZpZXcgOiBwdWJsaWMgQWZ0ZXJDb25uZWN0IHsKLXByb3RlY3RlZDoKLSAgICBzcDxNU3VyZmFjZT4gc3VyZmFjZTsKLQotICAgIEFmdGVyU3RhcnRQcmV2aWV3KCkgeworcHVibGljOgorICAgIHZvaWQgaW5pdChpbnQgY2FtZXJhSWQpIHsKKyAgICAgICAgQWZ0ZXJDb25uZWN0Ojppbml0KGNhbWVyYUlkKTsKICAgICAgICAgc3VyZmFjZSA9IG5ldyBNU3VyZmFjZSgpOwogICAgICAgICBBU1NFUlQoYy0+c2V0UHJldmlld0Rpc3BsYXkoc3VyZmFjZSkgPT0gTk9fRVJST1IpOwogICAgICAgICBBU1NFUlQoYy0+c3RhcnRQcmV2aWV3KCkgPT0gTk9fRVJST1IpOwogICAgIH0KIAorcHJvdGVjdGVkOgorICAgIHNwPE1TdXJmYWNlPiBzdXJmYWNlOworCiAgICAgfkFmdGVyU3RhcnRQcmV2aWV3KCkgewogICAgICAgICBzdXJmYWNlLmNsZWFyKCk7CiAgICAgfQpAQCAtNjgwLDkgKzcwNSw2IEBACiAgICAgICAgIGNjLT53YWl0RGF0YShDQU1FUkFfTVNHX1JBV19JTUFHRSwgTUNhbWVyYUNsaWVudDo6RVEsIDEpOwogICAgICAgICBjYy0+d2FpdERhdGEoQ0FNRVJBX01TR19DT01QUkVTU0VEX0lNQUdFLCBNQ2FtZXJhQ2xpZW50OjpFUSwgMSk7CiAgICAgICAgIGMtPnN0b3BQcmV2aWV3KCk7Ci0jaWYgMSAgLy8gVE9ETzogSXQgY3Jhc2hlcyBpZiB3ZSBkb24ndCBoYXZlIHRoaXMuIEZpeCBpdC4KLSAgICAgICAgdXNsZWVwKDEwMDAwMCk7Ci0jZW5kaWYKICAgICAgICAgYy0+ZGlzY29ubmVjdCgpOwogICAgICAgICBjYy0+YXNzZXJ0Tm90aWZ5KENBTUVSQV9NU0dfRVJST1IsIE1DYW1lcmFDbGllbnQ6OkVRLCAwKTsKICAgICB9CkBAIC02OTcsNyArNzE5LDYgQEAKICAgICAgICAgICAgIGNjLT53YWl0Tm90aWZ5KENBTUVSQV9NU0dfU0hVVFRFUiwgTUNhbWVyYUNsaWVudDo6RVEsIDEpOwogICAgICAgICAgICAgY2MtPndhaXREYXRhKENBTUVSQV9NU0dfUkFXX0lNQUdFLCBNQ2FtZXJhQ2xpZW50OjpFUSwgMSk7CiAgICAgICAgICAgICBjYy0+d2FpdERhdGEoQ0FNRVJBX01TR19DT01QUkVTU0VEX0lNQUdFLCBNQ2FtZXJhQ2xpZW50OjpFUSwgMSk7Ci0gICAgICAgICAgICB1c2xlZXAoMTAwMDAwKTsgIC8vIDEwMG1zCiAgICAgICAgIH0KICAgICAgICAgYy0+ZGlzY29ubmVjdCgpOwogICAgICAgICBjYy0+YXNzZXJ0Tm90aWZ5KENBTUVSQV9NU0dfRVJST1IsIE1DYW1lcmFDbGllbnQ6OkVRLCAwKTsKQEAgLTcwOCwzNiArNzI5LDcxIEBACiBwdWJsaWM6CiAgICAgdm9pZCBydW4oKSB7CiAgICAgICAgIFN0cmluZzggcGFyYW1fc3RyID0gYy0+Z2V0UGFyYW1ldGVycygpOwotICAgICAgICBJTkZPKHBhcmFtX3N0cik7CisgICAgICAgIElORk8oIiVzIiwgc3RhdGljX2Nhc3Q8Y29uc3QgY2hhcio+KHBhcmFtX3N0cikpOwogICAgIH0KIH07CiAKK3N0YXRpYyBib29sIGdldE5leHRTaXplKGNvbnN0IGNoYXIgKipwdHJTLCBpbnQgKncsIGludCAqaCkgeworICAgIGNvbnN0IGNoYXIgKnMgPSAqcHRyUzsKKworICAgIC8vIHNraXAgb3ZlciAnLCcKKyAgICBpZiAoKnMgPT0gJywnKSBzKys7CisKKyAgICAvLyByZW1lbWJlciBzdGFydCBwb3NpdGlvbiBpbiBwCisgICAgY29uc3QgY2hhciAqcCA9IHM7CisgICAgd2hpbGUgKCpzICE9ICdcMCcgJiYgKnMgIT0gJ3gnKSB7CisgICAgICAgIHMrKzsKKyAgICB9CisgICAgaWYgKCpzID09ICdcMCcpIHJldHVybiBmYWxzZTsKKworICAgIC8vIGdldCB0aGUgd2lkdGgKKyAgICAqdyA9IGF0b2kocCk7CisKKyAgICAvLyBza2lwIG92ZXIgJ3gnCisgICAgQVNTRVJUKCpzID09ICd4Jyk7CisgICAgcCA9IHMgKyAxOworICAgIHdoaWxlICgqcyAhPSAnXDAnICYmICpzICE9ICcsJykgeworICAgICAgICBzKys7CisgICAgfQorCisgICAgLy8gZ2V0IHRoZSBoZWlnaHQKKyAgICAqaCA9IGF0b2kocCk7CisgICAgKnB0clMgPSBzOworICAgIHJldHVybiB0cnVlOworfQorCiBjbGFzcyBUZXN0UGljdHVyZVNpemUgOiBwdWJsaWMgQWZ0ZXJTdGFydFByZXZpZXcgewogcHVibGljOgogICAgIHZvaWQgY2hlY2tPbmVQaWN0dXJlKGludCB3LCBpbnQgaCkgewotICAgICAgICBjb25zdCBmbG9hdCByYXRlID0gMC41OyAgLy8gYnl0ZSBwZXIgcGl4ZWwgbGltaXQKKyAgICAgICAgY29uc3QgZmxvYXQgcmF0ZSA9IDAuOTsgIC8vIGJ5dGUgcGVyIHBpeGVsIGxpbWl0CiAgICAgICAgIGludCBwaXhlbHMgPSB3ICogaDsKIAogICAgICAgICBDYW1lcmFQYXJhbWV0ZXJzIHBhcmFtKGMtPmdldFBhcmFtZXRlcnMoKSk7CiAgICAgICAgIHBhcmFtLnNldFBpY3R1cmVTaXplKHcsIGgpOworICAgICAgICAvLyBkaXNhYmxlIHRodW1ibmFpbCB0byBnZXQgbW9yZSBhY2N1cmF0ZSBzaXplLgorICAgICAgICBwYXJhbS5zZXQoQ2FtZXJhUGFyYW1ldGVyczo6S0VZX0pQRUdfVEhVTUJOQUlMX1dJRFRILCAwKTsKKyAgICAgICAgcGFyYW0uc2V0KENhbWVyYVBhcmFtZXRlcnM6OktFWV9KUEVHX1RIVU1CTkFJTF9IRUlHSFQsIDApOwogICAgICAgICBjLT5zZXRQYXJhbWV0ZXJzKHBhcmFtLmZsYXR0ZW4oKSk7CiAKICAgICAgICAgY2MtPmNsZWFyU3RhdCgpOwogICAgICAgICBBU1NFUlQoYy0+dGFrZVBpY3R1cmUoKSA9PSBOT19FUlJPUik7CiAgICAgICAgIGNjLT53YWl0RGF0YShDQU1FUkFfTVNHX1JBV19JTUFHRSwgTUNhbWVyYUNsaWVudDo6RVEsIDEpOwotICAgICAgICBjYy0+YXNzZXJ0RGF0YVNpemUoQ0FNRVJBX01TR19SQVdfSU1BR0UsIE1DYW1lcmFDbGllbnQ6OkVRLCBwaXhlbHMqMy8yKTsKKyAgICAgICAgLy9jYy0+YXNzZXJ0RGF0YVNpemUoQ0FNRVJBX01TR19SQVdfSU1BR0UsIE1DYW1lcmFDbGllbnQ6OkVRLCBwaXhlbHMqMy8yKTsKICAgICAgICAgY2MtPndhaXREYXRhKENBTUVSQV9NU0dfQ09NUFJFU1NFRF9JTUFHRSwgTUNhbWVyYUNsaWVudDo6RVEsIDEpOwogICAgICAgICBjYy0+YXNzZXJ0RGF0YVNpemUoQ0FNRVJBX01TR19DT01QUkVTU0VEX0lNQUdFLCBNQ2FtZXJhQ2xpZW50OjpMVCwKICAgICAgICAgICAgICAgICBpbnQocGl4ZWxzICogcmF0ZSkpOwogICAgICAgICBjYy0+YXNzZXJ0RGF0YVNpemUoQ0FNRVJBX01TR19DT01QUkVTU0VEX0lNQUdFLCBNQ2FtZXJhQ2xpZW50OjpHVCwgMCk7CiAgICAgICAgIGNjLT5hc3NlcnROb3RpZnkoQ0FNRVJBX01TR19FUlJPUiwgTUNhbWVyYUNsaWVudDo6RVEsIDApOwotICAgICAgICB1c2xlZXAoMTAwMDAwKTsgIC8vIDEwMG1zCiAgICAgfQogCiAgICAgdm9pZCBydW4oKSB7Ci0gICAgICAgIGNoZWNrT25lUGljdHVyZSgyMDQ4LCAxNTM2KTsKLSAgICAgICAgY2hlY2tPbmVQaWN0dXJlKDE2MDAsIDEyMDApOwotICAgICAgICBjaGVja09uZVBpY3R1cmUoMTAyNCwgNzY4KTsKKyAgICAgICAgQ2FtZXJhUGFyYW1ldGVycyBwYXJhbShjLT5nZXRQYXJhbWV0ZXJzKCkpOworICAgICAgICBpbnQgdywgaDsKKyAgICAgICAgY29uc3QgY2hhciAqcyA9IHBhcmFtLmdldChDYW1lcmFQYXJhbWV0ZXJzOjpLRVlfU1VQUE9SVEVEX1BJQ1RVUkVfU0laRVMpOworICAgICAgICB3aGlsZSAoZ2V0TmV4dFNpemUoJnMsICZ3LCAmaCkpIHsKKyAgICAgICAgICAgIExPR0QoImNoZWNraW5nIHBpY3R1cmUgc2l6ZSAlZHglZCIsIHcsIGgpOworICAgICAgICAgICAgY2hlY2tPbmVQaWN0dXJlKHcsIGgpOworICAgICAgICB9CiAgICAgfQogfTsKIApAQCAtNzQ5LDYgKzgwNSw4IEBACiAKICAgICAgICAgLy8gVHJ5IGFsbCBmbGFnIGNvbWJpbmF0aW9ucy4KICAgICAgICAgZm9yIChpbnQgdiA9IDA7IHYgPCA4OyB2KyspIHsKKyAgICAgICAgICAgIExPR0QoIlRlc3RQcmV2aWV3Q2FsbGJhY2tGbGFnOiBmbGFnPSVkIiwgdik7CisgICAgICAgICAgICB1c2xlZXAoMTAwMDAwKTsgLy8gc2xlZXAgYSB3aGlsZSB0byBjbGVhciB0aGUgaW4tZmxpZ2h0IGNhbGxiYWNrcy4KICAgICAgICAgICAgIGNjLT5jbGVhclN0YXQoKTsKICAgICAgICAgICAgIGMtPnNldFByZXZpZXdDYWxsYmFja0ZsYWcodik7CiAgICAgICAgICAgICBBU1NFUlQoYy0+cHJldmlld0VuYWJsZWQoKSA9PSBmYWxzZSk7CkBAIC03ODEsNiArODM5LDcgQEAKICAgICAgICAgQVNTRVJUKGMtPnJlY29yZGluZ0VuYWJsZWQoKSA9PSB0cnVlKTsKICAgICAgICAgc2xlZXAoMik7CiAgICAgICAgIGMtPnN0b3BSZWNvcmRpbmcoKTsKKyAgICAgICAgdXNsZWVwKDEwMDAwMCk7IC8vIHNsZWVwIGEgd2hpbGUgdG8gY2xlYXIgdGhlIGluLWZsaWdodCBjYWxsYmFja3MuCiAgICAgICAgIGNjLT5zZXRSZWxlYXNlcihOVUxMKTsKICAgICAgICAgY2MtPmFzc2VydERhdGEoQ0FNRVJBX01TR19WSURFT19GUkFNRSwgTUNhbWVyYUNsaWVudDo6R0UsIDEwKTsKICAgICB9CkBAIC04MDYsOSArODY1LDEzIEBACiAgICAgfQogCiAgICAgdm9pZCBydW4oKSB7Ci0gICAgICAgIGNoZWNrT25lUGljdHVyZSg0ODAsIDMyMCk7Ci0gICAgICAgIGNoZWNrT25lUGljdHVyZSgzNTIsIDI4OCk7Ci0gICAgICAgIGNoZWNrT25lUGljdHVyZSgxNzYsIDE0NCk7CisgICAgICAgIENhbWVyYVBhcmFtZXRlcnMgcGFyYW0oYy0+Z2V0UGFyYW1ldGVycygpKTsKKyAgICAgICAgaW50IHcsIGg7CisgICAgICAgIGNvbnN0IGNoYXIgKnMgPSBwYXJhbS5nZXQoQ2FtZXJhUGFyYW1ldGVyczo6S0VZX1NVUFBPUlRFRF9QUkVWSUVXX1NJWkVTKTsKKyAgICAgICAgd2hpbGUgKGdldE5leHRTaXplKCZzLCAmdywgJmgpKSB7CisgICAgICAgICAgICBMT0dEKCJjaGVja2luZyBwcmV2aWV3IHNpemUgJWR4JWQiLCB3LCBoKTsKKyAgICAgICAgICAgIGNoZWNrT25lUGljdHVyZSh3LCBoKTsKKyAgICAgICAgfQogICAgIH0KIH07CiAKQEAgLTgyNywyMyArODkwLDMwIEBACiAgICAgSU5GTygiQ2FtZXJhU2VydmljZVRlc3Qgc3RhcnQiKTsKICAgICBnRXhlY3V0YWJsZSA9IGFyZ3ZbMF07CiAgICAgcnVuSG9sZGVyU2VydmljZSgpOworICAgIGludCBuID0gZ2V0TnVtYmVyT2ZDYW1lcmFzKCk7CisgICAgSU5GTygiJWQgQ2FtZXJhcyBhdmFpbGFibGUiLCBuKTsKIAotICAgIHRlc3RDb25uZWN0KCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmx1c2hDb21tYW5kcygpOwotICAgIHRlc3RBbGxvd0Nvbm5lY3RPbmNlT25seSgpOyAgICAgICAgICAgICAgICAgZmx1c2hDb21tYW5kcygpOwotICAgIHRlc3RSZWNvbm5lY3QoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmx1c2hDb21tYW5kcygpOwotICAgIHRlc3RMb2NrVW5sb2NrKCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmx1c2hDb21tYW5kcygpOwotICAgIHRlc3RSZWNvbm5lY3RGcm9tQW5vdGhlclByb2Nlc3MoKTsgICAgICAgICAgZmx1c2hDb21tYW5kcygpOworICAgIGZvciAoaW50IGlkID0gMDsgaWQgPCBuOyBpZCsrKSB7CisgICAgICAgIElORk8oIlRlc3RpbmcgY2FtZXJhICVkIiwgaWQpOworICAgICAgICB0ZXN0Q29ubmVjdChpZCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmx1c2hDb21tYW5kcygpOworICAgICAgICB0ZXN0QWxsb3dDb25uZWN0T25jZU9ubHkoaWQpOyAgICAgICAgICAgICAgICAgZmx1c2hDb21tYW5kcygpOworICAgICAgICB0ZXN0UmVjb25uZWN0KGlkKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmx1c2hDb21tYW5kcygpOworICAgICAgICB0ZXN0TG9ja1VubG9jayhpZCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmx1c2hDb21tYW5kcygpOworICAgICAgICB0ZXN0UmVjb25uZWN0RnJvbUFub3RoZXJQcm9jZXNzKGlkKTsgICAgICAgICAgZmx1c2hDb21tYW5kcygpOwogCi0gICAgUlVOKFRlc3RTZXRQcmV2aWV3RGlzcGxheSk7Ci0gICAgUlVOKFRlc3RTdGFydFByZXZpZXcpOwotICAgIFJVTihUZXN0U3RhcnRQcmV2aWV3V2l0aG91dERpc3BsYXkpOwotICAgIFJVTihUZXN0QXV0b0ZvY3VzKTsKLSAgICBSVU4oVGVzdFN0b3BQcmV2aWV3KTsKLSAgICBSVU4oVGVzdFRha2VQaWN0dXJlKTsKLSAgICBSVU4oVGVzdFRha2VNdWx0aXBsZVBpY3R1cmVzKTsKLSAgICBSVU4oVGVzdEdldFBhcmFtZXRlcnMpOwotICAgIFJVTihUZXN0UGljdHVyZVNpemUpOwotICAgIFJVTihUZXN0UHJldmlld0NhbGxiYWNrRmxhZyk7Ci0gICAgUlVOKFRlc3RSZWNvcmRpbmcpOwotICAgIFJVTihUZXN0UHJldmlld1NpemUpOworICAgICAgICBSVU4oVGVzdFNldFByZXZpZXdEaXNwbGF5LCBpZCk7CisgICAgICAgIFJVTihUZXN0U3RhcnRQcmV2aWV3LCBpZCk7CisgICAgICAgIFJVTihUZXN0U3RhcnRQcmV2aWV3V2l0aG91dERpc3BsYXksIGlkKTsKKyAgICAgICAgUlVOKFRlc3RBdXRvRm9jdXMsIGlkKTsKKyAgICAgICAgUlVOKFRlc3RTdG9wUHJldmlldywgaWQpOworICAgICAgICBSVU4oVGVzdFRha2VQaWN0dXJlLCBpZCk7CisgICAgICAgIFJVTihUZXN0VGFrZU11bHRpcGxlUGljdHVyZXMsIGlkKTsKKyAgICAgICAgUlVOKFRlc3RHZXRQYXJhbWV0ZXJzLCBpZCk7CisgICAgICAgIFJVTihUZXN0UGljdHVyZVNpemUsIGlkKTsKKyAgICAgICAgUlVOKFRlc3RQcmV2aWV3Q2FsbGJhY2tGbGFnLCBpZCk7CisgICAgICAgIFJVTihUZXN0UmVjb3JkaW5nLCBpZCk7CisgICAgICAgIFJVTihUZXN0UHJldmlld1NpemUsIGlkKTsKKyAgICB9CisKKyAgICBJTkZPKCJDYW1lcmFTZXJ2aWNlVGVzdCBmaW5pc2hlZCIpOwogfQpkaWZmIC0tZ2l0IGEvY21kcy9hbS9zcmMvY29tL2FuZHJvaWQvY29tbWFuZHMvYW0vQW0uamF2YSBiL2NtZHMvYW0vc3JjL2NvbS9hbmRyb2lkL2NvbW1hbmRzL2FtL0FtLmphdmEKaW5kZXggNzM2YWMwOC4uMzAxODgzZiAxMDA2NDQKLS0tIGEvY21kcy9hbS9zcmMvY29tL2FuZHJvaWQvY29tbWFuZHMvYW0vQW0uamF2YQorKysgYi9jbWRzL2FtL3NyYy9jb20vYW5kcm9pZC9jb21tYW5kcy9hbS9BbS5qYXZhCkBAIC0yMDUsNyArMjA1LDcgQEAKICAgICAgICAgU3RyaW5nIHVyaSA9IG5leHRBcmcoKTsKICAgICAgICAgaWYgKHVyaSAhPSBudWxsKSB7CiAgICAgICAgICAgICBJbnRlbnQgb2xkSW50ZW50ID0gaW50ZW50OwotICAgICAgICAgICAgaW50ZW50ID0gSW50ZW50LmdldEludGVudCh1cmkpOworICAgICAgICAgICAgaW50ZW50ID0gSW50ZW50LnBhcnNlVXJpKHVyaSwgMCk7CiAgICAgICAgICAgICBpZiAob2xkSW50ZW50LmdldEFjdGlvbigpICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICBpbnRlbnQuc2V0QWN0aW9uKG9sZEludGVudC5nZXRBY3Rpb24oKSk7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9jbWRzL2JtZ3Ivc3JjL2NvbS9hbmRyb2lkL2NvbW1hbmRzL2JtZ3IvQm1nci5qYXZhIGIvY21kcy9ibWdyL3NyYy9jb20vYW5kcm9pZC9jb21tYW5kcy9ibWdyL0JtZ3IuamF2YQppbmRleCA4MjYzZTc1Li4zOWIzYTIwIDEwMDY0NAotLS0gYS9jbWRzL2JtZ3Ivc3JjL2NvbS9hbmRyb2lkL2NvbW1hbmRzL2JtZ3IvQm1nci5qYXZhCisrKyBiL2NtZHMvYm1nci9zcmMvY29tL2FuZHJvaWQvY29tbWFuZHMvYm1nci9CbWdyLmphdmEKQEAgLTE3NSw2ICsxNzUsMTEgQEAKICAgICBwcml2YXRlIHZvaWQgZG9UcmFuc3BvcnQoKSB7CiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBTdHJpbmcgd2hpY2ggPSBuZXh0QXJnKCk7CisgICAgICAgICAgICBpZiAod2hpY2ggPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHNob3dVc2FnZSgpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgU3RyaW5nIG9sZCA9IG1CbWdyLnNlbGVjdEJhY2t1cFRyYW5zcG9ydCh3aGljaCk7CiAgICAgICAgICAgICBpZiAob2xkID09IG51bGwpIHsKICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlVua25vd24gdHJhbnNwb3J0ICciICsgd2hpY2gKQEAgLTMxOCw2ICszMjMsMTEgQEAKIAogICAgIHByaXZhdGUgdm9pZCBkb1Jlc3RvcmUoKSB7CiAgICAgICAgIFN0cmluZyBhcmcgPSBuZXh0QXJnKCk7CisgICAgICAgIGlmIChhcmcgPT0gbnVsbCkgeworICAgICAgICAgICAgc2hvd1VzYWdlKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICBpZiAoYXJnLmluZGV4T2YoJy4nKSA+PSAwKSB7CiAgICAgICAgICAgICAvLyBpdCdzIGEgcGFja2FnZSBuYW1lCiAgICAgICAgICAgICBkb1Jlc3RvcmVQYWNrYWdlKGFyZyk7CmRpZmYgLS1naXQgYS9jbWRzL2Jvb3RhbmltYXRpb24vQm9vdEFuaW1hdGlvbi5jcHAgYi9jbWRzL2Jvb3RhbmltYXRpb24vQm9vdEFuaW1hdGlvbi5jcHAKaW5kZXggYWMyZWIwZC4uN2E3ZjhlZCAxMDA2NDQKLS0tIGEvY21kcy9ib290YW5pbWF0aW9uL0Jvb3RBbmltYXRpb24uY3BwCisrKyBiL2NtZHMvYm9vdGFuaW1hdGlvbi9Cb290QW5pbWF0aW9uLmNwcApAQCAtMzgsNyArMzgsNyBAQAogI2luY2x1ZGUgPHVpL0VHTFV0aWxzLmg+CiAKICNpbmNsdWRlIDxzdXJmYWNlZmxpbmdlci9JU3VyZmFjZUNvbXBvc2VyLmg+Ci0jaW5jbHVkZSA8c3VyZmFjZWZsaW5nZXIvSVN1cmZhY2VGbGluZ2VyQ2xpZW50Lmg+CisjaW5jbHVkZSA8c3VyZmFjZWZsaW5nZXIvSVN1cmZhY2VDb21wb3NlckNsaWVudC5oPgogCiAjaW5jbHVkZSA8Y29yZS9Ta0JpdG1hcC5oPgogI2luY2x1ZGUgPGltYWdlcy9Ta0ltYWdlRGVjb2Rlci5oPgpkaWZmIC0tZ2l0IGEvY21kcy9pbnB1dC9pbnB1dCBiL2NtZHMvaW5wdXQvaW5wdXQKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQpkaWZmIC0tZ2l0IGEvY21kcy9pbnN0YWxsZC9jb21tYW5kcy5jIGIvY21kcy9pbnN0YWxsZC9jb21tYW5kcy5jCmluZGV4IDQxZjA3MGMuLmI4YmEzZjYgMTAwNjQ0Ci0tLSBhL2NtZHMvaW5zdGFsbGQvY29tbWFuZHMuYworKysgYi9jbWRzL2luc3RhbGxkL2NvbW1hbmRzLmMKQEAgLTE2LDcgKzE2LDcgQEAKIAogI2luY2x1ZGUgImluc3RhbGxkLmgiCiAKLWludCBpbnN0YWxsKGNvbnN0IGNoYXIgKnBrZ25hbWUsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkKQoraW50IGluc3RhbGwoY29uc3QgY2hhciAqcGtnbmFtZSwgaW50IGVuY3J5cHRlZF9mc19mbGFnLCB1aWRfdCB1aWQsIGdpZF90IGdpZCkKIHsKICAgICBjaGFyIHBrZ2RpcltQS0dfUEFUSF9NQVhdOwogICAgIGNoYXIgbGliZGlyW1BLR19QQVRIX01BWF07CkBAIC0yNywxMSArMjcsMTcgQEAKICAgICAgICAgCiAgICAgfQogCi0gICAgaWYgKGNyZWF0ZV9wa2dfcGF0aChwa2dkaXIsIFBLR19ESVJfUFJFRklYLCBwa2duYW1lLCBQS0dfRElSX1BPU1RGSVgpKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgaWYgKGNyZWF0ZV9wa2dfcGF0aChsaWJkaXIsIFBLR19MSUJfUFJFRklYLCBwa2duYW1lLCBQS0dfTElCX1BPU1RGSVgpKQotICAgICAgICByZXR1cm4gLTE7Ci0KKyAgICBpZiAoZW5jcnlwdGVkX2ZzX2ZsYWcgPT0gVVNFX1VORU5DUllQVEVEX0ZTKSB7CisgICAgICAgIGlmIChjcmVhdGVfcGtnX3BhdGgocGtnZGlyLCBQS0dfRElSX1BSRUZJWCwgcGtnbmFtZSwgUEtHX0RJUl9QT1NURklYKSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaWYgKGNyZWF0ZV9wa2dfcGF0aChsaWJkaXIsIFBLR19MSUJfUFJFRklYLCBwa2duYW1lLCBQS0dfTElCX1BPU1RGSVgpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChjcmVhdGVfcGtnX3BhdGgocGtnZGlyLCBQS0dfU0VDX0RJUl9QUkVGSVgsIHBrZ25hbWUsIFBLR19ESVJfUE9TVEZJWCkpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGlmIChjcmVhdGVfcGtnX3BhdGgobGliZGlyLCBQS0dfU0VDX0xJQl9QUkVGSVgsIHBrZ25hbWUsIFBLR19MSUJfUE9TVEZJWCkpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQogCiAgICAgaWYgKG1rZGlyKHBrZ2RpciwgMDc1MSkgPCAwKSB7CiAgICAgICAgIExPR0UoImNhbm5vdCBjcmVhdGUgZGlyICclcyc6ICVzXG4iLCBwa2dkaXIsIHN0cmVycm9yKGVycm5vKSk7CkBAIC01NiwyNyArNjIsMzggQEAKICAgICByZXR1cm4gMDsKIH0KIAotaW50IHVuaW5zdGFsbChjb25zdCBjaGFyICpwa2duYW1lKQoraW50IHVuaW5zdGFsbChjb25zdCBjaGFyICpwa2duYW1lLCBpbnQgZW5jcnlwdGVkX2ZzX2ZsYWcpCiB7CiAgICAgY2hhciBwa2dkaXJbUEtHX1BBVEhfTUFYXTsKIAotICAgIGlmIChjcmVhdGVfcGtnX3BhdGgocGtnZGlyLCBQS0dfRElSX1BSRUZJWCwgcGtnbmFtZSwgUEtHX0RJUl9QT1NURklYKSkKLSAgICAgICAgcmV0dXJuIC0xOworICAgIGlmIChlbmNyeXB0ZWRfZnNfZmxhZyA9PSBVU0VfVU5FTkNSWVBURURfRlMpIHsKKyAgICAgICAgaWYgKGNyZWF0ZV9wa2dfcGF0aChwa2dkaXIsIFBLR19ESVJfUFJFRklYLCBwa2duYW1lLCBQS0dfRElSX1BPU1RGSVgpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChjcmVhdGVfcGtnX3BhdGgocGtnZGlyLCBQS0dfU0VDX0RJUl9QUkVGSVgsIHBrZ25hbWUsIFBLR19ESVJfUE9TVEZJWCkpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQogCiAgICAgICAgIC8qIGRlbGV0ZSBjb250ZW50cyBBTkQgZGlyZWN0b3J5LCBubyBleGNlcHRpb25zICovCiAgICAgcmV0dXJuIGRlbGV0ZV9kaXJfY29udGVudHMocGtnZGlyLCAxLCAwKTsKIH0KIAotaW50IHJlbmFtZXBrZyhjb25zdCBjaGFyICpvbGRwa2duYW1lLCBjb25zdCBjaGFyICpuZXdwa2duYW1lKQoraW50IHJlbmFtZXBrZyhjb25zdCBjaGFyICpvbGRwa2duYW1lLCBjb25zdCBjaGFyICpuZXdwa2duYW1lLCBpbnQgZW5jcnlwdGVkX2ZzX2ZsYWcpCiB7CiAgICAgY2hhciBvbGRwa2dkaXJbUEtHX1BBVEhfTUFYXTsKICAgICBjaGFyIG5ld3BrZ2RpcltQS0dfUEFUSF9NQVhdOwogCi0gICAgaWYgKGNyZWF0ZV9wa2dfcGF0aChvbGRwa2dkaXIsIFBLR19ESVJfUFJFRklYLCBvbGRwa2duYW1lLCBQS0dfRElSX1BPU1RGSVgpKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgaWYgKGNyZWF0ZV9wa2dfcGF0aChuZXdwa2dkaXIsIFBLR19ESVJfUFJFRklYLCBuZXdwa2duYW1lLCBQS0dfRElSX1BPU1RGSVgpKQotICAgICAgICByZXR1cm4gLTE7Ci0KKyAgICBpZiAoZW5jcnlwdGVkX2ZzX2ZsYWcgPT0gVVNFX1VORU5DUllQVEVEX0ZTKSB7CisgICAgICAgIGlmIChjcmVhdGVfcGtnX3BhdGgob2xkcGtnZGlyLCBQS0dfRElSX1BSRUZJWCwgb2xkcGtnbmFtZSwgUEtHX0RJUl9QT1NURklYKSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaWYgKGNyZWF0ZV9wa2dfcGF0aChuZXdwa2dkaXIsIFBLR19ESVJfUFJFRklYLCBuZXdwa2duYW1lLCBQS0dfRElSX1BPU1RGSVgpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChjcmVhdGVfcGtnX3BhdGgob2xkcGtnZGlyLCBQS0dfU0VDX0RJUl9QUkVGSVgsIG9sZHBrZ25hbWUsIFBLR19ESVJfUE9TVEZJWCkpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGlmIChjcmVhdGVfcGtnX3BhdGgobmV3cGtnZGlyLCBQS0dfU0VDX0RJUl9QUkVGSVgsIG5ld3BrZ25hbWUsIFBLR19ESVJfUE9TVEZJWCkpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQogCiAgICAgaWYgKHJlbmFtZShvbGRwa2dkaXIsIG5ld3BrZ2RpcikgPCAwKSB7CiAgICAgICAgIExPR0UoImNhbm5vdCByZW5hbWUgZGlyICclcycgdG8gJyVzJzogJXNcbiIsIG9sZHBrZ2RpciwgbmV3cGtnZGlyLCBzdHJlcnJvcihlcnJubykpOwpAQCAtODUsMjkgKzEwMiw0MSBAQAogICAgIHJldHVybiAwOwogfQogCi1pbnQgZGVsZXRlX3VzZXJfZGF0YShjb25zdCBjaGFyICpwa2duYW1lKQoraW50IGRlbGV0ZV91c2VyX2RhdGEoY29uc3QgY2hhciAqcGtnbmFtZSwgaW50IGVuY3J5cHRlZF9mc19mbGFnKQogewogICAgIGNoYXIgcGtnZGlyW1BLR19QQVRIX01BWF07CiAKLSAgICBpZiAoY3JlYXRlX3BrZ19wYXRoKHBrZ2RpciwgUEtHX0RJUl9QUkVGSVgsIHBrZ25hbWUsIFBLR19ESVJfUE9TVEZJWCkpCi0gICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAoZW5jcnlwdGVkX2ZzX2ZsYWcgPT0gVVNFX1VORU5DUllQVEVEX0ZTKSB7CisgICAgICAgIGlmIChjcmVhdGVfcGtnX3BhdGgocGtnZGlyLCBQS0dfRElSX1BSRUZJWCwgcGtnbmFtZSwgUEtHX0RJUl9QT1NURklYKSkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoY3JlYXRlX3BrZ19wYXRoKHBrZ2RpciwgUEtHX1NFQ19ESVJfUFJFRklYLCBwa2duYW1lLCBQS0dfRElSX1BPU1RGSVgpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KIAogICAgICAgICAvKiBkZWxldGUgY29udGVudHMsIGV4Y2x1ZGluZyAibGliIiwgYnV0IG5vdCB0aGUgZGlyZWN0b3J5IGl0c2VsZiAqLwogICAgIHJldHVybiBkZWxldGVfZGlyX2NvbnRlbnRzKHBrZ2RpciwgMCwgImxpYiIpOwogfQogCi1pbnQgZGVsZXRlX2NhY2hlKGNvbnN0IGNoYXIgKnBrZ25hbWUpCitpbnQgZGVsZXRlX2NhY2hlKGNvbnN0IGNoYXIgKnBrZ25hbWUsIGludCBlbmNyeXB0ZWRfZnNfZmxhZykKIHsKICAgICBjaGFyIGNhY2hlZGlyW1BLR19QQVRIX01BWF07CiAKLSAgICBpZiAoY3JlYXRlX3BrZ19wYXRoKGNhY2hlZGlyLCBDQUNIRV9ESVJfUFJFRklYLCBwa2duYW1lLCBDQUNIRV9ESVJfUE9TVEZJWCkpCi0gICAgICAgIHJldHVybiAtMTsKLQorICAgIGlmIChlbmNyeXB0ZWRfZnNfZmxhZyA9PSBVU0VfVU5FTkNSWVBURURfRlMpIHsKKyAgICAgICAgaWYgKGNyZWF0ZV9wa2dfcGF0aChjYWNoZWRpciwgQ0FDSEVfRElSX1BSRUZJWCwgcGtnbmFtZSwgQ0FDSEVfRElSX1BPU1RGSVgpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChjcmVhdGVfcGtnX3BhdGgoY2FjaGVkaXIsIENBQ0hFX1NFQ19ESVJfUFJFRklYLCBwa2duYW1lLCBDQUNIRV9ESVJfUE9TVEZJWCkpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgfQogCiAgICAgICAgIC8qIGRlbGV0ZSBjb250ZW50cywgbm90IHRoZSBkaXJlY3RvcnksIG5vIGV4Y2VwdGlvbnMgKi8KICAgICByZXR1cm4gZGVsZXRlX2Rpcl9jb250ZW50cyhjYWNoZWRpciwgMCwgMCk7CiB9CiAKKy8qIFRPRE8ob2FtKTogZGVwZW5kaW5nIG9uIHVzZSBjYXNlIChlY3J5cHRmcyBvciBkbWNyeXB0KQorICogY2hhbmdlIGltcGxlbWVudGF0aW9uCisgKi8KIHN0YXRpYyBpbnQgZGlza19mcmVlKCkKIHsKICAgICBzdHJ1Y3Qgc3RhdGZzIHNmczsKQEAgLTEzOSw2ICsxNjgsMzkgQEAKICAgICBMT0dJKCJmcmVlX2NhY2hlKCVkKSBhdmFpbCAlZFxuIiwgZnJlZV9zaXplLCBhdmFpbCk7CiAgICAgaWYgKGF2YWlsID49IGZyZWVfc2l6ZSkgcmV0dXJuIDA7CiAKKyAgICAvKiBGaXJzdCB0cnkgZW5jcnlwdGVkIGRpciAqLworICAgIGQgPSBvcGVuZGlyKFBLR19TRUNfRElSX1BSRUZJWCk7CisgICAgaWYgKGQgPT0gTlVMTCkgeworICAgICAgICBMT0dFKCJjYW5ub3Qgb3BlbiAlc1xuIiwgUEtHX1NFQ19ESVJfUFJFRklYKTsKKyAgICB9IGVsc2UgeworICAgICAgICBkZmQgPSBkaXJmZChkKTsKKworICAgICAgICB3aGlsZSAoKGRlID0gcmVhZGRpcihkKSkpIHsKKyAgICAgICAgICAgaWYgKGRlLT5kX3R5cGUgIT0gRFRfRElSKSBjb250aW51ZTsKKyAgICAgICAgICAgbmFtZSA9IGRlLT5kX25hbWU7CisKKyAgICAgICAgICAgIC8qIGFsd2F5cyBza2lwICIuIiBhbmQgIi4uIiAqLworICAgICAgICAgICAgaWYgKG5hbWVbMF0gPT0gJy4nKSB7CisgICAgICAgICAgICAgICAgaWYgKG5hbWVbMV0gPT0gMCkgY29udGludWU7CisgICAgICAgICAgICAgICAgaWYgKChuYW1lWzFdID09ICcuJykgJiYgKG5hbWVbMl0gPT0gMCkpIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzdWJmZCA9IG9wZW5hdChkZmQsIG5hbWUsIE9fUkRPTkxZIHwgT19ESVJFQ1RPUlkpOworICAgICAgICAgICAgaWYgKHN1YmZkIDwgMCkgY29udGludWU7CisKKyAgICAgICAgICAgIGRlbGV0ZV9kaXJfY29udGVudHNfZmQoc3ViZmQsICJjYWNoZSIpOworICAgICAgICAgICAgY2xvc2Uoc3ViZmQpOworCisgICAgICAgICAgICBhdmFpbCA9IGRpc2tfZnJlZSgpOworICAgICAgICAgICAgaWYgKGF2YWlsID49IGZyZWVfc2l6ZSkgeworICAgICAgICAgICAgICAgIGNsb3NlZGlyKGQpOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNsb3NlZGlyKGQpOworICAgIH0KKworICAgIC8qIE5leHQgdHJ5IHVuZW5jcnlwdGVkIGRpci4uLiAqLwogICAgIGQgPSBvcGVuZGlyKFBLR19ESVJfUFJFRklYKTsKICAgICBpZiAoZCA9PSBOVUxMKSB7CiAgICAgICAgIExPR0UoImNhbm5vdCBvcGVuICVzXG4iLCBQS0dfRElSX1BSRUZJWCk7CkBAIC0zMTQsNyArMzc2LDcgQEAKIAogaW50IGdldF9zaXplKGNvbnN0IGNoYXIgKnBrZ25hbWUsIGNvbnN0IGNoYXIgKmFwa3BhdGgsCiAgICAgICAgICAgICAgY29uc3QgY2hhciAqZndkbG9ja19hcGtwYXRoLAotICAgICAgICAgICAgIGludCAqX2NvZGVzaXplLCBpbnQgKl9kYXRhc2l6ZSwgaW50ICpfY2FjaGVzaXplKQorICAgICAgICAgICAgIGludCAqX2NvZGVzaXplLCBpbnQgKl9kYXRhc2l6ZSwgaW50ICpfY2FjaGVzaXplLCBpbnQgZW5jcnlwdGVkX2ZzX2ZsYWcpCiB7CiAgICAgRElSICpkOwogICAgIGludCBkZmQ7CkBAIC0zNDksOCArNDExLDE0IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoY3JlYXRlX3BrZ19wYXRoKHBhdGgsIFBLR19ESVJfUFJFRklYLCBwa2duYW1lLCBQS0dfRElSX1BPU1RGSVgpKSB7Ci0gICAgICAgIGdvdG8gZG9uZTsKKyAgICBpZiAoZW5jcnlwdGVkX2ZzX2ZsYWcgPT0gMCkgeworICAgICAgICBpZiAoY3JlYXRlX3BrZ19wYXRoKHBhdGgsIFBLR19ESVJfUFJFRklYLCBwa2duYW1lLCBQS0dfRElSX1BPU1RGSVgpKSB7CisgICAgICAgICAgICBnb3RvIGRvbmU7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoY3JlYXRlX3BrZ19wYXRoKHBhdGgsIFBLR19TRUNfRElSX1BSRUZJWCwgcGtnbmFtZSwgUEtHX0RJUl9QT1NURklYKSkgeworICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICB9CiAgICAgfQogCiAgICAgZCA9IG9wZW5kaXIocGF0aCk7CmRpZmYgLS1naXQgYS9jbWRzL2luc3RhbGxkL2luc3RhbGxkLmMgYi9jbWRzL2luc3RhbGxkL2luc3RhbGxkLmMKaW5kZXggZjZjYTk5OC4uODgyYzQ5MyAxMDA2NDQKLS0tIGEvY21kcy9pbnN0YWxsZC9pbnN0YWxsZC5jCisrKyBiL2NtZHMvaW5zdGFsbGQvaW5zdGFsbGQuYwpAQCAtMjksNyArMjksNyBAQAogCiBzdGF0aWMgaW50IGRvX2luc3RhbGwoY2hhciAqKmFyZywgY2hhciByZXBseVtSRVBMWV9NQVhdKQogewotICAgIHJldHVybiBpbnN0YWxsKGFyZ1swXSwgYXRvaShhcmdbMV0pLCBhdG9pKGFyZ1syXSkpOyAvKiBwa2duYW1lLCB1aWQsIGdpZCAqLworICAgIHJldHVybiBpbnN0YWxsKGFyZ1swXSwgYXRvaShhcmdbMV0pLCBhdG9pKGFyZ1syXSksIGF0b2koYXJnWzNdKSk7IC8qIHBrZ25hbWUsIHVpZCwgZ2lkICovCiB9CiAKIHN0YXRpYyBpbnQgZG9fZGV4b3B0KGNoYXIgKiphcmcsIGNoYXIgcmVwbHlbUkVQTFlfTUFYXSkKQEAgLTUwLDEyICs1MCwxMiBAQAogCiBzdGF0aWMgaW50IGRvX3JlbW92ZShjaGFyICoqYXJnLCBjaGFyIHJlcGx5W1JFUExZX01BWF0pCiB7Ci0gICAgcmV0dXJuIHVuaW5zdGFsbChhcmdbMF0pOyAvKiBwa2duYW1lICovCisgICAgcmV0dXJuIHVuaW5zdGFsbChhcmdbMF0sIGF0b2koYXJnWzFdKSk7IC8qIHBrZ25hbWUgKi8KIH0KIAogc3RhdGljIGludCBkb19yZW5hbWUoY2hhciAqKmFyZywgY2hhciByZXBseVtSRVBMWV9NQVhdKQogewotICAgIHJldHVybiByZW5hbWVwa2coYXJnWzBdLCBhcmdbMV0pOyAvKiBvbGRwa2duYW1lLCBuZXdwa2duYW1lICovCisgICAgcmV0dXJuIHJlbmFtZXBrZyhhcmdbMF0sIGFyZ1sxXSwgYXRvaShhcmdbMl0pKTsgLyogb2xkcGtnbmFtZSwgbmV3cGtnbmFtZSAqLwogfQogCiBzdGF0aWMgaW50IGRvX2ZyZWVfY2FjaGUoY2hhciAqKmFyZywgY2hhciByZXBseVtSRVBMWV9NQVhdKSAvKiBUT0RPIGludDpmcmVlX3NpemUgKi8KQEAgLTY1LDcgKzY1LDcgQEAKIAogc3RhdGljIGludCBkb19ybV9jYWNoZShjaGFyICoqYXJnLCBjaGFyIHJlcGx5W1JFUExZX01BWF0pCiB7Ci0gICAgcmV0dXJuIGRlbGV0ZV9jYWNoZShhcmdbMF0pOyAvKiBwa2duYW1lICovCisgICAgcmV0dXJuIGRlbGV0ZV9jYWNoZShhcmdbMF0sIGF0b2koYXJnWzFdKSk7IC8qIHBrZ25hbWUgKi8KIH0KIAogc3RhdGljIGludCBkb19wcm90ZWN0KGNoYXIgKiphcmcsIGNoYXIgcmVwbHlbUkVQTFlfTUFYXSkKQEAgLTgxLDcgKzgxLDcgQEAKICAgICBpbnQgcmVzID0gMDsKIAogICAgICAgICAvKiBwa2dkaXIsIGFwa3BhdGggKi8KLSAgICByZXMgPSBnZXRfc2l6ZShhcmdbMF0sIGFyZ1sxXSwgYXJnWzJdLCAmY29kZXNpemUsICZkYXRhc2l6ZSwgJmNhY2hlc2l6ZSk7CisgICAgcmVzID0gZ2V0X3NpemUoYXJnWzBdLCBhcmdbMV0sIGFyZ1syXSwgJmNvZGVzaXplLCAmZGF0YXNpemUsICZjYWNoZXNpemUsIGF0b2koYXJnWzNdKSk7CiAKICAgICBzcHJpbnRmKHJlcGx5LCIlZCAlZCAlZCIsIGNvZGVzaXplLCBkYXRhc2l6ZSwgY2FjaGVzaXplKTsKICAgICByZXR1cm4gcmVzOwpAQCAtODksNyArODksNyBAQAogCiBzdGF0aWMgaW50IGRvX3JtX3VzZXJfZGF0YShjaGFyICoqYXJnLCBjaGFyIHJlcGx5W1JFUExZX01BWF0pCiB7Ci0gICAgcmV0dXJuIGRlbGV0ZV91c2VyX2RhdGEoYXJnWzBdKTsgLyogcGtnbmFtZSAqLworICAgIHJldHVybiBkZWxldGVfdXNlcl9kYXRhKGFyZ1swXSwgYXRvaShhcmdbMV0pKTsgLyogcGtnbmFtZSAqLwogfQogCiBzdGF0aWMgaW50IGRvX21vdmVmaWxlcyhjaGFyICoqYXJnLCBjaGFyIHJlcGx5W1JFUExZX01BWF0pCkBAIC0xMDUsMTcgKzEwNSwxNyBAQAogCiBzdHJ1Y3QgY21kaW5mbyBjbWRzW10gPSB7CiAgICAgeyAicGluZyIsICAgICAgICAgICAgICAgICAwLCBkb19waW5nIH0sCi0gICAgeyAiaW5zdGFsbCIsICAgICAgICAgICAgICAzLCBkb19pbnN0YWxsIH0sCisgICAgeyAiaW5zdGFsbCIsICAgICAgICAgICAgICA0LCBkb19pbnN0YWxsIH0sCiAgICAgeyAiZGV4b3B0IiwgICAgICAgICAgICAgICAzLCBkb19kZXhvcHQgfSwKICAgICB7ICJtb3ZlZGV4IiwgICAgICAgICAgICAgIDIsIGRvX21vdmVfZGV4IH0sCiAgICAgeyAicm1kZXgiLCAgICAgICAgICAgICAgICAxLCBkb19ybV9kZXggfSwKLSAgICB7ICJyZW1vdmUiLCAgICAgICAgICAgICAgIDEsIGRvX3JlbW92ZSB9LAotICAgIHsgInJlbmFtZSIsICAgICAgICAgICAgICAgMiwgZG9fcmVuYW1lIH0sCisgICAgeyAicmVtb3ZlIiwgICAgICAgICAgICAgICAyLCBkb19yZW1vdmUgfSwKKyAgICB7ICJyZW5hbWUiLCAgICAgICAgICAgICAgIDMsIGRvX3JlbmFtZSB9LAogICAgIHsgImZyZWVjYWNoZSIsICAgICAgICAgICAgMSwgZG9fZnJlZV9jYWNoZSB9LAotICAgIHsgInJtY2FjaGUiLCAgICAgICAgICAgICAgMSwgZG9fcm1fY2FjaGUgfSwKKyAgICB7ICJybWNhY2hlIiwgICAgICAgICAgICAgIDIsIGRvX3JtX2NhY2hlIH0sCiAgICAgeyAicHJvdGVjdCIsICAgICAgICAgICAgICAyLCBkb19wcm90ZWN0IH0sCi0gICAgeyAiZ2V0c2l6ZSIsICAgICAgICAgICAgICAzLCBkb19nZXRfc2l6ZSB9LAotICAgIHsgInJtdXNlcmRhdGEiLCAgICAgICAgICAgMSwgZG9fcm1fdXNlcl9kYXRhIH0sCisgICAgeyAiZ2V0c2l6ZSIsICAgICAgICAgICAgICA0LCBkb19nZXRfc2l6ZSB9LAorICAgIHsgInJtdXNlcmRhdGEiLCAgICAgICAgICAgMiwgZG9fcm1fdXNlcl9kYXRhIH0sCiAgICAgeyAibW92ZWZpbGVzIiwgICAgICAgICAgICAwLCBkb19tb3ZlZmlsZXMgfSwKIH07CiAKZGlmZiAtLWdpdCBhL2NtZHMvaW5zdGFsbGQvaW5zdGFsbGQuaCBiL2NtZHMvaW5zdGFsbGQvaW5zdGFsbGQuaAppbmRleCBjZmNkYjk4Li44ZTRhZGIxIDEwMDY0NAotLS0gYS9jbWRzL2luc3RhbGxkL2luc3RhbGxkLmgKKysrIGIvY21kcy9pbnN0YWxsZC9pbnN0YWxsZC5oCkBAIC00OCwxNiArNDgsMjMgQEAKIC8qIGVsZW1lbnRzIGNvbWJpbmVkIHdpdGggYSB2YWxpZCBwYWNrYWdlIG5hbWUgdG8gZm9ybSBwYXRocyAqLwogCiAjZGVmaW5lIFBLR19ESVJfUFJFRklYICAgICAgICAgIi9kYXRhL2RhdGEvIgorI2RlZmluZSBQS0dfU0VDX0RJUl9QUkVGSVggICAgICIvZGF0YS9zZWN1cmUvZGF0YS8iCiAjZGVmaW5lIFBLR19ESVJfUE9TVEZJWCAgICAgICAgIiIKIAogI2RlZmluZSBQS0dfTElCX1BSRUZJWCAgICAgICAgICIvZGF0YS9kYXRhLyIKKyNkZWZpbmUgUEtHX1NFQ19MSUJfUFJFRklYICAgICAiL2RhdGEvc2VjdXJlL2RhdGEvIgogI2RlZmluZSBQS0dfTElCX1BPU1RGSVggICAgICAgICIvbGliIgogCiAjZGVmaW5lIENBQ0hFX0RJUl9QUkVGSVggICAgICAgIi9kYXRhL2RhdGEvIgorI2RlZmluZSBDQUNIRV9TRUNfRElSX1BSRUZJWCAgICIvZGF0YS9zZWN1cmUvZGF0YS8iCiAjZGVmaW5lIENBQ0hFX0RJUl9QT1NURklYICAgICAgIi9jYWNoZSIKIAogI2RlZmluZSBBUEtfRElSX1BSRUZJWCAgICAgICAgICIvZGF0YS9hcHAvIgogCisvKiBFbmNyeXB0ZWQgRmlsZSBTWXN0ZW1zIGNvbnN0YW50cyAqLworI2RlZmluZSBVU0VfRU5DUllQVEVEX0ZTICAgICAgIDEKKyNkZWZpbmUgVVNFX1VORU5DUllQVEVEX0ZTICAgICAwCisKIC8qIG90aGVyIGhhbmR5IGNvbnN0YW50cyAqLwogCiAjZGVmaW5lIFBST1RFQ1RFRF9ESVJfUFJFRklYICAiL2RhdGEvYXBwLXByaXZhdGUvIgpAQCAtODksMTYgKzk2LDE2IEBACiAKIC8qIGNvbW1hbmRzLmMgKi8KIAotaW50IGluc3RhbGwoY29uc3QgY2hhciAqcGtnbmFtZSwgdWlkX3QgdWlkLCBnaWRfdCBnaWQpOwotaW50IHVuaW5zdGFsbChjb25zdCBjaGFyICpwa2duYW1lKTsKLWludCByZW5hbWVwa2coY29uc3QgY2hhciAqb2xkcGtnbmFtZSwgY29uc3QgY2hhciAqbmV3cGtnbmFtZSk7Ci1pbnQgZGVsZXRlX3VzZXJfZGF0YShjb25zdCBjaGFyICpwa2duYW1lKTsKLWludCBkZWxldGVfY2FjaGUoY29uc3QgY2hhciAqcGtnbmFtZSk7CitpbnQgaW5zdGFsbChjb25zdCBjaGFyICpwa2duYW1lLCBpbnQgZW5jcnlwdGVkX2ZzX2ZsYWcsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkKTsKK2ludCB1bmluc3RhbGwoY29uc3QgY2hhciAqcGtnbmFtZSwgaW50IGVuY3J5cHRlZF9mc19mbGFnKTsKK2ludCByZW5hbWVwa2coY29uc3QgY2hhciAqb2xkcGtnbmFtZSwgY29uc3QgY2hhciAqbmV3cGtnbmFtZSwgaW50IGVuY3J5cHRlZF9mc19mbGFnKTsKK2ludCBkZWxldGVfdXNlcl9kYXRhKGNvbnN0IGNoYXIgKnBrZ25hbWUsIGludCBlbmNyeXB0ZWRfZnNfZmxhZyk7CitpbnQgZGVsZXRlX2NhY2hlKGNvbnN0IGNoYXIgKnBrZ25hbWUsIGludCBlbmNyeXB0ZWRfZnNfZmxhZyk7CiBpbnQgbW92ZV9kZXgoY29uc3QgY2hhciAqc3JjLCBjb25zdCBjaGFyICpkc3QpOwogaW50IHJtX2RleChjb25zdCBjaGFyICpwYXRoKTsKIGludCBwcm90ZWN0KGNoYXIgKnBrZ25hbWUsIGdpZF90IGdpZCk7CiBpbnQgZ2V0X3NpemUoY29uc3QgY2hhciAqcGtnbmFtZSwgY29uc3QgY2hhciAqYXBrcGF0aCwgY29uc3QgY2hhciAqZndkbG9ja19hcGtwYXRoLAotICAgICAgICAgICAgIGludCAqY29kZXNpemUsIGludCAqZGF0YXNpemUsIGludCAqY2FjaGVzaXplKTsKKyAgICAgICAgICAgICBpbnQgKmNvZGVzaXplLCBpbnQgKmRhdGFzaXplLCBpbnQgKmNhY2hlc2l6ZSwgaW50IGVuY3J5cHRlZF9mc19mbGFnKTsKIGludCBmcmVlX2NhY2hlKGludCBmcmVlX3NpemUpOwogaW50IGRleG9wdChjb25zdCBjaGFyICphcGtfcGF0aCwgdWlkX3QgdWlkLCBpbnQgaXNfcHVibGljKTsKIGludCBtb3ZlZmlsZXMoKTsKZGlmZiAtLWdpdCBhL2NtZHMvc2VydmljZW1hbmFnZXIvYmN0ZXN0LmMgYi9jbWRzL3NlcnZpY2VtYW5hZ2VyL2JjdGVzdC5jCmluZGV4IDZkZWU4MTYuLmZmNWFjZWQgMTAwNjQ0Ci0tLSBhL2NtZHMvc2VydmljZW1hbmFnZXIvYmN0ZXN0LmMKKysrIGIvY21kcy9zZXJ2aWNlbWFuYWdlci9iY3Rlc3QuYwpAQCAtMTQsNiArMTQsNyBAQAogICAgIHN0cnVjdCBiaW5kZXJfaW8gbXNnLCByZXBseTsKIAogICAgIGJpb19pbml0KCZtc2csIGlvZGF0YSwgc2l6ZW9mKGlvZGF0YSksIDQpOworICAgIGJpb19wdXRfdWludDMyKCZtc2csIDApOyAgLy8gc3RyaWN0IG1vZGUgaGVhZGVyCiAgICAgYmlvX3B1dF9zdHJpbmcxNl94KCZtc2csIFNWQ19NR1JfTkFNRSk7CiAgICAgYmlvX3B1dF9zdHJpbmcxNl94KCZtc2csIG5hbWUpOwogCkBAIC0zNyw3ICszOCw3IEBACiAgICAgc3RydWN0IGJpbmRlcl9pbyBtc2csIHJlcGx5OwogCiAgICAgYmlvX2luaXQoJm1zZywgaW9kYXRhLCBzaXplb2YoaW9kYXRhKSwgNCk7Ci0KKyAgICBiaW9fcHV0X3VpbnQzMigmbXNnLCAwKTsgIC8vIHN0cmljdCBtb2RlIGhlYWRlcgogICAgIGJpb19wdXRfc3RyaW5nMTZfeCgmbXNnLCBTVkNfTUdSX05BTUUpOwogICAgIGJpb19wdXRfc3RyaW5nMTZfeCgmbXNnLCBuYW1lKTsKICAgICBiaW9fcHV0X29iaigmbXNnLCBwdHIpOwpkaWZmIC0tZ2l0IGEvY21kcy9zZXJ2aWNlbWFuYWdlci9zZXJ2aWNlX21hbmFnZXIuYyBiL2NtZHMvc2VydmljZW1hbmFnZXIvc2VydmljZV9tYW5hZ2VyLmMKaW5kZXggYTIwMDZjMS4uMDFjZGRjNiAxMDA2NDQKLS0tIGEvY21kcy9zZXJ2aWNlbWFuYWdlci9zZXJ2aWNlX21hbmFnZXIuYworKysgYi9jbWRzL3NlcnZpY2VtYW5hZ2VyL3NlcnZpY2VfbWFuYWdlci5jCkBAIC0xOTMsNiArMTkzLDcgQEAKICAgICB1aW50MTZfdCAqczsKICAgICB1bnNpZ25lZCBsZW47CiAgICAgdm9pZCAqcHRyOworICAgIHVpbnQzMl90IHN0cmljdF9wb2xpY3k7CiAKIC8vICAgIExPR0koInRhcmdldD0lcCBjb2RlPSVkIHBpZD0lZCB1aWQ9JWRcbiIsCiAvLyAgICAgICAgIHR4bi0+dGFyZ2V0LCB0eG4tPmNvZGUsIHR4bi0+c2VuZGVyX3BpZCwgdHhuLT5zZW5kZXJfZXVpZCk7CkBAIC0yMDAsOCArMjAxLDEyIEBACiAgICAgaWYgKHR4bi0+dGFyZ2V0ICE9IHN2Y21ncl9oYW5kbGUpCiAgICAgICAgIHJldHVybiAtMTsKIAorICAgIC8vIEVxdWl2YWxlbnQgdG8gUGFyY2VsOjplbmZvcmNlSW50ZXJmYWNlKCksIHJlYWRpbmcgdGhlIFJQQworICAgIC8vIGhlYWRlciB3aXRoIHRoZSBzdHJpY3QgbW9kZSBwb2xpY3kgbWFzayBhbmQgdGhlIGludGVyZmFjZSBuYW1lLgorICAgIC8vIE5vdGUgdGhhdCB3ZSBpZ25vcmUgdGhlIHN0cmljdF9wb2xpY3kgYW5kIGRvbid0IHByb3BhZ2F0ZSBpdAorICAgIC8vIGZ1cnRoZXIgKHNpbmNlIHdlIGRvIG5vIG91dGJvdW5kIFJQQ3MgYW55d2F5KS4KKyAgICBzdHJpY3RfcG9saWN5ID0gYmlvX2dldF91aW50MzIobXNnKTsKICAgICBzID0gYmlvX2dldF9zdHJpbmcxNihtc2csICZsZW4pOwotCiAgICAgaWYgKChsZW4gIT0gKHNpemVvZihzdmNtZ3JfaWQpIC8gMikpIHx8CiAgICAgICAgIG1lbWNtcChzdmNtZ3JfaWQsIHMsIHNpemVvZihzdmNtZ3JfaWQpKSkgewogICAgICAgICBmcHJpbnRmKHN0ZGVyciwiaW52YWxpZCBpZCAlc1xuIiwgc3RyOChzKSk7CmRpZmYgLS1naXQgYS9jbWRzL3N0YWdlZnJpZ2h0L0FuZHJvaWQubWsgYi9jbWRzL3N0YWdlZnJpZ2h0L0FuZHJvaWQubWsKaW5kZXggMzQ2NDhiNS4uOWE5NzI4NCAxMDA2NDQKLS0tIGEvY21kcy9zdGFnZWZyaWdodC9BbmRyb2lkLm1rCisrKyBiL2NtZHMvc3RhZ2VmcmlnaHQvQW5kcm9pZC5tawpAQCAtMSw1ICsxLDMgQEAKLWlmZXEgKCQoQlVJTERfV0lUSF9GVUxMX1NUQUdFRlJJR0hUKSx0cnVlKQotCiBMT0NBTF9QQVRIOj0gJChjYWxsIG15LWRpcikKIAogaW5jbHVkZSAkKENMRUFSX1ZBUlMpCkBAIC05LDExICs3LDEyIEBACiAJU2luZVNvdXJjZS5jcHAKIAogTE9DQUxfU0hBUkVEX0xJQlJBUklFUyA6PSBcCi0JbGlic3RhZ2VmcmlnaHQgbGlibWVkaWEgbGlidXRpbHMgbGliYmluZGVyCisJbGlic3RhZ2VmcmlnaHQgbGlibWVkaWEgbGlidXRpbHMgbGliYmluZGVyIGxpYnN0YWdlZnJpZ2h0X2ZvdW5kYXRpb24KIAogTE9DQUxfQ19JTkNMVURFUzo9IFwKIAkkKEpOSV9IX0lOQ0xVREUpIFwKIAlmcmFtZXdvcmtzL2Jhc2UvbWVkaWEvbGlic3RhZ2VmcmlnaHQgXAorCWZyYW1ld29ya3MvYmFzZS9tZWRpYS9saWJzdGFnZWZyaWdodC9pbmNsdWRlIFwKIAkkKFRPUCkvZXh0ZXJuYWwvb3BlbmNvcmUvZXh0ZXJuX2xpYnNfdjIva2hyb25vcy9vcGVubWF4L2luY2x1ZGUKIAogTE9DQUxfQ0ZMQUdTICs9IC1Xbm8tbXVsdGljaGFyCkBAIC03MSw1ICs3MCwzIEBACiBMT0NBTF9NT0RVTEU6PSBhdWRpb2xvb3AKIAogaW5jbHVkZSAkKEJVSUxEX0VYRUNVVEFCTEUpCi0KLWVuZGlmCmRpZmYgLS1naXQgYS9jbWRzL3N0YWdlZnJpZ2h0L3JlY29yZC5jcHAgYi9jbWRzL3N0YWdlZnJpZ2h0L3JlY29yZC5jcHAKaW5kZXggODQ1Yzg1NC4uNWE4N2Y0YyAxMDA2NDQKLS0tIGEvY21kcy9zdGFnZWZyaWdodC9yZWNvcmQuY3BwCisrKyBiL2NtZHMvc3RhZ2VmcmlnaHQvcmVjb3JkLmNwcApAQCAtMTQ3LDcgKzE0Nyw3IEBACiAgICAgT01YQ2xpZW50IGNsaWVudDsKICAgICBDSEVDS19FUShjbGllbnQuY29ubmVjdCgpLCBPSyk7CiAKLSNpZiAxCisjaWYgMAogICAgIHNwPE1lZGlhU291cmNlPiBzb3VyY2UgPSBjcmVhdGVTb3VyY2UoYXJndlsxXSk7CiAKICAgICBpZiAoc291cmNlID09IE5VTEwpIHsKQEAgLTE2NSwxNCArMTY1LDE1IEBACiAgICAgc3VjY2VzcyA9IHN1Y2Nlc3MgJiYgbWV0YS0+ZmluZEludDMyKGtLZXlIZWlnaHQsICZoZWlnaHQpOwogICAgIENIRUNLKHN1Y2Nlc3MpOwogI2Vsc2UKLSAgICBpbnQgd2lkdGggPSA4MDA7CisgICAgaW50IHdpZHRoID0gNzIwOwogICAgIGludCBoZWlnaHQgPSA0ODA7CiAgICAgc3A8TWVkaWFTb3VyY2U+IGRlY29kZXIgPSBuZXcgRHVtbXlTb3VyY2Uod2lkdGgsIGhlaWdodCk7CiAjZW5kaWYKIAogICAgIHNwPE1ldGFEYXRhPiBlbmNfbWV0YSA9IG5ldyBNZXRhRGF0YTsKICAgICAvLyBlbmNfbWV0YS0+c2V0Q1N0cmluZyhrS2V5TUlNRVR5cGUsIE1FRElBX01JTUVUWVBFX1ZJREVPX0gyNjMpOwotICAgIGVuY19tZXRhLT5zZXRDU3RyaW5nKGtLZXlNSU1FVHlwZSwgTUVESUFfTUlNRVRZUEVfVklERU9fTVBFRzQpOworICAgIC8vIGVuY19tZXRhLT5zZXRDU3RyaW5nKGtLZXlNSU1FVHlwZSwgTUVESUFfTUlNRVRZUEVfVklERU9fTVBFRzQpOworICAgIGVuY19tZXRhLT5zZXRDU3RyaW5nKGtLZXlNSU1FVHlwZSwgTUVESUFfTUlNRVRZUEVfVklERU9fQVZDKTsKICAgICBlbmNfbWV0YS0+c2V0SW50MzIoa0tleVdpZHRoLCB3aWR0aCk7CiAgICAgZW5jX21ldGEtPnNldEludDMyKGtLZXlIZWlnaHQsIGhlaWdodCk7CiAKQEAgLTIxMyw2ICsyMTQsOCBAQAogCiAjaWYgMAogICAgIENhbWVyYVNvdXJjZSAqc291cmNlID0gQ2FtZXJhU291cmNlOjpDcmVhdGUoKTsKKyAgICBzb3VyY2UtPnN0YXJ0KCk7CisKICAgICBwcmludGYoInNvdXJjZSA9ICVwXG4iLCBzb3VyY2UpOwogCiAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAxMDA7ICsraSkgewpAQCAtMjI3LDYgKzIzMCw4IEBACiAgICAgICAgIGJ1ZmZlciA9IE5VTEw7CiAgICAgfQogCisgICAgc291cmNlLT5zdG9wKCk7CisKICAgICBkZWxldGUgc291cmNlOwogICAgIHNvdXJjZSA9IE5VTEw7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2NtZHMvc3RhZ2VmcmlnaHQvc3RhZ2VmcmlnaHQuY3BwIGIvY21kcy9zdGFnZWZyaWdodC9zdGFnZWZyaWdodC5jcHAKaW5kZXggYjgzOGYzMi4uYjdhM2Y5OSAxMDA2NDQKLS0tIGEvY21kcy9zdGFnZWZyaWdodC9zdGFnZWZyaWdodC5jcHAKKysrIGIvY21kcy9zdGFnZWZyaWdodC9zdGFnZWZyaWdodC5jcHAKQEAgLTI2LDEyICsyNiwxMSBAQAogI2luY2x1ZGUgPGJpbmRlci9Qcm9jZXNzU3RhdGUuaD4KICNpbmNsdWRlIDxtZWRpYS9JTWVkaWFQbGF5ZXJTZXJ2aWNlLmg+CiAjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvQXVkaW9QbGF5ZXIuaD4KLSNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9DYWNoaW5nRGF0YVNvdXJjZS5oPgotI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L0ZpbGVTb3VyY2UuaD4KLSNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9IVFRQRGF0YVNvdXJjZS5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L0RhdGFTb3VyY2UuaD4KICNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9KUEVHU291cmNlLmg+CiAjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFEZWJ1Zy5oPgogI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhRGVmcy5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhRXJyb3JzLmg+CiAjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFFeHRyYWN0b3IuaD4KICNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYVNvdXJjZS5oPgogI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01ldGFEYXRhLmg+CkBAIC0zOSw2ICszOCw5IEBACiAjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvT01YQ29kZWMuaD4KICNpbmNsdWRlIDxtZWRpYS9tZWRpYW1ldGFkYXRhcmV0cmlldmVyLmg+CiAKKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL2hleGR1bXAuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NUEVHNFdyaXRlci5oPgorCiB1c2luZyBuYW1lc3BhY2UgYW5kcm9pZDsKIAogc3RhdGljIGxvbmcgZ051bVJlcGV0aXRpb25zOwpAQCAtNDYsNiArNDgsOCBAQAogc3RhdGljIGxvbmcgZ1JlcHJvZHVjZUJ1ZzsgIC8vIGlmIG5vdCAtMS4KIHN0YXRpYyBib29sIGdQcmVmZXJTb2Z0d2FyZUNvZGVjOwogc3RhdGljIGJvb2wgZ1BsYXliYWNrQXVkaW87CitzdGF0aWMgYm9vbCBnV3JpdGVNUDQ7CitzdGF0aWMgU3RyaW5nOCBnV3JpdGVNUDRGaWxlbmFtZTsKIAogc3RhdGljIGludDY0X3QgZ2V0Tm93VXMoKSB7CiAgICAgc3RydWN0IHRpbWV2YWwgdHY7CkBAIC04NSw2ICs4OSw3IEBACiAgICAgaWYgKGdQbGF5YmFja0F1ZGlvKSB7CiAgICAgICAgIEF1ZGlvUGxheWVyICpwbGF5ZXIgPSBuZXcgQXVkaW9QbGF5ZXIoTlVMTCk7CiAgICAgICAgIHBsYXllci0+c2V0U291cmNlKHJhd1NvdXJjZSk7CisgICAgICAgIHJhd1NvdXJjZS5jbGVhcigpOwogCiAgICAgICAgIHBsYXllci0+c3RhcnQodHJ1ZSAvKiBzb3VyY2VBbHJlYWR5U3RhcnRlZCAqLyk7CiAKQEAgLTk1LDYgKzEwMCw4IEBACiAKICAgICAgICAgZGVsZXRlIHBsYXllcjsKICAgICAgICAgcGxheWVyID0gTlVMTDsKKworICAgICAgICByZXR1cm47CiAgICAgfSBlbHNlIGlmIChnUmVwcm9kdWNlQnVnID49IDMgJiYgZ1JlcHJvZHVjZUJ1ZyA8PSA1KSB7CiAgICAgICAgIGludDY0X3QgZHVyYXRpb25VczsKICAgICAgICAgQ0hFQ0sobWV0YS0+ZmluZEludDY0KGtLZXlEdXJhdGlvbiwgJmR1cmF0aW9uVXMpKTsKQEAgLTI1Niw2ICsyNjMsMjEgQEAKICAgICB9CiB9CiAKK3N0YXRpYyB2b2lkIHdyaXRlU291cmNlVG9NUDQoY29uc3Qgc3A8TWVkaWFTb3VyY2U+ICZzb3VyY2UpIHsKKyAgICBzcDxNUEVHNFdyaXRlcj4gd3JpdGVyID0KKyAgICAgICAgbmV3IE1QRUc0V3JpdGVyKGdXcml0ZU1QNEZpbGVuYW1lLnN0cmluZygpKTsKKworICAgIENIRUNLX0VRKHdyaXRlci0+YWRkU291cmNlKHNvdXJjZSksIE9LKTsKKworICAgIHNwPE1ldGFEYXRhPiBwYXJhbXMgPSBuZXcgTWV0YURhdGE7CisgICAgQ0hFQ0tfRVEod3JpdGVyLT5zdGFydCgpLCBPSyk7CisKKyAgICB3aGlsZSAoIXdyaXRlci0+cmVhY2hlZEVPUygpKSB7CisgICAgICAgIHVzbGVlcCgxMDAwMDApOworICAgIH0KKyAgICB3cml0ZXItPnN0b3AoKTsKK30KKwogc3RhdGljIHZvaWQgdXNhZ2UoY29uc3QgY2hhciAqbWUpIHsKICAgICBmcHJpbnRmKHN0ZGVyciwgInVzYWdlOiAlc1xuIiwgbWUpOwogICAgIGZwcmludGYoc3RkZXJyLCAiICAgICAgIC1oKGVscClcbiIpOwpAQCAtMjY4LDYgKzI5MCw3IEBACiAgICAgZnByaW50ZihzdGRlcnIsICIgICAgICAgLXQoaHVtYm5haWwpIGV4dHJhY3QgdmlkZW8gdGh1bWJuYWlsIG9yIGFsYnVtIGFydFxuIik7CiAgICAgZnByaW50ZihzdGRlcnIsICIgICAgICAgLXMob2Z0d2FyZSkgcHJlZmVyIHNvZnR3YXJlIGNvZGVjXG4iKTsKICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgICAgICAtbyBwbGF5YmFjayBhdWRpb1xuIik7CisgICAgZnByaW50ZihzdGRlcnIsICIgICAgICAgLXcocml0ZSkgZmlsZW5hbWUgKHdyaXRlIHRvIC5tcDQgZmlsZSlcbiIpOwogfQogCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKQEAgLTI4Miw5ICszMDUsMTAgQEAKICAgICBnUmVwcm9kdWNlQnVnID0gLTE7CiAgICAgZ1ByZWZlclNvZnR3YXJlQ29kZWMgPSBmYWxzZTsKICAgICBnUGxheWJhY2tBdWRpbyA9IGZhbHNlOworICAgIGdXcml0ZU1QNCA9IGZhbHNlOwogCiAgICAgaW50IHJlczsKLSAgICB3aGlsZSAoKHJlcyA9IGdldG9wdChhcmdjLCBhcmd2LCAiaGFuOmxtOmI6cHRzbyIpKSA+PSAwKSB7CisgICAgd2hpbGUgKChyZXMgPSBnZXRvcHQoYXJnYywgYXJndiwgImhhbjpsbTpiOnB0c293OiIpKSA+PSAwKSB7CiAgICAgICAgIHN3aXRjaCAocmVzKSB7CiAgICAgICAgICAgICBjYXNlICdhJzoKICAgICAgICAgICAgIHsKQEAgLTMyMCw2ICszNDQsMTMgQEAKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgY2FzZSAndyc6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgZ1dyaXRlTVA0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBnV3JpdGVNUDRGaWxlbmFtZS5zZXRUbyhvcHRhcmcpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBjYXNlICdwJzoKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBkdW1wUHJvZmlsZXMgPSB0cnVlOwpAQCAtNDc5LDE5ICs1MTAsOSBAQAogICAgIGZvciAoaW50IGsgPSAwOyBrIDwgYXJnYzsgKytrKSB7CiAgICAgICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lID0gYXJndltrXTsKIAotICAgICAgICBzcDxEYXRhU291cmNlPiBkYXRhU291cmNlOwotICAgICAgICBpZiAoIXN0cm5jYXNlY21wKCJodHRwOi8vIiwgZmlsZW5hbWUsIDcpKSB7Ci0gICAgICAgICAgICBkYXRhU291cmNlID0gbmV3IEhUVFBEYXRhU291cmNlKGZpbGVuYW1lKTsKLSAgICAgICAgICAgIGlmICgoKEhUVFBEYXRhU291cmNlICopZGF0YVNvdXJjZS5nZXQoKSktPmNvbm5lY3QoKSAhPSBPSykgewotICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiZmFpbGVkIHRvIGNvbm5lY3QgdG8gSFRUUCBzZXJ2ZXIuXG4iKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBkYXRhU291cmNlID0gbmV3IENhY2hpbmdEYXRhU291cmNlKGRhdGFTb3VyY2UsIDMyICogMTAyNCwgMjApOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZGF0YVNvdXJjZSA9IG5ldyBGaWxlU291cmNlKGZpbGVuYW1lKTsKLSAgICAgICAgfQorICAgICAgICBzcDxEYXRhU291cmNlPiBkYXRhU291cmNlID0gRGF0YVNvdXJjZTo6Q3JlYXRlRnJvbVVSSShmaWxlbmFtZSk7CiAKLSAgICAgICAgaWYgKGRhdGFTb3VyY2UgPT0gTlVMTCkgeworICAgICAgICBpZiAoc3RybmNhc2VjbXAoZmlsZW5hbWUsICJzaW5lOiIsIDUpICYmIGRhdGFTb3VyY2UgPT0gTlVMTCkgewogICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJVbmFibGUgdG8gY3JlYXRlIGRhdGEgc291cmNlLlxuIik7CiAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgfQpAQCAtNTYyLDcgKzU4MywxMSBAQAogICAgICAgICAgICAgbWVkaWFTb3VyY2UgPSBleHRyYWN0b3ItPmdldFRyYWNrKGkpOwogICAgICAgICB9CiAKLSAgICAgICAgcGxheVNvdXJjZSgmY2xpZW50LCBtZWRpYVNvdXJjZSk7CisgICAgICAgIGlmIChnV3JpdGVNUDQpIHsKKyAgICAgICAgICAgIHdyaXRlU291cmNlVG9NUDQobWVkaWFTb3VyY2UpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcGxheVNvdXJjZSgmY2xpZW50LCBtZWRpYVNvdXJjZSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBjbGllbnQuZGlzY29ubmVjdCgpOwpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvYWNjb3VudHMvQWNjb3VudE1hbmFnZXJTZXJ2aWNlLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9hY2NvdW50cy9BY2NvdW50TWFuYWdlclNlcnZpY2UuamF2YQppbmRleCAxY2Q3YWE3Li4xZDllMGYxIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9hY2NvdW50cy9BY2NvdW50TWFuYWdlclNlcnZpY2UuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9hY2NvdW50cy9BY2NvdW50TWFuYWdlclNlcnZpY2UuamF2YQpAQCAtMTQ4Myw3ICsxNDgzLDEzIEBACiAgICAgfQogCiAgICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIGdldERhdGFiYXNlTmFtZSgpIHsKLSAgICAgICAgcmV0dXJuIERBVEFCQVNFX05BTUU7CisgICAgICAgIGlmKEVudmlyb25tZW50LmlzRW5jcnlwdGVkRmlsZXN5c3RlbUVuYWJsZWQoKSkgeworICAgICAgICAgICAgLy8gSGFyZC1jb2RlZCBwYXRoIGluIGNhc2Ugb2YgZW5jcnlwdGVkIGZpbGUgc3lzdGVtCisgICAgICAgICAgICByZXR1cm4gRW52aXJvbm1lbnQuZ2V0U3lzdGVtU2VjdXJlRGlyZWN0b3J5KCkuZ2V0UGF0aCgpICsgRmlsZS5zZXBhcmF0b3IgKyBEQVRBQkFTRV9OQU1FOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gUmVndWxhciBwYXRoIGluIGNhc2Ugb2Ygbm9uLWVuY3J5cHRlZCBmaWxlIHN5c3RlbQorICAgICAgICAgICAgcmV0dXJuIERBVEFCQVNFX05BTUU7CisgICAgICAgIH0KICAgICB9CiAKICAgICBwcml2YXRlIGNsYXNzIERhdGFiYXNlSGVscGVyIGV4dGVuZHMgU1FMaXRlT3BlbkhlbHBlciB7CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9hcHAvQWN0aXZpdHkuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9BY3Rpdml0eS5qYXZhCmluZGV4IGE5NjIzOTEuLjk4NWY1OTEgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9BY3Rpdml0eS5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9BY3Rpdml0eS5qYXZhCkBAIC0zOSw3ICszOSw2IEBACiBpbXBvcnQgYW5kcm9pZC5vcy5CdW5kbGU7CiBpbXBvcnQgYW5kcm9pZC5vcy5IYW5kbGVyOwogaW1wb3J0IGFuZHJvaWQub3MuSUJpbmRlcjsKLWltcG9ydCBhbmRyb2lkLm9zLkxvb3BlcjsKIGltcG9ydCBhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbjsKIGltcG9ydCBhbmRyb2lkLnRleHQuU2VsZWN0aW9uOwogaW1wb3J0IGFuZHJvaWQudGV4dC5TcGFubmFibGVTdHJpbmdCdWlsZGVyOwpAQCAtMzcyMCw2ICszNzE5LDQ2IEBACiAgICAgICAgIHJldHVybiBudWxsOwogICAgIH0KIAorICAgIC8qKgorICAgICAqIEJpdCBpbmRpY2F0aW5nIHRoYXQgdGhpcyBhY3Rpdml0eSBpcyAiaW1tZXJzaXZlIiBhbmQgc2hvdWxkIG5vdCBiZQorICAgICAqIGludGVycnVwdGVkIGJ5IG5vdGlmaWNhdGlvbnMgaWYgcG9zc2libGUuCisgICAgICoKKyAgICAgKiBUaGlzIHZhbHVlIGlzIGluaXRpYWxseSBzZXQgYnkgdGhlIG1hbmlmZXN0IHByb3BlcnR5CisgICAgICogPGNvZGU+YW5kcm9pZDppbW1lcnNpdmU8L2NvZGU+IGJ1dCBtYXkgYmUgY2hhbmdlZCBhdCBydW50aW1lIGJ5CisgICAgICoge0BsaW5rICNzZXRJbW1lcnNpdmV9LgorICAgICAqCisgICAgICogQHNlZSBhbmRyb2lkLmNvbnRlbnQucG0uQWN0aXZpdHlJbmZvI0ZMQUdfSU1NRVJTSVZFCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gaXNJbW1lcnNpdmUoKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gQWN0aXZpdHlNYW5hZ2VyTmF0aXZlLmdldERlZmF1bHQoKS5pc0ltbWVyc2l2ZShtVG9rZW4pOworICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQWRqdXN0IHRoZSBjdXJyZW50IGltbWVyc2l2ZSBtb2RlIHNldHRpbmcuCisgICAgICogCisgICAgICogTm90ZSB0aGF0IGNoYW5naW5nIHRoaXMgdmFsdWUgd2lsbCBoYXZlIG5vIGVmZmVjdCBvbiB0aGUgYWN0aXZpdHkncworICAgICAqIHtAbGluayBhbmRyb2lkLmNvbnRlbnQucG0uQWN0aXZpdHlJbmZvfSBzdHJ1Y3R1cmU7IHRoYXQgaXMsIGlmCisgICAgICogPGNvZGU+YW5kcm9pZDppbW1lcnNpdmU8L2NvZGU+IGlzIHNldCB0byA8Y29kZT50cnVlPC9jb2RlPgorICAgICAqIGluIHRoZSBhcHBsaWNhdGlvbidzIG1hbmlmZXN0IGVudHJ5IGZvciB0aGlzIGFjdGl2aXR5LCB0aGUge0BsaW5rCisgICAgICogYW5kcm9pZC5jb250ZW50LnBtLkFjdGl2aXR5SW5mbyNmbGFncyBBY3Rpdml0eUluZm8uZmxhZ3N9IG1lbWJlciB3aWxsCisgICAgICogYWx3YXlzIGhhdmUgaXRzIHtAbGluayBhbmRyb2lkLmNvbnRlbnQucG0uQWN0aXZpdHlJbmZvI0ZMQUdfSU1NRVJTSVZFCisgICAgICogRkxBR19JTU1FUlNJVkV9IGJpdCBzZXQuCisgICAgICoKKyAgICAgKiBAc2VlICNpc0ltbWVyc2l2ZQorICAgICAqIEBzZWUgYW5kcm9pZC5jb250ZW50LnBtLkFjdGl2aXR5SW5mbyNGTEFHX0lNTUVSU0lWRQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldEltbWVyc2l2ZShib29sZWFuIGkpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIEFjdGl2aXR5TWFuYWdlck5hdGl2ZS5nZXREZWZhdWx0KCkuc2V0SW1tZXJzaXZlKG1Ub2tlbiwgaSk7CisgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAvLyBwYXNzCisgICAgICAgIH0KKyAgICB9CisKICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0gSW50ZXJuYWwgQVBJIC0tLS0tLS0tLS0tLS0tLS0tLQogICAgIAogICAgIGZpbmFsIHZvaWQgc2V0UGFyZW50KEFjdGl2aXR5IHBhcmVudCkgewpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0FjdGl2aXR5TWFuYWdlci5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0FjdGl2aXR5TWFuYWdlci5qYXZhCmluZGV4IGM5MDk2Y2YuLmViNzUyMGYgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9BY3Rpdml0eU1hbmFnZXIuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9hcHAvQWN0aXZpdHlNYW5hZ2VyLmphdmEKQEAgLTcxNyw5ICs3MTcsMjQgQEAKICAgICAgICAgICovCiAgICAgICAgIHB1YmxpYyBpbnQgdWlkOwogICAgICAgICAKKyAgICAgICAgLyoqCisgICAgICAgICAqIEFsbCBwYWNrYWdlcyB0aGF0IGhhdmUgYmVlbiBsb2FkZWQgaW50byB0aGUgcHJvY2Vzcy4KKyAgICAgICAgICovCiAgICAgICAgIHB1YmxpYyBTdHJpbmcgcGtnTGlzdFtdOwogICAgICAgICAKICAgICAgICAgLyoqCisgICAgICAgICAqIENvbnN0YW50IGZvciB7QGxpbmsgI2ZsYWdzfTogdGhpcyBpcyBhIGhlYXZ5LXdlaWdodCBwcm9jZXNzLAorICAgICAgICAgKiBtZWFuaW5nIGl0IHdpbGwgbm90IGJlIGtpbGxlZCB3aGlsZSBpbiB0aGUgYmFja2dyb3VuZC4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZMQUdfSEVBVllfV0VJR0hUID0gMTw8MDsKKyAgICAgICAgCisgICAgICAgIC8qKgorICAgICAgICAgKiBGbGFncyBvZiBpbmZvcm1hdGlvbi4gIE1heSBiZSBhbnkgb2YKKyAgICAgICAgICoge0BsaW5rICNGTEFHX0hFQVZZX1dFSUdIVH0uCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgaW50IGZsYWdzOworICAgICAgICAKKyAgICAgICAgLyoqCiAgICAgICAgICAqIENvbnN0YW50IGZvciB7QGxpbmsgI2ltcG9ydGFuY2V9OiB0aGlzIHByb2Nlc3MgaXMgcnVubmluZyB0aGUKICAgICAgICAgICogZm9yZWdyb3VuZCBVSS4KICAgICAgICAgICovCkBAIC03MjcsMTEgKzc0MiwyNSBAQAogICAgICAgICAKICAgICAgICAgLyoqCiAgICAgICAgICAqIENvbnN0YW50IGZvciB7QGxpbmsgI2ltcG9ydGFuY2V9OiB0aGlzIHByb2Nlc3MgaXMgcnVubmluZyBzb21ldGhpbmcKLSAgICAgICAgICogdGhhdCBpcyBjb25zaWRlcmVkIHRvIGJlIGFjdGl2ZWx5IHZpc2libGUgdG8gdGhlIHVzZXIuCisgICAgICAgICAqIHRoYXQgaXMgYWN0aXZlbHkgdmlzaWJsZSB0byB0aGUgdXNlciwgdGhvdWdoIG5vdCBpbiB0aGUgaW1tZWRpYXRlCisgICAgICAgICAqIGZvcmVncm91bmQuCiAgICAgICAgICAqLwogICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBJTVBPUlRBTkNFX1ZJU0lCTEUgPSAyMDA7CiAgICAgICAgIAogICAgICAgICAvKioKKyAgICAgICAgICogQ29uc3RhbnQgZm9yIHtAbGluayAjaW1wb3J0YW5jZX06IHRoaXMgcHJvY2VzcyBpcyBydW5uaW5nIHNvbWV0aGluZworICAgICAgICAgKiB0aGF0IGlzIGNvbnNpZGVyZWQgdG8gYmUgYWN0aXZlbHkgcGVyY2VwdGlibGUgdG8gdGhlIHVzZXIuICBBbgorICAgICAgICAgKiBleGFtcGxlIHdvdWxkIGJlIGFuIGFwcGxpY2F0aW9uIHBlcmZvcm1pbmcgYmFja2dyb3VuZCBtdXNpYyBwbGF5YmFjay4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IElNUE9SVEFOQ0VfUEVSQ0VQVElCTEUgPSAxMzA7CisgICAgICAgIAorICAgICAgICAvKioKKyAgICAgICAgICogQ29uc3RhbnQgZm9yIHtAbGluayAjaW1wb3J0YW5jZX06IHRoaXMgcHJvY2VzcyBpcyBydW5uaW5nIGEKKyAgICAgICAgICogaGVhdnktd2VpZ2h0IGFwcGxpY2F0aW9uIGFuZCB0aHVzIHNob3VsZCBub3QgYmUga2lsbGVkLgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSU1QT1JUQU5DRV9IRUFWWV9XRUlHSFQgPSAxNzA7CisgICAgICAgIAorICAgICAgICAvKioKICAgICAgICAgICogQ29uc3RhbnQgZm9yIHtAbGluayAjaW1wb3J0YW5jZX06IHRoaXMgcHJvY2VzcyBpcyBjb250YWlucyBzZXJ2aWNlcwogICAgICAgICAgKiB0aGF0IHNob3VsZCByZW1haW4gcnVubmluZy4KICAgICAgICAgICovCkBAIC04MzIsNiArODYxLDcgQEAKICAgICAgICAgICAgIGRlc3Qud3JpdGVJbnQocGlkKTsKICAgICAgICAgICAgIGRlc3Qud3JpdGVJbnQodWlkKTsKICAgICAgICAgICAgIGRlc3Qud3JpdGVTdHJpbmdBcnJheShwa2dMaXN0KTsKKyAgICAgICAgICAgIGRlc3Qud3JpdGVJbnQodGhpcy5mbGFncyk7CiAgICAgICAgICAgICBkZXN0LndyaXRlSW50KGltcG9ydGFuY2UpOwogICAgICAgICAgICAgZGVzdC53cml0ZUludChscnUpOwogICAgICAgICAgICAgZGVzdC53cml0ZUludChpbXBvcnRhbmNlUmVhc29uQ29kZSk7CkBAIC04NDQsNiArODc0LDcgQEAKICAgICAgICAgICAgIHBpZCA9IHNvdXJjZS5yZWFkSW50KCk7CiAgICAgICAgICAgICB1aWQgPSBzb3VyY2UucmVhZEludCgpOwogICAgICAgICAgICAgcGtnTGlzdCA9IHNvdXJjZS5yZWFkU3RyaW5nQXJyYXkoKTsKKyAgICAgICAgICAgIGZsYWdzID0gc291cmNlLnJlYWRJbnQoKTsKICAgICAgICAgICAgIGltcG9ydGFuY2UgPSBzb3VyY2UucmVhZEludCgpOwogICAgICAgICAgICAgbHJ1ID0gc291cmNlLnJlYWRJbnQoKTsKICAgICAgICAgICAgIGltcG9ydGFuY2VSZWFzb25Db2RlID0gc291cmNlLnJlYWRJbnQoKTsKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9BY3Rpdml0eU1hbmFnZXJOYXRpdmUuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9BY3Rpdml0eU1hbmFnZXJOYXRpdmUuamF2YQppbmRleCBmNjk0Mjg1Li4xZmU4NWU2IDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9hcHAvQWN0aXZpdHlNYW5hZ2VyTmF0aXZlLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0FjdGl2aXR5TWFuYWdlck5hdGl2ZS5qYXZhCkBAIC0xMDIxLDE2ICsxMDIxLDYgQEAKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAKLSAgICAgICAgY2FzZSBSRVBPUlRfUFNTX1RSQU5TQUNUSU9OOiB7Ci0gICAgICAgICAgICBkYXRhLmVuZm9yY2VJbnRlcmZhY2UoSUFjdGl2aXR5TWFuYWdlci5kZXNjcmlwdG9yKTsKLSAgICAgICAgICAgIElCaW5kZXIgYiA9IGRhdGEucmVhZFN0cm9uZ0JpbmRlcigpOwotICAgICAgICAgICAgSUFwcGxpY2F0aW9uVGhyZWFkIGFwcCA9IEFwcGxpY2F0aW9uVGhyZWFkTmF0aXZlLmFzSW50ZXJmYWNlKGIpOwotICAgICAgICAgICAgaW50IHBzcyA9IGRhdGEucmVhZEludCgpOwotICAgICAgICAgICAgcmVwb3J0UHNzKGFwcCwgcHNzKTsKLSAgICAgICAgICAgIHJlcGx5LndyaXRlTm9FeGNlcHRpb24oKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0KICAgICAgICAgY2FzZSBTVEFSVF9SVU5OSU5HX1RSQU5TQUNUSU9OOiB7CiAgICAgICAgICAgICBkYXRhLmVuZm9yY2VJbnRlcmZhY2UoSUFjdGl2aXR5TWFuYWdlci5kZXNjcmlwdG9yKTsKICAgICAgICAgICAgIFN0cmluZyBwa2cgPSBkYXRhLnJlYWRTdHJpbmcoKTsKQEAgLTEwNjIsNiArMTA1MiwxNiBAQAogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIEhBTkRMRV9BUFBMSUNBVElPTl9TVFJJQ1RfTU9ERV9WSU9MQVRJT05fVFJBTlNBQ1RJT046IHsKKyAgICAgICAgICAgIGRhdGEuZW5mb3JjZUludGVyZmFjZShJQWN0aXZpdHlNYW5hZ2VyLmRlc2NyaXB0b3IpOworICAgICAgICAgICAgSUJpbmRlciBhcHAgPSBkYXRhLnJlYWRTdHJvbmdCaW5kZXIoKTsKKyAgICAgICAgICAgIGludCB2aW9sYXRpb25NYXNrID0gZGF0YS5yZWFkSW50KCk7CisgICAgICAgICAgICBBcHBsaWNhdGlvbkVycm9yUmVwb3J0LkNyYXNoSW5mbyBjaSA9IG5ldyBBcHBsaWNhdGlvbkVycm9yUmVwb3J0LkNyYXNoSW5mbyhkYXRhKTsKKyAgICAgICAgICAgIGhhbmRsZUFwcGxpY2F0aW9uU3RyaWN0TW9kZVZpb2xhdGlvbihhcHAsIHZpb2xhdGlvbk1hc2ssIGNpKTsKKyAgICAgICAgICAgIHJlcGx5LndyaXRlTm9FeGNlcHRpb24oKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBTSUdOQUxfUEVSU0lTVEVOVF9QUk9DRVNTRVNfVFJBTlNBQ1RJT046IHsKICAgICAgICAgICAgIGRhdGEuZW5mb3JjZUludGVyZmFjZShJQWN0aXZpdHlNYW5hZ2VyLmRlc2NyaXB0b3IpOwogICAgICAgICAgICAgaW50IHNpZyA9IGRhdGEucmVhZEludCgpOwpAQCAtMTI1MSw2ICsxMjUxLDQ5IEBACiAgICAgICAgICAgICByZXBseS53cml0ZU5vRXhjZXB0aW9uKCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY2FzZSBGSU5JU0hfSEVBVllfV0VJR0hUX0FQUF9UUkFOU0FDVElPTjogeworICAgICAgICAgICAgZGF0YS5lbmZvcmNlSW50ZXJmYWNlKElBY3Rpdml0eU1hbmFnZXIuZGVzY3JpcHRvcik7CisgICAgICAgICAgICBmaW5pc2hIZWF2eVdlaWdodEFwcCgpOworICAgICAgICAgICAgcmVwbHkud3JpdGVOb0V4Y2VwdGlvbigpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIElTX0lNTUVSU0lWRV9UUkFOU0FDVElPTjogeworICAgICAgICAgICAgZGF0YS5lbmZvcmNlSW50ZXJmYWNlKElBY3Rpdml0eU1hbmFnZXIuZGVzY3JpcHRvcik7CisgICAgICAgICAgICBJQmluZGVyIHRva2VuID0gZGF0YS5yZWFkU3Ryb25nQmluZGVyKCk7CisgICAgICAgICAgICByZXBseS53cml0ZUludChpc0ltbWVyc2l2ZSh0b2tlbikgPyAxIDogMCk7CisgICAgICAgICAgICByZXBseS53cml0ZU5vRXhjZXB0aW9uKCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2UgU0VUX0lNTUVSU0lWRV9UUkFOU0FDVElPTjogeworICAgICAgICAgICAgZGF0YS5lbmZvcmNlSW50ZXJmYWNlKElBY3Rpdml0eU1hbmFnZXIuZGVzY3JpcHRvcik7CisgICAgICAgICAgICBJQmluZGVyIHRva2VuID0gZGF0YS5yZWFkU3Ryb25nQmluZGVyKCk7CisgICAgICAgICAgICBib29sZWFuIGltbSA9IGRhdGEucmVhZEludCgpID09IDE7CisgICAgICAgICAgICBzZXRJbW1lcnNpdmUodG9rZW4sIGltbSk7CisgICAgICAgICAgICByZXBseS53cml0ZU5vRXhjZXB0aW9uKCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY2FzZSBJU19UT1BfQUNUSVZJVFlfSU1NRVJTSVZFX1RSQU5TQUNUSU9OOiB7CisgICAgICAgICAgICBkYXRhLmVuZm9yY2VJbnRlcmZhY2UoSUFjdGl2aXR5TWFuYWdlci5kZXNjcmlwdG9yKTsKKyAgICAgICAgICAgIHJlcGx5LndyaXRlSW50KGlzVG9wQWN0aXZpdHlJbW1lcnNpdmUoKSA/IDEgOiAwKTsKKyAgICAgICAgICAgIHJlcGx5LndyaXRlTm9FeGNlcHRpb24oKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBDUkFTSF9BUFBMSUNBVElPTl9UUkFOU0FDVElPTjogeworICAgICAgICAgICAgZGF0YS5lbmZvcmNlSW50ZXJmYWNlKElBY3Rpdml0eU1hbmFnZXIuZGVzY3JpcHRvcik7CisgICAgICAgICAgICBpbnQgdWlkID0gZGF0YS5yZWFkSW50KCk7CisgICAgICAgICAgICBpbnQgaW5pdGlhbFBpZCA9IGRhdGEucmVhZEludCgpOworICAgICAgICAgICAgU3RyaW5nIHBhY2thZ2VOYW1lID0gZGF0YS5yZWFkU3RyaW5nKCk7CisgICAgICAgICAgICBTdHJpbmcgbWVzc2FnZSA9IGRhdGEucmVhZFN0cmluZygpOworICAgICAgICAgICAgY3Jhc2hBcHBsaWNhdGlvbih1aWQsIGluaXRpYWxQaWQsIHBhY2thZ2VOYW1lLCBtZXNzYWdlKTsKKyAgICAgICAgICAgIHJlcGx5LndyaXRlTm9FeGNlcHRpb24oKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgcmV0dXJuIHN1cGVyLm9uVHJhbnNhY3QoY29kZSwgZGF0YSwgcmVwbHksIGZsYWdzKTsKQEAgLTI0NzYsMTQgKzI1MTksNiBAQAogICAgICAgICByZXBseS5yZWN5Y2xlKCk7CiAgICAgICAgIHJldHVybiByZXM7CiAgICAgfQotICAgIHB1YmxpYyB2b2lkIHJlcG9ydFBzcyhJQXBwbGljYXRpb25UaHJlYWQgY2FsbGVyLCBpbnQgcHNzKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKLSAgICAgICAgUGFyY2VsIGRhdGEgPSBQYXJjZWwub2J0YWluKCk7Ci0gICAgICAgIGRhdGEud3JpdGVJbnRlcmZhY2VUb2tlbihJQWN0aXZpdHlNYW5hZ2VyLmRlc2NyaXB0b3IpOwotICAgICAgICBkYXRhLndyaXRlU3Ryb25nQmluZGVyKGNhbGxlci5hc0JpbmRlcigpKTsKLSAgICAgICAgZGF0YS53cml0ZUludChwc3MpOwotICAgICAgICBtUmVtb3RlLnRyYW5zYWN0KFJFUE9SVF9QU1NfVFJBTlNBQ1RJT04sIGRhdGEsIG51bGwsIDApOwotICAgICAgICBkYXRhLnJlY3ljbGUoKTsKLSAgICB9CiAgICAgcHVibGljIHZvaWQgc3RhcnRSdW5uaW5nKFN0cmluZyBwa2csIFN0cmluZyBjbHMsIFN0cmluZyBhY3Rpb24sCiAgICAgICAgICAgICBTdHJpbmcgaW5kYXRhKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKICAgICAgICAgUGFyY2VsIGRhdGEgPSBQYXJjZWwub2J0YWluKCk7CkBAIC0yNTE2LDYgKzI1NTEsNyBAQAogICAgICAgICByZXBseS5yZWN5Y2xlKCk7CiAgICAgICAgIGRhdGEucmVjeWNsZSgpOwogICAgIH0KKwogICAgIHB1YmxpYyBib29sZWFuIGhhbmRsZUFwcGxpY2F0aW9uV3RmKElCaW5kZXIgYXBwLCBTdHJpbmcgdGFnLAogICAgICAgICAgICAgQXBwbGljYXRpb25FcnJvclJlcG9ydC5DcmFzaEluZm8gY3Jhc2hJbmZvKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uCiAgICAgewpAQCAtMjUzMyw2ICsyNTY5LDIyIEBACiAgICAgICAgIHJldHVybiByZXM7CiAgICAgfQogCisgICAgcHVibGljIHZvaWQgaGFuZGxlQXBwbGljYXRpb25TdHJpY3RNb2RlVmlvbGF0aW9uKElCaW5kZXIgYXBwLAorICAgICAgICAgICAgaW50IHZpb2xhdGlvbk1hc2ssCisgICAgICAgICAgICBBcHBsaWNhdGlvbkVycm9yUmVwb3J0LkNyYXNoSW5mbyBjcmFzaEluZm8pIHRocm93cyBSZW1vdGVFeGNlcHRpb24KKyAgICB7CisgICAgICAgIFBhcmNlbCBkYXRhID0gUGFyY2VsLm9idGFpbigpOworICAgICAgICBQYXJjZWwgcmVwbHkgPSBQYXJjZWwub2J0YWluKCk7CisgICAgICAgIGRhdGEud3JpdGVJbnRlcmZhY2VUb2tlbihJQWN0aXZpdHlNYW5hZ2VyLmRlc2NyaXB0b3IpOworICAgICAgICBkYXRhLndyaXRlU3Ryb25nQmluZGVyKGFwcCk7CisgICAgICAgIGRhdGEud3JpdGVJbnQodmlvbGF0aW9uTWFzayk7CisgICAgICAgIGNyYXNoSW5mby53cml0ZVRvUGFyY2VsKGRhdGEsIDApOworICAgICAgICBtUmVtb3RlLnRyYW5zYWN0KEhBTkRMRV9BUFBMSUNBVElPTl9TVFJJQ1RfTU9ERV9WSU9MQVRJT05fVFJBTlNBQ1RJT04sIGRhdGEsIHJlcGx5LCAwKTsKKyAgICAgICAgcmVwbHkucmVhZEV4Y2VwdGlvbigpOworICAgICAgICByZXBseS5yZWN5Y2xlKCk7CisgICAgICAgIGRhdGEucmVjeWNsZSgpOworICAgIH0KKwogICAgIHB1YmxpYyB2b2lkIHNpZ25hbFBlcnNpc3RlbnRQcm9jZXNzZXMoaW50IHNpZykgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7CiAgICAgICAgIFBhcmNlbCBkYXRhID0gUGFyY2VsLm9idGFpbigpOwogICAgICAgICBQYXJjZWwgcmVwbHkgPSBQYXJjZWwub2J0YWluKCk7CkBAIC0yNzU4LDUgKzI4MTAsNzAgQEAKICAgICAgICAgcmV0dXJuIHJlczsKICAgICB9CiAgICAgCisgICAgcHVibGljIHZvaWQgZmluaXNoSGVhdnlXZWlnaHRBcHAoKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKKyAgICAgICAgUGFyY2VsIGRhdGEgPSBQYXJjZWwub2J0YWluKCk7CisgICAgICAgIFBhcmNlbCByZXBseSA9IFBhcmNlbC5vYnRhaW4oKTsKKyAgICAgICAgZGF0YS53cml0ZUludGVyZmFjZVRva2VuKElBY3Rpdml0eU1hbmFnZXIuZGVzY3JpcHRvcik7CisgICAgICAgIG1SZW1vdGUudHJhbnNhY3QoRklOSVNIX0hFQVZZX1dFSUdIVF9BUFBfVFJBTlNBQ1RJT04sIGRhdGEsIHJlcGx5LCAwKTsKKyAgICAgICAgcmVwbHkucmVhZEV4Y2VwdGlvbigpOworICAgICAgICBkYXRhLnJlY3ljbGUoKTsKKyAgICAgICAgcmVwbHkucmVjeWNsZSgpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBzZXRJbW1lcnNpdmUoSUJpbmRlciB0b2tlbiwgYm9vbGVhbiBpbW1lcnNpdmUpCisgICAgICAgICAgICB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKKyAgICAgICAgUGFyY2VsIGRhdGEgPSBQYXJjZWwub2J0YWluKCk7CisgICAgICAgIFBhcmNlbCByZXBseSA9IFBhcmNlbC5vYnRhaW4oKTsKKyAgICAgICAgZGF0YS53cml0ZUludGVyZmFjZVRva2VuKElBY3Rpdml0eU1hbmFnZXIuZGVzY3JpcHRvcik7CisgICAgICAgIGRhdGEud3JpdGVTdHJvbmdCaW5kZXIodG9rZW4pOworICAgICAgICBkYXRhLndyaXRlSW50KGltbWVyc2l2ZSA/IDEgOiAwKTsKKyAgICAgICAgbVJlbW90ZS50cmFuc2FjdChTRVRfSU1NRVJTSVZFX1RSQU5TQUNUSU9OLCBkYXRhLCByZXBseSwgMCk7CisgICAgICAgIHJlcGx5LnJlYWRFeGNlcHRpb24oKTsKKyAgICAgICAgZGF0YS5yZWN5Y2xlKCk7CisgICAgICAgIHJlcGx5LnJlY3ljbGUoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBpc0ltbWVyc2l2ZShJQmluZGVyIHRva2VuKQorICAgICAgICAgICAgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7CisgICAgICAgIFBhcmNlbCBkYXRhID0gUGFyY2VsLm9idGFpbigpOworICAgICAgICBQYXJjZWwgcmVwbHkgPSBQYXJjZWwub2J0YWluKCk7CisgICAgICAgIGRhdGEud3JpdGVJbnRlcmZhY2VUb2tlbihJQWN0aXZpdHlNYW5hZ2VyLmRlc2NyaXB0b3IpOworICAgICAgICBkYXRhLndyaXRlU3Ryb25nQmluZGVyKHRva2VuKTsKKyAgICAgICAgbVJlbW90ZS50cmFuc2FjdChJU19JTU1FUlNJVkVfVFJBTlNBQ1RJT04sIGRhdGEsIHJlcGx5LCAwKTsKKyAgICAgICAgYm9vbGVhbiByZXMgPSByZXBseS5yZWFkSW50KCkgPT0gMTsKKyAgICAgICAgcmVwbHkucmVhZEV4Y2VwdGlvbigpOworICAgICAgICBkYXRhLnJlY3ljbGUoKTsKKyAgICAgICAgcmVwbHkucmVjeWNsZSgpOworICAgICAgICByZXR1cm4gcmVzOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGlzVG9wQWN0aXZpdHlJbW1lcnNpdmUoKQorICAgICAgICAgICAgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7CisgICAgICAgIFBhcmNlbCBkYXRhID0gUGFyY2VsLm9idGFpbigpOworICAgICAgICBQYXJjZWwgcmVwbHkgPSBQYXJjZWwub2J0YWluKCk7CisgICAgICAgIGRhdGEud3JpdGVJbnRlcmZhY2VUb2tlbihJQWN0aXZpdHlNYW5hZ2VyLmRlc2NyaXB0b3IpOworICAgICAgICBtUmVtb3RlLnRyYW5zYWN0KElTX1RPUF9BQ1RJVklUWV9JTU1FUlNJVkVfVFJBTlNBQ1RJT04sIGRhdGEsIHJlcGx5LCAwKTsKKyAgICAgICAgYm9vbGVhbiByZXMgPSByZXBseS5yZWFkSW50KCkgPT0gMTsKKyAgICAgICAgcmVwbHkucmVhZEV4Y2VwdGlvbigpOworICAgICAgICBkYXRhLnJlY3ljbGUoKTsKKyAgICAgICAgcmVwbHkucmVjeWNsZSgpOworICAgICAgICByZXR1cm4gcmVzOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGNyYXNoQXBwbGljYXRpb24oaW50IHVpZCwgaW50IGluaXRpYWxQaWQsIFN0cmluZyBwYWNrYWdlTmFtZSwKKyAgICAgICAgICAgIFN0cmluZyBtZXNzYWdlKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKKyAgICAgICAgUGFyY2VsIGRhdGEgPSBQYXJjZWwub2J0YWluKCk7CisgICAgICAgIFBhcmNlbCByZXBseSA9IFBhcmNlbC5vYnRhaW4oKTsKKyAgICAgICAgZGF0YS53cml0ZUludGVyZmFjZVRva2VuKElBY3Rpdml0eU1hbmFnZXIuZGVzY3JpcHRvcik7CisgICAgICAgIGRhdGEud3JpdGVJbnQodWlkKTsKKyAgICAgICAgZGF0YS53cml0ZUludChpbml0aWFsUGlkKTsKKyAgICAgICAgZGF0YS53cml0ZVN0cmluZyhwYWNrYWdlTmFtZSk7CisgICAgICAgIGRhdGEud3JpdGVTdHJpbmcobWVzc2FnZSk7CisgICAgICAgIG1SZW1vdGUudHJhbnNhY3QoQ1JBU0hfQVBQTElDQVRJT05fVFJBTlNBQ1RJT04sIGRhdGEsIHJlcGx5LCAwKTsKKyAgICAgICAgcmVwbHkucmVhZEV4Y2VwdGlvbigpOworICAgICAgICBkYXRhLnJlY3ljbGUoKTsKKyAgICAgICAgcmVwbHkucmVjeWNsZSgpOworICAgIH0KKyAgICAKICAgICBwcml2YXRlIElCaW5kZXIgbVJlbW90ZTsKIH0KZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9BY3Rpdml0eVRocmVhZC5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0FjdGl2aXR5VGhyZWFkLmphdmEKaW5kZXggNzczYzM0NC4uODgzMzY2YiAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0FjdGl2aXR5VGhyZWFkLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0FjdGl2aXR5VGhyZWFkLmphdmEKQEAgLTI1LDcgKzI1LDYgQEAKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSUNvbnRlbnRQcm92aWRlcjsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50OwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5JSW50ZW50UmVjZWl2ZXI7Ci1pbXBvcnQgYW5kcm9pZC5jb250ZW50LlNlcnZpY2VDb25uZWN0aW9uOwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5BY3Rpdml0eUluZm87CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLkFwcGxpY2F0aW9uSW5mbzsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uSVBhY2thZ2VNYW5hZ2VyOwpAQCAtNDIsNiArNDEsNyBAQAogaW1wb3J0IGFuZHJvaWQuZGF0YWJhc2Uuc3FsaXRlLlNRTGl0ZURlYnVnLkRiU3RhdHM7CiBpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5CaXRtYXA7CiBpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5DYW52YXM7CitpbXBvcnQgYW5kcm9pZC5vcy5CdWlsZDsKIGltcG9ydCBhbmRyb2lkLm9zLkJ1bmRsZTsKIGltcG9ydCBhbmRyb2lkLm9zLkRlYnVnOwogaW1wb3J0IGFuZHJvaWQub3MuSGFuZGxlcjsKQEAgLTUzLDYgKzUzLDcgQEAKIGltcG9ydCBhbmRyb2lkLm9zLlByb2Nlc3M7CiBpbXBvcnQgYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb247CiBpbXBvcnQgYW5kcm9pZC5vcy5TZXJ2aWNlTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLm9zLlN0cmljdE1vZGU7CiBpbXBvcnQgYW5kcm9pZC5vcy5TeXN0ZW1DbG9jazsKIGltcG9ydCBhbmRyb2lkLnV0aWwuQW5kcm9pZFJ1bnRpbWVFeGNlcHRpb247CiBpbXBvcnQgYW5kcm9pZC51dGlsLkNvbmZpZzsKQEAgLTcyLDcgKzczLDYgQEAKIGltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5vcy5CaW5kZXJJbnRlcm5hbDsKIGltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5vcy5SdW50aW1lSW5pdDsKIGltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5vcy5TYW1wbGluZ1Byb2ZpbGVySW50ZWdyYXRpb247Ci1pbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudXRpbC5BcnJheVV0aWxzOwogCiBpbXBvcnQgb3JnLmFwYWNoZS5oYXJtb255LnhuZXQucHJvdmlkZXIuanNzZS5PcGVuU1NMU29ja2V0SW1wbDsKIApAQCAtODAsMTIgKzgwLDkgQEAKIGltcG9ydCBqYXZhLmlvLkZpbGVEZXNjcmlwdG9yOwogaW1wb3J0IGphdmEuaW8uRmlsZU91dHB1dFN0cmVhbTsKIGltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07CiBpbXBvcnQgamF2YS5pby5QcmludFdyaXRlcjsKIGltcG9ydCBqYXZhLmxhbmcucmVmLldlYWtSZWZlcmVuY2U7Ci1pbXBvcnQgamF2YS5uZXQuVVJMOwogaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOwogaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwogaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsKQEAgLTk2LDI0ICs5MywxOCBAQAogCiBpbXBvcnQgZGFsdmlrLnN5c3RlbS5TYW1wbGluZ1Byb2ZpbGVyOwogCi1maW5hbCBjbGFzcyBJbnRlbnRSZWNlaXZlckxlYWtlZCBleHRlbmRzIEFuZHJvaWRSdW50aW1lRXhjZXB0aW9uIHsKLSAgICBwdWJsaWMgSW50ZW50UmVjZWl2ZXJMZWFrZWQoU3RyaW5nIG1zZykgewotICAgICAgICBzdXBlcihtc2cpOwotICAgIH0KLX0KLQotZmluYWwgY2xhc3MgU2VydmljZUNvbm5lY3Rpb25MZWFrZWQgZXh0ZW5kcyBBbmRyb2lkUnVudGltZUV4Y2VwdGlvbiB7Ci0gICAgcHVibGljIFNlcnZpY2VDb25uZWN0aW9uTGVha2VkKFN0cmluZyBtc2cpIHsKLSAgICAgICAgc3VwZXIobXNnKTsKLSAgICB9Ci19Ci0KIGZpbmFsIGNsYXNzIFN1cGVyTm90Q2FsbGVkRXhjZXB0aW9uIGV4dGVuZHMgQW5kcm9pZFJ1bnRpbWVFeGNlcHRpb24gewogICAgIHB1YmxpYyBTdXBlck5vdENhbGxlZEV4Y2VwdGlvbihTdHJpbmcgbXNnKSB7CiAgICAgICAgIHN1cGVyKG1zZyk7CiAgICAgfQogfQogCitmaW5hbCBjbGFzcyBSZW1vdGVTZXJ2aWNlRXhjZXB0aW9uIGV4dGVuZHMgQW5kcm9pZFJ1bnRpbWVFeGNlcHRpb24geworICAgIHB1YmxpYyBSZW1vdGVTZXJ2aWNlRXhjZXB0aW9uKFN0cmluZyBtc2cpIHsKKyAgICAgICAgc3VwZXIobXNnKTsKKyAgICB9Cit9CisKIC8qKgogICogVGhpcyBtYW5hZ2VzIHRoZSBleGVjdXRpb24gb2YgdGhlIG1haW4gdGhyZWFkIGluIGFuCiAgKiBhcHBsaWNhdGlvbiBwcm9jZXNzLCBzY2hlZHVsaW5nIGFuZCBleGVjdXRpbmcgYWN0aXZpdGllcywKQEAgLTEyMywxMCArMTE0LDEwIEBACiAgKiB7QGhpZGV9CiAgKi8KIHB1YmxpYyBmaW5hbCBjbGFzcyBBY3Rpdml0eVRocmVhZCB7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9ICJBY3Rpdml0eVRocmVhZCI7CisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSAiQWN0aXZpdHlUaHJlYWQiOwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gREVCVUcgPSBmYWxzZTsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIGxvY2FsTE9HViA9IERFQlVHID8gQ29uZmlnLkxPR0QgOiBDb25maWcuTE9HVjsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIERFQlVHX0JST0FEQ0FTVCA9IGZhbHNlOworICAgIHN0YXRpYyBmaW5hbCBib29sZWFuIGxvY2FsTE9HViA9IERFQlVHID8gQ29uZmlnLkxPR0QgOiBDb25maWcuTE9HVjsKKyAgICBzdGF0aWMgZmluYWwgYm9vbGVhbiBERUJVR19CUk9BRENBU1QgPSBmYWxzZTsKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIERFQlVHX1JFU1VMVFMgPSBmYWxzZTsKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIERFQlVHX0JBQ0tVUCA9IGZhbHNlOwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gREVCVUdfQ09ORklHVVJBVElPTiA9IGZhbHNlOwpAQCAtMTM2LDExNjIgKzEyNyw2NSBAQAogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBMT0dfT05fUEFVU0VfQ0FMTEVEID0gMzAwMjE7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExPR19PTl9SRVNVTUVfQ0FMTEVEID0gMzAwMjI7CiAKKyAgICBzdGF0aWMgQ29udGV4dEltcGwgbVN5c3RlbUNvbnRleHQgPSBudWxsOwogCi0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBBY3Rpdml0eVRocmVhZCBjdXJyZW50QWN0aXZpdHlUaHJlYWQoKSB7Ci0gICAgICAgIHJldHVybiAoQWN0aXZpdHlUaHJlYWQpc1RocmVhZExvY2FsLmdldCgpOwotICAgIH0KKyAgICBzdGF0aWMgSVBhY2thZ2VNYW5hZ2VyIHNQYWNrYWdlTWFuYWdlcjsKIAotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIGN1cnJlbnRQYWNrYWdlTmFtZSgpCi0gICAgewotICAgICAgICBBY3Rpdml0eVRocmVhZCBhbSA9IGN1cnJlbnRBY3Rpdml0eVRocmVhZCgpOwotICAgICAgICByZXR1cm4gKGFtICE9IG51bGwgJiYgYW0ubUJvdW5kQXBwbGljYXRpb24gIT0gbnVsbCkKLSAgICAgICAgICAgID8gYW0ubUJvdW5kQXBwbGljYXRpb24ucHJvY2Vzc05hbWUgOiBudWxsOwotICAgIH0KKyAgICBmaW5hbCBBcHBsaWNhdGlvblRocmVhZCBtQXBwVGhyZWFkID0gbmV3IEFwcGxpY2F0aW9uVGhyZWFkKCk7CisgICAgZmluYWwgTG9vcGVyIG1Mb29wZXIgPSBMb29wZXIubXlMb29wZXIoKTsKKyAgICBmaW5hbCBIIG1IID0gbmV3IEgoKTsKKyAgICBmaW5hbCBIYXNoTWFwPElCaW5kZXIsIEFjdGl2aXR5Q2xpZW50UmVjb3JkPiBtQWN0aXZpdGllcworICAgICAgICAgICAgPSBuZXcgSGFzaE1hcDxJQmluZGVyLCBBY3Rpdml0eUNsaWVudFJlY29yZD4oKTsKKyAgICAvLyBMaXN0IG9mIG5ldyBhY3Rpdml0aWVzICh2aWEgQWN0aXZpdHlSZWNvcmQubmV4dElkbGUpIHRoYXQgc2hvdWxkCisgICAgLy8gYmUgcmVwb3J0ZWQgd2hlbiBuZXh0IHdlIGlkbGUuCisgICAgQWN0aXZpdHlDbGllbnRSZWNvcmQgbU5ld0FjdGl2aXRpZXMgPSBudWxsOworICAgIC8vIE51bWJlciBvZiBhY3Rpdml0aWVzIHRoYXQgYXJlIGN1cnJlbnRseSB2aXNpYmxlIG9uLXNjcmVlbi4KKyAgICBpbnQgbU51bVZpc2libGVBY3Rpdml0aWVzID0gMDsKKyAgICBmaW5hbCBIYXNoTWFwPElCaW5kZXIsIFNlcnZpY2U+IG1TZXJ2aWNlcworICAgICAgICAgICAgPSBuZXcgSGFzaE1hcDxJQmluZGVyLCBTZXJ2aWNlPigpOworICAgIEFwcEJpbmREYXRhIG1Cb3VuZEFwcGxpY2F0aW9uOworICAgIENvbmZpZ3VyYXRpb24gbUNvbmZpZ3VyYXRpb247CisgICAgQ29uZmlndXJhdGlvbiBtUmVzQ29uZmlndXJhdGlvbjsKKyAgICBBcHBsaWNhdGlvbiBtSW5pdGlhbEFwcGxpY2F0aW9uOworICAgIGZpbmFsIEFycmF5TGlzdDxBcHBsaWNhdGlvbj4gbUFsbEFwcGxpY2F0aW9ucworICAgICAgICAgICAgPSBuZXcgQXJyYXlMaXN0PEFwcGxpY2F0aW9uPigpOworICAgIC8vIHNldCBvZiBpbnN0YW50aWF0ZWQgYmFja3VwIGFnZW50cywga2V5ZWQgYnkgcGFja2FnZSBuYW1lCisgICAgZmluYWwgSGFzaE1hcDxTdHJpbmcsIEJhY2t1cEFnZW50PiBtQmFja3VwQWdlbnRzID0gbmV3IEhhc2hNYXA8U3RyaW5nLCBCYWNrdXBBZ2VudD4oKTsKKyAgICBzdGF0aWMgZmluYWwgVGhyZWFkTG9jYWwgc1RocmVhZExvY2FsID0gbmV3IFRocmVhZExvY2FsKCk7CisgICAgSW5zdHJ1bWVudGF0aW9uIG1JbnN0cnVtZW50YXRpb247CisgICAgU3RyaW5nIG1JbnN0cnVtZW50YXRpb25BcHBEaXIgPSBudWxsOworICAgIFN0cmluZyBtSW5zdHJ1bWVudGF0aW9uQXBwUGFja2FnZSA9IG51bGw7CisgICAgU3RyaW5nIG1JbnN0cnVtZW50ZWRBcHBEaXIgPSBudWxsOworICAgIGJvb2xlYW4gbVN5c3RlbVRocmVhZCA9IGZhbHNlOworICAgIGJvb2xlYW4gbUppdEVuYWJsZWQgPSBmYWxzZTsKIAotICAgIHB1YmxpYyBzdGF0aWMgSVBhY2thZ2VNYW5hZ2VyIGdldFBhY2thZ2VNYW5hZ2VyKCkgewotICAgICAgICBpZiAoc1BhY2thZ2VNYW5hZ2VyICE9IG51bGwpIHsKLSAgICAgICAgICAgIC8vU2xvZy52KCJQYWNrYWdlTWFuYWdlciIsICJyZXR1cm5pbmcgY3VyIGRlZmF1bHQgPSAiICsgc1BhY2thZ2VNYW5hZ2VyKTsKLSAgICAgICAgICAgIHJldHVybiBzUGFja2FnZU1hbmFnZXI7Ci0gICAgICAgIH0KLSAgICAgICAgSUJpbmRlciBiID0gU2VydmljZU1hbmFnZXIuZ2V0U2VydmljZSgicGFja2FnZSIpOwotICAgICAgICAvL1Nsb2cudigiUGFja2FnZU1hbmFnZXIiLCAiZGVmYXVsdCBzZXJ2aWNlIGJpbmRlciA9ICIgKyBiKTsKLSAgICAgICAgc1BhY2thZ2VNYW5hZ2VyID0gSVBhY2thZ2VNYW5hZ2VyLlN0dWIuYXNJbnRlcmZhY2UoYik7Ci0gICAgICAgIC8vU2xvZy52KCJQYWNrYWdlTWFuYWdlciIsICJkZWZhdWx0IHNlcnZpY2UgPSAiICsgc1BhY2thZ2VNYW5hZ2VyKTsKLSAgICAgICAgcmV0dXJuIHNQYWNrYWdlTWFuYWdlcjsKLSAgICB9CisgICAgLy8gVGhlc2UgY2FuIGJlIGFjY2Vzc2VkIGJ5IG11bHRpcGxlIHRocmVhZHM7IG1QYWNrYWdlcyBpcyB0aGUgbG9jay4KKyAgICAvLyBYWFggRm9yIG5vdyB3ZSBrZWVwIGFyb3VuZCBpbmZvcm1hdGlvbiBhYm91dCBhbGwgcGFja2FnZXMgd2UgaGF2ZQorICAgIC8vIHNlZW4sIG5vdCByZW1vdmluZyBlbnRyaWVzIGZyb20gdGhpcyBtYXAuCisgICAgZmluYWwgSGFzaE1hcDxTdHJpbmcsIFdlYWtSZWZlcmVuY2U8TG9hZGVkQXBrPj4gbVBhY2thZ2VzCisgICAgICAgICAgICA9IG5ldyBIYXNoTWFwPFN0cmluZywgV2Vha1JlZmVyZW5jZTxMb2FkZWRBcGs+PigpOworICAgIGZpbmFsIEhhc2hNYXA8U3RyaW5nLCBXZWFrUmVmZXJlbmNlPExvYWRlZEFwaz4+IG1SZXNvdXJjZVBhY2thZ2VzCisgICAgICAgICAgICA9IG5ldyBIYXNoTWFwPFN0cmluZywgV2Vha1JlZmVyZW5jZTxMb2FkZWRBcGs+PigpOworICAgIERpc3BsYXkgbURpc3BsYXkgPSBudWxsOworICAgIERpc3BsYXlNZXRyaWNzIG1EaXNwbGF5TWV0cmljcyA9IG51bGw7CisgICAgZmluYWwgSGFzaE1hcDxSZXNvdXJjZXNLZXksIFdlYWtSZWZlcmVuY2U8UmVzb3VyY2VzPiA+IG1BY3RpdmVSZXNvdXJjZXMKKyAgICAgICAgICAgID0gbmV3IEhhc2hNYXA8UmVzb3VyY2VzS2V5LCBXZWFrUmVmZXJlbmNlPFJlc291cmNlcz4gPigpOworICAgIGZpbmFsIEFycmF5TGlzdDxBY3Rpdml0eUNsaWVudFJlY29yZD4gbVJlbGF1bmNoaW5nQWN0aXZpdGllcworICAgICAgICAgICAgPSBuZXcgQXJyYXlMaXN0PEFjdGl2aXR5Q2xpZW50UmVjb3JkPigpOworICAgIENvbmZpZ3VyYXRpb24gbVBlbmRpbmdDb25maWd1cmF0aW9uID0gbnVsbDsKIAotICAgIERpc3BsYXlNZXRyaWNzIGdldERpc3BsYXlNZXRyaWNzTG9ja2VkKGJvb2xlYW4gZm9yY2VVcGRhdGUpIHsKLSAgICAgICAgaWYgKG1EaXNwbGF5TWV0cmljcyAhPSBudWxsICYmICFmb3JjZVVwZGF0ZSkgewotICAgICAgICAgICAgcmV0dXJuIG1EaXNwbGF5TWV0cmljczsKLSAgICAgICAgfQotICAgICAgICBpZiAobURpc3BsYXkgPT0gbnVsbCkgewotICAgICAgICAgICAgV2luZG93TWFuYWdlciB3bSA9IFdpbmRvd01hbmFnZXJJbXBsLmdldERlZmF1bHQoKTsKLSAgICAgICAgICAgIG1EaXNwbGF5ID0gd20uZ2V0RGVmYXVsdERpc3BsYXkoKTsKLSAgICAgICAgfQotICAgICAgICBEaXNwbGF5TWV0cmljcyBtZXRyaWNzID0gbURpc3BsYXlNZXRyaWNzID0gbmV3IERpc3BsYXlNZXRyaWNzKCk7Ci0gICAgICAgIG1EaXNwbGF5LmdldE1ldHJpY3MobWV0cmljcyk7Ci0gICAgICAgIC8vU2xvZy5pKCJmb28iLCAiTmV3IG1ldHJpY3M6IHc9IiArIG1ldHJpY3Mud2lkdGhQaXhlbHMgKyAiIGg9IgotICAgICAgICAvLyAgICAgICAgKyBtZXRyaWNzLmhlaWdodFBpeGVscyArICIgZGVuPSIgKyBtZXRyaWNzLmRlbnNpdHkKLSAgICAgICAgLy8gICAgICAgICsgIiB4ZHBpPSIgKyBtZXRyaWNzLnhkcGkgKyAiIHlkcGk9IiArIG1ldHJpY3MueWRwaSk7Ci0gICAgICAgIHJldHVybiBtZXRyaWNzOwotICAgIH0KKyAgICAvLyBUaGUgbG9jayBvZiBtUHJvdmlkZXJNYXAgcHJvdGVjdHMgdGhlIGZvbGxvd2luZyB2YXJpYWJsZXMuCisgICAgZmluYWwgSGFzaE1hcDxTdHJpbmcsIFByb3ZpZGVyQ2xpZW50UmVjb3JkPiBtUHJvdmlkZXJNYXAKKyAgICAgICAgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIFByb3ZpZGVyQ2xpZW50UmVjb3JkPigpOworICAgIGZpbmFsIEhhc2hNYXA8SUJpbmRlciwgUHJvdmlkZXJSZWZDb3VudD4gbVByb3ZpZGVyUmVmQ291bnRNYXAKKyAgICAgICAgPSBuZXcgSGFzaE1hcDxJQmluZGVyLCBQcm92aWRlclJlZkNvdW50PigpOworICAgIGZpbmFsIEhhc2hNYXA8SUJpbmRlciwgUHJvdmlkZXJDbGllbnRSZWNvcmQ+IG1Mb2NhbFByb3ZpZGVycworICAgICAgICA9IG5ldyBIYXNoTWFwPElCaW5kZXIsIFByb3ZpZGVyQ2xpZW50UmVjb3JkPigpOwogCi0gICAgLyoqCi0gICAgICogQ3JlYXRlcyB0aGUgdG9wIGxldmVsIFJlc291cmNlcyBmb3IgYXBwbGljYXRpb25zIHdpdGggdGhlIGdpdmVuIGNvbXBhdGliaWxpdHkgaW5mby4KLSAgICAgKgotICAgICAqIEBwYXJhbSByZXNEaXIgdGhlIHJlc291cmNlIGRpcmVjdG9yeS4KLSAgICAgKiBAcGFyYW0gY29tcEluZm8gdGhlIGNvbXBhYmlsaXR5IGluZm8uIEl0IHdpbGwgdXNlIHRoZSBkZWZhdWx0IGNvbXBhdGliaWxpdHkgaW5mbyB3aGVuIGl0J3MKLSAgICAgKiBudWxsLgotICAgICAqLwotICAgIFJlc291cmNlcyBnZXRUb3BMZXZlbFJlc291cmNlcyhTdHJpbmcgcmVzRGlyLCBDb21wYXRpYmlsaXR5SW5mbyBjb21wSW5mbykgewotICAgICAgICBSZXNvdXJjZXNLZXkga2V5ID0gbmV3IFJlc291cmNlc0tleShyZXNEaXIsIGNvbXBJbmZvLmFwcGxpY2F0aW9uU2NhbGUpOwotICAgICAgICBSZXNvdXJjZXMgcjsKLSAgICAgICAgc3luY2hyb25pemVkIChtUGFja2FnZXMpIHsKLSAgICAgICAgICAgIC8vIFJlc291cmNlcyBpcyBhcHAgc2NhbGUgZGVwZW5kZW50LgotICAgICAgICAgICAgaWYgKGZhbHNlKSB7Ci0gICAgICAgICAgICAgICAgU2xvZy53KFRBRywgImdldFRvcExldmVsUmVzb3VyY2VzOiAiICsgcmVzRGlyICsgIiAvICIKLSAgICAgICAgICAgICAgICAgICAgICAgICsgY29tcEluZm8uYXBwbGljYXRpb25TY2FsZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBXZWFrUmVmZXJlbmNlPFJlc291cmNlcz4gd3IgPSBtQWN0aXZlUmVzb3VyY2VzLmdldChrZXkpOwotICAgICAgICAgICAgciA9IHdyICE9IG51bGwgPyB3ci5nZXQoKSA6IG51bGw7Ci0gICAgICAgICAgICAvL2lmIChyICE9IG51bGwpIFNsb2cuaShUQUcsICJpc1VwVG9EYXRlICIgKyByZXNEaXIgKyAiOiAiICsgci5nZXRBc3NldHMoKS5pc1VwVG9EYXRlKCkpOwotICAgICAgICAgICAgaWYgKHIgIT0gbnVsbCAmJiByLmdldEFzc2V0cygpLmlzVXBUb0RhdGUoKSkgewotICAgICAgICAgICAgICAgIGlmIChmYWxzZSkgewotICAgICAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiUmV0dXJuaW5nIGNhY2hlZCByZXNvdXJjZXMgIiArIHIgKyAiICIgKyByZXNEaXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICArICI6IGFwcFNjYWxlPSIgKyByLmdldENvbXBhdGliaWxpdHlJbmZvKCkuYXBwbGljYXRpb25TY2FsZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiByOwotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgZmluYWwgR2NJZGxlciBtR2NJZGxlciA9IG5ldyBHY0lkbGVyKCk7CisgICAgYm9vbGVhbiBtR2NJZGxlclNjaGVkdWxlZCA9IGZhbHNlOwogCi0gICAgICAgIC8vaWYgKHIgIT0gbnVsbCkgewotICAgICAgICAvLyAgICBTbG9nLncoVEFHLCAiVGhyb3dpbmcgYXdheSBvdXQtb2YtZGF0ZSByZXNvdXJjZXMhISEhICIKLSAgICAgICAgLy8gICAgICAgICAgICArIHIgKyAiICIgKyByZXNEaXIpOwotICAgICAgICAvL30KLQotICAgICAgICBBc3NldE1hbmFnZXIgYXNzZXRzID0gbmV3IEFzc2V0TWFuYWdlcigpOwotICAgICAgICBpZiAoYXNzZXRzLmFkZEFzc2V0UGF0aChyZXNEaXIpID09IDApIHsKLSAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICB9Ci0KLSAgICAgICAgLy9TbG9nLmkoVEFHLCAiUmVzb3VyY2U6IGtleT0iICsga2V5ICsgIiwgZGlzcGxheSBtZXRyaWNzPSIgKyBtZXRyaWNzKTsKLSAgICAgICAgRGlzcGxheU1ldHJpY3MgbWV0cmljcyA9IGdldERpc3BsYXlNZXRyaWNzTG9ja2VkKGZhbHNlKTsKLSAgICAgICAgciA9IG5ldyBSZXNvdXJjZXMoYXNzZXRzLCBtZXRyaWNzLCBnZXRDb25maWd1cmF0aW9uKCksIGNvbXBJbmZvKTsKLSAgICAgICAgaWYgKGZhbHNlKSB7Ci0gICAgICAgICAgICBTbG9nLmkoVEFHLCAiQ3JlYXRlZCBhcHAgcmVzb3VyY2VzICIgKyByZXNEaXIgKyAiICIgKyByICsgIjogIgotICAgICAgICAgICAgICAgICAgICArIHIuZ2V0Q29uZmlndXJhdGlvbigpICsgIiBhcHBTY2FsZT0iCi0gICAgICAgICAgICAgICAgICAgICsgci5nZXRDb21wYXRpYmlsaXR5SW5mbygpLmFwcGxpY2F0aW9uU2NhbGUpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBzeW5jaHJvbml6ZWQgKG1QYWNrYWdlcykgewotICAgICAgICAgICAgV2Vha1JlZmVyZW5jZTxSZXNvdXJjZXM+IHdyID0gbUFjdGl2ZVJlc291cmNlcy5nZXQoa2V5KTsKLSAgICAgICAgICAgIFJlc291cmNlcyBleGlzdGluZyA9IHdyICE9IG51bGwgPyB3ci5nZXQoKSA6IG51bGw7Ci0gICAgICAgICAgICBpZiAoZXhpc3RpbmcgIT0gbnVsbCAmJiBleGlzdGluZy5nZXRBc3NldHMoKS5pc1VwVG9EYXRlKCkpIHsKLSAgICAgICAgICAgICAgICAvLyBTb21lb25lIGVsc2UgYWxyZWFkeSBjcmVhdGVkIHRoZSByZXNvdXJjZXMgd2hpbGUgd2Ugd2VyZQotICAgICAgICAgICAgICAgIC8vIHVubG9ja2VkOyBnbyBhaGVhZCBhbmQgdXNlIHRoZWlycy4KLSAgICAgICAgICAgICAgICByLmdldEFzc2V0cygpLmNsb3NlKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGV4aXN0aW5nOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBYWFggbmVlZCB0byByZW1vdmUgZW50cmllcyB3aGVuIHdlYWsgcmVmZXJlbmNlcyBnbyBhd2F5Ci0gICAgICAgICAgICBtQWN0aXZlUmVzb3VyY2VzLnB1dChrZXksIG5ldyBXZWFrUmVmZXJlbmNlPFJlc291cmNlcz4ocikpOwotICAgICAgICAgICAgcmV0dXJuIHI7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBDcmVhdGVzIHRoZSB0b3AgbGV2ZWwgcmVzb3VyY2VzIGZvciB0aGUgZ2l2ZW4gcGFja2FnZS4KLSAgICAgKi8KLSAgICBSZXNvdXJjZXMgZ2V0VG9wTGV2ZWxSZXNvdXJjZXMoU3RyaW5nIHJlc0RpciwgUGFja2FnZUluZm8gcGtnSW5mbykgewotICAgICAgICByZXR1cm4gZ2V0VG9wTGV2ZWxSZXNvdXJjZXMocmVzRGlyLCBwa2dJbmZvLm1Db21wYXRpYmlsaXR5SW5mbyk7Ci0gICAgfQotCi0gICAgZmluYWwgSGFuZGxlciBnZXRIYW5kbGVyKCkgewotICAgICAgICByZXR1cm4gbUg7Ci0gICAgfQotCi0gICAgcHVibGljIGZpbmFsIHN0YXRpYyBjbGFzcyBQYWNrYWdlSW5mbyB7Ci0KLSAgICAgICAgcHJpdmF0ZSBmaW5hbCBBY3Rpdml0eVRocmVhZCBtQWN0aXZpdHlUaHJlYWQ7Ci0gICAgICAgIHByaXZhdGUgZmluYWwgQXBwbGljYXRpb25JbmZvIG1BcHBsaWNhdGlvbkluZm87Ci0gICAgICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIG1QYWNrYWdlTmFtZTsKLSAgICAgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgbUFwcERpcjsKLSAgICAgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgbVJlc0RpcjsKLSAgICAgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmdbXSBtU2hhcmVkTGlicmFyaWVzOwotICAgICAgICBwcml2YXRlIGZpbmFsIFN0cmluZyBtRGF0YURpcjsKLSAgICAgICAgcHJpdmF0ZSBmaW5hbCBGaWxlIG1EYXRhRGlyRmlsZTsKLSAgICAgICAgcHJpdmF0ZSBmaW5hbCBDbGFzc0xvYWRlciBtQmFzZUNsYXNzTG9hZGVyOwotICAgICAgICBwcml2YXRlIGZpbmFsIGJvb2xlYW4gbVNlY3VyaXR5VmlvbGF0aW9uOwotICAgICAgICBwcml2YXRlIGZpbmFsIGJvb2xlYW4gbUluY2x1ZGVDb2RlOwotICAgICAgICBwcml2YXRlIFJlc291cmNlcyBtUmVzb3VyY2VzOwotICAgICAgICBwcml2YXRlIENsYXNzTG9hZGVyIG1DbGFzc0xvYWRlcjsKLSAgICAgICAgcHJpdmF0ZSBBcHBsaWNhdGlvbiBtQXBwbGljYXRpb247Ci0gICAgICAgIHByaXZhdGUgQ29tcGF0aWJpbGl0eUluZm8gbUNvbXBhdGliaWxpdHlJbmZvOwotCi0gICAgICAgIHByaXZhdGUgZmluYWwgSGFzaE1hcDxDb250ZXh0LCBIYXNoTWFwPEJyb2FkY2FzdFJlY2VpdmVyLCBSZWNlaXZlckRpc3BhdGNoZXI+PiBtUmVjZWl2ZXJzCi0gICAgICAgICAgICA9IG5ldyBIYXNoTWFwPENvbnRleHQsIEhhc2hNYXA8QnJvYWRjYXN0UmVjZWl2ZXIsIFJlY2VpdmVyRGlzcGF0Y2hlcj4+KCk7Ci0gICAgICAgIHByaXZhdGUgZmluYWwgSGFzaE1hcDxDb250ZXh0LCBIYXNoTWFwPEJyb2FkY2FzdFJlY2VpdmVyLCBSZWNlaXZlckRpc3BhdGNoZXI+PiBtVW5yZWdpc3RlcmVkUmVjZWl2ZXJzCi0gICAgICAgID0gbmV3IEhhc2hNYXA8Q29udGV4dCwgSGFzaE1hcDxCcm9hZGNhc3RSZWNlaXZlciwgUmVjZWl2ZXJEaXNwYXRjaGVyPj4oKTsKLSAgICAgICAgcHJpdmF0ZSBmaW5hbCBIYXNoTWFwPENvbnRleHQsIEhhc2hNYXA8U2VydmljZUNvbm5lY3Rpb24sIFNlcnZpY2VEaXNwYXRjaGVyPj4gbVNlcnZpY2VzCi0gICAgICAgICAgICA9IG5ldyBIYXNoTWFwPENvbnRleHQsIEhhc2hNYXA8U2VydmljZUNvbm5lY3Rpb24sIFNlcnZpY2VEaXNwYXRjaGVyPj4oKTsKLSAgICAgICAgcHJpdmF0ZSBmaW5hbCBIYXNoTWFwPENvbnRleHQsIEhhc2hNYXA8U2VydmljZUNvbm5lY3Rpb24sIFNlcnZpY2VEaXNwYXRjaGVyPj4gbVVuYm91bmRTZXJ2aWNlcwotICAgICAgICAgICAgPSBuZXcgSGFzaE1hcDxDb250ZXh0LCBIYXNoTWFwPFNlcnZpY2VDb25uZWN0aW9uLCBTZXJ2aWNlRGlzcGF0Y2hlcj4+KCk7Ci0KLSAgICAgICAgaW50IG1DbGllbnRDb3VudCA9IDA7Ci0KLSAgICAgICAgQXBwbGljYXRpb24gZ2V0QXBwbGljYXRpb24oKSB7Ci0gICAgICAgICAgICByZXR1cm4gbUFwcGxpY2F0aW9uOwotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIFBhY2thZ2VJbmZvKEFjdGl2aXR5VGhyZWFkIGFjdGl2aXR5VGhyZWFkLCBBcHBsaWNhdGlvbkluZm8gYUluZm8sCi0gICAgICAgICAgICAgICAgQWN0aXZpdHlUaHJlYWQgbWFpblRocmVhZCwgQ2xhc3NMb2FkZXIgYmFzZUxvYWRlciwKLSAgICAgICAgICAgICAgICBib29sZWFuIHNlY3VyaXR5VmlvbGF0aW9uLCBib29sZWFuIGluY2x1ZGVDb2RlKSB7Ci0gICAgICAgICAgICBtQWN0aXZpdHlUaHJlYWQgPSBhY3Rpdml0eVRocmVhZDsKLSAgICAgICAgICAgIG1BcHBsaWNhdGlvbkluZm8gPSBhSW5mbzsKLSAgICAgICAgICAgIG1QYWNrYWdlTmFtZSA9IGFJbmZvLnBhY2thZ2VOYW1lOwotICAgICAgICAgICAgbUFwcERpciA9IGFJbmZvLnNvdXJjZURpcjsKLSAgICAgICAgICAgIG1SZXNEaXIgPSBhSW5mby51aWQgPT0gUHJvY2Vzcy5teVVpZCgpID8gYUluZm8uc291cmNlRGlyCi0gICAgICAgICAgICAgICAgICAgIDogYUluZm8ucHVibGljU291cmNlRGlyOwotICAgICAgICAgICAgbVNoYXJlZExpYnJhcmllcyA9IGFJbmZvLnNoYXJlZExpYnJhcnlGaWxlczsKLSAgICAgICAgICAgIG1EYXRhRGlyID0gYUluZm8uZGF0YURpcjsKLSAgICAgICAgICAgIG1EYXRhRGlyRmlsZSA9IG1EYXRhRGlyICE9IG51bGwgPyBuZXcgRmlsZShtRGF0YURpcikgOiBudWxsOwotICAgICAgICAgICAgbUJhc2VDbGFzc0xvYWRlciA9IGJhc2VMb2FkZXI7Ci0gICAgICAgICAgICBtU2VjdXJpdHlWaW9sYXRpb24gPSBzZWN1cml0eVZpb2xhdGlvbjsKLSAgICAgICAgICAgIG1JbmNsdWRlQ29kZSA9IGluY2x1ZGVDb2RlOwotICAgICAgICAgICAgbUNvbXBhdGliaWxpdHlJbmZvID0gbmV3IENvbXBhdGliaWxpdHlJbmZvKGFJbmZvKTsKLQotICAgICAgICAgICAgaWYgKG1BcHBEaXIgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgIGlmIChtU3lzdGVtQ29udGV4dCA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1TeXN0ZW1Db250ZXh0ID0KLSAgICAgICAgICAgICAgICAgICAgICAgIENvbnRleHRJbXBsLmNyZWF0ZVN5c3RlbUNvbnRleHQobWFpblRocmVhZCk7Ci0gICAgICAgICAgICAgICAgICAgIG1TeXN0ZW1Db250ZXh0LmdldFJlc291cmNlcygpLnVwZGF0ZUNvbmZpZ3VyYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1haW5UaHJlYWQuZ2V0Q29uZmlndXJhdGlvbigpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYWluVGhyZWFkLmdldERpc3BsYXlNZXRyaWNzTG9ja2VkKGZhbHNlKSk7Ci0gICAgICAgICAgICAgICAgICAgIC8vU2xvZy5pKFRBRywgIkNyZWF0ZWQgc3lzdGVtIHJlc291cmNlcyAiCi0gICAgICAgICAgICAgICAgICAgIC8vICAgICAgICArIG1TeXN0ZW1Db250ZXh0LmdldFJlc291cmNlcygpICsgIjogIgotICAgICAgICAgICAgICAgICAgICAvLyAgICAgICAgKyBtU3lzdGVtQ29udGV4dC5nZXRSZXNvdXJjZXMoKS5nZXRDb25maWd1cmF0aW9uKCkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBtQ2xhc3NMb2FkZXIgPSBtU3lzdGVtQ29udGV4dC5nZXRDbGFzc0xvYWRlcigpOwotICAgICAgICAgICAgICAgIG1SZXNvdXJjZXMgPSBtU3lzdGVtQ29udGV4dC5nZXRSZXNvdXJjZXMoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHB1YmxpYyBQYWNrYWdlSW5mbyhBY3Rpdml0eVRocmVhZCBhY3Rpdml0eVRocmVhZCwgU3RyaW5nIG5hbWUsCi0gICAgICAgICAgICAgICAgQ29udGV4dCBzeXN0ZW1Db250ZXh0LCBBcHBsaWNhdGlvbkluZm8gaW5mbykgewotICAgICAgICAgICAgbUFjdGl2aXR5VGhyZWFkID0gYWN0aXZpdHlUaHJlYWQ7Ci0gICAgICAgICAgICBtQXBwbGljYXRpb25JbmZvID0gaW5mbyAhPSBudWxsID8gaW5mbyA6IG5ldyBBcHBsaWNhdGlvbkluZm8oKTsKLSAgICAgICAgICAgIG1BcHBsaWNhdGlvbkluZm8ucGFja2FnZU5hbWUgPSBuYW1lOwotICAgICAgICAgICAgbVBhY2thZ2VOYW1lID0gbmFtZTsKLSAgICAgICAgICAgIG1BcHBEaXIgPSBudWxsOwotICAgICAgICAgICAgbVJlc0RpciA9IG51bGw7Ci0gICAgICAgICAgICBtU2hhcmVkTGlicmFyaWVzID0gbnVsbDsKLSAgICAgICAgICAgIG1EYXRhRGlyID0gbnVsbDsKLSAgICAgICAgICAgIG1EYXRhRGlyRmlsZSA9IG51bGw7Ci0gICAgICAgICAgICBtQmFzZUNsYXNzTG9hZGVyID0gbnVsbDsKLSAgICAgICAgICAgIG1TZWN1cml0eVZpb2xhdGlvbiA9IGZhbHNlOwotICAgICAgICAgICAgbUluY2x1ZGVDb2RlID0gdHJ1ZTsKLSAgICAgICAgICAgIG1DbGFzc0xvYWRlciA9IHN5c3RlbUNvbnRleHQuZ2V0Q2xhc3NMb2FkZXIoKTsKLSAgICAgICAgICAgIG1SZXNvdXJjZXMgPSBzeXN0ZW1Db250ZXh0LmdldFJlc291cmNlcygpOwotICAgICAgICAgICAgbUNvbXBhdGliaWxpdHlJbmZvID0gbmV3IENvbXBhdGliaWxpdHlJbmZvKG1BcHBsaWNhdGlvbkluZm8pOwotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIFN0cmluZyBnZXRQYWNrYWdlTmFtZSgpIHsKLSAgICAgICAgICAgIHJldHVybiBtUGFja2FnZU5hbWU7Ci0gICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgQXBwbGljYXRpb25JbmZvIGdldEFwcGxpY2F0aW9uSW5mbygpIHsKLSAgICAgICAgICAgIHJldHVybiBtQXBwbGljYXRpb25JbmZvOwotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIGJvb2xlYW4gaXNTZWN1cml0eVZpb2xhdGlvbigpIHsKLSAgICAgICAgICAgIHJldHVybiBtU2VjdXJpdHlWaW9sYXRpb247Ci0gICAgICAgIH0KLQotICAgICAgICAvKioKLSAgICAgICAgICogR2V0cyB0aGUgYXJyYXkgb2Ygc2hhcmVkIGxpYnJhcmllcyB0aGF0IGFyZSBsaXN0ZWQgYXMKLSAgICAgICAgICogdXNlZCBieSB0aGUgZ2l2ZW4gcGFja2FnZS4KLSAgICAgICAgICoKLSAgICAgICAgICogQHBhcmFtIHBhY2thZ2VOYW1lIHRoZSBuYW1lIG9mIHRoZSBwYWNrYWdlIChub3RlOiBub3QgaXRzCi0gICAgICAgICAqIGZpbGUgbmFtZSkKLSAgICAgICAgICogQHJldHVybiBudWxsLW9rOyB0aGUgYXJyYXkgb2Ygc2hhcmVkIGxpYnJhcmllcywgZWFjaCBvbmUKLSAgICAgICAgICogYSBmdWxseS1xdWFsaWZpZWQgcGF0aAotICAgICAgICAgKi8KLSAgICAgICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nW10gZ2V0TGlicmFyaWVzRm9yKFN0cmluZyBwYWNrYWdlTmFtZSkgewotICAgICAgICAgICAgQXBwbGljYXRpb25JbmZvIGFpID0gbnVsbDsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgYWkgPSBnZXRQYWNrYWdlTWFuYWdlcigpLmdldEFwcGxpY2F0aW9uSW5mbyhwYWNrYWdlTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2VNYW5hZ2VyLkdFVF9TSEFSRURfTElCUkFSWV9GSUxFUyk7Ci0gICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25FcnJvcihlKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKGFpID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmV0dXJuIGFpLnNoYXJlZExpYnJhcnlGaWxlczsKLSAgICAgICAgfQotCi0gICAgICAgIC8qKgotICAgICAgICAgKiBDb21iaW5lcyB0d28gYXJyYXlzIChvZiBsaWJyYXJ5IG5hbWVzKSBzdWNoIHRoYXQgdGhleSBhcmUKLSAgICAgICAgICogY29uY2F0ZW5hdGVkIGluIG9yZGVyIGJ1dCBhcmUgZGV2b2lkIG9mIGR1cGxpY2F0ZXMuIFRoZQotICAgICAgICAgKiByZXN1bHQgaXMgYSBzaW5nbGUgc3RyaW5nIHdpdGggdGhlIG5hbWVzIG9mIHRoZSBsaWJyYXJpZXMKLSAgICAgICAgICogc2VwYXJhdGVkIGJ5IGNvbG9ucywgb3IgPGNvZGU+bnVsbDwvY29kZT4gaWYgYm90aCBsaXN0cwotICAgICAgICAgKiB3ZXJlIDxjb2RlPm51bGw8L2NvZGU+IG9yIGVtcHR5LgotICAgICAgICAgKgotICAgICAgICAgKiBAcGFyYW0gbGlzdDEgbnVsbC1vazsgdGhlIGZpcnN0IGxpc3QKLSAgICAgICAgICogQHBhcmFtIGxpc3QyIG51bGwtb2s7IHRoZSBzZWNvbmQgbGlzdAotICAgICAgICAgKiBAcmV0dXJuIG51bGwtb2s7IHRoZSBjb21iaW5hdGlvbgotICAgICAgICAgKi8KLSAgICAgICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIGNvbWJpbmVMaWJzKFN0cmluZ1tdIGxpc3QxLCBTdHJpbmdbXSBsaXN0MikgewotICAgICAgICAgICAgU3RyaW5nQnVpbGRlciByZXN1bHQgPSBuZXcgU3RyaW5nQnVpbGRlcigzMDApOwotICAgICAgICAgICAgYm9vbGVhbiBmaXJzdCA9IHRydWU7Ci0KLSAgICAgICAgICAgIGlmIChsaXN0MSAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgZm9yIChTdHJpbmcgcyA6IGxpc3QxKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChmaXJzdCkgewotICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3QgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJzonKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKHMpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gT25seSBuZWVkIHRvIGNoZWNrIGZvciBkdXBsaWNhdGVzIGlmIGxpc3QxIHdhcyBub24tZW1wdHkuCi0gICAgICAgICAgICBib29sZWFuIGR1cENoZWNrID0gIWZpcnN0OwotCi0gICAgICAgICAgICBpZiAobGlzdDIgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIGZvciAoU3RyaW5nIHMgOiBsaXN0MikgewotICAgICAgICAgICAgICAgICAgICBpZiAoZHVwQ2hlY2sgJiYgQXJyYXlVdGlscy5jb250YWlucyhsaXN0MSwgcykpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKGZpcnN0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmaXJzdCA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnOicpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocyk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgQ2xhc3NMb2FkZXIgZ2V0Q2xhc3NMb2FkZXIoKSB7Ci0gICAgICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKLSAgICAgICAgICAgICAgICBpZiAobUNsYXNzTG9hZGVyICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1DbGFzc0xvYWRlcjsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAobUluY2x1ZGVDb2RlICYmICFtUGFja2FnZU5hbWUuZXF1YWxzKCJhbmRyb2lkIikpIHsKLSAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHppcCA9IG1BcHBEaXI7Ci0KLSAgICAgICAgICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAgICAgICAgICogVGhlIGZvbGxvd2luZyBpcyBhIGJpdCBvZiBhIGhhY2sgdG8gaW5qZWN0Ci0gICAgICAgICAgICAgICAgICAgICAqIGluc3RydW1lbnRhdGlvbiBpbnRvIHRoZSBzeXN0ZW06IElmIHRoZSBhcHAKLSAgICAgICAgICAgICAgICAgICAgICogYmVpbmcgc3RhcnRlZCBtYXRjaGVzIG9uZSBvZiB0aGUgaW5zdHJ1bWVudGF0aW9uIG5hbWVzLAotICAgICAgICAgICAgICAgICAgICAgKiB0aGVuIHdlIGNvbWJpbmUgYm90aCB0aGUgImluc3RydW1lbnRhdGlvbiIgYW5kCi0gICAgICAgICAgICAgICAgICAgICAqICJpbnN0cnVtZW50ZWQiIGFwcCBpbnRvIHRoZSBwYXRoLCBhbG9uZyB3aXRoIHRoZQotICAgICAgICAgICAgICAgICAgICAgKiBjb25jYXRlbmF0aW9uIG9mIGJvdGggYXBwcycgc2hhcmVkIGxpYnJhcnkgbGlzdHMuCi0gICAgICAgICAgICAgICAgICAgICAqLwotCi0gICAgICAgICAgICAgICAgICAgIFN0cmluZyBpbnN0cnVtZW50YXRpb25BcHBEaXIgPQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1BY3Rpdml0eVRocmVhZC5tSW5zdHJ1bWVudGF0aW9uQXBwRGlyOwotICAgICAgICAgICAgICAgICAgICBTdHJpbmcgaW5zdHJ1bWVudGF0aW9uQXBwUGFja2FnZSA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbUFjdGl2aXR5VGhyZWFkLm1JbnN0cnVtZW50YXRpb25BcHBQYWNrYWdlOwotICAgICAgICAgICAgICAgICAgICBTdHJpbmcgaW5zdHJ1bWVudGVkQXBwRGlyID0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQWN0aXZpdHlUaHJlYWQubUluc3RydW1lbnRlZEFwcERpcjsKLSAgICAgICAgICAgICAgICAgICAgU3RyaW5nW10gaW5zdHJ1bWVudGF0aW9uTGlicyA9IG51bGw7Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKG1BcHBEaXIuZXF1YWxzKGluc3RydW1lbnRhdGlvbkFwcERpcikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBtQXBwRGlyLmVxdWFscyhpbnN0cnVtZW50ZWRBcHBEaXIpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB6aXAgPSBpbnN0cnVtZW50YXRpb25BcHBEaXIgKyAiOiIgKyBpbnN0cnVtZW50ZWRBcHBEaXI7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoISBpbnN0cnVtZW50ZWRBcHBEaXIuZXF1YWxzKGluc3RydW1lbnRhdGlvbkFwcERpcikpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0cnVtZW50YXRpb25MaWJzID0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TGlicmFyaWVzRm9yKGluc3RydW1lbnRhdGlvbkFwcFBhY2thZ2UpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKChtU2hhcmVkTGlicmFyaWVzICE9IG51bGwpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGluc3RydW1lbnRhdGlvbkxpYnMgIT0gbnVsbCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHppcCA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tYmluZUxpYnMobVNoYXJlZExpYnJhcmllcywgaW5zdHJ1bWVudGF0aW9uTGlicykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICArICc6JyArIHppcDsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgICAgICAgICAqIFdpdGggYWxsIHRoZSBjb21iaW5hdGlvbiBkb25lIChpZiBuZWNlc3NhcnksIGFjdHVhbGx5Ci0gICAgICAgICAgICAgICAgICAgICAqIGNyZWF0ZSB0aGUgY2xhc3MgbG9hZGVyLgotICAgICAgICAgICAgICAgICAgICAgKi8KLQotICAgICAgICAgICAgICAgICAgICBpZiAobG9jYWxMT0dWKSBTbG9nLnYoVEFHLCAiQ2xhc3MgcGF0aDogIiArIHppcCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgbUNsYXNzTG9hZGVyID0KLSAgICAgICAgICAgICAgICAgICAgICAgIEFwcGxpY2F0aW9uTG9hZGVycy5nZXREZWZhdWx0KCkuZ2V0Q2xhc3NMb2FkZXIoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgemlwLCBtRGF0YURpciwgbUJhc2VDbGFzc0xvYWRlcik7Ci0gICAgICAgICAgICAgICAgICAgIGluaXRpYWxpemVKYXZhQ29udGV4dENsYXNzTG9hZGVyKCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1CYXNlQ2xhc3NMb2FkZXIgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgbUNsYXNzTG9hZGVyID0gQ2xhc3NMb2FkZXIuZ2V0U3lzdGVtQ2xhc3NMb2FkZXIoKTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1DbGFzc0xvYWRlciA9IG1CYXNlQ2xhc3NMb2FkZXI7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1DbGFzc0xvYWRlcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8qKgotICAgICAgICAgKiBTZXR1cCB2YWx1ZSBmb3IgVGhyZWFkLmdldENvbnRleHRDbGFzc0xvYWRlcigpLiBJZiB0aGUKLSAgICAgICAgICogcGFja2FnZSB3aWxsIG5vdCBydW4gaW4gaW4gYSBWTSB3aXRoIG90aGVyIHBhY2thZ2VzLCB3ZSBzZXQKLSAgICAgICAgICogdGhlIEphdmEgY29udGV4dCBDbGFzc0xvYWRlciB0byB0aGUKLSAgICAgICAgICogUGFja2FnZUluZm8uZ2V0Q2xhc3NMb2FkZXIgdmFsdWUuIEhvd2V2ZXIsIGlmIHRoaXMgVk0gY2FuCi0gICAgICAgICAqIGNvbnRhaW4gbXVsdGlwbGUgcGFja2FnZXMsIHdlIGludGVhZCBzZXQgdGhlIEphdmEgY29udGV4dAotICAgICAgICAgKiBDbGFzc0xvYWRlciB0byBhIHByb3h5IHRoYXQgd2lsbCB3YXJuIGFib3V0IHRoZSB1c2Ugb2YgSmF2YQotICAgICAgICAgKiBjb250ZXh0IENsYXNzTG9hZGVycyBhbmQgdGhlbiBmYWxsIHRocm91Z2ggdG8gdXNlIHRoZQotICAgICAgICAgKiBzeXN0ZW0gQ2xhc3NMb2FkZXIuCi0gICAgICAgICAqCi0gICAgICAgICAqIDxwPiBOb3RlIHRoYXQgdGhpcyBpcyBzaW1pbGFyIHRvIGJ1dCBub3QgdGhlIHNhbWUgYXMgdGhlCi0gICAgICAgICAqIGFuZHJvaWQuY29udGVudC5Db250ZXh0LmdldENsYXNzTG9hZGVyKCkuIFdoaWxlIGJvdGgKLSAgICAgICAgICogY29udGV4dCBjbGFzcyBsb2FkZXJzIGFyZSB0eXBpY2FsbHkgc2V0IHRvIHRoZQotICAgICAgICAgKiBQYXRoQ2xhc3NMb2FkZXIgdXNlZCB0byBsb2FkIHRoZSBwYWNrYWdlIGFyY2hpdmUgaW4gdGhlCi0gICAgICAgICAqIHNpbmdsZSBhcHBsaWNhdGlvbiBwZXIgVk0gY2FzZSwgYSBzaW5nbGUgQW5kcm9pZCBwcm9jZXNzCi0gICAgICAgICAqIG1heSBjb250YWluIHNldmVyYWwgQ29udGV4dHMgZXhlY3V0aW5nIG9uIG9uZSB0aHJlYWQgd2l0aAotICAgICAgICAgKiB0aGVpciBvd24gbG9naWNhbCBDbGFzc0xvYWRlcnMgd2hpbGUgdGhlIEphdmEgY29udGV4dAotICAgICAgICAgKiBDbGFzc0xvYWRlciBpcyBhIHRocmVhZCBsb2NhbC4gVGhpcyBpcyB3aHkgaW4gdGhlIGNhc2Ugd2hlbgotICAgICAgICAgKiB3ZSBoYXZlIG11bHRpcGxlIHBhY2thZ2VzIHBlciBWTSB3ZSBkbyBub3Qgc2V0IHRoZSBKYXZhCi0gICAgICAgICAqIGNvbnRleHQgQ2xhc3NMb2FkZXIgdG8gYW4gYXJiaXRyYXJ5IGJ1dCBpbnN0ZWFkIHdhcm4gdGhlCi0gICAgICAgICAqIHVzZXIgdG8gc2V0IHRoZWlyIG93biBpZiB3ZSBkZXRlY3QgdGhhdCB0aGV5IGFyZSB1c2luZyBhCi0gICAgICAgICAqIEphdmEgbGlicmFyeSB0aGF0IGV4cGVjdHMgaXQgdG8gYmUgc2V0LgotICAgICAgICAgKi8KLSAgICAgICAgcHJpdmF0ZSB2b2lkIGluaXRpYWxpemVKYXZhQ29udGV4dENsYXNzTG9hZGVyKCkgewotICAgICAgICAgICAgSVBhY2thZ2VNYW5hZ2VyIHBtID0gZ2V0UGFja2FnZU1hbmFnZXIoKTsKLSAgICAgICAgICAgIGFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlSW5mbyBwaTsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgcGkgPSBwbS5nZXRQYWNrYWdlSW5mbyhtUGFja2FnZU5hbWUsIDApOwotICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRXJyb3IoZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogVHdvIHBvc3NpYmxlIGluZGljYXRpb25zIHRoYXQgdGhpcyBwYWNrYWdlIGNvdWxkIGJlCi0gICAgICAgICAgICAgKiBzaGFyaW5nIGl0cyB2aXJ0dWFsIG1hY2hpbmUgd2l0aCBvdGhlciBwYWNrYWdlczoKLSAgICAgICAgICAgICAqCi0gICAgICAgICAgICAgKiAxLikgdGhlIHNoYXJlZFVzZXJJZCBhdHRyaWJ1dGUgaXMgc2V0IGluIHRoZSBtYW5pZmVzdCwKLSAgICAgICAgICAgICAqICAgICBpbmRpY2F0aW5nIGEgcmVxdWVzdCB0byBzaGFyZSBhIFZNIHdpdGggb3RoZXIKLSAgICAgICAgICAgICAqICAgICBwYWNrYWdlcyB3aXRoIHRoZSBzYW1lIHNoYXJlZFVzZXJJZC4KLSAgICAgICAgICAgICAqCi0gICAgICAgICAgICAgKiAyLikgdGhlIGFwcGxpY2F0aW9uIGVsZW1lbnQgb2YgdGhlIG1hbmlmZXN0IGhhcyBhbgotICAgICAgICAgICAgICogICAgIGF0dHJpYnV0ZSBzcGVjaWZ5aW5nIGEgbm9uLWRlZmF1bHQgcHJvY2VzcyBuYW1lLAotICAgICAgICAgICAgICogICAgIGluZGljYXRpbmcgdGhlIGRlc2lyZSB0byBydW4gaW4gYW5vdGhlciBwYWNrYWdlcyBWTS4KLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgYm9vbGVhbiBzaGFyZWRVc2VySWRTZXQgPSAocGkuc2hhcmVkVXNlcklkICE9IG51bGwpOwotICAgICAgICAgICAgYm9vbGVhbiBwcm9jZXNzTmFtZU5vdERlZmF1bHQgPQotICAgICAgICAgICAgICAgIChwaS5hcHBsaWNhdGlvbkluZm8gIT0gbnVsbCAmJgotICAgICAgICAgICAgICAgICAhbVBhY2thZ2VOYW1lLmVxdWFscyhwaS5hcHBsaWNhdGlvbkluZm8ucHJvY2Vzc05hbWUpKTsKLSAgICAgICAgICAgIGJvb2xlYW4gc2hhcmFibGUgPSAoc2hhcmVkVXNlcklkU2V0IHx8IHByb2Nlc3NOYW1lTm90RGVmYXVsdCk7Ci0gICAgICAgICAgICBDbGFzc0xvYWRlciBjb250ZXh0Q2xhc3NMb2FkZXIgPQotICAgICAgICAgICAgICAgIChzaGFyYWJsZSkKLSAgICAgICAgICAgICAgICA/IG5ldyBXYXJuaW5nQ29udGV4dENsYXNzTG9hZGVyKCkKLSAgICAgICAgICAgICAgICA6IG1DbGFzc0xvYWRlcjsKLSAgICAgICAgICAgIFRocmVhZC5jdXJyZW50VGhyZWFkKCkuc2V0Q29udGV4dENsYXNzTG9hZGVyKGNvbnRleHRDbGFzc0xvYWRlcik7Ci0gICAgICAgIH0KLQotICAgICAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBXYXJuaW5nQ29udGV4dENsYXNzTG9hZGVyIGV4dGVuZHMgQ2xhc3NMb2FkZXIgewotCi0gICAgICAgICAgICBwcml2YXRlIHN0YXRpYyBib29sZWFuIHdhcm5lZCA9IGZhbHNlOwotCi0gICAgICAgICAgICBwcml2YXRlIHZvaWQgd2FybihTdHJpbmcgbWV0aG9kTmFtZSkgewotICAgICAgICAgICAgICAgIGlmICh3YXJuZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB3YXJuZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIFRocmVhZC5jdXJyZW50VGhyZWFkKCkuc2V0Q29udGV4dENsYXNzTG9hZGVyKGdldFBhcmVudCgpKTsKLSAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiQ2xhc3NMb2FkZXIuIiArIG1ldGhvZE5hbWUgKyAiOiAiICsKLSAgICAgICAgICAgICAgICAgICAgICAiVGhlIGNsYXNzIGxvYWRlciByZXR1cm5lZCBieSAiICsKLSAgICAgICAgICAgICAgICAgICAgICAiVGhyZWFkLmdldENvbnRleHRDbGFzc0xvYWRlcigpIG1heSBmYWlsIGZvciBwcm9jZXNzZXMgIiArCi0gICAgICAgICAgICAgICAgICAgICAgInRoYXQgaG9zdCBtdWx0aXBsZSBhcHBsaWNhdGlvbnMuIFlvdSBzaG91bGQgZXhwbGljaXRseSAiICsKLSAgICAgICAgICAgICAgICAgICAgICAic3BlY2lmeSBhIGNvbnRleHQgY2xhc3MgbG9hZGVyLiBGb3IgZXhhbXBsZTogIiArCi0gICAgICAgICAgICAgICAgICAgICAgIlRocmVhZC5zZXRDb250ZXh0Q2xhc3NMb2FkZXIoZ2V0Q2xhc3MoKS5nZXRDbGFzc0xvYWRlcigpKTsiKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgQE92ZXJyaWRlIHB1YmxpYyBVUkwgZ2V0UmVzb3VyY2UoU3RyaW5nIHJlc05hbWUpIHsKLSAgICAgICAgICAgICAgICB3YXJuKCJnZXRSZXNvdXJjZSIpOwotICAgICAgICAgICAgICAgIHJldHVybiBnZXRQYXJlbnQoKS5nZXRSZXNvdXJjZShyZXNOYW1lKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgQE92ZXJyaWRlIHB1YmxpYyBFbnVtZXJhdGlvbjxVUkw+IGdldFJlc291cmNlcyhTdHJpbmcgcmVzTmFtZSkgdGhyb3dzIElPRXhjZXB0aW9uIHsKLSAgICAgICAgICAgICAgICB3YXJuKCJnZXRSZXNvdXJjZXMiKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZ2V0UGFyZW50KCkuZ2V0UmVzb3VyY2VzKHJlc05hbWUpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBAT3ZlcnJpZGUgcHVibGljIElucHV0U3RyZWFtIGdldFJlc291cmNlQXNTdHJlYW0oU3RyaW5nIHJlc05hbWUpIHsKLSAgICAgICAgICAgICAgICB3YXJuKCJnZXRSZXNvdXJjZUFzU3RyZWFtIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGdldFBhcmVudCgpLmdldFJlc291cmNlQXNTdHJlYW0ocmVzTmFtZSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIEBPdmVycmlkZSBwdWJsaWMgQ2xhc3M8Pz4gbG9hZENsYXNzKFN0cmluZyBjbGFzc05hbWUpIHRocm93cyBDbGFzc05vdEZvdW5kRXhjZXB0aW9uIHsKLSAgICAgICAgICAgICAgICB3YXJuKCJsb2FkQ2xhc3MiKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZ2V0UGFyZW50KCkubG9hZENsYXNzKGNsYXNzTmFtZSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIEBPdmVycmlkZSBwdWJsaWMgdm9pZCBzZXRDbGFzc0Fzc2VydGlvblN0YXR1cyhTdHJpbmcgY25hbWUsIGJvb2xlYW4gZW5hYmxlKSB7Ci0gICAgICAgICAgICAgICAgd2Fybigic2V0Q2xhc3NBc3NlcnRpb25TdGF0dXMiKTsKLSAgICAgICAgICAgICAgICBnZXRQYXJlbnQoKS5zZXRDbGFzc0Fzc2VydGlvblN0YXR1cyhjbmFtZSwgZW5hYmxlKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgQE92ZXJyaWRlIHB1YmxpYyB2b2lkIHNldFBhY2thZ2VBc3NlcnRpb25TdGF0dXMoU3RyaW5nIHBuYW1lLCBib29sZWFuIGVuYWJsZSkgewotICAgICAgICAgICAgICAgIHdhcm4oInNldFBhY2thZ2VBc3NlcnRpb25TdGF0dXMiKTsKLSAgICAgICAgICAgICAgICBnZXRQYXJlbnQoKS5zZXRQYWNrYWdlQXNzZXJ0aW9uU3RhdHVzKHBuYW1lLCBlbmFibGUpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBAT3ZlcnJpZGUgcHVibGljIHZvaWQgc2V0RGVmYXVsdEFzc2VydGlvblN0YXR1cyhib29sZWFuIGVuYWJsZSkgewotICAgICAgICAgICAgICAgIHdhcm4oInNldERlZmF1bHRBc3NlcnRpb25TdGF0dXMiKTsKLSAgICAgICAgICAgICAgICBnZXRQYXJlbnQoKS5zZXREZWZhdWx0QXNzZXJ0aW9uU3RhdHVzKGVuYWJsZSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIEBPdmVycmlkZSBwdWJsaWMgdm9pZCBjbGVhckFzc2VydGlvblN0YXR1cygpIHsKLSAgICAgICAgICAgICAgICB3YXJuKCJjbGVhckFzc2VydGlvblN0YXR1cyIpOwotICAgICAgICAgICAgICAgIGdldFBhcmVudCgpLmNsZWFyQXNzZXJ0aW9uU3RhdHVzKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgU3RyaW5nIGdldEFwcERpcigpIHsKLSAgICAgICAgICAgIHJldHVybiBtQXBwRGlyOwotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIFN0cmluZyBnZXRSZXNEaXIoKSB7Ci0gICAgICAgICAgICByZXR1cm4gbVJlc0RpcjsKLSAgICAgICAgfQotCi0gICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0RGF0YURpcigpIHsKLSAgICAgICAgICAgIHJldHVybiBtRGF0YURpcjsKLSAgICAgICAgfQotCi0gICAgICAgIHB1YmxpYyBGaWxlIGdldERhdGFEaXJGaWxlKCkgewotICAgICAgICAgICAgcmV0dXJuIG1EYXRhRGlyRmlsZTsKLSAgICAgICAgfQotCi0gICAgICAgIHB1YmxpYyBBc3NldE1hbmFnZXIgZ2V0QXNzZXRzKEFjdGl2aXR5VGhyZWFkIG1haW5UaHJlYWQpIHsKLSAgICAgICAgICAgIHJldHVybiBnZXRSZXNvdXJjZXMobWFpblRocmVhZCkuZ2V0QXNzZXRzKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgUmVzb3VyY2VzIGdldFJlc291cmNlcyhBY3Rpdml0eVRocmVhZCBtYWluVGhyZWFkKSB7Ci0gICAgICAgICAgICBpZiAobVJlc291cmNlcyA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgbVJlc291cmNlcyA9IG1haW5UaHJlYWQuZ2V0VG9wTGV2ZWxSZXNvdXJjZXMobVJlc0RpciwgdGhpcyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gbVJlc291cmNlczsKLSAgICAgICAgfQotCi0gICAgICAgIHB1YmxpYyBBcHBsaWNhdGlvbiBtYWtlQXBwbGljYXRpb24oYm9vbGVhbiBmb3JjZURlZmF1bHRBcHBDbGFzcywKLSAgICAgICAgICAgICAgICBJbnN0cnVtZW50YXRpb24gaW5zdHJ1bWVudGF0aW9uKSB7Ci0gICAgICAgICAgICBpZiAobUFwcGxpY2F0aW9uICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbUFwcGxpY2F0aW9uOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBBcHBsaWNhdGlvbiBhcHAgPSBudWxsOwotCi0gICAgICAgICAgICBTdHJpbmcgYXBwQ2xhc3MgPSBtQXBwbGljYXRpb25JbmZvLmNsYXNzTmFtZTsKLSAgICAgICAgICAgIGlmIChmb3JjZURlZmF1bHRBcHBDbGFzcyB8fCAoYXBwQ2xhc3MgPT0gbnVsbCkpIHsKLSAgICAgICAgICAgICAgICBhcHBDbGFzcyA9ICJhbmRyb2lkLmFwcC5BcHBsaWNhdGlvbiI7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgamF2YS5sYW5nLkNsYXNzTG9hZGVyIGNsID0gZ2V0Q2xhc3NMb2FkZXIoKTsKLSAgICAgICAgICAgICAgICBDb250ZXh0SW1wbCBhcHBDb250ZXh0ID0gbmV3IENvbnRleHRJbXBsKCk7Ci0gICAgICAgICAgICAgICAgYXBwQ29udGV4dC5pbml0KHRoaXMsIG51bGwsIG1BY3Rpdml0eVRocmVhZCk7Ci0gICAgICAgICAgICAgICAgYXBwID0gbUFjdGl2aXR5VGhyZWFkLm1JbnN0cnVtZW50YXRpb24ubmV3QXBwbGljYXRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICBjbCwgYXBwQ2xhc3MsIGFwcENvbnRleHQpOwotICAgICAgICAgICAgICAgIGFwcENvbnRleHQuc2V0T3V0ZXJDb250ZXh0KGFwcCk7Ci0gICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgIGlmICghbUFjdGl2aXR5VGhyZWFkLm1JbnN0cnVtZW50YXRpb24ub25FeGNlcHRpb24oYXBwLCBlKSkgewotICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICJVbmFibGUgdG8gaW5zdGFudGlhdGUgYXBwbGljYXRpb24gIiArIGFwcENsYXNzCi0gICAgICAgICAgICAgICAgICAgICAgICArICI6ICIgKyBlLnRvU3RyaW5nKCksIGUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1BY3Rpdml0eVRocmVhZC5tQWxsQXBwbGljYXRpb25zLmFkZChhcHApOwotICAgICAgICAgICAgbUFwcGxpY2F0aW9uID0gYXBwOwotCi0gICAgICAgICAgICBpZiAoaW5zdHJ1bWVudGF0aW9uICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICBpbnN0cnVtZW50YXRpb24uY2FsbEFwcGxpY2F0aW9uT25DcmVhdGUoYXBwKTsKLSAgICAgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoIWluc3RydW1lbnRhdGlvbi5vbkV4Y2VwdGlvbihhcHAsIGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVW5hYmxlIHRvIGNyZWF0ZSBhcHBsaWNhdGlvbiAiICsgYXBwLmdldENsYXNzKCkuZ2V0TmFtZSgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiOiAiICsgZS50b1N0cmluZygpLCBlKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgcmV0dXJuIGFwcDsKLSAgICAgICAgfQotCi0gICAgICAgIHB1YmxpYyB2b2lkIHJlbW92ZUNvbnRleHRSZWdpc3RyYXRpb25zKENvbnRleHQgY29udGV4dCwKLSAgICAgICAgICAgICAgICBTdHJpbmcgd2hvLCBTdHJpbmcgd2hhdCkgewotICAgICAgICAgICAgSGFzaE1hcDxCcm9hZGNhc3RSZWNlaXZlciwgUmVjZWl2ZXJEaXNwYXRjaGVyPiBybWFwID0KLSAgICAgICAgICAgICAgICBtUmVjZWl2ZXJzLnJlbW92ZShjb250ZXh0KTsKLSAgICAgICAgICAgIGlmIChybWFwICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBJdGVyYXRvcjxSZWNlaXZlckRpc3BhdGNoZXI+IGl0ID0gcm1hcC52YWx1ZXMoKS5pdGVyYXRvcigpOwotICAgICAgICAgICAgICAgIHdoaWxlIChpdC5oYXNOZXh0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgUmVjZWl2ZXJEaXNwYXRjaGVyIHJkID0gaXQubmV4dCgpOwotICAgICAgICAgICAgICAgICAgICBJbnRlbnRSZWNlaXZlckxlYWtlZCBsZWFrID0gbmV3IEludGVudFJlY2VpdmVyTGVha2VkKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoYXQgKyAiICIgKyB3aG8gKyAiIGhhcyBsZWFrZWQgSW50ZW50UmVjZWl2ZXIgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgcmQuZ2V0SW50ZW50UmVjZWl2ZXIoKSArICIgdGhhdCB3YXMgIiArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yaWdpbmFsbHkgcmVnaXN0ZXJlZCBoZXJlLiBBcmUgeW91IG1pc3NpbmcgYSAiICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2FsbCB0byB1bnJlZ2lzdGVyUmVjZWl2ZXIoKT8iKTsKLSAgICAgICAgICAgICAgICAgICAgbGVhay5zZXRTdGFja1RyYWNlKHJkLmdldExvY2F0aW9uKCkuZ2V0U3RhY2tUcmFjZSgpKTsKLSAgICAgICAgICAgICAgICAgICAgU2xvZy5lKFRBRywgbGVhay5nZXRNZXNzYWdlKCksIGxlYWspOwotICAgICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHlNYW5hZ2VyTmF0aXZlLmdldERlZmF1bHQoKS51bnJlZ2lzdGVyUmVjZWl2ZXIoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJkLmdldElJbnRlbnRSZWNlaXZlcigpKTsKLSAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN5c3RlbSBjcmFzaGVkLCBub3RoaW5nIHdlIGNhbiBkbwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgbVVucmVnaXN0ZXJlZFJlY2VpdmVycy5yZW1vdmUoY29udGV4dCk7Ci0gICAgICAgICAgICAvL1Nsb2cuaShUQUcsICJSZWNlaXZlciByZWdpc3RyYXRpb25zOiAiICsgbVJlY2VpdmVycyk7Ci0gICAgICAgICAgICBIYXNoTWFwPFNlcnZpY2VDb25uZWN0aW9uLCBTZXJ2aWNlRGlzcGF0Y2hlcj4gc21hcCA9Ci0gICAgICAgICAgICAgICAgbVNlcnZpY2VzLnJlbW92ZShjb250ZXh0KTsKLSAgICAgICAgICAgIGlmIChzbWFwICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBJdGVyYXRvcjxTZXJ2aWNlRGlzcGF0Y2hlcj4gaXQgPSBzbWFwLnZhbHVlcygpLml0ZXJhdG9yKCk7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKGl0Lmhhc05leHQoKSkgewotICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlRGlzcGF0Y2hlciBzZCA9IGl0Lm5leHQoKTsKLSAgICAgICAgICAgICAgICAgICAgU2VydmljZUNvbm5lY3Rpb25MZWFrZWQgbGVhayA9IG5ldyBTZXJ2aWNlQ29ubmVjdGlvbkxlYWtlZCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGF0ICsgIiAiICsgd2hvICsgIiBoYXMgbGVha2VkIFNlcnZpY2VDb25uZWN0aW9uICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHNkLmdldFNlcnZpY2VDb25uZWN0aW9uKCkgKyAiIHRoYXQgd2FzIG9yaWdpbmFsbHkgYm91bmQgaGVyZSIpOwotICAgICAgICAgICAgICAgICAgICBsZWFrLnNldFN0YWNrVHJhY2Uoc2QuZ2V0TG9jYXRpb24oKS5nZXRTdGFja1RyYWNlKCkpOwotICAgICAgICAgICAgICAgICAgICBTbG9nLmUoVEFHLCBsZWFrLmdldE1lc3NhZ2UoKSwgbGVhayk7Ci0gICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eU1hbmFnZXJOYXRpdmUuZ2V0RGVmYXVsdCgpLnVuYmluZFNlcnZpY2UoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNkLmdldElTZXJ2aWNlQ29ubmVjdGlvbigpKTsKLSAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN5c3RlbSBjcmFzaGVkLCBub3RoaW5nIHdlIGNhbiBkbwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHNkLmRvRm9yZ2V0KCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgbVVuYm91bmRTZXJ2aWNlcy5yZW1vdmUoY29udGV4dCk7Ci0gICAgICAgICAgICAvL1Nsb2cuaShUQUcsICJTZXJ2aWNlIHJlZ2lzdHJhdGlvbnM6ICIgKyBtU2VydmljZXMpOwotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIElJbnRlbnRSZWNlaXZlciBnZXRSZWNlaXZlckRpc3BhdGNoZXIoQnJvYWRjYXN0UmVjZWl2ZXIgciwKLSAgICAgICAgICAgICAgICBDb250ZXh0IGNvbnRleHQsIEhhbmRsZXIgaGFuZGxlciwKLSAgICAgICAgICAgICAgICBJbnN0cnVtZW50YXRpb24gaW5zdHJ1bWVudGF0aW9uLCBib29sZWFuIHJlZ2lzdGVyZWQpIHsKLSAgICAgICAgICAgIHN5bmNocm9uaXplZCAobVJlY2VpdmVycykgewotICAgICAgICAgICAgICAgIFJlY2VpdmVyRGlzcGF0Y2hlciByZCA9IG51bGw7Ci0gICAgICAgICAgICAgICAgSGFzaE1hcDxCcm9hZGNhc3RSZWNlaXZlciwgUmVjZWl2ZXJEaXNwYXRjaGVyPiBtYXAgPSBudWxsOwotICAgICAgICAgICAgICAgIGlmIChyZWdpc3RlcmVkKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1hcCA9IG1SZWNlaXZlcnMuZ2V0KGNvbnRleHQpOwotICAgICAgICAgICAgICAgICAgICBpZiAobWFwICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJkID0gbWFwLmdldChyKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAocmQgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICByZCA9IG5ldyBSZWNlaXZlckRpc3BhdGNoZXIociwgY29udGV4dCwgaGFuZGxlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0cnVtZW50YXRpb24sIHJlZ2lzdGVyZWQpOwotICAgICAgICAgICAgICAgICAgICBpZiAocmVnaXN0ZXJlZCkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1hcCA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwID0gbmV3IEhhc2hNYXA8QnJvYWRjYXN0UmVjZWl2ZXIsIFJlY2VpdmVyRGlzcGF0Y2hlcj4oKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtUmVjZWl2ZXJzLnB1dChjb250ZXh0LCBtYXApOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgbWFwLnB1dChyLCByZCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICByZC52YWxpZGF0ZShjb250ZXh0LCBoYW5kbGVyKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHJkLmdldElJbnRlbnRSZWNlaXZlcigpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIElJbnRlbnRSZWNlaXZlciBmb3JnZXRSZWNlaXZlckRpc3BhdGNoZXIoQ29udGV4dCBjb250ZXh0LAotICAgICAgICAgICAgICAgIEJyb2FkY2FzdFJlY2VpdmVyIHIpIHsKLSAgICAgICAgICAgIHN5bmNocm9uaXplZCAobVJlY2VpdmVycykgewotICAgICAgICAgICAgICAgIEhhc2hNYXA8QnJvYWRjYXN0UmVjZWl2ZXIsIFJlY2VpdmVyRGlzcGF0Y2hlcj4gbWFwID0gbVJlY2VpdmVycy5nZXQoY29udGV4dCk7Ci0gICAgICAgICAgICAgICAgUmVjZWl2ZXJEaXNwYXRjaGVyIHJkID0gbnVsbDsKLSAgICAgICAgICAgICAgICBpZiAobWFwICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgcmQgPSBtYXAuZ2V0KHIpOwotICAgICAgICAgICAgICAgICAgICBpZiAocmQgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgbWFwLnJlbW92ZShyKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtYXAuc2l6ZSgpID09IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtUmVjZWl2ZXJzLnJlbW92ZShjb250ZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyLmdldERlYnVnVW5yZWdpc3RlcigpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFzaE1hcDxCcm9hZGNhc3RSZWNlaXZlciwgUmVjZWl2ZXJEaXNwYXRjaGVyPiBob2xkZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gbVVucmVnaXN0ZXJlZFJlY2VpdmVycy5nZXQoY29udGV4dCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhvbGRlciA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvbGRlciA9IG5ldyBIYXNoTWFwPEJyb2FkY2FzdFJlY2VpdmVyLCBSZWNlaXZlckRpc3BhdGNoZXI+KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1VbnJlZ2lzdGVyZWRSZWNlaXZlcnMucHV0KGNvbnRleHQsIGhvbGRlcik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJ1bnRpbWVFeGNlcHRpb24gZXggPSBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9yaWdpbmFsbHkgdW5yZWdpc3RlcmVkIGhlcmU6Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXguZmlsbEluU3RhY2tUcmFjZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJkLnNldFVucmVnaXN0ZXJMb2NhdGlvbihleCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9sZGVyLnB1dChyLCByZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmQuZ2V0SUludGVudFJlY2VpdmVyKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgSGFzaE1hcDxCcm9hZGNhc3RSZWNlaXZlciwgUmVjZWl2ZXJEaXNwYXRjaGVyPiBob2xkZXIKLSAgICAgICAgICAgICAgICAgICAgICAgID0gbVVucmVnaXN0ZXJlZFJlY2VpdmVycy5nZXQoY29udGV4dCk7Ci0gICAgICAgICAgICAgICAgaWYgKGhvbGRlciAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJkID0gaG9sZGVyLmdldChyKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJkICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFJ1bnRpbWVFeGNlcHRpb24gZXggPSByZC5nZXRVbnJlZ2lzdGVyTG9jYXRpb24oKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbnJlZ2lzdGVyaW5nIFJlY2VpdmVyICIgKyByCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiB0aGF0IHdhcyBhbHJlYWR5IHVucmVnaXN0ZXJlZCIsIGV4KTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoY29udGV4dCA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIlVuYmluZGluZyBSZWNlaXZlciAiICsgcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiBmcm9tIENvbnRleHQgdGhhdCBpcyBubyBsb25nZXIgaW4gdXNlOiAiICsgY29udGV4dCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiUmVjZWl2ZXIgbm90IHJlZ2lzdGVyZWQ6ICIgKyByKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBmaW5hbCBjbGFzcyBSZWNlaXZlckRpc3BhdGNoZXIgewotCi0gICAgICAgICAgICBmaW5hbCBzdGF0aWMgY2xhc3MgSW5uZXJSZWNlaXZlciBleHRlbmRzIElJbnRlbnRSZWNlaXZlci5TdHViIHsKLSAgICAgICAgICAgICAgICBmaW5hbCBXZWFrUmVmZXJlbmNlPFJlY2VpdmVyRGlzcGF0Y2hlcj4gbURpc3BhdGNoZXI7Ci0gICAgICAgICAgICAgICAgZmluYWwgUmVjZWl2ZXJEaXNwYXRjaGVyIG1TdHJvbmdSZWY7Ci0KLSAgICAgICAgICAgICAgICBJbm5lclJlY2VpdmVyKFJlY2VpdmVyRGlzcGF0Y2hlciByZCwgYm9vbGVhbiBzdHJvbmcpIHsKLSAgICAgICAgICAgICAgICAgICAgbURpc3BhdGNoZXIgPSBuZXcgV2Vha1JlZmVyZW5jZTxSZWNlaXZlckRpc3BhdGNoZXI+KHJkKTsKLSAgICAgICAgICAgICAgICAgICAgbVN0cm9uZ1JlZiA9IHN0cm9uZyA/IHJkIDogbnVsbDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcHVibGljIHZvaWQgcGVyZm9ybVJlY2VpdmUoSW50ZW50IGludGVudCwgaW50IHJlc3VsdENvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZGF0YSwgQnVuZGxlIGV4dHJhcywgYm9vbGVhbiBvcmRlcmVkLCBib29sZWFuIHN0aWNreSkgewotICAgICAgICAgICAgICAgICAgICBSZWNlaXZlckRpc3BhdGNoZXIgcmQgPSBtRGlzcGF0Y2hlci5nZXQoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX0JST0FEQ0FTVCkgewotICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNlcSA9IGludGVudC5nZXRJbnRFeHRyYSgic2VxIiwgLTEpOwotICAgICAgICAgICAgICAgICAgICAgICAgU2xvZy5pKFRBRywgIlJlY2VpdmluZyBicm9hZGNhc3QgIiArIGludGVudC5nZXRBY3Rpb24oKSArICIgc2VxPSIgKyBzZXEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiIHRvICIgKyAocmQgIT0gbnVsbCA/IHJkLm1SZWNlaXZlciA6IG51bGwpKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAocmQgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmQucGVyZm9ybVJlY2VpdmUoaW50ZW50LCByZXN1bHRDb2RlLCBkYXRhLCBleHRyYXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyZWQsIHN0aWNreSk7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgYWN0aXZpdHkgbWFuYWdlciBkaXNwYXRjaGVkIGEgYnJvYWRjYXN0IHRvIGEgcmVnaXN0ZXJlZAotICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVjZWl2ZXIgaW4gdGhpcyBwcm9jZXNzLCBidXQgYmVmb3JlIGl0IGNvdWxkIGJlIGRlbGl2ZXJlZCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlY2VpdmVyIHdhcyB1bnJlZ2lzdGVyZWQuICBBY2tub3dsZWRnZSB0aGUgYnJvYWRjYXN0IG9uIGl0cwotICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmVoYWxmIHNvIHRoYXQgdGhlIHN5c3RlbSdzIGJyb2FkY2FzdCBzZXF1ZW5jZSBjYW4gY29udGludWUuCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfQlJPQURDQVNUKSBTbG9nLmkoVEFHLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmluaXNoaW5nIGJyb2FkY2FzdCB0byB1bnJlZ2lzdGVyZWQgcmVjZWl2ZXIiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIElBY3Rpdml0eU1hbmFnZXIgbWdyID0gQWN0aXZpdHlNYW5hZ2VyTmF0aXZlLmdldERlZmF1bHQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWdyLmZpbmlzaFJlY2VpdmVyKHRoaXMsIHJlc3VsdENvZGUsIGRhdGEsIGV4dHJhcywgZmFsc2UpOwotICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiQ291bGRuJ3QgZmluaXNoIGJyb2FkY2FzdCB0byB1bnJlZ2lzdGVyZWQgcmVjZWl2ZXIiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZmluYWwgSUludGVudFJlY2VpdmVyLlN0dWIgbUlJbnRlbnRSZWNlaXZlcjsKLSAgICAgICAgICAgIGZpbmFsIEJyb2FkY2FzdFJlY2VpdmVyIG1SZWNlaXZlcjsKLSAgICAgICAgICAgIGZpbmFsIENvbnRleHQgbUNvbnRleHQ7Ci0gICAgICAgICAgICBmaW5hbCBIYW5kbGVyIG1BY3Rpdml0eVRocmVhZDsKLSAgICAgICAgICAgIGZpbmFsIEluc3RydW1lbnRhdGlvbiBtSW5zdHJ1bWVudGF0aW9uOwotICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBtUmVnaXN0ZXJlZDsKLSAgICAgICAgICAgIGZpbmFsIEludGVudFJlY2VpdmVyTGVha2VkIG1Mb2NhdGlvbjsKLSAgICAgICAgICAgIFJ1bnRpbWVFeGNlcHRpb24gbVVucmVnaXN0ZXJMb2NhdGlvbjsKLQotICAgICAgICAgICAgZmluYWwgY2xhc3MgQXJncyBpbXBsZW1lbnRzIFJ1bm5hYmxlIHsKLSAgICAgICAgICAgICAgICBwcml2YXRlIEludGVudCBtQ3VySW50ZW50OwotICAgICAgICAgICAgICAgIHByaXZhdGUgaW50IG1DdXJDb2RlOwotICAgICAgICAgICAgICAgIHByaXZhdGUgU3RyaW5nIG1DdXJEYXRhOwotICAgICAgICAgICAgICAgIHByaXZhdGUgQnVuZGxlIG1DdXJNYXA7Ci0gICAgICAgICAgICAgICAgcHJpdmF0ZSBib29sZWFuIG1DdXJPcmRlcmVkOwotICAgICAgICAgICAgICAgIHByaXZhdGUgYm9vbGVhbiBtQ3VyU3RpY2t5OwotCi0gICAgICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgewotICAgICAgICAgICAgICAgICAgICBCcm9hZGNhc3RSZWNlaXZlciByZWNlaXZlciA9IG1SZWNlaXZlcjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX0JST0FEQ0FTVCkgewotICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNlcSA9IG1DdXJJbnRlbnQuZ2V0SW50RXh0cmEoInNlcSIsIC0xKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFNsb2cuaShUQUcsICJEaXNwYXRjaGluZyBicm9hZGNhc3QgIiArIG1DdXJJbnRlbnQuZ2V0QWN0aW9uKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiIHNlcT0iICsgc2VxICsgIiB0byAiICsgbVJlY2VpdmVyKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFNsb2cuaShUQUcsICIgIG1SZWdpc3RlcmVkPSIgKyBtUmVnaXN0ZXJlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgbUN1ck9yZGVyZWQ9IiArIG1DdXJPcmRlcmVkKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgSUFjdGl2aXR5TWFuYWdlciBtZ3IgPSBBY3Rpdml0eU1hbmFnZXJOYXRpdmUuZ2V0RGVmYXVsdCgpOwotICAgICAgICAgICAgICAgICAgICBJbnRlbnQgaW50ZW50ID0gbUN1ckludGVudDsKLSAgICAgICAgICAgICAgICAgICAgbUN1ckludGVudCA9IG51bGw7Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBpZiAocmVjZWl2ZXIgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1SZWdpc3RlcmVkICYmIG1DdXJPcmRlcmVkKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX0JST0FEQ0FTVCkgU2xvZy5pKFRBRywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmluaXNoaW5nIG51bGwgYnJvYWRjYXN0IHRvICIgKyBtUmVjZWl2ZXIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZ3IuZmluaXNoUmVjZWl2ZXIobUlJbnRlbnRSZWNlaXZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQ3VyQ29kZSwgbUN1ckRhdGEsIG1DdXJNYXAsIGZhbHNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZXgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAgICAgQ2xhc3NMb2FkZXIgY2wgPSAgbVJlY2VpdmVyLmdldENsYXNzKCkuZ2V0Q2xhc3NMb2FkZXIoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGludGVudC5zZXRFeHRyYXNDbGFzc0xvYWRlcihjbCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobUN1ck1hcCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbUN1ck1hcC5zZXRDbGFzc0xvYWRlcihjbCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlci5zZXRPcmRlcmVkSGludCh0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyLnNldFJlc3VsdChtQ3VyQ29kZSwgbUN1ckRhdGEsIG1DdXJNYXApOwotICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXIuY2xlYXJBYm9ydEJyb2FkY2FzdCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXIuc2V0T3JkZXJlZEhpbnQobUN1ck9yZGVyZWQpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXIuc2V0SW5pdGlhbFN0aWNreUhpbnQobUN1clN0aWNreSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlci5vblJlY2VpdmUobUNvbnRleHQsIGludGVudCk7Ci0gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobVJlZ2lzdGVyZWQgJiYgbUN1ck9yZGVyZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfQlJPQURDQVNUKSBTbG9nLmkoVEFHLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGaW5pc2hpbmcgZmFpbGVkIGJyb2FkY2FzdCB0byAiICsgbVJlY2VpdmVyKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWdyLmZpbmlzaFJlY2VpdmVyKG1JSW50ZW50UmVjZWl2ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUN1ckNvZGUsIG1DdXJEYXRhLCBtQ3VyTWFwLCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGV4KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1JbnN0cnVtZW50YXRpb24gPT0gbnVsbCB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhbUluc3RydW1lbnRhdGlvbi5vbkV4Y2VwdGlvbihtUmVjZWl2ZXIsIGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFcnJvciByZWNlaXZpbmcgYnJvYWRjYXN0ICIgKyBpbnRlbnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiIGluICIgKyBtUmVjZWl2ZXIsIGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtUmVnaXN0ZXJlZCAmJiBtQ3VyT3JkZXJlZCkgewotICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfQlJPQURDQVNUKSBTbG9nLmkoVEFHLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZpbmlzaGluZyBicm9hZGNhc3QgdG8gIiArIG1SZWNlaXZlcik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWdyLmZpbmlzaFJlY2VpdmVyKG1JSW50ZW50UmVjZWl2ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlci5nZXRSZXN1bHRDb2RlKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlci5nZXRSZXN1bHREYXRhKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlci5nZXRSZXN1bHRFeHRyYXMoZmFsc2UpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXIuZ2V0QWJvcnRCcm9hZGNhc3QoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZXgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgUmVjZWl2ZXJEaXNwYXRjaGVyKEJyb2FkY2FzdFJlY2VpdmVyIHJlY2VpdmVyLCBDb250ZXh0IGNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgIEhhbmRsZXIgYWN0aXZpdHlUaHJlYWQsIEluc3RydW1lbnRhdGlvbiBpbnN0cnVtZW50YXRpb24sCi0gICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gcmVnaXN0ZXJlZCkgewotICAgICAgICAgICAgICAgIGlmIChhY3Rpdml0eVRocmVhZCA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigiSGFuZGxlciBtdXN0IG5vdCBiZSBudWxsIik7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgbUlJbnRlbnRSZWNlaXZlciA9IG5ldyBJbm5lclJlY2VpdmVyKHRoaXMsICFyZWdpc3RlcmVkKTsKLSAgICAgICAgICAgICAgICBtUmVjZWl2ZXIgPSByZWNlaXZlcjsKLSAgICAgICAgICAgICAgICBtQ29udGV4dCA9IGNvbnRleHQ7Ci0gICAgICAgICAgICAgICAgbUFjdGl2aXR5VGhyZWFkID0gYWN0aXZpdHlUaHJlYWQ7Ci0gICAgICAgICAgICAgICAgbUluc3RydW1lbnRhdGlvbiA9IGluc3RydW1lbnRhdGlvbjsKLSAgICAgICAgICAgICAgICBtUmVnaXN0ZXJlZCA9IHJlZ2lzdGVyZWQ7Ci0gICAgICAgICAgICAgICAgbUxvY2F0aW9uID0gbmV3IEludGVudFJlY2VpdmVyTGVha2VkKG51bGwpOwotICAgICAgICAgICAgICAgIG1Mb2NhdGlvbi5maWxsSW5TdGFja1RyYWNlKCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHZvaWQgdmFsaWRhdGUoQ29udGV4dCBjb250ZXh0LCBIYW5kbGVyIGFjdGl2aXR5VGhyZWFkKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1Db250ZXh0ICE9IGNvbnRleHQpIHsKLSAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICJSZWNlaXZlciAiICsgbVJlY2VpdmVyICsKLSAgICAgICAgICAgICAgICAgICAgICAgICIgcmVnaXN0ZXJlZCB3aXRoIGRpZmZlcmluZyBDb250ZXh0ICh3YXMgIiArCi0gICAgICAgICAgICAgICAgICAgICAgICBtQ29udGV4dCArICIgbm93ICIgKyBjb250ZXh0ICsgIikiKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKG1BY3Rpdml0eVRocmVhZCAhPSBhY3Rpdml0eVRocmVhZCkgewotICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgIlJlY2VpdmVyICIgKyBtUmVjZWl2ZXIgKwotICAgICAgICAgICAgICAgICAgICAgICAgIiByZWdpc3RlcmVkIHdpdGggZGlmZmVyaW5nIGhhbmRsZXIgKHdhcyAiICsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1BY3Rpdml0eVRocmVhZCArICIgbm93ICIgKyBhY3Rpdml0eVRocmVhZCArICIpIik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBJbnRlbnRSZWNlaXZlckxlYWtlZCBnZXRMb2NhdGlvbigpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbUxvY2F0aW9uOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBCcm9hZGNhc3RSZWNlaXZlciBnZXRJbnRlbnRSZWNlaXZlcigpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbVJlY2VpdmVyOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBJSW50ZW50UmVjZWl2ZXIgZ2V0SUludGVudFJlY2VpdmVyKCkgewotICAgICAgICAgICAgICAgIHJldHVybiBtSUludGVudFJlY2VpdmVyOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2b2lkIHNldFVucmVnaXN0ZXJMb2NhdGlvbihSdW50aW1lRXhjZXB0aW9uIGV4KSB7Ci0gICAgICAgICAgICAgICAgbVVucmVnaXN0ZXJMb2NhdGlvbiA9IGV4OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBSdW50aW1lRXhjZXB0aW9uIGdldFVucmVnaXN0ZXJMb2NhdGlvbigpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbVVucmVnaXN0ZXJMb2NhdGlvbjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcHVibGljIHZvaWQgcGVyZm9ybVJlY2VpdmUoSW50ZW50IGludGVudCwgaW50IHJlc3VsdENvZGUsCi0gICAgICAgICAgICAgICAgICAgIFN0cmluZyBkYXRhLCBCdW5kbGUgZXh0cmFzLCBib29sZWFuIG9yZGVyZWQsIGJvb2xlYW4gc3RpY2t5KSB7Ci0gICAgICAgICAgICAgICAgaWYgKERFQlVHX0JST0FEQ0FTVCkgewotICAgICAgICAgICAgICAgICAgICBpbnQgc2VxID0gaW50ZW50LmdldEludEV4dHJhKCJzZXEiLCAtMSk7Ci0gICAgICAgICAgICAgICAgICAgIFNsb2cuaShUQUcsICJFbnF1ZXVlaW5nIGJyb2FkY2FzdCAiICsgaW50ZW50LmdldEFjdGlvbigpICsgIiBzZXE9IiArIHNlcQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiB0byAiICsgbVJlY2VpdmVyKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgQXJncyBhcmdzID0gbmV3IEFyZ3MoKTsKLSAgICAgICAgICAgICAgICBhcmdzLm1DdXJJbnRlbnQgPSBpbnRlbnQ7Ci0gICAgICAgICAgICAgICAgYXJncy5tQ3VyQ29kZSA9IHJlc3VsdENvZGU7Ci0gICAgICAgICAgICAgICAgYXJncy5tQ3VyRGF0YSA9IGRhdGE7Ci0gICAgICAgICAgICAgICAgYXJncy5tQ3VyTWFwID0gZXh0cmFzOwotICAgICAgICAgICAgICAgIGFyZ3MubUN1ck9yZGVyZWQgPSBvcmRlcmVkOwotICAgICAgICAgICAgICAgIGFyZ3MubUN1clN0aWNreSA9IHN0aWNreTsKLSAgICAgICAgICAgICAgICBpZiAoIW1BY3Rpdml0eVRocmVhZC5wb3N0KGFyZ3MpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtUmVnaXN0ZXJlZCAmJiBvcmRlcmVkKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBJQWN0aXZpdHlNYW5hZ2VyIG1nciA9IEFjdGl2aXR5TWFuYWdlck5hdGl2ZS5nZXREZWZhdWx0KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19CUk9BRENBU1QpIFNsb2cuaShUQUcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmluaXNoaW5nIHN5bmMgYnJvYWRjYXN0IHRvICIgKyBtUmVjZWl2ZXIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1nci5maW5pc2hSZWNlaXZlcihtSUludGVudFJlY2VpdmVyLCBhcmdzLm1DdXJDb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy5tQ3VyRGF0YSwgYXJncy5tQ3VyTWFwLCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZXgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIGZpbmFsIElTZXJ2aWNlQ29ubmVjdGlvbiBnZXRTZXJ2aWNlRGlzcGF0Y2hlcihTZXJ2aWNlQ29ubmVjdGlvbiBjLAotICAgICAgICAgICAgICAgIENvbnRleHQgY29udGV4dCwgSGFuZGxlciBoYW5kbGVyLCBpbnQgZmxhZ3MpIHsKLSAgICAgICAgICAgIHN5bmNocm9uaXplZCAobVNlcnZpY2VzKSB7Ci0gICAgICAgICAgICAgICAgU2VydmljZURpc3BhdGNoZXIgc2QgPSBudWxsOwotICAgICAgICAgICAgICAgIEhhc2hNYXA8U2VydmljZUNvbm5lY3Rpb24sIFNlcnZpY2VEaXNwYXRjaGVyPiBtYXAgPSBtU2VydmljZXMuZ2V0KGNvbnRleHQpOwotICAgICAgICAgICAgICAgIGlmIChtYXAgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICBzZCA9IG1hcC5nZXQoYyk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChzZCA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNkID0gbmV3IFNlcnZpY2VEaXNwYXRjaGVyKGMsIGNvbnRleHQsIGhhbmRsZXIsIGZsYWdzKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1hcCA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtYXAgPSBuZXcgSGFzaE1hcDxTZXJ2aWNlQ29ubmVjdGlvbiwgU2VydmljZURpc3BhdGNoZXI+KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtU2VydmljZXMucHV0KGNvbnRleHQsIG1hcCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgbWFwLnB1dChjLCBzZCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgc2QudmFsaWRhdGUoY29udGV4dCwgaGFuZGxlcik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiBzZC5nZXRJU2VydmljZUNvbm5lY3Rpb24oKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHB1YmxpYyBmaW5hbCBJU2VydmljZUNvbm5lY3Rpb24gZm9yZ2V0U2VydmljZURpc3BhdGNoZXIoQ29udGV4dCBjb250ZXh0LAotICAgICAgICAgICAgICAgIFNlcnZpY2VDb25uZWN0aW9uIGMpIHsKLSAgICAgICAgICAgIHN5bmNocm9uaXplZCAobVNlcnZpY2VzKSB7Ci0gICAgICAgICAgICAgICAgSGFzaE1hcDxTZXJ2aWNlQ29ubmVjdGlvbiwgU2VydmljZURpc3BhdGNoZXI+IG1hcAotICAgICAgICAgICAgICAgICAgICAgICAgPSBtU2VydmljZXMuZ2V0KGNvbnRleHQpOwotICAgICAgICAgICAgICAgIFNlcnZpY2VEaXNwYXRjaGVyIHNkID0gbnVsbDsKLSAgICAgICAgICAgICAgICBpZiAobWFwICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgc2QgPSBtYXAuZ2V0KGMpOwotICAgICAgICAgICAgICAgICAgICBpZiAoc2QgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgbWFwLnJlbW92ZShjKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNkLmRvRm9yZ2V0KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobWFwLnNpemUoKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2VzLnJlbW92ZShjb250ZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoc2QuZ2V0RmxhZ3MoKSZDb250ZXh0LkJJTkRfREVCVUdfVU5CSU5EKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgSGFzaE1hcDxTZXJ2aWNlQ29ubmVjdGlvbiwgU2VydmljZURpc3BhdGNoZXI+IGhvbGRlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSBtVW5ib3VuZFNlcnZpY2VzLmdldChjb250ZXh0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaG9sZGVyID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9sZGVyID0gbmV3IEhhc2hNYXA8U2VydmljZUNvbm5lY3Rpb24sIFNlcnZpY2VEaXNwYXRjaGVyPigpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVW5ib3VuZFNlcnZpY2VzLnB1dChjb250ZXh0LCBob2xkZXIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBSdW50aW1lRXhjZXB0aW9uIGV4ID0gbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPcmlnaW5hbGx5IHVuYm91bmQgaGVyZToiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBleC5maWxsSW5TdGFja1RyYWNlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Quc2V0VW5iaW5kTG9jYXRpb24oZXgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvbGRlci5wdXQoYywgc2QpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNkLmdldElTZXJ2aWNlQ29ubmVjdGlvbigpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIEhhc2hNYXA8U2VydmljZUNvbm5lY3Rpb24sIFNlcnZpY2VEaXNwYXRjaGVyPiBob2xkZXIKLSAgICAgICAgICAgICAgICAgICAgICAgID0gbVVuYm91bmRTZXJ2aWNlcy5nZXQoY29udGV4dCk7Ci0gICAgICAgICAgICAgICAgaWYgKGhvbGRlciAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNkID0gaG9sZGVyLmdldChjKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNkICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFJ1bnRpbWVFeGNlcHRpb24gZXggPSBzZC5nZXRVbmJpbmRMb2NhdGlvbigpOwotICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlVuYmluZGluZyBTZXJ2aWNlICIgKyBjCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiB0aGF0IHdhcyBhbHJlYWR5IHVuYm91bmQiLCBleCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnRleHQgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJVbmJpbmRpbmcgU2VydmljZSAiICsgYwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiBmcm9tIENvbnRleHQgdGhhdCBpcyBubyBsb25nZXIgaW4gdXNlOiAiICsgY29udGV4dCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiU2VydmljZSBub3QgcmVnaXN0ZXJlZDogIiArIGMpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBmaW5hbCBjbGFzcyBTZXJ2aWNlRGlzcGF0Y2hlciB7Ci0gICAgICAgICAgICBwcml2YXRlIGZpbmFsIElubmVyQ29ubmVjdGlvbiBtSVNlcnZpY2VDb25uZWN0aW9uOwotICAgICAgICAgICAgcHJpdmF0ZSBmaW5hbCBTZXJ2aWNlQ29ubmVjdGlvbiBtQ29ubmVjdGlvbjsKLSAgICAgICAgICAgIHByaXZhdGUgZmluYWwgQ29udGV4dCBtQ29udGV4dDsKLSAgICAgICAgICAgIHByaXZhdGUgZmluYWwgSGFuZGxlciBtQWN0aXZpdHlUaHJlYWQ7Ci0gICAgICAgICAgICBwcml2YXRlIGZpbmFsIFNlcnZpY2VDb25uZWN0aW9uTGVha2VkIG1Mb2NhdGlvbjsKLSAgICAgICAgICAgIHByaXZhdGUgZmluYWwgaW50IG1GbGFnczsKLQotICAgICAgICAgICAgcHJpdmF0ZSBSdW50aW1lRXhjZXB0aW9uIG1VbmJpbmRMb2NhdGlvbjsKLQotICAgICAgICAgICAgcHJpdmF0ZSBib29sZWFuIG1EaWVkOwotCi0gICAgICAgICAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBDb25uZWN0aW9uSW5mbyB7Ci0gICAgICAgICAgICAgICAgSUJpbmRlciBiaW5kZXI7Ci0gICAgICAgICAgICAgICAgSUJpbmRlci5EZWF0aFJlY2lwaWVudCBkZWF0aE1vbml0b3I7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIElubmVyQ29ubmVjdGlvbiBleHRlbmRzIElTZXJ2aWNlQ29ubmVjdGlvbi5TdHViIHsKLSAgICAgICAgICAgICAgICBmaW5hbCBXZWFrUmVmZXJlbmNlPFNlcnZpY2VEaXNwYXRjaGVyPiBtRGlzcGF0Y2hlcjsKLQotICAgICAgICAgICAgICAgIElubmVyQ29ubmVjdGlvbihTZXJ2aWNlRGlzcGF0Y2hlciBzZCkgewotICAgICAgICAgICAgICAgICAgICBtRGlzcGF0Y2hlciA9IG5ldyBXZWFrUmVmZXJlbmNlPFNlcnZpY2VEaXNwYXRjaGVyPihzZCk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgcHVibGljIHZvaWQgY29ubmVjdGVkKENvbXBvbmVudE5hbWUgbmFtZSwgSUJpbmRlciBzZXJ2aWNlKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKLSAgICAgICAgICAgICAgICAgICAgU2VydmljZURpc3BhdGNoZXIgc2QgPSBtRGlzcGF0Y2hlci5nZXQoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNkICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNkLmNvbm5lY3RlZChuYW1lLCBzZXJ2aWNlKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcHJpdmF0ZSBmaW5hbCBIYXNoTWFwPENvbXBvbmVudE5hbWUsIENvbm5lY3Rpb25JbmZvPiBtQWN0aXZlQ29ubmVjdGlvbnMKLSAgICAgICAgICAgICAgICA9IG5ldyBIYXNoTWFwPENvbXBvbmVudE5hbWUsIENvbm5lY3Rpb25JbmZvPigpOwotCi0gICAgICAgICAgICBTZXJ2aWNlRGlzcGF0Y2hlcihTZXJ2aWNlQ29ubmVjdGlvbiBjb25uLAotICAgICAgICAgICAgICAgICAgICBDb250ZXh0IGNvbnRleHQsIEhhbmRsZXIgYWN0aXZpdHlUaHJlYWQsIGludCBmbGFncykgewotICAgICAgICAgICAgICAgIG1JU2VydmljZUNvbm5lY3Rpb24gPSBuZXcgSW5uZXJDb25uZWN0aW9uKHRoaXMpOwotICAgICAgICAgICAgICAgIG1Db25uZWN0aW9uID0gY29ubjsKLSAgICAgICAgICAgICAgICBtQ29udGV4dCA9IGNvbnRleHQ7Ci0gICAgICAgICAgICAgICAgbUFjdGl2aXR5VGhyZWFkID0gYWN0aXZpdHlUaHJlYWQ7Ci0gICAgICAgICAgICAgICAgbUxvY2F0aW9uID0gbmV3IFNlcnZpY2VDb25uZWN0aW9uTGVha2VkKG51bGwpOwotICAgICAgICAgICAgICAgIG1Mb2NhdGlvbi5maWxsSW5TdGFja1RyYWNlKCk7Ci0gICAgICAgICAgICAgICAgbUZsYWdzID0gZmxhZ3M7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHZvaWQgdmFsaWRhdGUoQ29udGV4dCBjb250ZXh0LCBIYW5kbGVyIGFjdGl2aXR5VGhyZWFkKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1Db250ZXh0ICE9IGNvbnRleHQpIHsKLSAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAiU2VydmljZUNvbm5lY3Rpb24gIiArIG1Db25uZWN0aW9uICsKLSAgICAgICAgICAgICAgICAgICAgICAgICIgcmVnaXN0ZXJlZCB3aXRoIGRpZmZlcmluZyBDb250ZXh0ICh3YXMgIiArCi0gICAgICAgICAgICAgICAgICAgICAgICBtQ29udGV4dCArICIgbm93ICIgKyBjb250ZXh0ICsgIikiKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKG1BY3Rpdml0eVRocmVhZCAhPSBhY3Rpdml0eVRocmVhZCkgewotICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICJTZXJ2aWNlQ29ubmVjdGlvbiAiICsgbUNvbm5lY3Rpb24gKwotICAgICAgICAgICAgICAgICAgICAgICAgIiByZWdpc3RlcmVkIHdpdGggZGlmZmVyaW5nIGhhbmRsZXIgKHdhcyAiICsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1BY3Rpdml0eVRocmVhZCArICIgbm93ICIgKyBhY3Rpdml0eVRocmVhZCArICIpIik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2b2lkIGRvRm9yZ2V0KCkgewotICAgICAgICAgICAgICAgIHN5bmNocm9uaXplZCh0aGlzKSB7Ci0gICAgICAgICAgICAgICAgICAgIEl0ZXJhdG9yPENvbm5lY3Rpb25JbmZvPiBpdCA9IG1BY3RpdmVDb25uZWN0aW9ucy52YWx1ZXMoKS5pdGVyYXRvcigpOwotICAgICAgICAgICAgICAgICAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBDb25uZWN0aW9uSW5mbyBjaSA9IGl0Lm5leHQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNpLmJpbmRlci51bmxpbmtUb0RlYXRoKGNpLmRlYXRoTW9uaXRvciwgMCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgbUFjdGl2ZUNvbm5lY3Rpb25zLmNsZWFyKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBTZXJ2aWNlQ29ubmVjdGlvbkxlYWtlZCBnZXRMb2NhdGlvbigpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbUxvY2F0aW9uOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBTZXJ2aWNlQ29ubmVjdGlvbiBnZXRTZXJ2aWNlQ29ubmVjdGlvbigpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbUNvbm5lY3Rpb247Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIElTZXJ2aWNlQ29ubmVjdGlvbiBnZXRJU2VydmljZUNvbm5lY3Rpb24oKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1JU2VydmljZUNvbm5lY3Rpb247Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGludCBnZXRGbGFncygpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbUZsYWdzOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB2b2lkIHNldFVuYmluZExvY2F0aW9uKFJ1bnRpbWVFeGNlcHRpb24gZXgpIHsKLSAgICAgICAgICAgICAgICBtVW5iaW5kTG9jYXRpb24gPSBleDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgUnVudGltZUV4Y2VwdGlvbiBnZXRVbmJpbmRMb2NhdGlvbigpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbVVuYmluZExvY2F0aW9uOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBwdWJsaWMgdm9pZCBjb25uZWN0ZWQoQ29tcG9uZW50TmFtZSBuYW1lLCBJQmluZGVyIHNlcnZpY2UpIHsKLSAgICAgICAgICAgICAgICBpZiAobUFjdGl2aXR5VGhyZWFkICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgbUFjdGl2aXR5VGhyZWFkLnBvc3QobmV3IFJ1bkNvbm5lY3Rpb24obmFtZSwgc2VydmljZSwgMCkpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGRvQ29ubmVjdGVkKG5hbWUsIHNlcnZpY2UpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcHVibGljIHZvaWQgZGVhdGgoQ29tcG9uZW50TmFtZSBuYW1lLCBJQmluZGVyIHNlcnZpY2UpIHsKLSAgICAgICAgICAgICAgICBDb25uZWN0aW9uSW5mbyBvbGQ7Ci0KLSAgICAgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKLSAgICAgICAgICAgICAgICAgICAgbURpZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBvbGQgPSBtQWN0aXZlQ29ubmVjdGlvbnMucmVtb3ZlKG5hbWUpOwotICAgICAgICAgICAgICAgICAgICBpZiAob2xkID09IG51bGwgfHwgb2xkLmJpbmRlciAhPSBzZXJ2aWNlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWF0aCBmb3Igc29tZW9uZSBkaWZmZXJlbnQgdGhhbiB3aG8gd2UgbGFzdAotICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVwb3J0ZWQuLi4gIGp1c3QgaWdub3JlIGl0LgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIG9sZC5iaW5kZXIudW5saW5rVG9EZWF0aChvbGQuZGVhdGhNb25pdG9yLCAwKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAobUFjdGl2aXR5VGhyZWFkICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgbUFjdGl2aXR5VGhyZWFkLnBvc3QobmV3IFJ1bkNvbm5lY3Rpb24obmFtZSwgc2VydmljZSwgMSkpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGRvRGVhdGgobmFtZSwgc2VydmljZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBwdWJsaWMgdm9pZCBkb0Nvbm5lY3RlZChDb21wb25lbnROYW1lIG5hbWUsIElCaW5kZXIgc2VydmljZSkgewotICAgICAgICAgICAgICAgIENvbm5lY3Rpb25JbmZvIG9sZDsKLSAgICAgICAgICAgICAgICBDb25uZWN0aW9uSW5mbyBpbmZvOwotCi0gICAgICAgICAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7Ci0gICAgICAgICAgICAgICAgICAgIG9sZCA9IG1BY3RpdmVDb25uZWN0aW9ucy5nZXQobmFtZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChvbGQgIT0gbnVsbCAmJiBvbGQuYmluZGVyID09IHNlcnZpY2UpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEh1aCwgYWxyZWFkeSBoYXZlIHRoaXMgb25lLiAgT2ggd2VsbCEKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGlmIChzZXJ2aWNlICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEEgbmV3IHNlcnZpY2UgaXMgYmVpbmcgY29ubmVjdGVkLi4uIHNldCBpdCBhbGwgdXAuCi0gICAgICAgICAgICAgICAgICAgICAgICBtRGllZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgaW5mbyA9IG5ldyBDb25uZWN0aW9uSW5mbygpOwotICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5iaW5kZXIgPSBzZXJ2aWNlOwotICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5kZWF0aE1vbml0b3IgPSBuZXcgRGVhdGhNb25pdG9yKG5hbWUsIHNlcnZpY2UpOwotICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlLmxpbmtUb0RlYXRoKGluZm8uZGVhdGhNb25pdG9yLCAwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQWN0aXZlQ29ubmVjdGlvbnMucHV0KG5hbWUsIGluZm8pOwotICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIHNlcnZpY2Ugd2FzIGRlYWQgYmVmb3JlIHdlIGdvdCBpdC4uLiAganVzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvbid0IGRvIGFueXRoaW5nIHdpdGggaXQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbUFjdGl2ZUNvbm5lY3Rpb25zLnJlbW92ZShuYW1lKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBuYW1lZCBzZXJ2aWNlIGlzIGJlaW5nIGRpc2Nvbm5lY3RlZC4uLiBjbGVhbiB1cC4KLSAgICAgICAgICAgICAgICAgICAgICAgIG1BY3RpdmVDb25uZWN0aW9ucy5yZW1vdmUobmFtZSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBpZiAob2xkICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG9sZC5iaW5kZXIudW5saW5rVG9EZWF0aChvbGQuZGVhdGhNb25pdG9yLCAwKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8vIElmIHRoZXJlIHdhcyBhbiBvbGQgc2VydmljZSwgaXQgaXMgbm90IGRpc2Nvbm5lY3RlZC4KLSAgICAgICAgICAgICAgICBpZiAob2xkICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgbUNvbm5lY3Rpb24ub25TZXJ2aWNlRGlzY29ubmVjdGVkKG5hbWUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIG5ldyBzZXJ2aWNlLCBpdCBpcyBub3cgY29ubmVjdGVkLgotICAgICAgICAgICAgICAgIGlmIChzZXJ2aWNlICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgbUNvbm5lY3Rpb24ub25TZXJ2aWNlQ29ubmVjdGVkKG5hbWUsIHNlcnZpY2UpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcHVibGljIHZvaWQgZG9EZWF0aChDb21wb25lbnROYW1lIG5hbWUsIElCaW5kZXIgc2VydmljZSkgewotICAgICAgICAgICAgICAgIG1Db25uZWN0aW9uLm9uU2VydmljZURpc2Nvbm5lY3RlZChuYW1lKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcHJpdmF0ZSBmaW5hbCBjbGFzcyBSdW5Db25uZWN0aW9uIGltcGxlbWVudHMgUnVubmFibGUgewotICAgICAgICAgICAgICAgIFJ1bkNvbm5lY3Rpb24oQ29tcG9uZW50TmFtZSBuYW1lLCBJQmluZGVyIHNlcnZpY2UsIGludCBjb21tYW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1OYW1lID0gbmFtZTsKLSAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2UgPSBzZXJ2aWNlOwotICAgICAgICAgICAgICAgICAgICBtQ29tbWFuZCA9IGNvbW1hbmQ7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgewotICAgICAgICAgICAgICAgICAgICBpZiAobUNvbW1hbmQgPT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgZG9Db25uZWN0ZWQobU5hbWUsIG1TZXJ2aWNlKTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtQ29tbWFuZCA9PSAxKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkb0RlYXRoKG1OYW1lLCBtU2VydmljZSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBmaW5hbCBDb21wb25lbnROYW1lIG1OYW1lOwotICAgICAgICAgICAgICAgIGZpbmFsIElCaW5kZXIgbVNlcnZpY2U7Ci0gICAgICAgICAgICAgICAgZmluYWwgaW50IG1Db21tYW5kOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBwcml2YXRlIGZpbmFsIGNsYXNzIERlYXRoTW9uaXRvciBpbXBsZW1lbnRzIElCaW5kZXIuRGVhdGhSZWNpcGllbnQKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBEZWF0aE1vbml0b3IoQ29tcG9uZW50TmFtZSBuYW1lLCBJQmluZGVyIHNlcnZpY2UpIHsKLSAgICAgICAgICAgICAgICAgICAgbU5hbWUgPSBuYW1lOwotICAgICAgICAgICAgICAgICAgICBtU2VydmljZSA9IHNlcnZpY2U7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgcHVibGljIHZvaWQgYmluZGVyRGllZCgpIHsKLSAgICAgICAgICAgICAgICAgICAgZGVhdGgobU5hbWUsIG1TZXJ2aWNlKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBmaW5hbCBDb21wb25lbnROYW1lIG1OYW1lOwotICAgICAgICAgICAgICAgIGZpbmFsIElCaW5kZXIgbVNlcnZpY2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwcml2YXRlIHN0YXRpYyBDb250ZXh0SW1wbCBtU3lzdGVtQ29udGV4dCA9IG51bGw7Ci0KLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBjbGFzcyBBY3Rpdml0eVJlY29yZCB7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2xhc3MgQWN0aXZpdHlDbGllbnRSZWNvcmQgewogICAgICAgICBJQmluZGVyIHRva2VuOwogICAgICAgICBpbnQgaWRlbnQ7CiAgICAgICAgIEludGVudCBpbnRlbnQ7CkBAIC0xMzA3LDEwICsyMDEsMTAgQEAKICAgICAgICAgYm9vbGVhbiBoaWRlRm9yTm93OwogICAgICAgICBDb25maWd1cmF0aW9uIG5ld0NvbmZpZzsKICAgICAgICAgQ29uZmlndXJhdGlvbiBjcmVhdGVkQ29uZmlnOwotICAgICAgICBBY3Rpdml0eVJlY29yZCBuZXh0SWRsZTsKKyAgICAgICAgQWN0aXZpdHlDbGllbnRSZWNvcmQgbmV4dElkbGU7CiAKICAgICAgICAgQWN0aXZpdHlJbmZvIGFjdGl2aXR5SW5mbzsKLSAgICAgICAgUGFja2FnZUluZm8gcGFja2FnZUluZm87CisgICAgICAgIExvYWRlZEFwayBwYWNrYWdlSW5mbzsKIAogICAgICAgICBMaXN0PFJlc3VsdEluZm8+IHBlbmRpbmdSZXN1bHRzOwogICAgICAgICBMaXN0PEludGVudD4gcGVuZGluZ0ludGVudHM7CkBAIC0xMzE4LDcgKzIxMiw3IEBACiAgICAgICAgIGJvb2xlYW4gc3RhcnRzTm90UmVzdW1lZDsKICAgICAgICAgYm9vbGVhbiBpc0ZvcndhcmQ7CiAKLSAgICAgICAgQWN0aXZpdHlSZWNvcmQoKSB7CisgICAgICAgIEFjdGl2aXR5Q2xpZW50UmVjb3JkKCkgewogICAgICAgICAgICAgcGFyZW50ID0gbnVsbDsKICAgICAgICAgICAgIGVtYmVkZGVkSUQgPSBudWxsOwogICAgICAgICAgICAgcGF1c2VkID0gZmFsc2U7CkBAIC0xMzM3LDEyICsyMzEsMTIgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIHByaXZhdGUgZmluYWwgY2xhc3MgUHJvdmlkZXJSZWNvcmQgaW1wbGVtZW50cyBJQmluZGVyLkRlYXRoUmVjaXBpZW50IHsKKyAgICBwcml2YXRlIGZpbmFsIGNsYXNzIFByb3ZpZGVyQ2xpZW50UmVjb3JkIGltcGxlbWVudHMgSUJpbmRlci5EZWF0aFJlY2lwaWVudCB7CiAgICAgICAgIGZpbmFsIFN0cmluZyBtTmFtZTsKICAgICAgICAgZmluYWwgSUNvbnRlbnRQcm92aWRlciBtUHJvdmlkZXI7CiAgICAgICAgIGZpbmFsIENvbnRlbnRQcm92aWRlciBtTG9jYWxQcm92aWRlcjsKIAotICAgICAgICBQcm92aWRlclJlY29yZChTdHJpbmcgbmFtZSwgSUNvbnRlbnRQcm92aWRlciBwcm92aWRlciwKKyAgICAgICAgUHJvdmlkZXJDbGllbnRSZWNvcmQoU3RyaW5nIG5hbWUsIElDb250ZW50UHJvdmlkZXIgcHJvdmlkZXIsCiAgICAgICAgICAgICAgICAgQ29udGVudFByb3ZpZGVyIGxvY2FsUHJvdmlkZXIpIHsKICAgICAgICAgICAgIG1OYW1lID0gbmFtZTsKICAgICAgICAgICAgIG1Qcm92aWRlciA9IHByb3ZpZGVyOwpAQCAtMTQxOSw3ICszMTMsNyBAQAogICAgIH0KIAogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNsYXNzIEFwcEJpbmREYXRhIHsKLSAgICAgICAgUGFja2FnZUluZm8gaW5mbzsKKyAgICAgICAgTG9hZGVkQXBrIGluZm87CiAgICAgICAgIFN0cmluZyBwcm9jZXNzTmFtZTsKICAgICAgICAgQXBwbGljYXRpb25JbmZvIGFwcEluZm87CiAgICAgICAgIExpc3Q8UHJvdmlkZXJJbmZvPiBwcm92aWRlcnM7CkBAIC0xNTA5LDcgKzQwMyw3IEBACiAgICAgICAgIHB1YmxpYyBmaW5hbCB2b2lkIHNjaGVkdWxlTGF1bmNoQWN0aXZpdHkoSW50ZW50IGludGVudCwgSUJpbmRlciB0b2tlbiwgaW50IGlkZW50LAogICAgICAgICAgICAgICAgIEFjdGl2aXR5SW5mbyBpbmZvLCBCdW5kbGUgc3RhdGUsIExpc3Q8UmVzdWx0SW5mbz4gcGVuZGluZ1Jlc3VsdHMsCiAgICAgICAgICAgICAgICAgTGlzdDxJbnRlbnQ+IHBlbmRpbmdOZXdJbnRlbnRzLCBib29sZWFuIG5vdFJlc3VtZWQsIGJvb2xlYW4gaXNGb3J3YXJkKSB7Ci0gICAgICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gbmV3IEFjdGl2aXR5UmVjb3JkKCk7CisgICAgICAgICAgICBBY3Rpdml0eUNsaWVudFJlY29yZCByID0gbmV3IEFjdGl2aXR5Q2xpZW50UmVjb3JkKCk7CiAKICAgICAgICAgICAgIHIudG9rZW4gPSB0b2tlbjsKICAgICAgICAgICAgIHIuaWRlbnQgPSBpZGVudDsKQEAgLTE1MjksNyArNDIzLDcgQEAKICAgICAgICAgcHVibGljIGZpbmFsIHZvaWQgc2NoZWR1bGVSZWxhdW5jaEFjdGl2aXR5KElCaW5kZXIgdG9rZW4sCiAgICAgICAgICAgICAgICAgTGlzdDxSZXN1bHRJbmZvPiBwZW5kaW5nUmVzdWx0cywgTGlzdDxJbnRlbnQ+IHBlbmRpbmdOZXdJbnRlbnRzLAogICAgICAgICAgICAgICAgIGludCBjb25maWdDaGFuZ2VzLCBib29sZWFuIG5vdFJlc3VtZWQsIENvbmZpZ3VyYXRpb24gY29uZmlnKSB7Ci0gICAgICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gbmV3IEFjdGl2aXR5UmVjb3JkKCk7CisgICAgICAgICAgICBBY3Rpdml0eUNsaWVudFJlY29yZCByID0gbmV3IEFjdGl2aXR5Q2xpZW50UmVjb3JkKCk7CiAKICAgICAgICAgICAgIHIudG9rZW4gPSB0b2tlbjsKICAgICAgICAgICAgIHIucGVuZGluZ1Jlc3VsdHMgPSBwZW5kaW5nUmVzdWx0czsKQEAgLTE3MjIsMTQgKzYxNiw2IEBACiAgICAgICAgICAgICBxdWV1ZU9yU2VuZE1lc3NhZ2UoSC5BQ1RJVklUWV9DT05GSUdVUkFUSU9OX0NIQU5HRUQsIHRva2VuKTsKICAgICAgICAgfQogCi0gICAgICAgIHB1YmxpYyB2b2lkIHJlcXVlc3RQc3MoKSB7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIEFjdGl2aXR5TWFuYWdlck5hdGl2ZS5nZXREZWZhdWx0KCkucmVwb3J0UHNzKHRoaXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAoaW50KVByb2Nlc3MuZ2V0UHNzKFByb2Nlc3MubXlQaWQoKSkpOwotICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCiAgICAgICAgIHB1YmxpYyB2b2lkIHByb2ZpbGVyQ29udHJvbChib29sZWFuIHN0YXJ0LCBTdHJpbmcgcGF0aCwgUGFyY2VsRmlsZURlc2NyaXB0b3IgZmQpIHsKICAgICAgICAgICAgIFByb2ZpbGVyQ29udHJvbERhdGEgcGNkID0gbmV3IFByb2ZpbGVyQ29udHJvbERhdGEoKTsKICAgICAgICAgICAgIHBjZC5wYXRoID0gcGF0aDsKQEAgLTE3NTYsNiArNjQyLDEwIEBACiAgICAgICAgIHB1YmxpYyB2b2lkIGRpc3BhdGNoUGFja2FnZUJyb2FkY2FzdChpbnQgY21kLCBTdHJpbmdbXSBwYWNrYWdlcykgewogICAgICAgICAgICAgcXVldWVPclNlbmRNZXNzYWdlKEguRElTUEFUQ0hfUEFDS0FHRV9CUk9BRENBU1QsIHBhY2thZ2VzLCBjbWQpOwogICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgc2NoZWR1bGVDcmFzaChTdHJpbmcgbXNnKSB7CisgICAgICAgICAgICBxdWV1ZU9yU2VuZE1lc3NhZ2UoSC5TQ0hFRFVMRV9DUkFTSCwgbXNnKTsKKyAgICAgICAgfQogICAgICAgICAKICAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgIHByb3RlY3RlZCB2b2lkIGR1bXAoRmlsZURlc2NyaXB0b3IgZmQsIFByaW50V3JpdGVyIHB3LCBTdHJpbmdbXSBhcmdzKSB7CkBAIC0xOTgyLDYgKzg3Miw3IEBACiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFJFTU9WRV9QUk9WSURFUiAgICAgICAgID0gMTMxOwogICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBFTkFCTEVfSklUICAgICAgICAgICAgICA9IDEzMjsKICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRElTUEFUQ0hfUEFDS0FHRV9CUk9BRENBU1QgPSAxMzM7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNDSEVEVUxFX0NSQVNIICAgICAgICAgID0gMTM0OwogICAgICAgICBTdHJpbmcgY29kZVRvU3RyaW5nKGludCBjb2RlKSB7CiAgICAgICAgICAgICBpZiAobG9jYWxMT0dWKSB7CiAgICAgICAgICAgICAgICAgc3dpdGNoIChjb2RlKSB7CkBAIC0yMDE5LDYgKzkxMCw3IEBACiAgICAgICAgICAgICAgICAgICAgIGNhc2UgUkVNT1ZFX1BST1ZJREVSOiByZXR1cm4gIlJFTU9WRV9QUk9WSURFUiI7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgRU5BQkxFX0pJVDogcmV0dXJuICJFTkFCTEVfSklUIjsKICAgICAgICAgICAgICAgICAgICAgY2FzZSBESVNQQVRDSF9QQUNLQUdFX0JST0FEQ0FTVDogcmV0dXJuICJESVNQQVRDSF9QQUNLQUdFX0JST0FEQ0FTVCI7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgU0NIRURVTEVfQ1JBU0g6IHJldHVybiAiU0NIRURVTEVfQ1JBU0giOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiAiKHVua25vd24pIjsKQEAgLTIwMjYsMTQgKzkxOCwxNCBAQAogICAgICAgICBwdWJsaWMgdm9pZCBoYW5kbGVNZXNzYWdlKE1lc3NhZ2UgbXNnKSB7CiAgICAgICAgICAgICBzd2l0Y2ggKG1zZy53aGF0KSB7CiAgICAgICAgICAgICAgICAgY2FzZSBMQVVOQ0hfQUNUSVZJVFk6IHsKLSAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IChBY3Rpdml0eVJlY29yZCltc2cub2JqOworICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eUNsaWVudFJlY29yZCByID0gKEFjdGl2aXR5Q2xpZW50UmVjb3JkKW1zZy5vYmo7CiAKICAgICAgICAgICAgICAgICAgICAgci5wYWNrYWdlSW5mbyA9IGdldFBhY2thZ2VJbmZvTm9DaGVjaygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByLmFjdGl2aXR5SW5mby5hcHBsaWNhdGlvbkluZm8pOwogICAgICAgICAgICAgICAgICAgICBoYW5kbGVMYXVuY2hBY3Rpdml0eShyLCBudWxsKTsKICAgICAgICAgICAgICAgICB9IGJyZWFrOwogICAgICAgICAgICAgICAgIGNhc2UgUkVMQVVOQ0hfQUNUSVZJVFk6IHsKLSAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IChBY3Rpdml0eVJlY29yZCltc2cub2JqOworICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eUNsaWVudFJlY29yZCByID0gKEFjdGl2aXR5Q2xpZW50UmVjb3JkKW1zZy5vYmo7CiAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVJlbGF1bmNoQWN0aXZpdHkociwgbXNnLmFyZzEpOwogICAgICAgICAgICAgICAgIH0gYnJlYWs7CiAgICAgICAgICAgICAgICAgY2FzZSBQQVVTRV9BQ1RJVklUWToKQEAgLTIxNDIsNiArMTAzNCw4IEBACiAgICAgICAgICAgICAgICAgY2FzZSBESVNQQVRDSF9QQUNLQUdFX0JST0FEQ0FTVDoKICAgICAgICAgICAgICAgICAgICAgaGFuZGxlRGlzcGF0Y2hQYWNrYWdlQnJvYWRjYXN0KG1zZy5hcmcxLCAoU3RyaW5nW10pbXNnLm9iaik7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgU0NIRURVTEVfQ1JBU0g6CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBSZW1vdGVTZXJ2aWNlRXhjZXB0aW9uKChTdHJpbmcpbXNnLm9iaik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtMjE1NSwxMSArMTA0OSwxMSBAQAogCiAgICAgcHJpdmF0ZSBmaW5hbCBjbGFzcyBJZGxlciBpbXBsZW1lbnRzIE1lc3NhZ2VRdWV1ZS5JZGxlSGFuZGxlciB7CiAgICAgICAgIHB1YmxpYyBmaW5hbCBib29sZWFuIHF1ZXVlSWRsZSgpIHsKLSAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIGEgPSBtTmV3QWN0aXZpdGllczsKKyAgICAgICAgICAgIEFjdGl2aXR5Q2xpZW50UmVjb3JkIGEgPSBtTmV3QWN0aXZpdGllczsKICAgICAgICAgICAgIGlmIChhICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICBtTmV3QWN0aXZpdGllcyA9IG51bGw7CiAgICAgICAgICAgICAgICAgSUFjdGl2aXR5TWFuYWdlciBhbSA9IEFjdGl2aXR5TWFuYWdlck5hdGl2ZS5nZXREZWZhdWx0KCk7Ci0gICAgICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgcHJldjsKKyAgICAgICAgICAgICAgICBBY3Rpdml0eUNsaWVudFJlY29yZCBwcmV2OwogICAgICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGxvY2FsTE9HVikgU2xvZy52KAogICAgICAgICAgICAgICAgICAgICAgICAgVEFHLCAiUmVwb3J0aW5nIGlkbGUgb2YgIiArIGEgKwpAQCAtMjIxNSw3MSArMTEwOSwxMzIgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIHN0YXRpYyBJUGFja2FnZU1hbmFnZXIgc1BhY2thZ2VNYW5hZ2VyOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgQWN0aXZpdHlUaHJlYWQgY3VycmVudEFjdGl2aXR5VGhyZWFkKCkgeworICAgICAgICByZXR1cm4gKEFjdGl2aXR5VGhyZWFkKXNUaHJlYWRMb2NhbC5nZXQoKTsKKyAgICB9CiAKLSAgICBmaW5hbCBBcHBsaWNhdGlvblRocmVhZCBtQXBwVGhyZWFkID0gbmV3IEFwcGxpY2F0aW9uVGhyZWFkKCk7Ci0gICAgZmluYWwgTG9vcGVyIG1Mb29wZXIgPSBMb29wZXIubXlMb29wZXIoKTsKLSAgICBmaW5hbCBIIG1IID0gbmV3IEgoKTsKLSAgICBmaW5hbCBIYXNoTWFwPElCaW5kZXIsIEFjdGl2aXR5UmVjb3JkPiBtQWN0aXZpdGllcwotICAgICAgICAgICAgPSBuZXcgSGFzaE1hcDxJQmluZGVyLCBBY3Rpdml0eVJlY29yZD4oKTsKLSAgICAvLyBMaXN0IG9mIG5ldyBhY3Rpdml0aWVzICh2aWEgQWN0aXZpdHlSZWNvcmQubmV4dElkbGUpIHRoYXQgc2hvdWxkCi0gICAgLy8gYmUgcmVwb3J0ZWQgd2hlbiBuZXh0IHdlIGlkbGUuCi0gICAgQWN0aXZpdHlSZWNvcmQgbU5ld0FjdGl2aXRpZXMgPSBudWxsOwotICAgIC8vIE51bWJlciBvZiBhY3Rpdml0aWVzIHRoYXQgYXJlIGN1cnJlbnRseSB2aXNpYmxlIG9uLXNjcmVlbi4KLSAgICBpbnQgbU51bVZpc2libGVBY3Rpdml0aWVzID0gMDsKLSAgICBmaW5hbCBIYXNoTWFwPElCaW5kZXIsIFNlcnZpY2U+IG1TZXJ2aWNlcwotICAgICAgICAgICAgPSBuZXcgSGFzaE1hcDxJQmluZGVyLCBTZXJ2aWNlPigpOwotICAgIEFwcEJpbmREYXRhIG1Cb3VuZEFwcGxpY2F0aW9uOwotICAgIENvbmZpZ3VyYXRpb24gbUNvbmZpZ3VyYXRpb247Ci0gICAgQ29uZmlndXJhdGlvbiBtUmVzQ29uZmlndXJhdGlvbjsKLSAgICBBcHBsaWNhdGlvbiBtSW5pdGlhbEFwcGxpY2F0aW9uOwotICAgIGZpbmFsIEFycmF5TGlzdDxBcHBsaWNhdGlvbj4gbUFsbEFwcGxpY2F0aW9ucwotICAgICAgICAgICAgPSBuZXcgQXJyYXlMaXN0PEFwcGxpY2F0aW9uPigpOwotICAgIC8vIHNldCBvZiBpbnN0YW50aWF0ZWQgYmFja3VwIGFnZW50cywga2V5ZWQgYnkgcGFja2FnZSBuYW1lCi0gICAgZmluYWwgSGFzaE1hcDxTdHJpbmcsIEJhY2t1cEFnZW50PiBtQmFja3VwQWdlbnRzID0gbmV3IEhhc2hNYXA8U3RyaW5nLCBCYWNrdXBBZ2VudD4oKTsKLSAgICBzdGF0aWMgZmluYWwgVGhyZWFkTG9jYWwgc1RocmVhZExvY2FsID0gbmV3IFRocmVhZExvY2FsKCk7Ci0gICAgSW5zdHJ1bWVudGF0aW9uIG1JbnN0cnVtZW50YXRpb247Ci0gICAgU3RyaW5nIG1JbnN0cnVtZW50YXRpb25BcHBEaXIgPSBudWxsOwotICAgIFN0cmluZyBtSW5zdHJ1bWVudGF0aW9uQXBwUGFja2FnZSA9IG51bGw7Ci0gICAgU3RyaW5nIG1JbnN0cnVtZW50ZWRBcHBEaXIgPSBudWxsOwotICAgIGJvb2xlYW4gbVN5c3RlbVRocmVhZCA9IGZhbHNlOwotICAgIGJvb2xlYW4gbUppdEVuYWJsZWQgPSBmYWxzZTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBjdXJyZW50UGFja2FnZU5hbWUoKSB7CisgICAgICAgIEFjdGl2aXR5VGhyZWFkIGFtID0gY3VycmVudEFjdGl2aXR5VGhyZWFkKCk7CisgICAgICAgIHJldHVybiAoYW0gIT0gbnVsbCAmJiBhbS5tQm91bmRBcHBsaWNhdGlvbiAhPSBudWxsKQorICAgICAgICAgICAgPyBhbS5tQm91bmRBcHBsaWNhdGlvbi5wcm9jZXNzTmFtZSA6IG51bGw7CisgICAgfQogCi0gICAgLy8gVGhlc2UgY2FuIGJlIGFjY2Vzc2VkIGJ5IG11bHRpcGxlIHRocmVhZHM7IG1QYWNrYWdlcyBpcyB0aGUgbG9jay4KLSAgICAvLyBYWFggRm9yIG5vdyB3ZSBrZWVwIGFyb3VuZCBpbmZvcm1hdGlvbiBhYm91dCBhbGwgcGFja2FnZXMgd2UgaGF2ZQotICAgIC8vIHNlZW4sIG5vdCByZW1vdmluZyBlbnRyaWVzIGZyb20gdGhpcyBtYXAuCi0gICAgZmluYWwgSGFzaE1hcDxTdHJpbmcsIFdlYWtSZWZlcmVuY2U8UGFja2FnZUluZm8+PiBtUGFja2FnZXMKLSAgICAgICAgICAgID0gbmV3IEhhc2hNYXA8U3RyaW5nLCBXZWFrUmVmZXJlbmNlPFBhY2thZ2VJbmZvPj4oKTsKLSAgICBmaW5hbCBIYXNoTWFwPFN0cmluZywgV2Vha1JlZmVyZW5jZTxQYWNrYWdlSW5mbz4+IG1SZXNvdXJjZVBhY2thZ2VzCi0gICAgICAgICAgICA9IG5ldyBIYXNoTWFwPFN0cmluZywgV2Vha1JlZmVyZW5jZTxQYWNrYWdlSW5mbz4+KCk7Ci0gICAgRGlzcGxheSBtRGlzcGxheSA9IG51bGw7Ci0gICAgRGlzcGxheU1ldHJpY3MgbURpc3BsYXlNZXRyaWNzID0gbnVsbDsKLSAgICBmaW5hbCBIYXNoTWFwPFJlc291cmNlc0tleSwgV2Vha1JlZmVyZW5jZTxSZXNvdXJjZXM+ID4gbUFjdGl2ZVJlc291cmNlcwotICAgICAgICAgICAgPSBuZXcgSGFzaE1hcDxSZXNvdXJjZXNLZXksIFdlYWtSZWZlcmVuY2U8UmVzb3VyY2VzPiA+KCk7Ci0gICAgZmluYWwgQXJyYXlMaXN0PEFjdGl2aXR5UmVjb3JkPiBtUmVsYXVuY2hpbmdBY3Rpdml0aWVzCi0gICAgICAgICAgICA9IG5ldyBBcnJheUxpc3Q8QWN0aXZpdHlSZWNvcmQ+KCk7Ci0gICAgQ29uZmlndXJhdGlvbiBtUGVuZGluZ0NvbmZpZ3VyYXRpb24gPSBudWxsOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgQXBwbGljYXRpb24gY3VycmVudEFwcGxpY2F0aW9uKCkgeworICAgICAgICBBY3Rpdml0eVRocmVhZCBhbSA9IGN1cnJlbnRBY3Rpdml0eVRocmVhZCgpOworICAgICAgICByZXR1cm4gYW0gIT0gbnVsbCA/IGFtLm1Jbml0aWFsQXBwbGljYXRpb24gOiBudWxsOworICAgIH0KIAotICAgIC8vIFRoZSBsb2NrIG9mIG1Qcm92aWRlck1hcCBwcm90ZWN0cyB0aGUgZm9sbG93aW5nIHZhcmlhYmxlcy4KLSAgICBmaW5hbCBIYXNoTWFwPFN0cmluZywgUHJvdmlkZXJSZWNvcmQ+IG1Qcm92aWRlck1hcAotICAgICAgICA9IG5ldyBIYXNoTWFwPFN0cmluZywgUHJvdmlkZXJSZWNvcmQ+KCk7Ci0gICAgZmluYWwgSGFzaE1hcDxJQmluZGVyLCBQcm92aWRlclJlZkNvdW50PiBtUHJvdmlkZXJSZWZDb3VudE1hcAotICAgICAgICA9IG5ldyBIYXNoTWFwPElCaW5kZXIsIFByb3ZpZGVyUmVmQ291bnQ+KCk7Ci0gICAgZmluYWwgSGFzaE1hcDxJQmluZGVyLCBQcm92aWRlclJlY29yZD4gbUxvY2FsUHJvdmlkZXJzCi0gICAgICAgID0gbmV3IEhhc2hNYXA8SUJpbmRlciwgUHJvdmlkZXJSZWNvcmQ+KCk7CisgICAgcHVibGljIHN0YXRpYyBJUGFja2FnZU1hbmFnZXIgZ2V0UGFja2FnZU1hbmFnZXIoKSB7CisgICAgICAgIGlmIChzUGFja2FnZU1hbmFnZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgLy9TbG9nLnYoIlBhY2thZ2VNYW5hZ2VyIiwgInJldHVybmluZyBjdXIgZGVmYXVsdCA9ICIgKyBzUGFja2FnZU1hbmFnZXIpOworICAgICAgICAgICAgcmV0dXJuIHNQYWNrYWdlTWFuYWdlcjsKKyAgICAgICAgfQorICAgICAgICBJQmluZGVyIGIgPSBTZXJ2aWNlTWFuYWdlci5nZXRTZXJ2aWNlKCJwYWNrYWdlIik7CisgICAgICAgIC8vU2xvZy52KCJQYWNrYWdlTWFuYWdlciIsICJkZWZhdWx0IHNlcnZpY2UgYmluZGVyID0gIiArIGIpOworICAgICAgICBzUGFja2FnZU1hbmFnZXIgPSBJUGFja2FnZU1hbmFnZXIuU3R1Yi5hc0ludGVyZmFjZShiKTsKKyAgICAgICAgLy9TbG9nLnYoIlBhY2thZ2VNYW5hZ2VyIiwgImRlZmF1bHQgc2VydmljZSA9ICIgKyBzUGFja2FnZU1hbmFnZXIpOworICAgICAgICByZXR1cm4gc1BhY2thZ2VNYW5hZ2VyOworICAgIH0KIAotICAgIGZpbmFsIEdjSWRsZXIgbUdjSWRsZXIgPSBuZXcgR2NJZGxlcigpOwotICAgIGJvb2xlYW4gbUdjSWRsZXJTY2hlZHVsZWQgPSBmYWxzZTsKKyAgICBEaXNwbGF5TWV0cmljcyBnZXREaXNwbGF5TWV0cmljc0xvY2tlZChib29sZWFuIGZvcmNlVXBkYXRlKSB7CisgICAgICAgIGlmIChtRGlzcGxheU1ldHJpY3MgIT0gbnVsbCAmJiAhZm9yY2VVcGRhdGUpIHsKKyAgICAgICAgICAgIHJldHVybiBtRGlzcGxheU1ldHJpY3M7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1EaXNwbGF5ID09IG51bGwpIHsKKyAgICAgICAgICAgIFdpbmRvd01hbmFnZXIgd20gPSBXaW5kb3dNYW5hZ2VySW1wbC5nZXREZWZhdWx0KCk7CisgICAgICAgICAgICBtRGlzcGxheSA9IHdtLmdldERlZmF1bHREaXNwbGF5KCk7CisgICAgICAgIH0KKyAgICAgICAgRGlzcGxheU1ldHJpY3MgbWV0cmljcyA9IG1EaXNwbGF5TWV0cmljcyA9IG5ldyBEaXNwbGF5TWV0cmljcygpOworICAgICAgICBtRGlzcGxheS5nZXRNZXRyaWNzKG1ldHJpY3MpOworICAgICAgICAvL1Nsb2cuaSgiZm9vIiwgIk5ldyBtZXRyaWNzOiB3PSIgKyBtZXRyaWNzLndpZHRoUGl4ZWxzICsgIiBoPSIKKyAgICAgICAgLy8gICAgICAgICsgbWV0cmljcy5oZWlnaHRQaXhlbHMgKyAiIGRlbj0iICsgbWV0cmljcy5kZW5zaXR5CisgICAgICAgIC8vICAgICAgICArICIgeGRwaT0iICsgbWV0cmljcy54ZHBpICsgIiB5ZHBpPSIgKyBtZXRyaWNzLnlkcGkpOworICAgICAgICByZXR1cm4gbWV0cmljczsKKyAgICB9CiAKLSAgICBwdWJsaWMgZmluYWwgUGFja2FnZUluZm8gZ2V0UGFja2FnZUluZm8oU3RyaW5nIHBhY2thZ2VOYW1lLCBpbnQgZmxhZ3MpIHsKKyAgICAvKioKKyAgICAgKiBDcmVhdGVzIHRoZSB0b3AgbGV2ZWwgUmVzb3VyY2VzIGZvciBhcHBsaWNhdGlvbnMgd2l0aCB0aGUgZ2l2ZW4gY29tcGF0aWJpbGl0eSBpbmZvLgorICAgICAqCisgICAgICogQHBhcmFtIHJlc0RpciB0aGUgcmVzb3VyY2UgZGlyZWN0b3J5LgorICAgICAqIEBwYXJhbSBjb21wSW5mbyB0aGUgY29tcGFiaWxpdHkgaW5mby4gSXQgd2lsbCB1c2UgdGhlIGRlZmF1bHQgY29tcGF0aWJpbGl0eSBpbmZvIHdoZW4gaXQncworICAgICAqIG51bGwuCisgICAgICovCisgICAgUmVzb3VyY2VzIGdldFRvcExldmVsUmVzb3VyY2VzKFN0cmluZyByZXNEaXIsIENvbXBhdGliaWxpdHlJbmZvIGNvbXBJbmZvKSB7CisgICAgICAgIFJlc291cmNlc0tleSBrZXkgPSBuZXcgUmVzb3VyY2VzS2V5KHJlc0RpciwgY29tcEluZm8uYXBwbGljYXRpb25TY2FsZSk7CisgICAgICAgIFJlc291cmNlcyByOwogICAgICAgICBzeW5jaHJvbml6ZWQgKG1QYWNrYWdlcykgewotICAgICAgICAgICAgV2Vha1JlZmVyZW5jZTxQYWNrYWdlSW5mbz4gcmVmOworICAgICAgICAgICAgLy8gUmVzb3VyY2VzIGlzIGFwcCBzY2FsZSBkZXBlbmRlbnQuCisgICAgICAgICAgICBpZiAoZmFsc2UpIHsKKyAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiZ2V0VG9wTGV2ZWxSZXNvdXJjZXM6ICIgKyByZXNEaXIgKyAiIC8gIgorICAgICAgICAgICAgICAgICAgICAgICAgKyBjb21wSW5mby5hcHBsaWNhdGlvblNjYWxlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFdlYWtSZWZlcmVuY2U8UmVzb3VyY2VzPiB3ciA9IG1BY3RpdmVSZXNvdXJjZXMuZ2V0KGtleSk7CisgICAgICAgICAgICByID0gd3IgIT0gbnVsbCA/IHdyLmdldCgpIDogbnVsbDsKKyAgICAgICAgICAgIC8vaWYgKHIgIT0gbnVsbCkgU2xvZy5pKFRBRywgImlzVXBUb0RhdGUgIiArIHJlc0RpciArICI6ICIgKyByLmdldEFzc2V0cygpLmlzVXBUb0RhdGUoKSk7CisgICAgICAgICAgICBpZiAociAhPSBudWxsICYmIHIuZ2V0QXNzZXRzKCkuaXNVcFRvRGF0ZSgpKSB7CisgICAgICAgICAgICAgICAgaWYgKGZhbHNlKSB7CisgICAgICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsICJSZXR1cm5pbmcgY2FjaGVkIHJlc291cmNlcyAiICsgciArICIgIiArIHJlc0RpcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIjogYXBwU2NhbGU9IiArIHIuZ2V0Q29tcGF0aWJpbGl0eUluZm8oKS5hcHBsaWNhdGlvblNjYWxlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvL2lmIChyICE9IG51bGwpIHsKKyAgICAgICAgLy8gICAgU2xvZy53KFRBRywgIlRocm93aW5nIGF3YXkgb3V0LW9mLWRhdGUgcmVzb3VyY2VzISEhISAiCisgICAgICAgIC8vICAgICAgICAgICAgKyByICsgIiAiICsgcmVzRGlyKTsKKyAgICAgICAgLy99CisKKyAgICAgICAgQXNzZXRNYW5hZ2VyIGFzc2V0cyA9IG5ldyBBc3NldE1hbmFnZXIoKTsKKyAgICAgICAgaWYgKGFzc2V0cy5hZGRBc3NldFBhdGgocmVzRGlyKSA9PSAwKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIC8vU2xvZy5pKFRBRywgIlJlc291cmNlOiBrZXk9IiArIGtleSArICIsIGRpc3BsYXkgbWV0cmljcz0iICsgbWV0cmljcyk7CisgICAgICAgIERpc3BsYXlNZXRyaWNzIG1ldHJpY3MgPSBnZXREaXNwbGF5TWV0cmljc0xvY2tlZChmYWxzZSk7CisgICAgICAgIHIgPSBuZXcgUmVzb3VyY2VzKGFzc2V0cywgbWV0cmljcywgZ2V0Q29uZmlndXJhdGlvbigpLCBjb21wSW5mbyk7CisgICAgICAgIGlmIChmYWxzZSkgeworICAgICAgICAgICAgU2xvZy5pKFRBRywgIkNyZWF0ZWQgYXBwIHJlc291cmNlcyAiICsgcmVzRGlyICsgIiAiICsgciArICI6ICIKKyAgICAgICAgICAgICAgICAgICAgKyByLmdldENvbmZpZ3VyYXRpb24oKSArICIgYXBwU2NhbGU9IgorICAgICAgICAgICAgICAgICAgICArIHIuZ2V0Q29tcGF0aWJpbGl0eUluZm8oKS5hcHBsaWNhdGlvblNjYWxlKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgc3luY2hyb25pemVkIChtUGFja2FnZXMpIHsKKyAgICAgICAgICAgIFdlYWtSZWZlcmVuY2U8UmVzb3VyY2VzPiB3ciA9IG1BY3RpdmVSZXNvdXJjZXMuZ2V0KGtleSk7CisgICAgICAgICAgICBSZXNvdXJjZXMgZXhpc3RpbmcgPSB3ciAhPSBudWxsID8gd3IuZ2V0KCkgOiBudWxsOworICAgICAgICAgICAgaWYgKGV4aXN0aW5nICE9IG51bGwgJiYgZXhpc3RpbmcuZ2V0QXNzZXRzKCkuaXNVcFRvRGF0ZSgpKSB7CisgICAgICAgICAgICAgICAgLy8gU29tZW9uZSBlbHNlIGFscmVhZHkgY3JlYXRlZCB0aGUgcmVzb3VyY2VzIHdoaWxlIHdlIHdlcmUKKyAgICAgICAgICAgICAgICAvLyB1bmxvY2tlZDsgZ28gYWhlYWQgYW5kIHVzZSB0aGVpcnMuCisgICAgICAgICAgICAgICAgci5nZXRBc3NldHMoKS5jbG9zZSgpOworICAgICAgICAgICAgICAgIHJldHVybiBleGlzdGluZzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gWFhYIG5lZWQgdG8gcmVtb3ZlIGVudHJpZXMgd2hlbiB3ZWFrIHJlZmVyZW5jZXMgZ28gYXdheQorICAgICAgICAgICAgbUFjdGl2ZVJlc291cmNlcy5wdXQoa2V5LCBuZXcgV2Vha1JlZmVyZW5jZTxSZXNvdXJjZXM+KHIpKTsKKyAgICAgICAgICAgIHJldHVybiByOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlcyB0aGUgdG9wIGxldmVsIHJlc291cmNlcyBmb3IgdGhlIGdpdmVuIHBhY2thZ2UuCisgICAgICovCisgICAgUmVzb3VyY2VzIGdldFRvcExldmVsUmVzb3VyY2VzKFN0cmluZyByZXNEaXIsIExvYWRlZEFwayBwa2dJbmZvKSB7CisgICAgICAgIHJldHVybiBnZXRUb3BMZXZlbFJlc291cmNlcyhyZXNEaXIsIHBrZ0luZm8ubUNvbXBhdGliaWxpdHlJbmZvKTsKKyAgICB9CisKKyAgICBmaW5hbCBIYW5kbGVyIGdldEhhbmRsZXIoKSB7CisgICAgICAgIHJldHVybiBtSDsKKyAgICB9CisKKyAgICBwdWJsaWMgZmluYWwgTG9hZGVkQXBrIGdldFBhY2thZ2VJbmZvKFN0cmluZyBwYWNrYWdlTmFtZSwgaW50IGZsYWdzKSB7CisgICAgICAgIHN5bmNocm9uaXplZCAobVBhY2thZ2VzKSB7CisgICAgICAgICAgICBXZWFrUmVmZXJlbmNlPExvYWRlZEFwaz4gcmVmOwogICAgICAgICAgICAgaWYgKChmbGFncyZDb250ZXh0LkNPTlRFWFRfSU5DTFVERV9DT0RFKSAhPSAwKSB7CiAgICAgICAgICAgICAgICAgcmVmID0gbVBhY2thZ2VzLmdldChwYWNrYWdlTmFtZSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHJlZiA9IG1SZXNvdXJjZVBhY2thZ2VzLmdldChwYWNrYWdlTmFtZSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBQYWNrYWdlSW5mbyBwYWNrYWdlSW5mbyA9IHJlZiAhPSBudWxsID8gcmVmLmdldCgpIDogbnVsbDsKKyAgICAgICAgICAgIExvYWRlZEFwayBwYWNrYWdlSW5mbyA9IHJlZiAhPSBudWxsID8gcmVmLmdldCgpIDogbnVsbDsKICAgICAgICAgICAgIC8vU2xvZy5pKFRBRywgImdldFBhY2thZ2VJbmZvICIgKyBwYWNrYWdlTmFtZSArICI6ICIgKyBwYWNrYWdlSW5mbyk7CiAgICAgICAgICAgICAvL2lmIChwYWNrYWdlSW5mbyAhPSBudWxsKSBTbG9nLmkoVEFHLCAiaXNVcHRvRGF0ZSAiICsgcGFja2FnZUluZm8ubVJlc0RpcgogICAgICAgICAgICAgLy8gICAgICAgICsgIjogIiArIHBhY2thZ2VJbmZvLm1SZXNvdXJjZXMuZ2V0QXNzZXRzKCkuaXNVcFRvRGF0ZSgpKTsKQEAgLTIzMTEsNyArMTI2Niw3IEBACiAgICAgICAgIHJldHVybiBudWxsOwogICAgIH0KIAotICAgIHB1YmxpYyBmaW5hbCBQYWNrYWdlSW5mbyBnZXRQYWNrYWdlSW5mbyhBcHBsaWNhdGlvbkluZm8gYWksIGludCBmbGFncykgeworICAgIHB1YmxpYyBmaW5hbCBMb2FkZWRBcGsgZ2V0UGFja2FnZUluZm8oQXBwbGljYXRpb25JbmZvIGFpLCBpbnQgZmxhZ3MpIHsKICAgICAgICAgYm9vbGVhbiBpbmNsdWRlQ29kZSA9IChmbGFncyZDb250ZXh0LkNPTlRFWFRfSU5DTFVERV9DT0RFKSAhPSAwOwogICAgICAgICBib29sZWFuIHNlY3VyaXR5VmlvbGF0aW9uID0gaW5jbHVkZUNvZGUgJiYgYWkudWlkICE9IDAKICAgICAgICAgICAgICAgICAmJiBhaS51aWQgIT0gUHJvY2Vzcy5TWVNURU1fVUlEICYmIChtQm91bmRBcHBsaWNhdGlvbiAhPSBudWxsCkBAIC0yMzMzLDIwICsxMjg4LDIwIEBACiAgICAgICAgIHJldHVybiBnZXRQYWNrYWdlSW5mbyhhaSwgbnVsbCwgc2VjdXJpdHlWaW9sYXRpb24sIGluY2x1ZGVDb2RlKTsKICAgICB9CiAKLSAgICBwdWJsaWMgZmluYWwgUGFja2FnZUluZm8gZ2V0UGFja2FnZUluZm9Ob0NoZWNrKEFwcGxpY2F0aW9uSW5mbyBhaSkgeworICAgIHB1YmxpYyBmaW5hbCBMb2FkZWRBcGsgZ2V0UGFja2FnZUluZm9Ob0NoZWNrKEFwcGxpY2F0aW9uSW5mbyBhaSkgewogICAgICAgICByZXR1cm4gZ2V0UGFja2FnZUluZm8oYWksIG51bGwsIGZhbHNlLCB0cnVlKTsKICAgICB9CiAKLSAgICBwcml2YXRlIGZpbmFsIFBhY2thZ2VJbmZvIGdldFBhY2thZ2VJbmZvKEFwcGxpY2F0aW9uSW5mbyBhSW5mbywKKyAgICBwcml2YXRlIGZpbmFsIExvYWRlZEFwayBnZXRQYWNrYWdlSW5mbyhBcHBsaWNhdGlvbkluZm8gYUluZm8sCiAgICAgICAgICAgICBDbGFzc0xvYWRlciBiYXNlTG9hZGVyLCBib29sZWFuIHNlY3VyaXR5VmlvbGF0aW9uLCBib29sZWFuIGluY2x1ZGVDb2RlKSB7CiAgICAgICAgIHN5bmNocm9uaXplZCAobVBhY2thZ2VzKSB7Ci0gICAgICAgICAgICBXZWFrUmVmZXJlbmNlPFBhY2thZ2VJbmZvPiByZWY7CisgICAgICAgICAgICBXZWFrUmVmZXJlbmNlPExvYWRlZEFwaz4gcmVmOwogICAgICAgICAgICAgaWYgKGluY2x1ZGVDb2RlKSB7CiAgICAgICAgICAgICAgICAgcmVmID0gbVBhY2thZ2VzLmdldChhSW5mby5wYWNrYWdlTmFtZSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHJlZiA9IG1SZXNvdXJjZVBhY2thZ2VzLmdldChhSW5mby5wYWNrYWdlTmFtZSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBQYWNrYWdlSW5mbyBwYWNrYWdlSW5mbyA9IHJlZiAhPSBudWxsID8gcmVmLmdldCgpIDogbnVsbDsKKyAgICAgICAgICAgIExvYWRlZEFwayBwYWNrYWdlSW5mbyA9IHJlZiAhPSBudWxsID8gcmVmLmdldCgpIDogbnVsbDsKICAgICAgICAgICAgIGlmIChwYWNrYWdlSW5mbyA9PSBudWxsIHx8IChwYWNrYWdlSW5mby5tUmVzb3VyY2VzICE9IG51bGwKICAgICAgICAgICAgICAgICAgICAgJiYgIXBhY2thZ2VJbmZvLm1SZXNvdXJjZXMuZ2V0QXNzZXRzKCkuaXNVcFRvRGF0ZSgpKSkgewogICAgICAgICAgICAgICAgIGlmIChsb2NhbExPR1YpIFNsb2cudihUQUcsIChpbmNsdWRlQ29kZSA/ICJMb2FkaW5nIGNvZGUgcGFja2FnZSAiCkBAIC0yMzU1LDE1ICsxMzEwLDE1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gbUJvdW5kQXBwbGljYXRpb24ucHJvY2Vzc05hbWUgOiBudWxsKQogICAgICAgICAgICAgICAgICAgICAgICAgKyAiKSIpOwogICAgICAgICAgICAgICAgIHBhY2thZ2VJbmZvID0KLSAgICAgICAgICAgICAgICAgICAgbmV3IFBhY2thZ2VJbmZvKHRoaXMsIGFJbmZvLCB0aGlzLCBiYXNlTG9hZGVyLAorICAgICAgICAgICAgICAgICAgICBuZXcgTG9hZGVkQXBrKHRoaXMsIGFJbmZvLCB0aGlzLCBiYXNlTG9hZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3VyaXR5VmlvbGF0aW9uLCBpbmNsdWRlQ29kZSAmJgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhSW5mby5mbGFncyZBcHBsaWNhdGlvbkluZm8uRkxBR19IQVNfQ09ERSkgIT0gMCk7CiAgICAgICAgICAgICAgICAgaWYgKGluY2x1ZGVDb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgIG1QYWNrYWdlcy5wdXQoYUluZm8ucGFja2FnZU5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFdlYWtSZWZlcmVuY2U8UGFja2FnZUluZm8+KHBhY2thZ2VJbmZvKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFdlYWtSZWZlcmVuY2U8TG9hZGVkQXBrPihwYWNrYWdlSW5mbykpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIG1SZXNvdXJjZVBhY2thZ2VzLnB1dChhSW5mby5wYWNrYWdlTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgV2Vha1JlZmVyZW5jZTxQYWNrYWdlSW5mbz4ocGFja2FnZUluZm8pKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgV2Vha1JlZmVyZW5jZTxMb2FkZWRBcGs+KHBhY2thZ2VJbmZvKSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHBhY2thZ2VJbmZvOwpAQCAtMjQxMiw3ICsxMzY3LDcgQEAKICAgICAgICAgICAgIGlmIChtU3lzdGVtQ29udGV4dCA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgQ29udGV4dEltcGwgY29udGV4dCA9CiAgICAgICAgICAgICAgICAgICAgIENvbnRleHRJbXBsLmNyZWF0ZVN5c3RlbUNvbnRleHQodGhpcyk7Ci0gICAgICAgICAgICAgICAgUGFja2FnZUluZm8gaW5mbyA9IG5ldyBQYWNrYWdlSW5mbyh0aGlzLCAiYW5kcm9pZCIsIGNvbnRleHQsIG51bGwpOworICAgICAgICAgICAgICAgIExvYWRlZEFwayBpbmZvID0gbmV3IExvYWRlZEFwayh0aGlzLCAiYW5kcm9pZCIsIGNvbnRleHQsIG51bGwpOwogICAgICAgICAgICAgICAgIGNvbnRleHQuaW5pdChpbmZvLCBudWxsLCB0aGlzKTsKICAgICAgICAgICAgICAgICBjb250ZXh0LmdldFJlc291cmNlcygpLnVwZGF0ZUNvbmZpZ3VyYXRpb24oCiAgICAgICAgICAgICAgICAgICAgICAgICBnZXRDb25maWd1cmF0aW9uKCksIGdldERpc3BsYXlNZXRyaWNzTG9ja2VkKGZhbHNlKSk7CkBAIC0yNDI3LDcgKzEzODIsNyBAQAogICAgIHB1YmxpYyB2b2lkIGluc3RhbGxTeXN0ZW1BcHBsaWNhdGlvbkluZm8oQXBwbGljYXRpb25JbmZvIGluZm8pIHsKICAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7CiAgICAgICAgICAgICBDb250ZXh0SW1wbCBjb250ZXh0ID0gZ2V0U3lzdGVtQ29udGV4dCgpOwotICAgICAgICAgICAgY29udGV4dC5pbml0KG5ldyBQYWNrYWdlSW5mbyh0aGlzLCAiYW5kcm9pZCIsIGNvbnRleHQsIGluZm8pLCBudWxsLCB0aGlzKTsKKyAgICAgICAgICAgIGNvbnRleHQuaW5pdChuZXcgTG9hZGVkQXBrKHRoaXMsICJhbmRyb2lkIiwgY29udGV4dCwgaW5mbyksIG51bGwsIHRoaXMpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yNDc5LDcgKzE0MzQsNyBAQAogICAgIHB1YmxpYyBmaW5hbCBBY3Rpdml0eSBzdGFydEFjdGl2aXR5Tm93KEFjdGl2aXR5IHBhcmVudCwgU3RyaW5nIGlkLAogICAgICAgICBJbnRlbnQgaW50ZW50LCBBY3Rpdml0eUluZm8gYWN0aXZpdHlJbmZvLCBJQmluZGVyIHRva2VuLCBCdW5kbGUgc3RhdGUsCiAgICAgICAgIE9iamVjdCBsYXN0Tm9uQ29uZmlndXJhdGlvbkluc3RhbmNlKSB7Ci0gICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSBuZXcgQWN0aXZpdHlSZWNvcmQoKTsKKyAgICAgICAgQWN0aXZpdHlDbGllbnRSZWNvcmQgciA9IG5ldyBBY3Rpdml0eUNsaWVudFJlY29yZCgpOwogICAgICAgICAgICAgci50b2tlbiA9IHRva2VuOwogICAgICAgICAgICAgci5pZGVudCA9IDA7CiAgICAgICAgICAgICByLmludGVudCA9IGludGVudDsKQEAgLTI1NTAsNyArMTUwNSw3IEBACiAgICAgICAgIHF1ZXVlT3JTZW5kTWVzc2FnZShILkNMRUFOX1VQX0NPTlRFWFQsIGNjaSk7CiAgICAgfQogCi0gICAgcHJpdmF0ZSBmaW5hbCBBY3Rpdml0eSBwZXJmb3JtTGF1bmNoQWN0aXZpdHkoQWN0aXZpdHlSZWNvcmQgciwgSW50ZW50IGN1c3RvbUludGVudCkgeworICAgIHByaXZhdGUgZmluYWwgQWN0aXZpdHkgcGVyZm9ybUxhdW5jaEFjdGl2aXR5KEFjdGl2aXR5Q2xpZW50UmVjb3JkIHIsIEludGVudCBjdXN0b21JbnRlbnQpIHsKICAgICAgICAgLy8gU3lzdGVtLm91dC5wcmludGxuKCIjIyMjIyBbIiArIFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpICsgIl0gQWN0aXZpdHlUaHJlYWQucGVyZm9ybUxhdW5jaEFjdGl2aXR5KCIgKyByICsgIikiKTsKIAogICAgICAgICBBY3Rpdml0eUluZm8gYUluZm8gPSByLmFjdGl2aXR5SW5mbzsKQEAgLTI2NjksNyArMTYyNCw3IEBACiAgICAgICAgIHJldHVybiBhY3Rpdml0eTsKICAgICB9CiAKLSAgICBwcml2YXRlIGZpbmFsIHZvaWQgaGFuZGxlTGF1bmNoQWN0aXZpdHkoQWN0aXZpdHlSZWNvcmQgciwgSW50ZW50IGN1c3RvbUludGVudCkgeworICAgIHByaXZhdGUgZmluYWwgdm9pZCBoYW5kbGVMYXVuY2hBY3Rpdml0eShBY3Rpdml0eUNsaWVudFJlY29yZCByLCBJbnRlbnQgY3VzdG9tSW50ZW50KSB7CiAgICAgICAgIC8vIElmIHdlIGFyZSBnZXR0aW5nIHJlYWR5IHRvIGdjIGFmdGVyIGdvaW5nIHRvIHRoZSBiYWNrZ3JvdW5kLCB3ZWxsCiAgICAgICAgIC8vIHdlIGFyZSBiYWNrIGFjdGl2ZSBzbyBza2lwIGl0LgogICAgICAgICB1bnNjaGVkdWxlR2NJZGxlcigpOwpAQCAtMjcyOSw3ICsxNjg0LDcgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIHByaXZhdGUgZmluYWwgdm9pZCBkZWxpdmVyTmV3SW50ZW50cyhBY3Rpdml0eVJlY29yZCByLAorICAgIHByaXZhdGUgZmluYWwgdm9pZCBkZWxpdmVyTmV3SW50ZW50cyhBY3Rpdml0eUNsaWVudFJlY29yZCByLAogICAgICAgICAgICAgTGlzdDxJbnRlbnQ+IGludGVudHMpIHsKICAgICAgICAgZmluYWwgaW50IE4gPSBpbnRlbnRzLnNpemUoKTsKICAgICAgICAgZm9yIChpbnQgaT0wOyBpPE47IGkrKykgewpAQCAtMjc0MSw3ICsxNjk2LDcgQEAKIAogICAgIHB1YmxpYyBmaW5hbCB2b2lkIHBlcmZvcm1OZXdJbnRlbnRzKElCaW5kZXIgdG9rZW4sCiAgICAgICAgICAgICBMaXN0PEludGVudD4gaW50ZW50cykgewotICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gbUFjdGl2aXRpZXMuZ2V0KHRva2VuKTsKKyAgICAgICAgQWN0aXZpdHlDbGllbnRSZWNvcmQgciA9IG1BY3Rpdml0aWVzLmdldCh0b2tlbik7CiAgICAgICAgIGlmIChyICE9IG51bGwpIHsKICAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gcmVzdW1lZCA9ICFyLnBhdXNlZDsKICAgICAgICAgICAgIGlmIChyZXN1bWVkKSB7CkBAIC0yNzY1LDcgKzE3MjAsNyBAQAogCiAgICAgICAgIFN0cmluZyBjb21wb25lbnQgPSBkYXRhLmludGVudC5nZXRDb21wb25lbnQoKS5nZXRDbGFzc05hbWUoKTsKIAotICAgICAgICBQYWNrYWdlSW5mbyBwYWNrYWdlSW5mbyA9IGdldFBhY2thZ2VJbmZvTm9DaGVjaygKKyAgICAgICAgTG9hZGVkQXBrIHBhY2thZ2VJbmZvID0gZ2V0UGFja2FnZUluZm9Ob0NoZWNrKAogICAgICAgICAgICAgICAgIGRhdGEuaW5mby5hcHBsaWNhdGlvbkluZm8pOwogCiAgICAgICAgIElBY3Rpdml0eU1hbmFnZXIgbWdyID0gQWN0aXZpdHlNYW5hZ2VyTmF0aXZlLmdldERlZmF1bHQoKTsKQEAgLTI4NDksNyArMTgwNCw3IEBACiAgICAgICAgIHVuc2NoZWR1bGVHY0lkbGVyKCk7CiAKICAgICAgICAgLy8gaW5zdGFudGlhdGUgdGhlIEJhY2t1cEFnZW50IGNsYXNzIG5hbWVkIGluIHRoZSBtYW5pZmVzdAotICAgICAgICBQYWNrYWdlSW5mbyBwYWNrYWdlSW5mbyA9IGdldFBhY2thZ2VJbmZvTm9DaGVjayhkYXRhLmFwcEluZm8pOworICAgICAgICBMb2FkZWRBcGsgcGFja2FnZUluZm8gPSBnZXRQYWNrYWdlSW5mb05vQ2hlY2soZGF0YS5hcHBJbmZvKTsKICAgICAgICAgU3RyaW5nIHBhY2thZ2VOYW1lID0gcGFja2FnZUluZm8ubVBhY2thZ2VOYW1lOwogICAgICAgICBpZiAobUJhY2t1cEFnZW50cy5nZXQocGFja2FnZU5hbWUpICE9IG51bGwpIHsKICAgICAgICAgICAgIFNsb2cuZChUQUcsICJCYWNrdXBBZ2VudCAiICsgIiAgZm9yICIgKyBwYWNrYWdlTmFtZQpAQCAtMjkxMSw3ICsxODY2LDcgQEAKICAgICBwcml2YXRlIGZpbmFsIHZvaWQgaGFuZGxlRGVzdHJveUJhY2t1cEFnZW50KENyZWF0ZUJhY2t1cEFnZW50RGF0YSBkYXRhKSB7CiAgICAgICAgIGlmIChERUJVR19CQUNLVVApIFNsb2cudihUQUcsICJoYW5kbGVEZXN0cm95QmFja3VwQWdlbnQ6ICIgKyBkYXRhKTsKIAotICAgICAgICBQYWNrYWdlSW5mbyBwYWNrYWdlSW5mbyA9IGdldFBhY2thZ2VJbmZvTm9DaGVjayhkYXRhLmFwcEluZm8pOworICAgICAgICBMb2FkZWRBcGsgcGFja2FnZUluZm8gPSBnZXRQYWNrYWdlSW5mb05vQ2hlY2soZGF0YS5hcHBJbmZvKTsKICAgICAgICAgU3RyaW5nIHBhY2thZ2VOYW1lID0gcGFja2FnZUluZm8ubVBhY2thZ2VOYW1lOwogICAgICAgICBCYWNrdXBBZ2VudCBhZ2VudCA9IG1CYWNrdXBBZ2VudHMuZ2V0KHBhY2thZ2VOYW1lKTsKICAgICAgICAgaWYgKGFnZW50ICE9IG51bGwpIHsKQEAgLTI5MzIsNyArMTg4Nyw3IEBACiAgICAgICAgIC8vIHdlIGFyZSBiYWNrIGFjdGl2ZSBzbyBza2lwIGl0LgogICAgICAgICB1bnNjaGVkdWxlR2NJZGxlcigpOwogCi0gICAgICAgIFBhY2thZ2VJbmZvIHBhY2thZ2VJbmZvID0gZ2V0UGFja2FnZUluZm9Ob0NoZWNrKAorICAgICAgICBMb2FkZWRBcGsgcGFja2FnZUluZm8gPSBnZXRQYWNrYWdlSW5mb05vQ2hlY2soCiAgICAgICAgICAgICAgICAgZGF0YS5pbmZvLmFwcGxpY2F0aW9uSW5mbyk7CiAgICAgICAgIFNlcnZpY2Ugc2VydmljZSA9IG51bGw7CiAgICAgICAgIHRyeSB7CkBAIC0zMDk2LDkgKzIwNTEsOSBAQAogICAgICAgICAvL1Nsb2cuaShUQUcsICJSdW5uaW5nIHNlcnZpY2VzOiAiICsgbVNlcnZpY2VzKTsKICAgICB9CiAKLSAgICBwdWJsaWMgZmluYWwgQWN0aXZpdHlSZWNvcmQgcGVyZm9ybVJlc3VtZUFjdGl2aXR5KElCaW5kZXIgdG9rZW4sCisgICAgcHVibGljIGZpbmFsIEFjdGl2aXR5Q2xpZW50UmVjb3JkIHBlcmZvcm1SZXN1bWVBY3Rpdml0eShJQmluZGVyIHRva2VuLAogICAgICAgICAgICAgYm9vbGVhbiBjbGVhckhpZGUpIHsKLSAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IG1BY3Rpdml0aWVzLmdldCh0b2tlbik7CisgICAgICAgIEFjdGl2aXR5Q2xpZW50UmVjb3JkIHIgPSBtQWN0aXZpdGllcy5nZXQodG9rZW4pOwogICAgICAgICBpZiAobG9jYWxMT0dWKSBTbG9nLnYoVEFHLCAiUGVyZm9ybWluZyByZXN1bWUgb2YgIiArIHIKICAgICAgICAgICAgICAgICArICIgZmluaXNoZWQ9IiArIHIuYWN0aXZpdHkubUZpbmlzaGVkKTsKICAgICAgICAgaWYgKHIgIT0gbnVsbCAmJiAhci5hY3Rpdml0eS5tRmluaXNoZWQpIHsKQEAgLTMxNDAsNyArMjA5NSw3IEBACiAgICAgICAgIC8vIHdlIGFyZSBiYWNrIGFjdGl2ZSBzbyBza2lwIGl0LgogICAgICAgICB1bnNjaGVkdWxlR2NJZGxlcigpOwogCi0gICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSBwZXJmb3JtUmVzdW1lQWN0aXZpdHkodG9rZW4sIGNsZWFySGlkZSk7CisgICAgICAgIEFjdGl2aXR5Q2xpZW50UmVjb3JkIHIgPSBwZXJmb3JtUmVzdW1lQWN0aXZpdHkodG9rZW4sIGNsZWFySGlkZSk7CiAKICAgICAgICAgaWYgKHIgIT0gbnVsbCkgewogICAgICAgICAgICAgZmluYWwgQWN0aXZpdHkgYSA9IHIuYWN0aXZpdHk7CkBAIC0zMjM5LDcgKzIxOTQsNyBAQAogICAgIHByaXZhdGUgaW50IG1UaHVtYm5haWxXaWR0aCA9IC0xOwogICAgIHByaXZhdGUgaW50IG1UaHVtYm5haWxIZWlnaHQgPSAtMTsKIAotICAgIHByaXZhdGUgZmluYWwgQml0bWFwIGNyZWF0ZVRodW1ibmFpbEJpdG1hcChBY3Rpdml0eVJlY29yZCByKSB7CisgICAgcHJpdmF0ZSBmaW5hbCBCaXRtYXAgY3JlYXRlVGh1bWJuYWlsQml0bWFwKEFjdGl2aXR5Q2xpZW50UmVjb3JkIHIpIHsKICAgICAgICAgQml0bWFwIHRodW1ibmFpbCA9IG51bGw7CiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBpbnQgdyA9IG1UaHVtYm5haWxXaWR0aDsKQEAgLTMyNzcsNyArMjIzMiw3IEBACiAKICAgICBwcml2YXRlIGZpbmFsIHZvaWQgaGFuZGxlUGF1c2VBY3Rpdml0eShJQmluZGVyIHRva2VuLCBib29sZWFuIGZpbmlzaGVkLAogICAgICAgICAgICAgYm9vbGVhbiB1c2VyTGVhdmluZywgaW50IGNvbmZpZ0NoYW5nZXMpIHsKLSAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IG1BY3Rpdml0aWVzLmdldCh0b2tlbik7CisgICAgICAgIEFjdGl2aXR5Q2xpZW50UmVjb3JkIHIgPSBtQWN0aXZpdGllcy5nZXQodG9rZW4pOwogICAgICAgICBpZiAociAhPSBudWxsKSB7CiAgICAgICAgICAgICAvL1Nsb2cudihUQUcsICJ1c2VyTGVhdmluZz0iICsgdXNlckxlYXZpbmcgKyAiIGhhbmRsaW5nIHBhdXNlIG9mICIgKyByKTsKICAgICAgICAgICAgIGlmICh1c2VyTGVhdmluZykgewpAQCAtMzI5NSwxNyArMjI1MCwxNyBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgZmluYWwgdm9pZCBwZXJmb3JtVXNlckxlYXZpbmdBY3Rpdml0eShBY3Rpdml0eVJlY29yZCByKSB7CisgICAgZmluYWwgdm9pZCBwZXJmb3JtVXNlckxlYXZpbmdBY3Rpdml0eShBY3Rpdml0eUNsaWVudFJlY29yZCByKSB7CiAgICAgICAgIG1JbnN0cnVtZW50YXRpb24uY2FsbEFjdGl2aXR5T25Vc2VyTGVhdmluZyhyLmFjdGl2aXR5KTsKICAgICB9CiAKICAgICBmaW5hbCBCdW5kbGUgcGVyZm9ybVBhdXNlQWN0aXZpdHkoSUJpbmRlciB0b2tlbiwgYm9vbGVhbiBmaW5pc2hlZCwKICAgICAgICAgICAgIGJvb2xlYW4gc2F2ZVN0YXRlKSB7Ci0gICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSBtQWN0aXZpdGllcy5nZXQodG9rZW4pOworICAgICAgICBBY3Rpdml0eUNsaWVudFJlY29yZCByID0gbUFjdGl2aXRpZXMuZ2V0KHRva2VuKTsKICAgICAgICAgcmV0dXJuIHIgIT0gbnVsbCA/IHBlcmZvcm1QYXVzZUFjdGl2aXR5KHIsIGZpbmlzaGVkLCBzYXZlU3RhdGUpIDogbnVsbDsKICAgICB9CiAKLSAgICBmaW5hbCBCdW5kbGUgcGVyZm9ybVBhdXNlQWN0aXZpdHkoQWN0aXZpdHlSZWNvcmQgciwgYm9vbGVhbiBmaW5pc2hlZCwKKyAgICBmaW5hbCBCdW5kbGUgcGVyZm9ybVBhdXNlQWN0aXZpdHkoQWN0aXZpdHlDbGllbnRSZWNvcmQgciwgYm9vbGVhbiBmaW5pc2hlZCwKICAgICAgICAgICAgIGJvb2xlYW4gc2F2ZVN0YXRlKSB7CiAgICAgICAgIGlmIChyLnBhdXNlZCkgewogICAgICAgICAgICAgaWYgKHIuYWN0aXZpdHkubUZpbmlzaGVkKSB7CkBAIC0zMzU2LDcgKzIzMTEsNyBAQAogICAgIH0KIAogICAgIGZpbmFsIHZvaWQgcGVyZm9ybVN0b3BBY3Rpdml0eShJQmluZGVyIHRva2VuKSB7Ci0gICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSBtQWN0aXZpdGllcy5nZXQodG9rZW4pOworICAgICAgICBBY3Rpdml0eUNsaWVudFJlY29yZCByID0gbUFjdGl2aXRpZXMuZ2V0KHRva2VuKTsKICAgICAgICAgcGVyZm9ybVN0b3BBY3Rpdml0eUlubmVyKHIsIG51bGwsIGZhbHNlKTsKICAgICB9CiAKQEAgLTMzNzIsNyArMjMyNyw3IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwcml2YXRlIGZpbmFsIHZvaWQgcGVyZm9ybVN0b3BBY3Rpdml0eUlubmVyKEFjdGl2aXR5UmVjb3JkIHIsCisgICAgcHJpdmF0ZSBmaW5hbCB2b2lkIHBlcmZvcm1TdG9wQWN0aXZpdHlJbm5lcihBY3Rpdml0eUNsaWVudFJlY29yZCByLAogICAgICAgICAgICAgU3RvcEluZm8gaW5mbywgYm9vbGVhbiBrZWVwU2hvd24pIHsKICAgICAgICAgaWYgKGxvY2FsTE9HVikgU2xvZy52KFRBRywgIlBlcmZvcm1pbmcgc3RvcCBvZiAiICsgcik7CiAgICAgICAgIGlmIChyICE9IG51bGwpIHsKQEAgLTM0MjMsNyArMjM3OCw3IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwcml2YXRlIGZpbmFsIHZvaWQgdXBkYXRlVmlzaWJpbGl0eShBY3Rpdml0eVJlY29yZCByLCBib29sZWFuIHNob3cpIHsKKyAgICBwcml2YXRlIGZpbmFsIHZvaWQgdXBkYXRlVmlzaWJpbGl0eShBY3Rpdml0eUNsaWVudFJlY29yZCByLCBib29sZWFuIHNob3cpIHsKICAgICAgICAgVmlldyB2ID0gci5hY3Rpdml0eS5tRGVjb3I7CiAgICAgICAgIGlmICh2ICE9IG51bGwpIHsKICAgICAgICAgICAgIGlmIChzaG93KSB7CkBAIC0zNDUxLDcgKzI0MDYsNyBAQAogICAgIH0KIAogICAgIHByaXZhdGUgZmluYWwgdm9pZCBoYW5kbGVTdG9wQWN0aXZpdHkoSUJpbmRlciB0b2tlbiwgYm9vbGVhbiBzaG93LCBpbnQgY29uZmlnQ2hhbmdlcykgewotICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gbUFjdGl2aXRpZXMuZ2V0KHRva2VuKTsKKyAgICAgICAgQWN0aXZpdHlDbGllbnRSZWNvcmQgciA9IG1BY3Rpdml0aWVzLmdldCh0b2tlbik7CiAgICAgICAgIHIuYWN0aXZpdHkubUNvbmZpZ0NoYW5nZUZsYWdzIHw9IGNvbmZpZ0NoYW5nZXM7CiAKICAgICAgICAgU3RvcEluZm8gaW5mbyA9IG5ldyBTdG9wSW5mbygpOwpAQCAtMzQ3Miw3ICsyNDI3LDcgQEAKICAgICB9CiAKICAgICBmaW5hbCB2b2lkIHBlcmZvcm1SZXN0YXJ0QWN0aXZpdHkoSUJpbmRlciB0b2tlbikgewotICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gbUFjdGl2aXRpZXMuZ2V0KHRva2VuKTsKKyAgICAgICAgQWN0aXZpdHlDbGllbnRSZWNvcmQgciA9IG1BY3Rpdml0aWVzLmdldCh0b2tlbik7CiAgICAgICAgIGlmIChyLnN0b3BwZWQpIHsKICAgICAgICAgICAgIHIuYWN0aXZpdHkucGVyZm9ybVJlc3RhcnQoKTsKICAgICAgICAgICAgIHIuc3RvcHBlZCA9IGZhbHNlOwpAQCAtMzQ4MCw3ICsyNDM1LDcgQEAKICAgICB9CiAKICAgICBwcml2YXRlIGZpbmFsIHZvaWQgaGFuZGxlV2luZG93VmlzaWJpbGl0eShJQmluZGVyIHRva2VuLCBib29sZWFuIHNob3cpIHsKLSAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IG1BY3Rpdml0aWVzLmdldCh0b2tlbik7CisgICAgICAgIEFjdGl2aXR5Q2xpZW50UmVjb3JkIHIgPSBtQWN0aXZpdGllcy5nZXQodG9rZW4pOwogICAgICAgICBpZiAoIXNob3cgJiYgIXIuc3RvcHBlZCkgewogICAgICAgICAgICAgcGVyZm9ybVN0b3BBY3Rpdml0eUlubmVyKHIsIG51bGwsIHNob3cpOwogICAgICAgICB9IGVsc2UgaWYgKHNob3cgJiYgci5zdG9wcGVkKSB7CkBAIC0zNDk4LDcgKzI0NTMsNyBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgcHJpdmF0ZSBmaW5hbCB2b2lkIGRlbGl2ZXJSZXN1bHRzKEFjdGl2aXR5UmVjb3JkIHIsIExpc3Q8UmVzdWx0SW5mbz4gcmVzdWx0cykgeworICAgIHByaXZhdGUgZmluYWwgdm9pZCBkZWxpdmVyUmVzdWx0cyhBY3Rpdml0eUNsaWVudFJlY29yZCByLCBMaXN0PFJlc3VsdEluZm8+IHJlc3VsdHMpIHsKICAgICAgICAgZmluYWwgaW50IE4gPSByZXN1bHRzLnNpemUoKTsKICAgICAgICAgZm9yIChpbnQgaT0wOyBpPE47IGkrKykgewogICAgICAgICAgICAgUmVzdWx0SW5mbyByaSA9IHJlc3VsdHMuZ2V0KGkpOwpAQCAtMzUyMiw3ICsyNDc3LDcgQEAKICAgICB9CiAKICAgICBwcml2YXRlIGZpbmFsIHZvaWQgaGFuZGxlU2VuZFJlc3VsdChSZXN1bHREYXRhIHJlcykgewotICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gbUFjdGl2aXRpZXMuZ2V0KHJlcy50b2tlbik7CisgICAgICAgIEFjdGl2aXR5Q2xpZW50UmVjb3JkIHIgPSBtQWN0aXZpdGllcy5nZXQocmVzLnRva2VuKTsKICAgICAgICAgaWYgKERFQlVHX1JFU1VMVFMpIFNsb2cudihUQUcsICJIYW5kbGluZyBzZW5kIHJlc3VsdCB0byAiICsgcik7CiAgICAgICAgIGlmIChyICE9IG51bGwpIHsKICAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gcmVzdW1lZCA9ICFyLnBhdXNlZDsKQEAgLTM1NjEsMTMgKzI1MTYsMTMgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIHB1YmxpYyBmaW5hbCBBY3Rpdml0eVJlY29yZCBwZXJmb3JtRGVzdHJveUFjdGl2aXR5KElCaW5kZXIgdG9rZW4sIGJvb2xlYW4gZmluaXNoaW5nKSB7CisgICAgcHVibGljIGZpbmFsIEFjdGl2aXR5Q2xpZW50UmVjb3JkIHBlcmZvcm1EZXN0cm95QWN0aXZpdHkoSUJpbmRlciB0b2tlbiwgYm9vbGVhbiBmaW5pc2hpbmcpIHsKICAgICAgICAgcmV0dXJuIHBlcmZvcm1EZXN0cm95QWN0aXZpdHkodG9rZW4sIGZpbmlzaGluZywgMCwgZmFsc2UpOwogICAgIH0KIAotICAgIHByaXZhdGUgZmluYWwgQWN0aXZpdHlSZWNvcmQgcGVyZm9ybURlc3Ryb3lBY3Rpdml0eShJQmluZGVyIHRva2VuLCBib29sZWFuIGZpbmlzaGluZywKKyAgICBwcml2YXRlIGZpbmFsIEFjdGl2aXR5Q2xpZW50UmVjb3JkIHBlcmZvcm1EZXN0cm95QWN0aXZpdHkoSUJpbmRlciB0b2tlbiwgYm9vbGVhbiBmaW5pc2hpbmcsCiAgICAgICAgICAgICBpbnQgY29uZmlnQ2hhbmdlcywgYm9vbGVhbiBnZXROb25Db25maWdJbnN0YW5jZSkgewotICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gbUFjdGl2aXRpZXMuZ2V0KHRva2VuKTsKKyAgICAgICAgQWN0aXZpdHlDbGllbnRSZWNvcmQgciA9IG1BY3Rpdml0aWVzLmdldCh0b2tlbik7CiAgICAgICAgIGlmIChsb2NhbExPR1YpIFNsb2cudihUQUcsICJQZXJmb3JtaW5nIGZpbmlzaCBvZiAiICsgcik7CiAgICAgICAgIGlmIChyICE9IG51bGwpIHsKICAgICAgICAgICAgIHIuYWN0aXZpdHkubUNvbmZpZ0NoYW5nZUZsYWdzIHw9IGNvbmZpZ0NoYW5nZXM7CkBAIC0zNjcwLDcgKzI2MjUsNyBAQAogCiAgICAgcHJpdmF0ZSBmaW5hbCB2b2lkIGhhbmRsZURlc3Ryb3lBY3Rpdml0eShJQmluZGVyIHRva2VuLCBib29sZWFuIGZpbmlzaGluZywKICAgICAgICAgICAgIGludCBjb25maWdDaGFuZ2VzLCBib29sZWFuIGdldE5vbkNvbmZpZ0luc3RhbmNlKSB7Ci0gICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSBwZXJmb3JtRGVzdHJveUFjdGl2aXR5KHRva2VuLCBmaW5pc2hpbmcsCisgICAgICAgIEFjdGl2aXR5Q2xpZW50UmVjb3JkIHIgPSBwZXJmb3JtRGVzdHJveUFjdGl2aXR5KHRva2VuLCBmaW5pc2hpbmcsCiAgICAgICAgICAgICAgICAgY29uZmlnQ2hhbmdlcywgZ2V0Tm9uQ29uZmlnSW5zdGFuY2UpOwogICAgICAgICBpZiAociAhPSBudWxsKSB7CiAgICAgICAgICAgICBXaW5kb3dNYW5hZ2VyIHdtID0gci5hY3Rpdml0eS5nZXRXaW5kb3dNYW5hZ2VyKCk7CkBAIC0zNzExLDcgKzI2NjYsNyBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgcHJpdmF0ZSBmaW5hbCB2b2lkIGhhbmRsZVJlbGF1bmNoQWN0aXZpdHkoQWN0aXZpdHlSZWNvcmQgdG1wLCBpbnQgY29uZmlnQ2hhbmdlcykgeworICAgIHByaXZhdGUgZmluYWwgdm9pZCBoYW5kbGVSZWxhdW5jaEFjdGl2aXR5KEFjdGl2aXR5Q2xpZW50UmVjb3JkIHRtcCwgaW50IGNvbmZpZ0NoYW5nZXMpIHsKICAgICAgICAgLy8gSWYgd2UgYXJlIGdldHRpbmcgcmVhZHkgdG8gZ2MgYWZ0ZXIgZ29pbmcgdG8gdGhlIGJhY2tncm91bmQsIHdlbGwKICAgICAgICAgLy8gd2UgYXJlIGJhY2sgYWN0aXZlIHNvIHNraXAgaXQuCiAgICAgICAgIHVuc2NoZWR1bGVHY0lkbGVyKCk7CkBAIC0zNzMwLDcgKzI2ODUsNyBAQAogICAgICAgICAgICAgSUJpbmRlciB0b2tlbiA9IHRtcC50b2tlbjsKICAgICAgICAgICAgIHRtcCA9IG51bGw7CiAgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8TjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IG1SZWxhdW5jaGluZ0FjdGl2aXRpZXMuZ2V0KGkpOworICAgICAgICAgICAgICAgIEFjdGl2aXR5Q2xpZW50UmVjb3JkIHIgPSBtUmVsYXVuY2hpbmdBY3Rpdml0aWVzLmdldChpKTsKICAgICAgICAgICAgICAgICBpZiAoci50b2tlbiA9PSB0b2tlbikgewogICAgICAgICAgICAgICAgICAgICB0bXAgPSByOwogICAgICAgICAgICAgICAgICAgICBtUmVsYXVuY2hpbmdBY3Rpdml0aWVzLnJlbW92ZShpKTsKQEAgLTM3NzIsNyArMjcyNyw3IEBACiAgICAgICAgICAgICBoYW5kbGVDb25maWd1cmF0aW9uQ2hhbmdlZChjaGFuZ2VkQ29uZmlnKTsKICAgICAgICAgfQogCi0gICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSBtQWN0aXZpdGllcy5nZXQodG1wLnRva2VuKTsKKyAgICAgICAgQWN0aXZpdHlDbGllbnRSZWNvcmQgciA9IG1BY3Rpdml0aWVzLmdldCh0bXAudG9rZW4pOwogICAgICAgICBpZiAoREVCVUdfQ09ORklHVVJBVElPTikgU2xvZy52KFRBRywgIkhhbmRsaW5nIHJlbGF1bmNoIG9mICIgKyByKTsKICAgICAgICAgaWYgKHIgPT0gbnVsbCkgewogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzgxNiw3ICsyNzcxLDcgQEAKICAgICB9CiAKICAgICBwcml2YXRlIGZpbmFsIHZvaWQgaGFuZGxlUmVxdWVzdFRodW1ibmFpbChJQmluZGVyIHRva2VuKSB7Ci0gICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSBtQWN0aXZpdGllcy5nZXQodG9rZW4pOworICAgICAgICBBY3Rpdml0eUNsaWVudFJlY29yZCByID0gbUFjdGl2aXRpZXMuZ2V0KHRva2VuKTsKICAgICAgICAgQml0bWFwIHRodW1ibmFpbCA9IGNyZWF0ZVRodW1ibmFpbEJpdG1hcChyKTsKICAgICAgICAgQ2hhclNlcXVlbmNlIGRlc2NyaXB0aW9uID0gbnVsbDsKICAgICAgICAgdHJ5IHsKQEAgLTM4NDMsOSArMjc5OCw5IEBACiAgICAgICAgICAgICAgICAgPSBuZXcgQXJyYXlMaXN0PENvbXBvbmVudENhbGxiYWNrcz4oKTsKIAogICAgICAgICBpZiAobUFjdGl2aXRpZXMuc2l6ZSgpID4gMCkgewotICAgICAgICAgICAgSXRlcmF0b3I8QWN0aXZpdHlSZWNvcmQ+IGl0ID0gbUFjdGl2aXRpZXMudmFsdWVzKCkuaXRlcmF0b3IoKTsKKyAgICAgICAgICAgIEl0ZXJhdG9yPEFjdGl2aXR5Q2xpZW50UmVjb3JkPiBpdCA9IG1BY3Rpdml0aWVzLnZhbHVlcygpLml0ZXJhdG9yKCk7CiAgICAgICAgICAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKSB7Ci0gICAgICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgYXIgPSBpdC5uZXh0KCk7CisgICAgICAgICAgICAgICAgQWN0aXZpdHlDbGllbnRSZWNvcmQgYXIgPSBpdC5uZXh0KCk7CiAgICAgICAgICAgICAgICAgQWN0aXZpdHkgYSA9IGFyLmFjdGl2aXR5OwogICAgICAgICAgICAgICAgIGlmIChhICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCFhci5hY3Rpdml0eS5tRmluaXNoZWQgJiYgKGFsbEFjdGl2aXRpZXMgfHwKQEAgLTM4NzQsNyArMjgyOSw3IEBACiAgICAgICAgIH0KICAgICAgICAgc3luY2hyb25pemVkIChtUHJvdmlkZXJNYXApIHsKICAgICAgICAgICAgIGlmIChtTG9jYWxQcm92aWRlcnMuc2l6ZSgpID4gMCkgewotICAgICAgICAgICAgICAgIEl0ZXJhdG9yPFByb3ZpZGVyUmVjb3JkPiBpdCA9IG1Mb2NhbFByb3ZpZGVycy52YWx1ZXMoKS5pdGVyYXRvcigpOworICAgICAgICAgICAgICAgIEl0ZXJhdG9yPFByb3ZpZGVyQ2xpZW50UmVjb3JkPiBpdCA9IG1Mb2NhbFByb3ZpZGVycy52YWx1ZXMoKS5pdGVyYXRvcigpOwogICAgICAgICAgICAgICAgIHdoaWxlIChpdC5oYXNOZXh0KCkpIHsKICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tzLmFkZChpdC5uZXh0KCkubUxvY2FsUHJvdmlkZXIpOwogICAgICAgICAgICAgICAgIH0KQEAgLTQwMjAsNyArMjk3NSw3IEBACiAgICAgfQogCiAgICAgZmluYWwgdm9pZCBoYW5kbGVBY3Rpdml0eUNvbmZpZ3VyYXRpb25DaGFuZ2VkKElCaW5kZXIgdG9rZW4pIHsKLSAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IG1BY3Rpdml0aWVzLmdldCh0b2tlbik7CisgICAgICAgIEFjdGl2aXR5Q2xpZW50UmVjb3JkIHIgPSBtQWN0aXZpdGllcy5nZXQodG9rZW4pOwogICAgICAgICBpZiAociA9PSBudWxsIHx8IHIuYWN0aXZpdHkgPT0gbnVsbCkgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC00MDU3LDcgKzMwMTIsNyBAQAogICAgICAgICAgICAgZm9yIChpbnQgaT1wYWNrYWdlcy5sZW5ndGgtMTsgaT49MDsgaS0tKSB7CiAgICAgICAgICAgICAgICAgLy9TbG9nLmkoVEFHLCAiQ2xlYW5pbmcgb2xkIHBhY2thZ2U6ICIgKyBwYWNrYWdlc1tpXSk7CiAgICAgICAgICAgICAgICAgaWYgKCFoYXNQa2dJbmZvKSB7Ci0gICAgICAgICAgICAgICAgICAgIFdlYWtSZWZlcmVuY2U8UGFja2FnZUluZm8+IHJlZjsKKyAgICAgICAgICAgICAgICAgICAgV2Vha1JlZmVyZW5jZTxMb2FkZWRBcGs+IHJlZjsKICAgICAgICAgICAgICAgICAgICAgcmVmID0gbVBhY2thZ2VzLmdldChwYWNrYWdlc1tpXSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChyZWYgIT0gbnVsbCAmJiByZWYuZ2V0KCkgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgaGFzUGtnSW5mbyA9IHRydWU7CkBAIC00MTMyLDYgKzMwODcsMTkgQEAKICAgICAgICAgZGF0YS5pbmZvID0gZ2V0UGFja2FnZUluZm9Ob0NoZWNrKGRhdGEuYXBwSW5mbyk7CiAKICAgICAgICAgLyoqCisgICAgICAgICAqIEZvciBzeXN0ZW0gYXBwbGljYXRpb25zIG9uIHVzZXJkZWJ1Zy9lbmcgYnVpbGRzLCBsb2cgc3RhY2sKKyAgICAgICAgICogdHJhY2VzIG9mIGRpc2sgYW5kIG5ldHdvcmsgYWNjZXNzIHRvIGRyb3Bib3ggZm9yIGFuYWx5c2lzLgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKChkYXRhLmFwcEluZm8uZmxhZ3MmQXBwbGljYXRpb25JbmZvLkZMQUdfU1lTVEVNKSAhPSAwICYmCisgICAgICAgICAgICAhInVzZXIiLmVxdWFscyhCdWlsZC5UWVBFKSkgeworICAgICAgICAgICAgU3RyaWN0TW9kZS5zZXRUaHJlYWRCbG9ja2luZ1BvbGljeSgKKyAgICAgICAgICAgICAgICBTdHJpY3RNb2RlLkRJU0FMTE9XX0RJU0tfV1JJVEUgfAorICAgICAgICAgICAgICAgIFN0cmljdE1vZGUuRElTQUxMT1dfRElTS19SRUFEIHwKKyAgICAgICAgICAgICAgICBTdHJpY3RNb2RlLkRJU0FMTE9XX05FVFdPUksgfAorICAgICAgICAgICAgICAgIFN0cmljdE1vZGUuUEVOQUxUWV9EUk9QQk9YKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgogICAgICAgICAgKiBTd2l0Y2ggdGhpcyBwcm9jZXNzIHRvIGRlbnNpdHkgY29tcGF0aWJpbGl0eSBtb2RlIGlmIG5lZWRlZC4KICAgICAgICAgICovCiAgICAgICAgIGlmICgoZGF0YS5hcHBJbmZvLmZsYWdzJkFwcGxpY2F0aW9uSW5mby5GTEFHX1NVUFBPUlRTX1NDUkVFTl9ERU5TSVRJRVMpCkBAIC00MTg5LDcgKzMxNTcsNyBAQAogICAgICAgICAgICAgaW5zdHJBcHAuc291cmNlRGlyID0gaWkuc291cmNlRGlyOwogICAgICAgICAgICAgaW5zdHJBcHAucHVibGljU291cmNlRGlyID0gaWkucHVibGljU291cmNlRGlyOwogICAgICAgICAgICAgaW5zdHJBcHAuZGF0YURpciA9IGlpLmRhdGFEaXI7Ci0gICAgICAgICAgICBQYWNrYWdlSW5mbyBwaSA9IGdldFBhY2thZ2VJbmZvKGluc3RyQXBwLAorICAgICAgICAgICAgTG9hZGVkQXBrIHBpID0gZ2V0UGFja2FnZUluZm8oaW5zdHJBcHAsCiAgICAgICAgICAgICAgICAgICAgIGFwcENvbnRleHQuZ2V0Q2xhc3NMb2FkZXIoKSwgZmFsc2UsIHRydWUpOwogICAgICAgICAgICAgQ29udGV4dEltcGwgaW5zdHJDb250ZXh0ID0gbmV3IENvbnRleHRJbXBsKCk7CiAgICAgICAgICAgICBpbnN0ckNvbnRleHQuaW5pdChwaSwgbnVsbCwgdGhpcyk7CkBAIC00MzAwLDcgKzMyNjgsNyBAQAogCiAgICAgcHJpdmF0ZSBmaW5hbCBJQ29udGVudFByb3ZpZGVyIGdldFByb3ZpZGVyKENvbnRleHQgY29udGV4dCwgU3RyaW5nIG5hbWUpIHsKICAgICAgICAgc3luY2hyb25pemVkKG1Qcm92aWRlck1hcCkgewotICAgICAgICAgICAgZmluYWwgUHJvdmlkZXJSZWNvcmQgcHIgPSBtUHJvdmlkZXJNYXAuZ2V0KG5hbWUpOworICAgICAgICAgICAgZmluYWwgUHJvdmlkZXJDbGllbnRSZWNvcmQgcHIgPSBtUHJvdmlkZXJNYXAuZ2V0KG5hbWUpOwogICAgICAgICAgICAgaWYgKHByICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICByZXR1cm4gcHIubVByb3ZpZGVyOwogICAgICAgICAgICAgfQpAQCAtNDQxMSw5ICszMzc5LDkgQEAKICAgICAgICAgU3RyaW5nIG5hbWUgPSBudWxsOwogICAgICAgICAKICAgICAgICAgLy8gcmVtb3ZlIHRoZSBwcm92aWRlciBmcm9tIG1Qcm92aWRlck1hcAotICAgICAgICBJdGVyYXRvcjxQcm92aWRlclJlY29yZD4gaXRlciA9IG1Qcm92aWRlck1hcC52YWx1ZXMoKS5pdGVyYXRvcigpOworICAgICAgICBJdGVyYXRvcjxQcm92aWRlckNsaWVudFJlY29yZD4gaXRlciA9IG1Qcm92aWRlck1hcC52YWx1ZXMoKS5pdGVyYXRvcigpOwogICAgICAgICB3aGlsZSAoaXRlci5oYXNOZXh0KCkpIHsKLSAgICAgICAgICAgIFByb3ZpZGVyUmVjb3JkIHByID0gaXRlci5uZXh0KCk7CisgICAgICAgICAgICBQcm92aWRlckNsaWVudFJlY29yZCBwciA9IGl0ZXIubmV4dCgpOwogICAgICAgICAgICAgSUJpbmRlciBteUJpbmRlciA9IHByLm1Qcm92aWRlci5hc0JpbmRlcigpOwogICAgICAgICAgICAgaWYgKG15QmluZGVyID09IHByb3ZpZGVyQmluZGVyKSB7CiAgICAgICAgICAgICAgICAgLy9maW5kIGlmIGl0cyBwdWJsaXNoZWQgYnkgdGhpcyBwcm9jZXNzIGl0c2VsZgpAQCAtNDQzOCwxMCArMzQwNiwxMCBAQAogCiAgICAgZmluYWwgdm9pZCByZW1vdmVEZWFkUHJvdmlkZXIoU3RyaW5nIG5hbWUsIElDb250ZW50UHJvdmlkZXIgcHJvdmlkZXIpIHsKICAgICAgICAgc3luY2hyb25pemVkKG1Qcm92aWRlck1hcCkgewotICAgICAgICAgICAgUHJvdmlkZXJSZWNvcmQgcHIgPSBtUHJvdmlkZXJNYXAuZ2V0KG5hbWUpOworICAgICAgICAgICAgUHJvdmlkZXJDbGllbnRSZWNvcmQgcHIgPSBtUHJvdmlkZXJNYXAuZ2V0KG5hbWUpOwogICAgICAgICAgICAgaWYgKHByLm1Qcm92aWRlci5hc0JpbmRlcigpID09IHByb3ZpZGVyLmFzQmluZGVyKCkpIHsKICAgICAgICAgICAgICAgICBTbG9nLmkoVEFHLCAiUmVtb3ZpbmcgZGVhZCBjb250ZW50IHByb3ZpZGVyOiAiICsgbmFtZSk7Ci0gICAgICAgICAgICAgICAgUHJvdmlkZXJSZWNvcmQgcmVtb3ZlZCA9IG1Qcm92aWRlck1hcC5yZW1vdmUobmFtZSk7CisgICAgICAgICAgICAgICAgUHJvdmlkZXJDbGllbnRSZWNvcmQgcmVtb3ZlZCA9IG1Qcm92aWRlck1hcC5yZW1vdmUobmFtZSk7CiAgICAgICAgICAgICAgICAgaWYgKHJlbW92ZWQgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICByZW1vdmVkLm1Qcm92aWRlci5hc0JpbmRlcigpLnVubGlua1RvRGVhdGgocmVtb3ZlZCwgMCk7CiAgICAgICAgICAgICAgICAgfQpAQCAtNDQ1MCwxMCArMzQxOCwxMCBAQAogICAgIH0KIAogICAgIGZpbmFsIHZvaWQgcmVtb3ZlRGVhZFByb3ZpZGVyTG9ja2VkKFN0cmluZyBuYW1lLCBJQ29udGVudFByb3ZpZGVyIHByb3ZpZGVyKSB7Ci0gICAgICAgIFByb3ZpZGVyUmVjb3JkIHByID0gbVByb3ZpZGVyTWFwLmdldChuYW1lKTsKKyAgICAgICAgUHJvdmlkZXJDbGllbnRSZWNvcmQgcHIgPSBtUHJvdmlkZXJNYXAuZ2V0KG5hbWUpOwogICAgICAgICBpZiAocHIubVByb3ZpZGVyLmFzQmluZGVyKCkgPT0gcHJvdmlkZXIuYXNCaW5kZXIoKSkgewogICAgICAgICAgICAgU2xvZy5pKFRBRywgIlJlbW92aW5nIGRlYWQgY29udGVudCBwcm92aWRlcjogIiArIG5hbWUpOwotICAgICAgICAgICAgUHJvdmlkZXJSZWNvcmQgcmVtb3ZlZCA9IG1Qcm92aWRlck1hcC5yZW1vdmUobmFtZSk7CisgICAgICAgICAgICBQcm92aWRlckNsaWVudFJlY29yZCByZW1vdmVkID0gbVByb3ZpZGVyTWFwLnJlbW92ZShuYW1lKTsKICAgICAgICAgICAgIGlmIChyZW1vdmVkICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICByZW1vdmVkLm1Qcm92aWRlci5hc0JpbmRlcigpLnVubGlua1RvRGVhdGgocmVtb3ZlZCwgMCk7CiAgICAgICAgICAgICB9CkBAIC00NTIxLDcgKzM0ODksNyBAQAogICAgICAgICAgICAgLy8gQ2FjaGUgdGhlIHBvaW50ZXIgZm9yIHRoZSByZW1vdGUgcHJvdmlkZXIuCiAgICAgICAgICAgICBTdHJpbmcgbmFtZXNbXSA9IFBBVFRFUk5fU0VNSUNPTE9OLnNwbGl0KGluZm8uYXV0aG9yaXR5KTsKICAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxuYW1lcy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgICAgIFByb3ZpZGVyUmVjb3JkIHByID0gbmV3IFByb3ZpZGVyUmVjb3JkKG5hbWVzW2ldLCBwcm92aWRlciwKKyAgICAgICAgICAgICAgICBQcm92aWRlckNsaWVudFJlY29yZCBwciA9IG5ldyBQcm92aWRlckNsaWVudFJlY29yZChuYW1lc1tpXSwgcHJvdmlkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbFByb3ZpZGVyKTsKICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICBwcm92aWRlci5hc0JpbmRlcigpLmxpbmtUb0RlYXRoKHByLCAwKTsKQEAgLTQ1MzIsNyArMzUwMCw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAobG9jYWxQcm92aWRlciAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgbUxvY2FsUHJvdmlkZXJzLnB1dChwcm92aWRlci5hc0JpbmRlcigpLAotICAgICAgICAgICAgICAgICAgICAgICAgbmV3IFByb3ZpZGVyUmVjb3JkKG51bGwsIHByb3ZpZGVyLCBsb2NhbFByb3ZpZGVyKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgUHJvdmlkZXJDbGllbnRSZWNvcmQobnVsbCwgcHJvdmlkZXIsIGxvY2FsUHJvdmlkZXIpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9hcHAvQXBwR2xvYmFscy5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0FwcEdsb2JhbHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTM5MTI5Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0FwcEdsb2JhbHMuamF2YQpAQCAtMCwwICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBhbmRyb2lkLmFwcDsKKworaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5JUGFja2FnZU1hbmFnZXI7CisKKy8qKgorICogU3BlY2lhbCBwcml2YXRlIGFjY2VzcyBmb3IgY2VydGFpbiBnbG9iYWxzIHJlbGF0ZWQgdG8gYSBwcm9jZXNzLgorICogQGhpZGUKKyAqLworcHVibGljIGNsYXNzIEFwcEdsb2JhbHMgeworICAgIC8qKgorICAgICAqIFJldHVybiB0aGUgZmlyc3QgQXBwbGljYXRpb24gb2JqZWN0IG1hZGUgaW4gdGhlIHByb2Nlc3MuCisgICAgICogTk9URTogT25seSB3b3JrcyBvbiB0aGUgbWFpbiB0aHJlYWQuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBBcHBsaWNhdGlvbiBnZXRJbml0aWFsQXBwbGljYXRpb24oKSB7CisgICAgICAgIHJldHVybiBBY3Rpdml0eVRocmVhZC5jdXJyZW50QXBwbGljYXRpb24oKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBwYWNrYWdlIG5hbWUgb2YgdGhlIGZpcnN0IC5hcGsgbG9hZGVkIGludG8gdGhlIHByb2Nlc3MuCisgICAgICogTk9URTogT25seSB3b3JrcyBvbiB0aGUgbWFpbiB0aHJlYWQuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0SW5pdGlhbFBhY2thZ2UoKSB7CisgICAgICAgIHJldHVybiBBY3Rpdml0eVRocmVhZC5jdXJyZW50UGFja2FnZU5hbWUoKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSByYXcgaW50ZXJmYWNlIHRvIHRoZSBwYWNrYWdlIG1hbmFnZXIuCisgICAgICogQHJldHVybgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgSVBhY2thZ2VNYW5hZ2VyIGdldFBhY2thZ2VNYW5hZ2VyKCkgeworICAgICAgICByZXR1cm4gQWN0aXZpdHlUaHJlYWQuZ2V0UGFja2FnZU1hbmFnZXIoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9hcHAvQXBwbGljYXRpb25FcnJvclJlcG9ydC5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0FwcGxpY2F0aW9uRXJyb3JSZXBvcnQuamF2YQppbmRleCBmMGNlZjk4Li45ODM0YzRjIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9hcHAvQXBwbGljYXRpb25FcnJvclJlcG9ydC5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9BcHBsaWNhdGlvbkVycm9yUmVwb3J0LmphdmEKQEAgLTUyLDcgKzUyLDYgQEAKICAgICAvLyBTeXN0ZW0gcHJvcGVydHkgZGVmaW5pbmcgZGVmYXVsdCBlcnJvciByZXBvcnQgcmVjZWl2ZXIKICAgICBzdGF0aWMgZmluYWwgU3RyaW5nIERFRkFVTFRfRVJST1JfUkVDRUlWRVJfUFJPUEVSVFkgPSAicm8uZXJyb3IucmVjZWl2ZXIuZGVmYXVsdCI7CiAKLSAgICAKICAgICAvKioKICAgICAgKiBVbmluaXRpYWxpemVkIGVycm9yIHJlcG9ydC4KICAgICAgKi8KQEAgLTc0LDYgKzczLDExIEBACiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVFlQRV9CQVRURVJZID0gMzsKIAogICAgIC8qKgorICAgICAqIEFuIGVycm9yIHJlcG9ydCBhYm91dCBhIFN0cmljdE1vZGUgdmlvbGF0aW9uLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFRZUEVfU1RSSUNUX01PREVfVklPTEFUSU9OID0gNDsKKworICAgIC8qKgogICAgICAqIFR5cGUgb2YgdGhpcyByZXBvcnQuIENhbiBiZSBvbmUgb2Yge0BsaW5rICNUWVBFX05PTkV9LAogICAgICAqIHtAbGluayAjVFlQRV9DUkFTSH0sIHtAbGluayAjVFlQRV9BTlJ9LCBvciB7QGxpbmsgI1RZUEVfQkFUVEVSWX0uCiAgICAgICovCkBAIC0yNTAsNiArMjU0LDEwIEBACiAKICAgICAvKioKICAgICAgKiBEZXNjcmliZXMgYW4gYXBwbGljYXRpb24gY3Jhc2guCisgICAgICoKKyAgICAgKiA8cD5UaGlzIGlzIGFsc28gdXNlZCB0byBtYXJzaGFsIGFyb3VuZCBzdGFjayB0cmFjZXMgb2YgQU5ScyBhbmQKKyAgICAgKiBTdHJpY3RNb2RlIHZpb2xhdGlvbnMgd2hpY2ggYXJlbid0IG5lY2Vzc2FyaWx5IGNyYXNoZXMsIGJ1dCBoYXZlCisgICAgICogYSBsb3QgaW4gY29tbW9uLgogICAgICAqLwogICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgQ3Jhc2hJbmZvIHsKICAgICAgICAgLyoqCkBAIC0yODgsNiArMjk2LDEyIEBACiAgICAgICAgIHB1YmxpYyBTdHJpbmcgc3RhY2tUcmFjZTsKIAogICAgICAgICAvKioKKyAgICAgICAgICogRm9yIFN0cmljdE1vZGUgdmlvbGF0aW9ucywgdGhlIHdhbGwgdGltZSBkdXJhdGlvbiBvZiB0aGUKKyAgICAgICAgICogdmlvbGF0aW9uLCB3aGVuIGtub3duLgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIGxvbmcgZHVyYXRpb25NaWxsaXMgPSAtMTsKKworICAgICAgICAvKioKICAgICAgICAgICogQ3JlYXRlIGFuIHVuaW5pdGlhbGl6ZWQgaW5zdGFuY2Ugb2YgQ3Jhc2hJbmZvLgogICAgICAgICAgKi8KICAgICAgICAgcHVibGljIENyYXNoSW5mbygpIHsKQEAgLTMzMCw2ICszNDQsNyBAQAogICAgICAgICAgICAgdGhyb3dNZXRob2ROYW1lID0gaW4ucmVhZFN0cmluZygpOwogICAgICAgICAgICAgdGhyb3dMaW5lTnVtYmVyID0gaW4ucmVhZEludCgpOwogICAgICAgICAgICAgc3RhY2tUcmFjZSA9IGluLnJlYWRTdHJpbmcoKTsKKyAgICAgICAgICAgIGR1cmF0aW9uTWlsbGlzID0gaW4ucmVhZExvbmcoKTsKICAgICAgICAgfQogCiAgICAgICAgIC8qKgpAQCAtMzQzLDYgKzM1OCw3IEBACiAgICAgICAgICAgICBkZXN0LndyaXRlU3RyaW5nKHRocm93TWV0aG9kTmFtZSk7CiAgICAgICAgICAgICBkZXN0LndyaXRlSW50KHRocm93TGluZU51bWJlcik7CiAgICAgICAgICAgICBkZXN0LndyaXRlU3RyaW5nKHN0YWNrVHJhY2UpOworICAgICAgICAgICAgZGVzdC53cml0ZUxvbmcoZHVyYXRpb25NaWxsaXMpOwogICAgICAgICB9CiAKICAgICAgICAgLyoqCkBAIC0zNTYsNiArMzcyLDkgQEAKICAgICAgICAgICAgIHB3LnByaW50bG4ocHJlZml4ICsgInRocm93TWV0aG9kTmFtZTogIiArIHRocm93TWV0aG9kTmFtZSk7CiAgICAgICAgICAgICBwdy5wcmludGxuKHByZWZpeCArICJ0aHJvd0xpbmVOdW1iZXI6ICIgKyB0aHJvd0xpbmVOdW1iZXIpOwogICAgICAgICAgICAgcHcucHJpbnRsbihwcmVmaXggKyAic3RhY2tUcmFjZTogIiArIHN0YWNrVHJhY2UpOworICAgICAgICAgICAgaWYgKGR1cmF0aW9uTWlsbGlzICE9IC0xKSB7CisgICAgICAgICAgICAgICAgcHcucHJpbnRsbihwcmVmaXggKyAiZHVyYXRpb25NaWxsaXM6ICIgKyBkdXJhdGlvbk1pbGxpcyk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9BcHBsaWNhdGlvblRocmVhZE5hdGl2ZS5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0FwcGxpY2F0aW9uVGhyZWFkTmF0aXZlLmphdmEKaW5kZXggZGEyNmE3OC4uMWMyMDA2MiAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0FwcGxpY2F0aW9uVGhyZWFkTmF0aXZlLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0FwcGxpY2F0aW9uVGhyZWFkTmF0aXZlLmphdmEKQEAgLTM0MSwxMyArMzQxLDYgQEAKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBjYXNlIFJFUVVFU1RfUFNTX1RSQU5TQUNUSU9OOgotICAgICAgICB7Ci0gICAgICAgICAgICBkYXRhLmVuZm9yY2VJbnRlcmZhY2UoSUFwcGxpY2F0aW9uVGhyZWFkLmRlc2NyaXB0b3IpOwotICAgICAgICAgICAgcmVxdWVzdFBzcygpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgCiAgICAgICAgIGNhc2UgUFJPRklMRVJfQ09OVFJPTF9UUkFOU0FDVElPTjoKICAgICAgICAgewogICAgICAgICAgICAgZGF0YS5lbmZvcmNlSW50ZXJmYWNlKElBcHBsaWNhdGlvblRocmVhZC5kZXNjcmlwdG9yKTsKQEAgLTQwMiw2ICszOTUsMTQgQEAKICAgICAgICAgICAgIGRpc3BhdGNoUGFja2FnZUJyb2FkY2FzdChjbWQsIHBhY2thZ2VzKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CisKKyAgICAgICAgY2FzZSBTQ0hFRFVMRV9DUkFTSF9UUkFOU0FDVElPTjoKKyAgICAgICAgeworICAgICAgICAgICAgZGF0YS5lbmZvcmNlSW50ZXJmYWNlKElBcHBsaWNhdGlvblRocmVhZC5kZXNjcmlwdG9yKTsKKyAgICAgICAgICAgIFN0cmluZyBtc2cgPSBkYXRhLnJlYWRTdHJpbmcoKTsKKyAgICAgICAgICAgIHNjaGVkdWxlQ3Jhc2gobXNnKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gc3VwZXIub25UcmFuc2FjdChjb2RlLCBkYXRhLCByZXBseSwgZmxhZ3MpOwpAQCAtNzcxLDE0ICs3NzIsNiBAQAogICAgICAgICBkYXRhLnJlY3ljbGUoKTsKICAgICB9CiAgICAgCi0gICAgcHVibGljIGZpbmFsIHZvaWQgcmVxdWVzdFBzcygpIHRocm93cyBSZW1vdGVFeGNlcHRpb24gewotICAgICAgICBQYXJjZWwgZGF0YSA9IFBhcmNlbC5vYnRhaW4oKTsKLSAgICAgICAgZGF0YS53cml0ZUludGVyZmFjZVRva2VuKElBcHBsaWNhdGlvblRocmVhZC5kZXNjcmlwdG9yKTsKLSAgICAgICAgbVJlbW90ZS50cmFuc2FjdChSRVFVRVNUX1BTU19UUkFOU0FDVElPTiwgZGF0YSwgbnVsbCwKLSAgICAgICAgICAgICAgICBJQmluZGVyLkZMQUdfT05FV0FZKTsKLSAgICAgICAgZGF0YS5yZWN5Y2xlKCk7Ci0gICAgfQotICAgIAogICAgIHB1YmxpYyB2b2lkIHByb2ZpbGVyQ29udHJvbChib29sZWFuIHN0YXJ0LCBTdHJpbmcgcGF0aCwKICAgICAgICAgICAgIFBhcmNlbEZpbGVEZXNjcmlwdG9yIGZkKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKICAgICAgICAgUGFyY2VsIGRhdGEgPSBQYXJjZWwub2J0YWluKCk7CkBAIC04MjYsNSArODE5LDE1IEBACiAgICAgICAgIGRhdGEucmVjeWNsZSgpOwogICAgICAgICAKICAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgc2NoZWR1bGVDcmFzaChTdHJpbmcgbXNnKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKKyAgICAgICAgUGFyY2VsIGRhdGEgPSBQYXJjZWwub2J0YWluKCk7CisgICAgICAgIGRhdGEud3JpdGVJbnRlcmZhY2VUb2tlbihJQXBwbGljYXRpb25UaHJlYWQuZGVzY3JpcHRvcik7CisgICAgICAgIGRhdGEud3JpdGVTdHJpbmcobXNnKTsKKyAgICAgICAgbVJlbW90ZS50cmFuc2FjdChTQ0hFRFVMRV9DUkFTSF9UUkFOU0FDVElPTiwgZGF0YSwgbnVsbCwKKyAgICAgICAgICAgICAgICBJQmluZGVyLkZMQUdfT05FV0FZKTsKKyAgICAgICAgZGF0YS5yZWN5Y2xlKCk7CisgICAgICAgIAorICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0NvbnRleHRJbXBsLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9hcHAvQ29udGV4dEltcGwuamF2YQppbmRleCBmNDcxZjU3Li42M2JiZjljIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9hcHAvQ29udGV4dEltcGwuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9hcHAvQ29udGV4dEltcGwuamF2YQpAQCAtMTczLDcgKzE3Myw3IEBACiAgICAgICAgICAgICBuZXcgSGFzaE1hcDxGaWxlLCBTaGFyZWRQcmVmZXJlbmNlc0ltcGw+KCk7CiAKICAgICBwcml2YXRlIEF1ZGlvTWFuYWdlciBtQXVkaW9NYW5hZ2VyOwotICAgIC8qcGFja2FnZSovIEFjdGl2aXR5VGhyZWFkLlBhY2thZ2VJbmZvIG1QYWNrYWdlSW5mbzsKKyAgICAvKnBhY2thZ2UqLyBMb2FkZWRBcGsgbVBhY2thZ2VJbmZvOwogICAgIHByaXZhdGUgUmVzb3VyY2VzIG1SZXNvdXJjZXM7CiAgICAgLypwYWNrYWdlKi8gQWN0aXZpdHlUaHJlYWQgbU1haW5UaHJlYWQ7CiAgICAgcHJpdmF0ZSBDb250ZXh0IG1PdXRlckNvbnRleHQ7CkBAIC02OTYsNyArNjk2LDcgQEAKICAgICAgICAgICAgICAgICBpZiAoc2NoZWR1bGVyID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgc2NoZWR1bGVyID0gbU1haW5UaHJlYWQuZ2V0SGFuZGxlcigpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZCA9IG5ldyBBY3Rpdml0eVRocmVhZC5QYWNrYWdlSW5mby5SZWNlaXZlckRpc3BhdGNoZXIoCisgICAgICAgICAgICAgICAgcmQgPSBuZXcgTG9hZGVkQXBrLlJlY2VpdmVyRGlzcGF0Y2hlcigKICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFJlY2VpdmVyLCBnZXRPdXRlckNvbnRleHQoKSwgc2NoZWR1bGVyLCBudWxsLCBmYWxzZSkuZ2V0SUludGVudFJlY2VpdmVyKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTczOSw3ICs3MzksNyBAQAogICAgICAgICAgICAgICAgIGlmIChzY2hlZHVsZXIgPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICBzY2hlZHVsZXIgPSBtTWFpblRocmVhZC5nZXRIYW5kbGVyKCk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJkID0gbmV3IEFjdGl2aXR5VGhyZWFkLlBhY2thZ2VJbmZvLlJlY2VpdmVyRGlzcGF0Y2hlcigKKyAgICAgICAgICAgICAgICByZCA9IG5ldyBMb2FkZWRBcGsuUmVjZWl2ZXJEaXNwYXRjaGVyKAogICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0UmVjZWl2ZXIsIGdldE91dGVyQ29udGV4dCgpLCBzY2hlZHVsZXIsIG51bGwsIGZhbHNlKS5nZXRJSW50ZW50UmVjZWl2ZXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNzk1LDcgKzc5NSw3IEBACiAgICAgICAgICAgICAgICAgaWYgKHNjaGVkdWxlciA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgIHNjaGVkdWxlciA9IG1NYWluVGhyZWFkLmdldEhhbmRsZXIoKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmQgPSBuZXcgQWN0aXZpdHlUaHJlYWQuUGFja2FnZUluZm8uUmVjZWl2ZXJEaXNwYXRjaGVyKAorICAgICAgICAgICAgICAgIHJkID0gbmV3IExvYWRlZEFway5SZWNlaXZlckRpc3BhdGNoZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlciwgY29udGV4dCwgc2NoZWR1bGVyLCBudWxsLCB0cnVlKS5nZXRJSW50ZW50UmVjZWl2ZXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTE1NywxMiArMTE1NywxNiBAQAogICAgICAgICByZXR1cm4gbUF1ZGlvTWFuYWdlcjsKICAgICB9CiAKKyAgICAvKiBwYWNrYWdlICovIHN0YXRpYyBEcm9wQm94TWFuYWdlciBjcmVhdGVEcm9wQm94TWFuYWdlcigpIHsKKyAgICAgICAgSUJpbmRlciBiID0gU2VydmljZU1hbmFnZXIuZ2V0U2VydmljZShEUk9QQk9YX1NFUlZJQ0UpOworICAgICAgICBJRHJvcEJveE1hbmFnZXJTZXJ2aWNlIHNlcnZpY2UgPSBJRHJvcEJveE1hbmFnZXJTZXJ2aWNlLlN0dWIuYXNJbnRlcmZhY2UoYik7CisgICAgICAgIHJldHVybiBuZXcgRHJvcEJveE1hbmFnZXIoc2VydmljZSk7CisgICAgfQorCiAgICAgcHJpdmF0ZSBEcm9wQm94TWFuYWdlciBnZXREcm9wQm94TWFuYWdlcigpIHsKICAgICAgICAgc3luY2hyb25pemVkIChtU3luYykgewogICAgICAgICAgICAgaWYgKG1Ecm9wQm94TWFuYWdlciA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgSUJpbmRlciBiID0gU2VydmljZU1hbmFnZXIuZ2V0U2VydmljZShEUk9QQk9YX1NFUlZJQ0UpOwotICAgICAgICAgICAgICAgIElEcm9wQm94TWFuYWdlclNlcnZpY2Ugc2VydmljZSA9IElEcm9wQm94TWFuYWdlclNlcnZpY2UuU3R1Yi5hc0ludGVyZmFjZShiKTsKLSAgICAgICAgICAgICAgICBtRHJvcEJveE1hbmFnZXIgPSBuZXcgRHJvcEJveE1hbmFnZXIoc2VydmljZSk7CisgICAgICAgICAgICAgICAgbURyb3BCb3hNYW5hZ2VyID0gY3JlYXRlRHJvcEJveE1hbmFnZXIoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICByZXR1cm4gbURyb3BCb3hNYW5hZ2VyOwpAQCAtMTQyMSw3ICsxNDI1LDcgQEAKICAgICAgICAgICAgIHJldHVybiBuZXcgQ29udGV4dEltcGwobU1haW5UaHJlYWQuZ2V0U3lzdGVtQ29udGV4dCgpKTsKICAgICAgICAgfQogCi0gICAgICAgIEFjdGl2aXR5VGhyZWFkLlBhY2thZ2VJbmZvIHBpID0KKyAgICAgICAgTG9hZGVkQXBrIHBpID0KICAgICAgICAgICAgIG1NYWluVGhyZWFkLmdldFBhY2thZ2VJbmZvKHBhY2thZ2VOYW1lLCBmbGFncyk7CiAgICAgICAgIGlmIChwaSAhPSBudWxsKSB7CiAgICAgICAgICAgICBDb250ZXh0SW1wbCBjID0gbmV3IENvbnRleHRJbXBsKCk7CkBAIC0xNDg4LDEyICsxNDkyLDEyIEBACiAgICAgICAgIG1PdXRlckNvbnRleHQgPSB0aGlzOwogICAgIH0KIAotICAgIGZpbmFsIHZvaWQgaW5pdChBY3Rpdml0eVRocmVhZC5QYWNrYWdlSW5mbyBwYWNrYWdlSW5mbywKKyAgICBmaW5hbCB2b2lkIGluaXQoTG9hZGVkQXBrIHBhY2thZ2VJbmZvLAogICAgICAgICAgICAgSUJpbmRlciBhY3Rpdml0eVRva2VuLCBBY3Rpdml0eVRocmVhZCBtYWluVGhyZWFkKSB7CiAgICAgICAgIGluaXQocGFja2FnZUluZm8sIGFjdGl2aXR5VG9rZW4sIG1haW5UaHJlYWQsIG51bGwpOwogICAgIH0KIAotICAgIGZpbmFsIHZvaWQgaW5pdChBY3Rpdml0eVRocmVhZC5QYWNrYWdlSW5mbyBwYWNrYWdlSW5mbywKKyAgICBmaW5hbCB2b2lkIGluaXQoTG9hZGVkQXBrIHBhY2thZ2VJbmZvLAogICAgICAgICAgICAgICAgIElCaW5kZXIgYWN0aXZpdHlUb2tlbiwgQWN0aXZpdHlUaHJlYWQgbWFpblRocmVhZCwKICAgICAgICAgICAgICAgICBSZXNvdXJjZXMgY29udGFpbmVyKSB7CiAgICAgICAgIG1QYWNrYWdlSW5mbyA9IHBhY2thZ2VJbmZvOwpAQCAtMjE3Myw2ICsyMTc3LDM5IEBACiAgICAgICAgICAgICAgICAgdGhyb3dzIE5hbWVOb3RGb3VuZEV4Y2VwdGlvbiB7CiAgICAgICAgICAgICByZXR1cm4gZ2V0QXBwbGljYXRpb25JY29uKGdldEFwcGxpY2F0aW9uSW5mbyhwYWNrYWdlTmFtZSwgMCkpOwogICAgICAgICB9CisgICAgICAgIAorICAgICAgICBAT3ZlcnJpZGUgCisgICAgICAgIHB1YmxpYyBEcmF3YWJsZSBnZXRBY3Rpdml0eUxvZ28oQ29tcG9uZW50TmFtZSBhY3Rpdml0eU5hbWUpCisgICAgICAgICAgICAgICAgdGhyb3dzIE5hbWVOb3RGb3VuZEV4Y2VwdGlvbiB7CisgICAgICAgICAgICByZXR1cm4gZ2V0QWN0aXZpdHlJbmZvKGFjdGl2aXR5TmFtZSwgMCkubG9hZExvZ28odGhpcyk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIERyYXdhYmxlIGdldEFjdGl2aXR5TG9nbyhJbnRlbnQgaW50ZW50KQorICAgICAgICAgICAgICAgIHRocm93cyBOYW1lTm90Rm91bmRFeGNlcHRpb24geworICAgICAgICAgICAgaWYgKGludGVudC5nZXRDb21wb25lbnQoKSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdldEFjdGl2aXR5TG9nbyhpbnRlbnQuZ2V0Q29tcG9uZW50KCkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBSZXNvbHZlSW5mbyBpbmZvID0gcmVzb2x2ZUFjdGl2aXR5KAorICAgICAgICAgICAgICAgICAgICBpbnRlbnQsIFBhY2thZ2VNYW5hZ2VyLk1BVENIX0RFRkFVTFRfT05MWSk7CisgICAgICAgICAgICBpZiAoaW5mbyAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGluZm8uYWN0aXZpdHlJbmZvLmxvYWRMb2dvKHRoaXMpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0aHJvdyBuZXcgTmFtZU5vdEZvdW5kRXhjZXB0aW9uKGludGVudC50b1VyaSgwKSk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIERyYXdhYmxlIGdldEFwcGxpY2F0aW9uTG9nbyhBcHBsaWNhdGlvbkluZm8gaW5mbykgeworICAgICAgICAgICAgcmV0dXJuIGluZm8ubG9hZExvZ28odGhpcyk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIERyYXdhYmxlIGdldEFwcGxpY2F0aW9uTG9nbyhTdHJpbmcgcGFja2FnZU5hbWUpCisgICAgICAgICAgICAgICAgdGhyb3dzIE5hbWVOb3RGb3VuZEV4Y2VwdGlvbiB7CisgICAgICAgICAgICByZXR1cm4gZ2V0QXBwbGljYXRpb25Mb2dvKGdldEFwcGxpY2F0aW9uSW5mbyhwYWNrYWdlTmFtZSwgMCkpOworICAgICAgICB9CiAKICAgICAgICAgQE92ZXJyaWRlIHB1YmxpYyBSZXNvdXJjZXMgZ2V0UmVzb3VyY2VzRm9yQWN0aXZpdHkoCiAgICAgICAgICAgICAgICAgQ29tcG9uZW50TmFtZSBhY3Rpdml0eU5hbWUpIHRocm93cyBOYW1lTm90Rm91bmRFeGNlcHRpb24gewpAQCAtMjYyMCw2ICsyNjU3LDE1IEBACiAgICAgICAgICAgICByZXR1cm4gUGFja2FnZU1hbmFnZXIuQ09NUE9ORU5UX0VOQUJMRURfU1RBVEVfREVGQVVMVDsKICAgICAgICAgfQogCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBzZXRQYWNrYWdlT2JiUGF0aChTdHJpbmcgcGFja2FnZU5hbWUsIFN0cmluZyBwYXRoKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIG1QTS5zZXRQYWNrYWdlT2JiUGF0aChwYWNrYWdlTmFtZSwgcGF0aCk7CisgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIC8vIFNob3VsZCBuZXZlciBoYXBwZW4hCisgICAgICAgICAgICB9CisgICAgICAgIH0KKwogICAgICAgICBwcml2YXRlIGZpbmFsIENvbnRleHRJbXBsIG1Db250ZXh0OwogICAgICAgICBwcml2YXRlIGZpbmFsIElQYWNrYWdlTWFuYWdlciBtUE07CiAKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9EaWFsb2cuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9EaWFsb2cuamF2YQppbmRleCAwMjM1NTk5Li5kYThjOWU1IDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9hcHAvRGlhbG9nLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0RpYWxvZy5qYXZhCkBAIC0xMzgsNyArMTM4LDcgQEAKICAgICBwdWJsaWMgRGlhbG9nKENvbnRleHQgY29udGV4dCwgaW50IHRoZW1lKSB7CiAgICAgICAgIG1Db250ZXh0ID0gbmV3IENvbnRleHRUaGVtZVdyYXBwZXIoCiAgICAgICAgICAgICBjb250ZXh0LCB0aGVtZSA9PSAwID8gY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZS5UaGVtZV9EaWFsb2cgOiB0aGVtZSk7Ci0gICAgICAgIG1XaW5kb3dNYW5hZ2VyID0gKFdpbmRvd01hbmFnZXIpY29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKCJ3aW5kb3ciKTsKKyAgICAgICAgbVdpbmRvd01hbmFnZXIgPSAoV2luZG93TWFuYWdlciljb250ZXh0LmdldFN5c3RlbVNlcnZpY2UoQ29udGV4dC5XSU5ET1dfU0VSVklDRSk7CiAgICAgICAgIFdpbmRvdyB3ID0gUG9saWN5TWFuYWdlci5tYWtlTmV3V2luZG93KG1Db250ZXh0KTsKICAgICAgICAgbVdpbmRvdyA9IHc7CiAgICAgICAgIHcuc2V0Q2FsbGJhY2sodGhpcyk7CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9hcHAvSUFjdGl2aXR5TWFuYWdlci5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0lBY3Rpdml0eU1hbmFnZXIuamF2YQppbmRleCAzMWYwYTYzLi4yMGM5YTgwIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9hcHAvSUFjdGl2aXR5TWFuYWdlci5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9JQWN0aXZpdHlNYW5hZ2VyLmphdmEKQEAgLTI0Nyw4ICsyNDcsNiBAQAogICAgIAogICAgIHB1YmxpYyBib29sZWFuIGtpbGxQaWRzKGludFtdIHBpZHMsIFN0cmluZyByZWFzb24pIHRocm93cyBSZW1vdGVFeGNlcHRpb247CiAgICAgCi0gICAgcHVibGljIHZvaWQgcmVwb3J0UHNzKElBcHBsaWNhdGlvblRocmVhZCBjYWxsZXIsIGludCBwc3MpIHRocm93cyBSZW1vdGVFeGNlcHRpb247Ci0gICAgCiAgICAgLy8gU3BlY2lhbCBsb3ctbGV2ZWwgY29tbXVuaWNhdGlvbiB3aXRoIGFjdGl2aXR5IG1hbmFnZXIuCiAgICAgcHVibGljIHZvaWQgc3RhcnRSdW5uaW5nKFN0cmluZyBwa2csIFN0cmluZyBjbHMsIFN0cmluZyBhY3Rpb24sCiAgICAgICAgICAgICBTdHJpbmcgZGF0YSkgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbjsKQEAgLTI1Niw3ICsyNTQsMTQgQEAKICAgICAgICAgICAgIEFwcGxpY2F0aW9uRXJyb3JSZXBvcnQuQ3Jhc2hJbmZvIGNyYXNoSW5mbykgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbjsKICAgICBwdWJsaWMgYm9vbGVhbiBoYW5kbGVBcHBsaWNhdGlvbld0ZihJQmluZGVyIGFwcCwgU3RyaW5nIHRhZywKICAgICAgICAgICAgIEFwcGxpY2F0aW9uRXJyb3JSZXBvcnQuQ3Jhc2hJbmZvIGNyYXNoSW5mbykgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbjsKLSAgICAKKworICAgIC8vIEEgU3RyaWN0TW9kZSB2aW9sYXRpb24gdG8gYmUgaGFuZGxlZC4gIFRoZSB2aW9sYXRpb25NYXNrIGlzIGEKKyAgICAvLyBzdWJzZXQgb2YgdGhlIG9yaWdpbmFsIFN0cmljdE1vZGUgcG9saWN5IGJpdG1hc2ssIHdpdGggb25seSB0aGUKKyAgICAvLyBiaXQgdmlvbGF0ZWQgYW5kIHBlbmFsdHkgYml0cyB0byBiZSBleGVjdXRlZCBieSB0aGUKKyAgICAvLyBBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlIHJlbWFpbmluZyBzZXQuCisgICAgcHVibGljIHZvaWQgaGFuZGxlQXBwbGljYXRpb25TdHJpY3RNb2RlVmlvbGF0aW9uKElCaW5kZXIgYXBwLCBpbnQgdmlvbGF0aW9uTWFzaywKKyAgICAgICAgICAgIEFwcGxpY2F0aW9uRXJyb3JSZXBvcnQuQ3Jhc2hJbmZvIGNyYXNoSW5mbykgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbjsKKwogICAgIC8qCiAgICAgICogVGhpcyB3aWxsIGRlbGl2ZXIgdGhlIHNwZWNpZmllZCBzaWduYWwgdG8gYWxsIHRoZSBwZXJzaXN0ZW50IHByb2Nlc3Nlcy4gQ3VycmVudGx5IG9ubHkgCiAgICAgICogU0lHVVNSMSBpcyBkZWxpdmVyZWQuIEFsbCBvdGhlcnMgYXJlIGlnbm9yZWQuCkBAIC0zMDMsNiArMzA4LDE1IEBACiAgICAgCiAgICAgcHVibGljIGJvb2xlYW4gaXNVc2VyQU1vbmtleSgpIHRocm93cyBSZW1vdGVFeGNlcHRpb247CiAgICAgCisgICAgcHVibGljIHZvaWQgZmluaXNoSGVhdnlXZWlnaHRBcHAoKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uOworCisgICAgcHVibGljIHZvaWQgc2V0SW1tZXJzaXZlKElCaW5kZXIgdG9rZW4sIGJvb2xlYW4gaW1tZXJzaXZlKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uOworICAgIHB1YmxpYyBib29sZWFuIGlzSW1tZXJzaXZlKElCaW5kZXIgdG9rZW4pIHRocm93cyBSZW1vdGVFeGNlcHRpb247CisgICAgcHVibGljIGJvb2xlYW4gaXNUb3BBY3Rpdml0eUltbWVyc2l2ZSgpIHRocm93cyBSZW1vdGVFeGNlcHRpb247CisgICAgCisgICAgcHVibGljIHZvaWQgY3Jhc2hBcHBsaWNhdGlvbihpbnQgdWlkLCBpbnQgaW5pdGlhbFBpZCwgU3RyaW5nIHBhY2thZ2VOYW1lLAorICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2UpIHRocm93cyBSZW1vdGVFeGNlcHRpb247CisgICAgCiAgICAgLyoKICAgICAgKiBQcml2YXRlIG5vbi1CaW5kZXIgaW50ZXJmYWNlcwogICAgICAqLwpAQCAtNDg2LDcgKzUwMCw3IEBACiAgICAgaW50IEZPUkNFX1NUT1BfUEFDS0FHRV9UUkFOU0FDVElPTiA9IElCaW5kZXIuRklSU1RfQ0FMTF9UUkFOU0FDVElPTis3ODsKICAgICBpbnQgS0lMTF9QSURTX1RSQU5TQUNUSU9OID0gSUJpbmRlci5GSVJTVF9DQUxMX1RSQU5TQUNUSU9OKzc5OwogICAgIGludCBHRVRfU0VSVklDRVNfVFJBTlNBQ1RJT04gPSBJQmluZGVyLkZJUlNUX0NBTExfVFJBTlNBQ1RJT04rODA7Ci0gICAgaW50IFJFUE9SVF9QU1NfVFJBTlNBQ1RJT04gPSBJQmluZGVyLkZJUlNUX0NBTExfVFJBTlNBQ1RJT04rODE7CisKICAgICBpbnQgR0VUX1JVTk5JTkdfQVBQX1BST0NFU1NFU19UUkFOU0FDVElPTiA9IElCaW5kZXIuRklSU1RfQ0FMTF9UUkFOU0FDVElPTis4MjsKICAgICBpbnQgR0VUX0RFVklDRV9DT05GSUdVUkFUSU9OX1RSQU5TQUNUSU9OID0gSUJpbmRlci5GSVJTVF9DQUxMX1RSQU5TQUNUSU9OKzgzOwogICAgIGludCBQRUVLX1NFUlZJQ0VfVFJBTlNBQ1RJT04gPSBJQmluZGVyLkZJUlNUX0NBTExfVFJBTlNBQ1RJT04rODQ7CkBAIC01MTMsNCArNTI3LDEwIEBACiAgICAgaW50IFdJTExfQUNUSVZJVFlfQkVfVklTSUJMRV9UUkFOU0FDVElPTiA9IElCaW5kZXIuRklSU1RfQ0FMTF9UUkFOU0FDVElPTisxMDU7CiAgICAgaW50IFNUQVJUX0FDVElWSVRZX1dJVEhfQ09ORklHX1RSQU5TQUNUSU9OID0gSUJpbmRlci5GSVJTVF9DQUxMX1RSQU5TQUNUSU9OKzEwNjsKICAgICBpbnQgR0VUX1JVTk5JTkdfRVhURVJOQUxfQVBQTElDQVRJT05TX1RSQU5TQUNUSU9OID0gSUJpbmRlci5GSVJTVF9DQUxMX1RSQU5TQUNUSU9OKzEwNzsKKyAgICBpbnQgRklOSVNIX0hFQVZZX1dFSUdIVF9BUFBfVFJBTlNBQ1RJT04gPSBJQmluZGVyLkZJUlNUX0NBTExfVFJBTlNBQ1RJT04rMTA4OworICAgIGludCBIQU5ETEVfQVBQTElDQVRJT05fU1RSSUNUX01PREVfVklPTEFUSU9OX1RSQU5TQUNUSU9OID0gSUJpbmRlci5GSVJTVF9DQUxMX1RSQU5TQUNUSU9OKzEwOTsKKyAgICBpbnQgSVNfSU1NRVJTSVZFX1RSQU5TQUNUSU9OID0gSUJpbmRlci5GSVJTVF9DQUxMX1RSQU5TQUNUSU9OKzExMDsKKyAgICBpbnQgU0VUX0lNTUVSU0lWRV9UUkFOU0FDVElPTiA9IElCaW5kZXIuRklSU1RfQ0FMTF9UUkFOU0FDVElPTisxMTE7CisgICAgaW50IElTX1RPUF9BQ1RJVklUWV9JTU1FUlNJVkVfVFJBTlNBQ1RJT04gPSBJQmluZGVyLkZJUlNUX0NBTExfVFJBTlNBQ1RJT04rMTEyOworICAgIGludCBDUkFTSF9BUFBMSUNBVElPTl9UUkFOU0FDVElPTiA9IElCaW5kZXIuRklSU1RfQ0FMTF9UUkFOU0FDVElPTisxMTM7CiB9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9hcHAvSUFwcGxpY2F0aW9uVGhyZWFkLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9hcHAvSUFwcGxpY2F0aW9uVGhyZWFkLmphdmEKaW5kZXggYzkxN2U4MS4uYzhlZjE3ZiAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0lBcHBsaWNhdGlvblRocmVhZC5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9JQXBwbGljYXRpb25UaHJlYWQuamF2YQpAQCAtOTUsNyArOTUsNiBAQAogICAgICAgICAgICAgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbjsKICAgICB2b2lkIHNjaGVkdWxlTG93TWVtb3J5KCkgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbjsKICAgICB2b2lkIHNjaGVkdWxlQWN0aXZpdHlDb25maWd1cmF0aW9uQ2hhbmdlZChJQmluZGVyIHRva2VuKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uOwotICAgIHZvaWQgcmVxdWVzdFBzcygpIHRocm93cyBSZW1vdGVFeGNlcHRpb247CiAgICAgdm9pZCBwcm9maWxlckNvbnRyb2woYm9vbGVhbiBzdGFydCwgU3RyaW5nIHBhdGgsIFBhcmNlbEZpbGVEZXNjcmlwdG9yIGZkKQogICAgICAgICAgICAgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbjsKICAgICB2b2lkIHNldFNjaGVkdWxpbmdHcm91cChpbnQgZ3JvdXApIHRocm93cyBSZW1vdGVFeGNlcHRpb247CkBAIC0xMDMsNiArMTAyLDcgQEAKICAgICBzdGF0aWMgZmluYWwgaW50IFBBQ0tBR0VfUkVNT1ZFRCA9IDA7CiAgICAgc3RhdGljIGZpbmFsIGludCBFWFRFUk5BTF9TVE9SQUdFX1VOQVZBSUxBQkxFID0gMTsKICAgICB2b2lkIGRpc3BhdGNoUGFja2FnZUJyb2FkY2FzdChpbnQgY21kLCBTdHJpbmdbXSBwYWNrYWdlcykgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbjsKKyAgICB2b2lkIHNjaGVkdWxlQ3Jhc2goU3RyaW5nIG1zZykgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbjsKICAgICAKICAgICBTdHJpbmcgZGVzY3JpcHRvciA9ICJhbmRyb2lkLmFwcC5JQXBwbGljYXRpb25UaHJlYWQiOwogCkBAIC0xMzEsNyArMTMxLDcgQEAKICAgICBpbnQgU0NIRURVTEVfTE9XX01FTU9SWV9UUkFOU0FDVElPTiA9IElCaW5kZXIuRklSU1RfQ0FMTF9UUkFOU0FDVElPTisyMzsKICAgICBpbnQgU0NIRURVTEVfQUNUSVZJVFlfQ09ORklHVVJBVElPTl9DSEFOR0VEX1RSQU5TQUNUSU9OID0gSUJpbmRlci5GSVJTVF9DQUxMX1RSQU5TQUNUSU9OKzI0OwogICAgIGludCBTQ0hFRFVMRV9SRUxBVU5DSF9BQ1RJVklUWV9UUkFOU0FDVElPTiA9IElCaW5kZXIuRklSU1RfQ0FMTF9UUkFOU0FDVElPTisyNTsKLSAgICBpbnQgUkVRVUVTVF9QU1NfVFJBTlNBQ1RJT04gPSBJQmluZGVyLkZJUlNUX0NBTExfVFJBTlNBQ1RJT04rMjY7CisKICAgICBpbnQgUFJPRklMRVJfQ09OVFJPTF9UUkFOU0FDVElPTiA9IElCaW5kZXIuRklSU1RfQ0FMTF9UUkFOU0FDVElPTisyNzsKICAgICBpbnQgU0VUX1NDSEVEVUxJTkdfR1JPVVBfVFJBTlNBQ1RJT04gPSBJQmluZGVyLkZJUlNUX0NBTExfVFJBTlNBQ1RJT04rMjg7CiAgICAgaW50IFNDSEVEVUxFX0NSRUFURV9CQUNLVVBfQUdFTlRfVFJBTlNBQ1RJT04gPSBJQmluZGVyLkZJUlNUX0NBTExfVFJBTlNBQ1RJT04rMjk7CkBAIC0xMzksNCArMTM5LDUgQEAKICAgICBpbnQgR0VUX01FTU9SWV9JTkZPX1RSQU5TQUNUSU9OID0gSUJpbmRlci5GSVJTVF9DQUxMX1RSQU5TQUNUSU9OKzMxOwogICAgIGludCBTQ0hFRFVMRV9TVUlDSURFX1RSQU5TQUNUSU9OID0gSUJpbmRlci5GSVJTVF9DQUxMX1RSQU5TQUNUSU9OKzMyOwogICAgIGludCBESVNQQVRDSF9QQUNLQUdFX0JST0FEQ0FTVF9UUkFOU0FDVElPTiA9IElCaW5kZXIuRklSU1RfQ0FMTF9UUkFOU0FDVElPTiszMzsKKyAgICBpbnQgU0NIRURVTEVfQ1JBU0hfVFJBTlNBQ1RJT04gPSBJQmluZGVyLkZJUlNUX0NBTExfVFJBTlNBQ1RJT04rMzQ7CiB9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9hcHAvSVN0YXR1c0Jhci5haWRsIGIvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0lTdGF0dXNCYXIuYWlkbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzY0ZmE1MC4uMDAwMDAwMAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9hcHAvSVN0YXR1c0Jhci5haWRsCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotLyoqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDcsIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsgCi0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIAotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0IAotICoKLSAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAgCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZSAKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsIAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIAotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCAKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0gCi1wYWNrYWdlIGFuZHJvaWQuYXBwOwotCi0vKiogQGhpZGUgKi8KLWludGVyZmFjZSBJU3RhdHVzQmFyCi17Ci0gICAgdm9pZCBhY3RpdmF0ZSgpOwotICAgIHZvaWQgZGVhY3RpdmF0ZSgpOwotICAgIHZvaWQgdG9nZ2xlKCk7Ci0gICAgdm9pZCBkaXNhYmxlKGludCB3aGF0LCBJQmluZGVyIHRva2VuLCBTdHJpbmcgcGtnKTsKLSAgICBJQmluZGVyIGFkZEljb24oU3RyaW5nIHNsb3QsIFN0cmluZyBpY29uUGFja2FnZSwgaW50IGljb25JZCwgaW50IGljb25MZXZlbCk7Ci0gICAgdm9pZCB1cGRhdGVJY29uKElCaW5kZXIga2V5LCBTdHJpbmcgc2xvdCwgU3RyaW5nIGljb25QYWNrYWdlLCBpbnQgaWNvbklkLCBpbnQgaWNvbkxldmVsKTsKLSAgICB2b2lkIHJlbW92ZUljb24oSUJpbmRlciBrZXkpOwotfQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0xpc3RBY3Rpdml0eS5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0xpc3RBY3Rpdml0eS5qYXZhCmluZGV4IDg0YTU3YjUuLjRiZjU1MTggMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9MaXN0QWN0aXZpdHkuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9hcHAvTGlzdEFjdGl2aXR5LmphdmEKQEAgLTE4LDkgKzE4LDcgQEAKIAogaW1wb3J0IGFuZHJvaWQub3MuQnVuZGxlOwogaW1wb3J0IGFuZHJvaWQub3MuSGFuZGxlcjsKLWltcG9ydCBhbmRyb2lkLnZpZXcuS2V5RXZlbnQ7CiBpbXBvcnQgYW5kcm9pZC52aWV3LlZpZXc7Ci1pbXBvcnQgYW5kcm9pZC53aWRnZXQuQWRhcHRlcjsKIGltcG9ydCBhbmRyb2lkLndpZGdldC5BZGFwdGVyVmlldzsKIGltcG9ydCBhbmRyb2lkLndpZGdldC5MaXN0QWRhcHRlcjsKIGltcG9ydCBhbmRyb2lkLndpZGdldC5MaXN0VmlldzsKQEAgLTY4LDcgKzY2LDcgQEAKICAqICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2VpZ2h0PSZxdW90OzEmcXVvdDsKICAqICAgICAgICAgICAgICAgYW5kcm9pZDpkcmF3U2VsZWN0b3JPblRvcD0mcXVvdDtmYWxzZSZxdW90Oy8mZ3Q7CiAgKgotICogICAgICZsdDtUZXh0VmlldyBpZD0mcXVvdDtAaWQvYW5kcm9pZDplbXB0eSZxdW90OworICogICAgICZsdDtUZXh0VmlldyBhbmRyb2lkOmlkPSZxdW90O0BpZC9hbmRyb2lkOmVtcHR5JnF1b3Q7CiAgKiAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSZxdW90O21hdGNoX3BhcmVudCZxdW90OwogICogICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9JnF1b3Q7bWF0Y2hfcGFyZW50JnF1b3Q7CiAgKiAgICAgICAgICAgICAgIGFuZHJvaWQ6YmFja2dyb3VuZD0mcXVvdDsjRkYwMDAwJnF1b3Q7CkBAIC0zMTYsNyArMzE0LDcgQEAKICAgICB9CiAKICAgICBwcml2YXRlIEFkYXB0ZXJWaWV3Lk9uSXRlbUNsaWNrTGlzdGVuZXIgbU9uQ2xpY2tMaXN0ZW5lciA9IG5ldyBBZGFwdGVyVmlldy5Pbkl0ZW1DbGlja0xpc3RlbmVyKCkgewotICAgICAgICBwdWJsaWMgdm9pZCBvbkl0ZW1DbGljayhBZGFwdGVyVmlldyBwYXJlbnQsIFZpZXcgdiwgaW50IHBvc2l0aW9uLCBsb25nIGlkKQorICAgICAgICBwdWJsaWMgdm9pZCBvbkl0ZW1DbGljayhBZGFwdGVyVmlldzw/PiBwYXJlbnQsIFZpZXcgdiwgaW50IHBvc2l0aW9uLCBsb25nIGlkKQogICAgICAgICB7CiAgICAgICAgICAgICBvbkxpc3RJdGVtQ2xpY2soKExpc3RWaWV3KXBhcmVudCwgdiwgcG9zaXRpb24sIGlkKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0xvYWRlZEFway5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvYXBwL0xvYWRlZEFway5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmOTgxNTIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9hcHAvTG9hZGVkQXBrLmphdmEKQEAgLTAsMCArMSwxMTAzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBhbmRyb2lkLmFwcDsKKworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnV0aWwuQXJyYXlVdGlsczsKKworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Ccm9hZGNhc3RSZWNlaXZlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZTsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSUludGVudFJlY2VpdmVyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LlNlcnZpY2VDb25uZWN0aW9uOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5BcHBsaWNhdGlvbkluZm87CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLklQYWNrYWdlTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnJlcy5Bc3NldE1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnJlcy5Db21wYXRpYmlsaXR5SW5mbzsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlczsKK2ltcG9ydCBhbmRyb2lkLm9zLkJ1bmRsZTsKK2ltcG9ydCBhbmRyb2lkLm9zLkhhbmRsZXI7CitpbXBvcnQgYW5kcm9pZC5vcy5JQmluZGVyOworaW1wb3J0IGFuZHJvaWQub3MuUHJvY2VzczsKK2ltcG9ydCBhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbjsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuQW5kcm9pZFJ1bnRpbWVFeGNlcHRpb247CitpbXBvcnQgYW5kcm9pZC51dGlsLlNsb2c7CisKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtOworaW1wb3J0IGphdmEubGFuZy5yZWYuV2Vha1JlZmVyZW5jZTsKK2ltcG9ydCBqYXZhLm5ldC5VUkw7CitpbXBvcnQgamF2YS51dGlsLkVudW1lcmF0aW9uOworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKKworZmluYWwgY2xhc3MgSW50ZW50UmVjZWl2ZXJMZWFrZWQgZXh0ZW5kcyBBbmRyb2lkUnVudGltZUV4Y2VwdGlvbiB7CisgICAgcHVibGljIEludGVudFJlY2VpdmVyTGVha2VkKFN0cmluZyBtc2cpIHsKKyAgICAgICAgc3VwZXIobXNnKTsKKyAgICB9Cit9CisKK2ZpbmFsIGNsYXNzIFNlcnZpY2VDb25uZWN0aW9uTGVha2VkIGV4dGVuZHMgQW5kcm9pZFJ1bnRpbWVFeGNlcHRpb24geworICAgIHB1YmxpYyBTZXJ2aWNlQ29ubmVjdGlvbkxlYWtlZChTdHJpbmcgbXNnKSB7CisgICAgICAgIHN1cGVyKG1zZyk7CisgICAgfQorfQorCisvKioKKyAqIExvY2FsIHN0YXRlIG1haW50YWluZWQgYWJvdXQgYSBjdXJyZW50bHkgbG9hZGVkIC5hcGsuCisgKiBAaGlkZQorICovCitmaW5hbCBjbGFzcyBMb2FkZWRBcGsgeworCisgICAgcHJpdmF0ZSBmaW5hbCBBY3Rpdml0eVRocmVhZCBtQWN0aXZpdHlUaHJlYWQ7CisgICAgcHJpdmF0ZSBmaW5hbCBBcHBsaWNhdGlvbkluZm8gbUFwcGxpY2F0aW9uSW5mbzsKKyAgICBmaW5hbCBTdHJpbmcgbVBhY2thZ2VOYW1lOworICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIG1BcHBEaXI7CisgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgbVJlc0RpcjsKKyAgICBwcml2YXRlIGZpbmFsIFN0cmluZ1tdIG1TaGFyZWRMaWJyYXJpZXM7CisgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgbURhdGFEaXI7CisgICAgcHJpdmF0ZSBmaW5hbCBGaWxlIG1EYXRhRGlyRmlsZTsKKyAgICBwcml2YXRlIGZpbmFsIENsYXNzTG9hZGVyIG1CYXNlQ2xhc3NMb2FkZXI7CisgICAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIG1TZWN1cml0eVZpb2xhdGlvbjsKKyAgICBwcml2YXRlIGZpbmFsIGJvb2xlYW4gbUluY2x1ZGVDb2RlOworICAgIFJlc291cmNlcyBtUmVzb3VyY2VzOworICAgIHByaXZhdGUgQ2xhc3NMb2FkZXIgbUNsYXNzTG9hZGVyOworICAgIHByaXZhdGUgQXBwbGljYXRpb24gbUFwcGxpY2F0aW9uOworICAgIENvbXBhdGliaWxpdHlJbmZvIG1Db21wYXRpYmlsaXR5SW5mbzsKKworICAgIHByaXZhdGUgZmluYWwgSGFzaE1hcDxDb250ZXh0LCBIYXNoTWFwPEJyb2FkY2FzdFJlY2VpdmVyLCBMb2FkZWRBcGsuUmVjZWl2ZXJEaXNwYXRjaGVyPj4gbVJlY2VpdmVycworICAgICAgICA9IG5ldyBIYXNoTWFwPENvbnRleHQsIEhhc2hNYXA8QnJvYWRjYXN0UmVjZWl2ZXIsIExvYWRlZEFway5SZWNlaXZlckRpc3BhdGNoZXI+PigpOworICAgIHByaXZhdGUgZmluYWwgSGFzaE1hcDxDb250ZXh0LCBIYXNoTWFwPEJyb2FkY2FzdFJlY2VpdmVyLCBMb2FkZWRBcGsuUmVjZWl2ZXJEaXNwYXRjaGVyPj4gbVVucmVnaXN0ZXJlZFJlY2VpdmVycworICAgID0gbmV3IEhhc2hNYXA8Q29udGV4dCwgSGFzaE1hcDxCcm9hZGNhc3RSZWNlaXZlciwgTG9hZGVkQXBrLlJlY2VpdmVyRGlzcGF0Y2hlcj4+KCk7CisgICAgcHJpdmF0ZSBmaW5hbCBIYXNoTWFwPENvbnRleHQsIEhhc2hNYXA8U2VydmljZUNvbm5lY3Rpb24sIExvYWRlZEFway5TZXJ2aWNlRGlzcGF0Y2hlcj4+IG1TZXJ2aWNlcworICAgICAgICA9IG5ldyBIYXNoTWFwPENvbnRleHQsIEhhc2hNYXA8U2VydmljZUNvbm5lY3Rpb24sIExvYWRlZEFway5TZXJ2aWNlRGlzcGF0Y2hlcj4+KCk7CisgICAgcHJpdmF0ZSBmaW5hbCBIYXNoTWFwPENvbnRleHQsIEhhc2hNYXA8U2VydmljZUNvbm5lY3Rpb24sIExvYWRlZEFway5TZXJ2aWNlRGlzcGF0Y2hlcj4+IG1VbmJvdW5kU2VydmljZXMKKyAgICAgICAgPSBuZXcgSGFzaE1hcDxDb250ZXh0LCBIYXNoTWFwPFNlcnZpY2VDb25uZWN0aW9uLCBMb2FkZWRBcGsuU2VydmljZURpc3BhdGNoZXI+PigpOworCisgICAgaW50IG1DbGllbnRDb3VudCA9IDA7CisKKyAgICBBcHBsaWNhdGlvbiBnZXRBcHBsaWNhdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIG1BcHBsaWNhdGlvbjsKKyAgICB9CisKKyAgICBwdWJsaWMgTG9hZGVkQXBrKEFjdGl2aXR5VGhyZWFkIGFjdGl2aXR5VGhyZWFkLCBBcHBsaWNhdGlvbkluZm8gYUluZm8sCisgICAgICAgICAgICBBY3Rpdml0eVRocmVhZCBtYWluVGhyZWFkLCBDbGFzc0xvYWRlciBiYXNlTG9hZGVyLAorICAgICAgICAgICAgYm9vbGVhbiBzZWN1cml0eVZpb2xhdGlvbiwgYm9vbGVhbiBpbmNsdWRlQ29kZSkgeworICAgICAgICBtQWN0aXZpdHlUaHJlYWQgPSBhY3Rpdml0eVRocmVhZDsKKyAgICAgICAgbUFwcGxpY2F0aW9uSW5mbyA9IGFJbmZvOworICAgICAgICBtUGFja2FnZU5hbWUgPSBhSW5mby5wYWNrYWdlTmFtZTsKKyAgICAgICAgbUFwcERpciA9IGFJbmZvLnNvdXJjZURpcjsKKyAgICAgICAgbVJlc0RpciA9IGFJbmZvLnVpZCA9PSBQcm9jZXNzLm15VWlkKCkgPyBhSW5mby5zb3VyY2VEaXIKKyAgICAgICAgICAgICAgICA6IGFJbmZvLnB1YmxpY1NvdXJjZURpcjsKKyAgICAgICAgbVNoYXJlZExpYnJhcmllcyA9IGFJbmZvLnNoYXJlZExpYnJhcnlGaWxlczsKKyAgICAgICAgbURhdGFEaXIgPSBhSW5mby5kYXRhRGlyOworICAgICAgICBtRGF0YURpckZpbGUgPSBtRGF0YURpciAhPSBudWxsID8gbmV3IEZpbGUobURhdGFEaXIpIDogbnVsbDsKKyAgICAgICAgbUJhc2VDbGFzc0xvYWRlciA9IGJhc2VMb2FkZXI7CisgICAgICAgIG1TZWN1cml0eVZpb2xhdGlvbiA9IHNlY3VyaXR5VmlvbGF0aW9uOworICAgICAgICBtSW5jbHVkZUNvZGUgPSBpbmNsdWRlQ29kZTsKKyAgICAgICAgbUNvbXBhdGliaWxpdHlJbmZvID0gbmV3IENvbXBhdGliaWxpdHlJbmZvKGFJbmZvKTsKKworICAgICAgICBpZiAobUFwcERpciA9PSBudWxsKSB7CisgICAgICAgICAgICBpZiAoQWN0aXZpdHlUaHJlYWQubVN5c3RlbUNvbnRleHQgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIEFjdGl2aXR5VGhyZWFkLm1TeXN0ZW1Db250ZXh0ID0KKyAgICAgICAgICAgICAgICAgICAgQ29udGV4dEltcGwuY3JlYXRlU3lzdGVtQ29udGV4dChtYWluVGhyZWFkKTsKKyAgICAgICAgICAgICAgICBBY3Rpdml0eVRocmVhZC5tU3lzdGVtQ29udGV4dC5nZXRSZXNvdXJjZXMoKS51cGRhdGVDb25maWd1cmF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgIG1haW5UaHJlYWQuZ2V0Q29uZmlndXJhdGlvbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1haW5UaHJlYWQuZ2V0RGlzcGxheU1ldHJpY3NMb2NrZWQoZmFsc2UpKTsKKyAgICAgICAgICAgICAgICAvL1Nsb2cuaShUQUcsICJDcmVhdGVkIHN5c3RlbSByZXNvdXJjZXMgIgorICAgICAgICAgICAgICAgIC8vICAgICAgICArIG1TeXN0ZW1Db250ZXh0LmdldFJlc291cmNlcygpICsgIjogIgorICAgICAgICAgICAgICAgIC8vICAgICAgICArIG1TeXN0ZW1Db250ZXh0LmdldFJlc291cmNlcygpLmdldENvbmZpZ3VyYXRpb24oKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtQ2xhc3NMb2FkZXIgPSBBY3Rpdml0eVRocmVhZC5tU3lzdGVtQ29udGV4dC5nZXRDbGFzc0xvYWRlcigpOworICAgICAgICAgICAgbVJlc291cmNlcyA9IEFjdGl2aXR5VGhyZWFkLm1TeXN0ZW1Db250ZXh0LmdldFJlc291cmNlcygpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIExvYWRlZEFwayhBY3Rpdml0eVRocmVhZCBhY3Rpdml0eVRocmVhZCwgU3RyaW5nIG5hbWUsCisgICAgICAgICAgICBDb250ZXh0IHN5c3RlbUNvbnRleHQsIEFwcGxpY2F0aW9uSW5mbyBpbmZvKSB7CisgICAgICAgIG1BY3Rpdml0eVRocmVhZCA9IGFjdGl2aXR5VGhyZWFkOworICAgICAgICBtQXBwbGljYXRpb25JbmZvID0gaW5mbyAhPSBudWxsID8gaW5mbyA6IG5ldyBBcHBsaWNhdGlvbkluZm8oKTsKKyAgICAgICAgbUFwcGxpY2F0aW9uSW5mby5wYWNrYWdlTmFtZSA9IG5hbWU7CisgICAgICAgIG1QYWNrYWdlTmFtZSA9IG5hbWU7CisgICAgICAgIG1BcHBEaXIgPSBudWxsOworICAgICAgICBtUmVzRGlyID0gbnVsbDsKKyAgICAgICAgbVNoYXJlZExpYnJhcmllcyA9IG51bGw7CisgICAgICAgIG1EYXRhRGlyID0gbnVsbDsKKyAgICAgICAgbURhdGFEaXJGaWxlID0gbnVsbDsKKyAgICAgICAgbUJhc2VDbGFzc0xvYWRlciA9IG51bGw7CisgICAgICAgIG1TZWN1cml0eVZpb2xhdGlvbiA9IGZhbHNlOworICAgICAgICBtSW5jbHVkZUNvZGUgPSB0cnVlOworICAgICAgICBtQ2xhc3NMb2FkZXIgPSBzeXN0ZW1Db250ZXh0LmdldENsYXNzTG9hZGVyKCk7CisgICAgICAgIG1SZXNvdXJjZXMgPSBzeXN0ZW1Db250ZXh0LmdldFJlc291cmNlcygpOworICAgICAgICBtQ29tcGF0aWJpbGl0eUluZm8gPSBuZXcgQ29tcGF0aWJpbGl0eUluZm8obUFwcGxpY2F0aW9uSW5mbyk7CisgICAgfQorCisgICAgcHVibGljIFN0cmluZyBnZXRQYWNrYWdlTmFtZSgpIHsKKyAgICAgICAgcmV0dXJuIG1QYWNrYWdlTmFtZTsKKyAgICB9CisKKyAgICBwdWJsaWMgQXBwbGljYXRpb25JbmZvIGdldEFwcGxpY2F0aW9uSW5mbygpIHsKKyAgICAgICAgcmV0dXJuIG1BcHBsaWNhdGlvbkluZm87CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gaXNTZWN1cml0eVZpb2xhdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIG1TZWN1cml0eVZpb2xhdGlvbjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBhcnJheSBvZiBzaGFyZWQgbGlicmFyaWVzIHRoYXQgYXJlIGxpc3RlZCBhcworICAgICAqIHVzZWQgYnkgdGhlIGdpdmVuIHBhY2thZ2UuCisgICAgICoKKyAgICAgKiBAcGFyYW0gcGFja2FnZU5hbWUgdGhlIG5hbWUgb2YgdGhlIHBhY2thZ2UgKG5vdGU6IG5vdCBpdHMKKyAgICAgKiBmaWxlIG5hbWUpCisgICAgICogQHJldHVybiBudWxsLW9rOyB0aGUgYXJyYXkgb2Ygc2hhcmVkIGxpYnJhcmllcywgZWFjaCBvbmUKKyAgICAgKiBhIGZ1bGx5LXF1YWxpZmllZCBwYXRoCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nW10gZ2V0TGlicmFyaWVzRm9yKFN0cmluZyBwYWNrYWdlTmFtZSkgeworICAgICAgICBBcHBsaWNhdGlvbkluZm8gYWkgPSBudWxsOworICAgICAgICB0cnkgeworICAgICAgICAgICAgYWkgPSBBY3Rpdml0eVRocmVhZC5nZXRQYWNrYWdlTWFuYWdlcigpLmdldEFwcGxpY2F0aW9uSW5mbyhwYWNrYWdlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgUGFja2FnZU1hbmFnZXIuR0VUX1NIQVJFRF9MSUJSQVJZX0ZJTEVTKTsKKyAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBBc3NlcnRpb25FcnJvcihlKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChhaSA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBhaS5zaGFyZWRMaWJyYXJ5RmlsZXM7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29tYmluZXMgdHdvIGFycmF5cyAob2YgbGlicmFyeSBuYW1lcykgc3VjaCB0aGF0IHRoZXkgYXJlCisgICAgICogY29uY2F0ZW5hdGVkIGluIG9yZGVyIGJ1dCBhcmUgZGV2b2lkIG9mIGR1cGxpY2F0ZXMuIFRoZQorICAgICAqIHJlc3VsdCBpcyBhIHNpbmdsZSBzdHJpbmcgd2l0aCB0aGUgbmFtZXMgb2YgdGhlIGxpYnJhcmllcworICAgICAqIHNlcGFyYXRlZCBieSBjb2xvbnMsIG9yIDxjb2RlPm51bGw8L2NvZGU+IGlmIGJvdGggbGlzdHMKKyAgICAgKiB3ZXJlIDxjb2RlPm51bGw8L2NvZGU+IG9yIGVtcHR5LgorICAgICAqCisgICAgICogQHBhcmFtIGxpc3QxIG51bGwtb2s7IHRoZSBmaXJzdCBsaXN0CisgICAgICogQHBhcmFtIGxpc3QyIG51bGwtb2s7IHRoZSBzZWNvbmQgbGlzdAorICAgICAqIEByZXR1cm4gbnVsbC1vazsgdGhlIGNvbWJpbmF0aW9uCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIGNvbWJpbmVMaWJzKFN0cmluZ1tdIGxpc3QxLCBTdHJpbmdbXSBsaXN0MikgeworICAgICAgICBTdHJpbmdCdWlsZGVyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWlsZGVyKDMwMCk7CisgICAgICAgIGJvb2xlYW4gZmlyc3QgPSB0cnVlOworCisgICAgICAgIGlmIChsaXN0MSAhPSBudWxsKSB7CisgICAgICAgICAgICBmb3IgKFN0cmluZyBzIDogbGlzdDEpIHsKKyAgICAgICAgICAgICAgICBpZiAoZmlyc3QpIHsKKyAgICAgICAgICAgICAgICAgICAgZmlyc3QgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCc6Jyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQocyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBPbmx5IG5lZWQgdG8gY2hlY2sgZm9yIGR1cGxpY2F0ZXMgaWYgbGlzdDEgd2FzIG5vbi1lbXB0eS4KKyAgICAgICAgYm9vbGVhbiBkdXBDaGVjayA9ICFmaXJzdDsKKworICAgICAgICBpZiAobGlzdDIgIT0gbnVsbCkgeworICAgICAgICAgICAgZm9yIChTdHJpbmcgcyA6IGxpc3QyKSB7CisgICAgICAgICAgICAgICAgaWYgKGR1cENoZWNrICYmIEFycmF5VXRpbHMuY29udGFpbnMobGlzdDEsIHMpKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChmaXJzdCkgeworICAgICAgICAgICAgICAgICAgICBmaXJzdCA9IGZhbHNlOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJzonKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgQ2xhc3NMb2FkZXIgZ2V0Q2xhc3NMb2FkZXIoKSB7CisgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgeworICAgICAgICAgICAgaWYgKG1DbGFzc0xvYWRlciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1DbGFzc0xvYWRlcjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1JbmNsdWRlQ29kZSAmJiAhbVBhY2thZ2VOYW1lLmVxdWFscygiYW5kcm9pZCIpKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIHppcCA9IG1BcHBEaXI7CisKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAqIFRoZSBmb2xsb3dpbmcgaXMgYSBiaXQgb2YgYSBoYWNrIHRvIGluamVjdAorICAgICAgICAgICAgICAgICAqIGluc3RydW1lbnRhdGlvbiBpbnRvIHRoZSBzeXN0ZW06IElmIHRoZSBhcHAKKyAgICAgICAgICAgICAgICAgKiBiZWluZyBzdGFydGVkIG1hdGNoZXMgb25lIG9mIHRoZSBpbnN0cnVtZW50YXRpb24gbmFtZXMsCisgICAgICAgICAgICAgICAgICogdGhlbiB3ZSBjb21iaW5lIGJvdGggdGhlICJpbnN0cnVtZW50YXRpb24iIGFuZAorICAgICAgICAgICAgICAgICAqICJpbnN0cnVtZW50ZWQiIGFwcCBpbnRvIHRoZSBwYXRoLCBhbG9uZyB3aXRoIHRoZQorICAgICAgICAgICAgICAgICAqIGNvbmNhdGVuYXRpb24gb2YgYm90aCBhcHBzJyBzaGFyZWQgbGlicmFyeSBsaXN0cy4KKyAgICAgICAgICAgICAgICAgKi8KKworICAgICAgICAgICAgICAgIFN0cmluZyBpbnN0cnVtZW50YXRpb25BcHBEaXIgPQorICAgICAgICAgICAgICAgICAgICAgICAgbUFjdGl2aXR5VGhyZWFkLm1JbnN0cnVtZW50YXRpb25BcHBEaXI7CisgICAgICAgICAgICAgICAgU3RyaW5nIGluc3RydW1lbnRhdGlvbkFwcFBhY2thZ2UgPQorICAgICAgICAgICAgICAgICAgICAgICAgbUFjdGl2aXR5VGhyZWFkLm1JbnN0cnVtZW50YXRpb25BcHBQYWNrYWdlOworICAgICAgICAgICAgICAgIFN0cmluZyBpbnN0cnVtZW50ZWRBcHBEaXIgPQorICAgICAgICAgICAgICAgICAgICAgICAgbUFjdGl2aXR5VGhyZWFkLm1JbnN0cnVtZW50ZWRBcHBEaXI7CisgICAgICAgICAgICAgICAgU3RyaW5nW10gaW5zdHJ1bWVudGF0aW9uTGlicyA9IG51bGw7CisKKyAgICAgICAgICAgICAgICBpZiAobUFwcERpci5lcXVhbHMoaW5zdHJ1bWVudGF0aW9uQXBwRGlyKQorICAgICAgICAgICAgICAgICAgICAgICAgfHwgbUFwcERpci5lcXVhbHMoaW5zdHJ1bWVudGVkQXBwRGlyKSkgeworICAgICAgICAgICAgICAgICAgICB6aXAgPSBpbnN0cnVtZW50YXRpb25BcHBEaXIgKyAiOiIgKyBpbnN0cnVtZW50ZWRBcHBEaXI7CisgICAgICAgICAgICAgICAgICAgIGlmICghIGluc3RydW1lbnRlZEFwcERpci5lcXVhbHMoaW5zdHJ1bWVudGF0aW9uQXBwRGlyKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaW5zdHJ1bWVudGF0aW9uTGlicyA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0TGlicmFyaWVzRm9yKGluc3RydW1lbnRhdGlvbkFwcFBhY2thZ2UpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKChtU2hhcmVkTGlicmFyaWVzICE9IG51bGwpIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAoaW5zdHJ1bWVudGF0aW9uTGlicyAhPSBudWxsKSkgeworICAgICAgICAgICAgICAgICAgICB6aXAgPQorICAgICAgICAgICAgICAgICAgICAgICAgY29tYmluZUxpYnMobVNoYXJlZExpYnJhcmllcywgaW5zdHJ1bWVudGF0aW9uTGlicykKKyAgICAgICAgICAgICAgICAgICAgICAgICsgJzonICsgemlwOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogV2l0aCBhbGwgdGhlIGNvbWJpbmF0aW9uIGRvbmUgKGlmIG5lY2Vzc2FyeSwgYWN0dWFsbHkKKyAgICAgICAgICAgICAgICAgKiBjcmVhdGUgdGhlIGNsYXNzIGxvYWRlci4KKyAgICAgICAgICAgICAgICAgKi8KKworICAgICAgICAgICAgICAgIGlmIChBY3Rpdml0eVRocmVhZC5sb2NhbExPR1YpIFNsb2cudihBY3Rpdml0eVRocmVhZC5UQUcsICJDbGFzcyBwYXRoOiAiICsgemlwKTsKKworICAgICAgICAgICAgICAgIG1DbGFzc0xvYWRlciA9CisgICAgICAgICAgICAgICAgICAgIEFwcGxpY2F0aW9uTG9hZGVycy5nZXREZWZhdWx0KCkuZ2V0Q2xhc3NMb2FkZXIoCisgICAgICAgICAgICAgICAgICAgICAgICB6aXAsIG1EYXRhRGlyLCBtQmFzZUNsYXNzTG9hZGVyKTsKKyAgICAgICAgICAgICAgICBpbml0aWFsaXplSmF2YUNvbnRleHRDbGFzc0xvYWRlcigpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAobUJhc2VDbGFzc0xvYWRlciA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIG1DbGFzc0xvYWRlciA9IENsYXNzTG9hZGVyLmdldFN5c3RlbUNsYXNzTG9hZGVyKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbUNsYXNzTG9hZGVyID0gbUJhc2VDbGFzc0xvYWRlcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gbUNsYXNzTG9hZGVyOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0dXAgdmFsdWUgZm9yIFRocmVhZC5nZXRDb250ZXh0Q2xhc3NMb2FkZXIoKS4gSWYgdGhlCisgICAgICogcGFja2FnZSB3aWxsIG5vdCBydW4gaW4gaW4gYSBWTSB3aXRoIG90aGVyIHBhY2thZ2VzLCB3ZSBzZXQKKyAgICAgKiB0aGUgSmF2YSBjb250ZXh0IENsYXNzTG9hZGVyIHRvIHRoZQorICAgICAqIFBhY2thZ2VJbmZvLmdldENsYXNzTG9hZGVyIHZhbHVlLiBIb3dldmVyLCBpZiB0aGlzIFZNIGNhbgorICAgICAqIGNvbnRhaW4gbXVsdGlwbGUgcGFja2FnZXMsIHdlIGludGVhZCBzZXQgdGhlIEphdmEgY29udGV4dAorICAgICAqIENsYXNzTG9hZGVyIHRvIGEgcHJveHkgdGhhdCB3aWxsIHdhcm4gYWJvdXQgdGhlIHVzZSBvZiBKYXZhCisgICAgICogY29udGV4dCBDbGFzc0xvYWRlcnMgYW5kIHRoZW4gZmFsbCB0aHJvdWdoIHRvIHVzZSB0aGUKKyAgICAgKiBzeXN0ZW0gQ2xhc3NMb2FkZXIuCisgICAgICoKKyAgICAgKiA8cD4gTm90ZSB0aGF0IHRoaXMgaXMgc2ltaWxhciB0byBidXQgbm90IHRoZSBzYW1lIGFzIHRoZQorICAgICAqIGFuZHJvaWQuY29udGVudC5Db250ZXh0LmdldENsYXNzTG9hZGVyKCkuIFdoaWxlIGJvdGgKKyAgICAgKiBjb250ZXh0IGNsYXNzIGxvYWRlcnMgYXJlIHR5cGljYWxseSBzZXQgdG8gdGhlCisgICAgICogUGF0aENsYXNzTG9hZGVyIHVzZWQgdG8gbG9hZCB0aGUgcGFja2FnZSBhcmNoaXZlIGluIHRoZQorICAgICAqIHNpbmdsZSBhcHBsaWNhdGlvbiBwZXIgVk0gY2FzZSwgYSBzaW5nbGUgQW5kcm9pZCBwcm9jZXNzCisgICAgICogbWF5IGNvbnRhaW4gc2V2ZXJhbCBDb250ZXh0cyBleGVjdXRpbmcgb24gb25lIHRocmVhZCB3aXRoCisgICAgICogdGhlaXIgb3duIGxvZ2ljYWwgQ2xhc3NMb2FkZXJzIHdoaWxlIHRoZSBKYXZhIGNvbnRleHQKKyAgICAgKiBDbGFzc0xvYWRlciBpcyBhIHRocmVhZCBsb2NhbC4gVGhpcyBpcyB3aHkgaW4gdGhlIGNhc2Ugd2hlbgorICAgICAqIHdlIGhhdmUgbXVsdGlwbGUgcGFja2FnZXMgcGVyIFZNIHdlIGRvIG5vdCBzZXQgdGhlIEphdmEKKyAgICAgKiBjb250ZXh0IENsYXNzTG9hZGVyIHRvIGFuIGFyYml0cmFyeSBidXQgaW5zdGVhZCB3YXJuIHRoZQorICAgICAqIHVzZXIgdG8gc2V0IHRoZWlyIG93biBpZiB3ZSBkZXRlY3QgdGhhdCB0aGV5IGFyZSB1c2luZyBhCisgICAgICogSmF2YSBsaWJyYXJ5IHRoYXQgZXhwZWN0cyBpdCB0byBiZSBzZXQuCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIGluaXRpYWxpemVKYXZhQ29udGV4dENsYXNzTG9hZGVyKCkgeworICAgICAgICBJUGFja2FnZU1hbmFnZXIgcG0gPSBBY3Rpdml0eVRocmVhZC5nZXRQYWNrYWdlTWFuYWdlcigpOworICAgICAgICBhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZUluZm8gcGk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBwaSA9IHBtLmdldFBhY2thZ2VJbmZvKG1QYWNrYWdlTmFtZSwgMCk7CisgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgQXNzZXJ0aW9uRXJyb3IoZSk7CisgICAgICAgIH0KKyAgICAgICAgLyoKKyAgICAgICAgICogVHdvIHBvc3NpYmxlIGluZGljYXRpb25zIHRoYXQgdGhpcyBwYWNrYWdlIGNvdWxkIGJlCisgICAgICAgICAqIHNoYXJpbmcgaXRzIHZpcnR1YWwgbWFjaGluZSB3aXRoIG90aGVyIHBhY2thZ2VzOgorICAgICAgICAgKgorICAgICAgICAgKiAxLikgdGhlIHNoYXJlZFVzZXJJZCBhdHRyaWJ1dGUgaXMgc2V0IGluIHRoZSBtYW5pZmVzdCwKKyAgICAgICAgICogICAgIGluZGljYXRpbmcgYSByZXF1ZXN0IHRvIHNoYXJlIGEgVk0gd2l0aCBvdGhlcgorICAgICAgICAgKiAgICAgcGFja2FnZXMgd2l0aCB0aGUgc2FtZSBzaGFyZWRVc2VySWQuCisgICAgICAgICAqCisgICAgICAgICAqIDIuKSB0aGUgYXBwbGljYXRpb24gZWxlbWVudCBvZiB0aGUgbWFuaWZlc3QgaGFzIGFuCisgICAgICAgICAqICAgICBhdHRyaWJ1dGUgc3BlY2lmeWluZyBhIG5vbi1kZWZhdWx0IHByb2Nlc3MgbmFtZSwKKyAgICAgICAgICogICAgIGluZGljYXRpbmcgdGhlIGRlc2lyZSB0byBydW4gaW4gYW5vdGhlciBwYWNrYWdlcyBWTS4KKyAgICAgICAgICovCisgICAgICAgIGJvb2xlYW4gc2hhcmVkVXNlcklkU2V0ID0gKHBpLnNoYXJlZFVzZXJJZCAhPSBudWxsKTsKKyAgICAgICAgYm9vbGVhbiBwcm9jZXNzTmFtZU5vdERlZmF1bHQgPQorICAgICAgICAgICAgKHBpLmFwcGxpY2F0aW9uSW5mbyAhPSBudWxsICYmCisgICAgICAgICAgICAgIW1QYWNrYWdlTmFtZS5lcXVhbHMocGkuYXBwbGljYXRpb25JbmZvLnByb2Nlc3NOYW1lKSk7CisgICAgICAgIGJvb2xlYW4gc2hhcmFibGUgPSAoc2hhcmVkVXNlcklkU2V0IHx8IHByb2Nlc3NOYW1lTm90RGVmYXVsdCk7CisgICAgICAgIENsYXNzTG9hZGVyIGNvbnRleHRDbGFzc0xvYWRlciA9CisgICAgICAgICAgICAoc2hhcmFibGUpCisgICAgICAgICAgICA/IG5ldyBXYXJuaW5nQ29udGV4dENsYXNzTG9hZGVyKCkKKyAgICAgICAgICAgIDogbUNsYXNzTG9hZGVyOworICAgICAgICBUaHJlYWQuY3VycmVudFRocmVhZCgpLnNldENvbnRleHRDbGFzc0xvYWRlcihjb250ZXh0Q2xhc3NMb2FkZXIpOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIFdhcm5pbmdDb250ZXh0Q2xhc3NMb2FkZXIgZXh0ZW5kcyBDbGFzc0xvYWRlciB7CisKKyAgICAgICAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiB3YXJuZWQgPSBmYWxzZTsKKworICAgICAgICBwcml2YXRlIHZvaWQgd2FybihTdHJpbmcgbWV0aG9kTmFtZSkgeworICAgICAgICAgICAgaWYgKHdhcm5lZCkgeworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHdhcm5lZCA9IHRydWU7CisgICAgICAgICAgICBUaHJlYWQuY3VycmVudFRocmVhZCgpLnNldENvbnRleHRDbGFzc0xvYWRlcihnZXRQYXJlbnQoKSk7CisgICAgICAgICAgICBTbG9nLncoQWN0aXZpdHlUaHJlYWQuVEFHLCAiQ2xhc3NMb2FkZXIuIiArIG1ldGhvZE5hbWUgKyAiOiAiICsKKyAgICAgICAgICAgICAgICAgICJUaGUgY2xhc3MgbG9hZGVyIHJldHVybmVkIGJ5ICIgKworICAgICAgICAgICAgICAgICAgIlRocmVhZC5nZXRDb250ZXh0Q2xhc3NMb2FkZXIoKSBtYXkgZmFpbCBmb3IgcHJvY2Vzc2VzICIgKworICAgICAgICAgICAgICAgICAgInRoYXQgaG9zdCBtdWx0aXBsZSBhcHBsaWNhdGlvbnMuIFlvdSBzaG91bGQgZXhwbGljaXRseSAiICsKKyAgICAgICAgICAgICAgICAgICJzcGVjaWZ5IGEgY29udGV4dCBjbGFzcyBsb2FkZXIuIEZvciBleGFtcGxlOiAiICsKKyAgICAgICAgICAgICAgICAgICJUaHJlYWQuc2V0Q29udGV4dENsYXNzTG9hZGVyKGdldENsYXNzKCkuZ2V0Q2xhc3NMb2FkZXIoKSk7Iik7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUgcHVibGljIFVSTCBnZXRSZXNvdXJjZShTdHJpbmcgcmVzTmFtZSkgeworICAgICAgICAgICAgd2FybigiZ2V0UmVzb3VyY2UiKTsKKyAgICAgICAgICAgIHJldHVybiBnZXRQYXJlbnQoKS5nZXRSZXNvdXJjZShyZXNOYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZSBwdWJsaWMgRW51bWVyYXRpb248VVJMPiBnZXRSZXNvdXJjZXMoU3RyaW5nIHJlc05hbWUpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgICAgICB3YXJuKCJnZXRSZXNvdXJjZXMiKTsKKyAgICAgICAgICAgIHJldHVybiBnZXRQYXJlbnQoKS5nZXRSZXNvdXJjZXMocmVzTmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUgcHVibGljIElucHV0U3RyZWFtIGdldFJlc291cmNlQXNTdHJlYW0oU3RyaW5nIHJlc05hbWUpIHsKKyAgICAgICAgICAgIHdhcm4oImdldFJlc291cmNlQXNTdHJlYW0iKTsKKyAgICAgICAgICAgIHJldHVybiBnZXRQYXJlbnQoKS5nZXRSZXNvdXJjZUFzU3RyZWFtKHJlc05hbWUpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlIHB1YmxpYyBDbGFzczw/PiBsb2FkQ2xhc3MoU3RyaW5nIGNsYXNzTmFtZSkgdGhyb3dzIENsYXNzTm90Rm91bmRFeGNlcHRpb24geworICAgICAgICAgICAgd2FybigibG9hZENsYXNzIik7CisgICAgICAgICAgICByZXR1cm4gZ2V0UGFyZW50KCkubG9hZENsYXNzKGNsYXNzTmFtZSk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUgcHVibGljIHZvaWQgc2V0Q2xhc3NBc3NlcnRpb25TdGF0dXMoU3RyaW5nIGNuYW1lLCBib29sZWFuIGVuYWJsZSkgeworICAgICAgICAgICAgd2Fybigic2V0Q2xhc3NBc3NlcnRpb25TdGF0dXMiKTsKKyAgICAgICAgICAgIGdldFBhcmVudCgpLnNldENsYXNzQXNzZXJ0aW9uU3RhdHVzKGNuYW1lLCBlbmFibGUpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlIHB1YmxpYyB2b2lkIHNldFBhY2thZ2VBc3NlcnRpb25TdGF0dXMoU3RyaW5nIHBuYW1lLCBib29sZWFuIGVuYWJsZSkgeworICAgICAgICAgICAgd2Fybigic2V0UGFja2FnZUFzc2VydGlvblN0YXR1cyIpOworICAgICAgICAgICAgZ2V0UGFyZW50KCkuc2V0UGFja2FnZUFzc2VydGlvblN0YXR1cyhwbmFtZSwgZW5hYmxlKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZSBwdWJsaWMgdm9pZCBzZXREZWZhdWx0QXNzZXJ0aW9uU3RhdHVzKGJvb2xlYW4gZW5hYmxlKSB7CisgICAgICAgICAgICB3YXJuKCJzZXREZWZhdWx0QXNzZXJ0aW9uU3RhdHVzIik7CisgICAgICAgICAgICBnZXRQYXJlbnQoKS5zZXREZWZhdWx0QXNzZXJ0aW9uU3RhdHVzKGVuYWJsZSk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUgcHVibGljIHZvaWQgY2xlYXJBc3NlcnRpb25TdGF0dXMoKSB7CisgICAgICAgICAgICB3YXJuKCJjbGVhckFzc2VydGlvblN0YXR1cyIpOworICAgICAgICAgICAgZ2V0UGFyZW50KCkuY2xlYXJBc3NlcnRpb25TdGF0dXMoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBTdHJpbmcgZ2V0QXBwRGlyKCkgeworICAgICAgICByZXR1cm4gbUFwcERpcjsKKyAgICB9CisKKyAgICBwdWJsaWMgU3RyaW5nIGdldFJlc0RpcigpIHsKKyAgICAgICAgcmV0dXJuIG1SZXNEaXI7CisgICAgfQorCisgICAgcHVibGljIFN0cmluZyBnZXREYXRhRGlyKCkgeworICAgICAgICByZXR1cm4gbURhdGFEaXI7CisgICAgfQorCisgICAgcHVibGljIEZpbGUgZ2V0RGF0YURpckZpbGUoKSB7CisgICAgICAgIHJldHVybiBtRGF0YURpckZpbGU7CisgICAgfQorCisgICAgcHVibGljIEFzc2V0TWFuYWdlciBnZXRBc3NldHMoQWN0aXZpdHlUaHJlYWQgbWFpblRocmVhZCkgeworICAgICAgICByZXR1cm4gZ2V0UmVzb3VyY2VzKG1haW5UaHJlYWQpLmdldEFzc2V0cygpOworICAgIH0KKworICAgIHB1YmxpYyBSZXNvdXJjZXMgZ2V0UmVzb3VyY2VzKEFjdGl2aXR5VGhyZWFkIG1haW5UaHJlYWQpIHsKKyAgICAgICAgaWYgKG1SZXNvdXJjZXMgPT0gbnVsbCkgeworICAgICAgICAgICAgbVJlc291cmNlcyA9IG1haW5UaHJlYWQuZ2V0VG9wTGV2ZWxSZXNvdXJjZXMobVJlc0RpciwgdGhpcyk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1SZXNvdXJjZXM7CisgICAgfQorCisgICAgcHVibGljIEFwcGxpY2F0aW9uIG1ha2VBcHBsaWNhdGlvbihib29sZWFuIGZvcmNlRGVmYXVsdEFwcENsYXNzLAorICAgICAgICAgICAgSW5zdHJ1bWVudGF0aW9uIGluc3RydW1lbnRhdGlvbikgeworICAgICAgICBpZiAobUFwcGxpY2F0aW9uICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBtQXBwbGljYXRpb247CisgICAgICAgIH0KKworICAgICAgICBBcHBsaWNhdGlvbiBhcHAgPSBudWxsOworCisgICAgICAgIFN0cmluZyBhcHBDbGFzcyA9IG1BcHBsaWNhdGlvbkluZm8uY2xhc3NOYW1lOworICAgICAgICBpZiAoZm9yY2VEZWZhdWx0QXBwQ2xhc3MgfHwgKGFwcENsYXNzID09IG51bGwpKSB7CisgICAgICAgICAgICBhcHBDbGFzcyA9ICJhbmRyb2lkLmFwcC5BcHBsaWNhdGlvbiI7CisgICAgICAgIH0KKworICAgICAgICB0cnkgeworICAgICAgICAgICAgamF2YS5sYW5nLkNsYXNzTG9hZGVyIGNsID0gZ2V0Q2xhc3NMb2FkZXIoKTsKKyAgICAgICAgICAgIENvbnRleHRJbXBsIGFwcENvbnRleHQgPSBuZXcgQ29udGV4dEltcGwoKTsKKyAgICAgICAgICAgIGFwcENvbnRleHQuaW5pdCh0aGlzLCBudWxsLCBtQWN0aXZpdHlUaHJlYWQpOworICAgICAgICAgICAgYXBwID0gbUFjdGl2aXR5VGhyZWFkLm1JbnN0cnVtZW50YXRpb24ubmV3QXBwbGljYXRpb24oCisgICAgICAgICAgICAgICAgICAgIGNsLCBhcHBDbGFzcywgYXBwQ29udGV4dCk7CisgICAgICAgICAgICBhcHBDb250ZXh0LnNldE91dGVyQ29udGV4dChhcHApOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgaWYgKCFtQWN0aXZpdHlUaHJlYWQubUluc3RydW1lbnRhdGlvbi5vbkV4Y2VwdGlvbihhcHAsIGUpKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICJVbmFibGUgdG8gaW5zdGFudGlhdGUgYXBwbGljYXRpb24gIiArIGFwcENsYXNzCisgICAgICAgICAgICAgICAgICAgICsgIjogIiArIGUudG9TdHJpbmcoKSwgZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbUFjdGl2aXR5VGhyZWFkLm1BbGxBcHBsaWNhdGlvbnMuYWRkKGFwcCk7CisgICAgICAgIG1BcHBsaWNhdGlvbiA9IGFwcDsKKworICAgICAgICBpZiAoaW5zdHJ1bWVudGF0aW9uICE9IG51bGwpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgaW5zdHJ1bWVudGF0aW9uLmNhbGxBcHBsaWNhdGlvbk9uQ3JlYXRlKGFwcCk7CisgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIGlmICghaW5zdHJ1bWVudGF0aW9uLm9uRXhjZXB0aW9uKGFwcCwgZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAiVW5hYmxlIHRvIGNyZWF0ZSBhcHBsaWNhdGlvbiAiICsgYXBwLmdldENsYXNzKCkuZ2V0TmFtZSgpCisgICAgICAgICAgICAgICAgICAgICAgICArICI6ICIgKyBlLnRvU3RyaW5nKCksIGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIGFwcDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCByZW1vdmVDb250ZXh0UmVnaXN0cmF0aW9ucyhDb250ZXh0IGNvbnRleHQsCisgICAgICAgICAgICBTdHJpbmcgd2hvLCBTdHJpbmcgd2hhdCkgeworICAgICAgICBIYXNoTWFwPEJyb2FkY2FzdFJlY2VpdmVyLCBMb2FkZWRBcGsuUmVjZWl2ZXJEaXNwYXRjaGVyPiBybWFwID0KKyAgICAgICAgICAgIG1SZWNlaXZlcnMucmVtb3ZlKGNvbnRleHQpOworICAgICAgICBpZiAocm1hcCAhPSBudWxsKSB7CisgICAgICAgICAgICBJdGVyYXRvcjxMb2FkZWRBcGsuUmVjZWl2ZXJEaXNwYXRjaGVyPiBpdCA9IHJtYXAudmFsdWVzKCkuaXRlcmF0b3IoKTsKKyAgICAgICAgICAgIHdoaWxlIChpdC5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgICAgICBMb2FkZWRBcGsuUmVjZWl2ZXJEaXNwYXRjaGVyIHJkID0gaXQubmV4dCgpOworICAgICAgICAgICAgICAgIEludGVudFJlY2VpdmVyTGVha2VkIGxlYWsgPSBuZXcgSW50ZW50UmVjZWl2ZXJMZWFrZWQoCisgICAgICAgICAgICAgICAgICAgICAgICB3aGF0ICsgIiAiICsgd2hvICsgIiBoYXMgbGVha2VkIEludGVudFJlY2VpdmVyICIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgcmQuZ2V0SW50ZW50UmVjZWl2ZXIoKSArICIgdGhhdCB3YXMgIiArCisgICAgICAgICAgICAgICAgICAgICAgICAib3JpZ2luYWxseSByZWdpc3RlcmVkIGhlcmUuIEFyZSB5b3UgbWlzc2luZyBhICIgKworICAgICAgICAgICAgICAgICAgICAgICAgImNhbGwgdG8gdW5yZWdpc3RlclJlY2VpdmVyKCk/Iik7CisgICAgICAgICAgICAgICAgbGVhay5zZXRTdGFja1RyYWNlKHJkLmdldExvY2F0aW9uKCkuZ2V0U3RhY2tUcmFjZSgpKTsKKyAgICAgICAgICAgICAgICBTbG9nLmUoQWN0aXZpdHlUaHJlYWQuVEFHLCBsZWFrLmdldE1lc3NhZ2UoKSwgbGVhayk7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHlNYW5hZ2VyTmF0aXZlLmdldERlZmF1bHQoKS51bnJlZ2lzdGVyUmVjZWl2ZXIoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmQuZ2V0SUludGVudFJlY2VpdmVyKCkpOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIHN5c3RlbSBjcmFzaGVkLCBub3RoaW5nIHdlIGNhbiBkbworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBtVW5yZWdpc3RlcmVkUmVjZWl2ZXJzLnJlbW92ZShjb250ZXh0KTsKKyAgICAgICAgLy9TbG9nLmkoVEFHLCAiUmVjZWl2ZXIgcmVnaXN0cmF0aW9uczogIiArIG1SZWNlaXZlcnMpOworICAgICAgICBIYXNoTWFwPFNlcnZpY2VDb25uZWN0aW9uLCBMb2FkZWRBcGsuU2VydmljZURpc3BhdGNoZXI+IHNtYXAgPQorICAgICAgICAgICAgbVNlcnZpY2VzLnJlbW92ZShjb250ZXh0KTsKKyAgICAgICAgaWYgKHNtYXAgIT0gbnVsbCkgeworICAgICAgICAgICAgSXRlcmF0b3I8TG9hZGVkQXBrLlNlcnZpY2VEaXNwYXRjaGVyPiBpdCA9IHNtYXAudmFsdWVzKCkuaXRlcmF0b3IoKTsKKyAgICAgICAgICAgIHdoaWxlIChpdC5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgICAgICBMb2FkZWRBcGsuU2VydmljZURpc3BhdGNoZXIgc2QgPSBpdC5uZXh0KCk7CisgICAgICAgICAgICAgICAgU2VydmljZUNvbm5lY3Rpb25MZWFrZWQgbGVhayA9IG5ldyBTZXJ2aWNlQ29ubmVjdGlvbkxlYWtlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIHdoYXQgKyAiICIgKyB3aG8gKyAiIGhhcyBsZWFrZWQgU2VydmljZUNvbm5lY3Rpb24gIgorICAgICAgICAgICAgICAgICAgICAgICAgKyBzZC5nZXRTZXJ2aWNlQ29ubmVjdGlvbigpICsgIiB0aGF0IHdhcyBvcmlnaW5hbGx5IGJvdW5kIGhlcmUiKTsKKyAgICAgICAgICAgICAgICBsZWFrLnNldFN0YWNrVHJhY2Uoc2QuZ2V0TG9jYXRpb24oKS5nZXRTdGFja1RyYWNlKCkpOworICAgICAgICAgICAgICAgIFNsb2cuZShBY3Rpdml0eVRocmVhZC5UQUcsIGxlYWsuZ2V0TWVzc2FnZSgpLCBsZWFrKTsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eU1hbmFnZXJOYXRpdmUuZ2V0RGVmYXVsdCgpLnVuYmluZFNlcnZpY2UoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2QuZ2V0SVNlcnZpY2VDb25uZWN0aW9uKCkpOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIHN5c3RlbSBjcmFzaGVkLCBub3RoaW5nIHdlIGNhbiBkbworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzZC5kb0ZvcmdldCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIG1VbmJvdW5kU2VydmljZXMucmVtb3ZlKGNvbnRleHQpOworICAgICAgICAvL1Nsb2cuaShUQUcsICJTZXJ2aWNlIHJlZ2lzdHJhdGlvbnM6ICIgKyBtU2VydmljZXMpOworICAgIH0KKworICAgIHB1YmxpYyBJSW50ZW50UmVjZWl2ZXIgZ2V0UmVjZWl2ZXJEaXNwYXRjaGVyKEJyb2FkY2FzdFJlY2VpdmVyIHIsCisgICAgICAgICAgICBDb250ZXh0IGNvbnRleHQsIEhhbmRsZXIgaGFuZGxlciwKKyAgICAgICAgICAgIEluc3RydW1lbnRhdGlvbiBpbnN0cnVtZW50YXRpb24sIGJvb2xlYW4gcmVnaXN0ZXJlZCkgeworICAgICAgICBzeW5jaHJvbml6ZWQgKG1SZWNlaXZlcnMpIHsKKyAgICAgICAgICAgIExvYWRlZEFway5SZWNlaXZlckRpc3BhdGNoZXIgcmQgPSBudWxsOworICAgICAgICAgICAgSGFzaE1hcDxCcm9hZGNhc3RSZWNlaXZlciwgTG9hZGVkQXBrLlJlY2VpdmVyRGlzcGF0Y2hlcj4gbWFwID0gbnVsbDsKKyAgICAgICAgICAgIGlmIChyZWdpc3RlcmVkKSB7CisgICAgICAgICAgICAgICAgbWFwID0gbVJlY2VpdmVycy5nZXQoY29udGV4dCk7CisgICAgICAgICAgICAgICAgaWYgKG1hcCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIHJkID0gbWFwLmdldChyKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocmQgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHJkID0gbmV3IFJlY2VpdmVyRGlzcGF0Y2hlcihyLCBjb250ZXh0LCBoYW5kbGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgaW5zdHJ1bWVudGF0aW9uLCByZWdpc3RlcmVkKTsKKyAgICAgICAgICAgICAgICBpZiAocmVnaXN0ZXJlZCkgeworICAgICAgICAgICAgICAgICAgICBpZiAobWFwID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1hcCA9IG5ldyBIYXNoTWFwPEJyb2FkY2FzdFJlY2VpdmVyLCBMb2FkZWRBcGsuUmVjZWl2ZXJEaXNwYXRjaGVyPigpOworICAgICAgICAgICAgICAgICAgICAgICAgbVJlY2VpdmVycy5wdXQoY29udGV4dCwgbWFwKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBtYXAucHV0KHIsIHJkKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJkLnZhbGlkYXRlKGNvbnRleHQsIGhhbmRsZXIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHJkLmdldElJbnRlbnRSZWNlaXZlcigpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIElJbnRlbnRSZWNlaXZlciBmb3JnZXRSZWNlaXZlckRpc3BhdGNoZXIoQ29udGV4dCBjb250ZXh0LAorICAgICAgICAgICAgQnJvYWRjYXN0UmVjZWl2ZXIgcikgeworICAgICAgICBzeW5jaHJvbml6ZWQgKG1SZWNlaXZlcnMpIHsKKyAgICAgICAgICAgIEhhc2hNYXA8QnJvYWRjYXN0UmVjZWl2ZXIsIExvYWRlZEFway5SZWNlaXZlckRpc3BhdGNoZXI+IG1hcCA9IG1SZWNlaXZlcnMuZ2V0KGNvbnRleHQpOworICAgICAgICAgICAgTG9hZGVkQXBrLlJlY2VpdmVyRGlzcGF0Y2hlciByZCA9IG51bGw7CisgICAgICAgICAgICBpZiAobWFwICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICByZCA9IG1hcC5nZXQocik7CisgICAgICAgICAgICAgICAgaWYgKHJkICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgbWFwLnJlbW92ZShyKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1hcC5zaXplKCkgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbVJlY2VpdmVycy5yZW1vdmUoY29udGV4dCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHIuZ2V0RGVidWdVbnJlZ2lzdGVyKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEhhc2hNYXA8QnJvYWRjYXN0UmVjZWl2ZXIsIExvYWRlZEFway5SZWNlaXZlckRpc3BhdGNoZXI+IGhvbGRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG1VbnJlZ2lzdGVyZWRSZWNlaXZlcnMuZ2V0KGNvbnRleHQpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhvbGRlciA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9sZGVyID0gbmV3IEhhc2hNYXA8QnJvYWRjYXN0UmVjZWl2ZXIsIExvYWRlZEFway5SZWNlaXZlckRpc3BhdGNoZXI+KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVVucmVnaXN0ZXJlZFJlY2VpdmVycy5wdXQoY29udGV4dCwgaG9sZGVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIFJ1bnRpbWVFeGNlcHRpb24gZXggPSBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT3JpZ2luYWxseSB1bnJlZ2lzdGVyZWQgaGVyZToiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4LmZpbGxJblN0YWNrVHJhY2UoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJkLnNldFVucmVnaXN0ZXJMb2NhdGlvbihleCk7CisgICAgICAgICAgICAgICAgICAgICAgICBob2xkZXIucHV0KHIsIHJkKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmQuZ2V0SUludGVudFJlY2VpdmVyKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgSGFzaE1hcDxCcm9hZGNhc3RSZWNlaXZlciwgTG9hZGVkQXBrLlJlY2VpdmVyRGlzcGF0Y2hlcj4gaG9sZGVyCisgICAgICAgICAgICAgICAgICAgID0gbVVucmVnaXN0ZXJlZFJlY2VpdmVycy5nZXQoY29udGV4dCk7CisgICAgICAgICAgICBpZiAoaG9sZGVyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICByZCA9IGhvbGRlci5nZXQocik7CisgICAgICAgICAgICAgICAgaWYgKHJkICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgUnVudGltZUV4Y2VwdGlvbiBleCA9IHJkLmdldFVucmVnaXN0ZXJMb2NhdGlvbigpOworICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbnJlZ2lzdGVyaW5nIFJlY2VpdmVyICIgKyByCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiIHRoYXQgd2FzIGFscmVhZHkgdW5yZWdpc3RlcmVkIiwgZXgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjb250ZXh0ID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJVbmJpbmRpbmcgUmVjZWl2ZXIgIiArIHIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgIiBmcm9tIENvbnRleHQgdGhhdCBpcyBubyBsb25nZXIgaW4gdXNlOiAiICsgY29udGV4dCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlJlY2VpdmVyIG5vdCByZWdpc3RlcmVkOiAiICsgcik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgfQorICAgIH0KKworICAgIHN0YXRpYyBmaW5hbCBjbGFzcyBSZWNlaXZlckRpc3BhdGNoZXIgeworCisgICAgICAgIGZpbmFsIHN0YXRpYyBjbGFzcyBJbm5lclJlY2VpdmVyIGV4dGVuZHMgSUludGVudFJlY2VpdmVyLlN0dWIgeworICAgICAgICAgICAgZmluYWwgV2Vha1JlZmVyZW5jZTxMb2FkZWRBcGsuUmVjZWl2ZXJEaXNwYXRjaGVyPiBtRGlzcGF0Y2hlcjsKKyAgICAgICAgICAgIGZpbmFsIExvYWRlZEFway5SZWNlaXZlckRpc3BhdGNoZXIgbVN0cm9uZ1JlZjsKKworICAgICAgICAgICAgSW5uZXJSZWNlaXZlcihMb2FkZWRBcGsuUmVjZWl2ZXJEaXNwYXRjaGVyIHJkLCBib29sZWFuIHN0cm9uZykgeworICAgICAgICAgICAgICAgIG1EaXNwYXRjaGVyID0gbmV3IFdlYWtSZWZlcmVuY2U8TG9hZGVkQXBrLlJlY2VpdmVyRGlzcGF0Y2hlcj4ocmQpOworICAgICAgICAgICAgICAgIG1TdHJvbmdSZWYgPSBzdHJvbmcgPyByZCA6IG51bGw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBwZXJmb3JtUmVjZWl2ZShJbnRlbnQgaW50ZW50LCBpbnQgcmVzdWx0Q29kZSwKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGRhdGEsIEJ1bmRsZSBleHRyYXMsIGJvb2xlYW4gb3JkZXJlZCwgYm9vbGVhbiBzdGlja3kpIHsKKyAgICAgICAgICAgICAgICBMb2FkZWRBcGsuUmVjZWl2ZXJEaXNwYXRjaGVyIHJkID0gbURpc3BhdGNoZXIuZ2V0KCk7CisgICAgICAgICAgICAgICAgaWYgKEFjdGl2aXR5VGhyZWFkLkRFQlVHX0JST0FEQ0FTVCkgeworICAgICAgICAgICAgICAgICAgICBpbnQgc2VxID0gaW50ZW50LmdldEludEV4dHJhKCJzZXEiLCAtMSk7CisgICAgICAgICAgICAgICAgICAgIFNsb2cuaShBY3Rpdml0eVRocmVhZC5UQUcsICJSZWNlaXZpbmcgYnJvYWRjYXN0ICIgKyBpbnRlbnQuZ2V0QWN0aW9uKCkgKyAiIHNlcT0iICsgc2VxCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiIHRvICIgKyAocmQgIT0gbnVsbCA/IHJkLm1SZWNlaXZlciA6IG51bGwpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHJkICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgcmQucGVyZm9ybVJlY2VpdmUoaW50ZW50LCByZXN1bHRDb2RlLCBkYXRhLCBleHRyYXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXJlZCwgc3RpY2t5KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvLyBUaGUgYWN0aXZpdHkgbWFuYWdlciBkaXNwYXRjaGVkIGEgYnJvYWRjYXN0IHRvIGEgcmVnaXN0ZXJlZAorICAgICAgICAgICAgICAgICAgICAvLyByZWNlaXZlciBpbiB0aGlzIHByb2Nlc3MsIGJ1dCBiZWZvcmUgaXQgY291bGQgYmUgZGVsaXZlcmVkIHRoZQorICAgICAgICAgICAgICAgICAgICAvLyByZWNlaXZlciB3YXMgdW5yZWdpc3RlcmVkLiAgQWNrbm93bGVkZ2UgdGhlIGJyb2FkY2FzdCBvbiBpdHMKKyAgICAgICAgICAgICAgICAgICAgLy8gYmVoYWxmIHNvIHRoYXQgdGhlIHN5c3RlbSdzIGJyb2FkY2FzdCBzZXF1ZW5jZSBjYW4gY29udGludWUuCisgICAgICAgICAgICAgICAgICAgIGlmIChBY3Rpdml0eVRocmVhZC5ERUJVR19CUk9BRENBU1QpIFNsb2cuaShBY3Rpdml0eVRocmVhZC5UQUcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZpbmlzaGluZyBicm9hZGNhc3QgdG8gdW5yZWdpc3RlcmVkIHJlY2VpdmVyIik7CisgICAgICAgICAgICAgICAgICAgIElBY3Rpdml0eU1hbmFnZXIgbWdyID0gQWN0aXZpdHlNYW5hZ2VyTmF0aXZlLmdldERlZmF1bHQoKTsKKyAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1nci5maW5pc2hSZWNlaXZlcih0aGlzLCByZXN1bHRDb2RlLCBkYXRhLCBleHRyYXMsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFNsb2cudyhBY3Rpdml0eVRocmVhZC5UQUcsICJDb3VsZG4ndCBmaW5pc2ggYnJvYWRjYXN0IHRvIHVucmVnaXN0ZXJlZCByZWNlaXZlciIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZmluYWwgSUludGVudFJlY2VpdmVyLlN0dWIgbUlJbnRlbnRSZWNlaXZlcjsKKyAgICAgICAgZmluYWwgQnJvYWRjYXN0UmVjZWl2ZXIgbVJlY2VpdmVyOworICAgICAgICBmaW5hbCBDb250ZXh0IG1Db250ZXh0OworICAgICAgICBmaW5hbCBIYW5kbGVyIG1BY3Rpdml0eVRocmVhZDsKKyAgICAgICAgZmluYWwgSW5zdHJ1bWVudGF0aW9uIG1JbnN0cnVtZW50YXRpb247CisgICAgICAgIGZpbmFsIGJvb2xlYW4gbVJlZ2lzdGVyZWQ7CisgICAgICAgIGZpbmFsIEludGVudFJlY2VpdmVyTGVha2VkIG1Mb2NhdGlvbjsKKyAgICAgICAgUnVudGltZUV4Y2VwdGlvbiBtVW5yZWdpc3RlckxvY2F0aW9uOworCisgICAgICAgIGZpbmFsIGNsYXNzIEFyZ3MgaW1wbGVtZW50cyBSdW5uYWJsZSB7CisgICAgICAgICAgICBwcml2YXRlIEludGVudCBtQ3VySW50ZW50OworICAgICAgICAgICAgcHJpdmF0ZSBpbnQgbUN1ckNvZGU7CisgICAgICAgICAgICBwcml2YXRlIFN0cmluZyBtQ3VyRGF0YTsKKyAgICAgICAgICAgIHByaXZhdGUgQnVuZGxlIG1DdXJNYXA7CisgICAgICAgICAgICBwcml2YXRlIGJvb2xlYW4gbUN1ck9yZGVyZWQ7CisgICAgICAgICAgICBwcml2YXRlIGJvb2xlYW4gbUN1clN0aWNreTsKKworICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgIEJyb2FkY2FzdFJlY2VpdmVyIHJlY2VpdmVyID0gbVJlY2VpdmVyOworICAgICAgICAgICAgICAgIGlmIChBY3Rpdml0eVRocmVhZC5ERUJVR19CUk9BRENBU1QpIHsKKyAgICAgICAgICAgICAgICAgICAgaW50IHNlcSA9IG1DdXJJbnRlbnQuZ2V0SW50RXh0cmEoInNlcSIsIC0xKTsKKyAgICAgICAgICAgICAgICAgICAgU2xvZy5pKEFjdGl2aXR5VGhyZWFkLlRBRywgIkRpc3BhdGNoaW5nIGJyb2FkY2FzdCAiICsgbUN1ckludGVudC5nZXRBY3Rpb24oKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiBzZXE9IiArIHNlcSArICIgdG8gIiArIG1SZWNlaXZlcik7CisgICAgICAgICAgICAgICAgICAgIFNsb2cuaShBY3Rpdml0eVRocmVhZC5UQUcsICIgIG1SZWdpc3RlcmVkPSIgKyBtUmVnaXN0ZXJlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiBtQ3VyT3JkZXJlZD0iICsgbUN1ck9yZGVyZWQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBJQWN0aXZpdHlNYW5hZ2VyIG1nciA9IEFjdGl2aXR5TWFuYWdlck5hdGl2ZS5nZXREZWZhdWx0KCk7CisgICAgICAgICAgICAgICAgSW50ZW50IGludGVudCA9IG1DdXJJbnRlbnQ7CisgICAgICAgICAgICAgICAgbUN1ckludGVudCA9IG51bGw7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKHJlY2VpdmVyID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1SZWdpc3RlcmVkICYmIG1DdXJPcmRlcmVkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBY3Rpdml0eVRocmVhZC5ERUJVR19CUk9BRENBU1QpIFNsb2cuaShBY3Rpdml0eVRocmVhZC5UQUcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmluaXNoaW5nIG51bGwgYnJvYWRjYXN0IHRvICIgKyBtUmVjZWl2ZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1nci5maW5pc2hSZWNlaXZlcihtSUludGVudFJlY2VpdmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUN1ckNvZGUsIG1DdXJEYXRhLCBtQ3VyTWFwLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgQ2xhc3NMb2FkZXIgY2wgPSAgbVJlY2VpdmVyLmdldENsYXNzKCkuZ2V0Q2xhc3NMb2FkZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgaW50ZW50LnNldEV4dHJhc0NsYXNzTG9hZGVyKGNsKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1DdXJNYXAgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbUN1ck1hcC5zZXRDbGFzc0xvYWRlcihjbCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXIuc2V0T3JkZXJlZEhpbnQodHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyLnNldFJlc3VsdChtQ3VyQ29kZSwgbUN1ckRhdGEsIG1DdXJNYXApOworICAgICAgICAgICAgICAgICAgICByZWNlaXZlci5jbGVhckFib3J0QnJvYWRjYXN0KCk7CisgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyLnNldE9yZGVyZWRIaW50KG1DdXJPcmRlcmVkKTsKKyAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXIuc2V0SW5pdGlhbFN0aWNreUhpbnQobUN1clN0aWNreSk7CisgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyLm9uUmVjZWl2ZShtQ29udGV4dCwgaW50ZW50KTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAobVJlZ2lzdGVyZWQgJiYgbUN1ck9yZGVyZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFjdGl2aXR5VGhyZWFkLkRFQlVHX0JST0FEQ0FTVCkgU2xvZy5pKEFjdGl2aXR5VGhyZWFkLlRBRywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGaW5pc2hpbmcgZmFpbGVkIGJyb2FkY2FzdCB0byAiICsgbVJlY2VpdmVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZ3IuZmluaXNoUmVjZWl2ZXIobUlJbnRlbnRSZWNlaXZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1DdXJDb2RlLCBtQ3VyRGF0YSwgbUN1ck1hcCwgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKG1JbnN0cnVtZW50YXRpb24gPT0gbnVsbCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICFtSW5zdHJ1bWVudGF0aW9uLm9uRXhjZXB0aW9uKG1SZWNlaXZlciwgZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFcnJvciByZWNlaXZpbmcgYnJvYWRjYXN0ICIgKyBpbnRlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgaW4gIiArIG1SZWNlaXZlciwgZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG1SZWdpc3RlcmVkICYmIG1DdXJPcmRlcmVkKSB7CisgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQWN0aXZpdHlUaHJlYWQuREVCVUdfQlJPQURDQVNUKSBTbG9nLmkoQWN0aXZpdHlUaHJlYWQuVEFHLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmluaXNoaW5nIGJyb2FkY2FzdCB0byAiICsgbVJlY2VpdmVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1nci5maW5pc2hSZWNlaXZlcihtSUludGVudFJlY2VpdmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNlaXZlci5nZXRSZXN1bHRDb2RlKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyLmdldFJlc3VsdERhdGEoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXIuZ2V0UmVzdWx0RXh0cmFzKGZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZXIuZ2V0QWJvcnRCcm9hZGNhc3QoKSk7CisgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgUmVjZWl2ZXJEaXNwYXRjaGVyKEJyb2FkY2FzdFJlY2VpdmVyIHJlY2VpdmVyLCBDb250ZXh0IGNvbnRleHQsCisgICAgICAgICAgICAgICAgSGFuZGxlciBhY3Rpdml0eVRocmVhZCwgSW5zdHJ1bWVudGF0aW9uIGluc3RydW1lbnRhdGlvbiwKKyAgICAgICAgICAgICAgICBib29sZWFuIHJlZ2lzdGVyZWQpIHsKKyAgICAgICAgICAgIGlmIChhY3Rpdml0eVRocmVhZCA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCJIYW5kbGVyIG11c3Qgbm90IGJlIG51bGwiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbUlJbnRlbnRSZWNlaXZlciA9IG5ldyBJbm5lclJlY2VpdmVyKHRoaXMsICFyZWdpc3RlcmVkKTsKKyAgICAgICAgICAgIG1SZWNlaXZlciA9IHJlY2VpdmVyOworICAgICAgICAgICAgbUNvbnRleHQgPSBjb250ZXh0OworICAgICAgICAgICAgbUFjdGl2aXR5VGhyZWFkID0gYWN0aXZpdHlUaHJlYWQ7CisgICAgICAgICAgICBtSW5zdHJ1bWVudGF0aW9uID0gaW5zdHJ1bWVudGF0aW9uOworICAgICAgICAgICAgbVJlZ2lzdGVyZWQgPSByZWdpc3RlcmVkOworICAgICAgICAgICAgbUxvY2F0aW9uID0gbmV3IEludGVudFJlY2VpdmVyTGVha2VkKG51bGwpOworICAgICAgICAgICAgbUxvY2F0aW9uLmZpbGxJblN0YWNrVHJhY2UoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgdmFsaWRhdGUoQ29udGV4dCBjb250ZXh0LCBIYW5kbGVyIGFjdGl2aXR5VGhyZWFkKSB7CisgICAgICAgICAgICBpZiAobUNvbnRleHQgIT0gY29udGV4dCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICJSZWNlaXZlciAiICsgbVJlY2VpdmVyICsKKyAgICAgICAgICAgICAgICAgICAgIiByZWdpc3RlcmVkIHdpdGggZGlmZmVyaW5nIENvbnRleHQgKHdhcyAiICsKKyAgICAgICAgICAgICAgICAgICAgbUNvbnRleHQgKyAiIG5vdyAiICsgY29udGV4dCArICIpIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobUFjdGl2aXR5VGhyZWFkICE9IGFjdGl2aXR5VGhyZWFkKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgIlJlY2VpdmVyICIgKyBtUmVjZWl2ZXIgKworICAgICAgICAgICAgICAgICAgICAiIHJlZ2lzdGVyZWQgd2l0aCBkaWZmZXJpbmcgaGFuZGxlciAod2FzICIgKworICAgICAgICAgICAgICAgICAgICBtQWN0aXZpdHlUaHJlYWQgKyAiIG5vdyAiICsgYWN0aXZpdHlUaHJlYWQgKyAiKSIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgSW50ZW50UmVjZWl2ZXJMZWFrZWQgZ2V0TG9jYXRpb24oKSB7CisgICAgICAgICAgICByZXR1cm4gbUxvY2F0aW9uOworICAgICAgICB9CisKKyAgICAgICAgQnJvYWRjYXN0UmVjZWl2ZXIgZ2V0SW50ZW50UmVjZWl2ZXIoKSB7CisgICAgICAgICAgICByZXR1cm4gbVJlY2VpdmVyOworICAgICAgICB9CisKKyAgICAgICAgSUludGVudFJlY2VpdmVyIGdldElJbnRlbnRSZWNlaXZlcigpIHsKKyAgICAgICAgICAgIHJldHVybiBtSUludGVudFJlY2VpdmVyOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBzZXRVbnJlZ2lzdGVyTG9jYXRpb24oUnVudGltZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgbVVucmVnaXN0ZXJMb2NhdGlvbiA9IGV4OworICAgICAgICB9CisKKyAgICAgICAgUnVudGltZUV4Y2VwdGlvbiBnZXRVbnJlZ2lzdGVyTG9jYXRpb24oKSB7CisgICAgICAgICAgICByZXR1cm4gbVVucmVnaXN0ZXJMb2NhdGlvbjsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIHBlcmZvcm1SZWNlaXZlKEludGVudCBpbnRlbnQsIGludCByZXN1bHRDb2RlLAorICAgICAgICAgICAgICAgIFN0cmluZyBkYXRhLCBCdW5kbGUgZXh0cmFzLCBib29sZWFuIG9yZGVyZWQsIGJvb2xlYW4gc3RpY2t5KSB7CisgICAgICAgICAgICBpZiAoQWN0aXZpdHlUaHJlYWQuREVCVUdfQlJPQURDQVNUKSB7CisgICAgICAgICAgICAgICAgaW50IHNlcSA9IGludGVudC5nZXRJbnRFeHRyYSgic2VxIiwgLTEpOworICAgICAgICAgICAgICAgIFNsb2cuaShBY3Rpdml0eVRocmVhZC5UQUcsICJFbnF1ZXVlaW5nIGJyb2FkY2FzdCAiICsgaW50ZW50LmdldEFjdGlvbigpICsgIiBzZXE9IiArIHNlcQorICAgICAgICAgICAgICAgICAgICAgICAgKyAiIHRvICIgKyBtUmVjZWl2ZXIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgQXJncyBhcmdzID0gbmV3IEFyZ3MoKTsKKyAgICAgICAgICAgIGFyZ3MubUN1ckludGVudCA9IGludGVudDsKKyAgICAgICAgICAgIGFyZ3MubUN1ckNvZGUgPSByZXN1bHRDb2RlOworICAgICAgICAgICAgYXJncy5tQ3VyRGF0YSA9IGRhdGE7CisgICAgICAgICAgICBhcmdzLm1DdXJNYXAgPSBleHRyYXM7CisgICAgICAgICAgICBhcmdzLm1DdXJPcmRlcmVkID0gb3JkZXJlZDsKKyAgICAgICAgICAgIGFyZ3MubUN1clN0aWNreSA9IHN0aWNreTsKKyAgICAgICAgICAgIGlmICghbUFjdGl2aXR5VGhyZWFkLnBvc3QoYXJncykpIHsKKyAgICAgICAgICAgICAgICBpZiAobVJlZ2lzdGVyZWQgJiYgb3JkZXJlZCkgeworICAgICAgICAgICAgICAgICAgICBJQWN0aXZpdHlNYW5hZ2VyIG1nciA9IEFjdGl2aXR5TWFuYWdlck5hdGl2ZS5nZXREZWZhdWx0KCk7CisgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQWN0aXZpdHlUaHJlYWQuREVCVUdfQlJPQURDQVNUKSBTbG9nLmkoQWN0aXZpdHlUaHJlYWQuVEFHLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmluaXNoaW5nIHN5bmMgYnJvYWRjYXN0IHRvICIgKyBtUmVjZWl2ZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgbWdyLmZpbmlzaFJlY2VpdmVyKG1JSW50ZW50UmVjZWl2ZXIsIGFyZ3MubUN1ckNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MubUN1ckRhdGEsIGFyZ3MubUN1ck1hcCwgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgfQorCisgICAgcHVibGljIGZpbmFsIElTZXJ2aWNlQ29ubmVjdGlvbiBnZXRTZXJ2aWNlRGlzcGF0Y2hlcihTZXJ2aWNlQ29ubmVjdGlvbiBjLAorICAgICAgICAgICAgQ29udGV4dCBjb250ZXh0LCBIYW5kbGVyIGhhbmRsZXIsIGludCBmbGFncykgeworICAgICAgICBzeW5jaHJvbml6ZWQgKG1TZXJ2aWNlcykgeworICAgICAgICAgICAgTG9hZGVkQXBrLlNlcnZpY2VEaXNwYXRjaGVyIHNkID0gbnVsbDsKKyAgICAgICAgICAgIEhhc2hNYXA8U2VydmljZUNvbm5lY3Rpb24sIExvYWRlZEFway5TZXJ2aWNlRGlzcGF0Y2hlcj4gbWFwID0gbVNlcnZpY2VzLmdldChjb250ZXh0KTsKKyAgICAgICAgICAgIGlmIChtYXAgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHNkID0gbWFwLmdldChjKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzZCA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgc2QgPSBuZXcgU2VydmljZURpc3BhdGNoZXIoYywgY29udGV4dCwgaGFuZGxlciwgZmxhZ3MpOworICAgICAgICAgICAgICAgIGlmIChtYXAgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBtYXAgPSBuZXcgSGFzaE1hcDxTZXJ2aWNlQ29ubmVjdGlvbiwgTG9hZGVkQXBrLlNlcnZpY2VEaXNwYXRjaGVyPigpOworICAgICAgICAgICAgICAgICAgICBtU2VydmljZXMucHV0KGNvbnRleHQsIG1hcCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1hcC5wdXQoYywgc2QpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzZC52YWxpZGF0ZShjb250ZXh0LCBoYW5kbGVyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBzZC5nZXRJU2VydmljZUNvbm5lY3Rpb24oKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBmaW5hbCBJU2VydmljZUNvbm5lY3Rpb24gZm9yZ2V0U2VydmljZURpc3BhdGNoZXIoQ29udGV4dCBjb250ZXh0LAorICAgICAgICAgICAgU2VydmljZUNvbm5lY3Rpb24gYykgeworICAgICAgICBzeW5jaHJvbml6ZWQgKG1TZXJ2aWNlcykgeworICAgICAgICAgICAgSGFzaE1hcDxTZXJ2aWNlQ29ubmVjdGlvbiwgTG9hZGVkQXBrLlNlcnZpY2VEaXNwYXRjaGVyPiBtYXAKKyAgICAgICAgICAgICAgICAgICAgPSBtU2VydmljZXMuZ2V0KGNvbnRleHQpOworICAgICAgICAgICAgTG9hZGVkQXBrLlNlcnZpY2VEaXNwYXRjaGVyIHNkID0gbnVsbDsKKyAgICAgICAgICAgIGlmIChtYXAgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHNkID0gbWFwLmdldChjKTsKKyAgICAgICAgICAgICAgICBpZiAoc2QgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBtYXAucmVtb3ZlKGMpOworICAgICAgICAgICAgICAgICAgICBzZC5kb0ZvcmdldCgpOworICAgICAgICAgICAgICAgICAgICBpZiAobWFwLnNpemUoKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtU2VydmljZXMucmVtb3ZlKGNvbnRleHQpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICgoc2QuZ2V0RmxhZ3MoKSZDb250ZXh0LkJJTkRfREVCVUdfVU5CSU5EKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBIYXNoTWFwPFNlcnZpY2VDb25uZWN0aW9uLCBMb2FkZWRBcGsuU2VydmljZURpc3BhdGNoZXI+IGhvbGRlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG1VbmJvdW5kU2VydmljZXMuZ2V0KGNvbnRleHQpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhvbGRlciA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaG9sZGVyID0gbmV3IEhhc2hNYXA8U2VydmljZUNvbm5lY3Rpb24sIExvYWRlZEFway5TZXJ2aWNlRGlzcGF0Y2hlcj4oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVW5ib3VuZFNlcnZpY2VzLnB1dChjb250ZXh0LCBob2xkZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgUnVudGltZUV4Y2VwdGlvbiBleCA9IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJPcmlnaW5hbGx5IHVuYm91bmQgaGVyZToiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4LmZpbGxJblN0YWNrVHJhY2UoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNkLnNldFVuYmluZExvY2F0aW9uKGV4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGhvbGRlci5wdXQoYywgc2QpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZC5nZXRJU2VydmljZUNvbm5lY3Rpb24oKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBIYXNoTWFwPFNlcnZpY2VDb25uZWN0aW9uLCBMb2FkZWRBcGsuU2VydmljZURpc3BhdGNoZXI+IGhvbGRlcgorICAgICAgICAgICAgICAgICAgICA9IG1VbmJvdW5kU2VydmljZXMuZ2V0KGNvbnRleHQpOworICAgICAgICAgICAgaWYgKGhvbGRlciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgc2QgPSBob2xkZXIuZ2V0KGMpOworICAgICAgICAgICAgICAgIGlmIChzZCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIFJ1bnRpbWVFeGNlcHRpb24gZXggPSBzZC5nZXRVbmJpbmRMb2NhdGlvbigpOworICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmJpbmRpbmcgU2VydmljZSAiICsgYworICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiB0aGF0IHdhcyBhbHJlYWR5IHVuYm91bmQiLCBleCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNvbnRleHQgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIlVuYmluZGluZyBTZXJ2aWNlICIgKyBjCisgICAgICAgICAgICAgICAgICAgICAgICArICIgZnJvbSBDb250ZXh0IHRoYXQgaXMgbm8gbG9uZ2VyIGluIHVzZTogIiArIGNvbnRleHQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJTZXJ2aWNlIG5vdCByZWdpc3RlcmVkOiAiICsgYyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdGF0aWMgZmluYWwgY2xhc3MgU2VydmljZURpc3BhdGNoZXIgeworICAgICAgICBwcml2YXRlIGZpbmFsIFNlcnZpY2VEaXNwYXRjaGVyLklubmVyQ29ubmVjdGlvbiBtSVNlcnZpY2VDb25uZWN0aW9uOworICAgICAgICBwcml2YXRlIGZpbmFsIFNlcnZpY2VDb25uZWN0aW9uIG1Db25uZWN0aW9uOworICAgICAgICBwcml2YXRlIGZpbmFsIENvbnRleHQgbUNvbnRleHQ7CisgICAgICAgIHByaXZhdGUgZmluYWwgSGFuZGxlciBtQWN0aXZpdHlUaHJlYWQ7CisgICAgICAgIHByaXZhdGUgZmluYWwgU2VydmljZUNvbm5lY3Rpb25MZWFrZWQgbUxvY2F0aW9uOworICAgICAgICBwcml2YXRlIGZpbmFsIGludCBtRmxhZ3M7CisKKyAgICAgICAgcHJpdmF0ZSBSdW50aW1lRXhjZXB0aW9uIG1VbmJpbmRMb2NhdGlvbjsKKworICAgICAgICBwcml2YXRlIGJvb2xlYW4gbURpZWQ7CisKKyAgICAgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgQ29ubmVjdGlvbkluZm8geworICAgICAgICAgICAgSUJpbmRlciBiaW5kZXI7CisgICAgICAgICAgICBJQmluZGVyLkRlYXRoUmVjaXBpZW50IGRlYXRoTW9uaXRvcjsKKyAgICAgICAgfQorCisgICAgICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIElubmVyQ29ubmVjdGlvbiBleHRlbmRzIElTZXJ2aWNlQ29ubmVjdGlvbi5TdHViIHsKKyAgICAgICAgICAgIGZpbmFsIFdlYWtSZWZlcmVuY2U8TG9hZGVkQXBrLlNlcnZpY2VEaXNwYXRjaGVyPiBtRGlzcGF0Y2hlcjsKKworICAgICAgICAgICAgSW5uZXJDb25uZWN0aW9uKExvYWRlZEFway5TZXJ2aWNlRGlzcGF0Y2hlciBzZCkgeworICAgICAgICAgICAgICAgIG1EaXNwYXRjaGVyID0gbmV3IFdlYWtSZWZlcmVuY2U8TG9hZGVkQXBrLlNlcnZpY2VEaXNwYXRjaGVyPihzZCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGNvbm5lY3RlZChDb21wb25lbnROYW1lIG5hbWUsIElCaW5kZXIgc2VydmljZSkgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7CisgICAgICAgICAgICAgICAgTG9hZGVkQXBrLlNlcnZpY2VEaXNwYXRjaGVyIHNkID0gbURpc3BhdGNoZXIuZ2V0KCk7CisgICAgICAgICAgICAgICAgaWYgKHNkICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgc2QuY29ubmVjdGVkKG5hbWUsIHNlcnZpY2UpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHByaXZhdGUgZmluYWwgSGFzaE1hcDxDb21wb25lbnROYW1lLCBTZXJ2aWNlRGlzcGF0Y2hlci5Db25uZWN0aW9uSW5mbz4gbUFjdGl2ZUNvbm5lY3Rpb25zCisgICAgICAgICAgICA9IG5ldyBIYXNoTWFwPENvbXBvbmVudE5hbWUsIFNlcnZpY2VEaXNwYXRjaGVyLkNvbm5lY3Rpb25JbmZvPigpOworCisgICAgICAgIFNlcnZpY2VEaXNwYXRjaGVyKFNlcnZpY2VDb25uZWN0aW9uIGNvbm4sCisgICAgICAgICAgICAgICAgQ29udGV4dCBjb250ZXh0LCBIYW5kbGVyIGFjdGl2aXR5VGhyZWFkLCBpbnQgZmxhZ3MpIHsKKyAgICAgICAgICAgIG1JU2VydmljZUNvbm5lY3Rpb24gPSBuZXcgSW5uZXJDb25uZWN0aW9uKHRoaXMpOworICAgICAgICAgICAgbUNvbm5lY3Rpb24gPSBjb25uOworICAgICAgICAgICAgbUNvbnRleHQgPSBjb250ZXh0OworICAgICAgICAgICAgbUFjdGl2aXR5VGhyZWFkID0gYWN0aXZpdHlUaHJlYWQ7CisgICAgICAgICAgICBtTG9jYXRpb24gPSBuZXcgU2VydmljZUNvbm5lY3Rpb25MZWFrZWQobnVsbCk7CisgICAgICAgICAgICBtTG9jYXRpb24uZmlsbEluU3RhY2tUcmFjZSgpOworICAgICAgICAgICAgbUZsYWdzID0gZmxhZ3M7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHZhbGlkYXRlKENvbnRleHQgY29udGV4dCwgSGFuZGxlciBhY3Rpdml0eVRocmVhZCkgeworICAgICAgICAgICAgaWYgKG1Db250ZXh0ICE9IGNvbnRleHQpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgIlNlcnZpY2VDb25uZWN0aW9uICIgKyBtQ29ubmVjdGlvbiArCisgICAgICAgICAgICAgICAgICAgICIgcmVnaXN0ZXJlZCB3aXRoIGRpZmZlcmluZyBDb250ZXh0ICh3YXMgIiArCisgICAgICAgICAgICAgICAgICAgIG1Db250ZXh0ICsgIiBub3cgIiArIGNvbnRleHQgKyAiKSIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1BY3Rpdml0eVRocmVhZCAhPSBhY3Rpdml0eVRocmVhZCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAiU2VydmljZUNvbm5lY3Rpb24gIiArIG1Db25uZWN0aW9uICsKKyAgICAgICAgICAgICAgICAgICAgIiByZWdpc3RlcmVkIHdpdGggZGlmZmVyaW5nIGhhbmRsZXIgKHdhcyAiICsKKyAgICAgICAgICAgICAgICAgICAgbUFjdGl2aXR5VGhyZWFkICsgIiBub3cgIiArIGFjdGl2aXR5VGhyZWFkICsgIikiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgZG9Gb3JnZXQoKSB7CisgICAgICAgICAgICBzeW5jaHJvbml6ZWQodGhpcykgeworICAgICAgICAgICAgICAgIEl0ZXJhdG9yPFNlcnZpY2VEaXNwYXRjaGVyLkNvbm5lY3Rpb25JbmZvPiBpdCA9IG1BY3RpdmVDb25uZWN0aW9ucy52YWx1ZXMoKS5pdGVyYXRvcigpOworICAgICAgICAgICAgICAgIHdoaWxlIChpdC5oYXNOZXh0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgU2VydmljZURpc3BhdGNoZXIuQ29ubmVjdGlvbkluZm8gY2kgPSBpdC5uZXh0KCk7CisgICAgICAgICAgICAgICAgICAgIGNpLmJpbmRlci51bmxpbmtUb0RlYXRoKGNpLmRlYXRoTW9uaXRvciwgMCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1BY3RpdmVDb25uZWN0aW9ucy5jbGVhcigpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgU2VydmljZUNvbm5lY3Rpb25MZWFrZWQgZ2V0TG9jYXRpb24oKSB7CisgICAgICAgICAgICByZXR1cm4gbUxvY2F0aW9uOworICAgICAgICB9CisKKyAgICAgICAgU2VydmljZUNvbm5lY3Rpb24gZ2V0U2VydmljZUNvbm5lY3Rpb24oKSB7CisgICAgICAgICAgICByZXR1cm4gbUNvbm5lY3Rpb247CisgICAgICAgIH0KKworICAgICAgICBJU2VydmljZUNvbm5lY3Rpb24gZ2V0SVNlcnZpY2VDb25uZWN0aW9uKCkgeworICAgICAgICAgICAgcmV0dXJuIG1JU2VydmljZUNvbm5lY3Rpb247CisgICAgICAgIH0KKworICAgICAgICBpbnQgZ2V0RmxhZ3MoKSB7CisgICAgICAgICAgICByZXR1cm4gbUZsYWdzOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBzZXRVbmJpbmRMb2NhdGlvbihSdW50aW1lRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICBtVW5iaW5kTG9jYXRpb24gPSBleDsKKyAgICAgICAgfQorCisgICAgICAgIFJ1bnRpbWVFeGNlcHRpb24gZ2V0VW5iaW5kTG9jYXRpb24oKSB7CisgICAgICAgICAgICByZXR1cm4gbVVuYmluZExvY2F0aW9uOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgY29ubmVjdGVkKENvbXBvbmVudE5hbWUgbmFtZSwgSUJpbmRlciBzZXJ2aWNlKSB7CisgICAgICAgICAgICBpZiAobUFjdGl2aXR5VGhyZWFkICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBtQWN0aXZpdHlUaHJlYWQucG9zdChuZXcgUnVuQ29ubmVjdGlvbihuYW1lLCBzZXJ2aWNlLCAwKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRvQ29ubmVjdGVkKG5hbWUsIHNlcnZpY2UpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgZGVhdGgoQ29tcG9uZW50TmFtZSBuYW1lLCBJQmluZGVyIHNlcnZpY2UpIHsKKyAgICAgICAgICAgIFNlcnZpY2VEaXNwYXRjaGVyLkNvbm5lY3Rpb25JbmZvIG9sZDsKKworICAgICAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7CisgICAgICAgICAgICAgICAgbURpZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIG9sZCA9IG1BY3RpdmVDb25uZWN0aW9ucy5yZW1vdmUobmFtZSk7CisgICAgICAgICAgICAgICAgaWYgKG9sZCA9PSBudWxsIHx8IG9sZC5iaW5kZXIgIT0gc2VydmljZSkgeworICAgICAgICAgICAgICAgICAgICAvLyBEZWF0aCBmb3Igc29tZW9uZSBkaWZmZXJlbnQgdGhhbiB3aG8gd2UgbGFzdAorICAgICAgICAgICAgICAgICAgICAvLyByZXBvcnRlZC4uLiAganVzdCBpZ25vcmUgaXQuCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgb2xkLmJpbmRlci51bmxpbmtUb0RlYXRoKG9sZC5kZWF0aE1vbml0b3IsIDApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobUFjdGl2aXR5VGhyZWFkICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBtQWN0aXZpdHlUaHJlYWQucG9zdChuZXcgUnVuQ29ubmVjdGlvbihuYW1lLCBzZXJ2aWNlLCAxKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGRvRGVhdGgobmFtZSwgc2VydmljZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBkb0Nvbm5lY3RlZChDb21wb25lbnROYW1lIG5hbWUsIElCaW5kZXIgc2VydmljZSkgeworICAgICAgICAgICAgU2VydmljZURpc3BhdGNoZXIuQ29ubmVjdGlvbkluZm8gb2xkOworICAgICAgICAgICAgU2VydmljZURpc3BhdGNoZXIuQ29ubmVjdGlvbkluZm8gaW5mbzsKKworICAgICAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7CisgICAgICAgICAgICAgICAgb2xkID0gbUFjdGl2ZUNvbm5lY3Rpb25zLmdldChuYW1lKTsKKyAgICAgICAgICAgICAgICBpZiAob2xkICE9IG51bGwgJiYgb2xkLmJpbmRlciA9PSBzZXJ2aWNlKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEh1aCwgYWxyZWFkeSBoYXZlIHRoaXMgb25lLiAgT2ggd2VsbCEKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChzZXJ2aWNlICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gQSBuZXcgc2VydmljZSBpcyBiZWluZyBjb25uZWN0ZWQuLi4gc2V0IGl0IGFsbCB1cC4KKyAgICAgICAgICAgICAgICAgICAgbURpZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgaW5mbyA9IG5ldyBDb25uZWN0aW9uSW5mbygpOworICAgICAgICAgICAgICAgICAgICBpbmZvLmJpbmRlciA9IHNlcnZpY2U7CisgICAgICAgICAgICAgICAgICAgIGluZm8uZGVhdGhNb25pdG9yID0gbmV3IERlYXRoTW9uaXRvcihuYW1lLCBzZXJ2aWNlKTsKKyAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2UubGlua1RvRGVhdGgoaW5mby5kZWF0aE1vbml0b3IsIDApOworICAgICAgICAgICAgICAgICAgICAgICAgbUFjdGl2ZUNvbm5lY3Rpb25zLnB1dChuYW1lLCBpbmZvKTsKKyAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgc2VydmljZSB3YXMgZGVhZCBiZWZvcmUgd2UgZ290IGl0Li4uICBqdXN0CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb24ndCBkbyBhbnl0aGluZyB3aXRoIGl0LgorICAgICAgICAgICAgICAgICAgICAgICAgbUFjdGl2ZUNvbm5lY3Rpb25zLnJlbW92ZShuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhlIG5hbWVkIHNlcnZpY2UgaXMgYmVpbmcgZGlzY29ubmVjdGVkLi4uIGNsZWFuIHVwLgorICAgICAgICAgICAgICAgICAgICBtQWN0aXZlQ29ubmVjdGlvbnMucmVtb3ZlKG5hbWUpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChvbGQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBvbGQuYmluZGVyLnVubGlua1RvRGVhdGgob2xkLmRlYXRoTW9uaXRvciwgMCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBJZiB0aGVyZSB3YXMgYW4gb2xkIHNlcnZpY2UsIGl0IGlzIG5vdCBkaXNjb25uZWN0ZWQuCisgICAgICAgICAgICBpZiAob2xkICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBtQ29ubmVjdGlvbi5vblNlcnZpY2VEaXNjb25uZWN0ZWQobmFtZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBJZiB0aGVyZSBpcyBhIG5ldyBzZXJ2aWNlLCBpdCBpcyBub3cgY29ubmVjdGVkLgorICAgICAgICAgICAgaWYgKHNlcnZpY2UgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIG1Db25uZWN0aW9uLm9uU2VydmljZUNvbm5lY3RlZChuYW1lLCBzZXJ2aWNlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIGRvRGVhdGgoQ29tcG9uZW50TmFtZSBuYW1lLCBJQmluZGVyIHNlcnZpY2UpIHsKKyAgICAgICAgICAgIG1Db25uZWN0aW9uLm9uU2VydmljZURpc2Nvbm5lY3RlZChuYW1lKTsKKyAgICAgICAgfQorCisgICAgICAgIHByaXZhdGUgZmluYWwgY2xhc3MgUnVuQ29ubmVjdGlvbiBpbXBsZW1lbnRzIFJ1bm5hYmxlIHsKKyAgICAgICAgICAgIFJ1bkNvbm5lY3Rpb24oQ29tcG9uZW50TmFtZSBuYW1lLCBJQmluZGVyIHNlcnZpY2UsIGludCBjb21tYW5kKSB7CisgICAgICAgICAgICAgICAgbU5hbWUgPSBuYW1lOworICAgICAgICAgICAgICAgIG1TZXJ2aWNlID0gc2VydmljZTsKKyAgICAgICAgICAgICAgICBtQ29tbWFuZCA9IGNvbW1hbmQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICBpZiAobUNvbW1hbmQgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICBkb0Nvbm5lY3RlZChtTmFtZSwgbVNlcnZpY2UpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobUNvbW1hbmQgPT0gMSkgeworICAgICAgICAgICAgICAgICAgICBkb0RlYXRoKG1OYW1lLCBtU2VydmljZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmaW5hbCBDb21wb25lbnROYW1lIG1OYW1lOworICAgICAgICAgICAgZmluYWwgSUJpbmRlciBtU2VydmljZTsKKyAgICAgICAgICAgIGZpbmFsIGludCBtQ29tbWFuZDsKKyAgICAgICAgfQorCisgICAgICAgIHByaXZhdGUgZmluYWwgY2xhc3MgRGVhdGhNb25pdG9yIGltcGxlbWVudHMgSUJpbmRlci5EZWF0aFJlY2lwaWVudAorICAgICAgICB7CisgICAgICAgICAgICBEZWF0aE1vbml0b3IoQ29tcG9uZW50TmFtZSBuYW1lLCBJQmluZGVyIHNlcnZpY2UpIHsKKyAgICAgICAgICAgICAgICBtTmFtZSA9IG5hbWU7CisgICAgICAgICAgICAgICAgbVNlcnZpY2UgPSBzZXJ2aWNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwdWJsaWMgdm9pZCBiaW5kZXJEaWVkKCkgeworICAgICAgICAgICAgICAgIGRlYXRoKG1OYW1lLCBtU2VydmljZSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZpbmFsIENvbXBvbmVudE5hbWUgbU5hbWU7CisgICAgICAgICAgICBmaW5hbCBJQmluZGVyIG1TZXJ2aWNlOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvYXBwL05hdGl2ZUFjdGl2aXR5LmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9hcHAvTmF0aXZlQWN0aXZpdHkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzJkZGE3Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvYXBwL05hdGl2ZUFjdGl2aXR5LmphdmEKQEAgLTAsMCArMSwyMTcgQEAKK3BhY2thZ2UgYW5kcm9pZC5hcHA7CisKK2ltcG9ydCBkYWx2aWsuc3lzdGVtLlBhdGhDbGFzc0xvYWRlcjsKKworaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5BY3Rpdml0eUluZm87CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLkFwcGxpY2F0aW9uSW5mbzsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5QaXhlbEZvcm1hdDsKK2ltcG9ydCBhbmRyb2lkLm9zLkJ1aWxkOworaW1wb3J0IGFuZHJvaWQub3MuQnVuZGxlOworaW1wb3J0IGFuZHJvaWQub3MuRW52aXJvbm1lbnQ7CitpbXBvcnQgYW5kcm9pZC5vcy5Mb29wZXI7CitpbXBvcnQgYW5kcm9pZC5vcy5NZXNzYWdlUXVldWU7CitpbXBvcnQgYW5kcm9pZC52aWV3LklucHV0Q2hhbm5lbDsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuSW5wdXRRdWV1ZTsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuS2V5RXZlbnQ7CitpbXBvcnQgYW5kcm9pZC52aWV3LlN1cmZhY2U7CitpbXBvcnQgYW5kcm9pZC52aWV3LlN1cmZhY2VIb2xkZXI7CitpbXBvcnQgYW5kcm9pZC52aWV3LlZpZXc7CisKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CisKKy8qKgorICogQ29udmVuaWVuY2UgZm9yIGltcGxlbWVudGluZyBhbiBhY3Rpdml0eSB0aGF0IHdpbGwgYmUgaW1wbGVtZW50ZWQKKyAqIHB1cmVseSBpbiBuYXRpdmUgY29kZS4gIFRoYXQgaXMsIGEgZ2FtZSAob3IgZ2FtZS1saWtlIHRoaW5nKS4KKyAqLworcHVibGljIGNsYXNzIE5hdGl2ZUFjdGl2aXR5IGV4dGVuZHMgQWN0aXZpdHkgaW1wbGVtZW50cyBTdXJmYWNlSG9sZGVyLkNhbGxiYWNrLAorICAgICAgICBJbnB1dFF1ZXVlLkNhbGxiYWNrIHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBNRVRBX0RBVEFfTElCX05BTUUgPSAiYW5kcm9pZC5hcHAubGliX25hbWUiOworICAgIAorICAgIHByaXZhdGUgaW50IG1OYXRpdmVIYW5kbGU7CisgICAgCisgICAgcHJpdmF0ZSBJbnB1dFF1ZXVlIG1DdXJJbnB1dFF1ZXVlOworICAgIHByaXZhdGUgU3VyZmFjZUhvbGRlciBtQ3VyU3VyZmFjZUhvbGRlcjsKKyAgICAKKyAgICBwcml2YXRlIGJvb2xlYW4gbURlc3Ryb3llZDsKKyAgICAKKyAgICBwcml2YXRlIG5hdGl2ZSBpbnQgbG9hZE5hdGl2ZUNvZGUoU3RyaW5nIHBhdGgsIE1lc3NhZ2VRdWV1ZSBxdWV1ZSwKKyAgICAgICAgICAgIFN0cmluZyBpbnRlcm5hbERhdGFQYXRoLCBTdHJpbmcgZXh0ZXJuYWxEYXRhUGF0aCwgaW50IHNka1ZlcnNpb24pOworICAgIHByaXZhdGUgbmF0aXZlIHZvaWQgdW5sb2FkTmF0aXZlQ29kZShpbnQgaGFuZGxlKTsKKyAgICAKKyAgICBwcml2YXRlIG5hdGl2ZSB2b2lkIG9uU3RhcnROYXRpdmUoaW50IGhhbmRsZSk7CisgICAgcHJpdmF0ZSBuYXRpdmUgdm9pZCBvblJlc3VtZU5hdGl2ZShpbnQgaGFuZGxlKTsKKyAgICBwcml2YXRlIG5hdGl2ZSB2b2lkIG9uU2F2ZUluc3RhbmNlU3RhdGVOYXRpdmUoaW50IGhhbmRsZSk7CisgICAgcHJpdmF0ZSBuYXRpdmUgdm9pZCBvblBhdXNlTmF0aXZlKGludCBoYW5kbGUpOworICAgIHByaXZhdGUgbmF0aXZlIHZvaWQgb25TdG9wTmF0aXZlKGludCBoYW5kbGUpOworICAgIHByaXZhdGUgbmF0aXZlIHZvaWQgb25Mb3dNZW1vcnlOYXRpdmUoaW50IGhhbmRsZSk7CisgICAgcHJpdmF0ZSBuYXRpdmUgdm9pZCBvbldpbmRvd0ZvY3VzQ2hhbmdlZE5hdGl2ZShpbnQgaGFuZGxlLCBib29sZWFuIGZvY3VzZWQpOworICAgIHByaXZhdGUgbmF0aXZlIHZvaWQgb25TdXJmYWNlQ3JlYXRlZE5hdGl2ZShpbnQgaGFuZGxlLCBTdXJmYWNlIHN1cmZhY2UpOworICAgIHByaXZhdGUgbmF0aXZlIHZvaWQgb25TdXJmYWNlQ2hhbmdlZE5hdGl2ZShpbnQgaGFuZGxlLCBTdXJmYWNlIHN1cmZhY2UsCisgICAgICAgICAgICBpbnQgZm9ybWF0LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOworICAgIHByaXZhdGUgbmF0aXZlIHZvaWQgb25TdXJmYWNlRGVzdHJveWVkTmF0aXZlKGludCBoYW5kbGUpOworICAgIHByaXZhdGUgbmF0aXZlIHZvaWQgb25JbnB1dENoYW5uZWxDcmVhdGVkTmF0aXZlKGludCBoYW5kbGUsIElucHV0Q2hhbm5lbCBjaGFubmVsKTsKKyAgICBwcml2YXRlIG5hdGl2ZSB2b2lkIG9uSW5wdXRDaGFubmVsRGVzdHJveWVkTmF0aXZlKGludCBoYW5kbGUsIElucHV0Q2hhbm5lbCBjaGFubmVsKTsKKyAgICAKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCBvbkNyZWF0ZShCdW5kbGUgc2F2ZWRJbnN0YW5jZVN0YXRlKSB7CisgICAgICAgIFN0cmluZyBsaWJuYW1lID0gIm1haW4iOworICAgICAgICBBY3Rpdml0eUluZm8gYWk7CisgICAgICAgIAorICAgICAgICBnZXRXaW5kb3coKS50YWtlU3VyZmFjZSh0aGlzKTsKKyAgICAgICAgZ2V0V2luZG93KCkudGFrZUlucHV0UXVldWUodGhpcyk7CisgICAgICAgIGdldFdpbmRvdygpLnNldEZvcm1hdChQaXhlbEZvcm1hdC5SR0JfNTY1KTsKKyAgICAgICAgCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBhaSA9IGdldFBhY2thZ2VNYW5hZ2VyKCkuZ2V0QWN0aXZpdHlJbmZvKAorICAgICAgICAgICAgICAgICAgICBnZXRJbnRlbnQoKS5nZXRDb21wb25lbnQoKSwgUGFja2FnZU1hbmFnZXIuR0VUX01FVEFfREFUQSk7CisgICAgICAgICAgICBpZiAoYWkubWV0YURhdGEgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIFN0cmluZyBsbiA9IGFpLm1ldGFEYXRhLmdldFN0cmluZyhNRVRBX0RBVEFfTElCX05BTUUpOworICAgICAgICAgICAgICAgIGlmIChsbiAhPSBudWxsKSBsaWJuYW1lID0gbG47CisgICAgICAgICAgICB9CisgICAgICAgIH0gY2F0Y2ggKFBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigiRXJyb3IgZ2V0dGluZyBhY3Rpdml0eSBpbmZvIiwgZSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFN0cmluZyBwYXRoID0gbnVsbDsKKyAgICAgICAgCisgICAgICAgIGlmICgoYWkuYXBwbGljYXRpb25JbmZvLmZsYWdzJkFwcGxpY2F0aW9uSW5mby5GTEFHX0hBU19DT0RFKSA9PSAwKSB7CisgICAgICAgICAgICAvLyBJZiB0aGUgYXBwbGljYXRpb24gZG9lcyBub3QgaGF2ZSAoSmF2YSkgY29kZSwgdGhlbiBubyBDbGFzc0xvYWRlcgorICAgICAgICAgICAgLy8gaGFzIGJlZW4gc2V0IHVwIGZvciBpdC4gIFdlIHdpbGwgbmVlZCB0byBkbyBvdXIgb3duIHNlYXJjaCBmb3IKKyAgICAgICAgICAgIC8vIHRoZSBuYXRpdmUgY29kZS4KKyAgICAgICAgICAgIHBhdGggPSBhaS5hcHBsaWNhdGlvbkluZm8uZGF0YURpciArICIvbGliLyIgKyBTeXN0ZW0ubWFwTGlicmFyeU5hbWUobGlibmFtZSk7CisgICAgICAgICAgICBpZiAoIShuZXcgRmlsZShwYXRoKSkuZXhpc3RzKCkpIHsKKyAgICAgICAgICAgICAgICBwYXRoID0gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKHBhdGggPT0gbnVsbCkgeworICAgICAgICAgICAgcGF0aCA9ICgoUGF0aENsYXNzTG9hZGVyKWdldENsYXNzTG9hZGVyKCkpLmZpbmRMaWJyYXJ5KGxpYm5hbWUpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAocGF0aCA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJVbmFibGUgdG8gZmluZCBuYXRpdmUgbGlicmFyeTogIiArIGxpYm5hbWUpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBtTmF0aXZlSGFuZGxlID0gbG9hZE5hdGl2ZUNvZGUocGF0aCwgTG9vcGVyLm15UXVldWUoKSwKKyAgICAgICAgICAgICAgICAgZ2V0RmlsZXNEaXIoKS50b1N0cmluZygpLAorICAgICAgICAgICAgICAgICBFbnZpcm9ubWVudC5nZXRFeHRlcm5hbFN0b3JhZ2VBcHBGaWxlc0RpcmVjdG9yeShhaS5wYWNrYWdlTmFtZSkudG9TdHJpbmcoKSwKKyAgICAgICAgICAgICAgICAgQnVpbGQuVkVSU0lPTi5TREtfSU5UKTsKKyAgICAgICAgCisgICAgICAgIGlmIChtTmF0aXZlSGFuZGxlID09IDApIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlVuYWJsZSB0byBsb2FkIG5hdGl2ZSBsaWJyYXJ5OiAiICsgcGF0aCk7CisgICAgICAgIH0KKyAgICAgICAgc3VwZXIub25DcmVhdGUoc2F2ZWRJbnN0YW5jZVN0YXRlKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCBvbkRlc3Ryb3koKSB7CisgICAgICAgIG1EZXN0cm95ZWQgPSB0cnVlOworICAgICAgICBpZiAobUN1clN1cmZhY2VIb2xkZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgb25TdXJmYWNlRGVzdHJveWVkTmF0aXZlKG1OYXRpdmVIYW5kbGUpOworICAgICAgICAgICAgbUN1clN1cmZhY2VIb2xkZXIgPSBudWxsOworICAgICAgICB9CisgICAgICAgIGlmIChtQ3VySW5wdXRRdWV1ZSAhPSBudWxsKSB7CisgICAgICAgICAgICBvbklucHV0Q2hhbm5lbERlc3Ryb3llZE5hdGl2ZShtTmF0aXZlSGFuZGxlLCBtQ3VySW5wdXRRdWV1ZS5nZXRJbnB1dENoYW5uZWwoKSk7CisgICAgICAgICAgICBtQ3VySW5wdXRRdWV1ZSA9IG51bGw7CisgICAgICAgIH0KKyAgICAgICAgdW5sb2FkTmF0aXZlQ29kZShtTmF0aXZlSGFuZGxlKTsKKyAgICAgICAgc3VwZXIub25EZXN0cm95KCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgb25QYXVzZSgpIHsKKyAgICAgICAgc3VwZXIub25QYXVzZSgpOworICAgICAgICBvblBhdXNlTmF0aXZlKG1OYXRpdmVIYW5kbGUpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIG9uUmVzdW1lKCkgeworICAgICAgICBzdXBlci5vblJlc3VtZSgpOworICAgICAgICBvblJlc3VtZU5hdGl2ZShtTmF0aXZlSGFuZGxlKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCBvblNhdmVJbnN0YW5jZVN0YXRlKEJ1bmRsZSBvdXRTdGF0ZSkgeworICAgICAgICBzdXBlci5vblNhdmVJbnN0YW5jZVN0YXRlKG91dFN0YXRlKTsKKyAgICAgICAgb25TYXZlSW5zdGFuY2VTdGF0ZU5hdGl2ZShtTmF0aXZlSGFuZGxlKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCBvblN0YXJ0KCkgeworICAgICAgICBzdXBlci5vblN0YXJ0KCk7CisgICAgICAgIG9uU3RhcnROYXRpdmUobU5hdGl2ZUhhbmRsZSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgb25TdG9wKCkgeworICAgICAgICBzdXBlci5vblN0b3AoKTsKKyAgICAgICAgb25TdG9wTmF0aXZlKG1OYXRpdmVIYW5kbGUpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIG9uTG93TWVtb3J5KCkgeworICAgICAgICBzdXBlci5vbkxvd01lbW9yeSgpOworICAgICAgICBpZiAoIW1EZXN0cm95ZWQpIHsKKyAgICAgICAgICAgIG9uTG93TWVtb3J5TmF0aXZlKG1OYXRpdmVIYW5kbGUpOworICAgICAgICB9CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgb25XaW5kb3dGb2N1c0NoYW5nZWQoYm9vbGVhbiBoYXNGb2N1cykgeworICAgICAgICBzdXBlci5vbldpbmRvd0ZvY3VzQ2hhbmdlZChoYXNGb2N1cyk7CisgICAgICAgIGlmICghbURlc3Ryb3llZCkgeworICAgICAgICAgICAgb25XaW5kb3dGb2N1c0NoYW5nZWROYXRpdmUobU5hdGl2ZUhhbmRsZSwgaGFzRm9jdXMpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIHN1cmZhY2VDcmVhdGVkKFN1cmZhY2VIb2xkZXIgaG9sZGVyKSB7CisgICAgICAgIGlmICghbURlc3Ryb3llZCkgeworICAgICAgICAgICAgbUN1clN1cmZhY2VIb2xkZXIgPSBob2xkZXI7CisgICAgICAgICAgICBvblN1cmZhY2VDcmVhdGVkTmF0aXZlKG1OYXRpdmVIYW5kbGUsIGhvbGRlci5nZXRTdXJmYWNlKCkpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIHN1cmZhY2VDaGFuZ2VkKFN1cmZhY2VIb2xkZXIgaG9sZGVyLCBpbnQgZm9ybWF0LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpIHsKKyAgICAgICAgaWYgKCFtRGVzdHJveWVkKSB7CisgICAgICAgICAgICBtQ3VyU3VyZmFjZUhvbGRlciA9IGhvbGRlcjsKKyAgICAgICAgICAgIG9uU3VyZmFjZUNoYW5nZWROYXRpdmUobU5hdGl2ZUhhbmRsZSwgaG9sZGVyLmdldFN1cmZhY2UoKSwgZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBzdXJmYWNlRGVzdHJveWVkKFN1cmZhY2VIb2xkZXIgaG9sZGVyKSB7CisgICAgICAgIG1DdXJTdXJmYWNlSG9sZGVyID0gbnVsbDsKKyAgICAgICAgaWYgKCFtRGVzdHJveWVkKSB7CisgICAgICAgICAgICBvblN1cmZhY2VEZXN0cm95ZWROYXRpdmUobU5hdGl2ZUhhbmRsZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgb25JbnB1dFF1ZXVlQ3JlYXRlZChJbnB1dFF1ZXVlIHF1ZXVlKSB7CisgICAgICAgIGlmICghbURlc3Ryb3llZCkgeworICAgICAgICAgICAgbUN1cklucHV0UXVldWUgPSBxdWV1ZTsKKyAgICAgICAgICAgIG9uSW5wdXRDaGFubmVsQ3JlYXRlZE5hdGl2ZShtTmF0aXZlSGFuZGxlLCBxdWV1ZS5nZXRJbnB1dENoYW5uZWwoKSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgb25JbnB1dFF1ZXVlRGVzdHJveWVkKElucHV0UXVldWUgcXVldWUpIHsKKyAgICAgICAgbUN1cklucHV0UXVldWUgPSBudWxsOworICAgICAgICBpZiAoIW1EZXN0cm95ZWQpIHsKKyAgICAgICAgICAgIG9uSW5wdXRDaGFubmVsRGVzdHJveWVkTmF0aXZlKG1OYXRpdmVIYW5kbGUsIHF1ZXVlLmdldElucHV0Q2hhbm5lbCgpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB2b2lkIGRpc3BhdGNoVW5oYW5kbGVkS2V5RXZlbnQoS2V5RXZlbnQgZXZlbnQpIHsKKyAgICAgICAgVmlldyBkZWNvciA9IGdldFdpbmRvdygpLmdldERlY29yVmlldygpOworICAgICAgICBpZiAoZGVjb3IgIT0gbnVsbCkgeworICAgICAgICAgICAgZGVjb3IuZGlzcGF0Y2hLZXlFdmVudChldmVudCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgdm9pZCBzZXRXaW5kb3dGbGFncyhpbnQgZmxhZ3MsIGludCBtYXNrKSB7CisgICAgICAgIGdldFdpbmRvdygpLnNldEZsYWdzKGZsYWdzLCBtYXNrKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzZXRXaW5kb3dGb3JtYXQoaW50IGZvcm1hdCkgeworICAgICAgICBnZXRXaW5kb3coKS5zZXRGb3JtYXQoZm9ybWF0KTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9hcHAvTm90aWZpY2F0aW9uLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9hcHAvTm90aWZpY2F0aW9uLmphdmEKaW5kZXggNGQ3MmY3My4uODNhMjAyNCAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvYXBwL05vdGlmaWNhdGlvbi5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9Ob3RpZmljYXRpb24uamF2YQpAQCAtODMsMTAgKzgzLDEwIEBACiAgICAgcHVibGljIGludCBpY29uOwogCiAgICAgLyoqCi0gICAgICogVGhlIG51bWJlciBvZiBldmVudHMgdGhhdCB0aGlzIG5vdGlmaWNhdGlvbiByZXByZXNlbnRzLiAgRm9yIGV4YW1wbGUsIGlmIHRoaXMgaXMgdGhlCi0gICAgICogbmV3IG1haWwgbm90aWZpY2F0aW9uLCB0aGlzIHdvdWxkIGJlIHRoZSBudW1iZXIgb2YgdW5yZWFkIG1lc3NhZ2VzLiAgVGhpcyBudW1iZXIgaXMKLSAgICAgKiBiZSBzdXBlcmltcG9zZWQgb3ZlciB0aGUgaWNvbiBpbiB0aGUgc3RhdHVzIGJhci4gIElmIHRoZSBudW1iZXIgaXMgMCBvciBuZWdhdGl2ZSwgaXQKLSAgICAgKiBpcyBub3Qgc2hvd24gaW4gdGhlIHN0YXR1cyBiYXIuCisgICAgICogVGhlIG51bWJlciBvZiBldmVudHMgdGhhdCB0aGlzIG5vdGlmaWNhdGlvbiByZXByZXNlbnRzLiAgRm9yIGV4YW1wbGUsIGluIGEgbmV3IG1haWwKKyAgICAgKiBub3RpZmljYXRpb24sIHRoaXMgY291bGQgYmUgdGhlIG51bWJlciBvZiB1bnJlYWQgbWVzc2FnZXMuICBUaGlzIG51bWJlciBpcyBzdXBlcmltcG9zZWQgb3ZlcgorICAgICAqIHRoZSBpY29uIGluIHRoZSBzdGF0dXMgYmFyLiAgSWYgdGhlIG51bWJlciBpcyAwIG9yIG5lZ2F0aXZlLCBpdCBpcyBub3Qgc2hvd24gaW4gdGhlIHN0YXR1cworICAgICAqIGJhci4KICAgICAgKi8KICAgICBwdWJsaWMgaW50IG51bWJlcjsKIApAQCAtMTA5LDEzICsxMDksMjIgQEAKICAgICBwdWJsaWMgUGVuZGluZ0ludGVudCBkZWxldGVJbnRlbnQ7CiAKICAgICAvKioKKyAgICAgKiBBbiBpbnRlbnQgdG8gbGF1bmNoIGluc3RlYWQgb2YgcG9zdGluZyB0aGUgbm90aWZpY2F0aW9uIHRvIHRoZSBzdGF0dXMgYmFyLiBPbmx5IGZvciB1c2Ugd2l0aAorICAgICAqIGV4dHJlbWVseSBoaWdoLXByaW9yaXR5IG5vdGlmaWNhdGlvbnMgZGVtYW5kaW5nIHRoZSB1c2VyJ3MgYXR0ZW50aW9uLCBzdWNoIGFzIGFuIGluY29taW5nCisgICAgICogY2FsbCAoaGFuZGxlZCBpbiB0aGUgY29yZSBBbmRyb2lkIFBob25lIGFwcCB3aXRoIGEgZnVsbC1zY3JlZW4gQWN0aXZpdHkpLgorICAgICAqIFVzZSB3aXRoIHtAbGluayAjRkxBR19ISUdIX1BSSU9SSVRZfSB0byBlbnN1cmUgdGhhdCB0aGlzIG5vdGlmaWNhdGlvbiB3aWxsIHJlYWNoIHRoZSB1c2VyCisgICAgICogZXZlbiB3aGVuIG90aGVyIG5vdGlmaWNhdGlvbnMgYXJlIHN1cHByZXNzZWQuCisgICAgICovCisgICAgcHVibGljIFBlbmRpbmdJbnRlbnQgZnVsbFNjcmVlbkludGVudDsKKworICAgIC8qKgogICAgICAqIFRleHQgdG8gc2Nyb2xsIGFjcm9zcyB0aGUgc2NyZWVuIHdoZW4gdGhpcyBpdGVtIGlzIGFkZGVkIHRvCiAgICAgICogdGhlIHN0YXR1cyBiYXIuCiAgICAgICovCiAgICAgcHVibGljIENoYXJTZXF1ZW5jZSB0aWNrZXJUZXh0OwogCiAgICAgLyoqCi0gICAgICogVGhlIHZpZXcgdGhhdCBzaG93cyB3aGVuIHRoaXMgbm90aWZpY2F0aW9uIGlzIHNob3duIGluIHRoZSBleHBhbmRlZCBzdGF0dXMgYmFyLgorICAgICAqIFRoZSB2aWV3IHRoYXQgd2lsbCByZXByZXNlbnQgdGhpcyBub3RpZmljYXRpb24gaW4gdGhlIGV4cGFuZGVkIHN0YXR1cyBiYXIuCiAgICAgICovCiAgICAgcHVibGljIFJlbW90ZVZpZXdzIGNvbnRlbnRWaWV3OwogCkBAIC0yNjQsNiArMjczLDE0IEBACiAgICAgICovCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRkxBR19GT1JFR1JPVU5EX1NFUlZJQ0UgPSAweDAwMDAwMDQwOwogCisgICAgLyoqCisgICAgICogQml0IHRvIGJlIGJpdHdpc2Utb3JlZCBpbnRvIHRoZSB7QGxpbmsgI2ZsYWdzfSBmaWVsZCB0aGF0IHNob3VsZCBiZSBzZXQgaWYgdGhpcyBub3RpZmljYXRpb24KKyAgICAgKiByZXByZXNlbnRzIGEgaGlnaC1wcmlvcml0eSBldmVudCB0aGF0IG1heSBiZSBzaG93biB0byB0aGUgdXNlciBldmVuIGlmIG5vdGlmaWNhdGlvbnMgYXJlCisgICAgICogb3RoZXJ3aXNlIHVuYXZhaWxhYmxlICh0aGF0IGlzLCB3aGVuIHRoZSBzdGF0dXMgYmFyIGlzIGhpZGRlbikuIFRoaXMgZmxhZyBpcyBpZGVhbGx5IHVzZWQKKyAgICAgKiBpbiBjb25qdW5jdGlvbiB3aXRoIHtAbGluayAjZnVsbFNjcmVlbkludGVudH0uCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRkxBR19ISUdIX1BSSU9SSVRZID0gMHgwMDAwMDA4MDsKKwogICAgIHB1YmxpYyBpbnQgZmxhZ3M7CiAKICAgICAvKioKQEAgLTMzOSw2ICszNTYsNDkgQEAKICAgICAgICAgbGVkT25NUyA9IHBhcmNlbC5yZWFkSW50KCk7CiAgICAgICAgIGxlZE9mZk1TID0gcGFyY2VsLnJlYWRJbnQoKTsKICAgICAgICAgaWNvbkxldmVsID0gcGFyY2VsLnJlYWRJbnQoKTsKKworICAgICAgICBpZiAocGFyY2VsLnJlYWRJbnQoKSAhPSAwKSB7CisgICAgICAgICAgICBmdWxsU2NyZWVuSW50ZW50ID0gUGVuZGluZ0ludGVudC5DUkVBVE9SLmNyZWF0ZUZyb21QYXJjZWwocGFyY2VsKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBOb3RpZmljYXRpb24gY2xvbmUoKSB7CisgICAgICAgIE5vdGlmaWNhdGlvbiB0aGF0ID0gbmV3IE5vdGlmaWNhdGlvbigpOworCisgICAgICAgIHRoYXQud2hlbiA9IHRoaXMud2hlbjsKKyAgICAgICAgdGhhdC5pY29uID0gdGhpcy5pY29uOworICAgICAgICB0aGF0Lm51bWJlciA9IHRoaXMubnVtYmVyOworCisgICAgICAgIC8vIFBlbmRpbmdJbnRlbnRzIGFyZSBnbG9iYWwsIHNvIHRoZXJlJ3Mgbm8gcmVhc29uIChvciB3YXkpIHRvIGNsb25lIHRoZW0uCisgICAgICAgIHRoYXQuY29udGVudEludGVudCA9IHRoaXMuY29udGVudEludGVudDsKKyAgICAgICAgdGhhdC5kZWxldGVJbnRlbnQgPSB0aGlzLmRlbGV0ZUludGVudDsKKyAgICAgICAgdGhhdC5mdWxsU2NyZWVuSW50ZW50ID0gdGhpcy5mdWxsU2NyZWVuSW50ZW50OworCisgICAgICAgIGlmICh0aGlzLnRpY2tlclRleHQgIT0gbnVsbCkgeworICAgICAgICAgICAgdGhhdC50aWNrZXJUZXh0ID0gdGhpcy50aWNrZXJUZXh0LnRvU3RyaW5nKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRoaXMuY29udGVudFZpZXcgIT0gbnVsbCkgeworICAgICAgICAgICAgdGhhdC5jb250ZW50VmlldyA9IHRoaXMuY29udGVudFZpZXcuY2xvbmUoKTsKKyAgICAgICAgfQorICAgICAgICB0aGF0Lmljb25MZXZlbCA9IHRoYXQuaWNvbkxldmVsOworICAgICAgICB0aGF0LnNvdW5kID0gdGhpcy5zb3VuZDsgLy8gYW5kcm9pZC5uZXQuVXJpIGlzIGltbXV0YWJsZQorICAgICAgICB0aGF0LmF1ZGlvU3RyZWFtVHlwZSA9IHRoaXMuYXVkaW9TdHJlYW1UeXBlOworCisgICAgICAgIGZpbmFsIGxvbmdbXSB2aWJyYXRlID0gdGhpcy52aWJyYXRlOworICAgICAgICBpZiAodmlicmF0ZSAhPSBudWxsKSB7CisgICAgICAgICAgICBmaW5hbCBpbnQgTiA9IHZpYnJhdGUubGVuZ3RoOworICAgICAgICAgICAgZmluYWwgbG9uZ1tdIHZpYiA9IHRoYXQudmlicmF0ZSA9IG5ldyBsb25nW05dOworICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weSh2aWJyYXRlLCAwLCB2aWIsIDAsIE4pOworICAgICAgICB9CisKKyAgICAgICAgdGhhdC5sZWRBUkdCID0gdGhpcy5sZWRBUkdCOworICAgICAgICB0aGF0LmxlZE9uTVMgPSB0aGlzLmxlZE9uTVM7CisgICAgICAgIHRoYXQubGVkT2ZmTVMgPSB0aGlzLmxlZE9mZk1TOworICAgICAgICB0aGF0LmRlZmF1bHRzID0gdGhpcy5kZWZhdWx0czsKKyAgICAgICAgCisgICAgICAgIHRoYXQuZmxhZ3MgPSB0aGlzLmZsYWdzOworCisgICAgICAgIHJldHVybiB0aGF0OwogICAgIH0KIAogICAgIHB1YmxpYyBpbnQgZGVzY3JpYmVDb250ZW50cygpIHsKQEAgLTM5NSw2ICs0NTUsMTMgQEAKICAgICAgICAgcGFyY2VsLndyaXRlSW50KGxlZE9uTVMpOwogICAgICAgICBwYXJjZWwud3JpdGVJbnQobGVkT2ZmTVMpOwogICAgICAgICBwYXJjZWwud3JpdGVJbnQoaWNvbkxldmVsKTsKKworICAgICAgICBpZiAoZnVsbFNjcmVlbkludGVudCAhPSBudWxsKSB7CisgICAgICAgICAgICBwYXJjZWwud3JpdGVJbnQoMSk7CisgICAgICAgICAgICBmdWxsU2NyZWVuSW50ZW50LndyaXRlVG9QYXJjZWwocGFyY2VsLCAwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHBhcmNlbC53cml0ZUludCgwKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIC8qKgpAQCAtNDgwLDYgKzU0NywxMSBAQAogICAgICAgICB9CiAgICAgICAgIHNiLmFwcGVuZCgiLGRlZmF1bHRzPTB4Iik7CiAgICAgICAgIHNiLmFwcGVuZChJbnRlZ2VyLnRvSGV4U3RyaW5nKHRoaXMuZGVmYXVsdHMpKTsKKyAgICAgICAgc2IuYXBwZW5kKCIsZmxhZ3M9MHgiKTsKKyAgICAgICAgc2IuYXBwZW5kKEludGVnZXIudG9IZXhTdHJpbmcodGhpcy5mbGFncykpOworICAgICAgICBpZiAoKHRoaXMuZmxhZ3MgJiBGTEFHX0hJR0hfUFJJT1JJVFkpICE9IDApIHsKKyAgICAgICAgICAgIHNiLmFwcGVuZCgiISEhMSFvbmUhIik7CisgICAgICAgIH0KICAgICAgICAgc2IuYXBwZW5kKCIpIik7CiAgICAgICAgIHJldHVybiBzYi50b1N0cmluZygpOwogICAgIH0KZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9TdGF0dXNCYXJNYW5hZ2VyLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9hcHAvU3RhdHVzQmFyTWFuYWdlci5qYXZhCmluZGV4IDcyZWM2MTYuLmRlNTQ0ZmIgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL2FwcC9TdGF0dXNCYXJNYW5hZ2VyLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvYXBwL1N0YXR1c0Jhck1hbmFnZXIuamF2YQpAQCAtMjMsNiArMjMsOCBAQAogaW1wb3J0IGFuZHJvaWQub3MuSUJpbmRlcjsKIGltcG9ydCBhbmRyb2lkLm9zLlNlcnZpY2VNYW5hZ2VyOwogCitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuc3RhdHVzYmFyLklTdGF0dXNCYXJTZXJ2aWNlOworCiAvKioKICAqIEFsbG93cyBhbiBhcHAgdG8gY29udHJvbCB0aGUgc3RhdHVzIGJhci4KICAqCkBAIC01OCwxMiArNjAsMTIgQEAKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBESVNBQkxFX05PTkUgPSAweDAwMDAwMDAwOwogCiAgICAgcHJpdmF0ZSBDb250ZXh0IG1Db250ZXh0OwotICAgIHByaXZhdGUgSVN0YXR1c0JhciBtU2VydmljZTsKKyAgICBwcml2YXRlIElTdGF0dXNCYXJTZXJ2aWNlIG1TZXJ2aWNlOwogICAgIHByaXZhdGUgSUJpbmRlciBtVG9rZW4gPSBuZXcgQmluZGVyKCk7CiAKICAgICBTdGF0dXNCYXJNYW5hZ2VyKENvbnRleHQgY29udGV4dCkgewogICAgICAgICBtQ29udGV4dCA9IGNvbnRleHQ7Ci0gICAgICAgIG1TZXJ2aWNlID0gSVN0YXR1c0Jhci5TdHViLmFzSW50ZXJmYWNlKAorICAgICAgICBtU2VydmljZSA9IElTdGF0dXNCYXJTZXJ2aWNlLlN0dWIuYXNJbnRlcmZhY2UoCiAgICAgICAgICAgICAgICAgU2VydmljZU1hbmFnZXIuZ2V0U2VydmljZShDb250ZXh0LlNUQVRVU19CQVJfU0VSVklDRSkpOwogICAgIH0KIApAQCAtODUsNyArODcsNyBAQAogICAgICAqLwogICAgIHB1YmxpYyB2b2lkIGV4cGFuZCgpIHsKICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIG1TZXJ2aWNlLmFjdGl2YXRlKCk7CisgICAgICAgICAgICBtU2VydmljZS5leHBhbmQoKTsKICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGV4KSB7CiAgICAgICAgICAgICAvLyBzeXN0ZW0gcHJvY2VzcyBpcyBkZWFkIGFueXdheS4KICAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKGV4KTsKQEAgLTk3LDQ2ICs5OSwzNCBAQAogICAgICAqLwogICAgIHB1YmxpYyB2b2lkIGNvbGxhcHNlKCkgewogICAgICAgICB0cnkgewotICAgICAgICAgICAgbVNlcnZpY2UuZGVhY3RpdmF0ZSgpOwotICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZXgpIHsKLSAgICAgICAgICAgIC8vIHN5c3RlbSBwcm9jZXNzIGlzIGRlYWQgYW55d2F5LgotICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oZXgpOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIC8qKgotICAgICAqIFRvZ2dsZSB0aGUgc3RhdHVzIGJhci4KLSAgICAgKi8KLSAgICBwdWJsaWMgdm9pZCB0b2dnbGUoKSB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBtU2VydmljZS50b2dnbGUoKTsKKyAgICAgICAgICAgIG1TZXJ2aWNlLmNvbGxhcHNlKCk7CiAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBleCkgewogICAgICAgICAgICAgLy8gc3lzdGVtIHByb2Nlc3MgaXMgZGVhZCBhbnl3YXkuCiAgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbihleCk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwdWJsaWMgSUJpbmRlciBhZGRJY29uKFN0cmluZyBzbG90LCBpbnQgaWNvbklkLCBpbnQgaWNvbkxldmVsKSB7CisgICAgcHVibGljIHZvaWQgc2V0SWNvbihTdHJpbmcgc2xvdCwgaW50IGljb25JZCwgaW50IGljb25MZXZlbCkgewogICAgICAgICB0cnkgewotICAgICAgICAgICAgcmV0dXJuIG1TZXJ2aWNlLmFkZEljb24oc2xvdCwgbUNvbnRleHQuZ2V0UGFja2FnZU5hbWUoKSwgaWNvbklkLCBpY29uTGV2ZWwpOworICAgICAgICAgICAgbVNlcnZpY2Uuc2V0SWNvbihzbG90LCBtQ29udGV4dC5nZXRQYWNrYWdlTmFtZSgpLCBpY29uSWQsIGljb25MZXZlbCk7CiAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBleCkgewogICAgICAgICAgICAgLy8gc3lzdGVtIHByb2Nlc3MgaXMgZGVhZCBhbnl3YXkuCiAgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbihleCk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwdWJsaWMgdm9pZCB1cGRhdGVJY29uKElCaW5kZXIga2V5LCBTdHJpbmcgc2xvdCwgaW50IGljb25JZCwgaW50IGljb25MZXZlbCkgeworICAgIHB1YmxpYyB2b2lkIHJlbW92ZUljb24oU3RyaW5nIHNsb3QpIHsKICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIG1TZXJ2aWNlLnVwZGF0ZUljb24oa2V5LCBzbG90LCBtQ29udGV4dC5nZXRQYWNrYWdlTmFtZSgpLCBpY29uSWQsIGljb25MZXZlbCk7CisgICAgICAgICAgICBtU2VydmljZS5yZW1vdmVJY29uKHNsb3QpOwogICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZXgpIHsKICAgICAgICAgICAgIC8vIHN5c3RlbSBwcm9jZXNzIGlzIGRlYWQgYW55d2F5LgogICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oZXgpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgcHVibGljIHZvaWQgcmVtb3ZlSWNvbihJQmluZGVyIGtleSkgeworICAgIHB1YmxpYyB2b2lkIHNldEljb25WaXNpYmlsaXR5KFN0cmluZyBzbG90LCBib29sZWFuIHZpc2libGUpIHsKICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIG1TZXJ2aWNlLnJlbW92ZUljb24oa2V5KTsKKyAgICAgICAgICAgIG1TZXJ2aWNlLnNldEljb25WaXNpYmlsaXR5KHNsb3QsIHZpc2libGUpOwogICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZXgpIHsKICAgICAgICAgICAgIC8vIHN5c3RlbSBwcm9jZXNzIGlzIGRlYWQgYW55d2F5LgogICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oZXgpOwpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvYXBwd2lkZ2V0L0FwcFdpZGdldEhvc3QuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL2FwcHdpZGdldC9BcHBXaWRnZXRIb3N0LmphdmEKaW5kZXggODhhZGFiZC4uYjJmYzEzZiAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvYXBwd2lkZ2V0L0FwcFdpZGdldEhvc3QuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9hcHB3aWRnZXQvQXBwV2lkZ2V0SG9zdC5qYXZhCkBAIC0yMzcsNyArMjM3LDcgQEAKICAgICAgICAgICAgIHYgPSBtVmlld3MuZ2V0KGFwcFdpZGdldElkKTsKICAgICAgICAgfQogICAgICAgICBpZiAodiAhPSBudWxsKSB7Ci0gICAgICAgICAgICB2LnVwZGF0ZUFwcFdpZGdldChudWxsLCBBcHBXaWRnZXRIb3N0Vmlldy5VUERBVEVfRkxBR1NfUkVTRVQpOworICAgICAgICAgICAgdi5yZXNldEFwcFdpZGdldChhcHBXaWRnZXQpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yNDcsNyArMjQ3LDcgQEAKICAgICAgICAgICAgIHYgPSBtVmlld3MuZ2V0KGFwcFdpZGdldElkKTsKICAgICAgICAgfQogICAgICAgICBpZiAodiAhPSBudWxsKSB7Ci0gICAgICAgICAgICB2LnVwZGF0ZUFwcFdpZGdldCh2aWV3cywgMCk7CisgICAgICAgICAgICB2LnVwZGF0ZUFwcFdpZGdldCh2aWV3cyk7CiAgICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9hcHB3aWRnZXQvQXBwV2lkZ2V0SG9zdFZpZXcuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL2FwcHdpZGdldC9BcHBXaWRnZXRIb3N0Vmlldy5qYXZhCmluZGV4IDUzNzUxOTMuLmIzM2IwOTcgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL2FwcHdpZGdldC9BcHBXaWRnZXRIb3N0Vmlldy5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL2FwcHdpZGdldC9BcHBXaWRnZXRIb3N0Vmlldy5qYXZhCkBAIC00Niw4ICs0Niw2IEBACiAgICAgc3RhdGljIGZpbmFsIGJvb2xlYW4gTE9HRCA9IGZhbHNlOwogICAgIHN0YXRpYyBmaW5hbCBib29sZWFuIENST1NTRkFERSA9IGZhbHNlOwogCi0gICAgc3RhdGljIGZpbmFsIGludCBVUERBVEVfRkxBR1NfUkVTRVQgPSAweDAwMDAwMDAxOwotCiAgICAgc3RhdGljIGZpbmFsIGludCBWSUVXX01PREVfTk9JTklUID0gMDsKICAgICBzdGF0aWMgZmluYWwgaW50IFZJRVdfTU9ERV9DT05URU5UID0gMTsKICAgICBzdGF0aWMgZmluYWwgaW50IFZJRVdfTU9ERV9FUlJPUiA9IDI7CkBAIC0xMDIsNyArMTAwLDcgQEAKICAgICAgICAgbUFwcFdpZGdldElkID0gYXBwV2lkZ2V0SWQ7CiAgICAgICAgIG1JbmZvID0gaW5mbzsKICAgICB9Ci0gICAgCisKICAgICBwdWJsaWMgaW50IGdldEFwcFdpZGdldElkKCkgewogICAgICAgICByZXR1cm4gbUFwcFdpZGdldElkOwogICAgIH0KQEAgLTE0OCwyMSArMTQ2LDIyIEBACiAgICAgfQogCiAgICAgLyoqCisgICAgICogVXBkYXRlIHRoZSBBcHBXaWRnZXRQcm92aWRlckluZm8gZm9yIHRoaXMgdmlldywgYW5kIHJlc2V0IGl0IHRvIHRoZQorICAgICAqIGluaXRpYWwgbGF5b3V0LgorICAgICAqLworICAgIHZvaWQgcmVzZXRBcHBXaWRnZXQoQXBwV2lkZ2V0UHJvdmlkZXJJbmZvIGluZm8pIHsKKyAgICAgICAgbUluZm8gPSBpbmZvOworICAgICAgICBtVmlld01vZGUgPSBWSUVXX01PREVfTk9JTklUOworICAgICAgICB1cGRhdGVBcHBXaWRnZXQobnVsbCk7CisgICAgfQorCisgICAgLyoqCiAgICAgICogUHJvY2VzcyBhIHNldCBvZiB7QGxpbmsgUmVtb3RlVmlld3N9IGNvbWluZyBpbiBhcyBhbiB1cGRhdGUgZnJvbSB0aGUKICAgICAgKiBBcHBXaWRnZXQgcHJvdmlkZXIuIFdpbGwgYW5pbWF0ZSBpbnRvIHRoZXNlIG5ldyB2aWV3cyBhcyBuZWVkZWQKICAgICAgKi8KICAgICBwdWJsaWMgdm9pZCB1cGRhdGVBcHBXaWRnZXQoUmVtb3RlVmlld3MgcmVtb3RlVmlld3MpIHsKLSAgICAgICAgdXBkYXRlQXBwV2lkZ2V0KHJlbW90ZVZpZXdzLCAwKTsKLSAgICB9CisgICAgICAgIGlmIChMT0dEKSBMb2cuZChUQUcsICJ1cGRhdGVBcHBXaWRnZXQgY2FsbGVkIG1PbGQ9IiArIG1PbGQpOwogCi0gICAgdm9pZCB1cGRhdGVBcHBXaWRnZXQoUmVtb3RlVmlld3MgcmVtb3RlVmlld3MsIGludCBmbGFncykgewotICAgICAgICBpZiAoTE9HRCkgTG9nLmQoVEFHLCAidXBkYXRlQXBwV2lkZ2V0IGNhbGxlZCBtT2xkPSIgKyBtT2xkICsgIiBmbGFncz0weCIKLSAgICAgICAgICAgICAgICArIEludGVnZXIudG9IZXhTdHJpbmcoZmxhZ3MpKTsKLQotICAgICAgICBpZiAoKGZsYWdzICYgVVBEQVRFX0ZMQUdTX1JFU0VUKSAhPSAwKSB7Ci0gICAgICAgICAgICBtVmlld01vZGUgPSBWSUVXX01PREVfTk9JTklUOwotICAgICAgICB9Ci0gICAgICAgIAogICAgICAgICBib29sZWFuIHJlY3ljbGVkID0gZmFsc2U7CiAgICAgICAgIFZpZXcgY29udGVudCA9IG51bGw7CiAgICAgICAgIEV4Y2VwdGlvbiBleGNlcHRpb24gPSBudWxsOwpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvYmx1ZXRvb3RoL0JsdWV0b290aERldmljZVByb2ZpbGVTdGF0ZS5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvYmx1ZXRvb3RoL0JsdWV0b290aERldmljZVByb2ZpbGVTdGF0ZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlNjU1ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9ibHVldG9vdGgvQmx1ZXRvb3RoRGV2aWNlUHJvZmlsZVN0YXRlLmphdmEKQEAgLTAsMCArMSw2NjUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGFuZHJvaWQuYmx1ZXRvb3RoOworCitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkJyb2FkY2FzdFJlY2VpdmVyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudEZpbHRlcjsKK2ltcG9ydCBhbmRyb2lkLm9zLk1lc3NhZ2U7CitpbXBvcnQgYW5kcm9pZC5zZXJ2ZXIuQmx1ZXRvb3RoQTJkcFNlcnZpY2U7CitpbXBvcnQgYW5kcm9pZC5zZXJ2ZXIuQmx1ZXRvb3RoU2VydmljZTsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOworCitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudXRpbC5IaWVyYXJjaGljYWxTdGF0ZTsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC51dGlsLkhpZXJhcmNoaWNhbFN0YXRlTWFjaGluZTsKKworLyoqCisgKiBUaGlzIGNsYXNzIGlzIHRoZSBQcm9maWxlIGNvbm5lY3Rpb24gc3RhdGUgbWFjaGluZSBhc3NvY2lhdGVkIHdpdGggYSByZW1vdGUKKyAqIGRldmljZS4gV2hlbiB0aGUgZGV2aWNlIGJvbmRzIGFuIGluc3RhbmNlIG9mIHRoaXMgY2xhc3MgaXMgY3JlYXRlZC4KKyAqIFRoaXMgdHJhY2tzIGluY29taW5nIGFuZCBvdXRnb2luZyBjb25uZWN0aW9ucyBvZiBhbGwgdGhlIHByb2ZpbGVzLiBJbmNvbWluZworICogY29ubmVjdGlvbnMgYXJlIHByZWZlcnJlZCBvdmVyIG91dGdvaW5nIGNvbm5lY3Rpb25zIGFuZCBIRlAgcHJlZmVycmVkIG92ZXIKKyAqIEEyRFAuIFdoZW4gdGhlIGRldmljZSBpcyB1bmJvbmRlZCwgdGhlIGluc3RhbmNlIGlzIHJlbW92ZWQuCisgKgorICogU3RhdGVzOgorICoge0BsaW5rIEJvbmRlZERldmljZX06IFRoaXMgc3RhdGUgcmVwcmVzZW50cyBhIGJvbmRlZCBkZXZpY2UuIFdoZW4gaW4gdGhpcworICogc3RhdGUgbm9uZSBvZiB0aGUgcHJvZmlsZXMgYXJlIGluIHRyYW5zaXRpb24gc3RhdGVzLgorICoKKyAqIHtAbGluayBPdXRnb2luZ0hhbmRzZnJlZX06IEhhbmRzZnJlZSBwcm9maWxlIGNvbm5lY3Rpb24gaXMgaW4gYSB0cmFuc2l0aW9uCisgKiBzdGF0ZSBiZWNhdXNlIG9mIGEgb3V0Z29pbmcgQ29ubmVjdCBvciBEaXNjb25uZWN0LgorICoKKyAqIHtAbGluayBJbmNvbWluZ0hhbmRzZnJlZX06IEhhbmRzZnJlZSBwcm9maWxlIGNvbm5lY3Rpb24gaXMgaW4gYSB0cmFuc2l0aW9uCisgKiBzdGF0ZSBiZWNhdXNlIG9mIGEgaW5jb21pbmcgQ29ubmVjdCBvciBEaXNjb25uZWN0LgorICoKKyAqIHtAbGluayBJbmNvbWluZ0EyZHB9OiBBMmRwIHByb2ZpbGUgY29ubmVjdGlvbiBpcyBpbiBhIHRyYW5zaXRpb24KKyAqIHN0YXRlIGJlY2F1c2Ugb2YgYSBpbmNvbWluZyBDb25uZWN0IG9yIERpc2Nvbm5lY3QuCisgKgorICoge0BsaW5rIE91dGdvaW5nQTJkcH06IEEyZHAgcHJvZmlsZSBjb25uZWN0aW9uIGlzIGluIGEgdHJhbnNpdGlvbgorICogc3RhdGUgYmVjYXVzZSBvZiBhIG91dGdvaW5nIENvbm5lY3Qgb3IgRGlzY29ubmVjdC4KKyAqCisgKiBUb2RvKCk6IFdyaXRlIHRlc3RzIGZvciB0aGlzIGNsYXNzLCB3aGVuIHRoZSBBbmRyb2lkIE1vY2sgc3VwcG9ydCBpcyBjb21wbGV0ZWQuCisgKiBAaGlkZQorICovCitwdWJsaWMgZmluYWwgY2xhc3MgQmx1ZXRvb3RoRGV2aWNlUHJvZmlsZVN0YXRlIGV4dGVuZHMgSGllcmFyY2hpY2FsU3RhdGVNYWNoaW5lIHsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gIkJsdWV0b290aERldmljZVByb2ZpbGVTdGF0ZSI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBEQkcgPSB0cnVlOyAvL1NUT1BTSElQIC0gQ2hhbmdlIHRvIGZhbHNlCisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDT05ORUNUX0hGUF9PVVRHT0lORyA9IDE7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ09OTkVDVF9IRlBfSU5DT01JTkcgPSAyOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IENPTk5FQ1RfQTJEUF9PVVRHT0lORyA9IDM7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ09OTkVDVF9BMkRQX0lOQ09NSU5HID0gNDsKKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IERJU0NPTk5FQ1RfSEZQX09VVEdPSU5HID0gNTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRElTQ09OTkVDVF9IRlBfSU5DT01JTkcgPSA2OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IERJU0NPTk5FQ1RfQTJEUF9PVVRHT0lORyA9IDc7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRElTQ09OTkVDVF9BMkRQX0lOQ09NSU5HID0gODsKKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFVOUEFJUiA9IDk7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQVVUT19DT05ORUNUX1BST0ZJTEVTID0gMTA7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVFJBTlNJVElPTl9UT19TVEFCTEUgPSAxMTsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBBVVRPX0NPTk5FQ1RfREVMQVkgPSA2MDAwOyAvLyA2IHNlY3MKKworICAgIHByaXZhdGUgQm9uZGVkRGV2aWNlIG1Cb25kZWREZXZpY2UgPSBuZXcgQm9uZGVkRGV2aWNlKCk7CisgICAgcHJpdmF0ZSBPdXRnb2luZ0hhbmRzZnJlZSBtT3V0Z29pbmdIYW5kc2ZyZWUgPSBuZXcgT3V0Z29pbmdIYW5kc2ZyZWUoKTsKKyAgICBwcml2YXRlIEluY29taW5nSGFuZHNmcmVlIG1JbmNvbWluZ0hhbmRzZnJlZSA9IG5ldyBJbmNvbWluZ0hhbmRzZnJlZSgpOworICAgIHByaXZhdGUgSW5jb21pbmdBMmRwIG1JbmNvbWluZ0EyZHAgPSBuZXcgSW5jb21pbmdBMmRwKCk7CisgICAgcHJpdmF0ZSBPdXRnb2luZ0EyZHAgbU91dGdvaW5nQTJkcCA9IG5ldyBPdXRnb2luZ0EyZHAoKTsKKworICAgIHByaXZhdGUgQ29udGV4dCBtQ29udGV4dDsKKyAgICBwcml2YXRlIEJsdWV0b290aFNlcnZpY2UgbVNlcnZpY2U7CisgICAgcHJpdmF0ZSBCbHVldG9vdGhBMmRwU2VydmljZSBtQTJkcFNlcnZpY2U7CisgICAgcHJpdmF0ZSBCbHVldG9vdGhIZWFkc2V0ICBtSGVhZHNldFNlcnZpY2U7CisgICAgcHJpdmF0ZSBib29sZWFuIG1IZWFkc2V0U2VydmljZUNvbm5lY3RlZDsKKworICAgIHByaXZhdGUgQmx1ZXRvb3RoRGV2aWNlIG1EZXZpY2U7CisgICAgcHJpdmF0ZSBpbnQgbUhlYWRzZXRTdGF0ZTsKKyAgICBwcml2YXRlIGludCBtQTJkcFN0YXRlOworCisgICAgcHJpdmF0ZSBCcm9hZGNhc3RSZWNlaXZlciBtQnJvYWRjYXN0UmVjZWl2ZXIgPSBuZXcgQnJvYWRjYXN0UmVjZWl2ZXIoKSB7CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBvblJlY2VpdmUoQ29udGV4dCBjb250ZXh0LCBJbnRlbnQgaW50ZW50KSB7CisgICAgICAgICAgICBTdHJpbmcgYWN0aW9uID0gaW50ZW50LmdldEFjdGlvbigpOworICAgICAgICAgICAgQmx1ZXRvb3RoRGV2aWNlIGRldmljZSA9IGludGVudC5nZXRQYXJjZWxhYmxlRXh0cmEoQmx1ZXRvb3RoRGV2aWNlLkVYVFJBX0RFVklDRSk7CisgICAgICAgICAgICBpZiAoIWRldmljZS5lcXVhbHMobURldmljZSkpIHJldHVybjsKKworICAgICAgICAgICAgaWYgKGFjdGlvbi5lcXVhbHMoQmx1ZXRvb3RoSGVhZHNldC5BQ1RJT05fU1RBVEVfQ0hBTkdFRCkpIHsKKyAgICAgICAgICAgICAgICBpbnQgbmV3U3RhdGUgPSBpbnRlbnQuZ2V0SW50RXh0cmEoQmx1ZXRvb3RoSGVhZHNldC5FWFRSQV9TVEFURSwgMCk7CisgICAgICAgICAgICAgICAgaW50IG9sZFN0YXRlID0gaW50ZW50LmdldEludEV4dHJhKEJsdWV0b290aEhlYWRzZXQuRVhUUkFfUFJFVklPVVNfU1RBVEUsIDApOworICAgICAgICAgICAgICAgIGludCBpbml0aWF0b3IgPSBpbnRlbnQuZ2V0SW50RXh0cmEoCisgICAgICAgICAgICAgICAgICAgIEJsdWV0b290aEhlYWRzZXQuRVhUUkFfRElTQ09OTkVDVF9JTklUSUFUT1IsCisgICAgICAgICAgICAgICAgICAgIEJsdWV0b290aEhlYWRzZXQuTE9DQUxfRElTQ09OTkVDVCk7CisgICAgICAgICAgICAgICAgbUhlYWRzZXRTdGF0ZSA9IG5ld1N0YXRlOworICAgICAgICAgICAgICAgIGlmIChuZXdTdGF0ZSA9PSBCbHVldG9vdGhIZWFkc2V0LlNUQVRFX0RJU0NPTk5FQ1RFRCAmJgorICAgICAgICAgICAgICAgICAgICBpbml0aWF0b3IgPT0gQmx1ZXRvb3RoSGVhZHNldC5SRU1PVEVfRElTQ09OTkVDVCkgeworICAgICAgICAgICAgICAgICAgICBzZW5kTWVzc2FnZShESVNDT05ORUNUX0hGUF9JTkNPTUlORyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChuZXdTdGF0ZSA9PSBCbHVldG9vdGhIZWFkc2V0LlNUQVRFX0NPTk5FQ1RFRCB8fAorICAgICAgICAgICAgICAgICAgICBuZXdTdGF0ZSA9PSBCbHVldG9vdGhIZWFkc2V0LlNUQVRFX0RJU0NPTk5FQ1RFRCkgeworICAgICAgICAgICAgICAgICAgICBzZW5kTWVzc2FnZShUUkFOU0lUSU9OX1RPX1NUQUJMRSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKEJsdWV0b290aEEyZHAuQUNUSU9OX1NJTktfU1RBVEVfQ0hBTkdFRCkpIHsKKyAgICAgICAgICAgICAgICBpbnQgbmV3U3RhdGUgPSBpbnRlbnQuZ2V0SW50RXh0cmEoQmx1ZXRvb3RoQTJkcC5FWFRSQV9TSU5LX1NUQVRFLCAwKTsKKyAgICAgICAgICAgICAgICBpbnQgb2xkU3RhdGUgPSBpbnRlbnQuZ2V0SW50RXh0cmEoQmx1ZXRvb3RoQTJkcC5FWFRSQV9QUkVWSU9VU19TSU5LX1NUQVRFLCAwKTsKKyAgICAgICAgICAgICAgICBtQTJkcFN0YXRlID0gbmV3U3RhdGU7CisgICAgICAgICAgICAgICAgaWYgKChvbGRTdGF0ZSA9PSBCbHVldG9vdGhBMmRwLlNUQVRFX0NPTk5FQ1RFRCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkU3RhdGUgPT0gQmx1ZXRvb3RoQTJkcC5TVEFURV9QTEFZSU5HKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3U3RhdGUgPT0gQmx1ZXRvb3RoQTJkcC5TVEFURV9ESVNDT05ORUNURUQpIHsKKyAgICAgICAgICAgICAgICAgICAgc2VuZE1lc3NhZ2UoRElTQ09OTkVDVF9BMkRQX0lOQ09NSU5HKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG5ld1N0YXRlID09IEJsdWV0b290aEEyZHAuU1RBVEVfQ09OTkVDVEVEIHx8CisgICAgICAgICAgICAgICAgICAgIG5ld1N0YXRlID09IEJsdWV0b290aEEyZHAuU1RBVEVfRElTQ09OTkVDVEVEKSB7CisgICAgICAgICAgICAgICAgICAgIHNlbmRNZXNzYWdlKFRSQU5TSVRJT05fVE9fU1RBQkxFKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbi5lcXVhbHMoQmx1ZXRvb3RoRGV2aWNlLkFDVElPTl9BQ0xfQ09OTkVDVEVEKSkgeworICAgICAgICAgICAgICAgIGlmICghZ2V0Q3VycmVudFN0YXRlKCkuZXF1YWxzKG1Cb25kZWREZXZpY2UpKSB7CisgICAgICAgICAgICAgICAgICAgIExvZy5lKFRBRywgIlN0YXRlIGlzOiAiICsgZ2V0Q3VycmVudFN0YXRlKCkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIE1lc3NhZ2UgbXNnID0gbmV3IE1lc3NhZ2UoKTsKKyAgICAgICAgICAgICAgICBtc2cud2hhdCA9IEFVVE9fQ09OTkVDVF9QUk9GSUxFUzsKKyAgICAgICAgICAgICAgICBzZW5kTWVzc2FnZURlbGF5ZWQobXNnLCBBVVRPX0NPTk5FQ1RfREVMQVkpOworICAgICAgICAgICAgfQorICAgICAgfQorICAgIH07CisKKyAgICBwcml2YXRlIGJvb2xlYW4gaXNQaG9uZURvY2tlZChCbHVldG9vdGhEZXZpY2UgYXV0b0Nvbm5lY3REZXZpY2UpIHsKKyAgICAgIC8vIFRoaXMgd29ya3Mgb25seSBiZWNhdXNlIHRoZXNlIGJyb2FkY2FzdCBpbnRlbnRzIGFyZSAic3RpY2t5IgorICAgICAgSW50ZW50IGkgPSBtQ29udGV4dC5yZWdpc3RlclJlY2VpdmVyKG51bGwsIG5ldyBJbnRlbnRGaWx0ZXIoSW50ZW50LkFDVElPTl9ET0NLX0VWRU5UKSk7CisgICAgICBpZiAoaSAhPSBudWxsKSB7CisgICAgICAgICAgaW50IHN0YXRlID0gaS5nZXRJbnRFeHRyYShJbnRlbnQuRVhUUkFfRE9DS19TVEFURSwgSW50ZW50LkVYVFJBX0RPQ0tfU1RBVEVfVU5ET0NLRUQpOworICAgICAgICAgIGlmIChzdGF0ZSAhPSBJbnRlbnQuRVhUUkFfRE9DS19TVEFURV9VTkRPQ0tFRCkgeworICAgICAgICAgICAgICBCbHVldG9vdGhEZXZpY2UgZGV2aWNlID0gaS5nZXRQYXJjZWxhYmxlRXh0cmEoQmx1ZXRvb3RoRGV2aWNlLkVYVFJBX0RFVklDRSk7CisgICAgICAgICAgICAgIGlmIChkZXZpY2UgIT0gbnVsbCAmJiBhdXRvQ29ubmVjdERldmljZS5lcXVhbHMoZGV2aWNlKSkgeworICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICB9CisgICAgICByZXR1cm4gZmFsc2U7CisgIH0KKworICAgIHB1YmxpYyBCbHVldG9vdGhEZXZpY2VQcm9maWxlU3RhdGUoQ29udGV4dCBjb250ZXh0LCBTdHJpbmcgYWRkcmVzcywKKyAgICAgICAgICBCbHVldG9vdGhTZXJ2aWNlIHNlcnZpY2UsIEJsdWV0b290aEEyZHBTZXJ2aWNlIGEyZHBTZXJ2aWNlKSB7CisgICAgICAgIHN1cGVyKGFkZHJlc3MpOworICAgICAgICBtQ29udGV4dCA9IGNvbnRleHQ7CisgICAgICAgIG1EZXZpY2UgPSBuZXcgQmx1ZXRvb3RoRGV2aWNlKGFkZHJlc3MpOworICAgICAgICBtU2VydmljZSA9IHNlcnZpY2U7CisgICAgICAgIG1BMmRwU2VydmljZSA9IGEyZHBTZXJ2aWNlOworCisgICAgICAgIGFkZFN0YXRlKG1Cb25kZWREZXZpY2UpOworICAgICAgICBhZGRTdGF0ZShtT3V0Z29pbmdIYW5kc2ZyZWUpOworICAgICAgICBhZGRTdGF0ZShtSW5jb21pbmdIYW5kc2ZyZWUpOworICAgICAgICBhZGRTdGF0ZShtSW5jb21pbmdBMmRwKTsKKyAgICAgICAgYWRkU3RhdGUobU91dGdvaW5nQTJkcCk7CisgICAgICAgIHNldEluaXRpYWxTdGF0ZShtQm9uZGVkRGV2aWNlKTsKKworICAgICAgICBJbnRlbnRGaWx0ZXIgZmlsdGVyID0gbmV3IEludGVudEZpbHRlcigpOworICAgICAgICAvLyBGaW5lLWdyYWluZWQgc3RhdGUgYnJvYWRjYXN0cworICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKEJsdWV0b290aEEyZHAuQUNUSU9OX1NJTktfU1RBVEVfQ0hBTkdFRCk7CisgICAgICAgIGZpbHRlci5hZGRBY3Rpb24oQmx1ZXRvb3RoSGVhZHNldC5BQ1RJT05fU1RBVEVfQ0hBTkdFRCk7CisgICAgICAgIGZpbHRlci5hZGRBY3Rpb24oQmx1ZXRvb3RoRGV2aWNlLkFDVElPTl9BQ0xfQ09OTkVDVEVEKTsKKworICAgICAgICBtQ29udGV4dC5yZWdpc3RlclJlY2VpdmVyKG1Ccm9hZGNhc3RSZWNlaXZlciwgZmlsdGVyKTsKKworICAgICAgICBIZWFkc2V0U2VydmljZUxpc3RlbmVyIGwgPSBuZXcgSGVhZHNldFNlcnZpY2VMaXN0ZW5lcigpOworICAgIH0KKworICAgIHByaXZhdGUgY2xhc3MgSGVhZHNldFNlcnZpY2VMaXN0ZW5lciBpbXBsZW1lbnRzIEJsdWV0b290aEhlYWRzZXQuU2VydmljZUxpc3RlbmVyIHsKKyAgICAgICAgcHVibGljIEhlYWRzZXRTZXJ2aWNlTGlzdGVuZXIoKSB7CisgICAgICAgICAgICBtSGVhZHNldFNlcnZpY2UgPSBuZXcgQmx1ZXRvb3RoSGVhZHNldChtQ29udGV4dCwgdGhpcyk7CisgICAgICAgIH0KKyAgICAgICAgcHVibGljIHZvaWQgb25TZXJ2aWNlQ29ubmVjdGVkKCkgeworICAgICAgICAgICAgc3luY2hyb25pemVkKEJsdWV0b290aERldmljZVByb2ZpbGVTdGF0ZS50aGlzKSB7CisgICAgICAgICAgICAgICAgbUhlYWRzZXRTZXJ2aWNlQ29ubmVjdGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgdm9pZCBvblNlcnZpY2VEaXNjb25uZWN0ZWQoKSB7CisgICAgICAgICAgICBzeW5jaHJvbml6ZWQoQmx1ZXRvb3RoRGV2aWNlUHJvZmlsZVN0YXRlLnRoaXMpIHsKKyAgICAgICAgICAgICAgICBtSGVhZHNldFNlcnZpY2VDb25uZWN0ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgY2xhc3MgQm9uZGVkRGV2aWNlIGV4dGVuZHMgSGllcmFyY2hpY2FsU3RhdGUgeworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHJvdGVjdGVkIHZvaWQgZW50ZXIoKSB7CisgICAgICAgICAgICBsb2coIkVudGVyaW5nIEFDTCBDb25uZWN0ZWQgc3RhdGUgd2l0aDogIiArIGdldEN1cnJlbnRNZXNzYWdlKCkud2hhdCk7CisgICAgICAgICAgICBNZXNzYWdlIG0gPSBuZXcgTWVzc2FnZSgpOworICAgICAgICAgICAgbS5jb3B5RnJvbShnZXRDdXJyZW50TWVzc2FnZSgpKTsKKyAgICAgICAgICAgIHNlbmRNZXNzYWdlQXRGcm9udE9mUXVldWUobSk7CisgICAgICAgIH0KKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHByb3RlY3RlZCBib29sZWFuIHByb2Nlc3NNZXNzYWdlKE1lc3NhZ2UgbWVzc2FnZSkgeworICAgICAgICAgICAgbG9nKCJBQ0wgQ29ubmVjdGVkIFN0YXRlIC0+IFByb2Nlc3NpbmcgTWVzc2FnZTogIiArIG1lc3NhZ2Uud2hhdCk7CisgICAgICAgICAgICBzd2l0Y2gobWVzc2FnZS53aGF0KSB7CisgICAgICAgICAgICAgICAgY2FzZSBDT05ORUNUX0hGUF9PVVRHT0lORzoKKyAgICAgICAgICAgICAgICBjYXNlIERJU0NPTk5FQ1RfSEZQX09VVEdPSU5HOgorICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uVG8obU91dGdvaW5nSGFuZHNmcmVlKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBDT05ORUNUX0hGUF9JTkNPTUlORzoKKyAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvblRvKG1JbmNvbWluZ0hhbmRzZnJlZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgRElTQ09OTkVDVF9IRlBfSU5DT01JTkc6CisgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25UbyhtSW5jb21pbmdIYW5kc2ZyZWUpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIENPTk5FQ1RfQTJEUF9PVVRHT0lORzoKKyAgICAgICAgICAgICAgICBjYXNlIERJU0NPTk5FQ1RfQTJEUF9PVVRHT0lORzoKKyAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvblRvKG1PdXRnb2luZ0EyZHApOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIENPTk5FQ1RfQTJEUF9JTkNPTUlORzoKKyAgICAgICAgICAgICAgICBjYXNlIERJU0NPTk5FQ1RfQTJEUF9JTkNPTUlORzoKKyAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvblRvKG1JbmNvbWluZ0EyZHApOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFVOUEFJUjoKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1IZWFkc2V0U3RhdGUgIT0gQmx1ZXRvb3RoSGVhZHNldC5TVEFURV9ESVNDT05ORUNURUQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRNZXNzYWdlKERJU0NPTk5FQ1RfSEZQX09VVEdPSU5HKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVyTWVzc2FnZShtZXNzYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1BMmRwU3RhdGUgIT0gQmx1ZXRvb3RoQTJkcC5TVEFURV9ESVNDT05ORUNURUQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRNZXNzYWdlKERJU0NPTk5FQ1RfQTJEUF9PVVRHT0lORyk7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZlck1lc3NhZ2UobWVzc2FnZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBwcm9jZXNzQ29tbWFuZChVTlBBSVIpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEFVVE9fQ09OTkVDVF9QUk9GSUxFUzoKKyAgICAgICAgICAgICAgICAgICAgaWYgKGlzUGhvbmVEb2NrZWQobURldmljZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvbid0IGF1dG8gY29ubmVjdCB0byBkb2Nrcy4KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFtSGVhZHNldFNlcnZpY2VDb25uZWN0ZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVyTWVzc2FnZShtZXNzYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtSGVhZHNldFNlcnZpY2UuZ2V0UHJpb3JpdHkobURldmljZSkgPT0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJsdWV0b290aEhlYWRzZXQuUFJJT1JJVFlfQVVUT19DT05ORUNUICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhbUhlYWRzZXRTZXJ2aWNlLmlzQ29ubmVjdGVkKG1EZXZpY2UpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUhlYWRzZXRTZXJ2aWNlLmNvbm5lY3RIZWFkc2V0KG1EZXZpY2UpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1BMmRwU2VydmljZSAhPSBudWxsICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQTJkcFNlcnZpY2UuZ2V0U2lua1ByaW9yaXR5KG1EZXZpY2UpID09CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCbHVldG9vdGhBMmRwLlBSSU9SSVRZX0FVVE9fQ09OTkVDVCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUEyZHBTZXJ2aWNlLmdldENvbm5lY3RlZFNpbmtzKCkubGVuZ3RoID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQTJkcFNlcnZpY2UuY29ubmVjdFNpbmsobURldmljZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBUUkFOU0lUSU9OX1RPX1NUQUJMRToKKyAgICAgICAgICAgICAgICAgICAgLy8gaWdub3JlLgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTk9UX0hBTkRMRUQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gSEFORExFRDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgY2xhc3MgT3V0Z29pbmdIYW5kc2ZyZWUgZXh0ZW5kcyBIaWVyYXJjaGljYWxTdGF0ZSB7CisgICAgICAgIHByaXZhdGUgYm9vbGVhbiBtU3RhdHVzID0gZmFsc2U7CisgICAgICAgIHByaXZhdGUgaW50IG1Db21tYW5kOworCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwcm90ZWN0ZWQgdm9pZCBlbnRlcigpIHsKKyAgICAgICAgICAgIGxvZygiRW50ZXJpbmcgT3V0Z29pbmdIYW5kc2ZyZWUgc3RhdGUgd2l0aDogIiArIGdldEN1cnJlbnRNZXNzYWdlKCkud2hhdCk7CisgICAgICAgICAgICBtQ29tbWFuZCA9IGdldEN1cnJlbnRNZXNzYWdlKCkud2hhdDsKKyAgICAgICAgICAgIGlmIChtQ29tbWFuZCAhPSBDT05ORUNUX0hGUF9PVVRHT0lORyAmJgorICAgICAgICAgICAgICAgIG1Db21tYW5kICE9IERJU0NPTk5FQ1RfSEZQX09VVEdPSU5HKSB7CisgICAgICAgICAgICAgICAgTG9nLmUoVEFHLCAiRXJyb3I6IE91dGdvaW5nSGFuZHNmcmVlIHN0YXRlIHdpdGggY29tbWFuZDoiICsgbUNvbW1hbmQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbVN0YXR1cyA9IHByb2Nlc3NDb21tYW5kKG1Db21tYW5kKTsKKyAgICAgICAgICAgIGlmICghbVN0YXR1cykgc2VuZE1lc3NhZ2UoVFJBTlNJVElPTl9UT19TVEFCTEUpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHByb3RlY3RlZCBib29sZWFuIHByb2Nlc3NNZXNzYWdlKE1lc3NhZ2UgbWVzc2FnZSkgeworICAgICAgICAgICAgbG9nKCJPdXRnb2luZ0hhbmRzZnJlZSBTdGF0ZSAtPiBQcm9jZXNzaW5nIE1lc3NhZ2U6ICIgKyBtZXNzYWdlLndoYXQpOworICAgICAgICAgICAgTWVzc2FnZSBkZWZlck1zZyA9IG5ldyBNZXNzYWdlKCk7CisgICAgICAgICAgICBpbnQgY29tbWFuZCA9IG1lc3NhZ2Uud2hhdDsKKyAgICAgICAgICAgIHN3aXRjaChjb21tYW5kKSB7CisgICAgICAgICAgICAgICAgY2FzZSBDT05ORUNUX0hGUF9PVVRHT0lORzoKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNvbW1hbmQgIT0gbUNvbW1hbmQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIERpc2Nvbm5lY3QgZm9sbG93ZWQgYnkgYSBjb25uZWN0IC0gZGVmZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVyTWVzc2FnZShtZXNzYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIENPTk5FQ1RfSEZQX0lOQ09NSU5HOgorICAgICAgICAgICAgICAgICAgICBpZiAobUNvbW1hbmQgPT0gQ09OTkVDVF9IRlBfT1VUR09JTkcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIENhbmNlbCBvdXRnb2luZyBjb25uZWN0LCBhY2NlcHQgaW5jb21pbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbmNlbENvbW1hbmQoQ09OTkVDVF9IRlBfT1VUR09JTkcpOworICAgICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvblRvKG1JbmNvbWluZ0hhbmRzZnJlZSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIGRvbmUgdGhlIGRpc2Nvbm5lY3QgYnV0IHdlIGFyZSBub3QKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN1cmUgd2hpY2ggc3RhdGUgd2UgYXJlIGluIGF0IHRoaXMgcG9pbnQuCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZlck1lc3NhZ2UobWVzc2FnZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBDT05ORUNUX0EyRFBfSU5DT01JTkc6CisgICAgICAgICAgICAgICAgICAgIC8vIGFjY2VwdCBpbmNvbWluZyBBMkRQLCByZXRyeSBIRlBfT1VUR09JTkcKKyAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvblRvKG1JbmNvbWluZ0EyZHApOworCisgICAgICAgICAgICAgICAgICAgIGlmIChtU3RhdHVzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZlck1zZy53aGF0ID0gbUNvbW1hbmQ7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZlck1lc3NhZ2UoZGVmZXJNc2cpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQ09OTkVDVF9BMkRQX09VVEdPSU5HOgorICAgICAgICAgICAgICAgICAgICBkZWZlck1lc3NhZ2UobWVzc2FnZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgRElTQ09OTkVDVF9IRlBfT1VUR09JTkc6CisgICAgICAgICAgICAgICAgICAgIGlmIChtQ29tbWFuZCA9PSBDT05ORUNUX0hGUF9PVVRHT0lORykgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2FuY2VsIG91dGdvaW5nIGNvbm5lY3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbmNlbENvbW1hbmQoQ09OTkVDVF9IRlBfT1VUR09JTkcpOworICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0NvbW1hbmQoRElTQ09OTkVDVF9IRlBfT1VUR09JTkcpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIC8vIGVsc2UgaWdub3JlCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgRElTQ09OTkVDVF9IRlBfSU5DT01JTkc6CisgICAgICAgICAgICAgICAgICAgIC8vIFdoZW4gdGhpcyBoYXBwZW5zIHRoZSBzb2NrZXQgd291bGQgYmUgY2xvc2VkIGFuZCB0aGUgaGVhZHNldAorICAgICAgICAgICAgICAgICAgICAvLyBzdGF0ZSBtb3ZlZCB0byBESVNDT05ORUNURUQsIGNhbmNlbCB0aGUgb3V0Z29pbmcgdGhyZWFkLgorICAgICAgICAgICAgICAgICAgICAvLyBpZiBpdCBzdGlsbCBpcyBpbiBDT05ORUNUSU5HIHN0YXRlCisgICAgICAgICAgICAgICAgICAgIGNhbmNlbENvbW1hbmQoQ09OTkVDVF9IRlBfT1VUR09JTkcpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIERJU0NPTk5FQ1RfQTJEUF9PVVRHT0lORzoKKyAgICAgICAgICAgICAgICAgICAgZGVmZXJNZXNzYWdlKG1lc3NhZ2UpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIERJU0NPTk5FQ1RfQTJEUF9JTkNPTUlORzoKKyAgICAgICAgICAgICAgICAgICAgLy8gQmx1ZXogd2lsbCBoYW5kbGUgdGhlIGRpc2Nvbm5lY3QuIElmIGJlY2F1c2Ugb2YgdGhpcyB0aGUgb3V0Z29pbmcKKyAgICAgICAgICAgICAgICAgICAgLy8gaGFuZHNmcmVlIGNvbm5lY3Rpb24gaGFzIGZhaWxlZCwgdGhlbiByZXRyeS4KKyAgICAgICAgICAgICAgICAgICAgaWYgKG1TdGF0dXMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgZGVmZXJNc2cud2hhdCA9IG1Db21tYW5kOworICAgICAgICAgICAgICAgICAgICAgICBkZWZlck1lc3NhZ2UoZGVmZXJNc2cpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgVU5QQUlSOgorICAgICAgICAgICAgICAgIGNhc2UgQVVUT19DT05ORUNUX1BST0ZJTEVTOgorICAgICAgICAgICAgICAgICAgICBkZWZlck1lc3NhZ2UobWVzc2FnZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgVFJBTlNJVElPTl9UT19TVEFCTEU6CisgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25UbyhtQm9uZGVkRGV2aWNlKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5PVF9IQU5ETEVEOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIEhBTkRMRUQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIGNsYXNzIEluY29taW5nSGFuZHNmcmVlIGV4dGVuZHMgSGllcmFyY2hpY2FsU3RhdGUgeworICAgICAgICBwcml2YXRlIGJvb2xlYW4gbVN0YXR1cyA9IGZhbHNlOworICAgICAgICBwcml2YXRlIGludCBtQ29tbWFuZDsKKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHJvdGVjdGVkIHZvaWQgZW50ZXIoKSB7CisgICAgICAgICAgICBsb2coIkVudGVyaW5nIEluY29taW5nSGFuZHNmcmVlIHN0YXRlIHdpdGg6ICIgKyBnZXRDdXJyZW50TWVzc2FnZSgpLndoYXQpOworICAgICAgICAgICAgbUNvbW1hbmQgPSBnZXRDdXJyZW50TWVzc2FnZSgpLndoYXQ7CisgICAgICAgICAgICBpZiAobUNvbW1hbmQgIT0gQ09OTkVDVF9IRlBfSU5DT01JTkcgJiYKKyAgICAgICAgICAgICAgICBtQ29tbWFuZCAhPSBESVNDT05ORUNUX0hGUF9JTkNPTUlORykgeworICAgICAgICAgICAgICAgIExvZy5lKFRBRywgIkVycm9yOiBJbmNvbWluZ0hhbmRzZnJlZSBzdGF0ZSB3aXRoIGNvbW1hbmQ6IiArIG1Db21tYW5kKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1TdGF0dXMgPSBwcm9jZXNzQ29tbWFuZChtQ29tbWFuZCk7CisgICAgICAgICAgICBpZiAoIW1TdGF0dXMpIHNlbmRNZXNzYWdlKFRSQU5TSVRJT05fVE9fU1RBQkxFKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwcm90ZWN0ZWQgYm9vbGVhbiBwcm9jZXNzTWVzc2FnZShNZXNzYWdlIG1lc3NhZ2UpIHsKKyAgICAgICAgICAgIGxvZygiSW5jb21pbmdIYW5kc2ZyZWUgU3RhdGUgLT4gUHJvY2Vzc2luZyBNZXNzYWdlOiAiICsgbWVzc2FnZS53aGF0KTsKKyAgICAgICAgICAgIHN3aXRjaChtZXNzYWdlLndoYXQpIHsKKyAgICAgICAgICAgICAgICBjYXNlIENPTk5FQ1RfSEZQX09VVEdPSU5HOgorICAgICAgICAgICAgICAgICAgICBkZWZlck1lc3NhZ2UobWVzc2FnZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQ09OTkVDVF9IRlBfSU5DT01JTkc6CisgICAgICAgICAgICAgICAgICAgIC8vIElnbm9yZQorICAgICAgICAgICAgICAgICAgICBMb2cuZShUQUcsICJFcnJvcjogSW5jb21pbmcgY29ubmVjdGlvbiB3aXRoIGEgcGVuZGluZyBpbmNvbWluZyBjb25uZWN0aW9uIik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQ09OTkVDVF9BMkRQX0lOQ09NSU5HOgorICAgICAgICAgICAgICAgICAgICAvLyBTZXJpYWxpemUgdGhlIGNvbW1hbmRzLgorICAgICAgICAgICAgICAgICAgICBkZWZlck1lc3NhZ2UobWVzc2FnZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQ09OTkVDVF9BMkRQX09VVEdPSU5HOgorICAgICAgICAgICAgICAgICAgICBkZWZlck1lc3NhZ2UobWVzc2FnZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgRElTQ09OTkVDVF9IRlBfT1VUR09JTkc6CisgICAgICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IGtub3cgYXQgd2hhdCBzdGF0ZSB3ZSBhcmUgaW4gdGhlIGluY29taW5nIEhGUCBjb25uZWN0aW9uIHN0YXRlLgorICAgICAgICAgICAgICAgICAgICAvLyBXZSBjYW4gYmUgY2hhbmdpbmcgZnJvbSBESVNDT05ORUNURUQgdG8gQ09OTkVDVElORywgb3IKKyAgICAgICAgICAgICAgICAgICAgLy8gZnJvbSBDT05ORUNUSU5HIHRvIENPTk5FQ1RFRCwgc28gc2VyaWFsaXppbmcgdGhpcyBjb21tYW5kIGlzCisgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBzYWZlc3Qgb3B0aW9uLgorICAgICAgICAgICAgICAgICAgICBkZWZlck1lc3NhZ2UobWVzc2FnZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgRElTQ09OTkVDVF9IRlBfSU5DT01JTkc6CisgICAgICAgICAgICAgICAgICAgIC8vIE5vdGhpbmcgdG8gZG8gaGVyZSwgd2Ugd2lsbCBhbHJlYWR5IGJlIERJU0NPTk5FQ1RFRAorICAgICAgICAgICAgICAgICAgICAvLyBieSB0aGlzIHBvaW50LgorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIERJU0NPTk5FQ1RfQTJEUF9PVVRHT0lORzoKKyAgICAgICAgICAgICAgICAgICAgZGVmZXJNZXNzYWdlKG1lc3NhZ2UpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIERJU0NPTk5FQ1RfQTJEUF9JTkNPTUlORzoKKyAgICAgICAgICAgICAgICAgICAgLy8gQmx1ZXogaGFuZGxlcyBpbmNvbWluZyBBMkRQIGRpc2Nvbm5lY3QuCisgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgY2F1c2VzIGluY29taW5nIEhGUCB0byBmYWlsLCBpdCBpcyBtb3JlIG9mIGEgaGVhZHNldCBwcm9ibGVtCisgICAgICAgICAgICAgICAgICAgIC8vIHNpbmNlIGJvdGggY29ubmVjdGlvbnMgYXJlIGluY29taW5nIG9uZXMuCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgVU5QQUlSOgorICAgICAgICAgICAgICAgIGNhc2UgQVVUT19DT05ORUNUX1BST0ZJTEVTOgorICAgICAgICAgICAgICAgICAgICBkZWZlck1lc3NhZ2UobWVzc2FnZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgVFJBTlNJVElPTl9UT19TVEFCTEU6CisgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25UbyhtQm9uZGVkRGV2aWNlKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5PVF9IQU5ETEVEOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIEhBTkRMRUQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIGNsYXNzIE91dGdvaW5nQTJkcCBleHRlbmRzIEhpZXJhcmNoaWNhbFN0YXRlIHsKKyAgICAgICAgcHJpdmF0ZSBib29sZWFuIG1TdGF0dXMgPSBmYWxzZTsKKyAgICAgICAgcHJpdmF0ZSBpbnQgbUNvbW1hbmQ7CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHByb3RlY3RlZCB2b2lkIGVudGVyKCkgeworICAgICAgICAgICAgbG9nKCJFbnRlcmluZyBPdXRnb2luZ0EyZHAgc3RhdGUgd2l0aDogIiArIGdldEN1cnJlbnRNZXNzYWdlKCkud2hhdCk7CisgICAgICAgICAgICBtQ29tbWFuZCA9IGdldEN1cnJlbnRNZXNzYWdlKCkud2hhdDsKKyAgICAgICAgICAgIGlmIChtQ29tbWFuZCAhPSBDT05ORUNUX0EyRFBfT1VUR09JTkcgJiYKKyAgICAgICAgICAgICAgICBtQ29tbWFuZCAhPSBESVNDT05ORUNUX0EyRFBfT1VUR09JTkcpIHsKKyAgICAgICAgICAgICAgICBMb2cuZShUQUcsICJFcnJvcjogT3V0Z29pbmdBMkRQIHN0YXRlIHdpdGggY29tbWFuZDoiICsgbUNvbW1hbmQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbVN0YXR1cyA9IHByb2Nlc3NDb21tYW5kKG1Db21tYW5kKTsKKyAgICAgICAgICAgIGlmICghbVN0YXR1cykgc2VuZE1lc3NhZ2UoVFJBTlNJVElPTl9UT19TVEFCTEUpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHByb3RlY3RlZCBib29sZWFuIHByb2Nlc3NNZXNzYWdlKE1lc3NhZ2UgbWVzc2FnZSkgeworICAgICAgICAgICAgbG9nKCJPdXRnb2luZ0EyZHAgU3RhdGUtPlByb2Nlc3NpbmcgTWVzc2FnZTogIiArIG1lc3NhZ2Uud2hhdCk7CisgICAgICAgICAgICBNZXNzYWdlIGRlZmVyTXNnID0gbmV3IE1lc3NhZ2UoKTsKKyAgICAgICAgICAgIHN3aXRjaChtZXNzYWdlLndoYXQpIHsKKyAgICAgICAgICAgICAgICBjYXNlIENPTk5FQ1RfSEZQX09VVEdPSU5HOgorICAgICAgICAgICAgICAgICAgICBwcm9jZXNzQ29tbWFuZChDT05ORUNUX0hGUF9PVVRHT0lORyk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgY2FuY2VsIEEyRFAgb3V0Z29pbmcgYXMgdGhlcmUgaXMgbm8gZ3VhcmFudGVlIGl0CisgICAgICAgICAgICAgICAgICAgIC8vIHdpbGwgZ2V0IGNhbmNlbGVkLgorICAgICAgICAgICAgICAgICAgICAvLyBJdCBtaWdodCBhbHJlYWR5IGJlIGNvbm5lY3RlZCBidXQgd2UgbWlnaHQgbm90IGhhdmUgZ290IHRoZQorICAgICAgICAgICAgICAgICAgICAvLyBBMkRQX1NJTktfU1RBVEVfQ0hBTkdFLiBIZW5jZSwgbm8gcG9pbnQgZGlzY29ubmVjdGluZyBoZXJlLgorICAgICAgICAgICAgICAgICAgICAvLyBUaGUgd29yc3QgY2FzZSwgdGhlIGNvbm5lY3Rpb24gd2lsbCBmYWlsLCByZXRyeS4KKyAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHNhbWUgYXBwbGllcyB0byBEaXNjb25uZWN0aW5nIGFuIEEyRFAgY29ubmVjdGlvbi4KKyAgICAgICAgICAgICAgICAgICAgaWYgKG1TdGF0dXMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVyTXNnLndoYXQgPSBtQ29tbWFuZDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmVyTWVzc2FnZShkZWZlck1zZyk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBDT05ORUNUX0hGUF9JTkNPTUlORzoKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc0NvbW1hbmQoQ09OTkVDVF9IRlBfSU5DT01JTkcpOworCisgICAgICAgICAgICAgICAgICAgIC8vIERvbid0IGNhbmNlbCBBMkRQIG91dGdvaW5nIGFzIHRoZXJlIGlzIG5vIGd1YXJhbnRlZQorICAgICAgICAgICAgICAgICAgICAvLyBpdCB3aWxsIGdldCBjYW5jZWxlZC4KKyAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHdvcnN0IGNhc2UsIHRoZSBjb25uZWN0aW9uIHdpbGwgZmFpbCwgcmV0cnkuCisgICAgICAgICAgICAgICAgICAgIGlmIChtU3RhdHVzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZlck1zZy53aGF0ID0gbUNvbW1hbmQ7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZlck1lc3NhZ2UoZGVmZXJNc2cpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgQ09OTkVDVF9BMkRQX0lOQ09NSU5HOgorICAgICAgICAgICAgICAgICAgICAvLyBCbHVleiB3aWxsIHRha2UgY2FyZSBvZiBjb25mbGljdHMgYmV0d2VlbiBpbmNvbWluZyBhbmQgb3V0Z29pbmcKKyAgICAgICAgICAgICAgICAgICAgLy8gY29ubmVjdGlvbnMuCisgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25UbyhtSW5jb21pbmdBMmRwKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBDT05ORUNUX0EyRFBfT1VUR09JTkc6CisgICAgICAgICAgICAgICAgICAgIC8vIElnbm9yZQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIERJU0NPTk5FQ1RfSEZQX09VVEdPSU5HOgorICAgICAgICAgICAgICAgICAgICBkZWZlck1lc3NhZ2UobWVzc2FnZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgRElTQ09OTkVDVF9IRlBfSU5DT01JTkc6CisgICAgICAgICAgICAgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQsIHdlIGFyZSBhbHJlYWR5IGRpc2Nvbm5lY3RlZAorICAgICAgICAgICAgICAgICAgICAvLyB3aXRoIEhGUC4gU29tZXRpbWVzIEEyRFAgY29ubmVjdGlvbiBjYW4KKyAgICAgICAgICAgICAgICAgICAgLy8gZmFpbCBkdWUgdG8gdGhlIGRpc2Nvbm5lY3Rpb24gb2YgSEZQLiBTbyBhZGQgYSByZXRyeQorICAgICAgICAgICAgICAgICAgICAvLyBmb3IgdGhlIEEyRFAuCisgICAgICAgICAgICAgICAgICAgIGlmIChtU3RhdHVzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZlck1zZy53aGF0ID0gbUNvbW1hbmQ7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWZlck1lc3NhZ2UoZGVmZXJNc2cpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgRElTQ09OTkVDVF9BMkRQX09VVEdPSU5HOgorICAgICAgICAgICAgICAgICAgICBwcm9jZXNzQ29tbWFuZChESVNDT05ORUNUX0EyRFBfT1VUR09JTkcpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIERJU0NPTk5FQ1RfQTJEUF9JTkNPTUlORzoKKyAgICAgICAgICAgICAgICAgICAgLy8gSWdub3JlLCB3aWxsIGJlIGhhbmRsZWQgYnkgQmx1ZXoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBVTlBBSVI6CisgICAgICAgICAgICAgICAgY2FzZSBBVVRPX0NPTk5FQ1RfUFJPRklMRVM6CisgICAgICAgICAgICAgICAgICAgIGRlZmVyTWVzc2FnZShtZXNzYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBUUkFOU0lUSU9OX1RPX1NUQUJMRToKKyAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvblRvKG1Cb25kZWREZXZpY2UpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTk9UX0hBTkRMRUQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gSEFORExFRDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgY2xhc3MgSW5jb21pbmdBMmRwIGV4dGVuZHMgSGllcmFyY2hpY2FsU3RhdGUgeworICAgICAgICBwcml2YXRlIGJvb2xlYW4gbVN0YXR1cyA9IGZhbHNlOworICAgICAgICBwcml2YXRlIGludCBtQ29tbWFuZDsKKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHJvdGVjdGVkIHZvaWQgZW50ZXIoKSB7CisgICAgICAgICAgICBsb2coIkVudGVyaW5nIEluY29taW5nQTJkcCBzdGF0ZSB3aXRoOiAiICsgZ2V0Q3VycmVudE1lc3NhZ2UoKS53aGF0KTsKKyAgICAgICAgICAgIG1Db21tYW5kID0gZ2V0Q3VycmVudE1lc3NhZ2UoKS53aGF0OworICAgICAgICAgICAgaWYgKG1Db21tYW5kICE9IENPTk5FQ1RfQTJEUF9JTkNPTUlORyAmJgorICAgICAgICAgICAgICAgIG1Db21tYW5kICE9IERJU0NPTk5FQ1RfQTJEUF9JTkNPTUlORykgeworICAgICAgICAgICAgICAgIExvZy5lKFRBRywgIkVycm9yOiBJbmNvbWluZ0EyRFAgc3RhdGUgd2l0aCBjb21tYW5kOiIgKyBtQ29tbWFuZCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtU3RhdHVzID0gcHJvY2Vzc0NvbW1hbmQobUNvbW1hbmQpOworICAgICAgICAgICAgaWYgKCFtU3RhdHVzKSBzZW5kTWVzc2FnZShUUkFOU0lUSU9OX1RPX1NUQUJMRSk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHJvdGVjdGVkIGJvb2xlYW4gcHJvY2Vzc01lc3NhZ2UoTWVzc2FnZSBtZXNzYWdlKSB7CisgICAgICAgICAgICBsb2coIkluY29taW5nQTJkcCBTdGF0ZS0+UHJvY2Vzc2luZyBNZXNzYWdlOiAiICsgbWVzc2FnZS53aGF0KTsKKyAgICAgICAgICAgIE1lc3NhZ2UgZGVmZXJNc2cgPSBuZXcgTWVzc2FnZSgpOworICAgICAgICAgICAgc3dpdGNoKG1lc3NhZ2Uud2hhdCkgeworICAgICAgICAgICAgICAgIGNhc2UgQ09OTkVDVF9IRlBfT1VUR09JTkc6CisgICAgICAgICAgICAgICAgICAgIGRlZmVyTWVzc2FnZShtZXNzYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBDT05ORUNUX0hGUF9JTkNPTUlORzoKKyAgICAgICAgICAgICAgICAgICAgLy8gU2hvdWxkbid0IGhhcHBlbiwgYnV0IHNlcmlhbGl6ZSB0aGUgY29tbWFuZHMuCisgICAgICAgICAgICAgICAgICAgIGRlZmVyTWVzc2FnZShtZXNzYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBDT05ORUNUX0EyRFBfSU5DT01JTkc6CisgICAgICAgICAgICAgICAgICAgIC8vIGlnbm9yZQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIENPTk5FQ1RfQTJEUF9PVVRHT0lORzoKKyAgICAgICAgICAgICAgICAgICAgLy8gRGVmZXIgbWVzc2FnZSBhbmQgcmV0cnkKKyAgICAgICAgICAgICAgICAgICAgZGVmZXJNZXNzYWdlKG1lc3NhZ2UpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIERJU0NPTk5FQ1RfSEZQX09VVEdPSU5HOgorICAgICAgICAgICAgICAgICAgICBkZWZlck1lc3NhZ2UobWVzc2FnZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgRElTQ09OTkVDVF9IRlBfSU5DT01JTkc6CisgICAgICAgICAgICAgICAgICAgIC8vIFNob3VsZG4ndCBoYXBwZW4gYnV0IGlmIGRvZXMsIHdlIGNhbiBoYW5kbGUgaXQuCisgICAgICAgICAgICAgICAgICAgIC8vIERlcGVuZHMgaWYgdGhlIGhlYWRzZXQgY2FuIGhhbmRsZSBpdC4KKyAgICAgICAgICAgICAgICAgICAgLy8gSW5jb21pbmcgQTJEUCB3aWxsIGJlIGhhbmRsZWQgYnkgQmx1ZXosIERpc2Nvbm5lY3QgSEZQCisgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBzb2NrZXQgd291bGQgaGF2ZSBhbHJlYWR5IGJlZW4gY2xvc2VkLgorICAgICAgICAgICAgICAgICAgICAvLyBpZ25vcmUKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBESVNDT05ORUNUX0EyRFBfT1VUR09JTkc6CisgICAgICAgICAgICAgICAgICAgIGRlZmVyTWVzc2FnZShtZXNzYWdlKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBESVNDT05ORUNUX0EyRFBfSU5DT01JTkc6CisgICAgICAgICAgICAgICAgICAgIC8vIElnbm9yZSwgd2lsbCBiZSBoYW5kbGVkIGJ5IEJsdWV6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgVU5QQUlSOgorICAgICAgICAgICAgICAgIGNhc2UgQVVUT19DT05ORUNUX1BST0ZJTEVTOgorICAgICAgICAgICAgICAgICAgICBkZWZlck1lc3NhZ2UobWVzc2FnZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgVFJBTlNJVElPTl9UT19TVEFCTEU6CisgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25UbyhtQm9uZGVkRGV2aWNlKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5PVF9IQU5ETEVEOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIEhBTkRMRUQ7CisgICAgICAgIH0KKyAgICB9CisKKworCisgICAgc3luY2hyb25pemVkIHZvaWQgY2FuY2VsQ29tbWFuZChpbnQgY29tbWFuZCkgeworICAgICAgICBpZiAoY29tbWFuZCA9PSBDT05ORUNUX0hGUF9PVVRHT0lORyApIHsKKyAgICAgICAgICAgIC8vIENhbmNlbCB0aGUgb3V0Z29pbmcgdGhyZWFkLgorICAgICAgICAgICAgaWYgKG1IZWFkc2V0U2VydmljZUNvbm5lY3RlZCkgeworICAgICAgICAgICAgICAgIG1IZWFkc2V0U2VydmljZS5jYW5jZWxDb25uZWN0VGhyZWFkKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBIZWFkc2V0U2VydmljZSBpcyBkb3duLiBQaG9uZSBwcm9jZXNzIG1vc3QgbGlrZWx5IGNyYXNoZWQuCisgICAgICAgICAgICAvLyBUaGUgdGhyZWFkIHdvdWxkIGhhdmUgZ290IGtpbGxlZC4KKyAgICAgICAgfQorICAgIH0KKworICAgIHN5bmNocm9uaXplZCB2b2lkIGRlZmVySGVhZHNldE1lc3NhZ2UoaW50IGNvbW1hbmQpIHsKKyAgICAgICAgTWVzc2FnZSBtc2cgPSBuZXcgTWVzc2FnZSgpOworICAgICAgICBtc2cud2hhdCA9IGNvbW1hbmQ7CisgICAgICAgIGRlZmVyTWVzc2FnZShtc2cpOworICAgIH0KKworICAgIHN5bmNocm9uaXplZCBib29sZWFuIHByb2Nlc3NDb21tYW5kKGludCBjb21tYW5kKSB7CisgICAgICAgIGxvZygiUHJvY2Vzc2luZyBjb21tYW5kOiIgKyBjb21tYW5kKTsKKyAgICAgICAgc3dpdGNoKGNvbW1hbmQpIHsKKyAgICAgICAgICAgIGNhc2UgIENPTk5FQ1RfSEZQX09VVEdPSU5HOgorICAgICAgICAgICAgICAgIGlmIChtSGVhZHNldFNlcnZpY2UgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbUhlYWRzZXRTZXJ2aWNlLmNvbm5lY3RIZWFkc2V0SW50ZXJuYWwobURldmljZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDT05ORUNUX0hGUF9JTkNPTUlORzoKKyAgICAgICAgICAgICAgICBpZiAoIW1IZWFkc2V0U2VydmljZUNvbm5lY3RlZCkgeworICAgICAgICAgICAgICAgICAgICBkZWZlckhlYWRzZXRNZXNzYWdlKGNvbW1hbmQpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobUhlYWRzZXRTdGF0ZSA9PSBCbHVldG9vdGhIZWFkc2V0LlNUQVRFX0NPTk5FQ1RJTkcpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1IZWFkc2V0U2VydmljZS5hY2NlcHRJbmNvbWluZ0Nvbm5lY3QobURldmljZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtSGVhZHNldFN0YXRlID09IEJsdWV0b290aEhlYWRzZXQuU1RBVEVfRElTQ09OTkVDVEVEKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBtSGVhZHNldFNlcnZpY2UuY3JlYXRlSW5jb21pbmdDb25uZWN0KG1EZXZpY2UpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgQ09OTkVDVF9BMkRQX09VVEdPSU5HOgorICAgICAgICAgICAgICAgIGlmIChtQTJkcFNlcnZpY2UgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbUEyZHBTZXJ2aWNlLmNvbm5lY3RTaW5rSW50ZXJuYWwobURldmljZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBDT05ORUNUX0EyRFBfSU5DT01JTkc6CisgICAgICAgICAgICAgICAgLy8gaWdub3JlLCBCbHVleiB0YWtlcyBjYXJlCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICBjYXNlIERJU0NPTk5FQ1RfSEZQX09VVEdPSU5HOgorICAgICAgICAgICAgICAgIGlmICghbUhlYWRzZXRTZXJ2aWNlQ29ubmVjdGVkKSB7CisgICAgICAgICAgICAgICAgICAgIGRlZmVySGVhZHNldE1lc3NhZ2UoY29tbWFuZCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1IZWFkc2V0U2VydmljZS5nZXRQcmlvcml0eShtRGV2aWNlKSA9PQorICAgICAgICAgICAgICAgICAgICAgICAgQmx1ZXRvb3RoSGVhZHNldC5QUklPUklUWV9BVVRPX0NPTk5FQ1QpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1IZWFkc2V0U2VydmljZS5zZXRQcmlvcml0eShtRGV2aWNlLCBCbHVldG9vdGhIZWFkc2V0LlBSSU9SSVRZX09OKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbUhlYWRzZXRTZXJ2aWNlLmRpc2Nvbm5lY3RIZWFkc2V0SW50ZXJuYWwobURldmljZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBESVNDT05ORUNUX0hGUF9JTkNPTUlORzoKKyAgICAgICAgICAgICAgICAvLyBpZ25vcmUKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGNhc2UgRElTQ09OTkVDVF9BMkRQX0lOQ09NSU5HOgorICAgICAgICAgICAgICAgIC8vIGlnbm9yZQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgY2FzZSBESVNDT05ORUNUX0EyRFBfT1VUR09JTkc6CisgICAgICAgICAgICAgICAgaWYgKG1BMmRwU2VydmljZSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChtQTJkcFNlcnZpY2UuZ2V0U2lua1ByaW9yaXR5KG1EZXZpY2UpID09CisgICAgICAgICAgICAgICAgICAgICAgICBCbHVldG9vdGhBMmRwLlBSSU9SSVRZX0FVVE9fQ09OTkVDVCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbUEyZHBTZXJ2aWNlLnNldFNpbmtQcmlvcml0eShtRGV2aWNlLCBCbHVldG9vdGhIZWFkc2V0LlBSSU9SSVRZX09OKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gbUEyZHBTZXJ2aWNlLmRpc2Nvbm5lY3RTaW5rSW50ZXJuYWwobURldmljZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBVTlBBSVI6CisgICAgICAgICAgICAgICAgcmV0dXJuIG1TZXJ2aWNlLnJlbW92ZUJvbmRJbnRlcm5hbChtRGV2aWNlLmdldEFkZHJlc3MoKSk7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIExvZy5lKFRBRywgIkVycm9yOiBVbmtub3duIENvbW1hbmQiKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLypwYWNrYWdlKi8gQmx1ZXRvb3RoRGV2aWNlIGdldERldmljZSgpIHsKKyAgICAgICAgcmV0dXJuIG1EZXZpY2U7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGxvZyhTdHJpbmcgbWVzc2FnZSkgeworICAgICAgICBpZiAoREJHKSB7CisgICAgICAgICAgICBMb2cuaShUQUcsICJEZXZpY2U6IiArIG1EZXZpY2UgKyAiIE1lc3NhZ2U6IiArIG1lc3NhZ2UpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvYmx1ZXRvb3RoL0JsdWV0b290aEhlYWRzZXQuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL2JsdWV0b290aC9CbHVldG9vdGhIZWFkc2V0LmphdmEKaW5kZXggOTVlNjFiNi4uNGE5MWE4YyAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvYmx1ZXRvb3RoL0JsdWV0b290aEhlYWRzZXQuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9ibHVldG9vdGgvQmx1ZXRvb3RoSGVhZHNldC5qYXZhCkBAIC0xODksMTEgKzE4OSwxMSBAQAogICAgICAqIEByZXR1cm4gT25lIG9mIHRoZSBTVEFURV8gcmV0dXJuIGNvZGVzLCBvciBTVEFURV9FUlJPUiBpZiB0aGlzIHByb3h5CiAgICAgICogICAgICAgICBvYmplY3QgaXMgY3VycmVudGx5IG5vdCBjb25uZWN0ZWQgdG8gdGhlIEhlYWRzZXQgc2VydmljZS4KICAgICAgKi8KLSAgICBwdWJsaWMgaW50IGdldFN0YXRlKCkgeworICAgIHB1YmxpYyBpbnQgZ2V0U3RhdGUoQmx1ZXRvb3RoRGV2aWNlIGRldmljZSkgewogICAgICAgICBpZiAoREJHKSBsb2coImdldFN0YXRlKCkiKTsKICAgICAgICAgaWYgKG1TZXJ2aWNlICE9IG51bGwpIHsKICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1TZXJ2aWNlLmdldFN0YXRlKCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1TZXJ2aWNlLmdldFN0YXRlKGRldmljZSk7CiAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkge0xvZy5lKFRBRywgZS50b1N0cmluZygpKTt9CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBMb2cudyhUQUcsICJQcm94eSBub3QgYXR0YWNoZWQgdG8gc2VydmljZSIpOwpAQCAtMjcxLDExICsyNzEsMTEgQEAKICAgICAgKiBiZSBtYWRlIGFzeW5jaG9ybm91cy4gUmV0dXJucyBmYWxzZSBpZiB0aGlzIHByb3h5IG9iamVjdCBpcwogICAgICAqIG5vdCBjdXJyZW50bHkgY29ubmVjdGVkIHRvIHRoZSBIZWFkc2V0IHNlcnZpY2UuCiAgICAgICovCi0gICAgcHVibGljIGJvb2xlYW4gZGlzY29ubmVjdEhlYWRzZXQoKSB7CisgICAgcHVibGljIGJvb2xlYW4gZGlzY29ubmVjdEhlYWRzZXQoQmx1ZXRvb3RoRGV2aWNlIGRldmljZSkgewogICAgICAgICBpZiAoREJHKSBsb2coImRpc2Nvbm5lY3RIZWFkc2V0KCkiKTsKICAgICAgICAgaWYgKG1TZXJ2aWNlICE9IG51bGwpIHsKICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgbVNlcnZpY2UuZGlzY29ubmVjdEhlYWRzZXQoKTsKKyAgICAgICAgICAgICAgICBtU2VydmljZS5kaXNjb25uZWN0SGVhZHNldChkZXZpY2UpOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHtMb2cuZShUQUcsIGUudG9TdHJpbmcoKSk7fQogICAgICAgICB9IGVsc2UgewpAQCAtMzk1LDcgKzM5NSw2IEBACiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLQogICAgIC8qKgogICAgICAqIEluZGljYXRlcyBpZiBjdXJyZW50IHBsYXRmb3JtIHN1cHBvcnRzIHZvaWNlIGRpYWxpbmcgb3ZlciBibHVldG9vdGggU0NPLgogICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB2b2ljZSBkaWFsaW5nIG92ZXIgYmx1ZXRvb3RoIGlzIHN1cHBvcnRlZCwgZmFsc2Ugb3RoZXJ3aXNlLgpAQCAtNDA2LDYgKzQwNSw5MiBAQAogICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuYm9vbC5jb25maWdfYmx1ZXRvb3RoX3Njb19vZmZfY2FsbCk7CiAgICAgfQogCisgICAgLyoqCisgICAgICogQ2FuY2VsIHRoZSBvdXRnb2luZyBjb25uZWN0aW9uLgorICAgICAqIEBoaWRlCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gY2FuY2VsQ29ubmVjdFRocmVhZCgpIHsKKyAgICAgICAgaWYgKERCRykgbG9nKCJjYW5jZWxDb25uZWN0VGhyZWFkIik7CisgICAgICAgIGlmIChtU2VydmljZSAhPSBudWxsKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHJldHVybiBtU2VydmljZS5jYW5jZWxDb25uZWN0VGhyZWFkKCk7CisgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkge0xvZy5lKFRBRywgZS50b1N0cmluZygpKTt9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBMb2cudyhUQUcsICJQcm94eSBub3QgYXR0YWNoZWQgdG8gc2VydmljZSIpOworICAgICAgICAgICAgaWYgKERCRykgTG9nLmQoVEFHLCBMb2cuZ2V0U3RhY2tUcmFjZVN0cmluZyhuZXcgVGhyb3dhYmxlKCkpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLyoqCisgICAgICogQWNjZXB0IHRoZSBpbmNvbWluZyBjb25uZWN0aW9uLgorICAgICAqIEBoaWRlCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gYWNjZXB0SW5jb21pbmdDb25uZWN0KEJsdWV0b290aERldmljZSBkZXZpY2UpIHsKKyAgICAgICAgaWYgKERCRykgbG9nKCJhY2NlcHRJbmNvbWluZ0Nvbm5lY3QiKTsKKyAgICAgICAgaWYgKG1TZXJ2aWNlICE9IG51bGwpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1TZXJ2aWNlLmFjY2VwdEluY29taW5nQ29ubmVjdChkZXZpY2UpOworICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHtMb2cuZShUQUcsIGUudG9TdHJpbmcoKSk7fQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgTG9nLncoVEFHLCAiUHJveHkgbm90IGF0dGFjaGVkIHRvIHNlcnZpY2UiKTsKKyAgICAgICAgICAgIGlmIChEQkcpIExvZy5kKFRBRywgTG9nLmdldFN0YWNrVHJhY2VTdHJpbmcobmV3IFRocm93YWJsZSgpKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8qKgorICAgICAqIENyZWF0ZSB0aGUgY29ubmVjdCB0aHJlYWQgdGhlIGluY29taW5nIGNvbm5lY3Rpb24uCisgICAgICogQGhpZGUKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBjcmVhdGVJbmNvbWluZ0Nvbm5lY3QoQmx1ZXRvb3RoRGV2aWNlIGRldmljZSkgeworICAgICAgICBpZiAoREJHKSBsb2coImNyZWF0ZUluY29taW5nQ29ubmVjdCIpOworICAgICAgICBpZiAobVNlcnZpY2UgIT0gbnVsbCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbVNlcnZpY2UuY3JlYXRlSW5jb21pbmdDb25uZWN0KGRldmljZSk7CisgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkge0xvZy5lKFRBRywgZS50b1N0cmluZygpKTt9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBMb2cudyhUQUcsICJQcm94eSBub3QgYXR0YWNoZWQgdG8gc2VydmljZSIpOworICAgICAgICAgICAgaWYgKERCRykgTG9nLmQoVEFHLCBMb2cuZ2V0U3RhY2tUcmFjZVN0cmluZyhuZXcgVGhyb3dhYmxlKCkpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29ubmVjdCB0byBhIEJsdWV0b290aCBIZWFkc2V0LgorICAgICAqIE5vdGU6IFRoaXMgaXMgYW4gaW50ZXJuYWwgZnVuY3Rpb24gYW5kIHNob3VsZG4ndCBiZSBleHBvc2VkCisgICAgICogQGhpZGUKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBjb25uZWN0SGVhZHNldEludGVybmFsKEJsdWV0b290aERldmljZSBkZXZpY2UpIHsKKyAgICAgICAgaWYgKERCRykgbG9nKCJjb25uZWN0SGVhZHNldEludGVybmFsIik7CisgICAgICAgIGlmIChtU2VydmljZSAhPSBudWxsKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHJldHVybiBtU2VydmljZS5jb25uZWN0SGVhZHNldEludGVybmFsKGRldmljZSk7CisgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkge0xvZy5lKFRBRywgZS50b1N0cmluZygpKTt9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBMb2cudyhUQUcsICJQcm94eSBub3QgYXR0YWNoZWQgdG8gc2VydmljZSIpOworICAgICAgICAgICAgaWYgKERCRykgTG9nLmQoVEFHLCBMb2cuZ2V0U3RhY2tUcmFjZVN0cmluZyhuZXcgVGhyb3dhYmxlKCkpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLyoqCisgICAgICogRGlzY29ubmVjdCBhIEJsdWV0b290aCBIZWFkc2V0LgorICAgICAqIE5vdGU6IFRoaXMgaXMgYW4gaW50ZXJuYWwgZnVuY3Rpb24gYW5kIHNob3VsZG4ndCBiZSBleHBvc2VkCisgICAgICogQGhpZGUKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBkaXNjb25uZWN0SGVhZHNldEludGVybmFsKEJsdWV0b290aERldmljZSBkZXZpY2UpIHsKKyAgICAgICAgaWYgKERCRykgbG9nKCJkaXNjb25uZWN0SGVhZHNldEludGVybmFsIik7CisgICAgICAgIGlmIChtU2VydmljZSAhPSBudWxsKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICByZXR1cm4gbVNlcnZpY2UuZGlzY29ubmVjdEhlYWRzZXRJbnRlcm5hbChkZXZpY2UpOworICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHtMb2cuZShUQUcsIGUudG9TdHJpbmcoKSk7fQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgTG9nLncoVEFHLCAiUHJveHkgbm90IGF0dGFjaGVkIHRvIHNlcnZpY2UiKTsKKyAgICAgICAgICAgIGlmIChEQkcpIExvZy5kKFRBRywgTG9nLmdldFN0YWNrVHJhY2VTdHJpbmcobmV3IFRocm93YWJsZSgpKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KICAgICBwcml2YXRlIFNlcnZpY2VDb25uZWN0aW9uIG1Db25uZWN0aW9uID0gbmV3IFNlcnZpY2VDb25uZWN0aW9uKCkgewogICAgICAgICBwdWJsaWMgdm9pZCBvblNlcnZpY2VDb25uZWN0ZWQoQ29tcG9uZW50TmFtZSBjbGFzc05hbWUsIElCaW5kZXIgc2VydmljZSkgewogICAgICAgICAgICAgaWYgKERCRykgTG9nLmQoVEFHLCAiUHJveHkgb2JqZWN0IGNvbm5lY3RlZCIpOwpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvYmx1ZXRvb3RoL0JsdWV0b290aFByb2ZpbGVTdGF0ZS5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvYmx1ZXRvb3RoL0JsdWV0b290aFByb2ZpbGVTdGF0ZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0NmRjYWEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9ibHVldG9vdGgvQmx1ZXRvb3RoUHJvZmlsZVN0YXRlLmphdmEKQEAgLTAsMCArMSwxNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBhbmRyb2lkLmJsdWV0b290aDsKKworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Ccm9hZGNhc3RSZWNlaXZlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnRGaWx0ZXI7CitpbXBvcnQgYW5kcm9pZC5vcy5NZXNzYWdlOworaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CisKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC51dGlsLkhpZXJhcmNoaWNhbFN0YXRlOworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnV0aWwuSGllcmFyY2hpY2FsU3RhdGVNYWNoaW5lOworCisvKioKKyAqIFRoaXMgc3RhdGUgbWFjaGluZSBpcyB1c2VkIHRvIHNlcmlhbGl6ZSB0aGUgY29ubmVjdGlvbnMKKyAqIHRvIGEgcGFydGljdWxhciBwcm9maWxlLiBDdXJyZW50bHksIHdlIG9ubHkgYWxsb3cgb25lIGRldmljZQorICogdG8gYmUgY29ubmVjdGVkIHRvIGEgcGFydGljdWxhciBwcm9maWxlLgorICogU3RhdGVzOgorICogICAgICB7QGxpbmsgU3RhYmxlU3RhdGV9IDogTm8gcGVuZGluZyBjb21tYW5kcy4gU2VuZCB0aGUKKyAqICAgICAgY29tbWFuZCB0byB0aGUgYXBwcm9wcmlhdGUgcmVtb3RlIGRldmljZSBzcGVjaWZpYyBzdGF0ZSBtYWNoaW5lLgorICoKKyAqICAgICAge0BsaW5rIFBlbmRpbmdDb21tYW5kU3RhdGV9IDogQSBwcm9maWxlIGNvbm5lY3Rpb24gLyBkaXNjb25uZWN0aW9uCisgKiAgICAgIGNvbW1hbmQgaXMgYmVpbmcgZXhlY3V0ZWQuIFRoaXMgd2lsbCByZXN1bHQgaW4gYSBwcm9maWxlIHN0YXRlCisgKiAgICAgIGNoYW5nZS4gRGVmZXIgYWxsIGNvbW1hbmRzLgorICogQGhpZGUKKyAqLworCitwdWJsaWMgY2xhc3MgQmx1ZXRvb3RoUHJvZmlsZVN0YXRlIGV4dGVuZHMgSGllcmFyY2hpY2FsU3RhdGVNYWNoaW5lIHsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIERCRyA9IHRydWU7IC8vIFNUT1BTSElQIC0gY2hhbmdlIHRvIGZhbHNlLgorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSAiQmx1ZXRvb3RoUHJvZmlsZVN0YXRlIjsKKworICAgIHB1YmxpYyBzdGF0aWMgaW50IEhGUCA9IDA7CisgICAgcHVibGljIHN0YXRpYyBpbnQgQTJEUCA9IDE7CisKKyAgICBwcml2YXRlIHN0YXRpYyBpbnQgVFJBTlNJVElPTl9UT19TVEFCTEUgPSAxMDA7CisKKyAgICBwcml2YXRlIGludCBtUHJvZmlsZTsKKyAgICBwcml2YXRlIEJsdWV0b290aERldmljZSBtUGVuZGluZ0RldmljZTsKKyAgICBwcml2YXRlIFBlbmRpbmdDb21tYW5kU3RhdGUgbVBlbmRpbmdDb21tYW5kU3RhdGUgPSBuZXcgUGVuZGluZ0NvbW1hbmRTdGF0ZSgpOworICAgIHByaXZhdGUgU3RhYmxlU3RhdGUgbVN0YWJsZVN0YXRlID0gbmV3IFN0YWJsZVN0YXRlKCk7CisKKyAgICBwcml2YXRlIEJyb2FkY2FzdFJlY2VpdmVyIG1Ccm9hZGNhc3RSZWNlaXZlciA9IG5ldyBCcm9hZGNhc3RSZWNlaXZlcigpIHsKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyB2b2lkIG9uUmVjZWl2ZShDb250ZXh0IGNvbnRleHQsIEludGVudCBpbnRlbnQpIHsKKyAgICAgICAgICAgIFN0cmluZyBhY3Rpb24gPSBpbnRlbnQuZ2V0QWN0aW9uKCk7CisKKyAgICAgICAgICAgIGlmIChhY3Rpb24uZXF1YWxzKEJsdWV0b290aEhlYWRzZXQuQUNUSU9OX1NUQVRFX0NIQU5HRUQpKSB7CisgICAgICAgICAgICAgICAgaW50IG5ld1N0YXRlID0gaW50ZW50LmdldEludEV4dHJhKEJsdWV0b290aEhlYWRzZXQuRVhUUkFfU1RBVEUsIDApOworICAgICAgICAgICAgICAgIGlmIChtUHJvZmlsZSA9PSBIRlAgJiYgKG5ld1N0YXRlID09IEJsdWV0b290aEhlYWRzZXQuU1RBVEVfQ09OTkVDVEVEIHx8CisgICAgICAgICAgICAgICAgICAgIG5ld1N0YXRlID09IEJsdWV0b290aEhlYWRzZXQuU1RBVEVfRElTQ09OTkVDVEVEKSkgeworICAgICAgICAgICAgICAgICAgICBzZW5kTWVzc2FnZShUUkFOU0lUSU9OX1RPX1NUQUJMRSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKEJsdWV0b290aEEyZHAuQUNUSU9OX1NJTktfU1RBVEVfQ0hBTkdFRCkpIHsKKyAgICAgICAgICAgICAgICBpbnQgbmV3U3RhdGUgPSBpbnRlbnQuZ2V0SW50RXh0cmEoQmx1ZXRvb3RoQTJkcC5FWFRSQV9TSU5LX1NUQVRFLCAwKTsKKyAgICAgICAgICAgICAgICBpZiAobVByb2ZpbGUgPT0gQTJEUCAmJiAobmV3U3RhdGUgPT0gQmx1ZXRvb3RoQTJkcC5TVEFURV9DT05ORUNURUQgfHwKKyAgICAgICAgICAgICAgICAgICAgbmV3U3RhdGUgPT0gQmx1ZXRvb3RoQTJkcC5TVEFURV9ESVNDT05ORUNURUQpKSB7CisgICAgICAgICAgICAgICAgICAgIHNlbmRNZXNzYWdlKFRSQU5TSVRJT05fVE9fU1RBQkxFKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworCisgICAgcHVibGljIEJsdWV0b290aFByb2ZpbGVTdGF0ZShDb250ZXh0IGNvbnRleHQsIGludCBwcm9maWxlKSB7CisgICAgICAgIHN1cGVyKCJCbHVldG9vdGhQcm9maWxlU3RhdGU6IiArIHByb2ZpbGUpOworICAgICAgICBtUHJvZmlsZSA9IHByb2ZpbGU7CisgICAgICAgIGFkZFN0YXRlKG1TdGFibGVTdGF0ZSk7CisgICAgICAgIGFkZFN0YXRlKG1QZW5kaW5nQ29tbWFuZFN0YXRlKTsKKyAgICAgICAgc2V0SW5pdGlhbFN0YXRlKG1TdGFibGVTdGF0ZSk7CisKKyAgICAgICAgSW50ZW50RmlsdGVyIGZpbHRlciA9IG5ldyBJbnRlbnRGaWx0ZXIoKTsKKyAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihCbHVldG9vdGhBMmRwLkFDVElPTl9TSU5LX1NUQVRFX0NIQU5HRUQpOworICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKEJsdWV0b290aEhlYWRzZXQuQUNUSU9OX1NUQVRFX0NIQU5HRUQpOworICAgICAgICBjb250ZXh0LnJlZ2lzdGVyUmVjZWl2ZXIobUJyb2FkY2FzdFJlY2VpdmVyLCBmaWx0ZXIpOworICAgIH0KKworICAgIHByaXZhdGUgY2xhc3MgU3RhYmxlU3RhdGUgZXh0ZW5kcyBIaWVyYXJjaGljYWxTdGF0ZSB7CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwcm90ZWN0ZWQgdm9pZCBlbnRlcigpIHsKKyAgICAgICAgICAgIGxvZygiRW50ZXJpbmcgU3RhYmxlIFN0YXRlIik7CisgICAgICAgICAgICBtUGVuZGluZ0RldmljZSA9IG51bGw7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHJvdGVjdGVkIGJvb2xlYW4gcHJvY2Vzc01lc3NhZ2UoTWVzc2FnZSBtc2cpIHsKKyAgICAgICAgICAgIGlmIChtc2cud2hhdCAhPSBUUkFOU0lUSU9OX1RPX1NUQUJMRSkgeworICAgICAgICAgICAgICAgIHRyYW5zaXRpb25UbyhtUGVuZGluZ0NvbW1hbmRTdGF0ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgY2xhc3MgUGVuZGluZ0NvbW1hbmRTdGF0ZSBleHRlbmRzIEhpZXJhcmNoaWNhbFN0YXRlIHsKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHByb3RlY3RlZCB2b2lkIGVudGVyKCkgeworICAgICAgICAgICAgbG9nKCJFbnRlcmluZyBQZW5kaW5nQ29tbWFuZFN0YXRlIFN0YXRlIik7CisgICAgICAgICAgICBkaXNwYXRjaE1lc3NhZ2UoZ2V0Q3VycmVudE1lc3NhZ2UoKSk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHJvdGVjdGVkIGJvb2xlYW4gcHJvY2Vzc01lc3NhZ2UoTWVzc2FnZSBtc2cpIHsKKyAgICAgICAgICAgIGlmIChtc2cud2hhdCA9PSBUUkFOU0lUSU9OX1RPX1NUQUJMRSkgeworICAgICAgICAgICAgICAgIHRyYW5zaXRpb25UbyhtU3RhYmxlU3RhdGUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkaXNwYXRjaE1lc3NhZ2UobXNnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZSB2b2lkIGRpc3BhdGNoTWVzc2FnZShNZXNzYWdlIG1zZykgeworICAgICAgICAgICAgQmx1ZXRvb3RoRGV2aWNlUHJvZmlsZVN0YXRlIGRldmljZVByb2ZpbGVNZ3IgPQorICAgICAgICAgICAgICAoQmx1ZXRvb3RoRGV2aWNlUHJvZmlsZVN0YXRlKW1zZy5vYmo7CisgICAgICAgICAgICBpbnQgY21kID0gbXNnLmFyZzE7CisgICAgICAgICAgICBpZiAobVBlbmRpbmdEZXZpY2UgPT0gbnVsbCB8fCBtUGVuZGluZ0RldmljZS5lcXVhbHMoZGV2aWNlUHJvZmlsZU1nci5nZXREZXZpY2UoKSkpIHsKKyAgICAgICAgICAgICAgICBtUGVuZGluZ0RldmljZSA9IGRldmljZVByb2ZpbGVNZ3IuZ2V0RGV2aWNlKCk7CisgICAgICAgICAgICAgICAgZGV2aWNlUHJvZmlsZU1nci5zZW5kTWVzc2FnZShjbWQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBNZXNzYWdlIGRlZmVyTXNnID0gbmV3IE1lc3NhZ2UoKTsKKyAgICAgICAgICAgICAgICBkZWZlck1zZy5hcmcxID0gY21kOworICAgICAgICAgICAgICAgIGRlZmVyTXNnLm9iaiA9IGRldmljZVByb2ZpbGVNZ3I7CisgICAgICAgICAgICAgICAgZGVmZXJNZXNzYWdlKGRlZmVyTXNnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBsb2coU3RyaW5nIG1lc3NhZ2UpIHsKKyAgICAgICAgaWYgKERCRykgeworICAgICAgICAgICAgTG9nLmkoVEFHLCAiTWVzc2FnZToiICsgbWVzc2FnZSk7CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9ibHVldG9vdGgvSUJsdWV0b290aC5haWRsIGIvY29yZS9qYXZhL2FuZHJvaWQvYmx1ZXRvb3RoL0lCbHVldG9vdGguYWlkbAppbmRleCAwODY4Nzc5Li5lYTcxMDM0IDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9ibHVldG9vdGgvSUJsdWV0b290aC5haWRsCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL2JsdWV0b290aC9JQmx1ZXRvb3RoLmFpZGwKQEAgLTY4LDQgKzY4LDggQEAKIAogICAgIGludCBhZGRSZmNvbW1TZXJ2aWNlUmVjb3JkKGluIFN0cmluZyBzZXJ2aWNlTmFtZSwgaW4gUGFyY2VsVXVpZCB1dWlkLCBpbnQgY2hhbm5lbCwgSUJpbmRlciBiKTsKICAgICB2b2lkIHJlbW92ZVNlcnZpY2VSZWNvcmQoaW50IGhhbmRsZSk7CisKKyAgICBib29sZWFuIGNvbm5lY3RIZWFkc2V0KFN0cmluZyBhZGRyZXNzKTsKKyAgICBib29sZWFuIGRpc2Nvbm5lY3RIZWFkc2V0KFN0cmluZyBhZGRyZXNzKTsKKyAgICBib29sZWFuIG5vdGlmeUluY29taW5nQ29ubmVjdGlvbihTdHJpbmcgYWRkcmVzcyk7CiB9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9ibHVldG9vdGgvSUJsdWV0b290aEEyZHAuYWlkbCBiL2NvcmUvamF2YS9hbmRyb2lkL2JsdWV0b290aC9JQmx1ZXRvb3RoQTJkcC5haWRsCmluZGV4IDE2OGZlM2IuLjQwZjEwNTggMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL2JsdWV0b290aC9JQmx1ZXRvb3RoQTJkcC5haWRsCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL2JsdWV0b290aC9JQmx1ZXRvb3RoQTJkcC5haWRsCkBAIC0zMyw0ICszMyw3IEBACiAgICAgaW50IGdldFNpbmtTdGF0ZShpbiBCbHVldG9vdGhEZXZpY2UgZGV2aWNlKTsKICAgICBib29sZWFuIHNldFNpbmtQcmlvcml0eShpbiBCbHVldG9vdGhEZXZpY2UgZGV2aWNlLCBpbnQgcHJpb3JpdHkpOwogICAgIGludCBnZXRTaW5rUHJpb3JpdHkoaW4gQmx1ZXRvb3RoRGV2aWNlIGRldmljZSk7CisKKyAgICBib29sZWFuIGNvbm5lY3RTaW5rSW50ZXJuYWwoaW4gQmx1ZXRvb3RoRGV2aWNlIGRldmljZSk7CisgICAgYm9vbGVhbiBkaXNjb25uZWN0U2lua0ludGVybmFsKGluIEJsdWV0b290aERldmljZSBkZXZpY2UpOwogfQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvYmx1ZXRvb3RoL0lCbHVldG9vdGhIZWFkc2V0LmFpZGwgYi9jb3JlL2phdmEvYW5kcm9pZC9ibHVldG9vdGgvSUJsdWV0b290aEhlYWRzZXQuYWlkbAppbmRleCA2Y2NjZDUwLi5kOTZmMGNhIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9ibHVldG9vdGgvSUJsdWV0b290aEhlYWRzZXQuYWlkbAorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9ibHVldG9vdGgvSUJsdWV0b290aEhlYWRzZXQuYWlkbApAQCAtMjQsMTQgKzI0LDIwIEBACiAgKiB7QGhpZGV9CiAgKi8KIGludGVyZmFjZSBJQmx1ZXRvb3RoSGVhZHNldCB7Ci0gICAgaW50IGdldFN0YXRlKCk7CisgICAgaW50IGdldFN0YXRlKGluIEJsdWV0b290aERldmljZSBkZXZpY2UpOwogICAgIEJsdWV0b290aERldmljZSBnZXRDdXJyZW50SGVhZHNldCgpOwogICAgIGJvb2xlYW4gY29ubmVjdEhlYWRzZXQoaW4gQmx1ZXRvb3RoRGV2aWNlIGRldmljZSk7Ci0gICAgdm9pZCBkaXNjb25uZWN0SGVhZHNldCgpOworICAgIHZvaWQgZGlzY29ubmVjdEhlYWRzZXQoaW4gQmx1ZXRvb3RoRGV2aWNlIGRldmljZSk7CiAgICAgYm9vbGVhbiBpc0Nvbm5lY3RlZChpbiBCbHVldG9vdGhEZXZpY2UgZGV2aWNlKTsKICAgICBib29sZWFuIHN0YXJ0Vm9pY2VSZWNvZ25pdGlvbigpOwogICAgIGJvb2xlYW4gc3RvcFZvaWNlUmVjb2duaXRpb24oKTsKICAgICBib29sZWFuIHNldFByaW9yaXR5KGluIEJsdWV0b290aERldmljZSBkZXZpY2UsIGludCBwcmlvcml0eSk7CiAgICAgaW50IGdldFByaW9yaXR5KGluIEJsdWV0b290aERldmljZSBkZXZpY2UpOwogICAgIGludCBnZXRCYXR0ZXJ5VXNhZ2VIaW50KCk7CisKKyAgICBib29sZWFuIGNyZWF0ZUluY29taW5nQ29ubmVjdChpbiBCbHVldG9vdGhEZXZpY2UgZGV2aWNlKTsKKyAgICBib29sZWFuIGFjY2VwdEluY29taW5nQ29ubmVjdChpbiBCbHVldG9vdGhEZXZpY2UgZGV2aWNlKTsKKyAgICBib29sZWFuIGNhbmNlbENvbm5lY3RUaHJlYWQoKTsKKyAgICBib29sZWFuIGNvbm5lY3RIZWFkc2V0SW50ZXJuYWwoaW4gQmx1ZXRvb3RoRGV2aWNlIGRldmljZSk7CisgICAgYm9vbGVhbiBkaXNjb25uZWN0SGVhZHNldEludGVybmFsKGluIEJsdWV0b290aERldmljZSBkZXZpY2UpOwogfQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9Db250ZW50UmVzb2x2ZXIuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL2NvbnRlbnQvQ29udGVudFJlc29sdmVyLmphdmEKaW5kZXggYjQ3MThhYi4uNjlmNzYxMSAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9Db250ZW50UmVzb2x2ZXIuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9jb250ZW50L0NvbnRlbnRSZXNvbHZlci5qYXZhCkBAIC0xOCw2ICsxOCw3IEBACiAKIGltcG9ydCBhbmRyb2lkLmFjY291bnRzLkFjY291bnQ7CiBpbXBvcnQgYW5kcm9pZC5hcHAuQWN0aXZpdHlUaHJlYWQ7CitpbXBvcnQgYW5kcm9pZC5hcHAuQXBwR2xvYmFsczsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uOwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5yZXMuQXNzZXRGaWxlRGVzY3JpcHRvcjsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlczsKQEAgLTEzMDYsNyArMTMwNyw3IEBACiAgICAgICAgIC8vIEFjdGl2aXR5VGhyZWFkLmN1cnJlbnRQYWNrYWdlTmFtZSgpIG9ubHkgcmV0dXJucyBub24tbnVsbCBpZiB0aGUKICAgICAgICAgLy8gY3VycmVudCB0aHJlYWQgaXMgYW4gYXBwbGljYXRpb24gbWFpbiB0aHJlYWQuICBUaGlzIHBhcmFtZXRlciB0ZWxscwogICAgICAgICAvLyB1cyB3aGV0aGVyIGFuIGV2ZW50IGxvb3AgaXMgYmxvY2tlZCwgYW5kIGlmIHNvLCB3aGljaCBhcHAgaXQgaXMuCi0gICAgICAgIFN0cmluZyBibG9ja2luZ1BhY2thZ2UgPSBBY3Rpdml0eVRocmVhZC5jdXJyZW50UGFja2FnZU5hbWUoKTsKKyAgICAgICAgU3RyaW5nIGJsb2NraW5nUGFja2FnZSA9IEFwcEdsb2JhbHMuZ2V0SW5pdGlhbFBhY2thZ2UoKTsKIAogICAgICAgICBFdmVudExvZy53cml0ZUV2ZW50KAogICAgICAgICAgICAgRXZlbnRMb2dUYWdzLkNPTlRFTlRfUVVFUllfU0FNUExFLApAQCAtMTMyOSw3ICsxMzMwLDcgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgU3RyaW5nIGJsb2NraW5nUGFja2FnZSA9IEFjdGl2aXR5VGhyZWFkLmN1cnJlbnRQYWNrYWdlTmFtZSgpOworICAgICAgICBTdHJpbmcgYmxvY2tpbmdQYWNrYWdlID0gQXBwR2xvYmFscy5nZXRJbml0aWFsUGFja2FnZSgpOwogICAgICAgICBFdmVudExvZy53cml0ZUV2ZW50KAogICAgICAgICAgICAgRXZlbnRMb2dUYWdzLkNPTlRFTlRfVVBEQVRFX1NBTVBMRSwKICAgICAgICAgICAgIHVyaS50b1N0cmluZygpLApkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9Db250ZW50U2VydmljZS5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9Db250ZW50U2VydmljZS5qYXZhCmluZGV4IDM3N2UzODMuLmZjMmRmYzAgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL2NvbnRlbnQvQ29udGVudFNlcnZpY2UuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9jb250ZW50L0NvbnRlbnRTZXJ2aWNlLmphdmEKQEAgLTUzNyw2ICs1MzcsOSBAQAogCiAgICAgICAgICAgICAvLyBMb29rIHRvIHNlZSBpZiB0aGUgcHJvcGVyIGNoaWxkIGFscmVhZHkgZXhpc3RzCiAgICAgICAgICAgICBTdHJpbmcgc2VnbWVudCA9IGdldFVyaVNlZ21lbnQodXJpLCBpbmRleCk7CisgICAgICAgICAgICBpZiAoc2VnbWVudCA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBVcmkgKCIgKyB1cmkgKyAiKSB1c2VkIGZvciBvYnNlcnZlciIpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgaW50IE4gPSBtQ2hpbGRyZW4uc2l6ZSgpOwogICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOOyBpKyspIHsKICAgICAgICAgICAgICAgICBPYnNlcnZlck5vZGUgbm9kZSA9IG1DaGlsZHJlbi5nZXQoaSk7CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9jb250ZW50L0ludGVudFNlbmRlci5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9JbnRlbnRTZW5kZXIuamF2YQppbmRleCBlMTgyMDIxLi4wMDdhNzE1IDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9jb250ZW50L0ludGVudFNlbmRlci5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL2NvbnRlbnQvSW50ZW50U2VuZGVyLmphdmEKQEAgLTE2LDYgKzE2LDcgQEAKIAogcGFja2FnZSBhbmRyb2lkLmNvbnRlbnQ7CiAKK2ltcG9ydCBhbmRyb2lkLmFwcC5BY3Rpdml0eU1hbmFnZXJOYXRpdmU7CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSUludGVudFNlbmRlcjsKQEAgLTE3MCw2ICsxNzEsMjUgQEAKICAgICB9CiAKICAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIHBhY2thZ2UgbmFtZSBvZiB0aGUgYXBwbGljYXRpb24gdGhhdCBjcmVhdGVkIHRoaXMKKyAgICAgKiBJbnRlbnRTZW5kZXIsIHRoYXQgaXMgdGhlIGlkZW50aXR5IHVuZGVyIHdoaWNoIHlvdSB3aWxsIGFjdHVhbGx5IGJlCisgICAgICogc2VuZGluZyB0aGUgSW50ZW50LiAgVGhlIHJldHVybmVkIHN0cmluZyBpcyBzdXBwbGllZCBieSB0aGUgc3lzdGVtLCBzbworICAgICAqIHRoYXQgYW4gYXBwbGljYXRpb24gY2FuIG5vdCBzcG9vZiBpdHMgcGFja2FnZS4KKyAgICAgKgorICAgICAqIEByZXR1cm4gVGhlIHBhY2thZ2UgbmFtZSBvZiB0aGUgUGVuZGluZ0ludGVudCwgb3IgbnVsbCBpZiB0aGVyZSBpcworICAgICAqIG5vbmUgYXNzb2NpYXRlZCB3aXRoIGl0LgorICAgICAqLworICAgIHB1YmxpYyBTdHJpbmcgZ2V0VGFyZ2V0UGFja2FnZSgpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJldHVybiBBY3Rpdml0eU1hbmFnZXJOYXRpdmUuZ2V0RGVmYXVsdCgpCisgICAgICAgICAgICAgICAgLmdldFBhY2thZ2VGb3JJbnRlbnRTZW5kZXIobVRhcmdldCk7CisgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAvLyBTaG91bGQgbmV2ZXIgaGFwcGVuLgorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKICAgICAgKiBDb21wYXJpc29uIG9wZXJhdG9yIG9uIHR3byBJbnRlbnRTZW5kZXIgb2JqZWN0cywgc3VjaCB0aGF0IHRydWUKICAgICAgKiBpcyByZXR1cm5lZCB0aGVuIHRoZXkgYm90aCByZXByZXNlbnQgdGhlIHNhbWUgb3BlcmF0aW9uIGZyb20gdGhlCiAgICAgICogc2FtZSBwYWNrYWdlLgpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9TeW5jU3RvcmFnZUVuZ2luZS5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9TeW5jU3RvcmFnZUVuZ2luZS5qYXZhCmluZGV4IDk4YTQ5OTMuLjY0MTNjZWMgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL2NvbnRlbnQvU3luY1N0b3JhZ2VFbmdpbmUuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9jb250ZW50L1N5bmNTdG9yYWdlRW5naW5lLmphdmEKQEAgLTMxNyw3ICszMTcsOSBAQAogICAgICAgICBpZiAoc1N5bmNTdG9yYWdlRW5naW5lICE9IG51bGwpIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBGaWxlIGRhdGFEaXIgPSBFbnZpcm9ubWVudC5nZXREYXRhRGlyZWN0b3J5KCk7CisgICAgICAgIC8vIFRoaXMgY2FsbCB3aWxsIHJldHVybiB0aGUgY29ycmVjdCBkaXJlY3Rvcnkgd2hldGhlciBFbmNyeXB0ZWQgRmlsZSBTeXN0ZW1zIGlzCisgICAgICAgIC8vIGVuYWJsZWQgb3Igbm90LgorICAgICAgICBGaWxlIGRhdGFEaXIgPSBFbnZpcm9ubWVudC5nZXRTZWN1cmVEYXRhRGlyZWN0b3J5KCk7CiAgICAgICAgIHNTeW5jU3RvcmFnZUVuZ2luZSA9IG5ldyBTeW5jU3RvcmFnZUVuZ2luZShjb250ZXh0LCBkYXRhRGlyKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL2NvbnRlbnQvcG0vQWN0aXZpdHlJbmZvLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9jb250ZW50L3BtL0FjdGl2aXR5SW5mby5qYXZhCmluZGV4IDIzOGI4NDAuLjM2NGM5MWUgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL2NvbnRlbnQvcG0vQWN0aXZpdHlJbmZvLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9wbS9BY3Rpdml0eUluZm8uamF2YQpAQCAtMTQ5LDE0ICsxNDksMzMgQEAKICAgICAgKiB7QGxpbmsgYW5kcm9pZC5SLmF0dHIjZmluaXNoT25DbG9zZVN5c3RlbURpYWxvZ3N9IGF0dHJpYnV0ZS4KICAgICAgKi8KICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGTEFHX0ZJTklTSF9PTl9DTE9TRV9TWVNURU1fRElBTE9HUyA9IDB4MDEwMDsKKyAgICAvKiogCisgICAgICogQml0IGluIHtAbGluayAjZmxhZ3N9IGNvcnJlc3BvbmRpbmcgdG8gYW4gaW1tZXJzaXZlIGFjdGl2aXR5CisgICAgICogdGhhdCB3aXNoZXMgbm90IHRvIGJlIGludGVycnVwdGVkIGJ5IG5vdGlmaWNhdGlvbnMuCisgICAgICogQXBwbGljYXRpb25zIHRoYXQgaGlkZSB0aGUgc3lzdGVtIG5vdGlmaWNhdGlvbiBiYXIgd2l0aAorICAgICAqIHtAbGluayBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMjRkxBR19GVUxMU0NSRUVOfQorICAgICAqIG1heSBzdGlsbCBiZSBpbnRlcnJ1cHRlZCBieSBoaWdoLXByaW9yaXR5IG5vdGlmaWNhdGlvbnM7IGZvciBleGFtcGxlLCBhbgorICAgICAqIGluY29taW5nIHBob25lIGNhbGwgbWF5IHVzZQorICAgICAqIHtAbGluayBhbmRyb2lkLmFwcC5Ob3RpZmljYXRpb24jZnVsbFNjcmVlbkludGVudCBmdWxsU2NyZWVuSW50ZW50fQorICAgICAqIHRvIHByZXNlbnQgYSBmdWxsLXNjcmVlbiBpbi1jYWxsIGFjdGl2aXR5IHRvIHRoZSB1c2VyLCBwYXVzaW5nIHRoZQorICAgICAqIGN1cnJlbnQgYWN0aXZpdHkgYXMgYSBzaWRlLWVmZmVjdC4gQW4gYWN0aXZpdHkgd2l0aAorICAgICAqIHtAbGluayAjRkxBR19JTU1FUlNJVkV9IHNldCwgaG93ZXZlciwgd2lsbCBub3QgYmUgaW50ZXJydXB0ZWQ7IHRoZQorICAgICAqIG5vdGlmaWNhdGlvbiBtYXkgYmUgc2hvd24gaW4gc29tZSBvdGhlciB3YXkgKHN1Y2ggYXMgYSBzbWFsbCBmbG9hdGluZworICAgICAqICJ0b2FzdCIgd2luZG93KS4KKyAgICAgKiB7QHNlZSBhbmRyb2lkLmFwcC5Ob3RpZmljYXRpb24jRkxBR19ISUdIX1BSSU9SSVRZfQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZMQUdfSU1NRVJTSVZFID0gMHgwMjAwOwogICAgIC8qKgogICAgICAqIE9wdGlvbnMgdGhhdCBoYXZlIGJlZW4gc2V0IGluIHRoZSBhY3Rpdml0eSBkZWNsYXJhdGlvbiBpbiB0aGUKLSAgICAgKiBtYW5pZmVzdDoge0BsaW5rICNGTEFHX01VTFRJUFJPQ0VTU30sCisgICAgICogbWFuaWZlc3QuCisgICAgICogVGhlc2UgaW5jbHVkZToKKyAgICAgKiB7QGxpbmsgI0ZMQUdfTVVMVElQUk9DRVNTfSwKICAgICAgKiB7QGxpbmsgI0ZMQUdfRklOSVNIX09OX1RBU0tfTEFVTkNIfSwge0BsaW5rICNGTEFHX0NMRUFSX1RBU0tfT05fTEFVTkNIfSwKICAgICAgKiB7QGxpbmsgI0ZMQUdfQUxXQVlTX1JFVEFJTl9UQVNLX1NUQVRFfSwKICAgICAgKiB7QGxpbmsgI0ZMQUdfU1RBVEVfTk9UX05FRURFRH0sIHtAbGluayAjRkxBR19FWENMVURFX0ZST01fUkVDRU5UU30sCiAgICAgICoge0BsaW5rICNGTEFHX0FMTE9XX1RBU0tfUkVQQVJFTlRJTkd9LCB7QGxpbmsgI0ZMQUdfTk9fSElTVE9SWX0sCi0gICAgICoge0BsaW5rICNGTEFHX0ZJTklTSF9PTl9DTE9TRV9TWVNURU1fRElBTE9HU30uCisgICAgICoge0BsaW5rICNGTEFHX0ZJTklTSF9PTl9DTE9TRV9TWVNURU1fRElBTE9HU30sCisgICAgICoge0BsaW5rICNGTEFHX0lNTUVSU0lWRX0KICAgICAgKi8KICAgICBwdWJsaWMgaW50IGZsYWdzOwogCmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9jb250ZW50L3BtL0FwcGxpY2F0aW9uSW5mby5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9wbS9BcHBsaWNhdGlvbkluZm8uamF2YQppbmRleCAxNTc3ZjllLi43OTAxYjE1NSAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9wbS9BcHBsaWNhdGlvbkluZm8uamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9jb250ZW50L3BtL0FwcGxpY2F0aW9uSW5mby5qYXZhCkBAIC0xNzQsNyArMTc0LDcgQEAKICAgICAgKiBWYWx1ZSBmb3Ige0BsaW5rICNmbGFnc306IHRydWUgd2hlbiB0aGUgYXBwbGljYXRpb24ncyB3aW5kb3cgY2FuIGJlCiAgICAgICogaW5jcmVhc2VkIGluIHNpemUgZm9yIGxhcmdlciBzY3JlZW5zLiAgQ29ycmVzcG9uZHMgdG8KICAgICAgKiB7QGxpbmsgYW5kcm9pZC5SLnN0eWxlYWJsZSNBbmRyb2lkTWFuaWZlc3RTdXBwb3J0c1NjcmVlbnNfbGFyZ2VTY3JlZW5zCi0gICAgICogYW5kcm9pZDpzbWFsbFNjcmVlbnN9LgorICAgICAqIGFuZHJvaWQ6bGFyZ2VTY3JlZW5zfS4KICAgICAgKi8KICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGTEFHX1NVUFBPUlRTX0xBUkdFX1NDUkVFTlMgPSAxPDwxMTsKICAgICAKQEAgLTI1Miw2ICsyNTIsOSBAQAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZMQUdfUkVTVE9SRV9BTllfVkVSU0lPTiA9IDE8PDE3OwogCiAgICAgLyoqCisgICAgICogVmFsdWUgZm9yIHtAbGluayAjZmxhZ3N9OiBTZXQgdG8gdHJ1ZSBpZiB0aGUgYXBwbGljYXRpb24gaGFzIGJlZW4KKyAgICAgKiBpbnN0YWxsZWQgdXNpbmcgdGhlIGZvcndhcmQgbG9jayBvcHRpb24uCisgICAgICoKICAgICAgKiBWYWx1ZSBmb3Ige0BsaW5rICNmbGFnc306IFNldCB0byB0cnVlIGlmIHRoZSBhcHBsaWNhdGlvbiBpcwogICAgICAqIGN1cnJlbnRseSBpbnN0YWxsZWQgb24gZXh0ZXJuYWwvcmVtb3ZhYmxlL3VucHJvdGVjdGVkIHN0b3JhZ2UuICBTdWNoCiAgICAgICogYXBwbGljYXRpb25zIG1heSBub3QgYmUgYXZhaWxhYmxlIGlmIHRoZWlyIHN0b3JhZ2UgaXMgbm90IGN1cnJlbnRseQpAQCAtMjYyLDEyICsyNjUsNDEgQEAKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGTEFHX0VYVEVSTkFMX1NUT1JBR0UgPSAxPDwxODsKIAogICAgIC8qKgorICAgICAqIFZhbHVlIGZvciB7QGxpbmsgI2ZsYWdzfTogdHJ1ZSB3aGVuIHRoZSBhcHBsaWNhdGlvbidzIHdpbmRvdyBjYW4gYmUKKyAgICAgKiBpbmNyZWFzZWQgaW4gc2l6ZSBmb3IgZXh0cmEgbGFyZ2Ugc2NyZWVucy4gIENvcnJlc3BvbmRzIHRvCisgICAgICoge0BsaW5rIGFuZHJvaWQuUi5zdHlsZWFibGUjQW5kcm9pZE1hbmlmZXN0U3VwcG9ydHNTY3JlZW5zX3hsYXJnZVNjcmVlbnMKKyAgICAgKiBhbmRyb2lkOnhsYXJnZVNjcmVlbnN9LgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZMQUdfU1VQUE9SVFNfWExBUkdFX1NDUkVFTlMgPSAxPDwxOTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBWYWx1ZSBmb3Ige0BsaW5rICNmbGFnc306IHNldCB0byA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgYXBwbGljYXRpb24KKyAgICAgKiBoYXMgcmVwb3J0ZWQgdGhhdCBpdCBpcyBoZWF2eS13ZWlnaHQsIGFuZCB0aHVzIGNhbiBub3QgcGFydGljaXBhdGUgaW4KKyAgICAgKiB0aGUgbm9ybWFsIGFwcGxpY2F0aW9uIGxpZmVjeWNsZS4KKyAgICAgKiAKKyAgICAgKiA8cD5Db21lcyBmcm9tIHRoZQorICAgICAqIHtAbGluayBhbmRyb2lkLlIuc3R5bGVhYmxlI0FuZHJvaWRNYW5pZmVzdEFwcGxpY2F0aW9uX2hlYXZ5V2VpZ2h0IGFuZHJvaWQ6aGVhdnlXZWlnaHR9CisgICAgICogYXR0cmlidXRlIG9mIHRoZSAmbHQ7YXBwbGljYXRpb24mZ3Q7IHRhZy4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGTEFHX0hFQVZZX1dFSUdIVCA9IDE8PDIwOworICAgIAorICAgIC8qKgorICAgICAqIFZhbHVlIGZvciB7QGxpbmsgI2ZsYWdzfTogdGhpcyBpcyB0cnVlIGlmIHRoZSBhcHBsaWNhdGlvbiBoYXMgc2V0CisgICAgICogaXRzIGFuZHJvaWQ6bmV2ZXJFbmNyeXB0IHRvIHRydWUsIGZhbHNlIG90aGVyd2lzZS4gSXQgaXMgdXNlZCB0byBzcGVjaWZ5CisgICAgICogdGhhdCB0aGlzIHBhY2thZ2Ugc3BlY2lmaWNhbGx5ICJvcHRzLW91dCIgb2YgYSBzZWN1cmVkIGZpbGUgc3lzdGVtIHNvbHV0aW9uLAorICAgICAqIGFuZCB3aWxsIGFsd2F5cyBzdG9yZSBpdHMgZGF0YSBpbi10aGUtY2xlYXIuCisgICAgICoKKyAgICAgKiB7QGhpZGV9CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRkxBR19ORVZFUl9FTkNSWVBUID0gMTw8MzA7CisKKyAgICAvKioKICAgICAgKiBWYWx1ZSBmb3Ige0BsaW5rICNmbGFnc306IFNldCB0byB0cnVlIGlmIHRoZSBhcHBsaWNhdGlvbiBoYXMgYmVlbgogICAgICAqIGluc3RhbGxlZCB1c2luZyB0aGUgZm9yd2FyZCBsb2NrIG9wdGlvbi4KICAgICAgKgogICAgICAqIHtAaGlkZX0KICAgICAgKi8KLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGTEFHX0ZPUldBUkRfTE9DSyA9IDE8PDIwOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZMQUdfRk9SV0FSRF9MT0NLID0gMTw8Mjk7CiAKICAgICAvKioKICAgICAgKiBWYWx1ZSBmb3Ige0BsaW5rICNmbGFnc306IFNldCB0byB0cnVlIGlmIHRoZSBhcHBsaWNhdGlvbiBpcwpAQCAtMjc1LDcgKzMwNyw3IEBACiAgICAgICoKICAgICAgKiB7QGhpZGV9CiAgICAgICovCi0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRkxBR19OQVRJVkVfREVCVUdHQUJMRSA9IDE8PDIxOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZMQUdfTkFUSVZFX0RFQlVHR0FCTEUgPSAxPDwyODsKIAogICAgIC8qKgogICAgICAqIEZsYWdzIGFzc29jaWF0ZWQgd2l0aCB0aGUgYXBwbGljYXRpb24uICBBbnkgY29tYmluYXRpb24gb2YKQEAgLTI4NSw3ICszMTcsOCBAQAogICAgICAqIHtAbGluayAjRkxBR19BTExPV19DTEVBUl9VU0VSX0RBVEF9LCB7QGxpbmsgI0ZMQUdfVVBEQVRFRF9TWVNURU1fQVBQfSwKICAgICAgKiB7QGxpbmsgI0ZMQUdfVEVTVF9PTkxZfSwge0BsaW5rICNGTEFHX1NVUFBPUlRTX1NNQUxMX1NDUkVFTlN9LAogICAgICAqIHtAbGluayAjRkxBR19TVVBQT1JUU19OT1JNQUxfU0NSRUVOU30sCi0gICAgICoge0BsaW5rICNGTEFHX1NVUFBPUlRTX0xBUkdFX1NDUkVFTlN9LCB7QGxpbmsgI0ZMQUdfUkVTSVpFQUJMRV9GT1JfU0NSRUVOU30sCisgICAgICoge0BsaW5rICNGTEFHX1NVUFBPUlRTX0xBUkdFX1NDUkVFTlN9LCB7QGxpbmsgI0ZMQUdfU1VQUE9SVFNfWExBUkdFX1NDUkVFTlN9LAorICAgICAqIHtAbGluayAjRkxBR19SRVNJWkVBQkxFX0ZPUl9TQ1JFRU5TfSwKICAgICAgKiB7QGxpbmsgI0ZMQUdfU1VQUE9SVFNfU0NSRUVOX0RFTlNJVElFU30sIHtAbGluayAjRkxBR19WTV9TQUZFX01PREV9CiAgICAgICovCiAgICAgcHVibGljIGludCBmbGFncyA9IDA7CkBAIC01MTcsNyArNTUwLDcgQEAKICAgICBwdWJsaWMgdm9pZCBkaXNhYmxlQ29tcGF0aWJpbGl0eU1vZGUoKSB7CiAgICAgICAgIGZsYWdzIHw9IChGTEFHX1NVUFBPUlRTX0xBUkdFX1NDUkVFTlMgfCBGTEFHX1NVUFBPUlRTX05PUk1BTF9TQ1JFRU5TIHwKICAgICAgICAgICAgICAgICBGTEFHX1NVUFBPUlRTX1NNQUxMX1NDUkVFTlMgfCBGTEFHX1JFU0laRUFCTEVfRk9SX1NDUkVFTlMgfAotICAgICAgICAgICAgICAgIEZMQUdfU1VQUE9SVFNfU0NSRUVOX0RFTlNJVElFUyk7CisgICAgICAgICAgICAgICAgRkxBR19TVVBQT1JUU19TQ1JFRU5fREVOU0lUSUVTIHwgRkxBR19TVVBQT1JUU19YTEFSR0VfU0NSRUVOUyk7CiAgICAgfQogICAgIAogICAgIC8qKgpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9wbS9Db21wb25lbnRJbmZvLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9jb250ZW50L3BtL0NvbXBvbmVudEluZm8uamF2YQppbmRleCBjYWZlMzcyLi5mMTZjNGVmIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9jb250ZW50L3BtL0NvbXBvbmVudEluZm8uamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9jb250ZW50L3BtL0NvbXBvbmVudEluZm8uamF2YQpAQCAtMTU3LDYgKzE1NywxNCBAQAogICAgIC8qKgogICAgICAqIEBoaWRlCiAgICAgICovCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIERyYXdhYmxlIGxvYWREZWZhdWx0TG9nbyhQYWNrYWdlTWFuYWdlciBwbSkgeworICAgICAgICByZXR1cm4gYXBwbGljYXRpb25JbmZvLmxvYWRMb2dvKHBtKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogQGhpZGUKKyAgICAgKi8KICAgICBAT3ZlcnJpZGUgcHJvdGVjdGVkIEFwcGxpY2F0aW9uSW5mbyBnZXRBcHBsaWNhdGlvbkluZm8oKSB7CiAgICAgICAgIHJldHVybiBhcHBsaWNhdGlvbkluZm87CiAgICAgfQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9wbS9JUGFja2FnZU1hbmFnZXIuYWlkbCBiL2NvcmUvamF2YS9hbmRyb2lkL2NvbnRlbnQvcG0vSVBhY2thZ2VNYW5hZ2VyLmFpZGwKaW5kZXggOTkzOTQ3OC4uMTYwYTQ4MSAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9wbS9JUGFja2FnZU1hbmFnZXIuYWlkbAorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9jb250ZW50L3BtL0lQYWNrYWdlTWFuYWdlci5haWRsCkBAIC0zMTksNCArMzE5LDYgQEAKIAogICAgIGJvb2xlYW4gc2V0SW5zdGFsbExvY2F0aW9uKGludCBsb2MpOwogICAgIGludCBnZXRJbnN0YWxsTG9jYXRpb24oKTsKKworICAgIHZvaWQgc2V0UGFja2FnZU9iYlBhdGgoU3RyaW5nIHBhY2thZ2VOYW1lLCBTdHJpbmcgcGF0aCk7CiB9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9jb250ZW50L3BtL1BhY2thZ2VJdGVtSW5mby5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9wbS9QYWNrYWdlSXRlbUluZm8uamF2YQppbmRleCAxNGMwNjgwMC4uZDczYWFmNiAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9wbS9QYWNrYWdlSXRlbUluZm8uamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9jb250ZW50L3BtL1BhY2thZ2VJdGVtSW5mby5qYXZhCkBAIC02Nyw2ICs2NywxNCBAQAogICAgIHB1YmxpYyBpbnQgaWNvbjsKICAgICAKICAgICAvKioKKyAgICAgKiBBIGRyYXdhYmxlIHJlc291cmNlIGlkZW50aWZpZXIgKGluIHRoZSBwYWNrYWdlJ3MgcmVzb3VyY2VzKSBvZiB0aGlzCisgICAgICogY29tcG9uZW50J3MgbG9nby4gTG9nb3MgbWF5IGJlIGxhcmdlci93aWRlciB0aGFuIGljb25zIGFuZCBhcmUKKyAgICAgKiBkaXNwbGF5ZWQgYnkgY2VydGFpbiBVSSBlbGVtZW50cyBpbiBwbGFjZSBvZiBhIG5hbWUgb3IgbmFtZS9pY29uCisgICAgICogY29tYmluYXRpb24uIEZyb20gdGhlICJsb2dvIiBhdHRyaWJ1dGUgb3IsIGlmIG5vdCBzZXQsIDAuIAorICAgICAqLworICAgIHB1YmxpYyBpbnQgbG9nbzsKKyAgICAKKyAgICAvKioKICAgICAgKiBBZGRpdGlvbmFsIG1ldGEtZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhpcyBjb21wb25lbnQuICBUaGlzIGZpZWxkCiAgICAgICogd2lsbCBvbmx5IGJlIGZpbGxlZCBpbiBpZiB5b3Ugc2V0IHRoZQogICAgICAqIHtAbGluayBQYWNrYWdlTWFuYWdlciNHRVRfTUVUQV9EQVRBfSBmbGFnIHdoZW4gcmVxdWVzdGluZyB0aGUgaW5mby4KQEAgLTg0LDYgKzkyLDcgQEAKICAgICAgICAgbm9uTG9jYWxpemVkTGFiZWwgPSBvcmlnLm5vbkxvY2FsaXplZExhYmVsOwogICAgICAgICBpZiAobm9uTG9jYWxpemVkTGFiZWwgIT0gbnVsbCkgbm9uTG9jYWxpemVkTGFiZWwgPSBub25Mb2NhbGl6ZWRMYWJlbC50b1N0cmluZygpLnRyaW0oKTsKICAgICAgICAgaWNvbiA9IG9yaWcuaWNvbjsKKyAgICAgICAgbG9nbyA9IG9yaWcubG9nbzsKICAgICAgICAgbWV0YURhdGEgPSBvcmlnLm1ldGFEYXRhOwogICAgIH0KIApAQCAtMTUyLDYgKzE2MSw0MiBAQAogICAgIH0KICAgICAKICAgICAvKioKKyAgICAgKiBSZXRyaWV2ZSB0aGUgY3VycmVudCBncmFwaGljYWwgbG9nbyBhc3NvY2lhdGVkIHdpdGggdGhpcyBpdGVtLiBUaGlzCisgICAgICogd2lsbCBjYWxsIGJhY2sgb24gdGhlIGdpdmVuIFBhY2thZ2VNYW5hZ2VyIHRvIGxvYWQgdGhlIGxvZ28gZnJvbQorICAgICAqIHRoZSBhcHBsaWNhdGlvbi4KKyAgICAgKiAKKyAgICAgKiBAcGFyYW0gcG0gQSBQYWNrYWdlTWFuYWdlciBmcm9tIHdoaWNoIHRoZSBsb2dvIGNhbiBiZSBsb2FkZWQ7IHVzdWFsbHkKKyAgICAgKiB0aGUgUGFja2FnZU1hbmFnZXIgZnJvbSB3aGljaCB5b3Ugb3JpZ2luYWxseSByZXRyaWV2ZWQgdGhpcyBpdGVtLgorICAgICAqIAorICAgICAqIEByZXR1cm4gUmV0dXJucyBhIERyYXdhYmxlIGNvbnRhaW5pbmcgdGhlIGl0ZW0ncyBsb2dvLiBJZiB0aGUgaXRlbQorICAgICAqIGRvZXMgbm90IGhhdmUgYSBsb2dvLCB0aGlzIG1ldGhvZCB3aWxsIHJldHVybiBudWxsLgorICAgICAqLworICAgIHB1YmxpYyBEcmF3YWJsZSBsb2FkTG9nbyhQYWNrYWdlTWFuYWdlciBwbSkgeworICAgICAgICBpZiAobG9nbyAhPSAwKSB7CisgICAgICAgICAgICBEcmF3YWJsZSBkID0gcG0uZ2V0RHJhd2FibGUocGFja2FnZU5hbWUsIGxvZ28sIGdldEFwcGxpY2F0aW9uSW5mbygpKTsKKyAgICAgICAgICAgIGlmIChkICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbG9hZERlZmF1bHRMb2dvKHBtKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUmV0cmlldmUgdGhlIGRlZmF1bHQgZ3JhcGhpY2FsIGxvZ28gYXNzb2NpYXRlZCB3aXRoIHRoaXMgaXRlbS4KKyAgICAgKiAKKyAgICAgKiBAcGFyYW0gcG0gQSBQYWNrYWdlTWFuYWdlciBmcm9tIHdoaWNoIHRoZSBsb2dvIGNhbiBiZSBsb2FkZWQ7IHVzdWFsbHkKKyAgICAgKiB0aGUgUGFja2FnZU1hbmFnZXIgZnJvbSB3aGljaCB5b3Ugb3JpZ2luYWxseSByZXRyaWV2ZWQgdGhpcyBpdGVtLgorICAgICAqIAorICAgICAqIEByZXR1cm4gUmV0dXJucyBhIERyYXdhYmxlIGNvbnRhaW5pbmcgdGhlIGl0ZW0ncyBkZWZhdWx0IGxvZ28KKyAgICAgKiBvciBudWxsIGlmIG5vIGRlZmF1bHQgbG9nbyBpcyBhdmFpbGFibGUuCisgICAgICogCisgICAgICogQGhpZGUKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgRHJhd2FibGUgbG9hZERlZmF1bHRMb2dvKFBhY2thZ2VNYW5hZ2VyIHBtKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgICAKKyAgICAvKioKICAgICAgKiBMb2FkIGFuIFhNTCByZXNvdXJjZSBhdHRhY2hlZCB0byB0aGUgbWV0YS1kYXRhIG9mIHRoaXMgaXRlbS4gIFRoaXMgd2lsbAogICAgICAqIHJldHJpZXZlZCB0aGUgbmFtZSBtZXRhLWRhdGEgZW50cnksIGFuZCBpZiBkZWZpbmVkIGNhbGwgYmFjayBvbiB0aGUKICAgICAgKiBnaXZlbiBQYWNrYWdlTWFuYWdlciB0byBsb2FkIGl0cyBYTUwgZmlsZSBmcm9tIHRoZSBhcHBsaWNhdGlvbi4KQEAgLTE5Niw2ICsyNDEsNyBAQAogICAgICAgICBkZXN0LndyaXRlSW50KGxhYmVsUmVzKTsKICAgICAgICAgVGV4dFV0aWxzLndyaXRlVG9QYXJjZWwobm9uTG9jYWxpemVkTGFiZWwsIGRlc3QsIHBhcmNlbGFibGVGbGFncyk7CiAgICAgICAgIGRlc3Qud3JpdGVJbnQoaWNvbik7CisgICAgICAgIGRlc3Qud3JpdGVJbnQobG9nbyk7CiAgICAgICAgIGRlc3Qud3JpdGVCdW5kbGUobWV0YURhdGEpOwogICAgIH0KICAgICAKQEAgLTIwNiw2ICsyNTIsNyBAQAogICAgICAgICBub25Mb2NhbGl6ZWRMYWJlbAogICAgICAgICAgICAgICAgID0gVGV4dFV0aWxzLkNIQVJfU0VRVUVOQ0VfQ1JFQVRPUi5jcmVhdGVGcm9tUGFyY2VsKHNvdXJjZSk7CiAgICAgICAgIGljb24gPSBzb3VyY2UucmVhZEludCgpOworICAgICAgICBsb2dvID0gc291cmNlLnJlYWRJbnQoKTsKICAgICAgICAgbWV0YURhdGEgPSBzb3VyY2UucmVhZEJ1bmRsZSgpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9wbS9QYWNrYWdlTWFuYWdlci5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9wbS9QYWNrYWdlTWFuYWdlci5qYXZhCmluZGV4IDY4YjQ0ZTcuLjE1YTQ0NmIgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL2NvbnRlbnQvcG0vUGFja2FnZU1hbmFnZXIuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9jb250ZW50L3BtL1BhY2thZ2VNYW5hZ2VyLmphdmEKQEAgLTY1Niw2ICs2NTYsMTMgQEAKIAogICAgIC8qKgogICAgICAqIEZlYXR1cmUgZm9yIHtAbGluayAjZ2V0U3lzdGVtQXZhaWxhYmxlRmVhdHVyZXN9IGFuZAorICAgICAqIHtAbGluayAjaGFzU3lzdGVtRmVhdHVyZX06IFRoZSBkZXZpY2UgaGFzIGEgZnJvbnQgZmFjaW5nIGNhbWVyYS4KKyAgICAgKi8KKyAgICBAU2RrQ29uc3RhbnQoU2RrQ29uc3RhbnRUeXBlLkZFQVRVUkUpCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRkVBVFVSRV9DQU1FUkFfRlJPTlQgPSAiYW5kcm9pZC5oYXJkd2FyZS5jYW1lcmEuZnJvbnQiOworCisgICAgLyoqCisgICAgICogRmVhdHVyZSBmb3Ige0BsaW5rICNnZXRTeXN0ZW1BdmFpbGFibGVGZWF0dXJlc30gYW5kCiAgICAgICoge0BsaW5rICNoYXNTeXN0ZW1GZWF0dXJlfTogVGhlIGRldmljZSBzdXBwb3J0cyBvbmUgb3IgbW9yZSBtZXRob2RzIG9mCiAgICAgICogcmVwb3J0aW5nIGN1cnJlbnQgbG9jYXRpb24uCiAgICAgICovCkBAIC0xNTk3LDYgKzE2MDQsNzkgQEAKICAgICAgICAgICAgIHRocm93cyBOYW1lTm90Rm91bmRFeGNlcHRpb247CiAKICAgICAvKioKKyAgICAgKiBSZXRyaWV2ZSB0aGUgbG9nbyBhc3NvY2lhdGVkIHdpdGggYW4gYWN0aXZpdHkuICBHaXZlbiB0aGUgZnVsbCBuYW1lIG9mCisgICAgICogYW4gYWN0aXZpdHksIHJldHJpZXZlcyB0aGUgaW5mb3JtYXRpb24gYWJvdXQgaXQgYW5kIGNhbGxzCisgICAgICoge0BsaW5rIENvbXBvbmVudEluZm8jbG9hZExvZ28gQ29tcG9uZW50SW5mby5sb2FkTG9nbygpfSB0byByZXR1cm4gaXRzIGxvZ28uCisgICAgICogSWYgdGhlIGFjdGl2aXR5IGNhbiBub3QgYmUgZm91bmQsIE5hbWVOb3RGb3VuZEV4Y2VwdGlvbiBpcyB0aHJvd24uCisgICAgICoKKyAgICAgKiBAcGFyYW0gYWN0aXZpdHlOYW1lIE5hbWUgb2YgdGhlIGFjdGl2aXR5IHdob3NlIGxvZ28gaXMgdG8gYmUgcmV0cmlldmVkLgorICAgICAqCisgICAgICogQHJldHVybiBSZXR1cm5zIHRoZSBpbWFnZSBvZiB0aGUgbG9nbyBvciBudWxsIGlmIHRoZSBhY3Rpdml0eSBoYXMgbm8KKyAgICAgKiBsb2dvIHNwZWNpZmllZC4KKyAgICAgKiAKKyAgICAgKiBAdGhyb3dzIE5hbWVOb3RGb3VuZEV4Y2VwdGlvbiBUaHJvd24gaWYgdGhlIHJlc291cmNlcyBmb3IgdGhlIGdpdmVuCisgICAgICogYWN0aXZpdHkgY291bGQgbm90IGJlIGxvYWRlZC4KKyAgICAgKgorICAgICAqIEBzZWUgI2dldEFjdGl2aXR5TG9nbyhJbnRlbnQpCisgICAgICovCisgICAgcHVibGljIGFic3RyYWN0IERyYXdhYmxlIGdldEFjdGl2aXR5TG9nbyhDb21wb25lbnROYW1lIGFjdGl2aXR5TmFtZSkKKyAgICAgICAgICAgIHRocm93cyBOYW1lTm90Rm91bmRFeGNlcHRpb247CisKKyAgICAvKioKKyAgICAgKiBSZXRyaWV2ZSB0aGUgbG9nbyBhc3NvY2lhdGVkIHdpdGggYW4gSW50ZW50LiAgSWYgaW50ZW50LmdldENsYXNzTmFtZSgpIGlzCisgICAgICogc2V0LCB0aGlzIHNpbXBseSByZXR1cm5zIHRoZSByZXN1bHQgb2YKKyAgICAgKiBnZXRBY3Rpdml0eUxvZ28oaW50ZW50LmdldENsYXNzTmFtZSgpKS4gIE90aGVyd2lzZSBpdCByZXNvbHZlcyB0aGUgaW50ZW50J3MKKyAgICAgKiBjb21wb25lbnQgYW5kIHJldHVybnMgdGhlIGxvZ28gYXNzb2NpYXRlZCB3aXRoIHRoZSByZXNvbHZlZCBjb21wb25lbnQuCisgICAgICogSWYgaW50ZW50LmdldENsYXNzTmFtZSgpIGNhbiBub3QgYmUgZm91bmQgb3IgdGhlIEludGVudCBjYW4gbm90IGJlIHJlc29sdmVkCisgICAgICogdG8gYSBjb21wb25lbnQsIE5hbWVOb3RGb3VuZEV4Y2VwdGlvbiBpcyB0aHJvd24uCisgICAgICoKKyAgICAgKiBAcGFyYW0gaW50ZW50IFRoZSBpbnRlbnQgZm9yIHdoaWNoIHlvdSB3b3VsZCBsaWtlIHRvIHJldHJpZXZlIGEgbG9nby4KKyAgICAgKgorICAgICAqIEByZXR1cm4gUmV0dXJucyB0aGUgaW1hZ2Ugb2YgdGhlIGxvZ28sIG9yIG51bGwgaWYgdGhlIGFjdGl2aXR5IGhhcyBubworICAgICAqIGxvZ28gc3BlY2lmaWVkLgorICAgICAqIAorICAgICAqIEB0aHJvd3MgTmFtZU5vdEZvdW5kRXhjZXB0aW9uIFRocm93biBpZiB0aGUgcmVzb3VyY2VzIGZvciBhcHBsaWNhdGlvbgorICAgICAqIG1hdGNoaW5nIHRoZSBnaXZlbiBpbnRlbnQgY291bGQgbm90IGJlIGxvYWRlZC4KKyAgICAgKgorICAgICAqIEBzZWUgI2dldEFjdGl2aXR5TG9nbyhDb21wb25lbnROYW1lKQorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCBEcmF3YWJsZSBnZXRBY3Rpdml0eUxvZ28oSW50ZW50IGludGVudCkKKyAgICAgICAgICAgIHRocm93cyBOYW1lTm90Rm91bmRFeGNlcHRpb247CisKKyAgICAvKioKKyAgICAgKiBSZXRyaWV2ZSB0aGUgbG9nbyBhc3NvY2lhdGVkIHdpdGggYW4gYXBwbGljYXRpb24uICBJZiBpdCBoYXMgbm90IHNwZWNpZmllZAorICAgICAqIGEgbG9nbywgdGhpcyBtZXRob2QgcmV0dXJucyBudWxsLgorICAgICAqCisgICAgICogQHBhcmFtIGluZm8gSW5mb3JtYXRpb24gYWJvdXQgYXBwbGljYXRpb24gYmVpbmcgcXVlcmllZC4KKyAgICAgKgorICAgICAqIEByZXR1cm4gUmV0dXJucyB0aGUgaW1hZ2Ugb2YgdGhlIGxvZ28sIG9yIG51bGwgaWYgbm8gbG9nbyBpcyBzcGVjaWZpZWQKKyAgICAgKiBieSB0aGUgYXBwbGljYXRpb24uCisgICAgICoKKyAgICAgKiBAc2VlICNnZXRBcHBsaWNhdGlvbkxvZ28oU3RyaW5nKQorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCBEcmF3YWJsZSBnZXRBcHBsaWNhdGlvbkxvZ28oQXBwbGljYXRpb25JbmZvIGluZm8pOworCisgICAgLyoqCisgICAgICogUmV0cmlldmUgdGhlIGxvZ28gYXNzb2NpYXRlZCB3aXRoIGFuIGFwcGxpY2F0aW9uLiAgR2l2ZW4gdGhlIG5hbWUgb2YgdGhlCisgICAgICogYXBwbGljYXRpb24ncyBwYWNrYWdlLCByZXRyaWV2ZXMgdGhlIGluZm9ybWF0aW9uIGFib3V0IGl0IGFuZCBjYWxscworICAgICAqIGdldEFwcGxpY2F0aW9uTG9nbygpIHRvIHJldHVybiBpdHMgbG9nby4gSWYgdGhlIGFwcGxpY2F0aW9uIGNhbiBub3QgYmUKKyAgICAgKiBmb3VuZCwgTmFtZU5vdEZvdW5kRXhjZXB0aW9uIGlzIHRocm93bi4KKyAgICAgKgorICAgICAqIEBwYXJhbSBwYWNrYWdlTmFtZSBOYW1lIG9mIHRoZSBwYWNrYWdlIHdob3NlIGFwcGxpY2F0aW9uIGxvZ28gaXMgdG8gYmUKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgcmV0cmlldmVkLgorICAgICAqCisgICAgICogQHJldHVybiBSZXR1cm5zIHRoZSBpbWFnZSBvZiB0aGUgbG9nbywgb3IgbnVsbCBpZiBubyBhcHBsaWNhdGlvbiBsb2dvCisgICAgICogaGFzIGJlZW4gc3BlY2lmaWVkLgorICAgICAqIAorICAgICAqIEB0aHJvd3MgTmFtZU5vdEZvdW5kRXhjZXB0aW9uIFRocm93biBpZiB0aGUgcmVzb3VyY2VzIGZvciB0aGUgZ2l2ZW4KKyAgICAgKiBhcHBsaWNhdGlvbiBjb3VsZCBub3QgYmUgbG9hZGVkLgorICAgICAqCisgICAgICogQHNlZSAjZ2V0QXBwbGljYXRpb25Mb2dvKEFwcGxpY2F0aW9uSW5mbykKKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgRHJhd2FibGUgZ2V0QXBwbGljYXRpb25Mb2dvKFN0cmluZyBwYWNrYWdlTmFtZSkKKyAgICAgICAgICAgIHRocm93cyBOYW1lTm90Rm91bmRFeGNlcHRpb247CisKKyAgICAvKioKICAgICAgKiBSZXRyaWV2ZSB0ZXh0IGZyb20gYSBwYWNrYWdlLiAgVGhpcyBpcyBhIGxvdy1sZXZlbCBBUEkgdXNlZCBieQogICAgICAqIHRoZSB2YXJpb3VzIHBhY2thZ2UgbWFuYWdlciBpbmZvIHN0cnVjdHVyZXMgKHN1Y2ggYXMKICAgICAgKiB7QGxpbmsgQ29tcG9uZW50SW5mb30gdG8gaW1wbGVtZW50IHJldHJpZXZhbCBvZiB0aGVpciBhc3NvY2lhdGVkCkBAIC0yMTEzLDQgKzIxOTMsMTcgQEAKICAgICAgKi8KICAgICBwdWJsaWMgYWJzdHJhY3Qgdm9pZCBtb3ZlUGFja2FnZSgKICAgICAgICAgICAgIFN0cmluZyBwYWNrYWdlTmFtZSwgSVBhY2thZ2VNb3ZlT2JzZXJ2ZXIgb2JzZXJ2ZXIsIGludCBmbGFncyk7CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBPcGFxdWUgQmluYXJ5IEJsb2IgKE9CQikgZmlsZSBsb2NhdGlvbi4KKyAgICAgKiA8cD4KKyAgICAgKiBOT1RFOiBUaGUgZXhpc3RlbmNlIG9yIGZvcm1hdCBvZiB0aGlzIGZpbGUgaXMgbm90IGN1cnJlbnRseSBjaGVja2VkLCBidXQKKyAgICAgKiBpdCBtYXkgYmUgaW4gdGhlIGZ1dHVyZS4KKyAgICAgKiAKKyAgICAgKiBAcGFyYW0gcGFja2FnZU5hbWUgTmFtZSBvZiB0aGUgcGFja2FnZSB3aXRoIHdoaWNoIHRvIGFzc29jaWF0ZSB0aGUgLm9iYgorICAgICAqICAgICAgICAgICAgZmlsZQorICAgICAqIEBwYXJhbSBwYXRoIFBhdGggb24gdGhlIGZpbGVzeXN0ZW0gdG8gdGhlIC5vYmIgZmlsZQorICAgICAqIEBoaWRlCisgICAgICovCisgICAgcHVibGljIGFic3RyYWN0IHZvaWQgc2V0UGFja2FnZU9iYlBhdGgoU3RyaW5nIHBhY2thZ2VOYW1lLCBTdHJpbmcgcGF0aCk7CiB9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9jb250ZW50L3BtL1BhY2thZ2VQYXJzZXIuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL2NvbnRlbnQvcG0vUGFja2FnZVBhcnNlci5qYXZhCmluZGV4IDJhMjBhMmQuLjVkYzQxZDIgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL2NvbnRlbnQvcG0vUGFja2FnZVBhcnNlci5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL2NvbnRlbnQvcG0vUGFja2FnZVBhcnNlci5qYXZhCkBAIC0xMDUsMTcgKzEwNSwxOSBAQAogICAgICAgICBmaW5hbCBpbnQgbmFtZVJlczsKICAgICAgICAgZmluYWwgaW50IGxhYmVsUmVzOwogICAgICAgICBmaW5hbCBpbnQgaWNvblJlczsKKyAgICAgICAgZmluYWwgaW50IGxvZ29SZXM7CiAgICAgICAgIAogICAgICAgICBTdHJpbmcgdGFnOwogICAgICAgICBUeXBlZEFycmF5IHNhOwogICAgICAgICAKICAgICAgICAgUGFyc2VQYWNrYWdlSXRlbUFyZ3MoUGFja2FnZSBfb3duZXIsIFN0cmluZ1tdIF9vdXRFcnJvciwKLSAgICAgICAgICAgICAgICBpbnQgX25hbWVSZXMsIGludCBfbGFiZWxSZXMsIGludCBfaWNvblJlcykgeworICAgICAgICAgICAgICAgIGludCBfbmFtZVJlcywgaW50IF9sYWJlbFJlcywgaW50IF9pY29uUmVzLCBpbnQgX2xvZ29SZXMpIHsKICAgICAgICAgICAgIG93bmVyID0gX293bmVyOwogICAgICAgICAgICAgb3V0RXJyb3IgPSBfb3V0RXJyb3I7CiAgICAgICAgICAgICBuYW1lUmVzID0gX25hbWVSZXM7CiAgICAgICAgICAgICBsYWJlbFJlcyA9IF9sYWJlbFJlczsKICAgICAgICAgICAgIGljb25SZXMgPSBfaWNvblJlczsKKyAgICAgICAgICAgIGxvZ29SZXMgPSBfbG9nb1JlczsKICAgICAgICAgfQogICAgIH0KICAgICAKQEAgLTEyNywxMCArMTI5LDEwIEBACiAgICAgICAgIGludCBmbGFnczsKICAgICAgICAgCiAgICAgICAgIFBhcnNlQ29tcG9uZW50QXJncyhQYWNrYWdlIF9vd25lciwgU3RyaW5nW10gX291dEVycm9yLAotICAgICAgICAgICAgICAgIGludCBfbmFtZVJlcywgaW50IF9sYWJlbFJlcywgaW50IF9pY29uUmVzLAorICAgICAgICAgICAgICAgIGludCBfbmFtZVJlcywgaW50IF9sYWJlbFJlcywgaW50IF9pY29uUmVzLCBpbnQgX2xvZ29SZXMsCiAgICAgICAgICAgICAgICAgU3RyaW5nW10gX3NlcFByb2Nlc3NlcywgaW50IF9wcm9jZXNzUmVzLAogICAgICAgICAgICAgICAgIGludCBfZGVzY3JpcHRpb25SZXMsIGludCBfZW5hYmxlZFJlcykgewotICAgICAgICAgICAgc3VwZXIoX293bmVyLCBfb3V0RXJyb3IsIF9uYW1lUmVzLCBfbGFiZWxSZXMsIF9pY29uUmVzKTsKKyAgICAgICAgICAgIHN1cGVyKF9vd25lciwgX291dEVycm9yLCBfbmFtZVJlcywgX2xhYmVsUmVzLCBfaWNvblJlcywgX2xvZ29SZXMpOwogICAgICAgICAgICAgc2VwUHJvY2Vzc2VzID0gX3NlcFByb2Nlc3NlczsKICAgICAgICAgICAgIHByb2Nlc3NSZXMgPSBfcHJvY2Vzc1JlczsKICAgICAgICAgICAgIGRlc2NyaXB0aW9uUmVzID0gX2Rlc2NyaXB0aW9uUmVzOwpAQCAtNzg5LDYgKzc5MSw3IEBACiAgICAgICAgIGludCBzdXBwb3J0c1NtYWxsU2NyZWVucyA9IDE7CiAgICAgICAgIGludCBzdXBwb3J0c05vcm1hbFNjcmVlbnMgPSAxOwogICAgICAgICBpbnQgc3VwcG9ydHNMYXJnZVNjcmVlbnMgPSAxOworICAgICAgICBpbnQgc3VwcG9ydHNYTGFyZ2VTY3JlZW5zID0gMTsKICAgICAgICAgaW50IHJlc2l6ZWFibGUgPSAxOwogICAgICAgICBpbnQgYW55RGVuc2l0eSA9IDE7CiAgICAgICAgIApAQCAtOTk2LDkgKzk5OSwxMiBAQAogICAgICAgICAgICAgICAgIHN1cHBvcnRzTGFyZ2VTY3JlZW5zID0gc2EuZ2V0SW50ZWdlcigKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLkFuZHJvaWRNYW5pZmVzdFN1cHBvcnRzU2NyZWVuc19sYXJnZVNjcmVlbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwb3J0c0xhcmdlU2NyZWVucyk7CisgICAgICAgICAgICAgICAgc3VwcG9ydHNYTGFyZ2VTY3JlZW5zID0gc2EuZ2V0SW50ZWdlcigKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLkFuZHJvaWRNYW5pZmVzdFN1cHBvcnRzU2NyZWVuc194bGFyZ2VTY3JlZW5zLAorICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHNYTGFyZ2VTY3JlZW5zKTsKICAgICAgICAgICAgICAgICByZXNpemVhYmxlID0gc2EuZ2V0SW50ZWdlcigKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLkFuZHJvaWRNYW5pZmVzdFN1cHBvcnRzU2NyZWVuc19yZXNpemVhYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydHNMYXJnZVNjcmVlbnMpOworICAgICAgICAgICAgICAgICAgICAgICAgcmVzaXplYWJsZSk7CiAgICAgICAgICAgICAgICAgYW55RGVuc2l0eSA9IHNhLmdldEludGVnZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5BbmRyb2lkTWFuaWZlc3RTdXBwb3J0c1NjcmVlbnNfYW55RGVuc2l0eSwKICAgICAgICAgICAgICAgICAgICAgICAgIGFueURlbnNpdHkpOwpAQCAtMTEzMiw2ICsxMTM4LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICA+PSBhbmRyb2lkLm9zLkJ1aWxkLlZFUlNJT05fQ09ERVMuRE9OVVQpKSB7CiAgICAgICAgICAgICBwa2cuYXBwbGljYXRpb25JbmZvLmZsYWdzIHw9IEFwcGxpY2F0aW9uSW5mby5GTEFHX1NVUFBPUlRTX0xBUkdFX1NDUkVFTlM7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKHN1cHBvcnRzWExhcmdlU2NyZWVucyA8IDAgfHwgKHN1cHBvcnRzWExhcmdlU2NyZWVucyA+IDAKKyAgICAgICAgICAgICAgICAmJiBwa2cuYXBwbGljYXRpb25JbmZvLnRhcmdldFNka1ZlcnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgID49IGFuZHJvaWQub3MuQnVpbGQuVkVSU0lPTl9DT0RFUy5HSU5HRVJCUkVBRCkpIHsKKyAgICAgICAgICAgIHBrZy5hcHBsaWNhdGlvbkluZm8uZmxhZ3MgfD0gQXBwbGljYXRpb25JbmZvLkZMQUdfU1VQUE9SVFNfWExBUkdFX1NDUkVFTlM7CisgICAgICAgIH0KICAgICAgICAgaWYgKHJlc2l6ZWFibGUgPCAwIHx8IChyZXNpemVhYmxlID4gMAogICAgICAgICAgICAgICAgICYmIHBrZy5hcHBsaWNhdGlvbkluZm8udGFyZ2V0U2RrVmVyc2lvbgogICAgICAgICAgICAgICAgICAgICAgICAgPj0gYW5kcm9pZC5vcy5CdWlsZC5WRVJTSU9OX0NPREVTLkRPTlVUKSkgewpAQCAtMTI0MSw3ICsxMjUyLDggQEAKICAgICAgICAgICAgICAgICAiPHBlcm1pc3Npb24tZ3JvdXA+Iiwgc2EsCiAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuQW5kcm9pZE1hbmlmZXN0UGVybWlzc2lvbkdyb3VwX25hbWUsCiAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuQW5kcm9pZE1hbmlmZXN0UGVybWlzc2lvbkdyb3VwX2xhYmVsLAotICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLkFuZHJvaWRNYW5pZmVzdFBlcm1pc3Npb25Hcm91cF9pY29uKSkgeworICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLkFuZHJvaWRNYW5pZmVzdFBlcm1pc3Npb25Hcm91cF9pY29uLAorICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLkFuZHJvaWRNYW5pZmVzdFBlcm1pc3Npb25Hcm91cF9sb2dvKSkgewogICAgICAgICAgICAgc2EucmVjeWNsZSgpOwogICAgICAgICAgICAgbVBhcnNlRXJyb3IgPSBQYWNrYWdlTWFuYWdlci5JTlNUQUxMX1BBUlNFX0ZBSUxFRF9NQU5JRkVTVF9NQUxGT1JNRUQ7CiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKQEAgLTEyNzYsNyArMTI4OCw4IEBACiAgICAgICAgICAgICAgICAgIjxwZXJtaXNzaW9uPiIsIHNhLAogICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLkFuZHJvaWRNYW5pZmVzdFBlcm1pc3Npb25fbmFtZSwKICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5BbmRyb2lkTWFuaWZlc3RQZXJtaXNzaW9uX2xhYmVsLAotICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLkFuZHJvaWRNYW5pZmVzdFBlcm1pc3Npb25faWNvbikpIHsKKyAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5BbmRyb2lkTWFuaWZlc3RQZXJtaXNzaW9uX2ljb24sCisgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuQW5kcm9pZE1hbmlmZXN0UGVybWlzc2lvbl9sb2dvKSkgewogICAgICAgICAgICAgc2EucmVjeWNsZSgpOwogICAgICAgICAgICAgbVBhcnNlRXJyb3IgPSBQYWNrYWdlTWFuYWdlci5JTlNUQUxMX1BBUlNFX0ZBSUxFRF9NQU5JRkVTVF9NQUxGT1JNRUQ7CiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKQEAgLTEzMjksNyArMTM0Miw4IEBACiAgICAgICAgICAgICAgICAgIjxwZXJtaXNzaW9uLXRyZWU+Iiwgc2EsCiAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuQW5kcm9pZE1hbmlmZXN0UGVybWlzc2lvblRyZWVfbmFtZSwKICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5BbmRyb2lkTWFuaWZlc3RQZXJtaXNzaW9uVHJlZV9sYWJlbCwKLSAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5BbmRyb2lkTWFuaWZlc3RQZXJtaXNzaW9uVHJlZV9pY29uKSkgeworICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLkFuZHJvaWRNYW5pZmVzdFBlcm1pc3Npb25UcmVlX2ljb24sCisgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuQW5kcm9pZE1hbmlmZXN0UGVybWlzc2lvblRyZWVfbG9nbykpIHsKICAgICAgICAgICAgIHNhLnJlY3ljbGUoKTsKICAgICAgICAgICAgIG1QYXJzZUVycm9yID0gUGFja2FnZU1hbmFnZXIuSU5TVEFMTF9QQVJTRV9GQUlMRURfTUFOSUZFU1RfTUFMRk9STUVEOwogICAgICAgICAgICAgcmV0dXJuIG51bGw7CkBAIC0xMzczLDcgKzEzODcsOCBAQAogICAgICAgICAgICAgbVBhcnNlSW5zdHJ1bWVudGF0aW9uQXJncyA9IG5ldyBQYXJzZVBhY2thZ2VJdGVtQXJncyhvd25lciwgb3V0RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLkFuZHJvaWRNYW5pZmVzdEluc3RydW1lbnRhdGlvbl9uYW1lLAogICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5BbmRyb2lkTWFuaWZlc3RJbnN0cnVtZW50YXRpb25fbGFiZWwsCi0gICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLkFuZHJvaWRNYW5pZmVzdEluc3RydW1lbnRhdGlvbl9pY29uKTsKKyAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuQW5kcm9pZE1hbmlmZXN0SW5zdHJ1bWVudGF0aW9uX2ljb24sCisgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLkFuZHJvaWRNYW5pZmVzdEluc3RydW1lbnRhdGlvbl9sb2dvKTsKICAgICAgICAgICAgIG1QYXJzZUluc3RydW1lbnRhdGlvbkFyZ3MudGFnID0gIjxpbnN0cnVtZW50YXRpb24+IjsKICAgICAgICAgfQogICAgICAgICAKQEAgLTE0ODUsNiArMTUwMCw4IEBACiAKICAgICAgICAgYWkuaWNvbiA9IHNhLmdldFJlc291cmNlSWQoCiAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuQW5kcm9pZE1hbmlmZXN0QXBwbGljYXRpb25faWNvbiwgMCk7CisgICAgICAgIGFpLmxvZ28gPSBzYS5nZXRSZXNvdXJjZUlkKAorICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLkFuZHJvaWRNYW5pZmVzdEFwcGxpY2F0aW9uX2xvZ28sIDApOwogICAgICAgICBhaS50aGVtZSA9IHNhLmdldFJlc291cmNlSWQoCiAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuQW5kcm9pZE1hbmlmZXN0QXBwbGljYXRpb25fdGhlbWUsIDApOwogICAgICAgICBhaS5kZXNjcmlwdGlvblJlcyA9IHNhLmdldFJlc291cmNlSWQoCkBAIC0xNTQyLDYgKzE1NTksMTIgQEAKICAgICAgICAgICAgIGFpLmZsYWdzIHw9IEFwcGxpY2F0aW9uSW5mby5GTEFHX1RFU1RfT05MWTsKICAgICAgICAgfQogCisgICAgICAgIGlmIChzYS5nZXRCb29sZWFuKAorICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLkFuZHJvaWRNYW5pZmVzdEFwcGxpY2F0aW9uX25ldmVyRW5jcnlwdCwKKyAgICAgICAgICAgICAgICBmYWxzZSkpIHsKKyAgICAgICAgICAgIGFpLmZsYWdzIHw9IEFwcGxpY2F0aW9uSW5mby5GTEFHX05FVkVSX0VOQ1JZUFQ7CisgICAgICAgIH0KKwogICAgICAgICBTdHJpbmcgc3RyOwogICAgICAgICBzdHIgPSBzYS5nZXROb25Db25maWd1cmF0aW9uU3RyaW5nKAogICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLkFuZHJvaWRNYW5pZmVzdEFwcGxpY2F0aW9uX3Blcm1pc3Npb24sIDApOwpAQCAtMTU3Nyw2ICsxNjAwLDE4IEBACiAgICAgCiAgICAgICAgICAgICBhaS5lbmFibGVkID0gc2EuZ2V0Qm9vbGVhbigKICAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuQW5kcm9pZE1hbmlmZXN0QXBwbGljYXRpb25fZW5hYmxlZCwgdHJ1ZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChzYS5nZXRCb29sZWFuKAorICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5BbmRyb2lkTWFuaWZlc3RBcHBsaWNhdGlvbl9oZWF2eVdlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgZmFsc2UpKSB7CisgICAgICAgICAgICAgICAgYWkuZmxhZ3MgfD0gQXBwbGljYXRpb25JbmZvLkZMQUdfSEVBVllfV0VJR0hUOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vIEEgaGVhdnktd2VpZ2h0IGFwcGxpY2F0aW9uIGNhbiBub3QgYmUgaW4gYSBjdXN0b20gcHJvY2Vzcy4KKyAgICAgICAgICAgICAgICAvLyBXZSBjYW4gZG8gZGlyZWN0IGNvbXBhcmUgYmVjYXVzZSB3ZSBpbnRlcm4gYWxsIHN0cmluZ3MuCisgICAgICAgICAgICAgICAgaWYgKGFpLnByb2Nlc3NOYW1lICE9IG51bGwgJiYgYWkucHJvY2Vzc05hbWUgIT0gYWkucGFja2FnZU5hbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgb3V0RXJyb3JbMF0gPSAiSGVhdnktd2VpZ2h0IGFwcGxpY2F0aW9ucyBjYW4gbm90IHVzZSBjdXN0b20gcHJvY2Vzc2VzIjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICBzYS5yZWN5Y2xlKCk7CkBAIC0xNzA1LDcgKzE3NDAsNyBAQAogCiAgICAgcHJpdmF0ZSBib29sZWFuIHBhcnNlUGFja2FnZUl0ZW1JbmZvKFBhY2thZ2Ugb3duZXIsIFBhY2thZ2VJdGVtSW5mbyBvdXRJbmZvLAogICAgICAgICAgICAgU3RyaW5nW10gb3V0RXJyb3IsIFN0cmluZyB0YWcsIFR5cGVkQXJyYXkgc2EsCi0gICAgICAgICAgICBpbnQgbmFtZVJlcywgaW50IGxhYmVsUmVzLCBpbnQgaWNvblJlcykgeworICAgICAgICAgICAgaW50IG5hbWVSZXMsIGludCBsYWJlbFJlcywgaW50IGljb25SZXMsIGludCBsb2dvUmVzKSB7CiAgICAgICAgIFN0cmluZyBuYW1lID0gc2EuZ2V0Tm9uQ29uZmlndXJhdGlvblN0cmluZyhuYW1lUmVzLCAwKTsKICAgICAgICAgaWYgKG5hbWUgPT0gbnVsbCkgewogICAgICAgICAgICAgb3V0RXJyb3JbMF0gPSB0YWcgKyAiIGRvZXMgbm90IHNwZWNpZnkgYW5kcm9pZDpuYW1lIjsKQEAgLTE3MjMsNiArMTc1OCwxMSBAQAogICAgICAgICAgICAgb3V0SW5mby5pY29uID0gaWNvblZhbDsKICAgICAgICAgICAgIG91dEluZm8ubm9uTG9jYWxpemVkTGFiZWwgPSBudWxsOwogICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpbnQgbG9nb1ZhbCA9IHNhLmdldFJlc291cmNlSWQobG9nb1JlcywgMCk7CisgICAgICAgIGlmIChsb2dvVmFsICE9IDApIHsKKyAgICAgICAgICAgIG91dEluZm8ubG9nbyA9IGxvZ29WYWw7CisgICAgICAgIH0KIAogICAgICAgICBUeXBlZFZhbHVlIHYgPSBzYS5wZWVrVmFsdWUobGFiZWxSZXMpOwogICAgICAgICBpZiAodiAhPSBudWxsICYmIChvdXRJbmZvLmxhYmVsUmVzPXYucmVzb3VyY2VJZCkgPT0gMCkgewpAQCAtMTc0NSw2ICsxNzg1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuQW5kcm9pZE1hbmlmZXN0QWN0aXZpdHlfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuQW5kcm9pZE1hbmlmZXN0QWN0aXZpdHlfbGFiZWwsCiAgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLkFuZHJvaWRNYW5pZmVzdEFjdGl2aXR5X2ljb24sCisgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLkFuZHJvaWRNYW5pZmVzdEFjdGl2aXR5X2xvZ28sCiAgICAgICAgICAgICAgICAgICAgIG1TZXBhcmF0ZVByb2Nlc3NlcywKICAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuQW5kcm9pZE1hbmlmZXN0QWN0aXZpdHlfcHJvY2VzcywKICAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuQW5kcm9pZE1hbmlmZXN0QWN0aXZpdHlfZGVzY3JpcHRpb24sCkBAIC0xODQwLDYgKzE4ODEsMTIgQEAKICAgICAgICAgICAgIGEuaW5mby5mbGFncyB8PSBBY3Rpdml0eUluZm8uRkxBR19GSU5JU0hfT05fQ0xPU0VfU1lTVEVNX0RJQUxPR1M7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoc2EuZ2V0Qm9vbGVhbigKKyAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5BbmRyb2lkTWFuaWZlc3RBY3Rpdml0eV9pbW1lcnNpdmUsCisgICAgICAgICAgICAgICAgZmFsc2UpKSB7CisgICAgICAgICAgICBhLmluZm8uZmxhZ3MgfD0gQWN0aXZpdHlJbmZvLkZMQUdfSU1NRVJTSVZFOworICAgICAgICB9CisKICAgICAgICAgaWYgKCFyZWNlaXZlcikgewogICAgICAgICAgICAgYS5pbmZvLmxhdW5jaE1vZGUgPSBzYS5nZXRJbnQoCiAgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLkFuZHJvaWRNYW5pZmVzdEFjdGl2aXR5X2xhdW5jaE1vZGUsCkBAIC0xODYwLDYgKzE5MDcsMTQgQEAKIAogICAgICAgICBzYS5yZWN5Y2xlKCk7CiAKKyAgICAgICAgaWYgKHJlY2VpdmVyICYmIChvd25lci5hcHBsaWNhdGlvbkluZm8uZmxhZ3MmQXBwbGljYXRpb25JbmZvLkZMQUdfSEVBVllfV0VJR0hUKSAhPSAwKSB7CisgICAgICAgICAgICAvLyBBIGhlYXZ5LXdlaWdodCBhcHBsaWNhdGlvbiBjYW4gbm90IGhhdmUgcmVjZWl2ZXMgaW4gaXRzIG1haW4gcHJvY2VzcworICAgICAgICAgICAgLy8gV2UgY2FuIGRvIGRpcmVjdCBjb21wYXJlIGJlY2F1c2Ugd2UgaW50ZXJuIGFsbCBzdHJpbmdzLgorICAgICAgICAgICAgaWYgKGEuaW5mby5wcm9jZXNzTmFtZSA9PSBvd25lci5wYWNrYWdlTmFtZSkgeworICAgICAgICAgICAgICAgIG91dEVycm9yWzBdID0gIkhlYXZ5LXdlaWdodCBhcHBsaWNhdGlvbnMgY2FuIG5vdCBoYXZlIHJlY2VpdmVycyBpbiBtYWluIHByb2Nlc3MiOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAogICAgICAgICBpZiAob3V0RXJyb3JbMF0gIT0gbnVsbCkgewogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgIH0KQEAgLTE5NDcsNiArMjAwMiw3IEBACiAgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLkFuZHJvaWRNYW5pZmVzdEFjdGl2aXR5QWxpYXNfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuQW5kcm9pZE1hbmlmZXN0QWN0aXZpdHlBbGlhc19sYWJlbCwKICAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuQW5kcm9pZE1hbmlmZXN0QWN0aXZpdHlBbGlhc19pY29uLAorICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5BbmRyb2lkTWFuaWZlc3RBY3Rpdml0eUFsaWFzX2xvZ28sCiAgICAgICAgICAgICAgICAgICAgIG1TZXBhcmF0ZVByb2Nlc3NlcywKICAgICAgICAgICAgICAgICAgICAgMCwKICAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuQW5kcm9pZE1hbmlmZXN0QWN0aXZpdHlBbGlhc19kZXNjcmlwdGlvbiwKQEAgLTE5ODAsNiArMjAzNiw3IEBACiAgICAgICAgIGluZm8uY29uZmlnQ2hhbmdlcyA9IHRhcmdldC5pbmZvLmNvbmZpZ0NoYW5nZXM7CiAgICAgICAgIGluZm8uZmxhZ3MgPSB0YXJnZXQuaW5mby5mbGFnczsKICAgICAgICAgaW5mby5pY29uID0gdGFyZ2V0LmluZm8uaWNvbjsKKyAgICAgICAgaW5mby5sb2dvID0gdGFyZ2V0LmluZm8ubG9nbzsKICAgICAgICAgaW5mby5sYWJlbFJlcyA9IHRhcmdldC5pbmZvLmxhYmVsUmVzOwogICAgICAgICBpbmZvLm5vbkxvY2FsaXplZExhYmVsID0gdGFyZ2V0LmluZm8ubm9uTG9jYWxpemVkTGFiZWw7CiAgICAgICAgIGluZm8ubGF1bmNoTW9kZSA9IHRhcmdldC5pbmZvLmxhdW5jaE1vZGU7CkBAIC0yMDc0LDYgKzIxMzEsNyBAQAogICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5BbmRyb2lkTWFuaWZlc3RQcm92aWRlcl9uYW1lLAogICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5BbmRyb2lkTWFuaWZlc3RQcm92aWRlcl9sYWJlbCwKICAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuQW5kcm9pZE1hbmlmZXN0UHJvdmlkZXJfaWNvbiwKKyAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuQW5kcm9pZE1hbmlmZXN0UHJvdmlkZXJfbG9nbywKICAgICAgICAgICAgICAgICAgICAgbVNlcGFyYXRlUHJvY2Vzc2VzLAogICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5BbmRyb2lkTWFuaWZlc3RQcm92aWRlcl9wcm9jZXNzLAogICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5BbmRyb2lkTWFuaWZlc3RQcm92aWRlcl9kZXNjcmlwdGlvbiwKQEAgLTIxMzksNiArMjE5NywxNSBAQAogCiAgICAgICAgIHNhLnJlY3ljbGUoKTsKIAorICAgICAgICBpZiAoKG93bmVyLmFwcGxpY2F0aW9uSW5mby5mbGFncyZBcHBsaWNhdGlvbkluZm8uRkxBR19IRUFWWV9XRUlHSFQpICE9IDApIHsKKyAgICAgICAgICAgIC8vIEEgaGVhdnktd2VpZ2h0IGFwcGxpY2F0aW9uIGNhbiBub3QgaGF2ZSBwcm92aWRlcnMgaW4gaXRzIG1haW4gcHJvY2VzcworICAgICAgICAgICAgLy8gV2UgY2FuIGRvIGRpcmVjdCBjb21wYXJlIGJlY2F1c2Ugd2UgaW50ZXJuIGFsbCBzdHJpbmdzLgorICAgICAgICAgICAgaWYgKHAuaW5mby5wcm9jZXNzTmFtZSA9PSBvd25lci5wYWNrYWdlTmFtZSkgeworICAgICAgICAgICAgICAgIG91dEVycm9yWzBdID0gIkhlYXZ5LXdlaWdodCBhcHBsaWNhdGlvbnMgY2FuIG5vdCBoYXZlIHByb3ZpZGVycyBpbiBtYWluIHByb2Nlc3MiOworICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAogICAgICAgICBpZiAoY3BuYW1lID09IG51bGwpIHsKICAgICAgICAgICAgIG91dEVycm9yWzBdID0gIjxwcm92aWRlcj4gZG9lcyBub3QgaW5jdWRlIGF1dGhvcml0aWVzIGF0dHJpYnV0ZSI7CiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKQEAgLTIzMzcsNiArMjQwNCw3IEBACiAgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLkFuZHJvaWRNYW5pZmVzdFNlcnZpY2VfbmFtZSwKICAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuQW5kcm9pZE1hbmlmZXN0U2VydmljZV9sYWJlbCwKICAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuQW5kcm9pZE1hbmlmZXN0U2VydmljZV9pY29uLAorICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5BbmRyb2lkTWFuaWZlc3RTZXJ2aWNlX2xvZ28sCiAgICAgICAgICAgICAgICAgICAgIG1TZXBhcmF0ZVByb2Nlc3NlcywKICAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuQW5kcm9pZE1hbmlmZXN0U2VydmljZV9wcm9jZXNzLAogICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5BbmRyb2lkTWFuaWZlc3RTZXJ2aWNlX2Rlc2NyaXB0aW9uLApAQCAtMjM3MCw2ICsyNDM4LDE1IEBACiAKICAgICAgICAgc2EucmVjeWNsZSgpOwogCisgICAgICAgIGlmICgob3duZXIuYXBwbGljYXRpb25JbmZvLmZsYWdzJkFwcGxpY2F0aW9uSW5mby5GTEFHX0hFQVZZX1dFSUdIVCkgIT0gMCkgeworICAgICAgICAgICAgLy8gQSBoZWF2eS13ZWlnaHQgYXBwbGljYXRpb24gY2FuIG5vdCBoYXZlIHNlcnZpY2VzIGluIGl0cyBtYWluIHByb2Nlc3MKKyAgICAgICAgICAgIC8vIFdlIGNhbiBkbyBkaXJlY3QgY29tcGFyZSBiZWNhdXNlIHdlIGludGVybiBhbGwgc3RyaW5ncy4KKyAgICAgICAgICAgIGlmIChzLmluZm8ucHJvY2Vzc05hbWUgPT0gb3duZXIucGFja2FnZU5hbWUpIHsKKyAgICAgICAgICAgICAgICBvdXRFcnJvclswXSA9ICJIZWF2eS13ZWlnaHQgYXBwbGljYXRpb25zIGNhbiBub3QgaGF2ZSBzZXJ2aWNlcyBpbiBtYWluIHByb2Nlc3MiOworICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAogICAgICAgICBpbnQgb3V0ZXJEZXB0aCA9IHBhcnNlci5nZXREZXB0aCgpOwogICAgICAgICBpbnQgdHlwZTsKICAgICAgICAgd2hpbGUgKCh0eXBlPXBhcnNlci5uZXh0KCkpICE9IFhtbFB1bGxQYXJzZXIuRU5EX0RPQ1VNRU5UCkBAIC0yNTQwLDYgKzI2MTcsOSBAQAogCiAgICAgICAgIG91dEluZm8uaWNvbiA9IHNhLmdldFJlc291cmNlSWQoCiAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuQW5kcm9pZE1hbmlmZXN0SW50ZW50RmlsdGVyX2ljb24sIDApOworICAgICAgICAKKyAgICAgICAgb3V0SW5mby5sb2dvID0gc2EuZ2V0UmVzb3VyY2VJZCgKKyAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5BbmRyb2lkTWFuaWZlc3RJbnRlbnRGaWx0ZXJfbG9nbywgMCk7CiAKICAgICAgICAgc2EucmVjeWNsZSgpOwogCkBAIC0yODAxLDYgKzI4ODEsMTEgQEAKICAgICAgICAgICAgICAgICBvdXRJbmZvLmljb24gPSBpY29uVmFsOwogICAgICAgICAgICAgICAgIG91dEluZm8ubm9uTG9jYWxpemVkTGFiZWwgPSBudWxsOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpbnQgbG9nb1ZhbCA9IGFyZ3Muc2EuZ2V0UmVzb3VyY2VJZChhcmdzLmxvZ29SZXMsIDApOworICAgICAgICAgICAgaWYgKGxvZ29WYWwgIT0gMCkgeworICAgICAgICAgICAgICAgIG91dEluZm8ubG9nbyA9IGxvZ29WYWw7CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIFR5cGVkVmFsdWUgdiA9IGFyZ3Muc2EucGVla1ZhbHVlKGFyZ3MubGFiZWxSZXMpOwogICAgICAgICAgICAgaWYgKHYgIT0gbnVsbCAmJiAob3V0SW5mby5sYWJlbFJlcz12LnJlc291cmNlSWQpID09IDApIHsKQEAgLTMxMzUsNiArMzIyMCw3IEBACiAgICAgICAgIHB1YmxpYyBpbnQgbGFiZWxSZXM7CiAgICAgICAgIHB1YmxpYyBDaGFyU2VxdWVuY2Ugbm9uTG9jYWxpemVkTGFiZWw7CiAgICAgICAgIHB1YmxpYyBpbnQgaWNvbjsKKyAgICAgICAgcHVibGljIGludCBsb2dvOwogICAgIH0KIAogICAgIHB1YmxpYyBmaW5hbCBzdGF0aWMgY2xhc3MgQWN0aXZpdHlJbnRlbnRJbmZvIGV4dGVuZHMgSW50ZW50SW5mbyB7CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9jb250ZW50L3Jlcy9Db21wYXRpYmlsaXR5SW5mby5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9yZXMvQ29tcGF0aWJpbGl0eUluZm8uamF2YQppbmRleCAxMWM2N2NjLi5kMGJhNTkwIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9jb250ZW50L3Jlcy9Db21wYXRpYmlsaXR5SW5mby5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL2NvbnRlbnQvcmVzL0NvbXBhdGliaWxpdHlJbmZvLmphdmEKQEAgLTk5LDcgKzk5LDIyIEBACiAgICAgICovCiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENPTkZJR1VSRURfTEFSR0VfU0NSRUVOUyA9IDE2OyAKIAotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTQ0FMSU5HX0VYUEFOREFCTEVfTUFTSyA9IFNDQUxJTkdfUkVRVUlSRUQgfCBFWFBBTkRBQkxFIHwgTEFSR0VfU0NSRUVOUzsKKyAgICAvKioKKyAgICAgKiBBIGZsYWcgbWFzayB0byBpbmRpY2F0ZXMgdGhhdCB0aGUgYXBwbGljYXRpb24gc3VwcG9ydHMgeGxhcmdlIHNjcmVlbnMuCisgICAgICogVGhlIGZsYWcgaXMgc2V0IHRvIHRydWUgaWYKKyAgICAgKiAxKSBBcHBsaWNhdGlvbiBkZWNsYXJlcyBpdCBzdXBwb3J0cyB4bGFyZ2Ugc2NyZWVucyBpbiBtYW5pZmVzdCBmaWxlIHVzaW5nIDxzdXBwb3J0cy1zY3JlZW5zPiBvcgorICAgICAqIDIpIFRoZSBzY3JlZW4gc2l6ZSBpcyBub3QgeGxhcmdlCisgICAgICoge0BzZWUgY29tcGF0aWJpbGl0eUZsYWd9CisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFhMQVJHRV9TQ1JFRU5TID0gMzI7CisgICAgCisgICAgLyoqCisgICAgICogQSBmbGFnIG1hc2sgdG8gdGVsbCBpZiB0aGUgYXBwbGljYXRpb24gc3VwcG9ydHMgeGxhcmdlIHNjcmVlbnMuIFRoaXMgZGlmZmVycworICAgICAqIGZyb20gWExBUkdFX1NDUkVFTlMgaW4gdGhhdCB0aGUgYXBwbGljYXRpb24gdGhhdCBkb2VzIG5vdCBzdXBwb3J0IHhsYXJnZQorICAgICAqIHNjcmVlbnMgd2lsbCBiZSBtYXJrZWQgYXMgc3VwcG9ydGluZyB0aGVtIGlmIHRoZSBjdXJyZW50IHNjcmVlbiBpcyBub3QKKyAgICAgKiB4bGFyZ2UuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENPTkZJR1VSRURfWExBUkdFX1NDUkVFTlMgPSA2NDsKIAogICAgIC8qKgogICAgICAqIFRoZSBlZmZlY3RpdmUgc2NyZWVuIGRlbnNpdHkgd2UgaGF2ZSBzZWxlY3RlZCBmb3IgdGhpcyBhcHBsaWNhdGlvbi4KQEAgLTEyNyw2ICsxNDIsOSBAQAogICAgICAgICBpZiAoKGFwcEluZm8uZmxhZ3MgJiBBcHBsaWNhdGlvbkluZm8uRkxBR19TVVBQT1JUU19MQVJHRV9TQ1JFRU5TKSAhPSAwKSB7CiAgICAgICAgICAgICBtQ29tcGF0aWJpbGl0eUZsYWdzIHw9IExBUkdFX1NDUkVFTlMgfCBDT05GSUdVUkVEX0xBUkdFX1NDUkVFTlM7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKChhcHBJbmZvLmZsYWdzICYgQXBwbGljYXRpb25JbmZvLkZMQUdfU1VQUE9SVFNfWExBUkdFX1NDUkVFTlMpICE9IDApIHsKKyAgICAgICAgICAgIG1Db21wYXRpYmlsaXR5RmxhZ3MgfD0gWExBUkdFX1NDUkVFTlMgfCBDT05GSUdVUkVEX1hMQVJHRV9TQ1JFRU5TOworICAgICAgICB9CiAgICAgICAgIGlmICgoYXBwSW5mby5mbGFncyAmIEFwcGxpY2F0aW9uSW5mby5GTEFHX1JFU0laRUFCTEVfRk9SX1NDUkVFTlMpICE9IDApIHsKICAgICAgICAgICAgIG1Db21wYXRpYmlsaXR5RmxhZ3MgfD0gRVhQQU5EQUJMRSB8IENPTkZJR1VSRURfRVhQQU5EQUJMRTsKICAgICAgICAgfQpAQCAtMTU3LDYgKzE3NSw3IEBACiAgICAgICAgIHRoaXMoQXBwbGljYXRpb25JbmZvLkZMQUdfU1VQUE9SVFNfU01BTExfU0NSRUVOUwogICAgICAgICAgICAgICAgIHwgQXBwbGljYXRpb25JbmZvLkZMQUdfU1VQUE9SVFNfTk9STUFMX1NDUkVFTlMKICAgICAgICAgICAgICAgICB8IEFwcGxpY2F0aW9uSW5mby5GTEFHX1NVUFBPUlRTX0xBUkdFX1NDUkVFTlMKKyAgICAgICAgICAgICAgICB8IEFwcGxpY2F0aW9uSW5mby5GTEFHX1NVUFBPUlRTX1hMQVJHRV9TQ1JFRU5TCiAgICAgICAgICAgICAgICAgfCBBcHBsaWNhdGlvbkluZm8uRkxBR19SRVNJWkVBQkxFX0ZPUl9TQ1JFRU5TLAogICAgICAgICAgICAgICAgIEVYUEFOREFCTEUgfCBDT05GSUdVUkVEX0VYUEFOREFCTEUsCiAgICAgICAgICAgICAgICAgRGlzcGxheU1ldHJpY3MuREVOU0lUWV9ERVZJQ0UsCkBAIC0xOTYsNiArMjE1LDE3IEBACiAgICAgfQogCiAgICAgLyoqCisgICAgICogU2V0cyBsYXJnZSBzY3JlZW4gYml0IGluIHRoZSBjb21wYXRpYmlsaXR5IGZsYWcuCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0WExhcmdlU2NyZWVucyhib29sZWFuIGV4cGFuZGFibGUpIHsKKyAgICAgICAgaWYgKGV4cGFuZGFibGUpIHsKKyAgICAgICAgICAgIG1Db21wYXRpYmlsaXR5RmxhZ3MgfD0gQ29tcGF0aWJpbGl0eUluZm8uWExBUkdFX1NDUkVFTlM7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtQ29tcGF0aWJpbGl0eUZsYWdzICY9IH5Db21wYXRpYmlsaXR5SW5mby5YTEFSR0VfU0NSRUVOUzsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgogICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgYXBwbGljYXRpb24gaXMgY29uZmlndXJlZCB0byBiZSBleHBhbmRhYmxlLgogICAgICAqLwogICAgIHB1YmxpYyBib29sZWFuIGlzQ29uZmlndXJlZEV4cGFuZGFibGUoKSB7CkBAIC0yMTAsNiArMjQwLDEzIEBACiAgICAgfQogCiAgICAgLyoqCisgICAgICogQHJldHVybiB0cnVlIGlmIHRoZSBhcHBsaWNhdGlvbiBpcyBjb25maWd1cmVkIHRvIGJlIGV4cGFuZGFibGUuCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gaXNDb25maWd1cmVkWExhcmdlU2NyZWVucygpIHsKKyAgICAgICAgcmV0dXJuIChtQ29tcGF0aWJpbGl0eUZsYWdzICYgQ29tcGF0aWJpbGl0eUluZm8uQ09ORklHVVJFRF9YTEFSR0VfU0NSRUVOUykgIT0gMDsKKyAgICB9CisKKyAgICAvKioKICAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIHNjYWxpbmcgaXMgcmVxdWlyZWQKICAgICAgKi8KICAgICBwdWJsaWMgYm9vbGVhbiBpc1NjYWxpbmdSZXF1aXJlZCgpIHsKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL2NvbnRlbnQvcmVzL0NvbmZpZ3VyYXRpb24uamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL2NvbnRlbnQvcmVzL0NvbmZpZ3VyYXRpb24uamF2YQppbmRleCAxYTBjODY3Li4wMjk1NmJhIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9jb250ZW50L3Jlcy9Db25maWd1cmF0aW9uLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvY29udGVudC9yZXMvQ29uZmlndXJhdGlvbi5qYXZhCkBAIC02Miw2ICs2Miw3IEBACiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0NSRUVOTEFZT1VUX1NJWkVfU01BTEwgPSAweDAxOwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNDUkVFTkxBWU9VVF9TSVpFX05PUk1BTCA9IDB4MDI7CiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0NSRUVOTEFZT1VUX1NJWkVfTEFSR0UgPSAweDAzOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNDUkVFTkxBWU9VVF9TSVpFX1hMQVJHRSA9IDB4MDQ7CiAgICAgCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0NSRUVOTEFZT1VUX0xPTkdfTUFTSyA9IDB4MzA7CiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0NSRUVOTEFZT1VUX0xPTkdfVU5ERUZJTkVEID0gMHgwMDsKQEAgLTgyLDcgKzgzLDcgQEAKICAgICAgKiA8cD5UaGUge0BsaW5rICNTQ1JFRU5MQVlPVVRfU0laRV9NQVNLfSBiaXRzIGRlZmluZSB0aGUgb3ZlcmFsbCBzaXplCiAgICAgICogb2YgdGhlIHNjcmVlbi4gIFRoZXkgbWF5IGJlIG9uZSBvZgogICAgICAqIHtAbGluayAjU0NSRUVOTEFZT1VUX1NJWkVfU01BTEx9LCB7QGxpbmsgI1NDUkVFTkxBWU9VVF9TSVpFX05PUk1BTH0sCi0gICAgICogb3Ige0BsaW5rICNTQ1JFRU5MQVlPVVRfU0laRV9MQVJHRX0uCisgICAgICoge0BsaW5rICNTQ1JFRU5MQVlPVVRfU0laRV9MQVJHRX0sIG9yIHtAbGluayAjU0NSRUVOTEFZT1VUX1NJWkVfWExBUkdFfS4KICAgICAgKiAKICAgICAgKiA8cD5UaGUge0BsaW5rICNTQ1JFRU5MQVlPVVRfTE9OR19NQVNLfSBkZWZpbmVzIHdoZXRoZXIgdGhlIHNjcmVlbgogICAgICAqIGlzIHdpZGVyL3RhbGxlciB0aGFuIG5vcm1hbC4gIFRoZXkgbWF5IGJlIG9uZSBvZgpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvZGF0YWJhc2UvQ3Vyc29yLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9kYXRhYmFzZS9DdXJzb3IuamF2YQppbmRleCA3OTE3OGY0Li42NTM5MTU2IDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9kYXRhYmFzZS9DdXJzb3IuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9kYXRhYmFzZS9DdXJzb3IuamF2YQpAQCAtMjUsNiArMjUsOSBAQAogLyoqCiAgKiBUaGlzIGludGVyZmFjZSBwcm92aWRlcyByYW5kb20gcmVhZC13cml0ZSBhY2Nlc3MgdG8gdGhlIHJlc3VsdCBzZXQgcmV0dXJuZWQKICAqIGJ5IGEgZGF0YWJhc2UgcXVlcnkuCisgKgorICogQ3Vyc29yIGltcGxlbWVudGF0aW9ucyBhcmUgbm90IHJlcXVpcmVkIHRvIGJlIHN5bmNocm9uaXplZCBzbyBjb2RlIHVzaW5nIGEgQ3Vyc29yIGZyb20gbXVsdGlwbGUKKyAqIHRocmVhZHMgc2hvdWxkIHBlcmZvcm0gaXRzIG93biBzeW5jaHJvbml6YXRpb24gd2hlbiB1c2luZyB0aGUgQ3Vyc29yLgogICovCiBwdWJsaWMgaW50ZXJmYWNlIEN1cnNvciB7CiAgICAgLyoqCmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9kYXRhYmFzZS9zcWxpdGUvU1FMaXRlQ3Vyc29yLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9kYXRhYmFzZS9zcWxpdGUvU1FMaXRlQ3Vyc29yLmphdmEKaW5kZXggNmU1YjNlMS4uYzdlNThmYSAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvZGF0YWJhc2Uvc3FsaXRlL1NRTGl0ZUN1cnNvci5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL2RhdGFiYXNlL3NxbGl0ZS9TUUxpdGVDdXJzb3IuamF2YQpAQCAtMzYsNiArMzYsOSBAQAogLyoqCiAgKiBBIEN1cnNvciBpbXBsZW1lbnRhdGlvbiB0aGF0IGV4cG9zZXMgcmVzdWx0cyBmcm9tIGEgcXVlcnkgb24gYQogICoge0BsaW5rIFNRTGl0ZURhdGFiYXNlfS4KKyAqCisgKiBTUUxpdGVDdXJzb3IgaXMgbm90IGludGVybmFsbHkgc3luY2hyb25pemVkIHNvIGNvZGUgdXNpbmcgYSBTUUxpdGVDdXJzb3IgZnJvbSBtdWx0aXBsZQorICogdGhyZWFkcyBzaG91bGQgcGVyZm9ybSBpdHMgb3duIHN5bmNocm9uaXphdGlvbiB3aGVuIHVzaW5nIHRoZSBTUUxpdGVDdXJzb3IuCiAgKi8KIHB1YmxpYyBjbGFzcyBTUUxpdGVDdXJzb3IgZXh0ZW5kcyBBYnN0cmFjdFdpbmRvd2VkQ3Vyc29yIHsKICAgICBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9ICJDdXJzb3IiOwpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvZGF0YWJhc2Uvc3FsaXRlL1NRTGl0ZURhdGFiYXNlLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9kYXRhYmFzZS9zcWxpdGUvU1FMaXRlRGF0YWJhc2UuamF2YQppbmRleCBmYjU1MDdkLi5jZGM5YmJiIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9kYXRhYmFzZS9zcWxpdGUvU1FMaXRlRGF0YWJhc2UuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9kYXRhYmFzZS9zcWxpdGUvU1FMaXRlRGF0YWJhc2UuamF2YQpAQCAtMTksNiArMTksNyBAQAogaW1wb3J0IGNvbS5nb29nbGUuYW5kcm9pZC5jb2xsZWN0Lk1hcHM7CiAKIGltcG9ydCBhbmRyb2lkLmFwcC5BY3Rpdml0eVRocmVhZDsKK2ltcG9ydCBhbmRyb2lkLmFwcC5BcHBHbG9iYWxzOwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZW50VmFsdWVzOwogaW1wb3J0IGFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yOwogaW1wb3J0IGFuZHJvaWQuZGF0YWJhc2UuRGF0YWJhc2VVdGlsczsKQEAgLTMzLDYgKzM0LDggQEAKIGltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOwogaW1wb3J0IGFuZHJvaWQudXRpbC5QYWlyOwogCitpbXBvcnQgZGFsdmlrLnN5c3RlbS5CbG9ja0d1YXJkOworCiBpbXBvcnQgamF2YS5pby5GaWxlOwogaW1wb3J0IGphdmEubGFuZy5yZWYuV2Vha1JlZmVyZW5jZTsKIGltcG9ydCBqYXZhLnRleHQuU2ltcGxlRGF0ZUZvcm1hdDsKQEAgLTExMzQsNyArMTEzNyw4IEBACiAgICAgICoKICAgICAgKiBAcGFyYW0gc3FsIFRoZSByYXcgU1FMIHN0YXRlbWVudCwgbWF5IGNvbnRhaW4gPyBmb3IgdW5rbm93biB2YWx1ZXMgdG8gYmUKICAgICAgKiAgICAgICAgICAgIGJvdW5kIGxhdGVyLgotICAgICAqIEByZXR1cm4gYSBwcmUtY29tcGlsZWQgc3RhdGVtZW50IG9iamVjdC4KKyAgICAgKiBAcmV0dXJuIEEgcHJlLWNvbXBpbGVkIHtAbGluayBTUUxpdGVTdGF0ZW1lbnR9IG9iamVjdC4gTm90ZSB0aGF0CisgICAgICoge0BsaW5rIFNRTGl0ZVN0YXRlbWVudH1zIGFyZSBub3Qgc3luY2hyb25pemVkLCBzZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgZGV0YWlscy4KICAgICAgKi8KICAgICBwdWJsaWMgU1FMaXRlU3RhdGVtZW50IGNvbXBpbGVTdGF0ZW1lbnQoU3RyaW5nIHNxbCkgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CiAgICAgICAgIGxvY2soKTsKQEAgLTExNzUsNyArMTE3OSw4IEBACiAgICAgICogICAgICAgICAgICBkZWZhdWx0IHNvcnQgb3JkZXIsIHdoaWNoIG1heSBiZSB1bm9yZGVyZWQuCiAgICAgICogQHBhcmFtIGxpbWl0IExpbWl0cyB0aGUgbnVtYmVyIG9mIHJvd3MgcmV0dXJuZWQgYnkgdGhlIHF1ZXJ5LAogICAgICAqICAgICAgICAgICAgZm9ybWF0dGVkIGFzIExJTUlUIGNsYXVzZS4gUGFzc2luZyBudWxsIGRlbm90ZXMgbm8gTElNSVQgY2xhdXNlLgotICAgICAqIEByZXR1cm4gQSBDdXJzb3Igb2JqZWN0LCB3aGljaCBpcyBwb3NpdGlvbmVkIGJlZm9yZSB0aGUgZmlyc3QgZW50cnkKKyAgICAgKiBAcmV0dXJuIEEge0BsaW5rIEN1cnNvcn0gb2JqZWN0LCB3aGljaCBpcyBwb3NpdGlvbmVkIGJlZm9yZSB0aGUgZmlyc3QgZW50cnkuIE5vdGUgdGhhdAorICAgICAqIHtAbGluayBDdXJzb3J9cyBhcmUgbm90IHN5bmNocm9uaXplZCwgc2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGRldGFpbHMuCiAgICAgICogQHNlZSBDdXJzb3IKICAgICAgKi8KICAgICBwdWJsaWMgQ3Vyc29yIHF1ZXJ5KGJvb2xlYW4gZGlzdGluY3QsIFN0cmluZyB0YWJsZSwgU3RyaW5nW10gY29sdW1ucywKQEAgLTEyMTMsNyArMTIxOCw4IEBACiAgICAgICogICAgICAgICAgICBkZWZhdWx0IHNvcnQgb3JkZXIsIHdoaWNoIG1heSBiZSB1bm9yZGVyZWQuCiAgICAgICogQHBhcmFtIGxpbWl0IExpbWl0cyB0aGUgbnVtYmVyIG9mIHJvd3MgcmV0dXJuZWQgYnkgdGhlIHF1ZXJ5LAogICAgICAqICAgICAgICAgICAgZm9ybWF0dGVkIGFzIExJTUlUIGNsYXVzZS4gUGFzc2luZyBudWxsIGRlbm90ZXMgbm8gTElNSVQgY2xhdXNlLgotICAgICAqIEByZXR1cm4gQSBDdXJzb3Igb2JqZWN0LCB3aGljaCBpcyBwb3NpdGlvbmVkIGJlZm9yZSB0aGUgZmlyc3QgZW50cnkKKyAgICAgKiBAcmV0dXJuIEEge0BsaW5rIEN1cnNvcn0gb2JqZWN0LCB3aGljaCBpcyBwb3NpdGlvbmVkIGJlZm9yZSB0aGUgZmlyc3QgZW50cnkuIE5vdGUgdGhhdAorICAgICAqIHtAbGluayBDdXJzb3J9cyBhcmUgbm90IHN5bmNocm9uaXplZCwgc2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGRldGFpbHMuCiAgICAgICogQHNlZSBDdXJzb3IKICAgICAgKi8KICAgICBwdWJsaWMgQ3Vyc29yIHF1ZXJ5V2l0aEZhY3RvcnkoQ3Vyc29yRmFjdG9yeSBjdXJzb3JGYWN0b3J5LApAQCAtMTI1NCw3ICsxMjYwLDggQEAKICAgICAgKiBAcGFyYW0gb3JkZXJCeSBIb3cgdG8gb3JkZXIgdGhlIHJvd3MsIGZvcm1hdHRlZCBhcyBhbiBTUUwgT1JERVIgQlkgY2xhdXNlCiAgICAgICogICAgICAgICAgICAoZXhjbHVkaW5nIHRoZSBPUkRFUiBCWSBpdHNlbGYpLiBQYXNzaW5nIG51bGwgd2lsbCB1c2UgdGhlCiAgICAgICogICAgICAgICAgICBkZWZhdWx0IHNvcnQgb3JkZXIsIHdoaWNoIG1heSBiZSB1bm9yZGVyZWQuCi0gICAgICogQHJldHVybiBBIHtAbGluayBDdXJzb3J9IG9iamVjdCwgd2hpY2ggaXMgcG9zaXRpb25lZCBiZWZvcmUgdGhlIGZpcnN0IGVudHJ5CisgICAgICogQHJldHVybiBBIHtAbGluayBDdXJzb3J9IG9iamVjdCwgd2hpY2ggaXMgcG9zaXRpb25lZCBiZWZvcmUgdGhlIGZpcnN0IGVudHJ5LiBOb3RlIHRoYXQKKyAgICAgKiB7QGxpbmsgQ3Vyc29yfXMgYXJlIG5vdCBzeW5jaHJvbml6ZWQsIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBkZXRhaWxzLgogICAgICAqIEBzZWUgQ3Vyc29yCiAgICAgICovCiAgICAgcHVibGljIEN1cnNvciBxdWVyeShTdHJpbmcgdGFibGUsIFN0cmluZ1tdIGNvbHVtbnMsIFN0cmluZyBzZWxlY3Rpb24sCkBAIC0xMjkxLDcgKzEyOTgsOCBAQAogICAgICAqICAgICAgICAgICAgZGVmYXVsdCBzb3J0IG9yZGVyLCB3aGljaCBtYXkgYmUgdW5vcmRlcmVkLgogICAgICAqIEBwYXJhbSBsaW1pdCBMaW1pdHMgdGhlIG51bWJlciBvZiByb3dzIHJldHVybmVkIGJ5IHRoZSBxdWVyeSwKICAgICAgKiAgICAgICAgICAgIGZvcm1hdHRlZCBhcyBMSU1JVCBjbGF1c2UuIFBhc3NpbmcgbnVsbCBkZW5vdGVzIG5vIExJTUlUIGNsYXVzZS4KLSAgICAgKiBAcmV0dXJuIEEge0BsaW5rIEN1cnNvcn0gb2JqZWN0LCB3aGljaCBpcyBwb3NpdGlvbmVkIGJlZm9yZSB0aGUgZmlyc3QgZW50cnkKKyAgICAgKiBAcmV0dXJuIEEge0BsaW5rIEN1cnNvcn0gb2JqZWN0LCB3aGljaCBpcyBwb3NpdGlvbmVkIGJlZm9yZSB0aGUgZmlyc3QgZW50cnkuIE5vdGUgdGhhdAorICAgICAqIHtAbGluayBDdXJzb3J9cyBhcmUgbm90IHN5bmNocm9uaXplZCwgc2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGRldGFpbHMuCiAgICAgICogQHNlZSBDdXJzb3IKICAgICAgKi8KICAgICBwdWJsaWMgQ3Vyc29yIHF1ZXJ5KFN0cmluZyB0YWJsZSwgU3RyaW5nW10gY29sdW1ucywgU3RyaW5nIHNlbGVjdGlvbiwKQEAgLTEzMDksNyArMTMxNyw4IEBACiAgICAgICogQHBhcmFtIHNlbGVjdGlvbkFyZ3MgWW91IG1heSBpbmNsdWRlID9zIGluIHdoZXJlIGNsYXVzZSBpbiB0aGUgcXVlcnksCiAgICAgICogICAgIHdoaWNoIHdpbGwgYmUgcmVwbGFjZWQgYnkgdGhlIHZhbHVlcyBmcm9tIHNlbGVjdGlvbkFyZ3MuIFRoZQogICAgICAqICAgICB2YWx1ZXMgd2lsbCBiZSBib3VuZCBhcyBTdHJpbmdzLgotICAgICAqIEByZXR1cm4gQSB7QGxpbmsgQ3Vyc29yfSBvYmplY3QsIHdoaWNoIGlzIHBvc2l0aW9uZWQgYmVmb3JlIHRoZSBmaXJzdCBlbnRyeQorICAgICAqIEByZXR1cm4gQSB7QGxpbmsgQ3Vyc29yfSBvYmplY3QsIHdoaWNoIGlzIHBvc2l0aW9uZWQgYmVmb3JlIHRoZSBmaXJzdCBlbnRyeS4gTm90ZSB0aGF0CisgICAgICoge0BsaW5rIEN1cnNvcn1zIGFyZSBub3Qgc3luY2hyb25pemVkLCBzZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgZGV0YWlscy4KICAgICAgKi8KICAgICBwdWJsaWMgQ3Vyc29yIHJhd1F1ZXJ5KFN0cmluZyBzcWwsIFN0cmluZ1tdIHNlbGVjdGlvbkFyZ3MpIHsKICAgICAgICAgcmV0dXJuIHJhd1F1ZXJ5V2l0aEZhY3RvcnkobnVsbCwgc3FsLCBzZWxlY3Rpb25BcmdzLCBudWxsKTsKQEAgLTEzMjQsNyArMTMzMyw4IEBACiAgICAgICogICAgIHdoaWNoIHdpbGwgYmUgcmVwbGFjZWQgYnkgdGhlIHZhbHVlcyBmcm9tIHNlbGVjdGlvbkFyZ3MuIFRoZQogICAgICAqICAgICB2YWx1ZXMgd2lsbCBiZSBib3VuZCBhcyBTdHJpbmdzLgogICAgICAqIEBwYXJhbSBlZGl0VGFibGUgdGhlIG5hbWUgb2YgdGhlIGZpcnN0IHRhYmxlLCB3aGljaCBpcyBlZGl0YWJsZQotICAgICAqIEByZXR1cm4gQSB7QGxpbmsgQ3Vyc29yfSBvYmplY3QsIHdoaWNoIGlzIHBvc2l0aW9uZWQgYmVmb3JlIHRoZSBmaXJzdCBlbnRyeQorICAgICAqIEByZXR1cm4gQSB7QGxpbmsgQ3Vyc29yfSBvYmplY3QsIHdoaWNoIGlzIHBvc2l0aW9uZWQgYmVmb3JlIHRoZSBmaXJzdCBlbnRyeS4gTm90ZSB0aGF0CisgICAgICoge0BsaW5rIEN1cnNvcn1zIGFyZSBub3Qgc3luY2hyb25pemVkLCBzZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgZGV0YWlscy4KICAgICAgKi8KICAgICBwdWJsaWMgQ3Vyc29yIHJhd1F1ZXJ5V2l0aEZhY3RvcnkoCiAgICAgICAgICAgICBDdXJzb3JGYWN0b3J5IGN1cnNvckZhY3RvcnksIFN0cmluZyBzcWwsIFN0cmluZ1tdIHNlbGVjdGlvbkFyZ3MsCkBAIC0xMzMyLDYgKzEzNDIsNyBAQAogICAgICAgICBpZiAoIWlzT3BlbigpKSB7CiAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJkYXRhYmFzZSBub3Qgb3BlbiIpOwogICAgICAgICB9CisgICAgICAgIEJsb2NrR3VhcmQuZ2V0VGhyZWFkUG9saWN5KCkub25SZWFkRnJvbURpc2soKTsKICAgICAgICAgbG9uZyB0aW1lU3RhcnQgPSAwOwogCiAgICAgICAgIGlmIChDb25maWcuTE9HViB8fCBtU2xvd1F1ZXJ5VGhyZXNob2xkICE9IC0xKSB7CkBAIC0xMzc5LDcgKzEzOTAsOCBAQAogICAgICAqICAgICB2YWx1ZXMgd2lsbCBiZSBib3VuZCBhcyBTdHJpbmdzLgogICAgICAqIEBwYXJhbSBpbml0aWFsUmVhZCBzZXQgdGhlIGluaXRpYWwgY291bnQgb2YgaXRlbXMgdG8gcmVhZCBmcm9tIHRoZSBjdXJzb3IKICAgICAgKiBAcGFyYW0gbWF4UmVhZCBzZXQgdGhlIGNvdW50IG9mIGl0ZW1zIHRvIHJlYWQgb24gZWFjaCBpdGVyYXRpb24gYWZ0ZXIgdGhlIGZpcnN0Ci0gICAgICogQHJldHVybiBBIHtAbGluayBDdXJzb3J9IG9iamVjdCwgd2hpY2ggaXMgcG9zaXRpb25lZCBiZWZvcmUgdGhlIGZpcnN0IGVudHJ5CisgICAgICogQHJldHVybiBBIHtAbGluayBDdXJzb3J9IG9iamVjdCwgd2hpY2ggaXMgcG9zaXRpb25lZCBiZWZvcmUgdGhlIGZpcnN0IGVudHJ5LiBOb3RlIHRoYXQKKyAgICAgKiB7QGxpbmsgQ3Vyc29yfXMgYXJlIG5vdCBzeW5jaHJvbml6ZWQsIHNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBkZXRhaWxzLgogICAgICAqCiAgICAgICogVGhpcyB3b3JrIGlzIGluY29tcGxldGUgYW5kIG5vdCBmdWxseSB0ZXN0ZWQgb3IgcmV2aWV3ZWQsIHNvIGN1cnJlbnRseQogICAgICAqIGhpZGRlbi4KQEAgLTE0ODksNiArMTUwMSw3IEBACiAgICAgICovCiAgICAgcHVibGljIGxvbmcgaW5zZXJ0V2l0aE9uQ29uZmxpY3QoU3RyaW5nIHRhYmxlLCBTdHJpbmcgbnVsbENvbHVtbkhhY2ssCiAgICAgICAgICAgICBDb250ZW50VmFsdWVzIGluaXRpYWxWYWx1ZXMsIGludCBjb25mbGljdEFsZ29yaXRobSkgeworICAgICAgICBCbG9ja0d1YXJkLmdldFRocmVhZFBvbGljeSgpLm9uV3JpdGVUb0Rpc2soKTsKICAgICAgICAgaWYgKCFpc09wZW4oKSkgewogICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiZGF0YWJhc2Ugbm90IG9wZW4iKTsKICAgICAgICAgfQpAQCAtMTU4MCw2ICsxNTkzLDcgQEAKICAgICAgKiAgICAgICAgIHdoZXJlQ2xhdXNlLgogICAgICAqLwogICAgIHB1YmxpYyBpbnQgZGVsZXRlKFN0cmluZyB0YWJsZSwgU3RyaW5nIHdoZXJlQ2xhdXNlLCBTdHJpbmdbXSB3aGVyZUFyZ3MpIHsKKyAgICAgICAgQmxvY2tHdWFyZC5nZXRUaHJlYWRQb2xpY3koKS5vbldyaXRlVG9EaXNrKCk7CiAgICAgICAgIGxvY2soKTsKICAgICAgICAgaWYgKCFpc09wZW4oKSkgewogICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiZGF0YWJhc2Ugbm90IG9wZW4iKTsKQEAgLTE2MzUsNiArMTY0OSw3IEBACiAgICAgICovCiAgICAgcHVibGljIGludCB1cGRhdGVXaXRoT25Db25mbGljdChTdHJpbmcgdGFibGUsIENvbnRlbnRWYWx1ZXMgdmFsdWVzLAogICAgICAgICAgICAgU3RyaW5nIHdoZXJlQ2xhdXNlLCBTdHJpbmdbXSB3aGVyZUFyZ3MsIGludCBjb25mbGljdEFsZ29yaXRobSkgeworICAgICAgICBCbG9ja0d1YXJkLmdldFRocmVhZFBvbGljeSgpLm9uV3JpdGVUb0Rpc2soKTsKICAgICAgICAgaWYgKHZhbHVlcyA9PSBudWxsIHx8IHZhbHVlcy5zaXplKCkgPT0gMCkgewogICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiRW1wdHkgdmFsdWVzIik7CiAgICAgICAgIH0KQEAgLTE3MTcsNiArMTczMiw3IEBACiAgICAgICogQHRocm93cyBTUUxFeGNlcHRpb24gSWYgdGhlIFNRTCBzdHJpbmcgaXMgaW52YWxpZCBmb3Igc29tZSByZWFzb24KICAgICAgKi8KICAgICBwdWJsaWMgdm9pZCBleGVjU1FMKFN0cmluZyBzcWwpIHRocm93cyBTUUxFeGNlcHRpb24geworICAgICAgICBCbG9ja0d1YXJkLmdldFRocmVhZFBvbGljeSgpLm9uV3JpdGVUb0Rpc2soKTsKICAgICAgICAgbG9uZyB0aW1lU3RhcnQgPSBTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKTsKICAgICAgICAgbG9jaygpOwogICAgICAgICBpZiAoIWlzT3BlbigpKSB7CkBAIC0xNzUyLDYgKzE3NjgsNyBAQAogICAgICAqIEB0aHJvd3MgU1FMRXhjZXB0aW9uIElmIHRoZSBTUUwgc3RyaW5nIGlzIGludmFsaWQgZm9yIHNvbWUgcmVhc29uCiAgICAgICovCiAgICAgcHVibGljIHZvaWQgZXhlY1NRTChTdHJpbmcgc3FsLCBPYmplY3RbXSBiaW5kQXJncykgdGhyb3dzIFNRTEV4Y2VwdGlvbiB7CisgICAgICAgIEJsb2NrR3VhcmQuZ2V0VGhyZWFkUG9saWN5KCkub25Xcml0ZVRvRGlzaygpOwogICAgICAgICBpZiAoYmluZEFyZ3MgPT0gbnVsbCkgewogICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiRW1wdHkgYmluZEFyZ3MiKTsKICAgICAgICAgfQpAQCAtMTkwNSw3ICsxOTIyLDcgQEAKICAgICAgICAgLy8gbWFpbiB0aHJlYWQsIG9yIHdoZW4gd2UgYXJlIGludm9rZWQgdmlhIEJpbmRlciAoZS5nLiBDb250ZW50UHJvdmlkZXIpLgogICAgICAgICAvLyBIb3BlZnVsbHkgdGhlIGZ1bGwgcGF0aCB0byB0aGUgZGF0YWJhc2Ugd2lsbCBiZSBpbmZvcm1hdGl2ZSBlbm91Z2guCiAKLSAgICAgICAgU3RyaW5nIGJsb2NraW5nUGFja2FnZSA9IEFjdGl2aXR5VGhyZWFkLmN1cnJlbnRQYWNrYWdlTmFtZSgpOworICAgICAgICBTdHJpbmcgYmxvY2tpbmdQYWNrYWdlID0gQXBwR2xvYmFscy5nZXRJbml0aWFsUGFja2FnZSgpOwogICAgICAgICBpZiAoYmxvY2tpbmdQYWNrYWdlID09IG51bGwpIGJsb2NraW5nUGFja2FnZSA9ICIiOwogCiAgICAgICAgIEV2ZW50TG9nLndyaXRlRXZlbnQoCmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9kYXRhYmFzZS9zcWxpdGUvU1FMaXRlT3BlbkhlbHBlci5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvZGF0YWJhc2Uvc3FsaXRlL1NRTGl0ZU9wZW5IZWxwZXIuamF2YQppbmRleCA1MmFhYzNhLi5hZWZiYWJjIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9kYXRhYmFzZS9zcWxpdGUvU1FMaXRlT3BlbkhlbHBlci5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL2RhdGFiYXNlL3NxbGl0ZS9TUUxpdGVPcGVuSGVscGVyLmphdmEKQEAgLTI4LDYgKzI4LDEyIEBACiAgKiBUcmFuc2FjdGlvbnMgYXJlIHVzZWQgdG8gbWFrZSBzdXJlIHRoZSBkYXRhYmFzZSBpcyBhbHdheXMgaW4gYSBzZW5zaWJsZSBzdGF0ZS4KICAqIDxwPkZvciBhbiBleGFtcGxlLCBzZWUgdGhlIE5vdGVQYWRQcm92aWRlciBjbGFzcyBpbiB0aGUgTm90ZVBhZCBzYW1wbGUgYXBwbGljYXRpb24sCiAgKiBpbiB0aGUgPGVtPnNhbXBsZXMvPC9lbT4gZGlyZWN0b3J5IG9mIHRoZSBTREsuPC9wPgorICoKKyAqIDxwIGNsYXNzPSJub3RlIj48c3Ryb25nPk5vdGU6PC9zdHJvbmc+IHRoaXMgY2xhc3MgYXNzdW1lcworICogbW9ub3RvbmljYWxseSBpbmNyZWFzaW5nIHZlcnNpb24gbnVtYmVycyBmb3IgdXBncmFkZXMuICBBbHNvLCB0aGVyZQorICogaXMgbm8gY29uY2VwdCBvZiBhIGRhdGFiYXNlIGRvd25ncmFkZTsgaW5zdGFsbGluZyBhIG5ldyB2ZXJzaW9uIG9mCisgKiB5b3VyIGFwcCB3aGljaCB1c2VzIGEgbG93ZXIgdmVyc2lvbiBudW1iZXIgdGhhbiBhCisgKiBwcmV2aW91c2x5LWluc3RhbGxlZCB2ZXJzaW9uIHdpbGwgcmVzdWx0IGluIHVuZGVmaW5lZCBiZWhhdmlvci48L3A+CiAgKi8KIHB1YmxpYyBhYnN0cmFjdCBjbGFzcyBTUUxpdGVPcGVuSGVscGVyIHsKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gU1FMaXRlT3BlbkhlbHBlci5jbGFzcy5nZXRTaW1wbGVOYW1lKCk7CkBAIC0xMDUsNiArMTExLDEwIEBACiAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJzaW9uID09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgIG9uQ3JlYXRlKGRiKTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ZXJzaW9uID4gbU5ld1ZlcnNpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2cud3RmKFRBRywgIkNhbid0IGRvd25ncmFkZSByZWFkLW9ubHkgZGF0YWJhc2UgZnJvbSB2ZXJzaW9uICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiArICIgdG8gIiArIG1OZXdWZXJzaW9uICsgIjogIiArIGRiLmdldFBhdGgoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICBvblVwZ3JhZGUoZGIsIHZlcnNpb24sIG1OZXdWZXJzaW9uKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBkYi5zZXRWZXJzaW9uKG1OZXdWZXJzaW9uKTsKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL2RhdGFiYXNlL3NxbGl0ZS9TUUxpdGVQcm9ncmFtLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9kYXRhYmFzZS9zcWxpdGUvU1FMaXRlUHJvZ3JhbS5qYXZhCmluZGV4IDg5YTVmMGQxLi40ZDk2ZjEyIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9kYXRhYmFzZS9zcWxpdGUvU1FMaXRlUHJvZ3JhbS5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL2RhdGFiYXNlL3NxbGl0ZS9TUUxpdGVQcm9ncmFtLmphdmEKQEAgLTIwLDYgKzIwLDkgQEAKIAogLyoqCiAgKiBBIGJhc2UgY2xhc3MgZm9yIGNvbXBpbGVkIFNRTGl0ZSBwcm9ncmFtcy4KKyAqCisgKiBTUUxpdGVQcm9ncmFtIGlzIG5vdCBpbnRlcm5hbGx5IHN5bmNocm9uaXplZCBzbyBjb2RlIHVzaW5nIGEgU1FMaXRlUHJvZ3JhbSBmcm9tIG11bHRpcGxlCisgKiB0aHJlYWRzIHNob3VsZCBwZXJmb3JtIGl0cyBvd24gc3luY2hyb25pemF0aW9uIHdoZW4gdXNpbmcgdGhlIFNRTGl0ZVByb2dyYW0uCiAgKi8KIHB1YmxpYyBhYnN0cmFjdCBjbGFzcyBTUUxpdGVQcm9ncmFtIGV4dGVuZHMgU1FMaXRlQ2xvc2FibGUgewogCmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9kYXRhYmFzZS9zcWxpdGUvU1FMaXRlUXVlcnkuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL2RhdGFiYXNlL3NxbGl0ZS9TUUxpdGVRdWVyeS5qYXZhCmluZGV4IDQzZDJmYWMuLjkwNWI2NmIgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL2RhdGFiYXNlL3NxbGl0ZS9TUUxpdGVRdWVyeS5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL2RhdGFiYXNlL3NxbGl0ZS9TUUxpdGVRdWVyeS5qYXZhCkBAIC0yMyw2ICsyMyw5IEBACiAvKioKICAqIEEgU1FMaXRlIHByb2dyYW0gdGhhdCByZXByZXNlbnRzIGEgcXVlcnkgdGhhdCByZWFkcyB0aGUgcmVzdWx0aW5nIHJvd3MgaW50byBhIEN1cnNvcldpbmRvdy4KICAqIFRoaXMgY2xhc3MgaXMgdXNlZCBieSBTUUxpdGVDdXJzb3IgYW5kIGlzbid0IHVzZWZ1bCBpdHNlbGYuCisgKgorICogU1FMaXRlUXVlcnkgaXMgbm90IGludGVybmFsbHkgc3luY2hyb25pemVkIHNvIGNvZGUgdXNpbmcgYSBTUUxpdGVRdWVyeSBmcm9tIG11bHRpcGxlCisgKiB0aHJlYWRzIHNob3VsZCBwZXJmb3JtIGl0cyBvd24gc3luY2hyb25pemF0aW9uIHdoZW4gdXNpbmcgdGhlIFNRTGl0ZVF1ZXJ5LgogICovCiBwdWJsaWMgY2xhc3MgU1FMaXRlUXVlcnkgZXh0ZW5kcyBTUUxpdGVQcm9ncmFtIHsKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gIkN1cnNvciI7CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9kYXRhYmFzZS9zcWxpdGUvU1FMaXRlU3RhdGVtZW50LmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9kYXRhYmFzZS9zcWxpdGUvU1FMaXRlU3RhdGVtZW50LmphdmEKaW5kZXggOThkYTQxNC4uOWU0MjVjMyAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvZGF0YWJhc2Uvc3FsaXRlL1NRTGl0ZVN0YXRlbWVudC5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL2RhdGFiYXNlL3NxbGl0ZS9TUUxpdGVTdGF0ZW1lbnQuamF2YQpAQCAtMTgsMTEgKzE4LDE2IEBACiAKIGltcG9ydCBhbmRyb2lkLm9zLlN5c3RlbUNsb2NrOwogCitpbXBvcnQgZGFsdmlrLnN5c3RlbS5CbG9ja0d1YXJkOworCiAvKioKICAqIEEgcHJlLWNvbXBpbGVkIHN0YXRlbWVudCBhZ2FpbnN0IGEge0BsaW5rIFNRTGl0ZURhdGFiYXNlfSB0aGF0IGNhbiBiZSByZXVzZWQuCiAgKiBUaGUgc3RhdGVtZW50IGNhbm5vdCByZXR1cm4gbXVsdGlwbGUgcm93cywgYnV0IDF4MSByZXN1bHQgc2V0cyBhcmUgYWxsb3dlZC4KICAqIERvbid0IHVzZSBTUUxpdGVTdGF0ZW1lbnQgY29uc3RydWN0b3IgZGlyZWN0bHksIHBsZWFzZSB1c2UKICAqIHtAbGluayBTUUxpdGVEYXRhYmFzZSNjb21waWxlU3RhdGVtZW50KFN0cmluZyl9CisgKgorICogU1FMaXRlU3RhdGVtZW50IGlzIG5vdCBpbnRlcm5hbGx5IHN5bmNocm9uaXplZCBzbyBjb2RlIHVzaW5nIGEgU1FMaXRlU3RhdGVtZW50IGZyb20gbXVsdGlwbGUKKyAqIHRocmVhZHMgc2hvdWxkIHBlcmZvcm0gaXRzIG93biBzeW5jaHJvbml6YXRpb24gd2hlbiB1c2luZyB0aGUgU1FMaXRlU3RhdGVtZW50LgogICovCiBwdWJsaWMgY2xhc3MgU1FMaXRlU3RhdGVtZW50IGV4dGVuZHMgU1FMaXRlUHJvZ3JhbQogewpAQCAtNDQsNiArNDksNyBAQAogICAgICAqICAgICAgICAgc29tZSByZWFzb24KICAgICAgKi8KICAgICBwdWJsaWMgdm9pZCBleGVjdXRlKCkgeworICAgICAgICBCbG9ja0d1YXJkLmdldFRocmVhZFBvbGljeSgpLm9uV3JpdGVUb0Rpc2soKTsKICAgICAgICAgaWYgKCFtRGF0YWJhc2UuaXNPcGVuKCkpIHsKICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oImRhdGFiYXNlICIgKyBtRGF0YWJhc2UuZ2V0UGF0aCgpICsgIiBhbHJlYWR5IGNsb3NlZCIpOwogICAgICAgICB9CkBAIC03MCw2ICs3Niw3IEBACiAgICAgICogICAgICAgICBzb21lIHJlYXNvbgogICAgICAqLwogICAgIHB1YmxpYyBsb25nIGV4ZWN1dGVJbnNlcnQoKSB7CisgICAgICAgIEJsb2NrR3VhcmQuZ2V0VGhyZWFkUG9saWN5KCkub25Xcml0ZVRvRGlzaygpOwogICAgICAgICBpZiAoIW1EYXRhYmFzZS5pc09wZW4oKSkgewogICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiZGF0YWJhc2UgIiArIG1EYXRhYmFzZS5nZXRQYXRoKCkgKyAiIGFscmVhZHkgY2xvc2VkIik7CiAgICAgICAgIH0KQEAgLTk2LDYgKzEwMyw3IEBACiAgICAgICogQHRocm93cyBhbmRyb2lkLmRhdGFiYXNlLnNxbGl0ZS5TUUxpdGVEb25lRXhjZXB0aW9uIGlmIHRoZSBxdWVyeSByZXR1cm5zIHplcm8gcm93cwogICAgICAqLwogICAgIHB1YmxpYyBsb25nIHNpbXBsZVF1ZXJ5Rm9yTG9uZygpIHsKKyAgICAgICAgQmxvY2tHdWFyZC5nZXRUaHJlYWRQb2xpY3koKS5vblJlYWRGcm9tRGlzaygpOwogICAgICAgICBpZiAoIW1EYXRhYmFzZS5pc09wZW4oKSkgewogICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiZGF0YWJhc2UgIiArIG1EYXRhYmFzZS5nZXRQYXRoKCkgKyAiIGFscmVhZHkgY2xvc2VkIik7CiAgICAgICAgIH0KQEAgLTEyMiw2ICsxMzAsNyBAQAogICAgICAqIEB0aHJvd3MgYW5kcm9pZC5kYXRhYmFzZS5zcWxpdGUuU1FMaXRlRG9uZUV4Y2VwdGlvbiBpZiB0aGUgcXVlcnkgcmV0dXJucyB6ZXJvIHJvd3MKICAgICAgKi8KICAgICBwdWJsaWMgU3RyaW5nIHNpbXBsZVF1ZXJ5Rm9yU3RyaW5nKCkgeworICAgICAgICBCbG9ja0d1YXJkLmdldFRocmVhZFBvbGljeSgpLm9uUmVhZEZyb21EaXNrKCk7CiAgICAgICAgIGlmICghbURhdGFiYXNlLmlzT3BlbigpKSB7CiAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJkYXRhYmFzZSAiICsgbURhdGFiYXNlLmdldFBhdGgoKSArICIgYWxyZWFkeSBjbG9zZWQiKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvaGFyZHdhcmUvQ2FtZXJhLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9oYXJkd2FyZS9DYW1lcmEuamF2YQppbmRleCA4Njg3YTg5Li4xMTAwODg2IDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9oYXJkd2FyZS9DYW1lcmEuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9oYXJkd2FyZS9DYW1lcmEuamF2YQpAQCAtNTgsNyArNTgsNyBAQAogcHVibGljIGNsYXNzIENhbWVyYSB7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9ICJDYW1lcmEiOwogCi0gICAgLy8gVGhlc2UgbWF0Y2ggdGhlIGVudW1zIGluIGZyYW1ld29ya3MvYmFzZS9pbmNsdWRlL3VpL0NhbWVyYS5oCisgICAgLy8gVGhlc2UgbWF0Y2ggdGhlIGVudW1zIGluIGZyYW1ld29ya3MvYmFzZS9pbmNsdWRlL2NhbWVyYS9DYW1lcmEuaAogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDQU1FUkFfTVNHX0VSUk9SICAgICAgICAgICAgPSAweDAwMTsKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ0FNRVJBX01TR19TSFVUVEVSICAgICAgICAgID0gMHgwMDI7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENBTUVSQV9NU0dfRk9DVVMgICAgICAgICAgICA9IDB4MDA0OwpAQCAtODQsMTMgKzg0LDY2IEBACiAgICAgcHJpdmF0ZSBib29sZWFuIG1XaXRoQnVmZmVyOwogCiAgICAgLyoqCi0gICAgICogUmV0dXJucyBhIG5ldyBDYW1lcmEgb2JqZWN0LgorICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBDYW1lcmFzIGF2YWlsYWJsZS4KICAgICAgKi8KLSAgICBwdWJsaWMgc3RhdGljIENhbWVyYSBvcGVuKCkgewotICAgICAgICByZXR1cm4gbmV3IENhbWVyYSgpOworICAgIHB1YmxpYyBuYXRpdmUgc3RhdGljIGludCBnZXROdW1iZXJPZkNhbWVyYXMoKTsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjYW1lcmEuCisgICAgICogSWYge0BsaW5rICNnZXROdW1iZXJPZkNhbWVyYXMoKX0gcmV0dXJucyBOLCB0aGUgdmFsaWQgaWQgaXMgMCB0byBOLTEuCisgICAgICovCisgICAgcHVibGljIG5hdGl2ZSBzdGF0aWMgdm9pZCBnZXRDYW1lcmFJbmZvKGludCBjYW1lcmFJZCwgQ2FtZXJhSW5mbyBjYW1lcmFJbmZvKTsKKworICAgIC8qKgorICAgICAqIEluZm9ybWF0aW9uIGFib3V0IGEgY2FtZXJhCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBjbGFzcyBDYW1lcmFJbmZvIHsKKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ0FNRVJBX0ZBQ0lOR19CQUNLID0gMDsKKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ0FNRVJBX0ZBQ0lOR19GUk9OVCA9IDE7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFRoZSBkaXJlY3Rpb24gdGhhdCB0aGUgY2FtZXJhIGZhY2VzIHRvLiBJdCBzaG91bGQgYmUKKyAgICAgICAgICogQ0FNRVJBX0ZBQ0lOR19CQUNLIG9yIENBTUVSQV9GQUNJTkdfRlJPTlQuCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgaW50IG1GYWNpbmc7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFRoZSBvcmllbnRhdGlvbiBvZiB0aGUgY2FtZXJhIGltYWdlLiBUaGUgdmFsdWUgaXMgdGhlIGFuZ2xlIHRoYXQgdGhlCisgICAgICAgICAqIGNhbWVyYSBpbWFnZSBuZWVkcyB0byBiZSByb3RhdGVkIGNsb2Nrd2lzZSBzbyBpdCBzaG93cyBjb3JyZWN0bHkgb24KKyAgICAgICAgICogdGhlIGRpc3BsYXkgaW4gaXRzIG5hdHVyYWwgb3JpZW50YXRpb24uIEl0IHNob3VsZCBiZSAwLCA5MCwgMTgwLCBvciAyNzAuCisgICAgICAgICAqCisgICAgICAgICAqIEZvciBleGFtcGxlLCBzdXBwb3NlIGEgZGV2aWNlIGhhcyBhIG5hdHVyYWxseSB0YWxsIHNjcmVlbiwgYnV0IHRoZSBjYW1lcmEKKyAgICAgICAgICogc2Vuc29yIGlzIG1vdW50ZWQgaW4gbGFuZHNjYXBlLiBJZiB0aGUgdG9wIHNpZGUgb2YgdGhlIGNhbWVyYSBzZW5zb3IgaXMKKyAgICAgICAgICogYWxpZ25lZCB3aXRoIHRoZSByaWdodCBlZGdlIG9mIHRoZSBkaXNwbGF5IGluIG5hdHVyYWwgb3JpZW50YXRpb24sIHRoZQorICAgICAgICAgKiB2YWx1ZSBzaG91bGQgYmUgOTAuCisgICAgICAgICAqCisgICAgICAgICAqIEBzZWUgI3NldERpc3BsYXlPcmllbnRhdGlvbihpbnQpCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgaW50IG1PcmllbnRhdGlvbjsKKyAgICB9OworCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIG5ldyBDYW1lcmEgb2JqZWN0LgorICAgICAqIElmIHtAbGluayAjZ2V0TnVtYmVyT2ZDYW1lcmFzKCl9IHJldHVybnMgTiwgdGhlIHZhbGlkIGlkIGlzIDAgdG8gTi0xLgorICAgICAqIFRoZSBpZCAwIGlzIHRoZSBkZWZhdWx0IGNhbWVyYS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIENhbWVyYSBvcGVuKGludCBjYW1lcmFJZCkgeworICAgICAgICByZXR1cm4gbmV3IENhbWVyYShjYW1lcmFJZCk7CiAgICAgfQogCi0gICAgQ2FtZXJhKCkgeworICAgIC8qKgorICAgICAqIFRoZSBpZCBmb3IgdGhlIGRlZmF1bHQgY2FtZXJhLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgaW50IENBTUVSQV9JRF9ERUZBVUxUID0gMDsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgYSBuZXcgQ2FtZXJhIG9iamVjdC4gVGhpcyByZXR1cm5zIHRoZSBkZWZhdWx0IGNhbWVyYS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIENhbWVyYSBvcGVuKCkgeworICAgICAgICByZXR1cm4gbmV3IENhbWVyYShDQU1FUkFfSURfREVGQVVMVCk7CisgICAgfQorCisgICAgQ2FtZXJhKGludCBjYW1lcmFJZCkgewogICAgICAgICBtU2h1dHRlckNhbGxiYWNrID0gbnVsbDsKICAgICAgICAgbVJhd0ltYWdlQ2FsbGJhY2sgPSBudWxsOwogICAgICAgICBtSnBlZ0NhbGxiYWNrID0gbnVsbDsKQEAgLTEwNywxNCArMTYwLDE0IEBACiAgICAgICAgICAgICBtRXZlbnRIYW5kbGVyID0gbnVsbDsKICAgICAgICAgfQogCi0gICAgICAgIG5hdGl2ZV9zZXR1cChuZXcgV2Vha1JlZmVyZW5jZTxDYW1lcmE+KHRoaXMpKTsKKyAgICAgICAgbmF0aXZlX3NldHVwKG5ldyBXZWFrUmVmZXJlbmNlPENhbWVyYT4odGhpcyksIGNhbWVyYUlkKTsKICAgICB9CiAKICAgICBwcm90ZWN0ZWQgdm9pZCBmaW5hbGl6ZSgpIHsKICAgICAgICAgbmF0aXZlX3JlbGVhc2UoKTsKICAgICB9CiAKLSAgICBwcml2YXRlIG5hdGl2ZSBmaW5hbCB2b2lkIG5hdGl2ZV9zZXR1cChPYmplY3QgY2FtZXJhX3RoaXMpOworICAgIHByaXZhdGUgbmF0aXZlIGZpbmFsIHZvaWQgbmF0aXZlX3NldHVwKE9iamVjdCBjYW1lcmFfdGhpcywgaW50IGNhbWVyYUlkKTsKICAgICBwcml2YXRlIG5hdGl2ZSBmaW5hbCB2b2lkIG5hdGl2ZV9yZWxlYXNlKCk7CiAKIApAQCAtNDgyLDYgKzUzNSw3IEBACiAgICAgICogYXBwbGljYXRpb24gZG9lcyBub3QgbmVlZCBhIHBhcnRpY3VsYXIgY2FsbGJhY2ssIGEgbnVsbCBjYW4gYmUgcGFzc2VkCiAgICAgICogaW5zdGVhZCBvZiBhIGNhbGxiYWNrIG1ldGhvZC4KICAgICAgKgorICAgICAqIFRoaXMgbWV0aG9kIGlzIG9ubHkgdmFsaWQgYWZ0ZXIge0BsaW5rICNzdGFydFByZXZpZXcoKX0gaGFzIGJlZW4gY2FsbGVkLgogICAgICAqIFRoaXMgbWV0aG9kIHdpbGwgc3RvcCB0aGUgcHJldmlldy4gQXBwbGljYXRpb25zIHNob3VsZCBub3QgY2FsbCB7QGxpbmsKICAgICAgKiAjc3RvcFByZXZpZXcoKX0gYmVmb3JlIHRoaXMuIEFmdGVyIGpwZWcgY2FsbGJhY2sgaXMgcmVjZWl2ZWQsCiAgICAgICogYXBwbGljYXRpb25zIGNhbiBjYWxsIHtAbGluayAjc3RhcnRQcmV2aWV3KCl9IHRvIHJlc3RhcnQgdGhlIHByZXZpZXcuCkBAIC01MDksNiArNTYzLDcgQEAKICAgICAgKiBhcHBsaWNhdGlvbiBkb2VzIG5vdCBuZWVkIGEgcGFydGljdWxhciBjYWxsYmFjaywgYSBudWxsIGNhbiBiZSBwYXNzZWQKICAgICAgKiBpbnN0ZWFkIG9mIGEgY2FsbGJhY2sgbWV0aG9kLgogICAgICAqCisgICAgICogVGhpcyBtZXRob2QgaXMgb25seSB2YWxpZCBhZnRlciB7QGxpbmsgI3N0YXJ0UHJldmlldygpfSBoYXMgYmVlbiBjYWxsZWQuCiAgICAgICogVGhpcyBtZXRob2Qgd2lsbCBzdG9wIHRoZSBwcmV2aWV3LiBBcHBsaWNhdGlvbnMgc2hvdWxkIG5vdCBjYWxsIHtAbGluawogICAgICAqICNzdG9wUHJldmlldygpfSBiZWZvcmUgdGhpcy4gQWZ0ZXIganBlZyBjYWxsYmFjayBpcyByZWNlaXZlZCwKICAgICAgKiBhcHBsaWNhdGlvbnMgY2FuIGNhbGwge0BsaW5rICNzdGFydFByZXZpZXcoKX0gdG8gcmVzdGFydCB0aGUgcHJldmlldy4KQEAgLTU2NSw2ICs2MjAsMjggQEAKICAgICAgKiB7QGxpbmsgUHJldmlld0NhbGxiYWNrI29uUHJldmlld0ZyYW1lfS4gVGhpcyBtZXRob2QgaXMgbm90IGFsbG93ZWQgdG8KICAgICAgKiBiZSBjYWxsZWQgZHVyaW5nIHByZXZpZXcuCiAgICAgICoKKyAgICAgKiBJZiB5b3Ugd2FudCB0byBtYWtlIHRoZSBjYW1lcmEgaW1hZ2Ugc2hvdyBpbiB0aGUgc2FtZSBvcmllbnRhdGlvbiBhcworICAgICAqIHRoZSBkaXNwbGF5LCB5b3UgY2FuIHVzZSB0aGUgZm9sbG93aW5nIGNvZGUuPHA+CisgICAgICogPHByZT4KKyAgICAgKiBwdWJsaWMgc3RhdGljIHZvaWQgc2V0Q2FtZXJhRGlzcGxheU9yaWVudGF0aW9uKEFjdGl2aXR5IGFjdGl2aXR5LAorICAgICAqICAgICAgICAgaW50IGNhbWVyYUlkLCBhbmRyb2lkLmhhcmR3YXJlLkNhbWVyYSBjYW1lcmEpIHsKKyAgICAgKiAgICAgYW5kcm9pZC5oYXJkd2FyZS5DYW1lcmEuQ2FtZXJhSW5mbyBpbmZvID0KKyAgICAgKiAgICAgICAgICAgICBuZXcgYW5kcm9pZC5oYXJkd2FyZS5DYW1lcmEuQ2FtZXJhSW5mbygpOworICAgICAqICAgICBhbmRyb2lkLmhhcmR3YXJlLkNhbWVyYS5nZXRDYW1lcmFJbmZvKGNhbWVyYUlkLCBpbmZvKTsKKyAgICAgKiAgICAgaW50IHJvdGF0aW9uID0gYWN0aXZpdHkuZ2V0V2luZG93TWFuYWdlcigpLmdldERlZmF1bHREaXNwbGF5KCkKKyAgICAgKiAgICAgICAgICAgICAuZ2V0Um90YXRpb24oKTsKKyAgICAgKiAgICAgaW50IGRlZ3JlZXMgPSAwOworICAgICAqICAgICBzd2l0Y2ggKHJvdGF0aW9uKSB7CisgICAgICogICAgICAgICBjYXNlIFN1cmZhY2UuUk9UQVRJT05fMDogZGVncmVlcyA9IDA7IGJyZWFrOworICAgICAqICAgICAgICAgY2FzZSBTdXJmYWNlLlJPVEFUSU9OXzkwOiBkZWdyZWVzID0gOTA7IGJyZWFrOworICAgICAqICAgICAgICAgY2FzZSBTdXJmYWNlLlJPVEFUSU9OXzE4MDogZGVncmVlcyA9IDE4MDsgYnJlYWs7CisgICAgICogICAgICAgICBjYXNlIFN1cmZhY2UuUk9UQVRJT05fMjcwOiBkZWdyZWVzID0gMjcwOyBicmVhazsKKyAgICAgKiAgICAgfQorICAgICAqCisgICAgICogICAgIGludCByZXN1bHQgPSAoaW5mby5tT3JpZW50YXRpb24gLSBkZWdyZWVzICsgMzYwKSAlIDM2MDsKKyAgICAgKiAgICAgY2FtZXJhLnNldERpc3BsYXlPcmllbnRhdGlvbihyZXN1bHQpOworICAgICAqIH0KKyAgICAgKiA8L3ByZT4KICAgICAgKiBAcGFyYW0gZGVncmVlcyB0aGUgYW5nbGUgdGhhdCB0aGUgcGljdHVyZSB3aWxsIGJlIHJvdGF0ZWQgY2xvY2t3aXNlLgogICAgICAqICAgICAgICAgICAgICAgIFZhbGlkIHZhbHVlcyBhcmUgMCwgOTAsIDE4MCwgYW5kIDI3MC4gVGhlIHN0YXJ0aW5nCiAgICAgICogICAgICAgICAgICAgICAgcG9zaXRpb24gaXMgMCAobGFuZHNjYXBlKS4KQEAgLTc0Niw2ICs4MjMsOSBAQAogICAgICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgS0VZX1pPT01fUkFUSU9TID0gInpvb20tcmF0aW9zIjsKICAgICAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEtFWV9aT09NX1NVUFBPUlRFRCA9ICJ6b29tLXN1cHBvcnRlZCI7CiAgICAgICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBLRVlfU01PT1RIX1pPT01fU1VQUE9SVEVEID0gInNtb290aC16b29tLXN1cHBvcnRlZCI7CisgICAgICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBLRVlfRk9DVVNfRElTVEFOQ0VTID0gImZvY3VzLWRpc3RhbmNlcyI7CisgICAgICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBLRVlfTUVURVJJTkdfTU9ERSA9ICJtZXRlcmluZy1tb2RlIjsKKwogICAgICAgICAvLyBQYXJhbWV0ZXIga2V5IHN1ZmZpeCBmb3Igc3VwcG9ydGVkIHZhbHVlcy4KICAgICAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFNVUFBPUlRFRF9WQUxVRVNfU1VGRklYID0gIi12YWx1ZXMiOwogCkBAIC04MDcsMjEgKzg4Nyw4MSBAQAogICAgICAgICAgKi8KICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRkxBU0hfTU9ERV9UT1JDSCA9ICJ0b3JjaCI7CiAKLSAgICAgICAgLy8gVmFsdWVzIGZvciBzY2VuZSBtb2RlIHNldHRpbmdzLgorICAgICAgICAvKioKKyAgICAgICAgICogU2NlbmUgbW9kZSBpcyBvZmYuCisgICAgICAgICAqLwogICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTQ0VORV9NT0RFX0FVVE8gPSAiYXV0byI7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFRha2UgcGhvdG9zIG9mIGZhc3QgbW92aW5nIG9iamVjdHMuIFNhbWUgYXMge0BsaW5rCisgICAgICAgICAqICNTQ0VORV9NT0RFX1NQT1JUU30uCisgICAgICAgICAqLwogICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTQ0VORV9NT0RFX0FDVElPTiA9ICJhY3Rpb24iOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBUYWtlIHBlb3BsZSBwaWN0dXJlcy4KKyAgICAgICAgICovCiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNDRU5FX01PREVfUE9SVFJBSVQgPSAicG9ydHJhaXQiOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBUYWtlIHBpY3R1cmVzIG9uIGRpc3RhbnQgb2JqZWN0cy4KKyAgICAgICAgICovCiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNDRU5FX01PREVfTEFORFNDQVBFID0gImxhbmRzY2FwZSI7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFRha2UgcGhvdG9zIGF0IG5pZ2h0LgorICAgICAgICAgKi8KICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0NFTkVfTU9ERV9OSUdIVCA9ICJuaWdodCI7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFRha2UgcGVvcGxlIHBpY3R1cmVzIGF0IG5pZ2h0LgorICAgICAgICAgKi8KICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0NFTkVfTU9ERV9OSUdIVF9QT1JUUkFJVCA9ICJuaWdodC1wb3J0cmFpdCI7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFRha2UgcGhvdG9zIGluIGEgdGhlYXRlci4gRmxhc2ggbGlnaHQgaXMgb2ZmLgorICAgICAgICAgKi8KICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0NFTkVfTU9ERV9USEVBVFJFID0gInRoZWF0cmUiOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBUYWtlIHBpY3R1cmVzIG9uIHRoZSBiZWFjaC4KKyAgICAgICAgICovCiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNDRU5FX01PREVfQkVBQ0ggPSAiYmVhY2giOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBUYWtlIHBpY3R1cmVzIG9uIHRoZSBzbm93LgorICAgICAgICAgKi8KICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0NFTkVfTU9ERV9TTk9XID0gInNub3ciOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBUYWtlIHN1bnNldCBwaG90b3MuCisgICAgICAgICAqLwogICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTQ0VORV9NT0RFX1NVTlNFVCA9ICJzdW5zZXQiOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBBdm9pZCBibHVycnkgcGljdHVyZXMgKGZvciBleGFtcGxlLCBkdWUgdG8gaGFuZCBzaGFrZSkuCisgICAgICAgICAqLwogICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBTQ0VORV9NT0RFX1NURUFEWVBIT1RPID0gInN0ZWFkeXBob3RvIjsKKworICAgICAgICAvKioKKyAgICAgICAgICogRm9yIHNob290aW5nIGZpcmV3b3JrIGRpc3BsYXlzLgorICAgICAgICAgKi8KICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0NFTkVfTU9ERV9GSVJFV09SS1MgPSAiZmlyZXdvcmtzIjsKKworICAgICAgICAvKioKKyAgICAgICAgICogVGFrZSBwaG90b3Mgb2YgZmFzdCBtb3Zpbmcgb2JqZWN0cy4gU2FtZSBhcyB7QGxpbmsKKyAgICAgICAgICogI1NDRU5FX01PREVfQUNUSU9OfS4KKyAgICAgICAgICovCiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNDRU5FX01PREVfU1BPUlRTID0gInNwb3J0cyI7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFRha2UgaW5kb29yIGxvdy1saWdodCBzaG90LgorICAgICAgICAgKi8KICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0NFTkVfTU9ERV9QQVJUWSA9ICJwYXJ0eSI7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIENhcHR1cmUgdGhlIG5hdHVyYWxseSB3YXJtIGNvbG9yIG9mIHNjZW5lcyBsaXQgYnkgY2FuZGxlcy4KKyAgICAgICAgICovCiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFNDRU5FX01PREVfQ0FORExFTElHSFQgPSAiY2FuZGxlbGlnaHQiOwogCiAgICAgICAgIC8qKgpAQCAtODU4LDYgKzk5OCw1MyBAQAogICAgICAgICAgKi8KICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRk9DVVNfTU9ERV9FRE9GID0gImVkb2YiOwogCisgICAgICAgIC8vIEluZGljZXMgZm9yIGZvY3VzIGRpc3RhbmNlIGFycmF5LgorICAgICAgICAvKioKKyAgICAgICAgICogVGhlIGFycmF5IGluZGV4IG9mIG5lYXIgZm9jdXMgZGlzdGFuY2UgZm9yIHVzZSB3aXRoCisgICAgICAgICAqIHtAbGluayAjZ2V0Rm9jdXNEaXN0YW5jZXMoZmxvYXRbXSl9LgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRk9DVVNfRElTVEFOQ0VfTkVBUl9JTkRFWCA9IDA7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFRoZSBhcnJheSBpbmRleCBvZiBvcHRpbWFsIGZvY3VzIGRpc3RhbmNlIGZvciB1c2Ugd2l0aAorICAgICAgICAgKiB7QGxpbmsgI2dldEZvY3VzRGlzdGFuY2VzKGZsb2F0W10pfS4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZPQ1VTX0RJU1RBTkNFX09QVElNQUxfSU5ERVggPSAxOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBUaGUgYXJyYXkgaW5kZXggb2YgZmFyIGZvY3VzIGRpc3RhbmNlIGZvciB1c2Ugd2l0aAorICAgICAgICAgKiB7QGxpbmsgI2dldEZvY3VzRGlzdGFuY2VzKGZsb2F0W10pfS4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZPQ1VTX0RJU1RBTkNFX0ZBUl9JTkRFWCA9IDI7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIENvbnRpbnVvdXMgZm9jdXMgbW9kZS4gVGhlIGNhbWVyYSBjb250aW51b3VzbHkgdHJpZXMgdG8gZm9jdXMuIFRoaXMKKyAgICAgICAgICogaXMgaWRlYWwgZm9yIHNob290aW5nIHZpZGVvIG9yIHNob290aW5nIHBob3RvIG9mIG1vdmluZyBvYmplY3QuCisgICAgICAgICAqIENvbnRpbnVvdXMgZm9jdXMgc3RhcnRzIHdoZW4ge0BsaW5rICNhdXRvRm9jdXMoQXV0b0ZvY3VzQ2FsbGJhY2spfSBpcworICAgICAgICAgKiBjYWxsZWQuIENvbnRpbnVvdXMgZm9jdXMgc3RvcHMgd2hlbiB7QGxpbmsgI2NhbmNlbEF1dG9Gb2N1cygpfSBpcworICAgICAgICAgKiBjYWxsZWQuIEF1dG9Gb2N1c0NhbGxiYWNrIHdpbGwgYmUgb25seSBjYWxsZWQgb25jZSBhcyBzb29uIGFzIHRoZQorICAgICAgICAgKiBwaWN0dXJlIGlzIGluIGZvY3VzLgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRk9DVVNfTU9ERV9DT05USU5VT1VTID0gImNvbnRpbnVvdXMiOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBUaGUgY2FtZXJhIGRldGVybWluZXMgdGhlIGV4cG9zdXJlIGJ5IGdpdmluZyBtb3JlIHdlaWdodCB0byB0aGUKKyAgICAgICAgICogY2VudHJhbCBwYXJ0IG9mIHRoZSBzY2VuZS4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE1FVEVSSU5HX01PREVfQ0VOVEVSX1dFSUdIVEVEID0gImNlbnRlci13ZWlnaHRlZCI7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFRoZSBjYW1lcmEgZGV0ZXJtaW5lcyB0aGUgZXhwb3N1cmUgYnkgYXZlcmFnaW5nIHRoZSBlbnRpcmUgc2NlbmUsCisgICAgICAgICAqIGdpdmluZyBubyB3ZWlnaHRpbmcgdG8gYW55IHBhcnRpY3VsYXIgYXJlYS4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIE1FVEVSSU5HX01PREVfRlJBTUVfQVZFUkFHRSA9ICJmcmFtZS1hdmVyYWdlIjsKKworICAgICAgICAvKioKKyAgICAgICAgICogVGhlIGNhbWVyYSBkZXRlcm1pbmVzIHRoZSBleHBvc3VyZSBieSBhIHZlcnkgc21hbGwgYXJlYSBvZiB0aGUgc2NlbmUsCisgICAgICAgICAqIHR5cGljYWxseSB0aGUgY2VudGVyLgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTUVURVJJTkdfTU9ERV9TUE9UID0gInNwb3QiOworCiAgICAgICAgIC8vIEZvcm1hdHMgZm9yIHNldFByZXZpZXdGb3JtYXQgYW5kIHNldFBpY3R1cmVGb3JtYXQuCiAgICAgICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBQSVhFTF9GT1JNQVRfWVVWNDIyU1AgPSAieXV2NDIyc3AiOwogICAgICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgUElYRUxfRk9STUFUX1lVVjQyMFNQID0gInl1djQyMHNwIjsKQEAgLTE3ODgsNiArMTk3NSw3NiBAQAogICAgICAgICAgICAgcmV0dXJuIFRSVUUuZXF1YWxzKHN0cik7CiAgICAgICAgIH0KIAorICAgICAgICAvKioKKyAgICAgICAgICogR2V0cyB0aGUgZGlzdGFuY2VzIGZyb20gdGhlIGNhbWVyYSB0byB3aGVyZSBhbiBvYmplY3QgYXBwZWFycyB0byBiZQorICAgICAgICAgKiBpbiBmb2N1cy4gVGhlIG9iamVjdCBpcyBzaGFycGVzdCBhdCB0aGUgb3B0aW1hbCBmb2N1cyBkaXN0YW5jZS4gVGhlCisgICAgICAgICAqIGRlcHRoIG9mIGZpZWxkIGlzIHRoZSBmYXIgZm9jdXMgZGlzdGFuY2UgbWludXMgbmVhciBmb2N1cyBkaXN0YW5jZS4KKyAgICAgICAgICoKKyAgICAgICAgICogRm9jdXMgZGlzdGFuY2VzIG1heSBjaGFuZ2UgYWZ0ZXIgY2FsbGluZyB7QGxpbmsKKyAgICAgICAgICogI2F1dG9Gb2N1cyhBdXRvRm9jdXNDYWxsYmFjayl9LCB7QGxpbmsgI2NhbmNlbEF1dG9Gb2N1c30sIG9yIHtAbGluaworICAgICAgICAgKiAjc3RhcnRQcmV2aWV3KCl9LiBBcHBsaWNhdGlvbnMgY2FuIGNhbGwge0BsaW5rICNnZXRQYXJhbWV0ZXJzKCl9CisgICAgICAgICAqIGFuZCB0aGlzIG1ldGhvZCBhbnl0aW1lIHRvIGdldCB0aGUgbGF0ZXN0IGZvY3VzIGRpc3RhbmNlcy4gSWYgdGhlCisgICAgICAgICAqIGZvY3VzIG1vZGUgaXMgRk9DVVNfTU9ERV9DT05USU5VT1VTIGFuZCBhdXRvZm9jdXMgaGFzIHN0YXJ0ZWQsIGZvY3VzCisgICAgICAgICAqIGRpc3RhbmNlcyBtYXkgY2hhbmdlIGZyb20gdGltZSB0byB0aW1lLgorICAgICAgICAgKgorICAgICAgICAgKiBGYXIgZm9jdXMgZGlzdGFuY2UgPj0gb3B0aW1hbCBmb2N1cyBkaXN0YW5jZSA+PSBuZWFyIGZvY3VzIGRpc3RhbmNlLgorICAgICAgICAgKiBJZiB0aGUgZm9jdXMgZGlzdGFuY2UgaXMgaW5maW5pdHksIHRoZSB2YWx1ZSB3aWxsIGJlCisgICAgICAgICAqIEZsb2F0LlBPU0lUSVZFX0lORklOSVRZLgorICAgICAgICAgKgorICAgICAgICAgKiBAcGFyYW0gb3V0cHV0IGZvY3VzIGRpc3RhbmNlcyBpbiBtZXRlcnMuIG91dHB1dCBtdXN0IGJlIGEgZmxvYXQKKyAgICAgICAgICogICAgICAgIGFycmF5IHdpdGggdGhyZWUgZWxlbWVudHMuIE5lYXIgZm9jdXMgZGlzdGFuY2UsIG9wdGltYWwgZm9jdXMKKyAgICAgICAgICogICAgICAgIGRpc3RhbmNlLCBhbmQgZmFyIGZvY3VzIGRpc3RhbmNlIHdpbGwgYmUgZmlsbGVkIGluIHRoZSBhcnJheS4KKyAgICAgICAgICogQHNlZSAjRk9DVVNfRElTVEFOQ0VfTkVBUl9JTkRFWAorICAgICAgICAgKiBAc2VlICNGT0NVU19ESVNUQU5DRV9PUFRJTUFMX0lOREVYCisgICAgICAgICAqIEBzZWUgI0ZPQ1VTX0RJU1RBTkNFX0ZBUl9JTkRFWAorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHZvaWQgZ2V0Rm9jdXNEaXN0YW5jZXMoZmxvYXRbXSBvdXRwdXQpIHsKKyAgICAgICAgICAgIGlmIChvdXRwdXQgPT0gbnVsbCB8fCBvdXRwdXQubGVuZ3RoICE9IDMpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgIm91dHB1dCBtdXN0IGJlIGFuIGZsb2F0IGFycmF5IHdpdGggdGhyZWUgZWxlbWVudHMuIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBMaXN0PEZsb2F0PiBkaXN0YW5jZXMgPSBzcGxpdEZsb2F0KGdldChLRVlfRk9DVVNfRElTVEFOQ0VTKSk7CisgICAgICAgICAgICBvdXRwdXRbMF0gPSBkaXN0YW5jZXMuZ2V0KDApOworICAgICAgICAgICAgb3V0cHV0WzFdID0gZGlzdGFuY2VzLmdldCgxKTsKKyAgICAgICAgICAgIG91dHB1dFsyXSA9IGRpc3RhbmNlcy5nZXQoMik7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogR2V0cyB0aGUgc3VwcG9ydGVkIG1ldGVyaW5nIG1vZGVzLgorICAgICAgICAgKgorICAgICAgICAgKiBAcmV0dXJuIGEgbGlzdCBvZiBzdXBwb3J0ZWQgbWV0ZXJpbmcgbW9kZXMuIG51bGwgaWYgbWV0ZXJpbmcgbW9kZQorICAgICAgICAgKiAgICAgICAgIHNldHRpbmcgaXMgbm90IHN1cHBvcnRlZC4KKyAgICAgICAgICogQHNlZSAjZ2V0TWV0ZXJpbmdNb2RlKCkKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBMaXN0PFN0cmluZz4gZ2V0U3VwcG9ydGVkTWV0ZXJpbmdNb2RlcygpIHsKKyAgICAgICAgICAgIFN0cmluZyBzdHIgPSBnZXQoS0VZX01FVEVSSU5HX01PREUgKyBTVVBQT1JURURfVkFMVUVTX1NVRkZJWCk7CisgICAgICAgICAgICByZXR1cm4gc3BsaXQoc3RyKTsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBHZXRzIHRoZSBjdXJyZW50IG1ldGVyaW5nIG1vZGUsIHdoaWNoIGFmZmVjdHMgaG93IGNhbWVyYSBkZXRlcm1pbmVzCisgICAgICAgICAqIGV4cG9zdXJlLgorICAgICAgICAgKgorICAgICAgICAgKiBAcmV0dXJuIGN1cnJlbnQgbWV0ZXJpbmcgbW9kZS4gSWYgdGhlIGNhbWVyYSBkb2VzIG5vdCBzdXBwb3J0CisgICAgICAgICAqICAgICAgICAgbWV0ZXJpbmcgc2V0dGluZywgdGhpcyBzaG91bGQgcmV0dXJuIG51bGwuCisgICAgICAgICAqIEBzZWUgI01FVEVSSU5HX01PREVfQ0VOVEVSX1dFSUdIVEVECisgICAgICAgICAqIEBzZWUgI01FVEVSSU5HX01PREVfRlJBTUVfQVZFUkFHRQorICAgICAgICAgKiBAc2VlICNNRVRFUklOR19NT0RFX1NQT1QKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0TWV0ZXJpbmdNb2RlKCkgeworICAgICAgICAgICAgcmV0dXJuIGdldChLRVlfTUVURVJJTkdfTU9ERSk7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogU2V0cyB0aGUgbWV0ZXJpbmcgbW9kZS4KKyAgICAgICAgICoKKyAgICAgICAgICogQHBhcmFtIHZhbHVlIG1ldGVyaW5nIG1vZGUuCisgICAgICAgICAqIEBzZWUgI2dldE1ldGVyaW5nTW9kZSgpCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgdm9pZCBzZXRNZXRlcmluZ01vZGUoU3RyaW5nIHZhbHVlKSB7CisgICAgICAgICAgICBzZXQoS0VZX01FVEVSSU5HX01PREUsIHZhbHVlKTsKKyAgICAgICAgfQorCiAgICAgICAgIC8vIFNwbGl0cyBhIGNvbW1hIGRlbGltaXRlZCBzdHJpbmcgdG8gYW4gQXJyYXlMaXN0IG9mIFN0cmluZy4KICAgICAgICAgLy8gUmV0dXJuIG51bGwgaWYgdGhlIHBhc3Npbmcgc3RyaW5nIGlzIG51bGwgb3IgdGhlIHNpemUgaXMgMC4KICAgICAgICAgcHJpdmF0ZSBBcnJheUxpc3Q8U3RyaW5nPiBzcGxpdChTdHJpbmcgc3RyKSB7CkBAIC0xODE3LDYgKzIwNzQsMjEgQEAKICAgICAgICAgICAgIHJldHVybiBzdWJzdHJpbmdzOwogICAgICAgICB9CiAKKyAgICAgICAgLy8gU3BsaXRzIGEgY29tbWEgZGVsaW1pdGVkIHN0cmluZyB0byBhbiBBcnJheUxpc3Qgb2YgRmxvYXQuCisgICAgICAgIC8vIFJldHVybiBudWxsIGlmIHRoZSBwYXNzaW5nIHN0cmluZyBpcyBudWxsIG9yIHRoZSBzaXplIGlzIDAuCisgICAgICAgIHByaXZhdGUgQXJyYXlMaXN0PEZsb2F0PiBzcGxpdEZsb2F0KFN0cmluZyBzdHIpIHsKKyAgICAgICAgICAgIGlmIChzdHIgPT0gbnVsbCkgcmV0dXJuIG51bGw7CisKKyAgICAgICAgICAgIFN0cmluZ1Rva2VuaXplciB0b2tlbml6ZXIgPSBuZXcgU3RyaW5nVG9rZW5pemVyKHN0ciwgIiwiKTsKKyAgICAgICAgICAgIEFycmF5TGlzdDxGbG9hdD4gc3Vic3RyaW5ncyA9IG5ldyBBcnJheUxpc3Q8RmxvYXQ+KCk7CisgICAgICAgICAgICB3aGlsZSAodG9rZW5pemVyLmhhc01vcmVFbGVtZW50cygpKSB7CisgICAgICAgICAgICAgICAgU3RyaW5nIHRva2VuID0gdG9rZW5pemVyLm5leHRUb2tlbigpOworICAgICAgICAgICAgICAgIHN1YnN0cmluZ3MuYWRkKEZsb2F0LnBhcnNlRmxvYXQodG9rZW4pKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzdWJzdHJpbmdzLnNpemUoKSA9PSAwKSByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIHJldHVybiBzdWJzdHJpbmdzOworICAgICAgICB9CisKICAgICAgICAgLy8gUmV0dXJucyB0aGUgdmFsdWUgb2YgYSBmbG9hdCBwYXJhbWV0ZXIuCiAgICAgICAgIHByaXZhdGUgZmxvYXQgZ2V0RmxvYXQoU3RyaW5nIGtleSwgZmxvYXQgZGVmYXVsdFZhbHVlKSB7CiAgICAgICAgICAgICB0cnkgewpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvaGFyZHdhcmUvU2Vuc29yLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9oYXJkd2FyZS9TZW5zb3IuamF2YQppbmRleCAzMTdlNTQ3Li4zNDkwYWMwIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9oYXJkd2FyZS9TZW5zb3IuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9oYXJkd2FyZS9TZW5zb3IuamF2YQpAQCAtMTcsNjUgKzE3LDcxIEBACiAKIHBhY2thZ2UgYW5kcm9pZC5oYXJkd2FyZTsKIAotLyoqIAotICogQ2xhc3MgcmVwcmVzZW50aW5nIGEgc2Vuc29yLiBVc2Uge0BsaW5rIFNlbnNvck1hbmFnZXIjZ2V0U2Vuc29yTGlzdH0KLSAqIHRvIGdldCB0aGUgbGlzdCBvZiBhdmFpbGFibGUgU2Vuc29ycy4KKy8qKgorICogQ2xhc3MgcmVwcmVzZW50aW5nIGEgc2Vuc29yLiBVc2Uge0BsaW5rIFNlbnNvck1hbmFnZXIjZ2V0U2Vuc29yTGlzdH0gdG8gZ2V0CisgKiB0aGUgbGlzdCBvZiBhdmFpbGFibGUgU2Vuc29ycy4KKyAqCisgKiBAc2VlIFNlbnNvck1hbmFnZXIKKyAqIEBzZWUgU2Vuc29yRXZlbnRMaXN0ZW5lcgorICogQHNlZSBTZW5zb3JFdmVudAorICoKICAqLwogcHVibGljIGNsYXNzIFNlbnNvciB7CiAKLSAgICAvKiogCi0gICAgICogQSBjb25zdGFudCBkZXNjcmliaW5nIGFuIGFjY2VsZXJvbWV0ZXIgc2Vuc29yIHR5cGUuCi0gICAgICogU2VlIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvckV2ZW50IFNlbnNvckV2ZW50fQotICAgICAqIGZvciBtb3JlIGRldGFpbHMuCisgICAgLyoqCisgICAgICogQSBjb25zdGFudCBkZXNjcmliaW5nIGFuIGFjY2VsZXJvbWV0ZXIgc2Vuc29yIHR5cGUuIFNlZQorICAgICAqIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvckV2ZW50I3ZhbHVlcyBTZW5zb3JFdmVudC52YWx1ZXN9IGZvciBtb3JlCisgICAgICogZGV0YWlscy4KICAgICAgKi8KLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBUWVBFX0FDQ0VMRVJPTUVURVIgID0gMTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBUWVBFX0FDQ0VMRVJPTUVURVIgPSAxOwogCi0gICAgLyoqIAotICAgICAqIEEgY29uc3RhbnQgZGVzY3JpYmluZyBhIG1hZ25ldGljIGZpZWxkIHNlbnNvciB0eXBlLgotICAgICAqIFNlZSB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JFdmVudCBTZW5zb3JFdmVudH0KLSAgICAgKiBmb3IgbW9yZSBkZXRhaWxzLgorICAgIC8qKgorICAgICAqIEEgY29uc3RhbnQgZGVzY3JpYmluZyBhIG1hZ25ldGljIGZpZWxkIHNlbnNvciB0eXBlLiBTZWUKKyAgICAgKiB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JFdmVudCN2YWx1ZXMgU2Vuc29yRXZlbnQudmFsdWVzfSBmb3IgbW9yZQorICAgICAqIGRldGFpbHMuCiAgICAgICovCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVFlQRV9NQUdORVRJQ19GSUVMRCA9IDI7Ci0gICAgCi0gICAgLyoqIAotICAgICAqIEEgY29uc3RhbnQgZGVzY3JpYmluZyBhbiBvcmllbnRhdGlvbiBzZW5zb3IgdHlwZS4KLSAgICAgKiBTZWUge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yRXZlbnQgU2Vuc29yRXZlbnR9Ci0gICAgICogZm9yIG1vcmUgZGV0YWlscy4KKworICAgIC8qKgorICAgICAqIEEgY29uc3RhbnQgZGVzY3JpYmluZyBhbiBvcmllbnRhdGlvbiBzZW5zb3IgdHlwZS4gU2VlCisgICAgICoge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yRXZlbnQjdmFsdWVzIFNlbnNvckV2ZW50LnZhbHVlc30gZm9yIG1vcmUKKyAgICAgKiBkZXRhaWxzLgorICAgICAqCiAgICAgICogQGRlcHJlY2F0ZWQgdXNlIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvck1hbmFnZXIjZ2V0T3JpZW50YXRpb24KLSAgICAgKiAgU2Vuc29yTWFuYWdlci5nZXRPcmllbnRhdGlvbigpfSBpbnN0ZWFkLgorICAgICAqICAgICAgICAgICAgIFNlbnNvck1hbmFnZXIuZ2V0T3JpZW50YXRpb24oKX0gaW5zdGVhZC4KICAgICAgKi8KICAgICBARGVwcmVjYXRlZAotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFRZUEVfT1JJRU5UQVRJT04gICAgPSAzOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFRZUEVfT1JJRU5UQVRJT04gPSAzOwogCiAgICAgLyoqIEEgY29uc3RhbnQgZGVzY3JpYmluZyBhIGd5cm9zY29wZSBzZW5zb3IgdHlwZSAqLwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFRZUEVfR1lST1NDT1BFICAgICAgPSA0OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFRZUEVfR1lST1NDT1BFID0gNDsKKwogICAgIC8qKgotICAgICAqIEEgY29uc3RhbnQgZGVzY3JpYmluZyBhbiBsaWdodCBzZW5zb3IgdHlwZS4KLSAgICAgKiBTZWUge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yRXZlbnQgU2Vuc29yRXZlbnR9Ci0gICAgICogZm9yIG1vcmUgZGV0YWlscy4KKyAgICAgKiBBIGNvbnN0YW50IGRlc2NyaWJpbmcgYW4gbGlnaHQgc2Vuc29yIHR5cGUuIFNlZQorICAgICAqIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvckV2ZW50I3ZhbHVlcyBTZW5zb3JFdmVudC52YWx1ZXN9IGZvciBtb3JlCisgICAgICogZGV0YWlscy4KICAgICAgKi8KLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBUWVBFX0xJR0hUICAgICAgICAgID0gNTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBUWVBFX0xJR0hUID0gNTsKIAogICAgIC8qKiBBIGNvbnN0YW50IGRlc2NyaWJpbmcgYSBwcmVzc3VyZSBzZW5zb3IgdHlwZSAqLwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFRZUEVfUFJFU1NVUkUgICAgICAgPSA2OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFRZUEVfUFJFU1NVUkUgPSA2OwogCiAgICAgLyoqIEEgY29uc3RhbnQgZGVzY3JpYmluZyBhIHRlbXBlcmF0dXJlIHNlbnNvciB0eXBlICovCi0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVFlQRV9URU1QRVJBVFVSRSAgICA9IDc7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVFlQRV9URU1QRVJBVFVSRSA9IDc7CiAKICAgICAvKioKLSAgICAgKiBBIGNvbnN0YW50IGRlc2NyaWJpbmcgYW4gcHJveGltaXR5IHNlbnNvciB0eXBlLgotICAgICAqIFNlZSB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JFdmVudCBTZW5zb3JFdmVudH0KLSAgICAgKiBmb3IgbW9yZSBkZXRhaWxzLgorICAgICAqIEEgY29uc3RhbnQgZGVzY3JpYmluZyBhbiBwcm94aW1pdHkgc2Vuc29yIHR5cGUuIFNlZQorICAgICAqIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvckV2ZW50I3ZhbHVlcyBTZW5zb3JFdmVudC52YWx1ZXN9IGZvciBtb3JlCisgICAgICogZGV0YWlscy4KICAgICAgKi8KLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBUWVBFX1BST1hJTUlUWSAgICAgID0gODsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBUWVBFX1BST1hJTUlUWSA9IDg7CiAKLSAgICAKLSAgICAvKiogCisgICAgLyoqCiAgICAgICogQSBjb25zdGFudCBkZXNjcmliaW5nIGFsbCBzZW5zb3IgdHlwZXMuCiAgICAgICovCi0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVFlQRV9BTEwgICAgICAgICAgICAgPSAtMTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBUWVBFX0FMTCA9IC0xOwogCi0gICAgLyogU29tZSBvZiB0aGVzZSBmaWVsZHMgYXJlIHNldCBvbmx5IGJ5IHRoZSBuYXRpdmUgYmluZGluZ3MgaW4gCisgICAgLyogU29tZSBvZiB0aGVzZSBmaWVsZHMgYXJlIHNldCBvbmx5IGJ5IHRoZSBuYXRpdmUgYmluZGluZ3MgaW4KICAgICAgKiBTZW5zb3JNYW5hZ2VyLgogICAgICAqLwogICAgIHByaXZhdGUgU3RyaW5nICBtTmFtZTsKQEAgLTg3LDggKzkzLDggQEAKICAgICBwcml2YXRlIGZsb2F0ICAgbVJlc29sdXRpb247CiAgICAgcHJpdmF0ZSBmbG9hdCAgIG1Qb3dlcjsKICAgICBwcml2YXRlIGludCAgICAgbUxlZ2FjeVR5cGU7Ci0gICAgCi0gICAgCisKKwogICAgIFNlbnNvcigpIHsKICAgICB9CiAKQEAgLTEwNSw1MSArMTExLDUxIEBACiAgICAgcHVibGljIFN0cmluZyBnZXRWZW5kb3IoKSB7CiAgICAgICAgIHJldHVybiBtVmVuZG9yOwogICAgIH0KLSAgICAKKwogICAgIC8qKgogICAgICAqIEByZXR1cm4gZ2VuZXJpYyB0eXBlIG9mIHRoaXMgc2Vuc29yLgogICAgICAqLwogICAgIHB1YmxpYyBpbnQgZ2V0VHlwZSgpIHsKICAgICAgICAgcmV0dXJuIG1UeXBlOwogICAgIH0KLSAgICAKKwogICAgIC8qKgogICAgICAqIEByZXR1cm4gdmVyc2lvbiBvZiB0aGUgc2Vuc29yJ3MgbW9kdWxlLgogICAgICAqLwogICAgIHB1YmxpYyBpbnQgZ2V0VmVyc2lvbigpIHsKICAgICAgICAgcmV0dXJuIG1WZXJzaW9uOwogICAgIH0KLSAgICAKKwogICAgIC8qKgogICAgICAqIEByZXR1cm4gbWF4aW11bSByYW5nZSBvZiB0aGUgc2Vuc29yIGluIHRoZSBzZW5zb3IncyB1bml0LgogICAgICAqLwogICAgIHB1YmxpYyBmbG9hdCBnZXRNYXhpbXVtUmFuZ2UoKSB7CiAgICAgICAgIHJldHVybiBtTWF4UmFuZ2U7CiAgICAgfQotICAgIAorCiAgICAgLyoqCiAgICAgICogQHJldHVybiByZXNvbHV0aW9uIG9mIHRoZSBzZW5zb3IgaW4gdGhlIHNlbnNvcidzIHVuaXQuCiAgICAgICovCiAgICAgcHVibGljIGZsb2F0IGdldFJlc29sdXRpb24oKSB7CiAgICAgICAgIHJldHVybiBtUmVzb2x1dGlvbjsKICAgICB9Ci0gICAgCisKICAgICAvKioKICAgICAgKiBAcmV0dXJuIHRoZSBwb3dlciBpbiBtQSB1c2VkIGJ5IHRoaXMgc2Vuc29yIHdoaWxlIGluIHVzZQogICAgICAqLwogICAgIHB1YmxpYyBmbG9hdCBnZXRQb3dlcigpIHsKICAgICAgICAgcmV0dXJuIG1Qb3dlcjsKICAgICB9Ci0gICAgCisKICAgICBpbnQgZ2V0SGFuZGxlKCkgewogICAgICAgICByZXR1cm4gbUhhbmRsZTsKICAgICB9Ci0gICAgCisKICAgICB2b2lkIHNldFJhbmdlKGZsb2F0IG1heCwgZmxvYXQgcmVzKSB7CiAgICAgICAgIG1NYXhSYW5nZSA9IG1heDsKICAgICAgICAgbVJlc29sdXRpb24gPSByZXM7CiAgICAgfQotICAgIAorCiAgICAgdm9pZCBzZXRMZWdhY3lUeXBlKGludCBsZWdhY3lUeXBlKSB7CiAgICAgICAgIG1MZWdhY3lUeXBlID0gbGVnYWN5VHlwZTsKICAgICB9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9oYXJkd2FyZS9TZW5zb3JFdmVudC5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvaGFyZHdhcmUvU2Vuc29yRXZlbnQuamF2YQppbmRleCA5YTlmMGJmLi43MDUxOWZmIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9oYXJkd2FyZS9TZW5zb3JFdmVudC5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL2hhcmR3YXJlL1NlbnNvckV2ZW50LmphdmEKQEAgLTE3LDE0MyArMTcsMjExIEBACiBwYWNrYWdlIGFuZHJvaWQuaGFyZHdhcmU7CiAKIC8qKgotICogVGhpcyBjbGFzcyByZXByZXNlbnRzIGEgc2Vuc29yIGV2ZW50IGFuZCBob2xkcyBpbmZvcm1hdGlvbnMgc3VjaCBhcyB0aGUKLSAqIHNlbnNvciB0eXBlIChlZzogYWNjZWxlcm9tZXRlciwgb3JpZW50YXRpb24sIGV0Yy4uLiksIHRoZSB0aW1lLXN0YW1wLCAKLSAqIGFjY3VyYWN5IGFuZCBvZiBjb3Vyc2UgdGhlIHNlbnNvcidzIHtAbGluayBTZW5zb3JFdmVudCN2YWx1ZXMgZGF0YX0uCisgKiA8cD4KKyAqIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvciBTZW5zb3J9IGV2ZW50IGFuZAorICogaG9sZHMgaW5mb3JtYXRpb25zIHN1Y2ggYXMgdGhlIHNlbnNvcidzIHR5cGUsIHRoZSB0aW1lLXN0YW1wLCBhY2N1cmFjeSBhbmQgb2YKKyAqIGNvdXJzZSB0aGUgc2Vuc29yJ3Mge0BsaW5rIFNlbnNvckV2ZW50I3ZhbHVlcyBkYXRhfS4KKyAqIDwvcD4KICAqCi0gKiA8cD48dT5EZWZpbml0aW9uIG9mIHRoZSBjb29yZGluYXRlIHN5c3RlbSB1c2VkIGJ5IHRoZSBTZW5zb3JFdmVudCBBUEkuPC91PjxwPgotICogCi0gKiA8cHJlPgotICogVGhlIGNvb3JkaW5hdGUgc3BhY2UgaXMgZGVmaW5lZCByZWxhdGl2ZSB0byB0aGUgc2NyZWVuIG9mIHRoZSBwaG9uZSAKLSAqIGluIGl0cyBkZWZhdWx0IG9yaWVudGF0aW9uLiBUaGUgYXhlcyBhcmUgbm90IHN3YXBwZWQgd2hlbiB0aGUgZGV2aWNlJ3MKLSAqIHNjcmVlbiBvcmllbnRhdGlvbiBjaGFuZ2VzLgotICogCi0gKiBUaGUgT3BlbkdMIEVTIGNvb3JkaW5hdGUgc3lzdGVtIGlzIHVzZWQuIFRoZSBvcmlnaW4gaXMgaW4gdGhlCi0gKiBsb3dlci1sZWZ0IGNvcm5lciAgd2l0aCByZXNwZWN0IHRvIHRoZSBzY3JlZW4sIHdpdGggdGhlIFggYXhpcyBob3Jpem9udGFsCi0gKiBhbmQgcG9pbnRpbmcgIHJpZ2h0LCB0aGUgWSBheGlzIHZlcnRpY2FsIGFuZCBwb2ludGluZyB1cCBhbmQgdGhlIFogYXhpcwotICogcG9pbnRpbmcgb3V0c2lkZSB0aGUgZnJvbnQgZmFjZSBvZiB0aGUgc2NyZWVuLiBJbiB0aGlzIHN5c3RlbSwgY29vcmRpbmF0ZXMKLSAqIGJlaGluZCB0aGUgc2NyZWVuIGhhdmUgbmVnYXRpdmUgWiB2YWx1ZXMuCi0gKiAKKyAqIDxwPgorICogPHU+RGVmaW5pdGlvbiBvZiB0aGUgY29vcmRpbmF0ZSBzeXN0ZW0gdXNlZCBieSB0aGUgU2Vuc29yRXZlbnQgQVBJLjwvdT4KKyAqIDwvcD4KKyAqCisgKiA8cD4KKyAqIFRoZSBjb29yZGluYXRlLXN5c3RlbSBpcyBkZWZpbmVkIHJlbGF0aXZlIHRvIHRoZSBzY3JlZW4gb2YgdGhlIHBob25lIGluIGl0cworICogZGVmYXVsdCBvcmllbnRhdGlvbi4gVGhlIGF4ZXMgYXJlIG5vdCBzd2FwcGVkIHdoZW4gdGhlIGRldmljZSdzIHNjcmVlbgorICogb3JpZW50YXRpb24gY2hhbmdlcy4KKyAqIDwvcD4KKyAqCisgKiA8cD4KKyAqIFRoZSBYIGF4aXMgaXMgaG9yaXpvbnRhbCBhbmQgcG9pbnRzIHRvIHRoZSByaWdodCwgdGhlIFkgYXhpcyBpcyB2ZXJ0aWNhbCBhbmQKKyAqIHBvaW50cyB1cCBhbmQgdGhlIFogYXhpcyBwb2ludHMgdG93YXJkcyB0aGUgb3V0c2lkZSBvZiB0aGUgZnJvbnQgZmFjZSBvZiB0aGUKKyAqIHNjcmVlbi4gSW4gdGhpcyBzeXN0ZW0sIGNvb3JkaW5hdGVzIGJlaGluZCB0aGUgc2NyZWVuIGhhdmUgbmVnYXRpdmUgWiB2YWx1ZXMuCisgKiA8L3A+CisgKgorICogPHA+CisgKiA8Y2VudGVyPjxpbWcgc3JjPSIuLi8uLi8uLi9pbWFnZXMvYXhpc19kZXZpY2UucG5nIgorICogYWx0PSJTZW5zb3JzIGNvb3JkaW5hdGUtc3lzdGVtIGRpYWdyYW0uIiBib3JkZXI9IjAiIC8+PC9jZW50ZXI+CisgKiA8L3A+CisgKgorICogPHA+CiAgKiA8Yj5Ob3RlOjwvYj4gVGhpcyBjb29yZGluYXRlIHN5c3RlbSBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgb25lIHVzZWQgaW4gdGhlCi0gKiBBbmRyb2lkIDJEIEFQSXMgd2hlcmUgdGhlIG9yaWdpbiBpcyBpbiB0aGUgdG9wLWxlZnQgY29ybmVyLiAKKyAqIEFuZHJvaWQgMkQgQVBJcyB3aGVyZSB0aGUgb3JpZ2luIGlzIGluIHRoZSB0b3AtbGVmdCBjb3JuZXIuCisgKiA8L3A+CiAgKgotICogICB4PDAgICAgICAgICB4PjAKLSAqICAgICAgICAgICAgICAgIF4KLSAqICAgICAgICAgICAgICAgIHwKLSAqICAgICstLS0tLS0tLS0tLSstLT4gIHk+MAotICogICAgfCAgICAgICAgICAgfAotICogICAgfCAgICAgICAgICAgfAotICogICAgfCAgICAgICAgICAgfAotICogICAgfCAgICAgICAgICAgfCAgIC8gejwwCi0gKiAgICB8ICAgICAgICAgICB8ICAvCi0gKiAgICB8ICAgICAgICAgICB8IC8KLSAqICAgIE8tLS0tLS0tLS0tLSsvCi0gKiAgICB8W10gIFsgXSAgW10vCi0gKiAgICArLS0tLS0tLS0tLS8rICAgICB5PDAKLSAqICAgICAgICAgICAgICAvCi0gKiAgICAgICAgICAgICAvCi0gKiAgICAgICAgICAgfC8gej4wICh0b3dhcmQgdGhlIHNreSkKKyAqIEBzZWUgU2Vuc29yTWFuYWdlcgorICogQHNlZSBTZW5zb3JFdmVudAorICogQHNlZSBTZW5zb3IKICAqCi0gKiAgICBPOiBPcmlnaW4gKHg9MCx5PTAsej0wKQotICogPC9wcmU+CiAgKi8KIAogcHVibGljIGNsYXNzIFNlbnNvckV2ZW50IHsKICAgICAvKioKLSAgICAgKiBUaGUgbGVuZ3RoIGFuZCBjb250ZW50cyBvZiB0aGUgdmFsdWVzIGFycmF5IHZhcnkgZGVwZW5kaW5nIG9uIHdoaWNoCi0gICAgICogc2Vuc29yIHR5cGUgaXMgYmVpbmcgbW9uaXRvcmVkIChzZWUgYWxzbyB7QGxpbmsgU2Vuc29yRXZlbnR9IGZvciBhIAotICAgICAqIGRlZmluaXRpb24gb2YgdGhlIGNvb3JkaW5hdGUgc3lzdGVtIHVzZWQpOgorICAgICAqIDxwPgorICAgICAqIFRoZSBsZW5ndGggYW5kIGNvbnRlbnRzIG9mIHRoZSB7QGxpbmsgI3ZhbHVlcyB2YWx1ZXN9IGFycmF5IGRlcGVuZHMgb24KKyAgICAgKiB3aGljaCB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3Igc2Vuc29yfSB0eXBlIGlzIGJlaW5nIG1vbml0b3JlZCAoc2VlCisgICAgICogYWxzbyB7QGxpbmsgU2Vuc29yRXZlbnR9IGZvciBhIGRlZmluaXRpb24gb2YgdGhlIGNvb3JkaW5hdGUgc3lzdGVtIHVzZWQpLgorICAgICAqIDwvcD4KKyAgICAgKgorICAgICAqIDxoND57QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3IjVFlQRV9BQ0NFTEVST01FVEVSCisgICAgICogU2Vuc29yLlRZUEVfQUNDRUxFUk9NRVRFUn06PC9oND4gQWxsIHZhbHVlcyBhcmUgaW4gU0kgdW5pdHMgKG0vc14yKQogICAgICAqIAotICAgICAqIDxwPntAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvciNUWVBFX09SSUVOVEFUSU9OIFNlbnNvci5UWVBFX09SSUVOVEFUSU9OfTo8cD4KLSAgICAgKiAgQWxsIHZhbHVlcyBhcmUgYW5nbGVzIGluIGRlZ3JlZXMuCisgICAgICogPHVsPgorICAgICAqIDxwPgorICAgICAqIHZhbHVlc1swXTogQWNjZWxlcmF0aW9uIG1pbnVzIEd4IG9uIHRoZSB4LWF4aXMKKyAgICAgKiA8L3A+CisgICAgICogPHA+CisgICAgICogdmFsdWVzWzFdOiBBY2NlbGVyYXRpb24gbWludXMgR3kgb24gdGhlIHktYXhpcworICAgICAqIDwvcD4KKyAgICAgKiA8cD4KKyAgICAgKiB2YWx1ZXNbMl06IEFjY2VsZXJhdGlvbiBtaW51cyBHeiBvbiB0aGUgei1heGlzCisgICAgICogPC9wPgorICAgICAqIDwvdWw+CiAgICAgICogCi0gICAgICogPHA+dmFsdWVzWzBdOiBBemltdXRoLCBhbmdsZSBiZXR3ZWVuIHRoZSBtYWduZXRpYyBub3J0aCBkaXJlY3Rpb24gYW5kCi0gICAgICogdGhlIFkgYXhpcywgYXJvdW5kIHRoZSBaIGF4aXMgKDAgdG8gMzU5KS4KLSAgICAgKiAwPU5vcnRoLCA5MD1FYXN0LCAxODA9U291dGgsIDI3MD1XZXN0Ci0gICAgICoKLSAgICAgKiA8cD52YWx1ZXNbMV06IFBpdGNoLCByb3RhdGlvbiBhcm91bmQgWCBheGlzICgtMTgwIHRvIDE4MCksIAotICAgICAqIHdpdGggcG9zaXRpdmUgdmFsdWVzIHdoZW4gdGhlIHotYXhpcyBtb3ZlcyA8Yj50b3dhcmQ8L2I+IHRoZSB5LWF4aXMuCi0gICAgICoKLSAgICAgKiA8cD52YWx1ZXNbMl06IFJvbGwsIHJvdGF0aW9uIGFyb3VuZCBZIGF4aXMgKC05MCB0byA5MCksIHdpdGggCi0gICAgICogcG9zaXRpdmUgdmFsdWVzICB3aGVuIHRoZSB4LWF4aXMgbW92ZXMgPGI+dG93YXJkPC9iPiB0aGUgei1heGlzLgorICAgICAqIDxwPgorICAgICAqIEEgc2Vuc29yIG9mIHRoaXMgdHlwZSBtZWFzdXJlcyB0aGUgYWNjZWxlcmF0aW9uIGFwcGxpZWQgdG8gdGhlIGRldmljZQorICAgICAqICg8Yj5BZDwvYj4pLiBDb25jZXB0dWFsbHksIGl0IGRvZXMgc28gYnkgbWVhc3VyaW5nIGZvcmNlcyBhcHBsaWVkIHRvIHRoZQorICAgICAqIHNlbnNvciBpdHNlbGYgKDxiPkZzPC9iPikgdXNpbmcgdGhlIHJlbGF0aW9uOgorICAgICAqIDwvcD4KICAgICAgKiAKLSAgICAgKiA8cD48Yj5JbXBvcnRhbnQgbm90ZTo8L2I+IEZvciBoaXN0b3JpY2FsIHJlYXNvbnMgdGhlIHJvbGwgYW5nbGUgaXMKLSAgICAgKiBwb3NpdGl2ZSBpbiB0aGUgY2xvY2t3aXNlIGRpcmVjdGlvbiAobWF0aGVtYXRpY2FsbHkgc3BlYWtpbmcsIGl0Ci0gICAgICogc2hvdWxkIGJlIHBvc2l0aXZlIGluIHRoZSBjb3VudGVyLWNsb2Nrd2lzZSBkaXJlY3Rpb24pLgotICAgICAqCi0gICAgICogPHA+PGI+Tm90ZTo8L2I+IFRoaXMgZGVmaW5pdGlvbiBpcyBkaWZmZXJlbnQgZnJvbSA8Yj55YXcsIHBpdGNoIGFuZCAKLSAgICAgKiByb2xsPC9iPiB1c2VkIGluIGF2aWF0aW9uIHdoZXJlIHRoZSBYIGF4aXMgaXMgYWxvbmcgdGhlIGxvbmcgc2lkZSBvZgotICAgICAqIHRoZSBwbGFuZSAodGFpbCB0byBub3NlKS4KLSAgICAgKgotICAgICAqIDxwPjxiPk5vdGU6PC9iPiBUaGlzIHNlbnNvciB0eXBlIGV4aXN0cyBmb3IgbGVnYWN5IHJlYXNvbnMsIHBsZWFzZSB1c2UKLSAgICAgKiB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JNYW5hZ2VyI2dldFJvdGF0aW9uTWF0cml4IAotICAgICAqICAgICAgZ2V0Um90YXRpb25NYXRyaXgoKX0gaW4gY29uanVuY3Rpb24gd2l0aAotICAgICAqIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvck1hbmFnZXIjcmVtYXBDb29yZGluYXRlU3lzdGVtIAotICAgICAqICAgICAgcmVtYXBDb29yZGluYXRlU3lzdGVtKCl9IGFuZAotICAgICAqIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvck1hbmFnZXIjZ2V0T3JpZW50YXRpb24gZ2V0T3JpZW50YXRpb24oKX0KLSAgICAgKiB0byBjb21wdXRlIHRoZXNlIHZhbHVlcyBpbnN0ZWFkLgotICAgICAqCi0gICAgICogPHA+e0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yI1RZUEVfQUNDRUxFUk9NRVRFUiBTZW5zb3IuVFlQRV9BQ0NFTEVST01FVEVSfTo8cD4KLSAgICAgKiAgQWxsIHZhbHVlcyBhcmUgaW4gU0kgdW5pdHMgKG0vc14yKSBhbmQgbWVhc3VyZSB0aGUgYWNjZWxlcmF0aW9uIGFwcGxpZWQKLSAgICAgKiAgdG8gdGhlIHBob25lIG1pbnVzIHRoZSBmb3JjZSBvZiBncmF2aXR5LgotICAgICAqICAKLSAgICAgKiAgPHA+dmFsdWVzWzBdOiBBY2NlbGVyYXRpb24gbWludXMgR3ggb24gdGhlIHgtYXhpcyAKLSAgICAgKiAgPHA+dmFsdWVzWzFdOiBBY2NlbGVyYXRpb24gbWludXMgR3kgb24gdGhlIHktYXhpcyAKLSAgICAgKiAgPHA+dmFsdWVzWzJdOiBBY2NlbGVyYXRpb24gbWludXMgR3ogb24gdGhlIHotYXhpcwotICAgICAqICAKLSAgICAgKiAgPHA+PHU+RXhhbXBsZXM8L3U+OgotICAgICAqICAgIDxsaT5XaGVuIHRoZSBkZXZpY2UgbGllcyBmbGF0IG9uIGEgdGFibGUgYW5kIGlzIHB1c2hlZCBvbiBpdHMgbGVmdCAKLSAgICAgKiAgICBzaWRlIHRvd2FyZCB0aGUgcmlnaHQsIHRoZSB4IGFjY2VsZXJhdGlvbiB2YWx1ZSBpcyBwb3NpdGl2ZS48L2xpPgotICAgICAqICAgIAotICAgICAqICAgIDxsaT5XaGVuIHRoZSBkZXZpY2UgbGllcyBmbGF0IG9uIGEgdGFibGUsIHRoZSBhY2NlbGVyYXRpb24gdmFsdWUgaXMgCi0gICAgICogICAgKzkuODEsIHdoaWNoIGNvcnJlc3BvbmQgdG8gdGhlIGFjY2VsZXJhdGlvbiBvZiB0aGUgZGV2aWNlICgwIG0vc14yKSAKLSAgICAgKiAgICBtaW51cyB0aGUgZm9yY2Ugb2YgZ3Jhdml0eSAoLTkuODEgbS9zXjIpLjwvbGk+Ci0gICAgICogICAgCi0gICAgICogICAgPGxpPldoZW4gdGhlIGRldmljZSBsaWVzIGZsYXQgb24gYSB0YWJsZSBhbmQgaXMgcHVzaGVkIHRvd2FyZCB0aGUgc2t5Ci0gICAgICogICAgd2l0aCBhbiBhY2NlbGVyYXRpb24gb2YgQSBtL3NeMiwgdGhlIGFjY2VsZXJhdGlvbiB2YWx1ZSBpcyBlcXVhbCB0byAKLSAgICAgKiAgICBBKzkuODEgd2hpY2ggY29ycmVzcG9uZCB0byB0aGUgYWNjZWxlcmF0aW9uIG9mIHRoZSAKLSAgICAgKiAgICBkZXZpY2UgKCtBIG0vc14yKSBtaW51cyB0aGUgZm9yY2Ugb2YgZ3Jhdml0eSAoLTkuODEgbS9zXjIpLjwvbGk+CisgICAgICogPGI+PGNlbnRlcj5BZCA9IC0gt0ZzIC8gbWFzczwvY2VudGVyPjwvYj4KKyAgICAgKiAKKyAgICAgKiA8cD4KKyAgICAgKiBJbiBwYXJ0aWN1bGFyLCB0aGUgZm9yY2Ugb2YgZ3Jhdml0eSBpcyBhbHdheXMgaW5mbHVlbmNpbmcgdGhlIG1lYXN1cmVkCisgICAgICogYWNjZWxlcmF0aW9uOgorICAgICAqIDwvcD4KKyAgICAgKiAKKyAgICAgKiA8Yj48Y2VudGVyPkFkID0gLWcgLSC3RiAvIG1hc3M8L2NlbnRlcj48L2I+CisgICAgICogCisgICAgICogPHA+CisgICAgICogRm9yIHRoaXMgcmVhc29uLCB3aGVuIHRoZSBkZXZpY2UgaXMgc2l0dGluZyBvbiBhIHRhYmxlIChhbmQgb2J2aW91c2x5IG5vdAorICAgICAqIGFjY2VsZXJhdGluZyksIHRoZSBhY2NlbGVyb21ldGVyIHJlYWRzIGEgbWFnbml0dWRlIG9mIDxiPmc8L2I+ID0gOS44MQorICAgICAqIG0vc14yCisgICAgICogPC9wPgorICAgICAqIAorICAgICAqIDxwPgorICAgICAqIFNpbWlsYXJseSwgd2hlbiB0aGUgZGV2aWNlIGlzIGluIGZyZWUtZmFsbCBhbmQgdGhlcmVmb3JlIGRhbmdlcm91c2x5CisgICAgICogYWNjZWxlcmF0aW5nIHRvd2FyZHMgdG8gZ3JvdW5kIGF0IDkuODEgbS9zXjIsIGl0cyBhY2NlbGVyb21ldGVyIHJlYWRzIGEKKyAgICAgKiBtYWduaXR1ZGUgb2YgMCBtL3NeMi4KKyAgICAgKiA8L3A+CisgICAgICogCisgICAgICogPHA+CisgICAgICogSXQgc2hvdWxkIGJlIGFwcGFyZW50IHRoYXQgaW4gb3JkZXIgdG8gbWVhc3VyZSB0aGUgcmVhbCBhY2NlbGVyYXRpb24gb2YKKyAgICAgKiB0aGUgZGV2aWNlLCB0aGUgY29udHJpYnV0aW9uIG9mIHRoZSBmb3JjZSBvZiBncmF2aXR5IG11c3QgYmUgZWxpbWluYXRlZC4KKyAgICAgKiBUaGlzIGNhbiBiZSBhY2hpZXZlZCBieSBhcHBseWluZyBhIDxpPmhpZ2gtcGFzczwvaT4gZmlsdGVyLiBDb252ZXJzZWx5LCBhCisgICAgICogPGk+bG93LXBhc3M8L2k+IGZpbHRlciBjYW4gYmUgdXNlZCB0byBpc29sYXRlIHRoZSBmb3JjZSBvZiBncmF2aXR5LgorICAgICAqIDwvcD4KKyAgICAgKiA8cD4KKyAgICAgKiA8dT5FeGFtcGxlczwvdT46CisgICAgICogPHVsPgorICAgICAqIDxsaT5XaGVuIHRoZSBkZXZpY2UgbGllcyBmbGF0IG9uIGEgdGFibGUgYW5kIGlzIHB1c2hlZCBvbiBpdHMgbGVmdCBzaWRlCisgICAgICogdG93YXJkIHRoZSByaWdodCwgdGhlIHggYWNjZWxlcmF0aW9uIHZhbHVlIGlzIHBvc2l0aXZlLjwvbGk+CisgICAgICogCisgICAgICogPGxpPldoZW4gdGhlIGRldmljZSBsaWVzIGZsYXQgb24gYSB0YWJsZSwgdGhlIGFjY2VsZXJhdGlvbiB2YWx1ZSBpcworICAgICAqICs5LjgxLCB3aGljaCBjb3JyZXNwb25kIHRvIHRoZSBhY2NlbGVyYXRpb24gb2YgdGhlIGRldmljZSAoMCBtL3NeMikgbWludXMKKyAgICAgKiB0aGUgZm9yY2Ugb2YgZ3Jhdml0eSAoLTkuODEgbS9zXjIpLjwvbGk+CisgICAgICogCisgICAgICogPGxpPldoZW4gdGhlIGRldmljZSBsaWVzIGZsYXQgb24gYSB0YWJsZSBhbmQgaXMgcHVzaGVkIHRvd2FyZCB0aGUgc2t5CisgICAgICogd2l0aCBhbiBhY2NlbGVyYXRpb24gb2YgQSBtL3NeMiwgdGhlIGFjY2VsZXJhdGlvbiB2YWx1ZSBpcyBlcXVhbCB0bworICAgICAqIEErOS44MSB3aGljaCBjb3JyZXNwb25kIHRvIHRoZSBhY2NlbGVyYXRpb24gb2YgdGhlIGRldmljZSAoK0EgbS9zXjIpCisgICAgICogbWludXMgdGhlIGZvcmNlIG9mIGdyYXZpdHkgKC05LjgxIG0vc14yKS48L2xpPgorICAgICAqIDwvdWw+CiAgICAgICogCiAgICAgICogCi0gICAgICogPHA+e0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yI1RZUEVfTUFHTkVUSUNfRklFTEQgU2Vuc29yLlRZUEVfTUFHTkVUSUNfRklFTER9OjxwPgotICAgICAqICBBbGwgdmFsdWVzIGFyZSBpbiBtaWNyby1UZXNsYSAodVQpIGFuZCBtZWFzdXJlIHRoZSBhbWJpZW50IG1hZ25ldGljCi0gICAgICogIGZpZWxkIGluIHRoZSBYLCBZIGFuZCBaIGF4aXMuCi0gICAgICoKLSAgICAgKiA8cD57QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3IjVFlQRV9MSUdIVCBTZW5zb3IuVFlQRV9MSUdIVH06PHA+Ci0gICAgICoKLSAgICAgKiAgPHA+dmFsdWVzWzBdOiBBbWJpZW50IGxpZ2h0IGxldmVsIGluIFNJIGx1eCB1bml0cwotICAgICAqCi0gICAgICogPHA+e0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yI1RZUEVfUFJPWElNSVRZIFNlbnNvci5UWVBFX1BST1hJTUlUWX06PHA+Ci0gICAgICoKLSAgICAgKiAgPHA+dmFsdWVzWzBdOiBQcm94aW1pdHkgc2Vuc29yIGRpc3RhbmNlIG1lYXN1cmVkIGluIGNlbnRpbWV0ZXJzCi0gICAgICoKLSAgICAgKiAgPHA+IE5vdGUgdGhhdCBzb21lIHByb3hpbWl0eSBzZW5zb3JzIG9ubHkgc3VwcG9ydCBhIGJpbmFyeSAiY2xvc2UiIG9yICJmYXIiIG1lYXN1cmVtZW50LgotICAgICAqICAgSW4gdGhpcyBjYXNlLCB0aGUgc2Vuc29yIHNob3VsZCByZXBvcnQgaXRzIG1heFJhbmdlIHZhbHVlIGluIHRoZSAiZmFyIiBzdGF0ZSBhbmQgYSB2YWx1ZQotICAgICAqICAgbGVzcyB0aGFuIG1heFJhbmdlIGluIHRoZSAibmVhciIgc3RhdGUuCisgICAgICogPGg0PntAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvciNUWVBFX01BR05FVElDX0ZJRUxECisgICAgICogU2Vuc29yLlRZUEVfTUFHTkVUSUNfRklFTER9OjwvaDQ+CisgICAgICogQWxsIHZhbHVlcyBhcmUgaW4gbWljcm8tVGVzbGEgKHVUKSBhbmQgbWVhc3VyZSB0aGUgYW1iaWVudCBtYWduZXRpYyBmaWVsZAorICAgICAqIGluIHRoZSBYLCBZIGFuZCBaIGF4aXMuCisgICAgICogCisgICAgICogPGg0PntAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvciNUWVBFX0xJR0hUIFNlbnNvci5UWVBFX0xJR0hUfTo8L2g0PgorICAgICAqIAorICAgICAqIDx1bD4KKyAgICAgKiA8cD4KKyAgICAgKiB2YWx1ZXNbMF06IEFtYmllbnQgbGlnaHQgbGV2ZWwgaW4gU0kgbHV4IHVuaXRzCisgICAgICogPC91bD4KKyAgICAgKiAKKyAgICAgKiA8aDQ+e0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yI1RZUEVfUFJPWElNSVRZIFNlbnNvci5UWVBFX1BST1hJTUlUWX06CisgICAgICogPC9oND4KKyAgICAgKiAKKyAgICAgKiA8dWw+CisgICAgICogPHA+CisgICAgICogdmFsdWVzWzBdOiBQcm94aW1pdHkgc2Vuc29yIGRpc3RhbmNlIG1lYXN1cmVkIGluIGNlbnRpbWV0ZXJzCisgICAgICogPC91bD4KKyAgICAgKiAKKyAgICAgKiA8cD4KKyAgICAgKiA8Yj5Ob3RlOjwvYj4gU29tZSBwcm94aW1pdHkgc2Vuc29ycyBvbmx5IHN1cHBvcnQgYSBiaW5hcnkgPGk+bmVhcjwvaT4gb3IKKyAgICAgKiA8aT5mYXI8L2k+IG1lYXN1cmVtZW50LiBJbiB0aGlzIGNhc2UsIHRoZSBzZW5zb3Igc2hvdWxkIHJlcG9ydCBpdHMKKyAgICAgKiB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3IjZ2V0TWF4aW11bVJhbmdlKCkgbWF4aW11bSByYW5nZX0gdmFsdWUgaW4KKyAgICAgKiB0aGUgPGk+ZmFyPC9pPiBzdGF0ZSBhbmQgYSBsZXNzZXIgdmFsdWUgaW4gdGhlIDxpPm5lYXI8L2k+IHN0YXRlLgorICAgICAqIDwvcD4KKyAgICAgKiAKKyAgICAgKiA8aDQ+e0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yI1RZUEVfT1JJRU5UQVRJT04KKyAgICAgKiBTZW5zb3IuVFlQRV9PUklFTlRBVElPTn06PC9oND4gQWxsIHZhbHVlcyBhcmUgYW5nbGVzIGluIGRlZ3JlZXMuCisgICAgICogCisgICAgICogPHVsPgorICAgICAqIDxwPgorICAgICAqIHZhbHVlc1swXTogQXppbXV0aCwgYW5nbGUgYmV0d2VlbiB0aGUgbWFnbmV0aWMgbm9ydGggZGlyZWN0aW9uIGFuZCB0aGUKKyAgICAgKiB5LWF4aXMsIGFyb3VuZCB0aGUgei1heGlzICgwIHRvIDM1OSkuIDA9Tm9ydGgsIDkwPUVhc3QsIDE4MD1Tb3V0aCwKKyAgICAgKiAyNzA9V2VzdAorICAgICAqIDwvcD4KKyAgICAgKiAKKyAgICAgKiA8cD4KKyAgICAgKiB2YWx1ZXNbMV06IFBpdGNoLCByb3RhdGlvbiBhcm91bmQgeC1heGlzICgtMTgwIHRvIDE4MCksIHdpdGggcG9zaXRpdmUKKyAgICAgKiB2YWx1ZXMgd2hlbiB0aGUgei1heGlzIG1vdmVzIDxiPnRvd2FyZDwvYj4gdGhlIHktYXhpcy4KKyAgICAgKiA8L3A+CisgICAgICogCisgICAgICogPHA+CisgICAgICogdmFsdWVzWzJdOiBSb2xsLCByb3RhdGlvbiBhcm91bmQgeS1heGlzICgtOTAgdG8gOTApLCB3aXRoIHBvc2l0aXZlIHZhbHVlcworICAgICAqIHdoZW4gdGhlIHgtYXhpcyBtb3ZlcyA8Yj50b3dhcmQ8L2I+IHRoZSB6LWF4aXMuCisgICAgICogPC9wPgorICAgICAqIDwvdWw+CisgICAgICogCisgICAgICogPHA+CisgICAgICogPGI+Tm90ZTo8L2I+IFRoaXMgZGVmaW5pdGlvbiBpcyBkaWZmZXJlbnQgZnJvbSA8Yj55YXcsIHBpdGNoIGFuZCByb2xsPC9iPgorICAgICAqIHVzZWQgaW4gYXZpYXRpb24gd2hlcmUgdGhlIFggYXhpcyBpcyBhbG9uZyB0aGUgbG9uZyBzaWRlIG9mIHRoZSBwbGFuZQorICAgICAqICh0YWlsIHRvIG5vc2UpLgorICAgICAqIDwvcD4KKyAgICAgKiAKKyAgICAgKiA8cD4KKyAgICAgKiA8Yj5Ob3RlOjwvYj4gVGhpcyBzZW5zb3IgdHlwZSBleGlzdHMgZm9yIGxlZ2FjeSByZWFzb25zLCBwbGVhc2UgdXNlCisgICAgICoge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yTWFuYWdlciNnZXRSb3RhdGlvbk1hdHJpeAorICAgICAqIGdldFJvdGF0aW9uTWF0cml4KCl9IGluIGNvbmp1bmN0aW9uIHdpdGgKKyAgICAgKiB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JNYW5hZ2VyI3JlbWFwQ29vcmRpbmF0ZVN5c3RlbQorICAgICAqIHJlbWFwQ29vcmRpbmF0ZVN5c3RlbSgpfSBhbmQKKyAgICAgKiB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JNYW5hZ2VyI2dldE9yaWVudGF0aW9uIGdldE9yaWVudGF0aW9uKCl9IHRvCisgICAgICogY29tcHV0ZSB0aGVzZSB2YWx1ZXMgaW5zdGVhZC4KKyAgICAgKiA8L3A+CisgICAgICogCisgICAgICogPHA+CisgICAgICogPGI+SW1wb3J0YW50IG5vdGU6PC9iPiBGb3IgaGlzdG9yaWNhbCByZWFzb25zIHRoZSByb2xsIGFuZ2xlIGlzIHBvc2l0aXZlCisgICAgICogaW4gdGhlIGNsb2Nrd2lzZSBkaXJlY3Rpb24gKG1hdGhlbWF0aWNhbGx5IHNwZWFraW5nLCBpdCBzaG91bGQgYmUKKyAgICAgKiBwb3NpdGl2ZSBpbiB0aGUgY291bnRlci1jbG9ja3dpc2UgZGlyZWN0aW9uKS4KKyAgICAgKiA8L3A+CisgICAgICogCisgICAgICogQHNlZSBTZW5zb3JFdmVudAorICAgICAqIEBzZWUgR2VvbWFnbmV0aWNGaWVsZAogICAgICAqLwogICAgIHB1YmxpYyBmaW5hbCBmbG9hdFtdIHZhbHVlczsKIAogICAgIC8qKgotICAgICAqIFRoZSBzZW5zb3IgdGhhdCBnZW5lcmF0ZWQgdGhpcyBldmVudC4KLSAgICAgKiBTZWUge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yTWFuYWdlciBTZW5zb3JNYW5hZ2VyfQotICAgICAqIGZvciBkZXRhaWxzLgorICAgICAqIFRoZSBzZW5zb3IgdGhhdCBnZW5lcmF0ZWQgdGhpcyBldmVudC4gU2VlCisgICAgICoge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yTWFuYWdlciBTZW5zb3JNYW5hZ2VyfSBmb3IgZGV0YWlscy4KICAgICAgKi8KLSAgICBwdWJsaWMgU2Vuc29yIHNlbnNvcjsKLSAgICAKKyAgIHB1YmxpYyBTZW5zb3Igc2Vuc29yOworCiAgICAgLyoqCi0gICAgICogVGhlIGFjY3VyYWN5IG9mIHRoaXMgZXZlbnQuCi0gICAgICogU2VlIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvck1hbmFnZXIgU2Vuc29yTWFuYWdlcn0KLSAgICAgKiBmb3IgZGV0YWlscy4KKyAgICAgKiBUaGUgYWNjdXJhY3kgb2YgdGhpcyBldmVudC4gU2VlIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvck1hbmFnZXIKKyAgICAgKiBTZW5zb3JNYW5hZ2VyfSBmb3IgZGV0YWlscy4KICAgICAgKi8KICAgICBwdWJsaWMgaW50IGFjY3VyYWN5OwotICAgIAotICAgIAorCisKICAgICAvKioKICAgICAgKiBUaGUgdGltZSBpbiBuYW5vc2Vjb25kIGF0IHdoaWNoIHRoZSBldmVudCBoYXBwZW5lZAogICAgICAqLwogICAgIHB1YmxpYyBsb25nIHRpbWVzdGFtcDsKIAotICAgIAorCiAgICAgU2Vuc29yRXZlbnQoaW50IHNpemUpIHsKICAgICAgICAgdmFsdWVzID0gbmV3IGZsb2F0W3NpemVdOwogICAgIH0KZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL2hhcmR3YXJlL1NlbnNvck1hbmFnZXIuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL2hhcmR3YXJlL1NlbnNvck1hbmFnZXIuamF2YQppbmRleCA5ODE3MmU2Li40OTJmOGNjIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9oYXJkd2FyZS9TZW5zb3JNYW5hZ2VyLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvaGFyZHdhcmUvU2Vuc29yTWFuYWdlci5qYXZhCkBAIC00MSw5ICs0MSwzNSBAQAogaW1wb3J0IGphdmEudXRpbC5MaXN0OwogCiAvKioKLSAqIENsYXNzIHRoYXQgbGV0cyB5b3UgYWNjZXNzIHRoZSBkZXZpY2UncyBzZW5zb3JzLiBHZXQgYW4gaW5zdGFuY2Ugb2YgdGhpcwotICogY2xhc3MgYnkgY2FsbGluZyB7QGxpbmsgYW5kcm9pZC5jb250ZW50LkNvbnRleHQjZ2V0U3lzdGVtU2VydmljZShqYXZhLmxhbmcuU3RyaW5nKQotICogQ29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKCl9IHdpdGggYW4gYXJndW1lbnQgb2Yge0BsaW5rIGFuZHJvaWQuY29udGVudC5Db250ZXh0I1NFTlNPUl9TRVJWSUNFfS4KKyAqIFNlbnNvck1hbmFnZXIgbGV0cyB5b3UgYWNjZXNzIHRoZSBkZXZpY2UncyB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3IKKyAqIHNlbnNvcnN9LiBHZXQgYW4gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcyBieSBjYWxsaW5nCisgKiB7QGxpbmsgYW5kcm9pZC5jb250ZW50LkNvbnRleHQjZ2V0U3lzdGVtU2VydmljZShqYXZhLmxhbmcuU3RyaW5nKQorICogQ29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKCl9IHdpdGggdGhlIGFyZ3VtZW50CisgKiB7QGxpbmsgYW5kcm9pZC5jb250ZW50LkNvbnRleHQjU0VOU09SX1NFUlZJQ0V9LgorICoKKyAqIDxwcmUgY2xhc3M9InByZXR0eXByaW50Ij4KKyAqIHB1YmxpYyBjbGFzcyBTZW5zb3JBY3Rpdml0eSBleHRlbmRzIEFjdGl2aXR5LCBpbXBsZW1lbnRzIFNlbnNvckV2ZW50TGlzdGVuZXIgeworICogICAgIHByaXZhdGUgZmluYWwgU2Vuc29yTWFuYWdlciBtU2Vuc29yTWFuYWdlcjsKKyAqICAgICBwcml2YXRlIGZpbmFsIFNlbnNvciBtQWNjZWxlcm9tZXRlcjsKKyAqCisgKiAgICAgcHVibGljIFNlbnNvckFjdGl2aXR5KCkgeworICogICAgICAgICBtU2Vuc29yTWFuYWdlciA9IChTZW5zb3JNYW5hZ2VyKWdldFN5c3RlbVNlcnZpY2UoU0VOU09SX1NFUlZJQ0UpOworICogICAgICAgICBtQWNjZWxlcm9tZXRlciA9IG1TZW5zb3JNYW5hZ2VyLmdldERlZmF1bHRTZW5zb3IoU2Vuc29yLlRZUEVfQUNDRUxFUk9NRVRFUik7CisgKiAgICAgICAgIG1TZW5zb3JNYW5hZ2VyLnJlZ2lzdGVyTGlzdGVuZXIodGhpcywgbUFjY2VsZXJvbWV0ZXIsIFNlbnNvck1hbmFnZXIuU0VOU09SX0RFTEFZX05PUk1BTCk7CisgKiAgICAgfQorICoKKyAqICAgICBwdWJsaWMgdm9pZCBvbkFjY3VyYWN5Q2hhbmdlZChTZW5zb3Igc2Vuc29yLCBpbnQgYWNjdXJhY3kpIHsKKyAqICAgICB9CisgKgorICogICAgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIG9uU2Vuc29yQ2hhbmdlZChTZW5zb3JFdmVudCBldmVudCkgeworICogICAgIH0KKyAqIH0KKyAqIDwvcHJlPgorICoKKyAqIEBzZWUgU2Vuc29yRXZlbnRMaXN0ZW5lcgorICogQHNlZSBTZW5zb3JFdmVudAorICogQHNlZSBTZW5zb3IKKyAqCiAgKi8KIHB1YmxpYyBjbGFzcyBTZW5zb3JNYW5hZ2VyCiB7CkBAIC01MywxNzIgKzc5LDIyMCBAQAogICAgIC8qIE5PVEU6IHNlbnNvciBJRHMgbXVzdCBiZSBhIHBvd2VyIG9mIDIgKi8KIAogICAgIC8qKgotICAgICAqIEEgY29uc3RhbnQgZGVzY3JpYmluZyBhbiBvcmllbnRhdGlvbiBzZW5zb3IuCi0gICAgICogU2VlIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvckxpc3RlbmVyIFNlbnNvckxpc3RlbmVyfSBmb3IgbW9yZSBkZXRhaWxzLgorICAgICAqIEEgY29uc3RhbnQgZGVzY3JpYmluZyBhbiBvcmllbnRhdGlvbiBzZW5zb3IuIFNlZQorICAgICAqIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvckxpc3RlbmVyIFNlbnNvckxpc3RlbmVyfSBmb3IgbW9yZSBkZXRhaWxzLgorICAgICAqCiAgICAgICogQGRlcHJlY2F0ZWQgdXNlIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvciBTZW5zb3J9IGluc3RlYWQuCiAgICAgICovCiAgICAgQERlcHJlY2F0ZWQKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTRU5TT1JfT1JJRU5UQVRJT04gPSAxIDw8IDA7CiAKICAgICAvKioKLSAgICAgKiBBIGNvbnN0YW50IGRlc2NyaWJpbmcgYW4gYWNjZWxlcm9tZXRlci4KLSAgICAgKiBTZWUge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yTGlzdGVuZXIgU2Vuc29yTGlzdGVuZXJ9IGZvciBtb3JlIGRldGFpbHMuCisgICAgICogQSBjb25zdGFudCBkZXNjcmliaW5nIGFuIGFjY2VsZXJvbWV0ZXIuIFNlZQorICAgICAqIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvckxpc3RlbmVyIFNlbnNvckxpc3RlbmVyfSBmb3IgbW9yZSBkZXRhaWxzLgorICAgICAqCiAgICAgICogQGRlcHJlY2F0ZWQgdXNlIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvciBTZW5zb3J9IGluc3RlYWQuCiAgICAgICovCiAgICAgQERlcHJlY2F0ZWQKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTRU5TT1JfQUNDRUxFUk9NRVRFUiA9IDEgPDwgMTsKIAogICAgIC8qKgotICAgICAqIEEgY29uc3RhbnQgZGVzY3JpYmluZyBhIHRlbXBlcmF0dXJlIHNlbnNvcgotICAgICAqIFNlZSB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JMaXN0ZW5lciBTZW5zb3JMaXN0ZW5lcn0gZm9yIG1vcmUgZGV0YWlscy4KKyAgICAgKiBBIGNvbnN0YW50IGRlc2NyaWJpbmcgYSB0ZW1wZXJhdHVyZSBzZW5zb3IgU2VlCisgICAgICoge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yTGlzdGVuZXIgU2Vuc29yTGlzdGVuZXJ9IGZvciBtb3JlIGRldGFpbHMuCisgICAgICoKICAgICAgKiBAZGVwcmVjYXRlZCB1c2Uge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yIFNlbnNvcn0gaW5zdGVhZC4KICAgICAgKi8KICAgICBARGVwcmVjYXRlZAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNFTlNPUl9URU1QRVJBVFVSRSA9IDEgPDwgMjsKIAogICAgIC8qKgotICAgICAqIEEgY29uc3RhbnQgZGVzY3JpYmluZyBhIG1hZ25ldGljIHNlbnNvcgotICAgICAqIFNlZSB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JMaXN0ZW5lciBTZW5zb3JMaXN0ZW5lcn0gZm9yIG1vcmUgZGV0YWlscy4KKyAgICAgKiBBIGNvbnN0YW50IGRlc2NyaWJpbmcgYSBtYWduZXRpYyBzZW5zb3IgU2VlCisgICAgICoge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yTGlzdGVuZXIgU2Vuc29yTGlzdGVuZXJ9IGZvciBtb3JlIGRldGFpbHMuCisgICAgICoKICAgICAgKiBAZGVwcmVjYXRlZCB1c2Uge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yIFNlbnNvcn0gaW5zdGVhZC4KICAgICAgKi8KICAgICBARGVwcmVjYXRlZAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNFTlNPUl9NQUdORVRJQ19GSUVMRCA9IDEgPDwgMzsKIAogICAgIC8qKgotICAgICAqIEEgY29uc3RhbnQgZGVzY3JpYmluZyBhbiBhbWJpZW50IGxpZ2h0IHNlbnNvcgotICAgICAqIFNlZSB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JMaXN0ZW5lciBTZW5zb3JMaXN0ZW5lcn0gZm9yIG1vcmUgZGV0YWlscy4KKyAgICAgKiBBIGNvbnN0YW50IGRlc2NyaWJpbmcgYW4gYW1iaWVudCBsaWdodCBzZW5zb3IgU2VlCisgICAgICoge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yTGlzdGVuZXIgU2Vuc29yTGlzdGVuZXJ9IGZvciBtb3JlIGRldGFpbHMuCisgICAgICoKICAgICAgKiBAZGVwcmVjYXRlZCB1c2Uge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yIFNlbnNvcn0gaW5zdGVhZC4KICAgICAgKi8KICAgICBARGVwcmVjYXRlZAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNFTlNPUl9MSUdIVCA9IDEgPDwgNDsKIAogICAgIC8qKgotICAgICAqIEEgY29uc3RhbnQgZGVzY3JpYmluZyBhIHByb3hpbWl0eSBzZW5zb3IKLSAgICAgKiBTZWUge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yTGlzdGVuZXIgU2Vuc29yTGlzdGVuZXJ9IGZvciBtb3JlIGRldGFpbHMuCisgICAgICogQSBjb25zdGFudCBkZXNjcmliaW5nIGEgcHJveGltaXR5IHNlbnNvciBTZWUKKyAgICAgKiB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JMaXN0ZW5lciBTZW5zb3JMaXN0ZW5lcn0gZm9yIG1vcmUgZGV0YWlscy4KKyAgICAgKgogICAgICAqIEBkZXByZWNhdGVkIHVzZSB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3IgU2Vuc29yfSBpbnN0ZWFkLgogICAgICAqLwogICAgIEBEZXByZWNhdGVkCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0VOU09SX1BST1hJTUlUWSA9IDEgPDwgNTsKIAogICAgIC8qKgotICAgICAqIEEgY29uc3RhbnQgZGVzY3JpYmluZyBhIFRyaWNvcmRlcgotICAgICAqIFNlZSB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JMaXN0ZW5lciBTZW5zb3JMaXN0ZW5lcn0gZm9yIG1vcmUgZGV0YWlscy4KKyAgICAgKiBBIGNvbnN0YW50IGRlc2NyaWJpbmcgYSBUcmljb3JkZXIgU2VlCisgICAgICoge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yTGlzdGVuZXIgU2Vuc29yTGlzdGVuZXJ9IGZvciBtb3JlIGRldGFpbHMuCisgICAgICoKICAgICAgKiBAZGVwcmVjYXRlZCB1c2Uge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yIFNlbnNvcn0gaW5zdGVhZC4KICAgICAgKi8KICAgICBARGVwcmVjYXRlZAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNFTlNPUl9UUklDT1JERVIgPSAxIDw8IDY7CiAKICAgICAvKioKLSAgICAgKiBBIGNvbnN0YW50IGRlc2NyaWJpbmcgYW4gb3JpZW50YXRpb24gc2Vuc29yLgotICAgICAqIFNlZSB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JMaXN0ZW5lciBTZW5zb3JMaXN0ZW5lcn0gZm9yIG1vcmUgZGV0YWlscy4KKyAgICAgKiBBIGNvbnN0YW50IGRlc2NyaWJpbmcgYW4gb3JpZW50YXRpb24gc2Vuc29yLiBTZWUKKyAgICAgKiB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JMaXN0ZW5lciBTZW5zb3JMaXN0ZW5lcn0gZm9yIG1vcmUgZGV0YWlscy4KKyAgICAgKgogICAgICAqIEBkZXByZWNhdGVkIHVzZSB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3IgU2Vuc29yfSBpbnN0ZWFkLgogICAgICAqLwogICAgIEBEZXByZWNhdGVkCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0VOU09SX09SSUVOVEFUSU9OX1JBVyA9IDEgPDwgNzsKIAotICAgIC8qKiBBIGNvbnN0YW50IHRoYXQgaW5jbHVkZXMgYWxsIHNlbnNvcnMKKyAgICAvKioKKyAgICAgKiBBIGNvbnN0YW50IHRoYXQgaW5jbHVkZXMgYWxsIHNlbnNvcnMKKyAgICAgKgogICAgICAqIEBkZXByZWNhdGVkIHVzZSB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3IgU2Vuc29yfSBpbnN0ZWFkLgogICAgICAqLwogICAgIEBEZXByZWNhdGVkCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0VOU09SX0FMTCA9IDB4N0Y7CiAKLSAgICAvKiogU21hbGxlc3Qgc2Vuc29yIElEIAorICAgIC8qKgorICAgICAqIFNtYWxsZXN0IHNlbnNvciBJRAorICAgICAqCiAgICAgICogQGRlcHJlY2F0ZWQgdXNlIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvciBTZW5zb3J9IGluc3RlYWQuCiAgICAgICovCiAgICAgQERlcHJlY2F0ZWQKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTRU5TT1JfTUlOID0gU0VOU09SX09SSUVOVEFUSU9OOwogCi0gICAgLyoqIExhcmdlc3Qgc2Vuc29yIElECisgICAgLyoqCisgICAgICogTGFyZ2VzdCBzZW5zb3IgSUQKKyAgICAgKgogICAgICAqIEBkZXByZWNhdGVkIHVzZSB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3IgU2Vuc29yfSBpbnN0ZWFkLgogICAgICAqLwogICAgIEBEZXByZWNhdGVkCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0VOU09SX01BWCA9ICgoU0VOU09SX0FMTCArIDEpPj4xKTsKIAogCi0gICAgLyoqIEluZGV4IG9mIHRoZSBYIHZhbHVlIGluIHRoZSBhcnJheSByZXR1cm5lZCBieQorICAgIC8qKgorICAgICAqIEluZGV4IG9mIHRoZSBYIHZhbHVlIGluIHRoZSBhcnJheSByZXR1cm5lZCBieQogICAgICAqIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvckxpc3RlbmVyI29uU2Vuc29yQ2hhbmdlZH0KKyAgICAgKgogICAgICAqIEBkZXByZWNhdGVkIHVzZSB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3IgU2Vuc29yfSBpbnN0ZWFkLgogICAgICAqLwogICAgIEBEZXByZWNhdGVkCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgREFUQV9YID0gMDsKLSAgICAvKiogSW5kZXggb2YgdGhlIFkgdmFsdWUgaW4gdGhlIGFycmF5IHJldHVybmVkIGJ5CisKKyAgICAvKioKKyAgICAgKiBJbmRleCBvZiB0aGUgWSB2YWx1ZSBpbiB0aGUgYXJyYXkgcmV0dXJuZWQgYnkKICAgICAgKiB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JMaXN0ZW5lciNvblNlbnNvckNoYW5nZWR9CisgICAgICoKICAgICAgKiBAZGVwcmVjYXRlZCB1c2Uge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yIFNlbnNvcn0gaW5zdGVhZC4KICAgICAgKi8KICAgICBARGVwcmVjYXRlZAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IERBVEFfWSA9IDE7Ci0gICAgLyoqIEluZGV4IG9mIHRoZSBaIHZhbHVlIGluIHRoZSBhcnJheSByZXR1cm5lZCBieQorCisgICAgLyoqCisgICAgICogSW5kZXggb2YgdGhlIFogdmFsdWUgaW4gdGhlIGFycmF5IHJldHVybmVkIGJ5CiAgICAgICoge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yTGlzdGVuZXIjb25TZW5zb3JDaGFuZ2VkfQorICAgICAqCiAgICAgICogQGRlcHJlY2F0ZWQgdXNlIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvciBTZW5zb3J9IGluc3RlYWQuCiAgICAgICovCiAgICAgQERlcHJlY2F0ZWQKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBEQVRBX1ogPSAyOwogCi0gICAgLyoqIE9mZnNldCB0byB0aGUgdW50cmFuc2Zvcm1lZCB2YWx1ZXMgaW4gdGhlIGFycmF5IHJldHVybmVkIGJ5CisgICAgLyoqCisgICAgICogT2Zmc2V0IHRvIHRoZSB1bnRyYW5zZm9ybWVkIHZhbHVlcyBpbiB0aGUgYXJyYXkgcmV0dXJuZWQgYnkKICAgICAgKiB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JMaXN0ZW5lciNvblNlbnNvckNoYW5nZWR9CisgICAgICoKICAgICAgKiBAZGVwcmVjYXRlZCB1c2Uge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yIFNlbnNvcn0gaW5zdGVhZC4KICAgICAgKi8KICAgICBARGVwcmVjYXRlZAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFJBV19EQVRBX0lOREVYID0gMzsKIAotICAgIC8qKiBJbmRleCBvZiB0aGUgdW50cmFuc2Zvcm1lZCBYIHZhbHVlIGluIHRoZSBhcnJheSByZXR1cm5lZCBieQorICAgIC8qKgorICAgICAqIEluZGV4IG9mIHRoZSB1bnRyYW5zZm9ybWVkIFggdmFsdWUgaW4gdGhlIGFycmF5IHJldHVybmVkIGJ5CiAgICAgICoge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yTGlzdGVuZXIjb25TZW5zb3JDaGFuZ2VkfQorICAgICAqCiAgICAgICogQGRlcHJlY2F0ZWQgdXNlIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvciBTZW5zb3J9IGluc3RlYWQuCiAgICAgICovCiAgICAgQERlcHJlY2F0ZWQKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBSQVdfREFUQV9YID0gMzsKLSAgICAvKiogSW5kZXggb2YgdGhlIHVudHJhbnNmb3JtZWQgWSB2YWx1ZSBpbiB0aGUgYXJyYXkgcmV0dXJuZWQgYnkKKworICAgIC8qKgorICAgICAqIEluZGV4IG9mIHRoZSB1bnRyYW5zZm9ybWVkIFkgdmFsdWUgaW4gdGhlIGFycmF5IHJldHVybmVkIGJ5CiAgICAgICoge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yTGlzdGVuZXIjb25TZW5zb3JDaGFuZ2VkfQorICAgICAqCiAgICAgICogQGRlcHJlY2F0ZWQgdXNlIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvciBTZW5zb3J9IGluc3RlYWQuCiAgICAgICovCiAgICAgQERlcHJlY2F0ZWQKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBSQVdfREFUQV9ZID0gNDsKLSAgICAvKiogSW5kZXggb2YgdGhlIHVudHJhbnNmb3JtZWQgWiB2YWx1ZSBpbiB0aGUgYXJyYXkgcmV0dXJuZWQgYnkKKworICAgIC8qKgorICAgICAqIEluZGV4IG9mIHRoZSB1bnRyYW5zZm9ybWVkIFogdmFsdWUgaW4gdGhlIGFycmF5IHJldHVybmVkIGJ5CiAgICAgICoge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yTGlzdGVuZXIjb25TZW5zb3JDaGFuZ2VkfQorICAgICAqCiAgICAgICogQGRlcHJlY2F0ZWQgdXNlIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvciBTZW5zb3J9IGluc3RlYWQuCiAgICAgICovCiAgICAgQERlcHJlY2F0ZWQKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBSQVdfREFUQV9aID0gNTsKIAotCiAgICAgLyoqIFN0YW5kYXJkIGdyYXZpdHkgKGcpIG9uIEVhcnRoLiBUaGlzIHZhbHVlIGlzIGVxdWl2YWxlbnQgdG8gMUcgKi8KICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGZsb2F0IFNUQU5EQVJEX0dSQVZJVFkgPSA5LjgwNjY1ZjsKIAotICAgIC8qKiB2YWx1ZXMgcmV0dXJuZWQgYnkgdGhlIGFjY2VsZXJvbWV0ZXIgaW4gdmFyaW91cyBsb2NhdGlvbnMgaW4gdGhlIHVuaXZlcnNlLgotICAgICAqIGFsbCB2YWx1ZXMgYXJlIGluIFNJIHVuaXRzIChtL3NeMikgKi8KKyAgICAvKiogU3VuJ3MgZ3Jhdml0eSBpbiBTSSB1bml0cyAobS9zXjIpICovCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBmbG9hdCBHUkFWSVRZX1NVTiAgICAgICAgICAgICA9IDI3NS4wZjsKKyAgICAvKiogTWVyY3VyeSdzIGdyYXZpdHkgaW4gU0kgdW5pdHMgKG0vc14yKSAqLwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgZmxvYXQgR1JBVklUWV9NRVJDVVJZICAgICAgICAgPSAzLjcwZjsKKyAgICAvKiogVmVudXMnIGdyYXZpdHkgaW4gU0kgdW5pdHMgKG0vc14yKSAqLwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgZmxvYXQgR1JBVklUWV9WRU5VUyAgICAgICAgICAgPSA4Ljg3ZjsKKyAgICAvKiogRWFydGgncyBncmF2aXR5IGluIFNJIHVuaXRzIChtL3NeMikgKi8KICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGZsb2F0IEdSQVZJVFlfRUFSVEggICAgICAgICAgID0gOS44MDY2NWY7CisgICAgLyoqIFRoZSBNb29uJ3MgZ3Jhdml0eSBpbiBTSSB1bml0cyAobS9zXjIpICovCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBmbG9hdCBHUkFWSVRZX01PT04gICAgICAgICAgICA9IDEuNmY7CisgICAgLyoqIE1hcnMnIGdyYXZpdHkgaW4gU0kgdW5pdHMgKG0vc14yKSAqLwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgZmxvYXQgR1JBVklUWV9NQVJTICAgICAgICAgICAgPSAzLjcxZjsKKyAgICAvKiogSnVwaXRlcidzIGdyYXZpdHkgaW4gU0kgdW5pdHMgKG0vc14yKSAqLwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgZmxvYXQgR1JBVklUWV9KVVBJVEVSICAgICAgICAgPSAyMy4xMmY7CisgICAgLyoqIFNhdHVybidzIGdyYXZpdHkgaW4gU0kgdW5pdHMgKG0vc14yKSAqLwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgZmxvYXQgR1JBVklUWV9TQVRVUk4gICAgICAgICAgPSA4Ljk2ZjsKKyAgICAvKiogVXJhbnVzJyBncmF2aXR5IGluIFNJIHVuaXRzIChtL3NeMikgKi8KICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGZsb2F0IEdSQVZJVFlfVVJBTlVTICAgICAgICAgID0gOC42OWY7CisgICAgLyoqIE5lcHR1bmUncyBncmF2aXR5IGluIFNJIHVuaXRzIChtL3NeMikgKi8KICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGZsb2F0IEdSQVZJVFlfTkVQVFVORSAgICAgICAgID0gMTEuMGY7CisgICAgLyoqIFBsdXRvJ3MgZ3Jhdml0eSBpbiBTSSB1bml0cyAobS9zXjIpICovCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBmbG9hdCBHUkFWSVRZX1BMVVRPICAgICAgICAgICA9IDAuNmY7CisgICAgLyoqIEdyYXZpdHkgKGVzdGltYXRlKSBvbiB0aGUgZmlyc3QgRGVhdGggU3RhciBpbiBFbXBpcmUgdW5pdHMgKG0vc14yKSAqLwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgZmxvYXQgR1JBVklUWV9ERUFUSF9TVEFSX0kgICAgPSAwLjAwMDAwMDM1MzAzNjE0NWY7CisgICAgLyoqIEdyYXZpdHkgb24gdGhlIGlzbGFuZCAqLwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgZmxvYXQgR1JBVklUWV9USEVfSVNMQU5EICAgICAgPSA0LjgxNTE2MjM0MmY7CiAKIAogICAgIC8qKiBNYXhpbXVtIG1hZ25ldGljIGZpZWxkIG9uIEVhcnRoJ3Mgc3VyZmFjZSAqLwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgZmxvYXQgTUFHTkVUSUNfRklFTERfRUFSVEhfTUFYID0gNjAuMGY7Ci0KICAgICAvKiogTWluaW11bSBtYWduZXRpYyBmaWVsZCBvbiBFYXJ0aCdzIHN1cmZhY2UgKi8KICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGZsb2F0IE1BR05FVElDX0ZJRUxEX0VBUlRIX01JTiA9IDMwLjBmOwogCiAKLSAgICAvKiogVmFyaW91cyBsdW1pbmFuY2UgdmFsdWVzIGR1cmluZyB0aGUgZGF5IChsdXgpICovCisgICAgLyoqIE1heGltdW0gbHVtaW5hbmNlIG9mIHN1bmxpZ2h0IGluIGx1eCAqLwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgZmxvYXQgTElHSFRfU1VOTElHSFRfTUFYID0gMTIwMDAwLjBmOworICAgIC8qKiBsdW1pbmFuY2Ugb2Ygc3VubGlnaHQgaW4gbHV4ICovCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBmbG9hdCBMSUdIVF9TVU5MSUdIVCAgICAgPSAxMTAwMDAuMGY7CisgICAgLyoqIGx1bWluYW5jZSBpbiBzaGFkZSBpbiBsdXggKi8KICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGZsb2F0IExJR0hUX1NIQURFICAgICAgICA9IDIwMDAwLjBmOworICAgIC8qKiBsdW1pbmFuY2UgdW5kZXIgYW4gb3ZlcmNhc3Qgc2t5IGluIGx1eCAqLwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgZmxvYXQgTElHSFRfT1ZFUkNBU1QgICAgID0gMTAwMDAuMGY7CisgICAgLyoqIGx1bWluYW5jZSBhdCBzdW5yaXNlIGluIGx1eCAqLwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgZmxvYXQgTElHSFRfU1VOUklTRSAgICAgID0gNDAwLjBmOworICAgIC8qKiBsdW1pbmFuY2UgdW5kZXIgYSBjbG91ZHkgc2t5IGluIGx1eCAqLwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgZmxvYXQgTElHSFRfQ0xPVURZICAgICAgID0gMTAwLjBmOwotICAgIC8qKiBWYXJpb3VzIGx1bWluYW5jZSB2YWx1ZXMgZHVyaW5nIHRoZSBuaWdodCAobHV4KSAqLworICAgIC8qKiBsdW1pbmFuY2UgYXQgbmlnaHQgd2l0aCBmdWxsIG1vb24gaW4gbHV4ICovCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBmbG9hdCBMSUdIVF9GVUxMTU9PTiAgICAgPSAwLjI1ZjsKKyAgICAvKiogbHVtaW5hbmNlIGF0IG5pZ2h0IHdpdGggbm8gbW9vbiBpbiBsdXgqLwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgZmxvYXQgTElHSFRfTk9fTU9PTiAgICAgID0gMC4wMDFmOwogCisKICAgICAvKiogZ2V0IHNlbnNvciBkYXRhIGFzIGZhc3QgYXMgcG9zc2libGUgKi8KICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTRU5TT1JfREVMQVlfRkFTVEVTVCA9IDA7CiAgICAgLyoqIHJhdGUgc3VpdGFibGUgZm9yIGdhbWVzICovCkBAIC0yMjksMTYgKzMwMywyMiBAQAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNFTlNPUl9ERUxBWV9OT1JNQUwgPSAzOwogCiAKLSAgICAvKiogVGhlIHZhbHVlcyByZXR1cm5lZCBieSB0aGlzIHNlbnNvciBjYW5ub3QgYmUgdHJ1c3RlZCwgY2FsaWJyYXRpb24KLSAgICAgKiBpcyBuZWVkZWQgb3IgdGhlIGVudmlyb25tZW50IGRvZXNuJ3QgYWxsb3cgcmVhZGluZ3MgKi8KKyAgICAvKioKKyAgICAgKiBUaGUgdmFsdWVzIHJldHVybmVkIGJ5IHRoaXMgc2Vuc29yIGNhbm5vdCBiZSB0cnVzdGVkLCBjYWxpYnJhdGlvbiBpcworICAgICAqIG5lZWRlZCBvciB0aGUgZW52aXJvbm1lbnQgZG9lc24ndCBhbGxvdyByZWFkaW5ncworICAgICAqLwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNFTlNPUl9TVEFUVVNfVU5SRUxJQUJMRSA9IDA7CiAKLSAgICAvKiogVGhpcyBzZW5zb3IgaXMgcmVwb3J0aW5nIGRhdGEgd2l0aCBsb3cgYWNjdXJhY3ksIGNhbGlicmF0aW9uIHdpdGggdGhlCi0gICAgICogZW52aXJvbm1lbnQgaXMgbmVlZGVkICovCisgICAgLyoqCisgICAgICogVGhpcyBzZW5zb3IgaXMgcmVwb3J0aW5nIGRhdGEgd2l0aCBsb3cgYWNjdXJhY3ksIGNhbGlicmF0aW9uIHdpdGggdGhlCisgICAgICogZW52aXJvbm1lbnQgaXMgbmVlZGVkCisgICAgICovCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0VOU09SX1NUQVRVU19BQ0NVUkFDWV9MT1cgPSAxOwogCi0gICAgLyoqIFRoaXMgc2Vuc29yIGlzIHJlcG9ydGluZyBkYXRhIHdpdGggYW4gYXZlcmFnZSBsZXZlbCBvZiBhY2N1cmFjeSwKLSAgICAgKiBjYWxpYnJhdGlvbiB3aXRoIHRoZSBlbnZpcm9ubWVudCBtYXkgaW1wcm92ZSB0aGUgcmVhZGluZ3MgKi8KKyAgICAvKioKKyAgICAgKiBUaGlzIHNlbnNvciBpcyByZXBvcnRpbmcgZGF0YSB3aXRoIGFuIGF2ZXJhZ2UgbGV2ZWwgb2YgYWNjdXJhY3ksCisgICAgICogY2FsaWJyYXRpb24gd2l0aCB0aGUgZW52aXJvbm1lbnQgbWF5IGltcHJvdmUgdGhlIHJlYWRpbmdzCisgICAgICovCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0VOU09SX1NUQVRVU19BQ0NVUkFDWV9NRURJVU0gPSAyOwogCiAgICAgLyoqIFRoaXMgc2Vuc29yIGlzIHJlcG9ydGluZyBkYXRhIHdpdGggbWF4aW11bSBhY2N1cmFjeSAqLwpAQCAtNTg2LDkgKzY2NiwxMCBAQAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKLSAgICAvKiogQHJldHVybiBhdmFpbGFibGUgc2Vuc29ycy4KKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIGF2YWlsYWJsZSBzZW5zb3JzLgogICAgICAqIEBkZXByZWNhdGVkIFRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQsIHVzZQotICAgICAqIHtAbGluayBTZW5zb3JNYW5hZ2VyI2dldFNlbnNvckxpc3QoaW50KX0gaW5zdGVhZAorICAgICAqICAgICAgICAgICAgIHtAbGluayBTZW5zb3JNYW5hZ2VyI2dldFNlbnNvckxpc3QoaW50KX0gaW5zdGVhZAogICAgICAqLwogICAgIEBEZXByZWNhdGVkCiAgICAgcHVibGljIGludCBnZXRTZW5zb3JzKCkgewpAQCAtNjEyLDEzICs2OTMsMTggQEAKICAgICB9CiAKICAgICAvKioKLSAgICAgKiBVc2UgdGhpcyBtZXRob2QgdG8gZ2V0IHRoZSBsaXN0IG9mIGF2YWlsYWJsZSBzZW5zb3JzIG9mIGEgY2VydGFpbgotICAgICAqIHR5cGUuIE1ha2UgbXVsdGlwbGUgY2FsbHMgdG8gZ2V0IHNlbnNvcnMgb2YgZGlmZmVyZW50IHR5cGVzIG9yIHVzZQotICAgICAqIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvciNUWVBFX0FMTCBTZW5zb3IuVFlQRV9BTEx9IHRvIGdldCBhbGwKLSAgICAgKiB0aGUgc2Vuc29ycy4KKyAgICAgKiBVc2UgdGhpcyBtZXRob2QgdG8gZ2V0IHRoZSBsaXN0IG9mIGF2YWlsYWJsZSBzZW5zb3JzIG9mIGEgY2VydGFpbiB0eXBlLgorICAgICAqIE1ha2UgbXVsdGlwbGUgY2FsbHMgdG8gZ2V0IHNlbnNvcnMgb2YgZGlmZmVyZW50IHR5cGVzIG9yIHVzZQorICAgICAqIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvciNUWVBFX0FMTCBTZW5zb3IuVFlQRV9BTEx9IHRvIGdldCBhbGwgdGhlCisgICAgICogc2Vuc29ycy4KICAgICAgKgotICAgICAqIEBwYXJhbSB0eXBlIG9mIHNlbnNvcnMgcmVxdWVzdGVkCisgICAgICogQHBhcmFtIHR5cGUKKyAgICAgKiAgICAgICAgb2Ygc2Vuc29ycyByZXF1ZXN0ZWQKKyAgICAgKgogICAgICAqIEByZXR1cm4gYSBsaXN0IG9mIHNlbnNvcnMgbWF0Y2hpbmcgdGhlIGFza2VkIHR5cGUuCisgICAgICoKKyAgICAgKiBAc2VlICNnZXREZWZhdWx0U2Vuc29yKGludCkKKyAgICAgKiBAc2VlIFNlbnNvcgogICAgICAqLwogICAgIHB1YmxpYyBMaXN0PFNlbnNvcj4gZ2V0U2Vuc29yTGlzdChpbnQgdHlwZSkgewogICAgICAgICAvLyBjYWNoZSB0aGUgcmV0dXJuZWQgbGlzdHMgdGhlIGZpcnN0IHRpbWUKQEAgLTY0NCwxNCArNzMwLDE4IEBACiAgICAgfQogCiAgICAgLyoqCi0gICAgICogVXNlIHRoaXMgbWV0aG9kIHRvIGdldCB0aGUgZGVmYXVsdCBzZW5zb3IgZm9yIGEgZ2l2ZW4gdHlwZS4gTm90ZSB0aGF0Ci0gICAgICogdGhlIHJldHVybmVkIHNlbnNvciBjb3VsZCBiZSBhIGNvbXBvc2l0ZSBzZW5zb3IsIGFuZCBpdHMgZGF0YSBjb3VsZCBiZQorICAgICAqIFVzZSB0aGlzIG1ldGhvZCB0byBnZXQgdGhlIGRlZmF1bHQgc2Vuc29yIGZvciBhIGdpdmVuIHR5cGUuIE5vdGUgdGhhdCB0aGUKKyAgICAgKiByZXR1cm5lZCBzZW5zb3IgY291bGQgYmUgYSBjb21wb3NpdGUgc2Vuc29yLCBhbmQgaXRzIGRhdGEgY291bGQgYmUKICAgICAgKiBhdmVyYWdlZCBvciBmaWx0ZXJlZC4gSWYgeW91IG5lZWQgdG8gYWNjZXNzIHRoZSByYXcgc2Vuc29ycyB1c2UKICAgICAgKiB7QGxpbmsgU2Vuc29yTWFuYWdlciNnZXRTZW5zb3JMaXN0KGludCkgZ2V0U2Vuc29yTGlzdH0uCiAgICAgICoKKyAgICAgKiBAcGFyYW0gdHlwZQorICAgICAqICAgICAgICBvZiBzZW5zb3JzIHJlcXVlc3RlZAogICAgICAqCi0gICAgICogQHBhcmFtIHR5cGUgb2Ygc2Vuc29ycyByZXF1ZXN0ZWQKICAgICAgKiBAcmV0dXJuIHRoZSBkZWZhdWx0IHNlbnNvcnMgbWF0Y2hpbmcgdGhlIGFza2VkIHR5cGUuCisgICAgICoKKyAgICAgKiBAc2VlICNnZXRTZW5zb3JMaXN0KGludCkKKyAgICAgKiBAc2VlIFNlbnNvcgogICAgICAqLwogICAgIHB1YmxpYyBTZW5zb3IgZ2V0RGVmYXVsdFNlbnNvcihpbnQgdHlwZSkgewogICAgICAgICAvLyBUT0RPOiBuZWVkIHRvIGJlIHNtYXJ0ZXIsIGZvciBub3csIGp1c3QgcmV0dXJuIHRoZSAxc3Qgc2Vuc29yCkBAIC02NTksMTcgKzc0OSwyMSBAQAogICAgICAgICByZXR1cm4gbC5pc0VtcHR5KCkgPyBudWxsIDogbC5nZXQoMCk7CiAgICAgfQogCi0KICAgICAvKioKICAgICAgKiBSZWdpc3RlcnMgYSBsaXN0ZW5lciBmb3IgZ2l2ZW4gc2Vuc29ycy4KKyAgICAgKgogICAgICAqIEBkZXByZWNhdGVkIFRoaXMgbWV0aG9kIGlzIGRlcHJlY2F0ZWQsIHVzZQotICAgICAqIHtAbGluayBTZW5zb3JNYW5hZ2VyI3JlZ2lzdGVyTGlzdGVuZXIoU2Vuc29yRXZlbnRMaXN0ZW5lciwgU2Vuc29yLCBpbnQpfQotICAgICAqIGluc3RlYWQuCisgICAgICogICAgICAgICAgICAge0BsaW5rIFNlbnNvck1hbmFnZXIjcmVnaXN0ZXJMaXN0ZW5lcihTZW5zb3JFdmVudExpc3RlbmVyLCBTZW5zb3IsIGludCl9CisgICAgICogICAgICAgICAgICAgaW5zdGVhZC4KICAgICAgKgotICAgICAqIEBwYXJhbSBsaXN0ZW5lciBzZW5zb3IgbGlzdGVuZXIgb2JqZWN0Ci0gICAgICogQHBhcmFtIHNlbnNvcnMgYSBiaXQgbWFza3Mgb2YgdGhlIHNlbnNvcnMgdG8gcmVnaXN0ZXIgdG8KKyAgICAgKiBAcGFyYW0gbGlzdGVuZXIKKyAgICAgKiAgICAgICAgc2Vuc29yIGxpc3RlbmVyIG9iamVjdAogICAgICAqCi0gICAgICogQHJldHVybiB0cnVlIGlmIHRoZSBzZW5zb3IgaXMgc3VwcG9ydGVkIGFuZCBzdWNjZXNzZnVsbHkgZW5hYmxlZAorICAgICAqIEBwYXJhbSBzZW5zb3JzCisgICAgICogICAgICAgIGEgYml0IG1hc2tzIG9mIHRoZSBzZW5zb3JzIHRvIHJlZ2lzdGVyIHRvCisgICAgICoKKyAgICAgKiBAcmV0dXJuIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZSBzZW5zb3IgaXMgc3VwcG9ydGVkIGFuZCBzdWNjZXNzZnVsbHkKKyAgICAgKiAgICAgICAgIGVuYWJsZWQKICAgICAgKi8KICAgICBARGVwcmVjYXRlZAogICAgIHB1YmxpYyBib29sZWFuIHJlZ2lzdGVyTGlzdGVuZXIoU2Vuc29yTGlzdGVuZXIgbGlzdGVuZXIsIGludCBzZW5zb3JzKSB7CkBAIC02NzgsMTggKzc3MiwyNiBAQAogCiAgICAgLyoqCiAgICAgICogUmVnaXN0ZXJzIGEgU2Vuc29yTGlzdGVuZXIgZm9yIGdpdmVuIHNlbnNvcnMuCisgICAgICoKICAgICAgKiBAZGVwcmVjYXRlZCBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLCB1c2UKLSAgICAgKiB7QGxpbmsgU2Vuc29yTWFuYWdlciNyZWdpc3Rlckxpc3RlbmVyKFNlbnNvckV2ZW50TGlzdGVuZXIsIFNlbnNvciwgaW50KX0KLSAgICAgKiBpbnN0ZWFkLgorICAgICAqICAgICAgICAgICAgIHtAbGluayBTZW5zb3JNYW5hZ2VyI3JlZ2lzdGVyTGlzdGVuZXIoU2Vuc29yRXZlbnRMaXN0ZW5lciwgU2Vuc29yLCBpbnQpfQorICAgICAqICAgICAgICAgICAgIGluc3RlYWQuCiAgICAgICoKLSAgICAgKiBAcGFyYW0gbGlzdGVuZXIgc2Vuc29yIGxpc3RlbmVyIG9iamVjdAotICAgICAqIEBwYXJhbSBzZW5zb3JzIGEgYml0IG1hc2tzIG9mIHRoZSBzZW5zb3JzIHRvIHJlZ2lzdGVyIHRvCi0gICAgICogQHBhcmFtIHJhdGUgcmF0ZSBvZiBldmVudHMuIFRoaXMgaXMgb25seSBhIGhpbnQgdG8gdGhlIHN5c3RlbS4gZXZlbnRzCi0gICAgICogbWF5IGJlIHJlY2VpdmVkIGZhc3RlciBvciBzbG93ZXIgdGhhbiB0aGUgc3BlY2lmaWVkIHJhdGUuIFVzdWFsbHkgZXZlbnRzCi0gICAgICogYXJlIHJlY2VpdmVkIGZhc3Rlci4gVGhlIHZhbHVlIG11c3QgYmUgb25lIG9mIHtAbGluayAjU0VOU09SX0RFTEFZX05PUk1BTH0sCi0gICAgICoge0BsaW5rICNTRU5TT1JfREVMQVlfVUl9LCB7QGxpbmsgI1NFTlNPUl9ERUxBWV9HQU1FfSwgb3Ige0BsaW5rICNTRU5TT1JfREVMQVlfRkFTVEVTVH0uCisgICAgICogQHBhcmFtIGxpc3RlbmVyCisgICAgICogICAgICAgIHNlbnNvciBsaXN0ZW5lciBvYmplY3QKICAgICAgKgotICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgc2Vuc29yIGlzIHN1cHBvcnRlZCBhbmQgc3VjY2Vzc2Z1bGx5IGVuYWJsZWQKKyAgICAgKiBAcGFyYW0gc2Vuc29ycworICAgICAqICAgICAgICBhIGJpdCBtYXNrcyBvZiB0aGUgc2Vuc29ycyB0byByZWdpc3RlciB0bworICAgICAqCisgICAgICogQHBhcmFtIHJhdGUKKyAgICAgKiAgICAgICAgcmF0ZSBvZiBldmVudHMuIFRoaXMgaXMgb25seSBhIGhpbnQgdG8gdGhlIHN5c3RlbS4gZXZlbnRzIG1heSBiZQorICAgICAqICAgICAgICByZWNlaXZlZCBmYXN0ZXIgb3Igc2xvd2VyIHRoYW4gdGhlIHNwZWNpZmllZCByYXRlLiBVc3VhbGx5IGV2ZW50cworICAgICAqICAgICAgICBhcmUgcmVjZWl2ZWQgZmFzdGVyLiBUaGUgdmFsdWUgbXVzdCBiZSBvbmUgb2YKKyAgICAgKiAgICAgICAge0BsaW5rICNTRU5TT1JfREVMQVlfTk9STUFMfSwge0BsaW5rICNTRU5TT1JfREVMQVlfVUl9LAorICAgICAqICAgICAgICB7QGxpbmsgI1NFTlNPUl9ERUxBWV9HQU1FfSwgb3Ige0BsaW5rICNTRU5TT1JfREVMQVlfRkFTVEVTVH0uCisgICAgICoKKyAgICAgKiBAcmV0dXJuIDxjb2RlPnRydWU8L2NvZGU+IGlmIHRoZSBzZW5zb3IgaXMgc3VwcG9ydGVkIGFuZCBzdWNjZXNzZnVsbHkKKyAgICAgKiAgICAgICAgIGVuYWJsZWQKICAgICAgKi8KICAgICBARGVwcmVjYXRlZAogICAgIHB1YmxpYyBib29sZWFuIHJlZ2lzdGVyTGlzdGVuZXIoU2Vuc29yTGlzdGVuZXIgbGlzdGVuZXIsIGludCBzZW5zb3JzLCBpbnQgcmF0ZSkgewpAQCAtNzQ3LDEyICs4NDksMTYgQEAKIAogICAgIC8qKgogICAgICAqIFVucmVnaXN0ZXJzIGEgbGlzdGVuZXIgZm9yIHRoZSBzZW5zb3JzIHdpdGggd2hpY2ggaXQgaXMgcmVnaXN0ZXJlZC4KLSAgICAgKiBAZGVwcmVjYXRlZCBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLCB1c2UKLSAgICAgKiB7QGxpbmsgU2Vuc29yTWFuYWdlciN1bnJlZ2lzdGVyTGlzdGVuZXIoU2Vuc29yRXZlbnRMaXN0ZW5lciwgU2Vuc29yKX0KLSAgICAgKiBpbnN0ZWFkLgogICAgICAqCi0gICAgICogQHBhcmFtIGxpc3RlbmVyIGEgU2Vuc29yTGlzdGVuZXIgb2JqZWN0Ci0gICAgICogQHBhcmFtIHNlbnNvcnMgYSBiaXQgbWFza3Mgb2YgdGhlIHNlbnNvcnMgdG8gdW5yZWdpc3RlciBmcm9tCisgICAgICogQGRlcHJlY2F0ZWQgVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZCwgdXNlCisgICAgICogICAgICAgICAgICAge0BsaW5rIFNlbnNvck1hbmFnZXIjdW5yZWdpc3Rlckxpc3RlbmVyKFNlbnNvckV2ZW50TGlzdGVuZXIsIFNlbnNvcil9CisgICAgICogICAgICAgICAgICAgaW5zdGVhZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBsaXN0ZW5lcgorICAgICAqICAgICAgICBhIFNlbnNvckxpc3RlbmVyIG9iamVjdAorICAgICAqCisgICAgICogQHBhcmFtIHNlbnNvcnMKKyAgICAgKiAgICAgICAgYSBiaXQgbWFza3Mgb2YgdGhlIHNlbnNvcnMgdG8gdW5yZWdpc3RlciBmcm9tCiAgICAgICovCiAgICAgQERlcHJlY2F0ZWQKICAgICBwdWJsaWMgdm9pZCB1bnJlZ2lzdGVyTGlzdGVuZXIoU2Vuc29yTGlzdGVuZXIgbGlzdGVuZXIsIGludCBzZW5zb3JzKSB7CkBAIC04MTUsMTEgKzkyMSwxMyBAQAogCiAgICAgLyoqCiAgICAgICogVW5yZWdpc3RlcnMgYSBsaXN0ZW5lciBmb3IgYWxsIHNlbnNvcnMuCi0gICAgICogQGRlcHJlY2F0ZWQgVGhpcyBtZXRob2QgaXMgZGVwcmVjYXRlZCwgdXNlCi0gICAgICoge0BsaW5rIFNlbnNvck1hbmFnZXIjdW5yZWdpc3Rlckxpc3RlbmVyKFNlbnNvckV2ZW50TGlzdGVuZXIpfQotICAgICAqIGluc3RlYWQuCiAgICAgICoKLSAgICAgKiBAcGFyYW0gbGlzdGVuZXIgYSBTZW5zb3JMaXN0ZW5lciBvYmplY3QKKyAgICAgKiBAZGVwcmVjYXRlZCBUaGlzIG1ldGhvZCBpcyBkZXByZWNhdGVkLCB1c2UKKyAgICAgKiAgICAgICAgICAgICB7QGxpbmsgU2Vuc29yTWFuYWdlciN1bnJlZ2lzdGVyTGlzdGVuZXIoU2Vuc29yRXZlbnRMaXN0ZW5lcil9CisgICAgICogICAgICAgICAgICAgaW5zdGVhZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBsaXN0ZW5lcgorICAgICAqICAgICAgICBhIFNlbnNvckxpc3RlbmVyIG9iamVjdAogICAgICAqLwogICAgIEBEZXByZWNhdGVkCiAgICAgcHVibGljIHZvaWQgdW5yZWdpc3Rlckxpc3RlbmVyKFNlbnNvckxpc3RlbmVyIGxpc3RlbmVyKSB7CkBAIC04MjksOCArOTM3LDE0IEBACiAgICAgLyoqCiAgICAgICogVW5yZWdpc3RlcnMgYSBsaXN0ZW5lciBmb3IgdGhlIHNlbnNvcnMgd2l0aCB3aGljaCBpdCBpcyByZWdpc3RlcmVkLgogICAgICAqCi0gICAgICogQHBhcmFtIGxpc3RlbmVyIGEgU2Vuc29yRXZlbnRMaXN0ZW5lciBvYmplY3QKLSAgICAgKiBAcGFyYW0gc2Vuc29yIHRoZSBzZW5zb3IgdG8gdW5yZWdpc3RlciBmcm9tCisgICAgICogQHBhcmFtIGxpc3RlbmVyCisgICAgICogICAgICAgIGEgU2Vuc29yRXZlbnRMaXN0ZW5lciBvYmplY3QKKyAgICAgKgorICAgICAqIEBwYXJhbSBzZW5zb3IKKyAgICAgKiAgICAgICAgdGhlIHNlbnNvciB0byB1bnJlZ2lzdGVyIGZyb20KKyAgICAgKgorICAgICAqIEBzZWUgI3VucmVnaXN0ZXJMaXN0ZW5lcihTZW5zb3JFdmVudExpc3RlbmVyKQorICAgICAqIEBzZWUgI3JlZ2lzdGVyTGlzdGVuZXIoU2Vuc29yRXZlbnRMaXN0ZW5lciwgU2Vuc29yLCBpbnQpCiAgICAgICoKICAgICAgKi8KICAgICBwdWJsaWMgdm9pZCB1bnJlZ2lzdGVyTGlzdGVuZXIoU2Vuc29yRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwgU2Vuc29yIHNlbnNvcikgewpAQCAtODQwLDI3ICs5NTQsNDIgQEAKICAgICAvKioKICAgICAgKiBVbnJlZ2lzdGVycyBhIGxpc3RlbmVyIGZvciBhbGwgc2Vuc29ycy4KICAgICAgKgotICAgICAqIEBwYXJhbSBsaXN0ZW5lciBhIFNlbnNvckxpc3RlbmVyIG9iamVjdAorICAgICAqIEBwYXJhbSBsaXN0ZW5lcgorICAgICAqICAgICAgICBhIFNlbnNvckxpc3RlbmVyIG9iamVjdAorICAgICAqCisgICAgICogQHNlZSAjdW5yZWdpc3Rlckxpc3RlbmVyKFNlbnNvckV2ZW50TGlzdGVuZXIsIFNlbnNvcikKKyAgICAgKiBAc2VlICNyZWdpc3Rlckxpc3RlbmVyKFNlbnNvckV2ZW50TGlzdGVuZXIsIFNlbnNvciwgaW50KQogICAgICAqCiAgICAgICovCiAgICAgcHVibGljIHZvaWQgdW5yZWdpc3Rlckxpc3RlbmVyKFNlbnNvckV2ZW50TGlzdGVuZXIgbGlzdGVuZXIpIHsKICAgICAgICAgdW5yZWdpc3Rlckxpc3RlbmVyKChPYmplY3QpbGlzdGVuZXIpOwogICAgIH0KIAotCiAgICAgLyoqCi0gICAgICogUmVnaXN0ZXJzIGEge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yRXZlbnRMaXN0ZW5lciBTZW5zb3JFdmVudExpc3RlbmVyfQotICAgICAqIGZvciB0aGUgZ2l2ZW4gc2Vuc29yLgorICAgICAqIFJlZ2lzdGVycyBhIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvckV2ZW50TGlzdGVuZXIKKyAgICAgKiBTZW5zb3JFdmVudExpc3RlbmVyfSBmb3IgdGhlIGdpdmVuIHNlbnNvci4KICAgICAgKgotICAgICAqIEBwYXJhbSBsaXN0ZW5lciBBIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvckV2ZW50TGlzdGVuZXIgU2Vuc29yRXZlbnRMaXN0ZW5lcn0gb2JqZWN0LgotICAgICAqIEBwYXJhbSBzZW5zb3IgVGhlIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvciBTZW5zb3J9IHRvIHJlZ2lzdGVyIHRvLgotICAgICAqIEBwYXJhbSByYXRlIFRoZSByYXRlIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvckV2ZW50IHNlbnNvciBldmVudHN9IGFyZSBkZWxpdmVyZWQgYXQuCi0gICAgICogVGhpcyBpcyBvbmx5IGEgaGludCB0byB0aGUgc3lzdGVtLiBFdmVudHMgbWF5IGJlIHJlY2VpdmVkIGZhc3RlciBvcgotICAgICAqIHNsb3dlciB0aGFuIHRoZSBzcGVjaWZpZWQgcmF0ZS4gVXN1YWxseSBldmVudHMgYXJlIHJlY2VpdmVkIGZhc3Rlci4gVGhlIHZhbHVlIG11c3QgYmUKLSAgICAgKiBvbmUgb2Yge0BsaW5rICNTRU5TT1JfREVMQVlfTk9STUFMfSwge0BsaW5rICNTRU5TT1JfREVMQVlfVUl9LCB7QGxpbmsgI1NFTlNPUl9ERUxBWV9HQU1FfSwKLSAgICAgKiBvciB7QGxpbmsgI1NFTlNPUl9ERUxBWV9GQVNURVNUfS4KKyAgICAgKiBAcGFyYW0gbGlzdGVuZXIKKyAgICAgKiAgICAgICAgQSB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JFdmVudExpc3RlbmVyIFNlbnNvckV2ZW50TGlzdGVuZXJ9CisgICAgICogICAgICAgIG9iamVjdC4KICAgICAgKgotICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgc2Vuc29yIGlzIHN1cHBvcnRlZCBhbmQgc3VjY2Vzc2Z1bGx5IGVuYWJsZWQuCisgICAgICogQHBhcmFtIHNlbnNvcgorICAgICAqICAgICAgICBUaGUge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yIFNlbnNvcn0gdG8gcmVnaXN0ZXIgdG8uCisgICAgICoKKyAgICAgKiBAcGFyYW0gcmF0ZQorICAgICAqICAgICAgICBUaGUgcmF0ZSB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JFdmVudCBzZW5zb3IgZXZlbnRzfSBhcmUKKyAgICAgKiAgICAgICAgZGVsaXZlcmVkIGF0LiBUaGlzIGlzIG9ubHkgYSBoaW50IHRvIHRoZSBzeXN0ZW0uIEV2ZW50cyBtYXkgYmUKKyAgICAgKiAgICAgICAgcmVjZWl2ZWQgZmFzdGVyIG9yIHNsb3dlciB0aGFuIHRoZSBzcGVjaWZpZWQgcmF0ZS4gVXN1YWxseSBldmVudHMKKyAgICAgKiAgICAgICAgYXJlIHJlY2VpdmVkIGZhc3Rlci4gVGhlIHZhbHVlIG11c3QgYmUgb25lIG9mCisgICAgICogICAgICAgIHtAbGluayAjU0VOU09SX0RFTEFZX05PUk1BTH0sIHtAbGluayAjU0VOU09SX0RFTEFZX1VJfSwKKyAgICAgKiAgICAgICAge0BsaW5rICNTRU5TT1JfREVMQVlfR0FNRX0sIG9yIHtAbGluayAjU0VOU09SX0RFTEFZX0ZBU1RFU1R9LgorICAgICAqCisgICAgICogQHJldHVybiA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGUgc2Vuc29yIGlzIHN1cHBvcnRlZCBhbmQgc3VjY2Vzc2Z1bGx5CisgICAgICogICAgICAgICBlbmFibGVkLgorICAgICAqCisgICAgICogQHNlZSAjcmVnaXN0ZXJMaXN0ZW5lcihTZW5zb3JFdmVudExpc3RlbmVyLCBTZW5zb3IsIGludCwgSGFuZGxlcikKKyAgICAgKiBAc2VlICN1bnJlZ2lzdGVyTGlzdGVuZXIoU2Vuc29yRXZlbnRMaXN0ZW5lcikKKyAgICAgKiBAc2VlICN1bnJlZ2lzdGVyTGlzdGVuZXIoU2Vuc29yRXZlbnRMaXN0ZW5lciwgU2Vuc29yKQogICAgICAqCiAgICAgICovCiAgICAgcHVibGljIGJvb2xlYW4gcmVnaXN0ZXJMaXN0ZW5lcihTZW5zb3JFdmVudExpc3RlbmVyIGxpc3RlbmVyLCBTZW5zb3Igc2Vuc29yLCBpbnQgcmF0ZSkgewpAQCAtODY4LDIxICs5OTcsMzUgQEAKICAgICB9CiAKICAgICAvKioKLSAgICAgKiBSZWdpc3RlcnMgYSB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JFdmVudExpc3RlbmVyIFNlbnNvckV2ZW50TGlzdGVuZXJ9Ci0gICAgICogZm9yIHRoZSBnaXZlbiBzZW5zb3IuCisgICAgICogUmVnaXN0ZXJzIGEge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yRXZlbnRMaXN0ZW5lcgorICAgICAqIFNlbnNvckV2ZW50TGlzdGVuZXJ9IGZvciB0aGUgZ2l2ZW4gc2Vuc29yLgogICAgICAqCi0gICAgICogQHBhcmFtIGxpc3RlbmVyIEEge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yRXZlbnRMaXN0ZW5lciBTZW5zb3JFdmVudExpc3RlbmVyfSBvYmplY3QuCi0gICAgICogQHBhcmFtIHNlbnNvciBUaGUge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yIFNlbnNvcn0gdG8gcmVnaXN0ZXIgdG8uCi0gICAgICogQHBhcmFtIHJhdGUgVGhlIHJhdGUge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yRXZlbnQgc2Vuc29yIGV2ZW50c30gYXJlIGRlbGl2ZXJlZCBhdC4KLSAgICAgKiBUaGlzIGlzIG9ubHkgYSBoaW50IHRvIHRoZSBzeXN0ZW0uIEV2ZW50cyBtYXkgYmUgcmVjZWl2ZWQgZmFzdGVyIG9yCi0gICAgICogc2xvd2VyIHRoYW4gdGhlIHNwZWNpZmllZCByYXRlLiBVc3VhbGx5IGV2ZW50cyBhcmUgcmVjZWl2ZWQgZmFzdGVyLiBUaGUgdmFsdWUgbXVzdCBiZSBvbmUKLSAgICAgKiBvZiB7QGxpbmsgI1NFTlNPUl9ERUxBWV9OT1JNQUx9LCB7QGxpbmsgI1NFTlNPUl9ERUxBWV9VSX0sIHtAbGluayAjU0VOU09SX0RFTEFZX0dBTUV9LCBvcgotICAgICAqIHtAbGluayAjU0VOU09SX0RFTEFZX0ZBU1RFU1R9LgotICAgICAqIEBwYXJhbSBoYW5kbGVyIFRoZSB7QGxpbmsgYW5kcm9pZC5vcy5IYW5kbGVyIEhhbmRsZXJ9IHRoZQotICAgICAqIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvckV2ZW50IHNlbnNvciBldmVudHN9IHdpbGwgYmUgZGVsaXZlcmVkIHRvLgorICAgICAqIEBwYXJhbSBsaXN0ZW5lcgorICAgICAqICAgICAgICBBIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvckV2ZW50TGlzdGVuZXIgU2Vuc29yRXZlbnRMaXN0ZW5lcn0KKyAgICAgKiAgICAgICAgb2JqZWN0LgorICAgICAqCisgICAgICogQHBhcmFtIHNlbnNvcgorICAgICAqICAgICAgICBUaGUge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yIFNlbnNvcn0gdG8gcmVnaXN0ZXIgdG8uCisgICAgICoKKyAgICAgKiBAcGFyYW0gcmF0ZQorICAgICAqICAgICAgICBUaGUgcmF0ZSB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JFdmVudCBzZW5zb3IgZXZlbnRzfSBhcmUKKyAgICAgKiAgICAgICAgZGVsaXZlcmVkIGF0LiBUaGlzIGlzIG9ubHkgYSBoaW50IHRvIHRoZSBzeXN0ZW0uIEV2ZW50cyBtYXkgYmUKKyAgICAgKiAgICAgICAgcmVjZWl2ZWQgZmFzdGVyIG9yIHNsb3dlciB0aGFuIHRoZSBzcGVjaWZpZWQgcmF0ZS4gVXN1YWxseSBldmVudHMKKyAgICAgKiAgICAgICAgYXJlIHJlY2VpdmVkIGZhc3Rlci4gVGhlIHZhbHVlIG11c3QgYmUgb25lIG9mCisgICAgICogICAgICAgIHtAbGluayAjU0VOU09SX0RFTEFZX05PUk1BTH0sIHtAbGluayAjU0VOU09SX0RFTEFZX1VJfSwKKyAgICAgKiAgICAgICAge0BsaW5rICNTRU5TT1JfREVMQVlfR0FNRX0sIG9yIHtAbGluayAjU0VOU09SX0RFTEFZX0ZBU1RFU1R9LgorICAgICAqCisgICAgICogQHBhcmFtIGhhbmRsZXIKKyAgICAgKiAgICAgICAgVGhlIHtAbGluayBhbmRyb2lkLm9zLkhhbmRsZXIgSGFuZGxlcn0gdGhlCisgICAgICogICAgICAgIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvckV2ZW50IHNlbnNvciBldmVudHN9IHdpbGwgYmUKKyAgICAgKiAgICAgICAgZGVsaXZlcmVkIHRvLgogICAgICAqCiAgICAgICogQHJldHVybiB0cnVlIGlmIHRoZSBzZW5zb3IgaXMgc3VwcG9ydGVkIGFuZCBzdWNjZXNzZnVsbHkgZW5hYmxlZC4KICAgICAgKgorICAgICAqIEBzZWUgI3JlZ2lzdGVyTGlzdGVuZXIoU2Vuc29yRXZlbnRMaXN0ZW5lciwgU2Vuc29yLCBpbnQpCisgICAgICogQHNlZSAjdW5yZWdpc3Rlckxpc3RlbmVyKFNlbnNvckV2ZW50TGlzdGVuZXIpCisgICAgICogQHNlZSAjdW5yZWdpc3Rlckxpc3RlbmVyKFNlbnNvckV2ZW50TGlzdGVuZXIsIFNlbnNvcikKKyAgICAgKgogICAgICAqLwogICAgIHB1YmxpYyBib29sZWFuIHJlZ2lzdGVyTGlzdGVuZXIoU2Vuc29yRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwgU2Vuc29yIHNlbnNvciwgaW50IHJhdGUsCiAgICAgICAgICAgICBIYW5kbGVyIGhhbmRsZXIpIHsKQEAgLTEwMDMsNjAgKzExNDYsODMgQEAKICAgICB9CiAKICAgICAvKioKLSAgICAgKiBDb21wdXRlcyB0aGUgaW5jbGluYXRpb24gbWF0cml4IDxiPkk8L2I+IGFzIHdlbGwgYXMgdGhlIHJvdGF0aW9uCi0gICAgICogbWF0cml4IDxiPlI8L2I+IHRyYW5zZm9ybWluZyBhIHZlY3RvciBmcm9tIHRoZQotICAgICAqIGRldmljZSBjb29yZGluYXRlIHN5c3RlbSB0byB0aGUgd29ybGQncyBjb29yZGluYXRlIHN5c3RlbSB3aGljaCBpcwotICAgICAqIGRlZmluZWQgYXMgYSBkaXJlY3Qgb3J0aG9ub3JtYWwgYmFzaXMsIHdoZXJlOgotICAgICAqIAorICAgICAqIDxwPgorICAgICAqIENvbXB1dGVzIHRoZSBpbmNsaW5hdGlvbiBtYXRyaXggPGI+STwvYj4gYXMgd2VsbCBhcyB0aGUgcm90YXRpb24gbWF0cml4CisgICAgICogPGI+UjwvYj4gdHJhbnNmb3JtaW5nIGEgdmVjdG9yIGZyb20gdGhlIGRldmljZSBjb29yZGluYXRlIHN5c3RlbSB0byB0aGUKKyAgICAgKiB3b3JsZCdzIGNvb3JkaW5hdGUgc3lzdGVtIHdoaWNoIGlzIGRlZmluZWQgYXMgYSBkaXJlY3Qgb3J0aG9ub3JtYWwgYmFzaXMsCisgICAgICogd2hlcmU6CisgICAgICogPC9wPgorICAgICAqCisgICAgICogPHVsPgogICAgICAqIDxsaT5YIGlzIGRlZmluZWQgYXMgdGhlIHZlY3RvciBwcm9kdWN0IDxiPlkuWjwvYj4gKEl0IGlzIHRhbmdlbnRpYWwgdG8KICAgICAgKiB0aGUgZ3JvdW5kIGF0IHRoZSBkZXZpY2UncyBjdXJyZW50IGxvY2F0aW9uIGFuZCByb3VnaGx5IHBvaW50cyBFYXN0KS48L2xpPgogICAgICAqIDxsaT5ZIGlzIHRhbmdlbnRpYWwgdG8gdGhlIGdyb3VuZCBhdCB0aGUgZGV2aWNlJ3MgY3VycmVudCBsb2NhdGlvbiBhbmQKICAgICAgKiBwb2ludHMgdG93YXJkcyB0aGUgbWFnbmV0aWMgTm9ydGggUG9sZS48L2xpPgogICAgICAqIDxsaT5aIHBvaW50cyB0b3dhcmRzIHRoZSBza3kgYW5kIGlzIHBlcnBlbmRpY3VsYXIgdG8gdGhlIGdyb3VuZC48L2xpPgorICAgICAqIDwvdWw+CisgICAgICoKKyAgICAgKiA8cD4KKyAgICAgKiA8Y2VudGVyPjxpbWcgc3JjPSIuLi8uLi8uLi9pbWFnZXMvYXhpc19nbG9iZS5wbmciCisgICAgICogYWx0PSJTZW5zb3JzIGNvb3JkaW5hdGUtc3lzdGVtIGRpYWdyYW0uIiBib3JkZXI9IjAiIC8+PC9jZW50ZXI+CisgICAgICogPC9wPgorICAgICAqCiAgICAgICogPHA+CiAgICAgICogPGhyPgotICAgICAqIDxwPkJ5IGRlZmluaXRpb246Ci0gICAgICogPHA+WzAgMCBnXSA9IDxiPlI8L2I+ICogPGI+Z3Jhdml0eTwvYj4gKGcgPSBtYWduaXR1ZGUgb2YgZ3Jhdml0eSkKLSAgICAgKiA8cD5bMCBtIDBdID0gPGI+STwvYj4gKiA8Yj5SPC9iPiAqIDxiPmdlb21hZ25ldGljPC9iPgotICAgICAqIChtID0gbWFnbml0dWRlIG9mIGdlb21hZ25ldGljIGZpZWxkKQotICAgICAqIDxwPjxiPlI8L2I+IGlzIHRoZSBpZGVudGl0eSBtYXRyaXggd2hlbiB0aGUgZGV2aWNlIGlzIGFsaWduZWQgd2l0aCB0aGUKKyAgICAgKiA8cD4KKyAgICAgKiBCeSBkZWZpbml0aW9uOgorICAgICAqIDxwPgorICAgICAqIFswIDAgZ10gPSA8Yj5SPC9iPiAqIDxiPmdyYXZpdHk8L2I+IChnID0gbWFnbml0dWRlIG9mIGdyYXZpdHkpCisgICAgICogPHA+CisgICAgICogWzAgbSAwXSA9IDxiPkk8L2I+ICogPGI+UjwvYj4gKiA8Yj5nZW9tYWduZXRpYzwvYj4gKG0gPSBtYWduaXR1ZGUgb2YKKyAgICAgKiBnZW9tYWduZXRpYyBmaWVsZCkKKyAgICAgKiA8cD4KKyAgICAgKiA8Yj5SPC9iPiBpcyB0aGUgaWRlbnRpdHkgbWF0cml4IHdoZW4gdGhlIGRldmljZSBpcyBhbGlnbmVkIHdpdGggdGhlCiAgICAgICogd29ybGQncyBjb29yZGluYXRlIHN5c3RlbSwgdGhhdCBpcywgd2hlbiB0aGUgZGV2aWNlJ3MgWCBheGlzIHBvaW50cwogICAgICAqIHRvd2FyZCBFYXN0LCB0aGUgWSBheGlzIHBvaW50cyB0byB0aGUgTm9ydGggUG9sZSBhbmQgdGhlIGRldmljZSBpcyBmYWNpbmcKICAgICAgKiB0aGUgc2t5LgogICAgICAqCi0gICAgICogPHA+PGI+STwvYj4gaXMgYSByb3RhdGlvbiBtYXRyaXggdHJhbnNmb3JtaW5nIHRoZSBnZW9tYWduZXRpYwotICAgICAqIHZlY3RvciBpbnRvIHRoZSBzYW1lIGNvb3JkaW5hdGUgc3BhY2UgYXMgZ3Jhdml0eSAodGhlIHdvcmxkJ3MgY29vcmRpbmF0ZQotICAgICAqIHNwYWNlKS4gPGI+STwvYj4gaXMgYSBzaW1wbGUgcm90YXRpb24gYXJvdW5kIHRoZSBYIGF4aXMuCi0gICAgICogVGhlIGluY2xpbmF0aW9uIGFuZ2xlIGluIHJhZGlhbnMgY2FuIGJlIGNvbXB1dGVkIHdpdGgKLSAgICAgKiB7QGxpbmsgI2dldEluY2xpbmF0aW9ufS4KKyAgICAgKiA8cD4KKyAgICAgKiA8Yj5JPC9iPiBpcyBhIHJvdGF0aW9uIG1hdHJpeCB0cmFuc2Zvcm1pbmcgdGhlIGdlb21hZ25ldGljIHZlY3RvciBpbnRvCisgICAgICogdGhlIHNhbWUgY29vcmRpbmF0ZSBzcGFjZSBhcyBncmF2aXR5ICh0aGUgd29ybGQncyBjb29yZGluYXRlIHNwYWNlKS4KKyAgICAgKiA8Yj5JPC9iPiBpcyBhIHNpbXBsZSByb3RhdGlvbiBhcm91bmQgdGhlIFggYXhpcy4gVGhlIGluY2xpbmF0aW9uIGFuZ2xlIGluCisgICAgICogcmFkaWFucyBjYW4gYmUgY29tcHV0ZWQgd2l0aCB7QGxpbmsgI2dldEluY2xpbmF0aW9ufS4KICAgICAgKiA8aHI+Ci0gICAgICogCi0gICAgICogPHA+IEVhY2ggbWF0cml4IGlzIHJldHVybmVkIGVpdGhlciBhcyBhIDN4MyBvciA0eDQgcm93LW1ham9yIG1hdHJpeAotICAgICAqIGRlcGVuZGluZyBvbiB0aGUgbGVuZ3RoIG9mIHRoZSBwYXNzZWQgYXJyYXk6Ci0gICAgICogPHA+PHU+SWYgdGhlIGFycmF5IGxlbmd0aCBpcyAxNjo8L3U+CisgICAgICoKKyAgICAgKiA8cD4KKyAgICAgKiBFYWNoIG1hdHJpeCBpcyByZXR1cm5lZCBlaXRoZXIgYXMgYSAzeDMgb3IgNHg0IHJvdy1tYWpvciBtYXRyaXggZGVwZW5kaW5nCisgICAgICogb24gdGhlIGxlbmd0aCBvZiB0aGUgcGFzc2VkIGFycmF5OgorICAgICAqIDxwPgorICAgICAqIDx1PklmIHRoZSBhcnJheSBsZW5ndGggaXMgMTY6PC91PgorICAgICAqCiAgICAgICogPHByZT4KICAgICAgKiAgIC8gIE1bIDBdICAgTVsgMV0gICBNWyAyXSAgIE1bIDNdICBcCiAgICAgICogICB8ICBNWyA0XSAgIE1bIDVdICAgTVsgNl0gICBNWyA3XSAgfAogICAgICAqICAgfCAgTVsgOF0gICBNWyA5XSAgIE1bMTBdICAgTVsxMV0gIHwKICAgICAgKiAgIFwgIE1bMTJdICAgTVsxM10gICBNWzE0XSAgIE1bMTVdICAvCiAgICAgICo8L3ByZT4KLSAgICAgKiBUaGlzIG1hdHJpeCBpcyByZWFkeSB0byBiZSB1c2VkIGJ5IE9wZW5HTCBFUydzIAotICAgICAqIHtAbGluayBqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5vcGVuZ2xlcy5HTDEwI2dsTG9hZE1hdHJpeGYoZmxvYXRbXSwgaW50KSAKLSAgICAgKiBnbExvYWRNYXRyaXhmKGZsb2F0W10sIGludCl9LiAKLSAgICAgKiA8cD5Ob3RlIHRoYXQgYmVjYXVzZSBPcGVuR0wgbWF0cmljZXMgYXJlIGNvbHVtbi1tYWpvciBtYXRyaWNlcyB5b3UgbXVzdAotICAgICAqIHRyYW5zcG9zZSB0aGUgbWF0cml4IGJlZm9yZSB1c2luZyBpdC4gSG93ZXZlciwgc2luY2UgdGhlIG1hdHJpeCBpcyBhIAorICAgICAqCisgICAgICogVGhpcyBtYXRyaXggaXMgcmVhZHkgdG8gYmUgdXNlZCBieSBPcGVuR0wgRVMncworICAgICAqIHtAbGluayBqYXZheC5taWNyb2VkaXRpb24ua2hyb25vcy5vcGVuZ2xlcy5HTDEwI2dsTG9hZE1hdHJpeGYoZmxvYXRbXSwgaW50KQorICAgICAqIGdsTG9hZE1hdHJpeGYoZmxvYXRbXSwgaW50KX0uCisgICAgICogPHA+CisgICAgICogTm90ZSB0aGF0IGJlY2F1c2UgT3BlbkdMIG1hdHJpY2VzIGFyZSBjb2x1bW4tbWFqb3IgbWF0cmljZXMgeW91IG11c3QKKyAgICAgKiB0cmFuc3Bvc2UgdGhlIG1hdHJpeCBiZWZvcmUgdXNpbmcgaXQuIEhvd2V2ZXIsIHNpbmNlIHRoZSBtYXRyaXggaXMgYQogICAgICAqIHJvdGF0aW9uIG1hdHJpeCwgaXRzIHRyYW5zcG9zZSBpcyBhbHNvIGl0cyBpbnZlcnNlLCBjb252ZW5pZW50bHksIGl0IGlzCiAgICAgICogb2Z0ZW4gdGhlIGludmVyc2Ugb2YgdGhlIHJvdGF0aW9uIHRoYXQgaXMgbmVlZGVkIGZvciByZW5kZXJpbmc7IGl0IGNhbgogICAgICAqIHRoZXJlZm9yZSBiZSB1c2VkIHdpdGggT3BlbkdMIEVTIGRpcmVjdGx5LgogICAgICAqIDxwPgogICAgICAqIEFsc28gbm90ZSB0aGF0IHRoZSByZXR1cm5lZCBtYXRyaWNlcyBhbHdheXMgaGF2ZSB0aGlzIGZvcm06CisgICAgICoKICAgICAgKiA8cHJlPgogICAgICAqICAgLyAgTVsgMF0gICBNWyAxXSAgIE1bIDJdICAgMCAgXAogICAgICAqICAgfCAgTVsgNF0gICBNWyA1XSAgIE1bIDZdICAgMCAgfAogICAgICAqICAgfCAgTVsgOF0gICBNWyA5XSAgIE1bMTBdICAgMCAgfAogICAgICAqICAgXCAgICAgIDAgICAgICAgMCAgICAgICAwICAgMSAgLwogICAgICAqPC9wcmU+Ci0gICAgICogPHA+PHU+SWYgdGhlIGFycmF5IGxlbmd0aCBpcyA5OjwvdT4KKyAgICAgKgorICAgICAqIDxwPgorICAgICAqIDx1PklmIHRoZSBhcnJheSBsZW5ndGggaXMgOTo8L3U+CisgICAgICoKICAgICAgKiA8cHJlPgogICAgICAqICAgLyAgTVsgMF0gICBNWyAxXSAgIE1bIDJdICBcCiAgICAgICogICB8ICBNWyAzXSAgIE1bIDRdICAgTVsgNV0gIHwKQEAgLTEwNjQsMzQgKzEyMzAsNTIgQEAKICAgICAgKjwvcHJlPgogICAgICAqCiAgICAgICogPGhyPgotICAgICAqIDxwPlRoZSBpbnZlcnNlIG9mIGVhY2ggbWF0cml4IGNhbiBiZSBjb21wdXRlZCBlYXNpbHkgYnkgdGFraW5nIGl0cworICAgICAqIDxwPgorICAgICAqIFRoZSBpbnZlcnNlIG9mIGVhY2ggbWF0cml4IGNhbiBiZSBjb21wdXRlZCBlYXNpbHkgYnkgdGFraW5nIGl0cwogICAgICAqIHRyYW5zcG9zZS4KICAgICAgKgotICAgICAqIDxwPlRoZSBtYXRyaWNlcyByZXR1cm5lZCBieSB0aGlzIGZ1bmN0aW9uIGFyZSBtZWFuaW5nZnVsIG9ubHkgd2hlbiB0aGUKLSAgICAgKiBkZXZpY2UgaXMgbm90IGZyZWUtZmFsbGluZyBhbmQgaXQgaXMgbm90IGNsb3NlIHRvIHRoZSBtYWduZXRpYyBub3J0aC4KLSAgICAgKiBJZiB0aGUgZGV2aWNlIGlzIGFjY2VsZXJhdGluZywgb3IgcGxhY2VkIGludG8gYSBzdHJvbmcgbWFnbmV0aWMgZmllbGQsCi0gICAgICogdGhlIHJldHVybmVkIG1hdHJpY2VzIG1heSBiZSBpbmFjY3VyYXRlLgorICAgICAqIDxwPgorICAgICAqIFRoZSBtYXRyaWNlcyByZXR1cm5lZCBieSB0aGlzIGZ1bmN0aW9uIGFyZSBtZWFuaW5nZnVsIG9ubHkgd2hlbiB0aGUKKyAgICAgKiBkZXZpY2UgaXMgbm90IGZyZWUtZmFsbGluZyBhbmQgaXQgaXMgbm90IGNsb3NlIHRvIHRoZSBtYWduZXRpYyBub3J0aC4gSWYKKyAgICAgKiB0aGUgZGV2aWNlIGlzIGFjY2VsZXJhdGluZywgb3IgcGxhY2VkIGludG8gYSBzdHJvbmcgbWFnbmV0aWMgZmllbGQsIHRoZQorICAgICAqIHJldHVybmVkIG1hdHJpY2VzIG1heSBiZSBpbmFjY3VyYXRlLgogICAgICAqCi0gICAgICogQHBhcmFtIFIgaXMgYW4gYXJyYXkgb2YgOSBmbG9hdHMgaG9sZGluZyB0aGUgcm90YXRpb24gbWF0cml4IDxiPlI8L2I+Ci0gICAgICogd2hlbiB0aGlzIGZ1bmN0aW9uIHJldHVybnMuIFIgY2FuIGJlIG51bGwuPHA+Ci0gICAgICogQHBhcmFtIEkgaXMgYW4gYXJyYXkgb2YgOSBmbG9hdHMgaG9sZGluZyB0aGUgcm90YXRpb24gbWF0cml4IDxiPkk8L2I+Ci0gICAgICogd2hlbiB0aGlzIGZ1bmN0aW9uIHJldHVybnMuIEkgY2FuIGJlIG51bGwuPHA+Ci0gICAgICogQHBhcmFtIGdyYXZpdHkgaXMgYW4gYXJyYXkgb2YgMyBmbG9hdHMgY29udGFpbmluZyB0aGUgZ3Jhdml0eSB2ZWN0b3IKLSAgICAgKiBleHByZXNzZWQgaW4gdGhlIGRldmljZSdzIGNvb3JkaW5hdGUuIFlvdSBjYW4gc2ltcGx5IHVzZSB0aGUKLSAgICAgKiB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JFdmVudCN2YWx1ZXMgdmFsdWVzfQotICAgICAqIHJldHVybmVkIGJ5IGEge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yRXZlbnQgU2Vuc29yRXZlbnR9IG9mIGEKLSAgICAgKiB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3IgU2Vuc29yfSBvZiB0eXBlCi0gICAgICoge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yI1RZUEVfQUNDRUxFUk9NRVRFUiBUWVBFX0FDQ0VMRVJPTUVURVJ9LjxwPgotICAgICAqIEBwYXJhbSBnZW9tYWduZXRpYyBpcyBhbiBhcnJheSBvZiAzIGZsb2F0cyBjb250YWluaW5nIHRoZSBnZW9tYWduZXRpYwotICAgICAqIHZlY3RvciBleHByZXNzZWQgaW4gdGhlIGRldmljZSdzIGNvb3JkaW5hdGUuIFlvdSBjYW4gc2ltcGx5IHVzZSB0aGUKLSAgICAgKiB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JFdmVudCN2YWx1ZXMgdmFsdWVzfQotICAgICAqIHJldHVybmVkIGJ5IGEge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yRXZlbnQgU2Vuc29yRXZlbnR9IG9mIGEKLSAgICAgKiB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3IgU2Vuc29yfSBvZiB0eXBlCi0gICAgICoge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yI1RZUEVfTUFHTkVUSUNfRklFTEQgVFlQRV9NQUdORVRJQ19GSUVMRH0uCi0gICAgICogQHJldHVybgotICAgICAqICAgdHJ1ZSBvbiBzdWNjZXNzPHA+Ci0gICAgICogICBmYWxzZSBvbiBmYWlsdXJlIChmb3IgaW5zdGFuY2UsIGlmIHRoZSBkZXZpY2UgaXMgaW4gZnJlZSBmYWxsKS4KLSAgICAgKiAgIE9uIGZhaWx1cmUgdGhlIG91dHB1dCBtYXRyaWNlcyBhcmUgbm90IG1vZGlmaWVkLgorICAgICAqIEBwYXJhbSBSCisgICAgICogICAgICAgIGlzIGFuIGFycmF5IG9mIDkgZmxvYXRzIGhvbGRpbmcgdGhlIHJvdGF0aW9uIG1hdHJpeCA8Yj5SPC9iPiB3aGVuCisgICAgICogICAgICAgIHRoaXMgZnVuY3Rpb24gcmV0dXJucy4gUiBjYW4gYmUgbnVsbC4KKyAgICAgKiAgICAgICAgPHA+CisgICAgICoKKyAgICAgKiBAcGFyYW0gSQorICAgICAqICAgICAgICBpcyBhbiBhcnJheSBvZiA5IGZsb2F0cyBob2xkaW5nIHRoZSByb3RhdGlvbiBtYXRyaXggPGI+STwvYj4gd2hlbgorICAgICAqICAgICAgICB0aGlzIGZ1bmN0aW9uIHJldHVybnMuIEkgY2FuIGJlIG51bGwuCisgICAgICogICAgICAgIDxwPgorICAgICAqCisgICAgICogQHBhcmFtIGdyYXZpdHkKKyAgICAgKiAgICAgICAgaXMgYW4gYXJyYXkgb2YgMyBmbG9hdHMgY29udGFpbmluZyB0aGUgZ3Jhdml0eSB2ZWN0b3IgZXhwcmVzc2VkIGluCisgICAgICogICAgICAgIHRoZSBkZXZpY2UncyBjb29yZGluYXRlLiBZb3UgY2FuIHNpbXBseSB1c2UgdGhlCisgICAgICogICAgICAgIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvckV2ZW50I3ZhbHVlcyB2YWx1ZXN9IHJldHVybmVkIGJ5IGEKKyAgICAgKiAgICAgICAge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yRXZlbnQgU2Vuc29yRXZlbnR9IG9mIGEKKyAgICAgKiAgICAgICAge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yIFNlbnNvcn0gb2YgdHlwZQorICAgICAqICAgICAgICB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3IjVFlQRV9BQ0NFTEVST01FVEVSCisgICAgICogICAgICAgIFRZUEVfQUNDRUxFUk9NRVRFUn0uCisgICAgICogICAgICAgIDxwPgorICAgICAqCisgICAgICogQHBhcmFtIGdlb21hZ25ldGljCisgICAgICogICAgICAgIGlzIGFuIGFycmF5IG9mIDMgZmxvYXRzIGNvbnRhaW5pbmcgdGhlIGdlb21hZ25ldGljIHZlY3RvcgorICAgICAqICAgICAgICBleHByZXNzZWQgaW4gdGhlIGRldmljZSdzIGNvb3JkaW5hdGUuIFlvdSBjYW4gc2ltcGx5IHVzZSB0aGUKKyAgICAgKiAgICAgICAge0BsaW5rIGFuZHJvaWQuaGFyZHdhcmUuU2Vuc29yRXZlbnQjdmFsdWVzIHZhbHVlc30gcmV0dXJuZWQgYnkgYQorICAgICAqICAgICAgICB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3JFdmVudCBTZW5zb3JFdmVudH0gb2YgYQorICAgICAqICAgICAgICB7QGxpbmsgYW5kcm9pZC5oYXJkd2FyZS5TZW5zb3IgU2Vuc29yfSBvZiB0eXBlCisgICAgICogICAgICAgIHtAbGluayBhbmRyb2lkLmhhcmR3YXJlLlNlbnNvciNUWVBFX01BR05FVElDX0ZJRUxECisgICAgICogICAgICAgIFRZUEVfTUFHTkVUSUNfRklFTER9LgorICAgICAqCisgICAgICogQHJldHVybiA8Y29kZT50cnVlPC9jb2RlPiBvbiBzdWNjZXNzLCA8Y29kZT5mYWxzZTwvY29kZT4gb24gZmFpbHVyZSAoZm9yCisgICAgICogICAgICAgICBpbnN0YW5jZSwgaWYgdGhlIGRldmljZSBpcyBpbiBmcmVlIGZhbGwpLiBPbiBmYWlsdXJlIHRoZSBvdXRwdXQKKyAgICAgKiAgICAgICAgIG1hdHJpY2VzIGFyZSBub3QgbW9kaWZpZWQuCisgICAgICoKKyAgICAgKiBAc2VlICNnZXRJbmNsaW5hdGlvbihmbG9hdFtdKQorICAgICAqIEBzZWUgI2dldE9yaWVudGF0aW9uKGZsb2F0W10sIGZsb2F0W10pCisgICAgICogQHNlZSAjcmVtYXBDb29yZGluYXRlU3lzdGVtKGZsb2F0W10sIGludCwgaW50LCBmbG9hdFtdKQogICAgICAqLwogCiAgICAgcHVibGljIHN0YXRpYyBib29sZWFuIGdldFJvdGF0aW9uTWF0cml4KGZsb2F0W10gUiwgZmxvYXRbXSBJLApAQCAtMTE2MCw2NCArMTM0NCw5OCBAQAogICAgIC8qKgogICAgICAqIENvbXB1dGVzIHRoZSBnZW9tYWduZXRpYyBpbmNsaW5hdGlvbiBhbmdsZSBpbiByYWRpYW5zIGZyb20gdGhlCiAgICAgICogaW5jbGluYXRpb24gbWF0cml4IDxiPkk8L2I+IHJldHVybmVkIGJ5IHtAbGluayAjZ2V0Um90YXRpb25NYXRyaXh9LgotICAgICAqIEBwYXJhbSBJIGluY2xpbmF0aW9uIG1hdHJpeCBzZWUge0BsaW5rICNnZXRSb3RhdGlvbk1hdHJpeH0uCisgICAgICoKKyAgICAgKiBAcGFyYW0gSQorICAgICAqICAgICAgICBpbmNsaW5hdGlvbiBtYXRyaXggc2VlIHtAbGluayAjZ2V0Um90YXRpb25NYXRyaXh9LgorICAgICAqCiAgICAgICogQHJldHVybiBUaGUgZ2VvbWFnbmV0aWMgaW5jbGluYXRpb24gYW5nbGUgaW4gcmFkaWFucy4KKyAgICAgKgorICAgICAqIEBzZWUgI2dldFJvdGF0aW9uTWF0cml4KGZsb2F0W10sIGZsb2F0W10sIGZsb2F0W10sIGZsb2F0W10pCisgICAgICogQHNlZSAjZ2V0T3JpZW50YXRpb24oZmxvYXRbXSwgZmxvYXRbXSkKKyAgICAgKiBAc2VlIEdlb21hZ25ldGljRmllbGQKKyAgICAgKgogICAgICAqLwogICAgIHB1YmxpYyBzdGF0aWMgZmxvYXQgZ2V0SW5jbGluYXRpb24oZmxvYXRbXSBJKSB7CiAgICAgICAgIGlmIChJLmxlbmd0aCA9PSA5KSB7CiAgICAgICAgICAgICByZXR1cm4gKGZsb2F0KU1hdGguYXRhbjIoSVs1XSwgSVs0XSk7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4gKGZsb2F0KU1hdGguYXRhbjIoSVs2XSwgSVs1XSk7ICAgICAgICAgICAgCisgICAgICAgICAgICByZXR1cm4gKGZsb2F0KU1hdGguYXRhbjIoSVs2XSwgSVs1XSk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICAvKioKLSAgICAgKiBSb3RhdGVzIHRoZSBzdXBwbGllZCByb3RhdGlvbiBtYXRyaXggc28gaXQgaXMgZXhwcmVzc2VkIGluIGEKLSAgICAgKiBkaWZmZXJlbnQgY29vcmRpbmF0ZSBzeXN0ZW0uIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgd2hlbiBhbiBhcHBsaWNhdGlvbgotICAgICAqIG5lZWRzIHRvIGNvbXB1dGUgdGhlIHRocmVlIG9yaWVudGF0aW9uIGFuZ2xlcyBvZiB0aGUgZGV2aWNlIChzZWUKKyAgICAgKiA8cD4KKyAgICAgKiBSb3RhdGVzIHRoZSBzdXBwbGllZCByb3RhdGlvbiBtYXRyaXggc28gaXQgaXMgZXhwcmVzc2VkIGluIGEgZGlmZmVyZW50CisgICAgICogY29vcmRpbmF0ZSBzeXN0ZW0uIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgd2hlbiBhbiBhcHBsaWNhdGlvbiBuZWVkcyB0bworICAgICAqIGNvbXB1dGUgdGhlIHRocmVlIG9yaWVudGF0aW9uIGFuZ2xlcyBvZiB0aGUgZGV2aWNlIChzZWUKICAgICAgKiB7QGxpbmsgI2dldE9yaWVudGF0aW9ufSkgaW4gYSBkaWZmZXJlbnQgY29vcmRpbmF0ZSBzeXN0ZW0uCi0gICAgICogCi0gICAgICogPHA+V2hlbiB0aGUgcm90YXRpb24gbWF0cml4IGlzIHVzZWQgZm9yIGRyYXdpbmcgKGZvciBpbnN0YW5jZSB3aXRoIAotICAgICAqIE9wZW5HTCBFUyksIGl0IHVzdWFsbHkgPGI+ZG9lc24ndCBuZWVkPC9iPiB0byBiZSB0cmFuc2Zvcm1lZCBieSB0aGlzIAotICAgICAqIGZ1bmN0aW9uLCB1bmxlc3MgdGhlIHNjcmVlbiBpcyBwaHlzaWNhbGx5IHJvdGF0ZWQsIGluIHdoaWNoIGNhc2UgeW91Ci0gICAgICogY2FuIHVzZSB7QGxpbmsgYW5kcm9pZC52aWV3LkRpc3BsYXkjZ2V0Um90YXRpb24oKSBEaXNwbGF5LmdldFJvdGF0aW9uKCl9Ci0gICAgICogdG8gcmV0cmlldmUgdGhlIGN1cnJlbnQgcm90YXRpb24gb2YgdGhlIHNjcmVlbi4gIE5vdGUgdGhhdCBiZWNhdXNlIHRoZQotICAgICAqIHVzZXIgaXMgZ2VuZXJhbGx5IGZyZWUgdG8gcm90YXRlIHRoZWlyIHNjcmVlbiwgeW91IG9mdGVuIHNob3VsZAotICAgICAqIGNvbnNpZGVyIHRoZSByb3RhdGlvbiBpbiBkZWNpZGluZyB0aGUgcGFyYW1ldGVycyB0byB1c2UgaGVyZS4KKyAgICAgKiA8L3A+CiAgICAgICoKLSAgICAgKiA8cD48dT5FeGFtcGxlczo8L3U+PHA+CisgICAgICogPHA+CisgICAgICogV2hlbiB0aGUgcm90YXRpb24gbWF0cml4IGlzIHVzZWQgZm9yIGRyYXdpbmcgKGZvciBpbnN0YW5jZSB3aXRoIE9wZW5HTAorICAgICAqIEVTKSwgaXQgdXN1YWxseSA8Yj5kb2Vzbid0IG5lZWQ8L2I+IHRvIGJlIHRyYW5zZm9ybWVkIGJ5IHRoaXMgZnVuY3Rpb24sCisgICAgICogdW5sZXNzIHRoZSBzY3JlZW4gaXMgcGh5c2ljYWxseSByb3RhdGVkLCBpbiB3aGljaCBjYXNlIHlvdSBjYW4gdXNlCisgICAgICoge0BsaW5rIGFuZHJvaWQudmlldy5EaXNwbGF5I2dldFJvdGF0aW9uKCkgRGlzcGxheS5nZXRSb3RhdGlvbigpfSB0bworICAgICAqIHJldHJpZXZlIHRoZSBjdXJyZW50IHJvdGF0aW9uIG9mIHRoZSBzY3JlZW4uIE5vdGUgdGhhdCBiZWNhdXNlIHRoZSB1c2VyCisgICAgICogaXMgZ2VuZXJhbGx5IGZyZWUgdG8gcm90YXRlIHRoZWlyIHNjcmVlbiwgeW91IG9mdGVuIHNob3VsZCBjb25zaWRlciB0aGUKKyAgICAgKiByb3RhdGlvbiBpbiBkZWNpZGluZyB0aGUgcGFyYW1ldGVycyB0byB1c2UgaGVyZS4KKyAgICAgKiA8L3A+CiAgICAgICoKLSAgICAgKiA8bGk+VXNpbmcgdGhlIGNhbWVyYSAoWSBheGlzIGFsb25nIHRoZSBjYW1lcmEncyBheGlzKSBmb3IgYW4gYXVnbWVudGVkIAotICAgICAqIHJlYWxpdHkgYXBwbGljYXRpb24gd2hlcmUgdGhlIHJvdGF0aW9uIGFuZ2xlcyBhcmUgbmVlZGVkOiA8L2xpPjxwPgorICAgICAqIDxwPgorICAgICAqIDx1PkV4YW1wbGVzOjwvdT4KKyAgICAgKiA8cD4KICAgICAgKgotICAgICAqIDxjb2RlPnJlbWFwQ29vcmRpbmF0ZVN5c3RlbShpblIsIEFYSVNfWCwgQVhJU19aLCBvdXRSKTs8L2NvZGU+PHA+CisgICAgICogPHVsPgorICAgICAqIDxsaT5Vc2luZyB0aGUgY2FtZXJhIChZIGF4aXMgYWxvbmcgdGhlIGNhbWVyYSdzIGF4aXMpIGZvciBhbiBhdWdtZW50ZWQKKyAgICAgKiByZWFsaXR5IGFwcGxpY2F0aW9uIHdoZXJlIHRoZSByb3RhdGlvbiBhbmdsZXMgYXJlIG5lZWRlZDo8L2xpPgorICAgICAqCisgICAgICogPHA+CisgICAgICogPHVsPgorICAgICAqIDxjb2RlPnJlbWFwQ29vcmRpbmF0ZVN5c3RlbShpblIsIEFYSVNfWCwgQVhJU19aLCBvdXRSKTs8L2NvZGU+CisgICAgICogPC91bD4KKyAgICAgKiA8L3A+CiAgICAgICoKICAgICAgKiA8bGk+VXNpbmcgdGhlIGRldmljZSBhcyBhIG1lY2hhbmljYWwgY29tcGFzcyB3aGVuIHJvdGF0aW9uIGlzCi0gICAgICoge0BsaW5rIGFuZHJvaWQudmlldy5TdXJmYWNlI1JPVEFUSU9OXzkwIFN1cmZhY2UuUk9UQVRJT05fOTB9OjwvbGk+PHA+CisgICAgICoge0BsaW5rIGFuZHJvaWQudmlldy5TdXJmYWNlI1JPVEFUSU9OXzkwIFN1cmZhY2UuUk9UQVRJT05fOTB9OjwvbGk+CiAgICAgICoKLSAgICAgKiA8Y29kZT5yZW1hcENvb3JkaW5hdGVTeXN0ZW0oaW5SLCBBWElTX1ksIEFYSVNfTUlOVVNfWCwgb3V0Uik7PC9jb2RlPjxwPgorICAgICAqIDxwPgorICAgICAqIDx1bD4KKyAgICAgKiA8Y29kZT5yZW1hcENvb3JkaW5hdGVTeXN0ZW0oaW5SLCBBWElTX1ksIEFYSVNfTUlOVVNfWCwgb3V0Uik7PC9jb2RlPgorICAgICAqIDwvdWw+CisgICAgICogPC9wPgogICAgICAqCi0gICAgICogQmV3YXJlIG9mIHRoZSBhYm92ZSBleGFtcGxlLiBUaGlzIGNhbGwgaXMgbmVlZGVkIG9ubHkgdG8gYWNjb3VudCBmb3IKLSAgICAgKiBhIHJvdGF0aW9uIGZyb20gaXRzIG5hdHVyYWwgb3JpZW50YXRpb24gd2hlbiBjYWxjdWxhdGluZyB0aGUKLSAgICAgKiByb3RhdGlvbiBhbmdsZXMgKHNlZSB7QGxpbmsgI2dldE9yaWVudGF0aW9ufSkuCi0gICAgICogSWYgdGhlIHJvdGF0aW9uIG1hdHJpeCBpcyBhbHNvIHVzZWQgZm9yIHJlbmRlcmluZywgaXQgbWF5IG5vdCBuZWVkIHRvIAotICAgICAqIGJlIHRyYW5zZm9ybWVkLCBmb3IgaW5zdGFuY2UgaWYgeW91ciB7QGxpbmsgYW5kcm9pZC5hcHAuQWN0aXZpdHkKLSAgICAgKiBBY3Rpdml0eX0gaXMgcnVubmluZyBpbiBsYW5kc2NhcGUgbW9kZS4KKyAgICAgKiBCZXdhcmUgb2YgdGhlIGFib3ZlIGV4YW1wbGUuIFRoaXMgY2FsbCBpcyBuZWVkZWQgb25seSB0byBhY2NvdW50IGZvciBhCisgICAgICogcm90YXRpb24gZnJvbSBpdHMgbmF0dXJhbCBvcmllbnRhdGlvbiB3aGVuIGNhbGN1bGF0aW5nIHRoZSByb3RhdGlvbgorICAgICAqIGFuZ2xlcyAoc2VlIHtAbGluayAjZ2V0T3JpZW50YXRpb259KS4gSWYgdGhlIHJvdGF0aW9uIG1hdHJpeCBpcyBhbHNvIHVzZWQKKyAgICAgKiBmb3IgcmVuZGVyaW5nLCBpdCBtYXkgbm90IG5lZWQgdG8gYmUgdHJhbnNmb3JtZWQsIGZvciBpbnN0YW5jZSBpZiB5b3VyCisgICAgICoge0BsaW5rIGFuZHJvaWQuYXBwLkFjdGl2aXR5IEFjdGl2aXR5fSBpcyBydW5uaW5nIGluIGxhbmRzY2FwZSBtb2RlLgorICAgICAqIDwvdWw+CiAgICAgICoKLSAgICAgKiA8cD5TaW5jZSB0aGUgcmVzdWx0aW5nIGNvb3JkaW5hdGUgc3lzdGVtIGlzIG9ydGhvbm9ybWFsLCBvbmx5IHR3byBheGVzCi0gICAgICogbmVlZCB0byBiZSBzcGVjaWZpZWQuCisgICAgICogPHA+CisgICAgICogU2luY2UgdGhlIHJlc3VsdGluZyBjb29yZGluYXRlIHN5c3RlbSBpcyBvcnRob25vcm1hbCwgb25seSB0d28gYXhlcyBuZWVkCisgICAgICogdG8gYmUgc3BlY2lmaWVkLgogICAgICAqCi0gICAgICogQHBhcmFtIGluUiB0aGUgcm90YXRpb24gbWF0cml4IHRvIGJlIHRyYW5zZm9ybWVkLiBVc3VhbGx5IGl0IGlzIHRoZQotICAgICAqIG1hdHJpeCByZXR1cm5lZCBieSB7QGxpbmsgI2dldFJvdGF0aW9uTWF0cml4fS4KLSAgICAgKiBAcGFyYW0gWCBkZWZpbmVzIG9uIHdoaWNoIHdvcmxkIGF4aXMgYW5kIGRpcmVjdGlvbiB0aGUgWCBheGlzIG9mIHRoZQotICAgICAqICAgICAgICBkZXZpY2UgaXMgbWFwcGVkLgotICAgICAqIEBwYXJhbSBZIGRlZmluZXMgb24gd2hpY2ggd29ybGQgYXhpcyBhbmQgZGlyZWN0aW9uIHRoZSBZIGF4aXMgb2YgdGhlCi0gICAgICogICAgICAgIGRldmljZSBpcyBtYXBwZWQuCi0gICAgICogQHBhcmFtIG91dFIgdGhlIHRyYW5zZm9ybWVkIHJvdGF0aW9uIG1hdHJpeC4gaW5SIGFuZCBvdXRSIGNhbiBiZSB0aGUgc2FtZQorICAgICAqIEBwYXJhbSBpblIKKyAgICAgKiAgICAgICAgdGhlIHJvdGF0aW9uIG1hdHJpeCB0byBiZSB0cmFuc2Zvcm1lZC4gVXN1YWxseSBpdCBpcyB0aGUgbWF0cml4CisgICAgICogICAgICAgIHJldHVybmVkIGJ5IHtAbGluayAjZ2V0Um90YXRpb25NYXRyaXh9LgorICAgICAqCisgICAgICogQHBhcmFtIFgKKyAgICAgKiAgICAgICAgZGVmaW5lcyBvbiB3aGljaCB3b3JsZCBheGlzIGFuZCBkaXJlY3Rpb24gdGhlIFggYXhpcyBvZiB0aGUgZGV2aWNlCisgICAgICogICAgICAgIGlzIG1hcHBlZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBZCisgICAgICogICAgICAgIGRlZmluZXMgb24gd2hpY2ggd29ybGQgYXhpcyBhbmQgZGlyZWN0aW9uIHRoZSBZIGF4aXMgb2YgdGhlIGRldmljZQorICAgICAqICAgICAgICBpcyBtYXBwZWQuCisgICAgICoKKyAgICAgKiBAcGFyYW0gb3V0UgorICAgICAqICAgICAgICB0aGUgdHJhbnNmb3JtZWQgcm90YXRpb24gbWF0cml4LiBpblIgYW5kIG91dFIgY2FuIGJlIHRoZSBzYW1lCiAgICAgICogICAgICAgIGFycmF5LCBidXQgaXQgaXMgbm90IHJlY29tbWVuZGVkIGZvciBwZXJmb3JtYW5jZSByZWFzb24uCi0gICAgICogQHJldHVybiB0cnVlIG9uIHN1Y2Nlc3MuIGZhbHNlIGlmIHRoZSBpbnB1dCBwYXJhbWV0ZXJzIGFyZSBpbmNvcnJlY3QsIGZvcgotICAgICAqIGluc3RhbmNlIGlmIFggYW5kIFkgZGVmaW5lIHRoZSBzYW1lIGF4aXMuIE9yIGlmIGluUiBhbmQgb3V0UiBkb24ndCBoYXZlIAotICAgICAqIHRoZSBzYW1lIGxlbmd0aC4KKyAgICAgKgorICAgICAqIEByZXR1cm4gPGNvZGU+dHJ1ZTwvY29kZT4gb24gc3VjY2Vzcy4gPGNvZGU+ZmFsc2U8L2NvZGU+IGlmIHRoZSBpbnB1dAorICAgICAqICAgICAgICAgcGFyYW1ldGVycyBhcmUgaW5jb3JyZWN0LCBmb3IgaW5zdGFuY2UgaWYgWCBhbmQgWSBkZWZpbmUgdGhlIHNhbWUKKyAgICAgKiAgICAgICAgIGF4aXMuIE9yIGlmIGluUiBhbmQgb3V0UiBkb24ndCBoYXZlIHRoZSBzYW1lIGxlbmd0aC4KKyAgICAgKgorICAgICAqIEBzZWUgI2dldFJvdGF0aW9uTWF0cml4KGZsb2F0W10sIGZsb2F0W10sIGZsb2F0W10sIGZsb2F0W10pCiAgICAgICovCiAKICAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gcmVtYXBDb29yZGluYXRlU3lzdGVtKGZsb2F0W10gaW5SLCBpbnQgWCwgaW50IFksCkBAIC0xMzAxLDMxICsxNTE5LDQ1IEBACiAKICAgICAvKioKICAgICAgKiBDb21wdXRlcyB0aGUgZGV2aWNlJ3Mgb3JpZW50YXRpb24gYmFzZWQgb24gdGhlIHJvdGF0aW9uIG1hdHJpeC4KLSAgICAgKiA8cD4gV2hlbiBpdCByZXR1cm5zLCB0aGUgYXJyYXkgdmFsdWVzIGlzIGZpbGxlZCB3aXRoIHRoZSByZXN1bHQ6CisgICAgICogPHA+CisgICAgICogV2hlbiBpdCByZXR1cm5zLCB0aGUgYXJyYXkgdmFsdWVzIGlzIGZpbGxlZCB3aXRoIHRoZSByZXN1bHQ6CisgICAgICogPHVsPgogICAgICAqIDxsaT52YWx1ZXNbMF06IDxpPmF6aW11dGg8L2k+LCByb3RhdGlvbiBhcm91bmQgdGhlIFogYXhpcy48L2xpPgogICAgICAqIDxsaT52YWx1ZXNbMV06IDxpPnBpdGNoPC9pPiwgcm90YXRpb24gYXJvdW5kIHRoZSBYIGF4aXMuPC9saT4KICAgICAgKiA8bGk+dmFsdWVzWzJdOiA8aT5yb2xsPC9pPiwgcm90YXRpb24gYXJvdW5kIHRoZSBZIGF4aXMuPC9saT4KKyAgICAgKiA8L3VsPgorICAgICAqIDxwPgorICAgICAqIDxjZW50ZXI+PGltZyBzcmM9Ii4uLy4uLy4uL2ltYWdlcy9heGlzX2RldmljZS5wbmciCisgICAgICogYWx0PSJTZW5zb3JzIGNvb3JkaW5hdGUtc3lzdGVtIGRpYWdyYW0uIiBib3JkZXI9IjAiIC8+PC9jZW50ZXI+CisgICAgICogPC9wPgogICAgICAqIDxwPgogICAgICAqIEFsbCB0aHJlZSBhbmdsZXMgYWJvdmUgYXJlIGluIDxiPnJhZGlhbnM8L2I+IGFuZCA8Yj5wb3NpdGl2ZTwvYj4gaW4gdGhlCiAgICAgICogPGI+Y291bnRlci1jbG9ja3dpc2U8L2I+IGRpcmVjdGlvbi4KLSAgICAgKgotICAgICAqIEBwYXJhbSBSIHJvdGF0aW9uIG1hdHJpeCBzZWUge0BsaW5rICNnZXRSb3RhdGlvbk1hdHJpeH0uCi0gICAgICogQHBhcmFtIHZhbHVlcyBhbiBhcnJheSBvZiAzIGZsb2F0cyB0byBob2xkIHRoZSByZXN1bHQuCisgICAgICogCisgICAgICogQHBhcmFtIFIKKyAgICAgKiAgICAgICAgcm90YXRpb24gbWF0cml4IHNlZSB7QGxpbmsgI2dldFJvdGF0aW9uTWF0cml4fS4KKyAgICAgKiAKKyAgICAgKiBAcGFyYW0gdmFsdWVzCisgICAgICogICAgICAgIGFuIGFycmF5IG9mIDMgZmxvYXRzIHRvIGhvbGQgdGhlIHJlc3VsdC4KKyAgICAgKiAKICAgICAgKiBAcmV0dXJuIFRoZSBhcnJheSB2YWx1ZXMgcGFzc2VkIGFzIGFyZ3VtZW50LgorICAgICAqIAorICAgICAqIEBzZWUgI2dldFJvdGF0aW9uTWF0cml4KGZsb2F0W10sIGZsb2F0W10sIGZsb2F0W10sIGZsb2F0W10pCisgICAgICogQHNlZSBHZW9tYWduZXRpY0ZpZWxkCiAgICAgICovCi0gICAgcHVibGljIHN0YXRpYyBmbG9hdFtdIGdldE9yaWVudGF0aW9uKGZsb2F0W10gUiwgZmxvYXQgdmFsdWVzW10pIHsKKyAgIHB1YmxpYyBzdGF0aWMgZmxvYXRbXSBnZXRPcmllbnRhdGlvbihmbG9hdFtdIFIsIGZsb2F0IHZhbHVlc1tdKSB7CiAgICAgICAgIC8qCiAgICAgICAgICAqIDR4NCAobGVuZ3RoPTE2KSBjYXNlOgogICAgICAgICAgKiAgIC8gIFJbIDBdICAgUlsgMV0gICBSWyAyXSAgIDAgIFwKICAgICAgICAgICogICB8ICBSWyA0XSAgIFJbIDVdICAgUlsgNl0gICAwICB8CiAgICAgICAgICAqICAgfCAgUlsgOF0gICBSWyA5XSAgIFJbMTBdICAgMCAgfAogICAgICAgICAgKiAgIFwgICAgICAwICAgICAgIDAgICAgICAgMCAgIDEgIC8KLSAgICAgICAgICogICAKKyAgICAgICAgICoKICAgICAgICAgICogM3gzIChsZW5ndGg9OSkgY2FzZToKICAgICAgICAgICogICAvICBSWyAwXSAgIFJbIDFdICAgUlsgMl0gIFwKICAgICAgICAgICogICB8ICBSWyAzXSAgIFJbIDRdICAgUlsgNV0gIHwKICAgICAgICAgICogICBcICBSWyA2XSAgIFJbIDddICAgUlsgOF0gIC8KLSAgICAgICAgICogCisgICAgICAgICAqCiAgICAgICAgICAqLwogICAgICAgICBpZiAoUi5sZW5ndGggPT0gOSkgewogICAgICAgICAgICAgdmFsdWVzWzBdID0gKGZsb2F0KU1hdGguYXRhbjIoUlsxXSwgUls0XSk7CkBAIC0xNDg3LDcgKzE3MTksNyBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIAorCiAgICAgY2xhc3MgTG1zRmlsdGVyIHsKICAgICAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFNFTlNPUlNfUkFURV9NUyA9IDIwOwogICAgICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ09VTlQgPSAxMjsKQEAgLTE1NTUsNyArMTc4Nyw3IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICAKKwogICAgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSB2b2lkIG5hdGl2ZUNsYXNzSW5pdCgpOwogCiAgICAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIGludCBzZW5zb3JzX21vZHVsZV9pbml0KCk7CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9oYXJkd2FyZS9Vc2IuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL2hhcmR3YXJlL1VzYi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3MjcxZDQKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9oYXJkd2FyZS9Vc2IuamF2YQpAQCAtMCwwICsxLDk5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworCitwYWNrYWdlIGFuZHJvaWQuaGFyZHdhcmU7CisKKy8qKgorICogQ2xhc3MgZm9yIGFjY2Vzc2luZyBVU0Igc3RhdGUgaW5mb3JtYXRpb24uCisgKiBAaGlkZQorICovCitwdWJsaWMgY2xhc3MgVXNiIHsKKyAgIC8qKgorICAgICAqIEJyb2FkY2FzdCBBY3Rpb246ICBBIGJyb2FkY2FzdCBmb3IgVVNCIGNvbm5lY3RlZCBldmVudHMuCisgICAgICoKKyAgICAgKiBUaGUgZXh0cmFzIGJ1bmRsZSB3aWxsIG5hbWUvdmFsdWUgcGFpcnMgd2l0aCB0aGUgbmFtZSBvZiB0aGUgZnVuY3Rpb24KKyAgICAgKiBhbmQgYSB2YWx1ZSBvZiBlaXRoZXIge0BsaW5rICNVU0JfRlVOQ1RJT05fRU5BQkxFRH0gb3Ige0BsaW5rICNVU0JfRlVOQ1RJT05fRElTQUJMRUR9LgorICAgICAqIFBvc3NpYmxlIFVTQiBmdW5jdGlvbiBuYW1lcyBpbmNsdWRlIHtAbGluayAjVVNCX0ZVTkNUSU9OX01BU1NfU1RPUkFHRX0sCisgICAgICoge0BsaW5rICNVU0JfRlVOQ1RJT05fQURCfSwge0BsaW5rICNVU0JfRlVOQ1RJT05fUk5ESVN9IGFuZCB7QGxpbmsgI1VTQl9GVU5DVElPTl9NVFB9LgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFDVElPTl9VU0JfQ09OTkVDVEVEID0KKyAgICAgICAgICAgICJhbmRyb2lkLmhhcmR3YXJlLmFjdGlvbi5VU0JfQ09OTkVDVEVEIjsKKworICAgLyoqCisgICAgICogQnJvYWRjYXN0IEFjdGlvbjogIEEgYnJvYWRjYXN0IGZvciBVU0IgZGlzY29ubmVjdGVkIGV2ZW50cy4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBQ1RJT05fVVNCX0RJU0NPTk5FQ1RFRCA9CisgICAgICAgICAgICAiYW5kcm9pZC5oYXJkd2FyZS5hY3Rpb24uVVNCX0RJU0NPTk5FQ1RFRCI7CisKKyAgIC8qKgorICAgICAqIEJyb2FkY2FzdCBBY3Rpb246ICBBIHN0aWNreSBicm9hZGNhc3QgZm9yIFVTQiBzdGF0ZSBjaGFuZ2UgZXZlbnRzLgorICAgICAqCisgICAgICogVGhpcyBpcyBhIHN0aWNreSBicm9hZGNhc3QgZm9yIGNsaWVudHMgdGhhdCBhcmUgaW50ZXJlc3RlZCBpbiBib3RoIFVTQiBjb25uZWN0IGFuZAorICAgICAqIGRpc2Nvbm5lY3QgZXZlbnRzLiAgSWYgeW91IGFyZSBvbmx5IGNvbmNlcm5lZCB3aXRoIG9uZSBvciB0aGUgb3RoZXIsIHlvdSBjYW4gdXNlCisgICAgICoge0BsaW5rICNBQ1RJT05fVVNCX0NPTk5FQ1RFRH0gb3Ige0BsaW5rICNBQ1RJT05fVVNCX0RJU0NPTk5FQ1RFRH0gdG8gYXZvaWQgcmVjZWl2aW5nCisgICAgICogdW5uZWNlc3NhcnkgYnJvYWRjYXN0cy4gIFRoZSBib29sZWFuIHtAbGluayAjVVNCX0NPTk5FQ1RFRH0gZXh0cmEgaW5kaWNhdGVzIHdoZXRoZXIKKyAgICAgKiBVU0IgaXMgY29ubmVjdGVkIG9yIGRpc2Nvbm5lY3RlZC4KKyAgICAgKiBUaGUgZXh0cmFzIGJ1bmRsZSB3aWxsIGFsc28gY29udGFpbiBuYW1lL3ZhbHVlIHBhaXJzIHdpdGggdGhlIG5hbWUgb2YgdGhlIGZ1bmN0aW9uCisgICAgICogYW5kIGEgdmFsdWUgb2YgZWl0aGVyIHtAbGluayAjVVNCX0ZVTkNUSU9OX0VOQUJMRUR9IG9yIHtAbGluayAjVVNCX0ZVTkNUSU9OX0RJU0FCTEVEfS4KKyAgICAgKiBQb3NzaWJsZSBVU0IgZnVuY3Rpb24gbmFtZXMgaW5jbHVkZSB7QGxpbmsgI1VTQl9GVU5DVElPTl9NQVNTX1NUT1JBR0V9LAorICAgICAqIHtAbGluayAjVVNCX0ZVTkNUSU9OX0FEQn0sIHtAbGluayAjVVNCX0ZVTkNUSU9OX1JORElTfSBhbmQge0BsaW5rICNVU0JfRlVOQ1RJT05fTVRQfS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBQ1RJT05fVVNCX1NUQVRFID0KKyAgICAgICAgICAgICJhbmRyb2lkLmhhcmR3YXJlLmFjdGlvbi5VU0JfU1RBVEUiOworCisgICAgLyoqCisgICAgICogQm9vbGVhbiBleHRyYSBpbmRpY2F0aW5nIHdoZXRoZXIgVVNCIGlzIGNvbm5lY3RlZCBvciBkaXNjb25uZWN0ZWQuCisgICAgICogVXNlZCBpbiBleHRyYXMgZm9yIHRoZSB7QGxpbmsgI0FDVElPTl9VU0JfU1RBVEV9IGJyb2FkY2FzdC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBVU0JfQ09OTkVDVEVEID0gImNvbm5lY3RlZCI7CisKKyAgICAvKioKKyAgICAgKiBOYW1lIG9mIHRoZSBVU0IgbWFzcyBzdG9yYWdlIFVTQiBmdW5jdGlvbi4KKyAgICAgKiBVc2VkIGluIGV4dHJhcyBmb3IgdGhlIHtAbGluayAjQUNUSU9OX1VTQl9DT05ORUNURUR9IGJyb2FkY2FzdAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFVTQl9GVU5DVElPTl9NQVNTX1NUT1JBR0UgPSAibWFzc19zdG9yYWdlIjsKKworICAgIC8qKgorICAgICAqIE5hbWUgb2YgdGhlIGFkYiBVU0IgZnVuY3Rpb24uCisgICAgICogVXNlZCBpbiBleHRyYXMgZm9yIHRoZSB7QGxpbmsgI0FDVElPTl9VU0JfQ09OTkVDVEVEfSBicm9hZGNhc3QKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBVU0JfRlVOQ1RJT05fQURCID0gImFkYiI7CisKKyAgICAvKioKKyAgICAgKiBOYW1lIG9mIHRoZSBSTkRJUyBldGhlcm5ldCBVU0IgZnVuY3Rpb24uCisgICAgICogVXNlZCBpbiBleHRyYXMgZm9yIHRoZSB7QGxpbmsgI0FDVElPTl9VU0JfQ09OTkVDVEVEfSBicm9hZGNhc3QKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBVU0JfRlVOQ1RJT05fUk5ESVMgPSAicm5kaXMiOworCisgICAgLyoqCisgICAgICogTmFtZSBvZiB0aGUgTVRQIFVTQiBmdW5jdGlvbi4KKyAgICAgKiBVc2VkIGluIGV4dHJhcyBmb3IgdGhlIHtAbGluayAjQUNUSU9OX1VTQl9DT05ORUNURUR9IGJyb2FkY2FzdAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFVTQl9GVU5DVElPTl9NVFAgPSAibXRwIjsKKworICAgIC8qKgorICAgICAqIFZhbHVlIGluZGljYXRpbmcgdGhhdCBhIFVTQiBmdW5jdGlvbiBpcyBlbmFibGVkLgorICAgICAqIFVzZWQgaW4gZXh0cmFzIGZvciB0aGUge0BsaW5rICNBQ1RJT05fVVNCX0NPTk5FQ1RFRH0gYnJvYWRjYXN0CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVVNCX0ZVTkNUSU9OX0VOQUJMRUQgPSAiZW5hYmxlZCI7CisKKyAgICAvKioKKyAgICAgKiBWYWx1ZSBpbmRpY2F0aW5nIHRoYXQgYSBVU0IgZnVuY3Rpb24gaXMgZGlzYWJsZWQuCisgICAgICogVXNlZCBpbiBleHRyYXMgZm9yIHRoZSB7QGxpbmsgI0FDVElPTl9VU0JfQ09OTkVDVEVEfSBicm9hZGNhc3QKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBVU0JfRlVOQ1RJT05fRElTQUJMRUQgPSAiZGlzYWJsZWQiOworfQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvaW5wdXRtZXRob2RzZXJ2aWNlL0lJbnB1dE1ldGhvZFNlc3Npb25XcmFwcGVyLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9pbnB1dG1ldGhvZHNlcnZpY2UvSUlucHV0TWV0aG9kU2Vzc2lvbldyYXBwZXIuamF2YQppbmRleCA4MGU5ODY1Li40NGYzMGY3IDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9pbnB1dG1ldGhvZHNlcnZpY2UvSUlucHV0TWV0aG9kU2Vzc2lvbldyYXBwZXIuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9pbnB1dG1ldGhvZHNlcnZpY2UvSUlucHV0TWV0aG9kU2Vzc2lvbldyYXBwZXIuamF2YQpAQCAtNDcsOSArNDcsMTAgQEAKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRE9fVVBEQVRFX0NVUlNPUiA9IDk1OwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBET19BUFBfUFJJVkFURV9DT01NQU5EID0gMTAwOwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBET19UT0dHTEVfU09GVF9JTlBVVCA9IDEwNTsKLSAgIAotICAgIGZpbmFsIEhhbmRsZXJDYWxsZXIgbUNhbGxlcjsKLSAgICBmaW5hbCBJbnB1dE1ldGhvZFNlc3Npb24gbUlucHV0TWV0aG9kU2Vzc2lvbjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRE9fRklOSVNIX1NFU1NJT04gPSAxMTA7CisKKyAgICBIYW5kbGVyQ2FsbGVyIG1DYWxsZXI7CisgICAgSW5wdXRNZXRob2RTZXNzaW9uIG1JbnB1dE1ldGhvZFNlc3Npb247CiAgICAgCiAgICAgLy8gTk9URTogd2Ugc2hvdWxkIGhhdmUgYSBjYWNoZSBvZiB0aGVzZS4KICAgICBzdGF0aWMgY2xhc3MgSW5wdXRNZXRob2RFdmVudENhbGxiYWNrV3JhcHBlciBpbXBsZW1lbnRzIElucHV0TWV0aG9kU2Vzc2lvbi5FdmVudENhbGxiYWNrIHsKQEAgLTEyNyw2ICsxMjgsMTAgQEAKICAgICAgICAgICAgICAgICBtSW5wdXRNZXRob2RTZXNzaW9uLnRvZ2dsZVNvZnRJbnB1dChtc2cuYXJnMSwgbXNnLmFyZzIpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgRE9fRklOSVNIX1NFU1NJT046IHsKKyAgICAgICAgICAgICAgICBtSW5wdXRNZXRob2RTZXNzaW9uID0gbnVsbDsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgTG9nLncoVEFHLCAiVW5oYW5kbGVkIG1lc3NhZ2UgY29kZTogIiArIG1zZy53aGF0KTsKICAgICB9CkBAIC0xNzQsNCArMTc5LDggQEAKICAgICBwdWJsaWMgdm9pZCB0b2dnbGVTb2Z0SW5wdXQoaW50IHNob3dGbGFncywgaW50IGhpZGVGbGFncykgewogICAgICAgICBtQ2FsbGVyLmV4ZWN1dGVPclNlbmRNZXNzYWdlKG1DYWxsZXIub2J0YWluTWVzc2FnZUlJKERPX1RPR0dMRV9TT0ZUX0lOUFVULCBzaG93RmxhZ3MsIGhpZGVGbGFncykpOwogICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGZpbmlzaFNlc3Npb24oKSB7CisgICAgICAgIG1DYWxsZXIuZXhlY3V0ZU9yU2VuZE1lc3NhZ2UobUNhbGxlci5vYnRhaW5NZXNzYWdlKERPX0ZJTklTSF9TRVNTSU9OKSk7CisgICAgfQogfQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvaW5wdXRtZXRob2RzZXJ2aWNlL0lJbnB1dE1ldGhvZFdyYXBwZXIuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL2lucHV0bWV0aG9kc2VydmljZS9JSW5wdXRNZXRob2RXcmFwcGVyLmphdmEKaW5kZXggYmZhODJlZS4uMzVmZDQ2ZiAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvaW5wdXRtZXRob2RzZXJ2aWNlL0lJbnB1dE1ldGhvZFdyYXBwZXIuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9pbnB1dG1ldGhvZHNlcnZpY2UvSUlucHV0TWV0aG9kV3JhcHBlci5qYXZhCkBAIC0zOSw2ICszOSw3IEBACiAKIGltcG9ydCBqYXZhLmlvLkZpbGVEZXNjcmlwdG9yOwogaW1wb3J0IGphdmEuaW8uUHJpbnRXcml0ZXI7CitpbXBvcnQgamF2YS5sYW5nLnJlZi5XZWFrUmVmZXJlbmNlOwogaW1wb3J0IGphdmEudXRpbC5jb25jdXJyZW50LkNvdW50RG93bkxhdGNoOwogaW1wb3J0IGphdmEudXRpbC5jb25jdXJyZW50LlRpbWVVbml0OwogCkBAIC02NCw5ICs2NSw5IEBACiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IERPX1NIT1dfU09GVF9JTlBVVCA9IDYwOwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBET19ISURFX1NPRlRfSU5QVVQgPSA3MDsKICAgIAotICAgIGZpbmFsIEFic3RyYWN0SW5wdXRNZXRob2RTZXJ2aWNlIG1UYXJnZXQ7CisgICAgZmluYWwgV2Vha1JlZmVyZW5jZTxBYnN0cmFjdElucHV0TWV0aG9kU2VydmljZT4gbVRhcmdldDsKICAgICBmaW5hbCBIYW5kbGVyQ2FsbGVyIG1DYWxsZXI7Ci0gICAgZmluYWwgSW5wdXRNZXRob2QgbUlucHV0TWV0aG9kOworICAgIGZpbmFsIFdlYWtSZWZlcmVuY2U8SW5wdXRNZXRob2Q+IG1JbnB1dE1ldGhvZDsKICAgICAKICAgICBzdGF0aWMgY2xhc3MgTm90aWZpZXIgewogICAgICAgICBib29sZWFuIG5vdGlmaWVkOwpAQCAtOTYsMjEgKzk3LDMyIEBACiAgICAgCiAgICAgcHVibGljIElJbnB1dE1ldGhvZFdyYXBwZXIoQWJzdHJhY3RJbnB1dE1ldGhvZFNlcnZpY2UgY29udGV4dCwKICAgICAgICAgICAgIElucHV0TWV0aG9kIGlucHV0TWV0aG9kKSB7Ci0gICAgICAgIG1UYXJnZXQgPSBjb250ZXh0OwotICAgICAgICBtQ2FsbGVyID0gbmV3IEhhbmRsZXJDYWxsZXIoY29udGV4dCwgdGhpcyk7Ci0gICAgICAgIG1JbnB1dE1ldGhvZCA9IGlucHV0TWV0aG9kOworICAgICAgICBtVGFyZ2V0ID0gbmV3IFdlYWtSZWZlcmVuY2U8QWJzdHJhY3RJbnB1dE1ldGhvZFNlcnZpY2U+KGNvbnRleHQpOworICAgICAgICBtQ2FsbGVyID0gbmV3IEhhbmRsZXJDYWxsZXIoY29udGV4dC5nZXRBcHBsaWNhdGlvbkNvbnRleHQoKSwgdGhpcyk7CisgICAgICAgIG1JbnB1dE1ldGhvZCA9IG5ldyBXZWFrUmVmZXJlbmNlPElucHV0TWV0aG9kPihpbnB1dE1ldGhvZCk7CiAgICAgfQogCiAgICAgcHVibGljIElucHV0TWV0aG9kIGdldEludGVybmFsSW5wdXRNZXRob2QoKSB7Ci0gICAgICAgIHJldHVybiBtSW5wdXRNZXRob2Q7CisgICAgICAgIHJldHVybiBtSW5wdXRNZXRob2QuZ2V0KCk7CiAgICAgfQogCiAgICAgcHVibGljIHZvaWQgZXhlY3V0ZU1lc3NhZ2UoTWVzc2FnZSBtc2cpIHsKKyAgICAgICAgSW5wdXRNZXRob2QgaW5wdXRNZXRob2QgPSBtSW5wdXRNZXRob2QuZ2V0KCk7CisgICAgICAgIC8vIE5lZWQgYSB2YWxpZCByZWZlcmVuY2UgdG8gdGhlIGlucHV0TWV0aG9kIGZvciBldmVyeXRoaW5nIGV4Y2VwdCBhIGR1bXAuCisgICAgICAgIGlmIChpbnB1dE1ldGhvZCA9PSBudWxsICYmIG1zZy53aGF0ICE9IERPX0RVTVApIHsKKyAgICAgICAgICAgIExvZy53KFRBRywgIklucHV0IG1ldGhvZCByZWZlcmVuY2Ugd2FzIG51bGwsIGlnbm9yaW5nIG1lc3NhZ2U6ICIgKyBtc2cud2hhdCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwogICAgICAgICBzd2l0Y2ggKG1zZy53aGF0KSB7CiAgICAgICAgICAgICBjYXNlIERPX0RVTVA6IHsKKyAgICAgICAgICAgICAgICBBYnN0cmFjdElucHV0TWV0aG9kU2VydmljZSB0YXJnZXQgPSBtVGFyZ2V0LmdldCgpOworICAgICAgICAgICAgICAgIGlmICh0YXJnZXQgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIEhhbmRsZXJDYWxsZXIuU29tZUFyZ3MgYXJncyA9IChIYW5kbGVyQ2FsbGVyLlNvbWVBcmdzKW1zZy5vYmo7CiAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgbVRhcmdldC5kdW1wKChGaWxlRGVzY3JpcHRvcilhcmdzLmFyZzEsCisgICAgICAgICAgICAgICAgICAgIHRhcmdldC5kdW1wKChGaWxlRGVzY3JpcHRvcilhcmdzLmFyZzEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFByaW50V3JpdGVyKWFyZ3MuYXJnMiwgKFN0cmluZ1tdKWFyZ3MuYXJnMyk7CiAgICAgICAgICAgICAgICAgfSBjYXRjaCAoUnVudGltZUV4Y2VwdGlvbiBlKSB7CiAgICAgICAgICAgICAgICAgICAgICgoUHJpbnRXcml0ZXIpYXJncy5hcmcyKS5wcmludGxuKCJFeGNlcHRpb246ICIgKyBlKTsKQEAgLTEyMiwyMiArMTM0LDIyIEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGNhc2UgRE9fQVRUQUNIX1RPS0VOOiB7Ci0gICAgICAgICAgICAgICAgbUlucHV0TWV0aG9kLmF0dGFjaFRva2VuKChJQmluZGVyKW1zZy5vYmopOworICAgICAgICAgICAgICAgIGlucHV0TWV0aG9kLmF0dGFjaFRva2VuKChJQmluZGVyKW1zZy5vYmopOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2UgRE9fU0VUX0lOUFVUX0NPTlRFWFQ6IHsKLSAgICAgICAgICAgICAgICBtSW5wdXRNZXRob2QuYmluZElucHV0KChJbnB1dEJpbmRpbmcpbXNnLm9iaik7CisgICAgICAgICAgICAgICAgaW5wdXRNZXRob2QuYmluZElucHV0KChJbnB1dEJpbmRpbmcpbXNnLm9iaik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBET19VTlNFVF9JTlBVVF9DT05URVhUOgotICAgICAgICAgICAgICAgIG1JbnB1dE1ldGhvZC51bmJpbmRJbnB1dCgpOworICAgICAgICAgICAgICAgIGlucHV0TWV0aG9kLnVuYmluZElucHV0KCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgY2FzZSBET19TVEFSVF9JTlBVVDogewogICAgICAgICAgICAgICAgIEhhbmRsZXJDYWxsZXIuU29tZUFyZ3MgYXJncyA9IChIYW5kbGVyQ2FsbGVyLlNvbWVBcmdzKW1zZy5vYmo7CiAgICAgICAgICAgICAgICAgSUlucHV0Q29udGV4dCBpbnB1dENvbnRleHQgPSAoSUlucHV0Q29udGV4dClhcmdzLmFyZzE7CiAgICAgICAgICAgICAgICAgSW5wdXRDb25uZWN0aW9uIGljID0gaW5wdXRDb250ZXh0ICE9IG51bGwKICAgICAgICAgICAgICAgICAgICAgICAgID8gbmV3IElucHV0Q29ubmVjdGlvbldyYXBwZXIoaW5wdXRDb250ZXh0KSA6IG51bGw7Ci0gICAgICAgICAgICAgICAgbUlucHV0TWV0aG9kLnN0YXJ0SW5wdXQoaWMsIChFZGl0b3JJbmZvKWFyZ3MuYXJnMik7CisgICAgICAgICAgICAgICAgaW5wdXRNZXRob2Quc3RhcnRJbnB1dChpYywgKEVkaXRvckluZm8pYXJncy5hcmcyKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIERPX1JFU1RBUlRfSU5QVVQ6IHsKQEAgLTE0NSwzMyArMTU3LDM3IEBACiAgICAgICAgICAgICAgICAgSUlucHV0Q29udGV4dCBpbnB1dENvbnRleHQgPSAoSUlucHV0Q29udGV4dClhcmdzLmFyZzE7CiAgICAgICAgICAgICAgICAgSW5wdXRDb25uZWN0aW9uIGljID0gaW5wdXRDb250ZXh0ICE9IG51bGwKICAgICAgICAgICAgICAgICAgICAgICAgID8gbmV3IElucHV0Q29ubmVjdGlvbldyYXBwZXIoaW5wdXRDb250ZXh0KSA6IG51bGw7Ci0gICAgICAgICAgICAgICAgbUlucHV0TWV0aG9kLnJlc3RhcnRJbnB1dChpYywgKEVkaXRvckluZm8pYXJncy5hcmcyKTsKKyAgICAgICAgICAgICAgICBpbnB1dE1ldGhvZC5yZXN0YXJ0SW5wdXQoaWMsIChFZGl0b3JJbmZvKWFyZ3MuYXJnMik7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBET19DUkVBVEVfU0VTU0lPTjogewotICAgICAgICAgICAgICAgIG1JbnB1dE1ldGhvZC5jcmVhdGVTZXNzaW9uKG5ldyBJbnB1dE1ldGhvZFNlc3Npb25DYWxsYmFja1dyYXBwZXIoCisgICAgICAgICAgICAgICAgaW5wdXRNZXRob2QuY3JlYXRlU2Vzc2lvbihuZXcgSW5wdXRNZXRob2RTZXNzaW9uQ2FsbGJhY2tXcmFwcGVyKAogICAgICAgICAgICAgICAgICAgICAgICAgbUNhbGxlci5tQ29udGV4dCwgKElJbnB1dE1ldGhvZENhbGxiYWNrKW1zZy5vYmopKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIERPX1NFVF9TRVNTSU9OX0VOQUJMRUQ6Ci0gICAgICAgICAgICAgICAgbUlucHV0TWV0aG9kLnNldFNlc3Npb25FbmFibGVkKChJbnB1dE1ldGhvZFNlc3Npb24pbXNnLm9iaiwKKyAgICAgICAgICAgICAgICBpbnB1dE1ldGhvZC5zZXRTZXNzaW9uRW5hYmxlZCgoSW5wdXRNZXRob2RTZXNzaW9uKW1zZy5vYmosCiAgICAgICAgICAgICAgICAgICAgICAgICBtc2cuYXJnMSAhPSAwKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBjYXNlIERPX1JFVk9LRV9TRVNTSU9OOgotICAgICAgICAgICAgICAgIG1JbnB1dE1ldGhvZC5yZXZva2VTZXNzaW9uKChJbnB1dE1ldGhvZFNlc3Npb24pbXNnLm9iaik7CisgICAgICAgICAgICAgICAgaW5wdXRNZXRob2QucmV2b2tlU2Vzc2lvbigoSW5wdXRNZXRob2RTZXNzaW9uKW1zZy5vYmopOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGNhc2UgRE9fU0hPV19TT0ZUX0lOUFVUOgotICAgICAgICAgICAgICAgIG1JbnB1dE1ldGhvZC5zaG93U29mdElucHV0KG1zZy5hcmcxLCAoUmVzdWx0UmVjZWl2ZXIpbXNnLm9iaik7CisgICAgICAgICAgICAgICAgaW5wdXRNZXRob2Quc2hvd1NvZnRJbnB1dChtc2cuYXJnMSwgKFJlc3VsdFJlY2VpdmVyKW1zZy5vYmopOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIGNhc2UgRE9fSElERV9TT0ZUX0lOUFVUOgotICAgICAgICAgICAgICAgIG1JbnB1dE1ldGhvZC5oaWRlU29mdElucHV0KG1zZy5hcmcxLCAoUmVzdWx0UmVjZWl2ZXIpbXNnLm9iaik7CisgICAgICAgICAgICAgICAgaW5wdXRNZXRob2QuaGlkZVNvZnRJbnB1dChtc2cuYXJnMSwgKFJlc3VsdFJlY2VpdmVyKW1zZy5vYmopOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBMb2cudyhUQUcsICJVbmhhbmRsZWQgbWVzc2FnZSBjb2RlOiAiICsgbXNnLndoYXQpOwogICAgIH0KICAgICAKICAgICBAT3ZlcnJpZGUgcHJvdGVjdGVkIHZvaWQgZHVtcChGaWxlRGVzY3JpcHRvciBmZCwgUHJpbnRXcml0ZXIgZm91dCwgU3RyaW5nW10gYXJncykgewotICAgICAgICBpZiAobVRhcmdldC5jaGVja0NhbGxpbmdPclNlbGZQZXJtaXNzaW9uKGFuZHJvaWQuTWFuaWZlc3QucGVybWlzc2lvbi5EVU1QKQorICAgICAgICBBYnN0cmFjdElucHV0TWV0aG9kU2VydmljZSB0YXJnZXQgPSBtVGFyZ2V0LmdldCgpOworICAgICAgICBpZiAodGFyZ2V0ID09IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAodGFyZ2V0LmNoZWNrQ2FsbGluZ09yU2VsZlBlcm1pc3Npb24oYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uLkRVTVApCiAgICAgICAgICAgICAgICAgIT0gUGFja2FnZU1hbmFnZXIuUEVSTUlTU0lPTl9HUkFOVEVEKSB7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZvdXQucHJpbnRsbigiUGVybWlzc2lvbiBEZW5pYWw6IGNhbid0IGR1bXAgSW5wdXRNZXRob2RNYW5hZ2VyIGZyb20gZnJvbSBwaWQ9IgpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvaW5wdXRtZXRob2RzZXJ2aWNlL0lucHV0TWV0aG9kU2VydmljZS5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvaW5wdXRtZXRob2RzZXJ2aWNlL0lucHV0TWV0aG9kU2VydmljZS5qYXZhCmluZGV4IDhjOGQzZTUuLjFhMjYxZDMgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL2lucHV0bWV0aG9kc2VydmljZS9JbnB1dE1ldGhvZFNlcnZpY2UuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9pbnB1dG1ldGhvZHNlcnZpY2UvSW5wdXRNZXRob2RTZXJ2aWNlLmphdmEKQEAgLTE5ODgsMTUgKzE5ODgsMTkgQEAKICAgICAgICAgICAgICAgICBlaS5pbnB1dFR5cGUgIT0gSW5wdXRUeXBlLlRZUEVfTlVMTCk7CiAgICAgICAgIGlmIChoYXNBY3Rpb24pIHsKICAgICAgICAgICAgIG1FeHRyYWN0QWNjZXNzb3JpZXMuc2V0VmlzaWJpbGl0eShWaWV3LlZJU0lCTEUpOwotICAgICAgICAgICAgaWYgKGVpLmFjdGlvbkxhYmVsICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBtRXh0cmFjdEFjdGlvbi5zZXRUZXh0KGVpLmFjdGlvbkxhYmVsKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbUV4dHJhY3RBY3Rpb24uc2V0VGV4dChnZXRUZXh0Rm9ySW1lQWN0aW9uKGVpLmltZU9wdGlvbnMpKTsKKyAgICAgICAgICAgIGlmIChtRXh0cmFjdEFjdGlvbiAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgaWYgKGVpLmFjdGlvbkxhYmVsICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgbUV4dHJhY3RBY3Rpb24uc2V0VGV4dChlaS5hY3Rpb25MYWJlbCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbUV4dHJhY3RBY3Rpb24uc2V0VGV4dChnZXRUZXh0Rm9ySW1lQWN0aW9uKGVpLmltZU9wdGlvbnMpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbUV4dHJhY3RBY3Rpb24uc2V0T25DbGlja0xpc3RlbmVyKG1BY3Rpb25DbGlja0xpc3RlbmVyKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1FeHRyYWN0QWN0aW9uLnNldE9uQ2xpY2tMaXN0ZW5lcihtQWN0aW9uQ2xpY2tMaXN0ZW5lcik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtRXh0cmFjdEFjY2Vzc29yaWVzLnNldFZpc2liaWxpdHkoVmlldy5HT05FKTsKLSAgICAgICAgICAgIG1FeHRyYWN0QWN0aW9uLnNldE9uQ2xpY2tMaXN0ZW5lcihudWxsKTsKKyAgICAgICAgICAgIGlmIChtRXh0cmFjdEFjdGlvbiAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgbUV4dHJhY3RBY3Rpb24uc2V0T25DbGlja0xpc3RlbmVyKG51bGwpOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvbmV0L01vYmlsZURhdGFTdGF0ZVRyYWNrZXIuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL25ldC9Nb2JpbGVEYXRhU3RhdGVUcmFja2VyLmphdmEKaW5kZXggOThmMzJiMy4uMjE0NTEwZCAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvbmV0L01vYmlsZURhdGFTdGF0ZVRyYWNrZXIuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9uZXQvTW9iaWxlRGF0YVN0YXRlVHJhY2tlci5qYXZhCkBAIC0zMTAsNiArMzEwLDkgQEAKICAgICAgICAgY2FzZSBUZWxlcGhvbnlNYW5hZ2VyLk5FVFdPUktfVFlQRV9FVkRPX0E6CiAgICAgICAgICAgICBuZXR3b3JrVHlwZVN0ciA9ICJldmRvIjsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRlbGVwaG9ueU1hbmFnZXIuTkVUV09SS19UWVBFX0VWRE9fQjoKKyAgICAgICAgICAgIG5ldHdvcmtUeXBlU3RyID0gImV2ZG8iOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuICJuZXQudGNwLmJ1ZmZlcnNpemUuIiArIG5ldHdvcmtUeXBlU3RyOwogICAgIH0KZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL29zL0JhdHRlcnlTdGF0cy5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvb3MvQmF0dGVyeVN0YXRzLmphdmEKaW5kZXggZDExNGJmZi4uZTNmM2I4NyAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvb3MvQmF0dGVyeVN0YXRzLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvb3MvQmF0dGVyeVN0YXRzLmphdmEKQEAgLTUxLDU3ICs1MSw0MyBAQAogICAgIAogICAgIC8qKgogICAgICAqIEEgY29uc3RhbnQgaW5kaWNhdGluZyBhIHNlbnNvciB0aW1lci4KLSAgICAgKiAKLSAgICAgKiB7QGhpZGV9CiAgICAgICovCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0VOU09SID0gMzsKICAgICAKICAgICAvKioKICAgICAgKiBBIGNvbnN0YW50IGluZGljYXRpbmcgYSBhIHdpZmkgdHVybiBvbiB0aW1lcgotICAgICAqCi0gICAgICoge0BoaWRlfQogICAgICAqLwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFdJRklfVFVSTkVEX09OID0gNDsKICAgICAKICAgICAvKioKICAgICAgKiBBIGNvbnN0YW50IGluZGljYXRpbmcgYSBmdWxsIHdpZmkgbG9jayB0aW1lcgotICAgICAqCi0gICAgICoge0BoaWRlfQogICAgICAqLwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZVTExfV0lGSV9MT0NLID0gNTsKICAgICAKICAgICAvKioKICAgICAgKiBBIGNvbnN0YW50IGluZGljYXRpbmcgYSBzY2FuIHdpZmkgbG9jayB0aW1lcgotICAgICAqCi0gICAgICoge0BoaWRlfQogICAgICAqLwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNDQU5fV0lGSV9MT0NLID0gNjsKIAogICAgICAvKioKICAgICAgICogQSBjb25zdGFudCBpbmRpY2F0aW5nIGEgd2lmaSBtdWx0aWNhc3QgdGltZXIKLSAgICAgICoKLSAgICAgICoge0BoaWRlfQogICAgICAgKi8KICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgV0lGSV9NVUxUSUNBU1RfRU5BQkxFRCA9IDc7CiAKICAgICAvKioKICAgICAgKiBBIGNvbnN0YW50IGluZGljYXRpbmcgYW4gYXVkaW8gdHVybiBvbiB0aW1lcgotICAgICAqCi0gICAgICoge0BoaWRlfQogICAgICAqLwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFVRElPX1RVUk5FRF9PTiA9IDc7CiAKICAgICAvKioKICAgICAgKiBBIGNvbnN0YW50IGluZGljYXRpbmcgYSB2aWRlbyB0dXJuIG9uIHRpbWVyCi0gICAgICoKLSAgICAgKiB7QGhpZGV9CiAgICAgICovCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVklERU9fVFVSTkVEX09OID0gODsKIAogICAgIC8qKgogICAgICAqIEluY2x1ZGUgYWxsIG9mIHRoZSBkYXRhIGluIHRoZSBzdGF0cywgaW5jbHVkaW5nIHByZXZpb3VzbHkgc2F2ZWQgZGF0YS4KICAgICAgKi8KLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTVEFUU19UT1RBTCA9IDA7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1RBVFNfU0lOQ0VfQ0hBUkdFRCA9IDA7CiAKICAgICAvKioKICAgICAgKiBJbmNsdWRlIG9ubHkgdGhlIGxhc3QgcnVuIGluIHRoZSBzdGF0cy4KQEAgLTExNiw3ICsxMDIsNyBAQAogICAgIC8qKgogICAgICAqIEluY2x1ZGUgb25seSB0aGUgcnVuIHNpbmNlIHRoZSBsYXN0IHRpbWUgdGhlIGRldmljZSB3YXMgdW5wbHVnZ2VkIGluIHRoZSBzdGF0cy4KICAgICAgKi8KLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTVEFUU19VTlBMVUdHRUQgPSAzOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNUQVRTX1NJTkNFX1VOUExVR0dFRCA9IDM7CiAKICAgICAvLyBOT1RFOiBVcGRhdGUgdGhpcyBsaXN0IGlmIHlvdSBhZGQvY2hhbmdlIGFueSBzdGF0cyBhYm92ZS4KICAgICAvLyBUaGVzZSBjaGFyYWN0ZXJzIGFyZSBzdXBwb3NlZCB0byByZXByZXNlbnQgInRvdGFsIiwgImxhc3QiLCAiY3VycmVudCIsIApAQCAtMzkxLDYgKzM3NywxMjMgQEAKICAgICAgICAgfQogICAgIH0KIAorICAgIHB1YmxpYyBmaW5hbCBjbGFzcyBIaXN0b3J5SXRlbSBpbXBsZW1lbnRzIFBhcmNlbGFibGUgeworICAgICAgICBwdWJsaWMgSGlzdG9yeUl0ZW0gbmV4dDsKKyAgICAgICAgCisgICAgICAgIHB1YmxpYyBsb25nIHRpbWU7CisgICAgICAgIAorICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGJ5dGUgQ01EX1VQREFURSA9IDA7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgYnl0ZSBDTURfU1RBUlQgPSAxOworICAgICAgICAKKyAgICAgICAgcHVibGljIGJ5dGUgY21kOworICAgICAgICAKKyAgICAgICAgcHVibGljIGJ5dGUgYmF0dGVyeUxldmVsOworICAgICAgICBwdWJsaWMgYnl0ZSBiYXR0ZXJ5U3RhdHVzOworICAgICAgICBwdWJsaWMgYnl0ZSBiYXR0ZXJ5SGVhbHRoOworICAgICAgICBwdWJsaWMgYnl0ZSBiYXR0ZXJ5UGx1Z1R5cGU7CisgICAgICAgIAorICAgICAgICBwdWJsaWMgY2hhciBiYXR0ZXJ5VGVtcGVyYXR1cmU7CisgICAgICAgIHB1YmxpYyBjaGFyIGJhdHRlcnlWb2x0YWdlOworICAgICAgICAKKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1RBVEVfQlJJR0hUTkVTU19NQVNLID0gMHgwMDAwMDBmOworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTVEFURV9CUklHSFRORVNTX1NISUZUID0gMDsKKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1RBVEVfU0lHTkFMX1NUUkVOR1RIX01BU0sgPSAweDAwMDAwZjA7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNUQVRFX1NJR05BTF9TVFJFTkdUSF9TSElGVCA9IDQ7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNUQVRFX1BIT05FX1NUQVRFX01BU0sgPSAweDAwMDBmMDA7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNUQVRFX1BIT05FX1NUQVRFX1NISUZUID0gODsKKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1RBVEVfREFUQV9DT05ORUNUSU9OX01BU0sgPSAweDAwMGYwMDA7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNUQVRFX0RBVEFfQ09OTkVDVElPTl9TSElGVCA9IDEyOworICAgICAgICAKKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1RBVEVfQkFUVEVSWV9QTFVHR0VEX0ZMQUcgPSAxPDwzMDsKKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1RBVEVfU0NSRUVOX09OX0ZMQUcgPSAxPDwyOTsKKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1RBVEVfR1BTX09OX0ZMQUcgPSAxPDwyODsKKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1RBVEVfUEhPTkVfT05fRkxBRyA9IDE8PDI3OworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTVEFURV9QSE9ORV9TQ0FOTklOR19GTEFHID0gMTw8MjY7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNUQVRFX1dJRklfT05fRkxBRyA9IDE8PDI1OworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTVEFURV9XSUZJX1JVTk5JTkdfRkxBRyA9IDE8PDI0OworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTVEFURV9XSUZJX0ZVTExfTE9DS19GTEFHID0gMTw8MjM7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNUQVRFX1dJRklfU0NBTl9MT0NLX0ZMQUcgPSAxPDwyMjsKKyAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1RBVEVfV0lGSV9NVUxUSUNBU1RfT05fRkxBRyA9IDE8PDIxOworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTVEFURV9CTFVFVE9PVEhfT05fRkxBRyA9IDE8PDIwOworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTVEFURV9BVURJT19PTl9GTEFHID0gMTw8MTk7CisgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNUQVRFX1ZJREVPX09OX0ZMQUcgPSAxPDwxODsKKyAgICAgICAgCisgICAgICAgIHB1YmxpYyBpbnQgc3RhdGVzOworCisgICAgICAgIHB1YmxpYyBIaXN0b3J5SXRlbSgpIHsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcHVibGljIEhpc3RvcnlJdGVtKGxvbmcgdGltZSwgUGFyY2VsIHNyYykgeworICAgICAgICAgICAgdGhpcy50aW1lID0gdGltZTsKKyAgICAgICAgICAgIGludCBiYXQgPSBzcmMucmVhZEludCgpOworICAgICAgICAgICAgY21kID0gKGJ5dGUpKGJhdCYweGZmKTsKKyAgICAgICAgICAgIGJhdHRlcnlMZXZlbCA9IChieXRlKSgoYmF0Pj44KSYweGZmKTsKKyAgICAgICAgICAgIGJhdHRlcnlTdGF0dXMgPSAoYnl0ZSkoKGJhdD4+MTYpJjB4Zik7CisgICAgICAgICAgICBiYXR0ZXJ5SGVhbHRoID0gKGJ5dGUpKChiYXQ+PjIwKSYweGYpOworICAgICAgICAgICAgYmF0dGVyeVBsdWdUeXBlID0gKGJ5dGUpKChiYXQ+PjI0KSYweGYpOworICAgICAgICAgICAgYmF0ID0gc3JjLnJlYWRJbnQoKTsKKyAgICAgICAgICAgIGJhdHRlcnlUZW1wZXJhdHVyZSA9IChjaGFyKShiYXQmMHhmZmZmKTsKKyAgICAgICAgICAgIGJhdHRlcnlWb2x0YWdlID0gKGNoYXIpKChiYXQ+PjE2KSYweGZmZmYpOworICAgICAgICAgICAgc3RhdGVzID0gc3JjLnJlYWRJbnQoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcHVibGljIGludCBkZXNjcmliZUNvbnRlbnRzKCkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCB3cml0ZVRvUGFyY2VsKFBhcmNlbCBkZXN0LCBpbnQgZmxhZ3MpIHsKKyAgICAgICAgICAgIGRlc3Qud3JpdGVMb25nKHRpbWUpOworICAgICAgICAgICAgaW50IGJhdCA9ICgoKGludCljbWQpJjB4ZmYpCisgICAgICAgICAgICAgICAgICAgIHwgKCgoKGludCliYXR0ZXJ5TGV2ZWwpPDw4KSYweGZmMDApCisgICAgICAgICAgICAgICAgICAgIHwgKCgoKGludCliYXR0ZXJ5U3RhdHVzKTw8MTYpJjB4ZjAwMDApCisgICAgICAgICAgICAgICAgICAgIHwgKCgoKGludCliYXR0ZXJ5SGVhbHRoKTw8MjApJjB4ZjAwMDAwKQorICAgICAgICAgICAgICAgICAgICB8ICgoKChpbnQpYmF0dGVyeVBsdWdUeXBlKTw8MjQpJjB4ZjAwMDAwMCk7CisgICAgICAgICAgICBkZXN0LndyaXRlSW50KGJhdCk7CisgICAgICAgICAgICBiYXQgPSAoKChpbnQpYmF0dGVyeVRlbXBlcmF0dXJlKSYweGZmZmYpCisgICAgICAgICAgICAgICAgICAgIHwgKCgoKGludCliYXR0ZXJ5Vm9sdGFnZSk8PDE2KSYweGZmZmYwMDAwKTsKKyAgICAgICAgICAgIGRlc3Qud3JpdGVJbnQoYmF0KTsKKyAgICAgICAgICAgIGRlc3Qud3JpdGVJbnQoc3RhdGVzKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcHVibGljIHZvaWQgc2V0VG8obG9uZyB0aW1lLCBieXRlIGNtZCwgSGlzdG9yeUl0ZW0gbykgeworICAgICAgICAgICAgdGhpcy50aW1lID0gdGltZTsKKyAgICAgICAgICAgIHRoaXMuY21kID0gY21kOworICAgICAgICAgICAgYmF0dGVyeUxldmVsID0gby5iYXR0ZXJ5TGV2ZWw7CisgICAgICAgICAgICBiYXR0ZXJ5U3RhdHVzID0gby5iYXR0ZXJ5U3RhdHVzOworICAgICAgICAgICAgYmF0dGVyeUhlYWx0aCA9IG8uYmF0dGVyeUhlYWx0aDsKKyAgICAgICAgICAgIGJhdHRlcnlQbHVnVHlwZSA9IG8uYmF0dGVyeVBsdWdUeXBlOworICAgICAgICAgICAgYmF0dGVyeVRlbXBlcmF0dXJlID0gby5iYXR0ZXJ5VGVtcGVyYXR1cmU7CisgICAgICAgICAgICBiYXR0ZXJ5Vm9sdGFnZSA9IG8uYmF0dGVyeVZvbHRhZ2U7CisgICAgICAgICAgICBzdGF0ZXMgPSBvLnN0YXRlczsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGNsYXNzIEJpdERlc2NyaXB0aW9uIHsKKyAgICAgICAgcHVibGljIGZpbmFsIGludCBtYXNrOworICAgICAgICBwdWJsaWMgZmluYWwgaW50IHNoaWZ0OworICAgICAgICBwdWJsaWMgZmluYWwgU3RyaW5nIG5hbWU7CisgICAgICAgIHB1YmxpYyBmaW5hbCBTdHJpbmdbXSB2YWx1ZXM7CisgICAgICAgIAorICAgICAgICBwdWJsaWMgQml0RGVzY3JpcHRpb24oaW50IG1hc2ssIFN0cmluZyBuYW1lKSB7CisgICAgICAgICAgICB0aGlzLm1hc2sgPSBtYXNrOworICAgICAgICAgICAgdGhpcy5zaGlmdCA9IC0xOworICAgICAgICAgICAgdGhpcy5uYW1lID0gbmFtZTsKKyAgICAgICAgICAgIHRoaXMudmFsdWVzID0gbnVsbDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcHVibGljIEJpdERlc2NyaXB0aW9uKGludCBtYXNrLCBpbnQgc2hpZnQsIFN0cmluZyBuYW1lLCBTdHJpbmdbXSB2YWx1ZXMpIHsKKyAgICAgICAgICAgIHRoaXMubWFzayA9IG1hc2s7CisgICAgICAgICAgICB0aGlzLnNoaWZ0ID0gc2hpZnQ7CisgICAgICAgICAgICB0aGlzLm5hbWUgPSBuYW1lOworICAgICAgICAgICAgdGhpcy52YWx1ZXMgPSB2YWx1ZXM7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBjdXJyZW50IGhpc3Rvcnkgb2YgYmF0dGVyeSBzdGF0ZSBjaGFuZ2VzLgorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCBIaXN0b3J5SXRlbSBnZXRIaXN0b3J5KCk7CisgICAgCiAgICAgLyoqCiAgICAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZSBkZXZpY2UgaGFzIGJlZW4gc3RhcnRlZC4KICAgICAgKi8KQEAgLTQ3NiwxMyArNTc5LDIzIEBACiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgREFUQV9DT05ORUNUSU9OX0dQUlMgPSAxOwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IERBVEFfQ09OTkVDVElPTl9FREdFID0gMjsKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBEQVRBX0NPTk5FQ1RJT05fVU1UUyA9IDM7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgREFUQV9DT05ORUNUSU9OX09USEVSID0gNDsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBEQVRBX0NPTk5FQ1RJT05fQ0RNQSA9IDQ7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgREFUQV9DT05ORUNUSU9OX0VWRE9fMCA9IDU7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgREFUQV9DT05ORUNUSU9OX0VWRE9fQSA9IDY7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgREFUQV9DT05ORUNUSU9OXzF4UlRUID0gNzsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBEQVRBX0NPTk5FQ1RJT05fSFNEUEEgPSA4OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IERBVEFfQ09OTkVDVElPTl9IU1VQQSA9IDk7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgREFUQV9DT05ORUNUSU9OX0hTUEEgPSAxMDsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBEQVRBX0NPTk5FQ1RJT05fSURFTiA9IDExOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IERBVEFfQ09OTkVDVElPTl9FVkRPX0IgPSAxMjsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBEQVRBX0NPTk5FQ1RJT05fT1RIRVIgPSAxMzsKICAgICAKICAgICBzdGF0aWMgZmluYWwgU3RyaW5nW10gREFUQV9DT05ORUNUSU9OX05BTUVTID0gewotICAgICAgICAibm9uZSIsICJncHJzIiwgImVkZ2UiLCAidW10cyIsICJvdGhlciIKKyAgICAgICAgIm5vbmUiLCAiZ3BycyIsICJlZGdlIiwgInVtdHMiLCAiY2RtYSIsICJldmRvXzAiLCAiZXZkb19BIiwKKyAgICAgICAgIjF4cnR0IiwgImhzZHBhIiwgImhzdXBhIiwgImhzcGEiLCAiaWRlbiIsICJldmRvX2IiLCAib3RoZXIiCiAgICAgfTsKICAgICAKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBOVU1fREFUQV9DT05ORUNUSU9OX1RZUEVTID0gNTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBOVU1fREFUQV9DT05ORUNUSU9OX1RZUEVTID0gREFUQV9DT05ORUNUSU9OX09USEVSKzE7CiAgICAgCiAgICAgLyoqCiAgICAgICogUmV0dXJucyB0aGUgdGltZSBpbiBtaWNyb3NlY29uZHMgdGhhdCB0aGUgcGhvbmUgaGFzIGJlZW4gcnVubmluZyB3aXRoCkBAIC01MDAsNiArNjEzLDM1IEBACiAgICAgICoge0BoaWRlfQogICAgICAqLwogICAgIHB1YmxpYyBhYnN0cmFjdCBpbnQgZ2V0UGhvbmVEYXRhQ29ubmVjdGlvbkNvdW50KGludCBkYXRhVHlwZSwgaW50IHdoaWNoKTsKKyAgICAKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIEJpdERlc2NyaXB0aW9uW10gSElTVE9SWV9TVEFURV9ERVNDUklQVElPTlMKKyAgICAgICAgICAgID0gbmV3IEJpdERlc2NyaXB0aW9uW10geworICAgICAgICBuZXcgQml0RGVzY3JpcHRpb24oSGlzdG9yeUl0ZW0uU1RBVEVfQkFUVEVSWV9QTFVHR0VEX0ZMQUcsICJwbHVnZ2VkIiksCisgICAgICAgIG5ldyBCaXREZXNjcmlwdGlvbihIaXN0b3J5SXRlbS5TVEFURV9TQ1JFRU5fT05fRkxBRywgInNjcmVlbiIpLAorICAgICAgICBuZXcgQml0RGVzY3JpcHRpb24oSGlzdG9yeUl0ZW0uU1RBVEVfR1BTX09OX0ZMQUcsICJncHMiKSwKKyAgICAgICAgbmV3IEJpdERlc2NyaXB0aW9uKEhpc3RvcnlJdGVtLlNUQVRFX1BIT05FX09OX0ZMQUcsICJwaG9uZSIpLAorICAgICAgICBuZXcgQml0RGVzY3JpcHRpb24oSGlzdG9yeUl0ZW0uU1RBVEVfUEhPTkVfU0NBTk5JTkdfRkxBRywgInBob25lX3NjYW5uaW5nIiksCisgICAgICAgIG5ldyBCaXREZXNjcmlwdGlvbihIaXN0b3J5SXRlbS5TVEFURV9XSUZJX09OX0ZMQUcsICJ3aWZpIiksCisgICAgICAgIG5ldyBCaXREZXNjcmlwdGlvbihIaXN0b3J5SXRlbS5TVEFURV9XSUZJX1JVTk5JTkdfRkxBRywgIndpZmlfcnVubmluZyIpLAorICAgICAgICBuZXcgQml0RGVzY3JpcHRpb24oSGlzdG9yeUl0ZW0uU1RBVEVfV0lGSV9GVUxMX0xPQ0tfRkxBRywgIndpZmlfZnVsbF9sb2NrIiksCisgICAgICAgIG5ldyBCaXREZXNjcmlwdGlvbihIaXN0b3J5SXRlbS5TVEFURV9XSUZJX1NDQU5fTE9DS19GTEFHLCAid2lmaV9zY2FuX2xvY2siKSwKKyAgICAgICAgbmV3IEJpdERlc2NyaXB0aW9uKEhpc3RvcnlJdGVtLlNUQVRFX1dJRklfTVVMVElDQVNUX09OX0ZMQUcsICJ3aWZpX211bHRpY2FzdCIpLAorICAgICAgICBuZXcgQml0RGVzY3JpcHRpb24oSGlzdG9yeUl0ZW0uU1RBVEVfQkxVRVRPT1RIX09OX0ZMQUcsICJibHVldG9vdGgiKSwKKyAgICAgICAgbmV3IEJpdERlc2NyaXB0aW9uKEhpc3RvcnlJdGVtLlNUQVRFX0FVRElPX09OX0ZMQUcsICJhdWRpbyIpLAorICAgICAgICBuZXcgQml0RGVzY3JpcHRpb24oSGlzdG9yeUl0ZW0uU1RBVEVfVklERU9fT05fRkxBRywgInZpZGVvIiksCisgICAgICAgIG5ldyBCaXREZXNjcmlwdGlvbihIaXN0b3J5SXRlbS5TVEFURV9CUklHSFRORVNTX01BU0ssCisgICAgICAgICAgICAgICAgSGlzdG9yeUl0ZW0uU1RBVEVfQlJJR0hUTkVTU19TSElGVCwgImJyaWdodG5lc3MiLAorICAgICAgICAgICAgICAgIFNDUkVFTl9CUklHSFRORVNTX05BTUVTKSwKKyAgICAgICAgbmV3IEJpdERlc2NyaXB0aW9uKEhpc3RvcnlJdGVtLlNUQVRFX1NJR05BTF9TVFJFTkdUSF9NQVNLLAorICAgICAgICAgICAgICAgIEhpc3RvcnlJdGVtLlNUQVRFX1NJR05BTF9TVFJFTkdUSF9TSElGVCwgInNpZ25hbF9zdHJlbmd0aCIsCisgICAgICAgICAgICAgICAgU0lHTkFMX1NUUkVOR1RIX05BTUVTKSwKKyAgICAgICAgbmV3IEJpdERlc2NyaXB0aW9uKEhpc3RvcnlJdGVtLlNUQVRFX1BIT05FX1NUQVRFX01BU0ssCisgICAgICAgICAgICAgICAgSGlzdG9yeUl0ZW0uU1RBVEVfUEhPTkVfU1RBVEVfU0hJRlQsICJwaG9uZV9zdGF0ZSIsCisgICAgICAgICAgICAgICAgbmV3IFN0cmluZ1tdIHsiaW4iLCAib3V0IiwgImVtZXJnZW5jeSIsICJvZmYifSksCisgICAgICAgIG5ldyBCaXREZXNjcmlwdGlvbihIaXN0b3J5SXRlbS5TVEFURV9EQVRBX0NPTk5FQ1RJT05fTUFTSywKKyAgICAgICAgICAgICAgICBIaXN0b3J5SXRlbS5TVEFURV9EQVRBX0NPTk5FQ1RJT05fU0hJRlQsICJkYXRhX2Nvbm4iLAorICAgICAgICAgICAgICAgIERBVEFfQ09OTkVDVElPTl9OQU1FUyksCisgICAgfTsKIAogICAgIC8qKgogICAgICAqIFJldHVybnMgdGhlIHRpbWUgaW4gbWljcm9zZWNvbmRzIHRoYXQgd2lmaSBoYXMgYmVlbiBvbiB3aGlsZSB0aGUgZGV2aWNlIHdhcwpAQCAtNzkxLDcgKzkzMyw3IEBACiAgICAgICAgIAogICAgICAgICAvLyBEdW1wICJiYXR0ZXJ5IiBzdGF0CiAgICAgICAgIGR1bXBMaW5lKHB3LCAwIC8qIHVpZCAqLywgY2F0ZWdvcnksIEJBVFRFUllfREFUQSwgCi0gICAgICAgICAgICAgICAgd2hpY2ggPT0gU1RBVFNfVE9UQUwgPyBnZXRTdGFydENvdW50KCkgOiAiTi9BIiwKKyAgICAgICAgICAgICAgICB3aGljaCA9PSBTVEFUU19TSU5DRV9DSEFSR0VEID8gZ2V0U3RhcnRDb3VudCgpIDogIk4vQSIsCiAgICAgICAgICAgICAgICAgd2hpY2hCYXR0ZXJ5UmVhbHRpbWUgLyAxMDAwLCB3aGljaEJhdHRlcnlVcHRpbWUgLyAxMDAwLAogICAgICAgICAgICAgICAgIHRvdGFsUmVhbHRpbWUgLyAxMDAwLCB0b3RhbFVwdGltZSAvIDEwMDApOyAKICAgICAgICAgCkBAIC04NjQsNyArMTAwNiw3IEBACiAgICAgICAgIH0KICAgICAgICAgZHVtcExpbmUocHcsIDAgLyogdWlkICovLCBjYXRlZ29yeSwgREFUQV9DT05ORUNUSU9OX0NPVU5UX0RBVEEsIGFyZ3MpOwogICAgICAgICAKLSAgICAgICAgaWYgKHdoaWNoID09IFNUQVRTX1VOUExVR0dFRCkgeworICAgICAgICBpZiAod2hpY2ggPT0gU1RBVFNfU0lOQ0VfVU5QTFVHR0VEKSB7CiAgICAgICAgICAgICBkdW1wTGluZShwdywgMCAvKiB1aWQgKi8sIGNhdGVnb3J5LCBCQVRURVJZX0xFVkVMX0RBVEEsIGdldERpc2NoYXJnZVN0YXJ0TGV2ZWwoKSwgCiAgICAgICAgICAgICAgICAgICAgIGdldERpc2NoYXJnZUN1cnJlbnRMZXZlbCgpKTsKICAgICAgICAgfQpAQCAtMTIxMiw3ICsxMzU0LDcgQEAKICAgICAgICAgCiAgICAgICAgIHB3LnByaW50bG4oIiAiKTsKIAotICAgICAgICBpZiAod2hpY2ggPT0gU1RBVFNfVU5QTFVHR0VEKSB7CisgICAgICAgIGlmICh3aGljaCA9PSBTVEFUU19TSU5DRV9VTlBMVUdHRUQpIHsKICAgICAgICAgICAgIGlmIChnZXRJc09uQmF0dGVyeSgpKSB7CiAgICAgICAgICAgICAgICAgcHcucHJpbnQocHJlZml4KTsgcHcucHJpbnRsbigiICBEZXZpY2UgaXMgY3VycmVudGx5IHVucGx1Z2dlZCIpOwogICAgICAgICAgICAgICAgIHB3LnByaW50KHByZWZpeCk7IHB3LnByaW50KCIgICAgRGlzY2hhcmdlIGN5Y2xlIHN0YXJ0IGxldmVsOiAiKTsgCkBAIC0xNDM2LDYgKzE1NzgsMzAgQEAKICAgICAgICAgfQogICAgIH0KIAorICAgIHZvaWQgcHJpbnRCaXREZXNjcmlwdGlvbnMoUHJpbnRXcml0ZXIgcHcsIGludCBvbGR2YWwsIGludCBuZXd2YWwsIEJpdERlc2NyaXB0aW9uW10gZGVzY3JpcHRpb25zKSB7CisgICAgICAgIGludCBkaWZmID0gb2xkdmFsIF4gbmV3dmFsOworICAgICAgICBpZiAoZGlmZiA9PSAwKSByZXR1cm47CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxkZXNjcmlwdGlvbnMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIEJpdERlc2NyaXB0aW9uIGJkID0gZGVzY3JpcHRpb25zW2ldOworICAgICAgICAgICAgaWYgKChkaWZmJmJkLm1hc2spICE9IDApIHsKKyAgICAgICAgICAgICAgICBpZiAoYmQuc2hpZnQgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIHB3LnByaW50KChuZXd2YWwmYmQubWFzaykgIT0gMCA/ICIgKyIgOiAiIC0iKTsKKyAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoYmQubmFtZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoIiAiKTsKKyAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoYmQubmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHB3LnByaW50KCI9Iik7CisgICAgICAgICAgICAgICAgICAgIGludCB2YWwgPSAobmV3dmFsJmJkLm1hc2spPj5iZC5zaGlmdDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGJkLnZhbHVlcyAhPSBudWxsICYmIHZhbCA+PSAwICYmIHZhbCA8IGJkLnZhbHVlcy5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB3LnByaW50KGJkLnZhbHVlc1t2YWxdKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB3LnByaW50KHZhbCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCiAgICAgLyoqCiAgICAgICogRHVtcHMgYSBodW1hbi1yZWFkYWJsZSBzdW1tYXJ5IG9mIHRoZSBiYXR0ZXJ5IHN0YXRpc3RpY3MgdG8gdGhlIGdpdmVuIFByaW50V3JpdGVyLgogICAgICAqCkBAIC0xNDQzLDE5ICsxNjA5LDEyOSBAQAogICAgICAqLwogICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJ1bnVzZWQiKQogICAgIHB1YmxpYyB2b2lkIGR1bXBMb2NrZWQoUHJpbnRXcml0ZXIgcHcpIHsKLSAgICAgICAgcHcucHJpbnRsbigiVG90YWwgU3RhdGlzdGljcyAoQ3VycmVudCBhbmQgSGlzdG9yaWMpOiIpOworICAgICAgICBIaXN0b3J5SXRlbSByZWMgPSBnZXRIaXN0b3J5KCk7CisgICAgICAgIGlmIChyZWMgIT0gbnVsbCkgeworICAgICAgICAgICAgcHcucHJpbnRsbigiQmF0dGVyeSBIaXN0b3J5OiIpOworICAgICAgICAgICAgaW50IG9sZFN0YXRlID0gMDsKKyAgICAgICAgICAgIGludCBvbGRTdGF0dXMgPSAtMTsKKyAgICAgICAgICAgIGludCBvbGRIZWFsdGggPSAtMTsKKyAgICAgICAgICAgIGludCBvbGRQbHVnID0gLTE7CisgICAgICAgICAgICBpbnQgb2xkVGVtcCA9IC0xOworICAgICAgICAgICAgaW50IG9sZFZvbHQgPSAtMTsKKyAgICAgICAgICAgIHdoaWxlIChyZWMgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHB3LnByaW50KCIgICIpOworICAgICAgICAgICAgICAgIHB3LnByaW50KHJlYy50aW1lKTsKKyAgICAgICAgICAgICAgICBwdy5wcmludCgiICIpOworICAgICAgICAgICAgICAgIGlmIChyZWMuY21kID09IEhpc3RvcnlJdGVtLkNNRF9TVEFSVCkgeworICAgICAgICAgICAgICAgICAgICBwdy5wcmludGxuKCIgU1RBUlQiKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAocmVjLmJhdHRlcnlMZXZlbCA8IDEwKSBwdy5wcmludCgiMDAiKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAocmVjLmJhdHRlcnlMZXZlbCA8IDEwMCkgcHcucHJpbnQoIjAiKTsKKyAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQocmVjLmJhdHRlcnlMZXZlbCk7CisgICAgICAgICAgICAgICAgICAgIHB3LnByaW50KCIgIik7CisgICAgICAgICAgICAgICAgICAgIGlmIChyZWMuc3RhdGVzIDwgMHgxMCkgcHcucHJpbnQoIjAwMDAwMDAiKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAocmVjLnN0YXRlcyA8IDB4MTAwKSBwdy5wcmludCgiMDAwMDAwIik7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlYy5zdGF0ZXMgPCAweDEwMDApIHB3LnByaW50KCIwMDAwMCIpOworICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChyZWMuc3RhdGVzIDwgMHgxMDAwMCkgcHcucHJpbnQoIjAwMDAiKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAocmVjLnN0YXRlcyA8IDB4MTAwMDAwKSBwdy5wcmludCgiMDAwIik7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKHJlYy5zdGF0ZXMgPCAweDEwMDAwMDApIHB3LnByaW50KCIwMCIpOworICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChyZWMuc3RhdGVzIDwgMHgxMDAwMDAwMCkgcHcucHJpbnQoIjAiKTsKKyAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoSW50ZWdlci50b0hleFN0cmluZyhyZWMuc3RhdGVzKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChvbGRTdGF0dXMgIT0gcmVjLmJhdHRlcnlTdGF0dXMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9sZFN0YXR1cyA9IHJlYy5iYXR0ZXJ5U3RhdHVzOworICAgICAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoIiBzdGF0dXM9Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG9sZFN0YXR1cykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQmF0dGVyeU1hbmFnZXIuQkFUVEVSWV9TVEFUVVNfVU5LTk9XTjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoInVua25vd24iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBCYXR0ZXJ5TWFuYWdlci5CQVRURVJZX1NUQVRVU19DSEFSR0lORzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoImNoYXJnaW5nIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQmF0dGVyeU1hbmFnZXIuQkFUVEVSWV9TVEFUVVNfRElTQ0hBUkdJTkc6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB3LnByaW50KCJkaXNjaGFyZ2luZyIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEJhdHRlcnlNYW5hZ2VyLkJBVFRFUllfU1RBVFVTX05PVF9DSEFSR0lORzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoIm5vdC1jaGFyZ2luZyIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEJhdHRlcnlNYW5hZ2VyLkJBVFRFUllfU1RBVFVTX0ZVTEw6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB3LnByaW50KCJmdWxsIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB3LnByaW50KG9sZFN0YXR1cyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChvbGRIZWFsdGggIT0gcmVjLmJhdHRlcnlIZWFsdGgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9sZEhlYWx0aCA9IHJlYy5iYXR0ZXJ5SGVhbHRoOworICAgICAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoIiBoZWFsdGg9Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG9sZEhlYWx0aCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQmF0dGVyeU1hbmFnZXIuQkFUVEVSWV9IRUFMVEhfVU5LTk9XTjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoInVua25vd24iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBCYXR0ZXJ5TWFuYWdlci5CQVRURVJZX0hFQUxUSF9HT09EOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdy5wcmludCgiZ29vZCIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEJhdHRlcnlNYW5hZ2VyLkJBVFRFUllfSEVBTFRIX09WRVJIRUFUOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdy5wcmludCgib3ZlcmhlYXQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBCYXR0ZXJ5TWFuYWdlci5CQVRURVJZX0hFQUxUSF9ERUFEOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdy5wcmludCgiZGVhZCIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEJhdHRlcnlNYW5hZ2VyLkJBVFRFUllfSEVBTFRIX09WRVJfVk9MVEFHRToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoIm92ZXItdm9sdGFnZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEJhdHRlcnlNYW5hZ2VyLkJBVFRFUllfSEVBTFRIX1VOU1BFQ0lGSUVEX0ZBSUxVUkU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB3LnByaW50KCJmYWlsdXJlIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB3LnByaW50KG9sZEhlYWx0aCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChvbGRQbHVnICE9IHJlYy5iYXR0ZXJ5UGx1Z1R5cGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9sZFBsdWcgPSByZWMuYmF0dGVyeVBsdWdUeXBlOworICAgICAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoIiBwbHVnPSIpOworICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChvbGRQbHVnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdy5wcmludCgibm9uZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIEJhdHRlcnlNYW5hZ2VyLkJBVFRFUllfUExVR0dFRF9BQzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoImFjIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgQmF0dGVyeU1hbmFnZXIuQkFUVEVSWV9QTFVHR0VEX1VTQjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoInVzYiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdy5wcmludChvbGRQbHVnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKG9sZFRlbXAgIT0gcmVjLmJhdHRlcnlUZW1wZXJhdHVyZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgb2xkVGVtcCA9IHJlYy5iYXR0ZXJ5VGVtcGVyYXR1cmU7CisgICAgICAgICAgICAgICAgICAgICAgICBwdy5wcmludCgiIHRlbXA9Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdy5wcmludChvbGRUZW1wKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAob2xkVm9sdCAhPSByZWMuYmF0dGVyeVZvbHRhZ2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9sZFZvbHQgPSByZWMuYmF0dGVyeVZvbHRhZ2U7CisgICAgICAgICAgICAgICAgICAgICAgICBwdy5wcmludCgiIHZvbHQ9Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBwdy5wcmludChvbGRWb2x0KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBwcmludEJpdERlc2NyaXB0aW9ucyhwdywgb2xkU3RhdGUsIHJlYy5zdGF0ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgSElTVE9SWV9TVEFURV9ERVNDUklQVElPTlMpOworICAgICAgICAgICAgICAgICAgICBwdy5wcmludGxuKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG9sZFN0YXRlID0gcmVjLnN0YXRlczsKKyAgICAgICAgICAgICAgICByZWMgPSByZWMubmV4dDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcHcucHJpbnRsbigiU3RhdGlzdGljcyBzaW5jZSBsYXN0IGNoYXJnZToiKTsKICAgICAgICAgcHcucHJpbnRsbigiICBTeXN0ZW0gc3RhcnRzOiAiICsgZ2V0U3RhcnRDb3VudCgpCiAgICAgICAgICAgICAgICAgKyAiLCBjdXJyZW50bHkgb24gYmF0dGVyeTogIiArIGdldElzT25CYXR0ZXJ5KCkpOwotICAgICAgICBkdW1wTG9ja2VkKHB3LCAiIiwgU1RBVFNfVE9UQUwsIC0xKTsKKyAgICAgICAgZHVtcExvY2tlZChwdywgIiIsIFNUQVRTX1NJTkNFX0NIQVJHRUQsIC0xKTsKICAgICAgICAgcHcucHJpbnRsbigiIik7Ci0gICAgICAgIHB3LnByaW50bG4oIkxhc3QgUnVuIFN0YXRpc3RpY3MgKFByZXZpb3VzIHJ1biBvZiBzeXN0ZW0pOiIpOwotICAgICAgICBkdW1wTG9ja2VkKHB3LCAiIiwgU1RBVFNfTEFTVCwgLTEpOwotICAgICAgICBwdy5wcmludGxuKCIiKTsKLSAgICAgICAgcHcucHJpbnRsbigiQ3VycmVudCBCYXR0ZXJ5IFN0YXRpc3RpY3MgKEN1cnJlbnRseSBydW5uaW5nIHN5c3RlbSk6Iik7Ci0gICAgICAgIGR1bXBMb2NrZWQocHcsICIiLCBTVEFUU19DVVJSRU5ULCAtMSk7Ci0gICAgICAgIHB3LnByaW50bG4oIiIpOwotICAgICAgICBwdy5wcmludGxuKCJVbnBsdWdnZWQgU3RhdGlzdGljcyAoU2luY2UgbGFzdCB1bnBsdWdnZWQgZnJvbSBwb3dlcik6Iik7Ci0gICAgICAgIGR1bXBMb2NrZWQocHcsICIiLCBTVEFUU19VTlBMVUdHRUQsIC0xKTsKKyAgICAgICAgcHcucHJpbnRsbigiU3RhdGlzdGljcyBzaW5jZSBsYXN0IHVucGx1Z2dlZDoiKTsKKyAgICAgICAgZHVtcExvY2tlZChwdywgIiIsIFNUQVRTX1NJTkNFX1VOUExVR0dFRCwgLTEpOwogICAgIH0KICAgICAKICAgICBAU3VwcHJlc3NXYXJuaW5ncygidW51c2VkIikKQEAgLTE0NzAsMTQgKzE3NDYsMTEgQEAKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgaWYgKGlzVW5wbHVnZ2VkT25seSkgewotICAgICAgICAgICAgZHVtcENoZWNraW5Mb2NrZWQocHcsIFNUQVRTX1VOUExVR0dFRCwgLTEpOworICAgICAgICAgICAgZHVtcENoZWNraW5Mb2NrZWQocHcsIFNUQVRTX1NJTkNFX1VOUExVR0dFRCwgLTEpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgZHVtcENoZWNraW5Mb2NrZWQocHcsIFNUQVRTX1RPVEFMLCAtMSk7Ci0gICAgICAgICAgICBkdW1wQ2hlY2tpbkxvY2tlZChwdywgU1RBVFNfTEFTVCwgLTEpOwotICAgICAgICAgICAgZHVtcENoZWNraW5Mb2NrZWQocHcsIFNUQVRTX1VOUExVR0dFRCwgLTEpOwotICAgICAgICAgICAgZHVtcENoZWNraW5Mb2NrZWQocHcsIFNUQVRTX0NVUlJFTlQsIC0xKTsKKyAgICAgICAgICAgIGR1bXBDaGVja2luTG9ja2VkKHB3LCBTVEFUU19TSU5DRV9DSEFSR0VELCAtMSk7CisgICAgICAgICAgICBkdW1wQ2hlY2tpbkxvY2tlZChwdywgU1RBVFNfU0lOQ0VfVU5QTFVHR0VELCAtMSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCiB9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9vcy9CdWlsZC5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvb3MvQnVpbGQuamF2YQppbmRleCAzZTlmZDQyLi5mZGQzNTczIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9vcy9CdWlsZC5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL29zL0J1aWxkLmphdmEKQEAgLTE3OSw3ICsxNzksMjMgQEAKICAgICAgICAgICovCiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEVDTEFJUl9NUjEgPSA3OwogICAgICAgICAKKyAgICAgICAgLyoqCisgICAgICAgICAqIEp1bmUgMjAxMDogQW5kcm9pZCAyLjIKKyAgICAgICAgICovCiAgICAgICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZST1lPID0gODsKKyAgICAgICAgCisgICAgICAgIC8qKgorICAgICAgICAgKiBOZXh0IHZlcnNpb24gb2YgQW5kcm9pZC4KKyAgICAgICAgICogCisgICAgICAgICAqIDxwPkFwcGxpY2F0aW9ucyB0YXJnZXRpbmcgdGhpcyBvciBhIGxhdGVyIHJlbGVhc2Ugd2lsbCBnZXQgdGhlc2UKKyAgICAgICAgICogbmV3IGNoYW5nZXMgaW4gYmVoYXZpb3I6PC9wPgorICAgICAgICAgKiA8dWw+CisgICAgICAgICAqIDxsaT4gVGhlIHN0YXR1cyBiYXIgaXMgbm93IGRhcmsuICBUYXJnZXRpbmcgdGhpcyB2ZXJzaW9uIGFsbG93cworICAgICAgICAgKiB0aGUgcGxhdGZvcm0gdG8gcGVyZm9ybSBwZXJmb3JtaW5nIGNvbXBhdGliaWxpdHkgb24gc3RhdHVzIGJhcgorICAgICAgICAgKiBncmFwaGljcyB0byBlbnN1cmUgdGhleSBsb29rIG9rYXkgb24gYSBkYXJrIGJhY2tncm91bmQuCisgICAgICAgICAqIDwvdWw+CisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBHSU5HRVJCUkVBRCA9IENVUl9ERVZFTE9QTUVOVDsKICAgICB9CiAgICAgCiAgICAgLyoqIFRoZSB0eXBlIG9mIGJ1aWxkLCBsaWtlICJ1c2VyIiBvciAiZW5nIi4gKi8KZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL29zL0Ryb3BCb3hNYW5hZ2VyLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9vcy9Ecm9wQm94TWFuYWdlci5qYXZhCmluZGV4IDc4ODlhOTIuLjRkZjMzZTAgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL29zL0Ryb3BCb3hNYW5hZ2VyLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvb3MvRHJvcEJveE1hbmFnZXIuamF2YQpAQCAtMjQyLDcgKzI0Miw3IEBACiAgICAgICAgIGlmIChmaWxlID09IG51bGwpIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigpOwogICAgICAgICBFbnRyeSBlbnRyeSA9IG5ldyBFbnRyeSh0YWcsIDAsIGZpbGUsIGZsYWdzKTsKICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIG1TZXJ2aWNlLmFkZChuZXcgRW50cnkodGFnLCAwLCBmaWxlLCBmbGFncykpOworICAgICAgICAgICAgbVNlcnZpY2UuYWRkKGVudHJ5KTsKICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKICAgICAgICAgICAgIC8vIGlnbm9yZQogICAgICAgICB9IGZpbmFsbHkgewpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvb3MvRW52aXJvbm1lbnQuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL29zL0Vudmlyb25tZW50LmphdmEKaW5kZXggODEyMzkxYy4uYzdjYmVkNiAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvb3MvRW52aXJvbm1lbnQuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9vcy9FbnZpcm9ubWVudC5qYXZhCkBAIC0yOCw2ICsyOCw4IEBACiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgRmlsZSBST09UX0RJUkVDVE9SWQogICAgICAgICAgICAgPSBnZXREaXJlY3RvcnkoIkFORFJPSURfUk9PVCIsICIvc3lzdGVtIik7CiAKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgU1lTVEVNX1BST1BFUlRZX0VGU19FTkFCTEVEID0gInBlcnNpc3Quc2VjdXJpdHkuZWZzLmVuYWJsZWQiOworCiAgICAgcHJpdmF0ZSBzdGF0aWMgSU1vdW50U2VydmljZSBtTW50U3ZjID0gbnVsbDsKIAogICAgIC8qKgpAQCAtMzcsOSArMzksNTUgQEAKICAgICAgICAgcmV0dXJuIFJPT1RfRElSRUNUT1JZOwogICAgIH0KIAorICAgIC8qKgorICAgICAqIEdldHMgdGhlIHN5c3RlbSBkaXJlY3RvcnkgYXZhaWxhYmxlIGZvciBzZWN1cmUgc3RvcmFnZS4KKyAgICAgKiBJZiBFbmNyeXB0ZWQgRmlsZSBzeXN0ZW0gaXMgZW5hYmxlZCwgaXQgcmV0dXJucyBhbiBlbmNyeXB0ZWQgZGlyZWN0b3J5ICgvZGF0YS9zZWN1cmUvc3lzdGVtKS4KKyAgICAgKiBPdGhlcndpc2UsIGl0IHJldHVybnMgdGhlIHVuZW5jcnlwdGVkIC9kYXRhL3N5c3RlbSBkaXJlY3RvcnkuCisgICAgICogQHJldHVybiBGaWxlIG9iamVjdCByZXByZXNlbnRpbmcgdGhlIHNlY3VyZSBzdG9yYWdlIHN5c3RlbSBkaXJlY3RvcnkuCisgICAgICogQGhpZGUKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIEZpbGUgZ2V0U3lzdGVtU2VjdXJlRGlyZWN0b3J5KCkgeworICAgICAgICBpZiAoaXNFbmNyeXB0ZWRGaWxlc3lzdGVtRW5hYmxlZCgpKSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IEZpbGUoU0VDVVJFX0RBVEFfRElSRUNUT1JZLCAic3lzdGVtIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IEZpbGUoREFUQV9ESVJFQ1RPUlksICJzeXN0ZW0iKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIGRhdGEgZGlyZWN0b3J5IGZvciBzZWN1cmUgc3RvcmFnZS4KKyAgICAgKiBJZiBFbmNyeXB0ZWQgRmlsZSBzeXN0ZW0gaXMgZW5hYmxlZCwgaXQgcmV0dXJucyBhbiBlbmNyeXB0ZWQgZGlyZWN0b3J5ICgvZGF0YS9zZWN1cmUpLgorICAgICAqIE90aGVyd2lzZSwgaXQgcmV0dXJucyB0aGUgdW5lbmNyeXB0ZWQgL2RhdGEgZGlyZWN0b3J5LgorICAgICAqIEByZXR1cm4gRmlsZSBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBkYXRhIGRpcmVjdG9yeSBmb3Igc2VjdXJlIHN0b3JhZ2UuCisgICAgICogQGhpZGUKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIEZpbGUgZ2V0U2VjdXJlRGF0YURpcmVjdG9yeSgpIHsKKyAgICAgICAgaWYgKGlzRW5jcnlwdGVkRmlsZXN5c3RlbUVuYWJsZWQoKSkgeworICAgICAgICAgICAgcmV0dXJuIFNFQ1VSRV9EQVRBX0RJUkVDVE9SWTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBEQVRBX0RJUkVDVE9SWTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgd2hldGhlciB0aGUgRW5jcnlwdGVkIEZpbGUgU3lzdGVtIGZlYXR1cmUgaXMgZW5hYmxlZCBvbiB0aGUgZGV2aWNlIG9yIG5vdC4KKyAgICAgKiBAcmV0dXJuIDxjb2RlPnRydWU8L2NvZGU+IGlmIEVuY3J5cHRlZCBGaWxlIFN5c3RlbSBmZWF0dXJlIGlzIGVuYWJsZWQsIDxjb2RlPmZhbHNlPC9jb2RlPgorICAgICAqIGlmIGRpc2FibGVkLgorICAgICAqIEBoaWRlCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBib29sZWFuIGlzRW5jcnlwdGVkRmlsZXN5c3RlbUVuYWJsZWQoKSB7CisgICAgICAgIHJldHVybiBTeXN0ZW1Qcm9wZXJ0aWVzLmdldEJvb2xlYW4oU1lTVEVNX1BST1BFUlRZX0VGU19FTkFCTEVELCBmYWxzZSk7CisgICAgfQorCiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgRmlsZSBEQVRBX0RJUkVDVE9SWQogICAgICAgICAgICAgPSBnZXREaXJlY3RvcnkoIkFORFJPSURfREFUQSIsICIvZGF0YSIpOwogCisgICAgLyoqCisgICAgICogQGhpZGUKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBGaWxlIFNFQ1VSRV9EQVRBX0RJUkVDVE9SWQorICAgICAgICAgICAgPSBnZXREaXJlY3RvcnkoIkFORFJPSURfU0VDVVJFX0RBVEEiLCAiL2RhdGEvc2VjdXJlIik7CisKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBGaWxlIEVYVEVSTkFMX1NUT1JBR0VfRElSRUNUT1JZCiAgICAgICAgICAgICA9IGdldERpcmVjdG9yeSgiRVhURVJOQUxfU1RPUkFHRSIsICIvc2RjYXJkIik7CiAKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL29zL01lc3NhZ2VRdWV1ZS5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvb3MvTWVzc2FnZVF1ZXVlLmphdmEKaW5kZXggYmM2NTNkNi4uYWRiMTFjOCAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvb3MvTWVzc2FnZVF1ZXVlLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvb3MvTWVzc2FnZVF1ZXVlLmphdmEKQEAgLTE2LDEzICsxNiwxMSBAQAogCiBwYWNrYWdlIGFuZHJvaWQub3M7CiAKLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotCiBpbXBvcnQgYW5kcm9pZC51dGlsLkFuZHJvaWRSdW50aW1lRXhjZXB0aW9uOwogaW1wb3J0IGFuZHJvaWQudXRpbC5Db25maWc7CiBpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKIAotaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLm9zLlJ1bnRpbWVJbml0OworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CiAKIC8qKgogICogTG93LWxldmVsIGNsYXNzIGhvbGRpbmcgdGhlIGxpc3Qgb2YgbWVzc2FnZXMgdG8gYmUgZGlzcGF0Y2hlZCBieSBhCkBAIC0zNCwxMCArMzIsMTggQEAKICAqLwogcHVibGljIGNsYXNzIE1lc3NhZ2VRdWV1ZSB7CiAgICAgTWVzc2FnZSBtTWVzc2FnZXM7Ci0gICAgcHJpdmF0ZSBmaW5hbCBBcnJheUxpc3QgbUlkbGVIYW5kbGVycyA9IG5ldyBBcnJheUxpc3QoKTsKKyAgICBwcml2YXRlIGZpbmFsIEFycmF5TGlzdDxJZGxlSGFuZGxlcj4gbUlkbGVIYW5kbGVycyA9IG5ldyBBcnJheUxpc3Q8SWRsZUhhbmRsZXI+KCk7CiAgICAgcHJpdmF0ZSBib29sZWFuIG1RdWl0aW5nID0gZmFsc2U7CiAgICAgYm9vbGVhbiBtUXVpdEFsbG93ZWQgPSB0cnVlOworCisgICAgQFN1cHByZXNzV2FybmluZ3MoInVudXNlZCIpCisgICAgcHJpdmF0ZSBpbnQgbVB0cjsgLy8gdXNlZCBieSBuYXRpdmUgY29kZQogICAgIAorICAgIHByaXZhdGUgbmF0aXZlIHZvaWQgbmF0aXZlSW5pdCgpOworICAgIHByaXZhdGUgbmF0aXZlIHZvaWQgbmF0aXZlRGVzdHJveSgpOworICAgIHByaXZhdGUgbmF0aXZlIGJvb2xlYW4gbmF0aXZlUG9sbE9uY2UoaW50IHRpbWVvdXRNaWxsaXMpOworICAgIHByaXZhdGUgbmF0aXZlIHZvaWQgbmF0aXZlV2FrZSgpOworCiAgICAgLyoqCiAgICAgICogQ2FsbGJhY2sgaW50ZXJmYWNlIGZvciBkaXNjb3ZlcmluZyB3aGVuIGEgdGhyZWFkIGlzIGdvaW5nIHRvIGJsb2NrCiAgICAgICogd2FpdGluZyBmb3IgbW9yZSBtZXNzYWdlcy4KQEAgLTg0LDIyICs5MCwzOSBAQAogICAgICAgICAgICAgbUlkbGVIYW5kbGVycy5yZW1vdmUoaGFuZGxlcik7CiAgICAgICAgIH0KICAgICB9Ci0KKyAgICAKICAgICBNZXNzYWdlUXVldWUoKSB7CisgICAgICAgIG5hdGl2ZUluaXQoKTsKKyAgICB9CisgICAgCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgZmluYWxpemUoKSB0aHJvd3MgVGhyb3dhYmxlIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG5hdGl2ZURlc3Ryb3koKTsKKyAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgIHN1cGVyLmZpbmFsaXplKCk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBmaW5hbCBNZXNzYWdlIG5leHQoKSB7CiAgICAgICAgIGJvb2xlYW4gdHJ5SWRsZSA9IHRydWU7CisgICAgICAgIC8vIHdoZW4gd2Ugc3RhcnQgb3V0LCB3ZSdsbCBqdXN0IHRvdWNoIHRoZSBpbnB1dCBwaXBlcyBhbmQgdGhlbiBnbyBmcm9tIHRoZXJlCisgICAgICAgIGludCB0aW1lVG9OZXh0RXZlbnRNaWxsaXMgPSAwOwogCiAgICAgICAgIHdoaWxlICh0cnVlKSB7CiAgICAgICAgICAgICBsb25nIG5vdzsKICAgICAgICAgICAgIE9iamVjdFtdIGlkbGVycyA9IG51bGw7Ci0gICAgCisKKyAgICAgICAgICAgIGJvb2xlYW4gZGlzcGF0Y2hlZCA9IG5hdGl2ZVBvbGxPbmNlKHRpbWVUb05leHRFdmVudE1pbGxpcyk7CisKICAgICAgICAgICAgIC8vIFRyeSB0byByZXRyaWV2ZSB0aGUgbmV4dCBtZXNzYWdlLCByZXR1cm5pbmcgaWYgZm91bmQuCiAgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKICAgICAgICAgICAgICAgICBub3cgPSBTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKTsKICAgICAgICAgICAgICAgICBNZXNzYWdlIG1zZyA9IHB1bGxOZXh0TG9ja2VkKG5vdyk7Ci0gICAgICAgICAgICAgICAgaWYgKG1zZyAhPSBudWxsKSByZXR1cm4gbXNnOworICAgICAgICAgICAgICAgIGlmIChtc2cgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gbXNnOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICBpZiAodHJ5SWRsZSAmJiBtSWRsZUhhbmRsZXJzLnNpemUoKSA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgaWRsZXJzID0gbUlkbGVIYW5kbGVycy50b0FycmF5KCk7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTM1LDIwICsxNTgsMjIgQEAKIAogICAgICAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7CiAgICAgICAgICAgICAgICAgLy8gTm8gbWVzc2FnZXMsIG5vYm9keSB0byB0ZWxsIGFib3V0IGl0Li4uICB0aW1lIHRvIHdhaXQhCi0gICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1NZXNzYWdlcyAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobU1lc3NhZ2VzLndoZW4tbm93ID4gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJpbmRlci5mbHVzaFBlbmRpbmdDb21tYW5kcygpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMud2FpdChtTWVzc2FnZXMud2hlbi1ub3cpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChtTWVzc2FnZXMgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBsb25nIGxvbmdUaW1lVG9OZXh0RXZlbnRNaWxsaXMgPSBtTWVzc2FnZXMud2hlbiAtIG5vdzsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmIChsb25nVGltZVRvTmV4dEV2ZW50TWlsbGlzID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgQmluZGVyLmZsdXNoUGVuZGluZ0NvbW1hbmRzKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLndhaXQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVUb05leHRFdmVudE1pbGxpcyA9IChpbnQpIE1hdGgubWluKGxvbmdUaW1lVG9OZXh0RXZlbnRNaWxsaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEludGVnZXIuTUFYX1ZBTFVFKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVUb05leHRFdmVudE1pbGxpcyA9IDA7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY2F0Y2ggKEludGVycnVwdGVkRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBCaW5kZXIuZmx1c2hQZW5kaW5nQ29tbWFuZHMoKTsKKyAgICAgICAgICAgICAgICAgICAgdGltZVRvTmV4dEV2ZW50TWlsbGlzID0gLTE7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gbG9vcCB0byB0aGUgd2hpbGUodHJ1ZSkgYW5kIGRvIHRoZSBhcHByb3ByaWF0ZSBuYXRpdmVXYWl0KHdoZW4pCiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE5MCw3ICsyMTUsNiBAQAogICAgICAgICAgICAgaWYgKHAgPT0gbnVsbCB8fCB3aGVuID09IDAgfHwgd2hlbiA8IHAud2hlbikgewogICAgICAgICAgICAgICAgIG1zZy5uZXh0ID0gcDsKICAgICAgICAgICAgICAgICBtTWVzc2FnZXMgPSBtc2c7Ci0gICAgICAgICAgICAgICAgdGhpcy5ub3RpZnkoKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgTWVzc2FnZSBwcmV2ID0gbnVsbDsKICAgICAgICAgICAgICAgICB3aGlsZSAocCAhPSBudWxsICYmIHAud2hlbiA8PSB3aGVuKSB7CkBAIC0xOTksOCArMjIzLDggQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbXNnLm5leHQgPSBwcmV2Lm5leHQ7CiAgICAgICAgICAgICAgICAgcHJldi5uZXh0ID0gbXNnOwotICAgICAgICAgICAgICAgIHRoaXMubm90aWZ5KCk7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBuYXRpdmVXYWtlKCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQpAQCAtMzE3LDExICszNDEsNCBAQAogICAgICAgICB9CiAgICAgfQogICAgICovCi0KLSAgICB2b2lkIHBva2UoKQotICAgIHsKLSAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7Ci0gICAgICAgICAgICB0aGlzLm5vdGlmeSgpOwotICAgICAgICB9Ci0gICAgfQogfQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvb3MvUGFyY2VsRmlsZURlc2NyaXB0b3IuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL29zL1BhcmNlbEZpbGVEZXNjcmlwdG9yLmphdmEKaW5kZXggMGEzYjJjZi4uZDI2ZjA2NiAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvb3MvUGFyY2VsRmlsZURlc2NyaXB0b3IuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9vcy9QYXJjZWxGaWxlRGVzY3JpcHRvci5qYXZhCkBAIC0xNzksNyArMTc5LDcgQEAKICAgICAvKioKICAgICAgKiBBbiBJbnB1dFN0cmVhbSB5b3UgY2FuIGNyZWF0ZSBvbiBhIFBhcmNlbEZpbGVEZXNjcmlwdG9yLCB3aGljaCB3aWxsCiAgICAgICogdGFrZSBjYXJlIG9mIGNhbGxpbmcge0BsaW5rIFBhcmNlbEZpbGVEZXNjcmlwdG9yI2Nsb3NlCi0gICAgICogUGFyY2VsRmlsZURlc2NyaXRvci5jbG9zZSgpfSBmb3IgeW91IHdoZW4gdGhlIHN0cmVhbSBpcyBjbG9zZWQuCisgICAgICogUGFyY2VsRmlsZURlc2NyaXB0b3IuY2xvc2UoKX0gZm9yIHlvdSB3aGVuIHRoZSBzdHJlYW0gaXMgY2xvc2VkLgogICAgICAqLwogICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgQXV0b0Nsb3NlSW5wdXRTdHJlYW0gZXh0ZW5kcyBGaWxlSW5wdXRTdHJlYW0gewogICAgICAgICBwcml2YXRlIGZpbmFsIFBhcmNlbEZpbGVEZXNjcmlwdG9yIG1GZDsKQEAgLTE5OCw3ICsxOTgsNyBAQAogICAgIC8qKgogICAgICAqIEFuIE91dHB1dFN0cmVhbSB5b3UgY2FuIGNyZWF0ZSBvbiBhIFBhcmNlbEZpbGVEZXNjcmlwdG9yLCB3aGljaCB3aWxsCiAgICAgICogdGFrZSBjYXJlIG9mIGNhbGxpbmcge0BsaW5rIFBhcmNlbEZpbGVEZXNjcmlwdG9yI2Nsb3NlCi0gICAgICogUGFyY2VsRmlsZURlc2NyaXRvci5jbG9zZSgpfSBmb3IgeW91IHdoZW4gdGhlIHN0cmVhbSBpcyBjbG9zZWQuCisgICAgICogUGFyY2VsRmlsZURlc2NyaXB0b3IuY2xvc2UoKX0gZm9yIHlvdSB3aGVuIHRoZSBzdHJlYW0gaXMgY2xvc2VkLgogICAgICAqLwogICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgQXV0b0Nsb3NlT3V0cHV0U3RyZWFtIGV4dGVuZHMgRmlsZU91dHB1dFN0cmVhbSB7CiAgICAgICAgIHByaXZhdGUgZmluYWwgUGFyY2VsRmlsZURlc2NyaXB0b3IgbUZkOwpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvb3MvUHJvY2Vzcy5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvb3MvUHJvY2Vzcy5qYXZhCmluZGV4IDU2NDBhMDYuLmY2OTVkYmIgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL29zL1Byb2Nlc3MuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9vcy9Qcm9jZXNzLmphdmEKQEAgLTYyNiw2ICs2MjYsMTUgQEAKICAgICAgICAgICAgIHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24sIFNlY3VyaXR5RXhjZXB0aW9uOwogCiAgICAgLyoqCisgICAgICogQ2FsbCB3aXRoICdmYWxzZScgdG8gY2F1c2UgZnV0dXJlIGNhbGxzIHRvIHtAbGluayAjc2V0VGhyZWFkUHJpb3JpdHkoaW50KX0gdG8KKyAgICAgKiB0aHJvdyBhbiBleGNlcHRpb24gaWYgcGFzc2VkIGEgYmFja2dyb3VuZC1sZXZlbCB0aHJlYWQgcHJpb3JpdHkuICBUaGlzIGlzIG9ubHkKKyAgICAgKiBlZmZlY3RpdmUgaWYgdGhlIEpOSSBsYXllciBpcyBidWlsdCB3aXRoIEdVQVJEX1RIUkVBRF9QUklPUklUWSBkZWZpbmVkIHRvIDEuCisgICAgICoKKyAgICAgKiBAaGlkZQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgbmF0aXZlIHZvaWQgc2V0Q2FuU2VsZkJhY2tncm91bmQoYm9vbGVhbiBiYWNrZ3JvdW5kT2spOworCisgICAgLyoqCiAgICAgICogU2V0cyB0aGUgc2NoZWR1bGluZyBncm91cCBmb3IgYSB0aHJlYWQuCiAgICAgICogQGhpZGUKICAgICAgKiBAcGFyYW0gdGlkIFRoZSBpbmRlbnRpZmllciBvZiB0aGUgdGhyZWFkL3Byb2Nlc3MgdG8gY2hhbmdlLgpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvb3MvUmVjb3ZlcnlTeXN0ZW0uamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL29zL1JlY292ZXJ5U3lzdGVtLmphdmEKaW5kZXggYjZkYzFiNS4uNWZlYTZmZSAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvb3MvUmVjb3ZlcnlTeXN0ZW0uamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9vcy9SZWNvdmVyeVN5c3RlbS5qYXZhCkBAIC0zNDgsNiArMzQ4LDIzIEBACiAgICAgfQogCiAgICAgLyoqCisgICAgICogUmVib290IGludG8gdGhlIHJlY292ZXJ5IHN5c3RlbSB0byB3aXBlIHRoZSAvZGF0YSBwYXJ0aXRpb24gYW5kIHRvZ2dsZQorICAgICAqIEVuY3J5cHRlZCBGaWxlIFN5c3RlbXMgb24vb2ZmLgorICAgICAqIEBwYXJhbSBleHRyYXMgdG8gYWRkIHRvIHRoZSBSRUNPVkVSWV9DT01QTEVURUQgaW50ZW50IGFmdGVyIHJlYm9vdGluZy4KKyAgICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uIGlmIHNvbWV0aGluZyBnb2VzIHdyb25nLgorICAgICAqCisgICAgICogQGhpZGUKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIHZvaWQgcmVib290VG9nZ2xlRUZTKENvbnRleHQgY29udGV4dCwgYm9vbGVhbiBlZnNFbmFibGVkKQorICAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24geworICAgICAgICBpZiAoZWZzRW5hYmxlZCkgeworICAgICAgICAgICAgYm9vdENvbW1hbmQoY29udGV4dCwgIi0tc2V0X2VuY3J5cHRlZF9maWxlc3lzdGVtPW9uIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBib290Q29tbWFuZChjb250ZXh0LCAiLS1zZXRfZW5jcnlwdGVkX2ZpbGVzeXN0ZW09b2ZmIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKICAgICAgKiBSZWJvb3QgaW50byB0aGUgcmVjb3Zlcnkgc3lzdGVtIHdpdGggdGhlIHN1cHBsaWVkIGFyZ3VtZW50LgogICAgICAqIEBwYXJhbSBhcmcgdG8gcGFzcyB0byB0aGUgcmVjb3ZlcnkgdXRpbGl0eS4KICAgICAgKiBAdGhyb3dzIElPRXhjZXB0aW9uIGlmIHNvbWV0aGluZyBnb2VzIHdyb25nLgpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvb3MvU3RyaWN0TW9kZS5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvb3MvU3RyaWN0TW9kZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliMTg3MTkKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9vcy9TdHJpY3RNb2RlLmphdmEKQEAgLTAsMCArMSwyNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBhbmRyb2lkLm9zOworCitpbXBvcnQgYW5kcm9pZC5hcHAuQWN0aXZpdHlNYW5hZ2VyTmF0aXZlOworaW1wb3J0IGFuZHJvaWQuYXBwLkFwcGxpY2F0aW9uRXJyb3JSZXBvcnQ7CitpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKKworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLm9zLlJ1bnRpbWVJbml0OworCitpbXBvcnQgZGFsdmlrLnN5c3RlbS5CbG9ja0d1YXJkOworCitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CisKKy8qKgorICogPHA+U3RyaWN0TW9kZSBsZXRzIHlvdSBpbXBvc2Ugc3RyaWN0ZXIgcnVsZXMgdW5kZXIgd2hpY2ggeW91cgorICogYXBwbGljYXRpb24gcnVucy48L3A+CisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBTdHJpY3RNb2RlIHsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gIlN0cmljdE1vZGUiOworCisgICAgLy8gT25seSBsb2cgYSBkdXBsaWNhdGUgc3RhY2sgdHJhY2UgdG8gdGhlIGxvZ3MgZXZlcnkgc2Vjb25kLgorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgTUlOX0xPR19JTlRFUlZBTF9NUyA9IDEwMDA7CisKKyAgICAvLyBPbmx5IHNob3cgYW4gYW5ub3lpbmcgZGlhbG9nIGF0IG1vc3QgZXZlcnkgMzAgc2Vjb25kcworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgTUlOX0RJQUxPR19JTlRFUlZBTF9NUyA9IDMwMDAwOworCisgICAgcHJpdmF0ZSBTdHJpY3RNb2RlKCkge30KKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IERJU0FMTE9XX0RJU0tfV1JJVEUgPSAweDAxOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IERJU0FMTE9XX0RJU0tfUkVBRCA9IDB4MDI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRElTQUxMT1dfTkVUV09SSyA9IDB4MDQ7CisKKyAgICAvKiogQGhpZGUgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBESVNBTExPV19NQVNLID0KKyAgICAgICAgICAgIERJU0FMTE9XX0RJU0tfV1JJVEUgfCBESVNBTExPV19ESVNLX1JFQUQgfCBESVNBTExPV19ORVRXT1JLOworCisgICAgLyoqCisgICAgICogRmxhZyB0byBsb2cgdG8gdGhlIHN5c3RlbSBsb2cuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUEVOQUxUWV9MT0cgPSAweDEwOyAgLy8gbm9ybWFsIGFuZHJvaWQudXRpbC5Mb2cKKworICAgIC8qKgorICAgICAqIFNob3cgYW4gYW5ub3lpbmcgZGlhbG9nIHRvIHRoZSB1c2VyLiAgV2lsbCBiZSByYXRlLWxpbWl0ZWQgdG8gYmUgb25seQorICAgICAqIGEgbGl0dGxlIGFubm95aW5nLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBFTkFMVFlfRElBTE9HID0gMHgyMDsKKworICAgIC8qKgorICAgICAqIENyYXNoIGhhcmQgaWYgcG9saWN5IGlzIHZpb2xhdGVkLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBFTkFMVFlfREVBVEggPSAweDQwOworCisgICAgLyoqCisgICAgICogTG9nIGEgc3RhY2t0cmFjZSB0byB0aGUgRHJvcEJveCBvbiBwb2xpY3kgdmlvbGF0aW9uLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBFTkFMVFlfRFJPUEJPWCA9IDB4ODA7CisKKyAgICAvKiogQGhpZGUgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBQRU5BTFRZX01BU0sgPQorICAgICAgICAgICAgUEVOQUxUWV9MT0cgfCBQRU5BTFRZX0RJQUxPRyB8CisgICAgICAgICAgICBQRU5BTFRZX0RST1BCT1ggfCBQRU5BTFRZX0RFQVRIOworCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgcG9saWN5IGZvciB3aGF0IGFjdGlvbnMgdGhlIGN1cnJlbnQgdGhyZWFkIGlzIGRlbmllZCwKKyAgICAgKiBhcyB3ZWxsIGFzIHRoZSBwZW5hbHR5IGZvciB2aW9sYXRpbmcgdGhlIHBvbGljeS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBwb2xpY3lNYXNrIGEgYml0bWFzayBvZiBESVNBTExPV18qIGFuZCBQRU5BTFRZXyogdmFsdWVzLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBzZXRUaHJlYWRCbG9ja2luZ1BvbGljeShmaW5hbCBpbnQgcG9saWN5TWFzaykgeworICAgICAgICBpZiAocG9saWN5TWFzayA9PSAwKSB7CisgICAgICAgICAgICBCbG9ja0d1YXJkLnNldFRocmVhZFBvbGljeShCbG9ja0d1YXJkLkxBWF9QT0xJQ1kpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIEJsb2NrR3VhcmQuUG9saWN5IHBvbGljeSA9IEJsb2NrR3VhcmQuZ2V0VGhyZWFkUG9saWN5KCk7CisgICAgICAgIGlmICghKHBvbGljeSBpbnN0YW5jZW9mIEFuZHJvaWRCbG9ja0d1YXJkUG9saWN5KSkgeworICAgICAgICAgICAgQmxvY2tHdWFyZC5zZXRUaHJlYWRQb2xpY3kobmV3IEFuZHJvaWRCbG9ja0d1YXJkUG9saWN5KHBvbGljeU1hc2spKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIEFuZHJvaWRCbG9ja0d1YXJkUG9saWN5IGFuZHJvaWRQb2xpY3kgPSAoQW5kcm9pZEJsb2NrR3VhcmRQb2xpY3kpIHBvbGljeTsKKyAgICAgICAgICAgIGFuZHJvaWRQb2xpY3kuc2V0UG9saWN5TWFzayhwb2xpY3lNYXNrKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGJpdG1hc2sgb2YgdGhlIGN1cnJlbnQgdGhyZWFkJ3MgYmxvY2tpbmcgcG9saWN5LgorICAgICAqCisgICAgICogQHJldHVybiB0aGUgYml0bWFzayBvZiBhbGwgdGhlIERJU0FMTE9XXyogYW5kIFBFTkFMVFlfKiBiaXRzIGN1cnJlbnRseSBlbmFibGVkCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBpbnQgZ2V0VGhyZWFkQmxvY2tpbmdQb2xpY3koKSB7CisgICAgICAgIHJldHVybiBCbG9ja0d1YXJkLmdldFRocmVhZFBvbGljeSgpLmdldFBvbGljeU1hc2soKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBBbmRyb2lkQmxvY2tHdWFyZFBvbGljeSBpbXBsZW1lbnRzIEJsb2NrR3VhcmQuUG9saWN5IHsKKyAgICAgICAgcHJpdmF0ZSBpbnQgbVBvbGljeU1hc2s7CisKKyAgICAgICAgLy8gTWFwIGZyb20gdmlvbGF0aW9uIHN0YWNrdHJhY2UgaGFzaGNvZGUgLT4gdXB0aW1lTWlsbGlzIG9mCisgICAgICAgIC8vIGxhc3QgdmlvbGF0aW9uLiAgTm8gbG9ja2luZyBuZWVkZWQsIGFzIHRoaXMgaXMgb25seQorICAgICAgICAvLyBhY2Nlc3NlZCBieSB0aGUgc2FtZSB0aHJlYWQuCisgICAgICAgIHByaXZhdGUgZmluYWwgSGFzaE1hcDxJbnRlZ2VyLCBMb25nPiBtTGFzdFZpb2xhdGlvblRpbWUgPSBuZXcgSGFzaE1hcDxJbnRlZ2VyLCBMb25nPigpOworCisgICAgICAgIHB1YmxpYyBBbmRyb2lkQmxvY2tHdWFyZFBvbGljeShmaW5hbCBpbnQgcG9saWN5TWFzaykgeworICAgICAgICAgICAgbVBvbGljeU1hc2sgPSBwb2xpY3lNYXNrOworICAgICAgICB9CisKKyAgICAgICAgLy8gUGFydCBvZiBCbG9ja0d1YXJkLlBvbGljeSBpbnRlcmZhY2U6CisgICAgICAgIHB1YmxpYyBpbnQgZ2V0UG9saWN5TWFzaygpIHsKKyAgICAgICAgICAgIHJldHVybiBtUG9saWN5TWFzazsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFBhcnQgb2YgQmxvY2tHdWFyZC5Qb2xpY3kgaW50ZXJmYWNlOgorICAgICAgICBwdWJsaWMgdm9pZCBvbldyaXRlVG9EaXNrKCkgeworICAgICAgICAgICAgaWYgKChtUG9saWN5TWFzayAmIERJU0FMTE9XX0RJU0tfV1JJVEUpID09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBoYW5kbGVWaW9sYXRpb24oRElTQUxMT1dfRElTS19XUklURSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBQYXJ0IG9mIEJsb2NrR3VhcmQuUG9saWN5IGludGVyZmFjZToKKyAgICAgICAgcHVibGljIHZvaWQgb25SZWFkRnJvbURpc2soKSB7CisgICAgICAgICAgICBpZiAoKG1Qb2xpY3lNYXNrICYgRElTQUxMT1dfRElTS19SRUFEKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaGFuZGxlVmlvbGF0aW9uKERJU0FMTE9XX0RJU0tfUkVBRCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBQYXJ0IG9mIEJsb2NrR3VhcmQuUG9saWN5IGludGVyZmFjZToKKyAgICAgICAgcHVibGljIHZvaWQgb25OZXR3b3JrKCkgeworICAgICAgICAgICAgaWYgKChtUG9saWN5TWFzayAmIERJU0FMTE9XX05FVFdPUkspID09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBoYW5kbGVWaW9sYXRpb24oRElTQUxMT1dfTkVUV09SSyk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBzZXRQb2xpY3lNYXNrKGludCBwb2xpY3lNYXNrKSB7CisgICAgICAgICAgICBtUG9saWN5TWFzayA9IHBvbGljeU1hc2s7CisgICAgICAgIH0KKworICAgICAgICBwcml2YXRlIHZvaWQgaGFuZGxlVmlvbGF0aW9uKGludCB2aW9sYXRpb25CaXQpIHsKKyAgICAgICAgICAgIGZpbmFsIEJsb2NrR3VhcmQuQmxvY2tHdWFyZFBvbGljeUV4Y2VwdGlvbiB2aW9sYXRpb24gPQorICAgICAgICAgICAgICAgICAgICBuZXcgQmxvY2tHdWFyZC5CbG9ja0d1YXJkUG9saWN5RXhjZXB0aW9uKG1Qb2xpY3lNYXNrLCB2aW9sYXRpb25CaXQpOworICAgICAgICAgICAgdmlvbGF0aW9uLmZpbGxJblN0YWNrVHJhY2UoKTsKKworICAgICAgICAgICAgTG9vcGVyIGxvb3BlciA9IExvb3Blci5teUxvb3BlcigpOworICAgICAgICAgICAgaWYgKGxvb3BlciA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgLy8gV2l0aG91dCBhIExvb3Blciwgd2UncmUgdW5hYmxlIHRvIHRpbWUgaG93IGxvbmcgdGhlCisgICAgICAgICAgICAgICAgLy8gdmlvbGF0aW9uIHRha2VzIHBsYWNlLiAgVGhpcyBjYXNlIHNob3VsZCBiZSByYXJlLAorICAgICAgICAgICAgICAgIC8vIGFzIG1vc3QgdXNlcnMgd2lsbCBjYXJlIGFib3V0IHRpbWluZyB2aW9sYXRpb25zCisgICAgICAgICAgICAgICAgLy8gdGhhdCBoYXBwZW4gb24gdGhlaXIgbWFpbiBVSSB0aHJlYWQuCisgICAgICAgICAgICAgICAgaGFuZGxlVmlvbGF0aW9uV2l0aFRpbWUodmlvbGF0aW9uLCAtMUwgLyogbm8gdGltZSAqLyk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIE1lc3NhZ2VRdWV1ZSBxdWV1ZSA9IExvb3Blci5teVF1ZXVlKCk7CisgICAgICAgICAgICAgICAgZmluYWwgbG9uZyB2aW9sYXRpb25UaW1lID0gU3lzdGVtQ2xvY2sudXB0aW1lTWlsbGlzKCk7CisgICAgICAgICAgICAgICAgcXVldWUuYWRkSWRsZUhhbmRsZXIobmV3IE1lc3NhZ2VRdWV1ZS5JZGxlSGFuZGxlcigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBib29sZWFuIHF1ZXVlSWRsZSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nIGFmdGVyVmlvbGF0aW9uVGltZSA9IFN5c3RlbUNsb2NrLnVwdGltZU1pbGxpcygpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVZpb2xhdGlvbldpdGhUaW1lKHZpb2xhdGlvbiwgYWZ0ZXJWaW9sYXRpb25UaW1lIC0gdmlvbGF0aW9uVGltZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAgLy8gcmVtb3ZlIHRoaXMgaWRsZSBoYW5kbGVyIGZyb20gdGhlIGFycmF5CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZSB2b2lkIGhhbmRsZVZpb2xhdGlvbldpdGhUaW1lKAorICAgICAgICAgICAgQmxvY2tHdWFyZC5CbG9ja0d1YXJkUG9saWN5RXhjZXB0aW9uIHZpb2xhdGlvbiwKKyAgICAgICAgICAgIGxvbmcgZHVyYXRpb25NaWxsaXMpIHsKKworICAgICAgICAgICAgLy8gSXQncyBwb3NzaWJsZSAoZXZlbiBxdWl0ZSBsaWtlbHkpIHRoYXQgbVBvbGljeU1hc2sgaGFzCisgICAgICAgICAgICAvLyBjaGFuZ2VkIGZyb20gdGhlIHRpbWUgdGhlIHZpb2xhdGlvbiBmaXJlZCBhbmQgbm93CisgICAgICAgICAgICAvLyAoYWZ0ZXIgdGhlIHZpb2xhdGluZyBjb2RlIHJhbikgZHVlIHRvIHBlb3BsZSB3aG8KKyAgICAgICAgICAgIC8vIHB1c2gvcG9wIHRlbXBvcmFyeSBwb2xpY3kgaW4gcmVnaW9ucyBvZiBjb2RlLiAgU28gdXNlCisgICAgICAgICAgICAvLyB0aGUgb2xkIHBvbGljeSBoZXJlLgorICAgICAgICAgICAgaW50IHBvbGljeSA9IHZpb2xhdGlvbi5nZXRQb2xpY3koKTsKKworICAgICAgICAgICAgLy8gTm90IF9yZWFsbHlfIGEgQ3Jhc2gsIGJ1dCB3ZSB1c2UgdGhlIHNhbWUgZGF0YSBzdHJ1Y3R1cmUuLi4KKyAgICAgICAgICAgIEFwcGxpY2F0aW9uRXJyb3JSZXBvcnQuQ3Jhc2hJbmZvIGNyYXNoSW5mbyA9CisgICAgICAgICAgICAgICAgICAgIG5ldyBBcHBsaWNhdGlvbkVycm9yUmVwb3J0LkNyYXNoSW5mbyh2aW9sYXRpb24pOworICAgICAgICAgICAgY3Jhc2hJbmZvLmR1cmF0aW9uTWlsbGlzID0gZHVyYXRpb25NaWxsaXM7CisKKyAgICAgICAgICAgIC8vIE5vdCBwZXJmZWN0LCBidXQgZmFzdCBhbmQgZ29vZCBlbm91Z2ggZm9yIGR1cCBzdXBwcmVzc2lvbi4KKyAgICAgICAgICAgIEludGVnZXIgY3Jhc2hGaW5nZXJwcmludCA9IGNyYXNoSW5mby5zdGFja1RyYWNlLmhhc2hDb2RlKCk7CisgICAgICAgICAgICBsb25nIGxhc3RWaW9sYXRpb25UaW1lID0gMDsKKyAgICAgICAgICAgIGlmIChtTGFzdFZpb2xhdGlvblRpbWUuY29udGFpbnNLZXkoY3Jhc2hGaW5nZXJwcmludCkpIHsKKyAgICAgICAgICAgICAgICBsYXN0VmlvbGF0aW9uVGltZSA9IG1MYXN0VmlvbGF0aW9uVGltZS5nZXQoY3Jhc2hGaW5nZXJwcmludCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsb25nIG5vdyA9IFN5c3RlbUNsb2NrLnVwdGltZU1pbGxpcygpOworICAgICAgICAgICAgbUxhc3RWaW9sYXRpb25UaW1lLnB1dChjcmFzaEZpbmdlcnByaW50LCBub3cpOworICAgICAgICAgICAgbG9uZyB0aW1lU2luY2VMYXN0VmlvbGF0aW9uTWlsbGlzID0gbGFzdFZpb2xhdGlvblRpbWUgPT0gMCA/CisgICAgICAgICAgICAgICAgICAgIExvbmcuTUFYX1ZBTFVFIDogKG5vdyAtIGxhc3RWaW9sYXRpb25UaW1lKTsKKworICAgICAgICAgICAgaWYgKChwb2xpY3kgJiBQRU5BTFRZX0xPRykgIT0gMCAmJgorICAgICAgICAgICAgICAgIHRpbWVTaW5jZUxhc3RWaW9sYXRpb25NaWxsaXMgPiBNSU5fTE9HX0lOVEVSVkFMX01TKSB7CisgICAgICAgICAgICAgICAgaWYgKGR1cmF0aW9uTWlsbGlzICE9IC0xKSB7CisgICAgICAgICAgICAgICAgICAgIExvZy5kKFRBRywgIlN0cmljdE1vZGUgcG9saWN5IHZpb2xhdGlvbjsgfmR1cmF0aW9uPSIgKyBkdXJhdGlvbk1pbGxpcyArICIgbXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICB2aW9sYXRpb24pOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIExvZy5kKFRBRywgIlN0cmljdE1vZGUgcG9saWN5IHZpb2xhdGlvbi4iLCB2aW9sYXRpb24pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIHZpb2xhdGlvbk1hc2ssIHBhc3NlZCB0byBBY3Rpdml0eU1hbmFnZXIsIGlzIGEKKyAgICAgICAgICAgIC8vIHN1YnNldCBvZiB0aGUgb3JpZ2luYWwgU3RyaWN0TW9kZSBwb2xpY3kgYml0bWFzaywgd2l0aAorICAgICAgICAgICAgLy8gb25seSB0aGUgYml0IHZpb2xhdGVkIGFuZCBwZW5hbHR5IGJpdHMgdG8gYmUgZXhlY3V0ZWQKKyAgICAgICAgICAgIC8vIGJ5IHRoZSBBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlIHJlbWFpbmluZyBzZXQuCisgICAgICAgICAgICBpbnQgdmlvbGF0aW9uTWFzayA9IDA7CisKKyAgICAgICAgICAgIGlmICgocG9saWN5ICYgUEVOQUxUWV9ESUFMT0cpICE9IDAgJiYKKyAgICAgICAgICAgICAgICB0aW1lU2luY2VMYXN0VmlvbGF0aW9uTWlsbGlzID4gTUlOX0RJQUxPR19JTlRFUlZBTF9NUykgeworICAgICAgICAgICAgICAgIHZpb2xhdGlvbk1hc2sgfD0gUEVOQUxUWV9ESUFMT0c7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICgocG9saWN5ICYgUEVOQUxUWV9EUk9QQk9YKSAhPSAwICYmIGxhc3RWaW9sYXRpb25UaW1lID09IDApIHsKKyAgICAgICAgICAgICAgICB2aW9sYXRpb25NYXNrIHw9IFBFTkFMVFlfRFJPUEJPWDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHZpb2xhdGlvbk1hc2sgIT0gMCkgeworICAgICAgICAgICAgICAgIHZpb2xhdGlvbk1hc2sgfD0gdmlvbGF0aW9uLmdldFBvbGljeVZpb2xhdGlvbigpOworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5TWFuYWdlck5hdGl2ZS5nZXREZWZhdWx0KCkuaGFuZGxlQXBwbGljYXRpb25TdHJpY3RNb2RlVmlvbGF0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgUnVudGltZUluaXQuZ2V0QXBwbGljYXRpb25PYmplY3QoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZpb2xhdGlvbk1hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgQXBwbGljYXRpb25FcnJvclJlcG9ydC5DcmFzaEluZm8odmlvbGF0aW9uKSk7CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgTG9nLmUoVEFHLCAiUmVtb3RlRXhjZXB0aW9uIHRyeWluZyB0byBoYW5kbGUgU3RyaWN0TW9kZSB2aW9sYXRpb24iLCBlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICgocG9saWN5ICYgUEVOQUxUWV9ERUFUSCkgIT0gMCkgeworICAgICAgICAgICAgICAgIFN5c3RlbS5lcnIucHJpbnRsbigiU3RyaWN0TW9kZSBwb2xpY3kgdmlvbGF0aW9uIHdpdGggUE9MSUNZX0RFQVRIOyBzaHV0dGluZyBkb3duLiIpOworICAgICAgICAgICAgICAgIFByb2Nlc3Mua2lsbFByb2Nlc3MoUHJvY2Vzcy5teVBpZCgpKTsKKyAgICAgICAgICAgICAgICBTeXN0ZW0uZXhpdCgxMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9waW0vdmNhcmQvVkNhcmRCdWlsZGVyLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9waW0vdmNhcmQvVkNhcmRCdWlsZGVyLmphdmEKaW5kZXggMGE2NDE1ZC4uMWRhNmQ3YSAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvcGltL3ZjYXJkL1ZDYXJkQnVpbGRlci5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL3BpbS92Y2FyZC9WQ2FyZEJ1aWxkZXIuamF2YQpAQCAtNjQyLDIyICs2NDIsMTggQEAKICAgICAgICAgICAgICAgICBpZiAoVGV4dFV0aWxzLmlzRW1wdHkocGhvbmVOdW1iZXIpKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpbnQgdHlwZSA9ICh0eXBlQXNPYmplY3QgIT0gbnVsbCA/IHR5cGVBc09iamVjdCA6IERFRkFVTFRfUEhPTkVfVFlQRSk7Ci0gICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gUGhvbmUuVFlQRV9QQUdFUikgeworCisgICAgICAgICAgICAgICAgLy8gUEFHRVIgbnVtYmVyIG5lZWRzIHVuZm9ybWF0dGVkICJwaG9uZSBudW1iZXIiLgorICAgICAgICAgICAgICAgIGZpbmFsIGludCB0eXBlID0gKHR5cGVBc09iamVjdCAhPSBudWxsID8gdHlwZUFzT2JqZWN0IDogREVGQVVMVF9QSE9ORV9UWVBFKTsKKyAgICAgICAgICAgICAgICBpZiAodHlwZSA9PSBQaG9uZS5UWVBFX1BBR0VSIHx8CisgICAgICAgICAgICAgICAgICAgICAgICBWQ2FyZENvbmZpZy5yZWZyYWluUGhvbmVOdW1iZXJGb3JtYXR0aW5nKG1WQ2FyZFR5cGUpKSB7CiAgICAgICAgICAgICAgICAgICAgIHBob25lTGluZUV4aXN0cyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGlmICghcGhvbmVTZXQuY29udGFpbnMocGhvbmVOdW1iZXIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBwaG9uZVNldC5hZGQocGhvbmVOdW1iZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kVGVsTGluZSh0eXBlLCBsYWJlbCwgcGhvbmVOdW1iZXIsIGlzUHJpbWFyeSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAvLyBUaGUgZW50cnkgIm1heSIgaGF2ZSBzZXZlcmFsIHBob25lIG51bWJlcnMgd2hlbiB0aGUgY29udGFjdCBlbnRyeSBpcwotICAgICAgICAgICAgICAgICAgICAvLyBjb3JydXB0ZWQgYmVjYXVzZSBvZiBpdHMgb3JpZ2luYWwgc291cmNlLgotICAgICAgICAgICAgICAgICAgICAvLwotICAgICAgICAgICAgICAgICAgICAvLyBlLmcuIEkgZW5jb3VudGVyZWQgdGhlIGVudHJ5IGxpa2UgdGhlIGZvbGxvd2luZy4KLSAgICAgICAgICAgICAgICAgICAgLy8gIjExMS0yMjItMzMzMyAoTWlhbWkpXG40NDQtNTU1LTY2NjYgKEJyb3dhcmQ7IDMwNS02NTMtNjc5NiAoTWlhbWkpOyAuLi4iCi0gICAgICAgICAgICAgICAgICAgIC8vIFRoaXMga2luZCBvZiBlbnRyeSBpcyBub3QgYWJsZSB0byBiZSBpbnNlcnRlZCB2aWEgQW5kcm9pZCBkZXZpY2VzLCBidXQKLSAgICAgICAgICAgICAgICAgICAgLy8gcG9zc2libGUgaWYgdGhlIHNvdXJjZSBvZiB0aGUgZGF0YSBpcyBhbHJlYWR5IGNvcnJ1cHRlZC4KLSAgICAgICAgICAgICAgICAgICAgTGlzdDxTdHJpbmc+IHBob25lTnVtYmVyTGlzdCA9IHNwbGl0SWZTZXZlcmFsUGhvbmVOdW1iZXJzRXhpc3QocGhvbmVOdW1iZXIpOworICAgICAgICAgICAgICAgICAgICBmaW5hbCBMaXN0PFN0cmluZz4gcGhvbmVOdW1iZXJMaXN0ID0gc3BsaXRBbmRUcmltUGhvbmVOdW1iZXJzKHBob25lTnVtYmVyKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHBob25lTnVtYmVyTGlzdC5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICB9CkBAIC02NzAsNyArNjY2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaG9uZVNldC5hZGQoYWN0dWFsUGhvbmVOdW1iZXIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGVuZFRlbExpbmUodHlwZSwgbGFiZWwsIGZvcm1hdHRlZFBob25lTnVtYmVyLCBpc1ByaW1hcnkpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0gIC8vIGZvciAoU3RyaW5nIGFjdHVhbFBob25lTnVtYmVyIDogcGhvbmVOdW1iZXJMaXN0KSB7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC02ODIsMTUgKzY3OCwzOCBAQAogICAgICAgICByZXR1cm4gdGhpczsKICAgICB9CiAKLSAgICBwcml2YXRlIExpc3Q8U3RyaW5nPiBzcGxpdElmU2V2ZXJhbFBob25lTnVtYmVyc0V4aXN0KGZpbmFsIFN0cmluZyBwaG9uZU51bWJlcikgewotICAgICAgICBMaXN0PFN0cmluZz4gcGhvbmVMaXN0ID0gbmV3IEFycmF5TGlzdDxTdHJpbmc+KCk7CisgICAgLyoqCisgICAgICogPHA+CisgICAgICogU3BsaXRzIGEgZ2l2ZW4gc3RyaW5nIGV4cHJlc3NpbmcgcGhvbmUgbnVtYmVycyBpbnRvIHNldmVyYWwgc3RyaW5ncywgYW5kIHJlbW92ZQorICAgICAqIHVubmVjZXNzYXJ5IGNoYXJhY3RlcnMgaW5zaWRlIHRoZW0uIFRoZSBzaXplIG9mIGEgcmV0dXJuZWQgbGlzdCBiZWNvbWVzIDEgd2hlbgorICAgICAqIG5vIHNwbGl0IGlzIG5lZWRlZC4KKyAgICAgKiA8L3A+CisgICAgICogPHA+CisgICAgICogVGhlIGdpdmVuIG51bWJlciAibWF5IiBoYXZlIHNldmVyYWwgcGhvbmUgbnVtYmVycyB3aGVuIHRoZSBjb250YWN0IGVudHJ5IGlzIGNvcnJ1cHRlZAorICAgICAqIGJlY2F1c2Ugb2YgaXRzIG9yaWdpbmFsIHNvdXJjZS4KKyAgICAgKiBlLmcuICIxMTEtMjIyLTMzMzMgKE1pYW1pKVxuNDQ0LTU1NS02NjY2IChCcm93YXJkOyAzMDUtNjUzLTY3OTYgKE1pYW1pKSIKKyAgICAgKiA8L3A+CisgICAgICogPHA+CisgICAgICogVGhpcyBraW5kIG9mICJwaG9uZSBudW1iZXJzIiB3aWxsIG5vdCBiZSBjcmVhdGVkIHdpdGggQW5kcm9pZCB2Q2FyZCBpbXBsZW1lbnRhdGlvbiwKKyAgICAgKiBidXQgd2UgbWF5IGVuY291bnRlciB0aGVtIGlmIHRoZSBzb3VyY2Ugb2YgdGhlIGlucHV0IGRhdGEgaGFzIGFscmVhZHkgY29ycnVwdGVkCisgICAgICogaW1wbGVtZW50YXRpb24uCisgICAgICogPC9wPgorICAgICAqIDxwPgorICAgICAqIFRvIGhhbmRsZSB0aGlzIGNhc2UsIHRoaXMgbWV0aG9kIGZpcnN0IHNwbGl0cyBpdHMgaW5wdXQgaW50byBtdWx0aXBsZSBwYXJ0cworICAgICAqIChlLmcuICIxMTEtMjIyLTMzMzMgKE1pYW1pKSIsICI0NDQtNTU1LTY2NjYgKEJyb3dhcmQiLCBhbmQgMzA1NjUzLTY3OTYgKE1pYW1pKSIpIGFuZAorICAgICAqIHJlbW92ZXMgdW5uZWNlc3Nhcnkgc3RyaW5ncyBsaWtlICIoTWlhbWkpIi4KKyAgICAgKiA8L3A+CisgICAgICogPHA+CisgICAgICogRG8gbm90IGNhbGwgdGhpcyBtZXRob2Qgd2hlbiB0cmltbWluZyBpcyBpbmFwcHJvcHJpYXRlIGZvciBpdHMgcmVjZWl2ZXJzLgorICAgICAqIDwvcD4KKyAgICAgKi8KKyAgICBwcml2YXRlIExpc3Q8U3RyaW5nPiBzcGxpdEFuZFRyaW1QaG9uZU51bWJlcnMoZmluYWwgU3RyaW5nIHBob25lTnVtYmVyKSB7CisgICAgICAgIGZpbmFsIExpc3Q8U3RyaW5nPiBwaG9uZUxpc3QgPSBuZXcgQXJyYXlMaXN0PFN0cmluZz4oKTsKIAogICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXIgPSBuZXcgU3RyaW5nQnVpbGRlcigpOwogICAgICAgICBmaW5hbCBpbnQgbGVuZ3RoID0gcGhvbmVOdW1iZXIubGVuZ3RoKCk7CiAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgIGZpbmFsIGNoYXIgY2ggPSBwaG9uZU51bWJlci5jaGFyQXQoaSk7Ci0gICAgICAgICAgICAvLyBUT0RPOiBhZGQgYSB0ZXN0IGNhc2UgZm9yIHN0cmluZyB3aXRoICcrJywgYW5kIGNhcmUgdGhlIG90aGVyIHBvc3NpYmxlIGlzc3VlcwotICAgICAgICAgICAgLy8gd2hpY2ggbWF5IGhhcHBlbiBieSBpZ25vcmluZyBub24tZGlnaXRzIG90aGVyIHRoYW4gJysnLgogICAgICAgICAgICAgaWYgKENoYXJhY3Rlci5pc0RpZ2l0KGNoKSB8fCBjaCA9PSAnKycpIHsKICAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChjaCk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKChjaCA9PSAnOycgfHwgY2ggPT0gJ1xuJykgJiYgYnVpbGRlci5sZW5ndGgoKSA+IDApIHsKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL3BpbS92Y2FyZC9WQ2FyZENvbmZpZy5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvcGltL3ZjYXJkL1ZDYXJkQ29uZmlnLmphdmEKaW5kZXggMzQwOWJlNi4uODIxOTg0MCAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvcGltL3ZjYXJkL1ZDYXJkQ29uZmlnLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvcGltL3ZjYXJkL1ZDYXJkQ29uZmlnLmphdmEKQEAgLTE1LDYgKzE1LDcgQEAKICAqLwogcGFja2FnZSBhbmRyb2lkLnBpbS52Y2FyZDsKIAoraW1wb3J0IGFuZHJvaWQudGVsZXBob255LlBob25lTnVtYmVyVXRpbHM7CiBpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKIAogaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwpAQCAtMTkwLDYgKzE5MSwzMCBAQAogICAgICAqLwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZMQUdfUkVGUkFJTl9JTUFHRV9FWFBPUlQgPSAweDAyMDAwMDAwOwogCisgICAgLyoqCisgICAgICogPFA+CisgICAgICogVGhlIGZsYWcgaW5kaWNhdGluZyB0aGUgdkNhcmQgY29tcG9zZXIgZG9lcyB0b3VjaCBub3RoaW5nIHRvd2FyZCBwaG9uZSBudW1iZXIgU3RyaW5ncworICAgICAqIGJ1dCBsZWF2ZSBpdCBhcyBpcy4KKyAgICAgKiA8L1A+CisgICAgICogPFA+CisgICAgICogVGhlIHZDYXJkIHNwZWNpZmljYXRpb25zIG1lbnRpb24gbm90aGluZyB0b3dhcmQgcGhvbmUgbnVtYmVycywgd2hpbGUgc29tZSBkZXZpY2VzCisgICAgICogZG8gKHdyb25nbHksIGJ1dCB3aXRoIGlubmV2aXRhYmxlIHJlYXNvbnMpLgorICAgICAqIEZvciBleGFtcGxlLCB0aGVyZSdzIGEgcG9zc2liaWxpdHkgSmFwYW5lc2UgbW9iaWxlIHBob25lcyBhcmUgZXhwZWN0ZWQgdG8gaGF2ZQorICAgICAqIGp1c3QgbnVtYmVycywgaHlwZW5zLCBwbHVzLCBldGMuIGJ1dCBub3QgdXN1YWwgYWxwaGFiZXRzLCB3aGlsZSBVUyBtb2JpbGUgcGhvbmVzCisgICAgICogc2hvdWxkIGdldCBzdWNoIGNoYXJhY3RlcnMuIFRvIG1ha2UgZXhwb3J0ZWQgdkNhcmQgc2ltcGxlIGZvciBleHRlcm5hbCBwYXJzZXJzLAorICAgICAqIHdlIGhhdmUgdXNlZCB7QGxpbmsgUGhvbmVOdW1iZXJVdGlscyNmb3JtYXROdW1iZXIoU3RyaW5nKX0gZHVyaW5nIGV4cG9ydCwgYW5kCisgICAgICogcmVtb3ZlZCB1bm5lY2Vzc2FyeSBjaGFyYWN0ZXJzIGluc2lkZSB0aGUgbnVtYmVyIChlLmcuICIxMTEtMjIyLTMzMzMgKE1pYW1pKSIKKyAgICAgKiBiZWNvbWVzICIxMTEtMjIyLTMzMzMiKS4KKyAgICAgKiBVbmZvcnR1bmF0ZSBzaWRlIGVmZmVjdCBvZiB0aGF0IHVzZSB3YXMgc29tZSBjb250cm9sIGNoYXJhY3RlcnMgdXNlZCBpbiB0aGUgb3RoZXIKKyAgICAgKiBhcmVhcyBtYXkgYmUgYmFkbHkgYWZmZWN0ZWQgYnkgdGhlIGZvcm1hdHRpbmcuCisgICAgICogPC9QPgorICAgICAqIDxQPgorICAgICAqIFRoaXMgZmxhZyBkaXNhYmxlcyB0aGF0IGZvcm1hdHRpbmcsIGFmZmVjdGluZyBib3RoIGltcG9ydGVyIGFuZCBleHBvcnRlci4KKyAgICAgKiBJZiB0aGUgdXNlciBpcyBhd2FyZSBvZiBzb21lIHNpZGUgZWZmZWN0cyBkdWUgdG8gdGhlIGltcGxpY2l0IGZvcm1hdHRpbmcsIHVzZSB0aGlzIGZsYWcuCisgICAgICogPC9QPgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZMQUdfUkVGUkFJTl9QSE9ORV9OVU1CRVJfRk9STUFUVElORyA9IDB4MDIwMDAwMDA7CisKICAgICAvLy8vIFRoZSBmb2xsb3dpbmdzIGFyZSBWQ2FyZCB0eXBlcyBhdmFpbGFibGUgZnJvbSBpbXBvcnRlci9leHBvcnRlci4gLy8vLwogCiAgICAgLyoqCkBAIC00MzEsNiArNDU2LDEwIEBACiAgICAgICAgIHJldHVybiBzSmFwYW5lc2VNb2JpbGVUeXBlU2V0LmNvbnRhaW5zKHZjYXJkVHlwZSk7CiAgICAgfQogCisgICAgLyogcGFja2FnZSAqLyBzdGF0aWMgYm9vbGVhbiByZWZyYWluUGhvbmVOdW1iZXJGb3JtYXR0aW5nKGZpbmFsIGludCB2Y2FyZFR5cGUpIHsKKyAgICAgICAgcmV0dXJuICgodmNhcmRUeXBlICYgRkxBR19SRUZSQUlOX1BIT05FX05VTUJFUl9GT1JNQVRUSU5HKSAhPSAwKTsKKyAgICB9CisKICAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gbmVlZHNUb0NvbnZlcnRQaG9uZXRpY1N0cmluZyhmaW5hbCBpbnQgdmNhcmRUeXBlKSB7CiAgICAgICAgIHJldHVybiAoKHZjYXJkVHlwZSAmIEZMQUdfQ09OVkVSVF9QSE9ORVRJQ19OQU1FX1NUUklOR1MpICE9IDApOwogICAgIH0KQEAgLTQ0NSw0ICs0NzQsNCBAQAogCiAgICAgcHJpdmF0ZSBWQ2FyZENvbmZpZygpIHsKICAgICB9Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorfQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvcGltL3ZjYXJkL1ZDYXJkRW50cnkuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL3BpbS92Y2FyZC9WQ2FyZEVudHJ5LmphdmEKaW5kZXggMTMyNzc3MC4uN2M3ZTliOCAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvcGltL3ZjYXJkL1ZDYXJkRW50cnkuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9waW0vdmNhcmQvVkNhcmRFbnRyeS5qYXZhCkBAIC00ODgsNyArNDg4LDcgQEAKICAgICAgICAgZmluYWwgU3RyaW5nQnVpbGRlciBidWlsZGVyID0gbmV3IFN0cmluZ0J1aWxkZXIoKTsKICAgICAgICAgZmluYWwgU3RyaW5nIHRyaW1lZCA9IGRhdGEudHJpbSgpOwogICAgICAgICBmaW5hbCBTdHJpbmcgZm9ybWF0dGVkTnVtYmVyOwotICAgICAgICBpZiAodHlwZSA9PSBQaG9uZS5UWVBFX1BBR0VSKSB7CisgICAgICAgIGlmICh0eXBlID09IFBob25lLlRZUEVfUEFHRVIgfHwgVkNhcmRDb25maWcucmVmcmFpblBob25lTnVtYmVyRm9ybWF0dGluZyhtVkNhcmRUeXBlKSkgewogICAgICAgICAgICAgZm9ybWF0dGVkTnVtYmVyID0gdHJpbWVkOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZmluYWwgaW50IGxlbmd0aCA9IHRyaW1lZC5sZW5ndGgoKTsKQEAgLTUwMCw4ICs1MDAsNyBAQAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBVc2UgTkFOUCBpbiBkZWZhdWx0IHdoZW4gdGhlcmUncyBubyBpbmZvcm1hdGlvbiBhYm91dCBsb2NhbGUuCi0gICAgICAgICAgICBmaW5hbCBpbnQgZm9ybWF0dGluZ1R5cGUgPSAoVkNhcmRDb25maWcuaXNKYXBhbmVzZURldmljZShtVkNhcmRUeXBlKSA/Ci0gICAgICAgICAgICAgICAgICAgIFBob25lTnVtYmVyVXRpbHMuRk9STUFUX0pBUEFOIDogUGhvbmVOdW1iZXJVdGlscy5GT1JNQVRfTkFOUCk7CisgICAgICAgICAgICBmaW5hbCBpbnQgZm9ybWF0dGluZ1R5cGUgPSBWQ2FyZFV0aWxzLmdldFBob25lTnVtYmVyRm9ybWF0KG1WQ2FyZFR5cGUpOwogICAgICAgICAgICAgZm9ybWF0dGVkTnVtYmVyID0gUGhvbmVOdW1iZXJVdGlscy5mb3JtYXROdW1iZXIoYnVpbGRlci50b1N0cmluZygpLCBmb3JtYXR0aW5nVHlwZSk7CiAgICAgICAgIH0KICAgICAgICAgUGhvbmVEYXRhIHBob25lRGF0YSA9IG5ldyBQaG9uZURhdGEodHlwZSwgZm9ybWF0dGVkTnVtYmVyLCBsYWJlbCwgaXNQcmltYXJ5KTsKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL3ByZWZlcmVuY2UvRGlhbG9nUHJlZmVyZW5jZS5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvcHJlZmVyZW5jZS9EaWFsb2dQcmVmZXJlbmNlLmphdmEKaW5kZXggY2M0OGFlYi4uYmJhZDJiNiAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvcHJlZmVyZW5jZS9EaWFsb2dQcmVmZXJlbmNlLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvcHJlZmVyZW5jZS9EaWFsb2dQcmVmZXJlbmNlLmphdmEKQEAgLTMzLDcgKzMzLDYgQEAKIGltcG9ydCBhbmRyb2lkLnZpZXcuVmlldzsKIGltcG9ydCBhbmRyb2lkLnZpZXcuV2luZG93OwogaW1wb3J0IGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyOwotaW1wb3J0IGFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5JbnB1dE1ldGhvZE1hbmFnZXI7CiBpbXBvcnQgYW5kcm9pZC53aWRnZXQuVGV4dFZpZXc7CiAKIC8qKgpAQCAtMjc1LDcgKzI3NCw3IEBACiAgICAgcHJvdGVjdGVkIHZvaWQgc2hvd0RpYWxvZyhCdW5kbGUgc3RhdGUpIHsKICAgICAgICAgQ29udGV4dCBjb250ZXh0ID0gZ2V0Q29udGV4dCgpOwogCi0gICAgICAgIG1XaGljaEJ1dHRvbkNsaWNrZWQgPSBEaWFsb2dJbnRlcmZhY2UuQlVUVE9OMjsKKyAgICAgICAgbVdoaWNoQnV0dG9uQ2xpY2tlZCA9IERpYWxvZ0ludGVyZmFjZS5CVVRUT05fTkVHQVRJVkU7CiAgICAgICAgIAogICAgICAgICBtQnVpbGRlciA9IG5ldyBBbGVydERpYWxvZy5CdWlsZGVyKGNvbnRleHQpCiAgICAgICAgICAgICAuc2V0VGl0bGUobURpYWxvZ1RpdGxlKQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvcHJvdmlkZXIvTWVkaWFTdG9yZS5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvcHJvdmlkZXIvTWVkaWFTdG9yZS5qYXZhCmluZGV4IGM5ZDEyNWIuLjQwZWQ5ODAgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL3Byb3ZpZGVyL01lZGlhU3RvcmUuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9wcm92aWRlci9NZWRpYVN0b3JlLmphdmEKQEAgLTE4MTksNCArMTgxOSwxMiBAQAogICAgICAqIE5hbWUgb2YgY3VycmVudCB2b2x1bWUgYmVpbmcgc2Nhbm5lZCBieSB0aGUgbWVkaWEgc2Nhbm5lci4KICAgICAgKi8KICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBNRURJQV9TQ0FOTkVSX1ZPTFVNRSA9ICJ2b2x1bWUiOworCisgICAgLyoqCisgICAgICogTmFtZSBvZiB0aGUgZmlsZSBzaWduYWxpbmcgdGhlIG1lZGlhIHNjYW5uZXIgdG8gaWdub3JlIG1lZGlhIGluIHRoZSBjb250YWluaW5nIGRpcmVjdG9yeQorICAgICAqIGFuZCBpdHMgc3ViZGlyZWN0b3JpZXMuIERldmVsb3BlcnMgc2hvdWxkIHVzZSB0aGlzIHRvIGF2b2lkIGFwcGxpY2F0aW9uIGdyYXBoaWNzIHNob3dpbmcKKyAgICAgKiB1cCBpbiB0aGUgR2FsbGVyeSBhbmQgbGlrZXdpc2UgcHJldmVudCBhcHBsaWNhdGlvbiBzb3VuZHMgYW5kIG11c2ljIGZyb20gc2hvd2luZyB1cCBpbgorICAgICAqIHRoZSBNdXNpYyBhcHAuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTUVESUFfSUdOT1JFX0ZJTEVOQU1FID0gIi5ub21lZGlhIjsKIH0KZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL3Byb3ZpZGVyL1NldHRpbmdzLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9wcm92aWRlci9TZXR0aW5ncy5qYXZhCmluZGV4IGUxMmRmYjAuLjdiYjg5ZjUgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL3Byb3ZpZGVyL1NldHRpbmdzLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvcHJvdmlkZXIvU2V0dGluZ3MuamF2YQpAQCAtMzU1LDYgKzM1NSwyMSBAQAogICAgICAgICAgICAgImFuZHJvaWQuc2V0dGluZ3MuTUFOQUdFX0FQUExJQ0FUSU9OU19TRVRUSU5HUyI7CiAKICAgICAvKioKKyAgICAgKiBBY3Rpdml0eSBBY3Rpb246IFNob3cgc2NyZWVuIG9mIGRldGFpbHMgYWJvdXQgYSBwYXJ0aWN1bGFyIGFwcGxpY2F0aW9uLgorICAgICAqIDxwPgorICAgICAqIEluIHNvbWUgY2FzZXMsIGEgbWF0Y2hpbmcgQWN0aXZpdHkgbWF5IG5vdCBleGlzdCwgc28gZW5zdXJlIHlvdQorICAgICAqIHNhZmVndWFyZCBhZ2FpbnN0IHRoaXMuCisgICAgICogPHA+CisgICAgICogSW5wdXQ6IFRoZSBJbnRlbnQncyBkYXRhIFVSSSBzcGVjaWZpZXMgdGhlIGFwcGxpY2F0aW9uIHBhY2thZ2UgbmFtZQorICAgICAqIHRvIGJlIHNob3duLCB3aXRoIHRoZSAicGFja2FnZSIgc2NoZW1lLiAgVGhhdCBpcyAicGFja2FnZTpjb20ubXkuYXBwIi4KKyAgICAgKiA8cD4KKyAgICAgKiBPdXRwdXQ6IE5vdGhpbmcuCisgICAgICovCisgICAgQFNka0NvbnN0YW50KFNka0NvbnN0YW50VHlwZS5BQ1RJVklUWV9JTlRFTlRfQUNUSU9OKQorICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFDVElPTl9BUFBMSUNBVElPTl9ERVRBSUxTX1NFVFRJTkdTID0KKyAgICAgICAgICAgICJhbmRyb2lkLnNldHRpbmdzLkFQUExJQ0FUSU9OX0RFVEFJTFNfU0VUVElOR1MiOworCisgICAgLyoqCiAgICAgICogQWN0aXZpdHkgQWN0aW9uOiBTaG93IHNldHRpbmdzIGZvciBzeXN0ZW0gdXBkYXRlIGZ1bmN0aW9uYWxpdHkuCiAgICAgICogPHA+CiAgICAgICogSW4gc29tZSBjYXNlcywgYSBtYXRjaGluZyBBY3Rpdml0eSBtYXkgbm90IGV4aXN0LCBzbyBlbnN1cmUgeW91CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9zZXJ2ZXIvQmx1ZXRvb3RoQTJkcFNlcnZpY2UuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL3NlcnZlci9CbHVldG9vdGhBMmRwU2VydmljZS5qYXZhCmluZGV4IDg5M2RiMmUuLmE1MmEyMjEgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL3NlcnZlci9CbHVldG9vdGhBMmRwU2VydmljZS5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL3NlcnZlci9CbHVldG9vdGhBMmRwU2VydmljZS5qYXZhCkBAIC0yNyw3ICsyNyw2IEBACiBpbXBvcnQgYW5kcm9pZC5ibHVldG9vdGguQmx1ZXRvb3RoRGV2aWNlOwogaW1wb3J0IGFuZHJvaWQuYmx1ZXRvb3RoLkJsdWV0b290aFV1aWQ7CiBpbXBvcnQgYW5kcm9pZC5ibHVldG9vdGguSUJsdWV0b290aEEyZHA7Ci1pbXBvcnQgYW5kcm9pZC5vcy5QYXJjZWxVdWlkOwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5Ccm9hZGNhc3RSZWNlaXZlcjsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50OwpAQCAtMzUsNiArMzQsNyBAQAogaW1wb3J0IGFuZHJvaWQubWVkaWEuQXVkaW9NYW5hZ2VyOwogaW1wb3J0IGFuZHJvaWQub3MuSGFuZGxlcjsKIGltcG9ydCBhbmRyb2lkLm9zLk1lc3NhZ2U7CitpbXBvcnQgYW5kcm9pZC5vcy5QYXJjZWxVdWlkOwogaW1wb3J0IGFuZHJvaWQucHJvdmlkZXIuU2V0dGluZ3M7CiBpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKIApAQCAtNTUsOCArNTUsNiBAQAogCiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEJMVUVUT09USF9FTkFCTEVEID0gImJsdWV0b290aF9lbmFibGVkIjsKIAotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNRVNTQUdFX0NPTk5FQ1RfVE8gPSAxOwotCiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFBST1BFUlRZX1NUQVRFID0gIlN0YXRlIjsKIAogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBTSU5LX1NUQVRFX0RJU0NPTk5FQ1RFRCA9ICJkaXNjb25uZWN0ZWQiOwpAQCAtNzMsNiArNzEsNyBAQAogICAgIHByaXZhdGUgZmluYWwgQmx1ZXRvb3RoU2VydmljZSBtQmx1ZXRvb3RoU2VydmljZTsKICAgICBwcml2YXRlIGZpbmFsIEJsdWV0b290aEFkYXB0ZXIgbUFkYXB0ZXI7CiAgICAgcHJpdmF0ZSBpbnQgICBtVGFyZ2V0QTJkcFN0YXRlOworICAgIHByaXZhdGUgYm9vbGVhbiBtQWRqdXN0ZWRQcmlvcml0eSA9IGZhbHNlOwogCiAgICAgcHJpdmF0ZSBmaW5hbCBCcm9hZGNhc3RSZWNlaXZlciBtUmVjZWl2ZXIgPSBuZXcgQnJvYWRjYXN0UmVjZWl2ZXIoKSB7CiAgICAgICAgIEBPdmVycmlkZQpAQCAtMTA0LDE2ICsxMDMsNiBAQAogICAgICAgICAgICAgICAgICAgICBzZXRTaW5rUHJpb3JpdHkoZGV2aWNlLCBCbHVldG9vdGhBMmRwLlBSSU9SSVRZX1VOREVGSU5FRCk7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uLmVxdWFscyhCbHVldG9vdGhEZXZpY2UuQUNUSU9OX0FDTF9DT05ORUNURUQpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGdldFNpbmtQcmlvcml0eShkZXZpY2UpID09IEJsdWV0b290aEEyZHAuUFJJT1JJVFlfQVVUT19DT05ORUNUICYmCi0gICAgICAgICAgICAgICAgICAgICAgICBpc1NpbmtEZXZpY2UoZGV2aWNlKSkgewotICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGRldmljZSBpcyBhIHByZWZlcnJlZCBzaW5rLiBNYWtlIGFuIEEyRFAgY29ubmVjdGlvbgotICAgICAgICAgICAgICAgICAgICAvLyBhZnRlciBhIGRlbGF5LiBXZSBkZWxheSB0byBhdm9pZCBjb25uZWN0aW9uIGNvbGxpc2lvbnMsCi0gICAgICAgICAgICAgICAgICAgIC8vIGFuZCB0byBnaXZlIG90aGVyIHByb2ZpbGVzIHN1Y2ggYXMgSEZQIGEgY2hhbmNlIHRvCi0gICAgICAgICAgICAgICAgICAgIC8vIGNvbm5lY3QgZmlyc3QuCi0gICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgbXNnID0gTWVzc2FnZS5vYnRhaW4obUhhbmRsZXIsIE1FU1NBR0VfQ09OTkVDVF9UTywgZGV2aWNlKTsKLSAgICAgICAgICAgICAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2VEZWxheWVkKG1zZywgNjAwMCk7Ci0gICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKEJsdWV0b290aERldmljZS5BQ1RJT05fQUNMX0RJU0NPTk5FQ1RFRCkpIHsKICAgICAgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1BdWRpb0RldmljZXMuY29udGFpbnNLZXkoZGV2aWNlKSkgewpAQCAtMTg3LDYgKzE3Niw3IEBACiAgICAgICAgIGlmIChtQmx1ZXRvb3RoU2VydmljZS5pc0VuYWJsZWQoKSkKICAgICAgICAgICAgIG9uQmx1ZXRvb3RoRW5hYmxlKCk7CiAgICAgICAgIG1UYXJnZXRBMmRwU3RhdGUgPSAtMTsKKyAgICAgICAgbUJsdWV0b290aFNlcnZpY2Uuc2V0QTJkcFNlcnZpY2UodGhpcyk7CiAgICAgfQogCiAgICAgQE92ZXJyaWRlCkBAIC0xOTgsMjkgKzE4OCw2IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwcml2YXRlIGZpbmFsIEhhbmRsZXIgbUhhbmRsZXIgPSBuZXcgSGFuZGxlcigpIHsKLSAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHB1YmxpYyB2b2lkIGhhbmRsZU1lc3NhZ2UoTWVzc2FnZSBtc2cpIHsKLSAgICAgICAgICAgIHN3aXRjaCAobXNnLndoYXQpIHsKLSAgICAgICAgICAgIGNhc2UgTUVTU0FHRV9DT05ORUNUX1RPOgotICAgICAgICAgICAgICAgIEJsdWV0b290aERldmljZSBkZXZpY2UgPSAoQmx1ZXRvb3RoRGV2aWNlKSBtc2cub2JqOwotICAgICAgICAgICAgICAgIC8vIGNoZWNrIGJsdWV0b290aCBpcyBzdGlsbCBvbiwgZGV2aWNlIGlzIHN0aWxsIHByZWZlcnJlZCwgYW5kCi0gICAgICAgICAgICAgICAgLy8gbm90aGluZyBpcyBjdXJyZW50bHkgY29ubmVjdGVkCi0gICAgICAgICAgICAgICAgaWYgKG1CbHVldG9vdGhTZXJ2aWNlLmlzRW5hYmxlZCgpICYmCi0gICAgICAgICAgICAgICAgICAgICAgICBnZXRTaW5rUHJpb3JpdHkoZGV2aWNlKSA9PSBCbHVldG9vdGhBMmRwLlBSSU9SSVRZX0FVVE9fQ09OTkVDVCAmJgotICAgICAgICAgICAgICAgICAgICAgICAgbG9va3VwU2lua3NNYXRjaGluZ1N0YXRlcyhuZXcgaW50W10gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJsdWV0b290aEEyZHAuU1RBVEVfQ09OTkVDVElORywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBCbHVldG9vdGhBMmRwLlNUQVRFX0NPTk5FQ1RFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBCbHVldG9vdGhBMmRwLlNUQVRFX1BMQVlJTkcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQmx1ZXRvb3RoQTJkcC5TVEFURV9ESVNDT05ORUNUSU5HfSkuc2l6ZSgpID09IDApIHsKLSAgICAgICAgICAgICAgICAgICAgbG9nKCJBdXRvLWNvbm5lY3RpbmcgQTJEUCB0byBzaW5rICIgKyBkZXZpY2UpOwotICAgICAgICAgICAgICAgICAgICBjb25uZWN0U2luayhkZXZpY2UpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH07Ci0KICAgICBwcml2YXRlIGludCBjb252ZXJ0Qmx1ZXpTaW5rU3RyaW5ndG9TdGF0ZShTdHJpbmcgdmFsdWUpIHsKICAgICAgICAgaWYgKHZhbHVlLmVxdWFsc0lnbm9yZUNhc2UoImRpc2Nvbm5lY3RlZCIpKQogICAgICAgICAgICAgcmV0dXJuIEJsdWV0b290aEEyZHAuU1RBVEVfRElTQ09OTkVDVEVEOwpAQCAtMzA4LDEzICsyNzUsMzcgQEAKICAgICAgICAgbUF1ZGlvTWFuYWdlci5zZXRQYXJhbWV0ZXJzKEJMVUVUT09USF9FTkFCTEVEICsgIj1mYWxzZSIpOwogICAgIH0KIAorICAgIHByaXZhdGUgc3luY2hyb25pemVkIGJvb2xlYW4gaXNDb25uZWN0U2lua0ZlYXNpYmxlKEJsdWV0b290aERldmljZSBkZXZpY2UpIHsKKyAgICAgICAgaWYgKCFtQmx1ZXRvb3RoU2VydmljZS5pc0VuYWJsZWQoKSB8fCAhaXNTaW5rRGV2aWNlKGRldmljZSkgfHwKKyAgICAgICAgICAgICAgICBnZXRTaW5rUHJpb3JpdHkoZGV2aWNlKSA9PSBCbHVldG9vdGhBMmRwLlBSSU9SSVRZX09GRikgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1BdWRpb0RldmljZXMuZ2V0KGRldmljZSkgPT0gbnVsbCAmJiAhYWRkQXVkaW9TaW5rKGRldmljZSkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFN0cmluZyBwYXRoID0gbUJsdWV0b290aFNlcnZpY2UuZ2V0T2JqZWN0UGF0aEZyb21BZGRyZXNzKGRldmljZS5nZXRBZGRyZXNzKCkpOworICAgICAgICAgICAgaWYgKHBhdGggPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgYm9vbGVhbiBjb25uZWN0U2luayhCbHVldG9vdGhEZXZpY2UgZGV2aWNlKSB7CiAgICAgICAgIG1Db250ZXh0LmVuZm9yY2VDYWxsaW5nT3JTZWxmUGVybWlzc2lvbihCTFVFVE9PVEhfQURNSU5fUEVSTSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOZWVkIEJMVUVUT09USF9BRE1JTiBwZXJtaXNzaW9uIik7CiAgICAgICAgIGlmIChEQkcpIGxvZygiY29ubmVjdFNpbmsoIiArIGRldmljZSArICIpIik7CisgICAgICAgIGlmICghaXNDb25uZWN0U2lua0ZlYXNpYmxlKGRldmljZSkpIHJldHVybiBmYWxzZTsKIAorICAgICAgICByZXR1cm4gbUJsdWV0b290aFNlcnZpY2UuY29ubmVjdFNpbmsoZGV2aWNlLmdldEFkZHJlc3MoKSk7CisgICAgfQorCisgICAgcHVibGljIHN5bmNocm9uaXplZCBib29sZWFuIGNvbm5lY3RTaW5rSW50ZXJuYWwoQmx1ZXRvb3RoRGV2aWNlIGRldmljZSkgewogICAgICAgICBpZiAoIW1CbHVldG9vdGhTZXJ2aWNlLmlzRW5hYmxlZCgpKSByZXR1cm4gZmFsc2U7CiAKKyAgICAgICAgaW50IHN0YXRlID0gbUF1ZGlvRGV2aWNlcy5nZXQoZGV2aWNlKTsKKwogICAgICAgICAvLyBpZ25vcmUgaWYgdGhlcmUgYXJlIGFueSBhY3RpdmUgc2lua3MKICAgICAgICAgaWYgKGxvb2t1cFNpbmtzTWF0Y2hpbmdTdGF0ZXMobmV3IGludFtdIHsKICAgICAgICAgICAgICAgICBCbHVldG9vdGhBMmRwLlNUQVRFX0NPTk5FQ1RJTkcsCkBAIC0zMjQsMTEgKzMxNSw2IEBACiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAobUF1ZGlvRGV2aWNlcy5nZXQoZGV2aWNlKSA9PSBudWxsICYmICFhZGRBdWRpb1NpbmsoZGV2aWNlKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICBpbnQgc3RhdGUgPSBtQXVkaW9EZXZpY2VzLmdldChkZXZpY2UpOwotCiAgICAgICAgIHN3aXRjaCAoc3RhdGUpIHsKICAgICAgICAgY2FzZSBCbHVldG9vdGhBMmRwLlNUQVRFX0NPTk5FQ1RFRDoKICAgICAgICAgY2FzZSBCbHVldG9vdGhBMmRwLlNUQVRFX1BMQVlJTkc6CkBAIC0zMzksOCArMzI1LDYgQEAKICAgICAgICAgfQogCiAgICAgICAgIFN0cmluZyBwYXRoID0gbUJsdWV0b290aFNlcnZpY2UuZ2V0T2JqZWN0UGF0aEZyb21BZGRyZXNzKGRldmljZS5nZXRBZGRyZXNzKCkpOwotICAgICAgICBpZiAocGF0aCA9PSBudWxsKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgICAgIC8vIFN0YXRlIGlzIERJU0NPTk5FQ1RFRAogICAgICAgICBoYW5kbGVTaW5rU3RhdGVDaGFuZ2UoZGV2aWNlLCBzdGF0ZSwgQmx1ZXRvb3RoQTJkcC5TVEFURV9DT05ORUNUSU5HKTsKQEAgLTM1MywxMSArMzM3LDcgQEAKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgcHVibGljIHN5bmNocm9uaXplZCBib29sZWFuIGRpc2Nvbm5lY3RTaW5rKEJsdWV0b290aERldmljZSBkZXZpY2UpIHsKLSAgICAgICAgbUNvbnRleHQuZW5mb3JjZUNhbGxpbmdPclNlbGZQZXJtaXNzaW9uKEJMVUVUT09USF9BRE1JTl9QRVJNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5lZWQgQkxVRVRPT1RIX0FETUlOIHBlcm1pc3Npb24iKTsKLSAgICAgICAgaWYgKERCRykgbG9nKCJkaXNjb25uZWN0U2luaygiICsgZGV2aWNlICsgIikiKTsKLQorICAgIHByaXZhdGUgc3luY2hyb25pemVkIGJvb2xlYW4gaXNEaXNjb25uZWN0U2lua0ZlYXNpYmxlKEJsdWV0b290aERldmljZSBkZXZpY2UpIHsKICAgICAgICAgU3RyaW5nIHBhdGggPSBtQmx1ZXRvb3RoU2VydmljZS5nZXRPYmplY3RQYXRoRnJvbUFkZHJlc3MoZGV2aWNlLmdldEFkZHJlc3MoKSk7CiAgICAgICAgIGlmIChwYXRoID09IG51bGwpIHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTM3MCw2ICszNTAsMjAgQEAKICAgICAgICAgY2FzZSBCbHVldG9vdGhBMmRwLlNUQVRFX0RJU0NPTk5FQ1RJTkc6CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIGJvb2xlYW4gZGlzY29ubmVjdFNpbmsoQmx1ZXRvb3RoRGV2aWNlIGRldmljZSkgeworICAgICAgICBtQ29udGV4dC5lbmZvcmNlQ2FsbGluZ09yU2VsZlBlcm1pc3Npb24oQkxVRVRPT1RIX0FETUlOX1BFUk0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTmVlZCBCTFVFVE9PVEhfQURNSU4gcGVybWlzc2lvbiIpOworICAgICAgICBpZiAoREJHKSBsb2coImRpc2Nvbm5lY3RTaW5rKCIgKyBkZXZpY2UgKyAiKSIpOworICAgICAgICBpZiAoIWlzRGlzY29ubmVjdFNpbmtGZWFzaWJsZShkZXZpY2UpKSByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiBtQmx1ZXRvb3RoU2VydmljZS5kaXNjb25uZWN0U2luayhkZXZpY2UuZ2V0QWRkcmVzcygpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIGJvb2xlYW4gZGlzY29ubmVjdFNpbmtJbnRlcm5hbChCbHVldG9vdGhEZXZpY2UgZGV2aWNlKSB7CisgICAgICAgIGludCBzdGF0ZSA9IGdldFNpbmtTdGF0ZShkZXZpY2UpOworICAgICAgICBTdHJpbmcgcGF0aCA9IG1CbHVldG9vdGhTZXJ2aWNlLmdldE9iamVjdFBhdGhGcm9tQWRkcmVzcyhkZXZpY2UuZ2V0QWRkcmVzcygpKTsKIAogICAgICAgICAvLyBTdGF0ZSBpcyBDT05ORUNUSU5HIG9yIENPTk5FQ1RFRCBvciBQTEFZSU5HCiAgICAgICAgIGhhbmRsZVNpbmtTdGF0ZUNoYW5nZShkZXZpY2UsIHN0YXRlLCBCbHVldG9vdGhBMmRwLlNUQVRFX0RJU0NPTk5FQ1RJTkcpOwpAQCAtNTA0LDYgKzQ5OCwxMiBAQAogICAgICAgICAgICAgICAgIHNldFNpbmtQcmlvcml0eShkZXZpY2UsIEJsdWV0b290aEEyZHAuUFJJT1JJVFlfQVVUT19DT05ORUNUKTsKICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgaWYgKHN0YXRlID09IEJsdWV0b290aEEyZHAuU1RBVEVfQ09OTkVDVEVEKSB7CisgICAgICAgICAgICAgICAgLy8gV2Ugd2lsbCBvbmx5IGhhdmUgMSBkZXZpY2Ugd2l0aCBBVVRPX0NPTk5FQ1QgcHJpb3JpdHkKKyAgICAgICAgICAgICAgICAvLyBUbyBiZSBiYWNrd2FyZCBjb21wYXRpYmxlIHNldCBldmVyeW9uZSBlbHNlIHRvIGhhdmUgUFJJT1JJVFlfT04KKyAgICAgICAgICAgICAgICBhZGp1c3RPdGhlclNpbmtQcmlvcml0aWVzKGRldmljZSk7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIEludGVudCBpbnRlbnQgPSBuZXcgSW50ZW50KEJsdWV0b290aEEyZHAuQUNUSU9OX1NJTktfU1RBVEVfQ0hBTkdFRCk7CiAgICAgICAgICAgICBpbnRlbnQucHV0RXh0cmEoQmx1ZXRvb3RoRGV2aWNlLkVYVFJBX0RFVklDRSwgZGV2aWNlKTsKICAgICAgICAgICAgIGludGVudC5wdXRFeHRyYShCbHVldG9vdGhBMmRwLkVYVFJBX1BSRVZJT1VTX1NJTktfU1RBVEUsIHByZXZTdGF0ZSk7CkBAIC01MTQsNiArNTE0LDE4IEBACiAgICAgICAgIH0KICAgICB9CiAKKyAgICBwcml2YXRlIHZvaWQgYWRqdXN0T3RoZXJTaW5rUHJpb3JpdGllcyhCbHVldG9vdGhEZXZpY2UgY29ubmVjdGVkRGV2aWNlKSB7CisgICAgICAgIGlmICghbUFkanVzdGVkUHJpb3JpdHkpIHsKKyAgICAgICAgICAgIGZvciAoQmx1ZXRvb3RoRGV2aWNlIGRldmljZSA6IG1BZGFwdGVyLmdldEJvbmRlZERldmljZXMoKSkgeworICAgICAgICAgICAgICAgIGlmIChnZXRTaW5rUHJpb3JpdHkoZGV2aWNlKSA+PSBCbHVldG9vdGhBMmRwLlBSSU9SSVRZX0FVVE9fQ09OTkVDVCAmJgorICAgICAgICAgICAgICAgICAgICAhZGV2aWNlLmVxdWFscyhjb25uZWN0ZWREZXZpY2UpKSB7CisgICAgICAgICAgICAgICAgICAgIHNldFNpbmtQcmlvcml0eShkZXZpY2UsIEJsdWV0b290aEEyZHAuUFJJT1JJVFlfT04pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1BZGp1c3RlZFByaW9yaXR5ID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHByaXZhdGUgc3luY2hyb25pemVkIFNldDxCbHVldG9vdGhEZXZpY2U+IGxvb2t1cFNpbmtzTWF0Y2hpbmdTdGF0ZXMoaW50W10gc3RhdGVzKSB7CiAgICAgICAgIFNldDxCbHVldG9vdGhEZXZpY2U+IHNpbmtzID0gbmV3IEhhc2hTZXQ8Qmx1ZXRvb3RoRGV2aWNlPigpOwogICAgICAgICBpZiAobUF1ZGlvRGV2aWNlcy5pc0VtcHR5KCkpIHsKQEAgLTU1NCw2ICs1NjYsNyBAQAogICAgICAgICBpZiAoIXJlc3VsdCkgewogICAgICAgICAgICAgaWYgKGRldmljZU9iamVjdFBhdGggIT0gbnVsbCkgewogICAgICAgICAgICAgICAgIFN0cmluZyBhZGRyZXNzID0gbUJsdWV0b290aFNlcnZpY2UuZ2V0QWRkcmVzc0Zyb21PYmplY3RQYXRoKGRldmljZU9iamVjdFBhdGgpOworICAgICAgICAgICAgICAgIGlmIChhZGRyZXNzID09IG51bGwpIHJldHVybjsKICAgICAgICAgICAgICAgICBCbHVldG9vdGhEZXZpY2UgZGV2aWNlID0gbUFkYXB0ZXIuZ2V0UmVtb3RlRGV2aWNlKGFkZHJlc3MpOwogICAgICAgICAgICAgICAgIGludCBzdGF0ZSA9IGdldFNpbmtTdGF0ZShkZXZpY2UpOwogICAgICAgICAgICAgICAgIGhhbmRsZVNpbmtTdGF0ZUNoYW5nZShkZXZpY2UsIHN0YXRlLCBCbHVldG9vdGhBMmRwLlNUQVRFX0RJU0NPTk5FQ1RFRCk7CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9zZXJ2ZXIvQmx1ZXRvb3RoRXZlbnRMb29wLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC9zZXJ2ZXIvQmx1ZXRvb3RoRXZlbnRMb29wLmphdmEKaW5kZXggYzBlNDYwMC4uZTFkM2YxMyAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvc2VydmVyL0JsdWV0b290aEV2ZW50TG9vcC5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL3NlcnZlci9CbHVldG9vdGhFdmVudExvb3AuamF2YQpAQCAtNTY2LDYgKzU2Niw3IEBACiAgICAgICAgICAgICBhdXRob3JpemVkID0gYTJkcC5nZXRTaW5rUHJpb3JpdHkoZGV2aWNlKSA+IEJsdWV0b290aEEyZHAuUFJJT1JJVFlfT0ZGOwogICAgICAgICAgICAgaWYgKGF1dGhvcml6ZWQpIHsKICAgICAgICAgICAgICAgICBMb2cuaShUQUcsICJBbGxvd2luZyBpbmNvbWluZyBBMkRQIC8gQVZSQ1AgY29ubmVjdGlvbiBmcm9tICIgKyBhZGRyZXNzKTsKKyAgICAgICAgICAgICAgICBtQmx1ZXRvb3RoU2VydmljZS5ub3RpZnlJbmNvbWluZ0EyZHBDb25uZWN0aW9uKGFkZHJlc3MpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBMb2cuaShUQUcsICJSZWplY3RpbmcgaW5jb21pbmcgQTJEUCAvIEFWUkNQIGNvbm5lY3Rpb24gZnJvbSAiICsgYWRkcmVzcyk7CiAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC9zZXJ2ZXIvQmx1ZXRvb3RoU2VydmljZS5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvc2VydmVyL0JsdWV0b290aFNlcnZpY2UuamF2YQppbmRleCBjMGFmZmQzLi4zMWU1YTdiIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC9zZXJ2ZXIvQmx1ZXRvb3RoU2VydmljZS5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL3NlcnZlci9CbHVldG9vdGhTZXJ2aWNlLmphdmEKQEAgLTI4LDYgKzI4LDggQEAKIGltcG9ydCBhbmRyb2lkLmJsdWV0b290aC5CbHVldG9vdGhDbGFzczsKIGltcG9ydCBhbmRyb2lkLmJsdWV0b290aC5CbHVldG9vdGhEZXZpY2U7CiBpbXBvcnQgYW5kcm9pZC5ibHVldG9vdGguQmx1ZXRvb3RoSGVhZHNldDsKK2ltcG9ydCBhbmRyb2lkLmJsdWV0b290aC5CbHVldG9vdGhEZXZpY2VQcm9maWxlU3RhdGU7CitpbXBvcnQgYW5kcm9pZC5ibHVldG9vdGguQmx1ZXRvb3RoUHJvZmlsZVN0YXRlOwogaW1wb3J0IGFuZHJvaWQuYmx1ZXRvb3RoLkJsdWV0b290aFNvY2tldDsKIGltcG9ydCBhbmRyb2lkLmJsdWV0b290aC5CbHVldG9vdGhVdWlkOwogaW1wb3J0IGFuZHJvaWQuYmx1ZXRvb3RoLklCbHVldG9vdGg7CkBAIC0xMTIsNyArMTE0LDcgQEAKICAgICAgICAgICAgIEJsdWV0b290aFV1aWQuSFNQLAogICAgICAgICAgICAgQmx1ZXRvb3RoVXVpZC5PYmV4T2JqZWN0UHVzaCB9OwogCi0KKyAgICAvLyBUT0RPKCk6IE9wdGltaXplIGFsbCB0aGVzZSBzdHJpbmcgaGFuZGxpbmcKICAgICBwcml2YXRlIGZpbmFsIE1hcDxTdHJpbmcsIFN0cmluZz4gbUFkYXB0ZXJQcm9wZXJ0aWVzOwogICAgIHByaXZhdGUgZmluYWwgSGFzaE1hcDxTdHJpbmcsIE1hcDxTdHJpbmcsIFN0cmluZz4+IG1EZXZpY2VQcm9wZXJ0aWVzOwogCkBAIC0xMjIsNiArMTI0LDExIEBACiAKICAgICBwcml2YXRlIGZpbmFsIEhhc2hNYXA8SW50ZWdlciwgSW50ZWdlcj4gbVNlcnZpY2VSZWNvcmRUb1BpZDsKIAorICAgIHByaXZhdGUgZmluYWwgSGFzaE1hcDxTdHJpbmcsIEJsdWV0b290aERldmljZVByb2ZpbGVTdGF0ZT4gbURldmljZVByb2ZpbGVTdGF0ZTsKKyAgICBwcml2YXRlIGZpbmFsIEJsdWV0b290aFByb2ZpbGVTdGF0ZSBtQTJkcFByb2ZpbGVTdGF0ZTsKKyAgICBwcml2YXRlIGZpbmFsIEJsdWV0b290aFByb2ZpbGVTdGF0ZSBtSGZwUHJvZmlsZVN0YXRlOworCisgICAgcHJpdmF0ZSBCbHVldG9vdGhBMmRwU2VydmljZSBtQTJkcFNlcnZpY2U7CiAgICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIG1Eb2NrQWRkcmVzczsKICAgICBwcml2YXRlIFN0cmluZyBtRG9ja1BpbjsKIApAQCAtMTc5LDYgKzE4NiwxMiBAQAogICAgICAgICBtVXVpZEludGVudFRyYWNrZXIgPSBuZXcgQXJyYXlMaXN0PFN0cmluZz4oKTsKICAgICAgICAgbVV1aWRDYWxsYmFja1RyYWNrZXIgPSBuZXcgSGFzaE1hcDxSZW1vdGVTZXJ2aWNlLCBJQmx1ZXRvb3RoQ2FsbGJhY2s+KCk7CiAgICAgICAgIG1TZXJ2aWNlUmVjb3JkVG9QaWQgPSBuZXcgSGFzaE1hcDxJbnRlZ2VyLCBJbnRlZ2VyPigpOworICAgICAgICBtRGV2aWNlUHJvZmlsZVN0YXRlID0gbmV3IEhhc2hNYXA8U3RyaW5nLCBCbHVldG9vdGhEZXZpY2VQcm9maWxlU3RhdGU+KCk7CisgICAgICAgIG1BMmRwUHJvZmlsZVN0YXRlID0gbmV3IEJsdWV0b290aFByb2ZpbGVTdGF0ZShtQ29udGV4dCwgQmx1ZXRvb3RoUHJvZmlsZVN0YXRlLkEyRFApOworICAgICAgICBtSGZwUHJvZmlsZVN0YXRlID0gbmV3IEJsdWV0b290aFByb2ZpbGVTdGF0ZShtQ29udGV4dCwgQmx1ZXRvb3RoUHJvZmlsZVN0YXRlLkhGUCk7CisKKyAgICAgICAgbUhmcFByb2ZpbGVTdGF0ZS5zdGFydCgpOworICAgICAgICBtQTJkcFByb2ZpbGVTdGF0ZS5zdGFydCgpOwogCiAgICAgICAgIEludGVudEZpbHRlciBmaWx0ZXIgPSBuZXcgSW50ZW50RmlsdGVyKCk7CiAgICAgICAgIHJlZ2lzdGVyRm9yQWlycGxhbmVNb2RlKGZpbHRlcik7CkBAIC0xODcsNyArMjAwLDcgQEAKICAgICAgICAgbUNvbnRleHQucmVnaXN0ZXJSZWNlaXZlcihtUmVjZWl2ZXIsIGZpbHRlcik7CiAgICAgfQogCi0gICAgIHB1YmxpYyBzdGF0aWMgc3luY2hyb25pemVkIFN0cmluZyByZWFkRG9ja0JsdWV0b290aEFkZHJlc3MoKSB7CisgICAgcHVibGljIHN0YXRpYyBzeW5jaHJvbml6ZWQgU3RyaW5nIHJlYWREb2NrQmx1ZXRvb3RoQWRkcmVzcygpIHsKICAgICAgICAgaWYgKG1Eb2NrQWRkcmVzcyAhPSBudWxsKSByZXR1cm4gbURvY2tBZGRyZXNzOwogCiAgICAgICAgIEJ1ZmZlcmVkSW5wdXRTdHJlYW0gZmlsZSA9IG51bGw7CkBAIC01MzQsNiArNTQ3LDcgQEAKICAgICAgICAgICAgICAgICBtSXNEaXNjb3ZlcmluZyA9IGZhbHNlOwogICAgICAgICAgICAgICAgIG1Cb25kU3RhdGUucmVhZEF1dG9QYWlyaW5nRGF0YSgpOwogICAgICAgICAgICAgICAgIG1Cb25kU3RhdGUubG9hZEJvbmRTdGF0ZSgpOworICAgICAgICAgICAgICAgIGluaXRQcm9maWxlU3RhdGUoKTsKICAgICAgICAgICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZURlbGF5ZWQoCiAgICAgICAgICAgICAgICAgICAgICAgICBtSGFuZGxlci5vYnRhaW5NZXNzYWdlKE1FU1NBR0VfUkVHSVNURVJfU0RQX1JFQ09SRFMsIDEsIC0xKSwgMzAwMCk7CiAKQEAgLTY0OCw2ICs2NjIsMTIgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIGlmIChzdGF0ZSA9PSBCbHVldG9vdGhEZXZpY2UuQk9ORF9CT05ERUQpIHsKKyAgICAgICAgICAgICAgICBhZGRQcm9maWxlU3RhdGUoYWRkcmVzcyk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHN0YXRlID09IEJsdWV0b290aERldmljZS5CT05EX05PTkUpIHsKKyAgICAgICAgICAgICAgICByZW1vdmVQcm9maWxlU3RhdGUoYWRkcmVzcyk7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGlmIChEQkcpIGxvZyhhZGRyZXNzICsgIiBib25kIHN0YXRlICIgKyBvbGRTdGF0ZSArICIgLT4gIiArIHN0YXRlICsgIiAoIiArCiAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhc29uICsgIikiKTsKICAgICAgICAgICAgIEludGVudCBpbnRlbnQgPSBuZXcgSW50ZW50KEJsdWV0b290aERldmljZS5BQ1RJT05fQk9ORF9TVEFURV9DSEFOR0VEKTsKQEAgLTExNjcsNiArMTE4NywxNiBAQAogICAgICAgICBpZiAoIUJsdWV0b290aEFkYXB0ZXIuY2hlY2tCbHVldG9vdGhBZGRyZXNzKGFkZHJlc3MpKSB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KKyAgICAgICAgQmx1ZXRvb3RoRGV2aWNlUHJvZmlsZVN0YXRlIHN0YXRlID0gbURldmljZVByb2ZpbGVTdGF0ZS5nZXQoYWRkcmVzcyk7CisgICAgICAgIGlmIChzdGF0ZSAhPSBudWxsKSB7CisgICAgICAgICAgICBzdGF0ZS5zZW5kTWVzc2FnZShCbHVldG9vdGhEZXZpY2VQcm9maWxlU3RhdGUuVU5QQUlSKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHN5bmNocm9uaXplZCBib29sZWFuIHJlbW92ZUJvbmRJbnRlcm5hbChTdHJpbmcgYWRkcmVzcykgewogICAgICAgICByZXR1cm4gcmVtb3ZlRGV2aWNlTmF0aXZlKGdldE9iamVjdFBhdGhGcm9tQWRkcmVzcyhhZGRyZXNzKSk7CiAgICAgfQogCkBAIC0xODM2LDcgKzE4NjYsNyBAQAogICAgICAgICAvLyBSYXRoZXIgbm90IGRvIHRoaXMgZnJvbSBoZXJlLCBidXQgbm8td2hlcmUgZWxzZSBhbmQgSSBuZWVkIHRoaXMKICAgICAgICAgLy8gZHVtcAogICAgICAgICBwdy5wcmludGxuKCJcbi0tSGVhZHNldCBTZXJ2aWNlLS0iKTsKLSAgICAgICAgc3dpdGNoIChoZWFkc2V0LmdldFN0YXRlKCkpIHsKKyAgICAgICAgc3dpdGNoIChoZWFkc2V0LmdldFN0YXRlKGhlYWRzZXQuZ2V0Q3VycmVudEhlYWRzZXQoKSkpIHsKICAgICAgICAgY2FzZSBCbHVldG9vdGhIZWFkc2V0LlNUQVRFX0RJU0NPTk5FQ1RFRDoKICAgICAgICAgICAgIHB3LnByaW50bG4oImdldFN0YXRlKCkgPSBTVEFURV9ESVNDT05ORUNURUQiKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTkxOSw2ICsxOTQ5LDExNiBAQAogICAgICAgICBpZiAoIXJlc3VsdCkgbG9nKCJTZXQgTGluayBUaW1lb3V0IHRvOiIgKyBudW1fc2xvdHMgKyAiIHNsb3RzIGZhaWxlZCIpOwogICAgIH0KIAorICAgIHB1YmxpYyBib29sZWFuIGNvbm5lY3RIZWFkc2V0KFN0cmluZyBhZGRyZXNzKSB7CisgICAgICAgIEJsdWV0b290aERldmljZVByb2ZpbGVTdGF0ZSBzdGF0ZSA9IG1EZXZpY2VQcm9maWxlU3RhdGUuZ2V0KGFkZHJlc3MpOworICAgICAgICBpZiAoc3RhdGUgIT0gbnVsbCkgeworICAgICAgICAgICAgTWVzc2FnZSBtc2cgPSBuZXcgTWVzc2FnZSgpOworICAgICAgICAgICAgbXNnLmFyZzEgPSBCbHVldG9vdGhEZXZpY2VQcm9maWxlU3RhdGUuQ09OTkVDVF9IRlBfT1VUR09JTkc7CisgICAgICAgICAgICBtc2cub2JqID0gc3RhdGU7CisgICAgICAgICAgICBtSGZwUHJvZmlsZVN0YXRlLnNlbmRNZXNzYWdlKG1zZyk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gZGlzY29ubmVjdEhlYWRzZXQoU3RyaW5nIGFkZHJlc3MpIHsKKyAgICAgICAgQmx1ZXRvb3RoRGV2aWNlUHJvZmlsZVN0YXRlIHN0YXRlID0gbURldmljZVByb2ZpbGVTdGF0ZS5nZXQoYWRkcmVzcyk7CisgICAgICAgIGlmIChzdGF0ZSAhPSBudWxsKSB7CisgICAgICAgICAgICBNZXNzYWdlIG1zZyA9IG5ldyBNZXNzYWdlKCk7CisgICAgICAgICAgICBtc2cuYXJnMSA9IEJsdWV0b290aERldmljZVByb2ZpbGVTdGF0ZS5ESVNDT05ORUNUX0hGUF9PVVRHT0lORzsKKyAgICAgICAgICAgIG1zZy5vYmogPSBzdGF0ZTsKKyAgICAgICAgICAgIG1IZnBQcm9maWxlU3RhdGUuc2VuZE1lc3NhZ2UobXNnKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBjb25uZWN0U2luayhTdHJpbmcgYWRkcmVzcykgeworICAgICAgICBCbHVldG9vdGhEZXZpY2VQcm9maWxlU3RhdGUgc3RhdGUgPSBtRGV2aWNlUHJvZmlsZVN0YXRlLmdldChhZGRyZXNzKTsKKyAgICAgICAgaWYgKHN0YXRlICE9IG51bGwpIHsKKyAgICAgICAgICAgIE1lc3NhZ2UgbXNnID0gbmV3IE1lc3NhZ2UoKTsKKyAgICAgICAgICAgIG1zZy5hcmcxID0gQmx1ZXRvb3RoRGV2aWNlUHJvZmlsZVN0YXRlLkNPTk5FQ1RfQTJEUF9PVVRHT0lORzsKKyAgICAgICAgICAgIG1zZy5vYmogPSBzdGF0ZTsKKyAgICAgICAgICAgIG1BMmRwUHJvZmlsZVN0YXRlLnNlbmRNZXNzYWdlKG1zZyk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gZGlzY29ubmVjdFNpbmsoU3RyaW5nIGFkZHJlc3MpIHsKKyAgICAgICAgQmx1ZXRvb3RoRGV2aWNlUHJvZmlsZVN0YXRlIHN0YXRlID0gbURldmljZVByb2ZpbGVTdGF0ZS5nZXQoYWRkcmVzcyk7CisgICAgICAgIGlmIChzdGF0ZSAhPSBudWxsKSB7CisgICAgICAgICAgICBNZXNzYWdlIG1zZyA9IG5ldyBNZXNzYWdlKCk7CisgICAgICAgICAgICBtc2cuYXJnMSA9IEJsdWV0b290aERldmljZVByb2ZpbGVTdGF0ZS5ESVNDT05ORUNUX0EyRFBfT1VUR09JTkc7CisgICAgICAgICAgICBtc2cub2JqID0gc3RhdGU7CisgICAgICAgICAgICBtQTJkcFByb2ZpbGVTdGF0ZS5zZW5kTWVzc2FnZShtc2cpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHByaXZhdGUgQmx1ZXRvb3RoRGV2aWNlUHJvZmlsZVN0YXRlIGFkZFByb2ZpbGVTdGF0ZShTdHJpbmcgYWRkcmVzcykgeworICAgICAgICBCbHVldG9vdGhEZXZpY2VQcm9maWxlU3RhdGUgc3RhdGUgPSBtRGV2aWNlUHJvZmlsZVN0YXRlLmdldChhZGRyZXNzKTsKKyAgICAgICAgaWYgKHN0YXRlICE9IG51bGwpIHJldHVybiBzdGF0ZTsKKworICAgICAgICBzdGF0ZSA9IG5ldyBCbHVldG9vdGhEZXZpY2VQcm9maWxlU3RhdGUobUNvbnRleHQsIGFkZHJlc3MsIHRoaXMsIG1BMmRwU2VydmljZSk7CisgICAgICAgIG1EZXZpY2VQcm9maWxlU3RhdGUucHV0KGFkZHJlc3MsIHN0YXRlKTsKKyAgICAgICAgc3RhdGUuc3RhcnQoKTsKKyAgICAgICAgcmV0dXJuIHN0YXRlOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCByZW1vdmVQcm9maWxlU3RhdGUoU3RyaW5nIGFkZHJlc3MpIHsKKyAgICAgICAgbURldmljZVByb2ZpbGVTdGF0ZS5yZW1vdmUoYWRkcmVzcyk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGluaXRQcm9maWxlU3RhdGUoKSB7CisgICAgICAgIFN0cmluZyBbXWJvbmRzID0gbnVsbDsKKyAgICAgICAgU3RyaW5nIHZhbCA9IGdldFByb3BlcnR5SW50ZXJuYWwoIkRldmljZXMiKTsKKyAgICAgICAgaWYgKHZhbCAhPSBudWxsKSB7CisgICAgICAgICAgICBib25kcyA9IHZhbC5zcGxpdCgiLCIpOworICAgICAgICB9CisgICAgICAgIGlmIChib25kcyA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBmb3IgKFN0cmluZyBwYXRoIDogYm9uZHMpIHsKKyAgICAgICAgICAgIFN0cmluZyBhZGRyZXNzID0gZ2V0QWRkcmVzc0Zyb21PYmplY3RQYXRoKHBhdGgpOworICAgICAgICAgICAgQmx1ZXRvb3RoRGV2aWNlUHJvZmlsZVN0YXRlIHN0YXRlID0gYWRkUHJvZmlsZVN0YXRlKGFkZHJlc3MpOworICAgICAgICAgICAgLy8gQWxsb3cgOCBzZWNzIGZvciBTRFAgcmVjb3JkcyB0byBnZXQgcmVnaXN0ZXJlZC4KKyAgICAgICAgICAgIE1lc3NhZ2UgbXNnID0gbmV3IE1lc3NhZ2UoKTsKKyAgICAgICAgICAgIG1zZy53aGF0ID0gQmx1ZXRvb3RoRGV2aWNlUHJvZmlsZVN0YXRlLkFVVE9fQ09OTkVDVF9QUk9GSUxFUzsKKyAgICAgICAgICAgIHN0YXRlLnNlbmRNZXNzYWdlRGVsYXllZChtc2csIDgwMDApOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gbm90aWZ5SW5jb21pbmdDb25uZWN0aW9uKFN0cmluZyBhZGRyZXNzKSB7CisgICAgICAgIEJsdWV0b290aERldmljZVByb2ZpbGVTdGF0ZSBzdGF0ZSA9CisgICAgICAgICAgICAgbURldmljZVByb2ZpbGVTdGF0ZS5nZXQoYWRkcmVzcyk7CisgICAgICAgIGlmIChzdGF0ZSAhPSBudWxsKSB7CisgICAgICAgICAgICBNZXNzYWdlIG1zZyA9IG5ldyBNZXNzYWdlKCk7CisgICAgICAgICAgICBtc2cud2hhdCA9IEJsdWV0b290aERldmljZVByb2ZpbGVTdGF0ZS5DT05ORUNUX0hGUF9JTkNPTUlORzsKKyAgICAgICAgICAgIHN0YXRlLnNlbmRNZXNzYWdlKG1zZyk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLypwYWNrYWdlKi8gYm9vbGVhbiBub3RpZnlJbmNvbWluZ0EyZHBDb25uZWN0aW9uKFN0cmluZyBhZGRyZXNzKSB7CisgICAgICAgQmx1ZXRvb3RoRGV2aWNlUHJvZmlsZVN0YXRlIHN0YXRlID0KKyAgICAgICAgICAgIG1EZXZpY2VQcm9maWxlU3RhdGUuZ2V0KGFkZHJlc3MpOworICAgICAgIGlmIChzdGF0ZSAhPSBudWxsKSB7CisgICAgICAgICAgIE1lc3NhZ2UgbXNnID0gbmV3IE1lc3NhZ2UoKTsKKyAgICAgICAgICAgbXNnLndoYXQgPSBCbHVldG9vdGhEZXZpY2VQcm9maWxlU3RhdGUuQ09OTkVDVF9BMkRQX0lOQ09NSU5HOworICAgICAgICAgICBzdGF0ZS5zZW5kTWVzc2FnZShtc2cpOworICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICB9CisgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8qcGFja2FnZSovIHZvaWQgc2V0QTJkcFNlcnZpY2UoQmx1ZXRvb3RoQTJkcFNlcnZpY2UgYTJkcFNlcnZpY2UpIHsKKyAgICAgICAgbUEyZHBTZXJ2aWNlID0gYTJkcFNlcnZpY2U7CisgICAgfQorCiAgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBsb2coU3RyaW5nIG1zZykgewogICAgICAgICBMb2cuZChUQUcsIG1zZyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvc2VydmljZS93YWxscGFwZXIvV2FsbHBhcGVyU2VydmljZS5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvc2VydmljZS93YWxscGFwZXIvV2FsbHBhcGVyU2VydmljZS5qYXZhCmluZGV4IDNkMWQ3ZDYuLjZmMTJmMTkgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL3NlcnZpY2Uvd2FsbHBhcGVyL1dhbGxwYXBlclNlcnZpY2UuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC9zZXJ2aWNlL3dhbGxwYXBlci9XYWxscGFwZXJTZXJ2aWNlLmphdmEKQEAgLTE4LDYgKzE4LDcgQEAKIAogaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLm9zLkhhbmRsZXJDYWxsZXI7CiBpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudmlldy5CYXNlSVdpbmRvdzsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC52aWV3LkJhc2VJbnB1dEhhbmRsZXI7CiBpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudmlldy5CYXNlU3VyZmFjZUhvbGRlcjsKIAogaW1wb3J0IGFuZHJvaWQuYW5ub3RhdGlvbi5TZGtDb25zdGFudDsKQEAgLTM5LDYgKzQwLDEwIEBACiBpbXBvcnQgYW5kcm9pZC51dGlsLkxvZ1ByaW50ZXI7CiBpbXBvcnQgYW5kcm9pZC52aWV3LkdyYXZpdHk7CiBpbXBvcnQgYW5kcm9pZC52aWV3LklXaW5kb3dTZXNzaW9uOworaW1wb3J0IGFuZHJvaWQudmlldy5JbnB1dENoYW5uZWw7CitpbXBvcnQgYW5kcm9pZC52aWV3LklucHV0SGFuZGxlcjsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuSW5wdXRRdWV1ZTsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuS2V5RXZlbnQ7CiBpbXBvcnQgYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50OwogaW1wb3J0IGFuZHJvaWQudmlldy5TdXJmYWNlSG9sZGVyOwogaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OwpAQCAtNDYsNiArNTEsNyBAQAogaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3Um9vdDsKIGltcG9ydCBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlcjsKIGltcG9ydCBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlckltcGw7CitpbXBvcnQgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXJQb2xpY3k7CiAKIGltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwogCkBAIC0xNDYsNiArMTUyLDcgQEAKICAgICAgICAgZmluYWwgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMgbUxheW91dAogICAgICAgICAgICAgICAgID0gbmV3IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zKCk7CiAgICAgICAgIElXaW5kb3dTZXNzaW9uIG1TZXNzaW9uOworICAgICAgICBJbnB1dENoYW5uZWwgbUlucHV0Q2hhbm5lbDsKIAogICAgICAgICBmaW5hbCBPYmplY3QgbUxvY2sgPSBuZXcgT2JqZWN0KCk7CiAgICAgICAgIGJvb2xlYW4gbU9mZnNldE1lc3NhZ2VFbnF1ZXVlZDsKQEAgLTIwNSwyNyArMjEyLDE4IEBACiAgICAgICAgICAgICAKICAgICAgICAgfTsKICAgICAgICAgCi0gICAgICAgIGZpbmFsIEJhc2VJV2luZG93IG1XaW5kb3cgPSBuZXcgQmFzZUlXaW5kb3coKSB7CisgICAgICAgIGZpbmFsIElucHV0SGFuZGxlciBtSW5wdXRIYW5kbGVyID0gbmV3IEJhc2VJbnB1dEhhbmRsZXIoKSB7CiAgICAgICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgICAgIHB1YmxpYyBib29sZWFuIG9uRGlzcGF0Y2hQb2ludGVyKE1vdGlvbkV2ZW50IGV2ZW50LCBsb25nIGV2ZW50VGltZSwKLSAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBjYWxsV2hlbkRvbmUpIHsKLSAgICAgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKG1Mb2NrKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChldmVudC5nZXRBY3Rpb24oKSA9PSBNb3Rpb25FdmVudC5BQ1RJT05fTU9WRSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1QZW5kaW5nTW92ZSAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbUNhbGxlci5yZW1vdmVNZXNzYWdlcyhNU0dfVE9VQ0hfRVZFTlQsIG1QZW5kaW5nTW92ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbVBlbmRpbmdNb3ZlLnJlY3ljbGUoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIG1QZW5kaW5nTW92ZSA9IGV2ZW50OwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgbVBlbmRpbmdNb3ZlID0gbnVsbDsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBNZXNzYWdlIG1zZyA9IG1DYWxsZXIub2J0YWluTWVzc2FnZU8oTVNHX1RPVUNIX0VWRU5ULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50KTsKLSAgICAgICAgICAgICAgICAgICAgbUNhbGxlci5zZW5kTWVzc2FnZShtc2cpOworICAgICAgICAgICAgcHVibGljIHZvaWQgaGFuZGxlVG91Y2goTW90aW9uRXZlbnQgZXZlbnQsIFJ1bm5hYmxlIGZpbmlzaGVkQ2FsbGJhY2spIHsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaFBvaW50ZXIoZXZlbnQpOworICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICAgICAgICAgIGZpbmlzaGVkQ2FsbGJhY2sucnVuKCk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAorICAgICAgICB9OworICAgICAgICAKKyAgICAgICAgZmluYWwgQmFzZUlXaW5kb3cgbVdpbmRvdyA9IG5ldyBCYXNlSVdpbmRvdygpIHsKICAgICAgICAgICAgIEBPdmVycmlkZQogICAgICAgICAgICAgcHVibGljIHZvaWQgcmVzaXplZChpbnQgdywgaW50IGgsIFJlY3QgY292ZXJlZEluc2V0cywKICAgICAgICAgICAgICAgICAgICAgUmVjdCB2aXNpYmxlSW5zZXRzLCBib29sZWFuIHJlcG9ydERyYXcsIENvbmZpZ3VyYXRpb24gbmV3Q29uZmlnKSB7CkBAIC00MzUsNiArNDMzLDIyIEBACiAgICAgICAgICAqLwogICAgICAgICBwdWJsaWMgdm9pZCBvblN1cmZhY2VEZXN0cm95ZWQoU3VyZmFjZUhvbGRlciBob2xkZXIpIHsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcHJpdmF0ZSB2b2lkIGRpc3BhdGNoUG9pbnRlcihNb3Rpb25FdmVudCBldmVudCkgeworICAgICAgICAgICAgc3luY2hyb25pemVkIChtTG9jaykgeworICAgICAgICAgICAgICAgIGlmIChldmVudC5nZXRBY3Rpb24oKSA9PSBNb3Rpb25FdmVudC5BQ1RJT05fTU9WRSkgeworICAgICAgICAgICAgICAgICAgICBpZiAobVBlbmRpbmdNb3ZlICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1DYWxsZXIucmVtb3ZlTWVzc2FnZXMoTVNHX1RPVUNIX0VWRU5ULCBtUGVuZGluZ01vdmUpOworICAgICAgICAgICAgICAgICAgICAgICAgbVBlbmRpbmdNb3ZlLnJlY3ljbGUoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBtUGVuZGluZ01vdmUgPSBldmVudDsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBtUGVuZGluZ01vdmUgPSBudWxsOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBNZXNzYWdlIG1zZyA9IG1DYWxsZXIub2J0YWluTWVzc2FnZU8oTVNHX1RPVUNIX0VWRU5ULCBldmVudCk7CisgICAgICAgICAgICAgICAgbUNhbGxlci5zZW5kTWVzc2FnZShtc2cpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAKICAgICAgICAgdm9pZCB1cGRhdGVTdXJmYWNlKGJvb2xlYW4gZm9yY2VSZWxheW91dCwgYm9vbGVhbiBmb3JjZVJlcG9ydCkgewogICAgICAgICAgICAgaWYgKG1EZXN0cm95ZWQpIHsKQEAgLTQ4Nyw4ICs1MDEsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIG1MYXlvdXQuc2V0VGl0bGUoV2FsbHBhcGVyU2VydmljZS50aGlzLmdldENsYXNzKCkuZ2V0TmFtZSgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgIG1MYXlvdXQud2luZG93QW5pbWF0aW9ucyA9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGUuQW5pbWF0aW9uX1dhbGxwYXBlcjsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1TZXNzaW9uLmFkZChtV2luZG93LCBtTGF5b3V0LCBWaWV3LlZJU0lCTEUsIG1Db250ZW50SW5zZXRzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1JbnB1dENoYW5uZWwgPSBuZXcgSW5wdXRDaGFubmVsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBtU2Vzc2lvbi5hZGQobVdpbmRvdywgbUxheW91dCwgVmlldy5WSVNJQkxFLCBtQ29udGVudEluc2V0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUlucHV0Q2hhbm5lbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBtQ3JlYXRlZCA9IHRydWU7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIElucHV0UXVldWUucmVnaXN0ZXJJbnB1dENoYW5uZWwobUlucHV0Q2hhbm5lbCwgbUlucHV0SGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9vcGVyLm15UXVldWUoKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIG1TdXJmYWNlSG9sZGVyLm1TdXJmYWNlTG9jay5sb2NrKCk7CkBAIC01MjIsMjAgKzU0MSwxNCBAQAogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAgICAgU3VyZmFjZUhvbGRlci5DYWxsYmFjayBjYWxsYmFja3NbXSA9IG51bGw7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKG1TdXJmYWNlSG9sZGVyLm1DYWxsYmFja3MpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBpbnQgTiA9IG1TdXJmYWNlSG9sZGVyLm1DYWxsYmFja3Muc2l6ZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChOID4gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYmFja3MgPSBuZXcgU3VyZmFjZUhvbGRlci5DYWxsYmFja1tOXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVN1cmZhY2VIb2xkZXIubUNhbGxiYWNrcy50b0FycmF5KGNhbGxiYWNrcyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgbVN1cmZhY2VIb2xkZXIudW5nZXRDYWxsYmFja3MoKTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN1cmZhY2VDcmVhdGluZykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Jc0NyZWF0aW5nID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUcpIExvZy52KFRBRywgIm9uU3VyZmFjZUNyZWF0ZWQoIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBtU3VyZmFjZUhvbGRlciArICIpOiAiICsgdGhpcyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25TdXJmYWNlQ3JlYXRlZChtU3VyZmFjZUhvbGRlcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3VyZmFjZUhvbGRlci5DYWxsYmFjayBjYWxsYmFja3NbXSA9IG1TdXJmYWNlSG9sZGVyLmdldENhbGxiYWNrcygpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYWxsYmFja3MgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKFN1cmZhY2VIb2xkZXIuQ2FsbGJhY2sgYyA6IGNhbGxiYWNrcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5zdXJmYWNlQ3JlYXRlZChtU3VyZmFjZUhvbGRlcik7CkBAIC01NTcsNiArNTcwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIik6ICIgKyB0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvblN1cmZhY2VDaGFuZ2VkKG1TdXJmYWNlSG9sZGVyLCBtRm9ybWF0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUN1cldpZHRoLCBtQ3VySGVpZ2h0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdXJmYWNlSG9sZGVyLkNhbGxiYWNrIGNhbGxiYWNrc1tdID0gbVN1cmZhY2VIb2xkZXIuZ2V0Q2FsbGJhY2tzKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbGxiYWNrcyAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoU3VyZmFjZUhvbGRlci5DYWxsYmFjayBjIDogY2FsbGJhY2tzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLnN1cmZhY2VDaGFuZ2VkKG1TdXJmYWNlSG9sZGVyLCBtRm9ybWF0LApAQCAtNTkyLDYgKzYwNiw3IEBACiAgICAgICAgICAgICBtU3VyZmFjZUhvbGRlci5zZXRTaXplRnJvbUxheW91dCgpOwogICAgICAgICAgICAgbUluaXRpYWxpemluZyA9IHRydWU7CiAgICAgICAgICAgICBtU2Vzc2lvbiA9IFZpZXdSb290LmdldFdpbmRvd1Nlc3Npb24oZ2V0TWFpbkxvb3BlcigpKTsKKyAgICAgICAgICAgIAogICAgICAgICAgICAgbVdpbmRvdy5zZXRTZXNzaW9uKG1TZXNzaW9uKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgSW50ZW50RmlsdGVyIGZpbHRlciA9IG5ldyBJbnRlbnRGaWx0ZXIoKTsKQEAgLTY5OCwxNCArNzEzLDEyIEBACiAgICAgICAgIHZvaWQgcmVwb3J0U3VyZmFjZURlc3Ryb3llZCgpIHsKICAgICAgICAgICAgIGlmIChtU3VyZmFjZUNyZWF0ZWQpIHsKICAgICAgICAgICAgICAgICBtU3VyZmFjZUNyZWF0ZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBTdXJmYWNlSG9sZGVyLkNhbGxiYWNrIGNhbGxiYWNrc1tdOwotICAgICAgICAgICAgICAgIHN5bmNocm9uaXplZCAobVN1cmZhY2VIb2xkZXIubUNhbGxiYWNrcykgewotICAgICAgICAgICAgICAgICAgICBjYWxsYmFja3MgPSBuZXcgU3VyZmFjZUhvbGRlci5DYWxsYmFja1sKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU3VyZmFjZUhvbGRlci5tQ2FsbGJhY2tzLnNpemUoKV07Ci0gICAgICAgICAgICAgICAgICAgIG1TdXJmYWNlSG9sZGVyLm1DYWxsYmFja3MudG9BcnJheShjYWxsYmFja3MpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBmb3IgKFN1cmZhY2VIb2xkZXIuQ2FsbGJhY2sgYyA6IGNhbGxiYWNrcykgewotICAgICAgICAgICAgICAgICAgICBjLnN1cmZhY2VEZXN0cm95ZWQobVN1cmZhY2VIb2xkZXIpOworICAgICAgICAgICAgICAgIG1TdXJmYWNlSG9sZGVyLnVuZ2V0Q2FsbGJhY2tzKCk7CisgICAgICAgICAgICAgICAgU3VyZmFjZUhvbGRlci5DYWxsYmFjayBjYWxsYmFja3NbXSA9IG1TdXJmYWNlSG9sZGVyLmdldENhbGxiYWNrcygpOworICAgICAgICAgICAgICAgIGlmIChjYWxsYmFja3MgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBmb3IgKFN1cmZhY2VIb2xkZXIuQ2FsbGJhY2sgYyA6IGNhbGxiYWNrcykgeworICAgICAgICAgICAgICAgICAgICAgICAgYy5zdXJmYWNlRGVzdHJveWVkKG1TdXJmYWNlSG9sZGVyKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoREVCVUcpIExvZy52KFRBRywgIm9uU3VyZmFjZURlc3Ryb3llZCgiCiAgICAgICAgICAgICAgICAgICAgICAgICArIG1TdXJmYWNlSG9sZGVyICsgIik6ICIgKyB0aGlzKTsKQEAgLTczNywxMSArNzUwLDIzIEBACiAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cudihUQUcsICJSZW1vdmluZyB3aW5kb3cgYW5kIGRlc3Ryb3lpbmcgc3VyZmFjZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBtU3VyZmFjZUhvbGRlci5nZXRTdXJmYWNlKCkgKyAiIG9mOiAiICsgdGhpcyk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAobUlucHV0Q2hhbm5lbCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBJbnB1dFF1ZXVlLnVucmVnaXN0ZXJJbnB1dENoYW5uZWwobUlucHV0Q2hhbm5lbCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgIG1TZXNzaW9uLnJlbW92ZShtV2luZG93KTsKICAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgewogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBtU3VyZmFjZUhvbGRlci5tU3VyZmFjZS5yZWxlYXNlKCk7CiAgICAgICAgICAgICAgICAgbUNyZWF0ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBEaXNwb3NlIHRoZSBpbnB1dCBjaGFubmVsIGFmdGVyIHJlbW92aW5nIHRoZSB3aW5kb3cgc28gdGhlIFdpbmRvdyBNYW5hZ2VyCisgICAgICAgICAgICAgICAgLy8gZG9lc24ndCBpbnRlcnByZXQgdGhlIGlucHV0IGNoYW5uZWwgYmVpbmcgY2xvc2VkIGFzIGFuIGFibm9ybWFsIHRlcm1pbmF0aW9uLgorICAgICAgICAgICAgICAgIGlmIChtSW5wdXRDaGFubmVsICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgbUlucHV0Q2hhbm5lbC5kaXNwb3NlKCk7CisgICAgICAgICAgICAgICAgICAgIG1JbnB1dENoYW5uZWwgPSBudWxsOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTc5Myw3ICs4MTgsNyBAQAogCiAgICAgICAgIHB1YmxpYyB2b2lkIGRpc3BhdGNoUG9pbnRlcihNb3Rpb25FdmVudCBldmVudCkgewogICAgICAgICAgICAgaWYgKG1FbmdpbmUgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIG1FbmdpbmUubVdpbmRvdy5vbkRpc3BhdGNoUG9pbnRlcihldmVudCwgZXZlbnQuZ2V0RXZlbnRUaW1lKCksIGZhbHNlKTsKKyAgICAgICAgICAgICAgICBtRW5naW5lLmRpc3BhdGNoUG9pbnRlcihldmVudCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC90ZXh0L3V0aWwvUmZjODIyVG9rZW5pemVyLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC90ZXh0L3V0aWwvUmZjODIyVG9rZW5pemVyLmphdmEKaW5kZXggOTUyZDgzMy4uNjljZjkzYyAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvdGV4dC91dGlsL1JmYzgyMlRva2VuaXplci5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL3RleHQvdXRpbC9SZmM4MjJUb2tlbml6ZXIuamF2YQpAQCAtODQsOCArODQsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJyInKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpKys7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChjID09ICdcXCcgJiYgaSArIDEgPCBjdXJzb3IpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUuYXBwZW5kKHRleHQuY2hhckF0KGkgKyAxKSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYyA9PSAnXFwnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSArIDEgPCBjdXJzb3IpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLmFwcGVuZCh0ZXh0LmNoYXJBdChpICsgMSkpOworICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgaSArPSAyOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgbmFtZS5hcHBlbmQoYyk7CkBAIC0xMTAsOCArMTEyLDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50LmFwcGVuZChjKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsKys7CiAgICAgICAgICAgICAgICAgICAgICAgICBpKys7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYyA9PSAnXFwnICYmIGkgKyAxIDwgY3Vyc29yKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb21tZW50LmFwcGVuZCh0ZXh0LmNoYXJBdChpICsgMSkpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGMgPT0gJ1xcJykgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgKyAxIDwgY3Vyc29yKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWVudC5hcHBlbmQodGV4dC5jaGFyQXQoaSArIDEpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGkgKz0gMjsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1lbnQuYXBwZW5kKGMpOwpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvdXRpbC9EaXNwbGF5TWV0cmljcy5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvdXRpbC9EaXNwbGF5TWV0cmljcy5qYXZhCmluZGV4IDI2MjhlYjQuLjc2ZDgxMDYgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL3V0aWwvRGlzcGxheU1ldHJpY3MuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC91dGlsL0Rpc3BsYXlNZXRyaWNzLmphdmEKQEAgLTEzNSw2ICsxMzUsNyBAQAogICAgICAgICAgICAgaW50IHNjcmVlbkxheW91dCkgewogICAgICAgICBib29sZWFuIGV4cGFuZGFibGUgPSBjb21wYXRpYmlsaXR5SW5mby5pc0NvbmZpZ3VyZWRFeHBhbmRhYmxlKCk7CiAgICAgICAgIGJvb2xlYW4gbGFyZ2VTY3JlZW5zID0gY29tcGF0aWJpbGl0eUluZm8uaXNDb25maWd1cmVkTGFyZ2VTY3JlZW5zKCk7CisgICAgICAgIGJvb2xlYW4geGxhcmdlU2NyZWVucyA9IGNvbXBhdGliaWxpdHlJbmZvLmlzQ29uZmlndXJlZFhMYXJnZVNjcmVlbnMoKTsKICAgICAgICAgCiAgICAgICAgIC8vIE5vdGU6IHRoaXMgYXNzdW1lIHRoYXQgY29uZmlndXJhdGlvbiBpcyB1cGRhdGVkIGJlZm9yZSBjYWxsaW5nCiAgICAgICAgIC8vIHVwZGF0ZU1ldHJpY3MgbWV0aG9kLgpAQCAtMTU3LDggKzE1OCwxOCBAQAogICAgICAgICAgICAgICAgIGNvbXBhdGliaWxpdHlJbmZvLnNldExhcmdlU2NyZWVucyhmYWxzZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgaWYgKCF4bGFyZ2VTY3JlZW5zKSB7CisgICAgICAgICAgICBpZiAoKHNjcmVlbkxheW91dCZDb25maWd1cmF0aW9uLlNDUkVFTkxBWU9VVF9TSVpFX01BU0spCisgICAgICAgICAgICAgICAgICAgICE9IENvbmZpZ3VyYXRpb24uU0NSRUVOTEFZT1VUX1NJWkVfWExBUkdFKSB7CisgICAgICAgICAgICAgICAgeGxhcmdlU2NyZWVucyA9IHRydWU7CisgICAgICAgICAgICAgICAgLy8gdGhlIGN1cnJlbnQgc2NyZWVuIHNpemUgaXMgbm90IGxhcmdlLgorICAgICAgICAgICAgICAgIGNvbXBhdGliaWxpdHlJbmZvLnNldFhMYXJnZVNjcmVlbnModHJ1ZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGNvbXBhdGliaWxpdHlJbmZvLnNldFhMYXJnZVNjcmVlbnMoZmFsc2UpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIAotICAgICAgICBpZiAoIWV4cGFuZGFibGUgfHwgIWxhcmdlU2NyZWVucykgeworICAgICAgICBpZiAoIWV4cGFuZGFibGUgfHwgKCFsYXJnZVNjcmVlbnMgJiYgIXhsYXJnZVNjcmVlbnMpKSB7CiAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgbGFyZ2VyIHNjcmVlbiBkZXZpY2UgYW5kIHRoZSBhcHAgaXMgbm90IAogICAgICAgICAgICAgLy8gY29tcGF0aWJsZSB3aXRoIGxhcmdlIHNjcmVlbnMsIHNvIGRpZGRsZSBpdC4KICAgICAgICAgICAgIApkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvdXRpbC9Mb2cuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL3V0aWwvTG9nLmphdmEKaW5kZXggZTExMTY2OS4uZDU3N2I3NCAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvdXRpbC9Mb2cuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC91dGlsL0xvZy5qYXZhCkBAIC04OCw2ICs4OCwyMSBAQAogICAgICAgICBUZXJyaWJsZUZhaWx1cmUoU3RyaW5nIG1zZywgVGhyb3dhYmxlIGNhdXNlKSB7IHN1cGVyKG1zZywgY2F1c2UpOyB9CiAgICAgfQogCisgICAgLyoqCisgICAgICogSW50ZXJmYWNlIHRvIGhhbmRsZSB0ZXJyaWJsZSBmYWlsdXJlcyBmcm9tIHtAbGluayAjd3RmKCl9LgorICAgICAqCisgICAgICogQGhpZGUKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50ZXJmYWNlIFRlcnJpYmxlRmFpbHVyZUhhbmRsZXIgeworICAgICAgICB2b2lkIG9uVGVycmlibGVGYWlsdXJlKFN0cmluZyB0YWcsIFRlcnJpYmxlRmFpbHVyZSB3aGF0KTsKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBUZXJyaWJsZUZhaWx1cmVIYW5kbGVyIHNXdGZIYW5kbGVyID0gbmV3IFRlcnJpYmxlRmFpbHVyZUhhbmRsZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBvblRlcnJpYmxlRmFpbHVyZShTdHJpbmcgdGFnLCBUZXJyaWJsZUZhaWx1cmUgd2hhdCkgeworICAgICAgICAgICAgICAgIFJ1bnRpbWVJbml0Lnd0Zih0YWcsIHdoYXQpOworICAgICAgICAgICAgfQorICAgICAgICB9OworCiAgICAgcHJpdmF0ZSBMb2coKSB7CiAgICAgfQogCkBAIC0yNTcsMTMgKzI3MiwyOSBAQAogICAgICAqIEBwYXJhbSB0ciBBbiBleGNlcHRpb24gdG8gbG9nLiAgTWF5IGJlIG51bGwuCiAgICAgICovCiAgICAgcHVibGljIHN0YXRpYyBpbnQgd3RmKFN0cmluZyB0YWcsIFN0cmluZyBtc2csIFRocm93YWJsZSB0cikgewotICAgICAgICB0ciA9IG5ldyBUZXJyaWJsZUZhaWx1cmUobXNnLCB0cik7CisgICAgICAgIFRlcnJpYmxlRmFpbHVyZSB3aGF0ID0gbmV3IFRlcnJpYmxlRmFpbHVyZShtc2csIHRyKTsKICAgICAgICAgaW50IGJ5dGVzID0gcHJpbnRsbl9uYXRpdmUoTE9HX0lEX01BSU4sIEFTU0VSVCwgdGFnLCBnZXRTdGFja1RyYWNlU3RyaW5nKHRyKSk7Ci0gICAgICAgIFJ1bnRpbWVJbml0Lnd0Zih0YWcsIHRyKTsKKyAgICAgICAgc1d0ZkhhbmRsZXIub25UZXJyaWJsZUZhaWx1cmUodGFnLCB3aGF0KTsKICAgICAgICAgcmV0dXJuIGJ5dGVzOwogICAgIH0KIAogICAgIC8qKgorICAgICAqIFNldHMgdGhlIHRlcnJpYmxlIGZhaWx1cmUgaGFuZGxlciwgZm9yIHRlc3RpbmcuCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRoZSBvbGQgaGFuZGxlcgorICAgICAqCisgICAgICogQGhpZGUKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIFRlcnJpYmxlRmFpbHVyZUhhbmRsZXIgc2V0V3RmSGFuZGxlcihUZXJyaWJsZUZhaWx1cmVIYW5kbGVyIGhhbmRsZXIpIHsKKyAgICAgICAgaWYgKGhhbmRsZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCJoYW5kbGVyID09IG51bGwiKTsKKyAgICAgICAgfQorICAgICAgICBUZXJyaWJsZUZhaWx1cmVIYW5kbGVyIG9sZEhhbmRsZXIgPSBzV3RmSGFuZGxlcjsKKyAgICAgICAgc1d0ZkhhbmRsZXIgPSBoYW5kbGVyOworICAgICAgICByZXR1cm4gb2xkSGFuZGxlcjsKKyAgICB9CisKKyAgICAvKioKICAgICAgKiBIYW5keSBmdW5jdGlvbiB0byBnZXQgYSBsb2dnYWJsZSBzdGFjayB0cmFjZSBmcm9tIGEgVGhyb3dhYmxlCiAgICAgICogQHBhcmFtIHRyIEFuIGV4Y2VwdGlvbiB0byBsb2cKICAgICAgKi8KZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvSVdpbmRvdy5haWRsIGIvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9JV2luZG93LmFpZGwKaW5kZXggM2IwOTgwOC4uOTIxMDE4YSAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9JV2luZG93LmFpZGwKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9JV2luZG93LmFpZGwKQEAgLTQ2LDkgKzQ2LDYgQEAKIAogICAgIHZvaWQgcmVzaXplZChpbnQgdywgaW50IGgsIGluIFJlY3QgY292ZXJlZEluc2V0cywgaW4gUmVjdCB2aXNpYmxlSW5zZXRzLAogICAgICAgICAgICAgYm9vbGVhbiByZXBvcnREcmF3LCBpbiBDb25maWd1cmF0aW9uIG5ld0NvbmZpZyk7Ci0gICAgdm9pZCBkaXNwYXRjaEtleShpbiBLZXlFdmVudCBldmVudCk7Ci0gICAgdm9pZCBkaXNwYXRjaFBvaW50ZXIoaW4gTW90aW9uRXZlbnQgZXZlbnQsIGxvbmcgZXZlbnRUaW1lLCBib29sZWFuIGNhbGxXaGVuRG9uZSk7Ci0gICAgdm9pZCBkaXNwYXRjaFRyYWNrYmFsbChpbiBNb3Rpb25FdmVudCBldmVudCwgbG9uZyBldmVudFRpbWUsIGJvb2xlYW4gY2FsbFdoZW5Eb25lKTsKICAgICB2b2lkIGRpc3BhdGNoQXBwVmlzaWJpbGl0eShib29sZWFuIHZpc2libGUpOwogICAgIHZvaWQgZGlzcGF0Y2hHZXROZXdTdXJmYWNlKCk7CiAKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvSVdpbmRvd1Nlc3Npb24uYWlkbCBiL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvSVdpbmRvd1Nlc3Npb24uYWlkbAppbmRleCAwMWYwN2Q2Li43ZjEwYjc2IDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC92aWV3L0lXaW5kb3dTZXNzaW9uLmFpZGwKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9JV2luZG93U2Vzc2lvbi5haWRsCkBAIC0yMSw2ICsyMSw3IEBACiBpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5SZWN0OwogaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuUmVnaW9uOwogaW1wb3J0IGFuZHJvaWQub3MuQnVuZGxlOworaW1wb3J0IGFuZHJvaWQudmlldy5JbnB1dENoYW5uZWw7CiBpbXBvcnQgYW5kcm9pZC52aWV3LklXaW5kb3c7CiBpbXBvcnQgYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50OwogaW1wb3J0IGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyOwpAQCAtMzMsNiArMzQsOSBAQAogICovCiBpbnRlcmZhY2UgSVdpbmRvd1Nlc3Npb24gewogICAgIGludCBhZGQoSVdpbmRvdyB3aW5kb3csIGluIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIGF0dHJzLAorICAgICAgICAgICAgaW4gaW50IHZpZXdWaXNpYmlsaXR5LCBvdXQgUmVjdCBvdXRDb250ZW50SW5zZXRzLAorICAgICAgICAgICAgb3V0IElucHV0Q2hhbm5lbCBvdXRJbnB1dENoYW5uZWwpOworICAgIGludCBhZGRXaXRob3V0SW5wdXRDaGFubmVsKElXaW5kb3cgd2luZG93LCBpbiBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcyBhdHRycywKICAgICAgICAgICAgIGluIGludCB2aWV3VmlzaWJpbGl0eSwgb3V0IFJlY3Qgb3V0Q29udGVudEluc2V0cyk7CiAgICAgdm9pZCByZW1vdmUoSVdpbmRvdyB3aW5kb3cpOwogICAgIApAQCAtMTA1LDEwICsxMDksNiBAQAogICAgIHZvaWQgZ2V0RGlzcGxheUZyYW1lKElXaW5kb3cgd2luZG93LCBvdXQgUmVjdCBvdXREaXNwbGF5RnJhbWUpOwogICAgIAogICAgIHZvaWQgZmluaXNoRHJhd2luZyhJV2luZG93IHdpbmRvdyk7Ci0KLSAgICB2b2lkIGZpbmlzaEtleShJV2luZG93IHdpbmRvdyk7Ci0gICAgTW90aW9uRXZlbnQgZ2V0UGVuZGluZ1BvaW50ZXJNb3ZlKElXaW5kb3cgd2luZG93KTsKLSAgICBNb3Rpb25FdmVudCBnZXRQZW5kaW5nVHJhY2tiYWxsTW92ZShJV2luZG93IHdpbmRvdyk7CiAgICAgCiAgICAgdm9pZCBzZXRJblRvdWNoTW9kZShib29sZWFuIHNob3dGb2N1cyk7CiAgICAgYm9vbGVhbiBnZXRJblRvdWNoTW9kZSgpOwpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9JbnB1dENoYW5uZWwuYWlkbCBiL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvSW5wdXRDaGFubmVsLmFpZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzRjMGFhNAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvSW5wdXRDaGFubmVsLmFpZGwKQEAgLTAsMCArMSwyMCBAQAorLyogLy9kZXZpY2UvamF2YS9hbmRyb2lkL2FuZHJvaWQvdmlldy9JbnB1dENoYW5uZWwuYWlkbAorKioKKyoqIENvcHlyaWdodCAyMDEwLCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisqKgorKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7IAorKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiAKKyoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdCAKKyoqCisqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIAorKioKKyoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUgCisqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLCAKKyoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAKKyoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgCisqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyovCisKK3BhY2thZ2UgYW5kcm9pZC52aWV3OworCitwYXJjZWxhYmxlIElucHV0Q2hhbm5lbDsKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvSW5wdXRDaGFubmVsLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC92aWV3L0lucHV0Q2hhbm5lbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyNGMzYzkKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2phdmEvYW5kcm9pZC92aWV3L0lucHV0Q2hhbm5lbC5qYXZhCkBAIC0wLDAgKzEsMTUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBhbmRyb2lkLnZpZXc7CisKK2ltcG9ydCBhbmRyb2lkLm9zLlBhcmNlbDsKK2ltcG9ydCBhbmRyb2lkLm9zLlBhcmNlbGFibGU7CitpbXBvcnQgYW5kcm9pZC51dGlsLlNsb2c7CisKKy8qKgorICogQW4gaW5wdXQgY2hhbm5lbCBzcGVjaWZpZXMgdGhlIGZpbGUgZGVzY3JpcHRvcnMgdXNlZCB0byBzZW5kIGlucHV0IGV2ZW50cyB0bworICogYSB3aW5kb3cgaW4gYW5vdGhlciBwcm9jZXNzLiAgSXQgaXMgUGFyY2VsYWJsZSBzbyB0aGF0IGl0IGNhbiBiZSBzZW50CisgKiB0byB0aGUgcHJvY2VzcyB0aGF0IGlzIHRvIHJlY2VpdmUgZXZlbnRzLiAgT25seSBvbmUgdGhyZWFkIHNob3VsZCBiZSByZWFkaW5nCisgKiBmcm9tIGFuIElucHV0Q2hhbm5lbCBhdCBhIHRpbWUuCisgKiBAaGlkZQorICovCitwdWJsaWMgZmluYWwgY2xhc3MgSW5wdXRDaGFubmVsIGltcGxlbWVudHMgUGFyY2VsYWJsZSB7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9ICJJbnB1dENoYW5uZWwiOworICAgIAorICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgUGFyY2VsYWJsZS5DcmVhdG9yPElucHV0Q2hhbm5lbD4gQ1JFQVRPUgorICAgICAgICAgICAgPSBuZXcgUGFyY2VsYWJsZS5DcmVhdG9yPElucHV0Q2hhbm5lbD4oKSB7CisgICAgICAgIHB1YmxpYyBJbnB1dENoYW5uZWwgY3JlYXRlRnJvbVBhcmNlbChQYXJjZWwgc291cmNlKSB7CisgICAgICAgICAgICBJbnB1dENoYW5uZWwgcmVzdWx0ID0gbmV3IElucHV0Q2hhbm5lbCgpOworICAgICAgICAgICAgcmVzdWx0LnJlYWRGcm9tUGFyY2VsKHNvdXJjZSk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwdWJsaWMgSW5wdXRDaGFubmVsW10gbmV3QXJyYXkoaW50IHNpemUpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgSW5wdXRDaGFubmVsW3NpemVdOworICAgICAgICB9CisgICAgfTsKKyAgICAKKyAgICBAU3VwcHJlc3NXYXJuaW5ncygidW51c2VkIikKKyAgICBwcml2YXRlIGludCBtUHRyOyAvLyB1c2VkIGJ5IG5hdGl2ZSBjb2RlCisgICAgCisgICAgcHJpdmF0ZSBib29sZWFuIG1EaXNwb3NlQWZ0ZXJXcml0ZVRvUGFyY2VsOworICAgIAorICAgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSBJbnB1dENoYW5uZWxbXSBuYXRpdmVPcGVuSW5wdXRDaGFubmVsUGFpcihTdHJpbmcgbmFtZSk7CisgICAgCisgICAgcHJpdmF0ZSBuYXRpdmUgdm9pZCBuYXRpdmVEaXNwb3NlKGJvb2xlYW4gZmluYWxpemVkKTsKKyAgICBwcml2YXRlIG5hdGl2ZSB2b2lkIG5hdGl2ZVRyYW5zZmVyVG8oSW5wdXRDaGFubmVsIG90aGVyKTsKKyAgICBwcml2YXRlIG5hdGl2ZSB2b2lkIG5hdGl2ZVJlYWRGcm9tUGFyY2VsKFBhcmNlbCBwYXJjZWwpOworICAgIHByaXZhdGUgbmF0aXZlIHZvaWQgbmF0aXZlV3JpdGVUb1BhcmNlbChQYXJjZWwgcGFyY2VsKTsKKyAgICAKKyAgICBwcml2YXRlIG5hdGl2ZSBTdHJpbmcgbmF0aXZlR2V0TmFtZSgpOworCisgICAgLyoqCisgICAgICogQ3JlYXRlcyBhbiB1bmluaXRpYWxpemVkIGlucHV0IGNoYW5uZWwuCisgICAgICogSXQgY2FuIGJlIGluaXRpYWxpemVkIGJ5IHJlYWRpbmcgZnJvbSBhIFBhcmNlbCBvciBieSB0cmFuc2ZlcnJpbmcgdGhlIHN0YXRlIG9mCisgICAgICogYW5vdGhlciBpbnB1dCBjaGFubmVsIGludG8gdGhpcyBvbmUuCisgICAgICovCisgICAgcHVibGljIElucHV0Q2hhbm5lbCgpIHsKKyAgICB9CisgICAgCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgZmluYWxpemUoKSB0aHJvd3MgVGhyb3dhYmxlIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG5hdGl2ZURpc3Bvc2UodHJ1ZSk7CisgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICBzdXBlci5maW5hbGl6ZSgpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIENyZWF0ZXMgYSBuZXcgaW5wdXQgY2hhbm5lbCBwYWlyLiAgT25lIGNoYW5uZWwgc2hvdWxkIGJlIHByb3ZpZGVkIHRvIHRoZSBpbnB1dAorICAgICAqIGRpc3BhdGNoZXIgYW5kIHRoZSBvdGhlciB0byB0aGUgYXBwbGljYXRpb24ncyBpbnB1dCBxdWV1ZS4KKyAgICAgKiBAcGFyYW0gbmFtZSBUaGUgZGVzY3JpcHRpdmUgKG5vbi11bmlxdWUpIG5hbWUgb2YgdGhlIGNoYW5uZWwgcGFpci4KKyAgICAgKiBAcmV0dXJuIEEgcGFpciBvZiBpbnB1dCBjaGFubmVscy4gIFRoZXkgYXJlIHN5bW1ldHJpYyBhbmQgaW5kaXN0aW5ndWlzaGFibGUuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBJbnB1dENoYW5uZWxbXSBvcGVuSW5wdXRDaGFubmVsUGFpcihTdHJpbmcgbmFtZSkgeworICAgICAgICBpZiAobmFtZSA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJuYW1lIG11c3Qgbm90IGJlIG51bGwiKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgU2xvZy5kKFRBRywgIk9wZW5pbmcgaW5wdXQgY2hhbm5lbCBwYWlyICciICsgbmFtZSArICInIik7CisgICAgICAgIHJldHVybiBuYXRpdmVPcGVuSW5wdXRDaGFubmVsUGFpcihuYW1lKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgbmFtZSBvZiB0aGUgaW5wdXQgY2hhbm5lbC4KKyAgICAgKiBAcmV0dXJuIFRoZSBpbnB1dCBjaGFubmVsIG5hbWUuCisgICAgICovCisgICAgcHVibGljIFN0cmluZyBnZXROYW1lKCkgeworICAgICAgICBTdHJpbmcgbmFtZSA9IG5hdGl2ZUdldE5hbWUoKTsKKyAgICAgICAgcmV0dXJuIG5hbWUgIT0gbnVsbCA/IG5hbWUgOiAidW5pbml0aWFsaXplZCI7CisgICAgfQorCisgICAgLyoqCisgICAgICogRGlzcG9zZXMgdGhlIGlucHV0IGNoYW5uZWwuCisgICAgICogRXhwbGljaXRseSByZWxlYXNlcyB0aGUgcmVmZXJlbmNlIHRoaXMgb2JqZWN0IGlzIGhvbGRpbmcgb24gdGhlIGlucHV0IGNoYW5uZWwuCisgICAgICogV2hlbiBhbGwgcmVmZXJlbmNlcyBhcmUgcmVsZWFzZWQsIHRoZSBpbnB1dCBjaGFubmVsIHdpbGwgYmUgY2xvc2VkLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGRpc3Bvc2UoKSB7CisgICAgICAgIG5hdGl2ZURpc3Bvc2UoZmFsc2UpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBUcmFuc2ZlcnMgb3duZXJzaGlwIG9mIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgaW5wdXQgY2hhbm5lbCB0byBhbm90aGVyCisgICAgICogaW5zdGFuY2UgYW5kIGludmFsaWRhdGVzIHRoaXMgaW5zdGFuY2UuICBUaGlzIGlzIHVzZWQgdG8gcGFzcyBhbiBpbnB1dCBjaGFubmVsCisgICAgICogYXMgYW4gb3V0IHBhcmFtZXRlciBpbiBhIGJpbmRlciBjYWxsLgorICAgICAqIEBwYXJhbSBvdGhlciBUaGUgb3RoZXIgaW5wdXQgY2hhbm5lbCBpbnN0YW5jZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCB0cmFuc2ZlclRvQmluZGVyT3V0UGFyYW1ldGVyKElucHV0Q2hhbm5lbCBvdXRQYXJhbWV0ZXIpIHsKKyAgICAgICAgaWYgKG91dFBhcmFtZXRlciA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJvdXRQYXJhbWV0ZXIgbXVzdCBub3QgYmUgbnVsbCIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBuYXRpdmVUcmFuc2ZlclRvKG91dFBhcmFtZXRlcik7CisgICAgICAgIG91dFBhcmFtZXRlci5tRGlzcG9zZUFmdGVyV3JpdGVUb1BhcmNlbCA9IHRydWU7CisgICAgfQorCisgICAgcHVibGljIGludCBkZXNjcmliZUNvbnRlbnRzKCkgeworICAgICAgICByZXR1cm4gUGFyY2VsYWJsZS5DT05URU5UU19GSUxFX0RFU0NSSVBUT1I7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIHJlYWRGcm9tUGFyY2VsKFBhcmNlbCBpbikgeworICAgICAgICBpZiAoaW4gPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiaW4gbXVzdCBub3QgYmUgbnVsbCIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBuYXRpdmVSZWFkRnJvbVBhcmNlbChpbik7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIHdyaXRlVG9QYXJjZWwoUGFyY2VsIG91dCwgaW50IGZsYWdzKSB7CisgICAgICAgIGlmIChvdXQgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigib3V0IG11c3Qgbm90IGJlIG51bGwiKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbmF0aXZlV3JpdGVUb1BhcmNlbChvdXQpOworICAgICAgICAKKyAgICAgICAgaWYgKG1EaXNwb3NlQWZ0ZXJXcml0ZVRvUGFyY2VsKSB7CisgICAgICAgICAgICBkaXNwb3NlKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKyAgICAgICAgcmV0dXJuIGdldE5hbWUoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC92aWV3L0lucHV0SGFuZGxlci5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9JbnB1dEhhbmRsZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTZmNjIyCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9JbnB1dEhhbmRsZXIuamF2YQpAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBhbmRyb2lkLnZpZXc7CisKKy8qKgorICogSGFuZGxlcyBpbnB1dCBtZXNzYWdlcyB0aGF0IGFycml2ZSBvbiBhbiBpbnB1dCBjaGFubmVsLgorICogQGhpZGUKKyAqLworcHVibGljIGludGVyZmFjZSBJbnB1dEhhbmRsZXIgeworICAgIC8qKgorICAgICAqIEhhbmRsZSBhIGtleSBldmVudC4KKyAgICAgKiBJdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGNhbGxlZSB0byBlbnN1cmUgdGhhdCB0aGUgZmluaXNoZWQgY2FsbGJhY2sgaXMKKyAgICAgKiBldmVudHVhbGx5IGludm9rZWQgd2hlbiB0aGUgZXZlbnQgcHJvY2Vzc2luZyBpcyBmaW5pc2hlZCBhbmQgdGhlIGlucHV0IHN5c3RlbQorICAgICAqIGNhbiBzZW5kIHRoZSBuZXh0IGV2ZW50LgorICAgICAqIEBwYXJhbSBldmVudCBUaGUga2V5IGV2ZW50IGRhdGEuCisgICAgICogQHBhcmFtIGZpbmlzaGVkQ2FsbGJhY2sgVGhlIGNhbGxiYWNrIHRvIGludm9rZSB3aGVuIGV2ZW50IHByb2Nlc3NpbmcgaXMgZmluaXNoZWQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgaGFuZGxlS2V5KEtleUV2ZW50IGV2ZW50LCBSdW5uYWJsZSBmaW5pc2hlZENhbGxiYWNrKTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBIYW5kbGUgYSB0b3VjaCBldmVudC4KKyAgICAgKiBJdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGNhbGxlZSB0byBlbnN1cmUgdGhhdCB0aGUgZmluaXNoZWQgY2FsbGJhY2sgaXMKKyAgICAgKiBldmVudHVhbGx5IGludm9rZWQgd2hlbiB0aGUgZXZlbnQgcHJvY2Vzc2luZyBpcyBmaW5pc2hlZCBhbmQgdGhlIGlucHV0IHN5c3RlbQorICAgICAqIGNhbiBzZW5kIHRoZSBuZXh0IGV2ZW50LgorICAgICAqIEBwYXJhbSBldmVudCBUaGUgbW90aW9uIGV2ZW50IGRhdGEuCisgICAgICogQHBhcmFtIGZpbmlzaGVkQ2FsbGJhY2sgVGhlIGNhbGxiYWNrIHRvIGludm9rZSB3aGVuIGV2ZW50IHByb2Nlc3NpbmcgaXMgZmluaXNoZWQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgaGFuZGxlVG91Y2goTW90aW9uRXZlbnQgZXZlbnQsIFJ1bm5hYmxlIGZpbmlzaGVkQ2FsbGJhY2spOworICAgIAorICAgIC8qKgorICAgICAqIEhhbmRsZSBhIHRyYWNrYmFsbCBldmVudC4KKyAgICAgKiBJdCBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGNhbGxlZSB0byBlbnN1cmUgdGhhdCB0aGUgZmluaXNoZWQgY2FsbGJhY2sgaXMKKyAgICAgKiBldmVudHVhbGx5IGludm9rZWQgd2hlbiB0aGUgZXZlbnQgcHJvY2Vzc2luZyBpcyBmaW5pc2hlZCBhbmQgdGhlIGlucHV0IHN5c3RlbQorICAgICAqIGNhbiBzZW5kIHRoZSBuZXh0IGV2ZW50LgorICAgICAqIEBwYXJhbSBldmVudCBUaGUgbW90aW9uIGV2ZW50IGRhdGEuCisgICAgICogQHBhcmFtIGZpbmlzaGVkQ2FsbGJhY2sgVGhlIGNhbGxiYWNrIHRvIGludm9rZSB3aGVuIGV2ZW50IHByb2Nlc3NpbmcgaXMgZmluaXNoZWQuCisgICAgICovCisgICAgcHVibGljIHZvaWQgaGFuZGxlVHJhY2tiYWxsKE1vdGlvbkV2ZW50IGV2ZW50LCBSdW5uYWJsZSBmaW5pc2hlZENhbGxiYWNrKTsKK30KZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvSW5wdXRRdWV1ZS5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9JbnB1dFF1ZXVlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2ZlZWUzOAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvSW5wdXRRdWV1ZS5qYXZhCkBAIC0wLDAgKzEsMTQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBhbmRyb2lkLnZpZXc7CisKK2ltcG9ydCBhbmRyb2lkLm9zLk1lc3NhZ2VRdWV1ZTsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuU2xvZzsKKworLyoqCisgKiBBbiBpbnB1dCBxdWV1ZSBwcm92aWRlcyBhIG1lY2hhbmlzbSBmb3IgYW4gYXBwbGljYXRpb24gdG8gcmVjZWl2ZSBpbmNvbWluZworICogaW5wdXQgZXZlbnRzLiAgQ3VycmVudGx5IG9ubHkgdXNhYmxlIGZyb20gbmF0aXZlIGNvZGUuCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBJbnB1dFF1ZXVlIHsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gIklucHV0UXVldWUiOworICAgIAorICAgIHB1YmxpYyBzdGF0aWMgaW50ZXJmYWNlIENhbGxiYWNrIHsKKyAgICAgICAgdm9pZCBvbklucHV0UXVldWVDcmVhdGVkKElucHV0UXVldWUgcXVldWUpOworICAgICAgICB2b2lkIG9uSW5wdXRRdWV1ZURlc3Ryb3llZChJbnB1dFF1ZXVlIHF1ZXVlKTsKKyAgICB9CisKKyAgICBmaW5hbCBJbnB1dENoYW5uZWwgbUNoYW5uZWw7CisgICAgCisgICAgLy8gRGVzY3JpYmVzIHRoZSBpbnRlcnByZXRhdGlvbiBvZiBhbiBldmVudC4KKyAgICAvLyBYWFggVGhpcyBjb25jZXB0IGlzIHRlbnRhdGl2ZS4gIFNlZSBjb21tZW50cyBpbiBhbmRyb2lkL2lucHV0LmguCisgICAgLyoqIEBoaWRlICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSU5QVVRfRVZFTlRfTkFUVVJFX0tFWSA9IDE7CisgICAgLyoqIEBoaWRlICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgSU5QVVRfRVZFTlRfTkFUVVJFX1RPVUNIID0gMjsKKyAgICAvKiogQGhpZGUgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBJTlBVVF9FVkVOVF9OQVRVUkVfVFJBQ0tCQUxMID0gMzsKKyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBPYmplY3Qgc0xvY2sgPSBuZXcgT2JqZWN0KCk7CisgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIHZvaWQgbmF0aXZlUmVnaXN0ZXJJbnB1dENoYW5uZWwoSW5wdXRDaGFubmVsIGlucHV0Q2hhbm5lbCwKKyAgICAgICAgICAgIElucHV0SGFuZGxlciBpbnB1dEhhbmRsZXIsIE1lc3NhZ2VRdWV1ZSBtZXNzYWdlUXVldWUpOworICAgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSB2b2lkIG5hdGl2ZVVucmVnaXN0ZXJJbnB1dENoYW5uZWwoSW5wdXRDaGFubmVsIGlucHV0Q2hhbm5lbCk7CisgICAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIHZvaWQgbmF0aXZlRmluaXNoZWQobG9uZyBmaW5pc2hlZFRva2VuKTsKKyAgICAKKyAgICAvKiogQGhpZGUgKi8KKyAgICBwdWJsaWMgSW5wdXRRdWV1ZShJbnB1dENoYW5uZWwgY2hhbm5lbCkgeworICAgICAgICBtQ2hhbm5lbCA9IGNoYW5uZWw7CisgICAgfQorICAgIAorICAgIC8qKiBAaGlkZSAqLworICAgIHB1YmxpYyBJbnB1dENoYW5uZWwgZ2V0SW5wdXRDaGFubmVsKCkgeworICAgICAgICByZXR1cm4gbUNoYW5uZWw7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIFJlZ2lzdGVycyBhbiBpbnB1dCBjaGFubmVsIGFuZCBoYW5kbGVyLgorICAgICAqIEBwYXJhbSBpbnB1dENoYW5uZWwgVGhlIGlucHV0IGNoYW5uZWwgdG8gcmVnaXN0ZXIuCisgICAgICogQHBhcmFtIGlucHV0SGFuZGxlciBUaGUgaW5wdXQgaGFuZGxlciB0byBpbnB1dCBldmVudHMgc2VuZCB0byB0aGUgdGFyZ2V0LgorICAgICAqIEBwYXJhbSBtZXNzYWdlUXVldWUgVGhlIG1lc3NhZ2UgcXVldWUgb24gd2hvc2UgdGhyZWFkIHRoZSBoYW5kbGVyIHNob3VsZCBiZSBpbnZva2VkLgorICAgICAqIEBoaWRlCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyB2b2lkIHJlZ2lzdGVySW5wdXRDaGFubmVsKElucHV0Q2hhbm5lbCBpbnB1dENoYW5uZWwsIElucHV0SGFuZGxlciBpbnB1dEhhbmRsZXIsCisgICAgICAgICAgICBNZXNzYWdlUXVldWUgbWVzc2FnZVF1ZXVlKSB7CisgICAgICAgIGlmIChpbnB1dENoYW5uZWwgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiaW5wdXRDaGFubmVsIG11c3Qgbm90IGJlIG51bGwiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaW5wdXRIYW5kbGVyID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImlucHV0SGFuZGxlciBtdXN0IG5vdCBiZSBudWxsIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1lc3NhZ2VRdWV1ZSA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJtZXNzYWdlUXVldWUgbXVzdCBub3QgYmUgbnVsbCIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzeW5jaHJvbml6ZWQgKHNMb2NrKSB7CisgICAgICAgICAgICBTbG9nLmQoVEFHLCAiUmVnaXN0ZXJpbmcgaW5wdXQgY2hhbm5lbCAnIiArIGlucHV0Q2hhbm5lbCArICInIik7CisgICAgICAgICAgICBuYXRpdmVSZWdpc3RlcklucHV0Q2hhbm5lbChpbnB1dENoYW5uZWwsIGlucHV0SGFuZGxlciwgbWVzc2FnZVF1ZXVlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBVbnJlZ2lzdGVycyBhbiBpbnB1dCBjaGFubmVsLgorICAgICAqIERvZXMgbm90aGluZyBpZiB0aGUgY2hhbm5lbCBpcyBub3QgY3VycmVudGx5IHJlZ2lzdGVyZWQuCisgICAgICogQHBhcmFtIGlucHV0Q2hhbm5lbCBUaGUgaW5wdXQgY2hhbm5lbCB0byB1bnJlZ2lzdGVyLgorICAgICAqIEBoaWRlCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyB2b2lkIHVucmVnaXN0ZXJJbnB1dENoYW5uZWwoSW5wdXRDaGFubmVsIGlucHV0Q2hhbm5lbCkgeworICAgICAgICBpZiAoaW5wdXRDaGFubmVsID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImlucHV0Q2hhbm5lbCBtdXN0IG5vdCBiZSBudWxsIik7CisgICAgICAgIH0KKworICAgICAgICBzeW5jaHJvbml6ZWQgKHNMb2NrKSB7CisgICAgICAgICAgICBTbG9nLmQoVEFHLCAiVW5yZWdpc3RlcmluZyBpbnB1dCBjaGFubmVsICciICsgaW5wdXRDaGFubmVsICsgIiciKTsKKyAgICAgICAgICAgIG5hdGl2ZVVucmVnaXN0ZXJJbnB1dENoYW5uZWwoaW5wdXRDaGFubmVsKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBAU3VwcHJlc3NXYXJuaW5ncygidW51c2VkIikKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIGRpc3BhdGNoS2V5RXZlbnQoSW5wdXRIYW5kbGVyIGlucHV0SGFuZGxlciwKKyAgICAgICAgICAgIEtleUV2ZW50IGV2ZW50LCBpbnQgbmF0dXJlLCBsb25nIGZpbmlzaGVkVG9rZW4pIHsKKyAgICAgICAgUnVubmFibGUgZmluaXNoZWRDYWxsYmFjayA9IG5ldyBGaW5pc2hlZENhbGxiYWNrKGZpbmlzaGVkVG9rZW4pOworICAgICAgICAKKyAgICAgICAgaWYgKG5hdHVyZSA9PSBJTlBVVF9FVkVOVF9OQVRVUkVfS0VZKSB7CisgICAgICAgICAgICBpbnB1dEhhbmRsZXIuaGFuZGxlS2V5KGV2ZW50LCBmaW5pc2hlZENhbGxiYWNrKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFNsb2cuZChUQUcsICJVbnN1cHBvcnRlZCBuYXR1cmUgZm9yIGtleSBldmVudDogIiArIG5hdHVyZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAU3VwcHJlc3NXYXJuaW5ncygidW51c2VkIikKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIGRpc3BhdGNoTW90aW9uRXZlbnQoSW5wdXRIYW5kbGVyIGlucHV0SGFuZGxlciwKKyAgICAgICAgICAgIE1vdGlvbkV2ZW50IGV2ZW50LCBpbnQgbmF0dXJlLCBsb25nIGZpbmlzaGVkVG9rZW4pIHsKKyAgICAgICAgUnVubmFibGUgZmluaXNoZWRDYWxsYmFjayA9IG5ldyBGaW5pc2hlZENhbGxiYWNrKGZpbmlzaGVkVG9rZW4pOworICAgICAgICAKKyAgICAgICAgaWYgKG5hdHVyZSA9PSBJTlBVVF9FVkVOVF9OQVRVUkVfVE9VQ0gpIHsKKyAgICAgICAgICAgIGlucHV0SGFuZGxlci5oYW5kbGVUb3VjaChldmVudCwgZmluaXNoZWRDYWxsYmFjayk7CisgICAgICAgIH0gZWxzZSBpZiAobmF0dXJlID09IElOUFVUX0VWRU5UX05BVFVSRV9UUkFDS0JBTEwpIHsKKyAgICAgICAgICAgIGlucHV0SGFuZGxlci5oYW5kbGVUcmFja2JhbGwoZXZlbnQsIGZpbmlzaGVkQ2FsbGJhY2spOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgU2xvZy5kKFRBRywgIlVuc3VwcG9ydGVkIG5hdHVyZSBmb3IgbW90aW9uIGV2ZW50OiAiICsgbmF0dXJlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvLyBUT0RPIGNvbnNpZGVyIHJlY3ljbGluZyBmaW5pc2hlZCBjYWxsYmFja3Mgd2hlbiBkb25lCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgRmluaXNoZWRDYWxsYmFjayBpbXBsZW1lbnRzIFJ1bm5hYmxlIHsKKyAgICAgICAgcHJpdmF0ZSBsb25nIG1GaW5pc2hlZFRva2VuOworICAgICAgICAKKyAgICAgICAgcHVibGljIEZpbmlzaGVkQ2FsbGJhY2sobG9uZyBmaW5pc2hlZFRva2VuKSB7CisgICAgICAgICAgICBtRmluaXNoZWRUb2tlbiA9IGZpbmlzaGVkVG9rZW47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgIHN5bmNocm9uaXplZCAoc0xvY2spIHsKKyAgICAgICAgICAgICAgICBuYXRpdmVGaW5pc2hlZChtRmluaXNoZWRUb2tlbik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC92aWV3L0tleUV2ZW50LmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC92aWV3L0tleUV2ZW50LmphdmEKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCBkNGY5Nzg3Li4wYmZiNmQ2Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvS2V5RXZlbnQuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC92aWV3L0tleUV2ZW50LmphdmEKQEAgLTEyMCw5ICsxMjAsMTQgQEAKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBLRVlDT0RFX01FRElBX1JFV0lORCAgICA9IDg5OwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEtFWUNPREVfTUVESUFfRkFTVF9GT1JXQVJEID0gOTA7CiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgS0VZQ09ERV9NVVRFICAgICAgICAgICAgPSA5MTsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBLRVlDT0RFX1BBR0VfVVAgICAgICAgICA9IDkyOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEtFWUNPREVfUEFHRV9ET1dOICAgICAgID0gOTM7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgS0VZQ09ERV9QSUNUU1lNQk9MUyAgICAgPSA5NDsgICAvLyBzd2l0Y2ggc3ltYm9sLXNldHMgKEVtb2ppLEthby1tb2ppKQorICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEtFWUNPREVfU1dJVENIX0NIQVJTRVQgID0gOTU7ICAgLy8gc3dpdGNoIGNoYXItc2V0cyAoS2FuamksS2F0YWthbmEpCiAKICAgICAvLyBOT1RFOiBJZiB5b3UgYWRkIGEgbmV3IGtleWNvZGUgaGVyZSB5b3UgbXVzdCBhbHNvIGFkZCBpdCB0bzoKICAgICAvLyAgaXNTeXN0ZW0oKQorICAgIC8vICBuYXRpdmUvaW5jbHVkZS9hbmRyb2lkL2tleWNvZGVzLmgKICAgICAvLyAgZnJhbWV3b3Jrcy9iYXNlL2luY2x1ZGUvdWkvS2V5Y29kZUxhYmVscy5oCiAgICAgLy8gIHRvb2xzL3B1cHBldF9tYXN0ZXIvUHVwcGV0TWFzdGVyL25hdl9rZXlzLnB5CiAgICAgLy8gIGZyYW1ld29ya3MvYmFzZS9jb3JlL3Jlcy9yZXMvdmFsdWVzL2F0dHJzLnhtbApAQCAtMTM1LDcgKzE0MCw3IEBACiAgICAgLy8gIHRob3NlIG5ldyBjb2Rlcy4gIFRoaXMgaXMgaW50ZW5kZWQgdG8gbWFpbnRhaW4gYSBjb25zaXN0ZW50CiAgICAgLy8gIHNldCBvZiBrZXkgY29kZSBkZWZpbml0aW9ucyBhY3Jvc3MgYWxsIEFuZHJvaWQgZGV2aWNlcy4KICAgIAotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBMQVNUX0tFWUNPREUgICAgICAgICAgID0gS0VZQ09ERV9NVVRFOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBMQVNUX0tFWUNPREUgICAgICAgICAgID0gS0VZQ09ERV9TV0lUQ0hfQ0hBUlNFVDsKICAgICAKICAgICAvKioKICAgICAgKiBAZGVwcmVjYXRlZCBUaGVyZSBhcmUgbm93IG1vcmUgdGhhbiBNQVhfS0VZQ09ERSBrZXljb2Rlcy4KQEAgLTE1OCw3ICsxNjMsNyBAQAogICAgICAqIGtleSBjb2RlIGlzIG5vdCB7I2xpbmsge0BsaW5rICNLRVlDT0RFX1VOS05PV059IHRoZW4gdGhlCiAgICAgICogeyNsaW5rIHtAbGluayAjZ2V0UmVwZWF0Q291bnQoKX0gbWV0aG9kIHJldHVybnMgdGhlIG51bWJlciBvZiB0aW1lcwogICAgICAqIHRoZSBnaXZlbiBrZXkgY29kZSBzaG91bGQgYmUgZXhlY3V0ZWQuCi0gICAgICogT3RoZXJ3aXNlLCBpZiB0aGUga2V5IGNvZGUge0BsaW5rICNLRVlDT0RFX1VOS05PV059LCB0aGVuCisgICAgICogT3RoZXJ3aXNlLCBpZiB0aGUga2V5IGNvZGUgaXMge0BsaW5rICNLRVlDT0RFX1VOS05PV059LCB0aGVuCiAgICAgICogdGhpcyBpcyBhIHNlcXVlbmNlIG9mIGNoYXJhY3RlcnMgYXMgcmV0dXJuZWQgYnkge0BsaW5rICNnZXRDaGFyYWN0ZXJzfS4KICAgICAgKi8KICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBBQ1RJT05fTVVMVElQTEUgICAgICAgICA9IDI7CkBAIC0zMjYsNyArMzMxLDcgQEAKICAgICBwcml2YXRlIGludCBtTWV0YVN0YXRlOwogICAgIHByaXZhdGUgaW50IG1BY3Rpb247CiAgICAgcHJpdmF0ZSBpbnQgbUtleUNvZGU7Ci0gICAgcHJpdmF0ZSBpbnQgbVNjYW5jb2RlOworICAgIHByaXZhdGUgaW50IG1TY2FuQ29kZTsKICAgICBwcml2YXRlIGludCBtUmVwZWF0Q291bnQ7CiAgICAgcHJpdmF0ZSBpbnQgbURldmljZUlkOwogICAgIHByaXZhdGUgaW50IG1GbGFnczsKQEAgLTQ3Niw3ICs0ODEsNyBAQAogICAgICAgICBtUmVwZWF0Q291bnQgPSByZXBlYXQ7CiAgICAgICAgIG1NZXRhU3RhdGUgPSBtZXRhU3RhdGU7CiAgICAgICAgIG1EZXZpY2VJZCA9IGRldmljZTsKLSAgICAgICAgbVNjYW5jb2RlID0gc2NhbmNvZGU7CisgICAgICAgIG1TY2FuQ29kZSA9IHNjYW5jb2RlOwogICAgIH0KIAogICAgIC8qKgpAQCAtNTA2LDcgKzUxMSw3IEBACiAgICAgICAgIG1SZXBlYXRDb3VudCA9IHJlcGVhdDsKICAgICAgICAgbU1ldGFTdGF0ZSA9IG1ldGFTdGF0ZTsKICAgICAgICAgbURldmljZUlkID0gZGV2aWNlOwotICAgICAgICBtU2NhbmNvZGUgPSBzY2FuY29kZTsKKyAgICAgICAgbVNjYW5Db2RlID0gc2NhbmNvZGU7CiAgICAgICAgIG1GbGFncyA9IGZsYWdzOwogICAgIH0KIApAQCAtNTQzLDcgKzU0OCw3IEBACiAgICAgICAgIG1SZXBlYXRDb3VudCA9IG9yaWdFdmVudC5tUmVwZWF0Q291bnQ7CiAgICAgICAgIG1NZXRhU3RhdGUgPSBvcmlnRXZlbnQubU1ldGFTdGF0ZTsKICAgICAgICAgbURldmljZUlkID0gb3JpZ0V2ZW50Lm1EZXZpY2VJZDsKLSAgICAgICAgbVNjYW5jb2RlID0gb3JpZ0V2ZW50Lm1TY2FuY29kZTsKKyAgICAgICAgbVNjYW5Db2RlID0gb3JpZ0V2ZW50Lm1TY2FuQ29kZTsKICAgICAgICAgbUZsYWdzID0gb3JpZ0V2ZW50Lm1GbGFnczsKICAgICAgICAgbUNoYXJhY3RlcnMgPSBvcmlnRXZlbnQubUNoYXJhY3RlcnM7CiAgICAgfQpAQCAtNTY4LDcgKzU3Myw3IEBACiAgICAgICAgIG1SZXBlYXRDb3VudCA9IG5ld1JlcGVhdDsKICAgICAgICAgbU1ldGFTdGF0ZSA9IG9yaWdFdmVudC5tTWV0YVN0YXRlOwogICAgICAgICBtRGV2aWNlSWQgPSBvcmlnRXZlbnQubURldmljZUlkOwotICAgICAgICBtU2NhbmNvZGUgPSBvcmlnRXZlbnQubVNjYW5jb2RlOworICAgICAgICBtU2NhbkNvZGUgPSBvcmlnRXZlbnQubVNjYW5Db2RlOwogICAgICAgICBtRmxhZ3MgPSBvcmlnRXZlbnQubUZsYWdzOwogICAgICAgICBtQ2hhcmFjdGVycyA9IG9yaWdFdmVudC5tQ2hhcmFjdGVyczsKICAgICB9CkBAIC02MjEsNyArNjI2LDcgQEAKICAgICAgICAgbVJlcGVhdENvdW50ID0gb3JpZ0V2ZW50Lm1SZXBlYXRDb3VudDsKICAgICAgICAgbU1ldGFTdGF0ZSA9IG9yaWdFdmVudC5tTWV0YVN0YXRlOwogICAgICAgICBtRGV2aWNlSWQgPSBvcmlnRXZlbnQubURldmljZUlkOwotICAgICAgICBtU2NhbmNvZGUgPSBvcmlnRXZlbnQubVNjYW5jb2RlOworICAgICAgICBtU2NhbkNvZGUgPSBvcmlnRXZlbnQubVNjYW5Db2RlOwogICAgICAgICBtRmxhZ3MgPSBvcmlnRXZlbnQubUZsYWdzOwogICAgICAgICAvLyBEb24ndCBjb3B5IG1DaGFyYWN0ZXJzLCBzaW5jZSBvbmUgd2F5IG9yIHRoZSBvdGhlciB3ZSdsbCBsb3NlIGl0CiAgICAgICAgIC8vIHdoZW4gY2hhbmdpbmcgdGhlIGFjdGlvbi4KQEAgLTY3MSwzMSArNjc2LDEyIEBACiAgICAgICogVE9ETzogc2hvdWxkIHRoZSBkcGFkIGtleXMgYmUgaGVyZT8gIGFyZ3VhYmx5LCBiZWNhdXNlIHRoZXkgYWxzbyBzaG91bGRuJ3QgYmUgbWVudSBzaG9ydGN1dHMKICAgICAgKi8KICAgICBwdWJsaWMgZmluYWwgYm9vbGVhbiBpc1N5c3RlbSgpIHsKLSAgICAgICAgc3dpdGNoIChtS2V5Q29kZSkgewotICAgICAgICBjYXNlIEtFWUNPREVfTUVOVToKLSAgICAgICAgY2FzZSBLRVlDT0RFX1NPRlRfUklHSFQ6Ci0gICAgICAgIGNhc2UgS0VZQ09ERV9IT01FOgotICAgICAgICBjYXNlIEtFWUNPREVfQkFDSzoKLSAgICAgICAgY2FzZSBLRVlDT0RFX0NBTEw6Ci0gICAgICAgIGNhc2UgS0VZQ09ERV9FTkRDQUxMOgotICAgICAgICBjYXNlIEtFWUNPREVfVk9MVU1FX1VQOgotICAgICAgICBjYXNlIEtFWUNPREVfVk9MVU1FX0RPV046Ci0gICAgICAgIGNhc2UgS0VZQ09ERV9NVVRFOgotICAgICAgICBjYXNlIEtFWUNPREVfUE9XRVI6Ci0gICAgICAgIGNhc2UgS0VZQ09ERV9IRUFEU0VUSE9PSzoKLSAgICAgICAgY2FzZSBLRVlDT0RFX01FRElBX1BMQVlfUEFVU0U6Ci0gICAgICAgIGNhc2UgS0VZQ09ERV9NRURJQV9TVE9QOgotICAgICAgICBjYXNlIEtFWUNPREVfTUVESUFfTkVYVDoKLSAgICAgICAgY2FzZSBLRVlDT0RFX01FRElBX1BSRVZJT1VTOgotICAgICAgICBjYXNlIEtFWUNPREVfTUVESUFfUkVXSU5EOgotICAgICAgICBjYXNlIEtFWUNPREVfTUVESUFfRkFTVF9GT1JXQVJEOgotICAgICAgICBjYXNlIEtFWUNPREVfQ0FNRVJBOgotICAgICAgICBjYXNlIEtFWUNPREVfRk9DVVM6Ci0gICAgICAgIGNhc2UgS0VZQ09ERV9TRUFSQ0g6Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQorICAgICAgICByZXR1cm4gbmF0aXZlX2lzU3lzdGVtS2V5KG1LZXlDb2RlKTsKKyAgICB9CisKKyAgICAvKiogQGhpZGUgKi8KKyAgICBwdWJsaWMgZmluYWwgYm9vbGVhbiBoYXNEZWZhdWx0QWN0aW9uKCkgeworICAgICAgICByZXR1cm4gbmF0aXZlX2hhc0RlZmF1bHRBY3Rpb24obUtleUNvZGUpOwogICAgIH0KIAogCkBAIC04NTMsNyArODM5LDcgQEAKICAgICAgKiBNb3N0bHkgdGhpcyBpcyBoZXJlIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuCiAgICAgICovCiAgICAgcHVibGljIGZpbmFsIGludCBnZXRTY2FuQ29kZSgpIHsKLSAgICAgICAgcmV0dXJuIG1TY2FuY29kZTsKKyAgICAgICAgcmV0dXJuIG1TY2FuQ29kZTsKICAgICB9CiAKICAgICAvKioKQEAgLTExNzcsNyArMTE2Myw3IEBACiAgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKICAgICAgICAgcmV0dXJuICJLZXlFdmVudHthY3Rpb249IiArIG1BY3Rpb24gKyAiIGNvZGU9IiArIG1LZXlDb2RlCiAgICAgICAgICAgICArICIgcmVwZWF0PSIgKyBtUmVwZWF0Q291bnQKLSAgICAgICAgICAgICsgIiBtZXRhPSIgKyBtTWV0YVN0YXRlICsgIiBzY2FuY29kZT0iICsgbVNjYW5jb2RlCisgICAgICAgICAgICArICIgbWV0YT0iICsgbU1ldGFTdGF0ZSArICIgc2NhbmNvZGU9IiArIG1TY2FuQ29kZQogICAgICAgICAgICAgKyAiIG1GbGFncz0iICsgbUZsYWdzICsgIn0iOwogICAgIH0KIApAQCAtMTIwMiw3ICsxMTg4LDcgQEAKICAgICAgICAgb3V0LndyaXRlSW50KG1SZXBlYXRDb3VudCk7CiAgICAgICAgIG91dC53cml0ZUludChtTWV0YVN0YXRlKTsKICAgICAgICAgb3V0LndyaXRlSW50KG1EZXZpY2VJZCk7Ci0gICAgICAgIG91dC53cml0ZUludChtU2NhbmNvZGUpOworICAgICAgICBvdXQud3JpdGVJbnQobVNjYW5Db2RlKTsKICAgICAgICAgb3V0LndyaXRlSW50KG1GbGFncyk7CiAgICAgICAgIG91dC53cml0ZUxvbmcobURvd25UaW1lKTsKICAgICAgICAgb3V0LndyaXRlTG9uZyhtRXZlbnRUaW1lKTsKQEAgLTEyMTQsOSArMTIwMCwxMiBAQAogICAgICAgICBtUmVwZWF0Q291bnQgPSBpbi5yZWFkSW50KCk7CiAgICAgICAgIG1NZXRhU3RhdGUgPSBpbi5yZWFkSW50KCk7CiAgICAgICAgIG1EZXZpY2VJZCA9IGluLnJlYWRJbnQoKTsKLSAgICAgICAgbVNjYW5jb2RlID0gaW4ucmVhZEludCgpOworICAgICAgICBtU2NhbkNvZGUgPSBpbi5yZWFkSW50KCk7CiAgICAgICAgIG1GbGFncyA9IGluLnJlYWRJbnQoKTsKICAgICAgICAgbURvd25UaW1lID0gaW4ucmVhZExvbmcoKTsKICAgICAgICAgbUV2ZW50VGltZSA9IGluLnJlYWRMb25nKCk7CiAgICAgfQorICAgIAorICAgIHByaXZhdGUgbmF0aXZlIGJvb2xlYW4gbmF0aXZlX2lzU3lzdGVtS2V5KGludCBrZXlDb2RlKTsKKyAgICBwcml2YXRlIG5hdGl2ZSBib29sZWFuIG5hdGl2ZV9oYXNEZWZhdWx0QWN0aW9uKGludCBrZXlDb2RlKTsKIH0KZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvTW90aW9uRXZlbnQuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvTW90aW9uRXZlbnQuamF2YQppbmRleCBkNjQ4ZTk2Li5hZThjMjFkIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC92aWV3L01vdGlvbkV2ZW50LmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9Nb3Rpb25FdmVudC5qYXZhCkBAIC0yNyw2ICsyNyw3IEBACiAgKiBpdCBpcyBiZWluZyB1c2VkIGZvci4KICAqLwogcHVibGljIGZpbmFsIGNsYXNzIE1vdGlvbkV2ZW50IGltcGxlbWVudHMgUGFyY2VsYWJsZSB7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBNU19QRVJfTlMgPSAxMDAwMDAwOwogICAgIHN0YXRpYyBmaW5hbCBib29sZWFuIERFQlVHX1BPSU5URVJTID0gZmFsc2U7CiAgICAgCiAgICAgLyoqCkBAIC0yMTgsNTYgKzIxOSw3OSBAQAogICAgIHN0YXRpYyBwcml2YXRlIGludCBnUmVjeWNsZXJVc2VkID0gMDsKICAgICBzdGF0aWMgcHJpdmF0ZSBNb3Rpb25FdmVudCBnUmVjeWNsZXJUb3AgPSBudWxsOwogCi0gICAgcHJpdmF0ZSBsb25nIG1Eb3duVGltZTsKLSAgICBwcml2YXRlIGxvbmcgbUV2ZW50VGltZU5hbm87CisgICAgcHJpdmF0ZSBsb25nIG1Eb3duVGltZU5hbm87CiAgICAgcHJpdmF0ZSBpbnQgbUFjdGlvbjsKLSAgICBwcml2YXRlIGZsb2F0IG1SYXdYOwotICAgIHByaXZhdGUgZmxvYXQgbVJhd1k7CisgICAgcHJpdmF0ZSBmbG9hdCBtWE9mZnNldDsKKyAgICBwcml2YXRlIGZsb2F0IG1ZT2Zmc2V0OwogICAgIHByaXZhdGUgZmxvYXQgbVhQcmVjaXNpb247CiAgICAgcHJpdmF0ZSBmbG9hdCBtWVByZWNpc2lvbjsKICAgICBwcml2YXRlIGludCBtRGV2aWNlSWQ7CiAgICAgcHJpdmF0ZSBpbnQgbUVkZ2VGbGFnczsKICAgICBwcml2YXRlIGludCBtTWV0YVN0YXRlOwogICAgIAotICAgIC8vIEhlcmUgaXMgdGhlIGFjdHVhbCBldmVudCBkYXRhLiAgTm90ZSB0aGF0IHRoZSBvcmRlciBvZiB0aGUgYXJyYXkKLSAgICAvLyBpcyBhIGxpdHRsZSBvZGQ6IHRoZSBmaXJzdCBlbnRyeSBpcyB0aGUgbW9zdCByZWNlbnQsIGFuZCB0aGUgb25lcwotICAgIC8vIGZvbGxvd2luZyBpdCBhcmUgdGhlIGhpc3RvcmljYWwgZGF0YSBmcm9tIG9sZGVzdCB0byBuZXdlc3QuICBUaGlzCi0gICAgLy8gYWxsb3dzIHVzIHRvIGVhc2lseSByZXRyaWV2ZSB0aGUgbW9zdCByZWNlbnQgZGF0YSwgd2l0aG91dCBoYXZpbmcKLSAgICAvLyB0byBjb3B5IHRoZSBhcnJheXMgZXZlcnkgdGltZSBhIG5ldyBzYW1wbGUgaXMgYWRkZWQuCi0gICAgCiAgICAgcHJpdmF0ZSBpbnQgbU51bVBvaW50ZXJzOwogICAgIHByaXZhdGUgaW50IG1OdW1TYW1wbGVzOworICAgIAorICAgIHByaXZhdGUgaW50IG1MYXN0RGF0YVNhbXBsZUluZGV4OworICAgIHByaXZhdGUgaW50IG1MYXN0RXZlbnRUaW1lTmFub1NhbXBsZUluZGV4OworICAgIAogICAgIC8vIEFycmF5IG9mIG1OdW1Qb2ludGVycyBzaXplIG9mIGlkZW50aWZpZXJzIGZvciBlYWNoIHBvaW50ZXIgb2YgZGF0YS4KICAgICBwcml2YXRlIGludFtdIG1Qb2ludGVySWRlbnRpZmllcnM7CisgICAgCiAgICAgLy8gQXJyYXkgb2YgKG1OdW1TYW1wbGVzICogbU51bVBvaW50ZXJzICogTlVNX1NBTVBMRV9EQVRBKSBzaXplIG9mIGV2ZW50IGRhdGEuCisgICAgLy8gU2FtcGxlcyBhcmUgb3JkZXJlZCBmcm9tIG9sZGVzdCB0byBuZXdlc3QuCiAgICAgcHJpdmF0ZSBmbG9hdFtdIG1EYXRhU2FtcGxlczsKLSAgICAvLyBBcnJheSBvZiBtTnVtU2FtcGxlcyBzaXplIG9mIHRpbWUgc3RhbXBzLgotICAgIHByaXZhdGUgbG9uZ1tdIG1UaW1lU2FtcGxlczsKKyAgICAKKyAgICAvLyBBcnJheSBvZiBtTnVtU2FtcGxlcyBzaXplIG9mIGV2ZW50IHRpbWUgc3RhbXBzIGluIG5hbm9zZWNvbmRzLgorICAgIC8vIFNhbXBsZXMgYXJlIG9yZGVyZWQgZnJvbSBvbGRlc3QgdG8gbmV3ZXN0LgorICAgIHByaXZhdGUgbG9uZ1tdIG1FdmVudFRpbWVOYW5vU2FtcGxlczsKIAogICAgIHByaXZhdGUgTW90aW9uRXZlbnQgbU5leHQ7CiAgICAgcHJpdmF0ZSBSdW50aW1lRXhjZXB0aW9uIG1SZWN5Y2xlZExvY2F0aW9uOwogICAgIHByaXZhdGUgYm9vbGVhbiBtUmVjeWNsZWQ7CiAKLSAgICBwcml2YXRlIE1vdGlvbkV2ZW50KCkgewotICAgICAgICBtUG9pbnRlcklkZW50aWZpZXJzID0gbmV3IGludFtCQVNFX0FWQUlMX1BPSU5URVJTXTsKLSAgICAgICAgbURhdGFTYW1wbGVzID0gbmV3IGZsb2F0W0JBU0VfQVZBSUxfUE9JTlRFUlMqQkFTRV9BVkFJTF9TQU1QTEVTKk5VTV9TQU1QTEVfREFUQV07Ci0gICAgICAgIG1UaW1lU2FtcGxlcyA9IG5ldyBsb25nW0JBU0VfQVZBSUxfU0FNUExFU107CisgICAgcHJpdmF0ZSBNb3Rpb25FdmVudChpbnQgcG9pbnRlckNvdW50LCBpbnQgc2FtcGxlQ291bnQpIHsKKyAgICAgICAgbVBvaW50ZXJJZGVudGlmaWVycyA9IG5ldyBpbnRbcG9pbnRlckNvdW50XTsKKyAgICAgICAgbURhdGFTYW1wbGVzID0gbmV3IGZsb2F0W3BvaW50ZXJDb3VudCAqIHNhbXBsZUNvdW50ICogTlVNX1NBTVBMRV9EQVRBXTsKKyAgICAgICAgbUV2ZW50VGltZU5hbm9TYW1wbGVzID0gbmV3IGxvbmdbc2FtcGxlQ291bnRdOwogICAgIH0KIAotICAgIHN0YXRpYyBwcml2YXRlIE1vdGlvbkV2ZW50IG9idGFpbigpIHsKKyAgICBzdGF0aWMgcHJpdmF0ZSBNb3Rpb25FdmVudCBvYnRhaW4oaW50IHBvaW50ZXJDb3VudCwgaW50IHNhbXBsZUNvdW50KSB7CisgICAgICAgIGZpbmFsIE1vdGlvbkV2ZW50IGV2OwogICAgICAgICBzeW5jaHJvbml6ZWQgKGdSZWN5Y2xlckxvY2spIHsKICAgICAgICAgICAgIGlmIChnUmVjeWNsZXJUb3AgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgIHJldHVybiBuZXcgTW90aW9uRXZlbnQoKTsKKyAgICAgICAgICAgICAgICBpZiAocG9pbnRlckNvdW50IDwgQkFTRV9BVkFJTF9QT0lOVEVSUykgeworICAgICAgICAgICAgICAgICAgICBwb2ludGVyQ291bnQgPSBCQVNFX0FWQUlMX1BPSU5URVJTOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoc2FtcGxlQ291bnQgPCBCQVNFX0FWQUlMX1NBTVBMRVMpIHsKKyAgICAgICAgICAgICAgICAgICAgc2FtcGxlQ291bnQgPSBCQVNFX0FWQUlMX1NBTVBMRVM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBuZXcgTW90aW9uRXZlbnQocG9pbnRlckNvdW50LCBzYW1wbGVDb3VudCk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBNb3Rpb25FdmVudCBldiA9IGdSZWN5Y2xlclRvcDsKKyAgICAgICAgICAgIGV2ID0gZ1JlY3ljbGVyVG9wOwogICAgICAgICAgICAgZ1JlY3ljbGVyVG9wID0gZXYubU5leHQ7Ci0gICAgICAgICAgICBnUmVjeWNsZXJVc2VkLS07Ci0gICAgICAgICAgICBldi5tUmVjeWNsZWRMb2NhdGlvbiA9IG51bGw7Ci0gICAgICAgICAgICBldi5tUmVjeWNsZWQgPSBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybiBldjsKKyAgICAgICAgICAgIGdSZWN5Y2xlclVzZWQgLT0gMTsKICAgICAgICAgfQorICAgICAgICBldi5tUmVjeWNsZWRMb2NhdGlvbiA9IG51bGw7CisgICAgICAgIGV2Lm1SZWN5Y2xlZCA9IGZhbHNlOworICAgICAgICBldi5tTmV4dCA9IG51bGw7CisgICAgICAgIAorICAgICAgICBpZiAoZXYubVBvaW50ZXJJZGVudGlmaWVycy5sZW5ndGggPCBwb2ludGVyQ291bnQpIHsKKyAgICAgICAgICAgIGV2Lm1Qb2ludGVySWRlbnRpZmllcnMgPSBuZXcgaW50W3BvaW50ZXJDb3VudF07CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChldi5tRXZlbnRUaW1lTmFub1NhbXBsZXMubGVuZ3RoIDwgc2FtcGxlQ291bnQpIHsKKyAgICAgICAgICAgIGV2Lm1FdmVudFRpbWVOYW5vU2FtcGxlcyA9IG5ldyBsb25nW3NhbXBsZUNvdW50XTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZmluYWwgaW50IG5lZWRlZERhdGFTYW1wbGVzTGVuZ3RoID0gcG9pbnRlckNvdW50ICogc2FtcGxlQ291bnQgKiBOVU1fU0FNUExFX0RBVEE7CisgICAgICAgIGlmIChldi5tRGF0YVNhbXBsZXMubGVuZ3RoIDwgbmVlZGVkRGF0YVNhbXBsZXNMZW5ndGgpIHsKKyAgICAgICAgICAgIGV2Lm1EYXRhU2FtcGxlcyA9IG5ldyBmbG9hdFtuZWVkZWREYXRhU2FtcGxlc0xlbmd0aF07CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBldjsKICAgICB9Ci0KKyAgICAKICAgICAvKioKICAgICAgKiBDcmVhdGUgYSBuZXcgTW90aW9uRXZlbnQsIGZpbGxpbmcgaW4gYWxsIG9mIHRoZSBiYXNpYyB2YWx1ZXMgdGhhdAogICAgICAqIGRlZmluZSB0aGUgbW90aW9uLgpAQCAtMzAxLDQ1ICszMjUsMzkgQEAKICAgICBzdGF0aWMgcHVibGljIE1vdGlvbkV2ZW50IG9idGFpbk5hbm8obG9uZyBkb3duVGltZSwgbG9uZyBldmVudFRpbWUsIGxvbmcgZXZlbnRUaW1lTmFubywKICAgICAgICAgICAgIGludCBhY3Rpb24sIGludCBwb2ludGVycywgaW50W10gaW5Qb2ludGVySWRzLCBmbG9hdFtdIGluRGF0YSwgaW50IG1ldGFTdGF0ZSwKICAgICAgICAgICAgIGZsb2F0IHhQcmVjaXNpb24sIGZsb2F0IHlQcmVjaXNpb24sIGludCBkZXZpY2VJZCwgaW50IGVkZ2VGbGFncykgewotICAgICAgICBNb3Rpb25FdmVudCBldiA9IG9idGFpbigpOworICAgICAgICBNb3Rpb25FdmVudCBldiA9IG9idGFpbihwb2ludGVycywgMSk7CiAgICAgICAgIGV2Lm1EZXZpY2VJZCA9IGRldmljZUlkOwogICAgICAgICBldi5tRWRnZUZsYWdzID0gZWRnZUZsYWdzOwotICAgICAgICBldi5tRG93blRpbWUgPSBkb3duVGltZTsKLSAgICAgICAgZXYubUV2ZW50VGltZU5hbm8gPSBldmVudFRpbWVOYW5vOworICAgICAgICBldi5tRG93blRpbWVOYW5vID0gZG93blRpbWUgKiBNU19QRVJfTlM7CiAgICAgICAgIGV2Lm1BY3Rpb24gPSBhY3Rpb247CiAgICAgICAgIGV2Lm1NZXRhU3RhdGUgPSBtZXRhU3RhdGU7Ci0gICAgICAgIGV2Lm1SYXdYID0gaW5EYXRhW1NBTVBMRV9YXTsKLSAgICAgICAgZXYubVJhd1kgPSBpbkRhdGFbU0FNUExFX1ldOworICAgICAgICBldi5tWE9mZnNldCA9IDA7CisgICAgICAgIGV2Lm1ZT2Zmc2V0ID0gMDsKICAgICAgICAgZXYubVhQcmVjaXNpb24gPSB4UHJlY2lzaW9uOwogICAgICAgICBldi5tWVByZWNpc2lvbiA9IHlQcmVjaXNpb247CisgICAgICAgIAogICAgICAgICBldi5tTnVtUG9pbnRlcnMgPSBwb2ludGVyczsKICAgICAgICAgZXYubU51bVNhbXBsZXMgPSAxOwogICAgICAgICAKLSAgICAgICAgaW50W10gcG9pbnRlcklkZW50aWZpZXJzID0gZXYubVBvaW50ZXJJZGVudGlmaWVyczsKLSAgICAgICAgaWYgKHBvaW50ZXJJZGVudGlmaWVycy5sZW5ndGggPCBwb2ludGVycykgewotICAgICAgICAgICAgZXYubVBvaW50ZXJJZGVudGlmaWVycyA9IHBvaW50ZXJJZGVudGlmaWVycyA9IG5ldyBpbnRbcG9pbnRlcnNdOwotICAgICAgICB9Ci0gICAgICAgIFN5c3RlbS5hcnJheWNvcHkoaW5Qb2ludGVySWRzLCAwLCBwb2ludGVySWRlbnRpZmllcnMsIDAsIHBvaW50ZXJzKTsKKyAgICAgICAgZXYubUxhc3REYXRhU2FtcGxlSW5kZXggPSAwOworICAgICAgICBldi5tTGFzdEV2ZW50VGltZU5hbm9TYW1wbGVJbmRleCA9IDA7CiAgICAgICAgIAotICAgICAgICBmaW5hbCBpbnQgTkQgPSBwb2ludGVycyAqIE5VTV9TQU1QTEVfREFUQTsKLSAgICAgICAgZmxvYXRbXSBkYXRhU2FtcGxlcyA9IGV2Lm1EYXRhU2FtcGxlczsKLSAgICAgICAgaWYgKGRhdGFTYW1wbGVzLmxlbmd0aCA8IE5EKSB7Ci0gICAgICAgICAgICBldi5tRGF0YVNhbXBsZXMgPSBkYXRhU2FtcGxlcyA9IG5ldyBmbG9hdFtORF07Ci0gICAgICAgIH0KLSAgICAgICAgU3lzdGVtLmFycmF5Y29weShpbkRhdGEsIDAsIGRhdGFTYW1wbGVzLCAwLCBORCk7CisgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoaW5Qb2ludGVySWRzLCAwLCBldi5tUG9pbnRlcklkZW50aWZpZXJzLCAwLCBwb2ludGVycyk7CiAgICAgICAgIAotICAgICAgICBldi5tVGltZVNhbXBsZXNbMF0gPSBldmVudFRpbWU7CisgICAgICAgIGV2Lm1FdmVudFRpbWVOYW5vU2FtcGxlc1swXSA9IGV2ZW50VGltZU5hbm87CisgICAgICAgIAorICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KGluRGF0YSwgMCwgZXYubURhdGFTYW1wbGVzLCAwLCBwb2ludGVycyAqIE5VTV9TQU1QTEVfREFUQSk7CiAKICAgICAgICAgaWYgKERFQlVHX1BPSU5URVJTKSB7CiAgICAgICAgICAgICBTdHJpbmdCdWlsZGVyIHNiID0gbmV3IFN0cmluZ0J1aWxkZXIoMTI4KTsKICAgICAgICAgICAgIHNiLmFwcGVuZCgiTmV3OiIpOwotICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPHBvaW50ZXJzOyBpKyspIHsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcG9pbnRlcnM7IGkrKykgewogICAgICAgICAgICAgICAgIHNiLmFwcGVuZCgiICMiKTsKLSAgICAgICAgICAgICAgICBzYi5hcHBlbmQoZXYubVBvaW50ZXJJZGVudGlmaWVyc1tpXSk7CisgICAgICAgICAgICAgICAgc2IuYXBwZW5kKGV2LmdldFBvaW50ZXJJZChpKSk7CiAgICAgICAgICAgICAgICAgc2IuYXBwZW5kKCIoIik7Ci0gICAgICAgICAgICAgICAgc2IuYXBwZW5kKGV2Lm1EYXRhU2FtcGxlc1soaSpOVU1fU0FNUExFX0RBVEEpICsgU0FNUExFX1hdKTsKKyAgICAgICAgICAgICAgICBzYi5hcHBlbmQoZXYuZ2V0WChpKSk7CiAgICAgICAgICAgICAgICAgc2IuYXBwZW5kKCIsIik7Ci0gICAgICAgICAgICAgICAgc2IuYXBwZW5kKGV2Lm1EYXRhU2FtcGxlc1soaSpOVU1fU0FNUExFX0RBVEEpICsgU0FNUExFX1ldKTsKKyAgICAgICAgICAgICAgICBzYi5hcHBlbmQoZXYuZ2V0WShpKSk7CiAgICAgICAgICAgICAgICAgc2IuYXBwZW5kKCIpIik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBMb2cudigiTW90aW9uRXZlbnQiLCBzYi50b1N0cmluZygpKTsKQEAgLTM4MiwyNyArNDAwLDMyIEBACiAgICAgc3RhdGljIHB1YmxpYyBNb3Rpb25FdmVudCBvYnRhaW4obG9uZyBkb3duVGltZSwgbG9uZyBldmVudFRpbWUsIGludCBhY3Rpb24sCiAgICAgICAgICAgICBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCBwcmVzc3VyZSwgZmxvYXQgc2l6ZSwgaW50IG1ldGFTdGF0ZSwKICAgICAgICAgICAgIGZsb2F0IHhQcmVjaXNpb24sIGZsb2F0IHlQcmVjaXNpb24sIGludCBkZXZpY2VJZCwgaW50IGVkZ2VGbGFncykgewotICAgICAgICBNb3Rpb25FdmVudCBldiA9IG9idGFpbigpOworICAgICAgICBNb3Rpb25FdmVudCBldiA9IG9idGFpbigxLCAxKTsKICAgICAgICAgZXYubURldmljZUlkID0gZGV2aWNlSWQ7CiAgICAgICAgIGV2Lm1FZGdlRmxhZ3MgPSBlZGdlRmxhZ3M7Ci0gICAgICAgIGV2Lm1Eb3duVGltZSA9IGRvd25UaW1lOwotICAgICAgICBldi5tRXZlbnRUaW1lTmFubyA9IGV2ZW50VGltZSAqIDEwMDAwMDA7CisgICAgICAgIGV2Lm1Eb3duVGltZU5hbm8gPSBkb3duVGltZSAqIE1TX1BFUl9OUzsKICAgICAgICAgZXYubUFjdGlvbiA9IGFjdGlvbjsKICAgICAgICAgZXYubU1ldGFTdGF0ZSA9IG1ldGFTdGF0ZTsKKyAgICAgICAgZXYubVhPZmZzZXQgPSAwOworICAgICAgICBldi5tWU9mZnNldCA9IDA7CiAgICAgICAgIGV2Lm1YUHJlY2lzaW9uID0geFByZWNpc2lvbjsKICAgICAgICAgZXYubVlQcmVjaXNpb24gPSB5UHJlY2lzaW9uOwotCisgICAgICAgIAogICAgICAgICBldi5tTnVtUG9pbnRlcnMgPSAxOwogICAgICAgICBldi5tTnVtU2FtcGxlcyA9IDE7Ci0gICAgICAgIGludFtdIHBvaW50ZXJJZHMgPSBldi5tUG9pbnRlcklkZW50aWZpZXJzOwotICAgICAgICBwb2ludGVySWRzWzBdID0gMDsKLSAgICAgICAgZmxvYXRbXSBkYXRhID0gZXYubURhdGFTYW1wbGVzOwotICAgICAgICBkYXRhW1NBTVBMRV9YXSA9IGV2Lm1SYXdYID0geDsKLSAgICAgICAgZGF0YVtTQU1QTEVfWV0gPSBldi5tUmF3WSA9IHk7Ci0gICAgICAgIGRhdGFbU0FNUExFX1BSRVNTVVJFXSA9IHByZXNzdXJlOwotICAgICAgICBkYXRhW1NBTVBMRV9TSVpFXSA9IHNpemU7Ci0gICAgICAgIGV2Lm1UaW1lU2FtcGxlc1swXSA9IGV2ZW50VGltZTsKLQorICAgICAgICAKKyAgICAgICAgZXYubUxhc3REYXRhU2FtcGxlSW5kZXggPSAwOworICAgICAgICBldi5tTGFzdEV2ZW50VGltZU5hbm9TYW1wbGVJbmRleCA9IDA7CisgICAgICAgIAorICAgICAgICBldi5tUG9pbnRlcklkZW50aWZpZXJzWzBdID0gMDsKKyAgICAgICAgCisgICAgICAgIGV2Lm1FdmVudFRpbWVOYW5vU2FtcGxlc1swXSA9IGV2ZW50VGltZSAqIE1TX1BFUl9OUzsKKyAgICAgICAgCisgICAgICAgIGZsb2F0W10gZGF0YVNhbXBsZXMgPSBldi5tRGF0YVNhbXBsZXM7CisgICAgICAgIGRhdGFTYW1wbGVzW1NBTVBMRV9YXSA9IHg7CisgICAgICAgIGRhdGFTYW1wbGVzW1NBTVBMRV9ZXSA9IHk7CisgICAgICAgIGRhdGFTYW1wbGVzW1NBTVBMRV9QUkVTU1VSRV0gPSBwcmVzc3VyZTsKKyAgICAgICAgZGF0YVNhbXBsZXNbU0FNUExFX1NJWkVdID0gc2l6ZTsKICAgICAgICAgcmV0dXJuIGV2OwogICAgIH0KIApAQCAtNDM3LDMzICs0NjAsMTYgQEAKICAgICAgKiBudW1iZXJzIGFyZSBhcmJpdHJhcnkgYW5kIHlvdSBzaG91bGRuJ3QgZGVwZW5kIG9uIHRoZSB2YWx1ZXMuCiAgICAgICogQHBhcmFtIGVkZ2VGbGFncyBBIGJpdGZpZWxkIGluZGljYXRpbmcgd2hpY2ggZWRnZXMsIGlmIGFueSwgd2hlcmUgdG91Y2hlZCBieSB0aGlzCiAgICAgICogTW90aW9uRXZlbnQuCisgICAgICogCisgICAgICogQGRlcHJlY2F0ZWQgVXNlIHtAbGluayAjb2J0YWluKGxvbmcsIGxvbmcsIGludCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGludCwgZmxvYXQsIGZsb2F0LCBpbnQsIGludCl9CisgICAgICogaW5zdGVhZC4KICAgICAgKi8KKyAgICBARGVwcmVjYXRlZAogICAgIHN0YXRpYyBwdWJsaWMgTW90aW9uRXZlbnQgb2J0YWluKGxvbmcgZG93blRpbWUsIGxvbmcgZXZlbnRUaW1lLCBpbnQgYWN0aW9uLAogICAgICAgICAgICAgaW50IHBvaW50ZXJzLCBmbG9hdCB4LCBmbG9hdCB5LCBmbG9hdCBwcmVzc3VyZSwgZmxvYXQgc2l6ZSwgaW50IG1ldGFTdGF0ZSwKICAgICAgICAgICAgIGZsb2F0IHhQcmVjaXNpb24sIGZsb2F0IHlQcmVjaXNpb24sIGludCBkZXZpY2VJZCwgaW50IGVkZ2VGbGFncykgewotICAgICAgICBNb3Rpb25FdmVudCBldiA9IG9idGFpbigpOwotICAgICAgICBldi5tRGV2aWNlSWQgPSBkZXZpY2VJZDsKLSAgICAgICAgZXYubUVkZ2VGbGFncyA9IGVkZ2VGbGFnczsKLSAgICAgICAgZXYubURvd25UaW1lID0gZG93blRpbWU7Ci0gICAgICAgIGV2Lm1FdmVudFRpbWVOYW5vID0gZXZlbnRUaW1lICogMTAwMDAwMDsKLSAgICAgICAgZXYubUFjdGlvbiA9IGFjdGlvbjsKLSAgICAgICAgZXYubU51bVBvaW50ZXJzID0gcG9pbnRlcnM7Ci0gICAgICAgIGV2Lm1NZXRhU3RhdGUgPSBtZXRhU3RhdGU7Ci0gICAgICAgIGV2Lm1YUHJlY2lzaW9uID0geFByZWNpc2lvbjsKLSAgICAgICAgZXYubVlQcmVjaXNpb24gPSB5UHJlY2lzaW9uOwotCi0gICAgICAgIGV2Lm1OdW1Qb2ludGVycyA9IDE7Ci0gICAgICAgIGV2Lm1OdW1TYW1wbGVzID0gMTsKLSAgICAgICAgaW50W10gcG9pbnRlcklkcyA9IGV2Lm1Qb2ludGVySWRlbnRpZmllcnM7Ci0gICAgICAgIHBvaW50ZXJJZHNbMF0gPSAwOwotICAgICAgICBmbG9hdFtdIGRhdGEgPSBldi5tRGF0YVNhbXBsZXM7Ci0gICAgICAgIGRhdGFbU0FNUExFX1hdID0gZXYubVJhd1ggPSB4OwotICAgICAgICBkYXRhW1NBTVBMRV9ZXSA9IGV2Lm1SYXdZID0geTsKLSAgICAgICAgZGF0YVtTQU1QTEVfUFJFU1NVUkVdID0gcHJlc3N1cmU7Ci0gICAgICAgIGRhdGFbU0FNUExFX1NJWkVdID0gc2l6ZTsKLSAgICAgICAgZXYubVRpbWVTYW1wbGVzWzBdID0gZXZlbnRUaW1lOwotCi0gICAgICAgIHJldHVybiBldjsKKyAgICAgICAgcmV0dXJuIG9idGFpbihkb3duVGltZSwgZXZlbnRUaW1lLCBhY3Rpb24sIHgsIHksIHByZXNzdXJlLCBzaXplLAorICAgICAgICAgICAgICAgIG1ldGFTdGF0ZSwgeFByZWNpc2lvbiwgeVByZWNpc2lvbiwgZGV2aWNlSWQsIGVkZ2VGbGFncyk7CiAgICAgfQogCiAgICAgLyoqCkBAIC00ODUsODkgKzQ5MSwzNiBAQAogICAgICAqLwogICAgIHN0YXRpYyBwdWJsaWMgTW90aW9uRXZlbnQgb2J0YWluKGxvbmcgZG93blRpbWUsIGxvbmcgZXZlbnRUaW1lLCBpbnQgYWN0aW9uLAogICAgICAgICAgICAgZmxvYXQgeCwgZmxvYXQgeSwgaW50IG1ldGFTdGF0ZSkgewotICAgICAgICBNb3Rpb25FdmVudCBldiA9IG9idGFpbigpOwotICAgICAgICBldi5tRGV2aWNlSWQgPSAwOwotICAgICAgICBldi5tRWRnZUZsYWdzID0gMDsKLSAgICAgICAgZXYubURvd25UaW1lID0gZG93blRpbWU7Ci0gICAgICAgIGV2Lm1FdmVudFRpbWVOYW5vID0gZXZlbnRUaW1lICogMTAwMDAwMDsKLSAgICAgICAgZXYubUFjdGlvbiA9IGFjdGlvbjsKLSAgICAgICAgZXYubU51bVBvaW50ZXJzID0gMTsKLSAgICAgICAgZXYubU1ldGFTdGF0ZSA9IG1ldGFTdGF0ZTsKLSAgICAgICAgZXYubVhQcmVjaXNpb24gPSAxLjBmOwotICAgICAgICBldi5tWVByZWNpc2lvbiA9IDEuMGY7Ci0KLSAgICAgICAgZXYubU51bVBvaW50ZXJzID0gMTsKLSAgICAgICAgZXYubU51bVNhbXBsZXMgPSAxOwotICAgICAgICBpbnRbXSBwb2ludGVySWRzID0gZXYubVBvaW50ZXJJZGVudGlmaWVyczsKLSAgICAgICAgcG9pbnRlcklkc1swXSA9IDA7Ci0gICAgICAgIGZsb2F0W10gZGF0YSA9IGV2Lm1EYXRhU2FtcGxlczsKLSAgICAgICAgZGF0YVtTQU1QTEVfWF0gPSBldi5tUmF3WCA9IHg7Ci0gICAgICAgIGRhdGFbU0FNUExFX1ldID0gZXYubVJhd1kgPSB5OwotICAgICAgICBkYXRhW1NBTVBMRV9QUkVTU1VSRV0gPSAxLjBmOwotICAgICAgICBkYXRhW1NBTVBMRV9TSVpFXSA9IDEuMGY7Ci0gICAgICAgIGV2Lm1UaW1lU2FtcGxlc1swXSA9IGV2ZW50VGltZTsKLQotICAgICAgICByZXR1cm4gZXY7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogU2NhbGVzIGRvd24gdGhlIGNvb3JkaW5hdGlvbiBvZiB0aGlzIGV2ZW50IGJ5IHRoZSBnaXZlbiBzY2FsZS4KLSAgICAgKgotICAgICAqIEBoaWRlCi0gICAgICovCi0gICAgcHVibGljIHZvaWQgc2NhbGUoZmxvYXQgc2NhbGUpIHsKLSAgICAgICAgbVJhd1ggKj0gc2NhbGU7Ci0gICAgICAgIG1SYXdZICo9IHNjYWxlOwotICAgICAgICBtWFByZWNpc2lvbiAqPSBzY2FsZTsKLSAgICAgICAgbVlQcmVjaXNpb24gKj0gc2NhbGU7Ci0gICAgICAgIGZsb2F0W10gaGlzdG9yeSA9IG1EYXRhU2FtcGxlczsKLSAgICAgICAgZmluYWwgaW50IGxlbmd0aCA9IG1OdW1Qb2ludGVycyAqIG1OdW1TYW1wbGVzICogTlVNX1NBTVBMRV9EQVRBOwotICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSArPSBOVU1fU0FNUExFX0RBVEEpIHsKLSAgICAgICAgICAgIGhpc3RvcnlbaSArIFNBTVBMRV9YXSAqPSBzY2FsZTsKLSAgICAgICAgICAgIGhpc3RvcnlbaSArIFNBTVBMRV9ZXSAqPSBzY2FsZTsKLSAgICAgICAgICAgIC8vIG5vIG5lZWQgdG8gc2NhbGUgcHJlc3N1cmUKLSAgICAgICAgICAgIGhpc3RvcnlbaSArIFNBTVBMRV9TSVpFXSAqPSBzY2FsZTsgICAgLy8gVE9ETzogc3F1YXJlIHRoaXM/Ci0gICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG9idGFpbihkb3duVGltZSwgZXZlbnRUaW1lLCBhY3Rpb24sIHgsIHksIDEuMGYsIDEuMGYsCisgICAgICAgICAgICAgICAgbWV0YVN0YXRlLCAxLjBmLCAxLjBmLCAwLCAwKTsKICAgICB9CiAKICAgICAvKioKICAgICAgKiBDcmVhdGUgYSBuZXcgTW90aW9uRXZlbnQsIGNvcHlpbmcgZnJvbSBhbiBleGlzdGluZyBvbmUuCiAgICAgICovCiAgICAgc3RhdGljIHB1YmxpYyBNb3Rpb25FdmVudCBvYnRhaW4oTW90aW9uRXZlbnQgbykgewotICAgICAgICBNb3Rpb25FdmVudCBldiA9IG9idGFpbigpOworICAgICAgICBNb3Rpb25FdmVudCBldiA9IG9idGFpbihvLm1OdW1Qb2ludGVycywgby5tTnVtU2FtcGxlcyk7CiAgICAgICAgIGV2Lm1EZXZpY2VJZCA9IG8ubURldmljZUlkOwogICAgICAgICBldi5tRWRnZUZsYWdzID0gby5tRWRnZUZsYWdzOwotICAgICAgICBldi5tRG93blRpbWUgPSBvLm1Eb3duVGltZTsKLSAgICAgICAgZXYubUV2ZW50VGltZU5hbm8gPSBvLm1FdmVudFRpbWVOYW5vOworICAgICAgICBldi5tRG93blRpbWVOYW5vID0gby5tRG93blRpbWVOYW5vOwogICAgICAgICBldi5tQWN0aW9uID0gby5tQWN0aW9uOwotICAgICAgICBldi5tTnVtUG9pbnRlcnMgPSBvLm1OdW1Qb2ludGVyczsKLSAgICAgICAgZXYubVJhd1ggPSBvLm1SYXdYOwotICAgICAgICBldi5tUmF3WSA9IG8ubVJhd1k7CiAgICAgICAgIGV2Lm1NZXRhU3RhdGUgPSBvLm1NZXRhU3RhdGU7CisgICAgICAgIGV2Lm1YT2Zmc2V0ID0gby5tWE9mZnNldDsKKyAgICAgICAgZXYubVlPZmZzZXQgPSBvLm1ZT2Zmc2V0OwogICAgICAgICBldi5tWFByZWNpc2lvbiA9IG8ubVhQcmVjaXNpb247CiAgICAgICAgIGV2Lm1ZUHJlY2lzaW9uID0gby5tWVByZWNpc2lvbjsKKyAgICAgICAgaW50IG51bVBvaW50ZXJzID0gZXYubU51bVBvaW50ZXJzID0gby5tTnVtUG9pbnRlcnM7CisgICAgICAgIGludCBudW1TYW1wbGVzID0gZXYubU51bVNhbXBsZXMgPSBvLm1OdW1TYW1wbGVzOwogICAgICAgICAKLSAgICAgICAgZmluYWwgaW50IE5TID0gZXYubU51bVNhbXBsZXMgPSBvLm1OdW1TYW1wbGVzOwotICAgICAgICBpZiAoZXYubVRpbWVTYW1wbGVzLmxlbmd0aCA+PSBOUykgewotICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShvLm1UaW1lU2FtcGxlcywgMCwgZXYubVRpbWVTYW1wbGVzLCAwLCBOUyk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBldi5tVGltZVNhbXBsZXMgPSAobG9uZ1tdKW8ubVRpbWVTYW1wbGVzLmNsb25lKCk7Ci0gICAgICAgIH0KKyAgICAgICAgZXYubUxhc3REYXRhU2FtcGxlSW5kZXggPSBvLm1MYXN0RGF0YVNhbXBsZUluZGV4OworICAgICAgICBldi5tTGFzdEV2ZW50VGltZU5hbm9TYW1wbGVJbmRleCA9IG8ubUxhc3RFdmVudFRpbWVOYW5vU2FtcGxlSW5kZXg7CiAgICAgICAgIAotICAgICAgICBmaW5hbCBpbnQgTlAgPSAoZXYubU51bVBvaW50ZXJzPW8ubU51bVBvaW50ZXJzKTsKLSAgICAgICAgaWYgKGV2Lm1Qb2ludGVySWRlbnRpZmllcnMubGVuZ3RoID49IE5QKSB7Ci0gICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KG8ubVBvaW50ZXJJZGVudGlmaWVycywgMCwgZXYubVBvaW50ZXJJZGVudGlmaWVycywgMCwgTlApOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZXYubVBvaW50ZXJJZGVudGlmaWVycyA9IChpbnRbXSlvLm1Qb2ludGVySWRlbnRpZmllcnMuY2xvbmUoKTsKLSAgICAgICAgfQorICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KG8ubVBvaW50ZXJJZGVudGlmaWVycywgMCwgZXYubVBvaW50ZXJJZGVudGlmaWVycywgMCwgbnVtUG9pbnRlcnMpOwogICAgICAgICAKLSAgICAgICAgZmluYWwgaW50IE5EID0gTlAgKiBOUyAqIE5VTV9TQU1QTEVfREFUQTsKLSAgICAgICAgaWYgKGV2Lm1EYXRhU2FtcGxlcy5sZW5ndGggPj0gTkQpIHsKLSAgICAgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoby5tRGF0YVNhbXBsZXMsIDAsIGV2Lm1EYXRhU2FtcGxlcywgMCwgTkQpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZXYubURhdGFTYW1wbGVzID0gKGZsb2F0W10pby5tRGF0YVNhbXBsZXMuY2xvbmUoKTsKLSAgICAgICAgfQorICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KG8ubUV2ZW50VGltZU5hbm9TYW1wbGVzLCAwLCBldi5tRXZlbnRUaW1lTmFub1NhbXBsZXMsIDAsIG51bVNhbXBsZXMpOwogICAgICAgICAKKyAgICAgICAgU3lzdGVtLmFycmF5Y29weShvLm1EYXRhU2FtcGxlcywgMCwgZXYubURhdGFTYW1wbGVzLCAwLAorICAgICAgICAgICAgICAgIG51bVBvaW50ZXJzICogbnVtU2FtcGxlcyAqIE5VTV9TQU1QTEVfREFUQSk7CiAgICAgICAgIHJldHVybiBldjsKICAgICB9CiAKQEAgLTU3NiwzNiArNTI5LDI5IEBACiAgICAgICogYW55IGhpc3RvcmljYWwgcG9pbnQgaW5mb3JtYXRpb24uCiAgICAgICovCiAgICAgc3RhdGljIHB1YmxpYyBNb3Rpb25FdmVudCBvYnRhaW5Ob0hpc3RvcnkoTW90aW9uRXZlbnQgbykgewotICAgICAgICBNb3Rpb25FdmVudCBldiA9IG9idGFpbigpOworICAgICAgICBNb3Rpb25FdmVudCBldiA9IG9idGFpbihvLm1OdW1Qb2ludGVycywgMSk7CiAgICAgICAgIGV2Lm1EZXZpY2VJZCA9IG8ubURldmljZUlkOwogICAgICAgICBldi5tRWRnZUZsYWdzID0gby5tRWRnZUZsYWdzOwotICAgICAgICBldi5tRG93blRpbWUgPSBvLm1Eb3duVGltZTsKLSAgICAgICAgZXYubUV2ZW50VGltZU5hbm8gPSBvLm1FdmVudFRpbWVOYW5vOworICAgICAgICBldi5tRG93blRpbWVOYW5vID0gby5tRG93blRpbWVOYW5vOwogICAgICAgICBldi5tQWN0aW9uID0gby5tQWN0aW9uOwotICAgICAgICBldi5tTnVtUG9pbnRlcnMgPSBvLm1OdW1Qb2ludGVyczsKLSAgICAgICAgZXYubVJhd1ggPSBvLm1SYXdYOwotICAgICAgICBldi5tUmF3WSA9IG8ubVJhd1k7CiAgICAgICAgIGV2Lm1NZXRhU3RhdGUgPSBvLm1NZXRhU3RhdGU7CisgICAgICAgIGV2Lm1YT2Zmc2V0ID0gby5tWE9mZnNldDsKKyAgICAgICAgZXYubVlPZmZzZXQgPSBvLm1ZT2Zmc2V0OwogICAgICAgICBldi5tWFByZWNpc2lvbiA9IG8ubVhQcmVjaXNpb247CiAgICAgICAgIGV2Lm1ZUHJlY2lzaW9uID0gby5tWVByZWNpc2lvbjsKICAgICAgICAgCisgICAgICAgIGludCBudW1Qb2ludGVycyA9IGV2Lm1OdW1Qb2ludGVycyA9IG8ubU51bVBvaW50ZXJzOwogICAgICAgICBldi5tTnVtU2FtcGxlcyA9IDE7Ci0gICAgICAgIGV2Lm1UaW1lU2FtcGxlc1swXSA9IG8ubVRpbWVTYW1wbGVzWzBdOwogICAgICAgICAKLSAgICAgICAgZmluYWwgaW50IE5QID0gKGV2Lm1OdW1Qb2ludGVycz1vLm1OdW1Qb2ludGVycyk7Ci0gICAgICAgIGlmIChldi5tUG9pbnRlcklkZW50aWZpZXJzLmxlbmd0aCA+PSBOUCkgewotICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShvLm1Qb2ludGVySWRlbnRpZmllcnMsIDAsIGV2Lm1Qb2ludGVySWRlbnRpZmllcnMsIDAsIE5QKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGV2Lm1Qb2ludGVySWRlbnRpZmllcnMgPSAoaW50W10pby5tUG9pbnRlcklkZW50aWZpZXJzLmNsb25lKCk7Ci0gICAgICAgIH0KKyAgICAgICAgZXYubUxhc3REYXRhU2FtcGxlSW5kZXggPSAwOworICAgICAgICBldi5tTGFzdEV2ZW50VGltZU5hbm9TYW1wbGVJbmRleCA9IDA7CiAgICAgICAgIAotICAgICAgICBmaW5hbCBpbnQgTkQgPSBOUCAqIE5VTV9TQU1QTEVfREFUQTsKLSAgICAgICAgaWYgKGV2Lm1EYXRhU2FtcGxlcy5sZW5ndGggPj0gTkQpIHsKLSAgICAgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoby5tRGF0YVNhbXBsZXMsIDAsIGV2Lm1EYXRhU2FtcGxlcywgMCwgTkQpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZXYubURhdGFTYW1wbGVzID0gKGZsb2F0W10pby5tRGF0YVNhbXBsZXMuY2xvbmUoKTsKLSAgICAgICAgfQorICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KG8ubVBvaW50ZXJJZGVudGlmaWVycywgMCwgZXYubVBvaW50ZXJJZGVudGlmaWVycywgMCwgbnVtUG9pbnRlcnMpOwogICAgICAgICAKKyAgICAgICAgZXYubUV2ZW50VGltZU5hbm9TYW1wbGVzWzBdID0gby5tRXZlbnRUaW1lTmFub1NhbXBsZXNbby5tTGFzdEV2ZW50VGltZU5hbm9TYW1wbGVJbmRleF07CisgICAgICAgIAorICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KG8ubURhdGFTYW1wbGVzLCBvLm1MYXN0RGF0YVNhbXBsZUluZGV4LCBldi5tRGF0YVNhbXBsZXMsIDAsCisgICAgICAgICAgICAgICAgbnVtUG9pbnRlcnMgKiBOVU1fU0FNUExFX0RBVEEpOwogICAgICAgICByZXR1cm4gZXY7CiAgICAgfQogCkBAIC02MTMsMTggKzU1OSwyMSBAQAogICAgICAqIFJlY3ljbGUgdGhlIE1vdGlvbkV2ZW50LCB0byBiZSByZS11c2VkIGJ5IGEgbGF0ZXIgY2FsbGVyLiAgQWZ0ZXIgY2FsbGluZwogICAgICAqIHRoaXMgZnVuY3Rpb24geW91IG11c3Qgbm90IGV2ZXIgdG91Y2ggdGhlIGV2ZW50IGFnYWluLgogICAgICAqLwotICAgIHB1YmxpYyB2b2lkIHJlY3ljbGUoKSB7CisgICAgcHVibGljIGZpbmFsIHZvaWQgcmVjeWNsZSgpIHsKICAgICAgICAgLy8gRW5zdXJlIHJlY3ljbGUgaXMgb25seSBjYWxsZWQgb25jZSEKICAgICAgICAgaWYgKFRSQUNLX1JFQ1lDTEVEX0xPQ0FUSU9OKSB7CiAgICAgICAgICAgICBpZiAobVJlY3ljbGVkTG9jYXRpb24gIT0gbnVsbCkgewogICAgICAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKHRvU3RyaW5nKCkgKyAiIHJlY3ljbGVkIHR3aWNlISIsIG1SZWN5Y2xlZExvY2F0aW9uKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1SZWN5Y2xlZExvY2F0aW9uID0gbmV3IFJ1bnRpbWVFeGNlcHRpb24oIkxhc3QgcmVjeWNsZWQgaGVyZSIpOwotICAgICAgICB9IGVsc2UgaWYgKG1SZWN5Y2xlZCkgewotICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24odG9TdHJpbmcoKSArICIgcmVjeWNsZWQgdHdpY2UhIik7CisgICAgICAgICAgICAvL0xvZy53KCJNb3Rpb25FdmVudCIsICJSZWN5Y2xpbmcgZXZlbnQgIiArIHRoaXMsIG1SZWN5Y2xlZExvY2F0aW9uKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChtUmVjeWNsZWQpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbih0b1N0cmluZygpICsgIiByZWN5Y2xlZCB0d2ljZSEiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1SZWN5Y2xlZCA9IHRydWU7CiAgICAgICAgIH0KIAotICAgICAgICAvL0xvZy53KCJNb3Rpb25FdmVudCIsICJSZWN5Y2xpbmcgZXZlbnQgIiArIHRoaXMsIG1SZWN5Y2xlZExvY2F0aW9uKTsKICAgICAgICAgc3luY2hyb25pemVkIChnUmVjeWNsZXJMb2NrKSB7CiAgICAgICAgICAgICBpZiAoZ1JlY3ljbGVyVXNlZCA8IE1BWF9SRUNZQ0xFRCkgewogICAgICAgICAgICAgICAgIGdSZWN5Y2xlclVzZWQrKzsKQEAgLTYzNCw2ICs1ODMsMjcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBTY2FsZXMgZG93biB0aGUgY29vcmRpbmF0aW9uIG9mIHRoaXMgZXZlbnQgYnkgdGhlIGdpdmVuIHNjYWxlLgorICAgICAqCisgICAgICogQGhpZGUKKyAgICAgKi8KKyAgICBwdWJsaWMgZmluYWwgdm9pZCBzY2FsZShmbG9hdCBzY2FsZSkgeworICAgICAgICBtWE9mZnNldCAqPSBzY2FsZTsKKyAgICAgICAgbVlPZmZzZXQgKj0gc2NhbGU7CisgICAgICAgIG1YUHJlY2lzaW9uICo9IHNjYWxlOworICAgICAgICBtWVByZWNpc2lvbiAqPSBzY2FsZTsKKyAgICAgICAgCisgICAgICAgIGZsb2F0W10gaGlzdG9yeSA9IG1EYXRhU2FtcGxlczsKKyAgICAgICAgZmluYWwgaW50IGxlbmd0aCA9IG1OdW1Qb2ludGVycyAqIG1OdW1TYW1wbGVzICogTlVNX1NBTVBMRV9EQVRBOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSArPSBOVU1fU0FNUExFX0RBVEEpIHsKKyAgICAgICAgICAgIGhpc3RvcnlbaSArIFNBTVBMRV9YXSAqPSBzY2FsZTsKKyAgICAgICAgICAgIGhpc3RvcnlbaSArIFNBTVBMRV9ZXSAqPSBzY2FsZTsKKyAgICAgICAgICAgIC8vIG5vIG5lZWQgdG8gc2NhbGUgcHJlc3N1cmUKKyAgICAgICAgICAgIGhpc3RvcnlbaSArIFNBTVBMRV9TSVpFXSAqPSBzY2FsZTsgICAgLy8gVE9ETzogc3F1YXJlIHRoaXM/CisgICAgICAgIH0KKyAgICB9CiAKICAgICAvKioKICAgICAgKiBSZXR1cm4gdGhlIGtpbmQgb2YgYWN0aW9uIGJlaW5nIHBlcmZvcm1lZCAtLSBvbmUgb2YgZWl0aGVyCkBAIC02NzUsMTQgKzY0NSwxNCBAQAogICAgICAqIGEgc3RyZWFtIG9mIHBvc2l0aW9uIGV2ZW50cy4KICAgICAgKi8KICAgICBwdWJsaWMgZmluYWwgbG9uZyBnZXREb3duVGltZSgpIHsKLSAgICAgICAgcmV0dXJuIG1Eb3duVGltZTsKKyAgICAgICAgcmV0dXJuIG1Eb3duVGltZU5hbm8gLyBNU19QRVJfTlM7CiAgICAgfQogCiAgICAgLyoqCiAgICAgICogUmV0dXJucyB0aGUgdGltZSAoaW4gbXMpIHdoZW4gdGhpcyBzcGVjaWZpYyBldmVudCB3YXMgZ2VuZXJhdGVkLgogICAgICAqLwogICAgIHB1YmxpYyBmaW5hbCBsb25nIGdldEV2ZW50VGltZSgpIHsKLSAgICAgICAgcmV0dXJuIG1UaW1lU2FtcGxlc1swXTsKKyAgICAgICAgcmV0dXJuIG1FdmVudFRpbWVOYW5vU2FtcGxlc1ttTGFzdEV2ZW50VGltZU5hbm9TYW1wbGVJbmRleF0gLyBNU19QRVJfTlM7CiAgICAgfQogCiAgICAgLyoqCkBAIC02OTIsNyArNjYyLDcgQEAKICAgICAgKiBAaGlkZQogICAgICAqLwogICAgIHB1YmxpYyBmaW5hbCBsb25nIGdldEV2ZW50VGltZU5hbm8oKSB7Ci0gICAgICAgIHJldHVybiBtRXZlbnRUaW1lTmFubzsKKyAgICAgICAgcmV0dXJuIG1FdmVudFRpbWVOYW5vU2FtcGxlc1ttTGFzdEV2ZW50VGltZU5hbm9TYW1wbGVJbmRleF07CiAgICAgfQogCiAgICAgLyoqCkBAIC03MDAsNyArNjcwLDcgQEAKICAgICAgKiBhcmJpdHJhcnkgcG9pbnRlciBpZGVudGlmaWVyKS4KICAgICAgKi8KICAgICBwdWJsaWMgZmluYWwgZmxvYXQgZ2V0WCgpIHsKLSAgICAgICAgcmV0dXJuIG1EYXRhU2FtcGxlc1tTQU1QTEVfWF07CisgICAgICAgIHJldHVybiBtRGF0YVNhbXBsZXNbbUxhc3REYXRhU2FtcGxlSW5kZXggKyBTQU1QTEVfWF0gKyBtWE9mZnNldDsKICAgICB9CiAKICAgICAvKioKQEAgLTcwOCw3ICs2NzgsNyBAQAogICAgICAqIGFyYml0cmFyeSBwb2ludGVyIGlkZW50aWZpZXIpLgogICAgICAqLwogICAgIHB1YmxpYyBmaW5hbCBmbG9hdCBnZXRZKCkgewotICAgICAgICByZXR1cm4gbURhdGFTYW1wbGVzW1NBTVBMRV9ZXTsKKyAgICAgICAgcmV0dXJuIG1EYXRhU2FtcGxlc1ttTGFzdERhdGFTYW1wbGVJbmRleCArIFNBTVBMRV9ZXSArIG1ZT2Zmc2V0OwogICAgIH0KIAogICAgIC8qKgpAQCAtNzE2LDcgKzY4Niw3IEBACiAgICAgICogYXJiaXRyYXJ5IHBvaW50ZXIgaWRlbnRpZmllcikuCiAgICAgICovCiAgICAgcHVibGljIGZpbmFsIGZsb2F0IGdldFByZXNzdXJlKCkgewotICAgICAgICByZXR1cm4gbURhdGFTYW1wbGVzW1NBTVBMRV9QUkVTU1VSRV07CisgICAgICAgIHJldHVybiBtRGF0YVNhbXBsZXNbbUxhc3REYXRhU2FtcGxlSW5kZXggKyBTQU1QTEVfUFJFU1NVUkVdOwogICAgIH0KIAogICAgIC8qKgpAQCAtNzI0LDcgKzY5NCw3IEBACiAgICAgICogYXJiaXRyYXJ5IHBvaW50ZXIgaWRlbnRpZmllcikuCiAgICAgICovCiAgICAgcHVibGljIGZpbmFsIGZsb2F0IGdldFNpemUoKSB7Ci0gICAgICAgIHJldHVybiBtRGF0YVNhbXBsZXNbU0FNUExFX1NJWkVdOworICAgICAgICByZXR1cm4gbURhdGFTYW1wbGVzW21MYXN0RGF0YVNhbXBsZUluZGV4ICsgU0FNUExFX1NJWkVdOwogICAgIH0KIAogICAgIC8qKgpAQCAtNzc2LDcgKzc0Niw4IEBACiAgICAgICogKHRoZSBmaXJzdCBwb2ludGVyIHRoYXQgaXMgZG93bikgdG8ge0BsaW5rICNnZXRQb2ludGVyQ291bnQoKX0tMS4KICAgICAgKi8KICAgICBwdWJsaWMgZmluYWwgZmxvYXQgZ2V0WChpbnQgcG9pbnRlckluZGV4KSB7Ci0gICAgICAgIHJldHVybiBtRGF0YVNhbXBsZXNbKHBvaW50ZXJJbmRleCpOVU1fU0FNUExFX0RBVEEpICsgU0FNUExFX1hdOworICAgICAgICByZXR1cm4gbURhdGFTYW1wbGVzW21MYXN0RGF0YVNhbXBsZUluZGV4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBwb2ludGVySW5kZXggKiBOVU1fU0FNUExFX0RBVEEgKyBTQU1QTEVfWF0gKyBtWE9mZnNldDsKICAgICB9CiAKICAgICAvKioKQEAgLTc4OSw3ICs3NjAsOCBAQAogICAgICAqICh0aGUgZmlyc3QgcG9pbnRlciB0aGF0IGlzIGRvd24pIHRvIHtAbGluayAjZ2V0UG9pbnRlckNvdW50KCl9LTEuCiAgICAgICovCiAgICAgcHVibGljIGZpbmFsIGZsb2F0IGdldFkoaW50IHBvaW50ZXJJbmRleCkgewotICAgICAgICByZXR1cm4gbURhdGFTYW1wbGVzWyhwb2ludGVySW5kZXgqTlVNX1NBTVBMRV9EQVRBKSArIFNBTVBMRV9ZXTsKKyAgICAgICAgcmV0dXJuIG1EYXRhU2FtcGxlc1ttTGFzdERhdGFTYW1wbGVJbmRleAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgcG9pbnRlckluZGV4ICogTlVNX1NBTVBMRV9EQVRBICsgU0FNUExFX1ldICsgbVlPZmZzZXQ7CiAgICAgfQogCiAgICAgLyoqCkBAIC04MDQsNyArNzc2LDggQEAKICAgICAgKiAodGhlIGZpcnN0IHBvaW50ZXIgdGhhdCBpcyBkb3duKSB0byB7QGxpbmsgI2dldFBvaW50ZXJDb3VudCgpfS0xLgogICAgICAqLwogICAgIHB1YmxpYyBmaW5hbCBmbG9hdCBnZXRQcmVzc3VyZShpbnQgcG9pbnRlckluZGV4KSB7Ci0gICAgICAgIHJldHVybiBtRGF0YVNhbXBsZXNbKHBvaW50ZXJJbmRleCpOVU1fU0FNUExFX0RBVEEpICsgU0FNUExFX1BSRVNTVVJFXTsKKyAgICAgICAgcmV0dXJuIG1EYXRhU2FtcGxlc1ttTGFzdERhdGFTYW1wbGVJbmRleAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgcG9pbnRlckluZGV4ICogTlVNX1NBTVBMRV9EQVRBICsgU0FNUExFX1BSRVNTVVJFXTsKICAgICB9CiAKICAgICAvKioKQEAgLTgyMCw3ICs3OTMsOCBAQAogICAgICAqICh0aGUgZmlyc3QgcG9pbnRlciB0aGF0IGlzIGRvd24pIHRvIHtAbGluayAjZ2V0UG9pbnRlckNvdW50KCl9LTEuCiAgICAgICovCiAgICAgcHVibGljIGZpbmFsIGZsb2F0IGdldFNpemUoaW50IHBvaW50ZXJJbmRleCkgewotICAgICAgICByZXR1cm4gbURhdGFTYW1wbGVzWyhwb2ludGVySW5kZXgqTlVNX1NBTVBMRV9EQVRBKSArIFNBTVBMRV9TSVpFXTsKKyAgICAgICAgcmV0dXJuIG1EYXRhU2FtcGxlc1ttTGFzdERhdGFTYW1wbGVJbmRleAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgcG9pbnRlckluZGV4ICogTlVNX1NBTVBMRV9EQVRBICsgU0FNUExFX1NJWkVdOwogICAgIH0KIAogICAgIC8qKgpAQCAtODQ0LDcgKzgxOCw3IEBACiAgICAgICogYW5kIHZpZXdzLgogICAgICAqLwogICAgIHB1YmxpYyBmaW5hbCBmbG9hdCBnZXRSYXdYKCkgewotICAgICAgICByZXR1cm4gbVJhd1g7CisgICAgICAgIHJldHVybiBtRGF0YVNhbXBsZXNbbUxhc3REYXRhU2FtcGxlSW5kZXggKyBTQU1QTEVfWF07CiAgICAgfQogCiAgICAgLyoqCkBAIC04NTQsNyArODI4LDcgQEAKICAgICAgKiBhbmQgdmlld3MuCiAgICAgICovCiAgICAgcHVibGljIGZpbmFsIGZsb2F0IGdldFJhd1koKSB7Ci0gICAgICAgIHJldHVybiBtUmF3WTsKKyAgICAgICAgcmV0dXJuIG1EYXRhU2FtcGxlc1ttTGFzdERhdGFTYW1wbGVJbmRleCArIFNBTVBMRV9ZXTsKICAgICB9CiAKICAgICAvKioKQEAgLTg4Niw3ICs4NjAsNyBAQAogICAgICAqIEByZXR1cm4gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGhpc3RvcmljYWwgcG9pbnRzIGluIHRoZSBldmVudC4KICAgICAgKi8KICAgICBwdWJsaWMgZmluYWwgaW50IGdldEhpc3RvcnlTaXplKCkgewotICAgICAgICByZXR1cm4gbU51bVNhbXBsZXMgLSAxOworICAgICAgICByZXR1cm4gbUxhc3RFdmVudFRpbWVOYW5vU2FtcGxlSW5kZXg7CiAgICAgfQogCiAgICAgLyoqCkBAIC05MDAsNyArODc0LDcgQEAKICAgICAgKiBAc2VlICNnZXRFdmVudFRpbWUKICAgICAgKi8KICAgICBwdWJsaWMgZmluYWwgbG9uZyBnZXRIaXN0b3JpY2FsRXZlbnRUaW1lKGludCBwb3MpIHsKLSAgICAgICAgcmV0dXJuIG1UaW1lU2FtcGxlc1twb3MgKyAxXTsKKyAgICAgICAgcmV0dXJuIG1FdmVudFRpbWVOYW5vU2FtcGxlc1twb3NdIC8gTVNfUEVSX05TOwogICAgIH0KIAogICAgIC8qKgpAQCAtOTA4LDcgKzg4Miw3IEBACiAgICAgICogYXJiaXRyYXJ5IHBvaW50ZXIgaWRlbnRpZmllcikuCiAgICAgICovCiAgICAgcHVibGljIGZpbmFsIGZsb2F0IGdldEhpc3RvcmljYWxYKGludCBwb3MpIHsKLSAgICAgICAgcmV0dXJuIG1EYXRhU2FtcGxlc1soKHBvcyArIDEpICogTlVNX1NBTVBMRV9EQVRBICogbU51bVBvaW50ZXJzKSArIFNBTVBMRV9YXTsKKyAgICAgICAgcmV0dXJuIG1EYXRhU2FtcGxlc1twb3MgKiBtTnVtUG9pbnRlcnMgKiBOVU1fU0FNUExFX0RBVEEgKyBTQU1QTEVfWF0gKyBtWE9mZnNldDsKICAgICB9CiAKICAgICAvKioKQEAgLTkxNiw3ICs4OTAsNyBAQAogICAgICAqIGFyYml0cmFyeSBwb2ludGVyIGlkZW50aWZpZXIpLgogICAgICAqLwogICAgIHB1YmxpYyBmaW5hbCBmbG9hdCBnZXRIaXN0b3JpY2FsWShpbnQgcG9zKSB7Ci0gICAgICAgIHJldHVybiBtRGF0YVNhbXBsZXNbKChwb3MgKyAxKSAqIE5VTV9TQU1QTEVfREFUQSAqIG1OdW1Qb2ludGVycykgKyBTQU1QTEVfWV07CisgICAgICAgIHJldHVybiBtRGF0YVNhbXBsZXNbcG9zICogbU51bVBvaW50ZXJzICogTlVNX1NBTVBMRV9EQVRBICsgU0FNUExFX1ldICsgbVlPZmZzZXQ7CiAgICAgfQogCiAgICAgLyoqCkBAIC05MjQsNyArODk4LDcgQEAKICAgICAgKiBhcmJpdHJhcnkgcG9pbnRlciBpZGVudGlmaWVyKS4KICAgICAgKi8KICAgICBwdWJsaWMgZmluYWwgZmxvYXQgZ2V0SGlzdG9yaWNhbFByZXNzdXJlKGludCBwb3MpIHsKLSAgICAgICAgcmV0dXJuIG1EYXRhU2FtcGxlc1soKHBvcyArIDEpICogTlVNX1NBTVBMRV9EQVRBICogbU51bVBvaW50ZXJzKSArIFNBTVBMRV9QUkVTU1VSRV07CisgICAgICAgIHJldHVybiBtRGF0YVNhbXBsZXNbcG9zICogbU51bVBvaW50ZXJzICogTlVNX1NBTVBMRV9EQVRBICsgU0FNUExFX1BSRVNTVVJFXTsKICAgICB9CiAKICAgICAvKioKQEAgLTkzMiw3ICs5MDYsNyBAQAogICAgICAqIGFyYml0cmFyeSBwb2ludGVyIGlkZW50aWZpZXIpLgogICAgICAqLwogICAgIHB1YmxpYyBmaW5hbCBmbG9hdCBnZXRIaXN0b3JpY2FsU2l6ZShpbnQgcG9zKSB7Ci0gICAgICAgIHJldHVybiBtRGF0YVNhbXBsZXNbKChwb3MgKyAxKSAqIE5VTV9TQU1QTEVfREFUQSAqIG1OdW1Qb2ludGVycykgKyBTQU1QTEVfU0laRV07CisgICAgICAgIHJldHVybiBtRGF0YVNhbXBsZXNbcG9zICogbU51bVBvaW50ZXJzICogTlVNX1NBTVBMRV9EQVRBICsgU0FNUExFX1NJWkVdOwogICAgIH0KIAogICAgIC8qKgpAQCAtOTQ5LDggKzkyMyw4IEBACiAgICAgICogQHNlZSAjZ2V0WAogICAgICAqLwogICAgIHB1YmxpYyBmaW5hbCBmbG9hdCBnZXRIaXN0b3JpY2FsWChpbnQgcG9pbnRlckluZGV4LCBpbnQgcG9zKSB7Ci0gICAgICAgIHJldHVybiBtRGF0YVNhbXBsZXNbKChwb3MgKyAxKSAqIE5VTV9TQU1QTEVfREFUQSAqIG1OdW1Qb2ludGVycykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICArIChwb2ludGVySW5kZXggKiBOVU1fU0FNUExFX0RBVEEpICsgU0FNUExFX1hdOworICAgICAgICByZXR1cm4gbURhdGFTYW1wbGVzWyhwb3MgKiBtTnVtUG9pbnRlcnMgKyBwb2ludGVySW5kZXgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBOVU1fU0FNUExFX0RBVEEgKyBTQU1QTEVfWF0gKyBtWE9mZnNldDsKICAgICB9CiAKICAgICAvKioKQEAgLTk2Nyw4ICs5NDEsOCBAQAogICAgICAqIEBzZWUgI2dldFkKICAgICAgKi8KICAgICBwdWJsaWMgZmluYWwgZmxvYXQgZ2V0SGlzdG9yaWNhbFkoaW50IHBvaW50ZXJJbmRleCwgaW50IHBvcykgewotICAgICAgICByZXR1cm4gbURhdGFTYW1wbGVzWygocG9zICsgMSkgKiBOVU1fU0FNUExFX0RBVEEgKiBtTnVtUG9pbnRlcnMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAocG9pbnRlckluZGV4ICogTlVNX1NBTVBMRV9EQVRBKSArIFNBTVBMRV9ZXTsKKyAgICAgICAgcmV0dXJuIG1EYXRhU2FtcGxlc1socG9zICogbU51bVBvaW50ZXJzICsgcG9pbnRlckluZGV4KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICogTlVNX1NBTVBMRV9EQVRBICsgU0FNUExFX1ldICsgbVlPZmZzZXQ7CiAgICAgfQogCiAgICAgLyoqCkBAIC05ODUsOCArOTU5LDggQEAKICAgICAgKiBAc2VlICNnZXRQcmVzc3VyZQogICAgICAqLwogICAgIHB1YmxpYyBmaW5hbCBmbG9hdCBnZXRIaXN0b3JpY2FsUHJlc3N1cmUoaW50IHBvaW50ZXJJbmRleCwgaW50IHBvcykgewotICAgICAgICByZXR1cm4gbURhdGFTYW1wbGVzWygocG9zICsgMSkgKiBOVU1fU0FNUExFX0RBVEEgKiBtTnVtUG9pbnRlcnMpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAocG9pbnRlckluZGV4ICogTlVNX1NBTVBMRV9EQVRBKSArIFNBTVBMRV9QUkVTU1VSRV07CisgICAgICAgIHJldHVybiBtRGF0YVNhbXBsZXNbKHBvcyAqIG1OdW1Qb2ludGVycyArIHBvaW50ZXJJbmRleCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIE5VTV9TQU1QTEVfREFUQSArIFNBTVBMRV9QUkVTU1VSRV07CiAgICAgfQogCiAgICAgLyoqCkBAIC0xMDAzLDggKzk3Nyw4IEBACiAgICAgICogQHNlZSAjZ2V0U2l6ZQogICAgICAqLwogICAgIHB1YmxpYyBmaW5hbCBmbG9hdCBnZXRIaXN0b3JpY2FsU2l6ZShpbnQgcG9pbnRlckluZGV4LCBpbnQgcG9zKSB7Ci0gICAgICAgIHJldHVybiBtRGF0YVNhbXBsZXNbKChwb3MgKyAxKSAqIE5VTV9TQU1QTEVfREFUQSAqIG1OdW1Qb2ludGVycykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICArIChwb2ludGVySW5kZXggKiBOVU1fU0FNUExFX0RBVEEpICsgU0FNUExFX1NJWkVdOworICAgICAgICByZXR1cm4gbURhdGFTYW1wbGVzWyhwb3MgKiBtTnVtUG9pbnRlcnMgKyBwb2ludGVySW5kZXgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBOVU1fU0FNUExFX0RBVEEgKyBTQU1QTEVfU0laRV07CiAgICAgfQogCiAgICAgLyoqCkBAIC0xMDE3LDcgKzk5MSw3IEBACiAgICAgfQogCiAgICAgLyoqCi0gICAgICogUmV0dXJucyBhIGJpdGZpZWxkIGluZGljYXRpbmcgd2hpY2ggZWRnZXMsIGlmIGFueSwgd2hlcmUgdG91Y2hlZCBieSB0aGlzCisgICAgICogUmV0dXJucyBhIGJpdGZpZWxkIGluZGljYXRpbmcgd2hpY2ggZWRnZXMsIGlmIGFueSwgd2VyZSB0b3VjaGVkIGJ5IHRoaXMKICAgICAgKiBNb3Rpb25FdmVudC4gRm9yIHRvdWNoIGV2ZW50cywgY2xpZW50cyBjYW4gdXNlIHRoaXMgdG8gZGV0ZXJtaW5lIGlmIHRoZQogICAgICAqIHVzZXIncyBmaW5nZXIgd2FzIHRvdWNoaW5nIHRoZSBlZGdlIG9mIHRoZSBkaXNwbGF5LgogICAgICAqCkBAIC0xMDU0LDEyICsxMDI4LDggQEAKICAgICAgKiBAcGFyYW0gZGVsdGFZIEFtb3VudCB0byBhZGQgdG8gdGhlIGN1cnJlbnQgWSBjb29yZGluYXRlIG9mIHRoZSBldmVudC4KICAgICAgKi8KICAgICBwdWJsaWMgZmluYWwgdm9pZCBvZmZzZXRMb2NhdGlvbihmbG9hdCBkZWx0YVgsIGZsb2F0IGRlbHRhWSkgewotICAgICAgICBmaW5hbCBpbnQgTiA9IG1OdW1Qb2ludGVycyptTnVtU2FtcGxlcyo0OwotICAgICAgICBmaW5hbCBmbG9hdFtdIHBvcyA9IG1EYXRhU2FtcGxlczsKLSAgICAgICAgZm9yIChpbnQgaT0wOyBpPE47IGkrPU5VTV9TQU1QTEVfREFUQSkgewotICAgICAgICAgICAgcG9zW2krU0FNUExFX1hdICs9IGRlbHRhWDsKLSAgICAgICAgICAgIHBvc1tpK1NBTVBMRV9ZXSArPSBkZWx0YVk7Ci0gICAgICAgIH0KKyAgICAgICAgbVhPZmZzZXQgKz0gZGVsdGFYOworICAgICAgICBtWU9mZnNldCArPSBkZWx0YVk7CiAgICAgfQogCiAgICAgLyoqCkBAIC0xMDcwLDExICsxMDQwLDI4IEBACiAgICAgICogQHBhcmFtIHkgTmV3IGFic29sdXRlIFkgbG9jYXRpb24uCiAgICAgICovCiAgICAgcHVibGljIGZpbmFsIHZvaWQgc2V0TG9jYXRpb24oZmxvYXQgeCwgZmxvYXQgeSkgewotICAgICAgICBmbG9hdCBkZWx0YVggPSB4LW1EYXRhU2FtcGxlc1tTQU1QTEVfWF07Ci0gICAgICAgIGZsb2F0IGRlbHRhWSA9IHktbURhdGFTYW1wbGVzW1NBTVBMRV9ZXTsKLSAgICAgICAgaWYgKGRlbHRhWCAhPSAwIHx8IGRlbHRhWSAhPSAwKSB7Ci0gICAgICAgICAgICBvZmZzZXRMb2NhdGlvbihkZWx0YVgsIGRlbHRhWSk7CisgICAgICAgIG1YT2Zmc2V0ID0geCAtIG1EYXRhU2FtcGxlc1ttTGFzdERhdGFTYW1wbGVJbmRleCArIFNBTVBMRV9YXTsKKyAgICAgICAgbVlPZmZzZXQgPSB5IC0gbURhdGFTYW1wbGVzW21MYXN0RGF0YVNhbXBsZUluZGV4ICsgU0FNUExFX1ldOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIGZpbmFsIHZvaWQgaW5jcmVtZW50TnVtU2FtcGxlc0FuZFJlc2VydmVTdG9yYWdlKGludCBkYXRhU2FtcGxlU3RyaWRlKSB7CisgICAgICAgIGlmIChtTnVtU2FtcGxlcyA9PSBtRXZlbnRUaW1lTmFub1NhbXBsZXMubGVuZ3RoKSB7CisgICAgICAgICAgICBsb25nW10gbmV3RXZlbnRUaW1lTmFub1NhbXBsZXMgPSBuZXcgbG9uZ1ttTnVtU2FtcGxlcyArIEJBU0VfQVZBSUxfU0FNUExFU107CisgICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KG1FdmVudFRpbWVOYW5vU2FtcGxlcywgMCwgbmV3RXZlbnRUaW1lTmFub1NhbXBsZXMsIDAsIG1OdW1TYW1wbGVzKTsKKyAgICAgICAgICAgIG1FdmVudFRpbWVOYW5vU2FtcGxlcyA9IG5ld0V2ZW50VGltZU5hbm9TYW1wbGVzOwogICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpbnQgbmV4dERhdGFTYW1wbGVJbmRleCA9IG1MYXN0RGF0YVNhbXBsZUluZGV4ICsgZGF0YVNhbXBsZVN0cmlkZTsKKyAgICAgICAgaWYgKG5leHREYXRhU2FtcGxlSW5kZXggKyBkYXRhU2FtcGxlU3RyaWRlID4gbURhdGFTYW1wbGVzLmxlbmd0aCkgeworICAgICAgICAgICAgZmxvYXRbXSBuZXdEYXRhU2FtcGxlcyA9IG5ldyBmbG9hdFtuZXh0RGF0YVNhbXBsZUluZGV4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgQkFTRV9BVkFJTF9TQU1QTEVTICogZGF0YVNhbXBsZVN0cmlkZV07CisgICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KG1EYXRhU2FtcGxlcywgMCwgbmV3RGF0YVNhbXBsZXMsIDAsIG5leHREYXRhU2FtcGxlSW5kZXgpOworICAgICAgICAgICAgbURhdGFTYW1wbGVzID0gbmV3RGF0YVNhbXBsZXM7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG1MYXN0RXZlbnRUaW1lTmFub1NhbXBsZUluZGV4ID0gbU51bVNhbXBsZXM7CisgICAgICAgIG1MYXN0RGF0YVNhbXBsZUluZGV4ID0gbmV4dERhdGFTYW1wbGVJbmRleDsKKyAgICAgICAgbU51bVNhbXBsZXMgKz0gMTsKICAgICB9CiAKICAgICAvKioKQEAgLTEwOTIsNDIgKzEwNzksMTYgQEAKICAgICAgKi8KICAgICBwdWJsaWMgZmluYWwgdm9pZCBhZGRCYXRjaChsb25nIGV2ZW50VGltZSwgZmxvYXQgeCwgZmxvYXQgeSwKICAgICAgICAgICAgIGZsb2F0IHByZXNzdXJlLCBmbG9hdCBzaXplLCBpbnQgbWV0YVN0YXRlKSB7Ci0gICAgICAgIGZsb2F0W10gZGF0YSA9IG1EYXRhU2FtcGxlczsKLSAgICAgICAgbG9uZ1tdIHRpbWVzID0gbVRpbWVTYW1wbGVzOworICAgICAgICBpbmNyZW1lbnROdW1TYW1wbGVzQW5kUmVzZXJ2ZVN0b3JhZ2UoTlVNX1NBTVBMRV9EQVRBKTsKICAgICAgICAgCi0gICAgICAgIGZpbmFsIGludCBOUCA9IG1OdW1Qb2ludGVyczsKLSAgICAgICAgZmluYWwgaW50IE5TID0gbU51bVNhbXBsZXM7Ci0gICAgICAgIGZpbmFsIGludCBOSSA9IE5QKk5TOwotICAgICAgICBmaW5hbCBpbnQgTkQgPSBOSSAqIE5VTV9TQU1QTEVfREFUQTsKLSAgICAgICAgaWYgKGRhdGEubGVuZ3RoIDw9IE5EKSB7Ci0gICAgICAgICAgICBmaW5hbCBpbnQgTkVXX05EID0gTkQgKyAoTlAgKiAoQkFTRV9BVkFJTF9TQU1QTEVTICogTlVNX1NBTVBMRV9EQVRBKSk7Ci0gICAgICAgICAgICBmbG9hdFtdIG5ld0RhdGEgPSBuZXcgZmxvYXRbTkVXX05EXTsKLSAgICAgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoZGF0YSwgMCwgbmV3RGF0YSwgMCwgTkQpOwotICAgICAgICAgICAgbURhdGFTYW1wbGVzID0gZGF0YSA9IG5ld0RhdGE7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHRpbWVzLmxlbmd0aCA8PSBOUykgewotICAgICAgICAgICAgZmluYWwgaW50IE5FV19OUyA9IE5TICsgQkFTRV9BVkFJTF9TQU1QTEVTOwotICAgICAgICAgICAgbG9uZ1tdIG5ld0hpc3RvcnlUaW1lcyA9IG5ldyBsb25nW05FV19OU107Ci0gICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KHRpbWVzLCAwLCBuZXdIaXN0b3J5VGltZXMsIDAsIE5TKTsKLSAgICAgICAgICAgIG1UaW1lU2FtcGxlcyA9IHRpbWVzID0gbmV3SGlzdG9yeVRpbWVzOwotICAgICAgICB9CisgICAgICAgIG1FdmVudFRpbWVOYW5vU2FtcGxlc1ttTGFzdEV2ZW50VGltZU5hbm9TYW1wbGVJbmRleF0gPSBldmVudFRpbWUgKiBNU19QRVJfTlM7CiAgICAgICAgIAotICAgICAgICB0aW1lc1tOU10gPSB0aW1lc1swXTsKLSAgICAgICAgdGltZXNbMF0gPSBldmVudFRpbWU7CisgICAgICAgIGZsb2F0W10gZGF0YVNhbXBsZXMgPSBtRGF0YVNhbXBsZXM7CisgICAgICAgIGRhdGFTYW1wbGVzW21MYXN0RGF0YVNhbXBsZUluZGV4ICsgU0FNUExFX1hdID0geCAtIG1YT2Zmc2V0OworICAgICAgICBkYXRhU2FtcGxlc1ttTGFzdERhdGFTYW1wbGVJbmRleCArIFNBTVBMRV9ZXSA9IHkgLSBtWU9mZnNldDsKKyAgICAgICAgZGF0YVNhbXBsZXNbbUxhc3REYXRhU2FtcGxlSW5kZXggKyBTQU1QTEVfUFJFU1NVUkVdID0gcHJlc3N1cmU7CisgICAgICAgIGRhdGFTYW1wbGVzW21MYXN0RGF0YVNhbXBsZUluZGV4ICsgU0FNUExFX1NJWkVdID0gc2l6ZTsKICAgICAgICAgCi0gICAgICAgIGZpbmFsIGludCBwb3MgPSBOUypOVU1fU0FNUExFX0RBVEE7Ci0gICAgICAgIGRhdGFbcG9zK1NBTVBMRV9YXSA9IGRhdGFbU0FNUExFX1hdOwotICAgICAgICBkYXRhW3BvcytTQU1QTEVfWV0gPSBkYXRhW1NBTVBMRV9ZXTsKLSAgICAgICAgZGF0YVtwb3MrU0FNUExFX1BSRVNTVVJFXSA9IGRhdGFbU0FNUExFX1BSRVNTVVJFXTsKLSAgICAgICAgZGF0YVtwb3MrU0FNUExFX1NJWkVdID0gZGF0YVtTQU1QTEVfU0laRV07Ci0gICAgICAgIGRhdGFbU0FNUExFX1hdID0geDsKLSAgICAgICAgZGF0YVtTQU1QTEVfWV0gPSB5OwotICAgICAgICBkYXRhW1NBTVBMRV9QUkVTU1VSRV0gPSBwcmVzc3VyZTsKLSAgICAgICAgZGF0YVtTQU1QTEVfU0laRV0gPSBzaXplOwotICAgICAgICBtTnVtU2FtcGxlcyA9IE5TKzE7Ci0KLSAgICAgICAgbVJhd1ggPSB4OwotICAgICAgICBtUmF3WSA9IHk7CiAgICAgICAgIG1NZXRhU3RhdGUgfD0gbWV0YVN0YXRlOwogICAgIH0KIApAQCAtMTE0Myw0OCArMTEwNCwzNiBAQAogICAgICAqIEBoaWRlCiAgICAgICovCiAgICAgcHVibGljIGZpbmFsIHZvaWQgYWRkQmF0Y2gobG9uZyBldmVudFRpbWUsIGZsb2F0W10gaW5EYXRhLCBpbnQgbWV0YVN0YXRlKSB7Ci0gICAgICAgIGZsb2F0W10gZGF0YSA9IG1EYXRhU2FtcGxlczsKLSAgICAgICAgbG9uZ1tdIHRpbWVzID0gbVRpbWVTYW1wbGVzOworICAgICAgICBmaW5hbCBpbnQgbnVtUG9pbnRlcnMgPSBtTnVtUG9pbnRlcnM7CisgICAgICAgIGZpbmFsIGludCBkYXRhU2FtcGxlU3RyaWRlID0gbnVtUG9pbnRlcnMgKiBOVU1fU0FNUExFX0RBVEE7CisgICAgICAgIGluY3JlbWVudE51bVNhbXBsZXNBbmRSZXNlcnZlU3RvcmFnZShkYXRhU2FtcGxlU3RyaWRlKTsKICAgICAgICAgCi0gICAgICAgIGZpbmFsIGludCBOUCA9IG1OdW1Qb2ludGVyczsKLSAgICAgICAgZmluYWwgaW50IE5TID0gbU51bVNhbXBsZXM7Ci0gICAgICAgIGZpbmFsIGludCBOSSA9IE5QKk5TOwotICAgICAgICBmaW5hbCBpbnQgTkQgPSBOSSAqIE5VTV9TQU1QTEVfREFUQTsKLSAgICAgICAgaWYgKGRhdGEubGVuZ3RoIDwgKE5EKyhOUCpOVU1fU0FNUExFX0RBVEEpKSkgewotICAgICAgICAgICAgZmluYWwgaW50IE5FV19ORCA9IE5EICsgKE5QICogKEJBU0VfQVZBSUxfU0FNUExFUyAqIE5VTV9TQU1QTEVfREFUQSkpOwotICAgICAgICAgICAgZmxvYXRbXSBuZXdEYXRhID0gbmV3IGZsb2F0W05FV19ORF07Ci0gICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KGRhdGEsIDAsIG5ld0RhdGEsIDAsIE5EKTsKLSAgICAgICAgICAgIG1EYXRhU2FtcGxlcyA9IGRhdGEgPSBuZXdEYXRhOwotICAgICAgICB9Ci0gICAgICAgIGlmICh0aW1lcy5sZW5ndGggPCAoTlMrMSkpIHsKLSAgICAgICAgICAgIGZpbmFsIGludCBORVdfTlMgPSBOUyArIEJBU0VfQVZBSUxfU0FNUExFUzsKLSAgICAgICAgICAgIGxvbmdbXSBuZXdIaXN0b3J5VGltZXMgPSBuZXcgbG9uZ1tORVdfTlNdOwotICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weSh0aW1lcywgMCwgbmV3SGlzdG9yeVRpbWVzLCAwLCBOUyk7Ci0gICAgICAgICAgICBtVGltZVNhbXBsZXMgPSB0aW1lcyA9IG5ld0hpc3RvcnlUaW1lczsKLSAgICAgICAgfQorICAgICAgICBtRXZlbnRUaW1lTmFub1NhbXBsZXNbbUxhc3RFdmVudFRpbWVOYW5vU2FtcGxlSW5kZXhdID0gZXZlbnRUaW1lICogTVNfUEVSX05TOwogICAgICAgICAKLSAgICAgICAgdGltZXNbTlNdID0gdGltZXNbMF07Ci0gICAgICAgIHRpbWVzWzBdID0gZXZlbnRUaW1lOwotICAgICAgICAKLSAgICAgICAgU3lzdGVtLmFycmF5Y29weShkYXRhLCAwLCBkYXRhLCBORCwgbU51bVBvaW50ZXJzKk5VTV9TQU1QTEVfREFUQSk7Ci0gICAgICAgIFN5c3RlbS5hcnJheWNvcHkoaW5EYXRhLCAwLCBkYXRhLCAwLCBtTnVtUG9pbnRlcnMqTlVNX1NBTVBMRV9EQVRBKTsKLSAgICAgICAgCi0gICAgICAgIG1OdW1TYW1wbGVzID0gTlMrMTsKKyAgICAgICAgZmxvYXRbXSBkYXRhU2FtcGxlcyA9IG1EYXRhU2FtcGxlczsKKyAgICAgICAgU3lzdGVtLmFycmF5Y29weShpbkRhdGEsIDAsIGRhdGFTYW1wbGVzLCBtTGFzdERhdGFTYW1wbGVJbmRleCwgZGF0YVNhbXBsZVN0cmlkZSk7CiAKLSAgICAgICAgbVJhd1ggPSBpbkRhdGFbU0FNUExFX1hdOwotICAgICAgICBtUmF3WSA9IGluRGF0YVtTQU1QTEVfWV07CisgICAgICAgIGlmIChtWE9mZnNldCAhPSAwIHx8IG1ZT2Zmc2V0ICE9IDApIHsKKyAgICAgICAgICAgIGludCBpbmRleCA9IG1MYXN0RXZlbnRUaW1lTmFub1NhbXBsZUluZGV4OworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1Qb2ludGVyczsgaSsrKSB7CisgICAgICAgICAgICAgICAgZGF0YVNhbXBsZXNbaW5kZXggKyBTQU1QTEVfWF0gLT0gbVhPZmZzZXQ7CisgICAgICAgICAgICAgICAgZGF0YVNhbXBsZXNbaW5kZXggKyBTQU1QTEVfWV0gLT0gbVlPZmZzZXQ7CisgICAgICAgICAgICAgICAgaW5kZXggKz0gTlVNX1NBTVBMRV9EQVRBOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAogICAgICAgICBtTWV0YVN0YXRlIHw9IG1ldGFTdGF0ZTsKICAgICAgICAgCiAgICAgICAgIGlmIChERUJVR19QT0lOVEVSUykgewogICAgICAgICAgICAgU3RyaW5nQnVpbGRlciBzYiA9IG5ldyBTdHJpbmdCdWlsZGVyKDEyOCk7CiAgICAgICAgICAgICBzYi5hcHBlbmQoIkFkZDoiKTsKLSAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxtTnVtUG9pbnRlcnM7IGkrKykgeworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtTnVtUG9pbnRlcnM7IGkrKykgewogICAgICAgICAgICAgICAgIHNiLmFwcGVuZCgiICMiKTsKLSAgICAgICAgICAgICAgICBzYi5hcHBlbmQobVBvaW50ZXJJZGVudGlmaWVyc1tpXSk7CisgICAgICAgICAgICAgICAgc2IuYXBwZW5kKGdldFBvaW50ZXJJZChpKSk7CiAgICAgICAgICAgICAgICAgc2IuYXBwZW5kKCIoIik7Ci0gICAgICAgICAgICAgICAgc2IuYXBwZW5kKG1EYXRhU2FtcGxlc1soaSpOVU1fU0FNUExFX0RBVEEpICsgU0FNUExFX1hdKTsKKyAgICAgICAgICAgICAgICBzYi5hcHBlbmQoZ2V0WChpKSk7CiAgICAgICAgICAgICAgICAgc2IuYXBwZW5kKCIsIik7Ci0gICAgICAgICAgICAgICAgc2IuYXBwZW5kKG1EYXRhU2FtcGxlc1soaSpOVU1fU0FNUExFX0RBVEEpICsgU0FNUExFX1ldKTsKKyAgICAgICAgICAgICAgICBzYi5hcHBlbmQoZ2V0WShpKSk7CiAgICAgICAgICAgICAgICAgc2IuYXBwZW5kKCIpIik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBMb2cudigiTW90aW9uRXZlbnQiLCBzYi50b1N0cmluZygpKTsKQEAgLTEyMDEsOCArMTE1MCw0MSBAQAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgUGFyY2VsYWJsZS5DcmVhdG9yPE1vdGlvbkV2ZW50PiBDUkVBVE9SCiAgICAgICAgICAgICA9IG5ldyBQYXJjZWxhYmxlLkNyZWF0b3I8TW90aW9uRXZlbnQ+KCkgewogICAgICAgICBwdWJsaWMgTW90aW9uRXZlbnQgY3JlYXRlRnJvbVBhcmNlbChQYXJjZWwgaW4pIHsKLSAgICAgICAgICAgIE1vdGlvbkV2ZW50IGV2ID0gb2J0YWluKCk7Ci0gICAgICAgICAgICBldi5yZWFkRnJvbVBhcmNlbChpbik7CisgICAgICAgICAgICBmaW5hbCBpbnQgTlAgPSBpbi5yZWFkSW50KCk7CisgICAgICAgICAgICBmaW5hbCBpbnQgTlMgPSBpbi5yZWFkSW50KCk7CisgICAgICAgICAgICBmaW5hbCBpbnQgTkkgPSBOUCAqIE5TICogTlVNX1NBTVBMRV9EQVRBOworICAgICAgICAgICAgCisgICAgICAgICAgICBNb3Rpb25FdmVudCBldiA9IG9idGFpbihOUCwgTlMpOworICAgICAgICAgICAgZXYubU51bVBvaW50ZXJzID0gTlA7CisgICAgICAgICAgICBldi5tTnVtU2FtcGxlcyA9IE5TOworICAgICAgICAgICAgCisgICAgICAgICAgICBldi5tRG93blRpbWVOYW5vID0gaW4ucmVhZExvbmcoKTsKKyAgICAgICAgICAgIGV2Lm1BY3Rpb24gPSBpbi5yZWFkSW50KCk7CisgICAgICAgICAgICBldi5tWE9mZnNldCA9IGluLnJlYWRGbG9hdCgpOworICAgICAgICAgICAgZXYubVlPZmZzZXQgPSBpbi5yZWFkRmxvYXQoKTsKKyAgICAgICAgICAgIGV2Lm1YUHJlY2lzaW9uID0gaW4ucmVhZEZsb2F0KCk7CisgICAgICAgICAgICBldi5tWVByZWNpc2lvbiA9IGluLnJlYWRGbG9hdCgpOworICAgICAgICAgICAgZXYubURldmljZUlkID0gaW4ucmVhZEludCgpOworICAgICAgICAgICAgZXYubUVkZ2VGbGFncyA9IGluLnJlYWRJbnQoKTsKKyAgICAgICAgICAgIGV2Lm1NZXRhU3RhdGUgPSBpbi5yZWFkSW50KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZpbmFsIGludFtdIHBvaW50ZXJJZGVudGlmaWVycyA9IGV2Lm1Qb2ludGVySWRlbnRpZmllcnM7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IE5QOyBpKyspIHsKKyAgICAgICAgICAgICAgICBwb2ludGVySWRlbnRpZmllcnNbaV0gPSBpbi5yZWFkSW50KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZpbmFsIGxvbmdbXSBldmVudFRpbWVOYW5vU2FtcGxlcyA9IGV2Lm1FdmVudFRpbWVOYW5vU2FtcGxlczsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTlM7IGkrKykgeworICAgICAgICAgICAgICAgIGV2ZW50VGltZU5hbm9TYW1wbGVzW2ldID0gaW4ucmVhZExvbmcoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZmluYWwgZmxvYXRbXSBkYXRhU2FtcGxlcyA9IGV2Lm1EYXRhU2FtcGxlczsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTkk7IGkrKykgeworICAgICAgICAgICAgICAgIGRhdGFTYW1wbGVzW2ldID0gaW4ucmVhZEZsb2F0KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGV2Lm1MYXN0RXZlbnRUaW1lTmFub1NhbXBsZUluZGV4ID0gTlMgLSAxOworICAgICAgICAgICAgZXYubUxhc3REYXRhU2FtcGxlSW5kZXggPSAoTlMgLSAxKSAqIE5QICogTlVNX1NBTVBMRV9EQVRBOwogICAgICAgICAgICAgcmV0dXJuIGV2OwogICAgICAgICB9CiAKQEAgLTEyMTYsNzkgKzExOTgsMzYgQEAKICAgICB9CiAKICAgICBwdWJsaWMgdm9pZCB3cml0ZVRvUGFyY2VsKFBhcmNlbCBvdXQsIGludCBmbGFncykgewotICAgICAgICBvdXQud3JpdGVMb25nKG1Eb3duVGltZSk7Ci0gICAgICAgIG91dC53cml0ZUxvbmcobUV2ZW50VGltZU5hbm8pOwotICAgICAgICBvdXQud3JpdGVJbnQobUFjdGlvbik7Ci0gICAgICAgIG91dC53cml0ZUludChtTWV0YVN0YXRlKTsKLSAgICAgICAgb3V0LndyaXRlRmxvYXQobVJhd1gpOwotICAgICAgICBvdXQud3JpdGVGbG9hdChtUmF3WSk7CiAgICAgICAgIGZpbmFsIGludCBOUCA9IG1OdW1Qb2ludGVyczsKLSAgICAgICAgb3V0LndyaXRlSW50KE5QKTsKICAgICAgICAgZmluYWwgaW50IE5TID0gbU51bVNhbXBsZXM7CisgICAgICAgIGZpbmFsIGludCBOSSA9IE5QICogTlMgKiBOVU1fU0FNUExFX0RBVEE7CisgICAgICAgIAorICAgICAgICBvdXQud3JpdGVJbnQoTlApOwogICAgICAgICBvdXQud3JpdGVJbnQoTlMpOwotICAgICAgICBmaW5hbCBpbnQgTkkgPSBOUCpOUzsKLSAgICAgICAgaWYgKE5JID4gMCkgewotICAgICAgICAgICAgaW50IGk7Ci0gICAgICAgICAgICBpbnRbXSBzdGF0ZSA9IG1Qb2ludGVySWRlbnRpZmllcnM7Ci0gICAgICAgICAgICBmb3IgKGk9MDsgaTxOUDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgb3V0LndyaXRlSW50KHN0YXRlW2ldKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZpbmFsIGludCBORCA9IE5JKk5VTV9TQU1QTEVfREFUQTsKLSAgICAgICAgICAgIGZsb2F0W10gaGlzdG9yeSA9IG1EYXRhU2FtcGxlczsKLSAgICAgICAgICAgIGZvciAoaT0wOyBpPE5EOyBpKyspIHsKLSAgICAgICAgICAgICAgICBvdXQud3JpdGVGbG9hdChoaXN0b3J5W2ldKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGxvbmdbXSB0aW1lcyA9IG1UaW1lU2FtcGxlczsKLSAgICAgICAgICAgIGZvciAoaT0wOyBpPE5TOyBpKyspIHsKLSAgICAgICAgICAgICAgICBvdXQud3JpdGVMb25nKHRpbWVzW2ldKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgb3V0LndyaXRlTG9uZyhtRG93blRpbWVOYW5vKTsKKyAgICAgICAgb3V0LndyaXRlSW50KG1BY3Rpb24pOworICAgICAgICBvdXQud3JpdGVGbG9hdChtWE9mZnNldCk7CisgICAgICAgIG91dC53cml0ZUZsb2F0KG1ZT2Zmc2V0KTsKICAgICAgICAgb3V0LndyaXRlRmxvYXQobVhQcmVjaXNpb24pOwogICAgICAgICBvdXQud3JpdGVGbG9hdChtWVByZWNpc2lvbik7CiAgICAgICAgIG91dC53cml0ZUludChtRGV2aWNlSWQpOwogICAgICAgICBvdXQud3JpdGVJbnQobUVkZ2VGbGFncyk7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSB2b2lkIHJlYWRGcm9tUGFyY2VsKFBhcmNlbCBpbikgewotICAgICAgICBtRG93blRpbWUgPSBpbi5yZWFkTG9uZygpOwotICAgICAgICBtRXZlbnRUaW1lTmFubyA9IGluLnJlYWRMb25nKCk7Ci0gICAgICAgIG1BY3Rpb24gPSBpbi5yZWFkSW50KCk7Ci0gICAgICAgIG1NZXRhU3RhdGUgPSBpbi5yZWFkSW50KCk7Ci0gICAgICAgIG1SYXdYID0gaW4ucmVhZEZsb2F0KCk7Ci0gICAgICAgIG1SYXdZID0gaW4ucmVhZEZsb2F0KCk7Ci0gICAgICAgIGZpbmFsIGludCBOUCA9IGluLnJlYWRJbnQoKTsKLSAgICAgICAgbU51bVBvaW50ZXJzID0gTlA7Ci0gICAgICAgIGZpbmFsIGludCBOUyA9IGluLnJlYWRJbnQoKTsKLSAgICAgICAgbU51bVNhbXBsZXMgPSBOUzsKLSAgICAgICAgZmluYWwgaW50IE5JID0gTlAqTlM7Ci0gICAgICAgIGlmIChOSSA+IDApIHsKLSAgICAgICAgICAgIGludFtdIGlkcyA9IG1Qb2ludGVySWRlbnRpZmllcnM7Ci0gICAgICAgICAgICBpZiAoaWRzLmxlbmd0aCA8IE5QKSB7Ci0gICAgICAgICAgICAgICAgbVBvaW50ZXJJZGVudGlmaWVycyA9IGlkcyA9IG5ldyBpbnRbTlBdOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPE5QOyBpKyspIHsKLSAgICAgICAgICAgICAgICBpZHNbaV0gPSBpbi5yZWFkSW50KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBmbG9hdFtdIGhpc3RvcnkgPSBtRGF0YVNhbXBsZXM7Ci0gICAgICAgICAgICBmaW5hbCBpbnQgTkQgPSBOSSpOVU1fU0FNUExFX0RBVEE7Ci0gICAgICAgICAgICBpZiAoaGlzdG9yeS5sZW5ndGggPCBORCkgewotICAgICAgICAgICAgICAgIG1EYXRhU2FtcGxlcyA9IGhpc3RvcnkgPSBuZXcgZmxvYXRbTkRdOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPE5EOyBpKyspIHsKLSAgICAgICAgICAgICAgICBoaXN0b3J5W2ldID0gaW4ucmVhZEZsb2F0KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBsb25nW10gdGltZXMgPSBtVGltZVNhbXBsZXM7Ci0gICAgICAgICAgICBpZiAodGltZXMgPT0gbnVsbCB8fCB0aW1lcy5sZW5ndGggPCBOUykgewotICAgICAgICAgICAgICAgIG1UaW1lU2FtcGxlcyA9IHRpbWVzID0gbmV3IGxvbmdbTlNdOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPE5TOyBpKyspIHsKLSAgICAgICAgICAgICAgICB0aW1lc1tpXSA9IGluLnJlYWRMb25nKCk7Ci0gICAgICAgICAgICB9CisgICAgICAgIG91dC53cml0ZUludChtTWV0YVN0YXRlKTsKKyAgICAgICAgCisgICAgICAgIGZpbmFsIGludFtdIHBvaW50ZXJJZGVudGlmaWVycyA9IG1Qb2ludGVySWRlbnRpZmllcnM7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTlA7IGkrKykgeworICAgICAgICAgICAgb3V0LndyaXRlSW50KHBvaW50ZXJJZGVudGlmaWVyc1tpXSk7CiAgICAgICAgIH0KLSAgICAgICAgbVhQcmVjaXNpb24gPSBpbi5yZWFkRmxvYXQoKTsKLSAgICAgICAgbVlQcmVjaXNpb24gPSBpbi5yZWFkRmxvYXQoKTsKLSAgICAgICAgbURldmljZUlkID0gaW4ucmVhZEludCgpOwotICAgICAgICBtRWRnZUZsYWdzID0gaW4ucmVhZEludCgpOwotICAgIH0KKyAgICAgICAgCisgICAgICAgIGZpbmFsIGxvbmdbXSBldmVudFRpbWVOYW5vU2FtcGxlcyA9IG1FdmVudFRpbWVOYW5vU2FtcGxlczsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOUzsgaSsrKSB7CisgICAgICAgICAgICBvdXQud3JpdGVMb25nKGV2ZW50VGltZU5hbm9TYW1wbGVzW2ldKTsKKyAgICAgICAgfQogCisgICAgICAgIGZpbmFsIGZsb2F0W10gZGF0YVNhbXBsZXMgPSBtRGF0YVNhbXBsZXM7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTkk7IGkrKykgeworICAgICAgICAgICAgb3V0LndyaXRlRmxvYXQoZGF0YVNhbXBsZXNbaV0pOworICAgICAgICB9CisgICAgfQogfQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9SYXdJbnB1dEV2ZW50LmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC92aWV3L1Jhd0lucHV0RXZlbnQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2JiZmVhOC4uMDAwMDAwMAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC92aWV3L1Jhd0lucHV0RXZlbnQuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDIwMSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotcGFja2FnZSBhbmRyb2lkLnZpZXc7Ci0KLS8qKgotICogQGhpZGUKLSAqIFRoaXMgcmVhbGx5IGJlbG9uZ3MgaW4gc2VydmljZXMuamFyOyBXaW5kb3dNYW5hZ2VyUG9saWN5IHNob3VsZCBnbyB0aGVyZSB0b28uCi0gKi8KLXB1YmxpYyBjbGFzcyBSYXdJbnB1dEV2ZW50IHsKLSAgICAvLyBFdmVudCBjbGFzcyBhcyBkZWZpbmVkIGJ5IEV2ZW50SHViLgotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IENMQVNTX0tFWUJPQVJEID0gMHgwMDAwMDAwMTsKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDTEFTU19BTFBIQUtFWSA9IDB4MDAwMDAwMDI7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ0xBU1NfVE9VQ0hTQ1JFRU4gPSAweDAwMDAwMDA0OwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IENMQVNTX1RSQUNLQkFMTCA9IDB4MDAwMDAwMDg7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ0xBU1NfVE9VQ0hTQ1JFRU5fTVQgPSAweDAwMDAwMDEwOwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IENMQVNTX0RQQUQgPSAweDAwMDAwMDIwOwotICAgIAotICAgIC8vIE1vcmUgc3BlY2lhbCBjbGFzc2VzIGZvciBRdWV1ZWRFdmVudCBiZWxvdy4KLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDTEFTU19DT05GSUdVUkFUSU9OX0NIQU5HRUQgPSAweDEwMDAwMDAwOwotICAgIAotICAgIC8vIEV2ZW50IHR5cGVzLgotCi0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRVZfU1lOID0gMHgwMDsKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBFVl9LRVkgPSAweDAxOwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEVWX1JFTCA9IDB4MDI7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRVZfQUJTID0gMHgwMzsKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBFVl9NU0MgPSAweDA0OwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEVWX1NXID0gMHgwNTsKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBFVl9MRUQgPSAweDExOwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEVWX1NORCA9IDB4MTI7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRVZfUkVQID0gMHgxNDsKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBFVl9GRiA9IDB4MTU7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRVZfUFdSID0gMHgxNjsKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBFVl9GRl9TVEFUVVMgPSAweDE3OwotCi0gICAgLy8gUGxhdGZvcm0tc3BlY2lmaWMgZXZlbnQgdHlwZXMuCi0gICAgCi0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRVZfREVWSUNFX0FEREVEID0gMHgxMDAwMDAwMDsKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBFVl9ERVZJQ0VfUkVNT1ZFRCA9IDB4MjAwMDAwMDA7Ci0gICAgCi0gICAgLy8gU3BlY2lhbCBrZXkgKEVWX0tFWSkgc2NhbiBjb2RlcyBmb3IgcG9pbnRlciBidXR0b25zLgotCi0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQlROX0ZJUlNUID0gMHgxMDA7Ci0KLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBCVE5fTUlTQyA9IDB4MTAwOwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEJUTl8wID0gMHgxMDA7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQlROXzEgPSAweDEwMTsKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBCVE5fMiA9IDB4MTAyOwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEJUTl8zID0gMHgxMDM7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQlROXzQgPSAweDEwNDsKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBCVE5fNSA9IDB4MTA1OwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEJUTl82ID0gMHgxMDY7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQlROXzcgPSAweDEwNzsKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBCVE5fOCA9IDB4MTA4OwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEJUTl85ID0gMHgxMDk7Ci0KLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBCVE5fTU9VU0UgPSAweDExMDsKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBCVE5fTEVGVCA9IDB4MTEwOwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEJUTl9SSUdIVCA9IDB4MTExOwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEJUTl9NSURETEUgPSAweDExMjsKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBCVE5fU0lERSA9IDB4MTEzOwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEJUTl9FWFRSQSA9IDB4MTE0OwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEJUTl9GT1JXQVJEID0gMHgxMTU7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQlROX0JBQ0sgPSAweDExNjsKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBCVE5fVEFTSyA9IDB4MTE3OwotCi0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQlROX0pPWVNUSUNLID0gMHgxMjA7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQlROX1RSSUdHRVIgPSAweDEyMDsKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBCVE5fVEhVTUIgPSAweDEyMTsKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBCVE5fVEhVTUIyID0gMHgxMjI7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQlROX1RPUCA9IDB4MTIzOwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEJUTl9UT1AyID0gMHgxMjQ7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQlROX1BJTktJRSA9IDB4MTI1OwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEJUTl9CQVNFID0gMHgxMjY7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQlROX0JBU0UyID0gMHgxMjc7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQlROX0JBU0UzID0gMHgxMjg7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQlROX0JBU0U0ID0gMHgxMjk7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQlROX0JBU0U1ID0gMHgxMmE7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQlROX0JBU0U2ID0gMHgxMmI7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQlROX0RFQUQgPSAweDEyZjsKLQotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEJUTl9HQU1FUEFEID0gMHgxMzA7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQlROX0EgPSAweDEzMDsKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBCVE5fQiA9IDB4MTMxOwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEJUTl9DID0gMHgxMzI7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQlROX1ggPSAweDEzMzsKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBCVE5fWSA9IDB4MTM0OwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEJUTl9aID0gMHgxMzU7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQlROX1RMID0gMHgxMzY7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQlROX1RSID0gMHgxMzc7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQlROX1RMMiA9IDB4MTM4OwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEJUTl9UUjIgPSAweDEzOTsKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBCVE5fU0VMRUNUID0gMHgxM2E7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQlROX1NUQVJUID0gMHgxM2I7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQlROX01PREUgPSAweDEzYzsKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBCVE5fVEhVTUJMID0gMHgxM2Q7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQlROX1RIVU1CUiA9IDB4MTNlOwotCi0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQlROX0RJR0kgPSAweDE0MDsKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBCVE5fVE9PTF9QRU4gPSAweDE0MDsKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBCVE5fVE9PTF9SVUJCRVIgPSAweDE0MTsKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBCVE5fVE9PTF9CUlVTSCA9IDB4MTQyOwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEJUTl9UT09MX1BFTkNJTCA9IDB4MTQzOwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEJUTl9UT09MX0FJUkJSVVNIID0gMHgxNDQ7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQlROX1RPT0xfRklOR0VSID0gMHgxNDU7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQlROX1RPT0xfTU9VU0UgPSAweDE0NjsKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBCVE5fVE9PTF9MRU5TID0gMHgxNDc7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQlROX1RPVUNIID0gMHgxNGE7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQlROX1NUWUxVUyA9IDB4MTRiOwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEJUTl9TVFlMVVMyID0gMHgxNGM7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQlROX1RPT0xfRE9VQkxFVEFQID0gMHgxNGQ7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQlROX1RPT0xfVFJJUExFVEFQID0gMHgxNGU7Ci0KLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBCVE5fV0hFRUwgPSAweDE1MDsKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBCVE5fR0VBUl9ET1dOID0gMHgxNTA7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQlROX0dFQVJfVVAgPSAweDE1MTsKLQotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEJUTl9MQVNUID0gMHgxNWY7Ci0KLSAgICAvLyBSZWxhdGl2ZSBheGVzIChFVl9SRUwpIHNjYW4gY29kZXMuCi0KLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBSRUxfWCA9IDB4MDA7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUkVMX1kgPSAweDAxOwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFJFTF9aID0gMHgwMjsKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBSRUxfUlggPSAweDAzOwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFJFTF9SWSA9IDB4MDQ7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUkVMX1JaID0gMHgwNTsKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBSRUxfSFdIRUVMID0gMHgwNjsKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBSRUxfRElBTCA9IDB4MDc7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUkVMX1dIRUVMID0gMHgwODsKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBSRUxfTUlTQyA9IDB4MDk7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUkVMX01BWCA9IDB4MGY7Ci0KLSAgICAvLyBBYnNvbHV0ZSBheGVzIChFVl9BQlMpIHNjYW4gY29kZXMuCi0KLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBBQlNfWCA9IDB4MDA7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQUJTX1kgPSAweDAxOwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFCU19aID0gMHgwMjsKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBBQlNfUlggPSAweDAzOwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFCU19SWSA9IDB4MDQ7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQUJTX1JaID0gMHgwNTsKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBBQlNfVEhST1RUTEUgPSAweDA2OwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFCU19SVURERVIgPSAweDA3OwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFCU19XSEVFTCA9IDB4MDg7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQUJTX0dBUyA9IDB4MDk7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQUJTX0JSQUtFID0gMHgwYTsKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBBQlNfSEFUMFggPSAweDEwOwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFCU19IQVQwWSA9IDB4MTE7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQUJTX0hBVDFYID0gMHgxMjsKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBBQlNfSEFUMVkgPSAweDEzOwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFCU19IQVQyWCA9IDB4MTQ7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQUJTX0hBVDJZID0gMHgxNTsKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBBQlNfSEFUM1ggPSAweDE2OwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFCU19IQVQzWSA9IDB4MTc7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQUJTX1BSRVNTVVJFID0gMHgxODsKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBBQlNfRElTVEFOQ0UgPSAweDE5OwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFCU19USUxUX1ggPSAweDFhOwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFCU19USUxUX1kgPSAweDFiOwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFCU19UT09MX1dJRFRIID0gMHgxYzsKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBBQlNfVk9MVU1FID0gMHgyMDsKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBBQlNfTUlTQyA9IDB4Mjg7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQUJTX01UX1RPVUNIX01BSk9SID0gMHgzMDsKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBBQlNfTVRfVE9VQ0hfTUlOT1IgPSAweDMxOwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFCU19NVF9XSURUSF9NQUpPUiA9IDB4MzI7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQUJTX01UX1dJRFRIX01JTk9SID0gMHgzMzsKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBBQlNfTVRfT1JJRU5UQVRJT04gPSAweDM0OwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFCU19NVF9QT1NJVElPTl9YID0gMHgzNTsKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBBQlNfTVRfUE9TSVRJT05fWSA9IDB4MzY7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQUJTX01UX1RPT0xfVFlQRSA9IDB4Mzc7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQUJTX01UX0JMT0JfSUQgPSAweDM4OwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFCU19NQVggPSAweDNmOwotCi0gICAgLy8gU3dpdGNoIGV2ZW50cwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNXX0xJRCA9IDB4MDA7Ci0KLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTWU5fUkVQT1JUID0gMDsKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTWU5fQ09ORklHID0gMTsKLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTWU5fTVRfUkVQT1JUID0gMjsKLSAgICAKLSAgICBwdWJsaWMgaW50IGRldmljZUlkOwotICAgIHB1YmxpYyBpbnQgdHlwZTsKLSAgICBwdWJsaWMgaW50IHNjYW5jb2RlOwotICAgIHB1YmxpYyBpbnQga2V5Y29kZTsKLSAgICBwdWJsaWMgaW50IGZsYWdzOwotICAgIHB1YmxpYyBpbnQgdmFsdWU7Ci0gICAgcHVibGljIGxvbmcgd2hlbjsKLX0KZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvU3VyZmFjZS5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9TdXJmYWNlLmphdmEKaW5kZXggODNlZjhiYS4uY2QwYWUzYiAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9TdXJmYWNlLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9TdXJmYWNlLmphdmEKQEAgLTE0MCwxMyArMTQwLDEzIEBACiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRkxBR1NfT1JJRU5UQVRJT05fQU5JTUFUSU9OX0RJU0FCTEUgPSAweDAwMDAwMDAwMTsKIAogICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJ1bnVzZWQiKQotICAgIHByaXZhdGUgaW50IG1TdXJmYWNlOwotICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJ1bnVzZWQiKQogICAgIHByaXZhdGUgaW50IG1TdXJmYWNlQ29udHJvbDsKICAgICBAU3VwcHJlc3NXYXJuaW5ncygidW51c2VkIikKICAgICBwcml2YXRlIGludCBtU2F2ZUNvdW50OwogICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJ1bnVzZWQiKQogICAgIHByaXZhdGUgQ2FudmFzIG1DYW52YXM7CisgICAgQFN1cHByZXNzV2FybmluZ3MoInVudXNlZCIpCisgICAgcHJpdmF0ZSBpbnQgbU5hdGl2ZVN1cmZhY2U7CiAgICAgcHJpdmF0ZSBTdHJpbmcgbU5hbWU7CiAKICAgICAvLyBUaGUgZGlzcGxheSBtZXRyaWNzIHVzZWQgdG8gcHJvdmlkZSB0aGUgcHNldWRvIGNhbnZhcyBzaXplIGZvciBhcHBsaWNhdGlvbnMKQEAgLTQyMiwxMyArNDIyLDEzIEBACiAgICAgLyogbm8gdXNlciBzZXJ2aWNlYWJsZSBwYXJ0cyBoZXJlIC4uLiAqLwogICAgIEBPdmVycmlkZQogICAgIHByb3RlY3RlZCB2b2lkIGZpbmFsaXplKCkgdGhyb3dzIFRocm93YWJsZSB7Ci0gICAgICAgIGlmIChtU3VyZmFjZSAhPSAwIHx8IG1TdXJmYWNlQ29udHJvbCAhPSAwKSB7CisgICAgICAgIGlmIChtTmF0aXZlU3VyZmFjZSAhPSAwIHx8IG1TdXJmYWNlQ29udHJvbCAhPSAwKSB7CiAgICAgICAgICAgICBpZiAoREVCVUdfUkVMRUFTRSkgewogICAgICAgICAgICAgICAgIExvZy53KExPR19UQUcsICJTdXJmYWNlLmZpbmFsaXplKCkgaGFzIHdvcmsuIFlvdSBzaG91bGQgaGF2ZSBjYWxsZWQgcmVsZWFzZSgpICgiIAotICAgICAgICAgICAgICAgICAgICAgICAgKyBtU3VyZmFjZSArICIsICIgKyBtU3VyZmFjZUNvbnRyb2wgKyAiKSIsIG1DcmVhdGlvblN0YWNrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICsgbU5hdGl2ZVN1cmZhY2UgKyAiLCAiICsgbVN1cmZhY2VDb250cm9sICsgIikiLCBtQ3JlYXRpb25TdGFjayk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIExvZy53KExPR19UQUcsICJTdXJmYWNlLmZpbmFsaXplKCkgaGFzIHdvcmsuIFlvdSBzaG91bGQgaGF2ZSBjYWxsZWQgcmVsZWFzZSgpICgiIAotICAgICAgICAgICAgICAgICAgICAgICAgKyBtU3VyZmFjZSArICIsICIgKyBtU3VyZmFjZUNvbnRyb2wgKyAiKSIpOworICAgICAgICAgICAgICAgICAgICAgICAgKyBtTmF0aXZlU3VyZmFjZSArICIsICIgKyBtU3VyZmFjZUNvbnRyb2wgKyAiKSIpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHJlbGVhc2UoKTsKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvU3VyZmFjZUhvbGRlci5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9TdXJmYWNlSG9sZGVyLmphdmEKaW5kZXggNjRhMTBkMS4uMzRlNDYzOCAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9TdXJmYWNlSG9sZGVyLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9TdXJmYWNlSG9sZGVyLmphdmEKQEAgLTE4Miw3ICsxODIsNiBAQAogICAgIC8qKgogICAgICAqIEVuYWJsZSBvciBkaXNhYmxlIG9wdGlvbiB0byBrZWVwIHRoZSBzY3JlZW4gdHVybmVkIG9uIHdoaWxlIHRoaXMKICAgICAgKiBzdXJmYWNlIGlzIGRpc3BsYXllZC4gIFRoZSBkZWZhdWx0IGlzIGZhbHNlLCBhbGxvd2luZyBpdCB0byB0dXJuIG9mZi4KLSAgICAgKiBFbmFibGluZyB0aGUgb3B0aW9uIGVmZmVjdGl2ZWx0eS4KICAgICAgKiBUaGlzIGlzIHNhZmUgdG8gY2FsbCBmcm9tIGFueSB0aHJlYWQuCiAgICAgICogCiAgICAgICogQHBhcmFtIHNjcmVlbk9uIFN1cHBseSB0byB0cnVlIHRvIGZvcmNlIHRoZSBzY3JlZW4gdG8gc3RheSBvbiwgZmFsc2UKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvU3VyZmFjZVZpZXcuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvU3VyZmFjZVZpZXcuamF2YQppbmRleCA1M2YwYzJlLi5lNGQxYWUxIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC92aWV3L1N1cmZhY2VWaWV3LmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9TdXJmYWNlVmlldy5qYXZhCkBAIC0xNDEsNyArMTQxLDEwIEBACiAgICAgYm9vbGVhbiBtVmlld1Zpc2liaWxpdHkgPSBmYWxzZTsKICAgICBpbnQgbVJlcXVlc3RlZFdpZHRoID0gLTE7CiAgICAgaW50IG1SZXF1ZXN0ZWRIZWlnaHQgPSAtMTsKLSAgICBpbnQgbVJlcXVlc3RlZEZvcm1hdCA9IFBpeGVsRm9ybWF0Lk9QQVFVRTsKKyAgICAvKiBTZXQgU3VyZmFjZVZpZXcncyBmb3JtYXQgdG8gNTY1IGJ5IGRlZmF1bHQgdG8gbWFpbnRhaW4gYmFja3dhcmQKKyAgICAgKiBjb21wYXRpYmlsaXR5IHdpdGggYXBwbGljYXRpb25zIGFzc3VtaW5nIHRoaXMgZm9ybWF0LgorICAgICAqLworICAgIGludCBtUmVxdWVzdGVkRm9ybWF0ID0gUGl4ZWxGb3JtYXQuUkdCXzU2NTsKICAgICBpbnQgbVJlcXVlc3RlZFR5cGUgPSAtMTsKIAogICAgIGJvb2xlYW4gbUhhdmVGcmFtZSA9IGZhbHNlOwpAQCAtMTY0LDE2ICsxNjcsMjAgQEAKICAgICAKICAgICBwdWJsaWMgU3VyZmFjZVZpZXcoQ29udGV4dCBjb250ZXh0KSB7CiAgICAgICAgIHN1cGVyKGNvbnRleHQpOwotICAgICAgICBzZXRXaWxsTm90RHJhdyh0cnVlKTsKKyAgICAgICAgaW5pdCgpOwogICAgIH0KICAgICAKICAgICBwdWJsaWMgU3VyZmFjZVZpZXcoQ29udGV4dCBjb250ZXh0LCBBdHRyaWJ1dGVTZXQgYXR0cnMpIHsKICAgICAgICAgc3VwZXIoY29udGV4dCwgYXR0cnMpOwotICAgICAgICBzZXRXaWxsTm90RHJhdyh0cnVlKTsKKyAgICAgICAgaW5pdCgpOwogICAgIH0KIAogICAgIHB1YmxpYyBTdXJmYWNlVmlldyhDb250ZXh0IGNvbnRleHQsIEF0dHJpYnV0ZVNldCBhdHRycywgaW50IGRlZlN0eWxlKSB7CiAgICAgICAgIHN1cGVyKGNvbnRleHQsIGF0dHJzLCBkZWZTdHlsZSk7CisgICAgICAgIGluaXQoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgaW5pdCgpIHsKICAgICAgICAgc2V0V2lsbE5vdERyYXcodHJ1ZSk7CiAgICAgfQogICAgIApAQCAtNDY0LDcgKzQ3MSw3IEBACiAgICAgICAgICAgICAgICAgICAgIG1XaW5kb3cgPSBuZXcgTXlXaW5kb3codGhpcyk7CiAgICAgICAgICAgICAgICAgICAgIG1MYXlvdXQudHlwZSA9IG1XaW5kb3dUeXBlOwogICAgICAgICAgICAgICAgICAgICBtTGF5b3V0LmdyYXZpdHkgPSBHcmF2aXR5LkxFRlR8R3Jhdml0eS5UT1A7Ci0gICAgICAgICAgICAgICAgICAgIG1TZXNzaW9uLmFkZChtV2luZG93LCBtTGF5b3V0LAorICAgICAgICAgICAgICAgICAgICBtU2Vzc2lvbi5hZGRXaXRob3V0SW5wdXRDaGFubmVsKG1XaW5kb3csIG1MYXlvdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVZpc2libGUgPyBWSVNJQkxFIDogR09ORSwgbUNvbnRlbnRJbnNldHMpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAKQEAgLTYxOCw0MSArNjI1LDYgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIHB1YmxpYyB2b2lkIGRpc3BhdGNoS2V5KEtleUV2ZW50IGV2ZW50KSB7Ci0gICAgICAgICAgICBTdXJmYWNlVmlldyBzdXJmYWNlVmlldyA9IG1TdXJmYWNlVmlldy5nZXQoKTsKLSAgICAgICAgICAgIGlmIChzdXJmYWNlVmlldyAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgLy9Mb2cudygiU3VyZmFjZVZpZXciLCAiVW5leHBlY3RlZCBrZXkgZXZlbnQgaW4gc3VyZmFjZTogIiArIGV2ZW50KTsKLSAgICAgICAgICAgICAgICBpZiAoc3VyZmFjZVZpZXcubVNlc3Npb24gIT0gbnVsbCAmJiBzdXJmYWNlVmlldy5tU3VyZmFjZSAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdXJmYWNlVmlldy5tU2Vzc2lvbi5maW5pc2hLZXkoc3VyZmFjZVZpZXcubVdpbmRvdyk7Ci0gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBleCkgewotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIHZvaWQgZGlzcGF0Y2hQb2ludGVyKE1vdGlvbkV2ZW50IGV2ZW50LCBsb25nIGV2ZW50VGltZSwKLSAgICAgICAgICAgICAgICBib29sZWFuIGNhbGxXaGVuRG9uZSkgewotICAgICAgICAgICAgTG9nLncoIlN1cmZhY2VWaWV3IiwgIlVuZXhwZWN0ZWQgcG9pbnRlciBldmVudCBpbiBzdXJmYWNlOiAiICsgZXZlbnQpOwotICAgICAgICAgICAgLy9pZiAobVNlc3Npb24gIT0gbnVsbCAmJiBtU3VyZmFjZSAhPSBudWxsKSB7Ci0gICAgICAgICAgICAvLyAgICB0cnkgewotICAgICAgICAgICAgLy8gICAgICAgIC8vbVNlc3Npb24uZmluaXNoS2V5KG1XaW5kb3cpOwotICAgICAgICAgICAgLy8gICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGV4KSB7Ci0gICAgICAgICAgICAvLyAgICB9Ci0gICAgICAgICAgICAvL30KLSAgICAgICAgfQotCi0gICAgICAgIHB1YmxpYyB2b2lkIGRpc3BhdGNoVHJhY2tiYWxsKE1vdGlvbkV2ZW50IGV2ZW50LCBsb25nIGV2ZW50VGltZSwKLSAgICAgICAgICAgICAgICBib29sZWFuIGNhbGxXaGVuRG9uZSkgewotICAgICAgICAgICAgTG9nLncoIlN1cmZhY2VWaWV3IiwgIlVuZXhwZWN0ZWQgdHJhY2tiYWxsIGV2ZW50IGluIHN1cmZhY2U6ICIgKyBldmVudCk7Ci0gICAgICAgICAgICAvL2lmIChtU2Vzc2lvbiAhPSBudWxsICYmIG1TdXJmYWNlICE9IG51bGwpIHsKLSAgICAgICAgICAgIC8vICAgIHRyeSB7Ci0gICAgICAgICAgICAvLyAgICAgICAgLy9tU2Vzc2lvbi5maW5pc2hLZXkobVdpbmRvdyk7Ci0gICAgICAgICAgICAvLyAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZXgpIHsKLSAgICAgICAgICAgIC8vICAgIH0KLSAgICAgICAgICAgIC8vfQotICAgICAgICB9Ci0KICAgICAgICAgcHVibGljIHZvaWQgZGlzcGF0Y2hBcHBWaXNpYmlsaXR5KGJvb2xlYW4gdmlzaWJsZSkgewogICAgICAgICAgICAgLy8gVGhlIHBvaW50IG9mIFN1cmZhY2VWaWV3IGlzIHRvIGxldCB0aGUgYXBwIGNvbnRyb2wgdGhlIHN1cmZhY2UuCiAgICAgICAgIH0KQEAgLTY3OSw3ICs2NTEsNiBAQAogICAgIHByaXZhdGUgU3VyZmFjZUhvbGRlciBtU3VyZmFjZUhvbGRlciA9IG5ldyBTdXJmYWNlSG9sZGVyKCkgewogICAgICAgICAKICAgICAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIExPR19UQUcgPSAiU3VyZmFjZUhvbGRlciI7Ci0gICAgICAgIHByaXZhdGUgaW50IG1TYXZlQ291bnQ7CiAgICAgICAgIAogICAgICAgICBwdWJsaWMgYm9vbGVhbiBpc0NyZWF0aW5nKCkgewogICAgICAgICAgICAgcmV0dXJuIG1Jc0NyZWF0aW5nOwpAQCAtNzE3LDYgKzY4OCwxMiBAQAogICAgICAgICB9CiAKICAgICAgICAgcHVibGljIHZvaWQgc2V0Rm9ybWF0KGludCBmb3JtYXQpIHsKKworICAgICAgICAgICAgLy8gZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgcmVhc29uLCBPUEFRVUUgYWx3YXlzCisgICAgICAgICAgICAvLyBtZWFucyA1NjUgZm9yIFN1cmZhY2VWaWV3CisgICAgICAgICAgICBpZiAoZm9ybWF0ID09IFBpeGVsRm9ybWF0Lk9QQVFVRSkKKyAgICAgICAgICAgICAgICBmb3JtYXQgPSBQaXhlbEZvcm1hdC5SR0JfNTY1OworCiAgICAgICAgICAgICBtUmVxdWVzdGVkRm9ybWF0ID0gZm9ybWF0OwogICAgICAgICAgICAgaWYgKG1XaW5kb3cgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgIHVwZGF0ZVdpbmRvdyhmYWxzZSk7CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC92aWV3L1ZlbG9jaXR5VHJhY2tlci5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9WZWxvY2l0eVRyYWNrZXIuamF2YQppbmRleCBhYWI3NmM0Li5lNjliODA3IDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC92aWV3L1ZlbG9jaXR5VHJhY2tlci5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvVmVsb2NpdHlUcmFja2VyLmphdmEKQEAgLTIwNiw3ICsyMDYsNyBAQAogICAgICAgICAgICAgZmluYWwgbG9uZyBvbGRlc3RUaW1lID0gcGFzdFRpbWVbb2xkZXN0VG91Y2hdOwogICAgICAgICAgICAgZmxvYXQgYWNjdW1YID0gMDsKICAgICAgICAgICAgIGZsb2F0IGFjY3VtWSA9IDA7Ci0gICAgICAgICAgICBmbG9hdCBOID0gKGxhc3RUb3VjaCAtIG9sZGVzdFRvdWNoICsgTlVNX1BBU1QpICUgTlVNX1BBU1QgKyAxOworICAgICAgICAgICAgaW50IE4gPSAobGFzdFRvdWNoIC0gb2xkZXN0VG91Y2ggKyBOVU1fUEFTVCkgJSBOVU1fUEFTVCArIDE7CiAgICAgICAgICAgICAvLyBTa2lwIHRoZSBsYXN0IHJlY2VpdmVkIGV2ZW50LCBzaW5jZSBpdCBpcyBwcm9iYWJseSBwcmV0dHkgbm9pc3kuCiAgICAgICAgICAgICBpZiAoTiA+IDMpIE4tLTsKIApkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9WaWV3R3JvdXAuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvVmlld0dyb3VwLmphdmEKaW5kZXggZWNhNTgzZi4uZTdiNmM1MCAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9WaWV3R3JvdXAuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC92aWV3L1ZpZXdHcm91cC5qYXZhCkBAIC0yMjMsOCArMjIzLDkgQEAKIAogICAgIC8qKgogICAgICAqIFdoZW4gc2V0LCB0aGlzIFZpZXdHcm91cCBzaG91bGQgbm90IGludGVyY2VwdCB0b3VjaCBldmVudHMuCisgICAgICoge0BoaWRlfQogICAgICAqLwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBGTEFHX0RJU0FMTE9XX0lOVEVSQ0VQVCA9IDB4ODAwMDA7CisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgRkxBR19ESVNBTExPV19JTlRFUkNFUFQgPSAweDgwMDAwOwogCiAgICAgLyoqCiAgICAgICogSW5kaWNhdGVzIHdoaWNoIHR5cGVzIG9mIGRyYXdpbmcgY2FjaGVzIGFyZSB0byBiZSBrZXB0IGluIG1lbW9yeS4KZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvVmlld1Jvb3QuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvVmlld1Jvb3QuamF2YQppbmRleCAwM2VmZWE5Li5mYjQ1OTcxIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC92aWV3L1ZpZXdSb290LmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9WaWV3Um9vdC5qYXZhCkBAIC0xNiw4ICsxNiwxMCBAQAogCiBwYWNrYWdlIGFuZHJvaWQudmlldzsKIAoraW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnZpZXcuQmFzZVN1cmZhY2VIb2xkZXI7CiBpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudmlldy5JSW5wdXRNZXRob2RDYWxsYmFjazsKIGltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC52aWV3LklJbnB1dE1ldGhvZFNlc3Npb247CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudmlldy5Sb290Vmlld1N1cmZhY2VUYWtlcjsKIAogaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzOwogaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuUGl4ZWxGb3JtYXQ7CkBAIC0yNiwxMiArMjgsMTIgQEAKIGltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLlJlZ2lvbjsKIGltcG9ydCBhbmRyb2lkLm9zLio7CiBpbXBvcnQgYW5kcm9pZC5vcy5Qcm9jZXNzOwotaW1wb3J0IGFuZHJvaWQub3MuU3lzdGVtUHJvcGVydGllczsKIGltcG9ydCBhbmRyb2lkLnV0aWwuQW5kcm9pZFJ1bnRpbWVFeGNlcHRpb247CiBpbXBvcnQgYW5kcm9pZC51dGlsLkNvbmZpZzsKIGltcG9ydCBhbmRyb2lkLnV0aWwuRGlzcGxheU1ldHJpY3M7CiBpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKIGltcG9ydCBhbmRyb2lkLnV0aWwuRXZlbnRMb2c7CitpbXBvcnQgYW5kcm9pZC51dGlsLlNsb2c7CiBpbXBvcnQgYW5kcm9pZC51dGlsLlNwYXJzZUFycmF5OwogaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3Lk1lYXN1cmVTcGVjOwogaW1wb3J0IGFuZHJvaWQudmlldy5hY2Nlc3NpYmlsaXR5LkFjY2Vzc2liaWxpdHlFdmVudDsKQEAgLTUwLDYgKzUyLDcgQEAKIGltcG9ydCBhbmRyb2lkLm1lZGlhLkF1ZGlvTWFuYWdlcjsKIAogaW1wb3J0IGphdmEubGFuZy5yZWYuV2Vha1JlZmVyZW5jZTsKK2ltcG9ydCBqYXZhLmlvLkZpbGVEZXNjcmlwdG9yOwogaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CiBpbXBvcnQgamF2YS5pby5PdXRwdXRTdHJlYW07CiBpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKQEAgLTc2LDYgKzc5LDcgQEAKICAgICAvKiogQG5vaW5zcGVjdGlvbiBQb2ludGxlc3NCb29sZWFuRXhwcmVzc2lvbiovCiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBERUJVR19EUkFXID0gZmFsc2UgfHwgTE9DQUxfTE9HVjsKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIERFQlVHX0xBWU9VVCA9IGZhbHNlIHx8IExPQ0FMX0xPR1Y7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBERUJVR19JTlBVVCA9IHRydWUgfHwgTE9DQUxfTE9HVjsKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIERFQlVHX0lOUFVUX1JFU0laRSA9IGZhbHNlIHx8IExPQ0FMX0xPR1Y7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBERUJVR19PUklFTlRBVElPTiA9IGZhbHNlIHx8IExPQ0FMX0xPR1Y7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBERUJVR19UUkFDS0JBTEwgPSBmYWxzZSB8fCBMT0NBTF9MT0dWOwpAQCAtMTMzLDYgKzEzNywxMSBAQAogICAgIGludCBtVmlld1Zpc2liaWxpdHk7CiAgICAgYm9vbGVhbiBtQXBwVmlzaWJsZSA9IHRydWU7CiAKKyAgICBTdXJmYWNlSG9sZGVyLkNhbGxiYWNrIG1TdXJmYWNlSG9sZGVyQ2FsbGJhY2s7CisgICAgQmFzZVN1cmZhY2VIb2xkZXIgbVN1cmZhY2VIb2xkZXI7CisgICAgYm9vbGVhbiBtSXNDcmVhdGluZzsKKyAgICBib29sZWFuIG1EcmF3aW5nQWxsb3dlZDsKKyAgICAKICAgICBmaW5hbCBSZWdpb24gbVRyYW5zcGFyZW50UmVnaW9uOwogICAgIGZpbmFsIFJlZ2lvbiBtUHJldmlvdXNUcmFuc3BhcmVudFJlZ2lvbjsKIApAQCAtMTQ0LDcgKzE1MywxMCBAQAogICAgIENvbXBhdGliaWxpdHlJbmZvLlRyYW5zbGF0b3IgbVRyYW5zbGF0b3I7CiAKICAgICBmaW5hbCBWaWV3LkF0dGFjaEluZm8gbUF0dGFjaEluZm87Ci0KKyAgICBJbnB1dENoYW5uZWwgbUlucHV0Q2hhbm5lbDsKKyAgICBJbnB1dFF1ZXVlLkNhbGxiYWNrIG1JbnB1dFF1ZXVlQ2FsbGJhY2s7CisgICAgSW5wdXRRdWV1ZSBtSW5wdXRRdWV1ZTsKKyAgICAKICAgICBmaW5hbCBSZWN0IG1UZW1wUmVjdDsgLy8gdXNlZCBpbiB0aGUgdHJhbnNhY3Rpb24gdG8gbm90IHRocmFzaCB0aGUgaGVhcC4KICAgICBmaW5hbCBSZWN0IG1WaXNSZWN0OyAvLyB1c2VkIHRvIHJldHJpZXZlIHZpc2libGUgcmVjdCBvZiBmb2N1c2VkIHZpZXcuCiAKQEAgLTIxMCw3ICsyMjIsNyBAQAogICAgIEF1ZGlvTWFuYWdlciBtQXVkaW9NYW5hZ2VyOwogCiAgICAgcHJpdmF0ZSBmaW5hbCBpbnQgbURlbnNpdHk7Ci0KKyAgICAKICAgICBwdWJsaWMgc3RhdGljIElXaW5kb3dTZXNzaW9uIGdldFdpbmRvd1Nlc3Npb24oTG9vcGVyIG1haW5Mb29wZXIpIHsKICAgICAgICAgc3luY2hyb25pemVkIChtU3RhdGljSW5pdCkgewogICAgICAgICAgICAgaWYgKCFtSW5pdGlhbGl6ZWQpIHsKQEAgLTQzNSw2ICs0NDcsMTQgQEAKICAgICAgICAgICAgICAgICBtVmlldyA9IHZpZXc7CiAgICAgICAgICAgICAgICAgbVdpbmRvd0F0dHJpYnV0ZXMuY29weUZyb20oYXR0cnMpOwogICAgICAgICAgICAgICAgIGF0dHJzID0gbVdpbmRvd0F0dHJpYnV0ZXM7CisgICAgICAgICAgICAgICAgaWYgKHZpZXcgaW5zdGFuY2VvZiBSb290Vmlld1N1cmZhY2VUYWtlcikgeworICAgICAgICAgICAgICAgICAgICBtU3VyZmFjZUhvbGRlckNhbGxiYWNrID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFJvb3RWaWV3U3VyZmFjZVRha2VyKXZpZXcpLndpbGxZb3VUYWtlVGhlU3VyZmFjZSgpOworICAgICAgICAgICAgICAgICAgICBpZiAobVN1cmZhY2VIb2xkZXJDYWxsYmFjayAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtU3VyZmFjZUhvbGRlciA9IG5ldyBUYWtlblN1cmZhY2VIb2xkZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1TdXJmYWNlSG9sZGVyLnNldEZvcm1hdChQaXhlbEZvcm1hdC5VTktOT1dOKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBSZXNvdXJjZXMgcmVzb3VyY2VzID0gbVZpZXcuZ2V0Q29udGV4dCgpLmdldFJlc291cmNlcygpOwogICAgICAgICAgICAgICAgIENvbXBhdGliaWxpdHlJbmZvIGNvbXBhdGliaWxpdHlJbmZvID0gcmVzb3VyY2VzLmdldENvbXBhdGliaWxpdHlJbmZvKCk7CiAgICAgICAgICAgICAgICAgbVRyYW5zbGF0b3IgPSBjb21wYXRpYmlsaXR5SW5mby5nZXRUcmFuc2xhdG9yKCk7CkBAIC00NzMsMTMgKzQ5MywxNiBAQAogICAgICAgICAgICAgICAgIC8vIG1hbmFnZXIsIHRvIG1ha2Ugc3VyZSB3ZSBkbyB0aGUgcmVsYXlvdXQgYmVmb3JlIHJlY2VpdmluZwogICAgICAgICAgICAgICAgIC8vIGFueSBvdGhlciBldmVudHMgZnJvbSB0aGUgc3lzdGVtLgogICAgICAgICAgICAgICAgIHJlcXVlc3RMYXlvdXQoKTsKKyAgICAgICAgICAgICAgICBtSW5wdXRDaGFubmVsID0gbmV3IElucHV0Q2hhbm5lbCgpOwogICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgIHJlcyA9IHNXaW5kb3dTZXNzaW9uLmFkZChtV2luZG93LCBtV2luZG93QXR0cmlidXRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRIb3N0VmlzaWJpbGl0eSgpLCBtQXR0YWNoSW5mby5tQ29udGVudEluc2V0cyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0SG9zdFZpc2liaWxpdHkoKSwgbUF0dGFjaEluZm8ubUNvbnRlbnRJbnNldHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUlucHV0Q2hhbm5lbCk7CiAgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKICAgICAgICAgICAgICAgICAgICAgbUFkZGVkID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgIG1WaWV3ID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgbUF0dGFjaEluZm8ubVJvb3RWaWV3ID0gbnVsbDsKKyAgICAgICAgICAgICAgICAgICAgbUlucHV0Q2hhbm5lbCA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgIHVuc2NoZWR1bGVUcmF2ZXJzYWxzKCk7CiAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJBZGRpbmcgd2luZG93IGZhaWxlZCIsIGUpOwogICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CkBAIC00ODcsNyArNTEwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzLnJlc3RvcmUoKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KLQorICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChtVHJhbnNsYXRvciAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgIG1UcmFuc2xhdG9yLnRyYW5zbGF0ZVJlY3RJblNjcmVlblRvQXBwV2luZG93KG1BdHRhY2hJbmZvLm1Db250ZW50SW5zZXRzKTsKICAgICAgICAgICAgICAgICB9CkBAIC01MzMsNiArNTU2LDE5IEBACiAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICAgICAgIlVuYWJsZSB0byBhZGQgd2luZG93IC0tIHVua25vd24gZXJyb3IgY29kZSAiICsgcmVzKTsKICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAodmlldyBpbnN0YW5jZW9mIFJvb3RWaWV3U3VyZmFjZVRha2VyKSB7CisgICAgICAgICAgICAgICAgICAgIG1JbnB1dFF1ZXVlQ2FsbGJhY2sgPQorICAgICAgICAgICAgICAgICAgICAgICAgKChSb290Vmlld1N1cmZhY2VUYWtlcil2aWV3KS53aWxsWW91VGFrZVRoZUlucHV0UXVldWUoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG1JbnB1dFF1ZXVlQ2FsbGJhY2sgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBtSW5wdXRRdWV1ZSA9IG5ldyBJbnB1dFF1ZXVlKG1JbnB1dENoYW5uZWwpOworICAgICAgICAgICAgICAgICAgICBtSW5wdXRRdWV1ZUNhbGxiYWNrLm9uSW5wdXRRdWV1ZUNyZWF0ZWQobUlucHV0UXVldWUpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIElucHV0UXVldWUucmVnaXN0ZXJJbnB1dENoYW5uZWwobUlucHV0Q2hhbm5lbCwgbUlucHV0SGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb29wZXIubXlRdWV1ZSgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgdmlldy5hc3NpZ25QYXJlbnQodGhpcyk7CiAgICAgICAgICAgICAgICAgbUFkZGVkVG91Y2hNb2RlID0gKHJlcyZXaW5kb3dNYW5hZ2VySW1wbC5BRERfRkxBR19JTl9UT1VDSF9NT0RFKSAhPSAwOwogICAgICAgICAgICAgICAgIG1BcHBWaXNpYmxlID0gKHJlcyZXaW5kb3dNYW5hZ2VySW1wbC5BRERfRkxBR19BUFBfVklTSUJMRSkgIT0gMDsKQEAgLTY4Miw2ICs3MTgsNyBAQAogICAgICAgICBib29sZWFuIHdpbmRvd1Jlc2l6ZXNUb0ZpdENvbnRlbnQgPSBmYWxzZTsKICAgICAgICAgYm9vbGVhbiBmdWxsUmVkcmF3TmVlZGVkID0gbUZ1bGxSZWRyYXdOZWVkZWQ7CiAgICAgICAgIGJvb2xlYW4gbmV3U3VyZmFjZSA9IGZhbHNlOworICAgICAgICBib29sZWFuIHN1cmZhY2VDaGFuZ2VkID0gZmFsc2U7CiAgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIGxwID0gbVdpbmRvd0F0dHJpYnV0ZXM7CiAKICAgICAgICAgaW50IGRlc2lyZWRXaW5kb3dXaWR0aDsKQEAgLTcwMCw2ICs3MzcsNyBAQAogICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcyBwYXJhbXMgPSBudWxsOwogICAgICAgICBpZiAobVdpbmRvd0F0dHJpYnV0ZXNDaGFuZ2VkKSB7CiAgICAgICAgICAgICBtV2luZG93QXR0cmlidXRlc0NoYW5nZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIHN1cmZhY2VDaGFuZ2VkID0gdHJ1ZTsKICAgICAgICAgICAgIHBhcmFtcyA9IGxwOwogICAgICAgICB9CiAgICAgICAgIFJlY3QgZnJhbWUgPSBtV2luRnJhbWU7CkBAIC03MTcsNyArNzU1LDcgQEAKICAgICAgICAgICAgIC8vIG9iamVjdCBpcyBub3QgaW5pdGlhbGl6ZWQgdG8gaXRzIGJhY2tpbmcgc3RvcmUsIGJ1dCBzb29uIGl0CiAgICAgICAgICAgICAvLyB3aWxsIGJlIChhc3N1bWluZyB0aGUgd2luZG93IGlzIHZpc2libGUpLgogICAgICAgICAgICAgYXR0YWNoSW5mby5tU3VyZmFjZSA9IG1TdXJmYWNlOwotICAgICAgICAgICAgYXR0YWNoSW5mby5tVHJhbnNsdWNlbnRXaW5kb3cgPSBscC5mb3JtYXQgIT0gUGl4ZWxGb3JtYXQuT1BBUVVFOworICAgICAgICAgICAgYXR0YWNoSW5mby5tVHJhbnNsdWNlbnRXaW5kb3cgPSBQaXhlbEZvcm1hdC5mb3JtYXRIYXNBbHBoYShscC5mb3JtYXQpOwogICAgICAgICAgICAgYXR0YWNoSW5mby5tSGFzV2luZG93Rm9jdXMgPSBmYWxzZTsKICAgICAgICAgICAgIGF0dGFjaEluZm8ubVdpbmRvd1Zpc2liaWxpdHkgPSB2aWV3VmlzaWJpbGl0eTsKICAgICAgICAgICAgIGF0dGFjaEluZm8ubVJlY29tcHV0ZUdsb2JhbEF0dHJpYnV0ZXMgPSBmYWxzZTsKQEAgLTg4NiwxMSArOTI0LDE2IEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCisgICAgICAgICAgICBpZiAobVN1cmZhY2VIb2xkZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIG1TdXJmYWNlSG9sZGVyLm1TdXJmYWNlTG9jay5sb2NrKCk7CisgICAgICAgICAgICAgICAgbURyYXdpbmdBbGxvd2VkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgYm9vbGVhbiBpbml0aWFsaXplZCA9IGZhbHNlOwogICAgICAgICAgICAgYm9vbGVhbiBjb250ZW50SW5zZXRzQ2hhbmdlZCA9IGZhbHNlOwogICAgICAgICAgICAgYm9vbGVhbiB2aXNpYmxlSW5zZXRzQ2hhbmdlZDsKKyAgICAgICAgICAgIGJvb2xlYW4gaGFkU3VyZmFjZSA9IG1TdXJmYWNlLmlzVmFsaWQoKTsKICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgYm9vbGVhbiBoYWRTdXJmYWNlID0gbVN1cmZhY2UuaXNWYWxpZCgpOwogICAgICAgICAgICAgICAgIGludCBmbCA9IDA7CiAgICAgICAgICAgICAgICAgaWYgKHBhcmFtcyAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgIGZsID0gcGFyYW1zLmZsYWdzOwpAQCAtOTY1LDYgKzEwMDgsNyBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChERUJVR19PUklFTlRBVElPTikgTG9nLnYoCiAgICAgICAgICAgICAgICAgICAgICJWaWV3Um9vdCIsICJSZWxheW91dCByZXR1cm5lZDogZnJhbWU9IiArIGZyYW1lICsgIiwgc3VyZmFjZT0iICsgbVN1cmZhY2UpOwogCkBAIC05NzcsNiArMTAyMSw1NyBAQAogICAgICAgICAgICAgbVdpZHRoID0gZnJhbWUud2lkdGgoKTsKICAgICAgICAgICAgIG1IZWlnaHQgPSBmcmFtZS5oZWlnaHQoKTsKIAorICAgICAgICAgICAgaWYgKG1TdXJmYWNlSG9sZGVyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGUgYXBwIG93bnMgdGhlIHN1cmZhY2U7IHRlbGwgaXQgYWJvdXQgd2hhdCBpcyBnb2luZyBvbi4KKyAgICAgICAgICAgICAgICBpZiAobVN1cmZhY2UuaXNWYWxpZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFhYWCAuY29weUZyb20oKSBkb2Vzbid0IHdvcmshCisgICAgICAgICAgICAgICAgICAgIC8vbVN1cmZhY2VIb2xkZXIubVN1cmZhY2UuY29weUZyb20obVN1cmZhY2UpOworICAgICAgICAgICAgICAgICAgICBtU3VyZmFjZUhvbGRlci5tU3VyZmFjZSA9IG1TdXJmYWNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtU3VyZmFjZUhvbGRlci5tU3VyZmFjZUxvY2sudW5sb2NrKCk7CisgICAgICAgICAgICAgICAgaWYgKG1TdXJmYWNlLmlzVmFsaWQoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIWhhZFN1cmZhY2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1TdXJmYWNlSG9sZGVyLnVuZ2V0Q2FsbGJhY2tzKCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIG1Jc0NyZWF0aW5nID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1TdXJmYWNlSG9sZGVyQ2FsbGJhY2suc3VyZmFjZUNyZWF0ZWQobVN1cmZhY2VIb2xkZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgU3VyZmFjZUhvbGRlci5DYWxsYmFjayBjYWxsYmFja3NbXSA9IG1TdXJmYWNlSG9sZGVyLmdldENhbGxiYWNrcygpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbGxiYWNrcyAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChTdXJmYWNlSG9sZGVyLkNhbGxiYWNrIGMgOiBjYWxsYmFja3MpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5zdXJmYWNlQ3JlYXRlZChtU3VyZmFjZUhvbGRlcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgc3VyZmFjZUNoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChzdXJmYWNlQ2hhbmdlZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbVN1cmZhY2VIb2xkZXJDYWxsYmFjay5zdXJmYWNlQ2hhbmdlZChtU3VyZmFjZUhvbGRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHAuZm9ybWF0LCBtV2lkdGgsIG1IZWlnaHQpOworICAgICAgICAgICAgICAgICAgICAgICAgU3VyZmFjZUhvbGRlci5DYWxsYmFjayBjYWxsYmFja3NbXSA9IG1TdXJmYWNlSG9sZGVyLmdldENhbGxiYWNrcygpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbGxiYWNrcyAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChTdXJmYWNlSG9sZGVyLkNhbGxiYWNrIGMgOiBjYWxsYmFja3MpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5zdXJmYWNlQ2hhbmdlZChtU3VyZmFjZUhvbGRlciwgbHAuZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1XaWR0aCwgbUhlaWdodCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIG1Jc0NyZWF0aW5nID0gZmFsc2U7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChoYWRTdXJmYWNlKSB7CisgICAgICAgICAgICAgICAgICAgIG1TdXJmYWNlSG9sZGVyLnVuZ2V0Q2FsbGJhY2tzKCk7CisgICAgICAgICAgICAgICAgICAgIFN1cmZhY2VIb2xkZXIuQ2FsbGJhY2sgY2FsbGJhY2tzW10gPSBtU3VyZmFjZUhvbGRlci5nZXRDYWxsYmFja3MoKTsKKyAgICAgICAgICAgICAgICAgICAgbVN1cmZhY2VIb2xkZXJDYWxsYmFjay5zdXJmYWNlRGVzdHJveWVkKG1TdXJmYWNlSG9sZGVyKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNhbGxiYWNrcyAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKFN1cmZhY2VIb2xkZXIuQ2FsbGJhY2sgYyA6IGNhbGxiYWNrcykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuc3VyZmFjZURlc3Ryb3llZChtU3VyZmFjZUhvbGRlcik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgbVN1cmZhY2VIb2xkZXIubVN1cmZhY2VMb2NrLmxvY2soKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gTWFrZSBzdXJmYWNlIGludmFsaWQuCisgICAgICAgICAgICAgICAgICAgIC8vbVN1cmZhY2VIb2xkZXIubVN1cmZhY2UuY29weUZyb20obVN1cmZhY2UpOworICAgICAgICAgICAgICAgICAgICBtU3VyZmFjZUhvbGRlci5tU3VyZmFjZSA9IG5ldyBTdXJmYWNlKCk7CisgICAgICAgICAgICAgICAgICAgIG1TdXJmYWNlSG9sZGVyLm1TdXJmYWNlTG9jay51bmxvY2soKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKICAgICAgICAgICAgIGlmIChpbml0aWFsaXplZCkgewogICAgICAgICAgICAgICAgIG1HbENhbnZhcy5zZXRWaWV3cG9ydCgoaW50KSAobVdpZHRoICogYXBwU2NhbGUgKyAwLjVmKSwKICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQpIChtSGVpZ2h0ICogYXBwU2NhbGUgKyAwLjVmKSk7CkBAIC0xMjY4LDYgKzEzNjMsMTIgQEAKICAgICAgICAgYm9vbGVhbiBzY2FsaW5nUmVxdWlyZWQgPSBtQXR0YWNoSW5mby5tU2NhbGluZ1JlcXVpcmVkOwogCiAgICAgICAgIFJlY3QgZGlydHkgPSBtRGlydHk7CisgICAgICAgIGlmIChtU3VyZmFjZUhvbGRlciAhPSBudWxsKSB7CisgICAgICAgICAgICAvLyBUaGUgYXBwIG93bnMgdGhlIHN1cmZhY2UsIHdlIHdvbid0IGRyYXcuCisgICAgICAgICAgICBkaXJ0eS5zZXRFbXB0eSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICBpZiAobVVzZUdMKSB7CiAgICAgICAgICAgICBpZiAoIWRpcnR5LmlzRW1wdHkoKSkgewogICAgICAgICAgICAgICAgIENhbnZhcyBjYW52YXMgPSBtR2xDYW52YXM7CkBAIC0xMzMyLDEwMyArMTQzMywxMDUgQEAKICAgICAgICAgICAgICAgICAgICAgYXBwU2NhbGUgKyAiLCB3aWR0aD0iICsgbVdpZHRoICsgIiwgaGVpZ2h0PSIgKyBtSGVpZ2h0KTsKICAgICAgICAgfQogCi0gICAgICAgIENhbnZhcyBjYW52YXM7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBpbnQgbGVmdCA9IGRpcnR5LmxlZnQ7Ci0gICAgICAgICAgICBpbnQgdG9wID0gZGlydHkudG9wOwotICAgICAgICAgICAgaW50IHJpZ2h0ID0gZGlydHkucmlnaHQ7Ci0gICAgICAgICAgICBpbnQgYm90dG9tID0gZGlydHkuYm90dG9tOwotICAgICAgICAgICAgY2FudmFzID0gc3VyZmFjZS5sb2NrQ2FudmFzKGRpcnR5KTsKKyAgICAgICAgaWYgKCFkaXJ0eS5pc0VtcHR5KCkgfHwgbUlzQW5pbWF0aW5nKSB7CisgICAgICAgICAgICBDYW52YXMgY2FudmFzOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBpbnQgbGVmdCA9IGRpcnR5LmxlZnQ7CisgICAgICAgICAgICAgICAgaW50IHRvcCA9IGRpcnR5LnRvcDsKKyAgICAgICAgICAgICAgICBpbnQgcmlnaHQgPSBkaXJ0eS5yaWdodDsKKyAgICAgICAgICAgICAgICBpbnQgYm90dG9tID0gZGlydHkuYm90dG9tOworICAgICAgICAgICAgICAgIGNhbnZhcyA9IHN1cmZhY2UubG9ja0NhbnZhcyhkaXJ0eSk7CiAKLSAgICAgICAgICAgIGlmIChsZWZ0ICE9IGRpcnR5LmxlZnQgfHwgdG9wICE9IGRpcnR5LnRvcCB8fCByaWdodCAhPSBkaXJ0eS5yaWdodCB8fAotICAgICAgICAgICAgICAgICAgICBib3R0b20gIT0gZGlydHkuYm90dG9tKSB7Ci0gICAgICAgICAgICAgICAgbUF0dGFjaEluZm8ubUlnbm9yZURpcnR5U3RhdGUgPSB0cnVlOworICAgICAgICAgICAgICAgIGlmIChsZWZ0ICE9IGRpcnR5LmxlZnQgfHwgdG9wICE9IGRpcnR5LnRvcCB8fCByaWdodCAhPSBkaXJ0eS5yaWdodCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgYm90dG9tICE9IGRpcnR5LmJvdHRvbSkgeworICAgICAgICAgICAgICAgICAgICBtQXR0YWNoSW5mby5tSWdub3JlRGlydHlTdGF0ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gVE9ETzogRG8gdGhpcyBpbiBuYXRpdmUKKyAgICAgICAgICAgICAgICBjYW52YXMuc2V0RGVuc2l0eShtRGVuc2l0eSk7CisgICAgICAgICAgICB9IGNhdGNoIChTdXJmYWNlLk91dE9mUmVzb3VyY2VzRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBMb2cuZSgiVmlld1Jvb3QiLCAiT3V0T2ZSZXNvdXJjZXNFeGNlcHRpb24gbG9ja2luZyBzdXJmYWNlIiwgZSk7CisgICAgICAgICAgICAgICAgLy8gVE9ETzogd2Ugc2hvdWxkIGFzayB0aGUgd2luZG93IG1hbmFnZXIgdG8gZG8gc29tZXRoaW5nIQorICAgICAgICAgICAgICAgIC8vIGZvciBub3cgd2UganVzdCBkbyBub3RoaW5nCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfSBjYXRjaCAoSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBMb2cuZSgiVmlld1Jvb3QiLCAiSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGxvY2tpbmcgc3VyZmFjZSIsIGUpOworICAgICAgICAgICAgICAgIC8vIFRPRE86IHdlIHNob3VsZCBhc2sgdGhlIHdpbmRvdyBtYW5hZ2VyIHRvIGRvIHNvbWV0aGluZyEKKyAgICAgICAgICAgICAgICAvLyBmb3Igbm93IHdlIGp1c3QgZG8gbm90aGluZworICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgLy8gVE9ETzogRG8gdGhpcyBpbiBuYXRpdmUKLSAgICAgICAgICAgIGNhbnZhcy5zZXREZW5zaXR5KG1EZW5zaXR5KTsKLSAgICAgICAgfSBjYXRjaCAoU3VyZmFjZS5PdXRPZlJlc291cmNlc0V4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICBMb2cuZSgiVmlld1Jvb3QiLCAiT3V0T2ZSZXNvdXJjZXNFeGNlcHRpb24gbG9ja2luZyBzdXJmYWNlIiwgZSk7Ci0gICAgICAgICAgICAvLyBUT0RPOiB3ZSBzaG91bGQgYXNrIHRoZSB3aW5kb3cgbWFuYWdlciB0byBkbyBzb21ldGhpbmchCi0gICAgICAgICAgICAvLyBmb3Igbm93IHdlIGp1c3QgZG8gbm90aGluZwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IGNhdGNoIChJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgTG9nLmUoIlZpZXdSb290IiwgIklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBsb2NraW5nIHN1cmZhY2UiLCBlKTsKLSAgICAgICAgICAgIC8vIFRPRE86IHdlIHNob3VsZCBhc2sgdGhlIHdpbmRvdyBtYW5hZ2VyIHRvIGRvIHNvbWV0aGluZyEKLSAgICAgICAgICAgIC8vIGZvciBub3cgd2UganVzdCBkbyBub3RoaW5nCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgaWYgKCFkaXJ0eS5pc0VtcHR5KCkgfHwgbUlzQW5pbWF0aW5nKSB7CisgICAgICAgICAgICAgICAgICAgIGxvbmcgc3RhcnRUaW1lID0gMEw7CiAKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGlmICghZGlydHkuaXNFbXB0eSgpIHx8IG1Jc0FuaW1hdGluZykgewotICAgICAgICAgICAgICAgIGxvbmcgc3RhcnRUaW1lID0gMEw7Ci0KLSAgICAgICAgICAgICAgICBpZiAoREVCVUdfT1JJRU5UQVRJT04gfHwgREVCVUdfRFJBVykgewotICAgICAgICAgICAgICAgICAgICBMb2cudigiVmlld1Jvb3QiLCAiU3VyZmFjZSAiICsgc3VyZmFjZSArICIgZHJhd2luZyB0byBiaXRtYXAgdz0iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBjYW52YXMuZ2V0V2lkdGgoKSArICIsIGg9IiArIGNhbnZhcy5nZXRIZWlnaHQoKSk7Ci0gICAgICAgICAgICAgICAgICAgIC8vY2FudmFzLmRyYXdBUkdCKDI1NSwgMjU1LCAwLCAwKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAoQ29uZmlnLkRFQlVHICYmIFZpZXdEZWJ1Zy5wcm9maWxlRHJhd2luZykgewotICAgICAgICAgICAgICAgICAgICBzdGFydFRpbWUgPSBTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGJpdG1hcCdzIGZvcm1hdCBpbmNsdWRlcyBhbiBhbHBoYSBjaGFubmVsLCB3ZQotICAgICAgICAgICAgICAgIC8vIG5lZWQgdG8gY2xlYXIgaXQgYmVmb3JlIGRyYXdpbmcgc28gdGhhdCB0aGUgY2hpbGQgd2lsbAotICAgICAgICAgICAgICAgIC8vIHByb3Blcmx5IHJlLWNvbXBvc2l0ZSBpdHMgZHJhd2luZyBvbiBhIHRyYW5zcGFyZW50Ci0gICAgICAgICAgICAgICAgLy8gYmFja2dyb3VuZC4gVGhpcyBhdXRvbWF0aWNhbGx5IHJlc3BlY3RzIHRoZSBjbGlwL2RpcnR5IHJlZ2lvbgotICAgICAgICAgICAgICAgIC8vIG9yCi0gICAgICAgICAgICAgICAgLy8gSWYgd2UgYXJlIGFwcGx5aW5nIGFuIG9mZnNldCwgd2UgbmVlZCB0byBjbGVhciB0aGUgYXJlYQotICAgICAgICAgICAgICAgIC8vIHdoZXJlIHRoZSBvZmZzZXQgZG9lc24ndCBhcHBlYXIgdG8gYXZvaWQgaGF2aW5nIGdhcmJhZ2UKLSAgICAgICAgICAgICAgICAvLyBsZWZ0IGluIHRoZSBibGFuayBhcmVhcy4KLSAgICAgICAgICAgICAgICBpZiAoIWNhbnZhcy5pc09wYXF1ZSgpIHx8IHlvZmYgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICBjYW52YXMuZHJhd0NvbG9yKDAsIFBvcnRlckR1ZmYuTW9kZS5DTEVBUik7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgZGlydHkuc2V0RW1wdHkoKTsKLSAgICAgICAgICAgICAgICBtSXNBbmltYXRpbmcgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBtQXR0YWNoSW5mby5tRHJhd2luZ1RpbWUgPSBTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKTsKLSAgICAgICAgICAgICAgICBtVmlldy5tUHJpdmF0ZUZsYWdzIHw9IFZpZXcuRFJBV047Ci0KLSAgICAgICAgICAgICAgICBpZiAoREVCVUdfRFJBVykgewotICAgICAgICAgICAgICAgICAgICBDb250ZXh0IGN4dCA9IG1WaWV3LmdldENvbnRleHQoKTsKLSAgICAgICAgICAgICAgICAgICAgTG9nLmkoVEFHLCAiRHJhd2luZzogcGFja2FnZToiICsgY3h0LmdldFBhY2thZ2VOYW1lKCkgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICIsIG1ldHJpY3M9IiArIGN4dC5nZXRSZXNvdXJjZXMoKS5nZXREaXNwbGF5TWV0cmljcygpICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLCBjb21wYXRpYmlsaXR5SW5mbz0iICsgY3h0LmdldFJlc291cmNlcygpLmdldENvbXBhdGliaWxpdHlJbmZvKCkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpbnQgc2F2ZUNvdW50ID0gY2FudmFzLnNhdmUoQ2FudmFzLk1BVFJJWF9TQVZFX0ZMQUcpOwotICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhbnZhcy50cmFuc2xhdGUoMCwgLXlvZmYpOwotICAgICAgICAgICAgICAgICAgICBpZiAobVRyYW5zbGF0b3IgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgbVRyYW5zbGF0b3IudHJhbnNsYXRlQ2FudmFzKGNhbnZhcyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19PUklFTlRBVElPTiB8fCBERUJVR19EUkFXKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBMb2cudigiVmlld1Jvb3QiLCAiU3VyZmFjZSAiICsgc3VyZmFjZSArICIgZHJhd2luZyB0byBiaXRtYXAgdz0iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgY2FudmFzLmdldFdpZHRoKCkgKyAiLCBoPSIgKyBjYW52YXMuZ2V0SGVpZ2h0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgLy9jYW52YXMuZHJhd0FSR0IoMjU1LCAyNTUsIDAsIDApOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGNhbnZhcy5zZXRTY3JlZW5EZW5zaXR5KHNjYWxpbmdSZXF1aXJlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gRGlzcGxheU1ldHJpY3MuREVOU0lUWV9ERVZJQ0UgOiAwKTsKLSAgICAgICAgICAgICAgICAgICAgbVZpZXcuZHJhdyhjYW52YXMpOwotICAgICAgICAgICAgICAgIH0gZmluYWxseSB7Ci0gICAgICAgICAgICAgICAgICAgIG1BdHRhY2hJbmZvLm1JZ25vcmVEaXJ0eVN0YXRlID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgIGNhbnZhcy5yZXN0b3JlVG9Db3VudChzYXZlQ291bnQpOwotICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIGlmIChDb25maWcuREVCVUcgJiYgVmlld0RlYnVnLmNvbnNpc3RlbmN5Q2hlY2tFbmFibGVkKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1WaWV3LmRpc3BhdGNoQ29uc2lzdGVuY3lDaGVjayhWaWV3RGVidWcuQ09OU0lTVEVOQ1lfRFJBV0lORyk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKFNIT1dfRlBTIHx8IENvbmZpZy5ERUJVRyAmJiBWaWV3RGVidWcuc2hvd0ZwcykgewotICAgICAgICAgICAgICAgICAgICBpbnQgbm93ID0gKGludClTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNEcmF3VGltZSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVTaG93RlBTKGNhbnZhcywgbm93IC0gc0RyYXdUaW1lKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKENvbmZpZy5ERUJVRyAmJiBWaWV3RGVidWcucHJvZmlsZURyYXdpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0VGltZSA9IFN5c3RlbUNsb2NrLmVsYXBzZWRSZWFsdGltZSgpOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHNEcmF3VGltZSA9IG5vdzsKKworICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGJpdG1hcCdzIGZvcm1hdCBpbmNsdWRlcyBhbiBhbHBoYSBjaGFubmVsLCB3ZQorICAgICAgICAgICAgICAgICAgICAvLyBuZWVkIHRvIGNsZWFyIGl0IGJlZm9yZSBkcmF3aW5nIHNvIHRoYXQgdGhlIGNoaWxkIHdpbGwKKyAgICAgICAgICAgICAgICAgICAgLy8gcHJvcGVybHkgcmUtY29tcG9zaXRlIGl0cyBkcmF3aW5nIG9uIGEgdHJhbnNwYXJlbnQKKyAgICAgICAgICAgICAgICAgICAgLy8gYmFja2dyb3VuZC4gVGhpcyBhdXRvbWF0aWNhbGx5IHJlc3BlY3RzIHRoZSBjbGlwL2RpcnR5IHJlZ2lvbgorICAgICAgICAgICAgICAgICAgICAvLyBvcgorICAgICAgICAgICAgICAgICAgICAvLyBJZiB3ZSBhcmUgYXBwbHlpbmcgYW4gb2Zmc2V0LCB3ZSBuZWVkIHRvIGNsZWFyIHRoZSBhcmVhCisgICAgICAgICAgICAgICAgICAgIC8vIHdoZXJlIHRoZSBvZmZzZXQgZG9lc24ndCBhcHBlYXIgdG8gYXZvaWQgaGF2aW5nIGdhcmJhZ2UKKyAgICAgICAgICAgICAgICAgICAgLy8gbGVmdCBpbiB0aGUgYmxhbmsgYXJlYXMuCisgICAgICAgICAgICAgICAgICAgIGlmICghY2FudmFzLmlzT3BhcXVlKCkgfHwgeW9mZiAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYW52YXMuZHJhd0NvbG9yKDAsIFBvcnRlckR1ZmYuTW9kZS5DTEVBUik7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBkaXJ0eS5zZXRFbXB0eSgpOworICAgICAgICAgICAgICAgICAgICBtSXNBbmltYXRpbmcgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgbUF0dGFjaEluZm8ubURyYXdpbmdUaW1lID0gU3lzdGVtQ2xvY2sudXB0aW1lTWlsbGlzKCk7CisgICAgICAgICAgICAgICAgICAgIG1WaWV3Lm1Qcml2YXRlRmxhZ3MgfD0gVmlldy5EUkFXTjsKKworICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfRFJBVykgeworICAgICAgICAgICAgICAgICAgICAgICAgQ29udGV4dCBjeHQgPSBtVmlldy5nZXRDb250ZXh0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBMb2cuaShUQUcsICJEcmF3aW5nOiBwYWNrYWdlOiIgKyBjeHQuZ2V0UGFja2FnZU5hbWUoKSArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIsIG1ldHJpY3M9IiArIGN4dC5nZXRSZXNvdXJjZXMoKS5nZXREaXNwbGF5TWV0cmljcygpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiwgY29tcGF0aWJpbGl0eUluZm89IiArIGN4dC5nZXRSZXNvdXJjZXMoKS5nZXRDb21wYXRpYmlsaXR5SW5mbygpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpbnQgc2F2ZUNvdW50ID0gY2FudmFzLnNhdmUoQ2FudmFzLk1BVFJJWF9TQVZFX0ZMQUcpOworICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzLnRyYW5zbGF0ZSgwLCAteW9mZik7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobVRyYW5zbGF0b3IgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1UcmFuc2xhdG9yLnRyYW5zbGF0ZUNhbnZhcyhjYW52YXMpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzLnNldFNjcmVlbkRlbnNpdHkoc2NhbGluZ1JlcXVpcmVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gRGlzcGxheU1ldHJpY3MuREVOU0lUWV9ERVZJQ0UgOiAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1WaWV3LmRyYXcoY2FudmFzKTsKKyAgICAgICAgICAgICAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1BdHRhY2hJbmZvLm1JZ25vcmVEaXJ0eVN0YXRlID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBjYW52YXMucmVzdG9yZVRvQ291bnQoc2F2ZUNvdW50KTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGlmIChDb25maWcuREVCVUcgJiYgVmlld0RlYnVnLmNvbnNpc3RlbmN5Q2hlY2tFbmFibGVkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtVmlldy5kaXNwYXRjaENvbnNpc3RlbmN5Q2hlY2soVmlld0RlYnVnLkNPTlNJU1RFTkNZX0RSQVdJTkcpOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKFNIT1dfRlBTIHx8IENvbmZpZy5ERUJVRyAmJiBWaWV3RGVidWcuc2hvd0ZwcykgeworICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5vdyA9IChpbnQpU3lzdGVtQ2xvY2suZWxhcHNlZFJlYWx0aW1lKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc0RyYXdUaW1lICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXRpdmVTaG93RlBTKGNhbnZhcywgbm93IC0gc0RyYXdUaW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNEcmF3VGltZSA9IG5vdzsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGlmIChDb25maWcuREVCVUcgJiYgVmlld0RlYnVnLnByb2ZpbGVEcmF3aW5nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBFdmVudExvZy53cml0ZUV2ZW50KDYwMDAwLCBTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKSAtIHN0YXJ0VGltZSk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBpZiAoQ29uZmlnLkRFQlVHICYmIFZpZXdEZWJ1Zy5wcm9maWxlRHJhd2luZykgewotICAgICAgICAgICAgICAgICAgICBFdmVudExvZy53cml0ZUV2ZW50KDYwMDAwLCBTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKSAtIHN0YXJ0VGltZSk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgICAgICBzdXJmYWNlLnVubG9ja0NhbnZhc0FuZFBvc3QoY2FudmFzKTsKICAgICAgICAgICAgIH0KLQotICAgICAgICB9IGZpbmFsbHkgewotICAgICAgICAgICAgc3VyZmFjZS51bmxvY2tDYW52YXNBbmRQb3N0KGNhbnZhcyk7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoTE9DQUxfTE9HVikgewpAQCAtMTYzOSwxMCArMTc0MiwyNiBAQAogICAgICAgICB9CiAgICAgICAgIG1TdXJmYWNlLnJlbGVhc2UoKTsKIAorICAgICAgICBpZiAobUlucHV0Q2hhbm5lbCAhPSBudWxsKSB7CisgICAgICAgICAgICBpZiAobUlucHV0UXVldWVDYWxsYmFjayAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgbUlucHV0UXVldWVDYWxsYmFjay5vbklucHV0UXVldWVEZXN0cm95ZWQobUlucHV0UXVldWUpOworICAgICAgICAgICAgICAgIG1JbnB1dFF1ZXVlQ2FsbGJhY2sgPSBudWxsOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBJbnB1dFF1ZXVlLnVucmVnaXN0ZXJJbnB1dENoYW5uZWwobUlucHV0Q2hhbm5lbCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBzV2luZG93U2Vzc2lvbi5yZW1vdmUobVdpbmRvdyk7CiAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIERpc3Bvc2UgdGhlIGlucHV0IGNoYW5uZWwgYWZ0ZXIgcmVtb3ZpbmcgdGhlIHdpbmRvdyBzbyB0aGUgV2luZG93IE1hbmFnZXIKKyAgICAgICAgLy8gZG9lc24ndCBpbnRlcnByZXQgdGhlIGlucHV0IGNoYW5uZWwgYmVpbmcgY2xvc2VkIGFzIGFuIGFibm9ybWFsIHRlcm1pbmF0aW9uLgorICAgICAgICBpZiAobUlucHV0Q2hhbm5lbCAhPSBudWxsKSB7CisgICAgICAgICAgICBtSW5wdXRDaGFubmVsLmRpc3Bvc2UoKTsKKyAgICAgICAgICAgIG1JbnB1dENoYW5uZWwgPSBudWxsOworICAgICAgICB9CiAgICAgfQogCiAgICAgdm9pZCB1cGRhdGVDb25maWd1cmF0aW9uKENvbmZpZ3VyYXRpb24gY29uZmlnLCBib29sZWFuIGZvcmNlKSB7CkBAIC0xNzQxLDExMyArMTg2MCwyMiBAQAogICAgICAgICAgICAgZGVsaXZlcktleUV2ZW50KChLZXlFdmVudCltc2cub2JqLCB0cnVlKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIERJU1BBVENIX1BPSU5URVI6IHsKLSAgICAgICAgICAgIE1vdGlvbkV2ZW50IGV2ZW50ID0gKE1vdGlvbkV2ZW50KW1zZy5vYmo7Ci0gICAgICAgICAgICBib29sZWFuIGNhbGxXaGVuRG9uZSA9IG1zZy5hcmcxICE9IDA7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChldmVudCA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgbG9uZyB0aW1lQmVmb3JlR2V0dGluZ0V2ZW50czsKLSAgICAgICAgICAgICAgICAgICAgaWYgKE1FQVNVUkVfTEFURU5DWSkgewotICAgICAgICAgICAgICAgICAgICAgICAgdGltZUJlZm9yZUdldHRpbmdFdmVudHMgPSBTeXN0ZW0ubmFub1RpbWUoKTsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGV2ZW50ID0gc1dpbmRvd1Nlc3Npb24uZ2V0UGVuZGluZ1BvaW50ZXJNb3ZlKG1XaW5kb3cpOwotCi0gICAgICAgICAgICAgICAgICAgIGlmIChNRUFTVVJFX0xBVEVOQ1kgJiYgZXZlbnQgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgbHQuc2FtcGxlKCI5IENsaWVudCBnb3QgZXZlbnRzICAgICAgIiwgU3lzdGVtLm5hbm9UaW1lKCkgLSBldmVudC5nZXRFdmVudFRpbWVOYW5vKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgbHQuc2FtcGxlKCI4IENsaWVudCBnZXR0aW5nIGV2ZW50cyAgIiwgdGltZUJlZm9yZUdldHRpbmdFdmVudHMgLSBldmVudC5nZXRFdmVudFRpbWVOYW5vKCkpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY2FsbFdoZW5Eb25lID0gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoZXZlbnQgIT0gbnVsbCAmJiBtVHJhbnNsYXRvciAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgbVRyYW5zbGF0b3IudHJhbnNsYXRlRXZlbnRJblNjcmVlblRvQXBwV2luZG93KGV2ZW50KTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIE1vdGlvbkV2ZW50IGV2ZW50ID0gKE1vdGlvbkV2ZW50KSBtc2cub2JqOwogICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBib29sZWFuIGhhbmRsZWQ7Ci0gICAgICAgICAgICAgICAgaWYgKG1WaWV3ICE9IG51bGwgJiYgbUFkZGVkICYmIGV2ZW50ICE9IG51bGwpIHsKLQotICAgICAgICAgICAgICAgICAgICAvLyBlbnRlciB0b3VjaCBtb2RlIG9uIHRoZSBkb3duCi0gICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gaXNEb3duID0gZXZlbnQuZ2V0QWN0aW9uKCkgPT0gTW90aW9uRXZlbnQuQUNUSU9OX0RPV047Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpc0Rvd24pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVuc3VyZVRvdWNoTW9kZSh0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZihDb25maWcuTE9HVikgewotICAgICAgICAgICAgICAgICAgICAgICAgY2FwdHVyZU1vdGlvbkxvZygiY2FwdHVyZURpc3BhdGNoUG9pbnRlciIsIGV2ZW50KTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAobUN1clNjcm9sbFkgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQub2Zmc2V0TG9jYXRpb24oMCwgbUN1clNjcm9sbFkpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmIChNRUFTVVJFX0xBVEVOQ1kpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGx0LnNhbXBsZSgiQSBEaXNwYXRjaGluZyBUb3VjaEV2ZW50cyIsIFN5c3RlbS5uYW5vVGltZSgpIC0gZXZlbnQuZ2V0RXZlbnRUaW1lTmFubygpKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBoYW5kbGVkID0gbVZpZXcuZGlzcGF0Y2hUb3VjaEV2ZW50KGV2ZW50KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKE1FQVNVUkVfTEFURU5DWSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbHQuc2FtcGxlKCJCIERpc3BhdGNoZWQgVG91Y2hFdmVudHMgIiwgU3lzdGVtLm5hbm9UaW1lKCkgLSBldmVudC5nZXRFdmVudFRpbWVOYW5vKCkpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmICghaGFuZGxlZCAmJiBpc0Rvd24pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBlZGdlU2xvcCA9IG1WaWV3Q29uZmlndXJhdGlvbi5nZXRTY2FsZWRFZGdlU2xvcCgpOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBpbnQgZWRnZUZsYWdzID0gZXZlbnQuZ2V0RWRnZUZsYWdzKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGlyZWN0aW9uID0gVmlldy5GT0NVU19VUDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCB4ID0gKGludClldmVudC5nZXRYKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgeSA9IChpbnQpZXZlbnQuZ2V0WSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgaW50W10gZGVsdGFzID0gbmV3IGludFsyXTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChlZGdlRmxhZ3MgJiBNb3Rpb25FdmVudC5FREdFX1RPUCkgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbiA9IFZpZXcuRk9DVVNfRE9XTjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGVkZ2VGbGFncyAmIE1vdGlvbkV2ZW50LkVER0VfTEVGVCkgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWx0YXNbMF0gPSBlZGdlU2xvcDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCArPSBlZGdlU2xvcDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKChlZGdlRmxhZ3MgJiBNb3Rpb25FdmVudC5FREdFX1JJR0hUKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbHRhc1swXSA9IC1lZGdlU2xvcDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeCAtPSBlZGdlU2xvcDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKChlZGdlRmxhZ3MgJiBNb3Rpb25FdmVudC5FREdFX0JPVFRPTSkgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbiA9IFZpZXcuRk9DVVNfVVA7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChlZGdlRmxhZ3MgJiBNb3Rpb25FdmVudC5FREdFX0xFRlQpICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsdGFzWzBdID0gZWRnZVNsb3A7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggKz0gZWRnZVNsb3A7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgoZWRnZUZsYWdzICYgTW90aW9uRXZlbnQuRURHRV9SSUdIVCkgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWx0YXNbMF0gPSAtZWRnZVNsb3A7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggLT0gZWRnZVNsb3A7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgoZWRnZUZsYWdzICYgTW90aW9uRXZlbnQuRURHRV9MRUZUKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlyZWN0aW9uID0gVmlldy5GT0NVU19SSUdIVDsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoKGVkZ2VGbGFncyAmIE1vdGlvbkV2ZW50LkVER0VfUklHSFQpICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb24gPSBWaWV3LkZPQ1VTX0xFRlQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChlZGdlRmxhZ3MgIT0gMCAmJiBtVmlldyBpbnN0YW5jZW9mIFZpZXdHcm91cCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpZXcgbmVhcmVzdCA9IEZvY3VzRmluZGVyLmdldEluc3RhbmNlKCkuZmluZE5lYXJlc3RUb3VjaGFibGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKFZpZXdHcm91cCkgbVZpZXcpLCB4LCB5LCBkaXJlY3Rpb24sIGRlbHRhcyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG5lYXJlc3QgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5vZmZzZXRMb2NhdGlvbihkZWx0YXNbMF0sIGRlbHRhc1sxXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LnNldEVkZ2VGbGFncygwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVZpZXcuZGlzcGF0Y2hUb3VjaEV2ZW50KGV2ZW50KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVsaXZlclBvaW50ZXJFdmVudChldmVudCk7CiAgICAgICAgICAgICB9IGZpbmFsbHkgewotICAgICAgICAgICAgICAgIGlmIChjYWxsV2hlbkRvbmUpIHsKLSAgICAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNXaW5kb3dTZXNzaW9uLmZpbmlzaEtleShtV2luZG93KTsKLSAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoZXZlbnQgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICBldmVudC5yZWN5Y2xlKCk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGV2ZW50LnJlY3ljbGUoKTsKICAgICAgICAgICAgICAgICBpZiAoTE9DQUxfTE9HViB8fCBXQVRDSF9QT0lOVEVSKSBMb2cuaShUQUcsICJEb25lIGRpc3BhdGNoaW5nISIpOwotICAgICAgICAgICAgICAgIC8vIExldCB0aGUgZXhjZXB0aW9uIGZhbGwgdGhyb3VnaCAtLSB0aGUgbG9vcGVyIHdpbGwgY2F0Y2gKLSAgICAgICAgICAgICAgICAvLyBpdCBhbmQgdGFrZSBjYXJlIG9mIHRoZSBiYWQgYXBwIGZvciB1cy4KICAgICAgICAgICAgIH0KICAgICAgICAgfSBicmVhazsKLSAgICAgICAgY2FzZSBESVNQQVRDSF9UUkFDS0JBTEw6Ci0gICAgICAgICAgICBkZWxpdmVyVHJhY2tiYWxsRXZlbnQoKE1vdGlvbkV2ZW50KW1zZy5vYmosIG1zZy5hcmcxICE9IDApOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRElTUEFUQ0hfVFJBQ0tCQUxMOiB7CisgICAgICAgICAgICBNb3Rpb25FdmVudCBldmVudCA9IChNb3Rpb25FdmVudCkgbXNnLm9iajsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgZGVsaXZlclRyYWNrYmFsbEV2ZW50KGV2ZW50KTsKKyAgICAgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICAgICAgZXZlbnQucmVjeWNsZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9IGJyZWFrOwogICAgICAgICBjYXNlIERJU1BBVENIX0FQUF9WSVNJQklMSVRZOgogICAgICAgICAgICAgaGFuZGxlQXBwVmlzaWJpbGl0eShtc2cuYXJnMSAhPSAwKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTk3OSw3ICsyMDA3LDE0IEBACiAgICAgICAgIH0gYnJlYWs7CiAgICAgICAgIH0KICAgICB9Ci0KKyAgICAKKyAgICBwcml2YXRlIHZvaWQgZmluaXNoS2V5RXZlbnQoS2V5RXZlbnQgZXZlbnQpIHsKKyAgICAgICAgaWYgKG1GaW5pc2hlZENhbGxiYWNrICE9IG51bGwpIHsKKyAgICAgICAgICAgIG1GaW5pc2hlZENhbGxiYWNrLnJ1bigpOworICAgICAgICAgICAgbUZpbmlzaGVkQ2FsbGJhY2sgPSBudWxsOworICAgICAgICB9CisgICAgfQorICAgIAogICAgIC8qKgogICAgICAqIFNvbWV0aGluZyBpbiB0aGUgY3VycmVudCB3aW5kb3cgdGVsbHMgdXMgd2UgbmVlZCB0byBjaGFuZ2UgdGhlIHRvdWNoIG1vZGUuICBGb3IKICAgICAgKiBleGFtcGxlLCB3ZSBhcmUgbm90IGluIHRvdWNoIG1vZGUsIGFuZCB0aGUgdXNlciB0b3VjaGVzIHRoZSBzY3JlZW4uCkBAIC0yMTAxLDUwICsyMTM2LDk1IEBACiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLQotICAgIHByaXZhdGUgdm9pZCBkZWxpdmVyVHJhY2tiYWxsRXZlbnQoTW90aW9uRXZlbnQgZXZlbnQsIGJvb2xlYW4gY2FsbFdoZW5Eb25lKSB7Ci0gICAgICAgIGlmIChldmVudCA9PSBudWxsKSB7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIGV2ZW50ID0gc1dpbmRvd1Nlc3Npb24uZ2V0UGVuZGluZ1RyYWNrYmFsbE1vdmUobVdpbmRvdyk7Ci0gICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FsbFdoZW5Eb25lID0gZmFsc2U7CisgICAgcHJpdmF0ZSB2b2lkIGRlbGl2ZXJQb2ludGVyRXZlbnQoTW90aW9uRXZlbnQgZXZlbnQpIHsKKyAgICAgICAgaWYgKG1UcmFuc2xhdG9yICE9IG51bGwpIHsKKyAgICAgICAgICAgIG1UcmFuc2xhdG9yLnRyYW5zbGF0ZUV2ZW50SW5TY3JlZW5Ub0FwcFdpbmRvdyhldmVudCk7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGJvb2xlYW4gaGFuZGxlZDsKKyAgICAgICAgaWYgKG1WaWV3ICE9IG51bGwgJiYgbUFkZGVkKSB7CiAKKyAgICAgICAgICAgIC8vIGVudGVyIHRvdWNoIG1vZGUgb24gdGhlIGRvd24KKyAgICAgICAgICAgIGJvb2xlYW4gaXNEb3duID0gZXZlbnQuZ2V0QWN0aW9uKCkgPT0gTW90aW9uRXZlbnQuQUNUSU9OX0RPV047CisgICAgICAgICAgICBpZiAoaXNEb3duKSB7CisgICAgICAgICAgICAgICAgZW5zdXJlVG91Y2hNb2RlKHRydWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYoQ29uZmlnLkxPR1YpIHsKKyAgICAgICAgICAgICAgICBjYXB0dXJlTW90aW9uTG9nKCJjYXB0dXJlRGlzcGF0Y2hQb2ludGVyIiwgZXZlbnQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1DdXJTY3JvbGxZICE9IDApIHsKKyAgICAgICAgICAgICAgICBldmVudC5vZmZzZXRMb2NhdGlvbigwLCBtQ3VyU2Nyb2xsWSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoTUVBU1VSRV9MQVRFTkNZKSB7CisgICAgICAgICAgICAgICAgbHQuc2FtcGxlKCJBIERpc3BhdGNoaW5nIFRvdWNoRXZlbnRzIiwgU3lzdGVtLm5hbm9UaW1lKCkgLSBldmVudC5nZXRFdmVudFRpbWVOYW5vKCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaGFuZGxlZCA9IG1WaWV3LmRpc3BhdGNoVG91Y2hFdmVudChldmVudCk7CisgICAgICAgICAgICBpZiAoTUVBU1VSRV9MQVRFTkNZKSB7CisgICAgICAgICAgICAgICAgbHQuc2FtcGxlKCJCIERpc3BhdGNoZWQgVG91Y2hFdmVudHMgIiwgU3lzdGVtLm5hbm9UaW1lKCkgLSBldmVudC5nZXRFdmVudFRpbWVOYW5vKCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFoYW5kbGVkICYmIGlzRG93bikgeworICAgICAgICAgICAgICAgIGludCBlZGdlU2xvcCA9IG1WaWV3Q29uZmlndXJhdGlvbi5nZXRTY2FsZWRFZGdlU2xvcCgpOworCisgICAgICAgICAgICAgICAgZmluYWwgaW50IGVkZ2VGbGFncyA9IGV2ZW50LmdldEVkZ2VGbGFncygpOworICAgICAgICAgICAgICAgIGludCBkaXJlY3Rpb24gPSBWaWV3LkZPQ1VTX1VQOworICAgICAgICAgICAgICAgIGludCB4ID0gKGludClldmVudC5nZXRYKCk7CisgICAgICAgICAgICAgICAgaW50IHkgPSAoaW50KWV2ZW50LmdldFkoKTsKKyAgICAgICAgICAgICAgICBmaW5hbCBpbnRbXSBkZWx0YXMgPSBuZXcgaW50WzJdOworCisgICAgICAgICAgICAgICAgaWYgKChlZGdlRmxhZ3MgJiBNb3Rpb25FdmVudC5FREdFX1RPUCkgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb24gPSBWaWV3LkZPQ1VTX0RPV047CisgICAgICAgICAgICAgICAgICAgIGlmICgoZWRnZUZsYWdzICYgTW90aW9uRXZlbnQuRURHRV9MRUZUKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWx0YXNbMF0gPSBlZGdlU2xvcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHggKz0gZWRnZVNsb3A7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoKGVkZ2VGbGFncyAmIE1vdGlvbkV2ZW50LkVER0VfUklHSFQpICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlbHRhc1swXSA9IC1lZGdlU2xvcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHggLT0gZWRnZVNsb3A7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKChlZGdlRmxhZ3MgJiBNb3Rpb25FdmVudC5FREdFX0JPVFRPTSkgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb24gPSBWaWV3LkZPQ1VTX1VQOworICAgICAgICAgICAgICAgICAgICBpZiAoKGVkZ2VGbGFncyAmIE1vdGlvbkV2ZW50LkVER0VfTEVGVCkgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZGVsdGFzWzBdID0gZWRnZVNsb3A7CisgICAgICAgICAgICAgICAgICAgICAgICB4ICs9IGVkZ2VTbG9wOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKChlZGdlRmxhZ3MgJiBNb3Rpb25FdmVudC5FREdFX1JJR0hUKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBkZWx0YXNbMF0gPSAtZWRnZVNsb3A7CisgICAgICAgICAgICAgICAgICAgICAgICB4IC09IGVkZ2VTbG9wOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgoZWRnZUZsYWdzICYgTW90aW9uRXZlbnQuRURHRV9MRUZUKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGRpcmVjdGlvbiA9IFZpZXcuRk9DVVNfUklHSFQ7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgoZWRnZUZsYWdzICYgTW90aW9uRXZlbnQuRURHRV9SSUdIVCkgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICBkaXJlY3Rpb24gPSBWaWV3LkZPQ1VTX0xFRlQ7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKGVkZ2VGbGFncyAhPSAwICYmIG1WaWV3IGluc3RhbmNlb2YgVmlld0dyb3VwKSB7CisgICAgICAgICAgICAgICAgICAgIFZpZXcgbmVhcmVzdCA9IEZvY3VzRmluZGVyLmdldEluc3RhbmNlKCkuZmluZE5lYXJlc3RUb3VjaGFibGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChWaWV3R3JvdXApIG1WaWV3KSwgeCwgeSwgZGlyZWN0aW9uLCBkZWx0YXMpOworICAgICAgICAgICAgICAgICAgICBpZiAobmVhcmVzdCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5vZmZzZXRMb2NhdGlvbihkZWx0YXNbMF0sIGRlbHRhc1sxXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5zZXRFZGdlRmxhZ3MoMCk7CisgICAgICAgICAgICAgICAgICAgICAgICBtVmlldy5kaXNwYXRjaFRvdWNoRXZlbnQoZXZlbnQpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGRlbGl2ZXJUcmFja2JhbGxFdmVudChNb3Rpb25FdmVudCBldmVudCkgewogICAgICAgICBpZiAoREVCVUdfVFJBQ0tCQUxMKSBMb2cudihUQUcsICJNb3Rpb24gZXZlbnQ6IiArIGV2ZW50KTsKIAogICAgICAgICBib29sZWFuIGhhbmRsZWQgPSBmYWxzZTsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGlmIChldmVudCA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgaGFuZGxlZCA9IHRydWU7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKG1WaWV3ICE9IG51bGwgJiYgbUFkZGVkKSB7Ci0gICAgICAgICAgICAgICAgaGFuZGxlZCA9IG1WaWV3LmRpc3BhdGNoVHJhY2tiYWxsRXZlbnQoZXZlbnQpOwotICAgICAgICAgICAgICAgIGlmICghaGFuZGxlZCkgewotICAgICAgICAgICAgICAgICAgICAvLyB3ZSBjb3VsZCBkbyBzb21ldGhpbmcgaGVyZSwgbGlrZSBjaGFuZ2luZyB0aGUgZm9jdXMKLSAgICAgICAgICAgICAgICAgICAgLy8gb3Igc29tZXRoaW5nPwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgaWYgKG1WaWV3ICE9IG51bGwgJiYgbUFkZGVkKSB7CisgICAgICAgICAgICBoYW5kbGVkID0gbVZpZXcuZGlzcGF0Y2hUcmFja2JhbGxFdmVudChldmVudCk7CiAgICAgICAgICAgICBpZiAoaGFuZGxlZCkgewotICAgICAgICAgICAgICAgIGlmIChjYWxsV2hlbkRvbmUpIHsKLSAgICAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNXaW5kb3dTZXNzaW9uLmZpbmlzaEtleShtV2luZG93KTsKLSAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoZXZlbnQgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICBldmVudC5yZWN5Y2xlKCk7Ci0gICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIC8vIElmIHdlIHJlYWNoIHRoaXMsIHdlIGRlbGl2ZXJlZCBhIHRyYWNrYmFsbCBldmVudCB0byBtVmlldyBhbmQKICAgICAgICAgICAgICAgICAvLyBtVmlldyBjb25zdW1lZCBpdC4gQmVjYXVzZSB3ZSB3aWxsIG5vdCB0cmFuc2xhdGUgdGhlIHRyYWNrYmFsbAogICAgICAgICAgICAgICAgIC8vIGV2ZW50IGludG8gYSBrZXkgZXZlbnQsIHRvdWNoIG1vZGUgd2lsbCBub3QgZXhpdCwgc28gd2UgZXhpdAogICAgICAgICAgICAgICAgIC8vIHRvdWNoIG1vZGUgaGVyZS4KICAgICAgICAgICAgICAgICBlbnN1cmVUb3VjaE1vZGUoZmFsc2UpOwotICAgICAgICAgICAgICAgIC8vbm9pbnNwZWN0aW9uIFJldHVybkluc2lkZUZpbmFsbHlCbG9jawogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIExldCB0aGUgZXhjZXB0aW9uIGZhbGwgdGhyb3VnaCAtLSB0aGUgbG9vcGVyIHdpbGwgY2F0Y2gKLSAgICAgICAgICAgIC8vIGl0IGFuZCB0YWtlIGNhcmUgb2YgdGhlIGJhZCBhcHAgZm9yIHVzLgorICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBPdGhlcndpc2Ugd2UgY291bGQgZG8gc29tZXRoaW5nIGhlcmUsIGxpa2UgY2hhbmdpbmcgdGhlIGZvY3VzCisgICAgICAgICAgICAvLyBvciBzb21ldGhpbmc/CiAgICAgICAgIH0KIAogICAgICAgICBmaW5hbCBUcmFja2JhbGxBeGlzIHggPSBtVHJhY2tiYWxsQXhpc1g7CkBAIC0yMTU5LDEwMCArMjIzOSw4NiBAQAogICAgICAgICAgICAgbUxhc3RUcmFja2JhbGxUaW1lID0gY3VyVGltZTsKICAgICAgICAgfQogCi0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBmaW5hbCBpbnQgYWN0aW9uID0gZXZlbnQuZ2V0QWN0aW9uKCk7Ci0gICAgICAgICAgICBmaW5hbCBpbnQgbWV0YXN0YXRlID0gZXZlbnQuZ2V0TWV0YVN0YXRlKCk7Ci0gICAgICAgICAgICBzd2l0Y2ggKGFjdGlvbikgewotICAgICAgICAgICAgICAgIGNhc2UgTW90aW9uRXZlbnQuQUNUSU9OX0RPV046Ci0gICAgICAgICAgICAgICAgICAgIHgucmVzZXQoMik7Ci0gICAgICAgICAgICAgICAgICAgIHkucmVzZXQoMik7Ci0gICAgICAgICAgICAgICAgICAgIGRlbGl2ZXJLZXlFdmVudChuZXcgS2V5RXZlbnQoY3VyVGltZSwgY3VyVGltZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBLZXlFdmVudC5BQ1RJT05fRE9XTiwgS2V5RXZlbnQuS0VZQ09ERV9EUEFEX0NFTlRFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBtZXRhc3RhdGUpLCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgTW90aW9uRXZlbnQuQUNUSU9OX1VQOgotICAgICAgICAgICAgICAgICAgICB4LnJlc2V0KDIpOwotICAgICAgICAgICAgICAgICAgICB5LnJlc2V0KDIpOwotICAgICAgICAgICAgICAgICAgICBkZWxpdmVyS2V5RXZlbnQobmV3IEtleUV2ZW50KGN1clRpbWUsIGN1clRpbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgS2V5RXZlbnQuQUNUSU9OX1VQLCBLZXlFdmVudC5LRVlDT0RFX0RQQURfQ0VOVEVSLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsIG1ldGFzdGF0ZSksIGZhbHNlKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9CisgICAgICAgIGZpbmFsIGludCBhY3Rpb24gPSBldmVudC5nZXRBY3Rpb24oKTsKKyAgICAgICAgZmluYWwgaW50IG1ldGFzdGF0ZSA9IGV2ZW50LmdldE1ldGFTdGF0ZSgpOworICAgICAgICBzd2l0Y2ggKGFjdGlvbikgeworICAgICAgICAgICAgY2FzZSBNb3Rpb25FdmVudC5BQ1RJT05fRE9XTjoKKyAgICAgICAgICAgICAgICB4LnJlc2V0KDIpOworICAgICAgICAgICAgICAgIHkucmVzZXQoMik7CisgICAgICAgICAgICAgICAgZGVsaXZlcktleUV2ZW50KG5ldyBLZXlFdmVudChjdXJUaW1lLCBjdXJUaW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgS2V5RXZlbnQuQUNUSU9OX0RPV04sIEtleUV2ZW50LktFWUNPREVfRFBBRF9DRU5URVIsCisgICAgICAgICAgICAgICAgICAgICAgICAwLCBtZXRhc3RhdGUpLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIE1vdGlvbkV2ZW50LkFDVElPTl9VUDoKKyAgICAgICAgICAgICAgICB4LnJlc2V0KDIpOworICAgICAgICAgICAgICAgIHkucmVzZXQoMik7CisgICAgICAgICAgICAgICAgZGVsaXZlcktleUV2ZW50KG5ldyBLZXlFdmVudChjdXJUaW1lLCBjdXJUaW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgS2V5RXZlbnQuQUNUSU9OX1VQLCBLZXlFdmVudC5LRVlDT0RFX0RQQURfQ0VOVEVSLAorICAgICAgICAgICAgICAgICAgICAgICAgMCwgbWV0YXN0YXRlKSwgZmFsc2UpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmIChERUJVR19UUkFDS0JBTEwpIExvZy52KFRBRywgIlRCIFg9IiArIHgucG9zaXRpb24gKyAiIHN0ZXA9IgotICAgICAgICAgICAgICAgICAgICArIHguc3RlcCArICIgZGlyPSIgKyB4LmRpciArICIgYWNjPSIgKyB4LmFjY2VsZXJhdGlvbgotICAgICAgICAgICAgICAgICAgICArICIgbW92ZT0iICsgZXZlbnQuZ2V0WCgpCi0gICAgICAgICAgICAgICAgICAgICsgIiAvIFk9IiArIHkucG9zaXRpb24gKyAiIHN0ZXA9IgotICAgICAgICAgICAgICAgICAgICArIHkuc3RlcCArICIgZGlyPSIgKyB5LmRpciArICIgYWNjPSIgKyB5LmFjY2VsZXJhdGlvbgotICAgICAgICAgICAgICAgICAgICArICIgbW92ZT0iICsgZXZlbnQuZ2V0WSgpKTsKLSAgICAgICAgICAgIGZpbmFsIGZsb2F0IHhPZmYgPSB4LmNvbGxlY3QoZXZlbnQuZ2V0WCgpLCBldmVudC5nZXRFdmVudFRpbWUoKSwgIlgiKTsKLSAgICAgICAgICAgIGZpbmFsIGZsb2F0IHlPZmYgPSB5LmNvbGxlY3QoZXZlbnQuZ2V0WSgpLCBldmVudC5nZXRFdmVudFRpbWUoKSwgIlkiKTsKKyAgICAgICAgaWYgKERFQlVHX1RSQUNLQkFMTCkgTG9nLnYoVEFHLCAiVEIgWD0iICsgeC5wb3NpdGlvbiArICIgc3RlcD0iCisgICAgICAgICAgICAgICAgKyB4LnN0ZXAgKyAiIGRpcj0iICsgeC5kaXIgKyAiIGFjYz0iICsgeC5hY2NlbGVyYXRpb24KKyAgICAgICAgICAgICAgICArICIgbW92ZT0iICsgZXZlbnQuZ2V0WCgpCisgICAgICAgICAgICAgICAgKyAiIC8gWT0iICsgeS5wb3NpdGlvbiArICIgc3RlcD0iCisgICAgICAgICAgICAgICAgKyB5LnN0ZXAgKyAiIGRpcj0iICsgeS5kaXIgKyAiIGFjYz0iICsgeS5hY2NlbGVyYXRpb24KKyAgICAgICAgICAgICAgICArICIgbW92ZT0iICsgZXZlbnQuZ2V0WSgpKTsKKyAgICAgICAgZmluYWwgZmxvYXQgeE9mZiA9IHguY29sbGVjdChldmVudC5nZXRYKCksIGV2ZW50LmdldEV2ZW50VGltZSgpLCAiWCIpOworICAgICAgICBmaW5hbCBmbG9hdCB5T2ZmID0geS5jb2xsZWN0KGV2ZW50LmdldFkoKSwgZXZlbnQuZ2V0RXZlbnRUaW1lKCksICJZIik7CiAKLSAgICAgICAgICAgIC8vIEdlbmVyYXRlIERQQUQgZXZlbnRzIGJhc2VkIG9uIHRoZSB0cmFja2JhbGwgbW92ZW1lbnQuCi0gICAgICAgICAgICAvLyBXZSBwaWNrIHRoZSBheGlzIHRoYXQgaGFzIG1vdmVkIHRoZSBtb3N0IGFzIHRoZSBkaXJlY3Rpb24gb2YKLSAgICAgICAgICAgIC8vIHRoZSBEUEFELiAgV2hlbiB3ZSBnZW5lcmF0ZSBEUEFEIGV2ZW50cyBmb3Igb25lIGF4aXMsIHRoZW4gdGhlCi0gICAgICAgICAgICAvLyBvdGhlciBheGlzIGlzIHJlc2V0IC0tIHdlIGRvbid0IHdhbnQgdG8gcGVyZm9ybSBEUEFEIGp1bXBzIGR1ZQotICAgICAgICAgICAgLy8gdG8gc2xpZ2h0IG1vdmVtZW50cyBpbiB0aGUgdHJhY2tiYWxsIHdoZW4gbWFraW5nIG1ham9yIG1vdmVtZW50cwotICAgICAgICAgICAgLy8gYWxvbmcgdGhlIG90aGVyIGF4aXMuCi0gICAgICAgICAgICBpbnQga2V5Y29kZSA9IDA7Ci0gICAgICAgICAgICBpbnQgbW92ZW1lbnQgPSAwOwotICAgICAgICAgICAgZmxvYXQgYWNjZWwgPSAxOwotICAgICAgICAgICAgaWYgKHhPZmYgPiB5T2ZmKSB7Ci0gICAgICAgICAgICAgICAgbW92ZW1lbnQgPSB4LmdlbmVyYXRlKCgyL2V2ZW50LmdldFhQcmVjaXNpb24oKSkpOwotICAgICAgICAgICAgICAgIGlmIChtb3ZlbWVudCAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIGtleWNvZGUgPSBtb3ZlbWVudCA+IDAgPyBLZXlFdmVudC5LRVlDT0RFX0RQQURfUklHSFQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IEtleUV2ZW50LktFWUNPREVfRFBBRF9MRUZUOwotICAgICAgICAgICAgICAgICAgICBhY2NlbCA9IHguYWNjZWxlcmF0aW9uOwotICAgICAgICAgICAgICAgICAgICB5LnJlc2V0KDIpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSBpZiAoeU9mZiA+IDApIHsKLSAgICAgICAgICAgICAgICBtb3ZlbWVudCA9IHkuZ2VuZXJhdGUoKDIvZXZlbnQuZ2V0WVByZWNpc2lvbigpKSk7Ci0gICAgICAgICAgICAgICAgaWYgKG1vdmVtZW50ICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAga2V5Y29kZSA9IG1vdmVtZW50ID4gMCA/IEtleUV2ZW50LktFWUNPREVfRFBBRF9ET1dOCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBLZXlFdmVudC5LRVlDT0RFX0RQQURfVVA7Ci0gICAgICAgICAgICAgICAgICAgIGFjY2VsID0geS5hY2NlbGVyYXRpb247Ci0gICAgICAgICAgICAgICAgICAgIHgucmVzZXQoMik7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAvLyBHZW5lcmF0ZSBEUEFEIGV2ZW50cyBiYXNlZCBvbiB0aGUgdHJhY2tiYWxsIG1vdmVtZW50LgorICAgICAgICAvLyBXZSBwaWNrIHRoZSBheGlzIHRoYXQgaGFzIG1vdmVkIHRoZSBtb3N0IGFzIHRoZSBkaXJlY3Rpb24gb2YKKyAgICAgICAgLy8gdGhlIERQQUQuICBXaGVuIHdlIGdlbmVyYXRlIERQQUQgZXZlbnRzIGZvciBvbmUgYXhpcywgdGhlbiB0aGUKKyAgICAgICAgLy8gb3RoZXIgYXhpcyBpcyByZXNldCAtLSB3ZSBkb24ndCB3YW50IHRvIHBlcmZvcm0gRFBBRCBqdW1wcyBkdWUKKyAgICAgICAgLy8gdG8gc2xpZ2h0IG1vdmVtZW50cyBpbiB0aGUgdHJhY2tiYWxsIHdoZW4gbWFraW5nIG1ham9yIG1vdmVtZW50cworICAgICAgICAvLyBhbG9uZyB0aGUgb3RoZXIgYXhpcy4KKyAgICAgICAgaW50IGtleWNvZGUgPSAwOworICAgICAgICBpbnQgbW92ZW1lbnQgPSAwOworICAgICAgICBmbG9hdCBhY2NlbCA9IDE7CisgICAgICAgIGlmICh4T2ZmID4geU9mZikgeworICAgICAgICAgICAgbW92ZW1lbnQgPSB4LmdlbmVyYXRlKCgyL2V2ZW50LmdldFhQcmVjaXNpb24oKSkpOworICAgICAgICAgICAgaWYgKG1vdmVtZW50ICE9IDApIHsKKyAgICAgICAgICAgICAgICBrZXljb2RlID0gbW92ZW1lbnQgPiAwID8gS2V5RXZlbnQuS0VZQ09ERV9EUEFEX1JJR0hUCisgICAgICAgICAgICAgICAgICAgICAgICA6IEtleUV2ZW50LktFWUNPREVfRFBBRF9MRUZUOworICAgICAgICAgICAgICAgIGFjY2VsID0geC5hY2NlbGVyYXRpb247CisgICAgICAgICAgICAgICAgeS5yZXNldCgyKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmICh5T2ZmID4gMCkgeworICAgICAgICAgICAgbW92ZW1lbnQgPSB5LmdlbmVyYXRlKCgyL2V2ZW50LmdldFlQcmVjaXNpb24oKSkpOworICAgICAgICAgICAgaWYgKG1vdmVtZW50ICE9IDApIHsKKyAgICAgICAgICAgICAgICBrZXljb2RlID0gbW92ZW1lbnQgPiAwID8gS2V5RXZlbnQuS0VZQ09ERV9EUEFEX0RPV04KKyAgICAgICAgICAgICAgICAgICAgICAgIDogS2V5RXZlbnQuS0VZQ09ERV9EUEFEX1VQOworICAgICAgICAgICAgICAgIGFjY2VsID0geS5hY2NlbGVyYXRpb247CisgICAgICAgICAgICAgICAgeC5yZXNldCgyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAoa2V5Y29kZSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1vdmVtZW50IDwgMCkgbW92ZW1lbnQgPSAtbW92ZW1lbnQ7Ci0gICAgICAgICAgICAgICAgaW50IGFjY2VsTW92ZW1lbnQgPSAoaW50KShtb3ZlbWVudCAqIGFjY2VsKTsKLSAgICAgICAgICAgICAgICBpZiAoREVCVUdfVFJBQ0tCQUxMKSBMb2cudihUQUcsICJNb3ZlOiBtb3ZlbWVudD0iICsgbW92ZW1lbnQKLSAgICAgICAgICAgICAgICAgICAgICAgICsgIiBhY2NlbE1vdmVtZW50PSIgKyBhY2NlbE1vdmVtZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICArICIgYWNjZWw9IiArIGFjY2VsKTsKLSAgICAgICAgICAgICAgICBpZiAoYWNjZWxNb3ZlbWVudCA+IG1vdmVtZW50KSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19UUkFDS0JBTEwpIExvZy52KCJmb28iLCAiRGVsaXZlcmluZyBmYWtlIERQQUQ6ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGtleWNvZGUpOwotICAgICAgICAgICAgICAgICAgICBtb3ZlbWVudC0tOwotICAgICAgICAgICAgICAgICAgICBkZWxpdmVyS2V5RXZlbnQobmV3IEtleUV2ZW50KGN1clRpbWUsIGN1clRpbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgS2V5RXZlbnQuQUNUSU9OX01VTFRJUExFLCBrZXljb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VsTW92ZW1lbnQtbW92ZW1lbnQsIG1ldGFzdGF0ZSksIGZhbHNlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgd2hpbGUgKG1vdmVtZW50ID4gMCkgewotICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfVFJBQ0tCQUxMKSBMb2cudigiZm9vIiwgIkRlbGl2ZXJpbmcgZmFrZSBEUEFEOiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBrZXljb2RlKTsKLSAgICAgICAgICAgICAgICAgICAgbW92ZW1lbnQtLTsKLSAgICAgICAgICAgICAgICAgICAgY3VyVGltZSA9IFN5c3RlbUNsb2NrLnVwdGltZU1pbGxpcygpOwotICAgICAgICAgICAgICAgICAgICBkZWxpdmVyS2V5RXZlbnQobmV3IEtleUV2ZW50KGN1clRpbWUsIGN1clRpbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgS2V5RXZlbnQuQUNUSU9OX0RPV04sIGtleWNvZGUsIDAsIGV2ZW50LmdldE1ldGFTdGF0ZSgpKSwgZmFsc2UpOwotICAgICAgICAgICAgICAgICAgICBkZWxpdmVyS2V5RXZlbnQobmV3IEtleUV2ZW50KGN1clRpbWUsIGN1clRpbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgS2V5RXZlbnQuQUNUSU9OX1VQLCBrZXljb2RlLCAwLCBtZXRhc3RhdGUpLCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG1MYXN0VHJhY2tiYWxsVGltZSA9IGN1clRpbWU7CisgICAgICAgIGlmIChrZXljb2RlICE9IDApIHsKKyAgICAgICAgICAgIGlmIChtb3ZlbWVudCA8IDApIG1vdmVtZW50ID0gLW1vdmVtZW50OworICAgICAgICAgICAgaW50IGFjY2VsTW92ZW1lbnQgPSAoaW50KShtb3ZlbWVudCAqIGFjY2VsKTsKKyAgICAgICAgICAgIGlmIChERUJVR19UUkFDS0JBTEwpIExvZy52KFRBRywgIk1vdmU6IG1vdmVtZW50PSIgKyBtb3ZlbWVudAorICAgICAgICAgICAgICAgICAgICArICIgYWNjZWxNb3ZlbWVudD0iICsgYWNjZWxNb3ZlbWVudAorICAgICAgICAgICAgICAgICAgICArICIgYWNjZWw9IiArIGFjY2VsKTsKKyAgICAgICAgICAgIGlmIChhY2NlbE1vdmVtZW50ID4gbW92ZW1lbnQpIHsKKyAgICAgICAgICAgICAgICBpZiAoREVCVUdfVFJBQ0tCQUxMKSBMb2cudigiZm9vIiwgIkRlbGl2ZXJpbmcgZmFrZSBEUEFEOiAiCisgICAgICAgICAgICAgICAgICAgICAgICArIGtleWNvZGUpOworICAgICAgICAgICAgICAgIG1vdmVtZW50LS07CisgICAgICAgICAgICAgICAgZGVsaXZlcktleUV2ZW50KG5ldyBLZXlFdmVudChjdXJUaW1lLCBjdXJUaW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgS2V5RXZlbnQuQUNUSU9OX01VTFRJUExFLCBrZXljb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgYWNjZWxNb3ZlbWVudC1tb3ZlbWVudCwgbWV0YXN0YXRlKSwgZmFsc2UpOwogICAgICAgICAgICAgfQotICAgICAgICB9IGZpbmFsbHkgewotICAgICAgICAgICAgaWYgKGNhbGxXaGVuRG9uZSkgewotICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIHNXaW5kb3dTZXNzaW9uLmZpbmlzaEtleShtV2luZG93KTsKLSAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoZXZlbnQgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICBldmVudC5yZWN5Y2xlKCk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgd2hpbGUgKG1vdmVtZW50ID4gMCkgeworICAgICAgICAgICAgICAgIGlmIChERUJVR19UUkFDS0JBTEwpIExvZy52KCJmb28iLCAiRGVsaXZlcmluZyBmYWtlIERQQUQ6ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICsga2V5Y29kZSk7CisgICAgICAgICAgICAgICAgbW92ZW1lbnQtLTsKKyAgICAgICAgICAgICAgICBjdXJUaW1lID0gU3lzdGVtQ2xvY2sudXB0aW1lTWlsbGlzKCk7CisgICAgICAgICAgICAgICAgZGVsaXZlcktleUV2ZW50KG5ldyBLZXlFdmVudChjdXJUaW1lLCBjdXJUaW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgS2V5RXZlbnQuQUNUSU9OX0RPV04sIGtleWNvZGUsIDAsIGV2ZW50LmdldE1ldGFTdGF0ZSgpKSwgZmFsc2UpOworICAgICAgICAgICAgICAgIGRlbGl2ZXJLZXlFdmVudChuZXcgS2V5RXZlbnQoY3VyVGltZSwgY3VyVGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEtleUV2ZW50LkFDVElPTl9VUCwga2V5Y29kZSwgMCwgbWV0YXN0YXRlKSwgZmFsc2UpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gTGV0IHRoZSBleGNlcHRpb24gZmFsbCB0aHJvdWdoIC0tIHRoZSBsb29wZXIgd2lsbCBjYXRjaAotICAgICAgICAgICAgLy8gaXQgYW5kIHRha2UgY2FyZSBvZiB0aGUgYmFkIGFwcCBmb3IgdXMuCisgICAgICAgICAgICBtTGFzdFRyYWNrYmFsbFRpbWUgPSBjdXJUaW1lOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yNDA3LDEwICsyNDczLDcgQEAKICAgICAgICAgICAgIGlmIChzZW5kRG9uZSkgewogICAgICAgICAgICAgICAgIGlmIChMT0NBTF9MT0dWKSBMb2cudigKICAgICAgICAgICAgICAgICAgICAgIlZpZXdSb290IiwgIlRlbGxpbmcgd2luZG93IG1hbmFnZXIga2V5IGlzIGZpbmlzaGVkIik7Ci0gICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgc1dpbmRvd1Nlc3Npb24uZmluaXNoS2V5KG1XaW5kb3cpOwotICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZpbmlzaEtleUV2ZW50KGV2ZW50KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMjQ0MywxMCArMjUwNiw3IEBACiAgICAgICAgICAgICB9IGVsc2UgaWYgKHNlbmREb25lKSB7CiAgICAgICAgICAgICAgICAgaWYgKExPQ0FMX0xPR1YpIExvZy52KAogICAgICAgICAgICAgICAgICAgICAgICAgIlZpZXdSb290IiwgIlRlbGxpbmcgd2luZG93IG1hbmFnZXIga2V5IGlzIGZpbmlzaGVkIik7Ci0gICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgc1dpbmRvd1Nlc3Npb24uZmluaXNoS2V5KG1XaW5kb3cpOwotICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZpbmlzaEtleUV2ZW50KGV2ZW50KTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgTG9nLncoIlZpZXdSb290IiwgImhhbmRsZUZpbmlzaGVkRXZlbnQoc2VxPSIgKyBzZXEKICAgICAgICAgICAgICAgICAgICAgICAgICsgIiBoYW5kbGVkPSIgKyBoYW5kbGVkICsgIiBldj0iICsgZXZlbnQKQEAgLTI1MjEsMTAgKzI1ODEsNyBAQAogICAgICAgICAgICAgaWYgKHNlbmREb25lKSB7CiAgICAgICAgICAgICAgICAgaWYgKExPQ0FMX0xPR1YpIExvZy52KAogICAgICAgICAgICAgICAgICAgICAiVmlld1Jvb3QiLCAiVGVsbGluZyB3aW5kb3cgbWFuYWdlciBrZXkgaXMgZmluaXNoZWQiKTsKLSAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICBzV2luZG93U2Vzc2lvbi5maW5pc2hLZXkobVdpbmRvdyk7Ci0gICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZmluaXNoS2V5RXZlbnQoZXZlbnQpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gTGV0IHRoZSBleGNlcHRpb24gZmFsbCB0aHJvdWdoIC0tIHRoZSBsb29wZXIgd2lsbCBjYXRjaAogICAgICAgICAgICAgLy8gaXQgYW5kIHRha2UgY2FyZSBvZiB0aGUgYmFkIGFwcCBmb3IgdXMuCkBAIC0yNzAyLDYgKzI3NTksMjggQEAKICAgICAgICAgbXNnLm9iaiA9IHJpOwogICAgICAgICBzZW5kTWVzc2FnZShtc2cpOwogICAgIH0KKyAgICAKKyAgICBwcml2YXRlIFJ1bm5hYmxlIG1GaW5pc2hlZENhbGxiYWNrOworICAgIAorICAgIHByaXZhdGUgZmluYWwgSW5wdXRIYW5kbGVyIG1JbnB1dEhhbmRsZXIgPSBuZXcgSW5wdXRIYW5kbGVyKCkgeworICAgICAgICBwdWJsaWMgdm9pZCBoYW5kbGVLZXkoS2V5RXZlbnQgZXZlbnQsIFJ1bm5hYmxlIGZpbmlzaGVkQ2FsbGJhY2spIHsKKyAgICAgICAgICAgIG1GaW5pc2hlZENhbGxiYWNrID0gZmluaXNoZWRDYWxsYmFjazsKKworICAgICAgICAgICAgZGlzcGF0Y2hLZXkoZXZlbnQpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgaGFuZGxlVG91Y2goTW90aW9uRXZlbnQgZXZlbnQsIFJ1bm5hYmxlIGZpbmlzaGVkQ2FsbGJhY2spIHsKKyAgICAgICAgICAgIGZpbmlzaGVkQ2FsbGJhY2sucnVuKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGRpc3BhdGNoUG9pbnRlcihldmVudCk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBoYW5kbGVUcmFja2JhbGwoTW90aW9uRXZlbnQgZXZlbnQsIFJ1bm5hYmxlIGZpbmlzaGVkQ2FsbGJhY2spIHsKKyAgICAgICAgICAgIGZpbmlzaGVkQ2FsbGJhY2sucnVuKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGRpc3BhdGNoVHJhY2tiYWxsKGV2ZW50KTsKKyAgICAgICAgfQorICAgIH07CiAKICAgICBwdWJsaWMgdm9pZCBkaXNwYXRjaEtleShLZXlFdmVudCBldmVudCkgewogICAgICAgICBpZiAoZXZlbnQuZ2V0QWN0aW9uKCkgPT0gS2V5RXZlbnQuQUNUSU9OX0RPV04pIHsKQEAgLTI3MjYsMjIgKzI4MDUsMTggQEAKICAgICAgICAgc2VuZE1lc3NhZ2VBdFRpbWUobXNnLCBldmVudC5nZXRFdmVudFRpbWUoKSk7CiAgICAgfQogCi0gICAgcHVibGljIHZvaWQgZGlzcGF0Y2hQb2ludGVyKE1vdGlvbkV2ZW50IGV2ZW50LCBsb25nIGV2ZW50VGltZSwKLSAgICAgICAgICAgIGJvb2xlYW4gY2FsbFdoZW5Eb25lKSB7CisgICAgcHVibGljIHZvaWQgZGlzcGF0Y2hQb2ludGVyKE1vdGlvbkV2ZW50IGV2ZW50KSB7CiAgICAgICAgIE1lc3NhZ2UgbXNnID0gb2J0YWluTWVzc2FnZShESVNQQVRDSF9QT0lOVEVSKTsKICAgICAgICAgbXNnLm9iaiA9IGV2ZW50OwotICAgICAgICBtc2cuYXJnMSA9IGNhbGxXaGVuRG9uZSA/IDEgOiAwOwotICAgICAgICBzZW5kTWVzc2FnZUF0VGltZShtc2csIGV2ZW50VGltZSk7CisgICAgICAgIHNlbmRNZXNzYWdlQXRUaW1lKG1zZywgZXZlbnQuZ2V0RXZlbnRUaW1lKCkpOwogICAgIH0KIAotICAgIHB1YmxpYyB2b2lkIGRpc3BhdGNoVHJhY2tiYWxsKE1vdGlvbkV2ZW50IGV2ZW50LCBsb25nIGV2ZW50VGltZSwKLSAgICAgICAgICAgIGJvb2xlYW4gY2FsbFdoZW5Eb25lKSB7CisgICAgcHVibGljIHZvaWQgZGlzcGF0Y2hUcmFja2JhbGwoTW90aW9uRXZlbnQgZXZlbnQpIHsKICAgICAgICAgTWVzc2FnZSBtc2cgPSBvYnRhaW5NZXNzYWdlKERJU1BBVENIX1RSQUNLQkFMTCk7CiAgICAgICAgIG1zZy5vYmogPSBldmVudDsKLSAgICAgICAgbXNnLmFyZzEgPSBjYWxsV2hlbkRvbmUgPyAxIDogMDsKLSAgICAgICAgc2VuZE1lc3NhZ2VBdFRpbWUobXNnLCBldmVudFRpbWUpOworICAgICAgICBzZW5kTWVzc2FnZUF0VGltZShtc2csIGV2ZW50LmdldEV2ZW50VGltZSgpKTsKICAgICB9Ci0KKyAgICAKICAgICBwdWJsaWMgdm9pZCBkaXNwYXRjaEFwcFZpc2liaWxpdHkoYm9vbGVhbiB2aXNpYmxlKSB7CiAgICAgICAgIE1lc3NhZ2UgbXNnID0gb2J0YWluTWVzc2FnZShESVNQQVRDSF9BUFBfVklTSUJJTElUWSk7CiAgICAgICAgIG1zZy5hcmcxID0gdmlzaWJsZSA/IDEgOiAwOwpAQCAtMjgxMyw2ICsyODg4LDQ2IEBACiAgICAgICAgIHJldHVybiBzY3JvbGxUb1JlY3RPckZvY3VzKHJlY3RhbmdsZSwgaW1tZWRpYXRlKTsKICAgICB9CiAKKyAgICBjbGFzcyBUYWtlblN1cmZhY2VIb2xkZXIgZXh0ZW5kcyBCYXNlU3VyZmFjZUhvbGRlciB7CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgYm9vbGVhbiBvbkFsbG93TG9ja0NhbnZhcygpIHsKKyAgICAgICAgICAgIHJldHVybiBtRHJhd2luZ0FsbG93ZWQ7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHZvaWQgb25SZWxheW91dENvbnRhaW5lcigpIHsKKyAgICAgICAgICAgIC8vIE5vdCBjdXJyZW50bHkgaW50ZXJlc3RpbmcgLS0gZnJvbSBjaGFuZ2luZyBiZXR3ZWVuIGZpeGVkIGFuZCBsYXlvdXQgc2l6ZS4KKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIHNldEZvcm1hdChpbnQgZm9ybWF0KSB7CisgICAgICAgICAgICAoKFJvb3RWaWV3U3VyZmFjZVRha2VyKW1WaWV3KS5zZXRTdXJmYWNlRm9ybWF0KGZvcm1hdCk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBzZXRUeXBlKGludCB0eXBlKSB7CisgICAgICAgICAgICAoKFJvb3RWaWV3U3VyZmFjZVRha2VyKW1WaWV3KS5zZXRTdXJmYWNlVHlwZSh0eXBlKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyB2b2lkIG9uVXBkYXRlU3VyZmFjZSgpIHsKKyAgICAgICAgICAgIC8vIFdlIHRha2UgY2FyZSBvZiBmb3JtYXQgYW5kIHR5cGUgY2hhbmdlcyBvbiBvdXIgb3duLgorICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiU2hvdWxkbid0IGJlIGhlcmUiKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBib29sZWFuIGlzQ3JlYXRpbmcoKSB7CisgICAgICAgICAgICByZXR1cm4gbUlzQ3JlYXRpbmc7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHZvaWQgc2V0Rml4ZWRTaXplKGludCB3aWR0aCwgaW50IGhlaWdodCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAiQ3VycmVudGx5IG9ubHkgc3VwcG9ydCBzaXppbmcgZnJvbSBsYXlvdXQiKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcHVibGljIHZvaWQgc2V0S2VlcFNjcmVlbk9uKGJvb2xlYW4gc2NyZWVuT24pIHsKKyAgICAgICAgICAgICgoUm9vdFZpZXdTdXJmYWNlVGFrZXIpbVZpZXcpLnNldFN1cmZhY2VLZWVwU2NyZWVuT24oc2NyZWVuT24pOworICAgICAgICB9CisgICAgfQorICAgIAogICAgIHN0YXRpYyBjbGFzcyBJbnB1dE1ldGhvZENhbGxiYWNrIGV4dGVuZHMgSUlucHV0TWV0aG9kQ2FsbGJhY2suU3R1YiB7CiAgICAgICAgIHByaXZhdGUgV2Vha1JlZmVyZW5jZTxWaWV3Um9vdD4gbVZpZXdSb290OwogCkBAIC0yODMyLDcxICsyOTQ3LDExIEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBzdGF0aWMgY2xhc3MgRXZlbnRDb21wbGV0aW9uIGV4dGVuZHMgSGFuZGxlciB7Ci0gICAgICAgIGZpbmFsIElXaW5kb3cgbVdpbmRvdzsKLSAgICAgICAgZmluYWwgS2V5RXZlbnQgbUtleUV2ZW50OwotICAgICAgICBmaW5hbCBib29sZWFuIG1Jc1BvaW50ZXI7Ci0gICAgICAgIGZpbmFsIE1vdGlvbkV2ZW50IG1Nb3Rpb25FdmVudDsKLQotICAgICAgICBFdmVudENvbXBsZXRpb24oTG9vcGVyIGxvb3BlciwgSVdpbmRvdyB3aW5kb3csIEtleUV2ZW50IGtleSwKLSAgICAgICAgICAgICAgICBib29sZWFuIGlzUG9pbnRlciwgTW90aW9uRXZlbnQgbW90aW9uKSB7Ci0gICAgICAgICAgICBzdXBlcihsb29wZXIpOwotICAgICAgICAgICAgbVdpbmRvdyA9IHdpbmRvdzsKLSAgICAgICAgICAgIG1LZXlFdmVudCA9IGtleTsKLSAgICAgICAgICAgIG1Jc1BvaW50ZXIgPSBpc1BvaW50ZXI7Ci0gICAgICAgICAgICBtTW90aW9uRXZlbnQgPSBtb3Rpb247Ci0gICAgICAgICAgICBzZW5kRW1wdHlNZXNzYWdlKDApOwotICAgICAgICB9Ci0KLSAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHB1YmxpYyB2b2lkIGhhbmRsZU1lc3NhZ2UoTWVzc2FnZSBtc2cpIHsKLSAgICAgICAgICAgIGlmIChtS2V5RXZlbnQgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIHNXaW5kb3dTZXNzaW9uLmZpbmlzaEtleShtV2luZG93KTsKLSAgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICB9IGVsc2UgaWYgKG1Jc1BvaW50ZXIpIHsKLSAgICAgICAgICAgICAgICBib29sZWFuIGRpZEZpbmlzaDsKLSAgICAgICAgICAgICAgICBNb3Rpb25FdmVudCBldmVudCA9IG1Nb3Rpb25FdmVudDsKLSAgICAgICAgICAgICAgICBpZiAoZXZlbnQgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQgPSBzV2luZG93U2Vzc2lvbi5nZXRQZW5kaW5nUG9pbnRlck1vdmUobVdpbmRvdyk7Ci0gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZGlkRmluaXNoID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBkaWRGaW5pc2ggPSBldmVudC5nZXRBY3Rpb24oKSA9PSBNb3Rpb25FdmVudC5BQ1RJT05fT1VUU0lERTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKCFkaWRGaW5pc2gpIHsKLSAgICAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNXaW5kb3dTZXNzaW9uLmZpbmlzaEtleShtV2luZG93KTsKLSAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBNb3Rpb25FdmVudCBldmVudCA9IG1Nb3Rpb25FdmVudDsKLSAgICAgICAgICAgICAgICBpZiAoZXZlbnQgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQgPSBzV2luZG93U2Vzc2lvbi5nZXRQZW5kaW5nVHJhY2tiYWxsTW92ZShtV2luZG93KTsKLSAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzV2luZG93U2Vzc2lvbi5maW5pc2hLZXkobVdpbmRvdyk7Ci0gICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQogICAgIHN0YXRpYyBjbGFzcyBXIGV4dGVuZHMgSVdpbmRvdy5TdHViIHsKICAgICAgICAgcHJpdmF0ZSBmaW5hbCBXZWFrUmVmZXJlbmNlPFZpZXdSb290PiBtVmlld1Jvb3Q7Ci0gICAgICAgIHByaXZhdGUgZmluYWwgTG9vcGVyIG1NYWluTG9vcGVyOwogCiAgICAgICAgIHB1YmxpYyBXKFZpZXdSb290IHZpZXdSb290LCBDb250ZXh0IGNvbnRleHQpIHsKICAgICAgICAgICAgIG1WaWV3Um9vdCA9IG5ldyBXZWFrUmVmZXJlbmNlPFZpZXdSb290Pih2aWV3Um9vdCk7Ci0gICAgICAgICAgICBtTWFpbkxvb3BlciA9IGNvbnRleHQuZ2V0TWFpbkxvb3BlcigpOwogICAgICAgICB9CiAKICAgICAgICAgcHVibGljIHZvaWQgcmVzaXplZChpbnQgdywgaW50IGgsIFJlY3QgY292ZXJlZEluc2V0cywKQEAgLTI5MDgsNDAgKzI5NjMsNiBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgcHVibGljIHZvaWQgZGlzcGF0Y2hLZXkoS2V5RXZlbnQgZXZlbnQpIHsKLSAgICAgICAgICAgIGZpbmFsIFZpZXdSb290IHZpZXdSb290ID0gbVZpZXdSb290LmdldCgpOwotICAgICAgICAgICAgaWYgKHZpZXdSb290ICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICB2aWV3Um9vdC5kaXNwYXRjaEtleShldmVudCk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIExvZy53KCJWaWV3Um9vdC5XIiwgIktleSBldmVudCAiICsgZXZlbnQgKyAiIGJ1dCBubyBWaWV3Um9vdCBhdmFpbGFibGUhIik7Ci0gICAgICAgICAgICAgICAgbmV3IEV2ZW50Q29tcGxldGlvbihtTWFpbkxvb3BlciwgdGhpcywgZXZlbnQsIGZhbHNlLCBudWxsKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHB1YmxpYyB2b2lkIGRpc3BhdGNoUG9pbnRlcihNb3Rpb25FdmVudCBldmVudCwgbG9uZyBldmVudFRpbWUsCi0gICAgICAgICAgICAgICAgYm9vbGVhbiBjYWxsV2hlbkRvbmUpIHsKLSAgICAgICAgICAgIGZpbmFsIFZpZXdSb290IHZpZXdSb290ID0gbVZpZXdSb290LmdldCgpOwotICAgICAgICAgICAgaWYgKHZpZXdSb290ICE9IG51bGwpIHsgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKE1FQVNVUkVfTEFURU5DWSkgewotICAgICAgICAgICAgICAgICAgICAvLyBOb3RlOiBldmVudFRpbWUgaXMgaW4gbWlsbGlzZWNvbmRzCi0gICAgICAgICAgICAgICAgICAgIFZpZXdSb290Lmx0LnNhbXBsZSgiKiBWaWV3Um9vdCBiNCBkaXNwYXRjaFB0ciIsIFN5c3RlbS5uYW5vVGltZSgpIC0gZXZlbnRUaW1lICogMTAwMDAwMCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHZpZXdSb290LmRpc3BhdGNoUG9pbnRlcihldmVudCwgZXZlbnRUaW1lLCBjYWxsV2hlbkRvbmUpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBuZXcgRXZlbnRDb21wbGV0aW9uKG1NYWluTG9vcGVyLCB0aGlzLCBudWxsLCB0cnVlLCBldmVudCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgdm9pZCBkaXNwYXRjaFRyYWNrYmFsbChNb3Rpb25FdmVudCBldmVudCwgbG9uZyBldmVudFRpbWUsCi0gICAgICAgICAgICAgICAgYm9vbGVhbiBjYWxsV2hlbkRvbmUpIHsKLSAgICAgICAgICAgIGZpbmFsIFZpZXdSb290IHZpZXdSb290ID0gbVZpZXdSb290LmdldCgpOwotICAgICAgICAgICAgaWYgKHZpZXdSb290ICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICB2aWV3Um9vdC5kaXNwYXRjaFRyYWNrYmFsbChldmVudCwgZXZlbnRUaW1lLCBjYWxsV2hlbkRvbmUpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBuZXcgRXZlbnRDb21wbGV0aW9uKG1NYWluTG9vcGVyLCB0aGlzLCBudWxsLCBmYWxzZSwgZXZlbnQpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KICAgICAgICAgcHVibGljIHZvaWQgZGlzcGF0Y2hBcHBWaXNpYmlsaXR5KGJvb2xlYW4gdmlzaWJsZSkgewogICAgICAgICAgICAgZmluYWwgVmlld1Jvb3Qgdmlld1Jvb3QgPSBtVmlld1Jvb3QuZ2V0KCk7CiAgICAgICAgICAgICBpZiAodmlld1Jvb3QgIT0gbnVsbCkgewpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9XaW5kb3cuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvV2luZG93LmphdmEKaW5kZXggN2RkNTA4NS4uZjQwNzM0YiAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9XaW5kb3cuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC92aWV3L1dpbmRvdy5qYXZhCkBAIC00NzMsNiArNDczLDIxIEBACiAgICAgfQogCiAgICAgLyoqCisgICAgICogVGFrZSBvd25lcnNoaXAgb2YgdGhpcyB3aW5kb3cncyBzdXJmYWNlLiAgVGhlIHdpbmRvdydzIHZpZXcgaGllcmFyY2h5CisgICAgICogd2lsbCBubyBsb25nZXIgZHJhdyBpbnRvIHRoZSBzdXJmYWNlLCB0aG91Z2ggaXQgd2lsbCBvdGhlcndpc2UgY29udGludWUKKyAgICAgKiB0byBvcGVyYXRlIChzdWNoIGFzIGZvciByZWNlaXZpbmcgaW5wdXQgZXZlbnRzKS4gIFRoZSBnaXZlbiBTdXJmYWNlSG9sZGVyCisgICAgICogY2FsbGJhY2sgd2lsbCBiZSB1c2VkIHRvIHRlbGwgeW91IGFib3V0IHN0YXRlIGNoYW5nZXMgdG8gdGhlIHN1cmZhY2UuCisgICAgICovCisgICAgcHVibGljIGFic3RyYWN0IHZvaWQgdGFrZVN1cmZhY2UoU3VyZmFjZUhvbGRlci5DYWxsYmFjayBjYWxsYmFjayk7CisgICAgCisgICAgLyoqCisgICAgICogVGFrZSBvd25lcnNoaXAgb2YgdGhpcyB3aW5kb3cncyBJbnB1dFF1ZXVlLiAgVGhlIHdpbmRvdyB3aWxsIG5vCisgICAgICogbG9uZ2VyIHJlYWQgYW5kIGRpc3BhdGNoIGlucHV0IGV2ZW50cyBmcm9tIHRoZSBxdWV1ZTsgaXQgaXMgeW91cgorICAgICAqIHJlc3BvbnNpYmlsaXR5IHRvIGRvIHNvLgorICAgICAqLworICAgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIHRha2VJbnB1dFF1ZXVlKElucHV0UXVldWUuQ2FsbGJhY2sgY2FsbGJhY2spOworICAgIAorICAgIC8qKgogICAgICAqIFJldHVybiB3aGV0aGVyIHRoaXMgd2luZG93IGlzIGJlaW5nIGRpc3BsYXllZCB3aXRoIGEgZmxvYXRpbmcgc3R5bGUKICAgICAgKiAoYmFzZWQgb24gdGhlIHtAbGluayBhbmRyb2lkLlIuYXR0ciN3aW5kb3dJc0Zsb2F0aW5nfSBhdHRyaWJ1dGUgaW4KICAgICAgKiB0aGUgc3R5bGUvdGhlbWUpLgpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9XaW5kb3dNYW5hZ2VyLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC92aWV3L1dpbmRvd01hbmFnZXIuamF2YQppbmRleCBhZGNlZWIyLi5lZWJiYzkzIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC92aWV3L1dpbmRvd01hbmFnZXIuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC92aWV3L1dpbmRvd01hbmFnZXIuamF2YQpAQCAtNTgwLDkgKzU4MCwxMCBAQAogICAgICAgICAgKiBJZiB0aGUga2V5Z3VhcmQgaXMgY3VycmVudGx5IGFjdGl2ZSBhbmQgaXMgc2VjdXJlIChyZXF1aXJlcyBhbgogICAgICAgICAgKiB1bmxvY2sgcGF0dGVybikgdGhhbiB0aGUgdXNlciB3aWxsIHN0aWxsIG5lZWQgdG8gY29uZmlybSBpdCBiZWZvcmUKICAgICAgICAgICogc2VlaW5nIHRoaXMgd2luZG93LCB1bmxlc3Mge0BsaW5rICNGTEFHX1NIT1dfV0hFTl9MT0NLRUR9IGhhcwotICAgICAgICAgKiBhbHNvIGJlZW4gc2V0LiAqLworICAgICAgICAgKiBhbHNvIGJlZW4gc2V0LgorICAgICAgICAgKi8KICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRkxBR19ESVNNSVNTX0tFWUdVQVJEID0gMHgwMDQwMDAwMDsKLSAgICAgICAgCisKICAgICAgICAgLyoqIFdpbmRvdyBmbGFnOiAqc2lnaCogVGhlIGxvY2sgc2NyZWVuIHdhbnRzIHRvIGNvbnRpbnVlIHJ1bm5pbmcgaXRzCiAgICAgICAgICAqIGFuaW1hdGlvbiB3aGlsZSBpdCBpcyBmYWRpbmcuICBBIGtpbmQtb2YgaGFjayB0byBhbGxvdyB0aGlzLiAgTWF5YmUKICAgICAgICAgICogaW4gdGhlIGZ1dHVyZSB3ZSBqdXN0IG1ha2UgdGhpcyB0aGUgZGVmYXVsdCBiZWhhdmlvci4KZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvV2luZG93TWFuYWdlclBvbGljeS5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9XaW5kb3dNYW5hZ2VyUG9saWN5LmphdmEKaW5kZXggYjM5Y2I5ZC4uMzM3NTdmMCAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9XaW5kb3dNYW5hZ2VyUG9saWN5LmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvdmlldy9XaW5kb3dNYW5hZ2VyUG9saWN5LmphdmEKQEAgLTU0OSwyMyArNTQ5LDI2IEBACiAgICAgcHVibGljIEFuaW1hdGlvbiBjcmVhdGVGb3JjZUhpZGVFbnRlckFuaW1hdGlvbigpOwogICAgIAogICAgIC8qKgotICAgICAqIENhbGxlZCBmcm9tIHRoZSBrZXkgcXVldWUgdGhyZWFkIGJlZm9yZSBhIGtleSBpcyBkaXNwYXRjaGVkIHRvIHRoZQotICAgICAqIGlucHV0IHRocmVhZC4KKyAgICAgKiBDYWxsZWQgZnJvbSB0aGUgaW5wdXQgcmVhZGVyIHRocmVhZCBiZWZvcmUgYSBrZXkgaXMgZW5xdWV1ZWQuCiAgICAgICoKICAgICAgKiA8cD5UaGVyZSBhcmUgc29tZSBhY3Rpb25zIHRoYXQgbmVlZCB0byBiZSBoYW5kbGVkIGhlcmUgYmVjYXVzZSB0aGV5CiAgICAgICogYWZmZWN0IHRoZSBwb3dlciBzdGF0ZSBvZiB0aGUgZGV2aWNlLCBmb3IgZXhhbXBsZSwgdGhlIHBvd2VyIGtleXMuCiAgICAgICogR2VuZXJhbGx5LCBpdCdzIGJlc3QgdG8ga2VlcCBhcyBsaXR0bGUgYXMgcG9zc2libGUgaW4gdGhlIHF1ZXVlIHRocmVhZAogICAgICAqIGJlY2F1c2UgaXQncyB0aGUgbW9zdCBmcmFnaWxlLgorICAgICAqIEBwYXJhbSB3aGVuTmFub3MgVGhlIGV2ZW50IHRpbWUgaW4gdXB0aW1lIG5hbm9zZWNvbmRzLgorICAgICAqIEBwYXJhbSBrZXlDb2RlIFRoZSBrZXkgY29kZS4KKyAgICAgKiBAcGFyYW0gZG93biBUcnVlIGlmIHRoZSBrZXkgaXMgZG93bi4KKyAgICAgKiBAcGFyYW0gcG9saWN5RmxhZ3MgVGhlIHBvbGljeSBmbGFncyBhc3NvY2lhdGVkIHdpdGggdGhlIGtleS4KKyAgICAgKiBAcGFyYW0gaXNTY3JlZW5PbiBUcnVlIGlmIHRoZSBzY3JlZW4gaXMgYWxyZWFkeSBvbgogICAgICAqCi0gICAgICogQHBhcmFtIGV2ZW50IHRoZSByYXcgaW5wdXQgZXZlbnQgYXMgcmVhZCBmcm9tIHRoZSBkcml2ZXIKLSAgICAgKiBAcGFyYW0gc2NyZWVuSXNPbiB0cnVlIGlmIHRoZSBzY3JlZW4gaXMgYWxyZWFkeSBvbgogICAgICAqIEByZXR1cm4gVGhlIGJpdHdpc2Ugb3Igb2YgdGhlIHtAbGluayAjQUNUSU9OX1BBU1NfVE9fVVNFUn0sCiAgICAgICogICAgICAgICAge0BsaW5rICNBQ1RJT05fUE9LRV9VU0VSX0FDVElWSVRZfSBhbmQge0BsaW5rICNBQ1RJT05fR09fVE9fU0xFRVB9IGZsYWdzLgogICAgICAqLwotICAgIHB1YmxpYyBpbnQgaW50ZXJjZXB0S2V5VHEoUmF3SW5wdXRFdmVudCBldmVudCwgYm9vbGVhbiBzY3JlZW5Jc09uKTsKKyAgICBwdWJsaWMgaW50IGludGVyY2VwdEtleUJlZm9yZVF1ZXVlaW5nKGxvbmcgd2hlbk5hbm9zLCBpbnQga2V5Q29kZSwgYm9vbGVhbiBkb3duLCBpbnQgcG9saWN5RmxhZ3MsCisgICAgICAgICAgICBib29sZWFuIGlzU2NyZWVuT24pOwogICAgIAogICAgIC8qKgotICAgICAqIENhbGxlZCBmcm9tIHRoZSBpbnB1dCB0aHJlYWQgYmVmb3JlIGEga2V5IGlzIGRpc3BhdGNoZWQgdG8gYSB3aW5kb3cuCisgICAgICogQ2FsbGVkIGZyb20gdGhlIGlucHV0IGRpc3BhdGNoZXIgdGhyZWFkIGJlZm9yZSBhIGtleSBpcyBkaXNwYXRjaGVkIHRvIGEgd2luZG93LgogICAgICAqCiAgICAgICogPHA+QWxsb3dzIHlvdSB0byBkZWZpbmUKICAgICAgKiBiZWhhdmlvciBmb3Iga2V5cyB0aGF0IGNhbiBub3QgYmUgb3ZlcnJpZGRlbiBieSBhcHBsaWNhdGlvbnMgb3IgcmVkaXJlY3QKQEAgLTU3NywxNiArNTgwLDE3IEBACiAgICAgICogCiAgICAgICogQHBhcmFtIHdpbiBUaGUgd2luZG93IHRoYXQgY3VycmVudGx5IGhhcyBmb2N1cy4gIFRoaXMgaXMgd2hlcmUgdGhlIGtleQogICAgICAqICAgICAgICAgICAgZXZlbnQgd2lsbCBub3JtYWxseSBnby4KLSAgICAgKiBAcGFyYW0gY29kZSBLZXkgY29kZS4KLSAgICAgKiBAcGFyYW0gbWV0YUtleXMgYml0IG1hc2sgb2YgbWV0YSBrZXlzIHRoYXQgYXJlIGhlbGQuCi0gICAgICogQHBhcmFtIGRvd24gSXMgdGhpcyBhIGtleSBwcmVzcyAodHJ1ZSkgb3IgcmVsZWFzZSAoZmFsc2UpPworICAgICAqIEBwYXJhbSBhY3Rpb24gVGhlIGtleSBldmVudCBhY3Rpb24uCisgICAgICogQHBhcmFtIGZsYWdzIFRoZSBrZXkgZXZlbnQgZmxhZ3MuCisgICAgICogQHBhcmFtIGtleUNvZGUgVGhlIGtleSBjb2RlLgorICAgICAqIEBwYXJhbSBtZXRhU3RhdGUgYml0IG1hc2sgb2YgbWV0YSBrZXlzIHRoYXQgYXJlIGhlbGQuCiAgICAgICogQHBhcmFtIHJlcGVhdENvdW50IE51bWJlciBvZiB0aW1lcyBhIGtleSBkb3duIGhhcyByZXBlYXRlZC4KLSAgICAgKiBAcGFyYW0gZmxhZ3MgZXZlbnQncyBmbGFncy4KKyAgICAgKiBAcGFyYW0gcG9saWN5RmxhZ3MgVGhlIHBvbGljeSBmbGFncyBhc3NvY2lhdGVkIHdpdGggdGhlIGtleS4KICAgICAgKiBAcmV0dXJuIFJldHVybnMgdHJ1ZSBpZiB0aGUgcG9saWN5IGNvbnN1bWVkIHRoZSBldmVudCBhbmQgaXQgc2hvdWxkCiAgICAgICogbm90IGJlIGZ1cnRoZXIgZGlzcGF0Y2hlZC4KICAgICAgKi8KLSAgICBwdWJsaWMgYm9vbGVhbiBpbnRlcmNlcHRLZXlUaShXaW5kb3dTdGF0ZSB3aW4sIGludCBjb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBtZXRhS2V5cywgYm9vbGVhbiBkb3duLCBpbnQgcmVwZWF0Q291bnQsIGludCBmbGFncyk7CisgICAgcHVibGljIGJvb2xlYW4gaW50ZXJjZXB0S2V5QmVmb3JlRGlzcGF0Y2hpbmcoV2luZG93U3RhdGUgd2luLCBpbnQgYWN0aW9uLCBpbnQgZmxhZ3MsCisgICAgICAgICAgICBpbnQga2V5Q29kZSwgaW50IG1ldGFTdGF0ZSwgaW50IHJlcGVhdENvdW50LCBpbnQgcG9saWN5RmxhZ3MpOwogCiAgICAgLyoqCiAgICAgICogQ2FsbGVkIHdoZW4gbGF5b3V0IG9mIHRoZSB3aW5kb3dzIGlzIGFib3V0IHRvIHN0YXJ0LgpAQCAtNjk1LDgxICs2OTksMTMgQEAKICAgICAgKiBSZXR1cm4gd2hldGhlciB0aGUgc2NyZWVuIGlzIGN1cnJlbnRseSBvbi4KICAgICAgKi8KICAgICBwdWJsaWMgYm9vbGVhbiBpc1NjcmVlbk9uKCk7Ci0gICAgCisKICAgICAvKioKLSAgICAgKiBQZXJmb3JtIGFueSBpbml0aWFsIHByb2Nlc3Npbmcgb2YgYSBsb3ctbGV2ZWwgaW5wdXQgZXZlbnQgYmVmb3JlIHRoZQotICAgICAqIHdpbmRvdyBtYW5hZ2VyIGhhbmRsZXMgc3BlY2lhbCBrZXlzIGFuZCBnZW5lcmF0ZXMgYSBoaWdoLWxldmVsIGV2ZW50Ci0gICAgICogdGhhdCBpcyBkaXNwYXRjaGVkIHRvIHRoZSBhcHBsaWNhdGlvbi4KLSAgICAgKiAKLSAgICAgKiBAcGFyYW0gZXZlbnQgVGhlIGlucHV0IGV2ZW50IHRoYXQgaGFzIG9jY3VycmVkLgotICAgICAqIAotICAgICAqIEByZXR1cm4gUmV0dXJuIHRydWUgaWYgeW91IGhhdmUgY29uc3VtZWQgdGhlIGV2ZW50IGFuZCBkbyBub3Qgd2FudAotICAgICAqIGZ1cnRoZXIgcHJvY2Vzc2luZyB0byBvY2N1cjsgcmV0dXJuIGZhbHNlIGZvciBub3JtYWwgcHJvY2Vzc2luZy4KKyAgICAgKiBUZWxsIHRoZSBwb2xpY3kgdGhhdCB0aGUgbGlkIHN3aXRjaCBoYXMgY2hhbmdlZCBzdGF0ZS4KKyAgICAgKiBAcGFyYW0gd2hlbk5hbm9zIFRoZSB0aW1lIHdoZW4gdGhlIGNoYW5nZSBvY2N1cnJlZCBpbiB1cHRpbWUgbmFub3NlY29uZHMuCisgICAgICogQHBhcmFtIGxpZE9wZW4gVHJ1ZSBpZiB0aGUgbGlkIGlzIG5vdyBvcGVuLgogICAgICAqLwotICAgIHB1YmxpYyBib29sZWFuIHByZXByb2Nlc3NJbnB1dEV2ZW50VHEoUmF3SW5wdXRFdmVudCBldmVudCk7Ci0gICAgCi0gICAgLyoqCi0gICAgICogRGV0ZXJtaW5lIHdoZXRoZXIgYSBnaXZlbiBrZXkgY29kZSBpcyB1c2VkIHRvIGNhdXNlIGFuIGFwcCBzd2l0Y2gKLSAgICAgKiB0byBvY2N1ciAobW9zdCBvZnRlbiB0aGUgSE9NRSBrZXksIGFsc28gb2Z0ZW4gRU5EQ0FMTCkuICBJZiB5b3UgcmV0dXJuCi0gICAgICogdHJ1ZSwgdGhlbiB0aGUgc3lzdGVtIHdpbGwgZ28gaW50byBhIHNwZWNpYWwga2V5IHByb2Nlc3Npbmcgc3RhdGUKLSAgICAgKiB3aGVyZSBpdCBkcm9wcyBhbnkgcGVuZGluZyBldmVudHMgdGhhdCBpdCBjYW5zIGFuZCBhZGp1c3RzIHRpbWVvdXRzIHRvCi0gICAgICogdHJ5IHRvIGdldCB0byB0aGlzIGtleSBhcyBxdWlja2x5IGFzIHBvc3NpYmxlLgotICAgICAqIAotICAgICAqIDxwPk5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIHRoZSBsb3ctbGV2ZWwgaW5wdXQgcXVldWUKLSAgICAgKiB0aHJlYWQsIHdpdGggZWl0aGVyL29yIHRoZSB3aW5kb3cgb3IgaW5wdXQgbG9jayBoZWxkOyBiZSB2ZXJ5IGNhcmVmdWwKLSAgICAgKiBhYm91dCB3aGF0IHlvdSBkbyBoZXJlLiAgWW91IGFic29sdXRlbHkgc2hvdWxkIG5ldmVyIGFjcXVpcmUgYSBsb2NrCi0gICAgICogdGhhdCB5b3Ugd291bGQgZXZlciBob2xkIGVsc2V3aGVyZSB3aGlsZSBjYWxsaW5nIG91dCBpbnRvIHRoZSB3aW5kb3cKLSAgICAgKiBtYW5hZ2VyIG9yIHZpZXcgaGllcmFyY2h5LgotICAgICAqIAotICAgICAqIEBwYXJhbSBrZXljb2RlIFRoZSBrZXkgdGhhdCBzaG91bGQgYmUgY2hlY2tlZCBmb3IgcGVyZm9ybWluZyBhbgotICAgICAqIGFwcCBzd2l0Y2ggYmVmb3JlIGRlbGl2ZXJpbmcgdG8gdGhlIGFwcGxpY2F0aW9uLgotICAgICAqIAotICAgICAqIEByZXR1cm4gUmV0dXJuIHRydWUgaWYgdGhpcyBpcyBhbiBhcHAgc3dpdGNoIGtleSBhbmQgc3BlY2lhbCBwcm9jZXNzaW5nCi0gICAgICogc2hvdWxkIGhhcHBlbjsgcmV0dXJuIGZhbHNlIGZvciBub3JtYWwgcHJvY2Vzc2luZy4KLSAgICAgKi8KLSAgICBwdWJsaWMgYm9vbGVhbiBpc0FwcFN3aXRjaEtleVRxVGlMd0xpKGludCBrZXljb2RlKTsKLSAgICAKLSAgICAvKioKLSAgICAgKiBEZXRlcm1pbmUgd2hldGhlciBhIGdpdmVuIGtleSBjb2RlIGlzIHVzZWQgZm9yIG1vdmVtZW50IHdpdGhpbiBhIFVJLAotICAgICAqIGFuZCBkb2VzIG5vdCBnZW5lcmFsbHkgY2F1c2UgYWN0aW9ucyB0byBiZSBwZXJmb3JtZWQgKG5vcm1hbGx5IHRoZSBEUEFECi0gICAgICogbW92ZW1lbnQga2V5cywgTk9UIHRoZSBEUEFEIGNlbnRlciBwcmVzcyBrZXkpLiAgVGhpcyBpcyBjYWxsZWQKLSAgICAgKiB3aGVuIHtAbGluayAjaXNBcHBTd2l0Y2hLZXlUaUxpfSByZXR1cm5zIHRydWUgdG8gcmVtb3ZlIGFueSBwZW5kaW5nIGV2ZW50cwotICAgICAqIGluIHRoZSBrZXkgcXVldWUgdGhhdCBhcmUgbm90IG5lZWRlZCB0byBzd2l0Y2ggYXBwbGljYXRpb25zLgotICAgICAqIAotICAgICAqIDxwPk5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBmcm9tIHRoZSBsb3ctbGV2ZWwgaW5wdXQgcXVldWUKLSAgICAgKiB0aHJlYWQ7IGJlIHZlcnkgY2FyZWZ1bCBhYm91dCB3aGF0IHlvdSBkbyBoZXJlLgotICAgICAqIAotICAgICAqIEBwYXJhbSBrZXljb2RlIFRoZSBrZXkgdGhhdCBpcyB3YWl0aW5nIHRvIGJlIGRlbGl2ZXJlZCB0byB0aGUKLSAgICAgKiBhcHBsaWNhdGlvbi4KLSAgICAgKiAKLSAgICAgKiBAcmV0dXJuIFJldHVybiB0cnVlIGlmIHRoaXMgaXMgYSBwdXJlbHkgbmF2aWdhdGlvbiBrZXkgYW5kIGNhbiBiZQotICAgICAqIGRyb3BwZWQgd2l0aG91dCBuZWdhdGl2ZSBjb25zZXF1ZW5jZXM7IHJldHVybiBmYWxzZSB0byBrZWVwIGl0LgotICAgICAqLwotICAgIHB1YmxpYyBib29sZWFuIGlzTW92ZW1lbnRLZXlUaShpbnQga2V5Y29kZSk7Ci0gICAgCi0gICAgLyoqCi0gICAgICogR2l2ZW4gdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIHdvcmxkLCBzaG91bGQgdGhpcyByZWxhdGl2ZSBtb3ZlbWVudAotICAgICAqIHdha2UgdXAgdGhlIGRldmljZT8KLSAgICAgKiAKLSAgICAgKiBAcGFyYW0gZGV2aWNlIFRoZSBkZXZpY2UgdGhlIG1vdmVtZW50IGNhbWUgZnJvbS4KLSAgICAgKiBAcGFyYW0gY2xhc3NlcyBUaGUgaW5wdXQgY2xhc3NlcyBhc3NvY2lhdGVkIHdpdGggdGhlIGRldmljZS4KLSAgICAgKiBAcGFyYW0gZXZlbnQgVGhlIGlucHV0IGV2ZW50IHRoYXQgb2NjdXJyZWQuCi0gICAgICogQHJldHVybgotICAgICAqLwotICAgIHB1YmxpYyBib29sZWFuIGlzV2FrZVJlbE1vdmVtZW50VHEoaW50IGRldmljZSwgaW50IGNsYXNzZXMsCi0gICAgICAgICAgICBSYXdJbnB1dEV2ZW50IGV2ZW50KTsKLSAgICAKLSAgICAvKioKLSAgICAgKiBHaXZlbiB0aGUgY3VycmVudCBzdGF0ZSBvZiB0aGUgd29ybGQsIHNob3VsZCB0aGlzIGFic29sdXRlIG1vdmVtZW50Ci0gICAgICogd2FrZSB1cCB0aGUgZGV2aWNlPwotICAgICAqIAotICAgICAqIEBwYXJhbSBkZXZpY2UgVGhlIGRldmljZSB0aGUgbW92ZW1lbnQgY2FtZSBmcm9tLgotICAgICAqIEBwYXJhbSBjbGFzc2VzIFRoZSBpbnB1dCBjbGFzc2VzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZGV2aWNlLgotICAgICAqIEBwYXJhbSBldmVudCBUaGUgaW5wdXQgZXZlbnQgdGhhdCBvY2N1cnJlZC4KLSAgICAgKiBAcmV0dXJuCi0gICAgICovCi0gICAgcHVibGljIGJvb2xlYW4gaXNXYWtlQWJzTW92ZW1lbnRUcShpbnQgZGV2aWNlLCBpbnQgY2xhc3NlcywKLSAgICAgICAgICAgIFJhd0lucHV0RXZlbnQgZXZlbnQpOworICAgIHB1YmxpYyB2b2lkIG5vdGlmeUxpZFN3aXRjaENoYW5nZWQobG9uZyB3aGVuTmFub3MsIGJvb2xlYW4gbGlkT3Blbik7CiAgICAgCiAgICAgLyoqCiAgICAgICogVGVsbCB0aGUgcG9saWN5IGlmIGFueW9uZSBpcyByZXF1ZXN0aW5nIHRoYXQga2V5Z3VhcmQgbm90IGNvbWUgb24uCkBAIC04NDQsMTggKzc4MCw2IEBACiAgICAgcHVibGljIHZvaWQgZW5hYmxlU2NyZWVuQWZ0ZXJCb290KCk7CiAgICAgCiAgICAgLyoqCi0gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSB1c2VyJ3MgY2hlZWsgaGFzIGJlZW4gcHJlc3NlZCBhZ2FpbnN0IHRoZSBwaG9uZS4gVGhpcyBpcyAKLSAgICAgKiBkZXRlcm1pbmVkIGJ5IGNvbXBhcmluZyB0aGUgZXZlbnQncyBzaXplIGF0dHJpYnV0ZSB3aXRoIGEgdGhyZXNob2xkIHZhbHVlLgotICAgICAqIEZvciBleGFtcGxlIGZvciBhIG1vdGlvbiBldmVudCBsaWtlIGRvd24gb3IgdXAgb3IgbW92ZSwgaWYgdGhlIHNpemUgZXhjZWVkcwotICAgICAqIHRoZSB0aHJlc2hvbGQsIGl0IGlzIGNvbnNpZGVyZWQgYXMgY2hlZWsgcHJlc3MuCi0gICAgICogQHBhcmFtIGV2IHRoZSBtb3Rpb24gZXZlbnQgZ2VuZXJhdGVkIHdoZW4gdGhlIGNoZWVrIGlzIHByZXNzZWQgCi0gICAgICogYWdhaW5zdCB0aGUgcGhvbmUKLSAgICAgKiBAcmV0dXJuIFJldHVybnMgdHJ1ZSBpZiB0aGUgdXNlcidzIGNoZWVrIGhhcyBiZWVuIHByZXNzZWQgYWdhaW5zdCB0aGUgcGhvbmUKLSAgICAgKiBzY3JlZW4gcmVzdWx0aW5nIGluIGFuIGludmFsaWQgbW90aW9uIGV2ZW50Ci0gICAgICovCi0gICAgcHVibGljIGJvb2xlYW4gaXNDaGVla1ByZXNzZWRBZ2FpbnN0U2NyZWVuKE1vdGlvbkV2ZW50IGV2KTsKLSAgICAKLSAgICAvKioKICAgICAgKiBDYWxsZWQgZXZlcnkgdGltZSB0aGUgd2luZG93IG1hbmFnZXIgaXMgZGlzcGF0Y2hpbmcgYSBwb2ludGVyIGV2ZW50LgogICAgICAqLwogICAgIHB1YmxpYyB2b2lkIGRpc3BhdGNoZWRQb2ludGVyRXZlbnRMdyhNb3Rpb25FdmVudCBldiwgaW50IHRhcmdldFgsIGludCB0YXJnZXRZKTsKQEAgLTg2OCwxMyArNzkyLDYgQEAKICAgICBwdWJsaWMgYm9vbGVhbiBwZXJmb3JtSGFwdGljRmVlZGJhY2tMdyhXaW5kb3dTdGF0ZSB3aW4sIGludCBlZmZlY3RJZCwgYm9vbGVhbiBhbHdheXMpOwogICAgIAogICAgIC8qKgotICAgICAqIEEgc3BlY2lhbCBmdW5jdGlvbiB0aGF0IGlzIGNhbGxlZCBmcm9tIHRoZSB2ZXJ5IGxvdy1sZXZlbCBpbnB1dCBxdWV1ZQotICAgICAqIHRvIHByb3ZpZGUgZmVlZGJhY2sgdG8gdGhlIHVzZXIuICBDdXJyZW50bHkgb25seSBjYWxsZWQgZm9yIHZpcnR1YWwKLSAgICAgKiBrZXlzLgotICAgICAqLwotICAgIHB1YmxpYyB2b2lkIGtleUZlZWRiYWNrRnJvbUlucHV0KEtleUV2ZW50IGV2ZW50KTsKLSAgICAKLSAgICAvKioKICAgICAgKiBDYWxsZWQgd2hlbiB3ZSBoYXZlIHN0b3BwZWQga2VlcGluZyB0aGUgc2NyZWVuIG9uIGJlY2F1c2UgYSB3aW5kb3cKICAgICAgKiByZXF1ZXN0aW5nIHRoaXMgaXMgbm8gbG9uZ2VyIHZpc2libGUuCiAgICAgICovCmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC93ZWJraXQvTWltZVR5cGVNYXAuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL3dlYmtpdC9NaW1lVHlwZU1hcC5qYXZhCmluZGV4IDAzNGM4OGEuLmNhOWFkNTMgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL3dlYmtpdC9NaW1lVHlwZU1hcC5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL3dlYmtpdC9NaW1lVHlwZU1hcC5qYXZhCkBAIC02Nyw3ICs2Nyw3IEBACiAgICAgICAgICAgICAvLyBpZiB0aGUgZmlsZW5hbWUgY29udGFpbnMgc3BlY2lhbCBjaGFyYWN0ZXJzLCB3ZSBkb24ndAogICAgICAgICAgICAgLy8gY29uc2lkZXIgaXQgdmFsaWQgZm9yIG91ciBtYXRjaGluZyBwdXJwb3NlczoKICAgICAgICAgICAgIGlmIChmaWxlbmFtZS5sZW5ndGgoKSA+IDAgJiYKLSAgICAgICAgICAgICAgICBQYXR0ZXJuLm1hdGNoZXMoIlthLXpBLVpfMC05XFwuXFwtXFwoXFwpXSsiLCBmaWxlbmFtZSkpIHsKKyAgICAgICAgICAgICAgICBQYXR0ZXJuLm1hdGNoZXMoIlthLXpBLVpfMC05XFwuXFwtXFwoXFwpXFwlXSsiLCBmaWxlbmFtZSkpIHsKICAgICAgICAgICAgICAgICBpbnQgZG90UG9zID0gZmlsZW5hbWUubGFzdEluZGV4T2YoJy4nKTsKICAgICAgICAgICAgICAgICBpZiAoMCA8PSBkb3RQb3MpIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZpbGVuYW1lLnN1YnN0cmluZyhkb3RQb3MgKyAxKTsKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL3dlYmtpdC9XZWJWaWV3LmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC93ZWJraXQvV2ViVmlldy5qYXZhCmluZGV4IDJkZjI1MGQuLmJmNzUxZjUgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL3dlYmtpdC9XZWJWaWV3LmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvd2Via2l0L1dlYlZpZXcuamF2YQpAQCAtMjM2LDE0ICsyMzYsMTQgQEAKICAqCiAgKiA8aDM+QnVpbGRpbmcgd2ViIHBhZ2VzIHRvIHN1cHBvcnQgZGlmZmVyZW50IHNjcmVlbiBkZW5zaXRpZXM8L2gzPgogICoKLSAqIDxwPkEgc2NyZWVuJ3MgZGVuc2l0eSBpcyBiYXNlZCBvbiBpdCdzIHNjcmVlbiByZXNvbHV0aW9uIGFuZCBwaHlzaWNhbCBzaXplLiBBIHNjcmVlbiB3aXRoIGxvdwotICogZGVuc2l0eSBoYXMgZmV3ZXIgYXZhaWxhYmxlIHBpeGVscyBwZXIgaW5jaCwgd2hlcmUgYSBzY3JlZW4gd2l0aCBoaWdoIGRlbnNpdHkKLSAqIGhhcyBtb3JlIC0tIHNvbWV0aW1lcyBzaWduaWZpY2FudGx5IG1vcmUgLS0gcGl4ZWxzIHBlciBpbmNoLiBUaGUgZGVuc2l0eSBvZiBhCisgKiA8cD5UaGUgc2NyZWVuIGRlbnNpdHkgb2YgYSBkZXZpY2UgaXMgYmFzZWQgb24gdGhlIHNjcmVlbiByZXNvbHV0aW9uLiBBIHNjcmVlbiB3aXRoIGxvdyBkZW5zaXR5CisgKiBoYXMgZmV3ZXIgYXZhaWxhYmxlIHBpeGVscyBwZXIgaW5jaCwgd2hlcmUgYSBzY3JlZW4gd2l0aCBoaWdoIGRlbnNpdHkKKyAqIGhhcyBtb3JlICZtZGFzaDsgc29tZXRpbWVzIHNpZ25pZmljYW50bHkgbW9yZSAmbWRhc2g7IHBpeGVscyBwZXIgaW5jaC4gVGhlIGRlbnNpdHkgb2YgYQogICogc2NyZWVuIGlzIGltcG9ydGFudCBiZWNhdXNlLCBvdGhlciB0aGluZ3MgYmVpbmcgZXF1YWwsIGEgVUkgZWxlbWVudCAoc3VjaCBhcyBhIGJ1dHRvbikgd2hvc2UKICAqIGhlaWdodCBhbmQgd2lkdGggYXJlIGRlZmluZWQgaW4gdGVybXMgb2Ygc2NyZWVuIHBpeGVscyB3aWxsIGFwcGVhciBsYXJnZXIgb24gdGhlIGxvd2VyIGRlbnNpdHkKLSAqIHNjcmVlbiBhbmQgc21hbGxlciBvbiB0aGUgaGlnaGVyIGRlbnNpdHkgc2NyZWVuLiBGb3Igc2ltcGxpY2l0eSwgQW5kcm9pZCBjb2xsYXBzZXMgYWxsCi0gKiBhY3R1YWwgc2NyZWVuIGRlbnNpdGllcyBpbnRvIHRocmVlIGdlbmVyYWxpemVkIGRlbnNpdGllczpoaWdoLCBtZWRpdW0sIGFuZCBsb3cuIDwvcD4KLSAqCisgKiBzY3JlZW4gYW5kIHNtYWxsZXIgb24gdGhlIGhpZ2hlciBkZW5zaXR5IHNjcmVlbi4KKyAqIEZvciBzaW1wbGljaXR5LCBBbmRyb2lkIGNvbGxhcHNlcyBhbGwgYWN0dWFsIHNjcmVlbiBkZW5zaXRpZXMgaW50byB0aHJlZSBnZW5lcmFsaXplZCBkZW5zaXRpZXM6CisgKiBoaWdoLCBtZWRpdW0sIGFuZCBsb3cuPC9wPgogICogPHA+QnkgZGVmYXVsdCwgV2ViVmlldyBzY2FsZXMgYSB3ZWIgcGFnZSBzbyB0aGF0IGl0IGlzIGRyYXduIGF0IGEgc2l6ZSB0aGF0IG1hdGNoZXMgdGhlIGRlZmF1bHQKICAqIGFwcGVhcmFuY2Ugb24gYSBtZWRpdW0gZGVuc2l0eSBzY3JlZW4uIFNvLCBpdCBhcHBsaWVzIDEuNXggc2NhbGluZyBvbiBhIGhpZ2ggZGVuc2l0eSBzY3JlZW4KICAqIChiZWNhdXNlIGl0cyBwaXhlbHMgYXJlIHNtYWxsZXIpIGFuZCAwLjc1eCBzY2FsaW5nIG9uIGEgbG93IGRlbnNpdHkgc2NyZWVuIChiZWNhdXNlIGl0cyBwaXhlbHMKQEAgLTEzODAsMTYgKzEzODAsMjMgQEAKICAgICAgICAgZmluYWwgRmlsZSB0ZW1wID0gbmV3IEZpbGUoZGVzdC5nZXRQYXRoKCkgKyAiLndyaXRpbmciKTsKICAgICAgICAgbmV3IFRocmVhZChuZXcgUnVubmFibGUoKSB7CiAgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAgICAgRmlsZU91dHB1dFN0cmVhbSBvdXQgPSBudWxsOwogICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIEZpbGVPdXRwdXRTdHJlYW0gb3V0ID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0odGVtcCk7CisgICAgICAgICAgICAgICAgICAgIG91dCA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKHRlbXApOwogICAgICAgICAgICAgICAgICAgICBwLndyaXRlVG9TdHJlYW0ob3V0KTsKLSAgICAgICAgICAgICAgICAgICAgb3V0LmNsb3NlKCk7CiAgICAgICAgICAgICAgICAgICAgIC8vIFdyaXRpbmcgdGhlIHBpY3R1cmUgc3VjY2VlZGVkLCByZW5hbWUgdGhlIHRlbXBvcmFyeSBmaWxlCiAgICAgICAgICAgICAgICAgICAgIC8vIHRvIHRoZSBkZXN0aW5hdGlvbi4KICAgICAgICAgICAgICAgICAgICAgdGVtcC5yZW5hbWVUbyhkZXN0KTsKICAgICAgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgewogICAgICAgICAgICAgICAgICAgICAvLyB0b28gbGF0ZSB0byBkbyBhbnl0aGluZyBhYm91dCBpdC4KICAgICAgICAgICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgICAgICAgICBpZiAob3V0ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0LmNsb3NlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENhbid0IGRvIGFueXRoaW5nIGFib3V0IHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB0ZW1wLmRlbGV0ZSgpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTE0NDIsMjAgKzE0NDksMjMgQEAKICAgICAgICAgICAgIGZpbmFsIEJ1bmRsZSBjb3B5ID0gbmV3IEJ1bmRsZShiKTsKICAgICAgICAgICAgIG5ldyBUaHJlYWQobmV3IFJ1bm5hYmxlKCkgewogICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKLSAgICAgICAgICAgICAgICAgICAgZmluYWwgUGljdHVyZSBwID0gUGljdHVyZS5jcmVhdGVGcm9tU3RyZWFtKGluKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHAgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gUG9zdCBhIHJ1bm5hYmxlIG9uIHRoZSBtYWluIHRocmVhZCB0byB1cGRhdGUgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBoaXN0b3J5IHBpY3R1cmUgZmllbGRzLgotICAgICAgICAgICAgICAgICAgICAgICAgbVByaXZhdGVIYW5kbGVyLnBvc3QobmV3IFJ1bm5hYmxlKCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdG9yZUhpc3RvcnlQaWN0dXJlRmllbGRzKHAsIGNvcHkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbi5jbG9zZSgpOwotICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm90aGluZyB3ZSBjYW4gZG8gbm93LgorICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgUGljdHVyZSBwID0gUGljdHVyZS5jcmVhdGVGcm9tU3RyZWFtKGluKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBQb3N0IGEgcnVubmFibGUgb24gdGhlIG1haW4gdGhyZWFkIHRvIHVwZGF0ZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBoaXN0b3J5IHBpY3R1cmUgZmllbGRzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Qcml2YXRlSGFuZGxlci5wb3N0KG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdG9yZUhpc3RvcnlQaWN0dXJlRmllbGRzKHAsIGNvcHkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluLmNsb3NlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vdGhpbmcgd2UgY2FuIGRvIG5vdy4KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0pLnN0YXJ0KCk7CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC93aWRnZXQvQWJzTGlzdFZpZXcuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL3dpZGdldC9BYnNMaXN0Vmlldy5qYXZhCmluZGV4IGZjZmVjYjMuLjZjZmViNjggMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL3dpZGdldC9BYnNMaXN0Vmlldy5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL3dpZGdldC9BYnNMaXN0Vmlldy5qYXZhCkBAIC0yMDU2LDYgKzIwNTYsMTQgQEAKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAoeSAhPSBtTGFzdFkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gV2UgbWF5IGJlIGhlcmUgYWZ0ZXIgc3RvcHBpbmcgYSBmbGluZyBhbmQgY29udGludWluZyB0byBzY3JvbGwuCisgICAgICAgICAgICAgICAgICAgIC8vIElmIHNvLCB3ZSBoYXZlbid0IGRpc2FsbG93ZWQgaW50ZXJjZXB0aW5nIHRvdWNoIGV2ZW50cyB5ZXQuCisgICAgICAgICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHdlIGRvIHNvIGluIGNhc2Ugd2UncmUgaW4gYSBwYXJlbnQgdGhhdCBjYW4gaW50ZXJjZXB0LgorICAgICAgICAgICAgICAgICAgICBpZiAoKG1Hcm91cEZsYWdzICYgRkxBR19ESVNBTExPV19JTlRFUkNFUFQpID09IDAgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYXRoLmFicyhkZWx0YVkpID4gbVRvdWNoU2xvcCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdERpc2FsbG93SW50ZXJjZXB0VG91Y2hFdmVudCh0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgfQorCiAgICAgICAgICAgICAgICAgICAgIGRlbHRhWSAtPSBtTW90aW9uQ29ycmVjdGlvbjsKICAgICAgICAgICAgICAgICAgICAgaW50IGluY3JlbWVudGFsRGVsdGFZID0gbUxhc3RZICE9IEludGVnZXIuTUlOX1ZBTFVFID8geSAtIG1MYXN0WSA6IGRlbHRhWTsKICAgICAgICAgICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC93aWRnZXQvQ3Vyc29yVHJlZUFkYXB0ZXIuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL3dpZGdldC9DdXJzb3JUcmVlQWRhcHRlci5qYXZhCmluZGV4IDdiOWI3YmQuLjNmYWRmNGMgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL3dpZGdldC9DdXJzb3JUcmVlQWRhcHRlci5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL3dpZGdldC9DdXJzb3JUcmVlQWRhcHRlci5qYXZhCkBAIC0xMzQsMTQgKzEzNCwxNiBAQAogICAgIC8qKgogICAgICAqIFNldHMgdGhlIGdyb3VwIEN1cnNvci4KICAgICAgKiAKLSAgICAgKiBAcGFyYW0gY3Vyc29yIFRoZSBDdXJzb3IgdG8gc2V0IGZvciB0aGUgZ3JvdXAuCisgICAgICogQHBhcmFtIGN1cnNvciBUaGUgQ3Vyc29yIHRvIHNldCBmb3IgdGhlIGdyb3VwLiBJZiB0aGVyZSBpcyBhbiBleGlzdGluZyBjdXJzb3IgCisgICAgICogaXQgd2lsbCBiZSBjbG9zZWQuCiAgICAgICovCiAgICAgcHVibGljIHZvaWQgc2V0R3JvdXBDdXJzb3IoQ3Vyc29yIGN1cnNvcikgewogICAgICAgICBtR3JvdXBDdXJzb3JIZWxwZXIuY2hhbmdlQ3Vyc29yKGN1cnNvciwgZmFsc2UpOwogICAgIH0KICAgICAKICAgICAvKioKLSAgICAgKiBTZXRzIHRoZSBjaGlsZHJlbiBDdXJzb3IgZm9yIGEgcGFydGljdWxhciBncm91cC4KKyAgICAgKiBTZXRzIHRoZSBjaGlsZHJlbiBDdXJzb3IgZm9yIGEgcGFydGljdWxhciBncm91cC4gSWYgdGhlcmUgaXMgYW4gZXhpc3RpbmcgY3Vyc29yCisgICAgICogaXQgd2lsbCBiZSBjbG9zZWQuCiAgICAgICogPHA+CiAgICAgICogVGhpcyBpcyB1c2VmdWwgd2hlbiBhc3luY2hyb25vdXNseSBxdWVyeWluZyB0byBwcmV2ZW50IGJsb2NraW5nIHRoZSBVSS4KICAgICAgKiAKQEAgLTQ3Niw3ICs0NzgsNyBAQAogICAgICAgICAgICAgCiAgICAgICAgICAgICBtQ3Vyc29yLnVucmVnaXN0ZXJDb250ZW50T2JzZXJ2ZXIobUNvbnRlbnRPYnNlcnZlcik7CiAgICAgICAgICAgICBtQ3Vyc29yLnVucmVnaXN0ZXJEYXRhU2V0T2JzZXJ2ZXIobURhdGFTZXRPYnNlcnZlcik7Ci0gICAgICAgICAgICBtQ3Vyc29yLmRlYWN0aXZhdGUoKTsKKyAgICAgICAgICAgIG1DdXJzb3IuY2xvc2UoKTsKICAgICAgICAgICAgIG1DdXJzb3IgPSBudWxsOwogICAgICAgICB9CiAgICAgICAgIApkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvd2lkZ2V0L0RhdGVQaWNrZXIuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL3dpZGdldC9EYXRlUGlja2VyLmphdmEKaW5kZXggYjNkNWYxYS4uMWZjMjNhYiAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvd2lkZ2V0L0RhdGVQaWNrZXIuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC93aWRnZXQvRGF0ZVBpY2tlci5qYXZhCkBAIC0zMjgsNiArMzI4LDcgQEAKICAgICAgICAgbVllYXIgPSBzcy5nZXRZZWFyKCk7CiAgICAgICAgIG1Nb250aCA9IHNzLmdldE1vbnRoKCk7CiAgICAgICAgIG1EYXkgPSBzcy5nZXREYXkoKTsKKyAgICAgICAgdXBkYXRlU3Bpbm5lcnMoKTsKICAgICB9CiAKICAgICAvKioKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL3dpZGdldC9HYWxsZXJ5LmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC93aWRnZXQvR2FsbGVyeS5qYXZhCmluZGV4IGYzNDgyM2MuLjFlZDZiMTYgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL3dpZGdldC9HYWxsZXJ5LmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvd2lkZ2V0L0dhbGxlcnkuamF2YQpAQCAtMTA4Nyw3ICsxMDg3LDcgQEAKICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgYm9vbGVhbiBkaXNwYXRjaEtleUV2ZW50KEtleUV2ZW50IGV2ZW50KSB7CiAgICAgICAgIC8vIEdhbGxlcnkgc3RlYWxzIGFsbCBrZXkgZXZlbnRzCi0gICAgICAgIHJldHVybiBldmVudC5kaXNwYXRjaCh0aGlzKTsKKyAgICAgICAgcmV0dXJuIGV2ZW50LmRpc3BhdGNoKHRoaXMsIG51bGwsIG51bGwpOwogICAgIH0KIAogICAgIC8qKgpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvd2lkZ2V0L01lZGlhQ29udHJvbGxlci5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvd2lkZ2V0L01lZGlhQ29udHJvbGxlci5qYXZhCmluZGV4IGMyNDZjMjQ3Li4zOWIxMzc3IDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC93aWRnZXQvTWVkaWFDb250cm9sbGVyLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvd2lkZ2V0L01lZGlhQ29udHJvbGxlci5qYXZhCkBAIC0xMjMsNyArMTIzLDcgQEAKICAgICB9CiAKICAgICBwcml2YXRlIHZvaWQgaW5pdEZsb2F0aW5nV2luZG93KCkgewotICAgICAgICBtV2luZG93TWFuYWdlciA9IChXaW5kb3dNYW5hZ2VyKW1Db250ZXh0LmdldFN5c3RlbVNlcnZpY2UoIndpbmRvdyIpOworICAgICAgICBtV2luZG93TWFuYWdlciA9IChXaW5kb3dNYW5hZ2VyKW1Db250ZXh0LmdldFN5c3RlbVNlcnZpY2UoQ29udGV4dC5XSU5ET1dfU0VSVklDRSk7CiAgICAgICAgIG1XaW5kb3cgPSBQb2xpY3lNYW5hZ2VyLm1ha2VOZXdXaW5kb3cobUNvbnRleHQpOwogICAgICAgICBtV2luZG93LnNldFdpbmRvd01hbmFnZXIobVdpbmRvd01hbmFnZXIsIG51bGwsIG51bGwpOwogICAgICAgICBtV2luZG93LnJlcXVlc3RGZWF0dXJlKFdpbmRvdy5GRUFUVVJFX05PX1RJVExFKTsKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9hbmRyb2lkL3dpZGdldC9Qcm9ncmVzc0Jhci5qYXZhIGIvY29yZS9qYXZhL2FuZHJvaWQvd2lkZ2V0L1Byb2dyZXNzQmFyLmphdmEKaW5kZXggMjAyZTY1OC4uOGU5ZWIwNSAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2FuZHJvaWQvd2lkZ2V0L1Byb2dyZXNzQmFyLmphdmEKKysrIGIvY29yZS9qYXZhL2FuZHJvaWQvd2lkZ2V0L1Byb2dyZXNzQmFyLmphdmEKQEAgLTk0Nyw0ICs5NDcsMjAgQEAKICAgICAgICAgc2V0UHJvZ3Jlc3Moc3MucHJvZ3Jlc3MpOwogICAgICAgICBzZXRTZWNvbmRhcnlQcm9ncmVzcyhzcy5zZWNvbmRhcnlQcm9ncmVzcyk7CiAgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgb25BdHRhY2hlZFRvV2luZG93KCkgeworICAgICAgICBzdXBlci5vbkF0dGFjaGVkVG9XaW5kb3coKTsKKyAgICAgICAgaWYgKG1JbmRldGVybWluYXRlKSB7CisgICAgICAgICAgICBzdGFydEFuaW1hdGlvbigpOworICAgICAgICB9CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgb25EZXRhY2hlZEZyb21XaW5kb3coKSB7CisgICAgICAgIHN1cGVyLm9uRGV0YWNoZWRGcm9tV2luZG93KCk7CisgICAgICAgIGlmIChtSW5kZXRlcm1pbmF0ZSkgeworICAgICAgICAgICAgc3RvcEFuaW1hdGlvbigpOworICAgICAgICB9CisgICAgfQogfQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvd2lkZ2V0L1JlbW90ZVZpZXdzLmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC93aWRnZXQvUmVtb3RlVmlld3MuamF2YQppbmRleCAzMDAzNTgwLi43YTcwYzgwIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC93aWRnZXQvUmVtb3RlVmlld3MuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC93aWRnZXQvUmVtb3RlVmlld3MuamF2YQpAQCAtMTAwLDYgKzEwMCw3IEBACiAgICAgICogQmFzZSBjbGFzcyBmb3IgYWxsIGFjdGlvbnMgdGhhdCBjYW4gYmUgcGVyZm9ybWVkIG9uIGFuIAogICAgICAqIGluZmxhdGVkIHZpZXcuCiAgICAgICoKKyAgICAgKiAgU1VCQ0xBU1NFUyBNVVNUIEJFIElNTVVUQUJMRSBTTyBDTE9ORSBXT1JLUyEhISEhCiAgICAgICovCiAgICAgcHJpdmF0ZSBhYnN0cmFjdCBzdGF0aWMgY2xhc3MgQWN0aW9uIGltcGxlbWVudHMgUGFyY2VsYWJsZSB7CiAgICAgICAgIHB1YmxpYyBhYnN0cmFjdCB2b2lkIGFwcGx5KFZpZXcgcm9vdCkgdGhyb3dzIEFjdGlvbkV4Y2VwdGlvbjsKQEAgLTU2OCw2ICs1NjksMTQgQEAKICAgICAgICAgfQogICAgIH0KIAorICAgIHB1YmxpYyBSZW1vdGVWaWV3cyBjbG9uZSgpIHsKKyAgICAgICAgZmluYWwgUmVtb3RlVmlld3MgdGhhdCA9IG5ldyBSZW1vdGVWaWV3cyhtUGFja2FnZSwgbUxheW91dElkKTsKKyAgICAgICAgaWYgKG1BY3Rpb25zICE9IG51bGwpIHsKKyAgICAgICAgICAgIHRoYXQubUFjdGlvbnMgPSAoQXJyYXlMaXN0PEFjdGlvbj4pbUFjdGlvbnMuY2xvbmUoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdGhhdDsKKyAgICB9CisKICAgICBwdWJsaWMgU3RyaW5nIGdldFBhY2thZ2UoKSB7CiAgICAgICAgIHJldHVybiBtUGFja2FnZTsKICAgICB9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvYW5kcm9pZC93aWRnZXQvU2ltcGxlQ3Vyc29yVHJlZUFkYXB0ZXIuamF2YSBiL2NvcmUvamF2YS9hbmRyb2lkL3dpZGdldC9TaW1wbGVDdXJzb3JUcmVlQWRhcHRlci5qYXZhCmluZGV4IGExYzY1ZjAuLmEwMzM1NDIgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9hbmRyb2lkL3dpZGdldC9TaW1wbGVDdXJzb3JUcmVlQWRhcHRlci5qYXZhCisrKyBiL2NvcmUvamF2YS9hbmRyb2lkL3dpZGdldC9TaW1wbGVDdXJzb3JUcmVlQWRhcHRlci5qYXZhCkBAIC0zOCw2ICszOCwxMCBAQAogICogYmluZGluZyBjYW4gYmUgZm91bmQsIGFuIHtAbGluayBJbGxlZ2FsU3RhdGVFeGNlcHRpb259IGlzIHRocm93bi4KICAqLwogcHVibGljIGFic3RyYWN0IGNsYXNzIFNpbXBsZUN1cnNvclRyZWVBZGFwdGVyIGV4dGVuZHMgUmVzb3VyY2VDdXJzb3JUcmVlQWRhcHRlciB7CisgICAgCisgICAgLyoqIFRoZSBuYW1lIG9mIHRoZSBjb2x1bW5zIHRoYXQgY29udGFpbiB0aGUgZGF0YSB0byBkaXNwbGF5IGZvciBhIGdyb3VwLiAqLworICAgIHByaXZhdGUgU3RyaW5nW10gbUdyb3VwRnJvbU5hbWVzOworICAgIAogICAgIC8qKiBUaGUgaW5kaWNlcyBvZiBjb2x1bW5zIHRoYXQgY29udGFpbiBkYXRhIHRvIGRpc3BsYXkgZm9yIGEgZ3JvdXAuICovCiAgICAgcHJpdmF0ZSBpbnRbXSBtR3JvdXBGcm9tOwogICAgIC8qKgpAQCAtNDYsNiArNTAsOSBAQAogICAgICAqLwogICAgIHByaXZhdGUgaW50W10gbUdyb3VwVG87CiAKKyAgICAvKiogVGhlIG5hbWUgb2YgdGhlIGNvbHVtbnMgdGhhdCBjb250YWluIHRoZSBkYXRhIHRvIGRpc3BsYXkgZm9yIGEgY2hpbGQuICovCisgICAgcHJpdmF0ZSBTdHJpbmdbXSBtQ2hpbGRGcm9tTmFtZXM7CisgICAgCiAgICAgLyoqIFRoZSBpbmRpY2VzIG9mIGNvbHVtbnMgdGhhdCBjb250YWluIGRhdGEgdG8gZGlzcGxheSBmb3IgYSBjaGlsZC4gKi8KICAgICBwcml2YXRlIGludFtdIG1DaGlsZEZyb207CiAgICAgLyoqCkBAIC0xNzEsMzggKzE3OCwxMiBAQAogCiAgICAgcHJpdmF0ZSB2b2lkIGluaXQoU3RyaW5nW10gZ3JvdXBGcm9tTmFtZXMsIGludFtdIGdyb3VwVG8sIFN0cmluZ1tdIGNoaWxkRnJvbU5hbWVzLAogICAgICAgICAgICAgaW50W10gY2hpbGRUbykgeworICAgICAgICAKKyAgICAgICAgbUdyb3VwRnJvbU5hbWVzID0gZ3JvdXBGcm9tTmFtZXM7CiAgICAgICAgIG1Hcm91cFRvID0gZ3JvdXBUbzsKICAgICAgICAgCisgICAgICAgIG1DaGlsZEZyb21OYW1lcyA9IGNoaWxkRnJvbU5hbWVzOwogICAgICAgICBtQ2hpbGRUbyA9IGNoaWxkVG87Ci0gICAgICAgIAotICAgICAgICAvLyBHZXQgdGhlIGdyb3VwIGN1cnNvciBjb2x1bW4gaW5kaWNlcywgdGhlIGNoaWxkIGN1cnNvciBjb2x1bW4gaW5kaWNlcyB3aWxsIGNvbWUKLSAgICAgICAgLy8gd2hlbiBuZWVkZWQKLSAgICAgICAgaW5pdEdyb3VwRnJvbUNvbHVtbnMoZ3JvdXBGcm9tTmFtZXMpOwotICAgICAgICAKLSAgICAgICAgLy8gR2V0IGEgdGVtcG9yYXJ5IGNoaWxkIGN1cnNvciB0byBpbml0IHRoZSBjb2x1bW4gaW5kaWNlcwotICAgICAgICBpZiAoZ2V0R3JvdXBDb3VudCgpID4gMCkgewotICAgICAgICAgICAgTXlDdXJzb3JIZWxwZXIgdG1wQ3Vyc29ySGVscGVyID0gZ2V0Q2hpbGRyZW5DdXJzb3JIZWxwZXIoMCwgdHJ1ZSk7Ci0gICAgICAgICAgICBpZiAodG1wQ3Vyc29ySGVscGVyICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBpbml0Q2hpbGRyZW5Gcm9tQ29sdW1ucyhjaGlsZEZyb21OYW1lcywgdG1wQ3Vyc29ySGVscGVyLmdldEN1cnNvcigpKTsKLSAgICAgICAgICAgICAgICBkZWFjdGl2YXRlQ2hpbGRyZW5DdXJzb3JIZWxwZXIoMCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgcHJpdmF0ZSB2b2lkIGluaXRGcm9tQ29sdW1ucyhDdXJzb3IgY3Vyc29yLCBTdHJpbmdbXSBmcm9tQ29sdW1uTmFtZXMsIGludFtdIGZyb21Db2x1bW5zKSB7Ci0gICAgICAgIGZvciAoaW50IGkgPSBmcm9tQ29sdW1uTmFtZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsKLSAgICAgICAgICAgIGZyb21Db2x1bW5zW2ldID0gY3Vyc29yLmdldENvbHVtbkluZGV4T3JUaHJvdyhmcm9tQ29sdW1uTmFtZXNbaV0pOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIHByaXZhdGUgdm9pZCBpbml0R3JvdXBGcm9tQ29sdW1ucyhTdHJpbmdbXSBncm91cEZyb21OYW1lcykgewotICAgICAgICBtR3JvdXBGcm9tID0gbmV3IGludFtncm91cEZyb21OYW1lcy5sZW5ndGhdOwotICAgICAgICBpbml0RnJvbUNvbHVtbnMobUdyb3VwQ3Vyc29ySGVscGVyLmdldEN1cnNvcigpLCBncm91cEZyb21OYW1lcywgbUdyb3VwRnJvbSk7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSB2b2lkIGluaXRDaGlsZHJlbkZyb21Db2x1bW5zKFN0cmluZ1tdIGNoaWxkRnJvbU5hbWVzLCBDdXJzb3IgY2hpbGRDdXJzb3IpIHsKLSAgICAgICAgbUNoaWxkRnJvbSA9IG5ldyBpbnRbY2hpbGRGcm9tTmFtZXMubGVuZ3RoXTsKLSAgICAgICAgaW5pdEZyb21Db2x1bW5zKGNoaWxkQ3Vyc29yLCBjaGlsZEZyb21OYW1lcywgbUNoaWxkRnJvbSk7CiAgICAgfQogICAgIAogICAgIC8qKgpAQCAtMjU3LDEzICsyMzgsMjkgQEAKICAgICAgICAgfQogICAgIH0KICAgICAKKyAgICBwcml2YXRlIHZvaWQgaW5pdEZyb21Db2x1bW5zKEN1cnNvciBjdXJzb3IsIFN0cmluZ1tdIGZyb21Db2x1bW5OYW1lcywgaW50W10gZnJvbUNvbHVtbnMpIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IGZyb21Db2x1bW5OYW1lcy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgeworICAgICAgICAgICAgZnJvbUNvbHVtbnNbaV0gPSBjdXJzb3IuZ2V0Q29sdW1uSW5kZXhPclRocm93KGZyb21Db2x1bW5OYW1lc1tpXSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCiAgICAgQE92ZXJyaWRlCiAgICAgcHJvdGVjdGVkIHZvaWQgYmluZENoaWxkVmlldyhWaWV3IHZpZXcsIENvbnRleHQgY29udGV4dCwgQ3Vyc29yIGN1cnNvciwgYm9vbGVhbiBpc0xhc3RDaGlsZCkgeworICAgICAgICBpZiAobUNoaWxkRnJvbSA9PSBudWxsKSB7CisgICAgICAgICAgICBtQ2hpbGRGcm9tID0gbmV3IGludFttQ2hpbGRGcm9tTmFtZXMubGVuZ3RoXTsKKyAgICAgICAgICAgIGluaXRGcm9tQ29sdW1ucyhjdXJzb3IsIG1DaGlsZEZyb21OYW1lcywgbUNoaWxkRnJvbSk7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIGJpbmRWaWV3KHZpZXcsIGNvbnRleHQsIGN1cnNvciwgbUNoaWxkRnJvbSwgbUNoaWxkVG8pOwogICAgIH0KIAogICAgIEBPdmVycmlkZQogICAgIHByb3RlY3RlZCB2b2lkIGJpbmRHcm91cFZpZXcoVmlldyB2aWV3LCBDb250ZXh0IGNvbnRleHQsIEN1cnNvciBjdXJzb3IsIGJvb2xlYW4gaXNFeHBhbmRlZCkgeworICAgICAgICBpZiAobUdyb3VwRnJvbSA9PSBudWxsKSB7CisgICAgICAgICAgICBtR3JvdXBGcm9tID0gbmV3IGludFttR3JvdXBGcm9tTmFtZXMubGVuZ3RoXTsKKyAgICAgICAgICAgIGluaXRGcm9tQ29sdW1ucyhjdXJzb3IsIG1Hcm91cEZyb21OYW1lcywgbUdyb3VwRnJvbSk7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIGJpbmRWaWV3KHZpZXcsIGNvbnRleHQsIGN1cnNvciwgbUdyb3VwRnJvbSwgbUdyb3VwVG8pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2FuZHJvaWQvd2lkZ2V0L1RleHRWaWV3LmphdmEgYi9jb3JlL2phdmEvYW5kcm9pZC93aWRnZXQvVGV4dFZpZXcuamF2YQppbmRleCA2NGM5Yzk5Li45NTAwMTJjIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvYW5kcm9pZC93aWRnZXQvVGV4dFZpZXcuamF2YQorKysgYi9jb3JlL2phdmEvYW5kcm9pZC93aWRnZXQvVGV4dFZpZXcuamF2YQpAQCAtNDU0Nyw2ICs0NTQ3LDEwIEBACiAgICAgICAgICAgICAgICAgICAgIG91dFRleHQudGV4dCA9IFRleHRVdGlscy5zdWJzdHJpbmcoY29udGVudCwgcGFydGlhbFN0YXJ0T2Zmc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRpYWxFbmRPZmZzZXQpOwogICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgb3V0VGV4dC5wYXJ0aWFsU3RhcnRPZmZzZXQgPSAwOworICAgICAgICAgICAgICAgIG91dFRleHQucGFydGlhbEVuZE9mZnNldCA9IDA7CisgICAgICAgICAgICAgICAgb3V0VGV4dC50ZXh0ID0gIiI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBvdXRUZXh0LmZsYWdzID0gMDsKICAgICAgICAgICAgIGlmIChNZXRhS2V5S2V5TGlzdGVuZXIuZ2V0TWV0YVN0YXRlKG1UZXh0LCBNZXRhS2V5S2V5TGlzdGVuZXIuTUVUQV9TRUxFQ1RJTkcpICE9IDApIHsKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9hcHAvRXh0ZXJuYWxNZWRpYUZvcm1hdEFjdGl2aXR5LmphdmEgYi9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvYXBwL0V4dGVybmFsTWVkaWFGb3JtYXRBY3Rpdml0eS5qYXZhCmluZGV4IDdlOWJiZDEuLjk4ZGNiOGIgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9hcHAvRXh0ZXJuYWxNZWRpYUZvcm1hdEFjdGl2aXR5LmphdmEKKysrIGIvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL2FwcC9FeHRlcm5hbE1lZGlhRm9ybWF0QWN0aXZpdHkuamF2YQpAQCAtMjMsMTMgKzIzLDEwIEBACiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50RmlsdGVyOwogaW1wb3J0IGFuZHJvaWQub3MuQnVuZGxlOwotaW1wb3J0IGFuZHJvaWQub3MuSGFuZGxlcjsKIGltcG9ydCBhbmRyb2lkLm9zLnN0b3JhZ2UuSU1vdW50U2VydmljZTsKLWltcG9ydCBhbmRyb2lkLm9zLk1lc3NhZ2U7CiBpbXBvcnQgYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb247CiBpbXBvcnQgYW5kcm9pZC5vcy5TZXJ2aWNlTWFuYWdlcjsKIGltcG9ydCBhbmRyb2lkLm9zLkVudmlyb25tZW50OwotaW1wb3J0IGFuZHJvaWQud2lkZ2V0LlRvYXN0OwogaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CiAKIC8qKgpAQCAtMzgsNyArMzUsNyBAQAogICovCiBwdWJsaWMgY2xhc3MgRXh0ZXJuYWxNZWRpYUZvcm1hdEFjdGl2aXR5IGV4dGVuZHMgQWxlcnRBY3Rpdml0eSBpbXBsZW1lbnRzIERpYWxvZ0ludGVyZmFjZS5PbkNsaWNrTGlzdGVuZXIgewogCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFBPU0lUSVZFX0JVVFRPTiA9IEFsZXJ0RGlhbG9nLkJVVFRPTjE7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFBPU0lUSVZFX0JVVFRPTiA9IEFsZXJ0RGlhbG9nLkJVVFRPTl9QT1NJVElWRTsKIAogICAgIC8qKiBVc2VkIHRvIGRldGVjdCB3aGVuIHRoZSBtZWRpYSBzdGF0ZSBjaGFuZ2VzLCBpbiBjYXNlIHdlIG5lZWQgdG8gY2FsbCBmaW5pc2goKSAqLwogICAgIHByaXZhdGUgQnJvYWRjYXN0UmVjZWl2ZXIgbVN0b3JhZ2VSZWNlaXZlciA9IG5ldyBCcm9hZGNhc3RSZWNlaXZlcigpIHsKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9hcHAvSGVhdnlXZWlnaHRTd2l0Y2hlckFjdGl2aXR5LmphdmEgYi9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvYXBwL0hlYXZ5V2VpZ2h0U3dpdGNoZXJBY3Rpdml0eS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkYTdmMzYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvYXBwL0hlYXZ5V2VpZ2h0U3dpdGNoZXJBY3Rpdml0eS5qYXZhCkBAIC0wLDAgKzEsMTU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5pbnRlcm5hbC5hcHA7CisKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SOworCitpbXBvcnQgYW5kcm9pZC5hcHAuQWN0aXZpdHk7CitpbXBvcnQgYW5kcm9pZC5hcHAuQWN0aXZpdHlNYW5hZ2VyTmF0aXZlOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudFNlbmRlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uQXBwbGljYXRpb25JbmZvOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlOworaW1wb3J0IGFuZHJvaWQub3MuQnVuZGxlOworaW1wb3J0IGFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uOworaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CitpbXBvcnQgYW5kcm9pZC52aWV3LlZpZXc7CitpbXBvcnQgYW5kcm9pZC52aWV3LldpbmRvdzsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuVmlldy5PbkNsaWNrTGlzdGVuZXI7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuQnV0dG9uOworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkltYWdlVmlldzsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5UZXh0VmlldzsKKworLyoqCisgKiBUaGlzIGFjdGl2aXR5IGlzIGRpc3BsYXllZCB3aGVuIHRoZSBzeXN0ZW0gYXR0ZW1wdHMgdG8gc3RhcnQgYW4gSW50ZW50IGZvcgorICogd2hpY2ggdGhlcmUgaXMgbW9yZSB0aGFuIG9uZSBtYXRjaGluZyBhY3Rpdml0eSwgYWxsb3dpbmcgdGhlIHVzZXIgdG8gZGVjaWRlCisgKiB3aGljaCB0byBnbyB0by4gIEl0IGlzIG5vdCBub3JtYWxseSB1c2VkIGRpcmVjdGx5IGJ5IGFwcGxpY2F0aW9uIGRldmVsb3BlcnMuCisgKi8KK3B1YmxpYyBjbGFzcyBIZWF2eVdlaWdodFN3aXRjaGVyQWN0aXZpdHkgZXh0ZW5kcyBBY3Rpdml0eSB7CisgICAgLyoqIFRoZSBQZW5kaW5nSW50ZW50IG9mIHRoZSBuZXcgYWN0aXZpdHkgYmVpbmcgbGF1bmNoZWQuICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgS0VZX0lOVEVOVCA9ICJpbnRlbnQiOworICAgIC8qKiBTZXQgaWYgdGhlIGNhbGxlciBpcyByZXF1ZXN0aW5nIGEgcmVzdWx0LiAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEtFWV9IQVNfUkVTVUxUID0gImhhc19yZXN1bHQiOworICAgIC8qKiBQYWNrYWdlIG9mIGN1cnJlbnQgaGVhdnktd2VpZ2h0IGFwcC4gKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBLRVlfQ1VSX0FQUCA9ICJjdXJfYXBwIjsKKyAgICAvKiogVGFzayB0aGF0IGN1cnJlbnQgaGVhdnktd2VpZ2h0IGFjdGl2aXR5IGlzIHJ1bm5pbmcgaW4uICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgS0VZX0NVUl9UQVNLID0gImN1cl90YXNrIjsKKyAgICAvKiogUGFja2FnZSBvZiBuZXdseSByZXF1ZXN0ZWQgaGVhdnktd2VpZ2h0IGFwcC4gKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBLRVlfTkVXX0FQUCA9ICJuZXdfYXBwIjsKKyAgICAKKyAgICBJbnRlbnRTZW5kZXIgbVN0YXJ0SW50ZW50OworICAgIGJvb2xlYW4gbUhhc1Jlc3VsdDsKKyAgICBTdHJpbmcgbUN1ckFwcDsKKyAgICBpbnQgbUN1clRhc2s7CisgICAgU3RyaW5nIG1OZXdBcHA7CisgICAgCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgb25DcmVhdGUoQnVuZGxlIHNhdmVkSW5zdGFuY2VTdGF0ZSkgeworICAgICAgICBzdXBlci5vbkNyZWF0ZShzYXZlZEluc3RhbmNlU3RhdGUpOworICAgICAgICAKKyAgICAgICAgcmVxdWVzdFdpbmRvd0ZlYXR1cmUoV2luZG93LkZFQVRVUkVfTEVGVF9JQ09OKTsKKyAgICAgICAgCisgICAgICAgIG1TdGFydEludGVudCA9IChJbnRlbnRTZW5kZXIpZ2V0SW50ZW50KCkuZ2V0UGFyY2VsYWJsZUV4dHJhKEtFWV9JTlRFTlQpOworICAgICAgICBtSGFzUmVzdWx0ID0gZ2V0SW50ZW50KCkuZ2V0Qm9vbGVhbkV4dHJhKEtFWV9IQVNfUkVTVUxULCBmYWxzZSk7CisgICAgICAgIG1DdXJBcHAgPSBnZXRJbnRlbnQoKS5nZXRTdHJpbmdFeHRyYShLRVlfQ1VSX0FQUCk7CisgICAgICAgIG1DdXJUYXNrID0gZ2V0SW50ZW50KCkuZ2V0SW50RXh0cmEoS0VZX0NVUl9UQVNLLCAwKTsKKyAgICAgICAgbU5ld0FwcCA9IGdldEludGVudCgpLmdldFN0cmluZ0V4dHJhKEtFWV9ORVdfQVBQKTsKKyAgICAgICAgCisgICAgICAgIHNldENvbnRlbnRWaWV3KGNvbS5hbmRyb2lkLmludGVybmFsLlIubGF5b3V0LmhlYXZ5X3dlaWdodF9zd2l0Y2hlcik7CisgICAgICAgIAorICAgICAgICBzZXRJY29uQW5kVGV4dChSLmlkLm9sZF9hcHBfaWNvbiwgUi5pZC5vbGRfYXBwX2FjdGlvbiwgUi5pZC5vbGRfYXBwX2Rlc2NyaXB0aW9uLAorICAgICAgICAgICAgICAgIG1DdXJBcHAsIFIuc3RyaW5nLm9sZF9hcHBfYWN0aW9uLCBSLnN0cmluZy5vbGRfYXBwX2Rlc2NyaXB0aW9uKTsKKyAgICAgICAgc2V0SWNvbkFuZFRleHQoUi5pZC5uZXdfYXBwX2ljb24sIFIuaWQubmV3X2FwcF9hY3Rpb24sIFIuaWQubmV3X2FwcF9kZXNjcmlwdGlvbiwKKyAgICAgICAgICAgICAgICBtTmV3QXBwLCBSLnN0cmluZy5uZXdfYXBwX2FjdGlvbiwgUi5zdHJpbmcubmV3X2FwcF9kZXNjcmlwdGlvbik7CisgICAgICAgICAgICAKKyAgICAgICAgVmlldyBidXR0b24gPSBmaW5kVmlld0J5SWQoKFIuaWQuc3dpdGNoX29sZCkpOworICAgICAgICBidXR0b24uc2V0T25DbGlja0xpc3RlbmVyKG1Td2l0Y2hPbGRMaXN0ZW5lcik7CisgICAgICAgIGJ1dHRvbiA9IGZpbmRWaWV3QnlJZCgoUi5pZC5zd2l0Y2hfbmV3KSk7CisgICAgICAgIGJ1dHRvbi5zZXRPbkNsaWNrTGlzdGVuZXIobVN3aXRjaE5ld0xpc3RlbmVyKTsKKyAgICAgICAgYnV0dG9uID0gZmluZFZpZXdCeUlkKChSLmlkLmNhbmNlbCkpOworICAgICAgICBidXR0b24uc2V0T25DbGlja0xpc3RlbmVyKG1DYW5jZWxMaXN0ZW5lcik7CisgICAgICAgIAorICAgICAgICBnZXRXaW5kb3coKS5zZXRGZWF0dXJlRHJhd2FibGVSZXNvdXJjZShXaW5kb3cuRkVBVFVSRV9MRUZUX0lDT04sIAorICAgICAgICAgICAgICAgIGFuZHJvaWQuUi5kcmF3YWJsZS5pY19kaWFsb2dfYWxlcnQpOworICAgIH0KKworICAgIHZvaWQgc2V0VGV4dChpbnQgaWQsIENoYXJTZXF1ZW5jZSB0ZXh0KSB7CisgICAgICAgICgoVGV4dFZpZXcpZmluZFZpZXdCeUlkKGlkKSkuc2V0VGV4dCh0ZXh0KTsKKyAgICB9CisgICAgCisgICAgdm9pZCBzZXREcmF3YWJsZShpbnQgaWQsIERyYXdhYmxlIGRyKSB7CisgICAgICAgIGlmIChkciAhPSBudWxsKSB7CisgICAgICAgICAgICAoKEltYWdlVmlldylmaW5kVmlld0J5SWQoaWQpKS5zZXRJbWFnZURyYXdhYmxlKGRyKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB2b2lkIHNldEljb25BbmRUZXh0KGludCBpY29uSWQsIGludCBhY3Rpb25JZCwgaW50IGRlc2NyaXB0aW9uSWQsCisgICAgICAgICAgICBTdHJpbmcgcGFja2FnZU5hbWUsIGludCBhY3Rpb25TdHIsIGludCBkZXNjcmlwdGlvblN0cikgeworICAgICAgICBDaGFyU2VxdWVuY2UgYXBwTmFtZSA9ICIiOworICAgICAgICBEcmF3YWJsZSBhcHBJY29uID0gbnVsbDsKKyAgICAgICAgaWYgKG1DdXJBcHAgIT0gbnVsbCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBBcHBsaWNhdGlvbkluZm8gaW5mbyA9IGdldFBhY2thZ2VNYW5hZ2VyKCkuZ2V0QXBwbGljYXRpb25JbmZvKAorICAgICAgICAgICAgICAgICAgICAgICAgcGFja2FnZU5hbWUsIDApOworICAgICAgICAgICAgICAgIGFwcE5hbWUgPSBpbmZvLmxvYWRMYWJlbChnZXRQYWNrYWdlTWFuYWdlcigpKTsKKyAgICAgICAgICAgICAgICBhcHBJY29uID0gaW5mby5sb2FkSWNvbihnZXRQYWNrYWdlTWFuYWdlcigpKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKFBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHNldERyYXdhYmxlKGljb25JZCwgYXBwSWNvbik7CisgICAgICAgIHNldFRleHQoYWN0aW9uSWQsIGdldFN0cmluZyhhY3Rpb25TdHIsIGFwcE5hbWUpKTsKKyAgICAgICAgc2V0VGV4dChkZXNjcmlwdGlvbklkLCBnZXRUZXh0KGRlc2NyaXB0aW9uU3RyKSk7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgT25DbGlja0xpc3RlbmVyIG1Td2l0Y2hPbGRMaXN0ZW5lciA9IG5ldyBPbkNsaWNrTGlzdGVuZXIoKSB7CisgICAgICAgIHB1YmxpYyB2b2lkIG9uQ2xpY2soVmlldyB2KSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIEFjdGl2aXR5TWFuYWdlck5hdGl2ZS5nZXREZWZhdWx0KCkubW92ZVRhc2tUb0Zyb250KG1DdXJUYXNrKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmaW5pc2goKTsKKyAgICAgICAgfQorICAgIH07CisgICAgCisgICAgcHJpdmF0ZSBPbkNsaWNrTGlzdGVuZXIgbVN3aXRjaE5ld0xpc3RlbmVyID0gbmV3IE9uQ2xpY2tMaXN0ZW5lcigpIHsKKyAgICAgICAgcHVibGljIHZvaWQgb25DbGljayhWaWV3IHYpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgQWN0aXZpdHlNYW5hZ2VyTmF0aXZlLmdldERlZmF1bHQoKS5maW5pc2hIZWF2eVdlaWdodEFwcCgpOworICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgaWYgKG1IYXNSZXN1bHQpIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhcnRJbnRlbnRTZW5kZXJGb3JSZXN1bHQobVN0YXJ0SW50ZW50LCAtMSwgbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlbnQuRkxBR19BQ1RJVklUWV9GT1JXQVJEX1JFU1VMVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJbnRlbnQuRkxBR19BQ1RJVklUWV9GT1JXQVJEX1JFU1VMVCwgMCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhcnRJbnRlbnRTZW5kZXJGb3JSZXN1bHQobVN0YXJ0SW50ZW50LCAtMSwgbnVsbCwgMCwgMCwgMCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBjYXRjaCAoSW50ZW50U2VuZGVyLlNlbmRJbnRlbnRFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgICAgICBMb2cudygiSGVhdnlXZWlnaHRTd2l0Y2hlckFjdGl2aXR5IiwgIkZhaWx1cmUgc3RhcnRpbmciLCBleCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmaW5pc2goKTsKKyAgICAgICAgfQorICAgIH07CisgICAgCisgICAgcHJpdmF0ZSBPbkNsaWNrTGlzdGVuZXIgbUNhbmNlbExpc3RlbmVyID0gbmV3IE9uQ2xpY2tMaXN0ZW5lcigpIHsKKyAgICAgICAgcHVibGljIHZvaWQgb25DbGljayhWaWV3IHYpIHsKKyAgICAgICAgICAgIGZpbmlzaCgpOworICAgICAgICB9CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9hcHAvSUJhdHRlcnlTdGF0cy5haWRsIGIvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL2FwcC9JQmF0dGVyeVN0YXRzLmFpZGwKaW5kZXggZDVjY2RlYi4uODhlZjM5NSAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL2FwcC9JQmF0dGVyeVN0YXRzLmFpZGwKKysrIGIvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL2FwcC9JQmF0dGVyeVN0YXRzLmFpZGwKQEAgLTUwLDggKzUwLDcgQEAKICAgICB2b2lkIG5vdGVTY2FuV2lmaUxvY2tSZWxlYXNlZChpbnQgdWlkKTsKICAgICB2b2lkIG5vdGVXaWZpTXVsdGljYXN0RW5hYmxlZChpbnQgdWlkKTsKICAgICB2b2lkIG5vdGVXaWZpTXVsdGljYXN0RGlzYWJsZWQoaW50IHVpZCk7Ci0gICAgdm9pZCBzZXRPbkJhdHRlcnkoYm9vbGVhbiBvbkJhdHRlcnksIGludCBsZXZlbCk7Ci0gICAgdm9pZCByZWNvcmRDdXJyZW50TGV2ZWwoaW50IGxldmVsKTsKKyAgICB2b2lkIHNldEJhdHRlcnlTdGF0ZShpbnQgc3RhdHVzLCBpbnQgaGVhbHRoLCBpbnQgcGx1Z1R5cGUsIGludCBsZXZlbCwgaW50IHRlbXAsIGludCB2b2x0KTsKICAgICBsb25nIGdldEF3YWtlVGltZUJhdHRlcnkoKTsKICAgICBsb25nIGdldEF3YWtlVGltZVBsdWdnZWQoKTsKIH0KZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9hcHAvTmV0SW5pdGlhdGVkQWN0aXZpdHkuamF2YSBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9hcHAvTmV0SW5pdGlhdGVkQWN0aXZpdHkuamF2YQppbmRleCAyNDgxOGE4Li4zNmY0NWIyIDEwMDc1NQotLS0gYS9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvYXBwL05ldEluaXRpYXRlZEFjdGl2aXR5LmphdmEKKysrIGIvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL2FwcC9OZXRJbml0aWF0ZWRBY3Rpdml0eS5qYXZhCkBAIC0yMywxNCArMjMsOSBAQAogaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnQ7CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudEZpbHRlcjsKIGltcG9ydCBhbmRyb2lkLm9zLkJ1bmRsZTsKLWltcG9ydCBhbmRyb2lkLm9zLkhhbmRsZXI7Ci1pbXBvcnQgYW5kcm9pZC5vcy5NZXNzYWdlOwotaW1wb3J0IGFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uOwotaW1wb3J0IGFuZHJvaWQub3MuU2VydmljZU1hbmFnZXI7CiBpbXBvcnQgYW5kcm9pZC53aWRnZXQuVG9hc3Q7CiBpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKIGltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uTWFuYWdlcjsKLWltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5sb2NhdGlvbi5HcHNMb2NhdGlvblByb3ZpZGVyOwogaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLmxvY2F0aW9uLkdwc05ldEluaXRpYXRlZEhhbmRsZXI7CiAKIC8qKgpAQCAtNDQsOCArMzksOCBAQAogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gREVCVUcgPSB0cnVlOwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gVkVSQk9TRSA9IGZhbHNlOwogCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFBPU0lUSVZFX0JVVFRPTiA9IEFsZXJ0RGlhbG9nLkJVVFRPTjE7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE5FR0FUSVZFX0JVVFRPTiA9IEFsZXJ0RGlhbG9nLkJVVFRPTjI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFBPU0lUSVZFX0JVVFRPTiA9IEFsZXJ0RGlhbG9nLkJVVFRPTl9QT1NJVElWRTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTkVHQVRJVkVfQlVUVE9OID0gQWxlcnREaWFsb2cuQlVUVE9OX05FR0FUSVZFOwogCiAgICAgLy8gRGlhbG9nIGJ1dHRvbiB0ZXh0CiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQlVUVE9OX1RFWFRfQUNDRVBUID0gIkFjY2VwdCI7CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvYXBwL1Jpbmd0b25lUGlja2VyQWN0aXZpdHkuamF2YSBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9hcHAvUmluZ3RvbmVQaWNrZXJBY3Rpdml0eS5qYXZhCmluZGV4IGRkZGRhYmUuLjU1NjlmZmUgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9hcHAvUmluZ3RvbmVQaWNrZXJBY3Rpdml0eS5qYXZhCisrKyBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9hcHAvUmluZ3RvbmVQaWNrZXJBY3Rpdml0eS5qYXZhCkBAIC0yMjMsNyArMjIzLDcgQEAKICAgICAgKiBPbiBjbGljayBvZiBPay9DYW5jZWwgYnV0dG9ucwogICAgICAqLwogICAgIHB1YmxpYyB2b2lkIG9uQ2xpY2soRGlhbG9nSW50ZXJmYWNlIGRpYWxvZywgaW50IHdoaWNoKSB7Ci0gICAgICAgIGJvb2xlYW4gcG9zaXRpdmVSZXN1bHQgPSB3aGljaCA9PSBCVVRUT04xOworICAgICAgICBib29sZWFuIHBvc2l0aXZlUmVzdWx0ID0gd2hpY2ggPT0gRGlhbG9nSW50ZXJmYWNlLkJVVFRPTl9QT1NJVElWRTsKICAgICAgICAgCiAgICAgICAgIC8vIFN0b3AgcGxheWluZyB0aGUgcHJldmlvdXMgcmluZ3RvbmUKICAgICAgICAgbVJpbmd0b25lTWFuYWdlci5zdG9wUHJldmlvdXNSaW5ndG9uZSgpOwpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL29zL0JhdHRlcnlTdGF0c0ltcGwuamF2YSBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9vcy9CYXR0ZXJ5U3RhdHNJbXBsLmphdmEKaW5kZXggYWFkYjU3Ni4uNjQyYzMxMyAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL29zL0JhdHRlcnlTdGF0c0ltcGwuamF2YQorKysgYi9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvb3MvQmF0dGVyeVN0YXRzSW1wbC5qYXZhCkBAIC0yMCw2ICsyMCw3IEBACiAKIGltcG9ydCBhbmRyb2lkLmJsdWV0b290aC5CbHVldG9vdGhIZWFkc2V0OwogaW1wb3J0IGFuZHJvaWQubmV0LlRyYWZmaWNTdGF0czsKK2ltcG9ydCBhbmRyb2lkLm9zLkJhdHRlcnlNYW5hZ2VyOwogaW1wb3J0IGFuZHJvaWQub3MuQmF0dGVyeVN0YXRzOwogaW1wb3J0IGFuZHJvaWQub3MuUGFyY2VsOwogaW1wb3J0IGFuZHJvaWQub3MuUGFyY2VsRm9ybWF0RXhjZXB0aW9uOwpAQCAtNTYsMTMgKzU3LDE3IEBACiBwdWJsaWMgZmluYWwgY2xhc3MgQmF0dGVyeVN0YXRzSW1wbCBleHRlbmRzIEJhdHRlcnlTdGF0cyB7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9ICJCYXR0ZXJ5U3RhdHNJbXBsIjsKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIERFQlVHID0gZmFsc2U7Ci0KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIERFQlVHX0hJU1RPUlkgPSBmYWxzZTsKKyAgICAKICAgICAvLyBJbi1tZW1vcnkgUGFyY2VsIG1hZ2ljIG51bWJlciwgdXNlZCB0byBkZXRlY3QgYXR0ZW1wdHMgdG8gdW5tYXJzaGFsbCBiYWQgZGF0YQogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNQUdJQyA9IDB4QkE3NTc0NzU7IC8vICdCQVRTVEFUUycgCiAKICAgICAvLyBDdXJyZW50IG9uLWRpc2sgUGFyY2VsIHZlcnNpb24KLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgVkVSU0lPTiA9IDQzOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBWRVJTSU9OID0gNDg7CiAKKyAgICAvLyBNYXhpbXVtIG51bWJlciBvZiBpdGVtcyB3ZSB3aWxsIHJlY29yZCBpbiB0aGUgaGlzdG9yeS4KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTUFYX0hJU1RPUllfSVRFTVMgPSAxMDAwOworICAgIAogICAgIC8vIFRoZSBtYXhpbXVtIG51bWJlciBvZiBuYW1lcyB3YWtlbG9ja3Mgd2Ugd2lsbCBrZWVwIHRyYWNrIG9mCiAgICAgLy8gcGVyIHVpZDsgb25jZSB0aGUgbGltaXQgaXMgcmVhY2hlZCwgd2UgYmF0Y2ggdGhlIHJlbWFpbmluZyB3YWtlbG9ja3MKICAgICAvLyBpbiB0byBvbmUgY29tbW9uIG5hbWUuCkBAIC05NCw2ICs5OSwxNyBAQAogICAgIC8vIGlzIHVucGx1Z2dlZCBmcm9tIHBvd2VyLgogICAgIGZpbmFsIEFycmF5TGlzdDxVbnBsdWdnYWJsZT4gbVVucGx1Z2dhYmxlcyA9IG5ldyBBcnJheUxpc3Q8VW5wbHVnZ2FibGU+KCk7CiAgICAgCisgICAgYm9vbGVhbiBtU2h1dHRpbmdEb3duOworICAgIAorICAgIGxvbmcgbUhpc3RvcnlCYXNlVGltZTsKKyAgICBib29sZWFuIG1IYXZlQmF0dGVyeUxldmVsID0gZmFsc2U7CisgICAgYm9vbGVhbiBtUmVjb3JkaW5nSGlzdG9yeSA9IHRydWU7CisgICAgaW50IG1OdW1IaXN0b3J5SXRlbXM7CisgICAgSGlzdG9yeUl0ZW0gbUhpc3Rvcnk7CisgICAgSGlzdG9yeUl0ZW0gbUhpc3RvcnlFbmQ7CisgICAgSGlzdG9yeUl0ZW0gbUhpc3RvcnlDYWNoZTsKKyAgICBmaW5hbCBIaXN0b3J5SXRlbSBtSGlzdG9yeUN1ciA9IG5ldyBIaXN0b3J5SXRlbSgpOworICAgIAogICAgIGludCBtU3RhcnRDb3VudDsKIAogICAgIGxvbmcgbUJhdHRlcnlVcHRpbWU7CkBAIC0xNjYsNiArMTgyLDcgQEAKICAgICAgKiBUaGVzZSBrZWVwIHRyYWNrIG9mIGJhdHRlcnkgbGV2ZWxzICgxLTEwMCkgYXQgdGhlIGxhc3QgcGx1ZyBldmVudCBhbmQgdGhlIGxhc3QgdW5wbHVnIGV2ZW50LgogICAgICAqLwogICAgIGludCBtRGlzY2hhcmdlU3RhcnRMZXZlbDsKKyAgICBpbnQgbURpc2NoYXJnZVVucGx1Z0xldmVsOwogICAgIGludCBtRGlzY2hhcmdlQ3VycmVudExldmVsOwogCiAgICAgbG9uZyBtTGFzdFdyaXRlVGltZSA9IDA7IC8vIE1pbGxpc2Vjb25kcwpAQCAtMjMyLDEyICsyNDksMTQgQEAKICAgICAgKi8KICAgICBwdWJsaWMgc3RhdGljIGNsYXNzIENvdW50ZXIgZXh0ZW5kcyBCYXR0ZXJ5U3RhdHMuQ291bnRlciBpbXBsZW1lbnRzIFVucGx1Z2dhYmxlIHsKICAgICAgICAgZmluYWwgQXRvbWljSW50ZWdlciBtQ291bnQgPSBuZXcgQXRvbWljSW50ZWdlcigpOworICAgICAgICBmaW5hbCBBcnJheUxpc3Q8VW5wbHVnZ2FibGU+IG1VbnBsdWdnYWJsZXM7CiAgICAgICAgIGludCBtTG9hZGVkQ291bnQ7CiAgICAgICAgIGludCBtTGFzdENvdW50OwogICAgICAgICBpbnQgbVVucGx1Z2dlZENvdW50OwogICAgICAgICBpbnQgbVBsdWdnZWRDb3VudDsKICAgICAgICAgCiAgICAgICAgIENvdW50ZXIoQXJyYXlMaXN0PFVucGx1Z2dhYmxlPiB1bnBsdWdnYWJsZXMsIFBhcmNlbCBpbikgeworICAgICAgICAgICAgbVVucGx1Z2dhYmxlcyA9IHVucGx1Z2dhYmxlczsKICAgICAgICAgICAgIG1QbHVnZ2VkQ291bnQgPSBpbi5yZWFkSW50KCk7CiAgICAgICAgICAgICBtQ291bnQuc2V0KG1QbHVnZ2VkQ291bnQpOwogICAgICAgICAgICAgbUxvYWRlZENvdW50ID0gaW4ucmVhZEludCgpOwpAQCAtMjQ3LDYgKzI2Niw3IEBACiAgICAgICAgIH0KIAogICAgICAgICBDb3VudGVyKEFycmF5TGlzdDxVbnBsdWdnYWJsZT4gdW5wbHVnZ2FibGVzKSB7CisgICAgICAgICAgICBtVW5wbHVnZ2FibGVzID0gdW5wbHVnZ2FibGVzOwogICAgICAgICAgICAgdW5wbHVnZ2FibGVzLmFkZCh0aGlzKTsKICAgICAgICAgfQogICAgICAgICAKQEAgLTI4OSw5ICszMDksOSBAQAogICAgICAgICAgICAgICAgIHZhbCA9IG1MYXN0Q291bnQ7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHZhbCA9IG1Db3VudC5nZXQoKTsKLSAgICAgICAgICAgICAgICBpZiAod2hpY2ggPT0gU1RBVFNfVU5QTFVHR0VEKSB7CisgICAgICAgICAgICAgICAgaWYgKHdoaWNoID09IFNUQVRTX1NJTkNFX1VOUExVR0dFRCkgewogICAgICAgICAgICAgICAgICAgICB2YWwgLT0gbVVucGx1Z2dlZENvdW50OwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod2hpY2ggIT0gU1RBVFNfVE9UQUwpIHsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHdoaWNoICE9IFNUQVRTX1NJTkNFX0NIQVJHRUQpIHsKICAgICAgICAgICAgICAgICAgICAgdmFsIC09IG1Mb2FkZWRDb3VudDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC0zMTAsNiArMzMwLDIxIEBACiAgICAgICAgICAgICBtQ291bnQuaW5jcmVtZW50QW5kR2V0KCk7CiAgICAgICAgIH0KIAorICAgICAgICAvKioKKyAgICAgICAgICogQ2xlYXIgc3RhdGUgb2YgdGhpcyBjb3VudGVyLgorICAgICAgICAgKi8KKyAgICAgICAgdm9pZCByZXNldChib29sZWFuIGRldGFjaElmUmVzZXQpIHsKKyAgICAgICAgICAgIG1Db3VudC5zZXQoMCk7CisgICAgICAgICAgICBtTG9hZGVkQ291bnQgPSBtTGFzdENvdW50ID0gbVBsdWdnZWRDb3VudCA9IG1VbnBsdWdnZWRDb3VudCA9IDA7CisgICAgICAgICAgICBpZiAoZGV0YWNoSWZSZXNldCkgeworICAgICAgICAgICAgICAgIGRldGFjaCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2b2lkIGRldGFjaCgpIHsKKyAgICAgICAgICAgIG1VbnBsdWdnYWJsZXMucmVtb3ZlKHRoaXMpOworICAgICAgICB9CisgICAgICAgIAogICAgICAgICB2b2lkIHdyaXRlU3VtbWFyeUZyb21QYXJjZWxMb2NrZWQoUGFyY2VsIG91dCkgewogICAgICAgICAgICAgaW50IGNvdW50ID0gbUNvdW50LmdldCgpOwogICAgICAgICAgICAgb3V0LndyaXRlSW50KGNvdW50KTsKQEAgLTM0NCw3ICszNzksNyBAQAogICAgICAqLwogICAgIHB1YmxpYyBzdGF0aWMgYWJzdHJhY3QgY2xhc3MgVGltZXIgZXh0ZW5kcyBCYXR0ZXJ5U3RhdHMuVGltZXIgaW1wbGVtZW50cyBVbnBsdWdnYWJsZSB7CiAgICAgICAgIGZpbmFsIGludCBtVHlwZTsKLQorICAgICAgICBmaW5hbCBBcnJheUxpc3Q8VW5wbHVnZ2FibGU+IG1VbnBsdWdnYWJsZXM7CiAgICAgICAgIAogICAgICAgICBpbnQgbUNvdW50OwogICAgICAgICBpbnQgbUxvYWRlZENvdW50OwpAQCAtMzg5LDYgKzQyNCw3IEBACiAgICAgICAgICAqLwogICAgICAgICBUaW1lcihpbnQgdHlwZSwgQXJyYXlMaXN0PFVucGx1Z2dhYmxlPiB1bnBsdWdnYWJsZXMsIFBhcmNlbCBpbikgewogICAgICAgICAgICAgbVR5cGUgPSB0eXBlOworICAgICAgICAgICAgbVVucGx1Z2dhYmxlcyA9IHVucGx1Z2dhYmxlczsKICAgICAgICAgICAgIAogICAgICAgICAgICAgbUNvdW50ID0gaW4ucmVhZEludCgpOwogICAgICAgICAgICAgbUxvYWRlZENvdW50ID0gaW4ucmVhZEludCgpOwpAQCAtNDAzLDYgKzQzOSw3IEBACiAKICAgICAgICAgVGltZXIoaW50IHR5cGUsIEFycmF5TGlzdDxVbnBsdWdnYWJsZT4gdW5wbHVnZ2FibGVzKSB7CiAgICAgICAgICAgICBtVHlwZSA9IHR5cGU7CisgICAgICAgICAgICBtVW5wbHVnZ2FibGVzID0gdW5wbHVnZ2FibGVzOwogICAgICAgICAgICAgdW5wbHVnZ2FibGVzLmFkZCh0aGlzKTsKICAgICAgICAgfQogCkBAIC00MTAsNiArNDQ3LDIyIEBACiAgICAgICAgIAogICAgICAgICBwcm90ZWN0ZWQgYWJzdHJhY3QgaW50IGNvbXB1dGVDdXJyZW50Q291bnRMb2NrZWQoKTsKICAgICAgICAgCisgICAgICAgIC8qKgorICAgICAgICAgKiBDbGVhciBzdGF0ZSBvZiB0aGlzIHRpbWVyLiAgUmV0dXJucyB0cnVlIGlmIHRoZSB0aW1lciBpcyBpbmFjdGl2ZQorICAgICAgICAgKiBzbyBjYW4gYmUgY29tcGxldGVseSBkcm9wcGVkLgorICAgICAgICAgKi8KKyAgICAgICAgYm9vbGVhbiByZXNldChib29sZWFuIGRldGFjaElmUmVzZXQpIHsKKyAgICAgICAgICAgIG1Ub3RhbFRpbWUgPSBtTG9hZGVkVGltZSA9IG1MYXN0VGltZSA9IDA7CisgICAgICAgICAgICBtQ291bnQgPSBtTG9hZGVkQ291bnQgPSBtTGFzdENvdW50ID0gMDsKKyAgICAgICAgICAgIGlmIChkZXRhY2hJZlJlc2V0KSB7CisgICAgICAgICAgICAgICAgZGV0YWNoKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBkZXRhY2goKSB7CisgICAgICAgICAgICBtVW5wbHVnZ2FibGVzLnJlbW92ZSh0aGlzKTsKKyAgICAgICAgfQogICAgICAgICAKICAgICAgICAgcHVibGljIHZvaWQgd3JpdGVUb1BhcmNlbChQYXJjZWwgb3V0LCBsb25nIGJhdHRlcnlSZWFsdGltZSkgewogICAgICAgICAgICAgb3V0LndyaXRlSW50KG1Db3VudCk7CkBAIC00NzQsOSArNTI3LDkgQEAKICAgICAgICAgICAgICAgICB2YWwgPSBtTGFzdFRpbWU7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHZhbCA9IGNvbXB1dGVSdW5UaW1lTG9ja2VkKGJhdHRlcnlSZWFsdGltZSk7Ci0gICAgICAgICAgICAgICAgaWYgKHdoaWNoID09IFNUQVRTX1VOUExVR0dFRCkgeworICAgICAgICAgICAgICAgIGlmICh3aGljaCA9PSBTVEFUU19TSU5DRV9VTlBMVUdHRUQpIHsKICAgICAgICAgICAgICAgICAgICAgdmFsIC09IG1VbnBsdWdnZWRUaW1lOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod2hpY2ggIT0gU1RBVFNfVE9UQUwpIHsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHdoaWNoICE9IFNUQVRTX1NJTkNFX0NIQVJHRUQpIHsKICAgICAgICAgICAgICAgICAgICAgdmFsIC09IG1Mb2FkZWRUaW1lOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTQ5MSw5ICs1NDQsOSBAQAogICAgICAgICAgICAgICAgIHZhbCA9IG1MYXN0Q291bnQ7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHZhbCA9IGNvbXB1dGVDdXJyZW50Q291bnRMb2NrZWQoKTsKLSAgICAgICAgICAgICAgICBpZiAod2hpY2ggPT0gU1RBVFNfVU5QTFVHR0VEKSB7CisgICAgICAgICAgICAgICAgaWYgKHdoaWNoID09IFNUQVRTX1NJTkNFX1VOUExVR0dFRCkgewogICAgICAgICAgICAgICAgICAgICB2YWwgLT0gbVVucGx1Z2dlZENvdW50OwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod2hpY2ggIT0gU1RBVFNfVE9UQUwpIHsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHdoaWNoICE9IFNUQVRTX1NJTkNFX0NIQVJHRUQpIHsKICAgICAgICAgICAgICAgICAgICAgdmFsIC09IG1Mb2FkZWRDb3VudDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC02NjQsNiArNzE3LDEyIEBACiAgICAgICAgICAgICBvdXQud3JpdGVJbnQobVRyYWNraW5nUmVwb3J0ZWRWYWx1ZXMgPyAxIDogMCk7CiAgICAgICAgIH0KICAgICAgICAgCisgICAgICAgIGJvb2xlYW4gcmVzZXQoYm9vbGVhbiBkZXRhY2hJZlJlc2V0KSB7CisgICAgICAgICAgICBzdXBlci5yZXNldChkZXRhY2hJZlJlc2V0KTsKKyAgICAgICAgICAgIHNldFN0YWxlKCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgdm9pZCB3cml0ZVN1bW1hcnlGcm9tUGFyY2VsTG9ja2VkKFBhcmNlbCBvdXQsIGxvbmcgYmF0dGVyeVJlYWx0aW1lKSB7CiAgICAgICAgICAgICBzdXBlci53cml0ZVN1bW1hcnlGcm9tUGFyY2VsTG9ja2VkKG91dCwgYmF0dGVyeVJlYWx0aW1lKTsKICAgICAgICAgICAgIG91dC53cml0ZUxvbmcobUN1cnJlbnRSZXBvcnRlZFRvdGFsVGltZSk7CkBAIC02ODYsNyArNzQ1LDYgQEAKICAgICAgICAgZmluYWwgQXJyYXlMaXN0PFN0b3B3YXRjaFRpbWVyPiBtVGltZXJQb29sOwogICAgICAgICBpbnQgbU5lc3Rpbmc7CiAKLQogICAgICAgICAvKioKICAgICAgICAgICogVGhlIGxhc3QgdGltZSBhdCB3aGljaCB3ZSB1cGRhdGVkIHRoZSB0aW1lci4gIElmIG1OZXN0aW5nIGlzID4gMCwKICAgICAgICAgICogc3VidHJhY3QgdGhpcyBmcm9tIHRoZSBjdXJyZW50IGJhdHRlcnkgdGltZSB0byBmaW5kIHRoZSBhbW91bnQgb2YKQEAgLTgzNiw2ICs4OTQsMTkgQEAKICAgICAgICAgICAgIHJldHVybiBtQ291bnQ7CiAgICAgICAgIH0KIAorICAgICAgICBib29sZWFuIHJlc2V0KGJvb2xlYW4gZGV0YWNoSWZSZXNldCkgeworICAgICAgICAgICAgYm9vbGVhbiBjYW5EZXRhY2ggPSBtTmVzdGluZyA8PSAwOworICAgICAgICAgICAgc3VwZXIucmVzZXQoY2FuRGV0YWNoICYmIGRldGFjaElmUmVzZXQpOworICAgICAgICAgICAgcmV0dXJuIGNhbkRldGFjaDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdm9pZCBkZXRhY2goKSB7CisgICAgICAgICAgICBzdXBlci5kZXRhY2goKTsKKyAgICAgICAgICAgIGlmIChtVGltZXJQb29sICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBtVGltZXJQb29sLnJlbW92ZSh0aGlzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgdm9pZCByZWFkU3VtbWFyeUZyb21QYXJjZWxMb2NrZWQoUGFyY2VsIGluKSB7CiAgICAgICAgICAgICBzdXBlci5yZWFkU3VtbWFyeUZyb21QYXJjZWxMb2NrZWQoaW4pOwogICAgICAgICAgICAgbU5lc3RpbmcgPSAwOwpAQCAtOTczLDEyICsxMDQ0LDEyIEBACiAgICAgfQogCiAgICAgcHJpdmF0ZSB2b2lkIGRvRGF0YVBsdWcobG9uZ1tdIGRhdGFUcmFuc2ZlciwgbG9uZyBjdXJyZW50Qnl0ZXMpIHsKLSAgICAgICAgZGF0YVRyYW5zZmVyW1NUQVRTX0xBU1RdID0gZGF0YVRyYW5zZmVyW1NUQVRTX1VOUExVR0dFRF07Ci0gICAgICAgIGRhdGFUcmFuc2ZlcltTVEFUU19VTlBMVUdHRURdID0gLTE7CisgICAgICAgIGRhdGFUcmFuc2ZlcltTVEFUU19MQVNUXSA9IGRhdGFUcmFuc2ZlcltTVEFUU19TSU5DRV9VTlBMVUdHRURdOworICAgICAgICBkYXRhVHJhbnNmZXJbU1RBVFNfU0lOQ0VfVU5QTFVHR0VEXSA9IC0xOwogICAgIH0KIAogICAgIHByaXZhdGUgdm9pZCBkb0RhdGFVbnBsdWcobG9uZ1tdIGRhdGFUcmFuc2ZlciwgbG9uZyBjdXJyZW50Qnl0ZXMpIHsKLSAgICAgICAgZGF0YVRyYW5zZmVyW1NUQVRTX1VOUExVR0dFRF0gPSBjdXJyZW50Qnl0ZXM7CisgICAgICAgIGRhdGFUcmFuc2ZlcltTVEFUU19TSU5DRV9VTlBMVUdHRURdID0gY3VycmVudEJ5dGVzOwogICAgIH0KIAogICAgIC8qKgpAQCAtMTA0Miw3ICsxMTEzLDU1IEBACiAgICAgICAgIG1CdEhlYWRzZXQgPSBoZWFkc2V0OwogICAgIH0KIAotICAgIHB1YmxpYyB2b2lkIGRvVW5wbHVnKGxvbmcgYmF0dGVyeVVwdGltZSwgbG9uZyBiYXR0ZXJ5UmVhbHRpbWUpIHsKKyAgICB2b2lkIGFkZEhpc3RvcnlSZWNvcmRMb2NrZWQobG9uZyBjdXJUaW1lKSB7CisgICAgICAgIGlmICghbUhhdmVCYXR0ZXJ5TGV2ZWwgfHwgIW1SZWNvcmRpbmdIaXN0b3J5KSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1OdW1IaXN0b3J5SXRlbXMgPj0gTUFYX0hJU1RPUllfSVRFTVMpIHsKKyAgICAgICAgICAgIC8vIE9uY2Ugd2UndmUgcmVhY2hlZCB0aGUgbWF4aW11bSBudW1iZXIgb2YgaXRlbXMsIHdlIG9ubHkKKyAgICAgICAgICAgIC8vIHJlY29yZCBjaGFuZ2VzIHRvIHRoZSBiYXR0ZXJ5IGxldmVsLgorICAgICAgICAgICAgaWYgKG1IaXN0b3J5RW5kICE9IG51bGwgJiYgbUhpc3RvcnlFbmQuYmF0dGVyeUxldmVsCisgICAgICAgICAgICAgICAgICAgID09IG1IaXN0b3J5Q3VyLmJhdHRlcnlMZXZlbCkgeworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBhZGRIaXN0b3J5UmVjb3JkTG9ja2VkKGN1clRpbWUsIEhpc3RvcnlJdGVtLkNNRF9VUERBVEUpOworICAgIH0KKyAgICAKKyAgICB2b2lkIGFkZEhpc3RvcnlSZWNvcmRMb2NrZWQobG9uZyBjdXJUaW1lLCBieXRlIGNtZCkgeworICAgICAgICBIaXN0b3J5SXRlbSByZWMgPSBtSGlzdG9yeUNhY2hlOworICAgICAgICBpZiAocmVjICE9IG51bGwpIHsKKyAgICAgICAgICAgIG1IaXN0b3J5Q2FjaGUgPSByZWMubmV4dDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJlYyA9IG5ldyBIaXN0b3J5SXRlbSgpOworICAgICAgICB9CisgICAgICAgIHJlYy5zZXRUbyhtSGlzdG9yeUJhc2VUaW1lICsgY3VyVGltZSwgY21kLCBtSGlzdG9yeUN1cik7CisgICAgICAgIAorICAgICAgICBhZGRIaXN0b3J5UmVjb3JkTG9ja2VkKHJlYyk7CisgICAgfQorICAgIAorICAgIHZvaWQgYWRkSGlzdG9yeVJlY29yZExvY2tlZChIaXN0b3J5SXRlbSByZWMpIHsKKyAgICAgICAgbU51bUhpc3RvcnlJdGVtcysrOworICAgICAgICByZWMubmV4dCA9IG51bGw7CisgICAgICAgIGlmIChtSGlzdG9yeUVuZCAhPSBudWxsKSB7CisgICAgICAgICAgICBtSGlzdG9yeUVuZC5uZXh0ID0gcmVjOworICAgICAgICAgICAgbUhpc3RvcnlFbmQgPSByZWM7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtSGlzdG9yeSA9IG1IaXN0b3J5RW5kID0gcmVjOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHZvaWQgY2xlYXJIaXN0b3J5TG9ja2VkKCkgeworICAgICAgICBpZiAobUhpc3RvcnkgIT0gbnVsbCkgeworICAgICAgICAgICAgbUhpc3RvcnlFbmQubmV4dCA9IG1IaXN0b3J5Q2FjaGU7CisgICAgICAgICAgICBtSGlzdG9yeUNhY2hlID0gbUhpc3Rvcnk7CisgICAgICAgICAgICBtSGlzdG9yeSA9IG1IaXN0b3J5RW5kID0gbnVsbDsKKyAgICAgICAgfQorICAgICAgICBtTnVtSGlzdG9yeUl0ZW1zID0gMDsKKyAgICAgICAgbUhpc3RvcnlCYXNlVGltZSA9IDA7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIGRvVW5wbHVnTG9ja2VkKGxvbmcgYmF0dGVyeVVwdGltZSwgbG9uZyBiYXR0ZXJ5UmVhbHRpbWUpIHsKICAgICAgICAgZm9yIChpbnQgaXUgPSBtVWlkU3RhdHMuc2l6ZSgpIC0gMTsgaXUgPj0gMDsgaXUtLSkgewogICAgICAgICAgICAgVWlkIHUgPSBtVWlkU3RhdHMudmFsdWVBdChpdSk7CiAgICAgICAgICAgICB1Lm1TdGFydGVkVGNwQnl0ZXNSZWNlaXZlZCA9IFRyYWZmaWNTdGF0cy5nZXRVaWRSeEJ5dGVzKHUubVVpZCk7CkBAIC0xMDY2LDcgKzExODUsNyBAQAogICAgICAgICBtQmx1ZXRvb3RoUGluZ0NvdW50ID0gMDsKICAgICB9CiAKLSAgICBwdWJsaWMgdm9pZCBkb1BsdWcobG9uZyBiYXR0ZXJ5VXB0aW1lLCBsb25nIGJhdHRlcnlSZWFsdGltZSkgeworICAgIHB1YmxpYyB2b2lkIGRvUGx1Z0xvY2tlZChsb25nIGJhdHRlcnlVcHRpbWUsIGxvbmcgYmF0dGVyeVJlYWx0aW1lKSB7CiAgICAgICAgIGZvciAoaW50IGl1ID0gbVVpZFN0YXRzLnNpemUoKSAtIDE7IGl1ID49IDA7IGl1LS0pIHsKICAgICAgICAgICAgIFVpZCB1ID0gbVVpZFN0YXRzLnZhbHVlQXQoaXUpOwogICAgICAgICAgICAgaWYgKHUubVN0YXJ0ZWRUY3BCeXRlc1JlY2VpdmVkID49IDApIHsKQEAgLTEwOTQsMTYgKzEyMTMsMzcgQEAKICAgICAgICAgbUJsdWV0b290aFBpbmdTdGFydCA9IC0xOwogICAgIH0KIAotICAgIHB1YmxpYyB2b2lkIG5vdGVTdGFydEdwcyhpbnQgdWlkKSB7CisgICAgaW50IG1HcHNOZXN0aW5nOworICAgIAorICAgIHB1YmxpYyB2b2lkIG5vdGVTdGFydEdwc0xvY2tlZChpbnQgdWlkKSB7CisgICAgICAgIGlmIChtR3BzTmVzdGluZyA9PSAwKSB7CisgICAgICAgICAgICBtSGlzdG9yeUN1ci5zdGF0ZXMgfD0gSGlzdG9yeUl0ZW0uU1RBVEVfR1BTX09OX0ZMQUc7CisgICAgICAgICAgICBpZiAoREVCVUdfSElTVE9SWSkgU2xvZy52KFRBRywgIlN0YXJ0IEdQUyB0bzogIgorICAgICAgICAgICAgICAgICAgICArIEludGVnZXIudG9IZXhTdHJpbmcobUhpc3RvcnlDdXIuc3RhdGVzKSk7CisgICAgICAgICAgICBhZGRIaXN0b3J5UmVjb3JkTG9ja2VkKFN5c3RlbUNsb2NrLmVsYXBzZWRSZWFsdGltZSgpKTsKKyAgICAgICAgfQorICAgICAgICBtR3BzTmVzdGluZysrOwogICAgICAgICBnZXRVaWRTdGF0c0xvY2tlZCh1aWQpLm5vdGVTdGFydEdwcygpOwogICAgIH0KICAgICAKLSAgICBwdWJsaWMgdm9pZCBub3RlU3RvcEdwcyhpbnQgdWlkKSB7CisgICAgcHVibGljIHZvaWQgbm90ZVN0b3BHcHNMb2NrZWQoaW50IHVpZCkgeworICAgICAgICBtR3BzTmVzdGluZy0tOworICAgICAgICBpZiAobUdwc05lc3RpbmcgPT0gMCkgeworICAgICAgICAgICAgbUhpc3RvcnlDdXIuc3RhdGVzICY9IH5IaXN0b3J5SXRlbS5TVEFURV9HUFNfT05fRkxBRzsKKyAgICAgICAgICAgIGlmIChERUJVR19ISVNUT1JZKSBTbG9nLnYoVEFHLCAiU3RvcCBHUFMgdG86ICIKKyAgICAgICAgICAgICAgICAgICAgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG1IaXN0b3J5Q3VyLnN0YXRlcykpOworICAgICAgICAgICAgYWRkSGlzdG9yeVJlY29yZExvY2tlZChTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKSk7CisgICAgICAgIH0KICAgICAgICAgZ2V0VWlkU3RhdHNMb2NrZWQodWlkKS5ub3RlU3RvcEdwcygpOwogICAgIH0KIAogICAgIHB1YmxpYyB2b2lkIG5vdGVTY3JlZW5PbkxvY2tlZCgpIHsKICAgICAgICAgaWYgKCFtU2NyZWVuT24pIHsKKyAgICAgICAgICAgIG1IaXN0b3J5Q3VyLnN0YXRlcyB8PSBIaXN0b3J5SXRlbS5TVEFURV9TQ1JFRU5fT05fRkxBRzsKKyAgICAgICAgICAgIGlmIChERUJVR19ISVNUT1JZKSBTbG9nLnYoVEFHLCAiU2NyZWVuIG9uIHRvOiAiCisgICAgICAgICAgICAgICAgICAgICsgSW50ZWdlci50b0hleFN0cmluZyhtSGlzdG9yeUN1ci5zdGF0ZXMpKTsKKyAgICAgICAgICAgIGFkZEhpc3RvcnlSZWNvcmRMb2NrZWQoU3lzdGVtQ2xvY2suZWxhcHNlZFJlYWx0aW1lKCkpOworICAgICAgICAgICAgbUdwc05lc3RpbmcrKzsKICAgICAgICAgICAgIG1TY3JlZW5PbiA9IHRydWU7CiAgICAgICAgICAgICBtU2NyZWVuT25UaW1lci5zdGFydFJ1bm5pbmdMb2NrZWQodGhpcyk7CiAgICAgICAgICAgICBpZiAobVNjcmVlbkJyaWdodG5lc3NCaW4gPj0gMCkgewpAQCAtMTExNCw2ICsxMjU0LDEwIEBACiAgICAgCiAgICAgcHVibGljIHZvaWQgbm90ZVNjcmVlbk9mZkxvY2tlZCgpIHsKICAgICAgICAgaWYgKG1TY3JlZW5PbikgeworICAgICAgICAgICAgbUhpc3RvcnlDdXIuc3RhdGVzICY9IH5IaXN0b3J5SXRlbS5TVEFURV9TQ1JFRU5fT05fRkxBRzsKKyAgICAgICAgICAgIGlmIChERUJVR19ISVNUT1JZKSBTbG9nLnYoVEFHLCAiU2NyZWVuIG9mZiB0bzogIgorICAgICAgICAgICAgICAgICAgICArIEludGVnZXIudG9IZXhTdHJpbmcobUhpc3RvcnlDdXIuc3RhdGVzKSk7CisgICAgICAgICAgICBhZGRIaXN0b3J5UmVjb3JkTG9ja2VkKFN5c3RlbUNsb2NrLmVsYXBzZWRSZWFsdGltZSgpKTsKICAgICAgICAgICAgIG1TY3JlZW5PbiA9IGZhbHNlOwogICAgICAgICAgICAgbVNjcmVlbk9uVGltZXIuc3RvcFJ1bm5pbmdMb2NrZWQodGhpcyk7CiAgICAgICAgICAgICBpZiAobVNjcmVlbkJyaWdodG5lc3NCaW4gPj0gMCkgewpAQCAtMTEyOCw2ICsxMjcyLDExIEBACiAgICAgICAgIGlmIChiaW4gPCAwKSBiaW4gPSAwOwogICAgICAgICBlbHNlIGlmIChiaW4gPj0gTlVNX1NDUkVFTl9CUklHSFRORVNTX0JJTlMpIGJpbiA9IE5VTV9TQ1JFRU5fQlJJR0hUTkVTU19CSU5TLTE7CiAgICAgICAgIGlmIChtU2NyZWVuQnJpZ2h0bmVzc0JpbiAhPSBiaW4pIHsKKyAgICAgICAgICAgIG1IaXN0b3J5Q3VyLnN0YXRlcyA9IChtSGlzdG9yeUN1ci5zdGF0ZXMmfkhpc3RvcnlJdGVtLlNUQVRFX0JSSUdIVE5FU1NfTUFTSykKKyAgICAgICAgICAgICAgICAgICAgfCAoYmluIDw8IEhpc3RvcnlJdGVtLlNUQVRFX0JSSUdIVE5FU1NfU0hJRlQpOworICAgICAgICAgICAgaWYgKERFQlVHX0hJU1RPUlkpIFNsb2cudihUQUcsICJTY3JlZW4gYnJpZ2h0bmVzcyAiICsgYmluICsgIiB0bzogIgorICAgICAgICAgICAgICAgICAgICArIEludGVnZXIudG9IZXhTdHJpbmcobUhpc3RvcnlDdXIuc3RhdGVzKSk7CisgICAgICAgICAgICBhZGRIaXN0b3J5UmVjb3JkTG9ja2VkKFN5c3RlbUNsb2NrLmVsYXBzZWRSZWFsdGltZSgpKTsKICAgICAgICAgICAgIGlmIChtU2NyZWVuT24pIHsKICAgICAgICAgICAgICAgICBpZiAobVNjcmVlbkJyaWdodG5lc3NCaW4gPj0gMCkgewogICAgICAgICAgICAgICAgICAgICBtU2NyZWVuQnJpZ2h0bmVzc1RpbWVyW21TY3JlZW5CcmlnaHRuZXNzQmluXS5zdG9wUnVubmluZ0xvY2tlZCh0aGlzKTsKQEAgLTExNDgsNiArMTI5NywxMCBAQAogICAgIAogICAgIHB1YmxpYyB2b2lkIG5vdGVQaG9uZU9uTG9ja2VkKCkgewogICAgICAgICBpZiAoIW1QaG9uZU9uKSB7CisgICAgICAgICAgICBtSGlzdG9yeUN1ci5zdGF0ZXMgfD0gSGlzdG9yeUl0ZW0uU1RBVEVfUEhPTkVfT05fRkxBRzsKKyAgICAgICAgICAgIGlmIChERUJVR19ISVNUT1JZKSBTbG9nLnYoVEFHLCAiUGhvbmUgb24gdG86ICIKKyAgICAgICAgICAgICAgICAgICAgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG1IaXN0b3J5Q3VyLnN0YXRlcykpOworICAgICAgICAgICAgYWRkSGlzdG9yeVJlY29yZExvY2tlZChTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKSk7CiAgICAgICAgICAgICBtUGhvbmVPbiA9IHRydWU7CiAgICAgICAgICAgICBtUGhvbmVPblRpbWVyLnN0YXJ0UnVubmluZ0xvY2tlZCh0aGlzKTsKICAgICAgICAgfQpAQCAtMTE1NSw2ICsxMzA4LDEwIEBACiAgICAgCiAgICAgcHVibGljIHZvaWQgbm90ZVBob25lT2ZmTG9ja2VkKCkgewogICAgICAgICBpZiAobVBob25lT24pIHsKKyAgICAgICAgICAgIG1IaXN0b3J5Q3VyLnN0YXRlcyAmPSB+SGlzdG9yeUl0ZW0uU1RBVEVfUEhPTkVfT05fRkxBRzsKKyAgICAgICAgICAgIGlmIChERUJVR19ISVNUT1JZKSBTbG9nLnYoVEFHLCAiUGhvbmUgb2ZmIHRvOiAiCisgICAgICAgICAgICAgICAgICAgICsgSW50ZWdlci50b0hleFN0cmluZyhtSGlzdG9yeUN1ci5zdGF0ZXMpKTsKKyAgICAgICAgICAgIGFkZEhpc3RvcnlSZWNvcmRMb2NrZWQoU3lzdGVtQ2xvY2suZWxhcHNlZFJlYWx0aW1lKCkpOwogICAgICAgICAgICAgbVBob25lT24gPSBmYWxzZTsKICAgICAgICAgICAgIG1QaG9uZU9uVGltZXIuc3RvcFJ1bm5pbmdMb2NrZWQodGhpcyk7CiAgICAgICAgIH0KQEAgLTExNzYsNyArMTMzMywxMSBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIC8vIFN0b3AgU2lnbmFsIFNjYW5uaW5nIHRpbWVyLCBpbiBjYXNlIHdlJ3JlIGdvaW5nIGludG8gc2VydmljZQotICAgICAgICB3aGlsZSAobVBob25lU2lnbmFsU2Nhbm5pbmdUaW1lci5pc1J1bm5pbmdMb2NrZWQoKSkgeworICAgICAgICBpZiAobVBob25lU2lnbmFsU2Nhbm5pbmdUaW1lci5pc1J1bm5pbmdMb2NrZWQoKSkgeworICAgICAgICAgICAgbUhpc3RvcnlDdXIuc3RhdGVzICY9IH5IaXN0b3J5SXRlbS5TVEFURV9QSE9ORV9TQ0FOTklOR19GTEFHOworICAgICAgICAgICAgaWYgKERFQlVHX0hJU1RPUlkpIFNsb2cudihUQUcsICJQaG9uZSBzdG9wcGVkIHNjYW5uaW5nIHRvOiAiCisgICAgICAgICAgICAgICAgICAgICsgSW50ZWdlci50b0hleFN0cmluZyhtSGlzdG9yeUN1ci5zdGF0ZXMpKTsKKyAgICAgICAgICAgIGFkZEhpc3RvcnlSZWNvcmRMb2NrZWQoU3lzdGVtQ2xvY2suZWxhcHNlZFJlYWx0aW1lKCkpOwogICAgICAgICAgICAgbVBob25lU2lnbmFsU2Nhbm5pbmdUaW1lci5zdG9wUnVubmluZ0xvY2tlZCh0aGlzKTsKICAgICAgICAgfQogCkBAIC0xMTkyLDEwICsxMzUzLDIyIEBACiAgICAgICAgICAgICAgICAgbVBob25lU2lnbmFsU3RyZW5ndGhzVGltZXJbbVBob25lU2lnbmFsU3RyZW5ndGhCaW5dLnN0YXJ0UnVubmluZ0xvY2tlZCh0aGlzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghbVBob25lU2lnbmFsU2Nhbm5pbmdUaW1lci5pc1J1bm5pbmdMb2NrZWQoKSkgeworICAgICAgICAgICAgICAgIG1IaXN0b3J5Q3VyLnN0YXRlcyB8PSBIaXN0b3J5SXRlbS5TVEFURV9QSE9ORV9TQ0FOTklOR19GTEFHOworICAgICAgICAgICAgICAgIGlmIChERUJVR19ISVNUT1JZKSBTbG9nLnYoVEFHLCAiUGhvbmUgc3RhcnRlZCBzY2FubmluZyB0bzogIgorICAgICAgICAgICAgICAgICAgICAgICAgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG1IaXN0b3J5Q3VyLnN0YXRlcykpOworICAgICAgICAgICAgICAgIGFkZEhpc3RvcnlSZWNvcmRMb2NrZWQoU3lzdGVtQ2xvY2suZWxhcHNlZFJlYWx0aW1lKCkpOwogICAgICAgICAgICAgICAgIG1QaG9uZVNpZ25hbFNjYW5uaW5nVGltZXIuc3RhcnRSdW5uaW5nTG9ja2VkKHRoaXMpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIG1QaG9uZVNlcnZpY2VTdGF0ZSA9IHN0YXRlOworICAgICAgICAKKyAgICAgICAgaWYgKG1QaG9uZVNlcnZpY2VTdGF0ZSAhPSBzdGF0ZSkgeworICAgICAgICAgICAgbUhpc3RvcnlDdXIuc3RhdGVzID0gKG1IaXN0b3J5Q3VyLnN0YXRlcyZ+SGlzdG9yeUl0ZW0uU1RBVEVfUEhPTkVfU1RBVEVfTUFTSykKKyAgICAgICAgICAgICAgICAgICAgfCAoc3RhdGUgPDwgSGlzdG9yeUl0ZW0uU1RBVEVfUEhPTkVfU1RBVEVfU0hJRlQpOworICAgICAgICAgICAgaWYgKERFQlVHX0hJU1RPUlkpIFNsb2cudihUQUcsICJQaG9uZSBzdGF0ZSAiICsgYmluICsgIiB0bzogIgorICAgICAgICAgICAgICAgICAgICArIEludGVnZXIudG9IZXhTdHJpbmcobUhpc3RvcnlDdXIuc3RhdGVzKSk7CisgICAgICAgICAgICBhZGRIaXN0b3J5UmVjb3JkTG9ja2VkKFN5c3RlbUNsb2NrLmVsYXBzZWRSZWFsdGltZSgpKTsKKyAgICAgICAgICAgIG1QaG9uZVNlcnZpY2VTdGF0ZSA9IHN0YXRlOworICAgICAgICB9CiAgICAgfQogCiAgICAgcHVibGljIHZvaWQgbm90ZVBob25lU2lnbmFsU3RyZW5ndGhMb2NrZWQoU2lnbmFsU3RyZW5ndGggc2lnbmFsU3RyZW5ndGgpIHsKQEAgLTEyMjIsNiArMTM5NSwxMSBAQAogICAgICAgICAgICAgZWxzZSBiaW4gPSBTSUdOQUxfU1RSRU5HVEhfUE9PUjsKICAgICAgICAgfQogICAgICAgICBpZiAobVBob25lU2lnbmFsU3RyZW5ndGhCaW4gIT0gYmluKSB7CisgICAgICAgICAgICBtSGlzdG9yeUN1ci5zdGF0ZXMgPSAobUhpc3RvcnlDdXIuc3RhdGVzJn5IaXN0b3J5SXRlbS5TVEFURV9TSUdOQUxfU1RSRU5HVEhfTUFTSykKKyAgICAgICAgICAgICAgICAgICAgfCAoYmluIDw8IEhpc3RvcnlJdGVtLlNUQVRFX1NJR05BTF9TVFJFTkdUSF9TSElGVCk7CisgICAgICAgICAgICBpZiAoREVCVUdfSElTVE9SWSkgU2xvZy52KFRBRywgIlNpZ25hbCBzdHJlbmd0aCAiICsgYmluICsgIiB0bzogIgorICAgICAgICAgICAgICAgICAgICArIEludGVnZXIudG9IZXhTdHJpbmcobUhpc3RvcnlDdXIuc3RhdGVzKSk7CisgICAgICAgICAgICBhZGRIaXN0b3J5UmVjb3JkTG9ja2VkKFN5c3RlbUNsb2NrLmVsYXBzZWRSZWFsdGltZSgpKTsKICAgICAgICAgICAgIGlmIChtUGhvbmVTaWduYWxTdHJlbmd0aEJpbiA+PSAwKSB7CiAgICAgICAgICAgICAgICAgbVBob25lU2lnbmFsU3RyZW5ndGhzVGltZXJbbVBob25lU2lnbmFsU3RyZW5ndGhCaW5dLnN0b3BSdW5uaW5nTG9ja2VkKHRoaXMpOwogICAgICAgICAgICAgfQpAQCAtMTI0Myw2ICsxNDIxLDMzIEBACiAgICAgICAgICAgICAgICAgY2FzZSBUZWxlcGhvbnlNYW5hZ2VyLk5FVFdPUktfVFlQRV9VTVRTOgogICAgICAgICAgICAgICAgICAgICBiaW4gPSBEQVRBX0NPTk5FQ1RJT05fVU1UUzsKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBUZWxlcGhvbnlNYW5hZ2VyLk5FVFdPUktfVFlQRV9DRE1BOgorICAgICAgICAgICAgICAgICAgICBiaW4gPSBEQVRBX0NPTk5FQ1RJT05fQ0RNQTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBUZWxlcGhvbnlNYW5hZ2VyLk5FVFdPUktfVFlQRV9FVkRPXzA6CisgICAgICAgICAgICAgICAgICAgIGJpbiA9IERBVEFfQ09OTkVDVElPTl9FVkRPXzA7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgVGVsZXBob255TWFuYWdlci5ORVRXT1JLX1RZUEVfRVZET19BOgorICAgICAgICAgICAgICAgICAgICBiaW4gPSBEQVRBX0NPTk5FQ1RJT05fRVZET19BOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFRlbGVwaG9ueU1hbmFnZXIuTkVUV09SS19UWVBFXzF4UlRUOgorICAgICAgICAgICAgICAgICAgICBiaW4gPSBEQVRBX0NPTk5FQ1RJT05fMXhSVFQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgVGVsZXBob255TWFuYWdlci5ORVRXT1JLX1RZUEVfSFNEUEE6CisgICAgICAgICAgICAgICAgICAgIGJpbiA9IERBVEFfQ09OTkVDVElPTl9IU0RQQTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBUZWxlcGhvbnlNYW5hZ2VyLk5FVFdPUktfVFlQRV9IU1VQQToKKyAgICAgICAgICAgICAgICAgICAgYmluID0gREFUQV9DT05ORUNUSU9OX0hTVVBBOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFRlbGVwaG9ueU1hbmFnZXIuTkVUV09SS19UWVBFX0hTUEE6CisgICAgICAgICAgICAgICAgICAgIGJpbiA9IERBVEFfQ09OTkVDVElPTl9IU1BBOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFRlbGVwaG9ueU1hbmFnZXIuTkVUV09SS19UWVBFX0lERU46CisgICAgICAgICAgICAgICAgICAgIGJpbiA9IERBVEFfQ09OTkVDVElPTl9JREVOOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFRlbGVwaG9ueU1hbmFnZXIuTkVUV09SS19UWVBFX0VWRE9fQjoKKyAgICAgICAgICAgICAgICAgICAgYmluID0gREFUQV9DT05ORUNUSU9OX0VWRE9fQjsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgYmluID0gREFUQV9DT05ORUNUSU9OX09USEVSOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTEyNTAsNiArMTQ1NSwxMSBAQAogICAgICAgICB9CiAgICAgICAgIGlmIChERUJVRykgTG9nLmkoVEFHLCAiUGhvbmUgRGF0YSBDb25uZWN0aW9uIC0+ICIgKyBkYXRhVHlwZSArICIgPSAiICsgaGFzRGF0YSk7CiAgICAgICAgIGlmIChtUGhvbmVEYXRhQ29ubmVjdGlvblR5cGUgIT0gYmluKSB7CisgICAgICAgICAgICBtSGlzdG9yeUN1ci5zdGF0ZXMgPSAobUhpc3RvcnlDdXIuc3RhdGVzJn5IaXN0b3J5SXRlbS5TVEFURV9EQVRBX0NPTk5FQ1RJT05fTUFTSykKKyAgICAgICAgICAgICAgICAgICAgfCAoYmluIDw8IEhpc3RvcnlJdGVtLlNUQVRFX0RBVEFfQ09OTkVDVElPTl9TSElGVCk7CisgICAgICAgICAgICBpZiAoREVCVUdfSElTVE9SWSkgU2xvZy52KFRBRywgIkRhdGEgY29ubmVjdGlvbiAiICsgYmluICsgIiB0bzogIgorICAgICAgICAgICAgICAgICAgICArIEludGVnZXIudG9IZXhTdHJpbmcobUhpc3RvcnlDdXIuc3RhdGVzKSk7CisgICAgICAgICAgICBhZGRIaXN0b3J5UmVjb3JkTG9ja2VkKFN5c3RlbUNsb2NrLmVsYXBzZWRSZWFsdGltZSgpKTsKICAgICAgICAgICAgIGlmIChtUGhvbmVEYXRhQ29ubmVjdGlvblR5cGUgPj0gMCkgewogICAgICAgICAgICAgICAgIG1QaG9uZURhdGFDb25uZWN0aW9uc1RpbWVyW21QaG9uZURhdGFDb25uZWN0aW9uVHlwZV0uc3RvcFJ1bm5pbmdMb2NrZWQodGhpcyk7CiAgICAgICAgICAgICB9CkBAIC0xMjYwLDYgKzE0NzAsMTAgQEAKICAgICAKICAgICBwdWJsaWMgdm9pZCBub3RlV2lmaU9uTG9ja2VkKGludCB1aWQpIHsKICAgICAgICAgaWYgKCFtV2lmaU9uKSB7CisgICAgICAgICAgICBtSGlzdG9yeUN1ci5zdGF0ZXMgfD0gSGlzdG9yeUl0ZW0uU1RBVEVfV0lGSV9PTl9GTEFHOworICAgICAgICAgICAgaWYgKERFQlVHX0hJU1RPUlkpIFNsb2cudihUQUcsICJXSUZJIG9uIHRvOiAiCisgICAgICAgICAgICAgICAgICAgICsgSW50ZWdlci50b0hleFN0cmluZyhtSGlzdG9yeUN1ci5zdGF0ZXMpKTsKKyAgICAgICAgICAgIGFkZEhpc3RvcnlSZWNvcmRMb2NrZWQoU3lzdGVtQ2xvY2suZWxhcHNlZFJlYWx0aW1lKCkpOwogICAgICAgICAgICAgbVdpZmlPbiA9IHRydWU7CiAgICAgICAgICAgICBtV2lmaU9uVGltZXIuc3RhcnRSdW5uaW5nTG9ja2VkKHRoaXMpOwogICAgICAgICB9CkBAIC0xMjc0LDYgKzE0ODgsMTAgQEAKICAgICAKICAgICBwdWJsaWMgdm9pZCBub3RlV2lmaU9mZkxvY2tlZChpbnQgdWlkKSB7CiAgICAgICAgIGlmIChtV2lmaU9uKSB7CisgICAgICAgICAgICBtSGlzdG9yeUN1ci5zdGF0ZXMgJj0gfkhpc3RvcnlJdGVtLlNUQVRFX1dJRklfT05fRkxBRzsKKyAgICAgICAgICAgIGlmIChERUJVR19ISVNUT1JZKSBTbG9nLnYoVEFHLCAiV0lGSSBvZmYgdG86ICIKKyAgICAgICAgICAgICAgICAgICAgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG1IaXN0b3J5Q3VyLnN0YXRlcykpOworICAgICAgICAgICAgYWRkSGlzdG9yeVJlY29yZExvY2tlZChTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKSk7CiAgICAgICAgICAgICBtV2lmaU9uID0gZmFsc2U7CiAgICAgICAgICAgICBtV2lmaU9uVGltZXIuc3RvcFJ1bm5pbmdMb2NrZWQodGhpcyk7CiAgICAgICAgIH0KQEAgLTEyODUsNiArMTUwMywxMCBAQAogCiAgICAgcHVibGljIHZvaWQgbm90ZUF1ZGlvT25Mb2NrZWQoaW50IHVpZCkgewogICAgICAgICBpZiAoIW1BdWRpb09uKSB7CisgICAgICAgICAgICBtSGlzdG9yeUN1ci5zdGF0ZXMgfD0gSGlzdG9yeUl0ZW0uU1RBVEVfQVVESU9fT05fRkxBRzsKKyAgICAgICAgICAgIGlmIChERUJVR19ISVNUT1JZKSBTbG9nLnYoVEFHLCAiQXVkaW8gb24gdG86ICIKKyAgICAgICAgICAgICAgICAgICAgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG1IaXN0b3J5Q3VyLnN0YXRlcykpOworICAgICAgICAgICAgYWRkSGlzdG9yeVJlY29yZExvY2tlZChTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKSk7CiAgICAgICAgICAgICBtQXVkaW9PbiA9IHRydWU7CiAgICAgICAgICAgICBtQXVkaW9PblRpbWVyLnN0YXJ0UnVubmluZ0xvY2tlZCh0aGlzKTsKICAgICAgICAgfQpAQCAtMTI5Myw2ICsxNTE1LDEwIEBACiAgICAgCiAgICAgcHVibGljIHZvaWQgbm90ZUF1ZGlvT2ZmTG9ja2VkKGludCB1aWQpIHsKICAgICAgICAgaWYgKG1BdWRpb09uKSB7CisgICAgICAgICAgICBtSGlzdG9yeUN1ci5zdGF0ZXMgJj0gfkhpc3RvcnlJdGVtLlNUQVRFX0FVRElPX09OX0ZMQUc7CisgICAgICAgICAgICBpZiAoREVCVUdfSElTVE9SWSkgU2xvZy52KFRBRywgIkF1ZGlvIG9mZiB0bzogIgorICAgICAgICAgICAgICAgICAgICArIEludGVnZXIudG9IZXhTdHJpbmcobUhpc3RvcnlDdXIuc3RhdGVzKSk7CisgICAgICAgICAgICBhZGRIaXN0b3J5UmVjb3JkTG9ja2VkKFN5c3RlbUNsb2NrLmVsYXBzZWRSZWFsdGltZSgpKTsKICAgICAgICAgICAgIG1BdWRpb09uID0gZmFsc2U7CiAgICAgICAgICAgICBtQXVkaW9PblRpbWVyLnN0b3BSdW5uaW5nTG9ja2VkKHRoaXMpOwogICAgICAgICB9CkBAIC0xMzAxLDYgKzE1MjcsMTAgQEAKIAogICAgIHB1YmxpYyB2b2lkIG5vdGVWaWRlb09uTG9ja2VkKGludCB1aWQpIHsKICAgICAgICAgaWYgKCFtVmlkZW9PbikgeworICAgICAgICAgICAgbUhpc3RvcnlDdXIuc3RhdGVzIHw9IEhpc3RvcnlJdGVtLlNUQVRFX1ZJREVPX09OX0ZMQUc7CisgICAgICAgICAgICBpZiAoREVCVUdfSElTVE9SWSkgU2xvZy52KFRBRywgIlZpZGVvIG9uIHRvOiAiCisgICAgICAgICAgICAgICAgICAgICsgSW50ZWdlci50b0hleFN0cmluZyhtSGlzdG9yeUN1ci5zdGF0ZXMpKTsKKyAgICAgICAgICAgIGFkZEhpc3RvcnlSZWNvcmRMb2NrZWQoU3lzdGVtQ2xvY2suZWxhcHNlZFJlYWx0aW1lKCkpOwogICAgICAgICAgICAgbVZpZGVvT24gPSB0cnVlOwogICAgICAgICAgICAgbVZpZGVvT25UaW1lci5zdGFydFJ1bm5pbmdMb2NrZWQodGhpcyk7CiAgICAgICAgIH0KQEAgLTEzMDksNiArMTUzOSwxMCBAQAogICAgIAogICAgIHB1YmxpYyB2b2lkIG5vdGVWaWRlb09mZkxvY2tlZChpbnQgdWlkKSB7CiAgICAgICAgIGlmIChtVmlkZW9PbikgeworICAgICAgICAgICAgbUhpc3RvcnlDdXIuc3RhdGVzICY9IH5IaXN0b3J5SXRlbS5TVEFURV9WSURFT19PTl9GTEFHOworICAgICAgICAgICAgaWYgKERFQlVHX0hJU1RPUlkpIFNsb2cudihUQUcsICJWaWRlbyBvZmYgdG86ICIKKyAgICAgICAgICAgICAgICAgICAgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG1IaXN0b3J5Q3VyLnN0YXRlcykpOworICAgICAgICAgICAgYWRkSGlzdG9yeVJlY29yZExvY2tlZChTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKSk7CiAgICAgICAgICAgICBtVmlkZW9PbiA9IGZhbHNlOwogICAgICAgICAgICAgbVZpZGVvT25UaW1lci5zdG9wUnVubmluZ0xvY2tlZCh0aGlzKTsKICAgICAgICAgfQpAQCAtMTMxNyw2ICsxNTUxLDEwIEBACiAKICAgICBwdWJsaWMgdm9pZCBub3RlV2lmaVJ1bm5pbmdMb2NrZWQoKSB7CiAgICAgICAgIGlmICghbVdpZmlSdW5uaW5nKSB7CisgICAgICAgICAgICBtSGlzdG9yeUN1ci5zdGF0ZXMgfD0gSGlzdG9yeUl0ZW0uU1RBVEVfV0lGSV9SVU5OSU5HX0ZMQUc7CisgICAgICAgICAgICBpZiAoREVCVUdfSElTVE9SWSkgU2xvZy52KFRBRywgIldJRkkgcnVubmluZyB0bzogIgorICAgICAgICAgICAgICAgICAgICArIEludGVnZXIudG9IZXhTdHJpbmcobUhpc3RvcnlDdXIuc3RhdGVzKSk7CisgICAgICAgICAgICBhZGRIaXN0b3J5UmVjb3JkTG9ja2VkKFN5c3RlbUNsb2NrLmVsYXBzZWRSZWFsdGltZSgpKTsKICAgICAgICAgICAgIG1XaWZpUnVubmluZyA9IHRydWU7CiAgICAgICAgICAgICBtV2lmaVJ1bm5pbmdUaW1lci5zdGFydFJ1bm5pbmdMb2NrZWQodGhpcyk7CiAgICAgICAgIH0KQEAgLTEzMjQsNiArMTU2MiwxMCBAQAogCiAgICAgcHVibGljIHZvaWQgbm90ZVdpZmlTdG9wcGVkTG9ja2VkKCkgewogICAgICAgICBpZiAobVdpZmlSdW5uaW5nKSB7CisgICAgICAgICAgICBtSGlzdG9yeUN1ci5zdGF0ZXMgJj0gfkhpc3RvcnlJdGVtLlNUQVRFX1dJRklfUlVOTklOR19GTEFHOworICAgICAgICAgICAgaWYgKERFQlVHX0hJU1RPUlkpIFNsb2cudihUQUcsICJXSUZJIHN0b3BwZWQgdG86ICIKKyAgICAgICAgICAgICAgICAgICAgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG1IaXN0b3J5Q3VyLnN0YXRlcykpOworICAgICAgICAgICAgYWRkSGlzdG9yeVJlY29yZExvY2tlZChTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKSk7CiAgICAgICAgICAgICBtV2lmaVJ1bm5pbmcgPSBmYWxzZTsKICAgICAgICAgICAgIG1XaWZpUnVubmluZ1RpbWVyLnN0b3BSdW5uaW5nTG9ja2VkKHRoaXMpOwogICAgICAgICB9CkBAIC0xMzMxLDYgKzE1NzMsMTAgQEAKIAogICAgIHB1YmxpYyB2b2lkIG5vdGVCbHVldG9vdGhPbkxvY2tlZCgpIHsKICAgICAgICAgaWYgKCFtQmx1ZXRvb3RoT24pIHsKKyAgICAgICAgICAgIG1IaXN0b3J5Q3VyLnN0YXRlcyB8PSBIaXN0b3J5SXRlbS5TVEFURV9CTFVFVE9PVEhfT05fRkxBRzsKKyAgICAgICAgICAgIGlmIChERUJVR19ISVNUT1JZKSBTbG9nLnYoVEFHLCAiQmx1ZXRvb3RoIG9uIHRvOiAiCisgICAgICAgICAgICAgICAgICAgICsgSW50ZWdlci50b0hleFN0cmluZyhtSGlzdG9yeUN1ci5zdGF0ZXMpKTsKKyAgICAgICAgICAgIGFkZEhpc3RvcnlSZWNvcmRMb2NrZWQoU3lzdGVtQ2xvY2suZWxhcHNlZFJlYWx0aW1lKCkpOwogICAgICAgICAgICAgbUJsdWV0b290aE9uID0gdHJ1ZTsKICAgICAgICAgICAgIG1CbHVldG9vdGhPblRpbWVyLnN0YXJ0UnVubmluZ0xvY2tlZCh0aGlzKTsKICAgICAgICAgfQpAQCAtMTMzOCwzMiArMTU4NCw4NCBAQAogICAgIAogICAgIHB1YmxpYyB2b2lkIG5vdGVCbHVldG9vdGhPZmZMb2NrZWQoKSB7CiAgICAgICAgIGlmIChtQmx1ZXRvb3RoT24pIHsKKyAgICAgICAgICAgIG1IaXN0b3J5Q3VyLnN0YXRlcyAmPSB+SGlzdG9yeUl0ZW0uU1RBVEVfQkxVRVRPT1RIX09OX0ZMQUc7CisgICAgICAgICAgICBpZiAoREVCVUdfSElTVE9SWSkgU2xvZy52KFRBRywgIkJsdWV0b290aCBvZmYgdG86ICIKKyAgICAgICAgICAgICAgICAgICAgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG1IaXN0b3J5Q3VyLnN0YXRlcykpOworICAgICAgICAgICAgYWRkSGlzdG9yeVJlY29yZExvY2tlZChTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKSk7CiAgICAgICAgICAgICBtQmx1ZXRvb3RoT24gPSBmYWxzZTsKICAgICAgICAgICAgIG1CbHVldG9vdGhPblRpbWVyLnN0b3BSdW5uaW5nTG9ja2VkKHRoaXMpOwogICAgICAgICB9CiAgICAgfQogICAgIAorICAgIGludCBtV2lmaUZ1bGxMb2NrTmVzdGluZyA9IDA7CisgICAgCiAgICAgcHVibGljIHZvaWQgbm90ZUZ1bGxXaWZpTG9ja0FjcXVpcmVkTG9ja2VkKGludCB1aWQpIHsKKyAgICAgICAgaWYgKG1XaWZpRnVsbExvY2tOZXN0aW5nID09IDApIHsKKyAgICAgICAgICAgIG1IaXN0b3J5Q3VyLnN0YXRlcyB8PSBIaXN0b3J5SXRlbS5TVEFURV9XSUZJX0ZVTExfTE9DS19GTEFHOworICAgICAgICAgICAgaWYgKERFQlVHX0hJU1RPUlkpIFNsb2cudihUQUcsICJXSUZJIGZ1bGwgbG9jayBvbiB0bzogIgorICAgICAgICAgICAgICAgICAgICArIEludGVnZXIudG9IZXhTdHJpbmcobUhpc3RvcnlDdXIuc3RhdGVzKSk7CisgICAgICAgICAgICBhZGRIaXN0b3J5UmVjb3JkTG9ja2VkKFN5c3RlbUNsb2NrLmVsYXBzZWRSZWFsdGltZSgpKTsKKyAgICAgICAgfQorICAgICAgICBtV2lmaUZ1bGxMb2NrTmVzdGluZysrOwogICAgICAgICBnZXRVaWRTdGF0c0xvY2tlZCh1aWQpLm5vdGVGdWxsV2lmaUxvY2tBY3F1aXJlZExvY2tlZCgpOwogICAgIH0KIAogICAgIHB1YmxpYyB2b2lkIG5vdGVGdWxsV2lmaUxvY2tSZWxlYXNlZExvY2tlZChpbnQgdWlkKSB7CisgICAgICAgIG1XaWZpRnVsbExvY2tOZXN0aW5nLS07CisgICAgICAgIGlmIChtV2lmaUZ1bGxMb2NrTmVzdGluZyA9PSAwKSB7CisgICAgICAgICAgICBtSGlzdG9yeUN1ci5zdGF0ZXMgJj0gfkhpc3RvcnlJdGVtLlNUQVRFX1dJRklfRlVMTF9MT0NLX0ZMQUc7CisgICAgICAgICAgICBpZiAoREVCVUdfSElTVE9SWSkgU2xvZy52KFRBRywgIldJRkkgZnVsbCBsb2NrIG9mZiB0bzogIgorICAgICAgICAgICAgICAgICAgICArIEludGVnZXIudG9IZXhTdHJpbmcobUhpc3RvcnlDdXIuc3RhdGVzKSk7CisgICAgICAgICAgICBhZGRIaXN0b3J5UmVjb3JkTG9ja2VkKFN5c3RlbUNsb2NrLmVsYXBzZWRSZWFsdGltZSgpKTsKKyAgICAgICAgfQogICAgICAgICBnZXRVaWRTdGF0c0xvY2tlZCh1aWQpLm5vdGVGdWxsV2lmaUxvY2tSZWxlYXNlZExvY2tlZCgpOwogICAgIH0KIAorICAgIGludCBtV2lmaVNjYW5Mb2NrTmVzdGluZyA9IDA7CisgICAgCiAgICAgcHVibGljIHZvaWQgbm90ZVNjYW5XaWZpTG9ja0FjcXVpcmVkTG9ja2VkKGludCB1aWQpIHsKKyAgICAgICAgaWYgKG1XaWZpU2NhbkxvY2tOZXN0aW5nID09IDApIHsKKyAgICAgICAgICAgIG1IaXN0b3J5Q3VyLnN0YXRlcyB8PSBIaXN0b3J5SXRlbS5TVEFURV9XSUZJX1NDQU5fTE9DS19GTEFHOworICAgICAgICAgICAgaWYgKERFQlVHX0hJU1RPUlkpIFNsb2cudihUQUcsICJXSUZJIHNjYW4gbG9jayBvbiB0bzogIgorICAgICAgICAgICAgICAgICAgICArIEludGVnZXIudG9IZXhTdHJpbmcobUhpc3RvcnlDdXIuc3RhdGVzKSk7CisgICAgICAgICAgICBhZGRIaXN0b3J5UmVjb3JkTG9ja2VkKFN5c3RlbUNsb2NrLmVsYXBzZWRSZWFsdGltZSgpKTsKKyAgICAgICAgfQorICAgICAgICBtV2lmaVNjYW5Mb2NrTmVzdGluZysrOwogICAgICAgICBnZXRVaWRTdGF0c0xvY2tlZCh1aWQpLm5vdGVTY2FuV2lmaUxvY2tBY3F1aXJlZExvY2tlZCgpOwogICAgIH0KIAogICAgIHB1YmxpYyB2b2lkIG5vdGVTY2FuV2lmaUxvY2tSZWxlYXNlZExvY2tlZChpbnQgdWlkKSB7CisgICAgICAgIG1XaWZpU2NhbkxvY2tOZXN0aW5nLS07CisgICAgICAgIGlmIChtV2lmaVNjYW5Mb2NrTmVzdGluZyA9PSAwKSB7CisgICAgICAgICAgICBtSGlzdG9yeUN1ci5zdGF0ZXMgJj0gfkhpc3RvcnlJdGVtLlNUQVRFX1dJRklfU0NBTl9MT0NLX0ZMQUc7CisgICAgICAgICAgICBpZiAoREVCVUdfSElTVE9SWSkgU2xvZy52KFRBRywgIldJRkkgc2NhbiBsb2NrIG9mZiB0bzogIgorICAgICAgICAgICAgICAgICAgICArIEludGVnZXIudG9IZXhTdHJpbmcobUhpc3RvcnlDdXIuc3RhdGVzKSk7CisgICAgICAgICAgICBhZGRIaXN0b3J5UmVjb3JkTG9ja2VkKFN5c3RlbUNsb2NrLmVsYXBzZWRSZWFsdGltZSgpKTsKKyAgICAgICAgfQogICAgICAgICBnZXRVaWRTdGF0c0xvY2tlZCh1aWQpLm5vdGVTY2FuV2lmaUxvY2tSZWxlYXNlZExvY2tlZCgpOwogICAgIH0KIAorICAgIGludCBtV2lmaU11bHRpY2FzdE5lc3RpbmcgPSAwOworICAgIAogICAgIHB1YmxpYyB2b2lkIG5vdGVXaWZpTXVsdGljYXN0RW5hYmxlZExvY2tlZChpbnQgdWlkKSB7CisgICAgICAgIGlmIChtV2lmaU11bHRpY2FzdE5lc3RpbmcgPT0gMCkgeworICAgICAgICAgICAgbUhpc3RvcnlDdXIuc3RhdGVzIHw9IEhpc3RvcnlJdGVtLlNUQVRFX1dJRklfTVVMVElDQVNUX09OX0ZMQUc7CisgICAgICAgICAgICBpZiAoREVCVUdfSElTVE9SWSkgU2xvZy52KFRBRywgIldJRkkgbXVsdGljYXN0IG9uIHRvOiAiCisgICAgICAgICAgICAgICAgICAgICsgSW50ZWdlci50b0hleFN0cmluZyhtSGlzdG9yeUN1ci5zdGF0ZXMpKTsKKyAgICAgICAgICAgIGFkZEhpc3RvcnlSZWNvcmRMb2NrZWQoU3lzdGVtQ2xvY2suZWxhcHNlZFJlYWx0aW1lKCkpOworICAgICAgICB9CisgICAgICAgIG1XaWZpTXVsdGljYXN0TmVzdGluZysrOwogICAgICAgICBnZXRVaWRTdGF0c0xvY2tlZCh1aWQpLm5vdGVXaWZpTXVsdGljYXN0RW5hYmxlZExvY2tlZCgpOwogICAgIH0KIAogICAgIHB1YmxpYyB2b2lkIG5vdGVXaWZpTXVsdGljYXN0RGlzYWJsZWRMb2NrZWQoaW50IHVpZCkgeworICAgICAgICBtV2lmaU11bHRpY2FzdE5lc3RpbmctLTsKKyAgICAgICAgaWYgKG1XaWZpTXVsdGljYXN0TmVzdGluZyA9PSAwKSB7CisgICAgICAgICAgICBtSGlzdG9yeUN1ci5zdGF0ZXMgJj0gfkhpc3RvcnlJdGVtLlNUQVRFX1dJRklfTVVMVElDQVNUX09OX0ZMQUc7CisgICAgICAgICAgICBpZiAoREVCVUdfSElTVE9SWSkgU2xvZy52KFRBRywgIldJRkkgbXVsdGljYXN0IG9mZiB0bzogIgorICAgICAgICAgICAgICAgICAgICArIEludGVnZXIudG9IZXhTdHJpbmcobUhpc3RvcnlDdXIuc3RhdGVzKSk7CisgICAgICAgICAgICBhZGRIaXN0b3J5UmVjb3JkTG9ja2VkKFN5c3RlbUNsb2NrLmVsYXBzZWRSZWFsdGltZSgpKTsKKyAgICAgICAgfQogICAgICAgICBnZXRVaWRTdGF0c0xvY2tlZCh1aWQpLm5vdGVXaWZpTXVsdGljYXN0RGlzYWJsZWRMb2NrZWQoKTsKICAgICB9CiAKQEAgLTE1MzEsOSArMTgyOSw5IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIG1Mb2FkZWRUY3BCeXRlc1JlY2VpdmVkOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBsb25nIGN1cnJlbnQgPSBjb21wdXRlQ3VycmVudFRjcEJ5dGVzUmVjZWl2ZWQoKTsKLSAgICAgICAgICAgICAgICBpZiAod2hpY2ggPT0gU1RBVFNfVU5QTFVHR0VEKSB7CisgICAgICAgICAgICAgICAgaWYgKHdoaWNoID09IFNUQVRTX1NJTkNFX1VOUExVR0dFRCkgewogICAgICAgICAgICAgICAgICAgICBjdXJyZW50IC09IG1UY3BCeXRlc1JlY2VpdmVkQXRMYXN0VW5wbHVnOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod2hpY2ggPT0gU1RBVFNfVE9UQUwpIHsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHdoaWNoID09IFNUQVRTX1NJTkNFX0NIQVJHRUQpIHsKICAgICAgICAgICAgICAgICAgICAgY3VycmVudCArPSBtTG9hZGVkVGNwQnl0ZXNSZWNlaXZlZDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnQ7CkBAIC0xNTUxLDkgKzE4NDksOSBAQAogICAgICAgICAgICAgICAgIHJldHVybiBtTG9hZGVkVGNwQnl0ZXNTZW50OwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBsb25nIGN1cnJlbnQgPSBjb21wdXRlQ3VycmVudFRjcEJ5dGVzU2VudCgpOwotICAgICAgICAgICAgICAgIGlmICh3aGljaCA9PSBTVEFUU19VTlBMVUdHRUQpIHsKKyAgICAgICAgICAgICAgICBpZiAod2hpY2ggPT0gU1RBVFNfU0lOQ0VfVU5QTFVHR0VEKSB7CiAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgLT0gbVRjcEJ5dGVzU2VudEF0TGFzdFVucGx1ZzsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHdoaWNoID09IFNUQVRTX1RPVEFMKSB7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh3aGljaCA9PSBTVEFUU19TSU5DRV9DSEFSR0VEKSB7CiAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnQgKz0gbUxvYWRlZFRjcEJ5dGVzU2VudDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnQ7CkBAIC0xNTY0LDYgKzE4NjIsMTAgQEAKICAgICAgICAgcHVibGljIHZvaWQgbm90ZVdpZmlUdXJuZWRPbkxvY2tlZCgpIHsKICAgICAgICAgICAgIGlmICghbVdpZmlUdXJuZWRPbikgewogICAgICAgICAgICAgICAgIG1XaWZpVHVybmVkT24gPSB0cnVlOworICAgICAgICAgICAgICAgIGlmIChtV2lmaVR1cm5lZE9uVGltZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBtV2lmaVR1cm5lZE9uVGltZXIgPSBuZXcgU3RvcHdhdGNoVGltZXIoV0lGSV9UVVJORURfT04sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwgbVVucGx1Z2dhYmxlcyk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG1XaWZpVHVybmVkT25UaW1lci5zdGFydFJ1bm5pbmdMb2NrZWQoQmF0dGVyeVN0YXRzSW1wbC50aGlzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTU4MCw0MyArMTg4MiwxNSBAQAogICAgICAgICBwdWJsaWMgdm9pZCBub3RlRnVsbFdpZmlMb2NrQWNxdWlyZWRMb2NrZWQoKSB7CiAgICAgICAgICAgICBpZiAoIW1GdWxsV2lmaUxvY2tPdXQpIHsKICAgICAgICAgICAgICAgICBtRnVsbFdpZmlMb2NrT3V0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBpZiAobUZ1bGxXaWZpTG9ja1RpbWVyID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgbUZ1bGxXaWZpTG9ja1RpbWVyID0gbmV3IFN0b3B3YXRjaFRpbWVyKEZVTExfV0lGSV9MT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsIG1VbnBsdWdnYWJsZXMpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBtRnVsbFdpZmlMb2NrVGltZXIuc3RhcnRSdW5uaW5nTG9ja2VkKEJhdHRlcnlTdGF0c0ltcGwudGhpcyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIEBPdmVycmlkZQotICAgICAgICBwdWJsaWMgdm9pZCBub3RlVmlkZW9UdXJuZWRPbkxvY2tlZCgpIHsKLSAgICAgICAgICAgIGlmICghbVZpZGVvVHVybmVkT24pIHsKLSAgICAgICAgICAgICAgICBtVmlkZW9UdXJuZWRPbiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgbVZpZGVvVHVybmVkT25UaW1lci5zdGFydFJ1bm5pbmdMb2NrZWQoQmF0dGVyeVN0YXRzSW1wbC50aGlzKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIEBPdmVycmlkZQotICAgICAgICBwdWJsaWMgdm9pZCBub3RlVmlkZW9UdXJuZWRPZmZMb2NrZWQoKSB7Ci0gICAgICAgICAgICBpZiAobVZpZGVvVHVybmVkT24pIHsKLSAgICAgICAgICAgICAgICBtVmlkZW9UdXJuZWRPbiA9IGZhbHNlOwotICAgICAgICAgICAgICAgIG1WaWRlb1R1cm5lZE9uVGltZXIuc3RvcFJ1bm5pbmdMb2NrZWQoQmF0dGVyeVN0YXRzSW1wbC50aGlzKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIEBPdmVycmlkZQotICAgICAgICBwdWJsaWMgdm9pZCBub3RlQXVkaW9UdXJuZWRPbkxvY2tlZCgpIHsKLSAgICAgICAgICAgIGlmICghbUF1ZGlvVHVybmVkT24pIHsKLSAgICAgICAgICAgICAgICBtQXVkaW9UdXJuZWRPbiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgbUF1ZGlvVHVybmVkT25UaW1lci5zdGFydFJ1bm5pbmdMb2NrZWQoQmF0dGVyeVN0YXRzSW1wbC50aGlzKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIEBPdmVycmlkZQotICAgICAgICBwdWJsaWMgdm9pZCBub3RlQXVkaW9UdXJuZWRPZmZMb2NrZWQoKSB7Ci0gICAgICAgICAgICBpZiAobUF1ZGlvVHVybmVkT24pIHsKLSAgICAgICAgICAgICAgICBtQXVkaW9UdXJuZWRPbiA9IGZhbHNlOwotICAgICAgICAgICAgICAgIG1BdWRpb1R1cm5lZE9uVGltZXIuc3RvcFJ1bm5pbmdMb2NrZWQoQmF0dGVyeVN0YXRzSW1wbC50aGlzKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIEBPdmVycmlkZQogICAgICAgICBwdWJsaWMgdm9pZCBub3RlRnVsbFdpZmlMb2NrUmVsZWFzZWRMb2NrZWQoKSB7CiAgICAgICAgICAgICBpZiAobUZ1bGxXaWZpTG9ja091dCkgewogICAgICAgICAgICAgICAgIG1GdWxsV2lmaUxvY2tPdXQgPSBmYWxzZTsKQEAgLTE2MjgsNiArMTkwMiwxMCBAQAogICAgICAgICBwdWJsaWMgdm9pZCBub3RlU2NhbldpZmlMb2NrQWNxdWlyZWRMb2NrZWQoKSB7CiAgICAgICAgICAgICBpZiAoIW1TY2FuV2lmaUxvY2tPdXQpIHsKICAgICAgICAgICAgICAgICBtU2NhbldpZmlMb2NrT3V0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBpZiAobVNjYW5XaWZpTG9ja1RpbWVyID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgbVNjYW5XaWZpTG9ja1RpbWVyID0gbmV3IFN0b3B3YXRjaFRpbWVyKFNDQU5fV0lGSV9MT0NLLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsIG1VbnBsdWdnYWJsZXMpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBtU2NhbldpZmlMb2NrVGltZXIuc3RhcnRSdW5uaW5nTG9ja2VkKEJhdHRlcnlTdGF0c0ltcGwudGhpcyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE2NDQsNiArMTkyMiwxMCBAQAogICAgICAgICBwdWJsaWMgdm9pZCBub3RlV2lmaU11bHRpY2FzdEVuYWJsZWRMb2NrZWQoKSB7CiAgICAgICAgICAgICBpZiAoIW1XaWZpTXVsdGljYXN0RW5hYmxlZCkgewogICAgICAgICAgICAgICAgIG1XaWZpTXVsdGljYXN0RW5hYmxlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgaWYgKG1XaWZpTXVsdGljYXN0VGltZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBtV2lmaU11bHRpY2FzdFRpbWVyID0gbmV3IFN0b3B3YXRjaFRpbWVyKFdJRklfTVVMVElDQVNUX0VOQUJMRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwgbVVucGx1Z2dhYmxlcyk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG1XaWZpTXVsdGljYXN0VGltZXIuc3RhcnRSdW5uaW5nTG9ja2VkKEJhdHRlcnlTdGF0c0ltcGwudGhpcyk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE2NTYsMzcgKzE5MzgsOTUgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBub3RlQXVkaW9UdXJuZWRPbkxvY2tlZCgpIHsKKyAgICAgICAgICAgIGlmICghbUF1ZGlvVHVybmVkT24pIHsKKyAgICAgICAgICAgICAgICBtQXVkaW9UdXJuZWRPbiA9IHRydWU7CisgICAgICAgICAgICAgICAgaWYgKG1BdWRpb1R1cm5lZE9uVGltZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBtQXVkaW9UdXJuZWRPblRpbWVyID0gbmV3IFN0b3B3YXRjaFRpbWVyKEFVRElPX1RVUk5FRF9PTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsLCBtVW5wbHVnZ2FibGVzKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbUF1ZGlvVHVybmVkT25UaW1lci5zdGFydFJ1bm5pbmdMb2NrZWQoQmF0dGVyeVN0YXRzSW1wbC50aGlzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBub3RlQXVkaW9UdXJuZWRPZmZMb2NrZWQoKSB7CisgICAgICAgICAgICBpZiAobUF1ZGlvVHVybmVkT24pIHsKKyAgICAgICAgICAgICAgICBtQXVkaW9UdXJuZWRPbiA9IGZhbHNlOworICAgICAgICAgICAgICAgIG1BdWRpb1R1cm5lZE9uVGltZXIuc3RvcFJ1bm5pbmdMb2NrZWQoQmF0dGVyeVN0YXRzSW1wbC50aGlzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBub3RlVmlkZW9UdXJuZWRPbkxvY2tlZCgpIHsKKyAgICAgICAgICAgIGlmICghbVZpZGVvVHVybmVkT24pIHsKKyAgICAgICAgICAgICAgICBtVmlkZW9UdXJuZWRPbiA9IHRydWU7CisgICAgICAgICAgICAgICAgaWYgKG1WaWRlb1R1cm5lZE9uVGltZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBtVmlkZW9UdXJuZWRPblRpbWVyID0gbmV3IFN0b3B3YXRjaFRpbWVyKFZJREVPX1RVUk5FRF9PTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsLCBtVW5wbHVnZ2FibGVzKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbVZpZGVvVHVybmVkT25UaW1lci5zdGFydFJ1bm5pbmdMb2NrZWQoQmF0dGVyeVN0YXRzSW1wbC50aGlzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBub3RlVmlkZW9UdXJuZWRPZmZMb2NrZWQoKSB7CisgICAgICAgICAgICBpZiAobVZpZGVvVHVybmVkT24pIHsKKyAgICAgICAgICAgICAgICBtVmlkZW9UdXJuZWRPbiA9IGZhbHNlOworICAgICAgICAgICAgICAgIG1WaWRlb1R1cm5lZE9uVGltZXIuc3RvcFJ1bm5pbmdMb2NrZWQoQmF0dGVyeVN0YXRzSW1wbC50aGlzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCiAgICAgICAgIEBPdmVycmlkZSAKICAgICAgICAgcHVibGljIGxvbmcgZ2V0V2lmaVR1cm5lZE9uVGltZShsb25nIGJhdHRlcnlSZWFsdGltZSwgaW50IHdoaWNoKSB7CisgICAgICAgICAgICBpZiAobVdpZmlUdXJuZWRPblRpbWVyID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBtV2lmaVR1cm5lZE9uVGltZXIuZ2V0VG90YWxUaW1lTG9ja2VkKGJhdHRlcnlSZWFsdGltZSwgd2hpY2gpOwogICAgICAgICB9CiAKICAgICAgICAgQE92ZXJyaWRlIAotICAgICAgICBwdWJsaWMgbG9uZyBnZXRBdWRpb1R1cm5lZE9uVGltZShsb25nIGJhdHRlcnlSZWFsdGltZSwgaW50IHdoaWNoKSB7Ci0gICAgICAgICAgICByZXR1cm4gbUF1ZGlvVHVybmVkT25UaW1lci5nZXRUb3RhbFRpbWVMb2NrZWQoYmF0dGVyeVJlYWx0aW1lLCB3aGljaCk7Ci0gICAgICAgIH0KLQotICAgICAgICBAT3ZlcnJpZGUgCi0gICAgICAgIHB1YmxpYyBsb25nIGdldFZpZGVvVHVybmVkT25UaW1lKGxvbmcgYmF0dGVyeVJlYWx0aW1lLCBpbnQgd2hpY2gpIHsKLSAgICAgICAgICAgIHJldHVybiBtVmlkZW9UdXJuZWRPblRpbWVyLmdldFRvdGFsVGltZUxvY2tlZChiYXR0ZXJ5UmVhbHRpbWUsIHdoaWNoKTsKLSAgICAgICAgfQotCi0gICAgICAgIEBPdmVycmlkZSAKICAgICAgICAgcHVibGljIGxvbmcgZ2V0RnVsbFdpZmlMb2NrVGltZShsb25nIGJhdHRlcnlSZWFsdGltZSwgaW50IHdoaWNoKSB7CisgICAgICAgICAgICBpZiAobUZ1bGxXaWZpTG9ja1RpbWVyID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBtRnVsbFdpZmlMb2NrVGltZXIuZ2V0VG90YWxUaW1lTG9ja2VkKGJhdHRlcnlSZWFsdGltZSwgd2hpY2gpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICBAT3ZlcnJpZGUgCiAgICAgICAgIHB1YmxpYyBsb25nIGdldFNjYW5XaWZpTG9ja1RpbWUobG9uZyBiYXR0ZXJ5UmVhbHRpbWUsIGludCB3aGljaCkgeworICAgICAgICAgICAgaWYgKG1TY2FuV2lmaUxvY2tUaW1lciA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gbVNjYW5XaWZpTG9ja1RpbWVyLmdldFRvdGFsVGltZUxvY2tlZChiYXR0ZXJ5UmVhbHRpbWUsIHdoaWNoKTsKICAgICAgICAgfQogCiAgICAgICAgIEBPdmVycmlkZQogICAgICAgICBwdWJsaWMgbG9uZyBnZXRXaWZpTXVsdGljYXN0VGltZShsb25nIGJhdHRlcnlSZWFsdGltZSwgaW50IHdoaWNoKSB7CisgICAgICAgICAgICBpZiAobVdpZmlNdWx0aWNhc3RUaW1lciA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gbVdpZmlNdWx0aWNhc3RUaW1lci5nZXRUb3RhbFRpbWVMb2NrZWQoYmF0dGVyeVJlYWx0aW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoKTsKICAgICAgICAgfQogCisgICAgICAgIEBPdmVycmlkZSAKKyAgICAgICAgcHVibGljIGxvbmcgZ2V0QXVkaW9UdXJuZWRPblRpbWUobG9uZyBiYXR0ZXJ5UmVhbHRpbWUsIGludCB3aGljaCkgeworICAgICAgICAgICAgaWYgKG1BdWRpb1R1cm5lZE9uVGltZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG1BdWRpb1R1cm5lZE9uVGltZXIuZ2V0VG90YWxUaW1lTG9ja2VkKGJhdHRlcnlSZWFsdGltZSwgd2hpY2gpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlIAorICAgICAgICBwdWJsaWMgbG9uZyBnZXRWaWRlb1R1cm5lZE9uVGltZShsb25nIGJhdHRlcnlSZWFsdGltZSwgaW50IHdoaWNoKSB7CisgICAgICAgICAgICBpZiAobVZpZGVvVHVybmVkT25UaW1lciA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gbVZpZGVvVHVybmVkT25UaW1lci5nZXRUb3RhbFRpbWVMb2NrZWQoYmF0dGVyeVJlYWx0aW1lLCB3aGljaCk7CisgICAgICAgIH0KKwogICAgICAgICBAT3ZlcnJpZGUKICAgICAgICAgcHVibGljIHZvaWQgbm90ZVVzZXJBY3Rpdml0eUxvY2tlZChpbnQgdHlwZSkgewogICAgICAgICAgICAgaWYgKG1Vc2VyQWN0aXZpdHlDb3VudGVycyA9PSBudWxsKSB7CkBAIC0xNzIyLDYgKzIwNjIsMTI2IEBACiAgICAgICAgICAgICAgICAgICAgID8gKFRyYWZmaWNTdGF0cy5nZXRVaWRUeEJ5dGVzKG1VaWQpIC0gbVN0YXJ0ZWRUY3BCeXRlc1NlbnQpIDogMCk7CiAgICAgICAgIH0KIAorICAgICAgICAvKioKKyAgICAgICAgICogQ2xlYXIgYWxsIHN0YXRzIGZvciB0aGlzIHVpZC4gIFJldHVybnMgdHJ1ZSBpZiB0aGUgdWlkIGlzIGNvbXBsZXRlbHkKKyAgICAgICAgICogaW5hY3RpdmUgc28gY2FuIGJlIGRyb3BwZWQuCisgICAgICAgICAqLworICAgICAgICBib29sZWFuIHJlc2V0KCkgeworICAgICAgICAgICAgYm9vbGVhbiBhY3RpdmUgPSBmYWxzZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKG1XaWZpVHVybmVkT25UaW1lciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgYWN0aXZlIHw9ICFtV2lmaVR1cm5lZE9uVGltZXIucmVzZXQoZmFsc2UpOworICAgICAgICAgICAgICAgIGFjdGl2ZSB8PSBtV2lmaVR1cm5lZE9uOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1GdWxsV2lmaUxvY2tUaW1lciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgYWN0aXZlIHw9ICFtRnVsbFdpZmlMb2NrVGltZXIucmVzZXQoZmFsc2UpOworICAgICAgICAgICAgICAgIGFjdGl2ZSB8PSBtRnVsbFdpZmlMb2NrT3V0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1TY2FuV2lmaUxvY2tUaW1lciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgYWN0aXZlIHw9ICFtU2NhbldpZmlMb2NrVGltZXIucmVzZXQoZmFsc2UpOworICAgICAgICAgICAgICAgIGFjdGl2ZSB8PSBtU2NhbldpZmlMb2NrT3V0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1XaWZpTXVsdGljYXN0VGltZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGFjdGl2ZSB8PSAhbVdpZmlNdWx0aWNhc3RUaW1lci5yZXNldChmYWxzZSk7CisgICAgICAgICAgICAgICAgYWN0aXZlIHw9IG1XaWZpTXVsdGljYXN0RW5hYmxlZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtQXVkaW9UdXJuZWRPblRpbWVyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBhY3RpdmUgfD0gIW1BdWRpb1R1cm5lZE9uVGltZXIucmVzZXQoZmFsc2UpOworICAgICAgICAgICAgICAgIGFjdGl2ZSB8PSBtQXVkaW9UdXJuZWRPbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtVmlkZW9UdXJuZWRPblRpbWVyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBhY3RpdmUgfD0gIW1WaWRlb1R1cm5lZE9uVGltZXIucmVzZXQoZmFsc2UpOworICAgICAgICAgICAgICAgIGFjdGl2ZSB8PSBtVmlkZW9UdXJuZWRPbjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgbUxvYWRlZFRjcEJ5dGVzUmVjZWl2ZWQgPSBtTG9hZGVkVGNwQnl0ZXNTZW50ID0gMDsKKyAgICAgICAgICAgIG1DdXJyZW50VGNwQnl0ZXNSZWNlaXZlZCA9IG1DdXJyZW50VGNwQnl0ZXNTZW50ID0gMDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKG1Vc2VyQWN0aXZpdHlDb3VudGVycyAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPE5VTV9VU0VSX0FDVElWSVRZX1RZUEVTOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgbVVzZXJBY3Rpdml0eUNvdW50ZXJzW2ldLnJlc2V0KGZhbHNlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChtV2FrZWxvY2tTdGF0cy5zaXplKCkgPiAwKSB7CisgICAgICAgICAgICAgICAgSXRlcmF0b3I8TWFwLkVudHJ5PFN0cmluZywgV2FrZWxvY2s+PiBpdCA9IG1XYWtlbG9ja1N0YXRzLmVudHJ5U2V0KCkuaXRlcmF0b3IoKTsKKyAgICAgICAgICAgICAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICAgICAgICAgIE1hcC5FbnRyeTxTdHJpbmcsIFdha2Vsb2NrPiB3YWtlbG9ja0VudHJ5ID0gaXQubmV4dCgpOworICAgICAgICAgICAgICAgICAgICBXYWtlbG9jayB3bCA9IHdha2Vsb2NrRW50cnkuZ2V0VmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdsLnJlc2V0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGl0LnJlbW92ZSgpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgYWN0aXZlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtU2Vuc29yU3RhdHMuc2l6ZSgpID4gMCkgeworICAgICAgICAgICAgICAgIEl0ZXJhdG9yPE1hcC5FbnRyeTxJbnRlZ2VyLCBTZW5zb3I+PiBpdCA9IG1TZW5zb3JTdGF0cy5lbnRyeVNldCgpLml0ZXJhdG9yKCk7CisgICAgICAgICAgICAgICAgd2hpbGUgKGl0Lmhhc05leHQoKSkgeworICAgICAgICAgICAgICAgICAgICBNYXAuRW50cnk8SW50ZWdlciwgU2Vuc29yPiBzZW5zb3JFbnRyeSA9IGl0Lm5leHQoKTsKKyAgICAgICAgICAgICAgICAgICAgU2Vuc29yIHMgPSBzZW5zb3JFbnRyeS5nZXRWYWx1ZSgpOworICAgICAgICAgICAgICAgICAgICBpZiAocy5yZXNldCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpdC5yZW1vdmUoKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjdGl2ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobVByb2Nlc3NTdGF0cy5zaXplKCkgPiAwKSB7CisgICAgICAgICAgICAgICAgSXRlcmF0b3I8TWFwLkVudHJ5PFN0cmluZywgUHJvYz4+IGl0ID0gbVByb2Nlc3NTdGF0cy5lbnRyeVNldCgpLml0ZXJhdG9yKCk7CisgICAgICAgICAgICAgICAgd2hpbGUgKGl0Lmhhc05leHQoKSkgeworICAgICAgICAgICAgICAgICAgICBNYXAuRW50cnk8U3RyaW5nLCBQcm9jPiBwcm9jRW50cnkgPSBpdC5uZXh0KCk7CisgICAgICAgICAgICAgICAgICAgIHByb2NFbnRyeS5nZXRWYWx1ZSgpLmRldGFjaCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtUHJvY2Vzc1N0YXRzLmNsZWFyKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobVBhY2thZ2VTdGF0cy5zaXplKCkgPiAwKSB7CisgICAgICAgICAgICAgICAgSXRlcmF0b3I8TWFwLkVudHJ5PFN0cmluZywgUGtnPj4gaXQgPSBtUGFja2FnZVN0YXRzLmVudHJ5U2V0KCkuaXRlcmF0b3IoKTsKKyAgICAgICAgICAgICAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICAgICAgICAgIE1hcC5FbnRyeTxTdHJpbmcsIFBrZz4gcGtnRW50cnkgPSBpdC5uZXh0KCk7CisgICAgICAgICAgICAgICAgICAgIFBrZyBwID0gcGtnRW50cnkuZ2V0VmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgcC5kZXRhY2goKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHAubVNlcnZpY2VTdGF0cy5zaXplKCkgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBJdGVyYXRvcjxNYXAuRW50cnk8U3RyaW5nLCBQa2cuU2Vydj4+IGl0MgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IHAubVNlcnZpY2VTdGF0cy5lbnRyeVNldCgpLml0ZXJhdG9yKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoaXQyLmhhc05leHQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hcC5FbnRyeTxTdHJpbmcsIFBrZy5TZXJ2PiBzZXJ2RW50cnkgPSBpdDIubmV4dCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZFbnRyeS5nZXRWYWx1ZSgpLmRldGFjaCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1QYWNrYWdlU3RhdHMuY2xlYXIoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCFhY3RpdmUpIHsKKyAgICAgICAgICAgICAgICBpZiAobVdpZmlUdXJuZWRPblRpbWVyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgbVdpZmlUdXJuZWRPblRpbWVyLmRldGFjaCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobUZ1bGxXaWZpTG9ja1RpbWVyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgbUZ1bGxXaWZpTG9ja1RpbWVyLmRldGFjaCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobVNjYW5XaWZpTG9ja1RpbWVyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgbVNjYW5XaWZpTG9ja1RpbWVyLmRldGFjaCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobVdpZmlNdWx0aWNhc3RUaW1lciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIG1XaWZpTXVsdGljYXN0VGltZXIuZGV0YWNoKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChtQXVkaW9UdXJuZWRPblRpbWVyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgbUF1ZGlvVHVybmVkT25UaW1lci5kZXRhY2goKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG1WaWRlb1R1cm5lZE9uVGltZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBtVmlkZW9UdXJuZWRPblRpbWVyLmRldGFjaCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobVVzZXJBY3Rpdml0eUNvdW50ZXJzICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPE5VTV9VU0VSX0FDVElWSVRZX1RZUEVTOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1Vc2VyQWN0aXZpdHlDb3VudGVyc1tpXS5kZXRhY2goKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgcmV0dXJuICFhY3RpdmU7CisgICAgICAgIH0KKyAgICAgICAgCiAgICAgICAgIHZvaWQgd3JpdGVUb1BhcmNlbExvY2tlZChQYXJjZWwgb3V0LCBsb25nIGJhdHRlcnlSZWFsdGltZSkgewogICAgICAgICAgICAgb3V0LndyaXRlSW50KG1XYWtlbG9ja1N0YXRzLnNpemUoKSk7CiAgICAgICAgICAgICBmb3IgKE1hcC5FbnRyeTxTdHJpbmcsIFVpZC5XYWtlbG9jaz4gd2FrZWxvY2tFbnRyeSA6IG1XYWtlbG9ja1N0YXRzLmVudHJ5U2V0KCkpIHsKQEAgLTE3NTcsMTkgKzIyMTcsNDkgQEAKICAgICAgICAgICAgIG91dC53cml0ZUxvbmcoY29tcHV0ZUN1cnJlbnRUY3BCeXRlc1NlbnQoKSk7CiAgICAgICAgICAgICBvdXQud3JpdGVMb25nKG1UY3BCeXRlc1JlY2VpdmVkQXRMYXN0VW5wbHVnKTsKICAgICAgICAgICAgIG91dC53cml0ZUxvbmcobVRjcEJ5dGVzU2VudEF0TGFzdFVucGx1Zyk7Ci0gICAgICAgICAgICBtV2lmaVR1cm5lZE9uVGltZXIud3JpdGVUb1BhcmNlbChvdXQsIGJhdHRlcnlSZWFsdGltZSk7Ci0gICAgICAgICAgICBtRnVsbFdpZmlMb2NrVGltZXIud3JpdGVUb1BhcmNlbChvdXQsIGJhdHRlcnlSZWFsdGltZSk7Ci0gICAgICAgICAgICBtQXVkaW9UdXJuZWRPblRpbWVyLndyaXRlVG9QYXJjZWwob3V0LCBiYXR0ZXJ5UmVhbHRpbWUpOwotICAgICAgICAgICAgbVZpZGVvVHVybmVkT25UaW1lci53cml0ZVRvUGFyY2VsKG91dCwgYmF0dGVyeVJlYWx0aW1lKTsKLSAgICAgICAgICAgIG1TY2FuV2lmaUxvY2tUaW1lci53cml0ZVRvUGFyY2VsKG91dCwgYmF0dGVyeVJlYWx0aW1lKTsKLSAgICAgICAgICAgIG1XaWZpTXVsdGljYXN0VGltZXIud3JpdGVUb1BhcmNlbChvdXQsIGJhdHRlcnlSZWFsdGltZSk7Ci0gICAgICAgICAgICBpZiAobVVzZXJBY3Rpdml0eUNvdW50ZXJzID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICBvdXQud3JpdGVJbnQoMCk7CisgICAgICAgICAgICBpZiAobVdpZmlUdXJuZWRPblRpbWVyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBvdXQud3JpdGVJbnQoMSk7CisgICAgICAgICAgICAgICAgbVdpZmlUdXJuZWRPblRpbWVyLndyaXRlVG9QYXJjZWwob3V0LCBiYXR0ZXJ5UmVhbHRpbWUpOwogICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBvdXQud3JpdGVJbnQoMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobUZ1bGxXaWZpTG9ja1RpbWVyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBvdXQud3JpdGVJbnQoMSk7CisgICAgICAgICAgICAgICAgbUZ1bGxXaWZpTG9ja1RpbWVyLndyaXRlVG9QYXJjZWwob3V0LCBiYXR0ZXJ5UmVhbHRpbWUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBvdXQud3JpdGVJbnQoMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobVNjYW5XaWZpTG9ja1RpbWVyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBvdXQud3JpdGVJbnQoMSk7CisgICAgICAgICAgICAgICAgbVNjYW5XaWZpTG9ja1RpbWVyLndyaXRlVG9QYXJjZWwob3V0LCBiYXR0ZXJ5UmVhbHRpbWUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBvdXQud3JpdGVJbnQoMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobVdpZmlNdWx0aWNhc3RUaW1lciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgb3V0LndyaXRlSW50KDEpOworICAgICAgICAgICAgICAgIG1XaWZpTXVsdGljYXN0VGltZXIud3JpdGVUb1BhcmNlbChvdXQsIGJhdHRlcnlSZWFsdGltZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG91dC53cml0ZUludCgwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtQXVkaW9UdXJuZWRPblRpbWVyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBvdXQud3JpdGVJbnQoMSk7CisgICAgICAgICAgICAgICAgbUF1ZGlvVHVybmVkT25UaW1lci53cml0ZVRvUGFyY2VsKG91dCwgYmF0dGVyeVJlYWx0aW1lKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgb3V0LndyaXRlSW50KDApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1WaWRlb1R1cm5lZE9uVGltZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIG91dC53cml0ZUludCgxKTsKKyAgICAgICAgICAgICAgICBtVmlkZW9UdXJuZWRPblRpbWVyLndyaXRlVG9QYXJjZWwob3V0LCBiYXR0ZXJ5UmVhbHRpbWUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBvdXQud3JpdGVJbnQoMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobVVzZXJBY3Rpdml0eUNvdW50ZXJzICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICBvdXQud3JpdGVJbnQoMSk7CiAgICAgICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPE5VTV9VU0VSX0FDVElWSVRZX1RZUEVTOyBpKyspIHsKICAgICAgICAgICAgICAgICAgICAgbVVzZXJBY3Rpdml0eUNvdW50ZXJzW2ldLndyaXRlVG9QYXJjZWwob3V0KTsKICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG91dC53cml0ZUludCgwKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC0xODIyLDI1ICsyMzEyLDU0IEBACiAgICAgICAgICAgICBtVGNwQnl0ZXNSZWNlaXZlZEF0TGFzdFVucGx1ZyA9IGluLnJlYWRMb25nKCk7CiAgICAgICAgICAgICBtVGNwQnl0ZXNTZW50QXRMYXN0VW5wbHVnID0gaW4ucmVhZExvbmcoKTsKICAgICAgICAgICAgIG1XaWZpVHVybmVkT24gPSBmYWxzZTsKLSAgICAgICAgICAgIG1XaWZpVHVybmVkT25UaW1lciA9IG5ldyBTdG9wd2F0Y2hUaW1lcihXSUZJX1RVUk5FRF9PTiwgbnVsbCwgbVVucGx1Z2dhYmxlcywgaW4pOwotICAgICAgICAgICAgbUZ1bGxXaWZpTG9ja091dCA9IGZhbHNlOwotICAgICAgICAgICAgbUZ1bGxXaWZpTG9ja1RpbWVyID0gbmV3IFN0b3B3YXRjaFRpbWVyKEZVTExfV0lGSV9MT0NLLCBudWxsLCBtVW5wbHVnZ2FibGVzLCBpbik7Ci0gICAgICAgICAgICBtQXVkaW9UdXJuZWRPbiA9IGZhbHNlOwotICAgICAgICAgICAgbUF1ZGlvVHVybmVkT25UaW1lciA9IG5ldyBTdG9wd2F0Y2hUaW1lcihBVURJT19UVVJORURfT04sIG51bGwsIG1VbnBsdWdnYWJsZXMsIGluKTsKLSAgICAgICAgICAgIG1WaWRlb1R1cm5lZE9uID0gZmFsc2U7Ci0gICAgICAgICAgICBtVmlkZW9UdXJuZWRPblRpbWVyID0gbmV3IFN0b3B3YXRjaFRpbWVyKFZJREVPX1RVUk5FRF9PTiwgbnVsbCwgbVVucGx1Z2dhYmxlcywgaW4pOwotICAgICAgICAgICAgbVNjYW5XaWZpTG9ja091dCA9IGZhbHNlOwotICAgICAgICAgICAgbVNjYW5XaWZpTG9ja1RpbWVyID0gbmV3IFN0b3B3YXRjaFRpbWVyKFNDQU5fV0lGSV9MT0NLLCBudWxsLCBtVW5wbHVnZ2FibGVzLCBpbik7Ci0gICAgICAgICAgICBtV2lmaU11bHRpY2FzdEVuYWJsZWQgPSBmYWxzZTsKLSAgICAgICAgICAgIG1XaWZpTXVsdGljYXN0VGltZXIgPSBuZXcgU3RvcHdhdGNoVGltZXIoV0lGSV9NVUxUSUNBU1RfRU5BQkxFRCwKLSAgICAgICAgICAgICAgICAgICAgbnVsbCwgbVVucGx1Z2dhYmxlcywgaW4pOwotICAgICAgICAgICAgaWYgKGluLnJlYWRJbnQoKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgbVVzZXJBY3Rpdml0eUNvdW50ZXJzID0gbnVsbDsKKyAgICAgICAgICAgIGlmIChpbi5yZWFkSW50KCkgIT0gMCkgeworICAgICAgICAgICAgICAgIG1XaWZpVHVybmVkT25UaW1lciA9IG5ldyBTdG9wd2F0Y2hUaW1lcihXSUZJX1RVUk5FRF9PTiwKKyAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsIG1VbnBsdWdnYWJsZXMsIGluKTsKICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbVdpZmlUdXJuZWRPblRpbWVyID0gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1GdWxsV2lmaUxvY2tPdXQgPSBmYWxzZTsKKyAgICAgICAgICAgIGlmIChpbi5yZWFkSW50KCkgIT0gMCkgeworICAgICAgICAgICAgICAgIG1GdWxsV2lmaUxvY2tUaW1lciA9IG5ldyBTdG9wd2F0Y2hUaW1lcihGVUxMX1dJRklfTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsIG1VbnBsdWdnYWJsZXMsIGluKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbUZ1bGxXaWZpTG9ja1RpbWVyID0gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1TY2FuV2lmaUxvY2tPdXQgPSBmYWxzZTsKKyAgICAgICAgICAgIGlmIChpbi5yZWFkSW50KCkgIT0gMCkgeworICAgICAgICAgICAgICAgIG1TY2FuV2lmaUxvY2tUaW1lciA9IG5ldyBTdG9wd2F0Y2hUaW1lcihTQ0FOX1dJRklfTE9DSywKKyAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsIG1VbnBsdWdnYWJsZXMsIGluKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbVNjYW5XaWZpTG9ja1RpbWVyID0gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1XaWZpTXVsdGljYXN0RW5hYmxlZCA9IGZhbHNlOworICAgICAgICAgICAgaWYgKGluLnJlYWRJbnQoKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgbVdpZmlNdWx0aWNhc3RUaW1lciA9IG5ldyBTdG9wd2F0Y2hUaW1lcihXSUZJX01VTFRJQ0FTVF9FTkFCTEVELAorICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwgbVVucGx1Z2dhYmxlcywgaW4pOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtV2lmaU11bHRpY2FzdFRpbWVyID0gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1BdWRpb1R1cm5lZE9uID0gZmFsc2U7CisgICAgICAgICAgICBpZiAoaW4ucmVhZEludCgpICE9IDApIHsKKyAgICAgICAgICAgICAgICBtQXVkaW9UdXJuZWRPblRpbWVyID0gbmV3IFN0b3B3YXRjaFRpbWVyKEFVRElPX1RVUk5FRF9PTiwKKyAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsIG1VbnBsdWdnYWJsZXMsIGluKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbUF1ZGlvVHVybmVkT25UaW1lciA9IG51bGw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtVmlkZW9UdXJuZWRPbiA9IGZhbHNlOworICAgICAgICAgICAgaWYgKGluLnJlYWRJbnQoKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgbVZpZGVvVHVybmVkT25UaW1lciA9IG5ldyBTdG9wd2F0Y2hUaW1lcihWSURFT19UVVJORURfT04sCisgICAgICAgICAgICAgICAgICAgICAgICBudWxsLCBtVW5wbHVnZ2FibGVzLCBpbik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1WaWRlb1R1cm5lZE9uVGltZXIgPSBudWxsOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGluLnJlYWRJbnQoKSAhPSAwKSB7CiAgICAgICAgICAgICAgICAgbVVzZXJBY3Rpdml0eUNvdW50ZXJzID0gbmV3IENvdW50ZXJbTlVNX1VTRVJfQUNUSVZJVFlfVFlQRVNdOwogICAgICAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxOVU1fVVNFUl9BQ1RJVklUWV9UWVBFUzsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgIG1Vc2VyQWN0aXZpdHlDb3VudGVyc1tpXSA9IG5ldyBDb3VudGVyKG1VbnBsdWdnYWJsZXMsIGluKTsKICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1Vc2VyQWN0aXZpdHlDb3VudGVycyA9IG51bGw7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtMTg3OSw2ICsyMzk4LDM0IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBTdG9wd2F0Y2hUaW1lcih0eXBlLCBwb29sLCB1bnBsdWdnYWJsZXMsIGluKTsKICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgYm9vbGVhbiByZXNldCgpIHsKKyAgICAgICAgICAgICAgICBib29sZWFuIHdsYWN0aXZlID0gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKG1UaW1lckZ1bGwgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICB3bGFjdGl2ZSB8PSAhbVRpbWVyRnVsbC5yZXNldChmYWxzZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChtVGltZXJQYXJ0aWFsICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgd2xhY3RpdmUgfD0gIW1UaW1lclBhcnRpYWwucmVzZXQoZmFsc2UpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobVRpbWVyV2luZG93ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgd2xhY3RpdmUgfD0gIW1UaW1lcldpbmRvdy5yZXNldChmYWxzZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICghd2xhY3RpdmUpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1UaW1lckZ1bGwgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbVRpbWVyRnVsbC5kZXRhY2goKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1UaW1lckZ1bGwgPSBudWxsOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChtVGltZXJQYXJ0aWFsICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1UaW1lclBhcnRpYWwuZGV0YWNoKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBtVGltZXJQYXJ0aWFsID0gbnVsbDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAobVRpbWVyV2luZG93ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1UaW1lcldpbmRvdy5kZXRhY2goKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1UaW1lcldpbmRvdyA9IG51bGw7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuICF3bGFjdGl2ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgdm9pZCByZWFkRnJvbVBhcmNlbExvY2tlZChBcnJheUxpc3Q8VW5wbHVnZ2FibGU+IHVucGx1Z2dhYmxlcywgUGFyY2VsIGluKSB7CiAgICAgICAgICAgICAgICAgbVRpbWVyUGFydGlhbCA9IHJlYWRUaW1lckZyb21QYXJjZWwoV0FLRV9UWVBFX1BBUlRJQUwsCiAgICAgICAgICAgICAgICAgICAgICAgICBtUGFydGlhbFRpbWVycywgdW5wbHVnZ2FibGVzLCBpbik7CkBAIC0xOTI3LDYgKzI0NzQsMTQgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFN0b3B3YXRjaFRpbWVyKDAsIHBvb2wsIHVucGx1Z2dhYmxlcywgaW4pOwogICAgICAgICAgICAgfQogCisgICAgICAgICAgICBib29sZWFuIHJlc2V0KCkgeworICAgICAgICAgICAgICAgIGlmIChtVGltZXIucmVzZXQodHJ1ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgbVRpbWVyID0gbnVsbDsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAogICAgICAgICAgICAgdm9pZCByZWFkRnJvbVBhcmNlbExvY2tlZChBcnJheUxpc3Q8VW5wbHVnZ2FibGU+IHVucGx1Z2dhYmxlcywgUGFyY2VsIGluKSB7CiAgICAgICAgICAgICAgICAgbVRpbWVyID0gcmVhZFRpbWVyRnJvbVBhcmNlbCh1bnBsdWdnYWJsZXMsIGluKTsKICAgICAgICAgICAgIH0KQEAgLTIwMzUsOSArMjU5MCw2IEBACiAgICAgICAgICAgICBQcm9jKCkgewogICAgICAgICAgICAgICAgIG1VbnBsdWdnYWJsZXMuYWRkKHRoaXMpOwogICAgICAgICAgICAgICAgIG1TcGVlZEJpbnMgPSBuZXcgU2FtcGxpbmdDb3VudGVyW2dldENwdVNwZWVkU3RlcHMoKV07Ci0gICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtU3BlZWRCaW5zLmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1TcGVlZEJpbnNbaV0gPSBuZXcgU2FtcGxpbmdDb3VudGVyKG1VbnBsdWdnYWJsZXMpOwotICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgcHVibGljIHZvaWQgdW5wbHVnKGxvbmcgYmF0dGVyeVVwdGltZSwgbG9uZyBiYXR0ZXJ5UmVhbHRpbWUpIHsKQEAgLTIwNTAsMTAgKzI2MDIsMTggQEAKICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHBsdWcobG9uZyBiYXR0ZXJ5VXB0aW1lLCBsb25nIGJhdHRlcnlSZWFsdGltZSkgewogICAgICAgICAgICAgfQogICAgICAgICAgICAgCisgICAgICAgICAgICB2b2lkIGRldGFjaCgpIHsKKyAgICAgICAgICAgICAgICBtVW5wbHVnZ2FibGVzLnJlbW92ZSh0aGlzKTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1TcGVlZEJpbnMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgU2FtcGxpbmdDb3VudGVyIGMgPSBtU3BlZWRCaW5zW2ldOworICAgICAgICAgICAgICAgICAgICBpZiAoYyAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtVW5wbHVnZ2FibGVzLnJlbW92ZShjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1TcGVlZEJpbnNbaV0gPSBudWxsOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgICAgICB2b2lkIHdyaXRlVG9QYXJjZWxMb2NrZWQoUGFyY2VsIG91dCkgewotICAgICAgICAgICAgICAgIGZpbmFsIGxvbmcgdVNlY1JlYWx0aW1lID0gU3lzdGVtQ2xvY2suZWxhcHNlZFJlYWx0aW1lKCkgKiAxMDAwOwotICAgICAgICAgICAgICAgIGZpbmFsIGxvbmcgYmF0dGVyeVJlYWx0aW1lID0gZ2V0QmF0dGVyeVJlYWx0aW1lTG9ja2VkKHVTZWNSZWFsdGltZSk7Ci0gICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgb3V0LndyaXRlTG9uZyhtVXNlclRpbWUpOwogICAgICAgICAgICAgICAgIG91dC53cml0ZUxvbmcobVN5c3RlbVRpbWUpOwogICAgICAgICAgICAgICAgIG91dC53cml0ZUxvbmcobUZvcmVncm91bmRUaW1lKTsKQEAgLTIwNzMsNyArMjYzMywxMyBAQAogCiAgICAgICAgICAgICAgICAgb3V0LndyaXRlSW50KG1TcGVlZEJpbnMubGVuZ3RoKTsKICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1TcGVlZEJpbnMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgbVNwZWVkQmluc1tpXS53cml0ZVRvUGFyY2VsKG91dCk7CisgICAgICAgICAgICAgICAgICAgIFNhbXBsaW5nQ291bnRlciBjID0gbVNwZWVkQmluc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGMgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3V0LndyaXRlSW50KDEpOworICAgICAgICAgICAgICAgICAgICAgICAgYy53cml0ZVRvUGFyY2VsKG91dCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvdXQud3JpdGVJbnQoMCk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKQEAgLTIwOTYsOSArMjY2MiwxMiBAQAogICAgICAgICAgICAgICAgIG1VbnBsdWdnZWRTdGFydHMgPSBpbi5yZWFkSW50KCk7CiAKICAgICAgICAgICAgICAgICBpbnQgYmlucyA9IGluLnJlYWRJbnQoKTsKLSAgICAgICAgICAgICAgICBtU3BlZWRCaW5zID0gbmV3IFNhbXBsaW5nQ291bnRlcltiaW5zXTsKKyAgICAgICAgICAgICAgICBpbnQgc3RlcHMgPSBnZXRDcHVTcGVlZFN0ZXBzKCk7CisgICAgICAgICAgICAgICAgbVNwZWVkQmlucyA9IG5ldyBTYW1wbGluZ0NvdW50ZXJbYmlucyA+PSBzdGVwcyA/IGJpbnMgOiBzdGVwc107CiAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBiaW5zOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgbVNwZWVkQmluc1tpXSA9IG5ldyBTYW1wbGluZ0NvdW50ZXIobVVucGx1Z2dhYmxlcywgaW4pOworICAgICAgICAgICAgICAgICAgICBpZiAoaW4ucmVhZEludCgpICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1TcGVlZEJpbnNbaV0gPSBuZXcgU2FtcGxpbmdDb3VudGVyKG1VbnBsdWdnYWJsZXMsIGluKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIApAQCAtMjEyOCw3ICsyNjk3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgdmFsID0gbVVzZXJUaW1lOwogICAgICAgICAgICAgICAgICAgICBpZiAod2hpY2ggPT0gU1RBVFNfQ1VSUkVOVCkgewogICAgICAgICAgICAgICAgICAgICAgICAgdmFsIC09IG1Mb2FkZWRVc2VyVGltZTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh3aGljaCA9PSBTVEFUU19VTlBMVUdHRUQpIHsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh3aGljaCA9PSBTVEFUU19TSU5DRV9VTlBMVUdHRUQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCAtPSBtVW5wbHVnZ2VkVXNlclRpbWU7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC0yMTQ0LDcgKzI3MTMsNyBAQAogICAgICAgICAgICAgICAgICAgICB2YWwgPSBtU3lzdGVtVGltZTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHdoaWNoID09IFNUQVRTX0NVUlJFTlQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCAtPSBtTG9hZGVkU3lzdGVtVGltZTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh3aGljaCA9PSBTVEFUU19VTlBMVUdHRUQpIHsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh3aGljaCA9PSBTVEFUU19TSU5DRV9VTlBMVUdHRUQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCAtPSBtVW5wbHVnZ2VkU3lzdGVtVGltZTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KQEAgLTIxNjAsNyArMjcyOSw3IEBACiAgICAgICAgICAgICAgICAgICAgIHZhbCA9IG1Gb3JlZ3JvdW5kVGltZTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHdoaWNoID09IFNUQVRTX0NVUlJFTlQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCAtPSBtTG9hZGVkRm9yZWdyb3VuZFRpbWU7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod2hpY2ggPT0gU1RBVFNfVU5QTFVHR0VEKSB7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod2hpY2ggPT0gU1RBVFNfU0lOQ0VfVU5QTFVHR0VEKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgLT0gbVVucGx1Z2dlZEZvcmVncm91bmRUaW1lOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQpAQCAtMjE3Niw3ICsyNzQ1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgdmFsID0gbVN0YXJ0czsKICAgICAgICAgICAgICAgICAgICAgaWYgKHdoaWNoID09IFNUQVRTX0NVUlJFTlQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCAtPSBtTG9hZGVkU3RhcnRzOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHdoaWNoID09IFNUQVRTX1VOUExVR0dFRCkgeworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHdoaWNoID09IFNUQVRTX1NJTkNFX1VOUExVR0dFRCkgewogICAgICAgICAgICAgICAgICAgICAgICAgdmFsIC09IG1VbnBsdWdnZWRTdGFydHM7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC0yMTg2LDE0ICsyNzU1LDIyIEBACiAgICAgICAgICAgICAvKiBDYWxsZWQgYnkgQWN0aXZpdHlNYW5hZ2VyU2VydmljZSB3aGVuIENQVSB0aW1lcyBhcmUgdXBkYXRlZC4gKi8KICAgICAgICAgICAgIHB1YmxpYyB2b2lkIGFkZFNwZWVkU3RlcFRpbWVzKGxvbmdbXSB2YWx1ZXMpIHsKICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1TcGVlZEJpbnMubGVuZ3RoICYmIGkgPCB2YWx1ZXMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgbVNwZWVkQmluc1tpXS5hZGRDb3VudEF0b21pYyh2YWx1ZXNbaV0pOworICAgICAgICAgICAgICAgICAgICBsb25nIGFtdCA9IHZhbHVlc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFtdCAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBTYW1wbGluZ0NvdW50ZXIgYyA9IG1TcGVlZEJpbnNbaV07CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVNwZWVkQmluc1tpXSA9IGMgPSBuZXcgU2FtcGxpbmdDb3VudGVyKG1VbnBsdWdnYWJsZXMpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgYy5hZGRDb3VudEF0b21pYyh2YWx1ZXNbaV0pOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBAT3ZlcnJpZGUKICAgICAgICAgICAgIHB1YmxpYyBsb25nIGdldFRpbWVBdENwdVNwZWVkU3RlcChpbnQgc3BlZWRTdGVwLCBpbnQgd2hpY2gpIHsKICAgICAgICAgICAgICAgICBpZiAoc3BlZWRTdGVwIDwgbVNwZWVkQmlucy5sZW5ndGgpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1TcGVlZEJpbnNbc3BlZWRTdGVwXS5nZXRDb3VudExvY2tlZCh3aGljaCk7CisgICAgICAgICAgICAgICAgICAgIFNhbXBsaW5nQ291bnRlciBjID0gbVNwZWVkQmluc1tzcGVlZFN0ZXBdOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gYyAhPSBudWxsID8gYy5nZXRDb3VudExvY2tlZCh3aGljaCkgOiAwOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgICAgIH0KQEAgLTIyNDQsNiArMjgyMSwxMCBAQAogICAgICAgICAgICAgcHVibGljIHZvaWQgcGx1Zyhsb25nIGJhdHRlcnlVcHRpbWUsIGxvbmcgYmF0dGVyeVJlYWx0aW1lKSB7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKKyAgICAgICAgICAgIHZvaWQgZGV0YWNoKCkgeworICAgICAgICAgICAgICAgIG1VbnBsdWdnYWJsZXMucmVtb3ZlKHRoaXMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgICAgICB2b2lkIHJlYWRGcm9tUGFyY2VsTG9ja2VkKFBhcmNlbCBpbikgewogICAgICAgICAgICAgICAgIG1XYWtldXBzID0gaW4ucmVhZEludCgpOwogICAgICAgICAgICAgICAgIG1Mb2FkZWRXYWtldXBzID0gaW4ucmVhZEludCgpOwpAQCAtMjI5MCw3ICsyODcxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgdmFsID0gbVdha2V1cHM7CiAgICAgICAgICAgICAgICAgICAgIGlmICh3aGljaCA9PSBTVEFUU19DVVJSRU5UKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgLT0gbUxvYWRlZFdha2V1cHM7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod2hpY2ggPT0gU1RBVFNfVU5QTFVHR0VEKSB7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod2hpY2ggPT0gU1RBVFNfU0lOQ0VfVU5QTFVHR0VEKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgLT0gbVVucGx1Z2dlZFdha2V1cHM7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CkBAIC0yNDA1LDYgKzI5ODYsMTAgQEAKICAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCBwbHVnKGxvbmcgYmF0dGVyeVVwdGltZSwgbG9uZyBiYXR0ZXJ5UmVhbHRpbWUpIHsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgdm9pZCBkZXRhY2goKSB7CisgICAgICAgICAgICAgICAgICAgIG1VbnBsdWdnYWJsZXMucmVtb3ZlKHRoaXMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICB2b2lkIHJlYWRGcm9tUGFyY2VsTG9ja2VkKFBhcmNlbCBpbikgewogICAgICAgICAgICAgICAgICAgICBtU3RhcnRUaW1lID0gaW4ucmVhZExvbmcoKTsKICAgICAgICAgICAgICAgICAgICAgbVJ1bm5pbmdTaW5jZSA9IGluLnJlYWRMb25nKCk7CkBAIC0yNTA5LDcgKzMwOTQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgdmFsID0gbUxhdW5jaGVzOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdoaWNoID09IFNUQVRTX0NVUlJFTlQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgLT0gbUxvYWRlZExhdW5jaGVzOwotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh3aGljaCA9PSBTVEFUU19VTlBMVUdHRUQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod2hpY2ggPT0gU1RBVFNfU0lOQ0VfVU5QTFVHR0VEKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIC09IG1VbnBsdWdnZWRMYXVuY2hlczsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMjUyNiw3ICszMTExLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IGdldFN0YXJ0VGltZVRvTm93TG9ja2VkKG5vdyk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAod2hpY2ggPT0gU1RBVFNfQ1VSUkVOVCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCAtPSBtTG9hZGVkU3RhcnRUaW1lOwotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh3aGljaCA9PSBTVEFUU19VTlBMVUdHRUQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod2hpY2ggPT0gU1RBVFNfU0lOQ0VfVU5QTFVHR0VEKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsIC09IG1VbnBsdWdnZWRTdGFydFRpbWU7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTI1NDMsNyArMzEyOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgPSBtU3RhcnRzOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdoaWNoID09IFNUQVRTX0NVUlJFTlQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWwgLT0gbUxvYWRlZFN0YXJ0czsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAod2hpY2ggPT0gU1RBVFNfVU5QTFVHR0VEKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHdoaWNoID09IFNUQVRTX1NJTkNFX1VOUExVR0dFRCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbCAtPSBtVW5wbHVnZ2VkU3RhcnRzOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CkBAIC0yNzM5LDcgKzMzMjQsOSBAQAogICAgICAgICBtV2lmaVJ1bm5pbmdUaW1lciA9IG5ldyBTdG9wd2F0Y2hUaW1lcigtNCwgbnVsbCwgbVVucGx1Z2dhYmxlcyk7CiAgICAgICAgIG1CbHVldG9vdGhPblRpbWVyID0gbmV3IFN0b3B3YXRjaFRpbWVyKC01LCBudWxsLCBtVW5wbHVnZ2FibGVzKTsKICAgICAgICAgbUF1ZGlvT25UaW1lciA9IG5ldyBTdG9wd2F0Y2hUaW1lcigtNiwgbnVsbCwgbVVucGx1Z2dhYmxlcyk7CisgICAgICAgIG1WaWRlb09uVGltZXIgPSBuZXcgU3RvcHdhdGNoVGltZXIoLTcsIG51bGwsIG1VbnBsdWdnYWJsZXMpOwogICAgICAgICBtT25CYXR0ZXJ5ID0gbU9uQmF0dGVyeUludGVybmFsID0gZmFsc2U7CisgICAgICAgIGluaXRUaW1lcygpOwogICAgICAgICBtVHJhY2tCYXR0ZXJ5UGFzdFVwdGltZSA9IDA7CiAgICAgICAgIG1UcmFja0JhdHRlcnlQYXN0UmVhbHRpbWUgPSAwOwogICAgICAgICBtVXB0aW1lU3RhcnQgPSBtVHJhY2tCYXR0ZXJ5VXB0aW1lU3RhcnQgPSBTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKSAqIDEwMDA7CkBAIC0yNzQ3LDYgKzMzMzQsNyBAQAogICAgICAgICBtVW5wbHVnZ2VkQmF0dGVyeVVwdGltZSA9IGdldEJhdHRlcnlVcHRpbWVMb2NrZWQobVVwdGltZVN0YXJ0KTsKICAgICAgICAgbVVucGx1Z2dlZEJhdHRlcnlSZWFsdGltZSA9IGdldEJhdHRlcnlSZWFsdGltZUxvY2tlZChtUmVhbHRpbWVTdGFydCk7CiAgICAgICAgIG1EaXNjaGFyZ2VTdGFydExldmVsID0gMDsKKyAgICAgICAgbURpc2NoYXJnZVVucGx1Z0xldmVsID0gMDsKICAgICAgICAgbURpc2NoYXJnZUN1cnJlbnRMZXZlbCA9IDA7CiAgICAgfQogCkBAIC0yNzY2LDYgKzMzNTQsMTEgQEAKICAgICB9CiAKICAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgSGlzdG9yeUl0ZW0gZ2V0SGlzdG9yeSgpIHsKKyAgICAgICAgcmV0dXJuIG1IaXN0b3J5OworICAgIH0KKyAgICAKKyAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgaW50IGdldFN0YXJ0Q291bnQoKSB7CiAgICAgICAgIHJldHVybiBtU3RhcnRDb3VudDsKICAgICB9CkBAIC0yNzc0LDM5ICszMzY3LDE3NSBAQAogICAgICAgICByZXR1cm4gbU9uQmF0dGVyeTsKICAgICB9CiAKLSAgICBwdWJsaWMgdm9pZCBzZXRPbkJhdHRlcnkoYm9vbGVhbiBvbkJhdHRlcnksIGludCBsZXZlbCkgeworICAgIHZvaWQgaW5pdFRpbWVzKCkgeworICAgICAgICBtQmF0dGVyeVJlYWx0aW1lID0gbVRyYWNrQmF0dGVyeVBhc3RVcHRpbWUgPSAwOworICAgICAgICBtQmF0dGVyeVVwdGltZSA9IG1UcmFja0JhdHRlcnlQYXN0UmVhbHRpbWUgPSAwOworICAgICAgICBtVXB0aW1lU3RhcnQgPSBtVHJhY2tCYXR0ZXJ5VXB0aW1lU3RhcnQgPSBTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKSAqIDEwMDA7CisgICAgICAgIG1SZWFsdGltZVN0YXJ0ID0gbVRyYWNrQmF0dGVyeVJlYWx0aW1lU3RhcnQgPSBTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKSAqIDEwMDA7CisgICAgICAgIG1VbnBsdWdnZWRCYXR0ZXJ5VXB0aW1lID0gZ2V0QmF0dGVyeVVwdGltZUxvY2tlZChtVXB0aW1lU3RhcnQpOworICAgICAgICBtVW5wbHVnZ2VkQmF0dGVyeVJlYWx0aW1lID0gZ2V0QmF0dGVyeVJlYWx0aW1lTG9ja2VkKG1SZWFsdGltZVN0YXJ0KTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgcmVzZXRBbGxTdGF0c0xvY2tlZCgpIHsKKyAgICAgICAgbVN0YXJ0Q291bnQgPSAwOworICAgICAgICBpbml0VGltZXMoKTsKKyAgICAgICAgbVNjcmVlbk9uVGltZXIucmVzZXQoZmFsc2UpOworICAgICAgICBmb3IgKGludCBpPTA7IGk8TlVNX1NDUkVFTl9CUklHSFRORVNTX0JJTlM7IGkrKykgeworICAgICAgICAgICAgbVNjcmVlbkJyaWdodG5lc3NUaW1lcltpXS5yZXNldChmYWxzZSk7CisgICAgICAgIH0KKyAgICAgICAgbUlucHV0RXZlbnRDb3VudGVyLnJlc2V0KGZhbHNlKTsKKyAgICAgICAgbVBob25lT25UaW1lci5yZXNldChmYWxzZSk7CisgICAgICAgIG1BdWRpb09uVGltZXIucmVzZXQoZmFsc2UpOworICAgICAgICBtVmlkZW9PblRpbWVyLnJlc2V0KGZhbHNlKTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPE5VTV9TSUdOQUxfU1RSRU5HVEhfQklOUzsgaSsrKSB7CisgICAgICAgICAgICBtUGhvbmVTaWduYWxTdHJlbmd0aHNUaW1lcltpXS5yZXNldChmYWxzZSk7CisgICAgICAgIH0KKyAgICAgICAgbVBob25lU2lnbmFsU2Nhbm5pbmdUaW1lci5yZXNldChmYWxzZSk7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxOVU1fREFUQV9DT05ORUNUSU9OX1RZUEVTOyBpKyspIHsKKyAgICAgICAgICAgIG1QaG9uZURhdGFDb25uZWN0aW9uc1RpbWVyW2ldLnJlc2V0KGZhbHNlKTsKKyAgICAgICAgfQorICAgICAgICBtV2lmaU9uVGltZXIucmVzZXQoZmFsc2UpOworICAgICAgICBtV2lmaVJ1bm5pbmdUaW1lci5yZXNldChmYWxzZSk7CisgICAgICAgIG1CbHVldG9vdGhPblRpbWVyLnJlc2V0KGZhbHNlKTsKKyAgICAgICAgCisgICAgICAgIGZvciAoaW50IGk9MDsgaTxtVWlkU3RhdHMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIGlmIChtVWlkU3RhdHMudmFsdWVBdChpKS5yZXNldCgpKSB7CisgICAgICAgICAgICAgICAgbVVpZFN0YXRzLnJlbW92ZShtVWlkU3RhdHMua2V5QXQoaSkpOworICAgICAgICAgICAgICAgIGktLTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKG1LZXJuZWxXYWtlbG9ja1N0YXRzLnNpemUoKSA+IDApIHsKKyAgICAgICAgICAgIGZvciAoU2FtcGxpbmdUaW1lciB0aW1lciA6IG1LZXJuZWxXYWtlbG9ja1N0YXRzLnZhbHVlcygpKSB7CisgICAgICAgICAgICAgICAgbVVucGx1Z2dhYmxlcy5yZW1vdmUodGltZXIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbUtlcm5lbFdha2Vsb2NrU3RhdHMuY2xlYXIoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY2xlYXJIaXN0b3J5TG9ja2VkKCk7CisgICAgfQorICAgIAorICAgIHZvaWQgc2V0T25CYXR0ZXJ5KGJvb2xlYW4gb25CYXR0ZXJ5LCBpbnQgb2xkU3RhdHVzLCBpbnQgbGV2ZWwpIHsKICAgICAgICAgc3luY2hyb25pemVkKHRoaXMpIHsKLSAgICAgICAgICAgIHVwZGF0ZUtlcm5lbFdha2Vsb2Nrc0xvY2tlZCgpOwotICAgICAgICAgICAgaWYgKG1PbkJhdHRlcnkgIT0gb25CYXR0ZXJ5KSB7Ci0gICAgICAgICAgICAgICAgbU9uQmF0dGVyeSA9IG1PbkJhdHRlcnlJbnRlcm5hbCA9IG9uQmF0dGVyeTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBsb25nIHVwdGltZSA9IFN5c3RlbUNsb2NrLnVwdGltZU1pbGxpcygpICogMTAwMDsKLSAgICAgICAgICAgICAgICBsb25nIG1TZWNSZWFsdGltZSA9IFN5c3RlbUNsb2NrLmVsYXBzZWRSZWFsdGltZSgpOwotICAgICAgICAgICAgICAgIGxvbmcgcmVhbHRpbWUgPSBtU2VjUmVhbHRpbWUgKiAxMDAwOwotICAgICAgICAgICAgICAgIGlmIChvbkJhdHRlcnkpIHsKLSAgICAgICAgICAgICAgICAgICAgbVRyYWNrQmF0dGVyeVVwdGltZVN0YXJ0ID0gdXB0aW1lOwotICAgICAgICAgICAgICAgICAgICBtVHJhY2tCYXR0ZXJ5UmVhbHRpbWVTdGFydCA9IHJlYWx0aW1lOwotICAgICAgICAgICAgICAgICAgICBtVW5wbHVnZ2VkQmF0dGVyeVVwdGltZSA9IGdldEJhdHRlcnlVcHRpbWVMb2NrZWQodXB0aW1lKTsKLSAgICAgICAgICAgICAgICAgICAgbVVucGx1Z2dlZEJhdHRlcnlSZWFsdGltZSA9IGdldEJhdHRlcnlSZWFsdGltZUxvY2tlZChyZWFsdGltZSk7Ci0gICAgICAgICAgICAgICAgICAgIG1EaXNjaGFyZ2VDdXJyZW50TGV2ZWwgPSBtRGlzY2hhcmdlU3RhcnRMZXZlbCA9IGxldmVsOwotICAgICAgICAgICAgICAgICAgICBkb1VucGx1ZyhtVW5wbHVnZ2VkQmF0dGVyeVVwdGltZSwgbVVucGx1Z2dlZEJhdHRlcnlSZWFsdGltZSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgbVRyYWNrQmF0dGVyeVBhc3RVcHRpbWUgKz0gdXB0aW1lIC0gbVRyYWNrQmF0dGVyeVVwdGltZVN0YXJ0OwotICAgICAgICAgICAgICAgICAgICBtVHJhY2tCYXR0ZXJ5UGFzdFJlYWx0aW1lICs9IHJlYWx0aW1lIC0gbVRyYWNrQmF0dGVyeVJlYWx0aW1lU3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgIG1EaXNjaGFyZ2VDdXJyZW50TGV2ZWwgPSBsZXZlbDsKLSAgICAgICAgICAgICAgICAgICAgZG9QbHVnKGdldEJhdHRlcnlVcHRpbWVMb2NrZWQodXB0aW1lKSwgZ2V0QmF0dGVyeVJlYWx0aW1lTG9ja2VkKHJlYWx0aW1lKSk7CisgICAgICAgICAgICBib29sZWFuIGRvV3JpdGUgPSBmYWxzZTsKKyAgICAgICAgICAgIG1PbkJhdHRlcnkgPSBtT25CYXR0ZXJ5SW50ZXJuYWwgPSBvbkJhdHRlcnk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGxvbmcgdXB0aW1lID0gU3lzdGVtQ2xvY2sudXB0aW1lTWlsbGlzKCkgKiAxMDAwOworICAgICAgICAgICAgbG9uZyBtU2VjUmVhbHRpbWUgPSBTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKTsKKyAgICAgICAgICAgIGxvbmcgcmVhbHRpbWUgPSBtU2VjUmVhbHRpbWUgKiAxMDAwOworICAgICAgICAgICAgaWYgKG9uQmF0dGVyeSkgeworICAgICAgICAgICAgICAgIC8vIFdlIHdpbGwgcmVzZXQgb3VyIHN0YXR1cyBpZiB3ZSBhcmUgdW5wbHVnZ2luZyBhZnRlciB0aGUKKyAgICAgICAgICAgICAgICAvLyBiYXR0ZXJ5IHdhcyBsYXN0IGZ1bGwsIG9yIHRoZSBsZXZlbCBpcyBhdCAxMDAsIG9yCisgICAgICAgICAgICAgICAgLy8gd2UgaGF2ZSBnb25lIHRocm91Z2ggYSBzaWduaWZpY2FudCBjaGFyZ2UgKGZyb20gYSB2ZXJ5IGxvdworICAgICAgICAgICAgICAgIC8vIGxldmVsIHRvIGEgbm93IHZlcnkgaGlnaCBsZXZlbCkuCisgICAgICAgICAgICAgICAgaWYgKG9sZFN0YXR1cyA9PSBCYXR0ZXJ5TWFuYWdlci5CQVRURVJZX1NUQVRVU19GVUxMCisgICAgICAgICAgICAgICAgICAgICAgICB8fCBsZXZlbCA+PSAxMDAKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IChtRGlzY2hhcmdlQ3VycmVudExldmVsIDwgMjAgJiYgbGV2ZWwgPiA5MCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZG9Xcml0ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIHJlc2V0QWxsU3RhdHNMb2NrZWQoKTsKKyAgICAgICAgICAgICAgICAgICAgbURpc2NoYXJnZVN0YXJ0TGV2ZWwgPSBsZXZlbDsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKChtTGFzdFdyaXRlVGltZSArICg2MCAqIDEwMDApKSA8IG1TZWNSZWFsdGltZSkgewotICAgICAgICAgICAgICAgICAgICBpZiAobUZpbGUgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGVMb2NrZWQoKTsKLSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHVwZGF0ZUtlcm5lbFdha2Vsb2Nrc0xvY2tlZCgpOworICAgICAgICAgICAgICAgIG1IaXN0b3J5Q3VyLmJhdHRlcnlMZXZlbCA9IChieXRlKWxldmVsOworICAgICAgICAgICAgICAgIG1IaXN0b3J5Q3VyLnN0YXRlcyAmPSB+SGlzdG9yeUl0ZW0uU1RBVEVfQkFUVEVSWV9QTFVHR0VEX0ZMQUc7CisgICAgICAgICAgICAgICAgaWYgKERFQlVHX0hJU1RPUlkpIFNsb2cudihUQUcsICJCYXR0ZXJ5IHVucGx1Z2dlZCB0bzogIgorICAgICAgICAgICAgICAgICAgICAgICAgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG1IaXN0b3J5Q3VyLnN0YXRlcykpOworICAgICAgICAgICAgICAgIGFkZEhpc3RvcnlSZWNvcmRMb2NrZWQobVNlY1JlYWx0aW1lKTsKKyAgICAgICAgICAgICAgICBtVHJhY2tCYXR0ZXJ5VXB0aW1lU3RhcnQgPSB1cHRpbWU7CisgICAgICAgICAgICAgICAgbVRyYWNrQmF0dGVyeVJlYWx0aW1lU3RhcnQgPSByZWFsdGltZTsKKyAgICAgICAgICAgICAgICBtVW5wbHVnZ2VkQmF0dGVyeVVwdGltZSA9IGdldEJhdHRlcnlVcHRpbWVMb2NrZWQodXB0aW1lKTsKKyAgICAgICAgICAgICAgICBtVW5wbHVnZ2VkQmF0dGVyeVJlYWx0aW1lID0gZ2V0QmF0dGVyeVJlYWx0aW1lTG9ja2VkKHJlYWx0aW1lKTsKKyAgICAgICAgICAgICAgICBtRGlzY2hhcmdlQ3VycmVudExldmVsID0gbURpc2NoYXJnZVVucGx1Z0xldmVsID0gbGV2ZWw7CisgICAgICAgICAgICAgICAgZG9VbnBsdWdMb2NrZWQobVVucGx1Z2dlZEJhdHRlcnlVcHRpbWUsIG1VbnBsdWdnZWRCYXR0ZXJ5UmVhbHRpbWUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB1cGRhdGVLZXJuZWxXYWtlbG9ja3NMb2NrZWQoKTsKKyAgICAgICAgICAgICAgICBtSGlzdG9yeUN1ci5iYXR0ZXJ5TGV2ZWwgPSAoYnl0ZSlsZXZlbDsKKyAgICAgICAgICAgICAgICBtSGlzdG9yeUN1ci5zdGF0ZXMgfD0gSGlzdG9yeUl0ZW0uU1RBVEVfQkFUVEVSWV9QTFVHR0VEX0ZMQUc7CisgICAgICAgICAgICAgICAgaWYgKERFQlVHX0hJU1RPUlkpIFNsb2cudihUQUcsICJCYXR0ZXJ5IHBsdWdnZWQgdG86ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgSW50ZWdlci50b0hleFN0cmluZyhtSGlzdG9yeUN1ci5zdGF0ZXMpKTsKKyAgICAgICAgICAgICAgICBhZGRIaXN0b3J5UmVjb3JkTG9ja2VkKG1TZWNSZWFsdGltZSk7CisgICAgICAgICAgICAgICAgbVRyYWNrQmF0dGVyeVBhc3RVcHRpbWUgKz0gdXB0aW1lIC0gbVRyYWNrQmF0dGVyeVVwdGltZVN0YXJ0OworICAgICAgICAgICAgICAgIG1UcmFja0JhdHRlcnlQYXN0UmVhbHRpbWUgKz0gcmVhbHRpbWUgLSBtVHJhY2tCYXR0ZXJ5UmVhbHRpbWVTdGFydDsKKyAgICAgICAgICAgICAgICBtRGlzY2hhcmdlQ3VycmVudExldmVsID0gbGV2ZWw7CisgICAgICAgICAgICAgICAgZG9QbHVnTG9ja2VkKGdldEJhdHRlcnlVcHRpbWVMb2NrZWQodXB0aW1lKSwgZ2V0QmF0dGVyeVJlYWx0aW1lTG9ja2VkKHJlYWx0aW1lKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZG9Xcml0ZSB8fCAobUxhc3RXcml0ZVRpbWUgKyAoNjAgKiAxMDAwKSkgPCBtU2VjUmVhbHRpbWUpIHsKKyAgICAgICAgICAgICAgICBpZiAobUZpbGUgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICB3cml0ZUxvY2tlZCgpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICAKLSAgICBwdWJsaWMgdm9pZCByZWNvcmRDdXJyZW50TGV2ZWwoaW50IGxldmVsKSB7Ci0gICAgICAgIG1EaXNjaGFyZ2VDdXJyZW50TGV2ZWwgPSBsZXZlbDsKKyAgICAvLyBUaGlzIHNob3VsZCBwcm9iYWJseSBiZSBleHBvc2VkIGluIHRoZSBBUEksIHRob3VnaCBpdCdzIG5vdCBjcml0aWNhbAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBCQVRURVJZX1BMVUdHRURfTk9ORSA9IDA7CisgICAgCisgICAgcHVibGljIHZvaWQgc2V0QmF0dGVyeVN0YXRlKGludCBzdGF0dXMsIGludCBoZWFsdGgsIGludCBwbHVnVHlwZSwgaW50IGxldmVsLAorICAgICAgICAgICAgaW50IHRlbXAsIGludCB2b2x0KSB7CisgICAgICAgIGJvb2xlYW4gb25CYXR0ZXJ5ID0gcGx1Z1R5cGUgPT0gQkFUVEVSWV9QTFVHR0VEX05PTkU7CisgICAgICAgIGludCBvbGRTdGF0dXMgPSBtSGlzdG9yeUN1ci5iYXR0ZXJ5U3RhdHVzOworICAgICAgICBpZiAoIW1IYXZlQmF0dGVyeUxldmVsKSB7CisgICAgICAgICAgICBtSGF2ZUJhdHRlcnlMZXZlbCA9IHRydWU7CisgICAgICAgICAgICAvLyBXZSBzdGFydCBvdXQgYXNzdW1pbmcgdGhhdCB0aGUgZGV2aWNlIGlzIHBsdWdnZWQgaW4gKG5vdAorICAgICAgICAgICAgLy8gb24gYmF0dGVyeSkuICBJZiBvdXIgZmlyc3QgcmVwb3J0IGlzIG5vdyB0aGF0IHdlIGFyZSBpbmRlZWQKKyAgICAgICAgICAgIC8vIHBsdWdnZWQgaW4sIHRoZW4gdHdpZGRsZSBvdXIgc3RhdGUgdG8gY29ycmVjdGx5IHJlZmxlY3QgdGhhdAorICAgICAgICAgICAgLy8gc2luY2Ugd2Ugd29uJ3QgYmUgZ29pbmcgdGhyb3VnaCB0aGUgZnVsbCBzZXRPbkJhdHRlcnkoKS4KKyAgICAgICAgICAgIGlmIChvbkJhdHRlcnkgPT0gbU9uQmF0dGVyeSkgeworICAgICAgICAgICAgICAgIGlmIChvbkJhdHRlcnkpIHsKKyAgICAgICAgICAgICAgICAgICAgbUhpc3RvcnlDdXIuc3RhdGVzICY9IH5IaXN0b3J5SXRlbS5TVEFURV9CQVRURVJZX1BMVUdHRURfRkxBRzsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBtSGlzdG9yeUN1ci5zdGF0ZXMgfD0gSGlzdG9yeUl0ZW0uU1RBVEVfQkFUVEVSWV9QTFVHR0VEX0ZMQUc7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgb2xkU3RhdHVzID0gc3RhdHVzOworICAgICAgICB9CisgICAgICAgIGlmIChvbkJhdHRlcnkpIHsKKyAgICAgICAgICAgIG1EaXNjaGFyZ2VDdXJyZW50TGV2ZWwgPSBsZXZlbDsKKyAgICAgICAgICAgIG1SZWNvcmRpbmdIaXN0b3J5ID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAob25CYXR0ZXJ5ICE9IG1PbkJhdHRlcnkpIHsKKyAgICAgICAgICAgIG1IaXN0b3J5Q3VyLmJhdHRlcnlMZXZlbCA9IChieXRlKWxldmVsOworICAgICAgICAgICAgbUhpc3RvcnlDdXIuYmF0dGVyeVN0YXR1cyA9IChieXRlKXN0YXR1czsKKyAgICAgICAgICAgIG1IaXN0b3J5Q3VyLmJhdHRlcnlIZWFsdGggPSAoYnl0ZSloZWFsdGg7CisgICAgICAgICAgICBtSGlzdG9yeUN1ci5iYXR0ZXJ5UGx1Z1R5cGUgPSAoYnl0ZSlwbHVnVHlwZTsKKyAgICAgICAgICAgIG1IaXN0b3J5Q3VyLmJhdHRlcnlUZW1wZXJhdHVyZSA9IChjaGFyKXRlbXA7CisgICAgICAgICAgICBtSGlzdG9yeUN1ci5iYXR0ZXJ5Vm9sdGFnZSA9IChjaGFyKXZvbHQ7CisgICAgICAgICAgICBzZXRPbkJhdHRlcnkob25CYXR0ZXJ5LCBvbGRTdGF0dXMsIGxldmVsKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGJvb2xlYW4gY2hhbmdlZCA9IGZhbHNlOworICAgICAgICAgICAgaWYgKG1IaXN0b3J5Q3VyLmJhdHRlcnlMZXZlbCAhPSBsZXZlbCkgeworICAgICAgICAgICAgICAgIG1IaXN0b3J5Q3VyLmJhdHRlcnlMZXZlbCA9IChieXRlKWxldmVsOworICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1IaXN0b3J5Q3VyLmJhdHRlcnlTdGF0dXMgIT0gc3RhdHVzKSB7CisgICAgICAgICAgICAgICAgbUhpc3RvcnlDdXIuYmF0dGVyeVN0YXR1cyA9IChieXRlKXN0YXR1czsKKyAgICAgICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtSGlzdG9yeUN1ci5iYXR0ZXJ5SGVhbHRoICE9IGhlYWx0aCkgeworICAgICAgICAgICAgICAgIG1IaXN0b3J5Q3VyLmJhdHRlcnlIZWFsdGggPSAoYnl0ZSloZWFsdGg7CisgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobUhpc3RvcnlDdXIuYmF0dGVyeVBsdWdUeXBlICE9IHBsdWdUeXBlKSB7CisgICAgICAgICAgICAgICAgbUhpc3RvcnlDdXIuYmF0dGVyeVBsdWdUeXBlID0gKGJ5dGUpcGx1Z1R5cGU7CisgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobUhpc3RvcnlDdXIuYmF0dGVyeVRlbXBlcmF0dXJlICE9IHRlbXApIHsKKyAgICAgICAgICAgICAgICBtSGlzdG9yeUN1ci5iYXR0ZXJ5VGVtcGVyYXR1cmUgPSAoY2hhcil0ZW1wOworICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1IaXN0b3J5Q3VyLmJhdHRlcnlWb2x0YWdlICE9IHZvbHQpIHsKKyAgICAgICAgICAgICAgICBtSGlzdG9yeUN1ci5iYXR0ZXJ5Vm9sdGFnZSA9IChjaGFyKXZvbHQ7CisgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoY2hhbmdlZCkgeworICAgICAgICAgICAgICAgIGFkZEhpc3RvcnlSZWNvcmRMb2NrZWQoU3lzdGVtQ2xvY2suZWxhcHNlZFJlYWx0aW1lKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmICghb25CYXR0ZXJ5ICYmIHN0YXR1cyA9PSBCYXR0ZXJ5TWFuYWdlci5CQVRURVJZX1NUQVRVU19GVUxMKSB7CisgICAgICAgICAgICAvLyBXZSBkb24ndCByZWNvcmQgaGlzdG9yeSB3aGlsZSB3ZSBhcmUgcGx1Z2dlZCBpbiBhbmQgZnVsbHkgY2hhcmdlZC4KKyAgICAgICAgICAgIC8vIFRoZSBuZXh0IHRpbWUgd2UgYXJlIHVucGx1Z2dlZCwgaGlzdG9yeSB3aWxsIGJlIGNsZWFyZWQuCisgICAgICAgICAgICBtUmVjb3JkaW5nSGlzdG9yeSA9IGZhbHNlOworICAgICAgICB9CiAgICAgfQogICAgIAogICAgIHB1YmxpYyB2b2lkIHVwZGF0ZUtlcm5lbFdha2Vsb2Nrc0xvY2tlZCgpIHsKQEAgLTI4NTUsMTAgKzM1ODQsMTAgQEAKICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgbG9uZyBjb21wdXRlVXB0aW1lKGxvbmcgY3VyVGltZSwgaW50IHdoaWNoKSB7CiAgICAgICAgIHN3aXRjaCAod2hpY2gpIHsKLSAgICAgICAgICAgIGNhc2UgU1RBVFNfVE9UQUw6IHJldHVybiBtVXB0aW1lICsgKGN1clRpbWUtbVVwdGltZVN0YXJ0KTsKKyAgICAgICAgICAgIGNhc2UgU1RBVFNfU0lOQ0VfQ0hBUkdFRDogcmV0dXJuIG1VcHRpbWUgKyAoY3VyVGltZS1tVXB0aW1lU3RhcnQpOwogICAgICAgICAgICAgY2FzZSBTVEFUU19MQVNUOiByZXR1cm4gbUxhc3RVcHRpbWU7CiAgICAgICAgICAgICBjYXNlIFNUQVRTX0NVUlJFTlQ6IHJldHVybiAoY3VyVGltZS1tVXB0aW1lU3RhcnQpOwotICAgICAgICAgICAgY2FzZSBTVEFUU19VTlBMVUdHRUQ6IHJldHVybiAoY3VyVGltZS1tVHJhY2tCYXR0ZXJ5VXB0aW1lU3RhcnQpOworICAgICAgICAgICAgY2FzZSBTVEFUU19TSU5DRV9VTlBMVUdHRUQ6IHJldHVybiAoY3VyVGltZS1tVHJhY2tCYXR0ZXJ5VXB0aW1lU3RhcnQpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTI4NjYsMTAgKzM1OTUsMTAgQEAKICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgbG9uZyBjb21wdXRlUmVhbHRpbWUobG9uZyBjdXJUaW1lLCBpbnQgd2hpY2gpIHsKICAgICAgICAgc3dpdGNoICh3aGljaCkgewotICAgICAgICAgICAgY2FzZSBTVEFUU19UT1RBTDogcmV0dXJuIG1SZWFsdGltZSArIChjdXJUaW1lLW1SZWFsdGltZVN0YXJ0KTsKKyAgICAgICAgICAgIGNhc2UgU1RBVFNfU0lOQ0VfQ0hBUkdFRDogcmV0dXJuIG1SZWFsdGltZSArIChjdXJUaW1lLW1SZWFsdGltZVN0YXJ0KTsKICAgICAgICAgICAgIGNhc2UgU1RBVFNfTEFTVDogcmV0dXJuIG1MYXN0UmVhbHRpbWU7CiAgICAgICAgICAgICBjYXNlIFNUQVRTX0NVUlJFTlQ6IHJldHVybiAoY3VyVGltZS1tUmVhbHRpbWVTdGFydCk7Ci0gICAgICAgICAgICBjYXNlIFNUQVRTX1VOUExVR0dFRDogcmV0dXJuIChjdXJUaW1lLW1UcmFja0JhdHRlcnlSZWFsdGltZVN0YXJ0KTsKKyAgICAgICAgICAgIGNhc2UgU1RBVFNfU0lOQ0VfVU5QTFVHR0VEOiByZXR1cm4gKGN1clRpbWUtbVRyYWNrQmF0dGVyeVJlYWx0aW1lU3RhcnQpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KQEAgLTI4NzcsMTMgKzM2MDYsMTMgQEAKICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgbG9uZyBjb21wdXRlQmF0dGVyeVVwdGltZShsb25nIGN1clRpbWUsIGludCB3aGljaCkgewogICAgICAgICBzd2l0Y2ggKHdoaWNoKSB7Ci0gICAgICAgICAgICBjYXNlIFNUQVRTX1RPVEFMOgorICAgICAgICAgICAgY2FzZSBTVEFUU19TSU5DRV9DSEFSR0VEOgogICAgICAgICAgICAgICAgIHJldHVybiBtQmF0dGVyeVVwdGltZSArIGdldEJhdHRlcnlVcHRpbWUoY3VyVGltZSk7CiAgICAgICAgICAgICBjYXNlIFNUQVRTX0xBU1Q6CiAgICAgICAgICAgICAgICAgcmV0dXJuIG1CYXR0ZXJ5TGFzdFVwdGltZTsKICAgICAgICAgICAgIGNhc2UgU1RBVFNfQ1VSUkVOVDoKICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0QmF0dGVyeVVwdGltZShjdXJUaW1lKTsKLSAgICAgICAgICAgIGNhc2UgU1RBVFNfVU5QTFVHR0VEOgorICAgICAgICAgICAgY2FzZSBTVEFUU19TSU5DRV9VTlBMVUdHRUQ6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGdldEJhdHRlcnlVcHRpbWVMb2NrZWQoY3VyVGltZSkgLSBtVW5wbHVnZ2VkQmF0dGVyeVVwdGltZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gMDsKQEAgLTI4OTIsMTMgKzM2MjEsMTMgQEAKICAgICBAT3ZlcnJpZGUKICAgICBwdWJsaWMgbG9uZyBjb21wdXRlQmF0dGVyeVJlYWx0aW1lKGxvbmcgY3VyVGltZSwgaW50IHdoaWNoKSB7CiAgICAgICAgIHN3aXRjaCAod2hpY2gpIHsKLSAgICAgICAgICAgIGNhc2UgU1RBVFNfVE9UQUw6CisgICAgICAgICAgICBjYXNlIFNUQVRTX1NJTkNFX0NIQVJHRUQ6CiAgICAgICAgICAgICAgICAgcmV0dXJuIG1CYXR0ZXJ5UmVhbHRpbWUgKyBnZXRCYXR0ZXJ5UmVhbHRpbWVMb2NrZWQoY3VyVGltZSk7CiAgICAgICAgICAgICBjYXNlIFNUQVRTX0xBU1Q6CiAgICAgICAgICAgICAgICAgcmV0dXJuIG1CYXR0ZXJ5TGFzdFJlYWx0aW1lOwogICAgICAgICAgICAgY2FzZSBTVEFUU19DVVJSRU5UOgogICAgICAgICAgICAgICAgIHJldHVybiBnZXRCYXR0ZXJ5UmVhbHRpbWVMb2NrZWQoY3VyVGltZSk7Ci0gICAgICAgICAgICBjYXNlIFNUQVRTX1VOUExVR0dFRDoKKyAgICAgICAgICAgIGNhc2UgU1RBVFNfU0lOQ0VfVU5QTFVHR0VEOgogICAgICAgICAgICAgICAgIHJldHVybiBnZXRCYXR0ZXJ5UmVhbHRpbWVMb2NrZWQoY3VyVGltZSkgLSBtVW5wbHVnZ2VkQmF0dGVyeVJlYWx0aW1lOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiAwOwpAQCAtMjkzOCwxNCArMzY2NywxNCBAQAogICAgICAgICBpZiAod2hpY2ggPT0gU1RBVFNfTEFTVCkgewogICAgICAgICAgICAgcmV0dXJuIGRhdGFCeXRlc1tTVEFUU19MQVNUXTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmICh3aGljaCA9PSBTVEFUU19VTlBMVUdHRUQpIHsKLSAgICAgICAgICAgICAgICBpZiAoZGF0YUJ5dGVzW1NUQVRTX1VOUExVR0dFRF0gPCAwKSB7CisgICAgICAgICAgICBpZiAod2hpY2ggPT0gU1RBVFNfU0lOQ0VfVU5QTFVHR0VEKSB7CisgICAgICAgICAgICAgICAgaWYgKGRhdGFCeXRlc1tTVEFUU19TSU5DRV9VTlBMVUdHRURdIDwgMCkgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZGF0YUJ5dGVzW1NUQVRTX0xBU1RdOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50IC0gZGF0YUJ5dGVzW1NUQVRTX1VOUExVR0dFRF07CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjdXJyZW50IC0gZGF0YUJ5dGVzW1NUQVRTX1NJTkNFX1VOUExVR0dFRF07CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIGlmICh3aGljaCA9PSBTVEFUU19UT1RBTCkgewotICAgICAgICAgICAgICAgIHJldHVybiAoY3VycmVudCAtIGRhdGFCeXRlc1tTVEFUU19DVVJSRU5UXSkgKyBkYXRhQnl0ZXNbU1RBVFNfVE9UQUxdOworICAgICAgICAgICAgfSBlbHNlIGlmICh3aGljaCA9PSBTVEFUU19TSU5DRV9DSEFSR0VEKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIChjdXJyZW50IC0gZGF0YUJ5dGVzW1NUQVRTX0NVUlJFTlRdKSArIGRhdGFCeXRlc1tTVEFUU19TSU5DRV9DSEFSR0VEXTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBjdXJyZW50IC0gZGF0YUJ5dGVzW1NUQVRTX0NVUlJFTlRdOwogICAgICAgICB9CkBAIC0yOTc5LDcgKzM3MDgsNyBAQAogICAgIH0KICAgICAKICAgICBwdWJsaWMgaW50IGdldERpc2NoYXJnZVN0YXJ0TGV2ZWxMb2NrZWQoKSB7Ci0gICAgICAgICAgICByZXR1cm4gbURpc2NoYXJnZVN0YXJ0TGV2ZWw7CisgICAgICAgICAgICByZXR1cm4gbURpc2NoYXJnZVVucGx1Z0xldmVsOwogICAgIH0KICAgICAKICAgICBAT3ZlcnJpZGUKQEAgLTMwNjIsMTcgKzM3OTEsMjEgQEAKICAgICAgICAgcmV0dXJuIHUuZ2V0U2VydmljZVN0YXRzTG9ja2VkKHBrZywgbmFtZSk7CiAgICAgfQogCi0gICAgcHJpdmF0ZSBzdGF0aWMgSm91cm5hbGVkRmlsZSBtYWtlSm91cm5hbGVkRmlsZSgpIHsKLSAgICAgICAgZmluYWwgU3RyaW5nIGJhc2UgPSAiL2RhdGEvc3lzdGVtL2RldmljZV9wb2xpY2llcy54bWwiOwotICAgICAgICByZXR1cm4gbmV3IEpvdXJuYWxlZEZpbGUobmV3IEZpbGUoYmFzZSksIG5ldyBGaWxlKGJhc2UgKyAiLnRtcCIpKTsKKyAgICBwdWJsaWMgdm9pZCBzaHV0ZG93bkxvY2tlZCgpIHsKKyAgICAgICAgd3JpdGVMb2NrZWQoKTsKKyAgICAgICAgbVNodXR0aW5nRG93biA9IHRydWU7CiAgICAgfQotCisgICAgCiAgICAgcHVibGljIHZvaWQgd3JpdGVMb2NrZWQoKSB7CiAgICAgICAgIGlmIChtRmlsZSA9PSBudWxsKSB7CiAgICAgICAgICAgICBTbG9nLncoIkJhdHRlcnlTdGF0cyIsICJ3cml0ZUxvY2tlZDogbm8gZmlsZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBpbnN0YW5jZSIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKKyAgICAgICAgaWYgKG1TaHV0dGluZ0Rvd24pIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIEZpbGVPdXRwdXRTdHJlYW0gc3RyZWFtID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0obUZpbGUuY2hvb3NlRm9yV3JpdGUoKSk7CiAgICAgICAgICAgICBQYXJjZWwgb3V0ID0gUGFyY2VsLm9idGFpbigpOwpAQCAtMzE0MCwxMiArMzg3Myw0NyBAQAogICAgICAgICB9IGNhdGNoKGphdmEuaW8uSU9FeGNlcHRpb24gZSkgewogICAgICAgICAgICAgU2xvZy5lKCJCYXR0ZXJ5U3RhdHMiLCAiRXJyb3IgcmVhZGluZyBiYXR0ZXJ5IHN0YXRpc3RpY3MiLCBlKTsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgYWRkSGlzdG9yeVJlY29yZExvY2tlZChTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKSwgSGlzdG9yeUl0ZW0uQ01EX1NUQVJUKTsKICAgICB9CiAKICAgICBwdWJsaWMgaW50IGRlc2NyaWJlQ29udGVudHMoKSB7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIAorICAgIHZvaWQgcmVhZEhpc3RvcnkoUGFyY2VsIGluKSB7CisgICAgICAgIG1IaXN0b3J5ID0gbUhpc3RvcnlFbmQgPSBtSGlzdG9yeUNhY2hlID0gbnVsbDsKKyAgICAgICAgbUhpc3RvcnlCYXNlVGltZSA9IDA7CisgICAgICAgIGxvbmcgdGltZTsKKyAgICAgICAgd2hpbGUgKCh0aW1lPWluLnJlYWRMb25nKCkpID49IDApIHsKKyAgICAgICAgICAgIEhpc3RvcnlJdGVtIHJlYyA9IG5ldyBIaXN0b3J5SXRlbSh0aW1lLCBpbik7CisgICAgICAgICAgICBhZGRIaXN0b3J5UmVjb3JkTG9ja2VkKHJlYyk7CisgICAgICAgICAgICBpZiAocmVjLnRpbWUgPiBtSGlzdG9yeUJhc2VUaW1lKSB7CisgICAgICAgICAgICAgICAgbUhpc3RvcnlCYXNlVGltZSA9IHJlYy50aW1lOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBsb25nIG9sZG5vdyA9IFN5c3RlbUNsb2NrLmVsYXBzZWRSZWFsdGltZSgpIC0gKDUqNjAqMTAwKTsKKyAgICAgICAgaWYgKG9sZG5vdyA+IDApIHsKKyAgICAgICAgICAgIC8vIElmIHRoZSBzeXN0ZW0gcHJvY2VzcyBoYXMgcmVzdGFydGVkLCBidXQgbm90IHRoZSBlbnRpcmUKKyAgICAgICAgICAgIC8vIHN5c3RlbSwgdGhlbiB0aGUgbUhpc3RvcnlCYXNlVGltZSBhbHJlYWR5IGFjY291bnRzIGZvcgorICAgICAgICAgICAgLy8gbXVjaCBvZiB0aGUgZWxhcHNlZCB0aW1lLiAgV2UgdGh1cyB3YW50IHRvIGFkanVzdCBpdCBiYWNrLAorICAgICAgICAgICAgLy8gdG8gYXZvaWQgbGFyZ2UgZ2FwcyBpbiB0aGUgZGF0YS4gIFdlIGRldGVybWluZSB3ZSBhcmUKKyAgICAgICAgICAgIC8vIGluIHRoaXMgY2FzZSBieSBhcmJpdHJhcmlseSBzYXlpbmcgaXQgaXMgc28gaWYgYXQgdGhpcworICAgICAgICAgICAgLy8gcG9pbnQgaW4gYm9vdCB0aGUgZWxhcHNlZCB0aW1lIGlzIGFscmVhZHkgbW9yZSB0aGFuIDUgc2Vjb25kcy4KKyAgICAgICAgICAgIG1IaXN0b3J5QmFzZVRpbWUgLT0gb2xkbm93OworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHZvaWQgd3JpdGVIaXN0b3J5KFBhcmNlbCBvdXQpIHsKKyAgICAgICAgSGlzdG9yeUl0ZW0gcmVjID0gbUhpc3Rvcnk7CisgICAgICAgIHdoaWxlIChyZWMgIT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKHJlYy50aW1lID49IDApIHJlYy53cml0ZVRvUGFyY2VsKG91dCwgMCk7CisgICAgICAgICAgICByZWMgPSByZWMubmV4dDsKKyAgICAgICAgfQorICAgICAgICBvdXQud3JpdGVMb25nKC0xKTsKKyAgICB9CisgICAgCiAgICAgcHJpdmF0ZSB2b2lkIHJlYWRTdW1tYXJ5RnJvbVBhcmNlbChQYXJjZWwgaW4pIHsKICAgICAgICAgZmluYWwgaW50IHZlcnNpb24gPSBpbi5yZWFkSW50KCk7CiAgICAgICAgIGlmICh2ZXJzaW9uICE9IFZFUlNJT04pIHsKQEAgLTMxNTQsNiArMzkyMiw4IEBACiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAorICAgICAgICByZWFkSGlzdG9yeShpbik7CisgICAgICAgIAogICAgICAgICBtU3RhcnRDb3VudCA9IGluLnJlYWRJbnQoKTsKICAgICAgICAgbUJhdHRlcnlVcHRpbWUgPSBpbi5yZWFkTG9uZygpOwogICAgICAgICBtQmF0dGVyeUxhc3RVcHRpbWUgPSBpbi5yZWFkTG9uZygpOwpAQCAtMzE2Myw3ICszOTMzLDcgQEAKICAgICAgICAgbUxhc3RVcHRpbWUgPSBpbi5yZWFkTG9uZygpOwogICAgICAgICBtUmVhbHRpbWUgPSBpbi5yZWFkTG9uZygpOwogICAgICAgICBtTGFzdFJlYWx0aW1lID0gaW4ucmVhZExvbmcoKTsKLSAgICAgICAgbURpc2NoYXJnZVN0YXJ0TGV2ZWwgPSBpbi5yZWFkSW50KCk7CisgICAgICAgIG1EaXNjaGFyZ2VVbnBsdWdMZXZlbCA9IGluLnJlYWRJbnQoKTsKICAgICAgICAgbURpc2NoYXJnZUN1cnJlbnRMZXZlbCA9IGluLnJlYWRJbnQoKTsKICAgICAgICAgCiAgICAgICAgIG1TdGFydENvdW50Kys7CkBAIC0zMjE1LDE3ICszOTg1LDI5IEBACiAgICAgICAgICAgICBtVWlkU3RhdHMucHV0KHVpZCwgdSk7CiAKICAgICAgICAgICAgIHUubVdpZmlUdXJuZWRPbiA9IGZhbHNlOwotICAgICAgICAgICAgdS5tV2lmaVR1cm5lZE9uVGltZXIucmVhZFN1bW1hcnlGcm9tUGFyY2VsTG9ja2VkKGluKTsKKyAgICAgICAgICAgIGlmIChpbi5yZWFkSW50KCkgIT0gMCkgeworICAgICAgICAgICAgICAgIHUubVdpZmlUdXJuZWRPblRpbWVyLnJlYWRTdW1tYXJ5RnJvbVBhcmNlbExvY2tlZChpbik7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICB1Lm1GdWxsV2lmaUxvY2tPdXQgPSBmYWxzZTsKLSAgICAgICAgICAgIHUubUZ1bGxXaWZpTG9ja1RpbWVyLnJlYWRTdW1tYXJ5RnJvbVBhcmNlbExvY2tlZChpbik7Ci0gICAgICAgICAgICB1Lm1BdWRpb1R1cm5lZE9uID0gZmFsc2U7Ci0gICAgICAgICAgICB1Lm1BdWRpb1R1cm5lZE9uVGltZXIucmVhZFN1bW1hcnlGcm9tUGFyY2VsTG9ja2VkKGluKTsKLSAgICAgICAgICAgIHUubVZpZGVvVHVybmVkT24gPSBmYWxzZTsKLSAgICAgICAgICAgIHUubVZpZGVvVHVybmVkT25UaW1lci5yZWFkU3VtbWFyeUZyb21QYXJjZWxMb2NrZWQoaW4pOworICAgICAgICAgICAgaWYgKGluLnJlYWRJbnQoKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgdS5tRnVsbFdpZmlMb2NrVGltZXIucmVhZFN1bW1hcnlGcm9tUGFyY2VsTG9ja2VkKGluKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHUubVNjYW5XaWZpTG9ja091dCA9IGZhbHNlOwotICAgICAgICAgICAgdS5tU2NhbldpZmlMb2NrVGltZXIucmVhZFN1bW1hcnlGcm9tUGFyY2VsTG9ja2VkKGluKTsKKyAgICAgICAgICAgIGlmIChpbi5yZWFkSW50KCkgIT0gMCkgeworICAgICAgICAgICAgICAgIHUubVNjYW5XaWZpTG9ja1RpbWVyLnJlYWRTdW1tYXJ5RnJvbVBhcmNlbExvY2tlZChpbik7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICB1Lm1XaWZpTXVsdGljYXN0RW5hYmxlZCA9IGZhbHNlOwotICAgICAgICAgICAgdS5tV2lmaU11bHRpY2FzdFRpbWVyLnJlYWRTdW1tYXJ5RnJvbVBhcmNlbExvY2tlZChpbik7CisgICAgICAgICAgICBpZiAoaW4ucmVhZEludCgpICE9IDApIHsKKyAgICAgICAgICAgICAgICB1Lm1XaWZpTXVsdGljYXN0VGltZXIucmVhZFN1bW1hcnlGcm9tUGFyY2VsTG9ja2VkKGluKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHUubUF1ZGlvVHVybmVkT24gPSBmYWxzZTsKKyAgICAgICAgICAgIGlmIChpbi5yZWFkSW50KCkgIT0gMCkgeworICAgICAgICAgICAgICAgIHUubUF1ZGlvVHVybmVkT25UaW1lci5yZWFkU3VtbWFyeUZyb21QYXJjZWxMb2NrZWQoaW4pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdS5tVmlkZW9UdXJuZWRPbiA9IGZhbHNlOworICAgICAgICAgICAgaWYgKGluLnJlYWRJbnQoKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgdS5tVmlkZW9UdXJuZWRPblRpbWVyLnJlYWRTdW1tYXJ5RnJvbVBhcmNlbExvY2tlZChpbik7CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChpbi5yZWFkSW50KCkgIT0gMCkgewogICAgICAgICAgICAgICAgIGlmICh1Lm1Vc2VyQWN0aXZpdHlDb3VudGVycyA9PSBudWxsKSB7CkBAIC0zMzI1LDE2ICs0MTA3LDE4IEBACiAKICAgICAgICAgb3V0LndyaXRlSW50KFZFUlNJT04pOwogCisgICAgICAgIHdyaXRlSGlzdG9yeShvdXQpOworICAgICAgICAKICAgICAgICAgb3V0LndyaXRlSW50KG1TdGFydENvdW50KTsKLSAgICAgICAgb3V0LndyaXRlTG9uZyhjb21wdXRlQmF0dGVyeVVwdGltZShOT1dfU1lTLCBTVEFUU19UT1RBTCkpOworICAgICAgICBvdXQud3JpdGVMb25nKGNvbXB1dGVCYXR0ZXJ5VXB0aW1lKE5PV19TWVMsIFNUQVRTX1NJTkNFX0NIQVJHRUQpKTsKICAgICAgICAgb3V0LndyaXRlTG9uZyhjb21wdXRlQmF0dGVyeVVwdGltZShOT1dfU1lTLCBTVEFUU19DVVJSRU5UKSk7Ci0gICAgICAgIG91dC53cml0ZUxvbmcoY29tcHV0ZUJhdHRlcnlSZWFsdGltZShOT1dSRUFMX1NZUywgU1RBVFNfVE9UQUwpKTsKKyAgICAgICAgb3V0LndyaXRlTG9uZyhjb21wdXRlQmF0dGVyeVJlYWx0aW1lKE5PV1JFQUxfU1lTLCBTVEFUU19TSU5DRV9DSEFSR0VEKSk7CiAgICAgICAgIG91dC53cml0ZUxvbmcoY29tcHV0ZUJhdHRlcnlSZWFsdGltZShOT1dSRUFMX1NZUywgU1RBVFNfQ1VSUkVOVCkpOwotICAgICAgICBvdXQud3JpdGVMb25nKGNvbXB1dGVVcHRpbWUoTk9XX1NZUywgU1RBVFNfVE9UQUwpKTsKKyAgICAgICAgb3V0LndyaXRlTG9uZyhjb21wdXRlVXB0aW1lKE5PV19TWVMsIFNUQVRTX1NJTkNFX0NIQVJHRUQpKTsKICAgICAgICAgb3V0LndyaXRlTG9uZyhjb21wdXRlVXB0aW1lKE5PV19TWVMsIFNUQVRTX0NVUlJFTlQpKTsKLSAgICAgICAgb3V0LndyaXRlTG9uZyhjb21wdXRlUmVhbHRpbWUoTk9XUkVBTF9TWVMsIFNUQVRTX1RPVEFMKSk7CisgICAgICAgIG91dC53cml0ZUxvbmcoY29tcHV0ZVJlYWx0aW1lKE5PV1JFQUxfU1lTLCBTVEFUU19TSU5DRV9DSEFSR0VEKSk7CiAgICAgICAgIG91dC53cml0ZUxvbmcoY29tcHV0ZVJlYWx0aW1lKE5PV1JFQUxfU1lTLCBTVEFUU19DVVJSRU5UKSk7Ci0gICAgICAgIG91dC53cml0ZUludChtRGlzY2hhcmdlU3RhcnRMZXZlbCk7CisgICAgICAgIG91dC53cml0ZUludChtRGlzY2hhcmdlVW5wbHVnTGV2ZWwpOwogICAgICAgICBvdXQud3JpdGVJbnQobURpc2NoYXJnZUN1cnJlbnRMZXZlbCk7CiAgICAgICAgIAogICAgICAgICAKQEAgLTMzNzQsMTIgKzQxNTgsNDIgQEAKICAgICAgICAgICAgIG91dC53cml0ZUludChtVWlkU3RhdHMua2V5QXQoaXUpKTsKICAgICAgICAgICAgIFVpZCB1ID0gbVVpZFN0YXRzLnZhbHVlQXQoaXUpOwogICAgICAgICAgICAgCi0gICAgICAgICAgICB1Lm1XaWZpVHVybmVkT25UaW1lci53cml0ZVN1bW1hcnlGcm9tUGFyY2VsTG9ja2VkKG91dCwgTk9XUkVBTCk7Ci0gICAgICAgICAgICB1Lm1GdWxsV2lmaUxvY2tUaW1lci53cml0ZVN1bW1hcnlGcm9tUGFyY2VsTG9ja2VkKG91dCwgTk9XUkVBTCk7Ci0gICAgICAgICAgICB1Lm1BdWRpb1R1cm5lZE9uVGltZXIud3JpdGVTdW1tYXJ5RnJvbVBhcmNlbExvY2tlZChvdXQsIE5PV1JFQUwpOwotICAgICAgICAgICAgdS5tVmlkZW9UdXJuZWRPblRpbWVyLndyaXRlU3VtbWFyeUZyb21QYXJjZWxMb2NrZWQob3V0LCBOT1dSRUFMKTsKLSAgICAgICAgICAgIHUubVNjYW5XaWZpTG9ja1RpbWVyLndyaXRlU3VtbWFyeUZyb21QYXJjZWxMb2NrZWQob3V0LCBOT1dSRUFMKTsKLSAgICAgICAgICAgIHUubVdpZmlNdWx0aWNhc3RUaW1lci53cml0ZVN1bW1hcnlGcm9tUGFyY2VsTG9ja2VkKG91dCwgTk9XUkVBTCk7CisgICAgICAgICAgICBpZiAodS5tV2lmaVR1cm5lZE9uVGltZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIG91dC53cml0ZUludCgxKTsKKyAgICAgICAgICAgICAgICB1Lm1XaWZpVHVybmVkT25UaW1lci53cml0ZVN1bW1hcnlGcm9tUGFyY2VsTG9ja2VkKG91dCwgTk9XUkVBTCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG91dC53cml0ZUludCgwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh1Lm1GdWxsV2lmaUxvY2tUaW1lciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgb3V0LndyaXRlSW50KDEpOworICAgICAgICAgICAgICAgIHUubUZ1bGxXaWZpTG9ja1RpbWVyLndyaXRlU3VtbWFyeUZyb21QYXJjZWxMb2NrZWQob3V0LCBOT1dSRUFMKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgb3V0LndyaXRlSW50KDApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHUubVNjYW5XaWZpTG9ja1RpbWVyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBvdXQud3JpdGVJbnQoMSk7CisgICAgICAgICAgICAgICAgdS5tU2NhbldpZmlMb2NrVGltZXIud3JpdGVTdW1tYXJ5RnJvbVBhcmNlbExvY2tlZChvdXQsIE5PV1JFQUwpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBvdXQud3JpdGVJbnQoMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodS5tV2lmaU11bHRpY2FzdFRpbWVyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBvdXQud3JpdGVJbnQoMSk7CisgICAgICAgICAgICAgICAgdS5tV2lmaU11bHRpY2FzdFRpbWVyLndyaXRlU3VtbWFyeUZyb21QYXJjZWxMb2NrZWQob3V0LCBOT1dSRUFMKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgb3V0LndyaXRlSW50KDApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHUubUF1ZGlvVHVybmVkT25UaW1lciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgb3V0LndyaXRlSW50KDEpOworICAgICAgICAgICAgICAgIHUubUF1ZGlvVHVybmVkT25UaW1lci53cml0ZVN1bW1hcnlGcm9tUGFyY2VsTG9ja2VkKG91dCwgTk9XUkVBTCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG91dC53cml0ZUludCgwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh1Lm1WaWRlb1R1cm5lZE9uVGltZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIG91dC53cml0ZUludCgxKTsKKyAgICAgICAgICAgICAgICB1Lm1WaWRlb1R1cm5lZE9uVGltZXIud3JpdGVTdW1tYXJ5RnJvbVBhcmNlbExvY2tlZChvdXQsIE5PV1JFQUwpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBvdXQud3JpdGVJbnQoMCk7CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICh1Lm1Vc2VyQWN0aXZpdHlDb3VudGVycyA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgb3V0LndyaXRlSW50KDApOwpAQCAtMzQ3OCw4ICs0MjkyLDggQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICAKLSAgICAgICAgICAgIG91dC53cml0ZUxvbmcodS5nZXRUY3BCeXRlc1JlY2VpdmVkKFNUQVRTX1RPVEFMKSk7Ci0gICAgICAgICAgICBvdXQud3JpdGVMb25nKHUuZ2V0VGNwQnl0ZXNTZW50KFNUQVRTX1RPVEFMKSk7CisgICAgICAgICAgICBvdXQud3JpdGVMb25nKHUuZ2V0VGNwQnl0ZXNSZWNlaXZlZChTVEFUU19TSU5DRV9DSEFSR0VEKSk7CisgICAgICAgICAgICBvdXQud3JpdGVMb25nKHUuZ2V0VGNwQnl0ZXNTZW50KFNUQVRTX1NJTkNFX0NIQVJHRUQpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMzQ5Myw2ICs0MzA3LDggQEAKICAgICAgICAgICAgIHRocm93IG5ldyBQYXJjZWxGb3JtYXRFeGNlcHRpb24oIkJhZCBtYWdpYyBudW1iZXIiKTsKICAgICAgICAgfQogCisgICAgICAgIHJlYWRIaXN0b3J5KGluKTsKKyAgICAgICAgCiAgICAgICAgIG1TdGFydENvdW50ID0gaW4ucmVhZEludCgpOwogICAgICAgICBtQmF0dGVyeVVwdGltZSA9IGluLnJlYWRMb25nKCk7CiAgICAgICAgIG1CYXR0ZXJ5TGFzdFVwdGltZSA9IGluLnJlYWRMb25nKCk7CkBAIC0zNTMzLDE4ICs0MzQ5LDE4IEBACiAgICAgICAgIG1UcmFja0JhdHRlcnlSZWFsdGltZVN0YXJ0ID0gaW4ucmVhZExvbmcoKTsKICAgICAgICAgbVVucGx1Z2dlZEJhdHRlcnlVcHRpbWUgPSBpbi5yZWFkTG9uZygpOwogICAgICAgICBtVW5wbHVnZ2VkQmF0dGVyeVJlYWx0aW1lID0gaW4ucmVhZExvbmcoKTsKLSAgICAgICAgbURpc2NoYXJnZVN0YXJ0TGV2ZWwgPSBpbi5yZWFkSW50KCk7CisgICAgICAgIG1EaXNjaGFyZ2VVbnBsdWdMZXZlbCA9IGluLnJlYWRJbnQoKTsKICAgICAgICAgbURpc2NoYXJnZUN1cnJlbnRMZXZlbCA9IGluLnJlYWRJbnQoKTsKICAgICAgICAgbUxhc3RXcml0ZVRpbWUgPSBpbi5yZWFkTG9uZygpOwogCiAgICAgICAgIG1Nb2JpbGVEYXRhUnhbU1RBVFNfTEFTVF0gPSBpbi5yZWFkTG9uZygpOwotICAgICAgICBtTW9iaWxlRGF0YVJ4W1NUQVRTX1VOUExVR0dFRF0gPSAtMTsKKyAgICAgICAgbU1vYmlsZURhdGFSeFtTVEFUU19TSU5DRV9VTlBMVUdHRURdID0gLTE7CiAgICAgICAgIG1Nb2JpbGVEYXRhVHhbU1RBVFNfTEFTVF0gPSBpbi5yZWFkTG9uZygpOwotICAgICAgICBtTW9iaWxlRGF0YVR4W1NUQVRTX1VOUExVR0dFRF0gPSAtMTsKKyAgICAgICAgbU1vYmlsZURhdGFUeFtTVEFUU19TSU5DRV9VTlBMVUdHRURdID0gLTE7CiAgICAgICAgIG1Ub3RhbERhdGFSeFtTVEFUU19MQVNUXSA9IGluLnJlYWRMb25nKCk7Ci0gICAgICAgIG1Ub3RhbERhdGFSeFtTVEFUU19VTlBMVUdHRURdID0gLTE7CisgICAgICAgIG1Ub3RhbERhdGFSeFtTVEFUU19TSU5DRV9VTlBMVUdHRURdID0gLTE7CiAgICAgICAgIG1Ub3RhbERhdGFUeFtTVEFUU19MQVNUXSA9IGluLnJlYWRMb25nKCk7Ci0gICAgICAgIG1Ub3RhbERhdGFUeFtTVEFUU19VTlBMVUdHRURdID0gLTE7CisgICAgICAgIG1Ub3RhbERhdGFUeFtTVEFUU19TSU5DRV9VTlBMVUdHRURdID0gLTE7CiAKICAgICAgICAgbVJhZGlvRGF0YVVwdGltZSA9IGluLnJlYWRMb25nKCk7CiAgICAgICAgIG1SYWRpb0RhdGFTdGFydCA9IC0xOwpAQCAtMzU5MSw2ICs0NDA3LDkgQEAKICAgICAgICAgZmluYWwgbG9uZyBiYXR0ZXJ5UmVhbHRpbWUgPSBnZXRCYXR0ZXJ5UmVhbHRpbWVMb2NrZWQodVNlY1JlYWx0aW1lKTsKICAgICAgICAgCiAgICAgICAgIG91dC53cml0ZUludChNQUdJQyk7CisgICAgICAgIAorICAgICAgICB3cml0ZUhpc3Rvcnkob3V0KTsKKyAgICAgICAgCiAgICAgICAgIG91dC53cml0ZUludChtU3RhcnRDb3VudCk7CiAgICAgICAgIG91dC53cml0ZUxvbmcobUJhdHRlcnlVcHRpbWUpOwogICAgICAgICBvdXQud3JpdGVMb25nKG1CYXR0ZXJ5TGFzdFVwdGltZSk7CkBAIC0zNjI1LDE0ICs0NDQ0LDE0IEBACiAgICAgICAgIG91dC53cml0ZUxvbmcobVRyYWNrQmF0dGVyeVJlYWx0aW1lU3RhcnQpOwogICAgICAgICBvdXQud3JpdGVMb25nKG1VbnBsdWdnZWRCYXR0ZXJ5VXB0aW1lKTsKICAgICAgICAgb3V0LndyaXRlTG9uZyhtVW5wbHVnZ2VkQmF0dGVyeVJlYWx0aW1lKTsKLSAgICAgICAgb3V0LndyaXRlSW50KG1EaXNjaGFyZ2VTdGFydExldmVsKTsKKyAgICAgICAgb3V0LndyaXRlSW50KG1EaXNjaGFyZ2VVbnBsdWdMZXZlbCk7CiAgICAgICAgIG91dC53cml0ZUludChtRGlzY2hhcmdlQ3VycmVudExldmVsKTsKICAgICAgICAgb3V0LndyaXRlTG9uZyhtTGFzdFdyaXRlVGltZSk7CiAKLSAgICAgICAgb3V0LndyaXRlTG9uZyhnZXRNb2JpbGVUY3BCeXRlc1JlY2VpdmVkKFNUQVRTX1VOUExVR0dFRCkpOwotICAgICAgICBvdXQud3JpdGVMb25nKGdldE1vYmlsZVRjcEJ5dGVzU2VudChTVEFUU19VTlBMVUdHRUQpKTsKLSAgICAgICAgb3V0LndyaXRlTG9uZyhnZXRUb3RhbFRjcEJ5dGVzUmVjZWl2ZWQoU1RBVFNfVU5QTFVHR0VEKSk7Ci0gICAgICAgIG91dC53cml0ZUxvbmcoZ2V0VG90YWxUY3BCeXRlc1NlbnQoU1RBVFNfVU5QTFVHR0VEKSk7CisgICAgICAgIG91dC53cml0ZUxvbmcoZ2V0TW9iaWxlVGNwQnl0ZXNSZWNlaXZlZChTVEFUU19TSU5DRV9VTlBMVUdHRUQpKTsKKyAgICAgICAgb3V0LndyaXRlTG9uZyhnZXRNb2JpbGVUY3BCeXRlc1NlbnQoU1RBVFNfU0lOQ0VfVU5QTFVHR0VEKSk7CisgICAgICAgIG91dC53cml0ZUxvbmcoZ2V0VG90YWxUY3BCeXRlc1JlY2VpdmVkKFNUQVRTX1NJTkNFX1VOUExVR0dFRCkpOworICAgICAgICBvdXQud3JpdGVMb25nKGdldFRvdGFsVGNwQnl0ZXNTZW50KFNUQVRTX1NJTkNFX1VOUExVR0dFRCkpOwogCiAgICAgICAgIC8vIFdyaXRlIHJhZGlvIHVwdGltZSBmb3IgZGF0YQogICAgICAgICBvdXQud3JpdGVMb25nKGdldFJhZGlvRGF0YVVwdGltZSgpKTsKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9vcy9Qb3dlclByb2ZpbGUuamF2YSBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9vcy9Qb3dlclByb2ZpbGUuamF2YQppbmRleCAyMzY5ZDI1Li4xMjdlZDY4IDEwMDY0NAotLS0gYS9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvb3MvUG93ZXJQcm9maWxlLmphdmEKKysrIGIvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL29zL1Bvd2VyUHJvZmlsZS5qYXZhCkBAIC0xMjYsNiArMTI2LDExIEBACiAKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBQT1dFUl9DUFVfU1BFRURTID0gImNwdS5zcGVlZHMiOwogCisgICAgLyoqCisgICAgICogQmF0dGVyeSBjYXBhY2l0eSBpbiBtaWxsaUFtcEhvdXIgKG1BaCkuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgUE9XRVJfQkFUVEVSWV9DQVBBQ0lUWSA9ICJiYXR0ZXJ5LmNhcGFjaXR5IjsKKwogICAgIHN0YXRpYyBmaW5hbCBIYXNoTWFwPFN0cmluZywgT2JqZWN0PiBzUG93ZXJNYXAgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIE9iamVjdD4oKTsKIAogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUdfREVWSUNFID0gImRldmljZSI7CkBAIC0yNDMsNiArMjQ4LDE5IEBACiAgICAgICAgIH0KICAgICB9CiAKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBiYXR0ZXJ5IGNhcGFjaXR5LCBpZiBhdmFpbGFibGUsIGluIG1pbGxpIEFtcCBIb3Vycy4gSWYgbm90IGF2YWlsYWJsZSwKKyAgICAgKiBpdCByZXR1cm5zIHplcm8uCisgICAgICogQHJldHVybiB0aGUgYmF0dGVyeSBjYXBhY2l0eSBpbiBtQWgKKyAgICAgKi8KKyAgICBwdWJsaWMgZG91YmxlIGdldEJhdHRlcnlDYXBhY2l0eSgpIHsKKyAgICAgICAgcmV0dXJuIGdldEF2ZXJhZ2VQb3dlcihQT1dFUl9CQVRURVJZX0NBUEFDSVRZKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBudW1iZXIgb2Ygc3BlZWRzIHRoYXQgdGhlIENQVSBjYW4gYmUgcnVuIGF0LgorICAgICAqIEByZXR1cm4KKyAgICAgKi8KICAgICBwdWJsaWMgaW50IGdldE51bVNwZWVkU3RlcHMoKSB7CiAgICAgICAgIE9iamVjdCB2YWx1ZSA9IHNQb3dlck1hcC5nZXQoUE9XRVJfQ1BVX1NQRUVEUyk7CiAgICAgICAgIGlmICh2YWx1ZSAhPSBudWxsICYmIHZhbHVlIGluc3RhbmNlb2YgRG91YmxlW10pIHsKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9vcy9SdW50aW1lSW5pdC5qYXZhIGIvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL29zL1J1bnRpbWVJbml0LmphdmEKaW5kZXggNTk5YTdmZS4uNTk2MDBkYyAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL29zL1J1bnRpbWVJbml0LmphdmEKKysrIGIvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL29zL1J1bnRpbWVJbml0LmphdmEKQEAgLTM0Miw2ICszNDIsMTAgQEAKICAgICAgICAgbUFwcGxpY2F0aW9uT2JqZWN0ID0gYXBwOwogICAgIH0KIAorICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgSUJpbmRlciBnZXRBcHBsaWNhdGlvbk9iamVjdCgpIHsKKyAgICAgICAgcmV0dXJuIG1BcHBsaWNhdGlvbk9iamVjdDsKKyAgICB9CisKICAgICAvKioKICAgICAgKiBFbmFibGUgZGVidWdnaW5nIGZlYXR1cmVzLgogICAgICAqLwpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3N0YXR1c2Jhci9JU3RhdHVzQmFyLmFpZGwgYi9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvc3RhdHVzYmFyL0lTdGF0dXNCYXIuYWlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTAxYmQ3Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3N0YXR1c2Jhci9JU3RhdHVzQmFyLmFpZGwKQEAgLTAsMCArMSwzNCBAQAorLyoqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDcsIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsgCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIAorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0IAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAgCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZSAKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsIAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIAorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCAKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisgCitwYWNrYWdlIGNvbS5hbmRyb2lkLmludGVybmFsLnN0YXR1c2JhcjsKKworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnN0YXR1c2Jhci5TdGF0dXNCYXJJY29uOworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnN0YXR1c2Jhci5TdGF0dXNCYXJOb3RpZmljYXRpb247CisKKy8qKiBAaGlkZSAqLworb25ld2F5IGludGVyZmFjZSBJU3RhdHVzQmFyCit7CisgICAgdm9pZCBzZXRJY29uKGludCBpbmRleCwgaW4gU3RhdHVzQmFySWNvbiBpY29uKTsKKyAgICB2b2lkIHJlbW92ZUljb24oaW50IGluZGV4KTsKKyAgICB2b2lkIGFkZE5vdGlmaWNhdGlvbihJQmluZGVyIGtleSwgaW4gU3RhdHVzQmFyTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbik7CisgICAgdm9pZCB1cGRhdGVOb3RpZmljYXRpb24oSUJpbmRlciBrZXksIGluIFN0YXR1c0Jhck5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pOworICAgIHZvaWQgcmVtb3ZlTm90aWZpY2F0aW9uKElCaW5kZXIga2V5KTsKKyAgICB2b2lkIGRpc2FibGUoaW50IHN0YXRlKTsKKyAgICB2b2lkIGFuaW1hdGVFeHBhbmQoKTsKKyAgICB2b2lkIGFuaW1hdGVDb2xsYXBzZSgpOworfQorCmRpZmYgLS1naXQgYS9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvc3RhdHVzYmFyL0lTdGF0dXNCYXJTZXJ2aWNlLmFpZGwgYi9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvc3RhdHVzYmFyL0lTdGF0dXNCYXJTZXJ2aWNlLmFpZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODUyNjMwZAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9zdGF0dXNiYXIvSVN0YXR1c0JhclNlcnZpY2UuYWlkbApAQCAtMCwwICsxLDQzIEBACisvKioKKyAqIENvcHlyaWdodCAoYykgMjAwNywgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOyAKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQgCisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMCAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlIAorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywgCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKyAKK3BhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwuc3RhdHVzYmFyOworCitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuc3RhdHVzYmFyLklTdGF0dXNCYXI7CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuc3RhdHVzYmFyLlN0YXR1c0Jhckljb247CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuc3RhdHVzYmFyLlN0YXR1c0Jhckljb25MaXN0OworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnN0YXR1c2Jhci5TdGF0dXNCYXJOb3RpZmljYXRpb247CisKKy8qKiBAaGlkZSAqLworaW50ZXJmYWNlIElTdGF0dXNCYXJTZXJ2aWNlCit7CisgICAgdm9pZCBleHBhbmQoKTsKKyAgICB2b2lkIGNvbGxhcHNlKCk7CisgICAgdm9pZCBkaXNhYmxlKGludCB3aGF0LCBJQmluZGVyIHRva2VuLCBTdHJpbmcgcGtnKTsKKyAgICB2b2lkIHNldEljb24oU3RyaW5nIHNsb3QsIFN0cmluZyBpY29uUGFja2FnZSwgaW50IGljb25JZCwgaW50IGljb25MZXZlbCk7CisgICAgdm9pZCBzZXRJY29uVmlzaWJpbGl0eShTdHJpbmcgc2xvdCwgYm9vbGVhbiB2aXNpYmxlKTsKKyAgICB2b2lkIHJlbW92ZUljb24oU3RyaW5nIHNsb3QpOworCisgICAgLy8gLS0tLSBNZXRob2RzIGJlbG93IGFyZSBmb3IgdXNlIGJ5IHRoZSBzdGF0dXMgYmFyIHBvbGljeSBzZXJ2aWNlcyAtLS0tCisgICAgLy8gWW91IG5lZWQgdGhlIFNUQVRVU19CQVJfU0VSVklDRSBwZXJtaXNzaW9uCisgICAgdm9pZCByZWdpc3RlclN0YXR1c0JhcihJU3RhdHVzQmFyIGNhbGxiYWNrcywgb3V0IFN0YXR1c0Jhckljb25MaXN0IGljb25MaXN0LAorICAgICAgICAgICAgb3V0IExpc3Q8SUJpbmRlcj4gbm90aWZpY2F0aW9uS2V5cywgb3V0IExpc3Q8U3RhdHVzQmFyTm90aWZpY2F0aW9uPiBub3RpZmljYXRpb25zKTsKKyAgICB2b2lkIG9uUGFuZWxSZXZlYWxlZCgpOworICAgIHZvaWQgb25Ob3RpZmljYXRpb25DbGljayhTdHJpbmcgcGtnLCBTdHJpbmcgdGFnLCBpbnQgaWQpOworICAgIHZvaWQgb25Ob3RpZmljYXRpb25FcnJvcihTdHJpbmcgcGtnLCBTdHJpbmcgdGFnLCBpbnQgaWQsCisgICAgICAgICAgICBpbnQgdWlkLCBpbnQgaW5pdGlhbFBpZCwgU3RyaW5nIG1lc3NhZ2UpOworICAgIHZvaWQgb25DbGVhckFsbE5vdGlmaWNhdGlvbnMoKTsKK30KZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9zdGF0dXNiYXIvU3RhdHVzQmFySWNvbi5haWRsIGIvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3N0YXR1c2Jhci9TdGF0dXNCYXJJY29uLmFpZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzExYTA3NwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9zdGF0dXNiYXIvU3RhdHVzQmFySWNvbi5haWRsCkBAIC0wLDAgKzEsMjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTAsIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsgCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIAorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0IAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAgCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZSAKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsIAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIAorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCAKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwuc3RhdHVzYmFyOworCitwYXJjZWxhYmxlIFN0YXR1c0Jhckljb247CisKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9zdGF0dXNiYXIvU3RhdHVzQmFySWNvbi5qYXZhIGIvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3N0YXR1c2Jhci9TdGF0dXNCYXJJY29uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWUyY2FjMgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9zdGF0dXNiYXIvU3RhdHVzQmFySWNvbi5qYXZhCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5pbnRlcm5hbC5zdGF0dXNiYXI7CisKK2ltcG9ydCBhbmRyb2lkLm9zLlBhcmNlbDsKK2ltcG9ydCBhbmRyb2lkLm9zLlBhcmNlbGFibGU7CisKKy8qKgorICogQGhpZGUKKyAqLworcHVibGljIGNsYXNzIFN0YXR1c0Jhckljb24gaW1wbGVtZW50cyBQYXJjZWxhYmxlIHsKKyAgICBwdWJsaWMgU3RyaW5nIGljb25QYWNrYWdlOworICAgIHB1YmxpYyBpbnQgaWNvbklkOworICAgIHB1YmxpYyBpbnQgaWNvbkxldmVsOworICAgIHB1YmxpYyBib29sZWFuIHZpc2libGUgPSB0cnVlOworICAgIHB1YmxpYyBpbnQgbnVtYmVyOworCisgICAgcHJpdmF0ZSBTdGF0dXNCYXJJY29uKCkgeworICAgIH0KKworICAgIHB1YmxpYyBTdGF0dXNCYXJJY29uKFN0cmluZyBpY29uUGFja2FnZSwgaW50IGljb25JZCwgaW50IGljb25MZXZlbCkgeworICAgICAgICB0aGlzLmljb25QYWNrYWdlID0gaWNvblBhY2thZ2U7CisgICAgICAgIHRoaXMuaWNvbklkID0gaWNvbklkOworICAgICAgICB0aGlzLmljb25MZXZlbCA9IGljb25MZXZlbDsKKyAgICB9CisKKyAgICBwdWJsaWMgU3RhdHVzQmFySWNvbihTdHJpbmcgaWNvblBhY2thZ2UsIGludCBpY29uSWQsIGludCBpY29uTGV2ZWwsIGludCBudW1iZXIpIHsKKyAgICAgICAgdGhpcy5pY29uUGFja2FnZSA9IGljb25QYWNrYWdlOworICAgICAgICB0aGlzLmljb25JZCA9IGljb25JZDsKKyAgICAgICAgdGhpcy5pY29uTGV2ZWwgPSBpY29uTGV2ZWw7CisgICAgICAgIHRoaXMubnVtYmVyID0gbnVtYmVyOworICAgIH0KKworICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgIHJldHVybiAiU3RhdHVzQmFySWNvbihwa2c9IiArIHRoaXMuaWNvblBhY2thZ2UgKyAiIGlkPTB4IiArIEludGVnZXIudG9IZXhTdHJpbmcodGhpcy5pY29uSWQpCisgICAgICAgICAgICAgICAgKyAiIGxldmVsPSIgKyB0aGlzLmljb25MZXZlbCArICIgdmlzaWJsZT0iICsgdmlzaWJsZQorICAgICAgICAgICAgICAgICsgIiBudW09IiArIHRoaXMubnVtYmVyICsgIiApIjsKKyAgICB9CisKKyAgICBwdWJsaWMgU3RhdHVzQmFySWNvbiBjbG9uZSgpIHsKKyAgICAgICAgU3RhdHVzQmFySWNvbiB0aGF0ID0gbmV3IFN0YXR1c0Jhckljb24odGhpcy5pY29uUGFja2FnZSwgdGhpcy5pY29uSWQsIHRoaXMuaWNvbkxldmVsKTsKKyAgICAgICAgdGhhdC52aXNpYmxlID0gdGhpcy52aXNpYmxlOworICAgICAgICB0aGF0Lm51bWJlciA9IHRoaXMubnVtYmVyOworICAgICAgICByZXR1cm4gdGhhdDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBVbmZsYXR0ZW4gdGhlIFN0YXR1c0Jhckljb24gZnJvbSBhIHBhcmNlbC4KKyAgICAgKi8KKyAgICBwdWJsaWMgU3RhdHVzQmFySWNvbihQYXJjZWwgaW4pIHsKKyAgICAgICAgcmVhZEZyb21QYXJjZWwoaW4pOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHJlYWRGcm9tUGFyY2VsKFBhcmNlbCBpbikgeworICAgICAgICB0aGlzLmljb25QYWNrYWdlID0gaW4ucmVhZFN0cmluZygpOworICAgICAgICB0aGlzLmljb25JZCA9IGluLnJlYWRJbnQoKTsKKyAgICAgICAgdGhpcy5pY29uTGV2ZWwgPSBpbi5yZWFkSW50KCk7CisgICAgICAgIHRoaXMudmlzaWJsZSA9IGluLnJlYWRJbnQoKSAhPSAwOworICAgICAgICB0aGlzLm51bWJlciA9IGluLnJlYWRJbnQoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB3cml0ZVRvUGFyY2VsKFBhcmNlbCBvdXQsIGludCBmbGFncykgeworICAgICAgICBvdXQud3JpdGVTdHJpbmcodGhpcy5pY29uUGFja2FnZSk7CisgICAgICAgIG91dC53cml0ZUludCh0aGlzLmljb25JZCk7CisgICAgICAgIG91dC53cml0ZUludCh0aGlzLmljb25MZXZlbCk7CisgICAgICAgIG91dC53cml0ZUludCh0aGlzLnZpc2libGUgPyAxIDogMCk7CisgICAgICAgIG91dC53cml0ZUludCh0aGlzLm51bWJlcik7CisgICAgfQorCisgICAgcHVibGljIGludCBkZXNjcmliZUNvbnRlbnRzKCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQYXJjZWxhYmxlLkNyZWF0b3IgdGhhdCBpbnN0YW50aWF0ZXMgU3RhdHVzQmFySWNvbiBvYmplY3RzCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBQYXJjZWxhYmxlLkNyZWF0b3I8U3RhdHVzQmFySWNvbj4gQ1JFQVRPUgorICAgICAgICAgICAgPSBuZXcgUGFyY2VsYWJsZS5DcmVhdG9yPFN0YXR1c0Jhckljb24+KCkKKyAgICB7CisgICAgICAgIHB1YmxpYyBTdGF0dXNCYXJJY29uIGNyZWF0ZUZyb21QYXJjZWwoUGFyY2VsIHBhcmNlbCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIG5ldyBTdGF0dXNCYXJJY29uKHBhcmNlbCk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgU3RhdHVzQmFySWNvbltdIG5ld0FycmF5KGludCBzaXplKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbmV3IFN0YXR1c0Jhckljb25bc2l6ZV07CisgICAgICAgIH0KKyAgICB9OworfQorCmRpZmYgLS1naXQgYS9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvc3RhdHVzYmFyL1N0YXR1c0Jhckljb25MaXN0LmFpZGwgYi9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvc3RhdHVzYmFyL1N0YXR1c0Jhckljb25MaXN0LmFpZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzc0NTEyMAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9zdGF0dXNiYXIvU3RhdHVzQmFySWNvbkxpc3QuYWlkbApAQCAtMCwwICsxLDIwIEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDEwLCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7IAorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiAKKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdCAKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUgCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLCAKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAKKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLmludGVybmFsLnN0YXR1c2JhcjsKKworcGFyY2VsYWJsZSBTdGF0dXNCYXJJY29uTGlzdDsKKwpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3N0YXR1c2Jhci9TdGF0dXNCYXJJY29uTGlzdC5qYXZhIGIvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3N0YXR1c2Jhci9TdGF0dXNCYXJJY29uTGlzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3OGQyNDUKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvc3RhdHVzYmFyL1N0YXR1c0Jhckljb25MaXN0LmphdmEKQEAgLTAsMCArMSwxNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLmludGVybmFsLnN0YXR1c2JhcjsKKworaW1wb3J0IGFuZHJvaWQub3MuUGFyY2VsOworaW1wb3J0IGFuZHJvaWQub3MuUGFyY2VsYWJsZTsKKworaW1wb3J0IGphdmEuaW8uUHJpbnRXcml0ZXI7CisKK3B1YmxpYyBjbGFzcyBTdGF0dXNCYXJJY29uTGlzdCBpbXBsZW1lbnRzIFBhcmNlbGFibGUgeworICAgIHByaXZhdGUgU3RyaW5nW10gbVNsb3RzOworICAgIHByaXZhdGUgU3RhdHVzQmFySWNvbltdIG1JY29uczsKKworICAgIHB1YmxpYyBTdGF0dXNCYXJJY29uTGlzdCgpIHsKKyAgICB9CisKKyAgICBwdWJsaWMgU3RhdHVzQmFySWNvbkxpc3QoUGFyY2VsIGluKSB7CisgICAgICAgIHJlYWRGcm9tUGFyY2VsKGluKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgcmVhZEZyb21QYXJjZWwoUGFyY2VsIGluKSB7CisgICAgICAgIHRoaXMubVNsb3RzID0gaW4ucmVhZFN0cmluZ0FycmF5KCk7CisgICAgICAgIGZpbmFsIGludCBOID0gaW4ucmVhZEludCgpOworICAgICAgICBpZiAoTiA8IDApIHsKKyAgICAgICAgICAgIG1JY29ucyA9IG51bGw7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtSWNvbnMgPSBuZXcgU3RhdHVzQmFySWNvbltOXTsKKyAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxOOyBpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAoaW4ucmVhZEludCgpICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgbUljb25zW2ldID0gbmV3IFN0YXR1c0Jhckljb24oaW4pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHdyaXRlVG9QYXJjZWwoUGFyY2VsIG91dCwgaW50IGZsYWdzKSB7CisgICAgICAgIG91dC53cml0ZVN0cmluZ0FycmF5KG1TbG90cyk7CisgICAgICAgIGlmIChtSWNvbnMgPT0gbnVsbCkgeworICAgICAgICAgICAgb3V0LndyaXRlSW50KC0xKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZpbmFsIGludCBOID0gbUljb25zLmxlbmd0aDsKKyAgICAgICAgICAgIG91dC53cml0ZUludChOKTsKKyAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxOOyBpKyspIHsKKyAgICAgICAgICAgICAgICBTdGF0dXNCYXJJY29uIGljID0gbUljb25zW2ldOworICAgICAgICAgICAgICAgIGlmIChpYyA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIG91dC53cml0ZUludCgwKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBvdXQud3JpdGVJbnQoMSk7CisgICAgICAgICAgICAgICAgICAgIGljLndyaXRlVG9QYXJjZWwob3V0LCBmbGFncyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIGludCBkZXNjcmliZUNvbnRlbnRzKCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQYXJjZWxhYmxlLkNyZWF0b3IgdGhhdCBpbnN0YW50aWF0ZXMgU3RhdHVzQmFySWNvbkxpc3Qgb2JqZWN0cworICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgUGFyY2VsYWJsZS5DcmVhdG9yPFN0YXR1c0Jhckljb25MaXN0PiBDUkVBVE9SCisgICAgICAgICAgICA9IG5ldyBQYXJjZWxhYmxlLkNyZWF0b3I8U3RhdHVzQmFySWNvbkxpc3Q+KCkKKyAgICB7CisgICAgICAgIHB1YmxpYyBTdGF0dXNCYXJJY29uTGlzdCBjcmVhdGVGcm9tUGFyY2VsKFBhcmNlbCBwYXJjZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgU3RhdHVzQmFySWNvbkxpc3QocGFyY2VsKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBTdGF0dXNCYXJJY29uTGlzdFtdIG5ld0FycmF5KGludCBzaXplKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gbmV3IFN0YXR1c0Jhckljb25MaXN0W3NpemVdOworICAgICAgICB9CisgICAgfTsKKworICAgIHB1YmxpYyB2b2lkIGRlZmluZVNsb3RzKFN0cmluZ1tdIHNsb3RzKSB7CisgICAgICAgIGZpbmFsIGludCBOID0gc2xvdHMubGVuZ3RoOworICAgICAgICBTdHJpbmdbXSBzID0gbVNsb3RzID0gbmV3IFN0cmluZ1tOXTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPE47IGkrKykgeworICAgICAgICAgICAgc1tpXSA9IHNsb3RzW2ldOworICAgICAgICB9CisgICAgICAgIG1JY29ucyA9IG5ldyBTdGF0dXNCYXJJY29uW05dOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgZ2V0U2xvdEluZGV4KFN0cmluZyBzbG90KSB7CisgICAgICAgIGZpbmFsIGludCBOID0gbVNsb3RzLmxlbmd0aDsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPE47IGkrKykgeworICAgICAgICAgICAgaWYgKHNsb3QuZXF1YWxzKG1TbG90c1tpXSkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gaTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgcHVibGljIGludCBzaXplKCkgeworICAgICAgICByZXR1cm4gbVNsb3RzLmxlbmd0aDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRJY29uKGludCBpbmRleCwgU3RhdHVzQmFySWNvbiBpY29uKSB7CisgICAgICAgIG1JY29uc1tpbmRleF0gPSBpY29uLmNsb25lKCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgcmVtb3ZlSWNvbihpbnQgaW5kZXgpIHsKKyAgICAgICAgbUljb25zW2luZGV4XSA9IG51bGw7CisgICAgfQorCisgICAgcHVibGljIFN0cmluZyBnZXRTbG90KGludCBpbmRleCkgeworICAgICAgICByZXR1cm4gbVNsb3RzW2luZGV4XTsKKyAgICB9CisKKyAgICBwdWJsaWMgU3RhdHVzQmFySWNvbiBnZXRJY29uKGludCBpbmRleCkgeworICAgICAgICByZXR1cm4gbUljb25zW2luZGV4XTsKKyAgICB9CisKKyAgICBwdWJsaWMgaW50IGdldFZpZXdJbmRleChpbnQgaW5kZXgpIHsKKyAgICAgICAgaW50IGNvdW50ID0gMDsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPGluZGV4OyBpKyspIHsKKyAgICAgICAgICAgIGlmIChtSWNvbnNbaV0gIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGNvdW50Kys7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGNvdW50OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGNvcHlGcm9tKFN0YXR1c0Jhckljb25MaXN0IHRoYXQpIHsKKyAgICAgICAgaWYgKHRoYXQubVNsb3RzID09IG51bGwpIHsKKyAgICAgICAgICAgIHRoaXMubVNsb3RzID0gbnVsbDsKKyAgICAgICAgICAgIHRoaXMubUljb25zID0gbnVsbDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZpbmFsIGludCBOID0gdGhhdC5tU2xvdHMubGVuZ3RoOworICAgICAgICAgICAgdGhpcy5tU2xvdHMgPSBuZXcgU3RyaW5nW05dOworICAgICAgICAgICAgdGhpcy5tSWNvbnMgPSBuZXcgU3RhdHVzQmFySWNvbltOXTsKKyAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxOOyBpKyspIHsKKyAgICAgICAgICAgICAgICB0aGlzLm1TbG90c1tpXSA9IHRoYXQubVNsb3RzW2ldOworICAgICAgICAgICAgICAgIHRoaXMubUljb25zW2ldID0gdGhhdC5tSWNvbnNbaV0gIT0gbnVsbCA/IHRoYXQubUljb25zW2ldLmNsb25lKCkgOiBudWxsOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgZHVtcChQcmludFdyaXRlciBwdykgeworICAgICAgICBmaW5hbCBpbnQgTiA9IG1TbG90cy5sZW5ndGg7CisgICAgICAgIHB3LnByaW50bG4oIkljb24gbGlzdDoiKTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPE47IGkrKykgeworICAgICAgICAgICAgcHcucHJpbnRmKCIgICUyZDogKCVzKSAlc1xuIiwgaSwgbVNsb3RzW2ldLCBtSWNvbnNbaV0pOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3N0YXR1c2Jhci9TdGF0dXNCYXJOb3RpZmljYXRpb24uYWlkbCBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9zdGF0dXNiYXIvU3RhdHVzQmFyTm90aWZpY2F0aW9uLmFpZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQ5ZTg5YwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9zdGF0dXNiYXIvU3RhdHVzQmFyTm90aWZpY2F0aW9uLmFpZGwKQEAgLTAsMCArMSwyMCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMCwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOyAKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQgCisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMCAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlIAorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywgCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5pbnRlcm5hbC5zdGF0dXNiYXI7CisKK3BhcmNlbGFibGUgU3RhdHVzQmFyTm90aWZpY2F0aW9uOworCmRpZmYgLS1naXQgYS9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvc3RhdHVzYmFyL1N0YXR1c0Jhck5vdGlmaWNhdGlvbi5qYXZhIGIvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3N0YXR1c2Jhci9TdGF0dXNCYXJOb3RpZmljYXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYTM0MGZiCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3N0YXR1c2Jhci9TdGF0dXNCYXJOb3RpZmljYXRpb24uamF2YQpAQCAtMCwwICsxLDEyNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwuc3RhdHVzYmFyOworCitpbXBvcnQgYW5kcm9pZC5hcHAuTm90aWZpY2F0aW9uOworaW1wb3J0IGFuZHJvaWQub3MuUGFyY2VsOworaW1wb3J0IGFuZHJvaWQub3MuUGFyY2VsYWJsZTsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5SZW1vdGVWaWV3czsKKworCisvKgorYm9vbGVhbiBjbGVhcmFibGUgPSAhbi5vbmdvaW5nRXZlbnQgJiYgKChub3RpZmljYXRpb24uZmxhZ3MgJiBOb3RpZmljYXRpb24uRkxBR19OT19DTEVBUikgPT0gMCk7CisKKworLy8gVE9ETzogbWFrZSB0aGlzIHJlc3RyaWN0aW9uIGRvIHNvbWV0aGluZyBzbWFydGVyIGxpa2UgbmV2ZXIgZmlsbAorLy8gbW9yZSB0aGFuIHR3byBzY3JlZW5zLiAgIldoeSB3b3VsZCBhbnlvbmUgbmVlZCBtb3JlIHRoYW4gODAgY2hhcmFjdGVycy4iIDotLworZmluYWwgaW50IG1heFRpY2tlckxlbiA9IDgwOworaWYgKHRydW5jYXRlZFRpY2tlciAhPSBudWxsICYmIHRydW5jYXRlZFRpY2tlci5sZW5ndGgoKSA+IG1heFRpY2tlckxlbikgeworICAgIHRydW5jYXRlZFRpY2tlciA9IHRydW5jYXRlZFRpY2tlci5zdWJTZXF1ZW5jZSgwLCBtYXhUaWNrZXJMZW4pOworfQorKi8KKworcHVibGljIGNsYXNzIFN0YXR1c0Jhck5vdGlmaWNhdGlvbiBpbXBsZW1lbnRzIFBhcmNlbGFibGUgeworICAgIHB1YmxpYyBTdHJpbmcgcGtnOworICAgIHB1YmxpYyBpbnQgaWQ7CisgICAgcHVibGljIFN0cmluZyB0YWc7CisgICAgcHVibGljIGludCB1aWQ7CisgICAgcHVibGljIGludCBpbml0aWFsUGlkOworICAgIHB1YmxpYyBOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uOworCisgICAgcHVibGljIFN0YXR1c0Jhck5vdGlmaWNhdGlvbigpIHsKKyAgICB9CisKKyAgICBwdWJsaWMgU3RhdHVzQmFyTm90aWZpY2F0aW9uKFN0cmluZyBwa2csIGludCBpZCwgU3RyaW5nIHRhZywKKyAgICAgICAgICAgIGludCB1aWQsIGludCBpbml0aWFsUGlkLCBOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKSB7CisgICAgICAgIGlmIChwa2cgPT0gbnVsbCkgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCk7CisgICAgICAgIGlmIChub3RpZmljYXRpb24gPT0gbnVsbCkgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCk7CisKKyAgICAgICAgdGhpcy5wa2cgPSBwa2c7CisgICAgICAgIHRoaXMuaWQgPSBpZDsKKyAgICAgICAgdGhpcy50YWcgPSB0YWc7CisgICAgICAgIHRoaXMudWlkID0gdWlkOworICAgICAgICB0aGlzLmluaXRpYWxQaWQgPSBpbml0aWFsUGlkOworICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbiA9IG5vdGlmaWNhdGlvbjsKKyAgICB9CisKKyAgICBwdWJsaWMgU3RhdHVzQmFyTm90aWZpY2F0aW9uKFBhcmNlbCBpbikgeworICAgICAgICByZWFkRnJvbVBhcmNlbChpbik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgcmVhZEZyb21QYXJjZWwoUGFyY2VsIGluKSB7CisgICAgICAgIHRoaXMucGtnID0gaW4ucmVhZFN0cmluZygpOworICAgICAgICB0aGlzLmlkID0gaW4ucmVhZEludCgpOworICAgICAgICBpZiAoaW4ucmVhZEludCgpICE9IDApIHsKKyAgICAgICAgICAgIHRoaXMudGFnID0gaW4ucmVhZFN0cmluZygpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy50YWcgPSBudWxsOworICAgICAgICB9CisgICAgICAgIHRoaXMudWlkID0gaW4ucmVhZEludCgpOworICAgICAgICB0aGlzLmluaXRpYWxQaWQgPSBpbi5yZWFkSW50KCk7CisgICAgICAgIHRoaXMubm90aWZpY2F0aW9uID0gbmV3IE5vdGlmaWNhdGlvbihpbik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgd3JpdGVUb1BhcmNlbChQYXJjZWwgb3V0LCBpbnQgZmxhZ3MpIHsKKyAgICAgICAgb3V0LndyaXRlU3RyaW5nKHRoaXMucGtnKTsKKyAgICAgICAgb3V0LndyaXRlSW50KHRoaXMuaWQpOworICAgICAgICBpZiAodGhpcy50YWcgIT0gbnVsbCkgeworICAgICAgICAgICAgb3V0LndyaXRlSW50KDEpOworICAgICAgICAgICAgb3V0LndyaXRlU3RyaW5nKHRoaXMudGFnKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG91dC53cml0ZUludCgwKTsKKyAgICAgICAgfQorICAgICAgICBvdXQud3JpdGVJbnQodGhpcy51aWQpOworICAgICAgICBvdXQud3JpdGVJbnQodGhpcy5pbml0aWFsUGlkKTsKKyAgICAgICAgdGhpcy5ub3RpZmljYXRpb24ud3JpdGVUb1BhcmNlbChvdXQsIGZsYWdzKTsKKyAgICB9CisKKyAgICBwdWJsaWMgaW50IGRlc2NyaWJlQ29udGVudHMoKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgUGFyY2VsYWJsZS5DcmVhdG9yPFN0YXR1c0Jhck5vdGlmaWNhdGlvbj4gQ1JFQVRPUgorICAgICAgICAgICAgPSBuZXcgUGFyY2VsYWJsZS5DcmVhdG9yPFN0YXR1c0Jhck5vdGlmaWNhdGlvbj4oKQorICAgIHsKKyAgICAgICAgcHVibGljIFN0YXR1c0Jhck5vdGlmaWNhdGlvbiBjcmVhdGVGcm9tUGFyY2VsKFBhcmNlbCBwYXJjZWwpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgU3RhdHVzQmFyTm90aWZpY2F0aW9uKHBhcmNlbCk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgU3RhdHVzQmFyTm90aWZpY2F0aW9uW10gbmV3QXJyYXkoaW50IHNpemUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgU3RhdHVzQmFyTm90aWZpY2F0aW9uW3NpemVdOworICAgICAgICB9CisgICAgfTsKKworICAgIHB1YmxpYyBTdGF0dXNCYXJOb3RpZmljYXRpb24gY2xvbmUoKSB7CisgICAgICAgIHJldHVybiBuZXcgU3RhdHVzQmFyTm90aWZpY2F0aW9uKHRoaXMucGtnLCB0aGlzLmlkLCB0aGlzLnRhZywKKyAgICAgICAgICAgICAgICB0aGlzLnVpZCwgdGhpcy5pbml0aWFsUGlkLCB0aGlzLm5vdGlmaWNhdGlvbi5jbG9uZSgpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgeworICAgICAgICByZXR1cm4gIlN0YXR1c0Jhck5vdGlmaWNhdGlvbihwYWNrYWdlPSIgKyBwa2cgKyAiIGlkPSIgKyBpZCArICIgdGFnPSIgKyB0YWcKKyAgICAgICAgICAgICAgICArICIgbm90aWZpY2F0aW9uPSIgKyBub3RpZmljYXRpb24gKyAiKSI7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gaXNPbmdvaW5nKCkgeworICAgICAgICByZXR1cm4gKG5vdGlmaWNhdGlvbi5mbGFncyAmIE5vdGlmaWNhdGlvbi5GTEFHX09OR09JTkdfRVZFTlQpICE9IDA7CisgICAgfQorCit9CisKKwpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3N0YXR1c2Jhci9TdGF0dXNCYXJOb3RpZmljYXRpb25MaXN0LmFpZGwgYi9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvc3RhdHVzYmFyL1N0YXR1c0Jhck5vdGlmaWNhdGlvbkxpc3QuYWlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMGFiZWVlCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3N0YXR1c2Jhci9TdGF0dXNCYXJOb3RpZmljYXRpb25MaXN0LmFpZGwKQEAgLTAsMCArMSwyMCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxMCwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOyAKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQgCisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMCAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlIAorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywgCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5pbnRlcm5hbC5zdGF0dXNiYXI7CisKK3BhcmNlbGFibGUgU3RhdHVzQmFyTm90aWZpY2F0aW9uTGlzdDsKKwpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3V0aWwvSGllcmFyY2hpY2FsU3RhdGVNYWNoaW5lLmphdmEgYi9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdXRpbC9IaWVyYXJjaGljYWxTdGF0ZU1hY2hpbmUuamF2YQppbmRleCA5OTExZjQ4Li5jNTk5ZDY4IDEwMDY0NAotLS0gYS9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdXRpbC9IaWVyYXJjaGljYWxTdGF0ZU1hY2hpbmUuamF2YQorKysgYi9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdXRpbC9IaWVyYXJjaGljYWxTdGF0ZU1hY2hpbmUuamF2YQpAQCAtNTEsNyArNTEsNyBAQAogICAgICAgbVMyICAgbVMxIC0tLS0+IGluaXRpYWwgc3RhdGUKIDwvY29kZT4KICAqIEFmdGVyIHRoZSBzdGF0ZSBtYWNoaW5lIGlzIGNyZWF0ZWQgYW5kIHN0YXJ0ZWQsIG1lc3NhZ2VzIGFyZSBzZW50IHRvIGEgc3RhdGUKLSAqIG1hY2hpbmUgdXNpbmcgPGNvZGU+c2VuZE1lc3NhZ2U8L2NvZGUgYW5kIHRoZSBtZXNzYWdlcyBhcmUgY3JlYXRlZCB1c2luZworICogbWFjaGluZSB1c2luZyA8Y29kZT5zZW5kTWVzc2FnZTwvY29kZT4gYW5kIHRoZSBtZXNzYWdlcyBhcmUgY3JlYXRlZCB1c2luZwogICogPGNvZGU+b2J0YWluTWVzc2FnZTwvY29kZT4uIFdoZW4gdGhlIHN0YXRlIG1hY2hpbmUgcmVjZWl2ZXMgYSBtZXNzYWdlIHRoZQogICogY3VycmVudCBzdGF0ZSdzIDxjb2RlPnByb2Nlc3NNZXNzYWdlPC9jb2RlPiBpcyBpbnZva2VkLiBJbiB0aGUgYWJvdmUgZXhhbXBsZQogICogbVMxLnByb2Nlc3NNZXNzYWdlIHdpbGwgYmUgaW52b2tlZCBmaXJzdC4gVGhlIHN0YXRlIG1heSB1c2UgPGNvZGU+dHJhbnNpdGlvblRvPC9jb2RlPgpAQCAtNTksOSArNTksOSBAQAogICoKICAqIEVhY2ggc3RhdGUgaW4gdGhlIHN0YXRlIG1hY2hpbmUgbWF5IGhhdmUgYSB6ZXJvIG9yIG9uZSBwYXJlbnQgc3RhdGVzIGFuZCBpZgogICogYSBjaGlsZCBzdGF0ZSBpcyB1bmFibGUgdG8gaGFuZGxlIGEgbWVzc2FnZSBpdCBtYXkgaGF2ZSB0aGUgbWVzc2FnZSBwcm9jZXNzZWQKLSAqIGJ5IGl0cyBwYXJlbnQgYnkgcmV0dXJuaW5nIGZhbHNlLiBJZiBhIG1lc3NhZ2UgaXMgbmV2ZXIgcHJvY2Vzc2VkIDxjb2RlPnVuaGFuZGxlZE1lc3NhZ2U8L2NvZGU+Ci0gKiB3aWxsIGJlIGludm9rZWQgdG8gZ2l2ZSBvbmUgbGFzdCBjaGFuY2UgZm9yIHRoZSBzdGF0ZSBtYWNoaW5lIHRvIHByb2Nlc3MKLSAqIHRoZSBtZXNzYWdlLgorICogYnkgaXRzIHBhcmVudCBieSByZXR1cm5pbmcgZmFsc2Ugb3IgTk9UX0hBTkRMRUQuIElmIGEgbWVzc2FnZSBpcyBuZXZlciBwcm9jZXNzZWQKKyAqIDxjb2RlPnVuaGFuZGxlZE1lc3NhZ2U8L2NvZGU+IHdpbGwgYmUgaW52b2tlZCB0byBnaXZlIG9uZSBsYXN0IGNoYW5jZSBmb3IgdGhlIHN0YXRlIG1hY2hpbmUKKyAqIHRvIHByb2Nlc3MgdGhlIG1lc3NhZ2UuCiAgKgogICogV2hlbiBhbGwgcHJvY2Vzc2luZyBpcyBjb21wbGV0ZWQgYSBzdGF0ZSBtYWNoaW5lIG1heSBjaG9vc2UgdG8gY2FsbAogICogPGNvZGU+dHJhbnNpdGlvblRvSGFsdGluZ1N0YXRlPC9jb2RlPi4gV2hlbiB0aGUgY3VycmVudCA8Y29kZT5wcm9jZXNzaW5nTWVzc2FnZTwvY29kZT4KQEAgLTk1LDcgKzk1LDcgQEAKICAqIGFueSBvdGhlciBtZXNzYWdlcyB0aGF0IGFyZSBvbiB0aGUgcXVldWUgb3IgbWlnaHQgYmUgYWRkZWQgbGF0ZXIuIEJvdGggb2YKICAqIHRoZXNlIGFyZSBwcm90ZWN0ZWQgYW5kIG1heSBvbmx5IGJlIGludm9rZWQgZnJvbSB3aXRoaW4gYSBzdGF0ZSBtYWNoaW5lLgogICoKLSAqIFRvIGlsbHVzdHJhdGUgc29tZSBvZiB0aGVzZSBwcm9wZXJ0aWVzIHdlJ2xsIHVzZSBzdGF0ZSBtYWNoaW5lIHdpdGggOAorICogVG8gaWxsdXN0cmF0ZSBzb21lIG9mIHRoZXNlIHByb3BlcnRpZXMgd2UnbGwgdXNlIHN0YXRlIG1hY2hpbmUgd2l0aCBhbiA4CiAgKiBzdGF0ZSBoaWVyYXJjaHk6CiA8Y29kZT4KICAgICAgICAgICBtUDAKQEAgLTEwOSw0NCArMTA5LDE5IEBACiAgKgogICogQWZ0ZXIgc3RhcnRpbmcgbVM1IHRoZSBsaXN0IG9mIGFjdGl2ZSBzdGF0ZXMgaXMgbVAwLCBtUDEsIG1TMSBhbmQgbVM1LgogICogU28gdGhlIG9yZGVyIG9mIGNhbGxpbmcgcHJvY2Vzc01lc3NhZ2Ugd2hlbiBhIG1lc3NhZ2UgaXMgcmVjZWl2ZWQgaXMgbVM1LAotICogbVMxLCBtUDEsIG1QMCBhc3N1bWluZyBlYWNoIHByb2Nlc3NNZXNzYWdlICBpbmRpY2F0ZXMgaXQgY2FuJ3QgaGFuZGxlIHRoaXMKLSAqIG1lc3NhZ2UgYnkgcmV0dXJuaW5nIGZhbHNlLgorICogbVMxLCBtUDEsIG1QMCBhc3N1bWluZyBlYWNoIHByb2Nlc3NNZXNzYWdlIGluZGljYXRlcyBpdCBjYW4ndCBoYW5kbGUgdGhpcworICogbWVzc2FnZSBieSByZXR1cm5pbmcgZmFsc2Ugb3IgTk9UX0hBTkRMRUQuCiAgKgogICogTm93IGFzc3VtZSBtUzUucHJvY2Vzc01lc3NhZ2UgcmVjZWl2ZXMgYSBtZXNzYWdlIGl0IGNhbiBoYW5kbGUsIGFuZCBkdXJpbmcKLSAqIHRoZSBoYW5kbGluZyBkZXRlcm1pbmVzIHRoZSBtYWNoaW5lIHNob3VsZCBjaGFuZ2VzIHN0YXRlcy4gSXQgd291bGQgY2FsbAotICogdHJhbnNpdGlvblRvKG1TNCkgYW5kIHJldHVybiB0cnVlLiBJbW1lZGlhdGVseSBhZnRlciByZXR1cm5pbmcgZnJvbQorICogdGhlIGhhbmRsaW5nIGRldGVybWluZXMgdGhlIG1hY2hpbmUgc2hvdWxkIGNoYW5nZSBzdGF0ZXMuIEl0IGNvdWxkIGNhbGwKKyAqIHRyYW5zaXRpb25UbyhtUzQpIGFuZCByZXR1cm4gdHJ1ZSBvciBIQU5ETEVELiBJbW1lZGlhdGVseSBhZnRlciByZXR1cm5pbmcgZnJvbQogICogcHJvY2Vzc01lc3NhZ2UgdGhlIHN0YXRlIG1hY2hpbmUgcnVudGltZSB3aWxsIGZpbmQgdGhlIGNvbW1vbiBwYXJlbnQsCiAgKiB3aGljaCBpcyBtUDEuIEl0IHdpbGwgdGhlbiBjYWxsIG1TNS5leGl0LCBtUzEuZXhpdCwgbVMyLmVudGVyIGFuZCB0aGVuCiAgKiBtUzQuZW50ZXIuIFRoZSBuZXcgbGlzdCBvZiBhY3RpdmUgc3RhdGVzIGlzIG1QMCwgbVAxLCBtUzIgYW5kIG1TNC4gU28KICAqIHdoZW4gdGhlIG5leHQgbWVzc2FnZSBpcyByZWNlaXZlZCBtUzQucHJvY2Vzc01lc3NhZ2Ugd2lsbCBiZSBpbnZva2VkLgogICoKLSAqIFRvIGFzc2lzdCBpbiBkZXNjcmliaW5nIGFuIEhTTSBhIHNpbXBsZSBncmFtbWFyIGhhcyBiZWVuIGNyZWF0ZWQgd2hpY2gKLSAqIGlzIGluZm9ybWFsbHkgZGVmaW5lZCBoZXJlIGFuZCBhIGZvcm1hbCBFQk5GIGRlc2NyaXB0aW9uIGlzIGF0IHRoZSBlbmQKLSAqIG9mIHRoZSBjbGFzcyBjb21tZW50LgotICoKLSAqIEFuIEhTTSBzdGFydHMgd2l0aCB0aGUgbmFtZSBhbmQgaW5jbHVkZXMgYSBzZXQgb2YgaGllcmFyY2hpY2FsIHN0YXRlcy4KLSAqIEEgc3RhdGUgaXMgcHJlY2VlZGVkIGJ5IG9uZSBvciBtb3JlIHBsdXMgc2lnbnMgKCspLCB0byBpbmRpY2F0ZSBpdHMKLSAqIGRlcHRoIGFuZCBhIGhhc2ggKCMpIGlmIGl0cyB0aGUgaW5pdGlhbCBzdGF0ZS4gQ2hpbGQgc3RhdGVzIGZvbGxvdyB0aGVpcgotICogcGFyZW50cyBhbmQgaGF2ZSBvbmUgbW9yZSBwbHVzIHNpZ24gdGhlbiB0aGVpciBwYXJlbnQuIEluc2lkZSBhIHN0YXRlCi0gKiBhcmUgYSBzZXJpZXMgb2YgbWVzc2FnZXMsIHRoZSBhY3Rpb25zIHRoZXkgcGVyZm9ybSBhbmQgaWYgdGhlIHByb2Nlc3NpbmcKLSAqIGlzIGNvbXBsZXRlIGVuZHMgd2l0aCBhIHBlcmlvZCAoLikuIElmIHByb2Nlc3NpbmcgaXNuJ3QgY29tcGxldGUgYW5kCi0gKiB0aGUgcGFyZW50IHNob3VsZCBwcm9jZXNzIHRoZSBtZXNzYWdlIGl0IGVuZHMgd2l0aCBhIGNhcmV0ICheKS4gVGhlCi0gKiBhY3Rpb25zIGluY2x1ZGUgc2VuZCBhIG1lc3NhZ2UgKCRNRVNTQUdFKSwgZGVmZXIgYSBtZXNzYWdlICglTUVTU0FHRSksCi0gKiB0cmFuc2l0aW9uIHRvIGEgbmV3IHN0YXRlICg+TUVTU0FHRSkgYW5kIGFuIGlmIHN0YXRlbWVudAotICogKGlmICggZXhwcmVzc2lvbiApIHsgbGlzdCBvZiBhY3Rpb25zIH0uKQotICoKLSAqIFRoZSBIc20gSGVsbG9Xb3JsZCBjb3VsZCBkb2N1bWVudGVkIGFzOgotICoKLSAqIEhlbGxvV29ybGQgewotICogICArICMgbVN0YXRlMS4KLSAqIH0KLSAqCi0gKiBhbmQgaW50ZXJwcmV0ZWQgYXMgSFNNIEhlbGxvV29ybGQ6Ci0gKgotICogbVN0YXRlMSBhIHJvb3Qgc3RhdGUgKHNpbmdsZSArKSBhbmQgaW5pdGlhbCBzdGF0ZSAoIykgd2hpY2gKLSAqIHByb2Nlc3NlcyBhbGwgbWVzc2FnZXMgY29tcGxldGVseSwgdGhlIHBlcmlvZCAoLikuCi0gKgotICogVGhlIGltcGxlbWVudGF0aW9uIGlzOgorICogTm93IGZvciBzb21lIGNvbmNyZXRlIGV4YW1wbGVzLCBoZXJlIGlzIHRoZSBjYW5vbmljYWwgSGVsbG9Xb3JsZCBhcyBhbiBIU00uCisgKiBJdCByZXNwb25kcyB3aXRoICJIZWxsbyBXb3JsZCIgYmVpbmcgcHJpbnRlZCB0byB0aGUgbG9nIGZvciBldmVyeSBtZXNzYWdlLgogPGNvZGU+CiBjbGFzcyBIZWxsb1dvcmxkIGV4dGVuZHMgSGllcmFyY2hpY2FsU3RhdGVNYWNoaW5lIHsKICAgICBIc20xKFN0cmluZyBuYW1lKSB7CkBAIC0xNjQsNyArMTM5LDcgQEAKICAgICBjbGFzcyBTdGF0ZTEgZXh0ZW5kcyBIaWVyYXJjaGljYWxTdGF0ZSB7CiAgICAgICAgIEBPdmVycmlkZSBwdWJsaWMgYm9vbGVhbiBwcm9jZXNzTWVzc2FnZShNZXNzYWdlIG1lc3NhZ2UpIHsKICAgICAgICAgICAgIExvZy5kKFRBRywgIkhlbGxvIFdvcmxkIik7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBIQU5ETEVEOwogICAgICAgICB9CiAgICAgfQogICAgIFN0YXRlMSBtU3RhdGUxID0gbmV3IFN0YXRlMSgpOwpAQCAtMTc2LDcgKzE1MSw3IEBACiB9CiA8L2NvZGU+CiAgKgotICogQSBtb3JlIGludGVyZXN0aW5nIHN0YXRlIG1hY2hpbmUgaXMgb25lIG9mIGZvdXIgc3RhdGVzCisgKiBBIG1vcmUgaW50ZXJlc3Rpbmcgc3RhdGUgbWFjaGluZSBpcyBvbmUgd2l0aCBmb3VyIHN0YXRlcwogICogd2l0aCB0d28gaW5kZXBlbmRlbnQgcGFyZW50IHN0YXRlcy4KIDxjb2RlPgogICAgICAgICBtUDEgICAgICBtUDIKQEAgLTE4NCw0NSArMTU5LDY4IEBACiAgICAgICBtUzIgICBtUzEKIDwvY29kZT4KICAqCi0gKiBkb2N1bWVudGVkIGFzOgorICogSGVyZSBpcyBhIGRlc2NyaXB0aW9uIG9mIHRoaXMgc3RhdGUgbWFjaGluZSB1c2luZyBwc2V1ZG8gY29kZS4KICAqCi0gKiBIc20xIHsKLSAqICAgKyBtUDEgewotICogICAgICAgQ01EXzIgewotICogICAgICAgICAgJENNRF8zCi0gKiAgICAgICAgICAlQ01EXzIKLSAqICAgICAgICAgID5tUzIKLSAqICAgICAgIH0uCi0gKiAgICAgfQotICogICArKyAjIG1TMSB7IENNRF8xeyA+bVMxIH1eIH0KLSAqICAgKysgICBtUzIgewotICogICAgICAgICAgICBDTURfMnskQ01EXzR9LgotICogICAgICAgICAgICBDTURfM3slQ01EXzMgOyA+bVAyfS4KLSAqICAgICB9CiAgKgotICogICArIG1QMiBlKCRDTURfNSkgewotICogICAgICAgICAgICBDTURfMywgQ01EXzQuCi0gKiAgICAgICAgICAgIENNRF81ez5IQUxUfS4KLSAqICAgICB9CisgKiBzdGF0ZSBtUDEgeworICogICAgICBlbnRlciB7IGxvZygibVAxLmVudGVyIik7IH0KKyAqICAgICAgZXhpdCB7IGxvZygibVAxLmV4aXQiKTsgIH0KKyAqICAgICAgb24gbXNnIHsKKyAqICAgICAgICAgIENNRF8yIHsKKyAqICAgICAgICAgICAgICBzZW5kKENNRF8zKTsKKyAqICAgICAgICAgICAgICBkZWZlcihtc2cpOworICogICAgICAgICAgICAgIHRyYW5zaXRvblRvKG1TMik7CisgKiAgICAgICAgICAgICAgcmV0dXJuIEhBTkRMRUQ7CisgKiAgICAgICAgICB9CisgKiAgICAgICAgICByZXR1cm4gTk9UX0hBTkRMRUQ7CisgKiAgICAgIH0KICAqIH0KICAqCi0gKiBhbmQgaW50ZXJwcmV0ZWQgYXMgSGllcmFyY2hpY2FsU3RhdGVNYWNoaW5lIEhzbTE6CisgKiBJTklUSUFMCisgKiBzdGF0ZSBtUzEgcGFyZW50IG1QMSB7CisgKiAgICAgIGVudGVyIHsgbG9nKCJtUzEuZW50ZXIiKTsgfQorICogICAgICBleGl0ICB7IGxvZygibVMxLmV4aXQiKTsgIH0KKyAqICAgICAgb24gbXNnIHsKKyAqICAgICAgICAgIENNRF8xIHsKKyAqICAgICAgICAgICAgICB0cmFuc2l0aW9uVG8obVMxKTsKKyAqICAgICAgICAgICAgICByZXR1cm4gSEFORExFRDsKKyAqICAgICAgICAgIH0KKyAqICAgICAgICAgIHJldHVybiBOT1RfSEFORExFRDsKKyAqICAgICAgfQorICogfQogICoKLSAqIG1QMSBhIHJvb3Qgc3RhdGUuCi0gKiAgICAgIHByb2Nlc3NlcyBtZXNzYWdlIENNRF8yIHdoaWNoIHNlbmRzIENNRF8zLCBkZWZlcnMgQ01EXzIsIGFuZCB0cmFuc2l0aW9ucyB0byBtUzIKKyAqIHN0YXRlIG1TMiBwYXJlbnQgbVAxIHsKKyAqICAgICAgZW50ZXIgeyBsb2coIm1TMi5lbnRlciIpOyB9CisgKiAgICAgIGV4aXQgIHsgbG9nKCJtUzIuZXhpdCIpOyAgfQorICogICAgICBvbiBtc2cgeworICogICAgICAgICAgQ01EXzIgeworICogICAgICAgICAgICAgIHNlbmQoQ01EXzQpOworICogICAgICAgICAgICAgIHJldHVybiBIQU5ETEVEOworICogICAgICAgICAgfQorICogICAgICAgICAgQ01EXzMgeworICogICAgICAgICAgICAgIGRlZmVyKG1zZyk7CisgKiAgICAgICAgICAgICAgdHJhbnNpdGlvblRvKG1QMik7CisgKiAgICAgICAgICAgICAgcmV0dXJuIEhBTkRMRUQ7CisgKiAgICAgICAgICB9CisgKiAgICAgICAgICByZXR1cm4gTk9UX0hBTkRMRUQ7CisgKiAgICAgIH0KKyAqIH0KICAqCi0gKiBtUzEgYSBjaGlsZCBvZiBtUDEgaXMgdGhlIGluaXRpYWwgc3RhdGU6Ci0gKiAgICAgIHByb2Nlc3NlcyBtZXNzYWdlIENNRF8xIHdoaWNoIHRyYW5zaXRpb25zIHRvIGl0c2VsZiBhbmQgcmV0dXJucyBmYWxzZSB0byBsZXQgbVAxIGhhbmRsZSBpdC4KLSAqCi0gKiBtUzIgYSBjaGlsZCBvZiBtUDE6Ci0gKiAgICAgIHByb2Nlc3NlcyBtZXNzYWdlIENNRF8yIHdoaWNoIHNlbmQgQ01EXzQKLSAqICAgICAgcHJvY2Vzc2VzIG1lc3NhZ2UgQ01EXzMgd2hpY2ggZGVmZXJzIENNRF8zIGFuZCB0cmFuc2l0aW9ucyB0byBtUDIKLSAqCi0gKiBtUDIgYSByb290IHN0YXRlLgotICogICAgICBvbiBlbnRlciBpdCBzZW5kcyBDTURfNQotICogICAgICBwcm9jZXNzZXMgbWVzc2FnZSBDTURfMwotICogICAgICBwcm9jZXNzZXMgbWVzc2FnZSBDTURfNAotICogICAgICBwcm9jZXNzZXMgbWVzc2FnZSBDTURfNSB3aGljaCB0cmFuc2l0aW9ucyB0byBoYWx0IHN0YXRlCisgKiBzdGF0ZSBtUDIgeworICogICAgICBlbnRlciB7CisgKiAgICAgICAgICBsb2coIm1QMi5lbnRlciIpOworICogICAgICAgICAgc2VuZChDTURfNSk7CisgKiAgICAgIH0KKyAqICAgICAgZXhpdCB7IGxvZygibVAyLmV4aXQiKTsgfQorICogICAgICBvbiBtc2cgeworICogICAgICAgICAgQ01EXzMsIENNRF80IHsgcmV0dXJuIEhBTkRMRUQ7IH0KKyAqICAgICAgICAgIENNRF81IHsKKyAqICAgICAgICAgICAgICB0cmFuc2l0aW9uVG8oSGFsdGluZ1N0YXRlKTsKKyAqICAgICAgICAgICAgICByZXR1cm4gSEFORExFRDsKKyAqICAgICAgICAgIH0KKyAqICAgICAgICAgIHJldHVybiBOT1RfSEFORExFRDsKKyAqICAgICAgfQorICogfQogICoKICAqIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBiZWxvdyBhbmQgYWxzbyBpbiBIaWVyYXJjaGljYWxTdGF0ZU1hY2hpbmVUZXN0OgogPGNvZGU+CkBAIC0yNzEsMTEgKzI2OSwxMSBAQAogICAgICAgICAgICAgICAgIHNlbmRNZXNzYWdlKG9idGFpbk1lc3NhZ2UoQ01EXzMpKTsKICAgICAgICAgICAgICAgICBkZWZlck1lc3NhZ2UobWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgdHJhbnNpdGlvblRvKG1TMik7Ci0gICAgICAgICAgICAgICAgcmV0VmFsID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXRWYWwgPSBIQU5ETEVEOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAvLyBBbnkgbWVzc2FnZSB3ZSBkb24ndCB1bmRlcnN0YW5kIGluIHRoaXMgc3RhdGUgaW52b2tlcyB1bmhhbmRsZWRNZXNzYWdlCi0gICAgICAgICAgICAgICAgcmV0VmFsID0gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0VmFsID0gTk9UX0hBTkRMRUQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gcmV0VmFsOwpAQCAtMjk0LDEwICsyOTIsMTAgQEAKICAgICAgICAgICAgIGlmIChtZXNzYWdlLndoYXQgPT0gQ01EXzEpIHsKICAgICAgICAgICAgICAgICAvLyBUcmFuc2l0aW9uIHRvIG91cnNlbGYgdG8gc2hvdyB0aGF0IGVudGVyL2V4aXQgaXMgY2FsbGVkCiAgICAgICAgICAgICAgICAgdHJhbnNpdGlvblRvKG1TMSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgcmV0dXJuIEhBTkRMRUQ7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8vIExldCBwYXJlbnQgcHJvY2VzcyBhbGwgb3RoZXIgbWVzc2FnZXMKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5PVF9IQU5ETEVEOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIEBPdmVycmlkZSBwdWJsaWMgdm9pZCBleGl0KCkgewpAQCAtMzE1LDE1ICszMTMsMTUgQEAKICAgICAgICAgICAgIHN3aXRjaChtZXNzYWdlLndoYXQpIHsKICAgICAgICAgICAgIGNhc2UoQ01EXzIpOgogICAgICAgICAgICAgICAgIHNlbmRNZXNzYWdlKG9idGFpbk1lc3NhZ2UoQ01EXzQpKTsKLSAgICAgICAgICAgICAgICByZXRWYWwgPSB0cnVlOworICAgICAgICAgICAgICAgIHJldFZhbCA9IEhBTkRMRUQ7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlKENNRF8zKToKICAgICAgICAgICAgICAgICBkZWZlck1lc3NhZ2UobWVzc2FnZSk7CiAgICAgICAgICAgICAgICAgdHJhbnNpdGlvblRvKG1QMik7Ci0gICAgICAgICAgICAgICAgcmV0VmFsID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXRWYWwgPSBIQU5ETEVEOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICByZXRWYWwgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICByZXRWYWwgPSBOT1RfSEFORExFRDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiByZXRWYWw7CkBAIC0zNDksNyArMzQ3LDcgQEAKICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uVG9IYWx0aW5nU3RhdGUoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgcmV0dXJuIEhBTkRMRUQ7CiAgICAgICAgIH0KICAgICAgICAgQE92ZXJyaWRlIHB1YmxpYyB2b2lkIGV4aXQoKSB7CiAgICAgICAgICAgICBMb2cuZChUQUcsICJtUDIuZXhpdCIpOwpAQCAtMzU3LDcgKzM1NSw3IEBACiAgICAgfQogCiAgICAgQE92ZXJyaWRlCi0gICAgcHJvdGVjdGVkIHZvaWQgaGFsdGluZygpIHsKKyAgICB2b2lkIGhhbHRpbmcoKSB7CiAgICAgICAgIExvZy5kKFRBRywgImhhbHRpbmciKTsKICAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7CiAgICAgICAgICAgICB0aGlzLm5vdGlmeUFsbCgpOwpAQCAtNDEzLDUzICs0MTEsMzIgQEAKICAqIEQvaHNtMSAgICAoIDE5OTkpOiBtUDIuZXhpdAogICogRC9oc20xICAgICggMTk5OSk6IGhhbHRpbmcKICAqCi0gKiBIZXJlIGlzIHRoZSBIU00gYSBCTkYgZ3JhbW1hciwgdGhpcyBpcyBhIGZpcnN0IHN0YWIgYXQgY3JlYXRpbmcgYW4KLSAqIEhTTSBkZXNjcmlwdGlvbiBsYW5ndWFnZSwgc3VnZ2VzdGlvbnMgY29ycmVjdGlvbnMgb3IgYWx0ZXJuYXRpdmVzCi0gKiB3b3VsZCBiZSBtdWNoIGFwcHJlY2lhdGVkLgotICoKLSAqIExlZ2VuZDoKLSAqICAge30gIDo6PSB6ZXJvIG9yIG1vcmUKLSAqICAge30rIDo6PSBvbmUgb3IgbW9yZQotICogICBbXSAgOjo9IHplcm8gb3Igb25lCi0gKiAgICgpICA6Oj0gZGVmaW5lIGEgZ3JvdXAgd2l0aCAib3IiIHNlbWFudGljcy4KLSAqCi0gKiBIU00gRUJORjoKLSAqICAgSFNNID0gSFNNX05BTUUgInsiIHsgU1RBVEUgfSsgIn0iIDsKLSAqICAgSFNNX05BTUUgPSBhbHBoYV9udW1lcmljX25hbWUgOwotICogICBTVEFURSA9IElOVFJPRFVDRV9TVEFURSBbIEVOVEVSIHwgWyBFTlRFUiBFWElUIF0gInsiIFsgTUVTU0FHRVMgXSAifSIgWyBFWElUIF0gOwotICogICBJTlRST0RVQ0VfU1RBVEUgPSB7IFNUQVRFX0RFUFRIIH0rIFsgSU5JVElBTF9TVEFURV9JTkRJQ0FUT1IgXSBTVEFURV9OQU1FIDsKLSAqICAgU1RBVEVfREVQVEggPSAiKyIgOwotICogICBJTklUSUFMX1NUQVRFX0lORElDQVRPUiA9ICIjIgotICogICBFTlRFUiA9ICJlKCIgU0VORF9BQ1RJT04gfCBUUkFOU0lUSU9OX0FDVElPTiB8IEhBTFRfQUNUSU9OICIpIiA7Ci0gKiAgIE1FU1NBR0VTID0geyBNU0dfTElTVCBNRVNTQUdFX0FDVElPTlMgfSA7Ci0gKiAgIE1TR19MSVNUID0geyBNU0dfTkFNRSB7ICIsIiBNU0dfTkFNRSB9IH07Ci0gKiAgIEVYSVQgPSAieCgiIFNFTkRfQUNUSU9OIHwgVFJBTlNJVElPTl9BQ1RJT04gfCBIQUxUX0FDVElPTiAiKSIgOwotICogICBQUk9DRVNTX0NPTVBMRVRJT04gPSBQUk9DRVNTX0lOX1BBUkVOVF9PUl9DT01QTEVURSB8IFBST0NFU1NfQ09NUExFVEUgOwotICogICBTRU5EX0FDVElPTiA9ICIkIiBNU0dfTkFNRSA7Ci0gKiAgIERFRkVSX0FDVElPTiA9ICIlIiBNU0dfTkFNRSA7Ci0gKiAgIFRSQU5TSVRJT05fQUNUSU9OID0gIj4iIFNUQVRFX05BTUUgOwotICogICBIQUxUX0FDVElPTiA9ICI+IiBIQUxUIDsKLSAqICAgTUVTU0FHRV9BQ1RJT05TID0geyAieyIgQUNUSU9OX0xJU1QgIn0iIH0gWyBQUk9DRVNTX0NPTVBMRVRJT04gXSA7Ci0gKiAgIEFDVElPTl9MSVNUID0gQUNUSU9OIHsgKCI7IiB8ICJcbiIpIEFDVElPTiB9IDsKLSAqICAgQUNUSU9OID0gSUZfQUNUSU9OIHwgU0VORF9BQ1RJT04gfCBERUZFUl9BQ1RJT04gfCBUUkFOU0lUSU9OX0FDVElPTiB8IEhBTFRfQUNUSU9OIDsKLSAqICAgSUZfQUNUSU9OID0gImlmKCIgYm9vbGVhbl9leHByZXNzaW9uICIpIiAieyIgQUNUSU9OX0xJU1QgIn0iCi0gKiAgIFBST0NFU1NfSU5fUEFSRU5UX09SX0NPTVBMRVRFID0gIl4iIDsKLSAqICAgUFJPQ0VTU19DT01QTEVURSA9ICIuIiA7Ci0gKiAgIFNUQVRFX05BTUUgPSBhbHBoYV9udW1lcmljX25hbWUgOwotICogICBNU0dfTkFNRSA9IGFscGhhX251bWVyaWNfbmFtZSB8IEFMTF9PVEhFUl9NRVNTQUdFUyA7Ci0gKiAgIEFMTF9PVEhFUl9NRVNTQUdFUyA9ICIqIiA7Ci0gKiAgIEVYUCA9IGJvb2xlYW5fZXhwcmVzc2lvbiA7Ci0gKgotICogSWRpb21zOgotICogICAqIHsgJSogfS4gOjo9IEFsbCBvdGhlciBtZXNzYWdlcyB3aWxsIGJlIGRlZmVycmVkLgogICovCiBwdWJsaWMgY2xhc3MgSGllcmFyY2hpY2FsU3RhdGVNYWNoaW5lIHsKIAogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSAiSGllcmFyY2hpY2FsU3RhdGVNYWNoaW5lIjsKICAgICBwcml2YXRlIFN0cmluZyBtTmFtZTsKIAorICAgIC8qKiBNZXNzYWdlLndoYXQgdmFsdWUgd2hlbiBxdWl0dGluZyAqLwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEhTTV9RVUlUX0NNRCA9IC0xOwogCisgICAgLyoqIE1lc3NhZ2Uud2hhdCB2YWx1ZSB3aGVuIGluaXRpYWxpemluZyAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEhTTV9JTklUX0NNRCA9IC0xOworCisgICAgLyoqCisgICAgICogQ29udmVuaWVuY2UgY29uc3RhbnQgdGhhdCBtYXliZSByZXR1cm5lZCBieSBwcm9jZXNzTWVzc2FnZQorICAgICAqIHRvIGluZGljYXRlIHRoZSB0aGUgbWVzc2FnZSB3YXMgcHJvY2Vzc2VkIGFuZCBpcyBub3QgdG8gYmUKKyAgICAgKiBwcm9jZXNzZWQgYnkgcGFyZW50IHN0YXRlcworICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgYm9vbGVhbiBIQU5ETEVEID0gdHJ1ZTsKKworICAgIC8qKgorICAgICAqIENvbnZlbmllbmNlIGNvbnN0YW50IHRoYXQgbWF5YmUgcmV0dXJuZWQgYnkgcHJvY2Vzc01lc3NhZ2UKKyAgICAgKiB0byBpbmRpY2F0ZSB0aGUgdGhlIG1lc3NhZ2Ugd2FzIE5PVCBwcm9jZXNzZWQgYW5kIGlzIHRvIGJlCisgICAgICogcHJvY2Vzc2VkIGJ5IHBhcmVudCBzdGF0ZXMKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGJvb2xlYW4gTk9UX0hBTkRMRUQgPSBmYWxzZTsKKwogICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIEhzbUhhbmRsZXIgZXh0ZW5kcyBIYW5kbGVyIHsKIAogICAgICAgICAvKiogVGhlIGRlYnVnIGZsYWcgKi8KQEAgLTQ2OCw2ICs0NDUsMTIgQEAKICAgICAgICAgLyoqIFRoZSBxdWl0IG9iamVjdCAqLwogICAgICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBPYmplY3QgbVF1aXRPYmogPSBuZXcgT2JqZWN0KCk7CiAKKyAgICAgICAgLyoqIFRoZSBpbml0aWFsaXphdGlvbiBtZXNzYWdlICovCisgICAgICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIE1lc3NhZ2UgbUluaXRNc2cgPSBudWxsOworCisgICAgICAgIC8qKiBUaGUgY3VycmVudCBtZXNzYWdlICovCisgICAgICAgIHByaXZhdGUgTWVzc2FnZSBtTXNnOworCiAgICAgICAgIC8qKiBBIGxpc3Qgb2YgbWVzc2FnZXMgdGhhdCB0aGlzIHN0YXRlIG1hY2hpbmUgaGFzIHByb2Nlc3NlZCAqLwogICAgICAgICBwcml2YXRlIFByb2Nlc3NlZE1lc3NhZ2VzIG1Qcm9jZXNzZWRNZXNzYWdlcyA9IG5ldyBQcm9jZXNzZWRNZXNzYWdlcygpOwogCkBAIC01NTAsOCArNTMzLDcgQEAKICAgICAgICAgcHJpdmF0ZSBjbGFzcyBRdWl0dGluZ1N0YXRlIGV4dGVuZHMgSGllcmFyY2hpY2FsU3RhdGUgewogICAgICAgICAgICAgQE92ZXJyaWRlCiAgICAgICAgICAgICBwdWJsaWMgYm9vbGVhbiBwcm9jZXNzTWVzc2FnZShNZXNzYWdlIG1zZykgewotICAgICAgICAgICAgICAgIC8vIElnbm9yZQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTk9UX0hBTkRMRUQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtNTY1LDYgKzU0Nyw5IEBACiAgICAgICAgIHB1YmxpYyBmaW5hbCB2b2lkIGhhbmRsZU1lc3NhZ2UoTWVzc2FnZSBtc2cpIHsKICAgICAgICAgICAgIGlmIChtRGJnKSBMb2cuZChUQUcsICJoYW5kbGVNZXNzYWdlOiBFIG1zZy53aGF0PSIgKyBtc2cud2hhdCk7CiAKKyAgICAgICAgICAgIC8qKiBTYXZlIHRoZSBjdXJyZW50IG1lc3NhZ2UgKi8KKyAgICAgICAgICAgIG1Nc2cgPSBtc2c7CisKICAgICAgICAgICAgIC8qKgogICAgICAgICAgICAgICogQ2hlY2sgdGhhdCBjb25zdHJ1Y3Rpb24gd2FzIGNvbXBsZXRlZAogICAgICAgICAgICAgICovCkBAIC02NzksNiArNjY0LDcgQEAKICAgICAgICAgICAgICAqIHN0YXJ0aW5nIGF0IHRoZSBmaXJzdCBlbnRyeS4KICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgbUlzQ29uc3RydWN0aW9uQ29tcGxldGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIG1Nc2cgPSBvYnRhaW5NZXNzYWdlKEhTTV9JTklUX0NNRCk7CiAgICAgICAgICAgICBpbnZva2VFbnRlck1ldGhvZHMoMCk7CiAKICAgICAgICAgICAgIC8qKgpAQCAtODU1LDYgKzg0MSwxMyBAQAogICAgICAgICB9CiAKICAgICAgICAgLyoqCisgICAgICAgICAqIEByZXR1cm4gY3VycmVudCBtZXNzYWdlCisgICAgICAgICAqLworICAgICAgICBwcml2YXRlIGZpbmFsIE1lc3NhZ2UgZ2V0Q3VycmVudE1lc3NhZ2UoKSB7CisgICAgICAgICAgICByZXR1cm4gbU1zZzsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgogICAgICAgICAgKiBAcmV0dXJuIGN1cnJlbnQgc3RhdGUKICAgICAgICAgICovCiAgICAgICAgIHByaXZhdGUgZmluYWwgSGllcmFyY2hpY2FsU3RhdGUgZ2V0Q3VycmVudFN0YXRlKCkgewpAQCAtMTAyNSw2ICsxMDE4LDE0IEBACiAgICAgcHJvdGVjdGVkIGZpbmFsIHZvaWQgYWRkU3RhdGUoSGllcmFyY2hpY2FsU3RhdGUgc3RhdGUsIEhpZXJhcmNoaWNhbFN0YXRlIHBhcmVudCkgewogICAgICAgICBtSHNtSGFuZGxlci5hZGRTdGF0ZShzdGF0ZSwgcGFyZW50KTsKICAgICB9CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIGN1cnJlbnQgbWVzc2FnZQorICAgICAqLworICAgIHByb3RlY3RlZCBmaW5hbCBNZXNzYWdlIGdldEN1cnJlbnRNZXNzYWdlKCkgeworICAgICAgICByZXR1cm4gbUhzbUhhbmRsZXIuZ2V0Q3VycmVudE1lc3NhZ2UoKTsKKyAgICB9CisKICAgICAvKioKICAgICAgKiBAcmV0dXJuIGN1cnJlbnQgc3RhdGUKICAgICAgKi8KQEAgLTEwMzIsNyArMTAzMyw2IEBACiAgICAgICAgIHJldHVybiBtSHNtSGFuZGxlci5nZXRDdXJyZW50U3RhdGUoKTsKICAgICB9CiAKLQogICAgIC8qKgogICAgICAqIEFkZCBhIG5ldyBzdGF0ZSB0byB0aGUgc3RhdGUgbWFjaGluZSwgcGFyZW50IHdpbGwgYmUgbnVsbAogICAgICAqIEBwYXJhbSBzdGF0ZSB0byBhZGQKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC92aWV3L0Jhc2VJV2luZG93LmphdmEgYi9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdmlldy9CYXNlSVdpbmRvdy5qYXZhCmluZGV4IGIxM2Q2NTYuLjRkYTc0ZTYgMTAwNjQ0Ci0tLSBhL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC92aWV3L0Jhc2VJV2luZG93LmphdmEKKysrIGIvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3ZpZXcvQmFzZUlXaW5kb3cuamF2YQpAQCAtNDMsNTkgKzQzLDYgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIHB1YmxpYyB2b2lkIGRpc3BhdGNoS2V5KEtleUV2ZW50IGV2ZW50KSB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBtU2Vzc2lvbi5maW5pc2hLZXkodGhpcyk7Ci0gICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBleCkgewotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHVibGljIGJvb2xlYW4gb25EaXNwYXRjaFBvaW50ZXIoTW90aW9uRXZlbnQgZXZlbnQsIGxvbmcgZXZlbnRUaW1lLAotICAgICAgICAgICAgYm9vbGVhbiBjYWxsV2hlbkRvbmUpIHsKLSAgICAgICAgZXZlbnQucmVjeWNsZSgpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIAotICAgIHB1YmxpYyB2b2lkIGRpc3BhdGNoUG9pbnRlcihNb3Rpb25FdmVudCBldmVudCwgbG9uZyBldmVudFRpbWUsCi0gICAgICAgICAgICBib29sZWFuIGNhbGxXaGVuRG9uZSkgewotICAgICAgICB0cnkgewotICAgICAgICAgICAgaWYgKGV2ZW50ID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICBldmVudCA9IG1TZXNzaW9uLmdldFBlbmRpbmdQb2ludGVyTW92ZSh0aGlzKTsKLSAgICAgICAgICAgICAgICBvbkRpc3BhdGNoUG9pbnRlcihldmVudCwgZXZlbnRUaW1lLCBmYWxzZSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGNhbGxXaGVuRG9uZSkgewotICAgICAgICAgICAgICAgIGlmICghb25EaXNwYXRjaFBvaW50ZXIoZXZlbnQsIGV2ZW50VGltZSwgdHJ1ZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgbVNlc3Npb24uZmluaXNoS2V5KHRoaXMpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgb25EaXNwYXRjaFBvaW50ZXIoZXZlbnQsIGV2ZW50VGltZSwgZmFsc2UpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZXgpIHsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyBib29sZWFuIG9uRGlzcGF0Y2hUcmFja2JhbGwoTW90aW9uRXZlbnQgZXZlbnQsIGxvbmcgZXZlbnRUaW1lLAotICAgICAgICAgICAgYm9vbGVhbiBjYWxsV2hlbkRvbmUpIHsKLSAgICAgICAgZXZlbnQucmVjeWNsZSgpOwotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIAotICAgIHB1YmxpYyB2b2lkIGRpc3BhdGNoVHJhY2tiYWxsKE1vdGlvbkV2ZW50IGV2ZW50LCBsb25nIGV2ZW50VGltZSwKLSAgICAgICAgICAgIGJvb2xlYW4gY2FsbFdoZW5Eb25lKSB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBpZiAoZXZlbnQgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgIGV2ZW50ID0gbVNlc3Npb24uZ2V0UGVuZGluZ1RyYWNrYmFsbE1vdmUodGhpcyk7Ci0gICAgICAgICAgICAgICAgb25EaXNwYXRjaFRyYWNrYmFsbChldmVudCwgZXZlbnRUaW1lLCBmYWxzZSk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGNhbGxXaGVuRG9uZSkgewotICAgICAgICAgICAgICAgIGlmICghb25EaXNwYXRjaFRyYWNrYmFsbChldmVudCwgZXZlbnRUaW1lLCB0cnVlKSkgewotICAgICAgICAgICAgICAgICAgICBtU2Vzc2lvbi5maW5pc2hLZXkodGhpcyk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBvbkRpc3BhdGNoVHJhY2tiYWxsKGV2ZW50LCBldmVudFRpbWUsIGZhbHNlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGV4KSB7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICBwdWJsaWMgdm9pZCBkaXNwYXRjaEFwcFZpc2liaWxpdHkoYm9vbGVhbiB2aXNpYmxlKSB7CiAgICAgfQogCmRpZmYgLS1naXQgYS9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdmlldy9CYXNlSW5wdXRIYW5kbGVyLmphdmEgYi9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdmlldy9CYXNlSW5wdXRIYW5kbGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmZlNTA2MwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC92aWV3L0Jhc2VJbnB1dEhhbmRsZXIuamF2YQpAQCAtMCwwICsxLDM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5pbnRlcm5hbC52aWV3OworCitpbXBvcnQgYW5kcm9pZC52aWV3LklucHV0SGFuZGxlcjsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuS2V5RXZlbnQ7CitpbXBvcnQgYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50OworCisvKioKKyAqIEJhc2UgZG8tbm90aGluZyBpbXBsZW1lbnRhdGlvbiBvZiBhbiBpbnB1dCBoYW5kbGVyLgorICogQGhpZGUKKyAqLworcHVibGljIGFic3RyYWN0IGNsYXNzIEJhc2VJbnB1dEhhbmRsZXIgaW1wbGVtZW50cyBJbnB1dEhhbmRsZXIgeworICAgIHB1YmxpYyB2b2lkIGhhbmRsZUtleShLZXlFdmVudCBldmVudCwgUnVubmFibGUgZmluaXNoZWRDYWxsYmFjaykgeworICAgICAgICBmaW5pc2hlZENhbGxiYWNrLnJ1bigpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBoYW5kbGVUb3VjaChNb3Rpb25FdmVudCBldmVudCwgUnVubmFibGUgZmluaXNoZWRDYWxsYmFjaykgeworICAgICAgICBmaW5pc2hlZENhbGxiYWNrLnJ1bigpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBoYW5kbGVUcmFja2JhbGwoTW90aW9uRXZlbnQgZXZlbnQsIFJ1bm5hYmxlIGZpbmlzaGVkQ2FsbGJhY2spIHsKKyAgICAgICAgZmluaXNoZWRDYWxsYmFjay5ydW4oKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdmlldy9CYXNlU3VyZmFjZUhvbGRlci5qYXZhIGIvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3ZpZXcvQmFzZVN1cmZhY2VIb2xkZXIuamF2YQppbmRleCBlMGQzYTVmLi4zYTA0OTkzIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdmlldy9CYXNlU3VyZmFjZUhvbGRlci5qYXZhCisrKyBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC92aWV3L0Jhc2VTdXJmYWNlSG9sZGVyLmphdmEKQEAgLTMzLDkgKzMzLDExIEBACiAKICAgICBwdWJsaWMgZmluYWwgQXJyYXlMaXN0PFN1cmZhY2VIb2xkZXIuQ2FsbGJhY2s+IG1DYWxsYmFja3MKICAgICAgICAgICAgID0gbmV3IEFycmF5TGlzdDxTdXJmYWNlSG9sZGVyLkNhbGxiYWNrPigpOwotCisgICAgU3VyZmFjZUhvbGRlci5DYWxsYmFja1tdIG1Hb3R0ZW5DYWxsYmFja3M7CisgICAgYm9vbGVhbiBtSGF2ZUdvdHRlbkNhbGxiYWNrczsKKyAgICAKICAgICBwdWJsaWMgZmluYWwgUmVlbnRyYW50TG9jayBtU3VyZmFjZUxvY2sgPSBuZXcgUmVlbnRyYW50TG9jaygpOwotICAgIHB1YmxpYyBmaW5hbCBTdXJmYWNlIG1TdXJmYWNlID0gbmV3IFN1cmZhY2UoKTsKKyAgICBwdWJsaWMgU3VyZmFjZSBtU3VyZmFjZSA9IG5ldyBTdXJmYWNlKCk7CiAKICAgICBpbnQgbVJlcXVlc3RlZFdpZHRoID0gLTE7CiAgICAgaW50IG1SZXF1ZXN0ZWRIZWlnaHQgPSAtMTsKQEAgLTgzLDYgKzg1LDMxIEBACiAgICAgICAgIH0KICAgICB9CiAgICAgCisgICAgcHVibGljIFN1cmZhY2VIb2xkZXIuQ2FsbGJhY2tbXSBnZXRDYWxsYmFja3MoKSB7CisgICAgICAgIGlmIChtSGF2ZUdvdHRlbkNhbGxiYWNrcykgeworICAgICAgICAgICAgcmV0dXJuIG1Hb3R0ZW5DYWxsYmFja3M7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHN5bmNocm9uaXplZCAobUNhbGxiYWNrcykgeworICAgICAgICAgICAgZmluYWwgaW50IE4gPSBtQ2FsbGJhY2tzLnNpemUoKTsKKyAgICAgICAgICAgIGlmIChOID4gMCkgeworICAgICAgICAgICAgICAgIGlmIChtR290dGVuQ2FsbGJhY2tzID09IG51bGwgfHwgbUdvdHRlbkNhbGxiYWNrcy5sZW5ndGggIT0gTikgeworICAgICAgICAgICAgICAgICAgICBtR290dGVuQ2FsbGJhY2tzID0gbmV3IFN1cmZhY2VIb2xkZXIuQ2FsbGJhY2tbTl07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1DYWxsYmFja3MudG9BcnJheShtR290dGVuQ2FsbGJhY2tzKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbUdvdHRlbkNhbGxiYWNrcyA9IG51bGw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtSGF2ZUdvdHRlbkNhbGxiYWNrcyA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBtR290dGVuQ2FsbGJhY2tzOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCB1bmdldENhbGxiYWNrcygpIHsKKyAgICAgICAgbUhhdmVHb3R0ZW5DYWxsYmFja3MgPSBmYWxzZTsKKyAgICB9CisgICAgCiAgICAgcHVibGljIHZvaWQgc2V0Rml4ZWRTaXplKGludCB3aWR0aCwgaW50IGhlaWdodCkgewogICAgICAgICBpZiAobVJlcXVlc3RlZFdpZHRoICE9IHdpZHRoIHx8IG1SZXF1ZXN0ZWRIZWlnaHQgIT0gaGVpZ2h0KSB7CiAgICAgICAgICAgICBtUmVxdWVzdGVkV2lkdGggPSB3aWR0aDsKZGlmZiAtLWdpdCBhL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC92aWV3L0lJbnB1dE1ldGhvZFNlc3Npb24uYWlkbCBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC92aWV3L0lJbnB1dE1ldGhvZFNlc3Npb24uYWlkbAppbmRleCBhMDVmZjE0Li4zMzhkY2FhIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdmlldy9JSW5wdXRNZXRob2RTZXNzaW9uLmFpZGwKKysrIGIvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3ZpZXcvSUlucHV0TWV0aG9kU2Vzc2lvbi5haWRsCkBAIC00OCw0ICs0OCw2IEBACiAgICAgdm9pZCBhcHBQcml2YXRlQ29tbWFuZChTdHJpbmcgYWN0aW9uLCBpbiBCdW5kbGUgZGF0YSk7CiAKICAgICB2b2lkIHRvZ2dsZVNvZnRJbnB1dChpbnQgc2hvd0ZsYWdzLCBpbnQgaGlkZUZsYWdzKTsKKworICAgIHZvaWQgZmluaXNoU2Vzc2lvbigpOwogfQpkaWZmIC0tZ2l0IGEvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3ZpZXcvUm9vdFZpZXdTdXJmYWNlVGFrZXIuamF2YSBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC92aWV3L1Jvb3RWaWV3U3VyZmFjZVRha2VyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2ZmOGQ0YwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC92aWV3L1Jvb3RWaWV3U3VyZmFjZVRha2VyLmphdmEKQEAgLTAsMCArMSwxMyBAQAorcGFja2FnZSBjb20uYW5kcm9pZC5pbnRlcm5hbC52aWV3OworCitpbXBvcnQgYW5kcm9pZC52aWV3LklucHV0UXVldWU7CitpbXBvcnQgYW5kcm9pZC52aWV3LlN1cmZhY2VIb2xkZXI7CisKKy8qKiBoYWhhaGFoICovCitwdWJsaWMgaW50ZXJmYWNlIFJvb3RWaWV3U3VyZmFjZVRha2VyIHsKKyAgICBTdXJmYWNlSG9sZGVyLkNhbGxiYWNrIHdpbGxZb3VUYWtlVGhlU3VyZmFjZSgpOworICAgIHZvaWQgc2V0U3VyZmFjZVR5cGUoaW50IHR5cGUpOworICAgIHZvaWQgc2V0U3VyZmFjZUZvcm1hdChpbnQgZm9ybWF0KTsKKyAgICB2b2lkIHNldFN1cmZhY2VLZWVwU2NyZWVuT24oYm9vbGVhbiBrZWVwT24pOworICAgIElucHV0UXVldWUuQ2FsbGJhY2sgd2lsbFlvdVRha2VUaGVJbnB1dFF1ZXVlKCk7Cit9CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvd2lkZ2V0L0RpZ2l0YWxDbG9jay5qYXZhIGIvY29yZS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3dpZGdldC9EaWdpdGFsQ2xvY2suamF2YQppbmRleCAyM2UyMjc3Li5mYTQ3ZmY2IDEwMDY0NAotLS0gYS9jb3JlL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvd2lkZ2V0L0RpZ2l0YWxDbG9jay5qYXZhCisrKyBiL2NvcmUvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC93aWRnZXQvRGlnaXRhbENsb2NrLmphdmEKQEAgLTMwLDcgKzMwLDcgQEAKIGltcG9ydCBhbmRyb2lkLnRleHQuZm9ybWF0LkRhdGVGb3JtYXQ7CiBpbXBvcnQgYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldDsKIGltcG9ydCBhbmRyb2lkLnZpZXcuVmlldzsKLWltcG9ydCBhbmRyb2lkLndpZGdldC5SZWxhdGl2ZUxheW91dDsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5MaW5lYXJMYXlvdXQ7CiBpbXBvcnQgYW5kcm9pZC53aWRnZXQuVGV4dFZpZXc7CiAKIGltcG9ydCBqYXZhLnRleHQuRGF0ZUZvcm1hdFN5bWJvbHM7CkBAIC0zOSw3ICszOSw3IEBACiAvKioKICAqIERpc3BsYXlzIHRoZSB0aW1lCiAgKi8KLXB1YmxpYyBjbGFzcyBEaWdpdGFsQ2xvY2sgZXh0ZW5kcyBSZWxhdGl2ZUxheW91dCB7CitwdWJsaWMgY2xhc3MgRGlnaXRhbENsb2NrIGV4dGVuZHMgTGluZWFyTGF5b3V0IHsKIAogICAgIHByaXZhdGUgZmluYWwgc3RhdGljIFN0cmluZyBNMTIgPSAiaDptbSI7CiAgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgU3RyaW5nIE0yNCA9ICJrazptbSI7CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvY29tL2dvb2dsZS9hbmRyb2lkL21tcy9Db250ZW50VHlwZS5qYXZhIGIvY29yZS9qYXZhL2NvbS9nb29nbGUvYW5kcm9pZC9tbXMvQ29udGVudFR5cGUuamF2YQppbmRleCA5NGJjOWZkLi5iMDY2ZmFkIDEwMDY0NAotLS0gYS9jb3JlL2phdmEvY29tL2dvb2dsZS9hbmRyb2lkL21tcy9Db250ZW50VHlwZS5qYXZhCisrKyBiL2NvcmUvamF2YS9jb20vZ29vZ2xlL2FuZHJvaWQvbW1zL0NvbnRlbnRUeXBlLmphdmEKQEAgLTI2LDYgKzI2LDcgQEAKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBNTVNfR0VORVJJQyAgICAgICA9ICJhcHBsaWNhdGlvbi92bmQud2FwLm1tcy1nZW5lcmljIjsKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBNVUxUSVBBUlRfTUlYRUQgICA9ICJhcHBsaWNhdGlvbi92bmQud2FwLm11bHRpcGFydC5taXhlZCI7CiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTVVMVElQQVJUX1JFTEFURUQgPSAiYXBwbGljYXRpb24vdm5kLndhcC5tdWx0aXBhcnQucmVsYXRlZCI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTVVMVElQQVJUX0FMVEVSTkFUSVZFID0gImFwcGxpY2F0aW9uL3ZuZC53YXAubXVsdGlwYXJ0LmFsdGVybmF0aXZlIjsKIAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFRFWFRfUExBSU4gICAgICAgID0gInRleHQvcGxhaW4iOwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFRFWFRfSFRNTCAgICAgICAgID0gInRleHQvaHRtbCI7CmRpZmYgLS1naXQgYS9jb3JlL2phdmEvY29tL2dvb2dsZS9hbmRyb2lkL21tcy9wZHUvUGR1UGFyc2VyLmphdmEgYi9jb3JlL2phdmEvY29tL2dvb2dsZS9hbmRyb2lkL21tcy9wZHUvUGR1UGFyc2VyLmphdmEKaW5kZXggZDQ2NWM1YS4uMWNkMTE4YiAxMDA2NDQKLS0tIGEvY29yZS9qYXZhL2NvbS9nb29nbGUvYW5kcm9pZC9tbXMvcGR1L1BkdVBhcnNlci5qYXZhCisrKyBiL2NvcmUvamF2YS9jb20vZ29vZ2xlL2FuZHJvaWQvbW1zL3BkdS9QZHVQYXJzZXIuamF2YQpAQCAtMjAwLDcgKzIwMCwxOCBAQAogICAgICAgICBQZHVIZWFkZXJzIGhlYWRlcnMgPSBuZXcgUGR1SGVhZGVycygpOwogCiAgICAgICAgIHdoaWxlIChrZWVwUGFyc2luZyAmJiAocGR1RGF0YVN0cmVhbS5hdmFpbGFibGUoKSA+IDApKSB7CisgICAgICAgICAgICBwZHVEYXRhU3RyZWFtLm1hcmsoMSk7CiAgICAgICAgICAgICBpbnQgaGVhZGVyRmllbGQgPSBleHRyYWN0Qnl0ZVZhbHVlKHBkdURhdGFTdHJlYW0pOworICAgICAgICAgICAgLyogcGFyc2UgY3VzdG9tIHRleHQgaGVhZGVyICovCisgICAgICAgICAgICBpZiAoKGhlYWRlckZpZWxkID49IFRFWFRfTUlOKSAmJiAoaGVhZGVyRmllbGQgPD0gVEVYVF9NQVgpKSB7CisgICAgICAgICAgICAgICAgcGR1RGF0YVN0cmVhbS5yZXNldCgpOworICAgICAgICAgICAgICAgIGJ5dGUgW10gYlZhbCA9IHBhcnNlV2FwU3RyaW5nKHBkdURhdGFTdHJlYW0sIFRZUEVfVEVYVF9TVFJJTkcpOworICAgICAgICAgICAgICAgIGlmIChMT0NBTF9MT0dWKSB7CisgICAgICAgICAgICAgICAgICAgIExvZy52KExPR19UQUcsICJUZXh0SGVhZGVyOiAiICsgbmV3IFN0cmluZyhiVmFsKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8qIHdlIHNob3VsZCBpZ25vcmUgaXQgYXQgdGhlIG1vbWVudCAqLworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQogICAgICAgICAgICAgc3dpdGNoIChoZWFkZXJGaWVsZCkgewogICAgICAgICAgICAgICAgIGNhc2UgUGR1SGVhZGVycy5NRVNTQUdFX1RZUEU6CiAgICAgICAgICAgICAgICAgewpAQCAtNzc4LDI2ICs3ODksMzQgQEAKICAgICAgICAgICAgIC8qIGdldCBwYXJ0J3MgZGF0YSAqLwogICAgICAgICAgICAgaWYgKGRhdGFMZW5ndGggPiAwKSB7CiAgICAgICAgICAgICAgICAgYnl0ZVtdIHBhcnREYXRhID0gbmV3IGJ5dGVbZGF0YUxlbmd0aF07CisgICAgICAgICAgICAgICAgU3RyaW5nIHBhcnRDb250ZW50VHlwZSA9IG5ldyBTdHJpbmcocGFydC5nZXRDb250ZW50VHlwZSgpKTsKICAgICAgICAgICAgICAgICBwZHVEYXRhU3RyZWFtLnJlYWQocGFydERhdGEsIDAsIGRhdGFMZW5ndGgpOwotICAgICAgICAgICAgICAgIC8vIENoZWNrIENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmcuCi0gICAgICAgICAgICAgICAgYnl0ZVtdIHBhcnREYXRhRW5jb2RpbmcgPSBwYXJ0LmdldENvbnRlbnRUcmFuc2ZlckVuY29kaW5nKCk7Ci0gICAgICAgICAgICAgICAgaWYgKG51bGwgIT0gcGFydERhdGFFbmNvZGluZykgewotICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZW5jb2RpbmcgPSBuZXcgU3RyaW5nKHBhcnREYXRhRW5jb2RpbmcpOwotICAgICAgICAgICAgICAgICAgICBpZiAoZW5jb2RpbmcuZXF1YWxzSWdub3JlQ2FzZShQZHVQYXJ0LlBfQkFTRTY0KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGVjb2RlICJiYXNlNjQiIGludG8gImJpbmFyeSIuCi0gICAgICAgICAgICAgICAgICAgICAgICBwYXJ0RGF0YSA9IEJhc2U2NC5kZWNvZGVCYXNlNjQocGFydERhdGEpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVuY29kaW5nLmVxdWFsc0lnbm9yZUNhc2UoUGR1UGFydC5QX1FVT1RFRF9QUklOVEFCTEUpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWNvZGUgInF1b3RlZC1wcmludGFibGUiIGludG8gImJpbmFyeSIuCi0gICAgICAgICAgICAgICAgICAgICAgICBwYXJ0RGF0YSA9IFF1b3RlZFByaW50YWJsZS5kZWNvZGVRdW90ZWRQcmludGFibGUocGFydERhdGEpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gImJpbmFyeSIgaXMgdGhlIGRlZmF1bHQgZW5jb2RpbmcuCisgICAgICAgICAgICAgICAgaWYgKHBhcnRDb250ZW50VHlwZS5lcXVhbHNJZ25vcmVDYXNlKENvbnRlbnRUeXBlLk1VTFRJUEFSVF9BTFRFUk5BVElWRSkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gcGFyc2UgIm11bHRpcGFydC92bmQud2FwLm11bHRpcGFydC5hbHRlcm5hdGl2ZSIuCisgICAgICAgICAgICAgICAgICAgIFBkdUJvZHkgY2hpbGRCb2R5ID0gcGFyc2VQYXJ0cyhuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0ocGFydERhdGEpKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gdGFrZSB0aGUgZmlyc3QgcGFydCBvZiBjaGlsZHJlbi4KKyAgICAgICAgICAgICAgICAgICAgcGFydCA9IGNoaWxkQm9keS5nZXRQYXJ0KDApOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmcuCisgICAgICAgICAgICAgICAgICAgIGJ5dGVbXSBwYXJ0RGF0YUVuY29kaW5nID0gcGFydC5nZXRDb250ZW50VHJhbnNmZXJFbmNvZGluZygpOworICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCAhPSBwYXJ0RGF0YUVuY29kaW5nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZW5jb2RpbmcgPSBuZXcgU3RyaW5nKHBhcnREYXRhRW5jb2RpbmcpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVuY29kaW5nLmVxdWFsc0lnbm9yZUNhc2UoUGR1UGFydC5QX0JBU0U2NCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWNvZGUgImJhc2U2NCIgaW50byAiYmluYXJ5Ii4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0RGF0YSA9IEJhc2U2NC5kZWNvZGVCYXNlNjQocGFydERhdGEpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlbmNvZGluZy5lcXVhbHNJZ25vcmVDYXNlKFBkdVBhcnQuUF9RVU9URURfUFJJTlRBQkxFKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERlY29kZSAicXVvdGVkLXByaW50YWJsZSIgaW50byAiYmluYXJ5Ii4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJ0RGF0YSA9IFF1b3RlZFByaW50YWJsZS5kZWNvZGVRdW90ZWRQcmludGFibGUocGFydERhdGEpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAiYmluYXJ5IiBpcyB0aGUgZGVmYXVsdCBlbmNvZGluZy4KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAobnVsbCA9PSBwYXJ0RGF0YSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbG9nKCJEZWNvZGUgcGFydCBkYXRhIGVycm9yISIpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcGFydC5zZXREYXRhKHBhcnREYXRhKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKG51bGwgPT0gcGFydERhdGEpIHsKLSAgICAgICAgICAgICAgICAgICAgbG9nKCJEZWNvZGUgcGFydCBkYXRhIGVycm9yISIpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcGFydC5zZXREYXRhKHBhcnREYXRhKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLyogYWRkIHRoaXMgcGFydCB0byBib2R5ICovCmRpZmYgLS1naXQgYS9jb3JlL2puaS9BbmRyb2lkLm1rIGIvY29yZS9qbmkvQW5kcm9pZC5tawppbmRleCBkZjFhYjllLi5hMDA4ZTk2IDEwMDY0NAotLS0gYS9jb3JlL2puaS9BbmRyb2lkLm1rCisrKyBiL2NvcmUvam5pL0FuZHJvaWQubWsKQEAgLTI4LDYgKzI4LDcgQEAKIAlUaW1lLmNwcCBcCiAJY29tX2dvb2dsZV9hbmRyb2lkX2dsZXNfam5pX0VHTEltcGwuY3BwIFwKIAljb21fZ29vZ2xlX2FuZHJvaWRfZ2xlc19qbmlfR0xJbXBsLmNwcC5hcm0gXAorCWFuZHJvaWRfYXBwX05hdGl2ZUFjdGl2aXR5LmNwcCBcCiAJYW5kcm9pZF9vcGVuZ2xfR0xFUzEwLmNwcCBcCiAJYW5kcm9pZF9vcGVuZ2xfR0xFUzEwRXh0LmNwcCBcCiAJYW5kcm9pZF9vcGVuZ2xfR0xFUzExLmNwcCBcCkBAIC00NCwxMiArNDUsMTcgQEAKIAlhbmRyb2lkX3ZpZXdfRGlzcGxheS5jcHAgXAogCWFuZHJvaWRfdmlld19TdXJmYWNlLmNwcCBcCiAJYW5kcm9pZF92aWV3X1ZpZXdSb290LmNwcCBcCisJYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbC5jcHAgXAorCWFuZHJvaWRfdmlld19JbnB1dFF1ZXVlLmNwcCBcCisJYW5kcm9pZF92aWV3X0tleUV2ZW50LmNwcCBcCisJYW5kcm9pZF92aWV3X01vdGlvbkV2ZW50LmNwcCBcCiAJYW5kcm9pZF90ZXh0X0FuZHJvaWRDaGFyYWN0ZXIuY3BwIFwKIAlhbmRyb2lkX3RleHRfQW5kcm9pZEJpZGkuY3BwIFwKIAlhbmRyb2lkX3RleHRfS2V5Q2hhcmFjdGVyTWFwLmNwcCBcCiAJYW5kcm9pZF9vc19EZWJ1Zy5jcHAgXAogCWFuZHJvaWRfb3NfRmlsZVV0aWxzLmNwcCBcCiAJYW5kcm9pZF9vc19NZW1vcnlGaWxlLmNwcCBcCisJYW5kcm9pZF9vc19NZXNzYWdlUXVldWUuY3BwIFwKIAlhbmRyb2lkX29zX1BhcmNlbEZpbGVEZXNjcmlwdG9yLmNwcCBcCiAJYW5kcm9pZF9vc19Qb3dlci5jcHAgXAogCWFuZHJvaWRfb3NfU3RhdEZzLmNwcCBcCkBAIC0xMjMsNyArMTI5LDYgQEAKIAlhbmRyb2lkX3NlcnZlcl9XYXRjaGRvZy5jcHAgXAogCWFuZHJvaWRfbWVzc2FnZV9kaWdlc3Rfc2hhMS5jcHAgXAogCWFuZHJvaWRfZGRtX0RkbUhhbmRsZU5hdGl2ZUhlYXAuY3BwIFwKLQlhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXIuY3BwIFwKIAljb21fYW5kcm9pZF9pbnRlcm5hbF9vc19aeWdvdGVJbml0LmNwcCBcCiAJY29tX2FuZHJvaWRfaW50ZXJuYWxfZ3JhcGhpY3NfTmF0aXZlVXRpbHMuY3BwIFwKIAlhbmRyb2lkX2JhY2t1cF9CYWNrdXBEYXRhSW5wdXQuY3BwIFwKZGlmZiAtLWdpdCBhL2NvcmUvam5pL0FuZHJvaWRSdW50aW1lLmNwcCBiL2NvcmUvam5pL0FuZHJvaWRSdW50aW1lLmNwcAppbmRleCBkMzhkNzQ4Li42ZmIxMzY5IDEwMDY0NAotLS0gYS9jb3JlL2puaS9BbmRyb2lkUnVudGltZS5jcHAKKysrIGIvY29yZS9qbmkvQW5kcm9pZFJ1bnRpbWUuY3BwCkBAIC0xMjgsNiArMTI4LDcgQEAKIGV4dGVybiBpbnQgcmVnaXN0ZXJfYW5kcm9pZF9waW1fRXZlbnRSZWN1cnJlbmNlKEpOSUVudiogZW52KTsKIGV4dGVybiBpbnQgcmVnaXN0ZXJfYW5kcm9pZF90ZXh0X2Zvcm1hdF9UaW1lKEpOSUVudiogZW52KTsKIGV4dGVybiBpbnQgcmVnaXN0ZXJfYW5kcm9pZF9vc19EZWJ1ZyhKTklFbnYqIGVudik7CitleHRlcm4gaW50IHJlZ2lzdGVyX2FuZHJvaWRfb3NfTWVzc2FnZVF1ZXVlKEpOSUVudiogZW52KTsKIGV4dGVybiBpbnQgcmVnaXN0ZXJfYW5kcm9pZF9vc19QYXJjZWxGaWxlRGVzY3JpcHRvcihKTklFbnYgKmVudik7CiBleHRlcm4gaW50IHJlZ2lzdGVyX2FuZHJvaWRfb3NfUG93ZXIoSk5JRW52ICplbnYpOwogZXh0ZXJuIGludCByZWdpc3Rlcl9hbmRyb2lkX29zX1N0YXRGcyhKTklFbnYgKmVudik7CkBAIC0xNTYsMTEgKzE1NywxNSBAQAogZXh0ZXJuIGludCByZWdpc3Rlcl9hbmRyb2lkX3NlcnZlcl9XYXRjaGRvZyhKTklFbnYqIGVudik7CiBleHRlcm4gaW50IHJlZ2lzdGVyX2FuZHJvaWRfZGRtX0RkbUhhbmRsZU5hdGl2ZUhlYXAoSk5JRW52ICplbnYpOwogZXh0ZXJuIGludCByZWdpc3Rlcl9jb21fYW5kcm9pZF9pbnRlcm5hbF9vc19aeWdvdGVJbml0KEpOSUVudiogZW52KTsKLWV4dGVybiBpbnQgcmVnaXN0ZXJfYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyKEpOSUVudiogZW52KTsKIGV4dGVybiBpbnQgcmVnaXN0ZXJfYW5kcm9pZF9iYWNrdXBfQmFja3VwRGF0YUlucHV0KEpOSUVudiAqZW52KTsKIGV4dGVybiBpbnQgcmVnaXN0ZXJfYW5kcm9pZF9iYWNrdXBfQmFja3VwRGF0YU91dHB1dChKTklFbnYgKmVudik7CiBleHRlcm4gaW50IHJlZ2lzdGVyX2FuZHJvaWRfYmFja3VwX0ZpbGVCYWNrdXBIZWxwZXJCYXNlKEpOSUVudiAqZW52KTsKIGV4dGVybiBpbnQgcmVnaXN0ZXJfYW5kcm9pZF9iYWNrdXBfQmFja3VwSGVscGVyRGlzcGF0Y2hlcihKTklFbnYgKmVudik7CitleHRlcm4gaW50IHJlZ2lzdGVyX2FuZHJvaWRfYXBwX05hdGl2ZUFjdGl2aXR5KEpOSUVudiAqZW52KTsKK2V4dGVybiBpbnQgcmVnaXN0ZXJfYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbChKTklFbnYqIGVudik7CitleHRlcm4gaW50IHJlZ2lzdGVyX2FuZHJvaWRfdmlld19JbnB1dFF1ZXVlKEpOSUVudiogZW52KTsKK2V4dGVybiBpbnQgcmVnaXN0ZXJfYW5kcm9pZF92aWV3X0tleUV2ZW50KEpOSUVudiogZW52KTsKK2V4dGVybiBpbnQgcmVnaXN0ZXJfYW5kcm9pZF92aWV3X01vdGlvbkV2ZW50KEpOSUVudiogZW52KTsKIAogc3RhdGljIEFuZHJvaWRSdW50aW1lKiBnQ3VyUnVudGltZSA9IE5VTEw7CiAKQEAgLTExMzAsMTEgKzExMzUsMTMgQEAKICAqCiAgKiBUaGlzIGlzIGNhbGxlZCBmcm9tIGVsc2V3aGVyZSBpbiB0aGUgbGlicmFyeS4KICAqLwotLypzdGF0aWMqLyB2b2lkIEFuZHJvaWRSdW50aW1lOjpjcmVhdGVKYXZhVGhyZWFkKGNvbnN0IGNoYXIqIG5hbWUsCisvKnN0YXRpYyovIGFuZHJvaWRfdGhyZWFkX2lkX3QgQW5kcm9pZFJ1bnRpbWU6OmNyZWF0ZUphdmFUaHJlYWQoY29uc3QgY2hhciogbmFtZSwKICAgICB2b2lkICgqc3RhcnQpKHZvaWQgKiksIHZvaWQqIGFyZykKIHsKKyAgICBhbmRyb2lkX3RocmVhZF9pZF90IHRocmVhZElkID0gMDsKICAgICBqYXZhQ3JlYXRlVGhyZWFkRXRjKChhbmRyb2lkX3RocmVhZF9mdW5jX3QpIHN0YXJ0LCBhcmcsIG5hbWUsCi0gICAgICAgIEFORFJPSURfUFJJT1JJVFlfREVGQVVMVCwgMCwgTlVMTCk7CisgICAgICAgIEFORFJPSURfUFJJT1JJVFlfREVGQVVMVCwgMCwgJnRocmVhZElkKTsKKyAgICByZXR1cm4gdGhyZWFkSWQ7CiB9CiAKICNpZiAwCkBAIC0xMjUwLDYgKzEyNTcsNyBAQAogICAgIFJFR19KTkkocmVnaXN0ZXJfYW5kcm9pZF9vc19EZWJ1ZyksCiAgICAgUkVHX0pOSShyZWdpc3Rlcl9hbmRyb2lkX29zX0ZpbGVPYnNlcnZlciksCiAgICAgUkVHX0pOSShyZWdpc3Rlcl9hbmRyb2lkX29zX0ZpbGVVdGlscyksCisgICAgUkVHX0pOSShyZWdpc3Rlcl9hbmRyb2lkX29zX01lc3NhZ2VRdWV1ZSksCiAgICAgUkVHX0pOSShyZWdpc3Rlcl9hbmRyb2lkX29zX1BhcmNlbEZpbGVEZXNjcmlwdG9yKSwKICAgICBSRUdfSk5JKHJlZ2lzdGVyX2FuZHJvaWRfb3NfUG93ZXIpLAogICAgIFJFR19KTkkocmVnaXN0ZXJfYW5kcm9pZF9vc19TdGF0RnMpLApAQCAtMTI4MCwxMSArMTI4OCwxNiBAQAogICAgIFJFR19KTkkocmVnaXN0ZXJfYW5kcm9pZF9zZXJ2ZXJfV2F0Y2hkb2cpLAogICAgIFJFR19KTkkocmVnaXN0ZXJfYW5kcm9pZF9tZXNzYWdlX2RpZ2VzdF9zaGExKSwKICAgICBSRUdfSk5JKHJlZ2lzdGVyX2FuZHJvaWRfZGRtX0RkbUhhbmRsZU5hdGl2ZUhlYXApLAotICAgIFJFR19KTkkocmVnaXN0ZXJfYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyKSwKICAgICBSRUdfSk5JKHJlZ2lzdGVyX2FuZHJvaWRfYmFja3VwX0JhY2t1cERhdGFJbnB1dCksCiAgICAgUkVHX0pOSShyZWdpc3Rlcl9hbmRyb2lkX2JhY2t1cF9CYWNrdXBEYXRhT3V0cHV0KSwKICAgICBSRUdfSk5JKHJlZ2lzdGVyX2FuZHJvaWRfYmFja3VwX0ZpbGVCYWNrdXBIZWxwZXJCYXNlKSwKICAgICBSRUdfSk5JKHJlZ2lzdGVyX2FuZHJvaWRfYmFja3VwX0JhY2t1cEhlbHBlckRpc3BhdGNoZXIpLAorICAgIAorICAgIFJFR19KTkkocmVnaXN0ZXJfYW5kcm9pZF9hcHBfTmF0aXZlQWN0aXZpdHkpLAorICAgIFJFR19KTkkocmVnaXN0ZXJfYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbCksCisgICAgUkVHX0pOSShyZWdpc3Rlcl9hbmRyb2lkX3ZpZXdfSW5wdXRRdWV1ZSksCisgICAgUkVHX0pOSShyZWdpc3Rlcl9hbmRyb2lkX3ZpZXdfS2V5RXZlbnQpLAorICAgIFJFR19KTkkocmVnaXN0ZXJfYW5kcm9pZF92aWV3X01vdGlvbkV2ZW50KSwKIH07CiAKIC8qCmRpZmYgLS1naXQgYS9jb3JlL2puaS9hbmRyb2lkX2FwcF9OYXRpdmVBY3Rpdml0eS5jcHAgYi9jb3JlL2puaS9hbmRyb2lkX2FwcF9OYXRpdmVBY3Rpdml0eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTRhOWMyYQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvam5pL2FuZHJvaWRfYXBwX05hdGl2ZUFjdGl2aXR5LmNwcApAQCAtMCwwICsxLDU2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNkZWZpbmUgTE9HX1RBRyAiTmF0aXZlQWN0aXZpdHkiCisjaW5jbHVkZSA8dXRpbHMvTG9nLmg+CisKKyNpbmNsdWRlIDxwb2xsLmg+CisjaW5jbHVkZSA8ZGxmY24uaD4KKworI2luY2x1ZGUgPGFuZHJvaWRfcnVudGltZS9BbmRyb2lkUnVudGltZS5oPgorI2luY2x1ZGUgPGFuZHJvaWRfcnVudGltZS9hbmRyb2lkX3ZpZXdfU3VyZmFjZS5oPgorI2luY2x1ZGUgPGFuZHJvaWRfcnVudGltZS9hbmRyb2lkX2FwcF9OYXRpdmVBY3Rpdml0eS5oPgorI2luY2x1ZGUgPHN1cmZhY2VmbGluZ2VyL1N1cmZhY2UuaD4KKyNpbmNsdWRlIDx1aS9lZ2wvYW5kcm9pZF9uYXRpdmVzLmg+CisjaW5jbHVkZSA8dWkvSW5wdXRUcmFuc3BvcnQuaD4KKyNpbmNsdWRlIDx1dGlscy9Qb2xsTG9vcC5oPgorCisjaW5jbHVkZSAiSk5JSGVscC5oIgorI2luY2x1ZGUgImFuZHJvaWRfb3NfTWVzc2FnZVF1ZXVlLmgiCisjaW5jbHVkZSAiYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbC5oIgorI2luY2x1ZGUgImFuZHJvaWRfdmlld19LZXlFdmVudC5oIgorCituYW1lc3BhY2UgYW5kcm9pZAoreworCitzdGF0aWMgc3RydWN0IHsKKyAgICBqY2xhc3MgY2xheno7CisKKyAgICBqbWV0aG9kSUQgZGlzcGF0Y2hVbmhhbmRsZWRLZXlFdmVudDsKKyAgICBqbWV0aG9kSUQgc2V0V2luZG93RmxhZ3M7CisgICAgam1ldGhvZElEIHNldFdpbmRvd0Zvcm1hdDsKK30gZ05hdGl2ZUFjdGl2aXR5Q2xhc3NJbmZvOworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworc3RydWN0IEFjdGl2aXR5V29yayB7CisgICAgaW50MzJfdCBjbWQ7CisgICAgaW50MzJfdCBhcmcxOworICAgIGludDMyX3QgYXJnMjsKK307CisKK2VudW0geworICAgIENNRF9ERUZfS0VZID0gMSwKKyAgICBDTURfU0VUX1dJTkRPV19GT1JNQVQsCisgICAgQ01EX1NFVF9XSU5ET1dfRkxBR1MsCit9OworCitzdGF0aWMgdm9pZCB3cml0ZV93b3JrKGludCBmZCwgaW50MzJfdCBjbWQsIGludDMyX3QgYXJnMT0wLCBpbnQzMl90IGFyZzI9MCkgeworICAgIEFjdGl2aXR5V29yayB3b3JrOworICAgIHdvcmsuY21kID0gY21kOworICAgIHdvcmsuYXJnMSA9IGFyZzE7CisgICAgd29yay5hcmcyID0gYXJnMjsKKyAgICAKK3Jlc3RhcnQ6CisgICAgaW50IHJlcyA9IHdyaXRlKGZkLCAmd29yaywgc2l6ZW9mKHdvcmspKTsKKyAgICBpZiAocmVzIDwgMCAmJiBlcnJubyA9PSBFSU5UUikgeworICAgICAgICBnb3RvIHJlc3RhcnQ7CisgICAgfQorICAgIAorICAgIGlmIChyZXMgPT0gc2l6ZW9mKHdvcmspKSByZXR1cm47CisgICAgCisgICAgaWYgKHJlcyA8IDApIExPR1coIkZhaWxlZCB3cml0aW5nIHRvIHdvcmsgZmQ6ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICBlbHNlIExPR1coIlRydW5jYXRlZCB3cml0aW5nIHRvIHdvcmsgZmQ6ICVkIiwgcmVzKTsKK30KKworc3RhdGljIGJvb2wgcmVhZF93b3JrKGludCBmZCwgQWN0aXZpdHlXb3JrKiBvdXRXb3JrKSB7CisgICAgaW50IHJlcyA9IHJlYWQoZmQsIG91dFdvcmssIHNpemVvZihBY3Rpdml0eVdvcmspKTsKKyAgICAvLyBubyBuZWVkIHRvIHdvcnJ5IGFib3V0IEVJTlRSLCBwb2xsIGxvb3Agd2lsbCBqdXN0IGNvbWUgYmFjayBhZ2Fpbi4KKyAgICBpZiAocmVzID09IHNpemVvZihBY3Rpdml0eVdvcmspKSByZXR1cm4gdHJ1ZTsKKyAgICAKKyAgICBpZiAocmVzIDwgMCkgTE9HVygiRmFpbGVkIHJlYWRpbmcgd29yayBmZDogJXMiLCBzdHJlcnJvcihlcnJubykpOworICAgIGVsc2UgTE9HVygiVHJ1bmNhdGVkIHJlYWRpbmcgd29yayBmZDogJWQiLCByZXMpOworICAgIHJldHVybiBmYWxzZTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8qCisgKiBTcGVjaWFsaXplZCBpbnB1dCBxdWV1ZSB0aGF0IGFsbG93cyB1bmhhbmRsZWQga2V5IGV2ZW50cyB0byBiZSBkaXNwYXRjaGVkCisgKiBiYWNrIHRvIHRoZSBuYXRpdmUgYWN0aXZpdHkncyBKYXZhIGZyYW1ld29yayBjb2RlLgorICovCitzdHJ1Y3QgTXlJbnB1dFF1ZXVlIDogQUlucHV0UXVldWUgeworICAgIGV4cGxpY2l0IE15SW5wdXRRdWV1ZShjb25zdCBhbmRyb2lkOjpzcDxhbmRyb2lkOjpJbnB1dENoYW5uZWw+JiBjaGFubmVsLCBpbnQgd29ya1dyaXRlKQorICAgICAgICA6IEFJbnB1dFF1ZXVlKGNoYW5uZWwpLCBtV29ya1dyaXRlKHdvcmtXcml0ZSkgeworICAgIH0KKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgZG9EZWZhdWx0S2V5KGFuZHJvaWQ6OktleUV2ZW50KiBrZXlFdmVudCkgeworICAgICAgICBtTG9jay5sb2NrKCk7CisgICAgICAgIExPR0koIkRlZmF1bHQga2V5OiBwZW5kaW5nPSVkIHdyaXRlPSVkXG4iLCBtUGVuZGluZ0tleXMuc2l6ZSgpLCBtV29ya1dyaXRlKTsKKyAgICAgICAgaWYgKG1QZW5kaW5nS2V5cy5zaXplKCkgPD0gMCAmJiBtV29ya1dyaXRlID49IDApIHsKKyAgICAgICAgICAgIHdyaXRlX3dvcmsobVdvcmtXcml0ZSwgQ01EX0RFRl9LRVkpOworICAgICAgICB9CisgICAgICAgIG1QZW5kaW5nS2V5cy5hZGQoa2V5RXZlbnQpOworICAgICAgICBtTG9jay51bmxvY2soKTsKKyAgICB9CisgICAgCisgICAgS2V5RXZlbnQqIGdldE5leHRFdmVudCgpIHsKKyAgICAgICAgS2V5RXZlbnQqIGV2ZW50ID0gTlVMTDsKKyAgICAgICAgCisgICAgICAgIG1Mb2NrLmxvY2soKTsKKyAgICAgICAgaWYgKG1QZW5kaW5nS2V5cy5zaXplKCkgPiAwKSB7CisgICAgICAgICAgICBldmVudCA9IG1QZW5kaW5nS2V5c1swXTsKKyAgICAgICAgICAgIG1QZW5kaW5nS2V5cy5yZW1vdmVBdCgwKTsKKyAgICAgICAgfQorICAgICAgICBtTG9jay51bmxvY2soKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBldmVudDsKKyAgICB9CisgICAgCisgICAgaW50IG1Xb3JrV3JpdGU7CisgICAgCisgICAgTXV0ZXggbUxvY2s7CisgICAgVmVjdG9yPEtleUV2ZW50Kj4gbVBlbmRpbmdLZXlzOworfTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8qCisgKiBOYXRpdmUgc3RhdGUgZm9yIGludGVyYWN0aW5nIHdpdGggdGhlIE5hdGl2ZUFjdGl2aXR5IGNsYXNzLgorICovCitzdHJ1Y3QgTmF0aXZlQ29kZSA6IHB1YmxpYyBBTmF0aXZlQWN0aXZpdHkgeworICAgIE5hdGl2ZUNvZGUodm9pZCogX2RsaGFuZGxlLCBBTmF0aXZlQWN0aXZpdHlfY3JlYXRlRnVuYyogX2NyZWF0ZUZ1bmMpIHsKKyAgICAgICAgbWVtc2V0KChBTmF0aXZlQWN0aXZpdHkqKXRoaXMsIHNpemVvZihBTmF0aXZlQWN0aXZpdHkpLCAwKTsKKyAgICAgICAgbWVtc2V0KCZjYWxsYmFja3MsIHNpemVvZihjYWxsYmFja3MpLCAwKTsKKyAgICAgICAgZGxoYW5kbGUgPSBfZGxoYW5kbGU7CisgICAgICAgIGNyZWF0ZUFjdGl2aXR5RnVuYyA9IF9jcmVhdGVGdW5jOworICAgICAgICBuYXRpdmVXaW5kb3cgPSBOVUxMOworICAgICAgICBpbnB1dENoYW5uZWwgPSBOVUxMOworICAgICAgICBuYXRpdmVJbnB1dFF1ZXVlID0gTlVMTDsKKyAgICAgICAgbWFpbldvcmtSZWFkID0gbWFpbldvcmtXcml0ZSA9IC0xOworICAgIH0KKyAgICAKKyAgICB+TmF0aXZlQ29kZSgpIHsKKyAgICAgICAgaWYgKGNhbGxiYWNrcy5vbkRlc3Ryb3kgIT0gTlVMTCkgeworICAgICAgICAgICAgY2FsbGJhY2tzLm9uRGVzdHJveSh0aGlzKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZW52ICE9IE5VTEwgJiYgY2xhenogIT0gTlVMTCkgeworICAgICAgICAgICAgZW52LT5EZWxldGVHbG9iYWxSZWYoY2xhenopOworICAgICAgICB9CisgICAgICAgIGlmIChwb2xsTG9vcCAhPSBOVUxMICYmIG1haW5Xb3JrUmVhZCA+PSAwKSB7CisgICAgICAgICAgICBwb2xsTG9vcC0+cmVtb3ZlQ2FsbGJhY2sobWFpbldvcmtSZWFkKTsKKyAgICAgICAgfQorICAgICAgICBpZiAobmF0aXZlSW5wdXRRdWV1ZSAhPSBOVUxMKSB7CisgICAgICAgICAgICBuYXRpdmVJbnB1dFF1ZXVlLT5tV29ya1dyaXRlID0gLTE7CisgICAgICAgIH0KKyAgICAgICAgc2V0U3VyZmFjZShOVUxMKTsKKyAgICAgICAgc2V0SW5wdXRDaGFubmVsKE5VTEwpOworICAgICAgICBpZiAobWFpbldvcmtSZWFkID49IDApIGNsb3NlKG1haW5Xb3JrUmVhZCk7CisgICAgICAgIGlmIChtYWluV29ya1dyaXRlID49IDApIGNsb3NlKG1haW5Xb3JrV3JpdGUpOworICAgICAgICBpZiAoZGxoYW5kbGUgIT0gTlVMTCkgeworICAgICAgICAgICAgLy8gZm9yIG5vdyBkb24ndCB1bmxvYWQuLi4gIHdlIHByb2JhYmx5IHNob3VsZCBjbGVhbiB0aGlzCisgICAgICAgICAgICAvLyB1cCBhbmQgb25seSBrZWVwIG9uZSBvcGVuIGRsaGFuZGxlIHBlciBwcm9jLCBzaW5jZSB0aGVyZQorICAgICAgICAgICAgLy8gaXMgcmVhbGx5IG5vIGJlbmVmaXQgdG8gdW5sb2FkaW5nIHRoZSBjb2RlLgorICAgICAgICAgICAgLy9kbGNsb3NlKGRsaGFuZGxlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB2b2lkIHNldFN1cmZhY2Uoam9iamVjdCBfc3VyZmFjZSkgeworICAgICAgICBpZiAoX3N1cmZhY2UgIT0gTlVMTCkgeworICAgICAgICAgICAgbmF0aXZlV2luZG93ID0gYW5kcm9pZF9TdXJmYWNlX2dldE5hdGl2ZVdpbmRvdyhlbnYsIF9zdXJmYWNlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG5hdGl2ZVdpbmRvdyA9IE5VTEw7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgc3RhdHVzX3Qgc2V0SW5wdXRDaGFubmVsKGpvYmplY3QgX2NoYW5uZWwpIHsKKyAgICAgICAgaWYgKGlucHV0Q2hhbm5lbCAhPSBOVUxMKSB7CisgICAgICAgICAgICBkZWxldGUgbmF0aXZlSW5wdXRRdWV1ZTsKKyAgICAgICAgICAgIGVudi0+RGVsZXRlR2xvYmFsUmVmKGlucHV0Q2hhbm5lbCk7CisgICAgICAgIH0KKyAgICAgICAgaW5wdXRDaGFubmVsID0gTlVMTDsKKyAgICAgICAgbmF0aXZlSW5wdXRRdWV1ZSA9IE5VTEw7CisgICAgICAgIGlmIChfY2hhbm5lbCAhPSBOVUxMKSB7CisgICAgICAgICAgICBpbnB1dENoYW5uZWwgPSBlbnYtPk5ld0dsb2JhbFJlZihfY2hhbm5lbCk7CisgICAgICAgICAgICBzcDxJbnB1dENoYW5uZWw+IGljID0KKyAgICAgICAgICAgICAgICAgICAgYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbF9nZXRJbnB1dENoYW5uZWwoZW52LCBfY2hhbm5lbCk7CisgICAgICAgICAgICBpZiAoaWMgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIG5hdGl2ZUlucHV0UXVldWUgPSBuZXcgTXlJbnB1dFF1ZXVlKGljLCBtYWluV29ya1dyaXRlKTsKKyAgICAgICAgICAgICAgICBpZiAobmF0aXZlSW5wdXRRdWV1ZS0+Z2V0Q29uc3VtZXIoKS5pbml0aWFsaXplKCkgIT0gYW5kcm9pZDo6T0spIHsKKyAgICAgICAgICAgICAgICAgICAgZGVsZXRlIG5hdGl2ZUlucHV0UXVldWU7CisgICAgICAgICAgICAgICAgICAgIG5hdGl2ZUlucHV0UXVldWUgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gVU5LTk9XTl9FUlJPUjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiBVTktOT1dOX0VSUk9SOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBPSzsKKyAgICB9CisgICAgCisgICAgQU5hdGl2ZUFjdGl2aXR5Q2FsbGJhY2tzIGNhbGxiYWNrczsKKyAgICAKKyAgICB2b2lkKiBkbGhhbmRsZTsKKyAgICBBTmF0aXZlQWN0aXZpdHlfY3JlYXRlRnVuYyogY3JlYXRlQWN0aXZpdHlGdW5jOworICAgIAorICAgIFN0cmluZzggaW50ZXJuYWxEYXRhUGF0aDsKKyAgICBTdHJpbmc4IGV4dGVybmFsRGF0YVBhdGg7CisgICAgCisgICAgc3A8QU5hdGl2ZVdpbmRvdz4gbmF0aXZlV2luZG93OworICAgIGpvYmplY3QgaW5wdXRDaGFubmVsOworICAgIHN0cnVjdCBNeUlucHV0UXVldWUqIG5hdGl2ZUlucHV0UXVldWU7CisgICAgCisgICAgLy8gVGhlc2UgYXJlIHVzZWQgdG8gd2FrZSB1cCB0aGUgbWFpbiB0aHJlYWQgdG8gcHJvY2VzcyB3b3JrLgorICAgIGludCBtYWluV29ya1JlYWQ7CisgICAgaW50IG1haW5Xb3JrV3JpdGU7CisgICAgc3A8UG9sbExvb3A+IHBvbGxMb29wOworfTsKKwordm9pZCBhbmRyb2lkX05hdGl2ZUFjdGl2aXR5X3NldFdpbmRvd0Zvcm1hdCgKKyAgICAgICAgQU5hdGl2ZUFjdGl2aXR5KiBhY3Rpdml0eSwgaW50MzJfdCBmb3JtYXQpIHsKKyAgICBOYXRpdmVDb2RlKiBjb2RlID0gc3RhdGljX2Nhc3Q8TmF0aXZlQ29kZSo+KGFjdGl2aXR5KTsKKyAgICB3cml0ZV93b3JrKGNvZGUtPm1haW5Xb3JrV3JpdGUsIENNRF9TRVRfV0lORE9XX0ZPUk1BVCwgZm9ybWF0KTsKK30KKwordm9pZCBhbmRyb2lkX05hdGl2ZUFjdGl2aXR5X3NldFdpbmRvd0ZsYWdzKAorICAgICAgICBBTmF0aXZlQWN0aXZpdHkqIGFjdGl2aXR5LCBpbnQzMl90IHZhbHVlcywgaW50MzJfdCBtYXNrKSB7CisgICAgTmF0aXZlQ29kZSogY29kZSA9IHN0YXRpY19jYXN0PE5hdGl2ZUNvZGUqPihhY3Rpdml0eSk7CisgICAgd3JpdGVfd29yayhjb2RlLT5tYWluV29ya1dyaXRlLCBDTURfU0VUX1dJTkRPV19GTEFHUywgdmFsdWVzLCBtYXNrKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8qCisgKiBDYWxsYmFjayBmb3IgaGFuZGxpbmcgbmF0aXZlIGV2ZW50cyBvbiB0aGUgYXBwbGljYXRpb24ncyBtYWluIHRocmVhZC4KKyAqLworc3RhdGljIGJvb2wgbWFpbldvcmtDYWxsYmFjayhpbnQgZmQsIGludCBldmVudHMsIHZvaWQqIGRhdGEpIHsKKyAgICBOYXRpdmVDb2RlKiBjb2RlID0gKE5hdGl2ZUNvZGUqKWRhdGE7CisgICAgaWYgKChldmVudHMgJiBQT0xMSU4pID09IDApIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIEFjdGl2aXR5V29yayB3b3JrOworICAgIGlmICghcmVhZF93b3JrKGNvZGUtPm1haW5Xb3JrUmVhZCwgJndvcmspKSB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBzd2l0Y2ggKHdvcmsuY21kKSB7CisgICAgICAgIGNhc2UgQ01EX0RFRl9LRVk6IHsKKyAgICAgICAgICAgIEtleUV2ZW50KiBrZXlFdmVudDsKKyAgICAgICAgICAgIHdoaWxlICgoa2V5RXZlbnQ9Y29kZS0+bmF0aXZlSW5wdXRRdWV1ZS0+Z2V0TmV4dEV2ZW50KCkpICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBqb2JqZWN0IGlucHV0RXZlbnRPYmogPSBhbmRyb2lkX3ZpZXdfS2V5RXZlbnRfZnJvbU5hdGl2ZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUtPmVudiwga2V5RXZlbnQpOworICAgICAgICAgICAgICAgIGNvZGUtPmVudi0+Q2FsbFZvaWRNZXRob2QoY29kZS0+Y2xhenosCisgICAgICAgICAgICAgICAgICAgICAgICBnTmF0aXZlQWN0aXZpdHlDbGFzc0luZm8uZGlzcGF0Y2hVbmhhbmRsZWRLZXlFdmVudCwgaW5wdXRFdmVudE9iaik7CisgICAgICAgICAgICAgICAgaW50MzJfdCByZXMgPSBjb2RlLT5uYXRpdmVJbnB1dFF1ZXVlLT5nZXRDb25zdW1lcigpLnNlbmRGaW5pc2hlZFNpZ25hbCgpOworICAgICAgICAgICAgICAgIGlmIChyZXMgIT0gT0spIHsKKyAgICAgICAgICAgICAgICAgICAgTE9HVygiRmFpbGVkIHRvIHNlbmQgZmluaXNoZWQgc2lnbmFsIG9uIGNoYW5uZWwgJyVzJy4gIHN0YXR1cz0lZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29kZS0+bmF0aXZlSW5wdXRRdWV1ZS0+Z2V0Q29uc3VtZXIoKS5nZXRDaGFubmVsKCktPmdldE5hbWUoKS5zdHJpbmcoKSwgcmVzKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0gYnJlYWs7CisgICAgICAgIGNhc2UgQ01EX1NFVF9XSU5ET1dfRk9STUFUOiB7CisgICAgICAgICAgICBjb2RlLT5lbnYtPkNhbGxWb2lkTWV0aG9kKGNvZGUtPmNsYXp6LAorICAgICAgICAgICAgICAgICAgICBnTmF0aXZlQWN0aXZpdHlDbGFzc0luZm8uc2V0V2luZG93Rm9ybWF0LCB3b3JrLmFyZzEpOworICAgICAgICB9IGJyZWFrOworICAgICAgICBjYXNlIENNRF9TRVRfV0lORE9XX0ZMQUdTOiB7CisgICAgICAgICAgICBjb2RlLT5lbnYtPkNhbGxWb2lkTWV0aG9kKGNvZGUtPmNsYXp6LAorICAgICAgICAgICAgICAgICAgICBnTmF0aXZlQWN0aXZpdHlDbGFzc0luZm8uc2V0V2luZG93RmxhZ3MsIHdvcmsuYXJnMSwgd29yay5hcmcyKTsKKyAgICAgICAgfSBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIExPR1coIlVua25vd24gd29yayBjb21tYW5kOiAlZCIsIHdvcmsuY21kKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3N0YXRpYyBqaW50Citsb2FkTmF0aXZlQ29kZV9uYXRpdmUoSk5JRW52KiBlbnYsIGpvYmplY3QgY2xhenosIGpzdHJpbmcgcGF0aCwgam9iamVjdCBtZXNzYWdlUXVldWUsCisgICAgICAgIGpzdHJpbmcgaW50ZXJuYWxEYXRhRGlyLCBqc3RyaW5nIGV4dGVybmFsRGF0YURpciwgaW50IHNka1ZlcnNpb24pCit7CisgICAgY29uc3QgY2hhciogcGF0aFN0ciA9IGVudi0+R2V0U3RyaW5nVVRGQ2hhcnMocGF0aCwgTlVMTCk7CisgICAgTmF0aXZlQ29kZSogY29kZSA9IE5VTEw7CisgICAgCisgICAgdm9pZCogaGFuZGxlID0gZGxvcGVuKHBhdGhTdHIsIFJUTERfTEFaWSk7CisgICAgCisgICAgZW52LT5SZWxlYXNlU3RyaW5nVVRGQ2hhcnMocGF0aCwgcGF0aFN0cik7CisgICAgCisgICAgaWYgKGhhbmRsZSAhPSBOVUxMKSB7CisgICAgICAgIGNvZGUgPSBuZXcgTmF0aXZlQ29kZShoYW5kbGUsIChBTmF0aXZlQWN0aXZpdHlfY3JlYXRlRnVuYyopCisgICAgICAgICAgICAgICAgZGxzeW0oaGFuZGxlLCAiQU5hdGl2ZUFjdGl2aXR5X29uQ3JlYXRlIikpOworICAgICAgICBpZiAoY29kZS0+Y3JlYXRlQWN0aXZpdHlGdW5jID09IE5VTEwpIHsKKyAgICAgICAgICAgIExPR1coIkFOYXRpdmVBY3Rpdml0eV9vbkNyZWF0ZSBub3QgZm91bmQiKTsKKyAgICAgICAgICAgIGRlbGV0ZSBjb2RlOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGNvZGUtPnBvbGxMb29wID0gYW5kcm9pZF9vc19NZXNzYWdlUXVldWVfZ2V0UG9sbExvb3AoZW52LCBtZXNzYWdlUXVldWUpOworICAgICAgICBpZiAoY29kZS0+cG9sbExvb3AgPT0gTlVMTCkgeworICAgICAgICAgICAgTE9HVygiVW5hYmxlIHRvIHJldHJpZXZlIE1lc3NhZ2VRdWV1ZSdzIFBvbGxMb29wIik7CisgICAgICAgICAgICBkZWxldGUgY29kZTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpbnQgbXNncGlwZVsyXTsKKyAgICAgICAgaWYgKHBpcGUobXNncGlwZSkpIHsKKyAgICAgICAgICAgIExPR1coImNvdWxkIG5vdCBjcmVhdGUgcGlwZTogJXMiLCBzdHJlcnJvcihlcnJubykpOworICAgICAgICAgICAgZGVsZXRlIGNvZGU7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBjb2RlLT5tYWluV29ya1JlYWQgPSBtc2dwaXBlWzBdOworICAgICAgICBjb2RlLT5tYWluV29ya1dyaXRlID0gbXNncGlwZVsxXTsKKyAgICAgICAgY29kZS0+cG9sbExvb3AtPnNldENhbGxiYWNrKGNvZGUtPm1haW5Xb3JrUmVhZCwgUE9MTElOLCBtYWluV29ya0NhbGxiYWNrLCBjb2RlKTsKKyAgICAgICAgCisgICAgICAgIGNvZGUtPkFOYXRpdmVBY3Rpdml0eTo6Y2FsbGJhY2tzID0gJmNvZGUtPmNhbGxiYWNrczsKKyAgICAgICAgaWYgKGVudi0+R2V0SmF2YVZNKCZjb2RlLT52bSkgPCAwKSB7CisgICAgICAgICAgICBMT0dXKCJOYXRpdmVBY3Rpdml0eSBHZXRKYXZhVk0gZmFpbGVkIik7CisgICAgICAgICAgICBkZWxldGUgY29kZTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGNvZGUtPmVudiA9IGVudjsKKyAgICAgICAgY29kZS0+Y2xhenogPSBlbnYtPk5ld0dsb2JhbFJlZihjbGF6eik7CisgICAgICAgIAorICAgICAgICBjb25zdCBjaGFyKiBkaXJTdHIgPSBlbnYtPkdldFN0cmluZ1VURkNoYXJzKGludGVybmFsRGF0YURpciwgTlVMTCk7CisgICAgICAgIGNvZGUtPmludGVybmFsRGF0YVBhdGggPSBkaXJTdHI7CisgICAgICAgIGNvZGUtPmludGVybmFsRGF0YVBhdGggPSBjb2RlLT5pbnRlcm5hbERhdGFQYXRoLnN0cmluZygpOworICAgICAgICBlbnYtPlJlbGVhc2VTdHJpbmdVVEZDaGFycyhwYXRoLCBkaXJTdHIpOworICAgIAorICAgICAgICBkaXJTdHIgPSBlbnYtPkdldFN0cmluZ1VURkNoYXJzKGV4dGVybmFsRGF0YURpciwgTlVMTCk7CisgICAgICAgIGNvZGUtPmV4dGVybmFsRGF0YVBhdGggPSBkaXJTdHI7CisgICAgICAgIGNvZGUtPmV4dGVybmFsRGF0YVBhdGggPSBjb2RlLT5leHRlcm5hbERhdGFQYXRoLnN0cmluZygpOworICAgICAgICBlbnYtPlJlbGVhc2VTdHJpbmdVVEZDaGFycyhwYXRoLCBkaXJTdHIpOworICAgIAorICAgICAgICBjb2RlLT5zZGtWZXJzaW9uID0gc2RrVmVyc2lvbjsKKyAgICAgICAgCisgICAgICAgIGNvZGUtPmNyZWF0ZUFjdGl2aXR5RnVuYyhjb2RlLCBOVUxMLCAwKTsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIChqaW50KWNvZGU7Cit9CisKK3N0YXRpYyB2b2lkCit1bmxvYWROYXRpdmVDb2RlX25hdGl2ZShKTklFbnYqIGVudiwgam9iamVjdCBjbGF6eiwgamludCBoYW5kbGUpCit7CisgICAgaWYgKGhhbmRsZSAhPSAwKSB7CisgICAgICAgIE5hdGl2ZUNvZGUqIGNvZGUgPSAoTmF0aXZlQ29kZSopaGFuZGxlOworICAgICAgICBkZWxldGUgY29kZTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCitvblN0YXJ0X25hdGl2ZShKTklFbnYqIGVudiwgam9iamVjdCBjbGF6eiwgamludCBoYW5kbGUpCit7CisgICAgaWYgKGhhbmRsZSAhPSAwKSB7CisgICAgICAgIE5hdGl2ZUNvZGUqIGNvZGUgPSAoTmF0aXZlQ29kZSopaGFuZGxlOworICAgICAgICBpZiAoY29kZS0+Y2FsbGJhY2tzLm9uU3RhcnQgIT0gTlVMTCkgeworICAgICAgICAgICAgY29kZS0+Y2FsbGJhY2tzLm9uU3RhcnQoY29kZSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCitvblJlc3VtZV9uYXRpdmUoSk5JRW52KiBlbnYsIGpvYmplY3QgY2xhenosIGppbnQgaGFuZGxlKQoreworICAgIGlmIChoYW5kbGUgIT0gMCkgeworICAgICAgICBOYXRpdmVDb2RlKiBjb2RlID0gKE5hdGl2ZUNvZGUqKWhhbmRsZTsKKyAgICAgICAgaWYgKGNvZGUtPmNhbGxiYWNrcy5vblJlc3VtZSAhPSBOVUxMKSB7CisgICAgICAgICAgICBjb2RlLT5jYWxsYmFja3Mub25SZXN1bWUoY29kZSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCitvblNhdmVJbnN0YW5jZVN0YXRlX25hdGl2ZShKTklFbnYqIGVudiwgam9iamVjdCBjbGF6eiwgamludCBoYW5kbGUpCit7CisgICAgaWYgKGhhbmRsZSAhPSAwKSB7CisgICAgICAgIE5hdGl2ZUNvZGUqIGNvZGUgPSAoTmF0aXZlQ29kZSopaGFuZGxlOworICAgICAgICBpZiAoY29kZS0+Y2FsbGJhY2tzLm9uU2F2ZUluc3RhbmNlU3RhdGUgIT0gTlVMTCkgeworICAgICAgICAgICAgc2l6ZV90IGxlbiA9IDA7CisgICAgICAgICAgICBjb2RlLT5jYWxsYmFja3Mub25TYXZlSW5zdGFuY2VTdGF0ZShjb2RlLCAmbGVuKTsKKyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGljIHZvaWQKK29uUGF1c2VfbmF0aXZlKEpOSUVudiogZW52LCBqb2JqZWN0IGNsYXp6LCBqaW50IGhhbmRsZSkKK3sKKyAgICBpZiAoaGFuZGxlICE9IDApIHsKKyAgICAgICAgTmF0aXZlQ29kZSogY29kZSA9IChOYXRpdmVDb2RlKiloYW5kbGU7CisgICAgICAgIGlmIChjb2RlLT5jYWxsYmFja3Mub25QYXVzZSAhPSBOVUxMKSB7CisgICAgICAgICAgICBjb2RlLT5jYWxsYmFja3Mub25QYXVzZShjb2RlKTsKKyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGljIHZvaWQKK29uU3RvcF9uYXRpdmUoSk5JRW52KiBlbnYsIGpvYmplY3QgY2xhenosIGppbnQgaGFuZGxlKQoreworICAgIGlmIChoYW5kbGUgIT0gMCkgeworICAgICAgICBOYXRpdmVDb2RlKiBjb2RlID0gKE5hdGl2ZUNvZGUqKWhhbmRsZTsKKyAgICAgICAgaWYgKGNvZGUtPmNhbGxiYWNrcy5vblN0b3AgIT0gTlVMTCkgeworICAgICAgICAgICAgY29kZS0+Y2FsbGJhY2tzLm9uU3RvcChjb2RlKTsKKyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGljIHZvaWQKK29uTG93TWVtb3J5X25hdGl2ZShKTklFbnYqIGVudiwgam9iamVjdCBjbGF6eiwgamludCBoYW5kbGUpCit7CisgICAgaWYgKGhhbmRsZSAhPSAwKSB7CisgICAgICAgIE5hdGl2ZUNvZGUqIGNvZGUgPSAoTmF0aXZlQ29kZSopaGFuZGxlOworICAgICAgICBpZiAoY29kZS0+Y2FsbGJhY2tzLm9uTG93TWVtb3J5ICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGNvZGUtPmNhbGxiYWNrcy5vbkxvd01lbW9yeShjb2RlKTsKKyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGljIHZvaWQKK29uV2luZG93Rm9jdXNDaGFuZ2VkX25hdGl2ZShKTklFbnYqIGVudiwgam9iamVjdCBjbGF6eiwgamludCBoYW5kbGUsIGpib29sZWFuIGZvY3VzZWQpCit7CisgICAgaWYgKGhhbmRsZSAhPSAwKSB7CisgICAgICAgIE5hdGl2ZUNvZGUqIGNvZGUgPSAoTmF0aXZlQ29kZSopaGFuZGxlOworICAgICAgICBpZiAoY29kZS0+Y2FsbGJhY2tzLm9uV2luZG93Rm9jdXNDaGFuZ2VkICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGNvZGUtPmNhbGxiYWNrcy5vbldpbmRvd0ZvY3VzQ2hhbmdlZChjb2RlLCBmb2N1c2VkID8gMSA6IDApOworICAgICAgICB9CisgICAgfQorfQorCitzdGF0aWMgdm9pZAorb25TdXJmYWNlQ3JlYXRlZF9uYXRpdmUoSk5JRW52KiBlbnYsIGpvYmplY3QgY2xhenosIGppbnQgaGFuZGxlLCBqb2JqZWN0IHN1cmZhY2UpCit7CisgICAgaWYgKGhhbmRsZSAhPSAwKSB7CisgICAgICAgIE5hdGl2ZUNvZGUqIGNvZGUgPSAoTmF0aXZlQ29kZSopaGFuZGxlOworICAgICAgICBjb2RlLT5zZXRTdXJmYWNlKHN1cmZhY2UpOworICAgICAgICBpZiAoY29kZS0+bmF0aXZlV2luZG93ICE9IE5VTEwgJiYgY29kZS0+Y2FsbGJhY2tzLm9uTmF0aXZlV2luZG93Q3JlYXRlZCAhPSBOVUxMKSB7CisgICAgICAgICAgICBjb2RlLT5jYWxsYmFja3Mub25OYXRpdmVXaW5kb3dDcmVhdGVkKGNvZGUsCisgICAgICAgICAgICAgICAgICAgIGNvZGUtPm5hdGl2ZVdpbmRvdy5nZXQoKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCitvblN1cmZhY2VDaGFuZ2VkX25hdGl2ZShKTklFbnYqIGVudiwgam9iamVjdCBjbGF6eiwgamludCBoYW5kbGUsIGpvYmplY3Qgc3VyZmFjZSwKKyAgICAgICAgamludCBmb3JtYXQsIGppbnQgd2lkdGgsIGppbnQgaGVpZ2h0KQoreworICAgIGlmIChoYW5kbGUgIT0gMCkgeworICAgICAgICBOYXRpdmVDb2RlKiBjb2RlID0gKE5hdGl2ZUNvZGUqKWhhbmRsZTsKKyAgICAgICAgc3A8QU5hdGl2ZVdpbmRvdz4gb2xkTmF0aXZlV2luZG93ID0gY29kZS0+bmF0aXZlV2luZG93OworICAgICAgICBjb2RlLT5zZXRTdXJmYWNlKHN1cmZhY2UpOworICAgICAgICBpZiAob2xkTmF0aXZlV2luZG93ICE9IGNvZGUtPm5hdGl2ZVdpbmRvdykgeworICAgICAgICAgICAgaWYgKG9sZE5hdGl2ZVdpbmRvdyAhPSBOVUxMICYmIGNvZGUtPmNhbGxiYWNrcy5vbk5hdGl2ZVdpbmRvd0Rlc3Ryb3llZCAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgY29kZS0+Y2FsbGJhY2tzLm9uTmF0aXZlV2luZG93RGVzdHJveWVkKGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICBvbGROYXRpdmVXaW5kb3cuZ2V0KCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGNvZGUtPm5hdGl2ZVdpbmRvdyAhPSBOVUxMICYmIGNvZGUtPmNhbGxiYWNrcy5vbk5hdGl2ZVdpbmRvd0NyZWF0ZWQgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGNvZGUtPmNhbGxiYWNrcy5vbk5hdGl2ZVdpbmRvd0NyZWF0ZWQoY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUtPm5hdGl2ZVdpbmRvdy5nZXQoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkCitvblN1cmZhY2VEZXN0cm95ZWRfbmF0aXZlKEpOSUVudiogZW52LCBqb2JqZWN0IGNsYXp6LCBqaW50IGhhbmRsZSwgam9iamVjdCBzdXJmYWNlKQoreworICAgIGlmIChoYW5kbGUgIT0gMCkgeworICAgICAgICBOYXRpdmVDb2RlKiBjb2RlID0gKE5hdGl2ZUNvZGUqKWhhbmRsZTsKKyAgICAgICAgaWYgKGNvZGUtPm5hdGl2ZVdpbmRvdyAhPSBOVUxMICYmIGNvZGUtPmNhbGxiYWNrcy5vbk5hdGl2ZVdpbmRvd0Rlc3Ryb3llZCAhPSBOVUxMKSB7CisgICAgICAgICAgICBjb2RlLT5jYWxsYmFja3Mub25OYXRpdmVXaW5kb3dEZXN0cm95ZWQoY29kZSwKKyAgICAgICAgICAgICAgICAgICAgY29kZS0+bmF0aXZlV2luZG93LmdldCgpKTsKKyAgICAgICAgfQorICAgICAgICBjb2RlLT5zZXRTdXJmYWNlKE5VTEwpOworICAgIH0KK30KKworc3RhdGljIHZvaWQKK29uSW5wdXRDaGFubmVsQ3JlYXRlZF9uYXRpdmUoSk5JRW52KiBlbnYsIGpvYmplY3QgY2xhenosIGppbnQgaGFuZGxlLCBqb2JqZWN0IGNoYW5uZWwpCit7CisgICAgaWYgKGhhbmRsZSAhPSAwKSB7CisgICAgICAgIE5hdGl2ZUNvZGUqIGNvZGUgPSAoTmF0aXZlQ29kZSopaGFuZGxlOworICAgICAgICBzdGF0dXNfdCBlcnIgPSBjb2RlLT5zZXRJbnB1dENoYW5uZWwoY2hhbm5lbCk7CisgICAgICAgIGlmIChlcnIgIT0gT0spIHsKKyAgICAgICAgICAgIGpuaVRocm93RXhjZXB0aW9uKGVudiwgImphdmEvbGFuZy9JbGxlZ2FsU3RhdGVFeGNlcHRpb24iLAorICAgICAgICAgICAgICAgICAgICAiRXJyb3Igc2V0dGluZyBpbnB1dCBjaGFubmVsIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNvZGUtPmNhbGxiYWNrcy5vbklucHV0UXVldWVDcmVhdGVkICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGNvZGUtPmNhbGxiYWNrcy5vbklucHV0UXVldWVDcmVhdGVkKGNvZGUsCisgICAgICAgICAgICAgICAgICAgIGNvZGUtPm5hdGl2ZUlucHV0UXVldWUpOworICAgICAgICB9CisgICAgfQorfQorCitzdGF0aWMgdm9pZAorb25JbnB1dENoYW5uZWxEZXN0cm95ZWRfbmF0aXZlKEpOSUVudiogZW52LCBqb2JqZWN0IGNsYXp6LCBqaW50IGhhbmRsZSwgam9iamVjdCBjaGFubmVsKQoreworICAgIGlmIChoYW5kbGUgIT0gMCkgeworICAgICAgICBOYXRpdmVDb2RlKiBjb2RlID0gKE5hdGl2ZUNvZGUqKWhhbmRsZTsKKyAgICAgICAgaWYgKGNvZGUtPm5hdGl2ZUlucHV0UXVldWUgIT0gTlVMTAorICAgICAgICAgICAgICAgICYmIGNvZGUtPmNhbGxiYWNrcy5vbklucHV0UXVldWVEZXN0cm95ZWQgIT0gTlVMTCkgeworICAgICAgICAgICAgY29kZS0+Y2FsbGJhY2tzLm9uSW5wdXRRdWV1ZURlc3Ryb3llZChjb2RlLAorICAgICAgICAgICAgICAgICAgICBjb2RlLT5uYXRpdmVJbnB1dFF1ZXVlKTsKKyAgICAgICAgfQorICAgICAgICBjb2RlLT5zZXRJbnB1dENoYW5uZWwoTlVMTCk7CisgICAgfQorfQorCitzdGF0aWMgY29uc3QgSk5JTmF0aXZlTWV0aG9kIGdfbWV0aG9kc1tdID0geworICAgIHsgImxvYWROYXRpdmVDb2RlIiwgIihMamF2YS9sYW5nL1N0cmluZztMYW5kcm9pZC9vcy9NZXNzYWdlUXVldWU7TGphdmEvbGFuZy9TdHJpbmc7TGphdmEvbGFuZy9TdHJpbmc7SSlJIiwKKyAgICAgICAgICAgICh2b2lkKilsb2FkTmF0aXZlQ29kZV9uYXRpdmUgfSwKKyAgICB7ICJ1bmxvYWROYXRpdmVDb2RlIiwgIihJKVYiLCAodm9pZCopdW5sb2FkTmF0aXZlQ29kZV9uYXRpdmUgfSwKKyAgICB7ICJvblN0YXJ0TmF0aXZlIiwgIihJKVYiLCAodm9pZCopb25TdGFydF9uYXRpdmUgfSwKKyAgICB7ICJvblJlc3VtZU5hdGl2ZSIsICIoSSlWIiwgKHZvaWQqKW9uUmVzdW1lX25hdGl2ZSB9LAorICAgIHsgIm9uU2F2ZUluc3RhbmNlU3RhdGVOYXRpdmUiLCAiKEkpViIsICh2b2lkKilvblNhdmVJbnN0YW5jZVN0YXRlX25hdGl2ZSB9LAorICAgIHsgIm9uUGF1c2VOYXRpdmUiLCAiKEkpViIsICh2b2lkKilvblBhdXNlX25hdGl2ZSB9LAorICAgIHsgIm9uU3RvcE5hdGl2ZSIsICIoSSlWIiwgKHZvaWQqKW9uU3RvcF9uYXRpdmUgfSwKKyAgICB7ICJvbkxvd01lbW9yeU5hdGl2ZSIsICIoSSlWIiwgKHZvaWQqKW9uTG93TWVtb3J5X25hdGl2ZSB9LAorICAgIHsgIm9uV2luZG93Rm9jdXNDaGFuZ2VkTmF0aXZlIiwgIihJWilWIiwgKHZvaWQqKW9uV2luZG93Rm9jdXNDaGFuZ2VkX25hdGl2ZSB9LAorICAgIHsgIm9uU3VyZmFjZUNyZWF0ZWROYXRpdmUiLCAiKElMYW5kcm9pZC92aWV3L1N1cmZhY2U7KVYiLCAodm9pZCopb25TdXJmYWNlQ3JlYXRlZF9uYXRpdmUgfSwKKyAgICB7ICJvblN1cmZhY2VDaGFuZ2VkTmF0aXZlIiwgIihJTGFuZHJvaWQvdmlldy9TdXJmYWNlO0lJSSlWIiwgKHZvaWQqKW9uU3VyZmFjZUNoYW5nZWRfbmF0aXZlIH0sCisgICAgeyAib25TdXJmYWNlRGVzdHJveWVkTmF0aXZlIiwgIihJKVYiLCAodm9pZCopb25TdXJmYWNlRGVzdHJveWVkX25hdGl2ZSB9LAorICAgIHsgIm9uSW5wdXRDaGFubmVsQ3JlYXRlZE5hdGl2ZSIsICIoSUxhbmRyb2lkL3ZpZXcvSW5wdXRDaGFubmVsOylWIiwgKHZvaWQqKW9uSW5wdXRDaGFubmVsQ3JlYXRlZF9uYXRpdmUgfSwKKyAgICB7ICJvbklucHV0Q2hhbm5lbERlc3Ryb3llZE5hdGl2ZSIsICIoSUxhbmRyb2lkL3ZpZXcvSW5wdXRDaGFubmVsOylWIiwgKHZvaWQqKW9uSW5wdXRDaGFubmVsRGVzdHJveWVkX25hdGl2ZSB9LAorfTsKKworc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGtOYXRpdmVBY3Rpdml0eVBhdGhOYW1lID0gImFuZHJvaWQvYXBwL05hdGl2ZUFjdGl2aXR5IjsKKworI2RlZmluZSBGSU5EX0NMQVNTKHZhciwgY2xhc3NOYW1lKSBcCisgICAgICAgIHZhciA9IGVudi0+RmluZENsYXNzKGNsYXNzTmFtZSk7IFwKKyAgICAgICAgTE9HX0ZBVEFMX0lGKCEgdmFyLCAiVW5hYmxlIHRvIGZpbmQgY2xhc3MgIiBjbGFzc05hbWUpOyBcCisgICAgICAgIHZhciA9IGpjbGFzcyhlbnYtPk5ld0dsb2JhbFJlZih2YXIpKTsKKworI2RlZmluZSBHRVRfTUVUSE9EX0lEKHZhciwgY2xhenosIG1ldGhvZE5hbWUsIGZpZWxkRGVzY3JpcHRvcikgXAorICAgICAgICB2YXIgPSBlbnYtPkdldE1ldGhvZElEKGNsYXp6LCBtZXRob2ROYW1lLCBmaWVsZERlc2NyaXB0b3IpOyBcCisgICAgICAgIExPR19GQVRBTF9JRighIHZhciwgIlVuYWJsZSB0byBmaW5kIG1ldGhvZCIgbWV0aG9kTmFtZSk7CisgICAgICAgIAoraW50IHJlZ2lzdGVyX2FuZHJvaWRfYXBwX05hdGl2ZUFjdGl2aXR5KEpOSUVudiogZW52KQoreworICAgIC8vTE9HRCgicmVnaXN0ZXJfYW5kcm9pZF9hcHBfTmF0aXZlQWN0aXZpdHkiKTsKKworICAgIEZJTkRfQ0xBU1MoZ05hdGl2ZUFjdGl2aXR5Q2xhc3NJbmZvLmNsYXp6LCBrTmF0aXZlQWN0aXZpdHlQYXRoTmFtZSk7CisgICAgCisgICAgR0VUX01FVEhPRF9JRChnTmF0aXZlQWN0aXZpdHlDbGFzc0luZm8uZGlzcGF0Y2hVbmhhbmRsZWRLZXlFdmVudCwKKyAgICAgICAgICAgIGdOYXRpdmVBY3Rpdml0eUNsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgICJkaXNwYXRjaFVuaGFuZGxlZEtleUV2ZW50IiwgIihMYW5kcm9pZC92aWV3L0tleUV2ZW50OylWIik7CisKKyAgICBHRVRfTUVUSE9EX0lEKGdOYXRpdmVBY3Rpdml0eUNsYXNzSW5mby5zZXRXaW5kb3dGbGFncywKKyAgICAgICAgICAgIGdOYXRpdmVBY3Rpdml0eUNsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgICJzZXRXaW5kb3dGbGFncyIsICIoSUkpViIpOworICAgIEdFVF9NRVRIT0RfSUQoZ05hdGl2ZUFjdGl2aXR5Q2xhc3NJbmZvLnNldFdpbmRvd0Zvcm1hdCwKKyAgICAgICAgICAgIGdOYXRpdmVBY3Rpdml0eUNsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgICJzZXRXaW5kb3dGb3JtYXQiLCAiKEkpViIpOworCisgICAgcmV0dXJuIEFuZHJvaWRSdW50aW1lOjpyZWdpc3Rlck5hdGl2ZU1ldGhvZHMoCisgICAgICAgIGVudiwga05hdGl2ZUFjdGl2aXR5UGF0aE5hbWUsCisgICAgICAgIGdfbWV0aG9kcywgTkVMRU0oZ19tZXRob2RzKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL2NvcmUvam5pL2FuZHJvaWRfYmx1ZXRvb3RoX0hlYWRzZXRCYXNlLmNwcCBiL2NvcmUvam5pL2FuZHJvaWRfYmx1ZXRvb3RoX0hlYWRzZXRCYXNlLmNwcAppbmRleCAzZjE0YzNhLi40ZTlmYmFmIDEwMDY0NAotLS0gYS9jb3JlL2puaS9hbmRyb2lkX2JsdWV0b290aF9IZWFkc2V0QmFzZS5jcHAKKysrIGIvY29yZS9qbmkvYW5kcm9pZF9ibHVldG9vdGhfSGVhZHNldEJhc2UuY3BwCkBAIC0xNjksNyArMTY5LDcgQEAKICAgICAvLyBuZXZlciByZWNlaXZlIG5vbi1BU0NJSSBVVEYtOCkuCiAgICAgLy8gVGhpcyB3YXMgYWRkZWQgYmVjYXVzZSBvZiB0aGUgQk1XIDIwMDUgRTQ2IHdoaWNoIHNlbmRzIGJpbmFyeSBqdW5rLgogICAgIGlmIChpc19hc2NpaShidWYpKSB7Ci0gICAgICAgIElGX0xPR1YoKSBMT0coTE9HX1ZFUkJPU0UsICJCbHVldG9vdGggQVQgcmVjdiIsIGJ1Zik7CisgICAgICAgIElGX0xPR1YoKSBMT0coTE9HX1ZFUkJPU0UsICJCbHVldG9vdGggQVQgcmVjdiIsICIlcyIsIGJ1Zik7CiAgICAgfSBlbHNlIHsKICAgICAgICAgTE9HVygiSWdub3JpbmcgaW52YWxpZCBBVCBjb21tYW5kOiAlcyIsIGJ1Zik7CiAgICAgICAgIGJ1ZlswXSA9IE5VTEw7CkBAIC00OTQsNyArNDk0LDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICBJRl9MT0dWKCkgTE9HKExPR19WRVJCT1NFLCAiQmx1ZXRvb3RoIEFUIHNlbnQiLCBidWYpOworICAgIElGX0xPR1YoKSBMT0coTE9HX1ZFUkJPU0UsICJCbHVldG9vdGggQVQgc2VudCIsICIlcyIsIGJ1Zik7CiAKICAgICBmcmVlKGJ1Zik7CiB9CmRpZmYgLS1naXQgYS9jb3JlL2puaS9hbmRyb2lkX2JsdWV0b290aF9jb21tb24uY3BwIGIvY29yZS9qbmkvYW5kcm9pZF9ibHVldG9vdGhfY29tbW9uLmNwcAppbmRleCAzNDNmYTUzLi45YThmMWI4IDEwMDY0NAotLS0gYS9jb3JlL2puaS9hbmRyb2lkX2JsdWV0b290aF9jb21tb24uY3BwCisrKyBiL2NvcmUvam5pL2FuZHJvaWRfYmx1ZXRvb3RoX2NvbW1vbi5jcHAKQEAgLTY1LDYgKzY1LDcgQEAKICAgICB7IlBhaXJhYmxlVGltZW91dCIsIERCVVNfVFlQRV9VSU5UMzJ9LAogICAgIHsiRGlzY292ZXJpbmciLCBEQlVTX1RZUEVfQk9PTEVBTn0sCiAgICAgeyJEZXZpY2VzIiwgREJVU19UWVBFX0FSUkFZfSwKKyAgICB7IlVVSURzIiwgREJVU19UWVBFX0FSUkFZfSwKIH07CiAKIHR5cGVkZWYgdW5pb24gewpkaWZmIC0tZ2l0IGEvY29yZS9qbmkvYW5kcm9pZF9oYXJkd2FyZV9DYW1lcmEuY3BwIGIvY29yZS9qbmkvYW5kcm9pZF9oYXJkd2FyZV9DYW1lcmEuY3BwCmluZGV4IGI4NTQ2NmIuLmM3ODQ5NzQgMTAwNjQ0Ci0tLSBhL2NvcmUvam5pL2FuZHJvaWRfaGFyZHdhcmVfQ2FtZXJhLmNwcAorKysgYi9jb3JlL2puaS9hbmRyb2lkX2hhcmR3YXJlX0NhbWVyYS5jcHAKQEAgLTM0LDYgKzM0LDggQEAKIHN0cnVjdCBmaWVsZHNfdCB7CiAgICAgamZpZWxkSUQgICAgY29udGV4dDsKICAgICBqZmllbGRJRCAgICBzdXJmYWNlOworICAgIGpmaWVsZElEICAgIGZhY2luZzsKKyAgICBqZmllbGRJRCAgICBvcmllbnRhdGlvbjsKICAgICBqbWV0aG9kSUQgICBwb3N0X2V2ZW50OwogfTsKIApAQCAtMjg4LDEwICsyOTAsMzAgQEAKICAgICB9CiB9CiAKLS8vIGNvbm5lY3QgdG8gY2FtZXJhIHNlcnZpY2UKLXN0YXRpYyB2b2lkIGFuZHJvaWRfaGFyZHdhcmVfQ2FtZXJhX25hdGl2ZV9zZXR1cChKTklFbnYgKmVudiwgam9iamVjdCB0aGl6LCBqb2JqZWN0IHdlYWtfdGhpcykKK3N0YXRpYyBqaW50IGFuZHJvaWRfaGFyZHdhcmVfQ2FtZXJhX2dldE51bWJlck9mQ2FtZXJhcyhKTklFbnYgKmVudiwgam9iamVjdCB0aGl6KQogewotICAgIHNwPENhbWVyYT4gY2FtZXJhID0gQ2FtZXJhOjpjb25uZWN0KCk7CisgICAgcmV0dXJuIENhbWVyYTo6Z2V0TnVtYmVyT2ZDYW1lcmFzKCk7Cit9CisKK3N0YXRpYyB2b2lkIGFuZHJvaWRfaGFyZHdhcmVfQ2FtZXJhX2dldENhbWVyYUluZm8oSk5JRW52ICplbnYsIGpvYmplY3QgdGhpeiwKKyAgICBqaW50IGNhbWVyYUlkLCBqb2JqZWN0IGluZm9fb2JqKQoreworICAgIENhbWVyYUluZm8gY2FtZXJhSW5mbzsKKyAgICBzdGF0dXNfdCByYyA9IENhbWVyYTo6Z2V0Q2FtZXJhSW5mbyhjYW1lcmFJZCwgJmNhbWVyYUluZm8pOworICAgIGlmIChyYyAhPSBOT19FUlJPUikgeworICAgICAgICBqbmlUaHJvd0V4Y2VwdGlvbihlbnYsICJqYXZhL2xhbmcvUnVudGltZUV4Y2VwdGlvbiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsIHRvIGdldCBjYW1lcmEgaW5mbyIpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGVudi0+U2V0SW50RmllbGQoaW5mb19vYmosIGZpZWxkcy5mYWNpbmcsIGNhbWVyYUluZm8uZmFjaW5nKTsKKyAgICBlbnYtPlNldEludEZpZWxkKGluZm9fb2JqLCBmaWVsZHMub3JpZW50YXRpb24sIGNhbWVyYUluZm8ub3JpZW50YXRpb24pOworfQorCisvLyBjb25uZWN0IHRvIGNhbWVyYSBzZXJ2aWNlCitzdGF0aWMgdm9pZCBhbmRyb2lkX2hhcmR3YXJlX0NhbWVyYV9uYXRpdmVfc2V0dXAoSk5JRW52ICplbnYsIGpvYmplY3QgdGhpeiwKKyAgICBqb2JqZWN0IHdlYWtfdGhpcywgamludCBjYW1lcmFJZCkKK3sKKyAgICBzcDxDYW1lcmE+IGNhbWVyYSA9IENhbWVyYTo6Y29ubmVjdChjYW1lcmFJZCk7CiAKICAgICBpZiAoY2FtZXJhID09IE5VTEwpIHsKICAgICAgICAgam5pVGhyb3dFeGNlcHRpb24oZW52LCAiamF2YS9sYW5nL1J1bnRpbWVFeGNlcHRpb24iLApAQCAtNTY2LDggKzU4OCwxNCBAQAogLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIHN0YXRpYyBKTklOYXRpdmVNZXRob2QgY2FtTWV0aG9kc1tdID0geworICB7ICJnZXROdW1iZXJPZkNhbWVyYXMiLAorICAgICIoKUkiLAorICAgICh2b2lkICopYW5kcm9pZF9oYXJkd2FyZV9DYW1lcmFfZ2V0TnVtYmVyT2ZDYW1lcmFzIH0sCisgIHsgImdldENhbWVyYUluZm8iLAorICAgICIoSUxhbmRyb2lkL2hhcmR3YXJlL0NhbWVyYSRDYW1lcmFJbmZvOylWIiwKKyAgICAodm9pZCopYW5kcm9pZF9oYXJkd2FyZV9DYW1lcmFfZ2V0Q2FtZXJhSW5mbyB9LAogICB7ICJuYXRpdmVfc2V0dXAiLAotICAgICIoTGphdmEvbGFuZy9PYmplY3Q7KVYiLAorICAgICIoTGphdmEvbGFuZy9PYmplY3Q7SSlWIiwKICAgICAodm9pZCopYW5kcm9pZF9oYXJkd2FyZV9DYW1lcmFfbmF0aXZlX3NldHVwIH0sCiAgIHsgIm5hdGl2ZV9yZWxlYXNlIiwKICAgICAiKClWIiwKQEAgLTY1OSw3ICs2ODcsOSBAQAogewogICAgIGZpZWxkIGZpZWxkc190b19maW5kW10gPSB7CiAgICAgICAgIHsgImFuZHJvaWQvaGFyZHdhcmUvQ2FtZXJhIiwgIm1OYXRpdmVDb250ZXh0IiwgICAiSSIsICZmaWVsZHMuY29udGV4dCB9LAotICAgICAgICB7ICJhbmRyb2lkL3ZpZXcvU3VyZmFjZSIsICAgICJtU3VyZmFjZSIsICAgICAgICAgIkkiLCAmZmllbGRzLnN1cmZhY2UgfQorICAgICAgICB7ICJhbmRyb2lkL3ZpZXcvU3VyZmFjZSIsICAgIEFORFJPSURfVklFV19TVVJGQUNFX0pOSV9JRCwgIkkiLCAmZmllbGRzLnN1cmZhY2UgfSwKKyAgICAgICAgeyAiYW5kcm9pZC9oYXJkd2FyZS9DYW1lcmEkQ2FtZXJhSW5mbyIsICJtRmFjaW5nIiwgICAiSSIsICZmaWVsZHMuZmFjaW5nIH0sCisgICAgICAgIHsgImFuZHJvaWQvaGFyZHdhcmUvQ2FtZXJhJENhbWVyYUluZm8iLCAibU9yaWVudGF0aW9uIiwgICAiSSIsICZmaWVsZHMub3JpZW50YXRpb24gfSwKICAgICB9OwogCiAgICAgaWYgKGZpbmRfZmllbGRzKGVudiwgZmllbGRzX3RvX2ZpbmQsIE5FTEVNKGZpZWxkc190b19maW5kKSkgPCAwKQpkaWZmIC0tZ2l0IGEvY29yZS9qbmkvYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyLmNwcCBiL2NvcmUvam5pL2FuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGY2MGZlNmQuLjAwMDAwMDAKLS0tIGEvY29yZS9qbmkvYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDU0MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotI2RlZmluZSBMT0dfVEFHICJHcHNMb2NhdGlvblByb3ZpZGVyIgotCi0vLyNkZWZpbmUgTE9HX05EREVCVUcgMAotCi0jaW5jbHVkZSAiSk5JSGVscC5oIgotI2luY2x1ZGUgImpuaS5oIgotI2luY2x1ZGUgImhhcmR3YXJlX2xlZ2FjeS9ncHMuaCIKLSNpbmNsdWRlICJoYXJkd2FyZV9sZWdhY3kvZ3BzX25pLmgiCi0jaW5jbHVkZSAidXRpbHMvTG9nLmgiCi0jaW5jbHVkZSAidXRpbHMvbWlzYy5oIgotCi0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSA8cHRocmVhZC5oPgotCi1zdGF0aWMgcHRocmVhZF9tdXRleF90IHNFdmVudE11dGV4ID0gUFRIUkVBRF9NVVRFWF9JTklUSUFMSVpFUjsKLXN0YXRpYyBwdGhyZWFkX2NvbmRfdCBzRXZlbnRDb25kID0gUFRIUkVBRF9DT05EX0lOSVRJQUxJWkVSOwotc3RhdGljIGptZXRob2RJRCBtZXRob2RfcmVwb3J0TG9jYXRpb247Ci1zdGF0aWMgam1ldGhvZElEIG1ldGhvZF9yZXBvcnRTdGF0dXM7Ci1zdGF0aWMgam1ldGhvZElEIG1ldGhvZF9yZXBvcnRTdlN0YXR1czsKLXN0YXRpYyBqbWV0aG9kSUQgbWV0aG9kX3JlcG9ydEFHcHNTdGF0dXM7Ci1zdGF0aWMgam1ldGhvZElEIG1ldGhvZF9yZXBvcnRObWVhOwotc3RhdGljIGptZXRob2RJRCBtZXRob2RfeHRyYURvd25sb2FkUmVxdWVzdDsKLXN0YXRpYyBqbWV0aG9kSUQgbWV0aG9kX3JlcG9ydE5pTm90aWZpY2F0aW9uOwotCi1zdGF0aWMgY29uc3QgR3BzSW50ZXJmYWNlKiBzR3BzSW50ZXJmYWNlID0gTlVMTDsKLXN0YXRpYyBjb25zdCBHcHNYdHJhSW50ZXJmYWNlKiBzR3BzWHRyYUludGVyZmFjZSA9IE5VTEw7Ci1zdGF0aWMgY29uc3QgQUdwc0ludGVyZmFjZSogc0FHcHNJbnRlcmZhY2UgPSBOVUxMOwotc3RhdGljIGNvbnN0IEdwc1ByaXZhY3lJbnRlcmZhY2UqIHNHcHNQcml2YWN5SW50ZXJmYWNlID0gTlVMTDsKLXN0YXRpYyBjb25zdCBHcHNOaUludGVyZmFjZSogc0dwc05pSW50ZXJmYWNlID0gTlVMTDsKLXN0YXRpYyBjb25zdCBHcHNEZWJ1Z0ludGVyZmFjZSogc0dwc0RlYnVnSW50ZXJmYWNlID0gTlVMTDsKLQotLy8gZGF0YSB3cml0dGVuIHRvIGJ5IEdQUyBjYWxsYmFja3MKLXN0YXRpYyBHcHNMb2NhdGlvbiAgc0dwc0xvY2F0aW9uOwotc3RhdGljIEdwc1N0YXR1cyAgICBzR3BzU3RhdHVzOwotc3RhdGljIEdwc1N2U3RhdHVzICBzR3BzU3ZTdGF0dXM7Ci1zdGF0aWMgQUdwc1N0YXR1cyAgIHNBR3BzU3RhdHVzOwotc3RhdGljIEdwc05pTm90aWZpY2F0aW9uICBzR3BzTmlOb3RpZmljYXRpb247Ci0KLS8vIGJ1ZmZlciBmb3IgTk1FQSBkYXRhCi0jZGVmaW5lIE5NRUFfU0VOVEVOQ0VfTEVOR1RIICAgIDEwMAotI2RlZmluZSBOTUVBX1NFTlRFTkNFX0NPVU5UICAgICA0MAotc3RydWN0IE5tZWFTZW50ZW5jZSB7Ci0gICAgR3BzVXRjVGltZSAgdGltZXN0YW1wOwotICAgIGNoYXIgICAgICAgIG5tZWFbTk1FQV9TRU5URU5DRV9MRU5HVEhdOwotfTsKLXN0YXRpYyBObWVhU2VudGVuY2Ugc05tZWFCdWZmZXJbTk1FQV9TRU5URU5DRV9DT1VOVF07Ci1zdGF0aWMgaW50IG1ObWVhU2VudGVuY2VDb3VudCA9IDA7Ci0KLS8vIGEgY29weSBvZiB0aGUgZGF0YSBzaGFyZWQgYnkgYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX3dhaXRfZm9yX2V2ZW50Ci0vLyBhbmQgYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX3JlYWRfc3RhdHVzCi1zdGF0aWMgR3BzTG9jYXRpb24gIHNHcHNMb2NhdGlvbkNvcHk7Ci1zdGF0aWMgR3BzU3RhdHVzICAgIHNHcHNTdGF0dXNDb3B5Owotc3RhdGljIEdwc1N2U3RhdHVzICBzR3BzU3ZTdGF0dXNDb3B5Owotc3RhdGljIEFHcHNTdGF0dXMgICBzQUdwc1N0YXR1c0NvcHk7Ci1zdGF0aWMgTm1lYVNlbnRlbmNlIHNObWVhQnVmZmVyQ29weVtOTUVBX1NFTlRFTkNFX0NPVU5UXTsKLXN0YXRpYyBHcHNOaU5vdGlmaWNhdGlvbiAgc0dwc05pTm90aWZpY2F0aW9uQ29weTsKLQotZW51bSBDYWxsYmFja1R5cGUgewotICAgIGtMb2NhdGlvbiA9IDEsCi0gICAga1N0YXR1cyA9IDIsCi0gICAga1N2U3RhdHVzID0gNCwKLSAgICBrQUdwc1N0YXR1cyA9IDgsCi0gICAga1h0cmFEb3dubG9hZFJlcXVlc3QgPSAxNiwKLSAgICBrRGlzYWJsZVJlcXVlc3QgPSAzMiwKLSAgICBrTm1lYUF2YWlsYWJsZSA9IDY0LAotICAgIGtOaU5vdGlmaWNhdGlvbiA9IDEyOCwKLX07IAotc3RhdGljIGludCBzUGVuZGluZ0NhbGxiYWNrczsKLQotbmFtZXNwYWNlIGFuZHJvaWQgewotCi1zdGF0aWMgdm9pZCBsb2NhdGlvbl9jYWxsYmFjayhHcHNMb2NhdGlvbiogbG9jYXRpb24pCi17Ci0gICAgcHRocmVhZF9tdXRleF9sb2NrKCZzRXZlbnRNdXRleCk7Ci0KLSAgICBzUGVuZGluZ0NhbGxiYWNrcyB8PSBrTG9jYXRpb247Ci0gICAgbWVtY3B5KCZzR3BzTG9jYXRpb24sIGxvY2F0aW9uLCBzaXplb2Yoc0dwc0xvY2F0aW9uKSk7Ci0KLSAgICBwdGhyZWFkX2NvbmRfc2lnbmFsKCZzRXZlbnRDb25kKTsKLSAgICBwdGhyZWFkX211dGV4X3VubG9jaygmc0V2ZW50TXV0ZXgpOwotfQotCi1zdGF0aWMgdm9pZCBzdGF0dXNfY2FsbGJhY2soR3BzU3RhdHVzKiBzdGF0dXMpCi17Ci0gICAgcHRocmVhZF9tdXRleF9sb2NrKCZzRXZlbnRNdXRleCk7Ci0KLSAgICBzUGVuZGluZ0NhbGxiYWNrcyB8PSBrU3RhdHVzOwotICAgIG1lbWNweSgmc0dwc1N0YXR1cywgc3RhdHVzLCBzaXplb2Yoc0dwc1N0YXR1cykpOwotCi0gICAgcHRocmVhZF9jb25kX3NpZ25hbCgmc0V2ZW50Q29uZCk7Ci0gICAgcHRocmVhZF9tdXRleF91bmxvY2soJnNFdmVudE11dGV4KTsKLX0KLQotc3RhdGljIHZvaWQgc3Zfc3RhdHVzX2NhbGxiYWNrKEdwc1N2U3RhdHVzKiBzdl9zdGF0dXMpCi17Ci0gICAgcHRocmVhZF9tdXRleF9sb2NrKCZzRXZlbnRNdXRleCk7Ci0KLSAgICBzUGVuZGluZ0NhbGxiYWNrcyB8PSBrU3ZTdGF0dXM7Ci0gICAgbWVtY3B5KCZzR3BzU3ZTdGF0dXMsIHN2X3N0YXR1cywgc2l6ZW9mKEdwc1N2U3RhdHVzKSk7Ci0KLSAgICBwdGhyZWFkX2NvbmRfc2lnbmFsKCZzRXZlbnRDb25kKTsKLSAgICBwdGhyZWFkX211dGV4X3VubG9jaygmc0V2ZW50TXV0ZXgpOwotfQotCi1zdGF0aWMgdm9pZCBubWVhX2NhbGxiYWNrKEdwc1V0Y1RpbWUgdGltZXN0YW1wLCBjb25zdCBjaGFyKiBubWVhLCBpbnQgbGVuZ3RoKQotewotICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmc0V2ZW50TXV0ZXgpOwotCi0gICAgaWYgKGxlbmd0aCA+PSBOTUVBX1NFTlRFTkNFX0xFTkdUSCkgewotICAgICAgICBMT0dFKCJOTUVBIGRhdGEgdG9vIGxvbmcgaW4gbm1lYV9jYWxsYmFjayAobGVuZ3RoID0gJWQpXG4iLCBsZW5ndGgpOwotICAgICAgICBsZW5ndGggPSBOTUVBX1NFTlRFTkNFX0xFTkdUSCAtIDE7Ci0gICAgfQotICAgIGlmIChtTm1lYVNlbnRlbmNlQ291bnQgPj0gTk1FQV9TRU5URU5DRV9DT1VOVCkgewotICAgICAgICBMT0dFKCJOTUVBIGRhdGEgb3ZlcmZsb3dlZCBidWZmZXJcbiIpOwotICAgICAgICBwdGhyZWFkX211dGV4X3VubG9jaygmc0V2ZW50TXV0ZXgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc1BlbmRpbmdDYWxsYmFja3MgfD0ga05tZWFBdmFpbGFibGU7Ci0gICAgc05tZWFCdWZmZXJbbU5tZWFTZW50ZW5jZUNvdW50XS50aW1lc3RhbXAgPSB0aW1lc3RhbXA7Ci0gICAgbWVtY3B5KHNObWVhQnVmZmVyW21ObWVhU2VudGVuY2VDb3VudF0ubm1lYSwgbm1lYSwgbGVuZ3RoKTsKLSAgICBzTm1lYUJ1ZmZlclttTm1lYVNlbnRlbmNlQ291bnRdLm5tZWFbbGVuZ3RoXSA9IDA7Ci0gICAgbU5tZWFTZW50ZW5jZUNvdW50Kys7Ci0KLSAgICBwdGhyZWFkX2NvbmRfc2lnbmFsKCZzRXZlbnRDb25kKTsKLSAgICBwdGhyZWFkX211dGV4X3VubG9jaygmc0V2ZW50TXV0ZXgpOwotfQotCi1zdGF0aWMgdm9pZCBhZ3BzX3N0YXR1c19jYWxsYmFjayhBR3BzU3RhdHVzKiBhZ3BzX3N0YXR1cykKLXsKLSAgICBwdGhyZWFkX211dGV4X2xvY2soJnNFdmVudE11dGV4KTsKLQotICAgIHNQZW5kaW5nQ2FsbGJhY2tzIHw9IGtBR3BzU3RhdHVzOwotICAgIG1lbWNweSgmc0FHcHNTdGF0dXMsIGFncHNfc3RhdHVzLCBzaXplb2YoQUdwc1N0YXR1cykpOwotCi0gICAgcHRocmVhZF9jb25kX3NpZ25hbCgmc0V2ZW50Q29uZCk7Ci0gICAgcHRocmVhZF9tdXRleF91bmxvY2soJnNFdmVudE11dGV4KTsKLX0KLQotR3BzQ2FsbGJhY2tzIHNHcHNDYWxsYmFja3MgPSB7Ci0gICAgbG9jYXRpb25fY2FsbGJhY2ssCi0gICAgc3RhdHVzX2NhbGxiYWNrLAotICAgIHN2X3N0YXR1c19jYWxsYmFjaywKLSAgICBubWVhX2NhbGxiYWNrCi19OwotCi1zdGF0aWMgdm9pZAotZG93bmxvYWRfcmVxdWVzdF9jYWxsYmFjaygpCi17Ci0gICAgcHRocmVhZF9tdXRleF9sb2NrKCZzRXZlbnRNdXRleCk7Ci0gICAgc1BlbmRpbmdDYWxsYmFja3MgfD0ga1h0cmFEb3dubG9hZFJlcXVlc3Q7Ci0gICAgcHRocmVhZF9jb25kX3NpZ25hbCgmc0V2ZW50Q29uZCk7Ci0gICAgcHRocmVhZF9tdXRleF91bmxvY2soJnNFdmVudE11dGV4KTsKLX0KLQotc3RhdGljIHZvaWQKLWdwc19uaV9ub3RpZnlfY2FsbGJhY2soR3BzTmlOb3RpZmljYXRpb24gKm5vdGlmaWNhdGlvbikKLXsKLSAgIExPR0QoImdwc19uaV9ub3RpZnlfY2FsbGJhY2s6IG5vdGlmPSVkIiwgbm90aWZpY2F0aW9uLT5ub3RpZmljYXRpb25faWQpOwotCi0gICBwdGhyZWFkX211dGV4X2xvY2soJnNFdmVudE11dGV4KTsKLQotICAgc1BlbmRpbmdDYWxsYmFja3MgfD0ga05pTm90aWZpY2F0aW9uOwotICAgbWVtY3B5KCZzR3BzTmlOb3RpZmljYXRpb24sIG5vdGlmaWNhdGlvbiwgc2l6ZW9mKEdwc05pTm90aWZpY2F0aW9uKSk7Ci0KLSAgIHB0aHJlYWRfY29uZF9zaWduYWwoJnNFdmVudENvbmQpOwotICAgcHRocmVhZF9tdXRleF91bmxvY2soJnNFdmVudE11dGV4KTsKLX0KLQotR3BzWHRyYUNhbGxiYWNrcyBzR3BzWHRyYUNhbGxiYWNrcyA9IHsKLSAgICBkb3dubG9hZF9yZXF1ZXN0X2NhbGxiYWNrLAotfTsKLQotQUdwc0NhbGxiYWNrcyBzQUdwc0NhbGxiYWNrcyA9IHsKLSAgICBhZ3BzX3N0YXR1c19jYWxsYmFjaywKLX07Ci0KLUdwc05pQ2FsbGJhY2tzIHNHcHNOaUNhbGxiYWNrcyA9IHsKLSAgICBncHNfbmlfbm90aWZ5X2NhbGxiYWNrLAotfTsKLQotc3RhdGljIHZvaWQgYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX2NsYXNzX2luaXRfbmF0aXZlKEpOSUVudiogZW52LCBqY2xhc3MgY2xhenopIHsKLSAgICBtZXRob2RfcmVwb3J0TG9jYXRpb24gPSBlbnYtPkdldE1ldGhvZElEKGNsYXp6LCAicmVwb3J0TG9jYXRpb24iLCAiKElERERGRkZKKVYiKTsKLSAgICBtZXRob2RfcmVwb3J0U3RhdHVzID0gZW52LT5HZXRNZXRob2RJRChjbGF6eiwgInJlcG9ydFN0YXR1cyIsICIoSSlWIik7Ci0gICAgbWV0aG9kX3JlcG9ydFN2U3RhdHVzID0gZW52LT5HZXRNZXRob2RJRChjbGF6eiwgInJlcG9ydFN2U3RhdHVzIiwgIigpViIpOwotICAgIG1ldGhvZF9yZXBvcnRBR3BzU3RhdHVzID0gZW52LT5HZXRNZXRob2RJRChjbGF6eiwgInJlcG9ydEFHcHNTdGF0dXMiLCAiKElJKVYiKTsKLSAgICBtZXRob2RfcmVwb3J0Tm1lYSA9IGVudi0+R2V0TWV0aG9kSUQoY2xhenosICJyZXBvcnRObWVhIiwgIihJSilWIik7Ci0gICAgbWV0aG9kX3h0cmFEb3dubG9hZFJlcXVlc3QgPSBlbnYtPkdldE1ldGhvZElEKGNsYXp6LCAieHRyYURvd25sb2FkUmVxdWVzdCIsICIoKVYiKTsKLSAgICBtZXRob2RfcmVwb3J0TmlOb3RpZmljYXRpb24gPSBlbnYtPkdldE1ldGhvZElEKGNsYXp6LCAicmVwb3J0TmlOb3RpZmljYXRpb24iLCAiKElJSUlJTGphdmEvbGFuZy9TdHJpbmc7TGphdmEvbGFuZy9TdHJpbmc7SUlMamF2YS9sYW5nL1N0cmluZzspViIpOwotfQotCi1zdGF0aWMgamJvb2xlYW4gYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX2lzX3N1cHBvcnRlZChKTklFbnYqIGVudiwgamNsYXNzIGNsYXp6KSB7Ci0gICAgaWYgKCFzR3BzSW50ZXJmYWNlKQotICAgICAgICBzR3BzSW50ZXJmYWNlID0gZ3BzX2dldF9pbnRlcmZhY2UoKTsKLSAgICByZXR1cm4gKHNHcHNJbnRlcmZhY2UgIT0gTlVMTCk7Ci19Ci0KLXN0YXRpYyBqYm9vbGVhbiBhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfaW5pdChKTklFbnYqIGVudiwgam9iamVjdCBvYmopCi17Ci0gICAgaWYgKCFzR3BzSW50ZXJmYWNlKQotICAgICAgICBzR3BzSW50ZXJmYWNlID0gZ3BzX2dldF9pbnRlcmZhY2UoKTsKLSAgICBpZiAoIXNHcHNJbnRlcmZhY2UgfHwgc0dwc0ludGVyZmFjZS0+aW5pdCgmc0dwc0NhbGxiYWNrcykgIT0gMCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgaWYgKCFzQUdwc0ludGVyZmFjZSkKLSAgICAgICAgc0FHcHNJbnRlcmZhY2UgPSAoY29uc3QgQUdwc0ludGVyZmFjZSopc0dwc0ludGVyZmFjZS0+Z2V0X2V4dGVuc2lvbihBR1BTX0lOVEVSRkFDRSk7Ci0gICAgaWYgKHNBR3BzSW50ZXJmYWNlKQotICAgICAgICBzQUdwc0ludGVyZmFjZS0+aW5pdCgmc0FHcHNDYWxsYmFja3MpOwotCi0gICAgaWYgKCFzR3BzTmlJbnRlcmZhY2UpCi0gICAgICAgIHNHcHNOaUludGVyZmFjZSA9IChjb25zdCBHcHNOaUludGVyZmFjZSopc0dwc0ludGVyZmFjZS0+Z2V0X2V4dGVuc2lvbihHUFNfTklfSU5URVJGQUNFKTsKLSAgICBpZiAoc0dwc05pSW50ZXJmYWNlKQotICAgICAgICBzR3BzTmlJbnRlcmZhY2UtPmluaXQoJnNHcHNOaUNhbGxiYWNrcyk7Ci0KLSAgICAvLyBDbGVhciBwcml2YWN5IGxvY2sgd2hpbGUgZW5hYmxlZAotICAgIGlmICghc0dwc1ByaXZhY3lJbnRlcmZhY2UpCi0gICAgICAgIHNHcHNQcml2YWN5SW50ZXJmYWNlID0gKGNvbnN0IEdwc1ByaXZhY3lJbnRlcmZhY2UqKXNHcHNJbnRlcmZhY2UtPmdldF9leHRlbnNpb24oR1BTX1BSSVZBQ1lfSU5URVJGQUNFKTsKLSAgICBpZiAoc0dwc1ByaXZhY3lJbnRlcmZhY2UpCi0gICAgICAgIHNHcHNQcml2YWN5SW50ZXJmYWNlLT5zZXRfcHJpdmFjeV9sb2NrKDApOwotCi0gICAgaWYgKCFzR3BzRGVidWdJbnRlcmZhY2UpCi0gICAgICAgc0dwc0RlYnVnSW50ZXJmYWNlID0gKGNvbnN0IEdwc0RlYnVnSW50ZXJmYWNlKilzR3BzSW50ZXJmYWNlLT5nZXRfZXh0ZW5zaW9uKEdQU19ERUJVR19JTlRFUkZBQ0UpOwotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXN0YXRpYyB2b2lkIGFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9kaXNhYmxlKEpOSUVudiogZW52LCBqb2JqZWN0IG9iaikKLXsKLSAgICAvLyBFbmFibGUgcHJpdmFjeSBsb2NrIHdoaWxlIGRpc2FibGVkCi0gICAgaWYgKCFzR3BzUHJpdmFjeUludGVyZmFjZSkKLSAgICAgICAgc0dwc1ByaXZhY3lJbnRlcmZhY2UgPSAoY29uc3QgR3BzUHJpdmFjeUludGVyZmFjZSopc0dwc0ludGVyZmFjZS0+Z2V0X2V4dGVuc2lvbihHUFNfUFJJVkFDWV9JTlRFUkZBQ0UpOwotICAgIGlmIChzR3BzUHJpdmFjeUludGVyZmFjZSkKLSAgICAgICAgc0dwc1ByaXZhY3lJbnRlcmZhY2UtPnNldF9wcml2YWN5X2xvY2soMSk7Ci0KLSAgICBwdGhyZWFkX211dGV4X2xvY2soJnNFdmVudE11dGV4KTsKLSAgICBzUGVuZGluZ0NhbGxiYWNrcyB8PSBrRGlzYWJsZVJlcXVlc3Q7Ci0gICAgcHRocmVhZF9jb25kX3NpZ25hbCgmc0V2ZW50Q29uZCk7Ci0gICAgcHRocmVhZF9tdXRleF91bmxvY2soJnNFdmVudE11dGV4KTsKLX0KLQotc3RhdGljIHZvaWQgYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX2NsZWFudXAoSk5JRW52KiBlbnYsIGpvYmplY3Qgb2JqKQotewotICAgIHNHcHNJbnRlcmZhY2UtPmNsZWFudXAoKTsKLX0KLQotc3RhdGljIGpib29sZWFuIGFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9zdGFydChKTklFbnYqIGVudiwgam9iamVjdCBvYmosIGppbnQgcG9zaXRpb25Nb2RlLAotICAgICAgICBqYm9vbGVhbiBzaW5nbGVGaXgsIGppbnQgZml4RnJlcXVlbmN5KQotewotICAgIGludCByZXN1bHQgPSBzR3BzSW50ZXJmYWNlLT5zZXRfcG9zaXRpb25fbW9kZShwb3NpdGlvbk1vZGUsIChzaW5nbGVGaXggPyAwIDogZml4RnJlcXVlbmN5KSk7Ci0gICAgaWYgKHJlc3VsdCkgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIChzR3BzSW50ZXJmYWNlLT5zdGFydCgpID09IDApOwotfQotCi1zdGF0aWMgamJvb2xlYW4gYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX3N0b3AoSk5JRW52KiBlbnYsIGpvYmplY3Qgb2JqKQotewotICAgIHJldHVybiAoc0dwc0ludGVyZmFjZS0+c3RvcCgpID09IDApOwotfQotCi1zdGF0aWMgdm9pZCBhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfZGVsZXRlX2FpZGluZ19kYXRhKEpOSUVudiogZW52LCBqb2JqZWN0IG9iaiwgamludCBmbGFncykKLXsKLSAgICBzR3BzSW50ZXJmYWNlLT5kZWxldGVfYWlkaW5nX2RhdGEoZmxhZ3MpOwotfQotCi1zdGF0aWMgdm9pZCBhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfd2FpdF9mb3JfZXZlbnQoSk5JRW52KiBlbnYsIGpvYmplY3Qgb2JqKQotewotICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmc0V2ZW50TXV0ZXgpOwotICAgIHdoaWxlIChzUGVuZGluZ0NhbGxiYWNrcyA9PSAwKSB7Ci0gICAgICAgIHB0aHJlYWRfY29uZF93YWl0KCZzRXZlbnRDb25kLCAmc0V2ZW50TXV0ZXgpOwotICAgIH0KLQotICAgIC8vIGNvcHkgYW5kIGNsZWFyIHRoZSBjYWxsYmFjayBmbGFncwotICAgIGludCBwZW5kaW5nQ2FsbGJhY2tzID0gc1BlbmRpbmdDYWxsYmFja3M7Ci0gICAgc1BlbmRpbmdDYWxsYmFja3MgPSAwOwotICAgIGludCBubWVhU2VudGVuY2VDb3VudCA9IG1ObWVhU2VudGVuY2VDb3VudDsKLSAgICBtTm1lYVNlbnRlbmNlQ291bnQgPSAwOwotICAgIAotICAgIC8vIGNvcHkgZXZlcnl0aGluZyBhbmQgdW5sb2NrIHRoZSBtdXRleCBiZWZvcmUgY2FsbGluZyBpbnRvIEphdmEgY29kZSB0byBhdm9pZCB0aGUgcG9zc2liaWxpdHkKLSAgICAvLyBvZiB0aW1lb3V0cyBpbiB0aGUgR1BTIGVuZ2luZS4KLSAgICBpZiAocGVuZGluZ0NhbGxiYWNrcyAmIGtMb2NhdGlvbikKLSAgICAgICAgbWVtY3B5KCZzR3BzTG9jYXRpb25Db3B5LCAmc0dwc0xvY2F0aW9uLCBzaXplb2Yoc0dwc0xvY2F0aW9uQ29weSkpOwotICAgIGlmIChwZW5kaW5nQ2FsbGJhY2tzICYga1N0YXR1cykKLSAgICAgICAgbWVtY3B5KCZzR3BzU3RhdHVzQ29weSwgJnNHcHNTdGF0dXMsIHNpemVvZihzR3BzU3RhdHVzQ29weSkpOwotICAgIGlmIChwZW5kaW5nQ2FsbGJhY2tzICYga1N2U3RhdHVzKQotICAgICAgICBtZW1jcHkoJnNHcHNTdlN0YXR1c0NvcHksICZzR3BzU3ZTdGF0dXMsIHNpemVvZihzR3BzU3ZTdGF0dXNDb3B5KSk7Ci0gICAgaWYgKHBlbmRpbmdDYWxsYmFja3MgJiBrQUdwc1N0YXR1cykKLSAgICAgICAgbWVtY3B5KCZzQUdwc1N0YXR1c0NvcHksICZzQUdwc1N0YXR1cywgc2l6ZW9mKHNBR3BzU3RhdHVzQ29weSkpOwotICAgIGlmIChwZW5kaW5nQ2FsbGJhY2tzICYga05tZWFBdmFpbGFibGUpCi0gICAgICAgIG1lbWNweSgmc05tZWFCdWZmZXJDb3B5LCAmc05tZWFCdWZmZXIsIG5tZWFTZW50ZW5jZUNvdW50ICogc2l6ZW9mKHNObWVhQnVmZmVyWzBdKSk7Ci0gICAgaWYgKHBlbmRpbmdDYWxsYmFja3MgJiBrTmlOb3RpZmljYXRpb24pCi0gICAgICAgIG1lbWNweSgmc0dwc05pTm90aWZpY2F0aW9uQ29weSwgJnNHcHNOaU5vdGlmaWNhdGlvbiwgc2l6ZW9mKHNHcHNOaU5vdGlmaWNhdGlvbkNvcHkpKTsKLSAgICBwdGhyZWFkX211dGV4X3VubG9jaygmc0V2ZW50TXV0ZXgpOyAgIAotCi0gICAgaWYgKHBlbmRpbmdDYWxsYmFja3MgJiBrTG9jYXRpb24pIHsKLSAgICAgICAgZW52LT5DYWxsVm9pZE1ldGhvZChvYmosIG1ldGhvZF9yZXBvcnRMb2NhdGlvbiwgc0dwc0xvY2F0aW9uQ29weS5mbGFncywKLSAgICAgICAgICAgICAgICAoamRvdWJsZSlzR3BzTG9jYXRpb25Db3B5LmxhdGl0dWRlLCAoamRvdWJsZSlzR3BzTG9jYXRpb25Db3B5LmxvbmdpdHVkZSwKLSAgICAgICAgICAgICAgICAoamRvdWJsZSlzR3BzTG9jYXRpb25Db3B5LmFsdGl0dWRlLAotICAgICAgICAgICAgICAgIChqZmxvYXQpc0dwc0xvY2F0aW9uQ29weS5zcGVlZCwgKGpmbG9hdClzR3BzTG9jYXRpb25Db3B5LmJlYXJpbmcsCi0gICAgICAgICAgICAgICAgKGpmbG9hdClzR3BzTG9jYXRpb25Db3B5LmFjY3VyYWN5LCAoamxvbmcpc0dwc0xvY2F0aW9uQ29weS50aW1lc3RhbXApOwotICAgIH0KLSAgICBpZiAocGVuZGluZ0NhbGxiYWNrcyAmIGtTdGF0dXMpIHsKLSAgICAgICAgZW52LT5DYWxsVm9pZE1ldGhvZChvYmosIG1ldGhvZF9yZXBvcnRTdGF0dXMsIHNHcHNTdGF0dXNDb3B5LnN0YXR1cyk7Ci0gICAgfQotICAgIGlmIChwZW5kaW5nQ2FsbGJhY2tzICYga1N2U3RhdHVzKSB7Ci0gICAgICAgIGVudi0+Q2FsbFZvaWRNZXRob2Qob2JqLCBtZXRob2RfcmVwb3J0U3ZTdGF0dXMpOwotICAgIH0KLSAgICBpZiAocGVuZGluZ0NhbGxiYWNrcyAmIGtBR3BzU3RhdHVzKSB7Ci0gICAgICAgIGVudi0+Q2FsbFZvaWRNZXRob2Qob2JqLCBtZXRob2RfcmVwb3J0QUdwc1N0YXR1cywgc0FHcHNTdGF0dXNDb3B5LnR5cGUsIHNBR3BzU3RhdHVzQ29weS5zdGF0dXMpOwotICAgIH0gIAotICAgIGlmIChwZW5kaW5nQ2FsbGJhY2tzICYga05tZWFBdmFpbGFibGUpIHsKLSAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBubWVhU2VudGVuY2VDb3VudDsgaSsrKSB7Ci0gICAgICAgICAgICBlbnYtPkNhbGxWb2lkTWV0aG9kKG9iaiwgbWV0aG9kX3JlcG9ydE5tZWEsIGksIHNObWVhQnVmZmVyW2ldLnRpbWVzdGFtcCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgaWYgKHBlbmRpbmdDYWxsYmFja3MgJiBrWHRyYURvd25sb2FkUmVxdWVzdCkgewotICAgICAgICBlbnYtPkNhbGxWb2lkTWV0aG9kKG9iaiwgbWV0aG9kX3h0cmFEb3dubG9hZFJlcXVlc3QpOwotICAgIH0KLSAgICBpZiAocGVuZGluZ0NhbGxiYWNrcyAmIGtEaXNhYmxlUmVxdWVzdCkgewotICAgICAgICAvLyBkb24ndCBuZWVkIHRvIGRvIGFueXRoaW5nIC0gd2UgYXJlIGp1c3QgcG9raW5nIHNvIHdhaXRfZm9yX2V2ZW50IHdpbGwgcmV0dXJuLgotICAgIH0KLSAgICBpZiAocGVuZGluZ0NhbGxiYWNrcyAmIGtOaU5vdGlmaWNhdGlvbikgewotICAgICAgIExPR0QoImFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl93YWl0X2Zvcl9ldmVudDogc2VudCBub3RpZmljYXRpb24gY2FsbGJhY2suIik7Ci0gICAgICAganN0cmluZyByZXFJZCA9IGVudi0+TmV3U3RyaW5nVVRGKHNHcHNOaU5vdGlmaWNhdGlvbkNvcHkucmVxdWVzdG9yX2lkKTsKLSAgICAgICBqc3RyaW5nIHRleHQgPSBlbnYtPk5ld1N0cmluZ1VURihzR3BzTmlOb3RpZmljYXRpb25Db3B5LnRleHQpOwotICAgICAgIGpzdHJpbmcgZXh0cmFzID0gZW52LT5OZXdTdHJpbmdVVEYoc0dwc05pTm90aWZpY2F0aW9uQ29weS5leHRyYXMpOwotICAgICAgIGVudi0+Q2FsbFZvaWRNZXRob2Qob2JqLCBtZXRob2RfcmVwb3J0TmlOb3RpZmljYXRpb24sCi0gICAgICAgICAgICAgc0dwc05pTm90aWZpY2F0aW9uQ29weS5ub3RpZmljYXRpb25faWQsCi0gICAgICAgICAgICAgc0dwc05pTm90aWZpY2F0aW9uQ29weS5uaV90eXBlLAotICAgICAgICAgICAgIHNHcHNOaU5vdGlmaWNhdGlvbkNvcHkubm90aWZ5X2ZsYWdzLAotICAgICAgICAgICAgIHNHcHNOaU5vdGlmaWNhdGlvbkNvcHkudGltZW91dCwKLSAgICAgICAgICAgICBzR3BzTmlOb3RpZmljYXRpb25Db3B5LmRlZmF1bHRfcmVzcG9uc2UsCi0gICAgICAgICAgICAgcmVxSWQsCi0gICAgICAgICAgICAgdGV4dCwKLSAgICAgICAgICAgICBzR3BzTmlOb3RpZmljYXRpb25Db3B5LnJlcXVlc3Rvcl9pZF9lbmNvZGluZywKLSAgICAgICAgICAgICBzR3BzTmlOb3RpZmljYXRpb25Db3B5LnRleHRfZW5jb2RpbmcsCi0gICAgICAgICAgICAgZXh0cmFzCi0gICAgICAgKTsKLSAgICB9Ci19Ci0KLXN0YXRpYyBqaW50IGFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9yZWFkX3N2X3N0YXR1cyhKTklFbnYqIGVudiwgam9iamVjdCBvYmosCi0gICAgICAgIGppbnRBcnJheSBwcm5BcnJheSwgamZsb2F0QXJyYXkgc25yQXJyYXksIGpmbG9hdEFycmF5IGVsZXZBcnJheSwgamZsb2F0QXJyYXkgYXp1bUFycmF5LAotICAgICAgICBqaW50QXJyYXkgbWFza0FycmF5KQotewotICAgIC8vIHRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGZyb20gd2l0aGluIGEgY2FsbCB0byByZXBvcnRTdGF0dXMsIHNvIHdlIGRvbid0IG5lZWQgdG8gbG9jayBoZXJlCi0KLSAgICBqaW50KiBwcm5zID0gZW52LT5HZXRJbnRBcnJheUVsZW1lbnRzKHBybkFycmF5LCAwKTsKLSAgICBqZmxvYXQqIHNucnMgPSBlbnYtPkdldEZsb2F0QXJyYXlFbGVtZW50cyhzbnJBcnJheSwgMCk7Ci0gICAgamZsb2F0KiBlbGV2ID0gZW52LT5HZXRGbG9hdEFycmF5RWxlbWVudHMoZWxldkFycmF5LCAwKTsKLSAgICBqZmxvYXQqIGF6aW0gPSBlbnYtPkdldEZsb2F0QXJyYXlFbGVtZW50cyhhenVtQXJyYXksIDApOwotICAgIGppbnQqIG1hc2sgPSBlbnYtPkdldEludEFycmF5RWxlbWVudHMobWFza0FycmF5LCAwKTsKLQotICAgIGludCBudW1fc3ZzID0gc0dwc1N2U3RhdHVzQ29weS5udW1fc3ZzOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbnVtX3N2czsgaSsrKSB7Ci0gICAgICAgIHBybnNbaV0gPSBzR3BzU3ZTdGF0dXNDb3B5LnN2X2xpc3RbaV0ucHJuOwotICAgICAgICBzbnJzW2ldID0gc0dwc1N2U3RhdHVzQ29weS5zdl9saXN0W2ldLnNucjsKLSAgICAgICAgZWxldltpXSA9IHNHcHNTdlN0YXR1c0NvcHkuc3ZfbGlzdFtpXS5lbGV2YXRpb247Ci0gICAgICAgIGF6aW1baV0gPSBzR3BzU3ZTdGF0dXNDb3B5LnN2X2xpc3RbaV0uYXppbXV0aDsKLSAgICB9Ci0gICAgbWFza1swXSA9IHNHcHNTdlN0YXR1c0NvcHkuZXBoZW1lcmlzX21hc2s7Ci0gICAgbWFza1sxXSA9IHNHcHNTdlN0YXR1c0NvcHkuYWxtYW5hY19tYXNrOwotICAgIG1hc2tbMl0gPSBzR3BzU3ZTdGF0dXNDb3B5LnVzZWRfaW5fZml4X21hc2s7Ci0KLSAgICBlbnYtPlJlbGVhc2VJbnRBcnJheUVsZW1lbnRzKHBybkFycmF5LCBwcm5zLCAwKTsKLSAgICBlbnYtPlJlbGVhc2VGbG9hdEFycmF5RWxlbWVudHMoc25yQXJyYXksIHNucnMsIDApOwotICAgIGVudi0+UmVsZWFzZUZsb2F0QXJyYXlFbGVtZW50cyhlbGV2QXJyYXksIGVsZXYsIDApOwotICAgIGVudi0+UmVsZWFzZUZsb2F0QXJyYXlFbGVtZW50cyhhenVtQXJyYXksIGF6aW0sIDApOwotICAgIGVudi0+UmVsZWFzZUludEFycmF5RWxlbWVudHMobWFza0FycmF5LCBtYXNrLCAwKTsKLSAgICByZXR1cm4gbnVtX3N2czsKLX0KLQotc3RhdGljIGppbnQgYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX3JlYWRfbm1lYShKTklFbnYqIGVudiwgam9iamVjdCBvYmosIGppbnQgaW5kZXgsIGpieXRlQXJyYXkgbm1lYUFycmF5LCBqaW50IGJ1ZmZlcl9zaXplKQotewotICAgIC8vIHRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGZyb20gd2l0aGluIGEgY2FsbCB0byByZXBvcnRObWVhLCBzbyB3ZSBkb24ndCBuZWVkIHRvIGxvY2sgaGVyZQotCi0gICAgamJ5dGUqIG5tZWEgPSBlbnYtPkdldEJ5dGVBcnJheUVsZW1lbnRzKG5tZWFBcnJheSwgMCk7Ci0KLSAgICBpbnQgbGVuZ3RoID0gc3RybGVuKHNObWVhQnVmZmVyQ29weVtpbmRleF0ubm1lYSk7Ci0gICAgaWYgKGxlbmd0aCA+IGJ1ZmZlcl9zaXplKQotICAgICAgICBsZW5ndGggPSBidWZmZXJfc2l6ZTsKLSAgICBtZW1jcHkobm1lYSwgc05tZWFCdWZmZXJDb3B5W2luZGV4XS5ubWVhLCBsZW5ndGgpOwotCi0gICAgZW52LT5SZWxlYXNlQnl0ZUFycmF5RWxlbWVudHMobm1lYUFycmF5LCBubWVhLCAwKTsKLSAgICByZXR1cm4gbGVuZ3RoOwotfQotCi1zdGF0aWMgdm9pZCBhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfaW5qZWN0X3RpbWUoSk5JRW52KiBlbnYsIGpvYmplY3Qgb2JqLCBqbG9uZyB0aW1lLCAKLSAgICAgICAgamxvbmcgdGltZVJlZmVyZW5jZSwgamludCB1bmNlcnRhaW50eSkKLXsKLSAgICBzR3BzSW50ZXJmYWNlLT5pbmplY3RfdGltZSh0aW1lLCB0aW1lUmVmZXJlbmNlLCB1bmNlcnRhaW50eSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9pbmplY3RfbG9jYXRpb24oSk5JRW52KiBlbnYsIGpvYmplY3Qgb2JqLAotICAgICAgICBqZG91YmxlIGxhdGl0dWRlLCBqZG91YmxlIGxvbmdpdHVkZSwgamZsb2F0IGFjY3VyYWN5KQotewotICAgIHNHcHNJbnRlcmZhY2UtPmluamVjdF9sb2NhdGlvbihsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSk7Ci19Ci0KLXN0YXRpYyBqYm9vbGVhbiBhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfc3VwcG9ydHNfeHRyYShKTklFbnYqIGVudiwgam9iamVjdCBvYmopCi17Ci0gICAgaWYgKCFzR3BzWHRyYUludGVyZmFjZSkgewotICAgICAgICBzR3BzWHRyYUludGVyZmFjZSA9IChjb25zdCBHcHNYdHJhSW50ZXJmYWNlKilzR3BzSW50ZXJmYWNlLT5nZXRfZXh0ZW5zaW9uKEdQU19YVFJBX0lOVEVSRkFDRSk7Ci0gICAgICAgIGlmIChzR3BzWHRyYUludGVyZmFjZSkgewotICAgICAgICAgICAgaW50IHJlc3VsdCA9IHNHcHNYdHJhSW50ZXJmYWNlLT5pbml0KCZzR3BzWHRyYUNhbGxiYWNrcyk7Ci0gICAgICAgICAgICBpZiAocmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgc0dwc1h0cmFJbnRlcmZhY2UgPSBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIChzR3BzWHRyYUludGVyZmFjZSAhPSBOVUxMKTsKLX0KLQotc3RhdGljIHZvaWQgYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX2luamVjdF94dHJhX2RhdGEoSk5JRW52KiBlbnYsIGpvYmplY3Qgb2JqLAotICAgICAgICBqYnl0ZUFycmF5IGRhdGEsIGppbnQgbGVuZ3RoKQotewotICAgIGpieXRlKiBieXRlcyA9IGVudi0+R2V0Qnl0ZUFycmF5RWxlbWVudHMoZGF0YSwgMCk7Ci0gICAgc0dwc1h0cmFJbnRlcmZhY2UtPmluamVjdF94dHJhX2RhdGEoKGNoYXIgKilieXRlcywgbGVuZ3RoKTsKLSAgICBlbnYtPlJlbGVhc2VCeXRlQXJyYXlFbGVtZW50cyhkYXRhLCBieXRlcywgMCk7Ci19Ci0KLXN0YXRpYyB2b2lkIGFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9hZ3BzX2RhdGFfY29ubl9vcGVuKEpOSUVudiogZW52LCBqb2JqZWN0IG9iaiwganN0cmluZyBhcG4pCi17Ci0gICAgaWYgKCFzQUdwc0ludGVyZmFjZSkgewotICAgICAgICBzQUdwc0ludGVyZmFjZSA9IChjb25zdCBBR3BzSW50ZXJmYWNlKilzR3BzSW50ZXJmYWNlLT5nZXRfZXh0ZW5zaW9uKEFHUFNfSU5URVJGQUNFKTsKLSAgICB9Ci0gICAgaWYgKHNBR3BzSW50ZXJmYWNlKSB7Ci0gICAgICAgIGlmIChhcG4gPT0gTlVMTCkgewotICAgICAgICAgICAgam5pVGhyb3dFeGNlcHRpb24oZW52LCAiamF2YS9sYW5nL0lsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIsIE5VTEwpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGNvbnN0IGNoYXIgKmFwblN0ciA9IGVudi0+R2V0U3RyaW5nVVRGQ2hhcnMoYXBuLCBOVUxMKTsKLSAgICAgICAgc0FHcHNJbnRlcmZhY2UtPmRhdGFfY29ubl9vcGVuKGFwblN0cik7Ci0gICAgICAgIGVudi0+UmVsZWFzZVN0cmluZ1VURkNoYXJzKGFwbiwgYXBuU3RyKTsKLSAgICB9Ci19Ci0KLXN0YXRpYyB2b2lkIGFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9hZ3BzX2RhdGFfY29ubl9jbG9zZWQoSk5JRW52KiBlbnYsIGpvYmplY3Qgb2JqKQotewotICAgIGlmICghc0FHcHNJbnRlcmZhY2UpIHsKLSAgICAgICAgc0FHcHNJbnRlcmZhY2UgPSAoY29uc3QgQUdwc0ludGVyZmFjZSopc0dwc0ludGVyZmFjZS0+Z2V0X2V4dGVuc2lvbihBR1BTX0lOVEVSRkFDRSk7Ci0gICAgfQotICAgIGlmIChzQUdwc0ludGVyZmFjZSkgewotICAgICAgICBzQUdwc0ludGVyZmFjZS0+ZGF0YV9jb25uX2Nsb3NlZCgpOwotICAgIH0KLX0KLQotc3RhdGljIHZvaWQgYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX2FncHNfZGF0YV9jb25uX2ZhaWxlZChKTklFbnYqIGVudiwgam9iamVjdCBvYmopCi17Ci0gICAgaWYgKCFzQUdwc0ludGVyZmFjZSkgewotICAgICAgICBzQUdwc0ludGVyZmFjZSA9IChjb25zdCBBR3BzSW50ZXJmYWNlKilzR3BzSW50ZXJmYWNlLT5nZXRfZXh0ZW5zaW9uKEFHUFNfSU5URVJGQUNFKTsKLSAgICB9Ci0gICAgaWYgKHNBR3BzSW50ZXJmYWNlKSB7Ci0gICAgICAgIHNBR3BzSW50ZXJmYWNlLT5kYXRhX2Nvbm5fZmFpbGVkKCk7Ci0gICAgfQotfQotCi1zdGF0aWMgdm9pZCBhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfc2V0X2FncHNfc2VydmVyKEpOSUVudiogZW52LCBqb2JqZWN0IG9iaiwKLSAgICAgICAgamludCB0eXBlLCBqc3RyaW5nIGhvc3RuYW1lLCBqaW50IHBvcnQpCi17Ci0gICAgaWYgKCFzQUdwc0ludGVyZmFjZSkgewotICAgICAgICBzQUdwc0ludGVyZmFjZSA9IChjb25zdCBBR3BzSW50ZXJmYWNlKilzR3BzSW50ZXJmYWNlLT5nZXRfZXh0ZW5zaW9uKEFHUFNfSU5URVJGQUNFKTsKLSAgICB9Ci0gICAgaWYgKHNBR3BzSW50ZXJmYWNlKSB7Ci0gICAgICAgIGNvbnN0IGNoYXIgKmNfaG9zdG5hbWUgPSBlbnYtPkdldFN0cmluZ1VURkNoYXJzKGhvc3RuYW1lLCBOVUxMKTsKLSAgICAgICAgc0FHcHNJbnRlcmZhY2UtPnNldF9zZXJ2ZXIodHlwZSwgY19ob3N0bmFtZSwgcG9ydCk7Ci0gICAgICAgIGVudi0+UmVsZWFzZVN0cmluZ1VURkNoYXJzKGhvc3RuYW1lLCBjX2hvc3RuYW1lKTsKLSAgICB9Ci19Ci0KLXN0YXRpYyB2b2lkIGFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9zZW5kX25pX3Jlc3BvbnNlKEpOSUVudiogZW52LCBqb2JqZWN0IG9iaiwKLSAgICAgIGppbnQgbm90aWZJZCwgamludCByZXNwb25zZSkKLXsKLSAgICBpZiAoIXNHcHNOaUludGVyZmFjZSkKLSAgICAgICAgc0dwc05pSW50ZXJmYWNlID0gKGNvbnN0IEdwc05pSW50ZXJmYWNlKilzR3BzSW50ZXJmYWNlLT5nZXRfZXh0ZW5zaW9uKEdQU19OSV9JTlRFUkZBQ0UpOwotICAgIGlmIChzR3BzTmlJbnRlcmZhY2UpCi0gICAgICAgIHNHcHNOaUludGVyZmFjZS0+cmVzcG9uZChub3RpZklkLCByZXNwb25zZSk7Ci19Ci0KLXN0YXRpYyBqc3RyaW5nIGFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9nZXRfaW50ZXJuYWxfc3RhdGUoSk5JRW52KiBlbnYsIGpvYmplY3Qgb2JqKQotewotICAgIGpzdHJpbmcgcmVzdWx0ID0gTlVMTDsKLSAgICBpZiAoc0dwc0RlYnVnSW50ZXJmYWNlKSB7Ci0gICAgICAgIGNvbnN0IHNpemVfdCBtYXhMZW5ndGggPSAyMDQ3OwotICAgICAgICBjaGFyIGJ1ZmZlclttYXhMZW5ndGgrMV07Ci0gICAgICAgIHNpemVfdCBsZW5ndGggPSBzR3BzRGVidWdJbnRlcmZhY2UtPmdldF9pbnRlcm5hbF9zdGF0ZShidWZmZXIsIG1heExlbmd0aCk7Ci0gICAgICAgIGlmIChsZW5ndGggPiBtYXhMZW5ndGgpIGxlbmd0aCA9IG1heExlbmd0aDsKLSAgICAgICAgYnVmZmVyW2xlbmd0aF0gPSAwOwotICAgICAgICByZXN1bHQgPSBlbnYtPk5ld1N0cmluZ1VURihidWZmZXIpOwotICAgIH0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi1zdGF0aWMgSk5JTmF0aXZlTWV0aG9kIHNNZXRob2RzW10gPSB7Ci0gICAgIC8qIG5hbWUsIHNpZ25hdHVyZSwgZnVuY1B0ciAqLwotICAgIHsiY2xhc3NfaW5pdF9uYXRpdmUiLCAiKClWIiwgKHZvaWQgKilhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfY2xhc3NfaW5pdF9uYXRpdmV9LAotICAgIHsibmF0aXZlX2lzX3N1cHBvcnRlZCIsICIoKVoiLCAodm9pZCopYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX2lzX3N1cHBvcnRlZH0sCi0gICAgeyJuYXRpdmVfaW5pdCIsICIoKVoiLCAodm9pZCopYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX2luaXR9LAotICAgIHsibmF0aXZlX2Rpc2FibGUiLCAiKClWIiwgKHZvaWQqKWFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9kaXNhYmxlfSwKLSAgICB7Im5hdGl2ZV9jbGVhbnVwIiwgIigpViIsICh2b2lkKilhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfY2xlYW51cH0sCi0gICAgeyJuYXRpdmVfc3RhcnQiLCAiKElaSSlaIiwgKHZvaWQqKWFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9zdGFydH0sCi0gICAgeyJuYXRpdmVfc3RvcCIsICIoKVoiLCAodm9pZCopYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX3N0b3B9LAotICAgIHsibmF0aXZlX2RlbGV0ZV9haWRpbmdfZGF0YSIsICIoSSlWIiwgKHZvaWQqKWFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9kZWxldGVfYWlkaW5nX2RhdGF9LAotICAgIHsibmF0aXZlX3dhaXRfZm9yX2V2ZW50IiwgIigpViIsICh2b2lkKilhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfd2FpdF9mb3JfZXZlbnR9LAotICAgIHsibmF0aXZlX3JlYWRfc3Zfc3RhdHVzIiwgIihbSVtGW0ZbRltJKUkiLCAodm9pZCopYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX3JlYWRfc3Zfc3RhdHVzfSwKLSAgICB7Im5hdGl2ZV9yZWFkX25tZWEiLCAiKElbQkkpSSIsICh2b2lkKilhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfcmVhZF9ubWVhfSwKLSAgICB7Im5hdGl2ZV9pbmplY3RfdGltZSIsICIoSkpJKVYiLCAodm9pZCopYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX2luamVjdF90aW1lfSwKLSAgICB7Im5hdGl2ZV9pbmplY3RfbG9jYXRpb24iLCAiKERERilWIiwgKHZvaWQqKWFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9pbmplY3RfbG9jYXRpb259LAotICAgIHsibmF0aXZlX3N1cHBvcnRzX3h0cmEiLCAiKClaIiwgKHZvaWQqKWFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9zdXBwb3J0c194dHJhfSwKLSAgICB7Im5hdGl2ZV9pbmplY3RfeHRyYV9kYXRhIiwgIihbQkkpViIsICh2b2lkKilhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfaW5qZWN0X3h0cmFfZGF0YX0sCi0gICAgeyJuYXRpdmVfYWdwc19kYXRhX2Nvbm5fb3BlbiIsICIoTGphdmEvbGFuZy9TdHJpbmc7KVYiLCAodm9pZCopYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX2FncHNfZGF0YV9jb25uX29wZW59LAotICAgIHsibmF0aXZlX2FncHNfZGF0YV9jb25uX2Nsb3NlZCIsICIoKVYiLCAodm9pZCopYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX2FncHNfZGF0YV9jb25uX2Nsb3NlZH0sCi0gICAgeyJuYXRpdmVfYWdwc19kYXRhX2Nvbm5fZmFpbGVkIiwgIigpViIsICh2b2lkKilhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfYWdwc19kYXRhX2Nvbm5fZmFpbGVkfSwKLSAgICB7Im5hdGl2ZV9zZXRfYWdwc19zZXJ2ZXIiLCAiKElMamF2YS9sYW5nL1N0cmluZztJKVYiLCAodm9pZCopYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX3NldF9hZ3BzX3NlcnZlcn0sCi0gICAgeyJuYXRpdmVfc2VuZF9uaV9yZXNwb25zZSIsICIoSUkpViIsICh2b2lkKilhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfc2VuZF9uaV9yZXNwb25zZX0sCi0gICAgeyJuYXRpdmVfZ2V0X2ludGVybmFsX3N0YXRlIiwgIigpTGphdmEvbGFuZy9TdHJpbmc7IiwgKHZvaWQqKWFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9nZXRfaW50ZXJuYWxfc3RhdGV9LAotfTsKLQotaW50IHJlZ2lzdGVyX2FuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcihKTklFbnYqIGVudikKLXsKLSAgICByZXR1cm4gam5pUmVnaXN0ZXJOYXRpdmVNZXRob2RzKGVudiwgImNvbS9hbmRyb2lkL2ludGVybmFsL2xvY2F0aW9uL0dwc0xvY2F0aW9uUHJvdmlkZXIiLCBzTWV0aG9kcywgTkVMRU0oc01ldGhvZHMpKTsKLX0KLQotfSAvKiBuYW1lc3BhY2UgYW5kcm9pZCAqLwpkaWZmIC0tZ2l0IGEvY29yZS9qbmkvYW5kcm9pZF9tZWRpYV9BdWRpb1RyYWNrLmNwcCBiL2NvcmUvam5pL2FuZHJvaWRfbWVkaWFfQXVkaW9UcmFjay5jcHAKaW5kZXggNjVjMDQzNS4uY2U0M2U3MyAxMDA2NDQKLS0tIGEvY29yZS9qbmkvYW5kcm9pZF9tZWRpYV9BdWRpb1RyYWNrLmNwcAorKysgYi9jb3JlL2puaS9hbmRyb2lkX21lZGlhX0F1ZGlvVHJhY2suY3BwCkBAIC0xNjYsNyArMTY2LDcgQEAKIHN0YXRpYyBpbnQKIGFuZHJvaWRfbWVkaWFfQXVkaW9UcmFja19uYXRpdmVfc2V0dXAoSk5JRW52ICplbnYsIGpvYmplY3QgdGhpeiwgam9iamVjdCB3ZWFrX3RoaXMsCiAgICAgICAgIGppbnQgc3RyZWFtVHlwZSwgamludCBzYW1wbGVSYXRlSW5IZXJ0eiwgamludCBjaGFubmVscywKLSAgICAgICAgamludCBhdWRpb0Zvcm1hdCwgamludCBidWZmU2l6ZUluQnl0ZXMsIGppbnQgbWVtb3J5TW9kZSkKKyAgICAgICAgamludCBhdWRpb0Zvcm1hdCwgamludCBidWZmU2l6ZUluQnl0ZXMsIGppbnQgbWVtb3J5TW9kZSwgamludEFycmF5IGpTZXNzaW9uKQogewogICAgIExPR1YoInNhbXBsZVJhdGU9JWQsIGF1ZGlvRm9ybWF0KGZyb20gSmF2YSk9JWQsIGNoYW5uZWxzPSV4LCBidWZmU2l6ZT0lZCIsCiAgICAgICAgIHNhbXBsZVJhdGVJbkhlcnR6LCBhdWRpb0Zvcm1hdCwgY2hhbm5lbHMsIGJ1ZmZTaXplSW5CeXRlcyk7CkBAIC0yNTMsNiArMjUzLDIwIEBACiAgICAgCiAgICAgbHBKbmlTdG9yYWdlLT5tU3RyZWFtVHlwZSA9IGF0U3RyZWFtVHlwZTsKICAgICAKKyAgICBqaW50KiBuU2Vzc2lvbiA9IE5VTEw7CisgICAgaWYgKGpTZXNzaW9uKSB7CisgICAgICAgIG5TZXNzaW9uID0gKGppbnQgKikgZW52LT5HZXRQcmltaXRpdmVBcnJheUNyaXRpY2FsKGpTZXNzaW9uLCBOVUxMKTsKKyAgICAgICAgaWYgKG5TZXNzaW9uID09IE5VTEwpIHsKKyAgICAgICAgICAgIExPR0UoIkVycm9yIGNyZWF0aW5nIEF1ZGlvVHJhY2s6IEVycm9yIHJldHJpZXZpbmcgc2Vzc2lvbiBpZCBwb2ludGVyIik7CisgICAgICAgICAgICBkZWxldGUgbHBKbmlTdG9yYWdlOworICAgICAgICAgICAgcmV0dXJuIEFVRElPVFJBQ0tfRVJST1I7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBMT0dFKCJFcnJvciBjcmVhdGluZyBBdWRpb1RyYWNrOiBpbnZhbGlkIHNlc3Npb24gSUQgcG9pbnRlciIpOworICAgICAgICBkZWxldGUgbHBKbmlTdG9yYWdlOworICAgICAgICByZXR1cm4gQVVESU9UUkFDS19FUlJPUjsKKyAgICB9CisKICAgICAvLyBjcmVhdGUgdGhlIG5hdGl2ZSBBdWRpb1RyYWNrIG9iamVjdAogICAgIEF1ZGlvVHJhY2sqIGxwVHJhY2sgPSBuZXcgQXVkaW9UcmFjaygpOwogICAgIGlmIChscFRyYWNrID09IE5VTEwpIHsKQEAgLTI3Myw3ICsyODcsOCBAQAogICAgICAgICAgICAgYXVkaW9DYWxsYmFjaywgJihscEpuaVN0b3JhZ2UtPm1DYWxsYmFja0RhdGEpLC8vY2FsbGJhY2ssIGNhbGxiYWNrIGRhdGEgKHVzZXIpCiAgICAgICAgICAgICAwLC8vIG5vdGlmaWNhdGlvbkZyYW1lcyA9PSAwIHNpbmNlIG5vdCB1c2luZyBFVkVOVF9NT1JFX0RBVEEgdG8gZmVlZCB0aGUgQXVkaW9UcmFjawogICAgICAgICAgICAgMCwvLyBzaGFyZWQgbWVtCi0gICAgICAgICAgICB0cnVlKTsvLyB0aHJlYWQgY2FuIGNhbGwgSmF2YQorICAgICAgICAgICAgdHJ1ZSwvLyB0aHJlYWQgY2FuIGNhbGwgSmF2YQorICAgICAgICAgICAgblNlc3Npb25bMF0pOy8vIGF1ZGlvIHNlc3Npb24gSUQKICAgICAgICAgICAgIAogICAgIH0gZWxzZSBpZiAobWVtb3J5TW9kZSA9PSBqYXZhQXVkaW9UcmFja0ZpZWxkcy5NT0RFX1NUQVRJQykgewogICAgICAgICAvLyBBdWRpb1RyYWNrIGlzIHVzaW5nIHNoYXJlZCBtZW1vcnkKQEAgLTI5Myw3ICszMDgsOCBAQAogICAgICAgICAgICAgYXVkaW9DYWxsYmFjaywgJihscEpuaVN0b3JhZ2UtPm1DYWxsYmFja0RhdGEpLC8vY2FsbGJhY2ssIGNhbGxiYWNrIGRhdGEgKHVzZXIpKTsKICAgICAgICAgICAgIDAsLy8gbm90aWZpY2F0aW9uRnJhbWVzID09IDAgc2luY2Ugbm90IHVzaW5nIEVWRU5UX01PUkVfREFUQSB0byBmZWVkIHRoZSBBdWRpb1RyYWNrIAogICAgICAgICAgICAgbHBKbmlTdG9yYWdlLT5tTWVtQmFzZSwvLyBzaGFyZWQgbWVtCi0gICAgICAgICAgICB0cnVlKTsvLyB0aHJlYWQgY2FuIGNhbGwgSmF2YSAKKyAgICAgICAgICAgIHRydWUsLy8gdGhyZWFkIGNhbiBjYWxsIEphdmEKKyAgICAgICAgICAgIG5TZXNzaW9uWzBdKTsvLyBhdWRpbyBzZXNzaW9uIElECiAgICAgfQogCiAgICAgaWYgKGxwVHJhY2stPmluaXRDaGVjaygpICE9IE5PX0VSUk9SKSB7CkBAIC0zMDEsNiArMzE3LDEyIEBACiAgICAgICAgIGdvdG8gbmF0aXZlX2luaXRfZmFpbHVyZTsKICAgICB9CiAKKyAgICAvLyByZWFkIHRoZSBhdWRpbyBzZXNzaW9uIElEIGJhY2sgZnJvbSBBdWRpb1RyYWNrIGluIGNhc2Ugd2UgY3JlYXRlIGEgbmV3IHNlc3Npb24KKyAgICBuU2Vzc2lvblswXSA9IGxwVHJhY2stPmdldFNlc3Npb25JZCgpOworCisgICAgZW52LT5SZWxlYXNlUHJpbWl0aXZlQXJyYXlDcml0aWNhbChqU2Vzc2lvbiwgblNlc3Npb24sIDApOworICAgIG5TZXNzaW9uID0gTlVMTDsKKwogICAgIC8vIHNhdmUgb3VyIG5ld2x5IGNyZWF0ZWQgQysrIEF1ZGlvVHJhY2sgaW4gdGhlICJuYXRpdmVUcmFja0luSmF2YU9iaiIgZmllbGQgCiAgICAgLy8gb2YgdGhlIEphdmEgb2JqZWN0IChpbiBtTmF0aXZlVHJhY2tJbkphdmFPYmopCiAgICAgZW52LT5TZXRJbnRGaWVsZCh0aGl6LCBqYXZhQXVkaW9UcmFja0ZpZWxkcy5uYXRpdmVUcmFja0luSmF2YU9iaiwgKGludClscFRyYWNrKTsKQEAgLTMxNyw2ICszMzksOSBAQAogICAgIGVudi0+U2V0SW50RmllbGQodGhpeiwgamF2YUF1ZGlvVHJhY2tGaWVsZHMubmF0aXZlVHJhY2tJbkphdmFPYmosIDApOwogICAgIAogbmF0aXZlX3RyYWNrX2ZhaWx1cmU6CisgICAgaWYgKG5TZXNzaW9uICE9IE5VTEwpIHsKKyAgICAgICAgZW52LT5SZWxlYXNlUHJpbWl0aXZlQXJyYXlDcml0aWNhbChqU2Vzc2lvbiwgblNlc3Npb24sIDApOworICAgIH0KICAgICBlbnYtPkRlbGV0ZUdsb2JhbFJlZihscEpuaVN0b3JhZ2UtPm1DYWxsYmFja0RhdGEuYXVkaW9UcmFja19jbGFzcyk7CiAgICAgZW52LT5EZWxldGVHbG9iYWxSZWYobHBKbmlTdG9yYWdlLT5tQ2FsbGJhY2tEYXRhLmF1ZGlvVHJhY2tfcmVmKTsKICAgICBkZWxldGUgbHBKbmlTdG9yYWdlOwpAQCAtNzg1LDcgKzgxMCw3IEBACiAgICAgeyJuYXRpdmVfc3RvcCIsICAgICAgICAgICIoKVYiLCAgICAgICh2b2lkICopYW5kcm9pZF9tZWRpYV9BdWRpb1RyYWNrX3N0b3B9LAogICAgIHsibmF0aXZlX3BhdXNlIiwgICAgICAgICAiKClWIiwgICAgICAodm9pZCAqKWFuZHJvaWRfbWVkaWFfQXVkaW9UcmFja19wYXVzZX0sCiAgICAgeyJuYXRpdmVfZmx1c2giLCAgICAgICAgICIoKVYiLCAgICAgICh2b2lkICopYW5kcm9pZF9tZWRpYV9BdWRpb1RyYWNrX2ZsdXNofSwKLSAgICB7Im5hdGl2ZV9zZXR1cCIsICAgICAgICAgIihMamF2YS9sYW5nL09iamVjdDtJSUlJSUkpSSIsIAorICAgIHsibmF0aXZlX3NldHVwIiwgICAgICAgICAiKExqYXZhL2xhbmcvT2JqZWN0O0lJSUlJSVtJKUkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKWFuZHJvaWRfbWVkaWFfQXVkaW9UcmFja19uYXRpdmVfc2V0dXB9LAogICAgIHsibmF0aXZlX2ZpbmFsaXplIiwgICAgICAiKClWIiwgICAgICAodm9pZCAqKWFuZHJvaWRfbWVkaWFfQXVkaW9UcmFja19uYXRpdmVfZmluYWxpemV9LAogICAgIHsibmF0aXZlX3JlbGVhc2UiLCAgICAgICAiKClWIiwgICAgICAodm9pZCAqKWFuZHJvaWRfbWVkaWFfQXVkaW9UcmFja19uYXRpdmVfcmVsZWFzZX0sCmRpZmYgLS1naXQgYS9jb3JlL2puaS9hbmRyb2lkX29wZW5nbF9HTEVTMjAuY3BwIGIvY29yZS9qbmkvYW5kcm9pZF9vcGVuZ2xfR0xFUzIwLmNwcAppbmRleCBmZDFjOGZkLi5lZjI1MzE5IDEwMDY0NAotLS0gYS9jb3JlL2puaS9hbmRyb2lkX29wZW5nbF9HTEVTMjAuY3BwCisrKyBiL2NvcmUvam5pL2FuZHJvaWRfb3BlbmdsX0dMRVMyMC5jcHAKQEAgLTgyMyw2ICs4MjMsMTggQEAKICAgICApOwogfQogCisvKiB2b2lkIGdsRHJhd0VsZW1lbnRzICggR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBHTGludCBvZmZzZXQgKSAqLworc3RhdGljIHZvaWQKK2FuZHJvaWRfZ2xEcmF3RWxlbWVudHNfX0lJSUkKKyAgKEpOSUVudiAqX2Vudiwgam9iamVjdCBfdGhpcywgamludCBtb2RlLCBqaW50IGNvdW50LCBqaW50IHR5cGUsIGppbnQgb2Zmc2V0KSB7CisgICAgZ2xEcmF3RWxlbWVudHMoCisgICAgICAgIChHTGVudW0pbW9kZSwKKyAgICAgICAgKEdMc2l6ZWkpY291bnQsCisgICAgICAgIChHTGVudW0pdHlwZSwKKyAgICAgICAgKGNvbnN0IEdMdm9pZCAqKW9mZnNldAorICAgICk7Cit9CisKIC8qIHZvaWQgZ2xEcmF3RWxlbWVudHMgKCBHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaWNlcyApICovCiBzdGF0aWMgdm9pZAogYW5kcm9pZF9nbERyYXdFbGVtZW50c19fSUlJTGphdmFfbmlvX0J1ZmZlcl8yCkBAIC00Nzg2LDYgKzQ3OTgsMjAgQEAKICAgICB9CiB9CiAKKy8qIHZvaWQgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyICggR0x1aW50IGluZHgsIEdMaW50IHNpemUsIEdMZW51bSB0eXBlLCBHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0xzaXplaSBzdHJpZGUsIEdMaW50IG9mZnNldCApICovCitzdGF0aWMgdm9pZAorYW5kcm9pZF9nbFZlcnRleEF0dHJpYlBvaW50ZXJfX0lJSVpJSQorICAoSk5JRW52ICpfZW52LCBqb2JqZWN0IF90aGlzLCBqaW50IGluZHgsIGppbnQgc2l6ZSwgamludCB0eXBlLCBqYm9vbGVhbiBub3JtYWxpemVkLCBqaW50IHN0cmlkZSwgamludCBvZmZzZXQpIHsKKyAgICBnbFZlcnRleEF0dHJpYlBvaW50ZXIoCisgICAgICAgIChHTHVpbnQpaW5keCwKKyAgICAgICAgKEdMaW50KXNpemUsCisgICAgICAgIChHTGVudW0pdHlwZSwKKyAgICAgICAgKEdMYm9vbGVhbilub3JtYWxpemVkLAorICAgICAgICAoR0xzaXplaSlzdHJpZGUsCisgICAgICAgIChjb25zdCBHTHZvaWQgKilvZmZzZXQKKyAgICApOworfQorCiAvKiB2b2lkIGdsVmVydGV4QXR0cmliUG9pbnRlciAoIEdMdWludCBpbmR4LCBHTGludCBzaXplLCBHTGVudW0gdHlwZSwgR0xib29sZWFuIG5vcm1hbGl6ZWQsIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCBHTHZvaWQgKnB0ciApICovCiBzdGF0aWMgdm9pZAogYW5kcm9pZF9nbFZlcnRleEF0dHJpYlBvaW50ZXJCb3VuZHNfX0lJSVpJTGphdmFfbmlvX0J1ZmZlcl8ySQpAQCAtNDg3Miw2ICs0ODk4LDcgQEAKIHsiZ2xEaXNhYmxlIiwgIihJKVYiLCAodm9pZCAqKSBhbmRyb2lkX2dsRGlzYWJsZV9fSSB9LAogeyJnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSIsICIoSSlWIiwgKHZvaWQgKikgYW5kcm9pZF9nbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheV9fSSB9LAogeyJnbERyYXdBcnJheXMiLCAiKElJSSlWIiwgKHZvaWQgKikgYW5kcm9pZF9nbERyYXdBcnJheXNfX0lJSSB9LAoreyJnbERyYXdFbGVtZW50cyIsICIoSUlJSSlWIiwgKHZvaWQgKikgYW5kcm9pZF9nbERyYXdFbGVtZW50c19fSUlJSSB9LAogeyJnbERyYXdFbGVtZW50cyIsICIoSUlJTGphdmEvbmlvL0J1ZmZlcjspViIsICh2b2lkICopIGFuZHJvaWRfZ2xEcmF3RWxlbWVudHNfX0lJSUxqYXZhX25pb19CdWZmZXJfMiB9LAogeyJnbEVuYWJsZSIsICIoSSlWIiwgKHZvaWQgKikgYW5kcm9pZF9nbEVuYWJsZV9fSSB9LAogeyJnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5IiwgIihJKVYiLCAodm9pZCAqKSBhbmRyb2lkX2dsRW5hYmxlVmVydGV4QXR0cmliQXJyYXlfX0kgfSwKQEAgLTUwMTEsNiArNTAzOCw3IEBACiB7ImdsVmVydGV4QXR0cmliNGYiLCAiKElGRkZGKVYiLCAodm9pZCAqKSBhbmRyb2lkX2dsVmVydGV4QXR0cmliNGZfX0lGRkZGIH0sCiB7ImdsVmVydGV4QXR0cmliNGZ2IiwgIihJW0ZJKVYiLCAodm9pZCAqKSBhbmRyb2lkX2dsVmVydGV4QXR0cmliNGZ2X19JXzNGSSB9LAogeyJnbFZlcnRleEF0dHJpYjRmdiIsICIoSUxqYXZhL25pby9GbG9hdEJ1ZmZlcjspViIsICh2b2lkICopIGFuZHJvaWRfZ2xWZXJ0ZXhBdHRyaWI0ZnZfX0lMamF2YV9uaW9fRmxvYXRCdWZmZXJfMiB9LAoreyJnbFZlcnRleEF0dHJpYlBvaW50ZXIiLCAiKElJSVpJSSlWIiwgKHZvaWQgKikgYW5kcm9pZF9nbFZlcnRleEF0dHJpYlBvaW50ZXJfX0lJSVpJSSB9LAogeyJnbFZlcnRleEF0dHJpYlBvaW50ZXJCb3VuZHMiLCAiKElJSVpJTGphdmEvbmlvL0J1ZmZlcjtJKVYiLCAodm9pZCAqKSBhbmRyb2lkX2dsVmVydGV4QXR0cmliUG9pbnRlckJvdW5kc19fSUlJWklMamF2YV9uaW9fQnVmZmVyXzJJIH0sCiB7ImdsVmlld3BvcnQiLCAiKElJSUkpViIsICh2b2lkICopIGFuZHJvaWRfZ2xWaWV3cG9ydF9fSUlJSSB9LAogfTsKZGlmZiAtLWdpdCBhL2NvcmUvam5pL2FuZHJvaWRfb3NfTWVzc2FnZVF1ZXVlLmNwcCBiL2NvcmUvam5pL2FuZHJvaWRfb3NfTWVzc2FnZVF1ZXVlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NDdiNWE1Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9qbmkvYW5kcm9pZF9vc19NZXNzYWdlUXVldWUuY3BwCkBAIC0wLDAgKzEsMTY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2RlZmluZSBMT0dfVEFHICJNZXNzYWdlUXVldWUtSk5JIgorCisjaW5jbHVkZSAiSk5JSGVscC5oIgorCisjaW5jbHVkZSA8dXRpbHMvUG9sbExvb3AuaD4KKyNpbmNsdWRlIDx1dGlscy9Mb2cuaD4KKyNpbmNsdWRlICJhbmRyb2lkX29zX01lc3NhZ2VRdWV1ZS5oIgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworc3RhdGljIHN0cnVjdCB7CisgICAgamNsYXNzIGNsYXp6OworCisgICAgamZpZWxkSUQgbVB0cjsgICAvLyBuYXRpdmUgb2JqZWN0IGF0dGFjaGVkIHRvIHRoZSBEVk0gTWVzc2FnZVF1ZXVlCit9IGdNZXNzYWdlUXVldWVDbGFzc0luZm87CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3MgTmF0aXZlTWVzc2FnZVF1ZXVlIHsKK3B1YmxpYzoKKyAgICBOYXRpdmVNZXNzYWdlUXVldWUoKTsKKyAgICB+TmF0aXZlTWVzc2FnZVF1ZXVlKCk7CisKKyAgICBpbmxpbmUgc3A8UG9sbExvb3A+IGdldFBvbGxMb29wKCkgeyByZXR1cm4gbVBvbGxMb29wOyB9CisKKyAgICBib29sIHBvbGxPbmNlKGludCB0aW1lb3V0TWlsbGlzKTsKKyAgICB2b2lkIHdha2UoKTsKKworcHJpdmF0ZToKKyAgICBzcDxQb2xsTG9vcD4gbVBvbGxMb29wOworfTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitOYXRpdmVNZXNzYWdlUXVldWU6Ok5hdGl2ZU1lc3NhZ2VRdWV1ZSgpIHsKKyAgICBtUG9sbExvb3AgPSBQb2xsTG9vcDo6Z2V0Rm9yVGhyZWFkKCk7CisgICAgaWYgKG1Qb2xsTG9vcCA9PSBOVUxMKSB7CisgICAgICAgIG1Qb2xsTG9vcCA9IG5ldyBQb2xsTG9vcChmYWxzZSk7CisgICAgICAgIFBvbGxMb29wOjpzZXRGb3JUaHJlYWQobVBvbGxMb29wKTsKKyAgICB9Cit9CisKK05hdGl2ZU1lc3NhZ2VRdWV1ZTo6fk5hdGl2ZU1lc3NhZ2VRdWV1ZSgpIHsKK30KKworYm9vbCBOYXRpdmVNZXNzYWdlUXVldWU6OnBvbGxPbmNlKGludCB0aW1lb3V0TWlsbGlzKSB7CisgICAgcmV0dXJuIG1Qb2xsTG9vcC0+cG9sbE9uY2UodGltZW91dE1pbGxpcykgIT0gUG9sbExvb3A6OlBPTExfVElNRU9VVDsKK30KKwordm9pZCBOYXRpdmVNZXNzYWdlUXVldWU6Ondha2UoKSB7CisgICAgbVBvbGxMb29wLT53YWtlKCk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworc3RhdGljIE5hdGl2ZU1lc3NhZ2VRdWV1ZSogYW5kcm9pZF9vc19NZXNzYWdlUXVldWVfZ2V0TmF0aXZlTWVzc2FnZVF1ZXVlKEpOSUVudiogZW52LAorICAgICAgICBqb2JqZWN0IG1lc3NhZ2VRdWV1ZU9iaikgeworICAgIGppbnQgaW50UHRyID0gZW52LT5HZXRJbnRGaWVsZChtZXNzYWdlUXVldWVPYmosIGdNZXNzYWdlUXVldWVDbGFzc0luZm8ubVB0cik7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8TmF0aXZlTWVzc2FnZVF1ZXVlKj4oaW50UHRyKTsKK30KKworc3RhdGljIHZvaWQgYW5kcm9pZF9vc19NZXNzYWdlUXVldWVfc2V0TmF0aXZlTWVzc2FnZVF1ZXVlKEpOSUVudiogZW52LCBqb2JqZWN0IG1lc3NhZ2VRdWV1ZU9iaiwKKyAgICAgICAgTmF0aXZlTWVzc2FnZVF1ZXVlKiBuYXRpdmVNZXNzYWdlUXVldWUpIHsKKyAgICBlbnYtPlNldEludEZpZWxkKG1lc3NhZ2VRdWV1ZU9iaiwgZ01lc3NhZ2VRdWV1ZUNsYXNzSW5mby5tUHRyLAorICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8amludD4obmF0aXZlTWVzc2FnZVF1ZXVlKSk7Cit9CisKK3NwPFBvbGxMb29wPiBhbmRyb2lkX29zX01lc3NhZ2VRdWV1ZV9nZXRQb2xsTG9vcChKTklFbnYqIGVudiwgam9iamVjdCBtZXNzYWdlUXVldWVPYmopIHsKKyAgICBOYXRpdmVNZXNzYWdlUXVldWUqIG5hdGl2ZU1lc3NhZ2VRdWV1ZSA9CisgICAgICAgICAgICBhbmRyb2lkX29zX01lc3NhZ2VRdWV1ZV9nZXROYXRpdmVNZXNzYWdlUXVldWUoZW52LCBtZXNzYWdlUXVldWVPYmopOworICAgIHJldHVybiBuYXRpdmVNZXNzYWdlUXVldWUgIT0gTlVMTCA/IG5hdGl2ZU1lc3NhZ2VRdWV1ZS0+Z2V0UG9sbExvb3AoKSA6IE5VTEw7Cit9CisKK3N0YXRpYyB2b2lkIGFuZHJvaWRfb3NfTWVzc2FnZVF1ZXVlX25hdGl2ZUluaXQoSk5JRW52KiBlbnYsIGpvYmplY3Qgb2JqKSB7CisgICAgTmF0aXZlTWVzc2FnZVF1ZXVlKiBuYXRpdmVNZXNzYWdlUXVldWUgPSBuZXcgTmF0aXZlTWVzc2FnZVF1ZXVlKCk7CisgICAgaWYgKCEgbmF0aXZlTWVzc2FnZVF1ZXVlKSB7CisgICAgICAgIGpuaVRocm93UnVudGltZUV4Y2VwdGlvbihlbnYsICJVbmFibGUgdG8gYWxsb2NhdGUgbmF0aXZlIHF1ZXVlIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhbmRyb2lkX29zX01lc3NhZ2VRdWV1ZV9zZXROYXRpdmVNZXNzYWdlUXVldWUoZW52LCBvYmosIG5hdGl2ZU1lc3NhZ2VRdWV1ZSk7Cit9CisKK3N0YXRpYyB2b2lkIGFuZHJvaWRfb3NfTWVzc2FnZVF1ZXVlX25hdGl2ZURlc3Ryb3koSk5JRW52KiBlbnYsIGpvYmplY3Qgb2JqKSB7CisgICAgTmF0aXZlTWVzc2FnZVF1ZXVlKiBuYXRpdmVNZXNzYWdlUXVldWUgPQorICAgICAgICAgICAgYW5kcm9pZF9vc19NZXNzYWdlUXVldWVfZ2V0TmF0aXZlTWVzc2FnZVF1ZXVlKGVudiwgb2JqKTsKKyAgICBpZiAobmF0aXZlTWVzc2FnZVF1ZXVlKSB7CisgICAgICAgIGFuZHJvaWRfb3NfTWVzc2FnZVF1ZXVlX3NldE5hdGl2ZU1lc3NhZ2VRdWV1ZShlbnYsIG9iaiwgTlVMTCk7CisgICAgICAgIGRlbGV0ZSBuYXRpdmVNZXNzYWdlUXVldWU7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCB0aHJvd1F1ZXVlTm90SW5pdGlhbGl6ZWQoSk5JRW52KiBlbnYpIHsKKyAgICBqbmlUaHJvd0V4Y2VwdGlvbihlbnYsICJqYXZhL2xhbmcvSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiwgIk1lc3NhZ2UgcXVldWUgbm90IGluaXRpYWxpemVkIik7Cit9CisKK3N0YXRpYyBqYm9vbGVhbiBhbmRyb2lkX29zX01lc3NhZ2VRdWV1ZV9uYXRpdmVQb2xsT25jZShKTklFbnYqIGVudiwgam9iamVjdCBvYmosCisgICAgICAgIGppbnQgdGltZW91dE1pbGxpcykgeworICAgIE5hdGl2ZU1lc3NhZ2VRdWV1ZSogbmF0aXZlTWVzc2FnZVF1ZXVlID0KKyAgICAgICAgICAgIGFuZHJvaWRfb3NfTWVzc2FnZVF1ZXVlX2dldE5hdGl2ZU1lc3NhZ2VRdWV1ZShlbnYsIG9iaik7CisgICAgaWYgKCEgbmF0aXZlTWVzc2FnZVF1ZXVlKSB7CisgICAgICAgIHRocm93UXVldWVOb3RJbml0aWFsaXplZChlbnYpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiBuYXRpdmVNZXNzYWdlUXVldWUtPnBvbGxPbmNlKHRpbWVvdXRNaWxsaXMpOworfQorCitzdGF0aWMgdm9pZCBhbmRyb2lkX29zX01lc3NhZ2VRdWV1ZV9uYXRpdmVXYWtlKEpOSUVudiogZW52LCBqb2JqZWN0IG9iaikgeworICAgIE5hdGl2ZU1lc3NhZ2VRdWV1ZSogbmF0aXZlTWVzc2FnZVF1ZXVlID0KKyAgICAgICAgICAgIGFuZHJvaWRfb3NfTWVzc2FnZVF1ZXVlX2dldE5hdGl2ZU1lc3NhZ2VRdWV1ZShlbnYsIG9iaik7CisgICAgaWYgKCEgbmF0aXZlTWVzc2FnZVF1ZXVlKSB7CisgICAgICAgIHRocm93UXVldWVOb3RJbml0aWFsaXplZChlbnYpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIHJldHVybiBuYXRpdmVNZXNzYWdlUXVldWUtPndha2UoKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdGF0aWMgSk5JTmF0aXZlTWV0aG9kIGdNZXNzYWdlUXVldWVNZXRob2RzW10gPSB7CisgICAgLyogbmFtZSwgc2lnbmF0dXJlLCBmdW5jUHRyICovCisgICAgeyAibmF0aXZlSW5pdCIsICIoKVYiLCAodm9pZCopYW5kcm9pZF9vc19NZXNzYWdlUXVldWVfbmF0aXZlSW5pdCB9LAorICAgIHsgIm5hdGl2ZURlc3Ryb3kiLCAiKClWIiwgKHZvaWQqKWFuZHJvaWRfb3NfTWVzc2FnZVF1ZXVlX25hdGl2ZURlc3Ryb3kgfSwKKyAgICB7ICJuYXRpdmVQb2xsT25jZSIsICIoSSlaIiwgKHZvaWQqKWFuZHJvaWRfb3NfTWVzc2FnZVF1ZXVlX25hdGl2ZVBvbGxPbmNlIH0sCisgICAgeyAibmF0aXZlV2FrZSIsICIoKVYiLCAodm9pZCopYW5kcm9pZF9vc19NZXNzYWdlUXVldWVfbmF0aXZlV2FrZSB9Cit9OworCisjZGVmaW5lIEZJTkRfQ0xBU1ModmFyLCBjbGFzc05hbWUpIFwKKyAgICAgICAgdmFyID0gZW52LT5GaW5kQ2xhc3MoY2xhc3NOYW1lKTsgXAorICAgICAgICBMT0dfRkFUQUxfSUYoISB2YXIsICJVbmFibGUgdG8gZmluZCBjbGFzcyAiIGNsYXNzTmFtZSk7IFwKKyAgICAgICAgdmFyID0gamNsYXNzKGVudi0+TmV3R2xvYmFsUmVmKHZhcikpOworCisjZGVmaW5lIEdFVF9GSUVMRF9JRCh2YXIsIGNsYXp6LCBmaWVsZE5hbWUsIGZpZWxkRGVzY3JpcHRvcikgXAorICAgICAgICB2YXIgPSBlbnYtPkdldEZpZWxkSUQoY2xhenosIGZpZWxkTmFtZSwgZmllbGREZXNjcmlwdG9yKTsgXAorICAgICAgICBMT0dfRkFUQUxfSUYoISB2YXIsICJVbmFibGUgdG8gZmluZCBmaWVsZCAiIGZpZWxkTmFtZSk7CisKK2ludCByZWdpc3Rlcl9hbmRyb2lkX29zX01lc3NhZ2VRdWV1ZShKTklFbnYqIGVudikgeworICAgIGludCByZXMgPSBqbmlSZWdpc3Rlck5hdGl2ZU1ldGhvZHMoZW52LCAiYW5kcm9pZC9vcy9NZXNzYWdlUXVldWUiLAorICAgICAgICAgICAgZ01lc3NhZ2VRdWV1ZU1ldGhvZHMsIE5FTEVNKGdNZXNzYWdlUXVldWVNZXRob2RzKSk7CisgICAgTE9HX0ZBVEFMX0lGKHJlcyA8IDAsICJVbmFibGUgdG8gcmVnaXN0ZXIgbmF0aXZlIG1ldGhvZHMuIik7CisKKyAgICBGSU5EX0NMQVNTKGdNZXNzYWdlUXVldWVDbGFzc0luZm8uY2xhenosICJhbmRyb2lkL29zL01lc3NhZ2VRdWV1ZSIpOworCisgICAgR0VUX0ZJRUxEX0lEKGdNZXNzYWdlUXVldWVDbGFzc0luZm8ubVB0ciwgZ01lc3NhZ2VRdWV1ZUNsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgICJtUHRyIiwgIkkiKTsKKyAgICAKKyAgICByZXR1cm4gMDsKK30KKworfSAvLyBuYW1lc3BhY2UgYW5kcm9pZApkaWZmIC0tZ2l0IGEvY29yZS9qbmkvYW5kcm9pZF9vc19NZXNzYWdlUXVldWUuaCBiL2NvcmUvam5pL2FuZHJvaWRfb3NfTWVzc2FnZVF1ZXVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWM3NDJlMgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvam5pL2FuZHJvaWRfb3NfTWVzc2FnZVF1ZXVlLmgKQEAgLTAsMCArMSwzMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgX0FORFJPSURfT1NfTUVTU0FHRVFVRVVFX0gKKyNkZWZpbmUgX0FORFJPSURfT1NfTUVTU0FHRVFVRVVFX0gKKworI2luY2x1ZGUgImpuaS5oIgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK2NsYXNzIFBvbGxMb29wOworCitleHRlcm4gc3A8UG9sbExvb3A+IGFuZHJvaWRfb3NfTWVzc2FnZVF1ZXVlX2dldFBvbGxMb29wKEpOSUVudiogZW52LCBqb2JqZWN0IG1lc3NhZ2VRdWV1ZU9iaik7CisKK30gLy8gbmFtZXNwYWNlIGFuZHJvaWQKKworI2VuZGlmIC8vIF9BTkRST0lEX09TX01FU1NBR0VRVUVVRV9ICmRpZmYgLS1naXQgYS9jb3JlL2puaS9hbmRyb2lkX3NlcnZlcl9CbHVldG9vdGhBMmRwU2VydmljZS5jcHAgYi9jb3JlL2puaS9hbmRyb2lkX3NlcnZlcl9CbHVldG9vdGhBMmRwU2VydmljZS5jcHAKaW5kZXggY2Y1M2EwNi4uOGM3OTVhZiAxMDA2NDQKLS0tIGEvY29yZS9qbmkvYW5kcm9pZF9zZXJ2ZXJfQmx1ZXRvb3RoQTJkcFNlcnZpY2UuY3BwCisrKyBiL2NvcmUvam5pL2FuZHJvaWRfc2VydmVyX0JsdWV0b290aEEyZHBTZXJ2aWNlLmNwcApAQCAtMjU2LDEwICsyNTYsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgcGFyc2VfcHJvcGVydHlfY2hhbmdlKGVudiwgbXNnLCAoUHJvcGVydGllcyAqKSZzaW5rX3Byb3BlcnRpZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzaW5rX3Byb3BlcnRpZXMpIC8gc2l6ZW9mKFByb3BlcnRpZXMpKTsKICAgICAgICAgY29uc3QgY2hhciAqY19wYXRoID0gZGJ1c19tZXNzYWdlX2dldF9wYXRoKG1zZyk7CisgICAgICAgIGpzdHJpbmcgcGF0aCA9IGVudi0+TmV3U3RyaW5nVVRGKGNfcGF0aCk7CiAgICAgICAgIGVudi0+Q2FsbFZvaWRNZXRob2QobmF0LT5tZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Rfb25TaW5rUHJvcGVydHlDaGFuZ2VkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudi0+TmV3U3RyaW5nVVRGKGNfcGF0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJfYXJyYXkpOworICAgICAgICBlbnYtPkRlbGV0ZUxvY2FsUmVmKHBhdGgpOwogICAgICAgICByZXN1bHQgPSBEQlVTX0hBTkRMRVJfUkVTVUxUX0hBTkRMRUQ7CiAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfSBlbHNlIHsKQEAgLTI5MiwxMCArMjk0LDEzIEBACiAgICAgICAgIHJlc3VsdCA9IEpOSV9GQUxTRTsKICAgICB9CiAgICAgTE9HVigiLi4uIERldmljZSBQYXRoID0gJXMsIHJlc3VsdCA9ICVkIiwgcGF0aCwgcmVzdWx0KTsKKworICAgIGpzdHJpbmcgalBhdGggPSBlbnYtPk5ld1N0cmluZ1VURihwYXRoKTsKICAgICBlbnYtPkNhbGxWb2lkTWV0aG9kKG5hdC0+bWUsCiAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2Rfb25Db25uZWN0U2lua1Jlc3VsdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGVudi0+TmV3U3RyaW5nVVRGKHBhdGgpLAorICAgICAgICAgICAgICAgICAgICAgICAgalBhdGgsCiAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQpOworICAgIGVudi0+RGVsZXRlTG9jYWxSZWYoalBhdGgpOwogICAgIGZyZWUodXNlcik7CiB9CiAKZGlmZiAtLWdpdCBhL2NvcmUvam5pL2FuZHJvaWRfc2VydmVyX0JsdWV0b290aEV2ZW50TG9vcC5jcHAgYi9jb3JlL2puaS9hbmRyb2lkX3NlcnZlcl9CbHVldG9vdGhFdmVudExvb3AuY3BwCmluZGV4IDI1OWNjMDEuLjAxYjY3MTEgMTAwNjQ0Ci0tLSBhL2NvcmUvam5pL2FuZHJvaWRfc2VydmVyX0JsdWV0b290aEV2ZW50TG9vcC5jcHAKKysrIGIvY29yZS9qbmkvYW5kcm9pZF9zZXJ2ZXJfQmx1ZXRvb3RoRXZlbnRMb29wLmNwcApAQCAtMTA2MSw2ICsxMDYxLDggQEAKICAgICBEQnVzRXJyb3IgZXJyOwogICAgIGRidXNfZXJyb3JfaW5pdCgmZXJyKTsKICAgICBKTklFbnYgKmVudjsKKyAgICBqc3RyaW5nIGFkZHI7CisKICAgICBuYXQtPnZtLT5HZXRFbnYoKHZvaWQqKikmZW52LCBuYXQtPmVudlZlcik7CiAKICAgICBMT0dWKCIuLi4gYWRkcmVzcyA9ICVzIiwgYWRkcmVzcyk7CkBAIC0xMTA5LDEwICsxMTExLDEyIEBACiAgICAgICAgIH0KICAgICB9CiAKKyAgICBhZGRyID0gZW52LT5OZXdTdHJpbmdVVEYoYWRkcmVzcyk7CiAgICAgZW52LT5DYWxsVm9pZE1ldGhvZChuYXQtPm1lLAogICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kX29uQ3JlYXRlUGFpcmVkRGV2aWNlUmVzdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgZW52LT5OZXdTdHJpbmdVVEYoYWRkcmVzcyksCisgICAgICAgICAgICAgICAgICAgICAgICBhZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0KTsKKyAgICBlbnYtPkRlbGV0ZUxvY2FsUmVmKGFkZHIpOwogZG9uZToKICAgICBkYnVzX2Vycm9yX2ZyZWUoJmVycik7CiAgICAgZnJlZSh1c2VyKTsKQEAgLTExMzksMTAgKzExNDMsMTIgQEAKICAgICAgICAgfQogICAgICAgICBMT0dfQU5EX0ZSRUVfREJVU19FUlJPUigmZXJyKTsKICAgICB9CisgICAganN0cmluZyBhZGRyID0gZW52LT5OZXdTdHJpbmdVVEYoYWRkcmVzcyk7CiAgICAgZW52LT5DYWxsVm9pZE1ldGhvZChuYXQtPm1lLAogICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kX29uQ3JlYXRlRGV2aWNlUmVzdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgZW52LT5OZXdTdHJpbmdVVEYoYWRkcmVzcyksCisgICAgICAgICAgICAgICAgICAgICAgICBhZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0KTsKKyAgICBlbnYtPkRlbGV0ZUxvY2FsUmVmKGFkZHIpOwogICAgIGZyZWUodXNlcik7CiB9CiAKQEAgLTExNjMsMTAgKzExNjksMTIgQEAKICAgICAgICAgTE9HX0FORF9GUkVFX0RCVVNfRVJST1IoJmVycik7CiAgICAgICAgIHJlc3VsdCA9IEpOSV9GQUxTRTsKICAgICB9CisgICAganN0cmluZyBqUGF0aCA9IGVudi0+TmV3U3RyaW5nVVRGKHBhdGgpOwogICAgIGVudi0+Q2FsbFZvaWRNZXRob2QobmF0LT5tZSwKICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZF9vbkRpc2NvdmVyU2VydmljZXNSZXN1bHQsCi0gICAgICAgICAgICAgICAgICAgICAgICBlbnYtPk5ld1N0cmluZ1VURihwYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGpQYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0KTsKKyAgICBlbnYtPkRlbGV0ZUxvY2FsUmVmKGpQYXRoKTsKICAgICBmcmVlKHVzZXIpOwogfQogCkBAIC0xMTk0LDEwICsxMjAyLDEyIEBACiAgICAgfQogCiBkb25lOgorICAgIGpzdHJpbmcgYWRkciA9IGVudi0+TmV3U3RyaW5nVVRGKGFkZHJlc3MpOwogICAgIGVudi0+Q2FsbFZvaWRNZXRob2QobmF0LT5tZSwKICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGhvZF9vbkdldERldmljZVNlcnZpY2VDaGFubmVsUmVzdWx0LAotICAgICAgICAgICAgICAgICAgICAgICAgZW52LT5OZXdTdHJpbmdVVEYoYWRkcmVzcyksCisgICAgICAgICAgICAgICAgICAgICAgICBhZGRyLAogICAgICAgICAgICAgICAgICAgICAgICAgY2hhbm5lbCk7CisgICAgZW52LT5EZWxldGVMb2NhbFJlZihhZGRyKTsKICAgICBmcmVlKHVzZXIpOwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9jb3JlL2puaS9hbmRyb2lkX3V0aWxfQXNzZXRNYW5hZ2VyLmNwcCBiL2NvcmUvam5pL2FuZHJvaWRfdXRpbF9Bc3NldE1hbmFnZXIuY3BwCmluZGV4IGEyYjdjYzQuLmI3ZDBjNjcgMTAwNjQ0Ci0tLSBhL2NvcmUvam5pL2FuZHJvaWRfdXRpbF9Bc3NldE1hbmFnZXIuY3BwCisrKyBiL2NvcmUvam5pL2FuZHJvaWRfdXRpbF9Bc3NldE1hbmFnZXIuY3BwCkBAIC0xNTA0LDggKzE1MDQsNyBAQAogICAgIH0KIAogICAgIGpvYmplY3RBcnJheSBhcnJheSA9IGVudi0+TmV3T2JqZWN0QXJyYXkoTiwgY2xzLCBOVUxMKTsKLSAgICBpZiAoYXJyYXkgPT0gTlVMTCkgewotICAgICAgICBkb1Rocm93KGVudiwgImphdmEvbGFuZy9PdXRPZk1lbW9yeUVycm9yIik7CisgICAgaWYgKGVudi0+RXhjZXB0aW9uQ2hlY2soKSkgewogICAgICAgICByZXMudW5sb2NrQmFnKHN0YXJ0T2ZCYWcpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0xNTMzLDE1ICsxNTMyLDIzIEBACiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIxNl90KiBzdHIxNiA9IHBvb2wtPnN0cmluZ0F0KHZhbHVlLmRhdGEsICZzdHJMZW4pOwogICAgICAgICAgICAgICAgIHN0ciA9IGVudi0+TmV3U3RyaW5nKHN0cjE2LCBzdHJMZW4pOwotICAgICAgICAgICAgICAgIGlmIChzdHIgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBkb1Rocm93KGVudiwgImphdmEvbGFuZy9PdXRPZk1lbW9yeUVycm9yIik7Ci0gICAgICAgICAgICAgICAgICAgIHJlcy51bmxvY2tCYWcoc3RhcnRPZkJhZyk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gSWYgb25lIG9mIG91ciBOZXdTdHJpbmd7VVRGfSBjYWxscyBmYWlsZWQgZHVlIHRvIG1lbW9yeSwgYW4KKyAgICAgICAgICAgIC8vIGV4Y2VwdGlvbiB3aWxsIGJlIHBlbmRpbmcuCisgICAgICAgICAgICBpZiAoZW52LT5FeGNlcHRpb25DaGVjaygpKSB7CisgICAgICAgICAgICAgICAgcmVzLnVubG9ja0JhZyhzdGFydE9mQmFnKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGVudi0+U2V0T2JqZWN0QXJyYXlFbGVtZW50KGFycmF5LCBpLCBzdHIpOworCisgICAgICAgIC8vIElmIHdlIGhhdmUgYSBsYXJnZSBhbW91bnQgb2Ygc3RyaW5ncyBpbiBvdXIgYXJyYXksIHdlIG1pZ2h0CisgICAgICAgIC8vIG92ZXJmbG93IHRoZSBsb2NhbCByZWZlcmVuY2UgdGFibGUgb2YgdGhlIFZNLgorICAgICAgICBpZiAoc3RyICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGVudi0+RGVsZXRlTG9jYWxSZWYoc3RyKTsKKyAgICAgICAgfQogICAgIH0KICAgICByZXMudW5sb2NrQmFnKHN0YXJ0T2ZCYWcpOwogICAgIHJldHVybiBhcnJheTsKZGlmZiAtLWdpdCBhL2NvcmUvam5pL2FuZHJvaWRfdXRpbF9Qcm9jZXNzLmNwcCBiL2NvcmUvam5pL2FuZHJvaWRfdXRpbF9Qcm9jZXNzLmNwcAppbmRleCA2OGJlNzQxLi43Yzk5MjcxIDEwMDY0NAotLS0gYS9jb3JlL2puaS9hbmRyb2lkX3V0aWxfUHJvY2Vzcy5jcHAKKysrIGIvY29yZS9qbmkvYW5kcm9pZF91dGlsX1Byb2Nlc3MuY3BwCkBAIC01Miw5ICs1MiwxNSBAQAogI2VuZGlmCiAKICNkZWZpbmUgUE9MSUNZX0RFQlVHIDAKKyNkZWZpbmUgR1VBUkRfVEhSRUFEX1BSSU9SSVRZIDAKIAogdXNpbmcgbmFtZXNwYWNlIGFuZHJvaWQ7CiAKKyNpZiBHVUFSRF9USFJFQURfUFJJT1JJVFkKK011dGV4IGdLZXlDcmVhdGVNdXRleDsKK3N0YXRpYyBwdGhyZWFkX2tleV90IGdCZ0tleSA9IC0xOworI2VuZGlmCisKIHN0YXRpYyB2b2lkIHNpZ25hbEV4Y2VwdGlvbkZvclByaW9yaXR5RXJyb3IoSk5JRW52KiBlbnYsIGpvYmplY3Qgb2JqLCBpbnQgZXJyKQogewogICAgIHN3aXRjaCAoZXJyKSB7CkBAIC0yNjQsOSArMjcwLDQxIEBACiAgICAgY2xvc2VkaXIoZCk7CiB9CiAKK3N0YXRpYyB2b2lkIGFuZHJvaWRfb3NfUHJvY2Vzc19zZXRDYW5TZWxmQmFja2dyb3VuZChKTklFbnYqIGVudiwgam9iamVjdCBjbGF6eiwgamJvb2xlYW4gYmdPaykgeworICAgIC8vIEVzdGFibGlzaGVzIHRoZSBjYWxsaW5nIHRocmVhZCBhcyBpbGxlZ2FsIHRvIHB1dCBpbnRvIHRoZSBiYWNrZ3JvdW5kLgorICAgIC8vIFR5cGljYWxseSB1c2VkIG9ubHkgZm9yIHRoZSBzeXN0ZW0gcHJvY2VzcydzIG1haW4gbG9vcGVyLgorI2lmIEdVQVJEX1RIUkVBRF9QUklPUklUWQorICAgIExPR1YoIlByb2Nlc3Muc2V0Q2FuU2VsZkJhY2tncm91bmQoJWQpIDogdGlkPSVkIiwgYmdPaywgYW5kcm9pZEdldFRpZCgpKTsKKyAgICB7CisgICAgICAgIE11dGV4OjpBdXRvbG9jayBfbChnS2V5Q3JlYXRlTXV0ZXgpOworICAgICAgICBpZiAoZ0JnS2V5ID09IC0xKSB7CisgICAgICAgICAgICBwdGhyZWFkX2tleV9jcmVhdGUoJmdCZ0tleSwgTlVMTCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBpbnZlcnRlZDogIG5vdC1va2F5LCB3ZSBzZXQgYSBzZW50aW5lbCB2YWx1ZQorICAgIHB0aHJlYWRfc2V0c3BlY2lmaWMoZ0JnS2V5LCAodm9pZCopKGJnT2sgPyAwIDogMHhiYWFkKSk7CisjZW5kaWYKK30KKwogdm9pZCBhbmRyb2lkX29zX1Byb2Nlc3Nfc2V0VGhyZWFkUHJpb3JpdHkoSk5JRW52KiBlbnYsIGpvYmplY3QgY2xhenosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamludCBwaWQsIGppbnQgcHJpKQogeworI2lmIEdVQVJEX1RIUkVBRF9QUklPUklUWQorICAgIC8vIGlmIHdlJ3JlIHB1dHRpbmcgdGhlIGN1cnJlbnQgdGhyZWFkIGludG8gdGhlIGJhY2tncm91bmQsIGNoZWNrIHRoZSBUTFMKKyAgICAvLyB0byBtYWtlIHN1cmUgdGhpcyB0aHJlYWQgaXNuJ3QgZ3VhcmRlZC4gIElmIGl0IGlzLCByYWlzZSBhbiBleGNlcHRpb24uCisgICAgaWYgKHByaSA+PSBBTkRST0lEX1BSSU9SSVRZX0JBQ0tHUk9VTkQpIHsKKyAgICAgICAgaWYgKHBpZCA9PSBhbmRyb2lkR2V0VGlkKCkpIHsKKyAgICAgICAgICAgIHZvaWQqIGJnT2sgPSBwdGhyZWFkX2dldHNwZWNpZmljKGdCZ0tleSk7CisgICAgICAgICAgICBpZiAoYmdPayA9PSAoKHZvaWQqKTB4YmFhZCkpIHsKKyAgICAgICAgICAgICAgICBMT0dFKCJUaHJlYWQgbWFya2VkIGZnLW9ubHkgcHV0IHNlbGYgaW4gYmFja2dyb3VuZCEiKTsKKyAgICAgICAgICAgICAgICBqbmlUaHJvd0V4Y2VwdGlvbihlbnYsICJqYXZhL2xhbmcvU2VjdXJpdHlFeGNlcHRpb24iLCAiTWF5IG5vdCBwdXQgdGhpcyB0aHJlYWQgaW50byBiYWNrZ3JvdW5kIik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorI2VuZGlmCisKICAgICBpbnQgcmMgPSBhbmRyb2lkU2V0VGhyZWFkUHJpb3JpdHkocGlkLCBwcmkpOwogICAgIGlmIChyYyAhPSAwKSB7CiAgICAgICAgIGlmIChyYyA9PSBJTlZBTElEX09QRVJBVElPTikgewpAQCAtODUyLDYgKzg5MCw3IEBACiAgICAgeyJnZXRVaWRGb3JOYW1lIiwgICAgICAgIihMamF2YS9sYW5nL1N0cmluZzspSSIsICh2b2lkKilhbmRyb2lkX29zX1Byb2Nlc3NfZ2V0VWlkRm9yTmFtZX0sCiAgICAgeyJnZXRHaWRGb3JOYW1lIiwgICAgICAgIihMamF2YS9sYW5nL1N0cmluZzspSSIsICh2b2lkKilhbmRyb2lkX29zX1Byb2Nlc3NfZ2V0R2lkRm9yTmFtZX0sCiAgICAgeyJzZXRUaHJlYWRQcmlvcml0eSIsICAgIihJSSlWIiwgKHZvaWQqKWFuZHJvaWRfb3NfUHJvY2Vzc19zZXRUaHJlYWRQcmlvcml0eX0sCisgICAgeyJzZXRDYW5TZWxmQmFja2dyb3VuZCIsICIoWilWIiwgKHZvaWQqKWFuZHJvaWRfb3NfUHJvY2Vzc19zZXRDYW5TZWxmQmFja2dyb3VuZH0sCiAgICAgeyJzZXRUaHJlYWRQcmlvcml0eSIsICAgIihJKVYiLCAodm9pZCopYW5kcm9pZF9vc19Qcm9jZXNzX3NldENhbGxpbmdUaHJlYWRQcmlvcml0eX0sCiAgICAgeyJnZXRUaHJlYWRQcmlvcml0eSIsICAgIihJKUkiLCAodm9pZCopYW5kcm9pZF9vc19Qcm9jZXNzX2dldFRocmVhZFByaW9yaXR5fSwKICAgICB7InNldFRocmVhZEdyb3VwIiwgICAgICAiKElJKVYiLCAodm9pZCopYW5kcm9pZF9vc19Qcm9jZXNzX3NldFRocmVhZEdyb3VwfSwKZGlmZiAtLWdpdCBhL2NvcmUvam5pL2FuZHJvaWRfdmlld19JbnB1dENoYW5uZWwuY3BwIGIvY29yZS9qbmkvYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGE0MzkzYQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvam5pL2FuZHJvaWRfdmlld19JbnB1dENoYW5uZWwuY3BwCkBAIC0wLDAgKzEsMjg4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2RlZmluZSBMT0dfVEFHICJJbnB1dENoYW5uZWwtSk5JIgorCisjaW5jbHVkZSAiSk5JSGVscC5oIgorCisjaW5jbHVkZSA8YW5kcm9pZF9ydW50aW1lL0FuZHJvaWRSdW50aW1lLmg+CisjaW5jbHVkZSA8YmluZGVyL1BhcmNlbC5oPgorI2luY2x1ZGUgPHV0aWxzL0xvZy5oPgorI2luY2x1ZGUgPHVpL0lucHV0VHJhbnNwb3J0Lmg+CisjaW5jbHVkZSAiYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbC5oIgorI2luY2x1ZGUgImFuZHJvaWRfdXRpbF9CaW5kZXIuaCIKKworbmFtZXNwYWNlIGFuZHJvaWQgeworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3N0YXRpYyBzdHJ1Y3QgeworICAgIGpjbGFzcyBjbGF6ejsKKworICAgIGpmaWVsZElEIG1QdHI7ICAgLy8gbmF0aXZlIG9iamVjdCBhdHRhY2hlZCB0byB0aGUgRFZNIElucHV0Q2hhbm5lbAorICAgIGptZXRob2RJRCBjdG9yOworfSBnSW5wdXRDaGFubmVsQ2xhc3NJbmZvOworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NsYXNzIE5hdGl2ZUlucHV0Q2hhbm5lbCB7CitwdWJsaWM6CisgICAgTmF0aXZlSW5wdXRDaGFubmVsKGNvbnN0IHNwPElucHV0Q2hhbm5lbD4mIGlucHV0Q2hhbm5lbCk7CisgICAgfk5hdGl2ZUlucHV0Q2hhbm5lbCgpOworCisgICAgaW5saW5lIHNwPElucHV0Q2hhbm5lbD4gZ2V0SW5wdXRDaGFubmVsKCkgeyByZXR1cm4gbUlucHV0Q2hhbm5lbDsgfQorCisgICAgdm9pZCBzZXREaXNwb3NlQ2FsbGJhY2soSW5wdXRDaGFubmVsT2JqRGlzcG9zZUNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiBkYXRhKTsKKyAgICB2b2lkIGludm9rZUFuZFJlbW92ZURpc3Bvc2VDYWxsYmFjayhKTklFbnYqIGVudiwgam9iamVjdCBvYmopOworCitwcml2YXRlOgorICAgIHNwPElucHV0Q2hhbm5lbD4gbUlucHV0Q2hhbm5lbDsKKyAgICBJbnB1dENoYW5uZWxPYmpEaXNwb3NlQ2FsbGJhY2sgbURpc3Bvc2VDYWxsYmFjazsKKyAgICB2b2lkKiBtRGlzcG9zZURhdGE7Cit9OworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK05hdGl2ZUlucHV0Q2hhbm5lbDo6TmF0aXZlSW5wdXRDaGFubmVsKGNvbnN0IHNwPElucHV0Q2hhbm5lbD4mIGlucHV0Q2hhbm5lbCkgOgorICAgIG1JbnB1dENoYW5uZWwoaW5wdXRDaGFubmVsKSwgbURpc3Bvc2VDYWxsYmFjayhOVUxMKSB7Cit9CisKK05hdGl2ZUlucHV0Q2hhbm5lbDo6fk5hdGl2ZUlucHV0Q2hhbm5lbCgpIHsKK30KKwordm9pZCBOYXRpdmVJbnB1dENoYW5uZWw6OnNldERpc3Bvc2VDYWxsYmFjayhJbnB1dENoYW5uZWxPYmpEaXNwb3NlQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIGRhdGEpIHsKKyAgICBtRGlzcG9zZUNhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgbURpc3Bvc2VEYXRhID0gZGF0YTsKK30KKwordm9pZCBOYXRpdmVJbnB1dENoYW5uZWw6Omludm9rZUFuZFJlbW92ZURpc3Bvc2VDYWxsYmFjayhKTklFbnYqIGVudiwgam9iamVjdCBvYmopIHsKKyAgICBpZiAobURpc3Bvc2VDYWxsYmFjaykgeworICAgICAgICBtRGlzcG9zZUNhbGxiYWNrKGVudiwgb2JqLCBtSW5wdXRDaGFubmVsLCBtRGlzcG9zZURhdGEpOworICAgICAgICBtRGlzcG9zZUNhbGxiYWNrID0gTlVMTDsKKyAgICAgICAgbURpc3Bvc2VEYXRhID0gTlVMTDsKKyAgICB9Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworc3RhdGljIE5hdGl2ZUlucHV0Q2hhbm5lbCogYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbF9nZXROYXRpdmVJbnB1dENoYW5uZWwoSk5JRW52KiBlbnYsCisgICAgICAgIGpvYmplY3QgaW5wdXRDaGFubmVsT2JqKSB7CisgICAgamludCBpbnRQdHIgPSBlbnYtPkdldEludEZpZWxkKGlucHV0Q2hhbm5lbE9iaiwgZ0lucHV0Q2hhbm5lbENsYXNzSW5mby5tUHRyKTsKKyAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxOYXRpdmVJbnB1dENoYW5uZWwqPihpbnRQdHIpOworfQorCitzdGF0aWMgdm9pZCBhbmRyb2lkX3ZpZXdfSW5wdXRDaGFubmVsX3NldE5hdGl2ZUlucHV0Q2hhbm5lbChKTklFbnYqIGVudiwgam9iamVjdCBpbnB1dENoYW5uZWxPYmosCisgICAgICAgIE5hdGl2ZUlucHV0Q2hhbm5lbCogbmF0aXZlSW5wdXRDaGFubmVsKSB7CisgICAgZW52LT5TZXRJbnRGaWVsZChpbnB1dENoYW5uZWxPYmosIGdJbnB1dENoYW5uZWxDbGFzc0luZm8ubVB0ciwKKyAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGppbnQ+KG5hdGl2ZUlucHV0Q2hhbm5lbCkpOworfQorCitzcDxJbnB1dENoYW5uZWw+IGFuZHJvaWRfdmlld19JbnB1dENoYW5uZWxfZ2V0SW5wdXRDaGFubmVsKEpOSUVudiogZW52LCBqb2JqZWN0IGlucHV0Q2hhbm5lbE9iaikgeworICAgIE5hdGl2ZUlucHV0Q2hhbm5lbCogbmF0aXZlSW5wdXRDaGFubmVsID0KKyAgICAgICAgICAgIGFuZHJvaWRfdmlld19JbnB1dENoYW5uZWxfZ2V0TmF0aXZlSW5wdXRDaGFubmVsKGVudiwgaW5wdXRDaGFubmVsT2JqKTsKKyAgICByZXR1cm4gbmF0aXZlSW5wdXRDaGFubmVsICE9IE5VTEwgPyBuYXRpdmVJbnB1dENoYW5uZWwtPmdldElucHV0Q2hhbm5lbCgpIDogTlVMTDsKK30KKwordm9pZCBhbmRyb2lkX3ZpZXdfSW5wdXRDaGFubmVsX3NldERpc3Bvc2VDYWxsYmFjayhKTklFbnYqIGVudiwgam9iamVjdCBpbnB1dENoYW5uZWxPYmosCisgICAgICAgIElucHV0Q2hhbm5lbE9iakRpc3Bvc2VDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogZGF0YSkgeworICAgIE5hdGl2ZUlucHV0Q2hhbm5lbCogbmF0aXZlSW5wdXRDaGFubmVsID0KKyAgICAgICAgICAgIGFuZHJvaWRfdmlld19JbnB1dENoYW5uZWxfZ2V0TmF0aXZlSW5wdXRDaGFubmVsKGVudiwgaW5wdXRDaGFubmVsT2JqKTsKKyAgICBpZiAobmF0aXZlSW5wdXRDaGFubmVsID09IE5VTEwpIHsKKyAgICAgICAgTE9HVygiQ2Fubm90IHNldCBkaXNwb3NlIGNhbGxiYWNrIGJlY2F1c2UgaW5wdXQgY2hhbm5lbCBvYmplY3QgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkLiIpOworICAgIH0gZWxzZSB7CisgICAgICAgIG5hdGl2ZUlucHV0Q2hhbm5lbC0+c2V0RGlzcG9zZUNhbGxiYWNrKGNhbGxiYWNrLCBkYXRhKTsKKyAgICB9Cit9CisKK3N0YXRpYyBqb2JqZWN0IGFuZHJvaWRfdmlld19JbnB1dENoYW5uZWxfY3JlYXRlSW5wdXRDaGFubmVsKEpOSUVudiogZW52LAorICAgICAgICBOYXRpdmVJbnB1dENoYW5uZWwqIG5hdGl2ZUlucHV0Q2hhbm5lbCkgeworICAgIGpvYmplY3QgaW5wdXRDaGFubmVsT2JqID0gZW52LT5OZXdPYmplY3QoZ0lucHV0Q2hhbm5lbENsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgIGdJbnB1dENoYW5uZWxDbGFzc0luZm8uY3Rvcik7CisgICAgYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbF9zZXROYXRpdmVJbnB1dENoYW5uZWwoZW52LCBpbnB1dENoYW5uZWxPYmosIG5hdGl2ZUlucHV0Q2hhbm5lbCk7CisgICAgcmV0dXJuIGlucHV0Q2hhbm5lbE9iajsKK30KKworc3RhdGljIGpvYmplY3RBcnJheSBhbmRyb2lkX3ZpZXdfSW5wdXRDaGFubmVsX25hdGl2ZU9wZW5JbnB1dENoYW5uZWxQYWlyKEpOSUVudiogZW52LAorICAgICAgICBqY2xhc3MgY2xhenosIGpzdHJpbmcgbmFtZU9iaikgeworICAgIGNvbnN0IGNoYXIqIG5hbWVDaGFycyA9IGVudi0+R2V0U3RyaW5nVVRGQ2hhcnMobmFtZU9iaiwgTlVMTCk7CisgICAgU3RyaW5nOCBuYW1lKG5hbWVDaGFycyk7CisgICAgZW52LT5SZWxlYXNlU3RyaW5nVVRGQ2hhcnMobmFtZU9iaiwgbmFtZUNoYXJzKTsKKworICAgIHNwPElucHV0Q2hhbm5lbD4gc2VydmVyQ2hhbm5lbDsKKyAgICBzcDxJbnB1dENoYW5uZWw+IGNsaWVudENoYW5uZWw7CisgICAgc3RhdHVzX3QgcmVzdWx0ID0gSW5wdXRDaGFubmVsOjpvcGVuSW5wdXRDaGFubmVsUGFpcihuYW1lLCBzZXJ2ZXJDaGFubmVsLCBjbGllbnRDaGFubmVsKTsKKworICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgTE9HRSgiQ291bGQgbm90IG9wZW4gaW5wdXQgY2hhbm5lbCBwYWlyLiAgc3RhdHVzPSVkIiwgcmVzdWx0KTsKKyAgICAgICAgam5pVGhyb3dSdW50aW1lRXhjZXB0aW9uKGVudiwgIkNvdWxkIG5vdCBvcGVuIGlucHV0IGNoYW5uZWwgcGFpci4iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLy8gVE9ETyBtb3JlIHJvYnVzdCBlcnJvciBjaGVja2luZworICAgIGpvYmplY3Qgc2VydmVyQ2hhbm5lbE9iaiA9IGFuZHJvaWRfdmlld19JbnB1dENoYW5uZWxfY3JlYXRlSW5wdXRDaGFubmVsKGVudiwKKyAgICAgICAgICAgIG5ldyBOYXRpdmVJbnB1dENoYW5uZWwoc2VydmVyQ2hhbm5lbCkpOworICAgIGpvYmplY3QgY2xpZW50Q2hhbm5lbE9iaiA9IGFuZHJvaWRfdmlld19JbnB1dENoYW5uZWxfY3JlYXRlSW5wdXRDaGFubmVsKGVudiwKKyAgICAgICAgICAgIG5ldyBOYXRpdmVJbnB1dENoYW5uZWwoY2xpZW50Q2hhbm5lbCkpOworCisgICAgam9iamVjdEFycmF5IGNoYW5uZWxQYWlyID0gZW52LT5OZXdPYmplY3RBcnJheSgyLCBnSW5wdXRDaGFubmVsQ2xhc3NJbmZvLmNsYXp6LCBOVUxMKTsKKyAgICBlbnYtPlNldE9iamVjdEFycmF5RWxlbWVudChjaGFubmVsUGFpciwgMCwgc2VydmVyQ2hhbm5lbE9iaik7CisgICAgZW52LT5TZXRPYmplY3RBcnJheUVsZW1lbnQoY2hhbm5lbFBhaXIsIDEsIGNsaWVudENoYW5uZWxPYmopOworICAgIHJldHVybiBjaGFubmVsUGFpcjsKK30KKworc3RhdGljIHZvaWQgYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbF9uYXRpdmVEaXNwb3NlKEpOSUVudiogZW52LCBqb2JqZWN0IG9iaiwgamJvb2xlYW4gZmluYWxpemVkKSB7CisgICAgTmF0aXZlSW5wdXRDaGFubmVsKiBuYXRpdmVJbnB1dENoYW5uZWwgPQorICAgICAgICAgICAgYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbF9nZXROYXRpdmVJbnB1dENoYW5uZWwoZW52LCBvYmopOworICAgIGlmIChuYXRpdmVJbnB1dENoYW5uZWwpIHsKKyAgICAgICAgaWYgKGZpbmFsaXplZCkgeworICAgICAgICAgICAgTE9HVygiSW5wdXQgY2hhbm5lbCBvYmplY3QgJyVzJyB3YXMgZmluYWxpemVkIHdpdGhvdXQgYmVpbmcgZGlzcG9zZWQhIiwKKyAgICAgICAgICAgICAgICAgICAgbmF0aXZlSW5wdXRDaGFubmVsLT5nZXRJbnB1dENoYW5uZWwoKS0+Z2V0TmFtZSgpLnN0cmluZygpKTsKKyAgICAgICAgfQorCisgICAgICAgIG5hdGl2ZUlucHV0Q2hhbm5lbC0+aW52b2tlQW5kUmVtb3ZlRGlzcG9zZUNhbGxiYWNrKGVudiwgb2JqKTsKKworICAgICAgICBhbmRyb2lkX3ZpZXdfSW5wdXRDaGFubmVsX3NldE5hdGl2ZUlucHV0Q2hhbm5lbChlbnYsIG9iaiwgTlVMTCk7CisgICAgICAgIGRlbGV0ZSBuYXRpdmVJbnB1dENoYW5uZWw7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBhbmRyb2lkX3ZpZXdfSW5wdXRDaGFubmVsX25hdGl2ZVRyYW5zZmVyVG8oSk5JRW52KiBlbnYsIGpvYmplY3Qgb2JqLAorICAgICAgICBqb2JqZWN0IG90aGVyT2JqKSB7CisgICAgaWYgKGFuZHJvaWRfdmlld19JbnB1dENoYW5uZWxfZ2V0SW5wdXRDaGFubmVsKGVudiwgb3RoZXJPYmopICE9IE5VTEwpIHsKKyAgICAgICAgam5pVGhyb3dFeGNlcHRpb24oZW52LCAiamF2YS9sYW5nL0lsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIsCisgICAgICAgICAgICAgICAgIk90aGVyIG9iamVjdCBhbHJlYWR5IGhhcyBhIG5hdGl2ZSBpbnB1dCBjaGFubmVsLiIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgTmF0aXZlSW5wdXRDaGFubmVsKiBuYXRpdmVJbnB1dENoYW5uZWwgPQorICAgICAgICAgICAgYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbF9nZXROYXRpdmVJbnB1dENoYW5uZWwoZW52LCBvYmopOworICAgIGFuZHJvaWRfdmlld19JbnB1dENoYW5uZWxfc2V0TmF0aXZlSW5wdXRDaGFubmVsKGVudiwgb3RoZXJPYmosIG5hdGl2ZUlucHV0Q2hhbm5lbCk7CisgICAgYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbF9zZXROYXRpdmVJbnB1dENoYW5uZWwoZW52LCBvYmosIE5VTEwpOworfQorCitzdGF0aWMgdm9pZCBhbmRyb2lkX3ZpZXdfSW5wdXRDaGFubmVsX25hdGl2ZVJlYWRGcm9tUGFyY2VsKEpOSUVudiogZW52LCBqb2JqZWN0IG9iaiwKKyAgICAgICAgam9iamVjdCBwYXJjZWxPYmopIHsKKyAgICBpZiAoYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbF9nZXRJbnB1dENoYW5uZWwoZW52LCBvYmopICE9IE5VTEwpIHsKKyAgICAgICAgam5pVGhyb3dFeGNlcHRpb24oZW52LCAiamF2YS9sYW5nL0lsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIsCisgICAgICAgICAgICAgICAgIlRoaXMgb2JqZWN0IGFscmVhZHkgaGFzIGEgbmF0aXZlIGlucHV0IGNoYW5uZWwuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBQYXJjZWwqIHBhcmNlbCA9IHBhcmNlbEZvckphdmFPYmplY3QoZW52LCBwYXJjZWxPYmopOworICAgIGlmIChwYXJjZWwpIHsKKyAgICAgICAgYm9vbCBpc0luaXRpYWxpemVkID0gcGFyY2VsLT5yZWFkSW50MzIoKTsKKyAgICAgICAgaWYgKGlzSW5pdGlhbGl6ZWQpIHsKKyAgICAgICAgICAgIFN0cmluZzggbmFtZSA9IHBhcmNlbC0+cmVhZFN0cmluZzgoKTsKKyAgICAgICAgICAgIGludDMyX3QgYXNobWVtRmQgPSBkdXAocGFyY2VsLT5yZWFkRmlsZURlc2NyaXB0b3IoKSk7CisgICAgICAgICAgICBpbnQzMl90IHJlY2VpdmVQaXBlRmQgPSBkdXAocGFyY2VsLT5yZWFkRmlsZURlc2NyaXB0b3IoKSk7CisgICAgICAgICAgICBpbnQzMl90IHNlbmRQaXBlRmQgPSBkdXAocGFyY2VsLT5yZWFkRmlsZURlc2NyaXB0b3IoKSk7CisgICAgICAgICAgICBpZiAoYXNobWVtRmQgPCAwIHx8IHJlY2VpdmVQaXBlRmQgPCAwIHx8IHNlbmRQaXBlRmQgPCAwKSB7CisgICAgICAgICAgICAgICAgaWYgKGFzaG1lbUZkID49IDApIDo6Y2xvc2UoYXNobWVtRmQpOworICAgICAgICAgICAgICAgIGlmIChyZWNlaXZlUGlwZUZkID49IDApIDo6Y2xvc2UocmVjZWl2ZVBpcGVGZCk7CisgICAgICAgICAgICAgICAgaWYgKHNlbmRQaXBlRmQgPj0gMCkgOjpjbG9zZShzZW5kUGlwZUZkKTsKKyAgICAgICAgICAgICAgICBqbmlUaHJvd1J1bnRpbWVFeGNlcHRpb24oZW52LAorICAgICAgICAgICAgICAgICAgICAgICAgIkNvdWxkIG5vdCByZWFkIGlucHV0IGNoYW5uZWwgZmlsZSBkZXNjcmlwdG9ycyBmcm9tIHBhcmNlbC4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIElucHV0Q2hhbm5lbCogaW5wdXRDaGFubmVsID0gbmV3IElucHV0Q2hhbm5lbChuYW1lLCBhc2htZW1GZCwKKyAgICAgICAgICAgICAgICAgICAgcmVjZWl2ZVBpcGVGZCwgc2VuZFBpcGVGZCk7CisgICAgICAgICAgICBOYXRpdmVJbnB1dENoYW5uZWwqIG5hdGl2ZUlucHV0Q2hhbm5lbCA9IG5ldyBOYXRpdmVJbnB1dENoYW5uZWwoaW5wdXRDaGFubmVsKTsKKworICAgICAgICAgICAgYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbF9zZXROYXRpdmVJbnB1dENoYW5uZWwoZW52LCBvYmosIG5hdGl2ZUlucHV0Q2hhbm5lbCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGFuZHJvaWRfdmlld19JbnB1dENoYW5uZWxfbmF0aXZlV3JpdGVUb1BhcmNlbChKTklFbnYqIGVudiwgam9iamVjdCBvYmosCisgICAgICAgIGpvYmplY3QgcGFyY2VsT2JqKSB7CisgICAgUGFyY2VsKiBwYXJjZWwgPSBwYXJjZWxGb3JKYXZhT2JqZWN0KGVudiwgcGFyY2VsT2JqKTsKKyAgICBpZiAocGFyY2VsKSB7CisgICAgICAgIE5hdGl2ZUlucHV0Q2hhbm5lbCogbmF0aXZlSW5wdXRDaGFubmVsID0KKyAgICAgICAgICAgICAgICBhbmRyb2lkX3ZpZXdfSW5wdXRDaGFubmVsX2dldE5hdGl2ZUlucHV0Q2hhbm5lbChlbnYsIG9iaik7CisgICAgICAgIGlmIChuYXRpdmVJbnB1dENoYW5uZWwpIHsKKyAgICAgICAgICAgIHNwPElucHV0Q2hhbm5lbD4gaW5wdXRDaGFubmVsID0gbmF0aXZlSW5wdXRDaGFubmVsLT5nZXRJbnB1dENoYW5uZWwoKTsKKworICAgICAgICAgICAgcGFyY2VsLT53cml0ZUludDMyKDEpOworICAgICAgICAgICAgcGFyY2VsLT53cml0ZVN0cmluZzgoaW5wdXRDaGFubmVsLT5nZXROYW1lKCkpOworICAgICAgICAgICAgcGFyY2VsLT53cml0ZUR1cEZpbGVEZXNjcmlwdG9yKGlucHV0Q2hhbm5lbC0+Z2V0QXNobWVtRmQoKSk7CisgICAgICAgICAgICBwYXJjZWwtPndyaXRlRHVwRmlsZURlc2NyaXB0b3IoaW5wdXRDaGFubmVsLT5nZXRSZWNlaXZlUGlwZUZkKCkpOworICAgICAgICAgICAgcGFyY2VsLT53cml0ZUR1cEZpbGVEZXNjcmlwdG9yKGlucHV0Q2hhbm5lbC0+Z2V0U2VuZFBpcGVGZCgpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHBhcmNlbC0+d3JpdGVJbnQzMigwKTsKKyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGljIGpzdHJpbmcgYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbF9uYXRpdmVHZXROYW1lKEpOSUVudiogZW52LCBqb2JqZWN0IG9iaikgeworICAgIE5hdGl2ZUlucHV0Q2hhbm5lbCogbmF0aXZlSW5wdXRDaGFubmVsID0KKyAgICAgICAgICAgIGFuZHJvaWRfdmlld19JbnB1dENoYW5uZWxfZ2V0TmF0aXZlSW5wdXRDaGFubmVsKGVudiwgb2JqKTsKKyAgICBpZiAoISBuYXRpdmVJbnB1dENoYW5uZWwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAganN0cmluZyBuYW1lID0gZW52LT5OZXdTdHJpbmdVVEYobmF0aXZlSW5wdXRDaGFubmVsLT5nZXRJbnB1dENoYW5uZWwoKS0+Z2V0TmFtZSgpLnN0cmluZygpKTsKKyAgICByZXR1cm4gbmFtZTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdGF0aWMgSk5JTmF0aXZlTWV0aG9kIGdJbnB1dENoYW5uZWxNZXRob2RzW10gPSB7CisgICAgLyogbmFtZSwgc2lnbmF0dXJlLCBmdW5jUHRyICovCisgICAgeyAibmF0aXZlT3BlbklucHV0Q2hhbm5lbFBhaXIiLCAiKExqYXZhL2xhbmcvU3RyaW5nOylbTGFuZHJvaWQvdmlldy9JbnB1dENoYW5uZWw7IiwKKyAgICAgICAgICAgICh2b2lkKilhbmRyb2lkX3ZpZXdfSW5wdXRDaGFubmVsX25hdGl2ZU9wZW5JbnB1dENoYW5uZWxQYWlyIH0sCisgICAgeyAibmF0aXZlRGlzcG9zZSIsICIoWilWIiwKKyAgICAgICAgICAgICh2b2lkKilhbmRyb2lkX3ZpZXdfSW5wdXRDaGFubmVsX25hdGl2ZURpc3Bvc2UgfSwKKyAgICB7ICJuYXRpdmVUcmFuc2ZlclRvIiwgIihMYW5kcm9pZC92aWV3L0lucHV0Q2hhbm5lbDspViIsCisgICAgICAgICAgICAodm9pZCopYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbF9uYXRpdmVUcmFuc2ZlclRvIH0sCisgICAgeyAibmF0aXZlUmVhZEZyb21QYXJjZWwiLCAiKExhbmRyb2lkL29zL1BhcmNlbDspViIsCisgICAgICAgICAgICAodm9pZCopYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbF9uYXRpdmVSZWFkRnJvbVBhcmNlbCB9LAorICAgIHsgIm5hdGl2ZVdyaXRlVG9QYXJjZWwiLCAiKExhbmRyb2lkL29zL1BhcmNlbDspViIsCisgICAgICAgICAgICAodm9pZCopYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbF9uYXRpdmVXcml0ZVRvUGFyY2VsIH0sCisgICAgeyAibmF0aXZlR2V0TmFtZSIsICIoKUxqYXZhL2xhbmcvU3RyaW5nOyIsCisgICAgICAgICAgICAodm9pZCopYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbF9uYXRpdmVHZXROYW1lIH0sCit9OworCisjZGVmaW5lIEZJTkRfQ0xBU1ModmFyLCBjbGFzc05hbWUpIFwKKyAgICAgICAgdmFyID0gZW52LT5GaW5kQ2xhc3MoY2xhc3NOYW1lKTsgXAorICAgICAgICBMT0dfRkFUQUxfSUYoISB2YXIsICJVbmFibGUgdG8gZmluZCBjbGFzcyAiIGNsYXNzTmFtZSk7IFwKKyAgICAgICAgdmFyID0gamNsYXNzKGVudi0+TmV3R2xvYmFsUmVmKHZhcikpOworCisjZGVmaW5lIEdFVF9NRVRIT0RfSUQodmFyLCBjbGF6eiwgbWV0aG9kTmFtZSwgbWV0aG9kRGVzY3JpcHRvcikgXAorICAgICAgICB2YXIgPSBlbnYtPkdldE1ldGhvZElEKGNsYXp6LCBtZXRob2ROYW1lLCBtZXRob2REZXNjcmlwdG9yKTsgXAorICAgICAgICBMT0dfRkFUQUxfSUYoISB2YXIsICJVbmFibGUgdG8gZmluZCBtZXRob2QgIiBtZXRob2ROYW1lKTsKKworI2RlZmluZSBHRVRfRklFTERfSUQodmFyLCBjbGF6eiwgZmllbGROYW1lLCBmaWVsZERlc2NyaXB0b3IpIFwKKyAgICAgICAgdmFyID0gZW52LT5HZXRGaWVsZElEKGNsYXp6LCBmaWVsZE5hbWUsIGZpZWxkRGVzY3JpcHRvcik7IFwKKyAgICAgICAgTE9HX0ZBVEFMX0lGKCEgdmFyLCAiVW5hYmxlIHRvIGZpbmQgZmllbGQgIiBmaWVsZE5hbWUpOworCitpbnQgcmVnaXN0ZXJfYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbChKTklFbnYqIGVudikgeworICAgIGludCByZXMgPSBqbmlSZWdpc3Rlck5hdGl2ZU1ldGhvZHMoZW52LCAiYW5kcm9pZC92aWV3L0lucHV0Q2hhbm5lbCIsCisgICAgICAgICAgICBnSW5wdXRDaGFubmVsTWV0aG9kcywgTkVMRU0oZ0lucHV0Q2hhbm5lbE1ldGhvZHMpKTsKKyAgICBMT0dfRkFUQUxfSUYocmVzIDwgMCwgIlVuYWJsZSB0byByZWdpc3RlciBuYXRpdmUgbWV0aG9kcy4iKTsKKworICAgIEZJTkRfQ0xBU1MoZ0lucHV0Q2hhbm5lbENsYXNzSW5mby5jbGF6eiwgImFuZHJvaWQvdmlldy9JbnB1dENoYW5uZWwiKTsKKworICAgIEdFVF9GSUVMRF9JRChnSW5wdXRDaGFubmVsQ2xhc3NJbmZvLm1QdHIsIGdJbnB1dENoYW5uZWxDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAibVB0ciIsICJJIik7CisgICAgCisgICAgR0VUX01FVEhPRF9JRChnSW5wdXRDaGFubmVsQ2xhc3NJbmZvLmN0b3IsIGdJbnB1dENoYW5uZWxDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAiPGluaXQ+IiwgIigpViIpOworCisgICAgcmV0dXJuIDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL2NvcmUvam5pL2FuZHJvaWRfdmlld19JbnB1dENoYW5uZWwuaCBiL2NvcmUvam5pL2FuZHJvaWRfdmlld19JbnB1dENoYW5uZWwuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYTJkMjgyCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9qbmkvYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbC5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIF9BTkRST0lEX1ZJRVdfSU5QVVRDSEFOTkVMX0gKKyNkZWZpbmUgX0FORFJPSURfVklFV19JTlBVVENIQU5ORUxfSAorCisjaW5jbHVkZSAiam5pLmgiCisKKyNpbmNsdWRlIDx1aS9JbnB1dFRyYW5zcG9ydC5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK3R5cGVkZWYgdm9pZCAoKklucHV0Q2hhbm5lbE9iakRpc3Bvc2VDYWxsYmFjaykoSk5JRW52KiBlbnYsIGpvYmplY3QgaW5wdXRDaGFubmVsT2JqLAorICAgICAgICBjb25zdCBzcDxJbnB1dENoYW5uZWw+JiBpbnB1dENoYW5uZWwsIHZvaWQqIGRhdGEpOworCitleHRlcm4gc3A8SW5wdXRDaGFubmVsPiBhbmRyb2lkX3ZpZXdfSW5wdXRDaGFubmVsX2dldElucHV0Q2hhbm5lbChKTklFbnYqIGVudiwKKyAgICAgICAgam9iamVjdCBpbnB1dENoYW5uZWxPYmopOworCisvKiBTZXRzIGEgY2FsbGJhY2sgdGhhdCBpcyBpbnZva2VkIHdoZW4gdGhlIElucHV0Q2hhbm5lbCBEVk0gb2JqZWN0IGlzIGRpc3Bvc2VkIChvciBmaW5hbGl6ZWQpLgorICogVGhpcyBpcyB1c2VkIHRvIGF1dG9tYXRpY2FsbHkgZGlzcG9zZSBvZiBvdGhlciBuYXRpdmUgb2JqZWN0cyBpbiB0aGUgaW5wdXQgZGlzcGF0Y2hlcgorICogYW5kIGlucHV0IHF1ZXVlIHRvIHByZXZlbnQgbWVtb3J5IGxlYWtzLiAqLworZXh0ZXJuIHZvaWQgYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbF9zZXREaXNwb3NlQ2FsbGJhY2soSk5JRW52KiBlbnYsIGpvYmplY3QgaW5wdXRDaGFubmVsT2JqLAorICAgICAgICBJbnB1dENoYW5uZWxPYmpEaXNwb3NlQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQqIGRhdGEgPSBOVUxMKTsKKworfSAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCisjZW5kaWYgLy8gX0FORFJPSURfT1NfSU5QVVRDSEFOTkVMX0gKZGlmZiAtLWdpdCBhL2NvcmUvam5pL2FuZHJvaWRfdmlld19JbnB1dFF1ZXVlLmNwcCBiL2NvcmUvam5pL2FuZHJvaWRfdmlld19JbnB1dFF1ZXVlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZmIzY2Y3Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9qbmkvYW5kcm9pZF92aWV3X0lucHV0UXVldWUuY3BwCkBAIC0wLDAgKzEsNDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2RlZmluZSBMT0dfVEFHICJJbnB1dFF1ZXVlLUpOSSIKKworLy8jZGVmaW5lIExPR19OREVCVUcgMAorCisvLyBMb2cgZGVidWcgbWVzc2FnZXMgYWJvdXQgdGhlIGRpc3BhdGNoIGN5Y2xlLgorI2RlZmluZSBERUJVR19ESVNQQVRDSF9DWUNMRSAwCisKKy8vIExvZyBkZWJ1ZyBtZXNzYWdlcyBhYm91dCByZWdpc3RyYXRpb25zLgorI2RlZmluZSBERUJVR19SRUdJU1RSQVRJT04gMAorCisKKyNpbmNsdWRlICJKTklIZWxwLmgiCisKKyNpbmNsdWRlIDxhbmRyb2lkX3J1bnRpbWUvQW5kcm9pZFJ1bnRpbWUuaD4KKyNpbmNsdWRlIDx1dGlscy9Mb2cuaD4KKyNpbmNsdWRlIDx1dGlscy9Qb2xsTG9vcC5oPgorI2luY2x1ZGUgPHV0aWxzL0tleWVkVmVjdG9yLmg+CisjaW5jbHVkZSA8dXRpbHMvdGhyZWFkcy5oPgorI2luY2x1ZGUgPHVpL0lucHV0VHJhbnNwb3J0Lmg+CisjaW5jbHVkZSAiYW5kcm9pZF9vc19NZXNzYWdlUXVldWUuaCIKKyNpbmNsdWRlICJhbmRyb2lkX3ZpZXdfSW5wdXRDaGFubmVsLmgiCisjaW5jbHVkZSAiYW5kcm9pZF92aWV3X0tleUV2ZW50LmgiCisjaW5jbHVkZSAiYW5kcm9pZF92aWV3X01vdGlvbkV2ZW50LmgiCisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdGF0aWMgc3RydWN0IHsKKyAgICBqY2xhc3MgY2xheno7CisKKyAgICBqbWV0aG9kSUQgZGlzcGF0Y2hLZXlFdmVudDsKKyAgICBqbWV0aG9kSUQgZGlzcGF0Y2hNb3Rpb25FdmVudDsKK30gZ0lucHV0UXVldWVDbGFzc0luZm87CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3MgTmF0aXZlSW5wdXRRdWV1ZSB7CitwdWJsaWM6CisgICAgTmF0aXZlSW5wdXRRdWV1ZSgpOworICAgIH5OYXRpdmVJbnB1dFF1ZXVlKCk7CisKKyAgICBzdGF0dXNfdCByZWdpc3RlcklucHV0Q2hhbm5lbChKTklFbnYqIGVudiwgam9iamVjdCBpbnB1dENoYW5uZWxPYmosCisgICAgICAgICAgICBqb2JqZWN0IGlucHV0SGFuZGxlck9iaiwgam9iamVjdCBtZXNzYWdlUXVldWVPYmopOworCisgICAgc3RhdHVzX3QgdW5yZWdpc3RlcklucHV0Q2hhbm5lbChKTklFbnYqIGVudiwgam9iamVjdCBpbnB1dENoYW5uZWxPYmopOworCisgICAgc3RhdHVzX3QgZmluaXNoZWQoSk5JRW52KiBlbnYsIGpsb25nIGZpbmlzaGVkVG9rZW4sIGJvb2wgaWdub3JlU3B1cmlvdXNGaW5pc2gpOworCitwcml2YXRlOgorICAgIGNsYXNzIENvbm5lY3Rpb24gOiBwdWJsaWMgUmVmQmFzZSB7CisgICAgcHJvdGVjdGVkOgorICAgICAgICB2aXJ0dWFsIH5Db25uZWN0aW9uKCk7CisKKyAgICBwdWJsaWM6CisgICAgICAgIGVudW0gU3RhdHVzIHsKKyAgICAgICAgICAgIC8vIEV2ZXJ5dGhpbmcgaXMgcGVhY2h5LgorICAgICAgICAgICAgU1RBVFVTX05PUk1BTCwKKyAgICAgICAgICAgIC8vIFRoZSBpbnB1dCBjaGFubmVsIGhhcyBiZWVuIHVucmVnaXN0ZXJlZC4KKyAgICAgICAgICAgIFNUQVRVU19aT01CSUUKKyAgICAgICAgfTsKKworICAgICAgICBDb25uZWN0aW9uKGNvbnN0IHNwPElucHV0Q2hhbm5lbD4mIGlucHV0Q2hhbm5lbCwgY29uc3Qgc3A8UG9sbExvb3A+JiBwb2xsTG9vcCk7CisKKyAgICAgICAgaW5saW5lIGNvbnN0IGNoYXIqIGdldElucHV0Q2hhbm5lbE5hbWUoKSBjb25zdCB7IHJldHVybiBpbnB1dENoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKTsgfQorCisgICAgICAgIFN0YXR1cyBzdGF0dXM7CisKKyAgICAgICAgc3A8SW5wdXRDaGFubmVsPiBpbnB1dENoYW5uZWw7CisgICAgICAgIElucHV0Q29uc3VtZXIgaW5wdXRDb25zdW1lcjsKKyAgICAgICAgc3A8UG9sbExvb3A+IHBvbGxMb29wOworICAgICAgICBqb2JqZWN0IGlucHV0SGFuZGxlck9iakdsb2JhbDsKKyAgICAgICAgUHJlYWxsb2NhdGVkSW5wdXRFdmVudEZhY3RvcnkgaW5wdXRFdmVudEZhY3Rvcnk7CisKKyAgICAgICAgLy8gVGhlIHNlcXVlbmNlIG51bWJlciBvZiB0aGUgY3VycmVudCBldmVudCBiZWluZyBkaXNwYXRjaGVkLgorICAgICAgICAvLyBUaGlzIGlzIHVzZWQgYXMgcGFydCBvZiB0aGUgZmluaXNoZWQgdG9rZW4gYXMgYSB3YXkgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgdGhlIGZpbmlzaGVkCisgICAgICAgIC8vIHRva2VuIGlzIHN0aWxsIHZhbGlkIGJlZm9yZSBzZW5kaW5nIGEgZmluaXNoZWQgc2lnbmFsIGJhY2sgdG8gdGhlIHB1Ymxpc2hlci4KKyAgICAgICAgdWludDMyX3QgbWVzc2FnZVNlcU51bTsKKworICAgICAgICAvLyBUcnVlIGlmIGEgbWVzc2FnZSBoYXMgYmVlbiByZWNlaXZlZCBmcm9tIHRoZSBwdWJsaXNoZXIgYnV0IG5vdCB5ZXQgZmluaXNoZWQuCisgICAgICAgIGJvb2wgbWVzc2FnZUluUHJvZ3Jlc3M7CisgICAgfTsKKworICAgIE11dGV4IG1Mb2NrOworICAgIEtleWVkVmVjdG9yPGludDMyX3QsIHNwPENvbm5lY3Rpb24+ID4gbUNvbm5lY3Rpb25zQnlSZWNlaXZlRmQ7CisKKyAgICBzdGF0aWMgdm9pZCBoYW5kbGVJbnB1dENoYW5uZWxEaXNwb3NlZChKTklFbnYqIGVudiwKKyAgICAgICAgICAgIGpvYmplY3QgaW5wdXRDaGFubmVsT2JqLCBjb25zdCBzcDxJbnB1dENoYW5uZWw+JiBpbnB1dENoYW5uZWwsIHZvaWQqIGRhdGEpOworCisgICAgc3RhdGljIGJvb2wgaGFuZGxlUmVjZWl2ZUNhbGxiYWNrKGludCByZWNlaXZlRmQsIGludCBldmVudHMsIHZvaWQqIGRhdGEpOworCisgICAgc3RhdGljIGpsb25nIGdlbmVyYXRlRmluaXNoZWRUb2tlbihpbnQzMl90IHJlY2VpdmVGZCwgaW50MzJfdCBtZXNzYWdlU2VxTnVtKTsKKworICAgIHN0YXRpYyB2b2lkIHBhcnNlRmluaXNoZWRUb2tlbihqbG9uZyBmaW5pc2hlZFRva2VuLAorICAgICAgICAgICAgaW50MzJfdCogb3V0UmVjZWl2ZUZkLCB1aW50MzJfdCogb3V0TWVzc2FnZUluZGV4KTsKK307CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTmF0aXZlSW5wdXRRdWV1ZTo6TmF0aXZlSW5wdXRRdWV1ZSgpIHsKK30KKworTmF0aXZlSW5wdXRRdWV1ZTo6fk5hdGl2ZUlucHV0UXVldWUoKSB7Cit9CisKK3N0YXR1c190IE5hdGl2ZUlucHV0UXVldWU6OnJlZ2lzdGVySW5wdXRDaGFubmVsKEpOSUVudiogZW52LCBqb2JqZWN0IGlucHV0Q2hhbm5lbE9iaiwKKyAgICAgICAgam9iamVjdCBpbnB1dEhhbmRsZXJPYmosIGpvYmplY3QgbWVzc2FnZVF1ZXVlT2JqKSB7CisgICAgc3A8SW5wdXRDaGFubmVsPiBpbnB1dENoYW5uZWwgPSBhbmRyb2lkX3ZpZXdfSW5wdXRDaGFubmVsX2dldElucHV0Q2hhbm5lbChlbnYsCisgICAgICAgICAgICBpbnB1dENoYW5uZWxPYmopOworICAgIGlmIChpbnB1dENoYW5uZWwgPT0gTlVMTCkgeworICAgICAgICBMT0dXKCJJbnB1dCBjaGFubmVsIGlzIG5vdCBpbml0aWFsaXplZC4iKTsKKyAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKyAgICB9CisKKyNpZiBERUJVR19SRUdJU1RSQVRJT04KKyAgICBMT0dEKCJjaGFubmVsICclcycgLSBSZWdpc3RlcmVkIiwgaW5wdXRDaGFubmVsLT5nZXROYW1lKCkuc3RyaW5nKCkpOworI2VuZGlmCisKKyAgICBzcDxQb2xsTG9vcD4gcG9sbExvb3AgPSBhbmRyb2lkX29zX01lc3NhZ2VRdWV1ZV9nZXRQb2xsTG9vcChlbnYsIG1lc3NhZ2VRdWV1ZU9iaik7CisKKyAgICBpbnQgcmVjZWl2ZUZkOworICAgIHsgLy8gYWNxdWlyZSBsb2NrCisgICAgICAgIEF1dG9NdXRleCBfbChtTG9jayk7CisKKyAgICAgICAgcmVjZWl2ZUZkID0gaW5wdXRDaGFubmVsLT5nZXRSZWNlaXZlUGlwZUZkKCk7CisgICAgICAgIGlmIChtQ29ubmVjdGlvbnNCeVJlY2VpdmVGZC5pbmRleE9mS2V5KHJlY2VpdmVGZCkgPj0gMCkgeworICAgICAgICAgICAgTE9HVygiQXR0ZW1wdGVkIHRvIHJlZ2lzdGVyIGFscmVhZHkgcmVnaXN0ZXJlZCBpbnB1dCBjaGFubmVsICclcyciLAorICAgICAgICAgICAgICAgICAgICBpbnB1dENoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKSk7CisgICAgICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOworICAgICAgICB9CisKKyAgICAgICAgc3A8Q29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IG5ldyBDb25uZWN0aW9uKGlucHV0Q2hhbm5lbCwgcG9sbExvb3ApOworICAgICAgICBzdGF0dXNfdCByZXN1bHQgPSBjb25uZWN0aW9uLT5pbnB1dENvbnN1bWVyLmluaXRpYWxpemUoKTsKKyAgICAgICAgaWYgKHJlc3VsdCkgeworICAgICAgICAgICAgTE9HVygiRmFpbGVkIHRvIGluaXRpYWxpemUgaW5wdXQgY29uc3VtZXIgZm9yIGlucHV0IGNoYW5uZWwgJyVzJywgc3RhdHVzPSVkIiwKKyAgICAgICAgICAgICAgICAgICAgaW5wdXRDaGFubmVsLT5nZXROYW1lKCkuc3RyaW5nKCksIHJlc3VsdCk7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAgY29ubmVjdGlvbi0+aW5wdXRIYW5kbGVyT2JqR2xvYmFsID0gZW52LT5OZXdHbG9iYWxSZWYoaW5wdXRIYW5kbGVyT2JqKTsKKworICAgICAgICBtQ29ubmVjdGlvbnNCeVJlY2VpdmVGZC5hZGQocmVjZWl2ZUZkLCBjb25uZWN0aW9uKTsKKyAgICB9IC8vIHJlbGVhc2UgbG9jaworCisgICAgYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbF9zZXREaXNwb3NlQ2FsbGJhY2soZW52LCBpbnB1dENoYW5uZWxPYmosCisgICAgICAgICAgICBoYW5kbGVJbnB1dENoYW5uZWxEaXNwb3NlZCwgdGhpcyk7CisKKyAgICBwb2xsTG9vcC0+c2V0Q2FsbGJhY2socmVjZWl2ZUZkLCBQT0xMSU4sIGhhbmRsZVJlY2VpdmVDYWxsYmFjaywgdGhpcyk7CisgICAgcmV0dXJuIE9LOworfQorCitzdGF0dXNfdCBOYXRpdmVJbnB1dFF1ZXVlOjp1bnJlZ2lzdGVySW5wdXRDaGFubmVsKEpOSUVudiogZW52LCBqb2JqZWN0IGlucHV0Q2hhbm5lbE9iaikgeworICAgIHNwPElucHV0Q2hhbm5lbD4gaW5wdXRDaGFubmVsID0gYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbF9nZXRJbnB1dENoYW5uZWwoZW52LAorICAgICAgICAgICAgaW5wdXRDaGFubmVsT2JqKTsKKyAgICBpZiAoaW5wdXRDaGFubmVsID09IE5VTEwpIHsKKyAgICAgICAgTE9HVygiSW5wdXQgY2hhbm5lbCBpcyBub3QgaW5pdGlhbGl6ZWQuIik7CisgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisgICAgfQorCisjaWYgREVCVUdfUkVHSVNUUkFUSU9OCisgICAgTE9HRCgiY2hhbm5lbCAnJXMnIC0gVW5yZWdpc3RlcmVkIiwgaW5wdXRDaGFubmVsLT5nZXROYW1lKCkuc3RyaW5nKCkpOworI2VuZGlmCisKKyAgICBpbnQzMl90IHJlY2VpdmVGZDsKKyAgICBzcDxDb25uZWN0aW9uPiBjb25uZWN0aW9uOworICAgIHsgLy8gYWNxdWlyZSBsb2NrCisgICAgICAgIEF1dG9NdXRleCBfbChtTG9jayk7CisKKyAgICAgICAgcmVjZWl2ZUZkID0gaW5wdXRDaGFubmVsLT5nZXRSZWNlaXZlUGlwZUZkKCk7CisgICAgICAgIHNzaXplX3QgY29ubmVjdGlvbkluZGV4ID0gbUNvbm5lY3Rpb25zQnlSZWNlaXZlRmQuaW5kZXhPZktleShyZWNlaXZlRmQpOworICAgICAgICBpZiAoY29ubmVjdGlvbkluZGV4IDwgMCkgeworICAgICAgICAgICAgTE9HVygiQXR0ZW1wdGVkIHRvIHVucmVnaXN0ZXIgYWxyZWFkeSB1bnJlZ2lzdGVyZWQgaW5wdXQgY2hhbm5lbCAnJXMnIiwKKyAgICAgICAgICAgICAgICAgICAgaW5wdXRDaGFubmVsLT5nZXROYW1lKCkuc3RyaW5nKCkpOworICAgICAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKyAgICAgICAgfQorCisgICAgICAgIGNvbm5lY3Rpb24gPSBtQ29ubmVjdGlvbnNCeVJlY2VpdmVGZC52YWx1ZUF0KGNvbm5lY3Rpb25JbmRleCk7CisgICAgICAgIG1Db25uZWN0aW9uc0J5UmVjZWl2ZUZkLnJlbW92ZUl0ZW1zQXQoY29ubmVjdGlvbkluZGV4KTsKKworICAgICAgICBjb25uZWN0aW9uLT5zdGF0dXMgPSBDb25uZWN0aW9uOjpTVEFUVVNfWk9NQklFOworCisgICAgICAgIGVudi0+RGVsZXRlR2xvYmFsUmVmKGNvbm5lY3Rpb24tPmlucHV0SGFuZGxlck9iakdsb2JhbCk7CisgICAgICAgIGNvbm5lY3Rpb24tPmlucHV0SGFuZGxlck9iakdsb2JhbCA9IE5VTEw7CisgICAgfSAvLyByZWxlYXNlIGxvY2sKKworICAgIGFuZHJvaWRfdmlld19JbnB1dENoYW5uZWxfc2V0RGlzcG9zZUNhbGxiYWNrKGVudiwgaW5wdXRDaGFubmVsT2JqLCBOVUxMLCBOVUxMKTsKKworICAgIGNvbm5lY3Rpb24tPnBvbGxMb29wLT5yZW1vdmVDYWxsYmFjayhyZWNlaXZlRmQpOworICAgIHJldHVybiBPSzsKK30KKworc3RhdHVzX3QgTmF0aXZlSW5wdXRRdWV1ZTo6ZmluaXNoZWQoSk5JRW52KiBlbnYsIGpsb25nIGZpbmlzaGVkVG9rZW4sIGJvb2wgaWdub3JlU3B1cmlvdXNGaW5pc2gpIHsKKyAgICBpbnQzMl90IHJlY2VpdmVGZDsKKyAgICB1aW50MzJfdCBtZXNzYWdlU2VxTnVtOworICAgIHBhcnNlRmluaXNoZWRUb2tlbihmaW5pc2hlZFRva2VuLCAmcmVjZWl2ZUZkLCAmbWVzc2FnZVNlcU51bSk7CisKKyAgICB7IC8vIGFjcXVpcmUgbG9jaworICAgICAgICBBdXRvTXV0ZXggX2wobUxvY2spOworCisgICAgICAgIHNzaXplX3QgY29ubmVjdGlvbkluZGV4ID0gbUNvbm5lY3Rpb25zQnlSZWNlaXZlRmQuaW5kZXhPZktleShyZWNlaXZlRmQpOworICAgICAgICBpZiAoY29ubmVjdGlvbkluZGV4IDwgMCkgeworICAgICAgICAgICAgaWYgKCEgaWdub3JlU3B1cmlvdXNGaW5pc2gpIHsKKyAgICAgICAgICAgICAgICBMT0dXKCJBdHRlbXB0ZWQgdG8gZmluaXNoIGlucHV0IG9uIGNoYW5uZWwgdGhhdCBpcyBubyBsb25nZXIgcmVnaXN0ZXJlZC4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBERUFEX09CSkVDVDsKKyAgICAgICAgfQorCisgICAgICAgIHNwPENvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBtQ29ubmVjdGlvbnNCeVJlY2VpdmVGZC52YWx1ZUF0KGNvbm5lY3Rpb25JbmRleCk7CisgICAgICAgIGlmIChtZXNzYWdlU2VxTnVtICE9IGNvbm5lY3Rpb24tPm1lc3NhZ2VTZXFOdW0gfHwgISBjb25uZWN0aW9uLT5tZXNzYWdlSW5Qcm9ncmVzcykgeworICAgICAgICAgICAgaWYgKCEgaWdub3JlU3B1cmlvdXNGaW5pc2gpIHsKKyAgICAgICAgICAgICAgICBMT0dXKCJBdHRlbXB0ZWQgdG8gZmluaXNoIGlucHV0IHR3aWNlIG9uIGNoYW5uZWwgJyVzJy4iLAorICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+Z2V0SW5wdXRDaGFubmVsTmFtZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBJTlZBTElEX09QRVJBVElPTjsKKyAgICAgICAgfQorCisgICAgICAgIGNvbm5lY3Rpb24tPm1lc3NhZ2VJblByb2dyZXNzID0gZmFsc2U7CisKKyAgICAgICAgc3RhdHVzX3Qgc3RhdHVzID0gY29ubmVjdGlvbi0+aW5wdXRDb25zdW1lci5zZW5kRmluaXNoZWRTaWduYWwoKTsKKyAgICAgICAgaWYgKHN0YXR1cykgeworICAgICAgICAgICAgTE9HVygiRmFpbGVkIHRvIHNlbmQgZmluaXNoZWQgc2lnbmFsIG9uIGNoYW5uZWwgJyVzJy4gIHN0YXR1cz0lZCIsCisgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24tPmdldElucHV0Q2hhbm5lbE5hbWUoKSwgc3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybiBzdGF0dXM7CisgICAgICAgIH0KKworI2lmIERFQlVHX0RJU1BBVENIX0NZQ0xFCisgICAgICAgIExPR0QoImNoYW5uZWwgJyVzJyB+IEZpbmlzaGVkIGV2ZW50LiIsCisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+Z2V0SW5wdXRDaGFubmVsTmFtZSgpKTsKKyNlbmRpZgorICAgIH0gLy8gcmVsZWFzZSBsb2NrCisKKyAgICByZXR1cm4gT0s7Cit9CisKK3ZvaWQgTmF0aXZlSW5wdXRRdWV1ZTo6aGFuZGxlSW5wdXRDaGFubmVsRGlzcG9zZWQoSk5JRW52KiBlbnYsCisgICAgICAgIGpvYmplY3QgaW5wdXRDaGFubmVsT2JqLCBjb25zdCBzcDxJbnB1dENoYW5uZWw+JiBpbnB1dENoYW5uZWwsIHZvaWQqIGRhdGEpIHsKKyAgICBMT0dXKCJJbnB1dCBjaGFubmVsIG9iamVjdCAnJXMnIHdhcyBkaXNwb3NlZCB3aXRob3V0IGZpcnN0IGJlaW5nIHVucmVnaXN0ZXJlZCB3aXRoICIKKyAgICAgICAgICAgICJ0aGUgaW5wdXQgcXVldWUhIiwgaW5wdXRDaGFubmVsLT5nZXROYW1lKCkuc3RyaW5nKCkpOworCisgICAgTmF0aXZlSW5wdXRRdWV1ZSogcSA9IHN0YXRpY19jYXN0PE5hdGl2ZUlucHV0UXVldWUqPihkYXRhKTsKKyAgICBxLT51bnJlZ2lzdGVySW5wdXRDaGFubmVsKGVudiwgaW5wdXRDaGFubmVsT2JqKTsKK30KKworYm9vbCBOYXRpdmVJbnB1dFF1ZXVlOjpoYW5kbGVSZWNlaXZlQ2FsbGJhY2soaW50IHJlY2VpdmVGZCwgaW50IGV2ZW50cywgdm9pZCogZGF0YSkgeworICAgIE5hdGl2ZUlucHV0UXVldWUqIHEgPSBzdGF0aWNfY2FzdDxOYXRpdmVJbnB1dFF1ZXVlKj4oZGF0YSk7CisgICAgSk5JRW52KiBlbnYgPSBBbmRyb2lkUnVudGltZTo6Z2V0Sk5JRW52KCk7CisKKyAgICBzcDxDb25uZWN0aW9uPiBjb25uZWN0aW9uOworICAgIElucHV0RXZlbnQqIGlucHV0RXZlbnQ7CisgICAgam9iamVjdCBpbnB1dEhhbmRsZXJPYmpMb2NhbDsKKyAgICBqbG9uZyBmaW5pc2hlZFRva2VuOworICAgIHsgLy8gYWNxdWlyZSBsb2NrCisgICAgICAgIEF1dG9NdXRleCBfbChxLT5tTG9jayk7CisKKyAgICAgICAgc3NpemVfdCBjb25uZWN0aW9uSW5kZXggPSBxLT5tQ29ubmVjdGlvbnNCeVJlY2VpdmVGZC5pbmRleE9mS2V5KHJlY2VpdmVGZCk7CisgICAgICAgIGlmIChjb25uZWN0aW9uSW5kZXggPCAwKSB7CisgICAgICAgICAgICBMT0dFKCJSZWNlaXZlZCBzcHVyaW91cyByZWNlaXZlIGNhbGxiYWNrIGZvciB1bmtub3duIGlucHV0IGNoYW5uZWwuICAiCisgICAgICAgICAgICAgICAgICAgICJmZD0lZCwgZXZlbnRzPTB4JXgiLCByZWNlaXZlRmQsIGV2ZW50cyk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIHJlbW92ZSB0aGUgY2FsbGJhY2sKKyAgICAgICAgfQorCisgICAgICAgIGNvbm5lY3Rpb24gPSBxLT5tQ29ubmVjdGlvbnNCeVJlY2VpdmVGZC52YWx1ZUF0KGNvbm5lY3Rpb25JbmRleCk7CisgICAgICAgIGlmIChldmVudHMgJiAoUE9MTEVSUiB8IFBPTExIVVAgfCBQT0xMTlZBTCkpIHsKKyAgICAgICAgICAgIExPR0UoImNoYW5uZWwgJyVzJyB+IFB1Ymxpc2hlciBjbG9zZWQgaW5wdXQgY2hhbm5lbCBvciBhbiBlcnJvciBvY2N1cnJlZC4gICIKKyAgICAgICAgICAgICAgICAgICAgImV2ZW50cz0weCV4IiwgY29ubmVjdGlvbi0+Z2V0SW5wdXRDaGFubmVsTmFtZSgpLCBldmVudHMpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyByZW1vdmUgdGhlIGNhbGxiYWNrCisgICAgICAgIH0KKworICAgICAgICBpZiAoISAoZXZlbnRzICYgUE9MTElOKSkgeworICAgICAgICAgICAgTE9HVygiY2hhbm5lbCAnJXMnIH4gUmVjZWl2ZWQgc3B1cmlvdXMgY2FsbGJhY2sgZm9yIHVuaGFuZGxlZCBwb2xsIGV2ZW50LiAgIgorICAgICAgICAgICAgICAgICAgICAiZXZlbnRzPTB4JXgiLCBjb25uZWN0aW9uLT5nZXRJbnB1dENoYW5uZWxOYW1lKCksIGV2ZW50cyk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXR1c190IHN0YXR1cyA9IGNvbm5lY3Rpb24tPmlucHV0Q29uc3VtZXIucmVjZWl2ZURpc3BhdGNoU2lnbmFsKCk7CisgICAgICAgIGlmIChzdGF0dXMpIHsKKyAgICAgICAgICAgIExPR0UoImNoYW5uZWwgJyVzJyB+IEZhaWxlZCB0byByZWNlaXZlIGRpc3BhdGNoIHNpZ25hbC4gIHN0YXR1cz0lZCIsCisgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24tPmdldElucHV0Q2hhbm5lbE5hbWUoKSwgc3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gcmVtb3ZlIHRoZSBjYWxsYmFjaworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNvbm5lY3Rpb24tPm1lc3NhZ2VJblByb2dyZXNzKSB7CisgICAgICAgICAgICBMT0dXKCJjaGFubmVsICclcycgfiBQdWJsaXNoZXIgc2VudCBzcHVyaW91cyBkaXNwYXRjaCBzaWduYWwuIiwKKyAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+Z2V0SW5wdXRDaGFubmVsTmFtZSgpKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgc3RhdHVzID0gY29ubmVjdGlvbi0+aW5wdXRDb25zdW1lci5jb25zdW1lKCYgY29ubmVjdGlvbi0+aW5wdXRFdmVudEZhY3RvcnksICYgaW5wdXRFdmVudCk7CisgICAgICAgIGlmIChzdGF0dXMpIHsKKyAgICAgICAgICAgIExPR1coImNoYW5uZWwgJyVzJyB+IEZhaWxlZCB0byBjb25zdW1lIGlucHV0IGV2ZW50LiAgc3RhdHVzPSVkIiwKKyAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+Z2V0SW5wdXRDaGFubmVsTmFtZSgpLCBzdGF0dXMpOworICAgICAgICAgICAgY29ubmVjdGlvbi0+aW5wdXRDb25zdW1lci5zZW5kRmluaXNoZWRTaWduYWwoKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgY29ubmVjdGlvbi0+bWVzc2FnZUluUHJvZ3Jlc3MgPSB0cnVlOworICAgICAgICBjb25uZWN0aW9uLT5tZXNzYWdlU2VxTnVtICs9IDE7CisKKyAgICAgICAgZmluaXNoZWRUb2tlbiA9IGdlbmVyYXRlRmluaXNoZWRUb2tlbihyZWNlaXZlRmQsIGNvbm5lY3Rpb24tPm1lc3NhZ2VTZXFOdW0pOworCisgICAgICAgIGlucHV0SGFuZGxlck9iakxvY2FsID0gZW52LT5OZXdMb2NhbFJlZihjb25uZWN0aW9uLT5pbnB1dEhhbmRsZXJPYmpHbG9iYWwpOworICAgIH0gLy8gcmVsZWFzZSBsb2NrCisKKyAgICAvLyBJbnZva2UgdGhlIGhhbmRsZXIgb3V0c2lkZSBvZiB0aGUgbG9jay4KKyAgICAvLworICAgIC8vIE5vdGU6IGlucHV0RXZlbnQgaXMgc3RvcmVkIGluIGEgZmllbGQgb2YgdGhlIGNvbm5lY3Rpb24gb2JqZWN0IHdoaWNoIGNvdWxkIHBvdGVudGlhbGx5CisgICAgLy8gICAgICAgYmVjb21lIGRpc3Bvc2VkIGR1ZSB0byB0aGUgaW5wdXQgY2hhbm5lbCBiZWluZyB1bnJlZ2lzdGVyZWQgY29uY3VycmVudGx5LgorICAgIC8vICAgICAgIEZvciB0aGlzIHJlYXNvbiwgd2UgZXhwbGljaXRseSBrZWVwIHRoZSBjb25uZWN0aW9uIG9iamVjdCBhbGl2ZSBieSBob2xkaW5nCisgICAgLy8gICAgICAgYSBzdHJvbmcgcG9pbnRlciB0byBpdCB3aXRoaW4gdGhpcyBzY29wZS4gIFdlIGFsc28gZ3JhYmJlZCBhIGxvY2FsIHJlZmVyZW5jZSB0bworICAgIC8vICAgICAgIHRoZSBpbnB1dCBoYW5kbGVyIG9iamVjdCBpdHNlbGYgZm9yIHRoZSBzYW1lIHJlYXNvbi4KKworICAgIGludDMyX3QgaW5wdXRFdmVudFR5cGUgPSBpbnB1dEV2ZW50LT5nZXRUeXBlKCk7CisgICAgaW50MzJfdCBpbnB1dEV2ZW50TmF0dXJlID0gaW5wdXRFdmVudC0+Z2V0TmF0dXJlKCk7CisKKyAgICBqb2JqZWN0IGlucHV0RXZlbnRPYmo7CisgICAgam1ldGhvZElEIGRpc3BhdGNoTWV0aG9kSWQ7CisgICAgc3dpdGNoIChpbnB1dEV2ZW50VHlwZSkgeworICAgIGNhc2UgSU5QVVRfRVZFTlRfVFlQRV9LRVk6CisjaWYgREVCVUdfRElTUEFUQ0hfQ1lDTEUKKyAgICAgICAgTE9HRCgiY2hhbm5lbCAnJXMnIH4gUmVjZWl2ZWQga2V5IGV2ZW50LiIsIGNvbm5lY3Rpb24tPmdldElucHV0Q2hhbm5lbE5hbWUoKSk7CisjZW5kaWYKKyAgICAgICAgaW5wdXRFdmVudE9iaiA9IGFuZHJvaWRfdmlld19LZXlFdmVudF9mcm9tTmF0aXZlKGVudiwKKyAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxLZXlFdmVudCo+KGlucHV0RXZlbnQpKTsKKyAgICAgICAgZGlzcGF0Y2hNZXRob2RJZCA9IGdJbnB1dFF1ZXVlQ2xhc3NJbmZvLmRpc3BhdGNoS2V5RXZlbnQ7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBJTlBVVF9FVkVOVF9UWVBFX01PVElPTjoKKyNpZiBERUJVR19ESVNQQVRDSF9DWUNMRQorICAgICAgICBMT0dEKCJjaGFubmVsICclcycgfiBSZWNlaXZlZCBtb3Rpb24gZXZlbnQuIiwgY29ubmVjdGlvbi0+Z2V0SW5wdXRDaGFubmVsTmFtZSgpKTsKKyNlbmRpZgorICAgICAgICBpbnB1dEV2ZW50T2JqID0gYW5kcm9pZF92aWV3X01vdGlvbkV2ZW50X2Zyb21OYXRpdmUoZW52LAorICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PE1vdGlvbkV2ZW50Kj4oaW5wdXRFdmVudCkpOworICAgICAgICBkaXNwYXRjaE1ldGhvZElkID0gZ0lucHV0UXVldWVDbGFzc0luZm8uZGlzcGF0Y2hNb3Rpb25FdmVudDsKKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoZmFsc2UpOyAvLyBJbnB1dENvbnN1bWVyIHNob3VsZCBwcmV2ZW50IHRoaXMgZnJvbSBldmVyIGhhcHBlbmluZworICAgICAgICBpbnB1dEV2ZW50T2JqID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoISBpbnB1dEV2ZW50T2JqKSB7CisgICAgICAgIExPR1coImNoYW5uZWwgJyVzJyB+IEZhaWxlZCB0byBvYnRhaW4gRFZNIGV2ZW50IG9iamVjdC4iLAorICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24tPmdldElucHV0Q2hhbm5lbE5hbWUoKSk7CisgICAgICAgIGVudi0+RGVsZXRlTG9jYWxSZWYoaW5wdXRIYW5kbGVyT2JqTG9jYWwpOworICAgICAgICBxLT5maW5pc2hlZChlbnYsIGZpbmlzaGVkVG9rZW4sIGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisjaWYgREVCVUdfRElTUEFUQ0hfQ1lDTEUKKyAgICBMT0dEKCJJbnZva2luZyBpbnB1dCBoYW5kbGVyLiIpOworI2VuZGlmCisgICAgZW52LT5DYWxsU3RhdGljVm9pZE1ldGhvZChnSW5wdXRRdWV1ZUNsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgIGRpc3BhdGNoTWV0aG9kSWQsIGlucHV0SGFuZGxlck9iakxvY2FsLCBpbnB1dEV2ZW50T2JqLAorICAgICAgICAgICAgamludChpbnB1dEV2ZW50TmF0dXJlKSwgamxvbmcoZmluaXNoZWRUb2tlbikpOworI2lmIERFQlVHX0RJU1BBVENIX0NZQ0xFCisgICAgTE9HRCgiUmV0dXJuZWQgZnJvbSBpbnB1dCBoYW5kbGVyLiIpOworI2VuZGlmCisKKyAgICBpZiAoZW52LT5FeGNlcHRpb25DaGVjaygpKSB7CisgICAgICAgIExPR0UoIkFuIGV4Y2VwdGlvbiBvY2N1cnJlZCB3aGlsZSBpbnZva2luZyB0aGUgaW5wdXQgaGFuZGxlciBmb3IgYW4gZXZlbnQuIik7CisgICAgICAgIExPR0VfRVgoZW52KTsKKyAgICAgICAgZW52LT5FeGNlcHRpb25DbGVhcigpOworCisgICAgICAgIHEtPmZpbmlzaGVkKGVudiwgZmluaXNoZWRUb2tlbiwgdHJ1ZSAvKmlnbm9yZVNwdXJpb3VzRmluaXNoKi8pOworICAgIH0KKworICAgIGVudi0+RGVsZXRlTG9jYWxSZWYoaW5wdXRFdmVudE9iaik7CisgICAgZW52LT5EZWxldGVMb2NhbFJlZihpbnB1dEhhbmRsZXJPYmpMb2NhbCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK2psb25nIE5hdGl2ZUlucHV0UXVldWU6OmdlbmVyYXRlRmluaXNoZWRUb2tlbihpbnQzMl90IHJlY2VpdmVGZCwgaW50MzJfdCBtZXNzYWdlU2VxTnVtKSB7CisgICAgcmV0dXJuIChqbG9uZyhyZWNlaXZlRmQpIDw8IDMyKSB8IGpsb25nKG1lc3NhZ2VTZXFOdW0pOworfQorCit2b2lkIE5hdGl2ZUlucHV0UXVldWU6OnBhcnNlRmluaXNoZWRUb2tlbihqbG9uZyBmaW5pc2hlZFRva2VuLAorICAgICAgICBpbnQzMl90KiBvdXRSZWNlaXZlRmQsIHVpbnQzMl90KiBvdXRNZXNzYWdlSW5kZXgpIHsKKyAgICAqb3V0UmVjZWl2ZUZkID0gaW50MzJfdChmaW5pc2hlZFRva2VuID4+IDMyKTsKKyAgICAqb3V0TWVzc2FnZUluZGV4ID0gdWludDMyX3QoZmluaXNoZWRUb2tlbiAmIDB4ZmZmZmZmZmYpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK05hdGl2ZUlucHV0UXVldWU6OkNvbm5lY3Rpb246OkNvbm5lY3Rpb24oY29uc3Qgc3A8SW5wdXRDaGFubmVsPiYgaW5wdXRDaGFubmVsLCBjb25zdCBzcDxQb2xsTG9vcD4mIHBvbGxMb29wKSA6CisgICAgc3RhdHVzKFNUQVRVU19OT1JNQUwpLCBpbnB1dENoYW5uZWwoaW5wdXRDaGFubmVsKSwgaW5wdXRDb25zdW1lcihpbnB1dENoYW5uZWwpLAorICAgIHBvbGxMb29wKHBvbGxMb29wKSwgaW5wdXRIYW5kbGVyT2JqR2xvYmFsKE5VTEwpLAorICAgIG1lc3NhZ2VTZXFOdW0oMCksIG1lc3NhZ2VJblByb2dyZXNzKGZhbHNlKSB7Cit9CisKK05hdGl2ZUlucHV0UXVldWU6OkNvbm5lY3Rpb246On5Db25uZWN0aW9uKCkgeworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3N0YXRpYyBOYXRpdmVJbnB1dFF1ZXVlIGdOYXRpdmVJbnB1dFF1ZXVlOworCitzdGF0aWMgdm9pZCBhbmRyb2lkX3ZpZXdfSW5wdXRRdWV1ZV9uYXRpdmVSZWdpc3RlcklucHV0Q2hhbm5lbChKTklFbnYqIGVudiwgamNsYXNzIGNsYXp6LAorICAgICAgICBqb2JqZWN0IGlucHV0Q2hhbm5lbE9iaiwgam9iamVjdCBpbnB1dEhhbmRsZXJPYmosIGpvYmplY3QgbWVzc2FnZVF1ZXVlT2JqKSB7CisgICAgc3RhdHVzX3Qgc3RhdHVzID0gZ05hdGl2ZUlucHV0UXVldWUucmVnaXN0ZXJJbnB1dENoYW5uZWwoCisgICAgICAgICAgICBlbnYsIGlucHV0Q2hhbm5lbE9iaiwgaW5wdXRIYW5kbGVyT2JqLCBtZXNzYWdlUXVldWVPYmopOworICAgIGlmIChzdGF0dXMpIHsKKyAgICAgICAgam5pVGhyb3dSdW50aW1lRXhjZXB0aW9uKGVudiwgIkZhaWxlZCB0byByZWdpc3RlciBpbnB1dCBjaGFubmVsLiAgIgorICAgICAgICAgICAgICAgICJDaGVjayBsb2dzIGZvciBkZXRhaWxzLiIpOworICAgIH0KK30KKworc3RhdGljIHZvaWQgYW5kcm9pZF92aWV3X0lucHV0UXVldWVfbmF0aXZlVW5yZWdpc3RlcklucHV0Q2hhbm5lbChKTklFbnYqIGVudiwgamNsYXNzIGNsYXp6LAorICAgICAgICBqb2JqZWN0IGlucHV0Q2hhbm5lbE9iaikgeworICAgIHN0YXR1c190IHN0YXR1cyA9IGdOYXRpdmVJbnB1dFF1ZXVlLnVucmVnaXN0ZXJJbnB1dENoYW5uZWwoZW52LCBpbnB1dENoYW5uZWxPYmopOworICAgIGlmIChzdGF0dXMpIHsKKyAgICAgICAgam5pVGhyb3dSdW50aW1lRXhjZXB0aW9uKGVudiwgIkZhaWxlZCB0byB1bnJlZ2lzdGVyIGlucHV0IGNoYW5uZWwuICAiCisgICAgICAgICAgICAgICAgIkNoZWNrIGxvZ3MgZm9yIGRldGFpbHMuIik7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBhbmRyb2lkX3ZpZXdfSW5wdXRRdWV1ZV9uYXRpdmVGaW5pc2hlZChKTklFbnYqIGVudiwgamNsYXNzIGNsYXp6LAorICAgICAgICBqbG9uZyBmaW5pc2hlZFRva2VuKSB7CisgICAgc3RhdHVzX3Qgc3RhdHVzID0gZ05hdGl2ZUlucHV0UXVldWUuZmluaXNoZWQoCisgICAgICAgICAgICBlbnYsIGZpbmlzaGVkVG9rZW4sIGZhbHNlIC8qaWdub3JlU3B1cmlvdXNGaW5pc2gqLyk7CisgICAgaWYgKHN0YXR1cykgeworICAgICAgICBqbmlUaHJvd1J1bnRpbWVFeGNlcHRpb24oZW52LCAiRmFpbGVkIHRvIGZpbmlzaCBpbnB1dCBldmVudC4gICIKKyAgICAgICAgICAgICAgICAiQ2hlY2sgbG9ncyBmb3IgZGV0YWlscy4iKTsKKyAgICB9Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworc3RhdGljIEpOSU5hdGl2ZU1ldGhvZCBnSW5wdXRRdWV1ZU1ldGhvZHNbXSA9IHsKKyAgICAvKiBuYW1lLCBzaWduYXR1cmUsIGZ1bmNQdHIgKi8KKyAgICB7ICJuYXRpdmVSZWdpc3RlcklucHV0Q2hhbm5lbCIsCisgICAgICAgICAgICAiKExhbmRyb2lkL3ZpZXcvSW5wdXRDaGFubmVsO0xhbmRyb2lkL3ZpZXcvSW5wdXRIYW5kbGVyO0xhbmRyb2lkL29zL01lc3NhZ2VRdWV1ZTspViIsCisgICAgICAgICAgICAodm9pZCopYW5kcm9pZF92aWV3X0lucHV0UXVldWVfbmF0aXZlUmVnaXN0ZXJJbnB1dENoYW5uZWwgfSwKKyAgICB7ICJuYXRpdmVVbnJlZ2lzdGVySW5wdXRDaGFubmVsIiwKKyAgICAgICAgICAgICIoTGFuZHJvaWQvdmlldy9JbnB1dENoYW5uZWw7KVYiLAorICAgICAgICAgICAgKHZvaWQqKWFuZHJvaWRfdmlld19JbnB1dFF1ZXVlX25hdGl2ZVVucmVnaXN0ZXJJbnB1dENoYW5uZWwgfSwKKyAgICB7ICJuYXRpdmVGaW5pc2hlZCIsICIoSilWIiwKKyAgICAgICAgICAgICh2b2lkKilhbmRyb2lkX3ZpZXdfSW5wdXRRdWV1ZV9uYXRpdmVGaW5pc2hlZCB9Cit9OworCisjZGVmaW5lIEZJTkRfQ0xBU1ModmFyLCBjbGFzc05hbWUpIFwKKyAgICAgICAgdmFyID0gZW52LT5GaW5kQ2xhc3MoY2xhc3NOYW1lKTsgXAorICAgICAgICBMT0dfRkFUQUxfSUYoISB2YXIsICJVbmFibGUgdG8gZmluZCBjbGFzcyAiIGNsYXNzTmFtZSk7IFwKKyAgICAgICAgdmFyID0gamNsYXNzKGVudi0+TmV3R2xvYmFsUmVmKHZhcikpOworCisjZGVmaW5lIEdFVF9TVEFUSUNfTUVUSE9EX0lEKHZhciwgY2xhenosIG1ldGhvZE5hbWUsIG1ldGhvZERlc2NyaXB0b3IpIFwKKyAgICAgICAgdmFyID0gZW52LT5HZXRTdGF0aWNNZXRob2RJRChjbGF6eiwgbWV0aG9kTmFtZSwgbWV0aG9kRGVzY3JpcHRvcik7IFwKKyAgICAgICAgTE9HX0ZBVEFMX0lGKCEgdmFyLCAiVW5hYmxlIHRvIGZpbmQgc3RhdGljIG1ldGhvZCAiIG1ldGhvZE5hbWUpOworCitpbnQgcmVnaXN0ZXJfYW5kcm9pZF92aWV3X0lucHV0UXVldWUoSk5JRW52KiBlbnYpIHsKKyAgICBpbnQgcmVzID0gam5pUmVnaXN0ZXJOYXRpdmVNZXRob2RzKGVudiwgImFuZHJvaWQvdmlldy9JbnB1dFF1ZXVlIiwKKyAgICAgICAgICAgIGdJbnB1dFF1ZXVlTWV0aG9kcywgTkVMRU0oZ0lucHV0UXVldWVNZXRob2RzKSk7CisgICAgTE9HX0ZBVEFMX0lGKHJlcyA8IDAsICJVbmFibGUgdG8gcmVnaXN0ZXIgbmF0aXZlIG1ldGhvZHMuIik7CisKKyAgICBGSU5EX0NMQVNTKGdJbnB1dFF1ZXVlQ2xhc3NJbmZvLmNsYXp6LCAiYW5kcm9pZC92aWV3L0lucHV0UXVldWUiKTsKKworICAgIEdFVF9TVEFUSUNfTUVUSE9EX0lEKGdJbnB1dFF1ZXVlQ2xhc3NJbmZvLmRpc3BhdGNoS2V5RXZlbnQsIGdJbnB1dFF1ZXVlQ2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgImRpc3BhdGNoS2V5RXZlbnQiLAorICAgICAgICAgICAgIihMYW5kcm9pZC92aWV3L0lucHV0SGFuZGxlcjtMYW5kcm9pZC92aWV3L0tleUV2ZW50O0lKKVYiKTsKKworICAgIEdFVF9TVEFUSUNfTUVUSE9EX0lEKGdJbnB1dFF1ZXVlQ2xhc3NJbmZvLmRpc3BhdGNoTW90aW9uRXZlbnQsIGdJbnB1dFF1ZXVlQ2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgImRpc3BhdGNoTW90aW9uRXZlbnQiLAorICAgICAgICAgICAgIihMYW5kcm9pZC92aWV3L0lucHV0SGFuZGxlcjtMYW5kcm9pZC92aWV3L01vdGlvbkV2ZW50O0lKKVYiKTsKKyAgICByZXR1cm4gMDsKK30KKworfSAvLyBuYW1lc3BhY2UgYW5kcm9pZApkaWZmIC0tZ2l0IGEvY29yZS9qbmkvYW5kcm9pZF92aWV3X0tleUV2ZW50LmNwcCBiL2NvcmUvam5pL2FuZHJvaWRfdmlld19LZXlFdmVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGY2NDhmNAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvam5pL2FuZHJvaWRfdmlld19LZXlFdmVudC5jcHAKQEAgLTAsMCArMSwxNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjZGVmaW5lIExPR19UQUcgIktleUV2ZW50LUpOSSIKKworI2luY2x1ZGUgIkpOSUhlbHAuaCIKKworI2luY2x1ZGUgPGFuZHJvaWRfcnVudGltZS9BbmRyb2lkUnVudGltZS5oPgorI2luY2x1ZGUgPHV0aWxzL0xvZy5oPgorI2luY2x1ZGUgPHVpL0lucHV0Lmg+CisjaW5jbHVkZSAiYW5kcm9pZF92aWV3X0tleUV2ZW50LmgiCisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdGF0aWMgc3RydWN0IHsKKyAgICBqY2xhc3MgY2xheno7CisKKyAgICBqbWV0aG9kSUQgY3RvcjsKKworICAgIGpmaWVsZElEIG1NZXRhU3RhdGU7CisgICAgamZpZWxkSUQgbUFjdGlvbjsKKyAgICBqZmllbGRJRCBtS2V5Q29kZTsKKyAgICBqZmllbGRJRCBtU2NhbkNvZGU7CisgICAgamZpZWxkSUQgbVJlcGVhdENvdW50OworICAgIGpmaWVsZElEIG1EZXZpY2VJZDsKKyAgICBqZmllbGRJRCBtRmxhZ3M7CisgICAgamZpZWxkSUQgbURvd25UaW1lOworICAgIGpmaWVsZElEIG1FdmVudFRpbWU7CisgICAgamZpZWxkSUQgbUNoYXJhY3RlcnM7Cit9IGdLZXlFdmVudENsYXNzSW5mbzsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitqb2JqZWN0IGFuZHJvaWRfdmlld19LZXlFdmVudF9mcm9tTmF0aXZlKEpOSUVudiogZW52LCBjb25zdCBLZXlFdmVudCogZXZlbnQpIHsKKyAgICByZXR1cm4gZW52LT5OZXdPYmplY3QoZ0tleUV2ZW50Q2xhc3NJbmZvLmNsYXp6LCBnS2V5RXZlbnRDbGFzc0luZm8uY3RvciwKKyAgICAgICAgICAgIG5hbm9zZWNvbmRzX3RvX21pbGxpc2Vjb25kcyhldmVudC0+Z2V0RG93blRpbWUoKSksCisgICAgICAgICAgICBuYW5vc2Vjb25kc190b19taWxsaXNlY29uZHMoZXZlbnQtPmdldEV2ZW50VGltZSgpKSwKKyAgICAgICAgICAgIGV2ZW50LT5nZXRBY3Rpb24oKSwKKyAgICAgICAgICAgIGV2ZW50LT5nZXRLZXlDb2RlKCksCisgICAgICAgICAgICBldmVudC0+Z2V0UmVwZWF0Q291bnQoKSwKKyAgICAgICAgICAgIGV2ZW50LT5nZXRNZXRhU3RhdGUoKSwKKyAgICAgICAgICAgIGV2ZW50LT5nZXREZXZpY2VJZCgpLAorICAgICAgICAgICAgZXZlbnQtPmdldFNjYW5Db2RlKCksCisgICAgICAgICAgICBldmVudC0+Z2V0RmxhZ3MoKSk7Cit9CisKK3ZvaWQgYW5kcm9pZF92aWV3X0tleUV2ZW50X3RvTmF0aXZlKEpOSUVudiogZW52LCBqb2JqZWN0IGV2ZW50T2JqLCBpbnQzMl90IG5hdHVyZSwKKyAgICAgICAgS2V5RXZlbnQqIGV2ZW50KSB7CisgICAgamludCBtZXRhU3RhdGUgPSBlbnYtPkdldEludEZpZWxkKGV2ZW50T2JqLCBnS2V5RXZlbnRDbGFzc0luZm8ubU1ldGFTdGF0ZSk7CisgICAgamludCBhY3Rpb24gPSBlbnYtPkdldEludEZpZWxkKGV2ZW50T2JqLCBnS2V5RXZlbnRDbGFzc0luZm8ubUFjdGlvbik7CisgICAgamludCBrZXlDb2RlID0gZW52LT5HZXRJbnRGaWVsZChldmVudE9iaiwgZ0tleUV2ZW50Q2xhc3NJbmZvLm1LZXlDb2RlKTsKKyAgICBqaW50IHNjYW5Db2RlID0gZW52LT5HZXRJbnRGaWVsZChldmVudE9iaiwgZ0tleUV2ZW50Q2xhc3NJbmZvLm1TY2FuQ29kZSk7CisgICAgamludCByZXBlYXRDb3VudCA9IGVudi0+R2V0SW50RmllbGQoZXZlbnRPYmosIGdLZXlFdmVudENsYXNzSW5mby5tUmVwZWF0Q291bnQpOworICAgIGppbnQgZGV2aWNlSWQgPSBlbnYtPkdldEludEZpZWxkKGV2ZW50T2JqLCBnS2V5RXZlbnRDbGFzc0luZm8ubURldmljZUlkKTsKKyAgICBqaW50IGZsYWdzID0gZW52LT5HZXRJbnRGaWVsZChldmVudE9iaiwgZ0tleUV2ZW50Q2xhc3NJbmZvLm1GbGFncyk7CisgICAgamxvbmcgZG93blRpbWUgPSBlbnYtPkdldExvbmdGaWVsZChldmVudE9iaiwgZ0tleUV2ZW50Q2xhc3NJbmZvLm1Eb3duVGltZSk7CisgICAgamxvbmcgZXZlbnRUaW1lID0gZW52LT5HZXRMb25nRmllbGQoZXZlbnRPYmosIGdLZXlFdmVudENsYXNzSW5mby5tRXZlbnRUaW1lKTsKKworICAgIGV2ZW50LT5pbml0aWFsaXplKGRldmljZUlkLCBuYXR1cmUsIGFjdGlvbiwgZmxhZ3MsIGtleUNvZGUsIHNjYW5Db2RlLCBtZXRhU3RhdGUsIHJlcGVhdENvdW50LAorICAgICAgICAgICAgbWlsbGlzZWNvbmRzX3RvX25hbm9zZWNvbmRzKGRvd25UaW1lKSwKKyAgICAgICAgICAgIG1pbGxpc2Vjb25kc190b19uYW5vc2Vjb25kcyhldmVudFRpbWUpKTsKK30KKworc3RhdGljIGpib29sZWFuIG5hdGl2ZV9pc1N5c3RlbUtleShKTklFbnYqIGVudiwgam9iamVjdCBjbGF6eiwgamludCBrZXlDb2RlKSB7CisgICAgcmV0dXJuIEtleUV2ZW50Ojppc1N5c3RlbUtleShrZXlDb2RlKTsKK30KKworc3RhdGljIGpib29sZWFuIG5hdGl2ZV9oYXNEZWZhdWx0QWN0aW9uKEpOSUVudiogZW52LCBqb2JqZWN0IGNsYXp6LCBqaW50IGtleUNvZGUpIHsKKyAgICByZXR1cm4gS2V5RXZlbnQ6Omhhc0RlZmF1bHRBY3Rpb24oa2V5Q29kZSk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworc3RhdGljIGNvbnN0IEpOSU5hdGl2ZU1ldGhvZCBnX21ldGhvZHNbXSA9IHsKKyAgICB7ICJuYXRpdmVfaXNTeXN0ZW1LZXkiLCAiKEkpWiIsICh2b2lkKiluYXRpdmVfaXNTeXN0ZW1LZXkgfSwKKyAgICB7ICJuYXRpdmVfaGFzRGVmYXVsdEFjdGlvbiIsICIoSSlaIiwgKHZvaWQqKW5hdGl2ZV9oYXNEZWZhdWx0QWN0aW9uIH0sCit9OworCitzdGF0aWMgY29uc3QgY2hhciogY29uc3Qga0tleUV2ZW50UGF0aE5hbWUgPSAiYW5kcm9pZC92aWV3L0tleUV2ZW50IjsKKworI2RlZmluZSBGSU5EX0NMQVNTKHZhciwgY2xhc3NOYW1lKSBcCisgICAgICAgIHZhciA9IGVudi0+RmluZENsYXNzKGNsYXNzTmFtZSk7IFwKKyAgICAgICAgTE9HX0ZBVEFMX0lGKCEgdmFyLCAiVW5hYmxlIHRvIGZpbmQgY2xhc3MgIiBjbGFzc05hbWUpOyBcCisgICAgICAgIHZhciA9IGpjbGFzcyhlbnYtPk5ld0dsb2JhbFJlZih2YXIpKTsKKworI2RlZmluZSBHRVRfTUVUSE9EX0lEKHZhciwgY2xhenosIG1ldGhvZE5hbWUsIGZpZWxkRGVzY3JpcHRvcikgXAorICAgICAgICB2YXIgPSBlbnYtPkdldE1ldGhvZElEKGNsYXp6LCBtZXRob2ROYW1lLCBmaWVsZERlc2NyaXB0b3IpOyBcCisgICAgICAgIExPR19GQVRBTF9JRighIHZhciwgIlVuYWJsZSB0byBmaW5kIG1ldGhvZCIgbWV0aG9kTmFtZSk7CisKKyNkZWZpbmUgR0VUX0ZJRUxEX0lEKHZhciwgY2xhenosIGZpZWxkTmFtZSwgZmllbGREZXNjcmlwdG9yKSBcCisgICAgICAgIHZhciA9IGVudi0+R2V0RmllbGRJRChjbGF6eiwgZmllbGROYW1lLCBmaWVsZERlc2NyaXB0b3IpOyBcCisgICAgICAgIExPR19GQVRBTF9JRighIHZhciwgIlVuYWJsZSB0byBmaW5kIGZpZWxkICIgZmllbGROYW1lKTsKKworaW50IHJlZ2lzdGVyX2FuZHJvaWRfdmlld19LZXlFdmVudChKTklFbnYqIGVudikgeworICAgIEZJTkRfQ0xBU1MoZ0tleUV2ZW50Q2xhc3NJbmZvLmNsYXp6LCBrS2V5RXZlbnRQYXRoTmFtZSk7CisgICAgICAgIAorICAgIEdFVF9NRVRIT0RfSUQoZ0tleUV2ZW50Q2xhc3NJbmZvLmN0b3IsIGdLZXlFdmVudENsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgICI8aW5pdD4iLCAiKEpKSUlJSUlJSSlWIik7CisKKyAgICBHRVRfRklFTERfSUQoZ0tleUV2ZW50Q2xhc3NJbmZvLm1NZXRhU3RhdGUsIGdLZXlFdmVudENsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgICJtTWV0YVN0YXRlIiwgIkkiKTsKKyAgICBHRVRfRklFTERfSUQoZ0tleUV2ZW50Q2xhc3NJbmZvLm1BY3Rpb24sIGdLZXlFdmVudENsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgICJtQWN0aW9uIiwgIkkiKTsKKyAgICBHRVRfRklFTERfSUQoZ0tleUV2ZW50Q2xhc3NJbmZvLm1LZXlDb2RlLCBnS2V5RXZlbnRDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAibUtleUNvZGUiLCAiSSIpOworICAgIEdFVF9GSUVMRF9JRChnS2V5RXZlbnRDbGFzc0luZm8ubVNjYW5Db2RlLCBnS2V5RXZlbnRDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAibVNjYW5Db2RlIiwgIkkiKTsKKyAgICBHRVRfRklFTERfSUQoZ0tleUV2ZW50Q2xhc3NJbmZvLm1SZXBlYXRDb3VudCwgZ0tleUV2ZW50Q2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgIm1SZXBlYXRDb3VudCIsICJJIik7CisgICAgR0VUX0ZJRUxEX0lEKGdLZXlFdmVudENsYXNzSW5mby5tRGV2aWNlSWQsIGdLZXlFdmVudENsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgICJtRGV2aWNlSWQiLCAiSSIpOworICAgIEdFVF9GSUVMRF9JRChnS2V5RXZlbnRDbGFzc0luZm8ubUZsYWdzLCBnS2V5RXZlbnRDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAibUZsYWdzIiwgIkkiKTsKKyAgICBHRVRfRklFTERfSUQoZ0tleUV2ZW50Q2xhc3NJbmZvLm1Eb3duVGltZSwgZ0tleUV2ZW50Q2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgIm1Eb3duVGltZSIsICJKIik7CisgICAgR0VUX0ZJRUxEX0lEKGdLZXlFdmVudENsYXNzSW5mby5tRXZlbnRUaW1lLCBnS2V5RXZlbnRDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAibUV2ZW50VGltZSIsICJKIik7CisgICAgR0VUX0ZJRUxEX0lEKGdLZXlFdmVudENsYXNzSW5mby5tQ2hhcmFjdGVycywgZ0tleUV2ZW50Q2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgIm1DaGFyYWN0ZXJzIiwgIkxqYXZhL2xhbmcvU3RyaW5nOyIpOworCisgICAgcmV0dXJuIEFuZHJvaWRSdW50aW1lOjpyZWdpc3Rlck5hdGl2ZU1ldGhvZHMoCisgICAgICAgIGVudiwga0tleUV2ZW50UGF0aE5hbWUsCisgICAgICAgIGdfbWV0aG9kcywgTkVMRU0oZ19tZXRob2RzKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL2NvcmUvam5pL2FuZHJvaWRfdmlld19LZXlFdmVudC5oIGIvY29yZS9qbmkvYW5kcm9pZF92aWV3X0tleUV2ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2M3MWIxYQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvam5pL2FuZHJvaWRfdmlld19LZXlFdmVudC5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIF9BTkRST0lEX1ZJRVdfS0VZRVZFTlRfSAorI2RlZmluZSBfQU5EUk9JRF9WSUVXX0tFWUVWRU5UX0gKKworI2luY2x1ZGUgImpuaS5oIgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK2NsYXNzIEtleUV2ZW50OworCisvKiBPYnRhaW5zIGFuIGluc3RhbmNlIG9mIGEgRFZNIEtleUV2ZW50IG9iamVjdCBhcyBhIGNvcHkgb2YgYSBuYXRpdmUgS2V5RXZlbnQgaW5zdGFuY2UuICovCitleHRlcm4gam9iamVjdCBhbmRyb2lkX3ZpZXdfS2V5RXZlbnRfZnJvbU5hdGl2ZShKTklFbnYqIGVudiwgY29uc3QgS2V5RXZlbnQqIGV2ZW50KTsKKworLyogQ29waWVzIHRoZSBjb250ZW50cyBvZiBhIERWTSBLZXlFdmVudCBvYmplY3QgdG8gYSBuYXRpdmUgS2V5RXZlbnQgaW5zdGFuY2UuICovCitleHRlcm4gdm9pZCBhbmRyb2lkX3ZpZXdfS2V5RXZlbnRfdG9OYXRpdmUoSk5JRW52KiBlbnYsIGpvYmplY3QgZXZlbnRPYmosIGludDMyX3QgbmF0dXJlLAorICAgICAgICBLZXlFdmVudCogZXZlbnQpOworCit9IC8vIG5hbWVzcGFjZSBhbmRyb2lkCisKKyNlbmRpZiAvLyBfQU5EUk9JRF9PU19LRVlFVkVOVF9ICmRpZmYgLS1naXQgYS9jb3JlL2puaS9hbmRyb2lkX3ZpZXdfTW90aW9uRXZlbnQuY3BwIGIvY29yZS9qbmkvYW5kcm9pZF92aWV3X01vdGlvbkV2ZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODEzN2UyCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9qbmkvYW5kcm9pZF92aWV3X01vdGlvbkV2ZW50LmNwcApAQCAtMCwwICsxLDI4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNkZWZpbmUgTE9HX1RBRyAiTW90aW9uRXZlbnQtSk5JIgorCisjaW5jbHVkZSAiSk5JSGVscC5oIgorCisjaW5jbHVkZSA8YW5kcm9pZF9ydW50aW1lL0FuZHJvaWRSdW50aW1lLmg+CisjaW5jbHVkZSA8dXRpbHMvTG9nLmg+CisjaW5jbHVkZSA8dWkvSW5wdXQuaD4KKyNpbmNsdWRlICJhbmRyb2lkX3ZpZXdfTW90aW9uRXZlbnQuaCIKKworLy8gTnVtYmVyIG9mIGZsb2F0IGl0ZW1zIHBlciBlbnRyeSBpbiBhIERWTSBzYW1wbGUgZGF0YSBhcnJheQorI2RlZmluZSBOVU1fU0FNUExFX0RBVEEgNAorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworc3RhdGljIHN0cnVjdCB7CisgICAgamNsYXNzIGNsYXp6OworCisgICAgam1ldGhvZElEIG9idGFpbjsKKyAgICBqbWV0aG9kSUQgcmVjeWNsZTsKKworICAgIGpmaWVsZElEIG1Eb3duVGltZU5hbm87CisgICAgamZpZWxkSUQgbUFjdGlvbjsKKyAgICBqZmllbGRJRCBtWE9mZnNldDsKKyAgICBqZmllbGRJRCBtWU9mZnNldDsKKyAgICBqZmllbGRJRCBtWFByZWNpc2lvbjsKKyAgICBqZmllbGRJRCBtWVByZWNpc2lvbjsKKyAgICBqZmllbGRJRCBtRGV2aWNlSWQ7CisgICAgamZpZWxkSUQgbUVkZ2VGbGFnczsKKyAgICBqZmllbGRJRCBtTWV0YVN0YXRlOworICAgIGpmaWVsZElEIG1OdW1Qb2ludGVyczsKKyAgICBqZmllbGRJRCBtTnVtU2FtcGxlczsKKyAgICBqZmllbGRJRCBtUG9pbnRlcklkZW50aWZpZXJzOworICAgIGpmaWVsZElEIG1EYXRhU2FtcGxlczsKKyAgICBqZmllbGRJRCBtRXZlbnRUaW1lTmFub1NhbXBsZXM7CisgICAgamZpZWxkSUQgbUxhc3REYXRhU2FtcGxlSW5kZXg7CisgICAgamZpZWxkSUQgbUxhc3RFdmVudFRpbWVOYW5vU2FtcGxlSW5kZXg7Cit9IGdNb3Rpb25FdmVudENsYXNzSW5mbzsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitqb2JqZWN0IGFuZHJvaWRfdmlld19Nb3Rpb25FdmVudF9mcm9tTmF0aXZlKEpOSUVudiogZW52LCBjb25zdCBNb3Rpb25FdmVudCogZXZlbnQpIHsKKyAgICBqaW50IG51bVBvaW50ZXJzID0gamludChldmVudC0+Z2V0UG9pbnRlckNvdW50KCkpOworICAgIGppbnQgbnVtSGlzdG9yaWNhbFNhbXBsZXMgPSBqaW50KGV2ZW50LT5nZXRIaXN0b3J5U2l6ZSgpKTsKKyAgICBqaW50IG51bVNhbXBsZXMgPSBudW1IaXN0b3JpY2FsU2FtcGxlcyArIDE7CisKKyAgICBqb2JqZWN0IGV2ZW50T2JqID0gZW52LT5DYWxsU3RhdGljT2JqZWN0TWV0aG9kKGdNb3Rpb25FdmVudENsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgIGdNb3Rpb25FdmVudENsYXNzSW5mby5vYnRhaW4sIG51bVBvaW50ZXJzLCBudW1TYW1wbGVzKTsKKyAgICBpZiAoZW52LT5FeGNlcHRpb25DaGVjaygpKSB7CisgICAgICAgIExPR0UoIkFuIGV4Y2VwdGlvbiBvY2N1cnJlZCB3aGlsZSBvYnRhaW5pbmcgYSBtb3Rpb24gZXZlbnQuIik7CisgICAgICAgIExPR0VfRVgoZW52KTsKKyAgICAgICAgZW52LT5FeGNlcHRpb25DbGVhcigpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBlbnYtPlNldExvbmdGaWVsZChldmVudE9iaiwgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLm1Eb3duVGltZU5hbm8sCisgICAgICAgICAgICBldmVudC0+Z2V0RG93blRpbWUoKSk7CisgICAgZW52LT5TZXRJbnRGaWVsZChldmVudE9iaiwgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLm1BY3Rpb24sCisgICAgICAgICAgICBldmVudC0+Z2V0QWN0aW9uKCkpOworICAgIGVudi0+U2V0RmxvYXRGaWVsZChldmVudE9iaiwgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLm1YT2Zmc2V0LAorICAgICAgICAgICAgZXZlbnQtPmdldFhPZmZzZXQoKSk7CisgICAgZW52LT5TZXRGbG9hdEZpZWxkKGV2ZW50T2JqLCBnTW90aW9uRXZlbnRDbGFzc0luZm8ubVlPZmZzZXQsCisgICAgICAgICAgICBldmVudC0+Z2V0WU9mZnNldCgpKTsKKyAgICBlbnYtPlNldEZsb2F0RmllbGQoZXZlbnRPYmosIGdNb3Rpb25FdmVudENsYXNzSW5mby5tWFByZWNpc2lvbiwKKyAgICAgICAgICAgIGV2ZW50LT5nZXRYUHJlY2lzaW9uKCkpOworICAgIGVudi0+U2V0RmxvYXRGaWVsZChldmVudE9iaiwgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLm1ZUHJlY2lzaW9uLAorICAgICAgICAgICAgZXZlbnQtPmdldFlQcmVjaXNpb24oKSk7CisgICAgZW52LT5TZXRJbnRGaWVsZChldmVudE9iaiwgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLm1EZXZpY2VJZCwKKyAgICAgICAgICAgIGV2ZW50LT5nZXREZXZpY2VJZCgpKTsKKyAgICBlbnYtPlNldEludEZpZWxkKGV2ZW50T2JqLCBnTW90aW9uRXZlbnRDbGFzc0luZm8ubUVkZ2VGbGFncywKKyAgICAgICAgICAgIGV2ZW50LT5nZXRFZGdlRmxhZ3MoKSk7CisgICAgZW52LT5TZXRJbnRGaWVsZChldmVudE9iaiwgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLm1NZXRhU3RhdGUsCisgICAgICAgICAgICBldmVudC0+Z2V0TWV0YVN0YXRlKCkpOworICAgIGVudi0+U2V0SW50RmllbGQoZXZlbnRPYmosIGdNb3Rpb25FdmVudENsYXNzSW5mby5tTnVtUG9pbnRlcnMsCisgICAgICAgICAgICBudW1Qb2ludGVycyk7CisgICAgZW52LT5TZXRJbnRGaWVsZChldmVudE9iaiwgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLm1OdW1TYW1wbGVzLAorICAgICAgICAgICAgbnVtU2FtcGxlcyk7CisgICAgZW52LT5TZXRJbnRGaWVsZChldmVudE9iaiwgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLm1MYXN0RGF0YVNhbXBsZUluZGV4LAorICAgICAgICAgICAgKG51bVNhbXBsZXMgLSAxKSAqIG51bVBvaW50ZXJzICogTlVNX1NBTVBMRV9EQVRBKTsKKyAgICBlbnYtPlNldEludEZpZWxkKGV2ZW50T2JqLCBnTW90aW9uRXZlbnRDbGFzc0luZm8ubUxhc3RFdmVudFRpbWVOYW5vU2FtcGxlSW5kZXgsCisgICAgICAgICAgICBudW1TYW1wbGVzIC0gMSk7CisKKyAgICBqaW50QXJyYXkgcG9pbnRlcklkZW50aWZpZXJBcnJheSA9IGppbnRBcnJheShlbnYtPkdldE9iamVjdEZpZWxkKGV2ZW50T2JqLAorICAgICAgICAgICAgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLm1Qb2ludGVySWRlbnRpZmllcnMpKTsKKyAgICBqZmxvYXRBcnJheSBkYXRhU2FtcGxlQXJyYXkgPSBqZmxvYXRBcnJheShlbnYtPkdldE9iamVjdEZpZWxkKGV2ZW50T2JqLAorICAgICAgICAgICAgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLm1EYXRhU2FtcGxlcykpOworICAgIGpsb25nQXJyYXkgZXZlbnRUaW1lTmFub1NhbXBsZUFycmF5ID0gamxvbmdBcnJheShlbnYtPkdldE9iamVjdEZpZWxkKGV2ZW50T2JqLAorICAgICAgICAgICAgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLm1FdmVudFRpbWVOYW5vU2FtcGxlcykpOworCisgICAgamludCogcG9pbnRlcklkZW50aWZpZXJzID0gKGppbnQqKWVudi0+R2V0UHJpbWl0aXZlQXJyYXlDcml0aWNhbChwb2ludGVySWRlbnRpZmllckFycmF5LCBOVUxMKTsKKyAgICBqZmxvYXQqIGRhdGFTYW1wbGVzID0gKGpmbG9hdCopZW52LT5HZXRQcmltaXRpdmVBcnJheUNyaXRpY2FsKGRhdGFTYW1wbGVBcnJheSwgTlVMTCk7CisgICAgamxvbmcqIGV2ZW50VGltZU5hbm9TYW1wbGVzID0gKGpsb25nKillbnYtPkdldFByaW1pdGl2ZUFycmF5Q3JpdGljYWwoCisgICAgICAgICAgICBldmVudFRpbWVOYW5vU2FtcGxlQXJyYXksIE5VTEwpOworCisgICAgY29uc3QgaW50MzJfdCogc3JjUG9pbnRlcklkZW50aWZpZXJzID0gZXZlbnQtPmdldFBvaW50ZXJJZHMoKTsKKyAgICBqaW50KiBkZXN0UG9pbnRlcklkZW50aWZpZXJzID0gcG9pbnRlcklkZW50aWZpZXJzOworICAgIGZvciAoamludCBpID0gMDsgaSA8IG51bVBvaW50ZXJzOyBpKyspIHsKKyAgICAgICAgKihkZXN0UG9pbnRlcklkZW50aWZpZXJzKyspID0gKihzcmNQb2ludGVySWRlbnRpZmllcnMrKyk7CisgICAgfQorCisgICAgY29uc3QgbnNlY3NfdCogc3JjU2FtcGxlRXZlbnRUaW1lcyA9IGV2ZW50LT5nZXRTYW1wbGVFdmVudFRpbWVzKCk7CisgICAgamxvbmcqIGRlc3RFdmVudFRpbWVOYW5vU2FtcGxlcyA9IGV2ZW50VGltZU5hbm9TYW1wbGVzOworICAgIGZvciAoamludCBpID0gMDsgaSA8IG51bVNhbXBsZXM7IGkrKykgeworICAgICAgICAqKGRlc3RFdmVudFRpbWVOYW5vU2FtcGxlcysrKSA9ICooc3JjU2FtcGxlRXZlbnRUaW1lcysrKTsKKyAgICB9CisKKyAgICBjb25zdCBQb2ludGVyQ29vcmRzKiBzcmNTYW1wbGVQb2ludGVyQ29vcmRzID0gZXZlbnQtPmdldFNhbXBsZVBvaW50ZXJDb29yZHMoKTsKKyAgICBqZmxvYXQqIGRlc3REYXRhU2FtcGxlcyA9IGRhdGFTYW1wbGVzOworICAgIGppbnQgbnVtSXRlbXMgPSBudW1TYW1wbGVzICogbnVtUG9pbnRlcnM7CisgICAgZm9yIChqaW50IGkgPSAwOyBpIDwgbnVtSXRlbXM7IGkrKykgeworICAgICAgICAqKGRlc3REYXRhU2FtcGxlcysrKSA9IHNyY1NhbXBsZVBvaW50ZXJDb29yZHMtPng7CisgICAgICAgICooZGVzdERhdGFTYW1wbGVzKyspID0gc3JjU2FtcGxlUG9pbnRlckNvb3Jkcy0+eTsKKyAgICAgICAgKihkZXN0RGF0YVNhbXBsZXMrKykgPSBzcmNTYW1wbGVQb2ludGVyQ29vcmRzLT5wcmVzc3VyZTsKKyAgICAgICAgKihkZXN0RGF0YVNhbXBsZXMrKykgPSBzcmNTYW1wbGVQb2ludGVyQ29vcmRzLT5zaXplOworICAgICAgICBzcmNTYW1wbGVQb2ludGVyQ29vcmRzICs9IDE7CisgICAgfQorCisgICAgZW52LT5SZWxlYXNlUHJpbWl0aXZlQXJyYXlDcml0aWNhbChwb2ludGVySWRlbnRpZmllckFycmF5LCBwb2ludGVySWRlbnRpZmllcnMsIDApOworICAgIGVudi0+UmVsZWFzZVByaW1pdGl2ZUFycmF5Q3JpdGljYWwoZGF0YVNhbXBsZUFycmF5LCBkYXRhU2FtcGxlcywgMCk7CisgICAgZW52LT5SZWxlYXNlUHJpbWl0aXZlQXJyYXlDcml0aWNhbChldmVudFRpbWVOYW5vU2FtcGxlQXJyYXksIGV2ZW50VGltZU5hbm9TYW1wbGVzLCAwKTsKKworICAgIGVudi0+RGVsZXRlTG9jYWxSZWYocG9pbnRlcklkZW50aWZpZXJBcnJheSk7CisgICAgZW52LT5EZWxldGVMb2NhbFJlZihkYXRhU2FtcGxlQXJyYXkpOworICAgIGVudi0+RGVsZXRlTG9jYWxSZWYoZXZlbnRUaW1lTmFub1NhbXBsZUFycmF5KTsKKyAgICByZXR1cm4gZXZlbnRPYmo7Cit9CisKK3ZvaWQgYW5kcm9pZF92aWV3X01vdGlvbkV2ZW50X3RvTmF0aXZlKEpOSUVudiogZW52LCBqb2JqZWN0IGV2ZW50T2JqLCBpbnQzMl90IG5hdHVyZSwKKyAgICAgICAgTW90aW9uRXZlbnQqIGV2ZW50KSB7CisgICAgamxvbmcgZG93blRpbWVOYW5vID0gZW52LT5HZXRMb25nRmllbGQoZXZlbnRPYmosIGdNb3Rpb25FdmVudENsYXNzSW5mby5tRG93blRpbWVOYW5vKTsKKyAgICBqaW50IGFjdGlvbiA9IGVudi0+R2V0SW50RmllbGQoZXZlbnRPYmosIGdNb3Rpb25FdmVudENsYXNzSW5mby5tQWN0aW9uKTsKKyAgICBqZmxvYXQgeE9mZnNldCA9IGVudi0+R2V0RmxvYXRGaWVsZChldmVudE9iaiwgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLm1YT2Zmc2V0KTsKKyAgICBqZmxvYXQgeU9mZnNldCA9IGVudi0+R2V0RmxvYXRGaWVsZChldmVudE9iaiwgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLm1ZT2Zmc2V0KTsKKyAgICBqZmxvYXQgeFByZWNpc2lvbiA9IGVudi0+R2V0RmxvYXRGaWVsZChldmVudE9iaiwgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLm1YUHJlY2lzaW9uKTsKKyAgICBqZmxvYXQgeVByZWNpc2lvbiA9IGVudi0+R2V0RmxvYXRGaWVsZChldmVudE9iaiwgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLm1ZUHJlY2lzaW9uKTsKKyAgICBqaW50IGRldmljZUlkID0gZW52LT5HZXRJbnRGaWVsZChldmVudE9iaiwgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLm1EZXZpY2VJZCk7CisgICAgamludCBlZGdlRmxhZ3MgPSBlbnYtPkdldEludEZpZWxkKGV2ZW50T2JqLCBnTW90aW9uRXZlbnRDbGFzc0luZm8ubUVkZ2VGbGFncyk7CisgICAgamludCBtZXRhU3RhdGUgPSBlbnYtPkdldEludEZpZWxkKGV2ZW50T2JqLCBnTW90aW9uRXZlbnRDbGFzc0luZm8ubU1ldGFTdGF0ZSk7CisgICAgamludCBudW1Qb2ludGVycyA9IGVudi0+R2V0SW50RmllbGQoZXZlbnRPYmosIGdNb3Rpb25FdmVudENsYXNzSW5mby5tTnVtUG9pbnRlcnMpOworICAgIGppbnQgbnVtU2FtcGxlcyA9IGVudi0+R2V0SW50RmllbGQoZXZlbnRPYmosIGdNb3Rpb25FdmVudENsYXNzSW5mby5tTnVtU2FtcGxlcyk7CisgICAgamludEFycmF5IHBvaW50ZXJJZGVudGlmaWVyQXJyYXkgPSBqaW50QXJyYXkoZW52LT5HZXRPYmplY3RGaWVsZChldmVudE9iaiwKKyAgICAgICAgICAgIGdNb3Rpb25FdmVudENsYXNzSW5mby5tUG9pbnRlcklkZW50aWZpZXJzKSk7CisgICAgamZsb2F0QXJyYXkgZGF0YVNhbXBsZUFycmF5ID0gamZsb2F0QXJyYXkoZW52LT5HZXRPYmplY3RGaWVsZChldmVudE9iaiwKKyAgICAgICAgICAgIGdNb3Rpb25FdmVudENsYXNzSW5mby5tRGF0YVNhbXBsZXMpKTsKKyAgICBqbG9uZ0FycmF5IGV2ZW50VGltZU5hbm9TYW1wbGVBcnJheSA9IGpsb25nQXJyYXkoZW52LT5HZXRPYmplY3RGaWVsZChldmVudE9iaiwKKyAgICAgICAgICAgIGdNb3Rpb25FdmVudENsYXNzSW5mby5tRXZlbnRUaW1lTmFub1NhbXBsZXMpKTsKKworICAgIExPR19GQVRBTF9JRihudW1Qb2ludGVycyA9PSAwLCAibnVtUG9pbnRlcnMgd2FzIHplcm8iKTsKKyAgICBMT0dfRkFUQUxfSUYobnVtU2FtcGxlcyA9PSAwLCAibnVtU2FtcGxlcyB3YXMgemVybyIpOworCisgICAgamludCogcG9pbnRlcklkZW50aWZpZXJzID0gKGppbnQqKWVudi0+R2V0UHJpbWl0aXZlQXJyYXlDcml0aWNhbChwb2ludGVySWRlbnRpZmllckFycmF5LCBOVUxMKTsKKyAgICBqZmxvYXQqIGRhdGFTYW1wbGVzID0gKGpmbG9hdCopZW52LT5HZXRQcmltaXRpdmVBcnJheUNyaXRpY2FsKGRhdGFTYW1wbGVBcnJheSwgTlVMTCk7CisgICAgamxvbmcqIGV2ZW50VGltZU5hbm9TYW1wbGVzID0gKGpsb25nKillbnYtPkdldFByaW1pdGl2ZUFycmF5Q3JpdGljYWwoCisgICAgICAgICAgICBldmVudFRpbWVOYW5vU2FtcGxlQXJyYXksIE5VTEwpOworCisgICAgamZsb2F0KiBzcmNEYXRhU2FtcGxlcyA9IGRhdGFTYW1wbGVzOworICAgIGpsb25nKiBzcmNFdmVudFRpbWVOYW5vU2FtcGxlcyA9IGV2ZW50VGltZU5hbm9TYW1wbGVzOworCisgICAgamxvbmcgc2FtcGxlRXZlbnRUaW1lID0gKihzcmNFdmVudFRpbWVOYW5vU2FtcGxlcysrKTsKKyAgICBQb2ludGVyQ29vcmRzIHNhbXBsZVBvaW50ZXJDb29yZHNbTUFYX1BPSU5URVJTXTsKKyAgICBmb3IgKGppbnQgaiA9IDA7IGogPCBudW1Qb2ludGVyczsgaisrKSB7CisgICAgICAgIHNhbXBsZVBvaW50ZXJDb29yZHNbal0ueCA9ICooc3JjRGF0YVNhbXBsZXMrKyk7CisgICAgICAgIHNhbXBsZVBvaW50ZXJDb29yZHNbal0ueSA9ICooc3JjRGF0YVNhbXBsZXMrKyk7CisgICAgICAgIHNhbXBsZVBvaW50ZXJDb29yZHNbal0ucHJlc3N1cmUgPSAqKHNyY0RhdGFTYW1wbGVzKyspOworICAgICAgICBzYW1wbGVQb2ludGVyQ29vcmRzW2pdLnNpemUgPSAqKHNyY0RhdGFTYW1wbGVzKyspOworICAgIH0KKworICAgIGV2ZW50LT5pbml0aWFsaXplKGRldmljZUlkLCBuYXR1cmUsIGFjdGlvbiwgZWRnZUZsYWdzLCBtZXRhU3RhdGUsCisgICAgICAgICAgICB4T2Zmc2V0LCB5T2Zmc2V0LCB4UHJlY2lzaW9uLCB5UHJlY2lzaW9uLCBkb3duVGltZU5hbm8sIHNhbXBsZUV2ZW50VGltZSwKKyAgICAgICAgICAgIG51bVBvaW50ZXJzLCBwb2ludGVySWRlbnRpZmllcnMsIHNhbXBsZVBvaW50ZXJDb29yZHMpOworCisgICAgZm9yIChqaW50IGkgPSAxOyBpIDwgbnVtU2FtcGxlczsgaSsrKSB7CisgICAgICAgIHNhbXBsZUV2ZW50VGltZSA9ICooc3JjRXZlbnRUaW1lTmFub1NhbXBsZXMrKyk7CisgICAgICAgIGZvciAoamludCBqID0gMDsgaiA8IG51bVBvaW50ZXJzOyBqKyspIHsKKyAgICAgICAgICAgIHNhbXBsZVBvaW50ZXJDb29yZHNbal0ueCA9ICooc3JjRGF0YVNhbXBsZXMrKyk7CisgICAgICAgICAgICBzYW1wbGVQb2ludGVyQ29vcmRzW2pdLnkgPSAqKHNyY0RhdGFTYW1wbGVzKyspOworICAgICAgICAgICAgc2FtcGxlUG9pbnRlckNvb3Jkc1tqXS5wcmVzc3VyZSA9ICooc3JjRGF0YVNhbXBsZXMrKyk7CisgICAgICAgICAgICBzYW1wbGVQb2ludGVyQ29vcmRzW2pdLnNpemUgPSAqKHNyY0RhdGFTYW1wbGVzKyspOworICAgICAgICB9CisgICAgICAgIGV2ZW50LT5hZGRTYW1wbGUoc2FtcGxlRXZlbnRUaW1lLCBzYW1wbGVQb2ludGVyQ29vcmRzKTsKKyAgICB9CisKKyAgICBlbnYtPlJlbGVhc2VQcmltaXRpdmVBcnJheUNyaXRpY2FsKHBvaW50ZXJJZGVudGlmaWVyQXJyYXksIHBvaW50ZXJJZGVudGlmaWVycywgSk5JX0FCT1JUKTsKKyAgICBlbnYtPlJlbGVhc2VQcmltaXRpdmVBcnJheUNyaXRpY2FsKGRhdGFTYW1wbGVBcnJheSwgZGF0YVNhbXBsZXMsIEpOSV9BQk9SVCk7CisgICAgZW52LT5SZWxlYXNlUHJpbWl0aXZlQXJyYXlDcml0aWNhbChldmVudFRpbWVOYW5vU2FtcGxlQXJyYXksIGV2ZW50VGltZU5hbm9TYW1wbGVzLCBKTklfQUJPUlQpOworCisgICAgZW52LT5EZWxldGVMb2NhbFJlZihwb2ludGVySWRlbnRpZmllckFycmF5KTsKKyAgICBlbnYtPkRlbGV0ZUxvY2FsUmVmKGRhdGFTYW1wbGVBcnJheSk7CisgICAgZW52LT5EZWxldGVMb2NhbFJlZihldmVudFRpbWVOYW5vU2FtcGxlQXJyYXkpOworfQorCit2b2lkIGFuZHJvaWRfdmlld19Nb3Rpb25FdmVudF9yZWN5Y2xlKEpOSUVudiogZW52LCBqb2JqZWN0IGV2ZW50T2JqKSB7CisgICAgZW52LT5DYWxsVm9pZE1ldGhvZChldmVudE9iaiwgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLnJlY3ljbGUpOworICAgIGlmIChlbnYtPkV4Y2VwdGlvbkNoZWNrKCkpIHsKKyAgICAgICAgTE9HVygiQW4gZXhjZXB0aW9uIG9jY3VycmVkIHdoaWxlIHJlY3ljbGluZyBhIG1vdGlvbiBldmVudC4iKTsKKyAgICAgICAgTE9HV19FWChlbnYpOworICAgICAgICBlbnYtPkV4Y2VwdGlvbkNsZWFyKCk7CisgICAgfQorfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNkZWZpbmUgRklORF9DTEFTUyh2YXIsIGNsYXNzTmFtZSkgXAorICAgICAgICB2YXIgPSBlbnYtPkZpbmRDbGFzcyhjbGFzc05hbWUpOyBcCisgICAgICAgIExPR19GQVRBTF9JRighIHZhciwgIlVuYWJsZSB0byBmaW5kIGNsYXNzICIgY2xhc3NOYW1lKTsgXAorICAgICAgICB2YXIgPSBqY2xhc3MoZW52LT5OZXdHbG9iYWxSZWYodmFyKSk7CisKKyNkZWZpbmUgR0VUX1NUQVRJQ19NRVRIT0RfSUQodmFyLCBjbGF6eiwgbWV0aG9kTmFtZSwgZmllbGREZXNjcmlwdG9yKSBcCisgICAgICAgIHZhciA9IGVudi0+R2V0U3RhdGljTWV0aG9kSUQoY2xhenosIG1ldGhvZE5hbWUsIGZpZWxkRGVzY3JpcHRvcik7IFwKKyAgICAgICAgTE9HX0ZBVEFMX0lGKCEgdmFyLCAiVW5hYmxlIHRvIGZpbmQgc3RhdGljIG1ldGhvZCIgbWV0aG9kTmFtZSk7CisKKyNkZWZpbmUgR0VUX01FVEhPRF9JRCh2YXIsIGNsYXp6LCBtZXRob2ROYW1lLCBmaWVsZERlc2NyaXB0b3IpIFwKKyAgICAgICAgdmFyID0gZW52LT5HZXRNZXRob2RJRChjbGF6eiwgbWV0aG9kTmFtZSwgZmllbGREZXNjcmlwdG9yKTsgXAorICAgICAgICBMT0dfRkFUQUxfSUYoISB2YXIsICJVbmFibGUgdG8gZmluZCBtZXRob2QiIG1ldGhvZE5hbWUpOworCisjZGVmaW5lIEdFVF9GSUVMRF9JRCh2YXIsIGNsYXp6LCBmaWVsZE5hbWUsIGZpZWxkRGVzY3JpcHRvcikgXAorICAgICAgICB2YXIgPSBlbnYtPkdldEZpZWxkSUQoY2xhenosIGZpZWxkTmFtZSwgZmllbGREZXNjcmlwdG9yKTsgXAorICAgICAgICBMT0dfRkFUQUxfSUYoISB2YXIsICJVbmFibGUgdG8gZmluZCBmaWVsZCAiIGZpZWxkTmFtZSk7CisKK2ludCByZWdpc3Rlcl9hbmRyb2lkX3ZpZXdfTW90aW9uRXZlbnQoSk5JRW52KiBlbnYpIHsKKyAgICBGSU5EX0NMQVNTKGdNb3Rpb25FdmVudENsYXNzSW5mby5jbGF6eiwgImFuZHJvaWQvdmlldy9Nb3Rpb25FdmVudCIpOworCisgICAgR0VUX1NUQVRJQ19NRVRIT0RfSUQoZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLm9idGFpbiwgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgIm9idGFpbiIsICIoSUkpTGFuZHJvaWQvdmlldy9Nb3Rpb25FdmVudDsiKTsKKyAgICBHRVRfTUVUSE9EX0lEKGdNb3Rpb25FdmVudENsYXNzSW5mby5yZWN5Y2xlLCBnTW90aW9uRXZlbnRDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAicmVjeWNsZSIsICIoKVYiKTsKKworICAgIEdFVF9GSUVMRF9JRChnTW90aW9uRXZlbnRDbGFzc0luZm8ubURvd25UaW1lTmFubywgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgIm1Eb3duVGltZU5hbm8iLCAiSiIpOworICAgIEdFVF9GSUVMRF9JRChnTW90aW9uRXZlbnRDbGFzc0luZm8ubUFjdGlvbiwgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgIm1BY3Rpb24iLCAiSSIpOworICAgIEdFVF9GSUVMRF9JRChnTW90aW9uRXZlbnRDbGFzc0luZm8ubVhPZmZzZXQsIGdNb3Rpb25FdmVudENsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgICJtWE9mZnNldCIsICJGIik7CisgICAgR0VUX0ZJRUxEX0lEKGdNb3Rpb25FdmVudENsYXNzSW5mby5tWU9mZnNldCwgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgIm1ZT2Zmc2V0IiwgIkYiKTsKKyAgICBHRVRfRklFTERfSUQoZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLm1YUHJlY2lzaW9uLCBnTW90aW9uRXZlbnRDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAibVhQcmVjaXNpb24iLCAiRiIpOworICAgIEdFVF9GSUVMRF9JRChnTW90aW9uRXZlbnRDbGFzc0luZm8ubVlQcmVjaXNpb24sIGdNb3Rpb25FdmVudENsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgICJtWVByZWNpc2lvbiIsICJGIik7CisgICAgR0VUX0ZJRUxEX0lEKGdNb3Rpb25FdmVudENsYXNzSW5mby5tRGV2aWNlSWQsIGdNb3Rpb25FdmVudENsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgICJtRGV2aWNlSWQiLCAiSSIpOworICAgIEdFVF9GSUVMRF9JRChnTW90aW9uRXZlbnRDbGFzc0luZm8ubUVkZ2VGbGFncywgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgIm1FZGdlRmxhZ3MiLCAiSSIpOworICAgIEdFVF9GSUVMRF9JRChnTW90aW9uRXZlbnRDbGFzc0luZm8ubU1ldGFTdGF0ZSwgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgIm1NZXRhU3RhdGUiLCAiSSIpOworICAgIEdFVF9GSUVMRF9JRChnTW90aW9uRXZlbnRDbGFzc0luZm8ubU51bVBvaW50ZXJzLCBnTW90aW9uRXZlbnRDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAibU51bVBvaW50ZXJzIiwgIkkiKTsKKyAgICBHRVRfRklFTERfSUQoZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLm1OdW1TYW1wbGVzLCBnTW90aW9uRXZlbnRDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAibU51bVNhbXBsZXMiLCAiSSIpOworICAgIEdFVF9GSUVMRF9JRChnTW90aW9uRXZlbnRDbGFzc0luZm8ubVBvaW50ZXJJZGVudGlmaWVycywgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgIm1Qb2ludGVySWRlbnRpZmllcnMiLCAiW0kiKTsKKyAgICBHRVRfRklFTERfSUQoZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLm1EYXRhU2FtcGxlcywgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgIm1EYXRhU2FtcGxlcyIsICJbRiIpOworICAgIEdFVF9GSUVMRF9JRChnTW90aW9uRXZlbnRDbGFzc0luZm8ubUV2ZW50VGltZU5hbm9TYW1wbGVzLCBnTW90aW9uRXZlbnRDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAibUV2ZW50VGltZU5hbm9TYW1wbGVzIiwgIltKIik7CisgICAgR0VUX0ZJRUxEX0lEKGdNb3Rpb25FdmVudENsYXNzSW5mby5tTGFzdERhdGFTYW1wbGVJbmRleCwgZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgIm1MYXN0RGF0YVNhbXBsZUluZGV4IiwgIkkiKTsKKyAgICBHRVRfRklFTERfSUQoZ01vdGlvbkV2ZW50Q2xhc3NJbmZvLm1MYXN0RXZlbnRUaW1lTmFub1NhbXBsZUluZGV4LCBnTW90aW9uRXZlbnRDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAibUxhc3RFdmVudFRpbWVOYW5vU2FtcGxlSW5kZXgiLCAiSSIpOworCisgICAgcmV0dXJuIDA7Cit9CisKK30gLy8gbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL2NvcmUvam5pL2FuZHJvaWRfdmlld19Nb3Rpb25FdmVudC5oIGIvY29yZS9qbmkvYW5kcm9pZF92aWV3X01vdGlvbkV2ZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNlZTMyZgotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvam5pL2FuZHJvaWRfdmlld19Nb3Rpb25FdmVudC5oCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIF9BTkRST0lEX1ZJRVdfTU9USU9ORVZFTlRfSAorI2RlZmluZSBfQU5EUk9JRF9WSUVXX01PVElPTkVWRU5UX0gKKworI2luY2x1ZGUgImpuaS5oIgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK2NsYXNzIE1vdGlvbkV2ZW50OworCisvKiBPYnRhaW5zIGFuIGluc3RhbmNlIG9mIGEgRFZNIE1vdGlvbkV2ZW50IG9iamVjdCBhcyBhIGNvcHkgb2YgYSBuYXRpdmUgTW90aW9uRXZlbnQgaW5zdGFuY2UuICovCitleHRlcm4gam9iamVjdCBhbmRyb2lkX3ZpZXdfTW90aW9uRXZlbnRfZnJvbU5hdGl2ZShKTklFbnYqIGVudiwgY29uc3QgTW90aW9uRXZlbnQqIGV2ZW50KTsKKworLyogQ29waWVzIHRoZSBjb250ZW50cyBvZiBhIERWTSBNb3Rpb25FdmVudCBvYmplY3QgdG8gYSBuYXRpdmUgTW90aW9uRXZlbnQgaW5zdGFuY2UuICovCitleHRlcm4gdm9pZCBhbmRyb2lkX3ZpZXdfTW90aW9uRXZlbnRfdG9OYXRpdmUoSk5JRW52KiBlbnYsIGpvYmplY3QgZXZlbnRPYmosIGludDMyX3QgbmF0dXJlLAorICAgICAgICBNb3Rpb25FdmVudCogZXZlbnQpOworCisvKiBSZWN5Y2xlcyBhIERWTSBNb3Rpb25FdmVudCBvYmplY3QuICovCitleHRlcm4gdm9pZCBhbmRyb2lkX3ZpZXdfTW90aW9uRXZlbnRfcmVjeWNsZShKTklFbnYqIGVudiwgam9iamVjdCBldmVudE9iaik7CisKK30gLy8gbmFtZXNwYWNlIGFuZHJvaWQKKworI2VuZGlmIC8vIF9BTkRST0lEX09TX0tFWUVWRU5UX0gKZGlmZiAtLWdpdCBhL2NvcmUvam5pL2FuZHJvaWRfdmlld19TdXJmYWNlLmNwcCBiL2NvcmUvam5pL2FuZHJvaWRfdmlld19TdXJmYWNlLmNwcAppbmRleCA3ODgzNzRiLi43MzA1MDMyIDEwMDY0NAotLS0gYS9jb3JlL2puaS9hbmRyb2lkX3ZpZXdfU3VyZmFjZS5jcHAKKysrIGIvY29yZS9qbmkvYW5kcm9pZF92aWV3X1N1cmZhY2UuY3BwCkBAIC0xNCwyMCArMTQsMjYgQEAKICAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogICovCiAKKyNkZWZpbmUgTE9HX1RBRyAiU3VyZmFjZSIKKwogI2luY2x1ZGUgPHN0ZGlvLmg+CiAKICNpbmNsdWRlICJhbmRyb2lkX3V0aWxfQmluZGVyLmgiCiAKICNpbmNsdWRlIDxzdXJmYWNlZmxpbmdlci9TdXJmYWNlQ29tcG9zZXJDbGllbnQuaD4KKyNpbmNsdWRlIDxzdXJmYWNlZmxpbmdlci9TdXJmYWNlLmg+CiAjaW5jbHVkZSA8dWkvUmVnaW9uLmg+CiAjaW5jbHVkZSA8dWkvUmVjdC5oPgogCisjaW5jbHVkZSA8RUdML2VnbC5oPgorCiAjaW5jbHVkZSA8U2tDYW52YXMuaD4KICNpbmNsdWRlIDxTa0JpdG1hcC5oPgogI2luY2x1ZGUgPFNrUmVnaW9uLmg+CiAKICNpbmNsdWRlICJqbmkuaCIKICNpbmNsdWRlIDxhbmRyb2lkX3J1bnRpbWUvQW5kcm9pZFJ1bnRpbWUuaD4KKyNpbmNsdWRlIDxhbmRyb2lkX3J1bnRpbWUvYW5kcm9pZF92aWV3X1N1cmZhY2UuaD4KICNpbmNsdWRlIDx1dGlscy9taXNjLmg+CiAKIApAQCAtMTc0LDYgKzE4MCwxMSBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3NwPEFOYXRpdmVXaW5kb3c+IGFuZHJvaWRfU3VyZmFjZV9nZXROYXRpdmVXaW5kb3coCisgICAgICAgIEpOSUVudiogZW52LCBqb2JqZWN0IGNsYXp6KSB7CisgICAgcmV0dXJuIGdldFN1cmZhY2UoZW52LCBjbGF6eikuZ2V0KCk7Cit9CisKIHN0YXRpYyB2b2lkIHNldFN1cmZhY2UoSk5JRW52KiBlbnYsIGpvYmplY3QgY2xhenosIGNvbnN0IHNwPFN1cmZhY2U+JiBzdXJmYWNlKQogewogICAgIFN1cmZhY2UqIGNvbnN0IHAgPSAoU3VyZmFjZSopZW52LT5HZXRJbnRGaWVsZChjbGF6eiwgc28uc3VyZmFjZSk7CkBAIC0yMjUsOCArMjM2LDkgQEAKICAgICAgICAgZG9UaHJvdyhlbnYsICJqYXZhL2xhbmcvTnVsbFBvaW50ZXJFeGNlcHRpb24iLCBOVUxMKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBzcDxTdXJmYWNlPiByaHMgPSBuZXcgU3VyZmFjZSgqcGFyY2VsKTsKLSAgICBzZXRTdXJmYWNlKGVudiwgY2xhenosIHJocyk7CisKKyAgICBzcDxTdXJmYWNlPiBzdXIoU3VyZmFjZTo6cmVhZEZyb21QYXJjZWwoKnBhcmNlbCwgMCkpOworICAgIHNldFN1cmZhY2UoZW52LCBjbGF6eiwgc3VyKTsKIH0KIAogc3RhdGljIGppbnQgU3VyZmFjZV9nZXRJZGVudGl0eShKTklFbnYqIGVudiwgam9iamVjdCBjbGF6eikKQEAgLTMzMiw3ICszNDQsNyBAQAogICAgIAogICAgIFNrUmVnaW9uIGNsaXBSZWc7CiAgICAgaWYgKGRpcnR5UmVnaW9uLmlzUmVjdCgpKSB7IC8vIHZlcnkgY29tbW9uIGNhc2UKLSAgICAgICAgY29uc3QgUmVjdCYgYihkaXJ0eVJlZ2lvbi5nZXRCb3VuZHMoKSk7CisgICAgICAgIGNvbnN0IFJlY3QgYihkaXJ0eVJlZ2lvbi5nZXRCb3VuZHMoKSk7CiAgICAgICAgIGNsaXBSZWcuc2V0UmVjdChiLmxlZnQsIGIudG9wLCBiLnJpZ2h0LCBiLmJvdHRvbSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgc2l6ZV90IGNvdW50OwpAQCAtNTg1LDcgKzU5Nyw3IEBACiAgICAgICogYSBTdXJmYWNlIGFuZCBpcyBuZWNlc3NhcnkgZm9yIHJldHVybmluZyB0aGUgU3VyZmFjZSByZWZlcmVuY2UgdG8KICAgICAgKiB0aGUgY2FsbGVyLiBBdCB0aGlzIHBvaW50LCB3ZSBzaG91bGQgb25seSBoYXZlIGEgU3VyZmFjZUNvbnRyb2wuCiAgICAgICovCi0gICAgCisKICAgICBjb25zdCBzcDxTdXJmYWNlQ29udHJvbD4mIHN1cmZhY2UgPSBnZXRTdXJmYWNlQ29udHJvbChlbnYsIGNsYXp6KTsKICAgICBjb25zdCBzcDxTdXJmYWNlQ29udHJvbD4mIHJocyA9IGdldFN1cmZhY2VDb250cm9sKGVudiwgb3RoZXIpOwogICAgIGlmICghU3VyZmFjZUNvbnRyb2w6OmlzU2FtZVN1cmZhY2Uoc3VyZmFjZSwgcmhzKSkgewpAQCAtNjA0LDEzICs2MTYsOSBAQAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgY29uc3Qgc3A8U3VyZmFjZT4mIGNvbnRyb2woZ2V0U3VyZmFjZShlbnYsIGNsYXp6KSk7Ci0gICAgc3A8U3VyZmFjZT4gcmhzID0gbmV3IFN1cmZhY2UoKnBhcmNlbCk7Ci0gICAgaWYgKCFTdXJmYWNlOjppc1NhbWVTdXJmYWNlKGNvbnRyb2wsIHJocykpIHsKLSAgICAgICAgLy8gd2UgcmVhc3NpZ24gdGhlIHN1cmZhY2Ugb25seSBpZiBpdCdzIGEgZGlmZmVyZW50IG9uZQotICAgICAgICAvLyBvdGhlcndpc2Ugd2Ugd291bGQgbG9vc2Ugb3VyIGNsaWVudC1zaWRlIHN0YXRlLgotICAgICAgICBzZXRTdXJmYWNlKGVudiwgY2xhenosIHJocyk7Ci0gICAgfQorICAgIGNvbnN0IHNwPFN1cmZhY2U+JiBjdXJyKGdldFN1cmZhY2UoZW52LCBjbGF6eikpOworICAgIHNwPFN1cmZhY2U+IHN1cihTdXJmYWNlOjpyZWFkRnJvbVBhcmNlbCgqcGFyY2VsLCBjdXJyKSk7CisgICAgc2V0U3VyZmFjZShlbnYsIGNsYXp6LCBzdXIpOwogfQogCiBzdGF0aWMgdm9pZCBTdXJmYWNlX3dyaXRlVG9QYXJjZWwoCkBAIC02ODAsNyArNjg4LDcgQEAKIAogdm9pZCBuYXRpdmVDbGFzc0luaXQoSk5JRW52KiBlbnYsIGpjbGFzcyBjbGF6eikKIHsKLSAgICBzby5zdXJmYWNlID0gZW52LT5HZXRGaWVsZElEKGNsYXp6LCAibVN1cmZhY2UiLCAiSSIpOworICAgIHNvLnN1cmZhY2UgPSBlbnYtPkdldEZpZWxkSUQoY2xhenosIEFORFJPSURfVklFV19TVVJGQUNFX0pOSV9JRCwgIkkiKTsKICAgICBzby5zdXJmYWNlQ29udHJvbCA9IGVudi0+R2V0RmllbGRJRChjbGF6eiwgIm1TdXJmYWNlQ29udHJvbCIsICJJIik7CiAgICAgc28uc2F2ZUNvdW50ID0gZW52LT5HZXRGaWVsZElEKGNsYXp6LCAibVNhdmVDb3VudCIsICJJIik7CiAgICAgc28uY2FudmFzICAgID0gZW52LT5HZXRGaWVsZElEKGNsYXp6LCAibUNhbnZhcyIsICJMYW5kcm9pZC9ncmFwaGljcy9DYW52YXM7Iik7CmRpZmYgLS1naXQgYS9jb3JlL2puaS9hbmRyb2lkX3ZpZXdfVmlld1Jvb3QuY3BwIGIvY29yZS9qbmkvYW5kcm9pZF92aWV3X1ZpZXdSb290LmNwcAppbmRleCA5ZDYyZDg5Li41MTczYmI4IDEwMDY0NAotLS0gYS9jb3JlL2puaS9hbmRyb2lkX3ZpZXdfVmlld1Jvb3QuY3BwCisrKyBiL2NvcmUvam5pL2FuZHJvaWRfdmlld19WaWV3Um9vdC5jcHAKQEAgLTE2LDYgKzE2LDcgQEAKIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAjaW5jbHVkZSA8YXNzZXJ0Lmg+CisjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgogCiAjaW5jbHVkZSA8Y29yZS9Ta0NhbnZhcy5oPgogI2luY2x1ZGUgPGNvcmUvU2tEZXZpY2UuaD4KQEAgLTI0LDYgKzI1LDcgQEAKICNpbmNsdWRlICJHcmFwaGljc0pOSS5oIgogCiAjaW5jbHVkZSAiam5pLmgiCisjaW5jbHVkZSA8bmF0aXZlaGVscGVyL0pOSUhlbHAuaD4KICNpbmNsdWRlIDxhbmRyb2lkX3J1bnRpbWUvQW5kcm9pZFJ1bnRpbWUuaD4KICNpbmNsdWRlIDx1dGlscy9taXNjLmg+CiAKQEAgLTc4LDYgKzgwLDcgQEAKICAgICBTa0dMQ2FudmFzOjpBYmFuZG9uQWxsVGV4dHVyZXMoKTsKIH0KIAorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIGNvbnN0IGNoYXIqIGNvbnN0IGtDbGFzc1BhdGhOYW1lID0gImFuZHJvaWQvdmlldy9WaWV3Um9vdCI7CmRpZmYgLS1naXQgYS9jb3JlL2puaS9jb21fZ29vZ2xlX2FuZHJvaWRfZ2xlc19qbmlfRUdMSW1wbC5jcHAgYi9jb3JlL2puaS9jb21fZ29vZ2xlX2FuZHJvaWRfZ2xlc19qbmlfRUdMSW1wbC5jcHAKaW5kZXggNmE4YzRiOS4uOTQxZWQ2MyAxMDA2NDQKLS0tIGEvY29yZS9qbmkvY29tX2dvb2dsZV9hbmRyb2lkX2dsZXNfam5pX0VHTEltcGwuY3BwCisrKyBiL2NvcmUvam5pL2NvbV9nb29nbGVfYW5kcm9pZF9nbGVzX2puaV9FR0xJbXBsLmNwcApAQCAtMTYsNiArMTYsNyBAQAogKi8KIAogI2luY2x1ZGUgPGFuZHJvaWRfcnVudGltZS9BbmRyb2lkUnVudGltZS5oPgorI2luY2x1ZGUgPGFuZHJvaWRfcnVudGltZS9hbmRyb2lkX3ZpZXdfU3VyZmFjZS5oPgogI2luY2x1ZGUgPHV0aWxzL21pc2MuaD4KIAogI2luY2x1ZGUgPEVHTC9lZ2wuaD4KQEAgLTk1LDkgKzk2LDYgQEAKICAgICBnU3VyZmFjZV9OYXRpdmVQaXhlbFJlZkZpZWxkSUQgPSBfZW52LT5HZXRGaWVsZElEKGdTdXJmYWNlX2NsYXNzLCAibU5hdGl2ZVBpeGVsUmVmIiwgIkkiKTsKICAgICBnQ29uZmlnX0VHTENvbmZpZ0ZpZWxkSUQgICA9IF9lbnYtPkdldEZpZWxkSUQoZ0NvbmZpZ19jbGFzcywgICJtRUdMQ29uZmlnIiwgICJJIik7CiAKLSAgICBqY2xhc3Mgc3VyZmFjZV9jbGFzcyA9IF9lbnYtPkZpbmRDbGFzcygiYW5kcm9pZC92aWV3L1N1cmZhY2UiKTsKLSAgICBnU3VyZmFjZV9TdXJmYWNlRmllbGRJRCA9IF9lbnYtPkdldEZpZWxkSUQoc3VyZmFjZV9jbGFzcywgIm1TdXJmYWNlIiwgIkkiKTsKLQogICAgIGpjbGFzcyBiaXRtYXBfY2xhc3MgPSBfZW52LT5GaW5kQ2xhc3MoImFuZHJvaWQvZ3JhcGhpY3MvQml0bWFwIik7CiAgICAgZ0JpdG1hcF9OYXRpdmVCaXRtYXBGaWVsZElEID0gX2Vudi0+R2V0RmllbGRJRChiaXRtYXBfY2xhc3MsICJtTmF0aXZlQml0bWFwIiwgIkkiKTsKIH0KQEAgLTMyNSwxOSArMzIzLDIwIEBACiAgICAgfQogICAgIEVHTERpc3BsYXkgZHB5ID0gZ2V0RGlzcGxheShfZW52LCBkaXNwbGF5KTsKICAgICBFR0xDb250ZXh0IGNuZiA9IGdldENvbmZpZyhfZW52LCBjb25maWcpOwotICAgIFN1cmZhY2UqIHdpbmRvdyA9IDA7CisgICAgc3A8QU5hdGl2ZVdpbmRvdz4gd2luZG93OwogICAgIGlmIChuYXRpdmVfd2luZG93ID09IE5VTEwpIHsKIG5vdF92YWxpZF9zdXJmYWNlOgogICAgICAgICBkb1Rocm93KF9lbnYsICJqYXZhL2xhbmcvSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiwKICAgICAgICAgICAgICAgICAiTWFrZSBzdXJlIHRoZSBTdXJmYWNlVmlldyBvciBhc3NvY2lhdGVkIFN1cmZhY2VIb2xkZXIgaGFzIGEgdmFsaWQgU3VyZmFjZSIpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgd2luZG93ID0gKFN1cmZhY2UqKV9lbnYtPkdldEludEZpZWxkKG5hdGl2ZV93aW5kb3csIGdTdXJmYWNlX1N1cmZhY2VGaWVsZElEKTsKKworICAgIHdpbmRvdyA9IGFuZHJvaWRfU3VyZmFjZV9nZXROYXRpdmVXaW5kb3coX2VudiwgbmF0aXZlX3dpbmRvdyk7CiAgICAgaWYgKHdpbmRvdyA9PSBOVUxMKQogICAgICAgICBnb3RvIG5vdF92YWxpZF9zdXJmYWNlOwogCiAgICAgamludCogYmFzZSA9IGJlZ2luTmF0aXZlQXR0cmliTGlzdChfZW52LCBhdHRyaWJfbGlzdCk7Ci0gICAgRUdMU3VyZmFjZSBzdXIgPSBlZ2xDcmVhdGVXaW5kb3dTdXJmYWNlKGRweSwgY25mLCB3aW5kb3csIGJhc2UpOworICAgIEVHTFN1cmZhY2Ugc3VyID0gZWdsQ3JlYXRlV2luZG93U3VyZmFjZShkcHksIGNuZiwgd2luZG93LmdldCgpLCBiYXNlKTsKICAgICBlbmROYXRpdmVBdHRyaWJ1dGVMaXN0KF9lbnYsIGF0dHJpYl9saXN0LCBiYXNlKTsKICAgICByZXR1cm4gKGppbnQpc3VyOwogfQpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvQW5kcm9pZE1hbmlmZXN0LnhtbCBiL2NvcmUvcmVzL0FuZHJvaWRNYW5pZmVzdC54bWwKaW5kZXggMmEyMjA4Zi4uODJmODIyZiAxMDA2NDQKLS0tIGEvY29yZS9yZXMvQW5kcm9pZE1hbmlmZXN0LnhtbAorKysgYi9jb3JlL3Jlcy9BbmRyb2lkTWFuaWZlc3QueG1sCkBAIC04MCw2ICs4MCwxMCBAQAogICAgIDxwcm90ZWN0ZWQtYnJvYWRjYXN0IGFuZHJvaWQ6bmFtZT0iYW5kcm9pZC5ibHVldG9vdGguZGV2aWNlLmFjdGlvbi5QQUlSSU5HX1JFUVVFU1QiIC8+CiAgICAgPHByb3RlY3RlZC1icm9hZGNhc3QgYW5kcm9pZDpuYW1lPSJhbmRyb2lkLmJsdWV0b290aC5kZXZpY2UuYWN0aW9uLlBBSVJJTkdfQ0FOQ0VMIiAvPgogCisgICAgPHByb3RlY3RlZC1icm9hZGNhc3QgYW5kcm9pZDpuYW1lPSJhbmRyb2lkLmhhcmR3YXJlLmFjdGlvbi5VU0JfQ09OTkVDVEVEIiAvPgorICAgIDxwcm90ZWN0ZWQtYnJvYWRjYXN0IGFuZHJvaWQ6bmFtZT0iYW5kcm9pZC5oYXJkd2FyZS5hY3Rpb24uVVNCX0RJU0NPTk5FQ1RFRCIgLz4KKyAgICA8cHJvdGVjdGVkLWJyb2FkY2FzdCBhbmRyb2lkOm5hbWU9ImFuZHJvaWQuaGFyZHdhcmUuYWN0aW9uLlVTQl9TVEFURSIgLz4KKwogICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CiAgICAgPCEtLSBQZXJtaXNzaW9ucyBmb3IgdGhpbmdzIHRoYXQgY29zdCBtb25leSAtLT4KICAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgpAQCAtNDM2LDYgKzQ0MCwxNCBAQAogICAgICAgICBhbmRyb2lkOmxhYmVsPSJAc3RyaW5nL3Blcm1sYWJfZmxhc2hsaWdodCIKICAgICAgICAgYW5kcm9pZDpkZXNjcmlwdGlvbj0iQHN0cmluZy9wZXJtZGVzY19mbGFzaGxpZ2h0IiAvPgogCisgICAgPCEtLSBBbGxvd3MgYW4gYXBwbGljYXRpb24gdG8gYWNjZXNzIFVTQiBkZXZpY2VzCisgICAgICAgICBAaGlkZSAtLT4KKyAgICA8cGVybWlzc2lvbiBhbmRyb2lkOm5hbWU9ImFuZHJvaWQucGVybWlzc2lvbi5BQ0NFU1NfVVNCIgorICAgICAgICBhbmRyb2lkOnBlcm1pc3Npb25Hcm91cD0iYW5kcm9pZC5wZXJtaXNzaW9uLWdyb3VwLkhBUkRXQVJFX0NPTlRST0xTIgorICAgICAgICBhbmRyb2lkOnByb3RlY3Rpb25MZXZlbD0ic2lnbmF0dXJlT3JTeXN0ZW0iCisgICAgICAgIGFuZHJvaWQ6bGFiZWw9IkBzdHJpbmcvcGVybWxhYl9hY2Nlc3NVc2IiCisgICAgICAgIGFuZHJvaWQ6ZGVzY3JpcHRpb249IkBzdHJpbmcvcGVybWRlc2NfYWNjZXNzVXNiIiAvPgorCiAgICAgPCEtLSBBbGxvd3MgYWNjZXNzIHRvIGhhcmR3YXJlIHBlcmlwaGVyYWxzLiAgSW50ZW5kZWQgb25seSBmb3IgaGFyZHdhcmUgdGVzdGluZyAtLT4KICAgICA8cGVybWlzc2lvbiBhbmRyb2lkOm5hbWU9ImFuZHJvaWQucGVybWlzc2lvbi5IQVJEV0FSRV9URVNUIgogICAgICAgICBhbmRyb2lkOnBlcm1pc3Npb25Hcm91cD0iYW5kcm9pZC5wZXJtaXNzaW9uLWdyb3VwLkhBUkRXQVJFX0NPTlRST0xTIgpAQCAtOTA4LDYgKzkyMCwxMyBAQAogICAgICAgICBhbmRyb2lkOmRlc2NyaXB0aW9uPSJAc3RyaW5nL3Blcm1kZXNjX3N0YXR1c0JhciIKICAgICAgICAgYW5kcm9pZDpwcm90ZWN0aW9uTGV2ZWw9InNpZ25hdHVyZU9yU3lzdGVtIiAvPgogCisgICAgPCEtLSBBbGxvd3MgYW4gYXBwbGljYXRpb24gdG8gYmUgdGhlIHN0YXR1cyBiYXIuICBDdXJyZW50bHkgdXNlZCBvbmx5IGJ5IFN5c3RlbVVJLmFwaworICAgIEBoaWRlIC0tPgorICAgIDxwZXJtaXNzaW9uIGFuZHJvaWQ6bmFtZT0iYW5kcm9pZC5wZXJtaXNzaW9uLlNUQVRVU19CQVJfU0VSVklDRSIKKyAgICAgICAgYW5kcm9pZDpsYWJlbD0iQHN0cmluZy9wZXJtbGFiX3N0YXR1c0JhclNlcnZpY2UiCisgICAgICAgIGFuZHJvaWQ6ZGVzY3JpcHRpb249IkBzdHJpbmcvcGVybWRlc2Nfc3RhdHVzQmFyU2VydmljZSIKKyAgICAgICAgYW5kcm9pZDpwcm90ZWN0aW9uTGV2ZWw9InNpZ25hdHVyZSIgLz4KKwogICAgIDwhLS0gQWxsb3dzIGFuIGFwcGxpY2F0aW9uIHRvIGZvcmNlIGEgQkFDSyBvcGVyYXRpb24gb24gd2hhdGV2ZXIgaXMgdGhlCiAgICAgICAgICB0b3AgYWN0aXZpdHkuIC0tPgogICAgIDxwZXJtaXNzaW9uIGFuZHJvaWQ6bmFtZT0iYW5kcm9pZC5wZXJtaXNzaW9uLkZPUkNFX0JBQ0siCkBAIC0xMjUwLDYgKzEyNjksMTIgQEAKICAgICAgICAgICAgICAgICA8Y2F0ZWdvcnkgYW5kcm9pZDpuYW1lPSJhbmRyb2lkLmludGVudC5jYXRlZ29yeS5ERUZBVUxUIiAvPgogICAgICAgICAgICAgPC9pbnRlbnQtZmlsdGVyPgogICAgICAgICA8L2FjdGl2aXR5PgorICAgICAgICA8YWN0aXZpdHkgYW5kcm9pZDpuYW1lPSJjb20uYW5kcm9pZC5pbnRlcm5hbC5hcHAuSGVhdnlXZWlnaHRTd2l0Y2hlckFjdGl2aXR5IgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6dGhlbWU9IkBzdHlsZS9UaGVtZS5EaWFsb2ciCisgICAgICAgICAgICAgICAgYW5kcm9pZDpsYWJlbD0iQHN0cmluZy9oZWF2eV93ZWlnaHRfc3dpdGNoZXJfdGl0bGUiCisgICAgICAgICAgICAgICAgYW5kcm9pZDpmaW5pc2hPbkNsb3NlU3lzdGVtRGlhbG9ncz0idHJ1ZSIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmV4Y2x1ZGVGcm9tUmVjZW50cz0idHJ1ZSI+CisgICAgICAgIDwvYWN0aXZpdHk+CiAgICAgICAgIDxhY3Rpdml0eSBhbmRyb2lkOm5hbWU9ImNvbS5hbmRyb2lkLmludGVybmFsLmFwcC5EaXNhYmxlQ2FyTW9kZUFjdGl2aXR5IgogICAgICAgICAgICAgICAgIGFuZHJvaWQ6dGhlbWU9IkBzdHlsZS9UaGVtZS5Ob0Rpc3BsYXkiCiAgICAgICAgICAgICAgICAgYW5kcm9pZDpleGNsdWRlRnJvbVJlY2VudHM9InRydWUiPgpAQCAtMTI2Myw5ICsxMjg4LDYgQEAKICAgICAgICAgICAgICAgICA8Y2F0ZWdvcnkgYW5kcm9pZDpuYW1lPSJhbmRyb2lkLmludGVudC5jYXRlZ29yeS5ERUZBVUxUIiAvPgogICAgICAgICAgICAgPC9pbnRlbnQtZmlsdGVyPgogICAgICAgICA8L2FjdGl2aXR5PgotICAgICAgICA8YWN0aXZpdHkgYW5kcm9pZDpuYW1lPSJjb20uYW5kcm9pZC5zZXJ2ZXIuc3RhdHVzLlVzYlN0b3JhZ2VBY3Rpdml0eSIKLSAgICAgICAgICAgICAgICBhbmRyb2lkOmV4Y2x1ZGVGcm9tUmVjZW50cz0idHJ1ZSI+Ci0gICAgICAgIDwvYWN0aXZpdHk+CiAgICAgICAgIDxhY3Rpdml0eSBhbmRyb2lkOm5hbWU9ImNvbS5hbmRyb2lkLmludGVybmFsLmFwcC5FeHRlcm5hbE1lZGlhRm9ybWF0QWN0aXZpdHkiCiAgICAgICAgICAgICAgICAgYW5kcm9pZDp0aGVtZT0iQHN0eWxlL1RoZW1lLkRpYWxvZy5BbGVydCIKICAgICAgICAgICAgICAgICBhbmRyb2lkOmV4Y2x1ZGVGcm9tUmVjZW50cz0idHJ1ZSI+CmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvYW5pbS9wcmlvcml0eV9hbGVydF9lbnRlci54bWwgYi9jb3JlL3Jlcy9yZXMvYW5pbS9wcmlvcml0eV9hbGVydF9lbnRlci54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzhjZTIzYwotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvcmVzL3Jlcy9hbmltL3ByaW9yaXR5X2FsZXJ0X2VudGVyLnhtbApAQCAtMCwwICsxLDE0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPHNldCB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAgICAgID4KKyAgICA8c2NhbGUKKyAgICAgICAgYW5kcm9pZDppbnRlcnBvbGF0b3I9IkBhbmRyb2lkOmFuaW0vb3ZlcnNob290X2ludGVycG9sYXRvciIKKyAgICAgICAgYW5kcm9pZDpmcm9tWFNjYWxlPSIwLjciIGFuZHJvaWQ6dG9YU2NhbGU9IjEuMCIKKyAgICAgICAgYW5kcm9pZDpmcm9tWVNjYWxlPSIwLjciIGFuZHJvaWQ6dG9ZU2NhbGU9IjEuMCIKKyAgICAgICAgYW5kcm9pZDpwaXZvdFg9IjUwJSIgYW5kcm9pZDpwaXZvdFk9IjUwJSIKKyAgICAgICAgYW5kcm9pZDpkdXJhdGlvbj0iQGFuZHJvaWQ6aW50ZWdlci9jb25maWdfc2hvcnRBbmltVGltZSIgLz4KKyAgICA8YWxwaGEgCisgICAgICAgIGFuZHJvaWQ6aW50ZXJwb2xhdG9yPSJAYW5kcm9pZDphbmltL2RlY2VsZXJhdGVfaW50ZXJwb2xhdG9yIgorICAgICAgICBhbmRyb2lkOmZyb21BbHBoYT0iMC4wIiBhbmRyb2lkOnRvQWxwaGE9IjEuMCIKKyAgICAgICAgYW5kcm9pZDpkdXJhdGlvbj0iQGFuZHJvaWQ6aW50ZWdlci9jb25maWdfc2hvcnRBbmltVGltZSIgLz4KKzwvc2V0PgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2FuaW0vcHJpb3JpdHlfYWxlcnRfZXhpdC54bWwgYi9jb3JlL3Jlcy9yZXMvYW5pbS9wcmlvcml0eV9hbGVydF9leGl0LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTM4Y2IyCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9yZXMvcmVzL2FuaW0vcHJpb3JpdHlfYWxlcnRfZXhpdC54bWwKQEAgLTAsMCArMSwxNCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxzZXQgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAgICAgICA+CisgICAgPHNjYWxlCisgICAgICAgIGFuZHJvaWQ6aW50ZXJwb2xhdG9yPSJAYW5kcm9pZDphbmltL2FjY2VsZXJhdGVfaW50ZXJwb2xhdG9yIgorICAgICAgICBhbmRyb2lkOmZyb21YU2NhbGU9IjEuMCIgYW5kcm9pZDp0b1hTY2FsZT0iMC43IgorICAgICAgICBhbmRyb2lkOmZyb21ZU2NhbGU9IjEuMCIgYW5kcm9pZDp0b1lTY2FsZT0iMC43IgorICAgICAgICBhbmRyb2lkOnBpdm90WD0iNTAlIiBhbmRyb2lkOnBpdm90WT0iNTAlIgorICAgICAgICBhbmRyb2lkOmR1cmF0aW9uPSJAYW5kcm9pZDppbnRlZ2VyL2NvbmZpZ19zaG9ydEFuaW1UaW1lIiAvPgorICAgIDxhbHBoYSAKKyAgICAgICAgYW5kcm9pZDppbnRlcnBvbGF0b3I9IkBhbmRyb2lkOmFuaW0vYWNjZWxlcmF0ZV9pbnRlcnBvbGF0b3IiCisgICAgICAgIGFuZHJvaWQ6ZnJvbUFscGhhPSIxLjAiIGFuZHJvaWQ6dG9BbHBoYT0iMC4wIgorICAgICAgICBhbmRyb2lkOmR1cmF0aW9uPSJAYW5kcm9pZDppbnRlZ2VyL2NvbmZpZ19zaG9ydEFuaW1UaW1lIiAvPgorPC9zZXQ+CmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9iYXR0ZXJ5X2NoYXJnZV9maWxsX2VtcHR5LjkucG5nIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvYmF0dGVyeV9jaGFyZ2VfZmlsbF9lbXB0eS45LnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzRlNzBhOC4uMDAwMDAwMAotLS0gYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9iYXR0ZXJ5X2NoYXJnZV9maWxsX2VtcHR5LjkucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvYmF0dGVyeV9jaGFyZ2VfZmlsbF9mdWxsLjkucG5nIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvYmF0dGVyeV9jaGFyZ2VfZmlsbF9mdWxsLjkucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYzY2ZjVhLi4wMDAwMDAwCi0tLSBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL2JhdHRlcnlfY2hhcmdlX2ZpbGxfZnVsbC45LnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL2JhdHRlcnlfY2hhcmdlX2ZpbGxfd2FybmluZy45LnBuZyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL2JhdHRlcnlfY2hhcmdlX2ZpbGxfd2FybmluZy45LnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzJkOTljNi4uMDAwMDAwMAotLS0gYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9iYXR0ZXJ5X2NoYXJnZV9maWxsX3dhcm5pbmcuOS5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9wcmVzZW5jZV9hdWRpb19hd2F5LnBuZyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3ByZXNlbmNlX2F1ZGlvX2F3YXkucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiNWUxMjMKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9wcmVzZW5jZV9hdWRpb19hd2F5LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9wcmVzZW5jZV9hdWRpb19idXN5LnBuZyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3ByZXNlbmNlX2F1ZGlvX2J1c3kucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxYWViMDEKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9wcmVzZW5jZV9hdWRpb19idXN5LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9wcmVzZW5jZV9hdWRpb19vbmxpbmUucG5nIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvcHJlc2VuY2VfYXVkaW9fb25saW5lLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTNhY2JiCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvcHJlc2VuY2VfYXVkaW9fb25saW5lLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9wcmVzZW5jZV9hd2F5LnBuZyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3ByZXNlbmNlX2F3YXkucG5nCmluZGV4IGQ0YWE2NmIuLjg0YjAwYmIgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3ByZXNlbmNlX2F3YXkucG5nCisrKyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3ByZXNlbmNlX2F3YXkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3ByZXNlbmNlX2J1c3kucG5nIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvcHJlc2VuY2VfYnVzeS5wbmcKaW5kZXggNGIyNzg1My4uZDc3YTQ2MyAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvcHJlc2VuY2VfYnVzeS5wbmcKKysrIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvcHJlc2VuY2VfYnVzeS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvcHJlc2VuY2VfaW52aXNpYmxlLnBuZyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3ByZXNlbmNlX2ludmlzaWJsZS5wbmcKaW5kZXggMGUyN2ZiYS4uMGQ4M2U3MGEgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3ByZXNlbmNlX2ludmlzaWJsZS5wbmcKKysrIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvcHJlc2VuY2VfaW52aXNpYmxlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9wcmVzZW5jZV9vZmZsaW5lLnBuZyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3ByZXNlbmNlX29mZmxpbmUucG5nCmluZGV4IGU1MTFhYTQuLjI2MTllOWYgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3ByZXNlbmNlX29mZmxpbmUucG5nCisrKyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3ByZXNlbmNlX29mZmxpbmUucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3ByZXNlbmNlX29ubGluZS5wbmcgYi9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9wcmVzZW5jZV9vbmxpbmUucG5nCmluZGV4IGQ3ODdkMmYuLjdlODQ2ZWYgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3ByZXNlbmNlX29ubGluZS5wbmcKKysrIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvcHJlc2VuY2Vfb25saW5lLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9wcmVzZW5jZV92aWRlb19hd2F5LnBuZyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3ByZXNlbmNlX3ZpZGVvX2F3YXkucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiNTQ5M2IKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9wcmVzZW5jZV92aWRlb19hd2F5LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9wcmVzZW5jZV92aWRlb19idXN5LnBuZyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3ByZXNlbmNlX3ZpZGVvX2J1c3kucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1NmNkYjAKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9wcmVzZW5jZV92aWRlb19idXN5LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9wcmVzZW5jZV92aWRlb19vbmxpbmUucG5nIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvcHJlc2VuY2VfdmlkZW9fb25saW5lLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDlmOGE0Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvcHJlc2VuY2VfdmlkZW9fb25saW5lLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX2JsdWV0b290aC5wbmcgYi9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX2JsdWV0b290aC5wbmcKaW5kZXggOTZkYzA4NS4uN2E4Yjc4ZiAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9ibHVldG9vdGgucG5nCisrKyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfYmx1ZXRvb3RoLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19waG9uZV9jYWxsX2JsdWV0b290aC5wbmcgYi9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19waG9uZV9jYWxsX2JsdWV0b290aC5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkMTMyMzcuLjAwMDAwMDAKLS0tIGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfcGhvbmVfY2FsbF9ibHVldG9vdGgucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfdnBfcGhvbmVfY2FsbF9ibHVldG9vdGgucG5nIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfdnBfcGhvbmVfY2FsbF9ibHVldG9vdGgucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZDEzMjM3Li4wMDAwMDAwCi0tLSBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3ZwX3Bob25lX2NhbGxfYmx1ZXRvb3RoLnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXR1c19iYXJfYmFja2dyb3VuZC5wbmcgYi9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0dXNfYmFyX2JhY2tncm91bmQucG5nCmluZGV4IGU2YTg2NWEuLjNkMDBjZDAgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXR1c19iYXJfYmFja2dyb3VuZC5wbmcKKysrIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdHVzX2Jhcl9iYWNrZ3JvdW5kLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0dXNfYmFyX2Nsb3NlX29uLjkucG5nIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdHVzX2Jhcl9jbG9zZV9vbi45LnBuZwppbmRleCA1YWNmNjM4Li5mMzEzZmZiIDEwMDY0NAotLS0gYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0dXNfYmFyX2Nsb3NlX29uLjkucG5nCisrKyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXR1c19iYXJfY2xvc2Vfb24uOS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdHVzX2Jhcl9oZWFkZXJfYmFja2dyb3VuZC45LnBuZyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXR1c19iYXJfaGVhZGVyX2JhY2tncm91bmQuOS5wbmcKaW5kZXggYmUzNmZmMi4uMzdiNWZlZiAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdHVzX2Jhcl9oZWFkZXJfYmFja2dyb3VuZC45LnBuZworKysgYi9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0dXNfYmFyX2hlYWRlcl9iYWNrZ3JvdW5kLjkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXR1c2Jhcl9iYWNrZ3JvdW5kLjkucG5nIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdHVzYmFyX2JhY2tncm91bmQuOS5wbmcKaW5kZXggZGNjYTY5NS4uYTRiZTI5OCAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdHVzYmFyX2JhY2tncm91bmQuOS5wbmcKKysrIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdHVzYmFyX2JhY2tncm91bmQuOS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvYmF0dGVyeV9jaGFyZ2VfZmlsbF9lbXB0eS45LnBuZyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL2JhdHRlcnlfY2hhcmdlX2ZpbGxfZW1wdHkuOS5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllZDIwYmEuLjAwMDAwMDAKLS0tIGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvYmF0dGVyeV9jaGFyZ2VfZmlsbF9lbXB0eS45LnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL2JhdHRlcnlfY2hhcmdlX2ZpbGxfZnVsbC45LnBuZyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL2JhdHRlcnlfY2hhcmdlX2ZpbGxfZnVsbC45LnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGU2YWFjYS4uMDAwMDAwMAotLS0gYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9iYXR0ZXJ5X2NoYXJnZV9maWxsX2Z1bGwuOS5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9iYXR0ZXJ5X2NoYXJnZV9maWxsX3dhcm5pbmcuOS5wbmcgYi9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9iYXR0ZXJ5X2NoYXJnZV9maWxsX3dhcm5pbmcuOS5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzMjg3ZGIuLjAwMDAwMDAKLS0tIGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvYmF0dGVyeV9jaGFyZ2VfZmlsbF93YXJuaW5nLjkucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvcHJlc2VuY2VfYXVkaW9fYXdheS5wbmcgYi9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9wcmVzZW5jZV9hdWRpb19hd2F5LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjk2NzU0Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvcHJlc2VuY2VfYXVkaW9fYXdheS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvcHJlc2VuY2VfYXVkaW9fYnVzeS5wbmcgYi9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9wcmVzZW5jZV9hdWRpb19idXN5LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTI5OTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvcHJlc2VuY2VfYXVkaW9fYnVzeS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvcHJlc2VuY2VfYXVkaW9fb25saW5lLnBuZyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3ByZXNlbmNlX2F1ZGlvX29ubGluZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGY0MTViYQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3ByZXNlbmNlX2F1ZGlvX29ubGluZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvcHJlc2VuY2VfYXdheS5wbmcgYi9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9wcmVzZW5jZV9hd2F5LnBuZwppbmRleCBmODEyMGRmLi5mOThlOTA4IDEwMDY0NAotLS0gYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9wcmVzZW5jZV9hd2F5LnBuZworKysgYi9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9wcmVzZW5jZV9hd2F5LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9wcmVzZW5jZV9idXN5LnBuZyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3ByZXNlbmNlX2J1c3kucG5nCmluZGV4IDlkNzYyMGIuLjkzMzI2MWY0IDEwMDY0NAotLS0gYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9wcmVzZW5jZV9idXN5LnBuZworKysgYi9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9wcmVzZW5jZV9idXN5LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9wcmVzZW5jZV9pbnZpc2libGUucG5nIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvcHJlc2VuY2VfaW52aXNpYmxlLnBuZwppbmRleCAyMTM5OWE0Li44ZDcyNzU2IDEwMDY0NAotLS0gYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9wcmVzZW5jZV9pbnZpc2libGUucG5nCisrKyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3ByZXNlbmNlX2ludmlzaWJsZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvcHJlc2VuY2Vfb2ZmbGluZS5wbmcgYi9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9wcmVzZW5jZV9vZmZsaW5lLnBuZwppbmRleCAzOTQxYjgyLi5mYzc4Mzk2IDEwMDY0NAotLS0gYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9wcmVzZW5jZV9vZmZsaW5lLnBuZworKysgYi9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9wcmVzZW5jZV9vZmZsaW5lLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9wcmVzZW5jZV9vbmxpbmUucG5nIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvcHJlc2VuY2Vfb25saW5lLnBuZwppbmRleCAyMmQ1NjgzLi45NDNlZWUwIDEwMDY0NAotLS0gYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9wcmVzZW5jZV9vbmxpbmUucG5nCisrKyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3ByZXNlbmNlX29ubGluZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvcHJlc2VuY2VfdmlkZW9fYXdheS5wbmcgYi9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9wcmVzZW5jZV92aWRlb19hd2F5LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mM2VjNWQ0Ci0tLSAvZGV2L251bGwKKysrIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvcHJlc2VuY2VfdmlkZW9fYXdheS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvcHJlc2VuY2VfdmlkZW9fYnVzeS5wbmcgYi9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9wcmVzZW5jZV92aWRlb19idXN5LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Mzc5ZTAwCi0tLSAvZGV2L251bGwKKysrIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvcHJlc2VuY2VfdmlkZW9fYnVzeS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvcHJlc2VuY2VfdmlkZW9fb25saW5lLnBuZyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3ByZXNlbmNlX3ZpZGVvX29ubGluZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjRjZWIzOQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3ByZXNlbmNlX3ZpZGVvX29ubGluZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfcGhvbmVfY2FsbF9ibHVldG9vdGgucG5nIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfcGhvbmVfY2FsbF9ibHVldG9vdGgucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YWJmZDE5Li4wMDAwMDAwCi0tLSBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3Bob25lX2NhbGxfYmx1ZXRvb3RoLnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3ZwX3Bob25lX2NhbGxfYmx1ZXRvb3RoLnBuZyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3ZwX3Bob25lX2NhbGxfYmx1ZXRvb3RoLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2FiZmQxOS4uMDAwMDAwMAotLS0gYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c192cF9waG9uZV9jYWxsX2JsdWV0b290aC5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUvYmF0dGVyeV9jaGFyZ2VfZmlsbC54bWwgYi9jb3JlL3Jlcy9yZXMvZHJhd2FibGUvYmF0dGVyeV9jaGFyZ2VfZmlsbC54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmNjU3MzMuLjAwMDAwMDAKLS0tIGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlL2JhdHRlcnlfY2hhcmdlX2ZpbGwueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTwhLS0gQ29weXJpZ2h0IChDKSAyMDA4IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLQotICAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAgCi0gICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gIAotICAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotLS0+Ci0KLTxsZXZlbC1saXN0IHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCI+Ci0gICAgPGl0ZW0gYW5kcm9pZDptYXhMZXZlbD0iMjkiIGFuZHJvaWQ6ZHJhd2FibGU9IkBhbmRyb2lkOmRyYXdhYmxlL2JhdHRlcnlfY2hhcmdlX2ZpbGxfZW1wdHkiIC8+Ci0gICAgPGl0ZW0gYW5kcm9pZDptYXhMZXZlbD0iNDkiIGFuZHJvaWQ6ZHJhd2FibGU9IkBhbmRyb2lkOmRyYXdhYmxlL2JhdHRlcnlfY2hhcmdlX2ZpbGxfd2FybmluZyIgLz4KLSAgICA8aXRlbSBhbmRyb2lkOm1heExldmVsPSIxMDAiIGFuZHJvaWQ6ZHJhd2FibGU9IkBhbmRyb2lkOmRyYXdhYmxlL2JhdHRlcnlfY2hhcmdlX2ZpbGxfZnVsbCIgLz4KLTwvbGV2ZWwtbGlzdD4KLQpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlL3N0YXRfc3lzX2dwc19hY3F1aXJpbmdfYW5pbS54bWwgYi9jb3JlL3Jlcy9yZXMvZHJhd2FibGUvc3RhdF9zeXNfZ3BzX2FjcXVpcmluZ19hbmltLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTU0YzE5Yy4uMDAwMDAwMAotLS0gYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUvc3RhdF9zeXNfZ3BzX2FjcXVpcmluZ19hbmltLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08IS0tCi0vKgotKioKLSoqIENvcHlyaWdodCAyMDA4LCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0qKgotKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0qKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0qKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSoqCi0qKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0qKgotKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0qLwotLS0+Ci08YW5pbWF0aW9uLWxpc3QKLSAgICAgICAgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgotICAgICAgICBhbmRyb2lkOm9uZXNob3Q9ImZhbHNlIj4KLSAgICA8aXRlbSBhbmRyb2lkOmRyYXdhYmxlPSJAZHJhd2FibGUvc3RhdF9zeXNfZ3BzX2FjcXVpcmluZyIgYW5kcm9pZDpkdXJhdGlvbj0iNTAwIiAvPgotICAgIDxpdGVtIGFuZHJvaWQ6ZHJhd2FibGU9IkBkcmF3YWJsZS9zdGF0X3N5c19ncHNfb24iIGFuZHJvaWQ6ZHVyYXRpb249IjUwMCIgLz4KLTwvYW5pbWF0aW9uLWxpc3Q+CmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUvc3RhdHVzX2Jhcl9pdGVtX2JhY2tncm91bmQueG1sIGIvY29yZS9yZXMvcmVzL2RyYXdhYmxlL3N0YXR1c19iYXJfaXRlbV9iYWNrZ3JvdW5kLnhtbAppbmRleCAwODgzODliLi40MjVhNTAyIDEwMDY0NAotLS0gYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUvc3RhdHVzX2Jhcl9pdGVtX2JhY2tncm91bmQueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS9zdGF0dXNfYmFyX2l0ZW1fYmFja2dyb3VuZC54bWwKQEAgLTE2LDcgKzE2LDcgQEAKIAogPHNlbGVjdG9yIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCI+CiAgICAgPGl0ZW0gYW5kcm9pZDpzdGF0ZV9wcmVzc2VkPSJ0cnVlIgotICAgIAlhbmRyb2lkOmRyYXdhYmxlPSJAZHJhd2FibGUvc3RhdHVzX2Jhcl9pdGVtX2JhY2tncm91bmRfcHJlc3NlZCIgLz4KKyAgICAgICAgYW5kcm9pZDpkcmF3YWJsZT0iQGRyYXdhYmxlL3N0YXR1c19iYXJfaXRlbV9iYWNrZ3JvdW5kX3ByZXNzZWQiIC8+CiAgICAgPGl0ZW0gYW5kcm9pZDpzdGF0ZV9mb2N1c2VkPSJ0cnVlIiBhbmRyb2lkOnN0YXRlX3ByZXNzZWQ9ImZhbHNlIgogICAgICAgICBhbmRyb2lkOmRyYXdhYmxlPSJAZHJhd2FibGUvc3RhdHVzX2Jhcl9pdGVtX2JhY2tncm91bmRfZm9jdXMiIC8+CiAgICAgPGl0ZW0gYW5kcm9pZDpkcmF3YWJsZT0iQGRyYXdhYmxlL3N0YXR1c19iYXJfaXRlbV9iYWNrZ3JvdW5kX25vcm1hbCIgLz4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS9zdGF0dXNfaWNvbl9iYWNrZ3JvdW5kLnhtbCBiL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS9zdGF0dXNfaWNvbl9iYWNrZ3JvdW5kLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTg0NjE2NS4uMDAwMDAwMAotLS0gYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUvc3RhdHVzX2ljb25fYmFja2dyb3VuZC54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPCEtLQotLyogLy9kZXZpY2UvYXBwcy9jb21tb24vcmVzL2RyYXdhYmxlL3N0YXR1c19pY29uX2JhY2tncm91bmQueG1sCi0qKgotKiogQ29weXJpZ2h0IDIwMDcsIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSoqCi0qKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsgCi0qKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIAotKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0IAotKioKLSoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAgCi0qKgotKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZSAKLSoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsIAotKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIAotKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCAKLSoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotKi8KLS0tPgotCi08c2VsZWN0b3IgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIj4KLSAgICA8aXRlbSBhbmRyb2lkOnN0YXRlX3NlbGVjdGVkPSJ0cnVlIiBhbmRyb2lkOmRyYXdhYmxlPSJAZHJhd2FibGUvaWNvbl9oaWdobGlnaHRfcmVjdGFuZ2xlIiAvPgotICAgIDxpdGVtIGFuZHJvaWQ6ZHJhd2FibGU9IkBjb2xvci90cmFuc3BhcmVudCIgLz4KLTwvc2VsZWN0b3I+CmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvbGF5b3V0L2JhdHRlcnlfc3RhdHVzLnhtbCBiL2NvcmUvcmVzL3Jlcy9sYXlvdXQvYmF0dGVyeV9zdGF0dXMueG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Y2ZlYzA1Li4wMDAwMDAwCi0tLSBhL2NvcmUvcmVzL3Jlcy9sYXlvdXQvYmF0dGVyeV9zdGF0dXMueG1sCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTwhLS0gQ29weXJpZ2h0IChDKSAyMDA4IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLQotICAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAgCi0gICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gIAotICAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotLS0+Ci0KLTxMaW5lYXJMYXlvdXQgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgotICAgIGFuZHJvaWQ6aWQ9IkAraWQvZnJhbWUiCi0gICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IndyYXBfY29udGVudCIKLSAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKLSAgICBhbmRyb2lkOm9yaWVudGF0aW9uPSJ2ZXJ0aWNhbCIKLSAgICBhbmRyb2lkOmdyYXZpdHk9ImNlbnRlcl9ob3Jpem9udGFsIgotICAgID4KLSAgICAKLSAgICA8RnJhbWVMYXlvdXQKLSAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IjE0MXB4IiAKLSAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSIxODRweCIKLSAgICAgICAgYW5kcm9pZDpiYWNrZ3JvdW5kPSJAZHJhd2FibGUvYmF0dGVyeV9jaGFyZ2VfYmFja2dyb3VuZCIKLSAgICAgICAgYW5kcm9pZDpwYWRkaW5nVG9wPSIyNXB4IgotICAgICAgICBhbmRyb2lkOnBhZGRpbmdMZWZ0PSIxcHgiCi0gICAgICAgID4KLQotICAgICAgICA8TGluZWFyTGF5b3V0Ci0gICAgICAgICAgICBhbmRyb2lkOmlkPSJAK2lkL21ldGVyIgotICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKLSAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0ibWF0Y2hfcGFyZW50IgotICAgICAgICAgICAgYW5kcm9pZDpvcmllbnRhdGlvbj0idmVydGljYWwiCi0gICAgICAgICAgICA+Ci0KLSAgICAgICAgICAgIDxJbWFnZVZpZXcKLSAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgotICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0iMTVkaXAiCi0gICAgICAgICAgICAgICAgLz4KLSAgICAgICAgICAgIDxJbWFnZVZpZXcKLSAgICAgICAgICAgICAgICBhbmRyb2lkOmlkPSJAK2lkL3NwYWNlciIKLSAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0id3JhcF9jb250ZW50IgotICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgotICAgICAgICAgICAgICAgIC8+Ci0gICAgICAgICAgICA8SW1hZ2VWaWV3Ci0gICAgICAgICAgICAgICAgYW5kcm9pZDppZD0iQCtpZC9sZXZlbCIKLSAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0id3JhcF9jb250ZW50IgotICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgotICAgICAgICAgICAgLz4KLSAgICAgICAgCi0gICAgICAgIDwvTGluZWFyTGF5b3V0PgotCi0gICAgICAgIDxUZXh0VmlldyBhbmRyb2lkOmlkPSJAK2lkL2xldmVsX3BlcmNlbnQiCi0gICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgotICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJtYXRjaF9wYXJlbnQiCi0gICAgICAgICAgICBhbmRyb2lkOnRleHRTdHlsZT0iYm9sZCIKLSAgICAgICAgICAgIGFuZHJvaWQ6dGV4dFNpemU9IjQ4ZHAiCi0gICAgICAgICAgICBhbmRyb2lkOnRleHRDb2xvcj0iI2ZmZmZmZmZmIgotICAgICAgICAgICAgYW5kcm9pZDpncmF2aXR5PSJjZW50ZXIiCi0gICAgICAgICAgICAvPgotICAgIDwvRnJhbWVMYXlvdXQ+Ci0KLSAgICA8VGV4dFZpZXcgYW5kcm9pZDppZD0iQCtpZC9zdGF0dXMiCi0gICAgICAgIGFuZHJvaWQ6cGFkZGluZ1RvcD0iMzVkcCIKLSAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IndyYXBfY29udGVudCIKLSAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCi0gICAgICAgIGFuZHJvaWQ6c2luZ2xlTGluZT0idHJ1ZSIKLSAgICAgICAgYW5kcm9pZDp0ZXh0U3R5bGU9ImJvbGQiCi0gICAgICAgIGFuZHJvaWQ6dGV4dFNpemU9IjMwZHAiCi0gICAgICAgIGFuZHJvaWQ6dGV4dENvbG9yPSIjZmZmZmZmZmYiCi0gICAgICAgIGFuZHJvaWQ6Z3Jhdml0eT0iY2VudGVyX2hvcml6b250YWwiCi0gICAgICAgIGFuZHJvaWQ6dGV4dD0iQHN0cmluZy9iYXR0ZXJ5X3N0YXR1c19jaGFyZ2luZyIKLSAgICAgICAgLz4KLQotPC9MaW5lYXJMYXlvdXQ+Ci0KLQpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2xheW91dC9oZWF2eV93ZWlnaHRfc3dpdGNoZXIueG1sIGIvY29yZS9yZXMvcmVzL2xheW91dC9oZWF2eV93ZWlnaHRfc3dpdGNoZXIueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhY2YwMDkKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3Jlcy9yZXMvbGF5b3V0L2hlYXZ5X3dlaWdodF9zd2l0Y2hlci54bWwKQEAgLTAsMCArMSwxNDUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAKKyAgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy0tPgorCis8TGluZWFyTGF5b3V0IHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICBhbmRyb2lkOm9yaWVudGF0aW9uPSJ2ZXJ0aWNhbCIgYW5kcm9pZDpwYWRkaW5nPSI0ZHAiCisgICAgYW5kcm9pZDpncmF2aXR5PSJjZW50ZXJfaG9yaXpvbnRhbCIKKyAgICBhbmRyb2lkOmxheW91dF93aWR0aD0id3JhcF9jb250ZW50IiBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCI+CisKKyAgICA8VGV4dFZpZXcKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dlaWdodD0iMCIKKyAgICAgICAgYW5kcm9pZDpwYWRkaW5nQm90dG9tPSI4ZHAiCisgICAgICAgIGFuZHJvaWQ6dGV4dD0iQHN0cmluZy9oZWF2eV93ZWlnaHRfc3dpdGNoZXJfdGV4dCIvPgorCisgICAgPEltYWdlVmlldyBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgorICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKKyAgICAgICAgYW5kcm9pZDpzY2FsZVR5cGU9ImZpdFhZIgorICAgICAgICBhbmRyb2lkOnNyYz0iP2FuZHJvaWQ6bGlzdERpdmlkZXIiIC8+CisgICAgICAgICAgICAKKyAgICA8TGluZWFyTGF5b3V0IGFuZHJvaWQ6aWQ9IkAraWQvc3dpdGNoX29sZCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisgICAgICAgIGFuZHJvaWQ6bWluSGVpZ2h0PSI/YW5kcm9pZDphdHRyL2xpc3RQcmVmZXJyZWRJdGVtSGVpZ2h0IgorICAgICAgICBhbmRyb2lkOm9yaWVudGF0aW9uPSJob3Jpem9udGFsIgorICAgICAgICBhbmRyb2lkOmJhY2tncm91bmQ9IkBhbmRyb2lkOmRyYXdhYmxlL2xpc3Rfc2VsZWN0b3JfYmFja2dyb3VuZCIKKyAgICAgICAgYW5kcm9pZDpwYWRkaW5nUmlnaHQ9IjNkaXAiCisgICAgICAgIGFuZHJvaWQ6cGFkZGluZ0xlZnQ9IjNkaXAiCisgICAgICAgIGFuZHJvaWQ6cGFkZGluZ1RvcD0iNWRpcCIKKyAgICAgICAgYW5kcm9pZDpwYWRkaW5nQm90dG9tPSIxNGRpcCIKKyAgICAgICAgYW5kcm9pZDpncmF2aXR5PSJjZW50ZXJfdmVydGljYWwiCisgICAgICAgIGFuZHJvaWQ6Zm9jdXNhYmxlPSJ0cnVlIiA+CisgICAgCisgICAgICAgIDxJbWFnZVZpZXcgYW5kcm9pZDppZD0iQCtpZC9vbGRfYXBwX2ljb24iCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0iQGFuZHJvaWQ6ZGltZW4vYXBwX2ljb25fc2l6ZSIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0iQGFuZHJvaWQ6ZGltZW4vYXBwX2ljb25fc2l6ZSIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X21hcmdpblJpZ2h0PSIxMWRpcCIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2dyYXZpdHk9ImNlbnRlcl92ZXJ0aWNhbCIKKyAgICAgICAgICAgIGFuZHJvaWQ6c2NhbGVUeXBlPSJmaXRDZW50ZXIiLz4KKyAgICAKKyAgICAgICAgPExpbmVhckxheW91dAorICAgICAgICAgICAgYW5kcm9pZDpvcmllbnRhdGlvbj0idmVydGljYWwiCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisgICAgICAgICAgICBhbmRyb2lkOmR1cGxpY2F0ZVBhcmVudFN0YXRlPSJ0cnVlIiA+CisgICAgICAgICAgICA8VGV4dFZpZXcgYW5kcm9pZDppZD0iQCtpZC9vbGRfYXBwX2FjdGlvbiIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0id3JhcF9jb250ZW50IgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6dGV4dEFwcGVhcmFuY2U9Ij9hbmRyb2lkOmF0dHIvdGV4dEFwcGVhcmFuY2VNZWRpdW0iCisgICAgICAgICAgICAgICAgYW5kcm9pZDp0ZXh0U3R5bGU9ImJvbGQiCisgICAgICAgICAgICAgICAgYW5kcm9pZDpzaW5nbGVMaW5lPSJ0cnVlIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X21hcmdpbkJvdHRvbT0iMmRpcCIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmR1cGxpY2F0ZVBhcmVudFN0YXRlPSJ0cnVlIiAvPgorICAgICAgICAgICAgPFRleHRWaWV3IGFuZHJvaWQ6aWQ9IkAraWQvb2xkX2FwcF9kZXNjcmlwdGlvbiIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9tYXJnaW5Ub3A9Ii00ZGlwIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2dyYXZpdHk9ImNlbnRlcl92ZXJ0aWNhbCIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0id3JhcF9jb250ZW50IgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6dGV4dEFwcGVhcmFuY2U9Ij9hbmRyb2lkOmF0dHIvdGV4dEFwcGVhcmFuY2VTbWFsbCIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmR1cGxpY2F0ZVBhcmVudFN0YXRlPSJ0cnVlIiAvPgorICAgICAgICA8L0xpbmVhckxheW91dD4KKyAgICA8L0xpbmVhckxheW91dD4KKworICAgIDxJbWFnZVZpZXcgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisgICAgICAgIGFuZHJvaWQ6c2NhbGVUeXBlPSJmaXRYWSIKKyAgICAgICAgYW5kcm9pZDpzcmM9Ij9hbmRyb2lkOmxpc3REaXZpZGVyIiAvPgorICAgICAgICAgICAgCisgICAgPExpbmVhckxheW91dCBhbmRyb2lkOmlkPSJAK2lkL3N3aXRjaF9uZXciCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgICAgICBhbmRyb2lkOm1pbkhlaWdodD0iP2FuZHJvaWQ6YXR0ci9saXN0UHJlZmVycmVkSXRlbUhlaWdodCIKKyAgICAgICAgYW5kcm9pZDpvcmllbnRhdGlvbj0iaG9yaXpvbnRhbCIKKyAgICAgICAgYW5kcm9pZDpiYWNrZ3JvdW5kPSJAYW5kcm9pZDpkcmF3YWJsZS9saXN0X3NlbGVjdG9yX2JhY2tncm91bmQiCisgICAgICAgIGFuZHJvaWQ6cGFkZGluZ1JpZ2h0PSIzZGlwIgorICAgICAgICBhbmRyb2lkOnBhZGRpbmdMZWZ0PSIzZGlwIgorICAgICAgICBhbmRyb2lkOnBhZGRpbmdUb3A9IjVkaXAiCisgICAgICAgIGFuZHJvaWQ6cGFkZGluZ0JvdHRvbT0iOGRpcCIKKyAgICAgICAgYW5kcm9pZDpncmF2aXR5PSJjZW50ZXJfdmVydGljYWwiCisgICAgICAgIGFuZHJvaWQ6Zm9jdXNhYmxlPSJ0cnVlIiA+CisgICAgCisgICAgICAgIDxJbWFnZVZpZXcgYW5kcm9pZDppZD0iQCtpZC9uZXdfYXBwX2ljb24iCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0iQGFuZHJvaWQ6ZGltZW4vYXBwX2ljb25fc2l6ZSIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0iQGFuZHJvaWQ6ZGltZW4vYXBwX2ljb25fc2l6ZSIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X21hcmdpblJpZ2h0PSIxMWRpcCIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2dyYXZpdHk9ImNlbnRlcl92ZXJ0aWNhbCIKKyAgICAgICAgICAgIGFuZHJvaWQ6c2NhbGVUeXBlPSJmaXRDZW50ZXIiLz4KKyAgICAKKyAgICAgICAgPExpbmVhckxheW91dAorICAgICAgICAgICAgYW5kcm9pZDpvcmllbnRhdGlvbj0idmVydGljYWwiCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisgICAgICAgICAgICBhbmRyb2lkOmR1cGxpY2F0ZVBhcmVudFN0YXRlPSJ0cnVlIiA+CisgICAgICAgICAgICA8VGV4dFZpZXcgYW5kcm9pZDppZD0iQCtpZC9uZXdfYXBwX2FjdGlvbiIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0id3JhcF9jb250ZW50IgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6dGV4dEFwcGVhcmFuY2U9Ij9hbmRyb2lkOmF0dHIvdGV4dEFwcGVhcmFuY2VNZWRpdW0iCisgICAgICAgICAgICAgICAgYW5kcm9pZDp0ZXh0U3R5bGU9ImJvbGQiCisgICAgICAgICAgICAgICAgYW5kcm9pZDpzaW5nbGVMaW5lPSJ0cnVlIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X21hcmdpbkJvdHRvbT0iMmRpcCIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmR1cGxpY2F0ZVBhcmVudFN0YXRlPSJ0cnVlIiAvPgorICAgICAgICAgICAgPFRleHRWaWV3IGFuZHJvaWQ6aWQ9IkAraWQvbmV3X2FwcF9kZXNjcmlwdGlvbiIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9tYXJnaW5Ub3A9Ii00ZGlwIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2dyYXZpdHk9ImNlbnRlcl92ZXJ0aWNhbCIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0id3JhcF9jb250ZW50IgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6dGV4dEFwcGVhcmFuY2U9Ij9hbmRyb2lkOmF0dHIvdGV4dEFwcGVhcmFuY2VTbWFsbCIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmR1cGxpY2F0ZVBhcmVudFN0YXRlPSJ0cnVlIiAvPgorICAgICAgICA8L0xpbmVhckxheW91dD4KKyAgICA8L0xpbmVhckxheW91dD4KKworICAgIDxJbWFnZVZpZXcgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisgICAgICAgIGFuZHJvaWQ6c2NhbGVUeXBlPSJmaXRYWSIKKyAgICAgICAgYW5kcm9pZDpzcmM9Ij9hbmRyb2lkOmxpc3REaXZpZGVyIiAvPgorCisgICAgPFRleHRWaWV3IGFuZHJvaWQ6aWQ9IkAraWQvY2FuY2VsIgorICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgorICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKKyAgICAgICAgYW5kcm9pZDptaW5IZWlnaHQ9Ij9hbmRyb2lkOmF0dHIvbGlzdFByZWZlcnJlZEl0ZW1IZWlnaHQiCisgICAgICAgIGFuZHJvaWQ6dGV4dEFwcGVhcmFuY2U9Ij9hbmRyb2lkOmF0dHIvdGV4dEFwcGVhcmFuY2VNZWRpdW0iCisgICAgICAgIGFuZHJvaWQ6YmFja2dyb3VuZD0iQGFuZHJvaWQ6ZHJhd2FibGUvbGlzdF9zZWxlY3Rvcl9iYWNrZ3JvdW5kIgorICAgICAgICBhbmRyb2lkOnBhZGRpbmdSaWdodD0iNmRpcCIKKyAgICAgICAgYW5kcm9pZDpwYWRkaW5nTGVmdD0iNmRpcCIKKyAgICAgICAgYW5kcm9pZDpwYWRkaW5nVG9wPSI1ZGlwIgorICAgICAgICBhbmRyb2lkOnBhZGRpbmdCb3R0b209IjhkaXAiCisgICAgICAgIGFuZHJvaWQ6dGV4dFN0eWxlPSJib2xkIgorICAgICAgICBhbmRyb2lkOnNpbmdsZUxpbmU9InRydWUiCisgICAgICAgIGFuZHJvaWQ6Z3Jhdml0eT0iY2VudGVyIgorICAgICAgICBhbmRyb2lkOmZvY3VzYWJsZT0idHJ1ZSIKKyAgICAgICAgYW5kcm9pZDp0ZXh0PSJAc3RyaW5nL2NhbmNlbCIgLz4KKworPC9MaW5lYXJMYXlvdXQ+CmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvbGF5b3V0L2tleWd1YXJkX3NjcmVlbl90YWJfdW5sb2NrLnhtbCBiL2NvcmUvcmVzL3Jlcy9sYXlvdXQva2V5Z3VhcmRfc2NyZWVuX3RhYl91bmxvY2sueG1sCmluZGV4IDIwMGExYjIuLjZlZGJkZjkgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy9sYXlvdXQva2V5Z3VhcmRfc2NyZWVuX3RhYl91bmxvY2sueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy9sYXlvdXQva2V5Z3VhcmRfc2NyZWVuX3RhYl91bmxvY2sueG1sCkBAIC00MSw3ICs0MSw2IEBACiAgICAgICAgIGFuZHJvaWQ6ZWxsaXBzaXplPSJtYXJxdWVlIgogICAgICAgICBhbmRyb2lkOmdyYXZpdHk9InJpZ2h0fGJvdHRvbSIKICAgICAgICAgYW5kcm9pZDp0ZXh0QXBwZWFyYW5jZT0iP2FuZHJvaWQ6YXR0ci90ZXh0QXBwZWFyYW5jZU1lZGl1bSIKLSAgICAgICAgYW5kcm9pZDp0ZXh0U2l6ZT0iMjJzcCIKICAgICAgICAgLz4KIAogICAgIDwhLS0gImVtZXJnZW5jeSBjYWxscyBvbmx5IiBzaG93biB3aGVuIHNpbSBpcyBtaXNzaW5nIG9yIFBVS2QgLS0+CkBAIC02NSw3ICs2NCw3IEBACiAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2JlbG93PSJAaWQvY2FycmllciIKICAgICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luVG9wPSI1MmRpcCIKICAgICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luTGVmdD0iMjBkaXAiCi0gICAgICAgIGFuZHJvaWQ6cGFkZGluZ0JvdHRvbT0iOGRpcCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luQm90dG9tPSI4ZGlwIgogICAgICAgICA+CiAKICAgICAgICAgPFRleHRWaWV3IGFuZHJvaWQ6aWQ9IkAraWQvdGltZURpc3BsYXkiCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvbGF5b3V0L2tleWd1YXJkX3NjcmVlbl90YWJfdW5sb2NrX2xhbmQueG1sIGIvY29yZS9yZXMvcmVzL2xheW91dC9rZXlndWFyZF9zY3JlZW5fdGFiX3VubG9ja19sYW5kLnhtbAppbmRleCAyMzUwNWMyLi5lNjZiNDkyIDEwMDY0NAotLS0gYS9jb3JlL3Jlcy9yZXMvbGF5b3V0L2tleWd1YXJkX3NjcmVlbl90YWJfdW5sb2NrX2xhbmQueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy9sYXlvdXQva2V5Z3VhcmRfc2NyZWVuX3RhYl91bmxvY2tfbGFuZC54bWwKQEAgLTQ2LDcgKzQ2LDYgQEAKICAgICAgICAgICAgIGFuZHJvaWQ6ZWxsaXBzaXplPSJtYXJxdWVlIgogICAgICAgICAgICAgYW5kcm9pZDpncmF2aXR5PSJyaWdodHxib3R0b20iCiAgICAgICAgICAgICBhbmRyb2lkOnRleHRBcHBlYXJhbmNlPSI/YW5kcm9pZDphdHRyL3RleHRBcHBlYXJhbmNlTWVkaXVtIgotICAgICAgICAgICAgYW5kcm9pZDp0ZXh0U2l6ZT0iMjJzcCIKICAgICAgICAgICAgIC8+CiAKICAgICAgICAgPCEtLSAiZW1lcmdlbmN5IGNhbGxzIG9ubHkiIHNob3duIHdoZW4gc2ltIGlzIG1pc3Npbmcgb3IgUFVLZCAtLT4KQEAgLTY2LDcgKzY1LDcgQEAKICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgogICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfYmVsb3c9IkBpZC9jYXJyaWVyIgogICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luVG9wPSI1NmRpcCIKLSAgICAgICAgICAgIGFuZHJvaWQ6cGFkZGluZ0JvdHRvbT0iOGRpcCIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X21hcmdpbkJvdHRvbT0iOGRpcCIKICAgICAgICAgICAgID4KIAogICAgICAgICAgICAgPFRleHRWaWV3IGFuZHJvaWQ6aWQ9IkAraWQvdGltZURpc3BsYXkiCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvbGF5b3V0L2tleWd1YXJkX3NjcmVlbl91bmxvY2tfbGFuZHNjYXBlLnhtbCBiL2NvcmUvcmVzL3Jlcy9sYXlvdXQva2V5Z3VhcmRfc2NyZWVuX3VubG9ja19sYW5kc2NhcGUueG1sCmluZGV4IGI1Y2Q0NDIuLmMxYjQwNmYgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy9sYXlvdXQva2V5Z3VhcmRfc2NyZWVuX3VubG9ja19sYW5kc2NhcGUueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy9sYXlvdXQva2V5Z3VhcmRfc2NyZWVuX3VubG9ja19sYW5kc2NhcGUueG1sCkBAIC01OCwxOSArNTgsMTggQEAKICAgICAgICAgICAgIGFuZHJvaWQ6ZWxsaXBzaXplPSJtYXJxdWVlIgogICAgICAgICAgICAgYW5kcm9pZDpncmF2aXR5PSJyaWdodHxib3R0b20iCiAgICAgICAgICAgICAvPgotCiAgICAgICAgIDxjb20uYW5kcm9pZC5pbnRlcm5hbC53aWRnZXQuRGlnaXRhbENsb2NrIGFuZHJvaWQ6aWQ9IkAraWQvdGltZSIKICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJ3cmFwX2NvbnRlbnQiCiAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2FsaWduUGFyZW50VG9wPSJ0cnVlIgogICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfYWxpZ25QYXJlbnRMZWZ0PSJ0cnVlIgogICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luVG9wPSI4ZGlwIgotICAgICAgICAgICAgYW5kcm9pZDpwYWRkaW5nQm90dG9tPSI4ZGlwIgogICAgICAgICAgICAgPgogCiAgICAgICAgICAgICA8VGV4dFZpZXcgYW5kcm9pZDppZD0iQCtpZC90aW1lRGlzcGxheSIKICAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0id3JhcF9jb250ZW50IgogICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6Z3Jhdml0eT0iYm90dG9tIgogICAgICAgICAgICAgICAgIGFuZHJvaWQ6c2luZ2xlTGluZT0idHJ1ZSIKICAgICAgICAgICAgICAgICBhbmRyb2lkOmVsbGlwc2l6ZT0ibm9uZSIKICAgICAgICAgICAgICAgICBhbmRyb2lkOnRleHRTaXplPSI3MnNwIgpAQCAtODUsOSArODQsOCBAQAogCiAgICAgICAgICAgICA8VGV4dFZpZXcgYW5kcm9pZDppZD0iQCtpZC9hbV9wbSIKICAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0id3JhcF9jb250ZW50IgotICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgotICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3RvUmlnaHRPZj0iQGlkL3RpbWVEaXNwbGF5IgotICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2FsaWduQmFzZWxpbmU9IkBpZC90aW1lRGlzcGxheSIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9Im1hdGNoX3BhcmVudCIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmdyYXZpdHk9ImJvdHRvbSIKICAgICAgICAgICAgICAgICBhbmRyb2lkOnNpbmdsZUxpbmU9InRydWUiCiAgICAgICAgICAgICAgICAgYW5kcm9pZDplbGxpcHNpemU9Im5vbmUiCiAgICAgICAgICAgICAgICAgYW5kcm9pZDp0ZXh0U2l6ZT0iMjJzcCIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9sYXlvdXQva2V5Z3VhcmRfc2NyZWVuX3VubG9ja19wb3J0cmFpdC54bWwgYi9jb3JlL3Jlcy9yZXMvbGF5b3V0L2tleWd1YXJkX3NjcmVlbl91bmxvY2tfcG9ydHJhaXQueG1sCmluZGV4IDlhYzBhNDcuLjc0YTBlZWUgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy9sYXlvdXQva2V5Z3VhcmRfc2NyZWVuX3VubG9ja19wb3J0cmFpdC54bWwKKysrIGIvY29yZS9yZXMvcmVzL2xheW91dC9rZXlndWFyZF9zY3JlZW5fdW5sb2NrX3BvcnRyYWl0LnhtbApAQCAtNTUsMTIgKzU1LDEyIEBACiAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9hbGlnblBhcmVudFRvcD0idHJ1ZSIKICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X21hcmdpblRvcD0iMTVkaXAiCiAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9tYXJnaW5MZWZ0PSIyMGRpcCIKLSAgICAgICAgICAgIGFuZHJvaWQ6cGFkZGluZ0JvdHRvbT0iOGRpcCIKICAgICAgICAgICAgID4KIAogICAgICAgICAgICAgPFRleHRWaWV3IGFuZHJvaWQ6aWQ9IkAraWQvdGltZURpc3BsYXkiCiAgICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IndyYXBfY29udGVudCIKICAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmdyYXZpdHk9ImJvdHRvbSIKICAgICAgICAgICAgICAgICBhbmRyb2lkOnNpbmdsZUxpbmU9InRydWUiCiAgICAgICAgICAgICAgICAgYW5kcm9pZDplbGxpcHNpemU9Im5vbmUiCiAgICAgICAgICAgICAgICAgYW5kcm9pZDp0ZXh0U2l6ZT0iNTZzcCIKQEAgLTc0LDkgKzc0LDggQEAKIAogICAgICAgICAgICAgPFRleHRWaWV3IGFuZHJvaWQ6aWQ9IkAraWQvYW1fcG0iCiAgICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IndyYXBfY29udGVudCIKLSAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKLSAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF90b1JpZ2h0T2Y9IkBpZC90aW1lRGlzcGxheSIKLSAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9hbGlnbkJhc2VsaW5lPSJAaWQvdGltZURpc3BsYXkiCisgICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJtYXRjaF9wYXJlbnQiCisgICAgICAgICAgICAgICAgYW5kcm9pZDpncmF2aXR5PSJib3R0b20iCiAgICAgICAgICAgICAgICAgYW5kcm9pZDpzaW5nbGVMaW5lPSJ0cnVlIgogICAgICAgICAgICAgICAgIGFuZHJvaWQ6ZWxsaXBzaXplPSJub25lIgogICAgICAgICAgICAgICAgIGFuZHJvaWQ6dGV4dFNpemU9IjE4c3AiCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvbGF5b3V0L3N0YXR1c19iYXIueG1sIGIvY29yZS9yZXMvcmVzL2xheW91dC9zdGF0dXNfYmFyLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZThkODg2Ni4uMDAwMDAwMAotLS0gYS9jb3JlL3Jlcy9yZXMvbGF5b3V0L3N0YXR1c19iYXIueG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAKLTw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Ci08IS0tCi0vKiBhcHBzL2NvbW1vbi9hc3NldHMvZGVmYXVsdC9kZWZhdWx0L3NraW5zL1N0YXR1c0Jhci54bWwKLSoqCi0qKiBDb3B5cmlnaHQgMjAwNiwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotKioKLSoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOyAKLSoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gCi0qKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQgCi0qKgotKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMCAKLSoqCi0qKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlIAotKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywgCi0qKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gCi0qKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIAotKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0qLwotLS0+Ci0KLTwhLS0gICAgYW5kcm9pZDpiYWNrZ3JvdW5kPSJAZHJhd2FibGUvc3RhdHVzX2Jhcl9jbG9zZWRfZGVmYXVsdF9iYWNrZ3JvdW5kIiAtLT4KLTxjb20uYW5kcm9pZC5zZXJ2ZXIuc3RhdHVzLlN0YXR1c0JhclZpZXcgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIiAKLSAgICBhbmRyb2lkOmJhY2tncm91bmQ9IkBkcmF3YWJsZS9zdGF0dXNiYXJfYmFja2dyb3VuZCIKLSAgICBhbmRyb2lkOm9yaWVudGF0aW9uPSJ2ZXJ0aWNhbCIKLSAgICBhbmRyb2lkOmZvY3VzYWJsZT0idHJ1ZSIKLSAgICBhbmRyb2lkOmRlc2NlbmRhbnRGb2N1c2FiaWxpdHk9ImFmdGVyRGVzY2VuZGFudHMiCi0gICAgPgotCi0gICAgPExpbmVhckxheW91dCBhbmRyb2lkOmlkPSJAK2lkL2ljb25zIgotICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgotICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9Im1hdGNoX3BhcmVudCIKLSAgICAgICAgYW5kcm9pZDpvcmllbnRhdGlvbj0iaG9yaXpvbnRhbCI+Ci0gICAgICAgICAgICAKLSAgICAgICAgPGNvbS5hbmRyb2lkLnNlcnZlci5zdGF0dXMuSWNvbk1lcmdlciBhbmRyb2lkOmlkPSJAK2lkL25vdGlmaWNhdGlvbkljb25zIgotICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IjBkaXAiCi0gICAgICAgICAgICBhbmRyb2lkOmxheW91dF93ZWlnaHQ9IjEiCi0gICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9Im1hdGNoX3BhcmVudCIKLSAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2FsaWduUGFyZW50TGVmdD0idHJ1ZSIKLSAgICAgICAgICAgIGFuZHJvaWQ6cGFkZGluZ0xlZnQ9IjZkaXAiCi0gICAgICAgICAgICBhbmRyb2lkOmdyYXZpdHk9ImNlbnRlcl92ZXJ0aWNhbCIKLSAgICAgICAgICAgIGFuZHJvaWQ6b3JpZW50YXRpb249Imhvcml6b250YWwiLz4gIAotICAgICAgICAgICAgCi0gICAgICAgIDxMaW5lYXJMYXlvdXQgYW5kcm9pZDppZD0iQCtpZC9zdGF0dXNJY29ucyIKLSAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJ3cmFwX2NvbnRlbnQiCi0gICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9Im1hdGNoX3BhcmVudCIKLSAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2FsaWduUGFyZW50UmlnaHQ9InRydWUiCi0gICAgICAgICAgICBhbmRyb2lkOnBhZGRpbmdSaWdodD0iNmRpcCIKLSAgICAgICAgICAgIGFuZHJvaWQ6Z3Jhdml0eT0iY2VudGVyX3ZlcnRpY2FsIgotICAgICAgICAgICAgYW5kcm9pZDpvcmllbnRhdGlvbj0iaG9yaXpvbnRhbCIvPiAgICAKLSAgICA8L0xpbmVhckxheW91dD4KLSAgICAgICAgCi0gICAgPExpbmVhckxheW91dCBhbmRyb2lkOmlkPSJAK2lkL3RpY2tlciIKLSAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKLSAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJtYXRjaF9wYXJlbnQiCi0gICAgICAgIGFuZHJvaWQ6cGFkZGluZ0xlZnQ9IjZkaXAiCi0gICAgICAgIGFuZHJvaWQ6YW5pbWF0aW9uQ2FjaGU9ImZhbHNlIgotICAgICAgICBhbmRyb2lkOm9yaWVudGF0aW9uPSJob3Jpem9udGFsIiA+Ci0gICAgICAgIDxJbWFnZVN3aXRjaGVyIGFuZHJvaWQ6aWQ9IkAraWQvdGlja2VySWNvbiIKLSAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJ3cmFwX2NvbnRlbnQiCi0gICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9Im1hdGNoX3BhcmVudCIKLSAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X21hcmdpblJpZ2h0PSI4ZGlwIgotICAgICAgICAgICAgPgotICAgICAgICAgICAgPGNvbS5hbmRyb2lkLnNlcnZlci5zdGF0dXMuQW5pbWF0ZWRJbWFnZVZpZXcKLSAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0iMjVkaXAiCi0gICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSIyNWRpcCIKLSAgICAgICAgICAgICAgICAvPgotICAgICAgICAgICAgPGNvbS5hbmRyb2lkLnNlcnZlci5zdGF0dXMuQW5pbWF0ZWRJbWFnZVZpZXcKLSAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0iMjVkaXAiCi0gICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSIyNWRpcCIKLSAgICAgICAgICAgICAgICAvPgotICAgICAgICA8L0ltYWdlU3dpdGNoZXI+Ci0gICAgICAgIDxjb20uYW5kcm9pZC5zZXJ2ZXIuc3RhdHVzLlRpY2tlclZpZXcgYW5kcm9pZDppZD0iQCtpZC90aWNrZXJUZXh0IgotICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IjBkaXAiCi0gICAgICAgICAgICBhbmRyb2lkOmxheW91dF93ZWlnaHQ9IjEiCi0gICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKLSAgICAgICAgICAgIGFuZHJvaWQ6cGFkZGluZ1RvcD0iMmRpcCIKLSAgICAgICAgICAgIGFuZHJvaWQ6cGFkZGluZ1JpZ2h0PSIxMGRpcCI+Ci0gICAgICAgICAgICA8VGV4dFZpZXcKLSAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgotICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgotICAgICAgICAgICAgICAgIGFuZHJvaWQ6c2luZ2xlTGluZT0idHJ1ZSIKLSAgICAgICAgICAgICAgICBhbmRyb2lkOnRleHRDb2xvcj0iI2ZmMDAwMDAwIiAvPgotICAgICAgICAgICAgPFRleHRWaWV3Ci0gICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKLSAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKLSAgICAgICAgICAgICAgICBhbmRyb2lkOnNpbmdsZUxpbmU9InRydWUiCi0gICAgICAgICAgICAgICAgYW5kcm9pZDp0ZXh0Q29sb3I9IiNmZjAwMDAwMCIgLz4KLSAgICAgICAgPC9jb20uYW5kcm9pZC5zZXJ2ZXIuc3RhdHVzLlRpY2tlclZpZXc+Ci0gICAgPC9MaW5lYXJMYXlvdXQ+Ci0KLSAgICA8Y29tLmFuZHJvaWQuc2VydmVyLnN0YXR1cy5EYXRlVmlldyBhbmRyb2lkOmlkPSJAK2lkL2RhdGUiCi0gICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJ3cmFwX2NvbnRlbnQiCi0gICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0ibWF0Y2hfcGFyZW50IgotICAgICAgICBhbmRyb2lkOnNpbmdsZUxpbmU9InRydWUiCi0gICAgICAgIGFuZHJvaWQ6dGV4dFNpemU9IjE2c3AiCi0gICAgICAgIGFuZHJvaWQ6dGV4dFN0eWxlPSJib2xkIgotICAgICAgICBhbmRyb2lkOmdyYXZpdHk9ImNlbnRlcl92ZXJ0aWNhbHxsZWZ0IgotICAgICAgICBhbmRyb2lkOnBhZGRpbmdMZWZ0PSI2cHgiCi0gICAgICAgIGFuZHJvaWQ6cGFkZGluZ1JpZ2h0PSI2cHgiCi0gICAgICAgIGFuZHJvaWQ6dGV4dENvbG9yPSI/YW5kcm9pZDphdHRyL3RleHRDb2xvclByaW1hcnlJbnZlcnNlIgotICAgICAgICBhbmRyb2lkOmJhY2tncm91bmQ9IkBkcmF3YWJsZS9zdGF0dXNiYXJfYmFja2dyb3VuZCIKLSAgICAgICAgLz4KLTwvY29tLmFuZHJvaWQuc2VydmVyLnN0YXR1cy5TdGF0dXNCYXJWaWV3PgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2xheW91dC9zdGF0dXNfYmFyX2V4cGFuZGVkLnhtbCBiL2NvcmUvcmVzL3Jlcy9sYXlvdXQvc3RhdHVzX2Jhcl9leHBhbmRlZC54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwMTM4YTcuLjAwMDAwMDAKLS0tIGEvY29yZS9yZXMvcmVzL2xheW91dC9zdGF0dXNfYmFyX2V4cGFuZGVkLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDE0NCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPCEtLQotLyogYXBwcy9jb21tb24vYXNzZXRzL2RlZmF1bHQvZGVmYXVsdC9za2lucy9TdGF0dXNCYXIueG1sCi0qKgotKiogQ29weXJpZ2h0IDIwMDYsIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSoqCi0qKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsgCi0qKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIAotKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0IAotKioKLSoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAgCi0qKgotKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZSAKLSoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsIAotKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIAotKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCAKLSoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotKi8KLS0tPgotCi08Y29tLmFuZHJvaWQuc2VydmVyLnN0YXR1cy5FeHBhbmRlZFZpZXcgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgotICAgIGFuZHJvaWQ6b3JpZW50YXRpb249InZlcnRpY2FsIgotICAgIGFuZHJvaWQ6Zm9jdXNhYmxlPSJ0cnVlIgotICAgIGFuZHJvaWQ6ZGVzY2VuZGFudEZvY3VzYWJpbGl0eT0iYWZ0ZXJEZXNjZW5kYW50cyIKLSAgICA+Ci0KLSAgICA8TGluZWFyTGF5b3V0Ci0gICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCi0gICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgotICAgICAgICBhbmRyb2lkOm9yaWVudGF0aW9uPSJob3Jpem9udGFsIgotICAgICAgICBhbmRyb2lkOnBhZGRpbmdUb3A9IjNkcCIKLSAgICAgICAgYW5kcm9pZDpwYWRkaW5nQm90dG9tPSI1ZHAiCi0gICAgICAgIGFuZHJvaWQ6cGFkZGluZ1JpZ2h0PSIzZHAiCi0gICAgICAgIGFuZHJvaWQ6YmFja2dyb3VuZD0iQGRyYXdhYmxlL3N0YXR1c19iYXJfaGVhZGVyX2JhY2tncm91bmQiCi0gICAgICAgID4KLSAgICAgICAgPExpbmVhckxheW91dAotICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IjBkcCIKLSAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgotICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2VpZ2h0PSIxIgotICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luVG9wPSIxZHAiCi0gICAgICAgICAgICBhbmRyb2lkOmxheW91dF9tYXJnaW5MZWZ0PSI1ZHAiCi0gICAgICAgICAgICBhbmRyb2lkOmxheW91dF9ncmF2aXR5PSJjZW50ZXJfdmVydGljYWwiCi0gICAgICAgICAgICBhbmRyb2lkOnBhZGRpbmdCb3R0b209IjFkcCIKLSAgICAgICAgICAgIGFuZHJvaWQ6b3JpZW50YXRpb249InZlcnRpY2FsIgotICAgICAgICAgICAgPgotICAgICAgICAgICAgICAgIDxUZXh0VmlldyBhbmRyb2lkOmlkPSJAK2lkL3BsbW5MYWJlbCIKLSAgICAgICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IndyYXBfY29udGVudCIKLSAgICAgICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCi0gICAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2dyYXZpdHk9ImNlbnRlcl92ZXJ0aWNhbCIKLSAgICAgICAgICAgICAgICAgICAgYW5kcm9pZDp0ZXh0QXBwZWFyYW5jZT0iP2FuZHJvaWQ6YXR0ci90ZXh0QXBwZWFyYW5jZUxhcmdlIgotICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOnRleHRDb2xvcj0iP2FuZHJvaWQ6YXR0ci90ZXh0Q29sb3JTZWNvbmRhcnlJbnZlcnNlIgotICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOnBhZGRpbmdMZWZ0PSI0ZHAiCi0gICAgICAgICAgICAgICAgICAgIC8+Ci0gICAgICAgICAgICAgICAgPFRleHRWaWV3IGFuZHJvaWQ6aWQ9IkAraWQvc3BuTGFiZWwiCi0gICAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJ3cmFwX2NvbnRlbnQiCi0gICAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgotICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9ncmF2aXR5PSJjZW50ZXJfdmVydGljYWwiCi0gICAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6dGV4dEFwcGVhcmFuY2U9Ij9hbmRyb2lkOmF0dHIvdGV4dEFwcGVhcmFuY2VMYXJnZSIKLSAgICAgICAgICAgICAgICAgICAgYW5kcm9pZDp0ZXh0Q29sb3I9Ij9hbmRyb2lkOmF0dHIvdGV4dENvbG9yU2Vjb25kYXJ5SW52ZXJzZSIKLSAgICAgICAgICAgICAgICAgICAgYW5kcm9pZDpwYWRkaW5nTGVmdD0iNGRwIgotICAgICAgICAgICAgICAgICAgICAvPgotICAgICAgICA8L0xpbmVhckxheW91dD4KLSAgICAgICAgPFRleHRWaWV3IGFuZHJvaWQ6aWQ9IkAraWQvY2xlYXJfYWxsX2J1dHRvbiIKLSAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJ3cmFwX2NvbnRlbnQiCi0gICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKLSAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2dyYXZpdHk9ImNlbnRlcl92ZXJ0aWNhbCIKLSAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X21hcmdpblRvcD0iNGRwIgotICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luQm90dG9tPSIxZHAiCi0gICAgICAgICAgICBhbmRyb2lkOnRleHRTaXplPSIxNHNwIgotICAgICAgICAgICAgYW5kcm9pZDp0ZXh0Q29sb3I9IiNmZjAwMDAwMCIKLSAgICAgICAgICAgIGFuZHJvaWQ6dGV4dD0iQHN0cmluZy9zdGF0dXNfYmFyX2NsZWFyX2FsbF9idXR0b24iCi0gICAgICAgICAgICBzdHlsZT0iP2FuZHJvaWQ6YXR0ci9idXR0b25TdHlsZSIKLSAgICAgICAgICAgIGFuZHJvaWQ6cGFkZGluZ0xlZnQ9IjE1ZHAiCi0gICAgICAgICAgICBhbmRyb2lkOnBhZGRpbmdSaWdodD0iMTVkcCIKLSAgICAgICAgICAgIGFuZHJvaWQ6YmFja2dyb3VuZD0iQGRyYXdhYmxlL2J0bl9kZWZhdWx0X3NtYWxsIgotICAgICAgICAgICAgLz4KLSAgICA8L0xpbmVhckxheW91dD4KLQotICAgIDxGcmFtZUxheW91dAotICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IiAKLSAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCi0gICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dlaWdodD0iMSIKLSAgICAgICAgPgotICAgICAgICA8U2Nyb2xsVmlldwotICAgICAgICAgICAgYW5kcm9pZDppZD0iQCtpZC9zY3JvbGwiCi0gICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgotICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJtYXRjaF9wYXJlbnQiCi0gICAgICAgICAgICBhbmRyb2lkOmZhZGluZ0VkZ2U9Im5vbmUiCi0gICAgICAgICAgICA+Ci0gICAgICAgICAgICA8Y29tLmFuZHJvaWQuc2VydmVyLnN0YXR1cy5Ob3RpZmljYXRpb25MaW5lYXJMYXlvdXQKLSAgICAgICAgICAgICAgICBhbmRyb2lkOmlkPSJAK2lkL25vdGlmaWNhdGlvbkxpbmVhckxheW91dCIKLSAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgotICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgotICAgICAgICAgICAgICAgIGFuZHJvaWQ6b3JpZW50YXRpb249InZlcnRpY2FsIgotICAgICAgICAgICAgICAgID4KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICA8VGV4dFZpZXcgYW5kcm9pZDppZD0iQCtpZC9ub05vdGlmaWNhdGlvbnNUaXRsZSIKLSAgICAgICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKLSAgICAgICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCi0gICAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6YmFja2dyb3VuZD0iQGRyYXdhYmxlL3RpdGxlX2Jhcl9wb3J0cmFpdCIKLSAgICAgICAgICAgICAgICAgICAgYW5kcm9pZDpwYWRkaW5nTGVmdD0iNWRwIgotICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOnRleHRBcHBlYXJhbmNlPSJAc3R5bGUvVGV4dEFwcGVhcmFuY2UuU3RhdHVzQmFyVGl0bGUiCi0gICAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6dGV4dD0iQHN0cmluZy9zdGF0dXNfYmFyX25vX25vdGlmaWNhdGlvbnNfdGl0bGUiCi0gICAgICAgICAgICAgICAgICAgIC8+Ci0KLSAgICAgICAgICAgICAgICA8VGV4dFZpZXcgYW5kcm9pZDppZD0iQCtpZC9vbmdvaW5nVGl0bGUiCi0gICAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCi0gICAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgotICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOmJhY2tncm91bmQ9IkBkcmF3YWJsZS90aXRsZV9iYXJfcG9ydHJhaXQiCi0gICAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6cGFkZGluZ0xlZnQ9IjVkcCIKLSAgICAgICAgICAgICAgICAgICAgYW5kcm9pZDp0ZXh0QXBwZWFyYW5jZT0iQHN0eWxlL1RleHRBcHBlYXJhbmNlLlN0YXR1c0JhclRpdGxlIgotICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOnRleHQ9IkBzdHJpbmcvc3RhdHVzX2Jhcl9vbmdvaW5nX2V2ZW50c190aXRsZSIKLSAgICAgICAgICAgICAgICAgICAgLz4KLSAgICAgICAgICAgICAgICA8TGluZWFyTGF5b3V0IGFuZHJvaWQ6aWQ9IkAraWQvb25nb2luZ0l0ZW1zIgotICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgotICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKLSAgICAgICAgICAgICAgICAgICAgYW5kcm9pZDpvcmllbnRhdGlvbj0idmVydGljYWwiCi0gICAgICAgICAgICAgICAgICAgIC8+Ci0KLSAgICAgICAgICAgICAgICA8VGV4dFZpZXcgYW5kcm9pZDppZD0iQCtpZC9sYXRlc3RUaXRsZSIKLSAgICAgICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKLSAgICAgICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCi0gICAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6YmFja2dyb3VuZD0iQGRyYXdhYmxlL3RpdGxlX2Jhcl9wb3J0cmFpdCIKLSAgICAgICAgICAgICAgICAgICAgYW5kcm9pZDpwYWRkaW5nTGVmdD0iNWRwIgotICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOnRleHRBcHBlYXJhbmNlPSJAc3R5bGUvVGV4dEFwcGVhcmFuY2UuU3RhdHVzQmFyVGl0bGUiCi0gICAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6dGV4dD0iQHN0cmluZy9zdGF0dXNfYmFyX2xhdGVzdF9ldmVudHNfdGl0bGUiCi0gICAgICAgICAgICAgICAgICAgIC8+Ci0gICAgICAgICAgICAgICAgPExpbmVhckxheW91dCBhbmRyb2lkOmlkPSJAK2lkL2xhdGVzdEl0ZW1zIgotICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgotICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKLSAgICAgICAgICAgICAgICAgICAgYW5kcm9pZDpvcmllbnRhdGlvbj0idmVydGljYWwiCi0gICAgICAgICAgICAgICAgICAgIC8+Ci0gICAgICAgICAgICA8L2NvbS5hbmRyb2lkLnNlcnZlci5zdGF0dXMuTm90aWZpY2F0aW9uTGluZWFyTGF5b3V0PgotICAgICAgICA8L1Njcm9sbFZpZXc+Ci0KLSAgICAgICAgPEltYWdlVmlldwotICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKLSAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0ibWF0Y2hfcGFyZW50IgotICAgICAgICAgICAgYW5kcm9pZDpzcmM9IkBkcmF3YWJsZS90aXRsZV9iYXJfc2hhZG93IgotICAgICAgICAgICAgYW5kcm9pZDpzY2FsZVR5cGU9ImZpdFhZIgotICAgICAgICAvPgotCi0gICAgPC9GcmFtZUxheW91dD4KLTwvY29tLmFuZHJvaWQuc2VydmVyLnN0YXR1cy5FeHBhbmRlZFZpZXc+CmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvbGF5b3V0L3N0YXR1c19iYXJfaWNvbi54bWwgYi9jb3JlL3Jlcy9yZXMvbGF5b3V0L3N0YXR1c19iYXJfaWNvbi54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1MzY3OTIuLjAwMDAwMDAKLS0tIGEvY29yZS9yZXMvcmVzL2xheW91dC9zdGF0dXNfYmFyX2ljb24ueG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTwhLS0KLS8qIGFwcHMvY29tbW9uL2Fzc2V0cy9kZWZhdWx0L2RlZmF1bHQvc2tpbnMvU3RhdHVzQmFyLnhtbAotKioKLSoqIENvcHlyaWdodCAyMDA2LCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0qKgotKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7IAotKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiAKLSoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdCAKLSoqCi0qKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIAotKioKLSoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUgCi0qKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLCAKLSoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAKLSoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgCi0qKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSovCi0tLT4KLQotPCEtLSBUaGUgaWNvbnMgYXJlIGEgZml4ZWQgc2l6ZSBzbyBhbiBhcHAgY2FuJ3QgbWVzcyBldmVyeXRoaW5nIHVwIHdpdGggYm9ndXMgaW1hZ2VzIC0tPgotPCEtLSBUT0RPOiB0aGUgaWNvbnMgYXJlIGhhcmQgY29kZWQgdG8gMjV4MjUgcGl4ZWxzLiAgVGhlaXIgc2l6ZSBzaG91bGQgY29tZSBmcm9lbSBhIHRoZW1lIC0tPgotPEZyYW1lTGF5b3V0IHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIgCi0gICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IjI1ZHAiIAotICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0iMjVkcCIKLSAgICA+Ci0KLSAgICA8Y29tLmFuZHJvaWQuc2VydmVyLnN0YXR1cy5BbmltYXRlZEltYWdlVmlldyBhbmRyb2lkOmlkPSJAK2lkL2ltYWdlIgotICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IiAKLSAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJtYXRjaF9wYXJlbnQiCi0gICAgICAgIC8+Ci0KLSAgICA8VGV4dFZpZXcgYW5kcm9pZDppZD0iQCtpZC9udW1iZXIiCi0gICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJ3cmFwX2NvbnRlbnQiIAotICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKLSAgICAgICAgYW5kcm9pZDpsYXlvdXRfZ3Jhdml0eT0icmlnaHR8Ym90dG9tIgotICAgICAgICBhbmRyb2lkOmxheW91dF9tYXJnaW5SaWdodD0iMWRwIgotICAgICAgICBhbmRyb2lkOmxheW91dF9tYXJnaW5Cb3R0b209IjFkcCIKLSAgICAgICAgYW5kcm9pZDp0ZXh0U2l6ZT0iMTBzcCIKLSAgICAgICAgYW5kcm9pZDp0ZXh0Q29sb3I9IiNmZmZmZmZmZiIKLSAgICAgICAgYW5kcm9pZDpiYWNrZ3JvdW5kPSJAZHJhd2FibGUvaWNfbm90aWZpY2F0aW9uX292ZXJsYXkiCi0gICAgICAgIGFuZHJvaWQ6Z3Jhdml0eT0iY2VudGVyIgotICAgICAgICBhbmRyb2lkOnRleHRTdHlsZT0iYm9sZCIKLSAgICAgICAgLz4KLQotPC9GcmFtZUxheW91dD4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9sYXlvdXQvc3RhdHVzX2Jhcl9sYXRlc3RfZXZlbnQueG1sIGIvY29yZS9yZXMvcmVzL2xheW91dC9zdGF0dXNfYmFyX2xhdGVzdF9ldmVudC54bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5Y2M5MGQuLjAwMDAwMDAKLS0tIGEvY29yZS9yZXMvcmVzL2xheW91dC9zdGF0dXNfYmFyX2xhdGVzdF9ldmVudC54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi08TGluZWFyTGF5b3V0IHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKLSAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgotICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0iNjVzcCIKLSAgICBhbmRyb2lkOm9yaWVudGF0aW9uPSJ2ZXJ0aWNhbCIKLSAgICA+Ci0KLSAgICA8Y29tLmFuZHJvaWQuc2VydmVyLnN0YXR1cy5MYXRlc3RJdGVtVmlldyBhbmRyb2lkOmlkPSJAK2lkL2NvbnRlbnQiCi0gICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgotICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSI2NHNwIgotICAgICAgICAgICAgYW5kcm9pZDpiYWNrZ3JvdW5kPSJAZHJhd2FibGUvc3RhdHVzX2Jhcl9pdGVtX2JhY2tncm91bmQiCi0gICAgICAgICAgICBhbmRyb2lkOmZvY3VzYWJsZT0idHJ1ZSIKLSAgICAgICAgICAgIGFuZHJvaWQ6Y2xpY2thYmxlPSJ0cnVlIgotICAgICAgICAgICAgYW5kcm9pZDpwYWRkaW5nUmlnaHQ9IjZzcCIKLSAgICAgICAgICAgID4KLSAgICA8L2NvbS5hbmRyb2lkLnNlcnZlci5zdGF0dXMuTGF0ZXN0SXRlbVZpZXc+Ci0KLSAgICA8VmlldwotICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgotICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IjFzcCIKLSAgICAgICAgYW5kcm9pZDpiYWNrZ3JvdW5kPSJAZHJhd2FibGUvZGl2aWRlcl9ob3Jpem9udGFsX2JyaWdodCIKLSAgICAgICAgLz4KLQotPC9MaW5lYXJMYXlvdXQ+Ci0KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9sYXlvdXQvc3RhdHVzX2Jhcl9sYXRlc3RfZXZlbnRfY29udGVudC54bWwgYi9jb3JlL3Jlcy9yZXMvbGF5b3V0L3N0YXR1c19iYXJfbGF0ZXN0X2V2ZW50X2NvbnRlbnQueG1sCmluZGV4IGMzYWEwNDEuLmM2NGI5MGUgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy9sYXlvdXQvc3RhdHVzX2Jhcl9sYXRlc3RfZXZlbnRfY29udGVudC54bWwKKysrIGIvY29yZS9yZXMvcmVzL2xheW91dC9zdGF0dXNfYmFyX2xhdGVzdF9ldmVudF9jb250ZW50LnhtbApAQCAtMTIsMjIgKzEyLDIyIEBACiAgICAgICAgIGFuZHJvaWQ6b3JpZW50YXRpb249Imhvcml6b250YWwiCiAgICAgICAgIGFuZHJvaWQ6cGFkZGluZ1RvcD0iM2RwIgogICAgICAgICA+Ci0gICAgICAgIDxjb20uYW5kcm9pZC5zZXJ2ZXIuc3RhdHVzLkFuaW1hdGVkSW1hZ2VWaWV3IGFuZHJvaWQ6aWQ9IkAraWQvaWNvbiIKKyAgICAgICAgPCEtLWNvbS5hbmRyb2lkLnNlcnZlci5zdGF0dXMuQW5pbWF0ZWRJbWFnZVZpZXcgYW5kcm9pZDppZD0iQCtpZC9pY29uIiAtLT4KKyAgICAgICAgPEltYWdlVmlldyBhbmRyb2lkOmlkPSJAK2lkL2ljb24iCiAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0iMjVkcCIKICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0iMjVkcCIKICAgICAgICAgICAgIGFuZHJvaWQ6c2NhbGVUeXBlPSJmaXRDZW50ZXIiCiAgICAgICAgICAgICBhbmRyb2lkOnNyYz0iQGRyYXdhYmxlL2Fycm93X2Rvd25fZmxvYXQiLz4KICAgICAgICAgPFRleHRWaWV3IGFuZHJvaWQ6aWQ9IkAraWQvdGl0bGUiCisgICAgICAgICAgICBhbmRyb2lkOnRleHRBcHBlYXJhbmNlPSJAc3R5bGUvVGV4dEFwcGVhcmFuY2UuU3RhdHVzQmFyLkV2ZW50Q29udGVudC5UaXRsZSIKICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCiAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dlaWdodD0iMSIKICAgICAgICAgICAgIGFuZHJvaWQ6c2luZ2xlTGluZT0idHJ1ZSIKICAgICAgICAgICAgIGFuZHJvaWQ6ZWxsaXBzaXplPSJtYXJxdWVlIgogICAgICAgICAgICAgYW5kcm9pZDpmYWRpbmdFZGdlPSJob3Jpem9udGFsIgotICAgICAgICAgICAgYW5kcm9pZDp0ZXh0U3R5bGU9ImJvbGQiCi0gICAgICAgICAgICBhbmRyb2lkOnRleHRTaXplPSIxOHNwIgogICAgICAgICAgICAgYW5kcm9pZDpwYWRkaW5nTGVmdD0iNGRwIgotICAgICAgICAgICAgYW5kcm9pZDp0ZXh0Q29sb3I9IiNmZjAwMDAwMCIgLz4KKyAgICAgICAgICAgIC8+CiAgICAgPC9MaW5lYXJMYXlvdXQ+CiAgICAgPExpbmVhckxheW91dAogICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgpAQCAtMzUsMjMgKzM1LDIyIEBACiAgICAgICAgIGFuZHJvaWQ6b3JpZW50YXRpb249Imhvcml6b250YWwiCiAgICAgICAgID4KICAgICAgICAgPFRleHRWaWV3IGFuZHJvaWQ6aWQ9IkAraWQvdGV4dCIKKyAgICAgICAgICAgIGFuZHJvaWQ6dGV4dEFwcGVhcmFuY2U9IkBzdHlsZS9UZXh0QXBwZWFyYW5jZS5TdGF0dXNCYXIuRXZlbnRDb250ZW50IgogICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IndyYXBfY29udGVudCIKICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgogICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2VpZ2h0PSIxIgotICAgICAgICAgICAgYW5kcm9pZDp0ZXh0Q29sb3I9IiNmZjAwMDAwMCIKICAgICAgICAgICAgIGFuZHJvaWQ6c2luZ2xlTGluZT0idHJ1ZSIKICAgICAgICAgICAgIGFuZHJvaWQ6ZWxsaXBzaXplPSJtYXJxdWVlIgogICAgICAgICAgICAgYW5kcm9pZDpmYWRpbmdFZGdlPSJob3Jpem9udGFsIgotICAgICAgICAgICAgYW5kcm9pZDp0ZXh0U2l6ZT0iMTRzcCIKICAgICAgICAgICAgIGFuZHJvaWQ6cGFkZGluZ0xlZnQ9IjRkcCIKICAgICAgICAgICAgIC8+CiAgICAgICAgIDxhbmRyb2lkLndpZGdldC5EYXRlVGltZVZpZXcgYW5kcm9pZDppZD0iQCtpZC90aW1lIgorICAgICAgICAgICAgYW5kcm9pZDp0ZXh0QXBwZWFyYW5jZT0iQHN0eWxlL1RleHRBcHBlYXJhbmNlLlN0YXR1c0Jhci5FdmVudENvbnRlbnQiCiAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9tYXJnaW5MZWZ0PSI0ZHAiCiAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0id3JhcF9jb250ZW50IgogICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCiAgICAgICAgICAgICBhbmRyb2lkOnNpbmdsZUxpbmU9InRydWUiCi0gICAgICAgICAgICBhbmRyb2lkOnRleHRTaXplPSIxNHNwIgogICAgICAgICAgICAgYW5kcm9pZDpwYWRkaW5nUmlnaHQ9IjVkcCIKLSAgICAgICAgICAgIGFuZHJvaWQ6dGV4dENvbG9yPSIjZmYwMDAwMDAiIC8+CisgICAgICAgICAgICAvPgogICAgIDwvTGluZWFyTGF5b3V0PgogPC9MaW5lYXJMYXlvdXQ+CmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvbGF5b3V0L3N0YXR1c19iYXJfdHJhY2tpbmcueG1sIGIvY29yZS9yZXMvcmVzL2xheW91dC9zdGF0dXNfYmFyX3RyYWNraW5nLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzBhN2E5Ny4uMDAwMDAwMAotLS0gYS9jb3JlL3Jlcy9yZXMvbGF5b3V0L3N0YXR1c19iYXJfdHJhY2tpbmcueG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KLTwhLS0KLSAgICBDb3B5cmlnaHQgKEMpIDIwMDggVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotCi0gICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotCi0gICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0KLSAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0tLT4KLQotPGNvbS5hbmRyb2lkLnNlcnZlci5zdGF0dXMuVHJhY2tpbmdWaWV3IHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKLSAgICBhbmRyb2lkOm9yaWVudGF0aW9uPSJ2ZXJ0aWNhbCIKLSAgICBhbmRyb2lkOnZpc2liaWxpdHk9ImdvbmUiCi0gICAgYW5kcm9pZDpmb2N1c2FibGU9InRydWUiCi0gICAgYW5kcm9pZDpkZXNjZW5kYW50Rm9jdXNhYmlsaXR5PSJhZnRlckRlc2NlbmRhbnRzIgotICAgIGFuZHJvaWQ6cGFkZGluZ0JvdHRvbT0iMHB4IgotICAgIGFuZHJvaWQ6cGFkZGluZ0xlZnQ9IjBweCIKLSAgICBhbmRyb2lkOnBhZGRpbmdSaWdodD0iMHB4IgotICAgID4KLQotICAgIDxjb20uYW5kcm9pZC5zZXJ2ZXIuc3RhdHVzLlRyYWNraW5nUGF0dGVyblZpZXcKLSAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKLSAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCi0gICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dlaWdodD0iMSIKLSAgICAgICAgLz4KLQotICAgIDxjb20uYW5kcm9pZC5zZXJ2ZXIuc3RhdHVzLkNsb3NlRHJhZ0hhbmRsZSBhbmRyb2lkOmlkPSJAK2lkL2Nsb3NlIgotICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgotICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKLSAgICAgICAgYW5kcm9pZDpvcmllbnRhdGlvbj0idmVydGljYWwiCi0gICAgICAgID4KLSAgICAgICAgPEltYWdlVmlldwotICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKLSAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgotICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfZ3Jhdml0eT0iYm90dG9tIgotICAgICAgICAgICAgYW5kcm9pZDpzY2FsZVR5cGU9ImZpdFhZIgotICAgICAgICAgICAgYW5kcm9pZDpzcmM9IkBkcmF3YWJsZS9zdGF0dXNfYmFyX2Nsb3NlX29uIi8+Ci0KLSAgICA8L2NvbS5hbmRyb2lkLnNlcnZlci5zdGF0dXMuQ2xvc2VEcmFnSGFuZGxlPgotCi08L2NvbS5hbmRyb2lkLnNlcnZlci5zdGF0dXMuVHJhY2tpbmdWaWV3PgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL3ZhbHVlcy9hcnJheXMueG1sIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy9hcnJheXMueG1sCmluZGV4IDQ2NzJjMGUuLmFlZWU4YWYgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMvYXJyYXlzLnhtbAorKysgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzL2FycmF5cy54bWwKQEAgLTExNywyOCArMTE3LDQgQEAKICAgICAgICAgPGl0ZW0+MzwvaXRlbT4KICAgICA8L2ludGVnZXItYXJyYXk+CiAKLSAgICA8IS0tIERvIG5vdCB0cmFuc2xhdGUuIERlZmluZXMgdGhlIHNsb3RzIGZvciB0aGUgcmlnaHQtaGFuZCBzaWRlIGljb25zLiAgVGhhdCBpcyB0byBzYXksIHRoZQotICAgICAgICAgaWNvbnMgaW4gdGhlIHN0YXR1cyBiYXIgdGhhdCBhcmUgbm90IG5vdGlmaWNhdGlvbnMuIC0tPgotICAgIDxzdHJpbmctYXJyYXkgbmFtZT0ic3RhdHVzX2Jhcl9pY29uX29yZGVyIj4KLSAgICAgICAgPGl0ZW0+PHhsaWZmOmcgaWQ9ImlkIj5jbG9jazwveGxpZmY6Zz48L2l0ZW0+Ci0gICAgICAgIDxpdGVtPjx4bGlmZjpnIGlkPSJpZCI+c2VjdXJlPC94bGlmZjpnPjwvaXRlbT4KLSAgICAgICAgPGl0ZW0+PHhsaWZmOmcgaWQ9ImlkIj5hbGFybV9jbG9jazwveGxpZmY6Zz48L2l0ZW0+Ci0gICAgICAgIDxpdGVtPjx4bGlmZjpnIGlkPSJpZCI+YmF0dGVyeTwveGxpZmY6Zz48L2l0ZW0+Ci0gICAgICAgIDxpdGVtPjx4bGlmZjpnIGlkPSJpZCI+cGhvbmVfc2lnbmFsPC94bGlmZjpnPjwvaXRlbT4KLSAgICAgICAgPGl0ZW0+PHhsaWZmOmcgaWQ9ImlkIj5waG9uZV9ldmRvX3NpZ25hbDwveGxpZmY6Zz48L2l0ZW0+Ci0gICAgICAgIDxpdGVtPjx4bGlmZjpnIGlkPSJpZCI+ZGF0YV9jb25uZWN0aW9uPC94bGlmZjpnPjwvaXRlbT4KLSAgICAgICAgPGl0ZW0+PHhsaWZmOmcgaWQ9ImlkIj5jZG1hX2VyaTwveGxpZmY6Zz48L2l0ZW0+Ci0gICAgICAgIDxpdGVtPjx4bGlmZjpnIGlkPSJpZCI+dHR5PC94bGlmZjpnPjwvaXRlbT4KLSAgICAgICAgPGl0ZW0+PHhsaWZmOmcgaWQ9ImlkIj52b2x1bWU8L3hsaWZmOmc+PC9pdGVtPgotICAgICAgICA8aXRlbT48eGxpZmY6ZyBpZD0iaWQiPm11dGU8L3hsaWZmOmc+PC9pdGVtPgotICAgICAgICA8aXRlbT48eGxpZmY6ZyBpZD0iaWQiPnNwZWFrZXJwaG9uZTwveGxpZmY6Zz48L2l0ZW0+Ci0gICAgICAgIDxpdGVtPjx4bGlmZjpnIGlkPSJpZCI+d2lmaTwveGxpZmY6Zz48L2l0ZW0+Ci0gICAgICAgIDxpdGVtPjx4bGlmZjpnIGlkPSJpZCI+dHR5PC94bGlmZjpnPjwvaXRlbT4KLSAgICAgICAgPGl0ZW0+PHhsaWZmOmcgaWQ9ImlkIj5ibHVldG9vdGg8L3hsaWZmOmc+PC9pdGVtPgotICAgICAgICA8aXRlbT48eGxpZmY6ZyBpZD0iaWQiPmdwczwveGxpZmY6Zz48L2l0ZW0+Ci0gICAgICAgIDxpdGVtPjx4bGlmZjpnIGlkPSJpZCI+c3luY19hY3RpdmU8L3hsaWZmOmc+PC9pdGVtPgotICAgICAgICA8aXRlbT48eGxpZmY6ZyBpZD0iaWQiPnN5bmNfZmFpbGluZzwveGxpZmY6Zz48L2l0ZW0+Ci0gICAgICAgIDxpdGVtPjx4bGlmZjpnIGlkPSJpZCI+aW1lPC94bGlmZjpnPjwvaXRlbT4KLSAgICA8L3N0cmluZy1hcnJheT4KLQogPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvdmFsdWVzL2F0dHJzLnhtbCBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMvYXR0cnMueG1sCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggNmQ2YzQ3Zi4uOGQ0ZmE0ZQotLS0gYS9jb3JlL3Jlcy9yZXMvdmFsdWVzL2F0dHJzLnhtbAorKysgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzL2F0dHJzLnhtbApAQCAtOTE2LDYgKzkxNiwxMCBAQAogICAgICAgICA8ZW51bSBuYW1lPSJLRVlDT0RFX01FRElBX1JFV0lORCIgdmFsdWU9Ijg5IiAvPgogICAgICAgICA8ZW51bSBuYW1lPSJLRVlDT0RFX01FRElBX0ZBU1RfRk9SV0FSRCIgdmFsdWU9IjkwIiAvPgogICAgICAgICA8ZW51bSBuYW1lPSJLRVlDT0RFX01VVEUiIHZhbHVlPSI5MSIgLz4KKyAgICAgICAgPGVudW0gbmFtZT0iS0VZQ09ERV9QQUdFX1VQIiB2YWx1ZT0iOTIiIC8+CisgICAgICAgIDxlbnVtIG5hbWU9IktFWUNPREVfUEFHRV9ET1dOIiB2YWx1ZT0iOTMiIC8+CisgICAgICAgIDxlbnVtIG5hbWU9IktFWUNPREVfUElDVFNZTUJPTFMiIHZhbHVlPSI5NCIgLz4KKyAgICAgICAgPGVudW0gbmFtZT0iS0VZQ09ERV9TV0lUQ0hfQ0hBUlNFVCIgdmFsdWU9Ijk1IiAvPgogICAgIDwvYXR0cj4KIAogICAgIDwhLS0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+CmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvdmFsdWVzL2F0dHJzX21hbmlmZXN0LnhtbCBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMvYXR0cnNfbWFuaWZlc3QueG1sCmluZGV4IGVkNzQ0N2MuLmYxOGQxNGUgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMvYXR0cnNfbWFuaWZlc3QueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMvYXR0cnNfbWFuaWZlc3QueG1sCkBAIC02Miw2ICs2MiwyMiBAQAogICAgICAgICAgYSByZWZlcmVuY2UgdG8gYSBEcmF3YWJsZSByZXNvdXJjZSBjb250YWluaW5nIHRoZSBpbWFnZSBkZWZpbml0aW9uLiAtLT4KICAgICA8YXR0ciBuYW1lPSJpY29uIiBmb3JtYXQ9InJlZmVyZW5jZSIgLz4KIAorICAgIDwhLS0gQSBEcmF3YWJsZSByZXNvdXJjZSBwcm92aWRpbmcgYW4gZXh0ZW5kZWQgZ3JhcGhpY2FsIGxvZ28gZm9yIGl0cworICAgICAgICAgYXNzb2NpYXRlZCBpdGVtLiBVc2Ugd2l0aCB0aGUgYXBwbGljYXRpb24gdGFnICh0byBzdXBwbHkgYSBkZWZhdWx0CisgICAgICAgICBsb2dvIGZvciBhbGwgYXBwbGljYXRpb24gY29tcG9uZW50cyksIG9yIHdpdGggdGhlIGFjdGl2aXR5LCByZWNlaXZlciwKKyAgICAgICAgIHNlcnZpY2UsIG9yIGluc3RydW1lbnRhdGlvbiB0YWcgKHRvIHN1cHBseSBhIHNwZWNpZmljIGxvZ28gZm9yIHRoYXQKKyAgICAgICAgIGNvbXBvbmVudCkuIEl0IG1heSBhbHNvIGJlIHVzZWQgd2l0aCB0aGUgaW50ZW50LWZpbHRlciB0YWcgdG8gc3VwcGx5CisgICAgICAgICBhIGxvZ28gdG8gc2hvdyB0byB0aGUgdXNlciB3aGVuIGFuIGFjdGl2aXR5IGlzIGJlaW5nIHNlbGVjdGVkIGJhc2VkCisgICAgICAgICBvbiBhIHBhcnRpY3VsYXIgSW50ZW50LgorCisgICAgICAgICA8cD5UaGUgZ2l2ZW4gbG9nbyB3aWxsIGJlIHVzZWQgdG8gZGlzcGxheSB0byB0aGUgdXNlciBhIGdyYXBoaWNhbAorICAgICAgICAgcmVwcmVzZW50YXRpb24gb2YgaXRzIGFzc29jaWF0ZWQgY29tcG9uZW50OyBmb3IgZXhhbXBsZSBhcyB0aGUKKyAgICAgICAgIGhlYWRlciBpbiB0aGUgQWN0aW9uIEJhci4gVGhlIHByaW1hcnkgZGlmZmVyZW5jZXMgYmV0d2VlbiBhbiBpY29uCisgICAgICAgICBhbmQgYSBsb2dvIGFyZSB0aGF0IGxvZ29zIGFyZSBvZnRlbiB3aWRlciBhbmQgbW9yZSBkZXRhaWxlZCwgYW5kIGFyZQorICAgICAgICAgdXNlZCB3aXRob3V0IGFuIGFjY29tcGFueWluZyB0ZXh0IGNhcHRpb24uIFRoaXMgbXVzdCBiZSBhIHJlZmVyZW5jZQorICAgICAgICAgdG8gYSBEcmF3YWJsZSByZXNvdXJjZSBjb250YWluaW5nIHRoZSBpbWFnZSBkZWZpbml0aW9uLiAtLT4KKyAgICA8YXR0ciBuYW1lPSJsb2dvIiBmb3JtYXQ9InJlZmVyZW5jZSIgLz4KKwogICAgIDwhLS0gTmFtZSBvZiB0aGUgYWN0aXZpdHkgdG8gYmUgbGF1bmNoZWQgdG8gbWFuYWdlIGFwcGxpY2F0aW9uJ3Mgc3BhY2Ugb24KICAgICAgICAgIGRldmljZS4gVGhlIHNwZWNpZmllZCBhY3Rpdml0eSBnZXRzIGF1dG9tYXRpY2FsbHkgbGF1bmNoZWQgd2hlbiB0aGUKICAgICAgICAgIGFwcGxpY2F0aW9uJ3Mgc3BhY2UgbmVlZHMgdG8gYmUgbWFuYWdlZCBhbmQgaXMgdXN1YWxseSBpbnZva2VkIApAQCAtNzksNiArOTUsMTMgQEAKICAgICAgICAgIGJ5IGFwcGxpY2F0aW9ucy4gLS0+CiAgICAgPGF0dHIgbmFtZT0iYWxsb3dDbGVhclVzZXJEYXRhIiBmb3JtYXQ9ImJvb2xlYW4iIC8+CiAKKyAgICA8IS0tIE9wdGlvbiB0byBsZXQgYXBwbGljYXRpb25zIHNwZWNpZnkgdGhhdCB1c2VyIGRhdGEgc2hvdWxkCisgICAgICAgICBuZXZlciBiZSBlbmNyeXB0ZWQgaWYgYW4gRW5jcnlwdGVkIEZpbGUgU3lzdGVtIHNvbHV0aW9uCisgICAgICAgICBpcyBlbmFibGVkLiBTcGVjaWZpY2FsbHksIHRoaXMgaXMgYW4gIm9wdC1vdXQiIGZlYXR1cmUsIG1lYW5pbmcKKyAgICAgICAgIHRoYXQsIGJ5IGRlZmF1bHQsIHVzZXIgZGF0YSB3aWxsIGJlIGVuY3J5cHRlZCBpZiB0aGUgRUZTIGZlYXR1cmUKKyAgICAgICAgIGlzIGVuYWJsZWQuIC0tPgorICAgIDxhdHRyIG5hbWU9Im5ldmVyRW5jcnlwdCIgZm9ybWF0PSJib29sZWFuIiAvPgorCiAgICAgPCEtLSBPcHRpb24gdG8gaW5kaWNhdGUgdGhpcyBhcHBsaWNhdGlvbiBpcyBvbmx5IGZvciB0ZXN0aW5nIHB1cnBvc2VzLgogICAgICAgICAgRm9yIGV4YW1wbGUsIGl0IG1heSBleHBvc2UgZnVuY3Rpb25hbGl0eSBvciBkYXRhIG91dHNpZGUgb2YgaXRzZWxmCiAgICAgICAgICB0aGF0IHdvdWxkIGNhdXNlIGEgc2VjdXJpdHkgaG9sZSwgYnV0IGlzIHVzZWZ1bCBmb3IgdGVzdGluZy4gIFRoaXMKQEAgLTM3NSw2ICszOTgsMTAgQEAKICAgICAgICAgIHBhcnRpY2lwYXRlIGluIGRhdGEgc3luY2hyb25pemF0aW9uLiAtLT4KICAgICA8YXR0ciBuYW1lPSJzeW5jYWJsZSIgZm9ybWF0PSJib29sZWFuIiAvPgogICAgIAorICAgIDwhLS0gRmxhZyBkZWNsYXJpbmcgdGhpcyBhY3Rpdml0eSB0byBiZSAnaW1tZXJzaXZlJzsgaW1tZXJzaXZlIGFjdGl2aXRpZXMKKyAgICAgICAgIHNob3VsZCBub3QgYmUgaW50ZXJydXB0ZWQgd2l0aCBvdGhlciBhY3Rpdml0aWVzIG9yIG5vdGlmaWNhdGlvbnMuIC0tPgorICAgIDxhdHRyIG5hbWU9ImltbWVyc2l2ZSIgZm9ybWF0PSJib29sZWFuIiAvPgorCiAgICAgPCEtLSBTcGVjaWZ5IHRoZSBvcmRlciBpbiB3aGljaCBjb250ZW50IHByb3ZpZGVycyBob3N0ZWQgYnkgYSBwcm9jZXNzCiAgICAgICAgICBhcmUgaW5zdGFudGlhdGVkIHdoZW4gdGhhdCBwcm9jZXNzIGlzIGNyZWF0ZWQuICBOb3QgbmVlZGVkIHVubGVzcwogICAgICAgICAgeW91IGhhdmUgcHJvdmlkZXJzIHdpdGggZGVwZW5kZW5jaWVzIGJldHdlZW4gZWFjaCBvdGhlciwgdG8gbWFrZQpAQCAtNjg4LDYgKzcxNSw3IEBACiAgICAgICAgIDxhdHRyIG5hbWU9InRoZW1lIiAvPgogICAgICAgICA8YXR0ciBuYW1lPSJsYWJlbCIgLz4KICAgICAgICAgPGF0dHIgbmFtZT0iaWNvbiIgLz4KKyAgICAgICAgPGF0dHIgbmFtZT0ibG9nbyIgLz4KICAgICAgICAgPGF0dHIgbmFtZT0iZGVzY3JpcHRpb24iIC8+CiAgICAgICAgIDxhdHRyIG5hbWU9InBlcm1pc3Npb24iIC8+CiAgICAgICAgIDxhdHRyIG5hbWU9InByb2Nlc3MiIC8+CkBAIC03MTUsNiArNzQzLDE2IEBACiAgICAgICAgIDxhdHRyIG5hbWU9ImtpbGxBZnRlclJlc3RvcmUiIC8+CiAgICAgICAgIDxhdHRyIG5hbWU9InJlc3RvcmVOZWVkc0FwcGxpY2F0aW9uIiAvPgogICAgICAgICA8YXR0ciBuYW1lPSJyZXN0b3JlQW55VmVyc2lvbiIgLz4KKyAgICAgICAgPGF0dHIgbmFtZT0ibmV2ZXJFbmNyeXB0IiAvPgorICAgICAgICA8IS0tIERlY2xhcmUgdGhhdCB0aGlzIGlzIGEgaGVhdnktd2VpZ2h0IGFwcGxpY2F0aW9uLiAgVGhpcyBraW5kIG9mCisgICAgICAgICAgICAgYXBwbGljYXRpb24gaXMgbm90IGFibGUgdG8gc2F2ZSBhbmQgcmVzdG9yZSBpdHMgc3RhdGUgb24gZGVtYW5kLAorICAgICAgICAgICAgIHNvIGNhbiBub3QgcGFydGljaXBhdGUgaW4gdGhlIG5vcm1hbCBhY3Rpdml0eSBsaWZlY3ljbGUuICBJdCB3aWxsCisgICAgICAgICAgICAgbm90IGJlIGtpbGxlZCB3aGlsZSBpbiB0aGUgYmFja2dyb3VuZDsgdGhlIHVzZXIgbXVzdCBleHBsaWNpdGx5CisgICAgICAgICAgICAgcXVpdCBpdC4gIE9ubHkgb25lIHN1Y2ggYXBwIGNhbiBiZSBydW5uaW5nIGF0IGEgdGltZTsgaWYgdGhlIHVzZXIKKyAgICAgICAgICAgICB0cmllcyB0byBsYXVuY2ggYSBzZWNvbmQgaGVhdnktd2VpZ2h0IGFwcCwgdGhleSB3aWxsIGJlIHByb21wdGVkCisgICAgICAgICAgICAgdG8gcXVpdCB0aGUgZmlyc3QgYmVmb3JlIGRvaW5nIHNvLiAgV2hpbGUgYSBoZWF2eS13ZWlnaHQKKyAgICAgICAgICAgICBhcHBsaWNhdGlvbiBpcyBydW5uaW5nLCB0aGUgdXNlciB3aWxsIGJlIGluZm9ybWVkIG9mIHRoaXMuIC0tPgorICAgICAgICA8YXR0ciBuYW1lPSJoZWF2eVdlaWdodCIgZm9ybWF0PSJib29sZWFuIiAvPgogICAgIDwvZGVjbGFyZS1zdHlsZWFibGU+CiAgICAgCiAgICAgPCEtLSBUaGUgPGNvZGU+cGVybWlzc2lvbjwvY29kZT4gdGFnIGRlY2xhcmVzIGEgc2VjdXJpdHkgcGVybWlzc2lvbiB0aGF0IGNhbiBiZQpAQCAtNzM0LDYgKzc3Miw3IEBACiAgICAgICAgIDxhdHRyIG5hbWU9Im5hbWUiIC8+CiAgICAgICAgIDxhdHRyIG5hbWU9ImxhYmVsIiAvPgogICAgICAgICA8YXR0ciBuYW1lPSJpY29uIiAvPgorICAgICAgICA8YXR0ciBuYW1lPSJsb2dvIiAvPgogICAgICAgICA8YXR0ciBuYW1lPSJwZXJtaXNzaW9uR3JvdXAiIC8+CiAgICAgICAgIDxhdHRyIG5hbWU9ImRlc2NyaXB0aW9uIiAvPgogICAgICAgICA8YXR0ciBuYW1lPSJwcm90ZWN0aW9uTGV2ZWwiIC8+CkBAIC03NTgsNiArNzk3LDcgQEAKICAgICAgICAgPGF0dHIgbmFtZT0ibmFtZSIgLz4KICAgICAgICAgPGF0dHIgbmFtZT0ibGFiZWwiIC8+CiAgICAgICAgIDxhdHRyIG5hbWU9Imljb24iIC8+CisgICAgICAgIDxhdHRyIG5hbWU9ImxvZ28iIC8+CiAgICAgICAgIDxhdHRyIG5hbWU9ImRlc2NyaXB0aW9uIiAvPgogICAgIDwvZGVjbGFyZS1zdHlsZWFibGU+CiAgICAgCkBAIC03ODcsNiArODI3LDcgQEAKICAgICAgICAgPGF0dHIgbmFtZT0ibmFtZSIgLz4KICAgICAgICAgPGF0dHIgbmFtZT0ibGFiZWwiIC8+CiAgICAgICAgIDxhdHRyIG5hbWU9Imljb24iIC8+CisgICAgICAgIDxhdHRyIG5hbWU9ImxvZ28iIC8+CiAgICAgPC9kZWNsYXJlLXN0eWxlYWJsZT4KICAgICAKICAgICA8IS0tIFRoZSA8Y29kZT51c2VzLXBlcm1pc3Npb248L2NvZGU+IHRhZyByZXF1ZXN0cyBhCkBAIC05MzcsNiArOTc4LDggQEAKICAgICAgICAgICAgICBzY3JlZW4sIHNvIHRoYXQgaXQgcmV0YWlucyB0aGUgZGltZW5zaW9ucyBpdCB3YXMgb3JpZ2luYWxseQogICAgICAgICAgICAgIGRlc2lnbmVkIGZvci4gLS0+CiAgICAgICAgIDxhdHRyIG5hbWU9ImxhcmdlU2NyZWVucyIgZm9ybWF0PSJib29sZWFuIiAvPgorICAgICAgICA8IS0tIEluZGljYXRlcyB3aGV0aGVyIHRoZSBhcHBsaWNhdGlvbiBzdXBwb3J0cyBleHRyYSBsYXJnZSBzY3JlZW4gZm9ybS1mYWN0b3JzLiAtLT4KKyAgICAgICAgPGF0dHIgbmFtZT0ieGxhcmdlU2NyZWVucyIgZm9ybWF0PSJib29sZWFuIiAvPgogICAgICAgICA8IS0tIEluZGljYXRlcyB3aGV0aGVyIHRoZSBhcHBsaWNhdGlvbiBjYW4gcmVzaXplIGl0c2VsZiB0byBuZXdlcgogICAgICAgICAgICAgIHNjcmVlbiBzaXplcy4gIFRoaXMgaXMgbW9zdGx5IHVzZWQgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiBvbGQKICAgICAgICAgICAgICBhcHBsaWNhdGlvbnMgdGhhdCBtYXkgbm90IGJlIGNvbXBhdGlibGUgd2l0aCBuZXdseSBpbnRyb2R1Y2VkCkBAIC05ODksNiArMTAzMiw3IEBACiAgICAgICAgIDxhdHRyIG5hbWU9ImxhYmVsIiAvPgogICAgICAgICA8YXR0ciBuYW1lPSJkZXNjcmlwdGlvbiIgLz4KICAgICAgICAgPGF0dHIgbmFtZT0iaWNvbiIgLz4KKyAgICAgICAgPGF0dHIgbmFtZT0ibG9nbyIgLz4KICAgICAgICAgPGF0dHIgbmFtZT0icHJvY2VzcyIgLz4KICAgICAgICAgPGF0dHIgbmFtZT0iYXV0aG9yaXRpZXMiIC8+CiAgICAgICAgIDxhdHRyIG5hbWU9InN5bmNhYmxlIiAvPgpAQCAtMTA2OCw2ICsxMTEyLDcgQEAKICAgICAgICAgPGF0dHIgbmFtZT0ibGFiZWwiIC8+CiAgICAgICAgIDxhdHRyIG5hbWU9ImRlc2NyaXB0aW9uIiAvPgogICAgICAgICA8YXR0ciBuYW1lPSJpY29uIiAvPgorICAgICAgICA8YXR0ciBuYW1lPSJsb2dvIiAvPgogICAgICAgICA8YXR0ciBuYW1lPSJwZXJtaXNzaW9uIiAvPgogICAgICAgICA8YXR0ciBuYW1lPSJwcm9jZXNzIiAvPgogICAgICAgICA8IS0tIFNwZWNpZnkgd2hldGhlciB0aGUgc2VydmljZSBpcyBlbmFibGVkIG9yIG5vdCAodGhhdCBpcywgY2FuIGJlIGluc3RhbnRpYXRlZCBieSB0aGUgc3lzdGVtKS4KQEAgLTExMDAsNiArMTE0NSw3IEBACiAgICAgICAgIDxhdHRyIG5hbWU9ImxhYmVsIiAvPgogICAgICAgICA8YXR0ciBuYW1lPSJkZXNjcmlwdGlvbiIgLz4KICAgICAgICAgPGF0dHIgbmFtZT0iaWNvbiIgLz4KKyAgICAgICAgPGF0dHIgbmFtZT0ibG9nbyIgLz4KICAgICAgICAgPGF0dHIgbmFtZT0icGVybWlzc2lvbiIgLz4KICAgICAgICAgPGF0dHIgbmFtZT0icHJvY2VzcyIgLz4KICAgICAgICAgPCEtLSBTcGVjaWZ5IHdoZXRoZXIgdGhlIHJlY2VpdmVyIGlzIGVuYWJsZWQgb3Igbm90ICh0aGF0IGlzLCBjYW4gYmUgaW5zdGFudGlhdGVkIGJ5IHRoZSBzeXN0ZW0pLgpAQCAtMTEzMiw2ICsxMTc4LDcgQEAKICAgICAgICAgPGF0dHIgbmFtZT0ibGFiZWwiIC8+CiAgICAgICAgIDxhdHRyIG5hbWU9ImRlc2NyaXB0aW9uIiAvPgogICAgICAgICA8YXR0ciBuYW1lPSJpY29uIiAvPgorICAgICAgICA8YXR0ciBuYW1lPSJsb2dvIiAvPgogICAgICAgICA8YXR0ciBuYW1lPSJsYXVuY2hNb2RlIiAvPgogICAgICAgICA8YXR0ciBuYW1lPSJzY3JlZW5PcmllbnRhdGlvbiIgLz4KICAgICAgICAgPGF0dHIgbmFtZT0iY29uZmlnQ2hhbmdlcyIgLz4KQEAgLTExNTcsNiArMTIwNCw3IEBACiAgICAgICAgICAgICAgdGhpcyBhY3Rpdml0eS4gIEEgdmFsdWUgYmVzaWRlcyAidW5zcGVjaWZpZWQiIGhlcmUgb3ZlcnJpZGVzCiAgICAgICAgICAgICAgYW55IHZhbHVlIGluIHRoZSB0aGVtZS4gLS0+CiAgICAgICAgIDxhdHRyIG5hbWU9IndpbmRvd1NvZnRJbnB1dE1vZGUiIC8+CisgICAgICAgIDxhdHRyIG5hbWU9ImltbWVyc2l2ZSIgLz4KICAgICA8L2RlY2xhcmUtc3R5bGVhYmxlPgogICAgIAogICAgIDwhLS0gVGhlIDxjb2RlPmFjdGl2aXR5LWFsaWFzPC9jb2RlPiB0YWcgZGVjbGFyZXMgYSBuZXcKQEAgLTExODUsNiArMTIzMyw3IEBACiAgICAgICAgIDxhdHRyIG5hbWU9ImxhYmVsIiAvPgogICAgICAgICA8YXR0ciBuYW1lPSJkZXNjcmlwdGlvbiIgLz4KICAgICAgICAgPGF0dHIgbmFtZT0iaWNvbiIgLz4KKyAgICAgICAgPGF0dHIgbmFtZT0ibG9nbyIgLz4KICAgICAgICAgPGF0dHIgbmFtZT0icGVybWlzc2lvbiIgLz4KICAgICAgICAgPCEtLSBTcGVjaWZ5IHdoZXRoZXIgdGhlIGFjdGl2aXR5LWFsaWFzIGlzIGVuYWJsZWQgb3Igbm90ICh0aGF0IGlzLCBjYW4gYmUgaW5zdGFudGlhdGVkIGJ5IHRoZSBzeXN0ZW0pLgogICAgICAgICAgICAgIEl0IGNhbiBhbHNvIGJlIHNwZWNpZmllZCBmb3IgYW4gYXBwbGljYXRpb24gYXMgYSB3aG9sZSwgaW4gd2hpY2ggY2FzZSBhIHZhbHVlIG9mICJmYWxzZSIKQEAgLTEyNTQsNiArMTMwMyw3IEBACiAgICAgICAgICBwYXJlbnQ9IkFuZHJvaWRNYW5pZmVzdEFjdGl2aXR5IEFuZHJvaWRNYW5pZmVzdFJlY2VpdmVyIEFuZHJvaWRNYW5pZmVzdFNlcnZpY2UiPgogICAgICAgICA8YXR0ciBuYW1lPSJsYWJlbCIgLz4KICAgICAgICAgPGF0dHIgbmFtZT0iaWNvbiIgLz4KKyAgICAgICAgPGF0dHIgbmFtZT0ibG9nbyIgLz4KICAgICAgICAgPGF0dHIgbmFtZT0icHJpb3JpdHkiIC8+CiAgICAgPC9kZWNsYXJlLXN0eWxlYWJsZT4KICAgICAKQEAgLTEzNjAsNiArMTQxMCw3IEBACiAgICAgICAgIDxhdHRyIG5hbWU9InRhcmdldFBhY2thZ2UiIC8+CiAgICAgICAgIDxhdHRyIG5hbWU9ImxhYmVsIiAvPgogICAgICAgICA8YXR0ciBuYW1lPSJpY29uIiAvPgorICAgICAgICA8YXR0ciBuYW1lPSJsb2dvIiAvPgogICAgICAgICA8YXR0ciBuYW1lPSJoYW5kbGVQcm9maWxpbmciIC8+CiAgICAgICAgIDxhdHRyIG5hbWU9ImZ1bmN0aW9uYWxUZXN0IiAvPgogICAgIDwvZGVjbGFyZS1zdHlsZWFibGU+CmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvdmFsdWVzL2NvbmZpZy54bWwgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzL2NvbmZpZy54bWwKaW5kZXggMDg4YWI0NC4uZDU2NWM2OCAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL3ZhbHVlcy9jb25maWcueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMvY29uZmlnLnhtbApAQCAtMTksNyArMTksMzUgQEAKIAogPCEtLSBUaGVzZSByZXNvdXJjZXMgYXJlIGFyb3VuZCBqdXN0IHRvIGFsbG93IHRoZWlyIHZhbHVlcyB0byBiZSBjdXN0b21pemVkCiAgICAgIGZvciBkaWZmZXJlbnQgaGFyZHdhcmUgYW5kIHByb2R1Y3QgYnVpbGRzLiAtLT4KLTxyZXNvdXJjZXM+Cis8cmVzb3VyY2VzIHhtbG5zOnhsaWZmPSJ1cm46b2FzaXM6bmFtZXM6dGM6eGxpZmY6ZG9jdW1lbnQ6MS4yIj4KKyAgICA8IS0tIENvbXBvbmVudCB0byBiZSB1c2VkIGFzIHRoZSBzdGF0dXMgYmFyIHNlcnZpY2UuICBNdXN0IGltcGxlbWVudCB0aGUgSVN0YXR1c0JhcgorICAgICAgICAgaW50ZXJmYWNlLiAgVGhpcyBuYW1lIGlzIGluIHRoZSBDb21wb25lbnROYW1lIGZsYXR0ZW5lZCBmb3JtYXQgKHBhY2thZ2UvY2xhc3MpICAtLT4KKyAgICA8c3RyaW5nIG5hbWU9ImNvbmZpZ19zdGF0dXNCYXJDb21wb25lbnQiPmNvbS5hbmRyb2lkLnN5c3RlbXVpL2NvbS5hbmRyb2lkLnN5c3RlbXVpLnN0YXR1c2Jhci5TdGF0dXNCYXJTZXJ2aWNlPC9zdHJpbmc+CisKKyAgICA8IS0tIERvIG5vdCB0cmFuc2xhdGUuIERlZmluZXMgdGhlIHNsb3RzIGZvciB0aGUgcmlnaHQtaGFuZCBzaWRlIGljb25zLiAgVGhhdCBpcyB0byBzYXksIHRoZQorICAgICAgICAgaWNvbnMgaW4gdGhlIHN0YXR1cyBiYXIgdGhhdCBhcmUgbm90IG5vdGlmaWNhdGlvbnMuIC0tPgorICAgIDxzdHJpbmctYXJyYXkgbmFtZT0iY29uZmlnX3N0YXR1c0Jhckljb25zIj4KKyAgICAgICA8aXRlbT48eGxpZmY6ZyBpZD0iaWQiPmltZTwveGxpZmY6Zz48L2l0ZW0+CisgICAgICAgPGl0ZW0+PHhsaWZmOmcgaWQ9ImlkIj5zeW5jX2ZhaWxpbmc8L3hsaWZmOmc+PC9pdGVtPgorICAgICAgIDxpdGVtPjx4bGlmZjpnIGlkPSJpZCI+c3luY19hY3RpdmU8L3hsaWZmOmc+PC9pdGVtPgorICAgICAgIDxpdGVtPjx4bGlmZjpnIGlkPSJpZCI+Z3BzPC94bGlmZjpnPjwvaXRlbT4KKyAgICAgICA8aXRlbT48eGxpZmY6ZyBpZD0iaWQiPmJsdWV0b290aDwveGxpZmY6Zz48L2l0ZW0+CisgICAgICAgPGl0ZW0+PHhsaWZmOmcgaWQ9ImlkIj50dHk8L3hsaWZmOmc+PC9pdGVtPgorICAgICAgIDxpdGVtPjx4bGlmZjpnIGlkPSJpZCI+c3BlYWtlcnBob25lPC94bGlmZjpnPjwvaXRlbT4KKyAgICAgICA8aXRlbT48eGxpZmY6ZyBpZD0iaWQiPm11dGU8L3hsaWZmOmc+PC9pdGVtPgorICAgICAgIDxpdGVtPjx4bGlmZjpnIGlkPSJpZCI+dm9sdW1lPC94bGlmZjpnPjwvaXRlbT4KKyAgICAgICA8aXRlbT48eGxpZmY6ZyBpZD0iaWQiPnR0eTwveGxpZmY6Zz48L2l0ZW0+CisgICAgICAgPGl0ZW0+PHhsaWZmOmcgaWQ9ImlkIj53aWZpPC94bGlmZjpnPjwvaXRlbT4KKyAgICAgICA8aXRlbT48eGxpZmY6ZyBpZD0iaWQiPmNkbWFfZXJpPC94bGlmZjpnPjwvaXRlbT4KKyAgICAgICA8aXRlbT48eGxpZmY6ZyBpZD0iaWQiPmRhdGFfY29ubmVjdGlvbjwveGxpZmY6Zz48L2l0ZW0+CisgICAgICAgPGl0ZW0+PHhsaWZmOmcgaWQ9ImlkIj5waG9uZV9ldmRvX3NpZ25hbDwveGxpZmY6Zz48L2l0ZW0+CisgICAgICAgPGl0ZW0+PHhsaWZmOmcgaWQ9ImlkIj5waG9uZV9zaWduYWw8L3hsaWZmOmc+PC9pdGVtPgorICAgICAgIDxpdGVtPjx4bGlmZjpnIGlkPSJpZCI+YmF0dGVyeTwveGxpZmY6Zz48L2l0ZW0+CisgICAgICAgPGl0ZW0+PHhsaWZmOmcgaWQ9ImlkIj5hbGFybV9jbG9jazwveGxpZmY6Zz48L2l0ZW0+CisgICAgICAgPGl0ZW0+PHhsaWZmOmcgaWQ9ImlkIj5zZWN1cmU8L3hsaWZmOmc+PC9pdGVtPgorICAgICAgIDxpdGVtPjx4bGlmZjpnIGlkPSJpZCI+Y2xvY2s8L3hsaWZmOmc+PC9pdGVtPgorICAgIDwvc3RyaW5nLWFycmF5PgorCiAgICAgPCEtLSBGbGFnIGluZGljYXRpbmcgd2hldGhlciB0aGUgc3VyZmFjZSBmbGluZ2VyIGhhcyBsaW1pdGVkCiAgICAgICAgICBhbHBoYSBjb21wb3NpdGluZyBmdW5jdGlvbmFsaXR5IGluIGhhcmR3YXJlLiAgSWYgc2V0LCB0aGUgd2luZG93CiAgICAgICAgICBtYW5hZ2VyIHdpbGwgZGlzYWJsZSBhbHBoYSB0cmFzZm9ybWF0aW9uIGluIGFuaW1hdGlvbnMgd2hlcmUgbm90CkBAIC0yMzAsOSArMjU4LDYgQEAKICAgICA8IS0tIEFsbG93IHRoZSBtZW51IGhhcmQga2V5IHRvIGJlIGRpc2FibGVkIGluIExvY2tTY3JlZW4gb24gc29tZSBkZXZpY2VzIC0tPgogICAgIDxib29sIG5hbWU9ImNvbmZpZ19kaXNhYmxlTWVudUtleUluTG9ja1NjcmVlbiI+ZmFsc2U8L2Jvb2w+CiAKLSAgICA8IS0tIENvbnRyb2wgd2hldGhlciBzdGF0dXMgYmFyIHNob3VsZCBkaXN0aW5ndWlzaCBIU1BBIGRhdGEgaWNvbiBmb3JtIFVNVFMgZGF0YSBpY29uIG9uIGRldmljZXMgLS0+Ci0gICAgPGJvb2wgbmFtZT0iY29uZmlnX2hzcGFfZGF0YV9kaXN0aW5ndWlzaGFibGUiPmZhbHNlPC9ib29sPgotCiAgICAgPCEtLSBBcnJheSBvZiBsaWdodCBzZW5zb3IgTFVYIHZhbHVlcyB0byBkZWZpbmUgb3VyIGxldmVscyBmb3IgYXV0byBiYWNrbGlnaHQgYnJpZ2h0bmVzcyBzdXBwb3J0LgogICAgICAgICAgVGhlIE4gZW50cmllcyBvZiB0aGlzIGFycmF5IGRlZmluZSBOICsgMSB6b25lcyBhcyBmb2xsb3dzOgogCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvdmFsdWVzL2RpbWVucy54bWwgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzL2RpbWVucy54bWwKaW5kZXggOGE5Mjc1Ny4uOTljMGIzZCAxMDA2NDQKLS0tIGEvY29yZS9yZXMvcmVzL3ZhbHVlcy9kaW1lbnMueG1sCisrKyBiL2NvcmUvcmVzL3Jlcy92YWx1ZXMvZGltZW5zLnhtbApAQCAtMjgsNiArMjgsMTAgQEAKICAgICA8ZGltZW4gbmFtZT0idG9hc3RfeV9vZmZzZXQiPjY0ZGlwPC9kaW1lbj4KICAgICA8IS0tIEhlaWdodCBvZiB0aGUgc3RhdHVzIGJhciAtLT4KICAgICA8ZGltZW4gbmFtZT0ic3RhdHVzX2Jhcl9oZWlnaHQiPjI1ZGlwPC9kaW1lbj4KKyAgICA8IS0tIEhlaWdodCBvZiB0aGUgc3RhdHVzIGJhciAtLT4KKyAgICA8ZGltZW4gbmFtZT0ic3RhdHVzX2Jhcl9pY29uX3NpemUiPjI1ZGlwPC9kaW1lbj4KKyAgICA8IS0tIE1hcmdpbiBhdCB0aGUgZWRnZSBvZiB0aGUgc2NyZWVuIHRvIGlnbm9yZSB0b3VjaCBldmVudHMgZm9yIGluIHRoZSB3aW5kb3dzaGFkZS4gLS0+CisgICAgPGRpbWVuIG5hbWU9InN0YXR1c19iYXJfZWRnZV9pZ25vcmUiPjVkcDwvZGltZW4+CiAgICAgPCEtLSBTaXplIG9mIHRoZSBmYXN0c2Nyb2xsIGhpbnQgbGV0dGVyIC0tPgogICAgIDxkaW1lbiBuYW1lPSJmYXN0c2Nyb2xsX292ZXJsYXlfc2l6ZSI+MTA0ZHA8L2RpbWVuPgogICAgIDwhLS0gV2lkdGggb2YgdGhlIGZhc3RzY3JvbGwgdGh1bWIgLS0+CkBAIC0zOCw2ICs0Miw0IEBACiAgICAgPGRpbWVuIG5hbWU9InBhc3N3b3JkX2tleWJvYXJkX2tleV9oZWlnaHQiPjU2ZGlwPC9kaW1lbj4KICAgICA8IS0tIERlZmF1bHQgY29ycmVjdGlvbiBmb3IgdGhlIHNwYWNlIGtleSBpbiB0aGUgcGFzc3dvcmQga2V5Ym9hcmQgLS0+CiAgICAgPGRpbWVuIG5hbWU9InBhc3N3b3JkX2tleWJvYXJkX3NwYWNlYmFyX3ZlcnRpY2FsX2NvcnJlY3Rpb24iPjRkaXA8L2RpbWVuPgotICAgIDwhLS0gTWFyZ2luIGF0IHRoZSBlZGdlIG9mIHRoZSBzY3JlZW4gdG8gaWdub3JlIHRvdWNoIGV2ZW50cyBmb3IgaW4gdGhlIHdpbmRvd3NoYWRlLiAtLT4KLSAgICA8ZGltZW4gbmFtZT0ic3RhdHVzX2Jhcl9lZGdlX2lnbm9yZSI+NWRwPC9kaW1lbj4KIDwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL3ZhbHVlcy9wdWJsaWMueG1sIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy9wdWJsaWMueG1sCmluZGV4IDk4YzNhMGEuLmJkNjVmZWUgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMvcHVibGljLnhtbAorKysgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzL3B1YmxpYy54bWwKQEAgLTg2OSw4ICs4NjksMTEgQEAKICAgPHB1YmxpYyB0eXBlPSJkcmF3YWJsZSIgbmFtZT0ic3RhdF9zeXNfZG93bmxvYWQiIGlkPSIweDAxMDgwMDgxIiAvPgogICA8cHVibGljIHR5cGU9ImRyYXdhYmxlIiBuYW1lPSJzdGF0X3N5c19kb3dubG9hZF9kb25lIiBpZD0iMHgwMTA4MDA4MiIgLz4KICAgPHB1YmxpYyB0eXBlPSJkcmF3YWJsZSIgbmFtZT0ic3RhdF9zeXNfaGVhZHNldCIgaWQ9IjB4MDEwODAwODMiIC8+CisgIDwhLS0gQGRlcHJlY2F0ZWQgUmVwbGFjZWQgYnkgYSBwcml2YXRlIGFzc2V0IGluIHRoZSBwaG9uZSBhcHAuIC0tPgogICA8cHVibGljIHR5cGU9ImRyYXdhYmxlIiBuYW1lPSJzdGF0X3N5c19waG9uZV9jYWxsIiBpZD0iMHgwMTA4MDA4NCIgLz4KKyAgPCEtLSBAZGVwcmVjYXRlZCBSZXBsYWNlZCBieSBhIHByaXZhdGUgYXNzZXQgaW4gdGhlIHBob25lIGFwcC4gLS0+CiAgIDxwdWJsaWMgdHlwZT0iZHJhd2FibGUiIG5hbWU9InN0YXRfc3lzX3Bob25lX2NhbGxfZm9yd2FyZCIgaWQ9IjB4MDEwODAwODUiIC8+CisgIDwhLS0gQGRlcHJlY2F0ZWQgUmVwbGFjZWQgYnkgYSBwcml2YXRlIGFzc2V0IGluIHRoZSBwaG9uZSBhcHAuIC0tPgogICA8cHVibGljIHR5cGU9ImRyYXdhYmxlIiBuYW1lPSJzdGF0X3N5c19waG9uZV9jYWxsX29uX2hvbGQiIGlkPSIweDAxMDgwMDg2IiAvPgogICA8cHVibGljIHR5cGU9ImRyYXdhYmxlIiBuYW1lPSJzdGF0X3N5c19zcGVha2VycGhvbmUiIGlkPSIweDAxMDgwMDg3IiAvPgogICA8cHVibGljIHR5cGU9ImRyYXdhYmxlIiBuYW1lPSJzdGF0X3N5c191cGxvYWQiIGlkPSIweDAxMDgwMDg4IiAvPgpAQCAtMTEzMiw3ICsxMTM1LDkgQEAKICAgPHB1YmxpYyB0eXBlPSJzdHlsZSIgbmFtZT0iV2lkZ2V0LlByb2dyZXNzQmFyLkxhcmdlLkludmVyc2UiIGlkPSIweDAxMDMwMDVjIiAvPgogICA8cHVibGljIHR5cGU9InN0eWxlIiBuYW1lPSJXaWRnZXQuUHJvZ3Jlc3NCYXIuU21hbGwuSW52ZXJzZSIgaWQ9IjB4MDEwMzAwNWQiIC8+CiAKKyAgPCEtLSBAZGVwcmVjYXRlZCBSZXBsYWNlZCBieSBhIHByaXZhdGUgYXNzZXQgaW4gdGhlIHBob25lIGFwcC4gLS0+CiAgIDxwdWJsaWMgdHlwZT0iZHJhd2FibGUiIG5hbWU9InN0YXRfc3lzX3ZwX3Bob25lX2NhbGwiIGlkPSIweDAxMDgwMGE3IiAvPgorICA8IS0tIEBkZXByZWNhdGVkIFJlcGxhY2VkIGJ5IGEgcHJpdmF0ZSBhc3NldCBpbiB0aGUgcGhvbmUgYXBwLiAtLT4KICAgPHB1YmxpYyB0eXBlPSJkcmF3YWJsZSIgbmFtZT0ic3RhdF9zeXNfdnBfcGhvbmVfY2FsbF9vbl9ob2xkIiBpZD0iMHgwMTA4MDBhOCIgLz4KIAogICA8cHVibGljIHR5cGU9ImFuaW0iIG5hbWU9ImFudGljaXBhdGVfaW50ZXJwb2xhdG9yIiBpZD0iMHgwMTBhMDAwNyIgLz4KQEAgLTEyMzksNCArMTI0NCwzNCBAQAogICAgIAogICA8cHVibGljIHR5cGU9ImFuaW0iIG5hbWU9ImN5Y2xlX2ludGVycG9sYXRvciIgaWQ9IjB4MDEwYTAwMGMiIC8+CiAKKzwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgIFJlc291cmNlcyBpbnRyb2R1Y2VkIGluIGtyYWtlbi4KKyAgICAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgICAKKyAgPHB1YmxpYyB0eXBlPSJhdHRyIiBuYW1lPSJsb2dvIiBpZD0iMHgwMTAxMDJiZSIgLz4KKyAgPHB1YmxpYyB0eXBlPSJhdHRyIiBuYW1lPSJ4bGFyZ2VTY3JlZW5zIiBpZD0iMHgwMTAxMDJiZiIgLz4KKyAgPHB1YmxpYyB0eXBlPSJhdHRyIiBuYW1lPSJoZWF2eVdlaWdodCIgaWQ9IjB4MDEwMTAyYzAiIC8+CisgIDxwdWJsaWMgdHlwZT0iYXR0ciIgbmFtZT0iaW1tZXJzaXZlIiBpZD0iMHgwMTAxMDJjMSIgLz4KKyAgPHB1YmxpYy1wYWRkaW5nIHR5cGU9ImF0dHIiIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQiIGVuZD0iMHgwMTAxMDMwMCIgLz4KKyAgCisgIDxwdWJsaWMtcGFkZGluZyB0eXBlPSJpZCIgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZCIgZW5kPSIweDAxMDIwMDQwIiAvPgorICA8cHVibGljLXBhZGRpbmcgdHlwZT0iYW5pbSIgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZCIgZW5kPSIweDAxMGEwMDIwIiAvPgorCisgIDwhLS0gcHJlc2VuY2UgZHJhd2FibGVzIGZvciB2aWRlb2NoYXQgb3IgYXVkaW9jaGF0IGNhcGFibGUgY29udGFjdHMgLS0+CisgIDxwdWJsaWMgdHlwZT0iZHJhd2FibGUiIG5hbWU9InByZXNlbmNlX3ZpZGVvX2F3YXkiIGlkPSIweDAxMDgwMGFjIiAvPgorICA8cHVibGljIHR5cGU9ImRyYXdhYmxlIiBuYW1lPSJwcmVzZW5jZV92aWRlb19idXN5IiBpZD0iMHgwMTA4MDBhZCIgLz4KKyAgPHB1YmxpYyB0eXBlPSJkcmF3YWJsZSIgbmFtZT0icHJlc2VuY2VfdmlkZW9fb25saW5lIiBpZD0iMHgwMTA4MDBhZSIgLz4KKyAgPHB1YmxpYyB0eXBlPSJkcmF3YWJsZSIgbmFtZT0icHJlc2VuY2VfYXVkaW9fYXdheSIgaWQ9IjB4MDEwODAwYWYiIC8+CisgIDxwdWJsaWMgdHlwZT0iZHJhd2FibGUiIG5hbWU9InByZXNlbmNlX2F1ZGlvX2J1c3kiIGlkPSIweDAxMDgwMGIwIiAvPgorICA8cHVibGljIHR5cGU9ImRyYXdhYmxlIiBuYW1lPSJwcmVzZW5jZV9hdWRpb19vbmxpbmUiIGlkPSIweDAxMDgwMGIxIiAvPiAgCisgIDxwdWJsaWMtcGFkZGluZyB0eXBlPSJkcmF3YWJsZSIgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZCIgZW5kPSIweDAxMDgwMTAwIiAvPgorICAKKyAgPHB1YmxpYy1wYWRkaW5nIHR5cGU9InN0eWxlIiBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkIiBlbmQ9IjB4MDEwMzAwOTAiIC8+CisgIDxwdWJsaWMtcGFkZGluZyB0eXBlPSJzdHJpbmciIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQiIGVuZD0iMHgwMTA0MDAyMCIgLz4KKyAgPHB1YmxpYy1wYWRkaW5nIHR5cGU9ImludGVnZXIiIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQiIGVuZD0iMHgwMTBlMDAxMCIgLz4KKyAgPHB1YmxpYy1wYWRkaW5nIHR5cGU9ImxheW91dCIgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZCIgZW5kPSIweDAxMDkwMDIwIiAvPgorICA8cHVibGljLXBhZGRpbmcgdHlwZT0iZGltZW4iIG5hbWU9ImtyYWtlbl9yZXNvdXJjZV9wYWQiIGVuZD0iMHgwMTA1MDAxMCIgLz4KKyAgPHB1YmxpYy1wYWRkaW5nIHR5cGU9ImNvbG9yIiBuYW1lPSJrcmFrZW5fcmVzb3VyY2VfcGFkIiBlbmQ9IjB4MDEwNjAwMjAiIC8+CisgIDxwdWJsaWMtcGFkZGluZyB0eXBlPSJhcnJheSIgbmFtZT0ia3Jha2VuX3Jlc291cmNlX3BhZCIgZW5kPSIweDAxMDcwMDEwIiAvPgorCiA8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMvc3RyaW5ncy54bWwgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzL3N0cmluZ3MueG1sCmluZGV4IDg2YmZlOTQuLjYyZmQxNjkgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMvc3RyaW5ncy54bWwKKysrIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy9zdHJpbmdzLnhtbApAQCAtNjAsNiArNjAsMTAgQEAKICAgICA8IS0tIERpc3BsYXllZCB3aGVuIHRoZSB1c2VyIGRpYWxlZCBhbiBNTUkgY29kZSB3aG9zZSBmdW5jdGlvbgogICAgICAgICAgY291bGQgbm90IGJlIHBlcmZvcm1lZC4gVGhpcyB3aWxsIGJlIGRpc3BsYXllZCBpbiBhIHRvYXN0LiAtLT4KICAgICA8c3RyaW5nIG5hbWU9Im1taUVycm9yIj5Db25uZWN0aW9uIHByb2JsZW0gb3IgaW52YWxpZCBNTUkgY29kZS48L3N0cmluZz4KKyAgICA8IS0tIERpc3BsYXllZCB3aGVuIHRoZSB1c2VyIGRpYWxlZCBhbiBNTUkgY29kZSB3aG9zZSBmdW5jdGlvbgorICAgICAgICAgY291bGQgbm90IGJlIHBlcmZvcm1lZCBiZWNhdXNlIEZETiBpcyBlbmFibGVkLiBUaGlzIHdpbGwgYmUgZGlzcGxheWVkIGluIGEgdG9hc3QuIC0tPgorICAgIDxzdHJpbmcgbmFtZT0ibW1pRmRuRXJyb3IiPk9wZXJhdGlvbiBpcyByZXN0cmljdGVkIHRvIGZpeGVkIGRpYWxpbmcgbnVtYmVycyBvbmx5Ljwvc3RyaW5nPgorCiAgICAgPCEtLSBEaXNwbGF5ZWQgd2hlbiBhIHBob25lIGZlYXR1cmUgc3VjaCBhcyBjYWxsIGJhcnJpbmcgd2FzIGFjdGl2YXRlZC4gLS0+CiAgICAgPHN0cmluZyBuYW1lPSJzZXJ2aWNlRW5hYmxlZCI+U2VydmljZSB3YXMgZW5hYmxlZC48L3N0cmluZz4KICAgICA8IS0tIERpc3BsYXllZCBpbiBmcm9udCBvZiB0aGUgbGlzdCBvZiBhIHNldCBvZiBzZXJ2aWNlIGNsYXNzZXMKQEAgLTM4OSw2ICszOTMsMTEgQEAKICAgICAgICAgdGhlIHN0YXR1cyBiYXIgb3IgYWRkIGFuZCByZW1vdmUgc3lzdGVtIGljb25zLjwvc3RyaW5nPgogCiAgICAgPCEtLSBUaXRsZSBvZiBhbiBhcHBsaWNhdGlvbiBwZXJtaXNzaW9uLCBsaXN0ZWQgc28gdGhlIHVzZXIgY2FuIGNob29zZSB3aGV0aGVyIHRoZXkgd2FudCB0byBhbGxvdyB0aGUgYXBwbGljYXRpb24gdG8gZG8gdGhpcy4gLS0+CisgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX3N0YXR1c0JhclNlcnZpY2UiPnN0YXR1cyBiYXI8L3N0cmluZz4KKyAgICA8IS0tIERlc2NyaXB0aW9uIG9mIGFuIGFwcGxpY2F0aW9uIHBlcm1pc3Npb24sIGxpc3RlZCBzbyB0aGUgdXNlciBjYW4gY2hvb3NlIHdoZXRoZXIgdGhleSB3YW50IHRvIGFsbG93IHRoZSBhcHBsaWNhdGlvbiB0byBkbyB0aGlzLiAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX3N0YXR1c0JhclNlcnZpY2UiPkFsbG93cyB0aGUgYXBwbGljYXRpb24gdG8gYmUgdGhlIHN0YXR1cyBiYXIuPC9zdHJpbmc+CisKKyAgICA8IS0tIFRpdGxlIG9mIGFuIGFwcGxpY2F0aW9uIHBlcm1pc3Npb24sIGxpc3RlZCBzbyB0aGUgdXNlciBjYW4gY2hvb3NlIHdoZXRoZXIgdGhleSB3YW50IHRvIGFsbG93IHRoZSBhcHBsaWNhdGlvbiB0byBkbyB0aGlzLiAtLT4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfZXhwYW5kU3RhdHVzQmFyIj5leHBhbmQvY29sbGFwc2Ugc3RhdHVzIGJhcjwvc3RyaW5nPgogICAgIDwhLS0gRGVzY3JpcHRpb24gb2YgYW4gYXBwbGljYXRpb24gcGVybWlzc2lvbiwgbGlzdGVkIHNvIHRoZSB1c2VyIGNhbiBjaG9vc2Ugd2hldGhlciB0aGV5IHdhbnQgdG8gYWxsb3cgdGhlIGFwcGxpY2F0aW9uIHRvIGRvIHRoaXMuIC0tPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfZXhwYW5kU3RhdHVzQmFyIj5BbGxvd3MgYXBwbGljYXRpb24gdG8KQEAgLTg2Myw5ICs4NzIsOSBAQAogICAgICAgICB0aGUgYXVkaW8gcmVjb3JkIHBhdGguPC9zdHJpbmc+CiAKICAgICA8IS0tIFRpdGxlIG9mIGFuIGFwcGxpY2F0aW9uIHBlcm1pc3Npb24sIGxpc3RlZCBzbyB0aGUgdXNlciBjYW4gY2hvb3NlIHdoZXRoZXIgdGhleSB3YW50IHRvIGFsbG93IHRoZSBhcHBsaWNhdGlvbiB0byBkbyB0aGlzLiAtLT4KLSAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfY2FtZXJhIj50YWtlIHBpY3R1cmVzPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJwZXJtbGFiX2NhbWVyYSI+dGFrZSBwaWN0dXJlcyBhbmQgdmlkZW9zPC9zdHJpbmc+CiAgICAgPCEtLSBEZXNjcmlwdGlvbiBvZiBhbiBhcHBsaWNhdGlvbiBwZXJtaXNzaW9uLCBsaXN0ZWQgc28gdGhlIHVzZXIgY2FuIGNob29zZSB3aGV0aGVyIHRoZXkgd2FudCB0byBhbGxvdyB0aGUgYXBwbGljYXRpb24gdG8gZG8gdGhpcy4gLS0+Ci0gICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19jYW1lcmEiPkFsbG93cyBhcHBsaWNhdGlvbiB0byB0YWtlIHBpY3R1cmVzCisgICAgPHN0cmluZyBuYW1lPSJwZXJtZGVzY19jYW1lcmEiPkFsbG93cyBhcHBsaWNhdGlvbiB0byB0YWtlIHBpY3R1cmVzIGFuZCB2aWRlb3MKICAgICAgICAgd2l0aCB0aGUgY2FtZXJhLiBUaGlzIGFsbG93cyB0aGUgYXBwbGljYXRpb24gYXQgYW55IHRpbWUgdG8gY29sbGVjdAogICAgICAgICBpbWFnZXMgdGhlIGNhbWVyYSBpcyBzZWVpbmcuPC9zdHJpbmc+CiAKQEAgLTkzMCw2ICs5MzksMTEgQEAKICAgICAgICAgdGhlIGZsYXNobGlnaHQuPC9zdHJpbmc+CiAKICAgICA8IS0tIFRpdGxlIG9mIGFuIGFwcGxpY2F0aW9uIHBlcm1pc3Npb24sIGxpc3RlZCBzbyB0aGUgdXNlciBjYW4gY2hvb3NlIHdoZXRoZXIgdGhleSB3YW50IHRvIGFsbG93IHRoZSBhcHBsaWNhdGlvbiB0byBkbyB0aGlzLiAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfYWNjZXNzVXNiIj5hY2Nlc3MgVVNCIGRldmljZXM8L3N0cmluZz4KKyAgICA8IS0tIERlc2NyaXB0aW9uIG9mIGFuIGFwcGxpY2F0aW9uIHBlcm1pc3Npb24sIGxpc3RlZCBzbyB0aGUgdXNlciBjYW4gY2hvb3NlIHdoZXRoZXIgdGhleSB3YW50IHRvIGFsbG93IHRoZSBhcHBsaWNhdGlvbiB0byBkbyB0aGlzLiAtLT4KKyAgICA8c3RyaW5nIG5hbWU9InBlcm1kZXNjX2FjY2Vzc1VzYiI+QWxsb3dzIHRoZSBhcHBsaWNhdGlvbiB0byBhY2Nlc3MgVVNCIGRldmljZXMuPC9zdHJpbmc+CisKKyAgICA8IS0tIFRpdGxlIG9mIGFuIGFwcGxpY2F0aW9uIHBlcm1pc3Npb24sIGxpc3RlZCBzbyB0aGUgdXNlciBjYW4gY2hvb3NlIHdoZXRoZXIgdGhleSB3YW50IHRvIGFsbG93IHRoZSBhcHBsaWNhdGlvbiB0byBkbyB0aGlzLiAtLT4KICAgICA8c3RyaW5nIG5hbWU9InBlcm1sYWJfaGFyZHdhcmVfdGVzdCI+dGVzdCBoYXJkd2FyZTwvc3RyaW5nPgogICAgIDwhLS0gRGVzY3JpcHRpb24gb2YgYW4gYXBwbGljYXRpb24gcGVybWlzc2lvbiwgbGlzdGVkIHNvIHRoZSB1c2VyIGNhbiBjaG9vc2Ugd2hldGhlciB0aGV5IHdhbnQgdG8gYWxsb3cgdGhlIGFwcGxpY2F0aW9uIHRvIGRvIHRoaXMuIC0tPgogICAgIDxzdHJpbmcgbmFtZT0icGVybWRlc2NfaGFyZHdhcmVfdGVzdCI+QWxsb3dzIHRoZSBhcHBsaWNhdGlvbiB0byBjb250cm9sCkBAIC0xNTYzLDQ1ICsxNTc3LDYgQEAKICAgICA8IS0tIEEgZm9ybWF0IHN0cmluZyBmb3IgMTItaG91ciB0aW1lIG9mIGRheSwganVzdCB0aGUgaG91ciwgbm90IHRoZSBtaW51dGUsIHdpdGggY2FwaXRhbCAiQU0iIG9yICJQTSIgKGV4YW1wbGU6ICIzUE0iKS4gLS0+CiAgICAgPHN0cmluZyBuYW1lPSJob3VyX2NhcF9hbXBtIj4iPHhsaWZmOmcgaWQ9ImhvdXIiIGV4YW1wbGU9IjMiPiUtbDwveGxpZmY6Zz48eGxpZmY6ZyBpZD0iYW1wbSIgZXhhbXBsZT0iUE0iPiVwPC94bGlmZjpnPiI8L3N0cmluZz4KIAotICAgIDwhLS0gVGhlIHRleHQgZm9yIHRoZSBidXR0b24gaW4gdGhlIG5vdGlmaWNhdGlvbiB3aW5kb3ctc2hhZGUgdGhhdCBjbGVhcnMKLSAgICAgICAgIGFsbCBvZiB0aGUgY3VycmVudGx5IHZpc2libGUgbm90aWZpY2F0aW9ucy4gLS0+Ci0gICAgPHN0cmluZyBuYW1lPSJzdGF0dXNfYmFyX2NsZWFyX2FsbF9idXR0b24iPkNsZWFyPC9zdHJpbmc+Ci0KLSAgICA8IS0tIFRoZSBsYWJlbCBpbiB0aGUgYmFyIGF0IHRoZSB0b3Agb2YgdGhlIHN0YXR1cyBiYXIgd2hlbiB0aGVyZSBhcmUgbm8gbm90aWZpY2F0aW9ucwotICAgICAgICAgc2hvd2luZy4gLS0+Ci0gICAgPHN0cmluZyBuYW1lPSJzdGF0dXNfYmFyX25vX25vdGlmaWNhdGlvbnNfdGl0bGUiPk5vIG5vdGlmaWNhdGlvbnM8L3N0cmluZz4KLQotICAgIDwhLS0gVGhlIGxhYmVsIGZvciB0aGUgZ3JvdXAgb2Ygbm90aWZpY2F0aW9ucyBmb3Igb25nb2luZyBldmVudHMgaW4gdGhlIG9wZW5lZCB2ZXJzaW9uIG9mCi0gICAgICAgICB0aGUgc3RhdHVzIGJhci4gIEFuIG9uZ29pbmcgY2FsbCBpcyB0aGUgcHJpbWUgZXhhbXBsZSBvZiB0aGlzLiAgVGhlIE1QMyBtdXNpYyBwbGF5ZXIKLSAgICAgICAgIG1pZ2h0IGJlIGFub3RoZXIgZXhhbXBsZS4gIC0tPgotICAgIDxzdHJpbmcgbmFtZT0ic3RhdHVzX2Jhcl9vbmdvaW5nX2V2ZW50c190aXRsZSI+T25nb2luZzwvc3RyaW5nPgotCi0gICAgPCEtLSBUaGUgbGFiZWwgZm9yIHRoZSBncm91cCBvZiBub3RpZmljYXRpb25zIGZvciByZWNlbnQgZXZlbnRzIGluIHRoZSBvcGVuZWQgdmVyc2lvbiBvZgotICAgICAgICAgdGhlIHN0YXR1cyBiYXIuICBSZWNlbnRseSByZWNlaXZlZCB0ZXh0IG1lc3NzYWdlcyAoU01TKSwgZW1haWxzLCBjYWxlbmRhciBhbGVydHMsIGV0Yy4gLS0+Ci0gICAgPHN0cmluZyBuYW1lPSJzdGF0dXNfYmFyX2xhdGVzdF9ldmVudHNfdGl0bGUiPk5vdGlmaWNhdGlvbnM8L3N0cmluZz4KLQotICAgIDwhLS0gVGhlIGJpZyBwZXJjZW50IHRleHQgaW4gdGhlIG1pZGRsZSBvZiB0aGUgYmF0dGVyeSBpY29uIHRoYXQgYXBwZWFycyB3aGVuIHlvdSBwbHVnIGluCi0gICAgICAgICB0aGUgY2hhcmdlci4gLS0+Ci0gICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X3N0YXR1c190ZXh0X3BlcmNlbnRfZm9ybWF0Ij48eGxpZmY6ZyBpZD0ibnVtYmVyIiBleGFtcGxlPSI1MCI+JWQ8L3hsaWZmOmc+PHhsaWZmOmcgaWQ9InBlcmNlbnQiIGV4YW1wbGU9IiUiPiUlPC94bGlmZjpnPjwvc3RyaW5nPgotCi0gICAgPCEtLSBUaGUgYmlnIHBlcmNlbnQgdGV4dCBpbiB0aGUgbWlkZGxlIG9mIHRoZSBiYXR0ZXJ5IGljb24gdGhhdCBhcHBlYXJzIHdoZW4geW91IHBsdWcgaW4KLSAgICAgICAgIHRoZSBjaGFyZ2VyLiBUaGlzIGluZGljYXRlcyB0aGUgY3VycmVudCBzdGF0dXMgb2YgdGhlIGJhdHRlcnkuICAtLT4KLSAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfc3RhdHVzX2NoYXJnaW5nIj5DaGFyZ2luZ1x1MjAyNjwvc3RyaW5nPgotCi0gICAgPCEtLSBXaGVuIHRoZSBiYXR0ZXJ5IGlzIGxvdywgdGhpcyBpcyBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIgaW4gYSBkaWFsb2cuICBUaGUgdGl0bGUgb2YgdGhlIGxvdyBiYXR0ZXJ5IGFsZXJ0LiAtLT4KLSAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfbG93X3RpdGxlIj5QbGVhc2UgY29ubmVjdCBjaGFyZ2VyPC9zdHJpbmc+Ci0KLSAgICA8IS0tIFdoZW4gdGhlIGJhdHRlcnkgaXMgbG93LCB0aGlzIGlzIGRpc3BsYXllZCB0byB0aGUgdXNlciBpbiBhIGRpYWxvZy4gVGhlIHN1YnRpdGxlIG9mIHRoZSBsb3cgYmF0dGVyeSBhbGVydC4gLS0+Ci0gICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X2xvd19zdWJ0aXRsZSI+VGhlIGJhdHRlcnkgaXMgZ2V0dGluZyBsb3c6PC9zdHJpbmc+Ci0KLSAgICA8IS0tIEEgbWVzc2FnZSB0aGF0IGFwcGVhcnMgd2hlbiB0aGUgYmF0dGVyeSBsZXZlbCBpcyBnZXR0aW5nIGxvdyBpbiBhIGRpYWxvZy4gIFRoaXMgaXMgYXBwZW5lZCB0byB0aGUgc3VidGl0bGUgb2YgdGhlIGxvdyBiYXR0ZXJ5IGFsZXJ0LiAtLT4KLSAgICA8c3RyaW5nIG5hbWU9ImJhdHRlcnlfbG93X3BlcmNlbnRfZm9ybWF0Ij48eGxpZmY6ZyBpZD0ibnVtYmVyIj4lZCUlPC94bGlmZjpnPgotICAgIG9yIGxlc3MgcmVtYWluaW5nLjwvc3RyaW5nPgotCi0gICAgPCEtLSBXaGVuIHRoZSBiYXR0ZXJ5IGlzIGxvdywgdGhpcyBpcyB0aGUgbGFiZWwgb2YgdGhlIGJ1dHRvbiB0byBnbyB0byB0aGUKLSAgICAgICAgIHBvd2VyIHVzYWdlIGFjdGl2aXR5IHRvIGZpbmQgb3V0IHdoYXQgZHJhaW5lZCB0aGUgYmF0dGVyeS4gLS0+Ci0gICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X2xvd193aHkiPkJhdHRlcnkgdXNlPC9zdHJpbmc+Ci0KICAgICA8IS0tIFRpdGxlIG9mIHRoZSBhbGVydCB3aGVuIHNvbWV0aGluZyB3ZW50IHdyb25nIGluIHRoZSBmYWN0b3J5IHRlc3QuIC0tPgogICAgIDxzdHJpbmcgbmFtZT0iZmFjdG9yeXRlc3RfZmFpbGVkIj5GYWN0b3J5IHRlc3QgZmFpbGVkPC9zdHJpbmc+CiAgICAgPCEtLSBFcnJvciBtZXNzYWdlIGRpc3BsYXllZCB3aGVuIGEgbm9uLXN5c3RlbSBhcHBsaWNhdGlvbiB0cmllcyB0byBzdGFydCBhIGZhY3RvcnkgdGVzdC4gLS0+CkBAIC0xOTQ3LDcgKzE5MjIsNyBAQAogICAgIDxzdHJpbmcgbmFtZT0ibm9BcHBsaWNhdGlvbnMiPk5vIGFwcGxpY2F0aW9ucyBjYW4gcGVyZm9ybSB0aGlzIGFjdGlvbi48L3N0cmluZz4KICAgICA8IS0tIFRpdGxlIG9mIHRoZSBhbGVydCB3aGVuIGFuIGFwcGxpY2F0aW9uIGhhcyBjcmFzaGVkLiAtLT4KICAgICA8c3RyaW5nIG5hbWU9ImFlcnJfdGl0bGUiPlNvcnJ5ITwvc3RyaW5nPgotICAgIDwhLS0gVGV4dCBvZiB0aGUgYWxlcnQgdGhhdCBpcyBkaXNwbGF5ZWQgd2hlbiBhbiBhcHBsaWNhdGlvbiBpcyBub3QgcmVzcG9uZGluZy4gLS0+CisgICAgPCEtLSBUZXh0IG9mIHRoZSBhbGVydCB0aGF0IGlzIGRpc3BsYXllZCB3aGVuIGFuIGFwcGxpY2F0aW9uIGhhcyBjcmFzaGVkLiAtLT4KICAgICA8c3RyaW5nIG5hbWU9ImFlcnJfYXBwbGljYXRpb24iPlRoZSBhcHBsaWNhdGlvbiA8eGxpZmY6ZyBpZD0iYXBwbGljYXRpb24iPiUxJHM8L3hsaWZmOmc+CiAgICAgICAgIChwcm9jZXNzIDx4bGlmZjpnIGlkPSJwcm9jZXNzIj4lMiRzPC94bGlmZjpnPikgaGFzIHN0b3BwZWQgdW5leHBlY3RlZGx5LiBQbGVhc2UgdHJ5IGFnYWluLjwvc3RyaW5nPgogICAgIDwhLS0gVGV4dCBvZiB0aGUgYWxlcnQgdGhhdCBpcyBkaXNwbGF5ZWQgd2hlbiBhbiBhcHBsaWNhdGlvbiBoYXMgY3Jhc2hlZC4gLS0+CkBAIC0xOTcwLDggKzE5NDUsMzYgQEAKICAgICA8IS0tIEJ1dHRvbiBhbGxvd2luZyB0aGUgdXNlciB0byBjaG9vc2UgdG8gd2FpdCBmb3IgYW4gYXBwbGljYXRpb24gdGhhdCBpcyBub3QgcmVzcG9uZGluZyB0byBiZWNvbWUgcmVzcG9uc2l2ZSBhZ2Fpbi4gLS0+CiAgICAgPHN0cmluZyBuYW1lPSJ3YWl0Ij5XYWl0PC9zdHJpbmc+CiAKKyAgICA8IS0tIFRleHQgb2YgdGhlIGFsZXJ0IHRoYXQgaXMgZGlzcGxheWVkIHdoZW4gYW4gYXBwbGljYXRpb24gaGFzIHZpb2xhdGVkIFN0cmljdE1vZGUuIC0tPgorICAgIDxzdHJpbmcgbmFtZT0ic212X2FwcGxpY2F0aW9uIj5UaGUgYXBwbGljYXRpb24gPHhsaWZmOmcgaWQ9ImFwcGxpY2F0aW9uIj4lMSRzPC94bGlmZjpnPgorICAgICAgICAocHJvY2VzcyA8eGxpZmY6ZyBpZD0icHJvY2VzcyI+JTIkczwveGxpZmY6Zz4pIGhhcyB2aW9sYXRlZCBpdHMgc2VsZi1lbmZvcmNlZCBTdHJpY3RNb2RlIHBvbGljeS48L3N0cmluZz4KKyAgICA8IS0tIFRleHQgb2YgdGhlIGFsZXJ0IHRoYXQgaXMgZGlzcGxheWVkIHdoZW4gYW4gYXBwbGljYXRpb24gaGFzIHZpb2xhdGVkIFN0cmljdE1vZGUuIC0tPgorICAgIDxzdHJpbmcgbmFtZT0ic212X3Byb2Nlc3MiPlRoZSBwcm9jZXNzIDx4bGlmZjpnIGlkPSJwcm9jZXNzIj4lMSRzPC94bGlmZjpnPiBoYXMKKyAgICAgIGhhcyB2aW9sYXRlZCBpdHMgc2VsZi1lbmZvcmNlZCBTdHJpY3RNb2RlIHBvbGljeS48L3N0cmluZz4KKworICAgIDwhLS0gTm90aWZpY2F0aW9uIHRleHQgdG8gdGVsbCB0aGUgdXNlciB0aGF0IGEgaGVhdnktd2VpZ2h0IGFwcGxpY2F0aW9uIGlzIHJ1bm5pbmcuIC0tPgorICAgIDxzdHJpbmcgbmFtZT0iaGVhdnlfd2VpZ2h0X25vdGlmaWNhdGlvbiI+PHhsaWZmOmcgaWQ9ImFwcCI+JTEkczwveGxpZmY6Zz4gcnVubmluZzwvc3RyaW5nPgorICAgIAorICAgIDwhLS0gTm90aWZpY2F0aW9uIGRldGFpbHMgdG8gdGVsbCB0aGUgdXNlciB0aGF0IGEgaGVhdnktd2VpZ2h0IGFwcGxpY2F0aW9uIGlzIHJ1bm5pbmcuIC0tPgorICAgIDxzdHJpbmcgbmFtZT0iaGVhdnlfd2VpZ2h0X25vdGlmaWNhdGlvbl9kZXRhaWwiPlNlbGVjdCB0byBzd2l0Y2ggdG8gYXBwbGljYXRpb248L3N0cmluZz4KKyAgICAKKyAgICA8IS0tIFRpdGxlIG9mIGRpYWxvZyBwcm9tcHRpbmcgd2hldGhlciB1c2VyIHdhbnRzIHRvIHN3aXRjaCBiZXR3ZWVuIGhlYXZ5LXdlaWdodCBhcHBzLiAtLT4KKyAgICA8c3RyaW5nIG5hbWU9ImhlYXZ5X3dlaWdodF9zd2l0Y2hlcl90aXRsZSI+U3dpdGNoIGFwcGxpY2F0aW9ucz88L3N0cmluZz4KKyAgICAKKyAgICA8IS0tIERlc2NyaXB0aXZlIHRleHQgZm9yIHN3aXRjaGluZyB0byBhIG5ldyBoZWF2eS13ZWlnaHQgYXBwbGljYXRpb24uIC0tPgorICAgIDxzdHJpbmcgbmFtZT0iaGVhdnlfd2VpZ2h0X3N3aXRjaGVyX3RleHQiPkFub3RoZXIgYXBwbGljYXRpb24gaXMgYWxyZWFkeSBydW5uaW5nCisgICAgdGhhdCBtdXN0IGJlIHN0b3BwZWQgYmVmb3JlIHlvdSBjYW4gc3RhcnQgYSBuZXcgb25lLjwvc3RyaW5nPgorICAgIAorICAgIDxzdHJpbmcgbmFtZT0ib2xkX2FwcF9hY3Rpb24iPlJldHVybiB0byA8eGxpZmY6ZyBpZD0ib2xkX2FwcCI+JTEkczwveGxpZmY6Zz48L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9Im9sZF9hcHBfZGVzY3JpcHRpb24iPkRvblwndCBzdGFydCB0aGUgbmV3IGFwcGxpY2F0aW9uLjwvc3RyaW5nPgorICAgIAorICAgIDxzdHJpbmcgbmFtZT0ibmV3X2FwcF9hY3Rpb24iPlN0YXJ0IDx4bGlmZjpnIGlkPSJvbGRfYXBwIj4lMSRzPC94bGlmZjpnPjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0ibmV3X2FwcF9kZXNjcmlwdGlvbiI+U3RvcCB0aGUgb2xkIGFwcGxpY2F0aW9uIHdpdGhvdXQgc2F2aW5nLjwvc3RyaW5nPgorICAgIAogICAgIDwhLS0gRGlzcGxheWVkIGluIHRoZSB0aXRsZSBvZiB0aGUgY2hvb3NlciBmb3IgdGhpbmdzIHRvIGRvIHdpdGggdGV4dCB0aGF0Ci0gICAgICAgICBpcyB0byBiZSBzZW50IHRvIGFub3RoZXIgYXBwbGljYXRpb24uIEZvciBleGFtcGxlLCBJIGNhbiBzZW5kIHRleHQgdGhyb3VnaCBTTVMgb3IgSU0uICBBIGRpYWxvZyB3aXRoIHRob3NlIGNob2ljZXMgd291bGQgYmUgc2hvd24sIGFuZCB0aGlzIHdvdWxkIGJlIHRoZSB0aXRsZS4gLS0+CisgICAgICAgICBpcyB0byBiZSBzZW50IHRvIGFub3RoZXIgYXBwbGljYXRpb24uIEZvciBleGFtcGxlLCBJIGNhbiBzZW5kCisgICAgICAgICB0ZXh0IHRocm91Z2ggU01TIG9yIElNLiAgQSBkaWFsb2cgd2l0aCB0aG9zZSBjaG9pY2VzIHdvdWxkIGJlIHNob3duLAorICAgICAgICAgYW5kIHRoaXMgd291bGQgYmUgdGhlIHRpdGxlLiAtLT4KICAgICA8c3RyaW5nIG5hbWU9InNlbmRUZXh0Ij5TZWxlY3QgYW4gYWN0aW9uIGZvciB0ZXh0PC9zdHJpbmc+CiAKICAgICA8IS0tIFRpdGxlIG9mIHRoZSBkaWFsb2cgd2hlcmUgdGhlIHVzZXIgaXMgYWRqdXN0aW5nIHRoZSBwaG9uZSByaW5nZXIgdm9sdW1lIC0tPgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL3ZhbHVlcy9zdHlsZXMueG1sIGIvY29yZS9yZXMvcmVzL3ZhbHVlcy9zdHlsZXMueG1sCmluZGV4IGI1ZmZmOTYuLjAyYTYwMWEgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy92YWx1ZXMvc3R5bGVzLnhtbAorKysgYi9jb3JlL3Jlcy9yZXMvdmFsdWVzL3N0eWxlcy54bWwKQEAgLTg4LDYgKzg4LDEzIEBACiAgICAgICAgIDxpdGVtIG5hbWU9IndpbmRvd0V4aXRBbmltYXRpb24iPkBhbmltL3N0YXR1c19iYXJfZXhpdDwvaXRlbT4KICAgICA8L3N0eWxlPgogCisgICAgPCEtLSB7QGhpZGV9IC0tPgorICAgIDxzdHlsZSBuYW1lPSJBbmltYXRpb24uU3RhdHVzQmFyLkludHJ1ZGVyQWxlcnQiCisgICAgICAgIHBhcmVudD0iQGFuZHJvaWQ6c3R5bGUvQW5pbWF0aW9uLlN0YXR1c0JhciI+CisgICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6d2luZG93RW50ZXJBbmltYXRpb24iPkBhbmltL3ByaW9yaXR5X2FsZXJ0X2VudGVyPC9pdGVtPgorICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOndpbmRvd0V4aXRBbmltYXRpb24iPkBhbmltL3ByaW9yaXR5X2FsZXJ0X2V4aXQ8L2l0ZW0+CisgICAgPC9zdHlsZT4KKwogICAgIDwhLS0gU3RhbmRhcmQgYW5pbWF0aW9ucyBmb3IgYSB0cmFuc2x1Y2VudCB3aW5kb3cgb3IgYWN0aXZpdHkuICBUaGlzCiAgICAgICAgICBzdHlsZSBpcyA8ZW0+bm90PGVtPiB1c2VkIGJ5IGRlZmF1bHQgZm9yIHRoZSB0cmFuc2x1Y2VudCB0aGVtZQogICAgICAgICAgKHNpbmNlIHRyYW5zbHVjZW50IGFjdGl2aXRpZXMgYXJlIGEgc3BlY2lhbCBjYXNlIHRoYXQgaGF2ZSBubwpAQCAtMTg3LDExICsxOTQsMjYgQEAKIAogICAgIDwhLS0gU3RhdHVzIEJhciBTdHlsZXMgLS0+CiAKLSAgICA8c3R5bGUgbmFtZT0iVGV4dEFwcGVhcmFuY2UuU3RhdHVzQmFyVGl0bGUiPgorICAgIDxzdHlsZSBuYW1lPSJUZXh0QXBwZWFyYW5jZS5TdGF0dXNCYXIiPgogICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOnRleHRBcHBlYXJhbmNlIj4/YW5kcm9pZDphdHRyL3RleHRBcHBlYXJhbmNlU21hbGw8L2l0ZW0+Ci0gICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6dGV4dFN0eWxlIj5ib2xkPC9pdGVtPgogICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOnRleHRDb2xvciI+P2FuZHJvaWQ6YXR0ci90ZXh0Q29sb3JQcmltYXJ5PC9pdGVtPgogICAgIDwvc3R5bGU+CisgICAgPHN0eWxlIG5hbWU9IlRleHRBcHBlYXJhbmNlLlN0YXR1c0Jhci5UaWNrZXIiPgorICAgIDwvc3R5bGU+CisgICAgPHN0eWxlIG5hbWU9IlRleHRBcHBlYXJhbmNlLlN0YXR1c0Jhci5UaXRsZSI+CisgICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6dGV4dFN0eWxlIj5ib2xkPC9pdGVtPgorICAgIDwvc3R5bGU+CisKKyAgICA8c3R5bGUgbmFtZT0iVGV4dEFwcGVhcmFuY2UuU3RhdHVzQmFyLkljb24iPgorICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOnRleHRTdHlsZSI+Ym9sZDwvaXRlbT4KKyAgICA8L3N0eWxlPgorICAgIDxzdHlsZSBuYW1lPSJUZXh0QXBwZWFyYW5jZS5TdGF0dXNCYXIuRXZlbnRDb250ZW50Ij4KKyAgICAgICAgPGl0ZW0gbmFtZT0iYW5kcm9pZDp0ZXh0Q29sb3IiPj9hbmRyb2lkOmF0dHIvdGV4dENvbG9yUHJpbWFyeUludmVyc2U8L2l0ZW0+CisgICAgPC9zdHlsZT4KKyAgICA8c3R5bGUgbmFtZT0iVGV4dEFwcGVhcmFuY2UuU3RhdHVzQmFyLkV2ZW50Q29udGVudC5UaXRsZSI+CisgICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6dGV4dFNpemUiPjE4c3A8L2l0ZW0+CisgICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6dGV4dFN0eWxlIj5ib2xkPC9pdGVtPgorICAgIDwvc3R5bGU+CiAKICAgICA8IS0tIFdpZGdldCBTdHlsZXMgLS0+CiAKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy94bWwvcG93ZXJfcHJvZmlsZS54bWwgYi9jb3JlL3Jlcy9yZXMveG1sL3Bvd2VyX3Byb2ZpbGUueG1sCmluZGV4IGNlNjIzZTguLjMwMzEyYjMgMTAwNjQ0Ci0tLSBhL2NvcmUvcmVzL3Jlcy94bWwvcG93ZXJfcHJvZmlsZS54bWwKKysrIGIvY29yZS9yZXMvcmVzL3htbC9wb3dlcl9wcm9maWxlLnhtbApAQCAtMTgsNiArMTgsNyBAQAogLS0+CiAKIDxkZXZpY2UgbmFtZT0iQW5kcm9pZCI+CisgIDwhLS0gQWxsIHZhbHVlcyBhcmUgaW4gbUFoIGV4Y2VwdCBhcyBub3RlZCAtLT4KICAgPGl0ZW0gbmFtZT0ibm9uZSI+MDwvaXRlbT4KICAgPGl0ZW0gbmFtZT0ic2NyZWVuLm9uIj4wLjE8L2l0ZW0+CiAgIDxpdGVtIG5hbWU9ImJsdWV0b290aC5hY3RpdmUiPjAuMTwvaXRlbT4KQEAgLTQ4LDQgKzQ5LDYgQEAKICAgPGFycmF5IG5hbWU9ImNwdS5hY3RpdmUiPgogICAgICAgPHZhbHVlPjAuMjwvdmFsdWU+CiAgIDwvYXJyYXk+CisgIDwhLS0gVGhpcyBpcyB0aGUgYmF0dGVyeSBjYXBhY2l0eSBpbiBtQWggLS0+CisgIDxpdGVtIG5hbWU9ImJhdHRlcnkuY2FwYWNpdHkiPjEwMDA8L2l0ZW0+CiA8L2RldmljZT4KZGlmZiAtLWdpdCBhL2NvcmUvdGVzdHMvQ29ubmVjdGl2aXR5TWFuYWdlclRlc3QvQW5kcm9pZE1hbmlmZXN0LnhtbCBiL2NvcmUvdGVzdHMvQ29ubmVjdGl2aXR5TWFuYWdlclRlc3QvQW5kcm9pZE1hbmlmZXN0LnhtbAppbmRleCBjMzE4NTc3Li5kMjk4ZDQwIDEwMDY0NAotLS0gYS9jb3JlL3Rlc3RzL0Nvbm5lY3Rpdml0eU1hbmFnZXJUZXN0L0FuZHJvaWRNYW5pZmVzdC54bWwKKysrIGIvY29yZS90ZXN0cy9Db25uZWN0aXZpdHlNYW5hZ2VyVGVzdC9BbmRyb2lkTWFuaWZlc3QueG1sCkBAIC0yNCwyMyArMjQsMzUgQEAKICAgICA8YXBwbGljYXRpb24+CiAgICAgICAgIDx1c2VzLWxpYnJhcnkgYW5kcm9pZDpuYW1lPSJhbmRyb2lkLnRlc3QucnVubmVyIiAvPgogICAgICAgICA8YWN0aXZpdHkgYW5kcm9pZDpuYW1lPSJDb25uZWN0aXZpdHlNYW5hZ2VyVGVzdEFjdGl2aXR5IgotICAgICAgICAgIGFuZHJvaWQ6bGFiZWw9IkNNVGVzdCI+CisgICAgICAgICAgYW5kcm9pZDpsYWJlbD0iQHN0cmluZy9hcHBfbmFtZSI+CiAgICAgICAgICAgICA8aW50ZW50LWZpbHRlcj4KICAgICAgICAgICAgICAgICA8YWN0aW9uIGFuZHJvaWQ6bmFtZT0iYW5kcm9pZC5pbnRlbnQuYWN0aW9uLk1BSU4iIC8+Ci0gICAgICAgICAgICAgICAgPGNhdGVnb3J5IGFuZHJvaWQ6bmFtZT0iYW5kcm9pZC5pbnRlbnQuY2F0ZWdvcnkuVEVTVCIgLz4KKyAgICAgICAgICAgICAgICA8Y2F0ZWdvcnkgYW5kcm9pZDpuYW1lPSJhbmRyb2lkLmludGVudC5jYXRlZ29yeS5MQVVOQ0hFUiIgLz4KICAgICAgICAgICAgIDwvaW50ZW50LWZpbHRlcj4KICAgICAgICAgPC9hY3Rpdml0eT4KICAgICA8L2FwcGxpY2F0aW9uPgogICAgIDwhLS0KICAgICBUaGlzIGRlY2xhcmVzIHRoYXQgdGhpcyBhcHAgdXNlcyB0aGUgaW5zdHJ1bWVudGF0aW9uIHRlc3QgcnVubmVyIHRhcmdldGluZwotICAgIHRoZSBwYWNrYWdlIG9mIGJyb3dzZXJwb3dlcnRlc3QuIFRvIHJ1biB0aGUgdGVzdHMgdXNlIHRoZSBjb21tYW5kOgotICAgICJhZGIgc2hlbGwgYW0gaW5zdHJ1bWVudCAtdyBjb20uYW5kcm9pZC5jb25uZWN0aXZpdHltYW5hZ2VydGVzdC8uQ29ubmVjdGl2aXR5TWFuYWdlclRlc3RSdW5uZXIiCisgICAgdGhlIHBhY2thZ2Ugb2YgY29ubmVjdGl2aXR5bWFuYWdlcnRlc3QuIFRvIHJ1biB0aGUgdGVzdHMgdXNlIHRoZSBjb21tYW5kOgorICAgICJhZGIgc2hlbGwgYW0gaW5zdHJ1bWVudCAtZSBzc2lkIDxTU0lEPiAtdworICAgICAgY29tLmFuZHJvaWQuY29ubmVjdGl2aXR5bWFuYWdlcnRlc3QvLkNvbm5lY3Rpdml0eU1hbmFnZXJUZXN0UnVubmVyIiwKKyAgICAgIHRoZSBhY2Nlc3MgcG9pbnQgPFNTSUQ+IHNob3VsZCBiZSBhbiBvcGVuIEFQLgogICAgIC0tPgogICAgIDxpbnN0cnVtZW50YXRpb24gYW5kcm9pZDpuYW1lPSIuQ29ubmVjdGl2aXR5TWFuYWdlclRlc3RSdW5uZXIiCiAgICAgICAgIGFuZHJvaWQ6dGFyZ2V0UGFja2FnZT0iY29tLmFuZHJvaWQuY29ubmVjdGl2aXR5bWFuYWdlcnRlc3QiCiAgICAgICAgIGFuZHJvaWQ6bGFiZWw9IlRlc3QgcnVubmVyIGZvciBDb25uZWN0aXZpdHkgTWFuYWdlciBUZXN0cyIKICAgICAvPgogCisgICAgPCEtLQorICAgICBUbyBydW4gdGhlIHVuaXQgdGVzdHMgdXNlIHRoZSBjb21tYW5kOgorICAgICAiYWRiIHNoZWxsIGFtIGluc3RydW1lbnQgLXcKKyAgICAgY29tLmFuZHJvaWQuY29ubmVjdGl2aXR5bWFuYWdlcnRlc3QvLkNvbm5lY3Rpdml0eU1hbmFnZXJVbml0VGVzdFJ1bm5lciIKKyAgICAtLT4KKyAgICA8aW5zdHJ1bWVudGF0aW9uIGFuZHJvaWQ6bmFtZT0iLkNvbm5lY3Rpdml0eU1hbmFnZXJVbml0VGVzdFJ1bm5lciIKKyAgICAgICAgYW5kcm9pZDp0YXJnZXRQYWNrYWdlPSJjb20uYW5kcm9pZC5jb25uZWN0aXZpdHltYW5hZ2VydGVzdCIKKyAgICAgICAgYW5kcm9pZC5sYWJlbD0iVGVzdCBydW5uZXIgZm9yIHVuaXQgdGVzdHMiCisgICAgLz4KKwogICAgIDx1c2VzLXBlcm1pc3Npb24gYW5kcm9pZDpuYW1lPSJhbmRyb2lkLnBlcm1pc3Npb24uSU5URVJORVQiIC8+CiAgICAgPHVzZXMtcGVybWlzc2lvbiBhbmRyb2lkOm5hbWU9ImFuZHJvaWQucGVybWlzc2lvbi5BQ0NFU1NfV0lGSV9TVEFURSIgLz4KICAgICA8dXNlcy1wZXJtaXNzaW9uIGFuZHJvaWQ6bmFtZT0iYW5kcm9pZC5wZXJtaXNzaW9uLkFDQ0VTU19ORVRXT1JLX1NUQVRFIiAvPgpkaWZmIC0tZ2l0IGEvY29yZS90ZXN0cy9Db25uZWN0aXZpdHlNYW5hZ2VyVGVzdC9yZXMvdmFsdWVzL3N0cmluZ3MueG1sIGIvY29yZS90ZXN0cy9Db25uZWN0aXZpdHlNYW5hZ2VyVGVzdC9yZXMvdmFsdWVzL3N0cmluZ3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiNmU4MmYKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3Rlc3RzL0Nvbm5lY3Rpdml0eU1hbmFnZXJUZXN0L3Jlcy92YWx1ZXMvc3RyaW5ncy54bWwKQEAgLTAsMCArMSw0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPHJlc291cmNlcz4KKyAgICA8c3RyaW5nIG5hbWU9ImFwcF9uYW1lIj5Db25uZWN0aXZpdHlNYW5hZ2VyVGVzdDwvc3RyaW5nPgorPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9jb3JlL3Rlc3RzL0Nvbm5lY3Rpdml0eU1hbmFnZXJUZXN0L3NyYy9jb20vYW5kcm9pZC9jb25uZWN0aXZpdHltYW5hZ2VydGVzdC9Db25uZWN0aXZpdHlNYW5hZ2VyVW5pdFRlc3RSdW5uZXIuamF2YSBiL2NvcmUvdGVzdHMvQ29ubmVjdGl2aXR5TWFuYWdlclRlc3Qvc3JjL2NvbS9hbmRyb2lkL2Nvbm5lY3Rpdml0eW1hbmFnZXJ0ZXN0L0Nvbm5lY3Rpdml0eU1hbmFnZXJVbml0VGVzdFJ1bm5lci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhZGZjNzQKLS0tIC9kZXYvbnVsbAorKysgYi9jb3JlL3Rlc3RzL0Nvbm5lY3Rpdml0eU1hbmFnZXJUZXN0L3NyYy9jb20vYW5kcm9pZC9jb25uZWN0aXZpdHltYW5hZ2VydGVzdC9Db25uZWN0aXZpdHlNYW5hZ2VyVW5pdFRlc3RSdW5uZXIuamF2YQpAQCAtMCwwICsxLDQ3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwLCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuY29ubmVjdGl2aXR5bWFuYWdlcnRlc3Q7CisKK2ltcG9ydCBhbmRyb2lkLm9zLkJ1bmRsZTsKK2ltcG9ydCBhbmRyb2lkLnRlc3QuSW5zdHJ1bWVudGF0aW9uVGVzdFJ1bm5lcjsKK2ltcG9ydCBhbmRyb2lkLnRlc3QuSW5zdHJ1bWVudGF0aW9uVGVzdFN1aXRlOworaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CitpbXBvcnQgY29tLmFuZHJvaWQuY29ubmVjdGl2aXR5bWFuYWdlcnRlc3QudW5pdC5XaWZpU29mdEFQVGVzdDsKKworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0U3VpdGU7CisKKy8qKgorICogSW5zdHJ1bWVudGF0aW9uIFRlc3QgUnVubmVyIGZvciBhbGwgdW5pdCB0ZXN0cworICoKKyAqIGFkYiBzaGVsbCBhbSBpbnN0cnVtZW50IFwKKyAqICAgICAtdyBjb20uYW5kcm9pZC5jb25uZWN0aXZpdHltYW5hZ2VydGVzdC8uQ29ubmVjdGl2aXR5TWFuYWdlclVuaXRUZXN0UnVubmVyCisgKi8KKworcHVibGljIGNsYXNzIENvbm5lY3Rpdml0eU1hbmFnZXJVbml0VGVzdFJ1bm5lciBleHRlbmRzIEluc3RydW1lbnRhdGlvblRlc3RSdW5uZXIgeworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBUZXN0U3VpdGUgZ2V0QWxsVGVzdHMoKSB7CisgICAgICAgIFRlc3RTdWl0ZSBzdWl0ZSA9IG5ldyBJbnN0cnVtZW50YXRpb25UZXN0U3VpdGUodGhpcyk7CisgICAgICAgIHN1aXRlLmFkZFRlc3RTdWl0ZShXaWZpU29mdEFQVGVzdC5jbGFzcyk7CisgICAgICAgIHJldHVybiBzdWl0ZTsKKyAgICB9CisKKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBDbGFzc0xvYWRlciBnZXRMb2FkZXIoKSB7CisgICAgICAgIHJldHVybiBDb25uZWN0aXZpdHlNYW5hZ2VyVW5pdFRlc3RSdW5uZXIuY2xhc3MuZ2V0Q2xhc3NMb2FkZXIoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9jb3JlL3Rlc3RzL0Nvbm5lY3Rpdml0eU1hbmFnZXJUZXN0L3NyYy9jb20vYW5kcm9pZC9jb25uZWN0aXZpdHltYW5hZ2VydGVzdC91bml0L1dpZmlTb2Z0QVBUZXN0LmphdmEgYi9jb3JlL3Rlc3RzL0Nvbm5lY3Rpdml0eU1hbmFnZXJUZXN0L3NyYy9jb20vYW5kcm9pZC9jb25uZWN0aXZpdHltYW5hZ2VydGVzdC91bml0L1dpZmlTb2Z0QVBUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Y0M2U0OAotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvdGVzdHMvQ29ubmVjdGl2aXR5TWFuYWdlclRlc3Qvc3JjL2NvbS9hbmRyb2lkL2Nvbm5lY3Rpdml0eW1hbmFnZXJ0ZXN0L3VuaXQvV2lmaVNvZnRBUFRlc3QuamF2YQpAQCAtMCwwICsxLDg2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5jb25uZWN0aXZpdHltYW5hZ2VydGVzdC51bml0OworCitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkJyb2FkY2FzdFJlY2VpdmVyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CitpbXBvcnQgYW5kcm9pZC5hcHAuSW5zdHJ1bWVudGF0aW9uOworaW1wb3J0IGFuZHJvaWQub3MuSGFuZGxlcjsKK2ltcG9ydCBhbmRyb2lkLm9zLk1lc3NhZ2U7CitpbXBvcnQgYW5kcm9pZC5uZXQuQ29ubmVjdGl2aXR5TWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLm5ldC53aWZpLldpZmlNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQubmV0LndpZmkuV2lmaUNvbmZpZ3VyYXRpb247CitpbXBvcnQgYW5kcm9pZC5uZXQud2lmaS5XaWZpQ29uZmlndXJhdGlvbi5LZXlNZ210OworCitpbXBvcnQgYW5kcm9pZC50ZXN0LnN1aXRlYnVpbGRlci5hbm5vdGF0aW9uLkxhcmdlVGVzdDsKK2ltcG9ydCBhbmRyb2lkLnRlc3QuQW5kcm9pZFRlc3RDYXNlOworCitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKKworaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CisKKy8qKgorICogVGVzdCBXaWZpIHNvZnQgQVAgY29uZmlndXJhdGlvbgorICovCitwdWJsaWMgY2xhc3MgV2lmaVNvZnRBUFRlc3QgZXh0ZW5kcyBBbmRyb2lkVGVzdENhc2UgeworCisgICAgcHJpdmF0ZSBXaWZpTWFuYWdlciBtV2lmaU1hbmFnZXI7CisgICAgcHJpdmF0ZSBXaWZpQ29uZmlndXJhdGlvbiBtV2lmaUNvbmZpZyA9IG51bGw7CisgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgVEFHID0gIldpZmlTb2Z0QVBUZXN0IjsKKyAgICBwcml2YXRlIGZpbmFsIGludCBEVVJBVElPTiA9IDEwMDAwOworCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgc2V0VXAoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgc3VwZXIuc2V0VXAoKTsKKyAgICAgICAgbVdpZmlNYW5hZ2VyID0gKFdpZmlNYW5hZ2VyKSBnZXRDb250ZXh0KCkuZ2V0U3lzdGVtU2VydmljZShDb250ZXh0LldJRklfU0VSVklDRSk7CisgICAgICAgIGFzc2VydE5vdE51bGwobVdpZmlNYW5hZ2VyKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZShtV2lmaU1hbmFnZXIuc2V0V2lmaUFwRW5hYmxlZChudWxsLCB0cnVlKSk7CisgICAgICAgIG1XaWZpQ29uZmlnID0gbVdpZmlNYW5hZ2VyLmdldFdpZmlBcENvbmZpZ3VyYXRpb24oKTsKKyAgICAgICAgaWYgKG1XaWZpQ29uZmlnICE9IG51bGwpIHsKKyAgICAgICAgICAgIExvZy52KFRBRywgIm1XaWZpQ29uZmlnIGlzICIgKyBtV2lmaUNvbmZpZy50b1N0cmluZygpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIExvZy52KFRBRywgIm1XaWZpQ29uZmlnIGlzIG51bGwuIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCB0ZWFyRG93bigpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBMb2cudihUQUcsICJ0dXJuIG9mZiB3aWZpIHRldGhlcmluZyIpOworICAgICAgICBtV2lmaU1hbmFnZXIuc2V0V2lmaUFwRW5hYmxlZChudWxsLCBmYWxzZSk7CisgICAgICAgIHN1cGVyLnRlYXJEb3duKCk7CisgICAgfQorCisgICAgLy8gVGVzdCBjYXNlIDE6IFRlc3QgdGhlIHNvZnQgQVAgU1NJRCB3aXRoIGxldHRlcnMKKyAgICBATGFyZ2VUZXN0CisgICAgcHVibGljIHZvaWQgdGVzdEFwU3NpZFdpdGhBbHBoYWJldCgpIHsKKyAgICAgICAgV2lmaUNvbmZpZ3VyYXRpb24gY29uZmlnID0gbmV3IFdpZmlDb25maWd1cmF0aW9uKCk7CisgICAgICAgIGNvbmZpZy5TU0lEID0gImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IjsKKyAgICAgICAgY29uZmlnLmFsbG93ZWRLZXlNYW5hZ2VtZW50LnNldChLZXlNZ210Lk5PTkUpOworICAgICAgICBtV2lmaUNvbmZpZyA9IGNvbmZpZzsKKyAgICAgICAgYXNzZXJ0VHJ1ZShtV2lmaU1hbmFnZXIuc2V0V2lmaUFwRW5hYmxlZChtV2lmaUNvbmZpZywgdHJ1ZSkpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgVGhyZWFkLnNsZWVwKERVUkFUSU9OKTsKKyAgICAgICAgfSBjYXRjaCAoSW50ZXJydXB0ZWRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgTG9nLnYoVEFHLCAiZXhjZXB0aW9uICIgKyBlLmdldFN0YWNrVHJhY2UoKSk7CisgICAgICAgICAgICBhc3NlcnRGYWxzZSh0cnVlKTsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnROb3ROdWxsKG1XaWZpTWFuYWdlci5nZXRXaWZpQXBDb25maWd1cmF0aW9uKCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoIndpZmkgQVAgc3RhdGUgaXMgbm90IGVuYWJsZWQiLCBXaWZpTWFuYWdlci5XSUZJX0FQX1NUQVRFX0VOQUJMRUQsCisgICAgICAgICAgICAgICAgICAgICBtV2lmaU1hbmFnZXIuZ2V0V2lmaUFwU3RhdGUoKSk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvY29yZS90ZXN0cy9jb3JldGVzdHMvc3JjL2FuZHJvaWQvb3MvSGllcmFyY2hpY2FsU3RhdGVNYWNoaW5lVGVzdC5qYXZhIGIvY29yZS90ZXN0cy9jb3JldGVzdHMvc3JjL2FuZHJvaWQvb3MvSGllcmFyY2hpY2FsU3RhdGVNYWNoaW5lVGVzdC5qYXZhCmluZGV4IDg5YjNmYjYuLjYzOTM3MmIyIDEwMDY0NAotLS0gYS9jb3JlL3Rlc3RzL2NvcmV0ZXN0cy9zcmMvYW5kcm9pZC9vcy9IaWVyYXJjaGljYWxTdGF0ZU1hY2hpbmVUZXN0LmphdmEKKysrIGIvY29yZS90ZXN0cy9jb3JldGVzdHMvc3JjL2FuZHJvaWQvb3MvSGllcmFyY2hpY2FsU3RhdGVNYWNoaW5lVGVzdC5qYXZhCkBAIC03NCwxNSArNzQsMTUgQEAKICAgICAgICAgICAgICAgICBpZiAoaXNRdWl0KG1lc3NhZ2UpKSB7CiAgICAgICAgICAgICAgICAgICAgIG1RdWl0Q291bnQgKz0gMTsKICAgICAgICAgICAgICAgICAgICAgaWYgKG1RdWl0Q291bnQgPiAyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBSZXR1cm5pbmcgZmFsc2UgdG8gYWN0dWFsbHkgcXVpdAotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmV0dXJuaW5nIE5PVF9IQU5ETEVEIHRvIGFjdHVhbGx5IHF1aXQKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOT1RfSEFORExFRDsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERvIE5PVCBxdWl0Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBIQU5ETEVEOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfSBlbHNlICB7CiAgICAgICAgICAgICAgICAgICAgIC8vIEFsbCBvdGhlciBtZXNzYWdlIGFyZSBoYW5kbGVkCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gSEFORExFRDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTE3MiwxMiArMTcyLDE4IEBACiAKICAgICAgICAgY2xhc3MgUzEgZXh0ZW5kcyBIaWVyYXJjaGljYWxTdGF0ZSB7CiAgICAgICAgICAgICBAT3ZlcnJpZGUgcHJvdGVjdGVkIHZvaWQgZW50ZXIoKSB7CisgICAgICAgICAgICAgICAgLy8gVGVzdCB0aGF0IG1lc3NhZ2UgaXMgSFNNX0lOSVRfQ01ECisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKEhTTV9JTklUX0NNRCwgZ2V0Q3VycmVudE1lc3NhZ2UoKS53aGF0KTsKKwogICAgICAgICAgICAgICAgIC8vIFRlc3QgdGhhdCBhIHRyYW5zaXRpb24gaW4gZW50ZXIgYW5kIHRoZSBpbml0aWFsIHN0YXRlIHdvcmtzCiAgICAgICAgICAgICAgICAgbVMxRW50ZXJDb3VudCArPSAxOwogICAgICAgICAgICAgICAgIHRyYW5zaXRpb25UbyhtUzIpOwogICAgICAgICAgICAgICAgIExvZy5kKFRBRywgIlMxLmVudGVyIik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBAT3ZlcnJpZGUgcHJvdGVjdGVkIHZvaWQgZXhpdCgpIHsKKyAgICAgICAgICAgICAgICAvLyBUZXN0IHRoYXQgbWVzc2FnZSBpcyBIU01fSU5JVF9DTUQKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoSFNNX0lOSVRfQ01ELCBnZXRDdXJyZW50TWVzc2FnZSgpLndoYXQpOworCiAgICAgICAgICAgICAgICAgbVMxRXhpdENvdW50ICs9IDE7CiAgICAgICAgICAgICAgICAgTG9nLmQoVEFHLCAiUzEuZXhpdCIpOwogICAgICAgICAgICAgfQpAQCAtMTg1LDEwICsxOTEsMTYgQEAKIAogICAgICAgICBjbGFzcyBTMiBleHRlbmRzIEhpZXJhcmNoaWNhbFN0YXRlIHsKICAgICAgICAgICAgIEBPdmVycmlkZSBwcm90ZWN0ZWQgdm9pZCBlbnRlcigpIHsKKyAgICAgICAgICAgICAgICAvLyBUZXN0IHRoYXQgbWVzc2FnZSBpcyBIU01fSU5JVF9DTUQKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoSFNNX0lOSVRfQ01ELCBnZXRDdXJyZW50TWVzc2FnZSgpLndoYXQpOworCiAgICAgICAgICAgICAgICAgbVMyRW50ZXJDb3VudCArPSAxOwogICAgICAgICAgICAgICAgIExvZy5kKFRBRywgIlMyLmVudGVyIik7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBAT3ZlcnJpZGUgcHJvdGVjdGVkIHZvaWQgZXhpdCgpIHsKKyAgICAgICAgICAgICAgICAvLyBUZXN0IHRoYXQgbWVzc2FnZSBpcyBURVNUX0NNRF8xCisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKFRFU1RfQ01EXzEsIGdldEN1cnJlbnRNZXNzYWdlKCkud2hhdCk7CisKICAgICAgICAgICAgICAgICAvLyBUZXN0IHRyYW5zaXRpb24gaW4gZXhpdCB3b3JrCiAgICAgICAgICAgICAgICAgbVMyRXhpdENvdW50ICs9IDE7CiAgICAgICAgICAgICAgICAgdHJhbnNpdGlvblRvKG1TNCk7CkBAIC0xOTYsMTAgKzIwOCwxMCBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgQE92ZXJyaWRlIHByb3RlY3RlZCBib29sZWFuIHByb2Nlc3NNZXNzYWdlKE1lc3NhZ2UgbWVzc2FnZSkgewogICAgICAgICAgICAgICAgIC8vIFN0YXJ0IGEgdHJhbnNpdGlvbiB0byBTMyBidXQgaXQgd2lsbCBiZQotICAgICAgICAgICAgICAgIC8vIGNoYW5nZWQgdG8gYSB0cmFuc2l0aW9uIHRvIFM0CisgICAgICAgICAgICAgICAgLy8gY2hhbmdlZCB0byBhIHRyYW5zaXRpb24gdG8gUzQgaW4gZXhpdAogICAgICAgICAgICAgICAgIHRyYW5zaXRpb25UbyhtUzMpOwogICAgICAgICAgICAgICAgIExvZy5kKFRBRywgIlMyLnByb2Nlc3NNZXNzYWdlIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgcmV0dXJuIEhBTkRMRUQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtMjY0LDcgKzI3Niw3IEBACiAgICAgICAgIH0KIAogICAgICAgICBzeW5jaHJvbml6ZWQgKHNtRW50ZXJFeGl0VHJhbnN0aW9uVG9UZXN0KSB7Ci0gICAgICAgICAgICBzbUVudGVyRXhpdFRyYW5zdGlvblRvVGVzdC5zZW5kTWVzc2FnZSgxKTsKKyAgICAgICAgICAgIHNtRW50ZXJFeGl0VHJhbnN0aW9uVG9UZXN0LnNlbmRNZXNzYWdlKFRFU1RfQ01EXzEpOwogCiAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgIC8vIHdhaXQgZm9yIHRoZSBtZXNzYWdlcyB0byBiZSBoYW5kbGVkCkBAIC0zMjEsNyArMzMzLDcgQEAKICAgICAgICAgICAgICAgICBpZiAobWVzc2FnZS53aGF0ID09IFRFU1RfQ01EXzYpIHsKICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvblRvSGFsdGluZ1N0YXRlKCk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybiBIQU5ETEVEOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTQxNSw3ICs0MjcsNyBAQAogICAgICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMSwgbUV4aXRDb3VudCk7CiAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25Ub0hhbHRpbmdTdGF0ZSgpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSEFORExFRDsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgQE92ZXJyaWRlIHByb3RlY3RlZCB2b2lkIGV4aXQoKSB7CkBAIC01MTAsNyArNTIyLDcgQEAKICAgICAgICAgICAgICAgICBpZiAobWVzc2FnZS53aGF0ID09IFRFU1RfQ01EXzIpIHsKICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvblRvKG1TMik7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybiBIQU5ETEVEOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBAT3ZlcnJpZGUgcHJvdGVjdGVkIHZvaWQgZXhpdCgpIHsKQEAgLTUyMyw3ICs1MzUsNyBAQAogICAgICAgICAgICAgICAgIGlmIChtZXNzYWdlLndoYXQgPT0gVEVTVF9DTURfMikgewogICAgICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uVG9IYWx0aW5nU3RhdGUoKTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgcmV0dXJuIEhBTkRMRUQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtNjEyLDEzICs2MjQsMTMgQEAKICAgICAgICAgICAgICAgICBpZiAobWVzc2FnZS53aGF0ID09IFRFU1RfQ01EXzIpIHsKICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvblRvSGFsdGluZ1N0YXRlKCk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybiBIQU5ETEVEOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgY2xhc3MgQ2hpbGRTdGF0ZSBleHRlbmRzIEhpZXJhcmNoaWNhbFN0YXRlIHsKICAgICAgICAgICAgIEBPdmVycmlkZSBwcm90ZWN0ZWQgYm9vbGVhbiBwcm9jZXNzTWVzc2FnZShNZXNzYWdlIG1lc3NhZ2UpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5PVF9IQU5ETEVEOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTY5NywyMCArNzA5LDIwIEBACiAgICAgICAgICAgICAgICAgaWYgKG1lc3NhZ2Uud2hhdCA9PSBURVNUX0NNRF8yKSB7CiAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25Ub0hhbHRpbmdTdGF0ZSgpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSEFORExFRDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIGNsYXNzIENoaWxkU3RhdGUxIGV4dGVuZHMgSGllcmFyY2hpY2FsU3RhdGUgewogICAgICAgICAgICAgQE92ZXJyaWRlIHByb3RlY3RlZCBib29sZWFuIHByb2Nlc3NNZXNzYWdlKE1lc3NhZ2UgbWVzc2FnZSkgewogICAgICAgICAgICAgICAgIHRyYW5zaXRpb25UbyhtQ2hpbGRTdGF0ZTIpOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybiBIQU5ETEVEOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgY2xhc3MgQ2hpbGRTdGF0ZTIgZXh0ZW5kcyBIaWVyYXJjaGljYWxTdGF0ZSB7CiAgICAgICAgICAgICBAT3ZlcnJpZGUgcHJvdGVjdGVkIGJvb2xlYW4gcHJvY2Vzc01lc3NhZ2UoTWVzc2FnZSBtZXNzYWdlKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVybiBOT1RfSEFORExFRDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC03OTQsNyArODA2LDcgQEAKICAgICAgICAgICAgICAgICBtUGFyZW50U3RhdGUxRW50ZXJDb3VudCArPSAxOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgQE92ZXJyaWRlIHByb3RlY3RlZCBib29sZWFuIHByb2Nlc3NNZXNzYWdlKE1lc3NhZ2UgbWVzc2FnZSkgewotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybiBIQU5ETEVEOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgQE92ZXJyaWRlIHByb3RlY3RlZCB2b2lkIGV4aXQoKSB7CiAgICAgICAgICAgICAgICAgbVBhcmVudFN0YXRlMUV4aXRDb3VudCArPSAxOwpAQCAtODIyLDcgKzgzNCw3IEBACiAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIG1DaGlsZFN0YXRlNUV4aXRDb3VudCk7CiAKICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uVG8obUNoaWxkU3RhdGUyKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSEFORExFRDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEBPdmVycmlkZSBwcm90ZWN0ZWQgdm9pZCBleGl0KCkgewogICAgICAgICAgICAgICAgIG1DaGlsZFN0YXRlMUV4aXRDb3VudCArPSAxOwpAQCAtODUwLDcgKzg2Miw3IEBACiAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIG1DaGlsZFN0YXRlNUV4aXRDb3VudCk7CiAKICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uVG8obUNoaWxkU3RhdGU1KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSEFORExFRDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEBPdmVycmlkZSBwcm90ZWN0ZWQgdm9pZCBleGl0KCkgewogICAgICAgICAgICAgICAgIG1DaGlsZFN0YXRlMkV4aXRDb3VudCArPSAxOwpAQCAtODc4LDcgKzg5MCw3IEBACiAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIG1DaGlsZFN0YXRlNUV4aXRDb3VudCk7CiAKICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uVG9IYWx0aW5nU3RhdGUoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSEFORExFRDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEBPdmVycmlkZSBwcm90ZWN0ZWQgdm9pZCBleGl0KCkgewogICAgICAgICAgICAgICAgIG1QYXJlbnRTdGF0ZTJFeGl0Q291bnQgKz0gMTsKQEAgLTkwNiw3ICs5MTgsNyBAQAogICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygxLCBtQ2hpbGRTdGF0ZTVFeGl0Q291bnQpOwogCiAgICAgICAgICAgICAgICAgdHJhbnNpdGlvblRvKG1DaGlsZFN0YXRlNCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgcmV0dXJuIEhBTkRMRUQ7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBAT3ZlcnJpZGUgcHJvdGVjdGVkIHZvaWQgZXhpdCgpIHsKICAgICAgICAgICAgICAgICBtQ2hpbGRTdGF0ZTNFeGl0Q291bnQgKz0gMTsKQEAgLTkzNCw3ICs5NDYsNyBAQAogICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygxLCBtQ2hpbGRTdGF0ZTVFeGl0Q291bnQpOwogCiAgICAgICAgICAgICAgICAgdHJhbnNpdGlvblRvKG1QYXJlbnRTdGF0ZTIpOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybiBIQU5ETEVEOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgQE92ZXJyaWRlIHByb3RlY3RlZCB2b2lkIGV4aXQoKSB7CiAgICAgICAgICAgICAgICAgbUNoaWxkU3RhdGU0RXhpdENvdW50ICs9IDE7CkBAIC05NjIsNyArOTc0LDcgQEAKICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMCwgbUNoaWxkU3RhdGU1RXhpdENvdW50KTsKIAogICAgICAgICAgICAgICAgIHRyYW5zaXRpb25UbyhtQ2hpbGRTdGF0ZTMpOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybiBIQU5ETEVEOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgQE92ZXJyaWRlIHByb3RlY3RlZCB2b2lkIGV4aXQoKSB7CiAgICAgICAgICAgICAgICAgbUNoaWxkU3RhdGU1RXhpdENvdW50ICs9IDE7CkBAIC0xMTA4LDcgKzExMjAsNyBAQAogICAgICAgICAgICAgICAgICAgICBtQXJyaXZhbFRpbWVNc2cyID0gU3lzdGVtQ2xvY2suZWxhcHNlZFJlYWx0aW1lKCk7CiAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25Ub0hhbHRpbmdTdGF0ZSgpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSEFORExFRDsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgQE92ZXJyaWRlIHByb3RlY3RlZCB2b2lkIGV4aXQoKSB7CkBAIC0xMTkwLDcgKzEyMDIsNyBAQAogICAgICAgICBjbGFzcyBTMSBleHRlbmRzIEhpZXJhcmNoaWNhbFN0YXRlIHsKICAgICAgICAgICAgIEBPdmVycmlkZSBwcm90ZWN0ZWQgYm9vbGVhbiBwcm9jZXNzTWVzc2FnZShNZXNzYWdlIG1lc3NhZ2UpIHsKICAgICAgICAgICAgICAgICB0cmFuc2l0aW9uVG8obVMyKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSEFORExFRDsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEBPdmVycmlkZSBwcm90ZWN0ZWQgdm9pZCBleGl0KCkgewogICAgICAgICAgICAgICAgIHNlbmRNZXNzYWdlKFRFU1RfQ01EXzIpOwpAQCAtMTIxNiw3ICsxMjI4LDcgQEAKICAgICAgICAgICAgICAgICBpZiAobU1zZ0NvdW50ID09IDIpIHsKICAgICAgICAgICAgICAgICAgICAgdHJhbnNpdGlvblRvSGFsdGluZ1N0YXRlKCk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybiBIQU5ETEVEOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBAT3ZlcnJpZGUgcHJvdGVjdGVkIHZvaWQgZXhpdCgpIHsKQEAgLTEzMDAsNyArMTMxMiw3IEBACiAgICAgICAgICAgICAgICAgaWYgKG1lc3NhZ2Uud2hhdCA9PSBURVNUX0NNRF8yKSB7CiAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25Ub0hhbHRpbmdTdGF0ZSgpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuIE5PVF9IQU5ETEVEOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTEzNjksNyArMTM4MSw3IEBACiAgICAgICAgICAgICAgICAgaWYgKG1lc3NhZ2Uud2hhdCA9PSBURVNUX0NNRF80KSB7CiAgICAgICAgICAgICAgICAgICAgIHRyYW5zaXRpb25Ub0hhbHRpbmdTdGF0ZSgpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICByZXR1cm4gSEFORExFRDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCkBAIC0xNTYzLDEwICsxNTc1LDEwIEBACiAgICAgICAgICAgICBpZiAobWVzc2FnZS53aGF0ID09IENNRF8xKSB7CiAgICAgICAgICAgICAgICAgLy8gVHJhbnNpdGlvbiB0byBvdXJzZWxmIHRvIHNob3cgdGhhdCBlbnRlci9leGl0IGlzIGNhbGxlZAogICAgICAgICAgICAgICAgIHRyYW5zaXRpb25UbyhtUzEpOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIHJldHVybiBIQU5ETEVEOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAvLyBMZXQgcGFyZW50IHByb2Nlc3MgYWxsIG90aGVyIG1lc3NhZ2VzCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVybiBOT1RfSEFORExFRDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBAT3ZlcnJpZGUgcHJvdGVjdGVkIHZvaWQgZXhpdCgpIHsKQEAgLTE2MTgsNyArMTYzMCw3IEBACiAgICAgICAgICAgICAgICAgdHJhbnNpdGlvblRvSGFsdGluZ1N0YXRlKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybiBIQU5ETEVEOwogICAgICAgICB9CiAgICAgICAgIEBPdmVycmlkZSBwcm90ZWN0ZWQgdm9pZCBleGl0KCkgewogICAgICAgICAgICAgTG9nLmQoVEFHLCAiUDIuZXhpdCIpOwpkaWZmIC0tZ2l0IGEvY29yZS90ZXN0cy9jb3JldGVzdHMvc3JjL2FuZHJvaWQvcGltL3ZjYXJkL1ZDYXJkRXhwb3J0ZXJUZXN0cy5qYXZhIGIvY29yZS90ZXN0cy9jb3JldGVzdHMvc3JjL2FuZHJvaWQvcGltL3ZjYXJkL1ZDYXJkRXhwb3J0ZXJUZXN0cy5qYXZhCmluZGV4IDAwNGExOTcuLjJkZTA0NjQgMTAwNjQ0Ci0tLSBhL2NvcmUvdGVzdHMvY29yZXRlc3RzL3NyYy9hbmRyb2lkL3BpbS92Y2FyZC9WQ2FyZEV4cG9ydGVyVGVzdHMuamF2YQorKysgYi9jb3JlL3Rlc3RzL2NvcmV0ZXN0cy9zcmMvYW5kcm9pZC9waW0vdmNhcmQvVkNhcmRFeHBvcnRlclRlc3RzLmphdmEKQEAgLTI3NSw2ICsyNzUsMTYgQEAKICAgICAgICAgdGVzdFBob25lQmFzaWNDb21tb24oVjMwKTsKICAgICB9CiAKKyAgICBwdWJsaWMgdm9pZCB0ZXN0UGhvbmVSZWZyYWluRm9ybWF0dGluZygpIHsKKyAgICAgICAgbVZlcmlmaWVyLmluaXRGb3JFeHBvcnRUZXN0KFYyMSB8IFZDYXJkQ29uZmlnLkZMQUdfUkVGUkFJTl9QSE9ORV9OVU1CRVJfRk9STUFUVElORyk7CisgICAgICAgIG1WZXJpZmllci5hZGRJbnB1dEVudHJ5KCkuYWRkQ29udGVudFZhbHVlcyhQaG9uZS5DT05URU5UX0lURU1fVFlQRSkKKyAgICAgICAgICAgICAgICAucHV0KFBob25lLk5VTUJFUiwgIjEyMzQ1Njc4OTAoYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXopIikKKyAgICAgICAgICAgICAgICAucHV0KFBob25lLlRZUEUsIFBob25lLlRZUEVfSE9NRSk7CisgICAgICAgIG1WZXJpZmllci5hZGRQcm9wZXJ0eU5vZGVzVmVyaWZpZXJFbGVtV2l0aEVtcHR5TmFtZSgpCisgICAgICAgICAgICAgICAgLmFkZEV4cGVjdGVkTm9kZSgiVEVMIiwgIjEyMzQ1Njc4OTAoYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXopIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBUeXBlU2V0KCJIT01FIikpOworICAgIH0KKwogICAgIC8qKgogICAgICAqIFRlc3RzIHRoYXQgdkNhcmQgY29tcG9zZXIgZW1pdHMgY29ycmVzcG9uZGluZyB0eXBlIHBhcmFtIHdoaWNoIHdlIGV4cGVjdC4KICAgICAgKi8KZGlmZiAtLWdpdCBhL2NvcmUvdGVzdHMvY29yZXRlc3RzL3NyYy9hbmRyb2lkL3RleHQvUGFja2VkSW50VmVjdG9yVGVzdC5qYXZhIGIvY29yZS90ZXN0cy9jb3JldGVzdHMvc3JjL2FuZHJvaWQvdGV4dC9QYWNrZWRJbnRWZWN0b3JUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWRjNjgzZQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvdGVzdHMvY29yZXRlc3RzL3NyYy9hbmRyb2lkL3RleHQvUGFja2VkSW50VmVjdG9yVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBhbmRyb2lkLnRleHQ7CisKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2U7CisKKy8qKgorICogUGFja2VkSW50VmVjdG9yVGVzdCB0ZXN0cyB0aGUgZmVhdHVyZXMgb2YgYW5kcm9pZC51dGlsLlBhY2tlZEludFZlY3Rvci4KKyAqLworcHVibGljIGNsYXNzIFBhY2tlZEludFZlY3RvclRlc3QgZXh0ZW5kcyBUZXN0Q2FzZSB7CisgCisgICAgcHVibGljIHZvaWQgdGVzdEJhc2ljKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGZvciAoaW50IHdpZHRoID0gMDsgd2lkdGggPCAxMDsgd2lkdGgrKykgeworICAgICAgICAgICAgUGFja2VkSW50VmVjdG9yIHAgPSBuZXcgUGFja2VkSW50VmVjdG9yKHdpZHRoKTsKKyAgICAgICAgICAgIGludFtdIGlucyA9IG5ldyBpbnRbd2lkdGhdOworCisgICAgICAgICAgICBmb3IgKGludCBoZWlnaHQgPSB3aWR0aCAqIDI7IGhlaWdodCA8IHdpZHRoICogNDsgaGVpZ2h0KyspIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMocC53aWR0aCgpLCB3aWR0aCk7CisKKyAgICAgICAgICAgICAgICAvLyBUZXN0IGFkZGluZyByb3dzLgorCisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBoZWlnaHQ7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBpbnQgYXQ7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGkgJSAyID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF0ID0gaTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGF0ID0gcC5zaXplKCkgLSBpOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCB3aWR0aDsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnNbal0gPSBpICsgajsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGlmIChpID09IGhlaWdodCAvIDIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHAuaW5zZXJ0QXQoYXQsIG51bGwpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgcC5pbnNlcnRBdChhdCwgaW5zKTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyhwLnNpemUoKSwgaSArIDEpOworCisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgd2lkdGg7IGorKykgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT0gaGVpZ2h0IC8gMikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscygwLCBwLmdldFZhbHVlKGF0LCBqKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyhwLmdldFZhbHVlKGF0LCBqKSwgaSArIGopOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy8gVGVzdCBzZXR0aW5nIHZhbHVlcy4KKworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaGVpZ2h0OyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCB3aWR0aDsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwLnNldFZhbHVlKGksIGosIGkgKiBqKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKHAuZ2V0VmFsdWUoaSwgaiksIGkgKiBqKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIFRlc3Qgb2Zmc2V0dGluZyB2YWx1ZXMuCisKKyAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHdpZHRoOyBqKyspIHsKKyAgICAgICAgICAgICAgICAgICAgcC5hZGp1c3RWYWx1ZXNCZWxvdyhqICogMiwgaiwgaiArIDI3KTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGhlaWdodDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgd2lkdGg7IGorKykgeworICAgICAgICAgICAgICAgICAgICAgICAgaW50IGV4cGVjdCA9IGkgKiBqOworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA+PSBqICogMikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdCArPSBqICsgMjc7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyhwLmdldFZhbHVlKGksIGopLCBleHBlY3QpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCB3aWR0aDsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgIHAuYWRqdXN0VmFsdWVzQmVsb3coaiwgaiwgaiAqIGogKyAxNCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBoZWlnaHQ7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHdpZHRoOyBqKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBleHBlY3QgPSBpICogajsKKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPj0gaiAqIDIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3QgKz0gaiArIDI3OworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkgPj0gaikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdCArPSBqICogaiArIDE0OworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMocC5nZXRWYWx1ZShpLCBqKSwgZXhwZWN0KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIFRlc3QgdW5kb2luZyBvZmZzZXRzLgorCisgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCB3aWR0aDsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgIHAuYWRqdXN0VmFsdWVzQmVsb3coaiAqIDIsIGosIC0oaiArIDI3KSk7CisgICAgICAgICAgICAgICAgICAgIHAuYWRqdXN0VmFsdWVzQmVsb3coaiwgaiwgLShqICogaiArIDE0KSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBoZWlnaHQ7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHdpZHRoOyBqKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyhwLmdldFZhbHVlKGksIGopLCBpICogaik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBUZXN0IGRlbGV0aW5nIHJvd3MuCisKKyAgICAgICAgICAgICAgICB3aGlsZSAocC5zaXplKCkgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgIGludCBvc2l6ZSA9IHAuc2l6ZSgpOworICAgICAgICAgICAgICAgICAgICBpbnQgZGVsID0gb3NpemUgLyAzOworCisgICAgICAgICAgICAgICAgICAgIGlmIChkZWwgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgZGVsID0gMTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGludCBhdCA9IChvc2l6ZSAtIGRlbCkgLyAyOworICAgICAgICAgICAgICAgICAgICBwLmRlbGV0ZUF0KGF0LCBkZWwpOworCisgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyhwLnNpemUoKSwgb3NpemUgLSBkZWwpOworCisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXQ7IGkrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCB3aWR0aDsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKHAuZ2V0VmFsdWUoaSwgaiksIGkgKiBqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSBhdDsgaSA8IHAuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgd2lkdGg7IGorKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyhwLmdldFZhbHVlKGksIGopLCAoaSArIGhlaWdodCAtIHAuc2l6ZSgpKSAqIGopOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIHAuc2l6ZSgpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL2NvcmUvdGVzdHMvY29yZXRlc3RzL3NyYy9hbmRyb2lkL3RleHQvVGV4dFV0aWxzVGVzdC5qYXZhIGIvY29yZS90ZXN0cy9jb3JldGVzdHMvc3JjL2FuZHJvaWQvdGV4dC9UZXh0VXRpbHNUZXN0LmphdmEKaW5kZXggNWI0MjdiZS4uYTUyMjljYyAxMDA2NDQKLS0tIGEvY29yZS90ZXN0cy9jb3JldGVzdHMvc3JjL2FuZHJvaWQvdGV4dC9UZXh0VXRpbHNUZXN0LmphdmEKKysrIGIvY29yZS90ZXN0cy9jb3JldGVzdHMvc3JjL2FuZHJvaWQvdGV4dC9UZXh0VXRpbHNUZXN0LmphdmEKQEAgLTI2LDYgKzI2LDggQEAKIGltcG9ydCBhbmRyb2lkLnRleHQuVGV4dFBhaW50OwogaW1wb3J0IGFuZHJvaWQudGV4dC5UZXh0VXRpbHM7CiBpbXBvcnQgYW5kcm9pZC50ZXh0LnN0eWxlLlN0eWxlU3BhbjsKK2ltcG9ydCBhbmRyb2lkLnRleHQudXRpbC5SZmM4MjJUb2tlbjsKK2ltcG9ydCBhbmRyb2lkLnRleHQudXRpbC5SZmM4MjJUb2tlbml6ZXI7CiBpbXBvcnQgYW5kcm9pZC50ZXN0Lk1vcmVBc3NlcnRzOwogCiBpbXBvcnQgY29tLmFuZHJvaWQuY29tbW9uLlJmYzgyMlZhbGlkYXRvcjsKQEAgLTI2OSw2ICsyNzEsMjQgQEAKICAgICAgICAgfQogICAgIH0KIAorICAgIEBTbWFsbFRlc3QKKyAgICBwdWJsaWMgdm9pZCB0ZXN0UmZjODIyVG9rZW5pemVyRnVsbEFkZHJlc3MoKSB7CisgICAgICAgIFJmYzgyMlRva2VuW10gdG9rZW5zID0gUmZjODIyVG9rZW5pemVyLnRva2VuaXplKCJGb28gQmFyIChzb21ldGhpbmcpIDxmb29AZ29vZ2xlLmNvbT4iKTsKKyAgICAgICAgYXNzZXJ0Tm90TnVsbCh0b2tlbnMpOworICAgICAgICBhc3NlcnRFcXVhbHMoMSwgdG9rZW5zLmxlbmd0aCk7CisgICAgICAgIGFzc2VydEVxdWFscygiZm9vQGdvb2dsZS5jb20iLCB0b2tlbnNbMF0uZ2V0QWRkcmVzcygpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKCJGb28gQmFyIiwgdG9rZW5zWzBdLmdldE5hbWUoKSk7CisgICAgICAgIGFzc2VydEVxdWFscygic29tZXRoaW5nIix0b2tlbnNbMF0uZ2V0Q29tbWVudCgpKTsKKyAgICB9CisKKyAgICBAU21hbGxUZXN0CisgICAgcHVibGljIHZvaWQgdGVzdFJmYzgyMlRva2VuaXplSXRlbVdpdGhFcnJvcigpIHsKKyAgICAgICAgUmZjODIyVG9rZW5bXSB0b2tlbnMgPSBSZmM4MjJUb2tlbml6ZXIudG9rZW5pemUoIlwiRm9vIEJhclxcIik7CisgICAgICAgIGFzc2VydE5vdE51bGwodG9rZW5zKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIHRva2Vucy5sZW5ndGgpOworICAgICAgICBhc3NlcnRFcXVhbHMoIkZvbyBCYXIiLCB0b2tlbnNbMF0uZ2V0QWRkcmVzcygpKTsKKyAgICB9CisKICAgICBATGFyZ2VUZXN0CiAgICAgcHVibGljIHZvaWQgdGVzdEVsbGlwc2l6ZSgpIHsKICAgICAgICAgQ2hhclNlcXVlbmNlIHMxID0gIlRoZSBxdWljayBicm93biBmb3gganVtcHMgb3ZlciBcdTAwRkVoZSBsYXp5IGRvZy4iOwpkaWZmIC0tZ2l0IGEvY29yZS90ZXN0cy9jb3JldGVzdHMvc3JjL2FuZHJvaWQvdmlldy9WZWxvY2l0eVRlc3QuamF2YSBiL2NvcmUvdGVzdHMvY29yZXRlc3RzL3NyYy9hbmRyb2lkL3ZpZXcvVmVsb2NpdHlUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmIyOGUxZQotLS0gL2Rldi9udWxsCisrKyBiL2NvcmUvdGVzdHMvY29yZXRlc3RzL3NyYy9hbmRyb2lkL3ZpZXcvVmVsb2NpdHlUZXN0LmphdmEKQEAgLTAsMCArMSwyODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLmZyYW1ld29ya3Rlc3QudmlldzsKKworaW1wb3J0IGp1bml0LmZyYW1ld29yay5Bc3NlcnQ7CisKK2ltcG9ydCBhbmRyb2lkLnRlc3QuSW5zdHJ1bWVudGF0aW9uVGVzdENhc2U7CitpbXBvcnQgYW5kcm9pZC50ZXN0LnN1aXRlYnVpbGRlci5hbm5vdGF0aW9uLk1lZGl1bVRlc3Q7CitpbXBvcnQgYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50OworaW1wb3J0IGFuZHJvaWQudmlldy5WZWxvY2l0eVRyYWNrZXI7CitpbXBvcnQgYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5BY2NlbGVyYXRlSW50ZXJwb2xhdG9yOworaW1wb3J0IGFuZHJvaWQudmlldy5hbmltYXRpb24uRGVjZWxlcmF0ZUludGVycG9sYXRvcjsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkludGVycG9sYXRvcjsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkxpbmVhckludGVycG9sYXRvcjsKKworLyoqCisgKiBFeGVyY2lzZXMge0BsaW5rIGFuZHJvaWQudmlldy5WZWxvY2l0eVRyYWNrZXJ9IHRvIGNvbXB1dGUgY29ycmVjdCB2ZWxvY2l0eS48YnI+CisgKiBUbyBsYXVuY2ggdGhpcyB0ZXN0LCB1c2UgOjxicj4KKyAqIDxjb2RlPi4vZGV2ZWxvcG1lbnQvdGVzdHJ1bm5lci9ydW50ZXN0LnB5IGZyYW1ld29yayAtYyBjb20uYW5kcm9pZC5mcmFtZXdvcmt0ZXN0LnZpZXcuVmVsb2NpdHlUZXN0PC9jb2RlPgorICovCitwdWJsaWMgY2xhc3MgVmVsb2NpdHlUZXN0IGV4dGVuZHMgSW5zdHJ1bWVudGF0aW9uVGVzdENhc2UgeworCisgICAgQE1lZGl1bVRlc3QKKyAgICBwdWJsaWMgdm9pZCB0ZXN0SW5pdGlhbENvbmRpZGl0aW9ucygpIHsKKyAgICAgICAgVmVsb2NpdHlUcmFja2VyIHZ0ID0gVmVsb2NpdHlUcmFja2VyLm9idGFpbigpOworICAgICAgICBhc3NlcnROb3ROdWxsKHZ0KTsKKyAgICAgICAgdnQucmVjeWNsZSgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3QgdGhhdCB7QGxpbmsgYW5kcm9pZC52aWV3LlZlbG9jaXR5VHJhY2tlcn0uY2xlYXIoKSBjbGVhcnMKKyAgICAgKiB0aGUgcHJldmlvdXMgdmFsdWVzIGFmdGVyIGEgY2FsbCB0byBjb21wdXRlQ3VycmVudFZlbG9jaXR5KCkKKyAgICAgKi8KKyAgICBATWVkaXVtVGVzdAorICAgIHB1YmxpYyB2b2lkIHRlc3RDbGVhcigpIHsKKyAgICAgICAgbG9uZyB0ID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgIFZlbG9jaXR5VHJhY2tlciB2dCA9IFZlbG9jaXR5VHJhY2tlci5vYnRhaW4oKTsKKyAgICAgICAgZHJhZyh2dCwgMTAwLCAyMDAsIDEwMCwgMjAwLCAxMCwgdCwgMzAwKTsKKyAgICAgICAgdnQuY29tcHV0ZUN1cnJlbnRWZWxvY2l0eSgxKTsKKyAgICAgICAgYXNzZXJ0RmFsc2UoIlZlbG9jaXR5IHNob3VsZCBub3QgYmUgbnVsbCIsIHZ0LmdldFhWZWxvY2l0eSgpID09IDAuMGYpOworICAgICAgICBhc3NlcnRGYWxzZSgiVmVsb2NpdHkgc2hvdWxkIG5vdCBiZSBudWxsIiwgdnQuZ2V0WVZlbG9jaXR5KCkgPT0gMC4wZik7CisgICAgICAgIHZ0LmNsZWFyKCk7CisgICAgICAgIHZ0LmNvbXB1dGVDdXJyZW50VmVsb2NpdHkoMSk7CisgICAgICAgIGFzc2VydEVxdWFscygwLjBmLCB2dC5nZXRYVmVsb2NpdHkoKSk7CisgICAgICAgIGFzc2VydEVxdWFscygwLjBmLCB2dC5nZXRZVmVsb2NpdHkoKSk7CisgICAgICAgIHZ0LnJlY3ljbGUoKTsKKyAgICB9CisKKyAgICBATWVkaXVtVGVzdAorICAgIHB1YmxpYyB2b2lkIHRlc3REcmFnQWNjZWxlcmF0aW9uICgpIHsKKyAgICAgICAgbG9uZyB0ID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgIFZlbG9jaXR5VHJhY2tlciB2dCA9IFZlbG9jaXR5VHJhY2tlci5vYnRhaW4oKTsKKyAgICAgICAgZHJhZyh2dCwgMTAwLCAyMDAsIDEwMCwgMjAwLCAxNSwgdCwgNDAwLCBuZXcgQWNjZWxlcmF0ZUludGVycG9sYXRvcigpKTsKKyAgICAgICAgdnQuY29tcHV0ZUN1cnJlbnRWZWxvY2l0eSgxMDAwKTsKKyAgICAgICAgYXNzZXJ0R3JlYXRlcigyNTAuMGYsIHZ0LmdldFhWZWxvY2l0eSgpKTsKKyAgICAgICAgYXNzZXJ0R3JlYXRlcigyNTAuMGYsIHZ0LmdldFlWZWxvY2l0eSgpKTsKKyAgICAgICAgdnQucmVjeWNsZSgpOworICAgIH0KKworICAgIEBNZWRpdW1UZXN0CisgICAgcHVibGljIHZvaWQgdGVzdERyYWdEZWNlbGVyYXRpb24gKCkgeworICAgICAgICBsb25nIHQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgVmVsb2NpdHlUcmFja2VyIHZ0ID0gVmVsb2NpdHlUcmFja2VyLm9idGFpbigpOworICAgICAgICBkcmFnKHZ0LCAxMDAsIDIwMCwgMTAwLCAyMDAsIDE1LCB0LCA0MDAsIG5ldyBEZWNlbGVyYXRlSW50ZXJwb2xhdG9yKCkpOworICAgICAgICB2dC5jb21wdXRlQ3VycmVudFZlbG9jaXR5KDEwMDApOworICAgICAgICBhc3NlcnRMb3dlcigyNTAuMGYsIHZ0LmdldFhWZWxvY2l0eSgpKTsKKyAgICAgICAgYXNzZXJ0TG93ZXIoMjUwLjBmLCB2dC5nZXRZVmVsb2NpdHkoKSk7CisgICAgICAgIHZ0LnJlY3ljbGUoKTsKKyAgICB9CisKKyAgICBATWVkaXVtVGVzdAorICAgIHB1YmxpYyB2b2lkIHRlc3REcmFnTGluZWFySG9yaXpvbnRhbCgpIHsKKyAgICAgICAgbG9uZyB0ID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgIFZlbG9jaXR5VHJhY2tlciB2dCA9IFZlbG9jaXR5VHJhY2tlci5vYnRhaW4oKTsKKyAgICAgICAgLy8gMTAwcHggaW4gNDAwbXMgPT4gMjUwcHgvcworICAgICAgICBkcmFnKHZ0LCAxMDAsIDIwMCwgMjAwLCAyMDAsIDE1LCB0LCA0MDApOworICAgICAgICB2dC5jb21wdXRlQ3VycmVudFZlbG9jaXR5KDEwMDApOworICAgICAgICBhc3NlcnRFcXVhbHMoMC4wZiwgdnQuZ2V0WVZlbG9jaXR5KCkpOworICAgICAgICBhc3NlcnRFcXVhbEZ1enp5KDI1MC4wZiwgdnQuZ2V0WFZlbG9jaXR5KCksIDRmKTsKKyAgICAgICAgdnQucmVjeWNsZSgpOworICAgIH0KKworICAgIEBNZWRpdW1UZXN0CisgICAgcHVibGljIHZvaWQgdGVzdERyYWdMaW5lYXJWZXJ0aWNhbCgpIHsKKyAgICAgICAgbG9uZyB0ID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgIFZlbG9jaXR5VHJhY2tlciB2dCA9IFZlbG9jaXR5VHJhY2tlci5vYnRhaW4oKTsKKyAgICAgICAgLy8gMTAwcHggaW4gNDAwbXMgPT4gMjUwcHgvcworICAgICAgICBkcmFnKHZ0LCAyMDAsIDIwMCwgMTAwLCAyMDAsIDE1LCB0LCA0MDApOworICAgICAgICB2dC5jb21wdXRlQ3VycmVudFZlbG9jaXR5KDEwMDApOworICAgICAgICBhc3NlcnRFcXVhbHMoMC4wZiwgdnQuZ2V0WFZlbG9jaXR5KCkpOworICAgICAgICBhc3NlcnRFcXVhbEZ1enp5KDI1MC4wZiwgdnQuZ2V0WVZlbG9jaXR5KCksIDRmKTsKKyAgICAgICAgdnQucmVjeWNsZSgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRlc3QgZHJhZ2dpbmcgd2l0aCB0d28gcG9pbnRzIG9ubHkKKyAgICAgKiAodmVsb2NpdHkgbXVzdCBiZSBhbiBleGFjdCB2YWx1ZSkKKyAgICAgKi8KKyAgICBATWVkaXVtVGVzdAorICAgIHB1YmxpYyB2b2lkIHRlc3REcmFnV2l0aDJQb2ludHMgKCkgeworICAgICAgICBsb25nIHQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgVmVsb2NpdHlUcmFja2VyIHZ0ID0gVmVsb2NpdHlUcmFja2VyLm9idGFpbigpOworICAgICAgICAvLyAxMDBweCwgMiBzdGVwcywgMTAwbXMgPT4gMTAwMHB4L3MKKyAgICAgICAgZHJhZyh2dCwgMTAwLCAyMDAsIDEwMCwgMjAwLCAyLCB0LCAxMDApOworICAgICAgICB2dC5jb21wdXRlQ3VycmVudFZlbG9jaXR5KDEwMDApOworICAgICAgICBhc3NlcnRFcXVhbHMoMTAwMC4wZiwgdnQuZ2V0WFZlbG9jaXR5KCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoMTAwMC4wZiwgdnQuZ2V0WVZlbG9jaXR5KCkpOworICAgICAgICB2dC5yZWN5Y2xlKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVmVsb2NpdHkgaXMgaW5kZXBlbmRlbnQgb2YgdGhlIG51bWJlciBvZiBwb2ludHMgdXNlZCBkdXJpbmcKKyAgICAgKiB0aGUgc2FtZSBpbnRlcnZhbAorICAgICAqLworICAgIEBNZWRpdW1UZXN0CisgICAgcHVibGljIHZvaWQgdGVzdFN0YWJpbGl0eUluTmJQb2ludHMgKCkgeworICAgICAgICBsb25nIHQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgVmVsb2NpdHlUcmFja2VyIHZ0ID0gVmVsb2NpdHlUcmFja2VyLm9idGFpbigpOworICAgICAgICBkcmFnKHZ0LCAxMDAsIDIwMCwgMTAwLCAyMDAsIDEwLCB0LCA0MDApOyAvLyAxMCBzdGVwcyBvdmVyIDQwMG1zCisgICAgICAgIHZ0LmNvbXB1dGVDdXJyZW50VmVsb2NpdHkoMSk7CisgICAgICAgIGZsb2F0IGZpcnN0WCA9IHZ0LmdldFhWZWxvY2l0eSgpOworICAgICAgICBmbG9hdCBmaXJzdFkgPSB2dC5nZXRZVmVsb2NpdHkoKTsKKyAgICAgICAgdnQuY2xlYXIoKTsKKyAgICAgICAgZHJhZyh2dCwgMTAwLCAyMDAsIDEwMCwgMjAwLCAyMCwgdCwgNDAwKTsgLy8gMjAgc3RlcHMgb3ZlciA0MDBtcworICAgICAgICB2dC5jb21wdXRlQ3VycmVudFZlbG9jaXR5KDEpOworICAgICAgICBmbG9hdCBzZWNvbmRYID0gdnQuZ2V0WFZlbG9jaXR5KCk7CisgICAgICAgIGZsb2F0IHNlY29uZFkgPSB2dC5nZXRZVmVsb2NpdHkoKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxGdXp6eShmaXJzdFgsIHNlY29uZFgsIDAuMWYpOworICAgICAgICBhc3NlcnRFcXVhbEZ1enp5KGZpcnN0WSwgc2Vjb25kWSwgMC4xZik7CisgICAgICAgIHZ0LnJlY3ljbGUoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBWZWxvY2l0eSBpcyBpbmRlcGVuZGVudCBvZiB0aGUgdGltZSB3aGVuIHRoZSBldmVudHMgb2NjdXJzLAorICAgICAqIGl0IG9ubHkgZGVwZW5kcyBvbiBkZWxheXMgYmV0d2VlbiB0aGUgZXZlbnRzLgorICAgICAqLworICAgIEBNZWRpdW1UZXN0CisgICAgcHVibGljIHZvaWQgdGVzdFN0YWJpbGl0eUluVGltZSAoKSB7CisgICAgICAgIGxvbmcgdCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICBWZWxvY2l0eVRyYWNrZXIgdnQgPSBWZWxvY2l0eVRyYWNrZXIub2J0YWluKCk7CisgICAgICAgIGRyYWcodnQsIDEwMCwgMjAwLCAxMDAsIDIwMCwgMTAsIHQsIDQwMCk7CisgICAgICAgIHZ0LmNvbXB1dGVDdXJyZW50VmVsb2NpdHkoMSk7CisgICAgICAgIGZsb2F0IGZpcnN0WCA9IHZ0LmdldFhWZWxvY2l0eSgpOworICAgICAgICBmbG9hdCBmaXJzdFkgPSB2dC5nZXRZVmVsb2NpdHkoKTsKKyAgICAgICAgdnQuY2xlYXIoKTsKKyAgICAgICAgZHJhZyh2dCwgMTAwLCAyMDAsIDEwMCwgMjAwLCAxMCwgdCArIDM2MDAqMTAwMCwgNDAwKTsgLy8gb24gaG91ciBsYXRlcgorICAgICAgICB2dC5jb21wdXRlQ3VycmVudFZlbG9jaXR5KDEpOworICAgICAgICBmbG9hdCBzZWNvbmRYID0gdnQuZ2V0WFZlbG9jaXR5KCk7CisgICAgICAgIGZsb2F0IHNlY29uZFkgPSB2dC5nZXRZVmVsb2NpdHkoKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxGdXp6eShmaXJzdFgsIHNlY29uZFgsIDAuMWYpOworICAgICAgICBhc3NlcnRFcXVhbEZ1enp5KGZpcnN0WSwgc2Vjb25kWSwgMC4xZik7CisgICAgICAgIHZ0LnJlY3ljbGUoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBWZWxvY2l0eSBpcyBpbmRlcGVuZGVudCBvZiB0aGUgcG9zaXRpb24gb2YgdGhlIGV2ZW50cywKKyAgICAgKiBpdCBvbmx5IGRlcGVuZHMgb24gdGhlaXIgcmVsYXRpdmUgZGlzdGFuY2UuCisgICAgICovCisgICAgQE1lZGl1bVRlc3QKKyAgICBwdWJsaWMgdm9pZCB0ZXN0U3RhYmlsaXR5SW5TcGFjZSAoKSB7CisgICAgICAgIGxvbmcgdCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICBWZWxvY2l0eVRyYWNrZXIgdnQgPSBWZWxvY2l0eVRyYWNrZXIub2J0YWluKCk7CisgICAgICAgIGRyYWcodnQsIDEwMCwgMjAwLCAxMDAsIDIwMCwgMTAsIHQsIDQwMCk7CisgICAgICAgIHZ0LmNvbXB1dGVDdXJyZW50VmVsb2NpdHkoMSk7CisgICAgICAgIGZsb2F0IGZpcnN0WCA9IHZ0LmdldFhWZWxvY2l0eSgpOworICAgICAgICBmbG9hdCBmaXJzdFkgPSB2dC5nZXRZVmVsb2NpdHkoKTsKKyAgICAgICAgdnQuY2xlYXIoKTsKKyAgICAgICAgZHJhZyh2dCwgMjAwLCAzMDAsIDIwMCwgMzAwLCAxMCwgdCwgNDAwKTsgLy8gMTAwcHggZnVydGhlcgorICAgICAgICB2dC5jb21wdXRlQ3VycmVudFZlbG9jaXR5KDEpOworICAgICAgICBmbG9hdCBzZWNvbmRYID0gdnQuZ2V0WFZlbG9jaXR5KCk7CisgICAgICAgIGZsb2F0IHNlY29uZFkgPSB2dC5nZXRZVmVsb2NpdHkoKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxGdXp6eShmaXJzdFgsIHNlY29uZFgsIDAuMWYpOworICAgICAgICBhc3NlcnRFcXVhbEZ1enp5KGZpcnN0WSwgc2Vjb25kWSwgMC4xZik7CisgICAgICAgIHZ0LnJlY3ljbGUoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUZXN0IHRoYXQgY2FsbHMgdG8ge0BsaW5rIGFuZHJvaWQudmlldy5WZWxvY2l0eVRyYWNrZXJ9LmNvbXB1dGVDdXJyZW50VmVsb2NpdHkoKQorICAgICAqIHdpbGwgb3V0cHV0IHNhbWUgdmFsdWVzIHdoZW4gdXNpbmcgdGhlIHNhbWUgZGF0YS4KKyAgICAgKi8KKyAgICBATWVkaXVtVGVzdAorICAgIHB1YmxpYyB2b2lkIHRlc3RTdGFiaWxpdHlPZkNvbXB1dGF0aW9uKCkgeworICAgICAgICBsb25nIHQgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKyAgICAgICAgVmVsb2NpdHlUcmFja2VyIHZ0ID0gVmVsb2NpdHlUcmFja2VyLm9idGFpbigpOworICAgICAgICBkcmFnKHZ0LCAxMDAsIDIwMCwgMTAwLCAyMDAsIDEwLCB0LCAzMDApOworICAgICAgICB2dC5jb21wdXRlQ3VycmVudFZlbG9jaXR5KDEpOworICAgICAgICBmbG9hdCBmaXJzdFggPSB2dC5nZXRYVmVsb2NpdHkoKTsKKyAgICAgICAgZmxvYXQgZmlyc3RZID0gdnQuZ2V0WVZlbG9jaXR5KCk7CisgICAgICAgIHZ0LmNvbXB1dGVDdXJyZW50VmVsb2NpdHkoMSk7CisgICAgICAgIGZsb2F0IHNlY29uZFggPSB2dC5nZXRYVmVsb2NpdHkoKTsKKyAgICAgICAgZmxvYXQgc2Vjb25kWSA9IHZ0LmdldFlWZWxvY2l0eSgpOworICAgICAgICBhc3NlcnRFcXVhbHMoZmlyc3RYLCBzZWNvbmRYKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKGZpcnN0WSwgc2Vjb25kWSk7CisgICAgICAgIHZ0LnJlY3ljbGUoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUZXN0IHRoZSB1bml0cyBwYXJhbWV0ZXIgb2Yge0BsaW5rIGFuZHJvaWQudmlldy5WZWxvY2l0eVRyYWNrZXJ9LmNvbXB1dGVDdXJyZW50VmVsb2NpdHkoKQorICAgICAqLworICAgIEBNZWRpdW1UZXN0CisgICAgcHVibGljIHZvaWQgdGVzdFN0YWJpbGl0eU9mVW5pdHMoKSB7CisgICAgICAgIGxvbmcgdCA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICBWZWxvY2l0eVRyYWNrZXIgdnQgPSBWZWxvY2l0eVRyYWNrZXIub2J0YWluKCk7CisgICAgICAgIGRyYWcodnQsIDEwMCwgMjAwLCAxMDAsIDIwMCwgMTAsIHQsIDMwMCk7CisgICAgICAgIHZ0LmNvbXB1dGVDdXJyZW50VmVsb2NpdHkoMSk7CisgICAgICAgIGZsb2F0IGZpcnN0WCA9IHZ0LmdldFhWZWxvY2l0eSgpOworICAgICAgICBmbG9hdCBmaXJzdFkgPSB2dC5nZXRZVmVsb2NpdHkoKTsKKyAgICAgICAgdnQuY29tcHV0ZUN1cnJlbnRWZWxvY2l0eSgxMDAwKTsKKyAgICAgICAgZmxvYXQgc2Vjb25kWCA9IHZ0LmdldFhWZWxvY2l0eSgpOworICAgICAgICBmbG9hdCBzZWNvbmRZID0gdnQuZ2V0WVZlbG9jaXR5KCk7CisgICAgICAgIGFzc2VydEVxdWFsRnV6enkoZmlyc3RYLCBzZWNvbmRYIC8gMTAwMC4wZiwgMC4xZik7CisgICAgICAgIGFzc2VydEVxdWFsRnV6enkoZmlyc3RZLCBzZWNvbmRZIC8gMTAwMC4wZiwgMC4xZik7CisgICAgICAgIHZ0LnJlY3ljbGUoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTaW11bGF0ZSBhIGRyYWcgYnkgZ2l2aW5nIGRpcmVjdGx5IE1vdGlvbkV2ZW50cyB0bworICAgICAqIHRoZSBWZWxvY2l0eVRyYWNrZXIgdXNpbmcgYSBsaW5lYXIgaW50ZXJwb2xhdG9yCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIGRyYWcoVmVsb2NpdHlUcmFja2VyIHZ0LCBpbnQgc3RhcnRYLCBpbnQgZW5kWCwgaW50IHN0YXJ0WSwgaW50IGVuZFksIGludCBzdGVwcywKKyAgICAgICAgICAgIGxvbmcgc3RhcnRpbWUsIGludCBkdXJhdGlvbikgeworICAgICAgICBkcmFnKHZ0LCBzdGFydFgsIGVuZFgsIHN0YXJ0WSwgZW5kWSwgc3RlcHMsIHN0YXJ0aW1lLCBkdXJhdGlvbiwgbmV3IExpbmVhckludGVycG9sYXRvcigpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTaW11bGF0ZSBhIGRyYWcgYnkgZ2l2aW5nIGRpcmVjdGx5IE1vdGlvbkV2ZW50cyB0bworICAgICAqIHRoZSBWZWxvY2l0eVRyYWNrZXIgdXNpbmcgYSBnaXZlbiBpbnRlcnBvbGF0b3IKKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgZHJhZyhWZWxvY2l0eVRyYWNrZXIgdnQsIGludCBzdGFydFgsIGludCBlbmRYLCBpbnQgc3RhcnRZLCBpbnQgZW5kWSwgaW50IHN0ZXBzLAorICAgICAgICAgICAgbG9uZyBzdGFydGltZSwgaW50IGR1cmF0aW9uLCBJbnRlcnBvbGF0b3IgaW50ZXJwb2xhdG9yKSB7CisgICAgICAgIGFkZE1vdGlvbkV2ZW50KHZ0LCBzdGFydFgsIHN0YXJ0WSwgc3RhcnRpbWUsIE1vdGlvbkV2ZW50LkFDVElPTl9ET1dOKTsKKyAgICAgICAgZmxvYXQgZHQgPSBkdXJhdGlvbiAvIChmbG9hdClzdGVwczsKKyAgICAgICAgaW50IGRpc3RYID0gZW5kWCAtIHN0YXJ0WDsKKyAgICAgICAgaW50IGRpc3RZID0gZW5kWSAtIHN0YXJ0WTsKKyAgICAgICAgZm9yIChpbnQgaT0xOyBpPHN0ZXBzLTE7IGkrKykgeworICAgICAgICAgICAgZmxvYXQgaWkgPSBpbnRlcnBvbGF0b3IuZ2V0SW50ZXJwb2xhdGlvbihpIC8gKGZsb2F0KXN0ZXBzKTsKKyAgICAgICAgICAgIGludCB4ID0gKGludCkgKHN0YXJ0WCArIGRpc3RYICogaWkpOworICAgICAgICAgICAgaW50IHkgPSAoaW50KSAoc3RhcnRZICsgZGlzdFkgKiBpaSk7CisgICAgICAgICAgICBsb25nIHRpbWUgPSBzdGFydGltZSArIChpbnQpIChpICogZHQpOworICAgICAgICAgICAgYWRkTW90aW9uRXZlbnQodnQsIHgsIHksIHRpbWUsIE1vdGlvbkV2ZW50LkFDVElPTl9NT1ZFKTsKKyAgICAgICAgfQorICAgICAgICBhZGRNb3Rpb25FdmVudCh2dCwgZW5kWCwgZW5kWSwgc3RhcnRpbWUgKyBkdXJhdGlvbiwgTW90aW9uRXZlbnQuQUNUSU9OX1VQKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgYWRkTW90aW9uRXZlbnQoVmVsb2NpdHlUcmFja2VyIHZ0LCBpbnQgeCwgaW50IHksIGxvbmcgdGltZSwgaW50IGFjdGlvbikgeworICAgICAgICBNb3Rpb25FdmVudCBtZSA9IE1vdGlvbkV2ZW50Lm9idGFpbih0aW1lLCB0aW1lLCBhY3Rpb24sIHgsIHksIDApOworICAgICAgICB2dC5hZGRNb3ZlbWVudChtZSk7CisgICAgICAgIG1lLnJlY3ljbGUoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBGbG9hdCBpbXByZWNpc2lvbiBvZiB0aGUgYXZlcmFnZSBjb21wdXRhdGlvbnMgYW5kIGZpbHRlcmluZworICAgICAqIChyZW1vdmluZyBsYXN0IE1vdGlvbkV2ZW50IGZvciBOID4gMykgaW1wbGllcyB0aGF0IHRlc3RzCisgICAgICogIGFjY2VwdHMgc29tZSBhcHByb3hpbWF0ZWQgdmFsdWVzLgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBhc3NlcnRFcXVhbEZ1enp5KGZsb2F0IGV4cGVjdGVkLCBmbG9hdCBhY3R1YWwsIGZsb2F0IHRocmVzaG9sZCkgeworICAgICAgICBib29sZWFuIGZ1enp5RXF1YWwgPSBhY3R1YWwgPj0gZXhwZWN0ZWQgLSB0aHJlc2hvbGQgJiYgYWN0dWFsIDw9IGV4cGVjdGVkICsgdGhyZXNob2xkOworICAgICAgICBBc3NlcnQuYXNzZXJ0VHJ1ZSgiRXhwZWN0ZWQ6IDwiK2V4cGVjdGVkKyI+IGJ1dCB3YXM6IDwiK2FjdHVhbCsKKyAgICAgICAgICAgICAgICAiPiB3aGlsZSBhY2NlcHRpbmcgYSB2YXJpYXRpb24gb2Y6IDwiK3RocmVzaG9sZCsiPiIsIGZ1enp5RXF1YWwpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBhc3NlcnRHcmVhdGVyKGZsb2F0IG1pbkV4cGVjdGVkLCBmbG9hdCBhY3R1YWwpIHsKKyAgICAgICAgQXNzZXJ0LmFzc2VydFRydWUoIkV4cGVjdGVkOiBtaW5pbXVtIDwiK21pbkV4cGVjdGVkKyI+IGJ1dCB3YXM6IDwiK2FjdHVhbCsiPiIsCisgICAgICAgICAgICAgICAgYWN0dWFsID4gbWluRXhwZWN0ZWQpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBhc3NlcnRMb3dlcihmbG9hdCBtYXhFeHBlY3RlZCwgZmxvYXQgYWN0dWFsKSB7CisgICAgICAgIEFzc2VydC5hc3NlcnRUcnVlKCJFeHBlY3RlZDogbWF4aW11bSA8IittYXhFeHBlY3RlZCsiPiBidXQgd2FzOiA8IithY3R1YWwrIj4iLAorICAgICAgICAgICAgICAgIGFjdHVhbCA8IG1heEV4cGVjdGVkKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS90ZXN0cy9mcmFtZXdvcmstdGVzdHMvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL2h0dHAvbXVsdGlwYXJ0L011bHRpcGFydFRlc3QuamF2YSBiL2NvcmUvdGVzdHMvY29yZXRlc3RzL3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9odHRwL211bHRpcGFydC9NdWx0aXBhcnRUZXN0LmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHRlc3RzL2ZyYW1ld29yay10ZXN0cy9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvaHR0cC9tdWx0aXBhcnQvTXVsdGlwYXJ0VGVzdC5qYXZhCnJlbmFtZSB0byBjb3JlL3Rlc3RzL2NvcmV0ZXN0cy9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvaHR0cC9tdWx0aXBhcnQvTXVsdGlwYXJ0VGVzdC5qYXZhCmRpZmYgLS1naXQgYS90ZXN0cy9mcmFtZXdvcmstdGVzdHMvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL29zL0xvZ2dpbmdQcmludFN0cmVhbVRlc3QuamF2YSBiL2NvcmUvdGVzdHMvY29yZXRlc3RzL3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9vcy9Mb2dnaW5nUHJpbnRTdHJlYW1UZXN0LmphdmEKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHRlc3RzL2ZyYW1ld29yay10ZXN0cy9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvb3MvTG9nZ2luZ1ByaW50U3RyZWFtVGVzdC5qYXZhCnJlbmFtZSB0byBjb3JlL3Rlc3RzL2NvcmV0ZXN0cy9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvb3MvTG9nZ2luZ1ByaW50U3RyZWFtVGVzdC5qYXZhCmRpZmYgLS1naXQgYS9kYXRhL2V0Yy9hbmRyb2lkLmhhcmR3YXJlLmNhbWVyYS5mcm9udC54bWwgYi9kYXRhL2V0Yy9hbmRyb2lkLmhhcmR3YXJlLmNhbWVyYS5mcm9udC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTVhNjk5OAotLS0gL2Rldi9udWxsCisrKyBiL2RhdGEvZXRjL2FuZHJvaWQuaGFyZHdhcmUuY2FtZXJhLmZyb250LnhtbApAQCAtMCwwICsxLDIwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLSBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorCisgICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy0tPgorCis8IS0tIFRoaXMgaXMgdGhlIHN0YW5kYXJkIHNldCBvZiBmZWF0dXJlcyBmb3IgYSBmcm9udCBmYWNpbmcgY2FtZXJhLiAtLT4KKzxwZXJtaXNzaW9ucz4KKyAgICA8ZmVhdHVyZSBuYW1lPSJhbmRyb2lkLmhhcmR3YXJlLmNhbWVyYS5mcm9udCIgLz4KKzwvcGVybWlzc2lvbnM+CmRpZmYgLS1naXQgYS9kYXRhL2V0Yy9oYW5kaGVsZF9jb3JlX2hhcmR3YXJlLnhtbCBiL2RhdGEvZXRjL2hhbmRoZWxkX2NvcmVfaGFyZHdhcmUueG1sCmluZGV4IDU2NGZhODQuLmVmY2E0YzIgMTAwNjQ0Ci0tLSBhL2RhdGEvZXRjL2hhbmRoZWxkX2NvcmVfaGFyZHdhcmUueG1sCisrKyBiL2RhdGEvZXRjL2hhbmRoZWxkX2NvcmVfaGFyZHdhcmUueG1sCkBAIC0zNSw2ICszNSw4IEBACiAgICAgPCEtLSBkZXZpY2VzIHdpdGggYW4gYXV0b2ZvY3VzIGNhbWVyYSBhbmQvb3IgZmxhc2ggbXVzdCBpbmNsdWRlIGVpdGhlcgogICAgICAgICAgYW5kcm9pZC5oYXJkd2FyZS5jYW1lcmEuYXV0b2ZvY3VzLnhtbCBvciAKICAgICAgICAgIGFuZHJvaWQuaGFyZHdhcmUuY2FtZXJhLmF1dG9mb2N1cy1mbGFzaC54bWwgLS0+CisgICAgPCEtLSBkZXZpY2VzIHdpdGggYSBmcm9udCBmYWNpbmcgY2FtZXJhIG11c3QgaW5jbHVkZQorICAgICAgICAgYW5kcm9pZC5oYXJkd2FyZS5jYW1lcmEuZnJvbnQueG1sIC0tPgogICAgIDwhLS0gZGV2aWNlcyB3aXRoIFdpRmkgbXVzdCBhbHNvIGluY2x1ZGUgYW5kcm9pZC5oYXJkd2FyZS53aWZpLnhtbCAtLT4KICAgICA8IS0tIGRldmljZXMgd2l0aCBsaW1pdGVkL2dlc3R1cmFsIG11bHRpdG91Y2ggbXVzdCBhbHNvIGluY2x1ZGUKICAgICAgICAgIGFuZHJvaWQuaGFyZHdhcmUudG91Y2hzY3JlZW4ubXVsdGl0b3VjaC54bWwgLS0+CmRpZmYgLS1naXQgYS9kb2NzL2h0bWwvaW1hZ2VzL2F4aXNfZGV2aWNlLnBuZyBiL2RvY3MvaHRtbC9pbWFnZXMvYXhpc19kZXZpY2UucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxZjY2NmEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2h0bWwvaW1hZ2VzL2F4aXNfZGV2aWNlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2h0bWwvaW1hZ2VzL2F4aXNfZ2xvYmUucG5nIGIvZG9jcy9odG1sL2ltYWdlcy9heGlzX2dsb2JlLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kY2NiNThiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9odG1sL2ltYWdlcy9heGlzX2dsb2JlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2h0bWwvc2RrL2FuZHJvaWQtMi4yLmpkIGIvZG9jcy9odG1sL3Nkay9hbmRyb2lkLTIuMi5qZAppbmRleCBiYWFlOTJlLi40OTVmZDgwIDEwMDY0NAotLS0gYS9kb2NzL2h0bWwvc2RrL2FuZHJvaWQtMi4yLmpkCisrKyBiL2RvY3MvaHRtbC9zZGsvYW5kcm9pZC0yLjIuamQKQEAgLTQ2Niw0ICs0NjYsNCBAQAogPHA+Rm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgaG93IHRvIGRldmVsb3AgYW4gYXBwbGljYXRpb24gdGhhdCBkaXNwbGF5cwogYW5kIGZ1bmN0aW9ucyBwcm9wZXJseSBvbiBhbGwgQW5kcm9pZC1wb3dlcmVkIGRldmljZXMsIHNlZSA8YQogaHJlZj0ie0Bkb2NSb290fWd1aWRlL3ByYWN0aWNlcy9zY3JlZW5zX3N1cHBvcnQuaHRtbCI+U3VwcG9ydGluZyBNdWx0aXBsZQotU2NyZWVuczwvYT4uPC9wPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK1NjcmVlbnM8L2E+LjwvcD4KZGlmZiAtLWdpdCBhL2dyYXBoaWNzL2phdmEvYW5kcm9pZC9ncmFwaGljcy9Db2xvci5qYXZhIGIvZ3JhcGhpY3MvamF2YS9hbmRyb2lkL2dyYXBoaWNzL0NvbG9yLmphdmEKaW5kZXggNWNlZmFhMy4uYTUwNjkzZCAxMDA2NDQKLS0tIGEvZ3JhcGhpY3MvamF2YS9hbmRyb2lkL2dyYXBoaWNzL0NvbG9yLmphdmEKKysrIGIvZ3JhcGhpY3MvamF2YS9hbmRyb2lkL2dyYXBoaWNzL0NvbG9yLmphdmEKQEAgLTMwLDcgKzMwLDggQEAKICAqIChncmVlbiA8PCA4KSB8IGJsdWUuIEVhY2ggY29tcG9uZW50IHJhbmdlcyBiZXR3ZWVuIDAuLjI1NSB3aXRoIDAKICAqIG1lYW5pbmcgbm8gY29udHJpYnV0aW9uIGZvciB0aGF0IGNvbXBvbmVudCwgYW5kIDI1NSBtZWFuaW5nIDEwMCUKICAqIGNvbnRyaWJ1dGlvbi4gVGh1cyBvcGFxdWUtYmxhY2sgd291bGQgYmUgMHhGRjAwMDAwMCAoMTAwJSBvcGFxdWUgYnV0Ci0gKiBubyBjb250cmlidXRlcyBmcm9tIHJlZCwgZ3JlZSwgYmx1ZSwgYW5kIG9wYXF1ZS13aGl0ZSB3b3VsZCBiZSAweEZGRkZGRkZGCisgKiBubyBjb250cmlidXRpb25zIGZyb20gcmVkLCBncmVlbiwgb3IgYmx1ZSksIGFuZCBvcGFxdWUtd2hpdGUgd291bGQgYmUKKyAqIDB4RkZGRkZGRkYKICAqLwogcHVibGljIGNsYXNzIENvbG9yIHsKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBCTEFDSyAgICAgICA9IDB4RkYwMDAwMDA7CmRpZmYgLS1naXQgYS9ncmFwaGljcy9qbmkvYW5kcm9pZF9yZW5kZXJzY3JpcHRfUmVuZGVyU2NyaXB0LmNwcCBiL2dyYXBoaWNzL2puaS9hbmRyb2lkX3JlbmRlcnNjcmlwdF9SZW5kZXJTY3JpcHQuY3BwCmluZGV4IGQ4ZTAzOTMuLjQ1Y2M3MmUgMTAwNjQ0Ci0tLSBhL2dyYXBoaWNzL2puaS9hbmRyb2lkX3JlbmRlcnNjcmlwdF9SZW5kZXJTY3JpcHQuY3BwCisrKyBiL2dyYXBoaWNzL2puaS9hbmRyb2lkX3JlbmRlcnNjcmlwdF9SZW5kZXJTY3JpcHQuY3BwCkBAIC0xODUsNyArMTg1LDcgQEAKIAogICAgIH0gZWxzZSB7CiAgICAgICAgIGpjbGFzcyBzdXJmYWNlX2NsYXNzID0gX2Vudi0+RmluZENsYXNzKCJhbmRyb2lkL3ZpZXcvU3VyZmFjZSIpOwotICAgICAgICBqZmllbGRJRCBzdXJmYWNlRmllbGRJRCA9IF9lbnYtPkdldEZpZWxkSUQoc3VyZmFjZV9jbGFzcywgIm1TdXJmYWNlIiwgIkkiKTsKKyAgICAgICAgamZpZWxkSUQgc3VyZmFjZUZpZWxkSUQgPSBfZW52LT5HZXRGaWVsZElEKHN1cmZhY2VfY2xhc3MsIEFORFJPSURfVklFV19TVVJGQUNFX0pOSV9JRCwgIkkiKTsKICAgICAgICAgd2luZG93ID0gKFN1cmZhY2UqKV9lbnYtPkdldEludEZpZWxkKHduZCwgc3VyZmFjZUZpZWxkSUQpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9hbmRyb2lkX3J1bnRpbWUvQW5kcm9pZFJ1bnRpbWUuaCBiL2luY2x1ZGUvYW5kcm9pZF9ydW50aW1lL0FuZHJvaWRSdW50aW1lLmgKaW5kZXggOTlhYjJmMC4uOTdhOTZiMiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9hbmRyb2lkX3J1bnRpbWUvQW5kcm9pZFJ1bnRpbWUuaAorKysgYi9pbmNsdWRlL2FuZHJvaWRfcnVudGltZS9BbmRyb2lkUnVudGltZS5oCkBAIC04Nyw3ICs4Nyw3IEBACiAgICAgdmlydHVhbCB2b2lkIG9uRXhpdChpbnQgY29kZSk7CiAKICAgICAvKiogY3JlYXRlIGEgbmV3IHRocmVhZCB0aGF0IGlzIHZpc2libGUgZnJvbSBKYXZhICovCi0gICAgc3RhdGljIHZvaWQgY3JlYXRlSmF2YVRocmVhZChjb25zdCBjaGFyKiBuYW1lLCB2b2lkICgqc3RhcnQpKHZvaWQgKiksCisgICAgc3RhdGljIGFuZHJvaWRfdGhyZWFkX2lkX3QgY3JlYXRlSmF2YVRocmVhZChjb25zdCBjaGFyKiBuYW1lLCB2b2lkICgqc3RhcnQpKHZvaWQgKiksCiAgICAgICAgIHZvaWQqIGFyZyk7CiAKICAgICAvKiogcmV0dXJuIGEgcG9pbnRlciB0byB0aGUgVk0gcnVubmluZyBpbiB0aGlzIHByb2Nlc3MgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvYW5kcm9pZF9ydW50aW1lL2FuZHJvaWRfYXBwX05hdGl2ZUFjdGl2aXR5LmggYi9pbmNsdWRlL2FuZHJvaWRfcnVudGltZS9hbmRyb2lkX2FwcF9OYXRpdmVBY3Rpdml0eS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4MDgzMjgKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FuZHJvaWRfcnVudGltZS9hbmRyb2lkX2FwcF9OYXRpdmVBY3Rpdml0eS5oCkBAIC0wLDAgKzEsMzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIF9BTkRST0lEX0FQUF9OQVRJVkVBQ1RJVklUWV9ICisjZGVmaW5lIF9BTkRST0lEX0FQUF9OQVRJVkVBQ1RJVklUWV9ICisKKyNpbmNsdWRlIDxhbmRyb2lkL25hdGl2ZV9hY3Rpdml0eS5oPgorCisjaW5jbHVkZSAiam5pLmgiCisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworZXh0ZXJuIHZvaWQgYW5kcm9pZF9OYXRpdmVBY3Rpdml0eV9zZXRXaW5kb3dGb3JtYXQoCisgICAgICAgIEFOYXRpdmVBY3Rpdml0eSogYWN0aXZpdHksIGludDMyX3QgZm9ybWF0KTsKKworZXh0ZXJuIHZvaWQgYW5kcm9pZF9OYXRpdmVBY3Rpdml0eV9zZXRXaW5kb3dGbGFncygKKyAgICAgICAgQU5hdGl2ZUFjdGl2aXR5KiBhY3Rpdml0eSwgaW50MzJfdCB2YWx1ZXMsIGludDMyX3QgbWFzayk7CisKKworfSAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCisjZW5kaWYgLy8gX0FORFJPSURfQVBQX05BVElWRUFDVElWSVRZX0gKZGlmZiAtLWdpdCBhL2luY2x1ZGUvYW5kcm9pZF9ydW50aW1lL2FuZHJvaWRfdmlld19TdXJmYWNlLmggYi9pbmNsdWRlL2FuZHJvaWRfcnVudGltZS9hbmRyb2lkX3ZpZXdfU3VyZmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzNzkzMmUKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL2FuZHJvaWRfcnVudGltZS9hbmRyb2lkX3ZpZXdfU3VyZmFjZS5oCkBAIC0wLDAgKzEsMzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIF9BTkRST0lEX1ZJRVdfU1VSRkFDRV9ICisjZGVmaW5lIF9BTkRST0lEX1ZJRVdfU1VSRkFDRV9ICisKKyNpbmNsdWRlIDxhbmRyb2lkL25hdGl2ZV93aW5kb3cuaD4KKworI2luY2x1ZGUgImpuaS5oIgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK2V4dGVybiBzcDxBTmF0aXZlV2luZG93PiBhbmRyb2lkX1N1cmZhY2VfZ2V0TmF0aXZlV2luZG93KAorICAgICAgICBKTklFbnYqIGVudiwgam9iamVjdCBjbGF6eik7CisKK30gLy8gbmFtZXNwYWNlIGFuZHJvaWQKKworI2VuZGlmIC8vIF9BTkRST0lEX1ZJRVdfU1VSRkFDRV9ICmRpZmYgLS1naXQgYS9pbmNsdWRlL2JpbmRlci9JSW50ZXJmYWNlLmggYi9pbmNsdWRlL2JpbmRlci9JSW50ZXJmYWNlLmgKaW5kZXggMjczZDkyMi4uNWY5ZjY5YyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9iaW5kZXIvSUludGVyZmFjZS5oCisrKyBiL2luY2x1ZGUvYmluZGVyL0lJbnRlcmZhY2UuaApAQCAtNzIsMjEgKzcyLDI0IEBACiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKICNkZWZpbmUgREVDTEFSRV9NRVRBX0lOVEVSRkFDRShJTlRFUkZBQ0UpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBzdGF0aWMgY29uc3QgU3RyaW5nMTYgZGVzY3JpcHRvcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBzdGF0aWMgc3A8SSMjSU5URVJGQUNFPiBhc0ludGVyZmFjZShjb25zdCBzcDxJQmluZGVyPiYgb2JqKTsgICAgICAgIFwKLSAgICB2aXJ0dWFsIGNvbnN0IFN0cmluZzE2JiBnZXRJbnRlcmZhY2VEZXNjcmlwdG9yKCkgY29uc3Q7ICAgICAgICAgICAgIFwKKyAgICBzdGF0aWMgY29uc3QgYW5kcm9pZDo6U3RyaW5nMTYgZGVzY3JpcHRvcjsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzdGF0aWMgYW5kcm9pZDo6c3A8SSMjSU5URVJGQUNFPiBhc0ludGVyZmFjZSggICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGNvbnN0IGFuZHJvaWQ6OnNwPGFuZHJvaWQ6OklCaW5kZXI+JiBvYmopOyAgICAgICAgICAgICAgICAgIFwKKyAgICB2aXJ0dWFsIGNvbnN0IGFuZHJvaWQ6OlN0cmluZzE2JiBnZXRJbnRlcmZhY2VEZXNjcmlwdG9yKCkgY29uc3Q7ICAgIFwKICAgICBJIyNJTlRFUkZBQ0UoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgICB2aXJ0dWFsIH5JIyNJTlRFUkZBQ0UoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKIAogCiAjZGVmaW5lIElNUExFTUVOVF9NRVRBX0lOVEVSRkFDRShJTlRFUkZBQ0UsIE5BTUUpICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgY29uc3QgU3RyaW5nMTYgSSMjSU5URVJGQUNFOjpkZXNjcmlwdG9yKE5BTUUpOyAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgY29uc3QgU3RyaW5nMTYmIEkjI0lOVEVSRkFDRTo6Z2V0SW50ZXJmYWNlRGVzY3JpcHRvcigpIGNvbnN0IHsgICAgICBcCisgICAgY29uc3QgYW5kcm9pZDo6U3RyaW5nMTYgSSMjSU5URVJGQUNFOjpkZXNjcmlwdG9yKE5BTUUpOyAgICAgICAgICAgICBcCisgICAgY29uc3QgYW5kcm9pZDo6U3RyaW5nMTYmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBJIyNJTlRFUkZBQ0U6OmdldEludGVyZmFjZURlc2NyaXB0b3IoKSBjb25zdCB7ICAgICAgICAgICAgICBcCiAgICAgICAgIHJldHVybiBJIyNJTlRFUkZBQ0U6OmRlc2NyaXB0b3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgc3A8SSMjSU5URVJGQUNFPiBJIyNJTlRFUkZBQ0U6OmFzSW50ZXJmYWNlKGNvbnN0IHNwPElCaW5kZXI+JiBvYmopICBcCisgICAgYW5kcm9pZDo6c3A8SSMjSU5URVJGQUNFPiBJIyNJTlRFUkZBQ0U6OmFzSW50ZXJmYWNlKCAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBjb25zdCBhbmRyb2lkOjpzcDxhbmRyb2lkOjpJQmluZGVyPiYgb2JqKSAgICAgICAgICAgICAgICAgICBcCiAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHNwPEkjI0lOVEVSRkFDRT4gaW50cjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGFuZHJvaWQ6OnNwPEkjI0lOVEVSRkFDRT4gaW50cjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIGlmIChvYmogIT0gTlVMTCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICBpbnRyID0gc3RhdGljX2Nhc3Q8SSMjSU5URVJGQUNFKj4oICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgICAgICAgICAgb2JqLT5xdWVyeUxvY2FsSW50ZXJmYWNlKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCmRpZmYgLS1naXQgYS9pbmNsdWRlL2JpbmRlci9JUENUaHJlYWRTdGF0ZS5oIGIvaW5jbHVkZS9iaW5kZXIvSVBDVGhyZWFkU3RhdGUuaAppbmRleCAzYWI5ODVkLi4wNGUyNGQyIDEwMDY0NAotLS0gYS9pbmNsdWRlL2JpbmRlci9JUENUaHJlYWRTdGF0ZS5oCisrKyBiL2luY2x1ZGUvYmluZGVyL0lQQ1RocmVhZFN0YXRlLmgKQEAgLTQwLDYgKzQwLDkgQEAKIAogICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICBnZXRDYWxsaW5nUGlkKCk7CiAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgIGdldENhbGxpbmdVaWQoKTsKKworICAgICAgICAgICAgdm9pZCAgICAgICAgICAgICAgICBzZXRTdHJpY3RNb2RlUG9saWN5KGludDMyX3QgcG9saWN5KTsKKyAgICAgICAgICAgIGludDMyX3QgICAgICAgICAgICAgZ2V0U3RyaWN0TW9kZVBvbGljeSgpIGNvbnN0OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBpbnQ2NF90ICAgICAgICAgICAgIGNsZWFyQ2FsbGluZ0lkZW50aXR5KCk7CiAgICAgICAgICAgICB2b2lkICAgICAgICAgICAgICAgIHJlc3RvcmVDYWxsaW5nSWRlbnRpdHkoaW50NjRfdCB0b2tlbik7CkBAIC0xMDksOCArMTEyLDkgQEAKICAgICAgICAgICAgIHN0YXR1c190ICAgICAgICAgICAgbUxhc3RFcnJvcjsKICAgICAgICAgICAgIHBpZF90ICAgICAgICAgICAgICAgbUNhbGxpbmdQaWQ7CiAgICAgICAgICAgICB1aWRfdCAgICAgICAgICAgICAgIG1DYWxsaW5nVWlkOworICAgICAgICAgICAgaW50MzJfdCAgICAgICAgICAgICBtU3RyaWN0TW9kZVBvbGljeTsKIH07Ci0gICAgCisKIH07IC8vIG5hbWVzcGFjZSBhbmRyb2lkCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9iaW5kZXIvUGFyY2VsLmggYi9pbmNsdWRlL2JpbmRlci9QYXJjZWwuaAppbmRleCA2NmMzNGIyLi4yY2M0ZGI5IDEwMDY0NAotLS0gYS9pbmNsdWRlL2JpbmRlci9QYXJjZWwuaAorKysgYi9pbmNsdWRlL2JpbmRlci9QYXJjZWwuaApAQCAtNTYsOSArNTYsMTIgQEAKIAogICAgIGJvb2wgICAgICAgICAgICAgICAgaGFzRmlsZURlc2NyaXB0b3JzKCkgY29uc3Q7CiAKKyAgICAvLyBXcml0ZXMgdGhlIFJQQyBoZWFkZXIuCiAgICAgc3RhdHVzX3QgICAgICAgICAgICB3cml0ZUludGVyZmFjZVRva2VuKGNvbnN0IFN0cmluZzE2JiBpbnRlcmZhY2UpOworICAgIC8vIFBhcnNlcyB0aGUgUlBDIGhlYWRlciwgcmV0dXJuaW5nIHRydWUgaWYgdGhlIGludGVyZmFjZSBuYW1lCisgICAgLy8gaW4gdGhlIGhlYWRlciBtYXRjaGVzIHRoZSBleHBlY3RlZCBpbnRlcmZhY2UgZnJvbSB0aGUgY2FsbGVyLgogICAgIGJvb2wgICAgICAgICAgICAgICAgZW5mb3JjZUludGVyZmFjZShjb25zdCBTdHJpbmcxNiYgaW50ZXJmYWNlKSBjb25zdDsKLSAgICBib29sICAgICAgICAgICAgICAgIGNoZWNrSW50ZXJmYWNlKElCaW5kZXIqKSBjb25zdDsgICAgCisgICAgYm9vbCAgICAgICAgICAgICAgICBjaGVja0ludGVyZmFjZShJQmluZGVyKikgY29uc3Q7CiAKICAgICB2b2lkICAgICAgICAgICAgICAgIGZyZWVEYXRhKCk7CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY2FtZXJhL0NhbWVyYS5oIGIvaW5jbHVkZS9jYW1lcmEvQ2FtZXJhLmgKaW5kZXggZWUyYjMwYy4uOTk3NGYyZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jYW1lcmEvQ2FtZXJhLmgKKysrIGIvaW5jbHVkZS9jYW1lcmEvQ2FtZXJhLmgKQEAgLTkzLDYgKzkzLDMyIEBACiAgICAgQ0FNRVJBX0VSUk9SX1NFUlZFUl9ESUVEID0gMTAwCiB9OwogCitlbnVtIHsKKyAgICBDQU1FUkFfRkFDSU5HX0JBQ0sgPSAwLAorICAgIENBTUVSQV9GQUNJTkdfRlJPTlQgPSAxIC8qIFRoZSBjYW1lcmEgZmFjZXMgdG8gdGhlIHVzZXIgKi8KK307CisKK3N0cnVjdCBDYW1lcmFJbmZvIHsKKworICAgIC8qKgorICAgICAqIFRoZSBkaXJlY3Rpb24gdGhhdCB0aGUgY2FtZXJhIGZhY2VzIHRvLiBJdCBzaG91bGQgYmUKKyAgICAgKiBDQU1FUkFfRkFDSU5HX0JBQ0sgb3IgQ0FNRVJBX0ZBQ0lOR19GUk9OVC4KKyAgICAgKi8KKyAgICBpbnQgZmFjaW5nOworCisgICAgLyoqCisgICAgICogVGhlIG9yaWVudGF0aW9uIG9mIHRoZSBjYW1lcmEgaW1hZ2UuIFRoZSB2YWx1ZSBpcyB0aGUgYW5nbGUgdGhhdCB0aGUKKyAgICAgKiBjYW1lcmEgaW1hZ2UgbmVlZHMgdG8gYmUgcm90YXRlZCBjbG9ja3dpc2Ugc28gaXQgc2hvd3MgY29ycmVjdGx5IG9uCisgICAgICogdGhlIGRpc3BsYXkgaW4gaXRzIG5hdHVyYWwgb3JpZW50YXRpb24uIEl0IHNob3VsZCBiZSAwLCA5MCwgMTgwLCBvciAyNzAuCisgICAgICoKKyAgICAgKiBGb3IgZXhhbXBsZSwgc3VwcG9zZSBhIGRldmljZSBoYXMgYSBuYXR1cmFsbHkgdGFsbCBzY3JlZW4sIGJ1dCB0aGUgY2FtZXJhCisgICAgICogc2Vuc29yIGlzIG1vdW50ZWQgaW4gbGFuZHNjYXBlLiBJZiB0aGUgdG9wIHNpZGUgb2YgdGhlIGNhbWVyYSBzZW5zb3IgaXMKKyAgICAgKiBhbGlnbmVkIHdpdGggdGhlIHJpZ2h0IGVkZ2Ugb2YgdGhlIGRpc3BsYXkgaW4gbmF0dXJhbCBvcmllbnRhdGlvbiwgdGhlCisgICAgICogdmFsdWUgc2hvdWxkIGJlIDkwLgorICAgICAqLworICAgIGludCBvcmllbnRhdGlvbjsKK307CisKIGNsYXNzIElDYW1lcmFTZXJ2aWNlOwogY2xhc3MgSUNhbWVyYTsKIGNsYXNzIFN1cmZhY2U7CkBAIC0xMTMsNyArMTM5LDEwIEBACiBwdWJsaWM6CiAgICAgICAgICAgICAvLyBjb25zdHJ1Y3QgYSBjYW1lcmEgY2xpZW50IGZyb20gYW4gZXhpc3RpbmcgcmVtb3RlCiAgICAgc3RhdGljICBzcDxDYW1lcmE+ICBjcmVhdGUoY29uc3Qgc3A8SUNhbWVyYT4mIGNhbWVyYSk7Ci0gICAgc3RhdGljICBzcDxDYW1lcmE+ICBjb25uZWN0KCk7CisgICAgc3RhdGljICBpbnQzMl90ICAgICBnZXROdW1iZXJPZkNhbWVyYXMoKTsKKyAgICBzdGF0aWMgIHN0YXR1c190ICAgIGdldENhbWVyYUluZm8oaW50IGNhbWVyYUlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgQ2FtZXJhSW5mbyogY2FtZXJhSW5mbyk7CisgICAgc3RhdGljICBzcDxDYW1lcmE+ICBjb25uZWN0KGludCBjYW1lcmFJZCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB+Q2FtZXJhKCk7CiAgICAgICAgICAgICB2b2lkICAgICAgICBpbml0KCk7CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY2FtZXJhL0NhbWVyYUhhcmR3YXJlSW50ZXJmYWNlLmggYi9pbmNsdWRlL2NhbWVyYS9DYW1lcmFIYXJkd2FyZUludGVyZmFjZS5oCmluZGV4IGQ4NzdjNzQuLjE1MjlkYjcgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY2FtZXJhL0NhbWVyYUhhcmR3YXJlSW50ZXJmYWNlLmgKKysrIGIvaW5jbHVkZS9jYW1lcmEvQ2FtZXJhSGFyZHdhcmVJbnRlcmZhY2UuaApAQCAtMjEzLDggKzIxMywxNSBAQAogICAgIHZpcnR1YWwgc3RhdHVzX3QgZHVtcChpbnQgZmQsIGNvbnN0IFZlY3RvcjxTdHJpbmcxNj4mIGFyZ3MpIGNvbnN0ID0gMDsKIH07CiAKLS8qKiBmYWN0b3J5IGZ1bmN0aW9uIHRvIGluc3RhbnRpYXRlIGEgY2FtZXJhIGhhcmR3YXJlIG9iamVjdCAqLwotZXh0ZXJuICJDIiBzcDxDYW1lcmFIYXJkd2FyZUludGVyZmFjZT4gb3BlbkNhbWVyYUhhcmR3YXJlKCk7CisvKioKKyAqIFRoZSBmdW5jdGlvbnMgbmVlZCB0byBiZSBwcm92aWRlZCBieSB0aGUgY2FtZXJhIEhBTC4KKyAqCisgKiBJZiBnZXROdW1iZXJPZkNhbWVyYXMoKSByZXR1cm5zIE4sIHRoZSB2YWxpZCBjYW1lcmFJZCBmb3IgZ2V0Q2FtZXJhSW5mbygpCisgKiBhbmQgb3BlbkNhbWVyYUhhcmR3YXJlKCkgaXMgMCB0byBOLTEuCisgKi8KK2V4dGVybiAiQyIgaW50IEhBTF9nZXROdW1iZXJPZkNhbWVyYXMoKTsKK2V4dGVybiAiQyIgdm9pZCBIQUxfZ2V0Q2FtZXJhSW5mbyhpbnQgY2FtZXJhSWQsIHN0cnVjdCBDYW1lcmFJbmZvKiBjYW1lcmFJbmZvKTsKK2V4dGVybiAiQyIgc3A8Q2FtZXJhSGFyZHdhcmVJbnRlcmZhY2U+IEhBTF9vcGVuQ2FtZXJhSGFyZHdhcmUoaW50IGNhbWVyYUlkKTsKIAogfTsgIC8vIG5hbWVzcGFjZSBhbmRyb2lkCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY2FtZXJhL0NhbWVyYVBhcmFtZXRlcnMuaCBiL2luY2x1ZGUvY2FtZXJhL0NhbWVyYVBhcmFtZXRlcnMuaAppbmRleCA1ZWE4M2E1Li5lMTJhNjk0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NhbWVyYS9DYW1lcmFQYXJhbWV0ZXJzLmgKKysrIGIvaW5jbHVkZS9jYW1lcmEvQ2FtZXJhUGFyYW1ldGVycy5oCkBAIC02NSwxMyArNjUsMTUgQEAKICAgICAvLyBTdXBwb3J0ZWQgcHJldmlldyBmcmFtZSBzaXplcyBpbiBwaXhlbHMuCiAgICAgLy8gRXhhbXBsZSB2YWx1ZTogIjgwMHg2MDAsNDgweDMyMCIuIFJlYWQgb25seS4KICAgICBzdGF0aWMgY29uc3QgY2hhciBLRVlfU1VQUE9SVEVEX1BSRVZJRVdfU0laRVNbXTsKLSAgICAvLyBUaGUgaW1hZ2UgZm9ybWF0IGZvciBwcmV2aWV3IGZyYW1lcy4KKyAgICAvLyBUaGUgaW1hZ2UgZm9ybWF0IGZvciBwcmV2aWV3IGZyYW1lcy4gU2VlIENBTUVSQV9NU0dfUFJFVklFV19GUkFNRSBpbgorICAgIC8vIGZyYW1ld29ya3MvYmFzZS9pbmNsdWRlL2NhbWVyYS9DYW1lcmEuaC4KICAgICAvLyBFeGFtcGxlIHZhbHVlOiAieXV2NDIwc3AiIG9yIFBJWEVMX0ZPUk1BVF9YWFggY29uc3RhbnRzLiBSZWFkL3dyaXRlLgogICAgIHN0YXRpYyBjb25zdCBjaGFyIEtFWV9QUkVWSUVXX0ZPUk1BVFtdOwogICAgIC8vIFN1cHBvcnRlZCBpbWFnZSBmb3JtYXRzIGZvciBwcmV2aWV3IGZyYW1lcy4KICAgICAvLyBFeGFtcGxlIHZhbHVlOiAieXV2NDIwc3AseXV2NDIyaS15dXl2Ii4gUmVhZCBvbmx5LgogICAgIHN0YXRpYyBjb25zdCBjaGFyIEtFWV9TVVBQT1JURURfUFJFVklFV19GT1JNQVRTW107Ci0gICAgLy8gTnVtYmVyIG9mIHByZXZpZXcgZnJhbWVzIHBlciBzZWNvbmQuCisgICAgLy8gTnVtYmVyIG9mIHByZXZpZXcgZnJhbWVzIHBlciBzZWNvbmQuIFRoaXMgaXMgdGhlIHRhcmdldCBmcmFtZSByYXRlLiBUaGUKKyAgICAvLyBhY3R1YWwgZnJhbWUgcmF0ZSBkZXBlbmRzIG9uIHRoZSBkcml2ZXIuCiAgICAgLy8gRXhhbXBsZSB2YWx1ZTogIjE1Ii4gUmVhZC93cml0ZS4KICAgICBzdGF0aWMgY29uc3QgY2hhciBLRVlfUFJFVklFV19GUkFNRV9SQVRFW107CiAgICAgLy8gU3VwcG9ydGVkIG51bWJlciBvZiBwcmV2aWV3IGZyYW1lcyBwZXIgc2Vjb25kLgpAQCAtODMsNyArODUsOCBAQAogICAgIC8vIFN1cHBvcnRlZCBkaW1lbnNpb25zIGZvciBjYXB0dXJlZCBwaWN0dXJlcyBpbiBwaXhlbHMuCiAgICAgLy8gRXhhbXBsZSB2YWx1ZTogIjIwNDh4MTUzNiwxMDI0eDc2OCIuIFJlYWQgb25seS4KICAgICBzdGF0aWMgY29uc3QgY2hhciBLRVlfU1VQUE9SVEVEX1BJQ1RVUkVfU0laRVNbXTsKLSAgICAvLyBUaGUgaW1hZ2UgZm9ybWF0IGZvciBjYXB0dXJlZCBwaWN0dXJlcy4KKyAgICAvLyBUaGUgaW1hZ2UgZm9ybWF0IGZvciBjYXB0dXJlZCBwaWN0dXJlcy4gU2VlIENBTUVSQV9NU0dfQ09NUFJFU1NFRF9JTUFHRQorICAgIC8vIGluIGZyYW1ld29ya3MvYmFzZS9pbmNsdWRlL2NhbWVyYS9DYW1lcmEuaC4KICAgICAvLyBFeGFtcGxlIHZhbHVlOiAianBlZyIgb3IgUElYRUxfRk9STUFUX1hYWCBjb25zdGFudHMuIFJlYWQvd3JpdGUuCiAgICAgc3RhdGljIGNvbnN0IGNoYXIgS0VZX1BJQ1RVUkVfRk9STUFUW107CiAgICAgLy8gU3VwcG9ydGVkIGltYWdlIGZvcm1hdHMgZm9yIGNhcHR1cmVkIHBpY3R1cmVzLgpAQCAtMTE5LDE0ICsxMjIsMTcgQEAKICAgICAvLyBzaG91bGQgbm90IHNldCBkZWZhdWx0IHZhbHVlIGZvciB0aGlzIHBhcmFtZXRlci4KICAgICAvLyBFeGFtcGxlIHZhbHVlOiAiMCIgb3IgIjkwIiBvciAiMTgwIiBvciAiMjcwIi4gV3JpdGUgb25seS4KICAgICBzdGF0aWMgY29uc3QgY2hhciBLRVlfUk9UQVRJT05bXTsKLSAgICAvLyBHUFMgbGF0aXR1ZGUgY29vcmRpbmF0ZS4gVGhpcyB3aWxsIGJlIHN0b3JlZCBpbiBKUEVHIEVYSUYgaGVhZGVyLgotICAgIC8vIEV4YW1wbGUgdmFsdWU6ICIyNS4wMzIxNDYiLiBXcml0ZSBvbmx5LgorICAgIC8vIEdQUyBsYXRpdHVkZSBjb29yZGluYXRlLiBHUFNMYXRpdHVkZSBhbmQgR1BTTGF0aXR1ZGVSZWYgd2lsbCBiZSBzdG9yZWQgaW4KKyAgICAvLyBKUEVHIEVYSUYgaGVhZGVyLgorICAgIC8vIEV4YW1wbGUgdmFsdWU6ICIyNS4wMzIxNDYiIG9yICItMzMuNDYyODA5Ii4gV3JpdGUgb25seS4KICAgICBzdGF0aWMgY29uc3QgY2hhciBLRVlfR1BTX0xBVElUVURFW107Ci0gICAgLy8gR1BTIGxvbmdpdHVkZSBjb29yZGluYXRlLiBUaGlzIHdpbGwgYmUgc3RvcmVkIGluIEpQRUcgRVhJRiBoZWFkZXIuCi0gICAgLy8gRXhhbXBsZSB2YWx1ZTogIjEyMS41NjQ0NDgiLiBXcml0ZSBvbmx5LgorICAgIC8vIEdQUyBsb25naXR1ZGUgY29vcmRpbmF0ZS4gR1BTTG9uZ2l0dWRlIGFuZCBHUFNMb25naXR1ZGVSZWYgd2lsbCBiZSBzdG9yZWQKKyAgICAvLyBpbiBKUEVHIEVYSUYgaGVhZGVyLgorICAgIC8vIEV4YW1wbGUgdmFsdWU6ICIxMjEuNTY0NDQ4IiBvciAiLTcwLjY2MDI4NiIuIFdyaXRlIG9ubHkuCiAgICAgc3RhdGljIGNvbnN0IGNoYXIgS0VZX0dQU19MT05HSVRVREVbXTsKLSAgICAvLyBHUFMgYWx0aXR1ZGUuIFRoaXMgd2lsbCBiZSBzdG9yZWQgaW4gSlBFRyBFWElGIGhlYWRlci4KLSAgICAvLyBFeGFtcGxlIHZhbHVlOiAiMjEuMCIuIFdyaXRlIG9ubHkuCisgICAgLy8gR1BTIGFsdGl0dWRlLiBHUFNBbHRpdHVkZSBhbmQgR1BTQWx0aXR1ZGVSZWYgd2lsbCBiZSBzdG9yZWQgaW4gSlBFRyBFWElGCisgICAgLy8gaGVhZGVyLgorICAgIC8vIEV4YW1wbGUgdmFsdWU6ICIyMS4wIiBvciAiLTUiLiBXcml0ZSBvbmx5LgogICAgIHN0YXRpYyBjb25zdCBjaGFyIEtFWV9HUFNfQUxUSVRVREVbXTsKICAgICAvLyBHUFMgdGltZXN0YW1wIChVVEMgaW4gc2Vjb25kcyBzaW5jZSBKYW51YXJ5IDEsIDE5NzApLiBUaGlzIHNob3VsZCBiZQogICAgIC8vIHN0b3JlZCBpbiBKUEVHIEVYSUYgaGVhZGVyLgpAQCAtMjIxLDkgKzIyNyw0MiBAQAogICAgIC8vIEV4YW1wbGUgdmFsdWU6ICJ0cnVlIi4gUmVhZCBvbmx5LgogICAgIHN0YXRpYyBjb25zdCBjaGFyIEtFWV9TTU9PVEhfWk9PTV9TVVBQT1JURURbXTsKIAorICAgIC8vIFRoZSBkaXN0YW5jZXMgKGluIG1ldGVycykgZnJvbSB0aGUgY2FtZXJhIHRvIHdoZXJlIGFuIG9iamVjdCBhcHBlYXJzIHRvCisgICAgLy8gYmUgaW4gZm9jdXMuIFRoZSBvYmplY3QgaXMgc2hhcnBlc3QgYXQgdGhlIG9wdGltYWwgZm9jdXMgZGlzdGFuY2UuIFRoZQorICAgIC8vIGRlcHRoIG9mIGZpZWxkIGlzIHRoZSBmYXIgZm9jdXMgZGlzdGFuY2UgbWludXMgbmVhciBmb2N1cyBkaXN0YW5jZS4KKyAgICAvLworICAgIC8vIEFwcGxpY2F0aW9ucyBjYW4gcmVhZCB0aGlzIHBhcmFtZXRlciBhbnl0aW1lIHRvIGdldCB0aGUgbGF0ZXN0IGZvY3VzCisgICAgLy8gZGlzdGFuY2VzLiBJZiB0aGUgZm9jdXMgbW9kZSBpcyBGT0NVU19NT0RFX0VET0YsIHRoZSB2YWx1ZXMgbWF5IGJlIGFsbAorICAgIC8vIDAsIHdoaWNoIG1lYW5zIGZvY3VzIGRpc3RhbmNlIGlzIG5vdCBhcHBsaWNhYmxlLiBJZiB0aGUgZm9jdXMgbW9kZSBpcworICAgIC8vIEZPQ1VTX01PREVfQ09OVElOVU9VUyBhbmQgYXV0b2ZvY3VzIGhhcyBzdGFydGVkLCBmb2N1cyBkaXN0YW5jZXMgbWF5CisgICAgLy8gY2hhbmdlIGZyb20gdGltZSB0byB0aW1lLgorICAgIC8vCisgICAgLy8gRmFyIGZvY3VzIGRpc3RhbmNlID4gb3B0aW1hbCBmb2N1cyBkaXN0YW5jZSA+IG5lYXIgZm9jdXMgZGlzdGFuY2UuIElmCisgICAgLy8gdGhlIGZhciBmb2N1cyBkaXN0YW5jZSBpcyBpbmZpbml0eSwgdGhlIHZhbHVlIHNob3VsZCBiZSAiSW5maW5pdHkiIChjYXNlCisgICAgLy8gc2Vuc2l0aXZlKS4gVGhlIGZvcm1hdCBpcyB0aHJlZSBmbG9hdCB2YWx1ZXMgc2VwYXJhdGVkIGJ5IGNvbW1hcy4gVGhlCisgICAgLy8gZmlyc3QgaXMgbmVhciBmb2N1cyBkaXN0YW5jZS4gVGhlIHNlY29uZCBpcyBvcHRpbWFsIGZvY3VzIGRpc3RhbmNlLiBUaGUKKyAgICAvLyB0aGlyZCBpcyBmYXIgZm9jdXMgZGlzdGFuY2UuCisgICAgLy8gRXhhbXBsZSB2YWx1ZTogIjAuOTUsMS45LEluZmluaXR5IiBvciAiMC4wNDksMC4wNSwwLjA1MSIuIFJlYWQgb25seS4KKyAgICBzdGF0aWMgY29uc3QgY2hhciBLRVlfRk9DVVNfRElTVEFOQ0VTW107CisKKyAgICAvLyBUaGUgaW1hZ2UgZm9ybWF0IGZvciB2aWRlbyBmcmFtZXMuIFNlZSBDQU1FUkFfTVNHX1ZJREVPX0ZSQU1FIGluCisgICAgLy8gZnJhbWV3b3Jrcy9iYXNlL2luY2x1ZGUvY2FtZXJhL0NhbWVyYS5oLgorICAgIC8vIEV4YW1wbGUgdmFsdWU6ICJ5dXY0MjBzcCIgb3IgUElYRUxfRk9STUFUX1hYWCBjb25zdGFudHMuIFJlYWQgb25seS4KKyAgICBzdGF0aWMgY29uc3QgY2hhciBLRVlfVklERU9fRlJBTUVfRk9STUFUW107CisKKyAgICAvLyBNZXRlcmluZyBtb2RlLiBUaGlzIGFmZmVjdHMgaG93IGNhbWVyYSBkZXRlcm1pbmVzIGV4cG9zdXJlLgorICAgIC8vIEV4YW1wbGUgdmFsdWU6ICJzcG90IiBvciBNRVRFUklOR19NT0RFX1hYWCBjb25zdGFudHMuIFJlYWQvd3JpdGUuCisgICAgc3RhdGljIGNvbnN0IGNoYXIgS0VZX01FVEVSSU5HX01PREVbXTsKKyAgICAvLyBTdXBwb3J0ZWQgbWV0ZXJpbmcgbW9kZXMuCisgICAgLy8gRXhhbXBsZSB2YWx1ZTogImNlbnRlci13ZWlnaHRlZCxmcmFtZS1hdmVyYWdlLHNwb3QiLiBSZWFkIG9ubHkuCisgICAgc3RhdGljIGNvbnN0IGNoYXIgS0VZX1NVUFBPUlRFRF9NRVRFUklOR19NT0RFU1tdOworCiAgICAgLy8gVmFsdWUgZm9yIEtFWV9aT09NX1NVUFBPUlRFRCBvciBLRVlfU01PT1RIX1pPT01fU1VQUE9SVEVELgogICAgIHN0YXRpYyBjb25zdCBjaGFyIFRSVUVbXTsKIAorICAgIC8vIFZhbHVlIGZvciBLRVlfRk9DVVNfRElTVEFOQ0VTLgorICAgIHN0YXRpYyBjb25zdCBjaGFyIEZPQ1VTX0RJU1RBTkNFX0lORklOSVRZW107CisKICAgICAvLyBWYWx1ZXMgZm9yIHdoaXRlIGJhbGFuY2Ugc2V0dGluZ3MuCiAgICAgc3RhdGljIGNvbnN0IGNoYXIgV0hJVEVfQkFMQU5DRV9BVVRPW107CiAgICAgc3RhdGljIGNvbnN0IGNoYXIgV0hJVEVfQkFMQU5DRV9JTkNBTkRFU0NFTlRbXTsKQEAgLTMwOSw2ICszNDgsMjEgQEAKICAgICAvLyBjb250aW51b3VzbHkuIEFwcGxpY2F0aW9ucyBzaG91bGQgbm90IGNhbGwKICAgICAvLyBDYW1lcmFIYXJkd2FyZUludGVyZmFjZS5hdXRvRm9jdXMgaW4gdGhpcyBtb2RlLgogICAgIHN0YXRpYyBjb25zdCBjaGFyIEZPQ1VTX01PREVfRURPRltdOworICAgIC8vIENvbnRpbnVvdXMgZm9jdXMgbW9kZS4gVGhlIGNhbWVyYSBjb250aW51b3VzbHkgdHJpZXMgdG8gZm9jdXMuIFRoaXMgaXMKKyAgICAvLyBpZGVhbCBmb3Igc2hvb3RpbmcgdmlkZW8gb3Igc2hvb3RpbmcgcGhvdG8gb2YgbW92aW5nIG9iamVjdC4gQ29udGludW91cworICAgIC8vIGZvY3VzIHN0YXJ0cyB3aGVuIENhbWVyYUhhcmR3YXJlSW50ZXJmYWNlLmF1dG9Gb2N1cyBpcyBjYWxsZWQuIEZvY3VzCisgICAgLy8gY2FsbGJhY2sgd2lsbCBiZSBvbmx5IGNhbGxlZCBvbmNlIGFzIHNvb24gYXMgdGhlIHBpY3R1cmUgaXMgaW4gZm9jdXMuCisgICAgc3RhdGljIGNvbnN0IGNoYXIgRk9DVVNfTU9ERV9DT05USU5VT1VTW107CisKKyAgICAvLyBUaGUgY2FtZXJhIGRldGVybWluZXMgdGhlIGV4cG9zdXJlIGJ5IGdpdmluZyBtb3JlIHdlaWdodCB0byB0aGUKKyAgICAvLyBjZW50cmFsIHBhcnQgb2YgdGhlIHNjZW5lLgorICAgIHN0YXRpYyBjb25zdCBjaGFyIE1FVEVSSU5HX01PREVfQ0VOVEVSX1dFSUdIVEVEW107CisgICAgLy8gVGhlIGNhbWVyYSBkZXRlcm1pbmVzIHRoZSBleHBvc3VyZSBieSBhdmVyYWdpbmcgdGhlIGVudGlyZSBzY2VuZSwKKyAgICAvLyBnaXZpbmcgbm8gd2VpZ2h0aW5nIHRvIGFueSBwYXJ0aWN1bGFyIGFyZWEuCisgICAgc3RhdGljIGNvbnN0IGNoYXIgTUVURVJJTkdfTU9ERV9GUkFNRV9BVkVSQUdFW107CisgICAgLy8gVGhlIGNhbWVyYSBkZXRlcm1pbmVzIHRoZSBleHBvc3VyZSBieSBhIHZlcnkgc21hbGwgYXJlYSBvZiB0aGUgc2NlbmUsCisgICAgLy8gdHlwaWNhbGx5IHRoZSBjZW50ZXIuCisgICAgc3RhdGljIGNvbnN0IGNoYXIgTUVURVJJTkdfTU9ERV9TUE9UW107CiAKIHByaXZhdGU6CiAgICAgRGVmYXVsdEtleWVkVmVjdG9yPFN0cmluZzgsU3RyaW5nOD4gICAgbU1hcDsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY2FtZXJhL0lDYW1lcmFTZXJ2aWNlLmggYi9pbmNsdWRlL2NhbWVyYS9JQ2FtZXJhU2VydmljZS5oCmluZGV4IDgyYjEyODMuLjdkNzBjMWUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY2FtZXJhL0lDYW1lcmFTZXJ2aWNlLmgKKysrIGIvaW5jbHVkZS9jYW1lcmEvSUNhbWVyYVNlcnZpY2UuaApAQCAtMzAsMTMgKzMwLDE5IEBACiB7CiBwdWJsaWM6CiAgICAgZW51bSB7Ci0gICAgICAgIENPTk5FQ1QgPSBJQmluZGVyOjpGSVJTVF9DQUxMX1RSQU5TQUNUSU9OLAorICAgICAgICBHRVRfTlVNQkVSX09GX0NBTUVSQVMgPSBJQmluZGVyOjpGSVJTVF9DQUxMX1RSQU5TQUNUSU9OLAorICAgICAgICBHRVRfQ0FNRVJBX0lORk8sCisgICAgICAgIENPTk5FQ1QKICAgICB9OwogCiBwdWJsaWM6CiAgICAgREVDTEFSRV9NRVRBX0lOVEVSRkFDRShDYW1lcmFTZXJ2aWNlKTsKIAotICAgIHZpcnR1YWwgc3A8SUNhbWVyYT4gICAgIGNvbm5lY3QoY29uc3Qgc3A8SUNhbWVyYUNsaWVudD4mIGNhbWVyYUNsaWVudCkgPSAwOworICAgIHZpcnR1YWwgaW50MzJfdCAgICAgICAgIGdldE51bWJlck9mQ2FtZXJhcygpID0gMDsKKyAgICB2aXJ0dWFsIHN0YXR1c190ICAgICAgICBnZXRDYW1lcmFJbmZvKGludCBjYW1lcmFJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBDYW1lcmFJbmZvKiBjYW1lcmFJbmZvKSA9IDA7CisgICAgdmlydHVhbCBzcDxJQ2FtZXJhPiAgICAgY29ubmVjdChjb25zdCBzcDxJQ2FtZXJhQ2xpZW50PiYgY2FtZXJhQ2xpZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNhbWVyYUlkKSA9IDA7CiB9OwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL0F1ZGlvRWZmZWN0LmggYi9pbmNsdWRlL21lZGlhL0F1ZGlvRWZmZWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTlmZjhhMwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvbWVkaWEvQXVkaW9FZmZlY3QuaApAQCAtMCwwICsxLDQ2NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgQU5EUk9JRF9BVURJT0VGRkVDVF9ICisjZGVmaW5lIEFORFJPSURfQVVESU9FRkZFQ1RfSAorCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisKKyNpbmNsdWRlIDxtZWRpYS9JQXVkaW9GbGluZ2VyLmg+CisjaW5jbHVkZSA8bWVkaWEvSUVmZmVjdC5oPgorI2luY2x1ZGUgPG1lZGlhL0lFZmZlY3RDbGllbnQuaD4KKyNpbmNsdWRlIDxtZWRpYS9FZmZlY3RBcGkuaD4KKyNpbmNsdWRlIDxtZWRpYS9BdWRpb1N5c3RlbS5oPgorCisjaW5jbHVkZSA8dXRpbHMvUmVmQmFzZS5oPgorI2luY2x1ZGUgPHV0aWxzL0Vycm9ycy5oPgorI2luY2x1ZGUgPGJpbmRlci9JSW50ZXJmYWNlLmg+CisKKworbmFtZXNwYWNlIGFuZHJvaWQgeworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NsYXNzIGVmZmVjdF9wYXJhbV9jYmxrX3Q7CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3MgQXVkaW9FZmZlY3QgOiBwdWJsaWMgUmVmQmFzZQoreworcHVibGljOgorCisgICAgLyoKKyAgICAgKiAgU3RhdGljIG1ldGhvZHMgZm9yIGVmZmVjdCBsaWJyYXJpZXMgbWFuYWdlbWVudC4KKyAgICAgKi8KKworICAgIC8qCisgICAgICogICBMb2FkcyB0aGUgZWZmZWN0IGxpYnJhcnkgd2hpY2ggcGF0aCBpcyBnaXZlbiBhcyBmaXJzdCBhcmd1bWVudC4KKyAgICAgKiAgIFRoaXMgbXVzdCBiZSB0aGUgZnVsbCBwYXRoIG9mIGEgZHluYW1pYyBsaWJyYXJ5ICguc28pIGltcGxlbWVudGluZyBvbmUgb3IKKyAgICAgKiAgIG1vcmUgZWZmZWN0IGVuZ2luZXMgYW5kIGV4cG9zaW5nIHRoZSBlZmZlY3QgbGlicmFyeSBpbnRlcmZhY2UgZGVzY3JpYmVkIGluCisgICAgICogICBFZmZlY3RBcGkuaC4gVGhlIGZ1bmN0aW9uIHJldHVybnMgYSBoYW5kbGUgb24gdGhlIGxpYnJhcnkgZm9yIHVzZSBieQorICAgICAqICAgZnVydGhlciBjYWxsIHRvIHVubG9hZEVmZmVjdExpYnJhcnkoKSB0byB1bmxvYWQgdGhlIGxpYnJhcnkuCisgICAgICoKKyAgICAgKiAgIFBhcmFtZXRlcnM6CisgICAgICogICAgICAgICAgbGliUGF0aDogICAgZnVsbCBwYXRoIG9mIHRoZSBkeW5hbWljIGxpYnJhcnkgZmlsZSBpbiB0aGUgZmlsZSBzeXN0ZW0uCisgICAgICogICAgICAgICAgaGFuZGxlOiAgICAgYWRkcmVzcyB3aGVyZSB0byByZXR1cm4gdGhlIGxpYnJhcnkgaGFuZGxlCisgICAgICoKKyAgICAgKiAgIFJldHVybmVkIHN0YXR1cyAoZnJvbSB1dGlscy9FcnJvcnMuaCkgY2FuIGJlOgorICAgICAqICAgICAgICAgIE5PX0VSUk9SICAgIHN1Y2Nlc3NmdWwgb3BlcmF0aW9uLgorICAgICAqICAgICAgICAgIFBFUk1JU1NJT05fREVOSUVEIGNvdWxkIG5vdCBnZXQgQXVkaW9GbGluZ2VyIGludGVyZmFjZSBvcgorICAgICAqICAgICAgICAgICAgICAgICAgICAgIGFwcGxpY2F0aW9uIGRvZXMgbm90IGhhdmUgcGVybWlzc2lvbiB0byBjb25maWd1cmUgYXVkaW8KKyAgICAgKiAgICAgICAgICBOT19JTklUICAgICBlZmZlY3QgZmFjdG9yeSBub3QgaW5pdGlhbGl6ZWQgb3IKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5IGNvdWxkIG5vdCBiZSBsb2FkZWQgb3IKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5IGRvZXMgbm90IGltcGxlbWVudCByZXF1aXJlZCBmdW5jdGlvbnMKKyAgICAgKiAgICAgICAgICBCQURfVkFMVUUgICBpbnZhbGlkIGxpYlBhdGggc3RyaW5nIG9yIGhhbmRsZQorICAgICAqCisgICAgICogICBSZXR1cm5lZCB2YWx1ZToKKyAgICAgKiAgICAgICAgICAqaGFuZGxlIHVwZGF0ZWQgd2l0aCBsaWJyYXJ5IGhhbmRsZQorICAgICAqLworICAgIHN0YXRpYyBzdGF0dXNfdCBsb2FkRWZmZWN0TGlicmFyeShjb25zdCBjaGFyICpsaWJQYXRoLCBpbnQgKmhhbmRsZSk7CisKKyAgICAvKgorICAgICAqICAgVW5sb2FkcyB0aGUgZWZmZWN0IGxpYnJhcnkgd2hpY2ggaGFuZGxlIGlzIGdpdmVuIGFzIGFyZ3VtZW50LgorICAgICAqCisgICAgICogICBQYXJhbWV0ZXJzOgorICAgICAqICAgICAgICAgIGhhbmRsZTogbGlicmFyeSBoYW5kbGUKKyAgICAgKgorICAgICAqICAgUmV0dXJuZWQgc3RhdHVzIChmcm9tIHV0aWxzL0Vycm9ycy5oKSBjYW4gYmU6CisgICAgICogICAgICAgICAgTk9fRVJST1IgICAgc3VjY2Vzc2Z1bCBvcGVyYXRpb24uCisgICAgICogICAgICAgICAgUEVSTUlTU0lPTl9ERU5JRUQgY291bGQgbm90IGdldCBBdWRpb0ZsaW5nZXIgaW50ZXJmYWNlIG9yCisgICAgICogICAgICAgICAgICAgICAgICAgICAgYXBwbGljYXRpb24gZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGNvbmZpZ3VyZSBhdWRpbworICAgICAqICAgICAgICAgIE5PX0lOSVQgICAgIGVmZmVjdCBmYWN0b3J5IG5vdCBpbml0aWFsaXplZAorICAgICAqICAgICAgICAgIEJBRF9WQUxVRSAgIGludmFsaWQgaGFuZGxlCisgICAgICovCisgICAgc3RhdGljIHN0YXR1c190IHVubG9hZEVmZmVjdExpYnJhcnkoaW50IGhhbmRsZSk7CisKKyAgICAvKgorICAgICAqICBTdGF0aWMgbWV0aG9kcyBmb3IgZWZmZWN0cyBlbnVtZXJhdGlvbi4KKyAgICAgKi8KKworICAgIC8qCisgICAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVmZmVjdHMgYXZhaWxhYmxlLiBUaGlzIG1ldGhvZCB0b2dldGhlcgorICAgICAqIHdpdGggcXVlcnlFZmZlY3QoKSBpcyB1c2VkIHRvIGVudW1lcmF0ZSBhbGwgZWZmZWN0czoKKyAgICAgKiBUaGUgZW51bWVyYXRpb24gc2VxdWVuY2UgaXM6CisgICAgICogICAgICBxdWVyeU51bWJlckVmZmVjdHMoJm51bV9lZmZlY3RzKTsKKyAgICAgKiAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1fZWZmZWN0czsgaSsrKQorICAgICAqICAgICAgICAgIHF1ZXJ5RWZmZWN0KGksLi4uKTsKKyAgICAgKgorICAgICAqIFBhcmFtZXRlcnM6CisgICAgICogICAgICBudW1FZmZlY3RzOiAgICBhZGRyZXNzIHdoZXJlIHRoZSBudW1iZXIgb2YgZWZmZWN0cyBzaG91bGQgYmUgcmV0dXJuZWQuCisgICAgICoKKyAgICAgKiBSZXR1cm5lZCBzdGF0dXMgKGZyb20gdXRpbHMvRXJyb3JzLmgpIGNhbiBiZToKKyAgICAgKiAgICAgIE5PX0VSUk9SICAgc3VjY2Vzc2Z1bCBvcGVyYXRpb24uCisgICAgICogICAgICBQRVJNSVNTSU9OX0RFTklFRCBjb3VsZCBub3QgZ2V0IEF1ZGlvRmxpbmdlciBpbnRlcmZhY2UKKyAgICAgKiAgICAgIE5PX0lOSVQgICAgZWZmZWN0IGxpYnJhcnkgZmFpbGVkIHRvIGluaXRpYWxpemUKKyAgICAgKiAgICAgIEJBRF9WQUxVRSAgaW52YWxpZCBudW1FZmZlY3RzIHBvaW50ZXIKKyAgICAgKgorICAgICAqIFJldHVybmVkIHZhbHVlCisgICAgICogICAqbnVtRWZmZWN0czogICAgIHVwZGF0ZWQgd2l0aCBudW1iZXIgb2YgZWZmZWN0cyBhdmFpbGFibGUKKyAgICAgKi8KKyAgICBzdGF0aWMgc3RhdHVzX3QgcXVlcnlOdW1iZXJFZmZlY3RzKHVpbnQzMl90ICpudW1FZmZlY3RzKTsKKworICAgIC8qCisgICAgICogUmV0dXJucyBhbiBlZmZlY3QgZGVzY3JpcHRvciBkdXJpbmcgZWZmZWN0CisgICAgICogZW51bWVyYXRpb24uCisgICAgICoKKyAgICAgKiBQYXJhbWV0ZXJzOgorICAgICAqICAgICAgaW5kZXg6ICAgICAgaW5kZXggb2YgdGhlIHF1ZXJpZWQgZWZmZWN0LgorICAgICAqICAgICAgZGVzY3JpcHRvcjogYWRkcmVzcyB3aGVyZSB0aGUgZWZmZWN0IGRlc2NyaXB0b3Igc2hvdWxkIGJlIHJldHVybmVkLgorICAgICAqCisgICAgICogUmV0dXJuZWQgc3RhdHVzIChmcm9tIHV0aWxzL0Vycm9ycy5oKSBjYW4gYmU6CisgICAgICogICAgICBOT19FUlJPUiAgICAgICAgc3VjY2Vzc2Z1bCBvcGVyYXRpb24uCisgICAgICogICAgICBQRVJNSVNTSU9OX0RFTklFRCBjb3VsZCBub3QgZ2V0IEF1ZGlvRmxpbmdlciBpbnRlcmZhY2UKKyAgICAgKiAgICAgIE5PX0lOSVQgICAgICAgICBlZmZlY3QgbGlicmFyeSBmYWlsZWQgdG8gaW5pdGlhbGl6ZQorICAgICAqICAgICAgQkFEX1ZBTFVFICAgICAgIGludmFsaWQgZGVzY3JpcHRvciBwb2ludGVyIG9yIGluZGV4CisgICAgICogICAgICBJTlZBTElEX09QRVJBVElPTiAgZWZmZWN0IGxpc3QgaGFzIGNoYW5nZWQgc2luY2UgbGFzdCBleGVjdXRpb24gb2YgcXVlcnlOdW1iZXJFZmZlY3RzKCkKKyAgICAgKgorICAgICAqIFJldHVybmVkIHZhbHVlCisgICAgICogICAqZGVzY3JpcHRvcjogICAgIHVwZGF0ZWQgd2l0aCBlZmZlY3QgZGVzY3JpcHRvcgorICAgICAqLworICAgIHN0YXRpYyBzdGF0dXNfdCBxdWVyeUVmZmVjdCh1aW50MzJfdCBpbmRleCwgZWZmZWN0X2Rlc2NyaXB0b3JfdCAqZGVzY3JpcHRvcik7CisKKworICAgIC8qCisgICAgICogUmV0dXJucyB0aGUgZGVzY3JpcHRvciBmb3IgdGhlIHNwZWNpZmllZCBlZmZlY3QgdXVpZC4KKyAgICAgKgorICAgICAqIFBhcmFtZXRlcnM6CisgICAgICogICAgICB1dWlkOiAgICAgICBwb2ludGVyIHRvIGVmZmVjdCB1dWlkLgorICAgICAqICAgICAgZGVzY3JpcHRvcjogYWRkcmVzcyB3aGVyZSB0aGUgZWZmZWN0IGRlc2NyaXB0b3Igc2hvdWxkIGJlIHJldHVybmVkLgorICAgICAqCisgICAgICogUmV0dXJuZWQgc3RhdHVzIChmcm9tIHV0aWxzL0Vycm9ycy5oKSBjYW4gYmU6CisgICAgICogICAgICBOT19FUlJPUiAgICAgICAgc3VjY2Vzc2Z1bCBvcGVyYXRpb24uCisgICAgICogICAgICBQRVJNSVNTSU9OX0RFTklFRCBjb3VsZCBub3QgZ2V0IEF1ZGlvRmxpbmdlciBpbnRlcmZhY2UKKyAgICAgKiAgICAgIE5PX0lOSVQgICAgICAgICBlZmZlY3QgbGlicmFyeSBmYWlsZWQgdG8gaW5pdGlhbGl6ZQorICAgICAqICAgICAgQkFEX1ZBTFVFICAgICAgIGludmFsaWQgdXVpZCBvciBkZXNjcmlwdG9yIHBvaW50ZXJzCisgICAgICogICAgICBOQU1FX05PVF9GT1VORCAgbm8gZWZmZWN0IHdpdGggdGhpcyB1dWlkIGZvdW5kCisgICAgICoKKyAgICAgKiBSZXR1cm5lZCB2YWx1ZQorICAgICAqICAgKmRlc2NyaXB0b3IgdXBkYXRlZCB3aXRoIGVmZmVjdCBkZXNjcmlwdG9yCisgICAgICovCisgICAgc3RhdGljIHN0YXR1c190IGdldEVmZmVjdERlc2NyaXB0b3IoZWZmZWN0X3V1aWRfdCAqdXVpZCwgZWZmZWN0X2Rlc2NyaXB0b3JfdCAqZGVzY3JpcHRvcik7CisKKworICAgIC8qCisgICAgICogRXZlbnRzIHVzZWQgYnkgY2FsbGJhY2sgZnVuY3Rpb24gKGVmZmVjdF9jYWxsYmFja190KS4KKyAgICAgKi8KKyAgICBlbnVtIGV2ZW50X3R5cGUgeworICAgICAgICBFVkVOVF9DT05UUk9MX1NUQVRVU19DSEFOR0VEID0gMCwKKyAgICAgICAgRVZFTlRfRU5BQkxFX1NUQVRVU19DSEFOR0VEID0gMSwKKyAgICAgICAgRVZFTlRfUEFSQU1FVEVSX0NIQU5HRUQgPSAyLAorICAgICAgICBFVkVOVF9FUlJPUiA9IDMKKyAgICB9OworCisgICAgLyogQ2FsbGJhY2sgZnVuY3Rpb24gbm90aWZ5aW5nIGNsaWVudCBhcHBsaWNhdGlvbiBvZiBhIGNoYW5nZSBpbiBlZmZlY3QgZW5naW5lIHN0YXRlIG9yCisgICAgICogY29uZmlndXJhdGlvbi4KKyAgICAgKiBBbiBlZmZlY3QgZW5naW5lIGNhbiBiZSBzaGFyZWQgYnkgc2V2ZXJhbCBhcHBsaWNhdGlvbnMgYnV0IG9ubHkgb25lIGhhcyB0aGUgY29udHJvbAorICAgICAqIG9mIHRoZSBlbmdpbmUgYWN0aXZpdHkgYW5kIGNvbmZpZ3VyYXRpb24gYXQgYSB0aW1lLgorICAgICAqIFRoZSBFVkVOVF9DT05UUk9MX1NUQVRVU19DSEFOR0VEIGV2ZW50IGlzIHJlY2VpdmVkIHdoZW4gYW4gYXBwbGljYXRpb24gbG9zZXMgb3IKKyAgICAgKiByZXRyaWV2ZXMgdGhlIGNvbnRyb2wgb2YgdGhlIGVmZmVjdCBlbmdpbmUuIExvc3Mgb2YgY29udHJvbCBoYXBwZW5zCisgICAgICogaWYgYW5vdGhlciBhcHBsaWNhdGlvbiByZXF1ZXN0cyB0aGUgdXNlIG9mIHRoZSBlbmdpbmUgYnkgY3JlYXRpbmcgYW4gQXVkaW9FZmZlY3QgZm9yCisgICAgICogdGhlIHNhbWUgZWZmZWN0IHR5cGUgYnV0IHdpdGggYSBoaWdoZXIgcHJpb3JpdHkuIENvbnRyb2wgaXMgcmV0dXJuZWQgd2hlbiB0aGUKKyAgICAgKiBhcHBsaWNhdGlvbiBoYXZpbmcgdGhlIGNvbnRyb2wgZGVsZXRlcyBpdHMgQXVkaW9FZmZlY3Qgb2JqZWN0LgorICAgICAqIFRoZSBFVkVOVF9FTkFCTEVfU1RBVFVTX0NIQU5HRUQgZXZlbnQgaXMgcmVjZWl2ZWQgYnkgYWxsIGFwcGxpY2F0aW9ucyBub3QgaGF2aW5nIHRoZQorICAgICAqIGNvbnRyb2wgb2YgdGhlIGVmZmVjdCBlbmdpbmUgd2hlbiB0aGUgZWZmZWN0IGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQuCisgICAgICogVGhlIEVWRU5UX1BBUkFNRVRFUl9DSEFOR0VEIGV2ZW50IGlzIHJlY2VpdmVkIGJ5IGFsbCBhcHBsaWNhdGlvbnMgbm90IGhhdmluZyB0aGUKKyAgICAgKiBjb250cm9sIG9mIHRoZSBlZmZlY3QgZW5naW5lIHdoZW4gYW4gZWZmZWN0IHBhcmFtZXRlciBpcyBjaGFuZ2VkLgorICAgICAqIFRoZSBFVkVOVF9FUlJPUiBldmVudCBpcyByZWNlaXZlZCB3aGVuIHRoZSBtZWRpYSBzZXJ2ZXIgcHJvY2VzcyBkaWVzLgorICAgICAqCisgICAgICogUGFyYW1ldGVyczoKKyAgICAgKgorICAgICAqIGV2ZW50OiAgIHR5cGUgb2YgZXZlbnQgbm90aWZpZWQgKHNlZSBlbnVtIEF1ZGlvRWZmZWN0OjpldmVudF90eXBlKS4KKyAgICAgKiB1c2VyOiAgICBQb2ludGVyIHRvIGNvbnRleHQgZm9yIHVzZSBieSB0aGUgY2FsbGJhY2sgcmVjZWl2ZXIuCisgICAgICogaW5mbzogICAgUG9pbnRlciB0byBvcHRpb25hbCBwYXJhbWV0ZXIgYWNjb3JkaW5nIHRvIGV2ZW50IHR5cGU6CisgICAgICogIC0gRVZFTlRfQ09OVFJPTF9TVEFUVVNfQ0hBTkdFRDogIGJvb2xlYW4gaW5kaWNhdGluZyBpZiBjb250cm9sIGlzIGdyYW50ZWQgKHRydWUpCisgICAgICogIG9yIHN0b2xlbiAoZmFsc2UpLgorICAgICAqICAtIEVWRU5UX0VOQUJMRV9TVEFUVVNfQ0hBTkdFRDogYm9vbGVhbiBpbmRpY2F0aW5nIGlmIGVmZmVjdCBpcyBub3cgZW5hYmxlZCAodHJ1ZSkKKyAgICAgKiAgb3IgZGlzYWJsZWQgKGZhbHNlKS4KKyAgICAgKiAgLSBFVkVOVF9QQVJBTUVURVJfQ0hBTkdFRDogcG9pbnRlciB0byBhIGVmZmVjdF9wYXJhbV90IHN0cnVjdHVyZS4KKyAgICAgKiAgLSBFVkVOVF9FUlJPUjogIHN0YXR1c190IGluZGljYXRpbmcgdGhlIGVycm9yIChERUFEX09CSkVDVCB3aGVuIG1lZGlhIHNlcnZlciBkaWVzKS4KKyAgICAgKi8KKworICAgIHR5cGVkZWYgdm9pZCAoKmVmZmVjdF9jYWxsYmFja190KShpbnQzMl90IGV2ZW50LCB2b2lkKiB1c2VyLCB2b2lkICppbmZvKTsKKworCisgICAgLyogQ29uc3RydWN0b3IuCisgICAgICogQXVkaW9FZmZlY3QgaXMgdGhlIGJhc2UgY2xhc3MgZm9yIGNyZWF0aW5nIGFuZCBjb250cm9sbGluZyBhbiBlZmZlY3QgZW5naW5lIGZyb20KKyAgICAgKiB0aGUgYXBwbGljYXRpb24gcHJvY2Vzcy4gQ3JlYXRpbmcgYW4gQXVkaW9FZmZlY3Qgb2JqZWN0IHdpbGwgY3JlYXRlIHRoZSBlZmZlY3QgZW5naW5lCisgICAgICogaW4gdGhlIEF1ZGlvRmxpbmdlciBpZiBubyBlbmdpbmUgb2YgdGhlIHNwZWNpZmllZCB0eXBlIGV4aXN0cy4gSWYgb25lIGV4aXN0cywgdGhpcyBlbmdpbmUKKyAgICAgKiB3aWxsIGJlIHVzZWQuIFRoZSBhcHBsaWNhdGlvbiBjcmVhdGluZyB0aGUgQXVkaW9FZmZlY3Qgb2JqZWN0IChvciBhIGRlcml2ZWQgY2xhc3MgbGlrZQorICAgICAqIFJldmVyYiBmb3IgaW5zdGFuY2UpIHdpbGwgZWl0aGVyIHJlY2VpdmUgY29udHJvbCBvZiB0aGUgZWZmZWN0IGVuZ2luZSBvciBub3QsIGRlcGVuZGluZworICAgICAqIG9uIHRoZSBwcmlvcml0eSBwYXJhbWV0ZXIuIElmIHByaW9yaXR5IGlzIGhpZ2hlciB0aGFuIHRoZSBwcmlvcml0eSB1c2VkIGJ5IHRoZSBjdXJyZW50CisgICAgICogZWZmZWN0IGVuZ2luZSBvd25lciwgdGhlIGNvbnRyb2wgd2lsbCBiZSB0cmFuc2ZlcmVkIHRvIHRoZSBuZXcgYXBwbGljYXRpb24uIE90aGVyd2lzZQorICAgICAqIGNvbnRyb2wgd2lsbCByZW1haW4gdG8gdGhlIHByZXZpb3VzIGFwcGxpY2F0aW9uLiBJbiB0aGlzIGNhc2UsIHRoZSBuZXcgYXBwbGljYXRpb24gd2lsbCBiZQorICAgICAqIG5vdGlmaWVkIG9mIGNoYW5nZXMgaW4gZWZmZWN0IGVuZ2luZSBzdGF0ZSBvciBjb250cm9sIG93bmVyc2hpcCBieSB0aGUgZWZmZWN0IGNhbGxiYWNrLgorICAgICAqIEFmdGVyIGNyZWF0aW5nIHRoZSBBdWRpb0VmZmVjdCwgdGhlIGFwcGxpY2F0aW9uIG11c3QgY2FsbCB0aGUgaW5pdENoZWNrKCkgbWV0aG9kIGFuZAorICAgICAqIGNoZWNrIHRoZSBjcmVhdGlvbiBzdGF0dXMgYmVmb3JlIHRyeWluZyB0byBjb250cm9sIHRoZSBlZmZlY3QgZW5naW5lIChzZWUgaW5pdENoZWNrKCkpLgorICAgICAqIElmIHRoZSBlZmZlY3QgaXMgdG8gYmUgYXBwbGllZCB0byBhbiBBdWRpb1RyYWNrIG9yIE1lZGlhUGxheWVyIG9ubHkgdGhlIGFwcGxpY2F0aW9uCisgICAgICogbXVzdCBzcGVjaWZ5IHRoZSBhdWRpbyBzZXNzaW9uIElEIGNvcnJlc3BvbmRpbmcgdG8gdGhpcyBwbGF5ZXIuCisgICAgICovCisKKyAgICAvKiBTaW1wbGUgQ29uc3RydWN0b3IuCisgICAgICovCisgICAgQXVkaW9FZmZlY3QoKTsKKworCisgICAgLyogQ29uc3RydWN0b3IuCisgICAgICoKKyAgICAgKiBQYXJhbWV0ZXJzOgorICAgICAqCisgICAgICogdHlwZTogIHR5cGUgb2YgZWZmZWN0IGNyZWF0ZWQ6IGNhbiBiZSBudWxsIGlmIHV1aWQgaXMgc3BlY2lmaWVkLiBUaGlzIGNvcnJlc3BvbmRzIHRvCisgICAgICogICAgICAgIHRoZSBPcGVuU0wgRVMgaW50ZXJmYWNlIGltcGxlbWVudGVkIGJ5IHRoaXMgZWZmZWN0LgorICAgICAqIHV1aWQ6ICBVdWlkIG9mIGVmZmVjdCBjcmVhdGVkOiBjYW4gYmUgbnVsbCBpZiB0eXBlIGlzIHNwZWNpZmllZC4gVGhpcyB1dWlkIGNvcnJlc3BvbmRzIHRvCisgICAgICogICAgICAgIGEgcGFydGljdWxhciBpbXBsZW1lbnRhdGlvbiBvZiBhbiBlZmZlY3QgdHlwZS4KKyAgICAgKiBwcmlvcml0eTogICAgcmVxdWVzdGVkIHByaW9yaXR5IGZvciBlZmZlY3QgY29udHJvbDogdGhlIHByaW9yaXR5IGxldmVsIGNvcnJlc3BvbmRzIHRvIHRoZQorICAgICAqICAgICAgdmFsdWUgb2YgcHJpb3JpdHkgcGFyYW1ldGVyOiBuZWdhdGl2ZSB2YWx1ZXMgaW5kaWNhdGUgbG93ZXIgcHJpb3JpdGllcywgcG9zaXRpdmUgdmFsdWVzCisgICAgICogICAgICBoaWdoZXIgcHJpb3JpdGllcywgMCBiZWluZyB0aGUgbm9ybWFsIHByaW9yaXR5LgorICAgICAqIGNiZjogICAgICAgICBvcHRpb25hbCBjYWxsYmFjayBmdW5jdGlvbiAoc2VlIGVmZmVjdF9jYWxsYmFja190KQorICAgICAqIHVzZXI6ICAgICAgICBwb2ludGVyIHRvIGNvbnRleHQgZm9yIHVzZSBieSB0aGUgY2FsbGJhY2sgcmVjZWl2ZXIuCisgICAgICogc2Vzc2lvbklEOiAgIGF1ZGlvIHNlc3Npb24gdGhpcyBlZmZlY3QgaXMgYXNzb2NpYXRlZCB0by4gSWYgMCwgdGhlIGVmZmVjdCB3aWxsIGJlIGdsb2JhbCB0bworICAgICAqICAgICAgdGhlIG91dHB1dCBtaXguIElmIG5vdCAwLCB0aGUgZWZmZWN0IHdpbGwgYmUgYXBwbGllZCB0byBhbGwgcGxheWVycworICAgICAqICAgICAgKEF1ZGlvVHJhY2sgb3IgTWVkaWFQTGF5ZXIpIHdpdGhpbiB0aGUgc2FtZSBhdWRpbyBzZXNzaW9uLgorICAgICAqIG91dHB1dDogIEhBTCBhdWRpbyBvdXRwdXQgc3RyZWFtIHRvIHdoaWNoIHRoaXMgZWZmZWN0IG11c3QgYmUgYXR0YWNoZWQuIExlYXZlIGF0IDAgZm9yCisgICAgICogICAgICBhdXRvbWF0aWMgb3V0cHV0IHNlbGVjdGlvbiBieSBBdWRpb0ZsaW5nZXIuCisgICAgICovCisKKyAgICBBdWRpb0VmZmVjdChjb25zdCBlZmZlY3RfdXVpZF90ICp0eXBlLAorICAgICAgICAgICAgICAgIGNvbnN0IGVmZmVjdF91dWlkX3QgKnV1aWQgPSBOVUxMLAorICAgICAgICAgICAgICAgICAgaW50MzJfdCBwcmlvcml0eSA9IDAsCisgICAgICAgICAgICAgICAgICBlZmZlY3RfY2FsbGJhY2tfdCBjYmYgPSAwLAorICAgICAgICAgICAgICAgICAgdm9pZCogdXNlciA9IDAsCisgICAgICAgICAgICAgICAgICBpbnQgc2Vzc2lvbklkID0gMCwKKyAgICAgICAgICAgICAgICAgIGF1ZGlvX2lvX2hhbmRsZV90IG91dHB1dCA9IDAKKyAgICAgICAgICAgICAgICAgICk7CisKKyAgICAvKiBDb25zdHJ1Y3Rvci4KKyAgICAgKiAgICAgIFNhbWUgYXMgYWJvdmUgYnV0IHdpdGggdHlwZSBhbmQgdXVpZCBzcGVjaWZpZWQgYnkgY2hhcmFjdGVyIHN0cmluZ3MKKyAgICAgKi8KKyAgICBBdWRpb0VmZmVjdChjb25zdCBjaGFyICp0eXBlU3RyLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp1dWlkU3RyID0gTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBwcmlvcml0eSA9IDAsCisgICAgICAgICAgICAgICAgICAgIGVmZmVjdF9jYWxsYmFja190IGNiZiA9IDAsCisgICAgICAgICAgICAgICAgICAgIHZvaWQqIHVzZXIgPSAwLAorICAgICAgICAgICAgICAgICAgICBpbnQgc2Vzc2lvbklkID0gMCwKKyAgICAgICAgICAgICAgICAgICAgYXVkaW9faW9faGFuZGxlX3Qgb3V0cHV0ID0gMAorICAgICAgICAgICAgICAgICAgICApOworCisgICAgLyogVGVybWluYXRlcyB0aGUgQXVkaW9FZmZlY3QgYW5kIHVucmVnaXN0ZXJzIGl0IGZyb20gQXVkaW9GbGluZ2VyLgorICAgICAqIFRoZSBlZmZlY3QgZW5naW5lIGlzIGFsc28gZGVzdHJveWVkIGlmIHRoaXMgQXVkaW9FZmZlY3Qgd2FzIHRoZSBsYXN0IGNvbnRyb2xsaW5nCisgICAgICogdGhlIGVuZ2luZS4KKyAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIH5BdWRpb0VmZmVjdCgpOworCisgICAgLyogSW5pdGlhbGl6ZSBhbiB1bmluaXRpYWxpemVkIEF1ZGlvRWZmZWN0LgorICAgICogUmV0dXJuZWQgc3RhdHVzIChmcm9tIHV0aWxzL0Vycm9ycy5oKSBjYW4gYmU6CisgICAgKiAgLSBOT19FUlJPUiBvciBBTFJFQURZX0VYSVNUUzogc3VjY2Vzc2Z1bCBpbml0aWFsaXphdGlvbgorICAgICogIC0gSU5WQUxJRF9PUEVSQVRJT046IEF1ZGlvRWZmZWN0IGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQKKyAgICAqICAtIEJBRF9WQUxVRTogaW52YWxpZCBwYXJhbWV0ZXIKKyAgICAqICAtIE5PX0lOSVQ6IGF1ZGlvIGZsaW5nZXIgb3IgYXVkaW8gaGFyZHdhcmUgbm90IGluaXRpYWxpemVkCisgICAgKiAqLworICAgICAgICAgICAgc3RhdHVzX3QgICAgc2V0KGNvbnN0IGVmZmVjdF91dWlkX3QgKnR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZWZmZWN0X3V1aWRfdCAqdXVpZCA9IE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBwcmlvcml0eSA9IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWZmZWN0X2NhbGxiYWNrX3QgY2JmID0gMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiB1c2VyID0gMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2Vzc2lvbklkID0gMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19pb19oYW5kbGVfdCBvdXRwdXQgPSAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKworICAgIC8qIFJlc3VsdCBvZiBjb25zdHJ1Y3RpbmcgdGhlIEF1ZGlvRWZmZWN0LiBUaGlzIG11c3QgYmUgY2hlY2tlZAorICAgICAqIGJlZm9yZSB1c2luZyBhbnkgQXVkaW9FZmZlY3QgQVBJLgorICAgICAqIGluaXRDaGVjaygpIGNhbiByZXR1cm46CisgICAgICogIC0gTk9fRVJST1I6ICAgIHRoZSBlZmZlY3QgZW5naW5lIGlzIHN1Y2Nlc3NmdWxseSBjcmVhdGVkIGFuZCB0aGUgYXBwbGljYXRpb24gaGFzIGNvbnRyb2wuCisgICAgICogIC0gQUxSRUFEWV9FWElTVFM6IHRoZSBlZmZlY3QgZW5naW5lIGlzIHN1Y2Nlc3NmdWxseSBjcmVhdGVkIGJ1dCB0aGUgYXBwbGljYXRpb24gZG9lcyBub3QKKyAgICAgKiAgICAgICAgICAgICAgaGF2ZSBjb250cm9sLgorICAgICAqICAtIE5PX0lOSVQ6ICAgICB0aGUgZWZmZWN0IGNyZWF0aW9uIGZhaWxlZC4KKyAgICAgKgorICAgICAqLworICAgICAgICAgICAgc3RhdHVzX3QgICAgaW5pdENoZWNrKCkgY29uc3Q7CisKKworICAgIC8qIFJldHVybnMgdGhlIHVuaXF1ZSBlZmZlY3QgSWQgZm9yIHRoZSBjb250cm9sbGVkIGVmZmVjdCBlbmdpbmUuIFRoaXMgSUQgaXMgdW5pcXVlCisgICAgICogc3lzdGVtIHdpZGUgYW5kIGlzIHVzZWQgZm9yIGluc3RhbmNlIGluIHRoZSBjYXNlIG9mIGF1eGlsaWFyeSBlZmZlY3RzIHRvIGF0dGFjaAorICAgICAqIHRoZSBlZmZlY3QgdG8gYW4gQXVkaW9UcmFjayBvciBNZWRpYVBsYXllci4KKyAgICAgKgorICAgICAqLworICAgICAgICAgICAgaW50MzJfdCAgICAgaWQoKSBjb25zdCB7IHJldHVybiBtSWQ7IH0KKworICAgIC8qIFJldHVybnMgYSBkZXNjcmlwdG9yIGZvciB0aGUgZWZmZWN0IChzZWUgZWZmZWN0X2Rlc2NyaXB0b3JfdCBpbiBFZmZlY3RBcGkuaCkuCisgICAgICovCisgICAgICAgICAgICBlZmZlY3RfZGVzY3JpcHRvcl90IGRlc2NyaXB0b3IoKSBjb25zdDsKKworICAgIC8qIFJldHVybnMgZWZmZWN0IGNvbnRyb2wgcHJpb3JpdHkgb2YgdGhpcyBBdWRpb0VmZmVjdCBvYmplY3QuCisgICAgICovCisgICAgICAgICAgICBpbnQzMl90ICAgICBwcmlvcml0eSgpIGNvbnN0IHsgcmV0dXJuIG1Qcmlvcml0eTsgfQorCisKKyAgICAvKiBFbmFibGVzIG9yIGRpc2FibGVzIHRoZSBlZmZlY3QgZW5naW5lLgorICAgICAqCisgICAgICogUGFyYW1ldGVyczoKKyAgICAgKiAgZW5hYmxlZDogcmVxdWVzdGVkIGVuYWJsZSBzdGF0ZS4KKyAgICAgKgorICAgICAqIFJldHVybmVkIHN0YXR1cyAoZnJvbSB1dGlscy9FcnJvcnMuaCkgY2FuIGJlOgorICAgICAqICAtIE5PX0VSUk9SOiBzdWNjZXNzZnVsIG9wZXJhdGlvbgorICAgICAqICAtIElOVkFMSURfT1BFUkFUSU9OOiB0aGUgYXBwbGljYXRpb24gZG9lcyBub3QgaGF2ZSBjb250cm9sIG9mIHRoZSBlZmZlY3QgZW5naW5lIG9yIHRoZQorICAgICAqICBlZmZlY3QgaXMgYWxyZWFkeSBpbiB0aGUgcmVxdWVzdGVkIHN0YXRlLgorICAgICAqLworICAgIHZpcnR1YWwgc3RhdHVzX3QgICAgc2V0RW5hYmxlZChib29sIGVuYWJsZWQpOworICAgICAgICAgICAgYm9vbCAgICAgICAgZ2V0RW5hYmxlZCgpIGNvbnN0OworCisgICAgLyogU2V0cyBhIHBhcmFtZXRlciB2YWx1ZS4KKyAgICAgKgorICAgICAqIFBhcmFtZXRlcnM6CisgICAgICogICAgICBwYXJhbTogIHBvaW50ZXIgdG8gZWZmZWN0X3BhcmFtX3Qgc3RydWN0dXJlIGNvbnRhaW5pbmcgdGhlIHBhcmFtZXRlcgorICAgICAqICAgICAgICAgIGFuZCBpdHMgdmFsdWUgKFNlZSBFZmZlY3RBcGkuaCkuCisgICAgICogUmV0dXJuZWQgc3RhdHVzIChmcm9tIHV0aWxzL0Vycm9ycy5oKSBjYW4gYmU6CisgICAgICogIC0gTk9fRVJST1I6IHN1Y2Nlc3NmdWwgb3BlcmF0aW9uLgorICAgICAqICAtIElOVkFMSURfT1BFUkFUSU9OOiB0aGUgYXBwbGljYXRpb24gZG9lcyBub3QgaGF2ZSBjb250cm9sIG9mIHRoZSBlZmZlY3QgZW5naW5lLgorICAgICAqICAtIEJBRF9WQUxVRTogaW52YWxpZCBwYXJhbWV0ZXIgaWRlbnRpZmllciBvciB2YWx1ZS4KKyAgICAgKiAgLSBERUFEX09CSkVDVDogdGhlIGVmZmVjdCBlbmdpbmUgaGFzIGJlZW4gZGVsZXRlZC4KKyAgICAgKi8KKyAgICAgdmlydHVhbCBzdGF0dXNfdCAgIHNldFBhcmFtZXRlcihlZmZlY3RfcGFyYW1fdCAqcGFyYW0pOworCisgICAgLyogUHJlcGFyZSBhIG5ldyBwYXJhbWV0ZXIgdmFsdWUgdGhhdCB3aWxsIGJlIHNldCBieSBuZXh0IGNhbGwgdG8KKyAgICAgKiBzZXRQYXJhbWV0ZXJDb21taXQoKS4gVGhpcyBtZXRob2QgY2FuIGJlIHVzZWQgdG8gc2V0IG11bHRpcGxlIHBhcmFtZXRlcnMKKyAgICAgKiBpbiBhIHN5bmNocm9ub3VzIG1hbm5lciBvciB0byBhdm9pZCBtdWx0aXBsZSBiaW5kZXIgY2FsbHMgZm9yIGVhY2gKKyAgICAgKiBwYXJhbWV0ZXIuCisgICAgICoKKyAgICAgKiBQYXJhbWV0ZXJzOgorICAgICAqICAgICAgcGFyYW06ICBwb2ludGVyIHRvIGVmZmVjdF9wYXJhbV90IHN0cnVjdHVyZSBjb250YWluaW5nIHRoZSBwYXJhbWV0ZXIKKyAgICAgKiAgICAgICAgICBhbmQgaXRzIHZhbHVlIChTZWUgRWZmZWN0QXBpLmgpLgorICAgICAqCisgICAgICogUmV0dXJuZWQgc3RhdHVzIChmcm9tIHV0aWxzL0Vycm9ycy5oKSBjYW4gYmU6CisgICAgICogIC0gTk9fRVJST1I6IHN1Y2Nlc3NmdWwgb3BlcmF0aW9uLgorICAgICAqICAtIElOVkFMSURfT1BFUkFUSU9OOiB0aGUgYXBwbGljYXRpb24gZG9lcyBub3QgaGF2ZSBjb250cm9sIG9mIHRoZSBlZmZlY3QgZW5naW5lLgorICAgICAqICAtIE5PX01FTU9SWTogbm8gbW9yZSBzcGFjZSBhdmFpbGFibGUgaW4gc2hhcmVkIG1lbW9yeSB1c2VkIGZvciBkZWZlcnJlZCBwYXJhbWV0ZXIKKyAgICAgKiAgc2V0dGluZy4KKyAgICAgKi8KKyAgICAgdmlydHVhbCBzdGF0dXNfdCAgIHNldFBhcmFtZXRlckRlZmVycmVkKGVmZmVjdF9wYXJhbV90ICpwYXJhbSk7CisKKyAgICAgLyogQ29tbWl0IGFsbCBwYXJhbWV0ZXIgdmFsdWVzIHByZXZpb3VzbHkgcHJlcGFyZWQgYnkgc2V0UGFyYW1ldGVyRGVmZXJyZWQoKS4KKyAgICAgICoKKyAgICAgICogUGFyYW1ldGVyczoKKyAgICAgICogICAgIG5vbmUKKyAgICAgICoKKyAgICAgICogUmV0dXJuZWQgc3RhdHVzIChmcm9tIHV0aWxzL0Vycm9ycy5oKSBjYW4gYmU6CisgICAgICAqICAtIE5PX0VSUk9SOiBzdWNjZXNzZnVsIG9wZXJhdGlvbi4KKyAgICAgICogIC0gSU5WQUxJRF9PUEVSQVRJT046IE5vIG5ldyBwYXJhbWV0ZXIgdmFsdWVzIHJlYWR5IGZvciBjb21taXQuCisgICAgICAqICAtIEJBRF9WQUxVRTogaW52YWxpZCBwYXJhbWV0ZXIgaWRlbnRpZmllciBvciB2YWx1ZTogdGhlcmUgaXMgbm8gaW5kaWNhdGlvbgorICAgICAgKiAgICAgYXMgdG8gd2hpY2ggb2YgdGhlIHBhcmFtZXRlcnMgY2F1c2VkIHRoaXMgZXJyb3IuCisgICAgICAqICAtIERFQURfT0JKRUNUOiB0aGUgZWZmZWN0IGVuZ2luZSBoYXMgYmVlbiBkZWxldGVkLgorICAgICAgKi8KKyAgICAgdmlydHVhbCBzdGF0dXNfdCAgIHNldFBhcmFtZXRlckNvbW1pdCgpOworCisgICAgLyogR2V0cyBhIHBhcmFtZXRlciB2YWx1ZS4KKyAgICAgKgorICAgICAqIFBhcmFtZXRlcnM6CisgICAgICogICAgICBwYXJhbTogIHBvaW50ZXIgdG8gZWZmZWN0X3BhcmFtX3Qgc3RydWN0dXJlIGNvbnRhaW5pbmcgdGhlIHBhcmFtZXRlcgorICAgICAqICAgICAgICAgIGFuZCB0aGUgcmV0dXJuZWQgdmFsdWUgKFNlZSBFZmZlY3RBcGkuaCkuCisgICAgICoKKyAgICAgKiBSZXR1cm5lZCBzdGF0dXMgKGZyb20gdXRpbHMvRXJyb3JzLmgpIGNhbiBiZToKKyAgICAgKiAgLSBOT19FUlJPUjogc3VjY2Vzc2Z1bCBvcGVyYXRpb24uCisgICAgICogIC0gSU5WQUxJRF9PUEVSQVRJT046IHRoZSBBdWRpb0VmZmVjdCB3YXMgbm90IHN1Y2Nlc3NmdWxseSBpbml0aWFsaXplZC4KKyAgICAgKiAgLSBCQURfVkFMVUU6IGludmFsaWQgcGFyYW1ldGVyIGlkZW50aWZpZXIuCisgICAgICogIC0gREVBRF9PQkpFQ1Q6IHRoZSBlZmZlY3QgZW5naW5lIGhhcyBiZWVuIGRlbGV0ZWQuCisgICAgICovCisgICAgIHZpcnR1YWwgc3RhdHVzX3QgICBnZXRQYXJhbWV0ZXIoZWZmZWN0X3BhcmFtX3QgKnBhcmFtKTsKKworICAgICAvKiBTZW5kcyBhIGNvbW1hbmQgYW5kIHJlY2VpdmVzIGEgcmVzcG9uc2UgdG8vZnJvbSBlZmZlY3QgZW5naW5lLgorICAgICAgKiAgICAgU2VlIEVmZmVjdEFwaS5oIGZvciBkZXRhaWxzIG9uIGVmZmVjdCBjb21tYW5kKCkgZnVuY3Rpb24sIHZhbGlkIGNvbW1hbmQgY29kZXMKKyAgICAgICogICAgIGFuZCBmb3JtYXRzLgorICAgICAgKi8KKyAgICAgdmlydHVhbCBzdGF0dXNfdCBjb21tYW5kKGludDMyX3QgY21kQ29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgY21kU2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmNtZERhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90ICpyZXBseVNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpyZXBseURhdGEpOworCisKKyAgICAgLyoKKyAgICAgICogVXRpbGl0eSBmdW5jdGlvbnMuCisgICAgICAqLworCisgICAgIC8qIENvbnZlcnRzIHRoZSBzdHJpbmcgcGFzc2VkIGFzIGZpcnN0IGFyZ3VtZW50IHRvIHRoZSBlZmZlY3RfdXVpZF90CisgICAgICAqIHBvaW50ZWQgdG8gYnkgc2Vjb25kIGFyZ3VtZW50CisgICAgICAqLworICAgICBzdGF0aWMgc3RhdHVzX3Qgc3RyaW5nVG9HdWlkKGNvbnN0IGNoYXIgKnN0ciwgZWZmZWN0X3V1aWRfdCAqZ3VpZCk7CisgICAgIC8qIENvbnZlcnRzIHRoZSBlZmZlY3RfdXVpZF90IHBvaW50ZWQgdG8gYnkgZmlyc3QgYXJndW1lbnQgdG8gdGhlCisgICAgICAqIHN0cmluZyBwYXNzZWQgYXMgc2Vjb25kIGFyZ3VtZW50CisgICAgICAqLworICAgICBzdGF0aWMgc3RhdHVzX3QgZ3VpZFRvU3RyaW5nKGNvbnN0IGVmZmVjdF91dWlkX3QgKmd1aWQsIGNoYXIgKnN0ciwgc2l6ZV90IG1heExlbik7CisKK3Byb3RlY3RlZDoKKyAgICAgdm9sYXRpbGUgaW50MzJfdCAgICAgICAgbUVuYWJsZWQ7ICAgICAgICAgICAvLyBlbmFibGUgc3RhdGUKKyAgICAgaW50MzJfdCAgICAgICAgICAgICAgICAgbVNlc3Npb25JZDsgICAgICAgICAvLyBhdWRpbyBzZXNzaW9uIElECisgICAgIGludDMyX3QgICAgICAgICAgICAgICAgIG1Qcmlvcml0eTsgICAgICAgICAgLy8gcHJpb3JpdHkgZm9yIGVmZmVjdCBjb250cm9sCisgICAgIHN0YXR1c190ICAgICAgICAgICAgICAgIG1TdGF0dXM7ICAgICAgICAgICAgLy8gZWZmZWN0IHN0YXR1cworICAgICBlZmZlY3RfY2FsbGJhY2tfdCAgICAgICBtQ2JmOyAgICAgICAgICAgICAgIC8vIGNhbGxiYWNrIGZ1bmN0aW9uIGZvciBzdGF0dXMsIGNvbnRyb2wgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGFyYW1ldGVyIGNoYW5nZXMgbm90aWZpY2F0aW9ucworICAgICB2b2lkKiAgICAgICAgICAgICAgICAgICBtVXNlckRhdGE7ICAgICAgICAgIC8vIGNsaWVudCBjb250ZXh0IGZvciBjYWxsYmFjayBmdW5jdGlvbgorICAgICBlZmZlY3RfZGVzY3JpcHRvcl90ICAgICBtRGVzY3JpcHRvcjsgICAgICAgIC8vIGVmZmVjdCBkZXNjcmlwdG9yCisgICAgIGludDMyX3QgICAgICAgICAgICAgICAgIG1JZDsgICAgICAgICAgICAgICAgLy8gc3lzdGVtIHdpZGUgdW5pcXVlIGVmZmVjdCBlbmdpbmUgaW5zdGFuY2UgSUQKKworcHJpdmF0ZToKKworICAgICAvLyBJbXBsZW1lbnRzIHRoZSBJRWZmZWN0Q2xpZW50IGludGVyZmFjZQorICAgIGNsYXNzIEVmZmVjdENsaWVudCA6IHB1YmxpYyBhbmRyb2lkOjpCbkVmZmVjdENsaWVudCwgIHB1YmxpYyBhbmRyb2lkOjpJQmluZGVyOjpEZWF0aFJlY2lwaWVudAorICAgIHsKKyAgICBwdWJsaWM6CisKKyAgICAgICAgRWZmZWN0Q2xpZW50KEF1ZGlvRWZmZWN0ICplZmZlY3QpIDogbUVmZmVjdChlZmZlY3Qpe30KKworICAgICAgICAvLyBJRWZmZWN0Q2xpZW50CisgICAgICAgIHZpcnR1YWwgdm9pZCBjb250cm9sU3RhdHVzQ2hhbmdlZChib29sIGNvbnRyb2xHcmFudGVkKSB7CisgICAgICAgICAgICBtRWZmZWN0LT5jb250cm9sU3RhdHVzQ2hhbmdlZChjb250cm9sR3JhbnRlZCk7CisgICAgICAgIH0KKyAgICAgICAgdmlydHVhbCB2b2lkIGVuYWJsZVN0YXR1c0NoYW5nZWQoYm9vbCBlbmFibGVkKSB7CisgICAgICAgICAgICBtRWZmZWN0LT5lbmFibGVTdGF0dXNDaGFuZ2VkKGVuYWJsZWQpOworICAgICAgICB9CisgICAgICAgIHZpcnR1YWwgdm9pZCBjb21tYW5kRXhlY3V0ZWQoaW50IGNtZENvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNtZFNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqcENtZERhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlcGx5U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpwUmVwbHlEYXRhKSB7CisgICAgICAgICAgICBtRWZmZWN0LT5jb21tYW5kRXhlY3V0ZWQoY21kQ29kZSwgY21kU2l6ZSwgcENtZERhdGEsIHJlcGx5U2l6ZSwgcFJlcGx5RGF0YSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBJQmluZGVyOjpEZWF0aFJlY2lwaWVudAorICAgICAgICB2aXJ0dWFsIHZvaWQgYmluZGVyRGllZChjb25zdCB3cDxJQmluZGVyPiYgd2hvKSB7bUVmZmVjdC0+YmluZGVyRGllZCgpO30KKworICAgIHByaXZhdGU6CisgICAgICAgIEF1ZGlvRWZmZWN0ICptRWZmZWN0OworICAgIH07CisKKworICAgIGZyaWVuZCBjbGFzcyBFZmZlY3RDbGllbnQ7CisKKyAgICAvLyBJRWZmZWN0Q2xpZW50CisgICAgdm9pZCBjb250cm9sU3RhdHVzQ2hhbmdlZChib29sIGNvbnRyb2xHcmFudGVkKTsKKyAgICB2b2lkIGVuYWJsZVN0YXR1c0NoYW5nZWQoYm9vbCBlbmFibGVkKTsKKyAgICB2b2lkIGNvbW1hbmRFeGVjdXRlZChpbnQgY21kQ29kZSwgaW50IGNtZFNpemUsIHZvaWQgKnBDbWREYXRhLCBpbnQgcmVwbHlTaXplLCB2b2lkICpwUmVwbHlEYXRhKTsKKyAgICB2b2lkIGJpbmRlckRpZWQoKTsKKworCisgICAgc3A8SUVmZmVjdD4gICAgICAgICAgICAgbUlFZmZlY3Q7ICAgICAgICAgICAvLyBJRWZmZWN0IGJpbmRlciBpbnRlcmZhY2UKKyAgICBzcDxFZmZlY3RDbGllbnQ+ICAgICAgICBtSUVmZmVjdENsaWVudDsgICAgIC8vIElFZmZlY3RDbGllbnQgaW1wbGVtZW50YXRpb24KKyAgICBzcDxJTWVtb3J5PiAgICAgICAgICAgICBtQ2Jsa01lbW9yeTsgICAgICAgIC8vIHNoYXJlZCBtZW1vcnkgZm9yIGRlZmVycmVkIHBhcmFtZXRlciBzZXR0aW5nCisgICAgZWZmZWN0X3BhcmFtX2NibGtfdCogICAgbUNibGs7ICAgICAgICAgICAgICAvLyBjb250cm9sIGJsb2NrIGZvciBkZWZlcnJlZCBwYXJhbWV0ZXIgc2V0dGluZworfTsKKworCit9OyAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCisjZW5kaWYgLy8gQU5EUk9JRF9BVURJT0VGRkVDVF9ICmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL0F1ZGlvUmVjb3JkLmggYi9pbmNsdWRlL21lZGlhL0F1ZGlvUmVjb3JkLmgKaW5kZXggOTJiYzEyNi4uMzhlM2Q0NCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9tZWRpYS9BdWRpb1JlY29yZC5oCisrKyBiL2luY2x1ZGUvbWVkaWEvQXVkaW9SZWNvcmQuaApAQCAtMTAwLDYgKzEwMCwxOSBAQAogCiAgICAgdHlwZWRlZiB2b2lkICgqY2FsbGJhY2tfdCkoaW50IGV2ZW50LCB2b2lkKiB1c2VyLCB2b2lkICppbmZvKTsKIAorICAgIC8qIFJldHVybnMgdGhlIG1pbmltdW0gZnJhbWUgY291bnQgcmVxdWlyZWQgZm9yIHRoZSBzdWNjZXNzZnVsIGNyZWF0aW9uIG9mCisgICAgICogYW4gQXVkaW9SZWNvcmQgb2JqZWN0LgorICAgICAqIFJldHVybmVkIHN0YXR1cyAoZnJvbSB1dGlscy9FcnJvcnMuaCkgY2FuIGJlOgorICAgICAqICAtIE5PX0VSUk9SOiBzdWNjZXNzZnVsIG9wZXJhdGlvbgorICAgICAqICAtIE5PX0lOSVQ6IGF1ZGlvIHNlcnZlciBvciBhdWRpbyBoYXJkd2FyZSBub3QgaW5pdGlhbGl6ZWQKKyAgICAgKiAgLSBCQURfVkFMVUU6IHVuc3VwcG9ydGVkIGNvbmZpZ3VyYXRpb24KKyAgICAgKi8KKworICAgICBzdGF0aWMgc3RhdHVzX3QgZ2V0TWluRnJhbWVDb3VudChpbnQqIGZyYW1lQ291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHNhbXBsZVJhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjaGFubmVsQ291bnQpOworCiAgICAgLyogQ29uc3RydWN0cyBhbiB1bmluaXRpYWxpemVkIEF1ZGlvUmVjb3JkLiBObyBjb25uZWN0aW9uIHdpdGgKICAgICAgKiBBdWRpb0ZsaW5nZXIgdGFrZXMgcGxhY2UuCiAgICAgICovCkBAIC0xNDIsNyArMTU1LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZsYWdzICAgICAgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tfdCBjYmYgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogdXNlciA9IDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbm90aWZpY2F0aW9uRnJhbWVzID0gMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbm90aWZpY2F0aW9uRnJhbWVzID0gMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzZXNzaW9uSWQgPSAwKTsKIAogCiAgICAgLyogVGVybWluYXRlcyB0aGUgQXVkaW9SZWNvcmQgYW5kIHVucmVnaXN0ZXJzIGl0IGZyb20gQXVkaW9GbGluZ2VyLgpAQCAtMTY4LDcgKzE4Miw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tfdCBjYmYgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQqIHVzZXIgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBub3RpZmljYXRpb25GcmFtZXMgPSAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdGhyZWFkQ2FuQ2FsbEphdmEgPSBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB0aHJlYWRDYW5DYWxsSmF2YSA9IGZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzZXNzaW9uSWQgPSAwKTsKIAogCiAgICAgLyogUmVzdWx0IG9mIGNvbnN0cnVjdGluZyB0aGUgQXVkaW9SZWNvcmQuIFRoaXMgbXVzdCBiZSBjaGVja2VkCkBAIC0yNzAsNiArMjg1LDE2IEBACiAgICAgICovCiAgICAgICAgICAgICBhdWRpb19pb19oYW5kbGVfdCAgICBnZXRJbnB1dCgpOwogCisgICAgLyogcmV0dXJucyB0aGUgYXVkaW8gc2Vzc2lvbiBJRCBhc3NvY2lhdGVkIHRvIHRoaXMgQXVkaW9SZWNvcmQuCisgICAgICoKKyAgICAgKiBQYXJhbWV0ZXJzOgorICAgICAqICBub25lLgorICAgICAqCisgICAgICogUmV0dXJuZWQgdmFsdWU6CisgICAgICogIEF1ZGlvUmVjb3JkIHNlc3Npb24gSUQuCisgICAgICovCisgICAgICAgICAgICBpbnQgICAgZ2V0U2Vzc2lvbklkKCk7CisKICAgICAvKiBvYnRhaW5zIGEgYnVmZmVyIG9mICJmcmFtZUNvdW50IiBmcmFtZXMuIFRoZSBidWZmZXIgbXVzdCBiZQogICAgICAqIGZpbGxlZCBlbnRpcmVseS4gSWYgdGhlIHRyYWNrIGlzIHN0b3BwZWQsIG9idGFpbkJ1ZmZlcigpIHJldHVybnMKICAgICAgKiBTVE9QUEVEIGluc3RlYWQgb2YgTk9fRVJST1IgYXMgbG9uZyBhcyB0aGVyZSBhcmUgYnVmZmVycyBhdmFpbGxhYmxlLApAQCAtMzU2LDYgKzM4MSw3IEBACiAgICAgdWludDMyX3QgICAgICAgICAgICAgICAgbUZsYWdzOwogICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgIG1DaGFubmVsczsKICAgICBhdWRpb19pb19oYW5kbGVfdCAgICAgICBtSW5wdXQ7CisgICAgaW50ICAgICAgICAgICAgICAgICAgICAgbVNlc3Npb25JZDsKIH07CiAKIH07IC8vIG5hbWVzcGFjZSBhbmRyb2lkCmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL0F1ZGlvU3lzdGVtLmggYi9pbmNsdWRlL21lZGlhL0F1ZGlvU3lzdGVtLmgKaW5kZXggZDBjY2M1MDUuLjE5NGYyM2EgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbWVkaWEvQXVkaW9TeXN0ZW0uaAorKysgYi9pbmNsdWRlL21lZGlhL0F1ZGlvU3lzdGVtLmgKQEAgLTIzNCw2ICsyMzQsOCBAQAogICAgIHN0YXRpYyBzdGF0dXNfdCBnZXRSZW5kZXJQb3NpdGlvbih1aW50MzJfdCAqaGFsRnJhbWVzLCB1aW50MzJfdCAqZHNwRnJhbWVzLCBpbnQgc3RyZWFtID0gREVGQVVMVCk7CiAKICAgICBzdGF0aWMgdW5zaWduZWQgaW50ICBnZXRJbnB1dEZyYW1lc0xvc3QoYXVkaW9faW9faGFuZGxlX3QgaW9IYW5kbGUpOworCisgICAgc3RhdGljIGludCBuZXdBdWRpb1Nlc3Npb25JZCgpOwogICAgIC8vCiAgICAgLy8gQXVkaW9Qb2xpY3lTZXJ2aWNlIGludGVyZmFjZQogICAgIC8vCmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL0F1ZGlvVHJhY2suaCBiL2luY2x1ZGUvbWVkaWEvQXVkaW9UcmFjay5oCmluZGV4IDE0YjMwYWUuLmVmNTM3ZjQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbWVkaWEvQXVkaW9UcmFjay5oCisrKyBiL2luY2x1ZGUvbWVkaWEvQXVkaW9UcmFjay5oCkBAIC0xMDIsNiArMTAyLDE3IEBACiAKICAgICB0eXBlZGVmIHZvaWQgKCpjYWxsYmFja190KShpbnQgZXZlbnQsIHZvaWQqIHVzZXIsIHZvaWQgKmluZm8pOwogCisgICAgLyogUmV0dXJucyB0aGUgbWluaW11bSBmcmFtZSBjb3VudCByZXF1aXJlZCBmb3IgdGhlIHN1Y2Nlc3NmdWwgY3JlYXRpb24gb2YKKyAgICAgKiBhbiBBdWRpb1RyYWNrIG9iamVjdC4KKyAgICAgKiBSZXR1cm5lZCBzdGF0dXMgKGZyb20gdXRpbHMvRXJyb3JzLmgpIGNhbiBiZToKKyAgICAgKiAgLSBOT19FUlJPUjogc3VjY2Vzc2Z1bCBvcGVyYXRpb24KKyAgICAgKiAgLSBOT19JTklUOiBhdWRpbyBzZXJ2ZXIgb3IgYXVkaW8gaGFyZHdhcmUgbm90IGluaXRpYWxpemVkCisgICAgICovCisKKyAgICAgc3RhdGljIHN0YXR1c190IGdldE1pbkZyYW1lQ291bnQoaW50KiBmcmFtZUNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RyZWFtVHlwZSAgICAgID0tMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc2FtcGxlUmF0ZSA9IDApOworCiAgICAgLyogQ29uc3RydWN0cyBhbiB1bmluaXRpYWxpemVkIEF1ZGlvVHJhY2suIE5vIGNvbm5lY3Rpb24gd2l0aAogICAgICAqIEF1ZGlvRmxpbmdlciB0YWtlcyBwbGFjZS4KICAgICAgKi8KQEAgLTEzOCw3ICsxNDksOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZmxhZ3MgICAgICAgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2tfdCBjYmYgICAgICAgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogdXNlciAgICAgICAgICAgPSAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5vdGlmaWNhdGlvbkZyYW1lcyA9IDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5vdGlmaWNhdGlvbkZyYW1lcyA9IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2Vzc2lvbklkID0gMCk7CiAKICAgICAvKiBDcmVhdGVzIGFuIGF1ZGlvIHRyYWNrIGFuZCByZWdpc3RlcnMgaXQgd2l0aCBBdWRpb0ZsaW5nZXIuIFdpdGggdGhpcyBjb25zdHJ1Y3RvciwKICAgICAgKiBUaGUgUENNIGRhdGEgdG8gYmUgcmVuZGVyZWQgYnkgQXVkaW9UcmFjayBpcyBwYXNzZWQgaW4gYSBzaGFyZWQgbWVtb3J5IGJ1ZmZlcgpAQCAtMTU3LDcgKzE2OSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBmbGFncyAgICAgID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrX3QgY2JmICAgICAgPSAwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCogdXNlciAgICAgICAgICA9IDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbm90aWZpY2F0aW9uRnJhbWVzID0gMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbm90aWZpY2F0aW9uRnJhbWVzID0gMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzZXNzaW9uSWQgPSAwKTsKIAogICAgIC8qIFRlcm1pbmF0ZXMgdGhlIEF1ZGlvVHJhY2sgYW5kIHVucmVnaXN0ZXJzIGl0IGZyb20gQXVkaW9GbGluZ2VyLgogICAgICAqIEFsc28gZGVzdHJveXMgYWxsIHJlc291cmNlcyBhc3NvdGlhdGVkIHdpdGggdGhlIEF1ZGlvVHJhY2suCkBAIC0xODIsNyArMTk1LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiB1c2VyICAgICAgICAgID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbm90aWZpY2F0aW9uRnJhbWVzID0gMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcDxJTWVtb3J5PiYgc2hhcmVkQnVmZmVyID0gMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIHRocmVhZENhbkNhbGxKYXZhID0gZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgdGhyZWFkQ2FuQ2FsbEphdmEgPSBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2Vzc2lvbklkID0gMCk7CiAKIAogICAgIC8qIFJlc3VsdCBvZiBjb25zdHJ1Y3RpbmcgdGhlIEF1ZGlvVHJhY2suIFRoaXMgbXVzdCBiZSBjaGVja2VkCkBAIC0yMzksMTAgKzI1MywxNyBAQAogCiAKICAgICAvKiBzZXQgdm9sdW1lIGZvciB0aGlzIHRyYWNrLCBtb3N0bHkgdXNlZCBmb3IgZ2FtZXMnIHNvdW5kIGVmZmVjdHMKKyAgICAgKiBsZWZ0IGFuZCByaWdodCB2b2x1bWVzLiBMZXZlbHMgbXVzdCBiZSA8PSAxLjAuCiAgICAgICovCi0gICAgICAgICAgICB2b2lkICAgICAgICBzZXRWb2x1bWUoZmxvYXQgbGVmdCwgZmxvYXQgcmlnaHQpOworICAgICAgICAgICAgc3RhdHVzX3QgICAgc2V0Vm9sdW1lKGZsb2F0IGxlZnQsIGZsb2F0IHJpZ2h0KTsKICAgICAgICAgICAgIHZvaWQgICAgICAgIGdldFZvbHVtZShmbG9hdCogbGVmdCwgZmxvYXQqIHJpZ2h0KTsKIAorICAgIC8qIHNldCB0aGUgc2VuZCBsZXZlbCBmb3IgdGhpcyB0cmFjay4gQW4gYXV4aWxpYXJ5IGVmZmVjdCBzaG91bGQgYmUgYXR0YWNoZWQKKyAgICAgKiB0byB0aGUgdHJhY2sgd2l0aCBhdHRhY2hFZmZlY3QoKS4gTGV2ZWwgbXVzdCBiZSA8PSAxLjAuCisgICAgICovCisgICAgICAgICAgICBzdGF0dXNfdCAgICBzZXRTZW5kTGV2ZWwoZmxvYXQgbGV2ZWwpOworICAgICAgICAgICAgdm9pZCAgICAgICAgZ2V0U2VuZExldmVsKGZsb2F0KiBsZXZlbCk7CisKICAgICAvKiBzZXQgc2FtcGxlIHJhdGUgZm9yIHRoaXMgdHJhY2ssIG1vc3RseSB1c2VkIGZvciBnYW1lcycgc291bmQgZWZmZWN0cwogICAgICAqLwogICAgICAgICAgICAgc3RhdHVzX3QgICAgc2V0U2FtcGxlUmF0ZShpbnQgc2FtcGxlUmF0ZSk7CkBAIC0zNDAsNiArMzYxLDMxIEBACiAgICAgICovCiAgICAgICAgICAgICBhdWRpb19pb19oYW5kbGVfdCAgICBnZXRPdXRwdXQoKTsKIAorICAgIC8qIHJldHVybnMgdGhlIHVuaXF1ZSBJRCBhc3NvY2lhdGVkIHRvIHRoaXMgdHJhY2suCisgICAgICoKKyAgICAgKiBQYXJhbWV0ZXJzOgorICAgICAqICBub25lLgorICAgICAqCisgICAgICogUmV0dXJuZWQgdmFsdWU6CisgICAgICogIEF1ZGlvVHJhY2sgSUQuCisgICAgICovCisgICAgICAgICAgICBpbnQgICAgZ2V0U2Vzc2lvbklkKCk7CisKKworICAgIC8qIEF0dGFjaCB0cmFjayBhdXhpbGlhcnkgb3V0cHV0IHRvIHNwZWNpZmllZCBlZmZlY3QuIFVzZWQgZWZmZWN0SWQgPSAwCisgICAgICogdG8gZGV0YWNoIHRyYWNrIGZyb20gZWZmZWN0LgorICAgICAqCisgICAgICogUGFyYW1ldGVyczoKKyAgICAgKgorICAgICAqIGVmZmVjdElkOiAgZWZmZWN0SWQgb2J0YWluZWQgZnJvbSBBdWRpb0VmZmVjdDo6aWQoKS4KKyAgICAgKgorICAgICAqIFJldHVybmVkIHN0YXR1cyAoZnJvbSB1dGlscy9FcnJvcnMuaCkgY2FuIGJlOgorICAgICAqICAtIE5PX0VSUk9SOiBzdWNjZXNzZnVsIG9wZXJhdGlvbgorICAgICAqICAtIElOVkFMSURfT1BFUkFUSU9OOiB0aGUgZWZmZWN0IGlzIG5vdCBhbiBhdXhpbGlhcnkgZWZmZWN0LgorICAgICAqICAtIEJBRF9WQUxVRTogVGhlIHNwZWNpZmllZCBlZmZlY3QgSUQgaXMgaW52YWxpZAorICAgICAqLworICAgICAgICAgICAgc3RhdHVzX3QgICAgYXR0YWNoQXV4RWZmZWN0KGludCBlZmZlY3RJZCk7CisKICAgICAvKiBvYnRhaW5zIGEgYnVmZmVyIG9mICJmcmFtZUNvdW50IiBmcmFtZXMuIFRoZSBidWZmZXIgbXVzdCBiZQogICAgICAqIGZpbGxlZCBlbnRpcmVseS4gSWYgdGhlIHRyYWNrIGlzIHN0b3BwZWQsIG9idGFpbkJ1ZmZlcigpIHJldHVybnMKICAgICAgKiBTVE9QUEVEIGluc3RlYWQgb2YgTk9fRVJST1IgYXMgbG9uZyBhcyB0aGVyZSBhcmUgYnVmZmVycyBhdmFpbGxhYmxlLApAQCAtMzk4LDEzICs0NDQsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmcmFtZUNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcDxJTWVtb3J5PiYgc2hhcmVkQnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9faW9faGFuZGxlX3Qgb3V0cHV0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX2lvX2hhbmRsZV90IG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZW5mb3JjZUZyYW1lQ291bnQpOwogCiAgICAgc3A8SUF1ZGlvVHJhY2s+ICAgICAgICAgbUF1ZGlvVHJhY2s7CiAgICAgc3A8SU1lbW9yeT4gICAgICAgICAgICAgbUNibGtNZW1vcnk7CiAgICAgc3A8QXVkaW9UcmFja1RocmVhZD4gICAgbUF1ZGlvVHJhY2tUaHJlYWQ7CiAKICAgICBmbG9hdCAgICAgICAgICAgICAgICAgICBtVm9sdW1lWzJdOworICAgIGZsb2F0ICAgICAgICAgICAgICAgICAgIG1TZW5kTGV2ZWw7CiAgICAgdWludDMyX3QgICAgICAgICAgICAgICAgbUZyYW1lQ291bnQ7CiAKICAgICBhdWRpb190cmFja19jYmxrX3QqICAgICBtQ2JsazsKQEAgLTQyMCw3ICs0NjgsOCBAQAogCiAgICAgY2FsbGJhY2tfdCAgICAgICAgICAgICAgbUNiZjsKICAgICB2b2lkKiAgICAgICAgICAgICAgICAgICBtVXNlckRhdGE7Ci0gICAgdWludDMyX3QgICAgICAgICAgICAgICAgbU5vdGlmaWNhdGlvbkZyYW1lczsKKyAgICB1aW50MzJfdCAgICAgICAgICAgICAgICBtTm90aWZpY2F0aW9uRnJhbWVzUmVxOyAvLyByZXF1ZXN0ZWQgbnVtYmVyIG9mIGZyYW1lcyBiZXR3ZWVuIGVhY2ggbm90aWZpY2F0aW9uIGNhbGxiYWNrCisgICAgdWludDMyX3QgICAgICAgICAgICAgICAgbU5vdGlmaWNhdGlvbkZyYW1lc0FjdDsgLy8gYWN0dWFsIG51bWJlciBvZiBmcmFtZXMgYmV0d2VlbiBlYWNoIG5vdGlmaWNhdGlvbiBjYWxsYmFjawogICAgIHNwPElNZW1vcnk+ICAgICAgICAgICAgIG1TaGFyZWRCdWZmZXI7CiAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgbUxvb3BDb3VudDsKICAgICB1aW50MzJfdCAgICAgICAgICAgICAgICBtUmVtYWluaW5nRnJhbWVzOwpAQCAtNDI5LDYgKzQ3OCw3IEBACiAgICAgdWludDMyX3QgICAgICAgICAgICAgICAgbU5ld1Bvc2l0aW9uOwogICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgIG1VcGRhdGVQZXJpb2Q7CiAgICAgdWludDMyX3QgICAgICAgICAgICAgICAgbUZsYWdzOworICAgIGludCAgICAgICAgICAgICAgICAgICAgIG1TZXNzaW9uSWQ7CiB9OwogCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvRWZmZWN0QXBpLmggYi9pbmNsdWRlL21lZGlhL0VmZmVjdEFwaS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0ZDczOGMKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL21lZGlhL0VmZmVjdEFwaS5oCkBAIC0wLDAgKzEsNzg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2lmbmRlZiBBTkRST0lEX0VGRkVDVEFQSV9IXworI2RlZmluZSBBTkRST0lEX0VGRkVDVEFQSV9IXworCisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKworI2lmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyAgICAgIEVmZmVjdCBjb250cm9sIGludGVyZmFjZQorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCisvLyBUaGUgZWZmZWN0IGNvbnRyb2wgaW50ZXJmYWNlIGlzIGV4cG9zZWQgYnkgZWFjaCBlZmZlY3QgZW5naW5lIGltcGxlbWVudGF0aW9uLiBJdCBjb25zaXN0cyBvZgorLy8gYSBzZXQgb2YgZnVuY3Rpb25zIGNvbnRyb2xsaW5nIHRoZSBjb25maWd1cmF0aW9uLCBhY3RpdmF0aW9uIGFuZCBwcm9jZXNzIG9mIHRoZSBlbmdpbmUuCisvLyBUaGUgZnVuY3Rpb25zIGFyZSBncm91cGVkIGluIGEgc3RydWN0dXJlIG9mIHR5cGUgZWZmZWN0X2ludGVyZmFjZV9zOgorLy8gICAgc3RydWN0IGVmZmVjdF9pbnRlcmZhY2VfcyB7CisvLyAgICAgICAgZWZmZWN0X3Byb2Nlc3NfdCBwcm9jZXNzOworLy8gICAgICAgIGVmZmVjdF9jb21tYW5kX3QgY29tbWFuZDsKKy8vICAgIH07CisKKworLy8gZWZmZWN0X2ludGVyZmFjZV90OiBFZmZlY3QgY29udHJvbCBpbnRlcmZhY2UgaGFuZGxlLgorLy8gVGhlIGVmZmVjdF9pbnRlcmZhY2VfdCBzZXJ2ZXMgdHdvIHB1cnBvc2VzIHJlZ2FyZGluZyB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGVmZmVjdCBlbmdpbmU6CisvLyAtIDEgaXQgaXMgdGhlIGFkZHJlc3Mgb2YgYSBwb2ludGVyIHRvIGFuIGVmZmVjdF9pbnRlcmZhY2VfcyBzdHJ1Y3R1cmUgd2hlcmUgdGhlIGZ1bmN0aW9ucworLy8gb2YgdGhlIGVmZmVjdCBjb250cm9sIEFQSSBmb3IgYSBwYXJ0aWN1bGFyIGVmZmVjdCBhcmUgbG9jYXRlZC4KKy8vIC0gMiBpdCBpcyB0aGUgYWRkcmVzcyBvZiB0aGUgY29udGV4dCBvZiBhIHBhcnRpY3VsYXIgZWZmZWN0IGluc3RhbmNlLgorLy8gQSB0eXBpY2FsIGltcGxlbWVudGF0aW9uIGluIHRoZSBlZmZlY3QgbGlicmFyeSB3b3VsZCBkZWZpbmUgYSBzdHJ1Y3R1cmUgYXMgZm9sbG93czoKKy8vIHN0cnVjdCBlZmZlY3RfbW9kdWxlX3MgeworLy8gICAgICAgIGNvbnN0IHN0cnVjdCBlZmZlY3RfaW50ZXJmYWNlX3MgKml0ZmU7CisvLyAgICAgICAgZWZmZWN0X2NvbmZpZ190IGNvbmZpZzsKKy8vICAgICAgICBlZmZlY3RfY29udGV4dF90IGNvbnRleHQ7CisvLyB9CisvLyBUaGUgaW1wbGVtZW50YXRpb24gb2YgRWZmZWN0Q3JlYXRlKCkgZnVuY3Rpb24gd291bGQgdGhlbiBhbGxvY2F0ZSBhIHN0cnVjdHVyZSBvZiB0aGlzCisvLyB0eXBlIGFuZCByZXR1cm4gaXRzIGFkZHJlc3MgYXMgZWZmZWN0X2ludGVyZmFjZV90Cit0eXBlZGVmIHN0cnVjdCBlZmZlY3RfaW50ZXJmYWNlX3MgKiplZmZlY3RfaW50ZXJmYWNlX3Q7CisKKworLy8gRWZmZWN0IEFQSSB2ZXJzaW9uIDEuMAorI2RlZmluZSBFRkZFQ1RfQVBJX1ZFUlNJT04gMHgwMTAwIC8vIEZvcm1hdCAweE1NbW0gTU06IE1ham9yIHZlcnNpb24sIG1tOiBtaW5vciB2ZXJzaW9uCisKKy8vIE1heGltdW0gbGVuZ3RoIG9mIGNoYXJhY3RlciBzdHJpbmdzIGluIHN0cnVjdHVyZXMgZGVmaW5lcyBieSB0aGlzIEFQSS4KKyNkZWZpbmUgRUZGRUNUX1NUUklOR19MRU5fTUFYIDY0CisKKy8vCisvLy0tLSBFZmZlY3QgZGVzY3JpcHRvciBzdHJ1Y3R1cmUgZWZmZWN0X2Rlc2NyaXB0b3JfdAorLy8KKworLy8gVW5pcXVlIGVmZmVjdCBJRCAoY2FuIGJlIGdlbmVyYXRlZCBmcm9tIHRoZSBmb2xsb3dpbmcgc2l0ZToKKy8vICBodHRwOi8vd3d3Lml0dS5pbnQvSVRVLVQvYXNuMS91dWlkLmh0bWwpCisvLyBUaGlzIGZvcm1hdCBpcyB1c2VkIGZvciBib3RoICJ0eXBlIiBhbmQgInV1aWQiIGZpZWxkcyBvZiB0aGUgZWZmZWN0IGRlc2NyaXB0b3Igc3RydWN0dXJlLgorLy8gLSBXaGVuIHVzZWQgZm9yIGVmZmVjdCB0eXBlIGFuZCB0aGUgZW5naW5lIGlzIGltcGxlbWVudGluZyBhbmQgZWZmZWN0IGNvcnJlc3BvbmRpbmcgdG8gYSBzdGFuZGFyZAorLy8gT3BlblNMIEVTIGludGVyZmFjZSwgdGhpcyBJRCBtdXN0IGJlIHRoZSBvbmUgZGVmaW5lZCBpbiBPcGVuU0xFU19JSUQuaCBmb3IgdGhhdCBpbnRlcmZhY2UuCisvLyAtIFdoZW4gdXNlZCBhcyB1dWlkLCBpdCBzaG91bGQgYmUgYSB1bmlxdWUgVVVJRCBmb3IgdGhpcyBwYXJ0aWN1bGFyIGltcGxlbWVudGF0aW9uLgordHlwZWRlZiBzdHJ1Y3QgZWZmZWN0X3V1aWRfcyB7CisgICAgdWludDMyX3QgdGltZUxvdzsKKyAgICB1aW50MTZfdCB0aW1lTWlkOworICAgIHVpbnQxNl90IHRpbWVIaUFuZFZlcnNpb247CisgICAgdWludDE2X3QgY2xvY2tTZXE7CisgICAgdWludDhfdCBub2RlWzZdOworfSBlZmZlY3RfdXVpZF90OworCisvLyBOVUxMIFVVSUQgZGVmaW5pdGlvbiAobWF0Y2hlcyBTTF9JSURfTlVMTF8pCisjZGVmaW5lIEVGRkVDVF9VVUlEX0lOSVRJQUxJWkVSIHsgMHhlYzcxNzhlYywgMHhlNWUxLCAweDQ0MzIsIDB4YTNmNCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsgMHg0NiwgMHg1NywgMHhlNiwgMHg3OSwgMHg1MiwgMHgxMCB9IH0KK3N0YXRpYyBjb25zdCBlZmZlY3RfdXVpZF90IEVGRkVDVF9VVUlEX05VTExfID0gRUZGRUNUX1VVSURfSU5JVElBTElaRVI7Citjb25zdCBlZmZlY3RfdXVpZF90ICogY29uc3QgRUZGRUNUX1VVSURfTlVMTCA9ICZFRkZFQ1RfVVVJRF9OVUxMXzsKK2NvbnN0IGNoYXIgKiBjb25zdCBFRkZFQ1RfVVVJRF9OVUxMX1NUUiA9ICJlYzcxNzhlYy1lNWUxLTQ0MzItYTNmNC00NjU3ZTY3OTUyMTAiOworCisvLyBUaGUgZWZmZWN0IGRlc2NyaXB0b3IgY29udGFpbnMgbmVjZXNzYXJ5IGluZm9ybWF0aW9uIHRvIGZhY2lsaXRhdGUgdGhlIGVudW1lcmF0aW9uIG9mIHRoZSBlZmZlY3QKKy8vIGVuZ2luZXMgcHJlc2VudCBpbiBhIGxpYnJhcnkuCit0eXBlZGVmIHN0cnVjdCBlZmZlY3RfZGVzY3JpcHRvcl9zIHsKKyAgICBlZmZlY3RfdXVpZF90IHR5cGU7ICAgICAvLyBVVUlEIG9mIHRvIHRoZSBPcGVuU0wgRVMgaW50ZXJmYWNlIGltcGxlbWVudGVkIGJ5IHRoaXMgZWZmZWN0CisgICAgZWZmZWN0X3V1aWRfdCB1dWlkOyAgICAgLy8gVVVJRCBmb3IgdGhpcyBwYXJ0aWN1bGFyIGltcGxlbWVudGF0aW9uCisgICAgdWludDE2X3QgYXBpVmVyc2lvbjsgICAgLy8gVmVyc2lvbiBvZiB0aGUgZWZmZWN0IEFQSSBpbXBsZW1lbnRlZDogbWF0Y2hlcyBFRkZFQ1RfQVBJX1ZFUlNJT04KKyAgICB1aW50MzJfdCBmbGFnczsgICAgICAgICAvLyBlZmZlY3QgZW5naW5lIGNhcGFiaWxpdGllcy9yZXF1aXJlbWVudHMgZmxhZ3MgKHNlZSBiZWxvdykKKyAgICB1aW50MTZfdCBjcHVMb2FkOyAgICAgICAvLyBDUFUgbG9hZCBpbmRpY2F0aW9uIChzZWUgYmVsb3cpCisgICAgdWludDE2X3QgbWVtb3J5VXNhZ2U7ICAgLy8gRGF0YSBNZW1vcnkgdXNhZ2UgKHNlZSBiZWxvdykKKyAgICBjaGFyICAgIG5hbWVbRUZGRUNUX1NUUklOR19MRU5fTUFYXTsgICAvLyBodW1hbiByZWFkYWJsZSBlZmZlY3QgbmFtZQorICAgIGNoYXIgICAgaW1wbGVtZW50b3JbRUZGRUNUX1NUUklOR19MRU5fTUFYXTsgICAgLy8gaHVtYW4gcmVhZGFibGUgZWZmZWN0IGltcGxlbWVudG9yIG5hbWUKK30gZWZmZWN0X2Rlc2NyaXB0b3JfdDsKKworLy8gQ1BVIGxvYWQgYW5kIG1lbW9yeSB1c2FnZSBpbmRpY2F0aW9uOiBlYWNoIGVmZmVjdCBpbXBsZW1lbnRhdGlvbiBtdXN0IHByb3ZpZGUgYW4gaW5kaWNhdGlvbiBvZgorLy8gaXRzIENQVSBhbmQgbWVtb3J5IHVzYWdlIGZvciB0aGUgYXVkaW8gZWZmZWN0IGZyYW1ld29yayB0byBsaW1pdCB0aGUgbnVtYmVyIG9mIGVmZmVjdHMKKy8vIGluc3RhbnRpYXRlZCBhdCBhIGdpdmVuIHRpbWUgb24gYSBnaXZlbiBwbGF0Zm9ybS4KKy8vIFRoZSBDUFUgbG9hZCBpcyBleHByZXNzZWQgaW4gMC4xIE1JUFMgdW5pdHMgYXMgZXN0aW1hdGVkIG9uIGFuIEFSTTlFIGNvcmUgKEFSTXY1VEUpIHdpdGggMCBXUy4KKy8vIFRoZSBtZW1vcnkgdXNhZ2UgaXMgZXhwcmVzc2VkIGluIEtCIGFuZCBpbmNsdWRlcyBvbmx5IGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBtZW1vcnkKKworLy8gRGVmaW5pdGlvbnMgZm9yIGZsYWdzIGZpZWxkIG9mIGVmZmVjdCBkZXNjcmlwdG9yLgorLy8gICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICB8IGRlc2NyaXB0aW9uICAgICAgICAgICAgICAgfCBiaXRzICAgICAgfCB2YWx1ZXMKKy8vICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgfCBjb25uZWN0aW9uIG1vZGUgICAgICAgICAgIHwgMC4uMSAgICAgIHwgMCBpbnNlcnQ6IGFmdGVyIHRyYWNrIHByb2Nlc3MKKy8vICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgfCAxIGF1eGlsaWFyeTogY29ubmVjdCB0byB0cmFjayBhdXhpbGlhcnkKKy8vICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgfCAgb3V0cHV0IGFuZCB1c2Ugc2VuZCBsZXZlbAorLy8gIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8IDIgcmVwbGFjZTogcmVwbGFjZXMgdHJhY2sgcHJvY2VzcyBmdW5jdGlvbjsKKy8vICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgfCAgIG11c3QgaW1wbGVtZW50IFNSQywgdm9sdW1lIGFuZCBtb25vIHRvIHN0ZXJlby4KKy8vICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgfCAzIHJlc2VydmVkCisvLyAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gIHwgaW5zZXJ0aW9uIHByZWZlcmVuY2UgICAgICB8IDIuLjQgICAgICB8IDAgbm9uZQorLy8gIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8IDEgZmlyc3Qgb2YgdGhlIGNoYWluCisvLyAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgMiBsYXN0IG9mIHRoZSBjaGFpbgorLy8gIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8IDMgZXhjbHVzaXZlIChvbmx5IGVmZmVjdCBpbiB0aGUgaW5zZXJ0IGNoYWluKQorLy8gIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8IDQuLjcgcmVzZXJ2ZWQKKy8vICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgfCBWb2x1bWUgbWFuYWdlbWVudCAgICAgICAgIHwgNS4uNiAgICAgIHwgMCBub25lCisvLyAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgMSBpbXBsZW1lbnRzIHZvbHVtZSBjb250cm9sCisvLyAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgMiByZXF1aXJlcyB2b2x1bWUgaW5kaWNhdGlvbgorLy8gIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8IDMgcmVzZXJ2ZWQKKy8vICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgfCBEZXZpY2UgaW5kaWNhdGlvbiAgICAgICAgIHwgNy4uOCAgICAgIHwgMCBub25lCisvLyAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgMSByZXF1aXJlcyBkZXZpY2UgdXBkYXRlcworLy8gIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8IDIuLjMgcmVzZXJ2ZWQKKy8vICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgfCBTYW1wbGUgaW5wdXQgbW9kZSAgICAgICAgIHwgOS4uMTAgICAgIHwgMCBkaXJlY3Q6IHByb2Nlc3MoKSBmdW5jdGlvbiBvciBFRkZFQ1RfQ01EX0NPTkZJR1VSRQorLy8gIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8ICAgY29tbWFuZCBtdXN0IHNwZWNpZnkgYSBidWZmZXIgZGVzY3JpcHRvcgorLy8gIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8IDEgcHJvdmlkZXI6IHByb2Nlc3MoKSBmdW5jdGlvbiB1c2VzIHRoZQorLy8gIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8ICAgYnVmZmVyUHJvdmlkZXIgaW5kaWNhdGVkIGJ5IHRoZQorLy8gIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8ICAgRUZGRUNUX0NNRF9DT05GSUdVUkUgY29tbWFuZCB0byByZXF1ZXN0IGlucHV0LgorLy8gIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8ICAgYnVmZmVycy4KKy8vICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgfCAyIGJvdGg6IGJvdGggaW5wdXQgbW9kZXMgYXJlIHN1cHBvcnRlZAorLy8gIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8IDMgcmVzZXJ2ZWQKKy8vICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgfCBTYW1wbGUgb3V0cHV0IG1vZGUgICAgICAgIHwgMTEuLjEyICAgIHwgMCBkaXJlY3Q6IHByb2Nlc3MoKSBmdW5jdGlvbiBvciBFRkZFQ1RfQ01EX0NPTkZJR1VSRQorLy8gIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8ICAgY29tbWFuZCBtdXN0IHNwZWNpZnkgYSBidWZmZXIgZGVzY3JpcHRvcgorLy8gIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8IDEgcHJvdmlkZXI6IHByb2Nlc3MoKSBmdW5jdGlvbiB1c2VzIHRoZQorLy8gIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8ICAgYnVmZmVyUHJvdmlkZXIgaW5kaWNhdGVkIGJ5IHRoZQorLy8gIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8ICAgRUZGRUNUX0NNRF9DT05GSUdVUkUgY29tbWFuZCB0byByZXF1ZXN0IG91dHB1dAorLy8gIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8ICAgYnVmZmVycy4KKy8vICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgfCAyIGJvdGg6IGJvdGggb3V0cHV0IG1vZGVzIGFyZSBzdXBwb3J0ZWQKKy8vICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgfCAzIHJlc2VydmVkCisvLyAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gIHwgSGFyZHdhcmUgYWNjZWxlcmF0aW9uICAgICB8IDEzLi4xNSAgICB8IDAgTm8gaGFyZHdhcmUgYWNjZWxlcmF0aW9uCisvLyAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgMSBub24gdHVubmVsZWQgaHcgYWNjZWxlcmF0aW9uOiB0aGUgcHJvY2VzcygpIGZ1bmN0aW9uCisvLyAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgICByZWFkcyB0aGUgc2FtcGxlcywgc2VuZCB0aGVtIHRvIEhXIGFjY2VsZXJhdGVkCisvLyAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgIHwgICBlZmZlY3QgcHJvY2Vzc29yLCByZWFkcyBiYWNrIHRoZSBwcm9jZXNzZWQgc2FtcGxlcworLy8gIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8ICAgYW5kIHJldHVybnMgdGhlbSB0byB0aGUgb3V0cHV0IGJ1ZmZlci4KKy8vICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgfCAyIHR1bm5lbGVkIGh3IGFjY2VsZXJhdGlvbjogdGhlIHByb2Nlc3MoKSBmdW5jdGlvbiBpcworLy8gIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8ICAgdHJhbnNwYXJlbnQuIFRoZSBlZmZlY3QgaW50ZXJmYWNlIGlzIG9ubHkgdXNlZCB0bworLy8gIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8ICAgY29udHJvbCB0aGUgZWZmZWN0IGVuZ2luZS4gVGhpcyBtb2RlIGlzIHJlbGV2YW50IGZvcgorLy8gIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8ICAgZ2xvYmFsIGVmZmVjdHMgYWN0dWFsbHkgYXBwbGllZCBieSB0aGUgYXVkaW8KKy8vICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgfCAgIGhhcmR3YXJlIG9uIHRoZSBvdXRwdXQgc3RyZWFtLgorLy8gICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICB8IEF1ZGlvIE1vZGUgaW5kaWNhdGlvbiAgICAgfCAxNi4uMTcgICAgfCAwIG5vbmUKKy8vICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgfCAxIHJlcXVpcmVzIGF1ZGlvIG1vZGUgdXBkYXRlcworLy8gIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICB8IDIuLjMgcmVzZXJ2ZWQKKy8vICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIEluc2VydCBtb2RlCisjZGVmaW5lIEVGRkVDVF9GTEFHX1RZUEVfTUFTSyAgICAgICAgICAgMHgwMDAwMDAwMworI2RlZmluZSBFRkZFQ1RfRkxBR19UWVBFX0lOU0VSVCAgICAgICAgIDB4MDAwMDAwMDAKKyNkZWZpbmUgRUZGRUNUX0ZMQUdfVFlQRV9BVVhJTElBUlkgICAgICAweDAwMDAwMDAxCisjZGVmaW5lIEVGRkVDVF9GTEFHX1RZUEVfUkVQTEFDRSAgICAgICAgMHgwMDAwMDAwMgorCisvLyBJbnNlcnQgcHJlZmVyZW5jZQorI2RlZmluZSBFRkZFQ1RfRkxBR19JTlNFUlRfTUFTSyAgICAgICAgIDB4MDAwMDAwMUMKKyNkZWZpbmUgRUZGRUNUX0ZMQUdfSU5TRVJUX0FOWSAgICAgICAgICAweDAwMDAwMDAwCisjZGVmaW5lIEVGRkVDVF9GTEFHX0lOU0VSVF9GSVJTVCAgICAgICAgMHgwMDAwMDAwNAorI2RlZmluZSBFRkZFQ1RfRkxBR19JTlNFUlRfTEFTVCAgICAgICAgIDB4MDAwMDAwMDgKKyNkZWZpbmUgRUZGRUNUX0ZMQUdfSU5TRVJUX0VYQ0xVU0lWRSAgICAweDAwMDAwMDBDCisKKworLy8gVm9sdW1lIGNvbnRyb2wKKyNkZWZpbmUgRUZGRUNUX0ZMQUdfVk9MVU1FX01BU0sgICAgICAgICAweDAwMDAwMDYwCisjZGVmaW5lIEVGRkVDVF9GTEFHX1ZPTFVNRV9DVFJMICAgICAgICAgMHgwMDAwMDAyMAorI2RlZmluZSBFRkZFQ1RfRkxBR19WT0xVTUVfSU5EICAgICAgICAgIDB4MDAwMDAwNDAKKyNkZWZpbmUgRUZGRUNUX0ZMQUdfVk9MVU1FX05PTkUgICAgICAgICAweDAwMDAwMDAwCisKKy8vIERldmljZSBpbmRpY2F0aW9uCisjZGVmaW5lIEVGRkVDVF9GTEFHX0RFVklDRV9NQVNLICAgICAgICAgMHgwMDAwMDE4MAorI2RlZmluZSBFRkZFQ1RfRkxBR19ERVZJQ0VfSU5EICAgICAgICAgIDB4MDAwMDAwODAKKyNkZWZpbmUgRUZGRUNUX0ZMQUdfREVWSUNFX05PTkUgICAgICAgICAweDAwMDAwMDAwCisKKy8vIFNhbXBsZSBpbnB1dCBtb2RlcworI2RlZmluZSBFRkZFQ1RfRkxBR19JTlBVVF9NQVNLICAgICAgICAgIDB4MDAwMDA2MDAKKyNkZWZpbmUgRUZGRUNUX0ZMQUdfSU5QVVRfRElSRUNUICAgICAgICAweDAwMDAwMDAwCisjZGVmaW5lIEVGRkVDVF9GTEFHX0lOUFVUX1BST1ZJREVSICAgICAgMHgwMDAwMDIwMAorI2RlZmluZSBFRkZFQ1RfRkxBR19JTlBVVF9CT1RIICAgICAgICAgIDB4MDAwMDA0MDAKKworLy8gU2FtcGxlIG91dHB1dCBtb2RlcworI2RlZmluZSBFRkZFQ1RfRkxBR19PVVRQVVRfTUFTSyAgICAgICAgICAweDAwMDAxODAwCisjZGVmaW5lIEVGRkVDVF9GTEFHX09VVFBVVF9ESVJFQ1QgICAgICAgIDB4MDAwMDAwMDAKKyNkZWZpbmUgRUZGRUNUX0ZMQUdfT1VUUFVUX1BST1ZJREVSICAgICAgMHgwMDAwMDgwMAorI2RlZmluZSBFRkZFQ1RfRkxBR19PVVRQVVRfQk9USCAgICAgICAgICAweDAwMDAxMDAwCisKKy8vIEhhcmR3YXJlIGFjY2VsZXJhdGlvbiBtb2RlCisjZGVmaW5lIEVGRkVDVF9GTEFHX0hXX0FDQ19NQVNLICAgICAgICAgIDB4MDAwMDYwMDAKKyNkZWZpbmUgRUZGRUNUX0ZMQUdfSFdfQUNDX1NJTVBMRSAgICAgICAgMHgwMDAwMjAwMAorI2RlZmluZSBFRkZFQ1RfRkxBR19IV19BQ0NfVFVOTkVMICAgICAgICAweDAwMDA0MDAwCisKKy8vIEF1ZGlvIG1vZGUgaW5kaWNhdGlvbgorI2RlZmluZSBFRkZFQ1RfRkxBR19BVURJT19NT0RFX01BU0sgICAgICAweDAwMDE4MDAwCisjZGVmaW5lIEVGRkVDVF9GTEFHX0FVRElPX01PREVfSU5EICAgICAgIDB4MDAwMDgwMDAKKyNkZWZpbmUgRUZGRUNUX0ZMQUdfQVVESU9fTU9ERV9OT05FICAgICAgMHgwMDAwMDAwMAorCisvLyBGb3J3YXJkIGRlZmluaXRpb24gb2YgdHlwZSBhdWRpb19idWZmZXJfdAordHlwZWRlZiBzdHJ1Y3QgYXVkaW9fYnVmZmVyX3MgYXVkaW9fYnVmZmVyX3Q7CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gICAgRnVuY3Rpb246ICAgICAgIHByb2Nlc3MKKy8vCisvLyAgICBEZXNjcmlwdGlvbjogICAgRWZmZWN0IHByb2Nlc3MgZnVuY3Rpb24uIFRha2VzIGlucHV0IHNhbXBsZXMgYXMgc3BlY2lmaWVkCisvLyAgICAgICAgICAoY291bnQgYW5kIGxvY2F0aW9uKSBpbiBpbnB1dCBidWZmZXIgZGVzY3JpcHRvciBhbmQgb3V0cHV0IHByb2Nlc3NlZAorLy8gICAgICAgICAgc2FtcGxlcyBhcyBzcGVjaWZpZWQgaW4gb3V0cHV0IGJ1ZmZlciBkZXNjcmlwdG9yLiBJZiB0aGUgYnVmZmVyIGRlc2NyaXB0b3IKKy8vICAgICAgICAgIGlzIG5vdCBzcGVjaWZpZWQgdGhlIGZ1bmN0aW9uIG11c3QgdXNlIGVpdGhlciB0aGUgYnVmZmVyIG9yIHRoZQorLy8gICAgICAgICAgYnVmZmVyIHByb3ZpZGVyIGZ1bmN0aW9uIGluc3RhbGxlZCBieSB0aGUgRUZGRUNUX0NNRF9DT05GSUdVUkUgY29tbWFuZC4KKy8vCisvLyAgICBOT1RFOiB0aGUgcHJvY2VzcygpIGZ1bmN0aW9uIGltcGxlbWVudGF0aW9uIHNob3VsZCBiZSAicmVhbC10aW1lIHNhZmUiIHRoYXQgaXMKKy8vICAgICAgaXQgc2hvdWxkIG5vdCBwZXJmb3JtIGJsb2NraW5nIGNhbGxzOiBtYWxsb2MvZnJlZSwgc2xlZXAsIHJlYWQvd3JpdGUvb3Blbi9jbG9zZSwKKy8vICAgICAgcHRocmVhZF9jb25kX3dhaXQvcHRocmVhZF9tdXRleF9sb2NrLi4uCisvLworLy8gICAgSW5wdXQ6CisvLyAgICAgICAgICBlZmZlY3RfaW50ZXJmYWNlX3Q6IGhhbmRsZSB0byB0aGUgZWZmZWN0IGludGVyZmFjZSB0aGlzIGZ1bmN0aW9uCisvLyAgICAgICAgICAgICAgaXMgY2FsbGVkIG9uLgorLy8gICAgICAgICAgaW5CdWZmZXI6ICAgYnVmZmVyIGRlc2NyaXB0b3IgaW5kaWNhdGluZyB3aGVyZSB0byByZWFkIHNhbXBsZXMgdG8gcHJvY2Vzcy4KKy8vICAgICAgICAgICAgICBJZiBOVUxMLCB1c2UgdGhlIGNvbmZpZ3VyYXRpb24gcGFzc2VkIGJ5IEVGRkVDVF9DTURfQ09ORklHVVJFIGNvbW1hbmQuCisvLworLy8gICAgICAgICAgaW5CdWZmZXI6ICAgYnVmZmVyIGRlc2NyaXB0b3IgaW5kaWNhdGluZyB3aGVyZSB0byB3cml0ZSBwcm9jZXNzZWQgc2FtcGxlcy4KKy8vICAgICAgICAgICAgICBJZiBOVUxMLCB1c2UgdGhlIGNvbmZpZ3VyYXRpb24gcGFzc2VkIGJ5IEVGRkVDVF9DTURfQ09ORklHVVJFIGNvbW1hbmQuCisvLworLy8gICAgT3V0cHV0OgorLy8gICAgICAgIHJldHVybmVkIHZhbHVlOiAgICAwIHN1Y2Nlc3NmdWwgb3BlcmF0aW9uCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgLUVJTlZBTCBpbnZhbGlkIGludGVyZmFjZSBoYW5kbGUgb3IKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludmFsaWQgaW5wdXQvb3V0cHV0IGJ1ZmZlciBkZXNjcmlwdGlvbgorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK3R5cGVkZWYgaW50MzJfdCAoKmVmZmVjdF9wcm9jZXNzX3QpKGVmZmVjdF9pbnRlcmZhY2VfdCBzZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9fYnVmZmVyX3QgKmluQnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9fYnVmZmVyX3QgKm91dEJ1ZmZlcik7CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gICAgRnVuY3Rpb246ICAgICAgIGNvbW1hbmQKKy8vCisvLyAgICBEZXNjcmlwdGlvbjogICAgU2VuZCBhIGNvbW1hbmQgYW5kIHJlY2VpdmUgYSByZXNwb25zZSB0by9mcm9tIGVmZmVjdCBlbmdpbmUuCisvLworLy8gICAgSW5wdXQ6CisvLyAgICAgICAgICBlZmZlY3RfaW50ZXJmYWNlX3Q6IGhhbmRsZSB0byB0aGUgZWZmZWN0IGludGVyZmFjZSB0aGlzIGZ1bmN0aW9uCisvLyAgICAgICAgICAgICAgaXMgY2FsbGVkIG9uLgorLy8gICAgICAgICAgY21kQ29kZTogICAgY29tbWFuZCBjb2RlOiB0aGUgY29tbWFuZCBjYW4gYmUgYSBzdGFuZGFyZGl6ZWQgY29tbWFuZCBkZWZpbmVkIGluCisvLyAgICAgICAgICAgICAgZWZmZWN0X2NvbW1hbmRfZSAoc2VlIGJlbG93KSBvciBhIHByb3ByaWV0YXJ5IGNvbW1hbmQuCisvLyAgICAgICAgICBjbWRTaXplOiAgICBzaXplIG9mIGNvbW1hbmQgaW4gYnl0ZXMKKy8vICAgICAgICAgIHBDbWREYXRhOiAgIHBvaW50ZXIgdG8gY29tbWFuZCBkYXRhCisvLyAgICAgICAgICBwUmVwbHlEYXRhOiBwb2ludGVyIHRvIHJlcGx5IGRhdGEKKy8vCisvLyAgICBJbnB1dC9PdXRwdXQ6CisvLyAgICAgICAgICByZXBseVNpemU6IG1heGltdW0gc2l6ZSBvZiByZXBseSBkYXRhIGFzIGlucHV0CisvLyAgICAgICAgICAgICAgICAgICAgICBhY3R1YWwgc2l6ZSBvZiByZXBseSBkYXRhIGFzIG91dHB1dAorLy8KKy8vICAgIE91dHB1dDoKKy8vICAgICAgICAgIHJldHVybmVkIHZhbHVlOiAwICAgICAgIHN1Y2Nlc3NmdWwgb3BlcmF0aW9uCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgLUVJTlZBTCBpbnZhbGlkIGludGVyZmFjZSBoYW5kbGUgb3IKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludmFsaWQgY29tbWFuZC9yZXBseSBzaXplIG9yIGZvcm1hdCBhY2NvcmRpbmcgdG8gY29tbWFuZCBjb2RlCisvLyAgICAgICAgICAgICAgVGhlIHJldHVybiBjb2RlIHNob3VsZCBiZSByZXN0cmljdGVkIHRvIGluZGljYXRlIHByb2JsZW1zIHJlbGF0ZWQgdG8gdGhlIHRoaXMKKy8vICAgICAgICAgICAgICBBUEkgc3BlY2lmaWNhdGlvbi4gU3RhdHVzIHJlbGF0ZWQgdG8gdGhlIGV4ZWN1dGlvbiBvZiBhIHBhcnRpY3VsYXIgY29tbWFuZCBzaG91bGQgYmUKKy8vICAgICAgICAgICAgICBpbmRpY2F0ZWQgYXMgcGFydCBvZiB0aGUgcmVwbHkgZmllbGQuCisvLworLy8gICAgICAgICAgKnBSZXBseURhdGEgdXBkYXRlZCB3aXRoIGNvbW1hbmQgcmVzcG9uc2UKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwordHlwZWRlZiBpbnQzMl90ICgqZWZmZWN0X2NvbW1hbmRfdCkoZWZmZWN0X2ludGVyZmFjZV90IHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGNtZENvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGNtZFNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpwQ21kRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgKnJlcGx5U2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnBSZXBseURhdGEpOworCisKKy8vIEVmZmVjdCBjb250cm9sIGludGVyZmFjZSBkZWZpbml0aW9uCitzdHJ1Y3QgZWZmZWN0X2ludGVyZmFjZV9zIHsKKyAgICBlZmZlY3RfcHJvY2Vzc190IHByb2Nlc3M7CisgICAgZWZmZWN0X2NvbW1hbmRfdCBjb21tYW5kOworfTsKKworCisvLworLy8tLS0gU3RhbmRhcmRpemVkIGNvbW1hbmQgY29kZXMgZm9yIGNvbW1hbmQoKSBmdW5jdGlvbgorLy8KK2VudW0gZWZmZWN0X2NvbW1hbmRfZSB7CisgICBFRkZFQ1RfQ01EX0lOSVQsICAgICAgICAgICAgICAgICAvLyBpbml0aWFsaXplIGVmZmVjdCBlbmdpbmUKKyAgIEVGRkVDVF9DTURfQ09ORklHVVJFLCAgICAgICAgICAgIC8vIGNvbmZpZ3VyZSBlZmZlY3QgZW5naW5lIChzZWUgZWZmZWN0X2NvbmZpZ190KQorICAgRUZGRUNUX0NNRF9SRVNFVCwgICAgICAgICAgICAgICAgLy8gcmVzZXQgZWZmZWN0IGVuZ2luZQorICAgRUZGRUNUX0NNRF9FTkFCTEUsICAgICAgICAgICAgICAgLy8gZW5hYmxlIGVmZmVjdCBwcm9jZXNzCisgICBFRkZFQ1RfQ01EX0RJU0FCTEUsICAgICAgICAgICAgICAvLyBkaXNhYmxlIGVmZmVjdCBwcm9jZXNzCisgICBFRkZFQ1RfQ01EX1NFVF9QQVJBTSwgICAgICAgICAgICAvLyBzZXQgcGFyYW1ldGVyIGltbWVkaWF0ZWx5IChzZWUgZWZmZWN0X3BhcmFtX3QpCisgICBFRkZFQ1RfQ01EX1NFVF9QQVJBTV9ERUZFUlJFRCwgICAvLyBzZXQgcGFyYW1ldGVyIGRlZmVycmVkCisgICBFRkZFQ1RfQ01EX1NFVF9QQVJBTV9DT01NSVQsICAgICAvLyBjb21taXQgcHJldmlvdXMgc2V0IHBhcmFtZXRlciBkZWZlcnJlZAorICAgRUZGRUNUX0NNRF9HRVRfUEFSQU0sICAgICAgICAgICAgLy8gZ2V0IHBhcmFtZXRlcgorICAgRUZGRUNUX0NNRF9TRVRfREVWSUNFLCAgICAgICAgICAgLy8gc2V0IGF1ZGlvIGRldmljZSAoc2VlIGF1ZGlvX2RldmljZV9lKQorICAgRUZGRUNUX0NNRF9TRVRfVk9MVU1FLCAgICAgICAgICAgLy8gc2V0IHZvbHVtZQorICAgRUZGRUNUX0NNRF9TRVRfQVVESU9fTU9ERSwgICAgICAgLy8gc2V0IHRoZSBhdWRpbyBtb2RlIChub3JtYWwsIHJpbmcsIC4uLikKKyAgIEVGRkVDVF9DTURfRklSU1RfUFJPUFJJRVRBUlkgPSAweDEwMDAwIC8vIGZpcnN0IHByb3ByaWV0YXJ5IGNvbW1hbmQgY29kZQorfTsKKworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gY29tbWFuZDogRUZGRUNUX0NNRF9JTklUCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBkZXNjcmlwdGlvbjoKKy8vICBJbml0aWFsaXplIGVmZmVjdCBlbmdpbmU6IEFsbCBjb25maWd1cmF0aW9ucyByZXR1cm4gdG8gZGVmYXVsdAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gY29tbWFuZCBmb3JtYXQ6CisvLyAgc2l6ZTogMAorLy8gIGRhdGE6IE4vQQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gcmVwbHkgZm9ybWF0OgorLy8gIHNpemU6IHNpemVvZihpbnQpCisvLyAgZGF0YTogc3RhdHVzCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBjb21tYW5kOiBFRkZFQ1RfQ01EX0NPTkZJR1VSRQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gZGVzY3JpcHRpb246CisvLyAgQXBwbHkgbmV3IGF1ZGlvIHBhcmFtZXRlcnMgY29uZmlndXJhdGlvbnMgZm9yIGlucHV0IGFuZCBvdXRwdXQgYnVmZmVycworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gY29tbWFuZCBmb3JtYXQ6CisvLyAgc2l6ZTogc2l6ZW9mKGVmZmVjdF9jb25maWdfdCkKKy8vICBkYXRhOiBlZmZlY3RfY29uZmlnX3QKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIHJlcGx5IGZvcm1hdDoKKy8vICBzaXplOiBzaXplb2YoaW50KQorLy8gIGRhdGE6IHN0YXR1cworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gY29tbWFuZDogRUZGRUNUX0NNRF9SRVNFVAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gZGVzY3JpcHRpb246CisvLyAgUmVzZXQgdGhlIGVmZmVjdCBlbmdpbmUuIEtlZXAgY29uZmlndXJhdGlvbiBidXQgcmVzZXRzIHN0YXRlIGFuZCBidWZmZXIgY29udGVudAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gY29tbWFuZCBmb3JtYXQ6CisvLyAgc2l6ZTogMAorLy8gIGRhdGE6IE4vQQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gcmVwbHkgZm9ybWF0OgorLy8gIHNpemU6IDAKKy8vICBkYXRhOiBOL0EKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIGNvbW1hbmQ6IEVGRkVDVF9DTURfRU5BQkxFCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBkZXNjcmlwdGlvbjoKKy8vICBFbmFibGUgdGhlIHByb2Nlc3MuIENhbGxlZCBieSB0aGUgZnJhbWV3b3JrIGJlZm9yZSB0aGUgZmlyc3QgY2FsbCB0byBwcm9jZXNzKCkKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIGNvbW1hbmQgZm9ybWF0OgorLy8gIHNpemU6IDAKKy8vICBkYXRhOiBOL0EKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIHJlcGx5IGZvcm1hdDoKKy8vICBzaXplOiBzaXplb2YoaW50KQorLy8gIGRhdGE6IHN0YXR1cworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gY29tbWFuZDogRUZGRUNUX0NNRF9ESVNBQkxFCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBkZXNjcmlwdGlvbjoKKy8vICBEaXNhYmxlIHRoZSBwcm9jZXNzLiBDYWxsZWQgYnkgdGhlIGZyYW1ld29yayBhZnRlciB0aGUgbGFzdCBjYWxsIHRvIHByb2Nlc3MoKQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gY29tbWFuZCBmb3JtYXQ6CisvLyAgc2l6ZTogMAorLy8gIGRhdGE6IE4vQQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gcmVwbHkgZm9ybWF0OgorLy8gIHNpemU6IHNpemVvZihpbnQpCisvLyAgZGF0YTogc3RhdHVzCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBjb21tYW5kOiBFRkZFQ1RfQ01EX1NFVF9QQVJBTQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gZGVzY3JpcHRpb246CisvLyAgU2V0IGEgcGFyYW1ldGVyIGFuZCBhcHBseSBpdCBpbW1lZGlhdGVseQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gY29tbWFuZCBmb3JtYXQ6CisvLyAgc2l6ZTogc2l6ZW9mKGVmZmVjdF9wYXJhbV90KSArIHNpemUgb2YgcGFyYW0gYW5kIHZhbHVlCisvLyAgZGF0YTogZWZmZWN0X3BhcmFtX3QgKyBwYXJhbSArIHZhbHVlLiBTZWUgZWZmZWN0X3BhcmFtX3QgZGVmaW5pdGlvbiBiZWxvdyBmb3IgdmFsdWUgb2Zmc2V0CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyByZXBseSBmb3JtYXQ6CisvLyAgc2l6ZTogc2l6ZW9mKGludCkKKy8vICBkYXRhOiBzdGF0dXMKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIGNvbW1hbmQ6IEVGRkVDVF9DTURfU0VUX1BBUkFNX0RFRkVSUkVECisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBkZXNjcmlwdGlvbjoKKy8vICBTZXQgYSBwYXJhbWV0ZXIgYnV0IGFwcGx5IGl0IG9ubHkgd2hlbiByZWNlaXZpbmcgRUZGRUNUX0NNRF9TRVRfUEFSQU1fQ09NTUlUIGNvbW1hbmQKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIGNvbW1hbmQgZm9ybWF0OgorLy8gIHNpemU6IHNpemVvZihlZmZlY3RfcGFyYW1fdCkgKyBzaXplIG9mIHBhcmFtIGFuZCB2YWx1ZQorLy8gIGRhdGE6IGVmZmVjdF9wYXJhbV90ICsgcGFyYW0gKyB2YWx1ZS4gU2VlIGVmZmVjdF9wYXJhbV90IGRlZmluaXRpb24gYmVsb3cgZm9yIHZhbHVlIG9mZnNldAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gcmVwbHkgZm9ybWF0OgorLy8gIHNpemU6IDAKKy8vICBkYXRhOiBOL0EKKy8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy8vIGNvbW1hbmQ6IEVGRkVDVF9DTURfU0VUX1BBUkFNX0NPTU1JVAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gZGVzY3JpcHRpb246CisvLyAgQXBwbHkgYWxsIHByZXZpb3VzbHkgcmVjZWl2ZWQgRUZGRUNUX0NNRF9TRVRfUEFSQU1fREVGRVJSRUQgY29tbWFuZHMKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIGNvbW1hbmQgZm9ybWF0OgorLy8gIHNpemU6IDAKKy8vICBkYXRhOiBOL0EKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIHJlcGx5IGZvcm1hdDoKKy8vICBzaXplOiBzaXplb2YoaW50KQorLy8gIGRhdGE6IHN0YXR1cworLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLy8gY29tbWFuZDogRUZGRUNUX0NNRF9HRVRfUEFSQU0KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIGRlc2NyaXB0aW9uOgorLy8gIEdldCBhIHBhcmFtZXRlciB2YWx1ZQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gY29tbWFuZCBmb3JtYXQ6CisvLyAgc2l6ZTogc2l6ZW9mKGVmZmVjdF9wYXJhbV90KSArIHNpemUgb2YgcGFyYW0KKy8vICBkYXRhOiBlZmZlY3RfcGFyYW1fdCArIHBhcmFtCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyByZXBseSBmb3JtYXQ6CisvLyAgc2l6ZTogc2l6ZW9mKGVmZmVjdF9wYXJhbV90KSArIHNpemUgb2YgcGFyYW0gYW5kIHZhbHVlCisvLyAgZGF0YTogZWZmZWN0X3BhcmFtX3QgKyBwYXJhbSArIHZhbHVlLiBTZWUgZWZmZWN0X3BhcmFtX3QgZGVmaW5pdGlvbiBiZWxvdyBmb3IgdmFsdWUgb2Zmc2V0CisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBjb21tYW5kOiBFRkZFQ1RfQ01EX1NFVF9ERVZJQ0UKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIGRlc2NyaXB0aW9uOgorLy8gIFNldCB0aGUgcmVuZGVyaW5nIGRldmljZSB0aGUgYXVkaW8gb3V0cHV0IHBhdGggaXMgY29ubmVjdGVkIHRvLiBTZWUgYXVkaW9fZGV2aWNlX2UgZm9yIGRldmljZQorLy8gIHZhbHVlcy4KKy8vICBUaGUgZWZmZWN0IGltcGxlbWVudGF0aW9uIG11c3Qgc2V0IEVGRkVDVF9GTEFHX0RFVklDRV9JTkQgZmxhZyBpbiBpdHMgZGVzY3JpcHRvciB0byByZWNlaXZlIHRoaXMKKy8vICBjb21tYW5kIHdoZW4gdGhlIGRldmljZSBjaGFuZ2VzCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBjb21tYW5kIGZvcm1hdDoKKy8vICBzaXplOiBzaXplb2YodWludDMyX3QpCisvLyAgZGF0YTogYXVkaW9fZGV2aWNlX2UKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIHJlcGx5IGZvcm1hdDoKKy8vICBzaXplOiAwCisvLyAgZGF0YTogTi9BCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBjb21tYW5kOiBFRkZFQ1RfQ01EX1NFVF9WT0xVTUUKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIGRlc2NyaXB0aW9uOgorLy8gIFNldCBhbmQgZ2V0IHZvbHVtZS4gVXNlZCBieSBhdWRpbyBmcmFtZXdvcmsgdG8gZGVsZWdhdGUgdm9sdW1lIGNvbnRyb2wgdG8gZWZmZWN0IGVuZ2luZS4KKy8vICBUaGUgZWZmZWN0IGltcGxlbWVudGF0aW9uIG11c3Qgc2V0IEVGRkVDVF9GTEFHX1ZPTFVNRV9JTkQgYW5kL29yIEVGRkVDVF9GTEFHX1ZPTFVNRV9DVFJMIGZsYWcgaW4KKy8vICBpdHMgZGVzY3JpcHRvciB0byByZWNlaXZlIHRoaXMgY29tbWFuZCBiZWZvcmUgZXZlcnkgY2FsbCB0byBwcm9jZXNzKCkgZnVuY3Rpb24KKy8vICBJZiBFRkZFQ1RfRkxBR19WT0xVTUVfQ1RSTCBmbGFnIGlzIHNldCBpbiB0aGUgZWZmZWN0IGRlc2NyaXB0b3IsIHRoZSBlZmZlY3QgZW5naW5lIG11c3QgcmV0dXJuCisvLyAgdGhlIHZvbHVtZSB0aGF0IHNob3VsZCBiZSBhcHBsaWVkIGJlZm9yZSB0aGUgZWZmZWN0IGlzIHByb2Nlc3NlZC4gVGhlIG92ZXJhbGwgdm9sdW1lICh0aGUgdm9sdW1lCisvLyAgYWN0dWFsbHkgYXBwbGllZCBieSB0aGUgZWZmZWN0IGVuZ2luZSBtdWx0aXBsaWVkIGJ5IHRoZSByZXR1cm5lZCB2YWx1ZSkgc2hvdWxkIG1hdGNoIHRoZSB2YWx1ZQorLy8gIGluZGljYXRlZCBpbiB0aGUgY29tbWFuZC4KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIGNvbW1hbmQgZm9ybWF0OgorLy8gIHNpemU6IG4gKiBzaXplb2YodWludDMyX3QpCisvLyAgZGF0YTogdm9sdW1lIGZvciBlYWNoIGNoYW5uZWwgZGVmaW5lZCBpbiBlZmZlY3RfY29uZmlnX3QgZm9yIG91dHB1dCBidWZmZXIgZXhwcmVzc2VkIGluCisvLyAgICAgIDguMjQgZml4ZWQgcG9pbnQgZm9ybWF0CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyByZXBseSBmb3JtYXQ6CisvLyAgc2l6ZTogbiAqIHNpemVvZih1aW50MzJfdCkgLyAwCisvLyAgZGF0YTogLSBpZiBFRkZFQ1RfRkxBR19WT0xVTUVfQ1RSTCBpcyBzZXQgaW4gZWZmZWN0IGRlc2NyaXB0b3I6CisvLyAgICAgICAgICAgICAgdm9sdW1lIGZvciBlYWNoIGNoYW5uZWwgZGVmaW5lZCBpbiBlZmZlY3RfY29uZmlnX3QgZm9yIG91dHB1dCBidWZmZXIgZXhwcmVzc2VkIGluCisvLyAgICAgICAgICAgICAgOC4yNCBmaXhlZCBwb2ludCBmb3JtYXQKKy8vICAgICAgICAtIGlmIEVGRkVDVF9GTEFHX1ZPTFVNRV9DVFJMIGlzIG5vdCBzZXQgaW4gZWZmZWN0IGRlc2NyaXB0b3I6CisvLyAgICAgICAgICAgICAgTi9BCisvLyAgSXQgaXMgbGVnYWwgdG8gcmVjZWl2ZSBhIG51bGwgcG9pbnRlciBhcyBwUmVwbHlEYXRhIGluIHdoaWNoIGNhc2UgdGhlIGVmZmVjdCBmcmFtZXdvcmsgaGFzCisvLyAgZGVsZWdhdGVkIHZvbHVtZSBjb250cm9sIHRvIGFub3RoZXIgZWZmZWN0CisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBjb21tYW5kOiBFRkZFQ1RfQ01EX1NFVF9BVURJT19NT0RFCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBkZXNjcmlwdGlvbjoKKy8vICBTZXQgdGhlIGF1ZGlvIG1vZGUuIFRoZSBlZmZlY3QgaW1wbGVtZW50YXRpb24gbXVzdCBzZXQgRUZGRUNUX0ZMQUdfQVVESU9fTU9ERV9JTkQgZmxhZyBpbiBpdHMKKy8vICBkZXNjcmlwdG9yIHRvIHJlY2VpdmUgdGhpcyBjb21tYW5kIHdoZW4gdGhlIGF1ZGlvIG1vZGUgY2hhbmdlcy4KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIGNvbW1hbmQgZm9ybWF0OgorLy8gIHNpemU6IHNpemVvZih1aW50MzJfdCkKKy8vICBkYXRhOiBhdWRpb19tb2RlX2UKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIHJlcGx5IGZvcm1hdDoKKy8vICBzaXplOiAwCisvLyAgZGF0YTogTi9BCisvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisvLyBjb21tYW5kOiBFRkZFQ1RfQ01EX0ZJUlNUX1BST1BSSUVUQVJZCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBkZXNjcmlwdGlvbjoKKy8vICBBbGwgcHJvcHJpZXRhcnkgZWZmZWN0IGNvbW1hbmRzIG11c3QgdXNlIGNvbW1hbmQgY29kZXMgYWJvdmUgdGhpcyB2YWx1ZS4gVGhlIHNpemUgYW5kIGZvcm1hdCBvZgorLy8gIGNvbW1hbmQgYW5kIHJlc3BvbnNlIGZpZWxkcyBpcyBmcmVlIGluIHRoaXMgY2FzZQorLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisKKy8vIEF1ZGlvIGJ1ZmZlciBkZXNjcmlwdG9yIHVzZWQgYnkgcHJvY2VzcygpLCBidWZmZXJQcm92aWRlcigpIGZ1bmN0aW9ucyBhbmQgYnVmZmVyX2NvbmZpZ190CisvLyBzdHJ1Y3R1cmUuIE11bHRpLWNoYW5uZWwgYXVkaW8gaXMgYWx3YXlzIGludGVybGVhdmVkLiBUaGUgY2hhbm5lbCBvcmRlciBpcyBmcm9tIExTQiB0byBNU0Igd2l0aAorLy8gcmVnYXJkIHRvIHRoZSBjaGFubmVsIG1hc2sgZGVmaW5pdGlvbiBpbiBhdWRpb19jaGFubmVsc19lIGUuZyA6CisvLyBTdGVyZW86IGxlZnQsIHJpZ2h0CisvLyA1IHBvaW50IDE6IGZyb250IGxlZnQsIGZyb250IHJpZ2h0LCBmcm9udCBjZW50ZXIsIGxvdyBmcmVxdWVuY3ksIGJhY2sgbGVmdCwgYmFjayByaWdodAorLy8gVGhlIGJ1ZmZlciBzaXplIGlzIGV4cHJlc3NlZCBpbiBmcmFtZSBjb3VudCwgYSBmcmFtZSBiZWluZyBjb21wb3NlZCBvZiBzYW1wbGVzIGZvciBhbGwKKy8vIGNoYW5uZWxzIGF0IGEgZ2l2ZW4gdGltZS4gRnJhbWUgc2l6ZSBmb3IgdW5zcGVjaWZpZWQgZm9ybWF0IChBVURJT19GT1JNQVRfT1RIRVIpIGlzIDggYml0IGJ5CisvLyBkZWZpbml0aW9uCitzdHJ1Y3QgYXVkaW9fYnVmZmVyX3MgeworICAgIHNpemVfdCAgIGZyYW1lQ291bnQ7ICAgICAgICAvLyBudW1iZXIgb2YgZnJhbWVzIGluIGJ1ZmZlcgorICAgIHVuaW9uIHsKKyAgICAgICAgdm9pZCogICAgICAgcmF3OyAgICAgICAgLy8gcmF3IHBvaW50ZXIgdG8gc3RhcnQgb2YgYnVmZmVyCisgICAgICAgIGludDMyX3QqICAgIHMzMjsgICAgICAgIC8vIHBvaW50ZXIgdG8gc2lnbmVkIDMyIGJpdCBkYXRhIGF0IHN0YXJ0IG9mIGJ1ZmZlcgorICAgICAgICBpbnQxNl90KiAgICBzMTY7ICAgICAgICAvLyBwb2ludGVyIHRvIHNpZ25lZCAxNiBiaXQgZGF0YSBhdCBzdGFydCBvZiBidWZmZXIKKyAgICAgICAgdWludDhfdCogICAgdTg7ICAgICAgICAgLy8gcG9pbnRlciB0byB1bnNpZ25lZCA4IGJpdCBkYXRhIGF0IHN0YXJ0IG9mIGJ1ZmZlcgorICAgIH07Cit9OworCisvLyBUaGUgYnVmZmVyX3Byb3ZpZGVyX3Mgc3RydWN0dXJlIGNvbnRhaW5zIGZ1bmN0aW9ucyB0aGF0IGNhbiBiZSB1c2VkCisvLyBieSB0aGUgZWZmZWN0IGVuZ2luZSBwcm9jZXNzKCkgZnVuY3Rpb24gdG8gcXVlcnkgYW5kIHJlbGVhc2UgaW5wdXQKKy8vIG9yIG91dHB1dCBhdWRpbyBidWZmZXIuCisvLyBUaGUgZ2V0QnVmZmVyKCkgZnVuY3Rpb24gaXMgY2FsbGVkIHRvIHJldHJpZXZlIGEgYnVmZmVyIHdoZXJlIGRhdGEKKy8vIHNob3VsZCByZWFkIGZyb20gb3Igd3JpdHRlbiB0byBieSBwcm9jZXNzKCkgZnVuY3Rpb24uCisvLyBUaGUgcmVsZWFzZUJ1ZmZlcigpIGZ1bmN0aW9uIE1VU1QgYmUgY2FsbGVkIHdoZW4gdGhlIGJ1ZmZlciByZXRyaWV2ZWQKKy8vIHdpdGggZ2V0QnVmZmVyKCkgaXMgbm90IG5lZWRlZCBhbnltb3JlLgorLy8gVGhlIHByb2Nlc3MgZnVuY3Rpb24gc2hvdWxkIHVzZSB0aGUgYnVmZmVyIHByb3ZpZGVyIG1lY2hhbmlzbSB0byByZXRyaWV2ZQorLy8gaW5wdXQgb3Igb3V0cHV0IGJ1ZmZlciBpZiB0aGUgaW5CdWZmZXIgb3Igb3V0QnVmZmVyIHBhc3NlZCBhcyBhcmd1bWVudCBpcyBOVUxMCisvLyBhbmQgdGhlIGJ1ZmZlciBjb25maWd1cmF0aW9uIChidWZmZXJfY29uZmlnX3QpIGdpdmVuIGJ5IHRoZSBFRkZFQ1RfQ01EX0NPTkZJR1VSRQorLy8gY29tbWFuZCBkaWQgbm90IHNwZWNpZnkgYW4gYXVkaW8gYnVmZmVyLgorCit0eXBlZGVmIGludDMyX3QgKCogYnVmZmVyX2Z1bmN0aW9uX3QpKHZvaWQgKmNvb2tpZSwgYXVkaW9fYnVmZmVyX3QgKmJ1ZmZlcik7CisKK3R5cGVkZWYgc3RydWN0IGJ1ZmZlcl9wcm92aWRlcl9zIHsKKyAgICBidWZmZXJfZnVuY3Rpb25fdCBnZXRCdWZmZXI7ICAgICAgIC8vIHJldHJpZXZlIG5leHQgYnVmZmVyCisgICAgYnVmZmVyX2Z1bmN0aW9uX3QgcmVsZWFzZUJ1ZmZlcjsgICAvLyByZWxlYXNlIHVzZWQgYnVmZmVyCisgICAgdm9pZCAgICAgICAqY29va2llOyAgICAgICAgICAgICAgICAvLyBmb3IgdXNlIGJ5IGNsaWVudCBvZiBidWZmZXIgcHJvdmlkZXIgZnVuY3Rpb25zCit9IGJ1ZmZlcl9wcm92aWRlcl90OworCisKKy8vIFRoZSBidWZmZXJfY29uZmlnX3Mgc3RydWN0dXJlIHNwZWNpZmllcyB0aGUgaW5wdXQgb3Igb3V0cHV0IGF1ZGlvIGZvcm1hdAorLy8gdG8gYmUgdXNlZCBieSB0aGUgZWZmZWN0IGVuZ2luZS4gSXQgaXMgcGFydCBvZiB0aGUgZWZmZWN0X2NvbmZpZ190CisvLyBzdHJ1Y3R1cmUgdGhhdCBkZWZpbmVzIGJvdGggaW5wdXQgYW5kIG91dHB1dCBidWZmZXIgY29uZmlndXJhdGlvbnMgYW5kIGlzCisvLyBwYXNzZWQgYnkgdGhlIEVGRkVDVF9DTURfQ09ORklHVVJFIGNvbW1hbmQuCit0eXBlZGVmIHN0cnVjdCBidWZmZXJfY29uZmlnX3MgeworICAgIGF1ZGlvX2J1ZmZlcl90ICBidWZmZXI7ICAgICAvLyBidWZmZXIgZm9yIHVzZSBieSBwcm9jZXNzKCkgZnVuY3Rpb24gaWYgbm90IHBhc3NlZCBleHBsaWNpdGx5CisgICAgdWludDMyX3QgICBzYW1wbGluZ1JhdGU7ICAgIC8vIHNhbXBsaW5nIHJhdGUKKyAgICB1aW50MzJfdCAgIGNoYW5uZWxzOyAgICAgICAgLy8gY2hhbm5lbCBtYXNrIChzZWUgYXVkaW9fY2hhbm5lbHNfZSkKKyAgICBidWZmZXJfcHJvdmlkZXJfdCBidWZmZXJQcm92aWRlcjsgICAvLyBidWZmZXIgcHJvdmlkZXIKKyAgICB1aW50OF90ICAgIGZvcm1hdDsgICAgICAgICAgLy8gQXVkaW8gZm9ybWF0ICAoc2VlIGF1ZGlvX2Zvcm1hdF9lKQorICAgIHVpbnQ4X3QgICAgYWNjZXNzTW9kZTsgICAgICAvLyByZWFkL3dyaXRlIG9yIGFjY3VtdWxhdGUgaW4gYnVmZmVyIChlZmZlY3RfYnVmZmVyX2FjY2Vzc19lKQorICAgIHVpbnQxNl90ICAgbWFzazsgICAgICAgICAgICAvLyBpbmRpY2F0ZXMgd2hpY2ggb2YgdGhlIGFib3ZlIGZpZWxkcyBpcyB2YWxpZAorfSBidWZmZXJfY29uZmlnX3Q7CisKKy8vIFNhbXBsZSBmb3JtYXQKK2VudW0gYXVkaW9fZm9ybWF0X2UgeworICAgIFNBTVBMRV9GT1JNQVRfUENNX1MxNSwgICAvLyBQQ00gc2lnbmVkIDE2IGJpdHMKKyAgICBTQU1QTEVfRk9STUFUX1BDTV9VOCwgICAgLy8gUENNIHVuc2lnbmVkIDggYml0cworICAgIFNBTVBMRV9GT1JNQVRfUENNX1M3XzI0LCAvLyBQQ00gc2lnbmVkIDcuMjQgZml4ZWQgcG9pbnQgcmVwcmVzZW50YXRpb24KKyAgICBTQU1QTEVfRk9STUFUX09USEVSICAgICAgLy8gb3RoZXIgZm9ybWF0IChlLmcuIGNvbXByZXNzZWQpCit9OworCisvLyBDaGFubmVsIG1hc2sKK2VudW0gYXVkaW9fY2hhbm5lbHNfZSB7CisgICAgQ0hBTk5FTF9GUk9OVF9MRUZUID0gMHgxLCAgICAgICAgICAgICAgICAgICAvLyBmcm9udCBsZWZ0IGNoYW5uZWwKKyAgICBDSEFOTkVMX0ZST05UX1JJR0hUID0gMHgyLCAgICAgICAgICAgICAgICAgIC8vIGZyb250IHJpZ2h0IGNoYW5uZWwKKyAgICBDSEFOTkVMX0ZST05UX0NFTlRFUiA9IDB4NCwgICAgICAgICAgICAgICAgLy8gZnJvbnQgY2VudGVyIGNoYW5uZWwKKyAgICBDSEFOTkVMX0xPV19GUkVRVUVOQ1kgPSAweDgsICAgICAgICAgICAgICAgLy8gbG93IGZyZXF1ZW5jeSBjaGFubmVsCisgICAgQ0hBTk5FTF9CQUNLX0xFRlQgPSAweDEwLCAgICAgICAgICAgICAgICAgICAvLyBiYWNrIGxlZnQgY2hhbm5lbAorICAgIENIQU5ORUxfQkFDS19SSUdIVCA9IDB4MjAsICAgICAgICAgICAgICAgICAgLy8gYmFjayByaWdodCBjaGFubmVsCisgICAgQ0hBTk5FTF9GUk9OVF9MRUZUX09GX0NFTlRFUiA9IDB4NDAsICAgICAgIC8vIGZyb250IGxlZnQgb2YgY2VudGVyIGNoYW5uZWwKKyAgICBDSEFOTkVMX0ZST05UX1JJR0hUX09GX0NFTlRFUiA9IDB4ODAsICAgICAgLy8gZnJvbnQgcmlnaHQgb2YgY2VudGVyIGNoYW5uZWwKKyAgICBDSEFOTkVMX0JBQ0tfQ0VOVEVSID0gMHgxMDAsICAgICAgICAgICAgICAgIC8vIGJhY2sgY2VudGVyIGNoYW5uZWwKKyAgICBDSEFOTkVMX01PTk8gPSBDSEFOTkVMX0ZST05UX0xFRlQsCisgICAgQ0hBTk5FTF9TVEVSRU8gPSAoQ0hBTk5FTF9GUk9OVF9MRUZUIHwgQ0hBTk5FTF9GUk9OVF9SSUdIVCksCisgICAgQ0hBTk5FTF9RVUFEID0gKENIQU5ORUxfRlJPTlRfTEVGVCB8IENIQU5ORUxfRlJPTlRfUklHSFQgfAorICAgICAgICAgICAgQ0hBTk5FTF9CQUNLX0xFRlQgfCBDSEFOTkVMX0JBQ0tfUklHSFQpLAorICAgIENIQU5ORUxfU1VSUk9VTkQgPSAoQ0hBTk5FTF9GUk9OVF9MRUZUIHwgQ0hBTk5FTF9GUk9OVF9SSUdIVCB8CisgICAgICAgICAgICBDSEFOTkVMX0ZST05UX0NFTlRFUiB8IENIQU5ORUxfQkFDS19DRU5URVIpLAorICAgIENIQU5ORUxfNVBPSU5UMSA9IChDSEFOTkVMX0ZST05UX0xFRlQgfCBDSEFOTkVMX0ZST05UX1JJR0hUIHwKKyAgICAgICAgICAgIENIQU5ORUxfRlJPTlRfQ0VOVEVSIHwgQ0hBTk5FTF9MT1dfRlJFUVVFTkNZIHwgQ0hBTk5FTF9CQUNLX0xFRlQgfCBDSEFOTkVMX0JBQ0tfUklHSFQpLAorICAgIENIQU5ORUxfN1BPSU5UMSA9IChDSEFOTkVMX0ZST05UX0xFRlQgfCBDSEFOTkVMX0ZST05UX1JJR0hUIHwKKyAgICAgICAgICAgIENIQU5ORUxfRlJPTlRfQ0VOVEVSIHwgQ0hBTk5FTF9MT1dfRlJFUVVFTkNZIHwgQ0hBTk5FTF9CQUNLX0xFRlQgfCBDSEFOTkVMX0JBQ0tfUklHSFQgfAorICAgICAgICAgICAgQ0hBTk5FTF9GUk9OVF9MRUZUX09GX0NFTlRFUiB8IENIQU5ORUxfRlJPTlRfUklHSFRfT0ZfQ0VOVEVSKSwKK307CisKKy8vIFJlbmRlciBkZXZpY2UKK2VudW0gYXVkaW9fZGV2aWNlX2UgeworICAgIERFVklDRV9FQVJQSUVDRSA9IDB4MSwgICAgICAgICAgICAgICAgICAgICAgLy8gZWFycGllY2UKKyAgICBERVZJQ0VfU1BFQUtFUiA9IDB4MiwgICAgICAgICAgICAgICAgICAgICAgIC8vIHNwZWFrZXIKKyAgICBERVZJQ0VfV0lSRURfSEVBRFNFVCA9IDB4NCwgICAgICAgICAgICAgICAgIC8vIHdpcmVkIGhlYWRzZXQsIHdpdGggbWljcm9waG9uZQorICAgIERFVklDRV9XSVJFRF9IRUFEUEhPTkUgPSAweDgsICAgICAgICAgICAgICAgLy8gd2lyZWQgaGVhZHBob25lLCB3aXRob3V0IG1pY3JvcGhvbmUKKyAgICBERVZJQ0VfQkxVRVRPT1RIX1NDTyA9IDB4MTAsICAgICAgICAgICAgICAgIC8vIGdlbmVyaWMgYmx1ZXRvb3RoIFNDTworICAgIERFVklDRV9CTFVFVE9PVEhfU0NPX0hFQURTRVQgPSAweDIwLCAgICAgICAgLy8gYmx1ZXRvb3RoIFNDTyBoZWFkc2V0CisgICAgREVWSUNFX0JMVUVUT09USF9TQ09fQ0FSS0lUID0gMHg0MCwgICAgICAgICAvLyBibHVldG9vdGggU0NPIGNhciBraXQKKyAgICBERVZJQ0VfQkxVRVRPT1RIX0EyRFAgPSAweDgwLCAgICAgICAgICAgICAgIC8vIGdlbmVyaWMgYmx1ZXRvb3RoIEEyRFAKKyAgICBERVZJQ0VfQkxVRVRPT1RIX0EyRFBfSEVBRFBIT05FUyA9IDB4MTAwLCAgIC8vIGJsdWV0b290aCBBMkRQIGhlYWRwaG9uZXMKKyAgICBERVZJQ0VfQkxVRVRPT1RIX0EyRFBfU1BFQUtFUiA9IDB4MjAwLCAgICAgIC8vIGJsdWV0b290aCBBMkRQIHNwZWFrZXJzCisgICAgREVWSUNFX0FVWF9ESUdJVEFMID0gMHg0MDAsICAgICAgICAgICAgICAgICAvLyBkaWdpdGFsIG91dHB1dAorICAgIERFVklDRV9FWFRFUk5BTF9TUEVBS0VSID0gMHg4MDAgICAgICAgICAgICAgLy8gZXh0ZXJuYWwgc3BlYWtlciAoc3RlcmVvIGFuZCBIaWdoIHF1YWxpdHkpCit9OworCisvLyBBdWRpbyBtb2RlCitlbnVtIGF1ZGlvX21vZGVfZSB7CisgICAgQVVESU9fTU9ERV9OT1JNQUwsICAgICAgLy8gcGhvbmUgaWRsZQorICAgIEFVRElPX01PREVfUklOR1RPTkUsICAgIC8vIHBob25lIHJpbmdpbmcKKyAgICBBVURJT19NT0RFX0lOX0NBTEwgICAgICAvLyBwaG9uZSBjYWxsIGNvbm5lY3RlZAorfTsKKworLy8gVmFsdWVzIGZvciAiYWNjZXNzTW9kZSIgZmllbGQgb2YgYnVmZmVyX2NvbmZpZ190OgorLy8gICBvdmVyd3JpdGUsIHJlYWQgb25seSwgYWNjdW11bGF0ZSAocmVhZC9tb2RpZnkvd3JpdGUpCitlbnVtIGVmZmVjdF9idWZmZXJfYWNjZXNzX2UgeworICAgIEVGRkVDVF9CVUZGRVJfQUNDRVNTX1dSSVRFLAorICAgIEVGRkVDVF9CVUZGRVJfQUNDRVNTX1JFQUQsCisgICAgRUZGRUNUX0JVRkZFUl9BQ0NFU1NfQUNDVU1VTEFURQorCit9OworCisvLyBWYWx1ZXMgZm9yIGJpdCBmaWVsZCAibWFzayIgaW4gYnVmZmVyX2NvbmZpZ190LiBJZiBhIGJpdCBpcyBzZXQsIHRoZSBjb3JyZXNwb25kaW5nIGZpZWxkCisvLyBpbiBidWZmZXJfY29uZmlnX3QgbXVzdCBiZSB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBleGVjdXRpbmcgdGhlIEVGRkVDVF9DTURfQ09ORklHVVJFIGNvbW1hbmQKKyNkZWZpbmUgRUZGRUNUX0NPTkZJR19CVUZGRVIgICAgMHgwMDAxICAvLyBidWZmZXIgZmllbGQgbXVzdCBiZSB0YWtlbiBpbnRvIGFjY291bnQKKyNkZWZpbmUgRUZGRUNUX0NPTkZJR19TTVBfUkFURSAgMHgwMDAyICAvLyBzYW1wbGluZ1JhdGUgZmllbGQgbXVzdCBiZSB0YWtlbiBpbnRvIGFjY291bnQKKyNkZWZpbmUgRUZGRUNUX0NPTkZJR19DSEFOTkVMUyAgMHgwMDA0ICAvLyBjaGFubmVscyBmaWVsZCBtdXN0IGJlIHRha2VuIGludG8gYWNjb3VudAorI2RlZmluZSBFRkZFQ1RfQ09ORklHX0ZPUk1BVCAgICAweDAwMDggIC8vIGZvcm1hdCBmaWVsZCBtdXN0IGJlIHRha2VuIGludG8gYWNjb3VudAorI2RlZmluZSBFRkZFQ1RfQ09ORklHX0FDQ19NT0RFICAweDAwMTAgIC8vIGFjY2Vzc01vZGUgZmllbGQgbXVzdCBiZSB0YWtlbiBpbnRvIGFjY291bnQKKyNkZWZpbmUgRUZGRUNUX0NPTkZJR19QUk9WSURFUiAgMHgwMDIwICAvLyBidWZmZXJQcm92aWRlciBmaWVsZCBtdXN0IGJlIHRha2VuIGludG8gYWNjb3VudAorI2RlZmluZSBFRkZFQ1RfQ09ORklHX0FMTCAoRUZGRUNUX0NPTkZJR19CVUZGRVIgfCBFRkZFQ1RfQ09ORklHX1NNUF9SQVRFIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZGRUNUX0NPTkZJR19DSEFOTkVMUyB8IEVGRkVDVF9DT05GSUdfRk9STUFUIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZGRUNUX0NPTkZJR19BQ0NfTU9ERSB8IEVGRkVDVF9DT05GSUdfUFJPVklERVIpCisKKworLy8gZWZmZWN0X2NvbmZpZ19zIHN0cnVjdHVyZSBkZXNjcmliZXMgdGhlIGZvcm1hdCBvZiB0aGUgcENtZERhdGEgYXJndW1lbnQgb2YgRUZGRUNUX0NNRF9DT05GSUdVUkUKKy8vIGNvbW1hbmQgdG8gY29uZmlndXJlIGF1ZGlvIHBhcmFtZXRlcnMgYW5kIGJ1ZmZlcnMgZm9yIGVmZmVjdCBlbmdpbmUgaW5wdXQgYW5kIG91dHB1dC4KK3R5cGVkZWYgc3RydWN0IGVmZmVjdF9jb25maWdfcyB7CisgICAgYnVmZmVyX2NvbmZpZ190ICAgaW5wdXRDZmc7CisgICAgYnVmZmVyX2NvbmZpZ190ICAgb3V0cHV0Q2ZnOzsKK30gZWZmZWN0X2NvbmZpZ190OworCisKKy8vIGVmZmVjdF9wYXJhbV9zIHN0cnVjdHVyZSBkZXNjcmliZXMgdGhlIGZvcm1hdCBvZiB0aGUgcENtZERhdGEgYXJndW1lbnQgb2YgRUZGRUNUX0NNRF9TRVRfUEFSQU0KKy8vIGNvbW1hbmQgYW5kIHBDbWREYXRhIGFuZCBwUmVwbHlEYXRhIG9mIEVGRkVDVF9DTURfR0VUX1BBUkFNIGNvbW1hbmQuCisvLyBwc2l6ZSBhbmQgdnNpemUgcmVwcmVzZW50IHRoZSBhY3R1YWwgc2l6ZSBvZiBwYXJhbWV0ZXIgYW5kIHZhbHVlLgorLy8KKy8vIE5PVEU6IHRoZSBzdGFydCBvZiB2YWx1ZSBmaWVsZCBpbnNpZGUgdGhlIGRhdGEgZmllbGQgaXMgYWx3YXlzIG9uIGEgMzIgYml0IGJvdW5kYXJ5OgorLy8KKy8vICArLS0tLS0tLS0tLS0rCisvLyAgfCBzdGF0dXMgICAgfCBzaXplb2YoaW50KQorLy8gICstLS0tLS0tLS0tLSsKKy8vICB8IHBzaXplICAgICB8IHNpemVvZihpbnQpCisvLyAgKy0tLS0tLS0tLS0tKworLy8gIHwgdnNpemUgICAgIHwgc2l6ZW9mKGludCkKKy8vICArLS0tLS0tLS0tLS0rCisvLyAgfCAgICAgICAgICAgfCAgIHwgICAgICAgICAgIHwKKy8vICB+IHBhcmFtZXRlciB+ICAgPiBwc2l6ZSAgICAgfAorLy8gIHwgICAgICAgICAgIHwgICB8ICAgICAgICAgICA+ICAoKHBzaXplIC0gMSkvc2l6ZW9mKGludCkgKyAxKSAqIHNpemVvZihpbnQpCisvLyAgKy0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgIHwKKy8vICB8IHBhZGRpbmcgICB8ICAgICAgICAgICAgICAgfAorLy8gICstLS0tLS0tLS0tLSsKKy8vICB8ICAgICAgICAgICB8ICAgfAorLy8gIH4gdmFsdWUgICAgIH4gICA+IHZzaXplCisvLyAgfCAgICAgICAgICAgfCAgIHwKKy8vICArLS0tLS0tLS0tLS0rCisKK3R5cGVkZWYgc3RydWN0IGVmZmVjdF9wYXJhbV9zIHsKKyAgICBpbnQzMl90ICAgICBzdGF0dXM7ICAgICAvLyBUcmFuc2FjdGlvbiBzdGF0dXMgKHVudXNlZCBmb3IgY29tbWFuZCwgdXNlZCBmb3IgcmVwbHkpCisgICAgdWludDMyX3QgICAgcHNpemU7ICAgICAgLy8gUGFyYW1ldGVyIHNpemUKKyAgICB1aW50MzJfdCAgICB2c2l6ZTsgICAgICAvLyBWYWx1ZSBzaXplCisgICAgY2hhciAgICAgICAgZGF0YVtdOyAgICAgLy8gU3RhcnQgb2YgUGFyYW1ldGVyICsgVmFsdWUgZGF0YQorfSBlZmZlY3RfcGFyYW1fdDsKKworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLyAgICAgIEVmZmVjdCBsaWJyYXJ5IGludGVyZmFjZQorLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCisvLyBBbiBlZmZlY3QgbGlicmFyeSBpcyByZXF1aXJlZCB0byBpbXBsZW1lbnQgYW5kIGV4cG9zZSB0aGUgZm9sbG93aW5nIGZ1bmN0aW9ucworLy8gdG8gZW5hYmxlIGVmZmVjdCBlbnVtZXJhdGlvbiBhbmQgaW5zdGFudGlhdGlvbi4gVGhlIG5hbWUgb2YgdGhlc2UgZnVuY3Rpb25zIG11c3QgYmUgYXMKKy8vIHNwZWNpZmllZCBoZXJlIGFzIHRoZSBlZmZlY3QgZnJhbWV3b3JrIHdpbGwgZ2V0IHRoZSBmdW5jdGlvbiBhZGRyZXNzIHdpdGggZGxzeW0oKToKKy8vCisvLyAtIGVmZmVjdF9RdWVyeU51bWJlckVmZmVjdHNfdCBFZmZlY3RRdWVyeU51bWJlckVmZmVjdHM7CisvLyAtIGVmZmVjdF9RdWVyeUVmZmVjdF90IEVmZmVjdFF1ZXJ5RWZmZWN0OworLy8gLSBlZmZlY3RfQ3JlYXRlRWZmZWN0X3QgRWZmZWN0Q3JlYXRlOworLy8gLSBlZmZlY3RfUmVsZWFzZUVmZmVjdF90IEVmZmVjdFJlbGVhc2U7CisKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyAgICBGdW5jdGlvbjogICAgICAgRWZmZWN0UXVlcnlOdW1iZXJFZmZlY3RzCisvLworLy8gICAgRGVzY3JpcHRpb246ICAgIFJldHVybnMgdGhlIG51bWJlciBvZiBkaWZmZXJlbnQgZWZmZWN0cyBleHBvc2VkIGJ5IHRoZQorLy8gICAgICAgICAgbGlicmFyeS4gRWFjaCBlZmZlY3QgbXVzdCBoYXZlIGEgdW5pcXVlIGVmZmVjdCB1dWlkIChzZWUKKy8vICAgICAgICAgIGVmZmVjdF9kZXNjcmlwdG9yX3QpLiBUaGlzIGZ1bmN0aW9uIHRvZ2V0aGVyIHdpdGggRWZmZWN0UXVlcnlFZmZlY3QoKQorLy8gICAgICAgICAgaXMgdXNlZCB0byBlbnVtZXJhdGUgYWxsIGVmZmVjdHMgcHJlc2VudCBpbiB0aGUgbGlicmFyeS4KKy8vCisvLyAgICBJbnB1dC9PdXRwdXQ6CisvLyAgICAgICAgICBwTnVtRWZmZWN0czogICAgYWRkcmVzcyB3aGVyZSB0aGUgbnVtYmVyIG9mIGVmZmVjdHMgc2hvdWxkIGJlIHJldHVybmVkLgorLy8KKy8vICAgIE91dHB1dDoKKy8vICAgICAgICByZXR1cm5lZCB2YWx1ZTogICAgMCAgICAgICAgICBzdWNjZXNzZnVsIG9wZXJhdGlvbi4KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAtRU5PREVWICAgICBsaWJyYXJ5IGZhaWxlZCB0byBpbml0aWFsaXplCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgLUVJTlZBTCAgICAgaW52YWxpZCBwTnVtRWZmZWN0cworLy8gICAgICAgICpwTnVtRWZmZWN0czogICAgIHVwZGF0ZWQgd2l0aCBudW1iZXIgb2YgZWZmZWN0cyBpbiBsaWJyYXJ5CisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK3R5cGVkZWYgaW50MzJfdCAoKmVmZmVjdF9RdWVyeU51bWJlckVmZmVjdHNfdCkodWludDMyX3QgKnBOdW1FZmZlY3RzKTsKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyAgICBGdW5jdGlvbjogICAgICAgRWZmZWN0UXVlcnlFZmZlY3QKKy8vCisvLyAgICBEZXNjcmlwdGlvbjogICAgUmV0dXJucyB0aGUgZGVzY3JpcHRvciBvZiB0aGUgZWZmZWN0IGVuZ2luZSB3aGljaCBpbmRleCBpcworLy8gICAgICAgICAgZ2l2ZW4gYXMgZmlyc3QgYXJndW1lbnQuCisvLyAgICAgICAgICBTZWUgZWZmZWN0X2Rlc2NyaXB0b3JfdCBmb3IgZGV0YWlscyBvbiBlZmZlY3QgZGVzY3JpcHRvcnMuCisvLyAgICAgICAgICBUaGlzIGZ1bmN0aW9uIHRvZ2V0aGVyIHdpdGggRWZmZWN0UXVlcnlOdW1iZXJFZmZlY3RzKCkgaXMgdXNlZCB0byBlbnVtZXJhdGUgYWxsCisvLyAgICAgICAgICBlZmZlY3RzIHByZXNlbnQgaW4gdGhlIGxpYnJhcnkuIFRoZSBlbnVtZXJhdGlvbiBzZXF1ZW5jZSBpczoKKy8vICAgICAgICAgICAgICBFZmZlY3RRdWVyeU51bWJlckVmZmVjdHMoJm51bV9lZmZlY3RzKTsKKy8vICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtX2VmZmVjdHM7IGkrKykKKy8vICAgICAgICAgICAgICAgICAgRWZmZWN0UXVlcnlFZmZlY3QoaSwuLi4pOworLy8KKy8vICAgIElucHV0L091dHB1dDoKKy8vICAgICAgICAgIGluZGV4OiAgICAgICAgICBpbmRleCBvZiB0aGUgZWZmZWN0CisvLyAgICAgICAgICBwRGVzY3JpcHRvcjogICAgYWRkcmVzcyB3aGVyZSB0byByZXR1cm4gdGhlIGVmZmVjdCBkZXNjcmlwdG9yLgorLy8KKy8vICAgIE91dHB1dDoKKy8vICAgICAgICByZXR1cm5lZCB2YWx1ZTogICAgMCAgICAgICAgICBzdWNjZXNzZnVsIG9wZXJhdGlvbi4KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAtRU5PREVWICAgICBsaWJyYXJ5IGZhaWxlZCB0byBpbml0aWFsaXplCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgLUVJTlZBTCAgICAgaW52YWxpZCBwRGVzY3JpcHRvciBvciBpbmRleAorLy8gICAgICAgICAgICAgICAgICAgICAgICAgIC1FTk9TWVMgICAgIGVmZmVjdCBsaXN0IGhhcyBjaGFuZ2VkIHNpbmNlIGxhc3QgZXhlY3V0aW9uIG9mCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRWZmZWN0UXVlcnlOdW1iZXJFZmZlY3RzKCkKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAtRU5PRU5UICAgICBubyBtb3JlIGVmZmVjdCBhdmFpbGFibGUKKy8vICAgICAgICAqcERlc2NyaXB0b3I6ICAgICB1cGRhdGVkIHdpdGggdGhlIGVmZmVjdCBkZXNjcmlwdG9yLgorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCit0eXBlZGVmIGludDMyX3QgKCplZmZlY3RfUXVlcnlFZmZlY3RfdCkodWludDMyX3QgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWZmZWN0X2Rlc2NyaXB0b3JfdCAqcERlc2NyaXB0b3IpOworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vICAgIEZ1bmN0aW9uOiAgICAgICBFZmZlY3RDcmVhdGUKKy8vCisvLyAgICBEZXNjcmlwdGlvbjogICAgQ3JlYXRlcyBhbiBlZmZlY3QgZW5naW5lIG9mIHRoZSBzcGVjaWZpZWQgdHlwZSBhbmQgcmV0dXJucyBhbgorLy8gICAgICAgICAgZWZmZWN0IGNvbnRyb2wgaW50ZXJmYWNlIG9uIHRoaXMgZW5naW5lLiBUaGUgZnVuY3Rpb24gd2lsbCBhbGxvY2F0ZSB0aGUKKy8vICAgICAgICAgIHJlc291cmNlcyBmb3IgYW4gaW5zdGFuY2Ugb2YgdGhlIHJlcXVlc3RlZCBlZmZlY3QgZW5naW5lIGFuZCByZXR1cm4KKy8vICAgICAgICAgIGEgaGFuZGxlIG9uIHRoZSBlZmZlY3QgY29udHJvbCBpbnRlcmZhY2UuCisvLworLy8gICAgSW5wdXQ6CisvLyAgICAgICAgICB1dWlkOiAgICBwb2ludGVyIHRvIHRoZSBlZmZlY3QgdXVpZC4KKy8vICAgICAgICAgIHNlc3Npb25JZDogIGF1ZGlvIHNlc3Npb24gdG8gd2hpY2ggdGhpcyBlZmZlY3QgaW5zdGFuY2Ugd2lsbCBiZSBhdHRhY2hlZC4gQWxsIGVmZmVjdHMKKy8vICAgICAgICAgICAgICBjcmVhdGVkIHdpdGggdGhlIHNhbWUgc2Vzc2lvbiBJRCBhcmUgY29ubmVjdGVkIGluIHNlcmllcyBhbmQgcHJvY2VzcyB0aGUgc2FtZSBzaWduYWwKKy8vICAgICAgICAgICAgICBzdHJlYW0uIEtub3dpbmcgdGhhdCB0d28gZWZmZWN0cyBhcmUgcGFydCBvZiB0aGUgc2FtZSBlZmZlY3QgY2hhaW4gY2FuIGhlbHAgdGhlCisvLyAgICAgICAgICAgICAgbGlicmFyeSBpbXBsZW1lbnQgc29tZSBraW5kIG9mIG9wdGltaXphdGlvbnMuCisvLyAgICAgICAgICBpb0lkOiAgIGlkZW50aWZpZXMgdGhlIG91dHB1dCBvciBpbnB1dCBzdHJlYW0gdGhpcyBlZmZlY3QgaXMgZGlyZWN0ZWQgdG8gYXQgYXVkaW8gSEFMLgorLy8gICAgICAgICAgICAgIEZvciBmdXR1cmUgdXNlIGVzcGVjaWFsbHkgd2l0aCB0dW5uZWxlZCBIVyBhY2NlbGVyYXRlZCBlZmZlY3RzCisvLworLy8gICAgSW5wdXQvT3V0cHV0OgorLy8gICAgICAgICAgcEludGVyZmFjZTogICAgYWRkcmVzcyB3aGVyZSB0byByZXR1cm4gdGhlIGVmZmVjdCBpbnRlcmZhY2UuCisvLworLy8gICAgT3V0cHV0OgorLy8gICAgICAgIHJldHVybmVkIHZhbHVlOiAgICAwICAgICAgICAgIHN1Y2Nlc3NmdWwgb3BlcmF0aW9uLgorLy8gICAgICAgICAgICAgICAgICAgICAgICAgIC1FTk9ERVYgICAgIGxpYnJhcnkgZmFpbGVkIHRvIGluaXRpYWxpemUKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAtRUlOVkFMICAgICBpbnZhbGlkIHBFZmZlY3RVdWlkIG9yIHBJbnRlcmZhY2UKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAtRU5PRU5UICAgICBubyBlZmZlY3Qgd2l0aCB0aGlzIHV1aWQgZm91bmQKKy8vICAgICAgICAqcEludGVyZmFjZTogICAgIHVwZGF0ZWQgd2l0aCB0aGUgZWZmZWN0IGludGVyZmFjZSBoYW5kbGUuCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK3R5cGVkZWYgaW50MzJfdCAoKmVmZmVjdF9DcmVhdGVFZmZlY3RfdCkoZWZmZWN0X3V1aWRfdCAqdXVpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBzZXNzaW9uSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgaW9JZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWZmZWN0X2ludGVyZmFjZV90ICpwSW50ZXJmYWNlKTsKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyAgICBGdW5jdGlvbjogICAgICAgRWZmZWN0UmVsZWFzZQorLy8KKy8vICAgIERlc2NyaXB0aW9uOiAgICBSZWxlYXNlcyB0aGUgZWZmZWN0IGVuZ2luZSB3aG9zZSBoYW5kbGUgaXMgZ2l2ZW4gYXMgYXJndW1lbnQuCisvLyAgICAgICAgICBBbGwgcmVzb3VyY2VzIGFsbG9jYXRlZCB0byB0aGlzIHBhcnRpY3VsYXIgaW5zdGFuY2Ugb2YgdGhlIGVmZmVjdCBhcmUKKy8vICAgICAgICAgIHJlbGVhc2VkLgorLy8KKy8vICAgIElucHV0OgorLy8gICAgICAgICAgaW50ZXJmYWNlOiAgICBoYW5kbGUgb24gdGhlIGVmZmVjdCBpbnRlcmZhY2UgdG8gYmUgcmVsZWFzZWQuCisvLworLy8gICAgT3V0cHV0OgorLy8gICAgICAgIHJldHVybmVkIHZhbHVlOiAgICAwICAgICAgICAgIHN1Y2Nlc3NmdWwgb3BlcmF0aW9uLgorLy8gICAgICAgICAgICAgICAgICAgICAgICAgIC1FTk9ERVYgICAgIGxpYnJhcnkgZmFpbGVkIHRvIGluaXRpYWxpemUKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAtRUlOVkFMICAgICBpbnZhbGlkIGludGVyZmFjZSBoYW5kbGUKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwordHlwZWRlZiBpbnQzMl90ICgqZWZmZWN0X1JlbGVhc2VFZmZlY3RfdCkoZWZmZWN0X2ludGVyZmFjZV90IGludGVyZmFjZSk7CisKKworI2lmIF9fY3BsdXNwbHVzCit9ICAvLyBleHRlcm4gIkMiCisjZW5kaWYKKworCisjZW5kaWYgLypBTkRST0lEX0VGRkVDVEFQSV9IXyovCmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL0VmZmVjdEJhc3NCb29zdEFwaS5oIGIvaW5jbHVkZS9tZWRpYS9FZmZlY3RCYXNzQm9vc3RBcGkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjRhNWY0Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9tZWRpYS9FZmZlY3RCYXNzQm9vc3RBcGkuaApAQCAtMCwwICsxLDQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2lmbmRlZiBBTkRST0lEX0VGRkVDVEJBU1NCT09TVEFQSV9IXworI2RlZmluZSBBTkRST0lEX0VGRkVDVEJBU1NCT09TVEFQSV9IXworCisjaW5jbHVkZSA8bWVkaWEvRWZmZWN0QXBpLmg+CisKKyNpZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLy8gVE9ETzogaW5jbHVkZSBPcGVuU0xFU19JSUQuaCBpbnN0ZWFkCitzdGF0aWMgY29uc3QgZWZmZWN0X3V1aWRfdCBTTF9JSURfQkFTU0JPT1NUXyA9IHsgMHgwNjM0ZjIyMCwgMHhkZGQ0LCAweDExZGIsIDB4YTBmYywgeyAweDAwLCAweDAyLCAweGE1LCAweGQ1LCAweGM1LCAweDFiIH0gfTsKK2NvbnN0IGVmZmVjdF91dWlkX3QgKiBjb25zdCBTTF9JSURfQkFTU0JPT1NUID0gJlNMX0lJRF9CQVNTQk9PU1RfOworCisvKiBlbnVtZXJhdGVkIHBhcmFtZXRlciBzZXR0aW5ncyBmb3IgQmFzc0Jvb3N0IGVmZmVjdCAqLwordHlwZWRlZiBlbnVtCit7CisgICAgQkFTU0JPT1NUX1BBUkFNX1NUUkVOR1RIX1NVUFBPUlRFRCwKKyAgICBCQVNTQk9PU1RfUEFSQU1fU1RSRU5HVEgKK30gdF9iYXNzYm9vc3RfcGFyYW1zOworCisjaWYgX19jcGx1c3BsdXMKK30gIC8vIGV4dGVybiAiQyIKKyNlbmRpZgorCisKKyNlbmRpZiAvKkFORFJPSURfRUZGRUNUQkFTU0JPT1NUQVBJX0hfKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvRWZmZWN0RW52aXJvbm1lbnRhbFJldmVyYkFwaS5oIGIvaW5jbHVkZS9tZWRpYS9FZmZlY3RFbnZpcm9ubWVudGFsUmV2ZXJiQXBpLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQ5MGY3MQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvbWVkaWEvRWZmZWN0RW52aXJvbm1lbnRhbFJldmVyYkFwaS5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIEFORFJPSURfRUZGRUNURU5WSVJPTk1FTlRBTFJFVkVSQkFQSV9IXworI2RlZmluZSBBTkRST0lEX0VGRkVDVEVOVklST05NRU5UQUxSRVZFUkJBUElfSF8KKworI2luY2x1ZGUgPG1lZGlhL0VmZmVjdEFwaS5oPgorCisjaWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8vIFRPRE86IGluY2x1ZGUgT3BlblNMRVNfSUlELmggaW5zdGVhZAorc3RhdGljIGNvbnN0IGVmZmVjdF91dWlkX3QgU0xfSUlEX0VOVklST05NRU5UQUxSRVZFUkJfID0geyAweGMyZTVkNWYwLCAweDk0YmQsIDB4NDc2MywgMHg5Y2FjLCB7IDB4NGUsIDB4MjMsIDB4NGQsIDB4NiwgMHg4MywgMHg5ZSB9IH07Citjb25zdCBlZmZlY3RfdXVpZF90ICogY29uc3QgU0xfSUlEX0VOVklST05NRU5UQUxSRVZFUkIgPSAmU0xfSUlEX0VOVklST05NRU5UQUxSRVZFUkJfOworCisvKiBlbnVtZXJhdGVkIHBhcmFtZXRlciBzZXR0aW5ncyBmb3IgZW52aXJvbm1lbnRhbCByZXZlcmIgZWZmZWN0ICovCit0eXBlZGVmIGVudW0KK3sKKyAgICAvLyBQYXJhbWV0ZXJzIGJlbG93IGFyZSBhcyBkZWZpbmVkIGluIE9wZW5TTCBFUyBzcGVjaWZpY2F0aW9uIGZvciBlbnZpcm9ubWVudGFsIHJldmVyYiBpbnRlcmZhY2UKKyAgICBSRVZFUkJfUEFSQU1fUk9PTV9MRVZFTCwgICAgICAgICAgICAvLyBpbiBtaWxsaWJlbHMsICAgIHJhbmdlIC02MDAwIHRvIDAKKyAgICBSRVZFUkJfUEFSQU1fUk9PTV9IRl9MRVZFTCwgICAgICAgICAvLyBpbiBtaWxsaWJlbHMsICAgIHJhbmdlIC00MDAwIHRvIDAKKyAgICBSRVZFUkJfUEFSQU1fREVDQVlfVElNRSwgICAgICAgICAgICAvLyBpbiBtaWxsaXNlY29uZHMsIHJhbmdlIDEwMCB0byAyMDAwMAorICAgIFJFVkVSQl9QQVJBTV9ERUNBWV9IRl9SQVRJTywgICAgICAgIC8vIGluIHBlcm1pbGxlcywgICAgcmFuZ2UgMTAwIHRvIDEwMDAKKyAgICBSRVZFUkJfUEFSQU1fUkVGTEVDVElPTlNfTEVWRUwsICAgICAvLyBpbiBtaWxsaWJlbHMsICAgIHJhbmdlIC02MDAwIHRvIDAKKyAgICBSRVZFUkJfUEFSQU1fUkVGTEVDVElPTlNfREVMQVksICAgICAvLyBpbiBtaWxsaXNlY29uZHMsIHJhbmdlIDAgdG8gNjUKKyAgICBSRVZFUkJfUEFSQU1fUkVWRVJCX0xFVkVMLCAgICAgICAgICAvLyBpbiBtaWxsaWJlbHMsICAgIHJhbmdlIC02MDAwIHRvIDAKKyAgICBSRVZFUkJfUEFSQU1fUkVWRVJCX0RFTEFZLCAgICAgICAgICAvLyBpbiBtaWxsaXNlY29uZHMsIHJhbmdlIDAgdG8gNjUKKyAgICBSRVZFUkJfUEFSQU1fRElGRlVTSU9OLCAgICAgICAgICAgICAvLyBpbiBwZXJtaWxsZXMsICAgIHJhbmdlIDAgdG8gMTAwMAorICAgIFJFVkVSQl9QQVJBTV9ERU5TSVRZLCAgICAgICAgICAgICAgIC8vIGluIHBlcm1pbGxlcywgICAgcmFuZ2UgMCB0byAxMDAwCisgICAgUkVWRVJCX1BBUkFNX1BST1BFUlRJRVMsCisgICAgUkVWRVJCX1BBUkFNX0JZUEFTUworfSB0X2Vudl9yZXZlcmJfcGFyYW1zOworCisvL3RfcmV2ZXJiX3Byb3BlcnRpZXMgaXMgZXF1YWwgdG8gU0xFbnZpcm9ubWVudGFsUmV2ZXJiU2V0dGluZ3MgZGVmaW5lZCBpbiBPcGVuU0wgRVMgc3BlY2lmaWNhdGlvbi4KK3R5cGVkZWYgc3RydWN0IHNfcmV2ZXJiX3Byb3BlcnRpZXMgeworICAgIGludDE2X3Qgcm9vbUxldmVsOworICAgIGludDE2X3Qgcm9vbUhGTGV2ZWw7CisgICAgaW50MzJfdCBkZWNheVRpbWU7CisgICAgaW50MTZfdCBkZWNheUhGUmF0aW87CisgICAgaW50MTZfdCByZWZsZWN0aW9uc0xldmVsOworICAgIGludDMyX3QgcmVmbGVjdGlvbnNEZWxheTsKKyAgICBpbnQzMl90IHJldmVyYkRlbGF5OworICAgIGludDE2X3QgcmV2ZXJiTGV2ZWw7CisgICAgaW50MTZfdCBkaWZmdXNpb247CisgICAgaW50MTZfdCBkZW5zaXR5OworICAgIGludDE2X3QgcGFkZGluZzsKK30gdF9yZXZlcmJfcHJvcGVydGllczsKKworCisjaWYgX19jcGx1c3BsdXMKK30gIC8vIGV4dGVybiAiQyIKKyNlbmRpZgorCisKKyNlbmRpZiAvKkFORFJPSURfRUZGRUNURU5WSVJPTk1FTlRBTFJFVkVSQkFQSV9IXyovCmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL0VmZmVjdEVxdWFsaXplckFwaS5oIGIvaW5jbHVkZS9tZWRpYS9FZmZlY3RFcXVhbGl6ZXJBcGkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzA2OWQ1Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9tZWRpYS9FZmZlY3RFcXVhbGl6ZXJBcGkuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2lmbmRlZiBBTkRST0lEX0VGRkVDVEVRVUFMSVpFUkFQSV9IXworI2RlZmluZSBBTkRST0lEX0VGRkVDVEVRVUFMSVpFUkFQSV9IXworCisjaW5jbHVkZSA8bWVkaWEvRWZmZWN0QXBpLmg+CisKKyNpZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLy9UT0RPIHJlcGxhY2UgYnkgb3BlblNMIEVTIGluY2x1ZGUgd2hlbiBhdmFpbGFibGUKK3N0YXRpYyBjb25zdCBlZmZlY3RfdXVpZF90IFNMX0lJRF9FUVVBTElaRVJfID0geyAweDBiZWQ0MzAwLCAweGRkZDYsIDB4MTFkYiwgMHg4ZjM0LCB7IDB4MDAsIDB4MDIsIDB4YTUsIDB4ZDUsIDB4YzUsIDB4MWIgfSB9OworY29uc3QgZWZmZWN0X3V1aWRfdCAqIGNvbnN0IFNMX0lJRF9FUVVBTElaRVIgPSAmU0xfSUlEX0VRVUFMSVpFUl87CisKKy8qIGVudW1lcmF0ZWQgcGFyYW1ldGVycyBmb3IgRXF1YWxpemVyIGVmZmVjdCAqLwordHlwZWRlZiBlbnVtCit7CisgICAgRVFfUEFSQU1fTlVNX0JBTkRTLCAgICAgICAgICAgICAvLyBHZXRzIHRoZSBudW1iZXIgb2YgZnJlcXVlbmN5IGJhbmRzIHRoYXQgdGhlIGVxdWFsaXplciBzdXBwb3J0cy4KKyAgICBFUV9QQVJBTV9MRVZFTF9SQU5HRSwgICAgICAgICAgIC8vIFJldHVybnMgdGhlIG1pbmltdW0gYW5kIG1heGltdW0gYmFuZCBsZXZlbHMgc3VwcG9ydGVkLgorICAgIEVRX1BBUkFNX0JBTkRfTEVWRUwsICAgICAgICAgICAgLy8gR2V0cy9TZXRzIHRoZSBnYWluIHNldCBmb3IgdGhlIGdpdmVuIGVxdWFsaXplciBiYW5kLgorICAgIEVRX1BBUkFNX0NFTlRFUl9GUkVRLCAgICAgICAgICAgLy8gR2V0cyB0aGUgY2VudGVyIGZyZXF1ZW5jeSBvZiB0aGUgZ2l2ZW4gYmFuZC4KKyAgICBFUV9QQVJBTV9CQU5EX0ZSRVFfUkFOR0UsICAgICAgIC8vIEdldHMgdGhlIGZyZXF1ZW5jeSByYW5nZSBvZiB0aGUgZ2l2ZW4gZnJlcXVlbmN5IGJhbmQuCisgICAgRVFfUEFSQU1fR0VUX0JBTkQsICAgICAgICAgICAgICAvLyBHZXRzIHRoZSBiYW5kIHRoYXQgaGFzIHRoZSBtb3N0IGVmZmVjdCBvbiB0aGUgZ2l2ZW4gZnJlcXVlbmN5LgorICAgIEVRX1BBUkFNX0NVUl9QUkVTRVQsICAgICAgICAgICAgLy8gR2V0cy9TZXRzIHRoZSBjdXJyZW50IHByZXNldC4KKyAgICBFUV9QQVJBTV9HRVRfTlVNX09GX1BSRVNFVFMsICAgIC8vIEdldHMgdGhlIHRvdGFsIG51bWJlciBvZiBwcmVzZXRzIHRoZSBlcXVhbGl6ZXIgc3VwcG9ydHMuCisgICAgRVFfUEFSQU1fR0VUX1BSRVNFVF9OQU1FICAgICAgICAvLyBHZXRzIHRoZSBwcmVzZXQgbmFtZSBiYXNlZCBvbiB0aGUgaW5kZXguCit9IHRfZXF1YWxpemVyX3BhcmFtczsKKworCisjaWYgX19jcGx1c3BsdXMKK30gIC8vIGV4dGVybiAiQyIKKyNlbmRpZgorCisKKyNlbmRpZiAvKkFORFJPSURfRUZGRUNURVFVQUxJWkVSQVBJX0hfKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvRWZmZWN0UHJlc2V0UmV2ZXJiQXBpLmggYi9pbmNsdWRlL21lZGlhL0VmZmVjdFByZXNldFJldmVyYkFwaS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0ZmZmZmUKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL21lZGlhL0VmZmVjdFByZXNldFJldmVyYkFwaS5oCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIEFORFJPSURfRUZGRUNUUFJFU0VUUkVWRVJCQVBJX0hfCisjZGVmaW5lIEFORFJPSURfRUZGRUNUUFJFU0VUUkVWRVJCQVBJX0hfCisKKyNpbmNsdWRlIDxtZWRpYS9FZmZlY3RBcGkuaD4KKworI2lmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvLyBUT0RPOiBpbmNsdWRlIE9wZW5TTEVTX0lJRC5oIGluc3RlYWQKKworc3RhdGljIGNvbnN0IGVmZmVjdF91dWlkX3QgU0xfSUlEX1BSRVNFVFJFVkVSQl8gPSB7IDB4NDczODJkNjAsIDB4ZGRkOCwgMHgxMWRiLCAweGJmM2EsIHsgMHgwMCwgMHgwMiwgMHhhNSwgMHhkNSwgMHhjNSwgMHgxYiB9IH07Citjb25zdCBlZmZlY3RfdXVpZF90ICogY29uc3QgU0xfSUlEX1BSRVNFVFJFVkVSQiA9ICZTTF9JSURfUFJFU0VUUkVWRVJCXzsKKworLyogZW51bWVyYXRlZCBwYXJhbWV0ZXIgc2V0dGluZ3MgZm9yIHByZXNldCByZXZlcmIgZWZmZWN0ICovCit0eXBlZGVmIGVudW0KK3sKKyAgICBSRVZFUkJfUEFSQU1fUFJFU0VUCit9IHRfcHJlc2V0X3JldmVyYl9wYXJhbXM7CisKKwordHlwZWRlZiBlbnVtCit7CisgICAgUkVWRVJCX1BSRVNFVF9OT05FLAorICAgIFJFVkVSQl9QUkVTRVRfU01BTExST09NLAorICAgIFJFVkVSQl9QUkVTRVRfTUVESVVNUk9PTSwKKyAgICBSRVZFUkJfUFJFU0VUX0xBUkdFUk9PTSwKKyAgICBSRVZFUkJfUFJFU0VUX01FRElVTUhBTEwsCisgICAgUkVWRVJCX1BSRVNFVF9MQVJHRUhBTEwsCisgICAgUkVWRVJCX1BSRVNFVF9QTEFURQorfSB0X3JldmVyYl9wcmVzZXRzOworCisjaWYgX19jcGx1c3BsdXMKK30gIC8vIGV4dGVybiAiQyIKKyNlbmRpZgorCisKKyNlbmRpZiAvKkFORFJPSURfRUZGRUNUUFJFU0VUUkVWRVJCQVBJX0hfKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvRWZmZWN0VmlydHVhbGl6ZXJBcGkuaCBiL2luY2x1ZGUvbWVkaWEvRWZmZWN0VmlydHVhbGl6ZXJBcGkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDFjMzg0Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9tZWRpYS9FZmZlY3RWaXJ0dWFsaXplckFwaS5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIEFORFJPSURfRUZGRUNUVklSVFVBTElaRVJBUElfSF8KKyNkZWZpbmUgQU5EUk9JRF9FRkZFQ1RWSVJUVUFMSVpFUkFQSV9IXworCisjaW5jbHVkZSA8bWVkaWEvRWZmZWN0QXBpLmg+CisKKyNpZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLy8gVE9ETzogaW5jbHVkZSBPcGVuU0xFU19JSUQuaCBpbnN0ZWFkCitzdGF0aWMgY29uc3QgZWZmZWN0X3V1aWRfdCBTTF9JSURfVklSVFVBTElaRVJfID0geyAweDM3Y2MyYzAwLCAweGRkZGQsIDB4MTFkYiwgMHg4NTc3LCB7IDB4MDAsIDB4MDIsIDB4YTUsIDB4ZDUsIDB4YzUsIDB4MWIgfSB9OworY29uc3QgZWZmZWN0X3V1aWRfdCAqIGNvbnN0IFNMX0lJRF9WSVJUVUFMSVpFUiA9ICZTTF9JSURfVklSVFVBTElaRVJfOworCisvKiBlbnVtZXJhdGVkIHBhcmFtZXRlciBzZXR0aW5ncyBmb3IgdmlydHVhbGl6ZXIgZWZmZWN0ICovCit0eXBlZGVmIGVudW0KK3sKKyAgICBWSVJUVUFMSVpFUl9QQVJBTV9TVFJFTkdUSF9TVVBQT1JURUQsCisgICAgVklSVFVBTElaRVJfUEFSQU1fU1RSRU5HVEgKK30gdF92aXJ0dWFsaXplcl9wYXJhbXM7CisKKyNpZiBfX2NwbHVzcGx1cworfSAgLy8gZXh0ZXJuICJDIgorI2VuZGlmCisKKworI2VuZGlmIC8qQU5EUk9JRF9FRkZFQ1RWSVJUVUFMSVpFUkFQSV9IXyovCmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL0VmZmVjdFZpc3VhbGl6ZXJBcGkuaCBiL2luY2x1ZGUvbWVkaWEvRWZmZWN0VmlzdWFsaXplckFwaS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExNTVkYjgKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL21lZGlhL0VmZmVjdFZpc3VhbGl6ZXJBcGkuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2lmbmRlZiBBTkRST0lEX0VGRkVDVFZJU1VBTElaRVJBUElfSF8KKyNkZWZpbmUgQU5EUk9JRF9FRkZFQ1RWSVNVQUxJWkVSQVBJX0hfCisKKyNpbmNsdWRlIDxtZWRpYS9FZmZlY3RBcGkuaD4KKworI2lmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvL1RPRE8gcmVwbGFjZSBieSBvcGVuU0wgRVMgaW5jbHVkZSB3aGVuIGF2YWlsYWJsZQorc3RhdGljIGNvbnN0IGVmZmVjdF91dWlkX3QgU0xfSUlEX1ZJU1VBTElaQVRJT05fID0KKyAgICB7IDB4ZTQ2YjI2YTAsIDB4ZGRkZCwgMHgxMWRiLCAweDhhZmQsIHsgMHgwMCwgMHgwMiwgMHhhNSwgMHhkNSwgMHhjNSwgMHgxYiB9IH07Citjb25zdCBlZmZlY3RfdXVpZF90ICogY29uc3QgU0xfSUlEX1ZJU1VBTElaQVRJT04gPSAmU0xfSUlEX1ZJU1VBTElaQVRJT05fOworCisjZGVmaW5lIFZJU1VBTElaRVJfQ0FQVFVSRV9TSVpFX01BWCAxMDI0ICAvLyBtYXhpbXVtIGNhcHR1cmUgc2l6ZSBpbiBzYW1wbGVzCisjZGVmaW5lIFZJU1VBTElaRVJfQ0FQVFVSRV9TSVpFX01JTiAxMjggICAvLyBtaW5pbXVtIGNhcHR1cmUgc2l6ZSBpbiBzYW1wbGVzCisKKy8qIGVudW1lcmF0ZWQgcGFyYW1ldGVycyBmb3IgVmlzdWFsaXplciBlZmZlY3QgKi8KK3R5cGVkZWYgZW51bQoreworICAgIFZJU1VfUEFSQU1fQ0FQVFVSRV9TSVpFLCAgICAgICAgLy8gU2V0cyB0aGUgbnVtYmVyIFBDTSBzYW1wbGVzIGluIHRoZSBjYXB0dXJlLgorfSB0X3Zpc3VhbGl6ZXJfcGFyYW1zOworCisvKiBjb21tYW5kcyAqLwordHlwZWRlZiBlbnVtCit7CisgICAgVklTVV9DTURfQ0FQVFVSRSA9IEVGRkVDVF9DTURfRklSU1RfUFJPUFJJRVRBUlksIC8vIEdldHMgdGhlIGxhdGVzdCBQQ00gY2FwdHVyZS4KK310X3Zpc3VhbGl6ZXJfY21kczsKKworLy8gVklTVV9DTURfQ0FQVFVSRSByZXRyaWV2ZXMgdGhlIGxhdGVzdCBQQ00gc25hcHNob3QgY2FwdHVyZWQgYnkgdGhlIHZpc3VhbGl6ZXIgZW5naW5lLgorLy8gSXQgcmV0dXJucyB0aGUgbnVtYmVyIG9mIHNhbXBsZXMgc3BlY2lmaWVkIGJ5IFZJU1VfUEFSQU1fQ0FQVFVSRV9TSVpFCisvLyBpbiA4IGJpdCB1bnNpZ25lZCBmb3JtYXQgKDAgPSAweDgwKQorCisjaWYgX19jcGx1c3BsdXMKK30gIC8vIGV4dGVybiAiQyIKKyNlbmRpZgorCisKKyNlbmRpZiAvKkFORFJPSURfRUZGRUNUVklTVUFMSVpFUkFQSV9IXyovCmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL0VmZmVjdHNGYWN0b3J5QXBpLmggYi9pbmNsdWRlL21lZGlhL0VmZmVjdHNGYWN0b3J5QXBpLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGVkMWExNAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvbWVkaWEvRWZmZWN0c0ZhY3RvcnlBcGkuaApAQCAtMCwwICsxLDIyMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgQU5EUk9JRF9FRkZFQ1RTRkFDVE9SWUFQSV9IXworI2RlZmluZSBBTkRST0lEX0VGRkVDVFNGQUNUT1JZQVBJX0hfCisKKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPG1lZGlhL0VmZmVjdEFwaS5oPgorCisjaWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vICAgICAgRWZmZWN0IGZhY3RvcnkgaW50ZXJmYWNlCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gICAgRnVuY3Rpb246ICAgICAgIEVmZmVjdFF1ZXJ5TnVtYmVyRWZmZWN0cworLy8KKy8vICAgIERlc2NyaXB0aW9uOiAgICBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZGlmZmVyZW50IGVmZmVjdHMgaW4gYWxsIGxvYWRlZCBsaWJyYXJpZXMuCisvLyAgICAgICAgICBFYWNoIGVmZmVjdCBtdXN0IGhhdmUgYSBkaWZmZXJlbnQgZWZmZWN0IHV1aWQgKHNlZQorLy8gICAgICAgICAgZWZmZWN0X2Rlc2NyaXB0b3JfdCkuIFRoaXMgZnVuY3Rpb24gdG9nZXRoZXIgd2l0aCBFZmZlY3RRdWVyeUVmZmVjdCgpCisvLyAgICAgICAgICBpcyB1c2VkIHRvIGVudW1lcmF0ZSBhbGwgZWZmZWN0cyBwcmVzZW50IGluIGFsbCBsb2FkZWQgbGlicmFyaWVzLgorLy8gICAgICAgICAgRWFjaCB0aW1lIEVmZmVjdFF1ZXJ5TnVtYmVyRWZmZWN0cygpIGlzIGNhbGxlZCwgdGhlIGZhY3RvcnkgbXVzdAorLy8gICAgICAgICAgcmVzZXQgdGhlIGluZGV4IG9mIHRoZSBlZmZlY3QgZGVzY3JpcHRvciByZXR1cm5lZCBieSBuZXh0IGNhbGwgdG8KKy8vICAgICAgICAgIEVmZmVjdFF1ZXJ5RWZmZWN0KCkgdG8gcmVzdGFydCBlbnVtZXJhdGlvbiBmcm9tIHRoZSBiZWdpbm5pbmcuCisvLworLy8gICAgSW5wdXQvT3V0cHV0OgorLy8gICAgICAgICAgcE51bUVmZmVjdHM6ICAgIGFkZHJlc3Mgd2hlcmUgdGhlIG51bWJlciBvZiBlZmZlY3RzIHNob3VsZCBiZSByZXR1cm5lZC4KKy8vCisvLyAgICBPdXRwdXQ6CisvLyAgICAgICAgcmV0dXJuZWQgdmFsdWU6ICAgIDAgICAgICAgICAgc3VjY2Vzc2Z1bCBvcGVyYXRpb24uCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgLUVOT0RFViAgICAgZmFjdG9yeSBmYWlsZWQgdG8gaW5pdGlhbGl6ZQorLy8gICAgICAgICAgICAgICAgICAgICAgICAgIC1FSU5WQUwgICAgIGludmFsaWQgcE51bUVmZmVjdHMKKy8vICAgICAgICAqcE51bUVmZmVjdHM6ICAgICB1cGRhdGVkIHdpdGggbnVtYmVyIG9mIGVmZmVjdHMgaW4gZmFjdG9yeQorLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCitpbnQgRWZmZWN0UXVlcnlOdW1iZXJFZmZlY3RzKHVpbnQzMl90ICpwTnVtRWZmZWN0cyk7CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gICAgRnVuY3Rpb246ICAgICAgIEVmZmVjdFF1ZXJ5RWZmZWN0CisvLworLy8gICAgRGVzY3JpcHRpb246ICAgIFJldHVybnMgYSBkZXNjcmlwdG9yIG9mIHRoZSBuZXh0IGF2YWlsYWJsZSBlZmZlY3QuCisvLyAgICAgICAgICBTZWUgZWZmZWN0X2Rlc2NyaXB0b3JfdCBmb3IgYSBkZXRhaWxzIG9uIGVmZmVjdCBkZXNjcmlwdG9yLgorLy8gICAgICAgICAgVGhpcyBmdW5jdGlvbiB0b2dldGhlciB3aXRoIEVmZmVjdFF1ZXJ5TnVtYmVyRWZmZWN0cygpIGlzIHVzZWQgdG8gZW51bWVyYXRlIGFsbAorLy8gICAgICAgICAgZWZmZWN0cyBwcmVzZW50IGluIGFsbCBsb2FkZWQgbGlicmFyaWVzLiBUaGUgZW51bWVyYXRpb24gc2VxdWVuY2UgaXM6CisvLyAgICAgICAgICAgICAgRWZmZWN0UXVlcnlOdW1iZXJFZmZlY3RzKCZudW1fZWZmZWN0cyk7CisvLyAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG51bV9lZmZlY3RzOyBpKyspCisvLyAgICAgICAgICAgICAgICAgIEVmZmVjdFF1ZXJ5RWZmZWN0KGksLi4uKTsKKy8vCisvLyAgICBJbnB1dC9PdXRwdXQ6CisvLyAgICAgICAgICBwRGVzY3JpcHRvcjogICAgYWRkcmVzcyB3aGVyZSB0byByZXR1cm4gdGhlIGVmZmVjdCBkZXNjcmlwdG9yLgorLy8KKy8vICAgIE91dHB1dDoKKy8vICAgICAgICByZXR1cm5lZCB2YWx1ZTogICAgMCAgICAgICAgICBzdWNjZXNzZnVsIG9wZXJhdGlvbi4KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAtRU5PRU5UICAgICBubyBtb3JlIGVmZmVjdCBhdmFpbGFibGUKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAtRU5PREVWICAgICBmYWN0b3J5IGZhaWxlZCB0byBpbml0aWFsaXplCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgLUVJTlZBTCAgICAgaW52YWxpZCBwRGVzY3JpcHRvcgorLy8gICAgICAgICAgICAgICAgICAgICAgICAgIC1FTk9TWVMgICAgIGVmZmVjdCBsaXN0IGhhcyBjaGFuZ2VkIHNpbmNlIGxhc3QgZXhlY3V0aW9uIG9mIEVmZmVjdFF1ZXJ5TnVtYmVyRWZmZWN0cygpCisvLyAgICAgICAgKnBEZXNjcmlwdG9yOiAgICAgdXBkYXRlZCB3aXRoIHRoZSBlZmZlY3QgZGVzY3JpcHRvci4KKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworaW50IEVmZmVjdFF1ZXJ5RWZmZWN0KHVpbnQzMl90IGluZGV4LCBlZmZlY3RfZGVzY3JpcHRvcl90ICpwRGVzY3JpcHRvcik7CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gICAgRnVuY3Rpb246ICAgICAgIEVmZmVjdENyZWF0ZQorLy8KKy8vICAgIERlc2NyaXB0aW9uOiAgICBDcmVhdGVzIGFuIGVmZmVjdCBlbmdpbmUgb2YgdGhlIHNwZWNpZmllZCB0eXBlIGFuZCByZXR1cm5zIGFuCisvLyAgICAgICAgICBlZmZlY3QgY29udHJvbCBpbnRlcmZhY2Ugb24gdGhpcyBlbmdpbmUuIFRoZSBmdW5jdGlvbiB3aWxsIGFsbG9jYXRlIHRoZQorLy8gICAgICAgICAgcmVzb3VyY2VzIGZvciBhbiBpbnN0YW5jZSBvZiB0aGUgcmVxdWVzdGVkIGVmZmVjdCBlbmdpbmUgYW5kIHJldHVybgorLy8gICAgICAgICAgYSBoYW5kbGVyIG9uIHRoZSBlZmZlY3QgY29udHJvbCBpbnRlcmZhY2UuCisvLworLy8gICAgSW5wdXQ6CisvLyAgICAgICAgICBwRWZmZWN0VXVpZDogICAgcG9pbnRlciB0byB0aGUgZWZmZWN0IHV1aWQuCisvLyAgICAgICAgICBzZXNzaW9uSWQ6ICBhdWRpbyBzZXNzaW9uIHRvIHdoaWNoIHRoaXMgZWZmZWN0IGluc3RhbmNlIHdpbGwgYmUgYXR0YWNoZWQuIEFsbCBlZmZlY3RzIGNyZWF0ZWQKKy8vICAgICAgICAgICAgICB3aXRoIHRoZSBzYW1lIHNlc3Npb24gSUQgYXJlIGNvbm5lY3RlZCBpbiBzZXJpZXMgYW5kIHByb2Nlc3MgdGhlIHNhbWUgc2lnbmFsIHN0cmVhbS4KKy8vICAgICAgICAgICAgICBLbm93aW5nIHRoYXQgdHdvIGVmZmVjdHMgYXJlIHBhcnQgb2YgdGhlIHNhbWUgZWZmZWN0IGNoYWluIGNhbiBoZWxwIHRoZSBsaWJyYXJ5IGltcGxlbWVudAorLy8gICAgICAgICAgICAgIHNvbWUga2luZCBvZiBvcHRpbWl6YXRpb25zLgorLy8gICAgICAgICAgaW9JZDogICBpZGVudGlmaWVzIHRoZSBvdXRwdXQgb3IgaW5wdXQgc3RyZWFtIHRoaXMgZWZmZWN0IGlzIGRpcmVjdGVkIHRvIGF0IGF1ZGlvIEhBTC4gRm9yIGZ1dHVyZQorLy8gICAgICAgICAgICAgIHVzZSBlc3BlY2lhbGx5IHdpdGggdHVubmVsZWQgSFcgYWNjZWxlcmF0ZWQgZWZmZWN0cworLy8KKy8vICAgIElucHV0L091dHB1dDoKKy8vICAgICAgICAgIHBJbnRlcmZhY2U6ICAgIGFkZHJlc3Mgd2hlcmUgdG8gcmV0dXJuIHRoZSBlZmZlY3QgaW50ZXJmYWNlLgorLy8KKy8vICAgIE91dHB1dDoKKy8vICAgICAgICByZXR1cm5lZCB2YWx1ZTogICAgMCAgICAgICAgICBzdWNjZXNzZnVsIG9wZXJhdGlvbi4KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAtRU5PREVWICAgICBmYWN0b3J5IGZhaWxlZCB0byBpbml0aWFsaXplCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgLUVJTlZBTCAgICAgaW52YWxpZCBwRWZmZWN0VXVpZCBvciBwSW50ZXJmYWNlCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgLUVOT0VOVCAgICAgbm8gZWZmZWN0IHdpdGggdGhpcyB1dWlkIGZvdW5kCisvLyAgICAgICAgKnBJbnRlcmZhY2U6ICAgICB1cGRhdGVkIHdpdGggdGhlIGVmZmVjdCBpbnRlcmZhY2UuCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK2ludCBFZmZlY3RDcmVhdGUoZWZmZWN0X3V1aWRfdCAqcEVmZmVjdFV1aWQsIGludDMyX3Qgc2Vzc2lvbklkLCBpbnQzMl90IGlvSWQsIGVmZmVjdF9pbnRlcmZhY2VfdCAqcEludGVyZmFjZSk7CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gICAgRnVuY3Rpb246ICAgICAgIEVmZmVjdFJlbGVhc2UKKy8vCisvLyAgICBEZXNjcmlwdGlvbjogICAgUmVsZWFzZXMgdGhlIGVmZmVjdCBlbmdpbmUgd2hvc2UgaGFuZGxlciBpcyBnaXZlbiBhcyBhcmd1bWVudC4KKy8vICAgICAgICAgIEFsbCByZXNvdXJjZXMgYWxsb2NhdGVkIHRvIHRoaXMgcGFydGljdWxhciBpbnN0YW5jZSBvZiB0aGUgZWZmZWN0IGFyZQorLy8gICAgICAgICAgcmVsZWFzZWQuCisvLworLy8gICAgSW5wdXQ6CisvLyAgICAgICAgICBpbnRlcmZhY2U6ICAgIGhhbmRsZXIgb24gdGhlIGVmZmVjdCBpbnRlcmZhY2UgdG8gYmUgcmVsZWFzZWQuCisvLworLy8gICAgT3V0cHV0OgorLy8gICAgICAgIHJldHVybmVkIHZhbHVlOiAgICAwICAgICAgICAgIHN1Y2Nlc3NmdWwgb3BlcmF0aW9uLgorLy8gICAgICAgICAgICAgICAgICAgICAgICAgIC1FTk9ERVYgICAgIGZhY3RvcnkgZmFpbGVkIHRvIGluaXRpYWxpemUKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAtRUlOVkFMICAgICBpbnZhbGlkIGludGVyZmFjZSBoYW5kbGVyCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK2ludCBFZmZlY3RSZWxlYXNlKGVmZmVjdF9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpOworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vICAgIEZ1bmN0aW9uOiAgICAgICBFZmZlY3RMb2FkTGlicmFyeQorLy8KKy8vICAgIERlc2NyaXB0aW9uOiAgICBMb2FkcyB0aGUgZWZmZWN0IGxpYnJhcnkgd2hpY2ggcGF0aCBpcyBnaXZlbiBhcyBmaXJzdCBhcmd1bWVudC4KKy8vICAgICAgICAgIFRoaXMgbXVzdCBiZSB0aGUgZnVsbCBwYXRoIG9mIGEgZHluYW1pYyBsaWJyYXJ5ICguc28pIGltcGxlbWVudGluZyBvbmUgb3IKKy8vICAgICAgICAgIG1vcmUgZWZmZWN0IGVuZ2luZXMgYW5kIGV4cG9zaW5nIHRoZSBlZmZlY3QgbGlicmFyeSBpbnRlcmZhY2UgZGVzY3JpYmVkIGluCisvLyAgICAgICAgICBFZmZlY3RBcGkuaC4gVGhlIGZ1bmN0aW9uIHJldHVybnMgYSBoYW5kbGUgb24gdGhlIGxpYnJhcnkgZm9yIHVzZWQgYnkKKy8vICAgICAgICAgIGZ1cnRoZXIgY2FsbCB0byBFZmZlY3RVbmxvYWRMaWJyYXJ5KCkgdG8gdW5sb2FkIHRoZSBsaWJyYXJ5LgorLy8KKy8vICAgIElucHV0OgorLy8gICAgICAgICAgbGliUGF0aDogICAgZnVsbCBwYXRoIG9mIHRoZSBkeW5hbWljIGxpYnJhcnkgZmlsZSBpbiB0aGUgZmlsZSBzeXN0ZW0uCisvLworLy8gICAgICAgICAgaGFuZGxlOiAgICAgYWRkcmVzcyB3aGVyZSB0byByZXR1cm4gdGhlIGxpYnJhcnkgaGFuZGxlCisvLworLy8gICAgT3V0cHV0OgorLy8gICAgICAgIHJldHVybmVkIHZhbHVlOiAgICAwICAgICAgICAgIHN1Y2Nlc3NmdWwgb3BlcmF0aW9uLgorLy8gICAgICAgICAgICAgICAgICAgICAgICAgIC1FTk9ERVYgICAgIGVmZmVjdCBmYWN0b3J5IG5vdCBpbml0aWFsaXplZCBvcgorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnkgY291bGQgbm90IGJlIGxvYWRlZCBvcgorLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnkgZG9lcyBub3QgaW1wbGVtZW50IHJlcXVpcmVkIGZ1bmN0aW9ucworLy8gICAgICAgICAgICAgICAgICAgICAgICAgIC1FSU5WQUwgICAgIGludmFsaWQgbGliUGF0aCBzdHJpbmcgb3IgaGFuZGxlCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK2ludCBFZmZlY3RMb2FkTGlicmFyeShjb25zdCBjaGFyICpsaWJQYXRoLCBpbnQgKmhhbmRsZSk7CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLworLy8gICAgRnVuY3Rpb246ICAgICAgIEVmZmVjdFVubG9hZExpYnJhcnkKKy8vCisvLyAgICBEZXNjcmlwdGlvbjogIFVubG9hZHMgdGhlIGVmZmVjdCBsaWJyYXJ5IHdoaWNoIGhhbmRsZSBpcyBnaXZlbiBhcyBhcmd1bWVudC4KKy8vCisvLyAgICBJbnB1dDoKKy8vICAgICAgICAgIGhhbmRsZTogbGlicmFyeSBoYW5kbGUKKy8vCisvLyAgICBPdXRwdXQ6CisvLyAgICAgICAgcmV0dXJuZWQgdmFsdWU6ICAgIDAgICAgICAgICAgc3VjY2Vzc2Z1bCBvcGVyYXRpb24uCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgLUVOT0RFViAgICAgZWZmZWN0IGZhY3Rvcnkgbm90IGluaXRpYWxpemVkCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgLUVOT0VOVCAgICAgaW52YWxpZCBoYW5kbGUKKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworaW50IEVmZmVjdFVubG9hZExpYnJhcnkoaW50IGhhbmRsZSk7CisKKworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vICAgIEZ1bmN0aW9uOiAgICAgICBFZmZlY3RHZXREZXNjcmlwdG9yCisvLworLy8gICAgRGVzY3JpcHRpb246ICAgIFJldHVybnMgdGhlIGRlc2NyaXB0b3Igb2YgdGhlIGVmZmVjdCB3aGljaCB1dWlkIGlzIHBvaW50ZWQKKy8vICAgICAgICAgIHRvIGJ5IGZpcnN0IGFyZ3VtZW50LgorLy8KKy8vICAgIElucHV0OgorLy8gICAgICAgICAgcEVmZmVjdFV1aWQ6ICAgIHBvaW50ZXIgdG8gdGhlIGVmZmVjdCB1dWlkLgorLy8KKy8vICAgIElucHV0L091dHB1dDoKKy8vICAgICAgICAgIHBEZXNjcmlwdG9yOiAgICBhZGRyZXNzIHdoZXJlIHRvIHJldHVybiB0aGUgZWZmZWN0IGRlc2NyaXB0b3IuCisvLworLy8gICAgT3V0cHV0OgorLy8gICAgICAgIHJldHVybmVkIHZhbHVlOiAgICAwICAgICAgICAgIHN1Y2Nlc3NmdWwgb3BlcmF0aW9uLgorLy8gICAgICAgICAgICAgICAgICAgICAgICAgIC1FTk9ERVYgICAgIGZhY3RvcnkgZmFpbGVkIHRvIGluaXRpYWxpemUKKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAtRUlOVkFMICAgICBpbnZhbGlkIHBFZmZlY3RVdWlkIG9yIHBEZXNjcmlwdG9yCisvLyAgICAgICAgICAgICAgICAgICAgICAgICAgLUVOT0VOVCAgICAgbm8gZWZmZWN0IHdpdGggdGhpcyB1dWlkIGZvdW5kCisvLyAgICAgICAgKnBEZXNjcmlwdG9yOiAgICAgdXBkYXRlZCB3aXRoIHRoZSBlZmZlY3QgZGVzY3JpcHRvci4KKy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworaW50IEVmZmVjdEdldERlc2NyaXB0b3IoZWZmZWN0X3V1aWRfdCAqcEVmZmVjdFV1aWQsIGVmZmVjdF9kZXNjcmlwdG9yX3QgKnBEZXNjcmlwdG9yKTsKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vCisvLyAgICBGdW5jdGlvbjogICAgICAgRWZmZWN0SXNOdWxsVXVpZAorLy8KKy8vICAgIERlc2NyaXB0aW9uOiAgICBIZWxwZXIgZnVuY3Rpb24gdG8gY29tcGFyZSBlZmZlY3QgdXVpZCB0byBFRkZFQ1RfVVVJRF9OVUxMCisvLworLy8gICAgSW5wdXQ6CisvLyAgICAgICAgICBwRWZmZWN0VXVpZDogcG9pbnRlciB0byBlZmZlY3QgdXVpZCB0byBjb21wYXJlIHRvIEVGRkVDVF9VVUlEX05VTEwuCisvLworLy8gICAgT3V0cHV0OgorLy8gICAgICAgIHJldHVybmVkIHZhbHVlOiAgICAwIGlmIHV1aWQgaXMgZGlmZmVyZW50IGZyb20gRUZGRUNUX1VVSURfTlVMTC4KKy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgMSBpZiB1dWlkIGlzIGVxdWFsIHRvIEVGRkVDVF9VVUlEX05VTEwuCisvLworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KK2ludCBFZmZlY3RJc051bGxVdWlkKGVmZmVjdF91dWlkX3QgKnBFZmZlY3RVdWlkKTsKKworI2lmIF9fY3BsdXNwbHVzCit9ICAvLyBleHRlcm4gIkMiCisjZW5kaWYKKworCisjZW5kaWYgLypBTkRST0lEX0VGRkVDVFNGQUNUT1JZQVBJX0hfKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvSUF1ZGlvRmxpbmdlci5oIGIvaW5jbHVkZS9tZWRpYS9JQXVkaW9GbGluZ2VyLmgKaW5kZXggYzE0NzYzMi4uNTgxNGZkNiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9tZWRpYS9JQXVkaW9GbGluZ2VyLmgKKysrIGIvaW5jbHVkZS9tZWRpYS9JQXVkaW9GbGluZ2VyLmgKQEAgLTI3LDYgKzI3LDkgQEAKICNpbmNsdWRlIDxtZWRpYS9JQXVkaW9UcmFjay5oPgogI2luY2x1ZGUgPG1lZGlhL0lBdWRpb1JlY29yZC5oPgogI2luY2x1ZGUgPG1lZGlhL0lBdWRpb0ZsaW5nZXJDbGllbnQuaD4KKyNpbmNsdWRlIDxtZWRpYS9FZmZlY3RBcGkuaD4KKyNpbmNsdWRlIDxtZWRpYS9JRWZmZWN0Lmg+CisjaW5jbHVkZSA8bWVkaWEvSUVmZmVjdENsaWVudC5oPgogI2luY2x1ZGUgPHV0aWxzL1N0cmluZzguaD4KIAogbmFtZXNwYWNlIGFuZHJvaWQgewpAQCAtNTEsNiArNTQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBmbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3A8SU1lbW9yeT4mIHNoYXJlZEJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpzZXNzaW9uSWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c190ICpzdGF0dXMpID0gMDsKIAogICAgIHZpcnR1YWwgc3A8SUF1ZGlvUmVjb3JkPiBvcGVuUmVjb3JkKApAQCAtNjEsNiArNjUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2hhbm5lbENvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZnJhbWVDb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqc2Vzc2lvbklkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNfdCAqc3RhdHVzKSA9IDA7CiAKICAgICAvKiBxdWVyeSB0aGUgYXVkaW8gaGFyZHdhcmUgc3RhdGUuIFRoaXMgc3RhdGUgbmV2ZXIgY2hhbmdlcywKQEAgLTEzNCw2ICsxMzksMjggQEAKICAgICB2aXJ0dWFsIHN0YXR1c190IGdldFJlbmRlclBvc2l0aW9uKHVpbnQzMl90ICpoYWxGcmFtZXMsIHVpbnQzMl90ICpkc3BGcmFtZXMsIGludCBvdXRwdXQpID0gMDsKIAogICAgIHZpcnR1YWwgdW5zaWduZWQgaW50ICBnZXRJbnB1dEZyYW1lc0xvc3QoaW50IGlvSGFuZGxlKSA9IDA7CisKKyAgICB2aXJ0dWFsIGludCBuZXdBdWRpb1Nlc3Npb25JZCgpID0gMDsKKworICAgIHZpcnR1YWwgc3RhdHVzX3QgbG9hZEVmZmVjdExpYnJhcnkoY29uc3QgY2hhciAqbGliUGF0aCwgaW50ICpoYW5kbGUpID0gMDsKKworICAgIHZpcnR1YWwgc3RhdHVzX3QgdW5sb2FkRWZmZWN0TGlicmFyeShpbnQgaGFuZGxlKSA9IDA7CisKKyAgICB2aXJ0dWFsIHN0YXR1c190IHF1ZXJ5TnVtYmVyRWZmZWN0cyh1aW50MzJfdCAqbnVtRWZmZWN0cykgPSAwOworCisgICAgdmlydHVhbCBzdGF0dXNfdCBxdWVyeUVmZmVjdCh1aW50MzJfdCBpbmRleCwgZWZmZWN0X2Rlc2NyaXB0b3JfdCAqcERlc2NyaXB0b3IpID0gMDsKKworICAgIHZpcnR1YWwgc3RhdHVzX3QgZ2V0RWZmZWN0RGVzY3JpcHRvcihlZmZlY3RfdXVpZF90ICpwRWZmZWN0VVVJRCwgZWZmZWN0X2Rlc2NyaXB0b3JfdCAqcERlc2NyaXB0b3IpID0gMDsKKworICAgIHZpcnR1YWwgc3A8SUVmZmVjdD4gY3JlYXRlRWZmZWN0KHBpZF90IHBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVmZmVjdF9kZXNjcmlwdG9yX3QgKnBEZXNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3A8SUVmZmVjdENsaWVudD4mIGNsaWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgcHJpb3JpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNlc3Npb25JZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1c190ICpzdGF0dXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICplbmFibGVkKSA9IDA7CiB9OwogCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvSUF1ZGlvVHJhY2suaCBiL2luY2x1ZGUvbWVkaWEvSUF1ZGlvVHJhY2suaAppbmRleCBkZTY0MjZhLi40N2Q1MzBiIDEwMDY0NAotLS0gYS9pbmNsdWRlL21lZGlhL0lBdWRpb1RyYWNrLmgKKysrIGIvaW5jbHVkZS9tZWRpYS9JQXVkaW9UcmFjay5oCkBAIC02Miw2ICs2MiwxMSBAQAogICAgICAqLwogICAgIHZpcnR1YWwgdm9pZCAgICAgICAgcGF1c2UoKSA9IDA7CiAKKyAgICAvKiBBdHRhY2ggdHJhY2sgYXV4aWxpYXJ5IG91dHB1dCB0byBzcGVjaWZpZWQgZWZmZWN0LiBVc2UgZWZmZWN0SWQgPSAwCisgICAgICogdG8gZGV0YWNoIHRyYWNrIGZyb20gZWZmZWN0LgorICAgICAqLworICAgIHZpcnR1YWwgc3RhdHVzX3QgICAgYXR0YWNoQXV4RWZmZWN0KGludCBlZmZlY3RJZCkgPSAwOworCiAgICAgLyogZ2V0IHRoaXMgdHJhY2tzIGNvbnRyb2wgYmxvY2sgKi8KICAgICB2aXJ0dWFsIHNwPElNZW1vcnk+IGdldENibGsoKSBjb25zdCA9IDA7ICAgIAogfTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvSUVmZmVjdC5oIGIvaW5jbHVkZS9tZWRpYS9JRWZmZWN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmRhZDM5MwotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvbWVkaWEvSUVmZmVjdC5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIEFORFJPSURfSUVGRkVDVF9ICisjZGVmaW5lIEFORFJPSURfSUVGRkVDVF9ICisKKyNpbmNsdWRlIDx1dGlscy9SZWZCYXNlLmg+CisjaW5jbHVkZSA8YmluZGVyL0lJbnRlcmZhY2UuaD4KKyNpbmNsdWRlIDxiaW5kZXIvUGFyY2VsLmg+CisjaW5jbHVkZSA8YmluZGVyL0lNZW1vcnkuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitjbGFzcyBJRWZmZWN0OiBwdWJsaWMgSUludGVyZmFjZQoreworcHVibGljOgorICAgIERFQ0xBUkVfTUVUQV9JTlRFUkZBQ0UoRWZmZWN0KTsKKworICAgIHZpcnR1YWwgc3RhdHVzX3QgZW5hYmxlKCkgPSAwOworCisgICAgdmlydHVhbCBzdGF0dXNfdCBkaXNhYmxlKCkgPSAwOworCisgICAgdmlydHVhbCBzdGF0dXNfdCBjb21tYW5kKGludCBjbWRDb2RlLCBpbnQgY21kU2l6ZSwgdm9pZCAqcENtZERhdGEsIGludCAqcFJlcGx5U2l6ZSwgdm9pZCAqcFJlcGx5RGF0YSkgPSAwOworCisgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3QoKSA9IDA7CisKKyAgICB2aXJ0dWFsIHNwPElNZW1vcnk+IGdldENibGsoKSBjb25zdCA9IDA7Cit9OworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NsYXNzIEJuRWZmZWN0OiBwdWJsaWMgQm5JbnRlcmZhY2U8SUVmZmVjdD4KK3sKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHN0YXR1c190ICAgIG9uVHJhbnNhY3QoIHVpbnQzMl90IGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQYXJjZWwmIGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXJjZWwqIHJlcGx5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZmxhZ3MgPSAwKTsKK307CisKK307IC8vIG5hbWVzcGFjZSBhbmRyb2lkCisKKyNlbmRpZiAvLyBBTkRST0lEX0lFRkZFQ1RfSApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9tZWRpYS9JRWZmZWN0Q2xpZW50LmggYi9pbmNsdWRlL21lZGlhL0lFZmZlY3RDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMjJkYWY4Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9tZWRpYS9JRWZmZWN0Q2xpZW50LmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgQU5EUk9JRF9JRUZGRUNUQ0xJRU5UX0gKKyNkZWZpbmUgQU5EUk9JRF9JRUZGRUNUQ0xJRU5UX0gKKworI2luY2x1ZGUgPHV0aWxzL1JlZkJhc2UuaD4KKyNpbmNsdWRlIDxiaW5kZXIvSUludGVyZmFjZS5oPgorI2luY2x1ZGUgPGJpbmRlci9QYXJjZWwuaD4KKyNpbmNsdWRlIDxiaW5kZXIvSU1lbW9yeS5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK2NsYXNzIElFZmZlY3RDbGllbnQ6IHB1YmxpYyBJSW50ZXJmYWNlCit7CitwdWJsaWM6CisgICAgREVDTEFSRV9NRVRBX0lOVEVSRkFDRShFZmZlY3RDbGllbnQpOworCisgICAgdmlydHVhbCB2b2lkIGNvbnRyb2xTdGF0dXNDaGFuZ2VkKGJvb2wgY29udHJvbEdyYW50ZWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlU3RhdHVzQ2hhbmdlZChib29sIGVuYWJsZWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY29tbWFuZEV4ZWN1dGVkKGludCBjbWRDb2RlLCBpbnQgY21kU2l6ZSwgdm9pZCAqcENtZERhdGEsIGludCByZXBseVNpemUsIHZvaWQgKnBSZXBseURhdGEpID0gMDsKK307CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3MgQm5FZmZlY3RDbGllbnQ6IHB1YmxpYyBCbkludGVyZmFjZTxJRWZmZWN0Q2xpZW50PgoreworcHVibGljOgorICAgIHZpcnR1YWwgc3RhdHVzX3QgICAgb25UcmFuc2FjdCggdWludDMyX3QgY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBhcmNlbCYgZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcmNlbCogcmVwbHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBmbGFncyA9IDApOworfTsKKworfTsgLy8gbmFtZXNwYWNlIGFuZHJvaWQKKworI2VuZGlmIC8vIEFORFJPSURfSUVGRkVDVENMSUVOVF9ICmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL0lNZWRpYVBsYXllclNlcnZpY2UuaCBiL2luY2x1ZGUvbWVkaWEvSU1lZGlhUGxheWVyU2VydmljZS5oCmluZGV4IDMxYzA5OTEuLjk0MTZjYTEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbWVkaWEvSU1lZGlhUGxheWVyU2VydmljZS5oCisrKyBiL2luY2x1ZGUvbWVkaWEvSU1lZGlhUGxheWVyU2VydmljZS5oCkBAIC00MCwxNSArNDAsMTQgQEAKIAogICAgIHZpcnR1YWwgc3A8SU1lZGlhUmVjb3JkZXI+ICBjcmVhdGVNZWRpYVJlY29yZGVyKHBpZF90IHBpZCkgPSAwOwogICAgIHZpcnR1YWwgc3A8SU1lZGlhTWV0YWRhdGFSZXRyaWV2ZXI+IGNyZWF0ZU1ldGFkYXRhUmV0cmlldmVyKHBpZF90IHBpZCkgPSAwOwotICAgIHZpcnR1YWwgc3A8SU1lZGlhUGxheWVyPiAgICBjcmVhdGUocGlkX3QgcGlkLCBjb25zdCBzcDxJTWVkaWFQbGF5ZXJDbGllbnQ+JiBjbGllbnQsIGNvbnN0IGNoYXIqIHVybCwgY29uc3QgS2V5ZWRWZWN0b3I8U3RyaW5nOCwgU3RyaW5nOD4gKmhlYWRlcnMgPSBOVUxMKSA9IDA7Ci0gICAgdmlydHVhbCBzcDxJTWVkaWFQbGF5ZXI+ICAgIGNyZWF0ZShwaWRfdCBwaWQsIGNvbnN0IHNwPElNZWRpYVBsYXllckNsaWVudD4mIGNsaWVudCwgaW50IGZkLCBpbnQ2NF90IG9mZnNldCwgaW50NjRfdCBsZW5ndGgpID0gMDsKKyAgICB2aXJ0dWFsIHNwPElNZWRpYVBsYXllcj4gY3JlYXRlKHBpZF90IHBpZCwgY29uc3Qgc3A8SU1lZGlhUGxheWVyQ2xpZW50PiYgY2xpZW50LAorICAgICAgICAgICAgY29uc3QgY2hhciogdXJsLCBjb25zdCBLZXllZFZlY3RvcjxTdHJpbmc4LCBTdHJpbmc4PiAqaGVhZGVycyA9IE5VTEwsCisgICAgICAgICAgICBpbnQgYXVkaW9TZXNzaW9uSWQgPSAwKSA9IDA7CisgICAgdmlydHVhbCBzcDxJTWVkaWFQbGF5ZXI+IGNyZWF0ZShwaWRfdCBwaWQsIGNvbnN0IHNwPElNZWRpYVBsYXllckNsaWVudD4mIGNsaWVudCwKKyAgICAgICAgICAgIGludCBmZCwgaW50NjRfdCBvZmZzZXQsIGludDY0X3QgbGVuZ3RoLCBpbnQgYXVkaW9TZXNzaW9uSWQpID0gMDsKICAgICB2aXJ0dWFsIHNwPElNZW1vcnk+ICAgICAgICAgZGVjb2RlKGNvbnN0IGNoYXIqIHVybCwgdWludDMyX3QgKnBTYW1wbGVSYXRlLCBpbnQqIHBOdW1DaGFubmVscywgaW50KiBwRm9ybWF0KSA9IDA7CiAgICAgdmlydHVhbCBzcDxJTWVtb3J5PiAgICAgICAgIGRlY29kZShpbnQgZmQsIGludDY0X3Qgb2Zmc2V0LCBpbnQ2NF90IGxlbmd0aCwgdWludDMyX3QgKnBTYW1wbGVSYXRlLCBpbnQqIHBOdW1DaGFubmVscywgaW50KiBwRm9ybWF0KSA9IDA7CiAgICAgdmlydHVhbCBzcDxJT01YPiAgICAgICAgICAgIGdldE9NWCgpID0gMDsKLQotICAgIC8vIFRha2UgYSBwZWVrIGF0IGN1cnJlbnRseSBwbGF5aW5nIGF1ZGlvLCBmb3IgdmlzdWFsaXphdGlvbiBwdXJwb3Nlcy4KLSAgICAvLyBUaGlzIHJldHVybnMgYSBidWZmZXIgb2YgMTYgYml0IG1vbm8gUENNIGRhdGEsIG9yIE5VTEwgaWYgbm8gdmlzdWFsaXphdGlvbiBidWZmZXIgaXMgY3VycmVudGx5IGF2YWlsYWJsZS4KLSAgICB2aXJ0dWFsIHNwPElNZW1vcnk+ICAgICAgICAgc25vb3AoKSA9IDA7CiB9OwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL0lNZWRpYVJlY29yZGVyLmggYi9pbmNsdWRlL21lZGlhL0lNZWRpYVJlY29yZGVyLmgKaW5kZXggMjRhYzgyYi4uY2ZjMTdhNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9tZWRpYS9JTWVkaWFSZWNvcmRlci5oCisrKyBiL2luY2x1ZGUvbWVkaWEvSU1lZGlhUmVjb3JkZXIuaApAQCAtMjQsNyArMjQsNyBAQAogCiBjbGFzcyBJU3VyZmFjZTsKIGNsYXNzIElDYW1lcmE7Ci1jbGFzcyBJTWVkaWFQbGF5ZXJDbGllbnQ7CitjbGFzcyBJTWVkaWFSZWNvcmRlckNsaWVudDsKIAogY2xhc3MgSU1lZGlhUmVjb3JkZXI6IHB1YmxpYyBJSW50ZXJmYWNlCiB7CkBAIC00Myw3ICs0Myw3IEBACiAgICAgdmlydHVhbAlzdGF0dXNfdAkJc2V0VmlkZW9TaXplKGludCB3aWR0aCwgaW50IGhlaWdodCkgPSAwOwogICAgIHZpcnR1YWwJc3RhdHVzX3QJCXNldFZpZGVvRnJhbWVSYXRlKGludCBmcmFtZXNfcGVyX3NlY29uZCkgPSAwOwogICAgIHZpcnR1YWwgICAgIHN0YXR1c190ICAgICAgICAgICAgICAgIHNldFBhcmFtZXRlcnMoY29uc3QgU3RyaW5nOCYgcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCAgICAgc3RhdHVzX3QgICAgICAgICAgICAgICAgc2V0TGlzdGVuZXIoY29uc3Qgc3A8SU1lZGlhUGxheWVyQ2xpZW50PiYgbGlzdGVuZXIpID0gMDsKKyAgICB2aXJ0dWFsICAgICBzdGF0dXNfdCAgICAgICAgICAgICAgICBzZXRMaXN0ZW5lcihjb25zdCBzcDxJTWVkaWFSZWNvcmRlckNsaWVudD4mIGxpc3RlbmVyKSA9IDA7CiAgICAgdmlydHVhbAlzdGF0dXNfdAkJcHJlcGFyZSgpID0gMDsKICAgICB2aXJ0dWFsCXN0YXR1c190CQlnZXRNYXhBbXBsaXR1ZGUoaW50KiBtYXgpID0gMDsKICAgICB2aXJ0dWFsCXN0YXR1c190CQlzdGFydCgpID0gMDsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvSU1lZGlhUmVjb3JkZXJDbGllbnQuaCBiL2luY2x1ZGUvbWVkaWEvSU1lZGlhUmVjb3JkZXJDbGllbnQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDU4ZWYyCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9tZWRpYS9JTWVkaWFSZWNvcmRlckNsaWVudC5oCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIEFORFJPSURfSU1FRElBUkVDT1JERVJDTElFTlRfSAorI2RlZmluZSBBTkRST0lEX0lNRURJQVJFQ09SREVSQ0xJRU5UX0gKKworI2luY2x1ZGUgPHV0aWxzL1JlZkJhc2UuaD4KKyNpbmNsdWRlIDxiaW5kZXIvSUludGVyZmFjZS5oPgorI2luY2x1ZGUgPGJpbmRlci9QYXJjZWwuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitjbGFzcyBJTWVkaWFSZWNvcmRlckNsaWVudDogcHVibGljIElJbnRlcmZhY2UKK3sKK3B1YmxpYzoKKyAgICBERUNMQVJFX01FVEFfSU5URVJGQUNFKE1lZGlhUmVjb3JkZXJDbGllbnQpOworCisgICAgdmlydHVhbCB2b2lkIG5vdGlmeShpbnQgbXNnLCBpbnQgZXh0MSwgaW50IGV4dDIpID0gMDsKK307CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3MgQm5NZWRpYVJlY29yZGVyQ2xpZW50OiBwdWJsaWMgQm5JbnRlcmZhY2U8SU1lZGlhUmVjb3JkZXJDbGllbnQ+Cit7CitwdWJsaWM6CisgICAgdmlydHVhbCBzdGF0dXNfdCAgICBvblRyYW5zYWN0KCB1aW50MzJfdCBjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUGFyY2VsJiBkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyY2VsKiByZXBseSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZsYWdzID0gMCk7Cit9OworCit9OyAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCisjZW5kaWYgLy8gQU5EUk9JRF9JTUVESUFSRUNPUkRFUkNMSUVOVF9ICisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvTWVkaWFQbGF5ZXJJbnRlcmZhY2UuaCBiL2luY2x1ZGUvbWVkaWEvTWVkaWFQbGF5ZXJJbnRlcmZhY2UuaAppbmRleCA5ZTYwNmQ5Li4zNjYyOTgzIDEwMDY0NAotLS0gYS9pbmNsdWRlL21lZGlhL01lZGlhUGxheWVySW50ZXJmYWNlLmgKKysrIGIvaW5jbHVkZS9tZWRpYS9NZWRpYVBsYXllckludGVyZmFjZS5oCkBAIC0zOSw3ICszOSw2IEBACiBlbnVtIHBsYXllcl90eXBlIHsKICAgICBQVl9QTEFZRVIgPSAxLAogICAgIFNPTklWT1hfUExBWUVSID0gMiwKLSAgICBWT1JCSVNfUExBWUVSID0gMywKICAgICBTVEFHRUZSSUdIVF9QTEFZRVIgPSA0LAogICAgIC8vIFRlc3QgcGxheWVycyBhcmUgYXZhaWxhYmxlIG9ubHkgaW4gdGhlICd0ZXN0JyBhbmQgJ2VuZycgYnVpbGRzLgogICAgIC8vIFRoZSBzaGFyZWQgbGlicmFyeSB3aXRoIHRoZSB0ZXN0IHBsYXllciBpcyBwYXNzZWQgcGFzc2VkIGFzIGFuCmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL01lZGlhUHJvZmlsZXMuaCBiL2luY2x1ZGUvbWVkaWEvTWVkaWFQcm9maWxlcy5oCmluZGV4IGE0ZWVhMmEuLmMzY2QzNjEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbWVkaWEvTWVkaWFQcm9maWxlcy5oCisrKyBiL2luY2x1ZGUvbWVkaWEvTWVkaWFQcm9maWxlcy5oCkBAIC00OCw4ICs0OCw4IEBACiAgICAgc3RhdGljIE1lZGlhUHJvZmlsZXMqIGdldEluc3RhbmNlKCk7CiAKICAgICAvKioKLSAgICAgKiBSZXR1cm5zIHRoZSB2YWx1ZSBmb3IgdGhlIGdpdmVuIHBhcmFtIG5hbWUgYXQgdGhlIGdpdmVuIHF1YWxpdHkgbGV2ZWwsCi0gICAgICogb3IgLTEgaWYgZXJyb3IuCisgICAgICogUmV0dXJucyB0aGUgdmFsdWUgZm9yIHRoZSBnaXZlbiBwYXJhbSBuYW1lIGZvciB0aGUgZ2l2ZW4gY2FtZXJhIGF0CisgICAgICogdGhlIGdpdmVuIHF1YWxpdHkgbGV2ZWwsIG9yIC0xIGlmIGVycm9yLgogICAgICAqCiAgICAgICogU3VwcG9ydGVkIHBhcmFtIG5hbWUgYXJlOgogICAgICAqIGR1cmF0aW9uIC0gdGhlIHJlY29yZGluZyBkdXJhdGlvbi4KQEAgLTY0LDcgKzY0LDggQEAKICAgICAgKiBhdWQuaHogLSBhdWRpbyBzYW1wbGUgcmF0ZQogICAgICAqIGF1ZC5jaCAtIG51bWJlciBvZiBhdWRpbyBjaGFubmVscwogICAgICAqLwotICAgIGludCBnZXRDYW1jb3JkZXJQcm9maWxlUGFyYW1CeU5hbWUoY29uc3QgY2hhciAqbmFtZSwgY2FtY29yZGVyX3F1YWxpdHkgcXVhbGl0eSkgY29uc3Q7CisgICAgaW50IGdldENhbWNvcmRlclByb2ZpbGVQYXJhbUJ5TmFtZShjb25zdCBjaGFyICpuYW1lLCBpbnQgY2FtZXJhSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1jb3JkZXJfcXVhbGl0eSBxdWFsaXR5KSBjb25zdDsKIAogICAgIC8qKgogICAgICAqIFJldHVybnMgdGhlIG91dHB1dCBmaWxlIGZvcm1hdHMgc3VwcG9ydGVkLgpAQCAtMTI0LDEyICsxMjUsNyBAQAogICAgIC8qKgogICAgICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBpbWFnZSBlbmNvZGluZyBxdWFsaXR5IGxldmVscyBzdXBwb3J0ZWQuCiAgICAgICovCi0gICAgVmVjdG9yPGludD4gZ2V0SW1hZ2VFbmNvZGluZ1F1YWxpdHlMZXZlbHMoKSBjb25zdDsKLQotICAgIC8qKgotICAgICAqIFJldHVybnMgdGhlIG1heGltdW0gYW1vdW50IG9mIG1lbW9yeSBpbiBieXRlcyB3ZSBjYW4gdXNlIGZvciBkZWNvZGluZyBhIEpQRUcgZmlsZS4KLSAgICAgKi8KLSAgICBpbnQgZ2V0SW1hZ2VEZWNvZGluZ01heE1lbW9yeSgpIGNvbnN0OworICAgIFZlY3RvcjxpbnQ+IGdldEltYWdlRW5jb2RpbmdRdWFsaXR5TGV2ZWxzKGludCBjYW1lcmFJZCkgY29uc3Q7CiAKIHByaXZhdGU6CiAgICAgTWVkaWFQcm9maWxlcyYgb3BlcmF0b3I9KGNvbnN0IE1lZGlhUHJvZmlsZXMmKTsgIC8vIERvbid0IGNhbGwgbWUKQEAgLTE3MSw3ICsxNjcsOCBAQAogCiAgICAgc3RydWN0IENhbWNvcmRlclByb2ZpbGUgewogICAgICAgICBDYW1jb3JkZXJQcm9maWxlKCkKLSAgICAgICAgICAgIDogbUZpbGVGb3JtYXQoT1VUUFVUX0ZPUk1BVF9USFJFRV9HUFApLAorICAgICAgICAgICAgOiBtQ2FtZXJhSWQoMCksCisgICAgICAgICAgICAgIG1GaWxlRm9ybWF0KE9VVFBVVF9GT1JNQVRfVEhSRUVfR1BQKSwKICAgICAgICAgICAgICAgbVF1YWxpdHkoQ0FNQ09SREVSX1FVQUxJVFlfSElHSCksCiAgICAgICAgICAgICAgIG1EdXJhdGlvbigwKSwKICAgICAgICAgICAgICAgbVZpZGVvQ29kZWMoMCksCkBAIC0xODIsNiArMTc5LDcgQEAKICAgICAgICAgICAgIGRlbGV0ZSBtQXVkaW9Db2RlYzsKICAgICAgICAgfQogCisgICAgICAgIGludCBtQ2FtZXJhSWQ7CiAgICAgICAgIG91dHB1dF9mb3JtYXQgbUZpbGVGb3JtYXQ7CiAgICAgICAgIGNhbWNvcmRlcl9xdWFsaXR5IG1RdWFsaXR5OwogICAgICAgICBpbnQgbUR1cmF0aW9uOwpAQCAtMjQ5LDYgKzI0NywxMSBAQAogICAgICAgICBpbnQgdGFnOwogICAgIH07CiAKKyAgICBzdHJ1Y3QgSW1hZ2VFbmNvZGluZ1F1YWxpdHlMZXZlbHMgeworICAgICAgICBpbnQgbUNhbWVyYUlkOworICAgICAgICBWZWN0b3I8aW50PiBtTGV2ZWxzOworICAgIH07CisKICAgICAvLyBEZWJ1ZwogICAgIHN0YXRpYyB2b2lkIGxvZ1ZpZGVvQ29kZWMoY29uc3QgVmlkZW9Db2RlYyYgY29kZWMpOwogICAgIHN0YXRpYyB2b2lkIGxvZ0F1ZGlvQ29kZWMoY29uc3QgQXVkaW9Db2RlYyYgY29kZWMpOwpAQCAtMjY3LDkgKzI3MCwxMSBAQAogICAgIHN0YXRpYyBWaWRlb0RlY29kZXJDYXAqIGNyZWF0ZVZpZGVvRGVjb2RlckNhcChjb25zdCBjaGFyICoqYXR0cyk7CiAgICAgc3RhdGljIFZpZGVvRW5jb2RlckNhcCogY3JlYXRlVmlkZW9FbmNvZGVyQ2FwKGNvbnN0IGNoYXIgKiphdHRzKTsKICAgICBzdGF0aWMgQXVkaW9FbmNvZGVyQ2FwKiBjcmVhdGVBdWRpb0VuY29kZXJDYXAoY29uc3QgY2hhciAqKmF0dHMpOwotICAgIHN0YXRpYyBDYW1jb3JkZXJQcm9maWxlKiBjcmVhdGVDYW1jb3JkZXJQcm9maWxlKGNvbnN0IGNoYXIgKiphdHRzKTsKLSAgICBzdGF0aWMgaW50IGdldEltYWdlRW5jb2RpbmdRdWFsaXR5TGV2ZWwoY29uc3QgY2hhciAqKmF0dHMpOwotICAgIHN0YXRpYyBpbnQgZ2V0SW1hZ2VEZWNvZGluZ01heE1lbW9yeShjb25zdCBjaGFyICoqYXR0cyk7CisgICAgc3RhdGljIENhbWNvcmRlclByb2ZpbGUqIGNyZWF0ZUNhbWNvcmRlclByb2ZpbGUoaW50IGNhbWVyYUlkLCBjb25zdCBjaGFyICoqYXR0cyk7CisgICAgc3RhdGljIGludCBnZXRDYW1lcmFJZChjb25zdCBjaGFyICoqYXR0cyk7CisKKyAgICBJbWFnZUVuY29kaW5nUXVhbGl0eUxldmVscyogZmluZEltYWdlRW5jb2RpbmdRdWFsaXR5TGV2ZWxzKGludCBjYW1lcmFJZCkgY29uc3Q7CisgICAgdm9pZCBhZGRJbWFnZUVuY29kaW5nUXVhbGl0eUxldmVsKGludCBjYW1lcmFJZCwgY29uc3QgY2hhcioqIGF0dHMpOwogCiAgICAgLy8gQ3VzdG9taXplZCBlbGVtZW50IHRhZyBoYW5kbGVyIGZvciBwYXJzaW5nIHRoZSB4bWwgY29uZmlndXJhdGlvbiBmaWxlLgogICAgIHN0YXRpYyB2b2lkIHN0YXJ0RWxlbWVudEhhbmRsZXIodm9pZCAqdXNlckRhdGEsIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKiphdHRzKTsKQEAgLTMwMyw2ICszMDgsNyBAQAogICAgIHN0YXRpYyBib29sIHNJc0luaXRpYWxpemVkOwogICAgIHN0YXRpYyBNZWRpYVByb2ZpbGVzICpzSW5zdGFuY2U7CiAgICAgc3RhdGljIE11dGV4IHNMb2NrOworICAgIGludCBtQ3VycmVudENhbWVyYUlkOwogCiAgICAgVmVjdG9yPENhbWNvcmRlclByb2ZpbGUqPiBtQ2FtY29yZGVyUHJvZmlsZXM7CiAgICAgVmVjdG9yPEF1ZGlvRW5jb2RlckNhcCo+ICBtQXVkaW9FbmNvZGVyczsKQEAgLTMxMCw4ICszMTYsNyBAQAogICAgIFZlY3RvcjxBdWRpb0RlY29kZXJDYXAqPiAgbUF1ZGlvRGVjb2RlcnM7CiAgICAgVmVjdG9yPFZpZGVvRGVjb2RlckNhcCo+ICBtVmlkZW9EZWNvZGVyczsKICAgICBWZWN0b3I8b3V0cHV0X2Zvcm1hdD4gICAgIG1FbmNvZGVyT3V0cHV0RmlsZUZvcm1hdHM7Ci0gICAgVmVjdG9yPGludD4gICAgICAgICAgICAgICBtSW1hZ2VFbmNvZGluZ1F1YWxpdHlMZXZlbHM7Ci0gICAgaW50ICAgICAgICAgICAgICAgICAgICAgICBtSW1hZ2VEZWNvZGluZ01heE1lbW9yeTsKKyAgICBWZWN0b3I8SW1hZ2VFbmNvZGluZ1F1YWxpdHlMZXZlbHMgKj4gIG1JbWFnZUVuY29kaW5nUXVhbGl0eUxldmVsczsKIH07CiAKIH07IC8vIG5hbWVzcGFjZSBhbmRyb2lkCmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL01lZGlhUmVjb3JkZXJCYXNlLmggYi9pbmNsdWRlL21lZGlhL01lZGlhUmVjb3JkZXJCYXNlLmgKaW5kZXggNWI3ODdhNy4uNWU5ZTM2OCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9tZWRpYS9NZWRpYVJlY29yZGVyQmFzZS5oCisrKyBiL2luY2x1ZGUvbWVkaWEvTWVkaWFSZWNvcmRlckJhc2UuaApAQCAtNDEsMTMgKzQxLDE0IEBACiAgICAgdmlydHVhbCBzdGF0dXNfdCBzZXRPdXRwdXRGaWxlKGNvbnN0IGNoYXIgKnBhdGgpID0gMDsKICAgICB2aXJ0dWFsIHN0YXR1c190IHNldE91dHB1dEZpbGUoaW50IGZkLCBpbnQ2NF90IG9mZnNldCwgaW50NjRfdCBsZW5ndGgpID0gMDsKICAgICB2aXJ0dWFsIHN0YXR1c190IHNldFBhcmFtZXRlcnMoY29uc3QgU3RyaW5nOCYgcGFyYW1zKSA9IDA7Ci0gICAgdmlydHVhbCBzdGF0dXNfdCBzZXRMaXN0ZW5lcihjb25zdCBzcDxJTWVkaWFQbGF5ZXJDbGllbnQ+JiBsaXN0ZW5lcikgPSAwOworICAgIHZpcnR1YWwgc3RhdHVzX3Qgc2V0TGlzdGVuZXIoY29uc3Qgc3A8SU1lZGlhUmVjb3JkZXJDbGllbnQ+JiBsaXN0ZW5lcikgPSAwOwogICAgIHZpcnR1YWwgc3RhdHVzX3QgcHJlcGFyZSgpID0gMDsKICAgICB2aXJ0dWFsIHN0YXR1c190IHN0YXJ0KCkgPSAwOwogICAgIHZpcnR1YWwgc3RhdHVzX3Qgc3RvcCgpID0gMDsKICAgICB2aXJ0dWFsIHN0YXR1c190IGNsb3NlKCkgPSAwOwogICAgIHZpcnR1YWwgc3RhdHVzX3QgcmVzZXQoKSA9IDA7CiAgICAgdmlydHVhbCBzdGF0dXNfdCBnZXRNYXhBbXBsaXR1ZGUoaW50ICptYXgpID0gMDsKKyAgICB2aXJ0dWFsIHN0YXR1c190IGR1bXAoaW50IGZkLCBjb25zdCBWZWN0b3I8U3RyaW5nMTY+JiBhcmdzKSBjb25zdCA9IDA7CiAKIHByaXZhdGU6CiAgICAgTWVkaWFSZWNvcmRlckJhc2UoY29uc3QgTWVkaWFSZWNvcmRlckJhc2UgJik7CmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL1BWTWVkaWFSZWNvcmRlci5oIGIvaW5jbHVkZS9tZWRpYS9QVk1lZGlhUmVjb3JkZXIuaAppbmRleCA0ZjE3YzFhLi5mNzVkODBkIDEwMDY0NAotLS0gYS9pbmNsdWRlL21lZGlhL1BWTWVkaWFSZWNvcmRlci5oCisrKyBiL2luY2x1ZGUvbWVkaWEvUFZNZWRpYVJlY29yZGVyLmgKQEAgLTE4LDcgKzE4LDcgQEAKICNpZm5kZWYgQU5EUk9JRF9QVk1FRElBUkVDT1JERVJfSAogI2RlZmluZSBBTkRST0lEX1BWTUVESUFSRUNPUkRFUl9ICiAKLSNpbmNsdWRlIDxtZWRpYS9JTWVkaWFQbGF5ZXJDbGllbnQuaD4KKyNpbmNsdWRlIDxtZWRpYS9JTWVkaWFSZWNvcmRlckNsaWVudC5oPgogI2luY2x1ZGUgPG1lZGlhL01lZGlhUmVjb3JkZXJCYXNlLmg+CiAKIG5hbWVzcGFjZSBhbmRyb2lkIHsKQEAgLTQ1LDEzICs0NSwxNCBAQAogICAgIHZpcnR1YWwgc3RhdHVzX3Qgc2V0T3V0cHV0RmlsZShjb25zdCBjaGFyICpwYXRoKTsKICAgICB2aXJ0dWFsIHN0YXR1c190IHNldE91dHB1dEZpbGUoaW50IGZkLCBpbnQ2NF90IG9mZnNldCwgaW50NjRfdCBsZW5ndGgpOwogICAgIHZpcnR1YWwgc3RhdHVzX3Qgc2V0UGFyYW1ldGVycyhjb25zdCBTdHJpbmc4JiBwYXJhbXMpOwotICAgIHZpcnR1YWwgc3RhdHVzX3Qgc2V0TGlzdGVuZXIoY29uc3Qgc3A8SU1lZGlhUGxheWVyQ2xpZW50PiYgbGlzdGVuZXIpOworICAgIHZpcnR1YWwgc3RhdHVzX3Qgc2V0TGlzdGVuZXIoY29uc3Qgc3A8SU1lZGlhUmVjb3JkZXJDbGllbnQ+JiBsaXN0ZW5lcik7CiAgICAgdmlydHVhbCBzdGF0dXNfdCBwcmVwYXJlKCk7CiAgICAgdmlydHVhbCBzdGF0dXNfdCBzdGFydCgpOwogICAgIHZpcnR1YWwgc3RhdHVzX3Qgc3RvcCgpOwogICAgIHZpcnR1YWwgc3RhdHVzX3QgY2xvc2UoKTsKICAgICB2aXJ0dWFsIHN0YXR1c190IHJlc2V0KCk7CiAgICAgdmlydHVhbCBzdGF0dXNfdCBnZXRNYXhBbXBsaXR1ZGUoaW50ICptYXgpOworICAgIHZpcnR1YWwgc3RhdHVzX3QgZHVtcChpbnQgZmQsIGNvbnN0IFZlY3RvcjxTdHJpbmcxNj4mIGFyZ3MpIGNvbnN0OwogCiBwcml2YXRlOgogICAgIHN0YXR1c190IGRvU3RvcCgpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9tZWRpYS9WaXN1YWxpemVyLmggYi9pbmNsdWRlL21lZGlhL1Zpc3VhbGl6ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDUxZGU4Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9tZWRpYS9WaXN1YWxpemVyLmgKQEAgLTAsMCArMSwxNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIEFORFJPSURfTUVESUFfVklTVUFMSVpFUl9ICisjZGVmaW5lIEFORFJPSURfTUVESUFfVklTVUFMSVpFUl9ICisKKyNpbmNsdWRlIDxtZWRpYS9BdWRpb0VmZmVjdC5oPgorI2luY2x1ZGUgPG1lZGlhL0VmZmVjdFZpc3VhbGl6ZXJBcGkuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworLyoqCisgKiBUaGUgVmlzdWFsaXplciBjbGFzcyBlbmFibGVzIGFwcGxpY2F0aW9uIHRvIHJldHJpZXZlIHBhcnQgb2YgdGhlIGN1cnJlbnRseSBwbGF5aW5nIGF1ZGlvIGZvcgorICogdmlzdWFsaXphdGlvbiBwdXJwb3NlLiBJdCBpcyBub3QgYW4gYXVkaW8gcmVjb3JkaW5nIGludGVyZmFjZSBhbmQgb25seSByZXR1cm5zIHBhcnRpYWwgYW5kIGxvdworICogcXVhbGl0eSBhdWRpbyBjb250ZW50LiBIb3dldmVyLCB0byBwcm90ZWN0IHByaXZhY3kgb2YgY2VydGFpbiBhdWRpbyBkYXRhIChlLmcgdm9pY2UgbWFpbCkgdGhlIHVzZQorICogb2YgdGhlIHZpc3VhbGl6ZXIgcmVxdWlyZXMgdGhlIHBlcm1pc3Npb24gYW5kcm9pZC5wZXJtaXNzaW9uLlJFQ09SRF9BVURJTy4KKyAqIFRoZSBhdWRpbyBzZXNzaW9uIElEIHBhc3NlZCB0byB0aGUgY29uc3RydWN0b3IgaW5kaWNhdGVzIHdoaWNoIGF1ZGlvIGNvbnRlbnQgc2hvdWxkIGJlCisgKiB2aXN1YWxpemVkOgorICogLSBJZiB0aGUgc2Vzc2lvbiBpcyAwLCB0aGUgYXVkaW8gb3V0cHV0IG1peCBpcyB2aXN1YWxpemVkCisgKiAtIElmIHRoZSBzZXNzaW9uIGlzIG5vdCAwLCB0aGUgYXVkaW8gZnJvbSBhIHBhcnRpY3VsYXIgTWVkaWFQbGF5ZXIgb3IgQXVkaW9UcmFjaworICogICB1c2luZyB0aGlzIGF1ZGlvIHNlc3Npb24gaXMgdmlzdWFsaXplZAorICogVHdvIHR5cGVzIG9mIHJlcHJlc2VudGF0aW9uIG9mIGF1ZGlvIGNvbnRlbnQgY2FuIGJlIGNhcHR1cmVkOgorICogLSBXYXZlZm9ybSBkYXRhOiBjb25zZWN1dGl2ZSA4LWJpdCAodW5zaWduZWQpIG1vbm8gc2FtcGxlcyBieSB1c2luZyB0aGUgZ2V0V2F2ZUZvcm0oKSBtZXRob2QKKyAqIC0gRnJlcXVlbmN5IGRhdGE6IDgtYml0IG1hZ25pdHVkZSBGRlQgYnkgdXNpbmcgdGhlIGdldEZmdCgpIG1ldGhvZAorICoKKyAqIFRoZSBsZW5ndGggb2YgdGhlIGNhcHR1cmUgY2FuIGJlIHJldHJpZXZlZCBvciBzcGVjaWZpZWQgYnkgY2FsbGluZyByZXNwZWN0aXZlbHkKKyAqIGdldENhcHR1cmVTaXplKCkgYW5kIHNldENhcHR1cmVTaXplKCkgbWV0aG9kcy4gTm90ZSB0aGF0IHRoZSBzaXplIG9mIHRoZSBGRlQKKyAqIGlzIGhhbGYgb2YgdGhlIHNwZWNpZmllZCBjYXB0dXJlIHNpemUgYnV0IGJvdGggc2lkZXMgb2YgdGhlIHNwZWN0cnVtIGFyZSByZXR1cm5lZCB5aWVsZGluZyBpbiBhCisgKiBudW1iZXIgb2YgYnl0ZXMgZXF1YWwgdG8gdGhlIGNhcHR1cmUgc2l6ZS4gVGhlIGNhcHR1cmUgc2l6ZSBtdXN0IGJlIGEgcG93ZXIgb2YgMiBpbiB0aGUgcmFuZ2UKKyAqIHJldHVybmVkIGJ5IGdldE1pbkNhcHR1cmVTaXplKCkgYW5kIGdldE1heENhcHR1cmVTaXplKCkuCisgKiBJbiBhZGRpdGlvbiB0byB0aGUgcG9sbGluZyBjYXB0dXJlIG1vZGUsIGEgY2FsbGJhY2sgbW9kZSBpcyBhbHNvIGF2YWlsYWJsZSBieSBpbnN0YWxsaW5nIGEKKyAqIGNhbGxiYWNrIGZ1bmN0aW9uIGJ5IHVzZSBvZiB0aGUgc2V0Q2FwdHVyZUNhbGxCYWNrKCkgbWV0aG9kLiBUaGUgcmF0ZSBhdCB3aGljaCB0aGUgY2FsbGJhY2sKKyAqIGlzIGNhbGxlZCBhcyB3ZWxsIGFzIHRoZSB0eXBlIG9mIGRhdGEgcmV0dXJuZWQgaXMgc3BlY2lmaWVkLgorICogQmVmb3JlIGNhcHR1cmluZyBkYXRhLCB0aGUgVmlzdWFsaXplciBtdXN0IGJlIGVuYWJsZWQgYnkgY2FsbGluZyB0aGUgc2V0RW5hYmxlZCgpIG1ldGhvZC4KKyAqIFdoZW4gZGF0YSBjYXB0dXJlIGlzIG5vdCBuZWVkZWQgYW55IG1vcmUsIHRoZSBWaXN1YWxpemVyIHNob3VsZCBiZSBkaXNhYmxlZC4KKyAqLworCisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitjbGFzcyBWaXN1YWxpemVyOiBwdWJsaWMgQXVkaW9FZmZlY3QgeworcHVibGljOgorCisgICAgZW51bSBjYWxsYmFja19mbGFncyB7CisgICAgICAgIENBUFRVUkVfV0FWRUZPUk0gPSAweDAwMDAwMDAxLCAgLy8gY2FwdHVyZSBjYWxsYmFjayByZXR1cm5zIGEgUENNIHdhdmUgZm9ybQorICAgICAgICBDQVBUVVJFX0ZGVCA9IDB4MDAwMDAwMDIsICAgICAgIC8vIGFwdHVyZSBjYWxsYmFjayByZXR1cm5zIGEgZnJlcXVlbmN5IHJlcHJlc2VudGF0aW9uCisgICAgICAgIENBUFRVUkVfQ0FMTF9KQVZBID0gMHgwMDAwMDAwNCAgLy8gdGhlIGNhbGxiYWNrIHRocmVhZCBjYW4gY2FsbCBqYXZhCisgICAgfTsKKworCisgICAgLyogQ29uc3RydWN0b3IuCisgICAgICogU2VlIEF1ZGlvRWZmZWN0IGNvbnN0cnVjdG9yIGZvciBkZXRhaWxzIG9uIHBhcmFtZXRlcnMuCisgICAgICovCisgICAgICAgICAgICAgICAgICAgICAgICBWaXN1YWxpemVyKGludDMyX3QgcHJpb3JpdHkgPSAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZmZlY3RfY2FsbGJhY2tfdCBjYmYgPSAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkKiB1c2VyID0gMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNlc3Npb25JZCA9IDApOworCisgICAgICAgICAgICAgICAgICAgICAgICB+VmlzdWFsaXplcigpOworCisgICAgdmlydHVhbCBzdGF0dXNfdCAgICBzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCk7CisKKyAgICAvLyBtYXhpbXVtIGNhcHR1cmUgc2l6ZSBpbiBzYW1wbGVzCisgICAgc3RhdGljIHVpbnQzMl90IGdldE1heENhcHR1cmVTaXplKCkgeyByZXR1cm4gVklTVUFMSVpFUl9DQVBUVVJFX1NJWkVfTUFYOyB9CisgICAgLy8gbWluaW11bSBjYXB0dXJlIHNpemUgaW4gc2FtcGxlcworICAgIHN0YXRpYyB1aW50MzJfdCBnZXRNaW5DYXB0dXJlU2l6ZSgpIHsgcmV0dXJuIFZJU1VBTElaRVJfQ0FQVFVSRV9TSVpFX01JTjsgfQorICAgIC8vIG1heGltdW0gY2FwdHVyZSByYXRlIGluIG1pbGxpaGVydHoKKyAgICBzdGF0aWMgdWludDMyX3QgZ2V0TWF4Q2FwdHVyZVJhdGUoKSB7IHJldHVybiBDQVBUVVJFX1JBVEVfTUFYOyB9CisKKyAgICAvLyBjYWxsYmFjayB1c2VkIHRvIHJldHVybiBwZXJpb2RpYyBQQ00gb3IgRkZUIGNhcHR1cmVzIHRvIHRoZSBhcHBsaWNhdGlvbi4gRWl0aGVyIG9uZSBvciBib3RoCisgICAgLy8gdHlwZXMgb2YgZGF0YSBhcmUgcmV0dXJuZWQgKFBDTSBhbmQgRkZUKSBhY2NvcmRpbmcgdG8gZmxhZ3MgaW5kaWNhdGVkIHdoZW4gaW5zdGFsbGluZyB0aGUKKyAgICAvLyBjYWxsYmFjay4gV2hlbiBhIHR5cGUgb2YgZGF0YSBpcyBub3QgcHJlc2VudCwgdGhlIGNvcnJlc3BvbmRpbmcgc2l6ZSAod2F2ZWZvcm1TaXplIG9yCisgICAgLy8gZmZ0U2l6ZSkgaXMgMC4KKyAgICB0eXBlZGVmIHZvaWQgKCpjYXB0dXJlX2Nia190KSh2b2lkKiB1c2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgd2F2ZWZvcm1TaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqd2F2ZWZvcm0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBmZnRTaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqZmZ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qgc2FtcGxpbmdyYXRlKTsKKworICAgIC8vIGluc3RhbGwgYSBjYWxsYmFjayB0byByZWNlaXZlIHBlcmlvZGljIGNhcHR1cmVzLiBUaGUgY2FwdHVyZSByYXRlIGlzIHNwZWNpZmllZCBpbiBtaWxsaUhlcnR6CisgICAgLy8gYW5kIHRoZSBjYXB0dXJlIGZvcm1hdCBpcyBhY2NvcmRpbmcgdG8gZmxhZ3MgIChzZWUgY2FsbGJhY2tfZmxhZ3MpLgorICAgIHN0YXR1c190IHNldENhcHR1cmVDYWxsQmFjayhjYXB0dXJlX2Nia190IGNiaywgdm9pZCogdXNlciwgdWludDMyX3QgZmxhZ3MsIHVpbnQzMl90IHJhdGUpOworCisgICAgLy8gc2V0IHRoZSBjYXB0dXJlIHNpemUgY2FwdHVyZSBzaXplIG11c3QgYmUgYSBwb3dlciBvZiB0d28gaW4gdGhlIHJhbmdlCisgICAgLy8gW1ZJU1VBTElaRVJfQ0FQVFVSRV9TSVpFX01BWC4gVklTVUFMSVpFUl9DQVBUVVJFX1NJWkVfTUlOXQorICAgIC8vIG11c3QgYmUgY2FsbGVkIHdoZW4gdGhlIHZpc3VhbGl6ZXIgaXMgbm90IGVuYWJsZWQKKyAgICBzdGF0dXNfdCBzZXRDYXB0dXJlU2l6ZSh1aW50MzJfdCBzaXplKTsKKyAgICB1aW50MzJfdCBnZXRDYXB0dXJlU2l6ZSgpIHsgcmV0dXJuIG1DYXB0dXJlU2l6ZTsgfQorCisgICAgLy8gcmV0dXJucyB0aGUgY2FwdHVyZSByYXRlIGluZGljYXRlZCB3aGVuIGluc3RhbGxpbmcgdGhlIGNhbGxiYWNrCisgICAgdWludDMyX3QgZ2V0Q2FwdHVyZVJhdGUoKSB7IHJldHVybiBtQ2FwdHVyZVJhdGU7IH0KKworICAgIC8vIHJldHVybnMgdGhlIHNhbXBsaW5nIHJhdGUgb2YgdGhlIGF1ZGlvIGJlaW5nIGNhcHR1cmVkCisgICAgdWludDMyX3QgZ2V0U2FtcGxpbmdSYXRlKCkgeyByZXR1cm4gbVNhbXBsZVJhdGU7IH0KKworICAgIC8vIHJldHVybiBhIGNhcHR1cmUgaW4gUENNIDggYml0IHVuc2lnbmVkIGZvcm1hdC4gVGhlIHNpemUgb2YgdGhlIGNhcHR1cmUgaXMgZXF1YWwgdG8KKyAgICAvLyBnZXRDYXB0dXJlU2l6ZSgpCisgICAgc3RhdHVzX3QgZ2V0V2F2ZUZvcm0odWludDhfdCAqd2F2ZWZvcm0pOworCisgICAgLy8gcmV0dXJuIGEgY2FwdHVyZSBpbiBGRlQgOCBiaXQgc2lnbmVkIGZvcm1hdC4gVGhlIHNpemUgb2YgdGhlIGNhcHR1cmUgaXMgZXF1YWwgdG8KKyAgICAvLyBnZXRDYXB0dXJlU2l6ZSgpIGJ1dCB0aGUgbGVuZ3RoIG9mIHRoZSBGRlQgaXMgaGFsZiBvZiB0aGUgc2l6ZSAoYm90aCBwYXJ0cyBvZiB0aGUgc3BlY3RydW0KKyAgICAvLyBhcmUgcmV0dXJuZWQKKyAgICBzdGF0dXNfdCBnZXRGZnQodWludDhfdCAqZmZ0KTsKKworcHJpdmF0ZToKKworICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBDQVBUVVJFX1JBVEVfTUFYID0gMjAwMDA7CisgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IENBUFRVUkVfUkFURV9ERUYgPSAxMDAwMDsKKyAgICBzdGF0aWMgY29uc3QgdWludDMyX3QgQ0FQVFVSRV9TSVpFX0RFRiA9IFZJU1VBTElaRVJfQ0FQVFVSRV9TSVpFX01BWDsKKworICAgIC8qIGludGVybmFsIGNsYXNzIHRvIGhhbmRsZSB0aGUgY2FsbGJhY2sgKi8KKyAgICBjbGFzcyBDYXB0dXJlVGhyZWFkIDogcHVibGljIFRocmVhZAorICAgIHsKKyAgICBwdWJsaWM6CisgICAgICAgIENhcHR1cmVUaHJlYWQoVmlzdWFsaXplciYgcmVjZWl2ZXIsIHVpbnQzMl90IGNhcHR1cmVSYXRlLCBib29sIGJDYW5DYWxsSmF2YSA9IGZhbHNlKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIGZyaWVuZCBjbGFzcyBWaXN1YWxpemVyOworICAgICAgICB2aXJ0dWFsIGJvb2wgICAgICAgIHRocmVhZExvb3AoKTsKKyAgICAgICAgdmlydHVhbCBzdGF0dXNfdCAgICByZWFkeVRvUnVuKCk7CisgICAgICAgIHZpcnR1YWwgdm9pZCAgICAgICAgb25GaXJzdFJlZigpOworICAgICAgICBWaXN1YWxpemVyJiBtUmVjZWl2ZXI7CisgICAgICAgIE11dGV4ICAgICAgIG1Mb2NrOworICAgICAgICB1aW50MzJfdCBtU2xlZXBUaW1lVXM7CisgICAgfTsKKworICAgIHN0YXR1c190IGRvRmZ0KHVpbnQ4X3QgKmZmdCwgdWludDhfdCAqd2F2ZWZvcm0pOworICAgIHZvaWQgcGVyaW9kaWNDYXB0dXJlKCk7CisgICAgdWludDMyX3QgaW5pdENhcHR1cmVTaXplKCk7CisKKyAgICBNdXRleCBtTG9jazsKKyAgICB1aW50MzJfdCBtQ2FwdHVyZVJhdGU7CisgICAgdWludDMyX3QgbUNhcHR1cmVTaXplOworICAgIHVpbnQzMl90IG1TYW1wbGVSYXRlOworICAgIGNhcHR1cmVfY2JrX3QgbUNhcHR1cmVDYWxsQmFjazsKKyAgICB2b2lkICptQ2FwdHVyZUNia1VzZXI7CisgICAgc3A8Q2FwdHVyZVRocmVhZD4gbUNhcHR1cmVUaHJlYWQ7CisgICAgdWludDMyX3QgbUNhcHR1cmVGbGFnczsKKyAgICB2b2lkICptRmZ0VGFibGU7Cit9OworCisKK307IC8vIG5hbWVzcGFjZSBhbmRyb2lkCisKKyNlbmRpZiAvLyBBTkRST0lEX01FRElBX1ZJU1VBTElaRVJfSApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9tZWRpYS9tZWRpYXBsYXllci5oIGIvaW5jbHVkZS9tZWRpYS9tZWRpYXBsYXllci5oCmluZGV4IDdmYWQxYjcuLjQ5NjNmNzMgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbWVkaWEvbWVkaWFwbGF5ZXIuaAorKysgYi9pbmNsdWRlL21lZGlhL21lZGlhcGxheWVyLmgKQEAgLTkzLDYgKzkzLDExIEBACiAgICAgLy8gVGhlIHZpZGVvIGlzIHRvbyBjb21wbGV4IGZvciB0aGUgZGVjb2RlcjogaXQgY2FuJ3QgZGVjb2RlIGZyYW1lcyBmYXN0CiAgICAgLy8gZW5vdWdoLiBQb3NzaWJseSBvbmx5IHRoZSBhdWRpbyBwbGF5cyBmaW5lIGF0IHRoaXMgc3RhZ2UuCiAgICAgTUVESUFfSU5GT19WSURFT19UUkFDS19MQUdHSU5HID0gNzAwLAorICAgIC8vIE1lZGlhUGxheWVyIGlzIHRlbXBvcmFyaWx5IHBhdXNpbmcgcGxheWJhY2sgaW50ZXJuYWxseSBpbiBvcmRlciB0bworICAgIC8vIGJ1ZmZlciBtb3JlIGRhdGEuCisgICAgTUVESUFfSU5GT19CVUZGRVJJTkdfU1RBUlQgPSA3MDEsCisgICAgLy8gTWVkaWFQbGF5ZXIgaXMgcmVzdW1pbmcgcGxheWJhY2sgYWZ0ZXIgZmlsbGluZyBidWZmZXJzLgorICAgIE1FRElBX0lORk9fQlVGRkVSSU5HX0VORCA9IDcwMiwKICAgICAvLyA4eHgKICAgICAvLyBCYWQgaW50ZXJsZWF2aW5nIG1lYW5zIHRoYXQgYSBtZWRpYSBoYXMgYmVlbiBpbXByb3Blcmx5IGludGVybGVhdmVkIG9yIG5vdAogICAgIC8vIGludGVybGVhdmVkIGF0IGFsbCwgZS5nIGhhcyBhbGwgdGhlIHZpZGVvIHNhbXBsZXMgZmlyc3QgdGhlbiBhbGwgdGhlIGF1ZGlvCkBAIC0xNjEsMTIgKzE2NiwxMyBAQAogICAgICAgICAgICAgdm9pZCAgICAgICAgICAgIG5vdGlmeShpbnQgbXNnLCBpbnQgZXh0MSwgaW50IGV4dDIpOwogICAgIHN0YXRpYyAgc3A8SU1lbW9yeT4gICAgIGRlY29kZShjb25zdCBjaGFyKiB1cmwsIHVpbnQzMl90ICpwU2FtcGxlUmF0ZSwgaW50KiBwTnVtQ2hhbm5lbHMsIGludCogcEZvcm1hdCk7CiAgICAgc3RhdGljICBzcDxJTWVtb3J5PiAgICAgZGVjb2RlKGludCBmZCwgaW50NjRfdCBvZmZzZXQsIGludDY0X3QgbGVuZ3RoLCB1aW50MzJfdCAqcFNhbXBsZVJhdGUsIGludCogcE51bUNoYW5uZWxzLCBpbnQqIHBGb3JtYXQpOwotICAgIHN0YXRpYyAgaW50ICAgICAgICAgICAgIHNub29wKHNob3J0ICpkYXRhLCBpbnQgbGVuLCBpbnQga2luZCk7CiAgICAgICAgICAgICBzdGF0dXNfdCAgICAgICAgaW52b2tlKGNvbnN0IFBhcmNlbCYgcmVxdWVzdCwgUGFyY2VsICpyZXBseSk7CiAgICAgICAgICAgICBzdGF0dXNfdCAgICAgICAgc2V0TWV0YWRhdGFGaWx0ZXIoY29uc3QgUGFyY2VsJiBmaWx0ZXIpOwogICAgICAgICAgICAgc3RhdHVzX3QgICAgICAgIGdldE1ldGFkYXRhKGJvb2wgdXBkYXRlX29ubHksIGJvb2wgYXBwbHlfZmlsdGVyLCBQYXJjZWwgKm1ldGFkYXRhKTsKICAgICAgICAgICAgIHN0YXR1c190ICAgICAgICBzdXNwZW5kKCk7CiAgICAgICAgICAgICBzdGF0dXNfdCAgICAgICAgcmVzdW1lKCk7CisgICAgICAgICAgICBzdGF0dXNfdCAgICAgICAgc2V0QXVkaW9TZXNzaW9uSWQoaW50IHNlc3Npb25JZCk7CisgICAgICAgICAgICBpbnQgICAgICAgICAgICAgZ2V0QXVkaW9TZXNzaW9uSWQoKTsKIHByaXZhdGU6CiAgICAgICAgICAgICB2b2lkICAgICAgICAgICAgY2xlYXJfbCgpOwogICAgICAgICAgICAgc3RhdHVzX3QgICAgICAgIHNlZWtUb19sKGludCBtc2VjKTsKQEAgLTE5Myw2ICsxOTksNyBAQAogICAgIGZsb2F0ICAgICAgICAgICAgICAgICAgICAgICBtUmlnaHRWb2x1bWU7CiAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgIG1WaWRlb1dpZHRoOwogICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICBtVmlkZW9IZWlnaHQ7CisgICAgaW50ICAgICAgICAgICAgICAgICAgICAgICAgIG1BdWRpb1Nlc3Npb25JZDsKIH07CiAKIH07IC8vIG5hbWVzcGFjZSBhbmRyb2lkCmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL21lZGlhcmVjb3JkZXIuaCBiL2luY2x1ZGUvbWVkaWEvbWVkaWFyZWNvcmRlci5oCmluZGV4IDllYTZjN2IuLmIyMWJjNGQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbWVkaWEvbWVkaWFyZWNvcmRlci5oCisrKyBiL2luY2x1ZGUvbWVkaWEvbWVkaWFyZWNvcmRlci5oCkBAIC0yMiw3ICsyMiw3IEBACiAjaW5jbHVkZSA8dXRpbHMvdGhyZWFkcy5oPgogI2luY2x1ZGUgPHV0aWxzL0xpc3QuaD4KICNpbmNsdWRlIDx1dGlscy9FcnJvcnMuaD4KLSNpbmNsdWRlIDxtZWRpYS9JTWVkaWFQbGF5ZXJDbGllbnQuaD4KKyNpbmNsdWRlIDxtZWRpYS9JTWVkaWFSZWNvcmRlckNsaWVudC5oPgogI2luY2x1ZGUgPG1lZGlhL0lNZWRpYURlYXRoTm90aWZpZXIuaD4KIAogbmFtZXNwYWNlIGFuZHJvaWQgewpAQCAtMTM1LDcgKzEzNSwxMCBAQAogZW51bSBtZWRpYV9yZWNvcmRlcl9pbmZvX3R5cGUgewogICAgIE1FRElBX1JFQ09SREVSX0lORk9fVU5LTk9XTiAgICAgICAgICAgICAgICAgICA9IDEsCiAgICAgTUVESUFfUkVDT1JERVJfSU5GT19NQVhfRFVSQVRJT05fUkVBQ0hFRCAgICAgID0gODAwLAotICAgIE1FRElBX1JFQ09SREVSX0lORk9fTUFYX0ZJTEVTSVpFX1JFQUNIRUQgICAgICA9IDgwMQorICAgIE1FRElBX1JFQ09SREVSX0lORk9fTUFYX0ZJTEVTSVpFX1JFQUNIRUQgICAgICA9IDgwMSwKKyAgICBNRURJQV9SRUNPUkRFUl9JTkZPX0NPTVBMRVRJT05fU1RBVFVTICAgICAgICAgPSA4MDIsCisgICAgTUVESUFfUkVDT1JERVJfSU5GT19QUk9HUkVTU19GUkFNRV9TVEFUVVMgICAgID0gODAzLAorICAgIE1FRElBX1JFQ09SREVSX0lORk9fUFJPR1JFU1NfVElNRV9TVEFUVVMgICAgICA9IDgwNCwKIH07CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTE0Niw3ICsxNDksNyBAQAogICAgIHZpcnR1YWwgdm9pZCBub3RpZnkoaW50IG1zZywgaW50IGV4dDEsIGludCBleHQyKSA9IDA7CiB9OwogCi1jbGFzcyBNZWRpYVJlY29yZGVyIDogcHVibGljIEJuTWVkaWFQbGF5ZXJDbGllbnQsCitjbGFzcyBNZWRpYVJlY29yZGVyIDogcHVibGljIEJuTWVkaWFSZWNvcmRlckNsaWVudCwKICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdmlydHVhbCBJTWVkaWFEZWF0aE5vdGlmaWVyCiB7CiBwdWJsaWM6CmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L0FNUldyaXRlci5oIGIvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9BTVJXcml0ZXIuaAppbmRleCAzNzI5MDlhLi44MTNkZDQzIDEwMDY0NAotLS0gYS9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L0FNUldyaXRlci5oCisrKyBiL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvQU1SV3JpdGVyLmgKQEAgLTI2LDYgKzI2LDcgQEAKIG5hbWVzcGFjZSBhbmRyb2lkIHsKIAogc3RydWN0IE1lZGlhU291cmNlOworc3RydWN0IE1ldGFEYXRhOwogCiBzdHJ1Y3QgQU1SV3JpdGVyIDogcHVibGljIE1lZGlhV3JpdGVyIHsKICAgICBBTVJXcml0ZXIoY29uc3QgY2hhciAqZmlsZW5hbWUpOwpAQCAtMzUsMjUgKzM2LDMwIEBACiAKICAgICB2aXJ0dWFsIHN0YXR1c190IGFkZFNvdXJjZShjb25zdCBzcDxNZWRpYVNvdXJjZT4gJnNvdXJjZSk7CiAgICAgdmlydHVhbCBib29sIHJlYWNoZWRFT1MoKTsKLSAgICB2aXJ0dWFsIHN0YXR1c190IHN0YXJ0KCk7CisgICAgdmlydHVhbCBzdGF0dXNfdCBzdGFydChNZXRhRGF0YSAqcGFyYW1zID0gTlVMTCk7CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGF1c2UoKTsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfkFNUldyaXRlcigpOwogCiBwcml2YXRlOgotICAgIE11dGV4IG1Mb2NrOwotCiAgICAgRklMRSAqbUZpbGU7CiAgICAgc3RhdHVzX3QgbUluaXRDaGVjazsKICAgICBzcDxNZWRpYVNvdXJjZT4gbVNvdXJjZTsKICAgICBib29sIG1TdGFydGVkOworICAgIHZvbGF0aWxlIGJvb2wgbVBhdXNlZDsKKyAgICB2b2xhdGlsZSBib29sIG1SZXN1bWVkOwogICAgIHZvbGF0aWxlIGJvb2wgbURvbmU7Ci0gICAgYm9vbCBtUmVhY2hlZEVPUzsKKyAgICB2b2xhdGlsZSBib29sIG1SZWFjaGVkRU9TOwogICAgIHB0aHJlYWRfdCBtVGhyZWFkOworICAgIGludDY0X3QgbUVzdGltYXRlZFNpemVCeXRlczsKKyAgICBpbnQ2NF90IG1Fc3RpbWF0ZWREdXJhdGlvblVzOwogCiAgICAgc3RhdGljIHZvaWQgKlRocmVhZFdyYXBwZXIodm9pZCAqKTsKICAgICB2b2lkIHRocmVhZEZ1bmMoKTsKKyAgICBib29sIGV4Y2VlZHNGaWxlU2l6ZUxpbWl0KCk7CisgICAgYm9vbCBleGNlZWRzRmlsZUR1cmF0aW9uTGltaXQoKTsKIAogICAgIEFNUldyaXRlcihjb25zdCBBTVJXcml0ZXIgJik7CiAgICAgQU1SV3JpdGVyICZvcGVyYXRvcj0oY29uc3QgQU1SV3JpdGVyICYpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9BdWRpb1NvdXJjZS5oIGIvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9BdWRpb1NvdXJjZS5oCmluZGV4IGViMDAxNDAuLjYyODIwMGQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvQXVkaW9Tb3VyY2UuaAorKysgYi9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L0F1ZGlvU291cmNlLmgKQEAgLTM5LDYgKzM5LDkgQEAKICAgICB2aXJ0dWFsIHN0YXR1c190IHN0b3AoKTsKICAgICB2aXJ0dWFsIHNwPE1ldGFEYXRhPiBnZXRGb3JtYXQoKTsKIAorICAgIC8vIFJldHVybnMgdGhlIG1heGltdW0gYW1wbGl0dWRlIHNpbmNlIGxhc3QgY2FsbC4KKyAgICBpbnQxNl90IGdldE1heEFtcGxpdHVkZSgpOworCiAgICAgdmlydHVhbCBzdGF0dXNfdCByZWFkKAogICAgICAgICAgICAgTWVkaWFCdWZmZXIgKipidWZmZXIsIGNvbnN0IFJlYWRPcHRpb25zICpvcHRpb25zID0gTlVMTCk7CiAKQEAgLTQ2LDEzICs0OSwyNCBAQAogICAgIHZpcnR1YWwgfkF1ZGlvU291cmNlKCk7CiAKIHByaXZhdGU6Ci0gICAgZW51bSB7IGtNYXhCdWZmZXJTaXplID0gODE5MiB9OworICAgIGVudW0geyBrTWF4QnVmZmVyU2l6ZSA9IDIwNDggfTsKIAogICAgIEF1ZGlvUmVjb3JkICptUmVjb3JkOwogICAgIHN0YXR1c190IG1Jbml0Q2hlY2s7CiAgICAgYm9vbCBtU3RhcnRlZDsKKworICAgIGJvb2wgbUNvbGxlY3RTdGF0czsKKyAgICBib29sIG1UcmFja01heEFtcGxpdHVkZTsKKyAgICBpbnQ2NF90IG1Ub3RhbFJlYWRUaW1lVXM7CisgICAgaW50NjRfdCBtVG90YWxSZWFkQnl0ZXM7CisgICAgaW50NjRfdCBtVG90YWxSZWFkczsKKyAgICBpbnQ2NF90IG1TdGFydFRpbWVVczsKKyAgICBpbnQxNl90IG1NYXhBbXBsaXR1ZGU7CisKICAgICBNZWRpYUJ1ZmZlckdyb3VwICptR3JvdXA7CiAKKyAgICB2b2lkIHRyYWNrTWF4QW1wbGl0dWRlKGludDE2X3QgKmRhdGEsIGludCBuU2FtcGxlcyk7CisKICAgICBBdWRpb1NvdXJjZShjb25zdCBBdWRpb1NvdXJjZSAmKTsKICAgICBBdWRpb1NvdXJjZSAmb3BlcmF0b3I9KGNvbnN0IEF1ZGlvU291cmNlICYpOwogfTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvQ2FjaGluZ0RhdGFTb3VyY2UuaCBiL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvQ2FjaGluZ0RhdGFTb3VyY2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDJkNTBlNS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L0NhY2hpbmdEYXRhU291cmNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotI2lmbmRlZiBDQUNISU5HX0RBVEFTT1VSQ0VfSF8KLQotI2RlZmluZSBDQUNISU5HX0RBVEFTT1VSQ0VfSF8KLQotI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L0RhdGFTb3VyY2UuaD4KLSNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYUVycm9ycy5oPgotI2luY2x1ZGUgPHV0aWxzL3RocmVhZHMuaD4KLQotbmFtZXNwYWNlIGFuZHJvaWQgewotCi1jbGFzcyBDYWNoaW5nRGF0YVNvdXJjZSA6IHB1YmxpYyBEYXRhU291cmNlIHsKLXB1YmxpYzoKLSAgICBDYWNoaW5nRGF0YVNvdXJjZSgKLSAgICAgICAgICAgIGNvbnN0IHNwPERhdGFTb3VyY2U+ICZzb3VyY2UsIHNpemVfdCBwYWdlU2l6ZSwgaW50IG51bVBhZ2VzKTsKLQotICAgIHZpcnR1YWwgc3RhdHVzX3QgaW5pdENoZWNrKCkgY29uc3Q7Ci0KLSAgICB2aXJ0dWFsIHNzaXplX3QgcmVhZEF0KG9mZl90IG9mZnNldCwgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUpOwotCi0gICAgdmlydHVhbCBzdGF0dXNfdCBnZXRTaXplKG9mZl90ICpzaXplKTsKLQotICAgIHZpcnR1YWwgdWludDMyX3QgZmxhZ3MoKTsKLQotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgfkNhY2hpbmdEYXRhU291cmNlKCk7Ci0KLXByaXZhdGU6Ci0gICAgc3RydWN0IFBhZ2UgewotICAgICAgICBQYWdlICptUHJldiwgKm1OZXh0OwotICAgICAgICBvZmZfdCBtT2Zmc2V0OwotICAgICAgICBzaXplX3QgbUxlbmd0aDsKLSAgICAgICAgdm9pZCAqbURhdGE7Ci0gICAgfTsKLQotICAgIHNwPERhdGFTb3VyY2U+IG1Tb3VyY2U7Ci0gICAgdm9pZCAqbURhdGE7Ci0gICAgc2l6ZV90IG1QYWdlU2l6ZTsKLSAgICBQYWdlICptRmlyc3QsICptTGFzdDsKLQotICAgIFBhZ2UgKmFsbG9jYXRlX3BhZ2UoKTsKLQotICAgIE11dGV4IG1Mb2NrOwotCi0gICAgQ2FjaGluZ0RhdGFTb3VyY2UoY29uc3QgQ2FjaGluZ0RhdGFTb3VyY2UgJik7Ci0gICAgQ2FjaGluZ0RhdGFTb3VyY2UgJm9wZXJhdG9yPShjb25zdCBDYWNoaW5nRGF0YVNvdXJjZSAmKTsKLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCi0KLSNlbmRpZiAgLy8gQ0FDSElOR19EQVRBU09VUkNFX0hfCmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L0NhbWVyYVNvdXJjZS5oIGIvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9DYW1lcmFTb3VyY2UuaAppbmRleCBlYTQzNWRlLi4zMTkyZDAzIDEwMDY0NAotLS0gYS9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L0NhbWVyYVNvdXJjZS5oCisrKyBiL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvQ2FtZXJhU291cmNlLmgKQEAgLTI4LDE4ICsyOCwxNSBAQAogCiBjbGFzcyBJQ2FtZXJhOwogY2xhc3MgSU1lbW9yeTsKLWNsYXNzIElTdXJmYWNlOwogY2xhc3MgQ2FtZXJhOwogCi1jbGFzcyBDYW1lcmFTb3VyY2UgOiBwdWJsaWMgTWVkaWFTb3VyY2UgeworY2xhc3MgQ2FtZXJhU291cmNlIDogcHVibGljIE1lZGlhU291cmNlLCBwdWJsaWMgTWVkaWFCdWZmZXJPYnNlcnZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIENhbWVyYVNvdXJjZSAqQ3JlYXRlKCk7Ci0gICAgc3RhdGljIENhbWVyYVNvdXJjZSAqQ3JlYXRlRnJvbUlDYW1lcmEoY29uc3Qgc3A8SUNhbWVyYT4gJmljYW1lcmEpOworICAgIHN0YXRpYyBDYW1lcmFTb3VyY2UgKkNyZWF0ZUZyb21DYW1lcmEoY29uc3Qgc3A8Q2FtZXJhPiAmY2FtZXJhKTsKIAogICAgIHZpcnR1YWwgfkNhbWVyYVNvdXJjZSgpOwogCi0gICAgdm9pZCBzZXRQcmV2aWV3U3VyZmFjZShjb25zdCBzcDxJU3VyZmFjZT4gJnN1cmZhY2UpOwotCiAgICAgdmlydHVhbCBzdGF0dXNfdCBzdGFydChNZXRhRGF0YSAqcGFyYW1zID0gTlVMTCk7CiAgICAgdmlydHVhbCBzdGF0dXNfdCBzdG9wKCk7CiAKQEAgLTQ4LDI1ICs0NSwzOSBAQAogICAgIHZpcnR1YWwgc3RhdHVzX3QgcmVhZCgKICAgICAgICAgICAgIE1lZGlhQnVmZmVyICoqYnVmZmVyLCBjb25zdCBSZWFkT3B0aW9ucyAqb3B0aW9ucyA9IE5VTEwpOwogCisgICAgdmlydHVhbCB2b2lkIHNpZ25hbEJ1ZmZlclJldHVybmVkKE1lZGlhQnVmZmVyKiBidWZmZXIpOworCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBDYW1lcmFTb3VyY2VMaXN0ZW5lcjsKIAogICAgIHNwPENhbWVyYT4gbUNhbWVyYTsKLSAgICBzcDxJU3VyZmFjZT4gbVByZXZpZXdTdXJmYWNlOworICAgIHNwPE1ldGFEYXRhPiBtTWV0YTsKIAogICAgIE11dGV4IG1Mb2NrOwogICAgIENvbmRpdGlvbiBtRnJhbWVBdmFpbGFibGVDb25kaXRpb247Ci0gICAgTGlzdDxzcDxJTWVtb3J5PiA+IG1GcmFtZXM7CisgICAgQ29uZGl0aW9uIG1GcmFtZUNvbXBsZXRlQ29uZGl0aW9uOworICAgIExpc3Q8c3A8SU1lbW9yeT4gPiBtRnJhbWVzUmVjZWl2ZWQ7CisgICAgTGlzdDxzcDxJTWVtb3J5PiA+IG1GcmFtZXNCZWluZ0VuY29kZWQ7CiAgICAgTGlzdDxpbnQ2NF90PiBtRnJhbWVUaW1lczsKIAotICAgIGludCBtV2lkdGgsIG1IZWlnaHQ7CisgICAgaW50NjRfdCBtU3RhcnRUaW1lVXM7CiAgICAgaW50NjRfdCBtRmlyc3RGcmFtZVRpbWVVczsKLSAgICBpbnQzMl90IG1OdW1GcmFtZXM7CisgICAgaW50NjRfdCBtTGFzdEZyYW1lVGltZXN0YW1wVXM7CisgICAgaW50MzJfdCBtTnVtRnJhbWVzUmVjZWl2ZWQ7CisgICAgaW50MzJfdCBtTnVtRnJhbWVzRW5jb2RlZDsKKyAgICBpbnQzMl90IG1OdW1GcmFtZXNEcm9wcGVkOworICAgIGludDMyX3QgbU51bUdsaXRjaGVzOworICAgIGludDY0X3QgbUdsaXRjaER1cmF0aW9uVGhyZXNob2xkVXM7CisgICAgYm9vbCBtQ29sbGVjdFN0YXRzOwogICAgIGJvb2wgbVN0YXJ0ZWQ7CiAKICAgICBDYW1lcmFTb3VyY2UoY29uc3Qgc3A8Q2FtZXJhPiAmY2FtZXJhKTsKIAotICAgIHZvaWQgZGF0YUNhbGxiYWNrKGludDMyX3QgbXNnVHlwZSwgY29uc3Qgc3A8SU1lbW9yeT4gJmRhdGEpOworICAgIHZvaWQgZGF0YUNhbGxiYWNrVGltZXN0YW1wKAorICAgICAgICAgICAgaW50NjRfdCB0aW1lc3RhbXBVcywgaW50MzJfdCBtc2dUeXBlLCBjb25zdCBzcDxJTWVtb3J5PiAmZGF0YSk7CisKKyAgICB2b2lkIHJlbGVhc2VRdWV1ZWRGcmFtZXMoKTsKKyAgICB2b2lkIHJlbGVhc2VPbmVSZWNvcmRpbmdGcmFtZShjb25zdCBzcDxJTWVtb3J5PiYgZnJhbWUpOwogCiAgICAgQ2FtZXJhU291cmNlKGNvbnN0IENhbWVyYVNvdXJjZSAmKTsKICAgICBDYW1lcmFTb3VyY2UgJm9wZXJhdG9yPShjb25zdCBDYW1lcmFTb3VyY2UgJik7CmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L0NvbG9yQ29udmVydGVyLmggYi9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L0NvbG9yQ29udmVydGVyLmgKaW5kZXggMWUzNDFiOS4uYmMzZjQ2NCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9Db2xvckNvbnZlcnRlci5oCisrKyBiL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvQ29sb3JDb252ZXJ0ZXIuaApAQCAtNTgsNiArNTgsMTEgQEAKICAgICAgICAgICAgIGNvbnN0IHZvaWQgKnNyY0JpdHMsIHNpemVfdCBzcmNTa2lwLAogICAgICAgICAgICAgdm9pZCAqZHN0Qml0cywgc2l6ZV90IGRzdFNraXApOwogCisgICAgdm9pZCBjb252ZXJ0WVVWNDIwU2VtaVBsYW5hcigKKyAgICAgICAgICAgIHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgICAgIGNvbnN0IHZvaWQgKnNyY0JpdHMsIHNpemVfdCBzcmNTa2lwLAorICAgICAgICAgICAgdm9pZCAqZHN0Qml0cywgc2l6ZV90IGRzdFNraXApOworCiAgICAgQ29sb3JDb252ZXJ0ZXIoY29uc3QgQ29sb3JDb252ZXJ0ZXIgJik7CiAgICAgQ29sb3JDb252ZXJ0ZXIgJm9wZXJhdG9yPShjb25zdCBDb2xvckNvbnZlcnRlciAmKTsKIH07CmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L0hUVFBEYXRhU291cmNlLmggYi9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L0hUVFBEYXRhU291cmNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0MDBiZWEuLjAwMDAwMDAKLS0tIGEvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9IVFRQRGF0YVNvdXJjZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi0jaWZuZGVmIEhUVFBfREFUQVNPVVJDRV9IXwotCi0jZGVmaW5lIEhUVFBfREFUQVNPVVJDRV9IXwotCi0jaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvRGF0YVNvdXJjZS5oPgotI2luY2x1ZGUgPHV0aWxzL1N0cmluZzguaD4KLSNpbmNsdWRlIDx1dGlscy90aHJlYWRzLmg+Ci0KLW5hbWVzcGFjZSBhbmRyb2lkIHsKLQotY2xhc3MgSFRUUFN0cmVhbTsKLQotY2xhc3MgSFRUUERhdGFTb3VyY2UgOiBwdWJsaWMgRGF0YVNvdXJjZSB7Ci1wdWJsaWM6Ci0gICAgSFRUUERhdGFTb3VyY2UoCi0gICAgICAgICAgICBjb25zdCBjaGFyICpob3N0LCBpbnQgcG9ydCwgY29uc3QgY2hhciAqcGF0aCwKLSAgICAgICAgICAgIGNvbnN0IEtleWVkVmVjdG9yPFN0cmluZzgsIFN0cmluZzg+ICpoZWFkZXJzID0gTlVMTCk7Ci0KLSAgICBIVFRQRGF0YVNvdXJjZSgKLSAgICAgICAgICAgIGNvbnN0IGNoYXIgKnVyaSwKLSAgICAgICAgICAgIGNvbnN0IEtleWVkVmVjdG9yPFN0cmluZzgsIFN0cmluZzg+ICpoZWFkZXJzID0gTlVMTCk7Ci0KLSAgICBzdGF0dXNfdCBjb25uZWN0KCk7Ci0gICAgdm9pZCBkaXNjb25uZWN0KCk7Ci0KLSAgICB2aXJ0dWFsIHN0YXR1c190IGluaXRDaGVjaygpIGNvbnN0OwotCi0gICAgdmlydHVhbCBzc2l6ZV90IHJlYWRBdChvZmZfdCBvZmZzZXQsIHZvaWQgKmRhdGEsIHNpemVfdCBzaXplKTsKLQotICAgIHZpcnR1YWwgc3RhdHVzX3QgZ2V0U2l6ZShvZmZfdCAqc2l6ZSk7Ci0KLSAgICB2aXJ0dWFsIHVpbnQzMl90IGZsYWdzKCk7Ci0KLXByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIH5IVFRQRGF0YVNvdXJjZSgpOwotCi1wcml2YXRlOgotICAgIGVudW0gewotICAgICAgICBrQnVmZmVyU2l6ZSA9IDY0ICogMTAyNCwKLQotICAgICAgICAvLyBJZiB3ZSBlbmNvdW50ZXIgYSBzb2NrZXQtcmVhZCBlcnJvciB3ZSdsbCB0cnkgcmVjb25uZWN0aW5nCi0gICAgICAgIC8vIGFuZCByZXN0YXJ0aW5nIHRoZSByZWFkIGZvciBhdCBtb3N0IHRoaXMgbWFueSB0aW1lcy4KLSAgICAgICAga01heE51bVJldHJpZXMgPSAzLAotICAgIH07Ci0KLSAgICBlbnVtIFN0YXRlIHsKLSAgICAgICAgRElTQ09OTkVDVEVELAotICAgICAgICBDT05ORUNUSU5HLAotICAgICAgICBDT05ORUNURUQKLSAgICB9OwotCi0gICAgU3RhdGUgbVN0YXRlOwotICAgIG11dGFibGUgTXV0ZXggbVN0YXRlTG9jazsKLQotICAgIFN0cmluZzggbUhlYWRlcnM7Ci0KLSAgICBTdHJpbmc4IG1TdGFydGluZ0hvc3Q7Ci0gICAgU3RyaW5nOCBtU3RhcnRpbmdQYXRoOwotICAgIGludCBtU3RhcnRpbmdQb3J0OwotCi0gICAgSFRUUFN0cmVhbSAqbUh0dHA7Ci0KLSAgICB2b2lkICptQnVmZmVyOwotICAgIHNpemVfdCBtQnVmZmVyTGVuZ3RoOwotICAgIG9mZl90IG1CdWZmZXJPZmZzZXQ7Ci0KLSAgICBib29sIG1Db250ZW50TGVuZ3RoVmFsaWQ7Ci0gICAgdW5zaWduZWQgbG9uZyBsb25nIG1Db250ZW50TGVuZ3RoOwotCi0gICAgaW50MzJfdCBtTnVtUmV0cmllc0xlZnQ7Ci0KLSAgICB2b2lkIGluaXQoY29uc3QgS2V5ZWRWZWN0b3I8U3RyaW5nOCwgU3RyaW5nOD4gKmhlYWRlcnMpOwotCi0gICAgc3NpemVfdCBzZW5kUmFuZ2VSZXF1ZXN0KHNpemVfdCBvZmZzZXQpOwotICAgIHZvaWQgaW5pdEhlYWRlcnMoY29uc3QgS2V5ZWRWZWN0b3I8U3RyaW5nOCwgU3RyaW5nOD4gKm92ZXJyaWRlcyk7Ci0KLSAgICBzdGF0dXNfdCBjb25uZWN0V2l0aFJlZGlyZWN0c0FuZFJhbmdlKG9mZl90IHJhbmdlU3RhcnQpOwotICAgIHZvaWQgYXBwbHlUaW1lb3V0UmVzcG9uc2UoKTsKLQotICAgIEhUVFBEYXRhU291cmNlKGNvbnN0IEhUVFBEYXRhU291cmNlICYpOwotICAgIEhUVFBEYXRhU291cmNlICZvcGVyYXRvcj0oY29uc3QgSFRUUERhdGFTb3VyY2UgJik7Ci19OwotCi19ICAvLyBuYW1lc3BhY2UgYW5kcm9pZAotCi0jZW5kaWYgIC8vIEhUVFBfREFUQVNPVVJDRV9IXwotCmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L01QRUc0V3JpdGVyLmggYi9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L01QRUc0V3JpdGVyLmgKaW5kZXggNmI5M2YxOS4uOTYyYjM4YiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9NUEVHNFdyaXRlci5oCisrKyBiL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvTVBFRzRXcml0ZXIuaApAQCAtMzYsOSArMzYsMTAgQEAKICAgICBNUEVHNFdyaXRlcihpbnQgZmQpOwogCiAgICAgdmlydHVhbCBzdGF0dXNfdCBhZGRTb3VyY2UoY29uc3Qgc3A8TWVkaWFTb3VyY2U+ICZzb3VyY2UpOwotICAgIHZpcnR1YWwgc3RhdHVzX3Qgc3RhcnQoKTsKKyAgICB2aXJ0dWFsIHN0YXR1c190IHN0YXJ0KE1ldGFEYXRhICpwYXJhbSA9IE5VTEwpOwogICAgIHZpcnR1YWwgYm9vbCByZWFjaGVkRU9TKCk7CiAgICAgdmlydHVhbCB2b2lkIHN0b3AoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGF1c2UoKTsKIAogICAgIHZvaWQgYmVnaW5Cb3goY29uc3QgY2hhciAqZm91cmNjKTsKICAgICB2b2lkIHdyaXRlSW50OChpbnQ4X3QgeCk7CkBAIC00OSw2ICs1MCw4IEBACiAgICAgdm9pZCB3cml0ZUZvdXJjYyhjb25zdCBjaGFyICpmb3VyY2MpOwogICAgIHZvaWQgd3JpdGUoY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUpOwogICAgIHZvaWQgZW5kQm94KCk7CisgICAgdWludDMyX3QgaW50ZXJsZWF2ZUR1cmF0aW9uKCkgY29uc3QgeyByZXR1cm4gbUludGVybGVhdmVEdXJhdGlvblVzOyB9CisgICAgc3RhdHVzX3Qgc2V0SW50ZXJsZWF2ZUR1cmF0aW9uKHVpbnQzMl90IGR1cmF0aW9uKTsKIAogcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgfk1QRUc0V3JpdGVyKCk7CkBAIC01NywxNiArNjAsNDEgQEAKICAgICBjbGFzcyBUcmFjazsKIAogICAgIEZJTEUgKm1GaWxlOworICAgIGJvb2wgbVVzZTMyQml0T2Zmc2V0OworICAgIGJvb2wgbVBhdXNlZDsKKyAgICBib29sIG1TdGFydGVkOwogICAgIG9mZl90IG1PZmZzZXQ7CiAgICAgb2ZmX3QgbU1kYXRPZmZzZXQ7CisgICAgdWludDhfdCAqbU1vb3ZCb3hCdWZmZXI7CisgICAgb2ZmX3QgbU1vb3ZCb3hCdWZmZXJPZmZzZXQ7CisgICAgYm9vbCAgbVdyaXRlTW9vdkJveFRvTWVtb3J5OworICAgIG9mZl90IG1GcmVlQm94T2Zmc2V0OworICAgIGJvb2wgbVN0cmVhbWFibGVGaWxlOworICAgIG9mZl90IG1Fc3RpbWF0ZWRNb292Qm94U2l6ZTsKKyAgICB1aW50MzJfdCBtSW50ZXJsZWF2ZUR1cmF0aW9uVXM7CisgICAgaW50NjRfdCBtU3RhcnRUaW1lc3RhbXBVczsKICAgICBNdXRleCBtTG9jazsKIAogICAgIExpc3Q8VHJhY2sgKj4gbVRyYWNrczsKIAogICAgIExpc3Q8b2ZmX3Q+IG1Cb3hlczsKIAotICAgIG9mZl90IGFkZFNhbXBsZShNZWRpYUJ1ZmZlciAqYnVmZmVyKTsKLSAgICBvZmZfdCBhZGRMZW5ndGhQcmVmaXhlZFNhbXBsZShNZWRpYUJ1ZmZlciAqYnVmZmVyKTsKKyAgICB2b2lkIHNldFN0YXJ0VGltZXN0YW1wVXMoaW50NjRfdCB0aW1lVXMpOworICAgIGludDY0X3QgZ2V0U3RhcnRUaW1lc3RhbXBVcygpOyAgLy8gTm90IGNvbnN0CisgICAgc3RhdHVzX3Qgc3RhcnRUcmFja3MoTWV0YURhdGEgKnBhcmFtcyk7CisgICAgc2l6ZV90IG51bVRyYWNrcygpOworICAgIGludDY0X3QgZXN0aW1hdGVNb292Qm94U2l6ZShpbnQzMl90IGJpdFJhdGUpOworCisgICAgdm9pZCBsb2NrKCk7CisgICAgdm9pZCB1bmxvY2soKTsKKworICAgIC8vIEFjcXVpcmUgbG9jayBiZWZvcmUgY2FsbGluZyB0aGVzZSBtZXRob2RzCisgICAgb2ZmX3QgYWRkU2FtcGxlX2woTWVkaWFCdWZmZXIgKmJ1ZmZlcik7CisgICAgb2ZmX3QgYWRkTGVuZ3RoUHJlZml4ZWRTYW1wbGVfbChNZWRpYUJ1ZmZlciAqYnVmZmVyKTsKKworICAgIGlubGluZSBzaXplX3Qgd3JpdGUoY29uc3Qgdm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG5tZW1iLCBGSUxFKiBzdHJlYW0pOworICAgIGJvb2wgZXhjZWVkc0ZpbGVTaXplTGltaXQoKTsKKyAgICBib29sIGV4Y2VlZHNGaWxlRHVyYXRpb25MaW1pdCgpOwogCiAgICAgTVBFRzRXcml0ZXIoY29uc3QgTVBFRzRXcml0ZXIgJik7CiAgICAgTVBFRzRXcml0ZXIgJm9wZXJhdG9yPShjb25zdCBNUEVHNFdyaXRlciAmKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFEZWZzLmggYi9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L01lZGlhRGVmcy5oCmluZGV4IDIwNzE5NWEuLjljZGRhYjIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFEZWZzLmgKKysrIGIvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9NZWRpYURlZnMuaApAQCAtMjIsNiArMjIsNyBAQAogCiBleHRlcm4gY29uc3QgY2hhciAqTUVESUFfTUlNRVRZUEVfSU1BR0VfSlBFRzsKIAorZXh0ZXJuIGNvbnN0IGNoYXIgKk1FRElBX01JTUVUWVBFX1ZJREVPX1ZQWDsKIGV4dGVybiBjb25zdCBjaGFyICpNRURJQV9NSU1FVFlQRV9WSURFT19BVkM7CiBleHRlcm4gY29uc3QgY2hhciAqTUVESUFfTUlNRVRZUEVfVklERU9fTVBFRzQ7CiBleHRlcm4gY29uc3QgY2hhciAqTUVESUFfTUlNRVRZUEVfVklERU9fSDI2MzsKQEAgLTM4LDYgKzM5LDggQEAKIGV4dGVybiBjb25zdCBjaGFyICpNRURJQV9NSU1FVFlQRV9DT05UQUlORVJfTVBFRzQ7CiBleHRlcm4gY29uc3QgY2hhciAqTUVESUFfTUlNRVRZUEVfQ09OVEFJTkVSX1dBVjsKIGV4dGVybiBjb25zdCBjaGFyICpNRURJQV9NSU1FVFlQRV9DT05UQUlORVJfT0dHOworZXh0ZXJuIGNvbnN0IGNoYXIgKk1FRElBX01JTUVUWVBFX0NPTlRBSU5FUl9NQVRST1NLQTsKK2V4dGVybiBjb25zdCBjaGFyICpNRURJQV9NSU1FVFlQRV9DT05UQUlORVJfTVBFRzJUUzsKIAogfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9NZWRpYVNvdXJjZS5oIGIvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9NZWRpYVNvdXJjZS5oCmluZGV4IDk2ZDU3ZTcuLjljYzk0YzggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFTb3VyY2UuaAorKysgYi9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L01lZGlhU291cmNlLmgKQEAgLTIwLDYgKzIwLDcgQEAKIAogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogCisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFFcnJvcnMuaD4KICNpbmNsdWRlIDx1dGlscy9SZWZCYXNlLmg+CiAKIG5hbWVzcGFjZSBhbmRyb2lkIHsKQEAgLTgzLDYgKzg0LDEzIEBACiAgICAgICAgIGludDY0X3QgbUxhdGVuZXNzVXM7CiAgICAgfTsKIAorICAgIC8vIENhdXNlcyB0aGlzIHNvdXJjZSB0byBzdXNwZW5kIHB1bGxpbmcgZGF0YSBmcm9tIGl0cyB1cHN0cmVhbSBzb3VyY2UKKyAgICAvLyB1bnRpbCBhIHN1YnNlcXVlbnQgcmVhZC13aXRoLXNlZWsuIEN1cnJlbnRseSBvbmx5IHN1cHBvcnRlZCBieQorICAgIC8vIE9NWENvZGVjLgorICAgIHZpcnR1YWwgc3RhdHVzX3QgcGF1c2UoKSB7CisgICAgICAgIHJldHVybiBFUlJPUl9VTlNVUFBPUlRFRDsKKyAgICB9CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5NZWRpYVNvdXJjZSgpOwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L01lZGlhV3JpdGVyLmggYi9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L01lZGlhV3JpdGVyLmgKaW5kZXggYjgyMzJjNi4uOGQzYTlkZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9NZWRpYVdyaXRlci5oCisrKyBiL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFXcml0ZXIuaApAQCAtMTksMjIgKzE5LDQxIEBACiAjZGVmaW5lIE1FRElBX1dSSVRFUl9IXwogCiAjaW5jbHVkZSA8dXRpbHMvUmVmQmFzZS5oPgorI2luY2x1ZGUgPG1lZGlhL0lNZWRpYVJlY29yZGVyQ2xpZW50Lmg+CiAKIG5hbWVzcGFjZSBhbmRyb2lkIHsKIAogc3RydWN0IE1lZGlhU291cmNlOworc3RydWN0IE1ldGFEYXRhOwogCiBzdHJ1Y3QgTWVkaWFXcml0ZXIgOiBwdWJsaWMgUmVmQmFzZSB7Ci0gICAgTWVkaWFXcml0ZXIoKSB7fQorICAgIE1lZGlhV3JpdGVyKCkKKyAgICAgICAgOiBtTWF4RmlsZVNpemVMaW1pdEJ5dGVzKDApLAorICAgICAgICAgIG1NYXhGaWxlRHVyYXRpb25MaW1pdFVzKDApIHsKKyAgICB9CiAKICAgICB2aXJ0dWFsIHN0YXR1c190IGFkZFNvdXJjZShjb25zdCBzcDxNZWRpYVNvdXJjZT4gJnNvdXJjZSkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCByZWFjaGVkRU9TKCkgPSAwOwotICAgIHZpcnR1YWwgc3RhdHVzX3Qgc3RhcnQoKSA9IDA7CisgICAgdmlydHVhbCBzdGF0dXNfdCBzdGFydChNZXRhRGF0YSAqcGFyYW1zID0gTlVMTCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBzdG9wKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwYXVzZSgpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0TWF4RmlsZVNpemUoaW50NjRfdCBieXRlcykgeyBtTWF4RmlsZVNpemVMaW1pdEJ5dGVzID0gYnl0ZXM7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0TWF4RmlsZUR1cmF0aW9uKGludDY0X3QgZHVyYXRpb25VcykgeyBtTWF4RmlsZUR1cmF0aW9uTGltaXRVcyA9IGR1cmF0aW9uVXM7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2V0TGlzdGVuZXIoY29uc3Qgc3A8SU1lZGlhUmVjb3JkZXJDbGllbnQ+JiBsaXN0ZW5lcikgeworICAgICAgICBtTGlzdGVuZXIgPSBsaXN0ZW5lcjsKKyAgICB9CiAKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5NZWRpYVdyaXRlcigpIHt9CisgICAgaW50NjRfdCBtTWF4RmlsZVNpemVMaW1pdEJ5dGVzOworICAgIGludDY0X3QgbU1heEZpbGVEdXJhdGlvbkxpbWl0VXM7CisgICAgc3A8SU1lZGlhUmVjb3JkZXJDbGllbnQ+IG1MaXN0ZW5lcjsKIAorICAgIHZvaWQgbm90aWZ5KGludCBtc2csIGludCBleHQxLCBpbnQgZXh0MikgeworICAgICAgICBpZiAobUxpc3RlbmVyICE9IE5VTEwpIHsKKyAgICAgICAgICAgIG1MaXN0ZW5lci0+bm90aWZ5KG1zZywgZXh0MSwgZXh0Mik7CisgICAgICAgIH0KKyAgICB9CiBwcml2YXRlOgogICAgIE1lZGlhV3JpdGVyKGNvbnN0IE1lZGlhV3JpdGVyICYpOwogICAgIE1lZGlhV3JpdGVyICZvcGVyYXRvcj0oY29uc3QgTWVkaWFXcml0ZXIgJik7CmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L01ldGFEYXRhLmggYi9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L01ldGFEYXRhLmgKaW5kZXggZGMyYmQ1MC4uNzNmNTU0NyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9NZXRhRGF0YS5oCisrKyBiL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvTWV0YURhdGEuaApAQCAtMzAsMTAgKzMwLDEzIEBACiAvLyBUaGUgZm9sbG93aW5nIGtleXMgbWFwIHRvIGludDMyX3QgZGF0YSB1bmxlc3MgaW5kaWNhdGVkIG90aGVyd2lzZS4KIGVudW0gewogICAgIGtLZXlNSU1FVHlwZSAgICAgICAgICA9ICdtaW1lJywgIC8vIGNzdHJpbmcKLSAgICBrS2V5V2lkdGggICAgICAgICAgICAgPSAnd2lkdCcsCi0gICAga0tleUhlaWdodCAgICAgICAgICAgID0gJ2hlaWcnLAotICAgIGtLZXlDaGFubmVsQ291bnQgICAgICA9ICcjY2huJywKLSAgICBrS2V5U2FtcGxlUmF0ZSAgICAgICAgPSAnc3J0ZScsCisgICAga0tleVdpZHRoICAgICAgICAgICAgID0gJ3dpZHQnLCAgLy8gaW50MzJfdAorICAgIGtLZXlIZWlnaHQgICAgICAgICAgICA9ICdoZWlnJywgIC8vIGludDMyX3QKKyAgICBrS2V5SUZyYW1lc0ludGVydmFsICAgPSAnaWZpdicsICAvLyBpbnQzMl90CisgICAga0tleVN0cmlkZSAgICAgICAgICAgID0gJ3N0cmQnLCAgLy8gaW50MzJfdAorICAgIGtLZXlTbGljZUhlaWdodCAgICAgICA9ICdzbGh0JywgIC8vIGludDMyX3QKKyAgICBrS2V5Q2hhbm5lbENvdW50ICAgICAgPSAnI2NobicsICAvLyBpbnQzMl90CisgICAga0tleVNhbXBsZVJhdGUgICAgICAgID0gJ3NydGUnLCAgLy8gaW50MzJfdCAoYWxzbyB2aWRlbyBmcmFtZSByYXRlKQogICAgIGtLZXlCaXRSYXRlICAgICAgICAgICA9ICdicnRlJywgIC8vIGludDMyX3QgKGJwcykKICAgICBrS2V5RVNEUyAgICAgICAgICAgICAgPSAnZXNkcycsICAvLyByYXcgZGF0YQogICAgIGtLZXlBVkNDICAgICAgICAgICAgICA9ICdhdmNjJywgIC8vIHJhdyBkYXRhCkBAIC02NSw2ICs2OCwyNSBAQAogICAgIGtLZXlEaXNjTnVtYmVyICAgICAgICA9ICdkbnVtJywgIC8vIGNzdHJpbmcKICAgICBrS2V5RGF0ZSAgICAgICAgICAgICAgPSAnZGF0ZScsICAvLyBjc3RyaW5nCiAgICAga0tleVdyaXRlciAgICAgICAgICAgID0gJ3dyaXQnLCAgLy8gY3N0cmluZworCisgICAgLy8gdmlkZW8gcHJvZmlsZSBhbmQgbGV2ZWwKKyAgICBrS2V5VmlkZW9Qcm9maWxlICAgICAgPSAndnByZicsICAvLyBpbnQzMl90CisgICAga0tleVZpZGVvTGV2ZWwgICAgICAgID0gJ3ZsZXYnLCAgLy8gaW50MzJfdAorCisgICAgLy8gU2V0IHRoaXMga2V5IHRvIGVuYWJsZSBhdXRob3JpbmcgZmlsZXMgaW4gNjQtYml0IG9mZnNldAorICAgIGtLZXk2NEJpdEZpbGVPZmZzZXQgICA9ICdmb2J0JywgIC8vIGludDMyX3QgKGJvb2wpCisKKyAgICAvLyBJZGVudGlmeSB0aGUgZmlsZSBvdXRwdXQgZm9ybWF0IGZvciBhdXRob3JpbmcKKyAgICAvLyBQbGVhc2Ugc2VlIDxtZWRpYS9tZWRpYXJlY29yZGVyLmg+IGZvciB0aGUgc3VwcG9ydGVkCisgICAgLy8gZmlsZSBvdXRwdXQgZm9ybWF0cy4KKyAgICBrS2V5RmlsZVR5cGUgICAgICAgICAgPSAnZnR5cCcsICAvLyBpbnQzMl90CisKKyAgICAvLyBUcmFjayBhdXRob3JpbmcgcHJvZ3Jlc3Mgc3RhdHVzCisgICAgLy8ga0tleVRyYWNrVGltZVN0YXR1cyBpcyB1c2VkIHRvIHRyYWNrIHByb2dyZXNzIGluIGVsYXBzZWQgdGltZQorICAgIC8vIGtLZXlUcmFja0ZyYW1lU3RhdHVzIGlzIHVzZWQgdG8gdHJhY2sgcHJvZ3Jlc3MgaW4gYXV0aG9yZWQgZnJhbWVzCisgICAga0tleVRyYWNrRnJhbWVTdGF0dXMgID0gJ3RrZm0nLCAgLy8gaW50MzJfdAorICAgIGtLZXlUcmFja1RpbWVTdGF0dXMgICA9ICd0a3RtJywgIC8vIGludDY0X3QKKwogfTsKIAogZW51bSB7CmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L09NWENvZGVjLmggYi9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L09NWENvZGVjLmgKaW5kZXggMWQ3NmExYS4uMjE0ZjQzYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9PTVhDb2RlYy5oCisrKyBiL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvT01YQ29kZWMuaApAQCAtMjcsNiArMjcsNyBAQAogCiBjbGFzcyBNZW1vcnlEZWFsZXI7CiBzdHJ1Y3QgT01YQ29kZWNPYnNlcnZlcjsKK3N0cnVjdCBDb2RlY1Byb2ZpbGVMZXZlbDsKIAogc3RydWN0IE9NWENvZGVjIDogcHVibGljIE1lZGlhU291cmNlLAogICAgICAgICAgICAgICAgICAgcHVibGljIE1lZGlhQnVmZmVyT2JzZXJ2ZXIgewpAQCAtNTIsNiArNTMsOCBAQAogICAgIHZpcnR1YWwgc3RhdHVzX3QgcmVhZCgKICAgICAgICAgICAgIE1lZGlhQnVmZmVyICoqYnVmZmVyLCBjb25zdCBSZWFkT3B0aW9ucyAqb3B0aW9ucyA9IE5VTEwpOwogCisgICAgdmlydHVhbCBzdGF0dXNfdCBwYXVzZSgpOworCiAgICAgdm9pZCBvbl9tZXNzYWdlKGNvbnN0IG9teF9tZXNzYWdlICZtc2cpOwogCiAgICAgLy8gZnJvbSBNZWRpYUJ1ZmZlck9ic2VydmVyCkBAIC05OCw2ICsxMDEsNyBAQAogICAgICAgICBrRGVjb2RlckxpZXNBYm91dE51bWJlck9mQ2hhbm5lbHMgICAgID0gMjU2LAogICAgICAgICBrSW5wdXRCdWZmZXJTaXplc0FyZUJvZ3VzICAgICAgICAgICAgID0gNTEyLAogICAgICAgICBrU3VwcG9ydHNNdWx0aXBsZUZyYW1lc1BlcklucHV0QnVmZmVyID0gMTAyNCwKKyAgICAgICAga0F2b2lkTWVtY29weUlucHV0UmVjb3JkaW5nRnJhbWVzICAgICA9IDIwNDgsCiAgICAgfTsKIAogICAgIHN0cnVjdCBCdWZmZXJJbmZvIHsKQEAgLTE0Myw2ICsxNDcsOCBAQAogICAgIE11dGV4IG1Mb2NrOwogICAgIENvbmRpdGlvbiBtQXN5bmNDb21wbGV0aW9uOwogCisgICAgYm9vbCBtUGF1c2VkOworCiAgICAgLy8gQSBsaXN0IG9mIGluZGljZXMgaW50byBtUG9ydFN0YXR1c1trUG9ydEluZGV4T3V0cHV0XSBmaWxsZWQgd2l0aCBkYXRhLgogICAgIExpc3Q8c2l6ZV90PiBtRmlsbGVkQnVmZmVyczsKICAgICBDb25kaXRpb24gbUJ1ZmZlckZpbGxlZDsKQEAgLTE1Niw4ICsxNjIsOCBAQAogCiAgICAgdm9pZCBzZXRDb21wb25lbnRSb2xlKCk7CiAKLSAgICB2b2lkIHNldEFNUkZvcm1hdChib29sIGlzV0FNUik7Ci0gICAgdm9pZCBzZXRBQUNGb3JtYXQoaW50MzJfdCBudW1DaGFubmVscywgaW50MzJfdCBzYW1wbGVSYXRlKTsKKyAgICB2b2lkIHNldEFNUkZvcm1hdChib29sIGlzV0FNUiwgaW50MzJfdCBiaXRSYXRlKTsKKyAgICB2b2lkIHNldEFBQ0Zvcm1hdChpbnQzMl90IG51bUNoYW5uZWxzLCBpbnQzMl90IHNhbXBsZVJhdGUsIGludDMyX3QgYml0UmF0ZSk7CiAKICAgICBzdGF0dXNfdCBzZXRWaWRlb1BvcnRGb3JtYXRUeXBlKAogICAgICAgICAgICAgT01YX1UzMiBwb3J0SW5kZXgsCkBAIC0xNjUsMTAgKzE3MSwxOSBAQAogICAgICAgICAgICAgT01YX0NPTE9SX0ZPUk1BVFRZUEUgY29sb3JGb3JtYXQpOwogCiAgICAgdm9pZCBzZXRWaWRlb0lucHV0Rm9ybWF0KAotICAgICAgICAgICAgY29uc3QgY2hhciAqbWltZSwgT01YX1UzMiB3aWR0aCwgT01YX1UzMiBoZWlnaHQpOworICAgICAgICAgICAgY29uc3QgY2hhciAqbWltZSwgY29uc3Qgc3A8TWV0YURhdGE+JiBtZXRhKTsKIAotICAgIHN0YXR1c190IHNldHVwTVBFRzRFbmNvZGVyUGFyYW1ldGVycygpOwotICAgIHN0YXR1c190IHNldHVwQVZDRW5jb2RlclBhcmFtZXRlcnMoKTsKKyAgICBzdGF0dXNfdCBzZXR1cEJpdFJhdGUoaW50MzJfdCBiaXRSYXRlKTsKKyAgICBzdGF0dXNfdCBzZXR1cEVycm9yQ29ycmVjdGlvblBhcmFtZXRlcnMoKTsKKyAgICBzdGF0dXNfdCBzZXR1cEgyNjNFbmNvZGVyUGFyYW1ldGVycyhjb25zdCBzcDxNZXRhRGF0YT4mIG1ldGEpOworICAgIHN0YXR1c190IHNldHVwTVBFRzRFbmNvZGVyUGFyYW1ldGVycyhjb25zdCBzcDxNZXRhRGF0YT4mIG1ldGEpOworICAgIHN0YXR1c190IHNldHVwQVZDRW5jb2RlclBhcmFtZXRlcnMoY29uc3Qgc3A8TWV0YURhdGE+JiBtZXRhKTsKKworICAgIC8vIElmIHByb2ZpbGUvbGV2ZWwgaXMgc2V0IGluIHRoZSBtZXRhIGRhdGEsIGl0cyB2YWx1ZSBpbiB0aGUgbWV0YQorICAgIC8vIGRhdGEgd2lsbCBiZSB1c2VkOyBvdGhlcndpc2UsIHRoZSBkZWZhdWx0IHZhbHVlIHdpbGwgYmUgdXNlZC4KKyAgICBzdGF0dXNfdCBnZXRWaWRlb1Byb2ZpbGVMZXZlbChjb25zdCBzcDxNZXRhRGF0YT4mIG1ldGEsCisgICAgICAgICAgICBjb25zdCBDb2RlY1Byb2ZpbGVMZXZlbCYgZGVmYXVsdFByb2ZpbGVMZXZlbCwKKyAgICAgICAgICAgIENvZGVjUHJvZmlsZUxldmVsJiBwcm9maWxlTGV2ZWwpOwogCiAgICAgc3RhdHVzX3Qgc2V0VmlkZW9PdXRwdXRGb3JtYXQoCiAgICAgICAgICAgICBjb25zdCBjaGFyICptaW1lLCBPTVhfVTMyIHdpZHRoLCBPTVhfVTMyIGhlaWdodCk7CmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUF0b21pemVyLmggYi9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUF0b21pemVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWYzYTY3OAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BQXRvbWl6ZXIuaApAQCAtMCwwICsxLDUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2lmbmRlZiBBX0FUT01JWkVSX0hfCisKKyNkZWZpbmUgQV9BVE9NSVpFUl9IXworCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FCYXNlLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BU3RyaW5nLmg+CisjaW5jbHVkZSA8dXRpbHMvTGlzdC5oPgorI2luY2x1ZGUgPHV0aWxzL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHV0aWxzL3RocmVhZHMuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitzdHJ1Y3QgQUF0b21pemVyIHsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqQXRvbWl6ZShjb25zdCBjaGFyICpuYW1lKTsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgQUF0b21pemVyIGdBdG9taXplcjsKKworICAgIE11dGV4IG1Mb2NrOworICAgIFZlY3RvcjxMaXN0PEFTdHJpbmc+ID4gbUF0b21zOworCisgICAgQUF0b21pemVyKCk7CisKKyAgICBjb25zdCBjaGFyICphdG9taXplKGNvbnN0IGNoYXIgKm5hbWUpOworCisgICAgc3RhdGljIHVpbnQzMl90IEhhc2goY29uc3QgY2hhciAqcyk7CisKKyAgICBESVNBTExPV19FVklMX0NPTlNUUlVDVE9SUyhBQXRvbWl6ZXIpOworfTsKKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKKworI2VuZGlmICAvLyBBX0FUT01JWkVSX0hfCmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUJhc2UuaCBiL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BQmFzZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllY2VlYTMKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUJhc2UuaApAQCAtMCwwICsxLDI1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2lmbmRlZiBBX0JBU0VfSF8KKworI2RlZmluZSBBX0JBU0VfSF8KKworI2RlZmluZSBESVNBTExPV19FVklMX0NPTlNUUlVDVE9SUyhuYW1lKSBcCisgICAgbmFtZShjb25zdCBuYW1lICYpOyBcCisgICAgbmFtZSAmb3BlcmF0b3I9KGNvbnN0IG5hbWUgJikKKworI2VuZGlmICAvLyBBX0JBU0VfSF8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BQnVmZmVyLmggYi9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUJ1ZmZlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4ZjBhZWQKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUJ1ZmZlci5oCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIEFfQlVGRkVSX0hfCisKKyNkZWZpbmUgQV9CVUZGRVJfSF8KKworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorCisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BQmFzZS5oPgorI2luY2x1ZGUgPHV0aWxzL1JlZkJhc2UuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitzdHJ1Y3QgQU1lc3NhZ2U7CisKK3N0cnVjdCBBQnVmZmVyIDogcHVibGljIFJlZkJhc2UgeworICAgIEFCdWZmZXIoc2l6ZV90IGNhcGFjaXR5KTsKKyAgICBBQnVmZmVyKHZvaWQgKmRhdGEsIHNpemVfdCBjYXBhY2l0eSk7CisKKyAgICB2b2lkIHNldEZhcmV3ZWxsTWVzc2FnZShjb25zdCBzcDxBTWVzc2FnZT4gbXNnKTsKKworICAgIHVpbnQ4X3QgKmJhc2UoKSB7IHJldHVybiAodWludDhfdCAqKW1EYXRhOyB9CisgICAgdWludDhfdCAqZGF0YSgpIHsgcmV0dXJuICh1aW50OF90ICopbURhdGEgKyBtUmFuZ2VPZmZzZXQ7IH0KKyAgICBzaXplX3QgY2FwYWNpdHkoKSBjb25zdCB7IHJldHVybiBtQ2FwYWNpdHk7IH0KKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1SYW5nZUxlbmd0aDsgfQorICAgIHNpemVfdCBvZmZzZXQoKSBjb25zdCB7IHJldHVybiBtUmFuZ2VPZmZzZXQ7IH0KKworICAgIHZvaWQgc2V0UmFuZ2Uoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUpOworCisgICAgdm9pZCBzZXRJbnQzMkRhdGEoaW50MzJfdCBkYXRhKSB7IG1JbnQzMkRhdGEgPSBkYXRhOyB9CisgICAgaW50MzJfdCBpbnQzMkRhdGEoKSBjb25zdCB7IHJldHVybiBtSW50MzJEYXRhOyB9CisKKyAgICBzcDxBTWVzc2FnZT4gbWV0YSgpOworCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+QUJ1ZmZlcigpOworCitwcml2YXRlOgorICAgIHNwPEFNZXNzYWdlPiBtRmFyZXdlbGw7CisgICAgc3A8QU1lc3NhZ2U+IG1NZXRhOworCisgICAgdm9pZCAqbURhdGE7CisgICAgc2l6ZV90IG1DYXBhY2l0eTsKKyAgICBzaXplX3QgbVJhbmdlT2Zmc2V0OworICAgIHNpemVfdCBtUmFuZ2VMZW5ndGg7CisKKyAgICBpbnQzMl90IG1JbnQzMkRhdGE7CisKKyAgICBib29sIG1Pd25zRGF0YTsKKworICAgIERJU0FMTE9XX0VWSUxfQ09OU1RSVUNUT1JTKEFCdWZmZXIpOworfTsKKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKKworI2VuZGlmICAvLyBBX0JVRkZFUl9IXwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FEZWJ1Zy5oIGIvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FEZWJ1Zy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmOTg2YTAKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQURlYnVnLmgKQEAgLTAsMCArMSwxMDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIEFfREVCVUdfSF8KKworI2RlZmluZSBBX0RFQlVHX0hfCisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUJhc2UuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FTdHJpbmcuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitlbnVtIExvZ1R5cGUgeworICAgIFZFUkJPU0UsCisgICAgSU5GTywKKyAgICBXQVJOSU5HLAorICAgIEVSUk9SLAorICAgIEZBVEFMLAorfTsKKworc3RydWN0IExvZ2dlciB7CisgICAgTG9nZ2VyKExvZ1R5cGUgdHlwZSk7CisgICAgdmlydHVhbCB+TG9nZ2VyKCk7CisKKyAgICB0ZW1wbGF0ZTxjbGFzcyBUPiBMb2dnZXIgJm9wZXJhdG9yPDwoY29uc3QgVCAmeCkgeworICAgICAgICBtTWVzc2FnZS5hcHBlbmQoeCk7CisKKyAgICAgICAgcmV0dXJuICp0aGlzOworICAgIH0KKworcHJpdmF0ZToKKyAgICBhbmRyb2lkOjpBU3RyaW5nIG1NZXNzYWdlOworICAgIExvZ1R5cGUgbUxvZ1R5cGU7CisKKyAgICBESVNBTExPV19FVklMX0NPTlNUUlVDVE9SUyhMb2dnZXIpOworfTsKKworY29uc3QgY2hhciAqTGVhZk5hbWUoY29uc3QgY2hhciAqcyk7CisKKyN1bmRlZiBMT0cKKyNkZWZpbmUgTE9HKHR5cGUpICAgIExvZ2dlcih0eXBlKSA8PCBMZWFmTmFtZShfX0ZJTEVfXykgPDwgIjoiIDw8IF9fTElORV9fIDw8ICIgIgorCisjZGVmaW5lIENIRUNLKGNvbmRpdGlvbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoIShjb25kaXRpb24pKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBMT0coRkFUQUwpIDw8ICJDSEVDSygiICNjb25kaXRpb24gIikgZmFpbGVkLiI7ICAgIFwKKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gd2hpbGUgKGZhbHNlKQorCisjZGVmaW5lIE1BS0VfQ09NUEFSQVRPUihzdWZmaXgsb3ApICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgdGVtcGxhdGU8Y2xhc3MgQSwgY2xhc3MgQj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgQVN0cmluZyBDb21wYXJlXyMjc3VmZml4KGNvbnN0IEEgJmEsIGNvbnN0IEIgJmIpIHsgICAgICBcCisgICAgICAgIEFTdHJpbmcgcmVzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmICghKGEgb3AgYikpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICByZXMuYXBwZW5kKGEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICByZXMuYXBwZW5kKCIgdnMuICIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICByZXMuYXBwZW5kKGIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHJldHVybiByZXM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfQorCitNQUtFX0NPTVBBUkFUT1IoRVEsPT0pCitNQUtFX0NPTVBBUkFUT1IoTkUsIT0pCitNQUtFX0NPTVBBUkFUT1IoTEUsPD0pCitNQUtFX0NPTVBBUkFUT1IoR0UsPj0pCitNQUtFX0NPTVBBUkFUT1IoTFQsPCkKK01BS0VfQ09NUEFSQVRPUihHVCw+KQorCisjZGVmaW5lIENIRUNLX09QKHgseSxzdWZmaXgsb3ApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEFTdHJpbmcgX19fcmVzID0gQ29tcGFyZV8jI3N1ZmZpeCh4LCB5KTsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmICghX19fcmVzLmVtcHR5KCkpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBMT0coRkFUQUwpIDw8ICJDSEVDS18iICNzdWZmaXggIigiICN4ICIsIiAjeSAiKSBmYWlsZWQ6ICIgICBcCisgICAgICAgICAgICAgICAgICAgICAgIDw8IF9fX3JlczsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoZmFsc2UpCisKKyNkZWZpbmUgQ0hFQ0tfRVEoeCx5KSAgIENIRUNLX09QKHgseSxFUSw9PSkKKyNkZWZpbmUgQ0hFQ0tfTkUoeCx5KSAgIENIRUNLX09QKHgseSxORSwhPSkKKyNkZWZpbmUgQ0hFQ0tfTEUoeCx5KSAgIENIRUNLX09QKHgseSxMRSw8PSkKKyNkZWZpbmUgQ0hFQ0tfTFQoeCx5KSAgIENIRUNLX09QKHgseSxMVCw8KQorI2RlZmluZSBDSEVDS19HRSh4LHkpICAgQ0hFQ0tfT1AoeCx5LEdFLD49KQorI2RlZmluZSBDSEVDS19HVCh4LHkpICAgQ0hFQ0tfT1AoeCx5LEdULD4pCisKKyNkZWZpbmUgVFJFU1BBU1MoKSAgICAgIExPRyhGQVRBTCkgPDwgIlNob3VsZCBub3QgYmUgaGVyZS4iCisKK30gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCisKKyNlbmRpZiAgLy8gQV9ERUJVR19IXworCmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUhhbmRsZXIuaCBiL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BSGFuZGxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwMDhiNTQKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUhhbmRsZXIuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2lmbmRlZiBBX0hBTkRMRVJfSF8KKworI2RlZmluZSBBX0hBTkRMRVJfSF8KKworI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUxvb3Blci5oPgorI2luY2x1ZGUgPHV0aWxzL1JlZkJhc2UuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitzdHJ1Y3QgQU1lc3NhZ2U7CisKK3N0cnVjdCBBSGFuZGxlciA6IHB1YmxpYyBSZWZCYXNlIHsKKyAgICBBSGFuZGxlcigpCisgICAgICAgIDogbUlEKDApIHsKKyAgICB9CisKKyAgICBBTG9vcGVyOjpoYW5kbGVyX2lkIGlkKCkgY29uc3QgeworICAgICAgICByZXR1cm4gbUlEOworICAgIH0KKworICAgIHNwPEFMb29wZXI+IGxvb3BlcigpOworCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIG9uTWVzc2FnZVJlY2VpdmVkKGNvbnN0IHNwPEFNZXNzYWdlPiAmbXNnKSA9IDA7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIHN0cnVjdCBBTG9vcGVyUm9zdGVyOworCisgICAgQUxvb3Blcjo6aGFuZGxlcl9pZCBtSUQ7CisKKyAgICB2b2lkIHNldElEKEFMb29wZXI6OmhhbmRsZXJfaWQgaWQpIHsKKyAgICAgICAgbUlEID0gaWQ7CisgICAgfQorCisgICAgRElTQUxMT1dfRVZJTF9DT05TVFJVQ1RPUlMoQUhhbmRsZXIpOworfTsKKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKKworI2VuZGlmICAvLyBBX0hBTkRMRVJfSF8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BSGFuZGxlclJlZmxlY3Rvci5oIGIvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FIYW5kbGVyUmVmbGVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODU3ODY2YQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BSGFuZGxlclJlZmxlY3Rvci5oCkBAIC0wLDAgKzEsMzIgQEAKKyNpZm5kZWYgQV9IQU5ETEVSX1JFRkxFQ1RPUl9IXworCisjZGVmaW5lIEFfSEFORExFUl9SRUZMRUNUT1JfSF8KKworI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUhhbmRsZXIuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCit0ZW1wbGF0ZTxjbGFzcyBUPgorc3RydWN0IEFIYW5kbGVyUmVmbGVjdG9yIDogcHVibGljIEFIYW5kbGVyIHsKKyAgICBBSGFuZGxlclJlZmxlY3RvcihUICp0YXJnZXQpCisgICAgICAgIDogbVRhcmdldCh0YXJnZXQpIHsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIHZvaWQgb25NZXNzYWdlUmVjZWl2ZWQoY29uc3Qgc3A8QU1lc3NhZ2U+ICZtc2cpIHsKKyAgICAgICAgc3A8VD4gdGFyZ2V0ID0gbVRhcmdldC5wcm9tb3RlKCk7CisgICAgICAgIGlmICh0YXJnZXQgIT0gTlVMTCkgeworICAgICAgICAgICAgdGFyZ2V0LT5vbk1lc3NhZ2VSZWNlaXZlZChtc2cpOworICAgICAgICB9CisgICAgfQorCitwcml2YXRlOgorICAgIHdwPFQ+IG1UYXJnZXQ7CisKKyAgICBBSGFuZGxlclJlZmxlY3Rvcihjb25zdCBBSGFuZGxlclJlZmxlY3RvcjxUPiAmKTsKKyAgICBBSGFuZGxlclJlZmxlY3RvcjxUPiAmb3BlcmF0b3I9KGNvbnN0IEFIYW5kbGVyUmVmbGVjdG9yPFQ+ICYpOworfTsKKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKKworI2VuZGlmICAvLyBBX0hBTkRMRVJfUkVGTEVDVE9SX0hfCmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUxvb3Blci5oIGIvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FMb29wZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTRmMWZjCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FMb29wZXIuaApAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2lmbmRlZiBBX0xPT1BFUl9IXworCisjZGVmaW5lIEFfTE9PUEVSX0hfCisKKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FCYXNlLmg+CisjaW5jbHVkZSA8dXRpbHMvRXJyb3JzLmg+CisjaW5jbHVkZSA8dXRpbHMvS2V5ZWRWZWN0b3IuaD4KKyNpbmNsdWRlIDx1dGlscy9MaXN0Lmg+CisjaW5jbHVkZSA8dXRpbHMvUmVmQmFzZS5oPgorI2luY2x1ZGUgPHV0aWxzL3RocmVhZHMuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitzdHJ1Y3QgQUhhbmRsZXI7CitzdHJ1Y3QgQU1lc3NhZ2U7CisKK3N0cnVjdCBBTG9vcGVyIDogcHVibGljIFJlZkJhc2UgeworICAgIHR5cGVkZWYgaW50MzJfdCBldmVudF9pZDsKKyAgICB0eXBlZGVmIGludDMyX3QgaGFuZGxlcl9pZDsKKworICAgIEFMb29wZXIoKTsKKworICAgIGhhbmRsZXJfaWQgcmVnaXN0ZXJIYW5kbGVyKGNvbnN0IHNwPEFIYW5kbGVyPiAmaGFuZGxlcik7CisgICAgdm9pZCB1bnJlZ2lzdGVySGFuZGxlcihoYW5kbGVyX2lkIGhhbmRsZXJJRCk7CisKKyAgICBzdGF0dXNfdCBzdGFydCgKKyAgICAgICAgICAgIGJvb2wgcnVuT25DYWxsaW5nVGhyZWFkID0gZmFsc2UsCisgICAgICAgICAgICBib29sIGNhbkNhbGxKYXZhID0gZmFsc2UpOworCisgICAgc3RhdHVzX3Qgc3RvcCgpOworCisgICAgc3RhdGljIGludDY0X3QgR2V0Tm93VXMoKTsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfkFMb29wZXIoKTsKKworcHJpdmF0ZToKKyAgICBmcmllbmQgc3RydWN0IEFMb29wZXJSb3N0ZXI7CisKKyAgICBzdHJ1Y3QgRXZlbnQgeworICAgICAgICBpbnQ2NF90IG1XaGVuVXM7CisgICAgICAgIHNwPEFNZXNzYWdlPiBtTWVzc2FnZTsKKyAgICB9OworCisgICAgTXV0ZXggbUxvY2s7CisgICAgQ29uZGl0aW9uIG1RdWV1ZUNoYW5nZWRDb25kaXRpb247CisKKyAgICBMaXN0PEV2ZW50PiBtRXZlbnRRdWV1ZTsKKworICAgIHN0cnVjdCBMb29wZXJUaHJlYWQ7CisgICAgc3A8TG9vcGVyVGhyZWFkPiBtVGhyZWFkOworICAgIGJvb2wgbVJ1bm5pbmdMb2NhbGx5OworCisgICAgdm9pZCBwb3N0KGNvbnN0IHNwPEFNZXNzYWdlPiAmbXNnLCBpbnQ2NF90IGRlbGF5VXMpOworICAgIGJvb2wgbG9vcCgpOworCisgICAgRElTQUxMT1dfRVZJTF9DT05TVFJVQ1RPUlMoQUxvb3Blcik7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCisjZW5kaWYgIC8vIEFfTE9PUEVSX0hfCmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUxvb3BlclJvc3Rlci5oIGIvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FMb29wZXJSb3N0ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMWJkNGVkCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FMb29wZXJSb3N0ZXIuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2lmbmRlZiBBX0xPT1BFUl9ST1NURVJfSF8KKworI2RlZmluZSBBX0xPT1BFUl9ST1NURVJfSF8KKworI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUxvb3Blci5oPgorI2luY2x1ZGUgPHV0aWxzL0tleWVkVmVjdG9yLmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworc3RydWN0IEFMb29wZXJSb3N0ZXIgeworICAgIEFMb29wZXJSb3N0ZXIoKTsKKworICAgIEFMb29wZXI6OmhhbmRsZXJfaWQgcmVnaXN0ZXJIYW5kbGVyKAorICAgICAgICAgICAgY29uc3Qgc3A8QUxvb3Blcj4gbG9vcGVyLCBjb25zdCBzcDxBSGFuZGxlcj4gJmhhbmRsZXIpOworCisgICAgdm9pZCB1bnJlZ2lzdGVySGFuZGxlcihBTG9vcGVyOjpoYW5kbGVyX2lkIGhhbmRsZXJJRCk7CisKKyAgICB2b2lkIHBvc3RNZXNzYWdlKGNvbnN0IHNwPEFNZXNzYWdlPiAmbXNnLCBpbnQ2NF90IGRlbGF5VXMgPSAwKTsKKyAgICB2b2lkIGRlbGl2ZXJNZXNzYWdlKGNvbnN0IHNwPEFNZXNzYWdlPiAmbXNnKTsKKworICAgIHNwPEFMb29wZXI+IGZpbmRMb29wZXIoQUxvb3Blcjo6aGFuZGxlcl9pZCBoYW5kbGVySUQpOworCitwcml2YXRlOgorICAgIHN0cnVjdCBIYW5kbGVySW5mbyB7CisgICAgICAgIHdwPEFMb29wZXI+IG1Mb29wZXI7CisgICAgICAgIHdwPEFIYW5kbGVyPiBtSGFuZGxlcjsKKyAgICB9OworCisgICAgTXV0ZXggbUxvY2s7CisgICAgS2V5ZWRWZWN0b3I8QUxvb3Blcjo6aGFuZGxlcl9pZCwgSGFuZGxlckluZm8+IG1IYW5kbGVyczsKKyAgICBBTG9vcGVyOjpoYW5kbGVyX2lkIG1OZXh0SGFuZGxlcklEOworCisgICAgRElTQUxMT1dfRVZJTF9DT05TVFJVQ1RPUlMoQUxvb3BlclJvc3Rlcik7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCisjZW5kaWYgIC8vIEFfTE9PUEVSX1JPU1RFUl9IXwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FNZXNzYWdlLmggYi9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQU1lc3NhZ2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjc0Y2JhZgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BTWVzc2FnZS5oCkBAIC0wLDAgKzEsMTE1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2lmbmRlZiBBX01FU1NBR0VfSF8KKworI2RlZmluZSBBX01FU1NBR0VfSF8KKworI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUJhc2UuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FMb29wZXIuaD4KKyNpbmNsdWRlIDx1dGlscy9LZXllZFZlY3Rvci5oPgorI2luY2x1ZGUgPHV0aWxzL1JlZkJhc2UuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitzdHJ1Y3QgQVN0cmluZzsKKworc3RydWN0IEFNZXNzYWdlIDogcHVibGljIFJlZkJhc2UgeworICAgIEFNZXNzYWdlKHVpbnQzMl90IHdoYXQgPSAwLCBBTG9vcGVyOjpoYW5kbGVyX2lkIHRhcmdldCA9IDApOworCisgICAgdm9pZCBzZXRXaGF0KHVpbnQzMl90IHdoYXQpOworICAgIHVpbnQzMl90IHdoYXQoKSBjb25zdDsKKworICAgIHZvaWQgc2V0VGFyZ2V0KEFMb29wZXI6OmhhbmRsZXJfaWQgdGFyZ2V0KTsKKyAgICBBTG9vcGVyOjpoYW5kbGVyX2lkIHRhcmdldCgpIGNvbnN0OworCisgICAgdm9pZCBzZXRJbnQzMihjb25zdCBjaGFyICpuYW1lLCBpbnQzMl90IHZhbHVlKTsKKyAgICB2b2lkIHNldEludDY0KGNvbnN0IGNoYXIgKm5hbWUsIGludDY0X3QgdmFsdWUpOworICAgIHZvaWQgc2V0U2l6ZShjb25zdCBjaGFyICpuYW1lLCBzaXplX3QgdmFsdWUpOworICAgIHZvaWQgc2V0RmxvYXQoY29uc3QgY2hhciAqbmFtZSwgZmxvYXQgdmFsdWUpOworICAgIHZvaWQgc2V0RG91YmxlKGNvbnN0IGNoYXIgKm5hbWUsIGRvdWJsZSB2YWx1ZSk7CisgICAgdm9pZCBzZXRQb2ludGVyKGNvbnN0IGNoYXIgKm5hbWUsIHZvaWQgKnZhbHVlKTsKKyAgICB2b2lkIHNldFN0cmluZyhjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpzLCBzc2l6ZV90IGxlbiA9IC0xKTsKKyAgICB2b2lkIHNldE9iamVjdChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBzcDxSZWZCYXNlPiAmb2JqKTsKKyAgICB2b2lkIHNldE1lc3NhZ2UoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgc3A8QU1lc3NhZ2U+ICZvYmopOworCisgICAgYm9vbCBmaW5kSW50MzIoY29uc3QgY2hhciAqbmFtZSwgaW50MzJfdCAqdmFsdWUpIGNvbnN0OworICAgIGJvb2wgZmluZEludDY0KGNvbnN0IGNoYXIgKm5hbWUsIGludDY0X3QgKnZhbHVlKSBjb25zdDsKKyAgICBib29sIGZpbmRTaXplKGNvbnN0IGNoYXIgKm5hbWUsIHNpemVfdCAqdmFsdWUpIGNvbnN0OworICAgIGJvb2wgZmluZEZsb2F0KGNvbnN0IGNoYXIgKm5hbWUsIGZsb2F0ICp2YWx1ZSkgY29uc3Q7CisgICAgYm9vbCBmaW5kRG91YmxlKGNvbnN0IGNoYXIgKm5hbWUsIGRvdWJsZSAqdmFsdWUpIGNvbnN0OworICAgIGJvb2wgZmluZFBvaW50ZXIoY29uc3QgY2hhciAqbmFtZSwgdm9pZCAqKnZhbHVlKSBjb25zdDsKKyAgICBib29sIGZpbmRTdHJpbmcoY29uc3QgY2hhciAqbmFtZSwgQVN0cmluZyAqdmFsdWUpIGNvbnN0OworICAgIGJvb2wgZmluZE9iamVjdChjb25zdCBjaGFyICpuYW1lLCBzcDxSZWZCYXNlPiAqb2JqKSBjb25zdDsKKyAgICBib29sIGZpbmRNZXNzYWdlKGNvbnN0IGNoYXIgKm5hbWUsIHNwPEFNZXNzYWdlPiAqb2JqKSBjb25zdDsKKworICAgIHZvaWQgcG9zdChpbnQ2NF90IGRlbGF5VXMgPSAwKTsKKworICAgIHNwPEFNZXNzYWdlPiBkdXAoKSBjb25zdDsKKworICAgIEFTdHJpbmcgZGVidWdTdHJpbmcoaW50MzJfdCBpbmRlbnQgPSAwKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfkFNZXNzYWdlKCk7CisKK3ByaXZhdGU6CisgICAgZW51bSBUeXBlIHsKKyAgICAgICAga1R5cGVJbnQzMiwKKyAgICAgICAga1R5cGVJbnQ2NCwKKyAgICAgICAga1R5cGVTaXplLAorICAgICAgICBrVHlwZUZsb2F0LAorICAgICAgICBrVHlwZURvdWJsZSwKKyAgICAgICAga1R5cGVQb2ludGVyLAorICAgICAgICBrVHlwZVN0cmluZywKKyAgICAgICAga1R5cGVPYmplY3QsCisgICAgICAgIGtUeXBlTWVzc2FnZSwKKyAgICB9OworCisgICAgdWludDMyX3QgbVdoYXQ7CisgICAgQUxvb3Blcjo6aGFuZGxlcl9pZCBtVGFyZ2V0OworCisgICAgc3RydWN0IEl0ZW0geworICAgICAgICB1bmlvbiB7CisgICAgICAgICAgICBpbnQzMl90IGludDMyVmFsdWU7CisgICAgICAgICAgICBpbnQ2NF90IGludDY0VmFsdWU7CisgICAgICAgICAgICBzaXplX3Qgc2l6ZVZhbHVlOworICAgICAgICAgICAgZmxvYXQgZmxvYXRWYWx1ZTsKKyAgICAgICAgICAgIGRvdWJsZSBkb3VibGVWYWx1ZTsKKyAgICAgICAgICAgIHZvaWQgKnB0clZhbHVlOworICAgICAgICAgICAgUmVmQmFzZSAqcmVmVmFsdWU7CisgICAgICAgICAgICBBU3RyaW5nICpzdHJpbmdWYWx1ZTsKKyAgICAgICAgfSB1OworICAgICAgICBjb25zdCBjaGFyICptTmFtZTsKKyAgICAgICAgVHlwZSBtVHlwZTsKKyAgICB9OworCisgICAgZW51bSB7CisgICAgICAgIGtNYXhOdW1JdGVtcyA9IDE2CisgICAgfTsKKyAgICBJdGVtIG1JdGVtc1trTWF4TnVtSXRlbXNdOworICAgIHNpemVfdCBtTnVtSXRlbXM7CisKKyAgICB2b2lkIGNsZWFyKCk7CisgICAgSXRlbSAqYWxsb2NhdGVJdGVtKGNvbnN0IGNoYXIgKm5hbWUpOworICAgIHZvaWQgZnJlZUl0ZW0oSXRlbSAqaXRlbSk7CisgICAgY29uc3QgSXRlbSAqZmluZEl0ZW0oY29uc3QgY2hhciAqbmFtZSwgVHlwZSB0eXBlKSBjb25zdDsKKworICAgIERJU0FMTE9XX0VWSUxfQ09OU1RSVUNUT1JTKEFNZXNzYWdlKTsKK307CisKK30gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCisKKyNlbmRpZiAgLy8gQV9NRVNTQUdFX0hfCmRpZmYgLS1naXQgYS9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQVN0cmluZy5oIGIvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FTdHJpbmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NWFkZTY0Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FTdHJpbmcuaApAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2lmbmRlZiBBX1NUUklOR19IXworCisjZGVmaW5lIEFfU1RSSU5HX0hfCisKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitzdHJ1Y3QgQVN0cmluZyB7CisgICAgQVN0cmluZygpOworICAgIEFTdHJpbmcoY29uc3QgY2hhciAqcyk7CisgICAgQVN0cmluZyhjb25zdCBjaGFyICpzLCBzaXplX3Qgc2l6ZSk7CisgICAgQVN0cmluZyhjb25zdCBBU3RyaW5nICZmcm9tKTsKKyAgICBBU3RyaW5nKGNvbnN0IEFTdHJpbmcgJmZyb20sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBuKTsKKyAgICB+QVN0cmluZygpOworCisgICAgQVN0cmluZyAmb3BlcmF0b3I9KGNvbnN0IEFTdHJpbmcgJmZyb20pOworICAgIHZvaWQgc2V0VG8oY29uc3QgY2hhciAqcyk7CisgICAgdm9pZCBzZXRUbyhjb25zdCBjaGFyICpzLCBzaXplX3Qgc2l6ZSk7CisgICAgdm9pZCBzZXRUbyhjb25zdCBBU3RyaW5nICZmcm9tLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgbik7CisKKyAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0OworICAgIGNvbnN0IGNoYXIgKmNfc3RyKCkgY29uc3Q7CisKKyAgICBib29sIGVtcHR5KCkgY29uc3Q7CisKKyAgICB2b2lkIGNsZWFyKCk7CisgICAgdm9pZCB0cmltKCk7CisgICAgdm9pZCBlcmFzZShzaXplX3Qgc3RhcnQsIHNpemVfdCBuKTsKKworICAgIHZvaWQgYXBwZW5kKGNoYXIgYykgeyBhcHBlbmQoJmMsIDEpOyB9CisgICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciAqcyk7CisgICAgdm9pZCBhcHBlbmQoY29uc3QgY2hhciAqcywgc2l6ZV90IHNpemUpOworICAgIHZvaWQgYXBwZW5kKGNvbnN0IEFTdHJpbmcgJmZyb20pOworICAgIHZvaWQgYXBwZW5kKGNvbnN0IEFTdHJpbmcgJmZyb20sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBuKTsKKyAgICB2b2lkIGFwcGVuZChpbnQgeCk7CisgICAgdm9pZCBhcHBlbmQodW5zaWduZWQgeCk7CisgICAgdm9pZCBhcHBlbmQobG9uZyB4KTsKKyAgICB2b2lkIGFwcGVuZCh1bnNpZ25lZCBsb25nIHgpOworICAgIHZvaWQgYXBwZW5kKGxvbmcgbG9uZyB4KTsKKyAgICB2b2lkIGFwcGVuZCh1bnNpZ25lZCBsb25nIGxvbmcgeCk7CisgICAgdm9pZCBhcHBlbmQoZmxvYXQgeCk7CisgICAgdm9pZCBhcHBlbmQoZG91YmxlIHgpOworICAgIHZvaWQgYXBwZW5kKHZvaWQgKngpOworCisgICAgdm9pZCBpbnNlcnQoY29uc3QgQVN0cmluZyAmZnJvbSwgc2l6ZV90IGluc2VydGlvblBvcyk7CisgICAgdm9pZCBpbnNlcnQoY29uc3QgY2hhciAqZnJvbSwgc2l6ZV90IHNpemUsIHNpemVfdCBpbnNlcnRpb25Qb3MpOworCisgICAgc3NpemVfdCBmaW5kKGNvbnN0IGNoYXIgKnN1YnN0cmluZywgc2l6ZV90IHN0YXJ0ID0gMCkgY29uc3Q7CisKKyAgICBzaXplX3QgaGFzaCgpIGNvbnN0OworCisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEFTdHJpbmcgJm90aGVyKSBjb25zdDsKKyAgICBib29sIG9wZXJhdG9yPChjb25zdCBBU3RyaW5nICZvdGhlcikgY29uc3Q7CisgICAgYm9vbCBvcGVyYXRvcj4oY29uc3QgQVN0cmluZyAmb3RoZXIpIGNvbnN0OworCisgICAgaW50IGNvbXBhcmUoY29uc3QgQVN0cmluZyAmb3RoZXIpIGNvbnN0OworCisgICAgYm9vbCBzdGFydHNXaXRoKGNvbnN0IGNoYXIgKnByZWZpeCkgY29uc3Q7CisKKyAgICB2b2lkIHRvbG93ZXIoKTsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqa0VtcHR5U3RyaW5nOworCisgICAgY2hhciAqbURhdGE7CisgICAgc2l6ZV90IG1TaXplOworICAgIHNpemVfdCBtQWxsb2NTaXplOworCisgICAgdm9pZCBtYWtlTXV0YWJsZSgpOworfTsKKworQVN0cmluZyBTdHJpbmdQcmludGYoY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pOworCit9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCisjZW5kaWYgIC8vIEFfU1RSSU5HX0hfCisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9iYXNlNjQuaCBiL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9iYXNlNjQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzQwYjg5Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL2Jhc2U2NC5oCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIEJBU0VfNjRfSF8KKworI2RlZmluZSBCQVNFXzY0X0hfCisKKyNpbmNsdWRlIDx1dGlscy9SZWZCYXNlLmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworc3RydWN0IEFCdWZmZXI7CitzdHJ1Y3QgQVN0cmluZzsKKworc3A8QUJ1ZmZlcj4gZGVjb2RlQmFzZTY0KGNvbnN0IEFTdHJpbmcgJnMpOwordm9pZCBlbmNvZGVCYXNlNjQoY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUsIEFTdHJpbmcgKm91dCk7CisKK30gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCisKKyNlbmRpZiAgLy8gQkFTRV82NF9IXwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9tZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL2hleGR1bXAuaCBiL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9oZXhkdW1wLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjYwODNhOQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvbWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9oZXhkdW1wLmgKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgSEVYRFVNUF9IXworCisjZGVmaW5lIEhFWERVTVBfSF8KKworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK3ZvaWQgaGV4ZHVtcChjb25zdCB2b2lkICpfZGF0YSwgc2l6ZV90IHNpemUpOworCit9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCisjZW5kaWYgIC8vIEhFWERVTVBfSF8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvcHJpdmF0ZS9SRUFETUUgYi9pbmNsdWRlL3ByaXZhdGUvUkVBRE1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlNDE0OTIKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL3ByaXZhdGUvUkVBRE1FCkBAIC0wLDAgKzEsNCBAQAorVGhpcyBmb2xkZXIgY29udGFpbnMgcHJpdmF0ZSBpbmNsdWRlIGZpbGVzLgorCitUaGVzZSBpbmNsdWRlIGZpbGVzIGFyZSBwYXJ0IG9mIHRoZSBwcml2YXRlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgb2YKK3ZhcmlvdXMgZnJhbWV3b3JrIGNvbXBvbmVudHMuICBVc2UgYXQgeW91ciBwZXJpbC4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvcHJpdmF0ZS9tZWRpYS9BdWRpb0VmZmVjdFNoYXJlZC5oIGIvaW5jbHVkZS9wcml2YXRlL21lZGlhL0F1ZGlvRWZmZWN0U2hhcmVkLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTNhOTlhNAotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvcHJpdmF0ZS9tZWRpYS9BdWRpb0VmZmVjdFNoYXJlZC5oCkBAIC0wLDAgKzEsNTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIEFORFJPSURfRUZGRUNUQ0JBU0VTSEFSRURfSAorI2RlZmluZSBBTkRST0lEX0VGRkVDVENCQVNFU0hBUkVEX0gKKworI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorCisjaW5jbHVkZSA8dXRpbHMvdGhyZWFkcy5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8gU2l6ZSBvZiBidWZmZXIgdXNlZCB0byBleGNoYW5nZSBwYXJhbWV0ZXJzIGJldHdlZW4gYXBwbGljYXRpb24gYW5kIG1lZGlhc2VydmVyIHByb2Nlc3Nlcy4KKyNkZWZpbmUgRUZGRUNUX1BBUkFNX0JVRkZFUl9TSVpFIDEwMjQKKworCisvLyBTaGFyZWQgbWVtb3J5IGFyZWEgdXNlZCB0byBleGNoYW5nZSBwYXJhbWV0ZXJzIGJldHdlZW4gYXBwbGljYXRpb24gYW5kIG1lZGlhc2VydmVyCisvLyBwcm9jZXNzLgorc3RydWN0IGVmZmVjdF9wYXJhbV9jYmxrX3QKK3sKKyAgICAgICAgICAgICAgICBNdXRleCAgICAgICBsb2NrOworICAgIHZvbGF0aWxlICAgIHVpbnQzMl90ICAgIGNsaWVudEluZGV4OyAgICAvLyBDdXJyZW50IHJlYWQvd3JpdGUgaW5kZXggZm9yIGFwcGxpY2F0aW9uCisgICAgdm9sYXRpbGUgICAgdWludDMyX3QgICAgc2VydmVySW5kZXg7ICAgIC8vIEN1cnJlbnQgcmVhZC93cml0ZSBpbmRleCBmb3IgbWVkaWFzZXJ2ZXIKKyAgICAgICAgICAgICAgICB1aW50OF90KiAgICBidWZmZXI7ICAgICAgICAgLy8gc3RhcnQgb2YgcGFyYW1ldGVyIGJ1ZmZlcgorCisgICAgICAgICAgICAgICAgZWZmZWN0X3BhcmFtX2NibGtfdCgpCisgICAgICAgICAgICAgICAgICAgIDogbG9jayhNdXRleDo6U0hBUkVEKSwgY2xpZW50SW5kZXgoMCksIHNlcnZlckluZGV4KDApIHt9Cit9OworCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworfTsgLy8gbmFtZXNwYWNlIGFuZHJvaWQKKworI2VuZGlmIC8vIEFORFJPSURfRUZGRUNUQ0JBU0VTSEFSRURfSApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9wcml2YXRlL21lZGlhL0F1ZGlvVHJhY2tTaGFyZWQuaCBiL2luY2x1ZGUvcHJpdmF0ZS9tZWRpYS9BdWRpb1RyYWNrU2hhcmVkLmgKaW5kZXggOGUyZGIyMC4uMTUxMGY4NyAxMDA2NDQKLS0tIGEvaW5jbHVkZS9wcml2YXRlL21lZGlhL0F1ZGlvVHJhY2tTaGFyZWQuaAorKysgYi9pbmNsdWRlL3ByaXZhdGUvbWVkaWEvQXVkaW9UcmFja1NoYXJlZC5oCkBAIC0zMiw2ICszMiwxOCBAQAogI2RlZmluZSBNQVhfUlVOX1RJTUVPVVRfTVMgICAgICAxMDAwCiAjZGVmaW5lIFdBSVRfUEVSSU9EX01TICAgICAgICAgIDEwCiAKKyNkZWZpbmUgQ0JMS19VTkRFUlJVTl9NU0sgICAgICAgMHgwMDAxCisjZGVmaW5lIENCTEtfVU5ERVJSVU5fT04gICAgICAgIDB4MDAwMSAgLy8gdW5kZXJydW4gKG91dCkgb3Igb3ZlcnJydW4gKGluKSBpbmRpY2F0aW9uCisjZGVmaW5lIENCTEtfVU5ERVJSVU5fT0ZGICAgICAgIDB4MDAwMCAgLy8gbm8gdW5kZXJydW4KKyNkZWZpbmUgQ0JMS19ESVJFQ1RJT05fTVNLICAgICAgMHgwMDAyCisjZGVmaW5lIENCTEtfRElSRUNUSU9OX09VVCAgICAgIDB4MDAwMiAgLy8gdGhpcyBjYmxrIGlzIGZvciBhbiBBdWRpb1RyYWNrCisjZGVmaW5lIENCTEtfRElSRUNUSU9OX0lOICAgICAgIDB4MDAwMCAgLy8gdGhpcyBjYmxrIGlzIGZvciBhbiBBdWRpb1JlY29yZAorI2RlZmluZSBDQkxLX0ZPUkNFUkVBRFlfTVNLICAgICAweDAwMDQKKyNkZWZpbmUgQ0JMS19GT1JDRVJFQURZX09OICAgICAgMHgwMDA0ICAvLyB0cmFjayBpcyBjb25zaWRlcmVkIHJlYWR5IGltbWVkaWF0ZWx5IGJ5IEF1ZGlvRmxpbmdlcgorI2RlZmluZSBDQkxLX0ZPUkNFUkVBRFlfT0ZGICAgICAweDAwMDAgIC8vIHRyYWNrIGlzIHJlYWR5IHdoZW4gYnVmZmVyIGZ1bGwKKyNkZWZpbmUgQ0JMS19JTlZBTElEX01TSyAgICAgICAgMHgwMDA4CisjZGVmaW5lIENCTEtfSU5WQUxJRF9PTiAgICAgICAgIDB4MDAwOCAgLy8gdHJhY2sgYnVmZmVyIGlzIGludmFsaWRhdGVkIGJ5IEF1ZGlvRmxpbmdlcjogbXVzdCBiZSByZS1jcmVhdGVkCisjZGVmaW5lIENCTEtfSU5WQUxJRF9PRkYgICAgICAgIDB4MDAwMAogCiBzdHJ1Y3QgYXVkaW9fdHJhY2tfY2Jsa190CiB7CkBAIC00NCwxMiArNTYsMTIgQEAKICAgICB2b2xhdGlsZSAgICB1aW50MzJfdCAgICBzZXJ2ZXI7CiAgICAgICAgICAgICAgICAgdWludDMyX3QgICAgdXNlckJhc2U7CiAgICAgICAgICAgICAgICAgdWludDMyX3QgICAgc2VydmVyQmFzZTsKLSAgICB2b2lkKiAgICAgICBidWZmZXJzOwotICAgIHVpbnQzMl90ICAgIGZyYW1lQ291bnQ7Ci0gICAgLy8gQ2FjaGUgbGluZSBib3VuZGFyeQotICAgIHVpbnQzMl90ICAgIGxvb3BTdGFydDsKLSAgICB1aW50MzJfdCAgICBsb29wRW5kOwotICAgIGludCAgICAgICAgIGxvb3BDb3VudDsKKyAgICAgICAgICAgICAgICB2b2lkKiAgICAgICBidWZmZXJzOworICAgICAgICAgICAgICAgIHVpbnQzMl90ICAgIGZyYW1lQ291bnQ7CisgICAgICAgICAgICAgICAgLy8gQ2FjaGUgbGluZSBib3VuZGFyeQorICAgICAgICAgICAgICAgIHVpbnQzMl90ICAgIGxvb3BTdGFydDsKKyAgICAgICAgICAgICAgICB1aW50MzJfdCAgICBsb29wRW5kOworICAgICAgICAgICAgICAgIGludCAgICAgICAgIGxvb3BDb3VudDsKICAgICB2b2xhdGlsZSAgICB1bmlvbiB7CiAgICAgICAgICAgICAgICAgICAgIHVpbnQxNl90ICAgIHZvbHVtZVsyXTsKICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgICAgdm9sdW1lTFI7CkBAIC01OCwxNSArNzAsMTcgQEAKICAgICAgICAgICAgICAgICAvLyBOT1RFOiBhdWRpb190cmFja19jYmxrX3Q6OmZyYW1lU2l6ZSBpcyBub3QgZXF1YWwgdG8gQXVkaW9UcmFjazo6ZnJhbWVTaXplKCkgZm9yCiAgICAgICAgICAgICAgICAgLy8gOCBiaXQgUENNIGRhdGE6IGluIHRoaXMgY2FzZSwgIG1DYmxrLT5mcmFtZVNpemUgaXMgYmFzZWQgb24gYSBzYW1wbGUgc2l6ZSBvZgogICAgICAgICAgICAgICAgIC8vIDE2IGJpdCBiZWNhdXNlIGRhdGEgaXMgY29udmVydGVkIHRvIDE2IGJpdCBiZWZvcmUgYmVpbmcgc3RvcmVkIGluIGJ1ZmZlcgotICAgICAgICAgICAgICAgIHVpbnQzMl90ICAgIGZyYW1lU2l6ZTsKLSAgICAgICAgICAgICAgICB1aW50OF90ICAgICBjaGFubmVsczsKLSAgICAgICAgICAgICAgICB1aW50OF90ICAgICBmbG93Q29udHJvbEZsYWc7IC8vIHVuZGVycnVuIChvdXQpIG9yIG92ZXJycnVuIChpbikgaW5kaWNhdGlvbgotICAgICAgICAgICAgICAgIHVpbnQ4X3QgICAgIG91dDsgICAgICAgIC8vIG91dCBlcXVhbHMgMSBmb3IgQXVkaW9UcmFjayBhbmQgMCBmb3IgQXVkaW9SZWNvcmQKLSAgICAgICAgICAgICAgICB1aW50OF90ICAgICBmb3JjZVJlYWR5OworCisgICAgICAgICAgICAgICAgdWludDhfdCAgICAgZnJhbWVTaXplOworICAgICAgICAgICAgICAgIHVpbnQ4X3QgICAgIGNoYW5uZWxDb3VudDsKKyAgICAgICAgICAgICAgICB1aW50MTZfdCAgICBmbGFnczsKKwogICAgICAgICAgICAgICAgIHVpbnQxNl90ICAgIGJ1ZmZlclRpbWVvdXRNczsgLy8gTWF4aW11bSBjdW11bGF0ZWQgdGltZW91dCBiZWZvcmUgcmVzdGFydGluZyBhdWRpb2ZsaW5nZXIKICAgICAgICAgICAgICAgICB1aW50MTZfdCAgICB3YWl0VGltZU1zOyAgICAgIC8vIEN1bXVsYXRlZCB3YWl0IHRpbWUKLSAgICAgICAgICAgICAgICAvLyBDYWNoZSBsaW5lIGJvdW5kYXJ5ICgzMiBieXRlcykKIAorICAgICAgICAgICAgICAgIHVpbnQxNl90ICAgIHNlbmRMZXZlbDsKKyAgICAgICAgICAgICAgICB1aW50MTZfdCAgICByZXNlcnZlZDsKKyAgICAgICAgICAgICAgICAvLyBDYWNoZSBsaW5lIGJvdW5kYXJ5ICgzMiBieXRlcykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb190cmFja19jYmxrX3QoKTsKICAgICAgICAgICAgICAgICB1aW50MzJfdCAgICBzdGVwVXNlcih1aW50MzJfdCBmcmFtZUNvdW50KTsKICAgICAgICAgICAgICAgICBib29sICAgICAgICBzdGVwU2VydmVyKHVpbnQzMl90IGZyYW1lQ291bnQpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9wcml2YXRlL3N1cmZhY2VmbGluZ2VyL1NoYXJlZEJ1ZmZlclN0YWNrLmggYi9pbmNsdWRlL3ByaXZhdGUvc3VyZmFjZWZsaW5nZXIvU2hhcmVkQnVmZmVyU3RhY2suaAppbmRleCA5YjVhMWUwLi42MzNiNTQzIDEwMDY0NAotLS0gYS9pbmNsdWRlL3ByaXZhdGUvc3VyZmFjZWZsaW5nZXIvU2hhcmVkQnVmZmVyU3RhY2suaAorKysgYi9pbmNsdWRlL3ByaXZhdGUvc3VyZmFjZWZsaW5nZXIvU2hhcmVkQnVmZmVyU3RhY2suaApAQCAtNDMsMjQgKzQzLDkgQEAKICAqIHVubGVzcyB0aGV5IGFyZSBpbiB1c2UgYnkgdGhlIHNlcnZlciwgd2hpY2ggaXMgb25seSB0aGUgY2FzZSBmb3IgdGhlIGxhc3QgCiAgKiBkZXF1ZXVlLWFibGUgYnVmZmVyLiBXaGVuIHRoZXNlIHZhcmlvdXMgY29uZGl0aW9ucyBhcmUgbm90IG1ldCwgdGhlIGNhbGxlcgogICogd2FpdHMgdW50aWwgdGhlIGNvbmRpdGlvbiBpcyBtZXQuCi0gKgotICogCi0gKiBDQVZFQVRTOgotICogCi0gKiBJbiB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiB0aGVyZSBhcmUgc2V2ZXJhbCBsaW1pdGF0aW9uczoKLSAqIC0gYnVmZmVycyBtdXN0IGJlIGxvY2tlZCBpbiB0aGUgc2FtZSBvcmRlciB0aGV5J3ZlIGJlZW4gZGVxdWV1ZWQKLSAqIC0gYnVmZmVycyBtdXN0IGJlIGVucXVldWVkIGluIHRoZSBzYW1lIG9yZGVyIHRoZXkndmUgYmVlbiBsb2NrZWQKLSAqIC0gZGVxdWV1ZSgpIGlzIG5vdCByZWVudHJhbnQKLSAqIC0gbm8gZXJyb3IgY2hlY2tzIGFyZSBkb25lIG9uIHRoZSBjb25kaXRpb24gYWJvdmUKICAqIAogICovCiAKLS8vIFdoZW4gY2hhbmdpbmcgdGhlc2UgdmFsdWVzLCB0aGUgQ09NUElMRV9USU1FX0FTU0VSVCBhdCB0aGUgZW5kIG9mIHRoaXMKLS8vIGZpbGUgbmVlZCB0byBiZSB1cGRhdGVkLgotY29uc3QgdW5zaWduZWQgaW50IE5VTV9MQVlFUlNfTUFYICA9IDMxOwotY29uc3QgdW5zaWduZWQgaW50IE5VTV9CVUZGRVJfTUFYICA9IDQ7Ci1jb25zdCB1bnNpZ25lZCBpbnQgTlVNX0RJU1BMQVlfTUFYID0gNDsKLQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBjbGFzcyBSZWdpb247CkBAIC02OSw3ICs1NCwxMSBAQAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLS8vIHNob3VsZCBiZSAxMjggYnl0ZXMgKDMyIGxvbmdzKQorLy8gNCAqICgxMSArIDcgKyAoMSArIDIqTlVNX1JFQ1RfTUFYKSAqIE5VTV9CVUZGRVJfTUFYKSAqIE5VTV9MQVlFUlNfTUFYCisvLyA0ICogKDExICsgNyArICgxICsgMio3KSoxNikgKiAzMQorLy8gMTAzMiAqIDMxCisvLyA9IH4yNyBLaUIgKDMxOTkyKQorCiBjbGFzcyBTaGFyZWRCdWZmZXJTdGFjawogewogICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRDbGllbnQ7CkBAIC03OCwyMSArNjcsMzggQEAKICAgICBmcmllbmQgY2xhc3MgU2hhcmVkQnVmZmVyU2VydmVyOwogCiBwdWJsaWM6Ci0gICAgc3RydWN0IEZsYXRSZWdpb24geyAvLyAxMiBieXRlcwotICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IE5VTV9SRUNUX01BWCA9IDE7Ci0gICAgICAgIHVpbnQzMl90ICAgIGNvdW50OwotICAgICAgICB1aW50MTZfdCAgICByZWN0c1s0Kk5VTV9SRUNUX01BWF07Ci0gICAgfTsKLSAgICAKKyAgICAvLyBXaGVuIGNoYW5naW5nIHRoZXNlIHZhbHVlcywgdGhlIENPTVBJTEVfVElNRV9BU1NFUlQgYXQgdGhlIGVuZCBvZiB0aGlzCisgICAgLy8gZmlsZSBuZWVkIHRvIGJlIHVwZGF0ZWQuCisgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBOVU1fTEFZRVJTX01BWCAgPSAzMTsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IE5VTV9CVUZGRVJfTUFYICA9IDE2OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgTlVNX0JVRkZFUl9NSU4gID0gMjsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IE5VTV9ESVNQTEFZX01BWCA9IDQ7CisKICAgICBzdHJ1Y3QgU3RhdGlzdGljcyB7IC8vIDQgbG9uZ3MKICAgICAgICAgdHlwZWRlZiBpbnQzMl90IHVzZWNzX3Q7CiAgICAgICAgIHVzZWNzX3QgIHRvdGFsVGltZTsKICAgICAgICAgdXNlY3NfdCAgcmVzZXJ2ZWRbM107CiAgICAgfTsKKworICAgIHN0cnVjdCBTbWFsbFJlY3QgeworICAgICAgICB1aW50MTZfdCBsLCB0LCByLCBiOworICAgIH07CisKKyAgICBzdHJ1Y3QgRmxhdFJlZ2lvbiB7IC8vIDUyIGJ5dGVzID0gNCAqICgxICsgMipOKQorICAgICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IE5VTV9SRUNUX01BWCA9IDY7CisgICAgICAgIHVpbnQzMl90ICAgIGNvdW50OworICAgICAgICBTbWFsbFJlY3QgICByZWN0c1tOVU1fUkVDVF9NQVhdOworICAgIH07CisgICAgCisgICAgc3RydWN0IEJ1ZmZlckRhdGEgeworICAgICAgICBGbGF0UmVnaW9uIGRpcnR5UmVnaW9uOworICAgICAgICBTbWFsbFJlY3QgIGNyb3A7CisgICAgfTsKICAgICAKICAgICBTaGFyZWRCdWZmZXJTdGFjaygpOwogICAgIHZvaWQgaW5pdChpbnQzMl90IGlkZW50aXR5KTsKICAgICBzdGF0dXNfdCBzZXREaXJ0eVJlZ2lvbihpbnQgYnVmZmVyLCBjb25zdCBSZWdpb24mIHJlZyk7CisgICAgc3RhdHVzX3Qgc2V0Q3JvcChpbnQgYnVmZmVyLCBjb25zdCBSZWN0JiByZWcpOwogICAgIFJlZ2lvbiBnZXREaXJ0eVJlZ2lvbihpbnQgYnVmZmVyKSBjb25zdDsKIAogICAgIC8vIHRoZXNlIGF0dHJpYnV0ZXMgYXJlIHBhcnQgb2YgdGhlIGNvbmRpdGlvbnMvdXBkYXRlcwpAQCAtMTA0LDI0ICsxMTAsMjUgQEAKIAogICAgIC8vIG5vdCBwYXJ0IG9mIHRoZSBjb25kaXRpb25zCiAgICAgdm9sYXRpbGUgaW50MzJfdCByZWFsbG9jTWFzazsKKyAgICB2b2xhdGlsZSBpbnQ4X3QgaW5kZXhbTlVNX0JVRkZFUl9NQVhdOwogCiAgICAgaW50MzJfdCAgICAgaWRlbnRpdHk7ICAgICAgIC8vIHN1cmZhY2UncyBpZGVudGl0eSAoY29uc3QpCi0gICAgaW50MzJfdCAgICAgcmVzZXJ2ZWQzMls5XTsKKyAgICBpbnQzMl90ICAgICB0b2tlbjsgICAgICAgICAgLy8gc3VyZmFjZSdzIHRva2VuIChmb3IgZGVidWdnaW5nKQorICAgIGludDMyX3QgICAgIHJlc2VydmVkMzJbMV07CiAgICAgU3RhdGlzdGljcyAgc3RhdHM7Ci0gICAgRmxhdFJlZ2lvbiAgZGlydHlSZWdpb25bTlVNX0JVRkZFUl9NQVhdOyAgICAvLyAxMio0PTQ4IGJ5dGVzCisgICAgaW50MzJfdCAgICAgcmVzZXJ2ZWQ7CisgICAgQnVmZmVyRGF0YSAgYnVmZmVyc1tOVU1fQlVGRkVSX01BWF07ICAgICAvLyA5NjAgYnl0ZXMKIH07CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotLy8gNCBLQiBtYXgKKy8vIDMyIEtCIG1heAogY2xhc3MgU2hhcmVkQ2xpZW50CiB7CiBwdWJsaWM6CiAgICAgU2hhcmVkQ2xpZW50KCk7CiAgICAgflNoYXJlZENsaWVudCgpOwotCiAgICAgc3RhdHVzX3QgdmFsaWRhdGUoc2l6ZV90IHRva2VuKSBjb25zdDsKLSAgICB1aW50MzJfdCBnZXRJZGVudGl0eShzaXplX3QgdG9rZW4pIGNvbnN0OwogCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXJCYXNlOwpAQCAtMTMxLDcgKzEzOCw3IEBACiAgICAgLy8gRklYTUU6IHRoaXMgc2hvdWxkIGJlIHJlcGxhY2VkIGJ5IGEgbG9jay1sZXNzIHByaW1pdGl2ZQogICAgIE11dGV4IGxvY2s7CiAgICAgQ29uZGl0aW9uIGN2OwotICAgIFNoYXJlZEJ1ZmZlclN0YWNrIHN1cmZhY2VzWyBOVU1fTEFZRVJTX01BWCBdOworICAgIFNoYXJlZEJ1ZmZlclN0YWNrIHN1cmZhY2VzWyBTaGFyZWRCdWZmZXJTdGFjazo6TlVNX0xBWUVSU19NQVggXTsKIH07CiAKIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTEzOSwxOCArMTQ2LDE3IEBACiBjbGFzcyBTaGFyZWRCdWZmZXJCYXNlCiB7CiBwdWJsaWM6Ci0gICAgU2hhcmVkQnVmZmVyQmFzZShTaGFyZWRDbGllbnQqIHNoYXJlZENsaWVudCwgaW50IHN1cmZhY2UsIGludCBudW0sCisgICAgU2hhcmVkQnVmZmVyQmFzZShTaGFyZWRDbGllbnQqIHNoYXJlZENsaWVudCwgaW50IHN1cmZhY2UsCiAgICAgICAgICAgICBpbnQzMl90IGlkZW50aXR5KTsKICAgICB+U2hhcmVkQnVmZmVyQmFzZSgpOwotICAgIHVpbnQzMl90IGdldElkZW50aXR5KCk7CiAgICAgc3RhdHVzX3QgZ2V0U3RhdHVzKCkgY29uc3Q7CisgICAgaW50MzJfdCBnZXRJZGVudGl0eSgpIGNvbnN0OwogICAgIHNpemVfdCBnZXRGcm9udEJ1ZmZlcigpIGNvbnN0OwogICAgIFN0cmluZzggZHVtcChjaGFyIGNvbnN0KiBwcmVmaXgpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6CiAgICAgU2hhcmVkQ2xpZW50KiBjb25zdCBtU2hhcmVkQ2xpZW50OwogICAgIFNoYXJlZEJ1ZmZlclN0YWNrKiBjb25zdCBtU2hhcmVkU3RhY2s7Ci0gICAgY29uc3QgaW50IG1OdW1CdWZmZXJzOwogICAgIGNvbnN0IGludCBtSWRlbnRpdHk7CiAKICAgICBmcmllbmQgc3RydWN0IFVwZGF0ZTsKQEAgLTE2MCw2MSArMTY2LDIyIEBACiAgICAgICAgIFNoYXJlZEJ1ZmZlclN0YWNrJiBzdGFjazsKICAgICAgICAgaW5saW5lIENvbmRpdGlvbkJhc2UoU2hhcmVkQnVmZmVyQmFzZSogc2JjKSAKICAgICAgICAgICAgIDogc3RhY2soKnNiYy0+bVNoYXJlZFN0YWNrKSB7IH0KKyAgICAgICAgdmlydHVhbCB+Q29uZGl0aW9uQmFzZSgpIHsgfTsKKyAgICAgICAgdmlydHVhbCBib29sIG9wZXJhdG9yKCkoKSBjb25zdCA9IDA7CisgICAgICAgIHZpcnR1YWwgY29uc3QgY2hhciogbmFtZSgpIGNvbnN0ID0gMDsKICAgICB9OworICAgIHN0YXR1c190IHdhaXRGb3JDb25kaXRpb24oY29uc3QgQ29uZGl0aW9uQmFzZSYgY29uZGl0aW9uKTsKIAogICAgIHN0cnVjdCBVcGRhdGVCYXNlIHsKICAgICAgICAgU2hhcmVkQnVmZmVyU3RhY2smIHN0YWNrOwogICAgICAgICBpbmxpbmUgVXBkYXRlQmFzZShTaGFyZWRCdWZmZXJCYXNlKiBzYmIpIAogICAgICAgICAgICAgOiBzdGFjaygqc2JiLT5tU2hhcmVkU3RhY2spIHsgfQogICAgIH07Ci0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBzdGF0dXNfdCB3YWl0Rm9yQ29uZGl0aW9uKFQgY29uZGl0aW9uKTsKLQogICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogICAgIHN0YXR1c190IHVwZGF0ZUNvbmRpdGlvbihUIHVwZGF0ZSk7CiB9OwogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0YXR1c190IFNoYXJlZEJ1ZmZlckJhc2U6OndhaXRGb3JDb25kaXRpb24oVCBjb25kaXRpb24pIAotewotICAgIGNvbnN0IFNoYXJlZEJ1ZmZlclN0YWNrJiBzdGFjayggKm1TaGFyZWRTdGFjayApOwotICAgIFNoYXJlZENsaWVudCYgY2xpZW50KCAqbVNoYXJlZENsaWVudCApOwotICAgIGNvbnN0IG5zZWNzX3QgVElNRU9VVCA9IHMybnMoMSk7Ci0gICAgTXV0ZXg6OkF1dG9sb2NrIF9sKGNsaWVudC5sb2NrKTsKLSAgICB3aGlsZSAoKGNvbmRpdGlvbigpPT1mYWxzZSkgJiYKLSAgICAgICAgICAgIChzdGFjay5pZGVudGl0eSA9PSBtSWRlbnRpdHkpICYmCi0gICAgICAgICAgICAoc3RhY2suc3RhdHVzID09IE5PX0VSUk9SKSkKLSAgICB7Ci0gICAgICAgIHN0YXR1c190IGVyciA9IGNsaWVudC5jdi53YWl0UmVsYXRpdmUoY2xpZW50LmxvY2ssIFRJTUVPVVQpOwotICAgICAgICAKLSAgICAgICAgLy8gaGFuZGxlIGVycm9ycyBhbmQgdGltZW91dHMKLSAgICAgICAgaWYgKENDX1VOTElLRUxZKGVyciAhPSBOT19FUlJPUikpIHsKLSAgICAgICAgICAgIGlmIChlcnIgPT0gVElNRURfT1VUKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbmRpdGlvbigpKSB7Ci0gICAgICAgICAgICAgICAgICAgIExPR0UoIndhaXRGb3JDb25kaXRpb24oJXMpIHRpbWVkIG91dCAoaWRlbnRpdHk9JWQpLCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAiYnV0IGNvbmRpdGlvbiBpcyB0cnVlISBXZSByZWNvdmVyZWQgYnV0IGl0ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJzaG91bGRuJ3QgaGFwcGVuLiIgLCBUOjpuYW1lKCksCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGFjay5pZGVudGl0eSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIExPR1coIndhaXRGb3JDb25kaXRpb24oJXMpIHRpbWVkIG91dCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAiKGlkZW50aXR5PSVkLCBzdGF0dXM9JWQpLiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAiQ1BVIG1heSBiZSBwZWdnZWQuIHRyeWluZyBhZ2Fpbi4iLCBUOjpuYW1lKCksCi0gICAgICAgICAgICAgICAgICAgICAgICBzdGFjay5pZGVudGl0eSwgc3RhY2suc3RhdHVzKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIExPR0UoIndhaXRGb3JDb25kaXRpb24oJXMpIGVycm9yICglcykgIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIFQ6Om5hbWUoKSwgc3RyZXJyb3IoLWVycikpOwotICAgICAgICAgICAgICAgIHJldHVybiBlcnI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIChzdGFjay5pZGVudGl0eSAhPSBtSWRlbnRpdHkpID8gc3RhdHVzX3QoQkFEX0lOREVYKSA6IHN0YWNrLnN0YXR1czsKLX0KLQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KIHN0YXR1c190IFNoYXJlZEJ1ZmZlckJhc2U6OnVwZGF0ZUNvbmRpdGlvbihUIHVwZGF0ZSkgewogICAgIFNoYXJlZENsaWVudCYgY2xpZW50KCAqbVNoYXJlZENsaWVudCApOwogICAgIE11dGV4OjpBdXRvbG9jayBfbChjbGllbnQubG9jayk7CkBAIC0yMzgsMTMgKzIwNSwyMSBAQAogICAgIHN0YXR1c190IHF1ZXVlKGludCBidWYpOwogICAgIGJvb2wgbmVlZE5ld0J1ZmZlcihpbnQgYnVmZmVyKSBjb25zdDsKICAgICBzdGF0dXNfdCBzZXREaXJ0eVJlZ2lvbihpbnQgYnVmZmVyLCBjb25zdCBSZWdpb24mIHJlZyk7CisgICAgc3RhdHVzX3Qgc2V0Q3JvcChpbnQgYnVmZmVyLCBjb25zdCBSZWN0JiByZWcpOwogICAgIAorCisgICAgY2xhc3MgU2V0QnVmZmVyQ291bnRDYWxsYmFjayB7CisgICAgICAgIGZyaWVuZCBjbGFzcyBTaGFyZWRCdWZmZXJDbGllbnQ7CisgICAgICAgIHZpcnR1YWwgc3RhdHVzX3Qgb3BlcmF0b3IoKShpbnQgYnVmZmVyQ291bnQpIGNvbnN0ID0gMDsKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZpcnR1YWwgflNldEJ1ZmZlckNvdW50Q2FsbGJhY2soKSB7IH0KKyAgICB9OworICAgIHN0YXR1c190IHNldEJ1ZmZlckNvdW50KGludCBidWZmZXJDb3VudCwgY29uc3QgU2V0QnVmZmVyQ291bnRDYWxsYmFjayYgaXBjKTsKKwogcHJpdmF0ZToKICAgICBmcmllbmQgc3RydWN0IENvbmRpdGlvbjsKICAgICBmcmllbmQgc3RydWN0IERlcXVldWVDb25kaXRpb247CiAgICAgZnJpZW5kIHN0cnVjdCBMb2NrQ29uZGl0aW9uOwotICAgIAotICAgIGludDMyX3QgY29tcHV0ZVRhaWwoKSBjb25zdDsKIAogICAgIHN0cnVjdCBRdWV1ZVVwZGF0ZSA6IHB1YmxpYyBVcGRhdGVCYXNlIHsKICAgICAgICAgaW5saW5lIFF1ZXVlVXBkYXRlKFNoYXJlZEJ1ZmZlckJhc2UqIHNiYik7CkBAIC0yNjAsMjUgKzIzNSwzNCBAQAogCiAgICAgc3RydWN0IERlcXVldWVDb25kaXRpb24gOiBwdWJsaWMgQ29uZGl0aW9uQmFzZSB7CiAgICAgICAgIGlubGluZSBEZXF1ZXVlQ29uZGl0aW9uKFNoYXJlZEJ1ZmZlckNsaWVudCogc2JjKTsKLSAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3IoKSgpOwotICAgICAgICBzdGF0aWMgaW5saW5lIGNvbnN0IGNoYXIqIG5hbWUoKSB7IHJldHVybiAiRGVxdWV1ZUNvbmRpdGlvbiI7IH0KKyAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3IoKSgpIGNvbnN0OworICAgICAgICBpbmxpbmUgY29uc3QgY2hhciogbmFtZSgpIGNvbnN0IHsgcmV0dXJuICJEZXF1ZXVlQ29uZGl0aW9uIjsgfQogICAgIH07CiAKICAgICBzdHJ1Y3QgTG9ja0NvbmRpdGlvbiA6IHB1YmxpYyBDb25kaXRpb25CYXNlIHsKICAgICAgICAgaW50IGJ1ZjsKICAgICAgICAgaW5saW5lIExvY2tDb25kaXRpb24oU2hhcmVkQnVmZmVyQ2xpZW50KiBzYmMsIGludCBidWYpOwotICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcigpKCk7Ci0gICAgICAgIHN0YXRpYyBpbmxpbmUgY29uc3QgY2hhciogbmFtZSgpIHsgcmV0dXJuICJMb2NrQ29uZGl0aW9uIjsgfQorICAgICAgICBpbmxpbmUgYm9vbCBvcGVyYXRvcigpKCkgY29uc3Q7CisgICAgICAgIGlubGluZSBjb25zdCBjaGFyKiBuYW1lKCkgY29uc3QgeyByZXR1cm4gIkxvY2tDb25kaXRpb24iOyB9CiAgICAgfTsKIAorICAgIGludDMyX3QgY29tcHV0ZVRhaWwoKSBjb25zdDsKKworICAgIG11dGFibGUgUldMb2NrIG1Mb2NrOworICAgIGludCBtTnVtQnVmZmVyczsKKwogICAgIGludDMyX3QgdGFpbDsKKyAgICBpbnQzMl90IHVuZG9EZXF1ZXVlVGFpbDsKKyAgICBpbnQzMl90IHF1ZXVlZF9oZWFkOwogICAgIC8vIHN0YXRpc3RpY3MuLi4KLSAgICBuc2Vjc190IG1EZXF1ZXVlVGltZVtOVU1fQlVGRkVSX01BWF07CisgICAgbnNlY3NfdCBtRGVxdWV1ZVRpbWVbU2hhcmVkQnVmZmVyU3RhY2s6Ok5VTV9CVUZGRVJfTUFYXTsKIH07CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotY2xhc3MgU2hhcmVkQnVmZmVyU2VydmVyIDogcHVibGljIFNoYXJlZEJ1ZmZlckJhc2UKK2NsYXNzIFNoYXJlZEJ1ZmZlclNlcnZlcgorICAgIDogcHVibGljIFNoYXJlZEJ1ZmZlckJhc2UsCisgICAgICBwdWJsaWMgTGlnaHRSZWZCYXNlPFNoYXJlZEJ1ZmZlclNlcnZlcj4KIHsKIHB1YmxpYzoKICAgICBTaGFyZWRCdWZmZXJTZXJ2ZXIoU2hhcmVkQ2xpZW50KiBzaGFyZWRDbGllbnQsIGludCBzdXJmYWNlLCBpbnQgbnVtLApAQCAtMjg3LDE2ICsyNzEsNzQgQEAKICAgICBzc2l6ZV90IHJldGlyZUFuZExvY2soKTsKICAgICBzdGF0dXNfdCB1bmxvY2soaW50IGJ1ZmZlcik7CiAgICAgdm9pZCBzZXRTdGF0dXMoc3RhdHVzX3Qgc3RhdHVzKTsKLSAgICBzdGF0dXNfdCByZWFsbG9jYXRlKCk7CisgICAgc3RhdHVzX3QgcmVhbGxvY2F0ZUFsbCgpOworICAgIHN0YXR1c190IHJlYWxsb2NhdGVBbGxFeGNlcHQoaW50IGJ1ZmZlcik7CiAgICAgc3RhdHVzX3QgYXNzZXJ0UmVhbGxvY2F0ZShpbnQgYnVmZmVyKTsKICAgICBpbnQzMl90IGdldFF1ZXVlZENvdW50KCkgY29uc3Q7Ci0gICAgCiAgICAgUmVnaW9uIGdldERpcnR5UmVnaW9uKGludCBidWZmZXIpIGNvbnN0OwogCisgICAgc3RhdHVzX3QgcmVzaXplKGludCBuZXdOdW1CdWZmZXJzKTsKKwogICAgIFNoYXJlZEJ1ZmZlclN0YWNrOjpTdGF0aXN0aWNzIGdldFN0YXRzKCkgY29uc3Q7CiAgICAgCiAKIHByaXZhdGU6CisgICAgZnJpZW5kIGNsYXNzIExpZ2h0UmVmQmFzZTxTaGFyZWRCdWZmZXJTZXJ2ZXI+OworICAgIH5TaGFyZWRCdWZmZXJTZXJ2ZXIoKTsKKworICAgIC8qCisgICAgICogQnVmZmVyTGlzdCBpcyBiYXNpY2FsbHkgYSBmaXhlZC1jYXBhY2l0eSBzb3J0ZWQtdmVjdG9yIG9mCisgICAgICogdW5zaWduZWQgNS1iaXRzIGludHMgdXNpbmcgYSAzMi1iaXRzIGludCBhcyBzdG9yYWdlLgorICAgICAqIGl0IGhhcyBlZmZpY2llbnQgaXRlcmF0b3JzIHRvIGZpbmQgaXRlbXMgaW4gdGhlIGxpc3QgYW5kIG5vdCBpbiB0aGUgbGlzdC4KKyAgICAgKi8KKyAgICBjbGFzcyBCdWZmZXJMaXN0IHsKKyAgICAgICAgc2l6ZV90IG1DYXBhY2l0eTsKKyAgICAgICAgdWludDMyX3QgbUxpc3Q7CisgICAgcHVibGljOgorICAgICAgICBCdWZmZXJMaXN0KHNpemVfdCBjID0gU2hhcmVkQnVmZmVyU3RhY2s6Ok5VTV9CVUZGRVJfTUFYKQorICAgICAgICAgICAgOiBtQ2FwYWNpdHkoYyksIG1MaXN0KDApIHsgfQorICAgICAgICBzdGF0dXNfdCBhZGQoaW50IHZhbHVlKTsKKyAgICAgICAgc3RhdHVzX3QgcmVtb3ZlKGludCB2YWx1ZSk7CisgICAgICAgIHVpbnQzMl90IGdldE1hc2soKSBjb25zdCB7IHJldHVybiBtTGlzdDsgfQorCisgICAgICAgIGNsYXNzIGNvbnN0X2l0ZXJhdG9yIHsKKyAgICAgICAgICAgIGZyaWVuZCBjbGFzcyBCdWZmZXJMaXN0OworICAgICAgICAgICAgdWludDMyX3QgbWFzaywgY3VycjsKKyAgICAgICAgICAgIGNvbnN0X2l0ZXJhdG9yKHVpbnQzMl90IG1hc2spIDoKKyAgICAgICAgICAgICAgICBtYXNrKG1hc2spLCBjdXJyKF9fYnVpbHRpbl9jbHoobWFzaykpIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgcHVibGljOgorICAgICAgICAgICAgaW5saW5lIGJvb2wgb3BlcmF0b3IgPT0gKGNvbnN0IGNvbnN0X2l0ZXJhdG9yJiByaHMpIGNvbnN0IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbWFzayA9PSByaHMubWFzazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yICE9IChjb25zdCBjb25zdF9pdGVyYXRvciYgcmhzKSBjb25zdCB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1hc2sgIT0gcmhzLm1hc2s7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbmxpbmUgaW50IG9wZXJhdG9yICooKSBjb25zdCB7IHJldHVybiBjdXJyOyB9CisgICAgICAgICAgICBpbmxpbmUgY29uc3QgY29uc3RfaXRlcmF0b3ImIG9wZXJhdG9yICsrKCkgeworICAgICAgICAgICAgICAgIG1hc2sgJj0gfigxPDwoMzEtY3VycikpOworICAgICAgICAgICAgICAgIGN1cnIgPSBfX2J1aWx0aW5fY2x6KG1hc2spOworICAgICAgICAgICAgICAgIHJldHVybiAqdGhpczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBpbmxpbmUgY29uc3RfaXRlcmF0b3IgYmVnaW4oKSBjb25zdCB7CisgICAgICAgICAgICByZXR1cm4gY29uc3RfaXRlcmF0b3IobUxpc3QpOworICAgICAgICB9CisgICAgICAgIGlubGluZSBjb25zdF9pdGVyYXRvciBlbmQoKSBjb25zdCAgIHsKKyAgICAgICAgICAgIHJldHVybiBjb25zdF9pdGVyYXRvcigwKTsKKyAgICAgICAgfQorICAgICAgICBpbmxpbmUgY29uc3RfaXRlcmF0b3IgZnJlZV9iZWdpbigpIGNvbnN0IHsKKyAgICAgICAgICAgIHVpbnQzMl90IG1hc2sgPSAoMSA8PCAoMzItbUNhcGFjaXR5KSkgLSAxOworICAgICAgICAgICAgcmV0dXJuIGNvbnN0X2l0ZXJhdG9yKCB+KG1MaXN0IHwgbWFzaykgKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICAvLyB0aGlzIHByb3RlY3RzIG1OdW1CdWZmZXJzIGFuZCBtQnVmZmVyTGlzdAorICAgIG11dGFibGUgUldMb2NrIG1Mb2NrOworICAgIGludCBtTnVtQnVmZmVyczsKKyAgICBCdWZmZXJMaXN0IG1CdWZmZXJMaXN0OworCiAgICAgc3RydWN0IFVubG9ja1VwZGF0ZSA6IHB1YmxpYyBVcGRhdGVCYXNlIHsKICAgICAgICAgY29uc3QgaW50IGxvY2tlZEJ1ZmZlcjsKICAgICAgICAgaW5saW5lIFVubG9ja1VwZGF0ZShTaGFyZWRCdWZmZXJCYXNlKiBzYmIsIGludCBsb2NrZWRCdWZmZXIpOwpAQCAtMzE4LDggKzM2MCw4IEBACiAgICAgc3RydWN0IFJlYWxsb2NhdGVDb25kaXRpb24gOiBwdWJsaWMgQ29uZGl0aW9uQmFzZSB7CiAgICAgICAgIGludCBidWY7CiAgICAgICAgIGlubGluZSBSZWFsbG9jYXRlQ29uZGl0aW9uKFNoYXJlZEJ1ZmZlckJhc2UqIHNiYiwgaW50IGJ1Zik7Ci0gICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yKCkoKTsKLSAgICAgICAgc3RhdGljIGlubGluZSBjb25zdCBjaGFyKiBuYW1lKCkgeyByZXR1cm4gIlJlYWxsb2NhdGVDb25kaXRpb24iOyB9CisgICAgICAgIGlubGluZSBib29sIG9wZXJhdG9yKCkoKSBjb25zdDsKKyAgICAgICAgaW5saW5lIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdCB7IHJldHVybiAiUmVhbGxvY2F0ZUNvbmRpdGlvbiI7IH0KICAgICB9OwogfTsKIApAQCAtMzQ0LDEzICszODYsMTIgQEAKICAgICB1aW50OF90ICAgICAgICAgY29ubmVjdGVkOwogICAgIHVpbnQ4X3QgICAgICAgICByZXNlcnZlZFszXTsKICAgICB1aW50MzJfdCAgICAgICAgcGFkWzddOwotICAgIGRpc3BsYXlfY2Jsa190ICBkaXNwbGF5c1tOVU1fRElTUExBWV9NQVhdOworICAgIGRpc3BsYXlfY2Jsa190ICBkaXNwbGF5c1tTaGFyZWRCdWZmZXJTdGFjazo6TlVNX0RJU1BMQVlfTUFYXTsKIH07CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1DT01QSUxFX1RJTUVfQVNTRVJUKHNpemVvZihTaGFyZWRDbGllbnQpIDw9IDQwOTYpCi1DT01QSUxFX1RJTUVfQVNTRVJUKHNpemVvZihTaGFyZWRCdWZmZXJTdGFjaykgPT0gMTI4KQorQ09NUElMRV9USU1FX0FTU0VSVChzaXplb2YoU2hhcmVkQ2xpZW50KSA8PSAzMjc2OCkKIENPTVBJTEVfVElNRV9BU1NFUlQoc2l6ZW9mKHN1cmZhY2VfZmxpbmdlcl9jYmxrX3QpIDw9IDQwOTYpCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zdXJmYWNlZmxpbmdlci9JU3VyZmFjZS5oIGIvaW5jbHVkZS9zdXJmYWNlZmxpbmdlci9JU3VyZmFjZS5oCmluZGV4IDQ3MmY3NTkuLmRkYmUwM2QgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvc3VyZmFjZWZsaW5nZXIvSVN1cmZhY2UuaAorKysgYi9pbmNsdWRlL3N1cmZhY2VmbGluZ2VyL0lTdXJmYWNlLmgKQEAgLTQ3LDEzICs0NywzMCBAQAogICAgICAgICBQT1NUX0JVRkZFUiwgLy8gb25lLXdheSB0cmFuc2FjdGlvbgogICAgICAgICBDUkVBVEVfT1ZFUkxBWSwKICAgICAgICAgUkVRVUVTVF9CVUZGRVIsCisgICAgICAgIFNFVF9CVUZGRVJfQ09VTlQsCiAgICAgfTsKIAogcHVibGljOiAKICAgICBERUNMQVJFX01FVEFfSU5URVJGQUNFKFN1cmZhY2UpOwogCi0gICAgdmlydHVhbCBzcDxHcmFwaGljQnVmZmVyPiByZXF1ZXN0QnVmZmVyKGludCBidWZmZXJJZHgsIGludCB1c2FnZSkgPSAwOyAKKyAgICAvKgorICAgICAqIHJlcXVlc3RzIGEgbmV3IGJ1ZmZlciBmb3IgdGhlIGdpdmVuIGluZGV4LiBJZiB3LCBoLCBvciBmb3JtYXQgYXJlCisgICAgICogbnVsbCB0aGUgYnVmZmVyIGlzIGNyZWF0ZWQgd2l0aCB0aGUgcGFyYW1ldGVycyBhc3NpZ25lZCB0byB0aGUKKyAgICAgKiBzdXJmYWNlIGl0IGlzIGJvdW5kIHRvLiBPdGhlcndpc2UgdGhlIGJ1ZmZlcidzIHBhcmFtZXRlcnMgYXJlCisgICAgICogc2V0IHRvIHRob3NlIHNwZWNpZmllZC4KKyAgICAgKi8KKyAgICB2aXJ0dWFsIHNwPEdyYXBoaWNCdWZmZXI+IHJlcXVlc3RCdWZmZXIoaW50IGJ1ZmZlcklkeCwKKyAgICAgICAgICAgIHVpbnQzMl90IHcsIHVpbnQzMl90IGgsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdXNhZ2UpID0gMDsKKworICAgIC8qCisgICAgICogc2V0cyB0aGUgbnVtYmVyIG9mIGJ1ZmZlcnMgZGVxdWV1YWJsZSBmb3IgdGhpcyBzdXJmYWNlLgorICAgICAqLworICAgIHZpcnR1YWwgc3RhdHVzX3Qgc2V0QnVmZmVyQ291bnQoaW50IGJ1ZmZlckNvdW50KSA9IDA7CiAgICAgCisgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gRGVwcmVjYXRlZC4uLgorICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCiAgICAgY2xhc3MgQnVmZmVySGVhcCB7CiAgICAgcHVibGljOgogICAgICAgICBlbnVtIHsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvc3VyZmFjZWZsaW5nZXIvSVN1cmZhY2VDb21wb3Nlci5oIGIvaW5jbHVkZS9zdXJmYWNlZmxpbmdlci9JU3VyZmFjZUNvbXBvc2VyLmgKaW5kZXggZDFlNzc4NS4uZGQ0NGFhNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9zdXJmYWNlZmxpbmdlci9JU3VyZmFjZUNvbXBvc2VyLmgKKysrIGIvaW5jbHVkZS9zdXJmYWNlZmxpbmdlci9JU3VyZmFjZUNvbXBvc2VyLmgKQEAgLTI3LDcgKzI3LDcgQEAKIAogI2luY2x1ZGUgPHVpL1BpeGVsRm9ybWF0Lmg+CiAKLSNpbmNsdWRlIDxzdXJmYWNlZmxpbmdlci9JU3VyZmFjZUZsaW5nZXJDbGllbnQuaD4KKyNpbmNsdWRlIDxzdXJmYWNlZmxpbmdlci9JU3VyZmFjZUNvbXBvc2VyQ2xpZW50Lmg+CiAKIG5hbWVzcGFjZSBhbmRyb2lkIHsKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTg1LDggKzg1LDExIEBACiAgICAgLyogY3JlYXRlIGNvbm5lY3Rpb24gd2l0aCBzdXJmYWNlIGZsaW5nZXIsIHJlcXVpcmVzCiAgICAgICogQUNDRVNTX1NVUkZBQ0VfRkxJTkdFUiBwZXJtaXNzaW9uCiAgICAgICovCisgICAgdmlydHVhbCBzcDxJU3VyZmFjZUNvbXBvc2VyQ2xpZW50PiBjcmVhdGVDb25uZWN0aW9uKCkgPSAwOwogCi0gICAgdmlydHVhbCBzcDxJU3VyZmFjZUZsaW5nZXJDbGllbnQ+IGNyZWF0ZUNvbm5lY3Rpb24oKSA9IDA7CisgICAgLyogY3JlYXRlIGEgY2xpZW50IGNvbm5lY3Rpb24gd2l0aCBzdXJmYWNlIGZsaW5nZXIKKyAgICAgKi8KKyAgICB2aXJ0dWFsIHNwPElTdXJmYWNlQ29tcG9zZXJDbGllbnQ+IGNyZWF0ZUNsaWVudENvbm5lY3Rpb24oKSA9IDA7CiAKICAgICAvKiByZXRyaWV2ZSB0aGUgY29udHJvbCBibG9jayAqLwogICAgIHZpcnR1YWwgc3A8SU1lbW9yeUhlYXA+IGdldENibGsoKSBjb25zdCA9IDA7CkBAIC0xMjMsNiArMTI2LDcgQEAKICAgICAgICAgLy8gSmF2YSBieSBBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlLgogICAgICAgICBCT09UX0ZJTklTSEVEID0gSUJpbmRlcjo6RklSU1RfQ0FMTF9UUkFOU0FDVElPTiwKICAgICAgICAgQ1JFQVRFX0NPTk5FQ1RJT04sCisgICAgICAgIENSRUFURV9DTElFTlRfQ09OTkVDVElPTiwKICAgICAgICAgR0VUX0NCTEssCiAgICAgICAgIE9QRU5fR0xPQkFMX1RSQU5TQUNUSU9OLAogICAgICAgICBDTE9TRV9HTE9CQUxfVFJBTlNBQ1RJT04sCmRpZmYgLS1naXQgYS9pbmNsdWRlL3N1cmZhY2VmbGluZ2VyL0lTdXJmYWNlQ29tcG9zZXJDbGllbnQuaCBiL2luY2x1ZGUvc3VyZmFjZWZsaW5nZXIvSVN1cmZhY2VDb21wb3NlckNsaWVudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExZTllMDQKLS0tIC9kZXYvbnVsbAorKysgYi9pbmNsdWRlL3N1cmZhY2VmbGluZ2VyL0lTdXJmYWNlQ29tcG9zZXJDbGllbnQuaApAQCAtMCwwICsxLDEwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgQU5EUk9JRF9TRl9JU1VSRkFDRV9DT01QT1NFUl9DTElFTlRfSAorI2RlZmluZSBBTkRST0lEX1NGX0lTVVJGQUNFX0NPTVBPU0VSX0NMSUVOVF9ICisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKworI2luY2x1ZGUgPHV0aWxzL0Vycm9ycy5oPgorI2luY2x1ZGUgPHV0aWxzL1JlZkJhc2UuaD4KKworI2luY2x1ZGUgPGJpbmRlci9JSW50ZXJmYWNlLmg+CisKKyNpbmNsdWRlIDx1aS9QaXhlbEZvcm1hdC5oPgorCisjaW5jbHVkZSA8c3VyZmFjZWZsaW5nZXIvSVN1cmZhY2UuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NsYXNzIElNZW1vcnlIZWFwOworCit0eXBlZGVmIGludDMyX3QgICAgQ2xpZW50SUQ7Cit0eXBlZGVmIGludDMyX3QgICAgRGlzcGxheUlEOworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NsYXNzIGxheWVyX3N0YXRlX3Q7CisKK2NsYXNzIElTdXJmYWNlQ29tcG9zZXJDbGllbnQgOiBwdWJsaWMgSUludGVyZmFjZQoreworcHVibGljOgorICAgIERFQ0xBUkVfTUVUQV9JTlRFUkZBQ0UoU3VyZmFjZUNvbXBvc2VyQ2xpZW50KTsKKworICAgIHN0cnVjdCBzdXJmYWNlX2RhdGFfdCB7CisgICAgICAgIGludDMyX3QgICAgICAgICAgICAgdG9rZW47CisgICAgICAgIGludDMyX3QgICAgICAgICAgICAgaWRlbnRpdHk7CisgICAgICAgIHVpbnQzMl90ICAgICAgICAgICAgd2lkdGg7CisgICAgICAgIHVpbnQzMl90ICAgICAgICAgICAgaGVpZ2h0OworICAgICAgICB1aW50MzJfdCAgICAgICAgICAgIGZvcm1hdDsKKyAgICAgICAgc3RhdHVzX3QgcmVhZEZyb21QYXJjZWwoY29uc3QgUGFyY2VsJiBwYXJjZWwpOworICAgICAgICBzdGF0dXNfdCB3cml0ZVRvUGFyY2VsKFBhcmNlbCogcGFyY2VsKSBjb25zdDsKKyAgICB9OworCisgICAgdmlydHVhbCBzcDxJTWVtb3J5SGVhcD4gZ2V0Q29udHJvbEJsb2NrKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgc3NpemVfdCBnZXRUb2tlbkZvclN1cmZhY2UoY29uc3Qgc3A8SVN1cmZhY2U+JiBzdXIpIGNvbnN0ID0gMDsKKworICAgIC8qCisgICAgICogUmVxdWlyZXMgQUNDRVNTX1NVUkZBQ0VfRkxJTkdFUiBwZXJtaXNzaW9uCisgICAgICovCisgICAgdmlydHVhbCBzcDxJU3VyZmFjZT4gY3JlYXRlU3VyZmFjZSggc3VyZmFjZV9kYXRhX3QqIGRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmc4JiBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpc3BsYXlJRCBkaXNwbGF5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQaXhlbEZvcm1hdCBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZmxhZ3MpID0gMDsKKworICAgIC8qCisgICAgICogUmVxdWlyZXMgQUNDRVNTX1NVUkZBQ0VfRkxJTkdFUiBwZXJtaXNzaW9uCisgICAgICovCisgICAgdmlydHVhbCBzdGF0dXNfdCAgICBkZXN0cm95U3VyZmFjZShTdXJmYWNlSUQgc2lkKSA9IDA7CisKKyAgICAvKgorICAgICAqIFJlcXVpcmVzIEFDQ0VTU19TVVJGQUNFX0ZMSU5HRVIgcGVybWlzc2lvbgorICAgICAqLworICAgIHZpcnR1YWwgc3RhdHVzX3QgICAgc2V0U3RhdGUoaW50MzJfdCBjb3VudCwgY29uc3QgbGF5ZXJfc3RhdGVfdCogc3RhdGVzKSA9IDA7Cit9OworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NsYXNzIEJuU3VyZmFjZUNvbXBvc2VyQ2xpZW50IDogcHVibGljIEJuSW50ZXJmYWNlPElTdXJmYWNlQ29tcG9zZXJDbGllbnQ+Cit7CitwdWJsaWM6CisgICAgdmlydHVhbCBzdGF0dXNfdCAgICBvblRyYW5zYWN0KCB1aW50MzJfdCBjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUGFyY2VsJiBkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFyY2VsKiByZXBseSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZsYWdzID0gMCk7Cit9OworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK307IC8vIG5hbWVzcGFjZSBhbmRyb2lkCisKKyNlbmRpZiAvLyBBTkRST0lEX1NGX0lTVVJGQUNFX0NPTVBPU0VSX0NMSUVOVF9ICmRpZmYgLS1naXQgYS9pbmNsdWRlL3N1cmZhY2VmbGluZ2VyL0lTdXJmYWNlRmxpbmdlckNsaWVudC5oIGIvaW5jbHVkZS9zdXJmYWNlZmxpbmdlci9JU3VyZmFjZUZsaW5nZXJDbGllbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDI1NzY0NS4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL3N1cmZhY2VmbGluZ2VyL0lTdXJmYWNlRmxpbmdlckNsaWVudC5oCisrKyAvZGV2L251bGwKQEAgLTEsOTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLSNpZm5kZWYgQU5EUk9JRF9TRl9JU1VSRkFDRV9GTElOR0VSX0NMSUVOVF9ICi0jZGVmaW5lIEFORFJPSURfU0ZfSVNVUkZBQ0VfRkxJTkdFUl9DTElFTlRfSAotCi0jaW5jbHVkZSA8c3RkaW50Lmg+Ci0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0KLSNpbmNsdWRlIDx1dGlscy9FcnJvcnMuaD4KLSNpbmNsdWRlIDx1dGlscy9SZWZCYXNlLmg+Ci0KLSNpbmNsdWRlIDxiaW5kZXIvSUludGVyZmFjZS5oPgotCi0jaW5jbHVkZSA8dWkvUGl4ZWxGb3JtYXQuaD4KLSAgCi0jaW5jbHVkZSA8c3VyZmFjZWZsaW5nZXIvSVN1cmZhY2UuaD4KLQotbmFtZXNwYWNlIGFuZHJvaWQgewotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWNsYXNzIElNZW1vcnlIZWFwOwotCi10eXBlZGVmIGludDMyX3QgICAgQ2xpZW50SUQ7Ci10eXBlZGVmIGludDMyX3QgICAgRGlzcGxheUlEOwotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWNsYXNzIGxheWVyX3N0YXRlX3Q7Ci0KLWNsYXNzIElTdXJmYWNlRmxpbmdlckNsaWVudCA6IHB1YmxpYyBJSW50ZXJmYWNlCi17Ci1wdWJsaWM6IAotICAgIERFQ0xBUkVfTUVUQV9JTlRFUkZBQ0UoU3VyZmFjZUZsaW5nZXJDbGllbnQpOwotCi0gICAgc3RydWN0IHN1cmZhY2VfZGF0YV90IHsKLSAgICAgICAgaW50MzJfdCAgICAgICAgICAgICB0b2tlbjsKLSAgICAgICAgaW50MzJfdCAgICAgICAgICAgICBpZGVudGl0eTsKLSAgICAgICAgdWludDMyX3QgICAgICAgICAgICB3aWR0aDsKLSAgICAgICAgdWludDMyX3QgICAgICAgICAgICBoZWlnaHQ7Ci0gICAgICAgIHVpbnQzMl90ICAgICAgICAgICAgZm9ybWF0OwotICAgICAgICBzdGF0dXNfdCByZWFkRnJvbVBhcmNlbChjb25zdCBQYXJjZWwmIHBhcmNlbCk7Ci0gICAgICAgIHN0YXR1c190IHdyaXRlVG9QYXJjZWwoUGFyY2VsKiBwYXJjZWwpIGNvbnN0OwotICAgIH07Ci0gICAgCi0gICAgdmlydHVhbCBzcDxJTWVtb3J5SGVhcD4gZ2V0Q29udHJvbEJsb2NrKCkgY29uc3QgPSAwOwotCi0gICAgdmlydHVhbCBzcDxJU3VyZmFjZT4gY3JlYXRlU3VyZmFjZSggc3VyZmFjZV9kYXRhX3QqIGRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBpZCwgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nOCYgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEaXNwbGF5SUQgZGlzcGxheSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGl4ZWxGb3JtYXQgZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZsYWdzKSA9IDA7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICB2aXJ0dWFsIHN0YXR1c190ICAgIGRlc3Ryb3lTdXJmYWNlKFN1cmZhY2VJRCBzaWQpID0gMDsKLQotICAgIHZpcnR1YWwgc3RhdHVzX3QgICAgc2V0U3RhdGUoaW50MzJfdCBjb3VudCwgY29uc3QgbGF5ZXJfc3RhdGVfdCogc3RhdGVzKSA9IDA7Ci19OwotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWNsYXNzIEJuU3VyZmFjZUZsaW5nZXJDbGllbnQgOiBwdWJsaWMgQm5JbnRlcmZhY2U8SVN1cmZhY2VGbGluZ2VyQ2xpZW50PgotewotcHVibGljOgotICAgIHZpcnR1YWwgc3RhdHVzX3QgICAgb25UcmFuc2FjdCggdWludDMyX3QgY29kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBhcmNlbCYgZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcmNlbCogcmVwbHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBmbGFncyA9IDApOwotfTsKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi19OyAvLyBuYW1lc3BhY2UgYW5kcm9pZAotCi0jZW5kaWYgLy8gQU5EUk9JRF9TRl9JU1VSRkFDRV9GTElOR0VSX0NMSUVOVF9ICmRpZmYgLS1naXQgYS9pbmNsdWRlL3N1cmZhY2VmbGluZ2VyL1N1cmZhY2UuaCBiL2luY2x1ZGUvc3VyZmFjZWZsaW5nZXIvU3VyZmFjZS5oCmluZGV4IDAyNzlkODQuLjRmZDA2ODEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvc3VyZmFjZWZsaW5nZXIvU3VyZmFjZS5oCisrKyBiL2luY2x1ZGUvc3VyZmFjZWZsaW5nZXIvU3VyZmFjZS5oCkBAIC0yOCwxMiArMjgsMTUgQEAKICNpbmNsdWRlIDx1aS9lZ2wvYW5kcm9pZF9uYXRpdmVzLmg+CiAKICNpbmNsdWRlIDxzdXJmYWNlZmxpbmdlci9JU3VyZmFjZS5oPgotI2luY2x1ZGUgPHN1cmZhY2VmbGluZ2VyL0lTdXJmYWNlRmxpbmdlckNsaWVudC5oPgorI2luY2x1ZGUgPHN1cmZhY2VmbGluZ2VyL0lTdXJmYWNlQ29tcG9zZXJDbGllbnQuaD4KKworI2RlZmluZSBBTkRST0lEX1ZJRVdfU1VSRkFDRV9KTklfSUQgICAgIm1OYXRpdmVTdXJmYWNlIgogCiBuYW1lc3BhY2UgYW5kcm9pZCB7CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCitjbGFzcyBHcmFwaGljQnVmZmVyOwogY2xhc3MgR3JhcGhpY0J1ZmZlck1hcHBlcjsKIGNsYXNzIElPTVg7CiBjbGFzcyBSZWN0OwpAQCAtNDEsNiArNDQsNyBAQAogY2xhc3MgU3VyZmFjZUNvbXBvc2VyQ2xpZW50OwogY2xhc3MgU2hhcmVkQ2xpZW50OwogY2xhc3MgU2hhcmVkQnVmZmVyQ2xpZW50OworY2xhc3MgU3VyZmFjZUNsaWVudDsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTU2LDcgKzYwLDYgQEAKICAgICBzdGF0aWMgYm9vbCBpc1NhbWVTdXJmYWNlKAogICAgICAgICAgICAgY29uc3Qgc3A8U3VyZmFjZUNvbnRyb2w+JiBsaHMsIGNvbnN0IHNwPFN1cmZhY2VDb250cm9sPiYgcmhzKTsKICAgICAgICAgCi0gICAgU3VyZmFjZUlEICAgSUQoKSBjb25zdCAgICAgIHsgcmV0dXJuIG1Ub2tlbjsgfQogICAgIHVpbnQzMl90ICAgIGdldEZsYWdzKCkgY29uc3QgeyByZXR1cm4gbUZsYWdzOyB9CiAgICAgdWludDMyX3QgICAgZ2V0SWRlbnRpdHkoKSBjb25zdCB7IHJldHVybiBtSWRlbnRpdHk7IH0KIApAQCAtMTA0LDcgKzEwNyw3IEBACiAgICAgU3VyZmFjZUNvbnRyb2woCiAgICAgICAgICAgICBjb25zdCBzcDxTdXJmYWNlQ29tcG9zZXJDbGllbnQ+JiBjbGllbnQsCiAgICAgICAgICAgICBjb25zdCBzcDxJU3VyZmFjZT4mIHN1cmZhY2UsCi0gICAgICAgICAgICBjb25zdCBJU3VyZmFjZUZsaW5nZXJDbGllbnQ6OnN1cmZhY2VfZGF0YV90JiBkYXRhLAorICAgICAgICAgICAgY29uc3QgSVN1cmZhY2VDb21wb3NlckNsaWVudDo6c3VyZmFjZV9kYXRhX3QmIGRhdGEsCiAgICAgICAgICAgICB1aW50MzJfdCB3LCB1aW50MzJfdCBoLCBQaXhlbEZvcm1hdCBmb3JtYXQsIHVpbnQzMl90IGZsYWdzKTsKIAogICAgIH5TdXJmYWNlQ29udHJvbCgpOwpAQCAtMTI4LDcgKzEzMSw3IEBACiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogY2xhc3MgU3VyZmFjZSAKLSAgICA6IHB1YmxpYyBFR0xOYXRpdmVCYXNlPGFuZHJvaWRfbmF0aXZlX3dpbmRvd190LCBTdXJmYWNlLCBSZWZCYXNlPgorICAgIDogcHVibGljIEVHTE5hdGl2ZUJhc2U8QU5hdGl2ZVdpbmRvdywgU3VyZmFjZSwgUmVmQmFzZT4KIHsKIHB1YmxpYzoKICAgICBzdHJ1Y3QgU3VyZmFjZUluZm8gewpAQCAtMTQxLDE3ICsxNDQsMTcgQEAKICAgICAgICAgdWludDMyX3QgICAgcmVzZXJ2ZWRbMl07CiAgICAgfTsKIAotICAgIFN1cmZhY2UoY29uc3QgUGFyY2VsJiBkYXRhKTsKKyAgICBzdGF0aWMgc3RhdHVzX3Qgd3JpdGVUb1BhcmNlbCgKKyAgICAgICAgICAgIGNvbnN0IHNwPFN1cmZhY2U+JiBjb250cm9sLCBQYXJjZWwqIHBhcmNlbCk7CisKKyAgICBzdGF0aWMgc3A8U3VyZmFjZT4gcmVhZEZyb21QYXJjZWwoCisgICAgICAgICAgICBjb25zdCBQYXJjZWwmIGRhdGEsIGNvbnN0IHNwPFN1cmZhY2U+JiBvdGhlcik7CiAKICAgICBzdGF0aWMgYm9vbCBpc1ZhbGlkKGNvbnN0IHNwPFN1cmZhY2U+JiBzdXJmYWNlKSB7CiAgICAgICAgIHJldHVybiAoc3VyZmFjZSAhPSAwKSAmJiBzdXJmYWNlLT5pc1ZhbGlkKCk7CiAgICAgfQogCi0gICAgc3RhdGljIGJvb2wgaXNTYW1lU3VyZmFjZSgKLSAgICAgICAgICAgIGNvbnN0IHNwPFN1cmZhY2U+JiBsaHMsIGNvbnN0IHNwPFN1cmZhY2U+JiByaHMpOwotCiAgICAgYm9vbCAgICAgICAgaXNWYWxpZCgpOwotICAgIFN1cmZhY2VJRCAgIElEKCkgY29uc3QgICAgICAgICAgeyByZXR1cm4gbVRva2VuOyB9CiAgICAgdWludDMyX3QgICAgZ2V0RmxhZ3MoKSBjb25zdCAgICB7IHJldHVybiBtRmxhZ3M7IH0KICAgICB1aW50MzJfdCAgICBnZXRJZGVudGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1JZGVudGl0eTsgfQogCkBAIC0xNjMsNDQgKzE2Niw0MyBAQAogICAgIC8vIHNldFN3YXBSZWN0YW5nbGUoKSBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIGJ5IEdMIEVTIGNsaWVudHMKICAgICB2b2lkICAgICAgICBzZXRTd2FwUmVjdGFuZ2xlKGNvbnN0IFJlY3QmIHIpOwogCisKIHByaXZhdGU6Ci0gICAgLy8gY2FuJ3QgYmUgY29waWVkCi0gICAgU3VyZmFjZSYgb3BlcmF0b3IgPSAoU3VyZmFjZSYgcmhzKTsKLSAgICBTdXJmYWNlKGNvbnN0IFN1cmZhY2UmIHJocyk7Ci0KLSAgICBTdXJmYWNlKGNvbnN0IHNwPFN1cmZhY2VDb250cm9sPiYgY29udHJvbCk7Ci0gICAgdm9pZCBpbml0KCk7Ci0gICAgIH5TdXJmYWNlKCk7Ci0gIAotICAgIGZyaWVuZCBjbGFzcyBTdXJmYWNlQ29tcG9zZXJDbGllbnQ7Ci0gICAgZnJpZW5kIGNsYXNzIFN1cmZhY2VDb250cm9sOwotCi0gICAgCisgICAgLyoKKyAgICAgKiBBbmRyb2lkIGZyYW1ld29ya3MgZnJpZW5kcworICAgICAqIChldmVudHVhbGx5IHRoaXMgc2hvdWxkIGdvIGF3YXkgYW5kIGJlIHJlcGxhY2VkIGJ5IHByb3BlciBBUElzKQorICAgICAqLwogICAgIC8vIGNhbWVyYSBhbmQgY2FtY29yZGVyIG5lZWQgYWNjZXNzIHRvIHRoZSBJU3VyZmFjZSBiaW5kZXIgaW50ZXJmYWNlIGZvciBwcmV2aWV3CiAgICAgZnJpZW5kIGNsYXNzIENhbWVyYTsKICAgICBmcmllbmQgY2xhc3MgTWVkaWFSZWNvcmRlcjsKLSAgICAvLyBtZWRpYXBsYXllciBuZWVkcyBhY2Nlc3MgdG8gSVN1cmZhY2UgZm9yIGRpc3BsYXkKKyAgICAvLyBNZWRpYVBsYXllciBuZWVkcyBhY2Nlc3MgdG8gSVN1cmZhY2UgZm9yIGRpc3BsYXkKICAgICBmcmllbmQgY2xhc3MgTWVkaWFQbGF5ZXI7CiAgICAgZnJpZW5kIGNsYXNzIElPTVg7CiAgICAgLy8gdGhpcyBpcyBqdXN0IHRvIGJlIGFibGUgdG8gd3JpdGUgc29tZSB1bml0IHRlc3RzCiAgICAgZnJpZW5kIGNsYXNzIFRlc3Q7CiAKLSAgICBzcDxTdXJmYWNlQ29tcG9zZXJDbGllbnQ+IGdldENsaWVudCgpIGNvbnN0OwotICAgIHNwPElTdXJmYWNlPiBnZXRJU3VyZmFjZSgpIGNvbnN0OworcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgU3VyZmFjZUNvbXBvc2VyQ2xpZW50OworICAgIGZyaWVuZCBjbGFzcyBTdXJmYWNlQ29udHJvbDsKIAotICAgIHN0YXR1c190IGdldEJ1ZmZlckxvY2tlZChpbnQgaW5kZXgsIGludCB1c2FnZSk7Ci0gICAKLSAgICAgICAgICAgc3RhdHVzX3QgdmFsaWRhdGUoKSBjb25zdDsKKyAgICAvLyBjYW4ndCBiZSBjb3BpZWQKKyAgICBTdXJmYWNlJiBvcGVyYXRvciA9IChTdXJmYWNlJiByaHMpOworICAgIFN1cmZhY2UoY29uc3QgU3VyZmFjZSYgcmhzKTsKIAotICAgIGlubGluZSBjb25zdCBHcmFwaGljQnVmZmVyTWFwcGVyJiBnZXRCdWZmZXJNYXBwZXIoKSBjb25zdCB7IHJldHVybiBtQnVmZmVyTWFwcGVyOyB9Ci0gICAgaW5saW5lIEdyYXBoaWNCdWZmZXJNYXBwZXImIGdldEJ1ZmZlck1hcHBlcigpIHsgcmV0dXJuIG1CdWZmZXJNYXBwZXI7IH0KLSAgICAKLSAgICBzdGF0aWMgaW50IHNldFN3YXBJbnRlcnZhbChhbmRyb2lkX25hdGl2ZV93aW5kb3dfdCogd2luZG93LCBpbnQgaW50ZXJ2YWwpOwotICAgIHN0YXRpYyBpbnQgZGVxdWV1ZUJ1ZmZlcihhbmRyb2lkX25hdGl2ZV93aW5kb3dfdCogd2luZG93LCBhbmRyb2lkX25hdGl2ZV9idWZmZXJfdCoqIGJ1ZmZlcik7Ci0gICAgc3RhdGljIGludCBsb2NrQnVmZmVyKGFuZHJvaWRfbmF0aXZlX3dpbmRvd190KiB3aW5kb3csIGFuZHJvaWRfbmF0aXZlX2J1ZmZlcl90KiBidWZmZXIpOwotICAgIHN0YXRpYyBpbnQgcXVldWVCdWZmZXIoYW5kcm9pZF9uYXRpdmVfd2luZG93X3QqIHdpbmRvdywgYW5kcm9pZF9uYXRpdmVfYnVmZmVyX3QqIGJ1ZmZlcik7Ci0gICAgc3RhdGljIGludCBxdWVyeShhbmRyb2lkX25hdGl2ZV93aW5kb3dfdCogd2luZG93LCBpbnQgd2hhdCwgaW50KiB2YWx1ZSk7Ci0gICAgc3RhdGljIGludCBwZXJmb3JtKGFuZHJvaWRfbmF0aXZlX3dpbmRvd190KiB3aW5kb3csIGludCBvcGVyYXRpb24sIC4uLik7CisgICAgU3VyZmFjZShjb25zdCBzcDxTdXJmYWNlQ29udHJvbD4mIGNvbnRyb2wpOworICAgIFN1cmZhY2UoY29uc3QgUGFyY2VsJiBkYXRhLCBjb25zdCBzcDxJQmluZGVyPiYgcmVmKTsKKyAgICB+U3VyZmFjZSgpOworCisKKyAgICAvKgorICAgICAqICBBTmF0aXZlV2luZG93IGhvb2tzCisgICAgICovCisgICAgc3RhdGljIGludCBzZXRTd2FwSW50ZXJ2YWwoQU5hdGl2ZVdpbmRvdyogd2luZG93LCBpbnQgaW50ZXJ2YWwpOworICAgIHN0YXRpYyBpbnQgZGVxdWV1ZUJ1ZmZlcihBTmF0aXZlV2luZG93KiB3aW5kb3csIGFuZHJvaWRfbmF0aXZlX2J1ZmZlcl90KiogYnVmZmVyKTsKKyAgICBzdGF0aWMgaW50IGxvY2tCdWZmZXIoQU5hdGl2ZVdpbmRvdyogd2luZG93LCBhbmRyb2lkX25hdGl2ZV9idWZmZXJfdCogYnVmZmVyKTsKKyAgICBzdGF0aWMgaW50IHF1ZXVlQnVmZmVyKEFOYXRpdmVXaW5kb3cqIHdpbmRvdywgYW5kcm9pZF9uYXRpdmVfYnVmZmVyX3QqIGJ1ZmZlcik7CisgICAgc3RhdGljIGludCBxdWVyeShBTmF0aXZlV2luZG93KiB3aW5kb3csIGludCB3aGF0LCBpbnQqIHZhbHVlKTsKKyAgICBzdGF0aWMgaW50IHBlcmZvcm0oQU5hdGl2ZVdpbmRvdyogd2luZG93LCBpbnQgb3BlcmF0aW9uLCAuLi4pOwogCiAgICAgaW50IGRlcXVldWVCdWZmZXIoYW5kcm9pZF9uYXRpdmVfYnVmZmVyX3QqKiBidWZmZXIpOwogICAgIGludCBsb2NrQnVmZmVyKGFuZHJvaWRfbmF0aXZlX2J1ZmZlcl90KiBidWZmZXIpOwpAQCAtMjA4LDQ0ICsyMTAsODYgQEAKICAgICBpbnQgcXVlcnkoaW50IHdoYXQsIGludCogdmFsdWUpOwogICAgIGludCBwZXJmb3JtKGludCBvcGVyYXRpb24sIHZhX2xpc3QgYXJncyk7CiAKLSAgICBzdGF0dXNfdCBkZXF1ZXVlQnVmZmVyKHNwPEdyYXBoaWNCdWZmZXI+KiBidWZmZXIpOwotCiAgICAgdm9pZCBkaXNwYXRjaF9zZXRVc2FnZSh2YV9saXN0IGFyZ3MpOwogICAgIGludCAgZGlzcGF0Y2hfY29ubmVjdCh2YV9saXN0IGFyZ3MpOwogICAgIGludCAgZGlzcGF0Y2hfZGlzY29ubmVjdCh2YV9saXN0IGFyZ3MpOworICAgIGludCAgZGlzcGF0Y2hfY3JvcCh2YV9saXN0IGFyZ3MpOworICAgIGludCAgZGlzcGF0Y2hfc2V0X2J1ZmZlcl9jb3VudCh2YV9saXN0IGFyZ3MpOworICAgIGludCAgZGlzcGF0Y2hfc2V0X2J1ZmZlcnNfZ2VvbWV0cnkodmFfbGlzdCBhcmdzKTsKICAgICAKICAgICB2b2lkIHNldFVzYWdlKHVpbnQzMl90IHJlcVVzYWdlKTsKICAgICBpbnQgIGNvbm5lY3QoaW50IGFwaSk7CiAgICAgaW50ICBkaXNjb25uZWN0KGludCBhcGkpOworICAgIGludCAgY3JvcChSZWN0IGNvbnN0KiByZWN0KTsKKyAgICBpbnQgIHNldEJ1ZmZlckNvdW50KGludCBidWZmZXJDb3VudCk7CisgICAgaW50ICBzZXRCdWZmZXJzR2VvbWV0cnkoaW50IHcsIGludCBoLCBpbnQgZm9ybWF0KTsKIAotICAgIHVpbnQzMl90IGdldFVzYWdlKCkgY29uc3Q7Ci0gICAgaW50ICAgICAgZ2V0Q29ubmVjdGVkQXBpKCkgY29uc3Q7CisgICAgLyoKKyAgICAgKiAgcHJpdmF0ZSBzdHVmZi4uLgorICAgICAqLworICAgIHZvaWQgaW5pdCgpOworICAgIHN0YXR1c190IHZhbGlkYXRlKCkgY29uc3Q7CisgICAgc3A8SVN1cmZhY2U+IGdldElTdXJmYWNlKCkgY29uc3Q7CisKKyAgICBpbmxpbmUgY29uc3QgR3JhcGhpY0J1ZmZlck1hcHBlciYgZ2V0QnVmZmVyTWFwcGVyKCkgY29uc3QgeyByZXR1cm4gbUJ1ZmZlck1hcHBlcjsgfQorICAgIGlubGluZSBHcmFwaGljQnVmZmVyTWFwcGVyJiBnZXRCdWZmZXJNYXBwZXIoKSB7IHJldHVybiBtQnVmZmVyTWFwcGVyOyB9CisKKyAgICBzdGF0dXNfdCBnZXRCdWZmZXJMb2NrZWQoaW50IGluZGV4LAorICAgICAgICAgICAgdWludDMyX3QgdywgdWludDMyX3QgaCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB1c2FnZSk7CisgICAgaW50IGdldEJ1ZmZlckluZGV4KGNvbnN0IHNwPEdyYXBoaWNCdWZmZXI+JiBidWZmZXIpIGNvbnN0OworCisgICAgaW50IGdldENvbm5lY3RlZEFwaSgpIGNvbnN0OwogICAgIAorICAgIGJvb2wgbmVlZE5ld0J1ZmZlcihpbnQgYnVmSWR4LAorICAgICAgICAgICAgdWludDMyX3QgKnBXaWR0aCwgdWludDMyX3QgKnBIZWlnaHQsCisgICAgICAgICAgICB1aW50MzJfdCAqcEZvcm1hdCwgdWludDMyX3QgKnBVc2FnZSkgY29uc3Q7CisKKyAgICBjbGFzcyBCdWZmZXJJbmZvIHsKKyAgICAgICAgdWludDMyX3QgbVdpZHRoOworICAgICAgICB1aW50MzJfdCBtSGVpZ2h0OworICAgICAgICB1aW50MzJfdCBtRm9ybWF0OworICAgICAgICB1aW50MzJfdCBtVXNhZ2U7CisgICAgICAgIG11dGFibGUgdWludDMyX3QgbURpcnR5OworICAgICAgICBlbnVtIHsKKyAgICAgICAgICAgIEdFT01FVFJZID0gMHgwMQorICAgICAgICB9OworICAgIHB1YmxpYzoKKyAgICAgICAgQnVmZmVySW5mbygpOworICAgICAgICB2b2lkIHNldCh1aW50MzJfdCB3LCB1aW50MzJfdCBoLCB1aW50MzJfdCBmb3JtYXQpOworICAgICAgICB2b2lkIHNldCh1aW50MzJfdCB1c2FnZSk7CisgICAgICAgIHZvaWQgZ2V0KHVpbnQzMl90ICpwV2lkdGgsIHVpbnQzMl90ICpwSGVpZ2h0LAorICAgICAgICAgICAgICAgIHVpbnQzMl90ICpwRm9ybWF0LCB1aW50MzJfdCAqcFVzYWdlKSBjb25zdDsKKyAgICAgICAgYm9vbCB2YWxpZGF0ZUJ1ZmZlcihjb25zdCBzcDxHcmFwaGljQnVmZmVyPiYgYnVmZmVyKSBjb25zdDsKKyAgICB9OworCiAgICAgLy8gY29uc3RhbnRzCi0gICAgc3A8U3VyZmFjZUNvbXBvc2VyQ2xpZW50PiAgIG1DbGllbnQ7CisgICAgR3JhcGhpY0J1ZmZlck1hcHBlciYgICAgICAgIG1CdWZmZXJNYXBwZXI7CisgICAgU3VyZmFjZUNsaWVudCYgICAgICAgICAgICAgIG1DbGllbnQ7CisgICAgU2hhcmVkQnVmZmVyQ2xpZW50KiAgICAgICAgIG1TaGFyZWRCdWZmZXJDbGllbnQ7CisgICAgc3RhdHVzX3QgICAgICAgICAgICAgICAgICAgIG1Jbml0Q2hlY2s7CiAgICAgc3A8SVN1cmZhY2U+ICAgICAgICAgICAgICAgIG1TdXJmYWNlOwotICAgIFN1cmZhY2VJRCAgICAgICAgICAgICAgICAgICBtVG9rZW47CiAgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgIG1JZGVudGl0eTsKICAgICBQaXhlbEZvcm1hdCAgICAgICAgICAgICAgICAgbUZvcm1hdDsKICAgICB1aW50MzJfdCAgICAgICAgICAgICAgICAgICAgbUZsYWdzOwotICAgIEdyYXBoaWNCdWZmZXJNYXBwZXImICAgICAgICBtQnVmZmVyTWFwcGVyOwotICAgIFNoYXJlZEJ1ZmZlckNsaWVudCogICAgICAgICBtU2hhcmVkQnVmZmVyQ2xpZW50OwogCiAgICAgLy8gcHJvdGVjdGVkIGJ5IG1TdXJmYWNlTG9jawogICAgIFJlY3QgICAgICAgICAgICAgICAgICAgICAgICBtU3dhcFJlY3RhbmdsZTsKLSAgICB1aW50MzJfdCAgICAgICAgICAgICAgICAgICAgbVVzYWdlOwogICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICBtQ29ubmVjdGVkOworICAgIFJlY3QgICAgICAgICAgICAgICAgICAgICAgICBtTmV4dEJ1ZmZlckNyb3A7CisgICAgQnVmZmVySW5mbyAgICAgICAgICAgICAgICAgIG1CdWZmZXJJbmZvOwogICAgIAogICAgIC8vIHByb3RlY3RlZCBieSBtU3VyZmFjZUxvY2suIFRoZXNlIGFyZSBhbHNvIHVzZWQgZnJvbSBsb2NrL3VubG9jawogICAgIC8vIGJ1dCBpbiB0aGF0IGNhc2UsIHRoZXkgbXVzdCBiZSBjYWxsZWQgZm9ybSB0aGUgc2FtZSB0aHJlYWQuCi0gICAgc3A8R3JhcGhpY0J1ZmZlcj4gICAgICAgICAgIG1CdWZmZXJzWzJdOwogICAgIG11dGFibGUgUmVnaW9uICAgICAgICAgICAgICBtRGlydHlSZWdpb247CiAKICAgICAvLyBtdXN0IGJlIHVzZWQgZnJvbSB0aGUgbG9jay91bmxvY2sgdGhyZWFkCiAgICAgc3A8R3JhcGhpY0J1ZmZlcj4gICAgICAgICAgIG1Mb2NrZWRCdWZmZXI7CiAgICAgc3A8R3JhcGhpY0J1ZmZlcj4gICAgICAgICAgIG1Qb3N0ZWRCdWZmZXI7CiAgICAgbXV0YWJsZSBSZWdpb24gICAgICAgICAgICAgIG1PbGREaXJ0eVJlZ2lvbjsKLSAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgbU5lZWRGdWxsVXBkYXRlOworICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICBtUmVzZXJ2ZWQ7CisKKyAgICAvLyBvbmx5IHVzZWQgZnJvbSBkZXF1ZXVlQnVmZmVyKCkKKyAgICBWZWN0b3I8IHNwPEdyYXBoaWNCdWZmZXI+ID4gbUJ1ZmZlcnM7CiAKICAgICAvLyBxdWVyeSgpIG11c3QgYmUgY2FsbGVkIGZyb20gZGVxdWV1ZUJ1ZmZlcigpIHRocmVhZAogICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgICAgICBtV2lkdGg7CmRpZmYgLS1naXQgYS9pbmNsdWRlL3N1cmZhY2VmbGluZ2VyL1N1cmZhY2VDb21wb3NlckNsaWVudC5oIGIvaW5jbHVkZS9zdXJmYWNlZmxpbmdlci9TdXJmYWNlQ29tcG9zZXJDbGllbnQuaAppbmRleCA5ZDBmMGNiZS4uODc3M2Q3MSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9zdXJmYWNlZmxpbmdlci9TdXJmYWNlQ29tcG9zZXJDbGllbnQuaAorKysgYi9pbmNsdWRlL3N1cmZhY2VmbGluZ2VyL1N1cmZhY2VDb21wb3NlckNsaWVudC5oCkBAIC0yMiw4ICsyMiw5IEBACiAKICNpbmNsdWRlIDxiaW5kZXIvSUJpbmRlci5oPgogCi0jaW5jbHVkZSA8dXRpbHMvU29ydGVkVmVjdG9yLmg+CiAjaW5jbHVkZSA8dXRpbHMvUmVmQmFzZS5oPgorI2luY2x1ZGUgPHV0aWxzL1NpbmdsZXRvbi5oPgorI2luY2x1ZGUgPHV0aWxzL1NvcnRlZFZlY3Rvci5oPgogI2luY2x1ZGUgPHV0aWxzL3RocmVhZHMuaD4KIAogI2luY2x1ZGUgPHVpL1BpeGVsRm9ybWF0Lmg+CkBAIC0zOSw4ICs0MCwyNiBAQAogY2xhc3MgU2hhcmVkQ2xpZW50OwogY2xhc3MgSVN1cmZhY2VDb21wb3NlcjsKIGNsYXNzIERpc3BsYXlJbmZvOworY2xhc3Mgc3VyZmFjZV9mbGluZ2VyX2NibGtfdDsKIAotY2xhc3MgU3VyZmFjZUNvbXBvc2VyQ2xpZW50IDogdmlydHVhbCBwdWJsaWMgUmVmQmFzZQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NsYXNzIENvbXBvc2VyU2VydmljZSA6IHB1YmxpYyBTaW5nbGV0b248Q29tcG9zZXJTZXJ2aWNlPgoreworICAgIC8vIHRoZXNlIGFyZSBjb25zdGFudHMKKyAgICBzcDxJU3VyZmFjZUNvbXBvc2VyPiBtQ29tcG9zZXJTZXJ2aWNlOworICAgIHNwPElNZW1vcnlIZWFwPiBtU2VydmVyQ2Jsa01lbW9yeTsKKyAgICBzdXJmYWNlX2ZsaW5nZXJfY2Jsa190IHZvbGF0aWxlKiBtU2VydmVyQ2JsazsKKyAgICBDb21wb3NlclNlcnZpY2UoKTsKKyAgICBmcmllbmQgY2xhc3MgU2luZ2xldG9uPENvbXBvc2VyU2VydmljZT47CitwdWJsaWM6CisgICAgc3RhdGljIHNwPElTdXJmYWNlQ29tcG9zZXI+IGdldENvbXBvc2VyU2VydmljZSgpOworICAgIHN0YXRpYyBzdXJmYWNlX2ZsaW5nZXJfY2Jsa190IGNvbnN0IHZvbGF0aWxlICogZ2V0Q29udHJvbEJsb2NrKCk7Cit9OworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworY2xhc3MgU3VyZmFjZUNvbXBvc2VyQ2xpZW50IDogcHVibGljIFJlZkJhc2UKIHsKIHB1YmxpYzogICAgCiAgICAgICAgICAgICAgICAgU3VyZmFjZUNvbXBvc2VyQ2xpZW50KCk7CkBAIC01MiwxMCArNzEsNiBAQAogICAgIC8vIFJldHVybiB0aGUgY29ubmVjdGlvbiBvZiB0aGlzIGNsaWVudAogICAgIHNwPElCaW5kZXI+IGNvbm5lY3Rpb24oKSBjb25zdDsKICAgICAKLSAgICAvLyBSZXRyaWV2ZSBhIGNsaWVudCBmb3IgYW4gZXhpc3RpbmcgY29ubmVjdGlvbi4KLSAgICBzdGF0aWMgc3A8U3VyZmFjZUNvbXBvc2VyQ2xpZW50PgotICAgICAgICAgICAgICAgIGNsaWVudEZvckNvbm5lY3Rpb24oY29uc3Qgc3A8SUJpbmRlcj4mIGNvbm4pOwotCiAgICAgLy8gRm9yY2libHkgcmVtb3ZlIGNvbm5lY3Rpb24gYmVmb3JlIGFsbCByZWZlcmVuY2VzIGhhdmUgZ29uZSBhd2F5LgogICAgIHZvaWQgICAgICAgIGRpc3Bvc2UoKTsKIApAQCAtMTIzLDEzICsxMzgsNiBAQAogICAgIHN0YXR1c190IGxpbmtUb0NvbXBvc2VyRGVhdGgoY29uc3Qgc3A8SUJpbmRlcjo6RGVhdGhSZWNpcGllbnQ+JiByZWNpcGllbnQsCiAgICAgICAgICAgICB2b2lkKiBjb29raWUgPSBOVUxMLCB1aW50MzJfdCBmbGFncyA9IDApOwogCi1wcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBTdXJmYWNlOwotICAgIGZyaWVuZCBjbGFzcyBTdXJmYWNlQ29udHJvbDsKLSAgICAKLSAgICBTdXJmYWNlQ29tcG9zZXJDbGllbnQoY29uc3Qgc3A8SVN1cmZhY2VDb21wb3Nlcj4mIHNtLCAKLSAgICAgICAgICAgIGNvbnN0IHNwPElCaW5kZXI+JiBjb25uKTsKLQogICAgIHN0YXR1c190ICAgIGhpZGUoU3VyZmFjZUlEIGlkKTsKICAgICBzdGF0dXNfdCAgICBzaG93KFN1cmZhY2VJRCBpZCwgaW50MzJfdCBsYXllciA9IC0xKTsKICAgICBzdGF0dXNfdCAgICBmcmVlemUoU3VyZmFjZUlEIGlkKTsKQEAgLTE0MiwzMiArMTUwLDI2IEBACiAgICAgc3RhdHVzX3QgICAgc2V0TWF0cml4KFN1cmZhY2VJRCBpZCwgZmxvYXQgZHNkeCwgZmxvYXQgZHRkeCwgZmxvYXQgZHNkeSwgZmxvYXQgZHRkeSk7CiAgICAgc3RhdHVzX3QgICAgc2V0UG9zaXRpb24oU3VyZmFjZUlEIGlkLCBpbnQzMl90IHgsIGludDMyX3QgeSk7CiAgICAgc3RhdHVzX3QgICAgc2V0U2l6ZShTdXJmYWNlSUQgaWQsIHVpbnQzMl90IHcsIHVpbnQzMl90IGgpOwotICAgIAotICAgIHZvaWQgICAgICAgIHNpZ25hbFNlcnZlcigpOwotCiAgICAgc3RhdHVzX3QgICAgZGVzdHJveVN1cmZhY2UoU3VyZmFjZUlEIHNpZCk7CiAKLSAgICB2b2lkICAgICAgICBfaW5pdChjb25zdCBzcDxJU3VyZmFjZUNvbXBvc2VyPiYgc20sCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwPElTdXJmYWNlRmxpbmdlckNsaWVudD4mIGNvbm4pOwotCi0gICAgaW5saW5lIGxheWVyX3N0YXRlX3QqICAgX2dldF9zdGF0ZV9sKFN1cmZhY2VJRCBpZCk7Ci0gICAgbGF5ZXJfc3RhdGVfdCogICAgICAgICAgX2xvY2tMYXllclN0YXRlKFN1cmZhY2VJRCBpZCk7Ci0gICAgaW5saW5lIHZvaWQgICAgICAgICAgICAgX3VubG9ja0xheWVyU3RhdGUoKTsKK3ByaXZhdGU6CisgICAgdmlydHVhbCB2b2lkIG9uRmlyc3RSZWYoKTsKKyAgICBpbmxpbmUgbGF5ZXJfc3RhdGVfdCogICBnZXRfc3RhdGVfbChTdXJmYWNlSUQgaWQpOworICAgIGxheWVyX3N0YXRlX3QqICAgICAgICAgIGxvY2tMYXllclN0YXRlKFN1cmZhY2VJRCBpZCk7CisgICAgaW5saW5lIHZvaWQgICAgICAgICAgICAgdW5sb2NrTGF5ZXJTdGF0ZSgpOwogCiAgICAgbXV0YWJsZSAgICAgTXV0ZXggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUxvY2s7Ci0gICAgICAgICAgICAgICAgbGF5ZXJfc3RhdGVfdCogICAgICAgICAgICAgICAgICAgICAgbVByZWJ1aWx0TGF5ZXJTdGF0ZTsKICAgICAgICAgICAgICAgICBTb3J0ZWRWZWN0b3I8bGF5ZXJfc3RhdGVfdD4gICAgICAgICBtU3RhdGVzOwogICAgICAgICAgICAgICAgIGludDMyX3QgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1UcmFuc2FjdGlvbk9wZW47CisgICAgICAgICAgICAgICAgbGF5ZXJfc3RhdGVfdCogICAgICAgICAgICAgICAgICAgICAgbVByZWJ1aWx0TGF5ZXJTdGF0ZTsKIAogICAgICAgICAgICAgICAgIC8vIHRoZXNlIGRvbid0IG5lZWQgdG8gYmUgcHJvdGVjdGVkIGJlY2F1c2UgdGhleSBuZXZlciBjaGFuZ2UKICAgICAgICAgICAgICAgICAvLyBhZnRlciBhc3NpZ25tZW50CiAgICAgICAgICAgICAgICAgc3RhdHVzX3QgICAgICAgICAgICAgICAgICAgIG1TdGF0dXM7Ci0gICAgICAgICAgICAgICAgU2hhcmVkQ2xpZW50KiAgICAgICAgICAgICAgIG1Db250cm9sOwotICAgICAgICAgICAgICAgIHNwPElNZW1vcnlIZWFwPiAgICAgICAgICAgICBtQ29udHJvbE1lbW9yeTsKLSAgICAgICAgICAgICAgICBzcDxJU3VyZmFjZUZsaW5nZXJDbGllbnQ+ICAgbUNsaWVudDsKLSAgICAgICAgICAgICAgICBzcDxJU3VyZmFjZUNvbXBvc2VyPiAgICAgICAgbVNpZ25hbFNlcnZlcjsKKyAgICAgICAgICAgICAgICBzcDxJU3VyZmFjZUNvbXBvc2VyQ2xpZW50PiAgbUNsaWVudDsKIH07CiAKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogfTsgLy8gbmFtZXNwYWNlIGFuZHJvaWQKIAogI2VuZGlmIC8vIEFORFJPSURfU0ZfU1VSRkFDRV9DT01QT1NFUl9DTElFTlRfSApkaWZmIC0tZ2l0IGEvaW5jbHVkZS91aS9FdmVudEh1Yi5oIGIvaW5jbHVkZS91aS9FdmVudEh1Yi5oCmluZGV4IDNiMThjNzcuLmQzMjJhMzQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWkvRXZlbnRIdWIuaAorKysgYi9pbmNsdWRlL3VpL0V2ZW50SHViLmgKQEAgLTE4LDYgKzE4LDcgQEAKICNpZm5kZWYgX1JVTlRJTUVfRVZFTlRfSFVCX0gKICNkZWZpbmUgX1JVTlRJTUVfRVZFTlRfSFVCX0gKIAorI2luY2x1ZGUgPGFuZHJvaWQvaW5wdXQuaD4KICNpbmNsdWRlIDx1dGlscy9TdHJpbmc4Lmg+CiAjaW5jbHVkZSA8dXRpbHMvdGhyZWFkcy5oPgogI2luY2x1ZGUgPHV0aWxzL0xvZy5oPgpAQCAtMjcsNiArMjgsMzEgQEAKIAogI2luY2x1ZGUgPGxpbnV4L2lucHV0Lmg+CiAKKy8qIFRoZXNlIGNvbnN0YW50cyBhcmUgbm90IGRlZmluZWQgaW4gbGludXgvaW5wdXQuaCBidXQgdGhleSBhcmUgcGFydCBvZiB0aGUgbXVsdGl0b3VjaAorICogaW5wdXQgcHJvdG9jb2wuICovCisKKyNkZWZpbmUgQUJTX01UX1RPVUNIX01BSk9SIDB4MzAgIC8qIE1ham9yIGF4aXMgb2YgdG91Y2hpbmcgZWxsaXBzZSAqLworI2RlZmluZSBBQlNfTVRfVE9VQ0hfTUlOT1IgMHgzMSAgLyogTWlub3IgYXhpcyAob21pdCBpZiBjaXJjdWxhcikgKi8KKyNkZWZpbmUgQUJTX01UX1dJRFRIX01BSk9SIDB4MzIgIC8qIE1ham9yIGF4aXMgb2YgYXBwcm9hY2hpbmcgZWxsaXBzZSAqLworI2RlZmluZSBBQlNfTVRfV0lEVEhfTUlOT1IgMHgzMyAgLyogTWlub3IgYXhpcyAob21pdCBpZiBjaXJjdWxhcikgKi8KKyNkZWZpbmUgQUJTX01UX09SSUVOVEFUSU9OIDB4MzQgIC8qIEVsbGlwc2Ugb3JpZW50YXRpb24gKi8KKyNkZWZpbmUgQUJTX01UX1BPU0lUSU9OX1ggMHgzNSAgIC8qIENlbnRlciBYIGVsbGlwc2UgcG9zaXRpb24gKi8KKyNkZWZpbmUgQUJTX01UX1BPU0lUSU9OX1kgMHgzNiAgIC8qIENlbnRlciBZIGVsbGlwc2UgcG9zaXRpb24gKi8KKyNkZWZpbmUgQUJTX01UX1RPT0xfVFlQRSAweDM3ICAgIC8qIFR5cGUgb2YgdG91Y2hpbmcgZGV2aWNlIChmaW5nZXIsIHBlbiwgLi4uKSAqLworI2RlZmluZSBBQlNfTVRfQkxPQl9JRCAweDM4ICAgICAgLyogR3JvdXAgYSBzZXQgb2YgcGFja2V0cyBhcyBhIGJsb2IgKi8KKyNkZWZpbmUgQUJTX01UX1RSQUNLSU5HX0lEIDB4MzkgIC8qIFVuaXF1ZSBJRCBvZiBpbml0aWF0ZWQgY29udGFjdCAqLworI2RlZmluZSBBQlNfTVRfUFJFU1NVUkUgMHgzYSAgICAgLyogUHJlc3N1cmUgb24gY29udGFjdCBhcmVhICovCisKKyNkZWZpbmUgTVRfVE9PTF9GSU5HRVIgMCAvKiBJZGVudGlmaWVzIGEgZmluZ2VyICovCisjZGVmaW5lIE1UX1RPT0xfUEVOIDEgICAgLyogSWRlbnRpZmllcyBhIHBlbiAqLworCisjZGVmaW5lIFNZTl9NVF9SRVBPUlQgMgorCisvKiBDb252ZW5pZW5jZSBjb25zdGFudHMuICovCisKKyNkZWZpbmUgQlROX0ZJUlNUIDB4MTAwICAvLyBmaXJzdCBidXR0b24gc2NhbmNvZGUKKyNkZWZpbmUgQlROX0xBU1QgMHgxNWYgICAvLyBsYXN0IGJ1dHRvbiBzY2FuY29kZQorCiBzdHJ1Y3QgcG9sbGZkOwogCiBuYW1lc3BhY2UgYW5kcm9pZCB7CkBAIC0zNCw2MiArNjAsMTAxIEBACiBjbGFzcyBLZXlMYXlvdXRNYXA7CiAKIC8qCi0gKiBHcmFuZCBDZW50cmFsIFN0YXRpb24gZm9yIGV2ZW50cy4gIFdpdGggYSBzaW5nbGUgY2FsbCB0byB3YWl0RXZlbnQoKQotICogeW91IGNhbiB3YWl0IGZvcjoKLSAqICAtIGlucHV0IGV2ZW50cyBmcm9tIHRoZSBrZXlwYWQgb2YgYSByZWFsIGRldmljZQotICogIC0gaW5wdXQgZXZlbnRzIGFuZCBtZXRhLWV2ZW50cyAoZS5nLiAicXVpdCIpIGZyb20gdGhlIHNpbXVsYXRvcgotICogIC0gc3ludGhldGljIGV2ZW50cyBmcm9tIHRoZSBydW50aW1lIChlLmcuICJVUkwgZmV0Y2ggY29tcGxldGVkIikKLSAqICAtIHJlYWwgb3IgZm9yZ2VkICJ2c3luYyIgZXZlbnRzCisgKiBHcmFuZCBDZW50cmFsIFN0YXRpb24gZm9yIGV2ZW50cy4KICAqCi0gKiBEbyBub3QgaW5zdGFudGlhdGUgdGhpcyBjbGFzcy4gIEluc3RlYWQsIGNhbGwgc3RhcnRVcCgpLgorICogVGhlIGV2ZW50IGh1YiBhZ2dyZWdhdGVzIGlucHV0IGV2ZW50cyByZWNlaXZlZCBhY3Jvc3MgYWxsIGtub3duIGlucHV0CisgKiBkZXZpY2VzIG9uIHRoZSBzeXN0ZW0sIGluY2x1ZGluZyBkZXZpY2VzIHRoYXQgbWF5IGJlIGVtdWxhdGVkIGJ5IHRoZSBzaW11bGF0b3IKKyAqIGVudmlyb25tZW50LiAgSW4gYWRkaXRpb24sIHRoZSBldmVudCBodWIgZ2VuZXJhdGVzIGZha2UgaW5wdXQgZXZlbnRzIHRvIGluZGljYXRlCisgKiB3aGVuIGRldmljZXMgYXJlIGFkZGVkIG9yIHJlbW92ZWQuCisgKgorICogVGhlIGV2ZW50IGh1YiBwcm92aWVzIGEgc3RyZWFtIG9mIGlucHV0IGV2ZW50cyAodmlhIHRoZSBnZXRFdmVudCBmdW5jdGlvbikuCisgKiBJdCBhbHNvIHN1cHBvcnRzIHF1ZXJ5aW5nIHRoZSBjdXJyZW50IGFjdHVhbCBzdGF0ZSBvZiBpbnB1dCBkZXZpY2VzIHN1Y2ggYXMgaWRlbnRpZnlpbmcKKyAqIHdoaWNoIGtleXMgYXJlIGN1cnJlbnRseSBkb3duLiAgRmluYWxseSwgdGhlIGV2ZW50IGh1YiBrZWVwcyB0cmFjayBvZiB0aGUgY2FwYWJpbGl0aWVzIG9mCisgKiBpbmRpdmlkdWFsIGlucHV0IGRldmljZXMsIHN1Y2ggYXMgdGhlaXIgY2xhc3MgYW5kIHRoZSBzZXQgb2Yga2V5IGNvZGVzIHRoYXQgdGhleSBzdXBwb3J0LgogICovCi1jbGFzcyBFdmVudEh1YiA6IHB1YmxpYyBSZWZCYXNlCi17CitjbGFzcyBFdmVudEh1YkludGVyZmFjZSA6IHB1YmxpYyB2aXJ0dWFsIFJlZkJhc2UgeworcHJvdGVjdGVkOgorICAgIEV2ZW50SHViSW50ZXJmYWNlKCkgeyB9CisgICAgdmlydHVhbCB+RXZlbnRIdWJJbnRlcmZhY2UoKSB7IH0KKwogcHVibGljOgotICAgIEV2ZW50SHViKCk7Ci0gICAgCi0gICAgc3RhdHVzX3QgZXJyb3JDaGVjaygpIGNvbnN0OwotICAgIAotICAgIC8vIGJpdCBmaWVsZHMgZm9yIGNsYXNzZXMgb2YgZGV2aWNlcy4KLSAgICBlbnVtIHsKLSAgICAgICAgQ0xBU1NfS0VZQk9BUkQgICAgICA9IDB4MDAwMDAwMDEsCi0gICAgICAgIENMQVNTX0FMUEhBS0VZICAgICAgPSAweDAwMDAwMDAyLAotICAgICAgICBDTEFTU19UT1VDSFNDUkVFTiAgID0gMHgwMDAwMDAwNCwKLSAgICAgICAgQ0xBU1NfVFJBQ0tCQUxMICAgICA9IDB4MDAwMDAwMDgsCi0gICAgICAgIENMQVNTX1RPVUNIU0NSRUVOX01UPSAweDAwMDAwMDEwLAotICAgICAgICBDTEFTU19EUEFEICAgICAgICAgID0gMHgwMDAwMDAyMAotICAgIH07Ci0gICAgdWludDMyX3QgZ2V0RGV2aWNlQ2xhc3NlcyhpbnQzMl90IGRldmljZUlkKSBjb25zdDsKLSAgICAKLSAgICBTdHJpbmc4IGdldERldmljZU5hbWUoaW50MzJfdCBkZXZpY2VJZCkgY29uc3Q7Ci0gICAgCi0gICAgaW50IGdldEFic29sdXRlSW5mbyhpbnQzMl90IGRldmljZUlkLCBpbnQgYXhpcywgaW50ICpvdXRNaW5WYWx1ZSwKLSAgICAgICAgICAgIGludCogb3V0TWF4VmFsdWUsIGludCogb3V0RmxhdCwgaW50KiBvdXRGdXp6KSBjb25zdDsKLSAgICAgICAgCi0gICAgaW50IGdldFN3aXRjaFN0YXRlKGludCBzdykgY29uc3Q7Ci0gICAgaW50IGdldFN3aXRjaFN0YXRlKGludDMyX3QgZGV2aWNlSWQsIGludCBzdykgY29uc3Q7Ci0gICAgCi0gICAgaW50IGdldFNjYW5jb2RlU3RhdGUoaW50IGtleSkgY29uc3Q7Ci0gICAgaW50IGdldFNjYW5jb2RlU3RhdGUoaW50MzJfdCBkZXZpY2VJZCwgaW50IGtleSkgY29uc3Q7Ci0gICAgCi0gICAgaW50IGdldEtleWNvZGVTdGF0ZShpbnQga2V5KSBjb25zdDsKLSAgICBpbnQgZ2V0S2V5Y29kZVN0YXRlKGludDMyX3QgZGV2aWNlSWQsIGludCBrZXkpIGNvbnN0OwotICAgIAotICAgIHN0YXR1c190IHNjYW5jb2RlVG9LZXljb2RlKGludDMyX3QgZGV2aWNlSWQsIGludCBzY2FuY29kZSwKLSAgICAgICAgICAgIGludDMyX3QqIG91dEtleWNvZGUsIHVpbnQzMl90KiBvdXRGbGFncykgY29uc3Q7Ci0KLSAgICAvLyBleGNsdWRlIGEgcGFydGljdWxhciBkZXZpY2UgZnJvbSBvcGVuaW5nCi0gICAgLy8gdGhpcyBjYW4gYmUgdXNlZCB0byBpZ25vcmUgaW5wdXQgZGV2aWNlcyBmb3Igc2Vuc29ycwotICAgIHZvaWQgYWRkRXhjbHVkZWREZXZpY2UoY29uc3QgY2hhciogZGV2aWNlTmFtZSk7Ci0KLSAgICAvLyBzcGVjaWFsIHR5cGUgY29kZXMgd2hlbiBkZXZpY2VzIGFyZSBhZGRlZC9yZW1vdmVkLgorICAgIC8vIFN5bnRoZXRpYyByYXcgZXZlbnQgdHlwZSBjb2RlcyBwcm9kdWNlZCB3aGVuIGRldmljZXMgYXJlIGFkZGVkIG9yIHJlbW92ZWQuCiAgICAgZW51bSB7CiAgICAgICAgIERFVklDRV9BRERFRCA9IDB4MTAwMDAwMDAsCiAgICAgICAgIERFVklDRV9SRU1PVkVEID0gMHgyMDAwMDAwMAogICAgIH07CisKKyAgICB2aXJ0dWFsIHVpbnQzMl90IGdldERldmljZUNsYXNzZXMoaW50MzJfdCBkZXZpY2VJZCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBTdHJpbmc4IGdldERldmljZU5hbWUoaW50MzJfdCBkZXZpY2VJZCkgY29uc3QgPSAwOworCisgICAgdmlydHVhbCBpbnQgZ2V0QWJzb2x1dGVJbmZvKGludDMyX3QgZGV2aWNlSWQsIGludCBheGlzLCBpbnQgKm91dE1pblZhbHVlLAorICAgICAgICAgICAgaW50KiBvdXRNYXhWYWx1ZSwgaW50KiBvdXRGbGF0LCBpbnQqIG91dEZ1enopIGNvbnN0ID0gMDsKKworICAgIHZpcnR1YWwgc3RhdHVzX3Qgc2NhbmNvZGVUb0tleWNvZGUoaW50MzJfdCBkZXZpY2VJZCwgaW50IHNjYW5jb2RlLAorICAgICAgICAgICAgaW50MzJfdCogb3V0S2V5Y29kZSwgdWludDMyX3QqIG91dEZsYWdzKSBjb25zdCA9IDA7CisKKyAgICAvLyBleGNsdWRlIGEgcGFydGljdWxhciBkZXZpY2UgZnJvbSBvcGVuaW5nCisgICAgLy8gdGhpcyBjYW4gYmUgdXNlZCB0byBpZ25vcmUgaW5wdXQgZGV2aWNlcyBmb3Igc2Vuc29ycworICAgIHZpcnR1YWwgdm9pZCBhZGRFeGNsdWRlZERldmljZShjb25zdCBjaGFyKiBkZXZpY2VOYW1lKSA9IDA7CisKKyAgICAvKgorICAgICAqIFdhaXQgZm9yIHRoZSBuZXh0IGV2ZW50IHRvIGJlY29tZSBhdmFpbGFibGUgYW5kIHJldHVybiBpdC4KKyAgICAgKiBBZnRlciByZXR1cm5pbmcsIHRoZSBFdmVudEh1YiBob2xkcyBvbnRvIGEgd2FrZSBsb2NrIHVudGlsIHRoZSBuZXh0IGNhbGwgdG8gZ2V0RXZlbnQuCisgICAgICogVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGRldmljZSB3aWxsIG5vdCBnbyB0byBzbGVlcCB3aGlsZSB0aGUgZXZlbnQgaXMgYmVpbmcgcHJvY2Vzc2VkLgorICAgICAqIElmIHRoZSBkZXZpY2UgbmVlZHMgdG8gcmVtYWluIGF3YWtlIGxvbmdlciB0aGFuIHRoYXQsIHRoZW4gdGhlIGNhbGxlciBpcyByZXNwb25zaWJsZQorICAgICAqIGZvciB0YWtpbmcgY2FyZSBvZiBpdCAoc2F5LCBieSBwb2tpbmcgdGhlIHBvd2VyIG1hbmFnZXIgdXNlciBhY3Rpdml0eSB0aW1lcikuCisgICAgICovCisgICAgdmlydHVhbCBib29sIGdldEV2ZW50KGludDMyX3QqIG91dERldmljZUlkLCBpbnQzMl90KiBvdXRUeXBlLAorICAgICAgICAgICAgaW50MzJfdCogb3V0U2NhbmNvZGUsIGludDMyX3QqIG91dEtleWNvZGUsIHVpbnQzMl90ICpvdXRGbGFncywKKyAgICAgICAgICAgIGludDMyX3QqIG91dFZhbHVlLCBuc2Vjc190KiBvdXRXaGVuKSA9IDA7CisKKyAgICAvKgorICAgICAqIFF1ZXJ5IGN1cnJlbnQgaW5wdXQgc3RhdGUuCisgICAgICogICBkZXZpY2VJZCBtYXkgYmUgLTEgdG8gc2VhcmNoIGZvciB0aGUgZGV2aWNlIGF1dG9tYXRpY2FsbHksIGZpbHRlcmVkIGJ5IGNsYXNzLgorICAgICAqICAgZGV2aWNlQ2xhc3NlcyBtYXkgYmUgLTEgdG8gaWdub3JlIGRldmljZSBjbGFzcyB3aGlsZSBzZWFyY2hpbmcuCisgICAgICovCisgICAgdmlydHVhbCBpbnQzMl90IGdldFNjYW5Db2RlU3RhdGUoaW50MzJfdCBkZXZpY2VJZCwgaW50MzJfdCBkZXZpY2VDbGFzc2VzLAorICAgICAgICAgICAgaW50MzJfdCBzY2FuQ29kZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50MzJfdCBnZXRLZXlDb2RlU3RhdGUoaW50MzJfdCBkZXZpY2VJZCwgaW50MzJfdCBkZXZpY2VDbGFzc2VzLAorICAgICAgICAgICAgaW50MzJfdCBrZXlDb2RlKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBpbnQzMl90IGdldFN3aXRjaFN0YXRlKGludDMyX3QgZGV2aWNlSWQsIGludDMyX3QgZGV2aWNlQ2xhc3NlcywKKyAgICAgICAgICAgIGludDMyX3Qgc3cpIGNvbnN0ID0gMDsKKworICAgIC8qCisgICAgICogRXhhbWluZSBrZXkgaW5wdXQgZGV2aWNlcyBmb3Igc3BlY2lmaWMgZnJhbWV3b3JrIGtleWNvZGUgc3VwcG9ydAorICAgICAqLworICAgIHZpcnR1YWwgYm9vbCBoYXNLZXlzKHNpemVfdCBudW1Db2RlcywgY29uc3QgaW50MzJfdCoga2V5Q29kZXMsCisgICAgICAgICAgICB1aW50OF90KiBvdXRGbGFncykgY29uc3QgPSAwOworfTsKKworY2xhc3MgRXZlbnRIdWIgOiBwdWJsaWMgRXZlbnRIdWJJbnRlcmZhY2UKK3sKK3B1YmxpYzoKKyAgICBFdmVudEh1YigpOworCisgICAgc3RhdHVzX3QgZXJyb3JDaGVjaygpIGNvbnN0OworCisgICAgdmlydHVhbCB1aW50MzJfdCBnZXREZXZpY2VDbGFzc2VzKGludDMyX3QgZGV2aWNlSWQpIGNvbnN0OwogICAgIAotICAgIC8vIGV4YW1pbmUga2V5IGlucHV0IGRldmljZXMgZm9yIHNwZWNpZmljIGZyYW1ld29yayBrZXljb2RlIHN1cHBvcnQKLSAgICBib29sIGhhc0tleXMoc2l6ZV90IG51bUNvZGVzLCBpbnQzMl90KiBrZXlDb2RlcywgdWludDhfdCogb3V0RmxhZ3MpOworICAgIHZpcnR1YWwgU3RyaW5nOCBnZXREZXZpY2VOYW1lKGludDMyX3QgZGV2aWNlSWQpIGNvbnN0OworICAgIAorICAgIHZpcnR1YWwgaW50IGdldEFic29sdXRlSW5mbyhpbnQzMl90IGRldmljZUlkLCBpbnQgYXhpcywgaW50ICpvdXRNaW5WYWx1ZSwKKyAgICAgICAgICAgIGludCogb3V0TWF4VmFsdWUsIGludCogb3V0RmxhdCwgaW50KiBvdXRGdXp6KSBjb25zdDsKKyAgICAgICAgCisgICAgdmlydHVhbCBzdGF0dXNfdCBzY2FuY29kZVRvS2V5Y29kZShpbnQzMl90IGRldmljZUlkLCBpbnQgc2NhbmNvZGUsCisgICAgICAgICAgICBpbnQzMl90KiBvdXRLZXljb2RlLCB1aW50MzJfdCogb3V0RmxhZ3MpIGNvbnN0OworCisgICAgdmlydHVhbCB2b2lkIGFkZEV4Y2x1ZGVkRGV2aWNlKGNvbnN0IGNoYXIqIGRldmljZU5hbWUpOworCisgICAgdmlydHVhbCBpbnQzMl90IGdldFNjYW5Db2RlU3RhdGUoaW50MzJfdCBkZXZpY2VJZCwgaW50MzJfdCBkZXZpY2VDbGFzc2VzLAorICAgICAgICAgICAgaW50MzJfdCBzY2FuQ29kZSkgY29uc3Q7CisgICAgdmlydHVhbCBpbnQzMl90IGdldEtleUNvZGVTdGF0ZShpbnQzMl90IGRldmljZUlkLCBpbnQzMl90IGRldmljZUNsYXNzZXMsCisgICAgICAgICAgICBpbnQzMl90IGtleUNvZGUpIGNvbnN0OworICAgIHZpcnR1YWwgaW50MzJfdCBnZXRTd2l0Y2hTdGF0ZShpbnQzMl90IGRldmljZUlkLCBpbnQzMl90IGRldmljZUNsYXNzZXMsCisgICAgICAgICAgICBpbnQzMl90IHN3KSBjb25zdDsKKworICAgIHZpcnR1YWwgYm9vbCBoYXNLZXlzKHNpemVfdCBudW1Db2RlcywgY29uc3QgaW50MzJfdCoga2V5Q29kZXMsIHVpbnQ4X3QqIG91dEZsYWdzKSBjb25zdDsKIAogICAgIHZpcnR1YWwgYm9vbCBnZXRFdmVudChpbnQzMl90KiBvdXREZXZpY2VJZCwgaW50MzJfdCogb3V0VHlwZSwKICAgICAgICAgICAgIGludDMyX3QqIG91dFNjYW5jb2RlLCBpbnQzMl90KiBvdXRLZXljb2RlLCB1aW50MzJfdCAqb3V0RmxhZ3MsCkBAIC0xMjYsNiArMTkxLDEwIEBACiAgICAgZGV2aWNlX3QqIGdldERldmljZShpbnQzMl90IGRldmljZUlkKSBjb25zdDsKICAgICBib29sIGhhc0tleWNvZGUoZGV2aWNlX3QqIGRldmljZSwgaW50IGtleWNvZGUpIGNvbnN0OwogICAgIAorICAgIGludDMyX3QgZ2V0U2NhbkNvZGVTdGF0ZUxvY2tlZChkZXZpY2VfdCogZGV2aWNlLCBpbnQzMl90IHNjYW5Db2RlKSBjb25zdDsKKyAgICBpbnQzMl90IGdldEtleUNvZGVTdGF0ZUxvY2tlZChkZXZpY2VfdCogZGV2aWNlLCBpbnQzMl90IGtleUNvZGUpIGNvbnN0OworICAgIGludDMyX3QgZ2V0U3dpdGNoU3RhdGVMb2NrZWQoZGV2aWNlX3QqIGRldmljZSwgaW50MzJfdCBzdykgY29uc3Q7CisKICAgICAvLyBQcm90ZWN0IGFsbCBpbnRlcm5hbCBzdGF0ZS4KICAgICBtdXRhYmxlIE11dGV4ICAgbUxvY2s7CiAgICAgCkBAIC0xNTEsNyArMjIwLDcgQEAKIAogICAgIC8vIGRldmljZSBpZHMgdGhhdCByZXBvcnQgcGFydGljdWxhciBzd2l0Y2hlcy4KICNpZmRlZiBFVl9TVwotICAgIGludDMyX3QgICAgICAgICBtU3dpdGNoZXNbU1dfTUFYKzFdOworICAgIGludDMyX3QgICAgICAgICBtU3dpdGNoZXNbU1dfTUFYICsgMV07CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWkvRnJhbWVidWZmZXJOYXRpdmVXaW5kb3cuaCBiL2luY2x1ZGUvdWkvRnJhbWVidWZmZXJOYXRpdmVXaW5kb3cuaAppbmRleCA4ZWEzYWI5Li4wZjQ1OTRmIDEwMDY0NAotLS0gYS9pbmNsdWRlL3VpL0ZyYW1lYnVmZmVyTmF0aXZlV2luZG93LmgKKysrIGIvaW5jbHVkZS91aS9GcmFtZWJ1ZmZlck5hdGl2ZVdpbmRvdy5oCkBAIC00Myw3ICs0Myw3IEBACiAKIGNsYXNzIEZyYW1lYnVmZmVyTmF0aXZlV2luZG93IAogICAgIDogcHVibGljIEVHTE5hdGl2ZUJhc2U8Ci0gICAgICAgIGFuZHJvaWRfbmF0aXZlX3dpbmRvd190LCAKKyAgICAgICAgQU5hdGl2ZVdpbmRvdywgCiAgICAgICAgIEZyYW1lYnVmZmVyTmF0aXZlV2luZG93LCAKICAgICAgICAgTGlnaHRSZWZCYXNlPEZyYW1lYnVmZmVyTmF0aXZlV2luZG93PiA+CiB7CkBAIC01OSwxMiArNTksMTIgQEAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIExpZ2h0UmVmQmFzZTxGcmFtZWJ1ZmZlck5hdGl2ZVdpbmRvdz47ICAgIAogICAgIH5GcmFtZWJ1ZmZlck5hdGl2ZVdpbmRvdygpOyAvLyB0aGlzIGNsYXNzIGNhbm5vdCBiZSBvdmVybG9hZGVkCi0gICAgc3RhdGljIGludCBzZXRTd2FwSW50ZXJ2YWwoYW5kcm9pZF9uYXRpdmVfd2luZG93X3QqIHdpbmRvdywgaW50IGludGVydmFsKTsKLSAgICBzdGF0aWMgaW50IGRlcXVldWVCdWZmZXIoYW5kcm9pZF9uYXRpdmVfd2luZG93X3QqIHdpbmRvdywgYW5kcm9pZF9uYXRpdmVfYnVmZmVyX3QqKiBidWZmZXIpOwotICAgIHN0YXRpYyBpbnQgbG9ja0J1ZmZlcihhbmRyb2lkX25hdGl2ZV93aW5kb3dfdCogd2luZG93LCBhbmRyb2lkX25hdGl2ZV9idWZmZXJfdCogYnVmZmVyKTsKLSAgICBzdGF0aWMgaW50IHF1ZXVlQnVmZmVyKGFuZHJvaWRfbmF0aXZlX3dpbmRvd190KiB3aW5kb3csIGFuZHJvaWRfbmF0aXZlX2J1ZmZlcl90KiBidWZmZXIpOwotICAgIHN0YXRpYyBpbnQgcXVlcnkoYW5kcm9pZF9uYXRpdmVfd2luZG93X3QqIHdpbmRvdywgaW50IHdoYXQsIGludCogdmFsdWUpOwotICAgIHN0YXRpYyBpbnQgcGVyZm9ybShhbmRyb2lkX25hdGl2ZV93aW5kb3dfdCogd2luZG93LCBpbnQgb3BlcmF0aW9uLCAuLi4pOworICAgIHN0YXRpYyBpbnQgc2V0U3dhcEludGVydmFsKEFOYXRpdmVXaW5kb3cqIHdpbmRvdywgaW50IGludGVydmFsKTsKKyAgICBzdGF0aWMgaW50IGRlcXVldWVCdWZmZXIoQU5hdGl2ZVdpbmRvdyogd2luZG93LCBhbmRyb2lkX25hdGl2ZV9idWZmZXJfdCoqIGJ1ZmZlcik7CisgICAgc3RhdGljIGludCBsb2NrQnVmZmVyKEFOYXRpdmVXaW5kb3cqIHdpbmRvdywgYW5kcm9pZF9uYXRpdmVfYnVmZmVyX3QqIGJ1ZmZlcik7CisgICAgc3RhdGljIGludCBxdWV1ZUJ1ZmZlcihBTmF0aXZlV2luZG93KiB3aW5kb3csIGFuZHJvaWRfbmF0aXZlX2J1ZmZlcl90KiBidWZmZXIpOworICAgIHN0YXRpYyBpbnQgcXVlcnkoQU5hdGl2ZVdpbmRvdyogd2luZG93LCBpbnQgd2hhdCwgaW50KiB2YWx1ZSk7CisgICAgc3RhdGljIGludCBwZXJmb3JtKEFOYXRpdmVXaW5kb3cqIHdpbmRvdywgaW50IG9wZXJhdGlvbiwgLi4uKTsKICAgICAKICAgICBmcmFtZWJ1ZmZlcl9kZXZpY2VfdCogZmJEZXY7CiAgICAgYWxsb2NfZGV2aWNlX3QqIGdyRGV2OwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91aS9HcmFwaGljQnVmZmVyLmggYi9pbmNsdWRlL3VpL0dyYXBoaWNCdWZmZXIuaAppbmRleCBlNzJiNmIzLi5hM2U4NWE5IDEwMDY0NAotLS0gYS9pbmNsdWRlL3VpL0dyYXBoaWNCdWZmZXIuaAorKysgYi9pbmNsdWRlL3VpL0dyYXBoaWNCdWZmZXIuaApAQCAtOTMsMTAgKzkzLDggQEAKICAgICAKICAgICB2b2lkIHNldEluZGV4KGludCBpbmRleCk7CiAgICAgaW50IGdldEluZGV4KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRWZXJ0aWNhbFN0cmlkZSh1aW50MzJfdCB2c3RyaWRlKTsKLSAgICB1aW50MzJfdCBnZXRWZXJ0aWNhbFN0cmlkZSgpIGNvbnN0OwogCi1wcm90ZWN0ZWQ6Citwcml2YXRlOgogICAgIHZpcnR1YWwgfkdyYXBoaWNCdWZmZXIoKTsKIAogICAgIGVudW0gewpAQCAtMTA1LDggKzEwMywxMiBAQAogICAgICAgICBvd25EYXRhICAgPSAyLAogICAgIH07CiAKLSAgICBpbmxpbmUgY29uc3QgR3JhcGhpY0J1ZmZlck1hcHBlciYgZ2V0QnVmZmVyTWFwcGVyKCkgY29uc3QgeyByZXR1cm4gbUJ1ZmZlck1hcHBlcjsgfQotICAgIGlubGluZSBHcmFwaGljQnVmZmVyTWFwcGVyJiBnZXRCdWZmZXJNYXBwZXIoKSB7IHJldHVybiBtQnVmZmVyTWFwcGVyOyB9CisgICAgaW5saW5lIGNvbnN0IEdyYXBoaWNCdWZmZXJNYXBwZXImIGdldEJ1ZmZlck1hcHBlcigpIGNvbnN0IHsKKyAgICAgICAgcmV0dXJuIG1CdWZmZXJNYXBwZXI7CisgICAgfQorICAgIGlubGluZSBHcmFwaGljQnVmZmVyTWFwcGVyJiBnZXRCdWZmZXJNYXBwZXIoKSB7CisgICAgICAgIHJldHVybiBtQnVmZmVyTWFwcGVyOworICAgIH0KICAgICB1aW50OF90IG1Pd25lcjsKIAogcHJpdmF0ZToKQEAgLTEzNCw3ICsxMzYsNiBAQAogCiAgICAgR3JhcGhpY0J1ZmZlck1hcHBlciYgbUJ1ZmZlck1hcHBlcjsKICAgICBzc2l6ZV90IG1Jbml0Q2hlY2s7Ci0gICAgdWludDMyX3QgbVZTdHJpZGU7CiAgICAgaW50IG1JbmRleDsKIH07CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWkvR3JhcGhpY0J1ZmZlckFsbG9jYXRvci5oIGIvaW5jbHVkZS91aS9HcmFwaGljQnVmZmVyQWxsb2NhdG9yLmgKaW5kZXggNzQxZDc2My4uNTRiODIzNiAxMDA2NDQKLS0tIGEvaW5jbHVkZS91aS9HcmFwaGljQnVmZmVyQWxsb2NhdG9yLmgKKysrIGIvaW5jbHVkZS91aS9HcmFwaGljQnVmZmVyQWxsb2NhdG9yLmgKQEAgLTczLDkgKzczLDkgQEAKICAgICBzdHJ1Y3QgYWxsb2NfcmVjX3QgewogICAgICAgICB1aW50MzJfdCB3OwogICAgICAgICB1aW50MzJfdCBoOworICAgICAgICB1aW50MzJfdCBzOwogICAgICAgICBQaXhlbEZvcm1hdCBmb3JtYXQ7CiAgICAgICAgIHVpbnQzMl90IHVzYWdlOwotICAgICAgICB2b2lkKiB2YWRkcjsKICAgICAgICAgc2l6ZV90IHNpemU7CiAgICAgfTsKICAgICAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWkvSW5wdXQuaCBiL2luY2x1ZGUvdWkvSW5wdXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMmUwYmEwNgotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvdWkvSW5wdXQuaApAQCAtMCwwICsxLDM4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgX1VJX0lOUFVUX0gKKyNkZWZpbmUgX1VJX0lOUFVUX0gKKworLyoqCisgKiBOYXRpdmUgaW5wdXQgZXZlbnQgc3RydWN0dXJlcy4KKyAqLworCisjaW5jbHVkZSA8YW5kcm9pZC9pbnB1dC5oPgorI2luY2x1ZGUgPHV0aWxzL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHV0aWxzL1RpbWVycy5oPgorCisvKgorICogQWRkaXRpb25hbCBwcml2YXRlIGNvbnN0YW50cyBub3QgZGVmaW5lZCBpbiBuZGsvdWkvaW5wdXQuaC4KKyAqLworZW51bSB7CisgICAgLyoKKyAgICAgKiBQcml2YXRlIGNvbnRyb2wgdG8gZGV0ZXJtaW5lIHdoZW4gYW4gYXBwIGlzIHRyYWNraW5nIGEga2V5IHNlcXVlbmNlLgorICAgICAqLworICAgIEtFWV9FVkVOVF9GTEFHX1NUQVJUX1RSQUNLSU5HID0gMHg0MDAwMDAwMAorfTsKKworLyoKKyAqIE1heGltdW0gbnVtYmVyIG9mIHBvaW50ZXJzIHN1cHBvcnRlZCBwZXIgbW90aW9uIGV2ZW50LgorICovCisjZGVmaW5lIE1BWF9QT0lOVEVSUyAxMAorCisvKgorICogRGVjbGFyZSBhIGNvbmNyZXRlIHR5cGUgZm9yIHRoZSBOREsncyBpbnB1dCBldmVudCBmb3J3YXJkIGRlY2xhcmF0aW9uLgorICovCitzdHJ1Y3QgQUlucHV0RXZlbnQgeyB9OworCituYW1lc3BhY2UgYW5kcm9pZCB7CisKKy8qCisgKiBBIHJhdyBldmVudCBhcyByZXRyaWV2ZWQgZnJvbSB0aGUgRXZlbnRIdWIuCisgKi8KK3N0cnVjdCBSYXdFdmVudCB7CisgICAgbnNlY3NfdCB3aGVuOworICAgIGludDMyX3QgZGV2aWNlSWQ7CisgICAgaW50MzJfdCB0eXBlOworICAgIGludDMyX3Qgc2NhbkNvZGU7CisgICAgaW50MzJfdCBrZXlDb2RlOworICAgIGludDMyX3QgdmFsdWU7CisgICAgdWludDMyX3QgZmxhZ3M7Cit9OworCisvKgorICogRmxhZ3MgdGhhdCBmbG93IGFsb25nc2lkZSBldmVudHMgaW4gdGhlIGlucHV0IGRpc3BhdGNoIHN5c3RlbSB0byBoZWxwIHdpdGggY2VydGFpbgorICogcG9saWN5IGRlY2lzaW9ucyBzdWNoIGFzIHdha2luZyBmcm9tIGRldmljZSBzbGVlcC4KKyAqLworZW51bSB7CisgICAgLyogVGhlc2UgZmxhZ3Mgb3JpZ2luYXRlIGluIFJhd0V2ZW50cyBhbmQgYXJlIGdlbmVyYWxseSBzZXQgaW4gdGhlIGtleSBtYXAuICovCisKKyAgICBQT0xJQ1lfRkxBR19XQUtFID0gMHgwMDAwMDAwMSwKKyAgICBQT0xJQ1lfRkxBR19XQUtFX0RST1BQRUQgPSAweDAwMDAwMDAyLAorICAgIFBPTElDWV9GTEFHX1NISUZUID0gMHgwMDAwMDAwNCwKKyAgICBQT0xJQ1lfRkxBR19DQVBTX0xPQ0sgPSAweDAwMDAwMDA4LAorICAgIFBPTElDWV9GTEFHX0FMVCA9IDB4MDAwMDAwMTAsCisgICAgUE9MSUNZX0ZMQUdfQUxUX0dSID0gMHgwMDAwMDAyMCwKKyAgICBQT0xJQ1lfRkxBR19NRU5VID0gMHgwMDAwMDA0MCwKKyAgICBQT0xJQ1lfRkxBR19MQVVOQ0hFUiA9IDB4MDAwMDAwODAsCisKKyAgICBQT0xJQ1lfRkxBR19SQVdfTUFTSyA9IDB4MDAwMGZmZmYsCisKKyAgICAvKiBUaGVzZSBmbGFncyBhcmUgc2V0IGJ5IHRoZSBpbnB1dCByZWFkZXIgcG9saWN5IGFzIGl0IGludGVyY2VwdHMgZWFjaCBldmVudC4gKi8KKworICAgIC8vIEluZGljYXRlcyB0aGF0IHRoZSBzY3JlZW4gd2FzIG9mZiB3aGVuIHRoZSBldmVudCB3YXMgcmVjZWl2ZWQgYW5kIHRoZSBldmVudAorICAgIC8vIHNob3VsZCB3YWtlIHRoZSBkZXZpY2UuCisgICAgUE9MSUNZX0ZMQUdfV09LRV9IRVJFID0gMHgxMDAwMDAwMCwKKworICAgIC8vIEluZGljYXRlcyB0aGF0IHRoZSBzY3JlZW4gd2FzIGRpbSB3aGVuIHRoZSBldmVudCB3YXMgcmVjZWl2ZWQgYW5kIHRoZSBldmVudAorICAgIC8vIHNob3VsZCBicmlnaHRlbiB0aGUgZGV2aWNlLgorICAgIFBPTElDWV9GTEFHX0JSSUdIVF9IRVJFID0gMHgyMDAwMDAwMCwKK307CisKKy8qCisgKiBEZXNjcmliZXMgdGhlIGJhc2ljIGNvbmZpZ3VyYXRpb24gb2YgaW5wdXQgZGV2aWNlcyB0aGF0IGFyZSBwcmVzZW50LgorICovCitzdHJ1Y3QgSW5wdXRDb25maWd1cmF0aW9uIHsKKyAgICBlbnVtIHsKKyAgICAgICAgVE9VQ0hTQ1JFRU5fVU5ERUZJTkVEID0gMCwKKyAgICAgICAgVE9VQ0hTQ1JFRU5fTk9UT1VDSCA9IDEsCisgICAgICAgIFRPVUNIU0NSRUVOX1NUWUxVUyA9IDIsCisgICAgICAgIFRPVUNIU0NSRUVOX0ZJTkdFUiA9IDMKKyAgICB9OworCisgICAgZW51bSB7CisgICAgICAgIEtFWUJPQVJEX1VOREVGSU5FRCA9IDAsCisgICAgICAgIEtFWUJPQVJEX05PS0VZUyA9IDEsCisgICAgICAgIEtFWUJPQVJEX1FXRVJUWSA9IDIsCisgICAgICAgIEtFWUJPQVJEXzEyS0VZID0gMworICAgIH07CisKKyAgICBlbnVtIHsKKyAgICAgICAgTkFWSUdBVElPTl9VTkRFRklORUQgPSAwLAorICAgICAgICBOQVZJR0FUSU9OX05PTkFWID0gMSwKKyAgICAgICAgTkFWSUdBVElPTl9EUEFEID0gMiwKKyAgICAgICAgTkFWSUdBVElPTl9UUkFDS0JBTEwgPSAzLAorICAgICAgICBOQVZJR0FUSU9OX1dIRUVMID0gNAorICAgIH07CisKKyAgICBpbnQzMl90IHRvdWNoU2NyZWVuOworICAgIGludDMyX3Qga2V5Ym9hcmQ7CisgICAgaW50MzJfdCBuYXZpZ2F0aW9uOworfTsKKworLyoKKyAqIFBvaW50ZXIgY29vcmRpbmF0ZSBkYXRhLgorICovCitzdHJ1Y3QgUG9pbnRlckNvb3JkcyB7CisgICAgZmxvYXQgeDsKKyAgICBmbG9hdCB5OworICAgIGZsb2F0IHByZXNzdXJlOworICAgIGZsb2F0IHNpemU7Cit9OworCisvKgorICogSW5wdXQgZXZlbnRzLgorICovCitjbGFzcyBJbnB1dEV2ZW50IDogcHVibGljIEFJbnB1dEV2ZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5JbnB1dEV2ZW50KCkgeyB9CisKKyAgICB2aXJ0dWFsIGludDMyX3QgZ2V0VHlwZSgpIGNvbnN0ID0gMDsKKworICAgIGlubGluZSBpbnQzMl90IGdldERldmljZUlkKCkgY29uc3QgeyByZXR1cm4gbURldmljZUlkOyB9CisKKyAgICBpbmxpbmUgaW50MzJfdCBnZXROYXR1cmUoKSBjb25zdCB7IHJldHVybiBtTmF0dXJlOyB9CisgICAgCitwcm90ZWN0ZWQ6CisgICAgdm9pZCBpbml0aWFsaXplKGludDMyX3QgZGV2aWNlSWQsIGludDMyX3QgbmF0dXJlKTsKKworcHJpdmF0ZToKKyAgICBpbnQzMl90IG1EZXZpY2VJZDsKKyAgICBpbnQzMl90IG1OYXR1cmU7Cit9OworCisvKgorICogS2V5IGV2ZW50cy4KKyAqLworY2xhc3MgS2V5RXZlbnQgOiBwdWJsaWMgSW5wdXRFdmVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+S2V5RXZlbnQoKSB7IH0KKworICAgIHZpcnR1YWwgaW50MzJfdCBnZXRUeXBlKCkgY29uc3QgeyByZXR1cm4gSU5QVVRfRVZFTlRfVFlQRV9LRVk7IH0KKworICAgIGlubGluZSBpbnQzMl90IGdldEFjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1BY3Rpb247IH0KKworICAgIGlubGluZSBpbnQzMl90IGdldEZsYWdzKCkgY29uc3QgeyByZXR1cm4gbUZsYWdzOyB9CisKKyAgICBpbmxpbmUgaW50MzJfdCBnZXRLZXlDb2RlKCkgY29uc3QgeyByZXR1cm4gbUtleUNvZGU7IH0KKworICAgIGlubGluZSBpbnQzMl90IGdldFNjYW5Db2RlKCkgY29uc3QgeyByZXR1cm4gbVNjYW5Db2RlOyB9CisKKyAgICBpbmxpbmUgaW50MzJfdCBnZXRNZXRhU3RhdGUoKSBjb25zdCB7IHJldHVybiBtTWV0YVN0YXRlOyB9CisKKyAgICBpbmxpbmUgaW50MzJfdCBnZXRSZXBlYXRDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1SZXBlYXRDb3VudDsgfQorCisgICAgaW5saW5lIG5zZWNzX3QgZ2V0RG93blRpbWUoKSBjb25zdCB7IHJldHVybiBtRG93blRpbWU7IH0KKworICAgIGlubGluZSBuc2Vjc190IGdldEV2ZW50VGltZSgpIGNvbnN0IHsgcmV0dXJuIG1FdmVudFRpbWU7IH0KKworICAgIC8vIFJldHVybiB0cnVlIGlmIHRoaXMgZXZlbnQgbWF5IGhhdmUgYSBkZWZhdWx0IGFjdGlvbiBpbXBsZW1lbnRhdGlvbi4KKyAgICBzdGF0aWMgYm9vbCBoYXNEZWZhdWx0QWN0aW9uKGludDMyX3Qga2V5Q29kZSk7CisgICAgYm9vbCBoYXNEZWZhdWx0QWN0aW9uKCkgY29uc3Q7CisKKyAgICAvLyBSZXR1cm4gdHJ1ZSBpZiB0aGlzIGV2ZW50IHJlcHJlc2VudHMgYSBzeXN0ZW0ga2V5LgorICAgIHN0YXRpYyBib29sIGlzU3lzdGVtS2V5KGludDMyX3Qga2V5Q29kZSk7CisgICAgYm9vbCBpc1N5c3RlbUtleSgpIGNvbnN0OworICAgIAorICAgIHZvaWQgaW5pdGlhbGl6ZSgKKyAgICAgICAgICAgIGludDMyX3QgZGV2aWNlSWQsCisgICAgICAgICAgICBpbnQzMl90IG5hdHVyZSwKKyAgICAgICAgICAgIGludDMyX3QgYWN0aW9uLAorICAgICAgICAgICAgaW50MzJfdCBmbGFncywKKyAgICAgICAgICAgIGludDMyX3Qga2V5Q29kZSwKKyAgICAgICAgICAgIGludDMyX3Qgc2NhbkNvZGUsCisgICAgICAgICAgICBpbnQzMl90IG1ldGFTdGF0ZSwKKyAgICAgICAgICAgIGludDMyX3QgcmVwZWF0Q291bnQsCisgICAgICAgICAgICBuc2Vjc190IGRvd25UaW1lLAorICAgICAgICAgICAgbnNlY3NfdCBldmVudFRpbWUpOworCitwcml2YXRlOgorICAgIGludDMyX3QgbUFjdGlvbjsKKyAgICBpbnQzMl90IG1GbGFnczsKKyAgICBpbnQzMl90IG1LZXlDb2RlOworICAgIGludDMyX3QgbVNjYW5Db2RlOworICAgIGludDMyX3QgbU1ldGFTdGF0ZTsKKyAgICBpbnQzMl90IG1SZXBlYXRDb3VudDsKKyAgICBuc2Vjc190IG1Eb3duVGltZTsKKyAgICBuc2Vjc190IG1FdmVudFRpbWU7Cit9OworCisvKgorICogTW90aW9uIGV2ZW50cy4KKyAqLworY2xhc3MgTW90aW9uRXZlbnQgOiBwdWJsaWMgSW5wdXRFdmVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB+TW90aW9uRXZlbnQoKSB7IH0KKworICAgIHZpcnR1YWwgaW50MzJfdCBnZXRUeXBlKCkgY29uc3QgeyByZXR1cm4gSU5QVVRfRVZFTlRfVFlQRV9NT1RJT047IH0KKworICAgIGlubGluZSBpbnQzMl90IGdldEFjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1BY3Rpb247IH0KKworICAgIGlubGluZSBpbnQzMl90IGdldEVkZ2VGbGFncygpIGNvbnN0IHsgcmV0dXJuIG1FZGdlRmxhZ3M7IH0KKworICAgIGlubGluZSBpbnQzMl90IGdldE1ldGFTdGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1NZXRhU3RhdGU7IH0KKworICAgIGlubGluZSBmbG9hdCBnZXRYT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbVhPZmZzZXQ7IH0KKworICAgIGlubGluZSBmbG9hdCBnZXRZT2Zmc2V0KCkgY29uc3QgeyByZXR1cm4gbVlPZmZzZXQ7IH0KKworICAgIGlubGluZSBmbG9hdCBnZXRYUHJlY2lzaW9uKCkgY29uc3QgeyByZXR1cm4gbVhQcmVjaXNpb247IH0KKworICAgIGlubGluZSBmbG9hdCBnZXRZUHJlY2lzaW9uKCkgY29uc3QgeyByZXR1cm4gbVlQcmVjaXNpb247IH0KKworICAgIGlubGluZSBuc2Vjc190IGdldERvd25UaW1lKCkgY29uc3QgeyByZXR1cm4gbURvd25UaW1lOyB9CisKKyAgICBpbmxpbmUgc2l6ZV90IGdldFBvaW50ZXJDb3VudCgpIGNvbnN0IHsgcmV0dXJuIG1Qb2ludGVySWRzLnNpemUoKTsgfQorCisgICAgaW5saW5lIGludDMyX3QgZ2V0UG9pbnRlcklkKHNpemVfdCBwb2ludGVySW5kZXgpIGNvbnN0IHsgcmV0dXJuIG1Qb2ludGVySWRzW3BvaW50ZXJJbmRleF07IH0KKworICAgIGlubGluZSBuc2Vjc190IGdldEV2ZW50VGltZSgpIGNvbnN0IHsgcmV0dXJuIG1TYW1wbGVFdmVudFRpbWVzW2dldEhpc3RvcnlTaXplKCldOyB9CisKKyAgICBpbmxpbmUgZmxvYXQgZ2V0UmF3WChzaXplX3QgcG9pbnRlckluZGV4KSBjb25zdCB7CisgICAgICAgIHJldHVybiBnZXRDdXJyZW50UG9pbnRlckNvb3Jkcyhwb2ludGVySW5kZXgpLng7CisgICAgfQorCisgICAgaW5saW5lIGZsb2F0IGdldFJhd1koc2l6ZV90IHBvaW50ZXJJbmRleCkgY29uc3QgeworICAgICAgICByZXR1cm4gZ2V0Q3VycmVudFBvaW50ZXJDb29yZHMocG9pbnRlckluZGV4KS55OworICAgIH0KKworICAgIGlubGluZSBmbG9hdCBnZXRYKHNpemVfdCBwb2ludGVySW5kZXgpIGNvbnN0IHsKKyAgICAgICAgcmV0dXJuIGdldFJhd1gocG9pbnRlckluZGV4KSArIG1YT2Zmc2V0OworICAgIH0KKworICAgIGlubGluZSBmbG9hdCBnZXRZKHNpemVfdCBwb2ludGVySW5kZXgpIGNvbnN0IHsKKyAgICAgICAgcmV0dXJuIGdldFJhd1kocG9pbnRlckluZGV4KSArIG1ZT2Zmc2V0OworICAgIH0KKworICAgIGlubGluZSBmbG9hdCBnZXRQcmVzc3VyZShzaXplX3QgcG9pbnRlckluZGV4KSBjb25zdCB7CisgICAgICAgIHJldHVybiBnZXRDdXJyZW50UG9pbnRlckNvb3Jkcyhwb2ludGVySW5kZXgpLnByZXNzdXJlOworICAgIH0KKworICAgIGlubGluZSBmbG9hdCBnZXRTaXplKHNpemVfdCBwb2ludGVySW5kZXgpIGNvbnN0IHsKKyAgICAgICAgcmV0dXJuIGdldEN1cnJlbnRQb2ludGVyQ29vcmRzKHBvaW50ZXJJbmRleCkuc2l6ZTsKKyAgICB9CisKKyAgICBpbmxpbmUgc2l6ZV90IGdldEhpc3RvcnlTaXplKCkgY29uc3QgeyByZXR1cm4gbVNhbXBsZUV2ZW50VGltZXMuc2l6ZSgpIC0gMTsgfQorCisgICAgaW5saW5lIG5zZWNzX3QgZ2V0SGlzdG9yaWNhbEV2ZW50VGltZShzaXplX3QgaGlzdG9yaWNhbEluZGV4KSBjb25zdCB7CisgICAgICAgIHJldHVybiBtU2FtcGxlRXZlbnRUaW1lc1toaXN0b3JpY2FsSW5kZXhdOworICAgIH0KKworICAgIGlubGluZSBmbG9hdCBnZXRIaXN0b3JpY2FsUmF3WChzaXplX3QgcG9pbnRlckluZGV4LCBzaXplX3QgaGlzdG9yaWNhbEluZGV4KSBjb25zdCB7CisgICAgICAgIHJldHVybiBnZXRIaXN0b3JpY2FsUG9pbnRlckNvb3Jkcyhwb2ludGVySW5kZXgsIGhpc3RvcmljYWxJbmRleCkueDsKKyAgICB9CisKKyAgICBpbmxpbmUgZmxvYXQgZ2V0SGlzdG9yaWNhbFJhd1koc2l6ZV90IHBvaW50ZXJJbmRleCwgc2l6ZV90IGhpc3RvcmljYWxJbmRleCkgY29uc3QgeworICAgICAgICByZXR1cm4gZ2V0SGlzdG9yaWNhbFBvaW50ZXJDb29yZHMocG9pbnRlckluZGV4LCBoaXN0b3JpY2FsSW5kZXgpLnk7CisgICAgfQorCisgICAgaW5saW5lIGZsb2F0IGdldEhpc3RvcmljYWxYKHNpemVfdCBwb2ludGVySW5kZXgsIHNpemVfdCBoaXN0b3JpY2FsSW5kZXgpIGNvbnN0IHsKKyAgICAgICAgcmV0dXJuIGdldEhpc3RvcmljYWxSYXdYKHBvaW50ZXJJbmRleCwgaGlzdG9yaWNhbEluZGV4KSArIG1YT2Zmc2V0OworICAgIH0KKworICAgIGlubGluZSBmbG9hdCBnZXRIaXN0b3JpY2FsWShzaXplX3QgcG9pbnRlckluZGV4LCBzaXplX3QgaGlzdG9yaWNhbEluZGV4KSBjb25zdCB7CisgICAgICAgIHJldHVybiBnZXRIaXN0b3JpY2FsUmF3WShwb2ludGVySW5kZXgsIGhpc3RvcmljYWxJbmRleCkgKyBtWU9mZnNldDsKKyAgICB9CisKKyAgICBpbmxpbmUgZmxvYXQgZ2V0SGlzdG9yaWNhbFByZXNzdXJlKHNpemVfdCBwb2ludGVySW5kZXgsIHNpemVfdCBoaXN0b3JpY2FsSW5kZXgpIGNvbnN0IHsKKyAgICAgICAgcmV0dXJuIGdldEhpc3RvcmljYWxQb2ludGVyQ29vcmRzKHBvaW50ZXJJbmRleCwgaGlzdG9yaWNhbEluZGV4KS5wcmVzc3VyZTsKKyAgICB9CisKKyAgICBpbmxpbmUgZmxvYXQgZ2V0SGlzdG9yaWNhbFNpemUoc2l6ZV90IHBvaW50ZXJJbmRleCwgc2l6ZV90IGhpc3RvcmljYWxJbmRleCkgY29uc3QgeworICAgICAgICByZXR1cm4gZ2V0SGlzdG9yaWNhbFBvaW50ZXJDb29yZHMocG9pbnRlckluZGV4LCBoaXN0b3JpY2FsSW5kZXgpLnNpemU7CisgICAgfQorCisgICAgdm9pZCBpbml0aWFsaXplKAorICAgICAgICAgICAgaW50MzJfdCBkZXZpY2VJZCwKKyAgICAgICAgICAgIGludDMyX3QgbmF0dXJlLAorICAgICAgICAgICAgaW50MzJfdCBhY3Rpb24sCisgICAgICAgICAgICBpbnQzMl90IGVkZ2VGbGFncywKKyAgICAgICAgICAgIGludDMyX3QgbWV0YVN0YXRlLAorICAgICAgICAgICAgZmxvYXQgeE9mZnNldCwKKyAgICAgICAgICAgIGZsb2F0IHlPZmZzZXQsCisgICAgICAgICAgICBmbG9hdCB4UHJlY2lzaW9uLAorICAgICAgICAgICAgZmxvYXQgeVByZWNpc2lvbiwKKyAgICAgICAgICAgIG5zZWNzX3QgZG93blRpbWUsCisgICAgICAgICAgICBuc2Vjc190IGV2ZW50VGltZSwKKyAgICAgICAgICAgIHNpemVfdCBwb2ludGVyQ291bnQsCisgICAgICAgICAgICBjb25zdCBpbnQzMl90KiBwb2ludGVySWRzLAorICAgICAgICAgICAgY29uc3QgUG9pbnRlckNvb3JkcyogcG9pbnRlckNvb3Jkcyk7CisKKyAgICB2b2lkIGFkZFNhbXBsZSgKKyAgICAgICAgICAgIG5zZWNzX3QgZXZlbnRUaW1lLAorICAgICAgICAgICAgY29uc3QgUG9pbnRlckNvb3JkcyogcG9pbnRlckNvb3Jkcyk7CisKKyAgICB2b2lkIG9mZnNldExvY2F0aW9uKGZsb2F0IHhPZmZzZXQsIGZsb2F0IHlPZmZzZXQpOworCisgICAgLy8gTG93LWxldmVsIGFjY2Vzc29ycy4KKyAgICBpbmxpbmUgY29uc3QgaW50MzJfdCogZ2V0UG9pbnRlcklkcygpIGNvbnN0IHsgcmV0dXJuIG1Qb2ludGVySWRzLmFycmF5KCk7IH0KKyAgICBpbmxpbmUgY29uc3QgbnNlY3NfdCogZ2V0U2FtcGxlRXZlbnRUaW1lcygpIGNvbnN0IHsgcmV0dXJuIG1TYW1wbGVFdmVudFRpbWVzLmFycmF5KCk7IH0KKyAgICBpbmxpbmUgY29uc3QgUG9pbnRlckNvb3JkcyogZ2V0U2FtcGxlUG9pbnRlckNvb3JkcygpIGNvbnN0IHsKKyAgICAgICAgICAgIHJldHVybiBtU2FtcGxlUG9pbnRlckNvb3Jkcy5hcnJheSgpOworICAgIH0KKworcHJpdmF0ZToKKyAgICBpbnQzMl90IG1BY3Rpb247CisgICAgaW50MzJfdCBtRWRnZUZsYWdzOworICAgIGludDMyX3QgbU1ldGFTdGF0ZTsKKyAgICBmbG9hdCBtWE9mZnNldDsKKyAgICBmbG9hdCBtWU9mZnNldDsKKyAgICBmbG9hdCBtWFByZWNpc2lvbjsKKyAgICBmbG9hdCBtWVByZWNpc2lvbjsKKyAgICBuc2Vjc190IG1Eb3duVGltZTsKKyAgICBWZWN0b3I8aW50MzJfdD4gbVBvaW50ZXJJZHM7CisgICAgVmVjdG9yPG5zZWNzX3Q+IG1TYW1wbGVFdmVudFRpbWVzOworICAgIFZlY3RvcjxQb2ludGVyQ29vcmRzPiBtU2FtcGxlUG9pbnRlckNvb3JkczsKKworICAgIGlubGluZSBjb25zdCBQb2ludGVyQ29vcmRzJiBnZXRDdXJyZW50UG9pbnRlckNvb3JkcyhzaXplX3QgcG9pbnRlckluZGV4KSBjb25zdCB7CisgICAgICAgIHJldHVybiBtU2FtcGxlUG9pbnRlckNvb3Jkc1tnZXRIaXN0b3J5U2l6ZSgpICogZ2V0UG9pbnRlckNvdW50KCkgKyBwb2ludGVySW5kZXhdOworICAgIH0KKworICAgIGlubGluZSBjb25zdCBQb2ludGVyQ29vcmRzJiBnZXRIaXN0b3JpY2FsUG9pbnRlckNvb3JkcygKKyAgICAgICAgICAgIHNpemVfdCBwb2ludGVySW5kZXgsIHNpemVfdCBoaXN0b3JpY2FsSW5kZXgpIGNvbnN0IHsKKyAgICAgICAgcmV0dXJuIG1TYW1wbGVQb2ludGVyQ29vcmRzW2hpc3RvcmljYWxJbmRleCAqIGdldFBvaW50ZXJDb3VudCgpICsgcG9pbnRlckluZGV4XTsKKyAgICB9Cit9OworCisvKgorICogSW5wdXQgZXZlbnQgZmFjdG9yeS4KKyAqLworY2xhc3MgSW5wdXRFdmVudEZhY3RvcnlJbnRlcmZhY2UgeworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfklucHV0RXZlbnRGYWN0b3J5SW50ZXJmYWNlKCkgeyB9CisKK3B1YmxpYzoKKyAgICBJbnB1dEV2ZW50RmFjdG9yeUludGVyZmFjZSgpIHsgfQorCisgICAgdmlydHVhbCBLZXlFdmVudCogY3JlYXRlS2V5RXZlbnQoKSA9IDA7CisgICAgdmlydHVhbCBNb3Rpb25FdmVudCogY3JlYXRlTW90aW9uRXZlbnQoKSA9IDA7Cit9OworCisvKgorICogQSBzaW1wbGUgaW5wdXQgZXZlbnQgZmFjdG9yeSBpbXBsZW1lbnRhdGlvbiB0aGF0IHVzZXMgYSBzaW5nbGUgcHJlYWxsb2NhdGVkIGluc3RhbmNlCisgKiBvZiBlYWNoIHR5cGUgb2YgaW5wdXQgZXZlbnQgdGhhdCBhcmUgcmV1c2VkIGZvciBlYWNoIHJlcXVlc3QuCisgKi8KK2NsYXNzIFByZWFsbG9jYXRlZElucHV0RXZlbnRGYWN0b3J5IDogcHVibGljIElucHV0RXZlbnRGYWN0b3J5SW50ZXJmYWNlIHsKK3B1YmxpYzoKKyAgICBQcmVhbGxvY2F0ZWRJbnB1dEV2ZW50RmFjdG9yeSgpIHsgfQorICAgIHZpcnR1YWwgflByZWFsbG9jYXRlZElucHV0RXZlbnRGYWN0b3J5KCkgeyB9CisKKyAgICB2aXJ0dWFsIEtleUV2ZW50KiBjcmVhdGVLZXlFdmVudCgpIHsgcmV0dXJuICYgbUtleUV2ZW50OyB9CisgICAgdmlydHVhbCBNb3Rpb25FdmVudCogY3JlYXRlTW90aW9uRXZlbnQoKSB7IHJldHVybiAmIG1Nb3Rpb25FdmVudDsgfQorCitwcml2YXRlOgorICAgIEtleUV2ZW50IG1LZXlFdmVudDsKKyAgICBNb3Rpb25FdmVudCBtTW90aW9uRXZlbnQ7Cit9OworCisKK30gLy8gbmFtZXNwYWNlIGFuZHJvaWQKKworI2VuZGlmIC8vIF9VSV9JTlBVVF9ICmRpZmYgLS1naXQgYS9pbmNsdWRlL3VpL0lucHV0RGlzcGF0Y2hlci5oIGIvaW5jbHVkZS91aS9JbnB1dERpc3BhdGNoZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjhmODIwCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS91aS9JbnB1dERpc3BhdGNoZXIuaApAQCAtMCwwICsxLDY0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgX1VJX0lOUFVUX0RJU1BBVENIRVJfSAorI2RlZmluZSBfVUlfSU5QVVRfRElTUEFUQ0hFUl9ICisKKyNpbmNsdWRlIDx1aS9JbnB1dC5oPgorI2luY2x1ZGUgPHVpL0lucHV0VHJhbnNwb3J0Lmg+CisjaW5jbHVkZSA8dXRpbHMvS2V5ZWRWZWN0b3IuaD4KKyNpbmNsdWRlIDx1dGlscy9WZWN0b3IuaD4KKyNpbmNsdWRlIDx1dGlscy90aHJlYWRzLmg+CisjaW5jbHVkZSA8dXRpbHMvVGltZXJzLmg+CisjaW5jbHVkZSA8dXRpbHMvUmVmQmFzZS5oPgorI2luY2x1ZGUgPHV0aWxzL1N0cmluZzguaD4KKyNpbmNsdWRlIDx1dGlscy9Qb2xsTG9vcC5oPgorI2luY2x1ZGUgPHV0aWxzL1Bvb2wuaD4KKworI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorCisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworLyoKKyAqIENvbnN0YW50cyB1c2VkIHRvIHJlcG9ydCB0aGUgb3V0Y29tZSBvZiBpbnB1dCBldmVudCBpbmplY3Rpb24uCisgKi8KK2VudW0geworICAgIC8qIChJTlRFUk5BTCBVU0UgT05MWSkgU3BlY2lmaWVzIHRoYXQgaW5qZWN0aW9uIGlzIHBlbmRpbmcgYW5kIGl0cyBvdXRjb21lIGlzIHVua25vd24uICovCisgICAgSU5QVVRfRVZFTlRfSU5KRUNUSU9OX1BFTkRJTkcgPSAtMSwKKworICAgIC8qIEluamVjdGlvbiBzdWNjZWVkZWQuICovCisgICAgSU5QVVRfRVZFTlRfSU5KRUNUSU9OX1NVQ0NFRURFRCA9IDAsCisKKyAgICAvKiBJbmplY3Rpb24gZmFpbGVkIGJlY2F1c2UgdGhlIGluamVjdG9yIGRpZCBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGluamVjdAorICAgICAqIGludG8gdGhlIGFwcGxpY2F0aW9uIHdpdGggaW5wdXQgZm9jdXMuICovCisgICAgSU5QVVRfRVZFTlRfSU5KRUNUSU9OX1BFUk1JU1NJT05fREVOSUVEID0gMSwKKworICAgIC8qIEluamVjdGlvbiBmYWlsZWQgYmVjYXVzZSB0aGVyZSB3ZXJlIG5vIGF2YWlsYWJsZSBpbnB1dCB0YXJnZXRzLiAqLworICAgIElOUFVUX0VWRU5UX0lOSkVDVElPTl9GQUlMRUQgPSAyLAorCisgICAgLyogSW5qZWN0aW9uIGZhaWxlZCBkdWUgdG8gYSB0aW1lb3V0LiAqLworICAgIElOUFVUX0VWRU5UX0lOSkVDVElPTl9USU1FRF9PVVQgPSAzCit9OworCisKKy8qCisgKiBBbiBpbnB1dCB0YXJnZXQgc3BlY2lmaWVzIGhvdyBhbiBpbnB1dCBldmVudCBpcyB0byBiZSBkaXNwYXRjaGVkIHRvIGEgcGFydGljdWxhciB3aW5kb3cKKyAqIGluY2x1ZGluZyB0aGUgd2luZG93J3MgaW5wdXQgY2hhbm5lbCwgY29udHJvbCBmbGFncywgYSB0aW1lb3V0LCBhbmQgYW4gWCAvIFkgb2Zmc2V0IHRvCisgKiBiZSBhZGRlZCB0byBpbnB1dCBldmVudCBjb29yZGluYXRlcyB0byBjb21wZW5zYXRlIGZvciB0aGUgYWJzb2x1dGUgcG9zaXRpb24gb2YgdGhlCisgKiB3aW5kb3cgYXJlYS4KKyAqLworc3RydWN0IElucHV0VGFyZ2V0IHsKKyAgICBlbnVtIHsKKyAgICAgICAgLyogVGhpcyBmbGFnIGluZGljYXRlcyB0aGF0IHN1YnNlcXVlbnQgZXZlbnQgZGVsaXZlcnkgc2hvdWxkIGJlIGhlbGQgdW50aWwgdGhlCisgICAgICAgICAqIGN1cnJlbnQgZXZlbnQgaXMgZGVsaXZlcmVkIHRvIHRoaXMgdGFyZ2V0IG9yIGEgdGltZW91dCBvY2N1cnMuICovCisgICAgICAgIEZMQUdfU1lOQyA9IDB4MDEsCisKKyAgICAgICAgLyogVGhpcyBmbGFnIGluZGljYXRlcyB0aGF0IGEgTW90aW9uRXZlbnQgd2l0aCBBQ1RJT05fRE9XTiBmYWxscyBvdXRzaWRlIG9mIHRoZSBhcmVhIG9mCisgICAgICAgICAqIHRoaXMgdGFyZ2V0IGFuZCBzbyBzaG91bGQgaW5zdGVhZCBiZSBkZWxpdmVyZWQgYXMgYW4gQUNUSU9OX09VVFNJREUgdG8gdGhpcyB0YXJnZXQuICovCisgICAgICAgIEZMQUdfT1VUU0lERSA9IDB4MDIsCisKKyAgICAgICAgLyogVGhpcyBmbGFnIGluZGljYXRlcyB0aGF0IGEgS2V5RXZlbnQgb3IgTW90aW9uRXZlbnQgaXMgYmVpbmcgY2FuY2VsZWQuCisgICAgICAgICAqIEluIHRoZSBjYXNlIG9mIGEga2V5IGV2ZW50LCBpdCBzaG91bGQgYmUgZGVsaXZlcmVkIHdpdGggS2V5RXZlbnQuRkxBR19DQU5DRUxFRCBzZXQuCisgICAgICAgICAqIEluIHRoZSBjYXNlIG9mIGEgbW90aW9uIGV2ZW50LCBpdCBzaG91bGQgYmUgZGVsaXZlcmVkIGFzIE1vdGlvbkV2ZW50LkFDVElPTl9DQU5DRUwuICovCisgICAgICAgIEZMQUdfQ0FOQ0VMID0gMHgwNAorICAgIH07CisKKyAgICAvLyBUaGUgaW5wdXQgY2hhbm5lbCB0byBiZSB0YXJnZXRlZC4KKyAgICBzcDxJbnB1dENoYW5uZWw+IGlucHV0Q2hhbm5lbDsKKworICAgIC8vIEZsYWdzIGZvciB0aGUgaW5wdXQgdGFyZ2V0LgorICAgIGludDMyX3QgZmxhZ3M7CisKKyAgICAvLyBUaGUgdGltZW91dCBmb3IgZXZlbnQgZGVsaXZlcnkgdG8gdGhpcyB0YXJnZXQgaW4gbmFub3NlY29uZHMuICBPciAtMSBpZiBub25lLgorICAgIG5zZWNzX3QgdGltZW91dDsKKworICAgIC8vIFRoZSB4IGFuZCB5IG9mZnNldCB0byBhZGQgdG8gYSBNb3Rpb25FdmVudCBhcyBpdCBpcyBkZWxpdmVyZWQuCisgICAgLy8gKGlnbm9yZWQgZm9yIEtleUV2ZW50cykKKyAgICBmbG9hdCB4T2Zmc2V0LCB5T2Zmc2V0OworfTsKKworCisvKgorICogSW5wdXQgZGlzcGF0Y2hlciBwb2xpY3kgaW50ZXJmYWNlLgorICoKKyAqIFRoZSBpbnB1dCByZWFkZXIgcG9saWN5IGlzIHVzZWQgYnkgdGhlIGlucHV0IHJlYWRlciB0byBpbnRlcmFjdCB3aXRoIHRoZSBXaW5kb3cgTWFuYWdlcgorICogYW5kIG90aGVyIHN5c3RlbSBjb21wb25lbnRzLgorICoKKyAqIFRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24gaXMgcGFydGlhbGx5IHN1cHBvcnRlZCBieSBjYWxsYmFja3MgaW50byB0aGUgRFZNCisgKiB2aWEgSk5JLiAgVGhpcyBpbnRlcmZhY2UgaXMgYWxzbyBtb2NrZWQgaW4gdGhlIHVuaXQgdGVzdHMuCisgKi8KK2NsYXNzIElucHV0RGlzcGF0Y2hlclBvbGljeUludGVyZmFjZSA6IHB1YmxpYyB2aXJ0dWFsIFJlZkJhc2UgeworcHJvdGVjdGVkOgorICAgIElucHV0RGlzcGF0Y2hlclBvbGljeUludGVyZmFjZSgpIHsgfQorICAgIHZpcnR1YWwgfklucHV0RGlzcGF0Y2hlclBvbGljeUludGVyZmFjZSgpIHsgfQorCitwdWJsaWM6CisgICAgLyogTm90aWZpZXMgdGhlIHN5c3RlbSB0aGF0IGEgY29uZmlndXJhdGlvbiBjaGFuZ2UgaGFzIG9jY3VycmVkLiAqLworICAgIHZpcnR1YWwgdm9pZCBub3RpZnlDb25maWd1cmF0aW9uQ2hhbmdlZChuc2Vjc190IHdoZW4pID0gMDsKKworICAgIC8qIE5vdGlmaWVzIHRoZSBzeXN0ZW0gdGhhdCBhbiBpbnB1dCBjaGFubmVsIGlzIHVucmVjb3ZlcmFibHkgYnJva2VuLiAqLworICAgIHZpcnR1YWwgdm9pZCBub3RpZnlJbnB1dENoYW5uZWxCcm9rZW4oY29uc3Qgc3A8SW5wdXRDaGFubmVsPiYgaW5wdXRDaGFubmVsKSA9IDA7CisKKyAgICAvKiBOb3RpZmllcyB0aGUgc3lzdGVtIHRoYXQgYW4gaW5wdXQgY2hhbm5lbCBpcyBub3QgcmVzcG9uZGluZy4KKyAgICAgKiBSZXR1cm5zIHRydWUgYW5kIGEgbmV3IHRpbWVvdXQgdmFsdWUgaWYgdGhlIGRpc3BhdGNoZXIgc2hvdWxkIGtlZXAgd2FpdGluZy4KKyAgICAgKiBPdGhlcndpc2UgcmV0dXJucyBmYWxzZS4gKi8KKyAgICB2aXJ0dWFsIGJvb2wgbm90aWZ5SW5wdXRDaGFubmVsQU5SKGNvbnN0IHNwPElucHV0Q2hhbm5lbD4mIGlucHV0Q2hhbm5lbCwKKyAgICAgICAgICAgIG5zZWNzX3QmIG91dE5ld1RpbWVvdXQpID0gMDsKKworICAgIC8qIE5vdGlmaWVzIHRoZSBzeXN0ZW0gdGhhdCBhbiBpbnB1dCBjaGFubmVsIHJlY292ZXJlZCBmcm9tIEFOUi4gKi8KKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5SW5wdXRDaGFubmVsUmVjb3ZlcmVkRnJvbUFOUihjb25zdCBzcDxJbnB1dENoYW5uZWw+JiBpbnB1dENoYW5uZWwpID0gMDsKKworICAgIC8qIEdldHMgdGhlIGtleSByZXBlYXQgdGltZW91dCBvciAtMSBpZiBhdXRvbWF0aWMga2V5IHJlcGVhdGluZyBpcyBkaXNhYmxlZC4gKi8KKyAgICB2aXJ0dWFsIG5zZWNzX3QgZ2V0S2V5UmVwZWF0VGltZW91dCgpID0gMDsKKworICAgIC8qIFdhaXRzIGZvciBrZXkgZXZlbnQgaW5wdXQgdGFyZ2V0cyB0byBiZWNvbWUgYXZhaWxhYmxlLgorICAgICAqIElmIHRoZSBldmVudCBpcyBiZWluZyBpbmplY3RlZCwgaW5qZWN0b3JQaWQgYW5kIGluamVjdG9yVWlkIHNob3VsZCBzcGVjaWZ5IHRoZQorICAgICAqIHByb2Nlc3MgaWQgYW5kIHVzZWQgaWQgb2YgdGhlIGluamVjdGluZyBhcHBsaWNhdGlvbiwgb3RoZXJ3aXNlIHRoZXkgc2hvdWxkIGJvdGgKKyAgICAgKiBiZSAtMS4KKyAgICAgKiBSZXR1cm5zIG9uZSBvZiB0aGUgSU5QVVRfRVZFTlRfSU5KRUNUSU9OX1hYWCBjb25zdGFudHMuICovCisgICAgdmlydHVhbCBpbnQzMl90IHdhaXRGb3JLZXlFdmVudFRhcmdldHMoS2V5RXZlbnQqIGtleUV2ZW50LCB1aW50MzJfdCBwb2xpY3lGbGFncywKKyAgICAgICAgICAgIGludDMyX3QgaW5qZWN0b3JQaWQsIGludDMyX3QgaW5qZWN0b3JVaWQsCisgICAgICAgICAgICBWZWN0b3I8SW5wdXRUYXJnZXQ+JiBvdXRUYXJnZXRzKSA9IDA7CisKKyAgICAvKiBXYWl0cyBmb3IgbW90aW9uIGV2ZW50IHRhcmdldHMgdG8gYmVjb21lIGF2YWlsYWJsZS4KKyAgICAgKiBJZiB0aGUgZXZlbnQgaXMgYmVpbmcgaW5qZWN0ZWQsIGluamVjdG9yUGlkIGFuZCBpbmplY3RvclVpZCBzaG91bGQgc3BlY2lmeSB0aGUKKyAgICAgKiBwcm9jZXNzIGlkIGFuZCB1c2VkIGlkIG9mIHRoZSBpbmplY3RpbmcgYXBwbGljYXRpb24sIG90aGVyd2lzZSB0aGV5IHNob3VsZCBib3RoCisgICAgICogYmUgLTEuCisgICAgICogUmV0dXJucyBvbmUgb2YgdGhlIElOUFVUX0VWRU5UX0lOSkVDVElPTl9YWFggY29uc3RhbnRzLiAqLworICAgIHZpcnR1YWwgaW50MzJfdCB3YWl0Rm9yTW90aW9uRXZlbnRUYXJnZXRzKE1vdGlvbkV2ZW50KiBtb3Rpb25FdmVudCwgdWludDMyX3QgcG9saWN5RmxhZ3MsCisgICAgICAgICAgICBpbnQzMl90IGluamVjdG9yUGlkLCBpbnQzMl90IGluamVjdG9yVWlkLAorICAgICAgICAgICAgVmVjdG9yPElucHV0VGFyZ2V0PiYgb3V0VGFyZ2V0cykgPSAwOworfTsKKworCisvKiBOb3RpZmllcyB0aGUgc3lzdGVtIGFib3V0IGlucHV0IGV2ZW50cyBnZW5lcmF0ZWQgYnkgdGhlIGlucHV0IHJlYWRlci4KKyAqIFRoZSBkaXNwYXRjaGVyIGlzIGV4cGVjdGVkIHRvIGJlIG1vc3RseSBhc3luY2hyb25vdXMuICovCitjbGFzcyBJbnB1dERpc3BhdGNoZXJJbnRlcmZhY2UgOiBwdWJsaWMgdmlydHVhbCBSZWZCYXNlIHsKK3Byb3RlY3RlZDoKKyAgICBJbnB1dERpc3BhdGNoZXJJbnRlcmZhY2UoKSB7IH0KKyAgICB2aXJ0dWFsIH5JbnB1dERpc3BhdGNoZXJJbnRlcmZhY2UoKSB7IH0KKworcHVibGljOgorICAgIC8qIFJ1bnMgYSBzaW5nbGUgaXRlcmF0aW9uIG9mIHRoZSBkaXNwYXRjaCBsb29wLgorICAgICAqIE5vbWluYWxseSBwcm9jZXNzZXMgb25lIHF1ZXVlZCBldmVudCwgYSB0aW1lb3V0LCBvciBhIHJlc3BvbnNlIGZyb20gYW4gaW5wdXQgY29uc3VtZXIuCisgICAgICoKKyAgICAgKiBUaGlzIG1ldGhvZCBzaG91bGQgb25seSBiZSBjYWxsZWQgb24gdGhlIGlucHV0IGRpc3BhdGNoZXIgdGhyZWFkLgorICAgICAqLworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaE9uY2UoKSA9IDA7CisKKyAgICAvKiBOb3RpZmllcyB0aGUgZGlzcGF0Y2hlciBhYm91dCBuZXcgZXZlbnRzLgorICAgICAqCisgICAgICogVGhlc2UgbWV0aG9kcyBzaG91bGQgb25seSBiZSBjYWxsZWQgb24gdGhlIGlucHV0IHJlYWRlciB0aHJlYWQuCisgICAgICovCisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUNvbmZpZ3VyYXRpb25DaGFuZ2VkKG5zZWNzX3QgZXZlbnRUaW1lKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeUFwcFN3aXRjaENvbWluZyhuc2Vjc190IGV2ZW50VGltZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBub3RpZnlLZXkobnNlY3NfdCBldmVudFRpbWUsIGludDMyX3QgZGV2aWNlSWQsIGludDMyX3QgbmF0dXJlLAorICAgICAgICAgICAgdWludDMyX3QgcG9saWN5RmxhZ3MsIGludDMyX3QgYWN0aW9uLCBpbnQzMl90IGZsYWdzLCBpbnQzMl90IGtleUNvZGUsCisgICAgICAgICAgICBpbnQzMl90IHNjYW5Db2RlLCBpbnQzMl90IG1ldGFTdGF0ZSwgbnNlY3NfdCBkb3duVGltZSkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBub3RpZnlNb3Rpb24obnNlY3NfdCBldmVudFRpbWUsIGludDMyX3QgZGV2aWNlSWQsIGludDMyX3QgbmF0dXJlLAorICAgICAgICAgICAgdWludDMyX3QgcG9saWN5RmxhZ3MsIGludDMyX3QgYWN0aW9uLCBpbnQzMl90IG1ldGFTdGF0ZSwgaW50MzJfdCBlZGdlRmxhZ3MsCisgICAgICAgICAgICB1aW50MzJfdCBwb2ludGVyQ291bnQsIGNvbnN0IGludDMyX3QqIHBvaW50ZXJJZHMsIGNvbnN0IFBvaW50ZXJDb29yZHMqIHBvaW50ZXJDb29yZHMsCisgICAgICAgICAgICBmbG9hdCB4UHJlY2lzaW9uLCBmbG9hdCB5UHJlY2lzaW9uLCBuc2Vjc190IGRvd25UaW1lKSA9IDA7CisKKyAgICAvKiBJbmplY3RzIGFuIGlucHV0IGV2ZW50IGFuZCBvcHRpb25hbGx5IHdhaXRzIGZvciBzeW5jLgorICAgICAqIFRoaXMgbWV0aG9kIG1heSBibG9jayBldmVuIGlmIHN5bmMgaXMgZmFsc2UgYmVjYXVzZSBpdCBtdXN0IHdhaXQgZm9yIHByZXZpb3VzIGV2ZW50cworICAgICAqIHRvIGJlIGRpc3BhdGNoZWQgYmVmb3JlIGl0IGNhbiBkZXRlcm1pbmUgd2hldGhlciBpbnB1dCBldmVudCBpbmplY3Rpb24gd2lsbCBiZQorICAgICAqIHBlcm1pdHRlZCBiYXNlZCBvbiB0aGUgY3VycmVudCBpbnB1dCBmb2N1cy4KKyAgICAgKiBSZXR1cm5zIG9uZSBvZiB0aGUgSU5QVVRfRVZFTlRfSU5KRUNUSU9OX1hYWCBjb25zdGFudHMuCisgICAgICoKKyAgICAgKiBUaGlzIG1ldGhvZCBtYXkgYmUgY2FsbGVkIG9uIGFueSB0aHJlYWQgKHVzdWFsbHkgYnkgdGhlIGlucHV0IG1hbmFnZXIpLgorICAgICAqLworICAgIHZpcnR1YWwgaW50MzJfdCBpbmplY3RJbnB1dEV2ZW50KGNvbnN0IElucHV0RXZlbnQqIGV2ZW50LAorICAgICAgICAgICAgaW50MzJfdCBpbmplY3RvclBpZCwgaW50MzJfdCBpbmplY3RvclVpZCwgYm9vbCBzeW5jLCBpbnQzMl90IHRpbWVvdXRNaWxsaXMpID0gMDsKKworICAgIC8qIFByZWVtcHRzIGlucHV0IGRpc3BhdGNoIGluIHByb2dyZXNzIGJ5IG1ha2luZyBwZW5kaW5nIHN5bmNocm9ub3VzCisgICAgICogZGlzcGF0Y2hlcyBhc3luY2hyb25vdXMgaW5zdGVhZC4gIFRoaXMgbWV0aG9kIGlzIGdlbmVyYWxseSBjYWxsZWQgZHVyaW5nIGEgZm9jdXMKKyAgICAgKiB0cmFuc2l0aW9uIGZyb20gb25lIGFwcGxpY2F0aW9uIHRvIHRoZSBuZXh0IHNvIGFzIHRvIGVuYWJsZSB0aGUgbmV3IGFwcGxpY2F0aW9uCisgICAgICogdG8gc3RhcnQgcmVjZWl2aW5nIGlucHV0IGFzIHNvb24gYXMgcG9zc2libGUgd2l0aG91dCBoYXZpbmcgdG8gd2FpdCBmb3IgdGhlCisgICAgICogb2xkIGFwcGxpY2F0aW9uIHRvIGZpbmlzaCB1cC4KKyAgICAgKgorICAgICAqIFRoaXMgbWV0aG9kIG1heSBiZSBjYWxsZWQgb24gYW55IHRocmVhZCAodXN1YWxseSBieSB0aGUgaW5wdXQgbWFuYWdlcikuCisgICAgICovCisgICAgdmlydHVhbCB2b2lkIHByZWVtcHRJbnB1dERpc3BhdGNoKCkgPSAwOworCisgICAgLyogUmVnaXN0ZXJzIG9yIHVucmVnaXN0ZXIgaW5wdXQgY2hhbm5lbHMgdGhhdCBtYXkgYmUgdXNlZCBhcyB0YXJnZXRzIGZvciBpbnB1dCBldmVudHMuCisgICAgICoKKyAgICAgKiBUaGVzZSBtZXRob2RzIG1heSBiZSBjYWxsZWQgb24gYW55IHRocmVhZCAodXN1YWxseSBieSB0aGUgaW5wdXQgbWFuYWdlcikuCisgICAgICovCisgICAgdmlydHVhbCBzdGF0dXNfdCByZWdpc3RlcklucHV0Q2hhbm5lbChjb25zdCBzcDxJbnB1dENoYW5uZWw+JiBpbnB1dENoYW5uZWwpID0gMDsKKyAgICB2aXJ0dWFsIHN0YXR1c190IHVucmVnaXN0ZXJJbnB1dENoYW5uZWwoY29uc3Qgc3A8SW5wdXRDaGFubmVsPiYgaW5wdXRDaGFubmVsKSA9IDA7Cit9OworCisvKiBEaXNwYXRjaGVzIGV2ZW50cyB0byBpbnB1dCB0YXJnZXRzLiAgU29tZSBmdW5jdGlvbnMgb2YgdGhlIGlucHV0IGRpc3BhdGNoZXIsIHN1Y2ggYXMKKyAqIGlkZW50aWZ5aW5nIGlucHV0IHRhcmdldHMsIGFyZSBjb250cm9sbGVkIGJ5IGEgc2VwYXJhdGUgcG9saWN5IG9iamVjdC4KKyAqCisgKiBJTVBPUlRBTlQgSU5WQVJJQU5UOgorICogICAgIEJlY2F1c2UgdGhlIHBvbGljeSBjYW4gcG90ZW50aWFsbHkgYmxvY2sgb3IgY2F1c2UgcmUtZW50cmFuY2UgaW50byB0aGUgaW5wdXQgZGlzcGF0Y2hlciwKKyAqICAgICB0aGUgaW5wdXQgZGlzcGF0Y2hlciBuZXZlciBjYWxscyBpbnRvIHRoZSBwb2xpY3kgd2hpbGUgaG9sZGluZyBpdHMgaW50ZXJuYWwgbG9ja3MuCisgKiAgICAgVGhlIGltcGxlbWVudGF0aW9uIGlzIGFsc28gY2FyZWZ1bGx5IGRlc2lnbmVkIHRvIHJlY292ZXIgZnJvbSBzY2VuYXJpb3Mgc3VjaCBhcyBhbgorICogICAgIGlucHV0IGNoYW5uZWwgYmVjb21pbmcgdW5yZWdpc3RlcmVkIHdoaWxlIGlkZW50aWZ5aW5nIGlucHV0IHRhcmdldHMgb3IgcHJvY2Vzc2luZyB0aW1lb3V0cy4KKyAqCisgKiAgICAgTWV0aG9kcyBtYXJrZWQgJ0xvY2tlZCcgbXVzdCBiZSBjYWxsZWQgd2l0aCB0aGUgbG9jayBhY3F1aXJlZC4KKyAqCisgKiAgICAgTWV0aG9kcyBtYXJrZWQgJ0xvY2tlZEludGVycnVwdGlibGUnIG11c3QgYmUgY2FsbGVkIHdpdGggdGhlIGxvY2sgYWNxdWlyZWQgYnV0CisgKiAgICAgbWF5IGR1cmluZyB0aGUgY291cnNlIG9mIHRoZWlyIGV4ZWN1dGlvbiByZWxlYXNlIHRoZSBsb2NrLCBjYWxsIGludG8gdGhlIHBvbGljeSwgYW5kCisgKiAgICAgdGhlbiByZWFjcXVpcmUgdGhlIGxvY2suICBUaGUgY2FsbGVyIGlzIHJlc3BvbnNpYmxlIGZvciByZWNvdmVyaW5nIGdyYWNlZnVsbHkuCisgKgorICogICAgIEEgJ0xvY2tlZEludGVycnVwdGlibGUnIG1ldGhvZCBtYXkgY2FsbGVkIGEgJ0xvY2tlZCcgbWV0aG9kLCBidXQgTk9UIHZpY2UtdmVyc2EuCisgKi8KK2NsYXNzIElucHV0RGlzcGF0Y2hlciA6IHB1YmxpYyBJbnB1dERpc3BhdGNoZXJJbnRlcmZhY2UgeworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfklucHV0RGlzcGF0Y2hlcigpOworCitwdWJsaWM6CisgICAgZXhwbGljaXQgSW5wdXREaXNwYXRjaGVyKGNvbnN0IHNwPElucHV0RGlzcGF0Y2hlclBvbGljeUludGVyZmFjZT4mIHBvbGljeSk7CisKKyAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hPbmNlKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q29uZmlndXJhdGlvbkNoYW5nZWQobnNlY3NfdCBldmVudFRpbWUpOworICAgIHZpcnR1YWwgdm9pZCBub3RpZnlBcHBTd2l0Y2hDb21pbmcobnNlY3NfdCBldmVudFRpbWUpOworICAgIHZpcnR1YWwgdm9pZCBub3RpZnlLZXkobnNlY3NfdCBldmVudFRpbWUsIGludDMyX3QgZGV2aWNlSWQsIGludDMyX3QgbmF0dXJlLAorICAgICAgICAgICAgdWludDMyX3QgcG9saWN5RmxhZ3MsIGludDMyX3QgYWN0aW9uLCBpbnQzMl90IGZsYWdzLCBpbnQzMl90IGtleUNvZGUsCisgICAgICAgICAgICBpbnQzMl90IHNjYW5Db2RlLCBpbnQzMl90IG1ldGFTdGF0ZSwgbnNlY3NfdCBkb3duVGltZSk7CisgICAgdmlydHVhbCB2b2lkIG5vdGlmeU1vdGlvbihuc2Vjc190IGV2ZW50VGltZSwgaW50MzJfdCBkZXZpY2VJZCwgaW50MzJfdCBuYXR1cmUsCisgICAgICAgICAgICB1aW50MzJfdCBwb2xpY3lGbGFncywgaW50MzJfdCBhY3Rpb24sIGludDMyX3QgbWV0YVN0YXRlLCBpbnQzMl90IGVkZ2VGbGFncywKKyAgICAgICAgICAgIHVpbnQzMl90IHBvaW50ZXJDb3VudCwgY29uc3QgaW50MzJfdCogcG9pbnRlcklkcywgY29uc3QgUG9pbnRlckNvb3JkcyogcG9pbnRlckNvb3JkcywKKyAgICAgICAgICAgIGZsb2F0IHhQcmVjaXNpb24sIGZsb2F0IHlQcmVjaXNpb24sIG5zZWNzX3QgZG93blRpbWUpOworCisgICAgdmlydHVhbCBpbnQzMl90IGluamVjdElucHV0RXZlbnQoY29uc3QgSW5wdXRFdmVudCogZXZlbnQsCisgICAgICAgICAgICBpbnQzMl90IGluamVjdG9yUGlkLCBpbnQzMl90IGluamVjdG9yVWlkLCBib29sIHN5bmMsIGludDMyX3QgdGltZW91dE1pbGxpcyk7CisKKyAgICB2aXJ0dWFsIHZvaWQgcHJlZW1wdElucHV0RGlzcGF0Y2goKTsKKworICAgIHZpcnR1YWwgc3RhdHVzX3QgcmVnaXN0ZXJJbnB1dENoYW5uZWwoY29uc3Qgc3A8SW5wdXRDaGFubmVsPiYgaW5wdXRDaGFubmVsKTsKKyAgICB2aXJ0dWFsIHN0YXR1c190IHVucmVnaXN0ZXJJbnB1dENoYW5uZWwoY29uc3Qgc3A8SW5wdXRDaGFubmVsPiYgaW5wdXRDaGFubmVsKTsKKworcHJpdmF0ZToKKyAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgICBzdHJ1Y3QgTGluayB7CisgICAgICAgIFQqIG5leHQ7CisgICAgICAgIFQqIHByZXY7CisgICAgfTsKKworICAgIHN0cnVjdCBFdmVudEVudHJ5IDogTGluazxFdmVudEVudHJ5PiB7CisgICAgICAgIGVudW0geworICAgICAgICAgICAgVFlQRV9TRU5USU5FTCwKKyAgICAgICAgICAgIFRZUEVfQ09ORklHVVJBVElPTl9DSEFOR0VELAorICAgICAgICAgICAgVFlQRV9LRVksCisgICAgICAgICAgICBUWVBFX01PVElPTgorICAgICAgICB9OworCisgICAgICAgIGludDMyX3QgcmVmQ291bnQ7CisgICAgICAgIGludDMyX3QgdHlwZTsKKyAgICAgICAgbnNlY3NfdCBldmVudFRpbWU7CisKKyAgICAgICAgaW50MzJfdCBpbmplY3Rpb25SZXN1bHQ7IC8vIGluaXRpYWxseSBJTlBVVF9FVkVOVF9JTkpFQ1RJT05fUEVORElORworICAgICAgICBpbnQzMl90IGluamVjdG9yUGlkOyAgICAgLy8gLTEgaWYgbm90IGluamVjdGVkCisgICAgICAgIGludDMyX3QgaW5qZWN0b3JVaWQ7ICAgICAvLyAtMSBpZiBub3QgaW5qZWN0ZWQKKworICAgICAgICBib29sIGRpc3BhdGNoSW5Qcm9ncmVzczsgLy8gaW5pdGlhbGx5IGZhbHNlLCBzZXQgdG8gdHJ1ZSB3aGlsZSBkaXNwYXRjaGluZworCisgICAgICAgIGlubGluZSBib29sIGlzSW5qZWN0ZWQoKSB7IHJldHVybiBpbmplY3RvclBpZCA+PSAwOyB9CisgICAgfTsKKworICAgIHN0cnVjdCBDb25maWd1cmF0aW9uQ2hhbmdlZEVudHJ5IDogRXZlbnRFbnRyeSB7CisgICAgfTsKKworICAgIHN0cnVjdCBLZXlFbnRyeSA6IEV2ZW50RW50cnkgeworICAgICAgICBpbnQzMl90IGRldmljZUlkOworICAgICAgICBpbnQzMl90IG5hdHVyZTsKKyAgICAgICAgdWludDMyX3QgcG9saWN5RmxhZ3M7CisgICAgICAgIGludDMyX3QgYWN0aW9uOworICAgICAgICBpbnQzMl90IGZsYWdzOworICAgICAgICBpbnQzMl90IGtleUNvZGU7CisgICAgICAgIGludDMyX3Qgc2NhbkNvZGU7CisgICAgICAgIGludDMyX3QgbWV0YVN0YXRlOworICAgICAgICBpbnQzMl90IHJlcGVhdENvdW50OworICAgICAgICBuc2Vjc190IGRvd25UaW1lOworICAgIH07CisKKyAgICBzdHJ1Y3QgTW90aW9uU2FtcGxlIHsKKyAgICAgICAgTW90aW9uU2FtcGxlKiBuZXh0OworCisgICAgICAgIG5zZWNzX3QgZXZlbnRUaW1lOworICAgICAgICBQb2ludGVyQ29vcmRzIHBvaW50ZXJDb29yZHNbTUFYX1BPSU5URVJTXTsKKyAgICB9OworCisgICAgc3RydWN0IE1vdGlvbkVudHJ5IDogRXZlbnRFbnRyeSB7CisgICAgICAgIGludDMyX3QgZGV2aWNlSWQ7CisgICAgICAgIGludDMyX3QgbmF0dXJlOworICAgICAgICB1aW50MzJfdCBwb2xpY3lGbGFnczsKKyAgICAgICAgaW50MzJfdCBhY3Rpb247CisgICAgICAgIGludDMyX3QgbWV0YVN0YXRlOworICAgICAgICBpbnQzMl90IGVkZ2VGbGFnczsKKyAgICAgICAgZmxvYXQgeFByZWNpc2lvbjsKKyAgICAgICAgZmxvYXQgeVByZWNpc2lvbjsKKyAgICAgICAgbnNlY3NfdCBkb3duVGltZTsKKyAgICAgICAgdWludDMyX3QgcG9pbnRlckNvdW50OworICAgICAgICBpbnQzMl90IHBvaW50ZXJJZHNbTUFYX1BPSU5URVJTXTsKKworICAgICAgICAvLyBMaW5rZWQgbGlzdCBvZiBtb3Rpb24gc2FtcGxlcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBtb3Rpb24gZXZlbnQuCisgICAgICAgIE1vdGlvblNhbXBsZSBmaXJzdFNhbXBsZTsKKyAgICAgICAgTW90aW9uU2FtcGxlKiBsYXN0U2FtcGxlOworICAgIH07CisKKyAgICAvLyBUcmFja3MgdGhlIHByb2dyZXNzIG9mIGRpc3BhdGNoaW5nIGEgcGFydGljdWxhciBldmVudCB0byBhIHBhcnRpY3VsYXIgY29ubmVjdGlvbi4KKyAgICBzdHJ1Y3QgRGlzcGF0Y2hFbnRyeSA6IExpbms8RGlzcGF0Y2hFbnRyeT4geworICAgICAgICBFdmVudEVudHJ5KiBldmVudEVudHJ5OyAvLyB0aGUgZXZlbnQgdG8gZGlzcGF0Y2gKKyAgICAgICAgaW50MzJfdCB0YXJnZXRGbGFnczsKKyAgICAgICAgZmxvYXQgeE9mZnNldDsKKyAgICAgICAgZmxvYXQgeU9mZnNldDsKKyAgICAgICAgbnNlY3NfdCB0aW1lb3V0OworCisgICAgICAgIC8vIFRydWUgaWYgZGlzcGF0Y2ggaGFzIHN0YXJ0ZWQuCisgICAgICAgIGJvb2wgaW5Qcm9ncmVzczsKKworICAgICAgICAvLyBGb3IgbW90aW9uIGV2ZW50czoKKyAgICAgICAgLy8gICBQb2ludGVyIHRvIHRoZSBmaXJzdCBtb3Rpb24gc2FtcGxlIHRvIGRpc3BhdGNoIGluIHRoaXMgY3ljbGUuCisgICAgICAgIC8vICAgVXN1YWxseSBOVUxMIHRvIGluZGljYXRlIHRoYXQgdGhlIGxpc3Qgb2YgbW90aW9uIHNhbXBsZXMgYmVnaW5zIGF0CisgICAgICAgIC8vICAgTW90aW9uRW50cnk6OmZpcnN0U2FtcGxlLiAgT3RoZXJ3aXNlLCBzb21lIHNhbXBsZXMgd2VyZSBkaXNwYXRjaGVkIGluIGEgcHJldmlvdXMKKyAgICAgICAgLy8gICBjeWNsZSBhbmQgdGhpcyBwb2ludGVyIGluZGljYXRlcyB0aGUgbG9jYXRpb24gb2YgdGhlIGZpcnN0IHJlbWFpbmluaW5nIHNhbXBsZQorICAgICAgICAvLyAgIHRvIGRpc3BhdGNoIGR1cmluZyB0aGUgY3VycmVudCBjeWNsZS4KKyAgICAgICAgTW90aW9uU2FtcGxlKiBoZWFkTW90aW9uU2FtcGxlOworICAgICAgICAvLyAgIFBvaW50ZXIgdG8gYSBtb3Rpb24gc2FtcGxlIHRvIGRpc3BhdGNoIGluIHRoZSBuZXh0IGN5Y2xlIGlmIHRoZSBkaXNwYXRjaGVyIHdhcworICAgICAgICAvLyAgIHVuYWJsZSB0byBzZW5kIGFsbCBtb3Rpb24gc2FtcGxlcyBkdXJpbmcgdGhpcyBjeWNsZS4gIE9uIHRoZSBuZXh0IGN5Y2xlLAorICAgICAgICAvLyAgIGhlYWRNb3Rpb25TYW1wbGUgd2lsbCBiZSBpbml0aWFsaXplZCB0byB0YWlsTW90aW9uU2FtcGxlIGFuZCB0YWlsTW90aW9uU2FtcGxlCisgICAgICAgIC8vICAgd2lsbCBiZSBzZXQgdG8gTlVMTC4KKyAgICAgICAgTW90aW9uU2FtcGxlKiB0YWlsTW90aW9uU2FtcGxlOworICAgIH07CisKKyAgICAvLyBBIGNvbW1hbmQgZW50cnkgY2FwdHVyZXMgc3RhdGUgYW5kIGJlaGF2aW9yIGZvciBhbiBhY3Rpb24gdG8gYmUgcGVyZm9ybWVkIGluIHRoZQorICAgIC8vIGRpc3BhdGNoIGxvb3AgYWZ0ZXIgdGhlIGluaXRpYWwgcHJvY2Vzc2luZyBoYXMgdGFrZW4gcGxhY2UuICBJdCBpcyBlc3NlbnRpYWxseQorICAgIC8vIGEga2luZCBvZiBjb250aW51YXRpb24gdXNlZCB0byBwb3N0cG9uZSBzZW5zaXRpdmUgcG9saWN5IGludGVyYWN0aW9ucyB0byBhIHBvaW50CisgICAgLy8gaW4gdGhlIGRpc3BhdGNoIGxvb3Agd2hlcmUgaXQgaXMgc2FmZSB0byByZWxlYXNlIHRoZSBsb2NrIChnZW5lcmFsbHkgYWZ0ZXIgZmluaXNoaW5nCisgICAgLy8gdGhlIGNyaXRpY2FsIHBhcnRzIG9mIHRoZSBkaXNwYXRjaCBjeWNsZSkuCisgICAgLy8KKyAgICAvLyBUaGUgc3BlY2lhbCB0aGluZyBhYm91dCBjb21tYW5kcyBpcyB0aGF0IHRoZXkgY2FuIHZvbHVudGFyaWx5IHJlbGVhc2UgYW5kIHJlYWNxdWlyZQorICAgIC8vIHRoZSBkaXNwYXRjaGVyIGxvY2sgYXQgd2lsbC4gIEluaXRpYWxseSB3aGVuIHRoZSBjb21tYW5kIHN0YXJ0cyBydW5uaW5nLCB0aGUKKyAgICAvLyBkaXNwYXRjaGVyIGxvY2sgaXMgaGVsZC4gIEhvd2V2ZXIsIGlmIHRoZSBjb21tYW5kIG5lZWRzIHRvIGNhbGwgaW50byB0aGUgcG9saWN5IHRvCisgICAgLy8gZG8gc29tZSB3b3JrLCBpdCBjYW4gcmVsZWFzZSB0aGUgbG9jaywgZG8gdGhlIHdvcmssIHRoZW4gcmVhY3F1aXJlIHRoZSBsb2NrIGFnYWluCisgICAgLy8gYmVmb3JlIHJldHVybmluZy4KKyAgICAvLworICAgIC8vIFRoaXMgbWVjaGFuaXNtIGlzIGEgYml0IGNsdW5reSBidXQgaXQgaGVscHMgdG8gcHJlc2VydmUgdGhlIGludmFyaWFudCB0aGF0IHRoZSBkaXNwYXRjaAorICAgIC8vIG5ldmVyIGNhbGxzIGludG8gdGhlIHBvbGljeSB3aGlsZSBob2xkaW5nIGl0cyBsb2NrLgorICAgIC8vCisgICAgLy8gQ29tbWFuZHMgYXJlIGltcGxpY2l0bHkgJ0xvY2tlZEludGVycnVwdGlibGUnLgorICAgIHN0cnVjdCBDb21tYW5kRW50cnk7CisgICAgdHlwZWRlZiB2b2lkIChJbnB1dERpc3BhdGNoZXI6OipDb21tYW5kKShDb21tYW5kRW50cnkqIGNvbW1hbmRFbnRyeSk7CisKKyAgICBjbGFzcyBDb25uZWN0aW9uOworICAgIHN0cnVjdCBDb21tYW5kRW50cnkgOiBMaW5rPENvbW1hbmRFbnRyeT4geworICAgICAgICBDb21tYW5kRW50cnkoKTsKKyAgICAgICAgfkNvbW1hbmRFbnRyeSgpOworCisgICAgICAgIENvbW1hbmQgY29tbWFuZDsKKworICAgICAgICAvLyBwYXJhbWV0ZXJzIGZvciB0aGUgY29tbWFuZCAodXNhZ2UgdmFyaWVzIGJ5IGNvbW1hbmQpCisgICAgICAgIHNwPENvbm5lY3Rpb24+IGNvbm5lY3Rpb247CisgICAgfTsKKworICAgIC8vIEdlbmVyaWMgcXVldWUgaW1wbGVtZW50YXRpb24uCisgICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgc3RydWN0IFF1ZXVlIHsKKyAgICAgICAgVCBoZWFkOworICAgICAgICBUIHRhaWw7CisKKyAgICAgICAgaW5saW5lIFF1ZXVlKCkgeworICAgICAgICAgICAgaGVhZC5wcmV2ID0gTlVMTDsKKyAgICAgICAgICAgIGhlYWQubmV4dCA9ICYgdGFpbDsKKyAgICAgICAgICAgIHRhaWwucHJldiA9ICYgaGVhZDsKKyAgICAgICAgICAgIHRhaWwubmV4dCA9IE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBpbmxpbmUgYm9vbCBpc0VtcHR5KCkgeworICAgICAgICAgICAgcmV0dXJuIGhlYWQubmV4dCA9PSAmIHRhaWw7CisgICAgICAgIH0KKworICAgICAgICBpbmxpbmUgdm9pZCBlbnF1ZXVlQXRUYWlsKFQqIGVudHJ5KSB7CisgICAgICAgICAgICBUKiBsYXN0ID0gdGFpbC5wcmV2OworICAgICAgICAgICAgbGFzdC0+bmV4dCA9IGVudHJ5OworICAgICAgICAgICAgZW50cnktPnByZXYgPSBsYXN0OworICAgICAgICAgICAgZW50cnktPm5leHQgPSAmIHRhaWw7CisgICAgICAgICAgICB0YWlsLnByZXYgPSBlbnRyeTsKKyAgICAgICAgfQorCisgICAgICAgIGlubGluZSB2b2lkIGVucXVldWVBdEhlYWQoVCogZW50cnkpIHsKKyAgICAgICAgICAgIFQqIGZpcnN0ID0gaGVhZC5uZXh0OworICAgICAgICAgICAgaGVhZC5uZXh0ID0gZW50cnk7CisgICAgICAgICAgICBlbnRyeS0+cHJldiA9ICYgaGVhZDsKKyAgICAgICAgICAgIGVudHJ5LT5uZXh0ID0gZmlyc3Q7CisgICAgICAgICAgICBmaXJzdC0+cHJldiA9IGVudHJ5OworICAgICAgICB9CisKKyAgICAgICAgaW5saW5lIHZvaWQgZGVxdWV1ZShUKiBlbnRyeSkgeworICAgICAgICAgICAgZW50cnktPnByZXYtPm5leHQgPSBlbnRyeS0+bmV4dDsKKyAgICAgICAgICAgIGVudHJ5LT5uZXh0LT5wcmV2ID0gZW50cnktPnByZXY7CisgICAgICAgIH0KKworICAgICAgICBpbmxpbmUgVCogZGVxdWV1ZUF0SGVhZCgpIHsKKyAgICAgICAgICAgIFQqIGZpcnN0ID0gaGVhZC5uZXh0OworICAgICAgICAgICAgZGVxdWV1ZShmaXJzdCk7CisgICAgICAgICAgICByZXR1cm4gZmlyc3Q7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyogQWxsb2NhdGVzIHF1ZXVlIGVudHJpZXMgYW5kIHBlcmZvcm1zIHJlZmVyZW5jZSBjb3VudGluZyBhcyBuZWVkZWQuICovCisgICAgY2xhc3MgQWxsb2NhdG9yIHsKKyAgICBwdWJsaWM6CisgICAgICAgIEFsbG9jYXRvcigpOworCisgICAgICAgIENvbmZpZ3VyYXRpb25DaGFuZ2VkRW50cnkqIG9idGFpbkNvbmZpZ3VyYXRpb25DaGFuZ2VkRW50cnkobnNlY3NfdCBldmVudFRpbWUpOworICAgICAgICBLZXlFbnRyeSogb2J0YWluS2V5RW50cnkobnNlY3NfdCBldmVudFRpbWUsCisgICAgICAgICAgICAgICAgaW50MzJfdCBkZXZpY2VJZCwgaW50MzJfdCBuYXR1cmUsIHVpbnQzMl90IHBvbGljeUZsYWdzLCBpbnQzMl90IGFjdGlvbiwKKyAgICAgICAgICAgICAgICBpbnQzMl90IGZsYWdzLCBpbnQzMl90IGtleUNvZGUsIGludDMyX3Qgc2NhbkNvZGUsIGludDMyX3QgbWV0YVN0YXRlLAorICAgICAgICAgICAgICAgIGludDMyX3QgcmVwZWF0Q291bnQsIG5zZWNzX3QgZG93blRpbWUpOworICAgICAgICBNb3Rpb25FbnRyeSogb2J0YWluTW90aW9uRW50cnkobnNlY3NfdCBldmVudFRpbWUsCisgICAgICAgICAgICAgICAgaW50MzJfdCBkZXZpY2VJZCwgaW50MzJfdCBuYXR1cmUsIHVpbnQzMl90IHBvbGljeUZsYWdzLCBpbnQzMl90IGFjdGlvbiwKKyAgICAgICAgICAgICAgICBpbnQzMl90IG1ldGFTdGF0ZSwgaW50MzJfdCBlZGdlRmxhZ3MsIGZsb2F0IHhQcmVjaXNpb24sIGZsb2F0IHlQcmVjaXNpb24sCisgICAgICAgICAgICAgICAgbnNlY3NfdCBkb3duVGltZSwgdWludDMyX3QgcG9pbnRlckNvdW50LAorICAgICAgICAgICAgICAgIGNvbnN0IGludDMyX3QqIHBvaW50ZXJJZHMsIGNvbnN0IFBvaW50ZXJDb29yZHMqIHBvaW50ZXJDb29yZHMpOworICAgICAgICBEaXNwYXRjaEVudHJ5KiBvYnRhaW5EaXNwYXRjaEVudHJ5KEV2ZW50RW50cnkqIGV2ZW50RW50cnkpOworICAgICAgICBDb21tYW5kRW50cnkqIG9idGFpbkNvbW1hbmRFbnRyeShDb21tYW5kIGNvbW1hbmQpOworCisgICAgICAgIHZvaWQgcmVsZWFzZUV2ZW50RW50cnkoRXZlbnRFbnRyeSogZW50cnkpOworICAgICAgICB2b2lkIHJlbGVhc2VDb25maWd1cmF0aW9uQ2hhbmdlZEVudHJ5KENvbmZpZ3VyYXRpb25DaGFuZ2VkRW50cnkqIGVudHJ5KTsKKyAgICAgICAgdm9pZCByZWxlYXNlS2V5RW50cnkoS2V5RW50cnkqIGVudHJ5KTsKKyAgICAgICAgdm9pZCByZWxlYXNlTW90aW9uRW50cnkoTW90aW9uRW50cnkqIGVudHJ5KTsKKyAgICAgICAgdm9pZCByZWxlYXNlRGlzcGF0Y2hFbnRyeShEaXNwYXRjaEVudHJ5KiBlbnRyeSk7CisgICAgICAgIHZvaWQgcmVsZWFzZUNvbW1hbmRFbnRyeShDb21tYW5kRW50cnkqIGVudHJ5KTsKKworICAgICAgICB2b2lkIGFwcGVuZE1vdGlvblNhbXBsZShNb3Rpb25FbnRyeSogbW90aW9uRW50cnksCisgICAgICAgICAgICAgICAgbnNlY3NfdCBldmVudFRpbWUsIGNvbnN0IFBvaW50ZXJDb29yZHMqIHBvaW50ZXJDb29yZHMpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgUG9vbDxDb25maWd1cmF0aW9uQ2hhbmdlZEVudHJ5PiBtQ29uZmlndXJhdGlvbkNoYW5nZUVudHJ5UG9vbDsKKyAgICAgICAgUG9vbDxLZXlFbnRyeT4gbUtleUVudHJ5UG9vbDsKKyAgICAgICAgUG9vbDxNb3Rpb25FbnRyeT4gbU1vdGlvbkVudHJ5UG9vbDsKKyAgICAgICAgUG9vbDxNb3Rpb25TYW1wbGU+IG1Nb3Rpb25TYW1wbGVQb29sOworICAgICAgICBQb29sPERpc3BhdGNoRW50cnk+IG1EaXNwYXRjaEVudHJ5UG9vbDsKKyAgICAgICAgUG9vbDxDb21tYW5kRW50cnk+IG1Db21tYW5kRW50cnlQb29sOworCisgICAgICAgIHZvaWQgaW5pdGlhbGl6ZUV2ZW50RW50cnkoRXZlbnRFbnRyeSogZW50cnksIGludDMyX3QgdHlwZSwgbnNlY3NfdCBldmVudFRpbWUpOworICAgIH07CisKKyAgICAvKiBNYW5hZ2VzIHRoZSBkaXNwYXRjaCBzdGF0ZSBhc3NvY2lhdGVkIHdpdGggYSBzaW5nbGUgaW5wdXQgY2hhbm5lbC4gKi8KKyAgICBjbGFzcyBDb25uZWN0aW9uIDogcHVibGljIFJlZkJhc2UgeworICAgIHByb3RlY3RlZDoKKyAgICAgICAgdmlydHVhbCB+Q29ubmVjdGlvbigpOworCisgICAgcHVibGljOgorICAgICAgICBlbnVtIFN0YXR1cyB7CisgICAgICAgICAgICAvLyBFdmVyeXRoaW5nIGlzIHBlYWNoeS4KKyAgICAgICAgICAgIFNUQVRVU19OT1JNQUwsCisgICAgICAgICAgICAvLyBBbiB1bnJlY292ZXJhYmxlIGNvbW11bmljYXRpb24gZXJyb3IgaGFzIG9jY3VycmVkLgorICAgICAgICAgICAgU1RBVFVTX0JST0tFTiwKKyAgICAgICAgICAgIC8vIFRoZSBjbGllbnQgaXMgbm90IHJlc3BvbmRpbmcuCisgICAgICAgICAgICBTVEFUVVNfTk9UX1JFU1BPTkRJTkcsCisgICAgICAgICAgICAvLyBUaGUgaW5wdXQgY2hhbm5lbCBoYXMgYmVlbiB1bnJlZ2lzdGVyZWQuCisgICAgICAgICAgICBTVEFUVVNfWk9NQklFCisgICAgICAgIH07CisKKyAgICAgICAgU3RhdHVzIHN0YXR1czsKKyAgICAgICAgc3A8SW5wdXRDaGFubmVsPiBpbnB1dENoYW5uZWw7CisgICAgICAgIElucHV0UHVibGlzaGVyIGlucHV0UHVibGlzaGVyOworICAgICAgICBRdWV1ZTxEaXNwYXRjaEVudHJ5PiBvdXRib3VuZFF1ZXVlOworICAgICAgICBuc2Vjc190IG5leHRUaW1lb3V0VGltZTsgLy8gbmV4dCB0aW1lb3V0IHRpbWUgKExPTkdfTE9OR19NQVggaWYgbm9uZSkKKworICAgICAgICBuc2Vjc190IGxhc3RFdmVudFRpbWU7IC8vIHRoZSB0aW1lIHdoZW4gdGhlIGV2ZW50IHdhcyBvcmlnaW5hbGx5IGNhcHR1cmVkCisgICAgICAgIG5zZWNzX3QgbGFzdERpc3BhdGNoVGltZTsgLy8gdGhlIHRpbWUgd2hlbiB0aGUgbGFzdCBldmVudCB3YXMgZGlzcGF0Y2hlZAorICAgICAgICBuc2Vjc190IGxhc3RBTlJUaW1lOyAvLyB0aGUgdGltZSB3aGVuIHRoZSBsYXN0IEFOUiB3YXMgcmVjb3JkZWQKKworICAgICAgICBleHBsaWNpdCBDb25uZWN0aW9uKGNvbnN0IHNwPElucHV0Q2hhbm5lbD4mIGlucHV0Q2hhbm5lbCk7CisKKyAgICAgICAgaW5saW5lIGNvbnN0IGNoYXIqIGdldElucHV0Q2hhbm5lbE5hbWUoKSBjb25zdCB7IHJldHVybiBpbnB1dENoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKTsgfQorCisgICAgICAgIGNvbnN0IGNoYXIqIGdldFN0YXR1c0xhYmVsKCkgY29uc3Q7CisKKyAgICAgICAgLy8gRmluZHMgYSBEaXNwYXRjaEVudHJ5IGluIHRoZSBvdXRib3VuZCBxdWV1ZSBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZCBldmVudC4KKyAgICAgICAgLy8gUmV0dXJucyBOVUxMIGlmIG5vdCBmb3VuZC4KKyAgICAgICAgRGlzcGF0Y2hFbnRyeSogZmluZFF1ZXVlZERpc3BhdGNoRW50cnlGb3JFdmVudChjb25zdCBFdmVudEVudHJ5KiBldmVudEVudHJ5KSBjb25zdDsKKworICAgICAgICAvLyBEZXRlcm1pbmUgd2hldGhlciB0aGlzIGNvbm5lY3Rpb24gaGFzIGEgcGVuZGluZyBzeW5jaHJvbm91cyBkaXNwYXRjaCB0YXJnZXQuCisgICAgICAgIC8vIFNpbmNlIHRoZXJlIGNhbiBvbmx5IGV2ZXIgYmUgYXQgbW9zdCBvbmUgc3VjaCB0YXJnZXQgYXQgYSB0aW1lLCBpZiB0aGVyZSBpcyBvbmUsCisgICAgICAgIC8vIGl0IG11c3QgYmUgYXQgdGhlIHRhaWwgYmVjYXVzZSBub3RoaW5nIGVsc2UgY2FuIGJlIGVucXVldWVkIGFmdGVyIGl0LgorICAgICAgICBpbmxpbmUgYm9vbCBoYXNQZW5kaW5nU3luY1RhcmdldCgpIHsKKyAgICAgICAgICAgIHJldHVybiAhIG91dGJvdW5kUXVldWUuaXNFbXB0eSgpCisgICAgICAgICAgICAgICAgICAgICYmIChvdXRib3VuZFF1ZXVlLnRhaWwucHJldi0+dGFyZ2V0RmxhZ3MgJiBJbnB1dFRhcmdldDo6RkxBR19TWU5DKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEdldHMgdGhlIHRpbWUgc2luY2UgdGhlIGN1cnJlbnQgZXZlbnQgd2FzIG9yaWdpbmFsbHkgb2J0YWluZWQgZnJvbSB0aGUgaW5wdXQgZHJpdmVyLgorICAgICAgICBpbmxpbmUgZG91YmxlIGdldEV2ZW50TGF0ZW5jeU1pbGxpcyhuc2Vjc190IGN1cnJlbnRUaW1lKSB7CisgICAgICAgICAgICByZXR1cm4gKGN1cnJlbnRUaW1lIC0gbGFzdEV2ZW50VGltZSkgLyAxMDAwMDAwLjA7CisgICAgICAgIH0KKworICAgICAgICAvLyBHZXRzIHRoZSB0aW1lIHNpbmNlIHRoZSBjdXJyZW50IGV2ZW50IGVudGVyZWQgdGhlIG91dGJvdW5kIGRpc3BhdGNoIHF1ZXVlLgorICAgICAgICBpbmxpbmUgZG91YmxlIGdldERpc3BhdGNoTGF0ZW5jeU1pbGxpcyhuc2Vjc190IGN1cnJlbnRUaW1lKSB7CisgICAgICAgICAgICByZXR1cm4gKGN1cnJlbnRUaW1lIC0gbGFzdERpc3BhdGNoVGltZSkgLyAxMDAwMDAwLjA7CisgICAgICAgIH0KKworICAgICAgICAvLyBHZXRzIHRoZSB0aW1lIHNpbmNlIHRoZSBjdXJyZW50IGV2ZW50IEFOUiB3YXMgZGVjbGFyZWQsIGlmIGFwcGxpY2FibGUuCisgICAgICAgIGlubGluZSBkb3VibGUgZ2V0QU5STGF0ZW5jeU1pbGxpcyhuc2Vjc190IGN1cnJlbnRUaW1lKSB7CisgICAgICAgICAgICByZXR1cm4gKGN1cnJlbnRUaW1lIC0gbGFzdEFOUlRpbWUpIC8gMTAwMDAwMC4wOworICAgICAgICB9CisKKyAgICAgICAgc3RhdHVzX3QgaW5pdGlhbGl6ZSgpOworCisgICAgICAgIHZvaWQgc2V0TmV4dFRpbWVvdXRUaW1lKG5zZWNzX3QgY3VycmVudFRpbWUsIG5zZWNzX3QgdGltZW91dCk7CisgICAgfTsKKworICAgIHNwPElucHV0RGlzcGF0Y2hlclBvbGljeUludGVyZmFjZT4gbVBvbGljeTsKKworICAgIE11dGV4IG1Mb2NrOworCisgICAgQWxsb2NhdG9yIG1BbGxvY2F0b3I7CisgICAgc3A8UG9sbExvb3A+IG1Qb2xsTG9vcDsKKworICAgIFF1ZXVlPEV2ZW50RW50cnk+IG1JbmJvdW5kUXVldWU7CisgICAgUXVldWU8Q29tbWFuZEVudHJ5PiBtQ29tbWFuZFF1ZXVlOworCisgICAgLy8gQWxsIHJlZ2lzdGVyZWQgY29ubmVjdGlvbnMgbWFwcGVkIGJ5IHJlY2VpdmUgcGlwZSBmaWxlIGRlc2NyaXB0b3IuCisgICAgS2V5ZWRWZWN0b3I8aW50LCBzcDxDb25uZWN0aW9uPiA+IG1Db25uZWN0aW9uc0J5UmVjZWl2ZUZkOworCisgICAgLy8gQWN0aXZlIGNvbm5lY3Rpb25zIGFyZSBjb25uZWN0aW9ucyB0aGF0IGhhdmUgYSBub24tZW1wdHkgb3V0Ym91bmQgcXVldWUuCisgICAgLy8gV2UgZG9uJ3QgdXNlIGEgcmVmLWNvdW50ZWQgcG9pbnRlciBoZXJlIGJlY2F1c2Ugd2UgZXhwbGljaXRseSBhYm9ydCBjb25uZWN0aW9ucworICAgIC8vIGR1cmluZyB1bnJlZ2lzdHJhdGlvbiB3aGljaCBjYXVzZXMgdGhlIGNvbm5lY3Rpb24ncyBvdXRib3VuZCBxdWV1ZSB0byBiZSBjbGVhcmVkCisgICAgLy8gYW5kIHRoZSBjb25uZWN0aW9uIGl0c2VsZiB0byBiZSBkZWFjdGl2YXRlZC4KKyAgICBWZWN0b3I8Q29ubmVjdGlvbio+IG1BY3RpdmVDb25uZWN0aW9uczsKKworICAgIC8vIExpc3Qgb2YgY29ubmVjdGlvbnMgdGhhdCBoYXZlIHRpbWVkIG91dC4gIE9ubHkgdXNlZCBieSBkaXNwYXRjaE9uY2UoKQorICAgIC8vIFdlIGRvbid0IHVzZSBhIHJlZi1jb3VudGVkIHBvaW50ZXIgaGVyZSBiZWNhdXNlIGl0IGlzIG5vdCBwb3NzaWJsZSBmb3IgYSBjb25uZWN0aW9uCisgICAgLy8gdG8gYmUgdW5yZWdpc3RlcmVkIHdoaWxlIHByb2Nlc3NpbmcgdGltZWQgb3V0IGNvbm5lY3Rpb25zIHNpbmNlIHdlIGhvbGQgdGhlIGxvY2sgZm9yCisgICAgLy8gdGhlIGR1cmF0aW9uLgorICAgIFZlY3RvcjxDb25uZWN0aW9uKj4gbVRpbWVkT3V0Q29ubmVjdGlvbnM7CisKKyAgICAvLyBQcmVhbGxvY2F0ZWQga2V5IGFuZCBtb3Rpb24gZXZlbnQgb2JqZWN0cyB1c2VkIG9ubHkgdG8gYXNrIHRoZSBpbnB1dCBkaXNwYXRjaGVyIHBvbGljeQorICAgIC8vIGZvciB0aGUgdGFyZ2V0cyBvZiBhbiBldmVudCB0aGF0IGlzIHRvIGJlIGRpc3BhdGNoZWQuCisgICAgS2V5RXZlbnQgbVJldXNhYmxlS2V5RXZlbnQ7CisgICAgTW90aW9uRXZlbnQgbVJldXNhYmxlTW90aW9uRXZlbnQ7CisKKyAgICAvLyBUaGUgaW5wdXQgdGFyZ2V0cyB0aGF0IHdlcmUgbW9zdCByZWNlbnRseSBpZGVudGlmaWVkIGZvciBkaXNwYXRjaC4KKyAgICAvLyBJZiB0aGVyZSBpcyBhIHN5bmNocm9ub3VzIGV2ZW50IGRpc3BhdGNoIGluIHByb2dyZXNzLCB0aGUgY3VycmVudCBpbnB1dCB0YXJnZXRzIHdpbGwKKyAgICAvLyByZW1haW4gdW5jaGFuZ2VkIHVudGlsIHRoZSBkaXNwYXRjaCBoYXMgY29tcGxldGVkIG9yIGJlZW4gYWJvcnRlZC4KKyAgICBWZWN0b3I8SW5wdXRUYXJnZXQ+IG1DdXJyZW50SW5wdXRUYXJnZXRzOworICAgIGJvb2wgbUN1cnJlbnRJbnB1dFRhcmdldHNWYWxpZDsgLy8gZmFsc2Ugd2hpbGUgdGFyZ2V0cyBhcmUgYmVpbmcgcmVjb21wdXRlZAorCisgICAgLy8gRXZlbnQgaW5qZWN0aW9uIGFuZCBzeW5jaHJvbml6YXRpb24uCisgICAgQ29uZGl0aW9uIG1JbmplY3Rpb25SZXN1bHRBdmFpbGFibGVDb25kaXRpb247CisgICAgQ29uZGl0aW9uIG1GdWxseVN5bmNocm9uaXplZENvbmRpdGlvbjsKKyAgICBib29sIGlzRnVsbHlTeW5jaHJvbml6ZWRMb2NrZWQoKTsKKyAgICBFdmVudEVudHJ5KiBjcmVhdGVFbnRyeUZyb21JbnB1dEV2ZW50TG9ja2VkKGNvbnN0IElucHV0RXZlbnQqIGV2ZW50KTsKKyAgICB2b2lkIHNldEluamVjdGlvblJlc3VsdExvY2tlZChFdmVudEVudHJ5KiBlbnRyeSwgaW50MzJfdCBpbmplY3Rpb25SZXN1bHQpOworCisgICAgLy8gS2V5IHJlcGVhdCB0cmFja2luZy4KKyAgICAvLyBYWFggTW92ZSB0aGlzIHVwIHRvIHRoZSBpbnB1dCByZWFkZXIgaW5zdGVhZC4KKyAgICBzdHJ1Y3QgS2V5UmVwZWF0U3RhdGUgeworICAgICAgICBLZXlFbnRyeSogbGFzdEtleUVudHJ5OyAvLyBvciBudWxsIGlmIG5vIHJlcGVhdAorICAgICAgICBuc2Vjc190IG5leHRSZXBlYXRUaW1lOworICAgIH0gbUtleVJlcGVhdFN0YXRlOworCisgICAgdm9pZCByZXNldEtleVJlcGVhdExvY2tlZCgpOworCisgICAgLy8gRGVmZXJyZWQgY29tbWFuZCBwcm9jZXNzaW5nLgorICAgIGJvb2wgcnVuQ29tbWFuZHNMb2NrZWRJbnRlcnJ1cHRpYmxlKCk7CisgICAgQ29tbWFuZEVudHJ5KiBwb3N0Q29tbWFuZExvY2tlZChDb21tYW5kIGNvbW1hbmQpOworCisgICAgLy8gUHJvY2VzcyBldmVudHMgdGhhdCBoYXZlIGp1c3QgYmVlbiBkZXF1ZXVlZCBmcm9tIHRoZSBoZWFkIG9mIHRoZSBpbnB1dCBxdWV1ZS4KKyAgICB2b2lkIHByb2Nlc3NDb25maWd1cmF0aW9uQ2hhbmdlZExvY2tlZEludGVycnVwdGlibGUoCisgICAgICAgICAgICBuc2Vjc190IGN1cnJlbnRUaW1lLCBDb25maWd1cmF0aW9uQ2hhbmdlZEVudHJ5KiBlbnRyeSk7CisgICAgdm9pZCBwcm9jZXNzS2V5TG9ja2VkSW50ZXJydXB0aWJsZSgKKyAgICAgICAgICAgIG5zZWNzX3QgY3VycmVudFRpbWUsIEtleUVudHJ5KiBlbnRyeSwgbnNlY3NfdCBrZXlSZXBlYXRUaW1lb3V0KTsKKyAgICB2b2lkIHByb2Nlc3NLZXlSZXBlYXRMb2NrZWRJbnRlcnJ1cHRpYmxlKAorICAgICAgICAgICAgbnNlY3NfdCBjdXJyZW50VGltZSwgbnNlY3NfdCBrZXlSZXBlYXRUaW1lb3V0KTsKKyAgICB2b2lkIHByb2Nlc3NNb3Rpb25Mb2NrZWRJbnRlcnJ1cHRpYmxlKAorICAgICAgICAgICAgbnNlY3NfdCBjdXJyZW50VGltZSwgTW90aW9uRW50cnkqIGVudHJ5KTsKKworICAgIC8vIElkZW50aWZ5IGlucHV0IHRhcmdldHMgZm9yIGFuIGV2ZW50IGFuZCBkaXNwYXRjaCB0byB0aGVtLgorICAgIHZvaWQgaWRlbnRpZnlJbnB1dFRhcmdldHNBbmREaXNwYXRjaEtleUxvY2tlZEludGVycnVwdGlibGUoCisgICAgICAgICAgICBuc2Vjc190IGN1cnJlbnRUaW1lLCBLZXlFbnRyeSogZW50cnkpOworICAgIHZvaWQgaWRlbnRpZnlJbnB1dFRhcmdldHNBbmREaXNwYXRjaE1vdGlvbkxvY2tlZEludGVycnVwdGlibGUoCisgICAgICAgICAgICBuc2Vjc190IGN1cnJlbnRUaW1lLCBNb3Rpb25FbnRyeSogZW50cnkpOworICAgIHZvaWQgZGlzcGF0Y2hFdmVudFRvQ3VycmVudElucHV0VGFyZ2V0c0xvY2tlZCgKKyAgICAgICAgICAgIG5zZWNzX3QgY3VycmVudFRpbWUsIEV2ZW50RW50cnkqIGVudHJ5LCBib29sIHJlc3VtZVdpdGhBcHBlbmRlZE1vdGlvblNhbXBsZSk7CisKKyAgICAvLyBNYW5hZ2UgdGhlIGRpc3BhdGNoIGN5Y2xlIGZvciBhIHNpbmdsZSBjb25uZWN0aW9uLgorICAgIC8vIFRoZXNlIG1ldGhvZHMgYXJlIGRlbGliZXJhdGVseSBub3QgSW50ZXJydXB0aWJsZSBiZWNhdXNlIGRvaW5nIGFsbCBvZiB0aGUgd29yaworICAgIC8vIHdpdGggdGhlIG11dGV4IGhlbGQgbWFrZXMgaXQgZWFzaWVyIHRvIGVuc3VyZSB0aGF0IGNvbm5lY3Rpb24gaW52YXJpYW50cyBhcmUgbWFpbnRhaW5lZC4KKyAgICAvLyBJZiBuZWVkZWQsIHRoZSBtZXRob2RzIHBvc3QgY29tbWFuZHMgdG8gcnVuIGxhdGVyIG9uY2UgdGhlIGNyaXRpY2FsIGJpdHMgYXJlIGRvbmUuCisgICAgdm9pZCBwcmVwYXJlRGlzcGF0Y2hDeWNsZUxvY2tlZChuc2Vjc190IGN1cnJlbnRUaW1lLCBjb25zdCBzcDxDb25uZWN0aW9uPiYgY29ubmVjdGlvbiwKKyAgICAgICAgICAgIEV2ZW50RW50cnkqIGV2ZW50RW50cnksIGNvbnN0IElucHV0VGFyZ2V0KiBpbnB1dFRhcmdldCwKKyAgICAgICAgICAgIGJvb2wgcmVzdW1lV2l0aEFwcGVuZGVkTW90aW9uU2FtcGxlKTsKKyAgICB2b2lkIHN0YXJ0RGlzcGF0Y2hDeWNsZUxvY2tlZChuc2Vjc190IGN1cnJlbnRUaW1lLCBjb25zdCBzcDxDb25uZWN0aW9uPiYgY29ubmVjdGlvbik7CisgICAgdm9pZCBmaW5pc2hEaXNwYXRjaEN5Y2xlTG9ja2VkKG5zZWNzX3QgY3VycmVudFRpbWUsIGNvbnN0IHNwPENvbm5lY3Rpb24+JiBjb25uZWN0aW9uKTsKKyAgICB2b2lkIHRpbWVvdXREaXNwYXRjaEN5Y2xlTG9ja2VkKG5zZWNzX3QgY3VycmVudFRpbWUsIGNvbnN0IHNwPENvbm5lY3Rpb24+JiBjb25uZWN0aW9uKTsKKyAgICB2b2lkIHJlc3VtZUFmdGVyVGltZW91dERpc3BhdGNoQ3ljbGVMb2NrZWQobnNlY3NfdCBjdXJyZW50VGltZSwKKyAgICAgICAgICAgIGNvbnN0IHNwPENvbm5lY3Rpb24+JiBjb25uZWN0aW9uLCBuc2Vjc190IG5ld1RpbWVvdXQpOworICAgIHZvaWQgYWJvcnREaXNwYXRjaEN5Y2xlTG9ja2VkKG5zZWNzX3QgY3VycmVudFRpbWUsIGNvbnN0IHNwPENvbm5lY3Rpb24+JiBjb25uZWN0aW9uLAorICAgICAgICAgICAgYm9vbCBicm9rZW4pOworICAgIHN0YXRpYyBib29sIGhhbmRsZVJlY2VpdmVDYWxsYmFjayhpbnQgcmVjZWl2ZUZkLCBpbnQgZXZlbnRzLCB2b2lkKiBkYXRhKTsKKworICAgIC8vIEFkZCBvciByZW1vdmUgYSBjb25uZWN0aW9uIHRvIHRoZSBtQWN0aXZlQ29ubmVjdGlvbnMgdmVjdG9yLgorICAgIHZvaWQgYWN0aXZhdGVDb25uZWN0aW9uTG9ja2VkKENvbm5lY3Rpb24qIGNvbm5lY3Rpb24pOworICAgIHZvaWQgZGVhY3RpdmF0ZUNvbm5lY3Rpb25Mb2NrZWQoQ29ubmVjdGlvbiogY29ubmVjdGlvbik7CisKKyAgICAvLyBJbnRlcmVzdGluZyBldmVudHMgdGhhdCB3ZSBtaWdodCBsaWtlIHRvIGxvZyBvciB0ZWxsIHRoZSBmcmFtZXdvcmsgYWJvdXQuCisgICAgdm9pZCBvbkRpc3BhdGNoQ3ljbGVTdGFydGVkTG9ja2VkKAorICAgICAgICAgICAgbnNlY3NfdCBjdXJyZW50VGltZSwgY29uc3Qgc3A8Q29ubmVjdGlvbj4mIGNvbm5lY3Rpb24pOworICAgIHZvaWQgb25EaXNwYXRjaEN5Y2xlRmluaXNoZWRMb2NrZWQoCisgICAgICAgICAgICBuc2Vjc190IGN1cnJlbnRUaW1lLCBjb25zdCBzcDxDb25uZWN0aW9uPiYgY29ubmVjdGlvbiwgYm9vbCByZWNvdmVyZWRGcm9tQU5SKTsKKyAgICB2b2lkIG9uRGlzcGF0Y2hDeWNsZUFOUkxvY2tlZCgKKyAgICAgICAgICAgIG5zZWNzX3QgY3VycmVudFRpbWUsIGNvbnN0IHNwPENvbm5lY3Rpb24+JiBjb25uZWN0aW9uKTsKKyAgICB2b2lkIG9uRGlzcGF0Y2hDeWNsZUJyb2tlbkxvY2tlZCgKKyAgICAgICAgICAgIG5zZWNzX3QgY3VycmVudFRpbWUsIGNvbnN0IHNwPENvbm5lY3Rpb24+JiBjb25uZWN0aW9uKTsKKworICAgIC8vIE91dGJvdW5kIHBvbGljeSBpbnRlcmFjdGlvbnMuCisgICAgdm9pZCBkb05vdGlmeUlucHV0Q2hhbm5lbEJyb2tlbkxvY2tlZEludGVycnVwdGlibGUoQ29tbWFuZEVudHJ5KiBjb21tYW5kRW50cnkpOworICAgIHZvaWQgZG9Ob3RpZnlJbnB1dENoYW5uZWxBTlJMb2NrZWRJbnRlcnJ1cHRpYmxlKENvbW1hbmRFbnRyeSogY29tbWFuZEVudHJ5KTsKKyAgICB2b2lkIGRvTm90aWZ5SW5wdXRDaGFubmVsUmVjb3ZlcmVkRnJvbUFOUkxvY2tlZEludGVycnVwdGlibGUoQ29tbWFuZEVudHJ5KiBjb21tYW5kRW50cnkpOworfTsKKworLyogRW5xdWV1ZXMgYW5kIGRpc3BhdGNoZXMgaW5wdXQgZXZlbnRzLCBlbmRsZXNzbHkuICovCitjbGFzcyBJbnB1dERpc3BhdGNoZXJUaHJlYWQgOiBwdWJsaWMgVGhyZWFkIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBJbnB1dERpc3BhdGNoZXJUaHJlYWQoY29uc3Qgc3A8SW5wdXREaXNwYXRjaGVySW50ZXJmYWNlPiYgZGlzcGF0Y2hlcik7CisgICAgfklucHV0RGlzcGF0Y2hlclRocmVhZCgpOworCitwcml2YXRlOgorICAgIHZpcnR1YWwgYm9vbCB0aHJlYWRMb29wKCk7CisKKyAgICBzcDxJbnB1dERpc3BhdGNoZXJJbnRlcmZhY2U+IG1EaXNwYXRjaGVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCisjZW5kaWYgLy8gX1VJX0lOUFVUX0RJU1BBVENIRVJfUFJJVl9ICmRpZmYgLS1naXQgYS9pbmNsdWRlL3VpL0lucHV0TWFuYWdlci5oIGIvaW5jbHVkZS91aS9JbnB1dE1hbmFnZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzU1MjM4Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS91aS9JbnB1dE1hbmFnZXIuaApAQCAtMCwwICsxLDE2NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgX1VJX0lOUFVUX01BTkFHRVJfSAorI2RlZmluZSBfVUlfSU5QVVRfTUFOQUdFUl9ICisKKy8qKgorICogTmF0aXZlIGlucHV0IG1hbmFnZXIuCisgKi8KKworI2luY2x1ZGUgPHVpL0V2ZW50SHViLmg+CisjaW5jbHVkZSA8dWkvSW5wdXQuaD4KKyNpbmNsdWRlIDx1dGlscy9FcnJvcnMuaD4KKyNpbmNsdWRlIDx1dGlscy9WZWN0b3IuaD4KKyNpbmNsdWRlIDx1dGlscy9UaW1lcnMuaD4KKyNpbmNsdWRlIDx1dGlscy9SZWZCYXNlLmg+CisjaW5jbHVkZSA8dXRpbHMvU3RyaW5nOC5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK2NsYXNzIElucHV0Q2hhbm5lbDsKKworY2xhc3MgSW5wdXRSZWFkZXJJbnRlcmZhY2U7CitjbGFzcyBJbnB1dFJlYWRlclBvbGljeUludGVyZmFjZTsKK2NsYXNzIElucHV0UmVhZGVyVGhyZWFkOworCitjbGFzcyBJbnB1dERpc3BhdGNoZXJJbnRlcmZhY2U7CitjbGFzcyBJbnB1dERpc3BhdGNoZXJQb2xpY3lJbnRlcmZhY2U7CitjbGFzcyBJbnB1dERpc3BhdGNoZXJUaHJlYWQ7CisKKy8qCisgKiBUaGUgaW5wdXQgbWFuYWdlciBpcyB0aGUgY29yZSBvZiB0aGUgc3lzdGVtIGV2ZW50IHByb2Nlc3NpbmcuCisgKgorICogVGhlIGlucHV0IG1hbmFnZXIgdXNlcyB0d28gdGhyZWFkcy4KKyAqCisgKiAxLiBUaGUgSW5wdXRSZWFkZXJUaHJlYWQgKGNhbGxlZCAiSW5wdXRSZWFkZXIiKSByZWFkcyBhbmQgcHJlcHJvY2Vzc2VzIHJhdyBpbnB1dCBldmVudHMsCisgKiAgICBhcHBsaWVzIHBvbGljeSwgYW5kIHBvc3RzIG1lc3NhZ2VzIHRvIGEgcXVldWUgbWFuYWdlZCBieSB0aGUgRGlzcGF0Y2hlclRocmVhZC4KKyAqIDIuIFRoZSBJbnB1dERpc3BhdGNoZXJUaHJlYWQgKGNhbGxlZCAiSW5wdXREaXNwYXRjaGVyIikgdGhyZWFkIHdhaXRzIGZvciBuZXcgZXZlbnRzIG9uIHRoZQorICogICAgcXVldWUgYW5kIGFzeW5jaHJvbm91c2x5IGRpc3BhdGNoZXMgdGhlbSB0byBhcHBsaWNhdGlvbnMuCisgKgorICogQnkgZGVzaWduLCB0aGUgSW5wdXRSZWFkZXJUaHJlYWQgY2xhc3MgYW5kIElucHV0RGlzcGF0Y2hlclRocmVhZCBjbGFzcyBkbyBub3Qgc2hhcmUgYW55CisgKiBpbnRlcm5hbCBzdGF0ZS4gIE1vcmVvdmVyLCBhbGwgY29tbXVuaWNhdGlvbiBpcyBkb25lIG9uZSB3YXkgZnJvbSB0aGUgSW5wdXRSZWFkZXJUaHJlYWQKKyAqIGludG8gdGhlIElucHV0RGlzcGF0Y2hlclRocmVhZCBhbmQgbmV2ZXIgdGhlIHJldmVyc2UuICBCb3RoIGNsYXNzZXMgbWF5IGludGVyYWN0IHdpdGggdGhlCisgKiBJbnB1dERpc3BhdGNoUG9saWN5LCBob3dldmVyLgorICoKKyAqIFRoZSBJbnB1dE1hbmFnZXIgY2xhc3MgbmV2ZXIgbWFrZXMgYW55IGNhbGxzIGludG8gSmF2YSBpdHNlbGYuICBJbnN0ZWFkLCB0aGUKKyAqIElucHV0RGlzcGF0Y2hQb2xpY3kgaXMgcmVzcG9uc2libGUgZm9yIHBlcmZvcm1pbmcgYWxsIGV4dGVybmFsIGludGVyYWN0aW9ucyB3aXRoIHRoZQorICogc3lzdGVtLCBpbmNsdWRpbmcgY2FsbGluZyBEVk0gc2VydmljZXMuCisgKi8KK2NsYXNzIElucHV0TWFuYWdlckludGVyZmFjZSA6IHB1YmxpYyB2aXJ0dWFsIFJlZkJhc2UgeworcHJvdGVjdGVkOgorICAgIElucHV0TWFuYWdlckludGVyZmFjZSgpIHsgfQorICAgIHZpcnR1YWwgfklucHV0TWFuYWdlckludGVyZmFjZSgpIHsgfQorCitwdWJsaWM6CisgICAgLyogU3RhcnRzIHRoZSBpbnB1dCBtYW5hZ2VyIHRocmVhZHMuICovCisgICAgdmlydHVhbCBzdGF0dXNfdCBzdGFydCgpID0gMDsKKworICAgIC8qIFN0b3BzIHRoZSBpbnB1dCBtYW5hZ2VyIHRocmVhZHMgYW5kIHdhaXRzIGZvciB0aGVtIHRvIGV4aXQuICovCisgICAgdmlydHVhbCBzdGF0dXNfdCBzdG9wKCkgPSAwOworCisgICAgLyogUmVnaXN0ZXJzIGFuIGlucHV0IGNoYW5uZWwgcHJpb3IgdG8gdXNpbmcgaXQgYXMgdGhlIHRhcmdldCBvZiBhbiBldmVudC4gKi8KKyAgICB2aXJ0dWFsIHN0YXR1c190IHJlZ2lzdGVySW5wdXRDaGFubmVsKGNvbnN0IHNwPElucHV0Q2hhbm5lbD4mIGlucHV0Q2hhbm5lbCkgPSAwOworCisgICAgLyogVW5yZWdpc3RlcnMgYW4gaW5wdXQgY2hhbm5lbC4gKi8KKyAgICB2aXJ0dWFsIHN0YXR1c190IHVucmVnaXN0ZXJJbnB1dENoYW5uZWwoY29uc3Qgc3A8SW5wdXRDaGFubmVsPiYgaW5wdXRDaGFubmVsKSA9IDA7CisKKyAgICAvKiBJbmplY3RzIGFuIGlucHV0IGV2ZW50IGFuZCBvcHRpb25hbGx5IHdhaXRzIGZvciBzeW5jLgorICAgICAqIFRoaXMgbWV0aG9kIG1heSBibG9jayBldmVuIGlmIHN5bmMgaXMgZmFsc2UgYmVjYXVzZSBpdCBtdXN0IHdhaXQgZm9yIHByZXZpb3VzIGV2ZW50cworICAgICAqIHRvIGJlIGRpc3BhdGNoZWQgYmVmb3JlIGl0IGNhbiBkZXRlcm1pbmUgd2hldGhlciBpbnB1dCBldmVudCBpbmplY3Rpb24gd2lsbCBiZQorICAgICAqIHBlcm1pdHRlZCBiYXNlZCBvbiB0aGUgY3VycmVudCBpbnB1dCBmb2N1cy4KKyAgICAgKiBSZXR1cm5zIG9uZSBvZiB0aGUgSU5QVVRfRVZFTlRfSU5KRUNUSU9OX1hYWCBjb25zdGFudHMuCisgICAgICovCisgICAgdmlydHVhbCBpbnQzMl90IGluamVjdElucHV0RXZlbnQoY29uc3QgSW5wdXRFdmVudCogZXZlbnQsCisgICAgICAgICAgICBpbnQzMl90IGluamVjdG9yUGlkLCBpbnQzMl90IGluamVjdG9yVWlkLCBib29sIHN5bmMsIGludDMyX3QgdGltZW91dE1pbGxpcykgPSAwOworCisgICAgLyogUHJlZW1wdHMgaW5wdXQgZGlzcGF0Y2ggaW4gcHJvZ3Jlc3MgYnkgbWFraW5nIHBlbmRpbmcgc3luY2hyb25vdXMKKyAgICAgKiBkaXNwYXRjaGVzIGFzeW5jaHJvbm91cyBpbnN0ZWFkLiAgVGhpcyBtZXRob2QgaXMgZ2VuZXJhbGx5IGNhbGxlZCBkdXJpbmcgYSBmb2N1cworICAgICAqIHRyYW5zaXRpb24gZnJvbSBvbmUgYXBwbGljYXRpb24gdG8gdGhlIG5leHQgc28gYXMgdG8gZW5hYmxlIHRoZSBuZXcgYXBwbGljYXRpb24KKyAgICAgKiB0byBzdGFydCByZWNlaXZpbmcgaW5wdXQgYXMgc29vbiBhcyBwb3NzaWJsZSB3aXRob3V0IGhhdmluZyB0byB3YWl0IGZvciB0aGUKKyAgICAgKiBvbGQgYXBwbGljYXRpb24gdG8gZmluaXNoIHVwLgorICAgICAqLworICAgIHZpcnR1YWwgdm9pZCBwcmVlbXB0SW5wdXREaXNwYXRjaCgpID0gMDsKKworICAgIC8qIEdldHMgaW5wdXQgZGV2aWNlIGNvbmZpZ3VyYXRpb24uICovCisgICAgdmlydHVhbCB2b2lkIGdldElucHV0Q29uZmlndXJhdGlvbihJbnB1dENvbmZpZ3VyYXRpb24qIG91dENvbmZpZ3VyYXRpb24pIGNvbnN0ID0gMDsKKworICAgIC8qCisgICAgICogUXVlcmllcyBjdXJyZW50IGlucHV0IHN0YXRlLgorICAgICAqICAgZGV2aWNlSWQgbWF5IGJlIC0xIHRvIHNlYXJjaCBmb3IgdGhlIGRldmljZSBhdXRvbWF0aWNhbGx5LCBmaWx0ZXJlZCBieSBjbGFzcy4KKyAgICAgKiAgIGRldmljZUNsYXNzZXMgbWF5IGJlIC0xIHRvIGlnbm9yZSBkZXZpY2UgY2xhc3Mgd2hpbGUgc2VhcmNoaW5nLgorICAgICAqLworICAgIHZpcnR1YWwgaW50MzJfdCBnZXRTY2FuQ29kZVN0YXRlKGludDMyX3QgZGV2aWNlSWQsIGludDMyX3QgZGV2aWNlQ2xhc3NlcywKKyAgICAgICAgICAgIGludDMyX3Qgc2NhbkNvZGUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludDMyX3QgZ2V0S2V5Q29kZVN0YXRlKGludDMyX3QgZGV2aWNlSWQsIGludDMyX3QgZGV2aWNlQ2xhc3NlcywKKyAgICAgICAgICAgIGludDMyX3Qga2V5Q29kZSkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgaW50MzJfdCBnZXRTd2l0Y2hTdGF0ZShpbnQzMl90IGRldmljZUlkLCBpbnQzMl90IGRldmljZUNsYXNzZXMsCisgICAgICAgICAgICBpbnQzMl90IHN3KSBjb25zdCA9IDA7CisKKyAgICAvKiBEZXRlcm1pbmVzIHdoZXRoZXIgcGh5c2ljYWwga2V5cyBleGlzdCBmb3IgdGhlIGdpdmVuIGZyYW1ld29yay1kb21haW4ga2V5IGNvZGVzLiAqLworICAgIHZpcnR1YWwgYm9vbCBoYXNLZXlzKHNpemVfdCBudW1Db2RlcywgY29uc3QgaW50MzJfdCoga2V5Q29kZXMsIHVpbnQ4X3QqIG91dEZsYWdzKSBjb25zdCA9IDA7Cit9OworCitjbGFzcyBJbnB1dE1hbmFnZXIgOiBwdWJsaWMgSW5wdXRNYW5hZ2VySW50ZXJmYWNlIHsKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5JbnB1dE1hbmFnZXIoKTsKKworcHVibGljOgorICAgIElucHV0TWFuYWdlcigKKyAgICAgICAgICAgIGNvbnN0IHNwPEV2ZW50SHViSW50ZXJmYWNlPiYgZXZlbnRIdWIsCisgICAgICAgICAgICBjb25zdCBzcDxJbnB1dFJlYWRlclBvbGljeUludGVyZmFjZT4mIHJlYWRlclBvbGljeSwKKyAgICAgICAgICAgIGNvbnN0IHNwPElucHV0RGlzcGF0Y2hlclBvbGljeUludGVyZmFjZT4mIGRpc3BhdGNoZXJQb2xpY3kpOworCisgICAgLy8gKHVzZWQgZm9yIHRlc3RpbmcgcHVycG9zZXMpCisgICAgSW5wdXRNYW5hZ2VyKAorICAgICAgICAgICAgY29uc3Qgc3A8SW5wdXRSZWFkZXJJbnRlcmZhY2U+JiByZWFkZXIsCisgICAgICAgICAgICBjb25zdCBzcDxJbnB1dERpc3BhdGNoZXJJbnRlcmZhY2U+JiBkaXNwYXRjaGVyKTsKKworICAgIHZpcnR1YWwgc3RhdHVzX3Qgc3RhcnQoKTsKKyAgICB2aXJ0dWFsIHN0YXR1c190IHN0b3AoKTsKKworICAgIHZpcnR1YWwgc3RhdHVzX3QgcmVnaXN0ZXJJbnB1dENoYW5uZWwoY29uc3Qgc3A8SW5wdXRDaGFubmVsPiYgaW5wdXRDaGFubmVsKTsKKyAgICB2aXJ0dWFsIHN0YXR1c190IHVucmVnaXN0ZXJJbnB1dENoYW5uZWwoY29uc3Qgc3A8SW5wdXRDaGFubmVsPiYgaW5wdXRDaGFubmVsKTsKKworICAgIHZpcnR1YWwgaW50MzJfdCBpbmplY3RJbnB1dEV2ZW50KGNvbnN0IElucHV0RXZlbnQqIGV2ZW50LAorICAgICAgICAgICAgaW50MzJfdCBpbmplY3RvclBpZCwgaW50MzJfdCBpbmplY3RvclVpZCwgYm9vbCBzeW5jLCBpbnQzMl90IHRpbWVvdXRNaWxsaXMpOworCisgICAgdmlydHVhbCB2b2lkIHByZWVtcHRJbnB1dERpc3BhdGNoKCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0SW5wdXRDb25maWd1cmF0aW9uKElucHV0Q29uZmlndXJhdGlvbiogb3V0Q29uZmlndXJhdGlvbikgY29uc3Q7CisgICAgdmlydHVhbCBpbnQzMl90IGdldFNjYW5Db2RlU3RhdGUoaW50MzJfdCBkZXZpY2VJZCwgaW50MzJfdCBkZXZpY2VDbGFzc2VzLAorICAgICAgICAgICAgaW50MzJfdCBzY2FuQ29kZSkgY29uc3Q7CisgICAgdmlydHVhbCBpbnQzMl90IGdldEtleUNvZGVTdGF0ZShpbnQzMl90IGRldmljZUlkLCBpbnQzMl90IGRldmljZUNsYXNzZXMsCisgICAgICAgICAgICBpbnQzMl90IGtleUNvZGUpIGNvbnN0OworICAgIHZpcnR1YWwgaW50MzJfdCBnZXRTd2l0Y2hTdGF0ZShpbnQzMl90IGRldmljZUlkLCBpbnQzMl90IGRldmljZUNsYXNzZXMsCisgICAgICAgICAgICBpbnQzMl90IHN3KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgaGFzS2V5cyhzaXplX3QgbnVtQ29kZXMsIGNvbnN0IGludDMyX3QqIGtleUNvZGVzLCB1aW50OF90KiBvdXRGbGFncykgY29uc3Q7CisKK3ByaXZhdGU6CisgICAgc3A8SW5wdXRSZWFkZXJJbnRlcmZhY2U+IG1SZWFkZXI7CisgICAgc3A8SW5wdXRSZWFkZXJUaHJlYWQ+IG1SZWFkZXJUaHJlYWQ7CisKKyAgICBzcDxJbnB1dERpc3BhdGNoZXJJbnRlcmZhY2U+IG1EaXNwYXRjaGVyOworICAgIHNwPElucHV0RGlzcGF0Y2hlclRocmVhZD4gbURpc3BhdGNoZXJUaHJlYWQ7CisKKyAgICB2b2lkIGluaXRpYWxpemUoKTsKK307CisKK30gLy8gbmFtZXNwYWNlIGFuZHJvaWQKKworI2VuZGlmIC8vIF9VSV9JTlBVVF9NQU5BR0VSX0gKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWkvSW5wdXRSZWFkZXIuaCBiL2luY2x1ZGUvdWkvSW5wdXRSZWFkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wM2M4MTEyCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS91aS9JbnB1dFJlYWRlci5oCkBAIC0wLDAgKzEsNjM1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2lmbmRlZiBfVUlfSU5QVVRfUkVBREVSX0gKKyNkZWZpbmUgX1VJX0lOUFVUX1JFQURFUl9ICisKKyNpbmNsdWRlIDx1aS9FdmVudEh1Yi5oPgorI2luY2x1ZGUgPHVpL0lucHV0Lmg+CisjaW5jbHVkZSA8dWkvSW5wdXREaXNwYXRjaGVyLmg+CisjaW5jbHVkZSA8dXRpbHMvS2V5ZWRWZWN0b3IuaD4KKyNpbmNsdWRlIDx1dGlscy90aHJlYWRzLmg+CisjaW5jbHVkZSA8dXRpbHMvVGltZXJzLmg+CisjaW5jbHVkZSA8dXRpbHMvUmVmQmFzZS5oPgorI2luY2x1ZGUgPHV0aWxzL1N0cmluZzguaD4KKyNpbmNsdWRlIDx1dGlscy9CaXRTZXQuaD4KKworI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorCisvKiBNYXhpbXVtIHBvaW50ZXIgaWQgdmFsdWUgc3VwcG9ydGVkLgorICogKFRoaXMgaXMgbGltaXRlZCBieSBvdXIgdXNlIG9mIEJpdFNldDMyIHRvIHRyYWNrIHBvaW50ZXIgYXNzaWdubWVudHMuKSAqLworI2RlZmluZSBNQVhfUE9JTlRFUl9JRCAzMgorCisvKiBNYXhpbXVtIG51bWJlciBvZiBoaXN0b3JpY2FsIHNhbXBsZXMgdG8gYXZlcmFnZS4gKi8KKyNkZWZpbmUgQVZFUkFHSU5HX0hJU1RPUllfU0laRSA1CisKKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitleHRlcm4gaW50MzJfdCB1cGRhdGVNZXRhU3RhdGUoaW50MzJfdCBrZXlDb2RlLCBib29sIGRvd24sIGludDMyX3Qgb2xkTWV0YVN0YXRlKTsKK2V4dGVybiBpbnQzMl90IHJvdGF0ZUtleUNvZGUoaW50MzJfdCBrZXlDb2RlLCBpbnQzMl90IG9yaWVudGF0aW9uKTsKKworLyoKKyAqIEFuIGlucHV0IGRldmljZSBzdHJ1Y3R1cmUgdHJhY2tzIHRoZSBzdGF0ZSBvZiBhIHNpbmdsZSBpbnB1dCBkZXZpY2UuCisgKgorICogVGhpcyBzdHJ1Y3R1cmUgaXMgb25seSB1c2VkIGJ5IFJlYWRlclRocmVhZCBhbmQgaXMgbm90IGludGVuZGVkIHRvIGJlIHNoYXJlZCB3aXRoCisgKiBEaXNwYXRjaGVyVGhyZWFkIChiZWNhdXNlIHRoYXQgd291bGQgcmVxdWlyZSBsb2NraW5nKS4gIFRoaXMgd29ya3Mgb3V0IGZpbmUgYmVjYXVzZQorICogRGlzcGF0Y2hlclRocmVhZCBpcyBvbmx5IGludGVyZXN0ZWQgaW4gY29va2VkIGV2ZW50IGRhdGEgYW55d2F5cyBhbmQgZG9lcyBub3QgbmVlZAorICogYW55IG9mIHRoZSBsb3ctbGV2ZWwgZGF0YSBmcm9tIElucHV0RGV2aWNlLgorICovCitzdHJ1Y3QgSW5wdXREZXZpY2UgeworICAgIHN0cnVjdCBBYnNvbHV0ZUF4aXNJbmZvIHsKKyAgICAgICAgYm9vbCB2YWxpZDsgICAgICAgIC8vIHNldCB0byB0cnVlIGlmIGF4aXMgcGFyYW1ldGVycyBhcmUga25vd24sIGZhbHNlIG90aGVyd2lzZQorCisgICAgICAgIGludDMyX3QgbWluVmFsdWU7ICAvLyBtaW5pbXVtIHZhbHVlCisgICAgICAgIGludDMyX3QgbWF4VmFsdWU7ICAvLyBtYXhpbXVtIHZhbHVlCisgICAgICAgIGludDMyX3QgcmFuZ2U7ICAgICAvLyByYW5nZSBvZiB2YWx1ZXMsIGVxdWFsIHRvIG1heFZhbHVlIC0gbWluVmFsdWUKKyAgICAgICAgaW50MzJfdCBmbGF0OyAgICAgIC8vIGNlbnRlciBmbGF0IHBvc2l0aW9uLCBlZy4gZmxhdCA9PSA4IG1lYW5zIGNlbnRlciBpcyBiZXR3ZWVuIC04IGFuZCA4CisgICAgICAgIGludDMyX3QgZnV6ejsgICAgICAvLyBlcnJvciB0b2xlcmFuY2UsIGVnLiBmdXp6ID09IDQgbWVhbnMgdmFsdWUgaXMgKy8tIDQgZHVlIHRvIG5vaXNlCisgICAgfTsKKworICAgIHN0cnVjdCBWaXJ0dWFsS2V5IHsKKyAgICAgICAgaW50MzJfdCBrZXlDb2RlOworICAgICAgICBpbnQzMl90IHNjYW5Db2RlOworICAgICAgICB1aW50MzJfdCBmbGFnczsKKworICAgICAgICAvLyBjb21wdXRlZCBoaXQgYm94LCBzcGVjaWZpZWQgaW4gdG91Y2ggc2NyZWVuIGNvb3JkcyBiYXNlZCBvbiBrbm93biBkaXNwbGF5IHNpemUKKyAgICAgICAgaW50MzJfdCBoaXRMZWZ0OworICAgICAgICBpbnQzMl90IGhpdFRvcDsKKyAgICAgICAgaW50MzJfdCBoaXRSaWdodDsKKyAgICAgICAgaW50MzJfdCBoaXRCb3R0b207CisKKyAgICAgICAgaW5saW5lIGJvb2wgaXNIaXQoaW50MzJfdCB4LCBpbnQzMl90IHkpIGNvbnN0IHsKKyAgICAgICAgICAgIHJldHVybiB4ID49IGhpdExlZnQgJiYgeCA8PSBoaXRSaWdodCAmJiB5ID49IGhpdFRvcCAmJiB5IDw9IGhpdEJvdHRvbTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBzdHJ1Y3QgS2V5Ym9hcmRTdGF0ZSB7CisgICAgICAgIHN0cnVjdCBDdXJyZW50IHsKKyAgICAgICAgICAgIGludDMyX3QgbWV0YVN0YXRlOworICAgICAgICAgICAgbnNlY3NfdCBkb3duVGltZTsgLy8gdGltZSBvZiBtb3N0IHJlY2VudCBrZXkgZG93bgorICAgICAgICB9IGN1cnJlbnQ7CisKKyAgICAgICAgdm9pZCByZXNldCgpOworICAgIH07CisKKyAgICBzdHJ1Y3QgVHJhY2tiYWxsU3RhdGUgeworICAgICAgICBzdHJ1Y3QgQWNjdW11bGF0b3IgeworICAgICAgICAgICAgZW51bSB7CisgICAgICAgICAgICAgICAgRklFTERfQlROX01PVVNFID0gMSwKKyAgICAgICAgICAgICAgICBGSUVMRF9SRUxfWCA9IDIsCisgICAgICAgICAgICAgICAgRklFTERfUkVMX1kgPSA0CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICB1aW50MzJfdCBmaWVsZHM7CisKKyAgICAgICAgICAgIGJvb2wgYnRuTW91c2U7CisgICAgICAgICAgICBpbnQzMl90IHJlbFg7CisgICAgICAgICAgICBpbnQzMl90IHJlbFk7CisKKyAgICAgICAgICAgIGlubGluZSB2b2lkIGNsZWFyKCkgeworICAgICAgICAgICAgICAgIGZpZWxkcyA9IDA7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlubGluZSBib29sIGlzRGlydHkoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZpZWxkcyAhPSAwOworICAgICAgICAgICAgfQorICAgICAgICB9IGFjY3VtdWxhdG9yOworCisgICAgICAgIHN0cnVjdCBDdXJyZW50IHsKKyAgICAgICAgICAgIGJvb2wgZG93bjsKKyAgICAgICAgICAgIG5zZWNzX3QgZG93blRpbWU7CisgICAgICAgIH0gY3VycmVudDsKKworICAgICAgICBzdHJ1Y3QgUHJlY2FsY3VsYXRlZCB7CisgICAgICAgICAgICBmbG9hdCB4U2NhbGU7CisgICAgICAgICAgICBmbG9hdCB5U2NhbGU7CisgICAgICAgICAgICBmbG9hdCB4UHJlY2lzaW9uOworICAgICAgICAgICAgZmxvYXQgeVByZWNpc2lvbjsKKyAgICAgICAgfSBwcmVjYWxjdWxhdGVkOworCisgICAgICAgIHZvaWQgcmVzZXQoKTsKKyAgICB9OworCisgICAgc3RydWN0IFNpbmdsZVRvdWNoU2NyZWVuU3RhdGUgeworICAgICAgICBzdHJ1Y3QgQWNjdW11bGF0b3IgeworICAgICAgICAgICAgZW51bSB7CisgICAgICAgICAgICAgICAgRklFTERfQlROX1RPVUNIID0gMSwKKyAgICAgICAgICAgICAgICBGSUVMRF9BQlNfWCA9IDIsCisgICAgICAgICAgICAgICAgRklFTERfQUJTX1kgPSA0LAorICAgICAgICAgICAgICAgIEZJRUxEX0FCU19QUkVTU1VSRSA9IDgsCisgICAgICAgICAgICAgICAgRklFTERfQUJTX1RPT0xfV0lEVEggPSAxNgorICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgdWludDMyX3QgZmllbGRzOworCisgICAgICAgICAgICBib29sIGJ0blRvdWNoOworICAgICAgICAgICAgaW50MzJfdCBhYnNYOworICAgICAgICAgICAgaW50MzJfdCBhYnNZOworICAgICAgICAgICAgaW50MzJfdCBhYnNQcmVzc3VyZTsKKyAgICAgICAgICAgIGludDMyX3QgYWJzVG9vbFdpZHRoOworCisgICAgICAgICAgICBpbmxpbmUgdm9pZCBjbGVhcigpIHsKKyAgICAgICAgICAgICAgICBmaWVsZHMgPSAwOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpbmxpbmUgYm9vbCBpc0RpcnR5KCkgeworICAgICAgICAgICAgICAgIHJldHVybiBmaWVsZHMgIT0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBhY2N1bXVsYXRvcjsKKworICAgICAgICBzdHJ1Y3QgQ3VycmVudCB7CisgICAgICAgICAgICBib29sIGRvd247CisgICAgICAgICAgICBpbnQzMl90IHg7CisgICAgICAgICAgICBpbnQzMl90IHk7CisgICAgICAgICAgICBpbnQzMl90IHByZXNzdXJlOworICAgICAgICAgICAgaW50MzJfdCBzaXplOworICAgICAgICB9IGN1cnJlbnQ7CisKKyAgICAgICAgdm9pZCByZXNldCgpOworICAgIH07CisKKyAgICBzdHJ1Y3QgTXVsdGlUb3VjaFNjcmVlblN0YXRlIHsKKyAgICAgICAgc3RydWN0IEFjY3VtdWxhdG9yIHsKKyAgICAgICAgICAgIGVudW0geworICAgICAgICAgICAgICAgIEZJRUxEX0FCU19NVF9QT1NJVElPTl9YID0gMSwKKyAgICAgICAgICAgICAgICBGSUVMRF9BQlNfTVRfUE9TSVRJT05fWSA9IDIsCisgICAgICAgICAgICAgICAgRklFTERfQUJTX01UX1RPVUNIX01BSk9SID0gNCwKKyAgICAgICAgICAgICAgICBGSUVMRF9BQlNfTVRfV0lEVEhfTUFKT1IgPSA4LAorICAgICAgICAgICAgICAgIEZJRUxEX0FCU19NVF9UUkFDS0lOR19JRCA9IDE2CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICB1aW50MzJfdCBwb2ludGVyQ291bnQ7CisgICAgICAgICAgICBzdHJ1Y3QgUG9pbnRlciB7CisgICAgICAgICAgICAgICAgdWludDMyX3QgZmllbGRzOworCisgICAgICAgICAgICAgICAgaW50MzJfdCBhYnNNVFBvc2l0aW9uWDsKKyAgICAgICAgICAgICAgICBpbnQzMl90IGFic01UUG9zaXRpb25ZOworICAgICAgICAgICAgICAgIGludDMyX3QgYWJzTVRUb3VjaE1ham9yOworICAgICAgICAgICAgICAgIGludDMyX3QgYWJzTVRXaWR0aE1ham9yOworICAgICAgICAgICAgICAgIGludDMyX3QgYWJzTVRUcmFja2luZ0lkOworCisgICAgICAgICAgICAgICAgaW5saW5lIHZvaWQgY2xlYXIoKSB7CisgICAgICAgICAgICAgICAgICAgIGZpZWxkcyA9IDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBwb2ludGVyc1tNQVhfUE9JTlRFUlMgKyAxXTsgLy8gKyAxIHRvIHJlbW92ZSB0aGUgbmVlZCBmb3IgZXh0cmEgcmFuZ2UgY2hlY2tzCisKKyAgICAgICAgICAgIGlubGluZSB2b2lkIGNsZWFyKCkgeworICAgICAgICAgICAgICAgIHBvaW50ZXJDb3VudCA9IDA7CisgICAgICAgICAgICAgICAgcG9pbnRlcnNbMF0uY2xlYXIoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaW5saW5lIGJvb2wgaXNEaXJ0eSgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcG9pbnRlckNvdW50ICE9IDA7CisgICAgICAgICAgICB9CisgICAgICAgIH0gYWNjdW11bGF0b3I7CisKKyAgICAgICAgdm9pZCByZXNldCgpOworICAgIH07CisKKyAgICBzdHJ1Y3QgUG9pbnRlckRhdGEgeworICAgICAgICB1aW50MzJfdCBpZDsKKyAgICAgICAgaW50MzJfdCB4OworICAgICAgICBpbnQzMl90IHk7CisgICAgICAgIGludDMyX3QgcHJlc3N1cmU7CisgICAgICAgIGludDMyX3Qgc2l6ZTsKKyAgICB9OworCisgICAgc3RydWN0IFRvdWNoRGF0YSB7CisgICAgICAgIHVpbnQzMl90IHBvaW50ZXJDb3VudDsKKyAgICAgICAgUG9pbnRlckRhdGEgcG9pbnRlcnNbTUFYX1BPSU5URVJTXTsKKyAgICAgICAgQml0U2V0MzIgaWRCaXRzOworICAgICAgICB1aW50MzJfdCBpZFRvSW5kZXhbTUFYX1BPSU5URVJfSURdOworCisgICAgICAgIHZvaWQgY29weUZyb20oY29uc3QgVG91Y2hEYXRhJiBvdGhlcik7CisKKyAgICAgICAgaW5saW5lIHZvaWQgY2xlYXIoKSB7CisgICAgICAgICAgICBwb2ludGVyQ291bnQgPSAwOworICAgICAgICAgICAgaWRCaXRzLmNsZWFyKCk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgLy8gY29tbW9uIHN0YXRlIHVzZWQgZm9yIGJvdGggc2luZ2xlLXRvdWNoIGFuZCBtdWx0aS10b3VjaCBzY3JlZW5zIGFmdGVyIHRoZSBpbml0aWFsCisgICAgLy8gdG91Y2ggZGVjb2RpbmcgaGFzIGJlZW4gcGVyZm9ybWVkCisgICAgc3RydWN0IFRvdWNoU2NyZWVuU3RhdGUgeworICAgICAgICBWZWN0b3I8VmlydHVhbEtleT4gdmlydHVhbEtleXM7CisKKyAgICAgICAgc3RydWN0IFBhcmFtZXRlcnMgeworICAgICAgICAgICAgYm9vbCB1c2VCYWRUb3VjaEZpbHRlcjsKKyAgICAgICAgICAgIGJvb2wgdXNlSnVtcHlUb3VjaEZpbHRlcjsKKyAgICAgICAgICAgIGJvb2wgdXNlQXZlcmFnaW5nVG91Y2hGaWx0ZXI7CisKKyAgICAgICAgICAgIEFic29sdXRlQXhpc0luZm8geEF4aXM7CisgICAgICAgICAgICBBYnNvbHV0ZUF4aXNJbmZvIHlBeGlzOworICAgICAgICAgICAgQWJzb2x1dGVBeGlzSW5mbyBwcmVzc3VyZUF4aXM7CisgICAgICAgICAgICBBYnNvbHV0ZUF4aXNJbmZvIHNpemVBeGlzOworICAgICAgICB9IHBhcmFtZXRlcnM7CisKKyAgICAgICAgLy8gVGhlIHRvdWNoIGRhdGEgb2YgdGhlIGN1cnJlbnQgc2FtcGxlIGJlaW5nIHByb2Nlc3NlZC4KKyAgICAgICAgVG91Y2hEYXRhIGN1cnJlbnRUb3VjaDsKKworICAgICAgICAvLyBUaGUgdG91Y2ggZGF0YSBvZiB0aGUgcHJldmlvdXMgc2FtcGxlIHRoYXQgd2FzIHByb2Nlc3NlZC4gIFRoaXMgaXMgdXBkYXRlZAorICAgICAgICAvLyBpbmNyZW1lbnRhbGx5IHdoaWxlIHRoZSBjdXJyZW50IHNhbXBsZSBpcyBiZWluZyBwcm9jZXNzZWQuCisgICAgICAgIFRvdWNoRGF0YSBsYXN0VG91Y2g7CisKKyAgICAgICAgLy8gVGhlIHRpbWUgdGhlIHByaW1hcnkgcG9pbnRlciBsYXN0IHdlbnQgZG93bi4KKyAgICAgICAgbnNlY3NfdCBkb3duVGltZTsKKworICAgICAgICBzdHJ1Y3QgQ3VycmVudFZpcnR1YWxLZXlTdGF0ZSB7CisgICAgICAgICAgICBlbnVtIFN0YXR1cyB7CisgICAgICAgICAgICAgICAgU1RBVFVTX1VQLAorICAgICAgICAgICAgICAgIFNUQVRVU19ET1dOLAorICAgICAgICAgICAgICAgIFNUQVRVU19DQU5DRUxFRAorICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgU3RhdHVzIHN0YXR1czsKKyAgICAgICAgICAgIG5zZWNzX3QgZG93blRpbWU7CisgICAgICAgICAgICBpbnQzMl90IGtleUNvZGU7CisgICAgICAgICAgICBpbnQzMl90IHNjYW5Db2RlOworICAgICAgICB9IGN1cnJlbnRWaXJ0dWFsS2V5OworCisgICAgICAgIHN0cnVjdCBBdmVyYWdpbmdUb3VjaEZpbHRlclN0YXRlIHsKKyAgICAgICAgICAgIC8vIEluZGl2aWR1YWwgaGlzdG9yeSB0cmFja3MgYXJlIHN0b3JlZCBieSBwb2ludGVyIGlkCisgICAgICAgICAgICB1aW50MzJfdCBoaXN0b3J5U3RhcnRbTUFYX1BPSU5URVJTXTsKKyAgICAgICAgICAgIHVpbnQzMl90IGhpc3RvcnlFbmRbTUFYX1BPSU5URVJTXTsKKyAgICAgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICAgICAgc3RydWN0IHsKKyAgICAgICAgICAgICAgICAgICAgaW50MzJfdCB4OworICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHk7CisgICAgICAgICAgICAgICAgICAgIGludDMyX3QgcHJlc3N1cmU7CisgICAgICAgICAgICAgICAgfSBwb2ludGVyc1tNQVhfUE9JTlRFUlNdOworICAgICAgICAgICAgfSBoaXN0b3J5RGF0YVtBVkVSQUdJTkdfSElTVE9SWV9TSVpFXTsKKyAgICAgICAgfSBhdmVyYWdpbmdUb3VjaEZpbHRlcjsKKworICAgICAgICBzdHJ1Y3QgSnVtcFRvdWNoRmlsdGVyU3RhdGUgeworICAgICAgICAgICAgaW50MzJfdCBqdW1weVBvaW50c0Ryb3BwZWQ7CisgICAgICAgIH0ganVtcHlUb3VjaEZpbHRlcjsKKworICAgICAgICBzdHJ1Y3QgUHJlY2FsY3VsYXRlZCB7CisgICAgICAgICAgICBpbnQzMl90IHhPcmlnaW47CisgICAgICAgICAgICBmbG9hdCB4U2NhbGU7CisKKyAgICAgICAgICAgIGludDMyX3QgeU9yaWdpbjsKKyAgICAgICAgICAgIGZsb2F0IHlTY2FsZTsKKworICAgICAgICAgICAgaW50MzJfdCBwcmVzc3VyZU9yaWdpbjsKKyAgICAgICAgICAgIGZsb2F0IHByZXNzdXJlU2NhbGU7CisKKyAgICAgICAgICAgIGludDMyX3Qgc2l6ZU9yaWdpbjsKKyAgICAgICAgICAgIGZsb2F0IHNpemVTY2FsZTsKKyAgICAgICAgfSBwcmVjYWxjdWxhdGVkOworCisgICAgICAgIHZvaWQgcmVzZXQoKTsKKworICAgICAgICBib29sIGFwcGx5QmFkVG91Y2hGaWx0ZXIoKTsKKyAgICAgICAgYm9vbCBhcHBseUp1bXB5VG91Y2hGaWx0ZXIoKTsKKyAgICAgICAgdm9pZCBhcHBseUF2ZXJhZ2luZ1RvdWNoRmlsdGVyKCk7CisgICAgICAgIHZvaWQgY2FsY3VsYXRlUG9pbnRlcklkcygpOworCisgICAgICAgIGJvb2wgaXNQb2ludEluc2lkZURpc3BsYXkoaW50MzJfdCB4LCBpbnQzMl90IHkpIGNvbnN0OworICAgICAgICBjb25zdCBJbnB1dERldmljZTo6VmlydHVhbEtleSogZmluZFZpcnR1YWxLZXlIaXQoKSBjb25zdDsKKyAgICB9OworCisgICAgSW5wdXREZXZpY2UoaW50MzJfdCBpZCwgdWludDMyX3QgY2xhc3NlcywgU3RyaW5nOCBuYW1lKTsKKworICAgIGludDMyX3QgaWQ7CisgICAgdWludDMyX3QgY2xhc3NlczsKKyAgICBTdHJpbmc4IG5hbWU7CisgICAgYm9vbCBpZ25vcmVkOworCisgICAgS2V5Ym9hcmRTdGF0ZSBrZXlib2FyZDsKKyAgICBUcmFja2JhbGxTdGF0ZSB0cmFja2JhbGw7CisgICAgVG91Y2hTY3JlZW5TdGF0ZSB0b3VjaFNjcmVlbjsKKyAgICB1bmlvbiB7CisgICAgICAgIFNpbmdsZVRvdWNoU2NyZWVuU3RhdGUgc2luZ2xlVG91Y2hTY3JlZW47CisgICAgICAgIE11bHRpVG91Y2hTY3JlZW5TdGF0ZSBtdWx0aVRvdWNoU2NyZWVuOworICAgIH07CisKKyAgICB2b2lkIHJlc2V0KCk7CisKKyAgICBpbmxpbmUgYm9vbCBpc0tleWJvYXJkKCkgY29uc3QgeyByZXR1cm4gY2xhc3NlcyAmIElOUFVUX0RFVklDRV9DTEFTU19LRVlCT0FSRDsgfQorICAgIGlubGluZSBib29sIGlzQWxwaGFLZXkoKSBjb25zdCB7IHJldHVybiBjbGFzc2VzICYgSU5QVVRfREVWSUNFX0NMQVNTX0FMUEhBS0VZOyB9CisgICAgaW5saW5lIGJvb2wgaXNUcmFja2JhbGwoKSBjb25zdCB7IHJldHVybiBjbGFzc2VzICYgSU5QVVRfREVWSUNFX0NMQVNTX1RSQUNLQkFMTDsgfQorICAgIGlubGluZSBib29sIGlzRFBhZCgpIGNvbnN0IHsgcmV0dXJuIGNsYXNzZXMgJiBJTlBVVF9ERVZJQ0VfQ0xBU1NfRFBBRDsgfQorICAgIGlubGluZSBib29sIGlzU2luZ2xlVG91Y2hTY3JlZW4oKSBjb25zdCB7IHJldHVybiAoY2xhc3NlcworICAgICAgICAgICAgJiAoSU5QVVRfREVWSUNFX0NMQVNTX1RPVUNIU0NSRUVOIHwgSU5QVVRfREVWSUNFX0NMQVNTX1RPVUNIU0NSRUVOX01UKSkKKyAgICAgICAgICAgID09IElOUFVUX0RFVklDRV9DTEFTU19UT1VDSFNDUkVFTjsgfQorICAgIGlubGluZSBib29sIGlzTXVsdGlUb3VjaFNjcmVlbigpIGNvbnN0IHsgcmV0dXJuIGNsYXNzZXMKKyAgICAgICAgICAgICYgSU5QVVRfREVWSUNFX0NMQVNTX1RPVUNIU0NSRUVOX01UOyB9CisgICAgaW5saW5lIGJvb2wgaXNUb3VjaFNjcmVlbigpIGNvbnN0IHsgcmV0dXJuIGNsYXNzZXMKKyAgICAgICAgICAgICYgKElOUFVUX0RFVklDRV9DTEFTU19UT1VDSFNDUkVFTiB8IElOUFVUX0RFVklDRV9DTEFTU19UT1VDSFNDUkVFTl9NVCk7IH0KK307CisKKworLyoKKyAqIElucHV0IHJlYWRlciBwb2xpY3kgaW50ZXJmYWNlLgorICoKKyAqIFRoZSBpbnB1dCByZWFkZXIgcG9saWN5IGlzIHVzZWQgYnkgdGhlIGlucHV0IHJlYWRlciB0byBpbnRlcmFjdCB3aXRoIHRoZSBXaW5kb3cgTWFuYWdlcgorICogYW5kIG90aGVyIHN5c3RlbSBjb21wb25lbnRzLgorICoKKyAqIFRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24gaXMgcGFydGlhbGx5IHN1cHBvcnRlZCBieSBjYWxsYmFja3MgaW50byB0aGUgRFZNCisgKiB2aWEgSk5JLiAgVGhpcyBpbnRlcmZhY2UgaXMgYWxzbyBtb2NrZWQgaW4gdGhlIHVuaXQgdGVzdHMuCisgKi8KK2NsYXNzIElucHV0UmVhZGVyUG9saWN5SW50ZXJmYWNlIDogcHVibGljIHZpcnR1YWwgUmVmQmFzZSB7Citwcm90ZWN0ZWQ6CisgICAgSW5wdXRSZWFkZXJQb2xpY3lJbnRlcmZhY2UoKSB7IH0KKyAgICB2aXJ0dWFsIH5JbnB1dFJlYWRlclBvbGljeUludGVyZmFjZSgpIHsgfQorCitwdWJsaWM6CisgICAgLyogRGlzcGxheSBvcmllbnRhdGlvbnMuICovCisgICAgZW51bSB7CisgICAgICAgIFJPVEFUSU9OXzAgPSAwLAorICAgICAgICBST1RBVElPTl85MCA9IDEsCisgICAgICAgIFJPVEFUSU9OXzE4MCA9IDIsCisgICAgICAgIFJPVEFUSU9OXzI3MCA9IDMKKyAgICB9OworCisgICAgLyogQWN0aW9ucyByZXR1cm5lZCBieSBpbnRlcmNlcHRYWFggbWV0aG9kcy4gKi8KKyAgICBlbnVtIHsKKyAgICAgICAgLy8gVGhlIGlucHV0IGRpc3BhdGNoZXIgc2hvdWxkIGRvIG5vdGhpbmcgYW5kIGRpc2NhcmQgdGhlIGlucHV0IHVubGVzcyBvdGhlcgorICAgICAgICAvLyBmbGFncyBhcmUgc2V0LgorICAgICAgICBBQ1RJT05fTk9ORSA9IDAsCisKKyAgICAgICAgLy8gVGhlIGlucHV0IGRpc3BhdGNoZXIgc2hvdWxkIGRpc3BhdGNoIHRoZSBpbnB1dCB0byB0aGUgYXBwbGljYXRpb24uCisgICAgICAgIEFDVElPTl9ESVNQQVRDSCA9IDB4MDAwMDAwMDEsCisKKyAgICAgICAgLy8gVGhlIGlucHV0IGRpc3BhdGNoZXIgc2hvdWxkIHBlcmZvcm0gc3BlY2lhbCBmaWx0ZXJpbmcgaW4gcHJlcGFyYXRpb24gZm9yCisgICAgICAgIC8vIGEgcGVuZGluZyBhcHAgc3dpdGNoLgorICAgICAgICBBQ1RJT05fQVBQX1NXSVRDSF9DT01JTkcgPSAweDAwMDAwMDAyLAorCisgICAgICAgIC8vIFRoZSBpbnB1dCBkaXNwYXRjaGVyIHNob3VsZCBhZGQgUE9MSUNZX0ZMQUdfV09LRV9IRVJFIHRvIHRoZSBwb2xpY3kgZmxhZ3MgaXQKKyAgICAgICAgLy8gcGFzc2VzIHRocm91Z2ggdGhlIGRpc3BhdGNoIHBpcGVsaW5lLgorICAgICAgICBBQ1RJT05fV09LRV9IRVJFID0gMHgwMDAwMDAwNCwKKworICAgICAgICAvLyBUaGUgaW5wdXQgZGlzcGF0Y2hlciBzaG91bGQgYWRkIFBPTElDWV9GTEFHX0JSSUdIVF9IRVJFIHRvIHRoZSBwb2xpY3kgZmxhZ3MgaXQKKyAgICAgICAgLy8gcGFzc2VzIHRocm91Z2ggdGhlIGRpc3BhdGNoIHBpcGVsaW5lLgorICAgICAgICBBQ1RJT05fQlJJR0hUX0hFUkUgPSAweDAwMDAwMDA4LAorICAgIH07CisKKyAgICAvKiBEZXNjcmliZXMgYSB2aXJ0dWFsIGtleS4gKi8KKyAgICBzdHJ1Y3QgVmlydHVhbEtleURlZmluaXRpb24geworICAgICAgICBpbnQzMl90IHNjYW5Db2RlOworCisgICAgICAgIC8vIGNvbmZpZ3VyZWQgcG9zaXRpb24gZGF0YSwgc3BlY2lmaWVkIGluIGRpc3BsYXkgY29vcmRzCisgICAgICAgIGludDMyX3QgY2VudGVyWDsKKyAgICAgICAgaW50MzJfdCBjZW50ZXJZOworICAgICAgICBpbnQzMl90IHdpZHRoOworICAgICAgICBpbnQzMl90IGhlaWdodDsKKyAgICB9OworCisgICAgLyogR2V0cyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZGlzcGxheSB3aXRoIHRoZSBzcGVjaWZpZWQgaWQuCisgICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBkaXNwbGF5IGluZm8gaXMgYXZhaWxhYmxlLCBmYWxzZSBvdGhlcndpc2UuCisgICAgICovCisgICAgdmlydHVhbCBib29sIGdldERpc3BsYXlJbmZvKGludDMyX3QgZGlzcGxheUlkLAorICAgICAgICAgICAgaW50MzJfdCogd2lkdGgsIGludDMyX3QqIGhlaWdodCwgaW50MzJfdCogb3JpZW50YXRpb24pID0gMDsKKworICAgIC8qIFByb3ZpZGVzIGZlZWRiYWNrIGZvciBhIHZpcnR1YWwga2V5IGRvd24uCisgICAgICovCisgICAgdmlydHVhbCB2b2lkIHZpcnR1YWxLZXlEb3duRmVlZGJhY2soKSA9IDA7CisKKyAgICAvKiBJbnRlcmNlcHRzIGEga2V5IGV2ZW50LgorICAgICAqIFRoZSBwb2xpY3kgY2FuIHVzZSB0aGlzIG1ldGhvZCBhcyBhbiBvcHBvcnR1bml0eSB0byBwZXJmb3JtIHBvd2VyIG1hbmFnZW1lbnQgZnVuY3Rpb25zCisgICAgICogYW5kIGVhcmx5IGV2ZW50IHByZXByb2Nlc3NpbmcuCisgICAgICoKKyAgICAgKiBSZXR1cm5zIGEgcG9saWN5IGFjdGlvbiBjb25zdGFudCBzdWNoIGFzIEFDVElPTl9ESVNQQVRDSC4KKyAgICAgKi8KKyAgICB2aXJ0dWFsIGludDMyX3QgaW50ZXJjZXB0S2V5KG5zZWNzX3Qgd2hlbiwgaW50MzJfdCBkZXZpY2VJZCwKKyAgICAgICAgICAgIGJvb2wgZG93biwgaW50MzJfdCBrZXlDb2RlLCBpbnQzMl90IHNjYW5Db2RlLCB1aW50MzJfdCBwb2xpY3lGbGFncykgPSAwOworCisgICAgLyogSW50ZXJjZXB0cyBhIHRyYWNrYmFsbCBldmVudC4KKyAgICAgKiBUaGUgcG9saWN5IGNhbiB1c2UgdGhpcyBtZXRob2QgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gcGVyZm9ybSBwb3dlciBtYW5hZ2VtZW50IGZ1bmN0aW9ucworICAgICAqIGFuZCBlYXJseSBldmVudCBwcmVwcm9jZXNzaW5nLgorICAgICAqCisgICAgICogUmV0dXJucyBhIHBvbGljeSBhY3Rpb24gY29uc3RhbnQgc3VjaCBhcyBBQ1RJT05fRElTUEFUQ0guCisgICAgICovCisgICAgdmlydHVhbCBpbnQzMl90IGludGVyY2VwdFRyYWNrYmFsbChuc2Vjc190IHdoZW4sIGJvb2wgYnV0dG9uQ2hhbmdlZCwgYm9vbCBidXR0b25Eb3duLAorICAgICAgICAgICAgYm9vbCByb2xsZWQpID0gMDsKKworICAgIC8qIEludGVyY2VwdHMgYSB0b3VjaCBldmVudC4KKyAgICAgKiBUaGUgcG9saWN5IGNhbiB1c2UgdGhpcyBtZXRob2QgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gcGVyZm9ybSBwb3dlciBtYW5hZ2VtZW50IGZ1bmN0aW9ucworICAgICAqIGFuZCBlYXJseSBldmVudCBwcmVwcm9jZXNzaW5nLgorICAgICAqCisgICAgICogUmV0dXJucyBhIHBvbGljeSBhY3Rpb24gY29uc3RhbnQgc3VjaCBhcyBBQ1RJT05fRElTUEFUQ0guCisgICAgICovCisgICAgdmlydHVhbCBpbnQzMl90IGludGVyY2VwdFRvdWNoKG5zZWNzX3Qgd2hlbikgPSAwOworCisgICAgLyogSW50ZXJjZXB0cyBhIHN3aXRjaCBldmVudC4KKyAgICAgKiBUaGUgcG9saWN5IGNhbiB1c2UgdGhpcyBtZXRob2QgYXMgYW4gb3Bwb3J0dW5pdHkgdG8gcGVyZm9ybSBwb3dlciBtYW5hZ2VtZW50IGZ1bmN0aW9ucworICAgICAqIGFuZCBlYXJseSBldmVudCBwcmVwcm9jZXNzaW5nLgorICAgICAqCisgICAgICogU3dpdGNoZXMgYXJlIG5vdCBkaXNwYXRjaGVkIHRvIGFwcGxpY2F0aW9ucyBzbyB0aGlzIG1ldGhvZCBzaG91bGQKKyAgICAgKiB1c3VhbGx5IHJldHVybiBBQ1RJT05fTk9ORS4KKyAgICAgKi8KKyAgICB2aXJ0dWFsIGludDMyX3QgaW50ZXJjZXB0U3dpdGNoKG5zZWNzX3Qgd2hlbiwgaW50MzJfdCBzd2l0Y2hDb2RlLCBpbnQzMl90IHN3aXRjaFZhbHVlKSA9IDA7CisKKyAgICAvKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gdHVybiBvbiBzb21lIGhhY2tzIHdlIGhhdmUgdG8gaW1wcm92ZSB0aGUgdG91Y2ggaW50ZXJhY3Rpb24gd2l0aCBhCisgICAgICogY2VydGFpbiBkZXZpY2Ugd2hvc2Ugc2NyZWVuIGN1cnJlbnRseSBpcyBub3QgYWxsIHRoYXQgZ29vZC4KKyAgICAgKi8KKyAgICB2aXJ0dWFsIGJvb2wgZmlsdGVyVG91Y2hFdmVudHMoKSA9IDA7CisKKyAgICAvKiBEZXRlcm1pbmVzIHdoZXRoZXIgdG8gdHVybiBvbiBzb21lIGhhY2tzIHRvIGltcHJvdmUgdG91Y2ggaW50ZXJhY3Rpb24gd2l0aCBhbm90aGVyIGRldmljZQorICAgICAqIHdoZXJlIHRvdWNoIGNvb3JkaW5hdGUgZGF0YSBjYW4gZ2V0IGNvcnJ1cHRlZC4KKyAgICAgKi8KKyAgICB2aXJ0dWFsIGJvb2wgZmlsdGVySnVtcHlUb3VjaEV2ZW50cygpID0gMDsKKworICAgIC8qIEdldHMgdGhlIGNvbmZpZ3VyZWQgdmlydHVhbCBrZXkgZGVmaW5pdGlvbnMgZm9yIGFuIGlucHV0IGRldmljZS4gKi8KKyAgICB2aXJ0dWFsIHZvaWQgZ2V0VmlydHVhbEtleURlZmluaXRpb25zKGNvbnN0IFN0cmluZzgmIGRldmljZU5hbWUsCisgICAgICAgICAgICBWZWN0b3I8VmlydHVhbEtleURlZmluaXRpb24+JiBvdXRWaXJ0dWFsS2V5RGVmaW5pdGlvbnMpID0gMDsKKworICAgIC8qIEdldHMgdGhlIGV4Y2x1ZGVkIGRldmljZSBuYW1lcyBmb3IgdGhlIHBsYXRmb3JtLiAqLworICAgIHZpcnR1YWwgdm9pZCBnZXRFeGNsdWRlZERldmljZU5hbWVzKFZlY3RvcjxTdHJpbmc4PiYgb3V0RXhjbHVkZWREZXZpY2VOYW1lcykgPSAwOworfTsKKworCisvKiBQcm9jZXNzZXMgcmF3IGlucHV0IGV2ZW50cyBhbmQgc2VuZHMgY29va2VkIGV2ZW50IGRhdGEgdG8gYW4gaW5wdXQgZGlzcGF0Y2hlci4gKi8KK2NsYXNzIElucHV0UmVhZGVySW50ZXJmYWNlIDogcHVibGljIHZpcnR1YWwgUmVmQmFzZSB7Citwcm90ZWN0ZWQ6CisgICAgSW5wdXRSZWFkZXJJbnRlcmZhY2UoKSB7IH0KKyAgICB2aXJ0dWFsIH5JbnB1dFJlYWRlckludGVyZmFjZSgpIHsgfQorCitwdWJsaWM6CisgICAgLyogUnVucyBhIHNpbmdsZSBpdGVyYXRpb24gb2YgdGhlIHByb2Nlc3NpbmcgbG9vcC4KKyAgICAgKiBOb21pbmFsbHkgcmVhZHMgYW5kIHByb2Nlc3NlcyBvbmUgaW5jb21pbmcgbWVzc2FnZSBmcm9tIHRoZSBFdmVudEh1Yi4KKyAgICAgKgorICAgICAqIFRoaXMgbWV0aG9kIHNob3VsZCBiZSBjYWxsZWQgb24gdGhlIGlucHV0IHJlYWRlciB0aHJlYWQuCisgICAgICovCisgICAgdmlydHVhbCB2b2lkIGxvb3BPbmNlKCkgPSAwOworCisgICAgLyogR2V0cyB0aGUgY3VycmVudCB2aXJ0dWFsIGtleS4gIFJldHVybnMgZmFsc2UgaWYgbm90IGRvd24uCisgICAgICoKKyAgICAgKiBUaGlzIG1ldGhvZCBtYXkgYmUgY2FsbGVkIG9uIGFueSB0aHJlYWQgKHVzdWFsbHkgYnkgdGhlIGlucHV0IG1hbmFnZXIpLgorICAgICAqLworICAgIHZpcnR1YWwgYm9vbCBnZXRDdXJyZW50VmlydHVhbEtleShpbnQzMl90KiBvdXRLZXlDb2RlLCBpbnQzMl90KiBvdXRTY2FuQ29kZSkgY29uc3QgPSAwOworCisgICAgLyogR2V0cyB0aGUgY3VycmVudCBpbnB1dCBkZXZpY2UgY29uZmlndXJhdGlvbi4KKyAgICAgKgorICAgICAqIFRoaXMgbWV0aG9kIG1heSBiZSBjYWxsZWQgb24gYW55IHRocmVhZCAodXN1YWxseSBieSB0aGUgaW5wdXQgbWFuYWdlcikuCisgICAgICovCisgICAgdmlydHVhbCB2b2lkIGdldEN1cnJlbnRJbnB1dENvbmZpZ3VyYXRpb24oSW5wdXRDb25maWd1cmF0aW9uKiBvdXRDb25maWd1cmF0aW9uKSBjb25zdCA9IDA7CisKKyAgICAvKgorICAgICAqIFF1ZXJ5IGN1cnJlbnQgaW5wdXQgc3RhdGUuCisgICAgICogICBkZXZpY2VJZCBtYXkgYmUgLTEgdG8gc2VhcmNoIGZvciB0aGUgZGV2aWNlIGF1dG9tYXRpY2FsbHksIGZpbHRlcmVkIGJ5IGNsYXNzLgorICAgICAqICAgZGV2aWNlQ2xhc3NlcyBtYXkgYmUgLTEgdG8gaWdub3JlIGRldmljZSBjbGFzcyB3aGlsZSBzZWFyY2hpbmcuCisgICAgICovCisgICAgdmlydHVhbCBpbnQzMl90IGdldEN1cnJlbnRTY2FuQ29kZVN0YXRlKGludDMyX3QgZGV2aWNlSWQsIGludDMyX3QgZGV2aWNlQ2xhc3NlcywKKyAgICAgICAgICAgIGludDMyX3Qgc2NhbkNvZGUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludDMyX3QgZ2V0Q3VycmVudEtleUNvZGVTdGF0ZShpbnQzMl90IGRldmljZUlkLCBpbnQzMl90IGRldmljZUNsYXNzZXMsCisgICAgICAgICAgICBpbnQzMl90IGtleUNvZGUpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGludDMyX3QgZ2V0Q3VycmVudFN3aXRjaFN0YXRlKGludDMyX3QgZGV2aWNlSWQsIGludDMyX3QgZGV2aWNlQ2xhc3NlcywKKyAgICAgICAgICAgIGludDMyX3Qgc3cpIGNvbnN0ID0gMDsKKworICAgIC8qIERldGVybWluZSB3aGV0aGVyIHBoeXNpY2FsIGtleXMgZXhpc3QgZm9yIHRoZSBnaXZlbiBmcmFtZXdvcmstZG9tYWluIGtleSBjb2Rlcy4gKi8KKyAgICB2aXJ0dWFsIGJvb2wgaGFzS2V5cyhzaXplX3QgbnVtQ29kZXMsIGNvbnN0IGludDMyX3QqIGtleUNvZGVzLCB1aW50OF90KiBvdXRGbGFncykgY29uc3QgPSAwOworfTsKKworCisvKiBUaGUgaW5wdXQgcmVhZGVyIHJlYWRzIHJhdyBldmVudCBkYXRhIGZyb20gdGhlIGV2ZW50IGh1YiBhbmQgcHJvY2Vzc2VzIGl0IGludG8gaW5wdXQgZXZlbnRzCisgKiB0aGF0IGl0IHNlbmRzIHRvIHRoZSBpbnB1dCBkaXNwYXRjaGVyLiAgU29tZSBmdW5jdGlvbnMgb2YgdGhlIGlucHV0IHJlYWRlciwgc3VjaCBhcyBlYXJseQorICogZXZlbnQgZmlsdGVyaW5nIGluIGxvdyBwb3dlciBzdGF0ZXMsIGFyZSBjb250cm9sbGVkIGJ5IGEgc2VwYXJhdGUgcG9saWN5IG9iamVjdC4KKyAqCisgKiBJTVBPUlRBTlQgSU5WQVJJQU5UOgorICogICAgIEJlY2F1c2UgdGhlIHBvbGljeSBjYW4gcG90ZW50aWFsbHkgYmxvY2sgb3IgY2F1c2UgcmUtZW50cmFuY2UgaW50byB0aGUgaW5wdXQgcmVhZGVyLAorICogICAgIHRoZSBpbnB1dCByZWFkZXIgbmV2ZXIgY2FsbHMgaW50byB0aGUgcG9saWN5IHdoaWxlIGhvbGRpbmcgaXRzIGludGVybmFsIGxvY2tzLgorICovCitjbGFzcyBJbnB1dFJlYWRlciA6IHB1YmxpYyBJbnB1dFJlYWRlckludGVyZmFjZSB7CitwdWJsaWM6CisgICAgSW5wdXRSZWFkZXIoY29uc3Qgc3A8RXZlbnRIdWJJbnRlcmZhY2U+JiBldmVudEh1YiwKKyAgICAgICAgICAgIGNvbnN0IHNwPElucHV0UmVhZGVyUG9saWN5SW50ZXJmYWNlPiYgcG9saWN5LAorICAgICAgICAgICAgY29uc3Qgc3A8SW5wdXREaXNwYXRjaGVySW50ZXJmYWNlPiYgZGlzcGF0Y2hlcik7CisgICAgdmlydHVhbCB+SW5wdXRSZWFkZXIoKTsKKworICAgIHZpcnR1YWwgdm9pZCBsb29wT25jZSgpOworCisgICAgdmlydHVhbCBib29sIGdldEN1cnJlbnRWaXJ0dWFsS2V5KGludDMyX3QqIG91dEtleUNvZGUsIGludDMyX3QqIG91dFNjYW5Db2RlKSBjb25zdDsKKworICAgIHZpcnR1YWwgdm9pZCBnZXRDdXJyZW50SW5wdXRDb25maWd1cmF0aW9uKElucHV0Q29uZmlndXJhdGlvbiogb3V0Q29uZmlndXJhdGlvbikgY29uc3Q7CisKKyAgICB2aXJ0dWFsIGludDMyX3QgZ2V0Q3VycmVudFNjYW5Db2RlU3RhdGUoaW50MzJfdCBkZXZpY2VJZCwgaW50MzJfdCBkZXZpY2VDbGFzc2VzLAorICAgICAgICAgICAgaW50MzJfdCBzY2FuQ29kZSkgY29uc3Q7CisgICAgdmlydHVhbCBpbnQzMl90IGdldEN1cnJlbnRLZXlDb2RlU3RhdGUoaW50MzJfdCBkZXZpY2VJZCwgaW50MzJfdCBkZXZpY2VDbGFzc2VzLAorICAgICAgICAgICAgaW50MzJfdCBrZXlDb2RlKSBjb25zdDsKKyAgICB2aXJ0dWFsIGludDMyX3QgZ2V0Q3VycmVudFN3aXRjaFN0YXRlKGludDMyX3QgZGV2aWNlSWQsIGludDMyX3QgZGV2aWNlQ2xhc3NlcywKKyAgICAgICAgICAgIGludDMyX3Qgc3cpIGNvbnN0OworCisgICAgdmlydHVhbCBib29sIGhhc0tleXMoc2l6ZV90IG51bUNvZGVzLCBjb25zdCBpbnQzMl90KiBrZXlDb2RlcywgdWludDhfdCogb3V0RmxhZ3MpIGNvbnN0OworCitwcml2YXRlOgorICAgIC8vIExvY2sgdGhhdCBtdXN0IGJlIGFjcXVpcmVkIHdoaWxlIG1hbmlwdWxhdGluZyBzdGF0ZSB0aGF0IG1heSBiZSBjb25jdXJyZW50bHkgYWNjZXNzZWQKKyAgICAvLyBmcm9tIG90aGVyIHRocmVhZHMgYnkgaW5wdXQgc3RhdGUgcXVlcnkgbWV0aG9kcy4gIEl0IHNob3VsZCBiZSBoZWxkIGZvciBhcyBzaG9ydCBhCisgICAgLy8gdGltZSBhcyBwb3NzaWJsZS4KKyAgICAvLworICAgIC8vIEV4cG9ydGVkIHN0YXRlOgorICAgIC8vICAgLSBnbG9iYWwgdmlydHVhbCBrZXkgY29kZSBhbmQgc2NhbiBjb2RlCisgICAgLy8gICAtIGRldmljZSBsaXN0IGFuZCBpbW11dGFibGUgcHJvcGVydGllcyBvZiBkZXZpY2VzIHN1Y2ggYXMgaWQsIG5hbWUsIGFuZCBjbGFzcworICAgIC8vICAgICAoYnV0IG5vdCBvdGhlciBpbnRlcm5hbCBkZXZpY2Ugc3RhdGUpCisgICAgbXV0YWJsZSBNdXRleCBtRXhwb3J0ZWRTdGF0ZUxvY2s7CisKKyAgICAvLyBjdXJyZW50IHZpcnR1YWwga2V5IGluZm9ybWF0aW9uIChsb2NrIG1FeHBvcnRlZFN0YXRlTG9jaykKKyAgICBpbnQzMl90IG1FeHBvcnRlZFZpcnR1YWxLZXlDb2RlOworICAgIGludDMyX3QgbUV4cG9ydGVkVmlydHVhbFNjYW5Db2RlOworCisgICAgLy8gY3VycmVudCBpbnB1dCBjb25maWd1cmF0aW9uIChsb2NrIG1FeHBvcnRlZFN0YXRlTG9jaykKKyAgICBJbnB1dENvbmZpZ3VyYXRpb24gbUV4cG9ydGVkSW5wdXRDb25maWd1cmF0aW9uOworCisgICAgLy8gY29tYmluZWQga2V5IG1ldGEgc3RhdGUKKyAgICBpbnQzMl90IG1HbG9iYWxNZXRhU3RhdGU7CisKKyAgICBzcDxFdmVudEh1YkludGVyZmFjZT4gbUV2ZW50SHViOworICAgIHNwPElucHV0UmVhZGVyUG9saWN5SW50ZXJmYWNlPiBtUG9saWN5OworICAgIHNwPElucHV0RGlzcGF0Y2hlckludGVyZmFjZT4gbURpc3BhdGNoZXI7CisKKyAgICBLZXllZFZlY3RvcjxpbnQzMl90LCBJbnB1dERldmljZSo+IG1EZXZpY2VzOworCisgICAgLy8gZGlzcGxheSBwcm9wZXJ0aWVzIG5lZWRlZCB0byB0cmFuc2xhdGUgdG91Y2ggc2NyZWVuIGNvb3JkaW5hdGVzIGludG8gZGlzcGxheSBjb29yZGluYXRlcworICAgIGludDMyX3QgbURpc3BsYXlPcmllbnRhdGlvbjsKKyAgICBpbnQzMl90IG1EaXNwbGF5V2lkdGg7CisgICAgaW50MzJfdCBtRGlzcGxheUhlaWdodDsKKworICAgIC8vIGxvdy1sZXZlbCBpbnB1dCBldmVudCBkZWNvZGluZworICAgIHZvaWQgcHJvY2Vzcyhjb25zdCBSYXdFdmVudCogcmF3RXZlbnQpOworICAgIHZvaWQgaGFuZGxlRGV2aWNlQWRkZWQoY29uc3QgUmF3RXZlbnQqIHJhd0V2ZW50KTsKKyAgICB2b2lkIGhhbmRsZURldmljZVJlbW92ZWQoY29uc3QgUmF3RXZlbnQqIHJhd0V2ZW50KTsKKyAgICB2b2lkIGhhbmRsZVN5bmMoY29uc3QgUmF3RXZlbnQqIHJhd0V2ZW50KTsKKyAgICB2b2lkIGhhbmRsZUtleShjb25zdCBSYXdFdmVudCogcmF3RXZlbnQpOworICAgIHZvaWQgaGFuZGxlUmVsYXRpdmVNb3Rpb24oY29uc3QgUmF3RXZlbnQqIHJhd0V2ZW50KTsKKyAgICB2b2lkIGhhbmRsZUFic29sdXRlTW90aW9uKGNvbnN0IFJhd0V2ZW50KiByYXdFdmVudCk7CisgICAgdm9pZCBoYW5kbGVTd2l0Y2goY29uc3QgUmF3RXZlbnQqIHJhd0V2ZW50KTsKKworICAgIC8vIGlucHV0IHBvbGljeSBwcm9jZXNzaW5nIGFuZCBkaXNwYXRjaAorICAgIHZvaWQgb25LZXkobnNlY3NfdCB3aGVuLCBJbnB1dERldmljZSogZGV2aWNlLCBib29sIGRvd24sCisgICAgICAgICAgICBpbnQzMl90IGtleUNvZGUsIGludDMyX3Qgc2NhbkNvZGUsIHVpbnQzMl90IHBvbGljeUZsYWdzKTsKKyAgICB2b2lkIG9uU3dpdGNoKG5zZWNzX3Qgd2hlbiwgSW5wdXREZXZpY2UqIGRldmljZSwgaW50MzJfdCBzd2l0Y2hDb2RlLCBpbnQzMl90IHN3aXRjaFZhbHVlKTsKKyAgICB2b2lkIG9uU2luZ2xlVG91Y2hTY3JlZW5TdGF0ZUNoYW5nZWQobnNlY3NfdCB3aGVuLCBJbnB1dERldmljZSogZGV2aWNlKTsKKyAgICB2b2lkIG9uTXVsdGlUb3VjaFNjcmVlblN0YXRlQ2hhbmdlZChuc2Vjc190IHdoZW4sIElucHV0RGV2aWNlKiBkZXZpY2UpOworICAgIHZvaWQgb25Ub3VjaFNjcmVlbkNoYW5nZWQobnNlY3NfdCB3aGVuLCBJbnB1dERldmljZSogZGV2aWNlLCBib29sIGhhdmVQb2ludGVySWRzKTsKKyAgICB2b2lkIG9uVHJhY2tiYWxsU3RhdGVDaGFuZ2VkKG5zZWNzX3Qgd2hlbiwgSW5wdXREZXZpY2UqIGRldmljZSk7CisgICAgdm9pZCBvbkNvbmZpZ3VyYXRpb25DaGFuZ2VkKG5zZWNzX3Qgd2hlbik7CisKKyAgICBib29sIGFwcGx5U3RhbmRhcmRJbnB1dERpc3BhdGNoUG9saWN5QWN0aW9ucyhuc2Vjc190IHdoZW4sCisgICAgICAgICAgICBpbnQzMl90IHBvbGljeUFjdGlvbnMsIHVpbnQzMl90KiBwb2xpY3lGbGFncyk7CisKKyAgICBib29sIGNvbnN1bWVWaXJ0dWFsS2V5VG91Y2hlcyhuc2Vjc190IHdoZW4sIElucHV0RGV2aWNlKiBkZXZpY2UsIHVpbnQzMl90IHBvbGljeUZsYWdzKTsKKyAgICB2b2lkIGRpc3BhdGNoVmlydHVhbEtleShuc2Vjc190IHdoZW4sIElucHV0RGV2aWNlKiBkZXZpY2UsIHVpbnQzMl90IHBvbGljeUZsYWdzLAorICAgICAgICAgICAgaW50MzJfdCBrZXlFdmVudEFjdGlvbiwgaW50MzJfdCBrZXlFdmVudEZsYWdzKTsKKyAgICB2b2lkIGRpc3BhdGNoVG91Y2hlcyhuc2Vjc190IHdoZW4sIElucHV0RGV2aWNlKiBkZXZpY2UsIHVpbnQzMl90IHBvbGljeUZsYWdzKTsKKyAgICB2b2lkIGRpc3BhdGNoVG91Y2gobnNlY3NfdCB3aGVuLCBJbnB1dERldmljZSogZGV2aWNlLCB1aW50MzJfdCBwb2xpY3lGbGFncywKKyAgICAgICAgICAgIElucHV0RGV2aWNlOjpUb3VjaERhdGEqIHRvdWNoLCBCaXRTZXQzMiBpZEJpdHMsIGludDMyX3QgbW90aW9uRXZlbnRBY3Rpb24pOworCisgICAgLy8gZGlzcGxheQorICAgIHZvaWQgcmVzZXREaXNwbGF5UHJvcGVydGllcygpOworICAgIGJvb2wgcmVmcmVzaERpc3BsYXlQcm9wZXJ0aWVzKCk7CisKKyAgICAvLyBkZXZpY2UgbWFuYWdlbWVudAorICAgIElucHV0RGV2aWNlKiBnZXREZXZpY2UoaW50MzJfdCBkZXZpY2VJZCk7CisgICAgSW5wdXREZXZpY2UqIGdldE5vbklnbm9yZWREZXZpY2UoaW50MzJfdCBkZXZpY2VJZCk7CisgICAgdm9pZCBhZGREZXZpY2UobnNlY3NfdCB3aGVuLCBpbnQzMl90IGRldmljZUlkKTsKKyAgICB2b2lkIHJlbW92ZURldmljZShuc2Vjc190IHdoZW4sIElucHV0RGV2aWNlKiBkZXZpY2UpOworICAgIHZvaWQgY29uZmlndXJlRGV2aWNlKElucHV0RGV2aWNlKiBkZXZpY2UpOworICAgIHZvaWQgY29uZmlndXJlRGV2aWNlRm9yQ3VycmVudERpc3BsYXlTaXplKElucHV0RGV2aWNlKiBkZXZpY2UpOworICAgIHZvaWQgY29uZmlndXJlVmlydHVhbEtleXMoSW5wdXREZXZpY2UqIGRldmljZSk7CisgICAgdm9pZCBjb25maWd1cmVBYnNvbHV0ZUF4aXNJbmZvKElucHV0RGV2aWNlKiBkZXZpY2UsIGludCBheGlzLCBjb25zdCBjaGFyKiBuYW1lLAorICAgICAgICAgICAgSW5wdXREZXZpY2U6OkFic29sdXRlQXhpc0luZm8qIG91dCk7CisgICAgdm9pZCBjb25maWd1cmVFeGNsdWRlZERldmljZXMoKTsKKworICAgIC8vIGdsb2JhbCBtZXRhIHN0YXRlIG1hbmFnZW1lbnQgZm9yIGFsbCBkZXZpY2VzCisgICAgdm9pZCByZXNldEdsb2JhbE1ldGFTdGF0ZSgpOworICAgIGludDMyX3QgZ2xvYmFsTWV0YVN0YXRlKCk7CisKKyAgICAvLyB2aXJ0dWFsIGtleSBtYW5hZ2VtZW50CisgICAgdm9pZCB1cGRhdGVFeHBvcnRlZFZpcnR1YWxLZXlTdGF0ZSgpOworCisgICAgLy8gaW5wdXQgY29uZmlndXJhdGlvbiBtYW5hZ2VtZW50CisgICAgdm9pZCB1cGRhdGVFeHBvcnRlZElucHV0Q29uZmlndXJhdGlvbigpOworfTsKKworCisvKiBSZWFkcyByYXcgZXZlbnRzIGZyb20gdGhlIGV2ZW50IGh1YiBhbmQgcHJvY2Vzc2VzIHRoZW0sIGVuZGxlc3NseS4gKi8KK2NsYXNzIElucHV0UmVhZGVyVGhyZWFkIDogcHVibGljIFRocmVhZCB7CitwdWJsaWM6CisgICAgSW5wdXRSZWFkZXJUaHJlYWQoY29uc3Qgc3A8SW5wdXRSZWFkZXJJbnRlcmZhY2U+JiByZWFkZXIpOworICAgIHZpcnR1YWwgfklucHV0UmVhZGVyVGhyZWFkKCk7CisKK3ByaXZhdGU6CisgICAgc3A8SW5wdXRSZWFkZXJJbnRlcmZhY2U+IG1SZWFkZXI7CisKKyAgICB2aXJ0dWFsIGJvb2wgdGhyZWFkTG9vcCgpOworfTsKKworfSAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCisjZW5kaWYgLy8gX1VJX0lOUFVUX1JFQURFUl9ICmRpZmYgLS1naXQgYS9pbmNsdWRlL3VpL0lucHV0VHJhbnNwb3J0LmggYi9pbmNsdWRlL3VpL0lucHV0VHJhbnNwb3J0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTE3MTRkNQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvdWkvSW5wdXRUcmFuc3BvcnQuaApAQCAtMCwwICsxLDM2MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgX1VJX0lOUFVUX1RSQU5TUE9SVF9ICisjZGVmaW5lIF9VSV9JTlBVVF9UUkFOU1BPUlRfSAorCisvKioKKyAqIE5hdGl2ZSBpbnB1dCB0cmFuc3BvcnQuCisgKgorICogVXNlcyBhbm9ueW1vdXMgc2hhcmVkIG1lbW9yeSBhcyBhIHdoaXRlYm9hcmQgZm9yIHNlbmRpbmcgaW5wdXQgZXZlbnRzIGZyb20gYW4KKyAqIElucHV0UHVibGlzaGVyIHRvIGFuIElucHV0Q29uc3VtZXIgYW5kIGVuc3VyaW5nIGFwcHJvcHJpYXRlIHN5bmNocm9uaXphdGlvbi4KKyAqIE9uZSBpbnRlcmVzdGluZyBmZWF0dXJlIGlzIHRoYXQgcHVibGlzaGVkIGV2ZW50cyBjYW4gYmUgdXBkYXRlZCBpbiBwbGFjZSBhcyBsb25nIGFzIHRoZXkKKyAqIGhhdmUgbm90IHlldCBiZWVuIGNvbnN1bWVkLgorICoKKyAqIFRoZSBJbnB1dFB1Ymxpc2hlciBhbmQgSW5wdXRDb25zdW1lciBvbmx5IHRha2UgY2FyZSBvZiB0cmFuc2ZlcnJpbmcgZXZlbnQgZGF0YQorICogb3ZlciBhbiBJbnB1dENoYW5uZWwgYW5kIHNlbmRpbmcgc3luY2hyb25pemF0aW9uIHNpZ25hbHMuICBUaGUgSW5wdXREaXNwYXRjaGVyIGFuZCBJbnB1dFF1ZXVlCisgKiBidWlsZCBvbiB0aGVzZSBhYnN0cmFjdGlvbnMgdG8gYWRkIG11bHRpcGxleGluZyBhbmQgcXVldWVpbmcuCisgKi8KKworI2luY2x1ZGUgPHNlbWFwaG9yZS5oPgorI2luY2x1ZGUgPHVpL0lucHV0Lmg+CisjaW5jbHVkZSA8dXRpbHMvRXJyb3JzLmg+CisjaW5jbHVkZSA8dXRpbHMvUG9sbExvb3AuaD4KKyNpbmNsdWRlIDx1dGlscy9UaW1lcnMuaD4KKyNpbmNsdWRlIDx1dGlscy9SZWZCYXNlLmg+CisjaW5jbHVkZSA8dXRpbHMvU3RyaW5nOC5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKKy8qCisgKiBBbiBpbnB1dCBjaGFubmVsIGNvbnNpc3RzIG9mIGEgc2hhcmVkIG1lbW9yeSBidWZmZXIgYW5kIGEgcGFpciBvZiBwaXBlcworICogdXNlZCB0byBzZW5kIGlucHV0IG1lc3NhZ2VzIGZyb20gYW4gSW5wdXRQdWJsaXNoZXIgdG8gYW4gSW5wdXRDb25zdW1lcgorICogYWNyb3NzIHByb2Nlc3Nlcy4gIEVhY2ggY2hhbm5lbCBoYXMgYSBkZXNjcmlwdGl2ZSBuYW1lIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMuCisgKgorICogRWFjaCBlbmRwb2ludCBoYXMgaXRzIG93biBJbnB1dENoYW5uZWwgb2JqZWN0IHRoYXQgc3BlY2lmaWVzIGl0cyBvd24gZmlsZSBkZXNjcmlwdG9ycy4KKyAqCisgKiBUaGUgaW5wdXQgY2hhbm5lbCBpcyBjbG9zZWQgd2hlbiBhbGwgcmVmZXJlbmNlcyB0byBpdCBhcmUgcmVsZWFzZWQuCisgKi8KK2NsYXNzIElucHV0Q2hhbm5lbCA6IHB1YmxpYyBSZWZCYXNlIHsKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5JbnB1dENoYW5uZWwoKTsKKworcHVibGljOgorICAgIElucHV0Q2hhbm5lbChjb25zdCBTdHJpbmc4JiBuYW1lLCBpbnQzMl90IGFzaG1lbUZkLCBpbnQzMl90IHJlY2VpdmVQaXBlRmQsCisgICAgICAgICAgICBpbnQzMl90IHNlbmRQaXBlRmQpOworCisgICAgLyogQ3JlYXRlcyBhIHBhaXIgb2YgaW5wdXQgY2hhbm5lbHMgYW5kIHRoZWlyIHVuZGVybHlpbmcgc2hhcmVkIG1lbW9yeSBidWZmZXJzCisgICAgICogYW5kIHBpcGVzLgorICAgICAqCisgICAgICogUmV0dXJucyBPSyBvbiBzdWNjZXNzLgorICAgICAqLworICAgIHN0YXRpYyBzdGF0dXNfdCBvcGVuSW5wdXRDaGFubmVsUGFpcihjb25zdCBTdHJpbmc4JiBuYW1lLAorICAgICAgICAgICAgc3A8SW5wdXRDaGFubmVsPiYgb3V0U2VydmVyQ2hhbm5lbCwgc3A8SW5wdXRDaGFubmVsPiYgb3V0Q2xpZW50Q2hhbm5lbCk7CisKKyAgICBpbmxpbmUgU3RyaW5nOCBnZXROYW1lKCkgY29uc3QgeyByZXR1cm4gbU5hbWU7IH0KKyAgICBpbmxpbmUgaW50MzJfdCBnZXRBc2htZW1GZCgpIGNvbnN0IHsgcmV0dXJuIG1Bc2htZW1GZDsgfQorICAgIGlubGluZSBpbnQzMl90IGdldFJlY2VpdmVQaXBlRmQoKSBjb25zdCB7IHJldHVybiBtUmVjZWl2ZVBpcGVGZDsgfQorICAgIGlubGluZSBpbnQzMl90IGdldFNlbmRQaXBlRmQoKSBjb25zdCB7IHJldHVybiBtU2VuZFBpcGVGZDsgfQorCisgICAgLyogU2VuZHMgYSBzaWduYWwgdG8gdGhlIG90aGVyIGVuZHBvaW50LgorICAgICAqCisgICAgICogUmV0dXJucyBPSyBvbiBzdWNjZXNzLgorICAgICAqIFJldHVybnMgREVBRF9PQkpFQ1QgaWYgdGhlIGNoYW5uZWwncyBwZWVyIGhhcyBiZWVuIGNsb3NlZC4KKyAgICAgKiBPdGhlciBlcnJvcnMgcHJvYmFibHkgaW5kaWNhdGUgdGhhdCB0aGUgY2hhbm5lbCBpcyBicm9rZW4uCisgICAgICovCisgICAgc3RhdHVzX3Qgc2VuZFNpZ25hbChjaGFyIHNpZ25hbCk7CisKKyAgICAvKiBSZWNlaXZlcyBhIHNpZ25hbCBzZW5kIGJ5IHRoZSBvdGhlciBlbmRwb2ludC4KKyAgICAgKiAoU2hvdWxkIG9ubHkgY2FsbCB0aGlzIGFmdGVyIHBvbGwoKSBpbmRpY2F0ZXMgdGhhdCB0aGUgcmVjZWl2ZVBpcGVGZCBoYXMgYXZhaWxhYmxlIGlucHV0LikKKyAgICAgKgorICAgICAqIFJldHVybnMgT0sgb24gc3VjY2Vzcy4KKyAgICAgKiBSZXR1cm5zIFdPVUxEX0JMT0NLIGlmIHRoZXJlIGlzIG5vIHNpZ25hbCBwcmVzZW50LgorICAgICAqIFJldHVybnMgREVBRF9PQkpFQ1QgaWYgdGhlIGNoYW5uZWwncyBwZWVyIGhhcyBiZWVuIGNsb3NlZC4KKyAgICAgKiBPdGhlciBlcnJvcnMgcHJvYmFibHkgaW5kaWNhdGUgdGhhdCB0aGUgY2hhbm5lbCBpcyBicm9rZW4uCisgICAgICovCisgICAgc3RhdHVzX3QgcmVjZWl2ZVNpZ25hbChjaGFyKiBvdXRTaWduYWwpOworCitwcml2YXRlOgorICAgIFN0cmluZzggbU5hbWU7CisgICAgaW50MzJfdCBtQXNobWVtRmQ7CisgICAgaW50MzJfdCBtUmVjZWl2ZVBpcGVGZDsKKyAgICBpbnQzMl90IG1TZW5kUGlwZUZkOworfTsKKworLyoKKyAqIFByaXZhdGUgaW50ZXJtZWRpYXRlIHJlcHJlc2VudGF0aW9uIG9mIGlucHV0IGV2ZW50cyBhcyBtZXNzYWdlcyB3cml0dGVuIGludG8gYW4KKyAqIGFzaG1lbSBidWZmZXIuCisgKi8KK3N0cnVjdCBJbnB1dE1lc3NhZ2UgeworICAgIC8qIFNlbWFwaG9yZSBjb3VudCBpcyBzZXQgdG8gMSB3aGVuIHRoZSBtZXNzYWdlIGlzIHB1Ymxpc2hlZC4KKyAgICAgKiBJdCBiZWNvbWVzIDAgdHJhbnNpZW50bHkgd2hpbGUgdGhlIHB1Ymxpc2hlciB1cGRhdGVzIHRoZSBtZXNzYWdlLgorICAgICAqIEl0IGJlY29tZXMgMCBwZXJtYW5lbnRseSB3aGVuIHRoZSBjb25zdW1lciBjb25zdW1lcyB0aGUgbWVzc2FnZS4KKyAgICAgKi8KKyAgICBzZW1fdCBzZW1hcGhvcmU7CisKKyAgICAvKiBJbml0aWFsaXplZCB0byBmYWxzZSBieSB0aGUgcHVibGlzaGVyLgorICAgICAqIFNldCB0byB0cnVlIGJ5IHRoZSBjb25zdW1lciB3aGVuIGl0IGNvbnN1bWVzIHRoZSBtZXNzYWdlLgorICAgICAqLworICAgIGJvb2wgY29uc3VtZWQ7CisKKyAgICBpbnQzMl90IHR5cGU7CisKKyAgICBzdHJ1Y3QgU2FtcGxlRGF0YSB7CisgICAgICAgIG5zZWNzX3QgZXZlbnRUaW1lOworICAgICAgICBQb2ludGVyQ29vcmRzIGNvb3Jkc1swXTsgLy8gdmFyaWFibGUgbGVuZ3RoCisgICAgfTsKKworICAgIGludDMyX3QgZGV2aWNlSWQ7CisgICAgaW50MzJfdCBuYXR1cmU7CisKKyAgICB1bmlvbiB7CisgICAgICAgIHN0cnVjdCB7CisgICAgICAgICAgICBpbnQzMl90IGFjdGlvbjsKKyAgICAgICAgICAgIGludDMyX3QgZmxhZ3M7CisgICAgICAgICAgICBpbnQzMl90IGtleUNvZGU7CisgICAgICAgICAgICBpbnQzMl90IHNjYW5Db2RlOworICAgICAgICAgICAgaW50MzJfdCBtZXRhU3RhdGU7CisgICAgICAgICAgICBpbnQzMl90IHJlcGVhdENvdW50OworICAgICAgICAgICAgbnNlY3NfdCBkb3duVGltZTsKKyAgICAgICAgICAgIG5zZWNzX3QgZXZlbnRUaW1lOworICAgICAgICB9IGtleTsKKworICAgICAgICBzdHJ1Y3QgeworICAgICAgICAgICAgaW50MzJfdCBhY3Rpb247CisgICAgICAgICAgICBpbnQzMl90IG1ldGFTdGF0ZTsKKyAgICAgICAgICAgIGludDMyX3QgZWRnZUZsYWdzOworICAgICAgICAgICAgbnNlY3NfdCBkb3duVGltZTsKKyAgICAgICAgICAgIGZsb2F0IHhPZmZzZXQ7CisgICAgICAgICAgICBmbG9hdCB5T2Zmc2V0OworICAgICAgICAgICAgZmxvYXQgeFByZWNpc2lvbjsKKyAgICAgICAgICAgIGZsb2F0IHlQcmVjaXNpb247CisgICAgICAgICAgICBzaXplX3QgcG9pbnRlckNvdW50OworICAgICAgICAgICAgaW50MzJfdCBwb2ludGVySWRzW01BWF9QT0lOVEVSU107CisgICAgICAgICAgICBzaXplX3Qgc2FtcGxlQ291bnQ7CisgICAgICAgICAgICBTYW1wbGVEYXRhIHNhbXBsZURhdGFbMF07IC8vIHZhcmlhYmxlIGxlbmd0aAorICAgICAgICB9IG1vdGlvbjsKKyAgICB9OworCisgICAgLyogR2V0cyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGFkZCB0byBzdGVwIHRvIHRoZSBuZXh0IFNhbXBsZURhdGEgb2JqZWN0IGluIGEgbW90aW9uCisgICAgICogZXZlbnQgbWVzc2FnZSBmb3IgYSBnaXZlbiBudW1iZXIgb2YgcG9pbnRlcnMuCisgICAgICovCisgICAgc3RhdGljIGlubGluZSBzaXplX3Qgc2FtcGxlRGF0YVN0cmlkZShzaXplX3QgcG9pbnRlckNvdW50KSB7CisgICAgICAgIHJldHVybiBzaXplb2YoSW5wdXRNZXNzYWdlOjpTYW1wbGVEYXRhKSArIHBvaW50ZXJDb3VudCAqIHNpemVvZihQb2ludGVyQ29vcmRzKTsKKyAgICB9CisKKyAgICAvKiBBZGRzIHRoZSBTYW1wbGVEYXRhIHN0cmlkZSB0byB0aGUgZ2l2ZW4gcG9pbnRlci4gKi8KKyAgICBzdGF0aWMgaW5saW5lIFNhbXBsZURhdGEqIHNhbXBsZURhdGFQdHJJbmNyZW1lbnQoU2FtcGxlRGF0YSogcHRyLCBzaXplX3Qgc3RyaWRlKSB7CisgICAgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PElucHV0TWVzc2FnZTo6U2FtcGxlRGF0YSo+KHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHB0cikgKyBzdHJpZGUpOworICAgIH0KK307CisKKy8qCisgKiBQdWJsaXNoZXMgaW5wdXQgZXZlbnRzIHRvIGFuIGFub255bW91cyBzaGFyZWQgbWVtb3J5IGJ1ZmZlci4KKyAqIFVzZXMgYXRvbWljIG9wZXJhdGlvbnMgdG8gY29vcmRpbmF0ZSBzaGFyZWQgYWNjZXNzIHdpdGggYSBzaW5nbGUgY29uY3VycmVudCBjb25zdW1lci4KKyAqLworY2xhc3MgSW5wdXRQdWJsaXNoZXIgeworcHVibGljOgorICAgIC8qIENyZWF0ZXMgYSBwdWJsaXNoZXIgYXNzb2NpYXRlZCB3aXRoIGFuIGlucHV0IGNoYW5uZWwuICovCisgICAgZXhwbGljaXQgSW5wdXRQdWJsaXNoZXIoY29uc3Qgc3A8SW5wdXRDaGFubmVsPiYgY2hhbm5lbCk7CisKKyAgICAvKiBEZXN0cm95cyB0aGUgcHVibGlzaGVyIGFuZCByZWxlYXNlcyBpdHMgaW5wdXQgY2hhbm5lbC4gKi8KKyAgICB+SW5wdXRQdWJsaXNoZXIoKTsKKworICAgIC8qIEdldHMgdGhlIHVuZGVybHlpbmcgaW5wdXQgY2hhbm5lbC4gKi8KKyAgICBpbmxpbmUgc3A8SW5wdXRDaGFubmVsPiBnZXRDaGFubmVsKCkgeyByZXR1cm4gbUNoYW5uZWw7IH0KKworICAgIC8qIFByZXBhcmVzIHRoZSBwdWJsaXNoZXIgZm9yIHVzZS4gIE11c3QgYmUgY2FsbGVkIGJlZm9yZSBpdCBpcyB1c2VkLgorICAgICAqIFJldHVybnMgT0sgb24gc3VjY2Vzcy4KKyAgICAgKgorICAgICAqIFRoaXMgbWV0aG9kIGltcGxpY2l0bHkgY2FsbHMgcmVzZXQoKS4gKi8KKyAgICBzdGF0dXNfdCBpbml0aWFsaXplKCk7CisKKyAgICAvKiBSZXNldHMgdGhlIHB1Ymxpc2hlciB0byBpdHMgaW5pdGlhbCBzdGF0ZSBhbmQgdW5waW5zIGl0cyBhc2htZW0gYnVmZmVyLgorICAgICAqIFJldHVybnMgT0sgb24gc3VjY2Vzcy4KKyAgICAgKgorICAgICAqIFNob3VsZCBiZSBjYWxsZWQgYWZ0ZXIgYW4gZXZlbnQgaGFzIGJlZW4gY29uc3VtZWQgdG8gcmVsZWFzZSByZXNvdXJjZXMgdXNlZCBieSB0aGUKKyAgICAgKiBwdWJsaXNoZXIgdW50aWwgdGhlIG5leHQgZXZlbnQgaXMgcmVhZHkgdG8gYmUgcHVibGlzaGVkLgorICAgICAqLworICAgIHN0YXR1c190IHJlc2V0KCk7CisKKyAgICAvKiBQdWJsaXNoZXMgYSBrZXkgZXZlbnQgdG8gdGhlIGFzaG1lbSBidWZmZXIuCisgICAgICoKKyAgICAgKiBSZXR1cm5zIE9LIG9uIHN1Y2Nlc3MuCisgICAgICogUmV0dXJucyBJTlZBTElEX09QRVJBVElPTiBpZiB0aGUgcHVibGlzaGVyIGhhcyBub3QgYmVlbiByZXNldC4KKyAgICAgKi8KKyAgICBzdGF0dXNfdCBwdWJsaXNoS2V5RXZlbnQoCisgICAgICAgICAgICBpbnQzMl90IGRldmljZUlkLAorICAgICAgICAgICAgaW50MzJfdCBuYXR1cmUsCisgICAgICAgICAgICBpbnQzMl90IGFjdGlvbiwKKyAgICAgICAgICAgIGludDMyX3QgZmxhZ3MsCisgICAgICAgICAgICBpbnQzMl90IGtleUNvZGUsCisgICAgICAgICAgICBpbnQzMl90IHNjYW5Db2RlLAorICAgICAgICAgICAgaW50MzJfdCBtZXRhU3RhdGUsCisgICAgICAgICAgICBpbnQzMl90IHJlcGVhdENvdW50LAorICAgICAgICAgICAgbnNlY3NfdCBkb3duVGltZSwKKyAgICAgICAgICAgIG5zZWNzX3QgZXZlbnRUaW1lKTsKKworICAgIC8qIFB1Ymxpc2hlcyBhIG1vdGlvbiBldmVudCB0byB0aGUgYXNobWVtIGJ1ZmZlci4KKyAgICAgKgorICAgICAqIFJldHVybnMgT0sgb24gc3VjY2Vzcy4KKyAgICAgKiBSZXR1cm5zIElOVkFMSURfT1BFUkFUSU9OIGlmIHRoZSBwdWJsaXNoZXIgaGFzIG5vdCBiZWVuIHJlc2V0LgorICAgICAqIFJldHVybnMgQkFEX1ZBTFVFIGlmIHBvaW50ZXJDb3VudCBpcyBsZXNzIHRoYW4gMSBvciBncmVhdGVyIHRoYW4gTUFYX1BPSU5URVJTLgorICAgICAqLworICAgIHN0YXR1c190IHB1Ymxpc2hNb3Rpb25FdmVudCgKKyAgICAgICAgICAgIGludDMyX3QgZGV2aWNlSWQsCisgICAgICAgICAgICBpbnQzMl90IG5hdHVyZSwKKyAgICAgICAgICAgIGludDMyX3QgYWN0aW9uLAorICAgICAgICAgICAgaW50MzJfdCBlZGdlRmxhZ3MsCisgICAgICAgICAgICBpbnQzMl90IG1ldGFTdGF0ZSwKKyAgICAgICAgICAgIGZsb2F0IHhPZmZzZXQsCisgICAgICAgICAgICBmbG9hdCB5T2Zmc2V0LAorICAgICAgICAgICAgZmxvYXQgeFByZWNpc2lvbiwKKyAgICAgICAgICAgIGZsb2F0IHlQcmVjaXNpb24sCisgICAgICAgICAgICBuc2Vjc190IGRvd25UaW1lLAorICAgICAgICAgICAgbnNlY3NfdCBldmVudFRpbWUsCisgICAgICAgICAgICBzaXplX3QgcG9pbnRlckNvdW50LAorICAgICAgICAgICAgY29uc3QgaW50MzJfdCogcG9pbnRlcklkcywKKyAgICAgICAgICAgIGNvbnN0IFBvaW50ZXJDb29yZHMqIHBvaW50ZXJDb29yZHMpOworCisgICAgLyogQXBwZW5kcyBhIG1vdGlvbiBzYW1wbGUgdG8gYSBtb3Rpb24gZXZlbnQgdW5sZXNzIGFscmVhZHkgY29uc3VtZWQuCisgICAgICoKKyAgICAgKiBSZXR1cm5zIE9LIG9uIHN1Y2Nlc3MuCisgICAgICogUmV0dXJucyBJTlZBTElEX09QRVJBVElPTiBpZiB0aGUgY3VycmVudCBldmVudCBpcyBub3QgYSBNT1RJT05fRVZFTlRfQUNUSU9OX01PVkUgZXZlbnQuCisgICAgICogUmV0dXJucyBGQUlMRURfVFJBTlNBQ1RJT04gaWYgdGhlIGN1cnJlbnQgZXZlbnQgaGFzIGFscmVhZHkgYmVlbiBjb25zdW1lZC4KKyAgICAgKiBSZXR1cm5zIE5PX01FTU9SWSBpZiB0aGUgYnVmZmVyIGlzIGZ1bGwgYW5kIG5vIGFkZGl0aW9uYWwgc2FtcGxlcyBjYW4gYmUgYWRkZWQuCisgICAgICovCisgICAgc3RhdHVzX3QgYXBwZW5kTW90aW9uU2FtcGxlKAorICAgICAgICAgICAgbnNlY3NfdCBldmVudFRpbWUsCisgICAgICAgICAgICBjb25zdCBQb2ludGVyQ29vcmRzKiBwb2ludGVyQ29vcmRzKTsKKworICAgIC8qIFNlbmRzIGEgZGlzcGF0Y2ggc2lnbmFsIHRvIHRoZSBjb25zdW1lciB0byBpbmZvcm0gaXQgdGhhdCBhIG5ldyBtZXNzYWdlIGlzIGF2YWlsYWJsZS4KKyAgICAgKgorICAgICAqIFJldHVybnMgT0sgb24gc3VjY2Vzcy4KKyAgICAgKiBFcnJvcnMgcHJvYmFibHkgaW5kaWNhdGUgdGhhdCB0aGUgY2hhbm5lbCBpcyBicm9rZW4uCisgICAgICovCisgICAgc3RhdHVzX3Qgc2VuZERpc3BhdGNoU2lnbmFsKCk7CisKKyAgICAvKiBSZWNlaXZlcyB0aGUgZmluaXNoZWQgc2lnbmFsIGZyb20gdGhlIGNvbnN1bWVyIGluIHJlcGx5IHRvIHRoZSBvcmlnaW5hbCBkaXNwYXRjaCBzaWduYWwuCisgICAgICoKKyAgICAgKiBSZXR1cm5zIE9LIG9uIHN1Y2Nlc3MuCisgICAgICogUmV0dXJucyBXT1VMRF9CTE9DSyBpZiB0aGVyZSBpcyBubyBzaWduYWwgcHJlc2VudC4KKyAgICAgKiBPdGhlciBlcnJvcnMgcHJvYmFibHkgaW5kaWNhdGUgdGhhdCB0aGUgY2hhbm5lbCBpcyBicm9rZW4uCisgICAgICovCisgICAgc3RhdHVzX3QgcmVjZWl2ZUZpbmlzaGVkU2lnbmFsKCk7CisKK3ByaXZhdGU6CisgICAgc3A8SW5wdXRDaGFubmVsPiBtQ2hhbm5lbDsKKworICAgIHNpemVfdCBtQXNobWVtU2l6ZTsKKyAgICBJbnB1dE1lc3NhZ2UqIG1TaGFyZWRNZXNzYWdlOworICAgIGJvb2wgbVBpbm5lZDsKKyAgICBib29sIG1TZW1hcGhvcmVJbml0aWFsaXplZDsKKyAgICBib29sIG1XYXNEaXNwYXRjaGVkOworCisgICAgc2l6ZV90IG1Nb3Rpb25FdmVudFBvaW50ZXJDb3VudDsKKyAgICBJbnB1dE1lc3NhZ2U6OlNhbXBsZURhdGEqIG1Nb3Rpb25FdmVudFNhbXBsZURhdGFUYWlsOworICAgIHNpemVfdCBtTW90aW9uRXZlbnRTYW1wbGVEYXRhU3RyaWRlOworCisgICAgc3RhdHVzX3QgcHVibGlzaElucHV0RXZlbnQoCisgICAgICAgICAgICBpbnQzMl90IHR5cGUsCisgICAgICAgICAgICBpbnQzMl90IGRldmljZUlkLAorICAgICAgICAgICAgaW50MzJfdCBuYXR1cmUpOworfTsKKworLyoKKyAqIENvbnN1bWVzIGlucHV0IGV2ZW50cyBmcm9tIGFuIGFub255bW91cyBzaGFyZWQgbWVtb3J5IGJ1ZmZlci4KKyAqIFVzZXMgYXRvbWljIG9wZXJhdGlvbnMgdG8gY29vcmRpbmF0ZSBzaGFyZWQgYWNjZXNzIHdpdGggYSBzaW5nbGUgY29uY3VycmVudCBwdWJsaXNoZXIuCisgKi8KK2NsYXNzIElucHV0Q29uc3VtZXIgeworcHVibGljOgorICAgIC8qIENyZWF0ZXMgYSBjb25zdW1lciBhc3NvY2lhdGVkIHdpdGggYW4gaW5wdXQgY2hhbm5lbC4gKi8KKyAgICBleHBsaWNpdCBJbnB1dENvbnN1bWVyKGNvbnN0IHNwPElucHV0Q2hhbm5lbD4mIGNoYW5uZWwpOworCisgICAgLyogRGVzdHJveXMgdGhlIGNvbnN1bWVyIGFuZCByZWxlYXNlcyBpdHMgaW5wdXQgY2hhbm5lbC4gKi8KKyAgICB+SW5wdXRDb25zdW1lcigpOworCisgICAgLyogR2V0cyB0aGUgdW5kZXJseWluZyBpbnB1dCBjaGFubmVsLiAqLworICAgIGlubGluZSBzcDxJbnB1dENoYW5uZWw+IGdldENoYW5uZWwoKSB7IHJldHVybiBtQ2hhbm5lbDsgfQorCisgICAgLyogUHJlcGFyZXMgdGhlIGNvbnN1bWVyIGZvciB1c2UuICBNdXN0IGJlIGNhbGxlZCBiZWZvcmUgaXQgaXMgdXNlZC4gKi8KKyAgICBzdGF0dXNfdCBpbml0aWFsaXplKCk7CisKKyAgICAvKiBDb25zdW1lcyB0aGUgaW5wdXQgZXZlbnQgaW4gdGhlIGJ1ZmZlciBhbmQgY29waWVzIGl0cyBjb250ZW50cyBpbnRvCisgICAgICogYW4gSW5wdXRFdmVudCBvYmplY3QgY3JlYXRlZCB1c2luZyB0aGUgc3BlY2lmaWVkIGZhY3RvcnkuCisgICAgICogVGhpcyBvcGVyYXRpb24gd2lsbCBibG9jayBpZiB0aGUgcHVibGlzaGVyIGlzIHVwZGF0aW5nIHRoZSBldmVudC4KKyAgICAgKgorICAgICAqIFJldHVybnMgT0sgb24gc3VjY2Vzcy4KKyAgICAgKiBSZXR1cm5zIElOVkFMSURfT1BFUkFUSU9OIGlmIHRoZXJlIGlzIG5vIGN1cnJlbnRseSBwdWJsaXNoZWQgZXZlbnQuCisgICAgICogUmV0dXJucyBOT19NRU1PUlkgaWYgdGhlIGV2ZW50IGNvdWxkIG5vdCBiZSBjcmVhdGVkLgorICAgICAqLworICAgIHN0YXR1c190IGNvbnN1bWUoSW5wdXRFdmVudEZhY3RvcnlJbnRlcmZhY2UqIGZhY3RvcnksIElucHV0RXZlbnQqKiBvdXRFdmVudCk7CisKKyAgICAvKiBTZW5kcyBhIGZpbmlzaGVkIHNpZ25hbCB0byB0aGUgcHVibGlzaGVyIHRvIGluZm9ybSBpdCB0aGF0IHRoZSBjdXJyZW50IG1lc3NhZ2UgaXMKKyAgICAgKiBmaW5pc2hlZCBwcm9jZXNzaW5nLgorICAgICAqCisgICAgICogUmV0dXJucyBPSyBvbiBzdWNjZXNzLgorICAgICAqIEVycm9ycyBwcm9iYWJseSBpbmRpY2F0ZSB0aGF0IHRoZSBjaGFubmVsIGlzIGJyb2tlbi4KKyAgICAgKi8KKyAgICBzdGF0dXNfdCBzZW5kRmluaXNoZWRTaWduYWwoKTsKKworICAgIC8qIFJlY2VpdmVzIHRoZSBkaXNwYXRjaGVkIHNpZ25hbCBmcm9tIHRoZSBwdWJsaXNoZXIuCisgICAgICoKKyAgICAgKiBSZXR1cm5zIE9LIG9uIHN1Y2Nlc3MuCisgICAgICogUmV0dXJucyBXT1VMRF9CTE9DSyBpZiB0aGVyZSBpcyBubyBzaWduYWwgcHJlc2VudC4KKyAgICAgKiBPdGhlciBlcnJvcnMgcHJvYmFibHkgaW5kaWNhdGUgdGhhdCB0aGUgY2hhbm5lbCBpcyBicm9rZW4uCisgICAgICovCisgICAgc3RhdHVzX3QgcmVjZWl2ZURpc3BhdGNoU2lnbmFsKCk7CisKK3ByaXZhdGU6CisgICAgc3A8SW5wdXRDaGFubmVsPiBtQ2hhbm5lbDsKKworICAgIHNpemVfdCBtQXNobWVtU2l6ZTsKKyAgICBJbnB1dE1lc3NhZ2UqIG1TaGFyZWRNZXNzYWdlOworCisgICAgdm9pZCBwb3B1bGF0ZUtleUV2ZW50KEtleUV2ZW50KiBrZXlFdmVudCkgY29uc3Q7CisgICAgdm9pZCBwb3B1bGF0ZU1vdGlvbkV2ZW50KE1vdGlvbkV2ZW50KiBtb3Rpb25FdmVudCkgY29uc3Q7Cit9OworCit9IC8vIG5hbWVzcGFjZSBhbmRyb2lkCisKKy8qCisgKiBOREsgaW5wdXQgcXVldWUgQVBJLgorICovCitzdHJ1Y3QgQUlucHV0UXVldWUgeworcHVibGljOgorICAgIC8qIENyZWF0ZXMgYSBjb25zdW1lciBhc3NvY2lhdGVkIHdpdGggYW4gaW5wdXQgY2hhbm5lbC4gKi8KKyAgICBleHBsaWNpdCBBSW5wdXRRdWV1ZShjb25zdCBhbmRyb2lkOjpzcDxhbmRyb2lkOjpJbnB1dENoYW5uZWw+JiBjaGFubmVsKTsKKworICAgIC8qIERlc3Ryb3lzIHRoZSBjb25zdW1lciBhbmQgcmVsZWFzZXMgaXRzIGlucHV0IGNoYW5uZWwuICovCisgICAgdmlydHVhbCB+QUlucHV0UXVldWUoKTsKKworICAgIGlubGluZSBhbmRyb2lkOjpJbnB1dENvbnN1bWVyJiBnZXRDb25zdW1lcigpIHsgcmV0dXJuIG1Db25zdW1lcjsgfQorICAgIAorICAgIGFuZHJvaWQ6OnN0YXR1c190IGNvbnN1bWUoYW5kcm9pZDo6SW5wdXRFdmVudCoqIGV2ZW50KTsKKyAgICAKKyAgICB2b2lkIHNldFBvbGxMb29wKGNvbnN0IGFuZHJvaWQ6OnNwPGFuZHJvaWQ6OlBvbGxMb29wPiYgcG9sbExvb3ApIHsgbVBvbGxMb29wID0gcG9sbExvb3A7IH0KKyAgICBjb25zdCBhbmRyb2lkOjpzcDxhbmRyb2lkOjpQb2xsTG9vcD4gZ2V0UG9sbExvb3AoKSBjb25zdCB7IHJldHVybiBtUG9sbExvb3A7IH0KKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgZG9EZWZhdWx0S2V5KGFuZHJvaWQ6OktleUV2ZW50KiBrZXlFdmVudCkgPSAwOworICAgIAorcHJpdmF0ZToKKyAgICBhbmRyb2lkOjpJbnB1dENvbnN1bWVyIG1Db25zdW1lcjsKKyAgICBhbmRyb2lkOjpQcmVhbGxvY2F0ZWRJbnB1dEV2ZW50RmFjdG9yeSBtSW5wdXRFdmVudEZhY3Rvcnk7CisgICAgYW5kcm9pZDo6c3A8YW5kcm9pZDo6UG9sbExvb3A+IG1Qb2xsTG9vcDsKK307CisKKyNlbmRpZiAvLyBfVUlfSU5QVVRfVFJBTlNQT1JUX0gKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWkvS2V5Y29kZUxhYmVscy5oIGIvaW5jbHVkZS91aS9LZXljb2RlTGFiZWxzLmgKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA1NzFlNDdiLi5lODFkMGY5Ci0tLSBhL2luY2x1ZGUvdWkvS2V5Y29kZUxhYmVscy5oCisrKyBiL2luY2x1ZGUvdWkvS2V5Y29kZUxhYmVscy5oCkBAIC0xMTQsNiArMTE0LDEwIEBACiAgICAgeyAiTUVESUFfUkVXSU5EIiwgODkgfSwKICAgICB7ICJNRURJQV9GQVNUX0ZPUldBUkQiLCA5MCB9LAogICAgIHsgIk1VVEUiLCA5MSB9LAorICAgIHsgIlBBR0VfVVAiLCA5MiB9LAorICAgIHsgIlBBR0VfRE9XTiIsIDkzIH0sCisgICAgeyAiUElDVFNZTUJPTFMiLCA5NCB9LAorICAgIHsgIlNXSVRDSF9DSEFSU0VUIiwgOTUgfSwKIAogICAgIC8vIE5PVEU6IElmIHlvdSBhZGQgYSBuZXcga2V5Y29kZSBoZXJlIHlvdSBtdXN0IGFsc28gYWRkIGl0IHRvOgogICAgIC8vICAgKGVudW0gS2V5Q29kZSwgaW4gdGhpcyBmaWxlKQpAQCAtMjE4LDcgKzIyMiwxMSBAQAogICAgIGtLZXlDb2RlUHJldmlvdXNTb25nID0gODgsCiAgICAga0tleUNvZGVSZXdpbmQgPSA4OSwKICAgICBrS2V5Q29kZUZvcndhcmQgPSA5MCwKLSAgICBrS2V5Q29kZU11dGUgPSA5MQorICAgIGtLZXlDb2RlTXV0ZSA9IDkxLAorICAgIGtLZXlDb2RlUGFnZVVwID0gOTIsCisgICAga0tleUNvZGVQYWdlRG93biA9IDkzLAorICAgIGtLZXlDb2RlUGljdFN5bWJvbHMgPSA5NCwKKyAgICBrS2V5Q29kZVN3aXRjaENoYXJzZXQgPSA5NQogfSBLZXlDb2RlOwogCiBzdGF0aWMgY29uc3QgS2V5Y29kZUxhYmVsIEZMQUdTW10gPSB7CmRpZmYgLS1naXQgYS9pbmNsdWRlL3VpL1JlY3QuaCBiL2luY2x1ZGUvdWkvUmVjdC5oCmluZGV4IGEyMTNjMDkuLjRlNjVhMmQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdWkvUmVjdC5oCisrKyBiL2luY2x1ZGUvdWkvUmVjdC5oCkBAIC0yMCwzMSArMjAsMjggQEAKICNpbmNsdWRlIDx1dGlscy9UeXBlSGVscGVycy5oPgogI2luY2x1ZGUgPHVpL1BvaW50Lmg+CiAKKyNpbmNsdWRlIDxhbmRyb2lkL3JlY3QuaD4KKwogbmFtZXNwYWNlIGFuZHJvaWQgewogCi1jbGFzcyBSZWN0CitjbGFzcyBSZWN0IDogcHVibGljIEFSZWN0CiB7CiBwdWJsaWM6Ci0gICAgaW50IGxlZnQ7Ci0gICAgaW50IHRvcDsKLSAgICBpbnQgcmlnaHQ7Ci0gICAgaW50IGJvdHRvbTsKLQotICAgIHR5cGVkZWYgaW50IHZhbHVlX3R5cGU7CisgICAgdHlwZWRlZiBpbnQzMl90IHZhbHVlX3R5cGU7CiAKICAgICAvLyB3ZSBkb24ndCBwcm92aWRlIGNvcHktY3RvciBhbmQgb3BlcmF0b3I9IG9uIHB1cnBvc2UKICAgICAvLyBiZWNhdXNlIHdlIHdhbnQgdGhlIGNvbXBpbGVyIGdlbmVyYXRlZCB2ZXJzaW9ucwogCiAgICAgaW5saW5lIFJlY3QoKSB7CiAgICAgfQotICAgIGlubGluZSBSZWN0KGludCB3LCBpbnQgaCkKLSAgICAgICAgOiBsZWZ0KDApLCB0b3AoMCksIHJpZ2h0KHcpLCBib3R0b20oaCkgeworICAgIGlubGluZSBSZWN0KGludDMyX3QgdywgaW50MzJfdCBoKSB7CisgICAgICAgIGxlZnQgPSB0b3AgPSAwOyByaWdodCA9IHc7IGJvdHRvbSA9IGg7CiAgICAgfQotICAgIGlubGluZSBSZWN0KGludCBsLCBpbnQgdCwgaW50IHIsIGludCBiKQotICAgICAgICA6IGxlZnQobCksIHRvcCh0KSwgcmlnaHQociksIGJvdHRvbShiKSB7CisgICAgaW5saW5lIFJlY3QoaW50MzJfdCBsLCBpbnQzMl90IHQsIGludDMyX3QgciwgaW50MzJfdCBiKSB7CisgICAgICAgIGxlZnQgPSBsOyB0b3AgPSB0OyByaWdodCA9IHI7IGJvdHRvbSA9IGI7CiAgICAgfQotICAgIGlubGluZSBSZWN0KGNvbnN0IFBvaW50JiBsdCwgY29uc3QgUG9pbnQmIHJiKSAKLSAgICAgICAgOiBsZWZ0KGx0LngpLCB0b3AobHQueSksIHJpZ2h0KHJiLngpLCBib3R0b20ocmIueSkgeworICAgIGlubGluZSBSZWN0KGNvbnN0IFBvaW50JiBsdCwgY29uc3QgUG9pbnQmIHJiKSB7CisgICAgICAgIGxlZnQgPSBsdC54OyB0b3AgPSBsdC55OyByaWdodCA9IHJiLng7IGJvdHRvbSA9IHJiLnk7CiAgICAgfQogCiAgICAgdm9pZCBtYWtlSW52YWxpZCgpOwpAQCAtNjgsMTIgKzY1LDEyIEBACiAgICAgfQogCiAgICAgLy8gcmVjdGFuZ2xlJ3Mgd2lkdGgKLSAgICBpbmxpbmUgaW50IHdpZHRoKCkgY29uc3QgeworICAgIGlubGluZSBpbnQzMl90IHdpZHRoKCkgY29uc3QgewogICAgICAgICByZXR1cm4gcmlnaHQtbGVmdDsKICAgICB9CiAgICAgCiAgICAgLy8gcmVjdGFuZ2xlJ3MgaGVpZ2h0Ci0gICAgaW5saW5lIGludCBoZWlnaHQoKSBjb25zdCB7CisgICAgaW5saW5lIGludDMyX3QgaGVpZ2h0KCkgY29uc3QgewogICAgICAgICByZXR1cm4gYm90dG9tLXRvcDsKICAgICB9CiAKQEAgLTEzNiwxMiArMTMzLDEyIEBACiAgICAgY29uc3QgUmVjdCBvcGVyYXRvciArIChjb25zdCBQb2ludCYgcmhzKSBjb25zdDsKICAgICBjb25zdCBSZWN0IG9wZXJhdG9yIC0gKGNvbnN0IFBvaW50JiByaHMpIGNvbnN0OwogCi0gICAgdm9pZCB0cmFuc2xhdGUoaW50IGR4LCBpbnQgZHkpIHsgLy8gbGVnYWN5LCBkb24ndCB1c2UuCisgICAgdm9pZCB0cmFuc2xhdGUoaW50MzJfdCBkeCwgaW50MzJfdCBkeSkgeyAvLyBsZWdhY3ksIGRvbid0IHVzZS4KICAgICAgICAgb2Zmc2V0QnkoZHgsIGR5KTsKICAgICB9CiAgCi0gICAgUmVjdCYgICBvZmZzZXRUbyhpbnQgeCwgaW50IHkpOwotICAgIFJlY3QmICAgb2Zmc2V0QnkoaW50IHgsIGludCB5KTsKKyAgICBSZWN0JiAgIG9mZnNldFRvKGludDMyX3QgeCwgaW50MzJfdCB5KTsKKyAgICBSZWN0JiAgIG9mZnNldEJ5KGludDMyX3QgeCwgaW50MzJfdCB5KTsKICAgICBib29sICAgIGludGVyc2VjdChjb25zdCBSZWN0JiB3aXRoLCBSZWN0KiByZXN1bHQpIGNvbnN0OwogfTsKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS91aS9hbmRyb2lkX25hdGl2ZV9idWZmZXIuaCBiL2luY2x1ZGUvdWkvYW5kcm9pZF9uYXRpdmVfYnVmZmVyLmgKaW5kZXggOWM5MmFmOC4uNDAyODQzZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS91aS9hbmRyb2lkX25hdGl2ZV9idWZmZXIuaAorKysgYi9pbmNsdWRlL3VpL2FuZHJvaWRfbmF0aXZlX2J1ZmZlci5oCkBAIC0zMyw2ICszMywxNSBAQAogICAgICAgICBjb21tb24udmVyc2lvbiA9IHNpemVvZihhbmRyb2lkX25hdGl2ZV9idWZmZXJfdCk7CiAgICAgICAgIG1lbXNldChjb21tb24ucmVzZXJ2ZWQsIDAsIHNpemVvZihjb21tb24ucmVzZXJ2ZWQpKTsKICAgICB9CisKKyAgICAvLyBJbXBsZW1lbnQgdGhlIG1ldGhvZHMgdGhhdCBzcDxhbmRyb2lkX25hdGl2ZV9idWZmZXJfdD4gZXhwZWN0cyBzbyB0aGF0IGl0CisgICAgLy8gY2FuIGJlIHVzZWQgdG8gYXV0b21hdGljYWxseSByZWZjb3VudCBhbmRyb2lkX25hdGl2ZV9idWZmZXJfdCdzLgorICAgIHZvaWQgaW5jU3Ryb25nKGNvbnN0IHZvaWQqIGlkKSBjb25zdCB7CisgICAgICAgIGNvbW1vbi5pbmNSZWYoY29uc3RfY2FzdDxhbmRyb2lkX25hdGl2ZV9iYXNlX3QqPigmY29tbW9uKSk7CisgICAgfQorICAgIHZvaWQgZGVjU3Ryb25nKGNvbnN0IHZvaWQqIGlkKSBjb25zdCB7CisgICAgICAgIGNvbW1vbi5kZWNSZWYoY29uc3RfY2FzdDxhbmRyb2lkX25hdGl2ZV9iYXNlX3QqPigmY29tbW9uKSk7CisgICAgfQogI2VuZGlmCiAKICAgICBzdHJ1Y3QgYW5kcm9pZF9uYXRpdmVfYmFzZV90IGNvbW1vbjsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWkvZWdsL2FuZHJvaWRfbmF0aXZlcy5oIGIvaW5jbHVkZS91aS9lZ2wvYW5kcm9pZF9uYXRpdmVzLmgKaW5kZXggNzczZmQ5My4uY2E4OWIwNiAxMDA2NDQKLS0tIGEvaW5jbHVkZS91aS9lZ2wvYW5kcm9pZF9uYXRpdmVzLmgKKysrIGIvaW5jbHVkZS91aS9lZ2wvYW5kcm9pZF9uYXRpdmVzLmgKQEAgLTIyLDYgKzIyLDggQEAKIAogI2luY2x1ZGUgPGhhcmR3YXJlL2dyYWxsb2MuaD4KIAorI2luY2x1ZGUgPGFuZHJvaWQvbmF0aXZlX3dpbmRvdy5oPgorCiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAiQyIgewogI2VuZGlmCkBAIC00MSw2ICs0MywxNCBAQAogCiBzdHJ1Y3QgYW5kcm9pZF9uYXRpdmVfYnVmZmVyX3Q7CiAKK3R5cGVkZWYgc3RydWN0IGFuZHJvaWRfbmF0aXZlX3JlY3RfdAoreworICAgIGludDMyX3QgbGVmdDsKKyAgICBpbnQzMl90IHRvcDsKKyAgICBpbnQzMl90IHJpZ2h0OworICAgIGludDMyX3QgYm90dG9tOworfSBhbmRyb2lkX25hdGl2ZV9yZWN0X3Q7CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiB0eXBlZGVmIHN0cnVjdCBhbmRyb2lkX25hdGl2ZV9iYXNlX3QKQEAgLTYzLDE1ICs3MywxOCBAQAogLyogYXR0cmlidXRlcyBxdWVyaWFibGUgd2l0aCBxdWVyeSgpICovCiBlbnVtIHsKICAgICBOQVRJVkVfV0lORE9XX1dJRFRIICAgICA9IDAsCi0gICAgTkFUSVZFX1dJTkRPV19IRUlHSFQgICAgPSAxLAotICAgIE5BVElWRV9XSU5ET1dfRk9STUFUICAgID0gMiwKKyAgICBOQVRJVkVfV0lORE9XX0hFSUdIVCwKKyAgICBOQVRJVkVfV0lORE9XX0ZPUk1BVCwKIH07CiAKIC8qIHZhbGlkIG9wZXJhdGlvbnMgZm9yIHRoZSAoKnBlcmZvcm0pKCkgaG9vayAqLwogZW51bSB7CiAgICAgTkFUSVZFX1dJTkRPV19TRVRfVVNBR0UgID0gMCwKLSAgICBOQVRJVkVfV0lORE9XX0NPTk5FQ1QgICAgPSAxLAotICAgIE5BVElWRV9XSU5ET1dfRElTQ09OTkVDVCA9IDIKKyAgICBOQVRJVkVfV0lORE9XX0NPTk5FQ1QsCisgICAgTkFUSVZFX1dJTkRPV19ESVNDT05ORUNULAorICAgIE5BVElWRV9XSU5ET1dfU0VUX0NST1AsCisgICAgTkFUSVZFX1dJTkRPV19TRVRfQlVGRkVSX0NPVU5ULAorICAgIE5BVElWRV9XSU5ET1dfU0VUX0JVRkZFUlNfR0VPTUVUUlksCiB9OwogCiAvKiBwYXJhbWV0ZXIgZm9yIE5BVElWRV9XSU5ET1dfW0RJU11DT05ORUNUICovCkBAIC03OSwxNiArOTIsMjUgQEAKICAgICBOQVRJVkVfV0lORE9XX0FQSV9FR0wgPSAxCiB9OwogCi10eXBlZGVmIHN0cnVjdCBhbmRyb2lkX25hdGl2ZV93aW5kb3dfdCAKK3N0cnVjdCBBTmF0aXZlV2luZG93IAogewogI2lmZGVmIF9fY3BsdXNwbHVzCi0gICAgYW5kcm9pZF9uYXRpdmVfd2luZG93X3QoKQorICAgIEFOYXRpdmVXaW5kb3coKQogICAgICAgICA6IGZsYWdzKDApLCBtaW5Td2FwSW50ZXJ2YWwoMCksIG1heFN3YXBJbnRlcnZhbCgwKSwgeGRwaSgwKSwgeWRwaSgwKQogICAgIHsKICAgICAgICAgY29tbW9uLm1hZ2ljID0gQU5EUk9JRF9OQVRJVkVfV0lORE9XX01BR0lDOwotICAgICAgICBjb21tb24udmVyc2lvbiA9IHNpemVvZihhbmRyb2lkX25hdGl2ZV93aW5kb3dfdCk7CisgICAgICAgIGNvbW1vbi52ZXJzaW9uID0gc2l6ZW9mKEFOYXRpdmVXaW5kb3cpOwogICAgICAgICBtZW1zZXQoY29tbW9uLnJlc2VydmVkLCAwLCBzaXplb2YoY29tbW9uLnJlc2VydmVkKSk7CiAgICAgfQorCisgICAgLy8gSW1wbGVtZW50IHRoZSBtZXRob2RzIHRoYXQgc3A8QU5hdGl2ZVdpbmRvdz4gZXhwZWN0cyBzbyB0aGF0IGl0CisgICAgLy8gY2FuIGJlIHVzZWQgdG8gYXV0b21hdGljYWxseSByZWZjb3VudCBBTmF0aXZlV2luZG93J3MuCisgICAgdm9pZCBpbmNTdHJvbmcoY29uc3Qgdm9pZCogaWQpIGNvbnN0IHsKKyAgICAgICAgY29tbW9uLmluY1JlZihjb25zdF9jYXN0PGFuZHJvaWRfbmF0aXZlX2Jhc2VfdCo+KCZjb21tb24pKTsKKyAgICB9CisgICAgdm9pZCBkZWNTdHJvbmcoY29uc3Qgdm9pZCogaWQpIGNvbnN0IHsKKyAgICAgICAgY29tbW9uLmRlY1JlZihjb25zdF9jYXN0PGFuZHJvaWRfbmF0aXZlX2Jhc2VfdCo+KCZjb21tb24pKTsKKyAgICB9CiAjZW5kaWYKICAgICAKICAgICBzdHJ1Y3QgYW5kcm9pZF9uYXRpdmVfYmFzZV90IGNvbW1vbjsKQEAgLTExNSw3ICsxMzcsNyBAQAogICAgICAqIAogICAgICAqIFJldHVybnMgMCBvbiBzdWNjZXNzIG9yIC1lcnJubyBvbiBlcnJvci4KICAgICAgKi8KLSAgICBpbnQgICAgICgqc2V0U3dhcEludGVydmFsKShzdHJ1Y3QgYW5kcm9pZF9uYXRpdmVfd2luZG93X3QqIHdpbmRvdywKKyAgICBpbnQgICAgICgqc2V0U3dhcEludGVydmFsKShzdHJ1Y3QgQU5hdGl2ZVdpbmRvdyogd2luZG93LAogICAgICAgICAgICAgICAgIGludCBpbnRlcnZhbCk7CiAgICAgCiAgICAgLyoKQEAgLTEyNSw3ICsxNDcsNyBAQAogICAgICAqIAogICAgICAqIFJldHVybnMgMCBvbiBzdWNjZXNzIG9yIC1lcnJubyBvbiBlcnJvci4KICAgICAgKi8KLSAgICBpbnQgICAgICgqZGVxdWV1ZUJ1ZmZlcikoc3RydWN0IGFuZHJvaWRfbmF0aXZlX3dpbmRvd190KiB3aW5kb3csIAorICAgIGludCAgICAgKCpkZXF1ZXVlQnVmZmVyKShzdHJ1Y3QgQU5hdGl2ZVdpbmRvdyogd2luZG93LAogICAgICAgICAgICAgICAgIHN0cnVjdCBhbmRyb2lkX25hdGl2ZV9idWZmZXJfdCoqIGJ1ZmZlcik7CiAKICAgICAvKgpAQCAtMTM1LDcgKzE1Nyw3IEBACiAgICAgICogCiAgICAgICogUmV0dXJucyAwIG9uIHN1Y2Nlc3Mgb3IgLWVycm5vIG9uIGVycm9yLgogICAgICAqLwotICAgIGludCAgICAgKCpsb2NrQnVmZmVyKShzdHJ1Y3QgYW5kcm9pZF9uYXRpdmVfd2luZG93X3QqIHdpbmRvdywKKyAgICBpbnQgICAgICgqbG9ja0J1ZmZlcikoc3RydWN0IEFOYXRpdmVXaW5kb3cqIHdpbmRvdywKICAgICAgICAgICAgICAgICBzdHJ1Y3QgYW5kcm9pZF9uYXRpdmVfYnVmZmVyX3QqIGJ1ZmZlcik7CiAgICAvKgogICAgICogaG9vayBjYWxsZWQgYnkgRUdMIHdoZW4gbW9kaWZpY2F0aW9ucyB0byB0aGUgcmVuZGVyIGJ1ZmZlciBhcmUgZG9uZS4gCkBAIC0xNDUsNyArMTY3LDcgQEAKICAgICAqIAogICAgICogUmV0dXJucyAwIG9uIHN1Y2Nlc3Mgb3IgLWVycm5vIG9uIGVycm9yLgogICAgICovCi0gICAgaW50ICAgICAoKnF1ZXVlQnVmZmVyKShzdHJ1Y3QgYW5kcm9pZF9uYXRpdmVfd2luZG93X3QqIHdpbmRvdywKKyAgICBpbnQgICAgICgqcXVldWVCdWZmZXIpKHN0cnVjdCBBTmF0aXZlV2luZG93KiB3aW5kb3csCiAgICAgICAgICAgICAgICAgc3RydWN0IGFuZHJvaWRfbmF0aXZlX2J1ZmZlcl90KiBidWZmZXIpOwogCiAgICAgLyoKQEAgLTE1MywxMyArMTc1LDEzIEBACiAgICAgICogCiAgICAgICogUmV0dXJucyAwIG9uIHN1Y2Nlc3Mgb3IgLWVycm5vIG9uIGVycm9yLgogICAgICAqLwotICAgIGludCAgICAgKCpxdWVyeSkoc3RydWN0IGFuZHJvaWRfbmF0aXZlX3dpbmRvd190KiB3aW5kb3csCisgICAgaW50ICAgICAoKnF1ZXJ5KShzdHJ1Y3QgQU5hdGl2ZVdpbmRvdyogd2luZG93LAogICAgICAgICAgICAgICAgIGludCB3aGF0LCBpbnQqIHZhbHVlKTsKICAgICAKICAgICAvKgogICAgICAqIGhvb2sgdXNlZCB0byBwZXJmb3JtIHZhcmlvdXMgb3BlcmF0aW9ucyBvbiB0aGUgc3VyZmFjZS4KICAgICAgKiAoKnBlcmZvcm0pKCkgaXMgYSBnZW5lcmljIG1lY2hhbmlzbSB0byBhZGQgZnVuY3Rpb25hbGl0eSB0bwotICAgICAqIGFuZHJvaWRfbmF0aXZlX3dpbmRvd190IHdoaWxlIGtlZXBpbmcgYmFja3dhcmQgYmluYXJ5IGNvbXBhdGliaWxpdHkuCisgICAgICogQU5hdGl2ZVdpbmRvdyB3aGlsZSBrZWVwaW5nIGJhY2t3YXJkIGJpbmFyeSBjb21wYXRpYmlsaXR5LgogICAgICAqIAogICAgICAqIFRoaXMgaG9vayBzaG91bGQgbm90IGJlIGNhbGxlZCBkaXJlY3RseSwgaW5zdGVhZCB1c2UgdGhlIGhlbHBlciBmdW5jdGlvbnMKICAgICAgKiBkZWZpbmVkIGJlbG93LgpAQCAtMTcxLDE5ICsxOTMsMjUgQEAKICAgICAgKiAgICAgTkFUSVZFX1dJTkRPV19TRVRfVVNBR0UKICAgICAgKiAgICAgTkFUSVZFX1dJTkRPV19DT05ORUNUCiAgICAgICogICAgIE5BVElWRV9XSU5ET1dfRElTQ09OTkVDVAorICAgICAqICAgICBOQVRJVkVfV0lORE9XX1NFVF9DUk9QCisgICAgICogICAgIE5BVElWRV9XSU5ET1dfU0VUX0JVRkZFUl9DT1VOVAorICAgICAqICAgICBOQVRJVkVfV0lORE9XX1NFVF9CVUZGRVJTX0dFT01FVFJZCiAgICAgICogIAogICAgICAqLwogICAgIAotICAgIGludCAgICAgKCpwZXJmb3JtKShzdHJ1Y3QgYW5kcm9pZF9uYXRpdmVfd2luZG93X3QqIHdpbmRvdywKKyAgICBpbnQgICAgICgqcGVyZm9ybSkoc3RydWN0IEFOYXRpdmVXaW5kb3cqIHdpbmRvdywKICAgICAgICAgICAgICAgICBpbnQgb3BlcmF0aW9uLCAuLi4gKTsKICAgICAKICAgICB2b2lkKiByZXNlcnZlZF9wcm9jWzNdOwotfSBhbmRyb2lkX25hdGl2ZV93aW5kb3dfdDsKK307CiAKKy8vIEJhY2t3YXJkcyBjb21wYXRpYmlsaXR5Li4uICBwbGVhc2Ugc3dpdGNoIHRvIEFOYXRpdmVXaW5kb3cuCit0eXBlZGVmIHN0cnVjdCBBTmF0aXZlV2luZG93IGFuZHJvaWRfbmF0aXZlX3dpbmRvd190OwogCiAvKgotICogIG5hdGl2ZV93aW5kb3dfc2V0X3VzYWdlKCkgc2V0cyB0aGUgaW50ZW5kZWQgdXNhZ2UgZmxhZ3MgZm9yIHRoZSBuZXh0Ci0gKiAgYnVmZmVycyBhY3F1aXJlZCB3aXRoICgqbG9ja0J1ZmZlcikoKSBhbmQgb24uCisgKiAgbmF0aXZlX3dpbmRvd19zZXRfdXNhZ2UoLi4uLCB1c2FnZSkKKyAqICBTZXRzIHRoZSBpbnRlbmRlZCB1c2FnZSBmbGFncyBmb3IgdGhlIG5leHQgYnVmZmVycworICogIGFjcXVpcmVkIHdpdGggKCpsb2NrQnVmZmVyKSgpIGFuZCBvbi4KICAqICBCeSBkZWZhdWx0IChpZiB0aGlzIGZ1bmN0aW9uIGlzIG5ldmVyIGNhbGxlZCksIGEgdXNhZ2Ugb2YKICAqICAgICAgR1JBTExPQ19VU0FHRV9IV19SRU5ERVIgfCBHUkFMTE9DX1VTQUdFX0hXX1RFWFRVUkUKICAqICBpcyBhc3N1bWVkLgpAQCAtMTkyLDM1ICsyMjAsODMgQEAKICAqLwogCiBzdGF0aWMgaW5saW5lIGludCBuYXRpdmVfd2luZG93X3NldF91c2FnZSgKLSAgICAgICAgYW5kcm9pZF9uYXRpdmVfd2luZG93X3QqIHdpbmRvdywgaW50IHVzYWdlKQorICAgICAgICBBTmF0aXZlV2luZG93KiB3aW5kb3csIGludCB1c2FnZSkKIHsKICAgICByZXR1cm4gd2luZG93LT5wZXJmb3JtKHdpbmRvdywgTkFUSVZFX1dJTkRPV19TRVRfVVNBR0UsIHVzYWdlKTsKIH0KIAogLyoKLSAqIG5hdGl2ZV93aW5kb3dfY29ubmVjdCguLi4sIE5BVElWRV9XSU5ET1dfQVBJX0VHTCkgbXVzdCBiZSBjYWxsZWQKLSAqIGJ5IEVHTCB3aGVuIHRoZSB3aW5kb3cgaXMgbWFkZSBjdXJyZW50LgorICogbmF0aXZlX3dpbmRvd19jb25uZWN0KC4uLiwgTkFUSVZFX1dJTkRPV19BUElfRUdMKQorICogTXVzdCBiZSBjYWxsZWQgYnkgRUdMIHdoZW4gdGhlIHdpbmRvdyBpcyBtYWRlIGN1cnJlbnQuCiAgKiBSZXR1cm5zIC1FSU5WQUwgaWYgZm9yIHNvbWUgcmVhc29uIHRoZSB3aW5kb3cgY2Fubm90IGJlIGNvbm5lY3RlZCwgd2hpY2gKICAqIGNhbiBoYXBwZW4gaWYgaXQncyBjb25uZWN0ZWQgdG8gc29tZSBvdGhlciBBUEkuCiAgKi8KIHN0YXRpYyBpbmxpbmUgaW50IG5hdGl2ZV93aW5kb3dfY29ubmVjdCgKLSAgICAgICAgYW5kcm9pZF9uYXRpdmVfd2luZG93X3QqIHdpbmRvdywgaW50IGFwaSkKKyAgICAgICAgQU5hdGl2ZVdpbmRvdyogd2luZG93LCBpbnQgYXBpKQogewogICAgIHJldHVybiB3aW5kb3ctPnBlcmZvcm0od2luZG93LCBOQVRJVkVfV0lORE9XX0NPTk5FQ1QsIGFwaSk7CiB9CiAKIC8qCi0gKiBuYXRpdmVfd2luZG93X2Rpc2Nvbm5lY3QoLi4uLCBOQVRJVkVfV0lORE9XX0FQSV9FR0wpIG11c3QgYmUgY2FsbGVkCi0gKiBieSBFR0wgd2hlbiB0aGUgd2luZG93IGlzIG1hZGUgbm90IGN1cnJlbnQuCisgKiBuYXRpdmVfd2luZG93X2Rpc2Nvbm5lY3QoLi4uLCBOQVRJVkVfV0lORE9XX0FQSV9FR0wpCisgKiBNdXN0IGJlIGNhbGxlZCBieSBFR0wgd2hlbiB0aGUgd2luZG93IGlzIG1hZGUgbm90IGN1cnJlbnQuCiAgKiBBbiBlcnJvciBpcyByZXR1cm5lZCBpZiBmb3IgaW5zdGFuY2UgdGhlIHdpbmRvdyB3YXNuJ3QgY29ubmVjdGVkIGluIHRoZQogICogZmlyc3QgcGxhY2UuCiAgKi8KIHN0YXRpYyBpbmxpbmUgaW50IG5hdGl2ZV93aW5kb3dfZGlzY29ubmVjdCgKLSAgICAgICAgYW5kcm9pZF9uYXRpdmVfd2luZG93X3QqIHdpbmRvdywgaW50IGFwaSkKKyAgICAgICAgQU5hdGl2ZVdpbmRvdyogd2luZG93LCBpbnQgYXBpKQogewogICAgIHJldHVybiB3aW5kb3ctPnBlcmZvcm0od2luZG93LCBOQVRJVkVfV0lORE9XX0RJU0NPTk5FQ1QsIGFwaSk7CiB9CiAKKy8qCisgKiBuYXRpdmVfd2luZG93X3NldF9jcm9wKC4uLiwgY3JvcCkKKyAqIFNldHMgd2hpY2ggcmVnaW9uIG9mIHRoZSBuZXh0IHF1ZXVlZCBidWZmZXJzIG5lZWRzIHRvIGJlIGNvbnNpZGVyZWQuCisgKiBBIGJ1ZmZlcidzIGNyb3AgcmVnaW9uIGlzIHNjYWxlZCB0byBtYXRjaCB0aGUgc3VyZmFjZSdzIHNpemUuCisgKgorICogVGhlIHNwZWNpZmllZCBjcm9wIHJlZ2lvbiBhcHBsaWVzIHRvIGFsbCBidWZmZXJzIHF1ZXVlZCBhZnRlciBpdCBpcyBjYWxsZWQuCisgKgorICogaWYgJ2Nyb3AnIGlzIE5VTEwsIHN1YnNlcXVlbnRseSBxdWV1ZWQgYnVmZmVycyB3b24ndCBiZSBjcm9wcGVkLgorICoKKyAqIEFuIGVycm9yIGlzIHJldHVybmVkIGlmIGZvciBpbnN0YW5jZSB0aGUgY3JvcCByZWdpb24gaXMgaW52YWxpZCwKKyAqIG91dCBvZiB0aGUgYnVmZmVyJ3MgYm91bmQgb3IgaWYgdGhlIHdpbmRvdyBpcyBpbnZhbGlkLgorICovCitzdGF0aWMgaW5saW5lIGludCBuYXRpdmVfd2luZG93X3NldF9jcm9wKAorICAgICAgICBBTmF0aXZlV2luZG93KiB3aW5kb3csCisgICAgICAgIGFuZHJvaWRfbmF0aXZlX3JlY3RfdCBjb25zdCAqIGNyb3ApCit7CisgICAgcmV0dXJuIHdpbmRvdy0+cGVyZm9ybSh3aW5kb3csIE5BVElWRV9XSU5ET1dfU0VUX0NST1AsIGNyb3ApOworfQorCisvKgorICogbmF0aXZlX3dpbmRvd19zZXRfYnVmZmVyX2NvdW50KC4uLiwgY291bnQpCisgKiBTZXRzIHRoZSBudW1iZXIgb2YgYnVmZmVycyBhc3NvY2lhdGVkIHdpdGggdGhpcyBuYXRpdmUgd2luZG93LgorICovCitzdGF0aWMgaW5saW5lIGludCBuYXRpdmVfd2luZG93X3NldF9idWZmZXJfY291bnQoCisgICAgICAgIEFOYXRpdmVXaW5kb3cqIHdpbmRvdywKKyAgICAgICAgc2l6ZV90IGJ1ZmZlckNvdW50KQoreworICAgIHJldHVybiB3aW5kb3ctPnBlcmZvcm0od2luZG93LCBOQVRJVkVfV0lORE9XX1NFVF9CVUZGRVJfQ09VTlQsIGJ1ZmZlckNvdW50KTsKK30KKworLyoKKyAqIG5hdGl2ZV93aW5kb3dfc2V0X2J1ZmZlcnNfZ2VvbWV0cnkoLi4uLCBpbnQgdywgaW50IGgsIGludCBmb3JtYXQpCisgKiBBbGwgYnVmZmVycyBkZXF1ZXVlZCBhZnRlciB0aGlzIGNhbGwgd2lsbCBoYXZlIHRoZSBnZW9tZXRyeSBzcGVjaWZpZWQuCisgKiBJbiBwYXJ0aWN1bGFyLCBhbGwgYnVmZmVycyB3aWxsIGhhdmUgYSBmaXhlZC1zaXplLCBpbmRlcGVuZGVudCBmb3JtIHRoZQorICogbmF0aXZlLXdpbmRvdyBzaXplLiBUaGV5IHdpbGwgYmUgYXBwcm9wcmlhdGVseSBzY2FsZWQgdG8gdGhlIHdpbmRvdy1zaXplCisgKiB1cG9uIGNvbXBvc2l0aW9uLgorICoKKyAqIElmIGFsbCBwYXJhbWV0ZXJzIGFyZSAwLCB0aGUgbm9ybWFsIGJlaGF2aW9yIGlzIHJlc3RvcmVkLiBUaGF0IGlzLAorICogZGVxdWV1ZWQgYnVmZmVycyBmb2xsb3dpbmcgdGhpcyBjYWxsIHdpbGwgYmUgc2l6ZWQgdG8gdGhlIHdpbmRvdydzIHNpemUuCisgKgorICovCitzdGF0aWMgaW5saW5lIGludCBuYXRpdmVfd2luZG93X3NldF9idWZmZXJzX2dlb21ldHJ5KAorICAgICAgICBBTmF0aXZlV2luZG93KiB3aW5kb3csCisgICAgICAgIGludCB3LCBpbnQgaCwgaW50IGZvcm1hdCkKK3sKKyAgICByZXR1cm4gd2luZG93LT5wZXJmb3JtKHdpbmRvdywgTkFUSVZFX1dJTkRPV19TRVRfQlVGRkVSU19HRU9NRVRSWSwKKyAgICAgICAgICAgIHcsIGgsIGZvcm1hdCk7Cit9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC0yNjMsNiArMzM5LDE1IEBACiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTkFUSVZFX1RZUEUsIHR5cGVuYW1lIFRZUEUsIHR5cGVuYW1lIFJFRj4KIGNsYXNzIEVHTE5hdGl2ZUJhc2UgOiBwdWJsaWMgTkFUSVZFX1RZUEUsIHB1YmxpYyBSRUYKIHsKK3B1YmxpYzoKKyAgICAvLyBEaXNhbWJpZ3VhdGUgYmV0d2VlbiB0aGUgaW5jU3Ryb25nIGluIFJFRiBhbmQgTkFUSVZFX1RZUEUKKyAgICB2b2lkIGluY1N0cm9uZyhjb25zdCB2b2lkKiBpZCkgY29uc3QgeworICAgICAgICBSRUY6OmluY1N0cm9uZyhpZCk7CisgICAgfQorICAgIHZvaWQgZGVjU3Ryb25nKGNvbnN0IHZvaWQqIGlkKSBjb25zdCB7CisgICAgICAgIFJFRjo6ZGVjU3Ryb25nKGlkKTsKKyAgICB9CisKIHByb3RlY3RlZDoKICAgICB0eXBlZGVmIEVHTE5hdGl2ZUJhc2U8TkFUSVZFX1RZUEUsIFRZUEUsIFJFRj4gQkFTRTsKICAgICBFR0xOYXRpdmVCYXNlKCkgOiBOQVRJVkVfVFlQRSgpLCBSRUYoKSB7CmRpZmYgLS1naXQgYS9pbmNsdWRlL3V0aWxzL0JpdFNldC5oIGIvaW5jbHVkZS91dGlscy9CaXRTZXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOWM4YmYwCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS91dGlscy9CaXRTZXQuaApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2lmbmRlZiBVVElMU19CSVRTRVRfSAorI2RlZmluZSBVVElMU19CSVRTRVRfSAorCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKKy8qCisgKiBDb250YWlucyBzb21lIGJpdCBtYW5pcHVsYXRpb24gaGVscGVycy4KKyAqLworCituYW1lc3BhY2UgYW5kcm9pZCB7CisKKy8vIEEgc2ltcGxlIHNldCBvZiAzMiBiaXRzIHRoYXQgY2FuIGJlIGluZGl2aWR1YWxseSBtYXJrZWQgb3IgY2xlYXJlZC4KK3N0cnVjdCBCaXRTZXQzMiB7CisgICAgdWludDMyX3QgdmFsdWU7CisKKyAgICBpbmxpbmUgQml0U2V0MzIoKSA6IHZhbHVlKDApIHsgfQorICAgIGV4cGxpY2l0IGlubGluZSBCaXRTZXQzMih1aW50MzJfdCB2YWx1ZSkgOiB2YWx1ZSh2YWx1ZSkgeyB9CisKKyAgICAvLyBHZXRzIHRoZSB2YWx1ZSBhc3NvY2lhdGVkIHdpdGggYSBwYXJ0aWN1bGFyIGJpdCBpbmRleC4KKyAgICBzdGF0aWMgaW5saW5lIHVpbnQzMl90IHZhbHVlRm9yQml0KHVpbnQzMl90IG4pIHsgcmV0dXJuIDB4ODAwMDAwMDAgPj4gbjsgfQorCisgICAgLy8gQ2xlYXJzIHRoZSBiaXQgc2V0LgorICAgIGlubGluZSB2b2lkIGNsZWFyKCkgeyB2YWx1ZSA9IDA7IH0KKworICAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgYml0IHNldCBkb2VzIG5vdCBjb250YWluIGFueSBtYXJrZWQgYml0cy4KKyAgICBpbmxpbmUgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1cm4gISB2YWx1ZTsgfQorCisgICAgLy8gUmV0dXJucyB0cnVlIGlmIHRoZSBzcGVjaWZpZWQgYml0IGlzIG1hcmtlZC4KKyAgICBpbmxpbmUgYm9vbCBoYXNCaXQodWludDMyX3QgbikgY29uc3QgeyByZXR1cm4gdmFsdWUgJiB2YWx1ZUZvckJpdChuKTsgfQorCisgICAgLy8gTWFya3MgdGhlIHNwZWNpZmllZCBiaXQuCisgICAgaW5saW5lIHZvaWQgbWFya0JpdCh1aW50MzJfdCBuKSB7IHZhbHVlIHw9IHZhbHVlRm9yQml0KG4pOyB9CisKKyAgICAvLyBDbGVhcnMgdGhlIHNwZWNpZmllZCBiaXQuCisgICAgaW5saW5lIHZvaWQgY2xlYXJCaXQodWludDMyX3QgbikgeyB2YWx1ZSAmPSB+IHZhbHVlRm9yQml0KG4pOyB9CisKKyAgICAvLyBGaW5kcyB0aGUgZmlyc3QgbWFya2VkIGJpdCBpbiB0aGUgc2V0LgorICAgIC8vIFJlc3VsdCBpcyB1bmRlZmluZWQgaWYgYWxsIGJpdHMgYXJlIHVubWFya2VkLgorICAgIGlubGluZSB1aW50MzJfdCBmaXJzdE1hcmtlZEJpdCgpIGNvbnN0IHsgcmV0dXJuIF9fYnVpbHRpbl9jbHoodmFsdWUpOyB9CisKKyAgICAvLyBGaW5kcyB0aGUgZmlyc3QgdW5tYXJrZWQgYml0IGluIHRoZSBzZXQuCisgICAgLy8gUmVzdWx0IGlzIHVuZGVmaW5lZCBpZiBhbGwgYml0cyBhcmUgbWFya2VkLgorICAgIGlubGluZSB1aW50MzJfdCBmaXJzdFVubWFya2VkQml0KCkgY29uc3QgeyByZXR1cm4gX19idWlsdGluX2Nseih+IHZhbHVlKTsgfQorCisgICAgaW5saW5lIGJvb2wgb3BlcmF0b3I9PSAoY29uc3QgQml0U2V0MzImIG90aGVyKSBjb25zdCB7IHJldHVybiB2YWx1ZSA9PSBvdGhlci52YWx1ZTsgfQorICAgIGlubGluZSBib29sIG9wZXJhdG9yIT0gKGNvbnN0IEJpdFNldDMyJiBvdGhlcikgY29uc3QgeyByZXR1cm4gdmFsdWUgIT0gb3RoZXIudmFsdWU7IH0KK307CisKK30gLy8gbmFtZXNwYWNlIGFuZHJvaWQKKworI2VuZGlmIC8vIFVUSUxTX0JJVFNFVF9ICmRpZmYgLS1naXQgYS9pbmNsdWRlL3V0aWxzL0J1ZmZlci5oIGIvaW5jbHVkZS91dGlscy9CdWZmZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGUyMmIwZi4uMDAwMDAwMAotLS0gYS9pbmNsdWRlL3V0aWxzL0J1ZmZlci5oCisrKyAvZGV2L251bGwKQEAgLTEsMTA3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi0jaWZuZGVmIF9fVVRJTFNfQlVGRkVSX0hfXwotI2RlZmluZSBfX1VUSUxTX0JVRkZFUl9IX18gMQotCi0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLQotbmFtZXNwYWNlIGFuZHJvaWQgewotCi1jbGFzcyBCdWZmZXIKLXsKLXByaXZhdGU6Ci0gICAgY2hhciAqYnVmOwotICAgIGludCBidWZzaXo7Ci0gICAgaW50IHVzZWQ7Ci0gICAgdm9pZCBlbnN1cmVDYXBhY2l0eShpbnQgbGVuKTsKLQotICAgIHZvaWQKLSAgICBtYWtlUm9vbUZvcihpbnQgbGVuKQotICAgIHsKLSAgICAgICAgaWYgKGxlbiArIHVzZWQgPj0gYnVmc2l6KSB7Ci0gICAgICAgICAgICBidWZzaXogPSAobGVuICsgdXNlZCkgKiAzLzIgKyAyOwotICAgICAgICAgICAgY2hhciAqYmxhaCA9IG5ldyBjaGFyW2J1ZnNpel07Ci0KLSAgICAgICAgICAgIG1lbWNweShibGFoLCBidWYsIHVzZWQpOwotICAgICAgICAgICAgZGVsZXRlW10gYnVmOwotICAgICAgICAgICAgYnVmID0gYmxhaDsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLXB1YmxpYzoKLSAgICBCdWZmZXIoKQotICAgIHsKLSAgICAgICAgYnVmc2l6ID0gMTY7Ci0gICAgICAgIGJ1ZiA9IG5ldyBjaGFyW2J1ZnNpel07Ci0gICAgICAgIGNsZWFyKCk7Ci0gICAgfQotCi0gICAgfkJ1ZmZlcigpCi0gICAgewotICAgICAgIGRlbGV0ZVtdIGJ1ZjsKLSAgICB9Ci0KLSAgICB2b2lkCi0gICAgY2xlYXIoKQotICAgIHsKLSAgICAgICAgYnVmWzBdID0gJ1wwJzsKLSAgICAgICAgdXNlZCA9IDA7Ci0gICAgfQotCi0gICAgaW50Ci0gICAgbGVuZ3RoKCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB1c2VkOwotICAgIH0KLQotICAgIHZvaWQKLSAgICBhcHBlbmQoY29uc3QgY2hhciBjKQotICAgIHsKLSAgICAgICAgbWFrZVJvb21Gb3IoMSk7Ci0gICAgICAgIGJ1Zlt1c2VkXSA9IGM7Ci0gICAgICAgIHVzZWQrKzsKLSAgICAgICAgYnVmW3VzZWRdID0gJ1wwJzsKLSAgICB9Ci0KLSAgICB2b2lkCi0gICAgYXBwZW5kKGNvbnN0IGNoYXIgKnMsIGludCBsZW4pCi0gICAgewotICAgICAgICBtYWtlUm9vbUZvcihsZW4pOwotCi0gICAgICAgIG1lbWNweShidWYgKyB1c2VkLCBzLCBsZW4pOwotICAgICAgICB1c2VkICs9IGxlbjsKLSAgICAgICAgYnVmW3VzZWRdID0gJ1wwJzsKLSAgICB9Ci0KLSAgICB2b2lkCi0gICAgYXBwZW5kKGNvbnN0IGNoYXIgKnMpCi0gICAgewotICAgICAgICBhcHBlbmQocywgc3RybGVuKHMpKTsKLSAgICB9Ci0KLSAgICBjaGFyICoKLSAgICBnZXRCeXRlcygpCi0gICAgewotICAgICAgICByZXR1cm4gYnVmOwotICAgIH0KLX07Ci0KLX07IC8vIG5hbWVzcGFjZSBhbmRyb2lkCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91dGlscy9PYmJGaWxlLmggYi9pbmNsdWRlL3V0aWxzL09iYkZpbGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNzU5MjdjCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS91dGlscy9PYmJGaWxlLmgKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgT0JCRklMRV9IXworI2RlZmluZSBPQkJGSUxFX0hfCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKworI2luY2x1ZGUgPHV0aWxzL1JlZkJhc2UuaD4KKyNpbmNsdWRlIDx1dGlscy9TdHJpbmc4Lmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworY2xhc3MgT2JiRmlsZSA6IHB1YmxpYyBSZWZCYXNlIHsKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5PYmJGaWxlKCk7CisKK3B1YmxpYzoKKyAgICBPYmJGaWxlKCk7CisKKyAgICBib29sIHJlYWRGcm9tKGNvbnN0IGNoYXIqIGZpbGVuYW1lKTsKKyAgICBib29sIHJlYWRGcm9tKGludCBmZCk7CisgICAgYm9vbCB3cml0ZVRvKGNvbnN0IGNoYXIqIGZpbGVuYW1lKTsKKyAgICBib29sIHdyaXRlVG8oaW50IGZkKTsKKworICAgIGNvbnN0IGNoYXIqIGdldEZpbGVOYW1lKCkgY29uc3QgeworICAgICAgICByZXR1cm4gbUZpbGVOYW1lOworICAgIH0KKworICAgIGNvbnN0IFN0cmluZzggZ2V0UGFja2FnZU5hbWUoKSBjb25zdCB7CisgICAgICAgIHJldHVybiBtUGFja2FnZU5hbWU7CisgICAgfQorCisgICAgaW50MzJfdCBnZXRWZXJzaW9uKCkgY29uc3QgeworICAgICAgICByZXR1cm4gbVZlcnNpb247CisgICAgfQorCisgICAgdm9pZCBzZXRQYWNrYWdlTmFtZShTdHJpbmc4IHBhY2thZ2VOYW1lKSB7CisgICAgICAgIG1QYWNrYWdlTmFtZSA9IHBhY2thZ2VOYW1lOworICAgIH0KKworICAgIHZvaWQgc2V0VmVyc2lvbihpbnQzMl90IHZlcnNpb24pIHsKKyAgICAgICAgbVZlcnNpb24gPSB2ZXJzaW9uOworICAgIH0KKworICAgIHN0YXRpYyBpbmxpbmUgdWludDMyX3QgZ2V0NExFKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGJ1ZikgeworICAgICAgICByZXR1cm4gYnVmWzBdIHwgKGJ1ZlsxXSA8PCA4KSB8IChidWZbMl0gPDwgMTYpIHwgKGJ1ZlszXSA8PCAyNCk7CisgICAgfQorCisgICAgc3RhdGljIGlubGluZSB2b2lkIHB1dDRMRSh1bnNpZ25lZCBjaGFyKiBidWYsIHVpbnQzMl90IHZhbCkgeworICAgICAgICBidWZbMF0gPSB2YWwgJiAweEZGOworICAgICAgICBidWZbMV0gPSAodmFsID4+IDgpICYgMHhGRjsKKyAgICAgICAgYnVmWzJdID0gKHZhbCA+PiAxNikgJiAweEZGOworICAgICAgICBidWZbM10gPSAodmFsID4+IDI0KSAmIDB4RkY7CisgICAgfQorCitwcml2YXRlOgorICAgIC8qIFBhY2thZ2UgbmFtZSB0aGlzIE9iYkZpbGUgaXMgYXNzb2NpYXRlZCB3aXRoICovCisgICAgU3RyaW5nOCBtUGFja2FnZU5hbWU7CisKKyAgICAvKiBQYWNrYWdlIHZlcnNpb24gdGhpcyBPYmJGaWxlIGlzIGFzc29jaWF0ZWQgd2l0aCAqLworICAgIGludDMyX3QgbVZlcnNpb247CisKKyAgICBjb25zdCBjaGFyKiBtRmlsZU5hbWU7CisKKyAgICBzaXplX3QgbUZpbGVTaXplOworCisgICAgdW5zaWduZWQgY2hhciogbVJlYWRCdWY7CisKKyAgICBib29sIHBhcnNlT2JiRmlsZShpbnQgZmQpOworfTsKKworfQorI2VuZGlmIC8qIE9CQkZJTEVfSF8gKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvdXRpbHMvUG9sbExvb3AuaCBiL2luY2x1ZGUvdXRpbHMvUG9sbExvb3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTIzMGU4Ci0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS91dGlscy9Qb2xsTG9vcC5oCkBAIC0wLDAgKzEsMTk3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2lmbmRlZiBVVElMU19QT0xMX0xPT1BfSAorI2RlZmluZSBVVElMU19QT0xMX0xPT1BfSAorCisjaW5jbHVkZSA8dXRpbHMvVmVjdG9yLmg+CisjaW5jbHVkZSA8dXRpbHMvdGhyZWFkcy5oPgorCisjaW5jbHVkZSA8c3lzL3BvbGwuaD4KKworI2luY2x1ZGUgPGFuZHJvaWQvbG9vcGVyLmg+CisKK3N0cnVjdCBBTG9vcGVyIDogcHVibGljIGFuZHJvaWQ6OlJlZkJhc2UgeworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfkFMb29wZXIoKSB7IH0KKworcHVibGljOgorICAgIEFMb29wZXIoKSB7IH0KK307CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworLyoqCisgKiBBIGJhc2ljIGZpbGUgZGVzY3JpcHRvciBwb2xsaW5nIGxvb3AgYmFzZWQgb24gcG9sbCgpIHdpdGggY2FsbGJhY2tzLgorICovCitjbGFzcyBQb2xsTG9vcCA6IHB1YmxpYyBBTG9vcGVyIHsKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5Qb2xsTG9vcCgpOworCitwdWJsaWM6CisgICAgUG9sbExvb3AoYm9vbCBhbGxvd05vbkNhbGxiYWNrcyk7CisKKyAgICAvKioKKyAgICAgKiBBIGNhbGxiYWNrIHRoYXQgaXQgdG8gYmUgaW52b2tlZCB3aGVuIGFuIGV2ZW50IG9jY3VycyBvbiBhIGZpbGUgZGVzY3JpcHRvci4KKyAgICAgKiBTcGVjaWZpZXMgdGhlIGV2ZW50cyB0aGF0IHdlcmUgdHJpZ2dlcmVkIGFuZCB0aGUgdXNlciBkYXRhIHByb3ZpZGVkIHdoZW4gdGhlCisgICAgICogY2FsbGJhY2sgd2FzIHNldC4KKyAgICAgKgorICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgY2FsbGJhY2sgc2hvdWxkIGJlIGtlcHQsIGZhbHNlIGlmIGl0IHNob3VsZCBiZSByZW1vdmVkIGF1dG9tYXRpY2FsbHkKKyAgICAgKiBhZnRlciB0aGUgY2FsbGJhY2sgcmV0dXJucy4KKyAgICAgKi8KKyAgICB0eXBlZGVmIGJvb2wgKCpDYWxsYmFjaykoaW50IGZkLCBpbnQgZXZlbnRzLCB2b2lkKiBkYXRhKTsKKworICAgIGVudW0geworICAgICAgICBQT0xMX0NBTExCQUNLID0gQUxPT1BFUl9QT0xMX0NBTExCQUNLLAorICAgICAgICBQT0xMX1RJTUVPVVQgPSBBTE9PUEVSX1BPTExfVElNRU9VVCwKKyAgICAgICAgUE9MTF9FUlJPUiA9IEFMT09QRVJfUE9MTF9FUlJPUiwKKyAgICB9OworICAgIAorICAgIC8qKgorICAgICAqIFBlcmZvcm1zIGEgc2luZ2xlIGNhbGwgdG8gcG9sbCgpIHdpdGggb3B0aW9uYWwgdGltZW91dCBpbiBtaWxsaXNlY29uZHMuCisgICAgICogSW52b2tlcyBjYWxsYmFja3MgZm9yIGFsbCBmaWxlIGRlc2NyaXB0b3JzIG9uIHdoaWNoIGFuIGV2ZW50IG9jY3VycmVkLgorICAgICAqCisgICAgICogSWYgdGhlIHRpbWVvdXQgaXMgemVybywgcmV0dXJucyBpbW1lZGlhdGVseSB3aXRob3V0IGJsb2NraW5nLgorICAgICAqIElmIHRoZSB0aW1lb3V0IGlzIG5lZ2F0aXZlLCB3YWl0cyBpbmRlZmluaXRlbHkgdW50aWwgYXdva2VuLgorICAgICAqCisgICAgICogUmV0dXJucyBBTE9PUEVSX1BPTExfQ0FMTEJBQ0sgaWYgYSBjYWxsYmFjayB3YXMgaW52b2tlZC4KKyAgICAgKgorICAgICAqIFJldHVybnMgQUxPT1BFUl9QT0xMX1RJTUVPVVQgaWYgdGhlcmUgd2FzIG5vIGRhdGEgYmVmb3JlIHRoZSBnaXZlbgorICAgICAqIHRpbWVvdXQgZXhwaXJlZC4KKyAgICAgKgorICAgICAqIFJldHVybnMgQUxPUEVSX1BPTExfRVJST1IgaWYgYW4gZXJyb3Igb2NjdXJyZWQuCisgICAgICoKKyAgICAgKiBSZXR1cm5zIGEgdmFsdWUgPj0gMCBjb250YWluaW5nIGEgZmlsZSBkZXNjcmlwdG9yIGlmIGl0IGhhcyBkYXRhCisgICAgICogYW5kIGl0IGhhcyBubyBjYWxsYmFjayBmdW5jdGlvbiAocmVxdWlyaW5nIHRoZSBjYWxsZXIgaGVyZSB0byBoYW5kbGUgaXQpLgorICAgICAqIEluIHRoaXMgKGFuZCBvbmx5IHRoaXMpIGNhc2Ugb3V0RXZlbnRzIGFuZCBvdXREYXRhIHdpbGwgY29udGFpbiB0aGUgcG9sbAorICAgICAqIGV2ZW50cyBhbmQgZGF0YSBhc3NvY2lhdGVkIHdpdGggdGhlIGZkLgorICAgICAqCisgICAgICogVGhpcyBtZXRob2QgbXVzdCBvbmx5IGJlIGNhbGxlZCBvbiB0aGUgdGhyZWFkIG93bmluZyB0aGUgUG9sbExvb3AuCisgICAgICogVGhpcyBtZXRob2QgYmxvY2tzIHVudGlsIGVpdGhlciBhIGZpbGUgZGVzY3JpcHRvciBpcyBzaWduYWxsZWQsIGEgdGltZW91dCBvY2N1cnMsCisgICAgICogb3Igd2FrZSgpIGlzIGNhbGxlZC4KKyAgICAgKiBUaGlzIG1ldGhvZCBkb2VzIG5vdCByZXR1cm4gdW50aWwgaXQgaGFzIGZpbmlzaGVkIGludm9raW5nIHRoZSBhcHByb3ByaWF0ZSBjYWxsYmFja3MKKyAgICAgKiBmb3IgYWxsIGZpbGUgZGVzY3JpcHRvcnMgdGhhdCB3ZXJlIHNpZ25hbGxlZC4KKyAgICAgKi8KKyAgICBpbnQzMl90IHBvbGxPbmNlKGludCB0aW1lb3V0TWlsbGlzLCBpbnQqIG91dEV2ZW50cyA9IE5VTEwsIHZvaWQqKiBvdXREYXRhID0gTlVMTCk7CisKKyAgICAvKioKKyAgICAgKiBXYWtlcyB0aGUgbG9vcCBhc3luY2hyb25vdXNseS4KKyAgICAgKgorICAgICAqIFRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQgb24gYW55IHRocmVhZC4KKyAgICAgKiBUaGlzIG1ldGhvZCByZXR1cm5zIGltbWVkaWF0ZWx5LgorICAgICAqLworICAgIHZvaWQgd2FrZSgpOworCisgICAgLyoqCisgICAgICogQ29udHJvbCB3aGV0aGVyIHRoaXMgUG9sbExvb3AgaW5zdGFuY2UgYWxsb3dzIHVzaW5nIElEcyBpbnN0ZWFkCisgICAgICogb2YgY2FsbGJhY2tzLgorICAgICAqLworICAgIGJvb2wgZ2V0QWxsb3dOb25DYWxsYmFja3MoKSBjb25zdDsKKyAgICAKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBjYWxsYmFjayBmb3IgYSBmaWxlIGRlc2NyaXB0b3IsIHJlcGxhY2luZyB0aGUgZXhpc3Rpbmcgb25lLCBpZiBhbnkuCisgICAgICogSXQgaXMgYW4gZXJyb3IgdG8gY2FsbCB0aGlzIG1ldGhvZCB3aXRoIGV2ZW50cyA9PSAwIG9yIGNhbGxiYWNrID09IE5VTEwuCisgICAgICoKKyAgICAgKiBOb3RlIHRoYXQgYSBjYWxsYmFjayBjYW4gYmUgaW52b2tlZCB3aXRoIHRoZSBQT0xMRVJSLCBQT0xMSFVQIG9yIFBPTExOVkFMIGV2ZW50cworICAgICAqIGV2ZW4gaWYgaXQgaXMgbm90IGV4cGxpY2l0bHkgcmVxdWVzdGVkIHdoZW4gcmVnaXN0ZXJlZC4KKyAgICAgKgorICAgICAqIFRoaXMgbWV0aG9kIGNhbiBiZSBjYWxsZWQgb24gYW55IHRocmVhZC4KKyAgICAgKiBUaGlzIG1ldGhvZCBtYXkgYmxvY2sgYnJpZWZseSBpZiBpdCBuZWVkcyB0byB3YWtlIHRoZSBwb2xsIGxvb3AuCisgICAgICovCisgICAgdm9pZCBzZXRDYWxsYmFjayhpbnQgZmQsIGludCBldmVudHMsIENhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiBkYXRhID0gTlVMTCk7CisKKyAgICAvKioKKyAgICAgKiBMaWtlIHNldENhbGxiYWNrKCksIGJ1dCBmb3IgdGhlIE5ESyBjYWxsYmFjayBmdW5jdGlvbi4KKyAgICAgKi8KKyAgICB2b2lkIHNldExvb3BlckNhbGxiYWNrKGludCBmZCwgaW50IGV2ZW50cywgQUxvb3Blcl9jYWxsYmFja0Z1bmMqIGNhbGxiYWNrLAorICAgICAgICAgICAgdm9pZCogZGF0YSk7CisgICAgCisgICAgLyoqCisgICAgICogUmVtb3ZlcyB0aGUgY2FsbGJhY2sgZm9yIGEgZmlsZSBkZXNjcmlwdG9yLCBpZiBvbmUgZXhpc3RzLgorICAgICAqCisgICAgICogV2hlbiB0aGlzIG1ldGhvZCByZXR1cm5zLCBpdCBpcyBzYWZlIHRvIGNsb3NlIHRoZSBmaWxlIGRlc2NyaXB0b3Igc2luY2UgdGhlIHBvbGwgbG9vcAorICAgICAqIHdpbGwgbm8gbG9uZ2VyIGhhdmUgYSByZWZlcmVuY2UgdG8gaXQuICBIb3dldmVyLCBpdCBpcyBwb3NzaWJsZSBmb3IgdGhlIGNhbGxiYWNrIHRvCisgICAgICogYWxyZWFkeSBiZSBydW5uaW5nIG9yIGZvciBpdCB0byBydW4gb25lIGxhc3QgdGltZSBpZiB0aGUgZmlsZSBkZXNjcmlwdG9yIHdhcyBhbHJlYWR5CisgICAgICogc2lnbmFsbGVkLiAgQ2FsbGluZyBjb2RlIGlzIHJlc3BvbnNpYmxlIGZvciBlbnN1cmluZyB0aGF0IHRoaXMgY2FzZSBpcyBzYWZlbHkgaGFuZGxlZC4KKyAgICAgKiBGb3IgZXhhbXBsZSwgaWYgdGhlIGNhbGxiYWNrIHRha2VzIGNhcmUgb2YgcmVtb3ZpbmcgaXRzZWxmIGR1cmluZyBpdHMgb3duIGV4ZWN1dGlvbiBlaXRoZXIKKyAgICAgKiBieSByZXR1cm5pbmcgZmFsc2Ugb3IgY2FsbGluZyB0aGlzIG1ldGhvZCwgdGhlbiBpdCBjYW4gYmUgZ3VhcmFudGVlZCB0byBub3QgYmUgaW52b2tlZAorICAgICAqIGFnYWluIGF0IGFueSBsYXRlciB0aW1lIHVubGVzcyByZWdpc3RlcmVkIGFuZXcuCisgICAgICoKKyAgICAgKiBUaGlzIG1ldGhvZCBjYW4gYmUgY2FsbGVkIG9uIGFueSB0aHJlYWQuCisgICAgICogVGhpcyBtZXRob2QgbWF5IGJsb2NrIGJyaWVmbHkgaWYgaXQgbmVlZHMgdG8gd2FrZSB0aGUgcG9sbCBsb29wLgorICAgICAqCisgICAgICogUmV0dXJucyB0cnVlIGlmIGEgY2FsbGJhY2sgd2FzIGFjdHVhbGx5IHJlbW92ZWQsIGZhbHNlIGlmIG5vbmUgd2FzIHJlZ2lzdGVyZWQuCisgICAgICovCisgICAgYm9vbCByZW1vdmVDYWxsYmFjayhpbnQgZmQpOworCisgICAgLyoqCisgICAgICogU2V0IHRoZSBnaXZlbiBQb2xsTG9vcCB0byBiZSBhc3NvY2lhdGVkIHdpdGggdGhlCisgICAgICogY2FsbGluZyB0aHJlYWQuICBUaGVyZSBtdXN0IGJlIGEgMToxIHJlbGF0aW9uc2hpcCBiZXR3ZWVuCisgICAgICogUG9sbExvb3AgYW5kIHRocmVhZC4KKyAgICAgKi8KKyAgICBzdGF0aWMgdm9pZCBzZXRGb3JUaHJlYWQoY29uc3Qgc3A8UG9sbExvb3A+JiBwb2xsTG9vcCk7CisgICAgCisgICAgLyoqCisgICAgICogUmV0dXJuIHRoZSBQb2xsTG9vcCBhc3NvY2lhdGVkIHdpdGggdGhlIGNhbGxpbmcgdGhyZWFkLgorICAgICAqLworICAgIHN0YXRpYyBzcDxQb2xsTG9vcD4gZ2V0Rm9yVGhyZWFkKCk7CisgICAgCitwcml2YXRlOgorICAgIHN0cnVjdCBSZXF1ZXN0ZWRDYWxsYmFjayB7CisgICAgICAgIENhbGxiYWNrIGNhbGxiYWNrOworICAgICAgICBBTG9vcGVyX2NhbGxiYWNrRnVuYyogbG9vcGVyQ2FsbGJhY2s7CisgICAgICAgIHZvaWQqIGRhdGE7CisgICAgfTsKKworICAgIHN0cnVjdCBQZW5kaW5nQ2FsbGJhY2sgeworICAgICAgICBpbnQgZmQ7CisgICAgICAgIGludCBldmVudHM7CisgICAgICAgIENhbGxiYWNrIGNhbGxiYWNrOworICAgICAgICBBTG9vcGVyX2NhbGxiYWNrRnVuYyogbG9vcGVyQ2FsbGJhY2s7CisgICAgICAgIHZvaWQqIGRhdGE7CisgICAgfTsKKyAgICAKKyAgICBjb25zdCBib29sIG1BbGxvd05vbkNhbGxiYWNrczsKKyAgICAKKyAgICBNdXRleCBtTG9jazsKKyAgICBib29sIG1Qb2xsaW5nOworICAgIHVpbnQzMl90IG1XYWl0ZXJzOworICAgIENvbmRpdGlvbiBtQXdha2U7CisgICAgQ29uZGl0aW9uIG1SZXN1bWU7CisKKyAgICBpbnQgbVdha2VSZWFkUGlwZUZkOworICAgIGludCBtV2FrZVdyaXRlUGlwZUZkOworCisgICAgVmVjdG9yPHN0cnVjdCBwb2xsZmQ+IG1SZXF1ZXN0ZWRGZHM7CisgICAgVmVjdG9yPFJlcXVlc3RlZENhbGxiYWNrPiBtUmVxdWVzdGVkQ2FsbGJhY2tzOworCisgICAgVmVjdG9yPFBlbmRpbmdDYWxsYmFjaz4gbVBlbmRpbmdDYWxsYmFja3M7IC8vIHVzZWQgcHJpdmF0ZWx5IGJ5IHBvbGxPbmNlCisgICAgVmVjdG9yPFBlbmRpbmdDYWxsYmFjaz4gbVBlbmRpbmdGZHM7ICAgICAgIC8vIHVzZWQgcHJpdmF0ZWx5IGJ5IHBvbGxPbmNlCisgICAgc2l6ZV90IG1QZW5kaW5nRmRzUG9zOworICAgIAorICAgIHZvaWQgb3Blbldha2VQaXBlKCk7CisgICAgdm9pZCBjbG9zZVdha2VQaXBlKCk7CisKKyAgICB2b2lkIHNldENhbGxiYWNrQ29tbW9uKGludCBmZCwgaW50IGV2ZW50cywgQ2FsbGJhY2sgY2FsbGJhY2ssCisgICAgICAgICAgICBBTG9vcGVyX2NhbGxiYWNrRnVuYyogbG9vcGVyQ2FsbGJhY2ssIHZvaWQqIGRhdGEpOworICAgIHNzaXplX3QgZ2V0UmVxdWVzdEluZGV4TG9ja2VkKGludCBmZCk7CisgICAgdm9pZCB3YWtlQW5kTG9jaygpOworICAgIHN0YXRpYyB2b2lkIHRocmVhZERlc3RydWN0b3Iodm9pZCAqc3QpOworfTsKKworfSAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCisjZW5kaWYgLy8gVVRJTFNfUE9MTF9MT09QX0gKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdXRpbHMvUG9vbC5oIGIvaW5jbHVkZS91dGlscy9Qb29sLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmVlNzY4ZQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvdXRpbHMvUG9vbC5oCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIFVUSUxTX1BPT0xfSAorI2RlZmluZSBVVElMU19QT09MX0gKKworI2luY2x1ZGUgPHV0aWxzL1R5cGVIZWxwZXJzLmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworY2xhc3MgUG9vbEltcGwgeworcHVibGljOgorICAgIFBvb2xJbXBsKHNpemVfdCBvYmpTaXplKTsKKyAgICB+UG9vbEltcGwoKTsKKworICAgIHZvaWQqIGFsbG9jSW1wbCgpOworICAgIHZvaWQgZnJlZUltcGwodm9pZCogb2JqKTsKKworcHJpdmF0ZToKKyAgICBzaXplX3QgbU9ialNpemU7Cit9OworCisvKgorICogQSBob21vZ2VuZW91cyB0eXBlZCBtZW1vcnkgcG9vbCBmb3IgZml4ZWQgc2l6ZSBvYmplY3RzLgorICogTm90IGludGVuZGVkIHRvIGJlIHRocmVhZC1zYWZlLgorICovCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorY2xhc3MgUG9vbCA6IHByaXZhdGUgUG9vbEltcGwgeworcHVibGljOgorICAgIC8qIENyZWF0ZXMgYW4gaW5pdGlhbGx5IGVtcHR5IHBvb2wuICovCisgICAgUG9vbCgpIDogUG9vbEltcGwoc2l6ZW9mKFQpKSB7IH0KKworICAgIC8qIERlc3Ryb3lzIHRoZSBwb29sLgorICAgICAqIEFzc3VtZXMgdGhhdCB0aGUgcG9vbCBpcyBlbXB0eS4gKi8KKyAgICB+UG9vbCgpIHsgfQorCisgICAgLyogQWxsb2NhdGVzIGFuIG9iamVjdCBmcm9tIHRoZSBwb29sLCBncm93aW5nIHRoZSBwb29sIGlmIG5lZWRlZC4gKi8KKyAgICBpbmxpbmUgVCogYWxsb2MoKSB7CisgICAgICAgIHZvaWQqIG1lbSA9IGFsbG9jSW1wbCgpOworICAgICAgICBpZiAoISB0cmFpdHM8VD46Omhhc190cml2aWFsX2N0b3IpIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgKG1lbSkgVCgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFQqPihtZW0pOworICAgICAgICB9CisgICAgfQorCisgICAgLyogRnJlZXMgYW4gb2JqZWN0IGZyb20gdGhlIHBvb2wuICovCisgICAgaW5saW5lIHZvaWQgZnJlZShUKiBvYmopIHsKKyAgICAgICAgaWYgKCEgdHJhaXRzPFQ+OjpoYXNfdHJpdmlhbF9kdG9yKSB7CisgICAgICAgICAgICBvYmotPn5UKCk7CisgICAgICAgIH0KKyAgICAgICAgZnJlZUltcGwob2JqKTsKKyAgICB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBhbmRyb2lkCisKKyNlbmRpZiAvLyBVVElMU19QT09MX0gKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdXRpbHMvUmVmQmFzZS5oIGIvaW5jbHVkZS91dGlscy9SZWZCYXNlLmgKaW5kZXggYmQ3ZjI4Yy4uOWM2NGFjMCAxMDA2NDQKLS0tIGEvaW5jbHVkZS91dGlscy9SZWZCYXNlLmgKKysrIGIvaW5jbHVkZS91dGlscy9SZWZCYXNlLmgKQEAgLTMzMyw5ICszMzMsMTAgQEAKIAogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHNwPFQ+JiBzcDxUPjo6b3BlcmF0b3IgPSAoY29uc3Qgc3A8VD4mIG90aGVyKSB7Ci0gICAgaWYgKG90aGVyLm1fcHRyKSBvdGhlci5tX3B0ci0+aW5jU3Ryb25nKHRoaXMpOworICAgIFQqIG90aGVyUHRyKG90aGVyLm1fcHRyKTsKKyAgICBpZiAob3RoZXJQdHIpIG90aGVyUHRyLT5pbmNTdHJvbmcodGhpcyk7CiAgICAgaWYgKG1fcHRyKSBtX3B0ci0+ZGVjU3Ryb25nKHRoaXMpOwotICAgIG1fcHRyID0gb3RoZXIubV9wdHI7CisgICAgbV9wdHIgPSBvdGhlclB0cjsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKQEAgLTM1MSw5ICszNTIsMTAgQEAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IHRlbXBsYXRlPHR5cGVuYW1lIFU+CiBzcDxUPiYgc3A8VD46Om9wZXJhdG9yID0gKGNvbnN0IHNwPFU+JiBvdGhlcikKIHsKLSAgICBpZiAob3RoZXIubV9wdHIpIG90aGVyLm1fcHRyLT5pbmNTdHJvbmcodGhpcyk7CisgICAgVSogb3RoZXJQdHIob3RoZXIubV9wdHIpOworICAgIGlmIChvdGhlclB0cikgb3RoZXJQdHItPmluY1N0cm9uZyh0aGlzKTsKICAgICBpZiAobV9wdHIpIG1fcHRyLT5kZWNTdHJvbmcodGhpcyk7Ci0gICAgbV9wdHIgPSBvdGhlci5tX3B0cjsKKyAgICBtX3B0ciA9IG90aGVyUHRyOwogICAgIHJldHVybiAqdGhpczsKIH0KIApAQCAtNDY2LDEwICs0NjgsMTIgQEAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+CiB3cDxUPiYgd3A8VD46Om9wZXJhdG9yID0gKGNvbnN0IHdwPFQ+JiBvdGhlcikKIHsKLSAgICBpZiAob3RoZXIubV9wdHIpIG90aGVyLm1fcmVmcy0+aW5jV2Vhayh0aGlzKTsKKyAgICB3ZWFrcmVmX3R5cGUqIG90aGVyUmVmcyhvdGhlci5tX3JlZnMpOworICAgIFQqIG90aGVyUHRyKG90aGVyLm1fcHRyKTsKKyAgICBpZiAob3RoZXJQdHIpIG90aGVyUmVmcy0+aW5jV2Vhayh0aGlzKTsKICAgICBpZiAobV9wdHIpIG1fcmVmcy0+ZGVjV2Vhayh0aGlzKTsKLSAgICBtX3B0ciA9IG90aGVyLm1fcHRyOwotICAgIG1fcmVmcyA9IG90aGVyLm1fcmVmczsKKyAgICBtX3B0ciA9IG90aGVyUHRyOworICAgIG1fcmVmcyA9IG90aGVyUmVmczsKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKQEAgLTQ3OCw4ICs0ODIsOSBAQAogewogICAgIHdlYWtyZWZfdHlwZSogbmV3UmVmcyA9CiAgICAgICAgIG90aGVyICE9IE5VTEwgPyBvdGhlci0+Y3JlYXRlV2Vhayh0aGlzKSA6IDA7CisgICAgVCogb3RoZXJQdHIob3RoZXIubV9wdHIpOwogICAgIGlmIChtX3B0cikgbV9yZWZzLT5kZWNXZWFrKHRoaXMpOwotICAgIG1fcHRyID0gb3RoZXIuZ2V0KCk7CisgICAgbV9wdHIgPSBvdGhlclB0cjsKICAgICBtX3JlZnMgPSBuZXdSZWZzOwogICAgIHJldHVybiAqdGhpczsKIH0KQEAgLTQ5OCwxMCArNTAzLDEyIEBACiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB0ZW1wbGF0ZTx0eXBlbmFtZSBVPgogd3A8VD4mIHdwPFQ+OjpvcGVyYXRvciA9IChjb25zdCB3cDxVPiYgb3RoZXIpCiB7Ci0gICAgaWYgKG90aGVyLm1fcHRyKSBvdGhlci5tX3JlZnMtPmluY1dlYWsodGhpcyk7CisgICAgd2Vha3JlZl90eXBlKiBvdGhlclJlZnMob3RoZXIubV9yZWZzKTsKKyAgICBVKiBvdGhlclB0cihvdGhlci5tX3B0cik7CisgICAgaWYgKG90aGVyUHRyKSBvdGhlclJlZnMtPmluY1dlYWsodGhpcyk7CiAgICAgaWYgKG1fcHRyKSBtX3JlZnMtPmRlY1dlYWsodGhpcyk7Ci0gICAgbV9wdHIgPSBvdGhlci5tX3B0cjsKLSAgICBtX3JlZnMgPSBvdGhlci5tX3JlZnM7CisgICAgbV9wdHIgPSBvdGhlclB0cjsKKyAgICBtX3JlZnMgPSBvdGhlclJlZnM7CiAgICAgcmV0dXJuICp0aGlzOwogfQogCkBAIC01MTAsOCArNTE3LDkgQEAKIHsKICAgICB3ZWFrcmVmX3R5cGUqIG5ld1JlZnMgPQogICAgICAgICBvdGhlciAhPSBOVUxMID8gb3RoZXItPmNyZWF0ZVdlYWsodGhpcykgOiAwOworICAgIFUqIG90aGVyUHRyKG90aGVyLm1fcHRyKTsKICAgICBpZiAobV9wdHIpIG1fcmVmcy0+ZGVjV2Vhayh0aGlzKTsKLSAgICBtX3B0ciA9IG90aGVyLmdldCgpOworICAgIG1fcHRyID0gb3RoZXJQdHI7CiAgICAgbV9yZWZzID0gbmV3UmVmczsKICAgICByZXR1cm4gKnRoaXM7CiB9CmRpZmYgLS1naXQgYS9pbmNsdWRlL3V0aWxzL1Jlc291cmNlVHlwZXMuaCBiL2luY2x1ZGUvdXRpbHMvUmVzb3VyY2VUeXBlcy5oCmluZGV4IGI3MDFjZTcuLmM3ZDlmZjEgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdXRpbHMvUmVzb3VyY2VUeXBlcy5oCisrKyBiL2luY2x1ZGUvdXRpbHMvUmVzb3VyY2VUeXBlcy5oCkBAIC05MzMsNiArOTMzLDcgQEAKICAgICAgICAgU0NSRUVOU0laRV9TTUFMTCA9IDB4MDEsCiAgICAgICAgIFNDUkVFTlNJWkVfTk9STUFMID0gMHgwMiwKICAgICAgICAgU0NSRUVOU0laRV9MQVJHRSA9IDB4MDMsCisgICAgICAgIFNDUkVFTlNJWkVfWExBUkdFID0gMHgwNCwKICAgICAgICAgCiAgICAgICAgIC8vIHNjcmVlbkxheW91dCBiaXRzIGZvciB3aWRlL2xvbmcgc2NyZWVuIHZhcmlhdGlvbi4KICAgICAgICAgTUFTS19TQ1JFRU5MT05HID0gMHgzMCwKQEAgLTEyMDgsNyArMTIwOSwyOCBAQAogICAgICAgICAgICAgaWYgKHNjcmVlbkxheW91dCB8fCBvLnNjcmVlbkxheW91dCkgewogICAgICAgICAgICAgICAgIGlmICgoKHNjcmVlbkxheW91dF5vLnNjcmVlbkxheW91dCkgJiBNQVNLX1NDUkVFTlNJWkUpICE9IDAKICAgICAgICAgICAgICAgICAgICAgICAgICYmIChyZXF1ZXN0ZWQtPnNjcmVlbkxheW91dCAmIE1BU0tfU0NSRUVOU0laRSkpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIChzY3JlZW5MYXlvdXQgJiBNQVNLX1NDUkVFTlNJWkUpOworICAgICAgICAgICAgICAgICAgICAvLyBBIGxpdHRsZSBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBoZXJlOiB1bmRlZmluZWQgaXMKKyAgICAgICAgICAgICAgICAgICAgLy8gY29uc2lkZXJlZCBlcXVpdmFsZW50IHRvIG5vcm1hbC4gIEJ1dCBvbmx5IGlmIHRoZQorICAgICAgICAgICAgICAgICAgICAvLyByZXF1ZXN0ZWQgc2l6ZSBpcyBhdCBsZWFzdCBub3JtYWw7IG90aGVyd2lzZSwgc21hbGwKKyAgICAgICAgICAgICAgICAgICAgLy8gaXMgYmV0dGVyIHRoYW4gdGhlIGRlZmF1bHQuCisgICAgICAgICAgICAgICAgICAgIGludCBteVNMID0gKHNjcmVlbkxheW91dCAmIE1BU0tfU0NSRUVOU0laRSk7CisgICAgICAgICAgICAgICAgICAgIGludCBvU0wgPSAoby5zY3JlZW5MYXlvdXQgJiBNQVNLX1NDUkVFTlNJWkUpOworICAgICAgICAgICAgICAgICAgICBpbnQgZml4ZWRNeVNMID0gbXlTTDsKKyAgICAgICAgICAgICAgICAgICAgaW50IGZpeGVkT1NMID0gb1NMOworICAgICAgICAgICAgICAgICAgICBpZiAoKHJlcXVlc3RlZC0+c2NyZWVuTGF5b3V0ICYgTUFTS19TQ1JFRU5TSVpFKSA+PSBTQ1JFRU5TSVpFX05PUk1BTCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpeGVkTXlTTCA9PSAwKSBmaXhlZE15U0wgPSBTQ1JFRU5TSVpFX05PUk1BTDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaXhlZE9TTCA9PSAwKSBmaXhlZE9TTCA9IFNDUkVFTlNJWkVfTk9STUFMOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIC8vIEZvciBzY3JlZW4gc2l6ZSwgdGhlIGJlc3QgbWF0Y2ggaXMgdGhlIG9uZSB0aGF0IGlzCisgICAgICAgICAgICAgICAgICAgIC8vIGNsb3Nlc3QgdG8gdGhlIHJlcXVlc3RlZCBzY3JlZW4gc2l6ZSwgYnV0IG5vdCBvdmVyCisgICAgICAgICAgICAgICAgICAgIC8vICh0aGUgbm90IG92ZXIgcGFydCBpcyBkZWFsdCB3aXRoIGluIG1hdGNoKCkgYmVsb3cpLgorICAgICAgICAgICAgICAgICAgICBpZiAoZml4ZWRNeVNMID09IGZpeGVkT1NMKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgdHdvIGFyZSB0aGUgc2FtZSwgYnV0ICd0aGlzJyBpcyBhY3R1YWxseQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gdW5kZWZpbmVkLCB0aGVuIHRoZSBvdGhlciBpcyByZWFsbHkgYSBiZXR0ZXIgbWF0Y2guCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobXlTTCA9PSAwKSByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZml4ZWRNeVNMID49IGZpeGVkT1NMOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoKChzY3JlZW5MYXlvdXReby5zY3JlZW5MYXlvdXQpICYgTUFTS19TQ1JFRU5MT05HKSAhPSAwCiAgICAgICAgICAgICAgICAgICAgICAgICAmJiAocmVxdWVzdGVkLT5zY3JlZW5MYXlvdXQgJiBNQVNLX1NDUkVFTkxPTkcpKSB7CkBAIC0xMzcwLDggKzEzOTIsMTEgQEAKICAgICAgICAgaWYgKHNjcmVlbkNvbmZpZyAhPSAwKSB7CiAgICAgICAgICAgICBjb25zdCBpbnQgc2NyZWVuU2l6ZSA9IHNjcmVlbkxheW91dCZNQVNLX1NDUkVFTlNJWkU7CiAgICAgICAgICAgICBjb25zdCBpbnQgc2V0U2NyZWVuU2l6ZSA9IHNldHRpbmdzLnNjcmVlbkxheW91dCZNQVNLX1NDUkVFTlNJWkU7Ci0gICAgICAgICAgICBpZiAoc2V0U2NyZWVuU2l6ZSAhPSAwICYmIHNjcmVlblNpemUgIT0gMAotICAgICAgICAgICAgICAgICAgICAmJiBzY3JlZW5TaXplICE9IHNldFNjcmVlblNpemUpIHsKKyAgICAgICAgICAgIC8vIEFueSBzY3JlZW4gc2l6ZXMgZm9yIGxhcmdlciBzY3JlZW5zIHRoYW4gdGhlIHNldHRpbmcgZG8gbm90CisgICAgICAgICAgICAvLyBtYXRjaC4KKyAgICAgICAgICAgIGlmICgoc2V0U2NyZWVuU2l6ZSAhPSAwICYmIHNjcmVlblNpemUgIT0gMAorICAgICAgICAgICAgICAgICAgICAmJiBzY3JlZW5TaXplID4gc2V0U2NyZWVuU2l6ZSkgfHwKKyAgICAgICAgICAgICAgICAgICAgKHNldFNjcmVlblNpemUgPT0gMCAmJiBzY3JlZW5TaXplICE9IDApKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgCmRpZmYgLS1naXQgYS9pbmNsdWRlL3V0aWxzL1NpbmdsZXRvbi5oIGIvaW5jbHVkZS91dGlscy9TaW5nbGV0b24uaAppbmRleCBiYzc2MjZhOC4uM2I5NzViNCAxMDA2NDQKLS0tIGEvaW5jbHVkZS91dGlscy9TaW5nbGV0b24uaAorKysgYi9pbmNsdWRlL3V0aWxzL1NpbmdsZXRvbi5oCkBAIC01NCwxMSArNTQsMTMgQEAKICAqIChlZzogPFRZUEU+LmNwcCkgdG8gY3JlYXRlIHRoZSBzdGF0aWMgaW5zdGFuY2Ugb2YgU2luZ2xldG9uPD4ncyBhdHRyaWJ1dGVzLAogICogYW5kIGF2b2lkIHRvIGhhdmUgYSBjb3B5IG9mIHRoZW0gaW4gZWFjaCBjb21waWxhdGlvbiB1bml0cyBTaW5nbGV0b248VFlQRT4KICAqIGlzIHVzZWQuCisgKiBOT1RFOiB3ZSB1c2UgYSB2ZXJzaW9uIG9mIE11dGV4IGN0b3IgdGhhdCB0YWtlcyBhIHBhcmFtZXRlciwgYmVjYXVzZQorICogZm9yIHNvbWUgdW5rbm93biByZWFzb24gdXNpbmcgdGhlIGRlZmF1bHQgY3RvciBkb2Vzbid0IGVtaXQgdGhlIHZhcmlhYmxlIQogICovCiAKLSNkZWZpbmUgQU5EUk9JRF9TSU5HTEVUT05fU1RBVElDX0lOU1RBTkNFKFRZUEUpICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZSBjbGFzcyBTaW5nbGV0b248IFRZUEUgPjsgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB0ZW1wbGF0ZTwgY2xhc3MgVFlQRSA+IE11dGV4IFNpbmdsZXRvbjwgVFlQRSA+OjpzTG9jazsgIFwKKyNkZWZpbmUgQU5EUk9JRF9TSU5HTEVUT05fU1RBVElDX0lOU1RBTkNFKFRZUEUpICAgICAgICAgICAgICAgICBcCisgICAgdGVtcGxhdGUgY2xhc3MgU2luZ2xldG9uPCBUWVBFID47ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHRlbXBsYXRlPD4gTXV0ZXggU2luZ2xldG9uPCBUWVBFID46OnNMb2NrKE11dGV4OjpQUklWQVRFKTsgIFwKICAgICB0ZW1wbGF0ZTw+IFRZUEUqIFNpbmdsZXRvbjwgVFlQRSA+OjpzSW5zdGFuY2UoMCk7CiAKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS91dGlscy9TdG9wV2F0Y2guaCBiL2luY2x1ZGUvdXRpbHMvU3RvcFdhdGNoLmgKaW5kZXggY2MwYmViYy4uNjkzZGQzYyAxMDA2NDQKLS0tIGEvaW5jbHVkZS91dGlscy9TdG9wV2F0Y2guaAorKysgYi9pbmNsdWRlL3V0aWxzL1N0b3BXYXRjaC5oCkBAIC0zNyw2ICszNyw4IEBACiAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWUoKSBjb25zdDsKICAgICAgICAgbnNlY3NfdCAgICAgbGFwKCk7CiAgICAgICAgIG5zZWNzX3QgICAgIGVsYXBzZWRUaW1lKCkgY29uc3Q7CisKKyAgICAgICAgdm9pZCAgICAgICAgcmVzZXQoKTsKICAgICAgICAgCiBwcml2YXRlOgogICAgIGNvbnN0IGNoYXIqICAgICBtTmFtZTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdXRpbHMvVmVjdG9yLmggYi9pbmNsdWRlL3V0aWxzL1ZlY3Rvci5oCmluZGV4IGFkNTlmZDYuLmVjODUxYmQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdXRpbHMvVmVjdG9yLmgKKysrIGIvaW5jbHVkZS91dGlscy9WZWN0b3IuaApAQCAtMTE0LDEzICsxMTQsMTkgQEAKICAgICAgICAgICAgIHNzaXplX3QgICAgICAgICBhcHBlbmRWZWN0b3IoY29uc3QgVmVjdG9yPFRZUEU+JiB2ZWN0b3IpOwogCiAKKyAgICAvLyEgaW5zZXJ0IGFuIGFycmF5IGF0IGEgZ2l2ZW4gaW5kZXgKKyAgICAgICAgICAgIHNzaXplX3QgICAgICAgICBpbnNlcnRBcnJheUF0KGNvbnN0IFRZUEUqIGFycmF5LCBzaXplX3QgaW5kZXgsIHNpemVfdCBsZW5ndGgpOworCisgICAgLy8hIGFwcGVuZCBhbiBhcnJheSBhdCB0aGUgZW5kIG9mIHRoaXMgdmVjdG9yCisgICAgICAgICAgICBzc2l6ZV90ICAgICAgICAgYXBwZW5kQXJyYXkoY29uc3QgVFlQRSogYXJyYXksIHNpemVfdCBsZW5ndGgpOworCiAgICAgICAgICAgICAvKiEgCiAgICAgICAgICAgICAgKiBhZGQvaW5zZXJ0L3JlcGxhY2UgaXRlbXMKICAgICAgICAgICAgICAqLwogICAgICAgICAgICAgIAogICAgIC8vISBpbnNlcnQgb25lIG9yIHNldmVyYWwgaXRlbXMgaW5pdGlhbGl6ZWQgd2l0aCB0aGVpciBkZWZhdWx0IGNvbnN0cnVjdG9yCiAgICAgaW5saW5lICBzc2l6ZV90ICAgICAgICAgaW5zZXJ0QXQoc2l6ZV90IGluZGV4LCBzaXplX3QgbnVtSXRlbXMgPSAxKTsKLSAgICAvLyEgaW5zZXJ0IG9uIG9uciBzZXZlcmFsIGl0ZW1zIGluaXRpYWxpemVkIGZyb20gYSBwcm90b3R5cGUgaXRlbQorICAgIC8vISBpbnNlcnQgb25lIG9yIHNldmVyYWwgaXRlbXMgaW5pdGlhbGl6ZWQgZnJvbSBhIHByb3RvdHlwZSBpdGVtCiAgICAgICAgICAgICBzc2l6ZV90ICAgICAgICAgaW5zZXJ0QXQoY29uc3QgVFlQRSYgcHJvdG90eXBlX2l0ZW0sIHNpemVfdCBpbmRleCwgc2l6ZV90IG51bUl0ZW1zID0gMSk7CiAgICAgLy8hIHBvcCB0aGUgdG9wIG9mIHRoZSBzdGFjayAocmVtb3ZlcyB0aGUgbGFzdCBlbGVtZW50KS4gTm8tb3AgaWYgdGhlIHN0YWNrJ3MgZW1wdHkKICAgICBpbmxpbmUgIHZvaWQgICAgICAgICAgICBwb3AoKTsKQEAgLTI1OSw2ICsyNjUsMTYgQEAKIH0KIAogdGVtcGxhdGU8Y2xhc3MgVFlQRT4gaW5saW5lCitzc2l6ZV90IFZlY3RvcjxUWVBFPjo6aW5zZXJ0QXJyYXlBdChjb25zdCBUWVBFKiBhcnJheSwgc2l6ZV90IGluZGV4LCBzaXplX3QgbGVuZ3RoKSB7CisgICAgcmV0dXJuIFZlY3RvckltcGw6Omluc2VydEFycmF5QXQoYXJyYXksIGluZGV4LCBsZW5ndGgpOworfQorCit0ZW1wbGF0ZTxjbGFzcyBUWVBFPiBpbmxpbmUKK3NzaXplX3QgVmVjdG9yPFRZUEU+OjphcHBlbmRBcnJheShjb25zdCBUWVBFKiBhcnJheSwgc2l6ZV90IGxlbmd0aCkgeworICAgIHJldHVybiBWZWN0b3JJbXBsOjphcHBlbmRBcnJheShhcnJheSwgbGVuZ3RoKTsKK30KKwordGVtcGxhdGU8Y2xhc3MgVFlQRT4gaW5saW5lCiBzc2l6ZV90IFZlY3RvcjxUWVBFPjo6aW5zZXJ0QXQoY29uc3QgVFlQRSYgaXRlbSwgc2l6ZV90IGluZGV4LCBzaXplX3QgbnVtSXRlbXMpIHsKICAgICByZXR1cm4gVmVjdG9ySW1wbDo6aW5zZXJ0QXQoJml0ZW0sIGluZGV4LCBudW1JdGVtcyk7CiB9CmRpZmYgLS1naXQgYS9pbmNsdWRlL3V0aWxzL1ZlY3RvckltcGwuaCBiL2luY2x1ZGUvdXRpbHMvVmVjdG9ySW1wbC5oCmluZGV4IDQ5YjAzZjEuLmM0ZWMyZmYgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdXRpbHMvVmVjdG9ySW1wbC5oCisrKyBiL2luY2x1ZGUvdXRpbHMvVmVjdG9ySW1wbC5oCkBAIC02NSw5ICs2NSwxMSBAQAogICAgICAgICAgICAgc2l6ZV90ICAgICAgICAgIGNhcGFjaXR5KCkgY29uc3Q7CiAgICAgICAgICAgICBzc2l6ZV90ICAgICAgICAgc2V0Q2FwYWNpdHkoc2l6ZV90IHNpemUpOwogCi0gICAgICAgICAgICAvKiEgYXBwZW5kL2luc2VydCBhbm90aGVyIHZlY3RvciAqLworICAgICAgICAgICAgLyohIGFwcGVuZC9pbnNlcnQgYW5vdGhlciB2ZWN0b3Igb3IgYXJyYXkgKi8KICAgICAgICAgICAgIHNzaXplX3QgICAgICAgICBpbnNlcnRWZWN0b3JBdChjb25zdCBWZWN0b3JJbXBsJiB2ZWN0b3IsIHNpemVfdCBpbmRleCk7CiAgICAgICAgICAgICBzc2l6ZV90ICAgICAgICAgYXBwZW5kVmVjdG9yKGNvbnN0IFZlY3RvckltcGwmIHZlY3Rvcik7CisgICAgICAgICAgICBzc2l6ZV90ICAgICAgICAgaW5zZXJ0QXJyYXlBdChjb25zdCB2b2lkKiBhcnJheSwgc2l6ZV90IGluZGV4LCBzaXplX3QgbGVuZ3RoKTsKKyAgICAgICAgICAgIHNzaXplX3QgICAgICAgICBhcHBlbmRBcnJheShjb25zdCB2b2lkKiBhcnJheSwgc2l6ZV90IGxlbmd0aCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIC8qISBhZGQvaW5zZXJ0L3JlcGxhY2UgaXRlbXMgKi8KICAgICAgICAgICAgIHNzaXplX3QgICAgICAgICBpbnNlcnRBdChzaXplX3Qgd2hlcmUsIHNpemVfdCBudW1JdGVtcyA9IDEpOwpAQCAtMTg0LDYgKzE4Niw4IEBACiAgICAgICAgICAgICB2b2lkICAgICAgICAgICAgcHVzaChjb25zdCB2b2lkKiBpdGVtKTsKICAgICAgICAgICAgIHNzaXplX3QgICAgICAgICBpbnNlcnRWZWN0b3JBdChjb25zdCBWZWN0b3JJbXBsJiB2ZWN0b3IsIHNpemVfdCBpbmRleCk7CiAgICAgICAgICAgICBzc2l6ZV90ICAgICAgICAgYXBwZW5kVmVjdG9yKGNvbnN0IFZlY3RvckltcGwmIHZlY3Rvcik7CisgICAgICAgICAgICBzc2l6ZV90ICAgICAgICAgaW5zZXJ0QXJyYXlBdChjb25zdCB2b2lkKiBhcnJheSwgc2l6ZV90IGluZGV4LCBzaXplX3QgbGVuZ3RoKTsKKyAgICAgICAgICAgIHNzaXplX3QgICAgICAgICBhcHBlbmRBcnJheShjb25zdCB2b2lkKiBhcnJheSwgc2l6ZV90IGxlbmd0aCk7CiAgICAgICAgICAgICBzc2l6ZV90ICAgICAgICAgaW5zZXJ0QXQoc2l6ZV90IHdoZXJlLCBzaXplX3QgbnVtSXRlbXMgPSAxKTsKICAgICAgICAgICAgIHNzaXplX3QgICAgICAgICBpbnNlcnRBdChjb25zdCB2b2lkKiBpdGVtLCBzaXplX3Qgd2hlcmUsIHNpemVfdCBudW1JdGVtcyA9IDEpOwogICAgICAgICAgICAgc3NpemVfdCAgICAgICAgIHJlcGxhY2VBdChzaXplX3QgaW5kZXgpOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS91dGlscy9aaXBGaWxlQ1JPLmggYi9pbmNsdWRlL3V0aWxzL1ppcEZpbGVDUk8uaAppbmRleCAzMGUwMDM2Li5lMzhiZjY2IDEwMDY0NAotLS0gYS9pbmNsdWRlL3V0aWxzL1ppcEZpbGVDUk8uaAorKysgYi9pbmNsdWRlL3V0aWxzL1ppcEZpbGVDUk8uaApAQCAtNDcsOCArNDcsOCBAQAogICAgICAgICBjb25zdCBjaGFyKiBmaWxlTmFtZSk7CiAKIGV4dGVybiBib29sIFppcEZpbGVDUk9fZ2V0RW50cnlJbmZvKFppcEZpbGVDUk8gemlwLCBaaXBFbnRyeUNSTyBlbnRyeSwKLSAgICAgICAgaW50KiBwTWV0aG9kLCBsb25nKiBwVW5jb21wTGVuLAotICAgICAgICBsb25nKiBwQ29tcExlbiwgb2ZmX3QqIHBPZmZzZXQsIGxvbmcqIHBNb2RXaGVuLCBsb25nKiBwQ3JjMzIpOworICAgICAgICBpbnQqIHBNZXRob2QsIHNpemVfdCogcFVuY29tcExlbiwKKyAgICAgICAgc2l6ZV90KiBwQ29tcExlbiwgb2ZmX3QqIHBPZmZzZXQsIGxvbmcqIHBNb2RXaGVuLCBsb25nKiBwQ3JjMzIpOwogCiBleHRlcm4gYm9vbCBaaXBGaWxlQ1JPX3VuY29tcHJlc3NFbnRyeShaaXBGaWxlQ1JPIHppcCwgWmlwRW50cnlDUk8gZW50cnksIGludCBmZCk7CiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvdXRpbHMvWmlwRmlsZVJPLmggYi9pbmNsdWRlL3V0aWxzL1ppcEZpbGVSTy5oCmluZGV4IDUxYzRmMmYuLjk3ZDMxZjQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvdXRpbHMvWmlwRmlsZVJPLmgKKysrIGIvaW5jbHVkZS91dGlscy9aaXBGaWxlUk8uaApAQCAtNTgsMTQgKzU4LDE5IEBACiBjbGFzcyBaaXBGaWxlUk8gewogcHVibGljOgogICAgIFppcEZpbGVSTygpCi0gICAgICAgIDogbUZkKC0xKSwgbUZpbGVNYXAoTlVMTCksIG1IYXNoVGFibGVTaXplKC0xKSwgbUhhc2hUYWJsZShOVUxMKQorICAgICAgICA6IG1GZCgtMSksIG1GaWxlTmFtZShOVUxMKSwgbUZpbGVMZW5ndGgoLTEpLAorICAgICAgICAgIG1EaXJlY3RvcnlNYXAoTlVMTCksCisgICAgICAgICAgbU51bUVudHJpZXMoLTEpLCBtRGlyZWN0b3J5T2Zmc2V0KC0xKSwKKyAgICAgICAgICBtSGFzaFRhYmxlU2l6ZSgtMSksIG1IYXNoVGFibGUoTlVMTCkKICAgICAgICAge30KICAgICB+WmlwRmlsZVJPKCkgewogICAgICAgICBmcmVlKG1IYXNoVGFibGUpOwotICAgICAgICBpZiAobUZpbGVNYXApCi0gICAgICAgICAgICBtRmlsZU1hcC0+cmVsZWFzZSgpOworICAgICAgICBpZiAobURpcmVjdG9yeU1hcCkKKyAgICAgICAgICAgIG1EaXJlY3RvcnlNYXAtPnJlbGVhc2UoKTsKICAgICAgICAgaWYgKG1GZCA+PSAwKQogICAgICAgICAgICAgY2xvc2UobUZkKTsKKyAgICAgICAgaWYgKG1GaWxlTmFtZSkKKyAgICAgICAgICAgIGZyZWUobUZpbGVOYW1lKTsKICAgICB9CiAKICAgICAvKgpAQCAtMTE4LDggKzEyMyw4IEBACiAgICAgICogUmV0dXJucyAiZmFsc2UiIGlmICJlbnRyeSIgaXMgYm9ndXMgb3IgaWYgdGhlIGRhdGEgaW4gdGhlIFppcCBmaWxlCiAgICAgICogYXBwZWFycyB0byBiZSBiYWQuCiAgICAgICovCi0gICAgYm9vbCBnZXRFbnRyeUluZm8oWmlwRW50cnlSTyBlbnRyeSwgaW50KiBwTWV0aG9kLCBsb25nKiBwVW5jb21wTGVuLAotICAgICAgICBsb25nKiBwQ29tcExlbiwgb2ZmX3QqIHBPZmZzZXQsIGxvbmcqIHBNb2RXaGVuLCBsb25nKiBwQ3JjMzIpIGNvbnN0OworICAgIGJvb2wgZ2V0RW50cnlJbmZvKFppcEVudHJ5Uk8gZW50cnksIGludCogcE1ldGhvZCwgc2l6ZV90KiBwVW5jb21wTGVuLAorICAgICAgICBzaXplX3QqIHBDb21wTGVuLCBvZmZfdCogcE9mZnNldCwgbG9uZyogcE1vZFdoZW4sIGxvbmcqIHBDcmMzMikgY29uc3Q7CiAKICAgICAvKgogICAgICAqIENyZWF0ZSBhIG5ldyBGaWxlTWFwIG9iamVjdCB0aGF0IG1hcHMgYSBzdWJzZXQgb2YgdGhlIGFyY2hpdmUuICBGb3IKQEAgLTE1NSwxMyArMTYwLDEzIEBACiAgICAgICogVXRpbGl0eSBmdW5jdGlvbjogdW5jb21wcmVzcyBkZWZsYXRlZCBkYXRhLCBidWZmZXIgdG8gYnVmZmVyLgogICAgICAqLwogICAgIHN0YXRpYyBib29sIGluZmxhdGVCdWZmZXIodm9pZCogb3V0QnVmLCBjb25zdCB2b2lkKiBpbkJ1ZiwKLSAgICAgICAgbG9uZyB1bmNvbXBMZW4sIGxvbmcgY29tcExlbik7CisgICAgICAgIHNpemVfdCB1bmNvbXBMZW4sIHNpemVfdCBjb21wTGVuKTsKIAogICAgIC8qCiAgICAgICogVXRpbGl0eSBmdW5jdGlvbjogdW5jb21wcmVzcyBkZWZsYXRlZCBkYXRhLCBidWZmZXIgdG8gZmQuCiAgICAgICovCiAgICAgc3RhdGljIGJvb2wgaW5mbGF0ZUJ1ZmZlcihpbnQgZmQsIGNvbnN0IHZvaWQqIGluQnVmLAotICAgICAgICBsb25nIHVuY29tcExlbiwgbG9uZyBjb21wTGVuKTsKKyAgICAgICAgc2l6ZV90IHVuY29tcExlbiwgc2l6ZV90IGNvbXBMZW4pOwogCiAgICAgLyoKICAgICAgKiBTb21lIGJhc2ljIGZ1bmN0aW9ucyBmb3IgcmF3IGRhdGEgbWFuaXB1bGF0aW9uLiAgIkxFIiBtZWFucwpAQCAtMTc5LDYgKzE4NCw5IEBACiAgICAgWmlwRmlsZVJPKGNvbnN0IFppcEZpbGVSTyYgc3JjKTsKICAgICBaaXBGaWxlUk8mIG9wZXJhdG9yPShjb25zdCBaaXBGaWxlUk8mIHNyYyk7CiAKKyAgICAvKiBsb2NhdGUgYW5kIHBhcnNlIHRoZSBjZW50cmFsIGRpcmVjdG9yeSAqLworICAgIGJvb2wgbWFwQ2VudHJhbERpcmVjdG9yeSh2b2lkKTsKKwogICAgIC8qIHBhcnNlIHRoZSBhcmNoaXZlLCBwcmVwcGluZyBpbnRlcm5hbCBzdHJ1Y3R1cmVzICovCiAgICAgYm9vbCBwYXJzZVppcEFyY2hpdmUodm9pZCk7CiAKQEAgLTIwMywxMiArMjExLDIxIEBACiAgICAgLyogb3BlbiBaaXAgYXJjaGl2ZSAqLwogICAgIGludCAgICAgICAgIG1GZDsKIAorICAgIC8qIHppcCBmaWxlIG5hbWUgKi8KKyAgICBjaGFyKiAgICAgICBtRmlsZU5hbWU7CisKKyAgICAvKiBsZW5ndGggb2YgZmlsZSAqLworICAgIHNpemVfdCAgICAgIG1GaWxlTGVuZ3RoOworCiAgICAgLyogbWFwcGVkIGZpbGUgKi8KLSAgICBGaWxlTWFwKiAgICBtRmlsZU1hcDsKKyAgICBGaWxlTWFwKiAgICBtRGlyZWN0b3J5TWFwOwogCiAgICAgLyogbnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlIFppcCBhcmNoaXZlICovCiAgICAgaW50ICAgICAgICAgbU51bUVudHJpZXM7CiAKKyAgICAvKiBDRCBkaXJlY3Rvcnkgb2Zmc2V0IGluIHRoZSBaaXAgYXJjaGl2ZSAqLworICAgIG9mZl90ICAgICAgIG1EaXJlY3RvcnlPZmZzZXQ7CisKICAgICAvKgogICAgICAqIFdlIGtub3cgaG93IG1hbnkgZW50cmllcyBhcmUgaW4gdGhlIFppcCBhcmNoaXZlLCBzbyB3ZSBoYXZlIGEKICAgICAgKiBmaXhlZC1zaXplIGhhc2ggdGFibGUuICBXZSBwcm9iZSBmb3IgYW4gZW1wdHkgc2xvdC4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvdXRpbHMvdGhyZWFkcy5oIGIvaW5jbHVkZS91dGlscy90aHJlYWRzLmgKaW5kZXggNWFjMGM1ZS4uMWJjZmFlZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS91dGlscy90aHJlYWRzLmgKKysrIGIvaW5jbHVkZS91dGlscy90aHJlYWRzLmgKQEAgLTI5NSw2ICsyOTUsOTYgQEAKIAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCisjaWYgZGVmaW5lZChIQVZFX1BUSFJFQURTKQorCisvKgorICogU2ltcGxlIG11dGV4IGNsYXNzLiAgVGhlIGltcGxlbWVudGF0aW9uIGlzIHN5c3RlbS1kZXBlbmRlbnQuCisgKgorICogVGhlIG11dGV4IG11c3QgYmUgdW5sb2NrZWQgYnkgdGhlIHRocmVhZCB0aGF0IGxvY2tlZCBpdC4gIFRoZXkgYXJlIG5vdAorICogcmVjdXJzaXZlLCBpLmUuIHRoZSBzYW1lIHRocmVhZCBjYW4ndCBsb2NrIGl0IG11bHRpcGxlIHRpbWVzLgorICovCitjbGFzcyBSV0xvY2sgeworcHVibGljOgorICAgIGVudW0geworICAgICAgICBQUklWQVRFID0gMCwKKyAgICAgICAgU0hBUkVEID0gMQorICAgIH07CisKKyAgICAgICAgICAgICAgICBSV0xvY2soKTsKKyAgICAgICAgICAgICAgICBSV0xvY2soY29uc3QgY2hhciogbmFtZSk7CisgICAgICAgICAgICAgICAgUldMb2NrKGludCB0eXBlLCBjb25zdCBjaGFyKiBuYW1lID0gTlVMTCk7CisgICAgICAgICAgICAgICAgflJXTG9jaygpOworCisgICAgc3RhdHVzX3QgICAgcmVhZExvY2soKTsKKyAgICBzdGF0dXNfdCAgICB0cnlSZWFkTG9jaygpOworICAgIHN0YXR1c190ICAgIHdyaXRlTG9jaygpOworICAgIHN0YXR1c190ICAgIHRyeVdyaXRlTG9jaygpOworICAgIHZvaWQgICAgICAgIHVubG9jaygpOworCisgICAgY2xhc3MgQXV0b1JMb2NrIHsKKyAgICBwdWJsaWM6CisgICAgICAgIGlubGluZSBBdXRvUkxvY2soUldMb2NrJiByd2xvY2spIDogbUxvY2socndsb2NrKSAgeyBtTG9jay5yZWFkTG9jaygpOyB9CisgICAgICAgIGlubGluZSB+QXV0b1JMb2NrKCkgeyBtTG9jay51bmxvY2soKTsgfQorICAgIHByaXZhdGU6CisgICAgICAgIFJXTG9jayYgbUxvY2s7CisgICAgfTsKKworICAgIGNsYXNzIEF1dG9XTG9jayB7CisgICAgcHVibGljOgorICAgICAgICBpbmxpbmUgQXV0b1dMb2NrKFJXTG9jayYgcndsb2NrKSA6IG1Mb2NrKHJ3bG9jaykgIHsgbUxvY2sud3JpdGVMb2NrKCk7IH0KKyAgICAgICAgaW5saW5lIH5BdXRvV0xvY2soKSB7IG1Mb2NrLnVubG9jaygpOyB9CisgICAgcHJpdmF0ZToKKyAgICAgICAgUldMb2NrJiBtTG9jazsKKyAgICB9OworCitwcml2YXRlOgorICAgIC8vIEEgUldMb2NrIGNhbm5vdCBiZSBjb3BpZWQKKyAgICAgICAgICAgICAgICBSV0xvY2soY29uc3QgUldMb2NrJik7CisgICBSV0xvY2smICAgICAgb3BlcmF0b3IgPSAoY29uc3QgUldMb2NrJik7CisKKyAgIHB0aHJlYWRfcndsb2NrX3QgbVJXTG9jazsKK307CisKK2lubGluZSBSV0xvY2s6OlJXTG9jaygpIHsKKyAgICBwdGhyZWFkX3J3bG9ja19pbml0KCZtUldMb2NrLCBOVUxMKTsKK30KK2lubGluZSBSV0xvY2s6OlJXTG9jayhjb25zdCBjaGFyKiBuYW1lKSB7CisgICAgcHRocmVhZF9yd2xvY2tfaW5pdCgmbVJXTG9jaywgTlVMTCk7Cit9CitpbmxpbmUgUldMb2NrOjpSV0xvY2soaW50IHR5cGUsIGNvbnN0IGNoYXIqIG5hbWUpIHsKKyAgICBpZiAodHlwZSA9PSBTSEFSRUQpIHsKKyAgICAgICAgcHRocmVhZF9yd2xvY2thdHRyX3QgYXR0cjsKKyAgICAgICAgcHRocmVhZF9yd2xvY2thdHRyX2luaXQoJmF0dHIpOworICAgICAgICBwdGhyZWFkX3J3bG9ja2F0dHJfc2V0cHNoYXJlZCgmYXR0ciwgUFRIUkVBRF9QUk9DRVNTX1NIQVJFRCk7CisgICAgICAgIHB0aHJlYWRfcndsb2NrX2luaXQoJm1SV0xvY2ssICZhdHRyKTsKKyAgICAgICAgcHRocmVhZF9yd2xvY2thdHRyX2Rlc3Ryb3koJmF0dHIpOworICAgIH0gZWxzZSB7CisgICAgICAgIHB0aHJlYWRfcndsb2NrX2luaXQoJm1SV0xvY2ssIE5VTEwpOworICAgIH0KK30KK2lubGluZSBSV0xvY2s6On5SV0xvY2soKSB7CisgICAgcHRocmVhZF9yd2xvY2tfZGVzdHJveSgmbVJXTG9jayk7Cit9CitpbmxpbmUgc3RhdHVzX3QgUldMb2NrOjpyZWFkTG9jaygpIHsKKyAgICByZXR1cm4gLXB0aHJlYWRfcndsb2NrX3JkbG9jaygmbVJXTG9jayk7Cit9CitpbmxpbmUgc3RhdHVzX3QgUldMb2NrOjp0cnlSZWFkTG9jaygpIHsKKyAgICByZXR1cm4gLXB0aHJlYWRfcndsb2NrX3RyeXJkbG9jaygmbVJXTG9jayk7Cit9CitpbmxpbmUgc3RhdHVzX3QgUldMb2NrOjp3cml0ZUxvY2soKSB7CisgICAgcmV0dXJuIC1wdGhyZWFkX3J3bG9ja193cmxvY2soJm1SV0xvY2spOworfQoraW5saW5lIHN0YXR1c190IFJXTG9jazo6dHJ5V3JpdGVMb2NrKCkgeworICAgIHJldHVybiAtcHRocmVhZF9yd2xvY2tfdHJ5d3Jsb2NrKCZtUldMb2NrKTsKK30KK2lubGluZSB2b2lkIFJXTG9jazo6dW5sb2NrKCkgeworICAgIHB0aHJlYWRfcndsb2NrX3VubG9jaygmbVJXTG9jayk7Cit9CisKKyNlbmRpZiAvLyBIQVZFX1BUSFJFQURTCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKwogLyoKICAqIENvbmRpdGlvbiB2YXJpYWJsZSBjbGFzcy4gIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBzeXN0ZW0tZGVwZW5kZW50LgogICoKZGlmZiAtLWdpdCBhL2xpYnMvYXVkaW9mbGluZ2VyL0FuZHJvaWQubWsgYi9saWJzL2F1ZGlvZmxpbmdlci9BbmRyb2lkLm1rCmluZGV4IDg3MGMwYjguLjIyZWNjNTQgMTAwNjQ0Ci0tLSBhL2xpYnMvYXVkaW9mbGluZ2VyL0FuZHJvaWQubWsKKysrIGIvbGlicy9hdWRpb2ZsaW5nZXIvQW5kcm9pZC5tawpAQCAtODcsNyArODcsOCBAQAogICAgIGxpYnV0aWxzIFwKICAgICBsaWJiaW5kZXIgXAogICAgIGxpYm1lZGlhIFwKLSAgICBsaWJoYXJkd2FyZV9sZWdhY3kKKyAgICBsaWJoYXJkd2FyZV9sZWdhY3kgXAorICAgIGxpYmVmZmVjdHMKIAogaWZlcSAoJChzdHJpcCAkKEJPQVJEX1VTRVNfR0VORVJJQ19BVURJTykpLHRydWUpCiAgIExPQ0FMX1NUQVRJQ19MSUJSQVJJRVMgKz0gbGliYXVkaW9pbnRlcmZhY2UgbGliYXVkaW9wb2xpY3liYXNlCmRpZmYgLS1naXQgYS9saWJzL2F1ZGlvZmxpbmdlci9BdWRpb0R1bXBJbnRlcmZhY2UuY3BwIGIvbGlicy9hdWRpb2ZsaW5nZXIvQXVkaW9EdW1wSW50ZXJmYWNlLmNwcAppbmRleCBhMDE4YjRjLi42YzExMTE0IDEwMDY0NAotLS0gYS9saWJzL2F1ZGlvZmxpbmdlci9BdWRpb0R1bXBJbnRlcmZhY2UuY3BwCisrKyBiL2xpYnMvYXVkaW9mbGluZ2VyL0F1ZGlvRHVtcEludGVyZmFjZS5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogQXVkaW9EdW1wSW50ZXJmYWNlOjpBdWRpb0R1bXBJbnRlcmZhY2UoQXVkaW9IYXJkd2FyZUludGVyZmFjZSogaHcpCi0gICAgOiBtRmlyc3RId091dHB1dCh0cnVlKSwgbVBvbGljeUNvbW1hbmRzKFN0cmluZzgoIiIpKSwgbUZpbGVOYW1lKFN0cmluZzgoIiIpKQorICAgIDogbVBvbGljeUNvbW1hbmRzKFN0cmluZzgoIiIpKSwgbUZpbGVOYW1lKFN0cmluZzgoIiIpKQogewogICAgIGlmKGh3ID09IDApIHsKICAgICAgICAgTE9HRSgiRHVtcCBjb25zdHJ1Y3QgaHcgPSAwIik7CkBAIC00Nyw2ICs0NywxMSBAQAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbU91dHB1dHMuc2l6ZSgpOyBpKyspIHsKICAgICAgICAgY2xvc2VPdXRwdXRTdHJlYW0oKEF1ZGlvU3RyZWFtT3V0ICopbU91dHB1dHNbaV0pOwogICAgIH0KKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbUlucHV0cy5zaXplKCk7IGkrKykgeworICAgICAgICBjbG9zZUlucHV0U3RyZWFtKChBdWRpb1N0cmVhbUluICopbUlucHV0c1tpXSk7CisgICAgfQorCiAgICAgaWYobUZpbmFsSW50ZXJmYWNlKSBkZWxldGUgbUZpbmFsSW50ZXJmYWNlOwogfQogCkBAIC02MCwzMSArNjUsMzIgQEAKICAgICB1aW50MzJfdCBsUmF0ZSA9IDQ0MTAwOwogCiAKLSAgICBpZiAoQXVkaW9TeXN0ZW06OmlzQTJkcERldmljZSgoQXVkaW9TeXN0ZW06OmF1ZGlvX2RldmljZXMpZGV2aWNlcykgfHwgbUZpcnN0SHdPdXRwdXQpIHsKLSAgICAgICAgb3V0RmluYWwgPSBtRmluYWxJbnRlcmZhY2UtPm9wZW5PdXRwdXRTdHJlYW0oZGV2aWNlcywgZm9ybWF0LCBjaGFubmVscywgc2FtcGxlUmF0ZSwgc3RhdHVzKTsKLSAgICAgICAgaWYgKG91dEZpbmFsICE9IDApIHsKLSAgICAgICAgICAgIGxGb3JtYXQgPSBvdXRGaW5hbC0+Zm9ybWF0KCk7Ci0gICAgICAgICAgICBsQ2hhbm5lbHMgPSBvdXRGaW5hbC0+Y2hhbm5lbHMoKTsKLSAgICAgICAgICAgIGxSYXRlID0gb3V0RmluYWwtPnNhbXBsZVJhdGUoKTsKLSAgICAgICAgICAgIGlmICghQXVkaW9TeXN0ZW06OmlzQTJkcERldmljZSgoQXVkaW9TeXN0ZW06OmF1ZGlvX2RldmljZXMpZGV2aWNlcykpIHsKLSAgICAgICAgICAgICAgICBtRmlyc3RId091dHB1dCA9IGZhbHNlOworICAgIG91dEZpbmFsID0gbUZpbmFsSW50ZXJmYWNlLT5vcGVuT3V0cHV0U3RyZWFtKGRldmljZXMsIGZvcm1hdCwgY2hhbm5lbHMsIHNhbXBsZVJhdGUsIHN0YXR1cyk7CisgICAgaWYgKG91dEZpbmFsICE9IDApIHsKKyAgICAgICAgbEZvcm1hdCA9IG91dEZpbmFsLT5mb3JtYXQoKTsKKyAgICAgICAgbENoYW5uZWxzID0gb3V0RmluYWwtPmNoYW5uZWxzKCk7CisgICAgICAgIGxSYXRlID0gb3V0RmluYWwtPnNhbXBsZVJhdGUoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoZm9ybWF0ICE9IDApIHsKKyAgICAgICAgICAgIGlmICgqZm9ybWF0ICE9IDApIHsKKyAgICAgICAgICAgICAgICBsRm9ybWF0ID0gKmZvcm1hdDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgKmZvcm1hdCA9IGxGb3JtYXQ7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICBpZiAoZm9ybWF0ICE9IDAgJiYgKmZvcm1hdCAhPSAwKSB7Ci0gICAgICAgICAgICBsRm9ybWF0ID0gKmZvcm1hdDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGxGb3JtYXQgPSBBdWRpb1N5c3RlbTo6UENNXzE2X0JJVDsKKyAgICAgICAgaWYgKGNoYW5uZWxzICE9IDApIHsKKyAgICAgICAgICAgIGlmICgqY2hhbm5lbHMgIT0gMCkgeworICAgICAgICAgICAgICAgIGxDaGFubmVscyA9ICpjaGFubmVsczsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgKmNoYW5uZWxzID0gbENoYW5uZWxzOworICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGlmIChjaGFubmVscyAhPSAwICYmICpjaGFubmVscyAhPSAwKSB7Ci0gICAgICAgICAgICBsQ2hhbm5lbHMgPSAqY2hhbm5lbHM7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBsQ2hhbm5lbHMgPSBBdWRpb1N5c3RlbTo6Q0hBTk5FTF9PVVRfU1RFUkVPOwotICAgICAgICB9Ci0gICAgICAgIGlmIChzYW1wbGVSYXRlICE9IDAgJiYgKnNhbXBsZVJhdGUgIT0gMCkgewotICAgICAgICAgICAgbFJhdGUgPSAqc2FtcGxlUmF0ZTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGxSYXRlID0gNDQxMDA7CisgICAgICAgIGlmIChzYW1wbGVSYXRlICE9IDApIHsKKyAgICAgICAgICAgIGlmICgqc2FtcGxlUmF0ZSAhPSAwKSB7CisgICAgICAgICAgICAgICAgbFJhdGUgPSAqc2FtcGxlUmF0ZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgKnNhbXBsZVJhdGUgPSBsUmF0ZTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAoc3RhdHVzKSAqc3RhdHVzID0gTk9fRVJST1I7CiAgICAgfQpAQCAtMTExLDcgKzExNyw2IEBACiAgICAgZHVtcE91dC0+c3RhbmRieSgpOwogICAgIGlmIChkdW1wT3V0LT5maW5hbFN0cmVhbSgpICE9IE5VTEwpIHsKICAgICAgICAgbUZpbmFsSW50ZXJmYWNlLT5jbG9zZU91dHB1dFN0cmVhbShkdW1wT3V0LT5maW5hbFN0cmVhbSgpKTsKLSAgICAgICAgbUZpcnN0SHdPdXRwdXQgPSB0cnVlOwogICAgIH0KIAogICAgIG1PdXRwdXRzLnJlbW92ZShkdW1wT3V0KTsKQEAgLTEyNiwxOCArMTMxLDMzIEBACiAgICAgdWludDMyX3QgbENoYW5uZWxzID0gQXVkaW9TeXN0ZW06OkNIQU5ORUxfSU5fTU9OTzsKICAgICB1aW50MzJfdCBsUmF0ZSA9IDgwMDA7CiAKLQotICAgIGlmIChtSW5wdXRzLnNpemUoKSA9PSAwKSB7Ci0gICAgICAgIGluRmluYWwgPSBtRmluYWxJbnRlcmZhY2UtPm9wZW5JbnB1dFN0cmVhbShkZXZpY2VzLCBmb3JtYXQsIGNoYW5uZWxzLCBzYW1wbGVSYXRlLCBzdGF0dXMsIGFjb3VzdGljcyk7Ci0gICAgICAgIGlmIChpbkZpbmFsID09IDApIHJldHVybiAwOwotCisgICAgaW5GaW5hbCA9IG1GaW5hbEludGVyZmFjZS0+b3BlbklucHV0U3RyZWFtKGRldmljZXMsIGZvcm1hdCwgY2hhbm5lbHMsIHNhbXBsZVJhdGUsIHN0YXR1cywgYWNvdXN0aWNzKTsKKyAgICBpZiAoaW5GaW5hbCAhPSAwKSB7CiAgICAgICAgIGxGb3JtYXQgPSBpbkZpbmFsLT5mb3JtYXQoKTsKICAgICAgICAgbENoYW5uZWxzID0gaW5GaW5hbC0+Y2hhbm5lbHMoKTsKICAgICAgICAgbFJhdGUgPSBpbkZpbmFsLT5zYW1wbGVSYXRlKCk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKGZvcm1hdCAhPSAwICYmICpmb3JtYXQgIT0gMCkgbEZvcm1hdCA9ICpmb3JtYXQ7Ci0gICAgICAgIGlmIChjaGFubmVscyAhPSAwICYmICpjaGFubmVscyAhPSAwKSBsQ2hhbm5lbHMgPSAqY2hhbm5lbHM7Ci0gICAgICAgIGlmIChzYW1wbGVSYXRlICE9IDAgJiYgKnNhbXBsZVJhdGUgIT0gMCkgbFJhdGUgPSAqc2FtcGxlUmF0ZTsKKyAgICAgICAgaWYgKGZvcm1hdCAhPSAwKSB7CisgICAgICAgICAgICBpZiAoKmZvcm1hdCAhPSAwKSB7CisgICAgICAgICAgICAgICAgbEZvcm1hdCA9ICpmb3JtYXQ7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICpmb3JtYXQgPSBsRm9ybWF0OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChjaGFubmVscyAhPSAwKSB7CisgICAgICAgICAgICBpZiAoKmNoYW5uZWxzICE9IDApIHsKKyAgICAgICAgICAgICAgICBsQ2hhbm5lbHMgPSAqY2hhbm5lbHM7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICpjaGFubmVscyA9IGxDaGFubmVsczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoc2FtcGxlUmF0ZSAhPSAwKSB7CisgICAgICAgICAgICBpZiAoKnNhbXBsZVJhdGUgIT0gMCkgeworICAgICAgICAgICAgICAgIGxSYXRlID0gKnNhbXBsZVJhdGU7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICpzYW1wbGVSYXRlID0gbFJhdGU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgaWYgKHN0YXR1cykgKnN0YXR1cyA9IE5PX0VSUk9SOwogICAgIH0KICAgICBMT0dWKCJvcGVuSW5wdXRTdHJlYW0oKSwgaW5GaW5hbCAlcCIsIGluRmluYWwpOwpAQCAtMjIzLDYgKzI0MywxNSBAQAogICAgIHJldHVybiBrZXlWYWx1ZVBhaXJzOwogfQogCitzdGF0dXNfdCBBdWRpb0R1bXBJbnRlcmZhY2U6OnNldE1vZGUoaW50IG1vZGUpCit7CisgICAgcmV0dXJuIG1GaW5hbEludGVyZmFjZS0+c2V0TW9kZShtb2RlKTsKK30KKworc2l6ZV90IEF1ZGlvRHVtcEludGVyZmFjZTo6Z2V0SW5wdXRCdWZmZXJTaXplKHVpbnQzMl90IHNhbXBsZVJhdGUsIGludCBmb3JtYXQsIGludCBjaGFubmVsQ291bnQpCit7CisgICAgcmV0dXJuIG1GaW5hbEludGVyZmFjZS0+Z2V0SW5wdXRCdWZmZXJTaXplKHNhbXBsZVJhdGUsIGZvcm1hdCwgY2hhbm5lbENvdW50KTsKK30KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC0yMzUsNyArMjY0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBzYW1wbGVSYXRlKQogICAgIDogbUludGVyZmFjZShpbnRlcmZhY2UpLCBtSWQoaWQpLAogICAgICAgbVNhbXBsZVJhdGUoc2FtcGxlUmF0ZSksIG1Gb3JtYXQoZm9ybWF0KSwgbUNoYW5uZWxzKGNoYW5uZWxzKSwgbUxhdGVuY3koMCksIG1EZXZpY2UoZGV2aWNlcyksCi0gICAgICBtQnVmZmVyU2l6ZSgxMDI0KSwgbUZpbmFsU3RyZWFtKGZpbmFsU3RyZWFtKSwgbU91dEZpbGUoMCksIG1GaWxlQ291bnQoMCkKKyAgICAgIG1CdWZmZXJTaXplKDEwMjQpLCBtRmluYWxTdHJlYW0oZmluYWxTdHJlYW0pLCBtRmlsZSgwKSwgbUZpbGVDb3VudCgwKQogewogICAgIExPR1YoIkF1ZGlvU3RyZWFtT3V0RHVtcCBDb25zdHJ1Y3RvciAlcCwgbUludGVyZmFjZSAlcCwgbUZpbmFsU3RyZWFtICVwIiwgdGhpcywgbUludGVyZmFjZSwgbUZpbmFsU3RyZWFtKTsKIH0KQEAgLTI1NCwyNiArMjgzLDI2IEBACiAgICAgaWYgKG1GaW5hbFN0cmVhbSkgewogICAgICAgICByZXQgPSBtRmluYWxTdHJlYW0tPndyaXRlKGJ1ZmZlciwgYnl0ZXMpOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIHVzbGVlcCgoYnl0ZXMgKiAxMDAwMDAwKSAvIGZyYW1lU2l6ZSgpIC8gc2FtcGxlUmF0ZSgpKTsKKyAgICAgICAgdXNsZWVwKCgoKGJ5dGVzICogMTAwMCkgLyBmcmFtZVNpemUoKSkgLyBzYW1wbGVSYXRlKCkpICogMTAwMCk7CiAgICAgICAgIHJldCA9IGJ5dGVzOwogICAgIH0KLSAgICBpZighbU91dEZpbGUpIHsKKyAgICBpZighbUZpbGUpIHsKICAgICAgICAgaWYgKG1JbnRlcmZhY2UtPmZpbGVOYW1lKCkgIT0gIiIpIHsKICAgICAgICAgICAgIGNoYXIgbmFtZVsyNTVdOwotICAgICAgICAgICAgc3ByaW50ZihuYW1lLCAiJXNfJWRfJWQucGNtIiwgbUludGVyZmFjZS0+ZmlsZU5hbWUoKS5zdHJpbmcoKSwgbUlkLCArK21GaWxlQ291bnQpOwotICAgICAgICAgICAgbU91dEZpbGUgPSBmb3BlbihuYW1lLCAid2IiKTsKLSAgICAgICAgICAgIExPR1YoIk9wZW5pbmcgZHVtcCBmaWxlICVzLCBmaCAlcCIsIG5hbWUsIG1PdXRGaWxlKTsKKyAgICAgICAgICAgIHNwcmludGYobmFtZSwgIiVzX291dF8lZF8lZC5wY20iLCBtSW50ZXJmYWNlLT5maWxlTmFtZSgpLnN0cmluZygpLCBtSWQsICsrbUZpbGVDb3VudCk7CisgICAgICAgICAgICBtRmlsZSA9IGZvcGVuKG5hbWUsICJ3YiIpOworICAgICAgICAgICAgTE9HVigiT3BlbmluZyBkdW1wIGZpbGUgJXMsIGZoICVwIiwgbmFtZSwgbUZpbGUpOwogICAgICAgICB9CiAgICAgfQotICAgIGlmIChtT3V0RmlsZSkgewotICAgICAgICBmd3JpdGUoYnVmZmVyLCBieXRlcywgMSwgbU91dEZpbGUpOworICAgIGlmIChtRmlsZSkgeworICAgICAgICBmd3JpdGUoYnVmZmVyLCBieXRlcywgMSwgbUZpbGUpOwogICAgIH0KICAgICByZXR1cm4gcmV0OwogfQogCiBzdGF0dXNfdCBBdWRpb1N0cmVhbU91dER1bXA6OnN0YW5kYnkoKQogewotICAgIExPR1YoIkF1ZGlvU3RyZWFtT3V0RHVtcCBzdGFuZGJ5KCksIG1PdXRGaWxlICVwLCBtRmluYWxTdHJlYW0gJXAiLCBtT3V0RmlsZSwgbUZpbmFsU3RyZWFtKTsKKyAgICBMT0dWKCJBdWRpb1N0cmVhbU91dER1bXAgc3RhbmRieSgpLCBtRmlsZSAlcCwgbUZpbmFsU3RyZWFtICVwIiwgbUZpbGUsIG1GaW5hbFN0cmVhbSk7CiAKICAgICBDbG9zZSgpOwogICAgIGlmIChtRmluYWxTdHJlYW0gIT0gMCApIHJldHVybiBtRmluYWxTdHJlYW0tPnN0YW5kYnkoKTsKQEAgLTMzMCw3ICszNTksNyBAQAogICAgIH0KIAogICAgIGlmIChwYXJhbS5nZXRJbnQoU3RyaW5nOCgiZm9ybWF0IiksIHZhbHVlSW50KSA9PSBOT19FUlJPUikgewotICAgICAgICBpZiAobU91dEZpbGUgPT0gMCkgeworICAgICAgICBpZiAobUZpbGUgPT0gMCkgewogICAgICAgICAgICAgbUZvcm1hdCA9IHZhbHVlSW50OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgc3RhdHVzID0gSU5WQUxJRF9PUEVSQVRJT047CkBAIC0zNDUsNyArMzc0LDcgQEAKICAgICB9CiAgICAgaWYgKHBhcmFtLmdldEludChTdHJpbmc4KCJzYW1wbGluZ19yYXRlIiksIHZhbHVlSW50KSA9PSBOT19FUlJPUikgewogICAgICAgICBpZiAodmFsdWVJbnQgPiAwICYmIHZhbHVlSW50IDw9IDQ4MDAwKSB7Ci0gICAgICAgICAgICBpZiAobU91dEZpbGUgPT0gMCkgeworICAgICAgICAgICAgaWYgKG1GaWxlID09IDApIHsKICAgICAgICAgICAgICAgICBtU2FtcGxlUmF0ZSA9IHZhbHVlSW50OwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBzdGF0dXMgPSBJTlZBTElEX09QRVJBVElPTjsKQEAgLTM3Myw5ICs0MDIsOSBAQAogCiB2b2lkIEF1ZGlvU3RyZWFtT3V0RHVtcDo6Q2xvc2UoKQogewotICAgIGlmKG1PdXRGaWxlKSB7Ci0gICAgICAgIGZjbG9zZShtT3V0RmlsZSk7Ci0gICAgICAgIG1PdXRGaWxlID0gMDsKKyAgICBpZihtRmlsZSkgeworICAgICAgICBmY2xvc2UobUZpbGUpOworICAgICAgICBtRmlsZSA9IDA7CiAgICAgfQogfQogCkBAIC0zOTYsNyArNDI1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBzYW1wbGVSYXRlKQogICAgIDogbUludGVyZmFjZShpbnRlcmZhY2UpLCBtSWQoaWQpLAogICAgICAgbVNhbXBsZVJhdGUoc2FtcGxlUmF0ZSksIG1Gb3JtYXQoZm9ybWF0KSwgbUNoYW5uZWxzKGNoYW5uZWxzKSwgbURldmljZShkZXZpY2VzKSwKLSAgICAgIG1CdWZmZXJTaXplKDEwMjQpLCBtRmluYWxTdHJlYW0oZmluYWxTdHJlYW0pLCBtSW5GaWxlKDApCisgICAgICBtQnVmZmVyU2l6ZSgxMDI0KSwgbUZpbmFsU3RyZWFtKGZpbmFsU3RyZWFtKSwgbUZpbGUoMCksIG1GaWxlQ291bnQoMCkKIHsKICAgICBMT0dWKCJBdWRpb1N0cmVhbUluRHVtcCBDb25zdHJ1Y3RvciAlcCwgbUludGVyZmFjZSAlcCwgbUZpbmFsU3RyZWFtICVwIiwgdGhpcywgbUludGVyZmFjZSwgbUZpbmFsU3RyZWFtKTsKIH0KQEAgLTQwOSw1NSArNDM4LDY4IEBACiAKIHNzaXplX3QgQXVkaW9TdHJlYW1JbkR1bXA6OnJlYWQodm9pZCogYnVmZmVyLCBzc2l6ZV90IGJ5dGVzKQogeworICAgIHNzaXplX3QgcmV0OworCiAgICAgaWYgKG1GaW5hbFN0cmVhbSkgewotICAgICAgICByZXR1cm4gbUZpbmFsU3RyZWFtLT5yZWFkKGJ1ZmZlciwgYnl0ZXMpOwotICAgIH0KLQotICAgIHVzbGVlcCgoYnl0ZXMgKiAxMDAwMDAwKSAvIGZyYW1lU2l6ZSgpIC8gc2FtcGxlUmF0ZSgpKTsKLQotICAgIGlmKCFtSW5GaWxlKSB7Ci0gICAgICAgIGNoYXIgbmFtZVsyNTVdOwotICAgICAgICBzdHJjcHkobmFtZSwgIi9zZGNhcmQvbXVzaWMvc2luZTQ0MCIpOwotICAgICAgICBpZiAoY2hhbm5lbHMoKSA9PSBBdWRpb1N5c3RlbTo6Q0hBTk5FTF9JTl9NT05PKSB7Ci0gICAgICAgICAgICBzdHJjYXQobmFtZSwgIl9tbyIpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc3RyY2F0KG5hbWUsICJfc3QiKTsKKyAgICAgICAgcmV0ID0gbUZpbmFsU3RyZWFtLT5yZWFkKGJ1ZmZlciwgYnl0ZXMpOworICAgICAgICBpZighbUZpbGUpIHsKKyAgICAgICAgICAgIGlmIChtSW50ZXJmYWNlLT5maWxlTmFtZSgpICE9ICIiKSB7CisgICAgICAgICAgICAgICAgY2hhciBuYW1lWzI1NV07CisgICAgICAgICAgICAgICAgc3ByaW50ZihuYW1lLCAiJXNfaW5fJWRfJWQucGNtIiwgbUludGVyZmFjZS0+ZmlsZU5hbWUoKS5zdHJpbmcoKSwgbUlkLCArK21GaWxlQ291bnQpOworICAgICAgICAgICAgICAgIG1GaWxlID0gZm9wZW4obmFtZSwgIndiIik7CisgICAgICAgICAgICAgICAgTE9HVigiT3BlbmluZyBpbnB1dCBkdW1wIGZpbGUgJXMsIGZoICVwIiwgbmFtZSwgbUZpbGUpOworICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGlmIChmb3JtYXQoKSA9PSBBdWRpb1N5c3RlbTo6UENNXzE2X0JJVCkgewotICAgICAgICAgICAgc3RyY2F0KG5hbWUsICJfMTZiIik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzdHJjYXQobmFtZSwgIl84YiIpOworICAgICAgICBpZiAobUZpbGUpIHsKKyAgICAgICAgICAgIGZ3cml0ZShidWZmZXIsIGJ5dGVzLCAxLCBtRmlsZSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKHNhbXBsZVJhdGUoKSA8IDE2MDAwKSB7Ci0gICAgICAgICAgICBzdHJjYXQobmFtZSwgIl84ayIpOwotICAgICAgICB9IGVsc2UgaWYgKHNhbXBsZVJhdGUoKSA8IDMyMDAwKSB7Ci0gICAgICAgICAgICBzdHJjYXQobmFtZSwgIl8yMmsiKTsKLSAgICAgICAgfSBlbHNlIGlmIChzYW1wbGVSYXRlKCkgPCA0ODAwMCkgewotICAgICAgICAgICAgc3RyY2F0KG5hbWUsICJfNDRrIik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzdHJjYXQobmFtZSwgIl80OGsiKTsKKyAgICB9IGVsc2UgeworICAgICAgICB1c2xlZXAoKCgoYnl0ZXMgKiAxMDAwKSAvIGZyYW1lU2l6ZSgpKSAvIHNhbXBsZVJhdGUoKSkgKiAxMDAwKTsKKyAgICAgICAgcmV0ID0gYnl0ZXM7CisgICAgICAgIGlmKCFtRmlsZSkgeworICAgICAgICAgICAgY2hhciBuYW1lWzI1NV07CisgICAgICAgICAgICBzdHJjcHkobmFtZSwgIi9zZGNhcmQvbXVzaWMvc2luZTQ0MCIpOworICAgICAgICAgICAgaWYgKGNoYW5uZWxzKCkgPT0gQXVkaW9TeXN0ZW06OkNIQU5ORUxfSU5fTU9OTykgeworICAgICAgICAgICAgICAgIHN0cmNhdChuYW1lLCAiX21vIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHN0cmNhdChuYW1lLCAiX3N0Iik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZm9ybWF0KCkgPT0gQXVkaW9TeXN0ZW06OlBDTV8xNl9CSVQpIHsKKyAgICAgICAgICAgICAgICBzdHJjYXQobmFtZSwgIl8xNmIiKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc3RyY2F0KG5hbWUsICJfOGIiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzYW1wbGVSYXRlKCkgPCAxNjAwMCkgeworICAgICAgICAgICAgICAgIHN0cmNhdChuYW1lLCAiXzhrIik7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHNhbXBsZVJhdGUoKSA8IDMyMDAwKSB7CisgICAgICAgICAgICAgICAgc3RyY2F0KG5hbWUsICJfMjJrIik7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHNhbXBsZVJhdGUoKSA8IDQ4MDAwKSB7CisgICAgICAgICAgICAgICAgc3RyY2F0KG5hbWUsICJfNDRrIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHN0cmNhdChuYW1lLCAiXzQ4ayIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RyY2F0KG5hbWUsICIud2F2Iik7CisgICAgICAgICAgICBtRmlsZSA9IGZvcGVuKG5hbWUsICJyYiIpOworICAgICAgICAgICAgTE9HVigiT3BlbmluZyBpbnB1dCByZWFkIGZpbGUgJXMsIGZoICVwIiwgbmFtZSwgbUZpbGUpOworICAgICAgICAgICAgaWYgKG1GaWxlKSB7CisgICAgICAgICAgICAgICAgZnNlZWsobUZpbGUsIEFVRElPX0RVTVBfV0FWRV9IRFJfU0laRSwgU0VFS19TRVQpOworICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIHN0cmNhdChuYW1lLCAiLndhdiIpOwotICAgICAgICBtSW5GaWxlID0gZm9wZW4obmFtZSwgInJiIik7Ci0gICAgICAgIExPR1YoIk9wZW5pbmcgZHVtcCBmaWxlICVzLCBmaCAlcCIsIG5hbWUsIG1JbkZpbGUpOwotICAgICAgICBpZiAobUluRmlsZSkgewotICAgICAgICAgICAgZnNlZWsobUluRmlsZSwgQVVESU9fRFVNUF9XQVZFX0hEUl9TSVpFLCBTRUVLX1NFVCk7Ci0gICAgICAgIH0KLQotICAgIH0KLSAgICBpZiAobUluRmlsZSkgewotICAgICAgICBzc2l6ZV90IGJ5dGVzUmVhZCA9IGZyZWFkKGJ1ZmZlciwgYnl0ZXMsIDEsIG1JbkZpbGUpOwotICAgICAgICBpZiAoYnl0ZXNSZWFkICE9IGJ5dGVzKSB7Ci0gICAgICAgICAgICBmc2VlayhtSW5GaWxlLCBBVURJT19EVU1QX1dBVkVfSERSX1NJWkUsIFNFRUtfU0VUKTsKLSAgICAgICAgICAgIGZyZWFkKCh1aW50OF90ICopYnVmZmVyK2J5dGVzUmVhZCwgYnl0ZXMtYnl0ZXNSZWFkLCAxLCBtSW5GaWxlKTsKKyAgICAgICAgaWYgKG1GaWxlKSB7CisgICAgICAgICAgICBzc2l6ZV90IGJ5dGVzUmVhZCA9IGZyZWFkKGJ1ZmZlciwgYnl0ZXMsIDEsIG1GaWxlKTsKKyAgICAgICAgICAgIGlmIChieXRlc1JlYWQgPj0wICYmIGJ5dGVzUmVhZCA8IGJ5dGVzKSB7CisgICAgICAgICAgICAgICAgZnNlZWsobUZpbGUsIEFVRElPX0RVTVBfV0FWRV9IRFJfU0laRSwgU0VFS19TRVQpOworICAgICAgICAgICAgICAgIGZyZWFkKCh1aW50OF90ICopYnVmZmVyK2J5dGVzUmVhZCwgYnl0ZXMtYnl0ZXNSZWFkLCAxLCBtRmlsZSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIGJ5dGVzOworCisgICAgcmV0dXJuIHJldDsKIH0KIAogc3RhdHVzX3QgQXVkaW9TdHJlYW1JbkR1bXA6OnN0YW5kYnkoKQogewotICAgIExPR1YoIkF1ZGlvU3RyZWFtSW5EdW1wIHN0YW5kYnkoKSwgbUluRmlsZSAlcCwgbUZpbmFsU3RyZWFtICVwIiwgbUluRmlsZSwgbUZpbmFsU3RyZWFtKTsKKyAgICBMT0dWKCJBdWRpb1N0cmVhbUluRHVtcCBzdGFuZGJ5KCksIG1GaWxlICVwLCBtRmluYWxTdHJlYW0gJXAiLCBtRmlsZSwgbUZpbmFsU3RyZWFtKTsKIAogICAgIENsb3NlKCk7CiAgICAgaWYgKG1GaW5hbFN0cmVhbSAhPSAwICkgcmV0dXJuIG1GaW5hbFN0cmVhbS0+c3RhbmRieSgpOwpAQCAtNTIzLDkgKzU2NSw5IEBACiAKIHZvaWQgQXVkaW9TdHJlYW1JbkR1bXA6OkNsb3NlKCkKIHsKLSAgICBpZihtSW5GaWxlKSB7Ci0gICAgICAgIGZjbG9zZShtSW5GaWxlKTsKLSAgICAgICAgbUluRmlsZSA9IDA7CisgICAgaWYobUZpbGUpIHsKKyAgICAgICAgZmNsb3NlKG1GaWxlKTsKKyAgICAgICAgbUZpbGUgPSAwOwogICAgIH0KIH0KIH07IC8vIG5hbWVzcGFjZSBhbmRyb2lkCmRpZmYgLS1naXQgYS9saWJzL2F1ZGlvZmxpbmdlci9BdWRpb0R1bXBJbnRlcmZhY2UuaCBiL2xpYnMvYXVkaW9mbGluZ2VyL0F1ZGlvRHVtcEludGVyZmFjZS5oCmluZGV4IDRjNjJiM2UuLjgxNGNlNWYgMTAwNjQ0Ci0tLSBhL2xpYnMvYXVkaW9mbGluZ2VyL0F1ZGlvRHVtcEludGVyZmFjZS5oCisrKyBiL2xpYnMvYXVkaW9mbGluZ2VyL0F1ZGlvRHVtcEludGVyZmFjZS5oCkBAIC02OSw3ICs2OSw3IEBACiAgICAgdWludDMyX3QgbURldmljZTsgICAgICAgICAgICAgICAgICAgLy8gY3VycmVudCBkZXZpY2UgdGhpcyBvdXRwdXQgaXMgcm91dGVkIHRvCiAgICAgc2l6ZV90ICBtQnVmZmVyU2l6ZTsKICAgICBBdWRpb1N0cmVhbU91dCAgICAgICptRmluYWxTdHJlYW07Ci0gICAgRklMRSAgICAgICAgICAgICAgICAqbU91dEZpbGU7ICAgICAgLy8gb3V0cHV0IGZpbGUKKyAgICBGSUxFICAgICAgICAgICAgICAgICptRmlsZTsgICAgICAvLyBvdXRwdXQgZmlsZQogICAgIGludCAgICAgICAgICAgICAgICAgbUZpbGVDb3VudDsKIH07CiAKQEAgLTEwOSw3ICsxMDksOCBAQAogICAgIHVpbnQzMl90IG1EZXZpY2U7ICAgICAgICAgICAgICAgICAgIC8vIGN1cnJlbnQgZGV2aWNlIHRoaXMgb3V0cHV0IGlzIHJvdXRlZCB0bwogICAgIHNpemVfdCAgbUJ1ZmZlclNpemU7CiAgICAgQXVkaW9TdHJlYW1JbiAgICAgICptRmluYWxTdHJlYW07Ci0gICAgRklMRSAgICAgICAgICAgICAgICAqbUluRmlsZTsgICAgICAvLyBvdXRwdXQgZmlsZQorICAgIEZJTEUgICAgICAgICAgICAgICAgKm1GaWxlOyAgICAgIC8vIG91dHB1dCBmaWxlCisgICAgaW50ICAgICAgICAgICAgICAgICBtRmlsZUNvdW50OwogfTsKIAogY2xhc3MgQXVkaW9EdW1wSW50ZXJmYWNlIDogcHVibGljIEF1ZGlvSGFyZHdhcmVCYXNlCkBAIC0xMzQsNiArMTM1LDggQEAKICAgICB2aXJ0dWFsIHN0YXR1c190ICAgIHNldE1hc3RlclZvbHVtZShmbG9hdCB2b2x1bWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3JldHVybiBtRmluYWxJbnRlcmZhY2UtPnNldE1hc3RlclZvbHVtZSh2b2x1bWUpO30KIAorICAgIHZpcnR1YWwgc3RhdHVzX3QgICAgc2V0TW9kZShpbnQgbW9kZSk7CisKICAgICAvLyBtaWMgbXV0ZQogICAgIHZpcnR1YWwgc3RhdHVzX3QgICAgc2V0TWljTXV0ZShib29sIHN0YXRlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtyZXR1cm4gbUZpbmFsSW50ZXJmYWNlLT5zZXRNaWNNdXRlKHN0YXRlKTt9CkBAIC0xNDMsNiArMTQ2LDggQEAKICAgICB2aXJ0dWFsIHN0YXR1c190ICAgIHNldFBhcmFtZXRlcnMoY29uc3QgU3RyaW5nOCYga2V5VmFsdWVQYWlycyk7CiAgICAgdmlydHVhbCBTdHJpbmc4ICAgICBnZXRQYXJhbWV0ZXJzKGNvbnN0IFN0cmluZzgmIGtleXMpOwogCisgICAgdmlydHVhbCBzaXplX3QgICAgICBnZXRJbnB1dEJ1ZmZlclNpemUodWludDMyX3Qgc2FtcGxlUmF0ZSwgaW50IGZvcm1hdCwgaW50IGNoYW5uZWxDb3VudCk7CisKICAgICB2aXJ0dWFsIEF1ZGlvU3RyZWFtSW4qIG9wZW5JbnB1dFN0cmVhbSh1aW50MzJfdCBkZXZpY2VzLCBpbnQgKmZvcm1hdCwgdWludDMyX3QgKmNoYW5uZWxzLAogICAgICAgICAgICAgdWludDMyX3QgKnNhbXBsZVJhdGUsIHN0YXR1c190ICpzdGF0dXMsIEF1ZGlvU3lzdGVtOjphdWRpb19pbl9hY291c3RpY3MgYWNvdXN0aWNzKTsKICAgICB2aXJ0dWFsICAgIHZvaWQgICAgICAgIGNsb3NlSW5wdXRTdHJlYW0oQXVkaW9TdHJlYW1JbiogaW4pOwpAQCAtMTUzLDggKzE1OCw3IEBACiBwcm90ZWN0ZWQ6CiAKICAgICBBdWRpb0hhcmR3YXJlSW50ZXJmYWNlICAgICAgICAgICptRmluYWxJbnRlcmZhY2U7Ci0gICAgU29ydGVkVmVjdG9yPEF1ZGlvU3RyZWFtT3V0RHVtcCAqPiAgICBtT3V0cHV0czsKLSAgICBib29sICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1GaXJzdEh3T3V0cHV0OworICAgIFNvcnRlZFZlY3RvcjxBdWRpb1N0cmVhbU91dER1bXAgKj4gICBtT3V0cHV0czsKICAgICBTb3J0ZWRWZWN0b3I8QXVkaW9TdHJlYW1JbkR1bXAgKj4gICAgbUlucHV0czsKICAgICBNdXRleCAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Mb2NrOwogICAgIFN0cmluZzggICAgICAgICAgICAgICAgICAgICAgICAgbVBvbGljeUNvbW1hbmRzOwpkaWZmIC0tZ2l0IGEvbGlicy9hdWRpb2ZsaW5nZXIvQXVkaW9GbGluZ2VyLmNwcCBiL2xpYnMvYXVkaW9mbGluZ2VyL0F1ZGlvRmxpbmdlci5jcHAKaW5kZXggMjQxNGU4ZC4uZTZmNDZjZSAxMDA2NDQKLS0tIGEvbGlicy9hdWRpb2ZsaW5nZXIvQXVkaW9GbGluZ2VyLmNwcAorKysgYi9saWJzL2F1ZGlvZmxpbmdlci9BdWRpb0ZsaW5nZXIuY3BwCkBAIC0xNyw3ICsxNyw4IEBACiAKIAogI2RlZmluZSBMT0dfVEFHICJBdWRpb0ZsaW5nZXIiCi0vLyNkZWZpbmUgTE9HX05ERUJVRyAwCisvLworI2RlZmluZSBMT0dfTkRFQlVHIDAKIAogI2luY2x1ZGUgPG1hdGguaD4KICNpbmNsdWRlIDxzaWduYWwuaD4KQEAgLTM3LDcgKzM4LDcgQEAKICNpbmNsdWRlIDxtZWRpYS9BdWRpb1JlY29yZC5oPgogCiAjaW5jbHVkZSA8cHJpdmF0ZS9tZWRpYS9BdWRpb1RyYWNrU2hhcmVkLmg+Ci0KKyNpbmNsdWRlIDxwcml2YXRlL21lZGlhL0F1ZGlvRWZmZWN0U2hhcmVkLmg+CiAjaW5jbHVkZSA8aGFyZHdhcmVfbGVnYWN5L0F1ZGlvSGFyZHdhcmVJbnRlcmZhY2UuaD4KIAogI2luY2x1ZGUgIkF1ZGlvTWl4ZXIuaCIKQEAgLTUxLDYgKzUyLDkgQEAKICNpbmNsdWRlICJsaWZldmliZXMuaCIKICNlbmRpZgogCisjaW5jbHVkZSA8bWVkaWEvRWZmZWN0c0ZhY3RvcnlBcGkuaD4KKyNpbmNsdWRlIDxtZWRpYS9FZmZlY3RWaXN1YWxpemVyQXBpLmg+CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC8vIHRoZSBzaW0gYnVpbGQgZG9lc24ndCBoYXZlIGdldHRpZAogCkBAIC02Nyw2ICs3MSw3IEBACiAKIC8vc3RhdGljIGNvbnN0IG5zZWNzX3Qga1N0YW5kYnlUaW1lSW5Oc2VjcyA9IHNlY29uZHMoMyk7CiBzdGF0aWMgY29uc3QgZmxvYXQgTUFYX0dBSU4gPSA0MDk2LjBmOworc3RhdGljIGNvbnN0IGZsb2F0IE1BWF9HQUlOX0lOVCA9IDB4MTAwMDsKIAogLy8gcmV0cnkgY291bnRzIGZvciBidWZmZXIgZmlsbCB0aW1lb3V0CiAvLyA1MCAqIH4yMG1zZWNzID0gMSBzZWNvbmQKQEAgLTEyMyw3ICsxMjgsOCBAQAogCiBBdWRpb0ZsaW5nZXI6OkF1ZGlvRmxpbmdlcigpCiAgICAgOiBCbkF1ZGlvRmxpbmdlcigpLAotICAgICAgICBtQXVkaW9IYXJkd2FyZSgwKSwgbU1hc3RlclZvbHVtZSgxLjBmKSwgbU1hc3Rlck11dGUoZmFsc2UpLCBtTmV4dFRocmVhZElkKDApCisgICAgICAgIG1BdWRpb0hhcmR3YXJlKDApLCBtTWFzdGVyVm9sdW1lKDEuMGYpLCBtTWFzdGVyTXV0ZShmYWxzZSksIG1OZXh0VW5pcXVlSWQoMSksCisgICAgICAgIG1Ub3RhbEVmZmVjdHNDcHVMb2FkKDApLCBtVG90YWxFZmZlY3RzTWVtb3J5KDApCiB7CiAgICAgbUhhcmR3YXJlU3RhdHVzID0gQVVESU9fSFdfSURMRTsKIApAQCAtMTMyLDggKzEzOCw4IEBACiAgICAgbUhhcmR3YXJlU3RhdHVzID0gQVVESU9fSFdfSU5JVDsKICAgICBpZiAobUF1ZGlvSGFyZHdhcmUtPmluaXRDaGVjaygpID09IE5PX0VSUk9SKSB7CiAgICAgICAgIC8vIG9wZW4gMTYtYml0IG91dHB1dCBzdHJlYW0gZm9yIHMvdyBtaXhlcgotCi0gICAgICAgIHNldE1vZGUoQXVkaW9TeXN0ZW06Ok1PREVfTk9STUFMKTsKKyAgICAgICAgbU1vZGUgPSBBdWRpb1N5c3RlbTo6TU9ERV9OT1JNQUw7CisgICAgICAgIHNldE1vZGUobU1vZGUpOwogCiAgICAgICAgIHNldE1hc3RlclZvbHVtZSgxLjBmKTsKICAgICAgICAgc2V0TWFzdGVyTXV0ZShmYWxzZSk7CkBAIC0xNDIsNiArMTQ4LDcgQEAKICAgICB9CiAjaWZkZWYgTFZNWAogICAgIExpZmVWaWJlczo6aW5pdCgpOworICAgIG1MaWZlVmliZXNDbGllbnRQaWQgPSAtMTsKICNlbmRpZgogfQogCkBAIC0yODEsNiArMjg4LDcgQEAKICAgICAgICAgdWludDMyX3QgZmxhZ3MsCiAgICAgICAgIGNvbnN0IHNwPElNZW1vcnk+JiBzaGFyZWRCdWZmZXIsCiAgICAgICAgIGludCBvdXRwdXQsCisgICAgICAgIGludCAqc2Vzc2lvbklkLAogICAgICAgICBzdGF0dXNfdCAqc3RhdHVzKQogewogICAgIHNwPFBsYXliYWNrVGhyZWFkOjpUcmFjaz4gdHJhY2s7CkBAIC0yODgsNiArMjk2LDcgQEAKICAgICBzcDxDbGllbnQ+IGNsaWVudDsKICAgICB3cDxDbGllbnQ+IHdjbGllbnQ7CiAgICAgc3RhdHVzX3QgbFN0YXR1czsKKyAgICBpbnQgbFNlc3Npb25JZDsKIAogICAgIGlmIChzdHJlYW1UeXBlID49IEF1ZGlvU3lzdGVtOjpOVU1fU1RSRUFNX1RZUEVTKSB7CiAgICAgICAgIExPR0UoImludmFsaWQgc3RyZWFtIHR5cGUiKTsKQEAgLTMxMiw4ICszMjEsMjMgQEAKICAgICAgICAgICAgIGNsaWVudCA9IG5ldyBDbGllbnQodGhpcywgcGlkKTsKICAgICAgICAgICAgIG1DbGllbnRzLmFkZChwaWQsIGNsaWVudCk7CiAgICAgICAgIH0KKworICAgICAgICAvLyBJZiBubyBhdWRpbyBzZXNzaW9uIGlkIGlzIHByb3ZpZGVkLCBjcmVhdGUgb25lIGhlcmUKKyAgICAgICAgLy8gVE9ETzogZW5mb3JjZSBzYW1lIHN0cmVhbSB0eXBlIGZvciBhbGwgdHJhY2tzIGluIHNhbWUgYXVkaW8gc2Vzc2lvbj8KKyAgICAgICAgLy8gVE9ETzogcHJldmVudCBzYW1lIGF1ZGlvIHNlc3Npb24gb24gZGlmZmVyZW50IG91dHB1dCB0aHJlYWRzCisgICAgICAgIExPR1YoImNyZWF0ZVRyYWNrKCkgc2Vzc2lvbklkOiAlZCIsIChzZXNzaW9uSWQgPT0gTlVMTCkgPyAtMiA6ICpzZXNzaW9uSWQpOworICAgICAgICBpZiAoc2Vzc2lvbklkICE9IE5VTEwgJiYgKnNlc3Npb25JZCAhPSAwKSB7CisgICAgICAgICAgICBsU2Vzc2lvbklkID0gKnNlc3Npb25JZDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxTZXNzaW9uSWQgPSBuZXh0VW5pcXVlSWQoKTsKKyAgICAgICAgICAgIGlmIChzZXNzaW9uSWQgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICpzZXNzaW9uSWQgPSBsU2Vzc2lvbklkOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIExPR1YoImNyZWF0ZVRyYWNrKCkgbFNlc3Npb25JZDogJWQiLCBsU2Vzc2lvbklkKTsKKwogICAgICAgICB0cmFjayA9IHRocmVhZC0+Y3JlYXRlVHJhY2tfbChjbGllbnQsIHN0cmVhbVR5cGUsIHNhbXBsZVJhdGUsIGZvcm1hdCwKLSAgICAgICAgICAgICAgICBjaGFubmVsQ291bnQsIGZyYW1lQ291bnQsIHNoYXJlZEJ1ZmZlciwgJmxTdGF0dXMpOworICAgICAgICAgICAgICAgIGNoYW5uZWxDb3VudCwgZnJhbWVDb3VudCwgc2hhcmVkQnVmZmVyLCBsU2Vzc2lvbklkLCAmbFN0YXR1cyk7CiAgICAgfQogICAgIGlmIChsU3RhdHVzID09IE5PX0VSUk9SKSB7CiAgICAgICAgIHRyYWNrSGFuZGxlID0gbmV3IFRyYWNrSGFuZGxlKHRyYWNrKTsKQEAgLTQxMCw2ICs0MzQsOCBAQAogCiBzdGF0dXNfdCBBdWRpb0ZsaW5nZXI6OnNldE1vZGUoaW50IG1vZGUpCiB7CisgICAgc3RhdHVzX3QgcmV0OworCiAgICAgLy8gY2hlY2sgY2FsbGluZyBwZXJtaXNzaW9ucwogICAgIGlmICghc2V0dGluZ3NBbGxvd2VkKCkpIHsKICAgICAgICAgcmV0dXJuIFBFUk1JU1NJT05fREVOSUVEOwpAQCAtNDE5LDE1ICs0NDUsMjMgQEAKICAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKICAgICB9CiAKLSAgICBBdXRvTXV0ZXggbG9jayhtSGFyZHdhcmVMb2NrKTsKLSAgICBtSGFyZHdhcmVTdGF0dXMgPSBBVURJT19IV19TRVRfTU9ERTsKLSAgICBzdGF0dXNfdCByZXQgPSBtQXVkaW9IYXJkd2FyZS0+c2V0TW9kZShtb2RlKTsKLSNpZmRlZiBMVk1YCi0gICAgaWYgKE5PX0VSUk9SID09IHJldCkgewotICAgICAgICBMaWZlVmliZXM6OnNldE1vZGUobW9kZSk7CisgICAgeyAvLyBzY29wZSBmb3IgdGhlIGxvY2sKKyAgICAgICAgQXV0b011dGV4IGxvY2sobUhhcmR3YXJlTG9jayk7CisgICAgICAgIG1IYXJkd2FyZVN0YXR1cyA9IEFVRElPX0hXX1NFVF9NT0RFOworICAgICAgICByZXQgPSBtQXVkaW9IYXJkd2FyZS0+c2V0TW9kZShtb2RlKTsKKyAgICAgICAgbUhhcmR3YXJlU3RhdHVzID0gQVVESU9fSFdfSURMRTsKICAgICB9CisKKyAgICBpZiAoTk9fRVJST1IgPT0gcmV0KSB7CisgICAgICAgIE11dGV4OjpBdXRvbG9jayBfbChtTG9jayk7CisgICAgICAgIG1Nb2RlID0gbW9kZTsKKyAgICAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IG1QbGF5YmFja1RocmVhZHMuc2l6ZSgpOyBpKyspCisgICAgICAgICAgIG1QbGF5YmFja1RocmVhZHMudmFsdWVBdChpKS0+c2V0TW9kZShtb2RlKTsKKyNpZmRlZiBMVk1YCisgICAgICAgIExpZmVWaWJlczo6c2V0TW9kZShtb2RlKTsKICNlbmRpZgotICAgIG1IYXJkd2FyZVN0YXR1cyA9IEFVRElPX0hXX0lETEU7CisgICAgfQorCiAgICAgcmV0dXJuIHJldDsKIH0KIApAQCAtNTk2LDggKzYzMCwxMCBAQAogICAgIGludCBtdXNpY0VuYWJsZWQgPSAtMTsKICAgICBpZiAoTk9fRVJST1IgPT0gcGFyYW0uZ2V0KGtleSwgdmFsdWUpKSB7CiAgICAgICAgIGlmICh2YWx1ZSA9PSBMaWZldmliZXNFbmFibGUpIHsKKyAgICAgICAgICAgIG1MaWZlVmliZXNDbGllbnRQaWQgPSBJUENUaHJlYWRTdGF0ZTo6c2VsZigpLT5nZXRDYWxsaW5nUGlkKCk7CiAgICAgICAgICAgICBtdXNpY0VuYWJsZWQgPSAxOwogICAgICAgICB9IGVsc2UgaWYgKHZhbHVlID09IExpZmV2aWJlc0Rpc2FibGUpIHsKKyAgICAgICAgICAgIG1MaWZlVmliZXNDbGllbnRQaWQgPSAtMTsKICAgICAgICAgICAgIG11c2ljRW5hYmxlZCA9IDA7CiAgICAgICAgIH0KICAgICB9CkBAIC02MDksNyArNjQ1LDcgQEAKICAgICAgICAgbUhhcmR3YXJlU3RhdHVzID0gQVVESU9fU0VUX1BBUkFNRVRFUjsKICAgICAgICAgcmVzdWx0ID0gbUF1ZGlvSGFyZHdhcmUtPnNldFBhcmFtZXRlcnMoa2V5VmFsdWVQYWlycyk7CiAjaWZkZWYgTFZNWAotICAgICAgICBpZiAoKE5PX0VSUk9SID09IHJlc3VsdCkgJiYgKG11c2ljRW5hYmxlZCAhPSAtMSkpIHsKKyAgICAgICAgaWYgKG11c2ljRW5hYmxlZCAhPSAtMSkgewogICAgICAgICAgICAgTGlmZVZpYmVzOjplbmFibGVNdXNpYygoYm9vbCkgbXVzaWNFbmFibGVkKTsKICAgICAgICAgfQogI2VuZGlmCkBAIC03MTMsNTEgKzc0OSw1NyBAQAogdm9pZCBBdWRpb0ZsaW5nZXI6OnJlZ2lzdGVyQ2xpZW50KGNvbnN0IHNwPElBdWRpb0ZsaW5nZXJDbGllbnQ+JiBjbGllbnQpCiB7CiAKLSAgICBMT0dWKCJyZWdpc3RlckNsaWVudCgpICVwLCB0aWQgJWQsIGNhbGxpbmcgdGlkICVkIiwgY2xpZW50LmdldCgpLCBnZXR0aWQoKSwgSVBDVGhyZWFkU3RhdGU6OnNlbGYoKS0+Z2V0Q2FsbGluZ1BpZCgpKTsKICAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOwogCi0gICAgc3A8SUJpbmRlcj4gYmluZGVyID0gY2xpZW50LT5hc0JpbmRlcigpOwotICAgIGlmIChtTm90aWZpY2F0aW9uQ2xpZW50cy5pbmRleE9mKGJpbmRlcikgPCAwKSB7Ci0gICAgICAgIExPR1YoIkFkZGluZyBub3RpZmljYXRpb24gY2xpZW50ICVwIiwgYmluZGVyLmdldCgpKTsKLSAgICAgICAgYmluZGVyLT5saW5rVG9EZWF0aCh0aGlzKTsKLSAgICAgICAgbU5vdGlmaWNhdGlvbkNsaWVudHMuYWRkKGJpbmRlcik7Ci0gICAgfQorICAgIGludCBwaWQgPSBJUENUaHJlYWRTdGF0ZTo6c2VsZigpLT5nZXRDYWxsaW5nUGlkKCk7CisgICAgaWYgKG1Ob3RpZmljYXRpb25DbGllbnRzLmluZGV4T2ZLZXkocGlkKSA8IDApIHsKKyAgICAgICAgc3A8Tm90aWZpY2F0aW9uQ2xpZW50PiBub3RpZmljYXRpb25DbGllbnQgPSBuZXcgTm90aWZpY2F0aW9uQ2xpZW50KHRoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpZCk7CisgICAgICAgIExPR1YoInJlZ2lzdGVyQ2xpZW50KCkgY2xpZW50ICVwLCBwaWQgJWQiLCBub3RpZmljYXRpb25DbGllbnQuZ2V0KCksIHBpZCk7CiAKLSAgICAvLyB0aGUgY29uZmlnIGNoYW5nZSBpcyBhbHdheXMgc2VudCBmcm9tIHBsYXliYWNrIG9yIHJlY29yZCB0aHJlYWRzIHRvIGF2b2lkIGRlYWRsb2NrCi0gICAgLy8gd2l0aCBBdWRpb1N5c3RlbTo6Z0xvY2sKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1QbGF5YmFja1RocmVhZHMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgbVBsYXliYWNrVGhyZWFkcy52YWx1ZUF0KGkpLT5zZW5kQ29uZmlnRXZlbnQoQXVkaW9TeXN0ZW06Ok9VVFBVVF9PUEVORUQpOwotICAgIH0KKyAgICAgICAgbU5vdGlmaWNhdGlvbkNsaWVudHMuYWRkKHBpZCwgbm90aWZpY2F0aW9uQ2xpZW50KTsKIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbVJlY29yZFRocmVhZHMuc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgbVJlY29yZFRocmVhZHMudmFsdWVBdChpKS0+c2VuZENvbmZpZ0V2ZW50KEF1ZGlvU3lzdGVtOjpJTlBVVF9PUEVORUQpOwotICAgIH0KLX0KKyAgICAgICAgc3A8SUJpbmRlcj4gYmluZGVyID0gY2xpZW50LT5hc0JpbmRlcigpOworICAgICAgICBiaW5kZXItPmxpbmtUb0RlYXRoKG5vdGlmaWNhdGlvbkNsaWVudCk7CiAKLXZvaWQgQXVkaW9GbGluZ2VyOjpiaW5kZXJEaWVkKGNvbnN0IHdwPElCaW5kZXI+JiB3aG8pIHsKKyAgICAgICAgLy8gdGhlIGNvbmZpZyBjaGFuZ2UgaXMgYWx3YXlzIHNlbnQgZnJvbSBwbGF5YmFjayBvciByZWNvcmQgdGhyZWFkcyB0byBhdm9pZCBkZWFkbG9jaworICAgICAgICAvLyB3aXRoIEF1ZGlvU3lzdGVtOjpnTG9jaworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1QbGF5YmFja1RocmVhZHMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIG1QbGF5YmFja1RocmVhZHMudmFsdWVBdChpKS0+c2VuZENvbmZpZ0V2ZW50KEF1ZGlvU3lzdGVtOjpPVVRQVVRfT1BFTkVEKTsKKyAgICAgICAgfQogCi0gICAgTE9HVigiYmluZGVyRGllZCgpICVwLCB0aWQgJWQsIGNhbGxpbmcgdGlkICVkIiwgd2hvLnVuc2FmZV9nZXQoKSwgZ2V0dGlkKCksIElQQ1RocmVhZFN0YXRlOjpzZWxmKCktPmdldENhbGxpbmdQaWQoKSk7Ci0gICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1Mb2NrKTsKLQotICAgIElCaW5kZXIgKmJpbmRlciA9IHdoby51bnNhZmVfZ2V0KCk7Ci0KLSAgICBpZiAoYmluZGVyICE9IE5VTEwpIHsKLSAgICAgICAgaW50IGluZGV4ID0gbU5vdGlmaWNhdGlvbkNsaWVudHMuaW5kZXhPZihiaW5kZXIpOwotICAgICAgICBpZiAoaW5kZXggPj0gMCkgewotICAgICAgICAgICAgTE9HVigiUmVtb3Zpbmcgbm90aWZpY2F0aW9uIGNsaWVudCAlcCIsIGJpbmRlcik7Ci0gICAgICAgICAgICBtTm90aWZpY2F0aW9uQ2xpZW50cy5yZW1vdmVBdChpbmRleCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbVJlY29yZFRocmVhZHMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIG1SZWNvcmRUaHJlYWRzLnZhbHVlQXQoaSktPnNlbmRDb25maWdFdmVudChBdWRpb1N5c3RlbTo6SU5QVVRfT1BFTkVEKTsKICAgICAgICAgfQogICAgIH0KIH0KIAordm9pZCBBdWRpb0ZsaW5nZXI6OnJlbW92ZU5vdGlmaWNhdGlvbkNsaWVudChwaWRfdCBwaWQpCit7CisgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1Mb2NrKTsKKworICAgIGludCBpbmRleCA9IG1Ob3RpZmljYXRpb25DbGllbnRzLmluZGV4T2ZLZXkocGlkKTsKKyAgICBpZiAoaW5kZXggPj0gMCkgeworICAgICAgICBzcCA8Tm90aWZpY2F0aW9uQ2xpZW50PiBjbGllbnQgPSBtTm90aWZpY2F0aW9uQ2xpZW50cy52YWx1ZUZvcihwaWQpOworICAgICAgICBMT0dWKCJyZW1vdmVOb3RpZmljYXRpb25DbGllbnQoKSAlcCwgcGlkICVkIiwgY2xpZW50LmdldCgpLCBwaWQpOworI2lmZGVmIExWTVgKKyAgICAgICAgaWYgKHBpZCA9PSBtTGlmZVZpYmVzQ2xpZW50UGlkKSB7CisgICAgICAgICAgICBMT0dWKCJEaXNhYmxpbmcgbGlmZXZpYmVzIik7CisgICAgICAgICAgICBMaWZlVmliZXM6OmVuYWJsZU11c2ljKGZhbHNlKTsKKyAgICAgICAgICAgIG1MaWZlVmliZXNDbGllbnRQaWQgPSAtMTsKKyAgICAgICAgfQorI2VuZGlmCisgICAgICAgIG1Ob3RpZmljYXRpb25DbGllbnRzLnJlbW92ZUl0ZW0ocGlkKTsKKyAgICB9Cit9CisKIC8vIGF1ZGlvQ29uZmlnQ2hhbmdlZF9sKCkgbXVzdCBiZSBjYWxsZWQgd2l0aCBBdWRpb0ZsaW5nZXI6Om1Mb2NrIGhlbGQKLXZvaWQgQXVkaW9GbGluZ2VyOjphdWRpb0NvbmZpZ0NoYW5nZWRfbChpbnQgZXZlbnQsIGludCBpb0hhbmRsZSwgdm9pZCAqcGFyYW0yKSB7Cit2b2lkIEF1ZGlvRmxpbmdlcjo6YXVkaW9Db25maWdDaGFuZ2VkX2woaW50IGV2ZW50LCBpbnQgaW9IYW5kbGUsIHZvaWQgKnBhcmFtMikKK3sKICAgICBzaXplX3Qgc2l6ZSA9IG1Ob3RpZmljYXRpb25DbGllbnRzLnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkrKykgewotICAgICAgICBzcDxJQmluZGVyPiBiaW5kZXIgPSBtTm90aWZpY2F0aW9uQ2xpZW50cy5pdGVtQXQoaSk7Ci0gICAgICAgIExPR1YoImF1ZGlvQ29uZmlnQ2hhbmdlZF9sKCkgTm90aWZ5aW5nIGNoYW5nZSB0byBjbGllbnQgJXAiLCBiaW5kZXIuZ2V0KCkpOwotICAgICAgICBzcDxJQXVkaW9GbGluZ2VyQ2xpZW50PiBjbGllbnQgPSBpbnRlcmZhY2VfY2FzdDxJQXVkaW9GbGluZ2VyQ2xpZW50PiAoYmluZGVyKTsKLSAgICAgICAgY2xpZW50LT5pb0NvbmZpZ0NoYW5nZWQoZXZlbnQsIGlvSGFuZGxlLCBwYXJhbTIpOworICAgICAgICBtTm90aWZpY2F0aW9uQ2xpZW50cy52YWx1ZUF0KGkpLT5jbGllbnQoKS0+aW9Db25maWdDaGFuZ2VkKGV2ZW50LCBpb0hhbmRsZSwgcGFyYW0yKTsKICAgICB9CiB9CiAKQEAgLTc2OCwxMiArODEwLDEzIEBACiAgICAgbUNsaWVudHMucmVtb3ZlSXRlbShwaWQpOwogfQogCisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogQXVkaW9GbGluZ2VyOjpUaHJlYWRCYXNlOjpUaHJlYWRCYXNlKGNvbnN0IHNwPEF1ZGlvRmxpbmdlcj4mIGF1ZGlvRmxpbmdlciwgaW50IGlkKQogICAgIDogICBUaHJlYWQoZmFsc2UpLAogICAgICAgICBtQXVkaW9GbGluZ2VyKGF1ZGlvRmxpbmdlciksIG1TYW1wbGVSYXRlKDApLCBtRnJhbWVDb3VudCgwKSwgbUNoYW5uZWxDb3VudCgwKSwKLSAgICAgICAgbUZvcm1hdCgwKSwgbUZyYW1lU2l6ZSgxKSwgbVN0YW5kYnkoZmFsc2UpLCBtSWQoaWQpLCBtRXhpdGluZyhmYWxzZSkKKyAgICAgICAgbUZyYW1lU2l6ZSgxKSwgbUZvcm1hdCgwKSwgbVN0YW5kYnkoZmFsc2UpLCBtSWQoaWQpLCBtRXhpdGluZyhmYWxzZSkKIHsKIH0KIApAQCAtODA2LDcgKzg0OSw3IEBACiAKIGludCBBdWRpb0ZsaW5nZXI6OlRocmVhZEJhc2U6OmNoYW5uZWxDb3VudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1DaGFubmVsQ291bnQ7CisgICAgcmV0dXJuIChpbnQpbUNoYW5uZWxDb3VudDsKIH0KIAogaW50IEF1ZGlvRmxpbmdlcjo6VGhyZWFkQmFzZTo6Zm9ybWF0KCkgY29uc3QKQEAgLTg2MywxMSArOTA2LDEyIEBACiAgICAgICAgIExPR1YoInByb2Nlc3NDb25maWdFdmVudHMoKSByZW1haW5pbmcgZXZlbnRzICVkIiwgbUNvbmZpZ0V2ZW50cy5zaXplKCkpOwogICAgICAgICBDb25maWdFdmVudCAqY29uZmlnRXZlbnQgPSBtQ29uZmlnRXZlbnRzWzBdOwogICAgICAgICBtQ29uZmlnRXZlbnRzLnJlbW92ZUF0KDApOwotICAgICAgICAvLyByZWxlYXNlIG1Mb2NrIGJlY2F1c2UgYXVkaW9Db25maWdDaGFuZ2VkKCkgd2lsbCBsb2NrIEF1ZGlvRmxpbmdlciBtTG9jawotICAgICAgICAvLyBiZWZvcmUgY2FsbGluZyBBdWRpb2ZsaW5nZXI6OmF1ZGlvQ29uZmlnQ2hhbmdlZF9sKCkgdGh1cyBjcmVhdGluZwotICAgICAgICAvLyBwb3RlbnRpYWwgY3Jvc3MgZGVhZGxvY2sgYmV0d2VlbiBBdWRpb0ZsaW5nZXI6Om1Mb2NrIGFuZCBtTG9jaworICAgICAgICAvLyByZWxlYXNlIG1Mb2NrIGJlZm9yZSBsb2NraW5nIEF1ZGlvRmxpbmdlciBtTG9jazogbG9jayBvcmRlciBpcyBhbHdheXMKKyAgICAgICAgLy8gQXVkaW9GbGluZ2VyIHRoZW4gVGhyZWFkQmFzZSB0byBhdm9pZCBjcm9zcyBkZWFkbG9jawogICAgICAgICBtTG9jay51bmxvY2soKTsKLSAgICAgICAgYXVkaW9Db25maWdDaGFuZ2VkKGNvbmZpZ0V2ZW50LT5tRXZlbnQsIGNvbmZpZ0V2ZW50LT5tUGFyYW0pOworICAgICAgICBtQXVkaW9GbGluZ2VyLT5tTG9jay5sb2NrKCk7CisgICAgICAgIGF1ZGlvQ29uZmlnQ2hhbmdlZF9sKGNvbmZpZ0V2ZW50LT5tRXZlbnQsIGNvbmZpZ0V2ZW50LT5tUGFyYW0pOworICAgICAgICBtQXVkaW9GbGluZ2VyLT5tTG9jay51bmxvY2soKTsKICAgICAgICAgZGVsZXRlIGNvbmZpZ0V2ZW50OwogICAgICAgICBtTG9jay5sb2NrKCk7CiAgICAgfQpAQCAtOTI5LDEwICs5NzMsMTEgQEAKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1BdWRpb0ZsaW5nZXI6OlBsYXliYWNrVGhyZWFkOjpQbGF5YmFja1RocmVhZChjb25zdCBzcDxBdWRpb0ZsaW5nZXI+JiBhdWRpb0ZsaW5nZXIsIEF1ZGlvU3RyZWFtT3V0KiBvdXRwdXQsIGludCBpZCkKK0F1ZGlvRmxpbmdlcjo6UGxheWJhY2tUaHJlYWQ6OlBsYXliYWNrVGhyZWFkKGNvbnN0IHNwPEF1ZGlvRmxpbmdlcj4mIGF1ZGlvRmxpbmdlciwgQXVkaW9TdHJlYW1PdXQqIG91dHB1dCwgaW50IGlkLCB1aW50MzJfdCBkZXZpY2UpCiAgICAgOiAgIFRocmVhZEJhc2UoYXVkaW9GbGluZ2VyLCBpZCksCiAgICAgICAgIG1NaXhCdWZmZXIoMCksIG1TdXNwZW5kZWQoMCksIG1CeXRlc1dyaXR0ZW4oMCksIG1PdXRwdXQob3V0cHV0KSwKLSAgICAgICAgbUxhc3RXcml0ZVRpbWUoMCksIG1OdW1Xcml0ZXMoMCksIG1OdW1EZWxheWVkV3JpdGVzKDApLCBtSW5Xcml0ZShmYWxzZSkKKyAgICAgICAgbUxhc3RXcml0ZVRpbWUoMCksIG1OdW1Xcml0ZXMoMCksIG1OdW1EZWxheWVkV3JpdGVzKDApLCBtSW5Xcml0ZShmYWxzZSksCisgICAgICAgIG1EZXZpY2UoZGV2aWNlKQogewogICAgIHJlYWRPdXRwdXRQYXJhbWV0ZXJzKCk7CiAKQEAgLTk0Myw4ICs5ODgsNiBAQAogICAgICAgICBtU3RyZWFtVHlwZXNbc3RyZWFtXS52b2x1bWUgPSBtQXVkaW9GbGluZ2VyLT5zdHJlYW1Wb2x1bWVJbnRlcm5hbChzdHJlYW0pOwogICAgICAgICBtU3RyZWFtVHlwZXNbc3RyZWFtXS5tdXRlID0gbUF1ZGlvRmxpbmdlci0+c3RyZWFtTXV0ZShzdHJlYW0pOwogICAgIH0KLSAgICAvLyBub3RpZnkgY2xpZW50IHByb2Nlc3NlcyB0aGF0IGEgbmV3IGlucHV0IGhhcyBiZWVuIG9wZW5lZAotICAgIHNlbmRDb25maWdFdmVudChBdWRpb1N5c3RlbTo6T1VUUFVUX09QRU5FRCk7CiB9CiAKIEF1ZGlvRmxpbmdlcjo6UGxheWJhY2tUaHJlYWQ6On5QbGF5YmFja1RocmVhZCgpCkBAIC05NTYsNiArOTk5LDcgQEAKIHsKICAgICBkdW1wSW50ZXJuYWxzKGZkLCBhcmdzKTsKICAgICBkdW1wVHJhY2tzKGZkLCBhcmdzKTsKKyAgICBkdW1wRWZmZWN0Q2hhaW5zKGZkLCBhcmdzKTsKICAgICByZXR1cm4gTk9fRVJST1I7CiB9CiAKQEAgLTk2Nyw3ICsxMDExLDcgQEAKIAogICAgIHNucHJpbnRmKGJ1ZmZlciwgU0laRSwgIk91dHB1dCB0aHJlYWQgJXAgdHJhY2tzXG4iLCB0aGlzKTsKICAgICByZXN1bHQuYXBwZW5kKGJ1ZmZlcik7Ci0gICAgcmVzdWx0LmFwcGVuZCgiICAgTmFtZSBDbGllbiBUeXAgRm10IENobiBCdWYgIFMgTSBGIFNSYXRlICBMZWZ0ViBSaWdoViBTZXJ2ICAgICBVc2VyXG4iKTsKKyAgICByZXN1bHQuYXBwZW5kKCIgICBOYW1lICBDbGllbiBUeXAgRm10IENobiBTZXNzaW9uIEJ1ZiAgUyBNIEYgU1JhdGUgTGVmdFYgUmlnaFYgIFNlcnYgICAgICAgVXNlciAgICAgICBNYWluIGJ1ZiAgIEF1eCBCdWZcbiIpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbVRyYWNrcy5zaXplKCk7ICsraSkgewogICAgICAgICBzcDxUcmFjaz4gdHJhY2sgPSBtVHJhY2tzW2ldOwogICAgICAgICBpZiAodHJhY2sgIT0gMCkgewpAQCAtOTc4LDcgKzEwMjIsNyBAQAogCiAgICAgc25wcmludGYoYnVmZmVyLCBTSVpFLCAiT3V0cHV0IHRocmVhZCAlcCBhY3RpdmUgdHJhY2tzXG4iLCB0aGlzKTsKICAgICByZXN1bHQuYXBwZW5kKGJ1ZmZlcik7Ci0gICAgcmVzdWx0LmFwcGVuZCgiICAgTmFtZSBDbGllbiBUeXAgRm10IENobiBCdWYgIFMgTSBGIFNSYXRlICBMZWZ0ViBSaWdoViBTZXJ2ICAgICBVc2VyXG4iKTsKKyAgICByZXN1bHQuYXBwZW5kKCIgICBOYW1lICBDbGllbiBUeXAgRm10IENobiBTZXNzaW9uIEJ1ZiAgUyBNIEYgU1JhdGUgTGVmdFYgUmlnaFYgIFNlcnYgICAgICAgVXNlciAgICAgICBNYWluIGJ1ZiAgIEF1eCBCdWZcbiIpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbUFjdGl2ZVRyYWNrcy5zaXplKCk7ICsraSkgewogICAgICAgICB3cDxUcmFjaz4gd1RyYWNrID0gbUFjdGl2ZVRyYWNrc1tpXTsKICAgICAgICAgaWYgKHdUcmFjayAhPSAwKSB7CkBAIC05OTMsNiArMTAzNywyNCBAQAogICAgIHJldHVybiBOT19FUlJPUjsKIH0KIAorc3RhdHVzX3QgQXVkaW9GbGluZ2VyOjpQbGF5YmFja1RocmVhZDo6ZHVtcEVmZmVjdENoYWlucyhpbnQgZmQsIGNvbnN0IFZlY3RvcjxTdHJpbmcxNj4mIGFyZ3MpCit7CisgICAgY29uc3Qgc2l6ZV90IFNJWkUgPSAyNTY7CisgICAgY2hhciBidWZmZXJbU0laRV07CisgICAgU3RyaW5nOCByZXN1bHQ7CisKKyAgICBzbnByaW50ZihidWZmZXIsIFNJWkUsICJcbi0gJWQgRWZmZWN0IENoYWluczpcbiIsIG1FZmZlY3RDaGFpbnMuc2l6ZSgpKTsKKyAgICB3cml0ZShmZCwgYnVmZmVyLCBzdHJsZW4oYnVmZmVyKSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1FZmZlY3RDaGFpbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgc3A8RWZmZWN0Q2hhaW4+IGNoYWluID0gbUVmZmVjdENoYWluc1tpXTsKKyAgICAgICAgaWYgKGNoYWluICE9IDApIHsKKyAgICAgICAgICAgIGNoYWluLT5kdW1wKGZkLCBhcmdzKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gTk9fRVJST1I7Cit9CisKIHN0YXR1c190IEF1ZGlvRmxpbmdlcjo6UGxheWJhY2tUaHJlYWQ6OmR1bXBJbnRlcm5hbHMoaW50IGZkLCBjb25zdCBWZWN0b3I8U3RyaW5nMTY+JiBhcmdzKQogewogICAgIGNvbnN0IHNpemVfdCBTSVpFID0gMjU2OwpAQCAtMTAxMSw2ICsxMDczLDggQEAKICAgICByZXN1bHQuYXBwZW5kKGJ1ZmZlcik7CiAgICAgc25wcmludGYoYnVmZmVyLCBTSVpFLCAic3VzcGVuZCBjb3VudDogJWRcbiIsIG1TdXNwZW5kZWQpOwogICAgIHJlc3VsdC5hcHBlbmQoYnVmZmVyKTsKKyAgICBzbnByaW50ZihidWZmZXIsIFNJWkUsICJtaXggYnVmZmVyIDogJXBcbiIsIG1NaXhCdWZmZXIpOworICAgIHJlc3VsdC5hcHBlbmQoYnVmZmVyKTsKICAgICB3cml0ZShmZCwgcmVzdWx0LnN0cmluZygpLCByZXN1bHQuc2l6ZSgpKTsKIAogICAgIGR1bXBCYXNlKGZkLCBhcmdzKTsKQEAgLTEwNDgsMTMgKzExMTIsMTQgQEAKICAgICAgICAgaW50IGNoYW5uZWxDb3VudCwKICAgICAgICAgaW50IGZyYW1lQ291bnQsCiAgICAgICAgIGNvbnN0IHNwPElNZW1vcnk+JiBzaGFyZWRCdWZmZXIsCisgICAgICAgIGludCBzZXNzaW9uSWQsCiAgICAgICAgIHN0YXR1c190ICpzdGF0dXMpCiB7CiAgICAgc3A8VHJhY2s+IHRyYWNrOwogICAgIHN0YXR1c190IGxTdGF0dXM7CiAKICAgICBpZiAobVR5cGUgPT0gRElSRUNUKSB7Ci0gICAgICAgIGlmIChzYW1wbGVSYXRlICE9IG1TYW1wbGVSYXRlIHx8IGZvcm1hdCAhPSBtRm9ybWF0IHx8IGNoYW5uZWxDb3VudCAhPSBtQ2hhbm5lbENvdW50KSB7CisgICAgICAgIGlmIChzYW1wbGVSYXRlICE9IG1TYW1wbGVSYXRlIHx8IGZvcm1hdCAhPSBtRm9ybWF0IHx8IGNoYW5uZWxDb3VudCAhPSAoaW50KW1DaGFubmVsQ291bnQpIHsKICAgICAgICAgICAgIExPR0UoImNyZWF0ZVRyYWNrX2woKSBCYWQgcGFyYW1ldGVyOiAgc2FtcGxlUmF0ZSAlZCBmb3JtYXQgJWQsIGNoYW5uZWxDb3VudCAlZCBmb3Igb3V0cHV0ICVwIiwKICAgICAgICAgICAgICAgICAgc2FtcGxlUmF0ZSwgZm9ybWF0LCBjaGFubmVsQ291bnQsIG1PdXRwdXQpOwogICAgICAgICAgICAgbFN0YXR1cyA9IEJBRF9WQUxVRTsKQEAgLTEwNzgsMTIgKzExNDMsMTggQEAKICAgICB7IC8vIHNjb3BlIGZvciBtTG9jawogICAgICAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOwogICAgICAgICB0cmFjayA9IG5ldyBUcmFjayh0aGlzLCBjbGllbnQsIHN0cmVhbVR5cGUsIHNhbXBsZVJhdGUsIGZvcm1hdCwKLSAgICAgICAgICAgICAgICBjaGFubmVsQ291bnQsIGZyYW1lQ291bnQsIHNoYXJlZEJ1ZmZlcik7CisgICAgICAgICAgICAgICAgY2hhbm5lbENvdW50LCBmcmFtZUNvdW50LCBzaGFyZWRCdWZmZXIsIHNlc3Npb25JZCk7CiAgICAgICAgIGlmICh0cmFjay0+Z2V0Q2JsaygpID09IE5VTEwgfHwgdHJhY2stPm5hbWUoKSA8IDApIHsKICAgICAgICAgICAgIGxTdGF0dXMgPSBOT19NRU1PUlk7CiAgICAgICAgICAgICBnb3RvIEV4aXQ7CiAgICAgICAgIH0KICAgICAgICAgbVRyYWNrcy5hZGQodHJhY2spOworCisgICAgICAgIHNwPEVmZmVjdENoYWluPiBjaGFpbiA9IGdldEVmZmVjdENoYWluX2woc2Vzc2lvbklkKTsKKyAgICAgICAgaWYgKGNoYWluICE9IDApIHsKKyAgICAgICAgICAgIExPR1YoImNyZWF0ZVRyYWNrX2woKSBzZXR0aW5nIG1haW4gYnVmZmVyICVwIiwgY2hhaW4tPmluQnVmZmVyKCkpOworICAgICAgICAgICAgdHJhY2stPnNldE1haW5CdWZmZXIoY2hhaW4tPmluQnVmZmVyKCkpOworICAgICAgICB9CiAgICAgfQogICAgIGxTdGF0dXMgPSBOT19FUlJPUjsKIApAQCAtMTIwMCw2ICsxMjcxLDE0IEBACiAgICAgICAgIHRyYWNrLT5tRmlsbGluZ1VwU3RhdHVzID0gVHJhY2s6OkZTX0ZJTExJTkc7CiAgICAgICAgIHRyYWNrLT5tUmVzZXREb25lID0gZmFsc2U7CiAgICAgICAgIG1BY3RpdmVUcmFja3MuYWRkKHRyYWNrKTsKKyAgICAgICAgaWYgKHRyYWNrLT5tYWluQnVmZmVyKCkgIT0gbU1peEJ1ZmZlcikgeworICAgICAgICAgICAgc3A8RWZmZWN0Q2hhaW4+IGNoYWluID0gZ2V0RWZmZWN0Q2hhaW5fbCh0cmFjay0+c2Vzc2lvbklkKCkpOworICAgICAgICAgICAgaWYgKGNoYWluICE9IDApIHsKKyAgICAgICAgICAgICAgICBMT0dWKCJhZGRUcmFja19sKCkgc3RhcnRpbmcgdHJhY2sgb24gY2hhaW4gJXAgZm9yIHNlc3Npb24gJWQiLCBjaGFpbi5nZXQoKSwgdHJhY2stPnNlc3Npb25JZCgpKTsKKyAgICAgICAgICAgICAgICBjaGFpbi0+c3RhcnRUcmFjaygpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKICAgICAgICAgc3RhdHVzID0gTk9fRVJST1I7CiAgICAgfQogCkBAIC0xMjI0LDE2ICsxMzAzLDE3IEBACiAgICAgcmV0dXJuIG1PdXRwdXQtPmdldFBhcmFtZXRlcnMoa2V5cyk7CiB9CiAKLXZvaWQgQXVkaW9GbGluZ2VyOjpQbGF5YmFja1RocmVhZDo6YXVkaW9Db25maWdDaGFuZ2VkKGludCBldmVudCwgaW50IHBhcmFtKSB7CisvLyBkZXN0cm95VHJhY2tfbCgpIG11c3QgYmUgY2FsbGVkIHdpdGggQXVkaW9GbGluZ2VyOjptTG9jayBoZWxkCit2b2lkIEF1ZGlvRmxpbmdlcjo6UGxheWJhY2tUaHJlYWQ6OmF1ZGlvQ29uZmlnQ2hhbmdlZF9sKGludCBldmVudCwgaW50IHBhcmFtKSB7CiAgICAgQXVkaW9TeXN0ZW06Ok91dHB1dERlc2NyaXB0b3IgZGVzYzsKICAgICB2b2lkICpwYXJhbTIgPSAwOwogCi0gICAgTE9HVigiUGxheWJhY2tUaHJlYWQ6OmF1ZGlvQ29uZmlnQ2hhbmdlZCwgdGhyZWFkICVwLCBldmVudCAlZCwgcGFyYW0gJWQiLCB0aGlzLCBldmVudCwgcGFyYW0pOworICAgIExPR1YoIlBsYXliYWNrVGhyZWFkOjphdWRpb0NvbmZpZ0NoYW5nZWRfbCwgdGhyZWFkICVwLCBldmVudCAlZCwgcGFyYW0gJWQiLCB0aGlzLCBldmVudCwgcGFyYW0pOwogCiAgICAgc3dpdGNoIChldmVudCkgewogICAgIGNhc2UgQXVkaW9TeXN0ZW06Ok9VVFBVVF9PUEVORUQ6CiAgICAgY2FzZSBBdWRpb1N5c3RlbTo6T1VUUFVUX0NPTkZJR19DSEFOR0VEOgotICAgICAgICBkZXNjLmNoYW5uZWxzID0gbUNoYW5uZWxDb3VudDsKKyAgICAgICAgZGVzYy5jaGFubmVscyA9IG1DaGFubmVsczsKICAgICAgICAgZGVzYy5zYW1wbGluZ1JhdGUgPSBtU2FtcGxlUmF0ZTsKICAgICAgICAgZGVzYy5mb3JtYXQgPSBtRm9ybWF0OwogICAgICAgICBkZXNjLmZyYW1lQ291bnQgPSBtRnJhbWVDb3VudDsKQEAgLTEyNDcsMjQgKzEzMjcsMjUgQEAKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9Ci0gICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1BdWRpb0ZsaW5nZXItPm1Mb2NrKTsKICAgICBtQXVkaW9GbGluZ2VyLT5hdWRpb0NvbmZpZ0NoYW5nZWRfbChldmVudCwgbUlkLCBwYXJhbTIpOwogfQogCiB2b2lkIEF1ZGlvRmxpbmdlcjo6UGxheWJhY2tUaHJlYWQ6OnJlYWRPdXRwdXRQYXJhbWV0ZXJzKCkKIHsKICAgICBtU2FtcGxlUmF0ZSA9IG1PdXRwdXQtPnNhbXBsZVJhdGUoKTsKLSAgICBtQ2hhbm5lbENvdW50ID0gQXVkaW9TeXN0ZW06OnBvcENvdW50KG1PdXRwdXQtPmNoYW5uZWxzKCkpOwotCisgICAgbUNoYW5uZWxzID0gbU91dHB1dC0+Y2hhbm5lbHMoKTsKKyAgICBtQ2hhbm5lbENvdW50ID0gKHVpbnQxNl90KUF1ZGlvU3lzdGVtOjpwb3BDb3VudChtQ2hhbm5lbHMpOwogICAgIG1Gb3JtYXQgPSBtT3V0cHV0LT5mb3JtYXQoKTsKLSAgICBtRnJhbWVTaXplID0gbU91dHB1dC0+ZnJhbWVTaXplKCk7CisgICAgbUZyYW1lU2l6ZSA9ICh1aW50MTZfdCltT3V0cHV0LT5mcmFtZVNpemUoKTsKICAgICBtRnJhbWVDb3VudCA9IG1PdXRwdXQtPmJ1ZmZlclNpemUoKSAvIG1GcmFtZVNpemU7CiAKICAgICAvLyBGSVhNRSAtIEN1cnJlbnQgbWl4ZXIgaW1wbGVtZW50YXRpb24gb25seSBzdXBwb3J0cyBzdGVyZW8gb3V0cHV0OiBBbHdheXMKICAgICAvLyBBbGxvY2F0ZSBhIHN0ZXJlbyBidWZmZXIgZXZlbiBpZiBIVyBvdXRwdXQgaXMgbW9uby4KLSAgICBpZiAobU1peEJ1ZmZlciAhPSBOVUxMKSBkZWxldGUgbU1peEJ1ZmZlcjsKKyAgICBpZiAobU1peEJ1ZmZlciAhPSBOVUxMKSBkZWxldGVbXSBtTWl4QnVmZmVyOwogICAgIG1NaXhCdWZmZXIgPSBuZXcgaW50MTZfdFttRnJhbWVDb3VudCAqIDJdOwogICAgIG1lbXNldChtTWl4QnVmZmVyLCAwLCBtRnJhbWVDb3VudCAqIDIgKiBzaXplb2YoaW50MTZfdCkpOworCisgICAgLy9UT0RPIGhhbmRsZSBlZmZlY3RzIHJlY29uZmlnCiB9CiAKIHN0YXR1c190IEF1ZGlvRmxpbmdlcjo6UGxheWJhY2tUaHJlYWQ6OmdldFJlbmRlclBvc2l0aW9uKHVpbnQzMl90ICpoYWxGcmFtZXMsIHVpbnQzMl90ICpkc3BGcmFtZXMpCkBAIC0xMjgwLDEwICsxMzYxLDU2IEBACiAgICAgcmV0dXJuIG1PdXRwdXQtPmdldFJlbmRlclBvc2l0aW9uKGRzcEZyYW1lcyk7CiB9CiAKK2Jvb2wgQXVkaW9GbGluZ2VyOjpQbGF5YmFja1RocmVhZDo6aGFzQXVkaW9TZXNzaW9uKGludCBzZXNzaW9uSWQpCit7CisgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1Mb2NrKTsKKyAgICBpZiAoZ2V0RWZmZWN0Q2hhaW5fbChzZXNzaW9uSWQpICE9IDApIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtVHJhY2tzLnNpemUoKTsgKytpKSB7CisgICAgICAgIHNwPFRyYWNrPiB0cmFjayA9IG1UcmFja3NbaV07CisgICAgICAgIGlmIChzZXNzaW9uSWQgPT0gdHJhY2stPnNlc3Npb25JZCgpKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKworc3A8QXVkaW9GbGluZ2VyOjpFZmZlY3RDaGFpbj4gQXVkaW9GbGluZ2VyOjpQbGF5YmFja1RocmVhZDo6Z2V0RWZmZWN0Q2hhaW4oaW50IHNlc3Npb25JZCkKK3sKKyAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOworICAgIHJldHVybiBnZXRFZmZlY3RDaGFpbl9sKHNlc3Npb25JZCk7Cit9CisKK3NwPEF1ZGlvRmxpbmdlcjo6RWZmZWN0Q2hhaW4+IEF1ZGlvRmxpbmdlcjo6UGxheWJhY2tUaHJlYWQ6OmdldEVmZmVjdENoYWluX2woaW50IHNlc3Npb25JZCkKK3sKKyAgICBzcDxFZmZlY3RDaGFpbj4gY2hhaW47CisKKyAgICBzaXplX3Qgc2l6ZSA9IG1FZmZlY3RDaGFpbnMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgIGlmIChtRWZmZWN0Q2hhaW5zW2ldLT5zZXNzaW9uSWQoKSA9PSBzZXNzaW9uSWQpIHsKKyAgICAgICAgICAgIGNoYWluID0gbUVmZmVjdENoYWluc1tpXTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBjaGFpbjsKK30KKwordm9pZCBBdWRpb0ZsaW5nZXI6OlBsYXliYWNrVGhyZWFkOjpzZXRNb2RlKHVpbnQzMl90IG1vZGUpCit7CisgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1Mb2NrKTsKKyAgICBzaXplX3Qgc2l6ZSA9IG1FZmZlY3RDaGFpbnMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgIG1FZmZlY3RDaGFpbnNbaV0tPnNldE1vZGUobW9kZSk7CisgICAgfQorfQorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLUF1ZGlvRmxpbmdlcjo6TWl4ZXJUaHJlYWQ6Ok1peGVyVGhyZWFkKGNvbnN0IHNwPEF1ZGlvRmxpbmdlcj4mIGF1ZGlvRmxpbmdlciwgQXVkaW9TdHJlYW1PdXQqIG91dHB1dCwgaW50IGlkKQotICAgIDogICBQbGF5YmFja1RocmVhZChhdWRpb0ZsaW5nZXIsIG91dHB1dCwgaWQpLAorQXVkaW9GbGluZ2VyOjpNaXhlclRocmVhZDo6TWl4ZXJUaHJlYWQoY29uc3Qgc3A8QXVkaW9GbGluZ2VyPiYgYXVkaW9GbGluZ2VyLCBBdWRpb1N0cmVhbU91dCogb3V0cHV0LCBpbnQgaWQsIHVpbnQzMl90IGRldmljZSkKKyAgICA6ICAgUGxheWJhY2tUaHJlYWQoYXVkaW9GbGluZ2VyLCBvdXRwdXQsIGlkLCBkZXZpY2UpLAogICAgICAgICBtQXVkaW9NaXhlcigwKQogewogICAgIG1UeXBlID0gUGxheWJhY2tUaHJlYWQ6Ok1JWEVSOwpAQCAtMTMwMiw3ICsxNDI5LDYgQEAKIAogYm9vbCBBdWRpb0ZsaW5nZXI6Ok1peGVyVGhyZWFkOjp0aHJlYWRMb29wKCkKIHsKLSAgICBpbnQxNl90KiBjdXJCdWYgPSBtTWl4QnVmZmVyOwogICAgIFZlY3Rvcjwgc3A8VHJhY2s+ID4gdHJhY2tzVG9SZW1vdmU7CiAgICAgdWludDMyX3QgbWl4ZXJTdGF0dXMgPSBNSVhFUl9JRExFOwogICAgIG5zZWNzX3Qgc3RhbmRieVRpbWUgPSBzeXN0ZW1UaW1lKCk7CkBAIC0xMzE1LDYgKzE0NDEsNyBAQAogICAgIHVpbnQzMl90IGFjdGl2ZVNsZWVwVGltZSA9IGFjdGl2ZVNsZWVwVGltZVVzKCk7CiAgICAgdWludDMyX3QgaWRsZVNsZWVwVGltZSA9IGlkbGVTbGVlcFRpbWVVcygpOwogICAgIHVpbnQzMl90IHNsZWVwVGltZSA9IGlkbGVTbGVlcFRpbWU7CisgICAgVmVjdG9yPCBzcDxFZmZlY3RDaGFpbj4gPiBlZmZlY3RDaGFpbnM7CiAKICAgICB3aGlsZSAoIWV4aXRQZW5kaW5nKCkpCiAgICAgewpAQCAtMTM3MywxMyArMTUwMCwyMCBAQAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBtaXhlclN0YXR1cyA9IHByZXBhcmVUcmFja3NfbChhY3RpdmVUcmFja3MsICZ0cmFja3NUb1JlbW92ZSk7CisKKyAgICAgICAgICAgIC8vIHByZXZlbnQgYW55IGNoYW5nZXMgaW4gZWZmZWN0IGNoYWluIGxpc3QgYW5kIGluIGVhY2ggZWZmZWN0IGNoYWluCisgICAgICAgICAgICAvLyBkdXJpbmcgbWl4aW5nIGFuZCBlZmZlY3QgcHJvY2VzcyBhcyB0aGUgYXVkaW8gYnVmZmVycyBjb3VsZCBiZSBkZWxldGVkCisgICAgICAgICAgICAvLyBvciBtb2RpZmllZCBpZiBhbiBlZmZlY3QgaXMgY3JlYXRlZCBvciBkZWxldGVkCisgICAgICAgICAgICBlZmZlY3RDaGFpbnMgPSBtRWZmZWN0Q2hhaW5zOworICAgICAgICAgICAgbG9ja0VmZmVjdENoYWluc19sKCk7CiAgICAgICAgfQogCiAgICAgICAgIGlmIChMSUtFTFkobWl4ZXJTdGF0dXMgPT0gTUlYRVJfVFJBQ0tTX1JFQURZKSkgewogICAgICAgICAgICAgLy8gbWl4IGJ1ZmZlcnMuLi4KLSAgICAgICAgICAgIG1BdWRpb01peGVyLT5wcm9jZXNzKGN1ckJ1Zik7CisgICAgICAgICAgICBtQXVkaW9NaXhlci0+cHJvY2VzcygpOwogICAgICAgICAgICAgc2xlZXBUaW1lID0gMDsKICAgICAgICAgICAgIHN0YW5kYnlUaW1lID0gc3lzdGVtVGltZSgpICsga1N0YW5kYnlUaW1lSW5Oc2VjczsKKyAgICAgICAgICAgIC8vVE9ETzogZGVsYXkgc3RhbmRieSB3aGVuIGVmZmVjdHMgaGF2ZSBhIHRhaWwKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIElmIG5vIHRyYWNrcyBhcmUgcmVhZHksIHNsZWVwIG9uY2UgZm9yIHRoZSBkdXJhdGlvbiBvZiBhbiBvdXRwdXQKICAgICAgICAgICAgIC8vIGJ1ZmZlciBzaXplLCB0aGVuIHdyaXRlIDBzIHRvIHRoZSBvdXRwdXQKQEAgLTEzOTEsMTAgKzE1MjUsMTEgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgaWYgKG1CeXRlc1dyaXR0ZW4gIT0gMCB8fAogICAgICAgICAgICAgICAgICAgICAgICAobWl4ZXJTdGF0dXMgPT0gTUlYRVJfVFJBQ0tTX0VOQUJMRUQgJiYgbG9uZ1N0YW5kYnlFeGl0KSkgewotICAgICAgICAgICAgICAgIG1lbXNldCAoY3VyQnVmLCAwLCBtaXhCdWZmZXJTaXplKTsKKyAgICAgICAgICAgICAgICBtZW1zZXQgKG1NaXhCdWZmZXIsIDAsIG1peEJ1ZmZlclNpemUpOwogICAgICAgICAgICAgICAgIHNsZWVwVGltZSA9IDA7CiAgICAgICAgICAgICAgICAgTE9HVl9JRigobUJ5dGVzV3JpdHRlbiA9PSAwICYmIChtaXhlclN0YXR1cyA9PSBNSVhFUl9UUkFDS1NfRU5BQkxFRCAmJiBsb25nU3RhbmRieUV4aXQpKSwgImFudGljaXBhdGVkIHN0YXJ0Iik7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBUT0RPIGFkZCBzdGFuZGJ5IHRpbWUgZXh0ZW5zaW9uIGZjdCBvZiBlZmZlY3QgdGFpbAogICAgICAgICB9CiAKICAgICAgICAgaWYgKG1TdXNwZW5kZWQpIHsKQEAgLTE0MDIsMTYgKzE1MzcsMjIgQEAKICAgICAgICAgfQogICAgICAgICAvLyBzbGVlcFRpbWUgPT0gMCBtZWFucyB3ZSBtdXN0IHdyaXRlIHRvIGF1ZGlvIGhhcmR3YXJlCiAgICAgICAgIGlmIChzbGVlcFRpbWUgPT0gMCkgewotICAgICAgICAgICAgbUxhc3RXcml0ZVRpbWUgPSBzeXN0ZW1UaW1lKCk7Ci0gICAgICAgICAgICBtSW5Xcml0ZSA9IHRydWU7Ci0gICAgICAgICAgICBtQnl0ZXNXcml0dGVuICs9IG1peEJ1ZmZlclNpemU7CisgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlZmZlY3RDaGFpbnMuc2l6ZSgpOyBpICsrKSB7CisgICAgICAgICAgICAgICAgIGVmZmVjdENoYWluc1tpXS0+cHJvY2Vzc19sKCk7CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIC8vIGVuYWJsZSBjaGFuZ2VzIGluIGVmZmVjdCBjaGFpbgorICAgICAgICAgICAgIHVubG9ja0VmZmVjdENoYWlucygpOwogI2lmZGVmIExWTVgKICAgICAgICAgICAgIGludCBhdWRpb091dHB1dFR5cGUgPSBMaWZlVmliZXM6OmdldE1peGVyVHlwZShtSWQsIG1UeXBlKTsKICAgICAgICAgICAgIGlmIChMaWZlVmliZXM6OmF1ZGlvT3V0cHV0VHlwZUlzTGlmZVZpYmVzKGF1ZGlvT3V0cHV0VHlwZSkpIHsKLSAgICAgICAgICAgICAgIExpZmVWaWJlczo6cHJvY2VzcyhhdWRpb091dHB1dFR5cGUsIGN1ckJ1ZiwgbWl4QnVmZmVyU2l6ZSk7CisgICAgICAgICAgICAgICBMaWZlVmliZXM6OnByb2Nlc3MoYXVkaW9PdXRwdXRUeXBlLCBtTWl4QnVmZmVyLCBtaXhCdWZmZXJTaXplKTsKICAgICAgICAgICAgIH0KICNlbmRpZgotICAgICAgICAgICAgaW50IGJ5dGVzV3JpdHRlbiA9IChpbnQpbU91dHB1dC0+d3JpdGUoY3VyQnVmLCBtaXhCdWZmZXJTaXplKTsKKyAgICAgICAgICAgIG1MYXN0V3JpdGVUaW1lID0gc3lzdGVtVGltZSgpOworICAgICAgICAgICAgbUluV3JpdGUgPSB0cnVlOworICAgICAgICAgICAgbUJ5dGVzV3JpdHRlbiArPSBtaXhCdWZmZXJTaXplOworCisgICAgICAgICAgICBpbnQgYnl0ZXNXcml0dGVuID0gKGludCltT3V0cHV0LT53cml0ZShtTWl4QnVmZmVyLCBtaXhCdWZmZXJTaXplKTsKICAgICAgICAgICAgIGlmIChieXRlc1dyaXR0ZW4gPCAwKSBtQnl0ZXNXcml0dGVuIC09IG1peEJ1ZmZlclNpemU7CiAgICAgICAgICAgICBtTnVtV3JpdGVzKys7CiAgICAgICAgICAgICBtSW5Xcml0ZSA9IGZhbHNlOwpAQCAtMTQzMCw2ICsxNTcxLDggQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1TdGFuZGJ5ID0gZmFsc2U7CiAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBlbmFibGUgY2hhbmdlcyBpbiBlZmZlY3QgY2hhaW4KKyAgICAgICAgICAgIHVubG9ja0VmZmVjdENoYWlucygpOwogICAgICAgICAgICAgdXNsZWVwKHNsZWVwVGltZSk7CiAgICAgICAgIH0KIApAQCAtMTQzNyw2ICsxNTgwLDEwIEBACiAgICAgICAgIC8vIHNpbmNlIHdlIGNhbid0IGd1YXJhbnRlZSB0aGUgZGVzdHJ1Y3RvcnMgd29uJ3QgYWNxdWlyZSB0aGF0CiAgICAgICAgIC8vIHNhbWUgbG9jay4KICAgICAgICAgdHJhY2tzVG9SZW1vdmUuY2xlYXIoKTsKKworICAgICAgICAvLyBFZmZlY3QgY2hhaW5zIHdpbGwgYmUgYWN0dWFsbHkgZGVsZXRlZCBoZXJlIGlmIHRoZXkgd2VyZSByZW1vdmVkIGZyb20KKyAgICAgICAgLy8gbUVmZmVjdENoYWlucyBsaXN0IGR1cmluZyBtaXhpbmcgb3IgZWZmZWN0cyBwcm9jZXNzaW5nCisgICAgICAgIGVmZmVjdENoYWlucy5jbGVhcigpOwogICAgIH0KIAogICAgIGlmICghbVN0YW5kYnkpIHsKQEAgLTE0NTQsNiArMTYwMSw4IEBACiAgICAgdWludDMyX3QgbWl4ZXJTdGF0dXMgPSBNSVhFUl9JRExFOwogICAgIC8vIGZpbmQgb3V0IHdoaWNoIHRyYWNrcyBuZWVkIHRvIGJlIHByb2Nlc3NlZAogICAgIHNpemVfdCBjb3VudCA9IGFjdGl2ZVRyYWNrcy5zaXplKCk7CisgICAgc2l6ZV90IG1peGVkVHJhY2tzID0gMDsKKyAgICBzaXplX3QgdHJhY2tzV2l0aEVmZmVjdCA9IDA7CiAKICAgICBmbG9hdCBtYXN0ZXJWb2x1bWUgPSBtTWFzdGVyVm9sdW1lOwogICAgIGJvb2wgIG1hc3Rlck11dGUgPSBtTWFzdGVyTXV0ZTsKQEAgLTE0NzYsNiArMTYyNSwxNCBAQAogICAgICAgICBMaWZlVmliZXM6OmNvbXB1dGVWb2x1bWVzKGF1ZGlvT3V0cHV0VHlwZSwgYWN0aXZlVHlwZXMsIHRyYWNrc0Nvbm5lY3RlZENoYW5nZWQsIHN0YXRlQ2hhbmdlZCwgbWFzdGVyVm9sdW1lLCBtYXN0ZXJNdXRlKTsKICAgICB9CiAjZW5kaWYKKyAgICAvLyBEZWxlZ2F0ZSBtYXN0ZXIgdm9sdW1lIGNvbnRyb2wgdG8gZWZmZWN0IGluIG91dHB1dCBtaXggZWZmZWN0IGNoYWluIGlmIG5lZWRlZAorICAgIHNwPEVmZmVjdENoYWluPiBjaGFpbiA9IGdldEVmZmVjdENoYWluX2woMCk7CisgICAgaWYgKGNoYWluICE9IDApIHsKKyAgICAgICAgdWludDMyX3QgdiA9ICh1aW50MzJfdCkobWFzdGVyVm9sdW1lICogKDEgPDwgMjQpKTsKKyAgICAgICAgY2hhaW4tPnNldFZvbHVtZSgmdiwgJnYpOworICAgICAgICBtYXN0ZXJWb2x1bWUgPSAoZmxvYXQpKCh2ICsgKDEgPDwgMjMpKSA+PiAyNCk7CisgICAgICAgIGNoYWluLmNsZWFyKCk7CisgICAgfQogCiAgICAgZm9yIChzaXplX3QgaT0wIDsgaTxjb3VudCA7IGkrKykgewogICAgICAgICBzcDxUcmFjaz4gdCA9IGFjdGl2ZVRyYWNrc1tpXS5wcm9tb3RlKCk7CkBAIC0xNDkyLDExICsxNjQ5LDQyIEBACiAgICAgICAgIHsKICAgICAgICAgICAgIC8vTE9HVigidHJhY2sgJWQgdT0lMDh4LCBzPSUwOHggW09LXSBvbiB0aHJlYWQgJXAiLCB0cmFjay0+bmFtZSgpLCBjYmxrLT51c2VyLCBjYmxrLT5zZXJ2ZXIsIHRoaXMpOwogCisgICAgICAgICAgICBtaXhlZFRyYWNrcysrOworCisgICAgICAgICAgICAvLyB0cmFjay0+bWFpbkJ1ZmZlcigpICE9IG1NaXhCdWZmZXIgbWVhbnMgdGhlcmUgaXMgYW4gZWZmZWN0IGNoYWluCisgICAgICAgICAgICAvLyBjb25uZWN0ZWQgdG8gdGhlIHRyYWNrCisgICAgICAgICAgICBjaGFpbi5jbGVhcigpOworICAgICAgICAgICAgaWYgKHRyYWNrLT5tYWluQnVmZmVyKCkgIT0gbU1peEJ1ZmZlcikgeworICAgICAgICAgICAgICAgIGNoYWluID0gZ2V0RWZmZWN0Q2hhaW5fbCh0cmFjay0+c2Vzc2lvbklkKCkpOworICAgICAgICAgICAgICAgIC8vIERlbGVnYXRlIHZvbHVtZSBjb250cm9sIHRvIGVmZmVjdCBpbiB0cmFjayBlZmZlY3QgY2hhaW4gaWYgbmVlZGVkCisgICAgICAgICAgICAgICAgaWYgKGNoYWluICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgdHJhY2tzV2l0aEVmZmVjdCsrOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIExPR1coInByZXBhcmVUcmFja3NfbCgpOiB0cmFjayAlMDh4IGF0dGFjaGVkIHRvIGVmZmVjdCBidXQgbm8gY2hhaW4gZm91bmQgb24gc2Vzc2lvbiAlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2stPm5hbWUoKSwgdHJhY2stPnNlc3Npb25JZCgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKworICAgICAgICAgICAgaW50IHBhcmFtID0gQXVkaW9NaXhlcjo6Vk9MVU1FOworICAgICAgICAgICAgaWYgKHRyYWNrLT5tRmlsbGluZ1VwU3RhdHVzID09IFRyYWNrOjpGU19GSUxMRUQpIHsKKyAgICAgICAgICAgICAgICAvLyBubyByYW1wIGZvciB0aGUgZmlyc3Qgdm9sdW1lIHNldHRpbmcKKyAgICAgICAgICAgICAgICB0cmFjay0+bUZpbGxpbmdVcFN0YXR1cyA9IFRyYWNrOjpGU19BQ1RJVkU7CisgICAgICAgICAgICAgICAgaWYgKHRyYWNrLT5tU3RhdGUgPT0gVHJhY2tCYXNlOjpSRVNVTUlORykgeworICAgICAgICAgICAgICAgICAgICB0cmFjay0+bVN0YXRlID0gVHJhY2tCYXNlOjpBQ1RJVkU7CisgICAgICAgICAgICAgICAgICAgIHBhcmFtID0gQXVkaW9NaXhlcjo6UkFNUF9WT0xVTUU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChjYmxrLT5zZXJ2ZXIgIT0gMCkgeworICAgICAgICAgICAgICAgIC8vIElmIHRoZSB0cmFjayBpcyBzdG9wcGVkIGJlZm9yZSB0aGUgZmlyc3QgZnJhbWUgd2FzIG1peGVkLAorICAgICAgICAgICAgICAgIC8vIGRvIG5vdCBhcHBseSByYW1wCisgICAgICAgICAgICAgICAgcGFyYW0gPSBBdWRpb01peGVyOjpSQU1QX1ZPTFVNRTsKKyAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgLy8gY29tcHV0ZSB2b2x1bWUgZm9yIHRoaXMgdHJhY2sKLSAgICAgICAgICAgIGludDE2X3QgbGVmdCwgcmlnaHQ7CisgICAgICAgICAgICBpbnQxNl90IGxlZnQsIHJpZ2h0LCBhdXg7CiAgICAgICAgICAgICBpZiAodHJhY2stPmlzTXV0ZWQoKSB8fCBtYXN0ZXJNdXRlIHx8IHRyYWNrLT5pc1BhdXNpbmcoKSB8fAogICAgICAgICAgICAgICAgIG1TdHJlYW1UeXBlc1t0cmFjay0+dHlwZSgpXS5tdXRlKSB7Ci0gICAgICAgICAgICAgICAgbGVmdCA9IHJpZ2h0ID0gMDsKKyAgICAgICAgICAgICAgICBsZWZ0ID0gcmlnaHQgPSBhdXggPSAwOwogICAgICAgICAgICAgICAgIGlmICh0cmFjay0+aXNQYXVzaW5nKCkpIHsKICAgICAgICAgICAgICAgICAgICAgdHJhY2stPnNldFBhdXNlZCgpOwogICAgICAgICAgICAgICAgIH0KQEAgLTE1MTUsMzEgKzE3MDMsMjggQEAKICAgICAgICAgICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgICAgICAgICBmbG9hdCB2ID0gbWFzdGVyVm9sdW1lICogdHlwZVZvbHVtZTsKLSAgICAgICAgICAgICAgICBmbG9hdCB2X2NsYW1wZWQgPSB2ICogY2Jsay0+dm9sdW1lWzBdOwotICAgICAgICAgICAgICAgIGlmICh2X2NsYW1wZWQgPiBNQVhfR0FJTikgdl9jbGFtcGVkID0gTUFYX0dBSU47Ci0gICAgICAgICAgICAgICAgbGVmdCA9IGludDE2X3Qodl9jbGFtcGVkKTsKLSAgICAgICAgICAgICAgICB2X2NsYW1wZWQgPSB2ICogY2Jsay0+dm9sdW1lWzFdOwotICAgICAgICAgICAgICAgIGlmICh2X2NsYW1wZWQgPiBNQVhfR0FJTikgdl9jbGFtcGVkID0gTUFYX0dBSU47Ci0gICAgICAgICAgICAgICAgcmlnaHQgPSBpbnQxNl90KHZfY2xhbXBlZCk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdWludDMyX3QgdmwgPSAodWludDMyX3QpKHYgKiBjYmxrLT52b2x1bWVbMF0pIDw8IDEyOworICAgICAgICAgICAgICAgIHVpbnQzMl90IHZyID0gKHVpbnQzMl90KSh2ICogY2Jsay0+dm9sdW1lWzFdKSA8PCAxMjsKIAotICAgICAgICAgICAgLy8gWFhYOiB0aGVzZSB0aGluZ3MgRE9OJ1QgbmVlZCB0byBiZSBkb25lIGVhY2ggdGltZQotICAgICAgICAgICAgbUF1ZGlvTWl4ZXItPnNldEJ1ZmZlclByb3ZpZGVyKHRyYWNrKTsKLSAgICAgICAgICAgIG1BdWRpb01peGVyLT5lbmFibGUoQXVkaW9NaXhlcjo6TUlYSU5HKTsKLQotICAgICAgICAgICAgaW50IHBhcmFtID0gQXVkaW9NaXhlcjo6Vk9MVU1FOwotICAgICAgICAgICAgaWYgKHRyYWNrLT5tRmlsbGluZ1VwU3RhdHVzID09IFRyYWNrOjpGU19GSUxMRUQpIHsKLSAgICAgICAgICAgICAgICAvLyBubyByYW1wIGZvciB0aGUgZmlyc3Qgdm9sdW1lIHNldHRpbmcKLSAgICAgICAgICAgICAgICB0cmFjay0+bUZpbGxpbmdVcFN0YXR1cyA9IFRyYWNrOjpGU19BQ1RJVkU7Ci0gICAgICAgICAgICAgICAgaWYgKHRyYWNrLT5tU3RhdGUgPT0gVHJhY2tCYXNlOjpSRVNVTUlORykgewotICAgICAgICAgICAgICAgICAgICB0cmFjay0+bVN0YXRlID0gVHJhY2tCYXNlOjpBQ1RJVkU7Ci0gICAgICAgICAgICAgICAgICAgIHBhcmFtID0gQXVkaW9NaXhlcjo6UkFNUF9WT0xVTUU7CisgICAgICAgICAgICAgICAgLy8gRGVsZWdhdGUgdm9sdW1lIGNvbnRyb2wgdG8gZWZmZWN0IGluIHRyYWNrIGVmZmVjdCBjaGFpbiBpZiBuZWVkZWQKKyAgICAgICAgICAgICAgICBpZiAoY2hhaW4gIT0gMCAmJiBjaGFpbi0+c2V0Vm9sdW1lKCZ2bCwgJnZyKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBEbyBub3QgcmFtcCB2b2x1bWUgaXMgdm9sdW1lIGlzIGNvbnRyb2xsZWQgYnkgZWZmZWN0CisgICAgICAgICAgICAgICAgICAgIHBhcmFtID0gQXVkaW9NaXhlcjo6Vk9MVU1FOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSBpZiAoY2Jsay0+c2VydmVyICE9IDApIHsKLSAgICAgICAgICAgICAgICAvLyBJZiB0aGUgdHJhY2sgaXMgc3RvcHBlZCBiZWZvcmUgdGhlIGZpcnN0IGZyYW1lIHdhcyBtaXhlZCwKLSAgICAgICAgICAgICAgICAvLyBkbyBub3QgYXBwbHkgcmFtcAotICAgICAgICAgICAgICAgIHBhcmFtID0gQXVkaW9NaXhlcjo6UkFNUF9WT0xVTUU7CisKKyAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IHZvbHVtZXMgZnJvbSA4LjI0IHRvIDQuMTIgZm9ybWF0CisgICAgICAgICAgICAgICAgdWludDMyX3Qgdl9jbGFtcGVkID0gKHZsICsgKDEgPDwgMTEpKSA+PiAxMjsKKyAgICAgICAgICAgICAgICBpZiAodl9jbGFtcGVkID4gTUFYX0dBSU5fSU5UKSB2X2NsYW1wZWQgPSBNQVhfR0FJTl9JTlQ7CisgICAgICAgICAgICAgICAgbGVmdCA9IGludDE2X3Qodl9jbGFtcGVkKTsKKyAgICAgICAgICAgICAgICB2X2NsYW1wZWQgPSAodnIgKyAoMSA8PCAxMSkpID4+IDEyOworICAgICAgICAgICAgICAgIGlmICh2X2NsYW1wZWQgPiBNQVhfR0FJTl9JTlQpIHZfY2xhbXBlZCA9IE1BWF9HQUlOX0lOVDsKKyAgICAgICAgICAgICAgICByaWdodCA9IGludDE2X3Qodl9jbGFtcGVkKTsKKworICAgICAgICAgICAgICAgIHZfY2xhbXBlZCA9ICh1aW50MzJfdCkodiAqIGNibGstPnNlbmRMZXZlbCk7CisgICAgICAgICAgICAgICAgaWYgKHZfY2xhbXBlZCA+IE1BWF9HQUlOX0lOVCkgdl9jbGFtcGVkID0gTUFYX0dBSU5fSU5UOworICAgICAgICAgICAgICAgIGF1eCA9IGludDE2X3Qodl9jbGFtcGVkKTsKICAgICAgICAgICAgIH0KKwogI2lmZGVmIExWTVgKICAgICAgICAgICAgIGlmICggdHJhY2tzQ29ubmVjdGVkQ2hhbmdlZCB8fCBzdGF0ZUNoYW5nZWQgKQogICAgICAgICAgICAgewpAQCAtMTU0NywxOCArMTczMiwzMCBAQAogICAgICAgICAgICAgICAgICBwYXJhbSA9IEF1ZGlvTWl4ZXI6OlZPTFVNRTsKICAgICAgICAgICAgIH0KICNlbmRpZgotICAgICAgICAgICAgbUF1ZGlvTWl4ZXItPnNldFBhcmFtZXRlcihwYXJhbSwgQXVkaW9NaXhlcjo6Vk9MVU1FMCwgbGVmdCk7Ci0gICAgICAgICAgICBtQXVkaW9NaXhlci0+c2V0UGFyYW1ldGVyKHBhcmFtLCBBdWRpb01peGVyOjpWT0xVTUUxLCByaWdodCk7CisKKyAgICAgICAgICAgIC8vIFhYWDogdGhlc2UgdGhpbmdzIERPTidUIG5lZWQgdG8gYmUgZG9uZSBlYWNoIHRpbWUKKyAgICAgICAgICAgIG1BdWRpb01peGVyLT5zZXRCdWZmZXJQcm92aWRlcih0cmFjayk7CisgICAgICAgICAgICBtQXVkaW9NaXhlci0+ZW5hYmxlKEF1ZGlvTWl4ZXI6Ok1JWElORyk7CisKKyAgICAgICAgICAgIG1BdWRpb01peGVyLT5zZXRQYXJhbWV0ZXIocGFyYW0sIEF1ZGlvTWl4ZXI6OlZPTFVNRTAsICh2b2lkICopbGVmdCk7CisgICAgICAgICAgICBtQXVkaW9NaXhlci0+c2V0UGFyYW1ldGVyKHBhcmFtLCBBdWRpb01peGVyOjpWT0xVTUUxLCAodm9pZCAqKXJpZ2h0KTsKKyAgICAgICAgICAgIG1BdWRpb01peGVyLT5zZXRQYXJhbWV0ZXIocGFyYW0sIEF1ZGlvTWl4ZXI6OkFVWExFVkVMLCAodm9pZCAqKWF1eCk7CiAgICAgICAgICAgICBtQXVkaW9NaXhlci0+c2V0UGFyYW1ldGVyKAogICAgICAgICAgICAgICAgIEF1ZGlvTWl4ZXI6OlRSQUNLLAotICAgICAgICAgICAgICAgIEF1ZGlvTWl4ZXI6OkZPUk1BVCwgdHJhY2stPmZvcm1hdCgpKTsKKyAgICAgICAgICAgICAgICBBdWRpb01peGVyOjpGT1JNQVQsICh2b2lkICopdHJhY2stPmZvcm1hdCgpKTsKICAgICAgICAgICAgIG1BdWRpb01peGVyLT5zZXRQYXJhbWV0ZXIoCiAgICAgICAgICAgICAgICAgQXVkaW9NaXhlcjo6VFJBQ0ssCi0gICAgICAgICAgICAgICAgQXVkaW9NaXhlcjo6Q0hBTk5FTF9DT1VOVCwgdHJhY2stPmNoYW5uZWxDb3VudCgpKTsKKyAgICAgICAgICAgICAgICBBdWRpb01peGVyOjpDSEFOTkVMX0NPVU5ULCAodm9pZCAqKXRyYWNrLT5jaGFubmVsQ291bnQoKSk7CiAgICAgICAgICAgICBtQXVkaW9NaXhlci0+c2V0UGFyYW1ldGVyKAogICAgICAgICAgICAgICAgIEF1ZGlvTWl4ZXI6OlJFU0FNUExFLAogICAgICAgICAgICAgICAgIEF1ZGlvTWl4ZXI6OlNBTVBMRV9SQVRFLAotICAgICAgICAgICAgICAgIGludChjYmxrLT5zYW1wbGVSYXRlKSk7CisgICAgICAgICAgICAgICAgKHZvaWQgKikoY2Jsay0+c2FtcGxlUmF0ZSkpOworICAgICAgICAgICAgbUF1ZGlvTWl4ZXItPnNldFBhcmFtZXRlcigKKyAgICAgICAgICAgICAgICBBdWRpb01peGVyOjpUUkFDSywKKyAgICAgICAgICAgICAgICBBdWRpb01peGVyOjpNQUlOX0JVRkZFUiwgKHZvaWQgKil0cmFjay0+bWFpbkJ1ZmZlcigpKTsKKyAgICAgICAgICAgIG1BdWRpb01peGVyLT5zZXRQYXJhbWV0ZXIoCisgICAgICAgICAgICAgICAgQXVkaW9NaXhlcjo6VFJBQ0ssCisgICAgICAgICAgICAgICAgQXVkaW9NaXhlcjo6QVVYX0JVRkZFUiwgKHZvaWQgKil0cmFjay0+YXV4QnVmZmVyKCkpOwogCiAgICAgICAgICAgICAvLyByZXNldCByZXRyeSBjb3VudAogICAgICAgICAgICAgdHJhY2stPm1SZXRyeUNvdW50ID0ga01heFRyYWNrUmV0cmllczsKQEAgLTE1NzIsNyArMTc2OSw2IEBACiAgICAgICAgICAgICAgICAgLy8gV2UgaGF2ZSBjb25zdW1lZCBhbGwgdGhlIGJ1ZmZlcnMgb2YgdGhpcyB0cmFjay4KICAgICAgICAgICAgICAgICAvLyBSZW1vdmUgaXQgZnJvbSB0aGUgbGlzdCBvZiBhY3RpdmUgdHJhY2tzLgogICAgICAgICAgICAgICAgIHRyYWNrc1RvUmVtb3ZlLT5hZGQodHJhY2spOwotICAgICAgICAgICAgICAgIG1BdWRpb01peGVyLT5kaXNhYmxlKEF1ZGlvTWl4ZXI6Ok1JWElORyk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8vIE5vIGJ1ZmZlcnMgZm9yIHRoaXMgdHJhY2suIEdpdmUgaXQgYSBmZXcgY2hhbmNlcyB0bwogICAgICAgICAgICAgICAgIC8vIGZpbGwgYSBidWZmZXIsIHRoZW4gcmVtb3ZlIGl0IGZyb20gYWN0aXZlIGxpc3QuCkBAIC0xNTgyLDkgKzE3NzgsOCBAQAogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobWl4ZXJTdGF0dXMgIT0gTUlYRVJfVFJBQ0tTX1JFQURZKSB7CiAgICAgICAgICAgICAgICAgICAgIG1peGVyU3RhdHVzID0gTUlYRVJfVFJBQ0tTX0VOQUJMRUQ7CiAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgbUF1ZGlvTWl4ZXItPmRpc2FibGUoQXVkaW9NaXhlcjo6TUlYSU5HKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1BdWRpb01peGVyLT5kaXNhYmxlKEF1ZGlvTWl4ZXI6Ok1JWElORyk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTE1OTQsNiArMTc4OSwxMyBAQAogICAgICAgICBmb3IgKHNpemVfdCBpPTAgOyBpPGNvdW50IDsgaSsrKSB7CiAgICAgICAgICAgICBjb25zdCBzcDxUcmFjaz4mIHRyYWNrID0gdHJhY2tzVG9SZW1vdmUtPml0ZW1BdChpKTsKICAgICAgICAgICAgIG1BY3RpdmVUcmFja3MucmVtb3ZlKHRyYWNrKTsKKyAgICAgICAgICAgIGlmICh0cmFjay0+bWFpbkJ1ZmZlcigpICE9IG1NaXhCdWZmZXIpIHsKKyAgICAgICAgICAgICAgICBjaGFpbiA9IGdldEVmZmVjdENoYWluX2wodHJhY2stPnNlc3Npb25JZCgpKTsKKyAgICAgICAgICAgICAgICBpZiAoY2hhaW4gIT0gMCkgeworICAgICAgICAgICAgICAgICAgICBMT0dWKCJzdG9wcGluZyB0cmFjayBvbiBjaGFpbiAlcCBmb3Igc2Vzc2lvbiBJZDogJWQiLCBjaGFpbi5nZXQoKSwgdHJhY2stPnNlc3Npb25JZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgY2hhaW4tPnN0b3BUcmFjaygpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICh0cmFjay0+aXNUZXJtaW5hdGVkKCkpIHsKICAgICAgICAgICAgICAgICBtVHJhY2tzLnJlbW92ZSh0cmFjayk7CiAgICAgICAgICAgICAgICAgZGVsZXRlVHJhY2tOYW1lX2wodHJhY2stPm1OYW1lKTsKQEAgLTE2MDEsNzAgKzE4MDMsMzMgQEAKICAgICAgICAgfQogICAgIH0KIAorICAgIC8vIG1peCBidWZmZXIgbXVzdCBiZSBjbGVhcmVkIGlmIGFsbCB0cmFja3MgYXJlIGNvbm5lY3RlZCB0byBhbgorICAgIC8vIGVmZmVjdCBjaGFpbiBhcyBpbiB0aGlzIGNhc2UgdGhlIG1peGVyIHdpbGwgbm90IHdyaXRlIHRvCisgICAgLy8gbWl4IGJ1ZmZlciBhbmQgdHJhY2sgZWZmZWN0cyB3aWxsIGFjY3VtdWxhdGUgaW50byBpdAorICAgIGlmIChtaXhlZFRyYWNrcyAhPSAwICYmIG1peGVkVHJhY2tzID09IHRyYWNrc1dpdGhFZmZlY3QpIHsKKyAgICAgICAgbWVtc2V0KG1NaXhCdWZmZXIsIDAsIG1GcmFtZUNvdW50ICogbUNoYW5uZWxDb3VudCAqIHNpemVvZihpbnQxNl90KSk7CisgICAgfQorCiAgICAgcmV0dXJuIG1peGVyU3RhdHVzOwogfQogCi12b2lkIEF1ZGlvRmxpbmdlcjo6TWl4ZXJUaHJlYWQ6OmdldFRyYWNrcygKLSAgICAgICAgU29ydGVkVmVjdG9yIDwgc3A8VHJhY2s+ID4mIHRyYWNrcywKLSAgICAgICAgU29ydGVkVmVjdG9yIDwgd3A8VHJhY2s+ID4mIGFjdGl2ZVRyYWNrcywKLSAgICAgICAgaW50IHN0cmVhbVR5cGUpCit2b2lkIEF1ZGlvRmxpbmdlcjo6TWl4ZXJUaHJlYWQ6OmludmFsaWRhdGVUcmFja3MoaW50IHN0cmVhbVR5cGUpCiB7Ci0gICAgTE9HViAoIk1peGVyVGhyZWFkOjpnZXRUcmFja3MoKSBtaXhlciAlcCwgbVRyYWNrcy5zaXplICVkLCBtQWN0aXZlVHJhY2tzLnNpemUgJWQiLCB0aGlzLCAgbVRyYWNrcy5zaXplKCksIG1BY3RpdmVUcmFja3Muc2l6ZSgpKTsKKyAgICBMT0dWICgiTWl4ZXJUaHJlYWQ6OmludmFsaWRhdGVUcmFja3MoKSBtaXhlciAlcCwgc3RyZWFtVHlwZSAlZCwgbVRyYWNrcy5zaXplICVkIiwgdGhpcywgIHN0cmVhbVR5cGUsIG1UcmFja3Muc2l6ZSgpKTsKICAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOwogICAgIHNpemVfdCBzaXplID0gbVRyYWNrcy5zaXplKCk7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKICAgICAgICAgc3A8VHJhY2s+IHQgPSBtVHJhY2tzW2ldOwogICAgICAgICBpZiAodC0+dHlwZSgpID09IHN0cmVhbVR5cGUpIHsKLSAgICAgICAgICAgIHRyYWNrcy5hZGQodCk7Ci0gICAgICAgICAgICBpbnQgaiA9IG1BY3RpdmVUcmFja3MuaW5kZXhPZih0KTsKLSAgICAgICAgICAgIGlmIChqID49IDApIHsKLSAgICAgICAgICAgICAgICB0ID0gbUFjdGl2ZVRyYWNrc1tqXS5wcm9tb3RlKCk7Ci0gICAgICAgICAgICAgICAgaWYgKHQgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBhY3RpdmVUcmFja3MuYWRkKHQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHNpemUgPSBhY3RpdmVUcmFja3Muc2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgIG1BY3RpdmVUcmFja3MucmVtb3ZlKGFjdGl2ZVRyYWNrc1tpXSk7Ci0gICAgfQotCi0gICAgc2l6ZSA9IHRyYWNrcy5zaXplKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgc3A8VHJhY2s+IHQgPSB0cmFja3NbaV07Ci0gICAgICAgIG1UcmFja3MucmVtb3ZlKHQpOwotICAgICAgICBkZWxldGVUcmFja05hbWVfbCh0LT5uYW1lKCkpOwotICAgIH0KLX0KLQotdm9pZCBBdWRpb0ZsaW5nZXI6Ok1peGVyVGhyZWFkOjpwdXRUcmFja3MoCi0gICAgICAgIFNvcnRlZFZlY3RvciA8IHNwPFRyYWNrPiA+JiB0cmFja3MsCi0gICAgICAgIFNvcnRlZFZlY3RvciA8IHdwPFRyYWNrPiA+JiBhY3RpdmVUcmFja3MpCi17Ci0gICAgTE9HViAoIk1peGVyVGhyZWFkOjpwdXRUcmFja3MoKSBtaXhlciAlcCwgdHJhY2tzLnNpemUgJWQsIGFjdGl2ZVRyYWNrcy5zaXplICVkIiwgdGhpcywgIHRyYWNrcy5zaXplKCksIGFjdGl2ZVRyYWNrcy5zaXplKCkpOwotICAgIE11dGV4OjpBdXRvbG9jayBfbChtTG9jayk7Ci0gICAgc2l6ZV90IHNpemUgPSB0cmFja3Muc2l6ZSgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZSA7IGkrKykgewotICAgICAgICBzcDxUcmFjaz4gdCA9IHRyYWNrc1tpXTsKLSAgICAgICAgaW50IG5hbWUgPSBnZXRUcmFja05hbWVfbCgpOwotCi0gICAgICAgIGlmIChuYW1lIDwgMCkgcmV0dXJuOwotCi0gICAgICAgIHQtPm1OYW1lID0gbmFtZTsKLSAgICAgICAgdC0+bVRocmVhZCA9IHRoaXM7Ci0gICAgICAgIG1UcmFja3MuYWRkKHQpOwotCi0gICAgICAgIGludCBqID0gYWN0aXZlVHJhY2tzLmluZGV4T2YodCk7Ci0gICAgICAgIGlmIChqID49IDApIHsKLSAgICAgICAgICAgIG1BY3RpdmVUcmFja3MuYWRkKHQpOwotICAgICAgICAgICAgLy8gZm9yY2UgYnVmZmVyIHJlZmlsbGluZyBhbmQgbm8gcmFtcCB2b2x1bWUgd2hlbiB0aGUgdHJhY2sgaXMgbWl4ZWQgZm9yIHRoZSBmaXJzdCB0aW1lCi0gICAgICAgICAgICB0LT5tRmlsbGluZ1VwU3RhdHVzID0gVHJhY2s6OkZTX0ZJTExJTkc7CisgICAgICAgICAgICB0LT5tQ2Jsay0+bG9jay5sb2NrKCk7CisgICAgICAgICAgICB0LT5tQ2Jsay0+ZmxhZ3MgfD0gQ0JMS19JTlZBTElEX09OOworICAgICAgICAgICAgdC0+bUNibGstPmN2LnNpZ25hbCgpOworICAgICAgICAgICAgdC0+bUNibGstPmxvY2sudW5sb2NrKCk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKKwogLy8gZ2V0VHJhY2tOYW1lX2woKSBtdXN0IGJlIGNhbGxlZCB3aXRoIFRocmVhZEJhc2U6Om1Mb2NrIGhlbGQKIGludCBBdWRpb0ZsaW5nZXI6Ok1peGVyVGhyZWFkOjpnZXRUcmFja05hbWVfbCgpCiB7CkBAIC0xNzE2LDYgKzE4ODEsMTUgQEAKICAgICAgICAgICAgICAgICByZWNvbmZpZyA9IHRydWU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgaWYgKHBhcmFtLmdldEludChTdHJpbmc4KEF1ZGlvUGFyYW1ldGVyOjprZXlSb3V0aW5nKSwgdmFsdWUpID09IE5PX0VSUk9SKSB7CisgICAgICAgICAgICAvLyBmb3J3YXJkIGRldmljZSBjaGFuZ2UgdG8gZWZmZWN0cyB0aGF0IGhhdmUgcmVxdWVzdGVkIHRvIGJlCisgICAgICAgICAgICAvLyBhd2FyZSBvZiBhdHRhY2hlZCBhdWRpbyBkZXZpY2UuCisgICAgICAgICAgICBtRGV2aWNlID0gKHVpbnQzMl90KXZhbHVlOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtRWZmZWN0Q2hhaW5zLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgbUVmZmVjdENoYWluc1tpXS0+c2V0RGV2aWNlKG1EZXZpY2UpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKICAgICAgICAgaWYgKHN0YXR1cyA9PSBOT19FUlJPUikgewogICAgICAgICAgICAgc3RhdHVzID0gbU91dHB1dC0+c2V0UGFyYW1ldGVycyhrZXlWYWx1ZVBhaXIpOwogICAgICAgICAgICAgaWYgKCFtU3RhbmRieSAmJiBzdGF0dXMgPT0gSU5WQUxJRF9PUEVSQVRJT04pIHsKQEAgLTE3NzUsOSArMTk0OSw4IEBACiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUF1ZGlvRmxpbmdlcjo6RGlyZWN0T3V0cHV0VGhyZWFkOjpEaXJlY3RPdXRwdXRUaHJlYWQoY29uc3Qgc3A8QXVkaW9GbGluZ2VyPiYgYXVkaW9GbGluZ2VyLCBBdWRpb1N0cmVhbU91dCogb3V0cHV0LCBpbnQgaWQpCi0gICAgOiAgIFBsYXliYWNrVGhyZWFkKGF1ZGlvRmxpbmdlciwgb3V0cHV0LCBpZCksCi0gICAgbUxlZnRWb2x1bWUgKDEuMCksIG1SaWdodFZvbHVtZSgxLjApCitBdWRpb0ZsaW5nZXI6OkRpcmVjdE91dHB1dFRocmVhZDo6RGlyZWN0T3V0cHV0VGhyZWFkKGNvbnN0IHNwPEF1ZGlvRmxpbmdlcj4mIGF1ZGlvRmxpbmdlciwgQXVkaW9TdHJlYW1PdXQqIG91dHB1dCwgaW50IGlkLCB1aW50MzJfdCBkZXZpY2UpCisgICAgOiAgIFBsYXliYWNrVGhyZWFkKGF1ZGlvRmxpbmdlciwgb3V0cHV0LCBpZCwgZGV2aWNlKQogewogICAgIG1UeXBlID0gUGxheWJhY2tUaHJlYWQ6OkRJUkVDVDsKIH0KQEAgLTE3ODcsNiArMTk2MCwxMDIgQEAKIH0KIAogCitzdGF0aWMgaW5saW5lIGludDE2X3QgY2xhbXAxNihpbnQzMl90IHNhbXBsZSkKK3sKKyAgICBpZiAoKHNhbXBsZT4+MTUpIF4gKHNhbXBsZT4+MzEpKQorICAgICAgICBzYW1wbGUgPSAweDdGRkYgXiAoc2FtcGxlPj4zMSk7CisgICAgcmV0dXJuIHNhbXBsZTsKK30KKworc3RhdGljIGlubGluZQoraW50MzJfdCBtdWwoaW50MTZfdCBpbiwgaW50MTZfdCB2KQoreworI2lmIGRlZmluZWQoX19hcm1fXykgJiYgIWRlZmluZWQoX190aHVtYl9fKQorICAgIGludDMyX3Qgb3V0OworICAgIGFzbSggInNtdWxiYiAlW291dF0sICVbaW5dLCAlW3ZdIFxuIgorICAgICAgICAgOiBbb3V0XSI9ciIob3V0KQorICAgICAgICAgOiBbaW5dIiVyIihpbiksIFt2XSJyIih2KQorICAgICAgICAgOiApOworICAgIHJldHVybiBvdXQ7CisjZWxzZQorICAgIHJldHVybiBpbiAqIGludDMyX3Qodik7CisjZW5kaWYKK30KKwordm9pZCBBdWRpb0ZsaW5nZXI6OkRpcmVjdE91dHB1dFRocmVhZDo6YXBwbHlWb2x1bWUodWludDE2X3QgbGVmdFZvbCwgdWludDE2X3QgcmlnaHRWb2wsIGJvb2wgcmFtcCkKK3sKKyAgICAvLyBEbyBub3QgYXBwbHkgdm9sdW1lIG9uIGNvbXByZXNzZWQgYXVkaW8KKyAgICBpZiAoIUF1ZGlvU3lzdGVtOjppc0xpbmVhclBDTShtRm9ybWF0KSkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gY29udmVydCB0byBzaWduZWQgMTYgYml0IGJlZm9yZSB2b2x1bWUgY2FsY3VsYXRpb24KKyAgICBpZiAobUZvcm1hdCA9PSBBdWRpb1N5c3RlbTo6UENNXzhfQklUKSB7CisgICAgICAgIHNpemVfdCBjb3VudCA9IG1GcmFtZUNvdW50ICogbUNoYW5uZWxDb3VudDsKKyAgICAgICAgdWludDhfdCAqc3JjID0gKHVpbnQ4X3QgKiltTWl4QnVmZmVyICsgY291bnQtMTsKKyAgICAgICAgaW50MTZfdCAqZHN0ID0gbU1peEJ1ZmZlciArIGNvdW50LTE7CisgICAgICAgIHdoaWxlKGNvdW50LS0pIHsKKyAgICAgICAgICAgICpkc3QtLSA9IChpbnQxNl90KSgqc3JjLS1eMHg4MCkgPDwgODsKKyAgICAgICAgfQorICAgIH0KKworICAgIHNpemVfdCBmcmFtZUNvdW50ID0gbUZyYW1lQ291bnQ7CisgICAgaW50MTZfdCAqb3V0ID0gbU1peEJ1ZmZlcjsKKyAgICBpZiAocmFtcCkgeworICAgICAgICBpZiAobUNoYW5uZWxDb3VudCA9PSAxKSB7CisgICAgICAgICAgICBpbnQzMl90IGQgPSAoKGludDMyX3QpbGVmdFZvbCAtIChpbnQzMl90KW1MZWZ0Vm9sU2hvcnQpIDw8IDE2OworICAgICAgICAgICAgaW50MzJfdCB2bEluYyA9IGQgLyAoaW50MzJfdClmcmFtZUNvdW50OworICAgICAgICAgICAgaW50MzJfdCB2bCA9ICgoaW50MzJfdCltTGVmdFZvbFNob3J0IDw8IDE2KTsKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBvdXRbMF0gPSBjbGFtcDE2KG11bChvdXRbMF0sIHZsID4+IDE2KSA+PiAxMik7CisgICAgICAgICAgICAgICAgb3V0Kys7CisgICAgICAgICAgICAgICAgdmwgKz0gdmxJbmM7CisgICAgICAgICAgICB9IHdoaWxlICgtLWZyYW1lQ291bnQpOworCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpbnQzMl90IGQgPSAoKGludDMyX3QpbGVmdFZvbCAtIChpbnQzMl90KW1MZWZ0Vm9sU2hvcnQpIDw8IDE2OworICAgICAgICAgICAgaW50MzJfdCB2bEluYyA9IGQgLyAoaW50MzJfdClmcmFtZUNvdW50OworICAgICAgICAgICAgZCA9ICgoaW50MzJfdClyaWdodFZvbCAtIChpbnQzMl90KW1SaWdodFZvbFNob3J0KSA8PCAxNjsKKyAgICAgICAgICAgIGludDMyX3QgdnJJbmMgPSBkIC8gKGludDMyX3QpZnJhbWVDb3VudDsKKyAgICAgICAgICAgIGludDMyX3QgdmwgPSAoKGludDMyX3QpbUxlZnRWb2xTaG9ydCA8PCAxNik7CisgICAgICAgICAgICBpbnQzMl90IHZyID0gKChpbnQzMl90KW1SaWdodFZvbFNob3J0IDw8IDE2KTsKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBvdXRbMF0gPSBjbGFtcDE2KG11bChvdXRbMF0sIHZsID4+IDE2KSA+PiAxMik7CisgICAgICAgICAgICAgICAgb3V0WzFdID0gY2xhbXAxNihtdWwob3V0WzFdLCB2ciA+PiAxNikgPj4gMTIpOworICAgICAgICAgICAgICAgIG91dCArPSAyOworICAgICAgICAgICAgICAgIHZsICs9IHZsSW5jOworICAgICAgICAgICAgICAgIHZyICs9IHZySW5jOworICAgICAgICAgICAgfSB3aGlsZSAoLS1mcmFtZUNvdW50KTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChtQ2hhbm5lbENvdW50ID09IDEpIHsKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBvdXRbMF0gPSBjbGFtcDE2KG11bChvdXRbMF0sIGxlZnRWb2wpID4+IDEyKTsKKyAgICAgICAgICAgICAgICBvdXQrKzsKKyAgICAgICAgICAgIH0gd2hpbGUgKC0tZnJhbWVDb3VudCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgb3V0WzBdID0gY2xhbXAxNihtdWwob3V0WzBdLCBsZWZ0Vm9sKSA+PiAxMik7CisgICAgICAgICAgICAgICAgb3V0WzFdID0gY2xhbXAxNihtdWwob3V0WzFdLCByaWdodFZvbCkgPj4gMTIpOworICAgICAgICAgICAgICAgIG91dCArPSAyOworICAgICAgICAgICAgfSB3aGlsZSAoLS1mcmFtZUNvdW50KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIGNvbnZlcnQgYmFjayB0byB1bnNpZ25lZCA4IGJpdCBhZnRlciB2b2x1bWUgY2FsY3VsYXRpb24KKyAgICBpZiAobUZvcm1hdCA9PSBBdWRpb1N5c3RlbTo6UENNXzhfQklUKSB7CisgICAgICAgIHNpemVfdCBjb3VudCA9IG1GcmFtZUNvdW50ICogbUNoYW5uZWxDb3VudDsKKyAgICAgICAgaW50MTZfdCAqc3JjID0gbU1peEJ1ZmZlcjsKKyAgICAgICAgdWludDhfdCAqZHN0ID0gKHVpbnQ4X3QgKiltTWl4QnVmZmVyOworICAgICAgICB3aGlsZShjb3VudC0tKSB7CisgICAgICAgICAgICAqZHN0KysgPSAodWludDhfdCkoKChpbnQzMl90KSpzcmMrKyArICgxPDw3KSkgPj4gOCleMHg4MDsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1MZWZ0Vm9sU2hvcnQgPSBsZWZ0Vm9sOworICAgIG1SaWdodFZvbFNob3J0ID0gcmlnaHRWb2w7Cit9CisKIGJvb2wgQXVkaW9GbGluZ2VyOjpEaXJlY3RPdXRwdXRUaHJlYWQ6OnRocmVhZExvb3AoKQogewogICAgIHVpbnQzMl90IG1peGVyU3RhdHVzID0gTUlYRVJfSURMRTsKQEAgLTE4MDUsNiArMjA3NCwxMSBAQAogCiAgICAgd2hpbGUgKCFleGl0UGVuZGluZygpKQogICAgIHsKKyAgICAgICAgYm9vbCByYW1wVm9sdW1lOworICAgICAgICB1aW50MTZfdCBsZWZ0Vm9sOworICAgICAgICB1aW50MTZfdCByaWdodFZvbDsKKyAgICAgICAgVmVjdG9yPCBzcDxFZmZlY3RDaGFpbj4gPiBlZmZlY3RDaGFpbnM7CisKICAgICAgICAgcHJvY2Vzc0NvbmZpZ0V2ZW50cygpOwogCiAgICAgICAgIG1peGVyU3RhdHVzID0gTUlYRVJfSURMRTsKQEAgLTE4NTYsNiArMjEzMCw4IEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCisgICAgICAgICAgICBlZmZlY3RDaGFpbnMgPSBtRWZmZWN0Q2hhaW5zOworCiAgICAgICAgICAgICAvLyBmaW5kIG91dCB3aGljaCB0cmFja3MgbmVlZCB0byBiZSBwcm9jZXNzZWQKICAgICAgICAgICAgIGlmIChtQWN0aXZlVHJhY2tzLnNpemUoKSAhPSAwKSB7CiAgICAgICAgICAgICAgICAgc3A8VHJhY2s+IHQgPSBtQWN0aXZlVHJhY2tzWzBdLnByb21vdGUoKTsKQEAgLTE4NzEsNiArMjE0NywxOSBAQAogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgLy9MT0dWKCJ0cmFjayAlZCB1PSUwOHgsIHM9JTA4eCBbT0tdIiwgdHJhY2stPm5hbWUoKSwgY2Jsay0+dXNlciwgY2Jsay0+c2VydmVyKTsKIAorICAgICAgICAgICAgICAgICAgICBpZiAodHJhY2stPm1GaWxsaW5nVXBTdGF0dXMgPT0gVHJhY2s6OkZTX0ZJTExFRCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2stPm1GaWxsaW5nVXBTdGF0dXMgPSBUcmFjazo6RlNfQUNUSVZFOworICAgICAgICAgICAgICAgICAgICAgICAgbUxlZnRWb2xGbG9hdCA9IG1SaWdodFZvbEZsb2F0ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1MZWZ0Vm9sU2hvcnQgPSBtUmlnaHRWb2xTaG9ydCA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHJhY2stPm1TdGF0ZSA9PSBUcmFja0Jhc2U6OlJFU1VNSU5HKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2stPm1TdGF0ZSA9IFRyYWNrQmFzZTo6QUNUSVZFOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbXBWb2x1bWUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNibGstPnNlcnZlciAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgdHJhY2sgaXMgc3RvcHBlZCBiZWZvcmUgdGhlIGZpcnN0IGZyYW1lIHdhcyBtaXhlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRvIG5vdCBhcHBseSByYW1wCisgICAgICAgICAgICAgICAgICAgICAgICByYW1wVm9sdW1lID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAvLyBjb21wdXRlIHZvbHVtZSBmb3IgdGhpcyB0cmFjawogICAgICAgICAgICAgICAgICAgICBmbG9hdCBsZWZ0LCByaWdodDsKICAgICAgICAgICAgICAgICAgICAgaWYgKHRyYWNrLT5pc011dGVkKCkgfHwgbU1hc3Rlck11dGUgfHwgdHJhY2stPmlzUGF1c2luZygpIHx8CkBAIC0xODkwLDE3ICsyMTc5LDQyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICByaWdodCA9IHZfY2xhbXBlZC9NQVhfR0FJTjsKICAgICAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAgIGlmIChsZWZ0ICE9IG1MZWZ0Vm9sdW1lIHx8IHJpZ2h0ICE9IG1SaWdodFZvbHVtZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgbU91dHB1dC0+c2V0Vm9sdW1lKGxlZnQsIHJpZ2h0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxlZnQgPSBtTGVmdFZvbHVtZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJpZ2h0ID0gbVJpZ2h0Vm9sdW1lOwotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChsZWZ0ICE9IG1MZWZ0Vm9sRmxvYXQgfHwgcmlnaHQgIT0gbVJpZ2h0Vm9sRmxvYXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1MZWZ0Vm9sRmxvYXQgPSBsZWZ0OworICAgICAgICAgICAgICAgICAgICAgICAgbVJpZ2h0Vm9sRmxvYXQgPSByaWdodDsKIAotICAgICAgICAgICAgICAgICAgICBpZiAodHJhY2stPm1GaWxsaW5nVXBTdGF0dXMgPT0gVHJhY2s6OkZTX0ZJTExFRCkgewotICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2stPm1GaWxsaW5nVXBTdGF0dXMgPSBUcmFjazo6RlNfQUNUSVZFOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRyYWNrLT5tU3RhdGUgPT0gVHJhY2tCYXNlOjpSRVNVTUlORykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNrLT5tU3RhdGUgPSBUcmFja0Jhc2U6OkFDVElWRTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIGF1ZGlvIEhBTCBpbXBsZW1lbnRzIHZvbHVtZSBjb250cm9sLAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yY2Ugc29mdHdhcmUgdm9sdW1lIHRvIG5vbWluYWwgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtT3V0cHV0LT5zZXRWb2x1bWUobGVmdCwgcmlnaHQpID09IE5PX0VSUk9SKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVmdCA9IDEuMGY7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQgPSAxLjBmOwogICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IHZvbHVtZXMgZnJvbSBmbG9hdCB0byA4LjI0CisgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB2bCA9ICh1aW50MzJfdCkobGVmdCAqICgxIDw8IDI0KSk7CisgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB2ciA9ICh1aW50MzJfdCkocmlnaHQgKiAoMSA8PCAyNCkpOworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWxlZ2F0ZSB2b2x1bWUgY29udHJvbCB0byBlZmZlY3QgaW4gdHJhY2sgZWZmZWN0IGNoYWluIGlmIG5lZWRlZAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gb25seSBvbmUgZWZmZWN0IGNoYWluIGNhbiBiZSBwcmVzZW50IG9uIERpcmVjdE91dHB1dFRocmVhZCwgc28gaWYKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZXJlIGlzIG9uZSwgdGhlIHRyYWNrIGlzIGNvbm5lY3RlZCB0byBpdAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlZmZlY3RDaGFpbnMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRG8gbm90IHJhbXAgdm9sdW1lIGlzIHZvbHVtZSBpcyBjb250cm9sbGVkIGJ5IGVmZmVjdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmKGVmZmVjdENoYWluc1swXS0+c2V0Vm9sdW1lKCZ2bCwgJnZyKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW1wVm9sdW1lID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBDb252ZXJ0IHZvbHVtZXMgZnJvbSA4LjI0IHRvIDQuMTIgZm9ybWF0CisgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB2X2NsYW1wZWQgPSAodmwgKyAoMSA8PCAxMSkpID4+IDEyOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZfY2xhbXBlZCA+IE1BWF9HQUlOX0lOVCkgdl9jbGFtcGVkID0gTUFYX0dBSU5fSU5UOworICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFZvbCA9ICh1aW50MTZfdCl2X2NsYW1wZWQ7CisgICAgICAgICAgICAgICAgICAgICAgICB2X2NsYW1wZWQgPSAodnIgKyAoMSA8PCAxMSkpID4+IDEyOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZfY2xhbXBlZCA+IE1BWF9HQUlOX0lOVCkgdl9jbGFtcGVkID0gTUFYX0dBSU5fSU5UOworICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHRWb2wgPSAodWludDE2X3Qpdl9jbGFtcGVkOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgbGVmdFZvbCA9IG1MZWZ0Vm9sU2hvcnQ7CisgICAgICAgICAgICAgICAgICAgICAgICByaWdodFZvbCA9IG1SaWdodFZvbFNob3J0OworICAgICAgICAgICAgICAgICAgICAgICAgcmFtcFZvbHVtZSA9IGZhbHNlOwogICAgICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICAgICAgLy8gcmVzZXQgcmV0cnkgY291bnQKQEAgLTE5MzIsMTEgKzIyNDYsMTcgQEAKICAgICAgICAgICAgIC8vIHJlbW92ZSBhbGwgdGhlIHRyYWNrcyB0aGF0IG5lZWQgdG8gYmUuLi4KICAgICAgICAgICAgIGlmIChVTkxJS0VMWSh0cmFja1RvUmVtb3ZlICE9IDApKSB7CiAgICAgICAgICAgICAgICAgbUFjdGl2ZVRyYWNrcy5yZW1vdmUodHJhY2tUb1JlbW92ZSk7CisgICAgICAgICAgICAgICAgaWYgKCFlZmZlY3RDaGFpbnMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgICAgIExPR1YoInN0b3BwaW5nIHRyYWNrIG9uIGNoYWluICVwIGZvciBzZXNzaW9uIElkOiAlZCIsIGVmZmVjdENoYWluc1swXS5nZXQoKSwgdHJhY2tUb1JlbW92ZS0+c2Vzc2lvbklkKCkpOworICAgICAgICAgICAgICAgICAgICBlZmZlY3RDaGFpbnNbMF0tPnN0b3BUcmFjaygpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAodHJhY2tUb1JlbW92ZS0+aXNUZXJtaW5hdGVkKCkpIHsKICAgICAgICAgICAgICAgICAgICAgbVRyYWNrcy5yZW1vdmUodHJhY2tUb1JlbW92ZSk7CiAgICAgICAgICAgICAgICAgICAgIGRlbGV0ZVRyYWNrTmFtZV9sKHRyYWNrVG9SZW1vdmUtPm1OYW1lKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGxvY2tFZmZlY3RDaGFpbnNfbCgpOwogICAgICAgIH0KIAogICAgICAgICBpZiAoTElLRUxZKG1peGVyU3RhdHVzID09IE1JWEVSX1RSQUNLU19SRUFEWSkpIHsKQEAgLTE5NDQsNyArMjI2NCw3IEBACiAgICAgICAgICAgICBzaXplX3QgZnJhbWVDb3VudCA9IG1GcmFtZUNvdW50OwogICAgICAgICAgICAgY3VyQnVmID0gKGludDhfdCAqKW1NaXhCdWZmZXI7CiAgICAgICAgICAgICAvLyBvdXRwdXQgYXVkaW8gdG8gaGFyZHdhcmUKLSAgICAgICAgICAgIHdoaWxlKGZyYW1lQ291bnQpIHsKKyAgICAgICAgICAgIHdoaWxlIChmcmFtZUNvdW50KSB7CiAgICAgICAgICAgICAgICAgYnVmZmVyLmZyYW1lQ291bnQgPSBmcmFtZUNvdW50OwogICAgICAgICAgICAgICAgIGFjdGl2ZVRyYWNrLT5nZXROZXh0QnVmZmVyKCZidWZmZXIpOwogICAgICAgICAgICAgICAgIGlmIChVTkxJS0VMWShidWZmZXIucmF3ID09IDApKSB7CkBAIC0xOTc2LDYgKzIyOTYsMTQgQEAKICAgICAgICAgfQogICAgICAgICAvLyBzbGVlcFRpbWUgPT0gMCBtZWFucyB3ZSBtdXN0IHdyaXRlIHRvIGF1ZGlvIGhhcmR3YXJlCiAgICAgICAgIGlmIChzbGVlcFRpbWUgPT0gMCkgeworICAgICAgICAgICAgaWYgKG1peGVyU3RhdHVzID09IE1JWEVSX1RSQUNLU19SRUFEWSkgeworICAgICAgICAgICAgICAgIGFwcGx5Vm9sdW1lKGxlZnRWb2wsIHJpZ2h0Vm9sLCByYW1wVm9sdW1lKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZWZmZWN0Q2hhaW5zLnNpemUoKTsgaSArKykgeworICAgICAgICAgICAgICAgIGVmZmVjdENoYWluc1tpXS0+cHJvY2Vzc19sKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB1bmxvY2tFZmZlY3RDaGFpbnMoKTsKKwogICAgICAgICAgICAgbUxhc3RXcml0ZVRpbWUgPSBzeXN0ZW1UaW1lKCk7CiAgICAgICAgICAgICBtSW5Xcml0ZSA9IHRydWU7CiAgICAgICAgICAgICBtQnl0ZXNXcml0dGVuICs9IG1peEJ1ZmZlclNpemU7CkBAIC0xOTg1LDYgKzIzMTMsNyBAQAogICAgICAgICAgICAgbUluV3JpdGUgPSBmYWxzZTsKICAgICAgICAgICAgIG1TdGFuZGJ5ID0gZmFsc2U7CiAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB1bmxvY2tFZmZlY3RDaGFpbnMoKTsKICAgICAgICAgICAgIHVzbGVlcChzbGVlcFRpbWUpOwogICAgICAgICB9CiAKQEAgLTE5OTMsNiArMjMyMiwxMCBAQAogICAgICAgICAvLyBzYW1lIGxvY2suCiAgICAgICAgIHRyYWNrVG9SZW1vdmUuY2xlYXIoKTsKICAgICAgICAgYWN0aXZlVHJhY2suY2xlYXIoKTsKKworICAgICAgICAvLyBFZmZlY3QgY2hhaW5zIHdpbGwgYmUgYWN0dWFsbHkgZGVsZXRlZCBoZXJlIGlmIHRoZXkgd2VyZSByZW1vdmVkIGZyb20KKyAgICAgICAgLy8gbUVmZmVjdENoYWlucyBsaXN0IGR1cmluZyBtaXhpbmcgb3IgZWZmZWN0cyBwcm9jZXNzaW5nCisgICAgICAgIGVmZmVjdENoYWlucy5jbGVhcigpOwogICAgIH0KIAogICAgIGlmICghbVN0YW5kYnkpIHsKQEAgLTIwODMsNyArMjQxNiw3IEBACiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIEF1ZGlvRmxpbmdlcjo6RHVwbGljYXRpbmdUaHJlYWQ6OkR1cGxpY2F0aW5nVGhyZWFkKGNvbnN0IHNwPEF1ZGlvRmxpbmdlcj4mIGF1ZGlvRmxpbmdlciwgQXVkaW9GbGluZ2VyOjpNaXhlclRocmVhZCogbWFpblRocmVhZCwgaW50IGlkKQotICAgIDogICBNaXhlclRocmVhZChhdWRpb0ZsaW5nZXIsIG1haW5UaHJlYWQtPmdldE91dHB1dCgpLCBpZCksIG1XYWl0VGltZU1zKFVJTlRfTUFYKQorICAgIDogICBNaXhlclRocmVhZChhdWRpb0ZsaW5nZXIsIG1haW5UaHJlYWQtPmdldE91dHB1dCgpLCBpZCwgbWFpblRocmVhZC0+ZGV2aWNlKCkpLCBtV2FpdFRpbWVNcyhVSU5UX01BWCkKIHsKICAgICBtVHlwZSA9IFBsYXliYWNrVGhyZWFkOjpEVVBMSUNBVElORzsKICAgICBhZGRPdXRwdXRUcmFjayhtYWluVGhyZWFkKTsKQEAgLTIwOTksNyArMjQzMiw2IEBACiAKIGJvb2wgQXVkaW9GbGluZ2VyOjpEdXBsaWNhdGluZ1RocmVhZDo6dGhyZWFkTG9vcCgpCiB7Ci0gICAgaW50MTZfdCogY3VyQnVmID0gbU1peEJ1ZmZlcjsKICAgICBWZWN0b3I8IHNwPFRyYWNrPiA+IHRyYWNrc1RvUmVtb3ZlOwogICAgIHVpbnQzMl90IG1peGVyU3RhdHVzID0gTUlYRVJfSURMRTsKICAgICBuc2Vjc190IHN0YW5kYnlUaW1lID0gc3lzdGVtVGltZSgpOwpAQCAtMjEwOSw2ICsyNDQxLDcgQEAKICAgICB1aW50MzJfdCBhY3RpdmVTbGVlcFRpbWUgPSBhY3RpdmVTbGVlcFRpbWVVcygpOwogICAgIHVpbnQzMl90IGlkbGVTbGVlcFRpbWUgPSBpZGxlU2xlZXBUaW1lVXMoKTsKICAgICB1aW50MzJfdCBzbGVlcFRpbWUgPSBpZGxlU2xlZXBUaW1lOworICAgIFZlY3Rvcjwgc3A8RWZmZWN0Q2hhaW4+ID4gZWZmZWN0Q2hhaW5zOwogCiAgICAgd2hpbGUgKCFleGl0UGVuZGluZygpKQogICAgIHsKQEAgLTIxNjksMTQgKzI1MDIsMjAgQEAKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgbWl4ZXJTdGF0dXMgPSBwcmVwYXJlVHJhY2tzX2woYWN0aXZlVHJhY2tzLCAmdHJhY2tzVG9SZW1vdmUpOworCisgICAgICAgICAgICAvLyBwcmV2ZW50IGFueSBjaGFuZ2VzIGluIGVmZmVjdCBjaGFpbiBsaXN0IGFuZCBpbiBlYWNoIGVmZmVjdCBjaGFpbgorICAgICAgICAgICAgLy8gZHVyaW5nIG1peGluZyBhbmQgZWZmZWN0IHByb2Nlc3MgYXMgdGhlIGF1ZGlvIGJ1ZmZlcnMgY291bGQgYmUgZGVsZXRlZAorICAgICAgICAgICAgLy8gb3IgbW9kaWZpZWQgaWYgYW4gZWZmZWN0IGlzIGNyZWF0ZWQgb3IgZGVsZXRlZAorICAgICAgICAgICAgZWZmZWN0Q2hhaW5zID0gbUVmZmVjdENoYWluczsKKyAgICAgICAgICAgIGxvY2tFZmZlY3RDaGFpbnNfbCgpOwogICAgICAgICB9CiAKICAgICAgICAgaWYgKExJS0VMWShtaXhlclN0YXR1cyA9PSBNSVhFUl9UUkFDS1NfUkVBRFkpKSB7CiAgICAgICAgICAgICAvLyBtaXggYnVmZmVycy4uLgogICAgICAgICAgICAgaWYgKG91dHB1dHNSZWFkeShvdXRwdXRUcmFja3MpKSB7Ci0gICAgICAgICAgICAgICAgbUF1ZGlvTWl4ZXItPnByb2Nlc3MoY3VyQnVmKTsKKyAgICAgICAgICAgICAgICBtQXVkaW9NaXhlci0+cHJvY2VzcygpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtZW1zZXQoY3VyQnVmLCAwLCBtaXhCdWZmZXJTaXplKTsKKyAgICAgICAgICAgICAgICBtZW1zZXQobU1peEJ1ZmZlciwgMCwgbWl4QnVmZmVyU2l6ZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzbGVlcFRpbWUgPSAwOwogICAgICAgICAgICAgd3JpdGVGcmFtZXMgPSBtRnJhbWVDb3VudDsKQEAgLTIxOTMsNiArMjUzMiw3IEBACiAgICAgICAgICAgICAgICAgICAgIGlmIChvdXRwdXRUcmFja3NbaV0tPmlzQWN0aXZlKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHNsZWVwVGltZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICB3cml0ZUZyYW1lcyA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBtZW1zZXQobU1peEJ1ZmZlciwgMCwgbWl4QnVmZmVyU2l6ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KQEAgLTIyMDQsMTMgKzI1NDQsMjEgQEAKICAgICAgICAgfQogICAgICAgICAvLyBzbGVlcFRpbWUgPT0gMCBtZWFucyB3ZSBtdXN0IHdyaXRlIHRvIGF1ZGlvIGhhcmR3YXJlCiAgICAgICAgIGlmIChzbGVlcFRpbWUgPT0gMCkgeworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBlZmZlY3RDaGFpbnMuc2l6ZSgpOyBpICsrKSB7CisgICAgICAgICAgICAgICAgZWZmZWN0Q2hhaW5zW2ldLT5wcm9jZXNzX2woKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIGVuYWJsZSBjaGFuZ2VzIGluIGVmZmVjdCBjaGFpbgorICAgICAgICAgICAgdW5sb2NrRWZmZWN0Q2hhaW5zKCk7CisKICAgICAgICAgICAgIHN0YW5kYnlUaW1lID0gc3lzdGVtVGltZSgpICsga1N0YW5kYnlUaW1lSW5Oc2VjczsKICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb3V0cHV0VHJhY2tzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgb3V0cHV0VHJhY2tzW2ldLT53cml0ZShjdXJCdWYsIHdyaXRlRnJhbWVzKTsKKyAgICAgICAgICAgICAgICBvdXRwdXRUcmFja3NbaV0tPndyaXRlKG1NaXhCdWZmZXIsIHdyaXRlRnJhbWVzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1TdGFuZGJ5ID0gZmFsc2U7CiAgICAgICAgICAgICBtQnl0ZXNXcml0dGVuICs9IG1peEJ1ZmZlclNpemU7CiAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBlbmFibGUgY2hhbmdlcyBpbiBlZmZlY3QgY2hhaW4KKyAgICAgICAgICAgIHVubG9ja0VmZmVjdENoYWlucygpOwogICAgICAgICAgICAgdXNsZWVwKHNsZWVwVGltZSk7CiAgICAgICAgIH0KIApAQCAtMjIxOSw2ICsyNTY3LDEwIEBACiAgICAgICAgIC8vIHNhbWUgbG9jay4KICAgICAgICAgdHJhY2tzVG9SZW1vdmUuY2xlYXIoKTsKICAgICAgICAgb3V0cHV0VHJhY2tzLmNsZWFyKCk7CisKKyAgICAgICAgLy8gRWZmZWN0IGNoYWlucyB3aWxsIGJlIGFjdHVhbGx5IGRlbGV0ZWQgaGVyZSBpZiB0aGV5IHdlcmUgcmVtb3ZlZCBmcm9tCisgICAgICAgIC8vIG1FZmZlY3RDaGFpbnMgbGlzdCBkdXJpbmcgbWl4aW5nIG9yIGVmZmVjdHMgcHJvY2Vzc2luZworICAgICAgICBlZmZlY3RDaGFpbnMuY2xlYXIoKTsKICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7CkBAIC0yMzAzLDcgKzI2NTUsOCBAQAogICAgICAgICAgICAgaW50IGNoYW5uZWxDb3VudCwKICAgICAgICAgICAgIGludCBmcmFtZUNvdW50LAogICAgICAgICAgICAgdWludDMyX3QgZmxhZ3MsCi0gICAgICAgICAgICBjb25zdCBzcDxJTWVtb3J5PiYgc2hhcmVkQnVmZmVyKQorICAgICAgICAgICAgY29uc3Qgc3A8SU1lbW9yeT4mIHNoYXJlZEJ1ZmZlciwKKyAgICAgICAgICAgIGludCBzZXNzaW9uSWQpCiAgICAgOiAgIFJlZkJhc2UoKSwKICAgICAgICAgbVRocmVhZCh0aHJlYWQpLAogICAgICAgICBtQ2xpZW50KGNsaWVudCksCkBAIC0yMzEyLDcgKzI2NjUsOCBAQAogICAgICAgICBtU3RhdGUoSURMRSksCiAgICAgICAgIG1DbGllbnRUaWQoLTEpLAogICAgICAgICBtRm9ybWF0KGZvcm1hdCksCi0gICAgICAgIG1GbGFncyhmbGFncyAmIH5TWVNURU1fRkxBR1NfTUFTSykKKyAgICAgICAgbUZsYWdzKGZsYWdzICYgflNZU1RFTV9GTEFHU19NQVNLKSwKKyAgICAgICAgbVNlc3Npb25JZChzZXNzaW9uSWQpCiB7CiAgICAgTE9HVl9JRihzaGFyZWRCdWZmZXIgIT0gMCwgInNoYXJlZEJ1ZmZlcjogJXAsIHNpemU6ICVkIiwgc2hhcmVkQnVmZmVyLT5wb2ludGVyKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKIApAQCAtMjMzMiwxMyArMjY4NiwxMyBAQAogICAgICAgICAgICAgICAgIC8vIGNsZWFyIGFsbCBidWZmZXJzCiAgICAgICAgICAgICAgICAgbUNibGstPmZyYW1lQ291bnQgPSBmcmFtZUNvdW50OwogICAgICAgICAgICAgICAgIG1DYmxrLT5zYW1wbGVSYXRlID0gc2FtcGxlUmF0ZTsKLSAgICAgICAgICAgICAgICBtQ2Jsay0+Y2hhbm5lbHMgPSAodWludDhfdCljaGFubmVsQ291bnQ7CisgICAgICAgICAgICAgICAgbUNibGstPmNoYW5uZWxDb3VudCA9ICh1aW50OF90KWNoYW5uZWxDb3VudDsKICAgICAgICAgICAgICAgICBpZiAoc2hhcmVkQnVmZmVyID09IDApIHsKICAgICAgICAgICAgICAgICAgICAgbUJ1ZmZlciA9IChjaGFyKiltQ2JsayArIHNpemVvZihhdWRpb190cmFja19jYmxrX3QpOwogICAgICAgICAgICAgICAgICAgICBtZW1zZXQobUJ1ZmZlciwgMCwgZnJhbWVDb3VudCpjaGFubmVsQ291bnQqc2l6ZW9mKGludDE2X3QpKTsKICAgICAgICAgICAgICAgICAgICAgLy8gRm9yY2UgdW5kZXJydW4gY29uZGl0aW9uIHRvIGF2b2lkIGZhbHNlIHVuZGVycnVuIGNhbGxiYWNrIHVudGlsIGZpcnN0IGRhdGEgaXMKICAgICAgICAgICAgICAgICAgICAgLy8gd3JpdHRlbiB0byBidWZmZXIKLSAgICAgICAgICAgICAgICAgICAgbUNibGstPmZsb3dDb250cm9sRmxhZyA9IDE7CisgICAgICAgICAgICAgICAgICAgIG1DYmxrLT5mbGFncyA9IENCTEtfVU5ERVJSVU5fT047CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgbUJ1ZmZlciA9IHNoYXJlZEJ1ZmZlci0+cG9pbnRlcigpOwogICAgICAgICAgICAgICAgIH0KQEAgLTIzNTYsMTIgKzI3MTAsMTIgQEAKICAgICAgICAgICAgLy8gY2xlYXIgYWxsIGJ1ZmZlcnMKICAgICAgICAgICAgbUNibGstPmZyYW1lQ291bnQgPSBmcmFtZUNvdW50OwogICAgICAgICAgICBtQ2Jsay0+c2FtcGxlUmF0ZSA9IHNhbXBsZVJhdGU7Ci0gICAgICAgICAgIG1DYmxrLT5jaGFubmVscyA9ICh1aW50OF90KWNoYW5uZWxDb3VudDsKKyAgICAgICAgICAgbUNibGstPmNoYW5uZWxDb3VudCA9ICh1aW50OF90KWNoYW5uZWxDb3VudDsKICAgICAgICAgICAgbUJ1ZmZlciA9IChjaGFyKiltQ2JsayArIHNpemVvZihhdWRpb190cmFja19jYmxrX3QpOwogICAgICAgICAgICBtZW1zZXQobUJ1ZmZlciwgMCwgZnJhbWVDb3VudCpjaGFubmVsQ291bnQqc2l6ZW9mKGludDE2X3QpKTsKICAgICAgICAgICAgLy8gRm9yY2UgdW5kZXJydW4gY29uZGl0aW9uIHRvIGF2b2lkIGZhbHNlIHVuZGVycnVuIGNhbGxiYWNrIHVudGlsIGZpcnN0IGRhdGEgaXMKICAgICAgICAgICAgLy8gd3JpdHRlbiB0byBidWZmZXIKLSAgICAgICAgICAgbUNibGstPmZsb3dDb250cm9sRmxhZyA9IDE7CisgICAgICAgICAgIG1DYmxrLT5mbGFncyA9IENCTEtfVU5ERVJSVU5fT047CiAgICAgICAgICAgIG1CdWZmZXJFbmQgPSAodWludDhfdCAqKW1CdWZmZXIgKyBidWZmZXJTaXplOwogICAgICAgIH0KICAgIH0KQEAgLTI0MjMsNyArMjc3Nyw3IEBACiB9CiAKIGludCBBdWRpb0ZsaW5nZXI6OlRocmVhZEJhc2U6OlRyYWNrQmFzZTo6Y2hhbm5lbENvdW50KCkgY29uc3QgewotICAgIHJldHVybiAoaW50KW1DYmxrLT5jaGFubmVsczsKKyAgICByZXR1cm4gKGludCltQ2Jsay0+Y2hhbm5lbENvdW50OwogfQogCiB2b2lkKiBBdWRpb0ZsaW5nZXI6OlRocmVhZEJhc2U6OlRyYWNrQmFzZTo6Z2V0QnVmZmVyKHVpbnQzMl90IG9mZnNldCwgdWludDMyX3QgZnJhbWVzKSBjb25zdCB7CkBAIC0yNDM1LDkgKzI3ODksOSBAQAogICAgIGlmIChidWZmZXJTdGFydCA8IG1CdWZmZXIgfHwgYnVmZmVyU3RhcnQgPiBidWZmZXJFbmQgfHwgYnVmZmVyRW5kID4gbUJ1ZmZlckVuZCB8fAogICAgICAgICAoKHVuc2lnbmVkIGxvbmcpYnVmZmVyU3RhcnQgJiAodW5zaWduZWQgbG9uZykoY2Jsay0+ZnJhbWVTaXplIC0gMSkpKSB7CiAgICAgICAgIExPR0UoIlRyYWNrQmFzZTo6Z2V0QnVmZmVyIGJ1ZmZlciBvdXQgb2YgcmFuZ2U6XG4gICAgc3RhcnQ6ICVwLCBlbmQgJXAgLCBtQnVmZmVyICVwIG1CdWZmZXJFbmQgJXBcbiAgICBcCi0gICAgICAgICAgICAgICAgc2VydmVyICVkLCBzZXJ2ZXJCYXNlICVkLCB1c2VyICVkLCB1c2VyQmFzZSAlZCwgY2hhbm5lbHMgJWQiLAorICAgICAgICAgICAgICAgIHNlcnZlciAlZCwgc2VydmVyQmFzZSAlZCwgdXNlciAlZCwgdXNlckJhc2UgJWQsIGNoYW5uZWxDb3VudCAlZCIsCiAgICAgICAgICAgICAgICAgYnVmZmVyU3RhcnQsIGJ1ZmZlckVuZCwgbUJ1ZmZlciwgbUJ1ZmZlckVuZCwKLSAgICAgICAgICAgICAgICBjYmxrLT5zZXJ2ZXIsIGNibGstPnNlcnZlckJhc2UsIGNibGstPnVzZXIsIGNibGstPnVzZXJCYXNlLCBjYmxrLT5jaGFubmVscyk7CisgICAgICAgICAgICAgICAgY2Jsay0+c2VydmVyLCBjYmxrLT5zZXJ2ZXJCYXNlLCBjYmxrLT51c2VyLCBjYmxrLT51c2VyQmFzZSwgY2Jsay0+Y2hhbm5lbENvdW50KTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCkBAIC0yNDU1LDE1ICsyODA5LDE3IEBACiAgICAgICAgICAgICBpbnQgZm9ybWF0LAogICAgICAgICAgICAgaW50IGNoYW5uZWxDb3VudCwKICAgICAgICAgICAgIGludCBmcmFtZUNvdW50LAotICAgICAgICAgICAgY29uc3Qgc3A8SU1lbW9yeT4mIHNoYXJlZEJ1ZmZlcikKLSAgICA6ICAgVHJhY2tCYXNlKHRocmVhZCwgY2xpZW50LCBzYW1wbGVSYXRlLCBmb3JtYXQsIGNoYW5uZWxDb3VudCwgZnJhbWVDb3VudCwgMCwgc2hhcmVkQnVmZmVyKSwKLSAgICBtTXV0ZShmYWxzZSksIG1TaGFyZWRCdWZmZXIoc2hhcmVkQnVmZmVyKSwgbU5hbWUoLTEpCisgICAgICAgICAgICBjb25zdCBzcDxJTWVtb3J5PiYgc2hhcmVkQnVmZmVyLAorICAgICAgICAgICAgaW50IHNlc3Npb25JZCkKKyAgICA6ICAgVHJhY2tCYXNlKHRocmVhZCwgY2xpZW50LCBzYW1wbGVSYXRlLCBmb3JtYXQsIGNoYW5uZWxDb3VudCwgZnJhbWVDb3VudCwgMCwgc2hhcmVkQnVmZmVyLCBzZXNzaW9uSWQpLAorICAgIG1NdXRlKGZhbHNlKSwgbVNoYXJlZEJ1ZmZlcihzaGFyZWRCdWZmZXIpLCBtTmFtZSgtMSksIG1NYWluQnVmZmVyKE5VTEwpLCBtQXV4QnVmZmVyKE5VTEwpLCBtQXV4RWZmZWN0SWQoMCkKIHsKICAgICBpZiAobUNibGsgIT0gTlVMTCkgewogICAgICAgICBzcDxUaHJlYWRCYXNlPiBiYXNlVGhyZWFkID0gdGhyZWFkLnByb21vdGUoKTsKICAgICAgICAgaWYgKGJhc2VUaHJlYWQgIT0gMCkgewogICAgICAgICAgICAgUGxheWJhY2tUaHJlYWQgKnBsYXliYWNrVGhyZWFkID0gKFBsYXliYWNrVGhyZWFkICopYmFzZVRocmVhZC5nZXQoKTsKICAgICAgICAgICAgIG1OYW1lID0gcGxheWJhY2tUaHJlYWQtPmdldFRyYWNrTmFtZV9sKCk7CisgICAgICAgICAgICBtTWFpbkJ1ZmZlciA9IHBsYXliYWNrVGhyZWFkLT5taXhCdWZmZXIoKTsKICAgICAgICAgfQogICAgICAgICBMT0dWKCJUcmFjayBjb25zdHJ1Y3RvciBuYW1lICVkLCBjYWxsaW5nIHRocmVhZCAlZCIsIG1OYW1lLCBJUENUaHJlYWRTdGF0ZTo6c2VsZigpLT5nZXRDYWxsaW5nUGlkKCkpOwogICAgICAgICBpZiAobU5hbWUgPCAwKSB7CkBAIC0yNTE3LDEyICsyODczLDEzIEBACiAKIHZvaWQgQXVkaW9GbGluZ2VyOjpQbGF5YmFja1RocmVhZDo6VHJhY2s6OmR1bXAoY2hhciogYnVmZmVyLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBzbnByaW50ZihidWZmZXIsIHNpemUsICIgICU1ZCAlNWQgJTN1ICUzdSAlM3UgJTA0dSAlMWQgJTFkICUxZCAlNXUgJTV1ICU1dSAgJTA4eCAlMDh4XG4iLAorICAgIHNucHJpbnRmKGJ1ZmZlciwgc2l6ZSwgIiAgICUwNWQgJTA1ZCAlMDN1ICUwM3UgJTAzdSAlMDV1ICAgJTA0dSAlMWQgJTFkICUxZCAlMDV1ICUwNXUgJTA1dSAgMHglMDh4IDB4JTA4eCAweCUwOHggMHglMDh4XG4iLAogICAgICAgICAgICAgbU5hbWUgLSBBdWRpb01peGVyOjpUUkFDSzAsCiAgICAgICAgICAgICAobUNsaWVudCA9PSBOVUxMKSA/IGdldHBpZCgpIDogbUNsaWVudC0+cGlkKCksCiAgICAgICAgICAgICBtU3RyZWFtVHlwZSwKICAgICAgICAgICAgIG1Gb3JtYXQsCi0gICAgICAgICAgICBtQ2Jsay0+Y2hhbm5lbHMsCisgICAgICAgICAgICBtQ2Jsay0+Y2hhbm5lbENvdW50LAorICAgICAgICAgICAgbVNlc3Npb25JZCwKICAgICAgICAgICAgIG1GcmFtZUNvdW50LAogICAgICAgICAgICAgbVN0YXRlLAogICAgICAgICAgICAgbU11dGUsCkBAIC0yNTMxLDcgKzI4ODgsOSBAQAogICAgICAgICAgICAgbUNibGstPnZvbHVtZVswXSwKICAgICAgICAgICAgIG1DYmxrLT52b2x1bWVbMV0sCiAgICAgICAgICAgICBtQ2Jsay0+c2VydmVyLAotICAgICAgICAgICAgbUNibGstPnVzZXIpOworICAgICAgICAgICAgbUNibGstPnVzZXIsCisgICAgICAgICAgICAoaW50KW1NYWluQnVmZmVyLAorICAgICAgICAgICAgKGludCltQXV4QnVmZmVyKTsKIH0KIAogc3RhdHVzX3QgQXVkaW9GbGluZ2VyOjpQbGF5YmFja1RocmVhZDo6VHJhY2s6OmdldE5leHRCdWZmZXIoQXVkaW9CdWZmZXJQcm92aWRlcjo6QnVmZmVyKiBidWZmZXIpCkBAIC0yNTc5LDkgKzI5MzgsOSBAQAogICAgIGlmIChtRmlsbGluZ1VwU3RhdHVzICE9IEZTX0ZJTExJTkcpIHJldHVybiB0cnVlOwogCiAgICAgaWYgKG1DYmxrLT5mcmFtZXNSZWFkeSgpID49IG1DYmxrLT5mcmFtZUNvdW50IHx8Ci0gICAgICAgIG1DYmxrLT5mb3JjZVJlYWR5KSB7CisgICAgICAgICAgICAobUNibGstPmZsYWdzICYgQ0JMS19GT1JDRVJFQURZX01TSykpIHsKICAgICAgICAgbUZpbGxpbmdVcFN0YXR1cyA9IEZTX0ZJTExFRDsKLSAgICAgICAgbUNibGstPmZvcmNlUmVhZHkgPSAwOworICAgICAgICBtQ2Jsay0+ZmxhZ3MgJj0gfkNCTEtfRk9SQ0VSRUFEWV9NU0s7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNjk2LDggKzMwNTUsOCBAQAogICAgICAgICBUcmFja0Jhc2U6OnJlc2V0KCk7CiAgICAgICAgIC8vIEZvcmNlIHVuZGVycnVuIGNvbmRpdGlvbiB0byBhdm9pZCBmYWxzZSB1bmRlcnJ1biBjYWxsYmFjayB1bnRpbCBmaXJzdCBkYXRhIGlzCiAgICAgICAgIC8vIHdyaXR0ZW4gdG8gYnVmZmVyCi0gICAgICAgIG1DYmxrLT5mbG93Q29udHJvbEZsYWcgPSAxOwotICAgICAgICBtQ2Jsay0+Zm9yY2VSZWFkeSA9IDA7CisgICAgICAgIG1DYmxrLT5mbGFncyB8PSBDQkxLX1VOREVSUlVOX09OOworICAgICAgICBtQ2Jsay0+ZmxhZ3MgJj0gfkNCTEtfRk9SQ0VSRUFEWV9NU0s7CiAgICAgICAgIG1GaWxsaW5nVXBTdGF0dXMgPSBGU19GSUxMSU5HOwogICAgICAgICBtUmVzZXREb25lID0gdHJ1ZTsKICAgICB9CkBAIC0yNzE0LDYgKzMwNzMsMjMgQEAKICAgICBtVm9sdW1lWzFdID0gcmlnaHQ7CiB9CiAKK3N0YXR1c190IEF1ZGlvRmxpbmdlcjo6UGxheWJhY2tUaHJlYWQ6OlRyYWNrOjphdHRhY2hBdXhFZmZlY3QoaW50IEVmZmVjdElkKQoreworICAgIHN0YXR1c190IHN0YXR1cyA9IERFQURfT0JKRUNUOworICAgIHNwPFRocmVhZEJhc2U+IHRocmVhZCA9IG1UaHJlYWQucHJvbW90ZSgpOworICAgIGlmICh0aHJlYWQgIT0gMCkgeworICAgICAgIFBsYXliYWNrVGhyZWFkICpwbGF5YmFja1RocmVhZCA9IChQbGF5YmFja1RocmVhZCAqKXRocmVhZC5nZXQoKTsKKyAgICAgICBzdGF0dXMgPSBwbGF5YmFja1RocmVhZC0+YXR0YWNoQXV4RWZmZWN0KHRoaXMsIEVmZmVjdElkKTsKKyAgICB9CisgICAgcmV0dXJuIHN0YXR1czsKK30KKwordm9pZCBBdWRpb0ZsaW5nZXI6OlBsYXliYWNrVGhyZWFkOjpUcmFjazo6c2V0QXV4QnVmZmVyKGludCBFZmZlY3RJZCwgaW50MzJfdCAqYnVmZmVyKQoreworICAgIG1BdXhFZmZlY3RJZCA9IEVmZmVjdElkOworICAgIG1BdXhCdWZmZXIgPSBidWZmZXI7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogLy8gUmVjb3JkVHJhY2sgY29uc3RydWN0b3IgbXVzdCBiZSBjYWxsZWQgd2l0aCBBdWRpb0ZsaW5nZXI6Om1Mb2NrIGhlbGQKQEAgLTI3MjQsOSArMzEwMCwxMCBAQAogICAgICAgICAgICAgaW50IGZvcm1hdCwKICAgICAgICAgICAgIGludCBjaGFubmVsQ291bnQsCiAgICAgICAgICAgICBpbnQgZnJhbWVDb3VudCwKLSAgICAgICAgICAgIHVpbnQzMl90IGZsYWdzKQorICAgICAgICAgICAgdWludDMyX3QgZmxhZ3MsCisgICAgICAgICAgICBpbnQgc2Vzc2lvbklkKQogICAgIDogICBUcmFja0Jhc2UodGhyZWFkLCBjbGllbnQsIHNhbXBsZVJhdGUsIGZvcm1hdCwKLSAgICAgICAgICAgICAgICAgIGNoYW5uZWxDb3VudCwgZnJhbWVDb3VudCwgZmxhZ3MsIDApLAorICAgICAgICAgICAgICAgICAgY2hhbm5lbENvdW50LCBmcmFtZUNvdW50LCBmbGFncywgMCwgc2Vzc2lvbklkKSwKICAgICAgICAgbU92ZXJmbG93KGZhbHNlKQogewogICAgIGlmIChtQ2JsayAhPSBOVUxMKSB7CkBAIC0yODA4LDE2ICszMTg1LDE3IEBACiAgICAgICAgIFRyYWNrQmFzZTo6cmVzZXQoKTsKICAgICAgICAgLy8gRm9yY2Ugb3ZlcmVycnVuIGNvbmRpdGlvbiB0byBhdm9pZCBmYWxzZSBvdmVycnVuIGNhbGxiYWNrIHVudGlsIGZpcnN0IGRhdGEgaXMKICAgICAgICAgLy8gcmVhZCBmcm9tIGJ1ZmZlcgotICAgICAgICBtQ2Jsay0+Zmxvd0NvbnRyb2xGbGFnID0gMTsKKyAgICAgICAgbUNibGstPmZsYWdzIHw9IENCTEtfVU5ERVJSVU5fT047CiAgICAgfQogfQogCiB2b2lkIEF1ZGlvRmxpbmdlcjo6UmVjb3JkVGhyZWFkOjpSZWNvcmRUcmFjazo6ZHVtcChjaGFyKiBidWZmZXIsIHNpemVfdCBzaXplKQogewotICAgIHNucHJpbnRmKGJ1ZmZlciwgc2l6ZSwgIiAgICUwNWQgJTAzdSAlMDN1ICUwNHUgJTAxZCAlMDV1ICAlMDh4ICUwOHhcbiIsCisgICAgc25wcmludGYoYnVmZmVyLCBzaXplLCAiICAgJTA1ZCAlMDN1ICUwM3UgJTA1ZCAgICUwNHUgJTAxZCAlMDV1ICAlMDh4ICUwOHhcbiIsCiAgICAgICAgICAgICAobUNsaWVudCA9PSBOVUxMKSA/IGdldHBpZCgpIDogbUNsaWVudC0+cGlkKCksCiAgICAgICAgICAgICBtRm9ybWF0LAotICAgICAgICAgICAgbUNibGstPmNoYW5uZWxzLAorICAgICAgICAgICAgbUNibGstPmNoYW5uZWxDb3VudCwKKyAgICAgICAgICAgIG1TZXNzaW9uSWQsCiAgICAgICAgICAgICBtRnJhbWVDb3VudCwKICAgICAgICAgICAgIG1TdGF0ZSwKICAgICAgICAgICAgIG1DYmxrLT5zYW1wbGVSYXRlLApAQCAtMjgzNSwxOSArMzIxMywxOSBAQAogICAgICAgICAgICAgaW50IGZvcm1hdCwKICAgICAgICAgICAgIGludCBjaGFubmVsQ291bnQsCiAgICAgICAgICAgICBpbnQgZnJhbWVDb3VudCkKLSAgICA6ICAgVHJhY2sodGhyZWFkLCBOVUxMLCBBdWRpb1N5c3RlbTo6TlVNX1NUUkVBTV9UWVBFUywgc2FtcGxlUmF0ZSwgZm9ybWF0LCBjaGFubmVsQ291bnQsIGZyYW1lQ291bnQsIE5VTEwpLAorICAgIDogICBUcmFjayh0aHJlYWQsIE5VTEwsIEF1ZGlvU3lzdGVtOjpOVU1fU1RSRUFNX1RZUEVTLCBzYW1wbGVSYXRlLCBmb3JtYXQsIGNoYW5uZWxDb3VudCwgZnJhbWVDb3VudCwgTlVMTCwgMCksCiAgICAgbUFjdGl2ZShmYWxzZSksIG1Tb3VyY2VUaHJlYWQoc291cmNlVGhyZWFkKQogewogCiAgICAgUGxheWJhY2tUaHJlYWQgKnBsYXliYWNrVGhyZWFkID0gKFBsYXliYWNrVGhyZWFkICopdGhyZWFkLnVuc2FmZV9nZXQoKTsKICAgICBpZiAobUNibGsgIT0gTlVMTCkgewotICAgICAgICBtQ2Jsay0+b3V0ID0gMTsKKyAgICAgICAgbUNibGstPmZsYWdzIHw9IENCTEtfRElSRUNUSU9OX09VVDsKICAgICAgICAgbUNibGstPmJ1ZmZlcnMgPSAoY2hhciopbUNibGsgKyBzaXplb2YoYXVkaW9fdHJhY2tfY2Jsa190KTsKICAgICAgICAgbUNibGstPnZvbHVtZVswXSA9IG1DYmxrLT52b2x1bWVbMV0gPSAweDEwMDA7CiAgICAgICAgIG1PdXRCdWZmZXIuZnJhbWVDb3VudCA9IDA7CiAgICAgICAgIHBsYXliYWNrVGhyZWFkLT5tVHJhY2tzLmFkZCh0aGlzKTsKLSAgICAgICAgTE9HVigiT3V0cHV0VHJhY2sgY29uc3RydWN0b3IgbUNibGsgJXAsIG1CdWZmZXIgJXAsIG1DYmxrLT5idWZmZXJzICVwLCBtQ2Jsay0+ZnJhbWVDb3VudCAlZCwgbUNibGstPnNhbXBsZVJhdGUgJWQsIG1DYmxrLT5jaGFubmVscyAlZCBtQnVmZmVyRW5kICVwIiwKLSAgICAgICAgICAgICAgICBtQ2JsaywgbUJ1ZmZlciwgbUNibGstPmJ1ZmZlcnMsIG1DYmxrLT5mcmFtZUNvdW50LCBtQ2Jsay0+c2FtcGxlUmF0ZSwgbUNibGstPmNoYW5uZWxzLCBtQnVmZmVyRW5kKTsKKyAgICAgICAgTE9HVigiT3V0cHV0VHJhY2sgY29uc3RydWN0b3IgbUNibGsgJXAsIG1CdWZmZXIgJXAsIG1DYmxrLT5idWZmZXJzICVwLCBtQ2Jsay0+ZnJhbWVDb3VudCAlZCwgbUNibGstPnNhbXBsZVJhdGUgJWQsIG1DYmxrLT5jaGFubmVsQ291bnQgJWQgbUJ1ZmZlckVuZCAlcCIsCisgICAgICAgICAgICAgICAgbUNibGssIG1CdWZmZXIsIG1DYmxrLT5idWZmZXJzLCBtQ2Jsay0+ZnJhbWVDb3VudCwgbUNibGstPnNhbXBsZVJhdGUsIG1DYmxrLT5jaGFubmVsQ291bnQsIG1CdWZmZXJFbmQpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIExPR1coIkVycm9yIGNyZWF0aW5nIG91dHB1dCB0cmFjayBvbiB0aHJlYWQgJXAiLCBwbGF5YmFja1RocmVhZCk7CiAgICAgfQpAQCAtMjg4Miw3ICszMjYwLDcgQEAKIHsKICAgICBCdWZmZXIgKnBJbkJ1ZmZlcjsKICAgICBCdWZmZXIgaW5CdWZmZXI7Ci0gICAgdWludDMyX3QgY2hhbm5lbHMgPSBtQ2Jsay0+Y2hhbm5lbHM7CisgICAgdWludDMyX3QgY2hhbm5lbENvdW50ID0gbUNibGstPmNoYW5uZWxDb3VudDsKICAgICBib29sIG91dHB1dEJ1ZmZlckZ1bGwgPSBmYWxzZTsKICAgICBpbkJ1ZmZlci5mcmFtZUNvdW50ID0gZnJhbWVzOwogICAgIGluQnVmZmVyLmkxNiA9IGRhdGE7CkBAIC0yODk4LDEwICszMjc2LDEwIEBACiAgICAgICAgICAgICAgICAgaWYgKG1CdWZmZXJRdWV1ZS5zaXplKCkgPCBrTWF4T3ZlckZsb3dCdWZmZXJzKSB7CiAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHN0YXJ0RnJhbWVzID0gKG1DYmxrLT5mcmFtZUNvdW50IC0gZnJhbWVzKTsKICAgICAgICAgICAgICAgICAgICAgcEluQnVmZmVyID0gbmV3IEJ1ZmZlcjsKLSAgICAgICAgICAgICAgICAgICAgcEluQnVmZmVyLT5tQnVmZmVyID0gbmV3IGludDE2X3Rbc3RhcnRGcmFtZXMgKiBjaGFubmVsc107CisgICAgICAgICAgICAgICAgICAgIHBJbkJ1ZmZlci0+bUJ1ZmZlciA9IG5ldyBpbnQxNl90W3N0YXJ0RnJhbWVzICogY2hhbm5lbENvdW50XTsKICAgICAgICAgICAgICAgICAgICAgcEluQnVmZmVyLT5mcmFtZUNvdW50ID0gc3RhcnRGcmFtZXM7CiAgICAgICAgICAgICAgICAgICAgIHBJbkJ1ZmZlci0+aTE2ID0gcEluQnVmZmVyLT5tQnVmZmVyOwotICAgICAgICAgICAgICAgICAgICBtZW1zZXQocEluQnVmZmVyLT5yYXcsIDAsIHN0YXJ0RnJhbWVzICogY2hhbm5lbHMgKiBzaXplb2YoaW50MTZfdCkpOworICAgICAgICAgICAgICAgICAgICBtZW1zZXQocEluQnVmZmVyLT5yYXcsIDAsIHN0YXJ0RnJhbWVzICogY2hhbm5lbENvdW50ICogc2l6ZW9mKGludDE2X3QpKTsKICAgICAgICAgICAgICAgICAgICAgbUJ1ZmZlclF1ZXVlLmFkZChwSW5CdWZmZXIpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIExPR1cgKCJPdXRwdXRUcmFjazo6d3JpdGUoKSAlcCBubyBtb3JlIGJ1ZmZlcnMgaW4gcXVldWUiLCB0aGlzKTsKQEAgLTI5MzksMTIgKzMzMTcsMTIgQEAKICAgICAgICAgfQogCiAgICAgICAgIHVpbnQzMl90IG91dEZyYW1lcyA9IHBJbkJ1ZmZlci0+ZnJhbWVDb3VudCA+IG1PdXRCdWZmZXIuZnJhbWVDb3VudCA/IG1PdXRCdWZmZXIuZnJhbWVDb3VudCA6IHBJbkJ1ZmZlci0+ZnJhbWVDb3VudDsKLSAgICAgICAgbWVtY3B5KG1PdXRCdWZmZXIucmF3LCBwSW5CdWZmZXItPnJhdywgb3V0RnJhbWVzICogY2hhbm5lbHMgKiBzaXplb2YoaW50MTZfdCkpOworICAgICAgICBtZW1jcHkobU91dEJ1ZmZlci5yYXcsIHBJbkJ1ZmZlci0+cmF3LCBvdXRGcmFtZXMgKiBjaGFubmVsQ291bnQgKiBzaXplb2YoaW50MTZfdCkpOwogICAgICAgICBtQ2Jsay0+c3RlcFVzZXIob3V0RnJhbWVzKTsKICAgICAgICAgcEluQnVmZmVyLT5mcmFtZUNvdW50IC09IG91dEZyYW1lczsKLSAgICAgICAgcEluQnVmZmVyLT5pMTYgKz0gb3V0RnJhbWVzICogY2hhbm5lbHM7CisgICAgICAgIHBJbkJ1ZmZlci0+aTE2ICs9IG91dEZyYW1lcyAqIGNoYW5uZWxDb3VudDsKICAgICAgICAgbU91dEJ1ZmZlci5mcmFtZUNvdW50IC09IG91dEZyYW1lczsKLSAgICAgICAgbU91dEJ1ZmZlci5pMTYgKz0gb3V0RnJhbWVzICogY2hhbm5lbHM7CisgICAgICAgIG1PdXRCdWZmZXIuaTE2ICs9IG91dEZyYW1lcyAqIGNoYW5uZWxDb3VudDsKIAogICAgICAgICBpZiAocEluQnVmZmVyLT5mcmFtZUNvdW50ID09IDApIHsKICAgICAgICAgICAgIGlmIChtQnVmZmVyUXVldWUuc2l6ZSgpKSB7CkBAIC0yOTY0LDEwICszMzQyLDEwIEBACiAgICAgICAgIGlmICh0aHJlYWQgIT0gMCAmJiAhdGhyZWFkLT5zdGFuZGJ5KCkpIHsKICAgICAgICAgICAgIGlmIChtQnVmZmVyUXVldWUuc2l6ZSgpIDwga01heE92ZXJGbG93QnVmZmVycykgewogICAgICAgICAgICAgICAgIHBJbkJ1ZmZlciA9IG5ldyBCdWZmZXI7Ci0gICAgICAgICAgICAgICAgcEluQnVmZmVyLT5tQnVmZmVyID0gbmV3IGludDE2X3RbaW5CdWZmZXIuZnJhbWVDb3VudCAqIGNoYW5uZWxzXTsKKyAgICAgICAgICAgICAgICBwSW5CdWZmZXItPm1CdWZmZXIgPSBuZXcgaW50MTZfdFtpbkJ1ZmZlci5mcmFtZUNvdW50ICogY2hhbm5lbENvdW50XTsKICAgICAgICAgICAgICAgICBwSW5CdWZmZXItPmZyYW1lQ291bnQgPSBpbkJ1ZmZlci5mcmFtZUNvdW50OwogICAgICAgICAgICAgICAgIHBJbkJ1ZmZlci0+aTE2ID0gcEluQnVmZmVyLT5tQnVmZmVyOwotICAgICAgICAgICAgICAgIG1lbWNweShwSW5CdWZmZXItPnJhdywgaW5CdWZmZXIucmF3LCBpbkJ1ZmZlci5mcmFtZUNvdW50ICogY2hhbm5lbHMgKiBzaXplb2YoaW50MTZfdCkpOworICAgICAgICAgICAgICAgIG1lbWNweShwSW5CdWZmZXItPnJhdywgaW5CdWZmZXIucmF3LCBpbkJ1ZmZlci5mcmFtZUNvdW50ICogY2hhbm5lbENvdW50ICogc2l6ZW9mKGludDE2X3QpKTsKICAgICAgICAgICAgICAgICBtQnVmZmVyUXVldWUuYWRkKHBJbkJ1ZmZlcik7CiAgICAgICAgICAgICAgICAgTE9HVigiT3V0cHV0VHJhY2s6OndyaXRlKCkgJXAgdGhyZWFkICVwIGFkZGluZyBvdmVyZmxvdyBidWZmZXIgJWQiLCB0aGlzLCBtVGhyZWFkLnVuc2FmZV9nZXQoKSwgbUJ1ZmZlclF1ZXVlLnNpemUoKSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMjk4MywxMCArMzM2MSwxMCBAQAogICAgICAgICBpZiAobUNibGstPnVzZXIgPCBtQ2Jsay0+ZnJhbWVDb3VudCkgewogICAgICAgICAgICAgZnJhbWVzID0gbUNibGstPmZyYW1lQ291bnQgLSBtQ2Jsay0+dXNlcjsKICAgICAgICAgICAgIHBJbkJ1ZmZlciA9IG5ldyBCdWZmZXI7Ci0gICAgICAgICAgICBwSW5CdWZmZXItPm1CdWZmZXIgPSBuZXcgaW50MTZfdFtmcmFtZXMgKiBjaGFubmVsc107CisgICAgICAgICAgICBwSW5CdWZmZXItPm1CdWZmZXIgPSBuZXcgaW50MTZfdFtmcmFtZXMgKiBjaGFubmVsQ291bnRdOwogICAgICAgICAgICAgcEluQnVmZmVyLT5mcmFtZUNvdW50ID0gZnJhbWVzOwogICAgICAgICAgICAgcEluQnVmZmVyLT5pMTYgPSBwSW5CdWZmZXItPm1CdWZmZXI7Ci0gICAgICAgICAgICBtZW1zZXQocEluQnVmZmVyLT5yYXcsIDAsIGZyYW1lcyAqIGNoYW5uZWxzICogc2l6ZW9mKGludDE2X3QpKTsKKyAgICAgICAgICAgIG1lbXNldChwSW5CdWZmZXItPnJhdywgMCwgZnJhbWVzICogY2hhbm5lbENvdW50ICogc2l6ZW9mKGludDE2X3QpKTsKICAgICAgICAgICAgIG1CdWZmZXJRdWV1ZS5hZGQocEluQnVmZmVyKTsKICAgICAgICAgfSBlbHNlIGlmIChtQWN0aXZlKSB7CiAgICAgICAgICAgICBzdG9wKCk7CkBAIC0zMDg2LDYgKzM0NjQsMjggQEAKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCitBdWRpb0ZsaW5nZXI6Ok5vdGlmaWNhdGlvbkNsaWVudDo6Tm90aWZpY2F0aW9uQ2xpZW50KGNvbnN0IHNwPEF1ZGlvRmxpbmdlcj4mIGF1ZGlvRmxpbmdlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3A8SUF1ZGlvRmxpbmdlckNsaWVudD4mIGNsaWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlkX3QgcGlkKQorICAgIDogbUF1ZGlvRmxpbmdlcihhdWRpb0ZsaW5nZXIpLCBtUGlkKHBpZCksIG1DbGllbnQoY2xpZW50KQoreworfQorCitBdWRpb0ZsaW5nZXI6Ok5vdGlmaWNhdGlvbkNsaWVudDo6fk5vdGlmaWNhdGlvbkNsaWVudCgpCit7CisgICAgbUNsaWVudC5jbGVhcigpOworfQorCit2b2lkIEF1ZGlvRmxpbmdlcjo6Tm90aWZpY2F0aW9uQ2xpZW50OjpiaW5kZXJEaWVkKGNvbnN0IHdwPElCaW5kZXI+JiB3aG8pCit7CisgICAgc3A8Tm90aWZpY2F0aW9uQ2xpZW50PiBrZWVwKHRoaXMpOworICAgIHsKKyAgICAgICAgbUF1ZGlvRmxpbmdlci0+cmVtb3ZlTm90aWZpY2F0aW9uQ2xpZW50KG1QaWQpOworICAgIH0KK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCiBBdWRpb0ZsaW5nZXI6OlRyYWNrSGFuZGxlOjpUcmFja0hhbmRsZShjb25zdCBzcDxBdWRpb0ZsaW5nZXI6OlBsYXliYWNrVGhyZWFkOjpUcmFjaz4mIHRyYWNrKQogICAgIDogQm5BdWRpb1RyYWNrKCksCiAgICAgICBtVHJhY2sodHJhY2spCkBAIC0zMTI4LDYgKzM1MjgsMTEgQEAKICAgICByZXR1cm4gbVRyYWNrLT5nZXRDYmxrKCk7CiB9CiAKK3N0YXR1c190IEF1ZGlvRmxpbmdlcjo6VHJhY2tIYW5kbGU6OmF0dGFjaEF1eEVmZmVjdChpbnQgRWZmZWN0SWQpCit7CisgICAgcmV0dXJuIG1UcmFjay0+YXR0YWNoQXV4RWZmZWN0KEVmZmVjdElkKTsKK30KKwogc3RhdHVzX3QgQXVkaW9GbGluZ2VyOjpUcmFja0hhbmRsZTo6b25UcmFuc2FjdCgKICAgICB1aW50MzJfdCBjb2RlLCBjb25zdCBQYXJjZWwmIGRhdGEsIFBhcmNlbCogcmVwbHksIHVpbnQzMl90IGZsYWdzKQogewpAQCAtMzE0NCw2ICszNTQ5LDcgQEAKICAgICAgICAgaW50IGNoYW5uZWxDb3VudCwKICAgICAgICAgaW50IGZyYW1lQ291bnQsCiAgICAgICAgIHVpbnQzMl90IGZsYWdzLAorICAgICAgICBpbnQgKnNlc3Npb25JZCwKICAgICAgICAgc3RhdHVzX3QgKnN0YXR1cykKIHsKICAgICBzcDxSZWNvcmRUaHJlYWQ6OlJlY29yZFRyYWNrPiByZWNvcmRUcmFjazsKQEAgLTMxNTMsNiArMzU1OSw3IEBACiAgICAgc3RhdHVzX3QgbFN0YXR1czsKICAgICBSZWNvcmRUaHJlYWQgKnRocmVhZDsKICAgICBzaXplX3QgaW5GcmFtZUNvdW50OworICAgIGludCBsU2Vzc2lvbklkOwogCiAgICAgLy8gY2hlY2sgY2FsbGluZyBwZXJtaXNzaW9ucwogICAgIGlmICghcmVjb3JkaW5nQWxsb3dlZCgpKSB7CkBAIC0zMTc3LDkgKzM1ODQsMTggQEAKICAgICAgICAgICAgIG1DbGllbnRzLmFkZChwaWQsIGNsaWVudCk7CiAgICAgICAgIH0KIAorICAgICAgICAvLyBJZiBubyBhdWRpbyBzZXNzaW9uIGlkIGlzIHByb3ZpZGVkLCBjcmVhdGUgb25lIGhlcmUKKyAgICAgICAgaWYgKHNlc3Npb25JZCAhPSBOVUxMICYmICpzZXNzaW9uSWQgIT0gMCkgeworICAgICAgICAgICAgbFNlc3Npb25JZCA9ICpzZXNzaW9uSWQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsU2Vzc2lvbklkID0gbmV4dFVuaXF1ZUlkKCk7CisgICAgICAgICAgICBpZiAoc2Vzc2lvbklkICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAqc2Vzc2lvbklkID0gbFNlc3Npb25JZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICAvLyBjcmVhdGUgbmV3IHJlY29yZCB0cmFjay4gVGhlIHJlY29yZCB0cmFjayB1c2VzIG9uZSB0cmFjayBpbiBtSGFyZHdhcmVNaXhlclRocmVhZCBieSBjb252ZW50aW9uLgogICAgICAgICByZWNvcmRUcmFjayA9IG5ldyBSZWNvcmRUaHJlYWQ6OlJlY29yZFRyYWNrKHRocmVhZCwgY2xpZW50LCBzYW1wbGVSYXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0LCBjaGFubmVsQ291bnQsIGZyYW1lQ291bnQsIGZsYWdzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdCwgY2hhbm5lbENvdW50LCBmcmFtZUNvdW50LCBmbGFncywgbFNlc3Npb25JZCk7CiAgICAgfQogICAgIGlmIChyZWNvcmRUcmFjay0+Z2V0Q2JsaygpID09IE5VTEwpIHsKICAgICAgICAgLy8gcmVtb3ZlIGxvY2FsIHN0cm9uZyByZWZlcmVuY2UgdG8gQ2xpZW50IGJlZm9yZSBkZWxldGluZyB0aGUgUmVjb3JkVHJhY2sgc28gdGhhdCB0aGUgQ2xpZW50CkBAIC0zMjQyLDcgKzM2NTgsNiBAQAogICAgIG1SZXFDaGFubmVsQ291bnQgPSBBdWRpb1N5c3RlbTo6cG9wQ291bnQoY2hhbm5lbHMpOwogICAgIG1SZXFTYW1wbGVSYXRlID0gc2FtcGxlUmF0ZTsKICAgICByZWFkSW5wdXRQYXJhbWV0ZXJzKCk7Ci0gICAgc2VuZENvbmZpZ0V2ZW50KEF1ZGlvU3lzdGVtOjpJTlBVVF9PUEVORUQpOwogfQogCiAKQEAgLTMzMzksNyArMzc1NCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lc0luID0gZnJhbWVzT3V0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Sc21wSW5JbmRleCArPSBmcmFtZXNJbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZXNPdXQgLT0gZnJhbWVzSW47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1DaGFubmVsQ291bnQgPT0gbVJlcUNoYW5uZWxDb3VudCB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoaW50KW1DaGFubmVsQ291bnQgPT0gbVJlcUNoYW5uZWxDb3VudCB8fAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtRm9ybWF0ICE9IEF1ZGlvU3lzdGVtOjpQQ01fMTZfQklUKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbWNweShkc3QsIHNyYywgZnJhbWVzSW4gKiBtRnJhbWVTaXplKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMzM2MCw3ICszNzc1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmcmFtZXNPdXQgJiYgbUZyYW1lQ291bnQgPT0gbVJzbXBJbkluZGV4KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZyYW1lc091dCA9PSBtRnJhbWVDb3VudCAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobUNoYW5uZWxDb3VudCA9PSBtUmVxQ2hhbm5lbENvdW50IHx8IG1Gb3JtYXQgIT0gQXVkaW9TeXN0ZW06OlBDTV8xNl9CSVQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoaW50KW1DaGFubmVsQ291bnQgPT0gbVJlcUNoYW5uZWxDb3VudCB8fCBtRm9ybWF0ICE9IEF1ZGlvU3lzdGVtOjpQQ01fMTZfQklUKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQnl0ZXNSZWFkID0gbUlucHV0LT5yZWFkKGJ1ZmZlci5yYXcsIG1JbnB1dEJ5dGVzKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVzT3V0ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMzUxOCw3ICszOTMzLDcgQEAKIAogICAgIGlmIChtQWN0aXZlVHJhY2sgIT0gMCkgewogICAgICAgICByZXN1bHQuYXBwZW5kKCJBY3RpdmUgVHJhY2s6XG4iKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZCgiICAgQ2xpZW4gRm10IENobiBCdWYgIFMgU1JhdGUgIFNlcnYgICAgIFVzZXJcbiIpOworICAgICAgICByZXN1bHQuYXBwZW5kKCIgICBDbGllbiBGbXQgQ2huIFNlc3Npb24gQnVmICBTIFNSYXRlICBTZXJ2ICAgICBVc2VyXG4iKTsKICAgICAgICAgbUFjdGl2ZVRyYWNrLT5kdW1wKGJ1ZmZlciwgU0laRSk7CiAgICAgICAgIHJlc3VsdC5hcHBlbmQoYnVmZmVyKTsKIApAQCAtMzY1NywxNCArNDA3MiwxNCBAQAogICAgIHJldHVybiBtSW5wdXQtPmdldFBhcmFtZXRlcnMoa2V5cyk7CiB9CiAKLXZvaWQgQXVkaW9GbGluZ2VyOjpSZWNvcmRUaHJlYWQ6OmF1ZGlvQ29uZmlnQ2hhbmdlZChpbnQgZXZlbnQsIGludCBwYXJhbSkgewordm9pZCBBdWRpb0ZsaW5nZXI6OlJlY29yZFRocmVhZDo6YXVkaW9Db25maWdDaGFuZ2VkX2woaW50IGV2ZW50LCBpbnQgcGFyYW0pIHsKICAgICBBdWRpb1N5c3RlbTo6T3V0cHV0RGVzY3JpcHRvciBkZXNjOwogICAgIHZvaWQgKnBhcmFtMiA9IDA7CiAKICAgICBzd2l0Y2ggKGV2ZW50KSB7CiAgICAgY2FzZSBBdWRpb1N5c3RlbTo6SU5QVVRfT1BFTkVEOgogICAgIGNhc2UgQXVkaW9TeXN0ZW06OklOUFVUX0NPTkZJR19DSEFOR0VEOgotICAgICAgICBkZXNjLmNoYW5uZWxzID0gbUNoYW5uZWxDb3VudDsKKyAgICAgICAgZGVzYy5jaGFubmVscyA9IG1DaGFubmVsczsKICAgICAgICAgZGVzYy5zYW1wbGluZ1JhdGUgPSBtU2FtcGxlUmF0ZTsKICAgICAgICAgZGVzYy5mb3JtYXQgPSBtRm9ybWF0OwogICAgICAgICBkZXNjLmZyYW1lQ291bnQgPSBtRnJhbWVDb3VudDsKQEAgLTM2NzYsNyArNDA5MSw2IEBACiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQotICAgIE11dGV4OjpBdXRvbG9jayBfbChtQXVkaW9GbGluZ2VyLT5tTG9jayk7CiAgICAgbUF1ZGlvRmxpbmdlci0+YXVkaW9Db25maWdDaGFuZ2VkX2woZXZlbnQsIG1JZCwgcGFyYW0yKTsKIH0KIApAQCAtMzY4OCw5ICs0MTAyLDEwIEBACiAgICAgbVJlc2FtcGxlciA9IDA7CiAKICAgICBtU2FtcGxlUmF0ZSA9IG1JbnB1dC0+c2FtcGxlUmF0ZSgpOwotICAgIG1DaGFubmVsQ291bnQgPSBBdWRpb1N5c3RlbTo6cG9wQ291bnQobUlucHV0LT5jaGFubmVscygpKTsKKyAgICBtQ2hhbm5lbHMgPSBtSW5wdXQtPmNoYW5uZWxzKCk7CisgICAgbUNoYW5uZWxDb3VudCA9ICh1aW50MTZfdClBdWRpb1N5c3RlbTo6cG9wQ291bnQobUNoYW5uZWxzKTsKICAgICBtRm9ybWF0ID0gbUlucHV0LT5mb3JtYXQoKTsKLSAgICBtRnJhbWVTaXplID0gbUlucHV0LT5mcmFtZVNpemUoKTsKKyAgICBtRnJhbWVTaXplID0gKHVpbnQxNl90KW1JbnB1dC0+ZnJhbWVTaXplKCk7CiAgICAgbUlucHV0Qnl0ZXMgPSBtSW5wdXQtPmJ1ZmZlclNpemUoKTsKICAgICBtRnJhbWVDb3VudCA9IG1JbnB1dEJ5dGVzIC8gbUZyYW1lU2l6ZTsKICAgICBtUnNtcEluQnVmZmVyID0gbmV3IGludDE2X3RbbUZyYW1lQ291bnQgKiBtQ2hhbm5lbENvdW50XTsKQEAgLTM3NjcsMTQgKzQxODIsMTUgQEAKIAogICAgIG1IYXJkd2FyZVN0YXR1cyA9IEFVRElPX0hXX0lETEU7CiAgICAgaWYgKG91dHB1dCAhPSAwKSB7CisgICAgICAgIGludCBpZCA9IG5leHRVbmlxdWVJZCgpOwogICAgICAgICBpZiAoKGZsYWdzICYgQXVkaW9TeXN0ZW06Ok9VVFBVVF9GTEFHX0RJUkVDVCkgfHwKICAgICAgICAgICAgIChmb3JtYXQgIT0gQXVkaW9TeXN0ZW06OlBDTV8xNl9CSVQpIHx8CiAgICAgICAgICAgICAoY2hhbm5lbHMgIT0gQXVkaW9TeXN0ZW06OkNIQU5ORUxfT1VUX1NURVJFTykpIHsKLSAgICAgICAgICAgIHRocmVhZCA9IG5ldyBEaXJlY3RPdXRwdXRUaHJlYWQodGhpcywgb3V0cHV0LCArK21OZXh0VGhyZWFkSWQpOwotICAgICAgICAgICAgTE9HVigib3Blbk91dHB1dCgpIGNyZWF0ZWQgZGlyZWN0IG91dHB1dDogSUQgJWQgdGhyZWFkICVwIiwgbU5leHRUaHJlYWRJZCwgdGhyZWFkKTsKKyAgICAgICAgICAgIHRocmVhZCA9IG5ldyBEaXJlY3RPdXRwdXRUaHJlYWQodGhpcywgb3V0cHV0LCBpZCwgKnBEZXZpY2VzKTsKKyAgICAgICAgICAgIExPR1YoIm9wZW5PdXRwdXQoKSBjcmVhdGVkIGRpcmVjdCBvdXRwdXQ6IElEICVkIHRocmVhZCAlcCIsIGlkLCB0aHJlYWQpOwogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdGhyZWFkID0gbmV3IE1peGVyVGhyZWFkKHRoaXMsIG91dHB1dCwgKyttTmV4dFRocmVhZElkKTsKLSAgICAgICAgICAgIExPR1YoIm9wZW5PdXRwdXQoKSBjcmVhdGVkIG1peGVyIG91dHB1dDogSUQgJWQgdGhyZWFkICVwIiwgbU5leHRUaHJlYWRJZCwgdGhyZWFkKTsKKyAgICAgICAgICAgIHRocmVhZCA9IG5ldyBNaXhlclRocmVhZCh0aGlzLCBvdXRwdXQsIGlkLCAqcERldmljZXMpOworICAgICAgICAgICAgTE9HVigib3Blbk91dHB1dCgpIGNyZWF0ZWQgbWl4ZXIgb3V0cHV0OiBJRCAlZCB0aHJlYWQgJXAiLCBpZCwgdGhyZWFkKTsKIAogI2lmZGVmIExWTVgKICAgICAgICAgICAgIHVuc2lnbmVkIGJpdHNQZXJTYW1wbGUgPQpAQCAtMzc4OCwxNCArNDIwNCwxNiBAQAogI2VuZGlmCiAKICAgICAgICAgfQotICAgICAgICBtUGxheWJhY2tUaHJlYWRzLmFkZChtTmV4dFRocmVhZElkLCB0aHJlYWQpOworICAgICAgICBtUGxheWJhY2tUaHJlYWRzLmFkZChpZCwgdGhyZWFkKTsKIAogICAgICAgICBpZiAocFNhbXBsaW5nUmF0ZSkgKnBTYW1wbGluZ1JhdGUgPSBzYW1wbGluZ1JhdGU7CiAgICAgICAgIGlmIChwRm9ybWF0KSAqcEZvcm1hdCA9IGZvcm1hdDsKICAgICAgICAgaWYgKHBDaGFubmVscykgKnBDaGFubmVscyA9IGNoYW5uZWxzOwogICAgICAgICBpZiAocExhdGVuY3lNcykgKnBMYXRlbmN5TXMgPSB0aHJlYWQtPmxhdGVuY3koKTsKIAotICAgICAgICByZXR1cm4gbU5leHRUaHJlYWRJZDsKKyAgICAgICAgLy8gbm90aWZ5IGNsaWVudCBwcm9jZXNzZXMgb2YgdGhlIG5ldyBvdXRwdXQgY3JlYXRpb24KKyAgICAgICAgdGhyZWFkLT5hdWRpb0NvbmZpZ0NoYW5nZWRfbChBdWRpb1N5c3RlbTo6T1VUUFVUX09QRU5FRCk7CisgICAgICAgIHJldHVybiBpZDsKICAgICB9CiAKICAgICByZXR1cm4gMDsKQEAgLTM4MTIsMTEgKzQyMzAsMTMgQEAKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0KLSAgICBEdXBsaWNhdGluZ1RocmVhZCAqdGhyZWFkID0gbmV3IER1cGxpY2F0aW5nVGhyZWFkKHRoaXMsIHRocmVhZDEsICsrbU5leHRUaHJlYWRJZCk7CisgICAgaW50IGlkID0gbmV4dFVuaXF1ZUlkKCk7CisgICAgRHVwbGljYXRpbmdUaHJlYWQgKnRocmVhZCA9IG5ldyBEdXBsaWNhdGluZ1RocmVhZCh0aGlzLCB0aHJlYWQxLCBpZCk7CiAgICAgdGhyZWFkLT5hZGRPdXRwdXRUcmFjayh0aHJlYWQyKTsKLSAgICBtUGxheWJhY2tUaHJlYWRzLmFkZChtTmV4dFRocmVhZElkLCB0aHJlYWQpOwotICAgIHJldHVybiBtTmV4dFRocmVhZElkOworICAgIG1QbGF5YmFja1RocmVhZHMuYWRkKGlkLCB0aHJlYWQpOworICAgIC8vIG5vdGlmeSBjbGllbnQgcHJvY2Vzc2VzIG9mIHRoZSBuZXcgb3V0cHV0IGNyZWF0aW9uCisgICAgdGhyZWFkLT5hdWRpb0NvbmZpZ0NoYW5nZWRfbChBdWRpb1N5c3RlbTo6T1VUUFVUX09QRU5FRCk7CisgICAgcmV0dXJuIGlkOwogfQogCiBzdGF0dXNfdCBBdWRpb0ZsaW5nZXI6OmNsb3NlT3V0cHV0KGludCBvdXRwdXQpCkBAIC0zOTM1LDE3ICs0MzU1LDIwIEBACiAgICAgfQogCiAgICAgaWYgKGlucHV0ICE9IDApIHsKKyAgICAgICAgaW50IGlkID0gbmV4dFVuaXF1ZUlkKCk7CiAgICAgICAgICAvLyBTdGFydCByZWNvcmQgdGhyZWFkCi0gICAgICAgIHRocmVhZCA9IG5ldyBSZWNvcmRUaHJlYWQodGhpcywgaW5wdXQsIHJlcVNhbXBsaW5nUmF0ZSwgcmVxQ2hhbm5lbHMsICsrbU5leHRUaHJlYWRJZCk7Ci0gICAgICAgIG1SZWNvcmRUaHJlYWRzLmFkZChtTmV4dFRocmVhZElkLCB0aHJlYWQpOwotICAgICAgICBMT0dWKCJvcGVuSW5wdXQoKSBjcmVhdGVkIHJlY29yZCB0aHJlYWQ6IElEICVkIHRocmVhZCAlcCIsIG1OZXh0VGhyZWFkSWQsIHRocmVhZCk7CisgICAgICAgIHRocmVhZCA9IG5ldyBSZWNvcmRUaHJlYWQodGhpcywgaW5wdXQsIHJlcVNhbXBsaW5nUmF0ZSwgcmVxQ2hhbm5lbHMsIGlkKTsKKyAgICAgICAgbVJlY29yZFRocmVhZHMuYWRkKGlkLCB0aHJlYWQpOworICAgICAgICBMT0dWKCJvcGVuSW5wdXQoKSBjcmVhdGVkIHJlY29yZCB0aHJlYWQ6IElEICVkIHRocmVhZCAlcCIsIGlkLCB0aHJlYWQpOwogICAgICAgICBpZiAocFNhbXBsaW5nUmF0ZSkgKnBTYW1wbGluZ1JhdGUgPSByZXFTYW1wbGluZ1JhdGU7CiAgICAgICAgIGlmIChwRm9ybWF0KSAqcEZvcm1hdCA9IGZvcm1hdDsKICAgICAgICAgaWYgKHBDaGFubmVscykgKnBDaGFubmVscyA9IHJlcUNoYW5uZWxzOwogCiAgICAgICAgIGlucHV0LT5zdGFuZGJ5KCk7CiAKLSAgICAgICAgcmV0dXJuIG1OZXh0VGhyZWFkSWQ7CisgICAgICAgIC8vIG5vdGlmeSBjbGllbnQgcHJvY2Vzc2VzIG9mIHRoZSBuZXcgaW5wdXQgY3JlYXRpb24KKyAgICAgICAgdGhyZWFkLT5hdWRpb0NvbmZpZ0NoYW5nZWRfbChBdWRpb1N5c3RlbTo6SU5QVVRfT1BFTkVEKTsKKyAgICAgICAgcmV0dXJuIGlkOwogICAgIH0KIAogICAgIHJldHVybiAwOwpAQCAtMzk4NSwyNiArNDQwOCwyNiBAQAogICAgIH0KIAogICAgIExPR1YoInNldFN0cmVhbU91dHB1dCgpIHN0cmVhbSAlZCB0byBvdXRwdXQgJWQiLCBzdHJlYW0sIG91dHB1dCk7CisgICAgYXVkaW9Db25maWdDaGFuZ2VkX2woQXVkaW9TeXN0ZW06OlNUUkVBTV9DT05GSUdfQ0hBTkdFRCwgb3V0cHV0LCAmc3RyZWFtKTsKIAogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbVBsYXliYWNrVGhyZWFkcy5zaXplKCk7IGkrKykgewogICAgICAgICBQbGF5YmFja1RocmVhZCAqdGhyZWFkID0gbVBsYXliYWNrVGhyZWFkcy52YWx1ZUF0KGkpLmdldCgpOwogICAgICAgICBpZiAodGhyZWFkICE9IGRzdFRocmVhZCAmJgogICAgICAgICAgICAgdGhyZWFkLT50eXBlKCkgIT0gUGxheWJhY2tUaHJlYWQ6OkRJUkVDVCkgewogICAgICAgICAgICAgTWl4ZXJUaHJlYWQgKnNyY1RocmVhZCA9IChNaXhlclRocmVhZCAqKXRocmVhZDsKLSAgICAgICAgICAgIFNvcnRlZFZlY3RvciA8IHNwPE1peGVyVGhyZWFkOjpUcmFjaz4gPiB0cmFja3M7Ci0gICAgICAgICAgICBTb3J0ZWRWZWN0b3IgPCB3cDxNaXhlclRocmVhZDo6VHJhY2s+ID4gYWN0aXZlVHJhY2tzOwotICAgICAgICAgICAgc3JjVGhyZWFkLT5nZXRUcmFja3ModHJhY2tzLCBhY3RpdmVUcmFja3MsIHN0cmVhbSk7Ci0gICAgICAgICAgICBpZiAodHJhY2tzLnNpemUoKSkgewotICAgICAgICAgICAgICAgIGRzdFRocmVhZC0+cHV0VHJhY2tzKHRyYWNrcywgYWN0aXZlVHJhY2tzKTsKKyAgICAgICAgICAgIHNyY1RocmVhZC0+aW52YWxpZGF0ZVRyYWNrcyhzdHJlYW0pOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfQotCi0gICAgZHN0VGhyZWFkLT5zZW5kQ29uZmlnRXZlbnQoQXVkaW9TeXN0ZW06OlNUUkVBTV9DT05GSUdfQ0hBTkdFRCwgc3RyZWFtKTsKIAogICAgIHJldHVybiBOT19FUlJPUjsKIH0KIAorCitpbnQgQXVkaW9GbGluZ2VyOjpuZXdBdWRpb1Nlc3Npb25JZCgpCit7CisgICAgcmV0dXJuIG5leHRVbmlxdWVJZCgpOworfQorCiAvLyBjaGVja1BsYXliYWNrVGhyZWFkX2woKSBtdXN0IGJlIGNhbGxlZCB3aXRoIEF1ZGlvRmxpbmdlcjo6bUxvY2sgaGVsZAogQXVkaW9GbGluZ2VyOjpQbGF5YmFja1RocmVhZCAqQXVkaW9GbGluZ2VyOjpjaGVja1BsYXliYWNrVGhyZWFkX2woaW50IG91dHB1dCkgY29uc3QKIHsKQEAgLTQwMzcsNiArNDQ2MCwxNTgyIEBACiAgICAgcmV0dXJuIHRocmVhZDsKIH0KIAoraW50IEF1ZGlvRmxpbmdlcjo6bmV4dFVuaXF1ZUlkKCkKK3sKKyAgICByZXR1cm4gYW5kcm9pZF9hdG9taWNfaW5jKCZtTmV4dFVuaXF1ZUlkKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gIEVmZmVjdCBtYW5hZ2VtZW50CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKworc3RhdHVzX3QgQXVkaW9GbGluZ2VyOjpsb2FkRWZmZWN0TGlicmFyeShjb25zdCBjaGFyICpsaWJQYXRoLCBpbnQgKmhhbmRsZSkKK3sKKyAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOworICAgIHJldHVybiBFZmZlY3RMb2FkTGlicmFyeShsaWJQYXRoLCBoYW5kbGUpOworfQorCitzdGF0dXNfdCBBdWRpb0ZsaW5nZXI6OnVubG9hZEVmZmVjdExpYnJhcnkoaW50IGhhbmRsZSkKK3sKKyAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOworICAgIHJldHVybiBFZmZlY3RVbmxvYWRMaWJyYXJ5KGhhbmRsZSk7Cit9CisKK3N0YXR1c190IEF1ZGlvRmxpbmdlcjo6cXVlcnlOdW1iZXJFZmZlY3RzKHVpbnQzMl90ICpudW1FZmZlY3RzKQoreworICAgIE11dGV4OjpBdXRvbG9jayBfbChtTG9jayk7CisgICAgcmV0dXJuIEVmZmVjdFF1ZXJ5TnVtYmVyRWZmZWN0cyhudW1FZmZlY3RzKTsKK30KKworc3RhdHVzX3QgQXVkaW9GbGluZ2VyOjpxdWVyeUVmZmVjdCh1aW50MzJfdCBpbmRleCwgZWZmZWN0X2Rlc2NyaXB0b3JfdCAqZGVzY3JpcHRvcikKK3sKKyAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOworICAgIHJldHVybiBFZmZlY3RRdWVyeUVmZmVjdChpbmRleCwgZGVzY3JpcHRvcik7Cit9CisKK3N0YXR1c190IEF1ZGlvRmxpbmdlcjo6Z2V0RWZmZWN0RGVzY3JpcHRvcihlZmZlY3RfdXVpZF90ICpwVXVpZCwgZWZmZWN0X2Rlc2NyaXB0b3JfdCAqZGVzY3JpcHRvcikKK3sKKyAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOworICAgIHJldHVybiBFZmZlY3RHZXREZXNjcmlwdG9yKHBVdWlkLCBkZXNjcmlwdG9yKTsKK30KKworCisvLyB0aGlzIFVVSUQgbXVzdCBtYXRjaCB0aGUgb25lIGRlZmluZWQgaW4gbWVkaWEvbGliZWZmZWN0cy9FZmZlY3RWaXN1YWxpemVyLmNwcAorc3RhdGljIGNvbnN0IGVmZmVjdF91dWlkX3QgVklTVUFMSVpBVElPTl9VVUlEXyA9CisgICAgezB4ZDA2OWQ5ZTAsIDB4ODMyOSwgMHgxMWRmLCAweDkxNjgsIHsweDAwLCAweDAyLCAweGE1LCAweGQ1LCAweGM1LCAweDFifX07CisKK3NwPElFZmZlY3Q+IEF1ZGlvRmxpbmdlcjo6Y3JlYXRlRWZmZWN0KHBpZF90IHBpZCwKKyAgICAgICAgZWZmZWN0X2Rlc2NyaXB0b3JfdCAqcERlc2MsCisgICAgICAgIGNvbnN0IHNwPElFZmZlY3RDbGllbnQ+JiBlZmZlY3RDbGllbnQsCisgICAgICAgIGludDMyX3QgcHJpb3JpdHksCisgICAgICAgIGludCBvdXRwdXQsCisgICAgICAgIGludCBzZXNzaW9uSWQsCisgICAgICAgIHN0YXR1c190ICpzdGF0dXMsCisgICAgICAgIGludCAqaWQsCisgICAgICAgIGludCAqZW5hYmxlZCkKK3sKKyAgICBzdGF0dXNfdCBsU3RhdHVzID0gTk9fRVJST1I7CisgICAgc3A8RWZmZWN0SGFuZGxlPiBoYW5kbGU7CisgICAgZWZmZWN0X2ludGVyZmFjZV90IGl0ZmU7CisgICAgZWZmZWN0X2Rlc2NyaXB0b3JfdCBkZXNjOworICAgIHNwPENsaWVudD4gY2xpZW50OworICAgIHdwPENsaWVudD4gd2NsaWVudDsKKworICAgIExPR1YoImNyZWF0ZUVmZmVjdCBwaWQgJWQsIGNsaWVudCAlcCwgcHJpb3JpdHkgJWQsIHNlc3Npb25JZCAlZCwgb3V0cHV0ICVkIiwgcGlkLCBlZmZlY3RDbGllbnQuZ2V0KCksIHByaW9yaXR5LCBzZXNzaW9uSWQsIG91dHB1dCk7CisKKyAgICBpZiAocERlc2MgPT0gTlVMTCkgeworICAgICAgICBsU3RhdHVzID0gQkFEX1ZBTFVFOworICAgICAgICBnb3RvIEV4aXQ7CisgICAgfQorCisgICAgeworICAgICAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOworCisgICAgICAgIC8vIGNoZWNrIHJlY29yZGluZyBwZXJtaXNzaW9uIGZvciB2aXN1YWxpemVyCisgICAgICAgIGlmIChtZW1jbXAoJnBEZXNjLT50eXBlLCBTTF9JSURfVklTVUFMSVpBVElPTiwgc2l6ZW9mKGVmZmVjdF91dWlkX3QpKSA9PSAwIHx8CisgICAgICAgICAgICBtZW1jbXAoJnBEZXNjLT51dWlkLCAmVklTVUFMSVpBVElPTl9VVUlEXywgc2l6ZW9mKGVmZmVjdF91dWlkX3QpKSA9PSAwKSB7CisgICAgICAgICAgICBpZiAoIXJlY29yZGluZ0FsbG93ZWQoKSkgeworICAgICAgICAgICAgICAgIGxTdGF0dXMgPSBQRVJNSVNTSU9OX0RFTklFRDsKKyAgICAgICAgICAgICAgICBnb3RvIEV4aXQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoIUVmZmVjdElzTnVsbFV1aWQoJnBEZXNjLT51dWlkKSkgeworICAgICAgICAgICAgLy8gaWYgdXVpZCBpcyBzcGVjaWZpZWQsIHJlcXVlc3QgZWZmZWN0IGRlc2NyaXB0b3IKKyAgICAgICAgICAgIGxTdGF0dXMgPSBFZmZlY3RHZXREZXNjcmlwdG9yKCZwRGVzYy0+dXVpZCwgJmRlc2MpOworICAgICAgICAgICAgaWYgKGxTdGF0dXMgPCAwKSB7CisgICAgICAgICAgICAgICAgTE9HVygiY3JlYXRlRWZmZWN0KCkgZXJyb3IgJWQgZnJvbSBFZmZlY3RHZXREZXNjcmlwdG9yIiwgbFN0YXR1cyk7CisgICAgICAgICAgICAgICAgZ290byBFeGl0OworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gaWYgdXVpZCBpcyBub3Qgc3BlY2lmaWVkLCBsb29rIGZvciBhbiBhdmFpbGFibGUgaW1wbGVtZW50YXRpb24KKyAgICAgICAgICAgIC8vIG9mIHRoZSByZXF1aXJlZCB0eXBlIGluIGVmZmVjdCBmYWN0b3J5CisgICAgICAgICAgICBpZiAoRWZmZWN0SXNOdWxsVXVpZCgmcERlc2MtPnR5cGUpKSB7CisgICAgICAgICAgICAgICAgTE9HVygiY3JlYXRlRWZmZWN0KCkgbm8gZWZmZWN0IHR5cGUiKTsKKyAgICAgICAgICAgICAgICBsU3RhdHVzID0gQkFEX1ZBTFVFOworICAgICAgICAgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHVpbnQzMl90IG51bUVmZmVjdHMgPSAwOworICAgICAgICAgICAgZWZmZWN0X2Rlc2NyaXB0b3JfdCBkOworICAgICAgICAgICAgYm9vbCBmb3VuZCA9IGZhbHNlOworCisgICAgICAgICAgICBsU3RhdHVzID0gRWZmZWN0UXVlcnlOdW1iZXJFZmZlY3RzKCZudW1FZmZlY3RzKTsKKyAgICAgICAgICAgIGlmIChsU3RhdHVzIDwgMCkgeworICAgICAgICAgICAgICAgIExPR1coImNyZWF0ZUVmZmVjdCgpIGVycm9yICVkIGZyb20gRWZmZWN0UXVlcnlOdW1iZXJFZmZlY3RzIiwgbFN0YXR1cyk7CisgICAgICAgICAgICAgICAgZ290byBFeGl0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IG51bUVmZmVjdHM7IGkrKykgeworICAgICAgICAgICAgICAgIGxTdGF0dXMgPSBFZmZlY3RRdWVyeUVmZmVjdChpLCAmZGVzYyk7CisgICAgICAgICAgICAgICAgaWYgKGxTdGF0dXMgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIExPR1coImNyZWF0ZUVmZmVjdCgpIGVycm9yICVkIGZyb20gRWZmZWN0UXVlcnlFZmZlY3QiLCBsU3RhdHVzKTsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChtZW1jbXAoJmRlc2MudHlwZSwgJnBEZXNjLT50eXBlLCBzaXplb2YoZWZmZWN0X3V1aWRfdCkpID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgbWF0Y2hpbmcgdHlwZSBmb3VuZCBzYXZlIGVmZmVjdCBkZXNjcmlwdG9yLiBJZiB0aGUgc2Vzc2lvbiBpcworICAgICAgICAgICAgICAgICAgICAvLyAwIGFuZCB0aGUgZWZmZWN0IGlzIG5vdCBhdXhpbGlhcnksIGNvbnRpbnVlIGVudW1lcmF0aW9uIGluIGNhc2UKKyAgICAgICAgICAgICAgICAgICAgLy8gYW4gYXV4aWxpYXJ5IHZlcnNpb24gb2YgdGhpcyBlZmZlY3QgdHlwZSBpcyBhdmFpbGFibGUKKyAgICAgICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBtZW1jcHkoJmQsICZkZXNjLCBzaXplb2YoZWZmZWN0X2Rlc2NyaXB0b3JfdCkpOworICAgICAgICAgICAgICAgICAgICBpZiAoc2Vzc2lvbklkICE9IDAgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVzYy5mbGFncyAmIEVGRkVDVF9GTEFHX1RZUEVfTUFTSykgPT0gRUZGRUNUX0ZMQUdfVFlQRV9BVVhJTElBUlkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFmb3VuZCkgeworICAgICAgICAgICAgICAgIGxTdGF0dXMgPSBCQURfVkFMVUU7CisgICAgICAgICAgICAgICAgTE9HVygiY3JlYXRlRWZmZWN0KCkgZWZmZWN0IG5vdCBmb3VuZCIpOworICAgICAgICAgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIEZvciBzYW1lIGVmZmVjdCB0eXBlLCBjaG9zZSBhdXhpbGlhcnkgdmVyc2lvbiBvdmVyIGluc2VydCB2ZXJzaW9uIGlmCisgICAgICAgICAgICAvLyBjb25uZWN0IHRvIG91dHB1dCBtaXggKENvbXBsaWFuY2UgdG8gT3BlblNMIEVTKQorICAgICAgICAgICAgaWYgKHNlc3Npb25JZCA9PSAwICYmCisgICAgICAgICAgICAgICAgICAgIChkLmZsYWdzICYgRUZGRUNUX0ZMQUdfVFlQRV9NQVNLKSAhPSBFRkZFQ1RfRkxBR19UWVBFX0FVWElMSUFSWSkgeworICAgICAgICAgICAgICAgIG1lbWNweSgmZGVzYywgJmQsIHNpemVvZihlZmZlY3RfZGVzY3JpcHRvcl90KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBEbyBub3QgYWxsb3cgYXV4aWxpYXJ5IGVmZmVjdHMgb24gYSBzZXNzaW9uIGRpZmZlcmVudCBmcm9tIDAgKG91dHB1dCBtaXgpCisgICAgICAgIGlmIChzZXNzaW9uSWQgIT0gMCAmJgorICAgICAgICAgICAgIChkZXNjLmZsYWdzICYgRUZGRUNUX0ZMQUdfVFlQRV9NQVNLKSA9PSBFRkZFQ1RfRkxBR19UWVBFX0FVWElMSUFSWSkgeworICAgICAgICAgICAgbFN0YXR1cyA9IElOVkFMSURfT1BFUkFUSU9OOworICAgICAgICAgICAgZ290byBFeGl0OworICAgICAgICB9CisKKyAgICAgICAgLy8gU2Vzc2lvbiAtMSBpcyByZXNlcnZlZCBmb3Igb3V0cHV0IHN0YWdlIGVmZmVjdHMgdGhhdCBjYW4gb25seSBiZSBjcmVhdGVkCisgICAgICAgIC8vIGJ5IGF1ZGlvIHBvbGljeSBtYW5hZ2VyIChydW5uaW5nIGluIHNhbWUgcHJvY2VzcykKKyAgICAgICAgaWYgKHNlc3Npb25JZCA9PSAtMSAmJiBnZXRwaWQoKSAhPSBJUENUaHJlYWRTdGF0ZTo6c2VsZigpLT5nZXRDYWxsaW5nUGlkKCkpIHsKKyAgICAgICAgICAgIGxTdGF0dXMgPSBJTlZBTElEX09QRVJBVElPTjsKKyAgICAgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIHJldHVybiBlZmZlY3QgZGVzY3JpcHRvcgorICAgICAgICBtZW1jcHkocERlc2MsICZkZXNjLCBzaXplb2YoZWZmZWN0X2Rlc2NyaXB0b3JfdCkpOworCisgICAgICAgIC8vIElmIG91dHB1dCBpcyBub3Qgc3BlY2lmaWVkIHRyeSB0byBmaW5kIGEgbWF0Y2hpbmcgYXVkaW8gc2Vzc2lvbiBJRCBpbiBvbmUgb2YgdGhlCisgICAgICAgIC8vIG91dHB1dCB0aHJlYWRzLgorICAgICAgICAvLyBUT0RPOiBhbGxvdyBhdHRhY2htZW50IG9mIGVmZmVjdCB0byBpbnB1dHMKKyAgICAgICAgaWYgKG91dHB1dCA9PSAwKSB7CisgICAgICAgICAgICBpZiAoc2Vzc2lvbklkIDw9IDApIHsKKyAgICAgICAgICAgICAgICAvLyBkZWZhdWx0IHRvIGZpcnN0IG91dHB1dAorICAgICAgICAgICAgICAgIC8vIFRPRE86IGRlZmluZSBjcml0ZXJpYSB0byBjaG9vc2Ugb3V0cHV0IHdoZW4gbm90IHNwZWNpZmllZC4gT3IKKyAgICAgICAgICAgICAgICAvLyByZWNlaXZlIG91dHB1dCBmcm9tIGF1ZGlvIHBvbGljeSBtYW5hZ2VyCisgICAgICAgICAgICAgICAgaWYgKG1QbGF5YmFja1RocmVhZHMuc2l6ZSgpICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgb3V0cHV0ID0gbVBsYXliYWNrVGhyZWFkcy5rZXlBdCgwKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAvLyBsb29rIGZvciB0aGUgdGhyZWFkIHdoZXJlIHRoZSBzcGVjaWZpZWQgYXVkaW8gc2Vzc2lvbiBpcyBwcmVzZW50CisgICAgICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtUGxheWJhY2tUaHJlYWRzLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChtUGxheWJhY2tUaHJlYWRzLnZhbHVlQXQoaSktPmhhc0F1ZGlvU2Vzc2lvbihzZXNzaW9uSWQpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgPSBtUGxheWJhY2tUaHJlYWRzLmtleUF0KGkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgUGxheWJhY2tUaHJlYWQgKnRocmVhZCA9IGNoZWNrUGxheWJhY2tUaHJlYWRfbChvdXRwdXQpOworICAgICAgICBpZiAodGhyZWFkID09IE5VTEwpIHsKKyAgICAgICAgICAgIExPR0UoInVua25vd24gb3V0cHV0IHRocmVhZCIpOworICAgICAgICAgICAgbFN0YXR1cyA9IEJBRF9WQUxVRTsKKyAgICAgICAgICAgIGdvdG8gRXhpdDsKKyAgICAgICAgfQorCisgICAgICAgIHdjbGllbnQgPSBtQ2xpZW50cy52YWx1ZUZvcihwaWQpOworCisgICAgICAgIGlmICh3Y2xpZW50ICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGNsaWVudCA9IHdjbGllbnQucHJvbW90ZSgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY2xpZW50ID0gbmV3IENsaWVudCh0aGlzLCBwaWQpOworICAgICAgICAgICAgbUNsaWVudHMuYWRkKHBpZCwgY2xpZW50KTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGNyZWF0ZSBlZmZlY3Qgb24gc2VsZWN0ZWQgb3V0cHV0IHRyaGVhZAorICAgICAgICBoYW5kbGUgPSB0aHJlYWQtPmNyZWF0ZUVmZmVjdF9sKGNsaWVudCwgZWZmZWN0Q2xpZW50LCBwcmlvcml0eSwgc2Vzc2lvbklkLCAmZGVzYywgZW5hYmxlZCwgJmxTdGF0dXMpOworICAgICAgICBpZiAoaGFuZGxlICE9IDAgJiYgaWQgIT0gTlVMTCkgeworICAgICAgICAgICAgKmlkID0gaGFuZGxlLT5pZCgpOworICAgICAgICB9CisgICAgfQorCitFeGl0OgorICAgIGlmKHN0YXR1cykgeworICAgICAgICAqc3RhdHVzID0gbFN0YXR1czsKKyAgICB9CisgICAgcmV0dXJuIGhhbmRsZTsKK30KKworc3RhdHVzX3QgQXVkaW9GbGluZ2VyOjpyZWdpc3RlckVmZmVjdFJlc291cmNlX2woZWZmZWN0X2Rlc2NyaXB0b3JfdCAqZGVzYykgeworICAgIGlmIChtVG90YWxFZmZlY3RzQ3B1TG9hZCArIGRlc2MtPmNwdUxvYWQgPiBNQVhfRUZGRUNUU19DUFVfTE9BRCkgeworICAgICAgICBMT0dXKCJyZWdpc3RlckVmZmVjdFJlc291cmNlKCkgQ1BVIExvYWQgbGltaXQgZXhjZWVkZWQgZm9yIEZ4ICVzLCBDUFUgJWYgTUlQUyIsCisgICAgICAgICAgICAgICAgZGVzYy0+bmFtZSwgKGZsb2F0KWRlc2MtPmNwdUxvYWQvMTApOworICAgICAgICByZXR1cm4gSU5WQUxJRF9PUEVSQVRJT047CisgICAgfQorICAgIGlmIChtVG90YWxFZmZlY3RzTWVtb3J5ICsgZGVzYy0+bWVtb3J5VXNhZ2UgPiBNQVhfRUZGRUNUU19NRU1PUlkpIHsKKyAgICAgICAgTE9HVygicmVnaXN0ZXJFZmZlY3RSZXNvdXJjZSgpIG1lbW9yeSBsaW1pdCBleGNlZWRlZCBmb3IgRnggJXMsIE1lbW9yeSAlZCBLQiIsCisgICAgICAgICAgICAgICAgZGVzYy0+bmFtZSwgZGVzYy0+bWVtb3J5VXNhZ2UpOworICAgICAgICByZXR1cm4gSU5WQUxJRF9PUEVSQVRJT047CisgICAgfQorICAgIG1Ub3RhbEVmZmVjdHNDcHVMb2FkICs9IGRlc2MtPmNwdUxvYWQ7CisgICAgbVRvdGFsRWZmZWN0c01lbW9yeSArPSBkZXNjLT5tZW1vcnlVc2FnZTsKKyAgICBMT0dWKCJyZWdpc3RlckVmZmVjdFJlc291cmNlX2woKSBlZmZlY3QgJXMsIENQVSAlZCwgbWVtb3J5ICVkIiwKKyAgICAgICAgICAgIGRlc2MtPm5hbWUsIGRlc2MtPmNwdUxvYWQsIGRlc2MtPm1lbW9yeVVzYWdlKTsKKyAgICBMT0dWKCIgIHRvdGFsIENQVSAlZCwgdG90YWwgbWVtb3J5ICVkIiwgbVRvdGFsRWZmZWN0c0NwdUxvYWQsIG1Ub3RhbEVmZmVjdHNNZW1vcnkpOworICAgIHJldHVybiBOT19FUlJPUjsKK30KKwordm9pZCBBdWRpb0ZsaW5nZXI6OnVucmVnaXN0ZXJFZmZlY3RSZXNvdXJjZV9sKGVmZmVjdF9kZXNjcmlwdG9yX3QgKmRlc2MpIHsKKyAgICBtVG90YWxFZmZlY3RzQ3B1TG9hZCAtPSBkZXNjLT5jcHVMb2FkOworICAgIG1Ub3RhbEVmZmVjdHNNZW1vcnkgLT0gZGVzYy0+bWVtb3J5VXNhZ2U7CisgICAgTE9HVigidW5yZWdpc3RlckVmZmVjdFJlc291cmNlX2woKSBlZmZlY3QgJXMsIENQVSAlZCwgbWVtb3J5ICVkIiwKKyAgICAgICAgICAgIGRlc2MtPm5hbWUsIGRlc2MtPmNwdUxvYWQsIGRlc2MtPm1lbW9yeVVzYWdlKTsKKyAgICBMT0dWKCIgIHRvdGFsIENQVSAlZCwgdG90YWwgbWVtb3J5ICVkIiwgbVRvdGFsRWZmZWN0c0NwdUxvYWQsIG1Ub3RhbEVmZmVjdHNNZW1vcnkpOworfQorCisvLyBQbGF5YmFja1RocmVhZDo6Y3JlYXRlRWZmZWN0X2woKSBtdXN0IGJlIGNhbGxlZCB3aXRoIEF1ZGlvRmxpbmdlcjo6bUxvY2sgaGVsZAorc3A8QXVkaW9GbGluZ2VyOjpFZmZlY3RIYW5kbGU+IEF1ZGlvRmxpbmdlcjo6UGxheWJhY2tUaHJlYWQ6OmNyZWF0ZUVmZmVjdF9sKAorICAgICAgICBjb25zdCBzcDxBdWRpb0ZsaW5nZXI6OkNsaWVudD4mIGNsaWVudCwKKyAgICAgICAgY29uc3Qgc3A8SUVmZmVjdENsaWVudD4mIGVmZmVjdENsaWVudCwKKyAgICAgICAgaW50MzJfdCBwcmlvcml0eSwKKyAgICAgICAgaW50IHNlc3Npb25JZCwKKyAgICAgICAgZWZmZWN0X2Rlc2NyaXB0b3JfdCAqZGVzYywKKyAgICAgICAgaW50ICplbmFibGVkLAorICAgICAgICBzdGF0dXNfdCAqc3RhdHVzCisgICAgICAgICkKK3sKKyAgICBzcDxFZmZlY3RNb2R1bGU+IGVmZmVjdDsKKyAgICBzcDxFZmZlY3RIYW5kbGU+IGhhbmRsZTsKKyAgICBzdGF0dXNfdCBsU3RhdHVzOworICAgIHNwPFRyYWNrPiB0cmFjazsKKyAgICBzcDxFZmZlY3RDaGFpbj4gY2hhaW47CisgICAgYm9vbCBlZmZlY3RDcmVhdGVkID0gZmFsc2U7CisgICAgYm9vbCBlZmZlY3RSZWdpc3RlcmVkID0gZmFsc2U7CisKKyAgICBpZiAobU91dHB1dCA9PSAwKSB7CisgICAgICAgIExPR1coImNyZWF0ZUVmZmVjdF9sKCkgQXVkaW8gZHJpdmVyIG5vdCBpbml0aWFsaXplZC4iKTsKKyAgICAgICAgbFN0YXR1cyA9IE5PX0lOSVQ7CisgICAgICAgIGdvdG8gRXhpdDsKKyAgICB9CisKKyAgICAvLyBEbyBub3QgYWxsb3cgYXV4aWxpYXJ5IGVmZmVjdCBvbiBzZXNzaW9uIG90aGVyIHRoYW4gMAorICAgIGlmICgoZGVzYy0+ZmxhZ3MgJiBFRkZFQ1RfRkxBR19UWVBFX01BU0spID09IEVGRkVDVF9GTEFHX1RZUEVfQVVYSUxJQVJZICYmCisgICAgICAgIHNlc3Npb25JZCAhPSAwKSB7CisgICAgICAgIExPR1coImNyZWF0ZUVmZmVjdF9sKCkgQ2Fubm90IGFkZCBhdXhpbGlhcnkgZWZmZWN0ICVzIHRvIHNlc3Npb24gJWQiLCBkZXNjLT5uYW1lLCBzZXNzaW9uSWQpOworICAgICAgICBsU3RhdHVzID0gQkFEX1ZBTFVFOworICAgICAgICBnb3RvIEV4aXQ7CisgICAgfQorCisgICAgLy8gRG8gbm90IGFsbG93IGVmZmVjdHMgd2l0aCBzZXNzaW9uIElEIDAgb24gZGlyZWN0IG91dHB1dCBvciBkdXBsaWNhdGluZyB0aHJlYWRzCisgICAgLy8gVE9ETzogYWRkIHJ1bGUgZm9yIGh3IGFjY2VsZXJhdGVkIGVmZmVjdHMgb24gZGlyZWN0IG91dHB1dHMgd2l0aCBub24gUENNIGZvcm1hdAorICAgIGlmIChzZXNzaW9uSWQgPT0gMCAmJiBtVHlwZSAhPSBNSVhFUikgeworICAgICAgICBMT0dXKCJjcmVhdGVFZmZlY3RfbCgpIENhbm5vdCBhZGQgYXV4aWxpYXJ5IGVmZmVjdCAlcyB0byBzZXNzaW9uICVkIiwgZGVzYy0+bmFtZSwgc2Vzc2lvbklkKTsKKyAgICAgICAgbFN0YXR1cyA9IEJBRF9WQUxVRTsKKyAgICAgICAgZ290byBFeGl0OworICAgIH0KKworICAgIExPR1YoImNyZWF0ZUVmZmVjdF9sKCkgdGhyZWFkICVwIGVmZmVjdCAlcyBvbiBzZXNzaW9uICVkIiwgdGhpcywgZGVzYy0+bmFtZSwgc2Vzc2lvbklkKTsKKworICAgIHsgLy8gc2NvcGUgZm9yIG1Mb2NrCisgICAgICAgIE11dGV4OjpBdXRvbG9jayBfbChtTG9jayk7CisKKyAgICAgICAgLy8gY2hlY2sgZm9yIGV4aXN0aW5nIGVmZmVjdCBjaGFpbiB3aXRoIHRoZSByZXF1ZXN0ZWQgYXVkaW8gc2Vzc2lvbgorICAgICAgICBjaGFpbiA9IGdldEVmZmVjdENoYWluX2woc2Vzc2lvbklkKTsKKyAgICAgICAgaWYgKGNoYWluID09IDApIHsKKyAgICAgICAgICAgIC8vIGNyZWF0ZSBhIG5ldyBjaGFpbiBmb3IgdGhpcyBzZXNzaW9uCisgICAgICAgICAgICBMT0dWKCJjcmVhdGVFZmZlY3RfbCgpIG5ldyBlZmZlY3QgY2hhaW4gZm9yIHNlc3Npb24gJWQiLCBzZXNzaW9uSWQpOworICAgICAgICAgICAgY2hhaW4gPSBuZXcgRWZmZWN0Q2hhaW4odGhpcywgc2Vzc2lvbklkKTsKKyAgICAgICAgICAgIGFkZEVmZmVjdENoYWluX2woY2hhaW4pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZWZmZWN0ID0gY2hhaW4tPmdldEVmZmVjdEZyb21EZXNjKGRlc2MpOworICAgICAgICB9CisKKyAgICAgICAgTE9HVigiY3JlYXRlRWZmZWN0X2woKSBnb3QgZWZmZWN0ICVwIG9uIGNoYWluICVwIiwgZWZmZWN0ID09IDAgPyAwIDogZWZmZWN0LmdldCgpLCBjaGFpbi5nZXQoKSk7CisKKyAgICAgICAgaWYgKGVmZmVjdCA9PSAwKSB7CisgICAgICAgICAgICAvLyBDaGVjayBDUFUgYW5kIG1lbW9yeSB1c2FnZQorICAgICAgICAgICAgbFN0YXR1cyA9IG1BdWRpb0ZsaW5nZXItPnJlZ2lzdGVyRWZmZWN0UmVzb3VyY2VfbChkZXNjKTsKKyAgICAgICAgICAgIGlmIChsU3RhdHVzICE9IE5PX0VSUk9SKSB7CisgICAgICAgICAgICAgICAgZ290byBFeGl0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWZmZWN0UmVnaXN0ZXJlZCA9IHRydWU7CisgICAgICAgICAgICAvLyBjcmVhdGUgYSBuZXcgZWZmZWN0IG1vZHVsZSBpZiBub25lIHByZXNlbnQgaW4gdGhlIGNoYWluCisgICAgICAgICAgICBlZmZlY3QgPSBuZXcgRWZmZWN0TW9kdWxlKHRoaXMsIGNoYWluLCBkZXNjLCBtQXVkaW9GbGluZ2VyLT5uZXh0VW5pcXVlSWQoKSwgc2Vzc2lvbklkKTsKKyAgICAgICAgICAgIGxTdGF0dXMgPSBlZmZlY3QtPnN0YXR1cygpOworICAgICAgICAgICAgaWYgKGxTdGF0dXMgIT0gTk9fRVJST1IpIHsKKyAgICAgICAgICAgICAgICBnb3RvIEV4aXQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsU3RhdHVzID0gY2hhaW4tPmFkZEVmZmVjdChlZmZlY3QpOworICAgICAgICAgICAgaWYgKGxTdGF0dXMgIT0gTk9fRVJST1IpIHsKKyAgICAgICAgICAgICAgICBnb3RvIEV4aXQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlZmZlY3RDcmVhdGVkID0gdHJ1ZTsKKworICAgICAgICAgICAgZWZmZWN0LT5zZXREZXZpY2UobURldmljZSk7CisgICAgICAgICAgICBlZmZlY3QtPnNldE1vZGUobUF1ZGlvRmxpbmdlci0+Z2V0TW9kZSgpKTsKKyAgICAgICAgfQorICAgICAgICAvLyBjcmVhdGUgZWZmZWN0IGhhbmRsZSBhbmQgY29ubmVjdCBpdCB0byBlZmZlY3QgbW9kdWxlCisgICAgICAgIGhhbmRsZSA9IG5ldyBFZmZlY3RIYW5kbGUoZWZmZWN0LCBjbGllbnQsIGVmZmVjdENsaWVudCwgcHJpb3JpdHkpOworICAgICAgICBsU3RhdHVzID0gZWZmZWN0LT5hZGRIYW5kbGUoaGFuZGxlKTsKKyAgICAgICAgaWYgKGVuYWJsZWQpIHsKKyAgICAgICAgICAgICplbmFibGVkID0gKGludCllZmZlY3QtPmlzRW5hYmxlZCgpOworICAgICAgICB9CisgICAgfQorCitFeGl0OgorICAgIGlmIChsU3RhdHVzICE9IE5PX0VSUk9SICYmIGxTdGF0dXMgIT0gQUxSRUFEWV9FWElTVFMpIHsKKyAgICAgICAgaWYgKGVmZmVjdENyZWF0ZWQpIHsKKyAgICAgICAgICAgIGlmIChjaGFpbi0+cmVtb3ZlRWZmZWN0KGVmZmVjdCkgPT0gMCkgeworICAgICAgICAgICAgICAgIHJlbW92ZUVmZmVjdENoYWluX2woY2hhaW4pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChlZmZlY3RSZWdpc3RlcmVkKSB7CisgICAgICAgICAgICBtQXVkaW9GbGluZ2VyLT51bnJlZ2lzdGVyRWZmZWN0UmVzb3VyY2VfbChkZXNjKTsKKyAgICAgICAgfQorICAgICAgICBoYW5kbGUuY2xlYXIoKTsKKyAgICB9CisKKyAgICBpZihzdGF0dXMpIHsKKyAgICAgICAgKnN0YXR1cyA9IGxTdGF0dXM7CisgICAgfQorICAgIHJldHVybiBoYW5kbGU7Cit9CisKK3ZvaWQgQXVkaW9GbGluZ2VyOjpQbGF5YmFja1RocmVhZDo6ZGlzY29ubmVjdEVmZmVjdChjb25zdCBzcDwgRWZmZWN0TW9kdWxlPiYgZWZmZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdwPEVmZmVjdEhhbmRsZT4mIGhhbmRsZSkgeworICAgIGVmZmVjdF9kZXNjcmlwdG9yX3QgZGVzYyA9IGVmZmVjdC0+ZGVzYygpOworICAgIE11dGV4OjpBdXRvbG9jayBfbChtTG9jayk7CisgICAgLy8gZGVsZXRlIHRoZSBlZmZlY3QgbW9kdWxlIGlmIHJlbW92aW5nIGxhc3QgaGFuZGxlIG9uIGl0CisgICAgaWYgKGVmZmVjdC0+cmVtb3ZlSGFuZGxlKGhhbmRsZSkgPT0gMCkgeworICAgICAgICBpZiAoKGRlc2MuZmxhZ3MgJiBFRkZFQ1RfRkxBR19UWVBFX01BU0spID09IEVGRkVDVF9GTEFHX1RZUEVfQVVYSUxJQVJZKSB7CisgICAgICAgICAgICBkZXRhY2hBdXhFZmZlY3RfbChlZmZlY3QtPmlkKCkpOworICAgICAgICB9CisgICAgICAgIHNwPEVmZmVjdENoYWluPiBjaGFpbiA9IGVmZmVjdC0+Y2hhaW4oKS5wcm9tb3RlKCk7CisgICAgICAgIGlmIChjaGFpbiAhPSAwKSB7CisgICAgICAgICAgICAvLyByZW1vdmUgZWZmZWN0IGNoYWluIGlmIHJlbW92ZSBsYXN0IGVmZmVjdAorICAgICAgICAgICAgaWYgKGNoYWluLT5yZW1vdmVFZmZlY3QoZWZmZWN0KSA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmVtb3ZlRWZmZWN0Q2hhaW5fbChjaGFpbik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbUxvY2sudW5sb2NrKCk7CisgICAgICAgIG1BdWRpb0ZsaW5nZXItPm1Mb2NrLmxvY2soKTsKKyAgICAgICAgbUF1ZGlvRmxpbmdlci0+dW5yZWdpc3RlckVmZmVjdFJlc291cmNlX2woJmRlc2MpOworICAgICAgICBtQXVkaW9GbGluZ2VyLT5tTG9jay51bmxvY2soKTsKKyAgICB9Cit9CisKK3N0YXR1c190IEF1ZGlvRmxpbmdlcjo6UGxheWJhY2tUaHJlYWQ6OmFkZEVmZmVjdENoYWluX2woY29uc3Qgc3A8RWZmZWN0Q2hhaW4+JiBjaGFpbikKK3sKKyAgICBpbnQgc2Vzc2lvbiA9IGNoYWluLT5zZXNzaW9uSWQoKTsKKyAgICBpbnQxNl90ICpidWZmZXIgPSBtTWl4QnVmZmVyOworICAgIGJvb2wgb3duc0J1ZmZlciA9IGZhbHNlOworCisgICAgTE9HVigiYWRkRWZmZWN0Q2hhaW5fbCgpICVwIG9uIHRocmVhZCAlcCBmb3Igc2Vzc2lvbiAlZCIsIGNoYWluLmdldCgpLCB0aGlzLCBzZXNzaW9uKTsKKyAgICBpZiAoc2Vzc2lvbiA+IDApIHsKKyAgICAgICAgLy8gT25seSBvbmUgZWZmZWN0IGNoYWluIGNhbiBiZSBwcmVzZW50IGluIGRpcmVjdCBvdXRwdXQgdGhyZWFkIGFuZCBpdCB1c2VzCisgICAgICAgIC8vIHRoZSBtaXggYnVmZmVyIGFzIGlucHV0CisgICAgICAgIGlmIChtVHlwZSAhPSBESVJFQ1QpIHsKKyAgICAgICAgICAgIHNpemVfdCBudW1TYW1wbGVzID0gbUZyYW1lQ291bnQgKiBtQ2hhbm5lbENvdW50OworICAgICAgICAgICAgYnVmZmVyID0gbmV3IGludDE2X3RbbnVtU2FtcGxlc107CisgICAgICAgICAgICBtZW1zZXQoYnVmZmVyLCAwLCBudW1TYW1wbGVzICogc2l6ZW9mKGludDE2X3QpKTsKKyAgICAgICAgICAgIExPR1YoImFkZEVmZmVjdENoYWluX2woKSBjcmVhdGluZyBuZXcgaW5wdXQgYnVmZmVyICVwIHNlc3Npb24gJWQiLCBidWZmZXIsIHNlc3Npb24pOworICAgICAgICAgICAgb3duc0J1ZmZlciA9IHRydWU7CisgICAgICAgIH0KKworICAgICAgICAvLyBBdHRhY2ggYWxsIHRyYWNrcyB3aXRoIHNhbWUgc2Vzc2lvbiBJRCB0byB0aGlzIGNoYWluLgorICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1UcmFja3Muc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgIHNwPFRyYWNrPiB0cmFjayA9IG1UcmFja3NbaV07CisgICAgICAgICAgICBpZiAoc2Vzc2lvbiA9PSB0cmFjay0+c2Vzc2lvbklkKCkpIHsKKyAgICAgICAgICAgICAgICBMT0dWKCJhZGRFZmZlY3RDaGFpbl9sKCkgdHJhY2stPnNldE1haW5CdWZmZXIgdHJhY2sgJXAgYnVmZmVyICVwIiwgdHJhY2suZ2V0KCksIGJ1ZmZlcik7CisgICAgICAgICAgICAgICAgdHJhY2stPnNldE1haW5CdWZmZXIoYnVmZmVyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIGluZGljYXRlIGFsbCBhY3RpdmUgdHJhY2tzIGluIHRoZSBjaGFpbgorICAgICAgICBmb3IgKHNpemVfdCBpID0gMCA7IGkgPCBtQWN0aXZlVHJhY2tzLnNpemUoKSA7ICsraSkgeworICAgICAgICAgICAgc3A8VHJhY2s+IHRyYWNrID0gbUFjdGl2ZVRyYWNrc1tpXS5wcm9tb3RlKCk7CisgICAgICAgICAgICBpZiAodHJhY2sgPT0gMCkgY29udGludWU7CisgICAgICAgICAgICBpZiAoc2Vzc2lvbiA9PSB0cmFjay0+c2Vzc2lvbklkKCkpIHsKKyAgICAgICAgICAgICAgICBMT0dWKCJhZGRFZmZlY3RDaGFpbl9sKCkgYWN0aXZhdGluZyB0cmFjayAlcCBvbiBzZXNzaW9uICVkIiwgdHJhY2suZ2V0KCksIHNlc3Npb24pOworICAgICAgICAgICAgICAgIGNoYWluLT5zdGFydFRyYWNrKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjaGFpbi0+c2V0SW5CdWZmZXIoYnVmZmVyLCBvd25zQnVmZmVyKTsKKyAgICBjaGFpbi0+c2V0T3V0QnVmZmVyKG1NaXhCdWZmZXIpOworICAgIC8vIEVmZmVjdCBjaGFpbiBmb3Igc2Vzc2lvbiAtMSBpcyBpbnNlcnRlZCBhdCBlbmQgb2YgZWZmZWN0IGNoYWlucyBsaXN0CisgICAgLy8gaW4gb3JkZXIgdG8gYmUgcHJvY2Vzc2VkIGxhc3QgYXMgaXQgY29udGFpbnMgb3V0cHV0IHN0YWdlIGVmZmVjdHMKKyAgICAvLyBFZmZlY3QgY2hhaW4gZm9yIHNlc3Npb24gMCBpcyBpbnNlcnRlZCBiZWZvcmUgc2Vzc2lvbiAtMSB0byBiZSBwcm9jZXNzZWQKKyAgICAvLyBhZnRlciB0cmFjayBzcGVjaWZpYyBlZmZlY3RzIGFuZCBiZWZvcmUgb3V0cHV0IHN0YWdlCisgICAgLy8gRWZmZWN0IGNoYWluIGZvciBzZXNzaW9uIG90aGVyIHRoYW4gMCBpcyBpbnNlcnRlZCBhdCBiZWdpbm5pbmcgb2YgZWZmZWN0CisgICAgLy8gY2hhaW5zIGxpc3QgdG8gYmUgcHJvY2Vzc2VkIGJlZm9yZSBvdXRwdXQgbWl4IGVmZmVjdHMuIFJlbGF0aXZlIG9yZGVyIGJldHdlZW4KKyAgICAvLyBzZXNzaW9ucyBvdGhlciB0aGFuIDAgaXMgbm90IGltcG9ydGFudAorICAgIHNpemVfdCBzaXplID0gbUVmZmVjdENoYWlucy5zaXplKCk7CisgICAgc2l6ZV90IGkgPSAwOworICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgaWYgKG1FZmZlY3RDaGFpbnNbaV0tPnNlc3Npb25JZCgpIDwgc2Vzc2lvbikgYnJlYWs7CisgICAgfQorICAgIG1FZmZlY3RDaGFpbnMuaW5zZXJ0QXQoY2hhaW4sIGkpOworCisgICAgcmV0dXJuIE5PX0VSUk9SOworfQorCitzaXplX3QgQXVkaW9GbGluZ2VyOjpQbGF5YmFja1RocmVhZDo6cmVtb3ZlRWZmZWN0Q2hhaW5fbChjb25zdCBzcDxFZmZlY3RDaGFpbj4mIGNoYWluKQoreworICAgIGludCBzZXNzaW9uID0gY2hhaW4tPnNlc3Npb25JZCgpOworCisgICAgTE9HVigicmVtb3ZlRWZmZWN0Q2hhaW5fbCgpICVwIGZyb20gdGhyZWFkICVwIGZvciBzZXNzaW9uICVkIiwgY2hhaW4uZ2V0KCksIHRoaXMsIHNlc3Npb24pOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtRWZmZWN0Q2hhaW5zLnNpemUoKTsgaSsrKSB7CisgICAgICAgIGlmIChjaGFpbiA9PSBtRWZmZWN0Q2hhaW5zW2ldKSB7CisgICAgICAgICAgICBtRWZmZWN0Q2hhaW5zLnJlbW92ZUF0KGkpOworICAgICAgICAgICAgLy8gZGV0YWNoIGFsbCB0cmFja3Mgd2l0aCBzYW1lIHNlc3Npb24gSUQgZnJvbSB0aGlzIGNoYWluCisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1UcmFja3Muc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAgICBzcDxUcmFjaz4gdHJhY2sgPSBtVHJhY2tzW2ldOworICAgICAgICAgICAgICAgIGlmIChzZXNzaW9uID09IHRyYWNrLT5zZXNzaW9uSWQoKSkgeworICAgICAgICAgICAgICAgICAgICB0cmFjay0+c2V0TWFpbkJ1ZmZlcihtTWl4QnVmZmVyKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIG1FZmZlY3RDaGFpbnMuc2l6ZSgpOworfQorCit2b2lkIEF1ZGlvRmxpbmdlcjo6UGxheWJhY2tUaHJlYWQ6OmxvY2tFZmZlY3RDaGFpbnNfbCgpCit7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtRWZmZWN0Q2hhaW5zLnNpemUoKTsgaSsrKSB7CisgICAgICAgIG1FZmZlY3RDaGFpbnNbaV0tPmxvY2soKTsKKyAgICB9Cit9CisKK3ZvaWQgQXVkaW9GbGluZ2VyOjpQbGF5YmFja1RocmVhZDo6dW5sb2NrRWZmZWN0Q2hhaW5zKCkKK3sKKyAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbUVmZmVjdENoYWlucy5zaXplKCk7IGkrKykgeworICAgICAgICBtRWZmZWN0Q2hhaW5zW2ldLT51bmxvY2soKTsKKyAgICB9Cit9CisKK3NwPEF1ZGlvRmxpbmdlcjo6RWZmZWN0TW9kdWxlPiBBdWRpb0ZsaW5nZXI6OlBsYXliYWNrVGhyZWFkOjpnZXRFZmZlY3RfbChpbnQgc2Vzc2lvbklkLCBpbnQgZWZmZWN0SWQpCit7CisgICAgc3A8RWZmZWN0TW9kdWxlPiBlZmZlY3Q7CisKKyAgICBzcDxFZmZlY3RDaGFpbj4gY2hhaW4gPSBnZXRFZmZlY3RDaGFpbl9sKHNlc3Npb25JZCk7CisgICAgaWYgKGNoYWluICE9IDApIHsKKyAgICAgICAgZWZmZWN0ID0gY2hhaW4tPmdldEVmZmVjdEZyb21JZChlZmZlY3RJZCk7CisgICAgfQorICAgIHJldHVybiBlZmZlY3Q7Cit9CisKK3N0YXR1c190IEF1ZGlvRmxpbmdlcjo6UGxheWJhY2tUaHJlYWQ6OmF0dGFjaEF1eEVmZmVjdChjb25zdCBzcDxBdWRpb0ZsaW5nZXI6OlBsYXliYWNrVGhyZWFkOjpUcmFjaz4gdHJhY2ssIGludCBFZmZlY3RJZCkKK3sKKyAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOworICAgIHJldHVybiBhdHRhY2hBdXhFZmZlY3RfbCh0cmFjaywgRWZmZWN0SWQpOworfQorCitzdGF0dXNfdCBBdWRpb0ZsaW5nZXI6OlBsYXliYWNrVGhyZWFkOjphdHRhY2hBdXhFZmZlY3RfbChjb25zdCBzcDxBdWRpb0ZsaW5nZXI6OlBsYXliYWNrVGhyZWFkOjpUcmFjaz4gdHJhY2ssIGludCBFZmZlY3RJZCkKK3sKKyAgICBzdGF0dXNfdCBzdGF0dXMgPSBOT19FUlJPUjsKKworICAgIGlmIChFZmZlY3RJZCA9PSAwKSB7CisgICAgICAgIHRyYWNrLT5zZXRBdXhCdWZmZXIoMCwgTlVMTCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gQXV4aWxpYXJ5IGVmZmVjdHMgYXJlIGFsd2F5cyBpbiBhdWRpbyBzZXNzaW9uIDAKKyAgICAgICAgc3A8RWZmZWN0TW9kdWxlPiBlZmZlY3QgPSBnZXRFZmZlY3RfbCgwLCBFZmZlY3RJZCk7CisgICAgICAgIGlmIChlZmZlY3QgIT0gMCkgeworICAgICAgICAgICAgaWYgKChlZmZlY3QtPmRlc2MoKS5mbGFncyAmIEVGRkVDVF9GTEFHX1RZUEVfTUFTSykgPT0gRUZGRUNUX0ZMQUdfVFlQRV9BVVhJTElBUlkpIHsKKyAgICAgICAgICAgICAgICB0cmFjay0+c2V0QXV4QnVmZmVyKEVmZmVjdElkLCAoaW50MzJfdCAqKWVmZmVjdC0+aW5CdWZmZXIoKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHN0YXR1cyA9IElOVkFMSURfT1BFUkFUSU9OOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc3RhdHVzID0gQkFEX1ZBTFVFOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBzdGF0dXM7Cit9CisKK3ZvaWQgQXVkaW9GbGluZ2VyOjpQbGF5YmFja1RocmVhZDo6ZGV0YWNoQXV4RWZmZWN0X2woaW50IGVmZmVjdElkKQoreworICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1UcmFja3Muc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgc3A8VHJhY2s+IHRyYWNrID0gbVRyYWNrc1tpXTsKKyAgICAgICAgaWYgKHRyYWNrLT5hdXhFZmZlY3RJZCgpID09IGVmZmVjdElkKSB7CisgICAgICAgICAgICBhdHRhY2hBdXhFZmZlY3RfbCh0cmFjaywgMCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICBFZmZlY3RNb2R1bGUgaW1wbGVtZW50YXRpb24KKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI3VuZGVmIExPR19UQUcKKyNkZWZpbmUgTE9HX1RBRyAiQXVkaW9GbGluZ2VyOjpFZmZlY3RNb2R1bGUiCisKK0F1ZGlvRmxpbmdlcjo6RWZmZWN0TW9kdWxlOjpFZmZlY3RNb2R1bGUoY29uc3Qgd3A8VGhyZWFkQmFzZT4mIHdUaHJlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgd3A8QXVkaW9GbGluZ2VyOjpFZmZlY3RDaGFpbj4mIGNoYWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVmZmVjdF9kZXNjcmlwdG9yX3QgKmRlc2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzZXNzaW9uSWQpCisgICAgOiBtVGhyZWFkKHdUaHJlYWQpLCBtQ2hhaW4oY2hhaW4pLCBtSWQoaWQpLCBtU2Vzc2lvbklkKHNlc3Npb25JZCksIG1FZmZlY3RJbnRlcmZhY2UoTlVMTCksCisgICAgICBtU3RhdHVzKE5PX0lOSVQpLCBtU3RhdGUoSURMRSkKK3sKKyAgICBMT0dWKCJDb25zdHJ1Y3RvciAlcCIsIHRoaXMpOworICAgIGludCBsU3RhdHVzOworICAgIHNwPFRocmVhZEJhc2U+IHRocmVhZCA9IG1UaHJlYWQucHJvbW90ZSgpOworICAgIGlmICh0aHJlYWQgPT0gMCkgeworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFBsYXliYWNrVGhyZWFkICpwID0gKFBsYXliYWNrVGhyZWFkICopdGhyZWFkLmdldCgpOworCisgICAgbWVtY3B5KCZtRGVzY3JpcHRvciwgZGVzYywgc2l6ZW9mKGVmZmVjdF9kZXNjcmlwdG9yX3QpKTsKKworICAgIC8vIGNyZWF0ZSBlZmZlY3QgZW5naW5lIGZyb20gZWZmZWN0IGZhY3RvcnkKKyAgICBtU3RhdHVzID0gRWZmZWN0Q3JlYXRlKCZkZXNjLT51dWlkLCBzZXNzaW9uSWQsIHAtPmlkKCksICZtRWZmZWN0SW50ZXJmYWNlKTsKKworICAgIGlmIChtU3RhdHVzICE9IE5PX0VSUk9SKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbFN0YXR1cyA9IGluaXQoKTsKKyAgICBpZiAobFN0YXR1cyA8IDApIHsKKyAgICAgICAgbVN0YXR1cyA9IGxTdGF0dXM7CisgICAgICAgIGdvdG8gRXJyb3I7CisgICAgfQorCisgICAgTE9HVigiQ29uc3RydWN0b3Igc3VjY2VzcyBuYW1lICVzLCBJbnRlcmZhY2UgJXAiLCBtRGVzY3JpcHRvci5uYW1lLCBtRWZmZWN0SW50ZXJmYWNlKTsKKyAgICByZXR1cm47CitFcnJvcjoKKyAgICBFZmZlY3RSZWxlYXNlKG1FZmZlY3RJbnRlcmZhY2UpOworICAgIG1FZmZlY3RJbnRlcmZhY2UgPSBOVUxMOworICAgIExPR1YoIkNvbnN0cnVjdG9yIEVycm9yICVkIiwgbVN0YXR1cyk7Cit9CisKK0F1ZGlvRmxpbmdlcjo6RWZmZWN0TW9kdWxlOjp+RWZmZWN0TW9kdWxlKCkKK3sKKyAgICBMT0dWKCJEZXN0cnVjdG9yICVwIiwgdGhpcyk7CisgICAgaWYgKG1FZmZlY3RJbnRlcmZhY2UgIT0gTlVMTCkgeworICAgICAgICAvLyByZWxlYXNlIGVmZmVjdCBlbmdpbmUKKyAgICAgICAgRWZmZWN0UmVsZWFzZShtRWZmZWN0SW50ZXJmYWNlKTsKKyAgICB9Cit9CisKK3N0YXR1c190IEF1ZGlvRmxpbmdlcjo6RWZmZWN0TW9kdWxlOjphZGRIYW5kbGUoc3A8RWZmZWN0SGFuZGxlPiYgaGFuZGxlKQoreworICAgIHN0YXR1c190IHN0YXR1czsKKworICAgIE11dGV4OjpBdXRvbG9jayBfbChtTG9jayk7CisgICAgLy8gRmlyc3QgaGFuZGxlIGluIG1IYW5kbGVzIGhhcyBoaWdoZXN0IHByaW9yaXR5IGFuZCBjb250cm9scyB0aGUgZWZmZWN0IG1vZHVsZQorICAgIGludCBwcmlvcml0eSA9IGhhbmRsZS0+cHJpb3JpdHkoKTsKKyAgICBzaXplX3Qgc2l6ZSA9IG1IYW5kbGVzLnNpemUoKTsKKyAgICBzcDxFZmZlY3RIYW5kbGU+IGg7CisgICAgc2l6ZV90IGk7CisgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICBoID0gbUhhbmRsZXNbaV0ucHJvbW90ZSgpOworICAgICAgICBpZiAoaCA9PSAwKSBjb250aW51ZTsKKyAgICAgICAgaWYgKGgtPnByaW9yaXR5KCkgPD0gcHJpb3JpdHkpIGJyZWFrOworICAgIH0KKyAgICAvLyBpZiBpbnNlcnRlZCBpbiBmaXJzdCBwbGFjZSwgbW92ZSBlZmZlY3QgY29udHJvbCBmcm9tIHByZXZpb3VzIG93bmVyIHRvIHRoaXMgaGFuZGxlCisgICAgaWYgKGkgPT0gMCkgeworICAgICAgICBpZiAoaCAhPSAwKSB7CisgICAgICAgICAgICBoLT5zZXRDb250cm9sKGZhbHNlLCB0cnVlKTsKKyAgICAgICAgfQorICAgICAgICBoYW5kbGUtPnNldENvbnRyb2wodHJ1ZSwgZmFsc2UpOworICAgICAgICBzdGF0dXMgPSBOT19FUlJPUjsKKyAgICB9IGVsc2UgeworICAgICAgICBzdGF0dXMgPSBBTFJFQURZX0VYSVNUUzsKKyAgICB9CisgICAgbUhhbmRsZXMuaW5zZXJ0QXQoaGFuZGxlLCBpKTsKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitzaXplX3QgQXVkaW9GbGluZ2VyOjpFZmZlY3RNb2R1bGU6OnJlbW92ZUhhbmRsZShjb25zdCB3cDxFZmZlY3RIYW5kbGU+JiBoYW5kbGUpCit7CisgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1Mb2NrKTsKKyAgICBzaXplX3Qgc2l6ZSA9IG1IYW5kbGVzLnNpemUoKTsKKyAgICBzaXplX3QgaTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgIGlmIChtSGFuZGxlc1tpXSA9PSBoYW5kbGUpIGJyZWFrOworICAgIH0KKyAgICBpZiAoaSA9PSBzaXplKSB7CisgICAgICAgIHJldHVybiBzaXplOworICAgIH0KKyAgICBtSGFuZGxlcy5yZW1vdmVBdChpKTsKKyAgICBzaXplID0gbUhhbmRsZXMuc2l6ZSgpOworICAgIC8vIGlmIHJlbW92ZWQgZnJvbSBmaXJzdCBwbGFjZSwgbW92ZSBlZmZlY3QgY29udHJvbCBmcm9tIHRoaXMgaGFuZGxlIHRvIG5leHQgaW4gbGluZQorICAgIGlmIChpID09IDAgJiYgc2l6ZSAhPSAwKSB7CisgICAgICAgIHNwPEVmZmVjdEhhbmRsZT4gaCA9IG1IYW5kbGVzWzBdLnByb21vdGUoKTsKKyAgICAgICAgaWYgKGggIT0gMCkgeworICAgICAgICAgICAgaC0+c2V0Q29udHJvbCh0cnVlLCB0cnVlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBzaXplOworfQorCit2b2lkIEF1ZGlvRmxpbmdlcjo6RWZmZWN0TW9kdWxlOjpkaXNjb25uZWN0KGNvbnN0IHdwPEVmZmVjdEhhbmRsZT4mIGhhbmRsZSkKK3sKKyAgICAvLyBrZWVwIGEgc3Ryb25nIHJlZmVyZW5jZSBvbiB0aGlzIEVmZmVjdE1vZHVsZSB0byBhdm9pZCBjYWxsaW5nIHRoZQorICAgIC8vIGRlc3RydWN0b3IgYmVmb3JlIHdlIGV4aXQKKyAgICBzcDxFZmZlY3RNb2R1bGU+IGtlZXAodGhpcyk7CisgICAgeworICAgICAgICBzcDxUaHJlYWRCYXNlPiB0aHJlYWQgPSBtVGhyZWFkLnByb21vdGUoKTsKKyAgICAgICAgaWYgKHRocmVhZCAhPSAwKSB7CisgICAgICAgICAgICBQbGF5YmFja1RocmVhZCAqcGxheWJhY2tUaHJlYWQgPSAoUGxheWJhY2tUaHJlYWQgKil0aHJlYWQuZ2V0KCk7CisgICAgICAgICAgICBwbGF5YmFja1RocmVhZC0+ZGlzY29ubmVjdEVmZmVjdChrZWVwLCBoYW5kbGUpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEF1ZGlvRmxpbmdlcjo6RWZmZWN0TW9kdWxlOjpwcm9jZXNzKCkKK3sKKyAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOworCisgICAgaWYgKG1FZmZlY3RJbnRlcmZhY2UgPT0gTlVMTCB8fCBtQ29uZmlnLmlucHV0Q2ZnLmJ1ZmZlci5yYXcgPT0gTlVMTCB8fCBtQ29uZmlnLm91dHB1dENmZy5idWZmZXIucmF3ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtU3RhdGUgIT0gSURMRSkgeworICAgICAgICAvLyBkbyAzMiBiaXQgdG8gMTYgYml0IGNvbnZlcnNpb24gZm9yIGF1eGlsaWFyeSBlZmZlY3QgaW5wdXQgYnVmZmVyCisgICAgICAgIGlmICgobURlc2NyaXB0b3IuZmxhZ3MgJiBFRkZFQ1RfRkxBR19UWVBFX01BU0spID09IEVGRkVDVF9GTEFHX1RZUEVfQVVYSUxJQVJZKSB7CisgICAgICAgICAgICBBdWRpb01peGVyOjpkaXRoZXJBbmRDbGFtcChtQ29uZmlnLmlucHV0Q2ZnLmJ1ZmZlci5zMzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUNvbmZpZy5pbnB1dENmZy5idWZmZXIuczMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Db25maWcuaW5wdXRDZmcuYnVmZmVyLmZyYW1lQ291bnQpOworICAgICAgICB9CisKKyAgICAgICAgLy8gVE9ETzogaGFuZGxlIGVmZmVjdHMgd2l0aCBidWZmZXIgcHJvdmlkZXIKKyAgICAgICAgaWYgKG1TdGF0ZSAhPSBBQ1RJVkUpIHsKKyAgICAgICAgICAgIHN3aXRjaCAobVN0YXRlKSB7CisgICAgICAgICAgICBjYXNlIFJFU0VUOgorICAgICAgICAgICAgICAgIHJlc2V0X2woKTsKKyAgICAgICAgICAgICAgICBtU3RhdGUgPSBTVEFSVElORzsKKyAgICAgICAgICAgICAgICAvLyBjbGVhciBhdXhpbGlhcnkgZWZmZWN0IGlucHV0IGJ1ZmZlciBmb3IgbmV4dCBhY2N1bXVsYXRpb24KKyAgICAgICAgICAgICAgICBpZiAoKG1EZXNjcmlwdG9yLmZsYWdzICYgRUZGRUNUX0ZMQUdfVFlQRV9NQVNLKSA9PSBFRkZFQ1RfRkxBR19UWVBFX0FVWElMSUFSWSkgeworICAgICAgICAgICAgICAgICAgICBtZW1zZXQobUNvbmZpZy5pbnB1dENmZy5idWZmZXIucmF3LCAwLCBtQ29uZmlnLmlucHV0Q2ZnLmJ1ZmZlci5mcmFtZUNvdW50KnNpemVvZihpbnQzMl90KSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIGNhc2UgU1RBUlRJTkc6CisgICAgICAgICAgICAgICAgc3RhcnRfbCgpOworICAgICAgICAgICAgICAgIG1TdGF0ZSA9IEFDVElWRTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU1RPUFBJTkc6CisgICAgICAgICAgICAgICAgbVN0YXRlID0gU1RPUFBFRDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU1RPUFBFRDoKKyAgICAgICAgICAgICAgICBzdG9wX2woKTsKKyAgICAgICAgICAgICAgICBtU3RhdGUgPSBJRExFOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIGRvIHRoZSBhY3R1YWwgcHJvY2Vzc2luZyBpbiB0aGUgZWZmZWN0IGVuZ2luZQorICAgICAgICAoKm1FZmZlY3RJbnRlcmZhY2UpLT5wcm9jZXNzKG1FZmZlY3RJbnRlcmZhY2UsICZtQ29uZmlnLmlucHV0Q2ZnLmJ1ZmZlciwgJm1Db25maWcub3V0cHV0Q2ZnLmJ1ZmZlcik7CisKKyAgICAgICAgLy8gY2xlYXIgYXV4aWxpYXJ5IGVmZmVjdCBpbnB1dCBidWZmZXIgZm9yIG5leHQgYWNjdW11bGF0aW9uCisgICAgICAgIGlmICgobURlc2NyaXB0b3IuZmxhZ3MgJiBFRkZFQ1RfRkxBR19UWVBFX01BU0spID09IEVGRkVDVF9GTEFHX1RZUEVfQVVYSUxJQVJZKSB7CisgICAgICAgICAgICBtZW1zZXQobUNvbmZpZy5pbnB1dENmZy5idWZmZXIucmF3LCAwLCBtQ29uZmlnLmlucHV0Q2ZnLmJ1ZmZlci5mcmFtZUNvdW50KnNpemVvZihpbnQzMl90KSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKChtRGVzY3JpcHRvci5mbGFncyAmIEVGRkVDVF9GTEFHX1RZUEVfTUFTSykgPT0gRUZGRUNUX0ZMQUdfVFlQRV9JTlNFUlQgJiYKKyAgICAgICAgICAgICAgICBtQ29uZmlnLmlucHV0Q2ZnLmJ1ZmZlci5yYXcgIT0gbUNvbmZpZy5vdXRwdXRDZmcuYnVmZmVyLnJhdyl7CisgICAgICAgIC8vIElmIGFuIGluc2VydCBlZmZlY3QgaXMgaWRsZSBhbmQgaW5wdXQgYnVmZmVyIGlzIGRpZmZlcmVudCBmcm9tIG91dHB1dCBidWZmZXIsIGNvcHkgaW5wdXQgdG8KKyAgICAgICAgLy8gb3V0cHV0CisgICAgICAgIHNwPEVmZmVjdENoYWluPiBjaGFpbiA9IG1DaGFpbi5wcm9tb3RlKCk7CisgICAgICAgIGlmIChjaGFpbiAhPSAwICYmIGNoYWluLT5hY3RpdmVUcmFja3MoKSAhPSAwKSB7CisgICAgICAgICAgICBzaXplX3Qgc2l6ZSA9IG1Db25maWcuaW5wdXRDZmcuYnVmZmVyLmZyYW1lQ291bnQgKiBzaXplb2YoaW50MTZfdCk7CisgICAgICAgICAgICBpZiAobUNvbmZpZy5pbnB1dENmZy5jaGFubmVscyA9PSBDSEFOTkVMX1NURVJFTykgeworICAgICAgICAgICAgICAgIHNpemUgKj0gMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1lbWNweShtQ29uZmlnLm91dHB1dENmZy5idWZmZXIucmF3LCBtQ29uZmlnLmlucHV0Q2ZnLmJ1ZmZlci5yYXcsIHNpemUpOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIEF1ZGlvRmxpbmdlcjo6RWZmZWN0TW9kdWxlOjpyZXNldF9sKCkKK3sKKyAgICBpZiAobUVmZmVjdEludGVyZmFjZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgKCptRWZmZWN0SW50ZXJmYWNlKS0+Y29tbWFuZChtRWZmZWN0SW50ZXJmYWNlLCBFRkZFQ1RfQ01EX1JFU0VULCAwLCBOVUxMLCAwLCBOVUxMKTsKK30KKworc3RhdHVzX3QgQXVkaW9GbGluZ2VyOjpFZmZlY3RNb2R1bGU6OmNvbmZpZ3VyZSgpCit7CisgICAgdWludDMyX3QgY2hhbm5lbHM7CisgICAgaWYgKG1FZmZlY3RJbnRlcmZhY2UgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTk9fSU5JVDsKKyAgICB9CisKKyAgICBzcDxUaHJlYWRCYXNlPiB0aHJlYWQgPSBtVGhyZWFkLnByb21vdGUoKTsKKyAgICBpZiAodGhyZWFkID09IDApIHsKKyAgICAgICAgcmV0dXJuIERFQURfT0JKRUNUOworICAgIH0KKworICAgIC8vIFRPRE86IGhhbmRsZSBjb25maWd1cmF0aW9uIG9mIGVmZmVjdHMgcmVwbGFjaW5nIHRyYWNrIHByb2Nlc3MKKyAgICBpZiAodGhyZWFkLT5jaGFubmVsQ291bnQoKSA9PSAxKSB7CisgICAgICAgIGNoYW5uZWxzID0gQ0hBTk5FTF9NT05POworICAgIH0gZWxzZSB7CisgICAgICAgIGNoYW5uZWxzID0gQ0hBTk5FTF9TVEVSRU87CisgICAgfQorCisgICAgaWYgKChtRGVzY3JpcHRvci5mbGFncyAmIEVGRkVDVF9GTEFHX1RZUEVfTUFTSykgPT0gRUZGRUNUX0ZMQUdfVFlQRV9BVVhJTElBUlkpIHsKKyAgICAgICAgbUNvbmZpZy5pbnB1dENmZy5jaGFubmVscyA9IENIQU5ORUxfTU9OTzsKKyAgICB9IGVsc2UgeworICAgICAgICBtQ29uZmlnLmlucHV0Q2ZnLmNoYW5uZWxzID0gY2hhbm5lbHM7CisgICAgfQorICAgIG1Db25maWcub3V0cHV0Q2ZnLmNoYW5uZWxzID0gY2hhbm5lbHM7CisgICAgbUNvbmZpZy5pbnB1dENmZy5mb3JtYXQgPSBTQU1QTEVfRk9STUFUX1BDTV9TMTU7CisgICAgbUNvbmZpZy5vdXRwdXRDZmcuZm9ybWF0ID0gU0FNUExFX0ZPUk1BVF9QQ01fUzE1OworICAgIG1Db25maWcuaW5wdXRDZmcuc2FtcGxpbmdSYXRlID0gdGhyZWFkLT5zYW1wbGVSYXRlKCk7CisgICAgbUNvbmZpZy5vdXRwdXRDZmcuc2FtcGxpbmdSYXRlID0gbUNvbmZpZy5pbnB1dENmZy5zYW1wbGluZ1JhdGU7CisgICAgbUNvbmZpZy5pbnB1dENmZy5idWZmZXJQcm92aWRlci5jb29raWUgPSBOVUxMOworICAgIG1Db25maWcuaW5wdXRDZmcuYnVmZmVyUHJvdmlkZXIuZ2V0QnVmZmVyID0gTlVMTDsKKyAgICBtQ29uZmlnLmlucHV0Q2ZnLmJ1ZmZlclByb3ZpZGVyLnJlbGVhc2VCdWZmZXIgPSBOVUxMOworICAgIG1Db25maWcub3V0cHV0Q2ZnLmJ1ZmZlclByb3ZpZGVyLmNvb2tpZSA9IE5VTEw7CisgICAgbUNvbmZpZy5vdXRwdXRDZmcuYnVmZmVyUHJvdmlkZXIuZ2V0QnVmZmVyID0gTlVMTDsKKyAgICBtQ29uZmlnLm91dHB1dENmZy5idWZmZXJQcm92aWRlci5yZWxlYXNlQnVmZmVyID0gTlVMTDsKKyAgICBtQ29uZmlnLmlucHV0Q2ZnLmFjY2Vzc01vZGUgPSBFRkZFQ1RfQlVGRkVSX0FDQ0VTU19SRUFEOworICAgIC8vIEluc2VydCBlZmZlY3Q6CisgICAgLy8gLSBpbiBzZXNzaW9uIDAgb3IgLTEsIGFsd2F5cyBvdmVyd3JpdGVzIG91dHB1dCBidWZmZXI6IGlucHV0IGJ1ZmZlciA9PSBvdXRwdXQgYnVmZmVyCisgICAgLy8gLSBpbiBvdGhlciBzZXNzaW9uczoKKyAgICAvLyAgICAgIGxhc3QgZWZmZWN0IGluIHRoZSBjaGFpbiBhY2N1bXVsYXRlcyBpbiBvdXRwdXQgYnVmZmVyOiBpbnB1dCBidWZmZXIgIT0gb3V0cHV0IGJ1ZmZlcgorICAgIC8vICAgICAgb3RoZXIgZWZmZWN0OiBvdmVyd3JpdGVzIG91dHB1dCBidWZmZXI6IGlucHV0IGJ1ZmZlciA9PSBvdXRwdXQgYnVmZmVyCisgICAgLy8gQXV4aWxpYXJ5IGVmZmVjdDoKKyAgICAvLyAgICAgIGFjY3VtdWxhdGVzIGluIG91dHB1dCBidWZmZXI6IGlucHV0IGJ1ZmZlciAhPSBvdXRwdXQgYnVmZmVyCisgICAgLy8gVGhlcmVmb3JlOiBhY2N1bXVsYXRlIDw9PiBpbnB1dCBidWZmZXIgIT0gb3V0cHV0IGJ1ZmZlcgorICAgIGlmIChtQ29uZmlnLmlucHV0Q2ZnLmJ1ZmZlci5yYXcgIT0gbUNvbmZpZy5vdXRwdXRDZmcuYnVmZmVyLnJhdykgeworICAgICAgICBtQ29uZmlnLm91dHB1dENmZy5hY2Nlc3NNb2RlID0gRUZGRUNUX0JVRkZFUl9BQ0NFU1NfQUNDVU1VTEFURTsKKyAgICB9IGVsc2UgeworICAgICAgICBtQ29uZmlnLm91dHB1dENmZy5hY2Nlc3NNb2RlID0gRUZGRUNUX0JVRkZFUl9BQ0NFU1NfV1JJVEU7CisgICAgfQorICAgIG1Db25maWcuaW5wdXRDZmcubWFzayA9IEVGRkVDVF9DT05GSUdfQUxMOworICAgIG1Db25maWcub3V0cHV0Q2ZnLm1hc2sgPSBFRkZFQ1RfQ09ORklHX0FMTDsKKyAgICBtQ29uZmlnLmlucHV0Q2ZnLmJ1ZmZlci5mcmFtZUNvdW50ID0gdGhyZWFkLT5mcmFtZUNvdW50KCk7CisgICAgbUNvbmZpZy5vdXRwdXRDZmcuYnVmZmVyLmZyYW1lQ291bnQgPSBtQ29uZmlnLmlucHV0Q2ZnLmJ1ZmZlci5mcmFtZUNvdW50OworCisgICAgc3RhdHVzX3QgY21kU3RhdHVzOworICAgIGludCBzaXplID0gc2l6ZW9mKGludCk7CisgICAgc3RhdHVzX3Qgc3RhdHVzID0gKCptRWZmZWN0SW50ZXJmYWNlKS0+Y29tbWFuZChtRWZmZWN0SW50ZXJmYWNlLCBFRkZFQ1RfQ01EX0NPTkZJR1VSRSwgc2l6ZW9mKGVmZmVjdF9jb25maWdfdCksICZtQ29uZmlnLCAmc2l6ZSwgJmNtZFN0YXR1cyk7CisgICAgaWYgKHN0YXR1cyA9PSAwKSB7CisgICAgICAgIHN0YXR1cyA9IGNtZFN0YXR1czsKKyAgICB9CisgICAgcmV0dXJuIHN0YXR1czsKK30KKworc3RhdHVzX3QgQXVkaW9GbGluZ2VyOjpFZmZlY3RNb2R1bGU6OmluaXQoKQoreworICAgIE11dGV4OjpBdXRvbG9jayBfbChtTG9jayk7CisgICAgaWYgKG1FZmZlY3RJbnRlcmZhY2UgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTk9fSU5JVDsKKyAgICB9CisgICAgc3RhdHVzX3QgY21kU3RhdHVzOworICAgIGludCBzaXplID0gc2l6ZW9mKHN0YXR1c190KTsKKyAgICBzdGF0dXNfdCBzdGF0dXMgPSAoKm1FZmZlY3RJbnRlcmZhY2UpLT5jb21tYW5kKG1FZmZlY3RJbnRlcmZhY2UsIEVGRkVDVF9DTURfSU5JVCwgMCwgTlVMTCwgJnNpemUsICZjbWRTdGF0dXMpOworICAgIGlmIChzdGF0dXMgPT0gMCkgeworICAgICAgICBzdGF0dXMgPSBjbWRTdGF0dXM7CisgICAgfQorICAgIHJldHVybiBzdGF0dXM7Cit9CisKK3N0YXR1c190IEF1ZGlvRmxpbmdlcjo6RWZmZWN0TW9kdWxlOjpzdGFydF9sKCkKK3sKKyAgICBpZiAobUVmZmVjdEludGVyZmFjZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOT19JTklUOworICAgIH0KKyAgICBzdGF0dXNfdCBjbWRTdGF0dXM7CisgICAgaW50IHNpemUgPSBzaXplb2Yoc3RhdHVzX3QpOworICAgIHN0YXR1c190IHN0YXR1cyA9ICgqbUVmZmVjdEludGVyZmFjZSktPmNvbW1hbmQobUVmZmVjdEludGVyZmFjZSwgRUZGRUNUX0NNRF9FTkFCTEUsIDAsIE5VTEwsICZzaXplLCAmY21kU3RhdHVzKTsKKyAgICBpZiAoc3RhdHVzID09IDApIHsKKyAgICAgICAgc3RhdHVzID0gY21kU3RhdHVzOworICAgIH0KKyAgICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0dXNfdCBBdWRpb0ZsaW5nZXI6OkVmZmVjdE1vZHVsZTo6c3RvcF9sKCkKK3sKKyAgICBpZiAobUVmZmVjdEludGVyZmFjZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOT19JTklUOworICAgIH0KKyAgICBzdGF0dXNfdCBjbWRTdGF0dXM7CisgICAgaW50IHNpemUgPSBzaXplb2Yoc3RhdHVzX3QpOworICAgIHN0YXR1c190IHN0YXR1cyA9ICgqbUVmZmVjdEludGVyZmFjZSktPmNvbW1hbmQobUVmZmVjdEludGVyZmFjZSwgRUZGRUNUX0NNRF9ESVNBQkxFLCAwLCBOVUxMLCAmc2l6ZSwgJmNtZFN0YXR1cyk7CisgICAgaWYgKHN0YXR1cyA9PSAwKSB7CisgICAgICAgIHN0YXR1cyA9IGNtZFN0YXR1czsKKyAgICB9CisgICAgcmV0dXJuIHN0YXR1czsKK30KKworc3RhdHVzX3QgQXVkaW9GbGluZ2VyOjpFZmZlY3RNb2R1bGU6OmNvbW1hbmQoaW50IGNtZENvZGUsIGludCBjbWRTaXplLCB2b2lkICpwQ21kRGF0YSwgaW50ICpyZXBseVNpemUsIHZvaWQgKnBSZXBseURhdGEpCit7CisgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1Mb2NrKTsKKy8vICAgIExPR1YoImNvbW1hbmQoKSwgY21kQ29kZTogJWQsIG1FZmZlY3RJbnRlcmZhY2U6ICVwIiwgY21kQ29kZSwgbUVmZmVjdEludGVyZmFjZSk7CisKKyAgICBpZiAobUVmZmVjdEludGVyZmFjZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOT19JTklUOworICAgIH0KKyAgICBzdGF0dXNfdCBzdGF0dXMgPSAoKm1FZmZlY3RJbnRlcmZhY2UpLT5jb21tYW5kKG1FZmZlY3RJbnRlcmZhY2UsIGNtZENvZGUsIGNtZFNpemUsIHBDbWREYXRhLCByZXBseVNpemUsIHBSZXBseURhdGEpOworICAgIGlmIChjbWRDb2RlICE9IEVGRkVDVF9DTURfR0VUX1BBUkFNICYmIHN0YXR1cyA9PSBOT19FUlJPUikgeworICAgICAgICBpbnQgc2l6ZSA9IChyZXBseVNpemUgPT0gTlVMTCkgPyAwIDogKnJlcGx5U2l6ZTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBtSGFuZGxlcy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgc3A8RWZmZWN0SGFuZGxlPiBoID0gbUhhbmRsZXNbaV0ucHJvbW90ZSgpOworICAgICAgICAgICAgaWYgKGggIT0gMCkgeworICAgICAgICAgICAgICAgIGgtPmNvbW1hbmRFeGVjdXRlZChjbWRDb2RlLCBjbWRTaXplLCBwQ21kRGF0YSwgc2l6ZSwgcFJlcGx5RGF0YSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHN0YXR1czsKK30KKworc3RhdHVzX3QgQXVkaW9GbGluZ2VyOjpFZmZlY3RNb2R1bGU6OnNldEVuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAgIE11dGV4OjpBdXRvbG9jayBfbChtTG9jayk7CisgICAgTE9HVigic2V0RW5hYmxlZCAlcCBlbmFibGVkICVkIiwgdGhpcywgZW5hYmxlZCk7CisKKyAgICBpZiAoZW5hYmxlZCAhPSBpc0VuYWJsZWQoKSkgeworICAgICAgICBzd2l0Y2ggKG1TdGF0ZSkgeworICAgICAgICAvLyBnb2luZyBmcm9tIGRpc2FibGVkIHRvIGVuYWJsZWQKKyAgICAgICAgY2FzZSBJRExFOgorICAgICAgICAgICAgbVN0YXRlID0gUkVTRVQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBTVE9QUElORzoKKyAgICAgICAgICAgIG1TdGF0ZSA9IEFDVElWRTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNUT1BQRUQ6CisgICAgICAgICAgICBtU3RhdGUgPSBTVEFSVElORzsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIC8vIGdvaW5nIGZyb20gZW5hYmxlZCB0byBkaXNhYmxlZAorICAgICAgICBjYXNlIFJFU0VUOgorICAgICAgICAgICAgbVN0YXRlID0gSURMRTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNUQVJUSU5HOgorICAgICAgICAgICAgbVN0YXRlID0gU1RPUFBFRDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFDVElWRToKKyAgICAgICAgICAgIG1TdGF0ZSA9IFNUT1BQSU5HOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDE7IGkgPCBtSGFuZGxlcy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgc3A8RWZmZWN0SGFuZGxlPiBoID0gbUhhbmRsZXNbaV0ucHJvbW90ZSgpOworICAgICAgICAgICAgaWYgKGggIT0gMCkgeworICAgICAgICAgICAgICAgIGgtPnNldEVuYWJsZWQoZW5hYmxlZCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIE5PX0VSUk9SOworfQorCitib29sIEF1ZGlvRmxpbmdlcjo6RWZmZWN0TW9kdWxlOjppc0VuYWJsZWQoKQoreworICAgIHN3aXRjaCAobVN0YXRlKSB7CisgICAgY2FzZSBSRVNFVDoKKyAgICBjYXNlIFNUQVJUSU5HOgorICAgIGNhc2UgQUNUSVZFOgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjYXNlIElETEU6CisgICAgY2FzZSBTVE9QUElORzoKKyAgICBjYXNlIFNUT1BQRUQ6CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKworc3RhdHVzX3QgQXVkaW9GbGluZ2VyOjpFZmZlY3RNb2R1bGU6OnNldFZvbHVtZSh1aW50MzJfdCAqbGVmdCwgdWludDMyX3QgKnJpZ2h0LCBib29sIGNvbnRyb2xsZXIpCit7CisgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1Mb2NrKTsKKyAgICBzdGF0dXNfdCBzdGF0dXMgPSBOT19FUlJPUjsKKworICAgIC8vIFNlbmQgdm9sdW1lIGluZGljYXRpb24gaWYgRUZGRUNUX0ZMQUdfVk9MVU1FX0lORCBpcyBzZXQgYW5kIHJlYWQgYmFjayBhbHRlcmVkIHZvbHVtZQorICAgIC8vIGlmIGNvbnRyb2xsZXIgZmxhZyBpcyBzZXQgKE5vdGUgdGhhdCBjb250cm9sbGVyID09IFRSVUUgPT4gRUZGRUNUX0ZMQUdfVk9MVU1FX0NUUkwgc2V0KQorICAgIGlmICgobURlc2NyaXB0b3IuZmxhZ3MgJiBFRkZFQ1RfRkxBR19WT0xVTUVfTUFTSykgJiAoRUZGRUNUX0ZMQUdfVk9MVU1FX0NUUkx8RUZGRUNUX0ZMQUdfVk9MVU1FX0lORCkpIHsKKyAgICAgICAgc3RhdHVzX3QgY21kU3RhdHVzOworICAgICAgICB1aW50MzJfdCB2b2x1bWVbMl07CisgICAgICAgIHVpbnQzMl90ICpwVm9sdW1lID0gTlVMTDsKKyAgICAgICAgaW50IHNpemUgPSBzaXplb2Yodm9sdW1lKTsKKyAgICAgICAgdm9sdW1lWzBdID0gKmxlZnQ7CisgICAgICAgIHZvbHVtZVsxXSA9ICpyaWdodDsKKyAgICAgICAgaWYgKGNvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgIHBWb2x1bWUgPSB2b2x1bWU7CisgICAgICAgIH0KKyAgICAgICAgc3RhdHVzID0gKCptRWZmZWN0SW50ZXJmYWNlKS0+Y29tbWFuZChtRWZmZWN0SW50ZXJmYWNlLCBFRkZFQ1RfQ01EX1NFVF9WT0xVTUUsIHNpemUsIHZvbHVtZSwgJnNpemUsIHBWb2x1bWUpOworICAgICAgICBpZiAoY29udHJvbGxlciAmJiBzdGF0dXMgPT0gTk9fRVJST1IgJiYgc2l6ZSA9PSBzaXplb2Yodm9sdW1lKSkgeworICAgICAgICAgICAgKmxlZnQgPSB2b2x1bWVbMF07CisgICAgICAgICAgICAqcmlnaHQgPSB2b2x1bWVbMV07CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHN0YXR1czsKK30KKworc3RhdHVzX3QgQXVkaW9GbGluZ2VyOjpFZmZlY3RNb2R1bGU6OnNldERldmljZSh1aW50MzJfdCBkZXZpY2UpCit7CisgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1Mb2NrKTsKKyAgICBzdGF0dXNfdCBzdGF0dXMgPSBOT19FUlJPUjsKKyAgICBpZiAoKG1EZXNjcmlwdG9yLmZsYWdzICYgRUZGRUNUX0ZMQUdfREVWSUNFX01BU0spID09IEVGRkVDVF9GTEFHX0RFVklDRV9JTkQpIHsKKyAgICAgICAgLy8gY29udmVydCBkZXZpY2UgYml0IGZpZWxkIGZyb20gQXVkaW9TeXN0ZW0gdG8gRWZmZWN0QXBpIGZvcm1hdC4KKyAgICAgICAgZGV2aWNlID0gZGV2aWNlQXVkaW9TeXN0ZW1Ub0VmZmVjdEFwaShkZXZpY2UpOworICAgICAgICBpZiAoZGV2aWNlID09IDApIHsKKyAgICAgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisgICAgICAgIH0KKyAgICAgICAgc3RhdHVzX3QgY21kU3RhdHVzOworICAgICAgICBpbnQgc2l6ZSA9IHNpemVvZihzdGF0dXNfdCk7CisgICAgICAgIHN0YXR1cyA9ICgqbUVmZmVjdEludGVyZmFjZSktPmNvbW1hbmQobUVmZmVjdEludGVyZmFjZSwgRUZGRUNUX0NNRF9TRVRfREVWSUNFLCBzaXplb2YodWludDMyX3QpLCAmZGV2aWNlLCAmc2l6ZSwgJmNtZFN0YXR1cyk7CisgICAgICAgIGlmIChzdGF0dXMgPT0gTk9fRVJST1IpIHsKKyAgICAgICAgICAgIHN0YXR1cyA9IGNtZFN0YXR1czsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0dXNfdCBBdWRpb0ZsaW5nZXI6OkVmZmVjdE1vZHVsZTo6c2V0TW9kZSh1aW50MzJfdCBtb2RlKQoreworICAgIE11dGV4OjpBdXRvbG9jayBfbChtTG9jayk7CisgICAgc3RhdHVzX3Qgc3RhdHVzID0gTk9fRVJST1I7CisgICAgaWYgKChtRGVzY3JpcHRvci5mbGFncyAmIEVGRkVDVF9GTEFHX0FVRElPX01PREVfTUFTSykgPT0gRUZGRUNUX0ZMQUdfQVVESU9fTU9ERV9JTkQpIHsKKyAgICAgICAgLy8gY29udmVydCBhdWRpbyBtb2RlIGZyb20gQXVkaW9TeXN0ZW0gdG8gRWZmZWN0QXBpIGZvcm1hdC4KKyAgICAgICAgaW50IGVmZmVjdE1vZGUgPSBtb2RlQXVkaW9TeXN0ZW1Ub0VmZmVjdEFwaShtb2RlKTsKKyAgICAgICAgaWYgKGVmZmVjdE1vZGUgPCAwKSB7CisgICAgICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOworICAgICAgICB9CisgICAgICAgIHN0YXR1c190IGNtZFN0YXR1czsKKyAgICAgICAgaW50IHNpemUgPSBzaXplb2Yoc3RhdHVzX3QpOworICAgICAgICBzdGF0dXMgPSAoKm1FZmZlY3RJbnRlcmZhY2UpLT5jb21tYW5kKG1FZmZlY3RJbnRlcmZhY2UsIEVGRkVDVF9DTURfU0VUX0FVRElPX01PREUsIHNpemVvZihpbnQpLCAmZWZmZWN0TW9kZSwgJnNpemUsICZjbWRTdGF0dXMpOworICAgICAgICBpZiAoc3RhdHVzID09IE5PX0VSUk9SKSB7CisgICAgICAgICAgICBzdGF0dXMgPSBjbWRTdGF0dXM7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHN0YXR1czsKK30KKworLy8gdXBkYXRlIHRoaXMgdGFibGUgd2hlbiBBdWRpb1N5c3RlbTo6YXVkaW9fZGV2aWNlcyBvciBhdWRpb19kZXZpY2VfZSAoaW4gRWZmZWN0QXBpLmgpIGFyZSBtb2RpZmllZAorY29uc3QgdWludDMyX3QgQXVkaW9GbGluZ2VyOjpFZmZlY3RNb2R1bGU6OnNEZXZpY2VDb252VGFibGVbXSA9IHsKKyAgICBERVZJQ0VfRUFSUElFQ0UsIC8vIEF1ZGlvU3lzdGVtOjpERVZJQ0VfT1VUX0VBUlBJRUNFCisgICAgREVWSUNFX1NQRUFLRVIsIC8vIEF1ZGlvU3lzdGVtOjpERVZJQ0VfT1VUX1NQRUFLRVIKKyAgICBERVZJQ0VfV0lSRURfSEVBRFNFVCwgLy8gY2FzZSBBdWRpb1N5c3RlbTo6REVWSUNFX09VVF9XSVJFRF9IRUFEU0VUCisgICAgREVWSUNFX1dJUkVEX0hFQURQSE9ORSwgLy8gQXVkaW9TeXN0ZW06OkRFVklDRV9PVVRfV0lSRURfSEVBRFBIT05FCisgICAgREVWSUNFX0JMVUVUT09USF9TQ08sIC8vIEF1ZGlvU3lzdGVtOjpERVZJQ0VfT1VUX0JMVUVUT09USF9TQ08KKyAgICBERVZJQ0VfQkxVRVRPT1RIX1NDT19IRUFEU0VULCAvLyBBdWRpb1N5c3RlbTo6REVWSUNFX09VVF9CTFVFVE9PVEhfU0NPX0hFQURTRVQKKyAgICBERVZJQ0VfQkxVRVRPT1RIX1NDT19DQVJLSVQsIC8vICBBdWRpb1N5c3RlbTo6REVWSUNFX09VVF9CTFVFVE9PVEhfU0NPX0NBUktJVAorICAgIERFVklDRV9CTFVFVE9PVEhfQTJEUCwgLy8gIEF1ZGlvU3lzdGVtOjpERVZJQ0VfT1VUX0JMVUVUT09USF9BMkRQCisgICAgREVWSUNFX0JMVUVUT09USF9BMkRQX0hFQURQSE9ORVMsIC8vIEF1ZGlvU3lzdGVtOjpERVZJQ0VfT1VUX0JMVUVUT09USF9BMkRQX0hFQURQSE9ORVMKKyAgICBERVZJQ0VfQkxVRVRPT1RIX0EyRFBfU1BFQUtFUiwgLy8gQXVkaW9TeXN0ZW06OkRFVklDRV9PVVRfQkxVRVRPT1RIX0EyRFBfU1BFQUtFUgorICAgIERFVklDRV9BVVhfRElHSVRBTCAvLyBBdWRpb1N5c3RlbTo6REVWSUNFX09VVF9BVVhfRElHSVRBTAorfTsKKwordWludDMyX3QgQXVkaW9GbGluZ2VyOjpFZmZlY3RNb2R1bGU6OmRldmljZUF1ZGlvU3lzdGVtVG9FZmZlY3RBcGkodWludDMyX3QgZGV2aWNlKQoreworICAgIHVpbnQzMl90IGRldmljZU91dCA9IDA7CisgICAgd2hpbGUgKGRldmljZSkgeworICAgICAgICBjb25zdCB1aW50MzJfdCBpID0gMzEgLSBfX2J1aWx0aW5fY2x6KGRldmljZSk7CisgICAgICAgIGRldmljZSAmPSB+KDEgPDwgaSk7CisgICAgICAgIGlmIChpID49IHNpemVvZihzRGV2aWNlQ29udlRhYmxlKS9zaXplb2YodWludDMyX3QpKSB7CisgICAgICAgICAgICBMT0dFKCJkZXZpY2UgY29udmVydGlvbiBlcnJvciBmb3IgQXVkaW9TeXN0ZW0gZGV2aWNlIDB4JTA4eCIsIGRldmljZSk7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBkZXZpY2VPdXQgfD0gKHVpbnQzMl90KXNEZXZpY2VDb252VGFibGVbaV07CisgICAgfQorICAgIHJldHVybiBkZXZpY2VPdXQ7Cit9CisKKy8vIHVwZGF0ZSB0aGlzIHRhYmxlIHdoZW4gQXVkaW9TeXN0ZW06OmF1ZGlvX21vZGUgb3IgYXVkaW9fbW9kZV9lIChpbiBFZmZlY3RBcGkuaCkgYXJlIG1vZGlmaWVkCitjb25zdCB1aW50MzJfdCBBdWRpb0ZsaW5nZXI6OkVmZmVjdE1vZHVsZTo6c01vZGVDb252VGFibGVbXSA9IHsKKyAgICBBVURJT19NT0RFX05PUk1BTCwgICAvLyBBdWRpb1N5c3RlbTo6TU9ERV9OT1JNQUwKKyAgICBBVURJT19NT0RFX1JJTkdUT05FLCAvLyBBdWRpb1N5c3RlbTo6TU9ERV9SSU5HVE9ORQorICAgIEFVRElPX01PREVfSU5fQ0FMTCAgIC8vIEF1ZGlvU3lzdGVtOjpNT0RFX0lOX0NBTEwKK307CisKK2ludCBBdWRpb0ZsaW5nZXI6OkVmZmVjdE1vZHVsZTo6bW9kZUF1ZGlvU3lzdGVtVG9FZmZlY3RBcGkodWludDMyX3QgbW9kZSkKK3sKKyAgICBpbnQgbW9kZU91dCA9IC0xOworICAgIGlmIChtb2RlIDwgc2l6ZW9mKHNNb2RlQ29udlRhYmxlKSAvIHNpemVvZih1aW50MzJfdCkpIHsKKyAgICAgICAgbW9kZU91dCA9IChpbnQpc01vZGVDb252VGFibGVbbW9kZV07CisgICAgfQorICAgIHJldHVybiBtb2RlT3V0OworfQorCitzdGF0dXNfdCBBdWRpb0ZsaW5nZXI6OkVmZmVjdE1vZHVsZTo6ZHVtcChpbnQgZmQsIGNvbnN0IFZlY3RvcjxTdHJpbmcxNj4mIGFyZ3MpCit7CisgICAgY29uc3Qgc2l6ZV90IFNJWkUgPSAyNTY7CisgICAgY2hhciBidWZmZXJbU0laRV07CisgICAgU3RyaW5nOCByZXN1bHQ7CisKKyAgICBzbnByaW50ZihidWZmZXIsIFNJWkUsICJcdEVmZmVjdCBJRCAlZDpcbiIsIG1JZCk7CisgICAgcmVzdWx0LmFwcGVuZChidWZmZXIpOworCisgICAgYm9vbCBsb2NrZWQgPSB0cnlMb2NrKG1Mb2NrKTsKKyAgICAvLyBmYWlsZWQgdG8gbG9jayAtIEF1ZGlvRmxpbmdlciBpcyBwcm9iYWJseSBkZWFkbG9ja2VkCisgICAgaWYgKCFsb2NrZWQpIHsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiXHRcdENvdWxkIG5vdCBsb2NrIEZ4IG11dGV4OlxuIik7CisgICAgfQorCisgICAgcmVzdWx0LmFwcGVuZCgiXHRcdFNlc3Npb24gU3RhdHVzIFN0YXRlIEVuZ2luZTpcbiIpOworICAgIHNucHJpbnRmKGJ1ZmZlciwgU0laRSwgIlx0XHQlMDVkICAgJTAzZCAgICAlMDNkICAgMHglMDh4XG4iLAorICAgICAgICAgICAgbVNlc3Npb25JZCwgbVN0YXR1cywgbVN0YXRlLCAodWludDMyX3QpbUVmZmVjdEludGVyZmFjZSk7CisgICAgcmVzdWx0LmFwcGVuZChidWZmZXIpOworCisgICAgcmVzdWx0LmFwcGVuZCgiXHRcdERlc2NyaXB0b3I6XG4iKTsKKyAgICBzbnByaW50ZihidWZmZXIsIFNJWkUsICJcdFx0LSBVVUlEOiAlMDhYLSUwNFgtJTA0WC0lMDRYLSUwMlglMDJYJTAyWCUwMlglMDJYJTAyWFxuIiwKKyAgICAgICAgICAgIG1EZXNjcmlwdG9yLnV1aWQudGltZUxvdywgbURlc2NyaXB0b3IudXVpZC50aW1lTWlkLCBtRGVzY3JpcHRvci51dWlkLnRpbWVIaUFuZFZlcnNpb24sCisgICAgICAgICAgICBtRGVzY3JpcHRvci51dWlkLmNsb2NrU2VxLCBtRGVzY3JpcHRvci51dWlkLm5vZGVbMF0sIG1EZXNjcmlwdG9yLnV1aWQubm9kZVsxXSxtRGVzY3JpcHRvci51dWlkLm5vZGVbMl0sCisgICAgICAgICAgICBtRGVzY3JpcHRvci51dWlkLm5vZGVbM10sbURlc2NyaXB0b3IudXVpZC5ub2RlWzRdLG1EZXNjcmlwdG9yLnV1aWQubm9kZVs1XSk7CisgICAgcmVzdWx0LmFwcGVuZChidWZmZXIpOworICAgIHNucHJpbnRmKGJ1ZmZlciwgU0laRSwgIlx0XHQtIFRZUEU6ICUwOFgtJTA0WC0lMDRYLSUwNFgtJTAyWCUwMlglMDJYJTAyWCUwMlglMDJYXG4iLAorICAgICAgICAgICAgICAgIG1EZXNjcmlwdG9yLnR5cGUudGltZUxvdywgbURlc2NyaXB0b3IudHlwZS50aW1lTWlkLCBtRGVzY3JpcHRvci50eXBlLnRpbWVIaUFuZFZlcnNpb24sCisgICAgICAgICAgICAgICAgbURlc2NyaXB0b3IudHlwZS5jbG9ja1NlcSwgbURlc2NyaXB0b3IudHlwZS5ub2RlWzBdLCBtRGVzY3JpcHRvci50eXBlLm5vZGVbMV0sbURlc2NyaXB0b3IudHlwZS5ub2RlWzJdLAorICAgICAgICAgICAgICAgIG1EZXNjcmlwdG9yLnR5cGUubm9kZVszXSxtRGVzY3JpcHRvci50eXBlLm5vZGVbNF0sbURlc2NyaXB0b3IudHlwZS5ub2RlWzVdKTsKKyAgICByZXN1bHQuYXBwZW5kKGJ1ZmZlcik7CisgICAgc25wcmludGYoYnVmZmVyLCBTSVpFLCAiXHRcdC0gYXBpVmVyc2lvbjogJTA0WFxuXHRcdC0gZmxhZ3M6ICUwOFhcbiIsCisgICAgICAgICAgICBtRGVzY3JpcHRvci5hcGlWZXJzaW9uLAorICAgICAgICAgICAgbURlc2NyaXB0b3IuZmxhZ3MpOworICAgIHJlc3VsdC5hcHBlbmQoYnVmZmVyKTsKKyAgICBzbnByaW50ZihidWZmZXIsIFNJWkUsICJcdFx0LSBuYW1lOiAlc1xuIiwKKyAgICAgICAgICAgIG1EZXNjcmlwdG9yLm5hbWUpOworICAgIHJlc3VsdC5hcHBlbmQoYnVmZmVyKTsKKyAgICBzbnByaW50ZihidWZmZXIsIFNJWkUsICJcdFx0LSBpbXBsZW1lbnRvcjogJXNcbiIsCisgICAgICAgICAgICBtRGVzY3JpcHRvci5pbXBsZW1lbnRvcik7CisgICAgcmVzdWx0LmFwcGVuZChidWZmZXIpOworCisgICAgcmVzdWx0LmFwcGVuZCgiXHRcdC0gSW5wdXQgY29uZmlndXJhdGlvbjpcbiIpOworICAgIHJlc3VsdC5hcHBlbmQoIlx0XHRcdEJ1ZmZlciAgICAgRnJhbWVzICBTbXAgcmF0ZSBDaGFubmVscyBGb3JtYXRcbiIpOworICAgIHNucHJpbnRmKGJ1ZmZlciwgU0laRSwgIlx0XHRcdDB4JTA4eCAlMDVkICAgJTA1ZCAgICAlMDh4ICVkXG4iLAorICAgICAgICAgICAgKHVpbnQzMl90KW1Db25maWcuaW5wdXRDZmcuYnVmZmVyLnJhdywKKyAgICAgICAgICAgIG1Db25maWcuaW5wdXRDZmcuYnVmZmVyLmZyYW1lQ291bnQsCisgICAgICAgICAgICBtQ29uZmlnLmlucHV0Q2ZnLnNhbXBsaW5nUmF0ZSwKKyAgICAgICAgICAgIG1Db25maWcuaW5wdXRDZmcuY2hhbm5lbHMsCisgICAgICAgICAgICBtQ29uZmlnLmlucHV0Q2ZnLmZvcm1hdCk7CisgICAgcmVzdWx0LmFwcGVuZChidWZmZXIpOworCisgICAgcmVzdWx0LmFwcGVuZCgiXHRcdC0gT3V0cHV0IGNvbmZpZ3VyYXRpb246XG4iKTsKKyAgICByZXN1bHQuYXBwZW5kKCJcdFx0XHRCdWZmZXIgICAgIEZyYW1lcyAgU21wIHJhdGUgQ2hhbm5lbHMgRm9ybWF0XG4iKTsKKyAgICBzbnByaW50ZihidWZmZXIsIFNJWkUsICJcdFx0XHQweCUwOHggJTA1ZCAgICUwNWQgICAgJTA4eCAlZFxuIiwKKyAgICAgICAgICAgICh1aW50MzJfdCltQ29uZmlnLm91dHB1dENmZy5idWZmZXIucmF3LAorICAgICAgICAgICAgbUNvbmZpZy5vdXRwdXRDZmcuYnVmZmVyLmZyYW1lQ291bnQsCisgICAgICAgICAgICBtQ29uZmlnLm91dHB1dENmZy5zYW1wbGluZ1JhdGUsCisgICAgICAgICAgICBtQ29uZmlnLm91dHB1dENmZy5jaGFubmVscywKKyAgICAgICAgICAgIG1Db25maWcub3V0cHV0Q2ZnLmZvcm1hdCk7CisgICAgcmVzdWx0LmFwcGVuZChidWZmZXIpOworCisgICAgc25wcmludGYoYnVmZmVyLCBTSVpFLCAiXHRcdCVkIENsaWVudHM6XG4iLCBtSGFuZGxlcy5zaXplKCkpOworICAgIHJlc3VsdC5hcHBlbmQoYnVmZmVyKTsKKyAgICByZXN1bHQuYXBwZW5kKCJcdFx0XHRQaWQgICBQcmlvcml0eSBDdHJsIExvY2tlZCBjbGllbnQgc2VydmVyXG4iKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1IYW5kbGVzLnNpemUoKTsgKytpKSB7CisgICAgICAgIHNwPEVmZmVjdEhhbmRsZT4gaGFuZGxlID0gbUhhbmRsZXNbaV0ucHJvbW90ZSgpOworICAgICAgICBpZiAoaGFuZGxlICE9IDApIHsKKyAgICAgICAgICAgIGhhbmRsZS0+ZHVtcChidWZmZXIsIFNJWkUpOworICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChidWZmZXIpOworICAgICAgICB9CisgICAgfQorCisgICAgcmVzdWx0LmFwcGVuZCgiXG4iKTsKKworICAgIHdyaXRlKGZkLCByZXN1bHQuc3RyaW5nKCksIHJlc3VsdC5sZW5ndGgoKSk7CisKKyAgICBpZiAobG9ja2VkKSB7CisgICAgICAgIG1Mb2NrLnVubG9jaygpOworICAgIH0KKworICAgIHJldHVybiBOT19FUlJPUjsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gIEVmZmVjdEhhbmRsZSBpbXBsZW1lbnRhdGlvbgorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjdW5kZWYgTE9HX1RBRworI2RlZmluZSBMT0dfVEFHICJBdWRpb0ZsaW5nZXI6OkVmZmVjdEhhbmRsZSIKKworQXVkaW9GbGluZ2VyOjpFZmZlY3RIYW5kbGU6OkVmZmVjdEhhbmRsZShjb25zdCBzcDxFZmZlY3RNb2R1bGU+JiBlZmZlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3A8QXVkaW9GbGluZ2VyOjpDbGllbnQ+JiBjbGllbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3A8SUVmZmVjdENsaWVudD4mIGVmZmVjdENsaWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHByaW9yaXR5KQorICAgIDogQm5FZmZlY3QoKSwKKyAgICBtRWZmZWN0KGVmZmVjdCksIG1FZmZlY3RDbGllbnQoZWZmZWN0Q2xpZW50KSwgbUNsaWVudChjbGllbnQpLCBtUHJpb3JpdHkocHJpb3JpdHkpLCBtSGFzQ29udHJvbChmYWxzZSkKK3sKKyAgICBMT0dWKCJjb25zdHJ1Y3RvciAlcCIsIHRoaXMpOworCisgICAgaW50IGJ1Zk9mZnNldCA9ICgoc2l6ZW9mKGVmZmVjdF9wYXJhbV9jYmxrX3QpIC0gMSkgLyBzaXplb2YoaW50KSArIDEpICogc2l6ZW9mKGludCk7CisgICAgbUNibGtNZW1vcnkgPSBjbGllbnQtPmhlYXAoKS0+YWxsb2NhdGUoRUZGRUNUX1BBUkFNX0JVRkZFUl9TSVpFICsgYnVmT2Zmc2V0KTsKKyAgICBpZiAobUNibGtNZW1vcnkgIT0gMCkgeworICAgICAgICBtQ2JsayA9IHN0YXRpY19jYXN0PGVmZmVjdF9wYXJhbV9jYmxrX3QgKj4obUNibGtNZW1vcnktPnBvaW50ZXIoKSk7CisKKyAgICAgICAgaWYgKG1DYmxrKSB7CisgICAgICAgICAgICBuZXcobUNibGspIGVmZmVjdF9wYXJhbV9jYmxrX3QoKTsKKyAgICAgICAgICAgIG1CdWZmZXIgPSAodWludDhfdCAqKW1DYmxrICsgYnVmT2Zmc2V0OworICAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIExPR0UoIm5vdCBlbm91Z2ggbWVtb3J5IGZvciBFZmZlY3Qgc2l6ZT0ldSIsIEVGRkVDVF9QQVJBTV9CVUZGRVJfU0laRSArIHNpemVvZihlZmZlY3RfcGFyYW1fY2Jsa190KSk7CisgICAgICAgIHJldHVybjsKKyAgICB9Cit9CisKK0F1ZGlvRmxpbmdlcjo6RWZmZWN0SGFuZGxlOjp+RWZmZWN0SGFuZGxlKCkKK3sKKyAgICBMT0dWKCJEZXN0cnVjdG9yICVwIiwgdGhpcyk7CisgICAgZGlzY29ubmVjdCgpOworfQorCitzdGF0dXNfdCBBdWRpb0ZsaW5nZXI6OkVmZmVjdEhhbmRsZTo6ZW5hYmxlKCkKK3sKKyAgICBpZiAoIW1IYXNDb250cm9sKSByZXR1cm4gSU5WQUxJRF9PUEVSQVRJT047CisgICAgaWYgKG1FZmZlY3QgPT0gMCkgcmV0dXJuIERFQURfT0JKRUNUOworCisgICAgcmV0dXJuIG1FZmZlY3QtPnNldEVuYWJsZWQodHJ1ZSk7Cit9CisKK3N0YXR1c190IEF1ZGlvRmxpbmdlcjo6RWZmZWN0SGFuZGxlOjpkaXNhYmxlKCkKK3sKKyAgICBpZiAoIW1IYXNDb250cm9sKSByZXR1cm4gSU5WQUxJRF9PUEVSQVRJT047CisgICAgaWYgKG1FZmZlY3QgPT0gTlVMTCkgcmV0dXJuIERFQURfT0JKRUNUOworCisgICAgcmV0dXJuIG1FZmZlY3QtPnNldEVuYWJsZWQoZmFsc2UpOworfQorCit2b2lkIEF1ZGlvRmxpbmdlcjo6RWZmZWN0SGFuZGxlOjpkaXNjb25uZWN0KCkKK3sKKyAgICBpZiAobUVmZmVjdCA9PSAwKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbUVmZmVjdC0+ZGlzY29ubmVjdCh0aGlzKTsKKyAgICAvLyByZWxlYXNlIHNwIG9uIG1vZHVsZSA9PiBtb2R1bGUgZGVzdHJ1Y3RvciBjYW4gYmUgY2FsbGVkIG5vdworICAgIG1FZmZlY3QuY2xlYXIoKTsKKyAgICBpZiAobUNibGspIHsKKyAgICAgICAgbUNibGstPn5lZmZlY3RfcGFyYW1fY2Jsa190KCk7ICAgLy8gZGVzdHJveSBvdXIgc2hhcmVkLXN0cnVjdHVyZS4KKyAgICB9CisgICAgbUNibGtNZW1vcnkuY2xlYXIoKTsgICAgICAgICAgICAvLyBhbmQgZnJlZSB0aGUgc2hhcmVkIG1lbW9yeQorICAgIGlmIChtQ2xpZW50ICE9IDApIHsKKyAgICAgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1DbGllbnQtPmF1ZGlvRmxpbmdlcigpLT5tTG9jayk7CisgICAgICAgIG1DbGllbnQuY2xlYXIoKTsKKyAgICB9Cit9CisKK3N0YXR1c190IEF1ZGlvRmxpbmdlcjo6RWZmZWN0SGFuZGxlOjpjb21tYW5kKGludCBjbWRDb2RlLCBpbnQgY21kU2l6ZSwgdm9pZCAqcENtZERhdGEsIGludCAqcmVwbHlTaXplLCB2b2lkICpwUmVwbHlEYXRhKQoreworLy8gICAgTE9HVigiY29tbWFuZCgpLCBjbWRDb2RlOiAlZCwgbUhhc0NvbnRyb2w6ICVkLCBtRWZmZWN0OiAlcCIsIGNtZENvZGUsIG1IYXNDb250cm9sLCAobUVmZmVjdCA9PSAwKSA/IDAgOiBtRWZmZWN0LmdldCgpKTsKKworICAgIC8vIG9ubHkgZ2V0IHBhcmFtZXRlciBjb21tYW5kIGlzIHBlcm1pdHRlZCBmb3IgYXBwbGljYXRpb25zIG5vdCBjb250cm9sbGluZyB0aGUgZWZmZWN0CisgICAgaWYgKCFtSGFzQ29udHJvbCAmJiBjbWRDb2RlICE9IEVGRkVDVF9DTURfR0VUX1BBUkFNKSB7CisgICAgICAgIHJldHVybiBJTlZBTElEX09QRVJBVElPTjsKKyAgICB9CisgICAgaWYgKG1FZmZlY3QgPT0gMCkgcmV0dXJuIERFQURfT0JKRUNUOworCisgICAgLy8gaGFuZGxlIGNvbW1hbmRzIHRoYXQgYXJlIG5vdCBmb3J3YXJkZWQgdHJhbnNwYXJlbnRseSB0byBlZmZlY3QgZW5naW5lCisgICAgaWYgKGNtZENvZGUgPT0gRUZGRUNUX0NNRF9TRVRfUEFSQU1fQ09NTUlUKSB7CisgICAgICAgIC8vIE5vIG5lZWQgdG8gdHJ5bG9jaygpIGhlcmUgYXMgdGhpcyBmdW5jdGlvbiBpcyBleGVjdXRlZCBpbiB0aGUgYmluZGVyIHRocmVhZCBzZXJ2aW5nIGEgcGFydGljdWxhciBjbGllbnQgcHJvY2VzczoKKyAgICAgICAgLy8gbm8gcmlzayB0byBibG9jayB0aGUgd2hvbGUgbWVkaWEgc2VydmVyIHByb2Nlc3Mgb3IgbWl4ZXIgdGhyZWFkcyBpcyB3ZSBhcmUgc3R1Y2sgaGVyZQorICAgICAgICBNdXRleDo6QXV0b2xvY2sgX2wobUNibGstPmxvY2spOworICAgICAgICBpZiAobUNibGstPmNsaWVudEluZGV4ID4gRUZGRUNUX1BBUkFNX0JVRkZFUl9TSVpFIHx8CisgICAgICAgICAgICBtQ2Jsay0+c2VydmVySW5kZXggPiBFRkZFQ1RfUEFSQU1fQlVGRkVSX1NJWkUpIHsKKyAgICAgICAgICAgIG1DYmxrLT5zZXJ2ZXJJbmRleCA9IDA7CisgICAgICAgICAgICBtQ2Jsay0+Y2xpZW50SW5kZXggPSAwOworICAgICAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKyAgICAgICAgfQorICAgICAgICBzdGF0dXNfdCBzdGF0dXMgPSBOT19FUlJPUjsKKyAgICAgICAgd2hpbGUgKG1DYmxrLT5zZXJ2ZXJJbmRleCA8IG1DYmxrLT5jbGllbnRJbmRleCkgeworICAgICAgICAgICAgaW50IHJlcGx5OworICAgICAgICAgICAgaW50IHJzaXplID0gc2l6ZW9mKGludCk7CisgICAgICAgICAgICBpbnQgKnAgPSAoaW50ICopKG1CdWZmZXIgKyBtQ2Jsay0+c2VydmVySW5kZXgpOworICAgICAgICAgICAgaW50IHNpemUgPSAqcCsrOworICAgICAgICAgICAgaWYgKCgodWludDhfdCAqKXAgKyBzaXplKSA+IG1CdWZmZXIgKyBtQ2Jsay0+Y2xpZW50SW5kZXgpIHsKKyAgICAgICAgICAgICAgICBMT0dXKCJjb21tYW5kKCk6IGludmFsaWQgcGFyYW1ldGVyIGJsb2NrIHNpemUiKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVmZmVjdF9wYXJhbV90ICpwYXJhbSA9IChlZmZlY3RfcGFyYW1fdCAqKXA7CisgICAgICAgICAgICBpZiAocGFyYW0tPnBzaXplID09IDAgfHwgcGFyYW0tPnZzaXplID09IDApIHsKKyAgICAgICAgICAgICAgICBMT0dXKCJjb21tYW5kKCk6IG51bGwgcGFyYW1ldGVyIG9yIHZhbHVlIHNpemUiKTsKKyAgICAgICAgICAgICAgICBtQ2Jsay0+c2VydmVySW5kZXggKz0gc2l6ZTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGludCBwc2l6ZSA9IHNpemVvZihlZmZlY3RfcGFyYW1fdCkgKyAoKHBhcmFtLT5wc2l6ZSAtIDEpIC8gc2l6ZW9mKGludCkgKyAxKSAqIHNpemVvZihpbnQpICsgcGFyYW0tPnZzaXplOworICAgICAgICAgICAgc3RhdHVzX3QgcmV0ID0gbUVmZmVjdC0+Y29tbWFuZChFRkZFQ1RfQ01EX1NFVF9QQVJBTSwgcHNpemUsIHAsICZyc2l6ZSwgJnJlcGx5KTsKKyAgICAgICAgICAgIGlmIChyZXQgPT0gTk9fRVJST1IpIHsKKyAgICAgICAgICAgICAgICBpZiAocmVwbHkgIT0gTk9fRVJST1IpIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gcmVwbHk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzdGF0dXMgPSByZXQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtQ2Jsay0+c2VydmVySW5kZXggKz0gc2l6ZTsKKyAgICAgICAgfQorICAgICAgICBtQ2Jsay0+c2VydmVySW5kZXggPSAwOworICAgICAgICBtQ2Jsay0+Y2xpZW50SW5kZXggPSAwOworICAgICAgICByZXR1cm4gc3RhdHVzOworICAgIH0gZWxzZSBpZiAoY21kQ29kZSA9PSBFRkZFQ1RfQ01EX0VOQUJMRSkgeworICAgICAgICByZXR1cm4gZW5hYmxlKCk7CisgICAgfSBlbHNlIGlmIChjbWRDb2RlID09IEVGRkVDVF9DTURfRElTQUJMRSkgeworICAgICAgICByZXR1cm4gZGlzYWJsZSgpOworICAgIH0KKworICAgIHJldHVybiBtRWZmZWN0LT5jb21tYW5kKGNtZENvZGUsIGNtZFNpemUsIHBDbWREYXRhLCByZXBseVNpemUsIHBSZXBseURhdGEpOworfQorCitzcDxJTWVtb3J5PiBBdWRpb0ZsaW5nZXI6OkVmZmVjdEhhbmRsZTo6Z2V0Q2JsaygpIGNvbnN0IHsKKyAgICByZXR1cm4gbUNibGtNZW1vcnk7Cit9CisKK3ZvaWQgQXVkaW9GbGluZ2VyOjpFZmZlY3RIYW5kbGU6OnNldENvbnRyb2woYm9vbCBoYXNDb250cm9sLCBib29sIHNpZ25hbCkKK3sKKyAgICBMT0dWKCJzZXRDb250cm9sICVwIGNvbnRyb2wgJWQiLCB0aGlzLCBoYXNDb250cm9sKTsKKworICAgIG1IYXNDb250cm9sID0gaGFzQ29udHJvbDsKKyAgICBpZiAoc2lnbmFsICYmIG1FZmZlY3RDbGllbnQgIT0gMCkgeworICAgICAgICBtRWZmZWN0Q2xpZW50LT5jb250cm9sU3RhdHVzQ2hhbmdlZChoYXNDb250cm9sKTsKKyAgICB9Cit9CisKK3ZvaWQgQXVkaW9GbGluZ2VyOjpFZmZlY3RIYW5kbGU6OmNvbW1hbmRFeGVjdXRlZChpbnQgY21kQ29kZSwgaW50IGNtZFNpemUsIHZvaWQgKnBDbWREYXRhLCBpbnQgcmVwbHlTaXplLCB2b2lkICpwUmVwbHlEYXRhKQoreworICAgIGlmIChtRWZmZWN0Q2xpZW50ICE9IDApIHsKKyAgICAgICAgbUVmZmVjdENsaWVudC0+Y29tbWFuZEV4ZWN1dGVkKGNtZENvZGUsIGNtZFNpemUsIHBDbWREYXRhLCByZXBseVNpemUsIHBSZXBseURhdGEpOworICAgIH0KK30KKworCisKK3ZvaWQgQXVkaW9GbGluZ2VyOjpFZmZlY3RIYW5kbGU6OnNldEVuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAgIGlmIChtRWZmZWN0Q2xpZW50ICE9IDApIHsKKyAgICAgICAgbUVmZmVjdENsaWVudC0+ZW5hYmxlU3RhdHVzQ2hhbmdlZChlbmFibGVkKTsKKyAgICB9Cit9CisKK3N0YXR1c190IEF1ZGlvRmxpbmdlcjo6RWZmZWN0SGFuZGxlOjpvblRyYW5zYWN0KAorICAgIHVpbnQzMl90IGNvZGUsIGNvbnN0IFBhcmNlbCYgZGF0YSwgUGFyY2VsKiByZXBseSwgdWludDMyX3QgZmxhZ3MpCit7CisgICAgcmV0dXJuIEJuRWZmZWN0OjpvblRyYW5zYWN0KGNvZGUsIGRhdGEsIHJlcGx5LCBmbGFncyk7Cit9CisKKwordm9pZCBBdWRpb0ZsaW5nZXI6OkVmZmVjdEhhbmRsZTo6ZHVtcChjaGFyKiBidWZmZXIsIHNpemVfdCBzaXplKQoreworICAgIGJvb2wgbG9ja2VkID0gdHJ5TG9jayhtQ2Jsay0+bG9jayk7CisKKyAgICBzbnByaW50ZihidWZmZXIsIHNpemUsICJcdFx0XHQlMDVkICUwNWQgICAgJTAxdSAgICAlMDF1ICAgICAgJTA1dSAgJTA1dVxuIiwKKyAgICAgICAgICAgIChtQ2xpZW50ID09IE5VTEwpID8gZ2V0cGlkKCkgOiBtQ2xpZW50LT5waWQoKSwKKyAgICAgICAgICAgIG1Qcmlvcml0eSwKKyAgICAgICAgICAgIG1IYXNDb250cm9sLAorICAgICAgICAgICAgIWxvY2tlZCwKKyAgICAgICAgICAgIG1DYmxrLT5jbGllbnRJbmRleCwKKyAgICAgICAgICAgIG1DYmxrLT5zZXJ2ZXJJbmRleAorICAgICAgICAgICAgKTsKKworICAgIGlmIChsb2NrZWQpIHsKKyAgICAgICAgbUNibGstPmxvY2sudW5sb2NrKCk7CisgICAgfQorfQorCisjdW5kZWYgTE9HX1RBRworI2RlZmluZSBMT0dfVEFHICJBdWRpb0ZsaW5nZXI6OkVmZmVjdENoYWluIgorCitBdWRpb0ZsaW5nZXI6OkVmZmVjdENoYWluOjpFZmZlY3RDaGFpbihjb25zdCB3cDxUaHJlYWRCYXNlPiYgd1RocmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2Vzc2lvbklkKQorICAgIDogbVRocmVhZCh3VGhyZWFkKSwgbVNlc3Npb25JZChzZXNzaW9uSWQpLCBtVm9sdW1lQ3RybElkeCgtMSksIG1BY3RpdmVUcmFja0NudCgwKSwgbU93bkluQnVmZmVyKGZhbHNlKQoreworCit9CisKK0F1ZGlvRmxpbmdlcjo6RWZmZWN0Q2hhaW46On5FZmZlY3RDaGFpbigpCit7CisgICAgaWYgKG1Pd25JbkJ1ZmZlcikgeworICAgICAgICBkZWxldGUgbUluQnVmZmVyOworICAgIH0KKworfQorCitzcDxBdWRpb0ZsaW5nZXI6OkVmZmVjdE1vZHVsZT4gQXVkaW9GbGluZ2VyOjpFZmZlY3RDaGFpbjo6Z2V0RWZmZWN0RnJvbURlc2MoZWZmZWN0X2Rlc2NyaXB0b3JfdCAqZGVzY3JpcHRvcikKK3sKKyAgICBzcDxFZmZlY3RNb2R1bGU+IGVmZmVjdDsKKyAgICBzaXplX3Qgc2l6ZSA9IG1FZmZlY3RzLnNpemUoKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgIGlmIChtZW1jbXAoJm1FZmZlY3RzW2ldLT5kZXNjKCkudXVpZCwgJmRlc2NyaXB0b3ItPnV1aWQsIHNpemVvZihlZmZlY3RfdXVpZF90KSkgPT0gMCkgeworICAgICAgICAgICAgZWZmZWN0ID0gbUVmZmVjdHNbaV07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZWZmZWN0OworfQorCitzcDxBdWRpb0ZsaW5nZXI6OkVmZmVjdE1vZHVsZT4gQXVkaW9GbGluZ2VyOjpFZmZlY3RDaGFpbjo6Z2V0RWZmZWN0RnJvbUlkKGludCBpZCkKK3sKKyAgICBzcDxFZmZlY3RNb2R1bGU+IGVmZmVjdDsKKyAgICBzaXplX3Qgc2l6ZSA9IG1FZmZlY3RzLnNpemUoKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgIGlmIChtRWZmZWN0c1tpXS0+aWQoKSA9PSBpZCkgeworICAgICAgICAgICAgZWZmZWN0ID0gbUVmZmVjdHNbaV07CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZWZmZWN0OworfQorCisvLyBNdXN0IGJlIGNhbGxlZCB3aXRoIEVmZmVjdENoYWluOjptTG9jayBsb2NrZWQKK3ZvaWQgQXVkaW9GbGluZ2VyOjpFZmZlY3RDaGFpbjo6cHJvY2Vzc19sKCkKK3sKKyAgICBzaXplX3Qgc2l6ZSA9IG1FZmZlY3RzLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICBtRWZmZWN0c1tpXS0+cHJvY2VzcygpOworICAgIH0KKyAgICAvLyBpZiBubyB0cmFjayBpcyBhY3RpdmUsIGlucHV0IGJ1ZmZlciBtdXN0IGJlIGNsZWFyZWQgaGVyZSBhcyB0aGUgbWl4ZXIgcHJvY2VzcworICAgIC8vIHdpbGwgbm90IGRvIGl0CisgICAgaWYgKG1TZXNzaW9uSWQgPiAwICYmIGFjdGl2ZVRyYWNrcygpID09IDApIHsKKyAgICAgICAgc3A8VGhyZWFkQmFzZT4gdGhyZWFkID0gbVRocmVhZC5wcm9tb3RlKCk7CisgICAgICAgIGlmICh0aHJlYWQgIT0gMCkgeworICAgICAgICAgICAgc2l6ZV90IG51bVNhbXBsZXMgPSB0aHJlYWQtPmZyYW1lQ291bnQoKSAqIHRocmVhZC0+Y2hhbm5lbENvdW50KCk7CisgICAgICAgICAgICBtZW1zZXQobUluQnVmZmVyLCAwLCBudW1TYW1wbGVzICogc2l6ZW9mKGludDE2X3QpKTsKKyAgICAgICAgfQorICAgIH0KK30KKworc3RhdHVzX3QgQXVkaW9GbGluZ2VyOjpFZmZlY3RDaGFpbjo6YWRkRWZmZWN0KHNwPEVmZmVjdE1vZHVsZT4mIGVmZmVjdCkKK3sKKyAgICBlZmZlY3RfZGVzY3JpcHRvcl90IGRlc2MgPSBlZmZlY3QtPmRlc2MoKTsKKyAgICB1aW50MzJfdCBpbnNlcnRQcmVmID0gZGVzYy5mbGFncyAmIEVGRkVDVF9GTEFHX0lOU0VSVF9NQVNLOworCisgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1Mb2NrKTsKKworICAgIGlmICgoZGVzYy5mbGFncyAmIEVGRkVDVF9GTEFHX1RZUEVfTUFTSykgPT0gRUZGRUNUX0ZMQUdfVFlQRV9BVVhJTElBUlkpIHsKKyAgICAgICAgLy8gQXV4aWxpYXJ5IGVmZmVjdHMgYXJlIGluc2VydGVkIGF0IHRoZSBiZWdpbm5pbmcgb2YgbUVmZmVjdHMgdmVjdG9yIGFzCisgICAgICAgIC8vIHRoZXkgYXJlIHByb2Nlc3NlZCBmaXJzdCBhbmQgYWNjdW11bGF0ZWQgaW4gY2hhaW4gaW5wdXQgYnVmZmVyCisgICAgICAgIG1FZmZlY3RzLmluc2VydEF0KGVmZmVjdCwgMCk7CisgICAgICAgIHNwPFRocmVhZEJhc2U+IHRocmVhZCA9IG1UaHJlYWQucHJvbW90ZSgpOworICAgICAgICBpZiAodGhyZWFkID09IDApIHsKKyAgICAgICAgICAgIHJldHVybiBOT19JTklUOworICAgICAgICB9CisgICAgICAgIC8vIHRoZSBpbnB1dCBidWZmZXIgZm9yIGF1eGlsaWFyeSBlZmZlY3QgY29udGFpbnMgbW9ubyBzYW1wbGVzIGluCisgICAgICAgIC8vIDMyIGJpdCBmb3JtYXQuIFRoaXMgaXMgdG8gYXZvaWQgc2F0dXJhdGlvbiBpbiBBdWRvTWl4ZXIKKyAgICAgICAgLy8gYWNjdW11bGF0aW9uIHN0YWdlLiBTYXR1cmF0aW9uIGlzIGRvbmUgaW4gRWZmZWN0TW9kdWxlOjpwcm9jZXNzKCkgYmVmb3JlCisgICAgICAgIC8vIGNhbGxpbmcgdGhlIHByb2Nlc3MgaW4gZWZmZWN0IGVuZ2luZQorICAgICAgICBzaXplX3QgbnVtU2FtcGxlcyA9IHRocmVhZC0+ZnJhbWVDb3VudCgpOworICAgICAgICBpbnQzMl90ICpidWZmZXIgPSBuZXcgaW50MzJfdFtudW1TYW1wbGVzXTsKKyAgICAgICAgbWVtc2V0KGJ1ZmZlciwgMCwgbnVtU2FtcGxlcyAqIHNpemVvZihpbnQzMl90KSk7CisgICAgICAgIGVmZmVjdC0+c2V0SW5CdWZmZXIoKGludDE2X3QgKilidWZmZXIpOworICAgICAgICAvLyBhdXhpbGlhcnkgZWZmZWN0cyBvdXRwdXQgc2FtcGxlcyB0byBjaGFpbiBpbnB1dCBidWZmZXIgZm9yIGZ1cnRoZXIgcHJvY2Vzc2luZworICAgICAgICAvLyBieSBpbnNlcnQgZWZmZWN0cworICAgICAgICBlZmZlY3QtPnNldE91dEJ1ZmZlcihtSW5CdWZmZXIpOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIEluc2VydCBlZmZlY3RzIGFyZSBpbnNlcnRlZCBhdCB0aGUgZW5kIG9mIG1FZmZlY3RzIHZlY3RvciBhcyB0aGV5IGFyZSBwcm9jZXNzZWQKKyAgICAgICAgLy8gIGFmdGVyIHRyYWNrIGFuZCBhdXhpbGlhcnkgZWZmZWN0cy4KKyAgICAgICAgLy8gSW5zZXJ0IGVmZmVjdCBvcmRlciBhcyBhIGZ1bmN0aW9uIG9mIGluZGljYXRlZCBwcmVmZXJlbmNlOgorICAgICAgICAvLyAgaWYgRUZGRUNUX0ZMQUdfSU5TRVJUX0VYQ0xVU0lWRSwgaW5zZXJ0IGluIGZpcnN0IHBvc2l0aW9uIG9yIHJlamVjdCBpZgorICAgICAgICAvLyAgYW5vdGhlciBlZmZlY3QgaXMgcHJlc2VudAorICAgICAgICAvLyAgZWxzZSBpZiBFRkZFQ1RfRkxBR19JTlNFUlRfRklSU1QsIGluc2VydCBpbiBmaXJzdCBwb3NpdGlvbiBvciBhZnRlciB0aGUKKyAgICAgICAgLy8gIGxhc3QgZWZmZWN0IGNsYWltaW5nIGZpcnN0IHBvc2l0aW9uCisgICAgICAgIC8vICBlbHNlIGlmIEVGRkVDVF9GTEFHX0lOU0VSVF9MQVNULCBpbnNlcnQgaW4gbGFzdCBwb3NpdGlvbiBvciBiZWZvcmUgdGhlCisgICAgICAgIC8vICBmaXJzdCBlZmZlY3QgY2xhaW1pbmcgbGFzdCBwb3NpdGlvbgorICAgICAgICAvLyAgZWxzZSBpZiBFRkZFQ1RfRkxBR19JTlNFUlRfQU5ZIGluc2VydCBhZnRlciBmaXJzdCBvciBiZWZvcmUgbGFzdAorICAgICAgICAvLyBSZWplY3QgaW5zZXJ0aW9uIGlmIGFuIGVmZmVjdCB3aXRoIEVGRkVDVF9GTEFHX0lOU0VSVF9FWENMVVNJVkUgaXMKKyAgICAgICAgLy8gYWxyZWFkeSBwcmVzZW50CisKKyAgICAgICAgaW50IHNpemUgPSAoaW50KW1FZmZlY3RzLnNpemUoKTsKKyAgICAgICAgaW50IGlkeF9pbnNlcnQgPSBzaXplOworICAgICAgICBpbnQgaWR4X2luc2VydF9maXJzdCA9IC0xOworICAgICAgICBpbnQgaWR4X2luc2VydF9sYXN0ID0gLTE7CisKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgICAgIGVmZmVjdF9kZXNjcmlwdG9yX3QgZCA9IG1FZmZlY3RzW2ldLT5kZXNjKCk7CisgICAgICAgICAgICB1aW50MzJfdCBpTW9kZSA9IGQuZmxhZ3MgJiBFRkZFQ1RfRkxBR19UWVBFX01BU0s7CisgICAgICAgICAgICB1aW50MzJfdCBpUHJlZiA9IGQuZmxhZ3MgJiBFRkZFQ1RfRkxBR19JTlNFUlRfTUFTSzsKKyAgICAgICAgICAgIGlmIChpTW9kZSA9PSBFRkZFQ1RfRkxBR19UWVBFX0lOU0VSVCkgeworICAgICAgICAgICAgICAgIC8vIGNoZWNrIGludmFsaWQgZWZmZWN0IGNoYWluaW5nIGNvbWJpbmF0aW9ucworICAgICAgICAgICAgICAgIGlmIChpbnNlcnRQcmVmID09IEVGRkVDVF9GTEFHX0lOU0VSVF9FWENMVVNJVkUgfHwKKyAgICAgICAgICAgICAgICAgICAgaVByZWYgPT0gRUZGRUNUX0ZMQUdfSU5TRVJUX0VYQ0xVU0lWRSkgeworICAgICAgICAgICAgICAgICAgICBMT0dXKCJhZGRFZmZlY3QoKSBjb3VsZCBub3QgaW5zZXJ0IGVmZmVjdCAlczogZXhjbHVzaXZlIGNvbmZsaWN0IHdpdGggJXMiLCBkZXNjLm5hbWUsIGQubmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBJTlZBTElEX09QRVJBVElPTjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLy8gcmVtZW1iZXIgcG9zaXRpb24gb2YgZmlyc3QgaW5zZXJ0IGVmZmVjdCBhbmQgYnkgZGVmYXVsdAorICAgICAgICAgICAgICAgIC8vIHNlbGVjdCB0aGlzIGFzIGluc2VydCBwb3NpdGlvbiBmb3IgbmV3IGVmZmVjdAorICAgICAgICAgICAgICAgIGlmIChpZHhfaW5zZXJ0ID09IHNpemUpIHsKKyAgICAgICAgICAgICAgICAgICAgaWR4X2luc2VydCA9IGk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8vIHJlbWVtYmVyIHBvc2l0aW9uIG9mIGxhc3QgaW5zZXJ0IGVmZmVjdCBjbGFpbWluZworICAgICAgICAgICAgICAgIC8vIGZpcnN0IHBvc2l0aW9uCisgICAgICAgICAgICAgICAgaWYgKGlQcmVmID09IEVGRkVDVF9GTEFHX0lOU0VSVF9GSVJTVCkgeworICAgICAgICAgICAgICAgICAgICBpZHhfaW5zZXJ0X2ZpcnN0ID0gaTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLy8gcmVtZW1iZXIgcG9zaXRpb24gb2YgZmlyc3QgaW5zZXJ0IGVmZmVjdCBjbGFpbWluZworICAgICAgICAgICAgICAgIC8vIGxhc3QgcG9zaXRpb24KKyAgICAgICAgICAgICAgICBpZiAoaVByZWYgPT0gRUZGRUNUX0ZMQUdfSU5TRVJUX0xBU1QgJiYKKyAgICAgICAgICAgICAgICAgICAgaWR4X2luc2VydF9sYXN0ID09IC0xKSB7CisgICAgICAgICAgICAgICAgICAgIGlkeF9pbnNlcnRfbGFzdCA9IGk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gbW9kaWZ5IGlkeF9pbnNlcnQgZnJvbSBmaXJzdCBwb3NpdGlvbiBpZiBuZWVkZWQKKyAgICAgICAgaWYgKGluc2VydFByZWYgPT0gRUZGRUNUX0ZMQUdfSU5TRVJUX0xBU1QpIHsKKyAgICAgICAgICAgIGlmIChpZHhfaW5zZXJ0X2xhc3QgIT0gLTEpIHsKKyAgICAgICAgICAgICAgICBpZHhfaW5zZXJ0ID0gaWR4X2luc2VydF9sYXN0OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZHhfaW5zZXJ0ID0gc2l6ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChpZHhfaW5zZXJ0X2ZpcnN0ICE9IC0xKSB7CisgICAgICAgICAgICAgICAgaWR4X2luc2VydCA9IGlkeF9pbnNlcnRfZmlyc3QgKyAxOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gYWx3YXlzIHJlYWQgc2FtcGxlcyBmcm9tIGNoYWluIGlucHV0IGJ1ZmZlcgorICAgICAgICBlZmZlY3QtPnNldEluQnVmZmVyKG1JbkJ1ZmZlcik7CisKKyAgICAgICAgLy8gaWYgbGFzdCBlZmZlY3QgaW4gdGhlIGNoYWluLCBvdXRwdXQgc2FtcGxlcyB0byBjaGFpbgorICAgICAgICAvLyBvdXRwdXQgYnVmZmVyLCBvdGhlcndpc2UgdG8gY2hhaW4gaW5wdXQgYnVmZmVyCisgICAgICAgIGlmIChpZHhfaW5zZXJ0ID09IHNpemUpIHsKKyAgICAgICAgICAgIGlmIChpZHhfaW5zZXJ0ICE9IDApIHsKKyAgICAgICAgICAgICAgICBtRWZmZWN0c1tpZHhfaW5zZXJ0LTFdLT5zZXRPdXRCdWZmZXIobUluQnVmZmVyKTsKKyAgICAgICAgICAgICAgICBtRWZmZWN0c1tpZHhfaW5zZXJ0LTFdLT5jb25maWd1cmUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVmZmVjdC0+c2V0T3V0QnVmZmVyKG1PdXRCdWZmZXIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZWZmZWN0LT5zZXRPdXRCdWZmZXIobUluQnVmZmVyKTsKKyAgICAgICAgfQorICAgICAgICBtRWZmZWN0cy5pbnNlcnRBdChlZmZlY3QsIGlkeF9pbnNlcnQpOworICAgICAgICAvLyBBbHdheXMgZ2l2ZSB2b2x1bWUgY29udHJvbCB0byBsYXN0IGVmZmVjdCBpbiBjaGFpbiB3aXRoIHZvbHVtZSBjb250cm9sIGNhcGFiaWxpdHkKKyAgICAgICAgaWYgKCgoZGVzYy5mbGFncyAmIEVGRkVDVF9GTEFHX1ZPTFVNRV9NQVNLKSAmIEVGRkVDVF9GTEFHX1ZPTFVNRV9DVFJMKSAmJgorICAgICAgICAgICAgICAgIG1Wb2x1bWVDdHJsSWR4IDwgaWR4X2luc2VydCkgeworICAgICAgICAgICAgbVZvbHVtZUN0cmxJZHggPSBpZHhfaW5zZXJ0OworICAgICAgICB9CisKKyAgICAgICAgTE9HVigiYWRkRWZmZWN0KCkgZWZmZWN0ICVwLCBhZGRlZCBpbiBjaGFpbiAlcCBhdCByYW5rICVkIiwgZWZmZWN0LmdldCgpLCB0aGlzLCBpZHhfaW5zZXJ0KTsKKyAgICB9CisgICAgZWZmZWN0LT5jb25maWd1cmUoKTsKKyAgICByZXR1cm4gTk9fRVJST1I7Cit9CisKK3NpemVfdCBBdWRpb0ZsaW5nZXI6OkVmZmVjdENoYWluOjpyZW1vdmVFZmZlY3QoY29uc3Qgc3A8RWZmZWN0TW9kdWxlPiYgZWZmZWN0KQoreworICAgIE11dGV4OjpBdXRvbG9jayBfbChtTG9jayk7CisKKyAgICBpbnQgc2l6ZSA9IChpbnQpbUVmZmVjdHMuc2l6ZSgpOworICAgIGludCBpOworICAgIHVpbnQzMl90IHR5cGUgPSBlZmZlY3QtPmRlc2MoKS5mbGFncyAmIEVGRkVDVF9GTEFHX1RZUEVfTUFTSzsKKworICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgaWYgKGVmZmVjdCA9PSBtRWZmZWN0c1tpXSkgeworICAgICAgICAgICAgaWYgKHR5cGUgPT0gRUZGRUNUX0ZMQUdfVFlQRV9BVVhJTElBUlkpIHsKKyAgICAgICAgICAgICAgICBkZWxldGVbXSBlZmZlY3QtPmluQnVmZmVyKCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChpID09IHNpemUgLSAxICYmIGkgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICBtRWZmZWN0c1tpIC0gMV0tPnNldE91dEJ1ZmZlcihtT3V0QnVmZmVyKTsKKyAgICAgICAgICAgICAgICAgICAgbUVmZmVjdHNbaSAtIDFdLT5jb25maWd1cmUoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtRWZmZWN0cy5yZW1vdmVBdChpKTsKKyAgICAgICAgICAgIExPR1YoInJlbW92ZUVmZmVjdCgpIGVmZmVjdCAlcCwgcmVtb3ZlZCBmcm9tIGNoYWluICVwIGF0IHJhbmsgJWQiLCBlZmZlY3QuZ2V0KCksIHRoaXMsIGkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgLy8gUmV0dXJuIHZvbHVtZSBjb250cm9sIHRvIGxhc3QgZWZmZWN0IGluIGNoYWluIHdpdGggdm9sdW1lIGNvbnRyb2wgY2FwYWJpbGl0eQorICAgIGlmIChtVm9sdW1lQ3RybElkeCA9PSBpKSB7CisgICAgICAgIHNpemUgPSAoaW50KW1FZmZlY3RzLnNpemUoKTsKKyAgICAgICAgZm9yIChpID0gc2l6ZTsgaSA+IDA7IGktLSkgeworICAgICAgICAgICAgaWYgKChtRWZmZWN0c1tpIC0gMV0tPmRlc2MoKS5mbGFncyAmIEVGRkVDVF9GTEFHX1ZPTFVNRV9NQVNLKSAmIEVGRkVDVF9GTEFHX1ZPTFVNRV9DVFJMKSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgLy8gbVZvbHVtZUN0cmxJZHggcmVzZXQgdG8gLTEgaWYgbm8gZWZmZWN0IGZvdW5kIHdpdGggdm9sdW1lIGNvbnRyb2wgZmxhZyBzZXQKKyAgICAgICAgbVZvbHVtZUN0cmxJZHggPSBpIC0gMTsKKyAgICB9CisKKyAgICByZXR1cm4gbUVmZmVjdHMuc2l6ZSgpOworfQorCit2b2lkIEF1ZGlvRmxpbmdlcjo6RWZmZWN0Q2hhaW46OnNldERldmljZSh1aW50MzJfdCBkZXZpY2UpCit7CisgICAgc2l6ZV90IHNpemUgPSBtRWZmZWN0cy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgbUVmZmVjdHNbaV0tPnNldERldmljZShkZXZpY2UpOworICAgIH0KK30KKwordm9pZCBBdWRpb0ZsaW5nZXI6OkVmZmVjdENoYWluOjpzZXRNb2RlKHVpbnQzMl90IG1vZGUpCit7CisgICAgc2l6ZV90IHNpemUgPSBtRWZmZWN0cy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgbUVmZmVjdHNbaV0tPnNldE1vZGUobW9kZSk7CisgICAgfQorfQorCitib29sIEF1ZGlvRmxpbmdlcjo6RWZmZWN0Q2hhaW46OnNldFZvbHVtZSh1aW50MzJfdCAqbGVmdCwgdWludDMyX3QgKnJpZ2h0KQoreworICAgIHVpbnQzMl90IG5ld0xlZnQgPSAqbGVmdDsKKyAgICB1aW50MzJfdCBuZXdSaWdodCA9ICpyaWdodDsKKyAgICBib29sIGhhc0NvbnRyb2wgPSBmYWxzZTsKKworICAgIC8vIGZpcnN0IGdldCB2b2x1bWUgdXBkYXRlIGZyb20gdm9sdW1lIGNvbnRyb2xsZXIKKyAgICBpZiAobVZvbHVtZUN0cmxJZHggPj0gMCkgeworICAgICAgICBtRWZmZWN0c1ttVm9sdW1lQ3RybElkeF0tPnNldFZvbHVtZSgmbmV3TGVmdCwgJm5ld1JpZ2h0LCB0cnVlKTsKKyAgICAgICAgaGFzQ29udHJvbCA9IHRydWU7CisgICAgfQorICAgIC8vIHRoZW4gaW5kaWNhdGUgdm9sdW1lIHRvIGFsbCBvdGhlciBlZmZlY3RzIGluIGNoYWluLgorICAgIC8vIFBhc3MgYWx0ZXJlZCB2b2x1bWUgdG8gZWZmZWN0cyBiZWZvcmUgdm9sdW1lIGNvbnRyb2xsZXIKKyAgICAvLyBhbmQgcmVxdWVzdGVkIHZvbHVtZSB0byBlZmZlY3RzIGFmdGVyIGNvbnRyb2xsZXIKKyAgICB1aW50MzJfdCBsVm9sID0gbmV3TGVmdDsKKyAgICB1aW50MzJfdCByVm9sID0gbmV3UmlnaHQ7CisgICAgc2l6ZV90IHNpemUgPSBtRWZmZWN0cy5zaXplKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgaWYgKChpbnQpaSA9PSBtVm9sdW1lQ3RybElkeCkgY29udGludWU7CisgICAgICAgIC8vIHRoaXMgYWxzbyB3b3JrcyBmb3IgbVZvbHVtZUN0cmxJZHggPT0gLTEgd2hlbiB0aGVyZSBpcyBubyB2b2x1bWUgY29udHJvbGxlcgorICAgICAgICBpZiAoKGludClpID4gbVZvbHVtZUN0cmxJZHgpIHsKKyAgICAgICAgICAgIGxWb2wgPSAqbGVmdDsKKyAgICAgICAgICAgIHJWb2wgPSAqcmlnaHQ7CisgICAgICAgIH0KKyAgICAgICAgbUVmZmVjdHNbaV0tPnNldFZvbHVtZSgmbFZvbCwgJnJWb2wsIGZhbHNlKTsKKyAgICB9CisgICAgKmxlZnQgPSBuZXdMZWZ0OworICAgICpyaWdodCA9IG5ld1JpZ2h0OworCisgICAgcmV0dXJuIGhhc0NvbnRyb2w7Cit9CisKK3NwPEF1ZGlvRmxpbmdlcjo6RWZmZWN0TW9kdWxlPiBBdWRpb0ZsaW5nZXI6OkVmZmVjdENoYWluOjpnZXRWb2x1bWVDb250cm9sbGVyKCkKK3sKKyAgICBzcDxFZmZlY3RNb2R1bGU+IGVmZmVjdDsKKyAgICBpZiAobVZvbHVtZUN0cmxJZHggPj0gMCkgeworICAgICAgICBlZmZlY3QgPSBtRWZmZWN0c1ttVm9sdW1lQ3RybElkeF07CisgICAgfQorICAgIHJldHVybiBlZmZlY3Q7Cit9CisKKworc3RhdHVzX3QgQXVkaW9GbGluZ2VyOjpFZmZlY3RDaGFpbjo6ZHVtcChpbnQgZmQsIGNvbnN0IFZlY3RvcjxTdHJpbmcxNj4mIGFyZ3MpCit7CisgICAgY29uc3Qgc2l6ZV90IFNJWkUgPSAyNTY7CisgICAgY2hhciBidWZmZXJbU0laRV07CisgICAgU3RyaW5nOCByZXN1bHQ7CisKKyAgICBzbnByaW50ZihidWZmZXIsIFNJWkUsICJFZmZlY3RzIGZvciBzZXNzaW9uICVkOlxuIiwgbVNlc3Npb25JZCk7CisgICAgcmVzdWx0LmFwcGVuZChidWZmZXIpOworCisgICAgYm9vbCBsb2NrZWQgPSB0cnlMb2NrKG1Mb2NrKTsKKyAgICAvLyBmYWlsZWQgdG8gbG9jayAtIEF1ZGlvRmxpbmdlciBpcyBwcm9iYWJseSBkZWFkbG9ja2VkCisgICAgaWYgKCFsb2NrZWQpIHsKKyAgICAgICAgcmVzdWx0LmFwcGVuZCgiXHRDb3VsZCBub3QgbG9jayBtdXRleDpcbiIpOworICAgIH0KKworICAgIHJlc3VsdC5hcHBlbmQoIlx0TnVtIGZ4IEluIGJ1ZmZlciAgIE91dCBidWZmZXIgICBWb2wgY3RybCBBY3RpdmUgdHJhY2tzOlxuIik7CisgICAgc25wcmludGYoYnVmZmVyLCBTSVpFLCAiXHQlMDJkICAgICAweCUwOHggIDB4JTA4eCAgICUwMmQgICAgICAgJWRcbiIsCisgICAgICAgICAgICBtRWZmZWN0cy5zaXplKCksCisgICAgICAgICAgICAodWludDMyX3QpbUluQnVmZmVyLAorICAgICAgICAgICAgKHVpbnQzMl90KW1PdXRCdWZmZXIsCisgICAgICAgICAgICAobVZvbHVtZUN0cmxJZHggPT0gLTEpID8gMCA6IG1FZmZlY3RzW21Wb2x1bWVDdHJsSWR4XS0+aWQoKSwKKyAgICAgICAgICAgIG1BY3RpdmVUcmFja0NudCk7CisgICAgcmVzdWx0LmFwcGVuZChidWZmZXIpOworICAgIHdyaXRlKGZkLCByZXN1bHQuc3RyaW5nKCksIHJlc3VsdC5zaXplKCkpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtRWZmZWN0cy5zaXplKCk7ICsraSkgeworICAgICAgICBzcDxFZmZlY3RNb2R1bGU+IGVmZmVjdCA9IG1FZmZlY3RzW2ldOworICAgICAgICBpZiAoZWZmZWN0ICE9IDApIHsKKyAgICAgICAgICAgIGVmZmVjdC0+ZHVtcChmZCwgYXJncyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobG9ja2VkKSB7CisgICAgICAgIG1Mb2NrLnVubG9jaygpOworICAgIH0KKworICAgIHJldHVybiBOT19FUlJPUjsKK30KKworI3VuZGVmIExPR19UQUcKKyNkZWZpbmUgTE9HX1RBRyAiQXVkaW9GbGluZ2VyIgorCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIHN0YXR1c190IEF1ZGlvRmxpbmdlcjo6b25UcmFuc2FjdCgKZGlmZiAtLWdpdCBhL2xpYnMvYXVkaW9mbGluZ2VyL0F1ZGlvRmxpbmdlci5oIGIvbGlicy9hdWRpb2ZsaW5nZXIvQXVkaW9GbGluZ2VyLmgKaW5kZXggNzM5ZWMzMy4uZWMzZDdmMSAxMDA2NDQKLS0tIGEvbGlicy9hdWRpb2ZsaW5nZXIvQXVkaW9GbGluZ2VyLmgKKysrIGIvbGlicy9hdWRpb2ZsaW5nZXIvQXVkaW9GbGluZ2VyLmgKQEAgLTQyLDYgKzQyLDcgQEAKIG5hbWVzcGFjZSBhbmRyb2lkIHsKIAogY2xhc3MgYXVkaW9fdHJhY2tfY2Jsa190OworY2xhc3MgZWZmZWN0X3BhcmFtX2NibGtfdDsKIGNsYXNzIEF1ZGlvTWl4ZXI7CiBjbGFzcyBBdWRpb0J1ZmZlcjsKIGNsYXNzIEF1ZGlvUmVzYW1wbGVyOwpAQCAtNTcsNyArNTgsNyBAQAogCiBzdGF0aWMgY29uc3QgbnNlY3NfdCBrU3RhbmRieVRpbWVJbk5zZWNzID0gc2Vjb25kcygzKTsKIAotY2xhc3MgQXVkaW9GbGluZ2VyIDogcHVibGljIEJuQXVkaW9GbGluZ2VyLCBwdWJsaWMgSUJpbmRlcjo6RGVhdGhSZWNpcGllbnQKK2NsYXNzIEF1ZGlvRmxpbmdlciA6IHB1YmxpYyBCbkF1ZGlvRmxpbmdlcgogewogcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGluc3RhbnRpYXRlKCk7CkBAIC03NSw2ICs3Niw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcDxJTWVtb3J5PiYgc2hhcmVkQnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnNlc3Npb25JZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzX3QgKnN0YXR1cyk7CiAKICAgICB2aXJ0dWFsICAgICB1aW50MzJfdCAgICBzYW1wbGVSYXRlKGludCBvdXRwdXQpIGNvbnN0OwpAQCAtMTM5LDggKzE0MSwzMCBAQAogCiAgICAgdmlydHVhbCBzdGF0dXNfdCBnZXRSZW5kZXJQb3NpdGlvbih1aW50MzJfdCAqaGFsRnJhbWVzLCB1aW50MzJfdCAqZHNwRnJhbWVzLCBpbnQgb3V0cHV0KTsKIAotICAgIC8vIElCaW5kZXI6OkRlYXRoUmVjaXBpZW50Ci0gICAgdmlydHVhbCAgICAgdm9pZCAgICAgICAgYmluZGVyRGllZChjb25zdCB3cDxJQmluZGVyPiYgd2hvKTsKKyAgICB2aXJ0dWFsIGludCBuZXdBdWRpb1Nlc3Npb25JZCgpOworCisgICAgdmlydHVhbCBzdGF0dXNfdCBsb2FkRWZmZWN0TGlicmFyeShjb25zdCBjaGFyICpsaWJQYXRoLCBpbnQgKmhhbmRsZSk7CisKKyAgICB2aXJ0dWFsIHN0YXR1c190IHVubG9hZEVmZmVjdExpYnJhcnkoaW50IGhhbmRsZSk7CisKKyAgICB2aXJ0dWFsIHN0YXR1c190IHF1ZXJ5TnVtYmVyRWZmZWN0cyh1aW50MzJfdCAqbnVtRWZmZWN0cyk7CisKKyAgICB2aXJ0dWFsIHN0YXR1c190IHF1ZXJ5RWZmZWN0KHVpbnQzMl90IGluZGV4LCBlZmZlY3RfZGVzY3JpcHRvcl90ICpkZXNjcmlwdG9yKTsKKworICAgIHZpcnR1YWwgc3RhdHVzX3QgZ2V0RWZmZWN0RGVzY3JpcHRvcihlZmZlY3RfdXVpZF90ICpwVXVpZCwgZWZmZWN0X2Rlc2NyaXB0b3JfdCAqZGVzY3JpcHRvcik7CisKKyAgICB2aXJ0dWFsIHNwPElFZmZlY3Q+IGNyZWF0ZUVmZmVjdChwaWRfdCBwaWQsCisgICAgICAgICAgICAgICAgICAgICAgICBlZmZlY3RfZGVzY3JpcHRvcl90ICpwRGVzYywKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwPElFZmZlY3RDbGllbnQ+JiBlZmZlY3RDbGllbnQsCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHByaW9yaXR5LAorICAgICAgICAgICAgICAgICAgICAgICAgaW50IG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBzZXNzaW9uSWQsCisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNfdCAqc3RhdHVzLAorICAgICAgICAgICAgICAgICAgICAgICAgaW50ICppZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCAqZW5hYmxlZCk7CisKKyAgICAgICAgICAgIHN0YXR1c190IHJlZ2lzdGVyRWZmZWN0UmVzb3VyY2VfbChlZmZlY3RfZGVzY3JpcHRvcl90ICpkZXNjKTsKKyAgICAgICAgICAgIHZvaWQgICAgIHVucmVnaXN0ZXJFZmZlY3RSZXNvdXJjZV9sKGVmZmVjdF9kZXNjcmlwdG9yX3QgKmRlc2MpOwogCiAgICAgZW51bSBoYXJkd2FyZV9jYWxsX3N0YXRlIHsKICAgICAgICAgQVVESU9fSFdfSURMRSA9IDAsCkBAIC0xNzAsNiArMTk0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNoYW5uZWxDb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZyYW1lQ291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnNlc3Npb25JZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzX3QgKnN0YXR1cyk7CiAKICAgICB2aXJ0dWFsICAgICBzdGF0dXNfdCAgICBvblRyYW5zYWN0KApAQCAtMTc4LDYgKzIwMyw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhcmNlbCogcmVwbHksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZsYWdzKTsKIAorICAgICAgICAgICAgICAgIHVpbnQzMl90ICAgIGdldE1vZGUoKSB7IHJldHVybiBtTW9kZTsgfQorCiBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1ZGlvRmxpbmdlcigpOwogICAgIHZpcnR1YWwgICAgICAgICAgICAgICAgIH5BdWRpb0ZsaW5nZXIoKTsKQEAgLTIwNSw2ICsyMzIsMjcgQEAKICAgICAgICAgcGlkX3QgICAgICAgICAgICAgICBtUGlkOwogICAgIH07CiAKKyAgICAvLyAtLS0gTm90aWZpY2F0aW9uIENsaWVudCAtLS0KKyAgICBjbGFzcyBOb3RpZmljYXRpb25DbGllbnQgOiBwdWJsaWMgSUJpbmRlcjo6RGVhdGhSZWNpcGllbnQgeworICAgIHB1YmxpYzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3RpZmljYXRpb25DbGllbnQoY29uc3Qgc3A8QXVkaW9GbGluZ2VyPiYgYXVkaW9GbGluZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3A8SUF1ZGlvRmxpbmdlckNsaWVudD4mIGNsaWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpZF90IHBpZCk7CisgICAgICAgIHZpcnR1YWwgICAgICAgICAgICAgfk5vdGlmaWNhdGlvbkNsaWVudCgpOworCisgICAgICAgICAgICAgICAgc3A8SUF1ZGlvRmxpbmdlckNsaWVudD4gICAgY2xpZW50KCkgeyByZXR1cm4gbUNsaWVudDsgfQorCisgICAgICAgICAgICAgICAgLy8gSUJpbmRlcjo6RGVhdGhSZWNpcGllbnQKKyAgICAgICAgICAgICAgICB2aXJ0dWFsICAgICB2b2lkICAgICAgICBiaW5kZXJEaWVkKGNvbnN0IHdwPElCaW5kZXI+JiB3aG8pOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb3RpZmljYXRpb25DbGllbnQoY29uc3QgTm90aWZpY2F0aW9uQ2xpZW50Jik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uQ2xpZW50JiBvcGVyYXRvciA9IChjb25zdCBOb3RpZmljYXRpb25DbGllbnQmKTsKKworICAgICAgICBzcDxBdWRpb0ZsaW5nZXI+ICAgICAgICBtQXVkaW9GbGluZ2VyOworICAgICAgICBwaWRfdCAgICAgICAgICAgICAgICAgICBtUGlkOworICAgICAgICBzcDxJQXVkaW9GbGluZ2VyQ2xpZW50PiBtQ2xpZW50OworICAgIH07CiAKICAgICBjbGFzcyBUcmFja0hhbmRsZTsKICAgICBjbGFzcyBSZWNvcmRIYW5kbGU7CkBAIC0yMTUsNiArMjYzLDkgQEAKICAgICBjbGFzcyBEdXBsaWNhdGluZ1RocmVhZDsKICAgICBjbGFzcyBUcmFjazsKICAgICBjbGFzcyBSZWNvcmRUcmFjazsKKyAgICBjbGFzcyBFZmZlY3RNb2R1bGU7CisgICAgY2xhc3MgRWZmZWN0SGFuZGxlOworICAgIGNsYXNzIEVmZmVjdENoYWluOwogCiAgICAgY2xhc3MgVGhyZWFkQmFzZSA6IHB1YmxpYyBUaHJlYWQgewogICAgIHB1YmxpYzoKQEAgLTI1MCwxMyArMzAxLDE1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNoYW5uZWxDb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZnJhbWVDb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBmbGFncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcDxJTWVtb3J5PiYgc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcDxJTWVtb3J5PiYgc2hhcmVkQnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzZXNzaW9uSWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+VHJhY2tCYXNlKCk7CiAKICAgICAgICAgICAgIHZpcnR1YWwgc3RhdHVzX3QgICAgc3RhcnQoKSA9IDA7CiAgICAgICAgICAgICB2aXJ0dWFsIHZvaWQgICAgICAgIHN0b3AoKSA9IDA7CiAgICAgICAgICAgICAgICAgICAgIHNwPElNZW1vcnk+IGdldENibGsoKSBjb25zdDsKICAgICAgICAgICAgICAgICAgICAgYXVkaW9fdHJhY2tfY2Jsa190KiBjYmxrKCkgY29uc3QgeyByZXR1cm4gbUNibGs7IH0KKyAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgc2Vzc2lvbklkKCkgeyByZXR1cm4gbVNlc3Npb25JZDsgfQogCiAgICAgICAgIHByb3RlY3RlZDoKICAgICAgICAgICAgIGZyaWVuZCBjbGFzcyBUaHJlYWRCYXNlOwpAQCAtMzA1LDYgKzM1OCw3IEBACiAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgIG1DbGllbnRUaWQ7CiAgICAgICAgICAgICB1aW50OF90ICAgICAgICAgICAgIG1Gb3JtYXQ7CiAgICAgICAgICAgICB1aW50MzJfdCAgICAgICAgICAgIG1GbGFnczsKKyAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgbVNlc3Npb25JZDsKICAgICAgICAgfTsKIAogICAgICAgICBjbGFzcyBDb25maWdFdmVudCB7CkBAIC0zMjQsNyArMzc4LDcgQEAKICAgICAgICAgdmlydHVhbCAgICAgYm9vbCAgICAgICAgY2hlY2tGb3JOZXdQYXJhbWV0ZXJzX2woKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgICAgIHN0YXR1c190ICAgIHNldFBhcmFtZXRlcnMoY29uc3QgU3RyaW5nOCYga2V5VmFsdWVQYWlycyk7CiAgICAgICAgIHZpcnR1YWwgICAgIFN0cmluZzggICAgIGdldFBhcmFtZXRlcnMoY29uc3QgU3RyaW5nOCYga2V5cykgPSAwOwotICAgICAgICB2aXJ0dWFsICAgICB2b2lkICAgICAgICBhdWRpb0NvbmZpZ0NoYW5nZWQoaW50IGV2ZW50LCBpbnQgcGFyYW0gPSAwKSA9IDA7CisgICAgICAgIHZpcnR1YWwgICAgIHZvaWQgICAgICAgIGF1ZGlvQ29uZmlnQ2hhbmdlZF9sKGludCBldmVudCwgaW50IHBhcmFtID0gMCkgPSAwOwogICAgICAgICAgICAgICAgICAgICB2b2lkICAgICAgICBzZW5kQ29uZmlnRXZlbnQoaW50IGV2ZW50LCBpbnQgcGFyYW0gPSAwKTsKICAgICAgICAgICAgICAgICAgICAgdm9pZCAgICAgICAgc2VuZENvbmZpZ0V2ZW50X2woaW50IGV2ZW50LCBpbnQgcGFyYW0gPSAwKTsKICAgICAgICAgICAgICAgICAgICAgdm9pZCAgICAgICAgcHJvY2Vzc0NvbmZpZ0V2ZW50cygpOwpAQCAtMzQ4LDkgKzQwMiwxMCBAQAogICAgICAgICAgICAgICAgICAgICBzcDxBdWRpb0ZsaW5nZXI+ICAgICAgICBtQXVkaW9GbGluZ2VyOwogICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAgICAgICAgICAgICAgICBtU2FtcGxlUmF0ZTsKICAgICAgICAgICAgICAgICAgICAgc2l6ZV90ICAgICAgICAgICAgICAgICAgbUZyYW1lQ291bnQ7Ci0gICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgIG1DaGFubmVsQ291bnQ7CisgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgIG1DaGFubmVsczsKKyAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgICAgICAgICAgICAgICAgbUNoYW5uZWxDb3VudDsKKyAgICAgICAgICAgICAgICAgICAgdWludDE2X3QgICAgICAgICAgICAgICAgbUZyYW1lU2l6ZTsKICAgICAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICAgICAgbUZvcm1hdDsKLSAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgICAgICAgICAgICAgICAgbUZyYW1lU2l6ZTsKICAgICAgICAgICAgICAgICAgICAgQ29uZGl0aW9uICAgICAgICAgICAgICAgbVBhcmFtQ29uZDsKICAgICAgICAgICAgICAgICAgICAgVmVjdG9yPFN0cmluZzg+ICAgICAgICAgbU5ld1BhcmFtZXRlcnM7CiAgICAgICAgICAgICAgICAgICAgIHN0YXR1c190ICAgICAgICAgICAgICAgIG1QYXJhbVN0YXR1czsKQEAgLTM4Niw3ICs0NDEsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmb3JtYXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNoYW5uZWxDb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZnJhbWVDb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcDxJTWVtb3J5PiYgc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcDxJTWVtb3J5PiYgc2hhcmVkQnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzZXNzaW9uSWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+VHJhY2soKTsKIAogICAgICAgICAgICAgICAgICAgICB2b2lkICAgICAgICBkdW1wKGNoYXIqIGJ1ZmZlciwgc2l6ZV90IHNpemUpOwpAQCAtNDA1LDYgKzQ2MSwxMiBAQAogICAgICAgICAgICAgICAgICAgICBpbnQgdHlwZSgpIGNvbnN0IHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtU3RyZWFtVHlwZTsKICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBzdGF0dXNfdCAgICBhdHRhY2hBdXhFZmZlY3QoaW50IEVmZmVjdElkKTsKKyAgICAgICAgICAgICAgICAgICAgdm9pZCAgICAgICAgc2V0QXV4QnVmZmVyKGludCBFZmZlY3RJZCwgaW50MzJfdCAqYnVmZmVyKTsKKyAgICAgICAgICAgICAgICAgICAgaW50MzJfdCAgICAgKmF1eEJ1ZmZlcigpIHsgcmV0dXJuIG1BdXhCdWZmZXI7IH0KKyAgICAgICAgICAgICAgICAgICAgdm9pZCAgICAgICAgc2V0TWFpbkJ1ZmZlcihpbnQxNl90ICpidWZmZXIpIHsgbU1haW5CdWZmZXIgPSBidWZmZXI7IH0KKyAgICAgICAgICAgICAgICAgICAgaW50MTZfdCAgICAgKm1haW5CdWZmZXIoKSB7IHJldHVybiBtTWFpbkJ1ZmZlcjsgfQorICAgICAgICAgICAgICAgICAgICBpbnQgICAgICAgICBhdXhFZmZlY3RJZCgpIHsgcmV0dXJuIG1BdXhFZmZlY3RJZDsgfQogCiAKICAgICAgICAgcHJvdGVjdGVkOgpAQCAtNDQ1LDYgKzUwNyw5IEBACiAgICAgICAgICAgICBib29sICAgICAgICAgICAgICAgIG1SZXNldERvbmU7CiAgICAgICAgICAgICBpbnQgICAgICAgICAgICAgICAgIG1TdHJlYW1UeXBlOwogICAgICAgICAgICAgaW50ICAgICAgICAgICAgICAgICBtTmFtZTsKKyAgICAgICAgICAgIGludDE2X3QgICAgICAgICAgICAgKm1NYWluQnVmZmVyOworICAgICAgICAgICAgaW50MzJfdCAgICAgICAgICAgICAqbUF1eEJ1ZmZlcjsKKyAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgbUF1eEVmZmVjdElkOwogICAgICAgICB9OyAgLy8gZW5kIG9mIFRyYWNrCiAKIApAQCAtNDg2LDcgKzU1MSw3IEBACiAgICAgICAgICAgICBEdXBsaWNhdGluZ1RocmVhZCogICAgICAgICAgbVNvdXJjZVRocmVhZDsKICAgICAgICAgfTsgIC8vIGVuZCBvZiBPdXRwdXRUcmFjawogCi0gICAgICAgIFBsYXliYWNrVGhyZWFkIChjb25zdCBzcDxBdWRpb0ZsaW5nZXI+JiBhdWRpb0ZsaW5nZXIsIEF1ZGlvU3RyZWFtT3V0KiBvdXRwdXQsIGludCBpZCk7CisgICAgICAgIFBsYXliYWNrVGhyZWFkIChjb25zdCBzcDxBdWRpb0ZsaW5nZXI+JiBhdWRpb0ZsaW5nZXIsIEF1ZGlvU3RyZWFtT3V0KiBvdXRwdXQsIGludCBpZCwgdWludDMyX3QgZGV2aWNlKTsKICAgICAgICAgdmlydHVhbCAgICAgICAgICAgICB+UGxheWJhY2tUaHJlYWQoKTsKIAogICAgICAgICB2aXJ0dWFsICAgICBzdGF0dXNfdCAgICBkdW1wKGludCBmZCwgY29uc3QgVmVjdG9yPFN0cmluZzE2PiYgYXJncyk7CkBAIC01MTksNiArNTg0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjaGFubmVsQ291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZnJhbWVDb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwPElNZW1vcnk+JiBzaGFyZWRCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2Vzc2lvbklkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzX3QgKnN0YXR1cyk7CiAKICAgICAgICAgICAgICAgICAgICAgQXVkaW9TdHJlYW1PdXQqIGdldE91dHB1dCgpIHsgcmV0dXJuIG1PdXRwdXQ7IH0KQEAgLTUyOCw4ICs1OTQsMzQgQEAKICAgICAgICAgICAgICAgICAgICAgdm9pZCAgICAgICAgcmVzdG9yZSgpIHsgaWYgKG1TdXNwZW5kZWQpIG1TdXNwZW5kZWQtLTsgfQogICAgICAgICAgICAgICAgICAgICBib29sICAgICAgICBpc1N1c3BlbmRlZCgpIHsgcmV0dXJuIChtU3VzcGVuZGVkICE9IDApOyB9CiAgICAgICAgIHZpcnR1YWwgICAgIFN0cmluZzggICAgIGdldFBhcmFtZXRlcnMoY29uc3QgU3RyaW5nOCYga2V5cyk7Ci0gICAgICAgIHZpcnR1YWwgICAgIHZvaWQgICAgICAgIGF1ZGlvQ29uZmlnQ2hhbmdlZChpbnQgZXZlbnQsIGludCBwYXJhbSA9IDApOworICAgICAgICB2aXJ0dWFsICAgICB2b2lkICAgICAgICBhdWRpb0NvbmZpZ0NoYW5nZWRfbChpbnQgZXZlbnQsIGludCBwYXJhbSA9IDApOwogICAgICAgICB2aXJ0dWFsICAgICBzdGF0dXNfdCAgICBnZXRSZW5kZXJQb3NpdGlvbih1aW50MzJfdCAqaGFsRnJhbWVzLCB1aW50MzJfdCAqZHNwRnJhbWVzKTsKKyAgICAgICAgICAgICAgICAgICAgaW50MTZfdCAgICAgKm1peEJ1ZmZlcigpIHsgcmV0dXJuIG1NaXhCdWZmZXI7IH07CisKKyAgICAgICAgICAgICAgICAgICAgc3A8RWZmZWN0SGFuZGxlPiBjcmVhdGVFZmZlY3RfbCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcDxBdWRpb0ZsaW5nZXI6OkNsaWVudD4mIGNsaWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcDxJRWZmZWN0Q2xpZW50PiYgZWZmZWN0Q2xpZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgcHJpb3JpdHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNlc3Npb25JZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZmZlY3RfZGVzY3JpcHRvcl90ICpkZXNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqZW5hYmxlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXNfdCAqc3RhdHVzKTsKKyAgICAgICAgICAgICAgICAgICAgdm9pZCBkaXNjb25uZWN0RWZmZWN0KGNvbnN0IHNwPCBFZmZlY3RNb2R1bGU+JiBlZmZlY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB3cDxFZmZlY3RIYW5kbGU+JiBoYW5kbGUpOworCisgICAgICAgICAgICAgICAgICAgIGJvb2wgaGFzQXVkaW9TZXNzaW9uKGludCBzZXNzaW9uSWQpOworICAgICAgICAgICAgICAgICAgICBzcDxFZmZlY3RDaGFpbj4gZ2V0RWZmZWN0Q2hhaW4oaW50IHNlc3Npb25JZCk7CisgICAgICAgICAgICAgICAgICAgIHNwPEVmZmVjdENoYWluPiBnZXRFZmZlY3RDaGFpbl9sKGludCBzZXNzaW9uSWQpOworICAgICAgICAgICAgICAgICAgICBzdGF0dXNfdCBhZGRFZmZlY3RDaGFpbl9sKGNvbnN0IHNwPEVmZmVjdENoYWluPiYgY2hhaW4pOworICAgICAgICAgICAgICAgICAgICBzaXplX3QgcmVtb3ZlRWZmZWN0Q2hhaW5fbChjb25zdCBzcDxFZmZlY3RDaGFpbj4mIGNoYWluKTsKKyAgICAgICAgICAgICAgICAgICAgdm9pZCBsb2NrRWZmZWN0Q2hhaW5zX2woKTsKKyAgICAgICAgICAgICAgICAgICAgdm9pZCB1bmxvY2tFZmZlY3RDaGFpbnMoKTsKKworICAgICAgICAgICAgICAgICAgICBzcDxBdWRpb0ZsaW5nZXI6OkVmZmVjdE1vZHVsZT4gZ2V0RWZmZWN0X2woaW50IHNlc3Npb25JZCwgaW50IGVmZmVjdElkKTsKKyAgICAgICAgICAgICAgICAgICAgdm9pZCBkZXRhY2hBdXhFZmZlY3RfbChpbnQgZWZmZWN0SWQpOworICAgICAgICAgICAgICAgICAgICBzdGF0dXNfdCBhdHRhY2hBdXhFZmZlY3QoY29uc3Qgc3A8QXVkaW9GbGluZ2VyOjpQbGF5YmFja1RocmVhZDo6VHJhY2s+IHRyYWNrLCBpbnQgRWZmZWN0SWQpOworICAgICAgICAgICAgICAgICAgICBzdGF0dXNfdCBhdHRhY2hBdXhFZmZlY3RfbChjb25zdCBzcDxBdWRpb0ZsaW5nZXI6OlBsYXliYWNrVGhyZWFkOjpUcmFjaz4gdHJhY2ssIGludCBFZmZlY3RJZCk7CisgICAgICAgICAgICAgICAgICAgIHZvaWQgc2V0TW9kZSh1aW50MzJfdCBtb2RlKTsKIAogICAgICAgICBzdHJ1Y3QgIHN0cmVhbV90eXBlX3QgewogICAgICAgICAgICAgc3RyZWFtX3R5cGVfdCgpCkBAIC01NzIsOCArNjY0LDExIEBACiAKICAgICAgICAgdm9pZCAgICAgICAgcmVhZE91dHB1dFBhcmFtZXRlcnMoKTsKIAorICAgICAgICB1aW50MzJfdCAgICBkZXZpY2UoKSB7IHJldHVybiBtRGV2aWNlOyB9CisKICAgICAgICAgdmlydHVhbCBzdGF0dXNfdCAgICBkdW1wSW50ZXJuYWxzKGludCBmZCwgY29uc3QgVmVjdG9yPFN0cmluZzE2PiYgYXJncyk7CiAgICAgICAgIHN0YXR1c190ICAgIGR1bXBUcmFja3MoaW50IGZkLCBjb25zdCBWZWN0b3I8U3RyaW5nMTY+JiBhcmdzKTsKKyAgICAgICAgc3RhdHVzX3QgICAgZHVtcEVmZmVjdENoYWlucyhpbnQgZmQsIGNvbnN0IFZlY3RvcjxTdHJpbmcxNj4mIGFyZ3MpOwogCiAgICAgICAgIFNvcnRlZFZlY3Rvcjwgc3A8VHJhY2s+ID4gICAgICAgbVRyYWNrczsKICAgICAgICAgLy8gbVN0cmVhbVR5cGVzW10gdXNlcyAxIGFkZGl0aW9ubmFsIHN0cmVhbSB0eXBlIGludGVybmFsbHkgZm9yIHRoZSBPdXRwdXRUcmFjayB1c2VkIGJ5IER1cGxpY2F0aW5nVGhyZWFkCkBAIC01ODQsMjEgKzY3OSwxOSBAQAogICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1OdW1Xcml0ZXM7CiAgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbU51bURlbGF5ZWRXcml0ZXM7CiAgICAgICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUluV3JpdGU7CisgICAgICAgIFZlY3Rvcjwgc3A8RWZmZWN0Q2hhaW4+ID4gICAgICAgbUVmZmVjdENoYWluczsKKyAgICAgICAgdWludDMyX3QgICAgICAgICAgICAgICAgICAgICAgICBtRGV2aWNlOwogICAgIH07CiAKICAgICBjbGFzcyBNaXhlclRocmVhZCA6IHB1YmxpYyBQbGF5YmFja1RocmVhZCB7CiAgICAgcHVibGljOgotICAgICAgICBNaXhlclRocmVhZCAoY29uc3Qgc3A8QXVkaW9GbGluZ2VyPiYgYXVkaW9GbGluZ2VyLCBBdWRpb1N0cmVhbU91dCogb3V0cHV0LCBpbnQgaWQpOworICAgICAgICBNaXhlclRocmVhZCAoY29uc3Qgc3A8QXVkaW9GbGluZ2VyPiYgYXVkaW9GbGluZ2VyLCBBdWRpb1N0cmVhbU91dCogb3V0cHV0LCBpbnQgaWQsIHVpbnQzMl90IGRldmljZSk7CiAgICAgICAgIHZpcnR1YWwgICAgICAgICAgICAgfk1peGVyVGhyZWFkKCk7CiAKICAgICAgICAgLy8gVGhyZWFkIHZpcnR1YWxzCiAgICAgICAgIHZpcnR1YWwgICAgIGJvb2wgICAgICAgIHRocmVhZExvb3AoKTsKIAotICAgICAgICAgICAgICAgICAgICB2b2lkICAgICAgICBnZXRUcmFja3MoU29ydGVkVmVjdG9yIDwgc3A8VHJhY2s+ID4mIHRyYWNrcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29ydGVkVmVjdG9yIDwgd3A8VHJhY2s+ID4mIGFjdGl2ZVRyYWNrcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0cmVhbVR5cGUpOwotICAgICAgICAgICAgICAgICAgICB2b2lkICAgICAgICBwdXRUcmFja3MoU29ydGVkVmVjdG9yIDwgc3A8VHJhY2s+ID4mIHRyYWNrcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU29ydGVkVmVjdG9yIDwgd3A8VHJhY2s+ID4mIGFjdGl2ZVRyYWNrcyk7CisgICAgICAgICAgICAgICAgICAgIHZvaWQgICAgICAgIGludmFsaWRhdGVUcmFja3MoaW50IHN0cmVhbVR5cGUpOwogICAgICAgICB2aXJ0dWFsICAgICBib29sICAgICAgICBjaGVja0Zvck5ld1BhcmFtZXRlcnNfbCgpOwogICAgICAgICB2aXJ0dWFsICAgICBzdGF0dXNfdCAgICBkdW1wSW50ZXJuYWxzKGludCBmZCwgY29uc3QgVmVjdG9yPFN0cmluZzE2PiYgYXJncyk7CiAKQEAgLTYxNSw3ICs3MDgsNyBAQAogICAgIGNsYXNzIERpcmVjdE91dHB1dFRocmVhZCA6IHB1YmxpYyBQbGF5YmFja1RocmVhZCB7CiAgICAgcHVibGljOgogCi0gICAgICAgIERpcmVjdE91dHB1dFRocmVhZCAoY29uc3Qgc3A8QXVkaW9GbGluZ2VyPiYgYXVkaW9GbGluZ2VyLCBBdWRpb1N0cmVhbU91dCogb3V0cHV0LCBpbnQgaWQpOworICAgICAgICBEaXJlY3RPdXRwdXRUaHJlYWQgKGNvbnN0IHNwPEF1ZGlvRmxpbmdlcj4mIGF1ZGlvRmxpbmdlciwgQXVkaW9TdHJlYW1PdXQqIG91dHB1dCwgaW50IGlkLCB1aW50MzJfdCBkZXZpY2UpOwogICAgICAgICB+RGlyZWN0T3V0cHV0VGhyZWFkKCk7CiAKICAgICAgICAgLy8gVGhyZWFkIHZpcnR1YWxzCkBAIC02MzAsOCArNzIzLDEyIEBACiAgICAgICAgIHZpcnR1YWwgICAgIHVpbnQzMl90ICAgIGlkbGVTbGVlcFRpbWVVcygpOwogCiAgICAgcHJpdmF0ZToKLSAgICAgICAgZmxvYXQgbUxlZnRWb2x1bWU7Ci0gICAgICAgIGZsb2F0IG1SaWdodFZvbHVtZTsKKyAgICAgICAgdm9pZCBhcHBseVZvbHVtZSh1aW50MTZfdCBsZWZ0Vm9sLCB1aW50MTZfdCByaWdodFZvbCwgYm9vbCByYW1wKTsKKworICAgICAgICBmbG9hdCBtTGVmdFZvbEZsb2F0OworICAgICAgICBmbG9hdCBtUmlnaHRWb2xGbG9hdDsKKyAgICAgICAgdWludDE2X3QgbUxlZnRWb2xTaG9ydDsKKyAgICAgICAgdWludDE2X3QgbVJpZ2h0Vm9sU2hvcnQ7CiAgICAgfTsKIAogICAgIGNsYXNzIER1cGxpY2F0aW5nVGhyZWFkIDogcHVibGljIE1peGVyVGhyZWFkIHsKQEAgLTY2MSw2ICs3NTgsOCBAQAogICAgICAgICAgICAgICBmbG9hdCBzdHJlYW1Wb2x1bWVJbnRlcm5hbChpbnQgc3RyZWFtKSBjb25zdCB7IHJldHVybiBtU3RyZWFtVHlwZXNbc3RyZWFtXS52b2x1bWU7IH0KICAgICAgICAgICAgICAgdm9pZCBhdWRpb0NvbmZpZ0NoYW5nZWRfbChpbnQgZXZlbnQsIGludCBpb0hhbmRsZSwgdm9pZCAqcGFyYW0yKTsKIAorICAgICAgICAgICAgICBpbnQgIG5leHRVbmlxdWVJZCgpOworCiAgICAgZnJpZW5kIGNsYXNzIEF1ZGlvQnVmZmVyOwogCiAgICAgY2xhc3MgVHJhY2tIYW5kbGUgOiBwdWJsaWMgYW5kcm9pZDo6Qm5BdWRpb1RyYWNrIHsKQEAgLTY3NCw2ICs3NzMsNyBAQAogICAgICAgICB2aXJ0dWFsIHZvaWQgICAgICAgIHBhdXNlKCk7CiAgICAgICAgIHZpcnR1YWwgdm9pZCAgICAgICAgc2V0Vm9sdW1lKGZsb2F0IGxlZnQsIGZsb2F0IHJpZ2h0KTsKICAgICAgICAgdmlydHVhbCBzcDxJTWVtb3J5PiBnZXRDYmxrKCkgY29uc3Q7CisgICAgICAgIHZpcnR1YWwgc3RhdHVzX3QgICAgYXR0YWNoQXV4RWZmZWN0KGludCBlZmZlY3RJZCk7CiAgICAgICAgIHZpcnR1YWwgc3RhdHVzX3Qgb25UcmFuc2FjdCgKICAgICAgICAgICAgIHVpbnQzMl90IGNvZGUsIGNvbnN0IFBhcmNlbCYgZGF0YSwgUGFyY2VsKiByZXBseSwgdWludDMyX3QgZmxhZ3MpOwogICAgIHByaXZhdGU6CkBAIC02ODUsNiArNzg1LDcgQEAKIAogCiAgICAgICAgICAgICAgICAgdm9pZCAgICAgICAgcmVtb3ZlQ2xpZW50X2wocGlkX3QgcGlkKTsKKyAgICAgICAgICAgICAgICB2b2lkICAgICAgICByZW1vdmVOb3RpZmljYXRpb25DbGllbnQocGlkX3QgcGlkKTsKIAogCiAgICAgLy8gcmVjb3JkIHRocmVhZApAQCAtNzAxLDcgKzgwMiw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZvcm1hdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2hhbm5lbENvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmcmFtZUNvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZsYWdzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBmbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2Vzc2lvbklkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgflJlY29yZFRyYWNrKCk7CiAKICAgICAgICAgICAgIHZpcnR1YWwgc3RhdHVzX3QgICAgc3RhcnQoKTsKQEAgLTc0NCw3ICs4NDYsNyBAQAogICAgICAgICB2aXJ0dWFsIHZvaWQgICAgICAgIHJlbGVhc2VCdWZmZXIoQXVkaW9CdWZmZXJQcm92aWRlcjo6QnVmZmVyKiBidWZmZXIpOwogICAgICAgICB2aXJ0dWFsIGJvb2wgICAgICAgIGNoZWNrRm9yTmV3UGFyYW1ldGVyc19sKCk7CiAgICAgICAgIHZpcnR1YWwgU3RyaW5nOCAgICAgZ2V0UGFyYW1ldGVycyhjb25zdCBTdHJpbmc4JiBrZXlzKTsKLSAgICAgICAgdmlydHVhbCB2b2lkICAgICAgICBhdWRpb0NvbmZpZ0NoYW5nZWQoaW50IGV2ZW50LCBpbnQgcGFyYW0gPSAwKTsKKyAgICAgICAgdmlydHVhbCB2b2lkICAgICAgICBhdWRpb0NvbmZpZ0NoYW5nZWRfbChpbnQgZXZlbnQsIGludCBwYXJhbSA9IDApOwogICAgICAgICAgICAgICAgIHZvaWQgICAgICAgIHJlYWRJbnB1dFBhcmFtZXRlcnMoKTsKICAgICAgICAgdmlydHVhbCB1bnNpZ25lZCBpbnQgIGdldElucHV0RnJhbWVzTG9zdCgpOwogCkBAIC03NzYsNiArODc4LDIyNyBAQAogICAgICAgICBzcDxSZWNvcmRUaHJlYWQ6OlJlY29yZFRyYWNrPiBtUmVjb3JkVHJhY2s7CiAgICAgfTsKIAorICAgIC8vLS0tIEF1ZGlvIEVmZmVjdCBNYW5hZ2VtZW50CisKKyAgICAvLyBFZmZlY3RNb2R1bGUgYW5kIEVmZmVjdENoYWluIGNsYXNzZXMgYm90aCBoYXZlIHRoZWlyIG93biBtdXRleCB0byBwcm90ZWN0CisgICAgLy8gc3RhdGUgY2hhbmdlcyBvciByZXNvdXJjZSBtb2RpZmljYXRpb25zLiBBbHdheXMgcmVzcGVjdCB0aGUgZm9sbG93aW5nIG9yZGVyCisgICAgLy8gaWYgbXVsdGlwbGUgbXV0ZXhlcyBtdXN0IGJlIGFjcXVpcmVkIHRvIGF2b2lkIGNyb3NzIGRlYWRsb2NrOgorICAgIC8vIEF1ZGlvRmxpbmdlciAtPiBUaHJlYWRCYXNlIC0+IEVmZmVjdENoYWluIC0+IEVmZmVjdE1vZHVsZQorCisgICAgLy8gVGhlIEVmZmVjdE1vZHVsZSBjbGFzcyBpcyBhIHdyYXBwZXIgb2JqZWN0IGNvbnRyb2xsaW5nIHRoZSBlZmZlY3QgZW5naW5lIGltcGxlbWVudGF0aW9uCisgICAgLy8gaW4gdGhlIGVmZmVjdCBsaWJyYXJ5LiBJdCBwcmV2ZW50cyBjb25jdXJyZW50IGNhbGxzIHRvIHByb2Nlc3MoKSBhbmQgY29tbWFuZCgpIGZ1bmN0aW9ucworICAgIC8vIGZyb20gZGlmZmVyZW50IGNsaWVudCB0aHJlYWRzLiBJdCBrZWVwcyBhIGxpc3Qgb2YgRWZmZWN0SGFuZGxlIG9iamVjdHMgY29ycmVzcG9uZGluZworICAgIC8vIHRvIGFsbCBjbGllbnQgYXBwbGljYXRpb25zIHVzaW5nIHRoaXMgZWZmZWN0IGFuZCBub3RpZmllcyBhcHBsaWNhdGlvbnMgb2YgZWZmZWN0IHN0YXRlLAorICAgIC8vIGNvbnRyb2wgb3IgcGFyYW1ldGVyIGNoYW5nZXMuIEl0IG1hbmFnZXMgdGhlIGFjdGl2YXRpb24gc3RhdGUgbWFjaGluZSB0byBzZW5kIGFwcHJvcHJpYXRlCisgICAgLy8gcmVzZXQsIGVuYWJsZSwgZGlzYWJsZSBjb21tYW5kcyB0byBlZmZlY3QgZW5naW5lIGFuZCBwcm92aWRlIHZvbHVtZQorICAgIC8vIHJhbXBpbmcgd2hlbiBlZmZlY3RzIGFyZSBhY3RpdmF0ZWQvZGVhY3RpdmF0ZWQuCisgICAgLy8gV2hlbiBjb250cm9sbGluZyBhbiBhdXhpbGlhcnkgZWZmZWN0LCB0aGUgRWZmZWN0TW9kdWxlIGFsc28gcHJvdmlkZXMgYW4gaW5wdXQgYnVmZmVyIHVzZWQgYnkKKyAgICAvLyB0aGUgYXR0YWNoZWQgdHJhY2socykgdG8gYWNjdW11bGF0ZSB0aGVpciBhdXhpbGlhcnkgY2hhbm5lbC4KKyAgICBjbGFzcyBFZmZlY3RNb2R1bGU6IHB1YmxpYyBSZWZCYXNlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIEVmZmVjdE1vZHVsZShjb25zdCB3cDxUaHJlYWRCYXNlPiYgd1RocmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHdwPEF1ZGlvRmxpbmdlcjo6RWZmZWN0Q2hhaW4+JiBjaGFpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGVmZmVjdF9kZXNjcmlwdG9yX3QgKmRlc2MsCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaWQsCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2Vzc2lvbklkKTsKKyAgICAgICAgfkVmZmVjdE1vZHVsZSgpOworCisgICAgICAgIGVudW0gZWZmZWN0X3N0YXRlIHsKKyAgICAgICAgICAgIElETEUsCisgICAgICAgICAgICBSRVNFVCwKKyAgICAgICAgICAgIFNUQVJUSU5HLAorICAgICAgICAgICAgQUNUSVZFLAorICAgICAgICAgICAgU1RPUFBJTkcsCisgICAgICAgICAgICBTVE9QUEVECisgICAgICAgIH07CisKKyAgICAgICAgaW50ICAgICAgICAgaWQoKSB7IHJldHVybiBtSWQ7IH0KKyAgICAgICAgdm9pZCBwcm9jZXNzKCk7CisgICAgICAgIHN0YXR1c190IGNvbW1hbmQoaW50IGNtZENvZGUsIGludCBjbWRTaXplLCB2b2lkICpwQ21kRGF0YSwgaW50ICpyZXBseVNpemUsIHZvaWQgKnBSZXBseURhdGEpOworCisgICAgICAgIHZvaWQgcmVzZXRfbCgpOworICAgICAgICBzdGF0dXNfdCBjb25maWd1cmUoKTsKKyAgICAgICAgc3RhdHVzX3QgaW5pdCgpOworICAgICAgICB1aW50MzJfdCBzdGF0ZSgpIHsKKyAgICAgICAgICAgIHJldHVybiBtU3RhdGU7CisgICAgICAgIH0KKyAgICAgICAgdWludDMyX3Qgc3RhdHVzKCkgeworICAgICAgICAgICAgcmV0dXJuIG1TdGF0dXM7CisgICAgICAgIH0KKyAgICAgICAgc3RhdHVzX3QgICAgc2V0RW5hYmxlZChib29sIGVuYWJsZWQpOworICAgICAgICBib29sIGlzRW5hYmxlZCgpOworCisgICAgICAgIHZvaWQgICAgICAgIHNldEluQnVmZmVyKGludDE2X3QgKmJ1ZmZlcikgeyBtQ29uZmlnLmlucHV0Q2ZnLmJ1ZmZlci5zMTYgPSBidWZmZXI7IH0KKyAgICAgICAgaW50MTZfdCAgICAgKmluQnVmZmVyKCkgeyByZXR1cm4gbUNvbmZpZy5pbnB1dENmZy5idWZmZXIuczE2OyB9CisgICAgICAgIHZvaWQgICAgICAgIHNldE91dEJ1ZmZlcihpbnQxNl90ICpidWZmZXIpIHsgbUNvbmZpZy5vdXRwdXRDZmcuYnVmZmVyLnMxNiA9IGJ1ZmZlcjsgfQorICAgICAgICBpbnQxNl90ICAgICAqb3V0QnVmZmVyKCkgeyByZXR1cm4gbUNvbmZpZy5vdXRwdXRDZmcuYnVmZmVyLnMxNjsgfQorCisgICAgICAgIHN0YXR1c190IGFkZEhhbmRsZShzcDxFZmZlY3RIYW5kbGU+JiBoYW5kbGUpOworICAgICAgICB2b2lkIGRpc2Nvbm5lY3QoY29uc3Qgd3A8RWZmZWN0SGFuZGxlPiYgaGFuZGxlKTsKKyAgICAgICAgc2l6ZV90IHJlbW92ZUhhbmRsZSAoY29uc3Qgd3A8RWZmZWN0SGFuZGxlPiYgaGFuZGxlKTsKKworICAgICAgICBlZmZlY3RfZGVzY3JpcHRvcl90JiBkZXNjKCkgeyByZXR1cm4gbURlc2NyaXB0b3I7IH0KKyAgICAgICAgd3A8RWZmZWN0Q2hhaW4+JiAgICAgY2hhaW4oKSB7IHJldHVybiBtQ2hhaW47IH0KKworICAgICAgICBzdGF0dXNfdCAgICAgICAgIHNldERldmljZSh1aW50MzJfdCBkZXZpY2UpOworICAgICAgICBzdGF0dXNfdCAgICAgICAgIHNldFZvbHVtZSh1aW50MzJfdCAqbGVmdCwgdWludDMyX3QgKnJpZ2h0LCBib29sIGNvbnRyb2xsZXIpOworICAgICAgICBzdGF0dXNfdCAgICAgICAgIHNldE1vZGUodWludDMyX3QgbW9kZSk7CisKKyAgICAgICAgc3RhdHVzX3QgICAgICAgICBkdW1wKGludCBmZCwgY29uc3QgVmVjdG9yPFN0cmluZzE2PiYgYXJncyk7CisKKyAgICBwcm90ZWN0ZWQ6CisKKyAgICAgICAgRWZmZWN0TW9kdWxlKGNvbnN0IEVmZmVjdE1vZHVsZSYpOworICAgICAgICBFZmZlY3RNb2R1bGUmIG9wZXJhdG9yID0gKGNvbnN0IEVmZmVjdE1vZHVsZSYpOworCisgICAgICAgIHN0YXR1c190IHN0YXJ0X2woKTsKKyAgICAgICAgc3RhdHVzX3Qgc3RvcF9sKCk7CisKKyAgICAgICAgLy8gdXBkYXRlIHRoaXMgdGFibGUgd2hlbiBBdWRpb1N5c3RlbTo6YXVkaW9fZGV2aWNlcyBvciBhdWRpb19kZXZpY2VfZSAoaW4gRWZmZWN0QXBpLmgpIGFyZSBtb2RpZmllZAorICAgICAgICBzdGF0aWMgY29uc3QgdWludDMyX3Qgc0RldmljZUNvbnZUYWJsZVtdOworICAgICAgICBzdGF0aWMgdWludDMyX3QgZGV2aWNlQXVkaW9TeXN0ZW1Ub0VmZmVjdEFwaSh1aW50MzJfdCBkZXZpY2UpOworCisgICAgICAgIC8vIHVwZGF0ZSB0aGlzIHRhYmxlIHdoZW4gQXVkaW9TeXN0ZW06OmF1ZGlvX21vZGUgb3IgYXVkaW9fbW9kZV9lIChpbiBFZmZlY3RBcGkuaCkgYXJlIG1vZGlmaWVkCisgICAgICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBzTW9kZUNvbnZUYWJsZVtdOworICAgICAgICBzdGF0aWMgaW50IG1vZGVBdWRpb1N5c3RlbVRvRWZmZWN0QXBpKHVpbnQzMl90IG1vZGUpOworCisgICAgICAgIE11dGV4ICAgICAgICAgICAgICAgbUxvY2s7ICAgICAgLy8gbXV0ZXggZm9yIHByb2Nlc3MsIGNvbW1hbmRzIGFuZCBoYW5kbGVzIGxpc3QgcHJvdGVjdGlvbgorICAgICAgICB3cDxUaHJlYWRCYXNlPiAgICAgIG1UaHJlYWQ7ICAgIC8vIHBhcmVudCB0aHJlYWQKKyAgICAgICAgd3A8RWZmZWN0Q2hhaW4+ICAgICBtQ2hhaW47ICAgICAvLyBwYXJlbnQgZWZmZWN0IGNoYWluCisgICAgICAgIGludCAgICAgICAgICAgICAgICAgbUlkOyAgICAgICAgLy8gdGhpcyBpbnN0YW5jZSB1bmlxdWUgSUQKKyAgICAgICAgaW50ICAgICAgICAgICAgICAgICBtU2Vzc2lvbklkOyAvLyBhdWRpbyBzZXNzaW9uIElECisgICAgICAgIGVmZmVjdF9kZXNjcmlwdG9yX3QgbURlc2NyaXB0b3I7Ly8gZWZmZWN0IGRlc2NyaXB0b3IgcmVjZWl2ZWQgZnJvbSBlZmZlY3QgZW5naW5lCisgICAgICAgIGVmZmVjdF9jb25maWdfdCAgICAgbUNvbmZpZzsgICAgLy8gaW5wdXQgYW5kIG91dHB1dCBhdWRpbyBjb25maWd1cmF0aW9uCisgICAgICAgIGVmZmVjdF9pbnRlcmZhY2VfdCAgbUVmZmVjdEludGVyZmFjZTsgLy8gRWZmZWN0IG1vZHVsZSBDIEFQSQorICAgICAgICBzdGF0dXNfdCBtU3RhdHVzOyAgICAgICAgICAgICAgIC8vIGluaXRpYWxpemF0aW9uIHN0YXR1cworICAgICAgICB1aW50MzJfdCBtU3RhdGU7ICAgICAgICAgICAgICAgIC8vIGN1cnJlbnQgYWN0aXZhdGlvbiBzdGF0ZSAoZWZmZWN0X3N0YXRlKQorICAgICAgICBWZWN0b3I8IHdwPEVmZmVjdEhhbmRsZT4gPiBtSGFuZGxlczsgICAgLy8gbGlzdCBvZiBjbGllbnQgaGFuZGxlcworICAgIH07CisKKyAgICAvLyBUaGUgRWZmZWN0SGFuZGxlIGNsYXNzIGltcGxlbWVudHMgdGhlIElFZmZlY3QgaW50ZXJmYWNlLiBJdCBwcm92aWRlcyByZXNvdXJjZXMKKyAgICAvLyB0byByZWNlaXZlIHBhcmFtZXRlciB1cGRhdGVzLCBrZWVwcyB0cmFjayBvZiBlZmZlY3QgY29udHJvbAorICAgIC8vIG93bmVyc2hpcCBhbmQgc3RhdGUgYW5kIGhhcyBhIHBvaW50ZXIgdG8gdGhlIEVmZmVjdE1vZHVsZSBvYmplY3QgaXQgaXMgY29udHJvbGxpbmcuCisgICAgLy8gVGhlcmUgaXMgb25lIEVmZmVjdEhhbmRsZSBvYmplY3QgZm9yIGVhY2ggYXBwbGljYXRpb24gY29udHJvbGxpbmcgKG9yIHVzaW5nKQorICAgIC8vIGFuIGVmZmVjdCBtb2R1bGUuCisgICAgLy8gVGhlIEVmZmVjdEhhbmRsZSBpcyBvYnRhaW5lZCBieSBjYWxsaW5nIEF1ZGlvRmxpbmdlcjo6Y3JlYXRlRWZmZWN0KCkuCisgICAgY2xhc3MgRWZmZWN0SGFuZGxlOiBwdWJsaWMgYW5kcm9pZDo6Qm5FZmZlY3QgeworICAgIHB1YmxpYzoKKworICAgICAgICBFZmZlY3RIYW5kbGUoY29uc3Qgc3A8RWZmZWN0TW9kdWxlPiYgZWZmZWN0LAorICAgICAgICAgICAgICAgIGNvbnN0IHNwPEF1ZGlvRmxpbmdlcjo6Q2xpZW50PiYgY2xpZW50LAorICAgICAgICAgICAgICAgIGNvbnN0IHNwPElFZmZlY3RDbGllbnQ+JiBlZmZlY3RDbGllbnQsCisgICAgICAgICAgICAgICAgaW50MzJfdCBwcmlvcml0eSk7CisgICAgICAgIHZpcnR1YWwgfkVmZmVjdEhhbmRsZSgpOworCisgICAgICAgIC8vIElFZmZlY3QKKyAgICAgICAgdmlydHVhbCBzdGF0dXNfdCBlbmFibGUoKTsKKyAgICAgICAgdmlydHVhbCBzdGF0dXNfdCBkaXNhYmxlKCk7CisgICAgICAgIHZpcnR1YWwgc3RhdHVzX3QgY29tbWFuZChpbnQgY21kQ29kZSwgaW50IGNtZFNpemUsIHZvaWQgKnBDbWREYXRhLCBpbnQgKnJlcGx5U2l6ZSwgdm9pZCAqcFJlcGx5RGF0YSk7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaXNjb25uZWN0KCk7CisgICAgICAgIHZpcnR1YWwgc3A8SU1lbW9yeT4gZ2V0Q2JsaygpIGNvbnN0OworICAgICAgICB2aXJ0dWFsIHN0YXR1c190IG9uVHJhbnNhY3QodWludDMyX3QgY29kZSwgY29uc3QgUGFyY2VsJiBkYXRhLAorICAgICAgICAgICAgICAgIFBhcmNlbCogcmVwbHksIHVpbnQzMl90IGZsYWdzKTsKKworCisgICAgICAgIC8vIEdpdmUgb3IgdGFrZSBjb250cm9sIG9mIGVmZmVjdCBtb2R1bGUKKyAgICAgICAgdm9pZCBzZXRDb250cm9sKGJvb2wgaGFzQ29udHJvbCwgYm9vbCBzaWduYWwpOworICAgICAgICB2b2lkIGNvbW1hbmRFeGVjdXRlZChpbnQgY21kQ29kZSwgaW50IGNtZFNpemUsIHZvaWQgKnBDbWREYXRhLCBpbnQgcmVwbHlTaXplLCB2b2lkICpwUmVwbHlEYXRhKTsKKyAgICAgICAgdm9pZCBzZXRFbmFibGVkKGJvb2wgZW5hYmxlZCk7CisKKyAgICAgICAgLy8gR2V0dGVycworICAgICAgICBpbnQgaWQoKSB7IHJldHVybiBtRWZmZWN0LT5pZCgpOyB9CisgICAgICAgIGludCBwcmlvcml0eSgpIHsgcmV0dXJuIG1Qcmlvcml0eTsgfQorICAgICAgICBib29sIGhhc0NvbnRyb2woKSB7IHJldHVybiBtSGFzQ29udHJvbDsgfQorICAgICAgICBzcDxFZmZlY3RNb2R1bGU+IGVmZmVjdCgpIHsgcmV0dXJuIG1FZmZlY3Q7IH0KKworICAgICAgICB2b2lkIGR1bXAoY2hhciogYnVmZmVyLCBzaXplX3Qgc2l6ZSk7CisKKyAgICBwcm90ZWN0ZWQ6CisKKyAgICAgICAgRWZmZWN0SGFuZGxlKGNvbnN0IEVmZmVjdEhhbmRsZSYpOworICAgICAgICBFZmZlY3RIYW5kbGUmIG9wZXJhdG9yID0oY29uc3QgRWZmZWN0SGFuZGxlJik7CisKKyAgICAgICAgc3A8RWZmZWN0TW9kdWxlPiBtRWZmZWN0OyAgICAgICAgICAgLy8gcG9pbnRlciB0byBjb250cm9sbGVkIEVmZmVjdE1vZHVsZQorICAgICAgICBzcDxJRWZmZWN0Q2xpZW50PiBtRWZmZWN0Q2xpZW50OyAgICAvLyBjYWxsYmFjayBpbnRlcmZhY2UgZm9yIGNsaWVudCBub3RpZmljYXRpb25zCisgICAgICAgIHNwPENsaWVudD4gICAgICAgICAgbUNsaWVudDsgICAgICAgIC8vIGNsaWVudCBmb3Igc2hhcmVkIG1lbW9yeSBhbGxvY2F0aW9uCisgICAgICAgIHNwPElNZW1vcnk+ICAgICAgICAgbUNibGtNZW1vcnk7ICAgIC8vIHNoYXJlZCBtZW1vcnkgZm9yIGNvbnRyb2wgYmxvY2sKKyAgICAgICAgZWZmZWN0X3BhcmFtX2NibGtfdCogbUNibGs7ICAgICAgICAgLy8gY29udHJvbCBibG9jayBmb3IgZGVmZXJyZWQgcGFyYW1ldGVyIHNldHRpbmcgdmlhIHNoYXJlZCBtZW1vcnkKKyAgICAgICAgdWludDhfdCogICAgICAgICAgICBtQnVmZmVyOyAgICAgICAgLy8gcG9pbnRlciB0byBwYXJhbWV0ZXIgYXJlYSBpbiBzaGFyZWQgbWVtb3J5CisgICAgICAgIGludCBtUHJpb3JpdHk7ICAgICAgICAgICAgICAgICAgICAgIC8vIGNsaWVudCBhcHBsaWNhdGlvbiBwcmlvcml0eSB0byBjb250cm9sIHRoZSBlZmZlY3QKKyAgICAgICAgYm9vbCBtSGFzQ29udHJvbDsgICAgICAgICAgICAgICAgICAgLy8gdHJ1ZSBpZiB0aGlzIGhhbmRsZSBpcyBjb250cm9sbGluZyB0aGUgZWZmZWN0CisgICAgfTsKKworICAgIC8vIHRoZSBFZmZlY3RDaGFpbiBjbGFzcyByZXByZXNlbnRzIGEgZ3JvdXAgb2YgZWZmZWN0cyBhc3NvY2lhdGVkIHRvIG9uZSBhdWRpbyBzZXNzaW9uLgorICAgIC8vIFRoZXJlIGNhbiBiZSBhbnkgbnVtYmVyIG9mIEVmZmVjdENoYWluIG9iamVjdHMgcGVyIG91dHB1dCBtaXhlciB0aHJlYWQgKFBsYXliYWNrVGhyZWFkKS4KKyAgICAvLyBUaGUgRWZmZWNDaGFpbiB3aXRoIHNlc3Npb24gSUQgMCBjb250YWlucyBnbG9iYWwgZWZmZWN0cyBhcHBsaWVkIHRvIHRoZSBvdXRwdXQgbWl4LgorICAgIC8vIEVmZmVjdHMgaW4gdGhpcyBjaGFpbiBjYW4gYmUgaW5zZXJ0IG9yIGF1eGlsaWFyeS4gRWZmZWN0cyBpbiBvdGhlciBjaGFpbnMgKGF0dGFjaGVkIHRvIHRyYWNrcykKKyAgICAvLyBhcmUgaW5zZXJ0IG9ubHkuIFRoZSBFZmZlY3RDaGFpbiBtYWludGFpbnMgYW4gb3JkZXJlZCBsaXN0IG9mIGVmZmVjdCBtb2R1bGUsIHRoZSBvcmRlciBjb3JyZXNwb25kaW5nCisgICAgLy8gaW4gdGhlIGVmZmVjdCBwcm9jZXNzIG9yZGVyLiBXaGVuIGF0dGFjaGVkIHRvIGEgdHJhY2sgKHNlc3Npb24gSUQgIT0gMCksIGl0IGFsc28gcHJvdmlkZSBpdCdzIG93bgorICAgIC8vIGlucHV0IGJ1ZmZlciB1c2VkIGJ5IHRoZSB0cmFjayBhcyBhY2N1bXVsYXRpb24gYnVmZmVyLgorICAgIGNsYXNzIEVmZmVjdENoYWluOiBwdWJsaWMgUmVmQmFzZSB7CisgICAgcHVibGljOgorICAgICAgICBFZmZlY3RDaGFpbihjb25zdCB3cDxUaHJlYWRCYXNlPiYgd1RocmVhZCwgaW50IHNlc3Npb25JZCk7CisgICAgICAgIH5FZmZlY3RDaGFpbigpOworCisgICAgICAgIHZvaWQgcHJvY2Vzc19sKCk7CisKKyAgICAgICAgdm9pZCBsb2NrKCkgeworICAgICAgICAgICAgbUxvY2subG9jaygpOworICAgICAgICB9CisgICAgICAgIHZvaWQgdW5sb2NrKCkgeworICAgICAgICAgICAgbUxvY2sudW5sb2NrKCk7CisgICAgICAgIH0KKworICAgICAgICBzdGF0dXNfdCBhZGRFZmZlY3Qoc3A8RWZmZWN0TW9kdWxlPiYgaGFuZGxlKTsKKyAgICAgICAgc2l6ZV90IHJlbW92ZUVmZmVjdChjb25zdCBzcDxFZmZlY3RNb2R1bGU+JiBoYW5kbGUpOworCisgICAgICAgIGludCBzZXNzaW9uSWQoKSB7CisgICAgICAgICAgICByZXR1cm4gbVNlc3Npb25JZDsKKyAgICAgICAgfQorICAgICAgICBzcDxFZmZlY3RNb2R1bGU+IGdldEVmZmVjdEZyb21EZXNjKGVmZmVjdF9kZXNjcmlwdG9yX3QgKmRlc2NyaXB0b3IpOworICAgICAgICBzcDxFZmZlY3RNb2R1bGU+IGdldEVmZmVjdEZyb21JZChpbnQgaWQpOworICAgICAgICBzcDxFZmZlY3RNb2R1bGU+IGdldFZvbHVtZUNvbnRyb2xsZXIoKTsKKyAgICAgICAgYm9vbCBzZXRWb2x1bWUodWludDMyX3QgKmxlZnQsIHVpbnQzMl90ICpyaWdodCk7CisgICAgICAgIHZvaWQgc2V0RGV2aWNlKHVpbnQzMl90IGRldmljZSk7CisgICAgICAgIHZvaWQgc2V0TW9kZSh1aW50MzJfdCBtb2RlKTsKKworCisgICAgICAgIHZvaWQgc2V0SW5CdWZmZXIoaW50MTZfdCAqYnVmZmVyLCBib29sIG93bnNCdWZmZXIgPSBmYWxzZSkgeworICAgICAgICAgICAgbUluQnVmZmVyID0gYnVmZmVyOworICAgICAgICAgICAgbU93bkluQnVmZmVyID0gb3duc0J1ZmZlcjsKKyAgICAgICAgfQorICAgICAgICBpbnQxNl90ICppbkJ1ZmZlcigpIHsKKyAgICAgICAgICAgIHJldHVybiBtSW5CdWZmZXI7CisgICAgICAgIH0KKyAgICAgICAgdm9pZCBzZXRPdXRCdWZmZXIoaW50MTZfdCAqYnVmZmVyKSB7CisgICAgICAgICAgICBtT3V0QnVmZmVyID0gYnVmZmVyOworICAgICAgICB9CisgICAgICAgIGludDE2X3QgKm91dEJ1ZmZlcigpIHsKKyAgICAgICAgICAgIHJldHVybiBtT3V0QnVmZmVyOworICAgICAgICB9CisKKyAgICAgICAgdm9pZCBzdGFydFRyYWNrKCkge21BY3RpdmVUcmFja0NudCsrO30KKyAgICAgICAgdm9pZCBzdG9wVHJhY2soKSB7bUFjdGl2ZVRyYWNrQ250LS07fQorICAgICAgICBpbnQgYWN0aXZlVHJhY2tzKCkgeyByZXR1cm4gbUFjdGl2ZVRyYWNrQ250O30KKworICAgICAgICBzdGF0dXNfdCBkdW1wKGludCBmZCwgY29uc3QgVmVjdG9yPFN0cmluZzE2PiYgYXJncyk7CisKKyAgICBwcm90ZWN0ZWQ6CisKKyAgICAgICAgRWZmZWN0Q2hhaW4oY29uc3QgRWZmZWN0Q2hhaW4mKTsKKyAgICAgICAgRWZmZWN0Q2hhaW4mIG9wZXJhdG9yID0oY29uc3QgRWZmZWN0Q2hhaW4mKTsKKworICAgICAgICB3cDxUaHJlYWRCYXNlPiBtVGhyZWFkOyAgICAgLy8gcGFyZW50IG1peGVyIHRocmVhZAorICAgICAgICBNdXRleCBtTG9jazsgICAgICAgICAgICAgICAgLy8gbXV0ZXggcHJvdGVjdGluZyBlZmZlY3QgbGlzdAorICAgICAgICBWZWN0b3I8c3A8RWZmZWN0TW9kdWxlPiA+IG1FZmZlY3RzOyAvLyBsaXN0IG9mIGVmZmVjdCBtb2R1bGVzCisgICAgICAgIGludCBtU2Vzc2lvbklkOyAgICAgICAgICAgICAvLyBhdWRpbyBzZXNzaW9uIElECisgICAgICAgIGludDE2X3QgKm1JbkJ1ZmZlcjsgICAgICAgICAvLyBjaGFpbiBpbnB1dCBidWZmZXIKKyAgICAgICAgaW50MTZfdCAqbU91dEJ1ZmZlcjsgICAgICAgIC8vIGNoYWluIG91dHB1dCBidWZmZXIKKyAgICAgICAgaW50IG1Wb2x1bWVDdHJsSWR4OyAgICAgICAgIC8vIGluZGV4IG9mIGluc2VydCBlZmZlY3QgaGF2aW5nIGNvbnRyb2wgb3ZlciB2b2x1bWUKKyAgICAgICAgaW50IG1BY3RpdmVUcmFja0NudDsgICAgICAgIC8vIG51bWJlciBvZiBhY3RpdmUgdHJhY2tzIGNvbm5lY3RlZAorICAgICAgICBib29sIG1Pd25JbkJ1ZmZlcjsgICAgICAgICAgLy8gdHJ1ZSBpZiB0aGUgY2hhaW4gb3ducyBpdHMgaW5wdXQgYnVmZmVyCisgICAgfTsKKwogICAgIGZyaWVuZCBjbGFzcyBSZWNvcmRUaHJlYWQ7CiAgICAgZnJpZW5kIGNsYXNzIFBsYXliYWNrVGhyZWFkOwogCkBAIC03OTYsOCArMTExOSwxOSBAQAogCiAgICAgICAgICAgICAgICAgRGVmYXVsdEtleWVkVmVjdG9yPCBpbnQsIHNwPFJlY29yZFRocmVhZD4gPiAgICBtUmVjb3JkVGhyZWFkczsKIAotICAgICAgICAgICAgICAgIFNvcnRlZFZlY3Rvcjwgc3A8SUJpbmRlcj4gPiAgICAgICAgIG1Ob3RpZmljYXRpb25DbGllbnRzOwotICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1OZXh0VGhyZWFkSWQ7CisgICAgICAgICAgICAgICAgRGVmYXVsdEtleWVkVmVjdG9yPCBwaWRfdCwgc3A8Tm90aWZpY2F0aW9uQ2xpZW50PiA+ICAgIG1Ob3RpZmljYXRpb25DbGllbnRzOworICAgICAgICAgICAgICAgIHZvbGF0aWxlIGludDMyX3QgICAgICAgICAgICAgICAgICAgIG1OZXh0VW5pcXVlSWQ7CisjaWZkZWYgTFZNWAorICAgICAgICAgICAgICAgIGludCBtTGlmZVZpYmVzQ2xpZW50UGlkOworI2VuZGlmCisgICAgICAgICAgICAgICAgdWludDMyX3QgbU1vZGU7CisKKyAgICAgICAgICAgICAgICAvLyBNYXhpbXVtIENQVSBsb2FkIGFsbG9jYXRlZCB0byBhdWRpbyBlZmZlY3RzIGluIDAuMSBNSVBTIChBUk12NVRFLCAwIFdTIG1lbW9yeSkgdW5pdHMKKyAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgdWludDMyX3QgTUFYX0VGRkVDVFNfQ1BVX0xPQUQgPSAxMDAwOworICAgICAgICAgICAgICAgIC8vIE1heGltdW0gbWVtb3J5IGFsbG9jYXRlZCB0byBhdWRpbyBlZmZlY3RzIGluIEtCCisgICAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IE1BWF9FRkZFQ1RTX01FTU9SWSA9IDUxMjsKKyAgICAgICAgICAgICAgICB1aW50MzJfdCBtVG90YWxFZmZlY3RzQ3B1TG9hZDsgLy8gY3VycmVudCBDUFUgbG9hZCB1c2VkIGJ5IGVmZmVjdHMKKyAgICAgICAgICAgICAgICB1aW50MzJfdCBtVG90YWxFZmZlY3RzTWVtb3J5OyAgLy8gY3VycmVudCBtZW1vcnkgdXNlZCBieSBlZmZlY3RzCiB9OwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9saWJzL2F1ZGlvZmxpbmdlci9BdWRpb01peGVyLmNwcCBiL2xpYnMvYXVkaW9mbGluZ2VyL0F1ZGlvTWl4ZXIuY3BwCmluZGV4IDE5YTQ0MmEuLjhhYWEzMjUgMTAwNjQ0Ci0tLSBhL2xpYnMvYXVkaW9mbGluZ2VyL0F1ZGlvTWl4ZXIuY3BwCisrKyBiL2xpYnMvYXVkaW9mbGluZ2VyL0F1ZGlvTWl4ZXIuY3BwCkBAIC01Niw2ICs1Niw4IEBACiAgICAgICAgIHQtPnZvbHVtZVsxXSA9IFVOSVRZX0dBSU47CiAgICAgICAgIHQtPnZvbHVtZUluY1swXSA9IDA7CiAgICAgICAgIHQtPnZvbHVtZUluY1sxXSA9IDA7CisgICAgICAgIHQtPmF1eExldmVsID0gMDsKKyAgICAgICAgdC0+YXV4SW5jID0gMDsKICAgICAgICAgdC0+Y2hhbm5lbENvdW50ID0gMjsKICAgICAgICAgdC0+ZW5hYmxlZCA9IDA7CiAgICAgICAgIHQtPmZvcm1hdCA9IDE2OwpAQCAtNjUsNiArNjcsOCBAQAogICAgICAgICB0LT5yZXNhbXBsZXIgPSAwOwogICAgICAgICB0LT5zYW1wbGVSYXRlID0gbVNhbXBsZVJhdGU7CiAgICAgICAgIHQtPmluID0gMDsKKyAgICAgICAgdC0+bWFpbkJ1ZmZlciA9IE5VTEw7CisgICAgICAgIHQtPmF1eEJ1ZmZlciA9IE5VTEw7CiAgICAgICAgIHQrKzsKICAgICB9CiB9CkBAIC0xNjksMjggKzE3Myw0OCBAQAogICAgIHJldHVybiBOT19FUlJPUjsKIH0KIAotc3RhdHVzX3QgQXVkaW9NaXhlcjo6c2V0UGFyYW1ldGVyKGludCB0YXJnZXQsIGludCBuYW1lLCBpbnQgdmFsdWUpCitzdGF0dXNfdCBBdWRpb01peGVyOjpzZXRQYXJhbWV0ZXIoaW50IHRhcmdldCwgaW50IG5hbWUsIHZvaWQgKnZhbHVlKQogeworICAgIGludCB2YWx1ZUludCA9IChpbnQpdmFsdWU7CisgICAgaW50MzJfdCAqdmFsdWVCdWYgPSAoaW50MzJfdCAqKXZhbHVlOworCiAgICAgc3dpdGNoICh0YXJnZXQpIHsKICAgICBjYXNlIFRSQUNLOgogICAgICAgICBpZiAobmFtZSA9PSBDSEFOTkVMX0NPVU5UKSB7Ci0gICAgICAgICAgICBpZiAoKHVpbnQzMl90KHZhbHVlKSA8PSBNQVhfTlVNX0NIQU5ORUxTKSAmJiAodmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG1TdGF0ZS50cmFja3NbIG1BY3RpdmVUcmFjayBdLmNoYW5uZWxDb3VudCAhPSB2YWx1ZSkgewotICAgICAgICAgICAgICAgICAgICBtU3RhdGUudHJhY2tzWyBtQWN0aXZlVHJhY2sgXS5jaGFubmVsQ291bnQgPSB2YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgTE9HVigic2V0UGFyYW1ldGVyKFRSQUNLLCBDSEFOTkVMX0NPVU5ULCAlZCkiLCB2YWx1ZSk7CisgICAgICAgICAgICBpZiAoKHVpbnQzMl90KHZhbHVlSW50KSA8PSBNQVhfTlVNX0NIQU5ORUxTKSAmJiAodmFsdWVJbnQpKSB7CisgICAgICAgICAgICAgICAgaWYgKG1TdGF0ZS50cmFja3NbIG1BY3RpdmVUcmFjayBdLmNoYW5uZWxDb3VudCAhPSB2YWx1ZUludCkgeworICAgICAgICAgICAgICAgICAgICBtU3RhdGUudHJhY2tzWyBtQWN0aXZlVHJhY2sgXS5jaGFubmVsQ291bnQgPSB2YWx1ZUludDsKKyAgICAgICAgICAgICAgICAgICAgTE9HVigic2V0UGFyYW1ldGVyKFRSQUNLLCBDSEFOTkVMX0NPVU5ULCAlZCkiLCB2YWx1ZUludCk7CiAgICAgICAgICAgICAgICAgICAgIGludmFsaWRhdGVTdGF0ZSgxPDxtQWN0aXZlVHJhY2spOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICByZXR1cm4gTk9fRVJST1I7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgaWYgKG5hbWUgPT0gTUFJTl9CVUZGRVIpIHsKKyAgICAgICAgICAgIGlmIChtU3RhdGUudHJhY2tzWyBtQWN0aXZlVHJhY2sgXS5tYWluQnVmZmVyICE9IHZhbHVlQnVmKSB7CisgICAgICAgICAgICAgICAgbVN0YXRlLnRyYWNrc1sgbUFjdGl2ZVRyYWNrIF0ubWFpbkJ1ZmZlciA9IHZhbHVlQnVmOworICAgICAgICAgICAgICAgIExPR1YoInNldFBhcmFtZXRlcihUUkFDSywgTUFJTl9CVUZGRVIsICVwKSIsIHZhbHVlQnVmKTsKKyAgICAgICAgICAgICAgICBpbnZhbGlkYXRlU3RhdGUoMTw8bUFjdGl2ZVRyYWNrKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBOT19FUlJPUjsKKyAgICAgICAgfQorICAgICAgICBpZiAobmFtZSA9PSBBVVhfQlVGRkVSKSB7CisgICAgICAgICAgICBpZiAobVN0YXRlLnRyYWNrc1sgbUFjdGl2ZVRyYWNrIF0uYXV4QnVmZmVyICE9IHZhbHVlQnVmKSB7CisgICAgICAgICAgICAgICAgbVN0YXRlLnRyYWNrc1sgbUFjdGl2ZVRyYWNrIF0uYXV4QnVmZmVyID0gdmFsdWVCdWY7CisgICAgICAgICAgICAgICAgTE9HVigic2V0UGFyYW1ldGVyKFRSQUNLLCBBVVhfQlVGRkVSLCAlcCkiLCB2YWx1ZUJ1Zik7CisgICAgICAgICAgICAgICAgaW52YWxpZGF0ZVN0YXRlKDE8PG1BY3RpdmVUcmFjayk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gTk9fRVJST1I7CisgICAgICAgIH0KKwogICAgICAgICBicmVhazsKICAgICBjYXNlIFJFU0FNUExFOgogICAgICAgICBpZiAobmFtZSA9PSBTQU1QTEVfUkFURSkgewotICAgICAgICAgICAgaWYgKHZhbHVlID4gMCkgeworICAgICAgICAgICAgaWYgKHZhbHVlSW50ID4gMCkgewogICAgICAgICAgICAgICAgIHRyYWNrX3QmIHRyYWNrID0gbVN0YXRlLnRyYWNrc1sgbUFjdGl2ZVRyYWNrIF07Ci0gICAgICAgICAgICAgICAgaWYgKHRyYWNrLnNldFJlc2FtcGxlcih1aW50MzJfdCh2YWx1ZSksIG1TYW1wbGVSYXRlKSkgeworICAgICAgICAgICAgICAgIGlmICh0cmFjay5zZXRSZXNhbXBsZXIodWludDMyX3QodmFsdWVJbnQpLCBtU2FtcGxlUmF0ZSkpIHsKICAgICAgICAgICAgICAgICAgICAgTE9HVigic2V0UGFyYW1ldGVyKFJFU0FNUExFLCBTQU1QTEVfUkFURSwgJXUpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCh2YWx1ZSkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90KHZhbHVlSW50KSk7CiAgICAgICAgICAgICAgICAgICAgIGludmFsaWRhdGVTdGF0ZSgxPDxtQWN0aXZlVHJhY2spOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICByZXR1cm4gTk9fRVJST1I7CkBAIC0yMDEsMTggKzIyNSwzOSBAQAogICAgIGNhc2UgVk9MVU1FOgogICAgICAgICBpZiAoKHVpbnQzMl90KG5hbWUtVk9MVU1FMCkgPCBNQVhfTlVNX0NIQU5ORUxTKSkgewogICAgICAgICAgICAgdHJhY2tfdCYgdHJhY2sgPSBtU3RhdGUudHJhY2tzWyBtQWN0aXZlVHJhY2sgXTsKLSAgICAgICAgICAgIGlmICh0cmFjay52b2x1bWVbbmFtZS1WT0xVTUUwXSAhPSB2YWx1ZSkgeworICAgICAgICAgICAgaWYgKHRyYWNrLnZvbHVtZVtuYW1lLVZPTFVNRTBdICE9IHZhbHVlSW50KSB7CisgICAgICAgICAgICAgICAgTE9HVigic2V0UGFyYW1ldGVyKFZPTFVNRSwgVk9MVU1FMC8xOiAlMDR4KSIsIHZhbHVlSW50KTsKICAgICAgICAgICAgICAgICB0cmFjay5wcmV2Vm9sdW1lW25hbWUtVk9MVU1FMF0gPSB0cmFjay52b2x1bWVbbmFtZS1WT0xVTUUwXSA8PCAxNjsKLSAgICAgICAgICAgICAgICB0cmFjay52b2x1bWVbbmFtZS1WT0xVTUUwXSA9IHZhbHVlOworICAgICAgICAgICAgICAgIHRyYWNrLnZvbHVtZVtuYW1lLVZPTFVNRTBdID0gdmFsdWVJbnQ7CiAgICAgICAgICAgICAgICAgaWYgKHRhcmdldCA9PSBWT0xVTUUpIHsKLSAgICAgICAgICAgICAgICAgICAgdHJhY2sucHJldlZvbHVtZVtuYW1lLVZPTFVNRTBdID0gdmFsdWUgPDwgMTY7CisgICAgICAgICAgICAgICAgICAgIHRyYWNrLnByZXZWb2x1bWVbbmFtZS1WT0xVTUUwXSA9IHZhbHVlSW50IDw8IDE2OwogICAgICAgICAgICAgICAgICAgICB0cmFjay52b2x1bWVJbmNbbmFtZS1WT0xVTUUwXSA9IDA7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBkID0gKHZhbHVlPDwxNikgLSB0cmFjay5wcmV2Vm9sdW1lW25hbWUtVk9MVU1FMF07CisgICAgICAgICAgICAgICAgICAgIGludDMyX3QgZCA9ICh2YWx1ZUludDw8MTYpIC0gdHJhY2sucHJldlZvbHVtZVtuYW1lLVZPTFVNRTBdOwogICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHZvbEluYyA9IGQgLyBpbnQzMl90KG1TdGF0ZS5mcmFtZUNvdW50KTsKICAgICAgICAgICAgICAgICAgICAgdHJhY2sudm9sdW1lSW5jW25hbWUtVk9MVU1FMF0gPSB2b2xJbmM7CiAgICAgICAgICAgICAgICAgICAgIGlmICh2b2xJbmMgPT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2sucHJldlZvbHVtZVtuYW1lLVZPTFVNRTBdID0gdmFsdWUgPDwgMTY7CisgICAgICAgICAgICAgICAgICAgICAgICB0cmFjay5wcmV2Vm9sdW1lW25hbWUtVk9MVU1FMF0gPSB2YWx1ZUludCA8PCAxNjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpbnZhbGlkYXRlU3RhdGUoMTw8bUFjdGl2ZVRyYWNrKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBOT19FUlJPUjsKKyAgICAgICAgfSBlbHNlIGlmIChuYW1lID09IEFVWExFVkVMKSB7CisgICAgICAgICAgICB0cmFja190JiB0cmFjayA9IG1TdGF0ZS50cmFja3NbIG1BY3RpdmVUcmFjayBdOworICAgICAgICAgICAgaWYgKHRyYWNrLmF1eExldmVsICE9IHZhbHVlSW50KSB7CisgICAgICAgICAgICAgICAgTE9HVigic2V0UGFyYW1ldGVyKFZPTFVNRSwgQVVYTEVWRUw6ICUwNHgpIiwgdmFsdWVJbnQpOworICAgICAgICAgICAgICAgIHRyYWNrLnByZXZBdXhMZXZlbCA9IHRyYWNrLmF1eExldmVsIDw8IDE2OworICAgICAgICAgICAgICAgIHRyYWNrLmF1eExldmVsID0gdmFsdWVJbnQ7CisgICAgICAgICAgICAgICAgaWYgKHRhcmdldCA9PSBWT0xVTUUpIHsKKyAgICAgICAgICAgICAgICAgICAgdHJhY2sucHJldkF1eExldmVsID0gdmFsdWVJbnQgPDwgMTY7CisgICAgICAgICAgICAgICAgICAgIHRyYWNrLmF1eEluYyA9IDA7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBkID0gKHZhbHVlSW50PDwxNikgLSB0cmFjay5wcmV2QXV4TGV2ZWw7CisgICAgICAgICAgICAgICAgICAgIGludDMyX3Qgdm9sSW5jID0gZCAvIGludDMyX3QobVN0YXRlLmZyYW1lQ291bnQpOworICAgICAgICAgICAgICAgICAgICB0cmFjay5hdXhJbmMgPSB2b2xJbmM7CisgICAgICAgICAgICAgICAgICAgIGlmICh2b2xJbmMgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2sucHJldkF1eExldmVsID0gdmFsdWVJbnQgPDwgMTY7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaW52YWxpZGF0ZVN0YXRlKDE8PG1BY3RpdmVUcmFjayk7CkBAIC0yNDUsNyArMjkwLDcgQEAKIH0KIAogaW5saW5lCi12b2lkIEF1ZGlvTWl4ZXI6OnRyYWNrX3Q6OmFkanVzdFZvbHVtZVJhbXAoKQordm9pZCBBdWRpb01peGVyOjp0cmFja190OjphZGp1c3RWb2x1bWVSYW1wKGJvb2wgYXV4KQogewogICAgIGZvciAoaW50IGk9MCA7IGk8MiA7IGkrKykgewogICAgICAgICBpZiAoKCh2b2x1bWVJbmNbaV0+MCkgJiYgKCgocHJldlZvbHVtZVtpXSt2b2x1bWVJbmNbaV0pPj4xNikgPj0gdm9sdW1lW2ldKSkgfHwKQEAgLTI1NCw2ICsyOTksMTMgQEAKICAgICAgICAgICAgIHByZXZWb2x1bWVbaV0gPSB2b2x1bWVbaV08PDE2OwogICAgICAgICB9CiAgICAgfQorICAgIGlmIChhdXgpIHsKKyAgICAgICAgaWYgKCgoYXV4SW5jPjApICYmICgoKHByZXZBdXhMZXZlbCthdXhJbmMpPj4xNikgPj0gYXV4TGV2ZWwpKSB8fAorICAgICAgICAgICAgKChhdXhJbmM8MCkgJiYgKCgocHJldkF1eExldmVsK2F1eEluYyk+PjE2KSA8PSBhdXhMZXZlbCkpKSB7CisgICAgICAgICAgICBhdXhJbmMgPSAwOworICAgICAgICAgICAgcHJldkF1eExldmVsID0gYXV4TGV2ZWw8PDE2OworICAgICAgICB9CisgICAgfQogfQogCiAKQEAgLTI2NSwxMyArMzE3LDEzIEBACiAKIAogCi12b2lkIEF1ZGlvTWl4ZXI6OnByb2Nlc3Modm9pZCogb3V0cHV0KQordm9pZCBBdWRpb01peGVyOjpwcm9jZXNzKCkKIHsKLSAgICBtU3RhdGUuaG9vaygmbVN0YXRlLCBvdXRwdXQpOworICAgIG1TdGF0ZS5ob29rKCZtU3RhdGUpOwogfQogCiAKLXZvaWQgQXVkaW9NaXhlcjo6cHJvY2Vzc19fdmFsaWRhdGUoc3RhdGVfdCogc3RhdGUsIHZvaWQqIG91dHB1dCkKK3ZvaWQgQXVkaW9NaXhlcjo6cHJvY2Vzc19fdmFsaWRhdGUoc3RhdGVfdCogc3RhdGUpCiB7CiAgICAgTE9HV19JRighc3RhdGUtPm5lZWRzQ2hhbmdlZCwKICAgICAgICAgImluIHByb2Nlc3NfX3ZhbGlkYXRlKCkgYnV0IG5vdGhpbmcncyBpbnZhbGlkIik7CkBAIC0zMDgsNyArMzYwLDEwIEBACiAgICAgICAgIG4gfD0gTkVFRFNfQ0hBTk5FTF8xICsgdC5jaGFubmVsQ291bnQgLSAxOwogICAgICAgICBuIHw9IE5FRURTX0ZPUk1BVF8xNjsKICAgICAgICAgbiB8PSB0LmRvZXNSZXNhbXBsZSgpID8gTkVFRFNfUkVTQU1QTEVfRU5BQkxFRCA6IE5FRURTX1JFU0FNUExFX0RJU0FCTEVEOwotICAgICAgIAorICAgICAgICBpZiAodC5hdXhMZXZlbCAhPSAwICYmIHQuYXV4QnVmZmVyICE9IE5VTEwpIHsKKyAgICAgICAgICAgIG4gfD0gTkVFRFNfQVVYX0VOQUJMRUQ7CisgICAgICAgIH0KKwogICAgICAgICBpZiAodC52b2x1bWVJbmNbMF18dC52b2x1bWVJbmNbMV0pIHsKICAgICAgICAgICAgIHZvbHVtZVJhbXAgPSAxOwogICAgICAgICB9IGVsc2UgaWYgKCF0LmRvZXNSZXNhbXBsZSgpICYmIHQudm9sdW1lUkwgPT0gMCkgewpAQCAtMzE5LDYgKzM3NCw5IEBACiAgICAgICAgIGlmICgobiAmIE5FRURTX01VVEVfX01BU0spID09IE5FRURTX01VVEVfRU5BQkxFRCkgewogICAgICAgICAgICAgdC5ob29rID0gdHJhY2tfX25vcDsKICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmICgobiAmIE5FRURTX0FVWF9fTUFTSykgPT0gTkVFRFNfQVVYX0VOQUJMRUQpIHsKKyAgICAgICAgICAgICAgICBhbGwxNkJpdHNTdGVyZW9Ob1Jlc2FtcGxlID0gMDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICgobiAmIE5FRURTX1JFU0FNUExFX19NQVNLKSA9PSBORUVEU19SRVNBTVBMRV9FTkFCTEVEKSB7CiAgICAgICAgICAgICAgICAgYWxsMTZCaXRzU3RlcmVvTm9SZXNhbXBsZSA9IDA7CiAgICAgICAgICAgICAgICAgcmVzYW1wbGluZyA9IDE7CkBAIC0zNjksNyArNDI3LDcgQEAKICAgICAgICAgY291bnRBY3RpdmVUcmFja3MsIHN0YXRlLT5lbmFibGVkVHJhY2tzLAogICAgICAgICBhbGwxNkJpdHNTdGVyZW9Ob1Jlc2FtcGxlLCByZXNhbXBsaW5nLCB2b2x1bWVSYW1wKTsKIAotICAgc3RhdGUtPmhvb2soc3RhdGUsIG91dHB1dCk7CisgICBzdGF0ZS0+aG9vayhzdGF0ZSk7CiAKICAgIC8vIE5vdyB0aGF0IHRoZSB2b2x1bWUgcmFtcCBoYXMgYmVlbiBkb25lLCBzZXQgb3B0aW1hbCBzdGF0ZSBhbmQKICAgIC8vIHRyYWNrIGhvb2tzIGZvciBzdWJzZXF1ZW50IG1peGVyIHByb2Nlc3MKQEAgLTM5MCw3ICs0NDgsNyBAQAogICAgICAgIH0KICAgICAgICBpZiAoYWxsTXV0ZWQpIHsKICAgICAgICAgICAgc3RhdGUtPmhvb2sgPSBwcm9jZXNzX19ub3A7Ci0gICAgICAgfSBlbHNlIGlmICghcmVzYW1wbGluZyAmJiBhbGwxNkJpdHNTdGVyZW9Ob1Jlc2FtcGxlKSB7CisgICAgICAgfSBlbHNlIGlmIChhbGwxNkJpdHNTdGVyZW9Ob1Jlc2FtcGxlKSB7CiAgICAgICAgICAgIGlmIChjb3VudEFjdGl2ZVRyYWNrcyA9PSAxKSB7CiAgICAgICAgICAgICAgIHN0YXRlLT5ob29rID0gcHJvY2Vzc19fT25lVHJhY2sxNkJpdHNTdGVyZW9Ob1Jlc2FtcGxpbmc7CiAgICAgICAgICAgIH0KQEAgLTQ4MSwzMCArNTM5LDQ0IEBACiB9CiAKIAotdm9pZCBBdWRpb01peGVyOjp0cmFja19fZ2VuZXJpY1Jlc2FtcGxlKHRyYWNrX3QqIHQsIGludDMyX3QqIG91dCwgc2l6ZV90IG91dEZyYW1lQ291bnQsIGludDMyX3QqIHRlbXApCit2b2lkIEF1ZGlvTWl4ZXI6OnRyYWNrX19nZW5lcmljUmVzYW1wbGUodHJhY2tfdCogdCwgaW50MzJfdCogb3V0LCBzaXplX3Qgb3V0RnJhbWVDb3VudCwgaW50MzJfdCogdGVtcCwgaW50MzJfdCogYXV4KQogewogICAgIHQtPnJlc2FtcGxlci0+c2V0U2FtcGxlUmF0ZSh0LT5zYW1wbGVSYXRlKTsKIAogICAgIC8vIHJhbXAgZ2FpbiAtIHJlc2FtcGxlIHRvIHRlbXAgYnVmZmVyIGFuZCBzY2FsZS9taXggaW4gMm5kIHN0ZXAKLSAgICBpZiBVTkxJS0VMWSh0LT52b2x1bWVJbmNbMF18dC0+dm9sdW1lSW5jWzFdKSB7CisgICAgaWYgKGF1eCAhPSBOVUxMKSB7CisgICAgICAgIC8vIGFsd2F5cyByZXNhbXBsZSB3aXRoIHVuaXR5IGdhaW4gd2hlbiBzZW5kaW5nIHRvIGF1eGlsaWFyeSBidWZmZXIgdG8gYmUgYWJsZQorICAgICAgICAvLyB0byBhcHBseSBzZW5kIGxldmVsIGFmdGVyIHJlc2FtcGxpbmcKKyAgICAgICAgLy8gVE9ETzogbW9kaWZ5IGVhY2ggcmVzYW1wbGVyIHRvIHN1cHBvcnQgYXV4IGNoYW5uZWw/CiAgICAgICAgIHQtPnJlc2FtcGxlci0+c2V0Vm9sdW1lKFVOSVRZX0dBSU4sIFVOSVRZX0dBSU4pOwogICAgICAgICBtZW1zZXQodGVtcCwgMCwgb3V0RnJhbWVDb3VudCAqIE1BWF9OVU1fQ0hBTk5FTFMgKiBzaXplb2YoaW50MzJfdCkpOwogICAgICAgICB0LT5yZXNhbXBsZXItPnJlc2FtcGxlKHRlbXAsIG91dEZyYW1lQ291bnQsIHQtPmJ1ZmZlclByb3ZpZGVyKTsKLSAgICAgICAgdm9sdW1lUmFtcFN0ZXJlbyh0LCBvdXQsIG91dEZyYW1lQ291bnQsIHRlbXApOwotICAgIH0KKyAgICAgICAgaWYgVU5MSUtFTFkodC0+dm9sdW1lSW5jWzBdfHQtPnZvbHVtZUluY1sxXXx0LT5hdXhJbmMpIHsKKyAgICAgICAgICAgIHZvbHVtZVJhbXBTdGVyZW8odCwgb3V0LCBvdXRGcmFtZUNvdW50LCB0ZW1wLCBhdXgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdm9sdW1lU3RlcmVvKHQsIG91dCwgb3V0RnJhbWVDb3VudCwgdGVtcCwgYXV4KTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIFVOTElLRUxZKHQtPnZvbHVtZUluY1swXXx0LT52b2x1bWVJbmNbMV0pIHsKKyAgICAgICAgICAgIHQtPnJlc2FtcGxlci0+c2V0Vm9sdW1lKFVOSVRZX0dBSU4sIFVOSVRZX0dBSU4pOworICAgICAgICAgICAgbWVtc2V0KHRlbXAsIDAsIG91dEZyYW1lQ291bnQgKiBNQVhfTlVNX0NIQU5ORUxTICogc2l6ZW9mKGludDMyX3QpKTsKKyAgICAgICAgICAgIHQtPnJlc2FtcGxlci0+cmVzYW1wbGUodGVtcCwgb3V0RnJhbWVDb3VudCwgdC0+YnVmZmVyUHJvdmlkZXIpOworICAgICAgICAgICAgdm9sdW1lUmFtcFN0ZXJlbyh0LCBvdXQsIG91dEZyYW1lQ291bnQsIHRlbXAsIGF1eCk7CisgICAgICAgIH0KIAotICAgIC8vIGNvbnN0YW50IGdhaW4KLSAgICBlbHNlIHsKLSAgICAgICAgdC0+cmVzYW1wbGVyLT5zZXRWb2x1bWUodC0+dm9sdW1lWzBdLCB0LT52b2x1bWVbMV0pOwotICAgICAgICB0LT5yZXNhbXBsZXItPnJlc2FtcGxlKG91dCwgb3V0RnJhbWVDb3VudCwgdC0+YnVmZmVyUHJvdmlkZXIpOworICAgICAgICAvLyBjb25zdGFudCBnYWluCisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdC0+cmVzYW1wbGVyLT5zZXRWb2x1bWUodC0+dm9sdW1lWzBdLCB0LT52b2x1bWVbMV0pOworICAgICAgICAgICAgdC0+cmVzYW1wbGVyLT5yZXNhbXBsZShvdXQsIG91dEZyYW1lQ291bnQsIHQtPmJ1ZmZlclByb3ZpZGVyKTsKKyAgICAgICAgfQogICAgIH0KIH0KIAotdm9pZCBBdWRpb01peGVyOjp0cmFja19fbm9wKHRyYWNrX3QqIHQsIGludDMyX3QqIG91dCwgc2l6ZV90IG91dEZyYW1lQ291bnQsIGludDMyX3QqIHRlbXApCit2b2lkIEF1ZGlvTWl4ZXI6OnRyYWNrX19ub3AodHJhY2tfdCogdCwgaW50MzJfdCogb3V0LCBzaXplX3Qgb3V0RnJhbWVDb3VudCwgaW50MzJfdCogdGVtcCwgaW50MzJfdCogYXV4KQogewogfQogCi12b2lkIEF1ZGlvTWl4ZXI6OnZvbHVtZVJhbXBTdGVyZW8odHJhY2tfdCogdCwgaW50MzJfdCogb3V0LCBzaXplX3QgZnJhbWVDb3VudCwgaW50MzJfdCogdGVtcCkKK3ZvaWQgQXVkaW9NaXhlcjo6dm9sdW1lUmFtcFN0ZXJlbyh0cmFja190KiB0LCBpbnQzMl90KiBvdXQsIHNpemVfdCBmcmFtZUNvdW50LCBpbnQzMl90KiB0ZW1wLCBpbnQzMl90KiBhdXgpCiB7CiAgICAgaW50MzJfdCB2bCA9IHQtPnByZXZWb2x1bWVbMF07CiAgICAgaW50MzJfdCB2ciA9IHQtPnByZXZWb2x1bWVbMV07CkBAIC01MTQsOTggKzU4NiwyMzggQEAKICAgICAvL0xPR0QoIlswXSAlcDogaW5jPSVmLCB2MD0lZiwgdjE9JWQsIGZpbmFsPSVmLCBjb3VudD0lZCIsCiAgICAgLy8gICAgICAgIHQsIHZsSW5jLzY1NTM2LjBmLCB2bC82NTUzNi4wZiwgdC0+dm9sdW1lWzBdLAogICAgIC8vICAgICAgICh2bCArIHZsSW5jKmZyYW1lQ291bnQpLzY1NTM2LjBmLCBmcmFtZUNvdW50KTsKLSAgIAorCiAgICAgLy8gcmFtcCB2b2x1bWUKLSAgICBkbyB7Ci0gICAgICAgICpvdXQrKyArPSAodmwgPj4gMTYpICogKCp0ZW1wKysgPj4gMTIpOwotICAgICAgICAqb3V0KysgKz0gKHZyID4+IDE2KSAqICgqdGVtcCsrID4+IDEyKTsKLSAgICAgICAgdmwgKz0gdmxJbmM7Ci0gICAgICAgIHZyICs9IHZySW5jOwotICAgIH0gd2hpbGUgKC0tZnJhbWVDb3VudCk7Ci0KLSAgICB0LT5wcmV2Vm9sdW1lWzBdID0gdmw7Ci0gICAgdC0+cHJldlZvbHVtZVsxXSA9IHZyOwotICAgIHQtPmFkanVzdFZvbHVtZVJhbXAoKTsKLX0KLQotdm9pZCBBdWRpb01peGVyOjp0cmFja19fMTZCaXRzU3RlcmVvKHRyYWNrX3QqIHQsIGludDMyX3QqIG91dCwgc2l6ZV90IGZyYW1lQ291bnQsIGludDMyX3QqIHRlbXApCi17Ci0gICAgaW50MTZfdCBjb25zdCAqaW4gPSBzdGF0aWNfY2FzdDxpbnQxNl90IGNvbnN0ICo+KHQtPmluKTsKLQotICAgIC8vIHJhbXAgZ2FpbgotICAgIGlmIFVOTElLRUxZKHQtPnZvbHVtZUluY1swXXx0LT52b2x1bWVJbmNbMV0pIHsKLSAgICAgICAgaW50MzJfdCB2bCA9IHQtPnByZXZWb2x1bWVbMF07Ci0gICAgICAgIGludDMyX3QgdnIgPSB0LT5wcmV2Vm9sdW1lWzFdOwotICAgICAgICBjb25zdCBpbnQzMl90IHZsSW5jID0gdC0+dm9sdW1lSW5jWzBdOwotICAgICAgICBjb25zdCBpbnQzMl90IHZySW5jID0gdC0+dm9sdW1lSW5jWzFdOwotCi0gICAgICAgIC8vIExPR0QoIlsxXSAlcDogaW5jPSVmLCB2MD0lZiwgdjE9JWQsIGZpbmFsPSVmLCBjb3VudD0lZCIsCi0gICAgICAgIC8vICAgICAgICB0LCB2bEluYy82NTUzNi4wZiwgdmwvNjU1MzYuMGYsIHQtPnZvbHVtZVswXSwKLSAgICAgICAgLy8gICAgICAgICh2bCArIHZsSW5jKmZyYW1lQ291bnQpLzY1NTM2LjBmLCBmcmFtZUNvdW50KTsKKyAgICBpZiBVTkxJS0VMWShhdXggIT0gTlVMTCkgeworICAgICAgICBpbnQzMl90IHZhID0gdC0+cHJldkF1eExldmVsOworICAgICAgICBjb25zdCBpbnQzMl90IHZhSW5jID0gdC0+YXV4SW5jOworICAgICAgICBpbnQzMl90IGw7CisgICAgICAgIGludDMyX3QgcjsKIAogICAgICAgICBkbyB7Ci0gICAgICAgICAgICAqb3V0KysgKz0gKHZsID4+IDE2KSAqIChpbnQzMl90KSAqaW4rKzsKLSAgICAgICAgICAgICpvdXQrKyArPSAodnIgPj4gMTYpICogKGludDMyX3QpICppbisrOworICAgICAgICAgICAgbCA9ICgqdGVtcCsrID4+IDEyKTsKKyAgICAgICAgICAgIHIgPSAoKnRlbXArKyA+PiAxMik7CisgICAgICAgICAgICAqb3V0KysgKz0gKHZsID4+IDE2KSAqIGw7CisgICAgICAgICAgICAqb3V0KysgKz0gKHZyID4+IDE2KSAqIHI7CisgICAgICAgICAgICAqYXV4KysgKz0gKHZhID4+IDE3KSAqIChsICsgcik7CisgICAgICAgICAgICB2bCArPSB2bEluYzsKKyAgICAgICAgICAgIHZyICs9IHZySW5jOworICAgICAgICAgICAgdmEgKz0gdmFJbmM7CisgICAgICAgIH0gd2hpbGUgKC0tZnJhbWVDb3VudCk7CisgICAgICAgIHQtPnByZXZBdXhMZXZlbCA9IHZhOworICAgIH0gZWxzZSB7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgICpvdXQrKyArPSAodmwgPj4gMTYpICogKCp0ZW1wKysgPj4gMTIpOworICAgICAgICAgICAgKm91dCsrICs9ICh2ciA+PiAxNikgKiAoKnRlbXArKyA+PiAxMik7CiAgICAgICAgICAgICB2bCArPSB2bEluYzsKICAgICAgICAgICAgIHZyICs9IHZySW5jOwogICAgICAgICB9IHdoaWxlICgtLWZyYW1lQ291bnQpOwotICAgICAgIAotICAgICAgICB0LT5wcmV2Vm9sdW1lWzBdID0gdmw7Ci0gICAgICAgIHQtPnByZXZWb2x1bWVbMV0gPSB2cjsKLSAgICAgICAgdC0+YWRqdXN0Vm9sdW1lUmFtcCgpOwogICAgIH0KKyAgICB0LT5wcmV2Vm9sdW1lWzBdID0gdmw7CisgICAgdC0+cHJldlZvbHVtZVsxXSA9IHZyOworICAgIHQtPmFkanVzdFZvbHVtZVJhbXAoKGF1eCAhPSBOVUxMKSk7Cit9CiAKLSAgICAvLyBjb25zdGFudCBnYWluCi0gICAgZWxzZSB7Ci0gICAgICAgIGNvbnN0IHVpbnQzMl90IHZybCA9IHQtPnZvbHVtZVJMOwordm9pZCBBdWRpb01peGVyOjp2b2x1bWVTdGVyZW8odHJhY2tfdCogdCwgaW50MzJfdCogb3V0LCBzaXplX3QgZnJhbWVDb3VudCwgaW50MzJfdCogdGVtcCwgaW50MzJfdCogYXV4KQoreworICAgIGNvbnN0IGludDE2X3QgdmwgPSB0LT52b2x1bWVbMF07CisgICAgY29uc3QgaW50MTZfdCB2ciA9IHQtPnZvbHVtZVsxXTsKKworICAgIGlmIFVOTElLRUxZKGF1eCAhPSBOVUxMKSB7CisgICAgICAgIGNvbnN0IGludDE2X3QgdmEgPSAoaW50MTZfdCl0LT5hdXhMZXZlbDsKICAgICAgICAgZG8gewotICAgICAgICAgICAgdWludDMyX3QgcmwgPSAqcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCBjb25zdCAqPihpbik7Ci0gICAgICAgICAgICBpbiArPSAyOwotICAgICAgICAgICAgb3V0WzBdID0gbXVsQWRkUkwoMSwgcmwsIHZybCwgb3V0WzBdKTsKLSAgICAgICAgICAgIG91dFsxXSA9IG11bEFkZFJMKDAsIHJsLCB2cmwsIG91dFsxXSk7CisgICAgICAgICAgICBpbnQxNl90IGwgPSAoaW50MTZfdCkoKnRlbXArKyA+PiAxMik7CisgICAgICAgICAgICBpbnQxNl90IHIgPSAoaW50MTZfdCkoKnRlbXArKyA+PiAxMik7CisgICAgICAgICAgICBvdXRbMF0gPSBtdWxBZGQobCwgdmwsIG91dFswXSk7CisgICAgICAgICAgICBpbnQxNl90IGEgPSAoaW50MTZfdCkoKChpbnQzMl90KWwgKyByKSA+PiAxKTsKKyAgICAgICAgICAgIG91dFsxXSA9IG11bEFkZChyLCB2ciwgb3V0WzFdKTsKKyAgICAgICAgICAgIG91dCArPSAyOworICAgICAgICAgICAgYXV4WzBdID0gbXVsQWRkKGEsIHZhLCBhdXhbMF0pOworICAgICAgICAgICAgYXV4Kys7CisgICAgICAgIH0gd2hpbGUgKC0tZnJhbWVDb3VudCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZG8geworICAgICAgICAgICAgaW50MTZfdCBsID0gKGludDE2X3QpKCp0ZW1wKysgPj4gMTIpOworICAgICAgICAgICAgaW50MTZfdCByID0gKGludDE2X3QpKCp0ZW1wKysgPj4gMTIpOworICAgICAgICAgICAgb3V0WzBdID0gbXVsQWRkKGwsIHZsLCBvdXRbMF0pOworICAgICAgICAgICAgb3V0WzFdID0gbXVsQWRkKHIsIHZyLCBvdXRbMV0pOwogICAgICAgICAgICAgb3V0ICs9IDI7CiAgICAgICAgIH0gd2hpbGUgKC0tZnJhbWVDb3VudCk7CiAgICAgfQorfQorCit2b2lkIEF1ZGlvTWl4ZXI6OnRyYWNrX18xNkJpdHNTdGVyZW8odHJhY2tfdCogdCwgaW50MzJfdCogb3V0LCBzaXplX3QgZnJhbWVDb3VudCwgaW50MzJfdCogdGVtcCwgaW50MzJfdCogYXV4KQoreworICAgIGludDE2X3QgY29uc3QgKmluID0gc3RhdGljX2Nhc3Q8aW50MTZfdCBjb25zdCAqPih0LT5pbik7CisKKyAgICBpZiBVTkxJS0VMWShhdXggIT0gTlVMTCkgeworICAgICAgICBpbnQzMl90IGw7CisgICAgICAgIGludDMyX3QgcjsKKyAgICAgICAgLy8gcmFtcCBnYWluCisgICAgICAgIGlmIFVOTElLRUxZKHQtPnZvbHVtZUluY1swXXx0LT52b2x1bWVJbmNbMV18dC0+YXV4SW5jKSB7CisgICAgICAgICAgICBpbnQzMl90IHZsID0gdC0+cHJldlZvbHVtZVswXTsKKyAgICAgICAgICAgIGludDMyX3QgdnIgPSB0LT5wcmV2Vm9sdW1lWzFdOworICAgICAgICAgICAgaW50MzJfdCB2YSA9IHQtPnByZXZBdXhMZXZlbDsKKyAgICAgICAgICAgIGNvbnN0IGludDMyX3QgdmxJbmMgPSB0LT52b2x1bWVJbmNbMF07CisgICAgICAgICAgICBjb25zdCBpbnQzMl90IHZySW5jID0gdC0+dm9sdW1lSW5jWzFdOworICAgICAgICAgICAgY29uc3QgaW50MzJfdCB2YUluYyA9IHQtPmF1eEluYzsKKyAgICAgICAgICAgIC8vIExPR0QoIlsxXSAlcDogaW5jPSVmLCB2MD0lZiwgdjE9JWQsIGZpbmFsPSVmLCBjb3VudD0lZCIsCisgICAgICAgICAgICAvLyAgICAgICAgdCwgdmxJbmMvNjU1MzYuMGYsIHZsLzY1NTM2LjBmLCB0LT52b2x1bWVbMF0sCisgICAgICAgICAgICAvLyAgICAgICAgKHZsICsgdmxJbmMqZnJhbWVDb3VudCkvNjU1MzYuMGYsIGZyYW1lQ291bnQpOworCisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgbCA9IChpbnQzMl90KSppbisrOworICAgICAgICAgICAgICAgIHIgPSAoaW50MzJfdCkqaW4rKzsKKyAgICAgICAgICAgICAgICAqb3V0KysgKz0gKHZsID4+IDE2KSAqIGw7CisgICAgICAgICAgICAgICAgKm91dCsrICs9ICh2ciA+PiAxNikgKiByOworICAgICAgICAgICAgICAgICphdXgrKyArPSAodmEgPj4gMTcpICogKGwgKyByKTsKKyAgICAgICAgICAgICAgICB2bCArPSB2bEluYzsKKyAgICAgICAgICAgICAgICB2ciArPSB2ckluYzsKKyAgICAgICAgICAgICAgICB2YSArPSB2YUluYzsKKyAgICAgICAgICAgIH0gd2hpbGUgKC0tZnJhbWVDb3VudCk7CisKKyAgICAgICAgICAgIHQtPnByZXZWb2x1bWVbMF0gPSB2bDsKKyAgICAgICAgICAgIHQtPnByZXZWb2x1bWVbMV0gPSB2cjsKKyAgICAgICAgICAgIHQtPnByZXZBdXhMZXZlbCA9IHZhOworICAgICAgICAgICAgdC0+YWRqdXN0Vm9sdW1lUmFtcCh0cnVlKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGNvbnN0YW50IGdhaW4KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBjb25zdCB1aW50MzJfdCB2cmwgPSB0LT52b2x1bWVSTDsKKyAgICAgICAgICAgIGNvbnN0IGludDE2X3QgdmEgPSAoaW50MTZfdCl0LT5hdXhMZXZlbDsKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICB1aW50MzJfdCBybCA9ICpyZWludGVycHJldF9jYXN0PHVpbnQzMl90IGNvbnN0ICo+KGluKTsKKyAgICAgICAgICAgICAgICBpbnQxNl90IGEgPSAoaW50MTZfdCkoKChpbnQzMl90KWluWzBdICsgaW5bMV0pID4+IDEpOworICAgICAgICAgICAgICAgIGluICs9IDI7CisgICAgICAgICAgICAgICAgb3V0WzBdID0gbXVsQWRkUkwoMSwgcmwsIHZybCwgb3V0WzBdKTsKKyAgICAgICAgICAgICAgICBvdXRbMV0gPSBtdWxBZGRSTCgwLCBybCwgdnJsLCBvdXRbMV0pOworICAgICAgICAgICAgICAgIG91dCArPSAyOworICAgICAgICAgICAgICAgIGF1eFswXSA9IG11bEFkZChhLCB2YSwgYXV4WzBdKTsKKyAgICAgICAgICAgICAgICBhdXgrKzsKKyAgICAgICAgICAgIH0gd2hpbGUgKC0tZnJhbWVDb3VudCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICAvLyByYW1wIGdhaW4KKyAgICAgICAgaWYgVU5MSUtFTFkodC0+dm9sdW1lSW5jWzBdfHQtPnZvbHVtZUluY1sxXSkgeworICAgICAgICAgICAgaW50MzJfdCB2bCA9IHQtPnByZXZWb2x1bWVbMF07CisgICAgICAgICAgICBpbnQzMl90IHZyID0gdC0+cHJldlZvbHVtZVsxXTsKKyAgICAgICAgICAgIGNvbnN0IGludDMyX3QgdmxJbmMgPSB0LT52b2x1bWVJbmNbMF07CisgICAgICAgICAgICBjb25zdCBpbnQzMl90IHZySW5jID0gdC0+dm9sdW1lSW5jWzFdOworCisgICAgICAgICAgICAvLyBMT0dEKCJbMV0gJXA6IGluYz0lZiwgdjA9JWYsIHYxPSVkLCBmaW5hbD0lZiwgY291bnQ9JWQiLAorICAgICAgICAgICAgLy8gICAgICAgIHQsIHZsSW5jLzY1NTM2LjBmLCB2bC82NTUzNi4wZiwgdC0+dm9sdW1lWzBdLAorICAgICAgICAgICAgLy8gICAgICAgICh2bCArIHZsSW5jKmZyYW1lQ291bnQpLzY1NTM2LjBmLCBmcmFtZUNvdW50KTsKKworICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICpvdXQrKyArPSAodmwgPj4gMTYpICogKGludDMyX3QpICppbisrOworICAgICAgICAgICAgICAgICpvdXQrKyArPSAodnIgPj4gMTYpICogKGludDMyX3QpICppbisrOworICAgICAgICAgICAgICAgIHZsICs9IHZsSW5jOworICAgICAgICAgICAgICAgIHZyICs9IHZySW5jOworICAgICAgICAgICAgfSB3aGlsZSAoLS1mcmFtZUNvdW50KTsKKworICAgICAgICAgICAgdC0+cHJldlZvbHVtZVswXSA9IHZsOworICAgICAgICAgICAgdC0+cHJldlZvbHVtZVsxXSA9IHZyOworICAgICAgICAgICAgdC0+YWRqdXN0Vm9sdW1lUmFtcChmYWxzZSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBjb25zdGFudCBnYWluCisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgY29uc3QgdWludDMyX3QgdnJsID0gdC0+dm9sdW1lUkw7CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgdWludDMyX3QgcmwgPSAqcmVpbnRlcnByZXRfY2FzdDx1aW50MzJfdCBjb25zdCAqPihpbik7CisgICAgICAgICAgICAgICAgaW4gKz0gMjsKKyAgICAgICAgICAgICAgICBvdXRbMF0gPSBtdWxBZGRSTCgxLCBybCwgdnJsLCBvdXRbMF0pOworICAgICAgICAgICAgICAgIG91dFsxXSA9IG11bEFkZFJMKDAsIHJsLCB2cmwsIG91dFsxXSk7CisgICAgICAgICAgICAgICAgb3V0ICs9IDI7CisgICAgICAgICAgICB9IHdoaWxlICgtLWZyYW1lQ291bnQpOworICAgICAgICB9CisgICAgfQogICAgIHQtPmluID0gaW47CiB9CiAKLXZvaWQgQXVkaW9NaXhlcjo6dHJhY2tfXzE2Qml0c01vbm8odHJhY2tfdCogdCwgaW50MzJfdCogb3V0LCBzaXplX3QgZnJhbWVDb3VudCwgaW50MzJfdCogdGVtcCkKK3ZvaWQgQXVkaW9NaXhlcjo6dHJhY2tfXzE2Qml0c01vbm8odHJhY2tfdCogdCwgaW50MzJfdCogb3V0LCBzaXplX3QgZnJhbWVDb3VudCwgaW50MzJfdCogdGVtcCwgaW50MzJfdCogYXV4KQogewogICAgIGludDE2X3QgY29uc3QgKmluID0gc3RhdGljX2Nhc3Q8aW50MTZfdCBjb25zdCAqPih0LT5pbik7CiAKLSAgICAvLyByYW1wIGdhaW4KLSAgICBpZiBVTkxJS0VMWSh0LT52b2x1bWVJbmNbMF18dC0+dm9sdW1lSW5jWzFdKSB7Ci0gICAgICAgIGludDMyX3QgdmwgPSB0LT5wcmV2Vm9sdW1lWzBdOwotICAgICAgICBpbnQzMl90IHZyID0gdC0+cHJldlZvbHVtZVsxXTsKLSAgICAgICAgY29uc3QgaW50MzJfdCB2bEluYyA9IHQtPnZvbHVtZUluY1swXTsKLSAgICAgICAgY29uc3QgaW50MzJfdCB2ckluYyA9IHQtPnZvbHVtZUluY1sxXTsKKyAgICBpZiBVTkxJS0VMWShhdXggIT0gTlVMTCkgeworICAgICAgICAvLyByYW1wIGdhaW4KKyAgICAgICAgaWYgVU5MSUtFTFkodC0+dm9sdW1lSW5jWzBdfHQtPnZvbHVtZUluY1sxXXx0LT5hdXhJbmMpIHsKKyAgICAgICAgICAgIGludDMyX3QgdmwgPSB0LT5wcmV2Vm9sdW1lWzBdOworICAgICAgICAgICAgaW50MzJfdCB2ciA9IHQtPnByZXZWb2x1bWVbMV07CisgICAgICAgICAgICBpbnQzMl90IHZhID0gdC0+cHJldkF1eExldmVsOworICAgICAgICAgICAgY29uc3QgaW50MzJfdCB2bEluYyA9IHQtPnZvbHVtZUluY1swXTsKKyAgICAgICAgICAgIGNvbnN0IGludDMyX3QgdnJJbmMgPSB0LT52b2x1bWVJbmNbMV07CisgICAgICAgICAgICBjb25zdCBpbnQzMl90IHZhSW5jID0gdC0+YXV4SW5jOwogCi0gICAgICAgIC8vIExPR0QoIlsyXSAlcDogaW5jPSVmLCB2MD0lZiwgdjE9JWQsIGZpbmFsPSVmLCBjb3VudD0lZCIsCi0gICAgICAgIC8vICAgICAgICAgdCwgdmxJbmMvNjU1MzYuMGYsIHZsLzY1NTM2LjBmLCB0LT52b2x1bWVbMF0sCi0gICAgICAgIC8vICAgICAgICAgKHZsICsgdmxJbmMqZnJhbWVDb3VudCkvNjU1MzYuMGYsIGZyYW1lQ291bnQpOworICAgICAgICAgICAgLy8gTE9HRCgiWzJdICVwOiBpbmM9JWYsIHYwPSVmLCB2MT0lZCwgZmluYWw9JWYsIGNvdW50PSVkIiwKKyAgICAgICAgICAgIC8vICAgICAgICAgdCwgdmxJbmMvNjU1MzYuMGYsIHZsLzY1NTM2LjBmLCB0LT52b2x1bWVbMF0sCisgICAgICAgICAgICAvLyAgICAgICAgICh2bCArIHZsSW5jKmZyYW1lQ291bnQpLzY1NTM2LjBmLCBmcmFtZUNvdW50KTsKIAotICAgICAgICBkbyB7Ci0gICAgICAgICAgICBpbnQzMl90IGwgPSAqaW4rKzsKLSAgICAgICAgICAgICpvdXQrKyArPSAodmwgPj4gMTYpICogbDsKLSAgICAgICAgICAgICpvdXQrKyArPSAodnIgPj4gMTYpICogbDsKLSAgICAgICAgICAgIHZsICs9IHZsSW5jOwotICAgICAgICAgICAgdnIgKz0gdnJJbmM7Ci0gICAgICAgIH0gd2hpbGUgKC0tZnJhbWVDb3VudCk7Ci0gICAgICAgCi0gICAgICAgIHQtPnByZXZWb2x1bWVbMF0gPSB2bDsKLSAgICAgICAgdC0+cHJldlZvbHVtZVsxXSA9IHZyOwotICAgICAgICB0LT5hZGp1c3RWb2x1bWVSYW1wKCk7Ci0gICAgfQotICAgIC8vIGNvbnN0YW50IGdhaW4KLSAgICBlbHNlIHsKLSAgICAgICAgY29uc3QgaW50MTZfdCB2bCA9IHQtPnZvbHVtZVswXTsKLSAgICAgICAgY29uc3QgaW50MTZfdCB2ciA9IHQtPnZvbHVtZVsxXTsKLSAgICAgICAgZG8gewotICAgICAgICAgICAgaW50MTZfdCBsID0gKmluKys7Ci0gICAgICAgICAgICBvdXRbMF0gPSBtdWxBZGQobCwgdmwsIG91dFswXSk7Ci0gICAgICAgICAgICBvdXRbMV0gPSBtdWxBZGQobCwgdnIsIG91dFsxXSk7Ci0gICAgICAgICAgICBvdXQgKz0gMjsKLSAgICAgICAgfSB3aGlsZSAoLS1mcmFtZUNvdW50KTsKKyAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICBpbnQzMl90IGwgPSAqaW4rKzsKKyAgICAgICAgICAgICAgICAqb3V0KysgKz0gKHZsID4+IDE2KSAqIGw7CisgICAgICAgICAgICAgICAgKm91dCsrICs9ICh2ciA+PiAxNikgKiBsOworICAgICAgICAgICAgICAgICphdXgrKyArPSAodmEgPj4gMTYpICogbDsKKyAgICAgICAgICAgICAgICB2bCArPSB2bEluYzsKKyAgICAgICAgICAgICAgICB2ciArPSB2ckluYzsKKyAgICAgICAgICAgICAgICB2YSArPSB2YUluYzsKKyAgICAgICAgICAgIH0gd2hpbGUgKC0tZnJhbWVDb3VudCk7CisKKyAgICAgICAgICAgIHQtPnByZXZWb2x1bWVbMF0gPSB2bDsKKyAgICAgICAgICAgIHQtPnByZXZWb2x1bWVbMV0gPSB2cjsKKyAgICAgICAgICAgIHQtPnByZXZBdXhMZXZlbCA9IHZhOworICAgICAgICAgICAgdC0+YWRqdXN0Vm9sdW1lUmFtcCh0cnVlKTsKKyAgICAgICAgfQorICAgICAgICAvLyBjb25zdGFudCBnYWluCisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgY29uc3QgaW50MTZfdCB2bCA9IHQtPnZvbHVtZVswXTsKKyAgICAgICAgICAgIGNvbnN0IGludDE2X3QgdnIgPSB0LT52b2x1bWVbMV07CisgICAgICAgICAgICBjb25zdCBpbnQxNl90IHZhID0gKGludDE2X3QpdC0+YXV4TGV2ZWw7CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgaW50MTZfdCBsID0gKmluKys7CisgICAgICAgICAgICAgICAgb3V0WzBdID0gbXVsQWRkKGwsIHZsLCBvdXRbMF0pOworICAgICAgICAgICAgICAgIG91dFsxXSA9IG11bEFkZChsLCB2ciwgb3V0WzFdKTsKKyAgICAgICAgICAgICAgICBvdXQgKz0gMjsKKyAgICAgICAgICAgICAgICBhdXhbMF0gPSBtdWxBZGQobCwgdmEsIGF1eFswXSk7CisgICAgICAgICAgICAgICAgYXV4Kys7CisgICAgICAgICAgICB9IHdoaWxlICgtLWZyYW1lQ291bnQpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gcmFtcCBnYWluCisgICAgICAgIGlmIFVOTElLRUxZKHQtPnZvbHVtZUluY1swXXx0LT52b2x1bWVJbmNbMV0pIHsKKyAgICAgICAgICAgIGludDMyX3QgdmwgPSB0LT5wcmV2Vm9sdW1lWzBdOworICAgICAgICAgICAgaW50MzJfdCB2ciA9IHQtPnByZXZWb2x1bWVbMV07CisgICAgICAgICAgICBjb25zdCBpbnQzMl90IHZsSW5jID0gdC0+dm9sdW1lSW5jWzBdOworICAgICAgICAgICAgY29uc3QgaW50MzJfdCB2ckluYyA9IHQtPnZvbHVtZUluY1sxXTsKKworICAgICAgICAgICAgLy8gTE9HRCgiWzJdICVwOiBpbmM9JWYsIHYwPSVmLCB2MT0lZCwgZmluYWw9JWYsIGNvdW50PSVkIiwKKyAgICAgICAgICAgIC8vICAgICAgICAgdCwgdmxJbmMvNjU1MzYuMGYsIHZsLzY1NTM2LjBmLCB0LT52b2x1bWVbMF0sCisgICAgICAgICAgICAvLyAgICAgICAgICh2bCArIHZsSW5jKmZyYW1lQ291bnQpLzY1NTM2LjBmLCBmcmFtZUNvdW50KTsKKworICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIGludDMyX3QgbCA9ICppbisrOworICAgICAgICAgICAgICAgICpvdXQrKyArPSAodmwgPj4gMTYpICogbDsKKyAgICAgICAgICAgICAgICAqb3V0KysgKz0gKHZyID4+IDE2KSAqIGw7CisgICAgICAgICAgICAgICAgdmwgKz0gdmxJbmM7CisgICAgICAgICAgICAgICAgdnIgKz0gdnJJbmM7CisgICAgICAgICAgICB9IHdoaWxlICgtLWZyYW1lQ291bnQpOworCisgICAgICAgICAgICB0LT5wcmV2Vm9sdW1lWzBdID0gdmw7CisgICAgICAgICAgICB0LT5wcmV2Vm9sdW1lWzFdID0gdnI7CisgICAgICAgICAgICB0LT5hZGp1c3RWb2x1bWVSYW1wKGZhbHNlKTsKKyAgICAgICAgfQorICAgICAgICAvLyBjb25zdGFudCBnYWluCisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgY29uc3QgaW50MTZfdCB2bCA9IHQtPnZvbHVtZVswXTsKKyAgICAgICAgICAgIGNvbnN0IGludDE2X3QgdnIgPSB0LT52b2x1bWVbMV07CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgaW50MTZfdCBsID0gKmluKys7CisgICAgICAgICAgICAgICAgb3V0WzBdID0gbXVsQWRkKGwsIHZsLCBvdXRbMF0pOworICAgICAgICAgICAgICAgIG91dFsxXSA9IG11bEFkZChsLCB2ciwgb3V0WzFdKTsKKyAgICAgICAgICAgICAgICBvdXQgKz0gMjsKKyAgICAgICAgICAgIH0gd2hpbGUgKC0tZnJhbWVDb3VudCk7CisgICAgICAgIH0KICAgICB9CiAgICAgdC0+aW4gPSBpbjsKIH0KQEAgLTYyNCwzNyArODM2LDU2IEBACiB9CiAKIC8vIG5vLW9wIGNhc2UKLXZvaWQgQXVkaW9NaXhlcjo6cHJvY2Vzc19fbm9wKHN0YXRlX3QqIHN0YXRlLCB2b2lkKiBvdXRwdXQpCit2b2lkIEF1ZGlvTWl4ZXI6OnByb2Nlc3NfX25vcChzdGF0ZV90KiBzdGF0ZSkKIHsKLSAgICAvLyB0aGlzIGFzc3VtZXMgb3V0cHV0IDE2IGJpdHMgc3RlcmVvLCBubyByZXNhbXBsaW5nCi0gICAgbWVtc2V0KG91dHB1dCwgMCwgc3RhdGUtPmZyYW1lQ291bnQqNCk7Ci0gICAgdWludDMyX3QgZW4gPSBzdGF0ZS0+ZW5hYmxlZFRyYWNrczsKLSAgICB3aGlsZSAoZW4pIHsKLSAgICAgICAgY29uc3QgaW50IGkgPSAzMSAtIF9fYnVpbHRpbl9jbHooZW4pOwotICAgICAgICBlbiAmPSB+KDE8PGkpOwotICAgICAgICB0cmFja190JiB0ID0gc3RhdGUtPnRyYWNrc1tpXTsKLSAgICAgICAgc2l6ZV90IG91dEZyYW1lcyA9IHN0YXRlLT5mcmFtZUNvdW50OwotICAgICAgICB3aGlsZSAob3V0RnJhbWVzKSB7Ci0gICAgICAgICAgICB0LmJ1ZmZlci5mcmFtZUNvdW50ID0gb3V0RnJhbWVzOwotICAgICAgICAgICAgdC5idWZmZXJQcm92aWRlci0+Z2V0TmV4dEJ1ZmZlcigmdC5idWZmZXIpOwotICAgICAgICAgICAgaWYgKCF0LmJ1ZmZlci5yYXcpIGJyZWFrOwotICAgICAgICAgICAgb3V0RnJhbWVzIC09IHQuYnVmZmVyLmZyYW1lQ291bnQ7Ci0gICAgICAgICAgICB0LmJ1ZmZlclByb3ZpZGVyLT5yZWxlYXNlQnVmZmVyKCZ0LmJ1ZmZlcik7CisgICAgdWludDMyX3QgZTAgPSBzdGF0ZS0+ZW5hYmxlZFRyYWNrczsKKyAgICBzaXplX3QgYnVmU2l6ZSA9IHN0YXRlLT5mcmFtZUNvdW50ICogc2l6ZW9mKGludDE2X3QpICogTUFYX05VTV9DSEFOTkVMUzsKKyAgICB3aGlsZSAoZTApIHsKKyAgICAgICAgLy8gcHJvY2VzcyBieSBncm91cCBvZiB0cmFja3Mgd2l0aCBzYW1lIG91dHB1dCBidWZmZXIgdG8KKyAgICAgICAgLy8gYXZvaWQgbXVsdGlwbGUgbWVtc2V0KCkgb24gc2FtZSBidWZmZXIKKyAgICAgICAgdWludDMyX3QgZTEgPSBlMCwgZTIgPSBlMDsKKyAgICAgICAgaW50IGkgPSAzMSAtIF9fYnVpbHRpbl9jbHooZTEpOworICAgICAgICB0cmFja190JiB0MSA9IHN0YXRlLT50cmFja3NbaV07CisgICAgICAgIGUyICY9IH4oMTw8aSk7CisgICAgICAgIHdoaWxlIChlMikgeworICAgICAgICAgICAgaSA9IDMxIC0gX19idWlsdGluX2NseihlMik7CisgICAgICAgICAgICBlMiAmPSB+KDE8PGkpOworICAgICAgICAgICAgdHJhY2tfdCYgdDIgPSBzdGF0ZS0+dHJhY2tzW2ldOworICAgICAgICAgICAgaWYgVU5MSUtFTFkodDIubWFpbkJ1ZmZlciAhPSB0MS5tYWluQnVmZmVyKSB7CisgICAgICAgICAgICAgICAgZTEgJj0gfigxPDxpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlMCAmPSB+KGUxKTsKKworICAgICAgICBtZW1zZXQodDEubWFpbkJ1ZmZlciwgMCwgYnVmU2l6ZSk7CisKKyAgICAgICAgd2hpbGUgKGUxKSB7CisgICAgICAgICAgICBpID0gMzEgLSBfX2J1aWx0aW5fY2x6KGUxKTsKKyAgICAgICAgICAgIGUxICY9IH4oMTw8aSk7CisgICAgICAgICAgICB0MSA9IHN0YXRlLT50cmFja3NbaV07CisgICAgICAgICAgICBzaXplX3Qgb3V0RnJhbWVzID0gc3RhdGUtPmZyYW1lQ291bnQ7CisgICAgICAgICAgICB3aGlsZSAob3V0RnJhbWVzKSB7CisgICAgICAgICAgICAgICAgdDEuYnVmZmVyLmZyYW1lQ291bnQgPSBvdXRGcmFtZXM7CisgICAgICAgICAgICAgICAgdDEuYnVmZmVyUHJvdmlkZXItPmdldE5leHRCdWZmZXIoJnQxLmJ1ZmZlcik7CisgICAgICAgICAgICAgICAgaWYgKCF0MS5idWZmZXIucmF3KSBicmVhazsKKyAgICAgICAgICAgICAgICBvdXRGcmFtZXMgLT0gdDEuYnVmZmVyLmZyYW1lQ291bnQ7CisgICAgICAgICAgICAgICAgdDEuYnVmZmVyUHJvdmlkZXItPnJlbGVhc2VCdWZmZXIoJnQxLmJ1ZmZlcik7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiB9CiAKIC8vIGdlbmVyaWMgY29kZSB3aXRob3V0IHJlc2FtcGxpbmcKLXZvaWQgQXVkaW9NaXhlcjo6cHJvY2Vzc19fZ2VuZXJpY05vUmVzYW1wbGluZyhzdGF0ZV90KiBzdGF0ZSwgdm9pZCogb3V0cHV0KQordm9pZCBBdWRpb01peGVyOjpwcm9jZXNzX19nZW5lcmljTm9SZXNhbXBsaW5nKHN0YXRlX3QqIHN0YXRlKQogewogICAgIGludDMyX3Qgb3V0VGVtcFtCTE9DS1NJWkUgKiBNQVhfTlVNX0NIQU5ORUxTXSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDMyKSkpOwogCiAgICAgLy8gYWNxdWlyZSBlYWNoIHRyYWNrJ3MgYnVmZmVyCiAgICAgdWludDMyX3QgZW5hYmxlZFRyYWNrcyA9IHN0YXRlLT5lbmFibGVkVHJhY2tzOwotICAgIHVpbnQzMl90IGVuID0gZW5hYmxlZFRyYWNrczsKLSAgICB3aGlsZSAoZW4pIHsKLSAgICAgICAgY29uc3QgaW50IGkgPSAzMSAtIF9fYnVpbHRpbl9jbHooZW4pOwotICAgICAgICBlbiAmPSB+KDE8PGkpOworICAgIHVpbnQzMl90IGUwID0gZW5hYmxlZFRyYWNrczsKKyAgICB3aGlsZSAoZTApIHsKKyAgICAgICAgY29uc3QgaW50IGkgPSAzMSAtIF9fYnVpbHRpbl9jbHooZTApOworICAgICAgICBlMCAmPSB+KDE8PGkpOwogICAgICAgICB0cmFja190JiB0ID0gc3RhdGUtPnRyYWNrc1tpXTsKICAgICAgICAgdC5idWZmZXIuZnJhbWVDb3VudCA9IHN0YXRlLT5mcmFtZUNvdW50OwogICAgICAgICB0LmJ1ZmZlclByb3ZpZGVyLT5nZXROZXh0QnVmZmVyKCZ0LmJ1ZmZlcik7CkBAIC02NjYsMTEwICs4OTcsMTU2IEBACiAgICAgICAgICAgICBlbmFibGVkVHJhY2tzICY9IH4oMTw8aSk7CiAgICAgfQogCi0gICAgLy8gdGhpcyBhc3N1bWVzIG91dHB1dCAxNiBiaXRzIHN0ZXJlbywgbm8gcmVzYW1wbGluZwotICAgIGludDMyX3QqIG91dCA9IHN0YXRpY19jYXN0PGludDMyX3QqPihvdXRwdXQpOwotICAgIHNpemVfdCBudW1GcmFtZXMgPSBzdGF0ZS0+ZnJhbWVDb3VudDsKLSAgICBkbyB7Ci0gICAgICAgIG1lbXNldChvdXRUZW1wLCAwLCBzaXplb2Yob3V0VGVtcCkpOwotCi0gICAgICAgIGVuID0gZW5hYmxlZFRyYWNrczsKLSAgICAgICAgd2hpbGUgKGVuKSB7Ci0gICAgICAgICAgICBjb25zdCBpbnQgaSA9IDMxIC0gX19idWlsdGluX2Nseihlbik7Ci0gICAgICAgICAgICBlbiAmPSB+KDE8PGkpOwotICAgICAgICAgICAgdHJhY2tfdCYgdCA9IHN0YXRlLT50cmFja3NbaV07Ci0gICAgICAgICAgICBzaXplX3Qgb3V0RnJhbWVzID0gQkxPQ0tTSVpFOwotICAgICAgICAgICAKLSAgICAgICAgICAgIHdoaWxlIChvdXRGcmFtZXMpIHsKLSAgICAgICAgICAgICAgICBzaXplX3QgaW5GcmFtZXMgPSAodC5mcmFtZUNvdW50ID4gb3V0RnJhbWVzKT9vdXRGcmFtZXM6dC5mcmFtZUNvdW50OwotICAgICAgICAgICAgICAgIGlmIChpbkZyYW1lcykgewotICAgICAgICAgICAgICAgICAgICAodC5ob29rKSgmdCwgb3V0VGVtcCArIChCTE9DS1NJWkUtb3V0RnJhbWVzKSpNQVhfTlVNX0NIQU5ORUxTLCBpbkZyYW1lcywgc3RhdGUtPnJlc2FtcGxlVGVtcCk7Ci0gICAgICAgICAgICAgICAgICAgIHQuZnJhbWVDb3VudCAtPSBpbkZyYW1lczsKLSAgICAgICAgICAgICAgICAgICAgb3V0RnJhbWVzIC09IGluRnJhbWVzOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAodC5mcmFtZUNvdW50ID09IDAgJiYgb3V0RnJhbWVzKSB7Ci0gICAgICAgICAgICAgICAgICAgIHQuYnVmZmVyUHJvdmlkZXItPnJlbGVhc2VCdWZmZXIoJnQuYnVmZmVyKTsKLSAgICAgICAgICAgICAgICAgICAgdC5idWZmZXIuZnJhbWVDb3VudCA9IG51bUZyYW1lcyAtIChCTE9DS1NJWkUgLSBvdXRGcmFtZXMpOwotICAgICAgICAgICAgICAgICAgICB0LmJ1ZmZlclByb3ZpZGVyLT5nZXROZXh0QnVmZmVyKCZ0LmJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAgICAgIHQuaW4gPSB0LmJ1ZmZlci5yYXc7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh0LmluID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWRUcmFja3MgJj0gfigxPDxpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHQuZnJhbWVDb3VudCA9IHQuYnVmZmVyLmZyYW1lQ291bnQ7Ci0gICAgICAgICAgICAgICAgIH0KKyAgICBlMCA9IGVuYWJsZWRUcmFja3M7CisgICAgd2hpbGUgKGUwKSB7CisgICAgICAgIC8vIHByb2Nlc3MgYnkgZ3JvdXAgb2YgdHJhY2tzIHdpdGggc2FtZSBvdXRwdXQgYnVmZmVyIHRvCisgICAgICAgIC8vIG9wdGltaXplIGNhY2hlIHVzZQorICAgICAgICB1aW50MzJfdCBlMSA9IGUwLCBlMiA9IGUwOworICAgICAgICBpbnQgaiA9IDMxIC0gX19idWlsdGluX2NseihlMSk7CisgICAgICAgIHRyYWNrX3QmIHQxID0gc3RhdGUtPnRyYWNrc1tqXTsKKyAgICAgICAgZTIgJj0gfigxPDxqKTsKKyAgICAgICAgd2hpbGUgKGUyKSB7CisgICAgICAgICAgICBqID0gMzEgLSBfX2J1aWx0aW5fY2x6KGUyKTsKKyAgICAgICAgICAgIGUyICY9IH4oMTw8aik7CisgICAgICAgICAgICB0cmFja190JiB0MiA9IHN0YXRlLT50cmFja3Nbal07CisgICAgICAgICAgICBpZiBVTkxJS0VMWSh0Mi5tYWluQnVmZmVyICE9IHQxLm1haW5CdWZmZXIpIHsKKyAgICAgICAgICAgICAgICBlMSAmPSB+KDE8PGopOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0KLSAgICAgICAgZGl0aGVyQW5kQ2xhbXAob3V0LCBvdXRUZW1wLCBCTE9DS1NJWkUpOwotICAgICAgICBvdXQgKz0gQkxPQ0tTSVpFOwotICAgICAgICBudW1GcmFtZXMgLT0gQkxPQ0tTSVpFOwotICAgIH0gd2hpbGUgKG51bUZyYW1lcyk7Ci0KKyAgICAgICAgZTAgJj0gfihlMSk7CisgICAgICAgIC8vIHRoaXMgYXNzdW1lcyBvdXRwdXQgMTYgYml0cyBzdGVyZW8sIG5vIHJlc2FtcGxpbmcKKyAgICAgICAgaW50MzJfdCAqb3V0ID0gdDEubWFpbkJ1ZmZlcjsKKyAgICAgICAgc2l6ZV90IG51bUZyYW1lcyA9IDA7CisgICAgICAgIGRvIHsKKyAgICAgICAgICAgIG1lbXNldChvdXRUZW1wLCAwLCBzaXplb2Yob3V0VGVtcCkpOworICAgICAgICAgICAgZTIgPSBlMTsKKyAgICAgICAgICAgIHdoaWxlIChlMikgeworICAgICAgICAgICAgICAgIGNvbnN0IGludCBpID0gMzEgLSBfX2J1aWx0aW5fY2x6KGUyKTsKKyAgICAgICAgICAgICAgICBlMiAmPSB+KDE8PGkpOworICAgICAgICAgICAgICAgIHRyYWNrX3QmIHQgPSBzdGF0ZS0+dHJhY2tzW2ldOworICAgICAgICAgICAgICAgIHNpemVfdCBvdXRGcmFtZXMgPSBCTE9DS1NJWkU7CisgICAgICAgICAgICAgICAgaW50MzJfdCAqYXV4ID0gTlVMTDsKKyAgICAgICAgICAgICAgICBpZiBVTkxJS0VMWSgodC5uZWVkcyAmIE5FRURTX0FVWF9fTUFTSykgPT0gTkVFRFNfQVVYX0VOQUJMRUQpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV4ID0gdC5hdXhCdWZmZXIgKyBudW1GcmFtZXM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHdoaWxlIChvdXRGcmFtZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgc2l6ZV90IGluRnJhbWVzID0gKHQuZnJhbWVDb3VudCA+IG91dEZyYW1lcyk/b3V0RnJhbWVzOnQuZnJhbWVDb3VudDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGluRnJhbWVzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAodC5ob29rKSgmdCwgb3V0VGVtcCArIChCTE9DS1NJWkUtb3V0RnJhbWVzKSpNQVhfTlVNX0NIQU5ORUxTLCBpbkZyYW1lcywgc3RhdGUtPnJlc2FtcGxlVGVtcCwgYXV4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHQuZnJhbWVDb3VudCAtPSBpbkZyYW1lczsKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dEZyYW1lcyAtPSBpbkZyYW1lczsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIFVOTElLRUxZKGF1eCAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV4ICs9IGluRnJhbWVzOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICh0LmZyYW1lQ291bnQgPT0gMCAmJiBvdXRGcmFtZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHQuYnVmZmVyUHJvdmlkZXItPnJlbGVhc2VCdWZmZXIoJnQuYnVmZmVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHQuYnVmZmVyLmZyYW1lQ291bnQgPSAoc3RhdGUtPmZyYW1lQ291bnQgLSBudW1GcmFtZXMpIC0gKEJMT0NLU0laRSAtIG91dEZyYW1lcyk7CisgICAgICAgICAgICAgICAgICAgICAgICB0LmJ1ZmZlclByb3ZpZGVyLT5nZXROZXh0QnVmZmVyKCZ0LmJ1ZmZlcik7CisgICAgICAgICAgICAgICAgICAgICAgICB0LmluID0gdC5idWZmZXIucmF3OworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHQuaW4gPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZWRUcmFja3MgJj0gfigxPDxpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlMSAmPSB+KDE8PGkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgdC5mcmFtZUNvdW50ID0gdC5idWZmZXIuZnJhbWVDb3VudDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRpdGhlckFuZENsYW1wKG91dCwgb3V0VGVtcCwgQkxPQ0tTSVpFKTsKKyAgICAgICAgICAgIG91dCArPSBCTE9DS1NJWkU7CisgICAgICAgICAgICBudW1GcmFtZXMgKz0gQkxPQ0tTSVpFOworICAgICAgICB9IHdoaWxlIChudW1GcmFtZXMgPCBzdGF0ZS0+ZnJhbWVDb3VudCk7CisgICAgfQogCiAgICAgLy8gcmVsZWFzZSBlYWNoIHRyYWNrJ3MgYnVmZmVyCi0gICAgZW4gPSBlbmFibGVkVHJhY2tzOwotICAgIHdoaWxlIChlbikgewotICAgICAgICBjb25zdCBpbnQgaSA9IDMxIC0gX19idWlsdGluX2Nseihlbik7Ci0gICAgICAgIGVuICY9IH4oMTw8aSk7CisgICAgZTAgPSBlbmFibGVkVHJhY2tzOworICAgIHdoaWxlIChlMCkgeworICAgICAgICBjb25zdCBpbnQgaSA9IDMxIC0gX19idWlsdGluX2NseihlMCk7CisgICAgICAgIGUwICY9IH4oMTw8aSk7CiAgICAgICAgIHRyYWNrX3QmIHQgPSBzdGF0ZS0+dHJhY2tzW2ldOwogICAgICAgICB0LmJ1ZmZlclByb3ZpZGVyLT5yZWxlYXNlQnVmZmVyKCZ0LmJ1ZmZlcik7CiAgICAgfQogfQogCi0vLyBnZW5lcmljIGNvZGUgd2l0aCByZXNhbXBsaW5nCi12b2lkIEF1ZGlvTWl4ZXI6OnByb2Nlc3NfX2dlbmVyaWNSZXNhbXBsaW5nKHN0YXRlX3QqIHN0YXRlLCB2b2lkKiBvdXRwdXQpCisKKyAgLy8gZ2VuZXJpYyBjb2RlIHdpdGggcmVzYW1wbGluZwordm9pZCBBdWRpb01peGVyOjpwcm9jZXNzX19nZW5lcmljUmVzYW1wbGluZyhzdGF0ZV90KiBzdGF0ZSkKIHsKICAgICBpbnQzMl90KiBjb25zdCBvdXRUZW1wID0gc3RhdGUtPm91dHB1dFRlbXA7CiAgICAgY29uc3Qgc2l6ZV90IHNpemUgPSBzaXplb2YoaW50MzJfdCkgKiBNQVhfTlVNX0NIQU5ORUxTICogc3RhdGUtPmZyYW1lQ291bnQ7CiAgICAgbWVtc2V0KG91dFRlbXAsIDAsIHNpemUpOwogCi0gICAgaW50MzJfdCogb3V0ID0gc3RhdGljX2Nhc3Q8aW50MzJfdCo+KG91dHB1dCk7CiAgICAgc2l6ZV90IG51bUZyYW1lcyA9IHN0YXRlLT5mcmFtZUNvdW50OwogCi0gICAgdWludDMyX3QgZW4gPSBzdGF0ZS0+ZW5hYmxlZFRyYWNrczsKLSAgICB3aGlsZSAoZW4pIHsKLSAgICAgICAgY29uc3QgaW50IGkgPSAzMSAtIF9fYnVpbHRpbl9jbHooZW4pOwotICAgICAgICBlbiAmPSB+KDE8PGkpOwotICAgICAgICB0cmFja190JiB0ID0gc3RhdGUtPnRyYWNrc1tpXTsKLQotICAgICAgICAvLyB0aGlzIGlzIGEgbGl0dGxlIGdvb2Z5LCBvbiB0aGUgcmVzYW1wbGluZyBjYXNlIHdlIGRvbid0Ci0gICAgICAgIC8vIGFjcXVpcmUvcmVsZWFzZSB0aGUgYnVmZmVycyBiZWNhdXNlIGl0J3MgZG9uZSBieQotICAgICAgICAvLyB0aGUgcmVzYW1wbGVyLgotICAgICAgICBpZiAoKHQubmVlZHMgJiBORUVEU19SRVNBTVBMRV9fTUFTSykgPT0gTkVFRFNfUkVTQU1QTEVfRU5BQkxFRCkgewotICAgICAgICAgICAgKHQuaG9vaykoJnQsIG91dFRlbXAsIG51bUZyYW1lcywgc3RhdGUtPnJlc2FtcGxlVGVtcCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0KLSAgICAgICAgICAgIHNpemVfdCBvdXRGcmFtZXMgPSBudW1GcmFtZXM7Ci0gICAgICAgICAgIAotICAgICAgICAgICAgd2hpbGUgKG91dEZyYW1lcykgewotICAgICAgICAgICAgICAgIHQuYnVmZmVyLmZyYW1lQ291bnQgPSBvdXRGcmFtZXM7Ci0gICAgICAgICAgICAgICAgdC5idWZmZXJQcm92aWRlci0+Z2V0TmV4dEJ1ZmZlcigmdC5idWZmZXIpOwotICAgICAgICAgICAgICAgIHQuaW4gPSB0LmJ1ZmZlci5yYXc7Ci0gICAgICAgICAgICAgICAgLy8gdC5pbiA9PSBOVUxMIGNhbiBoYXBwZW4gaWYgdGhlIHRyYWNrIHdhcyBmbHVzaGVkIGp1c3QgYWZ0ZXIgaGF2aW5nCi0gICAgICAgICAgICAgICAgLy8gYmVlbiBlbmFibGVkIGZvciBtaXhpbmcuCi0gICAgICAgICAgICAgICAgaWYgKHQuaW4gPT0gTlVMTCkgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICAodC5ob29rKSgmdCwgb3V0VGVtcCArIChudW1GcmFtZXMtb3V0RnJhbWVzKSpNQVhfTlVNX0NIQU5ORUxTLCB0LmJ1ZmZlci5mcmFtZUNvdW50LCBzdGF0ZS0+cmVzYW1wbGVUZW1wKTsKLSAgICAgICAgICAgICAgICBvdXRGcmFtZXMgLT0gdC5idWZmZXIuZnJhbWVDb3VudDsKLSAgICAgICAgICAgICAgICB0LmJ1ZmZlclByb3ZpZGVyLT5yZWxlYXNlQnVmZmVyKCZ0LmJ1ZmZlcik7CisgICAgdWludDMyX3QgZTAgPSBzdGF0ZS0+ZW5hYmxlZFRyYWNrczsKKyAgICB3aGlsZSAoZTApIHsKKyAgICAgICAgLy8gcHJvY2VzcyBieSBncm91cCBvZiB0cmFja3Mgd2l0aCBzYW1lIG91dHB1dCBidWZmZXIKKyAgICAgICAgLy8gdG8gb3B0aW1pemUgY2FjaGUgdXNlCisgICAgICAgIHVpbnQzMl90IGUxID0gZTAsIGUyID0gZTA7CisgICAgICAgIGludCBqID0gMzEgLSBfX2J1aWx0aW5fY2x6KGUxKTsKKyAgICAgICAgdHJhY2tfdCYgdDEgPSBzdGF0ZS0+dHJhY2tzW2pdOworICAgICAgICBlMiAmPSB+KDE8PGopOworICAgICAgICB3aGlsZSAoZTIpIHsKKyAgICAgICAgICAgIGogPSAzMSAtIF9fYnVpbHRpbl9jbHooZTIpOworICAgICAgICAgICAgZTIgJj0gfigxPDxqKTsKKyAgICAgICAgICAgIHRyYWNrX3QmIHQyID0gc3RhdGUtPnRyYWNrc1tqXTsKKyAgICAgICAgICAgIGlmIFVOTElLRUxZKHQyLm1haW5CdWZmZXIgIT0gdDEubWFpbkJ1ZmZlcikgeworICAgICAgICAgICAgICAgIGUxICY9IH4oMTw8aik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICB9CisgICAgICAgIGUwICY9IH4oZTEpOworICAgICAgICBpbnQzMl90ICpvdXQgPSB0MS5tYWluQnVmZmVyOworICAgICAgICB3aGlsZSAoZTEpIHsKKyAgICAgICAgICAgIGNvbnN0IGludCBpID0gMzEgLSBfX2J1aWx0aW5fY2x6KGUxKTsKKyAgICAgICAgICAgIGUxICY9IH4oMTw8aSk7CisgICAgICAgICAgICB0cmFja190JiB0ID0gc3RhdGUtPnRyYWNrc1tpXTsKKyAgICAgICAgICAgIGludDMyX3QgKmF1eCA9IE5VTEw7CisgICAgICAgICAgICBpZiBVTkxJS0VMWSgodC5uZWVkcyAmIE5FRURTX0FVWF9fTUFTSykgPT0gTkVFRFNfQVVYX0VOQUJMRUQpIHsKKyAgICAgICAgICAgICAgICBhdXggPSB0LmF1eEJ1ZmZlcjsKKyAgICAgICAgICAgIH0KIAotICAgIGRpdGhlckFuZENsYW1wKG91dCwgb3V0VGVtcCwgbnVtRnJhbWVzKTsKKyAgICAgICAgICAgIC8vIHRoaXMgaXMgYSBsaXR0bGUgZ29vZnksIG9uIHRoZSByZXNhbXBsaW5nIGNhc2Ugd2UgZG9uJ3QKKyAgICAgICAgICAgIC8vIGFjcXVpcmUvcmVsZWFzZSB0aGUgYnVmZmVycyBiZWNhdXNlIGl0J3MgZG9uZSBieQorICAgICAgICAgICAgLy8gdGhlIHJlc2FtcGxlci4KKyAgICAgICAgICAgIGlmICgodC5uZWVkcyAmIE5FRURTX1JFU0FNUExFX19NQVNLKSA9PSBORUVEU19SRVNBTVBMRV9FTkFCTEVEKSB7CisgICAgICAgICAgICAgICAgKHQuaG9vaykoJnQsIG91dFRlbXAsIG51bUZyYW1lcywgc3RhdGUtPnJlc2FtcGxlVGVtcCwgYXV4KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisKKyAgICAgICAgICAgICAgICBzaXplX3Qgb3V0RnJhbWVzID0gMDsKKworICAgICAgICAgICAgICAgIHdoaWxlIChvdXRGcmFtZXMgPCBudW1GcmFtZXMpIHsKKyAgICAgICAgICAgICAgICAgICAgdC5idWZmZXIuZnJhbWVDb3VudCA9IG51bUZyYW1lcyAtIG91dEZyYW1lczsKKyAgICAgICAgICAgICAgICAgICAgdC5idWZmZXJQcm92aWRlci0+Z2V0TmV4dEJ1ZmZlcigmdC5idWZmZXIpOworICAgICAgICAgICAgICAgICAgICB0LmluID0gdC5idWZmZXIucmF3OworICAgICAgICAgICAgICAgICAgICAvLyB0LmluID09IE5VTEwgY2FuIGhhcHBlbiBpZiB0aGUgdHJhY2sgd2FzIGZsdXNoZWQganVzdCBhZnRlciBoYXZpbmcKKyAgICAgICAgICAgICAgICAgICAgLy8gYmVlbiBlbmFibGVkIGZvciBtaXhpbmcuCisgICAgICAgICAgICAgICAgICAgIGlmICh0LmluID09IE5VTEwpIGJyZWFrOworCisgICAgICAgICAgICAgICAgICAgIGlmIFVOTElLRUxZKGF1eCAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhdXggKz0gb3V0RnJhbWVzOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICh0Lmhvb2spKCZ0LCBvdXRUZW1wICsgb3V0RnJhbWVzKk1BWF9OVU1fQ0hBTk5FTFMsIHQuYnVmZmVyLmZyYW1lQ291bnQsIHN0YXRlLT5yZXNhbXBsZVRlbXAsIGF1eCk7CisgICAgICAgICAgICAgICAgICAgIG91dEZyYW1lcyArPSB0LmJ1ZmZlci5mcmFtZUNvdW50OworICAgICAgICAgICAgICAgICAgICB0LmJ1ZmZlclByb3ZpZGVyLT5yZWxlYXNlQnVmZmVyKCZ0LmJ1ZmZlcik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGRpdGhlckFuZENsYW1wKG91dCwgb3V0VGVtcCwgbnVtRnJhbWVzKTsKKyAgICB9CiB9CiAKIC8vIG9uZSB0cmFjaywgMTYgYml0cyBzdGVyZW8gd2l0aG91dCByZXNhbXBsaW5nIGlzIHRoZSBtb3N0IGNvbW1vbiBjYXNlCi12b2lkIEF1ZGlvTWl4ZXI6OnByb2Nlc3NfX09uZVRyYWNrMTZCaXRzU3RlcmVvTm9SZXNhbXBsaW5nKHN0YXRlX3QqIHN0YXRlLCB2b2lkKiBvdXRwdXQpCit2b2lkIEF1ZGlvTWl4ZXI6OnByb2Nlc3NfX09uZVRyYWNrMTZCaXRzU3RlcmVvTm9SZXNhbXBsaW5nKHN0YXRlX3QqIHN0YXRlKQogewogICAgIGNvbnN0IGludCBpID0gMzEgLSBfX2J1aWx0aW5fY2x6KHN0YXRlLT5lbmFibGVkVHJhY2tzKTsKICAgICBjb25zdCB0cmFja190JiB0ID0gc3RhdGUtPnRyYWNrc1tpXTsKIAogICAgIEF1ZGlvQnVmZmVyUHJvdmlkZXI6OkJ1ZmZlciYgYih0LmJ1ZmZlcik7Ci0gICAKLSAgICBpbnQzMl90KiBvdXQgPSBzdGF0aWNfY2FzdDxpbnQzMl90Kj4ob3V0cHV0KTsKKworICAgIGludDMyX3QqIG91dCA9IHQubWFpbkJ1ZmZlcjsKICAgICBzaXplX3QgbnVtRnJhbWVzID0gc3RhdGUtPmZyYW1lQ291bnQ7Ci0gIAorCiAgICAgY29uc3QgaW50MTZfdCB2bCA9IHQudm9sdW1lWzBdOwogICAgIGNvbnN0IGludDE2X3QgdnIgPSB0LnZvbHVtZVsxXTsKICAgICBjb25zdCB1aW50MzJfdCB2cmwgPSB0LnZvbHVtZVJMOwpAQCAtNzg3LDcgKzEwNjQsNyBAQAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAgIHNpemVfdCBvdXRGcmFtZXMgPSBiLmZyYW1lQ291bnQ7Ci0gICAgICAgCisKICAgICAgICAgaWYgKFVOTElLRUxZKHVpbnQzMl90KHZsKSA+IFVOSVRZX0dBSU4gfHwgdWludDMyX3QodnIpID4gVU5JVFlfR0FJTikpIHsKICAgICAgICAgICAgIC8vIHZvbHVtZSBpcyBib29zdGVkLCBzbyB3ZSBtaWdodCBuZWVkIHRvIGNsYW1wIGV2ZW4gdGhvdWdoCiAgICAgICAgICAgICAvLyB3ZSBwcm9jZXNzIG9ubHkgb25lIHRyYWNrLgpAQCAtODE2LDcgKzEwOTMsOSBAQAogfQogCiAvLyAyIHRyYWNrcyBpcyBhbHNvIGEgY29tbW9uIGNhc2UKLXZvaWQgQXVkaW9NaXhlcjo6cHJvY2Vzc19fVHdvVHJhY2tzMTZCaXRzU3RlcmVvTm9SZXNhbXBsaW5nKHN0YXRlX3QqIHN0YXRlLCB2b2lkKiBvdXRwdXQpCisvLyBORVZFUiB1c2VkIGluIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb2YgcHJvY2Vzc19fdmFsaWRhdGUoKQorLy8gb25seSB1c2UgaWYgdGhlIDIgdHJhY2tzIGhhdmUgdGhlIHNhbWUgb3V0cHV0IGJ1ZmZlcgordm9pZCBBdWRpb01peGVyOjpwcm9jZXNzX19Ud29UcmFja3MxNkJpdHNTdGVyZW9Ob1Jlc2FtcGxpbmcoc3RhdGVfdCogc3RhdGUpCiB7CiAgICAgaW50IGk7CiAgICAgdWludDMyX3QgZW4gPSBzdGF0ZS0+ZW5hYmxlZFRyYWNrczsKQEAgLTgyOSwyNCArMTEwOCwyNSBAQAogICAgIGkgPSAzMSAtIF9fYnVpbHRpbl9jbHooZW4pOwogICAgIGNvbnN0IHRyYWNrX3QmIHQxID0gc3RhdGUtPnRyYWNrc1tpXTsKICAgICBBdWRpb0J1ZmZlclByb3ZpZGVyOjpCdWZmZXImIGIxKHQxLmJ1ZmZlcik7Ci0gICAKKwogICAgIGludDE2X3QgY29uc3QgKmluMDsKICAgICBjb25zdCBpbnQxNl90IHZsMCA9IHQwLnZvbHVtZVswXTsKICAgICBjb25zdCBpbnQxNl90IHZyMCA9IHQwLnZvbHVtZVsxXTsKICAgICBzaXplX3QgZnJhbWVDb3VudDAgPSAwOwotICAKKwogICAgIGludDE2X3QgY29uc3QgKmluMTsKICAgICBjb25zdCBpbnQxNl90IHZsMSA9IHQxLnZvbHVtZVswXTsKICAgICBjb25zdCBpbnQxNl90IHZyMSA9IHQxLnZvbHVtZVsxXTsKICAgICBzaXplX3QgZnJhbWVDb3VudDEgPSAwOwotICAgCi0gICAgaW50MzJfdCogb3V0ID0gc3RhdGljX2Nhc3Q8aW50MzJfdCo+KG91dHB1dCk7CisKKyAgICAvL0ZJWE1FOiBvbmx5IHdvcmtzIGlmIHR3byB0cmFja3MgdXNlIHNhbWUgYnVmZmVyCisgICAgaW50MzJfdCogb3V0ID0gdDAubWFpbkJ1ZmZlcjsKICAgICBzaXplX3QgbnVtRnJhbWVzID0gc3RhdGUtPmZyYW1lQ291bnQ7CiAgICAgaW50MTZfdCBjb25zdCAqYnVmZiA9IE5VTEw7CiAKLSAgCisKICAgICB3aGlsZSAobnVtRnJhbWVzKSB7Ci0gICAKKwogICAgICAgICBpZiAoZnJhbWVDb3VudDAgPT0gMCkgewogICAgICAgICAgICAgYjAuZnJhbWVDb3VudCA9IG51bUZyYW1lczsKICAgICAgICAgICAgIHQwLmJ1ZmZlclByb3ZpZGVyLT5nZXROZXh0QnVmZmVyKCZiMCk7CkBAIC04NzUsMTMgKzExNTUsMTMgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZyYW1lQ291bnQxID0gYjEuZnJhbWVDb3VudDsKICAgICAgICAgfQotICAgICAgIAorCiAgICAgICAgIHNpemVfdCBvdXRGcmFtZXMgPSBmcmFtZUNvdW50MCA8IGZyYW1lQ291bnQxP2ZyYW1lQ291bnQwOmZyYW1lQ291bnQxOwogCiAgICAgICAgIG51bUZyYW1lcyAtPSBvdXRGcmFtZXM7CiAgICAgICAgIGZyYW1lQ291bnQwIC09IG91dEZyYW1lczsKICAgICAgICAgZnJhbWVDb3VudDEgLT0gb3V0RnJhbWVzOwotICAgICAgIAorCiAgICAgICAgIGRvIHsKICAgICAgICAgICAgIGludDMyX3QgbDAgPSAqaW4wKys7CiAgICAgICAgICAgICBpbnQzMl90IHIwID0gKmluMCsrOwpAQCAtODk2LDE3ICsxMTc2LDE3IEBACiAgICAgICAgICAgICByID0gY2xhbXAxNihyKTsKICAgICAgICAgICAgICpvdXQrKyA9IChyPDwxNikgfCAobCAmIDB4RkZGRik7CiAgICAgICAgIH0gd2hpbGUgKC0tb3V0RnJhbWVzKTsKLSAgICAgICAKKwogICAgICAgICBpZiAoZnJhbWVDb3VudDAgPT0gMCkgewogICAgICAgICAgICAgdDAuYnVmZmVyUHJvdmlkZXItPnJlbGVhc2VCdWZmZXIoJmIwKTsKICAgICAgICAgfQogICAgICAgICBpZiAoZnJhbWVDb3VudDEgPT0gMCkgewogICAgICAgICAgICAgdDEuYnVmZmVyUHJvdmlkZXItPnJlbGVhc2VCdWZmZXIoJmIxKTsKICAgICAgICAgfQotICAgIH0gICAKLSAgICAgICAKKyAgICB9CisKICAgICBpZiAoYnVmZiAhPSBOVUxMKSB7Ci0gICAgICAgIGRlbGV0ZSBbXSBidWZmOyAgICAgICAKKyAgICAgICAgZGVsZXRlIFtdIGJ1ZmY7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9saWJzL2F1ZGlvZmxpbmdlci9BdWRpb01peGVyLmggYi9saWJzL2F1ZGlvZmxpbmdlci9BdWRpb01peGVyLmgKaW5kZXggMTU3NjZjZC4uYWVlM2UxNyAxMDA2NDQKLS0tIGEvbGlicy9hdWRpb2ZsaW5nZXIvQXVkaW9NaXhlci5oCisrKyBiL2xpYnMvYXVkaW9mbGluZ2VyL0F1ZGlvTWl4ZXIuaApAQCAtNjMsMTEgKzYzLDE0IEBACiAgICAgICAgIC8vIGZvciB0YXJnZXQgVFJBQ0sKICAgICAgICAgQ0hBTk5FTF9DT1VOVCAgID0gMHg0MDAwLAogICAgICAgICBGT1JNQVQgICAgICAgICAgPSAweDQwMDEsCisgICAgICAgIE1BSU5fQlVGRkVSICAgICA9IDB4NDAwMiwKKyAgICAgICAgQVVYX0JVRkZFUiAgICAgID0gMHg0MDAzLAogICAgICAgICAvLyBmb3IgVEFSR0VUIFJFU0FNUExFCiAgICAgICAgIFNBTVBMRV9SQVRFICAgICA9IDB4NDEwMCwKICAgICAgICAgLy8gZm9yIFRBUkdFVCBWT0xVTUUgKDggY2hhbm5lbHMgbWF4KQogICAgICAgICBWT0xVTUUwICAgICAgICAgPSAweDQyMDAsCiAgICAgICAgIFZPTFVNRTEgICAgICAgICA9IDB4NDIwMSwKKyAgICAgICAgQVVYTEVWRUwgICAgICAgID0gMHg0MjEwLAogICAgIH07CiAKIApAQCAtNzgsMTAgKzgxLDEwIEBACiAgICAgc3RhdHVzX3QgICAgZGlzYWJsZShpbnQgbmFtZSk7CiAKICAgICBzdGF0dXNfdCAgICBzZXRBY3RpdmVUcmFjayhpbnQgdHJhY2spOwotICAgIHN0YXR1c190ICAgIHNldFBhcmFtZXRlcihpbnQgdGFyZ2V0LCBpbnQgbmFtZSwgaW50IHZhbHVlKTsKKyAgICBzdGF0dXNfdCAgICBzZXRQYXJhbWV0ZXIoaW50IHRhcmdldCwgaW50IG5hbWUsIHZvaWQgKnZhbHVlKTsKIAogICAgIHN0YXR1c190ICAgIHNldEJ1ZmZlclByb3ZpZGVyKEF1ZGlvQnVmZmVyUHJvdmlkZXIqIGJ1ZmZlclByb3ZpZGVyKTsKLSAgICB2b2lkICAgICAgICBwcm9jZXNzKHZvaWQqIG91dHB1dCk7CisgICAgdm9pZCAgICAgICAgcHJvY2VzcygpOwogCiAgICAgdWludDMyX3QgICAgdHJhY2tOYW1lcygpIGNvbnN0IHsgcmV0dXJuIG1UcmFja05hbWVzOyB9CiAKQEAgLTk0LDYgKzk3LDcgQEAKICAgICAgICAgTkVFRFNfRk9STUFUX19NQVNLICAgICAgICAgID0gMHgwMDAwMDBGMCwKICAgICAgICAgTkVFRFNfTVVURV9fTUFTSyAgICAgICAgICAgID0gMHgwMDAwMDEwMCwKICAgICAgICAgTkVFRFNfUkVTQU1QTEVfX01BU0sgICAgICAgID0gMHgwMDAwMTAwMCwKKyAgICAgICAgTkVFRFNfQVVYX19NQVNLICAgICAgICAgICAgID0gMHgwMDAxMDAwMCwKICAgICB9OwogCiAgICAgZW51bSB7CkBAIC0xMDcsNiArMTExLDkgQEAKIAogICAgICAgICBORUVEU19SRVNBTVBMRV9ESVNBQkxFRCAgICAgPSAweDAwMDAwMDAwLAogICAgICAgICBORUVEU19SRVNBTVBMRV9FTkFCTEVEICAgICAgPSAweDAwMDAxMDAwLAorCisgICAgICAgIE5FRURTX0FVWF9ESVNBQkxFRCAgICAgPSAweDAwMDAwMDAwLAorICAgICAgICBORUVEU19BVVhfRU5BQkxFRCAgICAgID0gMHgwMDAxMDAwMCwKICAgICB9OwogCiAgICAgc3RhdGljIGlubGluZSBpbnQzMl90IGFwcGx5Vm9sdW1lKGludDMyX3QgaW4sIGludDMyX3QgdikgewpAQCAtMTE1LDkgKzEyMiwxMCBAQAogCiAKICAgICBzdHJ1Y3Qgc3RhdGVfdDsKKyAgICBzdHJ1Y3QgdHJhY2tfdDsKIAotICAgIHR5cGVkZWYgdm9pZCAoKm1peF90KShzdGF0ZV90KiBzdGF0ZSwgdm9pZCogb3V0cHV0KTsKLQorICAgIHR5cGVkZWYgdm9pZCAoKm1peF90KShzdGF0ZV90KiBzdGF0ZSk7CisgICAgdHlwZWRlZiB2b2lkICgqaG9va190KSh0cmFja190KiB0LCBpbnQzMl90KiBvdXRwdXQsIHNpemVfdCBudW1PdXRGcmFtZXMsIGludDMyX3QqIHRlbXAsIGludDMyX3QqIGF1eCk7CiAgICAgc3RhdGljIGNvbnN0IGludCBCTE9DS1NJWkUgPSAxNjsgLy8gNCBjYWNoZSBsaW5lcwogCiAgICAgc3RydWN0IHRyYWNrX3QgewpAQCAtMTMxLDYgKzEzOSw5IEBACiAgICAgICAgIGludDMyX3QgICAgIHByZXZWb2x1bWVbMl07CiAKICAgICAgICAgaW50MzJfdCAgICAgdm9sdW1lSW5jWzJdOworICAgICAgICBpbnQzMl90ICAgICBhdXhMZXZlbDsKKyAgICAgICAgaW50MzJfdCAgICAgYXV4SW5jOworICAgICAgICBpbnQzMl90ICAgICBwcmV2QXV4TGV2ZWw7CiAKICAgICAgICAgdWludDE2X3QgICAgZnJhbWVDb3VudDsKIApAQCAtMTQyLDE1ICsxNTMsMTcgQEAKICAgICAgICAgQXVkaW9CdWZmZXJQcm92aWRlciogICAgICAgICAgICAgICAgYnVmZmVyUHJvdmlkZXI7CiAgICAgICAgIG11dGFibGUgQXVkaW9CdWZmZXJQcm92aWRlcjo6QnVmZmVyIGJ1ZmZlcjsKIAotICAgICAgICB2b2lkICgqaG9vaykodHJhY2tfdCogdCwgaW50MzJfdCogb3V0cHV0LCBzaXplX3QgbnVtT3V0RnJhbWVzLCBpbnQzMl90KiB0ZW1wKTsKKyAgICAgICAgaG9va190ICAgICAgaG9vazsKICAgICAgICAgdm9pZCBjb25zdCogaW47ICAgICAgICAgICAgIC8vIGN1cnJlbnQgbG9jYXRpb24gaW4gYnVmZmVyCiAKICAgICAgICAgQXVkaW9SZXNhbXBsZXIqICAgICByZXNhbXBsZXI7CiAgICAgICAgIHVpbnQzMl90ICAgICAgICAgICAgc2FtcGxlUmF0ZTsKKyAgICAgICAgaW50MzJfdCogICAgICAgICAgIG1haW5CdWZmZXI7CisgICAgICAgIGludDMyX3QqICAgICAgICAgICBhdXhCdWZmZXI7CiAKICAgICAgICAgYm9vbCAgICAgICAgc2V0UmVzYW1wbGVyKHVpbnQzMl90IHNhbXBsZVJhdGUsIHVpbnQzMl90IGRldlNhbXBsZVJhdGUpOwogICAgICAgICBib29sICAgICAgICBkb2VzUmVzYW1wbGUoKSBjb25zdDsKLSAgICAgICAgdm9pZCAgICAgICAgYWRqdXN0Vm9sdW1lUmFtcCgpOworICAgICAgICB2b2lkICAgICAgICBhZGp1c3RWb2x1bWVSYW1wKGJvb2wgYXV4KTsKICAgICB9OwogCiAgICAgLy8gcGFkIHRvIDMyLWJ5dGVzIHRvIGZpbGwgY2FjaGUgbGluZQpAQCAtMTczLDE4ICsxODYsMTkgQEAKIAogICAgIHZvaWQgaW52YWxpZGF0ZVN0YXRlKHVpbnQzMl90IG1hc2spOwogCi0gICAgc3RhdGljIHZvaWQgdHJhY2tfX2dlbmVyaWNSZXNhbXBsZSh0cmFja190KiB0LCBpbnQzMl90KiBvdXQsIHNpemVfdCBudW1GcmFtZXMsIGludDMyX3QqIHRlbXApOwotICAgIHN0YXRpYyB2b2lkIHRyYWNrX19ub3AodHJhY2tfdCogdCwgaW50MzJfdCogb3V0LCBzaXplX3QgbnVtRnJhbWVzLCBpbnQzMl90KiB0ZW1wKTsKLSAgICBzdGF0aWMgdm9pZCB2b2x1bWVSYW1wU3RlcmVvKHRyYWNrX3QqIHQsIGludDMyX3QqIG91dCwgc2l6ZV90IGZyYW1lQ291bnQsIGludDMyX3QqIHRlbXApOwotICAgIHN0YXRpYyB2b2lkIHRyYWNrX18xNkJpdHNTdGVyZW8odHJhY2tfdCogdCwgaW50MzJfdCogb3V0LCBzaXplX3QgbnVtRnJhbWVzLCBpbnQzMl90KiB0ZW1wKTsKLSAgICBzdGF0aWMgdm9pZCB0cmFja19fMTZCaXRzTW9ubyh0cmFja190KiB0LCBpbnQzMl90KiBvdXQsIHNpemVfdCBudW1GcmFtZXMsIGludDMyX3QqIHRlbXApOworICAgIHN0YXRpYyB2b2lkIHRyYWNrX19nZW5lcmljUmVzYW1wbGUodHJhY2tfdCogdCwgaW50MzJfdCogb3V0LCBzaXplX3QgbnVtRnJhbWVzLCBpbnQzMl90KiB0ZW1wLCBpbnQzMl90KiBhdXgpOworICAgIHN0YXRpYyB2b2lkIHRyYWNrX19ub3AodHJhY2tfdCogdCwgaW50MzJfdCogb3V0LCBzaXplX3QgbnVtRnJhbWVzLCBpbnQzMl90KiB0ZW1wLCBpbnQzMl90KiBhdXgpOworICAgIHN0YXRpYyB2b2lkIHRyYWNrX18xNkJpdHNTdGVyZW8odHJhY2tfdCogdCwgaW50MzJfdCogb3V0LCBzaXplX3QgbnVtRnJhbWVzLCBpbnQzMl90KiB0ZW1wLCBpbnQzMl90KiBhdXgpOworICAgIHN0YXRpYyB2b2lkIHRyYWNrX18xNkJpdHNNb25vKHRyYWNrX3QqIHQsIGludDMyX3QqIG91dCwgc2l6ZV90IG51bUZyYW1lcywgaW50MzJfdCogdGVtcCwgaW50MzJfdCogYXV4KTsKKyAgICBzdGF0aWMgdm9pZCB2b2x1bWVSYW1wU3RlcmVvKHRyYWNrX3QqIHQsIGludDMyX3QqIG91dCwgc2l6ZV90IGZyYW1lQ291bnQsIGludDMyX3QqIHRlbXAsIGludDMyX3QqIGF1eCk7CisgICAgc3RhdGljIHZvaWQgdm9sdW1lU3RlcmVvKHRyYWNrX3QqIHQsIGludDMyX3QqIG91dCwgc2l6ZV90IGZyYW1lQ291bnQsIGludDMyX3QqIHRlbXAsIGludDMyX3QqIGF1eCk7CiAKLSAgICBzdGF0aWMgdm9pZCBwcm9jZXNzX192YWxpZGF0ZShzdGF0ZV90KiBzdGF0ZSwgdm9pZCogb3V0cHV0KTsKLSAgICBzdGF0aWMgdm9pZCBwcm9jZXNzX19ub3Aoc3RhdGVfdCogc3RhdGUsIHZvaWQqIG91dHB1dCk7Ci0gICAgc3RhdGljIHZvaWQgcHJvY2Vzc19fZ2VuZXJpY05vUmVzYW1wbGluZyhzdGF0ZV90KiBzdGF0ZSwgdm9pZCogb3V0cHV0KTsKLSAgICBzdGF0aWMgdm9pZCBwcm9jZXNzX19nZW5lcmljUmVzYW1wbGluZyhzdGF0ZV90KiBzdGF0ZSwgdm9pZCogb3V0cHV0KTsKLSAgICBzdGF0aWMgdm9pZCBwcm9jZXNzX19PbmVUcmFjazE2Qml0c1N0ZXJlb05vUmVzYW1wbGluZyhzdGF0ZV90KiBzdGF0ZSwgdm9pZCogb3V0cHV0KTsKLSAgICBzdGF0aWMgdm9pZCBwcm9jZXNzX19Ud29UcmFja3MxNkJpdHNTdGVyZW9Ob1Jlc2FtcGxpbmcoc3RhdGVfdCogc3RhdGUsIHZvaWQqIG91dHB1dCk7CisgICAgc3RhdGljIHZvaWQgcHJvY2Vzc19fdmFsaWRhdGUoc3RhdGVfdCogc3RhdGUpOworICAgIHN0YXRpYyB2b2lkIHByb2Nlc3NfX25vcChzdGF0ZV90KiBzdGF0ZSk7CisgICAgc3RhdGljIHZvaWQgcHJvY2Vzc19fZ2VuZXJpY05vUmVzYW1wbGluZyhzdGF0ZV90KiBzdGF0ZSk7CisgICAgc3RhdGljIHZvaWQgcHJvY2Vzc19fZ2VuZXJpY1Jlc2FtcGxpbmcoc3RhdGVfdCogc3RhdGUpOworICAgIHN0YXRpYyB2b2lkIHByb2Nlc3NfX09uZVRyYWNrMTZCaXRzU3RlcmVvTm9SZXNhbXBsaW5nKHN0YXRlX3QqIHN0YXRlKTsKKyAgICBzdGF0aWMgdm9pZCBwcm9jZXNzX19Ud29UcmFja3MxNkJpdHNTdGVyZW9Ob1Jlc2FtcGxpbmcoc3RhdGVfdCogc3RhdGUpOwogfTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvbGlicy9hdWRpb2ZsaW5nZXIvQXVkaW9Qb2xpY3lNYW5hZ2VyQmFzZS5jcHAgYi9saWJzL2F1ZGlvZmxpbmdlci9BdWRpb1BvbGljeU1hbmFnZXJCYXNlLmNwcAppbmRleCBjOGIzZjQ4Li4zODFhOTU4IDEwMDY0NAotLS0gYS9saWJzL2F1ZGlvZmxpbmdlci9BdWRpb1BvbGljeU1hbmFnZXJCYXNlLmNwcAorKysgYi9saWJzL2F1ZGlvZmxpbmdlci9BdWRpb1BvbGljeU1hbmFnZXJCYXNlLmNwcApAQCAtMTI0OSw2ICsxMjQ5LDE3IEBACiAgICAgTE9HVigic2V0RGV2aWNlQ29ubmVjdGlvblN0YXRlKCkgY2xvc2luZyBBMkRQIGFuZCBkdXBsaWNhdGVkIG91dHB1dCEiKTsKIAogICAgIGlmIChtRHVwbGljYXRlZE91dHB1dCAhPSAwKSB7CisgICAgICAgIEF1ZGlvT3V0cHV0RGVzY3JpcHRvciAqZHVwT3V0cHV0RGVzYyA9IG1PdXRwdXRzLnZhbHVlRm9yKG1EdXBsaWNhdGVkT3V0cHV0KTsKKyAgICAgICAgQXVkaW9PdXRwdXREZXNjcmlwdG9yICpod091dHB1dERlc2MgPSBtT3V0cHV0cy52YWx1ZUZvcihtSGFyZHdhcmVPdXRwdXQpOworICAgICAgICAvLyBBcyBhbGwgYWN0aXZlIHRyYWNrcyBvbiBkdXBsaWNhdGVkIG91dHB1dCB3aWxsIGJlIGRlbGV0ZWQsCisgICAgICAgIC8vIGFuZCBhcyB0aGV5IHdlcmUgYWxzbyByZWZlcmVuY2VkIG9uIGhhcmR3YXJlIG91dHB1dCwgdGhlIHJlZmVyZW5jZQorICAgICAgICAvLyBjb3VudCBmb3IgdGhlaXIgc3RyZWFtIHR5cGUgbXVzdCBiZSBhZGp1c3RlZCBhY2NvcmRpbmdseSBvbgorICAgICAgICAvLyBoYXJkd2FyZSBvdXRwdXQuCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgKGludClBdWRpb1N5c3RlbTo6TlVNX1NUUkVBTV9UWVBFUzsgaSsrKSB7CisgICAgICAgICAgICBpbnQgcmVmQ291bnQgPSBkdXBPdXRwdXREZXNjLT5tUmVmQ291bnRbaV07CisgICAgICAgICAgICBod091dHB1dERlc2MtPmNoYW5nZVJlZkNvdW50KChBdWRpb1N5c3RlbTo6c3RyZWFtX3R5cGUpaSwtcmVmQ291bnQpOworICAgICAgICB9CisKICAgICAgICAgbXBDbGllbnRJbnRlcmZhY2UtPmNsb3NlT3V0cHV0KG1EdXBsaWNhdGVkT3V0cHV0KTsKICAgICAgICAgZGVsZXRlIG1PdXRwdXRzLnZhbHVlRm9yKG1EdXBsaWNhdGVkT3V0cHV0KTsKICAgICAgICAgbU91dHB1dHMucmVtb3ZlSXRlbShtRHVwbGljYXRlZE91dHB1dCk7CkBAIC0xMjg4LDExICsxMjk5LDYgQEAKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCAoaW50KUF1ZGlvU3lzdGVtOjpOVU1fU1RSRUFNX1RZUEVTOyBpKyspIHsKICAgICAgICAgICAgIGlmIChnZXRTdHJhdGVneSgoQXVkaW9TeXN0ZW06OnN0cmVhbV90eXBlKWkpID09IHN0cmF0ZWd5KSB7CiAgICAgICAgICAgICAgICAgbXBDbGllbnRJbnRlcmZhY2UtPnNldFN0cmVhbU91dHB1dCgoQXVkaW9TeXN0ZW06OnN0cmVhbV90eXBlKWksIG1IYXJkd2FyZU91dHB1dCk7Ci0gICAgICAgICAgICAgICAgaW50IHJlZkNvdW50ID0gYTJkcE91dHB1dERlc2MtPm1SZWZDb3VudFtpXTsKLSAgICAgICAgICAgICAgICAvLyBpbiB0aGUgY2FzZSBvZiBkdXBsaWNhdGVkIG91dHB1dCwgdGhlIHJlZiBjb3VudCBpcyBmaXJzdCBpbmNyZW1lbnRlZAotICAgICAgICAgICAgICAgIC8vIGFuZCB0aGVuIGRlY3JlbWVudGVkIG9uIGhhcmR3YXJlIG91dHB1dCB0dXMga2VlcGluZyBpdHMgdmFsdWUKLSAgICAgICAgICAgICAgICBod091dHB1dERlc2MtPmNoYW5nZVJlZkNvdW50KChBdWRpb1N5c3RlbTo6c3RyZWFtX3R5cGUpaSwgcmVmQ291bnQpOwotICAgICAgICAgICAgICAgIGEyZHBPdXRwdXREZXNjLT5jaGFuZ2VSZWZDb3VudCgoQXVkaW9TeXN0ZW06OnN0cmVhbV90eXBlKWksLXJlZkNvdW50KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICAvLyBkbyBub3QgY2hhbmdlIG5ld0RldmljZSBpZiBpdCB3YXMgYWxyZWFkeSBzZXQgYmVmb3JlIHRoaXMgY2FsbCBieSBhIHByZXZpb3VzIGNhbGwgdG8KQEAgLTEzMTgsMTEgKzEzMjQsNiBAQAogICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IChpbnQpQXVkaW9TeXN0ZW06Ok5VTV9TVFJFQU1fVFlQRVM7IGkrKykgewogICAgICAgICAgICAgaWYgKGdldFN0cmF0ZWd5KChBdWRpb1N5c3RlbTo6c3RyZWFtX3R5cGUpaSkgPT0gc3RyYXRlZ3kpIHsKICAgICAgICAgICAgICAgICBtcENsaWVudEludGVyZmFjZS0+c2V0U3RyZWFtT3V0cHV0KChBdWRpb1N5c3RlbTo6c3RyZWFtX3R5cGUpaSwgYTJkcE91dHB1dCk7Ci0gICAgICAgICAgICAgICAgaW50IHJlZkNvdW50ID0gaHdPdXRwdXREZXNjLT5tUmVmQ291bnRbaV07Ci0gICAgICAgICAgICAgICAgLy8gaW4gdGhlIGNhc2Ugb2YgZHVwbGljYXRlZCBvdXRwdXQsIHRoZSByZWYgY291bnQgaXMgZmlyc3QgaW5jcmVtZW50ZWQKLSAgICAgICAgICAgICAgICAvLyBhbmQgdGhlbiBkZWNyZW1lbnRlZCBvbiBoYXJkd2FyZSBvdXRwdXQgdHVzIGtlZXBpbmcgaXRzIHZhbHVlCi0gICAgICAgICAgICAgICAgYTJkcE91dHB1dERlc2MtPmNoYW5nZVJlZkNvdW50KChBdWRpb1N5c3RlbTo6c3RyZWFtX3R5cGUpaSwgcmVmQ291bnQpOwotICAgICAgICAgICAgICAgIGh3T3V0cHV0RGVzYy0+Y2hhbmdlUmVmQ291bnQoKEF1ZGlvU3lzdGVtOjpzdHJlYW1fdHlwZSlpLC1yZWZDb3VudCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CmRpZmYgLS1naXQgYS9saWJzL2JpbmRlci9JUENUaHJlYWRTdGF0ZS5jcHAgYi9saWJzL2JpbmRlci9JUENUaHJlYWRTdGF0ZS5jcHAKaW5kZXggMDAxNjUwMy4uMjg3MDZiYSAxMDA2NDQKLS0tIGEvbGlicy9iaW5kZXIvSVBDVGhyZWFkU3RhdGUuY3BwCisrKyBiL2xpYnMvYmluZGVyL0lQQ1RocmVhZFN0YXRlLmNwcApAQCAtMzY3LDYgKzM2NywxNiBAQAogICAgIHJldHVybiB0b2tlbjsKIH0KIAordm9pZCBJUENUaHJlYWRTdGF0ZTo6c2V0U3RyaWN0TW9kZVBvbGljeShpbnQzMl90IHBvbGljeSkKK3sKKyAgICBtU3RyaWN0TW9kZVBvbGljeSA9IHBvbGljeTsKK30KKworCitpbnQzMl90IElQQ1RocmVhZFN0YXRlOjpnZXRTdHJpY3RNb2RlUG9saWN5KCkgY29uc3QgeworICAgIHJldHVybiBtU3RyaWN0TW9kZVBvbGljeTsKK30KKwogdm9pZCBJUENUaHJlYWRTdGF0ZTo6cmVzdG9yZUNhbGxpbmdJZGVudGl0eShpbnQ2NF90IHRva2VuKQogewogICAgIG1DYWxsaW5nVWlkID0gKGludCkodG9rZW4+PjMyKTsKQEAgLTU4OCw3ICs1OTgsOCBAQAogfQogCiBJUENUaHJlYWRTdGF0ZTo6SVBDVGhyZWFkU3RhdGUoKQotICAgIDogbVByb2Nlc3MoUHJvY2Vzc1N0YXRlOjpzZWxmKCkpLCBtTXlUaHJlYWRJZChhbmRyb2lkR2V0VGlkKCkpCisgICAgOiBtUHJvY2VzcyhQcm9jZXNzU3RhdGU6OnNlbGYoKSksIG1NeVRocmVhZElkKGFuZHJvaWRHZXRUaWQoKSksCisgICAgICBtU3RyaWN0TW9kZVBvbGljeSgwKQogewogICAgIHB0aHJlYWRfc2V0c3BlY2lmaWMoZ1RMUywgdGhpcyk7CiAgICAgY2xlYXJDYWxsZXIoKTsKZGlmZiAtLWdpdCBhL2xpYnMvYmluZGVyL0lTZXJ2aWNlTWFuYWdlci5jcHAgYi9saWJzL2JpbmRlci9JU2VydmljZU1hbmFnZXIuY3BwCmluZGV4IDBjZjQxNTg2Li5hM2EzZjBlIDEwMDY0NAotLS0gYS9saWJzL2JpbmRlci9JU2VydmljZU1hbmFnZXIuY3BwCisrKyBiL2xpYnMvYmluZGVyL0lTZXJ2aWNlTWFuYWdlci5jcHAKQEAgLTEyOSwxOSArMTI5LDE5IEBACiAgICAgICAgIDogQnBJbnRlcmZhY2U8SVNlcnZpY2VNYW5hZ2VyPihpbXBsKQogICAgIHsKICAgICB9Ci0gICAgICAgIAorCiAgICAgdmlydHVhbCBzcDxJQmluZGVyPiBnZXRTZXJ2aWNlKGNvbnN0IFN0cmluZzE2JiBuYW1lKSBjb25zdAogICAgIHsKICAgICAgICAgdW5zaWduZWQgbjsKICAgICAgICAgZm9yIChuID0gMDsgbiA8IDU7IG4rKyl7CiAgICAgICAgICAgICBzcDxJQmluZGVyPiBzdmMgPSBjaGVja1NlcnZpY2UobmFtZSk7CiAgICAgICAgICAgICBpZiAoc3ZjICE9IE5VTEwpIHJldHVybiBzdmM7Ci0gICAgICAgICAgICBMT0dJKCJXYWl0aW5nIGZvciBzZXZpY2UgJXMuLi5cbiIsIFN0cmluZzgobmFtZSkuc3RyaW5nKCkpOworICAgICAgICAgICAgTE9HSSgiV2FpdGluZyBmb3Igc2VydmljZSAlcy4uLlxuIiwgU3RyaW5nOChuYW1lKS5zdHJpbmcoKSk7CiAgICAgICAgICAgICBzbGVlcCgxKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgCisKICAgICB2aXJ0dWFsIHNwPElCaW5kZXI+IGNoZWNrU2VydmljZSggY29uc3QgU3RyaW5nMTYmIG5hbWUpIGNvbnN0CiAgICAgewogICAgICAgICBQYXJjZWwgZGF0YSwgcmVwbHk7CkBAIC0yMjYsNCArMjI2LDMgQEAKIH0KIAogfTsgLy8gbmFtZXNwYWNlIGFuZHJvaWQKLQpkaWZmIC0tZ2l0IGEvbGlicy9iaW5kZXIvUGFyY2VsLmNwcCBiL2xpYnMvYmluZGVyL1BhcmNlbC5jcHAKaW5kZXggMDBkMjIxMC4uYzI1NzRiZCAxMDA2NDQKLS0tIGEvbGlicy9iaW5kZXIvUGFyY2VsLmNwcAorKysgYi9saWJzL2JpbmRlci9QYXJjZWwuY3BwCkBAIC0xOSw2ICsxOSw3IEBACiAKICNpbmNsdWRlIDxiaW5kZXIvUGFyY2VsLmg+CiAKKyNpbmNsdWRlIDxiaW5kZXIvSVBDVGhyZWFkU3RhdGUuaD4KICNpbmNsdWRlIDxiaW5kZXIvQmluZGVyLmg+CiAjaW5jbHVkZSA8YmluZGVyL0JwQmluZGVyLmg+CiAjaW5jbHVkZSA8dXRpbHMvRGVidWcuaD4KQEAgLTQzNiwxOSArNDM3LDIyIEBACiAgICAgcmV0dXJuIG1IYXNGZHM7CiB9CiAKKy8vIFdyaXRlIFJQQyBoZWFkZXJzLiAgKHByZXZpb3VzbHkganVzdCB0aGUgaW50ZXJmYWNlIHRva2VuKQogc3RhdHVzX3QgUGFyY2VsOjp3cml0ZUludGVyZmFjZVRva2VuKGNvbnN0IFN0cmluZzE2JiBpbnRlcmZhY2UpCiB7CisgICAgd3JpdGVJbnQzMihJUENUaHJlYWRTdGF0ZTo6c2VsZigpLT5nZXRTdHJpY3RNb2RlUG9saWN5KCkpOwogICAgIC8vIGN1cnJlbnRseSB0aGUgaW50ZXJmYWNlIGlkZW50aWZpY2F0aW9uIHRva2VuIGlzIGp1c3QgaXRzIG5hbWUgYXMgYSBzdHJpbmcKICAgICByZXR1cm4gd3JpdGVTdHJpbmcxNihpbnRlcmZhY2UpOwogfQogCiBib29sIFBhcmNlbDo6Y2hlY2tJbnRlcmZhY2UoSUJpbmRlciogYmluZGVyKSBjb25zdAogewotICAgIHJldHVybiBlbmZvcmNlSW50ZXJmYWNlKGJpbmRlci0+Z2V0SW50ZXJmYWNlRGVzY3JpcHRvcigpKTsgCisgICAgcmV0dXJuIGVuZm9yY2VJbnRlcmZhY2UoYmluZGVyLT5nZXRJbnRlcmZhY2VEZXNjcmlwdG9yKCkpOwogfQogCiBib29sIFBhcmNlbDo6ZW5mb3JjZUludGVyZmFjZShjb25zdCBTdHJpbmcxNiYgaW50ZXJmYWNlKSBjb25zdAogeworICAgIGludDMyX3Qgc3RyaWN0X3BvbGljeSA9IHJlYWRJbnQzMigpOwogICAgIGNvbnN0IFN0cmluZzE2IHN0cihyZWFkU3RyaW5nMTYoKSk7CiAgICAgaWYgKHN0ciA9PSBpbnRlcmZhY2UpIHsKICAgICAgICAgcmV0dXJuIHRydWU7CkBAIC00NTcsNyArNDYxLDcgQEAKICAgICAgICAgICAgICAgICBTdHJpbmc4KGludGVyZmFjZSkuc3RyaW5nKCksIFN0cmluZzgoc3RyKS5zdHJpbmcoKSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci19IAorfQogCiBjb25zdCBzaXplX3QqIFBhcmNlbDo6b2JqZWN0cygpIGNvbnN0CiB7CmRpZmYgLS1naXQgYS9saWJzL2NhbWVyYS9DYW1lcmEuY3BwIGIvbGlicy9jYW1lcmEvQ2FtZXJhLmNwcAppbmRleCBmMTljNTAyLi4wMDM3Mzk5IDEwMDY0NAotLS0gYS9saWJzL2NhbWVyYS9DYW1lcmEuY3BwCisrKyBiL2xpYnMvY2FtZXJhL0NhbWVyYS5jcHAKQEAgLTkyLDE2ICs5MiwzNSBAQAogCiBDYW1lcmE6On5DYW1lcmEoKQogewotICAgIGRpc2Nvbm5lY3QoKTsKKyAgICAvLyBXZSBkb24ndCBuZWVkIHRvIGNhbGwgZGlzY29ubmVjdCgpIGhlcmUgYmVjYXVzZSBpZiB0aGUgQ2FtZXJhU2VydmljZQorICAgIC8vIHRoaW5rcyB3ZSBhcmUgdGhlIG93bmVyIG9mIHRoZSBoYXJkd2FyZSwgaXQgd2lsbCBob2xkIGEgKHN0cm9uZykKKyAgICAvLyByZWZlcmVuY2UgdG8gdXMsIGFuZCB3ZSBjYW4ndCBwb3NzaWJseSBiZSBoZXJlLiBXZSBhbHNvIGRvbid0IHdhbnQgdG8KKyAgICAvLyBjYWxsIGRpc2Nvbm5lY3QoKSBoZXJlIGlmIHdlIGFyZSBpbiB0aGUgc2FtZSBwcm9jZXNzIGFzIG1lZGlhc2VydmVyLAorICAgIC8vIGJlY2F1c2Ugd2UgbWF5IGJlIGludm9rZWQgYnkgQ2FtZXJhU2VydmljZTo6Q2xpZW50Ojpjb25uZWN0KCkgYW5kIHdpbGwKKyAgICAvLyBkZWFkbG9jayBpZiB3ZSBjYWxsIGFueSBtZXRob2Qgb2YgSUNhbWVyYSBoZXJlLgogfQogCi1zcDxDYW1lcmE+IENhbWVyYTo6Y29ubmVjdCgpCitpbnQzMl90IENhbWVyYTo6Z2V0TnVtYmVyT2ZDYW1lcmFzKCkKK3sKKyAgICBjb25zdCBzcDxJQ2FtZXJhU2VydmljZT4mIGNzID0gZ2V0Q2FtZXJhU2VydmljZSgpOworICAgIGlmIChjcyA9PSAwKSByZXR1cm4gMDsKKyAgICByZXR1cm4gY3MtPmdldE51bWJlck9mQ2FtZXJhcygpOworfQorCitzdGF0dXNfdCBDYW1lcmE6OmdldENhbWVyYUluZm8oaW50IGNhbWVyYUlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBDYW1lcmFJbmZvKiBjYW1lcmFJbmZvKSB7CisgICAgY29uc3Qgc3A8SUNhbWVyYVNlcnZpY2U+JiBjcyA9IGdldENhbWVyYVNlcnZpY2UoKTsKKyAgICBpZiAoY3MgPT0gMCkgcmV0dXJuIFVOS05PV05fRVJST1I7CisgICAgcmV0dXJuIGNzLT5nZXRDYW1lcmFJbmZvKGNhbWVyYUlkLCBjYW1lcmFJbmZvKTsKK30KKworc3A8Q2FtZXJhPiBDYW1lcmE6OmNvbm5lY3QoaW50IGNhbWVyYUlkKQogewogICAgIExPR1YoImNvbm5lY3QiKTsKICAgICBzcDxDYW1lcmE+IGMgPSBuZXcgQ2FtZXJhKCk7CiAgICAgY29uc3Qgc3A8SUNhbWVyYVNlcnZpY2U+JiBjcyA9IGdldENhbWVyYVNlcnZpY2UoKTsKICAgICBpZiAoY3MgIT0gMCkgewotICAgICAgICBjLT5tQ2FtZXJhID0gY3MtPmNvbm5lY3QoYyk7CisgICAgICAgIGMtPm1DYW1lcmEgPSBjcy0+Y29ubmVjdChjLCBjYW1lcmFJZCk7CiAgICAgfQogICAgIGlmIChjLT5tQ2FtZXJhICE9IDApIHsKICAgICAgICAgYy0+bUNhbWVyYS0+YXNCaW5kZXIoKS0+bGlua1RvRGVhdGgoYyk7CmRpZmYgLS1naXQgYS9saWJzL2NhbWVyYS9DYW1lcmFQYXJhbWV0ZXJzLmNwcCBiL2xpYnMvY2FtZXJhL0NhbWVyYVBhcmFtZXRlcnMuY3BwCmluZGV4IDY1ZmQ3YWMuLjE0MTU0OTMgMTAwNjQ0Ci0tLSBhL2xpYnMvY2FtZXJhL0NhbWVyYVBhcmFtZXRlcnMuY3BwCisrKyBiL2xpYnMvY2FtZXJhL0NhbWVyYVBhcmFtZXRlcnMuY3BwCkBAIC02OSw4ICs2OSwxMyBAQAogY29uc3QgY2hhciBDYW1lcmFQYXJhbWV0ZXJzOjpLRVlfWk9PTV9SQVRJT1NbXSA9ICJ6b29tLXJhdGlvcyI7CiBjb25zdCBjaGFyIENhbWVyYVBhcmFtZXRlcnM6OktFWV9aT09NX1NVUFBPUlRFRFtdID0gInpvb20tc3VwcG9ydGVkIjsKIGNvbnN0IGNoYXIgQ2FtZXJhUGFyYW1ldGVyczo6S0VZX1NNT09USF9aT09NX1NVUFBPUlRFRFtdID0gInNtb290aC16b29tLXN1cHBvcnRlZCI7Citjb25zdCBjaGFyIENhbWVyYVBhcmFtZXRlcnM6OktFWV9GT0NVU19ESVNUQU5DRVNbXSA9ICJmb2N1cy1kaXN0YW5jZXMiOworY29uc3QgY2hhciBDYW1lcmFQYXJhbWV0ZXJzOjpLRVlfVklERU9fRlJBTUVfRk9STUFUW10gPSAidmlkZW8tZnJhbWUtZm9ybWF0IjsKK2NvbnN0IGNoYXIgQ2FtZXJhUGFyYW1ldGVyczo6S0VZX01FVEVSSU5HX01PREVbXSA9ICJtZXRlcmluZy1tb2RlIjsKK2NvbnN0IGNoYXIgQ2FtZXJhUGFyYW1ldGVyczo6S0VZX1NVUFBPUlRFRF9NRVRFUklOR19NT0RFU1tdID0gIm1ldGVyaW5nLW1vZGUtdmFsdWVzIjsKIAogY29uc3QgY2hhciBDYW1lcmFQYXJhbWV0ZXJzOjpUUlVFW10gPSAidHJ1ZSI7Citjb25zdCBjaGFyIENhbWVyYVBhcmFtZXRlcnM6OkZPQ1VTX0RJU1RBTkNFX0lORklOSVRZW10gPSAiSW5maW5pdHkiOwogCiAvLyBWYWx1ZXMgZm9yIHdoaXRlIGJhbGFuY2Ugc2V0dGluZ3MuCiBjb25zdCBjaGFyIENhbWVyYVBhcmFtZXRlcnM6OldISVRFX0JBTEFOQ0VfQVVUT1tdID0gImF1dG8iOwpAQCAtMTM3LDYgKzE0MiwxMiBAQAogY29uc3QgY2hhciBDYW1lcmFQYXJhbWV0ZXJzOjpGT0NVU19NT0RFX01BQ1JPW10gPSAibWFjcm8iOwogY29uc3QgY2hhciBDYW1lcmFQYXJhbWV0ZXJzOjpGT0NVU19NT0RFX0ZJWEVEW10gPSAiZml4ZWQiOwogY29uc3QgY2hhciBDYW1lcmFQYXJhbWV0ZXJzOjpGT0NVU19NT0RFX0VET0ZbXSA9ICJlZG9mIjsKK2NvbnN0IGNoYXIgQ2FtZXJhUGFyYW1ldGVyczo6Rk9DVVNfTU9ERV9DT05USU5VT1VTW10gPSAiY29udGludW91cyI7CisKKy8vIFZhbHVlcyBmb3IgbWV0ZXJpbmcgbW9kZSBzZXR0aW5ncy4KK2NvbnN0IGNoYXIgQ2FtZXJhUGFyYW1ldGVyczo6TUVURVJJTkdfTU9ERV9DRU5URVJfV0VJR0hURURbXSA9ICJjZW50ZXItd2VpZ2h0ZWQiOworY29uc3QgY2hhciBDYW1lcmFQYXJhbWV0ZXJzOjpNRVRFUklOR19NT0RFX0ZSQU1FX0FWRVJBR0VbXSA9ICJmcmFtZS1hdmVyYWdlIjsKK2NvbnN0IGNoYXIgQ2FtZXJhUGFyYW1ldGVyczo6TUVURVJJTkdfTU9ERV9TUE9UW10gPSAic3BvdCI7CiAKIENhbWVyYVBhcmFtZXRlcnM6OkNhbWVyYVBhcmFtZXRlcnMoKQogICAgICAgICAgICAgICAgIDogbU1hcCgpCmRpZmYgLS1naXQgYS9saWJzL2NhbWVyYS9JQ2FtZXJhU2VydmljZS5jcHAgYi9saWJzL2NhbWVyYS9JQ2FtZXJhU2VydmljZS5jcHAKaW5kZXggNDZiNTQ3OC4uODVmMWEyOSAxMDA2NDQKLS0tIGEvbGlicy9jYW1lcmEvSUNhbWVyYVNlcnZpY2UuY3BwCisrKyBiL2xpYnMvY2FtZXJhL0lDYW1lcmFTZXJ2aWNlLmNwcApAQCAtMzQsMTIgKzM0LDM0IEBACiAgICAgewogICAgIH0KIAorICAgIC8vIGdldCBudW1iZXIgb2YgY2FtZXJhcyBhdmFpbGFibGUKKyAgICB2aXJ0dWFsIGludDMyX3QgZ2V0TnVtYmVyT2ZDYW1lcmFzKCkKKyAgICB7CisgICAgICAgIFBhcmNlbCBkYXRhLCByZXBseTsKKyAgICAgICAgZGF0YS53cml0ZUludGVyZmFjZVRva2VuKElDYW1lcmFTZXJ2aWNlOjpnZXRJbnRlcmZhY2VEZXNjcmlwdG9yKCkpOworICAgICAgICByZW1vdGUoKS0+dHJhbnNhY3QoQm5DYW1lcmFTZXJ2aWNlOjpHRVRfTlVNQkVSX09GX0NBTUVSQVMsIGRhdGEsICZyZXBseSk7CisgICAgICAgIHJldHVybiByZXBseS5yZWFkSW50MzIoKTsKKyAgICB9CisKKyAgICAvLyBnZXQgaW5mb3JtYXRpb24gYWJvdXQgYSBjYW1lcmEKKyAgICB2aXJ0dWFsIHN0YXR1c190IGdldENhbWVyYUluZm8oaW50IGNhbWVyYUlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgQ2FtZXJhSW5mbyogY2FtZXJhSW5mbykgeworICAgICAgICBQYXJjZWwgZGF0YSwgcmVwbHk7CisgICAgICAgIGRhdGEud3JpdGVJbnRlcmZhY2VUb2tlbihJQ2FtZXJhU2VydmljZTo6Z2V0SW50ZXJmYWNlRGVzY3JpcHRvcigpKTsKKyAgICAgICAgZGF0YS53cml0ZUludDMyKGNhbWVyYUlkKTsKKyAgICAgICAgcmVtb3RlKCktPnRyYW5zYWN0KEJuQ2FtZXJhU2VydmljZTo6R0VUX0NBTUVSQV9JTkZPLCBkYXRhLCAmcmVwbHkpOworICAgICAgICBjYW1lcmFJbmZvLT5mYWNpbmcgPSByZXBseS5yZWFkSW50MzIoKTsKKyAgICAgICAgY2FtZXJhSW5mby0+b3JpZW50YXRpb24gPSByZXBseS5yZWFkSW50MzIoKTsKKyAgICAgICAgcmV0dXJuIHJlcGx5LnJlYWRJbnQzMigpOworICAgIH0KKwogICAgIC8vIGNvbm5lY3QgdG8gY2FtZXJhIHNlcnZpY2UKLSAgICB2aXJ0dWFsIHNwPElDYW1lcmE+IGNvbm5lY3QoY29uc3Qgc3A8SUNhbWVyYUNsaWVudD4mIGNhbWVyYUNsaWVudCkKKyAgICB2aXJ0dWFsIHNwPElDYW1lcmE+IGNvbm5lY3QoY29uc3Qgc3A8SUNhbWVyYUNsaWVudD4mIGNhbWVyYUNsaWVudCwgaW50IGNhbWVyYUlkKQogICAgIHsKICAgICAgICAgUGFyY2VsIGRhdGEsIHJlcGx5OwogICAgICAgICBkYXRhLndyaXRlSW50ZXJmYWNlVG9rZW4oSUNhbWVyYVNlcnZpY2U6OmdldEludGVyZmFjZURlc2NyaXB0b3IoKSk7CiAgICAgICAgIGRhdGEud3JpdGVTdHJvbmdCaW5kZXIoY2FtZXJhQ2xpZW50LT5hc0JpbmRlcigpKTsKKyAgICAgICAgZGF0YS53cml0ZUludDMyKGNhbWVyYUlkKTsKICAgICAgICAgcmVtb3RlKCktPnRyYW5zYWN0KEJuQ2FtZXJhU2VydmljZTo6Q09OTkVDVCwgZGF0YSwgJnJlcGx5KTsKICAgICAgICAgcmV0dXJuIGludGVyZmFjZV9jYXN0PElDYW1lcmE+KHJlcGx5LnJlYWRTdHJvbmdCaW5kZXIoKSk7CiAgICAgfQpAQCAtNTMsMTAgKzc1LDI1IEBACiAgICAgdWludDMyX3QgY29kZSwgY29uc3QgUGFyY2VsJiBkYXRhLCBQYXJjZWwqIHJlcGx5LCB1aW50MzJfdCBmbGFncykKIHsKICAgICBzd2l0Y2goY29kZSkgeworICAgICAgICBjYXNlIEdFVF9OVU1CRVJfT0ZfQ0FNRVJBUzogeworICAgICAgICAgICAgQ0hFQ0tfSU5URVJGQUNFKElDYW1lcmFTZXJ2aWNlLCBkYXRhLCByZXBseSk7CisgICAgICAgICAgICByZXBseS0+d3JpdGVJbnQzMihnZXROdW1iZXJPZkNhbWVyYXMoKSk7CisgICAgICAgICAgICByZXR1cm4gTk9fRVJST1I7CisgICAgICAgIH0gYnJlYWs7CisgICAgICAgIGNhc2UgR0VUX0NBTUVSQV9JTkZPOiB7CisgICAgICAgICAgICBDSEVDS19JTlRFUkZBQ0UoSUNhbWVyYVNlcnZpY2UsIGRhdGEsIHJlcGx5KTsKKyAgICAgICAgICAgIENhbWVyYUluZm8gY2FtZXJhSW5mbzsKKyAgICAgICAgICAgIG1lbXNldCgmY2FtZXJhSW5mbywgMCwgc2l6ZW9mKGNhbWVyYUluZm8pKTsKKyAgICAgICAgICAgIHN0YXR1c190IHJlc3VsdCA9IGdldENhbWVyYUluZm8oZGF0YS5yZWFkSW50MzIoKSwgJmNhbWVyYUluZm8pOworICAgICAgICAgICAgcmVwbHktPndyaXRlSW50MzIoY2FtZXJhSW5mby5mYWNpbmcpOworICAgICAgICAgICAgcmVwbHktPndyaXRlSW50MzIoY2FtZXJhSW5mby5vcmllbnRhdGlvbik7CisgICAgICAgICAgICByZXBseS0+d3JpdGVJbnQzMihyZXN1bHQpOworICAgICAgICAgICAgcmV0dXJuIE5PX0VSUk9SOworICAgICAgICB9IGJyZWFrOwogICAgICAgICBjYXNlIENPTk5FQ1Q6IHsKICAgICAgICAgICAgIENIRUNLX0lOVEVSRkFDRShJQ2FtZXJhU2VydmljZSwgZGF0YSwgcmVwbHkpOwogICAgICAgICAgICAgc3A8SUNhbWVyYUNsaWVudD4gY2FtZXJhQ2xpZW50ID0gaW50ZXJmYWNlX2Nhc3Q8SUNhbWVyYUNsaWVudD4oZGF0YS5yZWFkU3Ryb25nQmluZGVyKCkpOwotICAgICAgICAgICAgc3A8SUNhbWVyYT4gY2FtZXJhID0gY29ubmVjdChjYW1lcmFDbGllbnQpOworICAgICAgICAgICAgc3A8SUNhbWVyYT4gY2FtZXJhID0gY29ubmVjdChjYW1lcmFDbGllbnQsIGRhdGEucmVhZEludDMyKCkpOwogICAgICAgICAgICAgcmVwbHktPndyaXRlU3Ryb25nQmluZGVyKGNhbWVyYS0+YXNCaW5kZXIoKSk7CiAgICAgICAgICAgICByZXR1cm4gTk9fRVJST1I7CiAgICAgICAgIH0gYnJlYWs7CmRpZmYgLS1naXQgYS9saWJzL3JzL3JzLnNwZWMgYi9saWJzL3JzL3JzLnNwZWMKaW5kZXggY2I5OTM3Yy4uNWFlOGQwMSAxMDA2NDQKLS0tIGEvbGlicy9ycy9ycy5zcGVjCisrKyBiL2xpYnMvcnMvcnMuc3BlYwpAQCAtMjksNyArMjksNyBAQAogQ29udGV4dFNldFN1cmZhY2UgewogCXBhcmFtIHVpbnQzMl90IHdpZHRoCiAJcGFyYW0gdWludDMyX3QgaGVpZ2h0Ci0JcGFyYW0gYW5kcm9pZF9uYXRpdmVfd2luZG93X3QgKnN1cgorCXBhcmFtIEFOYXRpdmVXaW5kb3cgKnN1cgogCX0KIAogQ29udGV4dER1bXAgewpkaWZmIC0tZ2l0IGEvbGlicy9ycy9yc0NvbnRleHQuY3BwIGIvbGlicy9ycy9yc0NvbnRleHQuY3BwCmluZGV4IGQ4YTlhOTkuLjU5NmY1MzMgMTAwNjQ0Ci0tLSBhL2xpYnMvcnMvcnNDb250ZXh0LmNwcAorKysgYi9saWJzL3JzL3JzQ29udGV4dC5jcHAKQEAgLTQ3Myw3ICs0NzMsNyBAQAogICAgIG9iakRlc3Ryb3lPT0JEZXN0cm95KCk7CiB9CiAKLXZvaWQgQ29udGV4dDo6c2V0U3VyZmFjZSh1aW50MzJfdCB3LCB1aW50MzJfdCBoLCBhbmRyb2lkX25hdGl2ZV93aW5kb3dfdCAqc3VyKQordm9pZCBDb250ZXh0OjpzZXRTdXJmYWNlKHVpbnQzMl90IHcsIHVpbnQzMl90IGgsIEFOYXRpdmVXaW5kb3cgKnN1cikKIHsKICAgICByc0Fzc2VydChtSXNHcmFwaGljc0NvbnRleHQpOwogCkBAIC04ODgsNyArODg4LDcgQEAKICAgICByc2MtPnJlc3VtZSgpOwogfQogCi12b2lkIHJzaV9Db250ZXh0U2V0U3VyZmFjZShDb250ZXh0ICpyc2MsIHVpbnQzMl90IHcsIHVpbnQzMl90IGgsIGFuZHJvaWRfbmF0aXZlX3dpbmRvd190ICpzdXIpCit2b2lkIHJzaV9Db250ZXh0U2V0U3VyZmFjZShDb250ZXh0ICpyc2MsIHVpbnQzMl90IHcsIHVpbnQzMl90IGgsIEFOYXRpdmVXaW5kb3cgKnN1cikKIHsKICAgICByc2MtPnNldFN1cmZhY2UodywgaCwgc3VyKTsKIH0KZGlmZiAtLWdpdCBhL2xpYnMvcnMvcnNDb250ZXh0LmggYi9saWJzL3JzL3JzQ29udGV4dC5oCmluZGV4IDgyYzM2ODcuLjcwOTczMGUgMTAwNjQ0Ci0tLSBhL2xpYnMvcnMvcnNDb250ZXh0LmgKKysrIGIvbGlicy9ycy9yc0NvbnRleHQuaApAQCAtOTgsNyArOTgsNyBAQAogCiAgICAgdm9pZCBwYXVzZSgpOwogICAgIHZvaWQgcmVzdW1lKCk7Ci0gICAgdm9pZCBzZXRTdXJmYWNlKHVpbnQzMl90IHcsIHVpbnQzMl90IGgsIGFuZHJvaWRfbmF0aXZlX3dpbmRvd190ICpzdXIpOworICAgIHZvaWQgc2V0U3VyZmFjZSh1aW50MzJfdCB3LCB1aW50MzJfdCBoLCBBTmF0aXZlV2luZG93ICpzdXIpOwogICAgIHZvaWQgc2V0UHJpb3JpdHkoaW50MzJfdCBwKTsKIAogICAgIHZvaWQgYXNzaWduTmFtZShPYmplY3RCYXNlICpvYmosIGNvbnN0IGNoYXIgKm5hbWUsIHVpbnQzMl90IGxlbik7CkBAIC0yNDYsNyArMjQ2LDcgQEAKIAogICAgIHN0YXRpYyB2b2lkICogdGhyZWFkUHJvYyh2b2lkICopOwogCi0gICAgYW5kcm9pZF9uYXRpdmVfd2luZG93X3QgKm1XbmRTdXJmYWNlOworICAgIEFOYXRpdmVXaW5kb3cgKm1XbmRTdXJmYWNlOwogCiAgICAgVmVjdG9yPE9iamVjdEJhc2UgKj4gbU5hbWVzOwogCmRpZmYgLS1naXQgYS9saWJzL3JzL3JzUHJvZ3JhbS5jcHAgYi9saWJzL3JzL3JzUHJvZ3JhbS5jcHAKaW5kZXggNDc4YTZkYy4uNzBlMjg2OCAxMDA2NDQKLS0tIGEvbGlicy9ycy9yc1Byb2dyYW0uY3BwCisrKyBiL2xpYnMvcnMvcnNQcm9ncmFtLmNwcApAQCAtMTk1LDcgKzE5NSw3IEBACiAKICAgICBpZiAocnNjLT5wcm9wcy5tTG9nU2hhZGVycykgewogICAgICAgICBMT0dWKCJMb2FkaW5nIHNoYWRlciB0eXBlICV4LCBJRCAlaSIsIHR5cGUsIG1TaGFkZXJJRCk7Ci0gICAgICAgIExPR1YobVNoYWRlci5zdHJpbmcoKSk7CisgICAgICAgIExPR1YoIiVzIiwgbVNoYWRlci5zdHJpbmcoKSk7CiAgICAgfQogCiAgICAgaWYgKG1TaGFkZXJJRCkgewpkaWZmIC0tZ2l0IGEvbGlicy9ycy9yc1NjcmlwdEMuY3BwIGIvbGlicy9ycy9yc1NjcmlwdEMuY3BwCmluZGV4IDFmMjM3NzMuLmY0ZDI0NTEgMTAwNjQ0Ci0tLSBhL2xpYnMvcnMvcnNTY3JpcHRDLmNwcAorKysgYi9saWJzL3JzL3JzU2NyaXB0Qy5jcHAKQEAgLTE1OSw3ICsxNTksNyBAQAogICAgICAgICBBQ0NjaGFyIGJ1Zls0MDk2XTsKICAgICAgICAgQUNDc2l6ZWkgbGVuOwogICAgICAgICBhY2NHZXRTY3JpcHRJbmZvTG9nKHMtPm1BY2NTY3JpcHQsIHNpemVvZihidWYpLCAmbGVuLCBidWYpOwotICAgICAgICBMT0dFKGJ1Zik7CisgICAgICAgIExPR0UoIiVzIiwgYnVmKTsKICAgICAgICAgcnNjLT5zZXRFcnJvcihSU19FUlJPUl9CQURfU0NSSVBULCAiRXJyb3IgY29tcGlsaW5nIHVzZXIgc2NyaXB0LiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzQ1LDcgKzM0NSw3IEBACiAgICAgICAgICAgICBzLmFwcGVuZChlLT5nZXROYW1lKCkpOwogICAgICAgICAgICAgcy5hcHBlbmQoIlxuXG4iKTsKICAgICAgICAgICAgIGlmIChyc2MtPnByb3BzLm1Mb2dTY3JpcHRzKSB7Ci0gICAgICAgICAgICAgICAgTE9HVihzKTsKKyAgICAgICAgICAgICAgICBMT0dWKCIlcyIsIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihzKSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBzdHItPmFwcGVuZChzKTsKICAgICAgICAgfQpAQCAtMzcyLDcgKzM3Miw3IEBACiAgICAgICAgICAgICBzLmFwcGVuZChtU2xvdE5hbWVzW2N0XSk7CiAgICAgICAgICAgICBzLmFwcGVuZCgiO1xuIik7CiAgICAgICAgICAgICBpZiAocnNjLT5wcm9wcy5tTG9nU2NyaXB0cykgewotICAgICAgICAgICAgICAgIExPR1Yocyk7CisgICAgICAgICAgICAgICAgTE9HVigiJXMiLCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4ocykpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgc3RyLT5hcHBlbmQocyk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL2xpYnMvc3VyZmFjZWZsaW5nZXIvQW5kcm9pZC5tayBiL2xpYnMvc3VyZmFjZWZsaW5nZXIvQW5kcm9pZC5tawppbmRleCA4NmViNzhkLi5hMTRiZmI1IDEwMDY0NAotLS0gYS9saWJzL3N1cmZhY2VmbGluZ2VyL0FuZHJvaWQubWsKKysrIGIvbGlicy9zdXJmYWNlZmxpbmdlci9BbmRyb2lkLm1rCkBAIC02LDYgKzYsNyBAQAogICAgIERpc3BsYXlIYXJkd2FyZS9EaXNwbGF5SGFyZHdhcmUuY3BwIFwKICAgICBEaXNwbGF5SGFyZHdhcmUvRGlzcGxheUhhcmR3YXJlQmFzZS5jcHAgXAogICAgIEJsdXJGaWx0ZXIuY3BwLmFybSBcCisgICAgR0xFeHRlbnNpb25zLmNwcCBcCiAgICAgTGF5ZXIuY3BwIFwKICAgICBMYXllckJhc2UuY3BwIFwKICAgICBMYXllckJ1ZmZlci5jcHAgXApAQCAtMTMsMTQgKzE0LDE0IEBACiAgICAgTGF5ZXJEaW0uY3BwIFwKICAgICBNZXNzYWdlUXVldWUuY3BwIFwKICAgICBTdXJmYWNlRmxpbmdlci5jcHAgXAotICAgIFRva2VuaXplci5jcHAgXAorICAgIFRleHR1cmVNYW5hZ2VyLmNwcCBcCiAgICAgVHJhbnNmb3JtLmNwcAogCiBMT0NBTF9DRkxBR1M6PSAtRExPR19UQUc9XCJTdXJmYWNlRmxpbmdlclwiCiBMT0NBTF9DRkxBR1MgKz0gLURHTF9HTEVYVF9QUk9UT1RZUEVTIC1ERUdMX0VHTEVYVF9QUk9UT1RZUEVTCiAKLWlmZXEgKCQoVEFSR0VUX0JPQVJEX1BMQVRGT1JNKSwgbXNtN2spCi0JTE9DQUxfQ0ZMQUdTICs9IC1ERElNX1dJVEhfVEVYVFVSRQoraWZlcSAoJChUQVJHRVRfQk9BUkRfUExBVEZPUk0pLCBvbWFwMykKKwlMT0NBTF9DRkxBR1MgKz0gLUROT19SR0JYXzg4ODgKIGVuZGlmCiAKICMgbmVlZCAiLWxydCIgb24gTGludXggc2ltdWxhdG9yIHRvIHBpY2sgdXAgY2xvY2tfZ2V0dGltZQpkaWZmIC0tZ2l0IGEvbGlicy9zdXJmYWNlZmxpbmdlci9CYXJyaWVyLmggYi9saWJzL3N1cmZhY2VmbGluZ2VyL0JhcnJpZXIuaAppbmRleCBlMmJjZjZhLi42Zjg1MDdlIDEwMDY0NAotLS0gYS9saWJzL3N1cmZhY2VmbGluZ2VyL0JhcnJpZXIuaAorKysgYi9saWJzL3N1cmZhY2VmbGluZ2VyL0JhcnJpZXIuaApAQCAtMjksMTAgKzI5LDYgQEAKICAgICBpbmxpbmUgQmFycmllcigpIDogc3RhdGUoQ0xPU0VEKSB7IH0KICAgICBpbmxpbmUgfkJhcnJpZXIoKSB7IH0KICAgICB2b2lkIG9wZW4oKSB7Ci0gICAgICAgIC8vIGdjYyBtZW1vcnkgYmFycmllciwgdGhpcyBtYWtlcyBzdXJlIGFsbCBtZW1vcnkgd3JpdGVzCi0gICAgICAgIC8vIGhhdmUgYmVlbiBpc3N1ZWQgYnkgZ2NjLiBPbiBhbiBTTVAgc3lzdGVtIHdlJ2QgbmVlZCBhIHJlYWwKLSAgICAgICAgLy8gaC93IGJhcnJpZXIuCi0gICAgICAgIGFzbSB2b2xhdGlsZSAoIiI6OjoibWVtb3J5Iik7CiAgICAgICAgIE11dGV4OjpBdXRvbG9jayBfbChsb2NrKTsKICAgICAgICAgc3RhdGUgPSBPUEVORUQ7CiAgICAgICAgIGN2LmJyb2FkY2FzdCgpOwpkaWZmIC0tZ2l0IGEvbGlicy9zdXJmYWNlZmxpbmdlci9EaXNwbGF5SGFyZHdhcmUvRGlzcGxheUhhcmR3YXJlLmNwcCBiL2xpYnMvc3VyZmFjZWZsaW5nZXIvRGlzcGxheUhhcmR3YXJlL0Rpc3BsYXlIYXJkd2FyZS5jcHAKaW5kZXggZWE2ODM1Mi4uMmVhYzBhOCAxMDA2NDQKLS0tIGEvbGlicy9zdXJmYWNlZmxpbmdlci9EaXNwbGF5SGFyZHdhcmUvRGlzcGxheUhhcmR3YXJlLmNwcAorKysgYi9saWJzL3N1cmZhY2VmbGluZ2VyL0Rpc3BsYXlIYXJkd2FyZS9EaXNwbGF5SGFyZHdhcmUuY3BwCkBAIC00MCw2ICs0MCw4IEBACiAjaW5jbHVkZSA8aGFyZHdhcmUvb3ZlcmxheS5oPgogI2luY2x1ZGUgPGhhcmR3YXJlL2dyYWxsb2MuaD4KIAorI2luY2x1ZGUgIkdMRXh0ZW5zaW9ucy5oIgorCiB1c2luZyBuYW1lc3BhY2UgYW5kcm9pZDsKIAogCkBAIC03Myw3ICs3NSw4IEBACiBEaXNwbGF5SGFyZHdhcmU6OkRpc3BsYXlIYXJkd2FyZSgKICAgICAgICAgY29uc3Qgc3A8U3VyZmFjZUZsaW5nZXI+JiBmbGluZ2VyLAogICAgICAgICB1aW50MzJfdCBkcHkpCi0gICAgOiBEaXNwbGF5SGFyZHdhcmVCYXNlKGZsaW5nZXIsIGRweSkKKyAgICA6IERpc3BsYXlIYXJkd2FyZUJhc2UoZmxpbmdlciwgZHB5KSwKKyAgICAgIG1GbGFncygwKQogewogICAgIGluaXQoZHB5KTsKIH0KQEAgLTk3LDYgKzEwMCw5IEBACiB7CiAgICAgbU5hdGl2ZVdpbmRvdyA9IG5ldyBGcmFtZWJ1ZmZlck5hdGl2ZVdpbmRvdygpOwogICAgIGZyYW1lYnVmZmVyX2RldmljZV90IGNvbnN0ICogZmJEZXYgPSBtTmF0aXZlV2luZG93LT5nZXREZXZpY2UoKTsKKyAgICBtRHBpWCA9IG1OYXRpdmVXaW5kb3ctPnhkcGk7CisgICAgbURwaVkgPSBtTmF0aXZlV2luZG93LT55ZHBpOworICAgIG1SZWZyZXNoUmF0ZSA9IGZiRGV2LT5mcHM7CiAKICAgICBtT3ZlcmxheUVuZ2luZSA9IE5VTEw7CiAgICAgaHdfbW9kdWxlX3QgY29uc3QqIG1vZHVsZTsKQEAgLTEwNCw2ICsxMTAsMTEgQEAKICAgICAgICAgb3ZlcmxheV9jb250cm9sX29wZW4obW9kdWxlLCAmbU92ZXJsYXlFbmdpbmUpOwogICAgIH0KIAorICAgIEVHTGludCB3LCBoLCBkdW1teTsKKyAgICBFR0xpbnQgbnVtQ29uZmlncz0wOworICAgIEVHTFN1cmZhY2Ugc3VyZmFjZTsKKyAgICBFR0xDb250ZXh0IGNvbnRleHQ7CisKICAgICAvLyBpbml0aWFsaXplIEVHTAogICAgIEVHTGludCBhdHRyaWJzW10gPSB7CiAgICAgICAgICAgICBFR0xfU1VSRkFDRV9UWVBFLCAgIEVHTF9XSU5ET1dfQklULApAQCAtMTIxLDEyICsxMzIsNiBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgRUdMaW50IHcsIGgsIGR1bW15OwotICAgIEVHTGludCBudW1Db25maWdzPTA7Ci0gICAgRUdMU3VyZmFjZSBzdXJmYWNlOwotICAgIEVHTENvbnRleHQgY29udGV4dDsKLSAgICBtRmxhZ3MgPSBDQUNIRURfQlVGRkVSUzsKLQogICAgIC8vIFRPRE86IGFsbCB0aGUgZXh0ZW5zaW9ucyBiZWxvdyBzaG91bGQgYmUgcXVlcmllZCB0aHJvdWdoCiAgICAgLy8gZWdsR2V0UHJvY0FkZHJlc3MoKS4KIApAQCAtMTQ1LDIyICsxNTAsNiBAQAogICAgIGVnbEdldENvbmZpZ0F0dHJpYihkaXNwbGF5LCBjb25maWcsIEVHTF9CTFVFX1NJWkUsICAmYik7CiAgICAgZWdsR2V0Q29uZmlnQXR0cmliKGRpc3BsYXksIGNvbmZpZywgRUdMX0FMUEhBX1NJWkUsICZhKTsKIAotICAgIC8qCi0gICAgICogR2F0aGVyIEVHTCBleHRlbnNpb25zCi0gICAgICovCi0KLSAgICBjb25zdCBjaGFyKiBjb25zdCBlZ2xfZXh0ZW5zaW9ucyA9IGVnbFF1ZXJ5U3RyaW5nKAotICAgICAgICAgICAgZGlzcGxheSwgRUdMX0VYVEVOU0lPTlMpOwotICAgIAotICAgIExPR0koIkVHTCBpbmZvcm1hdGlvbnM6Iik7Ci0gICAgTE9HSSgiIyBvZiBjb25maWdzIDogJWQiLCBudW1Db25maWdzKTsKLSAgICBMT0dJKCJ2ZW5kb3IgICAgOiAlcyIsIGVnbFF1ZXJ5U3RyaW5nKGRpc3BsYXksIEVHTF9WRU5ET1IpKTsKLSAgICBMT0dJKCJ2ZXJzaW9uICAgOiAlcyIsIGVnbFF1ZXJ5U3RyaW5nKGRpc3BsYXksIEVHTF9WRVJTSU9OKSk7Ci0gICAgTE9HSSgiZXh0ZW5zaW9uczogJXMiLCBlZ2xfZXh0ZW5zaW9ucyk7Ci0gICAgTE9HSSgiQ2xpZW50IEFQSTogJXMiLCBlZ2xRdWVyeVN0cmluZyhkaXNwbGF5LCBFR0xfQ0xJRU5UX0FQSVMpPzoiTm90IFN1cHBvcnRlZCIpOwotICAgIExPR0koIkVHTFN1cmZhY2U6ICVkLSVkLSVkLSVkLCBjb25maWc9JXAiLCByLCBnLCBiLCBhLCBjb25maWcpOwotICAgIAotCiAgICAgaWYgKG1OYXRpdmVXaW5kb3ctPmlzVXBkYXRlT25EZW1hbmQoKSkgewogICAgICAgICBtRmxhZ3MgfD0gUEFSVElBTF9VUERBVEVTOwogICAgIH0KQEAgLTE3NSw2ICsxNjQsOCBAQAogICAgICAqLwogCiAgICAgc3VyZmFjZSA9IGVnbENyZWF0ZVdpbmRvd1N1cmZhY2UoZGlzcGxheSwgY29uZmlnLCBtTmF0aXZlV2luZG93LmdldCgpLCBOVUxMKTsKKyAgICBlZ2xRdWVyeVN1cmZhY2UoZGlzcGxheSwgc3VyZmFjZSwgRUdMX1dJRFRILCAgJm1XaWR0aCk7CisgICAgZWdsUXVlcnlTdXJmYWNlKGRpc3BsYXksIHN1cmZhY2UsIEVHTF9IRUlHSFQsICZtSGVpZ2h0KTsKIAogICAgIGlmIChtRmxhZ3MgJiBQQVJUSUFMX1VQREFURVMpIHsKICAgICAgICAgLy8gaWYgd2UgaGF2ZSBwYXJ0aWFsIHVwZGF0ZXMsIHdlIGRlZmluaXRlbHkgZG9uJ3QgbmVlZCB0bwpAQCAtMTg4LDMxICsxNzksNiBAQAogICAgICAgICAgICAgbUZsYWdzIHw9IEJVRkZFUl9QUkVTRVJWRUQ7CiAgICAgICAgIH0KICAgICB9Ci0KLSAgICBlZ2xRdWVyeVN1cmZhY2UoZGlzcGxheSwgc3VyZmFjZSwgRUdMX1dJRFRILCAgJm1XaWR0aCk7Ci0gICAgZWdsUXVlcnlTdXJmYWNlKGRpc3BsYXksIHN1cmZhY2UsIEVHTF9IRUlHSFQsICZtSGVpZ2h0KTsKLQotI2lmZGVmIEVHTF9BTkRST0lEX3N3YXBfcmVjdGFuZ2xlICAgIAotICAgIGlmIChzdHJzdHIoZWdsX2V4dGVuc2lvbnMsICJFR0xfQU5EUk9JRF9zd2FwX3JlY3RhbmdsZSIpKSB7Ci0gICAgICAgIGlmIChlZ2xTZXRTd2FwUmVjdGFuZ2xlQU5EUk9JRChkaXNwbGF5LCBzdXJmYWNlLAotICAgICAgICAgICAgICAgIDAsIDAsIG1XaWR0aCwgbUhlaWdodCkgPT0gRUdMX1RSVUUpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgY291bGQgZmFpbCBpZiB0aGlzIGV4dGVuc2lvbiBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMKLSAgICAgICAgICAgIC8vIHNwZWNpZmljIHN1cmZhY2UgKG9mIGNvbmZpZykKLSAgICAgICAgICAgIG1GbGFncyB8PSBTV0FQX1JFQ1RBTkdMRTsKLSAgICAgICAgfQotICAgIH0KLSAgICAvLyB3aGVuIHdlIGhhdmUgdGhlIGNob2ljZSBiZXR3ZWVuIFBBUlRJQUxfVVBEQVRFUyBhbmQgU1dBUF9SRUNUQU5HTEUKLSAgICAvLyBjaG9vc2UgUEFSVElBTF9VUERBVEVTLCB3aGljaCBzaG91bGQgYmUgbW9yZSBlZmZpY2llbnQKLSAgICBpZiAobUZsYWdzICYgUEFSVElBTF9VUERBVEVTKQotICAgICAgICBtRmxhZ3MgJj0gflNXQVBfUkVDVEFOR0xFOwotI2VuZGlmCi0gICAgCi0KLSAgICBMT0dJKCJmbGFncyAgICAgOiAlMDh4IiwgbUZsYWdzKTsKLSAgICAKLSAgICBtRHBpWCA9IG1OYXRpdmVXaW5kb3ctPnhkcGk7Ci0gICAgbURwaVkgPSBtTmF0aXZlV2luZG93LT55ZHBpOwotICAgIG1SZWZyZXNoUmF0ZSA9IGZiRGV2LT5mcHM7IAogICAgIAogICAgIC8qIFJlYWQgZGVuc2l0eSBmcm9tIGJ1aWxkLXNwZWNpZmljIHJvLnNmLmxjZF9kZW5zaXR5IHByb3BlcnR5CiAgICAgICogZXhjZXB0IGlmIGl0IGlzIG92ZXJyaWRkZW4gYnkgcWVtdS5zZi5sY2RfZGVuc2l0eS4KQEAgLTIzNSw2MSArMjAxLDY3IEBACiAgICAgCiAgICAgY29udGV4dCA9IGVnbENyZWF0ZUNvbnRleHQoZGlzcGxheSwgY29uZmlnLCBOVUxMLCBOVUxMKTsKICAgICAKLSAgICAvKgotICAgICAqIEdhdGhlciBPcGVuR0wgRVMgZXh0ZW5zaW9ucwotICAgICAqLwotCi0gICAgZWdsTWFrZUN1cnJlbnQoZGlzcGxheSwgc3VyZmFjZSwgc3VyZmFjZSwgY29udGV4dCk7Ci0gICAgY29uc3QgY2hhciogY29uc3QgIGdsX2V4dGVuc2lvbnMgPSAoY29uc3QgY2hhciopZ2xHZXRTdHJpbmcoR0xfRVhURU5TSU9OUyk7Ci0gICAgY29uc3QgY2hhciogY29uc3QgIGdsX3JlbmRlcmVyID0gKGNvbnN0IGNoYXIqKWdsR2V0U3RyaW5nKEdMX1JFTkRFUkVSKTsKLSAgICBMT0dJKCJPcGVuR0wgaW5mb3JtYXRpb25zOiIpOwotICAgIExPR0koInZlbmRvciAgICA6ICVzIiwgZ2xHZXRTdHJpbmcoR0xfVkVORE9SKSk7Ci0gICAgTE9HSSgicmVuZGVyZXIgIDogJXMiLCBnbF9yZW5kZXJlcik7Ci0gICAgTE9HSSgidmVyc2lvbiAgIDogJXMiLCBnbEdldFN0cmluZyhHTF9WRVJTSU9OKSk7Ci0gICAgTE9HSSgiZXh0ZW5zaW9uczogJXMiLCBnbF9leHRlbnNpb25zKTsKLQotICAgIGdsR2V0SW50ZWdlcnYoR0xfTUFYX1RFWFRVUkVfU0laRSwgJm1NYXhUZXh0dXJlU2l6ZSk7Ci0gICAgZ2xHZXRJbnRlZ2VydihHTF9NQVhfVklFV1BPUlRfRElNUywgJm1NYXhWaWV3cG9ydERpbXMpOwotICAgIExPR0koIkdMX01BWF9URVhUVVJFX1NJWkUgPSAlZCIsIG1NYXhUZXh0dXJlU2l6ZSk7Ci0gICAgTE9HSSgiR0xfTUFYX1ZJRVdQT1JUX0RJTVMgPSAlZCIsIG1NYXhWaWV3cG9ydERpbXMpOwotCi0jaWYgMAotICAgIC8vIGZvciBkcml2ZXJzIHRoYXQgZG9uJ3QgaGF2ZSBwcm9wZXIgc3VwcG9ydCBmb3IgZmx1c2hpbmcgY2FjaGVkIGJ1ZmZlcnMKLSAgICAvLyBvbiBncmFsbG9jIHVubG9jaywgdW5jb21tZW50IHRoaXMgYmxvY2sgYW5kIHRlc3QgZm9yIHRoZSBzcGVjaWZpYwotICAgIC8vIHJlbmRlcmVyIHN1YnN0cmluZwotICAgIGlmIChzdHJzdHIoZ2xfcmVuZGVyZXIsICI8c29tZSB2ZW5kb3Igc3RyaW5nPiIpKSB7Ci0gICAgICAgIExPR0QoIkFzc3VtaW5nIHVuY2FjaGVkIGdyYXBoaWNzIGJ1ZmZlcnMuIik7Ci0gICAgICAgIG1GbGFncyAmPSB+Q0FDSEVEX0JVRkZFUlM7Ci0gICAgfQotI2VuZGlmCi0KLSAgICBpZiAoc3Ryc3RyKGdsX2V4dGVuc2lvbnMsICJHTF9BUkJfdGV4dHVyZV9ub25fcG93ZXJfb2ZfdHdvIikpIHsKLSAgICAgICAgbUZsYWdzIHw9IE5QT1RfRVhURU5TSU9OOwotICAgIH0KLSAgICBpZiAoc3Ryc3RyKGdsX2V4dGVuc2lvbnMsICJHTF9PRVNfZHJhd190ZXh0dXJlIikpIHsKLSAgICAgICAgbUZsYWdzIHw9IERSQVdfVEVYVFVSRV9FWFRFTlNJT047Ci0gICAgfQotI2lmZGVmIEVHTF9BTkRST0lEX2ltYWdlX25hdGl2ZV9idWZmZXIKLSAgICBpZiAoc3Ryc3RyKCBnbF9leHRlbnNpb25zLCAiR0xfT0VTX0VHTF9pbWFnZSIpICYmCi0gICAgICAgIChzdHJzdHIoZWdsX2V4dGVuc2lvbnMsICJFR0xfS0hSX2ltYWdlX2Jhc2UiKSB8fCAKLSAgICAgICAgICAgICAgICBzdHJzdHIoZWdsX2V4dGVuc2lvbnMsICJFR0xfS0hSX2ltYWdlIikpICYmCi0gICAgICAgIHN0cnN0cihlZ2xfZXh0ZW5zaW9ucywgIkVHTF9BTkRST0lEX2ltYWdlX25hdGl2ZV9idWZmZXIiKSkgewotICAgICAgICBtRmxhZ3MgfD0gRElSRUNUX1RFWFRVUkU7Ci0gICAgfQotI2Vsc2UKLSN3YXJuaW5nICJFR0xfQU5EUk9JRF9pbWFnZV9uYXRpdmVfYnVmZmVyIG5vdCBzdXBwb3J0ZWQiCi0jZW5kaWYKLQotCi0gICAgLy8gVW5iaW5kIHRoZSBjb250ZXh0IGZyb20gdGhpcyB0aHJlYWQKLSAgICBlZ2xNYWtlQ3VycmVudChkaXNwbGF5LCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX1NVUkZBQ0UsIEVHTF9OT19DT05URVhUKTsKLQogICAgIG1EaXNwbGF5ID0gZGlzcGxheTsKICAgICBtQ29uZmlnICA9IGNvbmZpZzsKICAgICBtU3VyZmFjZSA9IHN1cmZhY2U7CiAgICAgbUNvbnRleHQgPSBjb250ZXh0OwogICAgIG1Gb3JtYXQgID0gZmJEZXYtPmZvcm1hdDsKICAgICBtUGFnZUZsaXBDb3VudCA9IDA7CisKKyAgICAvKgorICAgICAqIEdhdGhlciBPcGVuR0wgRVMgZXh0ZW5zaW9ucworICAgICAqLworCisgICAgZWdsTWFrZUN1cnJlbnQoZGlzcGxheSwgc3VyZmFjZSwgc3VyZmFjZSwgY29udGV4dCk7CisKKyAgICBHTEV4dGVuc2lvbnMmIGV4dGVuc2lvbnMoR0xFeHRlbnNpb25zOjpnZXRJbnN0YW5jZSgpKTsKKyAgICBleHRlbnNpb25zLmluaXRXaXRoR0xTdHJpbmdzKAorICAgICAgICAgICAgZ2xHZXRTdHJpbmcoR0xfVkVORE9SKSwKKyAgICAgICAgICAgIGdsR2V0U3RyaW5nKEdMX1JFTkRFUkVSKSwKKyAgICAgICAgICAgIGdsR2V0U3RyaW5nKEdMX1ZFUlNJT04pLAorICAgICAgICAgICAgZ2xHZXRTdHJpbmcoR0xfRVhURU5TSU9OUyksCisgICAgICAgICAgICBlZ2xRdWVyeVN0cmluZyhkaXNwbGF5LCBFR0xfVkVORE9SKSwKKyAgICAgICAgICAgIGVnbFF1ZXJ5U3RyaW5nKGRpc3BsYXksIEVHTF9WRVJTSU9OKSwKKyAgICAgICAgICAgIGVnbFF1ZXJ5U3RyaW5nKGRpc3BsYXksIEVHTF9FWFRFTlNJT05TKSk7CisKKyAgICBnbEdldEludGVnZXJ2KEdMX01BWF9URVhUVVJFX1NJWkUsICZtTWF4VGV4dHVyZVNpemUpOworICAgIGdsR2V0SW50ZWdlcnYoR0xfTUFYX1ZJRVdQT1JUX0RJTVMsICZtTWF4Vmlld3BvcnREaW1zKTsKKworCisjaWZkZWYgRUdMX0FORFJPSURfc3dhcF9yZWN0YW5nbGUKKyAgICBpZiAoZXh0ZW5zaW9ucy5oYXNFeHRlbnNpb24oIkVHTF9BTkRST0lEX3N3YXBfcmVjdGFuZ2xlIikpIHsKKyAgICAgICAgaWYgKGVnbFNldFN3YXBSZWN0YW5nbGVBTkRST0lEKGRpc3BsYXksIHN1cmZhY2UsCisgICAgICAgICAgICAgICAgMCwgMCwgbVdpZHRoLCBtSGVpZ2h0KSA9PSBFR0xfVFJVRSkgeworICAgICAgICAgICAgLy8gVGhpcyBjb3VsZCBmYWlsIGlmIHRoaXMgZXh0ZW5zaW9uIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhpcworICAgICAgICAgICAgLy8gc3BlY2lmaWMgc3VyZmFjZSAob2YgY29uZmlnKQorICAgICAgICAgICAgbUZsYWdzIHw9IFNXQVBfUkVDVEFOR0xFOworICAgICAgICB9CisgICAgfQorICAgIC8vIHdoZW4gd2UgaGF2ZSB0aGUgY2hvaWNlIGJldHdlZW4gUEFSVElBTF9VUERBVEVTIGFuZCBTV0FQX1JFQ1RBTkdMRQorICAgIC8vIGNob29zZSBQQVJUSUFMX1VQREFURVMsIHdoaWNoIHNob3VsZCBiZSBtb3JlIGVmZmljaWVudAorICAgIGlmIChtRmxhZ3MgJiBQQVJUSUFMX1VQREFURVMpCisgICAgICAgIG1GbGFncyAmPSB+U1dBUF9SRUNUQU5HTEU7CisjZW5kaWYKKworICAgIExPR0koIkVHTCBpbmZvcm1hdGlvbnM6Iik7CisgICAgTE9HSSgiIyBvZiBjb25maWdzIDogJWQiLCBudW1Db25maWdzKTsKKyAgICBMT0dJKCJ2ZW5kb3IgICAgOiAlcyIsIGV4dGVuc2lvbnMuZ2V0RWdsVmVuZG9yKCkpOworICAgIExPR0koInZlcnNpb24gICA6ICVzIiwgZXh0ZW5zaW9ucy5nZXRFZ2xWZXJzaW9uKCkpOworICAgIExPR0koImV4dGVuc2lvbnM6ICVzIiwgZXh0ZW5zaW9ucy5nZXRFZ2xFeHRlbnNpb24oKSk7CisgICAgTE9HSSgiQ2xpZW50IEFQSTogJXMiLCBlZ2xRdWVyeVN0cmluZyhkaXNwbGF5LCBFR0xfQ0xJRU5UX0FQSVMpPzoiTm90IFN1cHBvcnRlZCIpOworICAgIExPR0koIkVHTFN1cmZhY2U6ICVkLSVkLSVkLSVkLCBjb25maWc9JXAiLCByLCBnLCBiLCBhLCBjb25maWcpOworCisgICAgTE9HSSgiT3BlbkdMIGluZm9ybWF0aW9uczoiKTsKKyAgICBMT0dJKCJ2ZW5kb3IgICAgOiAlcyIsIGV4dGVuc2lvbnMuZ2V0VmVuZG9yKCkpOworICAgIExPR0koInJlbmRlcmVyICA6ICVzIiwgZXh0ZW5zaW9ucy5nZXRSZW5kZXJlcigpKTsKKyAgICBMT0dJKCJ2ZXJzaW9uICAgOiAlcyIsIGV4dGVuc2lvbnMuZ2V0VmVyc2lvbigpKTsKKyAgICBMT0dJKCJleHRlbnNpb25zOiAlcyIsIGV4dGVuc2lvbnMuZ2V0RXh0ZW5zaW9uKCkpOworICAgIExPR0koIkdMX01BWF9URVhUVVJFX1NJWkUgPSAlZCIsIG1NYXhUZXh0dXJlU2l6ZSk7CisgICAgTE9HSSgiR0xfTUFYX1ZJRVdQT1JUX0RJTVMgPSAlZCIsIG1NYXhWaWV3cG9ydERpbXMpOworICAgIExPR0koImZsYWdzID0gJTA4eCIsIG1GbGFncyk7CisKKyAgICAvLyBVbmJpbmQgdGhlIGNvbnRleHQgZnJvbSB0aGlzIHRocmVhZAorICAgIGVnbE1ha2VDdXJyZW50KGRpc3BsYXksIEVHTF9OT19TVVJGQUNFLCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX0NPTlRFWFQpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvbGlicy9zdXJmYWNlZmxpbmdlci9EaXNwbGF5SGFyZHdhcmUvRGlzcGxheUhhcmR3YXJlLmggYi9saWJzL3N1cmZhY2VmbGluZ2VyL0Rpc3BsYXlIYXJkd2FyZS9EaXNwbGF5SGFyZHdhcmUuaAppbmRleCBkZjA0NmFmLi42NmJmNTIxIDEwMDY0NAotLS0gYS9saWJzL3N1cmZhY2VmbGluZ2VyL0Rpc3BsYXlIYXJkd2FyZS9EaXNwbGF5SGFyZHdhcmUuaAorKysgYi9saWJzL3N1cmZhY2VmbGluZ2VyL0Rpc3BsYXlIYXJkd2FyZS9EaXNwbGF5SGFyZHdhcmUuaApAQCAtMjksNiArMjksOCBAQAogCiAjaW5jbHVkZSA8cGl4ZWxmbGluZ2VyL3BpeGVsZmxpbmdlci5oPgogCisjaW5jbHVkZSAiR0xFeHRlbnNpb25zLmgiCisKICNpbmNsdWRlICJEaXNwbGF5SGFyZHdhcmUvRGlzcGxheUhhcmR3YXJlQmFzZS5oIgogCiBzdHJ1Y3Qgb3ZlcmxheV9jb250cm9sX2RldmljZV90OwpAQCAtNDMsMTUgKzQ1LDExIEBACiB7CiBwdWJsaWM6CiAgICAgZW51bSB7Ci0gICAgICAgIERJUkVDVF9URVhUVVJFICAgICAgICAgID0gMHgwMDAwMDAwMiwKLSAgICAgICAgQ09QWV9CSVRTX0VYVEVOU0lPTiAgICAgPSAweDAwMDAwMDA4LAotICAgICAgICBOUE9UX0VYVEVOU0lPTiAgICAgICAgICA9IDB4MDAwMDAxMDAsCi0gICAgICAgIERSQVdfVEVYVFVSRV9FWFRFTlNJT04gID0gMHgwMDAwMDIwMCwKLSAgICAgICAgQlVGRkVSX1BSRVNFUlZFRCAgICAgICAgPSAweDAwMDEwMDAwLAotICAgICAgICBQQVJUSUFMX1VQREFURVMgICAgICAgICA9IDB4MDAwMjAwMDAsICAgLy8gdmlkZW8gZHJpdmVyIGZlYXR1cmUKLSAgICAgICAgU0xPV19DT05GSUcgICAgICAgICAgICAgPSAweDAwMDQwMDAwLCAgIC8vIHNvZnR3YXJlCi0gICAgICAgIFNXQVBfUkVDVEFOR0xFICAgICAgICAgID0gMHgwMDA4MDAwMCwKLSAgICAgICAgQ0FDSEVEX0JVRkZFUlMgICAgICAgICAgPSAweDAwMTAwMDAwCisgICAgICAgIENPUFlfQklUU19FWFRFTlNJT04gICAgICAgICA9IDB4MDAwMDAwMDgsCisgICAgICAgIEJVRkZFUl9QUkVTRVJWRUQgICAgICAgICAgICA9IDB4MDAwMTAwMDAsCisgICAgICAgIFBBUlRJQUxfVVBEQVRFUyAgICAgICAgICAgICA9IDB4MDAwMjAwMDAsICAgLy8gdmlkZW8gZHJpdmVyIGZlYXR1cmUKKyAgICAgICAgU0xPV19DT05GSUcgICAgICAgICAgICAgICAgID0gMHgwMDA0MDAwMCwgICAvLyBzb2Z0d2FyZQorICAgICAgICBTV0FQX1JFQ1RBTkdMRSAgICAgICAgICAgICAgPSAweDAwMDgwMDAwLAogICAgIH07CiAKICAgICBEaXNwbGF5SGFyZHdhcmUoCmRpZmYgLS1naXQgYS9saWJzL3N1cmZhY2VmbGluZ2VyL0dMRXh0ZW5zaW9ucy5jcHAgYi9saWJzL3N1cmZhY2VmbGluZ2VyL0dMRXh0ZW5zaW9ucy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Y0ZjlmYwotLS0gL2Rldi9udWxsCisrKyBiL2xpYnMvc3VyZmFjZWZsaW5nZXIvR0xFeHRlbnNpb25zLmNwcApAQCAtMCwwICsxLDEzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorCisjaW5jbHVkZSAiR0xFeHRlbnNpb25zLmgiCisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitBTkRST0lEX1NJTkdMRVRPTl9TVEFUSUNfSU5TVEFOQ0UoIEdMRXh0ZW5zaW9ucyApCisKK0dMRXh0ZW5zaW9uczo6R0xFeHRlbnNpb25zKCkKKyAgICA6IG1IYXZlVGV4dHVyZUV4dGVybmFsKGZhbHNlKSwKKyAgICAgIG1IYXZlTnBvdChmYWxzZSksCisgICAgICBtSGF2ZURpcmVjdFRleHR1cmUoZmFsc2UpCit7Cit9CisKK3ZvaWQgR0xFeHRlbnNpb25zOjppbml0V2l0aEdMU3RyaW5ncygKKyAgICAgICAgR0x1Ynl0ZSBjb25zdCogdmVuZG9yLAorICAgICAgICBHTHVieXRlIGNvbnN0KiByZW5kZXJlciwKKyAgICAgICAgR0x1Ynl0ZSBjb25zdCogdmVyc2lvbiwKKyAgICAgICAgR0x1Ynl0ZSBjb25zdCogZXh0ZW5zaW9ucywKKyAgICAgICAgY2hhciBjb25zdCogZWdsX3ZlbmRvciwKKyAgICAgICAgY2hhciBjb25zdCogZWdsX3ZlcnNpb24sCisgICAgICAgIGNoYXIgY29uc3QqIGVnbF9leHRlbnNpb25zKQoreworICAgIG1WZW5kb3IgICAgID0gKGNoYXIgY29uc3QqKXZlbmRvcjsKKyAgICBtUmVuZGVyZXIgICA9IChjaGFyIGNvbnN0KilyZW5kZXJlcjsKKyAgICBtVmVyc2lvbiAgICA9IChjaGFyIGNvbnN0Kil2ZXJzaW9uOworICAgIG1FeHRlbnNpb25zID0gKGNoYXIgY29uc3QqKWV4dGVuc2lvbnM7CisgICAgbUVnbFZlbmRvciAgICAgPSBlZ2xfdmVuZG9yOworICAgIG1FZ2xWZXJzaW9uICAgID0gZWdsX3ZlcnNpb247CisgICAgbUVnbEV4dGVuc2lvbnMgPSBlZ2xfZXh0ZW5zaW9uczsKKworICAgIGNoYXIgY29uc3QqIGN1cnIgPSAoY2hhciBjb25zdCopZXh0ZW5zaW9uczsKKyAgICBjaGFyIGNvbnN0KiBoZWFkID0gY3VycjsKKyAgICBkbyB7CisgICAgICAgIGhlYWQgPSBzdHJjaHIoY3VyciwgJyAnKTsKKyAgICAgICAgU3RyaW5nOCBzKGN1cnIsIGhlYWQgPyBoZWFkLWN1cnIgOiBzdHJsZW4oY3VycikpOworICAgICAgICBpZiAocy5sZW5ndGgoKSkgeworICAgICAgICAgICAgbUV4dGVuc2lvbkxpc3QuYWRkKHMpOworICAgICAgICB9CisgICAgICAgIGN1cnIgPSBoZWFkKzE7CisgICAgfSB3aGlsZSAoaGVhZCk7CisKKyAgICBjdXJyID0gZWdsX2V4dGVuc2lvbnM7CisgICAgaGVhZCA9IGN1cnI7CisgICAgZG8geworICAgICAgICBoZWFkID0gc3RyY2hyKGN1cnIsICcgJyk7CisgICAgICAgIFN0cmluZzggcyhjdXJyLCBoZWFkID8gaGVhZC1jdXJyIDogc3RybGVuKGN1cnIpKTsKKyAgICAgICAgaWYgKHMubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIG1FeHRlbnNpb25MaXN0LmFkZChzKTsKKyAgICAgICAgfQorICAgICAgICBjdXJyID0gaGVhZCsxOworICAgIH0gd2hpbGUgKGhlYWQpOworCisjaWZkZWYgRUdMX0FORFJPSURfaW1hZ2VfbmF0aXZlX2J1ZmZlcgorICAgIGlmIChoYXNFeHRlbnNpb24oIkdMX09FU19FR0xfaW1hZ2UiKSAmJgorICAgICAgICAoaGFzRXh0ZW5zaW9uKCJFR0xfS0hSX2ltYWdlX2Jhc2UiKSB8fCBoYXNFeHRlbnNpb24oIkVHTF9LSFJfaW1hZ2UiKSkgJiYKKyAgICAgICAgaGFzRXh0ZW5zaW9uKCJFR0xfQU5EUk9JRF9pbWFnZV9uYXRpdmVfYnVmZmVyIikpCisgICAgeworICAgICAgICBtSGF2ZURpcmVjdFRleHR1cmUgPSB0cnVlOworICAgIH0KKyNlbHNlCisjd2FybmluZyAiRUdMX0FORFJPSURfaW1hZ2VfbmF0aXZlX2J1ZmZlciBub3Qgc3VwcG9ydGVkIgorI2VuZGlmCisKKyAgICBpZiAoaGFzRXh0ZW5zaW9uKCJHTF9BUkJfdGV4dHVyZV9ub25fcG93ZXJfb2ZfdHdvIikpIHsKKyAgICAgICAgbUhhdmVOcG90ID0gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoaGFzRXh0ZW5zaW9uKCJHTF9PRVNfdGV4dHVyZV9leHRlcm5hbCIpKSB7CisgICAgICAgIG1IYXZlVGV4dHVyZUV4dGVybmFsID0gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKHN0cnN0cihtUmVuZGVyZXIuc3RyaW5nKCksICJBZHJlbm8iKSkgeworICAgICAgICAvLyBoYWNrIGZvciBBZHJlbm8gMjAwCisgICAgICAgIG1IYXZlVGV4dHVyZUV4dGVybmFsID0gdHJ1ZTsKKyAgICB9Cit9CisKK2Jvb2wgR0xFeHRlbnNpb25zOjpoYXNFeHRlbnNpb24oY2hhciBjb25zdCogZXh0ZW5zaW9uKSBjb25zdAoreworICAgIGNvbnN0IFN0cmluZzggcyhleHRlbnNpb24pOworICAgIHJldHVybiBtRXh0ZW5zaW9uTGlzdC5pbmRleE9mKHMpID49IDA7Cit9CisKK2NoYXIgY29uc3QqIEdMRXh0ZW5zaW9uczo6Z2V0VmVuZG9yKCkgY29uc3QgeworICAgIHJldHVybiBtVmVuZG9yLnN0cmluZygpOworfQorCitjaGFyIGNvbnN0KiBHTEV4dGVuc2lvbnM6OmdldFJlbmRlcmVyKCkgY29uc3QgeworICAgIHJldHVybiBtUmVuZGVyZXIuc3RyaW5nKCk7Cit9CisKK2NoYXIgY29uc3QqIEdMRXh0ZW5zaW9uczo6Z2V0VmVyc2lvbigpIGNvbnN0IHsKKyAgICByZXR1cm4gbVZlcnNpb24uc3RyaW5nKCk7Cit9CisKK2NoYXIgY29uc3QqIEdMRXh0ZW5zaW9uczo6Z2V0RXh0ZW5zaW9uKCkgY29uc3QgeworICAgIHJldHVybiBtRXh0ZW5zaW9ucy5zdHJpbmcoKTsKK30KKworY2hhciBjb25zdCogR0xFeHRlbnNpb25zOjpnZXRFZ2xWZW5kb3IoKSBjb25zdCB7CisgICAgcmV0dXJuIG1FZ2xWZW5kb3Iuc3RyaW5nKCk7Cit9CisKK2NoYXIgY29uc3QqIEdMRXh0ZW5zaW9uczo6Z2V0RWdsVmVyc2lvbigpIGNvbnN0IHsKKyAgICByZXR1cm4gbUVnbFZlcnNpb24uc3RyaW5nKCk7Cit9CisKK2NoYXIgY29uc3QqIEdMRXh0ZW5zaW9uczo6Z2V0RWdsRXh0ZW5zaW9uKCkgY29uc3QgeworICAgIHJldHVybiBtRWdsRXh0ZW5zaW9ucy5zdHJpbmcoKTsKK30KKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK307IC8vIG5hbWVzcGFjZSBhbmRyb2lkCmRpZmYgLS1naXQgYS9saWJzL3N1cmZhY2VmbGluZ2VyL0dMRXh0ZW5zaW9ucy5oIGIvbGlicy9zdXJmYWNlZmxpbmdlci9HTEV4dGVuc2lvbnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYmIyODRlCi0tLSAvZGV2L251bGwKKysrIGIvbGlicy9zdXJmYWNlZmxpbmdlci9HTEV4dGVuc2lvbnMuaApAQCAtMCwwICsxLDk0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2lmbmRlZiBBTkRST0lEX1NGX0dMRVhURU5TSU9OX0gKKyNkZWZpbmUgQU5EUk9JRF9TRl9HTEVYVEVOU0lPTl9ICisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKworI2luY2x1ZGUgPHV0aWxzL1N0cmluZzguaD4KKyNpbmNsdWRlIDx1dGlscy9Tb3J0ZWRWZWN0b3IuaD4KKyNpbmNsdWRlIDx1dGlscy9TaW5nbGV0b24uaD4KKworI2luY2x1ZGUgPEVHTC9lZ2wuaD4KKyNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+CisjaW5jbHVkZSA8R0xFUy9nbC5oPgorI2luY2x1ZGUgPEdMRVMvZ2xleHQuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NsYXNzIEdMRXh0ZW5zaW9ucyA6IHB1YmxpYyBTaW5nbGV0b248R0xFeHRlbnNpb25zPgoreworICAgIGZyaWVuZCBjbGFzcyBTaW5nbGV0b248R0xFeHRlbnNpb25zPjsKKworICAgIGJvb2wgbUhhdmVUZXh0dXJlRXh0ZXJuYWwgICA6IDE7CisgICAgYm9vbCBtSGF2ZU5wb3QgICAgICAgICAgICAgIDogMTsKKyAgICBib29sIG1IYXZlRGlyZWN0VGV4dHVyZSAgICAgOiAxOworCisgICAgU3RyaW5nOCBtVmVuZG9yOworICAgIFN0cmluZzggbVJlbmRlcmVyOworICAgIFN0cmluZzggbVZlcnNpb247CisgICAgU3RyaW5nOCBtRXh0ZW5zaW9uczsKKyAgICBTdHJpbmc4IG1FZ2xWZW5kb3I7CisgICAgU3RyaW5nOCBtRWdsVmVyc2lvbjsKKyAgICBTdHJpbmc4IG1FZ2xFeHRlbnNpb25zOworICAgIFNvcnRlZFZlY3RvcjxTdHJpbmc4PiBtRXh0ZW5zaW9uTGlzdDsKKworICAgIEdMRXh0ZW5zaW9ucyhjb25zdCBHTEV4dGVuc2lvbnMmKTsKKyAgICBHTEV4dGVuc2lvbnMmIG9wZXJhdG9yID0gKGNvbnN0IEdMRXh0ZW5zaW9ucyYpOworCitwcm90ZWN0ZWQ6CisgICAgR0xFeHRlbnNpb25zKCk7CisKK3B1YmxpYzoKKyAgICBpbmxpbmUgYm9vbCBoYXZlVGV4dHVyZUV4dGVybmFsKCkgY29uc3QgeworICAgICAgICByZXR1cm4gbUhhdmVUZXh0dXJlRXh0ZXJuYWw7CisgICAgfQorICAgIGlubGluZSBib29sIGhhdmVOcG90KCkgY29uc3QgeworICAgICAgICByZXR1cm4gbUhhdmVOcG90OworICAgIH0KKyAgICBpbmxpbmUgYm9vbCBoYXZlRGlyZWN0VGV4dHVyZSgpIGNvbnN0IHsKKyAgICAgICAgcmV0dXJuIG1IYXZlRGlyZWN0VGV4dHVyZTsKKyAgICB9CisKKyAgICB2b2lkIGluaXRXaXRoR0xTdHJpbmdzKAorICAgICAgICAgICAgR0x1Ynl0ZSBjb25zdCogdmVuZG9yLAorICAgICAgICAgICAgR0x1Ynl0ZSBjb25zdCogcmVuZGVyZXIsCisgICAgICAgICAgICBHTHVieXRlIGNvbnN0KiB2ZXJzaW9uLAorICAgICAgICAgICAgR0x1Ynl0ZSBjb25zdCogZXh0ZW5zaW9ucywKKyAgICAgICAgICAgIGNoYXIgY29uc3QqIGVnbF92ZW5kb3IsCisgICAgICAgICAgICBjaGFyIGNvbnN0KiBlZ2xfdmVyc2lvbiwKKyAgICAgICAgICAgIGNoYXIgY29uc3QqIGVnbF9leHRlbnNpb25zKTsKKworICAgIGNoYXIgY29uc3QqIGdldFZlbmRvcigpIGNvbnN0OworICAgIGNoYXIgY29uc3QqIGdldFJlbmRlcmVyKCkgY29uc3Q7CisgICAgY2hhciBjb25zdCogZ2V0VmVyc2lvbigpIGNvbnN0OworICAgIGNoYXIgY29uc3QqIGdldEV4dGVuc2lvbigpIGNvbnN0OworCisgICAgY2hhciBjb25zdCogZ2V0RWdsVmVuZG9yKCkgY29uc3Q7CisgICAgY2hhciBjb25zdCogZ2V0RWdsVmVyc2lvbigpIGNvbnN0OworICAgIGNoYXIgY29uc3QqIGdldEVnbEV4dGVuc2lvbigpIGNvbnN0OworCisgICAgYm9vbCBoYXNFeHRlbnNpb24oY2hhciBjb25zdCogZXh0ZW5zaW9uKSBjb25zdDsKK307CisKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCit9OyAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCisjZW5kaWYgLy8gQU5EUk9JRF9TRl9HTEVYVEVOU0lPTl9ICmRpZmYgLS1naXQgYS9saWJzL3N1cmZhY2VmbGluZ2VyL0xheWVyLmNwcCBiL2xpYnMvc3VyZmFjZWZsaW5nZXIvTGF5ZXIuY3BwCmluZGV4IGNlN2U5YWEuLjc1OGRhNGUgMTAwNjQ0Ci0tLSBhL2xpYnMvc3VyZmFjZWZsaW5nZXIvTGF5ZXIuY3BwCisrKyBiL2xpYnMvc3VyZmFjZWZsaW5nZXIvTGF5ZXIuY3BwCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSA8c3VyZmFjZWZsaW5nZXIvU3VyZmFjZS5oPgogCiAjaW5jbHVkZSAiY2x6LmgiCisjaW5jbHVkZSAiR0xFeHRlbnNpb25zLmgiCiAjaW5jbHVkZSAiTGF5ZXIuaCIKICNpbmNsdWRlICJTdXJmYWNlRmxpbmdlci5oIgogI2luY2x1ZGUgIkRpc3BsYXlIYXJkd2FyZS9EaXNwbGF5SGFyZHdhcmUuaCIKQEAgLTQ3LDQ3ICs0OCw3MyBAQAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotY29uc3QgdWludDMyX3QgTGF5ZXI6OnR5cGVJbmZvID0gTGF5ZXJCYXNlQ2xpZW50Ojp0eXBlSW5mbyB8IDQ7Ci1jb25zdCBjaGFyKiBjb25zdCBMYXllcjo6dHlwZUlEID0gIkxheWVyIjsKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLUxheWVyOjpMYXllcihTdXJmYWNlRmxpbmdlciogZmxpbmdlciwgRGlzcGxheUlEIGRpc3BsYXksIAotICAgICAgICBjb25zdCBzcDxDbGllbnQ+JiBjLCBpbnQzMl90IGkpCi0gICAgOiAgIExheWVyQmFzZUNsaWVudChmbGluZ2VyLCBkaXNwbGF5LCBjLCBpKSwKLSAgICAgICAgbVNlY3VyZShmYWxzZSksCi0gICAgICAgIG1Ob0VHTEltYWdlRm9yU3dCdWZmZXJzKGZhbHNlKSwKK0xheWVyOjpMYXllcihTdXJmYWNlRmxpbmdlciogZmxpbmdlciwKKyAgICAgICAgRGlzcGxheUlEIGRpc3BsYXksIGNvbnN0IHNwPENsaWVudD4mIGNsaWVudCkKKyAgICA6ICAgTGF5ZXJCYXNlQ2xpZW50KGZsaW5nZXIsIGRpc3BsYXksIGNsaWVudCksCisgICAgICAgIG1HTEV4dGVuc2lvbnMoR0xFeHRlbnNpb25zOjpnZXRJbnN0YW5jZSgpKSwKICAgICAgICAgbU5lZWRzQmxlbmRpbmcodHJ1ZSksCi0gICAgICAgIG1OZWVkc0RpdGhlcmluZyhmYWxzZSkKKyAgICAgICAgbU5lZWRzRGl0aGVyaW5nKGZhbHNlKSwKKyAgICAgICAgbVNlY3VyZShmYWxzZSksCisgICAgICAgIG1UZXh0dXJlTWFuYWdlcigpLAorICAgICAgICBtQnVmZmVyTWFuYWdlcihtVGV4dHVyZU1hbmFnZXIpLAorICAgICAgICBtV2lkdGgoMCksIG1IZWlnaHQoMCksIG1GaXhlZFNpemUoZmFsc2UpCiB7Ci0gICAgLy8gbm8gT3BlbkdMIG9wZXJhdGlvbiBpcyBwb3NzaWJsZSBoZXJlLCBzaW5jZSB3ZSBtaWdodCBub3QgYmUKLSAgICAvLyBpbiB0aGUgT3BlbkdMIHRocmVhZC4KLSAgICBtRnJvbnRCdWZmZXJJbmRleCA9IGxjYmxrLT5nZXRGcm9udEJ1ZmZlcigpOwogfQogCiBMYXllcjo6fkxheWVyKCkKIHsKLSAgICBkZXN0cm95KCk7Ci0gICAgLy8gdGhlIGFjdHVhbCBidWZmZXJzIHdpbGwgYmUgZGVzdHJveWVkIGhlcmUKKyAgICAvLyBGSVhNRTogbXVzdCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiBVSSB0aHJlYWQKKyAgICBFR0xEaXNwbGF5IGRweShtRmxpbmdlci0+Z3JhcGhpY1BsYW5lKDApLmdldEVHTERpc3BsYXkoKSk7CisgICAgbUJ1ZmZlck1hbmFnZXIuZGVzdHJveShkcHkpOworCisgICAgLy8gd2UgY2FuIHVzZSBnZXRVc2VyQ2xpZW50VW5zYWZlIGhlcmUgYmVjYXVzZSB3ZSBrbm93IHdlJ3JlCisgICAgLy8gc2luZ2xlLXRocmVhZGVkIGF0IHRoYXQgcG9pbnQuCisgICAgc3A8VXNlckNsaWVudD4gb3VyQ2xpZW50KG1Vc2VyQ2xpZW50UmVmLmdldFVzZXJDbGllbnRVbnNhZmUoKSk7CisgICAgaWYgKG91ckNsaWVudCAhPSAwKSB7CisgICAgICAgIG91ckNsaWVudC0+ZGV0YWNoTGF5ZXIodGhpcyk7CisgICAgfQogfQogCi12b2lkIExheWVyOjpkZXN0cm95KCkKK3N0YXR1c190IExheWVyOjpzZXRUb2tlbihjb25zdCBzcDxVc2VyQ2xpZW50PiYgdXNlckNsaWVudCwKKyAgICAgICAgU2hhcmVkQ2xpZW50KiBzaGFyZWRDbGllbnQsIGludDMyX3QgdG9rZW4pCiB7Ci0gICAgZm9yIChzaXplX3QgaT0wIDsgaTxOVU1fQlVGRkVSUyA7IGkrKykgewotICAgICAgICBpZiAobVRleHR1cmVzW2ldLm5hbWUgIT0gLTFVKSB7Ci0gICAgICAgICAgICBnbERlbGV0ZVRleHR1cmVzKDEsICZtVGV4dHVyZXNbaV0ubmFtZSk7Ci0gICAgICAgICAgICBtVGV4dHVyZXNbaV0ubmFtZSA9IC0xVTsKLSAgICAgICAgfQotICAgICAgICBpZiAobVRleHR1cmVzW2ldLmltYWdlICE9IEVHTF9OT19JTUFHRV9LSFIpIHsKLSAgICAgICAgICAgIEVHTERpc3BsYXkgZHB5KG1GbGluZ2VyLT5ncmFwaGljUGxhbmUoMCkuZ2V0RUdMRGlzcGxheSgpKTsKLSAgICAgICAgICAgIGVnbERlc3Ryb3lJbWFnZUtIUihkcHksIG1UZXh0dXJlc1tpXS5pbWFnZSk7Ci0gICAgICAgICAgICBtVGV4dHVyZXNbaV0uaW1hZ2UgPSBFR0xfTk9fSU1BR0VfS0hSOwotICAgICAgICB9Ci0gICAgICAgIE11dGV4OjpBdXRvbG9jayBfbChtTG9jayk7Ci0gICAgICAgIG1CdWZmZXJzW2ldLmNsZWFyKCk7Ci0gICAgICAgIG1XaWR0aCA9IG1IZWlnaHQgPSAwOworICAgIHNwPFNoYXJlZEJ1ZmZlclNlcnZlcj4gbGNibGsgPSBuZXcgU2hhcmVkQnVmZmVyU2VydmVyKAorICAgICAgICAgICAgc2hhcmVkQ2xpZW50LCB0b2tlbiwgbUJ1ZmZlck1hbmFnZXIuZ2V0RGVmYXVsdEJ1ZmZlckNvdW50KCksCisgICAgICAgICAgICBnZXRJZGVudGl0eSgpKTsKKworICAgIHN0YXR1c190IGVyciA9IG1Vc2VyQ2xpZW50UmVmLnNldFRva2VuKHVzZXJDbGllbnQsIGxjYmxrLCB0b2tlbik7CisKKyAgICBMT0dFX0lGKGVyciAhPSBOT19FUlJPUiwKKyAgICAgICAgICAgICJDbGllbnRSZWY6OnNldFRva2VuKCVwLCAlcCwgJXUpIGZhaWxlZCIsCisgICAgICAgICAgICB1c2VyQ2xpZW50LmdldCgpLCBsY2Jsay5nZXQoKSwgdG9rZW4pOworCisgICAgaWYgKGVyciA9PSBOT19FUlJPUikgeworICAgICAgICAvLyB3ZSBuZWVkIHRvIGZyZWUgdGhlIGJ1ZmZlcnMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgc3VyZmFjZQogICAgIH0KLSAgICBtU3VyZmFjZS5jbGVhcigpOworCisgICAgcmV0dXJuIGVycjsKK30KKworaW50MzJfdCBMYXllcjo6Z2V0VG9rZW4oKSBjb25zdAoreworICAgIHJldHVybiBtVXNlckNsaWVudFJlZi5nZXRUb2tlbigpOworfQorCitzcDxVc2VyQ2xpZW50PiBMYXllcjo6Z2V0Q2xpZW50KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbVVzZXJDbGllbnRSZWYuZ2V0Q2xpZW50KCk7Cit9CisKKy8vIGNhbGxlZCB3aXRoIFN1cmZhY2VGbGluZ2VyOjptU3RhdGVMb2NrIGFzIHNvb24gYXMgdGhlIGxheWVyIGlzIGVudGVyZWQKKy8vIGluIHRoZSBwdXJnYXRvcnkgbGlzdAordm9pZCBMYXllcjo6b25SZW1vdmVkKCkKK3sKKyAgICBDbGllbnRSZWY6OkFjY2VzcyBzaGFyZWRDbGllbnQobVVzZXJDbGllbnRSZWYpOworICAgIFNoYXJlZEJ1ZmZlclNlcnZlciogbGNibGsoc2hhcmVkQ2xpZW50LmdldCgpKTsKKyAgICBpZiAobGNibGspIHsKKyAgICAgICAgLy8gd2FrZSB1cCB0aGUgY29uZGl0aW9uCisgICAgICAgIGxjYmxrLT5zZXRTdGF0dXMoTk9fSU5JVCk7CisgICAgfQogfQogCiBzcDxMYXllckJhc2VDbGllbnQ6OlN1cmZhY2U+IExheWVyOjpjcmVhdGVTdXJmYWNlKCkgY29uc3QKQEAgLTk3LDkgKzEyNCwxNyBAQAogCiBzdGF0dXNfdCBMYXllcjo6ZGl0Y2goKQogeworICAgIC8vIE5PVEU6IENhbGxlZCBmcm9tIHRoZSBtYWluIFVJIHRocmVhZAorCiAgICAgLy8gdGhlIGxheWVyIGlzIG5vdCBvbiBzY3JlZW4gYW55bW9yZS4gZnJlZSBhcyBtdWNoIHJlc291cmNlcyBhcyBwb3NzaWJsZQogICAgIG1GcmVlemVMb2NrLmNsZWFyKCk7Ci0gICAgZGVzdHJveSgpOworCisgICAgRUdMRGlzcGxheSBkcHkobUZsaW5nZXItPmdyYXBoaWNQbGFuZSgwKS5nZXRFR0xEaXNwbGF5KCkpOworICAgIG1CdWZmZXJNYW5hZ2VyLmRlc3Ryb3koZHB5KTsKKyAgICBtU3VyZmFjZS5jbGVhcigpOworCisgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1Mb2NrKTsKKyAgICBtV2lkdGggPSBtSGVpZ2h0ID0gMDsKICAgICByZXR1cm4gTk9fRVJST1I7CiB9CiAKQEAgLTEyNywyOCArMTYyLDI0IEBACiAgICAgY29uc3QgdWludDMyX3QgaHdGbGFncyA9IGh3LmdldEZsYWdzKCk7CiAgICAgCiAgICAgbUZvcm1hdCA9IGZvcm1hdDsKKyAgICBtUmVxRm9ybWF0ID0gZm9ybWF0OwogICAgIG1XaWR0aCAgPSB3OwogICAgIG1IZWlnaHQgPSBoOwogICAgIG1TZWN1cmUgPSAoZmxhZ3MgJiBJU3VyZmFjZUNvbXBvc2VyOjplU2VjdXJlKSA/IHRydWUgOiBmYWxzZTsKICAgICBtTmVlZHNCbGVuZGluZyA9IChpbmZvLmhfYWxwaGEgLSBpbmZvLmxfYWxwaGEpID4gMDsKLSAgICBtTm9FR0xJbWFnZUZvclN3QnVmZmVycyA9ICEoaHdGbGFncyAmIERpc3BsYXlIYXJkd2FyZTo6Q0FDSEVEX0JVRkZFUlMpOwogCiAgICAgLy8gd2UgdXNlIHRoZSByZWQgaW5kZXgKICAgICBpbnQgZGlzcGxheVJlZFNpemUgPSBkaXNwbGF5SW5mby5nZXRTaXplKFBpeGVsRm9ybWF0SW5mbzo6SU5ERVhfUkVEKTsKICAgICBpbnQgbGF5ZXJSZWRzaXplID0gaW5mby5nZXRTaXplKFBpeGVsRm9ybWF0SW5mbzo6SU5ERVhfUkVEKTsKICAgICBtTmVlZHNEaXRoZXJpbmcgPSBsYXllclJlZHNpemUgPiBkaXNwbGF5UmVkU2l6ZTsKIAotICAgIGZvciAoc2l6ZV90IGk9MCA7IGk8TlVNX0JVRkZFUlMgOyBpKyspIHsKLSAgICAgICAgbUJ1ZmZlcnNbaV0gPSBuZXcgR3JhcGhpY0J1ZmZlcigpOwotICAgIH0KLSAgICBtU3VyZmFjZSA9IG5ldyBTdXJmYWNlTGF5ZXIobUZsaW5nZXIsIGNsaWVudEluZGV4KCksIHRoaXMpOworICAgIG1TdXJmYWNlID0gbmV3IFN1cmZhY2VMYXllcihtRmxpbmdlciwgdGhpcyk7CiAgICAgcmV0dXJuIE5PX0VSUk9SOwogfQogCiB2b2lkIExheWVyOjpyZWxvYWRUZXh0dXJlKGNvbnN0IFJlZ2lvbiYgZGlydHkpCiB7Ci0gICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1Mb2NrKTsKLSAgICBzcDxHcmFwaGljQnVmZmVyPiBidWZmZXIoZ2V0RnJvbnRCdWZmZXJMb2NrZWQoKSk7CisgICAgc3A8R3JhcGhpY0J1ZmZlcj4gYnVmZmVyKG1CdWZmZXJNYW5hZ2VyLmdldEFjdGl2ZUJ1ZmZlcigpKTsKICAgICBpZiAoYnVmZmVyID09IE5VTEwpIHsKICAgICAgICAgLy8gdGhpcyBzaXR1YXRpb24gY2FuIGhhcHBlbiBpZiB3ZSByYW4gb3V0IG9mIG1lbW9yeSBmb3IgaW5zdGFuY2UuCiAgICAgICAgIC8vIG5vdCBtdWNoIHdlIGNhbiBkby4gY29udGludWUgdG8gdXNlIHdoYXRldmVyIHRleHR1cmUgd2FzIGJvdW5kCkBAIC0xNTYsMTE4ICsxODcsMjAgQEAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGNvbnN0IGludCBpbmRleCA9IG1Gcm9udEJ1ZmZlckluZGV4OwotCi0gICAgLy8gY3JlYXRlIHRoZSBuZXcgdGV4dHVyZSBuYW1lIGlmIG5lZWRlZAotICAgIGlmIChVTkxJS0VMWShtVGV4dHVyZXNbaW5kZXhdLm5hbWUgPT0gLTFVKSkgewotICAgICAgICBtVGV4dHVyZXNbaW5kZXhdLm5hbWUgPSBjcmVhdGVUZXh0dXJlKCk7Ci0gICAgICAgIG1UZXh0dXJlc1tpbmRleF0ud2lkdGggPSAwOwotICAgICAgICBtVGV4dHVyZXNbaW5kZXhdLmhlaWdodCA9IDA7Ci0gICAgfQotCi0jaWZkZWYgRUdMX0FORFJPSURfaW1hZ2VfbmF0aXZlX2J1ZmZlcgotICAgIGlmIChtRmxhZ3MgJiBEaXNwbGF5SGFyZHdhcmU6OkRJUkVDVF9URVhUVVJFKSB7Ci0gICAgICAgIGlmIChidWZmZXItPnVzYWdlICYgR3JhcGhpY0J1ZmZlcjo6VVNBR0VfSFdfVEVYVFVSRSkgewotICAgICAgICAgICAgaWYgKG1UZXh0dXJlc1tpbmRleF0uZGlydHkpIHsKLSAgICAgICAgICAgICAgICBpZiAoaW5pdGlhbGl6ZUVnbEltYWdlKGJ1ZmZlciwgJm1UZXh0dXJlc1tpbmRleF0pICE9IE5PX0VSUk9SKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIG5vdCBzdXJlIHdoYXQgd2UgY2FuIGRvIGhlcmUuLi4KLSAgICAgICAgICAgICAgICAgICAgbUZsYWdzICY9IH5EaXNwbGF5SGFyZHdhcmU6OkRJUkVDVF9URVhUVVJFOwotICAgICAgICAgICAgICAgICAgICBnb3RvIHNsb3dwYXRoOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChtSHlicmlkQnVmZmVyPT0wIHx8IChtSHlicmlkQnVmZmVyLT53aWR0aCAhPSBidWZmZXItPndpZHRoIHx8Ci0gICAgICAgICAgICAgICAgICAgIG1IeWJyaWRCdWZmZXItPmhlaWdodCAhPSBidWZmZXItPmhlaWdodCkpIHsKLSAgICAgICAgICAgICAgICBtSHlicmlkQnVmZmVyLmNsZWFyKCk7Ci0gICAgICAgICAgICAgICAgbUh5YnJpZEJ1ZmZlciA9IG5ldyBHcmFwaGljQnVmZmVyKAotICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLT53aWR0aCwgYnVmZmVyLT5oZWlnaHQsIGJ1ZmZlci0+Zm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgR3JhcGhpY0J1ZmZlcjo6VVNBR0VfU1dfV1JJVEVfT0ZURU4gfAotICAgICAgICAgICAgICAgICAgICAgICAgR3JhcGhpY0J1ZmZlcjo6VVNBR0VfSFdfVEVYVFVSRSk7Ci0gICAgICAgICAgICAgICAgaWYgKGluaXRpYWxpemVFZ2xJbWFnZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIG1IeWJyaWRCdWZmZXIsICZtVGV4dHVyZXNbMF0pICE9IE5PX0VSUk9SKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIG5vdCBzdXJlIHdoYXQgd2UgY2FuIGRvIGhlcmUuLi4KLSAgICAgICAgICAgICAgICAgICAgbUZsYWdzICY9IH5EaXNwbGF5SGFyZHdhcmU6OkRJUkVDVF9URVhUVVJFOwotICAgICAgICAgICAgICAgICAgICBtSHlicmlkQnVmZmVyLmNsZWFyKCk7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gc2xvd3BhdGg7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBHR0xTdXJmYWNlIHQ7Ci0gICAgICAgICAgICBzdGF0dXNfdCByZXMgPSBidWZmZXItPmxvY2soJnQsIEdSQUxMT0NfVVNBR0VfU1dfUkVBRF9PRlRFTik7Ci0gICAgICAgICAgICBMT0dFX0lGKHJlcywgImVycm9yICVkICglcykgbG9ja2luZyBidWZmZXIgJXAiLAotICAgICAgICAgICAgICAgICAgICByZXMsIHN0cmVycm9yKHJlcyksIGJ1ZmZlci5nZXQoKSk7Ci0gICAgICAgICAgICBpZiAocmVzID09IE5PX0VSUk9SKSB7Ci0gICAgICAgICAgICAgICAgVGV4dHVyZSogY29uc3QgdGV4dHVyZSgmbVRleHR1cmVzWzBdKTsKLQotICAgICAgICAgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZS0+bmFtZSk7Ci0KLSAgICAgICAgICAgICAgICBzcDxHcmFwaGljQnVmZmVyPiBidWYobUh5YnJpZEJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAgdm9pZCogdmFkZHI7Ci0gICAgICAgICAgICAgICAgcmVzID0gYnVmLT5sb2NrKEdyYXBoaWNCdWZmZXI6OlVTQUdFX1NXX1dSSVRFX09GVEVOLCAmdmFkZHIpOwotICAgICAgICAgICAgICAgIGlmIChyZXMgPT0gTk9fRVJST1IpIHsKLSAgICAgICAgICAgICAgICAgICAgaW50IGJwcCA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodC5mb3JtYXQpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBIQUxfUElYRUxfRk9STUFUX1JHQl81NjU6Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgSEFMX1BJWEVMX0ZPUk1BVF9SR0JBXzQ0NDQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBicHAgPSAyOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgSEFMX1BJWEVMX0ZPUk1BVF9SR0JBXzg4ODg6Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgSEFMX1BJWEVMX0ZPUk1BVF9SR0JYXzg4ODg6Ci0gICAgICAgICAgICAgICAgICAgICAgICBicHAgPSA0OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNTdXBwb3J0ZWRZdXZGb3JtYXQodC5mb3JtYXQpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8ganVzdCBzaG93IHRoZSBZIHBsYW5lIG9mIFlVViBidWZmZXJzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnBwID0gMTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9vcHMsIHdlIGRvbid0IGhhbmRsZSB0aGlzIGZvcm1hdCEKLSAgICAgICAgICAgICAgICAgICAgICAgIExPR0UoImxheWVyICVwLCB0ZXh0dXJlPSVkLCB1c2luZyBmb3JtYXQgJWQsIHdoaWNoIGlzIG5vdCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdXBwb3J0ZWQgYnkgdGhlIEdMIiwgdGhpcywgdGV4dHVyZS0+bmFtZSwgdC5mb3JtYXQpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmIChicHApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFJlY3QgYm91bmRzKGRpcnR5LmdldEJvdW5kcygpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNpemVfdCBzcmNfc3RyaWRlID0gdC5zdHJpZGU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgZHN0X3N0cmlkZSA9IGJ1Zi0+c3RyaWRlOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHNyY19zdHJpZGUgPT0gZHN0X3N0cmlkZSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kcy53aWR0aCgpID09IHQud2lkdGggJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3VuZHMuaGVpZ2h0KCkgPT0gdC5oZWlnaHQpCi0gICAgICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtY3B5KHZhZGRyLCB0LmRhdGEsIHQuaGVpZ2h0ICogdC5zdHJpZGUgKiBicHApOwotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTHVieXRlIGNvbnN0ICogc3JjID0gdC5kYXRhICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJvdW5kcy5sZWZ0ICsgYm91bmRzLnRvcCAqIHNyY19zdHJpZGUpICogYnBwOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWJ5dGUgKiBkc3QgPSAoR0x1Ynl0ZSAqKXZhZGRyICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJvdW5kcy5sZWZ0ICsgYm91bmRzLnRvcCAqIGRzdF9zdHJpZGUpICogYnBwOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNpemVfdCBsZW5ndGggPSBib3VuZHMud2lkdGgoKSAqIGJwcDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgaCA9IGJvdW5kcy5oZWlnaHQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNfc3RyaWRlICo9IGJwcDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3Rfc3RyaWRlICo9IGJwcDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoaC0tKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lbWNweShkc3QsIHNyYywgbGVuZ3RoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHN0ICs9IGRzdF9zdHJpZGU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYyArPSBzcmNfc3RyaWRlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBidWYtPnVubG9jaygpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBidWZmZXItPnVubG9jaygpOwotICAgICAgICAgICAgfQorICAgIGlmIChtR0xFeHRlbnNpb25zLmhhdmVEaXJlY3RUZXh0dXJlKCkpIHsKKyAgICAgICAgRUdMRGlzcGxheSBkcHkobUZsaW5nZXItPmdyYXBoaWNQbGFuZSgwKS5nZXRFR0xEaXNwbGF5KCkpOworICAgICAgICBpZiAobUJ1ZmZlck1hbmFnZXIuaW5pdEVnbEltYWdlKGRweSwgYnVmZmVyKSAhPSBOT19FUlJPUikgeworICAgICAgICAgICAgLy8gbm90IHN1cmUgd2hhdCB3ZSBjYW4gZG8gaGVyZS4uLgorICAgICAgICAgICAgZ290byBzbG93cGF0aDsKICAgICAgICAgfQotICAgIH0gZWxzZQotI2VuZGlmCi0gICAgeworICAgIH0gZWxzZSB7CiBzbG93cGF0aDoKLSAgICAgICAgZm9yIChzaXplX3QgaT0wIDsgaTxOVU1fQlVGRkVSUyA7IGkrKykgewotICAgICAgICAgICAgbVRleHR1cmVzW2ldLmltYWdlID0gRUdMX05PX0lNQUdFX0tIUjsKLSAgICAgICAgfQogICAgICAgICBHR0xTdXJmYWNlIHQ7CiAgICAgICAgIHN0YXR1c190IHJlcyA9IGJ1ZmZlci0+bG9jaygmdCwgR1JBTExPQ19VU0FHRV9TV19SRUFEX09GVEVOKTsKICAgICAgICAgTE9HRV9JRihyZXMsICJlcnJvciAlZCAoJXMpIGxvY2tpbmcgYnVmZmVyICVwIiwKICAgICAgICAgICAgICAgICByZXMsIHN0cmVycm9yKHJlcyksIGJ1ZmZlci5nZXQoKSk7CiAgICAgICAgIGlmIChyZXMgPT0gTk9fRVJST1IpIHsKLSAgICAgICAgICAgIGxvYWRUZXh0dXJlKCZtVGV4dHVyZXNbMF0sIGRpcnR5LCB0KTsKKyAgICAgICAgICAgIG1CdWZmZXJNYW5hZ2VyLmxvYWRUZXh0dXJlKGRpcnR5LCB0KTsKICAgICAgICAgICAgIGJ1ZmZlci0+dW5sb2NrKCk7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNzUsMTEgKzIwOCw4IEBACiAKIHZvaWQgTGF5ZXI6Om9uRHJhdyhjb25zdCBSZWdpb24mIGNsaXApIGNvbnN0CiB7Ci0gICAgaW50IGluZGV4ID0gbUZyb250QnVmZmVySW5kZXg7Ci0gICAgaWYgKG1UZXh0dXJlc1tpbmRleF0uaW1hZ2UgPT0gRUdMX05PX0lNQUdFX0tIUikKLSAgICAgICAgaW5kZXggPSAwOwotICAgIEdMdWludCB0ZXh0dXJlTmFtZSA9IG1UZXh0dXJlc1tpbmRleF0ubmFtZTsKLSAgICBpZiAoVU5MSUtFTFkodGV4dHVyZU5hbWUgPT0gLTFMVSkpIHsKKyAgICBUZXh0dXJlIHRleChtQnVmZmVyTWFuYWdlci5nZXRBY3RpdmVUZXh0dXJlKCkpOworICAgIGlmICh0ZXgubmFtZSA9PSAtMUxVKSB7CiAgICAgICAgIC8vIHRoZSB0ZXh0dXJlIGhhcyBub3QgYmVlbiBjcmVhdGVkIHlldCwgdGhpcyBMYXllciBoYXMKICAgICAgICAgLy8gaW4gZmFjdCBuZXZlciBiZWVuIGRyYXduIGludG8uIFRoaXMgaGFwcGVucyBmcmVxdWVudGx5IHdpdGgKICAgICAgICAgLy8gU3VyZmFjZVZpZXcgYmVjYXVzZSB0aGUgV2luZG93TWFuYWdlciBjYW4ndCBrbm93IHdoZW4gdGhlIGNsaWVudApAQCAtMzAxLDIxICsyMzEsNjEgQEAKICAgICAgICAgLy8gaWYgbm90IGV2ZXJ5dGhpbmcgYmVsb3cgdXMgaXMgY292ZXJlZCwgd2UgcGx1ZyB0aGUgaG9sZXMhCiAgICAgICAgIFJlZ2lvbiBob2xlcyhjbGlwLnN1YnRyYWN0KHVuZGVyKSk7CiAgICAgICAgIGlmICghaG9sZXMuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICBjbGVhcldpdGhPcGVuR0woaG9sZXMpOworICAgICAgICAgICAgY2xlYXJXaXRoT3BlbkdMKGhvbGVzLCAwLCAwLCAwLCAxKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGRyYXdXaXRoT3BlbkdMKGNsaXAsIG1UZXh0dXJlc1tpbmRleF0pOworICAgIGRyYXdXaXRoT3BlbkdMKGNsaXAsIHRleCk7CiB9CiAKLXNwPEdyYXBoaWNCdWZmZXI+IExheWVyOjpyZXF1ZXN0QnVmZmVyKGludCBpbmRleCwgaW50IHVzYWdlKQorYm9vbCBMYXllcjo6bmVlZHNGaWx0ZXJpbmcoKSBjb25zdAoreworICAgIGlmICghKG1GbGFncyAmIERpc3BsYXlIYXJkd2FyZTo6U0xPV19DT05GSUcpKSB7CisgICAgICAgIC8vIE5PVEU6IHRoZXJlIGlzIGEgcmFjZSBoZXJlLCBiZWNhdXNlIG1GaXhlZFNpemUgaXMgdXBkYXRlZCBpbiBhCisgICAgICAgIC8vIGJpbmRlciB0cmFuc2FjdGlvbi4gaG93ZXZlciwgaXQgZG9lc24ndCByZWFsbHkgbWF0dGVyIHNpbmNlIGl0IGlzCisgICAgICAgIC8vIGV2YWx1YXRlZCBlYWNoIHRpbWUgd2UgZHJhdy4gVG8gYmUgcGVyZmVjdGx5IGNvcnJlY3QsIHRoaXMgZmxhZworICAgICAgICAvLyB3b3VsZCBoYXZlIHRvIGJlIGFzc29jaWF0ZWQgd2l0aCBhIGJ1ZmZlci4KKyAgICAgICAgaWYgKG1GaXhlZFNpemUpCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIExheWVyQmFzZTo6bmVlZHNGaWx0ZXJpbmcoKTsKK30KKworCitzdGF0dXNfdCBMYXllcjo6c2V0QnVmZmVyQ291bnQoaW50IGJ1ZmZlckNvdW50KQoreworICAgIENsaWVudFJlZjo6QWNjZXNzIHNoYXJlZENsaWVudChtVXNlckNsaWVudFJlZik7CisgICAgU2hhcmVkQnVmZmVyU2VydmVyKiBsY2JsayhzaGFyZWRDbGllbnQuZ2V0KCkpOworICAgIGlmICghbGNibGspIHsKKyAgICAgICAgLy8gb29wcywgdGhlIGNsaWVudCBpcyBhbHJlYWR5IGdvbmUKKyAgICAgICAgcmV0dXJuIERFQURfT0JKRUNUOworICAgIH0KKworICAgIC8vIE5PVEU6IGxjYmxrLT5yZXNpemUoKSBpcyBwcm90ZWN0ZWQgYnkgYW4gaW50ZXJuYWwgbG9jaworICAgIHN0YXR1c190IGVyciA9IGxjYmxrLT5yZXNpemUoYnVmZmVyQ291bnQpOworICAgIGlmIChlcnIgPT0gTk9fRVJST1IpCisgICAgICAgIG1CdWZmZXJNYW5hZ2VyLnJlc2l6ZShidWZmZXJDb3VudCk7CisKKyAgICByZXR1cm4gZXJyOworfQorCitzcDxHcmFwaGljQnVmZmVyPiBMYXllcjo6cmVxdWVzdEJ1ZmZlcihpbnQgaW5kZXgsCisgICAgICAgIHVpbnQzMl90IHJlcVdpZHRoLCB1aW50MzJfdCByZXFIZWlnaHQsIHVpbnQzMl90IHJlcUZvcm1hdCwKKyAgICAgICAgdWludDMyX3QgdXNhZ2UpCiB7CiAgICAgc3A8R3JhcGhpY0J1ZmZlcj4gYnVmZmVyOwogCisgICAgaWYgKGludDMyX3QocmVxV2lkdGggfCByZXFIZWlnaHQgfCByZXFGb3JtYXQpIDwgMCkKKyAgICAgICAgcmV0dXJuIGJ1ZmZlcjsKKworICAgIGlmICgoIXJlcVdpZHRoICYmIHJlcUhlaWdodCkgfHwgKHJlcVdpZHRoICYmICFyZXFIZWlnaHQpKQorICAgICAgICByZXR1cm4gYnVmZmVyOworCiAgICAgLy8gdGhpcyBlbnN1cmVzIG91ciBjbGllbnQgZG9lc24ndCBnbyBhd2F5IHdoaWxlIHdlJ3JlIGFjY2Vzc2luZwogICAgIC8vIHRoZSBzaGFyZWQgYXJlYS4KLSAgICBzcDxDbGllbnQ+IG91ckNsaWVudChjbGllbnQucHJvbW90ZSgpKTsKLSAgICBpZiAob3VyQ2xpZW50ID09IDApIHsKKyAgICBDbGllbnRSZWY6OkFjY2VzcyBzaGFyZWRDbGllbnQobVVzZXJDbGllbnRSZWYpOworICAgIFNoYXJlZEJ1ZmZlclNlcnZlciogbGNibGsoc2hhcmVkQ2xpZW50LmdldCgpKTsKKyAgICBpZiAoIWxjYmxrKSB7CiAgICAgICAgIC8vIG9vcHMsIHRoZSBjbGllbnQgaXMgYWxyZWFkeSBnb25lCiAgICAgICAgIHJldHVybiBidWZmZXI7CiAgICAgfQpAQCAtMzI0LDcgKzI5NCw3IEBACiAgICAgICogVGhpcyBpcyBjYWxsZWQgZnJvbSB0aGUgY2xpZW50J3MgU3VyZmFjZTo6ZGVxdWV1ZSgpLiBUaGlzIGNhbiBoYXBwZW4KICAgICAgKiBhdCBhbnkgdGltZSwgZXNwZWNpYWxseSB3aGlsZSB3ZSdyZSBpbiB0aGUgbWlkZGxlIG9mIHVzaW5nIHRoZQogICAgICAqIGJ1ZmZlciAnaW5kZXgnIGFzIG91ciBmcm9udCBidWZmZXIuCi0gICAgICogCisgICAgICoKICAgICAgKiBNYWtlIHN1cmUgdGhlIGJ1ZmZlciB3ZSdyZSByZXNpemluZyBpcyBub3QgdGhlIGZyb250IGJ1ZmZlciBhbmQgaGFzIGJlZW4KICAgICAgKiBkZXF1ZXVlZC4gT25jZSB0aGlzIGNvbmRpdGlvbiBpcyBhc3NlcnRlZCwgd2UgYXJlIGd1YXJhbnRlZWQgdGhhdCB0aGlzCiAgICAgICogYnVmZmVyIGNhbm5vdCBiZWNvbWUgdGhlIGZyb250IGJ1ZmZlciB1bmRlciBvdXIgZmVldCwgc2luY2Ugd2UncmUgY2FsbGVkCkBAIC0zMzcsMzEgKzMwNywzMyBAQAogICAgICAgICByZXR1cm4gYnVmZmVyOwogICAgIH0KIAotICAgIHVpbnQzMl90IHcsIGg7CisgICAgdWludDMyX3QgdywgaCwgZjsKICAgICB7IC8vIHNjb3BlIGZvciB0aGUgbG9jawogICAgICAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOwotICAgICAgICB3ID0gbVdpZHRoOwotICAgICAgICBoID0gbUhlaWdodDsKLSAgICAgICAgYnVmZmVyID0gbUJ1ZmZlcnNbaW5kZXhdOwotICAgICAgICAKLSAgICAgICAgLy8gZGVzdHJveSgpIGNvdWxkIGhhdmUgYmVlbiBjYWxsZWQgYmVmb3JlIHdlIGdldCBoZXJlLCB3ZSBsb2cgaXQKLSAgICAgICAgLy8gYmVjYXVzZSBpdCdzIHVuY29tbW9uLCBhbmQgdGhlIGNvZGUgYmVsb3cgc2hvdWxkIGhhbmRsZSBpdAotICAgICAgICBMT0dXX0lGKGJ1ZmZlcj09MCwgCi0gICAgICAgICAgICAgICAgIm1CdWZmZXJzWyVkXSBpcyBudWxsIChtV2lkdGg9JWQsIG1IZWlnaHQ9JWQpIiwKLSAgICAgICAgICAgICAgICBpbmRleCwgdywgaCk7Ci0gICAgICAgIAotICAgICAgICBtQnVmZmVyc1tpbmRleF0uY2xlYXIoKTsKKyAgICAgICAgY29uc3QgYm9vbCBmaXhlZFNpemVDaGFuZ2VkID0gbUZpeGVkU2l6ZSAhPSAocmVxV2lkdGggJiYgcmVxSGVpZ2h0KTsKKyAgICAgICAgY29uc3QgYm9vbCBmb3JtYXRDaGFuZ2VkICAgID0gbVJlcUZvcm1hdCAhPSByZXFGb3JtYXQ7CisgICAgICAgIG1SZXFXaWR0aCAgPSByZXFXaWR0aDsKKyAgICAgICAgbVJlcUhlaWdodCA9IHJlcUhlaWdodDsKKyAgICAgICAgbVJlcUZvcm1hdCA9IHJlcUZvcm1hdDsKKyAgICAgICAgbUZpeGVkU2l6ZSA9IHJlcVdpZHRoICYmIHJlcUhlaWdodDsKKyAgICAgICAgdyA9IHJlcVdpZHRoICA/IHJlcVdpZHRoICA6IG1XaWR0aDsKKyAgICAgICAgaCA9IHJlcUhlaWdodCA/IHJlcUhlaWdodCA6IG1IZWlnaHQ7CisgICAgICAgIGYgPSByZXFGb3JtYXQgPyByZXFGb3JtYXQgOiBtRm9ybWF0OworICAgICAgICBidWZmZXIgPSBtQnVmZmVyTWFuYWdlci5kZXRhY2hCdWZmZXIoaW5kZXgpOworICAgICAgICBpZiAoZml4ZWRTaXplQ2hhbmdlZCB8fCBmb3JtYXRDaGFuZ2VkKSB7CisgICAgICAgICAgICBsY2Jsay0+cmVhbGxvY2F0ZUFsbEV4Y2VwdChpbmRleCk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBjb25zdCB1aW50MzJfdCBlZmZlY3RpdmVVc2FnZSA9IGdldEVmZmVjdGl2ZVVzYWdlKHVzYWdlKTsKICAgICBpZiAoYnVmZmVyIT0wICYmIGJ1ZmZlci0+Z2V0U3Ryb25nQ291bnQoKSA9PSAxKSB7Ci0gICAgICAgIGVyciA9IGJ1ZmZlci0+cmVhbGxvY2F0ZSh3LCBoLCBtRm9ybWF0LCBlZmZlY3RpdmVVc2FnZSk7CisgICAgICAgIGVyciA9IGJ1ZmZlci0+cmVhbGxvY2F0ZSh3LCBoLCBmLCBlZmZlY3RpdmVVc2FnZSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgLy8gaGVyZSB3ZSBoYXZlIHRvIHJlYWxsb2NhdGUgYSBuZXcgYnVmZmVyIGJlY2F1c2Ugd2UgY291bGQgaGF2ZSBhCiAgICAgICAgIC8vIGNsaWVudCBpbiBvdXIgcHJvY2VzcyB3aXRoIGEgcmVmZXJlbmNlIHRvIGl0IChlZzogc3RhdHVzIGJhciksCiAgICAgICAgIC8vIGFuZCB3ZSBjYW4ndCByZWxlYXNlIHRoZSBoYW5kbGUgdW5kZXIgaXRzIGZlZXQuCiAgICAgICAgIGJ1ZmZlci5jbGVhcigpOwotICAgICAgICBidWZmZXIgPSBuZXcgR3JhcGhpY0J1ZmZlcih3LCBoLCBtRm9ybWF0LCBlZmZlY3RpdmVVc2FnZSk7CisgICAgICAgIGJ1ZmZlciA9IG5ldyBHcmFwaGljQnVmZmVyKHcsIGgsIGYsIGVmZmVjdGl2ZVVzYWdlKTsKICAgICAgICAgZXJyID0gYnVmZmVyLT5pbml0Q2hlY2soKTsKICAgICB9CiAKQEAgLTM3NywxNSArMzQ5LDcgQEAKIAogICAgIGlmIChlcnIgPT0gTk9fRVJST1IgJiYgYnVmZmVyLT5oYW5kbGUgIT0gMCkgewogICAgICAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOwotICAgICAgICBpZiAobVdpZHRoICYmIG1IZWlnaHQpIHsKLSAgICAgICAgICAgIC8vIGFuZCB3ZSBoYXZlIG5ldyBidWZmZXIKLSAgICAgICAgICAgIG1CdWZmZXJzW2luZGV4XSA9IGJ1ZmZlcjsKLSAgICAgICAgICAgIC8vIHRleHR1cmUgaXMgbm93IGRpcnR5Li4uCi0gICAgICAgICAgICBtVGV4dHVyZXNbaW5kZXhdLmRpcnR5ID0gdHJ1ZTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIG9vcHMgd2UgZ290IGtpbGxlZCB3aGlsZSB3ZSB3ZXJlIGFsbG9jYXRpbmcgdGhlIGJ1ZmZlcgotICAgICAgICAgICAgYnVmZmVyLmNsZWFyKCk7Ci0gICAgICAgIH0KKyAgICAgICAgbUJ1ZmZlck1hbmFnZXIuYXR0YWNoQnVmZmVyKGluZGV4LCBidWZmZXIpOwogICAgIH0KICAgICByZXR1cm4gYnVmZmVyOwogfQpAQCAtNDExLDE1ICszNzUsOCBAQAogICAgIH0gZWxzZSB7CiAgICAgICAgIC8vIGl0J3MgYWxsb3dlZCB0byBtb2RpZnkgdGhlIHVzYWdlIGZsYWdzIGhlcmUsIGJ1dCBnZW5lcmFsbHkKICAgICAgICAgLy8gdGhlIHJlcXVlc3RlZCBmbGFncyBzaG91bGQgYmUgaG9ub3JlZC4KLSAgICAgICAgaWYgKG1Ob0VHTEltYWdlRm9yU3dCdWZmZXJzKSB7Ci0gICAgICAgICAgICBpZiAodXNhZ2UgJiBHcmFwaGljQnVmZmVyOjpVU0FHRV9IV19NQVNLKSB7Ci0gICAgICAgICAgICAgICAgLy8gcmVxdWVzdCBFR0xJbWFnZSBmb3IgaC93IGJ1ZmZlcnMgb25seQotICAgICAgICAgICAgICAgIHVzYWdlIHw9IEdyYXBoaWNCdWZmZXI6OlVTQUdFX0hXX1RFWFRVUkU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyByZXF1ZXN0IEVHTEltYWdlIGZvciBhbGwgYnVmZmVycwotICAgICAgICAgICAgdXNhZ2UgfD0gR3JhcGhpY0J1ZmZlcjo6VVNBR0VfSFdfVEVYVFVSRTsKLSAgICAgICAgfQorICAgICAgICAvLyByZXF1ZXN0IEVHTEltYWdlIGZvciBhbGwgYnVmZmVycworICAgICAgICB1c2FnZSB8PSBHcmFwaGljQnVmZmVyOjpVU0FHRV9IV19URVhUVVJFOwogICAgIH0KICAgICByZXR1cm4gdXNhZ2U7CiB9CkBAIC00MjksNDIgKzM4Niw1MCBAQAogICAgIGNvbnN0IExheWVyOjpTdGF0ZSYgZnJvbnQoZHJhd2luZ1N0YXRlKCkpOwogICAgIGNvbnN0IExheWVyOjpTdGF0ZSYgdGVtcChjdXJyZW50U3RhdGUoKSk7CiAKLSAgICBpZiAoKGZyb250LnJlcXVlc3RlZF93ICE9IHRlbXAucmVxdWVzdGVkX3cpIHx8IAotICAgICAgICAoZnJvbnQucmVxdWVzdGVkX2ggIT0gdGVtcC5yZXF1ZXN0ZWRfaCkpIHsKKyAgICBjb25zdCBib29sIHNpemVDaGFuZ2VkID0gKGZyb250LnJlcXVlc3RlZF93ICE9IHRlbXAucmVxdWVzdGVkX3cpIHx8CisgICAgICAgICAgICAoZnJvbnQucmVxdWVzdGVkX2ggIT0gdGVtcC5yZXF1ZXN0ZWRfaCk7CisKKyAgICBpZiAoc2l6ZUNoYW5nZWQpIHsKICAgICAgICAgLy8gdGhlIHNpemUgY2hhbmdlZCwgd2UgbmVlZCB0byBhc2sgb3VyIGNsaWVudCB0byByZXF1ZXN0IGEgbmV3IGJ1ZmZlcgogICAgICAgICBMT0dEX0lGKERFQlVHX1JFU0laRSwKLSAgICAgICAgICAgICAgICAgICAgInJlc2l6ZSAobGF5ZXI9JXApLCByZXF1ZXN0ZWQgKCVkeCVkKSwgIgotICAgICAgICAgICAgICAgICAgICAiZHJhd2luZyAoJWQsJWQpLCAoJWR4JWQpLCAoJWR4JWQpIiwKLSAgICAgICAgICAgICAgICAgICAgdGhpcywgCi0gICAgICAgICAgICAgICAgICAgIGludCh0ZW1wLnJlcXVlc3RlZF93KSwgaW50KHRlbXAucmVxdWVzdGVkX2gpLAotICAgICAgICAgICAgICAgICAgICBpbnQoZnJvbnQucmVxdWVzdGVkX3cpLCBpbnQoZnJvbnQucmVxdWVzdGVkX2gpLAotICAgICAgICAgICAgICAgICAgICBpbnQobUJ1ZmZlcnNbMF0tPmdldFdpZHRoKCkpLCBpbnQobUJ1ZmZlcnNbMF0tPmdldEhlaWdodCgpKSwKLSAgICAgICAgICAgICAgICAgICAgaW50KG1CdWZmZXJzWzFdLT5nZXRXaWR0aCgpKSwgaW50KG1CdWZmZXJzWzFdLT5nZXRIZWlnaHQoKSkpOworICAgICAgICAgICAgICAgICJyZXNpemUgKGxheWVyPSVwKSwgcmVxdWVzdGVkICglZHglZCksIGRyYXdpbmcgKCVkLCVkKSIsCisgICAgICAgICAgICAgICAgdGhpcywKKyAgICAgICAgICAgICAgICBpbnQodGVtcC5yZXF1ZXN0ZWRfdyksIGludCh0ZW1wLnJlcXVlc3RlZF9oKSwKKyAgICAgICAgICAgICAgICBpbnQoZnJvbnQucmVxdWVzdGVkX3cpLCBpbnQoZnJvbnQucmVxdWVzdGVkX2gpKTsKIAotICAgICAgICAvLyB3ZSdyZSBiZWluZyByZXNpemVkIGFuZCB0aGVyZSBpcyBhIGZyZWV6ZSBkaXNwbGF5IHJlcXVlc3QsCi0gICAgICAgIC8vIGFjcXVpcmUgYSBmcmVlemUgbG9jaywgc28gdGhhdCB0aGUgc2NyZWVuIHN0YXlzIHB1dAotICAgICAgICAvLyB1bnRpbCB3ZSd2ZSByZWRyYXduIGF0IHRoZSBuZXcgc2l6ZTsgdGhpcyBpcyB0byBhdm9pZAotICAgICAgICAvLyBnbGl0Y2hlcyB1cG9uIG9yaWVudGF0aW9uIGNoYW5nZXMuCi0gICAgICAgIGlmIChtRmxpbmdlci0+aGFzRnJlZXplUmVxdWVzdCgpKSB7Ci0gICAgICAgICAgICAvLyBpZiB0aGUgc3VyZmFjZSBpcyBoaWRkZW4sIGRvbid0IHRyeSB0byBhY3F1aXJlIHRoZQotICAgICAgICAgICAgLy8gZnJlZXplIGxvY2ssIHNpbmNlIGhpZGRlbiBzdXJmYWNlcyBtYXkgbmV2ZXIgcmVkcmF3Ci0gICAgICAgICAgICBpZiAoIShmcm9udC5mbGFncyAmIElTdXJmYWNlQ29tcG9zZXI6OmVMYXllckhpZGRlbikpIHsKLSAgICAgICAgICAgICAgICBtRnJlZXplTG9jayA9IG1GbGluZ2VyLT5nZXRGcmVlemVMb2NrKCk7CisgICAgICAgIGlmICghaXNGaXhlZFNpemUoKSkgeworICAgICAgICAgICAgLy8gd2UncmUgYmVpbmcgcmVzaXplZCBhbmQgdGhlcmUgaXMgYSBmcmVlemUgZGlzcGxheSByZXF1ZXN0LAorICAgICAgICAgICAgLy8gYWNxdWlyZSBhIGZyZWV6ZSBsb2NrLCBzbyB0aGF0IHRoZSBzY3JlZW4gc3RheXMgcHV0CisgICAgICAgICAgICAvLyB1bnRpbCB3ZSd2ZSByZWRyYXduIGF0IHRoZSBuZXcgc2l6ZTsgdGhpcyBpcyB0byBhdm9pZAorICAgICAgICAgICAgLy8gZ2xpdGNoZXMgdXBvbiBvcmllbnRhdGlvbiBjaGFuZ2VzLgorICAgICAgICAgICAgaWYgKG1GbGluZ2VyLT5oYXNGcmVlemVSZXF1ZXN0KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBpZiB0aGUgc3VyZmFjZSBpcyBoaWRkZW4sIGRvbid0IHRyeSB0byBhY3F1aXJlIHRoZQorICAgICAgICAgICAgICAgIC8vIGZyZWV6ZSBsb2NrLCBzaW5jZSBoaWRkZW4gc3VyZmFjZXMgbWF5IG5ldmVyIHJlZHJhdworICAgICAgICAgICAgICAgIGlmICghKGZyb250LmZsYWdzICYgSVN1cmZhY2VDb21wb3Nlcjo6ZUxheWVySGlkZGVuKSkgeworICAgICAgICAgICAgICAgICAgICBtRnJlZXplTG9jayA9IG1GbGluZ2VyLT5nZXRGcmVlemVMb2NrKCk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyB0aGlzIHdpbGwgbWFrZSBzdXJlIExheWVyQmFzZTo6ZG9UcmFuc2FjdGlvbiBkb2Vzbid0IHVwZGF0ZQorICAgICAgICAgICAgLy8gdGhlIGRyYXdpbmcgc3RhdGUncyBzaXplCisgICAgICAgICAgICBMYXllcjo6U3RhdGUmIGVkaXREcmF3KG1EcmF3aW5nU3RhdGUpOworICAgICAgICAgICAgZWRpdERyYXcucmVxdWVzdGVkX3cgPSB0ZW1wLnJlcXVlc3RlZF93OworICAgICAgICAgICAgZWRpdERyYXcucmVxdWVzdGVkX2ggPSB0ZW1wLnJlcXVlc3RlZF9oOworCisgICAgICAgICAgICAvLyByZWNvcmQgdGhlIG5ldyBzaXplLCBmb3JtIHRoaXMgcG9pbnQgb24sIHdoZW4gdGhlIGNsaWVudCByZXF1ZXN0CisgICAgICAgICAgICAvLyBhIGJ1ZmZlciwgaXQnbGwgZ2V0IHRoZSBuZXcgc2l6ZS4KKyAgICAgICAgICAgIHNldEJ1ZmZlclNpemUodGVtcC5yZXF1ZXN0ZWRfdywgdGVtcC5yZXF1ZXN0ZWRfaCk7CisKKyAgICAgICAgICAgIENsaWVudFJlZjo6QWNjZXNzIHNoYXJlZENsaWVudChtVXNlckNsaWVudFJlZik7CisgICAgICAgICAgICBTaGFyZWRCdWZmZXJTZXJ2ZXIqIGxjYmxrKHNoYXJlZENsaWVudC5nZXQoKSk7CisgICAgICAgICAgICBpZiAobGNibGspIHsKKyAgICAgICAgICAgICAgICAvLyBhbGwgYnVmZmVycyBuZWVkIHJlYWxsb2NhdGlvbgorICAgICAgICAgICAgICAgIGxjYmxrLT5yZWFsbG9jYXRlQWxsKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyByZWNvcmQgdGhlIG5ldyBzaXplCisgICAgICAgICAgICBzZXRCdWZmZXJTaXplKHRlbXAucmVxdWVzdGVkX3csIHRlbXAucmVxdWVzdGVkX2gpOwogICAgICAgICB9Ci0KLSAgICAgICAgLy8gdGhpcyB3aWxsIG1ha2Ugc3VyZSBMYXllckJhc2U6OmRvVHJhbnNhY3Rpb24gZG9lc24ndCB1cGRhdGUKLSAgICAgICAgLy8gdGhlIGRyYXdpbmcgc3RhdGUncyBzaXplCi0gICAgICAgIExheWVyOjpTdGF0ZSYgZWRpdERyYXcobURyYXdpbmdTdGF0ZSk7Ci0gICAgICAgIGVkaXREcmF3LnJlcXVlc3RlZF93ID0gdGVtcC5yZXF1ZXN0ZWRfdzsKLSAgICAgICAgZWRpdERyYXcucmVxdWVzdGVkX2ggPSB0ZW1wLnJlcXVlc3RlZF9oOwotCi0gICAgICAgIC8vIHJlY29yZCB0aGUgbmV3IHNpemUsIGZvcm0gdGhpcyBwb2ludCBvbiwgd2hlbiB0aGUgY2xpZW50IHJlcXVlc3QgYQotICAgICAgICAvLyBidWZmZXIsIGl0J2xsIGdldCB0aGUgbmV3IHNpemUuCi0gICAgICAgIHNldERyYXdpbmdTaXplKHRlbXAucmVxdWVzdGVkX3csIHRlbXAucmVxdWVzdGVkX2gpOwotCi0gICAgICAgIC8vIGFsbCBidWZmZXJzIG5lZWQgcmVhbGxvY2F0aW9uCi0gICAgICAgIGxjYmxrLT5yZWFsbG9jYXRlKCk7CiAgICAgfQogCiAgICAgaWYgKHRlbXAuc2VxdWVuY2UgIT0gZnJvbnQuc2VxdWVuY2UpIHsKQEAgLTQ3OCwzNSArNDQzLDUxIEBACiAgICAgcmV0dXJuIExheWVyQmFzZTo6ZG9UcmFuc2FjdGlvbihmbGFncyk7CiB9CiAKLXZvaWQgTGF5ZXI6OnNldERyYXdpbmdTaXplKHVpbnQzMl90IHcsIHVpbnQzMl90IGgpIHsKK3ZvaWQgTGF5ZXI6OnNldEJ1ZmZlclNpemUodWludDMyX3QgdywgdWludDMyX3QgaCkgewogICAgIE11dGV4OjpBdXRvbG9jayBfbChtTG9jayk7CiAgICAgbVdpZHRoID0gdzsKICAgICBtSGVpZ2h0ID0gaDsKIH0KIAorYm9vbCBMYXllcjo6aXNGaXhlZFNpemUoKSBjb25zdCB7CisgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1Mb2NrKTsKKyAgICByZXR1cm4gbUZpeGVkU2l6ZTsKK30KKwogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLy8gcGFnZWZsaXAgaGFuZGxpbmcuLi4KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogdm9pZCBMYXllcjo6bG9ja1BhZ2VGbGlwKGJvb2wmIHJlY29tcHV0ZVZpc2libGVSZWdpb25zKQogeworICAgIENsaWVudFJlZjo6QWNjZXNzIHNoYXJlZENsaWVudChtVXNlckNsaWVudFJlZik7CisgICAgU2hhcmVkQnVmZmVyU2VydmVyKiBsY2JsayhzaGFyZWRDbGllbnQuZ2V0KCkpOworICAgIGlmICghbGNibGspIHsKKyAgICAgICAgLy8gY2xpZW50IGRpZWQKKyAgICAgICAgcmVjb21wdXRlVmlzaWJsZVJlZ2lvbnMgPSB0cnVlOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgc3NpemVfdCBidWYgPSBsY2Jsay0+cmV0aXJlQW5kTG9jaygpOwotICAgIGlmIChidWYgPCBOT19FUlJPUikgewotICAgICAgICAvL0xPR1coIm5vdGhpbmcgdG8gcmV0aXJlICglcykiLCBzdHJlcnJvcigtYnVmKSk7Ci0gICAgICAgIC8vIE5PVEU6IGhlcmUgdGhlIGJ1ZmZlciBpcyBsb2NrZWQgYmVjYXVzZSB3ZSB3aWxsIHVzZWQgCisgICAgaWYgKGJ1ZiA9PSBOT1RfRU5PVUdIX0RBVEEpIHsKKyAgICAgICAgLy8gTk9URTogVGhpcyBpcyBub3QgYW4gZXJyb3IsIGl0IHNpbXBseSBtZWFucyB0aGVyZSBpcyBub3RoaW5nIHRvCisgICAgICAgIC8vIHJldGlyZS4gVGhlIGJ1ZmZlciBpcyBsb2NrZWQgYmVjYXVzZSB3ZSB3aWxsIHVzZSBpdAogICAgICAgICAvLyBmb3IgY29tcG9zaXRpb24gbGF0ZXIgaW4gdGhlIGxvb3AKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIG91Y2gsIHRoaXMgcmVhbGx5IHNob3VsZCBuZXZlciBoYXBwZW4KLSAgICBpZiAodWludDMyX3QoYnVmKT49TlVNX0JVRkZFUlMpIHsKLSAgICAgICAgTE9HRSgicmV0aXJlQW5kTG9jaygpIGJ1ZmZlciBpbmRleCAoJWQpIG91dCBvZiByYW5nZSIsIGJ1Zik7CisgICAgaWYgKGJ1ZiA8IE5PX0VSUk9SKSB7CisgICAgICAgIExPR0UoInJldGlyZUFuZExvY2soKSBidWZmZXIgaW5kZXggKCVkKSBvdXQgb2YgcmFuZ2UiLCBpbnQoYnVmKSk7CiAgICAgICAgIG1Qb3N0ZWREaXJ0eVJlZ2lvbi5jbGVhcigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgLy8gd2UgcmV0aXJlZCBhIGJ1ZmZlciwgd2hpY2ggYmVjb21lcyB0aGUgbmV3IGZyb250IGJ1ZmZlcgotICAgIG1Gcm9udEJ1ZmZlckluZGV4ID0gYnVmOworICAgIGlmIChtQnVmZmVyTWFuYWdlci5zZXRBY3RpdmVCdWZmZXJJbmRleChidWYpIDwgTk9fRVJST1IpIHsKKyAgICAgICAgTE9HRSgicmV0aXJlQW5kTG9jaygpIGJ1ZmZlciBpbmRleCAoJWQpIG91dCBvZiByYW5nZSIsIGludChidWYpKTsKKyAgICAgICAgbVBvc3RlZERpcnR5UmVnaW9uLmNsZWFyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CiAKICAgICAvLyBnZXQgdGhlIGRpcnR5IHJlZ2lvbgogICAgIHNwPEdyYXBoaWNCdWZmZXI+IG5ld0Zyb250QnVmZmVyKGdldEJ1ZmZlcihidWYpKTsKQEAgLTU1OSw5ICs1NDAsMTUgQEAKICAgICAgICAgbUZsaW5nZXItPnNpZ25hbEV2ZW50KCk7CiAgICAgfQogCi0gICAgaWYgKCFtUG9zdGVkRGlydHlSZWdpb24uaXNFbXB0eSgpKSB7Ci0gICAgICAgIHJlbG9hZFRleHR1cmUoIG1Qb3N0ZWREaXJ0eVJlZ2lvbiApOwotICAgIH0KKyAgICAvKiBhIGJ1ZmZlciB3YXMgcG9zdGVkLCBzbyB3ZSBuZWVkIHRvIGNhbGwgcmVsb2FkVGV4dHVyZSgpLCB3aGljaAorICAgICAqIHdpbGwgdXBkYXRlIG91ciBpbnRlcm5hbCBkYXRhIHN0cnVjdHVyZXMgKGVnOiBFR0xJbWFnZUtIUiBvcgorICAgICAqIHRleHR1cmUgbmFtZXMpLiB3ZSBuZWVkIHRvIGRvIHRoaXMgZXZlbiBpZiBtUG9zdGVkRGlydHlSZWdpb24gaXMKKyAgICAgKiBlbXB0eSAtLSBpdCdzIG9ydGhvZ29uYWwgdG8gdGhlIGZhY3QgdGhhdCBhIG5ldyBidWZmZXIgd2FzIHBvc3RlZCwKKyAgICAgKiBmb3IgaW5zdGFuY2UsIGEgZGVnZW5lcmF0ZSBjYXNlIGNvdWxkIGJlIHRoYXQgdGhlIHVzZXIgZGlkIGFuIGVtcHR5CisgICAgICogdXBkYXRlIGJ1dCByZXBhaW50ZWQgdGhlIGJ1ZmZlciB3aXRoIGFwcHJvcHJpYXRlIGNvbnRlbnQgKGFmdGVyIGEKKyAgICAgKiByZXNpemUgZm9yIGluc3RhbmNlKS4KKyAgICAgKi8KKyAgICByZWxvYWRUZXh0dXJlKCBtUG9zdGVkRGlydHlSZWdpb24gKTsKIH0KIAogdm9pZCBMYXllcjo6dW5sb2NrUGFnZUZsaXAoCkBAIC01ODUsMjQgKzU3MiwyNjUgQEAKICAgICB9CiAgICAgaWYgKHZpc2libGVSZWdpb25TY3JlZW4uaXNFbXB0eSgpKSB7CiAgICAgICAgIC8vIGFuIGludmlzaWJsZSBsYXllciBzaG91bGQgbm90IGhvbGQgYSBmcmVlemUtbG9jawotICAgICAgICAvLyAoYmVjYXVzZSBpdCBtYXkgbmV2ZXIgYmUgdXBkYXRlZCBhbmQgdGhlcmVvcmUgbmV2ZXIgcmVsZWFzZSBpdCkKKyAgICAgICAgLy8gKGJlY2F1c2UgaXQgbWF5IG5ldmVyIGJlIHVwZGF0ZWQgYW5kIHRoZXJlZm9yZSBuZXZlciByZWxlYXNlIGl0KQogICAgICAgICBtRnJlZXplTG9jay5jbGVhcigpOwogICAgIH0KIH0KIAogdm9pZCBMYXllcjo6ZmluaXNoUGFnZUZsaXAoKQogewotICAgIHN0YXR1c190IGVyciA9IGxjYmxrLT51bmxvY2soIG1Gcm9udEJ1ZmZlckluZGV4ICk7Ci0gICAgTE9HRV9JRihlcnIhPU5PX0VSUk9SLCAKLSAgICAgICAgICAgICJsYXllciAlcCwgYnVmZmVyPSVkIHdhc24ndCBsb2NrZWQhIiwKLSAgICAgICAgICAgIHRoaXMsIG1Gcm9udEJ1ZmZlckluZGV4KTsKKyAgICBDbGllbnRSZWY6OkFjY2VzcyBzaGFyZWRDbGllbnQobVVzZXJDbGllbnRSZWYpOworICAgIFNoYXJlZEJ1ZmZlclNlcnZlciogbGNibGsoc2hhcmVkQ2xpZW50LmdldCgpKTsKKyAgICBpZiAobGNibGspIHsKKyAgICAgICAgaW50IGJ1ZiA9IG1CdWZmZXJNYW5hZ2VyLmdldEFjdGl2ZUJ1ZmZlckluZGV4KCk7CisgICAgICAgIGlmIChidWYgPj0gMCkgeworICAgICAgICAgICAgc3RhdHVzX3QgZXJyID0gbGNibGstPnVubG9jayggYnVmICk7CisgICAgICAgICAgICBMT0dFX0lGKGVyciE9Tk9fRVJST1IsCisgICAgICAgICAgICAgICAgICAgICJsYXllciAlcCwgYnVmZmVyPSVkIHdhc24ndCBsb2NrZWQhIiwKKyAgICAgICAgICAgICAgICAgICAgdGhpcywgYnVmKTsKKyAgICAgICAgfQorICAgIH0KK30KKworCit2b2lkIExheWVyOjpkdW1wKFN0cmluZzgmIHJlc3VsdCwgY2hhciogYnVmZmVyLCBzaXplX3QgU0laRSkgY29uc3QKK3sKKyAgICBMYXllckJhc2VDbGllbnQ6OmR1bXAocmVzdWx0LCBidWZmZXIsIFNJWkUpOworCisgICAgQ2xpZW50UmVmOjpBY2Nlc3Mgc2hhcmVkQ2xpZW50KG1Vc2VyQ2xpZW50UmVmKTsKKyAgICBTaGFyZWRCdWZmZXJTZXJ2ZXIqIGxjYmxrKHNoYXJlZENsaWVudC5nZXQoKSk7CisgICAgdWludDMyX3QgdG90YWxUaW1lID0gMDsKKyAgICBpZiAobGNibGspIHsKKyAgICAgICAgU2hhcmVkQnVmZmVyU3RhY2s6OlN0YXRpc3RpY3Mgc3RhdHMgPSBsY2Jsay0+Z2V0U3RhdHMoKTsKKyAgICAgICAgdG90YWxUaW1lPSBzdGF0cy50b3RhbFRpbWU7CisgICAgICAgIHJlc3VsdC5hcHBlbmQoIGxjYmxrLT5kdW1wKCIgICAgICAiKSApOworICAgIH0KKworICAgIHNwPGNvbnN0IEdyYXBoaWNCdWZmZXI+IGJ1ZjAoZ2V0QnVmZmVyKDApKTsKKyAgICBzcDxjb25zdCBHcmFwaGljQnVmZmVyPiBidWYxKGdldEJ1ZmZlcigxKSk7CisgICAgdWludDMyX3QgdzA9MCwgaDA9MCwgczA9MDsKKyAgICB1aW50MzJfdCB3MT0wLCBoMT0wLCBzMT0wOworICAgIGlmIChidWYwICE9IDApIHsKKyAgICAgICAgdzAgPSBidWYwLT5nZXRXaWR0aCgpOworICAgICAgICBoMCA9IGJ1ZjAtPmdldEhlaWdodCgpOworICAgICAgICBzMCA9IGJ1ZjAtPmdldFN0cmlkZSgpOworICAgIH0KKyAgICBpZiAoYnVmMSAhPSAwKSB7CisgICAgICAgIHcxID0gYnVmMS0+Z2V0V2lkdGgoKTsKKyAgICAgICAgaDEgPSBidWYxLT5nZXRIZWlnaHQoKTsKKyAgICAgICAgczEgPSBidWYxLT5nZXRTdHJpZGUoKTsKKyAgICB9CisgICAgc25wcmludGYoYnVmZmVyLCBTSVpFLAorICAgICAgICAgICAgIiAgICAgICIKKyAgICAgICAgICAgICJmb3JtYXQ9JTJkLCBbJTN1eCUzdTolM3VdIFslM3V4JTN1OiUzdV0sIgorICAgICAgICAgICAgIiBmcmVlemVMb2NrPSVwLCBkcS1xLXRpbWU9JXUgdXNcbiIsCisgICAgICAgICAgICBtRm9ybWF0LCB3MCwgaDAsIHMwLCB3MSwgaDEsIHMxLAorICAgICAgICAgICAgZ2V0RnJlZXplTG9jaygpLmdldCgpLCB0b3RhbFRpbWUpOworCisgICAgcmVzdWx0LmFwcGVuZChidWZmZXIpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTGF5ZXI6OkNsaWVudFJlZjo6Q2xpZW50UmVmKCkKKyAgICA6IG1Db250cm9sQmxvY2soMCksIG1Ub2tlbigtMSkgeworfQorCitMYXllcjo6Q2xpZW50UmVmOjp+Q2xpZW50UmVmKCkgeworfQorCitpbnQzMl90IExheWVyOjpDbGllbnRSZWY6OmdldFRva2VuKCkgY29uc3QgeworICAgIE11dGV4OjpBdXRvbG9jayBfbChtTG9jayk7CisgICAgcmV0dXJuIG1Ub2tlbjsKK30KKworc3A8VXNlckNsaWVudD4gTGF5ZXI6OkNsaWVudFJlZjo6Z2V0Q2xpZW50KCkgY29uc3QgeworICAgIE11dGV4OjpBdXRvbG9jayBfbChtTG9jayk7CisgICAgcmV0dXJuIG1Vc2VyQ2xpZW50LnByb21vdGUoKTsKK30KKworc3RhdHVzX3QgTGF5ZXI6OkNsaWVudFJlZjo6c2V0VG9rZW4oY29uc3Qgc3A8VXNlckNsaWVudD4mIHVjLAorICAgICAgICBjb25zdCBzcDxTaGFyZWRCdWZmZXJTZXJ2ZXI+JiBzaGFyZWRDbGllbnQsIGludDMyX3QgdG9rZW4pIHsKKyAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOworCisgICAgeyAvLyBzY29wZSBmb3Igc3Ryb25nIG1Vc2VyQ2xpZW50IHJlZmVyZW5jZQorICAgICAgICBzcDxVc2VyQ2xpZW50PiB1c2VyQ2xpZW50KG1Vc2VyQ2xpZW50LnByb21vdGUoKSk7CisgICAgICAgIGlmIChtVXNlckNsaWVudCAhPSAwICYmIG1Db250cm9sQmxvY2sgIT0gMCkgeworICAgICAgICAgICAgbUNvbnRyb2xCbG9jay0+c2V0U3RhdHVzKE5PX0lOSVQpOworICAgICAgICB9CisgICAgfQorCisgICAgbVVzZXJDbGllbnQgPSB1YzsKKyAgICBtVG9rZW4gPSB0b2tlbjsKKyAgICBtQ29udHJvbEJsb2NrID0gc2hhcmVkQ2xpZW50OworICAgIHJldHVybiBOT19FUlJPUjsKK30KKworc3A8VXNlckNsaWVudD4gTGF5ZXI6OkNsaWVudFJlZjo6Z2V0VXNlckNsaWVudFVuc2FmZSgpIGNvbnN0IHsKKyAgICByZXR1cm4gbVVzZXJDbGllbnQucHJvbW90ZSgpOworfQorCisvLyB0aGlzIGNsYXNzIGdpdmVzIHVzIGFjY2VzcyB0byBTaGFyZWRCdWZmZXJTZXJ2ZXIgc2FmZWx5CisvLyBpdCBtYWtlcyBzdXJlIHRoZSBVc2VyQ2xpZW50IChhbmQgaXRzIGFzc29jaWF0ZWQgc2hhcmVkIG1lbW9yeSkKKy8vIHdvbid0IGdvIGF3YXkgd2hpbGUgd2UncmUgYWNjZXNzaW5nIGl0LgorTGF5ZXI6OkNsaWVudFJlZjo6QWNjZXNzOjpBY2Nlc3MoY29uc3QgQ2xpZW50UmVmJiByZWYpCisgICAgOiBtQ29udHJvbEJsb2NrKDApCit7CisgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKHJlZi5tTG9jayk7CisgICAgbVVzZXJDbGllbnRTdHJvbmdSZWYgPSByZWYubVVzZXJDbGllbnQucHJvbW90ZSgpOworICAgIGlmIChtVXNlckNsaWVudFN0cm9uZ1JlZiAhPSAwKQorICAgICAgICBtQ29udHJvbEJsb2NrID0gcmVmLm1Db250cm9sQmxvY2s7Cit9CisKK0xheWVyOjpDbGllbnRSZWY6OkFjY2Vzczo6fkFjY2VzcygpCit7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitMYXllcjo6QnVmZmVyTWFuYWdlcjo6QnVmZmVyTWFuYWdlcihUZXh0dXJlTWFuYWdlciYgdG0pCisgICAgOiBtTnVtQnVmZmVycyhOVU1fQlVGRkVSUyksIG1UZXh0dXJlTWFuYWdlcih0bSksCisgICAgICBtQWN0aXZlQnVmZmVyKC0xKSwgbUZhaWxvdmVyKGZhbHNlKQoreworfQorCitMYXllcjo6QnVmZmVyTWFuYWdlcjo6fkJ1ZmZlck1hbmFnZXIoKQoreworfQorCitzdGF0dXNfdCBMYXllcjo6QnVmZmVyTWFuYWdlcjo6cmVzaXplKHNpemVfdCBzaXplKQoreworICAgIE11dGV4OjpBdXRvbG9jayBfbChtTG9jayk7CisgICAgbU51bUJ1ZmZlcnMgPSBzaXplOworICAgIHJldHVybiBOT19FUlJPUjsKK30KKworLy8gb25seSBmb3IgZGVidWdnaW5nCitzcDxHcmFwaGljQnVmZmVyPiBMYXllcjo6QnVmZmVyTWFuYWdlcjo6Z2V0QnVmZmVyKHNpemVfdCBpbmRleCkgY29uc3QgeworICAgIHJldHVybiBtQnVmZmVyRGF0YVtpbmRleF0uYnVmZmVyOworfQorCitzdGF0dXNfdCBMYXllcjo6QnVmZmVyTWFuYWdlcjo6c2V0QWN0aXZlQnVmZmVySW5kZXgoc2l6ZV90IGluZGV4KSB7CisgICAgbUFjdGl2ZUJ1ZmZlciA9IGluZGV4OworICAgIHJldHVybiBOT19FUlJPUjsKK30KKworc2l6ZV90IExheWVyOjpCdWZmZXJNYW5hZ2VyOjpnZXRBY3RpdmVCdWZmZXJJbmRleCgpIGNvbnN0IHsKKyAgICByZXR1cm4gbUFjdGl2ZUJ1ZmZlcjsKK30KKworVGV4dHVyZSBMYXllcjo6QnVmZmVyTWFuYWdlcjo6Z2V0QWN0aXZlVGV4dHVyZSgpIGNvbnN0IHsKKyAgICBUZXh0dXJlIHJlczsKKyAgICBpZiAobUZhaWxvdmVyIHx8IG1BY3RpdmVCdWZmZXI8MCkgeworICAgICAgICByZXMgPSBtRmFpbG92ZXJUZXh0dXJlOworICAgIH0gZWxzZSB7CisgICAgICAgIHN0YXRpY19jYXN0PEltYWdlJj4ocmVzKSA9IG1CdWZmZXJEYXRhW21BY3RpdmVCdWZmZXJdLnRleHR1cmU7CisgICAgfQorICAgIHJldHVybiByZXM7Cit9CisKK3NwPEdyYXBoaWNCdWZmZXI+IExheWVyOjpCdWZmZXJNYW5hZ2VyOjpnZXRBY3RpdmVCdWZmZXIoKSBjb25zdCB7CisgICAgc3A8R3JhcGhpY0J1ZmZlcj4gcmVzdWx0OworICAgIGNvbnN0IHNzaXplX3QgYWN0aXZlQnVmZmVyID0gbUFjdGl2ZUJ1ZmZlcjsKKyAgICBpZiAoYWN0aXZlQnVmZmVyID49IDApIHsKKyAgICAgICAgQnVmZmVyRGF0YSBjb25zdCAqIGNvbnN0IGJ1ZmZlcnMgPSBtQnVmZmVyRGF0YTsKKyAgICAgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1Mb2NrKTsKKyAgICAgICAgcmVzdWx0ID0gYnVmZmVyc1thY3RpdmVCdWZmZXJdLmJ1ZmZlcjsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3A8R3JhcGhpY0J1ZmZlcj4gTGF5ZXI6OkJ1ZmZlck1hbmFnZXI6OmRldGFjaEJ1ZmZlcihzaXplX3QgaW5kZXgpCit7CisgICAgQnVmZmVyRGF0YSogY29uc3QgYnVmZmVycyA9IG1CdWZmZXJEYXRhOworICAgIHNwPEdyYXBoaWNCdWZmZXI+IGJ1ZmZlcjsKKyAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOworICAgIGJ1ZmZlciA9IGJ1ZmZlcnNbaW5kZXhdLmJ1ZmZlcjsKKyAgICBidWZmZXJzW2luZGV4XS5idWZmZXIgPSAwOworICAgIHJldHVybiBidWZmZXI7Cit9CisKK3N0YXR1c190IExheWVyOjpCdWZmZXJNYW5hZ2VyOjphdHRhY2hCdWZmZXIoc2l6ZV90IGluZGV4LAorICAgICAgICBjb25zdCBzcDxHcmFwaGljQnVmZmVyPiYgYnVmZmVyKQoreworICAgIEJ1ZmZlckRhdGEqIGNvbnN0IGJ1ZmZlcnMgPSBtQnVmZmVyRGF0YTsKKyAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOworICAgIGJ1ZmZlcnNbaW5kZXhdLmJ1ZmZlciA9IGJ1ZmZlcjsKKyAgICBidWZmZXJzW2luZGV4XS50ZXh0dXJlLmRpcnR5ID0gdHJ1ZTsKKyAgICByZXR1cm4gTk9fRVJST1I7Cit9CisKK3N0YXR1c190IExheWVyOjpCdWZmZXJNYW5hZ2VyOjpkZXN0cm95KEVHTERpc3BsYXkgZHB5KQoreworICAgIEJ1ZmZlckRhdGEqIGNvbnN0IGJ1ZmZlcnMgPSBtQnVmZmVyRGF0YTsKKyAgICBzaXplX3QgbnVtOworICAgIHsgLy8gc2NvcGUgZm9yIHRoZSBsb2NrCisgICAgICAgIE11dGV4OjpBdXRvbG9jayBfbChtTG9jayk7CisgICAgICAgIG51bSA9IG1OdW1CdWZmZXJzOworICAgICAgICBmb3IgKHNpemVfdCBpPTAgOyBpPG51bSA7IGkrKykgeworICAgICAgICAgICAgYnVmZmVyc1tpXS5idWZmZXIgPSAwOworICAgICAgICB9CisgICAgfQorICAgIGZvciAoc2l6ZV90IGk9MCA7IGk8bnVtIDsgaSsrKSB7CisgICAgICAgIGRlc3Ryb3lUZXh0dXJlKCZidWZmZXJzW2ldLnRleHR1cmUsIGRweSk7CisgICAgfQorICAgIGRlc3Ryb3lUZXh0dXJlKCZtRmFpbG92ZXJUZXh0dXJlLCBkcHkpOworICAgIHJldHVybiBOT19FUlJPUjsKK30KKworc3RhdHVzX3QgTGF5ZXI6OkJ1ZmZlck1hbmFnZXI6OmluaXRFZ2xJbWFnZShFR0xEaXNwbGF5IGRweSwKKyAgICAgICAgY29uc3Qgc3A8R3JhcGhpY0J1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBzdGF0dXNfdCBlcnIgPSBOT19JTklUOworICAgIHNzaXplX3QgaW5kZXggPSBtQWN0aXZlQnVmZmVyOworICAgIGlmIChpbmRleCA+PSAwKSB7CisgICAgICAgIGlmICghbUZhaWxvdmVyKSB7CisgICAgICAgICAgICBJbWFnZSYgdGV4dHVyZShtQnVmZmVyRGF0YVtpbmRleF0udGV4dHVyZSk7CisgICAgICAgICAgICBlcnIgPSBtVGV4dHVyZU1hbmFnZXIuaW5pdEVnbEltYWdlKCZ0ZXh0dXJlLCBkcHksIGJ1ZmZlcik7CisgICAgICAgICAgICAvLyBpZiBFR0xJbWFnZSBmYWlscywgd2Ugc3dpdGNoIHRvIHJlZ3VsYXIgdGV4dHVyZSBtb2RlLCBhbmQgd2UKKyAgICAgICAgICAgIC8vIGZyZWUgYWxsIHJlc291cmNlcyBhc3NvY2lhdGVkIHdpdGggdXNpbmcgRUdMSW1hZ2VzLgorICAgICAgICAgICAgaWYgKGVyciA9PSBOT19FUlJPUikgeworICAgICAgICAgICAgICAgIG1GYWlsb3ZlciA9IGZhbHNlOworICAgICAgICAgICAgICAgIGRlc3Ryb3lUZXh0dXJlKCZtRmFpbG92ZXJUZXh0dXJlLCBkcHkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtRmFpbG92ZXIgPSB0cnVlOworICAgICAgICAgICAgICAgIGNvbnN0IHNpemVfdCBudW0gPSBtTnVtQnVmZmVyczsKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpPTAgOyBpPG51bSA7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBkZXN0cm95VGV4dHVyZSgmbUJ1ZmZlckRhdGFbaV0udGV4dHVyZSwgZHB5KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyB3ZSBmYWlsZWQgb25jZSwgZG9uJ3QgdHJ5IGFnYWluCisgICAgICAgICAgICBlcnIgPSBCQURfVkFMVUU7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGVycjsKK30KKworc3RhdHVzX3QgTGF5ZXI6OkJ1ZmZlck1hbmFnZXI6OmxvYWRUZXh0dXJlKAorICAgICAgICBjb25zdCBSZWdpb24mIGRpcnR5LCBjb25zdCBHR0xTdXJmYWNlJiB0KQoreworICAgIHJldHVybiBtVGV4dHVyZU1hbmFnZXIubG9hZFRleHR1cmUoJm1GYWlsb3ZlclRleHR1cmUsIGRpcnR5LCB0KTsKK30KKworc3RhdHVzX3QgTGF5ZXI6OkJ1ZmZlck1hbmFnZXI6OmRlc3Ryb3lUZXh0dXJlKEltYWdlKiB0ZXgsIEVHTERpc3BsYXkgZHB5KQoreworICAgIGlmICh0ZXgtPm5hbWUgIT0gLTFVKSB7CisgICAgICAgIGdsRGVsZXRlVGV4dHVyZXMoMSwgJnRleC0+bmFtZSk7CisgICAgICAgIHRleC0+bmFtZSA9IC0xVTsKKyAgICB9CisgICAgaWYgKHRleC0+aW1hZ2UgIT0gRUdMX05PX0lNQUdFX0tIUikgeworICAgICAgICBlZ2xEZXN0cm95SW1hZ2VLSFIoZHB5LCB0ZXgtPmltYWdlKTsKKyAgICAgICAgdGV4LT5pbWFnZSA9IEVHTF9OT19JTUFHRV9LSFI7CisgICAgfQorICAgIHJldHVybiBOT19FUlJPUjsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIExheWVyOjpTdXJmYWNlTGF5ZXI6OlN1cmZhY2VMYXllcihjb25zdCBzcDxTdXJmYWNlRmxpbmdlcj4mIGZsaW5nZXIsCi0gICAgICAgIFN1cmZhY2VJRCBpZCwgY29uc3Qgc3A8TGF5ZXI+JiBvd25lcikKLSAgICA6IFN1cmZhY2UoZmxpbmdlciwgaWQsIG93bmVyLT5nZXRJZGVudGl0eSgpLCBvd25lcikKKyAgICAgICAgY29uc3Qgc3A8TGF5ZXI+JiBvd25lcikKKyAgICA6IFN1cmZhY2UoZmxpbmdlciwgb3duZXItPmdldElkZW50aXR5KCksIG93bmVyKQogewogfQogCkBAIC02MTAsMjAgKzgzOCwzNyBAQAogewogfQogCi1zcDxHcmFwaGljQnVmZmVyPiBMYXllcjo6U3VyZmFjZUxheWVyOjpyZXF1ZXN0QnVmZmVyKGludCBpbmRleCwgaW50IHVzYWdlKQorc3A8R3JhcGhpY0J1ZmZlcj4gTGF5ZXI6OlN1cmZhY2VMYXllcjo6cmVxdWVzdEJ1ZmZlcihpbnQgaW5kZXgsCisgICAgICAgIHVpbnQzMl90IHcsIHVpbnQzMl90IGgsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdXNhZ2UpCiB7CiAgICAgc3A8R3JhcGhpY0J1ZmZlcj4gYnVmZmVyOwogICAgIHNwPExheWVyPiBvd25lcihnZXRPd25lcigpKTsKICAgICBpZiAob3duZXIgIT0gMCkgewotICAgICAgICBMT0dFX0lGKHVpbnQzMl90KGluZGV4KT49TlVNX0JVRkZFUlMsCi0gICAgICAgICAgICAgICAgImdldEJ1ZmZlcigpIGluZGV4ICglZCkgb3V0IG9mIHJhbmdlIiwgaW5kZXgpOwotICAgICAgICBpZiAodWludDMyX3QoaW5kZXgpIDwgTlVNX0JVRkZFUlMpIHsKLSAgICAgICAgICAgIGJ1ZmZlciA9IG93bmVyLT5yZXF1ZXN0QnVmZmVyKGluZGV4LCB1c2FnZSk7Ci0gICAgICAgIH0KKyAgICAgICAgLyoKKyAgICAgICAgICogcmVxdWVzdEJ1ZmZlcigpIGNhbm5vdCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQKKyAgICAgICAgICogYXMgaXQgY291bGQgY2F1c2UgYSBkZWFkLWxvY2ssIHNpbmNlIGl0IG1heSBoYXZlIHRvIHdhaXQKKyAgICAgICAgICogb24gY29uZGl0aW9ucyB1cGRhdGVkIG15IHRoZSBtYWluIHRocmVhZC4KKyAgICAgICAgICovCisgICAgICAgIGJ1ZmZlciA9IG93bmVyLT5yZXF1ZXN0QnVmZmVyKGluZGV4LCB3LCBoLCBmb3JtYXQsIHVzYWdlKTsKICAgICB9CiAgICAgcmV0dXJuIGJ1ZmZlcjsKIH0KIAorc3RhdHVzX3QgTGF5ZXI6OlN1cmZhY2VMYXllcjo6c2V0QnVmZmVyQ291bnQoaW50IGJ1ZmZlckNvdW50KQoreworICAgIHN0YXR1c190IGVyciA9IERFQURfT0JKRUNUOworICAgIHNwPExheWVyPiBvd25lcihnZXRPd25lcigpKTsKKyAgICBpZiAob3duZXIgIT0gMCkgeworICAgICAgICAvKgorICAgICAgICAgKiBzZXRCdWZmZXJDb3VudCgpIGNhbm5vdCBiZSBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQKKyAgICAgICAgICogYXMgaXQgY291bGQgY2F1c2UgYSBkZWFkLWxvY2ssIHNpbmNlIGl0IG1heSBoYXZlIHRvIHdhaXQKKyAgICAgICAgICogb24gY29uZGl0aW9ucyB1cGRhdGVkIG15IHRoZSBtYWluIHRocmVhZC4KKyAgICAgICAgICovCisgICAgICAgIGVyciA9IG93bmVyLT5zZXRCdWZmZXJDb3VudChidWZmZXJDb3VudCk7CisgICAgfQorICAgIHJldHVybiBlcnI7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAKZGlmZiAtLWdpdCBhL2xpYnMvc3VyZmFjZWZsaW5nZXIvTGF5ZXIuaCBiL2xpYnMvc3VyZmFjZWZsaW5nZXIvTGF5ZXIuaAppbmRleCA3NDNhZmI0Li5lMWQyODNiIDEwMDY0NAotLS0gYS9saWJzL3N1cmZhY2VmbGluZ2VyL0xheWVyLmgKKysrIGIvbGlicy9zdXJmYWNlZmxpbmdlci9MYXllci5oCkBAIC0zMSwzNiArMzEsNDMgQEAKIAogI2luY2x1ZGUgIkxheWVyQmFzZS5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybS5oIgorI2luY2x1ZGUgIlRleHR1cmVNYW5hZ2VyLmgiCiAKIG5hbWVzcGFjZSBhbmRyb2lkIHsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWNsYXNzIENsaWVudDsKIGNsYXNzIEZyZWV6ZUxvY2s7CitjbGFzcyBDbGllbnQ7CitjbGFzcyBHTEV4dGVuc2lvbnM7CitjbGFzcyBVc2VyQ2xpZW50OwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotY29uc3Qgc2l6ZV90IE5VTV9CVUZGRVJTID0gMjsKLQogY2xhc3MgTGF5ZXIgOiBwdWJsaWMgTGF5ZXJCYXNlQ2xpZW50CiB7Ci1wdWJsaWM6ICAgIAotICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCB0eXBlSW5mbzsKLSAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgdHlwZUlEOwotICAgIHZpcnR1YWwgY2hhciBjb25zdCogZ2V0VHlwZUlEKCkgY29uc3QgeyByZXR1cm4gdHlwZUlEOyB9Ci0gICAgdmlydHVhbCB1aW50MzJfdCBnZXRUeXBlSW5mbygpIGNvbnN0IHsgcmV0dXJuIHR5cGVJbmZvOyB9Ci0gICAgCi0gICAgICAgICAgICAgICAgIExheWVyKFN1cmZhY2VGbGluZ2VyKiBmbGluZ2VyLCBEaXNwbGF5SUQgZGlzcGxheSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcDxDbGllbnQ+JiBjbGllbnQsIGludDMyX3QgaSk7CitwdWJsaWM6CisgICAgICAgICAgICBMYXllcihTdXJmYWNlRmxpbmdlciogZmxpbmdlciwgRGlzcGxheUlEIGRpc3BsYXksCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwPENsaWVudD4mIGNsaWVudCk7CiAKLSAgICAgICAgdmlydHVhbCB+TGF5ZXIoKTsKKyAgICB2aXJ0dWFsIH5MYXllcigpOwogCisgICAgdmlydHVhbCBjb25zdCBjaGFyKiBnZXRUeXBlSWQoKSBjb25zdCB7IHJldHVybiAiTGF5ZXIiOyB9CisKKyAgICAvLyB0aGUgdGhpcyBsYXllcidzIHNpemUgYW5kIGZvcm1hdAogICAgIHN0YXR1c190IHNldEJ1ZmZlcnModWludDMyX3QgdywgdWludDMyX3QgaCwgCiAgICAgICAgICAgICBQaXhlbEZvcm1hdCBmb3JtYXQsIHVpbnQzMl90IGZsYWdzPTApOwogCi0gICAgdm9pZCBzZXREcmF3aW5nU2l6ZSh1aW50MzJfdCB3LCB1aW50MzJfdCBoKTsKKyAgICAvLyBhc3NvY2lhdGUgYSBVc2VyQ2xpZW50IHRvIHRoaXMgTGF5ZXIKKyAgICBzdGF0dXNfdCBzZXRUb2tlbihjb25zdCBzcDxVc2VyQ2xpZW50PiYgdWMsIFNoYXJlZENsaWVudCogc2MsIGludDMyX3QgaWR4KTsKKyAgICBpbnQzMl90IGdldFRva2VuKCkgY29uc3Q7CisgICAgc3A8VXNlckNsaWVudD4gZ2V0Q2xpZW50KCkgY29uc3Q7CiAKKyAgICAvLyBTZXQgdGhpcyBMYXllcidzIGJ1ZmZlcnMgc2l6ZQorICAgIHZvaWQgc2V0QnVmZmVyU2l6ZSh1aW50MzJfdCB3LCB1aW50MzJfdCBoKTsKKyAgICBib29sIGlzRml4ZWRTaXplKCkgY29uc3Q7CisKKyAgICAvLyBMYXllckJhc2UgaW50ZXJmYWNlCiAgICAgdmlydHVhbCB2b2lkIG9uRHJhdyhjb25zdCBSZWdpb24mIGNsaXApIGNvbnN0OwogICAgIHZpcnR1YWwgdWludDMyX3QgZG9UcmFuc2FjdGlvbih1aW50MzJfdCB0cmFuc2FjdGlvbkZsYWdzKTsKICAgICB2aXJ0dWFsIHZvaWQgbG9ja1BhZ2VGbGlwKGJvb2wmIHJlY29tcHV0ZVZpc2libGVSZWdpb25zKTsKQEAgLTY4LDYzICs3NSwxNjEgQEAKICAgICB2aXJ0dWFsIHZvaWQgZmluaXNoUGFnZUZsaXAoKTsKICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNCbGVuZGluZygpIGNvbnN0ICAgICAgeyByZXR1cm4gbU5lZWRzQmxlbmRpbmc7IH0KICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNEaXRoZXJpbmcoKSBjb25zdCAgICAgeyByZXR1cm4gbU5lZWRzRGl0aGVyaW5nOyB9CisgICAgdmlydHVhbCBib29sIG5lZWRzRmlsdGVyaW5nKCkgY29uc3Q7CiAgICAgdmlydHVhbCBib29sIGlzU2VjdXJlKCkgY29uc3QgICAgICAgICAgIHsgcmV0dXJuIG1TZWN1cmU7IH0KICAgICB2aXJ0dWFsIHNwPFN1cmZhY2U+IGNyZWF0ZVN1cmZhY2UoKSBjb25zdDsKICAgICB2aXJ0dWFsIHN0YXR1c190IGRpdGNoKCk7Ci0gICAgCisgICAgdmlydHVhbCB2b2lkIG9uUmVtb3ZlZCgpOworCiAgICAgLy8gb25seSBmb3IgZGVidWdnaW5nCi0gICAgaW5saW5lIHNwPEdyYXBoaWNCdWZmZXI+IGdldEJ1ZmZlcihpbnQgaSkgeyByZXR1cm4gbUJ1ZmZlcnNbaV07IH0KKyAgICBpbmxpbmUgc3A8R3JhcGhpY0J1ZmZlcj4gZ2V0QnVmZmVyKGludCBpKSBjb25zdCB7CisgICAgICAgIHJldHVybiBtQnVmZmVyTWFuYWdlci5nZXRCdWZmZXIoaSk7IH0KICAgICAvLyBvbmx5IGZvciBkZWJ1Z2dpbmcKLSAgICBpbmxpbmUgY29uc3Qgc3A8RnJlZXplTG9jaz4mICBnZXRGcmVlemVMb2NrKCkgY29uc3QgeyByZXR1cm4gbUZyZWV6ZUxvY2s7IH0KLSAgICAvLyBvbmx5IGZvciBkZWJ1Z2dpbmcKLSAgICBpbmxpbmUgUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQoKSBjb25zdCB7IHJldHVybiBtRm9ybWF0OyB9Ci0gICAgLy8gb25seSBmb3IgZGVidWdnaW5nCi0gICAgaW5saW5lIGludCBnZXRGcm9udEJ1ZmZlckluZGV4KCkgY29uc3QgeyByZXR1cm4gbUZyb250QnVmZmVySW5kZXg7IH0KKyAgICBpbmxpbmUgY29uc3Qgc3A8RnJlZXplTG9jaz4mICBnZXRGcmVlemVMb2NrKCkgY29uc3QgeworICAgICAgICByZXR1cm4gbUZyZWV6ZUxvY2s7IH0KKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgdm9pZCBkdW1wKFN0cmluZzgmIHJlc3VsdCwgY2hhciogc2NyYXRjaCwgc2l6ZV90IHNpemUpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIGlubGluZSBzcDxHcmFwaGljQnVmZmVyPiBnZXRGcm9udEJ1ZmZlckxvY2tlZCgpIHsKLSAgICAgICAgcmV0dXJuIG1CdWZmZXJzW21Gcm9udEJ1ZmZlckluZGV4XTsKLSAgICB9Ci0gCiAgICAgdm9pZCByZWxvYWRUZXh0dXJlKGNvbnN0IFJlZ2lvbiYgZGlydHkpOwotCiAgICAgdWludDMyX3QgZ2V0RWZmZWN0aXZlVXNhZ2UodWludDMyX3QgdXNhZ2UpIGNvbnN0OworICAgIHNwPEdyYXBoaWNCdWZmZXI+IHJlcXVlc3RCdWZmZXIoaW50IGJ1ZmZlcklkeCwKKyAgICAgICAgICAgIHVpbnQzMl90IHcsIHVpbnQzMl90IGgsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdXNhZ2UpOworICAgIHN0YXR1c190IHNldEJ1ZmZlckNvdW50KGludCBidWZmZXJDb3VudCk7CiAKLSAgICBzcDxHcmFwaGljQnVmZmVyPiByZXF1ZXN0QnVmZmVyKGludCBpbmRleCwgaW50IHVzYWdlKTsKLSAgICB2b2lkIGRlc3Ryb3koKTsKKyAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAgICAgY2xhc3MgU3VyZmFjZUxheWVyIDogcHVibGljIExheWVyQmFzZUNsaWVudDo6U3VyZmFjZSB7CiAgICAgcHVibGljOgotICAgICAgICBTdXJmYWNlTGF5ZXIoY29uc3Qgc3A8U3VyZmFjZUZsaW5nZXI+JiBmbGluZ2VyLAotICAgICAgICAgICAgICAgIFN1cmZhY2VJRCBpZCwgY29uc3Qgc3A8TGF5ZXI+JiBvd25lcik7CisgICAgICAgIFN1cmZhY2VMYXllcihjb25zdCBzcDxTdXJmYWNlRmxpbmdlcj4mIGZsaW5nZXIsIGNvbnN0IHNwPExheWVyPiYgb3duZXIpOwogICAgICAgICB+U3VyZmFjZUxheWVyKCk7CiAgICAgcHJpdmF0ZToKLSAgICAgICAgdmlydHVhbCBzcDxHcmFwaGljQnVmZmVyPiByZXF1ZXN0QnVmZmVyKGludCBpbmRleCwgaW50IHVzYWdlKTsKKyAgICAgICAgdmlydHVhbCBzcDxHcmFwaGljQnVmZmVyPiByZXF1ZXN0QnVmZmVyKGludCBidWZmZXJJZHgsCisgICAgICAgICAgICAgICAgdWludDMyX3QgdywgdWludDMyX3QgaCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB1c2FnZSk7CisgICAgICAgIHZpcnR1YWwgc3RhdHVzX3Qgc2V0QnVmZmVyQ291bnQoaW50IGJ1ZmZlckNvdW50KTsKICAgICAgICAgc3A8TGF5ZXI+IGdldE93bmVyKCkgY29uc3QgewogICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PExheWVyKj4oU3VyZmFjZTo6Z2V0T3duZXIoKS5nZXQoKSk7CiAgICAgICAgIH0KICAgICB9OwogICAgIGZyaWVuZCBjbGFzcyBTdXJmYWNlTGF5ZXI7Ci0gICAgCi0gICAgc3A8U3VyZmFjZT4gICAgICAgICAgICAgbVN1cmZhY2U7CiAKLSAgICAgICAgICAgIGJvb2wgICAgICAgICAgICBtU2VjdXJlOwotICAgICAgICAgICAgYm9vbCAgICAgICAgICAgIG1Ob0VHTEltYWdlRm9yU3dCdWZmZXJzOwotICAgICAgICAgICAgaW50MzJfdCAgICAgICAgIG1Gcm9udEJ1ZmZlckluZGV4OwotICAgICAgICAgICAgYm9vbCAgICAgICAgICAgIG1OZWVkc0JsZW5kaW5nOwotICAgICAgICAgICAgYm9vbCAgICAgICAgICAgIG1OZWVkc0RpdGhlcmluZzsKLSAgICAgICAgICAgIFJlZ2lvbiAgICAgICAgICBtUG9zdGVkRGlydHlSZWdpb247Ci0gICAgICAgICAgICBzcDxGcmVlemVMb2NrPiAgbUZyZWV6ZUxvY2s7Ci0gICAgICAgICAgICBQaXhlbEZvcm1hdCAgICAgbUZvcm1hdDsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gcHJvdGVjdGVkIGJ5IG1Mb2NrCi0gICAgICAgICAgICBzcDxHcmFwaGljQnVmZmVyPiBtQnVmZmVyc1tOVU1fQlVGRkVSU107Ci0gICAgICAgICAgICBUZXh0dXJlICAgICAgICAgbVRleHR1cmVzW05VTV9CVUZGRVJTXTsKLSAgICAgICAgICAgIHNwPEdyYXBoaWNCdWZmZXI+IG1IeWJyaWRCdWZmZXI7Ci0gICAgICAgICAgICB1aW50MzJfdCAgICAgICAgbVdpZHRoOwotICAgICAgICAgICAgdWludDMyX3QgICAgICAgIG1IZWlnaHQ7Ci0gICAgICAgICAgICAKLSAgIG11dGFibGUgTXV0ZXggbUxvY2s7CisgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIGNsYXNzIENsaWVudFJlZiB7CisgICAgICAgIENsaWVudFJlZihjb25zdCBDbGllbnRSZWYmIHJocyk7CisgICAgICAgIENsaWVudFJlZiYgb3BlcmF0b3IgPSAoY29uc3QgQ2xpZW50UmVmJiByaHMpOworICAgICAgICBtdXRhYmxlIE11dGV4IG1Mb2NrOworICAgICAgICAvLyBiaW5kZXIgdGhyZWFkLCBwYWdlLWZsaXAgdGhyZWFkCisgICAgICAgIHNwPFNoYXJlZEJ1ZmZlclNlcnZlcj4gbUNvbnRyb2xCbG9jazsKKyAgICAgICAgd3A8VXNlckNsaWVudD4gbVVzZXJDbGllbnQ7CisgICAgICAgIGludDMyX3QgbVRva2VuOworICAgIHB1YmxpYzoKKyAgICAgICAgQ2xpZW50UmVmKCk7CisgICAgICAgIH5DbGllbnRSZWYoKTsKKyAgICAgICAgaW50MzJfdCBnZXRUb2tlbigpIGNvbnN0OworICAgICAgICBzcDxVc2VyQ2xpZW50PiBnZXRDbGllbnQoKSBjb25zdDsKKyAgICAgICAgc3RhdHVzX3Qgc2V0VG9rZW4oY29uc3Qgc3A8VXNlckNsaWVudD4mIHVjLAorICAgICAgICAgICAgICAgIGNvbnN0IHNwPFNoYXJlZEJ1ZmZlclNlcnZlcj4mIHNoYXJlZENsaWVudCwgaW50MzJfdCB0b2tlbik7CisgICAgICAgIHNwPFVzZXJDbGllbnQ+IGdldFVzZXJDbGllbnRVbnNhZmUoKSBjb25zdDsKKyAgICAgICAgY2xhc3MgQWNjZXNzIHsKKyAgICAgICAgICAgIEFjY2Vzcyhjb25zdCBBY2Nlc3MmIHJocyk7CisgICAgICAgICAgICBBY2Nlc3MmIG9wZXJhdG9yID0gKGNvbnN0IEFjY2VzcyYgcmhzKTsKKyAgICAgICAgICAgIHNwPFVzZXJDbGllbnQ+IG1Vc2VyQ2xpZW50U3Ryb25nUmVmOworICAgICAgICAgICAgc3A8U2hhcmVkQnVmZmVyU2VydmVyPiBtQ29udHJvbEJsb2NrOworICAgICAgICBwdWJsaWM6CisgICAgICAgICAgICBBY2Nlc3MoY29uc3QgQ2xpZW50UmVmJiByZWYpOworICAgICAgICAgICAgfkFjY2VzcygpOworICAgICAgICAgICAgaW5saW5lIFNoYXJlZEJ1ZmZlclNlcnZlciogZ2V0KCkgY29uc3QgeyByZXR1cm4gbUNvbnRyb2xCbG9jay5nZXQoKTsgfQorICAgICAgICB9OworICAgICAgICBmcmllbmQgY2xhc3MgQWNjZXNzOworICAgIH07CisKKyAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgY2xhc3MgQnVmZmVyTWFuYWdlciB7CisgICAgICAgIHN0YXRpYyBjb25zdCBzaXplX3QgTlVNX0JVRkZFUlMgPSAyOworICAgICAgICBzdHJ1Y3QgQnVmZmVyRGF0YSB7CisgICAgICAgICAgICBzcDxHcmFwaGljQnVmZmVyPiAgIGJ1ZmZlcjsKKyAgICAgICAgICAgIEltYWdlICAgICAgICAgICAgICAgdGV4dHVyZTsKKyAgICAgICAgfTsKKyAgICAgICAgLy8gdGhpcyBsb2NrIHByb3RlY3QgbUJ1ZmZlckRhdGFbXS5idWZmZXIgYnV0IHNpbmNlIHRoZXJlCisgICAgICAgIC8vIGlzIHZlcnkgbGl0dGxlIGNvbnRlbnRpb24sIHdlIGhhdmUgb25seSBvbmUgbGlrZSBmb3IKKyAgICAgICAgLy8gdGhlIHdob2xlIGFycmF5LCB3ZSBhbHNvIHVzZSBpdCB0byBwcm90ZWN0IG1OdW1CdWZmZXJzLgorICAgICAgICBtdXRhYmxlIE11dGV4IG1Mb2NrOworICAgICAgICBCdWZmZXJEYXRhICAgICAgICAgIG1CdWZmZXJEYXRhW1NoYXJlZEJ1ZmZlclN0YWNrOjpOVU1fQlVGRkVSX01BWF07CisgICAgICAgIHNpemVfdCAgICAgICAgICAgICAgbU51bUJ1ZmZlcnM7CisgICAgICAgIFRleHR1cmUgICAgICAgICAgICAgbUZhaWxvdmVyVGV4dHVyZTsKKyAgICAgICAgVGV4dHVyZU1hbmFnZXImICAgICBtVGV4dHVyZU1hbmFnZXI7CisgICAgICAgIHNzaXplX3QgICAgICAgICAgICAgbUFjdGl2ZUJ1ZmZlcjsKKyAgICAgICAgYm9vbCAgICAgICAgICAgICAgICBtRmFpbG92ZXI7CisgICAgICAgIHN0YXRpYyBzdGF0dXNfdCBkZXN0cm95VGV4dHVyZShJbWFnZSogdGV4LCBFR0xEaXNwbGF5IGRweSk7CisKKyAgICBwdWJsaWM6CisgICAgICAgIHN0YXRpYyBzaXplX3QgZ2V0RGVmYXVsdEJ1ZmZlckNvdW50KCkgeyByZXR1cm4gTlVNX0JVRkZFUlM7IH0KKyAgICAgICAgQnVmZmVyTWFuYWdlcihUZXh0dXJlTWFuYWdlciYgdG0pOworICAgICAgICB+QnVmZmVyTWFuYWdlcigpOworCisgICAgICAgIC8vIGRldGFjaC9hdHRhY2ggYnVmZmVyIGZyb20vdG8gZ2l2ZW4gaW5kZXgKKyAgICAgICAgc3A8R3JhcGhpY0J1ZmZlcj4gZGV0YWNoQnVmZmVyKHNpemVfdCBpbmRleCk7CisgICAgICAgIHN0YXR1c190IGF0dGFjaEJ1ZmZlcihzaXplX3QgaW5kZXgsIGNvbnN0IHNwPEdyYXBoaWNCdWZmZXI+JiBidWZmZXIpOworICAgICAgICAvLyByZXNpemUgdGhlIG51bWJlciBvZiBhY3RpdmUgYnVmZmVycworICAgICAgICBzdGF0dXNfdCByZXNpemUoc2l6ZV90IHNpemUpOworCisgICAgICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgLy8gbXVzdCBiZSBjYWxsZWQgZnJvbSBHTCB0aHJlYWQKKworICAgICAgICAvLyBzZXQvZ2V0IGFjdGl2ZSBidWZmZXIgaW5kZXgKKyAgICAgICAgc3RhdHVzX3Qgc2V0QWN0aXZlQnVmZmVySW5kZXgoc2l6ZV90IGluZGV4KTsKKyAgICAgICAgc2l6ZV90IGdldEFjdGl2ZUJ1ZmZlckluZGV4KCkgY29uc3Q7CisgICAgICAgIC8vIHJldHVybiB0aGUgYWN0aXZlIGJ1ZmZlcgorICAgICAgICBzcDxHcmFwaGljQnVmZmVyPiBnZXRBY3RpdmVCdWZmZXIoKSBjb25zdDsKKyAgICAgICAgLy8gcmV0dXJuIHRoZSBhY3RpdmUgdGV4dHVyZSAob3IgZmFpbC1vdmVyKQorICAgICAgICBUZXh0dXJlIGdldEFjdGl2ZVRleHR1cmUoKSBjb25zdDsKKyAgICAgICAgLy8gZnJlZXMgcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCBhbGwgYnVmZmVycworICAgICAgICBzdGF0dXNfdCBkZXN0cm95KEVHTERpc3BsYXkgZHB5KTsKKyAgICAgICAgLy8gbG9hZCBiaXRtYXAgZGF0YSBpbnRvIHRoZSBhY3RpdmUgYnVmZmVyCisgICAgICAgIHN0YXR1c190IGxvYWRUZXh0dXJlKGNvbnN0IFJlZ2lvbiYgZGlydHksIGNvbnN0IEdHTFN1cmZhY2UmIHQpOworICAgICAgICAvLyBtYWtlIGFjdGl2ZSBidWZmZXIgYW4gRUdMSW1hZ2UgaWYgbmVlZGVkCisgICAgICAgIHN0YXR1c190IGluaXRFZ2xJbWFnZShFR0xEaXNwbGF5IGRweSwKKyAgICAgICAgICAgICAgICBjb25zdCBzcDxHcmFwaGljQnVmZmVyPiYgYnVmZmVyKTsKKworICAgICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgICAgIC8vIG9ubHkgZm9yIGRlYnVnZ2luZworICAgICAgICBzcDxHcmFwaGljQnVmZmVyPiBnZXRCdWZmZXIoc2l6ZV90IGluZGV4KSBjb25zdDsKKyAgICB9OworCisgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8vIHRocmVhZC1zYWZlCisgICAgQ2xpZW50UmVmIG1Vc2VyQ2xpZW50UmVmOworCisgICAgLy8gY29uc3RhbnRzCisgICAgc3A8U3VyZmFjZT4gbVN1cmZhY2U7CisgICAgUGl4ZWxGb3JtYXQgbUZvcm1hdDsKKyAgICBjb25zdCBHTEV4dGVuc2lvbnMmIG1HTEV4dGVuc2lvbnM7CisgICAgYm9vbCBtTmVlZHNCbGVuZGluZzsKKyAgICBib29sIG1OZWVkc0RpdGhlcmluZzsKKworICAgIC8vIHBhZ2UtZmxpcCB0aHJlYWQgKGN1cnJlbnRseSBtYWluIHRocmVhZCkKKyAgICBib29sIG1TZWN1cmU7CisgICAgUmVnaW9uIG1Qb3N0ZWREaXJ0eVJlZ2lvbjsKKworICAgIC8vIHBhZ2UtZmxpcCB0aHJlYWQgYW5kIHRyYW5zYWN0aW9uIHRocmVhZCAoY3VycmVudGx5IG1haW4gdGhyZWFkKQorICAgIHNwPEZyZWV6ZUxvY2s+ICBtRnJlZXplTG9jazsKKworICAgIC8vIHNlZSB0aHJlYWRpbmcgdXNhZ2UgaW4gZGVjbGFyYXRpb24KKyAgICBUZXh0dXJlTWFuYWdlciBtVGV4dHVyZU1hbmFnZXI7CisgICAgQnVmZmVyTWFuYWdlciBtQnVmZmVyTWFuYWdlcjsKKworICAgIC8vIGJpbmRlciB0aHJlYWQsIHRyYW5zYWN0aW9uIHRocmVhZAorICAgIG11dGFibGUgTXV0ZXggbUxvY2s7CisgICAgdWludDMyX3QgbVdpZHRoOworICAgIHVpbnQzMl90IG1IZWlnaHQ7CisgICAgdWludDMyX3QgbVJlcVdpZHRoOworICAgIHVpbnQzMl90IG1SZXFIZWlnaHQ7CisgICAgdWludDMyX3QgbVJlcUZvcm1hdDsKKyAgICBib29sIG1GaXhlZFNpemU7CiB9OwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2xpYnMvc3VyZmFjZWZsaW5nZXIvTGF5ZXJCYXNlLmNwcCBiL2xpYnMvc3VyZmFjZWZsaW5nZXIvTGF5ZXJCYXNlLmNwcAppbmRleCBhOGI3MzVlLi5kNWFhNTNmIDEwMDY0NAotLS0gYS9saWJzL3N1cmZhY2VmbGluZ2VyL0xheWVyQmFzZS5jcHAKKysrIGIvbGlicy9zdXJmYWNlZmxpbmdlci9MYXllckJhc2UuY3BwCkBAIC0zMiwyOSArMzIsMjEgQEAKICNpbmNsdWRlICJMYXllckJhc2UuaCIKICNpbmNsdWRlICJTdXJmYWNlRmxpbmdlci5oIgogI2luY2x1ZGUgIkRpc3BsYXlIYXJkd2FyZS9EaXNwbGF5SGFyZHdhcmUuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFuYWdlci5oIgogCiAKIG5hbWVzcGFjZSBhbmRyb2lkIHsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWNvbnN0IHVpbnQzMl90IExheWVyQmFzZTo6dHlwZUluZm8gPSAxOwotY29uc3QgY2hhciogY29uc3QgTGF5ZXJCYXNlOjp0eXBlSUQgPSAiTGF5ZXJCYXNlIjsKLQotY29uc3QgdWludDMyX3QgTGF5ZXJCYXNlQ2xpZW50Ojp0eXBlSW5mbyA9IExheWVyQmFzZTo6dHlwZUluZm8gfCAyOwotY29uc3QgY2hhciogY29uc3QgTGF5ZXJCYXNlQ2xpZW50Ojp0eXBlSUQgPSAiTGF5ZXJCYXNlQ2xpZW50IjsKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KIExheWVyQmFzZTo6TGF5ZXJCYXNlKFN1cmZhY2VGbGluZ2VyKiBmbGluZ2VyLCBEaXNwbGF5SUQgZGlzcGxheSkKICAgICA6IGRweShkaXNwbGF5KSwgY29udGVudERpcnR5KGZhbHNlKSwKICAgICAgIG1GbGluZ2VyKGZsaW5nZXIpLAotICAgICAgbVRyYW5zZm9ybWVkKGZhbHNlKSwKLSAgICAgIG1Vc2VMaW5lYXJGaWx0ZXJpbmcoZmFsc2UpLAorICAgICAgbU5lZWRzRmlsdGVyaW5nKGZhbHNlKSwKICAgICAgIG1PcmllbnRhdGlvbigwKSwKICAgICAgIG1MZWZ0KDApLCBtVG9wKDApLAogICAgICAgbVRyYW5zYWN0aW9uRmxhZ3MoMCksCi0gICAgICBtUHJlbXVsdGlwbGllZEFscGhhKHRydWUpLCBtRGVidWcoZmFsc2UpLAorICAgICAgbVByZW11bHRpcGxpZWRBbHBoYSh0cnVlKSwgbU5hbWUoInVubmFtZWQiKSwgbURlYnVnKGZhbHNlKSwKICAgICAgIG1JbnZhbGlkYXRlKDApCiB7CiAgICAgY29uc3QgRGlzcGxheUhhcmR3YXJlJiBodyhmbGluZ2VyLT5ncmFwaGljUGxhbmUoMCkuZGlzcGxheUhhcmR3YXJlKCkpOwpAQCAtMTU5LDcgKzE1MSw2IEBACiAgICAgcmV0dXJuIHRydWU7CiB9CiBib29sIExheWVyQmFzZTo6c2V0TWF0cml4KGNvbnN0IGxheWVyX3N0YXRlX3Q6Om1hdHJpeDIyX3QmIG1hdHJpeCkgewotICAgIC8vIFRPRE86IGNoZWNrIHRoZSBtYXRyaXggaGFzIGNoYW5nZWQKICAgICBtQ3VycmVudFN0YXRlLnNlcXVlbmNlKys7CiAgICAgbUN1cnJlbnRTdGF0ZS50cmFuc2Zvcm0uc2V0KAogICAgICAgICAgICAgbWF0cml4LmRzZHgsIG1hdHJpeC5kc2R5LCBtYXRyaXguZHRkeCwgbWF0cml4LmR0ZHkpOwpAQCAtMTY3LDcgKzE1OCw2IEBACiAgICAgcmV0dXJuIHRydWU7CiB9CiBib29sIExheWVyQmFzZTo6c2V0VHJhbnNwYXJlbnRSZWdpb25IaW50KGNvbnN0IFJlZ2lvbiYgdHJhbnNwYXJlbnQpIHsKLSAgICAvLyBUT0RPOiBjaGVjayB0aGUgcmVnaW9uIGhhcyBjaGFuZ2VkCiAgICAgbUN1cnJlbnRTdGF0ZS5zZXF1ZW5jZSsrOwogICAgIG1DdXJyZW50U3RhdGUudHJhbnNwYXJlbnRSZWdpb24gPSB0cmFuc3BhcmVudDsKICAgICByZXF1ZXN0VHJhbnNhY3Rpb24oKTsKQEAgLTIyMSwxMyArMjExLDEyIEBACiAgICAgICAgIGZsYWdzIHw9IGVWaXNpYmxlUmVnaW9uOwogICAgICAgICB0aGlzLT5jb250ZW50RGlydHkgPSB0cnVlOwogCi0gICAgICAgIGNvbnN0IGJvb2wgbGluZWFyRmlsdGVyaW5nID0gbVVzZUxpbmVhckZpbHRlcmluZzsKLSAgICAgICAgbVVzZUxpbmVhckZpbHRlcmluZyA9IGZhbHNlOworICAgICAgICBtTmVlZHNGaWx0ZXJpbmcgPSBmYWxzZTsKICAgICAgICAgaWYgKCEobUZsYWdzICYgRGlzcGxheUhhcmR3YXJlOjpTTE9XX0NPTkZJRykpIHsKICAgICAgICAgICAgIC8vIHdlIG1heSB1c2UgbGluZWFyIGZpbHRlcmluZywgaWYgdGhlIG1hdHJpeCBzY2FsZXMgdXMKICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgdHlwZSA9IHRlbXAudHJhbnNmb3JtLmdldFR5cGUoKTsKICAgICAgICAgICAgIGlmICghdGVtcC50cmFuc2Zvcm0ucHJlc2VydmVSZWN0cygpIHx8ICh0eXBlID49IFRyYW5zZm9ybTo6U0NBTEUpKSB7Ci0gICAgICAgICAgICAgICAgbVVzZUxpbmVhckZpbHRlcmluZyA9IHRydWU7CisgICAgICAgICAgICAgICAgbU5lZWRzRmlsdGVyaW5nID0gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTI2Nyw3ICsyNTYsNiBAQAogICAgIC8vIGNhY2hlIGEgZmV3IHRoaW5ncy4uLgogICAgIG1PcmllbnRhdGlvbiA9IHRyLmdldE9yaWVudGF0aW9uKCk7CiAgICAgbVRyYW5zZm9ybWVkQm91bmRzID0gdHIubWFrZUJvdW5kcyh3LCBoKTsKLSAgICBtVHJhbnNmb3JtZWQgPSB0cmFuc2Zvcm1lZDsKICAgICBtTGVmdCA9IHRyLnR4KCk7CiAgICAgbVRvcCAgPSB0ci50eSgpOwogfQpAQCAtMzM2LDQ1ICszMjQsMjUgQEAKICAgICBnbEVuYWJsZShHTF9TQ0lTU09SX1RFU1QpOwogCiAgICAgb25EcmF3KGNsaXApOwotCi0gICAgLyoKLSAgICBnbERpc2FibGUoR0xfVEVYVFVSRV8yRCk7Ci0gICAgZ2xEaXNhYmxlKEdMX0RJVEhFUik7Ci0gICAgZ2xFbmFibGUoR0xfQkxFTkQpOwotICAgIGdsQmxlbmRGdW5jKEdMX09ORSwgR0xfT05FX01JTlVTX1NSQ19BTFBIQSk7Ci0gICAgZ2xDb2xvcjR4KDAsIDB4ODAwMCwgMCwgMHgxMDAwMCk7Ci0gICAgZHJhd1JlZ2lvbih0cmFuc3BhcmVudFJlZ2lvblNjcmVlbik7Ci0gICAgZ2xEaXNhYmxlKEdMX0JMRU5EKTsKLSAgICAqLwogfQogCi1HTHVpbnQgTGF5ZXJCYXNlOjpjcmVhdGVUZXh0dXJlKCkgY29uc3QKLXsKLSAgICBHTHVpbnQgdGV4dHVyZU5hbWUgPSAtMTsKLSAgICBnbEdlblRleHR1cmVzKDEsICZ0ZXh0dXJlTmFtZSk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlTmFtZSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJ4KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKLSAgICBnbFRleFBhcmFtZXRlcngoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOwotICAgIGdsVGV4UGFyYW1ldGVyeChHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX05FQVJFU1QpOwotICAgIGdsVGV4UGFyYW1ldGVyeChHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOwotICAgIHJldHVybiB0ZXh0dXJlTmFtZTsKLX0KLQotdm9pZCBMYXllckJhc2U6OmNsZWFyV2l0aE9wZW5HTChjb25zdCBSZWdpb24mIGNsaXAsIEdMY2xhbXB4IHJlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjbGFtcHggZ3JlZW4sIEdMY2xhbXB4IGJsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2xhbXB4IGFscGhhKSBjb25zdAordm9pZCBMYXllckJhc2U6OmNsZWFyV2l0aE9wZW5HTChjb25zdCBSZWdpb24mIGNsaXAsIEdMY2xhbXBmIHJlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjbGFtcGYgZ3JlZW4sIEdMY2xhbXBmIGJsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2xhbXBmIGFscGhhKSBjb25zdAogewogICAgIGNvbnN0IERpc3BsYXlIYXJkd2FyZSYgaHcoZ3JhcGhpY1BsYW5lKDApLmRpc3BsYXlIYXJkd2FyZSgpKTsKICAgICBjb25zdCB1aW50MzJfdCBmYkhlaWdodCA9IGh3LmdldEhlaWdodCgpOwotICAgIGdsQ29sb3I0eChyZWQsZ3JlZW4sYmx1ZSxhbHBoYSk7Ci0gICAgZ2xEaXNhYmxlKEdMX1RFWFRVUkVfMkQpOworICAgIGdsQ29sb3I0ZihyZWQsZ3JlZW4sYmx1ZSxhbHBoYSk7CisKKyAgICBUZXh0dXJlTWFuYWdlcjo6ZGVhY3RpdmF0ZVRleHR1cmVzKCk7CisKICAgICBnbERpc2FibGUoR0xfQkxFTkQpOwogICAgIGdsRGlzYWJsZShHTF9ESVRIRVIpOwogCiAgICAgUmVnaW9uOjpjb25zdF9pdGVyYXRvciBpdCA9IGNsaXAuYmVnaW4oKTsKICAgICBSZWdpb246OmNvbnN0X2l0ZXJhdG9yIGNvbnN0IGVuZCA9IGNsaXAuZW5kKCk7CiAgICAgZ2xFbmFibGUoR0xfU0NJU1NPUl9URVNUKTsKLSAgICBnbFZlcnRleFBvaW50ZXIoMiwgR0xfRklYRUQsIDAsIG1WZXJ0aWNlcyk7CisgICAgZ2xWZXJ0ZXhQb2ludGVyKDIsIEdMX0ZMT0FULCAwLCBtVmVydGljZXMpOwogICAgIHdoaWxlIChpdCAhPSBlbmQpIHsKICAgICAgICAgY29uc3QgUmVjdCYgciA9ICppdCsrOwogICAgICAgICBjb25zdCBHTGludCBzeSA9IGZiSGVpZ2h0IC0gKHIudG9wICsgci5oZWlnaHQoKSk7CkBAIC0zOTUsMzkgKzM2MywyNSBAQAogICAgIGNvbnN0IFN0YXRlJiBzKGRyYXdpbmdTdGF0ZSgpKTsKICAgICAKICAgICAvLyBiaW5kIG91ciB0ZXh0dXJlCi0gICAgdmFsaWRhdGVUZXh0dXJlKHRleHR1cmUubmFtZSk7CisgICAgVGV4dHVyZU1hbmFnZXI6OmFjdGl2YXRlVGV4dHVyZSh0ZXh0dXJlLCBuZWVkc0ZpbHRlcmluZygpKTsKICAgICB1aW50MzJfdCB3aWR0aCAgPSB0ZXh0dXJlLndpZHRoOyAKICAgICB1aW50MzJfdCBoZWlnaHQgPSB0ZXh0dXJlLmhlaWdodDsKLSAgICAKLSAgICBnbEVuYWJsZShHTF9URVhUVVJFXzJEKTsKIAorICAgIEdMZW51bSBzcmMgPSBtUHJlbXVsdGlwbGllZEFscGhhID8gR0xfT05FIDogR0xfU1JDX0FMUEhBOwogICAgIGlmIChVTkxJS0VMWShzLmFscGhhIDwgMHhGRikpIHsKLSAgICAgICAgLy8gV2UgaGF2ZSBhbiBhbHBoYS1tb2R1bGF0aW9uLiBXZSBuZWVkIHRvIG1vZHVsYXRlIGFsbAotICAgICAgICAvLyB0ZXh0dXJlIGNvbXBvbmVudHMgYnkgYWxwaGEgYmVjYXVzZSB3ZSdyZSBhbHdheXMgdXNpbmcgCi0gICAgICAgIC8vIHByZW11bHRpcGxpZWQgYWxwaGEuCi0gICAgICAgIAotICAgICAgICAvLyBJZiB0aGUgdGV4dHVyZSBkb2Vzbid0IGhhdmUgYW4gYWxwaGEgY2hhbm5lbCB3ZSBjYW4KLSAgICAgICAgLy8gdXNlIFJFUExBQ0UgYW5kIHN3aXRjaCB0byBub24gcHJlbXVsdGlwbGllZCBhbHBoYQotICAgICAgICAvLyBibGVuZGluZyAoU1JDQS9PTkVfTUlOVVNfU1JDQSkuCi0gICAgICAgIAotICAgICAgICBHTGVudW0gZW52LCBzcmM7Ci0gICAgICAgIGlmIChuZWVkc0JsZW5kaW5nKCkpIHsKLSAgICAgICAgICAgIGVudiA9IEdMX01PRFVMQVRFOwotICAgICAgICAgICAgc3JjID0gbVByZW11bHRpcGxpZWRBbHBoYSA/IEdMX09ORSA6IEdMX1NSQ19BTFBIQTsKKyAgICAgICAgY29uc3QgR0xmbG9hdCBhbHBoYSA9IHMuYWxwaGEgKiAoMS4wZi8yNTUuMGYpOworICAgICAgICBpZiAobVByZW11bHRpcGxpZWRBbHBoYSkgeworICAgICAgICAgICAgZ2xDb2xvcjRmKGFscGhhLCBhbHBoYSwgYWxwaGEsIGFscGhhKTsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGVudiA9IEdMX1JFUExBQ0U7Ci0gICAgICAgICAgICBzcmMgPSBHTF9TUkNfQUxQSEE7CisgICAgICAgICAgICBnbENvbG9yNGYoMSwgMSwgMSwgYWxwaGEpOwogICAgICAgICB9Ci0gICAgICAgIGNvbnN0IEdHTGZpeGVkIGFscGhhID0gKHMuYWxwaGEgPDwgMTYpLzI1NTsKLSAgICAgICAgZ2xDb2xvcjR4KGFscGhhLCBhbHBoYSwgYWxwaGEsIGFscGhhKTsKICAgICAgICAgZ2xFbmFibGUoR0xfQkxFTkQpOwogICAgICAgICBnbEJsZW5kRnVuYyhzcmMsIEdMX09ORV9NSU5VU19TUkNfQUxQSEEpOwotICAgICAgICBnbFRleEVudngoR0xfVEVYVFVSRV9FTlYsIEdMX1RFWFRVUkVfRU5WX01PREUsIGVudik7CisgICAgICAgIGdsVGV4RW52eChHTF9URVhUVVJFX0VOViwgR0xfVEVYVFVSRV9FTlZfTU9ERSwgR0xfTU9EVUxBVEUpOwogICAgIH0gZWxzZSB7CisgICAgICAgIGdsQ29sb3I0ZigxLCAxLCAxLCAxKTsKICAgICAgICAgZ2xUZXhFbnZ4KEdMX1RFWFRVUkVfRU5WLCBHTF9URVhUVVJFX0VOVl9NT0RFLCBHTF9SRVBMQUNFKTsKLSAgICAgICAgZ2xDb2xvcjR4KDB4MTAwMDAsIDB4MTAwMDAsIDB4MTAwMDAsIDB4MTAwMDApOwogICAgICAgICBpZiAobmVlZHNCbGVuZGluZygpKSB7Ci0gICAgICAgICAgICBHTGVudW0gc3JjID0gbVByZW11bHRpcGxpZWRBbHBoYSA/IEdMX09ORSA6IEdMX1NSQ19BTFBIQTsKICAgICAgICAgICAgIGdsRW5hYmxlKEdMX0JMRU5EKTsKICAgICAgICAgICAgIGdsQmxlbmRGdW5jKHNyYywgR0xfT05FX01JTlVTX1NSQ19BTFBIQSk7CiAgICAgICAgIH0gZWxzZSB7CkBAIC00MzcsMTMgKzM5MSwxMSBAQAogCiAgICAgUmVnaW9uOjpjb25zdF9pdGVyYXRvciBpdCA9IGNsaXAuYmVnaW4oKTsKICAgICBSZWdpb246OmNvbnN0X2l0ZXJhdG9yIGNvbnN0IGVuZCA9IGNsaXAuZW5kKCk7Ci0KLSAgICAvL1N0b3BXYXRjaCB3YXRjaCgiR0wgdHJhbnNmb3JtZWQiKTsKLSAgICBjb25zdCBHTGZpeGVkIHRleENvb3Jkc1s0XVsyXSA9IHsKLSAgICAgICAgICAgIHsgMCwgICAgICAgIDAgfSwKLSAgICAgICAgICAgIHsgMCwgICAgICAgIDB4MTAwMDAgfSwKLSAgICAgICAgICAgIHsgMHgxMDAwMCwgIDB4MTAwMDAgfSwKLSAgICAgICAgICAgIHsgMHgxMDAwMCwgIDAgfQorICAgIGNvbnN0IEdMZmxvYXQgdGV4Q29vcmRzWzRdWzJdID0geworICAgICAgICAgICAgeyAwLCAgMCB9LAorICAgICAgICAgICAgeyAwLCAgMSB9LAorICAgICAgICAgICAgeyAxLCAgMSB9LAorICAgICAgICAgICAgeyAxLCAgMCB9CiAgICAgfTsKIAogICAgIGdsTWF0cml4TW9kZShHTF9URVhUVVJFKTsKQEAgLTQ2OSw5ICs0MjEsMTUgQEAKICAgICAgICAgZ2xTY2FsZWYodGV4dHVyZS53U2NhbGUsIHRleHR1cmUuaFNjYWxlLCAxLjBmKTsKICAgICB9CiAKKyAgICBpZiAobmVlZHNEaXRoZXJpbmcoKSkgeworICAgICAgICBnbEVuYWJsZShHTF9ESVRIRVIpOworICAgIH0gZWxzZSB7CisgICAgICAgIGdsRGlzYWJsZShHTF9ESVRIRVIpOworICAgIH0KKwogICAgIGdsRW5hYmxlQ2xpZW50U3RhdGUoR0xfVEVYVFVSRV9DT09SRF9BUlJBWSk7Ci0gICAgZ2xWZXJ0ZXhQb2ludGVyKDIsIEdMX0ZJWEVELCAwLCBtVmVydGljZXMpOwotICAgIGdsVGV4Q29vcmRQb2ludGVyKDIsIEdMX0ZJWEVELCAwLCB0ZXhDb29yZHMpOworICAgIGdsVmVydGV4UG9pbnRlcigyLCBHTF9GTE9BVCwgMCwgbVZlcnRpY2VzKTsKKyAgICBnbFRleENvb3JkUG9pbnRlcigyLCBHTF9GTE9BVCwgMCwgdGV4Q29vcmRzKTsKIAogICAgIHdoaWxlIChpdCAhPSBlbmQpIHsKICAgICAgICAgY29uc3QgUmVjdCYgciA9ICppdCsrOwpAQCAtNDgyLDI0NiArNDQwLDQwIEBACiAgICAgZ2xEaXNhYmxlQ2xpZW50U3RhdGUoR0xfVEVYVFVSRV9DT09SRF9BUlJBWSk7CiB9CiAKLXZvaWQgTGF5ZXJCYXNlOjp2YWxpZGF0ZVRleHR1cmUoR0xpbnQgdGV4dHVyZU5hbWUpIGNvbnN0Cit2b2lkIExheWVyQmFzZTo6ZHVtcChTdHJpbmc4JiByZXN1bHQsIGNoYXIqIGJ1ZmZlciwgc2l6ZV90IFNJWkUpIGNvbnN0CiB7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCB0ZXh0dXJlTmFtZSk7Ci0gICAgLy8gVE9ETzogcmVsb2FkIHRoZSB0ZXh0dXJlIGlmIG5lZWRlZAotICAgIC8vIHRoaXMgaXMgY3VycmVudGx5IGRvbmUgaW4gbG9hZFRleHR1cmUoKSBiZWxvdwotICAgIGlmIChtVXNlTGluZWFyRmlsdGVyaW5nKSB7Ci0gICAgICAgIGdsVGV4UGFyYW1ldGVyeChHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7Ci0gICAgICAgIGdsVGV4UGFyYW1ldGVyeChHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX0xJTkVBUik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJ4KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgICAgIGdsVGV4UGFyYW1ldGVyeChHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01JTl9GSUxURVIsIEdMX05FQVJFU1QpOwotICAgIH0KLQotICAgIGlmIChuZWVkc0RpdGhlcmluZygpKSB7Ci0gICAgICAgIGdsRW5hYmxlKEdMX0RJVEhFUik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgZ2xEaXNhYmxlKEdMX0RJVEhFUik7Ci0gICAgfQorICAgIGNvbnN0IExheWVyOjpTdGF0ZSYgcyhkcmF3aW5nU3RhdGUoKSk7CisgICAgc25wcmludGYoYnVmZmVyLCBTSVpFLAorICAgICAgICAgICAgIisgJXMgJXBcbiIKKyAgICAgICAgICAgICIgICAgICAiCisgICAgICAgICAgICAiej0lOWQsIHBvcz0oJTRkLCU0ZCksIHNpemU9KCU0ZCwlNGQpLCAiCisgICAgICAgICAgICAibmVlZHNCbGVuZGluZz0lMWQsIG5lZWRzRGl0aGVyaW5nPSUxZCwgaW52YWxpZGF0ZT0lMWQsICIKKyAgICAgICAgICAgICJhbHBoYT0weCUwMngsIGZsYWdzPTB4JTA4eCwgdHI9WyUuMmYsICUuMmZdWyUuMmYsICUuMmZdXG4iLAorICAgICAgICAgICAgZ2V0VHlwZUlkKCksIHRoaXMsIHMueiwgdHgoKSwgdHkoKSwgcy53LCBzLmgsCisgICAgICAgICAgICBuZWVkc0JsZW5kaW5nKCksIG5lZWRzRGl0aGVyaW5nKCksIGNvbnRlbnREaXJ0eSwKKyAgICAgICAgICAgIHMuYWxwaGEsIHMuZmxhZ3MsCisgICAgICAgICAgICBzLnRyYW5zZm9ybVswXVswXSwgcy50cmFuc2Zvcm1bMF1bMV0sCisgICAgICAgICAgICBzLnRyYW5zZm9ybVsxXVswXSwgcy50cmFuc2Zvcm1bMV1bMV0pOworICAgIHJlc3VsdC5hcHBlbmQoYnVmZmVyKTsKIH0KIAotYm9vbCBMYXllckJhc2U6OmlzU3VwcG9ydGVkWXV2Rm9ybWF0KGludCBmb3JtYXQpIGNvbnN0Ci17Ci0gICAgc3dpdGNoIChmb3JtYXQpIHsKLSAgICAgICAgY2FzZSBIQUxfUElYRUxfRk9STUFUX1lDYkNyXzQyMl9TUDoKLSAgICAgICAgY2FzZSBIQUxfUElYRUxfRk9STUFUX1lDYkNyXzQyMF9TUDoKLSAgICAgICAgY2FzZSBIQUxfUElYRUxfRk9STUFUX1lDYkNyXzQyMl9QOgotICAgICAgICBjYXNlIEhBTF9QSVhFTF9GT1JNQVRfWUNiQ3JfNDIwX1A6Ci0gICAgICAgIGNhc2UgSEFMX1BJWEVMX0ZPUk1BVF9ZQ2JDcl80MjJfSToKLSAgICAgICAgY2FzZSBIQUxfUElYRUxfRk9STUFUX1lDYkNyXzQyMF9JOgotICAgICAgICBjYXNlIEhBTF9QSVhFTF9GT1JNQVRfWUNyQ2JfNDIwX1NQOgotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KLQotdm9pZCBMYXllckJhc2U6OmxvYWRUZXh0dXJlKFRleHR1cmUqIHRleHR1cmUsIAotICAgICAgICBjb25zdCBSZWdpb24mIGRpcnR5LCBjb25zdCBHR0xTdXJmYWNlJiB0KSBjb25zdAotewotICAgIGlmICh0ZXh0dXJlLT5uYW1lID09IC0xVSkgewotICAgICAgICAvLyB1aD8KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZS0+bmFtZSk7Ci0KLSAgICAvKgotICAgICAqIEluIE9wZW5HTCBFUyB3ZSBjYW4ndCBzcGVjaWZ5IGEgc3RyaWRlIHdpdGggZ2xUZXhJbWFnZTJEIChob3dldmVyLAotICAgICAqIEdMX1VOUEFDS19BTElHTk1FTlQgaXMgYSBsaW1pdGVkIGZvcm0gb2Ygc3RyaWRlKS4KLSAgICAgKiBTbyBpZiB0aGUgc3RyaWRlIGhlcmUgaXNuJ3QgcmVwcmVzZW50YWJsZSB3aXRoIEdMX1VOUEFDS19BTElHTk1FTlQsIHdlCi0gICAgICogbmVlZCB0byBkbyBzb21ldGhpbmcgcmVhc29uYWJsZSAoaGVyZSBjcmVhdGluZyBhIGJpZ2dlciB0ZXh0dXJlKS4KLSAgICAgKiAKLSAgICAgKiBleHRyYSBwaXhlbHMgPSAoKChzdHJpZGUgLSB3aWR0aCkgKiBwaXhlbHNpemUpIC8gR0xfVU5QQUNLX0FMSUdOTUVOVCk7Ci0gICAgICogCi0gICAgICogVGhpcyBzaXR1YXRpb24gZG9lc24ndCBoYXBwZW4gb2Z0ZW4sIGJ1dCBzb21lIGgvdyBoYXZlIGEgbGltaXRhdGlvbgotICAgICAqIGZvciB0aGVpciBmcmFtZWJ1ZmZlciAoZWc6IG11c3QgYmUgbXVsdGlwbGUgb2YgOCBwaXhlbHMpLCBhbmQKLSAgICAgKiB3ZSBuZWVkIHRvIHRha2UgdGhhdCBpbnRvIGFjY291bnQgd2hlbiB1c2luZyB0aGVzZSBidWZmZXJzIGFzCi0gICAgICogdGV4dHVyZXMuCi0gICAgICoKLSAgICAgKiBUaGlzIHNob3VsZCBuZXZlciBiZSBhIHByb2JsZW0gd2l0aCBQT1QgdGV4dHVyZXMKLSAgICAgKi8KLSAgICAKLSAgICBpbnQgdW5wYWNrID0gX19idWlsdGluX2N0eih0LnN0cmlkZSAqIGJ5dGVzUGVyUGl4ZWwodC5mb3JtYXQpKTsKLSAgICB1bnBhY2sgPSAxIDw8ICgodW5wYWNrID4gMykgPyAzIDogdW5wYWNrKTsKLSAgICBnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19BTElHTk1FTlQsIHVucGFjayk7Ci0gICAgCi0gICAgLyoKLSAgICAgKiByb3VuZCB0byBQT1QgaWYgbmVlZGVkIAotICAgICAqLwotICAgIGlmICghKG1GbGFncyAmIERpc3BsYXlIYXJkd2FyZTo6TlBPVF9FWFRFTlNJT04pKSB7Ci0gICAgICAgIHRleHR1cmUtPk5QT1RBZGp1c3QgPSB0cnVlOwotICAgIH0KLSAgICAKLSAgICBpZiAodGV4dHVyZS0+TlBPVEFkanVzdCkgewotICAgICAgICAvLyBmaW5kIHRoZSBzbWFsbGVzdCBwb3dlci1vZi10d28gdGhhdCB3aWxsIGFjY29tbW9kYXRlIG91ciBzdXJmYWNlCi0gICAgICAgIHRleHR1cmUtPnBvdFdpZHRoICA9IDEgPDwgKDMxIC0gY2x6KHQud2lkdGgpKTsKLSAgICAgICAgdGV4dHVyZS0+cG90SGVpZ2h0ID0gMSA8PCAoMzEgLSBjbHoodC5oZWlnaHQpKTsKLSAgICAgICAgaWYgKHRleHR1cmUtPnBvdFdpZHRoICA8IHQud2lkdGgpICB0ZXh0dXJlLT5wb3RXaWR0aCAgPDw9IDE7Ci0gICAgICAgIGlmICh0ZXh0dXJlLT5wb3RIZWlnaHQgPCB0LmhlaWdodCkgdGV4dHVyZS0+cG90SGVpZ2h0IDw8PSAxOwotICAgICAgICB0ZXh0dXJlLT53U2NhbGUgPSBmbG9hdCh0LndpZHRoKSAgLyB0ZXh0dXJlLT5wb3RXaWR0aDsKLSAgICAgICAgdGV4dHVyZS0+aFNjYWxlID0gZmxvYXQodC5oZWlnaHQpIC8gdGV4dHVyZS0+cG90SGVpZ2h0OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIHRleHR1cmUtPnBvdFdpZHRoICA9IHQud2lkdGg7Ci0gICAgICAgIHRleHR1cmUtPnBvdEhlaWdodCA9IHQuaGVpZ2h0OwotICAgIH0KLQotICAgIFJlY3QgYm91bmRzKGRpcnR5LmJvdW5kcygpKTsKLSAgICBHTHZvaWQqIGRhdGEgPSAwOwotICAgIGlmICh0ZXh0dXJlLT53aWR0aCAhPSB0LndpZHRoIHx8IHRleHR1cmUtPmhlaWdodCAhPSB0LmhlaWdodCkgewotICAgICAgICB0ZXh0dXJlLT53aWR0aCAgPSB0LndpZHRoOwotICAgICAgICB0ZXh0dXJlLT5oZWlnaHQgPSB0LmhlaWdodDsKLQotICAgICAgICAvLyB0ZXh0dXJlIHNpemUgY2hhbmdlZCwgd2UgbmVlZCB0byBjcmVhdGUgYSBuZXcgb25lCi0gICAgICAgIGJvdW5kcy5zZXQoUmVjdCh0LndpZHRoLCB0LmhlaWdodCkpOwotICAgICAgICBpZiAodC53aWR0aCAgPT0gdGV4dHVyZS0+cG90V2lkdGggJiYKLSAgICAgICAgICAgIHQuaGVpZ2h0ID09IHRleHR1cmUtPnBvdEhlaWdodCkgewotICAgICAgICAgICAgLy8gd2UgY2FuIGRvIGl0IG9uZSBwYXNzCi0gICAgICAgICAgICBkYXRhID0gdC5kYXRhOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHQuZm9ybWF0ID09IEhBTF9QSVhFTF9GT1JNQVRfUkdCXzU2NSkgewotICAgICAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsCi0gICAgICAgICAgICAgICAgICAgIEdMX1JHQiwgdGV4dHVyZS0+cG90V2lkdGgsIHRleHR1cmUtPnBvdEhlaWdodCwgMCwKLSAgICAgICAgICAgICAgICAgICAgR0xfUkdCLCBHTF9VTlNJR05FRF9TSE9SVF81XzZfNSwgZGF0YSk7Ci0gICAgICAgIH0gZWxzZSBpZiAodC5mb3JtYXQgPT0gSEFMX1BJWEVMX0ZPUk1BVF9SR0JBXzQ0NDQpIHsKLSAgICAgICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLAotICAgICAgICAgICAgICAgICAgICBHTF9SR0JBLCB0ZXh0dXJlLT5wb3RXaWR0aCwgdGV4dHVyZS0+cG90SGVpZ2h0LCAwLAotICAgICAgICAgICAgICAgICAgICBHTF9SR0JBLCBHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80LCBkYXRhKTsKLSAgICAgICAgfSBlbHNlIGlmICh0LmZvcm1hdCA9PSBIQUxfUElYRUxfRk9STUFUX1JHQkFfODg4OCB8fAotICAgICAgICAgICAgICAgICAgIHQuZm9ybWF0ID09IEhBTF9QSVhFTF9GT1JNQVRfUkdCWF84ODg4KSB7Ci0gICAgICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwKLSAgICAgICAgICAgICAgICAgICAgR0xfUkdCQSwgdGV4dHVyZS0+cG90V2lkdGgsIHRleHR1cmUtPnBvdEhlaWdodCwgMCwKLSAgICAgICAgICAgICAgICAgICAgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgZGF0YSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoaXNTdXBwb3J0ZWRZdXZGb3JtYXQodC5mb3JtYXQpKSB7Ci0gICAgICAgICAgICAvLyBqdXN0IHNob3cgdGhlIFkgcGxhbmUgb2YgWVVWIGJ1ZmZlcnMKLSAgICAgICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLAotICAgICAgICAgICAgICAgICAgICBHTF9MVU1JTkFOQ0UsIHRleHR1cmUtPnBvdFdpZHRoLCB0ZXh0dXJlLT5wb3RIZWlnaHQsIDAsCi0gICAgICAgICAgICAgICAgICAgIEdMX0xVTUlOQU5DRSwgR0xfVU5TSUdORURfQllURSwgZGF0YSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBvb3BzLCB3ZSBkb24ndCBoYW5kbGUgdGhpcyBmb3JtYXQhCi0gICAgICAgICAgICBMT0dFKCJsYXllciAlcCwgdGV4dHVyZT0lZCwgdXNpbmcgZm9ybWF0ICVkLCB3aGljaCBpcyBub3QgIgotICAgICAgICAgICAgICAgICAic3VwcG9ydGVkIGJ5IHRoZSBHTCIsIHRoaXMsIHRleHR1cmUtPm5hbWUsIHQuZm9ybWF0KTsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAoIWRhdGEpIHsKLSAgICAgICAgaWYgKHQuZm9ybWF0ID09IEhBTF9QSVhFTF9GT1JNQVRfUkdCXzU2NSkgewotICAgICAgICAgICAgZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsCi0gICAgICAgICAgICAgICAgICAgIDAsIGJvdW5kcy50b3AsIHQud2lkdGgsIGJvdW5kcy5oZWlnaHQoKSwKLSAgICAgICAgICAgICAgICAgICAgR0xfUkdCLCBHTF9VTlNJR05FRF9TSE9SVF81XzZfNSwKLSAgICAgICAgICAgICAgICAgICAgdC5kYXRhICsgYm91bmRzLnRvcCp0LnN0cmlkZSoyKTsKLSAgICAgICAgfSBlbHNlIGlmICh0LmZvcm1hdCA9PSBIQUxfUElYRUxfRk9STUFUX1JHQkFfNDQ0NCkgewotICAgICAgICAgICAgZ2xUZXhTdWJJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsCi0gICAgICAgICAgICAgICAgICAgIDAsIGJvdW5kcy50b3AsIHQud2lkdGgsIGJvdW5kcy5oZWlnaHQoKSwKLSAgICAgICAgICAgICAgICAgICAgR0xfUkdCQSwgR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNCwKLSAgICAgICAgICAgICAgICAgICAgdC5kYXRhICsgYm91bmRzLnRvcCp0LnN0cmlkZSoyKTsKLSAgICAgICAgfSBlbHNlIGlmICh0LmZvcm1hdCA9PSBIQUxfUElYRUxfRk9STUFUX1JHQkFfODg4OCB8fAotICAgICAgICAgICAgICAgICAgIHQuZm9ybWF0ID09IEhBTF9QSVhFTF9GT1JNQVRfUkdCWF84ODg4KSB7Ci0gICAgICAgICAgICBnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwKLSAgICAgICAgICAgICAgICAgICAgMCwgYm91bmRzLnRvcCwgdC53aWR0aCwgYm91bmRzLmhlaWdodCgpLAotICAgICAgICAgICAgICAgICAgICBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLAotICAgICAgICAgICAgICAgICAgICB0LmRhdGEgKyBib3VuZHMudG9wKnQuc3RyaWRlKjQpOwotICAgICAgICB9IGVsc2UgaWYgKGlzU3VwcG9ydGVkWXV2Rm9ybWF0KHQuZm9ybWF0KSkgewotICAgICAgICAgICAgLy8ganVzdCBzaG93IHRoZSBZIHBsYW5lIG9mIFlVViBidWZmZXJzCi0gICAgICAgICAgICBnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwKLSAgICAgICAgICAgICAgICAgICAgMCwgYm91bmRzLnRvcCwgdC53aWR0aCwgYm91bmRzLmhlaWdodCgpLAotICAgICAgICAgICAgICAgICAgICBHTF9MVU1JTkFOQ0UsIEdMX1VOU0lHTkVEX0JZVEUsCi0gICAgICAgICAgICAgICAgICAgIHQuZGF0YSArIGJvdW5kcy50b3AqdC5zdHJpZGUpOwotICAgICAgICB9Ci0gICAgfQotfQotCi1zdGF0dXNfdCBMYXllckJhc2U6OmluaXRpYWxpemVFZ2xJbWFnZSgKLSAgICAgICAgY29uc3Qgc3A8R3JhcGhpY0J1ZmZlcj4mIGJ1ZmZlciwgVGV4dHVyZSogdGV4dHVyZSkKLXsKLSAgICBzdGF0dXNfdCBlcnIgPSBOT19FUlJPUjsKLQotICAgIC8vIHdlIG5lZWQgdG8gcmVjcmVhdGUgdGhlIHRleHR1cmUKLSAgICBFR0xEaXNwbGF5IGRweShtRmxpbmdlci0+Z3JhcGhpY1BsYW5lKDApLmdldEVHTERpc3BsYXkoKSk7Ci0KLSAgICAvLyBmcmVlIHRoZSBwcmV2aW91cyBpbWFnZQotICAgIGlmICh0ZXh0dXJlLT5pbWFnZSAhPSBFR0xfTk9fSU1BR0VfS0hSKSB7Ci0gICAgICAgIGVnbERlc3Ryb3lJbWFnZUtIUihkcHksIHRleHR1cmUtPmltYWdlKTsKLSAgICAgICAgdGV4dHVyZS0+aW1hZ2UgPSBFR0xfTk9fSU1BR0VfS0hSOwotICAgIH0KLQotICAgIC8vIGNvbnN0cnVjdCBhbiBFR0xfTkFUSVZFX0JVRkZFUl9BTkRST0lECi0gICAgYW5kcm9pZF9uYXRpdmVfYnVmZmVyX3QqIGNsaWVudEJ1ZiA9IGJ1ZmZlci0+Z2V0TmF0aXZlQnVmZmVyKCk7Ci0KLSAgICAvLyBjcmVhdGUgdGhlIG5ldyBFR0xJbWFnZUtIUgotICAgIGNvbnN0IEVHTGludCBhdHRyc1tdID0gewotICAgICAgICAgICAgRUdMX0lNQUdFX1BSRVNFUlZFRF9LSFIsICAgIEVHTF9UUlVFLAotICAgICAgICAgICAgRUdMX05PTkUsICAgICAgICAgICAgICAgICAgIEVHTF9OT05FCi0gICAgfTsKLSAgICB0ZXh0dXJlLT5pbWFnZSA9IGVnbENyZWF0ZUltYWdlS0hSKAotICAgICAgICAgICAgZHB5LCBFR0xfTk9fQ09OVEVYVCwgRUdMX05BVElWRV9CVUZGRVJfQU5EUk9JRCwKLSAgICAgICAgICAgIChFR0xDbGllbnRCdWZmZXIpY2xpZW50QnVmLCBhdHRycyk7Ci0KLSAgICBpZiAodGV4dHVyZS0+aW1hZ2UgIT0gRUdMX05PX0lNQUdFX0tIUikgewotICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmUtPm5hbWUpOwotICAgICAgICBnbEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTKEdMX1RFWFRVUkVfMkQsCi0gICAgICAgICAgICAgICAgKEdMZWdsSW1hZ2VPRVMpdGV4dHVyZS0+aW1hZ2UpOwotICAgICAgICBHTGludCBlcnJvciA9IGdsR2V0RXJyb3IoKTsKLSAgICAgICAgaWYgKFVOTElLRUxZKGVycm9yICE9IEdMX05PX0VSUk9SKSkgewotICAgICAgICAgICAgTE9HRSgibGF5ZXI9JXAsIGdsRUdMSW1hZ2VUYXJnZXRUZXh0dXJlMkRPRVMoJXApICIKLSAgICAgICAgICAgICAgICAgImZhaWxlZCBlcnI9MHglMDR4IiwKLSAgICAgICAgICAgICAgICAgdGhpcywgdGV4dHVyZS0+aW1hZ2UsIGVycm9yKTsKLSAgICAgICAgICAgIGVyciA9IElOVkFMSURfT1BFUkFUSU9OOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gRXZlcnl0aGluZyB3ZW50IG9rYXkhCi0gICAgICAgICAgICB0ZXh0dXJlLT5OUE9UQWRqdXN0ID0gZmFsc2U7Ci0gICAgICAgICAgICB0ZXh0dXJlLT5kaXJ0eSAgPSBmYWxzZTsKLSAgICAgICAgICAgIHRleHR1cmUtPndpZHRoICA9IGNsaWVudEJ1Zi0+d2lkdGg7Ci0gICAgICAgICAgICB0ZXh0dXJlLT5oZWlnaHQgPSBjbGllbnRCdWYtPmhlaWdodDsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIExPR0UoImxheWVyPSVwLCBlZ2xDcmVhdGVJbWFnZUtIUigpIGZhaWxlZC4gZXJyPTB4JTR4IiwKLSAgICAgICAgICAgICAgICB0aGlzLCBlZ2xHZXRFcnJvcigpKTsKLSAgICAgICAgZXJyID0gSU5WQUxJRF9PUEVSQVRJT047Ci0gICAgfQotICAgIHJldHVybiBlcnI7Ci19Ci0KLQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWludDMyX3QgTGF5ZXJCYXNlQ2xpZW50OjpzSWRlbnRpdHkgPSAwOworaW50MzJfdCBMYXllckJhc2VDbGllbnQ6OnNJZGVudGl0eSA9IDE7CiAKIExheWVyQmFzZUNsaWVudDo6TGF5ZXJCYXNlQ2xpZW50KFN1cmZhY2VGbGluZ2VyKiBmbGluZ2VyLCBEaXNwbGF5SUQgZGlzcGxheSwKLSAgICAgICAgY29uc3Qgc3A8Q2xpZW50PiYgY2xpZW50LCBpbnQzMl90IGkpCi0gICAgOiBMYXllckJhc2UoZmxpbmdlciwgZGlzcGxheSksIGxjYmxrKE5VTEwpLCBjbGllbnQoY2xpZW50KSwgbUluZGV4KGkpLAorICAgICAgICBjb25zdCBzcDxDbGllbnQ+JiBjbGllbnQpCisgICAgOiBMYXllckJhc2UoZmxpbmdlciwgZGlzcGxheSksIG1DbGllbnRSZWYoY2xpZW50KSwKICAgICAgIG1JZGVudGl0eSh1aW50MzJfdChhbmRyb2lkX2F0b21pY19pbmMoJnNJZGVudGl0eSkpKQogewotICAgIGxjYmxrID0gbmV3IFNoYXJlZEJ1ZmZlclNlcnZlcigKLSAgICAgICAgICAgIGNsaWVudC0+Y3RybGJsaywgaSwgTlVNX0JVRkZFUlMsCi0gICAgICAgICAgICBtSWRlbnRpdHkpOwotfQotCi12b2lkIExheWVyQmFzZUNsaWVudDo6b25GaXJzdFJlZigpCi17ICAgIAotICAgIHNwPENsaWVudD4gY2xpZW50KHRoaXMtPmNsaWVudC5wcm9tb3RlKCkpOwotICAgIGlmIChjbGllbnQgIT0gMCkgewotICAgICAgICBjbGllbnQtPmJpbmRMYXllcih0aGlzLCBtSW5kZXgpOwotICAgIH0KIH0KIAogTGF5ZXJCYXNlQ2xpZW50Ojp+TGF5ZXJCYXNlQ2xpZW50KCkKIHsKLSAgICBzcDxDbGllbnQ+IGNsaWVudCh0aGlzLT5jbGllbnQucHJvbW90ZSgpKTsKLSAgICBpZiAoY2xpZW50ICE9IDApIHsKLSAgICAgICAgY2xpZW50LT5mcmVlKG1JbmRleCk7CisgICAgc3A8Q2xpZW50PiBjKG1DbGllbnRSZWYucHJvbW90ZSgpKTsKKyAgICBpZiAoYyAhPSAwKSB7CisgICAgICAgIGMtPmRldGFjaExheWVyKHRoaXMpOwogICAgIH0KLSAgICBkZWxldGUgbGNibGs7Ci19Ci0KLWludDMyX3QgTGF5ZXJCYXNlQ2xpZW50OjpzZXJ2ZXJJbmRleCgpIGNvbnN0IAotewotICAgIHNwPENsaWVudD4gY2xpZW50KHRoaXMtPmNsaWVudC5wcm9tb3RlKCkpOwotICAgIGlmIChjbGllbnQgIT0gMCkgewotICAgICAgICByZXR1cm4gKGNsaWVudC0+Y2lkPDwxNil8bUluZGV4OwotICAgIH0KLSAgICByZXR1cm4gMHhGRkZGMDAwMCB8IG1JbmRleDsKIH0KIAogc3A8TGF5ZXJCYXNlQ2xpZW50OjpTdXJmYWNlPiBMYXllckJhc2VDbGllbnQ6OmdldFN1cmZhY2UoKQpAQCAtNzM4LDI1ICs0OTAsMzEgQEAKIAogc3A8TGF5ZXJCYXNlQ2xpZW50OjpTdXJmYWNlPiBMYXllckJhc2VDbGllbnQ6OmNyZWF0ZVN1cmZhY2UoKSBjb25zdAogewotICAgIHJldHVybiBuZXcgU3VyZmFjZShtRmxpbmdlciwgY2xpZW50SW5kZXgoKSwgbUlkZW50aXR5LAorICAgIHJldHVybiBuZXcgU3VyZmFjZShtRmxpbmdlciwgbUlkZW50aXR5LAogICAgICAgICAgICAgY29uc3RfY2FzdDxMYXllckJhc2VDbGllbnQgKj4odGhpcykpOwogfQogCi0vLyBjYWxsZWQgd2l0aCBTdXJmYWNlRmxpbmdlcjo6bVN0YXRlTG9jayBhcyBzb29uIGFzIHRoZSBsYXllciBpcyBlbnRlcmVkCi0vLyBpbiB0aGUgcHVyZ2F0b3J5IGxpc3QKLXZvaWQgTGF5ZXJCYXNlQ2xpZW50OjpvblJlbW92ZWQoKQordm9pZCBMYXllckJhc2VDbGllbnQ6OmR1bXAoU3RyaW5nOCYgcmVzdWx0LCBjaGFyKiBidWZmZXIsIHNpemVfdCBTSVpFKSBjb25zdAogewotICAgIC8vIHdha2UgdXAgdGhlIGNvbmRpdGlvbgotICAgIGxjYmxrLT5zZXRTdGF0dXMoTk9fSU5JVCk7CisgICAgTGF5ZXJCYXNlOjpkdW1wKHJlc3VsdCwgYnVmZmVyLCBTSVpFKTsKKworICAgIHNwPENsaWVudD4gY2xpZW50KG1DbGllbnRSZWYucHJvbW90ZSgpKTsKKyAgICBzbnByaW50ZihidWZmZXIsIFNJWkUsCisgICAgICAgICAgICAiICAgICAgbmFtZT0lc1xuIgorICAgICAgICAgICAgIiAgICAgIGNsaWVudD0lcCwgaWRlbnRpdHk9JXVcbiIsCisgICAgICAgICAgICBnZXROYW1lKCkuc3RyaW5nKCksCisgICAgICAgICAgICBjbGllbnQuZ2V0KCksIGdldElkZW50aXR5KCkpOworCisgICAgcmVzdWx0LmFwcGVuZChidWZmZXIpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogTGF5ZXJCYXNlQ2xpZW50OjpTdXJmYWNlOjpTdXJmYWNlKAogICAgICAgICBjb25zdCBzcDxTdXJmYWNlRmxpbmdlcj4mIGZsaW5nZXIsCi0gICAgICAgIFN1cmZhY2VJRCBpZCwgaW50IGlkZW50aXR5LCAKKyAgICAgICAgaW50IGlkZW50aXR5LAogICAgICAgICBjb25zdCBzcDxMYXllckJhc2VDbGllbnQ+JiBvd25lcikgCi0gICAgOiBtRmxpbmdlcihmbGluZ2VyKSwgbVRva2VuKGlkKSwgbUlkZW50aXR5KGlkZW50aXR5KSwgbU93bmVyKG93bmVyKQorICAgIDogbUZsaW5nZXIoZmxpbmdlciksIG1JZGVudGl0eShpZGVudGl0eSksIG1Pd25lcihvd25lcikKIHsKIH0KIApAQCAtNzk5LDExICs1NTcsMTcgQEAKICAgICByZXR1cm4gQm5TdXJmYWNlOjpvblRyYW5zYWN0KGNvZGUsIGRhdGEsIHJlcGx5LCBmbGFncyk7CiB9CiAKLXNwPEdyYXBoaWNCdWZmZXI+IExheWVyQmFzZUNsaWVudDo6U3VyZmFjZTo6cmVxdWVzdEJ1ZmZlcihpbnQgaW5kZXgsIGludCB1c2FnZSkgCitzcDxHcmFwaGljQnVmZmVyPiBMYXllckJhc2VDbGllbnQ6OlN1cmZhY2U6OnJlcXVlc3RCdWZmZXIoaW50IGJ1ZmZlcklkeCwKKyAgICAgICAgdWludDMyX3QgdywgdWludDMyX3QgaCwgdWludDMyX3QgZm9ybWF0LCB1aW50MzJfdCB1c2FnZSkKIHsKICAgICByZXR1cm4gTlVMTDsgCiB9CiAKK3N0YXR1c190IExheWVyQmFzZUNsaWVudDo6U3VyZmFjZTo6c2V0QnVmZmVyQ291bnQoaW50IGJ1ZmZlckNvdW50KQoreworICAgIHJldHVybiBJTlZBTElEX09QRVJBVElPTjsKK30KKwogc3RhdHVzX3QgTGF5ZXJCYXNlQ2xpZW50OjpTdXJmYWNlOjpyZWdpc3RlckJ1ZmZlcnMoCiAgICAgICAgIGNvbnN0IElTdXJmYWNlOjpCdWZmZXJIZWFwJiBidWZmZXJzKSAKIHsgCmRpZmYgLS1naXQgYS9saWJzL3N1cmZhY2VmbGluZ2VyL0xheWVyQmFzZS5oIGIvbGlicy9zdXJmYWNlZmxpbmdlci9MYXllckJhc2UuaAppbmRleCA2MmVjODM5Li40Mjg4Y2Y3IDEwMDY0NAotLS0gYS9saWJzL3N1cmZhY2VmbGluZ2VyL0xheWVyQmFzZS5oCisrKyBiL2xpYnMvc3VyZmFjZWZsaW5nZXIvTGF5ZXJCYXNlLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpbmNsdWRlIDx1aS9SZWdpb24uaD4KICNpbmNsdWRlIDx1aS9PdmVybGF5Lmg+CiAKLSNpbmNsdWRlIDxzdXJmYWNlZmxpbmdlci9JU3VyZmFjZUZsaW5nZXJDbGllbnQuaD4KKyNpbmNsdWRlIDxzdXJmYWNlZmxpbmdlci9JU3VyZmFjZUNvbXBvc2VyQ2xpZW50Lmg+CiAjaW5jbHVkZSA8cHJpdmF0ZS9zdXJmYWNlZmxpbmdlci9TaGFyZWRCdWZmZXJTdGFjay5oPgogI2luY2x1ZGUgPHByaXZhdGUvc3VyZmFjZWZsaW5nZXIvTGF5ZXJTdGF0ZS5oPgogCkBAIC00NSw0MSArNDUsMTcgQEAKIGNsYXNzIENsaWVudDsKIGNsYXNzIEdyYXBoaWNCdWZmZXI7CiBjbGFzcyBHcmFwaGljUGxhbmU7CitjbGFzcyBMYXllckJhc2VDbGllbnQ7CiBjbGFzcyBTdXJmYWNlRmxpbmdlcjsKK2NsYXNzIFRleHR1cmU7CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBjbGFzcyBMYXllckJhc2UgOiBwdWJsaWMgUmVmQmFzZQogewotICAgIC8vIHBvb3IgbWFuJ3MgZHluYW1pY19jYXN0IGJlbG93Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgZ2V0VHlwZUluZm9PZkFueVR5cGUgewotICAgICAgICBzdGF0aWMgdWludDMyX3QgZ2V0KCkgeyByZXR1cm4gVDo6dHlwZUluZm87IH0KLSAgICB9OwotCi0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4KLSAgICBzdHJ1Y3QgZ2V0VHlwZUluZm9PZkFueVR5cGU8VCo+IHsKLSAgICAgICAgc3RhdGljIHVpbnQzMl90IGdldCgpIHsgcmV0dXJuIGdldFR5cGVJbmZvT2ZBbnlUeXBlPFQ+OjpnZXQoKTsgfQotICAgIH07Ci0KIHB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3QgdWludDMyX3QgdHlwZUluZm87Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHR5cGVJRDsKLSAgICB2aXJ0dWFsIGNoYXIgY29uc3QqIGdldFR5cGVJRCgpIGNvbnN0IHsgcmV0dXJuIHR5cGVJRDsgfQotICAgIHZpcnR1YWwgdWludDMyX3QgZ2V0VHlwZUluZm8oKSBjb25zdCB7IHJldHVybiB0eXBlSW5mbzsgfQotICAgIAotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci0gICAgc3RhdGljIFQgZHluYW1pY0Nhc3QoTGF5ZXJCYXNlKiBiYXNlKSB7Ci0gICAgICAgIHVpbnQzMl90IG1vc3REZXJpdmVkSW5mbyA9IGJhc2UtPmdldFR5cGVJbmZvKCk7Ci0gICAgICAgIHVpbnQzMl90IGNhc3RUb0luZm8gPSBnZXRUeXBlSW5mb09mQW55VHlwZTxUPjo6Z2V0KCk7Ci0gICAgICAgIGlmICgobW9zdERlcml2ZWRJbmZvICYgY2FzdFRvSW5mbykgPT0gY2FzdFRvSW5mbykKLSAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxUPihiYXNlKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQorICAgICAgICAgICAgTGF5ZXJCYXNlKFN1cmZhY2VGbGluZ2VyKiBmbGluZ2VyLCBEaXNwbGF5SUQgZGlzcGxheSk7CiAKLSAgICAKLSAgICBMYXllckJhc2UoU3VyZmFjZUZsaW5nZXIqIGZsaW5nZXIsIERpc3BsYXlJRCBkaXNwbGF5KTsKLSAgICAKICAgICBEaXNwbGF5SUQgICAgICAgICAgIGRweTsKICAgICBtdXRhYmxlIGJvb2wgICAgICAgIGNvbnRlbnREaXJ0eTsKICAgICAgICAgICAgIFJlZ2lvbiAgICAgIHZpc2libGVSZWdpb25TY3JlZW47CkBAIC0xMjUsNiArMTAxLDEwIEBACiAKICAgICAgICAgICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogCisgICAgdmlydHVhbCBzcDxMYXllckJhc2VDbGllbnQ+IGdldExheWVyQmFzZUNsaWVudCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0KKworICAgIHZpcnR1YWwgY29uc3QgY2hhciogZ2V0VHlwZUlkKCkgY29uc3QgeyByZXR1cm4gIkxheWVyQmFzZSI7IH0KKwogICAgIC8qKgogICAgICAqIGRyYXcgLSBwZXJmb3JtcyBzb21lIGdsb2JhbCBjbGlwcGluZyBvcHRpbWl6YXRpb25zCiAgICAgICogYW5kIGNhbGxzIG9uRHJhdygpLgpAQCAtMTk5LDkgKzE3OSw5IEBACiAgICAgdmlydHVhbCBib29sIG5lZWRzRGl0aGVyaW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogICAgIC8qKgotICAgICAqIHRyYW5zZm9ybWVkIC0tIHRydWUgaXMgdGhpcyBzdXJmYWNlIG5lZWRzIGEgdG8gYmUgdHJhbnNmb3JtZWQKKyAgICAgKiBuZWVkc0xpbmVhckZpbHRlcmluZyAtIHRydWUgaWYgdGhpcyBzdXJmYWNlIG5lZWRzIGZpbHRlcmluZwogICAgICAqLwotICAgIHZpcnR1YWwgYm9vbCB0cmFuc2Zvcm1lZCgpIGNvbnN0ICAgIHsgcmV0dXJuIG1UcmFuc2Zvcm1lZDsgfQorICAgIHZpcnR1YWwgYm9vbCBuZWVkc0ZpbHRlcmluZygpIGNvbnN0IHsgcmV0dXJuIG1OZWVkc0ZpbHRlcmluZzsgfQogCiAgICAgLyoqCiAgICAgICogaXNTZWN1cmUgLSB0cnVlIGlmIHRoaXMgc3VyZmFjZSBpcyBzZWN1cmUsIHRoYXQgaXMgaWYgaXQgcHJldmVudHMKQEAgLTIxNyw3ICsxOTcsMTAgQEAKICAgICAgKiAgY3VycmVudCBsaXN0ICovCiAgICAgdmlydHVhbCB2b2lkIG9uUmVtb3ZlZCgpIHsgfTsKICAgICAKLSAgICAKKyAgICAvKiogYWx3YXlzIGNhbGwgYmFzZSBjbGFzcyBmaXJzdCAqLworICAgIHZpcnR1YWwgdm9pZCBkdW1wKFN0cmluZzgmIHJlc3VsdCwgY2hhciogc2NyYXRjaCwgc2l6ZV90IHNpemUpIGNvbnN0OworCisKICAgICBlbnVtIHsgLy8gZmxhZ3MgZm9yIGRvVHJhbnNhY3Rpb24oKQogICAgICAgICBlVmlzaWJsZVJlZ2lvbiAgICAgID0gMHgwMDAwMDAwMiwKICAgICB9OwpAQCAtMjQxLDQ0ICsyMjQsMTggQEAKICAgICBjb25zdCBHcmFwaGljUGxhbmUmIGdyYXBoaWNQbGFuZShpbnQgZHB5KSBjb25zdDsKICAgICAgICAgICBHcmFwaGljUGxhbmUmIGdyYXBoaWNQbGFuZShpbnQgZHB5KTsKIAotICAgICAgICAgIEdMdWludCBjcmVhdGVUZXh0dXJlKCkgY29uc3Q7Ci0gICAgCi0gICAgICAgICAgc3RydWN0IFRleHR1cmUgewotICAgICAgICAgICAgICBUZXh0dXJlKCkgOiBuYW1lKC0xVSksIHdpZHRoKDApLCBoZWlnaHQoMCksCi0gICAgICAgICAgICAgICAgICBpbWFnZShFR0xfTk9fSU1BR0VfS0hSKSwgdHJhbnNmb3JtKDApLCAKLSAgICAgICAgICAgICAgICAgIE5QT1RBZGp1c3QoZmFsc2UpLCBkaXJ0eSh0cnVlKSB7IH0KLSAgICAgICAgICAgICAgR0x1aW50ICAgICAgICBuYW1lOwotICAgICAgICAgICAgICBHTHVpbnQgICAgICAgIHdpZHRoOwotICAgICAgICAgICAgICBHTHVpbnQgICAgICAgIGhlaWdodDsKLSAgICAgICAgICAgICAgR0x1aW50ICAgICAgICBwb3RXaWR0aDsKLSAgICAgICAgICAgICAgR0x1aW50ICAgICAgICBwb3RIZWlnaHQ7Ci0gICAgICAgICAgICAgIEdMZmxvYXQgICAgICAgd1NjYWxlOwotICAgICAgICAgICAgICBHTGZsb2F0ICAgICAgIGhTY2FsZTsKLSAgICAgICAgICAgICAgRUdMSW1hZ2VLSFIgICBpbWFnZTsKLSAgICAgICAgICAgICAgdWludDMyX3QgICAgICB0cmFuc2Zvcm07Ci0gICAgICAgICAgICAgIGJvb2wgICAgICAgICAgTlBPVEFkanVzdDsKLSAgICAgICAgICAgICAgYm9vbCAgICAgICAgICBkaXJ0eTsKLSAgICAgICAgICB9OwotCi0gICAgICAgICAgdm9pZCBjbGVhcldpdGhPcGVuR0woY29uc3QgUmVnaW9uJiBjbGlwLCBHTGNsYW1weCByLCBHTGNsYW1weCBnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMY2xhbXB4IGIsIEdMY2xhbXB4IGFscGhhKSBjb25zdDsKKyAgICAgICAgICB2b2lkIGNsZWFyV2l0aE9wZW5HTChjb25zdCBSZWdpb24mIGNsaXAsIEdMY2xhbXBmIHIsIEdMY2xhbXBmIGcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xjbGFtcGYgYiwgR0xjbGFtcGYgYWxwaGEpIGNvbnN0OwogICAgICAgICAgIHZvaWQgY2xlYXJXaXRoT3BlbkdMKGNvbnN0IFJlZ2lvbiYgY2xpcCkgY29uc3Q7CiAgICAgICAgICAgdm9pZCBkcmF3V2l0aE9wZW5HTChjb25zdCBSZWdpb24mIGNsaXAsIGNvbnN0IFRleHR1cmUmIHRleHR1cmUpIGNvbnN0OwotICAgICAgICAgIHZvaWQgbG9hZFRleHR1cmUoVGV4dHVyZSogdGV4dHVyZSwgCi0gICAgICAgICAgICAgICAgICBjb25zdCBSZWdpb24mIGRpcnR5LCBjb25zdCBHR0xTdXJmYWNlJiB0KSBjb25zdDsKLSAgICAgICAgICBzdGF0dXNfdCBpbml0aWFsaXplRWdsSW1hZ2UoCi0gICAgICAgICAgICAgICAgICBjb25zdCBzcDxHcmFwaGljQnVmZmVyPiYgYnVmZmVyLCBUZXh0dXJlKiB0ZXh0dXJlKTsKLQotICAgICAgICAgIGJvb2wgaXNTdXBwb3J0ZWRZdXZGb3JtYXQoaW50IGZvcm1hdCkgY29uc3Q7CiAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgc3A8U3VyZmFjZUZsaW5nZXI+IG1GbGluZ2VyOwogICAgICAgICAgICAgICAgIHVpbnQzMl90ICAgICAgICBtRmxhZ3M7CiAKICAgICAgICAgICAgICAgICAvLyBjYWNoZWQgZHVyaW5nIHZhbGlkYXRlVmlzaWJpbGl0eSgpCi0gICAgICAgICAgICAgICAgYm9vbCAgICAgICAgICAgIG1UcmFuc2Zvcm1lZDsKLSAgICAgICAgICAgICAgICBib29sICAgICAgICAgICAgbVVzZUxpbmVhckZpbHRlcmluZzsKKyAgICAgICAgICAgICAgICBib29sICAgICAgICAgICAgbU5lZWRzRmlsdGVyaW5nOwogICAgICAgICAgICAgICAgIGludDMyX3QgICAgICAgICBtT3JpZW50YXRpb247Ci0gICAgICAgICAgICAgICAgR0xmaXhlZCAgICAgICAgIG1WZXJ0aWNlc1s0XVsyXTsKKyAgICAgICAgICAgICAgICBHTGZsb2F0ICAgICAgICAgbVZlcnRpY2VzWzRdWzJdOwogICAgICAgICAgICAgICAgIFJlY3QgICAgICAgICAgICBtVHJhbnNmb3JtZWRCb3VuZHM7CiAgICAgICAgICAgICAgICAgaW50ICAgICAgICAgICAgIG1MZWZ0OwogICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgICBtVG9wOwpAQCAtMzAzLDcgKzI2MCw2IEBACiAKIHByaXZhdGU6CiAgICAgTGF5ZXJCYXNlKGNvbnN0IExheWVyQmFzZSYgcmhzKTsKLSAgICB2b2lkIHZhbGlkYXRlVGV4dHVyZShHTGludCB0ZXh0dXJlTmFtZSkgY29uc3Q7CiB9OwogCiAKQEAgLTMxMyw0MiArMjY5LDI1IEBACiB7CiBwdWJsaWM6CiAgICAgY2xhc3MgU3VyZmFjZTsKLSAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCB0eXBlSW5mbzsKLSAgICBzdGF0aWMgY29uc3QgY2hhciogY29uc3QgdHlwZUlEOwotICAgIHZpcnR1YWwgY2hhciBjb25zdCogZ2V0VHlwZUlEKCkgY29uc3QgeyByZXR1cm4gdHlwZUlEOyB9Ci0gICAgdmlydHVhbCB1aW50MzJfdCBnZXRUeXBlSW5mbygpIGNvbnN0IHsgcmV0dXJuIHR5cGVJbmZvOyB9CiAKLSAgICAvLyBsY2JsayBpcyAoYWxtb3N0KSBvbmx5IGFjY2Vzc2VkIGZyb20gdGhlIG1haW4gU0YgdGhyZWFkLCBpbiB0aGUgcGxhY2VzCi0gICAgLy8gd2hlcmUgaXQncyBub3QsIGEgcmVmZXJlbmNlIHRvIENsaWVudCBtdXN0IGJlIGhlbGQKLSAgICBTaGFyZWRCdWZmZXJTZXJ2ZXIqICAgICBsY2JsazsKLQotICAgIExheWVyQmFzZUNsaWVudChTdXJmYWNlRmxpbmdlciogZmxpbmdlciwgRGlzcGxheUlEIGRpc3BsYXksIAotICAgICAgICAgICAgY29uc3Qgc3A8Q2xpZW50PiYgY2xpZW50LCBpbnQzMl90IGkpOworICAgICAgICAgICAgTGF5ZXJCYXNlQ2xpZW50KFN1cmZhY2VGbGluZ2VyKiBmbGluZ2VyLCBEaXNwbGF5SUQgZGlzcGxheSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwPENsaWVudD4mIGNsaWVudCk7CiAgICAgdmlydHVhbCB+TGF5ZXJCYXNlQ2xpZW50KCk7Ci0gICAgdmlydHVhbCB2b2lkIG9uRmlyc3RSZWYoKTsKIAotICAgIGNvbnN0IHdwPENsaWVudD4gICAgY2xpZW50OwotCi0gICAgaW5saW5lICB1aW50MzJfdCAgICBnZXRJZGVudGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1JZGVudGl0eTsgfQotICAgIGlubGluZSAgaW50MzJfdCAgICAgY2xpZW50SW5kZXgoKSBjb25zdCB7IHJldHVybiBtSW5kZXg7IH0KLSAgICAgICAgICAgIGludDMyX3QgICAgIHNlcnZlckluZGV4KCkgY29uc3Q7Ci0KLSAgIAogICAgICAgICAgICAgc3A8U3VyZmFjZT4gZ2V0U3VyZmFjZSgpOwogICAgIHZpcnR1YWwgc3A8U3VyZmFjZT4gY3JlYXRlU3VyZmFjZSgpIGNvbnN0OwotICAgIAotICAgIHZpcnR1YWwgdm9pZCBvblJlbW92ZWQoKTsKKyAgICB2aXJ0dWFsIHNwPExheWVyQmFzZUNsaWVudD4gZ2V0TGF5ZXJCYXNlQ2xpZW50KCkgY29uc3QgeworICAgICAgICByZXR1cm4gY29uc3RfY2FzdDxMYXllckJhc2VDbGllbnQqPih0aGlzKTsgfQorICAgIHZpcnR1YWwgY29uc3QgY2hhciogZ2V0VHlwZUlkKCkgY29uc3QgeyByZXR1cm4gIkxheWVyQmFzZUNsaWVudCI7IH0KIAorICAgIHVpbnQzMl90IGdldElkZW50aXR5KCkgY29uc3QgeyByZXR1cm4gbUlkZW50aXR5OyB9CiAKLSAgICBjbGFzcyBTdXJmYWNlIDogcHVibGljIEJuU3VyZmFjZSAKLSAgICB7CisgICAgY2xhc3MgU3VyZmFjZSA6IHB1YmxpYyBCblN1cmZhY2UgIHsKICAgICBwdWJsaWM6Ci0gICAgICAgIGludDMyX3QgZ2V0VG9rZW4oKSBjb25zdCB7IHJldHVybiBtVG9rZW47IH0KICAgICAgICAgaW50MzJfdCBnZXRJZGVudGl0eSgpIGNvbnN0IHsgcmV0dXJuIG1JZGVudGl0eTsgfQogICAgICAgICAKICAgICBwcm90ZWN0ZWQ6Ci0gICAgICAgIFN1cmZhY2UoY29uc3Qgc3A8U3VyZmFjZUZsaW5nZXI+JiBmbGluZ2VyLCAKLSAgICAgICAgICAgICAgICBTdXJmYWNlSUQgaWQsIGludCBpZGVudGl0eSwgCisgICAgICAgIFN1cmZhY2UoY29uc3Qgc3A8U3VyZmFjZUZsaW5nZXI+JiBmbGluZ2VyLCBpbnQgaWRlbnRpdHksCiAgICAgICAgICAgICAgICAgY29uc3Qgc3A8TGF5ZXJCYXNlQ2xpZW50PiYgb3duZXIpOwogICAgICAgICB2aXJ0dWFsIH5TdXJmYWNlKCk7CiAgICAgICAgIHZpcnR1YWwgc3RhdHVzX3Qgb25UcmFuc2FjdCh1aW50MzJfdCBjb2RlLCBjb25zdCBQYXJjZWwmIGRhdGEsCkBAIC0zNTYsNyArMjk1LDEwIEBACiAgICAgICAgIHNwPExheWVyQmFzZUNsaWVudD4gZ2V0T3duZXIoKSBjb25zdDsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgc3A8R3JhcGhpY0J1ZmZlcj4gcmVxdWVzdEJ1ZmZlcihpbnQgaW5kZXgsIGludCB1c2FnZSk7CisgICAgICAgIHZpcnR1YWwgc3A8R3JhcGhpY0J1ZmZlcj4gcmVxdWVzdEJ1ZmZlcihpbnQgYnVmZmVySWR4LAorICAgICAgICAgICAgICAgIHVpbnQzMl90IHcsIHVpbnQzMl90IGgsIHVpbnQzMl90IGZvcm1hdCwgdWludDMyX3QgdXNhZ2UpOworICAgICAgICB2aXJ0dWFsIHN0YXR1c190IHNldEJ1ZmZlckNvdW50KGludCBidWZmZXJDb3VudCk7CisKICAgICAgICAgdmlydHVhbCBzdGF0dXNfdCByZWdpc3RlckJ1ZmZlcnMoY29uc3QgSVN1cmZhY2U6OkJ1ZmZlckhlYXAmIGJ1ZmZlcnMpOyAKICAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RCdWZmZXIoc3NpemVfdCBvZmZzZXQpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlckJ1ZmZlcnMoKTsKQEAgLTM2NiwyMCArMzA4LDIyIEBACiAgICAgcHJvdGVjdGVkOgogICAgICAgICBmcmllbmQgY2xhc3MgTGF5ZXJCYXNlQ2xpZW50OwogICAgICAgICBzcDxTdXJmYWNlRmxpbmdlcj4gIG1GbGluZ2VyOwotICAgICAgICBpbnQzMl90ICAgICAgICAgICAgIG1Ub2tlbjsKICAgICAgICAgaW50MzJfdCAgICAgICAgICAgICBtSWRlbnRpdHk7CiAgICAgICAgIHdwPExheWVyQmFzZUNsaWVudD4gbU93bmVyOwogICAgIH07CiAKICAgICBmcmllbmQgY2xhc3MgU3VyZmFjZTsKIAorcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgdm9pZCBkdW1wKFN0cmluZzgmIHJlc3VsdCwgY2hhciogc2NyYXRjaCwgc2l6ZV90IHNpemUpIGNvbnN0OworCiBwcml2YXRlOgotICAgICAgICAgICAgICAgIGludDMyX3QgICAgICAgICBtSW5kZXg7Ci0gICAgbXV0YWJsZSAgICAgTXV0ZXggICAgICAgICAgIG1Mb2NrOwotICAgIG11dGFibGUgICAgIHdwPFN1cmZhY2U+ICAgICBtQ2xpZW50U3VyZmFjZTsKKyAgICBtdXRhYmxlIE11dGV4IG1Mb2NrOworICAgIG11dGFibGUgd3A8U3VyZmFjZT4gbUNsaWVudFN1cmZhY2U7CisgICAgY29uc3Qgd3A8Q2xpZW50PiBtQ2xpZW50UmVmOwogICAgIC8vIG9ubHkgcmVhZAotICAgIGNvbnN0ICAgICAgIHVpbnQzMl90ICAgICAgICBtSWRlbnRpdHk7Ci0gICAgc3RhdGljICAgICAgaW50MzJfdCAgICAgICAgIHNJZGVudGl0eTsKKyAgICBjb25zdCB1aW50MzJfdCBtSWRlbnRpdHk7CisgICAgc3RhdGljIGludDMyX3Qgc0lkZW50aXR5OwogfTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9saWJzL3N1cmZhY2VmbGluZ2VyL0xheWVyQmx1ci5jcHAgYi9saWJzL3N1cmZhY2VmbGluZ2VyL0xheWVyQmx1ci5jcHAKaW5kZXggNWZkNzkwNC4uNjRhNDNjNyAxMDA2NDQKLS0tIGEvbGlicy9zdXJmYWNlZmxpbmdlci9MYXllckJsdXIuY3BwCisrKyBiL2xpYnMvc3VyZmFjZWZsaW5nZXIvTGF5ZXJCbHVyLmNwcApAQCAtMzMsMTQgKzMzLDkgQEAKIG5hbWVzcGFjZSBhbmRyb2lkIHsKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1jb25zdCB1aW50MzJfdCBMYXllckJsdXI6OnR5cGVJbmZvID0gTGF5ZXJCYXNlQ2xpZW50Ojp0eXBlSW5mbyB8IDg7Ci1jb25zdCBjaGFyKiBjb25zdCBMYXllckJsdXI6OnR5cGVJRCA9ICJMYXllckJsdXIiOwotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQogTGF5ZXJCbHVyOjpMYXllckJsdXIoU3VyZmFjZUZsaW5nZXIqIGZsaW5nZXIsIERpc3BsYXlJRCBkaXNwbGF5LAotICAgICAgICBjb25zdCBzcDxDbGllbnQ+JiBjbGllbnQsIGludDMyX3QgaSkKLSAgICA6IExheWVyQmFzZUNsaWVudChmbGluZ2VyLCBkaXNwbGF5LCBjbGllbnQsIGkpLCBtQ2FjaGVEaXJ0eSh0cnVlKSwKKyAgICAgICAgY29uc3Qgc3A8Q2xpZW50PiYgY2xpZW50KQorICAgIDogTGF5ZXJCYXNlQ2xpZW50KGZsaW5nZXIsIGRpc3BsYXksIGNsaWVudCksIG1DYWNoZURpcnR5KHRydWUpLAogICAgICAgICAgIG1SZWZyZXNoQ2FjaGUodHJ1ZSksIG1DYWNoZUFnZSgwKSwgbVRleHR1cmVOYW1lKC0xVSksCiAgICAgICAgICAgbVdpZHRoU2NhbGUoMS4wZiksIG1IZWlnaHRTY2FsZSgxLjBmKSwKICAgICAgICAgICBtQmx1ckZvcm1hdChHR0xfUElYRUxfRk9STUFUX1JHQl81NjUpCkBAIC0xMDAsNyArOTUsOSBAQAogICAgICAgICAgICAgICAgICAgICBtQ2FjaGVEaXJ0eSA9IGZhbHNlOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghbUF1dG9SZWZyZXNoUGVuZGluZykgewotICAgICAgICAgICAgICAgICAgICAgICAgbUZsaW5nZXItPnNpZ25hbERlbGF5ZWRFdmVudChtczJucyg1MDApKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1GbGluZ2VyLT5wb3N0TWVzc2FnZUFzeW5jKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgTWVzc2FnZUJhc2UoTWVzc2FnZVF1ZXVlOjpJTlZBTElEQVRFKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXMybnMoNTAwKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBtQXV0b1JlZnJlc2hQZW5kaW5nID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KQEAgLTE0OSw2ICsxNDYsMTEgQEAKICAgICBSZWdpb246OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY2xpcC5iZWdpbigpOwogICAgIFJlZ2lvbjo6Y29uc3RfaXRlcmF0b3IgY29uc3QgZW5kID0gY2xpcC5lbmQoKTsKICAgICBpZiAoaXQgIT0gZW5kKSB7CisjaWYgZGVmaW5lZChHTF9PRVNfdGV4dHVyZV9leHRlcm5hbCkKKyAgICAgICAgaWYgKEdMRXh0ZW5zaW9uczo6Z2V0SW5zdGFuY2UoKS5oYXZlVGV4dHVyZUV4dGVybmFsKCkpIHsKKyAgICAgICAgICAgIGdsRGlzYWJsZShHTF9URVhUVVJFX0VYVEVSTkFMX09FUyk7CisgICAgICAgIH0KKyNlbmRpZgogICAgICAgICBnbEVuYWJsZShHTF9URVhUVVJFXzJEKTsKICAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBtVGV4dHVyZU5hbWUpOwogCkBAIC0xODEsNyArMTgzLDcgQEAKICAgICAgICAgICAgIGJsLmRhdGEgPSAoR0dMdWJ5dGUqKXBpeGVsczsgICAgICAgICAgICAKICAgICAgICAgICAgIGJsdXJGaWx0ZXIoJmJsLCA4LCAyKTsKIAotICAgICAgICAgICAgaWYgKG1GbGFncyAmIChEaXNwbGF5SGFyZHdhcmU6Ok5QT1RfRVhURU5TSU9OKSkgeworICAgICAgICAgICAgaWYgKEdMRXh0ZW5zaW9uczo6Z2V0SW5zdGFuY2UoKS5oYXZlTnBvdCgpKSB7CiAgICAgICAgICAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsIG1SZWFkRm9ybWF0LCB3LCBoLCAwLAogICAgICAgICAgICAgICAgICAgICAgICAgbVJlYWRGb3JtYXQsIG1SZWFkVHlwZSwgcGl4ZWxzKTsKICAgICAgICAgICAgICAgICBtV2lkdGhTY2FsZSAgPSAxLjBmIC8gdzsKQEAgLTIwNiw4ICsyMDgsOCBAQAogCiAgICAgICAgIGNvbnN0IFN0YXRlJiBzID0gZHJhd2luZ1N0YXRlKCk7CiAgICAgICAgIGlmIChVTkxJS0VMWShzLmFscGhhIDwgMHhGRikpIHsKLSAgICAgICAgICAgIGNvbnN0IEdHTGZpeGVkIGFscGhhID0gKHMuYWxwaGEgPDwgMTYpLzI1NTsKLSAgICAgICAgICAgIGdsQ29sb3I0eCgwLCAwLCAwLCBhbHBoYSk7CisgICAgICAgICAgICBjb25zdCBHTGZsb2F0IGFscGhhID0gcy5hbHBoYSAqICgxLjBmLzI1NS4wZik7CisgICAgICAgICAgICBnbENvbG9yNGYoMCwgMCwgMCwgYWxwaGEpOwogICAgICAgICAgICAgZ2xFbmFibGUoR0xfQkxFTkQpOwogICAgICAgICAgICAgZ2xCbGVuZEZ1bmMoR0xfU1JDX0FMUEhBLCBHTF9PTkVfTUlOVVNfU1JDX0FMUEhBKTsKICAgICAgICAgICAgIGdsVGV4RW52eChHTF9URVhUVVJFX0VOViwgR0xfVEVYVFVSRV9FTlZfTU9ERSwgR0xfUkVQTEFDRSk7CkBAIC0yMjUsMzggKzIyNywyMCBAQAogICAgICAgICBnbFRleFBhcmFtZXRlcngoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NQUdfRklMVEVSLCBHTF9ORUFSRVNUKTsKICAgICAgICAgZ2xUZXhQYXJhbWV0ZXJ4KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CiAKLSAgICAgICAgaWYgKFVOTElLRUxZKHRyYW5zZm9ybWVkKCkKLSAgICAgICAgICAgICAgICB8fCAhKG1GbGFncyAmIERpc3BsYXlIYXJkd2FyZTo6RFJBV19URVhUVVJFX0VYVEVOU0lPTikgKSkgewotICAgICAgICAgICAgLy8gVGhpcyBpcyBhIHZlcnkgcmFyZSBzY2VuYXJpby4KLSAgICAgICAgICAgIGdsTWF0cml4TW9kZShHTF9URVhUVVJFKTsKLSAgICAgICAgICAgIGdsTG9hZElkZW50aXR5KCk7Ci0gICAgICAgICAgICBnbFNjYWxlZihtV2lkdGhTY2FsZSwgbUhlaWdodFNjYWxlLCAxKTsKLSAgICAgICAgICAgIGdsVHJhbnNsYXRlZigteCwgbVlPZmZzZXQgLSB5LCAwKTsKLSAgICAgICAgICAgIGdsRW5hYmxlQ2xpZW50U3RhdGUoR0xfVEVYVFVSRV9DT09SRF9BUlJBWSk7Ci0gICAgICAgICAgICBnbFZlcnRleFBvaW50ZXIoMiwgR0xfRklYRUQsIDAsIG1WZXJ0aWNlcyk7Ci0gICAgICAgICAgICBnbFRleENvb3JkUG9pbnRlcigyLCBHTF9GSVhFRCwgMCwgbVZlcnRpY2VzKTsKLSAgICAgICAgICAgIHdoaWxlIChpdCAhPSBlbmQpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBSZWN0JiByID0gKml0Kys7Ci0gICAgICAgICAgICAgICAgY29uc3QgR0xpbnQgc3kgPSBmYkhlaWdodCAtIChyLnRvcCArIHIuaGVpZ2h0KCkpOwotICAgICAgICAgICAgICAgIGdsU2Npc3NvcihyLmxlZnQsIHN5LCByLndpZHRoKCksIHIuaGVpZ2h0KCkpOwotICAgICAgICAgICAgICAgIGdsRHJhd0FycmF5cyhHTF9UUklBTkdMRV9GQU4sIDAsIDQpOyAKLSAgICAgICAgICAgIH0gICAgICAgCi0gICAgICAgICAgICBnbERpc2FibGVDbGllbnRTdGF0ZShHTF9URVhUVVJFX0NPT1JEX0FSUkFZKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIE5PVEU6IHRoaXMgaXMgbWFyZ2luYWxseSBmYXN0ZXIgd2l0aCB0aGUgc29mdHdhcmUgZ2wsIGJlY2F1c2UKLSAgICAgICAgICAgIC8vIGdsUmVhZFBpeGVscygpIHJlYWRzIHRoZSBmYiBib3R0b20tdG8tdG9wLCBob3dldmVyIHdlJ2xsCi0gICAgICAgICAgICAvLyBza2lwIGFsbCB0aGUgamFjY29iaWFuIGNvbXB1dGF0aW9ucy4KLSAgICAgICAgICAgIFJlY3QgcjsKLSAgICAgICAgICAgIEdMaW50IGNyb3BbNF0gPSB7IDAsIDAsIHcsIGggfTsKLSAgICAgICAgICAgIGdsVGV4UGFyYW1ldGVyaXYoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9DUk9QX1JFQ1RfT0VTLCBjcm9wKTsKLSAgICAgICAgICAgIHkgPSBmYkhlaWdodCAtICh5ICsgaCk7Ci0gICAgICAgICAgICB3aGlsZSAoaXQgIT0gZW5kKSB7Ci0gICAgICAgICAgICAgICAgY29uc3QgUmVjdCYgciA9ICppdCsrOwotICAgICAgICAgICAgICAgIGNvbnN0IEdMaW50IHN5ID0gZmJIZWlnaHQgLSAoci50b3AgKyByLmhlaWdodCgpKTsKLSAgICAgICAgICAgICAgICBnbFNjaXNzb3Ioci5sZWZ0LCBzeSwgci53aWR0aCgpLCByLmhlaWdodCgpKTsKLSAgICAgICAgICAgICAgICBnbERyYXdUZXhpT0VTKHgsIHksIDAsIHcsIGgpOwotICAgICAgICAgICAgfQorICAgICAgICBnbE1hdHJpeE1vZGUoR0xfVEVYVFVSRSk7CisgICAgICAgIGdsTG9hZElkZW50aXR5KCk7CisgICAgICAgIGdsU2NhbGVmKG1XaWR0aFNjYWxlLCBtSGVpZ2h0U2NhbGUsIDEpOworICAgICAgICBnbFRyYW5zbGF0ZWYoLXgsIG1ZT2Zmc2V0IC0geSwgMCk7CisgICAgICAgIGdsRW5hYmxlQ2xpZW50U3RhdGUoR0xfVEVYVFVSRV9DT09SRF9BUlJBWSk7CisgICAgICAgIGdsVmVydGV4UG9pbnRlcigyLCBHTF9GTE9BVCwgMCwgbVZlcnRpY2VzKTsKKyAgICAgICAgZ2xUZXhDb29yZFBvaW50ZXIoMiwgR0xfRkxPQVQsIDAsIG1WZXJ0aWNlcyk7CisgICAgICAgIHdoaWxlIChpdCAhPSBlbmQpIHsKKyAgICAgICAgICAgIGNvbnN0IFJlY3QmIHIgPSAqaXQrKzsKKyAgICAgICAgICAgIGNvbnN0IEdMaW50IHN5ID0gZmJIZWlnaHQgLSAoci50b3AgKyByLmhlaWdodCgpKTsKKyAgICAgICAgICAgIGdsU2Npc3NvcihyLmxlZnQsIHN5LCByLndpZHRoKCksIHIuaGVpZ2h0KCkpOworICAgICAgICAgICAgZ2xEcmF3QXJyYXlzKEdMX1RSSUFOR0xFX0ZBTiwgMCwgNCk7CiAgICAgICAgIH0KKyAgICAgICAgZ2xEaXNhYmxlQ2xpZW50U3RhdGUoR0xfVEVYVFVSRV9DT09SRF9BUlJBWSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9saWJzL3N1cmZhY2VmbGluZ2VyL0xheWVyQmx1ci5oIGIvbGlicy9zdXJmYWNlZmxpbmdlci9MYXllckJsdXIuaAppbmRleCA1YjYzZGVjLi40YzllYzY0IDEwMDY0NAotLS0gYS9saWJzL3N1cmZhY2VmbGluZ2VyL0xheWVyQmx1ci5oCisrKyBiL2xpYnMvc3VyZmFjZWZsaW5nZXIvTGF5ZXJCbHVyLmgKQEAgLTMxLDE4ICszMSwxNCBAQAogY2xhc3MgTGF5ZXJCbHVyIDogcHVibGljIExheWVyQmFzZUNsaWVudAogewogcHVibGljOiAgICAKLSAgICBzdGF0aWMgY29uc3QgdWludDMyX3QgdHlwZUluZm87Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHR5cGVJRDsKLSAgICB2aXJ0dWFsIGNoYXIgY29uc3QqIGdldFR5cGVJRCgpIGNvbnN0IHsgcmV0dXJuIHR5cGVJRDsgfQotICAgIHZpcnR1YWwgdWludDMyX3QgZ2V0VHlwZUluZm8oKSBjb25zdCB7IHJldHVybiB0eXBlSW5mbzsgfQotICAgIAogICAgICAgICAgICAgICAgIExheWVyQmx1cihTdXJmYWNlRmxpbmdlciogZmxpbmdlciwgRGlzcGxheUlEIGRpc3BsYXksCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcDxDbGllbnQ+JiBjbGllbnQsIGludDMyX3QgaSk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcDxDbGllbnQ+JiBjbGllbnQpOwogICAgICAgICB2aXJ0dWFsIH5MYXllckJsdXIoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBvbkRyYXcoY29uc3QgUmVnaW9uJiBjbGlwKSBjb25zdDsKICAgICB2aXJ0dWFsIGJvb2wgbmVlZHNCbGVuZGluZygpIGNvbnN0ICB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBib29sIGlzU2VjdXJlKCkgY29uc3QgICAgICAgeyByZXR1cm4gZmFsc2U7IH0KKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGdldFR5cGVJZCgpIGNvbnN0IHsgcmV0dXJuICJMYXllckJsdXIiOyB9CiAKICAgICB2aXJ0dWFsIHVpbnQzMl90IGRvVHJhbnNhY3Rpb24odWludDMyX3QgZmxhZ3MpOwogICAgIHZpcnR1YWwgdm9pZCBzZXRWaXNpYmxlUmVnaW9uKGNvbnN0IFJlZ2lvbiYgdmlzaWJsZVJlZ2lvbik7CmRpZmYgLS1naXQgYS9saWJzL3N1cmZhY2VmbGluZ2VyL0xheWVyQnVmZmVyLmNwcCBiL2xpYnMvc3VyZmFjZWZsaW5nZXIvTGF5ZXJCdWZmZXIuY3BwCmluZGV4IDVjMjE1OTMuLjVmODM2MzY2IDEwMDY0NAotLS0gYS9saWJzL3N1cmZhY2VmbGluZ2VyL0xheWVyQnVmZmVyLmNwcAorKysgYi9saWJzL3N1cmZhY2VmbGluZ2VyL0xheWVyQnVmZmVyLmNwcApAQCAtMzksMTUgKzM5LDEzIEBACiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1jb25zdCB1aW50MzJfdCBMYXllckJ1ZmZlcjo6dHlwZUluZm8gPSBMYXllckJhc2VDbGllbnQ6OnR5cGVJbmZvIHwgMHgyMDsKLWNvbnN0IGNoYXIqIGNvbnN0IExheWVyQnVmZmVyOjp0eXBlSUQgPSAiTGF5ZXJCdWZmZXIiOwogZ3JhbGxvY19tb2R1bGVfdCBjb25zdCogTGF5ZXJCdWZmZXI6OnNHcmFsbG9jTW9kdWxlID0gMDsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIExheWVyQnVmZmVyOjpMYXllckJ1ZmZlcihTdXJmYWNlRmxpbmdlciogZmxpbmdlciwgRGlzcGxheUlEIGRpc3BsYXksCi0gICAgICAgIGNvbnN0IHNwPENsaWVudD4mIGNsaWVudCwgaW50MzJfdCBpKQotICAgIDogTGF5ZXJCYXNlQ2xpZW50KGZsaW5nZXIsIGRpc3BsYXksIGNsaWVudCwgaSksCisgICAgICAgIGNvbnN0IHNwPENsaWVudD4mIGNsaWVudCkKKyAgICA6IExheWVyQmFzZUNsaWVudChmbGluZ2VyLCBkaXNwbGF5LCBjbGllbnQpLAogICAgICAgbU5lZWRzQmxlbmRpbmcoZmFsc2UpLCBtQmxpdEVuZ2luZSgwKQogewogfQpAQCAtNjIsOCArNjAsNyBAQAogdm9pZCBMYXllckJ1ZmZlcjo6b25GaXJzdFJlZigpCiB7CiAgICAgTGF5ZXJCYXNlQ2xpZW50OjpvbkZpcnN0UmVmKCk7Ci0gICAgbVN1cmZhY2UgPSBuZXcgU3VyZmFjZUxheWVyQnVmZmVyKG1GbGluZ2VyLCBjbGllbnRJbmRleCgpLAotICAgICAgICAgICAgY29uc3RfY2FzdDxMYXllckJ1ZmZlciAqPih0aGlzKSk7CisgICAgbVN1cmZhY2UgPSBuZXcgU3VyZmFjZUxheWVyQnVmZmVyKG1GbGluZ2VyLCB0aGlzKTsKIAogICAgIGh3X21vZHVsZV90IGNvbnN0KiBtb2R1bGUgPSAoaHdfbW9kdWxlX3QgY29uc3QqKXNHcmFsbG9jTW9kdWxlOwogICAgIGlmICghbW9kdWxlKSB7CkBAIC0xMjAsNyArMTE3LDcgQEAKICAgICAgICAgc291cmNlLT5vblRyYW5zYWN0aW9uKGZsYWdzKTsKICAgICB1aW50MzJfdCByZXMgPSBMYXllckJhc2U6OmRvVHJhbnNhY3Rpb24oZmxhZ3MpOwogICAgIC8vIHdlIGFsd2F5cyB3YW50IGZpbHRlcmluZyBmb3IgdGhlc2Ugc3VyZmFjZXMKLSAgICBtVXNlTGluZWFyRmlsdGVyaW5nID0gIShtRmxhZ3MgJiBEaXNwbGF5SGFyZHdhcmU6OlNMT1dfQ09ORklHKTsKKyAgICBtTmVlZHNGaWx0ZXJpbmcgPSAhKG1GbGFncyAmIERpc3BsYXlIYXJkd2FyZTo6U0xPV19DT05GSUcpOwogICAgIHJldHVybiByZXM7CiB9CiAKQEAgLTE0NSwxNCArMTQyLDYgQEAKICAgICB9CiB9CiAKLWJvb2wgTGF5ZXJCdWZmZXI6OnRyYW5zZm9ybWVkKCkgY29uc3QKLXsKLSAgICBzcDxTb3VyY2U+IHNvdXJjZShnZXRTb3VyY2UoKSk7Ci0gICAgaWYgKExJS0VMWShzb3VyY2UgIT0gMCkpCi0gICAgICAgIHJldHVybiBzb3VyY2UtPnRyYW5zZm9ybWVkKCk7Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCiB2b2lkIExheWVyQnVmZmVyOjpzZXJ2ZXJEZXN0cm95KCkKIHsKICAgICBzcDxTb3VyY2U+IHNvdXJjZShjbGVhclNvdXJjZSgpKTsKQEAgLTIxNCw5ICsyMDMsOSBAQAogLy8gTGF5ZXJCdWZmZXI6OlN1cmZhY2VMYXllckJ1ZmZlcgogLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCi1MYXllckJ1ZmZlcjo6U3VyZmFjZUxheWVyQnVmZmVyOjpTdXJmYWNlTGF5ZXJCdWZmZXIoY29uc3Qgc3A8U3VyZmFjZUZsaW5nZXI+JiBmbGluZ2VyLAotICAgICAgICBTdXJmYWNlSUQgaWQsIGNvbnN0IHNwPExheWVyQnVmZmVyPiYgb3duZXIpCi0gICAgOiBMYXllckJhc2VDbGllbnQ6OlN1cmZhY2UoZmxpbmdlciwgaWQsIG93bmVyLT5nZXRJZGVudGl0eSgpLCBvd25lcikKK0xheWVyQnVmZmVyOjpTdXJmYWNlTGF5ZXJCdWZmZXI6OlN1cmZhY2VMYXllckJ1ZmZlcigKKyAgICAgICAgY29uc3Qgc3A8U3VyZmFjZUZsaW5nZXI+JiBmbGluZ2VyLCBjb25zdCBzcDxMYXllckJ1ZmZlcj4mIG93bmVyKQorICAgIDogTGF5ZXJCYXNlQ2xpZW50OjpTdXJmYWNlKGZsaW5nZXIsIG93bmVyLT5nZXRJZGVudGl0eSgpLCBvd25lcikKIHsKIH0KIApAQCAtMzIxLDE2ICszMTAsMTIgQEAKIH0KIHZvaWQgTGF5ZXJCdWZmZXI6OlNvdXJjZTo6dW5yZWdpc3RlckJ1ZmZlcnMoKSB7CiB9Ci1ib29sIExheWVyQnVmZmVyOjpTb3VyY2U6OnRyYW5zZm9ybWVkKCkgY29uc3QgewotICAgIHJldHVybiBtTGF5ZXIubVRyYW5zZm9ybWVkOyAKLX0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIExheWVyQnVmZmVyOjpCdWZmZXJTb3VyY2U6OkJ1ZmZlclNvdXJjZShMYXllckJ1ZmZlciYgbGF5ZXIsCiAgICAgICAgIGNvbnN0IElTdXJmYWNlOjpCdWZmZXJIZWFwJiBidWZmZXJzKQotICAgIDogU291cmNlKGxheWVyKSwgbVN0YXR1cyhOT19FUlJPUiksIG1CdWZmZXJTaXplKDApLAotICAgICAgbVVzZUVHTEltYWdlRGlyZWN0bHkodHJ1ZSkKKyAgICA6IFNvdXJjZShsYXllciksIG1TdGF0dXMoTk9fRVJST1IpLCBtQnVmZmVyU2l6ZSgwKQogewogICAgIGlmIChidWZmZXJzLmhlYXAgPT0gTlVMTCkgewogICAgICAgICAvLyB0aGlzIGlzIGFsbG93ZWQsIGJ1dCBpbiB0aGlzIGNhc2UsIGl0IGlzIGlsbGVnYWwgdG8gcmVjZWl2ZQpAQCAtMzg4LDExICszNzMsMTEgQEAKIAogICAgIGlmIChtVGV4dHVyZS5uYW1lICE9IC0xVSkgewogICAgICAgICAvLyBHTCB0ZXh0dXJlcyBjYW4gb25seSBiZSBkZXN0cm95ZWQgZnJvbSB0aGUgR0wgdGhyZWFkCi0gICAgICAgIG1MYXllci5tRmxpbmdlci0+bUV2ZW50UXVldWUucG9zdE1lc3NhZ2UoCi0gICAgICAgICAgICAgICAgbmV3IE1lc3NhZ2VEZXN0cm95VGV4dHVyZShtTGF5ZXIubUZsaW5nZXIuZ2V0KCksIG1UZXh0dXJlLm5hbWUpICk7CisgICAgICAgIGdldEZsaW5nZXIoKS0+bUV2ZW50UXVldWUucG9zdE1lc3NhZ2UoCisgICAgICAgICAgICAgICAgbmV3IE1lc3NhZ2VEZXN0cm95VGV4dHVyZShnZXRGbGluZ2VyKCksIG1UZXh0dXJlLm5hbWUpICk7CiAgICAgfQogICAgIGlmIChtVGV4dHVyZS5pbWFnZSAhPSBFR0xfTk9fSU1BR0VfS0hSKSB7Ci0gICAgICAgIEVHTERpc3BsYXkgZHB5KG1MYXllci5tRmxpbmdlci0+Z3JhcGhpY1BsYW5lKDApLmdldEVHTERpc3BsYXkoKSk7CisgICAgICAgIEVHTERpc3BsYXkgZHB5KGdldEZsaW5nZXIoKS0+Z3JhcGhpY1BsYW5lKDApLmdldEVHTERpc3BsYXkoKSk7CiAgICAgICAgIGVnbERlc3Ryb3lJbWFnZUtIUihkcHksIG1UZXh0dXJlLmltYWdlKTsKICAgICB9CiB9CkBAIC00NDQsMTEgKzQyOSw2IEBACiAgICAgbUJ1ZmZlciA9IGJ1ZmZlcjsKIH0KIAotYm9vbCBMYXllckJ1ZmZlcjo6QnVmZmVyU291cmNlOjp0cmFuc2Zvcm1lZCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1CdWZmZXJIZWFwLnRyYW5zZm9ybSA/IHRydWUgOiBTb3VyY2U6OnRyYW5zZm9ybWVkKCk7IAotfQotCiB2b2lkIExheWVyQnVmZmVyOjpCdWZmZXJTb3VyY2U6Om9uRHJhdyhjb25zdCBSZWdpb24mIGNsaXApIGNvbnN0IAogewogICAgIHNwPEJ1ZmZlcj4gb3VyQnVmZmVyKGdldEJ1ZmZlcigpKTsKQEAgLTQ2MiwzNSArNDQyLDEwIEBACiAgICAgTmF0aXZlQnVmZmVyIHNyYyhvdXJCdWZmZXItPmdldEJ1ZmZlcigpKTsKICAgICBjb25zdCBSZWN0IHRyYW5zZm9ybWVkQm91bmRzKG1MYXllci5nZXRUcmFuc2Zvcm1lZEJvdW5kcygpKTsKIAotICAgIGlmIChVTkxJS0VMWShtVGV4dHVyZS5uYW1lID09IC0xTFUpKSB7Ci0gICAgICAgIG1UZXh0dXJlLm5hbWUgPSBtTGF5ZXIuY3JlYXRlVGV4dHVyZSgpOwotICAgIH0KLQogI2lmIGRlZmluZWQoRUdMX0FORFJPSURfaW1hZ2VfbmF0aXZlX2J1ZmZlcikKLSAgICBpZiAobUxheWVyLm1GbGFncyAmIERpc3BsYXlIYXJkd2FyZTo6RElSRUNUX1RFWFRVUkUpIHsKKyAgICBpZiAoR0xFeHRlbnNpb25zOjpnZXRJbnN0YW5jZSgpLmhhdmVEaXJlY3RUZXh0dXJlKCkpIHsKICAgICAgICAgZXJyID0gSU5WQUxJRF9PUEVSQVRJT047CiAgICAgICAgIGlmIChvdXJCdWZmZXItPnN1cHBvcnRzQ29weWJpdCgpKSB7Ci0KLSAgICAgICAgICAgIC8vIHRoZXJlIGFyZSBjb25zdHJhaW50cyBvbiBidWZmZXJzIHVzZWQgYnkgdGhlIEdQVSBhbmQgdGhlc2UgbWF5IG5vdAotICAgICAgICAgICAgLy8gYmUgaG9ub3JlZCBoZXJlLiBXZSBuZWVkIHRvIGNoYW5nZSB0aGUgQVBJIHNvIHRoZSBidWZmZXJzCi0gICAgICAgICAgICAvLyBhcmUgYWxsb2NhdGVkIHdpdGggZ3JhbGxvYy4gRm9yIG5vdyBkaXNhYmxlIHRoaXMgY29kZS1wYXRoCi0jaWYgMAotICAgICAgICAgICAgLy8gRmlyc3QsIHRyeSB0byB1c2UgdGhlIGJ1ZmZlciBhcyBhbiBFR0xJbWFnZSBkaXJlY3RseQotICAgICAgICAgICAgaWYgKG1Vc2VFR0xJbWFnZURpcmVjdGx5KSB7Ci0gICAgICAgICAgICAgICAgLy8gTk9URTogQXNzdW1lIHRoZSBidWZmZXIgaXMgYWxsb2NhdGVkIHdpdGggdGhlIHByb3BlciBVU0FHRSBmbGFncwotCi0gICAgICAgICAgICAgICAgc3A8R3JhcGhpY0J1ZmZlcj4gYnVmZmVyID0gbmV3ICBHcmFwaGljQnVmZmVyKAotICAgICAgICAgICAgICAgICAgICAgICAgc3JjLmltZy53LCBzcmMuaW1nLmgsIHNyYy5pbWcuZm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgR3JhcGhpY0J1ZmZlcjo6VVNBR0VfSFdfVEVYVFVSRSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNyYy5pbWcudywgc3JjLmltZy5oYW5kbGUsIGZhbHNlKTsKLQotICAgICAgICAgICAgICAgIGVyciA9IG1MYXllci5pbml0aWFsaXplRWdsSW1hZ2UoYnVmZmVyLCAmbVRleHR1cmUpOwotICAgICAgICAgICAgICAgIGlmIChlcnIgIT0gTk9fRVJST1IpIHsKLSAgICAgICAgICAgICAgICAgICAgbVVzZUVHTEltYWdlRGlyZWN0bHkgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0jZW5kaWYKLQogICAgICAgICAgICAgY29weWJpdF9kZXZpY2VfdCogY29weWJpdCA9IG1MYXllci5tQmxpdEVuZ2luZTsKICAgICAgICAgICAgIGlmIChjb3B5Yml0ICYmIGVyciAhPSBOT19FUlJPUikgewogICAgICAgICAgICAgICAgIC8vIGNyZWF0ZSBvdXIgRUdMSW1hZ2VLSFIgdGhlIGZpcnN0IHRpbWUKQEAgLTUyNyw3ICs0ODIsNyBAQAogICAgICAgICB0LmZvcm1hdCA9IHNyYy5pbWcuZm9ybWF0OwogICAgICAgICB0LmRhdGEgPSAoR0dMdWJ5dGUqKXNyYy5pbWcuYmFzZTsKICAgICAgICAgY29uc3QgUmVnaW9uIGRpcnR5KFJlY3QodC53aWR0aCwgdC5oZWlnaHQpKTsKLSAgICAgICAgbUxheWVyLmxvYWRUZXh0dXJlKCZtVGV4dHVyZSwgZGlydHksIHQpOworICAgICAgICBtVGV4dHVyZU1hbmFnZXIubG9hZFRleHR1cmUoJm1UZXh0dXJlLCBkaXJ0eSwgdCk7CiAgICAgfQogCiAgICAgbVRleHR1cmUudHJhbnNmb3JtID0gbUJ1ZmZlckhlYXAudHJhbnNmb3JtOwpAQCAtNTY5LDcgKzUyNCw3IEBACiAgICAgLy8gZmlndXJlIG91dCBpZiB3ZSBuZWVkIGxpbmVhciBmaWx0ZXJpbmcKICAgICBpZiAoYnVmZmVycy53ICogaCA9PSBidWZmZXJzLmggKiB3KSB7CiAgICAgICAgIC8vIHNhbWUgcGl4ZWwgYXJlYSwgZG9uJ3QgdXNlIGZpbHRlcmluZwotICAgICAgICBtTGF5ZXIubVVzZUxpbmVhckZpbHRlcmluZyA9IGZhbHNlOworICAgICAgICBtTGF5ZXIubU5lZWRzRmlsdGVyaW5nID0gZmFsc2U7CiAgICAgfQogCiAgICAgLy8gQWxsb2NhdGUgYSB0ZW1wb3JhcnkgYnVmZmVyIGFuZCBjcmVhdGUgdGhlIGNvcnJlc3BvbmRpbmcgRUdMSW1hZ2VLSFIKQEAgLTU5Myw3ICs1NDgsOCBAQAogICAgICAgICBkc3QuY3JvcC5yID0gdzsKICAgICAgICAgZHN0LmNyb3AuYiA9IGg7CiAKLSAgICAgICAgZXJyID0gbUxheWVyLmluaXRpYWxpemVFZ2xJbWFnZShidWZmZXIsICZtVGV4dHVyZSk7CisgICAgICAgIEVHTERpc3BsYXkgZHB5KGdldEZsaW5nZXIoKS0+Z3JhcGhpY1BsYW5lKDApLmdldEVHTERpc3BsYXkoKSk7CisgICAgICAgIGVyciA9IG1UZXh0dXJlTWFuYWdlci5pbml0RWdsSW1hZ2UoJm1UZXh0dXJlLCBkcHksIGJ1ZmZlcik7CiAgICAgfQogCiAgICAgcmV0dXJuIGVycjsKQEAgLTYwMiwxNCArNTU4LDEzIEBACiB2b2lkIExheWVyQnVmZmVyOjpCdWZmZXJTb3VyY2U6OmNsZWFyVGVtcEJ1ZmZlckltYWdlKCkgY29uc3QKIHsKICAgICAvLyBkZWxldGUgdGhlIGltYWdlCi0gICAgRUdMRGlzcGxheSBkcHkobUxheWVyLm1GbGluZ2VyLT5ncmFwaGljUGxhbmUoMCkuZ2V0RUdMRGlzcGxheSgpKTsKKyAgICBFR0xEaXNwbGF5IGRweShnZXRGbGluZ2VyKCktPmdyYXBoaWNQbGFuZSgwKS5nZXRFR0xEaXNwbGF5KCkpOwogICAgIGVnbERlc3Ryb3lJbWFnZUtIUihkcHksIG1UZXh0dXJlLmltYWdlKTsKIAogICAgIC8vIGFuZCB0aGUgYXNzb2NpYXRlZCB0ZXh0dXJlIChyZWNyZWF0ZSBhIG5hbWUpCiAgICAgZ2xEZWxldGVUZXh0dXJlcygxLCAmbVRleHR1cmUubmFtZSk7CiAgICAgVGV4dHVyZSBkZWZhdWx0VGV4dHVyZTsKICAgICBtVGV4dHVyZSA9IGRlZmF1bHRUZXh0dXJlOwotICAgIG1UZXh0dXJlLm5hbWUgPSBtTGF5ZXIuY3JlYXRlVGV4dHVyZSgpOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTYyMCw3ICs1NzUsNyBAQAogICAgIDogU291cmNlKGxheWVyKSwgbVZpc2liaWxpdHlDaGFuZ2VkKGZhbHNlKSwKICAgICBtT3ZlcmxheSgwKSwgbU92ZXJsYXlIYW5kbGUoMCksIG1PdmVybGF5RGV2aWNlKDApLCBtT3JpZW50YXRpb24ob3JpZW50YXRpb24pCiB7Ci0gICAgb3ZlcmxheV9jb250cm9sX2RldmljZV90KiBvdmVybGF5X2RldiA9IG1MYXllci5tRmxpbmdlci0+Z2V0T3ZlcmxheUVuZ2luZSgpOworICAgIG92ZXJsYXlfY29udHJvbF9kZXZpY2VfdCogb3ZlcmxheV9kZXYgPSBnZXRGbGluZ2VyKCktPmdldE92ZXJsYXlFbmdpbmUoKTsKICAgICBpZiAob3ZlcmxheV9kZXYgPT0gTlVMTCkgewogICAgICAgICAvLyBvdmVybGF5cyBub3Qgc3VwcG9ydGVkCiAgICAgICAgIHJldHVybjsKQEAgLTY1MSw3ICs2MDYsNyBAQAogCiAgICAgKm92ZXJsYXlSZWYgPSBuZXcgT3ZlcmxheVJlZihtT3ZlcmxheUhhbmRsZSwgY2hhbm5lbCwKICAgICAgICAgICAgIG1XaWR0aCwgbUhlaWdodCwgbUZvcm1hdCwgbVdpZHRoU3RyaWRlLCBtSGVpZ2h0U3RyaWRlKTsKLSAgICBtTGF5ZXIubUZsaW5nZXItPnNpZ25hbEV2ZW50KCk7CisgICAgZ2V0RmxpbmdlcigpLT5zaWduYWxFdmVudCgpOwogfQogCiBMYXllckJ1ZmZlcjo6T3ZlcmxheVNvdXJjZTo6fk92ZXJsYXlTb3VyY2UoKQpAQCAtNjY1LDkgKzYyMCw5IEBACiB2b2lkIExheWVyQnVmZmVyOjpPdmVybGF5U291cmNlOjpvbkRyYXcoY29uc3QgUmVnaW9uJiBjbGlwKSBjb25zdAogewogICAgIC8vIHRoaXMgd291bGQgYmUgd2hlcmUgdGhlIGNvbG9yLWtleSB3b3VsZCBiZSBzZXQsIHNob3VsZCB3ZSBuZWVkIGl0LgotICAgIEdMY2xhbXB4IHJlZCA9IDA7Ci0gICAgR0xjbGFtcHggZ3JlZW4gPSAwOwotICAgIEdMY2xhbXB4IGJsdWUgPSAwOworICAgIEdMY2xhbXBmIHJlZCA9IDA7CisgICAgR0xjbGFtcGYgZ3JlZW4gPSAwOworICAgIEdMY2xhbXBmIGJsdWUgPSAwOwogICAgIG1MYXllci5jbGVhcldpdGhPcGVuR0woY2xpcCwgcmVkLCBncmVlbiwgYmx1ZSwgMCk7CiB9CiAKZGlmZiAtLWdpdCBhL2xpYnMvc3VyZmFjZWZsaW5nZXIvTGF5ZXJCdWZmZXIuaCBiL2xpYnMvc3VyZmFjZWZsaW5nZXIvTGF5ZXJCdWZmZXIuaAppbmRleCBiMTc2NjIzLi4xYzBiZjgzIDEwMDY0NAotLS0gYS9saWJzL3N1cmZhY2VmbGluZ2VyL0xheWVyQnVmZmVyLmgKKysrIGIvbGlicy9zdXJmYWNlZmxpbmdlci9MYXllckJ1ZmZlci5oCkBAIC0yMSw2ICsyMSw3IEBACiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAKICNpbmNsdWRlICJMYXllckJhc2UuaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFuYWdlci5oIgogCiBzdHJ1Y3QgY29weWJpdF9kZXZpY2VfdDsKIApAQCAtNDUsMzEgKzQ2LDI2IEBACiAgICAgICAgIHZpcnR1YWwgdm9pZCBvblZpc2liaWxpdHlSZXNvbHZlZChjb25zdCBUcmFuc2Zvcm0mIHBsYW5lVHJhbnNmb3JtKTsKICAgICAgICAgdmlydHVhbCB2b2lkIHBvc3RCdWZmZXIoc3NpemVfdCBvZmZzZXQpOwogICAgICAgICB2aXJ0dWFsIHZvaWQgdW5yZWdpc3RlckJ1ZmZlcnMoKTsKLSAgICAgICAgdmlydHVhbCBib29sIHRyYW5zZm9ybWVkKCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBkZXN0cm95KCkgeyB9CisgICAgICAgIFN1cmZhY2VGbGluZ2VyKiBnZXRGbGluZ2VyKCkgY29uc3QgeyByZXR1cm4gbUxheWVyLm1GbGluZ2VyLmdldCgpOyB9CiAgICAgcHJvdGVjdGVkOgogICAgICAgICBMYXllckJ1ZmZlciYgbUxheWVyOwogICAgIH07CiAKIHB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3QgdWludDMyX3QgdHlwZUluZm87Ci0gICAgc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IHR5cGVJRDsKLSAgICB2aXJ0dWFsIGNoYXIgY29uc3QqIGdldFR5cGVJRCgpIGNvbnN0IHsgcmV0dXJuIHR5cGVJRDsgfQotICAgIHZpcnR1YWwgdWludDMyX3QgZ2V0VHlwZUluZm8oKSBjb25zdCB7IHJldHVybiB0eXBlSW5mbzsgfQotCiAgICAgICAgICAgICBMYXllckJ1ZmZlcihTdXJmYWNlRmxpbmdlciogZmxpbmdlciwgRGlzcGxheUlEIGRpc3BsYXksCi0gICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwPENsaWVudD4mIGNsaWVudCwgaW50MzJfdCBpKTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3A8Q2xpZW50PiYgY2xpZW50KTsKICAgICAgICAgdmlydHVhbCB+TGF5ZXJCdWZmZXIoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBvbkZpcnN0UmVmKCk7CiAgICAgdmlydHVhbCBib29sIG5lZWRzQmxlbmRpbmcoKSBjb25zdDsKKyAgICB2aXJ0dWFsIGNvbnN0IGNoYXIqIGdldFR5cGVJZCgpIGNvbnN0IHsgcmV0dXJuICJMYXllckJ1ZmZlciI7IH0KIAogICAgIHZpcnR1YWwgc3A8TGF5ZXJCYXNlQ2xpZW50OjpTdXJmYWNlPiBjcmVhdGVTdXJmYWNlKCkgY29uc3Q7CiAgICAgdmlydHVhbCBzdGF0dXNfdCBkaXRjaCgpOwogICAgIHZpcnR1YWwgdm9pZCBvbkRyYXcoY29uc3QgUmVnaW9uJiBjbGlwKSBjb25zdDsKICAgICB2aXJ0dWFsIHVpbnQzMl90IGRvVHJhbnNhY3Rpb24odWludDMyX3QgZmxhZ3MpOwogICAgIHZpcnR1YWwgdm9pZCB1bmxvY2tQYWdlRmxpcChjb25zdCBUcmFuc2Zvcm0mIHBsYW5lVHJhbnNmb3JtLCBSZWdpb24mIG91dERpcnR5UmVnaW9uKTsKLSAgICB2aXJ0dWFsIGJvb2wgdHJhbnNmb3JtZWQoKSBjb25zdDsKIAogICAgIHN0YXR1c190IHJlZ2lzdGVyQnVmZmVycyhjb25zdCBJU3VyZmFjZTo6QnVmZmVySGVhcCYgYnVmZmVycyk7CiAgICAgdm9pZCBwb3N0QnVmZmVyKHNzaXplX3Qgb2Zmc2V0KTsKQEAgLTEzMyw3ICsxMjksNiBAQAogICAgICAgICB2aXJ0dWFsIHZvaWQgb25EcmF3KGNvbnN0IFJlZ2lvbiYgY2xpcCkgY29uc3Q7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBwb3N0QnVmZmVyKHNzaXplX3Qgb2Zmc2V0KTsKICAgICAgICAgdmlydHVhbCB2b2lkIHVucmVnaXN0ZXJCdWZmZXJzKCk7Ci0gICAgICAgIHZpcnR1YWwgYm9vbCB0cmFuc2Zvcm1lZCgpIGNvbnN0OwogICAgICAgICB2aXJ0dWFsIHZvaWQgZGVzdHJveSgpIHsgfQogICAgIHByaXZhdGU6CiAgICAgICAgIHN0YXR1c190IGluaXRUZW1wQnVmZmVyKCkgY29uc3Q7CkBAIC0xNDMsOSArMTM4LDkgQEAKICAgICAgICAgc3RhdHVzX3QgICAgICAgICAgICAgICAgICAgICAgICBtU3RhdHVzOwogICAgICAgICBJU3VyZmFjZTo6QnVmZmVySGVhcCAgICAgICAgICAgIG1CdWZmZXJIZWFwOwogICAgICAgICBzaXplX3QgICAgICAgICAgICAgICAgICAgICAgICAgIG1CdWZmZXJTaXplOwotICAgICAgICBtdXRhYmxlIExheWVyQmFzZTo6VGV4dHVyZSAgICAgIG1UZXh0dXJlOworICAgICAgICBtdXRhYmxlIFRleHR1cmUgICAgICAgICAgICAgICAgIG1UZXh0dXJlOwogICAgICAgICBtdXRhYmxlIE5hdGl2ZUJ1ZmZlciAgICAgICAgICAgIG1UZW1wQnVmZmVyOwotICAgICAgICBtdXRhYmxlIGJvb2wgICAgICAgICAgICAgICAgICAgIG1Vc2VFR0xJbWFnZURpcmVjdGx5OworICAgICAgICBtdXRhYmxlIFRleHR1cmVNYW5hZ2VyICAgICAgICAgIG1UZXh0dXJlTWFuYWdlcjsKICAgICB9OwogICAgIAogICAgIGNsYXNzIE92ZXJsYXlTb3VyY2UgOiBwdWJsaWMgU291cmNlIHsKQEAgLTE5NSw3ICsxOTAsNyBAQAogICAgIHsKICAgICBwdWJsaWM6CiAgICAgICAgIFN1cmZhY2VMYXllckJ1ZmZlcihjb25zdCBzcDxTdXJmYWNlRmxpbmdlcj4mIGZsaW5nZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBTdXJmYWNlSUQgaWQsIGNvbnN0IHNwPExheWVyQnVmZmVyPiYgb3duZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3A8TGF5ZXJCdWZmZXI+JiBvd25lcik7CiAgICAgICAgIHZpcnR1YWwgflN1cmZhY2VMYXllckJ1ZmZlcigpOwogCiAgICAgICAgIHZpcnR1YWwgc3RhdHVzX3QgcmVnaXN0ZXJCdWZmZXJzKGNvbnN0IElTdXJmYWNlOjpCdWZmZXJIZWFwJiBidWZmZXJzKTsKZGlmZiAtLWdpdCBhL2xpYnMvc3VyZmFjZWZsaW5nZXIvTGF5ZXJEaW0uY3BwIGIvbGlicy9zdXJmYWNlZmxpbmdlci9MYXllckRpbS5jcHAKaW5kZXggZmQ2MWUzMC4uYTFmMzM5ZSAxMDA2NDQKLS0tIGEvbGlicy9zdXJmYWNlZmxpbmdlci9MYXllckRpbS5jcHAKKysrIGIvbGlicy9zdXJmYWNlZmxpbmdlci9MYXllckRpbS5jcHAKQEAgLTMwLDkgKzMwLDYgQEAKIG5hbWVzcGFjZSBhbmRyb2lkIHsKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1jb25zdCB1aW50MzJfdCBMYXllckRpbTo6dHlwZUluZm8gPSBMYXllckJhc2VDbGllbnQ6OnR5cGVJbmZvIHwgMHgxMDsKLWNvbnN0IGNoYXIqIGNvbnN0IExheWVyRGltOjp0eXBlSUQgPSAiTGF5ZXJEaW0iOwotCiBib29sIExheWVyRGltOjpzVXNlVGV4dHVyZTsKIEdMdWludCBMYXllckRpbTo6c1RleElkOwogRUdMSW1hZ2VLSFIgTGF5ZXJEaW06OnNJbWFnZTsKQEAgLTQyLDggKzM5LDggQEAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBMYXllckRpbTo6TGF5ZXJEaW0oU3VyZmFjZUZsaW5nZXIqIGZsaW5nZXIsIERpc3BsYXlJRCBkaXNwbGF5LAotICAgICAgICBjb25zdCBzcDxDbGllbnQ+JiBjbGllbnQsIGludDMyX3QgaSkKLSAgICA6IExheWVyQmFzZUNsaWVudChmbGluZ2VyLCBkaXNwbGF5LCBjbGllbnQsIGkpCisgICAgICAgIGNvbnN0IHNwPENsaWVudD4mIGNsaWVudCkKKyAgICA6IExheWVyQmFzZUNsaWVudChmbGluZ2VyLCBkaXNwbGF5LCBjbGllbnQpCiB7CiB9CiAKQEAgLTU0LDU0ICs1MSw2IEBACiAgICAgc1dpZHRoID0gdzsKICAgICBzSGVpZ2h0ID0gaDsKICAgICBzVXNlVGV4dHVyZSA9IGZhbHNlOwotICAgIAotI2lmIGRlZmluZWQoRElNX1dJVEhfVEVYVFVSRSkgJiYgZGVmaW5lZChFR0xfQU5EUk9JRF9pbWFnZV9uYXRpdmVfYnVmZmVyKQotCi0jd2FybmluZyAidXNpbmcgYSB0ZXh0dXJlIHRvIGltcGxlbWVudCBMYXllckRpbSIKLSAgICAKLSAgICAvKiBPbiBzb21lIGgvdyBsaWtlIG1zbTdLLCBpdCBpcyBmYXN0ZXIgdG8gdXNlIGEgdGV4dHVyZSBiZWNhdXNlIHRoZQotICAgICAqIHNvZnR3YXJlIHJlbmRlcmVyIHdpbGwgZGVmZXIgdG8gY29weWJpdCwgZm9yIHRoaXMgdG8gd29yayB3ZSBuZWVkIHRvCi0gICAgICogdXNlIGFuIEVHTEltYWdlIHRleHR1cmUgc28gY29weWJpdCBjYW4gYWN0dWFsbHkgbWFrZSB1c2Ugb2YgaXQuCi0gICAgICogVGhpcyBidXJucyBhIGZ1bGwtc2NyZWVuIHdvcnRoIG9mIGdyYXBoaWMgbWVtb3J5LgotICAgICAqLwotCi0gICAgY29uc3QgRGlzcGxheUhhcmR3YXJlJiBodyhmbGluZ2VyLT5ncmFwaGljUGxhbmUoMCkuZGlzcGxheUhhcmR3YXJlKCkpOwotICAgIHVpbnQzMl90IGZsYWdzID0gaHcuZ2V0RmxhZ3MoKTsKLQotICAgIGlmIChMSUtFTFkoZmxhZ3MgJiBEaXNwbGF5SGFyZHdhcmU6OkRJUkVDVF9URVhUVVJFKSkgewotICAgICAgICBzcDxHcmFwaGljQnVmZmVyPiBidWZmZXIgPSBuZXcgR3JhcGhpY0J1ZmZlcih3LCBoLCBQSVhFTF9GT1JNQVRfUkdCXzU2NSwKLSAgICAgICAgICAgICAgICAgR3JhcGhpY0J1ZmZlcjo6VVNBR0VfU1dfV1JJVEVfT0ZURU4gfAotICAgICAgICAgICAgICAgICBHcmFwaGljQnVmZmVyOjpVU0FHRV9IV19URVhUVVJFKTsKLSAgICAgICAgCi0gICAgICAgIGFuZHJvaWRfbmF0aXZlX2J1ZmZlcl90KiBjbGllbnRCdWYgPSBidWZmZXItPmdldE5hdGl2ZUJ1ZmZlcigpOwotCi0gICAgICAgIGdsR2VuVGV4dHVyZXMoMSwgJnNUZXhJZCk7Ci0gICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgc1RleElkKTsKLQotICAgICAgICBFR0xEaXNwbGF5IGRweSA9IGVnbEdldEN1cnJlbnREaXNwbGF5KCk7Ci0gICAgICAgIHNJbWFnZSA9IGVnbENyZWF0ZUltYWdlS0hSKGRweSwgRUdMX05PX0NPTlRFWFQsIAotICAgICAgICAgICAgICAgIEVHTF9OQVRJVkVfQlVGRkVSX0FORFJPSUQsIChFR0xDbGllbnRCdWZmZXIpY2xpZW50QnVmLCAwKTsKLSAgICAgICAgaWYgKHNJbWFnZSA9PSBFR0xfTk9fSU1BR0VfS0hSKSB7Ci0gICAgICAgICAgICBMT0dFKCJlZ2xDcmVhdGVJbWFnZUtIUigpIGZhaWxlZC4gZXJyPTB4JTR4IiwgZWdsR2V0RXJyb3IoKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBnbEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTKEdMX1RFWFRVUkVfMkQsIChHTGVnbEltYWdlT0VTKXNJbWFnZSk7Ci0gICAgICAgIEdMaW50IGVycm9yID0gZ2xHZXRFcnJvcigpOwotICAgICAgICBpZiAoZXJyb3IgIT0gR0xfTk9fRVJST1IpIHsKLSAgICAgICAgICAgIGVnbERlc3Ryb3lJbWFnZUtIUihkcHksIHNJbWFnZSk7Ci0gICAgICAgICAgICBMT0dFKCJnbEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTKCkgZmFpbGVkLiBlcnI9MHglNHgiLCBlcnJvcik7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBpbml0aWFsaXplIHRoZSB0ZXh0dXJlIHdpdGggemVyb3MKLSAgICAgICAgR0dMU3VyZmFjZSB0OwotICAgICAgICBidWZmZXItPmxvY2soJnQsIEdSQUxMT0NfVVNBR0VfU1dfV1JJVEVfT0ZURU4pOwotICAgICAgICBtZW1zZXQodC5kYXRhLCAwLCB0LnN0cmlkZSAqIHQuaGVpZ2h0ICogMik7Ci0gICAgICAgIGJ1ZmZlci0+dW5sb2NrKCk7Ci0gICAgICAgIHNVc2VUZXh0dXJlID0gdHJ1ZTsKLSAgICB9Ci0jZW5kaWYKIH0KIAogTGF5ZXJEaW06On5MYXllckRpbSgpCkBAIC0xMTUsMzMgKzY0LDE5IEBACiAgICAgUmVnaW9uOjpjb25zdF9pdGVyYXRvciBjb25zdCBlbmQgPSBjbGlwLmVuZCgpOwogICAgIGlmIChzLmFscGhhPjAgJiYgKGl0ICE9IGVuZCkpIHsKICAgICAgICAgY29uc3QgRGlzcGxheUhhcmR3YXJlJiBodyhncmFwaGljUGxhbmUoMCkuZGlzcGxheUhhcmR3YXJlKCkpOwotICAgICAgICBjb25zdCBHR0xmaXhlZCBhbHBoYSA9IChzLmFscGhhIDw8IDE2KS8yNTU7CisgICAgICAgIGNvbnN0IEdMZmxvYXQgYWxwaGEgPSBzLmFscGhhLzI1NS4wZjsKICAgICAgICAgY29uc3QgdWludDMyX3QgZmJIZWlnaHQgPSBody5nZXRIZWlnaHQoKTsKICAgICAgICAgZ2xEaXNhYmxlKEdMX0RJVEhFUik7CiAgICAgICAgIGdsRW5hYmxlKEdMX0JMRU5EKTsKICAgICAgICAgZ2xCbGVuZEZ1bmMoR0xfT05FLCBHTF9PTkVfTUlOVVNfU1JDX0FMUEhBKTsKLSAgICAgICAgZ2xDb2xvcjR4KDAsIDAsIDAsIGFscGhhKTsKLSAgICAgICAgCi0jaWYgZGVmaW5lZChESU1fV0lUSF9URVhUVVJFKSAmJiBkZWZpbmVkKEVHTF9BTkRST0lEX2ltYWdlX25hdGl2ZV9idWZmZXIpCi0gICAgICAgIGlmIChzVXNlVGV4dHVyZSkgewotICAgICAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCBzVGV4SWQpOwotICAgICAgICAgICAgZ2xFbmFibGUoR0xfVEVYVFVSRV8yRCk7Ci0gICAgICAgICAgICBnbFRleEVudngoR0xfVEVYVFVSRV9FTlYsIEdMX1RFWFRVUkVfRU5WX01PREUsIEdMX1JFUExBQ0UpOwotICAgICAgICAgICAgY29uc3QgR0xzaG9ydCB0ZXhDb29yZHNbNF1bMl0gPSB7Ci0gICAgICAgICAgICAgICAgICAgIHsgMCwgIDAgfSwKLSAgICAgICAgICAgICAgICAgICAgeyAwLCAgMSB9LAotICAgICAgICAgICAgICAgICAgICB7IDEsICAxIH0sCi0gICAgICAgICAgICAgICAgICAgIHsgMSwgIDAgfQotICAgICAgICAgICAgfTsKLSAgICAgICAgICAgIGdsTWF0cml4TW9kZShHTF9URVhUVVJFKTsKLSAgICAgICAgICAgIGdsTG9hZElkZW50aXR5KCk7Ci0gICAgICAgICAgICBnbEVuYWJsZUNsaWVudFN0YXRlKEdMX1RFWFRVUkVfQ09PUkRfQVJSQVkpOwotICAgICAgICAgICAgZ2xUZXhDb29yZFBvaW50ZXIoMiwgR0xfU0hPUlQsIDAsIHRleENvb3Jkcyk7Ci0gICAgICAgIH0gZWxzZQotI2VuZGlmCi0gICAgICAgIHsKLSAgICAgICAgICAgIGdsRGlzYWJsZShHTF9URVhUVVJFXzJEKTsKKyAgICAgICAgZ2xDb2xvcjRmKDAsIDAsIDAsIGFscGhhKTsKKworI2lmIGRlZmluZWQoR0xfT0VTX3RleHR1cmVfZXh0ZXJuYWwpCisgICAgICAgIGlmIChHTEV4dGVuc2lvbnM6OmdldEluc3RhbmNlKCkuaGF2ZVRleHR1cmVFeHRlcm5hbCgpKSB7CisgICAgICAgICAgICBnbERpc2FibGUoR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMpOwogICAgICAgICB9CisjZW5kaWYKKyAgICAgICAgZ2xEaXNhYmxlKEdMX1RFWFRVUkVfMkQpOwogCiAgICAgICAgIEdMc2hvcnQgdyA9IHNXaWR0aDsKICAgICAgICAgR0xzaG9ydCBoID0gc0hlaWdodDsKZGlmZiAtLWdpdCBhL2xpYnMvc3VyZmFjZWZsaW5nZXIvTGF5ZXJEaW0uaCBiL2xpYnMvc3VyZmFjZWZsaW5nZXIvTGF5ZXJEaW0uaAppbmRleCBkNDY3MmExLi5mMDMyMzE0IDEwMDY0NAotLS0gYS9saWJzL3N1cmZhY2VmbGluZ2VyL0xheWVyRGltLmgKKysrIGIvbGlicy9zdXJmYWNlZmxpbmdlci9MYXllckRpbS5oCkBAIC0zNywxOCArMzcsMTQgQEAKICAgICBzdGF0aWMgaW50MzJfdCBzV2lkdGg7CiAgICAgc3RhdGljIGludDMyX3Qgc0hlaWdodDsKIHB1YmxpYzogICAgCi0gICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IHR5cGVJbmZvOwotICAgIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCB0eXBlSUQ7Ci0gICAgdmlydHVhbCBjaGFyIGNvbnN0KiBnZXRUeXBlSUQoKSBjb25zdCB7IHJldHVybiB0eXBlSUQ7IH0KLSAgICB2aXJ0dWFsIHVpbnQzMl90IGdldFR5cGVJbmZvKCkgY29uc3QgeyByZXR1cm4gdHlwZUluZm87IH0KLSAgICAKICAgICAgICAgICAgICAgICBMYXllckRpbShTdXJmYWNlRmxpbmdlciogZmxpbmdlciwgRGlzcGxheUlEIGRpc3BsYXksCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcDxDbGllbnQ+JiBjbGllbnQsIGludDMyX3QgaSk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcDxDbGllbnQ+JiBjbGllbnQpOwogICAgICAgICB2aXJ0dWFsIH5MYXllckRpbSgpOwogCiAgICAgdmlydHVhbCB2b2lkIG9uRHJhdyhjb25zdCBSZWdpb24mIGNsaXApIGNvbnN0OwogICAgIHZpcnR1YWwgYm9vbCBuZWVkc0JsZW5kaW5nKCkgY29uc3QgIHsgcmV0dXJuIHRydWU7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNTZWN1cmUoKSBjb25zdCAgICAgICB7IHJldHVybiBmYWxzZTsgfQorICAgIHZpcnR1YWwgY29uc3QgY2hhciogZ2V0VHlwZUlkKCkgY29uc3QgeyByZXR1cm4gIkxheWVyRGltIjsgfQogCiAgICAgc3RhdGljIHZvaWQgaW5pdERpbW1lcihTdXJmYWNlRmxpbmdlciogZmxpbmdlciwgdWludDMyX3QgdywgdWludDMyX3QgaCk7CiB9OwpkaWZmIC0tZ2l0IGEvbGlicy9zdXJmYWNlZmxpbmdlci9NZXNzYWdlUXVldWUuY3BwIGIvbGlicy9zdXJmYWNlZmxpbmdlci9NZXNzYWdlUXVldWUuY3BwCmluZGV4IGI0M2Q4MDEuLmQ2NjhlODggMTAwNjQ0Ci0tLSBhL2xpYnMvc3VyZmFjZWZsaW5nZXIvTWVzc2FnZVF1ZXVlLmNwcAorKysgYi9saWJzL3N1cmZhY2VmbGluZ2VyL01lc3NhZ2VRdWV1ZS5jcHAKQEAgLTYwLDkgKzYwLDkgQEAKIHsKIH0KIAotTWVzc2FnZUxpc3Q6OnZhbHVlX3R5cGUgTWVzc2FnZVF1ZXVlOjp3YWl0TWVzc2FnZShuc2Vjc190IHRpbWVvdXQpCitzcDxNZXNzYWdlQmFzZT4gTWVzc2FnZVF1ZXVlOjp3YWl0TWVzc2FnZShuc2Vjc190IHRpbWVvdXQpCiB7Ci0gICAgTWVzc2FnZUxpc3Q6OnZhbHVlX3R5cGUgcmVzdWx0OworICAgIHNwPE1lc3NhZ2VCYXNlPiByZXN1bHQ7CiAKICAgICBib29sIGFnYWluOwogICAgIGRvIHsKQEAgLTEzMiw2ICsxMzIsNyBAQAogICAgICAgICBpZiAoYWdhaW4pIHsKICAgICAgICAgICAgIC8vIHRoZSBtZXNzYWdlIGhhcyBiZWVuIHByb2Nlc3NlZC4gcmVsZWFzZSBvdXIgcmVmZXJlbmNlIHRvIGl0CiAgICAgICAgICAgICAvLyB3aXRob3V0IGhvbGRpbmcgdGhlIGxvY2suCisgICAgICAgICAgICByZXN1bHQtPm5vdGlmeSgpOwogICAgICAgICAgICAgcmVzdWx0ID0gMDsKICAgICAgICAgfQogICAgICAgICAKQEAgLTE0MSw3ICsxNDIsNyBAQAogfQogCiBzdGF0dXNfdCBNZXNzYWdlUXVldWU6OnBvc3RNZXNzYWdlKAotICAgICAgICBjb25zdCBNZXNzYWdlTGlzdDo6dmFsdWVfdHlwZSYgbWVzc2FnZSwgbnNlY3NfdCByZWxUaW1lLCB1aW50MzJfdCBmbGFncykKKyAgICAgICAgY29uc3Qgc3A8TWVzc2FnZUJhc2U+JiBtZXNzYWdlLCBuc2Vjc190IHJlbFRpbWUsIHVpbnQzMl90IGZsYWdzKQogewogICAgIHJldHVybiBxdWV1ZU1lc3NhZ2UobWVzc2FnZSwgcmVsVGltZSwgZmxhZ3MpOwogfQpAQCAtMTU0LDcgKzE1NSw3IEBACiB9CiAKIHN0YXR1c190IE1lc3NhZ2VRdWV1ZTo6cXVldWVNZXNzYWdlKAotICAgICAgICBjb25zdCBNZXNzYWdlTGlzdDo6dmFsdWVfdHlwZSYgbWVzc2FnZSwgbnNlY3NfdCByZWxUaW1lLCB1aW50MzJfdCBmbGFncykKKyAgICAgICAgY29uc3Qgc3A8TWVzc2FnZUJhc2U+JiBtZXNzYWdlLCBuc2Vjc190IHJlbFRpbWUsIHVpbnQzMl90IGZsYWdzKQogewogICAgIE11dGV4OjpBdXRvbG9jayBfbChtTG9jayk7CiAgICAgbWVzc2FnZS0+d2hlbiA9IHN5c3RlbVRpbWUoKSArIHJlbFRpbWU7CkBAIC0xNjcsMTMgKzE2OCwxMyBAQAogICAgIHJldHVybiBOT19FUlJPUjsKIH0KIAotdm9pZCBNZXNzYWdlUXVldWU6OmR1bXAoY29uc3QgTWVzc2FnZUxpc3Q6OnZhbHVlX3R5cGUmIG1lc3NhZ2UpCit2b2lkIE1lc3NhZ2VRdWV1ZTo6ZHVtcChjb25zdCBzcDxNZXNzYWdlQmFzZT4mIG1lc3NhZ2UpCiB7CiAgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1Mb2NrKTsKICAgICBkdW1wTG9ja2VkKG1lc3NhZ2UpOwogfQogCi12b2lkIE1lc3NhZ2VRdWV1ZTo6ZHVtcExvY2tlZChjb25zdCBNZXNzYWdlTGlzdDo6dmFsdWVfdHlwZSYgbWVzc2FnZSkKK3ZvaWQgTWVzc2FnZVF1ZXVlOjpkdW1wTG9ja2VkKGNvbnN0IHNwPE1lc3NhZ2VCYXNlPiYgbWVzc2FnZSkKIHsKICAgICBMSVNUOjpjb25zdF9pdGVyYXRvciBjdXIobU1lc3NhZ2VzLmJlZ2luKCkpOwogICAgIExJU1Q6OmNvbnN0X2l0ZXJhdG9yIGVuZChtTWVzc2FnZXMuZW5kKCkpOwpkaWZmIC0tZ2l0IGEvbGlicy9zdXJmYWNlZmxpbmdlci9NZXNzYWdlUXVldWUuaCBiL2xpYnMvc3VyZmFjZWZsaW5nZXIvTWVzc2FnZVF1ZXVlLmgKaW5kZXggZGM4MTM4ZC4uODkwZjgwOSAxMDA2NDQKLS0tIGEvbGlicy9zdXJmYWNlZmxpbmdlci9NZXNzYWdlUXVldWUuaAorKysgYi9saWJzL3N1cmZhY2VmbGluZ2VyL01lc3NhZ2VRdWV1ZS5oCkBAIC0yNSw2ICsyNSw3IEBACiAjaW5jbHVkZSA8dXRpbHMvVGltZXJzLmg+CiAjaW5jbHVkZSA8dXRpbHMvTGlzdC5oPgogCisjaW5jbHVkZSAiQmFycmllci5oIgogCiBuYW1lc3BhY2UgYW5kcm9pZCB7CiAKQEAgLTM3LDcgKzM4LDYgQEAKICAgICBMaXN0PCBzcDxNZXNzYWdlQmFzZT4gPiBtTGlzdDsKICAgICB0eXBlZGVmIExpc3Q8IHNwPE1lc3NhZ2VCYXNlPiA+IExJU1Q7CiBwdWJsaWM6Ci0gICAgdHlwZWRlZiBzcDxNZXNzYWdlQmFzZT4gdmFsdWVfdHlwZTsKICAgICBpbmxpbmUgTElTVDo6aXRlcmF0b3IgYmVnaW4oKSAgICAgICAgICAgICAgICB7IHJldHVybiBtTGlzdC5iZWdpbigpOyB9CiAgICAgaW5saW5lIExJU1Q6OmNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgICAgeyByZXR1cm4gbUxpc3QuYmVnaW4oKTsgfQogICAgIGlubGluZSBMSVNUOjppdGVyYXRvciBlbmQoKSAgICAgICAgICAgICAgICAgIHsgcmV0dXJuIG1MaXN0LmVuZCgpOyB9CkBAIC02MywxMSArNjMsMTkgQEAKICAgICAKICAgICAvLyByZXR1cm4gdHJ1ZSBpZiBtZXNzYWdlIGhhcyBhIGhhbmRsZXIKICAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlcigpIHsgcmV0dXJuIGZhbHNlOyB9CisKKyAgICAvLyB3YWl0cyBmb3IgdGhlIGhhbmRsZXIgdG8gYmUgcHJvY2Vzc2VkCisgICAgdm9pZCB3YWl0KCkgY29uc3QgeyBiYXJyaWVyLndhaXQoKTsgfQogICAgIAorICAgIC8vIHJlbGVhc2VzIGFsbCB3YWl0ZXJzLiB0aGlzIGlzIGRvbmUgYXV0b21hdGljYWxseSBpZgorICAgIC8vIGhhbmRsZXIgcmV0dXJucyB0cnVlCisgICAgdm9pZCBub3RpZnkoKSBjb25zdCB7IGJhcnJpZXIub3BlbigpOyB9CisKIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIH5NZXNzYWdlQmFzZSgpIHsgfQogCiBwcml2YXRlOgorICAgIG11dGFibGUgQmFycmllciBiYXJyaWVyOwogICAgIGZyaWVuZCBjbGFzcyBMaWdodFJlZkJhc2U8TWVzc2FnZUJhc2U+OwogfTsKIApAQCAtODIsNDIgKzkwLDMzIEBACiAgICAgdHlwZWRlZiBMaXN0PCBzcDxNZXNzYWdlQmFzZT4gPiBMSVNUOwogcHVibGljOgogCi0gICAgLy8gdGhpcyBpcyBhIHdvcmstYXJvdW5kIHRoZSBtdWx0aWNoYXIgY29uc3RhbnQgd2FybmluZy4gQSBtYWNybyB3b3VsZAotICAgIC8vIHdvcmsgdG9vLCBidXQgd291bGQgcG9sbHV0ZSB0aGUgbmFtZXNwYWNlLgotICAgIHRlbXBsYXRlIDxpbnQgYSwgaW50IGIsIGludCBjLCBpbnQgZD4KLSAgICBzdHJ1Y3QgV0hBVCB7Ci0gICAgICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBWYWx1ZSA9IAotICAgICAgICAgICAgKHVpbnQzMl90KGEmMHhmZik8PDI0KXwodWludDMyX3QoYiYweGZmKTw8MTYpfAotICAgICAgICAgICAgKHVpbnQzMl90KGMmMHhmZik8PDgpfHVpbnQzMl90KGQmMHhmZik7Ci0gICAgfTsKLSAgICAKICAgICBNZXNzYWdlUXVldWUoKTsKICAgICB+TWVzc2FnZVF1ZXVlKCk7CiAKICAgICAvLyBwcmUtZGVmaW5lZCBtZXNzYWdlcwogICAgIGVudW0gewotICAgICAgICBJTlZBTElEQVRFID0gV0hBVDwnXycsJ3AnLCdkJywndCc+OjpWYWx1ZQorICAgICAgICBJTlZBTElEQVRFID0gJ191cGQnCiAgICAgfTsKIAotICAgIE1lc3NhZ2VMaXN0Ojp2YWx1ZV90eXBlIHdhaXRNZXNzYWdlKG5zZWNzX3QgdGltZW91dCA9IC0xKTsKKyAgICBzcDxNZXNzYWdlQmFzZT4gd2FpdE1lc3NhZ2UobnNlY3NfdCB0aW1lb3V0ID0gLTEpOwogICAgIAotICAgIHN0YXR1c190IHBvc3RNZXNzYWdlKGNvbnN0IE1lc3NhZ2VMaXN0Ojp2YWx1ZV90eXBlJiBtZXNzYWdlLCAKKyAgICBzdGF0dXNfdCBwb3N0TWVzc2FnZShjb25zdCBzcDxNZXNzYWdlQmFzZT4mIG1lc3NhZ2UsCiAgICAgICAgICAgICBuc2Vjc190IHJlbHRpbWU9MCwgdWludDMyX3QgZmxhZ3MgPSAwKTsKLSAgICAgICAgCisKICAgICBzdGF0dXNfdCBpbnZhbGlkYXRlKCk7CiAgICAgCi0gICAgdm9pZCBkdW1wKGNvbnN0IE1lc3NhZ2VMaXN0Ojp2YWx1ZV90eXBlJiBtZXNzYWdlKTsKKyAgICB2b2lkIGR1bXAoY29uc3Qgc3A8TWVzc2FnZUJhc2U+JiBtZXNzYWdlKTsKIAogcHJpdmF0ZToKLSAgICBzdGF0dXNfdCBxdWV1ZU1lc3NhZ2UoY29uc3QgTWVzc2FnZUxpc3Q6OnZhbHVlX3R5cGUmIG1lc3NhZ2UsCisgICAgc3RhdHVzX3QgcXVldWVNZXNzYWdlKGNvbnN0IHNwPE1lc3NhZ2VCYXNlPiYgbWVzc2FnZSwKICAgICAgICAgICAgIG5zZWNzX3QgcmVsdGltZSwgdWludDMyX3QgZmxhZ3MpOwotICAgIHZvaWQgZHVtcExvY2tlZChjb25zdCBNZXNzYWdlTGlzdDo6dmFsdWVfdHlwZSYgbWVzc2FnZSk7CisgICAgdm9pZCBkdW1wTG9ja2VkKGNvbnN0IHNwPE1lc3NhZ2VCYXNlPiYgbWVzc2FnZSk7CiAgICAgCiAgICAgTXV0ZXggICAgICAgICAgIG1Mb2NrOwogICAgIENvbmRpdGlvbiAgICAgICBtQ29uZGl0aW9uOwogICAgIE1lc3NhZ2VMaXN0ICAgICBtTWVzc2FnZXM7CiAgICAgYm9vbCAgICAgICAgICAgIG1JbnZhbGlkYXRlOwotICAgIE1lc3NhZ2VMaXN0Ojp2YWx1ZV90eXBlIG1JbnZhbGlkYXRlTWVzc2FnZTsKKyAgICBzcDxNZXNzYWdlQmFzZT4gbUludmFsaWRhdGVNZXNzYWdlOwogfTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9saWJzL3N1cmZhY2VmbGluZ2VyL1N1cmZhY2VGbGluZ2VyLmNwcCBiL2xpYnMvc3VyZmFjZWZsaW5nZXIvU3VyZmFjZUZsaW5nZXIuY3BwCmluZGV4IDA3MjJmZGEuLjY4ZThmMTkgMTAwNjQ0Ci0tLSBhL2xpYnMvc3VyZmFjZWZsaW5nZXIvU3VyZmFjZUZsaW5nZXIuY3BwCisrKyBiL2xpYnMvc3VyZmFjZWZsaW5nZXIvU3VyZmFjZUZsaW5nZXIuY3BwCkBAIC00NCw2ICs0NCw3IEBACiAjaW5jbHVkZSA8R0xFUy9nbC5oPgogCiAjaW5jbHVkZSAiY2x6LmgiCisjaW5jbHVkZSAiR0xFeHRlbnNpb25zLmgiCiAjaW5jbHVkZSAiTGF5ZXIuaCIKICNpbmNsdWRlICJMYXllckJsdXIuaCIKICNpbmNsdWRlICJMYXllckJ1ZmZlci5oIgpAQCAtMjA2LDggKzIwNyw4IEBACiAgICAgcHJvcGVydHlfZ2V0KCJkZWJ1Zy5zZi5zaG93YmFja2dyb3VuZCIsIHZhbHVlLCAiMCIpOwogICAgIG1EZWJ1Z0JhY2tncm91bmQgPSBhdG9pKHZhbHVlKTsKIAotICAgIExPR0lfSUYobURlYnVnUmVnaW9uLCAgICAgICAgICAgInNob3d1cGRhdGVzIGVuYWJsZWQiKTsKLSAgICBMT0dJX0lGKG1EZWJ1Z0JhY2tncm91bmQsICAgICAgICJzaG93YmFja2dyb3VuZCBlbmFibGVkIik7CisgICAgTE9HSV9JRihtRGVidWdSZWdpb24sICAgICAgICJzaG93dXBkYXRlcyBlbmFibGVkIik7CisgICAgTE9HSV9JRihtRGVidWdCYWNrZ3JvdW5kLCAgICJzaG93YmFja2dyb3VuZCBlbmFibGVkIik7CiB9CiAKIFN1cmZhY2VGbGluZ2VyOjp+U3VyZmFjZUZsaW5nZXIoKQpAQCAtMjI1LDU2ICsyMjYsMjkgQEAKICAgICByZXR1cm4gbVNlcnZlckhlYXA7CiB9CiAKLXNwPElTdXJmYWNlRmxpbmdlckNsaWVudD4gU3VyZmFjZUZsaW5nZXI6OmNyZWF0ZUNvbm5lY3Rpb24oKQorc3A8SVN1cmZhY2VDb21wb3NlckNsaWVudD4gU3VyZmFjZUZsaW5nZXI6OmNyZWF0ZUNvbm5lY3Rpb24oKQogewotICAgIE11dGV4OjpBdXRvbG9jayBfbChtU3RhdGVMb2NrKTsKLSAgICB1aW50MzJfdCB0b2tlbiA9IG1Ub2tlbnMuYWNxdWlyZSgpOwotCi0gICAgc3A8Q2xpZW50PiBjbGllbnQgPSBuZXcgQ2xpZW50KHRva2VuLCB0aGlzKTsKLSAgICBpZiAoY2xpZW50LT5jdHJsYmxrID09IDApIHsKLSAgICAgICAgbVRva2Vucy5yZWxlYXNlKHRva2VuKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgc3A8SVN1cmZhY2VDb21wb3NlckNsaWVudD4gYmNsaWVudDsKKyAgICBzcDxDbGllbnQ+IGNsaWVudChuZXcgQ2xpZW50KHRoaXMpKTsKKyAgICBzdGF0dXNfdCBlcnIgPSBjbGllbnQtPmluaXRDaGVjaygpOworICAgIGlmIChlcnIgPT0gTk9fRVJST1IpIHsKKyAgICAgICAgYmNsaWVudCA9IGNsaWVudDsKICAgICB9Ci0gICAgc3RhdHVzX3QgZXJyID0gbUNsaWVudHNNYXAuYWRkKHRva2VuLCBjbGllbnQpOwotICAgIGlmIChlcnIgPCAwKSB7Ci0gICAgICAgIG1Ub2tlbnMucmVsZWFzZSh0b2tlbik7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBzcDxCQ2xpZW50PiBiY2xpZW50ID0KLSAgICAgICAgbmV3IEJDbGllbnQodGhpcywgdG9rZW4sIGNsaWVudC0+Z2V0Q29udHJvbEJsb2NrTWVtb3J5KCkpOwogICAgIHJldHVybiBiY2xpZW50OwogfQogCi12b2lkIFN1cmZhY2VGbGluZ2VyOjpkZXN0cm95Q29ubmVjdGlvbihDbGllbnRJRCBjaWQpCitzcDxJU3VyZmFjZUNvbXBvc2VyQ2xpZW50PiBTdXJmYWNlRmxpbmdlcjo6Y3JlYXRlQ2xpZW50Q29ubmVjdGlvbigpCiB7Ci0gICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1TdGF0ZUxvY2spOwotICAgIHNwPENsaWVudD4gY2xpZW50ID0gbUNsaWVudHNNYXAudmFsdWVGb3IoY2lkKTsKLSAgICBpZiAoY2xpZW50ICE9IDApIHsKLSAgICAgICAgLy8gZnJlZSBhbGwgdGhlIGxheWVycyB0aGlzIGNsaWVudCBvd25zCi0gICAgICAgIFZlY3Rvcjwgd3A8TGF5ZXJCYXNlQ2xpZW50PiA+IGxheWVycyhjbGllbnQtPmdldExheWVycygpKTsKLSAgICAgICAgY29uc3Qgc2l6ZV90IGNvdW50ID0gbGF5ZXJzLnNpemUoKTsKLSAgICAgICAgZm9yIChzaXplX3QgaT0wIDsgaTxjb3VudCA7IGkrKykgewotICAgICAgICAgICAgc3A8TGF5ZXJCYXNlQ2xpZW50PiBsYXllcihsYXllcnNbaV0ucHJvbW90ZSgpKTsKLSAgICAgICAgICAgIGlmIChsYXllciAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgcHVyZ2F0b3JpemVMYXllcl9sKGxheWVyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIHRoZSByZXNvdXJjZXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY2xpZW50IHdpbGwgYmUgZnJlZWQKLSAgICAgICAgLy8gZHVyaW5nIHRoZSBuZXh0IHRyYW5zYWN0aW9uLCBhZnRlciB0aGVzZSBzdXJmYWNlcyBoYXZlIGJlZW4KLSAgICAgICAgLy8gcHJvcGVybHkgcmVtb3ZlZCBmcm9tIHRoZSBzY3JlZW4KLQotICAgICAgICAvLyByZW1vdmUgdGhpcyBjbGllbnQgZnJvbSBvdXIgQ2xpZW50SUQtPkNsaWVudCBtYXBwaW5nLgotICAgICAgICBtQ2xpZW50c01hcC5yZW1vdmVJdGVtKGNpZCk7Ci0KLSAgICAgICAgLy8gYW5kIGFkZCBpdCB0byB0aGUgbGlzdCBvZiBkaXNjb25uZWN0ZWQgY2xpZW50cwotICAgICAgICBtRGlzY29ubmVjdGVkQ2xpZW50cy5hZGQoY2xpZW50KTsKLQotICAgICAgICAvLyByZXF1ZXN0IGEgdHJhbnNhY3Rpb24KLSAgICAgICAgc2V0VHJhbnNhY3Rpb25GbGFncyhlVHJhbnNhY3Rpb25OZWVkZWQpOworICAgIHNwPElTdXJmYWNlQ29tcG9zZXJDbGllbnQ+IGJjbGllbnQ7CisgICAgc3A8VXNlckNsaWVudD4gY2xpZW50KG5ldyBVc2VyQ2xpZW50KHRoaXMpKTsKKyAgICBzdGF0dXNfdCBlcnIgPSBjbGllbnQtPmluaXRDaGVjaygpOworICAgIGlmIChlcnIgPT0gTk9fRVJST1IpIHsKKyAgICAgICAgYmNsaWVudCA9IGNsaWVudDsKICAgICB9CisgICAgcmV0dXJuIGJjbGllbnQ7CiB9CiAKKwogY29uc3QgR3JhcGhpY1BsYW5lJiBTdXJmYWNlRmxpbmdlcjo6Z3JhcGhpY1BsYW5lKGludCBkcHkpIGNvbnN0CiB7CiAgICAgTE9HRV9JRih1aW50MzJfdChkcHkpID49IERJU1BMQVlfQ09VTlQsICJJbnZhbGlkIERpc3BsYXlJRCAlZCIsIGRweSk7CkBAIC0zNTcsMTYgKzMzMSw4IEBACiAgICAgZGNibGstPnlkcGkgICAgICAgICA9IGh3LmdldERwaVkoKTsKICAgICBkY2Jsay0+ZnBzICAgICAgICAgID0gaHcuZ2V0UmVmcmVzaFJhdGUoKTsKICAgICBkY2Jsay0+ZGVuc2l0eSAgICAgID0gaHcuZ2V0RGVuc2l0eSgpOwotICAgIGFzbSB2b2xhdGlsZSAoIiI6OjoibWVtb3J5Iik7CiAKICAgICAvLyBJbml0aWFsaXplIE9wZW5HTHxFUwotICAgIGdsQWN0aXZlVGV4dHVyZShHTF9URVhUVVJFMCk7Ci0gICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCAwKTsKLSAgICBnbFRleFBhcmFtZXRlcngoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOwotICAgIGdsVGV4UGFyYW1ldGVyeChHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJ4KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgZ2xUZXhQYXJhbWV0ZXJ4KEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7Ci0gICAgZ2xUZXhFbnZ4KEdMX1RFWFRVUkVfRU5WLCBHTF9URVhUVVJFX0VOVl9NT0RFLCBHTF9SRVBMQUNFKTsKICAgICBnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19BTElHTk1FTlQsIDQpOwogICAgIGdsUGl4ZWxTdG9yZWkoR0xfUEFDS19BTElHTk1FTlQsIDQpOyAKICAgICBnbEVuYWJsZUNsaWVudFN0YXRlKEdMX1ZFUlRFWF9BUlJBWSk7CkBAIC00MjcsNyArMzkzLDcgQEAKICAgICAgICAgICAgIHRpbWVvdXQgPSB3YWl0VGltZT4wID8gd2FpdFRpbWUgOiAwOwogICAgICAgICB9CiAKLSAgICAgICAgTWVzc2FnZUxpc3Q6OnZhbHVlX3R5cGUgbXNnID0gbUV2ZW50UXVldWUud2FpdE1lc3NhZ2UodGltZW91dCk7CisgICAgICAgIHNwPE1lc3NhZ2VCYXNlPiBtc2cgPSBtRXZlbnRRdWV1ZS53YWl0TWVzc2FnZSh0aW1lb3V0KTsKIAogICAgICAgICAvLyBzZWUgaWYgd2UgdGltZWQgb3V0CiAgICAgICAgIGlmIChpc0Zyb3plbigpKSB7CkBAIC00NjIsOSArNDI4LDIwIEBACiAgICAgY29uc3RfY2FzdDxTdXJmYWNlRmxpbmdlcio+KHRoaXMpLT5zaWduYWxFdmVudCgpOwogfQogCi12b2lkIFN1cmZhY2VGbGluZ2VyOjpzaWduYWxEZWxheWVkRXZlbnQobnNlY3NfdCBkZWxheSkKK3N0YXR1c190IFN1cmZhY2VGbGluZ2VyOjpwb3N0TWVzc2FnZUFzeW5jKGNvbnN0IHNwPE1lc3NhZ2VCYXNlPiYgbXNnLAorICAgICAgICBuc2Vjc190IHJlbHRpbWUsIHVpbnQzMl90IGZsYWdzKQogewotICAgIG1FdmVudFF1ZXVlLnBvc3RNZXNzYWdlKCBuZXcgTWVzc2FnZUJhc2UoTWVzc2FnZVF1ZXVlOjpJTlZBTElEQVRFKSwgZGVsYXkpOworICAgIHJldHVybiBtRXZlbnRRdWV1ZS5wb3N0TWVzc2FnZShtc2csIHJlbHRpbWUsIGZsYWdzKTsKK30KKworc3RhdHVzX3QgU3VyZmFjZUZsaW5nZXI6OnBvc3RNZXNzYWdlU3luYyhjb25zdCBzcDxNZXNzYWdlQmFzZT4mIG1zZywKKyAgICAgICAgbnNlY3NfdCByZWx0aW1lLCB1aW50MzJfdCBmbGFncykKK3sKKyAgICBzdGF0dXNfdCByZXMgPSBtRXZlbnRRdWV1ZS5wb3N0TWVzc2FnZShtc2csIHJlbHRpbWUsIGZsYWdzKTsKKyAgICBpZiAocmVzID09IE5PX0VSUk9SKSB7CisgICAgICAgIG1zZy0+d2FpdCgpOworICAgIH0KKyAgICByZXR1cm4gcmVzOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC02NTUsMTAgKzYzMiw2IEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9Ci0KLSAgICAgICAgLy8gZ2V0IHJpZCBvZiBhbGwgcmVzb3VyY2VzIHdlIGRvbid0IG5lZWQgYW55bW9yZQotICAgICAgICAvLyAobGF5ZXJzIGFuZCBjbGllbnRzKQotICAgICAgICBmcmVlX3Jlc291cmNlc19sKCk7CiAgICAgfQogCiAgICAgY29tbWl0VHJhbnNhY3Rpb24oKTsKQEAgLTgwNSw3ICs3NzgsOCBAQAogdm9pZCBTdXJmYWNlRmxpbmdlcjo6aGFuZGxlUGFnZUZsaXAoKQogewogICAgIGJvb2wgdmlzaWJsZVJlZ2lvbnMgPSBtVmlzaWJsZVJlZ2lvbnNEaXJ0eTsKLSAgICBMYXllclZlY3RvciYgY3VycmVudExheWVycyA9IGNvbnN0X2Nhc3Q8TGF5ZXJWZWN0b3ImPihtRHJhd2luZ1N0YXRlLmxheWVyc1NvcnRlZEJ5Wik7CisgICAgTGF5ZXJWZWN0b3ImIGN1cnJlbnRMYXllcnMgPSBjb25zdF9jYXN0PExheWVyVmVjdG9yJj4oCisgICAgICAgICAgICBtRHJhd2luZ1N0YXRlLmxheWVyc1NvcnRlZEJ5Wik7CiAgICAgdmlzaWJsZVJlZ2lvbnMgfD0gbG9ja1BhZ2VGbGlwKGN1cnJlbnRMYXllcnMpOwogCiAgICAgICAgIGNvbnN0IERpc3BsYXlIYXJkd2FyZSYgaHcgPSBncmFwaGljUGxhbmUoMCkuZGlzcGxheUhhcmR3YXJlKCk7CkBAIC04MjcsNyArODAxLDcgQEAKICAgICBzaXplX3QgY291bnQgPSBjdXJyZW50TGF5ZXJzLnNpemUoKTsKICAgICBzcDxMYXllckJhc2U+IGNvbnN0KiBsYXllcnMgPSBjdXJyZW50TGF5ZXJzLmFycmF5KCk7CiAgICAgZm9yIChzaXplX3QgaT0wIDsgaTxjb3VudCA7IGkrKykgewotICAgICAgICBjb25zdCBzcDxMYXllckJhc2U+JiBsYXllciA9IGxheWVyc1tpXTsKKyAgICAgICAgY29uc3Qgc3A8TGF5ZXJCYXNlPiYgbGF5ZXIobGF5ZXJzW2ldKTsKICAgICAgICAgbGF5ZXItPmxvY2tQYWdlRmxpcChyZWNvbXB1dGVWaXNpYmxlUmVnaW9ucyk7CiAgICAgfQogICAgIHJldHVybiByZWNvbXB1dGVWaXNpYmxlUmVnaW9uczsKQEAgLTg0MCw3ICs4MTQsNyBAQAogICAgIHNpemVfdCBjb3VudCA9IGN1cnJlbnRMYXllcnMuc2l6ZSgpOwogICAgIHNwPExheWVyQmFzZT4gY29uc3QqIGxheWVycyA9IGN1cnJlbnRMYXllcnMuYXJyYXkoKTsKICAgICBmb3IgKHNpemVfdCBpPTAgOyBpPGNvdW50IDsgaSsrKSB7Ci0gICAgICAgIGNvbnN0IHNwPExheWVyQmFzZT4mIGxheWVyID0gbGF5ZXJzW2ldOworICAgICAgICBjb25zdCBzcDxMYXllckJhc2U+JiBsYXllcihsYXllcnNbaV0pOwogICAgICAgICBsYXllci0+dW5sb2NrUGFnZUZsaXAocGxhbmVUcmFuc2Zvcm0sIG1EaXJ0eVJlZ2lvbik7CiAgICAgfQogfQpAQCAtODcyLDcgKzg0Niw3IEBACiAgICAgICAgIC8vIHRha2VzIGEgcmVjdGFuZ2xlLCB3ZSBtdXN0IG1ha2Ugc3VyZSB0byB1cGRhdGUgdGhhdCB3aG9sZQogICAgICAgICAvLyByZWN0YW5nbGUgaW4gdGhhdCBjYXNlCiAgICAgICAgIGlmIChmbGFncyAmIERpc3BsYXlIYXJkd2FyZTo6U1dBUF9SRUNUQU5HTEUpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiB3ZSByZWFsbHkgc2hvdWxkIGJlIGFibGUgdG8gcGFzcyBhIHJlZ2lvbiB0bworICAgICAgICAgICAgLy8gVE9ETzogd2UgcmVhbGx5IHNob3VsZCBiZSBhYmxlIHRvIHBhc3MgYSByZWdpb24gdG8KICAgICAgICAgICAgIC8vIFNXQVBfUkVDVEFOR0xFIHNvIHRoYXQgd2UgZG9uJ3QgaGF2ZSB0byByZWRyYXcgYWxsIHRoaXMuCiAgICAgICAgICAgICBtRGlydHlSZWdpb24uc2V0KG1JbnZhbGlkUmVnaW9uLmJvdW5kcygpKTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTkzOCwxNyArOTEyLDE4IEBACiAKIHZvaWQgU3VyZmFjZUZsaW5nZXI6OmRlYnVnRmxhc2hSZWdpb25zKCkKIHsKLSAgICAgY29uc3QgRGlzcGxheUhhcmR3YXJlJiBodyhncmFwaGljUGxhbmUoMCkuZGlzcGxheUhhcmR3YXJlKCkpOwotICAgICBjb25zdCB1aW50MzJfdCBmbGFncyA9IGh3LmdldEZsYWdzKCk7CisgICAgY29uc3QgRGlzcGxheUhhcmR3YXJlJiBodyhncmFwaGljUGxhbmUoMCkuZGlzcGxheUhhcmR3YXJlKCkpOworICAgIGNvbnN0IHVpbnQzMl90IGZsYWdzID0gaHcuZ2V0RmxhZ3MoKTsKIAotICAgICBpZiAoISgoZmxhZ3MgJiBEaXNwbGF5SGFyZHdhcmU6OlNXQVBfUkVDVEFOR0xFKSB8fAotICAgICAgICAgICAgIChmbGFncyAmIERpc3BsYXlIYXJkd2FyZTo6QlVGRkVSX1BSRVNFUlZFRCkpKSB7Ci0gICAgICAgICBjb25zdCBSZWdpb24gcmVwYWludCgoZmxhZ3MgJiBEaXNwbGF5SGFyZHdhcmU6OlBBUlRJQUxfVVBEQVRFUykgPwotICAgICAgICAgICAgICAgICBtRGlydHlSZWdpb24uYm91bmRzKCkgOiBody5ib3VuZHMoKSk7Ci0gICAgICAgICBjb21wb3NlU3VyZmFjZXMocmVwYWludCk7Ci0gICAgIH0KLSAgICAKLSAgICBnbERpc2FibGUoR0xfVEVYVFVSRV8yRCk7CisgICAgaWYgKCEoKGZsYWdzICYgRGlzcGxheUhhcmR3YXJlOjpTV0FQX1JFQ1RBTkdMRSkgfHwKKyAgICAgICAgICAgIChmbGFncyAmIERpc3BsYXlIYXJkd2FyZTo6QlVGRkVSX1BSRVNFUlZFRCkpKSB7CisgICAgICAgIGNvbnN0IFJlZ2lvbiByZXBhaW50KChmbGFncyAmIERpc3BsYXlIYXJkd2FyZTo6UEFSVElBTF9VUERBVEVTKSA/CisgICAgICAgICAgICAgICAgbURpcnR5UmVnaW9uLmJvdW5kcygpIDogaHcuYm91bmRzKCkpOworICAgICAgICBjb21wb3NlU3VyZmFjZXMocmVwYWludCk7CisgICAgfQorCisgICAgVGV4dHVyZU1hbmFnZXI6OmRlYWN0aXZhdGVUZXh0dXJlcygpOworCiAgICAgZ2xEaXNhYmxlKEdMX0JMRU5EKTsKICAgICBnbERpc2FibGUoR0xfRElUSEVSKTsKICAgICBnbERpc2FibGUoR0xfU0NJU1NPUl9URVNUKTsKQEAgLTk1Niw5ICs5MzEsOSBAQAogICAgIHN0YXRpYyBpbnQgdG9nZ2xlID0gMDsKICAgICB0b2dnbGUgPSAxIC0gdG9nZ2xlOwogICAgIGlmICh0b2dnbGUpIHsKLSAgICAgICAgZ2xDb2xvcjR4KDB4MTAwMDAsIDAsIDB4MTAwMDAsIDB4MTAwMDApOworICAgICAgICBnbENvbG9yNGYoMSwgMCwgMSwgMSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgZ2xDb2xvcjR4KDB4MTAwMDAsIDB4MTAwMDAsIDAsIDB4MTAwMDApOworICAgICAgICBnbENvbG9yNGYoMSwgMSwgMCwgMSk7CiAgICAgfQogCiAgICAgUmVnaW9uOjpjb25zdF9pdGVyYXRvciBpdCA9IG1EaXJ0eVJlZ2lvbi5iZWdpbigpOwpAQCAtOTc0LDcgKzk0OSw3IEBACiAgICAgICAgIGdsVmVydGV4UG9pbnRlcigyLCBHTF9GTE9BVCwgMCwgdmVydGljZXMpOwogICAgICAgICBnbERyYXdBcnJheXMoR0xfVFJJQU5HTEVfRkFOLCAwLCA0KTsKICAgICB9Ci0gICAgCisKICAgICBpZiAobUludmFsaWRSZWdpb24uaXNFbXB0eSgpKSB7CiAgICAgICAgIG1EaXJ0eVJlZ2lvbi5kdW1wKCJtRGlydHlSZWdpb24iKTsKICAgICAgICAgbUludmFsaWRSZWdpb24uZHVtcCgibUludmFsaWRSZWdpb24iKTsKQEAgLTk4Miw3ICs5NTcsNyBAQAogICAgIGh3LmZsaXAobUludmFsaWRSZWdpb24pOwogCiAgICAgaWYgKG1EZWJ1Z1JlZ2lvbiA+IDEpCi0gICAgICAgdXNsZWVwKG1EZWJ1Z1JlZ2lvbiAqIDEwMDApOworICAgICAgICB1c2xlZXAobURlYnVnUmVnaW9uICogMTAwMCk7CiAKICAgICBnbEVuYWJsZShHTF9TQ0lTU09SX1RFU1QpOwogICAgIC8vbURpcnR5UmVnaW9uLmR1bXAoIm1EaXJ0eVJlZ2lvbiIpOwpAQCAtMTAwMiw3ICs5NzcsNyBAQAogICAgIGdsRGlzYWJsZShHTF9ESVRIRVIpOwogCiAgICAgaWYgKExJS0VMWSghbURlYnVnQmFja2dyb3VuZCkpIHsKLSAgICAgICAgZ2xDbGVhckNvbG9yeCgwLDAsMCwwKTsKKyAgICAgICAgZ2xDbGVhckNvbG9yKDAsMCwwLDApOwogICAgICAgICBSZWdpb246OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcmVnaW9uLmJlZ2luKCk7CiAgICAgICAgIFJlZ2lvbjo6Y29uc3RfaXRlcmF0b3IgY29uc3QgZW5kID0gcmVnaW9uLmVuZCgpOwogICAgICAgICB3aGlsZSAoaXQgIT0gZW5kKSB7CkBAIC0xMDE4LDYgKzk5MywxMSBAQAogICAgICAgICBnbFZlcnRleFBvaW50ZXIoMiwgR0xfU0hPUlQsIDAsIHZlcnRpY2VzKTsKICAgICAgICAgZ2xUZXhDb29yZFBvaW50ZXIoMiwgR0xfU0hPUlQsIDAsIHRjb29yZHMpOwogICAgICAgICBnbEVuYWJsZUNsaWVudFN0YXRlKEdMX1RFWFRVUkVfQ09PUkRfQVJSQVkpOworI2lmIGRlZmluZWQoR0xfT0VTX3RleHR1cmVfZXh0ZXJuYWwpCisgICAgICAgIGlmIChHTEV4dGVuc2lvbnM6OmdldEluc3RhbmNlKCkuaGF2ZVRleHR1cmVFeHRlcm5hbCgpKSB7CisgICAgICAgICAgICBnbERpc2FibGUoR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMpOworICAgICAgICB9CisjZW5kaWYKICAgICAgICAgZ2xFbmFibGUoR0xfVEVYVFVSRV8yRCk7CiAgICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgbVdvcm1ob2xlVGV4TmFtZSk7CiAgICAgICAgIGdsVGV4RW52eChHTF9URVhUVVJFX0VOViwgR0xfVEVYVFVSRV9FTlZfTU9ERSwgR0xfUkVQTEFDRSk7CkBAIC0xMDYxLDYgKzEwNDEsMjcgQEAKICAgICByZXR1cm4gTk9fRVJST1I7CiB9CiAKK3N0YXR1c190IFN1cmZhY2VGbGluZ2VyOjphZGRMYXllcl9sKGNvbnN0IHNwPExheWVyQmFzZT4mIGxheWVyKQoreworICAgIHNzaXplX3QgaSA9IG1DdXJyZW50U3RhdGUubGF5ZXJzU29ydGVkQnlaLmFkZCgKKyAgICAgICAgICAgICAgICBsYXllciwgJkxheWVyQmFzZTo6Y29tcGFyZUN1cnJlbnRTdGF0ZVopOworICAgIHJldHVybiAoaSA8IDApID8gc3RhdHVzX3QoaSkgOiBzdGF0dXNfdChOT19FUlJPUik7Cit9CisKK3NzaXplX3QgU3VyZmFjZUZsaW5nZXI6OmFkZENsaWVudExheWVyKGNvbnN0IHNwPENsaWVudD4mIGNsaWVudCwKKyAgICAgICAgY29uc3Qgc3A8TGF5ZXJCYXNlQ2xpZW50PiYgbGJjKQoreworICAgIE11dGV4OjpBdXRvbG9jayBfbChtU3RhdGVMb2NrKTsKKworICAgIC8vIGF0dGFjaCB0aGlzIGxheWVyIHRvIHRoZSBjbGllbnQKKyAgICBzc2l6ZV90IG5hbWUgPSBjbGllbnQtPmF0dGFjaExheWVyKGxiYyk7CisKKyAgICAvLyBhZGQgdGhpcyBsYXllciB0byB0aGUgY3VycmVudCBzdGF0ZSBsaXN0CisgICAgYWRkTGF5ZXJfbChsYmMpOworCisgICAgcmV0dXJuIG5hbWU7Cit9CisKIHN0YXR1c190IFN1cmZhY2VGbGluZ2VyOjpyZW1vdmVMYXllcihjb25zdCBzcDxMYXllckJhc2U+JiBsYXllcikKIHsKICAgICBNdXRleDo6QXV0b2xvY2sgX2wobVN0YXRlTG9jayk7CkBAIC0xMDcwLDM2ICsxMDcxLDE1IEBACiAgICAgcmV0dXJuIGVycjsKIH0KIAotc3RhdHVzX3QgU3VyZmFjZUZsaW5nZXI6OmludmFsaWRhdGVMYXllclZpc2liaWxpdHkoY29uc3Qgc3A8TGF5ZXJCYXNlPiYgbGF5ZXIpCi17Ci0gICAgbGF5ZXItPmZvcmNlVmlzaWJpbGl0eVRyYW5zYWN0aW9uKCk7Ci0gICAgc2V0VHJhbnNhY3Rpb25GbGFncyhlVHJhdmVyc2FsTmVlZGVkKTsKLSAgICByZXR1cm4gTk9fRVJST1I7Ci19Ci0KLXN0YXR1c190IFN1cmZhY2VGbGluZ2VyOjphZGRMYXllcl9sKGNvbnN0IHNwPExheWVyQmFzZT4mIGxheWVyKQotewotICAgIGlmIChsYXllciA9PSAwKQotICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOwotICAgIHNzaXplX3QgaSA9IG1DdXJyZW50U3RhdGUubGF5ZXJzU29ydGVkQnlaLmFkZCgKLSAgICAgICAgICAgICAgICBsYXllciwgJkxheWVyQmFzZTo6Y29tcGFyZUN1cnJlbnRTdGF0ZVopOwotICAgIHNwPExheWVyQmFzZUNsaWVudD4gbGJjID0gTGF5ZXJCYXNlOjpkeW5hbWljQ2FzdDwgTGF5ZXJCYXNlQ2xpZW50KiA+KGxheWVyLmdldCgpKTsKLSAgICBpZiAobGJjICE9IDApIHsKLSAgICAgICAgbUxheWVyTWFwLmFkZChsYmMtPnNlcnZlckluZGV4KCksIGxiYyk7Ci0gICAgfQotICAgIHJldHVybiBOT19FUlJPUjsKLX0KLQogc3RhdHVzX3QgU3VyZmFjZUZsaW5nZXI6OnJlbW92ZUxheWVyX2woY29uc3Qgc3A8TGF5ZXJCYXNlPiYgbGF5ZXJCYXNlKQogeworICAgIHNwPExheWVyQmFzZUNsaWVudD4gbGJjKGxheWVyQmFzZS0+Z2V0TGF5ZXJCYXNlQ2xpZW50KCkpOworICAgIGlmIChsYmMgIT0gMCkgeworICAgICAgICBtTGF5ZXJNYXAucmVtb3ZlSXRlbSggbGJjLT5nZXRTdXJmYWNlKCktPmFzQmluZGVyKCkgKTsKKyAgICB9CiAgICAgc3NpemVfdCBpbmRleCA9IG1DdXJyZW50U3RhdGUubGF5ZXJzU29ydGVkQnlaLnJlbW92ZShsYXllckJhc2UpOwogICAgIGlmIChpbmRleCA+PSAwKSB7CiAgICAgICAgIG1MYXllcnNSZW1vdmVkID0gdHJ1ZTsKLSAgICAgICAgc3A8TGF5ZXJCYXNlQ2xpZW50PiBsYXllciA9Ci0gICAgICAgICAgICBMYXllckJhc2U6OmR5bmFtaWNDYXN0PCBMYXllckJhc2VDbGllbnQqID4obGF5ZXJCYXNlLmdldCgpKTsKLSAgICAgICAgaWYgKGxheWVyICE9IDApIHsKLSAgICAgICAgICAgIG1MYXllck1hcC5yZW1vdmVJdGVtKGxheWVyLT5zZXJ2ZXJJbmRleCgpKTsKLSAgICAgICAgfQogICAgICAgICByZXR1cm4gTk9fRVJST1I7CiAgICAgfQogICAgIHJldHVybiBzdGF0dXNfdChpbmRleCk7CkBAIC0xMTE0LDIyICsxMDk0LDE2IEBACiAKICAgICAvLyBpdCdzIHBvc3NpYmxlIHRoYXQgd2UgZG9uJ3QgZmluZCBhIGxheWVyLCBiZWNhdXNlIGl0IG1pZ2h0CiAgICAgLy8gaGF2ZSBiZWVuIGRlc3Ryb3llZCBhbHJlYWR5IC0tIHRoaXMgaXMgbm90IHRlY2huaWNhbGx5IGFuIGVycm9yCi0gICAgLy8gZnJvbSB0aGUgdXNlciBiZWNhdXNlIHRoZXJlIGlzIGEgcmFjZSBiZXR3ZWVuIEJDbGllbnQ6OmRlc3Ryb3lTdXJmYWNlKCksCi0gICAgLy8gfkJDbGllbnQoKSBhbmQgfklTdXJmYWNlKCkuCisgICAgLy8gZnJvbSB0aGUgdXNlciBiZWNhdXNlIHRoZXJlIGlzIGEgcmFjZSBiZXR3ZWVuIENsaWVudDo6ZGVzdHJveVN1cmZhY2UoKSwKKyAgICAvLyB+Q2xpZW50KCkgYW5kIH5JU3VyZmFjZSgpLgogICAgIHJldHVybiAoZXJyID09IE5BTUVfTk9UX0ZPVU5EKSA/IHN0YXR1c190KE5PX0VSUk9SKSA6IGVycjsKIH0KIAotCi12b2lkIFN1cmZhY2VGbGluZ2VyOjpmcmVlX3Jlc291cmNlc19sKCkKK3N0YXR1c190IFN1cmZhY2VGbGluZ2VyOjppbnZhbGlkYXRlTGF5ZXJWaXNpYmlsaXR5KGNvbnN0IHNwPExheWVyQmFzZT4mIGxheWVyKQogewotICAgIC8vIGZyZWUgcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCBkaXNjb25uZWN0ZWQgY2xpZW50cwotICAgIFZlY3Rvcjwgc3A8Q2xpZW50PiA+JiBkaXNjb25uZWN0ZWRDbGllbnRzKG1EaXNjb25uZWN0ZWRDbGllbnRzKTsKLSAgICBjb25zdCBzaXplX3QgY291bnQgPSBkaXNjb25uZWN0ZWRDbGllbnRzLnNpemUoKTsKLSAgICBmb3IgKHNpemVfdCBpPTAgOyBpPGNvdW50IDsgaSsrKSB7Ci0gICAgICAgIHNwPENsaWVudD4gY2xpZW50ID0gZGlzY29ubmVjdGVkQ2xpZW50c1tpXTsKLSAgICAgICAgbVRva2Vucy5yZWxlYXNlKGNsaWVudC0+Y2lkKTsKLSAgICB9Ci0gICAgZGlzY29ubmVjdGVkQ2xpZW50cy5jbGVhcigpOworICAgIGxheWVyLT5mb3JjZVZpc2liaWxpdHlUcmFuc2FjdGlvbigpOworICAgIHNldFRyYW5zYWN0aW9uRmxhZ3MoZVRyYXZlcnNhbE5lZWRlZCk7CisgICAgcmV0dXJuIE5PX0VSUk9SOwogfQogCiB1aW50MzJfdCBTdXJmYWNlRmxpbmdlcjo6Z2V0VHJhbnNhY3Rpb25GbGFncyh1aW50MzJfdCBmbGFncykKQEAgLTExMzcsMTUgKzExMTEsMTEgQEAKICAgICByZXR1cm4gYW5kcm9pZF9hdG9taWNfYW5kKH5mbGFncywgJm1UcmFuc2FjdGlvbkZsYWdzKSAmIGZsYWdzOwogfQogCi11aW50MzJfdCBTdXJmYWNlRmxpbmdlcjo6c2V0VHJhbnNhY3Rpb25GbGFncyh1aW50MzJfdCBmbGFncywgbnNlY3NfdCBkZWxheSkKK3VpbnQzMl90IFN1cmZhY2VGbGluZ2VyOjpzZXRUcmFuc2FjdGlvbkZsYWdzKHVpbnQzMl90IGZsYWdzKQogewogICAgIHVpbnQzMl90IG9sZCA9IGFuZHJvaWRfYXRvbWljX29yKGZsYWdzLCAmbVRyYW5zYWN0aW9uRmxhZ3MpOwogICAgIGlmICgob2xkICYgZmxhZ3MpPT0wKSB7IC8vIHdha2UgdGhlIHNlcnZlciB1cAotICAgICAgICBpZiAoZGVsYXkgPiAwKSB7Ci0gICAgICAgICAgICBzaWduYWxEZWxheWVkRXZlbnQoZGVsYXkpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc2lnbmFsRXZlbnQoKTsKLSAgICAgICAgfQorICAgICAgICBzaWduYWxFdmVudCgpOwogICAgIH0KICAgICByZXR1cm4gb2xkOwogfQpAQCAtMTIyNCw4ICsxMTk0LDggQEAKICAgICByZXR1cm4gb3JpZW50YXRpb247CiB9CiAKLXNwPElTdXJmYWNlPiBTdXJmYWNlRmxpbmdlcjo6Y3JlYXRlU3VyZmFjZShDbGllbnRJRCBjbGllbnRJZCwgaW50IHBpZCwKLSAgICAgICAgY29uc3QgU3RyaW5nOCYgbmFtZSwgSVN1cmZhY2VGbGluZ2VyQ2xpZW50OjpzdXJmYWNlX2RhdGFfdCogcGFyYW1zLAorc3A8SVN1cmZhY2U+IFN1cmZhY2VGbGluZ2VyOjpjcmVhdGVTdXJmYWNlKGNvbnN0IHNwPENsaWVudD4mIGNsaWVudCwgaW50IHBpZCwKKyAgICAgICAgY29uc3QgU3RyaW5nOCYgbmFtZSwgSVN1cmZhY2VDb21wb3NlckNsaWVudDo6c3VyZmFjZV9kYXRhX3QqIHBhcmFtcywKICAgICAgICAgRGlzcGxheUlEIGQsIHVpbnQzMl90IHcsIHVpbnQzMl90IGgsIFBpeGVsRm9ybWF0IGZvcm1hdCwKICAgICAgICAgdWludDMyX3QgZmxhZ3MpCiB7CkBAIC0xMjM4LDU3ICsxMjA4LDUyIEBACiAgICAgICAgIHJldHVybiBzdXJmYWNlSGFuZGxlOwogICAgIH0KICAgICAKLSAgICBNdXRleDo6QXV0b2xvY2sgX2wobVN0YXRlTG9jayk7Ci0gICAgc3A8Q2xpZW50PiBjbGllbnQgPSBtQ2xpZW50c01hcC52YWx1ZUZvcihjbGllbnRJZCk7Ci0gICAgaWYgKFVOTElLRUxZKGNsaWVudCA9PSAwKSkgewotICAgICAgICBMT0dFKCJjcmVhdGVTdXJmYWNlKCkgZmFpbGVkLCBjbGllbnQgbm90IGZvdW5kIChpZD0lZCkiLCBjbGllbnRJZCk7Ci0gICAgICAgIHJldHVybiBzdXJmYWNlSGFuZGxlOwotICAgIH0KLQogICAgIC8vTE9HRCgiY3JlYXRlU3VyZmFjZSBmb3IgcGlkICVkICglZCB4ICVkKSIsIHBpZCwgdywgaCk7Ci0gICAgaW50MzJfdCBpZCA9IGNsaWVudC0+Z2VuZXJhdGVJZChwaWQpOwotICAgIGlmICh1aW50MzJfdChpZCkgPj0gTlVNX0xBWUVSU19NQVgpIHsKLSAgICAgICAgTE9HRSgiY3JlYXRlU3VyZmFjZSgpIGZhaWxlZCwgZ2VuZXJhdGVJZCA9ICVkIiwgaWQpOwotICAgICAgICByZXR1cm4gc3VyZmFjZUhhbmRsZTsKLSAgICB9Ci0KKyAgICBzcDxMYXllcj4gbm9ybWFsTGF5ZXI7CiAgICAgc3dpdGNoIChmbGFncyAmIGVGWFN1cmZhY2VNYXNrKSB7CiAgICAgICAgIGNhc2UgZUZYU3VyZmFjZU5vcm1hbDoKICAgICAgICAgICAgIGlmIChVTkxJS0VMWShmbGFncyAmIGVQdXNoQnVmZmVycykpIHsKLSAgICAgICAgICAgICAgICBsYXllciA9IGNyZWF0ZVB1c2hCdWZmZXJzU3VyZmFjZUxvY2tlZChjbGllbnQsIGQsIGlkLAotICAgICAgICAgICAgICAgICAgICAgICAgdywgaCwgZmxhZ3MpOworICAgICAgICAgICAgICAgIGxheWVyID0gY3JlYXRlUHVzaEJ1ZmZlcnNTdXJmYWNlKGNsaWVudCwgZCwgdywgaCwgZmxhZ3MpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBsYXllciA9IGNyZWF0ZU5vcm1hbFN1cmZhY2VMb2NrZWQoY2xpZW50LCBkLCBpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHcsIGgsIGZsYWdzLCBmb3JtYXQpOworICAgICAgICAgICAgICAgIG5vcm1hbExheWVyID0gY3JlYXRlTm9ybWFsU3VyZmFjZShjbGllbnQsIGQsIHcsIGgsIGZsYWdzLCBmb3JtYXQpOworICAgICAgICAgICAgICAgIGxheWVyID0gbm9ybWFsTGF5ZXI7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBlRlhTdXJmYWNlQmx1cjoKLSAgICAgICAgICAgIGxheWVyID0gY3JlYXRlQmx1clN1cmZhY2VMb2NrZWQoY2xpZW50LCBkLCBpZCwgdywgaCwgZmxhZ3MpOworICAgICAgICAgICAgbGF5ZXIgPSBjcmVhdGVCbHVyU3VyZmFjZShjbGllbnQsIGQsIHcsIGgsIGZsYWdzKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIGVGWFN1cmZhY2VEaW06Ci0gICAgICAgICAgICBsYXllciA9IGNyZWF0ZURpbVN1cmZhY2VMb2NrZWQoY2xpZW50LCBkLCBpZCwgdywgaCwgZmxhZ3MpOworICAgICAgICAgICAgbGF5ZXIgPSBjcmVhdGVEaW1TdXJmYWNlKGNsaWVudCwgZCwgdywgaCwgZmxhZ3MpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgfQogCiAgICAgaWYgKGxheWVyICE9IDApIHsKKyAgICAgICAgbGF5ZXItPmluaXRTdGF0ZXModywgaCwgZmxhZ3MpOwogICAgICAgICBsYXllci0+c2V0TmFtZShuYW1lKTsKLSAgICAgICAgc2V0VHJhbnNhY3Rpb25GbGFncyhlVHJhbnNhY3Rpb25OZWVkZWQpOworICAgICAgICBzc2l6ZV90IHRva2VuID0gYWRkQ2xpZW50TGF5ZXIoY2xpZW50LCBsYXllcik7CisKICAgICAgICAgc3VyZmFjZUhhbmRsZSA9IGxheWVyLT5nZXRTdXJmYWNlKCk7CiAgICAgICAgIGlmIChzdXJmYWNlSGFuZGxlICE9IDApIHsgCi0gICAgICAgICAgICBwYXJhbXMtPnRva2VuID0gc3VyZmFjZUhhbmRsZS0+Z2V0VG9rZW4oKTsKKyAgICAgICAgICAgIHBhcmFtcy0+dG9rZW4gPSB0b2tlbjsKICAgICAgICAgICAgIHBhcmFtcy0+aWRlbnRpdHkgPSBzdXJmYWNlSGFuZGxlLT5nZXRJZGVudGl0eSgpOwogICAgICAgICAgICAgcGFyYW1zLT53aWR0aCA9IHc7CiAgICAgICAgICAgICBwYXJhbXMtPmhlaWdodCA9IGg7CiAgICAgICAgICAgICBwYXJhbXMtPmZvcm1hdCA9IGZvcm1hdDsKKyAgICAgICAgICAgIGlmIChub3JtYWxMYXllciAhPSAwKSB7CisgICAgICAgICAgICAgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1TdGF0ZUxvY2spOworICAgICAgICAgICAgICAgIG1MYXllck1hcC5hZGQoc3VyZmFjZUhhbmRsZS0+YXNCaW5kZXIoKSwgbm9ybWFsTGF5ZXIpOworICAgICAgICAgICAgfQogICAgICAgICB9CisKKyAgICAgICAgc2V0VHJhbnNhY3Rpb25GbGFncyhlVHJhbnNhY3Rpb25OZWVkZWQpOwogICAgIH0KIAogICAgIHJldHVybiBzdXJmYWNlSGFuZGxlOwogfQogCi1zcDxMYXllckJhc2VDbGllbnQ+IFN1cmZhY2VGbGluZ2VyOjpjcmVhdGVOb3JtYWxTdXJmYWNlTG9ja2VkKAorc3A8TGF5ZXI+IFN1cmZhY2VGbGluZ2VyOjpjcmVhdGVOb3JtYWxTdXJmYWNlKAogICAgICAgICBjb25zdCBzcDxDbGllbnQ+JiBjbGllbnQsIERpc3BsYXlJRCBkaXNwbGF5LAotICAgICAgICBpbnQzMl90IGlkLCB1aW50MzJfdCB3LCB1aW50MzJfdCBoLCB1aW50MzJfdCBmbGFncywKKyAgICAgICAgdWludDMyX3QgdywgdWludDMyX3QgaCwgdWludDMyX3QgZmxhZ3MsCiAgICAgICAgIFBpeGVsRm9ybWF0JiBmb3JtYXQpCiB7CiAgICAgLy8gaW5pdGlhbGl6ZSB0aGUgc3VyZmFjZXMKQEAgLTEyOTgsNTMgKzEyNjMsNTYgQEAKICAgICAgICAgZm9ybWF0ID0gUElYRUxfRk9STUFUX1JHQkFfODg4ODsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQSVhFTF9GT1JNQVRfT1BBUVVFOgorI2lmZGVmIE5PX1JHQlhfODg4OAogICAgICAgICBmb3JtYXQgPSBQSVhFTF9GT1JNQVRfUkdCXzU2NTsKKyNlbHNlCisgICAgICAgIGZvcm1hdCA9IFBJWEVMX0ZPUk1BVF9SR0JYXzg4ODg7CisjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgc3A8TGF5ZXI+IGxheWVyID0gbmV3IExheWVyKHRoaXMsIGRpc3BsYXksIGNsaWVudCwgaWQpOworI2lmZGVmIE5PX1JHQlhfODg4OAorICAgIGlmIChmb3JtYXQgPT0gUElYRUxfRk9STUFUX1JHQlhfODg4OCkKKyAgICAgICAgZm9ybWF0ID0gUElYRUxfRk9STUFUX1JHQkFfODg4ODsKKyNlbmRpZgorCisgICAgc3A8TGF5ZXI+IGxheWVyID0gbmV3IExheWVyKHRoaXMsIGRpc3BsYXksIGNsaWVudCk7CiAgICAgc3RhdHVzX3QgZXJyID0gbGF5ZXItPnNldEJ1ZmZlcnModywgaCwgZm9ybWF0LCBmbGFncyk7Ci0gICAgaWYgKExJS0VMWShlcnIgPT0gTk9fRVJST1IpKSB7Ci0gICAgICAgIGxheWVyLT5pbml0U3RhdGVzKHcsIGgsIGZsYWdzKTsKLSAgICAgICAgYWRkTGF5ZXJfbChsYXllcik7Ci0gICAgfSBlbHNlIHsKKyAgICBpZiAoTElLRUxZKGVyciAhPSBOT19FUlJPUikpIHsKICAgICAgICAgTE9HRSgiY3JlYXRlTm9ybWFsU3VyZmFjZUxvY2tlZCgpIGZhaWxlZCAoJXMpIiwgc3RyZXJyb3IoLWVycikpOwogICAgICAgICBsYXllci5jbGVhcigpOwogICAgIH0KICAgICByZXR1cm4gbGF5ZXI7CiB9CiAKLXNwPExheWVyQmFzZUNsaWVudD4gU3VyZmFjZUZsaW5nZXI6OmNyZWF0ZUJsdXJTdXJmYWNlTG9ja2VkKAorc3A8TGF5ZXJCbHVyPiBTdXJmYWNlRmxpbmdlcjo6Y3JlYXRlQmx1clN1cmZhY2UoCiAgICAgICAgIGNvbnN0IHNwPENsaWVudD4mIGNsaWVudCwgRGlzcGxheUlEIGRpc3BsYXksCi0gICAgICAgIGludDMyX3QgaWQsIHVpbnQzMl90IHcsIHVpbnQzMl90IGgsIHVpbnQzMl90IGZsYWdzKQorICAgICAgICB1aW50MzJfdCB3LCB1aW50MzJfdCBoLCB1aW50MzJfdCBmbGFncykKIHsKLSAgICBzcDxMYXllckJsdXI+IGxheWVyID0gbmV3IExheWVyQmx1cih0aGlzLCBkaXNwbGF5LCBjbGllbnQsIGlkKTsKKyAgICBzcDxMYXllckJsdXI+IGxheWVyID0gbmV3IExheWVyQmx1cih0aGlzLCBkaXNwbGF5LCBjbGllbnQpOwogICAgIGxheWVyLT5pbml0U3RhdGVzKHcsIGgsIGZsYWdzKTsKLSAgICBhZGRMYXllcl9sKGxheWVyKTsKICAgICByZXR1cm4gbGF5ZXI7CiB9CiAKLXNwPExheWVyQmFzZUNsaWVudD4gU3VyZmFjZUZsaW5nZXI6OmNyZWF0ZURpbVN1cmZhY2VMb2NrZWQoCitzcDxMYXllckRpbT4gU3VyZmFjZUZsaW5nZXI6OmNyZWF0ZURpbVN1cmZhY2UoCiAgICAgICAgIGNvbnN0IHNwPENsaWVudD4mIGNsaWVudCwgRGlzcGxheUlEIGRpc3BsYXksCi0gICAgICAgIGludDMyX3QgaWQsIHVpbnQzMl90IHcsIHVpbnQzMl90IGgsIHVpbnQzMl90IGZsYWdzKQorICAgICAgICB1aW50MzJfdCB3LCB1aW50MzJfdCBoLCB1aW50MzJfdCBmbGFncykKIHsKLSAgICBzcDxMYXllckRpbT4gbGF5ZXIgPSBuZXcgTGF5ZXJEaW0odGhpcywgZGlzcGxheSwgY2xpZW50LCBpZCk7CisgICAgc3A8TGF5ZXJEaW0+IGxheWVyID0gbmV3IExheWVyRGltKHRoaXMsIGRpc3BsYXksIGNsaWVudCk7CiAgICAgbGF5ZXItPmluaXRTdGF0ZXModywgaCwgZmxhZ3MpOwotICAgIGFkZExheWVyX2wobGF5ZXIpOwogICAgIHJldHVybiBsYXllcjsKIH0KIAotc3A8TGF5ZXJCYXNlQ2xpZW50PiBTdXJmYWNlRmxpbmdlcjo6Y3JlYXRlUHVzaEJ1ZmZlcnNTdXJmYWNlTG9ja2VkKAorc3A8TGF5ZXJCdWZmZXI+IFN1cmZhY2VGbGluZ2VyOjpjcmVhdGVQdXNoQnVmZmVyc1N1cmZhY2UoCiAgICAgICAgIGNvbnN0IHNwPENsaWVudD4mIGNsaWVudCwgRGlzcGxheUlEIGRpc3BsYXksCi0gICAgICAgIGludDMyX3QgaWQsIHVpbnQzMl90IHcsIHVpbnQzMl90IGgsIHVpbnQzMl90IGZsYWdzKQorICAgICAgICB1aW50MzJfdCB3LCB1aW50MzJfdCBoLCB1aW50MzJfdCBmbGFncykKIHsKLSAgICBzcDxMYXllckJ1ZmZlcj4gbGF5ZXIgPSBuZXcgTGF5ZXJCdWZmZXIodGhpcywgZGlzcGxheSwgY2xpZW50LCBpZCk7CisgICAgc3A8TGF5ZXJCdWZmZXI+IGxheWVyID0gbmV3IExheWVyQnVmZmVyKHRoaXMsIGRpc3BsYXksIGNsaWVudCk7CiAgICAgbGF5ZXItPmluaXRTdGF0ZXModywgaCwgZmxhZ3MpOwotICAgIGFkZExheWVyX2wobGF5ZXIpOwogICAgIHJldHVybiBsYXllcjsKIH0KIAotc3RhdHVzX3QgU3VyZmFjZUZsaW5nZXI6OnJlbW92ZVN1cmZhY2UoU3VyZmFjZUlEIGluZGV4KQorc3RhdHVzX3QgU3VyZmFjZUZsaW5nZXI6OnJlbW92ZVN1cmZhY2UoY29uc3Qgc3A8Q2xpZW50PiYgY2xpZW50LCBTdXJmYWNlSUQgc2lkKQogewogICAgIC8qCiAgICAgICogY2FsbGVkIGJ5IHRoZSB3aW5kb3cgbWFuYWdlciwgd2hlbiBhIHN1cmZhY2Ugc2hvdWxkIGJlIG1hcmtlZCBmb3IKQEAgLTEzNTcsNyArMTMyNSw3IEBACiAKICAgICBzdGF0dXNfdCBlcnIgPSBOQU1FX05PVF9GT1VORDsKICAgICBNdXRleDo6QXV0b2xvY2sgX2wobVN0YXRlTG9jayk7Ci0gICAgc3A8TGF5ZXJCYXNlQ2xpZW50PiBsYXllciA9IGdldExheWVyVXNlcl9sKGluZGV4KTsKKyAgICBzcDxMYXllckJhc2VDbGllbnQ+IGxheWVyID0gY2xpZW50LT5nZXRMYXllclVzZXIoc2lkKTsKICAgICBpZiAobGF5ZXIgIT0gMCkgewogICAgICAgICBlcnIgPSBwdXJnYXRvcml6ZUxheWVyX2wobGF5ZXIpOwogICAgICAgICBpZiAoZXJyID09IE5PX0VSUk9SKSB7CkBAIC0xMzk3LDIxICsxMzY1LDIwIEBACiAgICAgICAgIH0KICAgICB9OwogCi0gICAgbUV2ZW50UXVldWUucG9zdE1lc3NhZ2UoIG5ldyBNZXNzYWdlRGVzdHJveVN1cmZhY2UodGhpcywgbGF5ZXIpICk7CisgICAgcG9zdE1lc3NhZ2VBc3luYyggbmV3IE1lc3NhZ2VEZXN0cm95U3VyZmFjZSh0aGlzLCBsYXllcikgKTsKICAgICByZXR1cm4gTk9fRVJST1I7CiB9CiAKIHN0YXR1c190IFN1cmZhY2VGbGluZ2VyOjpzZXRDbGllbnRTdGF0ZSgKLSAgICAgICAgQ2xpZW50SUQgY2lkLAorICAgICAgICBjb25zdCBzcDxDbGllbnQ+JiBjbGllbnQsCiAgICAgICAgIGludDMyX3QgY291bnQsCiAgICAgICAgIGNvbnN0IGxheWVyX3N0YXRlX3QqIHN0YXRlcykKIHsKICAgICBNdXRleDo6QXV0b2xvY2sgX2wobVN0YXRlTG9jayk7CiAgICAgdWludDMyX3QgZmxhZ3MgPSAwOwotICAgIGNpZCA8PD0gMTY7CiAgICAgZm9yIChpbnQgaT0wIDsgaTxjb3VudCA7IGkrKykgewotICAgICAgICBjb25zdCBsYXllcl9zdGF0ZV90JiBzID0gc3RhdGVzW2ldOwotICAgICAgICBzcDxMYXllckJhc2VDbGllbnQ+IGxheWVyKGdldExheWVyVXNlcl9sKHMuc3VyZmFjZSB8IGNpZCkpOworICAgICAgICBjb25zdCBsYXllcl9zdGF0ZV90JiBzKHN0YXRlc1tpXSk7CisgICAgICAgIHNwPExheWVyQmFzZUNsaWVudD4gbGF5ZXIoY2xpZW50LT5nZXRMYXllclVzZXIocy5zdXJmYWNlKSk7CiAgICAgICAgIGlmIChsYXllciAhPSAwKSB7CiAgICAgICAgICAgICBjb25zdCB1aW50MzJfdCB3aGF0ID0gcy53aGF0OwogICAgICAgICAgICAgaWYgKHdoYXQgJiBlUG9zaXRpb25DaGFuZ2VkKSB7CkBAIC0xNDU3LDEyICsxNDI0LDYgQEAKICAgICByZXR1cm4gTk9fRVJST1I7CiB9CiAKLXNwPExheWVyQmFzZUNsaWVudD4gU3VyZmFjZUZsaW5nZXI6OmdldExheWVyVXNlcl9sKFN1cmZhY2VJRCBzKSBjb25zdAotewotICAgIHNwPExheWVyQmFzZUNsaWVudD4gbGF5ZXIgPSBtTGF5ZXJNYXAudmFsdWVGb3Iocyk7Ci0gICAgcmV0dXJuIGxheWVyOwotfQotCiB2b2lkIFN1cmZhY2VGbGluZ2VyOjpzY3JlZW5SZWxlYXNlZChpbnQgZHB5KQogewogICAgIC8vIHRoaXMgbWF5IGJlIGNhbGxlZCBieSBhIHNpZ25hbCBoYW5kbGVyLCB3ZSBjYW4ndCBkbyB0b28gbXVjaCBpbiBoZXJlCkBAIC0xNTEyLDgzICsxNDczLDE3IEBACiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGJ1ZmZlcik7CiAgICAgICAgIH0KIAotICAgICAgICBzaXplX3QgcyA9IG1DbGllbnRzTWFwLnNpemUoKTsKLSAgICAgICAgY2hhciBuYW1lWzY0XTsKLSAgICAgICAgZm9yIChzaXplX3QgaT0wIDsgaTxzIDsgaSsrKSB7Ci0gICAgICAgICAgICBzcDxDbGllbnQ+IGNsaWVudCA9IG1DbGllbnRzTWFwLnZhbHVlQXQoaSk7Ci0gICAgICAgICAgICBzcHJpbnRmKG5hbWUsICIgIENsaWVudCAoaWQ9MHglMDh4KSIsIGNsaWVudC0+Y2lkKTsKLSAgICAgICAgICAgIGNsaWVudC0+ZHVtcChuYW1lKTsKLSAgICAgICAgfQogICAgICAgICBjb25zdCBMYXllclZlY3RvciYgY3VycmVudExheWVycyA9IG1DdXJyZW50U3RhdGUubGF5ZXJzU29ydGVkQnlaOwogICAgICAgICBjb25zdCBzaXplX3QgY291bnQgPSBjdXJyZW50TGF5ZXJzLnNpemUoKTsKICAgICAgICAgZm9yIChzaXplX3QgaT0wIDsgaTxjb3VudCA7IGkrKykgewotICAgICAgICAgICAgLyoqKiBMYXllckJhc2UgKioqLwotICAgICAgICAgICAgY29uc3Qgc3A8TGF5ZXJCYXNlPiYgbGF5ZXIgPSBjdXJyZW50TGF5ZXJzW2ldOwotICAgICAgICAgICAgY29uc3QgTGF5ZXI6OlN0YXRlJiBzID0gbGF5ZXItPmRyYXdpbmdTdGF0ZSgpOwotICAgICAgICAgICAgc25wcmludGYoYnVmZmVyLCBTSVpFLAotICAgICAgICAgICAgICAgICAgICAiKyAlcyAlcFxuIgotICAgICAgICAgICAgICAgICAgICAiICAgICAgIgotICAgICAgICAgICAgICAgICAgICAiej0lOWQsIHBvcz0oJTRkLCU0ZCksIHNpemU9KCU0ZCwlNGQpLCAiCi0gICAgICAgICAgICAgICAgICAgICJuZWVkc0JsZW5kaW5nPSUxZCwgbmVlZHNEaXRoZXJpbmc9JTFkLCBpbnZhbGlkYXRlPSUxZCwgIgotICAgICAgICAgICAgICAgICAgICAiYWxwaGE9MHglMDJ4LCBmbGFncz0weCUwOHgsIHRyPVslLjJmLCAlLjJmXVslLjJmLCAlLjJmXVxuIiwKLSAgICAgICAgICAgICAgICAgICAgbGF5ZXItPmdldFR5cGVJRCgpLCBsYXllci5nZXQoKSwKLSAgICAgICAgICAgICAgICAgICAgcy56LCBsYXllci0+dHgoKSwgbGF5ZXItPnR5KCksIHMudywgcy5oLAotICAgICAgICAgICAgICAgICAgICBsYXllci0+bmVlZHNCbGVuZGluZygpLCBsYXllci0+bmVlZHNEaXRoZXJpbmcoKSwKLSAgICAgICAgICAgICAgICAgICAgbGF5ZXItPmNvbnRlbnREaXJ0eSwKLSAgICAgICAgICAgICAgICAgICAgcy5hbHBoYSwgcy5mbGFncywKLSAgICAgICAgICAgICAgICAgICAgcy50cmFuc2Zvcm1bMF1bMF0sIHMudHJhbnNmb3JtWzBdWzFdLAotICAgICAgICAgICAgICAgICAgICBzLnRyYW5zZm9ybVsxXVswXSwgcy50cmFuc2Zvcm1bMV1bMV0pOwotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChidWZmZXIpOwotICAgICAgICAgICAgYnVmZmVyWzBdID0gMDsKLSAgICAgICAgICAgIC8qKiogTGF5ZXJCYXNlQ2xpZW50ICoqKi8KLSAgICAgICAgICAgIHNwPExheWVyQmFzZUNsaWVudD4gbGJjID0KLSAgICAgICAgICAgICAgICBMYXllckJhc2U6OmR5bmFtaWNDYXN0PCBMYXllckJhc2VDbGllbnQqID4obGF5ZXIuZ2V0KCkpOwotICAgICAgICAgICAgaWYgKGxiYyAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgc3A8Q2xpZW50PiBjbGllbnQobGJjLT5jbGllbnQucHJvbW90ZSgpKTsKLSAgICAgICAgICAgICAgICBzbnByaW50ZihidWZmZXIsIFNJWkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgbmFtZT0lc1xuIiwgbGJjLT5nZXROYW1lKCkuc3RyaW5nKCkpOwotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoYnVmZmVyKTsKLSAgICAgICAgICAgICAgICBzbnByaW50ZihidWZmZXIsIFNJWkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAiICAgICAgaWQ9MHglMDh4LCBjbGllbnQ9MHglMDh4LCBpZGVudGl0eT0ldVxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxiYy0+Y2xpZW50SW5kZXgoKSwgY2xpZW50LmdldCgpID8gY2xpZW50LT5jaWQgOiAwLAotICAgICAgICAgICAgICAgICAgICAgICAgbGJjLT5nZXRJZGVudGl0eSgpKTsKLQotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoYnVmZmVyKTsKLSAgICAgICAgICAgICAgICBidWZmZXJbMF0gPSAwOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLyoqKiBMYXllciAqKiovCi0gICAgICAgICAgICBzcDxMYXllcj4gbCA9IExheWVyQmFzZTo6ZHluYW1pY0Nhc3Q8IExheWVyKiA+KGxheWVyLmdldCgpKTsKLSAgICAgICAgICAgIGlmIChsICE9IDApIHsKLSAgICAgICAgICAgICAgICBTaGFyZWRCdWZmZXJTdGFjazo6U3RhdGlzdGljcyBzdGF0cyA9IGwtPmxjYmxrLT5nZXRTdGF0cygpOwotICAgICAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoIGwtPmxjYmxrLT5kdW1wKCIgICAgICAiKSApOwotICAgICAgICAgICAgICAgIHNwPGNvbnN0IEdyYXBoaWNCdWZmZXI+IGJ1ZjAobC0+Z2V0QnVmZmVyKDApKTsKLSAgICAgICAgICAgICAgICBzcDxjb25zdCBHcmFwaGljQnVmZmVyPiBidWYxKGwtPmdldEJ1ZmZlcigxKSk7Ci0gICAgICAgICAgICAgICAgdWludDMyX3QgdzA9MCwgaDA9MCwgczA9MDsKLSAgICAgICAgICAgICAgICB1aW50MzJfdCB3MT0wLCBoMT0wLCBzMT0wOwotICAgICAgICAgICAgICAgIGlmIChidWYwICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgdzAgPSBidWYwLT5nZXRXaWR0aCgpOwotICAgICAgICAgICAgICAgICAgICBoMCA9IGJ1ZjAtPmdldEhlaWdodCgpOwotICAgICAgICAgICAgICAgICAgICBzMCA9IGJ1ZjAtPmdldFN0cmlkZSgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoYnVmMSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIHcxID0gYnVmMS0+Z2V0V2lkdGgoKTsKLSAgICAgICAgICAgICAgICAgICAgaDEgPSBidWYxLT5nZXRIZWlnaHQoKTsKLSAgICAgICAgICAgICAgICAgICAgczEgPSBidWYxLT5nZXRTdHJpZGUoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc25wcmludGYoYnVmZmVyLCBTSVpFLAotICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJmb3JtYXQ9JTJkLCBbJTN1eCUzdTolM3VdIFslM3V4JTN1OiUzdV0sIgotICAgICAgICAgICAgICAgICAgICAgICAgIiBmcmVlemVMb2NrPSVwLCBkcS1xLXRpbWU9JXUgdXNcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICBsLT5waXhlbEZvcm1hdCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgdzAsIGgwLCBzMCwgdzEsIGgxLCBzMSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGwtPmdldEZyZWV6ZUxvY2soKS5nZXQoKSwgc3RhdHMudG90YWxUaW1lKTsKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGJ1ZmZlcik7Ci0gICAgICAgICAgICAgICAgYnVmZmVyWzBdID0gMDsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvbnN0IHNwPExheWVyQmFzZT4mIGxheWVyKGN1cnJlbnRMYXllcnNbaV0pOworICAgICAgICAgICAgbGF5ZXItPmR1bXAocmVzdWx0LCBidWZmZXIsIFNJWkUpOworICAgICAgICAgICAgY29uc3QgTGF5ZXI6OlN0YXRlJiBzKGxheWVyLT5kcmF3aW5nU3RhdGUoKSk7CiAgICAgICAgICAgICBzLnRyYW5zcGFyZW50UmVnaW9uLmR1bXAocmVzdWx0LCAidHJhbnNwYXJlbnRSZWdpb24iKTsKICAgICAgICAgICAgIGxheWVyLT50cmFuc3BhcmVudFJlZ2lvblNjcmVlbi5kdW1wKHJlc3VsdCwgInRyYW5zcGFyZW50UmVnaW9uU2NyZWVuIik7CiAgICAgICAgICAgICBsYXllci0+dmlzaWJsZVJlZ2lvblNjcmVlbi5kdW1wKHJlc3VsdCwgInZpc2libGVSZWdpb25TY3JlZW4iKTsKICAgICAgICAgfQorCiAgICAgICAgIG1Xb3JtaG9sZVJlZ2lvbi5kdW1wKHJlc3VsdCwgIldvcm1ob2xlUmVnaW9uIik7CiAgICAgICAgIGNvbnN0IERpc3BsYXlIYXJkd2FyZSYgaHcoZ3JhcGhpY1BsYW5lKDApLmRpc3BsYXlIYXJkd2FyZSgpKTsKICAgICAgICAgc25wcmludGYoYnVmZmVyLCBTSVpFLApAQCAtMTYwMSwxOCArMTQ5NiwxOSBAQAogICAgICAgICAgICAgICAgICIgIGxhc3QgdHJhbnNhY3Rpb24gdGltZSAgICAgOiAlZiB1c1xuIiwKICAgICAgICAgICAgICAgICBtTGFzdFN3YXBCdWZmZXJUaW1lLzEwMDAuMCwgbUxhc3RUcmFuc2FjdGlvblRpbWUvMTAwMC4wKTsKICAgICAgICAgcmVzdWx0LmFwcGVuZChidWZmZXIpOworCiAgICAgICAgIGlmIChpblN3YXBCdWZmZXJzRHVyYXRpb24gfHwgIWxvY2tlZCkgewogICAgICAgICAgICAgc25wcmludGYoYnVmZmVyLCBTSVpFLCAiICBlZ2xTd2FwQnVmZmVycyB0aW1lOiAlZiB1c1xuIiwKICAgICAgICAgICAgICAgICAgICAgaW5Td2FwQnVmZmVyc0R1cmF0aW9uLzEwMDAuMCk7CiAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGJ1ZmZlcik7CiAgICAgICAgIH0KKwogICAgICAgICBpZiAoaW5UcmFuc2FjdGlvbkR1cmF0aW9uIHx8ICFsb2NrZWQpIHsKICAgICAgICAgICAgIHNucHJpbnRmKGJ1ZmZlciwgU0laRSwgIiAgdHJhbnNhY3Rpb24gdGltZTogJWYgdXNcbiIsCiAgICAgICAgICAgICAgICAgICAgIGluVHJhbnNhY3Rpb25EdXJhdGlvbi8xMDAwLjApOwogICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChidWZmZXIpOwogICAgICAgICB9Ci0gICAgICAgIHNucHJpbnRmKGJ1ZmZlciwgU0laRSwgIiAgY2xpZW50IGNvdW50OiAlZFxuIiwgbUNsaWVudHNNYXAuc2l6ZSgpKTsKLSAgICAgICAgcmVzdWx0LmFwcGVuZChidWZmZXIpOworCiAgICAgICAgIGNvbnN0IEdyYXBoaWNCdWZmZXJBbGxvY2F0b3ImIGFsbG9jKEdyYXBoaWNCdWZmZXJBbGxvY2F0b3I6OmdldCgpKTsKICAgICAgICAgYWxsb2MuZHVtcChyZXN1bHQpOwogCkBAIC0xNzA1LDEyICsxNjAxLDkxIEBACiB9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotI2lmIDAKLSNwcmFnbWEgbWFyayAtCi0jZW5kaWYKIAotQ2xpZW50OjpDbGllbnQoQ2xpZW50SUQgY2xpZW50SUQsIGNvbnN0IHNwPFN1cmZhY2VGbGluZ2VyPiYgZmxpbmdlcikKLSAgICA6IGN0cmxibGsoMCksIGNpZChjbGllbnRJRCksIG1QaWQoMCksIG1CaXRtYXAoMCksIG1GbGluZ2VyKGZsaW5nZXIpCitzcDxMYXllcj4gU3VyZmFjZUZsaW5nZXI6OmdldExheWVyKGNvbnN0IHNwPElTdXJmYWNlPiYgc3VyKSBjb25zdAoreworICAgIHNwPExheWVyPiByZXN1bHQ7CisgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1TdGF0ZUxvY2spOworICAgIHJlc3VsdCA9IG1MYXllck1hcC52YWx1ZUZvciggc3VyLT5hc0JpbmRlcigpICkucHJvbW90ZSgpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitDbGllbnQ6OkNsaWVudChjb25zdCBzcDxTdXJmYWNlRmxpbmdlcj4mIGZsaW5nZXIpCisgICAgOiBtRmxpbmdlcihmbGluZ2VyKSwgbU5hbWVHZW5lcmF0b3IoMSkKK3sKK30KKworQ2xpZW50Ojp+Q2xpZW50KCkKK3sKKyAgICBjb25zdCBzaXplX3QgY291bnQgPSBtTGF5ZXJzLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpPTAgOyBpPGNvdW50IDsgaSsrKSB7CisgICAgICAgIHNwPExheWVyQmFzZUNsaWVudD4gbGF5ZXIobUxheWVycy52YWx1ZUF0KGkpLnByb21vdGUoKSk7CisgICAgICAgIGlmIChsYXllciAhPSAwKSB7CisgICAgICAgICAgICBtRmxpbmdlci0+cmVtb3ZlTGF5ZXIobGF5ZXIpOworICAgICAgICB9CisgICAgfQorfQorCitzdGF0dXNfdCBDbGllbnQ6OmluaXRDaGVjaygpIGNvbnN0IHsKKyAgICByZXR1cm4gTk9fRVJST1I7Cit9CisKK3NzaXplX3QgQ2xpZW50OjphdHRhY2hMYXllcihjb25zdCBzcDxMYXllckJhc2VDbGllbnQ+JiBsYXllcikKK3sKKyAgICBpbnQzMl90IG5hbWUgPSBhbmRyb2lkX2F0b21pY19pbmMoJm1OYW1lR2VuZXJhdG9yKTsKKyAgICBtTGF5ZXJzLmFkZChuYW1lLCBsYXllcik7CisgICAgcmV0dXJuIG5hbWU7Cit9CisKK3ZvaWQgQ2xpZW50OjpkZXRhY2hMYXllcihjb25zdCBMYXllckJhc2VDbGllbnQqIGxheWVyKQoreworICAgIC8vIHdlIGRvIGEgbGluZWFyIHNlYXJjaCBoZXJlLCBiZWNhdXNlIHRoaXMgZG9lc24ndCBoYXBwZW4gb2Z0ZW4KKyAgICBjb25zdCBzaXplX3QgY291bnQgPSBtTGF5ZXJzLnNpemUoKTsKKyAgICBmb3IgKHNpemVfdCBpPTAgOyBpPGNvdW50IDsgaSsrKSB7CisgICAgICAgIGlmIChtTGF5ZXJzLnZhbHVlQXQoaSkgPT0gbGF5ZXIpIHsKKyAgICAgICAgICAgIG1MYXllcnMucmVtb3ZlSXRlbXNBdChpLCAxKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorfQorc3A8TGF5ZXJCYXNlQ2xpZW50PiBDbGllbnQ6OmdldExheWVyVXNlcihpbnQzMl90IGkpIGNvbnN0IHsKKyAgICBzcDxMYXllckJhc2VDbGllbnQ+IGxiYzsKKyAgICBjb25zdCB3cDxMYXllckJhc2VDbGllbnQ+JiBsYXllcihtTGF5ZXJzLnZhbHVlRm9yKGkpKTsKKyAgICBpZiAobGF5ZXIgIT0gMCkgeworICAgICAgICBsYmMgPSBsYXllci5wcm9tb3RlKCk7CisgICAgICAgIExPR0VfSUYobGJjPT0wLCAiZ2V0TGF5ZXJVc2VyKG5hbWU9JWQpIGlzIGRlYWQiLCBpbnQoaSkpOworICAgIH0KKyAgICByZXR1cm4gbGJjOworfQorCitzcDxJTWVtb3J5SGVhcD4gQ2xpZW50OjpnZXRDb250cm9sQmxvY2soKSBjb25zdCB7CisgICAgcmV0dXJuIDA7Cit9Citzc2l6ZV90IENsaWVudDo6Z2V0VG9rZW5Gb3JTdXJmYWNlKGNvbnN0IHNwPElTdXJmYWNlPiYgc3VyKSBjb25zdCB7CisgICAgcmV0dXJuIC0xOworfQorc3A8SVN1cmZhY2U+IENsaWVudDo6Y3JlYXRlU3VyZmFjZSgKKyAgICAgICAgSVN1cmZhY2VDb21wb3NlckNsaWVudDo6c3VyZmFjZV9kYXRhX3QqIHBhcmFtcywgaW50IHBpZCwKKyAgICAgICAgY29uc3QgU3RyaW5nOCYgbmFtZSwKKyAgICAgICAgRGlzcGxheUlEIGRpc3BsYXksIHVpbnQzMl90IHcsIHVpbnQzMl90IGgsIFBpeGVsRm9ybWF0IGZvcm1hdCwKKyAgICAgICAgdWludDMyX3QgZmxhZ3MpCit7CisgICAgcmV0dXJuIG1GbGluZ2VyLT5jcmVhdGVTdXJmYWNlKHRoaXMsIHBpZCwgbmFtZSwgcGFyYW1zLAorICAgICAgICAgICAgZGlzcGxheSwgdywgaCwgZm9ybWF0LCBmbGFncyk7Cit9CitzdGF0dXNfdCBDbGllbnQ6OmRlc3Ryb3lTdXJmYWNlKFN1cmZhY2VJRCBzaWQpIHsKKyAgICByZXR1cm4gbUZsaW5nZXItPnJlbW92ZVN1cmZhY2UodGhpcywgc2lkKTsKK30KK3N0YXR1c190IENsaWVudDo6c2V0U3RhdGUoaW50MzJfdCBjb3VudCwgY29uc3QgbGF5ZXJfc3RhdGVfdCogc3RhdGVzKSB7CisgICAgcmV0dXJuIG1GbGluZ2VyLT5zZXRDbGllbnRTdGF0ZSh0aGlzLCBjb3VudCwgc3RhdGVzKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1VzZXJDbGllbnQ6OlVzZXJDbGllbnQoY29uc3Qgc3A8U3VyZmFjZUZsaW5nZXI+JiBmbGluZ2VyKQorICAgIDogY3RybGJsaygwKSwgbUJpdG1hcCgwKSwgbUZsaW5nZXIoZmxpbmdlcikKIHsKICAgICBjb25zdCBpbnQgcGdzaXplID0gZ2V0cGFnZXNpemUoKTsKICAgICBjb25zdCBpbnQgY2Jsa3NpemUgPSAoKHNpemVvZihTaGFyZWRDbGllbnQpKyhwZ3NpemUtMSkpJn4ocGdzaXplLTEpKTsKQEAgLTE3MjQsOTcgKzE2OTksOTEgQEAKICAgICB9CiB9CiAKLUNsaWVudDo6fkNsaWVudCgpIHsKK1VzZXJDbGllbnQ6On5Vc2VyQ2xpZW50KCkKK3sKICAgICBpZiAoY3RybGJsaykgewogICAgICAgICBjdHJsYmxrLT5+U2hhcmVkQ2xpZW50KCk7ICAvLyBkZXN0cm95IG91ciBzaGFyZWQtc3RydWN0dXJlLgogICAgIH0KKworICAgIC8qCisgICAgICogV2hlbiBhIFVzZXJDbGllbnQgZGllcywgaXQncyB1bmNsZWFyIHdoYXQgdG8gZG8gZXhhY3RseS4KKyAgICAgKiBXZSBjb3VsZCBnbyBhaGVhZCBhbmQgZGVzdHJveSBhbGwgc3VyZmFjZXMgbGlua2VkIHRvIHRoYXQgY2xpZW50CisgICAgICogaG93ZXZlciwgaXQgd291bGRuJ3QgYmUgZmFpciB0byB0aGUgbWFpbiBDbGllbnQKKyAgICAgKiAodXN1YWxseSB0aGUgdGhlIHdpbmRvdy1tYW5hZ2VyKSwgd2hpY2ggbWlnaHQgd2FudCB0byByZS10YXJnZXQKKyAgICAgKiB0aGUgbGF5ZXIgdG8gYW5vdGhlciBVc2VyQ2xpZW50LgorICAgICAqIEkgdGhpbmsgdGhlIGJlc3QgaXMgdG8gZG8gbm90aGluZywgb3Igbm90IG11Y2g7IGluIG1vc3QgY2FzZXMgdGhlCisgICAgICogV00gaXRzZWxmIHdpbGwgZ28gYWhlYWQgYW5kIGNsZWFuIHRoaW5ncyB1cCB3aGVuIGl0IGRldGVjdHMgYSBjbGllbnQgb2YKKyAgICAgKiBoaXMgaGFzIGRpZWQuCisgICAgICogVGhlIHJlbWFpbmluZyBxdWVzdGlvbiBpcyB3aGF0IHRvIGRpc3BsYXk/IGN1cnJlbnRseSB3ZSBrZWVwCisgICAgICoganVzdCBrZWVwIHRoZSBjdXJyZW50IGJ1ZmZlci4KKyAgICAgKi8KIH0KIAotaW50MzJfdCBDbGllbnQ6OmdlbmVyYXRlSWQoaW50IHBpZCkKLXsKLSAgICBjb25zdCB1aW50MzJfdCBpID0gY2x6KCB+bUJpdG1hcCApOwotICAgIGlmIChpID49IE5VTV9MQVlFUlNfTUFYKSB7Ci0gICAgICAgIHJldHVybiBOT19NRU1PUlk7Ci0gICAgfQotICAgIG1QaWQgPSBwaWQ7Ci0gICAgbUluVXNlLmFkZCh1aW50OF90KGkpKTsKLSAgICBtQml0bWFwIHw9IDE8PCgzMS1pKTsKLSAgICByZXR1cm4gaTsKK3N0YXR1c190IFVzZXJDbGllbnQ6OmluaXRDaGVjaygpIGNvbnN0IHsKKyAgICByZXR1cm4gY3RybGJsayA9PSAwID8gTk9fSU5JVCA6IE5PX0VSUk9SOwogfQogCi1zdGF0dXNfdCBDbGllbnQ6OmJpbmRMYXllcihjb25zdCBzcDxMYXllckJhc2VDbGllbnQ+JiBsYXllciwgaW50MzJfdCBpZCkKK3ZvaWQgVXNlckNsaWVudDo6ZGV0YWNoTGF5ZXIoY29uc3QgTGF5ZXIqIGxheWVyKQogewotICAgIHNzaXplX3QgaWR4ID0gbUluVXNlLmluZGV4T2YoaWQpOwotICAgIGlmIChpZHggPCAwKQotICAgICAgICByZXR1cm4gTkFNRV9OT1RfRk9VTkQ7Ci0gICAgcmV0dXJuIG1MYXllcnMuaW5zZXJ0QXQobGF5ZXIsIGlkeCk7Ci19Ci0KLXZvaWQgQ2xpZW50OjpmcmVlKGludDMyX3QgaWQpCi17Ci0gICAgc3NpemVfdCBpZHggPSBtSW5Vc2UucmVtb3ZlKHVpbnQ4X3QoaWQpKTsKLSAgICBpZiAoaWR4ID49IDApIHsKLSAgICAgICAgbUJpdG1hcCAmPSB+KDE8PCgzMS1pZCkpOwotICAgICAgICBtTGF5ZXJzLnJlbW92ZUl0ZW1zQXQoaWR4KTsKKyAgICBpbnQzMl90IG5hbWUgPSBsYXllci0+Z2V0VG9rZW4oKTsKKyAgICBpZiAobmFtZSA+PSAwKSB7CisgICAgICAgIGludDMyX3QgbWFzayA9IDFMVTw8bmFtZTsKKyAgICAgICAgaWYgKChhbmRyb2lkX2F0b21pY19hbmQofm1hc2ssICZtQml0bWFwKSAmIG1hc2spID09IDApIHsKKyAgICAgICAgICAgIExPR1coInRva2VuICVkIHdhc24ndCBtYXJrZWQgYXMgdXNlZCAlMDh4IiwgbmFtZSwgaW50KG1CaXRtYXApKTsKKyAgICAgICAgfQogICAgIH0KIH0KIAotYm9vbCBDbGllbnQ6OmlzVmFsaWQoaW50MzJfdCBpKSBjb25zdCB7Ci0gICAgcmV0dXJuICh1aW50MzJfdChpKTxOVU1fTEFZRVJTX01BWCkgJiYgKG1CaXRtYXAgJiAoMTw8KDMxLWkpKSk7CitzcDxJTWVtb3J5SGVhcD4gVXNlckNsaWVudDo6Z2V0Q29udHJvbEJsb2NrKCkgY29uc3QgeworICAgIHJldHVybiBtQ2Jsa0hlYXA7CiB9CiAKLXNwPExheWVyQmFzZUNsaWVudD4gQ2xpZW50OjpnZXRMYXllclVzZXIoaW50MzJfdCBpKSBjb25zdCB7Ci0gICAgc3A8TGF5ZXJCYXNlQ2xpZW50PiBsYmM7Ci0gICAgc3NpemVfdCBpZHggPSBtSW5Vc2UuaW5kZXhPZih1aW50OF90KGkpKTsKLSAgICBpZiAoaWR4ID49IDApIHsKLSAgICAgICAgbGJjID0gbUxheWVyc1tpZHhdLnByb21vdGUoKTsKLSAgICAgICAgTE9HRV9JRihsYmM9PTAsICJnZXRMYXllclVzZXIoaT0lZCksIGlkeD0lZCBpcyBkZWFkIiwgaW50KGkpLCBpbnQoaWR4KSk7Ci0gICAgfQotICAgIHJldHVybiBsYmM7Ci19Ci0KLXZvaWQgQ2xpZW50OjpkdW1wKGNvbnN0IGNoYXIqIHdoYXQpCitzc2l6ZV90IFVzZXJDbGllbnQ6OmdldFRva2VuRm9yU3VyZmFjZShjb25zdCBzcDxJU3VyZmFjZT4mIHN1cikgY29uc3QKIHsKKyAgICBpbnQzMl90IG5hbWUgPSBOQU1FX05PVF9GT1VORDsKKyAgICBzcDxMYXllcj4gbGF5ZXIobUZsaW5nZXItPmdldExheWVyKHN1cikpOworICAgIGlmIChsYXllciA9PSAwKSByZXR1cm4gbmFtZTsKKworICAgIC8vIGlmIHRoaXMgbGF5ZXIgYWxyZWFkeSBoYXMgYSB0b2tlbiwganVzdCByZXR1cm4gaXQKKyAgICBuYW1lID0gbGF5ZXItPmdldFRva2VuKCk7CisgICAgaWYgKChuYW1lID49IDApICYmIChsYXllci0+Z2V0Q2xpZW50KCkgPT0gdGhpcykpCisgICAgICAgIHJldHVybiBuYW1lOworCisgICAgbmFtZSA9IDA7CisgICAgZG8geworICAgICAgICBpbnQzMl90IG1hc2sgPSAxTFU8PG5hbWU7CisgICAgICAgIGlmICgoYW5kcm9pZF9hdG9taWNfb3IobWFzaywgJm1CaXRtYXApICYgbWFzaykgPT0gMCkgeworICAgICAgICAgICAgLy8gd2UgZm91bmQgYW5kIGxvY2tlZCB0aGF0IG5hbWUKKyAgICAgICAgICAgIHN0YXR1c190IGVyciA9IGxheWVyLT5zZXRUb2tlbigKKyAgICAgICAgICAgICAgICAgICAgY29uc3RfY2FzdDxVc2VyQ2xpZW50Kj4odGhpcyksIGN0cmxibGssIG5hbWUpOworICAgICAgICAgICAgaWYgKGVyciAhPSBOT19FUlJPUikgeworICAgICAgICAgICAgICAgIC8vIGZyZWUgdGhlIG5hbWUKKyAgICAgICAgICAgICAgICBhbmRyb2lkX2F0b21pY19hbmQofm1hc2ssICZtQml0bWFwKTsKKyAgICAgICAgICAgICAgICBuYW1lID0gZXJyOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCsrbmFtZSA+IDMxKQorICAgICAgICAgICAgbmFtZSA9IE5PX01FTU9SWTsKKyAgICB9IHdoaWxlKG5hbWUgPj0gMCk7CisKKyAgICAvL0xPR0QoImdldFRva2VuRm9yU3VyZmFjZSglcCkgPT4gJWQgKGNsaWVudD0lcCwgYml0bWFwPSUwOGx4KSIsCisgICAgLy8gICAgICAgIHN1ci0+YXNCaW5kZXIoKS5nZXQoKSwgbmFtZSwgdGhpcywgbUJpdG1hcCk7CisgICAgcmV0dXJuIG5hbWU7CiB9CiAKLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotI2lmIDAKLSNwcmFnbWEgbWFyayAtCi0jZW5kaWYKLQotQkNsaWVudDo6QkNsaWVudChTdXJmYWNlRmxpbmdlciAqZmxpbmdlciwgQ2xpZW50SUQgY2lkLCBjb25zdCBzcDxJTWVtb3J5SGVhcD4mIGNibGspCi0gICAgOiBtSWQoY2lkKSwgbUZsaW5nZXIoZmxpbmdlciksIG1DYmxrKGNibGspCi17Ci19Ci0KLUJDbGllbnQ6On5CQ2xpZW50KCkgewotICAgIC8vIGRlc3Ryb3kgYWxsIHJlc291cmNlcyBhdHRhY2hlZCB0byB0aGlzIGNsaWVudAotICAgIG1GbGluZ2VyLT5kZXN0cm95Q29ubmVjdGlvbihtSWQpOwotfQotCi1zcDxJTWVtb3J5SGVhcD4gQkNsaWVudDo6Z2V0Q29udHJvbEJsb2NrKCkgY29uc3QgewotICAgIHJldHVybiBtQ2JsazsKLX0KLQotc3A8SVN1cmZhY2U+IEJDbGllbnQ6OmNyZWF0ZVN1cmZhY2UoCi0gICAgICAgIElTdXJmYWNlRmxpbmdlckNsaWVudDo6c3VyZmFjZV9kYXRhX3QqIHBhcmFtcywgaW50IHBpZCwKK3NwPElTdXJmYWNlPiBVc2VyQ2xpZW50OjpjcmVhdGVTdXJmYWNlKAorICAgICAgICBJU3VyZmFjZUNvbXBvc2VyQ2xpZW50OjpzdXJmYWNlX2RhdGFfdCogcGFyYW1zLCBpbnQgcGlkLAogICAgICAgICBjb25zdCBTdHJpbmc4JiBuYW1lLAogICAgICAgICBEaXNwbGF5SUQgZGlzcGxheSwgdWludDMyX3QgdywgdWludDMyX3QgaCwgUGl4ZWxGb3JtYXQgZm9ybWF0LAotICAgICAgICB1aW50MzJfdCBmbGFncykKLXsKLSAgICByZXR1cm4gbUZsaW5nZXItPmNyZWF0ZVN1cmZhY2UobUlkLCBwaWQsIG5hbWUsIHBhcmFtcywgZGlzcGxheSwgdywgaCwKLSAgICAgICAgICAgIGZvcm1hdCwgZmxhZ3MpOworICAgICAgICB1aW50MzJfdCBmbGFncykgeworICAgIHJldHVybiAwOwogfQotCi1zdGF0dXNfdCBCQ2xpZW50OjpkZXN0cm95U3VyZmFjZShTdXJmYWNlSUQgc2lkKQotewotICAgIHNpZCB8PSAobUlkIDw8IDE2KTsgLy8gYWRkIHRoZSBjbGllbnQtcGFydCB0byBpZAotICAgIHJldHVybiBtRmxpbmdlci0+cmVtb3ZlU3VyZmFjZShzaWQpOworc3RhdHVzX3QgVXNlckNsaWVudDo6ZGVzdHJveVN1cmZhY2UoU3VyZmFjZUlEIHNpZCkgeworICAgIHJldHVybiBJTlZBTElEX09QRVJBVElPTjsKIH0KLQotc3RhdHVzX3QgQkNsaWVudDo6c2V0U3RhdGUoaW50MzJfdCBjb3VudCwgY29uc3QgbGF5ZXJfc3RhdGVfdCogc3RhdGVzKQotewotICAgIHJldHVybiBtRmxpbmdlci0+c2V0Q2xpZW50U3RhdGUobUlkLCBjb3VudCwgc3RhdGVzKTsKK3N0YXR1c190IFVzZXJDbGllbnQ6OnNldFN0YXRlKGludDMyX3QgY291bnQsIGNvbnN0IGxheWVyX3N0YXRlX3QqIHN0YXRlcykgeworICAgIHJldHVybiBJTlZBTElEX09QRVJBVElPTjsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9saWJzL3N1cmZhY2VmbGluZ2VyL1N1cmZhY2VGbGluZ2VyLmggYi9saWJzL3N1cmZhY2VmbGluZ2VyL1N1cmZhY2VGbGluZ2VyLmgKaW5kZXggZDc1ZGMxNS4uMGJmYzE3MCAxMDA2NDQKLS0tIGEvbGlicy9zdXJmYWNlZmxpbmdlci9TdXJmYWNlRmxpbmdlci5oCisrKyBiL2xpYnMvc3VyZmFjZWZsaW5nZXIvU3VyZmFjZUZsaW5nZXIuaApAQCAtMzIsMTEgKzMyLDEwIEBACiAKICNpbmNsdWRlIDx1aS9QaXhlbEZvcm1hdC5oPgogI2luY2x1ZGUgPHN1cmZhY2VmbGluZ2VyL0lTdXJmYWNlQ29tcG9zZXIuaD4KLSNpbmNsdWRlIDxzdXJmYWNlZmxpbmdlci9JU3VyZmFjZUZsaW5nZXJDbGllbnQuaD4KKyNpbmNsdWRlIDxzdXJmYWNlZmxpbmdlci9JU3VyZmFjZUNvbXBvc2VyQ2xpZW50Lmg+CiAKICNpbmNsdWRlICJCYXJyaWVyLmgiCiAjaW5jbHVkZSAiTGF5ZXIuaCIKLSNpbmNsdWRlICJUb2tlbml6ZXIuaCIKIAogI2luY2x1ZGUgIk1lc3NhZ2VRdWV1ZS5oIgogCkBAIC00OCw1NSArNDcsODAgQEAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBjbGFzcyBDbGllbnQ7Ci1jbGFzcyBCQ2xpZW50OwogY2xhc3MgRGlzcGxheUhhcmR3YXJlOwogY2xhc3MgRnJlZXplTG9jazsKIGNsYXNzIExheWVyOworY2xhc3MgTGF5ZXJCbHVyOworY2xhc3MgTGF5ZXJEaW07CiBjbGFzcyBMYXllckJ1ZmZlcjsKIAotdHlwZWRlZiBpbnQzMl90IENsaWVudElEOwotCiAjZGVmaW5lIExJS0VMWSggZXhwICkgICAgICAgKF9fYnVpbHRpbl9leHBlY3QoIChleHApICE9IDAsIHRydWUgICkpCiAjZGVmaW5lIFVOTElLRUxZKCBleHAgKSAgICAgKF9fYnVpbHRpbl9leHBlY3QoIChleHApICE9IDAsIGZhbHNlICkpCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi1jbGFzcyBDbGllbnQgOiBwdWJsaWMgUmVmQmFzZQorY2xhc3MgQ2xpZW50IDogcHVibGljIEJuU3VyZmFjZUNvbXBvc2VyQ2xpZW50CiB7CiBwdWJsaWM6Ci0gICAgICAgICAgICBDbGllbnQoQ2xpZW50SUQgY2lkLCBjb25zdCBzcDxTdXJmYWNlRmxpbmdlcj4mIGZsaW5nZXIpOwotICAgICAgICAgICAgfkNsaWVudCgpOworICAgICAgICBDbGllbnQoY29uc3Qgc3A8U3VyZmFjZUZsaW5nZXI+JiBmbGluZ2VyKTsKKyAgICAgICAgfkNsaWVudCgpOwogCi0gICAgICAgICAgICBpbnQzMl90ICAgICAgICAgICAgICAgICBnZW5lcmF0ZUlkKGludCBwaWQpOwotICAgICAgICAgICAgdm9pZCAgICAgICAgICAgICAgICAgICAgZnJlZShpbnQzMl90IGlkKTsKLSAgICAgICAgICAgIHN0YXR1c190ICAgICAgICAgICAgICAgIGJpbmRMYXllcihjb25zdCBzcDxMYXllckJhc2VDbGllbnQ+JiBsYXllciwgaW50MzJfdCBpZCk7CisgICAgc3RhdHVzX3QgaW5pdENoZWNrKCkgY29uc3Q7CiAKLSAgICBpbmxpbmUgIGJvb2wgICAgICAgICAgICAgICAgICAgIGlzVmFsaWQoaW50MzJfdCBpKSBjb25zdDsKLSAgICBzcDxMYXllckJhc2VDbGllbnQ+ICAgICAgICAgICAgIGdldExheWVyVXNlcihpbnQzMl90IGkpIGNvbnN0OwotICAgIHZvaWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVtcChjb25zdCBjaGFyKiB3aGF0KTsKLSAgICAKLSAgICBjb25zdCBWZWN0b3I8IHdwPExheWVyQmFzZUNsaWVudD4gPiYgZ2V0TGF5ZXJzKCkgY29uc3QgeyAKLSAgICAgICAgcmV0dXJuIG1MYXllcnM7IAotICAgIH0KLSAgICAKLSAgICBjb25zdCBzcDxJTWVtb3J5SGVhcD4mIGdldENvbnRyb2xCbG9ja01lbW9yeSgpIGNvbnN0IHsKLSAgICAgICAgcmV0dXJuIG1DYmxrSGVhcDsgCi0gICAgfQotICAgIAotICAgIC8vIHBvaW50ZXIgdG8gdGhpcyBjbGllbnQncyBjb250cm9sIGJsb2NrCi0gICAgU2hhcmVkQ2xpZW50KiAgICAgICAgICAgY3RybGJsazsKLSAgICBDbGllbnRJRCAgICAgICAgICAgICAgICBjaWQ7CisgICAgLy8gcHJvdGVjdGVkIGJ5IFN1cmZhY2VGbGluZ2VyOjptU3RhdGVMb2NrCisgICAgc3NpemVfdCBhdHRhY2hMYXllcihjb25zdCBzcDxMYXllckJhc2VDbGllbnQ+JiBsYXllcik7CisgICAgdm9pZCBkZXRhY2hMYXllcihjb25zdCBMYXllckJhc2VDbGllbnQqIGxheWVyKTsKKyAgICBzcDxMYXllckJhc2VDbGllbnQ+IGdldExheWVyVXNlcihpbnQzMl90IGkpIGNvbnN0OwogCi0gICAgCiBwcml2YXRlOgotICAgIGludCBnZXRDbGllbnRQaWQoKSBjb25zdCB7IHJldHVybiBtUGlkOyB9Ci0gICAgICAgIAotICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVBpZDsKLSAgICB1aW50MzJfdCAgICAgICAgICAgICAgICAgICAgICAgIG1CaXRtYXA7Ci0gICAgU29ydGVkVmVjdG9yPHVpbnQ4X3Q+ICAgICAgICAgICBtSW5Vc2U7Ci0gICAgVmVjdG9yPCB3cDxMYXllckJhc2VDbGllbnQ+ID4gICBtTGF5ZXJzOwotICAgIHNwPElNZW1vcnlIZWFwPiAgICAgICAgICAgICAgICAgbUNibGtIZWFwOwotICAgIHNwPFN1cmZhY2VGbGluZ2VyPiAgICAgICAgICAgICAgbUZsaW5nZXI7CisKKyAgICAvLyBJU3VyZmFjZUNvbXBvc2VyQ2xpZW50IGludGVyZmFjZQorICAgIHZpcnR1YWwgc3A8SU1lbW9yeUhlYXA+IGdldENvbnRyb2xCbG9jaygpIGNvbnN0OworICAgIHZpcnR1YWwgc3NpemVfdCBnZXRUb2tlbkZvclN1cmZhY2UoY29uc3Qgc3A8SVN1cmZhY2U+JiBzdXIpIGNvbnN0OworICAgIHZpcnR1YWwgc3A8SVN1cmZhY2U+IGNyZWF0ZVN1cmZhY2UoCisgICAgICAgICAgICBzdXJmYWNlX2RhdGFfdCogcGFyYW1zLCBpbnQgcGlkLCBjb25zdCBTdHJpbmc4JiBuYW1lLAorICAgICAgICAgICAgRGlzcGxheUlEIGRpc3BsYXksIHVpbnQzMl90IHcsIHVpbnQzMl90IGgsUGl4ZWxGb3JtYXQgZm9ybWF0LAorICAgICAgICAgICAgdWludDMyX3QgZmxhZ3MpOworICAgIHZpcnR1YWwgc3RhdHVzX3QgZGVzdHJveVN1cmZhY2UoU3VyZmFjZUlEIHN1cmZhY2VJZCk7CisgICAgdmlydHVhbCBzdGF0dXNfdCBzZXRTdGF0ZShpbnQzMl90IGNvdW50LCBjb25zdCBsYXllcl9zdGF0ZV90KiBzdGF0ZXMpOworCisgICAgRGVmYXVsdEtleWVkVmVjdG9yPCBzaXplX3QsIHdwPExheWVyQmFzZUNsaWVudD4gPiBtTGF5ZXJzOworICAgIHNwPFN1cmZhY2VGbGluZ2VyPiBtRmxpbmdlcjsKKyAgICBpbnQzMl90IG1OYW1lR2VuZXJhdG9yOworfTsKKworY2xhc3MgVXNlckNsaWVudCA6IHB1YmxpYyBCblN1cmZhY2VDb21wb3NlckNsaWVudAoreworcHVibGljOgorICAgIC8vIHBvaW50ZXIgdG8gdGhpcyBjbGllbnQncyBjb250cm9sIGJsb2NrCisgICAgU2hhcmVkQ2xpZW50KiBjdHJsYmxrOworCitwdWJsaWM6CisgICAgICAgIFVzZXJDbGllbnQoY29uc3Qgc3A8U3VyZmFjZUZsaW5nZXI+JiBmbGluZ2VyKTsKKyAgICAgICAgflVzZXJDbGllbnQoKTsKKworICAgIHN0YXR1c190IGluaXRDaGVjaygpIGNvbnN0OworCisgICAgLy8gcHJvdGVjdGVkIGJ5IFN1cmZhY2VGbGluZ2VyOjptU3RhdGVMb2NrCisgICAgdm9pZCBkZXRhY2hMYXllcihjb25zdCBMYXllciogbGF5ZXIpOworCitwcml2YXRlOgorCisgICAgLy8gSVN1cmZhY2VDb21wb3NlckNsaWVudCBpbnRlcmZhY2UKKyAgICB2aXJ0dWFsIHNwPElNZW1vcnlIZWFwPiBnZXRDb250cm9sQmxvY2soKSBjb25zdDsKKyAgICB2aXJ0dWFsIHNzaXplX3QgZ2V0VG9rZW5Gb3JTdXJmYWNlKGNvbnN0IHNwPElTdXJmYWNlPiYgc3VyKSBjb25zdDsKKyAgICB2aXJ0dWFsIHNwPElTdXJmYWNlPiBjcmVhdGVTdXJmYWNlKAorICAgICAgICAgICAgc3VyZmFjZV9kYXRhX3QqIHBhcmFtcywgaW50IHBpZCwgY29uc3QgU3RyaW5nOCYgbmFtZSwKKyAgICAgICAgICAgIERpc3BsYXlJRCBkaXNwbGF5LCB1aW50MzJfdCB3LCB1aW50MzJfdCBoLFBpeGVsRm9ybWF0IGZvcm1hdCwKKyAgICAgICAgICAgIHVpbnQzMl90IGZsYWdzKTsKKyAgICB2aXJ0dWFsIHN0YXR1c190IGRlc3Ryb3lTdXJmYWNlKFN1cmZhY2VJRCBzdXJmYWNlSWQpOworICAgIHZpcnR1YWwgc3RhdHVzX3Qgc2V0U3RhdGUoaW50MzJfdCBjb3VudCwgY29uc3QgbGF5ZXJfc3RhdGVfdCogc3RhdGVzKTsKKworICAgIC8vIGF0b21pYy1vcHMKKyAgICBtdXRhYmxlIHZvbGF0aWxlIGludDMyX3QgbUJpdG1hcDsKKworICAgIHNwPElNZW1vcnlIZWFwPiBtQ2Jsa0hlYXA7CisgICAgc3A8U3VyZmFjZUZsaW5nZXI+IG1GbGluZ2VyOwogfTsKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xNTksNyArMTgzLDggQEAKICAgICB2aXJ0dWFsIHN0YXR1c190IGR1bXAoaW50IGZkLCBjb25zdCBWZWN0b3I8U3RyaW5nMTY+JiBhcmdzKTsKIAogICAgIC8vIElTdXJmYWNlQ29tcG9zZXIgaW50ZXJmYWNlCi0gICAgdmlydHVhbCBzcDxJU3VyZmFjZUZsaW5nZXJDbGllbnQ+ICAgY3JlYXRlQ29ubmVjdGlvbigpOworICAgIHZpcnR1YWwgc3A8SVN1cmZhY2VDb21wb3NlckNsaWVudD4gIGNyZWF0ZUNvbm5lY3Rpb24oKTsKKyAgICB2aXJ0dWFsIHNwPElTdXJmYWNlQ29tcG9zZXJDbGllbnQ+ICBjcmVhdGVDbGllbnRDb25uZWN0aW9uKCk7CiAgICAgdmlydHVhbCBzcDxJTWVtb3J5SGVhcD4gICAgICAgICAgICAgZ2V0Q2JsaygpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgIGJvb3RGaW5pc2hlZCgpOwogICAgIHZpcnR1YWwgdm9pZCAgICAgICAgICAgICAgICAgICAgICAgIG9wZW5HbG9iYWxUcmFuc2FjdGlvbigpOwpAQCAtMTc0LDEzICsxOTksMTQgQEAKIAogICAgICAgICAgICAgb3ZlcmxheV9jb250cm9sX2RldmljZV90KiBnZXRPdmVybGF5RW5naW5lKCkgY29uc3Q7CiAKLSAgICAgICAgICAgIAogICAgIHN0YXR1c190IHJlbW92ZUxheWVyKGNvbnN0IHNwPExheWVyQmFzZT4mIGxheWVyKTsKICAgICBzdGF0dXNfdCBhZGRMYXllcihjb25zdCBzcDxMYXllckJhc2U+JiBsYXllcik7CiAgICAgc3RhdHVzX3QgaW52YWxpZGF0ZUxheWVyVmlzaWJpbGl0eShjb25zdCBzcDxMYXllckJhc2U+JiBsYXllcik7Ci0gICAgCisKKyAgICBzcDxMYXllcj4gZ2V0TGF5ZXIoY29uc3Qgc3A8SVN1cmZhY2U+JiBzdXIpIGNvbnN0OworCiBwcml2YXRlOgotICAgIGZyaWVuZCBjbGFzcyBCQ2xpZW50OworICAgIGZyaWVuZCBjbGFzcyBDbGllbnQ7CiAgICAgZnJpZW5kIGNsYXNzIExheWVyQmFzZTsKICAgICBmcmllbmQgY2xhc3MgTGF5ZXJCdWZmZXI7CiAgICAgZnJpZW5kIGNsYXNzIExheWVyQmFzZUNsaWVudDsKQEAgLTE4OSwzMSArMjE1LDMzIEBACiAgICAgZnJpZW5kIGNsYXNzIExheWVyQmx1cjsKICAgICBmcmllbmQgY2xhc3MgTGF5ZXJEaW07CiAKLSAgICBzcDxJU3VyZmFjZT4gY3JlYXRlU3VyZmFjZShDbGllbnRJRCBjbGllbnQsIGludCBwaWQsIGNvbnN0IFN0cmluZzgmIG5hbWUsCi0gICAgICAgICAgICBJU3VyZmFjZUZsaW5nZXJDbGllbnQ6OnN1cmZhY2VfZGF0YV90KiBwYXJhbXMsCisgICAgc3A8SVN1cmZhY2U+IGNyZWF0ZVN1cmZhY2UoY29uc3Qgc3A8Q2xpZW50PiYgY2xpZW50LAorICAgICAgICAgICAgaW50IHBpZCwgY29uc3QgU3RyaW5nOCYgbmFtZSwKKyAgICAgICAgICAgIElTdXJmYWNlQ29tcG9zZXJDbGllbnQ6OnN1cmZhY2VfZGF0YV90KiBwYXJhbXMsCiAgICAgICAgICAgICBEaXNwbGF5SUQgZGlzcGxheSwgdWludDMyX3QgdywgdWludDMyX3QgaCwgUGl4ZWxGb3JtYXQgZm9ybWF0LAogICAgICAgICAgICAgdWludDMyX3QgZmxhZ3MpOwogCi0gICAgc3A8TGF5ZXJCYXNlQ2xpZW50PiBjcmVhdGVOb3JtYWxTdXJmYWNlTG9ja2VkKAorICAgIHNwPExheWVyPiBjcmVhdGVOb3JtYWxTdXJmYWNlKAogICAgICAgICAgICAgY29uc3Qgc3A8Q2xpZW50PiYgY2xpZW50LCBEaXNwbGF5SUQgZGlzcGxheSwKLSAgICAgICAgICAgIGludDMyX3QgaWQsIHVpbnQzMl90IHcsIHVpbnQzMl90IGgsIHVpbnQzMl90IGZsYWdzLAorICAgICAgICAgICAgdWludDMyX3QgdywgdWludDMyX3QgaCwgdWludDMyX3QgZmxhZ3MsCiAgICAgICAgICAgICBQaXhlbEZvcm1hdCYgZm9ybWF0KTsKIAotICAgIHNwPExheWVyQmFzZUNsaWVudD4gY3JlYXRlQmx1clN1cmZhY2VMb2NrZWQoCisgICAgc3A8TGF5ZXJCbHVyPiBjcmVhdGVCbHVyU3VyZmFjZSgKICAgICAgICAgICAgIGNvbnN0IHNwPENsaWVudD4mIGNsaWVudCwgRGlzcGxheUlEIGRpc3BsYXksCi0gICAgICAgICAgICBpbnQzMl90IGlkLCB1aW50MzJfdCB3LCB1aW50MzJfdCBoLCB1aW50MzJfdCBmbGFncyk7CisgICAgICAgICAgICB1aW50MzJfdCB3LCB1aW50MzJfdCBoLCB1aW50MzJfdCBmbGFncyk7CiAKLSAgICBzcDxMYXllckJhc2VDbGllbnQ+IGNyZWF0ZURpbVN1cmZhY2VMb2NrZWQoCisgICAgc3A8TGF5ZXJEaW0+IGNyZWF0ZURpbVN1cmZhY2UoCiAgICAgICAgICAgICBjb25zdCBzcDxDbGllbnQ+JiBjbGllbnQsIERpc3BsYXlJRCBkaXNwbGF5LAotICAgICAgICAgICAgaW50MzJfdCBpZCwgdWludDMyX3QgdywgdWludDMyX3QgaCwgdWludDMyX3QgZmxhZ3MpOworICAgICAgICAgICAgdWludDMyX3QgdywgdWludDMyX3QgaCwgdWludDMyX3QgZmxhZ3MpOwogCi0gICAgc3A8TGF5ZXJCYXNlQ2xpZW50PiBjcmVhdGVQdXNoQnVmZmVyc1N1cmZhY2VMb2NrZWQoCisgICAgc3A8TGF5ZXJCdWZmZXI+IGNyZWF0ZVB1c2hCdWZmZXJzU3VyZmFjZSgKICAgICAgICAgICAgIGNvbnN0IHNwPENsaWVudD4mIGNsaWVudCwgRGlzcGxheUlEIGRpc3BsYXksCi0gICAgICAgICAgICBpbnQzMl90IGlkLCB1aW50MzJfdCB3LCB1aW50MzJfdCBoLCB1aW50MzJfdCBmbGFncyk7CisgICAgICAgICAgICB1aW50MzJfdCB3LCB1aW50MzJfdCBoLCB1aW50MzJfdCBmbGFncyk7CiAKLSAgICBzdGF0dXNfdCByZW1vdmVTdXJmYWNlKFN1cmZhY2VJRCBzdXJmYWNlX2lkKTsKKyAgICBzdGF0dXNfdCByZW1vdmVTdXJmYWNlKGNvbnN0IHNwPENsaWVudD4mIGNsaWVudCwgU3VyZmFjZUlEIHNpZCk7CiAgICAgc3RhdHVzX3QgZGVzdHJveVN1cmZhY2UoY29uc3Qgc3A8TGF5ZXJCYXNlQ2xpZW50PiYgbGF5ZXIpOwotICAgIHN0YXR1c190IHNldENsaWVudFN0YXRlKENsaWVudElEIGNpZCwgaW50MzJfdCBjb3VudCwgY29uc3QgbGF5ZXJfc3RhdGVfdCogc3RhdGVzKTsKKyAgICBzdGF0dXNfdCBzZXRDbGllbnRTdGF0ZShjb25zdCBzcDxDbGllbnQ+JiBjbGllbnQsCisgICAgICAgICAgICBpbnQzMl90IGNvdW50LCBjb25zdCBsYXllcl9zdGF0ZV90KiBzdGF0ZXMpOwogCiAKICAgICBjbGFzcyBMYXllclZlY3RvciB7CkBAIC0yNTYsOCArMjg0LDYgQEAKIHB1YmxpYzogICAgIC8vIGhhY2sgdG8gd29yayBhcm91bmQgZ2NjIDQuMC4zIGJ1ZwogICAgICAgICAgICAgdm9pZCAgICAgICAgc2lnbmFsRXZlbnQoKTsKIHByaXZhdGU6Ci0gICAgICAgICAgICB2b2lkICAgICAgICBzaWduYWxEZWxheWVkRXZlbnQobnNlY3NfdCBkZWxheSk7Ci0KICAgICAgICAgICAgIHZvaWQgICAgICAgIGhhbmRsZUNvbnNvbGVFdmVudHMoKTsKICAgICAgICAgICAgIHZvaWQgICAgICAgIGhhbmRsZVRyYW5zYWN0aW9uKHVpbnQzMl90IHRyYW5zYWN0aW9uRmxhZ3MpOwogICAgICAgICAgICAgdm9pZCAgICAgICAgaGFuZGxlVHJhbnNhY3Rpb25Mb2NrZWQoCkBAIC0yNzgsMTUgKzMwNCwxNCBAQAogICAgICAgICAgICAgdm9pZCAgICAgICAgdW5sb2NrQ2xpZW50cygpOwogCiAKLSAgICAgICAgICAgIHZvaWQgICAgICAgIGRlc3Ryb3lDb25uZWN0aW9uKENsaWVudElEIGNpZCk7Ci0gICAgICAgICAgICBzcDxMYXllckJhc2VDbGllbnQ+IGdldExheWVyVXNlcl9sKFN1cmZhY2VJRCBpbmRleCkgY29uc3Q7CisgICAgICAgICAgICBzc2l6ZV90ICAgICBhZGRDbGllbnRMYXllcihjb25zdCBzcDxDbGllbnQ+JiBjbGllbnQsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwPExheWVyQmFzZUNsaWVudD4mIGxiYyk7CiAgICAgICAgICAgICBzdGF0dXNfdCAgICBhZGRMYXllcl9sKGNvbnN0IHNwPExheWVyQmFzZT4mIGxheWVyKTsKICAgICAgICAgICAgIHN0YXR1c190ICAgIHJlbW92ZUxheWVyX2woY29uc3Qgc3A8TGF5ZXJCYXNlPiYgbGF5ZXIpOwogICAgICAgICAgICAgc3RhdHVzX3QgICAgcHVyZ2F0b3JpemVMYXllcl9sKGNvbnN0IHNwPExheWVyQmFzZT4mIGxheWVyKTsKLSAgICAgICAgICAgIHZvaWQgICAgICAgIGZyZWVfcmVzb3VyY2VzX2woKTsKIAogICAgICAgICAgICAgdWludDMyX3QgICAgZ2V0VHJhbnNhY3Rpb25GbGFncyh1aW50MzJfdCBmbGFncyk7Ci0gICAgICAgICAgICB1aW50MzJfdCAgICBzZXRUcmFuc2FjdGlvbkZsYWdzKHVpbnQzMl90IGZsYWdzLCBuc2Vjc190IGRlbGF5ID0gMCk7CisgICAgICAgICAgICB1aW50MzJfdCAgICBzZXRUcmFuc2FjdGlvbkZsYWdzKHVpbnQzMl90IGZsYWdzKTsKICAgICAgICAgICAgIHZvaWQgICAgICAgIGNvbW1pdFRyYW5zYWN0aW9uKCk7CiAKIApAQCAtMzEwLDkgKzMzNSwxMyBAQAogICAgICAgICAgICAKIAogICAgIG11dGFibGUgICAgIE1lc3NhZ2VRdWV1ZSAgICBtRXZlbnRRdWV1ZTsKLSAgICAKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAKKworICAgIHN0YXR1c190IHBvc3RNZXNzYWdlQXN5bmMoY29uc3Qgc3A8TWVzc2FnZUJhc2U+JiBtc2csCisgICAgICAgICAgICBuc2Vjc190IHJlbHRpbWU9MCwgdWludDMyX3QgZmxhZ3MgPSAwKTsKKworICAgIHN0YXR1c190IHBvc3RNZXNzYWdlU3luYyhjb25zdCBzcDxNZXNzYWdlQmFzZT4mIG1zZywKKyAgICAgICAgICAgIG5zZWNzX3QgcmVsdGltZT0wLCB1aW50MzJfdCBmbGFncyA9IDApOworCiAgICAgICAgICAgICAgICAgLy8gYWNjZXNzIG11c3QgYmUgcHJvdGVjdGVkIGJ5IG1TdGF0ZUxvY2sKICAgICBtdXRhYmxlICAgICBNdXRleCAgICAgICAgICAgICAgICAgICBtU3RhdGVMb2NrOwogICAgICAgICAgICAgICAgIFN0YXRlICAgICAgICAgICAgICAgICAgIG1DdXJyZW50U3RhdGU7CkBAIC0zMjEsMTQgKzM1MCwxMSBAQAogICAgIHZvbGF0aWxlICAgIGludDMyX3QgICAgICAgICAgICAgICAgIG1UcmFuc2FjdGlvbkNvdW50OwogICAgICAgICAgICAgICAgIENvbmRpdGlvbiAgICAgICAgICAgICAgIG1UcmFuc2FjdGlvbkNWOwogICAgICAgICAgICAgICAgIGJvb2wgICAgICAgICAgICAgICAgICAgIG1SZXNpemVUcmFuc2F0aW9uUGVuZGluZzsKLSAgICAgICAgICAgICAgICAKKwogICAgICAgICAgICAgICAgIC8vIHByb3RlY3RlZCBieSBtU3RhdGVMb2NrIChidXQgd2UgY291bGQgdXNlIGFub3RoZXIgbG9jaykKLSAgICAgICAgICAgICAgICBUb2tlbml6ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVRva2VuczsKLSAgICAgICAgICAgICAgICBEZWZhdWx0S2V5ZWRWZWN0b3I8Q2xpZW50SUQsIHNwPENsaWVudD4gPiAgIG1DbGllbnRzTWFwOwotICAgICAgICAgICAgICAgIERlZmF1bHRLZXllZFZlY3RvcjxTdXJmYWNlSUQsIHNwPExheWVyQmFzZUNsaWVudD4gPiAgIG1MYXllck1hcDsKLSAgICAgICAgICAgICAgICBHcmFwaGljUGxhbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUdyYXBoaWNQbGFuZXNbMV07Ci0gICAgICAgICAgICAgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1MYXllcnNSZW1vdmVkOwotICAgICAgICAgICAgICAgIFZlY3Rvcjwgc3A8Q2xpZW50PiA+ICAgICAgICAgICAgICAgICAgICBtRGlzY29ubmVjdGVkQ2xpZW50czsKKyAgICAgICAgICAgICAgICBHcmFwaGljUGxhbmUgICAgICAgICAgICAgICAgbUdyYXBoaWNQbGFuZXNbMV07CisgICAgICAgICAgICAgICAgYm9vbCAgICAgICAgICAgICAgICAgICAgICAgIG1MYXllcnNSZW1vdmVkOworICAgICAgICAgICAgICAgIERlZmF1bHRLZXllZFZlY3Rvcjwgd3A8SUJpbmRlcj4sIHdwPExheWVyPiA+IG1MYXllck1hcDsKIAogICAgICAgICAgICAgICAgIC8vIGNvbnN0YW50IG1lbWJlcnMgKG5vIHN5bmNocm9uaXphdGlvbiBuZWVkZWQgZm9yIGFjY2VzcykKICAgICAgICAgICAgICAgICBzcDxJTWVtb3J5SGVhcD4gICAgICAgICAgICAgbVNlcnZlckhlYXA7CkBAIC0zODksMzIgKzQxNSw2IEBACiB9OwogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotY2xhc3MgQkNsaWVudCA6IHB1YmxpYyBCblN1cmZhY2VGbGluZ2VyQ2xpZW50Ci17Ci1wdWJsaWM6Ci0gICAgQkNsaWVudChTdXJmYWNlRmxpbmdlciAqZmxpbmdlciwgQ2xpZW50SUQgY2lkLAotICAgICAgICAgICAgY29uc3Qgc3A8SU1lbW9yeUhlYXA+JiBjYmxrKTsKLSAgICB+QkNsaWVudCgpOwotCi0gICAgLy8gSVN1cmZhY2VGbGluZ2VyQ2xpZW50IGludGVyZmFjZQotICAgIHZpcnR1YWwgc3A8SU1lbW9yeUhlYXA+IGdldENvbnRyb2xCbG9jaygpIGNvbnN0OwotCi0gICAgdmlydHVhbCBzcDxJU3VyZmFjZT4gY3JlYXRlU3VyZmFjZSgKLSAgICAgICAgICAgIHN1cmZhY2VfZGF0YV90KiBwYXJhbXMsIGludCBwaWQsIGNvbnN0IFN0cmluZzgmIG5hbWUsCi0gICAgICAgICAgICBEaXNwbGF5SUQgZGlzcGxheSwgdWludDMyX3QgdywgdWludDMyX3QgaCxQaXhlbEZvcm1hdCBmb3JtYXQsCi0gICAgICAgICAgICB1aW50MzJfdCBmbGFncyk7Ci0KLSAgICB2aXJ0dWFsIHN0YXR1c190IGRlc3Ryb3lTdXJmYWNlKFN1cmZhY2VJRCBzdXJmYWNlSWQpOwotICAgIHZpcnR1YWwgc3RhdHVzX3Qgc2V0U3RhdGUoaW50MzJfdCBjb3VudCwgY29uc3QgbGF5ZXJfc3RhdGVfdCogc3RhdGVzKTsKLQotcHJpdmF0ZToKLSAgICBDbGllbnRJRCAgICAgICAgICAgIG1JZDsKLSAgICBTdXJmYWNlRmxpbmdlciogICAgIG1GbGluZ2VyOwotICAgIHNwPElNZW1vcnlIZWFwPiAgICAgbUNibGs7Ci19OwotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIH07IC8vIG5hbWVzcGFjZSBhbmRyb2lkCiAKICNlbmRpZiAvLyBBTkRST0lEX1NVUkZBQ0VfRkxJTkdFUl9ICmRpZmYgLS1naXQgYS9saWJzL3N1cmZhY2VmbGluZ2VyL1RleHR1cmVNYW5hZ2VyLmNwcCBiL2xpYnMvc3VyZmFjZWZsaW5nZXIvVGV4dHVyZU1hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1MjYwMzIKLS0tIC9kZXYvbnVsbAorKysgYi9saWJzL3N1cmZhY2VmbGluZ2VyL1RleHR1cmVNYW5hZ2VyLmNwcApAQCAtMCwwICsxLDM0NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKworI2luY2x1ZGUgPHV0aWxzL0Vycm9ycy5oPgorI2luY2x1ZGUgPHV0aWxzL0xvZy5oPgorCisjaW5jbHVkZSA8dWkvR3JhcGhpY0J1ZmZlci5oPgorCisjaW5jbHVkZSA8R0xFUy9nbC5oPgorI2luY2x1ZGUgPEdMRVMvZ2xleHQuaD4KKworI2luY2x1ZGUgPGhhcmR3YXJlL2hhcmR3YXJlLmg+CisKKyNpbmNsdWRlICJjbHouaCIKKyNpbmNsdWRlICJEaXNwbGF5SGFyZHdhcmUvRGlzcGxheUhhcmR3YXJlLmgiCisjaW5jbHVkZSAiR0xFeHRlbnNpb25zLmgiCisjaW5jbHVkZSAiVGV4dHVyZU1hbmFnZXIuaCIKKworbmFtZXNwYWNlIGFuZHJvaWQgeworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGV4dHVyZU1hbmFnZXI6OlRleHR1cmVNYW5hZ2VyKCkKKyAgICA6IG1HTEV4dGVuc2lvbnMoR0xFeHRlbnNpb25zOjpnZXRJbnN0YW5jZSgpKQoreworfQorCitHTGVudW0gVGV4dHVyZU1hbmFnZXI6OmdldFRleHR1cmVUYXJnZXQoY29uc3QgSW1hZ2UqIGltYWdlKSB7CisjaWYgZGVmaW5lZChHTF9PRVNfdGV4dHVyZV9leHRlcm5hbCkKKyAgICBzd2l0Y2ggKGltYWdlLT50YXJnZXQpIHsKKyAgICAgICAgY2FzZSBUZXh0dXJlOjpURVhUVVJFX0VYVEVSTkFMOgorICAgICAgICAgICAgcmV0dXJuIEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTOworICAgIH0KKyNlbmRpZgorICAgIHJldHVybiBHTF9URVhUVVJFXzJEOworfQorCitzdGF0dXNfdCBUZXh0dXJlTWFuYWdlcjo6aW5pdFRleHR1cmUoVGV4dHVyZSogdGV4dHVyZSkKK3sKKyAgICBpZiAodGV4dHVyZS0+bmFtZSAhPSAtMVVMKQorICAgICAgICByZXR1cm4gSU5WQUxJRF9PUEVSQVRJT047CisKKyAgICBHTHVpbnQgdGV4dHVyZU5hbWUgPSAtMTsKKyAgICBnbEdlblRleHR1cmVzKDEsICZ0ZXh0dXJlTmFtZSk7CisgICAgdGV4dHVyZS0+bmFtZSA9IHRleHR1cmVOYW1lOworICAgIHRleHR1cmUtPndpZHRoID0gMDsKKyAgICB0ZXh0dXJlLT5oZWlnaHQgPSAwOworCisgICAgY29uc3QgR0xlbnVtIHRhcmdldCA9IEdMX1RFWFRVUkVfMkQ7CisgICAgZ2xCaW5kVGV4dHVyZSh0YXJnZXQsIHRleHR1cmVOYW1lKTsKKyAgICBnbFRleFBhcmFtZXRlcngodGFyZ2V0LCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJ4KHRhcmdldCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOworICAgIGdsVGV4UGFyYW1ldGVyeCh0YXJnZXQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgZ2xUZXhQYXJhbWV0ZXJ4KHRhcmdldCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKKworICAgIHJldHVybiBOT19FUlJPUjsKK30KKworc3RhdHVzX3QgVGV4dHVyZU1hbmFnZXI6OmluaXRUZXh0dXJlKEltYWdlKiBwSW1hZ2UsIGludDMyX3QgZm9ybWF0KQoreworICAgIGlmIChwSW1hZ2UtPm5hbWUgIT0gLTFVTCkKKyAgICAgICAgcmV0dXJuIElOVkFMSURfT1BFUkFUSU9OOworCisgICAgR0x1aW50IHRleHR1cmVOYW1lID0gLTE7CisgICAgZ2xHZW5UZXh0dXJlcygxLCAmdGV4dHVyZU5hbWUpOworICAgIHBJbWFnZS0+bmFtZSA9IHRleHR1cmVOYW1lOworICAgIHBJbWFnZS0+d2lkdGggPSAwOworICAgIHBJbWFnZS0+aGVpZ2h0ID0gMDsKKworICAgIEdMZW51bSB0YXJnZXQgPSBHTF9URVhUVVJFXzJEOworI2lmIGRlZmluZWQoR0xfT0VTX3RleHR1cmVfZXh0ZXJuYWwpCisgICAgaWYgKEdMRXh0ZW5zaW9uczo6Z2V0SW5zdGFuY2UoKS5oYXZlVGV4dHVyZUV4dGVybmFsKCkpIHsKKyAgICAgICAgaWYgKGZvcm1hdCAmJiBpc1l1dkZvcm1hdChmb3JtYXQpKSB7CisgICAgICAgICAgICB0YXJnZXQgPSBHTF9URVhUVVJFX0VYVEVSTkFMX09FUzsKKyAgICAgICAgICAgIHBJbWFnZS0+dGFyZ2V0ID0gVGV4dHVyZTo6VEVYVFVSRV9FWFRFUk5BTDsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCisgICAgZ2xCaW5kVGV4dHVyZSh0YXJnZXQsIHRleHR1cmVOYW1lKTsKKyAgICBnbFRleFBhcmFtZXRlcngodGFyZ2V0LCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgZ2xUZXhQYXJhbWV0ZXJ4KHRhcmdldCwgR0xfVEVYVFVSRV9XUkFQX1QsIEdMX0NMQU1QX1RPX0VER0UpOworICAgIGdsVGV4UGFyYW1ldGVyeCh0YXJnZXQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgZ2xUZXhQYXJhbWV0ZXJ4KHRhcmdldCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9ORUFSRVNUKTsKKworICAgIHJldHVybiBOT19FUlJPUjsKK30KKworYm9vbCBUZXh0dXJlTWFuYWdlcjo6aXNTdXBwb3J0ZWRZdXZGb3JtYXQoaW50IGZvcm1hdCkKK3sKKyAgICBzd2l0Y2ggKGZvcm1hdCkgeworICAgIGNhc2UgSEFMX1BJWEVMX0ZPUk1BVF9ZVjEyOgorICAgIGNhc2UgSEFMX1BJWEVMX0ZPUk1BVF9ZVjE2OgorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIFRleHR1cmVNYW5hZ2VyOjppc1l1dkZvcm1hdChpbnQgZm9ybWF0KQoreworICAgIHN3aXRjaCAoZm9ybWF0KSB7CisgICAgLy8gc3VwcG9ydGVkIFlVViBmb3JtYXRzCisgICAgY2FzZSBIQUxfUElYRUxfRk9STUFUX1lWMTI6CisgICAgY2FzZSBIQUxfUElYRUxfRk9STUFUX1lWMTY6CisgICAgLy8gTGVnYWN5L2RlcHJlY2F0ZWQgWVVWIGZvcm1hdHMKKyAgICBjYXNlIEhBTF9QSVhFTF9GT1JNQVRfWUNiQ3JfNDIyX1NQOgorICAgIGNhc2UgSEFMX1BJWEVMX0ZPUk1BVF9ZQ3JDYl80MjBfU1A6CisgICAgY2FzZSBIQUxfUElYRUxfRk9STUFUX1lDYkNyXzQyMl9JOgorICAgIGNhc2UgSEFMX1BJWEVMX0ZPUk1BVF9ZQ2JDcl80MjBfU1BfVElMRUQ6CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8vIEFueSBPRU0gZm9ybWF0IG5lZWRzIHRvIGJlIGNvbnNpZGVyZWQKKyAgICBpZiAoZm9ybWF0Pj0weDEwMCAmJiBmb3JtYXQ8PTB4MUZGKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdHVzX3QgVGV4dHVyZU1hbmFnZXI6OmluaXRFZ2xJbWFnZShJbWFnZSogcEltYWdlLAorICAgICAgICBFR0xEaXNwbGF5IGRweSwgY29uc3Qgc3A8R3JhcGhpY0J1ZmZlcj4mIGJ1ZmZlcikKK3sKKyAgICBzdGF0dXNfdCBlcnIgPSBOT19FUlJPUjsKKyAgICBpZiAoIXBJbWFnZS0+ZGlydHkpIHJldHVybiBlcnI7CisKKyAgICAvLyBmcmVlIHRoZSBwcmV2aW91cyBpbWFnZQorICAgIGlmIChwSW1hZ2UtPmltYWdlICE9IEVHTF9OT19JTUFHRV9LSFIpIHsKKyAgICAgICAgZWdsRGVzdHJveUltYWdlS0hSKGRweSwgcEltYWdlLT5pbWFnZSk7CisgICAgICAgIHBJbWFnZS0+aW1hZ2UgPSBFR0xfTk9fSU1BR0VfS0hSOworICAgIH0KKworICAgIC8vIGNvbnN0cnVjdCBhbiBFR0xfTkFUSVZFX0JVRkZFUl9BTkRST0lECisgICAgYW5kcm9pZF9uYXRpdmVfYnVmZmVyX3QqIGNsaWVudEJ1ZiA9IGJ1ZmZlci0+Z2V0TmF0aXZlQnVmZmVyKCk7CisKKyAgICAvLyBjcmVhdGUgdGhlIG5ldyBFR0xJbWFnZUtIUgorICAgIGNvbnN0IEVHTGludCBhdHRyc1tdID0geworICAgICAgICAgICAgRUdMX0lNQUdFX1BSRVNFUlZFRF9LSFIsICAgIEVHTF9UUlVFLAorICAgICAgICAgICAgRUdMX05PTkUsICAgICAgICAgICAgICAgICAgIEVHTF9OT05FCisgICAgfTsKKyAgICBwSW1hZ2UtPmltYWdlID0gZWdsQ3JlYXRlSW1hZ2VLSFIoCisgICAgICAgICAgICBkcHksIEVHTF9OT19DT05URVhULCBFR0xfTkFUSVZFX0JVRkZFUl9BTkRST0lELAorICAgICAgICAgICAgKEVHTENsaWVudEJ1ZmZlciljbGllbnRCdWYsIGF0dHJzKTsKKworICAgIGlmIChwSW1hZ2UtPmltYWdlICE9IEVHTF9OT19JTUFHRV9LSFIpIHsKKyAgICAgICAgaWYgKHBJbWFnZS0+bmFtZSA9PSAtMVVMKSB7CisgICAgICAgICAgICBpbml0VGV4dHVyZShwSW1hZ2UsIGJ1ZmZlci0+Zm9ybWF0KTsKKyAgICAgICAgfQorICAgICAgICBjb25zdCBHTGVudW0gdGFyZ2V0ID0gZ2V0VGV4dHVyZVRhcmdldChwSW1hZ2UpOworICAgICAgICBnbEJpbmRUZXh0dXJlKHRhcmdldCwgcEltYWdlLT5uYW1lKTsKKyAgICAgICAgZ2xFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyh0YXJnZXQsIChHTGVnbEltYWdlT0VTKXBJbWFnZS0+aW1hZ2UpOworICAgICAgICBHTGludCBlcnJvciA9IGdsR2V0RXJyb3IoKTsKKyAgICAgICAgaWYgKGVycm9yICE9IEdMX05PX0VSUk9SKSB7CisgICAgICAgICAgICBMT0dFKCJnbEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTKCVwKSBmYWlsZWQgZXJyPTB4JTA0eCIsCisgICAgICAgICAgICAgICAgICAgIHBJbWFnZS0+aW1hZ2UsIGVycm9yKTsKKyAgICAgICAgICAgIGVyciA9IElOVkFMSURfT1BFUkFUSU9OOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gRXZlcnl0aGluZyB3ZW50IG9rYXkhCisgICAgICAgICAgICBwSW1hZ2UtPmRpcnR5ICA9IGZhbHNlOworICAgICAgICAgICAgcEltYWdlLT53aWR0aCAgPSBjbGllbnRCdWYtPndpZHRoOworICAgICAgICAgICAgcEltYWdlLT5oZWlnaHQgPSBjbGllbnRCdWYtPmhlaWdodDsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIExPR0UoImVnbENyZWF0ZUltYWdlS0hSKCkgZmFpbGVkLiBlcnI9MHglNHgiLCBlZ2xHZXRFcnJvcigpKTsKKyAgICAgICAgZXJyID0gSU5WQUxJRF9PUEVSQVRJT047CisgICAgfQorICAgIHJldHVybiBlcnI7Cit9CisKK3N0YXR1c190IFRleHR1cmVNYW5hZ2VyOjpsb2FkVGV4dHVyZShUZXh0dXJlKiB0ZXh0dXJlLAorICAgICAgICBjb25zdCBSZWdpb24mIGRpcnR5LCBjb25zdCBHR0xTdXJmYWNlJiB0KQoreworICAgIGlmICh0ZXh0dXJlLT5uYW1lID09IC0xVUwpIHsKKyAgICAgICAgc3RhdHVzX3QgZXJyID0gaW5pdFRleHR1cmUodGV4dHVyZSk7CisgICAgICAgIExPR0VfSUYoZXJyLCAibG9hZFRleHR1cmUgZmFpbGVkIGluIGluaXRUZXh0dXJlICglcykiLCBzdHJlcnJvcihlcnIpKTsKKyAgICAgICAgcmV0dXJuIGVycjsKKyAgICB9CisKKyAgICBpZiAodGV4dHVyZS0+dGFyZ2V0ICE9IEdMX1RFWFRVUkVfMkQpCisgICAgICAgIHJldHVybiBJTlZBTElEX09QRVJBVElPTjsKKworICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVSRV8yRCwgdGV4dHVyZS0+bmFtZSk7CisKKyAgICAvKgorICAgICAqIEluIE9wZW5HTCBFUyB3ZSBjYW4ndCBzcGVjaWZ5IGEgc3RyaWRlIHdpdGggZ2xUZXhJbWFnZTJEIChob3dldmVyLAorICAgICAqIEdMX1VOUEFDS19BTElHTk1FTlQgaXMgYSBsaW1pdGVkIGZvcm0gb2Ygc3RyaWRlKS4KKyAgICAgKiBTbyBpZiB0aGUgc3RyaWRlIGhlcmUgaXNuJ3QgcmVwcmVzZW50YWJsZSB3aXRoIEdMX1VOUEFDS19BTElHTk1FTlQsIHdlCisgICAgICogbmVlZCB0byBkbyBzb21ldGhpbmcgcmVhc29uYWJsZSAoaGVyZSBjcmVhdGluZyBhIGJpZ2dlciB0ZXh0dXJlKS4KKyAgICAgKgorICAgICAqIGV4dHJhIHBpeGVscyA9ICgoKHN0cmlkZSAtIHdpZHRoKSAqIHBpeGVsc2l6ZSkgLyBHTF9VTlBBQ0tfQUxJR05NRU5UKTsKKyAgICAgKgorICAgICAqIFRoaXMgc2l0dWF0aW9uIGRvZXNuJ3QgaGFwcGVuIG9mdGVuLCBidXQgc29tZSBoL3cgaGF2ZSBhIGxpbWl0YXRpb24KKyAgICAgKiBmb3IgdGhlaXIgZnJhbWVidWZmZXIgKGVnOiBtdXN0IGJlIG11bHRpcGxlIG9mIDggcGl4ZWxzKSwgYW5kCisgICAgICogd2UgbmVlZCB0byB0YWtlIHRoYXQgaW50byBhY2NvdW50IHdoZW4gdXNpbmcgdGhlc2UgYnVmZmVycyBhcworICAgICAqIHRleHR1cmVzLgorICAgICAqCisgICAgICogVGhpcyBzaG91bGQgbmV2ZXIgYmUgYSBwcm9ibGVtIHdpdGggUE9UIHRleHR1cmVzCisgICAgICovCisKKyAgICBpbnQgdW5wYWNrID0gX19idWlsdGluX2N0eih0LnN0cmlkZSAqIGJ5dGVzUGVyUGl4ZWwodC5mb3JtYXQpKTsKKyAgICB1bnBhY2sgPSAxIDw8ICgodW5wYWNrID4gMykgPyAzIDogdW5wYWNrKTsKKyAgICBnbFBpeGVsU3RvcmVpKEdMX1VOUEFDS19BTElHTk1FTlQsIHVucGFjayk7CisKKyAgICAvKgorICAgICAqIHJvdW5kIHRvIFBPVCBpZiBuZWVkZWQKKyAgICAgKi8KKyAgICBpZiAoIW1HTEV4dGVuc2lvbnMuaGF2ZU5wb3QoKSkgeworICAgICAgICB0ZXh0dXJlLT5OUE9UQWRqdXN0ID0gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAodGV4dHVyZS0+TlBPVEFkanVzdCkgeworICAgICAgICAvLyBmaW5kIHRoZSBzbWFsbGVzdCBwb3dlci1vZi10d28gdGhhdCB3aWxsIGFjY29tbW9kYXRlIG91ciBzdXJmYWNlCisgICAgICAgIHRleHR1cmUtPnBvdFdpZHRoICA9IDEgPDwgKDMxIC0gY2x6KHQud2lkdGgpKTsKKyAgICAgICAgdGV4dHVyZS0+cG90SGVpZ2h0ID0gMSA8PCAoMzEgLSBjbHoodC5oZWlnaHQpKTsKKyAgICAgICAgaWYgKHRleHR1cmUtPnBvdFdpZHRoICA8IHQud2lkdGgpICB0ZXh0dXJlLT5wb3RXaWR0aCAgPDw9IDE7CisgICAgICAgIGlmICh0ZXh0dXJlLT5wb3RIZWlnaHQgPCB0LmhlaWdodCkgdGV4dHVyZS0+cG90SGVpZ2h0IDw8PSAxOworICAgICAgICB0ZXh0dXJlLT53U2NhbGUgPSBmbG9hdCh0LndpZHRoKSAgLyB0ZXh0dXJlLT5wb3RXaWR0aDsKKyAgICAgICAgdGV4dHVyZS0+aFNjYWxlID0gZmxvYXQodC5oZWlnaHQpIC8gdGV4dHVyZS0+cG90SGVpZ2h0OworICAgIH0gZWxzZSB7CisgICAgICAgIHRleHR1cmUtPnBvdFdpZHRoICA9IHQud2lkdGg7CisgICAgICAgIHRleHR1cmUtPnBvdEhlaWdodCA9IHQuaGVpZ2h0OworICAgIH0KKworICAgIFJlY3QgYm91bmRzKGRpcnR5LmJvdW5kcygpKTsKKyAgICBHTHZvaWQqIGRhdGEgPSAwOworICAgIGlmICh0ZXh0dXJlLT53aWR0aCAhPSB0LndpZHRoIHx8IHRleHR1cmUtPmhlaWdodCAhPSB0LmhlaWdodCkgeworICAgICAgICB0ZXh0dXJlLT53aWR0aCAgPSB0LndpZHRoOworICAgICAgICB0ZXh0dXJlLT5oZWlnaHQgPSB0LmhlaWdodDsKKworICAgICAgICAvLyB0ZXh0dXJlIHNpemUgY2hhbmdlZCwgd2UgbmVlZCB0byBjcmVhdGUgYSBuZXcgb25lCisgICAgICAgIGJvdW5kcy5zZXQoUmVjdCh0LndpZHRoLCB0LmhlaWdodCkpOworICAgICAgICBpZiAodC53aWR0aCAgPT0gdGV4dHVyZS0+cG90V2lkdGggJiYKKyAgICAgICAgICAgIHQuaGVpZ2h0ID09IHRleHR1cmUtPnBvdEhlaWdodCkgeworICAgICAgICAgICAgLy8gd2UgY2FuIGRvIGl0IG9uZSBwYXNzCisgICAgICAgICAgICBkYXRhID0gdC5kYXRhOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHQuZm9ybWF0ID09IEhBTF9QSVhFTF9GT1JNQVRfUkdCXzU2NSkgeworICAgICAgICAgICAgZ2xUZXhJbWFnZTJEKEdMX1RFWFRVUkVfMkQsIDAsCisgICAgICAgICAgICAgICAgICAgIEdMX1JHQiwgdGV4dHVyZS0+cG90V2lkdGgsIHRleHR1cmUtPnBvdEhlaWdodCwgMCwKKyAgICAgICAgICAgICAgICAgICAgR0xfUkdCLCBHTF9VTlNJR05FRF9TSE9SVF81XzZfNSwgZGF0YSk7CisgICAgICAgIH0gZWxzZSBpZiAodC5mb3JtYXQgPT0gSEFMX1BJWEVMX0ZPUk1BVF9SR0JBXzQ0NDQpIHsKKyAgICAgICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLAorICAgICAgICAgICAgICAgICAgICBHTF9SR0JBLCB0ZXh0dXJlLT5wb3RXaWR0aCwgdGV4dHVyZS0+cG90SGVpZ2h0LCAwLAorICAgICAgICAgICAgICAgICAgICBHTF9SR0JBLCBHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80LCBkYXRhKTsKKyAgICAgICAgfSBlbHNlIGlmICh0LmZvcm1hdCA9PSBIQUxfUElYRUxfRk9STUFUX1JHQkFfODg4OCB8fAorICAgICAgICAgICAgICAgICAgIHQuZm9ybWF0ID09IEhBTF9QSVhFTF9GT1JNQVRfUkdCWF84ODg4KSB7CisgICAgICAgICAgICBnbFRleEltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwKKyAgICAgICAgICAgICAgICAgICAgR0xfUkdCQSwgdGV4dHVyZS0+cG90V2lkdGgsIHRleHR1cmUtPnBvdEhlaWdodCwgMCwKKyAgICAgICAgICAgICAgICAgICAgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgZGF0YSk7CisgICAgICAgIH0gZWxzZSBpZiAoaXNTdXBwb3J0ZWRZdXZGb3JtYXQodC5mb3JtYXQpKSB7CisgICAgICAgICAgICAvLyBqdXN0IHNob3cgdGhlIFkgcGxhbmUgb2YgWVVWIGJ1ZmZlcnMKKyAgICAgICAgICAgIGdsVGV4SW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLAorICAgICAgICAgICAgICAgICAgICBHTF9MVU1JTkFOQ0UsIHRleHR1cmUtPnBvdFdpZHRoLCB0ZXh0dXJlLT5wb3RIZWlnaHQsIDAsCisgICAgICAgICAgICAgICAgICAgIEdMX0xVTUlOQU5DRSwgR0xfVU5TSUdORURfQllURSwgZGF0YSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBvb3BzLCB3ZSBkb24ndCBoYW5kbGUgdGhpcyBmb3JtYXQhCisgICAgICAgICAgICBMT0dFKCJ0ZXh0dXJlPSVkLCB1c2luZyBmb3JtYXQgJWQsIHdoaWNoIGlzIG5vdCAiCisgICAgICAgICAgICAgICAgICJzdXBwb3J0ZWQgYnkgdGhlIEdMIiwgdGV4dHVyZS0+bmFtZSwgdC5mb3JtYXQpOworICAgICAgICB9CisgICAgfQorICAgIGlmICghZGF0YSkgeworICAgICAgICBpZiAodC5mb3JtYXQgPT0gSEFMX1BJWEVMX0ZPUk1BVF9SR0JfNTY1KSB7CisgICAgICAgICAgICBnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwKKyAgICAgICAgICAgICAgICAgICAgMCwgYm91bmRzLnRvcCwgdC53aWR0aCwgYm91bmRzLmhlaWdodCgpLAorICAgICAgICAgICAgICAgICAgICBHTF9SR0IsIEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81LAorICAgICAgICAgICAgICAgICAgICB0LmRhdGEgKyBib3VuZHMudG9wKnQuc3RyaWRlKjIpOworICAgICAgICB9IGVsc2UgaWYgKHQuZm9ybWF0ID09IEhBTF9QSVhFTF9GT1JNQVRfUkdCQV80NDQ0KSB7CisgICAgICAgICAgICBnbFRleFN1YkltYWdlMkQoR0xfVEVYVFVSRV8yRCwgMCwKKyAgICAgICAgICAgICAgICAgICAgMCwgYm91bmRzLnRvcCwgdC53aWR0aCwgYm91bmRzLmhlaWdodCgpLAorICAgICAgICAgICAgICAgICAgICBHTF9SR0JBLCBHTF9VTlNJR05FRF9TSE9SVF80XzRfNF80LAorICAgICAgICAgICAgICAgICAgICB0LmRhdGEgKyBib3VuZHMudG9wKnQuc3RyaWRlKjIpOworICAgICAgICB9IGVsc2UgaWYgKHQuZm9ybWF0ID09IEhBTF9QSVhFTF9GT1JNQVRfUkdCQV84ODg4IHx8CisgICAgICAgICAgICAgICAgICAgdC5mb3JtYXQgPT0gSEFMX1BJWEVMX0ZPUk1BVF9SR0JYXzg4ODgpIHsKKyAgICAgICAgICAgIGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLAorICAgICAgICAgICAgICAgICAgICAwLCBib3VuZHMudG9wLCB0LndpZHRoLCBib3VuZHMuaGVpZ2h0KCksCisgICAgICAgICAgICAgICAgICAgIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCisgICAgICAgICAgICAgICAgICAgIHQuZGF0YSArIGJvdW5kcy50b3AqdC5zdHJpZGUqNCk7CisgICAgICAgIH0gZWxzZSBpZiAoaXNTdXBwb3J0ZWRZdXZGb3JtYXQodC5mb3JtYXQpKSB7CisgICAgICAgICAgICAvLyBqdXN0IHNob3cgdGhlIFkgcGxhbmUgb2YgWVVWIGJ1ZmZlcnMKKyAgICAgICAgICAgIGdsVGV4U3ViSW1hZ2UyRChHTF9URVhUVVJFXzJELCAwLAorICAgICAgICAgICAgICAgICAgICAwLCBib3VuZHMudG9wLCB0LndpZHRoLCBib3VuZHMuaGVpZ2h0KCksCisgICAgICAgICAgICAgICAgICAgIEdMX0xVTUlOQU5DRSwgR0xfVU5TSUdORURfQllURSwKKyAgICAgICAgICAgICAgICAgICAgdC5kYXRhICsgYm91bmRzLnRvcCp0LnN0cmlkZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIE5PX0VSUk9SOworfQorCit2b2lkIFRleHR1cmVNYW5hZ2VyOjphY3RpdmF0ZVRleHR1cmUoY29uc3QgVGV4dHVyZSYgdGV4dHVyZSwgYm9vbCBmaWx0ZXIpCit7CisgICAgY29uc3QgR0xlbnVtIHRhcmdldCA9IGdldFRleHR1cmVUYXJnZXQoJnRleHR1cmUpOworICAgIGlmICh0YXJnZXQgPT0gR0xfVEVYVFVSRV8yRCkgeworICAgICAgICBnbEJpbmRUZXh0dXJlKEdMX1RFWFRVUkVfMkQsIHRleHR1cmUubmFtZSk7CisgICAgICAgIGdsRW5hYmxlKEdMX1RFWFRVUkVfMkQpOworI2lmIGRlZmluZWQoR0xfT0VTX3RleHR1cmVfZXh0ZXJuYWwpCisgICAgICAgIGlmIChHTEV4dGVuc2lvbnM6OmdldEluc3RhbmNlKCkuaGF2ZVRleHR1cmVFeHRlcm5hbCgpKSB7CisgICAgICAgICAgICBnbERpc2FibGUoR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFX0VYVEVSTkFMX09FUywgdGV4dHVyZS5uYW1lKTsKKyAgICAgICAgZ2xFbmFibGUoR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMpOworICAgICAgICBnbERpc2FibGUoR0xfVEVYVFVSRV8yRCk7CisjZW5kaWYKKyAgICB9CisKKyAgICBpZiAoZmlsdGVyKSB7CisgICAgICAgIGdsVGV4UGFyYW1ldGVyeCh0YXJnZXQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKKyAgICAgICAgZ2xUZXhQYXJhbWV0ZXJ4KHRhcmdldCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVIpOworICAgIH0gZWxzZSB7CisgICAgICAgIGdsVGV4UGFyYW1ldGVyeCh0YXJnZXQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgICAgIGdsVGV4UGFyYW1ldGVyeCh0YXJnZXQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTkVBUkVTVCk7CisgICAgfQorfQorCit2b2lkIFRleHR1cmVNYW5hZ2VyOjpkZWFjdGl2YXRlVGV4dHVyZXMoKQoreworICAgIGdsRGlzYWJsZShHTF9URVhUVVJFXzJEKTsKKyNpZiBkZWZpbmVkKEdMX09FU190ZXh0dXJlX2V4dGVybmFsKQorICAgIGlmIChHTEV4dGVuc2lvbnM6OmdldEluc3RhbmNlKCkuaGF2ZVRleHR1cmVFeHRlcm5hbCgpKSB7CisgICAgICAgIGdsRGlzYWJsZShHTF9URVhUVVJFX0VYVEVSTkFMX09FUyk7CisgICAgfQorI2VuZGlmCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit9OyAvLyBuYW1lc3BhY2UgYW5kcm9pZApkaWZmIC0tZ2l0IGEvbGlicy9zdXJmYWNlZmxpbmdlci9UZXh0dXJlTWFuYWdlci5oIGIvbGlicy9zdXJmYWNlZmxpbmdlci9UZXh0dXJlTWFuYWdlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3YzE0ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9saWJzL3N1cmZhY2VmbGluZ2VyL1RleHR1cmVNYW5hZ2VyLmgKQEAgLTAsMCArMSw5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgQU5EUk9JRF9URVhUVVJFX01BTkFHRVJfSAorI2RlZmluZSBBTkRST0lEX1RFWFRVUkVfTUFOQUdFUl9ICisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKworI2luY2x1ZGUgPEVHTC9lZ2wuaD4KKyNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+CisjaW5jbHVkZSA8R0xFUy9nbC5oPgorCisjaW5jbHVkZSA8dWkvUmVnaW9uLmg+CisKKyNpbmNsdWRlIDxwaXhlbGZsaW5nZXIvcGl4ZWxmbGluZ2VyLmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NsYXNzIEdMRXh0ZW5zaW9uczsKK2NsYXNzIEdyYXBoaWNCdWZmZXI7CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdHJ1Y3QgSW1hZ2UgeworICAgIGVudW0geyBURVhUVVJFXzJEPTAsIFRFWFRVUkVfRVhURVJOQUw9MSB9OworICAgIEltYWdlKCkgOiBuYW1lKC0xVSksIGltYWdlKEVHTF9OT19JTUFHRV9LSFIpLCB3aWR0aCgwKSwgaGVpZ2h0KDApLAorICAgICAgICB0cmFuc2Zvcm0oMCksIGRpcnR5KDEpLCB0YXJnZXQoVEVYVFVSRV8yRCkgeyB9CisgICAgR0x1aW50ICAgICAgICBuYW1lOworICAgIEVHTEltYWdlS0hSICAgaW1hZ2U7CisgICAgR0x1aW50ICAgICAgICB3aWR0aDsKKyAgICBHTHVpbnQgICAgICAgIGhlaWdodDsKKyAgICB1aW50MzJfdCAgICAgIHRyYW5zZm9ybTsKKyAgICB1bnNpZ25lZCAgICAgIGRpcnR5ICAgICA6IDE7CisgICAgdW5zaWduZWQgICAgICB0YXJnZXQgICAgOiAxOworfTsKKworc3RydWN0IFRleHR1cmUgOiBwdWJsaWMgSW1hZ2UgeworICAgIFRleHR1cmUoKSA6IEltYWdlKCksIE5QT1RBZGp1c3QoMCkgeyB9CisgICAgR0x1aW50ICAgICAgcG90V2lkdGg7CisgICAgR0x1aW50ICAgICAgcG90SGVpZ2h0OworICAgIEdMZmxvYXQgICAgIHdTY2FsZTsKKyAgICBHTGZsb2F0ICAgICBoU2NhbGU7CisgICAgdW5zaWduZWQgICAgTlBPVEFkanVzdCAgOiAxOworfTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NsYXNzIFRleHR1cmVNYW5hZ2VyIHsKKyAgICBjb25zdCBHTEV4dGVuc2lvbnMmIG1HTEV4dGVuc2lvbnM7CisgICAgc3RhdGljIHN0YXR1c190IGluaXRUZXh0dXJlKEltYWdlKiB0ZXh0dXJlLCBpbnQzMl90IGZvcm1hdCk7CisgICAgc3RhdGljIHN0YXR1c190IGluaXRUZXh0dXJlKFRleHR1cmUqIHRleHR1cmUpOworICAgIHN0YXRpYyBib29sIGlzU3VwcG9ydGVkWXV2Rm9ybWF0KGludCBmb3JtYXQpOworICAgIHN0YXRpYyBib29sIGlzWXV2Rm9ybWF0KGludCBmb3JtYXQpOworICAgIHN0YXRpYyBHTGVudW0gZ2V0VGV4dHVyZVRhcmdldChjb25zdCBJbWFnZSogcEltYWdlKTsKK3B1YmxpYzoKKworICAgIFRleHR1cmVNYW5hZ2VyKCk7CisKKyAgICAvLyBsb2FkIGJpdG1hcCBkYXRhIGludG8gdGhlIGFjdGl2ZSBidWZmZXIKKyAgICBzdGF0dXNfdCBsb2FkVGV4dHVyZShUZXh0dXJlKiB0ZXh0dXJlLAorICAgICAgICAgICAgY29uc3QgUmVnaW9uJiBkaXJ0eSwgY29uc3QgR0dMU3VyZmFjZSYgdCk7CisKKyAgICAvLyBtYWtlIGFjdGl2ZSBidWZmZXIgYW4gRUdMSW1hZ2UgaWYgbmVlZGVkCisgICAgc3RhdHVzX3QgaW5pdEVnbEltYWdlKEltYWdlKiB0ZXh0dXJlLAorICAgICAgICAgICAgRUdMRGlzcGxheSBkcHksIGNvbnN0IHNwPEdyYXBoaWNCdWZmZXI+JiBidWZmZXIpOworCisgICAgLy8gYWN0aXZhdGUgYSB0ZXh0dXJlCisgICAgc3RhdGljIHZvaWQgYWN0aXZhdGVUZXh0dXJlKGNvbnN0IFRleHR1cmUmIHRleHR1cmUsIGJvb2wgZmlsdGVyKTsKKworICAgIC8vIGRlYWN0aXZhdGUgYSB0ZXh0dXJlCisgICAgc3RhdGljIHZvaWQgZGVhY3RpdmF0ZVRleHR1cmVzKCk7Cit9OworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworfTsgLy8gbmFtZXNwYWNlIGFuZHJvaWQKKworI2VuZGlmIC8vIEFORFJPSURfVEVYVFVSRV9NQU5BR0VSX0gKZGlmZiAtLWdpdCBhL2xpYnMvc3VyZmFjZWZsaW5nZXIvVG9rZW5pemVyLmNwcCBiL2xpYnMvc3VyZmFjZWZsaW5nZXIvVG9rZW5pemVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmUzYTIzOS4uMDAwMDAwMAotLS0gYS9saWJzL3N1cmZhY2VmbGluZ2VyL1Rva2VuaXplci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLSNpbmNsdWRlIDxzdGRpby5oPgotCi0jaW5jbHVkZSAiVG9rZW5pemVyLmgiCi0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotbmFtZXNwYWNlIGFuZHJvaWQgewotCi1BTkRST0lEX0JBU0lDX1RZUEVTX1RSQUlUUyhUb2tlbml6ZXI6OnJ1bl90KQotCi1Ub2tlbml6ZXI6OlRva2VuaXplcigpCi17Ci19Ci0KLVRva2VuaXplcjo6VG9rZW5pemVyKGNvbnN0IFRva2VuaXplciYgb3RoZXIpCi0gICAgOiBtUmFuZ2VzKG90aGVyLm1SYW5nZXMpCi17Ci19Ci0KLVRva2VuaXplcjo6flRva2VuaXplcigpCi17Ci19Ci0KLXVpbnQzMl90IFRva2VuaXplcjo6YWNxdWlyZSgpCi17Ci0gICAgaWYgKCFtUmFuZ2VzLnNpemUoKSB8fCBtUmFuZ2VzWzBdLmZpcnN0KSB7Ci0gICAgICAgIF9pbnNlcnRUb2tlbkF0KDAsMCk7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICAKLSAgICAvLyBqdXN0IGV4dGVuZCB0aGUgZmlyc3QgcnVuCi0gICAgY29uc3QgcnVuX3QmIHJ1biA9IG1SYW5nZXNbMF07Ci0gICAgdWludDMyX3QgdG9rZW4gPSBydW4uZmlyc3QgKyBydW4ubGVuZ3RoOwotICAgIF9pbnNlcnRUb2tlbkF0KHRva2VuLCAxKTsKLSAgICByZXR1cm4gdG9rZW47Ci19Ci0KLWJvb2wgVG9rZW5pemVyOjppc0FjcXVpcmVkKHVpbnQzMl90IHRva2VuKSBjb25zdAotewotICAgIHJldHVybiAoX2luZGV4T3JkZXJPZih0b2tlbikgPj0gMCk7Ci19Ci0KLXN0YXR1c190IFRva2VuaXplcjo6cmVzZXJ2ZSh1aW50MzJfdCB0b2tlbikKLXsKLSAgICBzaXplX3QgbzsKLSAgICBjb25zdCBzc2l6ZV90IGkgPSBfaW5kZXhPcmRlck9mKHRva2VuLCAmbyk7Ci0gICAgaWYgKGkgPj0gMCkgewotICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOyAvLyB0aGlzIHRva2VuIGlzIGFscmVhZHkgdGFrZW4KLSAgICB9Ci0gICAgc3NpemVfdCBlcnIgPSBfaW5zZXJ0VG9rZW5BdCh0b2tlbiwgbyk7Ci0gICAgcmV0dXJuIChlcnI8MCkgPyBlcnIgOiBzdGF0dXNfdChOT19FUlJPUik7Ci19Ci0KLXN0YXR1c190IFRva2VuaXplcjo6cmVsZWFzZSh1aW50MzJfdCB0b2tlbikKLXsKLSAgICBjb25zdCBzc2l6ZV90IGkgPSBfaW5kZXhPcmRlck9mKHRva2VuKTsKLSAgICBpZiAoaSA+PSAwKSB7Ci0gICAgICAgIGNvbnN0IHJ1bl90JiBydW4gPSBtUmFuZ2VzW2ldOwotICAgICAgICBpZiAoKHRva2VuID49IHJ1bi5maXJzdCkgJiYgKHRva2VuIDwgcnVuLmZpcnN0K3J1bi5sZW5ndGgpKSB7Ci0gICAgICAgICAgICAvLyB0b2tlbiBpbiB0aGlzIHJhbmdlLCB3ZSBuZWVkIHRvIHNwbGl0Ci0gICAgICAgICAgICBydW5fdCYgcnVuID0gbVJhbmdlcy5lZGl0SXRlbUF0KGkpOwotICAgICAgICAgICAgaWYgKCh0b2tlbiA9PSBydW4uZmlyc3QpIHx8ICh0b2tlbiA9PSBydW4uZmlyc3QrcnVuLmxlbmd0aC0xKSkgewotICAgICAgICAgICAgICAgIGlmICh0b2tlbiA9PSBydW4uZmlyc3QpIHsKLSAgICAgICAgICAgICAgICAgICAgcnVuLmZpcnN0ICs9IDE7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJ1bi5sZW5ndGggLT0gMTsKLSAgICAgICAgICAgICAgICBpZiAocnVuLmxlbmd0aCA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFhYWDogc2hvdWxkIHdlIHN5c3RlbWF0aWNhbGx5IHJlbW92ZSBhIHJ1biB0aGF0J3MgZW1wdHk/Ci0gICAgICAgICAgICAgICAgICAgIG1SYW5nZXMucmVtb3ZlSXRlbXNBdChpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIC8vIHNwbGl0IHRoZSBydW4KLSAgICAgICAgICAgICAgICBydW5fdCBuZXdfcnVuOwotICAgICAgICAgICAgICAgIG5ld19ydW4uZmlyc3QgPSB0b2tlbisxOwotICAgICAgICAgICAgICAgIG5ld19ydW4ubGVuZ3RoID0gcnVuLmZpcnN0K3J1bi5sZW5ndGggLSBuZXdfcnVuLmZpcnN0OwotICAgICAgICAgICAgICAgIHJ1bi5sZW5ndGggPSB0b2tlbiAtIHJ1bi5maXJzdDsKLSAgICAgICAgICAgICAgICBtUmFuZ2VzLmluc2VydEF0KG5ld19ydW4sIGkrMSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gTk9fRVJST1I7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIE5BTUVfTk9UX0ZPVU5EOwotfQotCi1zc2l6ZV90IFRva2VuaXplcjo6X2luZGV4T3JkZXJPZih1aW50MzJfdCB0b2tlbiwgc2l6ZV90KiBvcmRlcikgY29uc3QKLXsKLSAgICAvLyBiaW5hcnkgc2VhcmNoCi0gICAgc3NpemVfdCBlcnIgPSBOQU1FX05PVF9GT1VORDsKLSAgICBzc2l6ZV90IGwgPSAwOwotICAgIHNzaXplX3QgaCA9IG1SYW5nZXMuc2l6ZSgpLTE7Ci0gICAgc3NpemVfdCBtaWQ7Ci0gICAgY29uc3QgcnVuX3QqIGEgPSBtUmFuZ2VzLmFycmF5KCk7Ci0gICAgd2hpbGUgKGwgPD0gaCkgewotICAgICAgICBtaWQgPSBsICsgKGggLSBsKS8yOwotICAgICAgICBjb25zdCBydW5fdCogY29uc3QgY3VyciA9IGEgKyBtaWQ7Ci0gICAgICAgIGludCBjID0gMDsKLSAgICAgICAgaWYgKHRva2VuIDwgY3Vyci0+Zmlyc3QpICAgICAgICAgICAgICAgICAgICAgICAgYyA9IDE7Ci0gICAgICAgIGVsc2UgaWYgKHRva2VuID49IGN1cnItPmZpcnN0K2N1cnItPmxlbmd0aCkgICAgIGMgPSAtMTsKLSAgICAgICAgaWYgKGMgPT0gMCkgewotICAgICAgICAgICAgZXJyID0gbCA9IG1pZDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9IGVsc2UgaWYgKGMgPCAwKSB7Ci0gICAgICAgICAgICBsID0gbWlkICsgMTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGggPSBtaWQgLSAxOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChvcmRlcikgKm9yZGVyID0gbDsKLSAgICByZXR1cm4gZXJyOwotfQotCi1zc2l6ZV90IFRva2VuaXplcjo6X2luc2VydFRva2VuQXQodWludDMyX3QgdG9rZW4sIHNpemVfdCBpbmRleCkKLXsKLSAgICBjb25zdCBzaXplX3QgYyA9IG1SYW5nZXMuc2l6ZSgpOwotCi0gICAgaWYgKGluZGV4ID49IDEpIHsKLSAgICAgICAgLy8gZG8gd2UgbmVlZCB0byBtZXJnZSB3aXRoIHRoZSBwcmV2aW91cyBydW4/Ci0gICAgICAgIHJ1bl90JiBwID0gbVJhbmdlcy5lZGl0SXRlbUF0KGluZGV4LTEpOwotICAgICAgICBpZiAocC5maXJzdCtwLmxlbmd0aCA9PSB0b2tlbikgewotICAgICAgICAgICAgcC5sZW5ndGggKz0gMTsKLSAgICAgICAgICAgIGlmIChpbmRleCA8IGMpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBydW5fdCYgbiA9IG1SYW5nZXNbaW5kZXhdOwotICAgICAgICAgICAgICAgIGlmICh0b2tlbisxID09IG4uZmlyc3QpIHsKLSAgICAgICAgICAgICAgICAgICAgcC5sZW5ndGggKz0gbi5sZW5ndGg7Ci0gICAgICAgICAgICAgICAgICAgIG1SYW5nZXMucmVtb3ZlSXRlbXNBdChpbmRleCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIGluZGV4OwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIGlmIChpbmRleCA8IGMpIHsKLSAgICAgICAgLy8gZG8gd2UgbmVlZCB0byBtZXJnZSB3aXRoIHRoZSBuZXh0IHJ1bj8KLSAgICAgICAgcnVuX3QmIG4gPSBtUmFuZ2VzLmVkaXRJdGVtQXQoaW5kZXgpOwotICAgICAgICBpZiAodG9rZW4rMSA9PSBuLmZpcnN0KSB7Ci0gICAgICAgICAgICBuLmZpcnN0IC09IDE7Ci0gICAgICAgICAgICBuLmxlbmd0aCArPSAxOwotICAgICAgICAgICAgcmV0dXJuIGluZGV4OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuIG1SYW5nZXMuaW5zZXJ0QXQocnVuX3QodG9rZW4sMSksIGluZGV4KTsKLX0KLQotdm9pZCBUb2tlbml6ZXI6OmR1bXAoKSBjb25zdAotewotICAgIGNvbnN0IHJ1bl90KiByYW5nZXMgPSBtUmFuZ2VzLmFycmF5KCk7Ci0gICAgY29uc3Qgc2l6ZV90IGMgPSBtUmFuZ2VzLnNpemUoKTsKLSAgICBwcmludGYoIlRva2VuaXplciAoJXAsIHNpemUgPSAlZClcbiIsIHRoaXMsIGludChjKSk7Ci0gICAgZm9yIChzaXplX3QgaT0wIDsgaTxjIDsgaSsrKSB7Ci0gICAgICAgIHByaW50ZigiJXU6ICgldSwgJXUpXG4iLCBpLAotICAgICAgICAgICAgICAgIHVpbnQzMl90KHJhbmdlc1tpXS5maXJzdCksIHVpbnQzMl90KHJhbmdlc1tpXS5sZW5ndGgpKTsKLSAgICB9Ci19Ci0KLX07IC8vIG5hbWVzcGFjZSBhbmRyb2lkCi0KZGlmZiAtLWdpdCBhL2xpYnMvc3VyZmFjZWZsaW5nZXIvVG9rZW5pemVyLmggYi9saWJzL3N1cmZhY2VmbGluZ2VyL1Rva2VuaXplci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YjMwNTdkLi4wMDAwMDAwCi0tLSBhL2xpYnMvc3VyZmFjZWZsaW5nZXIvVG9rZW5pemVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotI2lmbmRlZiBBTkRST0lEX1RPS0VOSVpFUl9ICi0jZGVmaW5lIEFORFJPSURfVE9LRU5JWkVSX0gKLQotI2luY2x1ZGUgPHV0aWxzL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHV0aWxzL0Vycm9ycy5oPgotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLW5hbWVzcGFjZSBhbmRyb2lkIHsKLQotY2xhc3MgVG9rZW5pemVyCi17Ci1wdWJsaWM6Ci0gICAgICAgICAgICAgICAgVG9rZW5pemVyKCk7Ci0gICAgICAgICAgICAgICAgVG9rZW5pemVyKGNvbnN0IFRva2VuaXplciYgb3RoZXIpOwotICAgICAgICAgICAgICAgIH5Ub2tlbml6ZXIoKTsKLQotICAgIHVpbnQzMl90ICAgIGFjcXVpcmUoKTsKLSAgICBzdGF0dXNfdCAgICByZXNlcnZlKHVpbnQzMl90IHRva2VuKTsKLSAgICBzdGF0dXNfdCAgICByZWxlYXNlKHVpbnQzMl90IHRva2VuKTsKLSAgICBib29sICAgICAgICBpc0FjcXVpcmVkKHVpbnQzMl90IHRva2VuKSBjb25zdDsKLQotICAgIHZvaWQgZHVtcCgpIGNvbnN0OwotCi0gICAgc3RydWN0IHJ1bl90IHsKLSAgICAgICAgcnVuX3QoKSB7fTsKLSAgICAgICAgcnVuX3QodWludDMyX3QgZiwgdWludDMyX3QgbCkgOiBmaXJzdChmKSwgbGVuZ3RoKGwpIHt9Ci0gICAgICAgIHVpbnQzMl90ICAgIGZpcnN0OwotICAgICAgICB1aW50MzJfdCAgICBsZW5ndGg7Ci0gICAgfTsKLXByaXZhdGU6Ci0gICAgc3NpemVfdCBfaW5kZXhPcmRlck9mKHVpbnQzMl90IHRva2VuLCBzaXplX3QqIG9yZGVyPTApIGNvbnN0OwotICAgIHNzaXplX3QgX2luc2VydFRva2VuQXQodWludDMyX3QgdG9rZW4sIHNpemVfdCBpbmRleCk7Ci0gICAgVmVjdG9yPHJ1bl90PiAgIG1SYW5nZXM7Ci19OwotCi19OyAvLyBuYW1lc3BhY2UgYW5kcm9pZAotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNlbmRpZiAvLyBBTkRST0lEX1RPS0VOSVpFUl9ICmRpZmYgLS1naXQgYS9saWJzL3N1cmZhY2VmbGluZ2VyL1RyYW5zZm9ybS5jcHAgYi9saWJzL3N1cmZhY2VmbGluZ2VyL1RyYW5zZm9ybS5jcHAKaW5kZXggMTc1Zjk4OS4uNWUyN2NjOSAxMDA2NDQKLS0tIGEvbGlicy9zdXJmYWNlZmxpbmdlci9UcmFuc2Zvcm0uY3BwCisrKyBiL2xpYnMvc3VyZmFjZWZsaW5nZXIvVHJhbnNmb3JtLmNwcApAQCAtMjI5LDE0ICsyMjksMTMgQEAKICAgICByZXR1cm4gcjsKIH0KIAotdm9pZCBUcmFuc2Zvcm06OnRyYW5zZm9ybShmaXhlZDE2MTYqIHBvaW50LCBpbnQgeCwgaW50IHkpIGNvbnN0Cit2b2lkIFRyYW5zZm9ybTo6dHJhbnNmb3JtKGZsb2F0KiBwb2ludCwgaW50IHgsIGludCB5KSBjb25zdAogewotICAgIGNvbnN0IGZsb2F0IHRvRml4ZWQgPSA2NTUzNi4wZjsKICAgICBjb25zdCBtYXQzMyYgTShtTWF0cml4KTsKICAgICB2ZWMyIHYoeCwgeSk7CiAgICAgdiA9IHRyYW5zZm9ybSh2KTsKLSAgICBwb2ludFswXSA9IHZbMF0gKiB0b0ZpeGVkOwotICAgIHBvaW50WzFdID0gdlsxXSAqIHRvRml4ZWQ7CisgICAgcG9pbnRbMF0gPSB2WzBdOworICAgIHBvaW50WzFdID0gdlsxXTsKIH0KIAogUmVjdCBUcmFuc2Zvcm06Om1ha2VCb3VuZHMoaW50IHcsIGludCBoKSBjb25zdApkaWZmIC0tZ2l0IGEvbGlicy9zdXJmYWNlZmxpbmdlci9UcmFuc2Zvcm0uaCBiL2xpYnMvc3VyZmFjZWZsaW5nZXIvVHJhbnNmb3JtLmgKaW5kZXggMmU1Yjg5My4uMjBmYTExYSAxMDA2NDQKLS0tIGEvbGlicy9zdXJmYWNlZmxpbmdlci9UcmFuc2Zvcm0uaAorKysgYi9saWJzL3N1cmZhY2VmbGluZ2VyL1RyYW5zZm9ybS5oCkBAIC0zNyw4ICszNyw2IEBACiAgICAgICAgICAgIGV4cGxpY2l0IFRyYW5zZm9ybSh1aW50MzJfdCBvcmllbnRhdGlvbik7CiAgICAgICAgICAgICAgICAgICAgIH5UcmFuc2Zvcm0oKTsKIAotICAgICAgICAgICAgdHlwZWRlZiBpbnQzMl90IGZpeGVkMTYxNjsKLQogICAgICAgICAgICAgLy8gRklYTUU6IG11c3QgbWF0Y2ggT1ZFUkxBWV9UUkFOU0ZPUk1fKiwgcHVsbCBmcm9tIGhhcmR3YXJlLmgKICAgICAgICAgICAgIGVudW0gb3JpZW50YXRpb25fZmxhZ3MgewogICAgICAgICAgICAgICAgIFJPVF8wICAgPSAweDAwMDAwMDAwLApAQCAtNzYsNyArNzQsNyBAQAogCiAgICAgICAgICAgICAvLyB0cmFuc2Zvcm0gZGF0YQogICAgICAgICAgICAgUmVjdCAgICBtYWtlQm91bmRzKGludCB3LCBpbnQgaCkgY29uc3Q7Ci0gICAgICAgICAgICB2b2lkICAgIHRyYW5zZm9ybShmaXhlZDE2MTYqIHBvaW50LCBpbnQgeCwgaW50IHkpIGNvbnN0OworICAgICAgICAgICAgdm9pZCAgICB0cmFuc2Zvcm0oZmxvYXQqIHBvaW50LCBpbnQgeCwgaW50IHkpIGNvbnN0OwogICAgICAgICAgICAgUmVnaW9uICB0cmFuc2Zvcm0oY29uc3QgUmVnaW9uJiByZWcpIGNvbnN0OwogICAgICAgICAgICAgVHJhbnNmb3JtIG9wZXJhdG9yICogKGNvbnN0IFRyYW5zZm9ybSYgcmhzKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvbGlicy9zdXJmYWNlZmxpbmdlcl9jbGllbnQvQW5kcm9pZC5tayBiL2xpYnMvc3VyZmFjZWZsaW5nZXJfY2xpZW50L0FuZHJvaWQubWsKaW5kZXggZmU4NWIzNC4uY2UzYzcxYSAxMDA2NDQKLS0tIGEvbGlicy9zdXJmYWNlZmxpbmdlcl9jbGllbnQvQW5kcm9pZC5taworKysgYi9saWJzL3N1cmZhY2VmbGluZ2VyX2NsaWVudC9BbmRyb2lkLm1rCkBAIC00LDcgKzQsNyBAQAogTE9DQUxfU1JDX0ZJTEVTOj0gXAogCUlTdXJmYWNlQ29tcG9zZXIuY3BwIFwKIAlJU3VyZmFjZS5jcHAgXAotCUlTdXJmYWNlRmxpbmdlckNsaWVudC5jcHAgXAorCUlTdXJmYWNlQ29tcG9zZXJDbGllbnQuY3BwIFwKIAlMYXllclN0YXRlLmNwcCBcCiAJU2hhcmVkQnVmZmVyU3RhY2suY3BwIFwKIAlTdXJmYWNlLmNwcCBcCmRpZmYgLS1naXQgYS9saWJzL3N1cmZhY2VmbGluZ2VyX2NsaWVudC9JU3VyZmFjZS5jcHAgYi9saWJzL3N1cmZhY2VmbGluZ2VyX2NsaWVudC9JU3VyZmFjZS5jcHAKaW5kZXggYmI4NjE5OS4uNzA0OWQ5ZSAxMDA2NDQKLS0tIGEvbGlicy9zdXJmYWNlZmxpbmdlcl9jbGllbnQvSVN1cmZhY2UuY3BwCisrKyBiL2xpYnMvc3VyZmFjZWZsaW5nZXJfY2xpZW50L0lTdXJmYWNlLmNwcApAQCAtNzEsMTEgKzcxLDE1IEBACiAgICAgewogICAgIH0KIAotICAgIHZpcnR1YWwgc3A8R3JhcGhpY0J1ZmZlcj4gcmVxdWVzdEJ1ZmZlcihpbnQgYnVmZmVySWR4LCBpbnQgdXNhZ2UpCisgICAgdmlydHVhbCBzcDxHcmFwaGljQnVmZmVyPiByZXF1ZXN0QnVmZmVyKGludCBidWZmZXJJZHgsCisgICAgICAgICAgICB1aW50MzJfdCB3LCB1aW50MzJfdCBoLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHVzYWdlKQogICAgIHsKICAgICAgICAgUGFyY2VsIGRhdGEsIHJlcGx5OwogICAgICAgICBkYXRhLndyaXRlSW50ZXJmYWNlVG9rZW4oSVN1cmZhY2U6OmdldEludGVyZmFjZURlc2NyaXB0b3IoKSk7CiAgICAgICAgIGRhdGEud3JpdGVJbnQzMihidWZmZXJJZHgpOworICAgICAgICBkYXRhLndyaXRlSW50MzIodyk7CisgICAgICAgIGRhdGEud3JpdGVJbnQzMihoKTsKKyAgICAgICAgZGF0YS53cml0ZUludDMyKGZvcm1hdCk7CiAgICAgICAgIGRhdGEud3JpdGVJbnQzMih1c2FnZSk7CiAgICAgICAgIHJlbW90ZSgpLT50cmFuc2FjdChSRVFVRVNUX0JVRkZFUiwgZGF0YSwgJnJlcGx5KTsKICAgICAgICAgc3A8R3JhcGhpY0J1ZmZlcj4gYnVmZmVyID0gbmV3IEdyYXBoaWNCdWZmZXIoKTsKQEAgLTgzLDYgKzg3LDE2IEBACiAgICAgICAgIHJldHVybiBidWZmZXI7CiAgICAgfQogCisgICAgdmlydHVhbCBzdGF0dXNfdCBzZXRCdWZmZXJDb3VudChpbnQgYnVmZmVyQ291bnQpCisgICAgeworICAgICAgICBQYXJjZWwgZGF0YSwgcmVwbHk7CisgICAgICAgIGRhdGEud3JpdGVJbnRlcmZhY2VUb2tlbihJU3VyZmFjZTo6Z2V0SW50ZXJmYWNlRGVzY3JpcHRvcigpKTsKKyAgICAgICAgZGF0YS53cml0ZUludDMyKGJ1ZmZlckNvdW50KTsKKyAgICAgICAgcmVtb3RlKCktPnRyYW5zYWN0KFNFVF9CVUZGRVJfQ09VTlQsIGRhdGEsICZyZXBseSk7CisgICAgICAgIHN0YXR1c190IGVyciA9IHJlcGx5LnJlYWRJbnQzMigpOworICAgICAgICByZXR1cm4gZXJyOworICAgIH0KKwogICAgIHZpcnR1YWwgc3RhdHVzX3QgcmVnaXN0ZXJCdWZmZXJzKGNvbnN0IEJ1ZmZlckhlYXAmIGJ1ZmZlcnMpCiAgICAgewogICAgICAgICBQYXJjZWwgZGF0YSwgcmVwbHk7CkBAIC0xNDAsMTIgKzE1NCwyMiBAQAogICAgICAgICBjYXNlIFJFUVVFU1RfQlVGRkVSOiB7CiAgICAgICAgICAgICBDSEVDS19JTlRFUkZBQ0UoSVN1cmZhY2UsIGRhdGEsIHJlcGx5KTsKICAgICAgICAgICAgIGludCBidWZmZXJJZHggPSBkYXRhLnJlYWRJbnQzMigpOwotICAgICAgICAgICAgaW50IHVzYWdlID0gZGF0YS5yZWFkSW50MzIoKTsKLSAgICAgICAgICAgIHNwPEdyYXBoaWNCdWZmZXI+IGJ1ZmZlcihyZXF1ZXN0QnVmZmVyKGJ1ZmZlcklkeCwgdXNhZ2UpKTsKKyAgICAgICAgICAgIHVpbnQzMl90IHcgPSBkYXRhLnJlYWRJbnQzMigpOworICAgICAgICAgICAgdWludDMyX3QgaCA9IGRhdGEucmVhZEludDMyKCk7CisgICAgICAgICAgICB1aW50MzJfdCBmb3JtYXQgPSBkYXRhLnJlYWRJbnQzMigpOworICAgICAgICAgICAgdWludDMyX3QgdXNhZ2UgPSBkYXRhLnJlYWRJbnQzMigpOworICAgICAgICAgICAgc3A8R3JhcGhpY0J1ZmZlcj4gYnVmZmVyKHJlcXVlc3RCdWZmZXIoYnVmZmVySWR4LCB3LCBoLCBmb3JtYXQsIHVzYWdlKSk7CiAgICAgICAgICAgICBpZiAoYnVmZmVyID09IE5VTEwpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKICAgICAgICAgICAgIHJldHVybiByZXBseS0+d3JpdGUoKmJ1ZmZlcik7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBTRVRfQlVGRkVSX0NPVU5UOiB7CisgICAgICAgICAgICBDSEVDS19JTlRFUkZBQ0UoSVN1cmZhY2UsIGRhdGEsIHJlcGx5KTsKKyAgICAgICAgICAgIGludCBidWZmZXJDb3VudCA9IGRhdGEucmVhZEludDMyKCk7CisgICAgICAgICAgICBzdGF0dXNfdCBlcnIgPSBzZXRCdWZmZXJDb3VudChidWZmZXJDb3VudCk7CisgICAgICAgICAgICByZXBseS0+d3JpdGVJbnQzMihlcnIpOworICAgICAgICAgICAgcmV0dXJuIE5PX0VSUk9SOworICAgICAgICB9CiAgICAgICAgIGNhc2UgUkVHSVNURVJfQlVGRkVSUzogewogICAgICAgICAgICAgQ0hFQ0tfSU5URVJGQUNFKElTdXJmYWNlLCBkYXRhLCByZXBseSk7CiAgICAgICAgICAgICBCdWZmZXJIZWFwIGJ1ZmZlcjsKZGlmZiAtLWdpdCBhL2xpYnMvc3VyZmFjZWZsaW5nZXJfY2xpZW50L0lTdXJmYWNlQ29tcG9zZXIuY3BwIGIvbGlicy9zdXJmYWNlZmxpbmdlcl9jbGllbnQvSVN1cmZhY2VDb21wb3Nlci5jcHAKaW5kZXggYjZmNGUyNC4uNWMxMTFmNiAxMDA2NDQKLS0tIGEvbGlicy9zdXJmYWNlZmxpbmdlcl9jbGllbnQvSVN1cmZhY2VDb21wb3Nlci5jcHAKKysrIGIvbGlicy9zdXJmYWNlZmxpbmdlcl9jbGllbnQvSVN1cmZhY2VDb21wb3Nlci5jcHAKQEAgLTQ2LDEzICs0NiwyMiBAQAogICAgIHsKICAgICB9CiAKLSAgICB2aXJ0dWFsIHNwPElTdXJmYWNlRmxpbmdlckNsaWVudD4gY3JlYXRlQ29ubmVjdGlvbigpCisgICAgdmlydHVhbCBzcDxJU3VyZmFjZUNvbXBvc2VyQ2xpZW50PiBjcmVhdGVDb25uZWN0aW9uKCkKICAgICB7CiAgICAgICAgIHVpbnQzMl90IG47CiAgICAgICAgIFBhcmNlbCBkYXRhLCByZXBseTsKICAgICAgICAgZGF0YS53cml0ZUludGVyZmFjZVRva2VuKElTdXJmYWNlQ29tcG9zZXI6OmdldEludGVyZmFjZURlc2NyaXB0b3IoKSk7CiAgICAgICAgIHJlbW90ZSgpLT50cmFuc2FjdChCblN1cmZhY2VDb21wb3Nlcjo6Q1JFQVRFX0NPTk5FQ1RJT04sIGRhdGEsICZyZXBseSk7Ci0gICAgICAgIHJldHVybiBpbnRlcmZhY2VfY2FzdDxJU3VyZmFjZUZsaW5nZXJDbGllbnQ+KHJlcGx5LnJlYWRTdHJvbmdCaW5kZXIoKSk7CisgICAgICAgIHJldHVybiBpbnRlcmZhY2VfY2FzdDxJU3VyZmFjZUNvbXBvc2VyQ2xpZW50PihyZXBseS5yZWFkU3Ryb25nQmluZGVyKCkpOworICAgIH0KKworICAgIHZpcnR1YWwgc3A8SVN1cmZhY2VDb21wb3NlckNsaWVudD4gY3JlYXRlQ2xpZW50Q29ubmVjdGlvbigpCisgICAgeworICAgICAgICB1aW50MzJfdCBuOworICAgICAgICBQYXJjZWwgZGF0YSwgcmVwbHk7CisgICAgICAgIGRhdGEud3JpdGVJbnRlcmZhY2VUb2tlbihJU3VyZmFjZUNvbXBvc2VyOjpnZXRJbnRlcmZhY2VEZXNjcmlwdG9yKCkpOworICAgICAgICByZW1vdGUoKS0+dHJhbnNhY3QoQm5TdXJmYWNlQ29tcG9zZXI6OkNSRUFURV9DTElFTlRfQ09OTkVDVElPTiwgZGF0YSwgJnJlcGx5KTsKKyAgICAgICAgcmV0dXJuIGludGVyZmFjZV9jYXN0PElTdXJmYWNlQ29tcG9zZXJDbGllbnQ+KHJlcGx5LnJlYWRTdHJvbmdCaW5kZXIoKSk7CiAgICAgfQogCiAgICAgdmlydHVhbCBzcDxJTWVtb3J5SGVhcD4gZ2V0Q2JsaygpIGNvbnN0CkBAIC0xMzYsNiArMTQ1LDExIEBACiAgICAgICAgICAgICBzcDxJQmluZGVyPiBiID0gY3JlYXRlQ29ubmVjdGlvbigpLT5hc0JpbmRlcigpOwogICAgICAgICAgICAgcmVwbHktPndyaXRlU3Ryb25nQmluZGVyKGIpOwogICAgICAgICB9IGJyZWFrOworICAgICAgICBjYXNlIENSRUFURV9DTElFTlRfQ09OTkVDVElPTjogeworICAgICAgICAgICAgQ0hFQ0tfSU5URVJGQUNFKElTdXJmYWNlQ29tcG9zZXIsIGRhdGEsIHJlcGx5KTsKKyAgICAgICAgICAgIHNwPElCaW5kZXI+IGIgPSBjcmVhdGVDbGllbnRDb25uZWN0aW9uKCktPmFzQmluZGVyKCk7CisgICAgICAgICAgICByZXBseS0+d3JpdGVTdHJvbmdCaW5kZXIoYik7CisgICAgICAgIH0gYnJlYWs7CiAgICAgICAgIGNhc2UgT1BFTl9HTE9CQUxfVFJBTlNBQ1RJT046IHsKICAgICAgICAgICAgIENIRUNLX0lOVEVSRkFDRShJU3VyZmFjZUNvbXBvc2VyLCBkYXRhLCByZXBseSk7CiAgICAgICAgICAgICBvcGVuR2xvYmFsVHJhbnNhY3Rpb24oKTsKZGlmZiAtLWdpdCBhL2xpYnMvc3VyZmFjZWZsaW5nZXJfY2xpZW50L0lTdXJmYWNlQ29tcG9zZXJDbGllbnQuY3BwIGIvbGlicy9zdXJmYWNlZmxpbmdlcl9jbGllbnQvSVN1cmZhY2VDb21wb3NlckNsaWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmNjMWY4ZQotLS0gL2Rldi9udWxsCisrKyBiL2xpYnMvc3VyZmFjZWZsaW5nZXJfY2xpZW50L0lTdXJmYWNlQ29tcG9zZXJDbGllbnQuY3BwCkBAIC0wLDAgKzEsMjMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworLy8gdGFnIGFzIHN1cmZhY2VmbGluZ2VyCisjZGVmaW5lIExPR19UQUcgIlN1cmZhY2VGbGluZ2VyIgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKworI2luY2x1ZGUgPGJpbmRlci9QYXJjZWwuaD4KKyNpbmNsdWRlIDxiaW5kZXIvSU1lbW9yeS5oPgorI2luY2x1ZGUgPGJpbmRlci9JUENUaHJlYWRTdGF0ZS5oPgorI2luY2x1ZGUgPGJpbmRlci9JU2VydmljZU1hbmFnZXIuaD4KKworI2luY2x1ZGUgPHVpL1BvaW50Lmg+CisjaW5jbHVkZSA8dWkvUmVjdC5oPgorCisjaW5jbHVkZSA8c3VyZmFjZWZsaW5nZXIvSVN1cmZhY2UuaD4KKyNpbmNsdWRlIDxzdXJmYWNlZmxpbmdlci9JU3VyZmFjZUNvbXBvc2VyQ2xpZW50Lmg+CisjaW5jbHVkZSA8cHJpdmF0ZS9zdXJmYWNlZmxpbmdlci9MYXllclN0YXRlLmg+CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvKiBpZGVhbGx5IEFJRF9HUkFQSElDUyB3b3VsZCBiZSBpbiBhIHNlbWktcHVibGljIGhlYWRlcgorICogb3IgdGhlcmUgd291bGQgYmUgYSB3YXkgdG8gbWFwIGEgdXNlci9ncm91cCBuYW1lIHRvIGl0cyBpZAorICovCisjaWZuZGVmIEFJRF9HUkFQSElDUworI2RlZmluZSBBSURfR1JBUEhJQ1MgMTAwMworI2VuZGlmCisKKyNkZWZpbmUgTElLRUxZKCBleHAgKSAgICAgICAoX19idWlsdGluX2V4cGVjdCggKGV4cCkgIT0gMCwgdHJ1ZSAgKSkKKyNkZWZpbmUgVU5MSUtFTFkoIGV4cCApICAgICAoX19idWlsdGluX2V4cGVjdCggKGV4cCkgIT0gMCwgZmFsc2UgKSkKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworZW51bSB7CisgICAgR0VUX0NCTEsgPSBJQmluZGVyOjpGSVJTVF9DQUxMX1RSQU5TQUNUSU9OLAorICAgIEdFVF9UT0tFTiwKKyAgICBDUkVBVEVfU1VSRkFDRSwKKyAgICBERVNUUk9ZX1NVUkZBQ0UsCisgICAgU0VUX1NUQVRFCit9OworCitjbGFzcyBCcFN1cmZhY2VDb21wb3NlckNsaWVudCA6IHB1YmxpYyBCcEludGVyZmFjZTxJU3VyZmFjZUNvbXBvc2VyQ2xpZW50PgoreworcHVibGljOgorICAgIEJwU3VyZmFjZUNvbXBvc2VyQ2xpZW50KGNvbnN0IHNwPElCaW5kZXI+JiBpbXBsKQorICAgICAgICA6IEJwSW50ZXJmYWNlPElTdXJmYWNlQ29tcG9zZXJDbGllbnQ+KGltcGwpCisgICAgeworICAgIH0KKworICAgIHZpcnR1YWwgc3A8SU1lbW9yeUhlYXA+IGdldENvbnRyb2xCbG9jaygpIGNvbnN0CisgICAgeworICAgICAgICBQYXJjZWwgZGF0YSwgcmVwbHk7CisgICAgICAgIGRhdGEud3JpdGVJbnRlcmZhY2VUb2tlbihJU3VyZmFjZUNvbXBvc2VyQ2xpZW50OjpnZXRJbnRlcmZhY2VEZXNjcmlwdG9yKCkpOworICAgICAgICByZW1vdGUoKS0+dHJhbnNhY3QoR0VUX0NCTEssIGRhdGEsICZyZXBseSk7CisgICAgICAgIHJldHVybiBpbnRlcmZhY2VfY2FzdDxJTWVtb3J5SGVhcD4ocmVwbHkucmVhZFN0cm9uZ0JpbmRlcigpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHNzaXplX3QgZ2V0VG9rZW5Gb3JTdXJmYWNlKGNvbnN0IHNwPElTdXJmYWNlPiYgc3VyKSBjb25zdAorICAgIHsKKyAgICAgICAgUGFyY2VsIGRhdGEsIHJlcGx5OworICAgICAgICBkYXRhLndyaXRlSW50ZXJmYWNlVG9rZW4oSVN1cmZhY2VDb21wb3NlckNsaWVudDo6Z2V0SW50ZXJmYWNlRGVzY3JpcHRvcigpKTsKKyAgICAgICAgZGF0YS53cml0ZVN0cm9uZ0JpbmRlcihzdXItPmFzQmluZGVyKCkpOworICAgICAgICByZW1vdGUoKS0+dHJhbnNhY3QoR0VUX1RPS0VOLCBkYXRhLCAmcmVwbHkpOworICAgICAgICByZXR1cm4gcmVwbHkucmVhZEludDMyKCk7CisgICAgfQorCisgICAgdmlydHVhbCBzcDxJU3VyZmFjZT4gY3JlYXRlU3VyZmFjZSggc3VyZmFjZV9kYXRhX3QqIHBhcmFtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZzgmIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGlzcGxheUlEIGRpc3BsYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBpeGVsRm9ybWF0IGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBmbGFncykKKyAgICB7CisgICAgICAgIFBhcmNlbCBkYXRhLCByZXBseTsKKyAgICAgICAgZGF0YS53cml0ZUludGVyZmFjZVRva2VuKElTdXJmYWNlQ29tcG9zZXJDbGllbnQ6OmdldEludGVyZmFjZURlc2NyaXB0b3IoKSk7CisgICAgICAgIGRhdGEud3JpdGVJbnQzMihwaWQpOworICAgICAgICBkYXRhLndyaXRlU3RyaW5nOChuYW1lKTsKKyAgICAgICAgZGF0YS53cml0ZUludDMyKGRpc3BsYXkpOworICAgICAgICBkYXRhLndyaXRlSW50MzIodyk7CisgICAgICAgIGRhdGEud3JpdGVJbnQzMihoKTsKKyAgICAgICAgZGF0YS53cml0ZUludDMyKGZvcm1hdCk7CisgICAgICAgIGRhdGEud3JpdGVJbnQzMihmbGFncyk7CisgICAgICAgIHJlbW90ZSgpLT50cmFuc2FjdChDUkVBVEVfU1VSRkFDRSwgZGF0YSwgJnJlcGx5KTsKKyAgICAgICAgcGFyYW1zLT5yZWFkRnJvbVBhcmNlbChyZXBseSk7CisgICAgICAgIHJldHVybiBpbnRlcmZhY2VfY2FzdDxJU3VyZmFjZT4ocmVwbHkucmVhZFN0cm9uZ0JpbmRlcigpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHN0YXR1c190IGRlc3Ryb3lTdXJmYWNlKFN1cmZhY2VJRCBzaWQpCisgICAgeworICAgICAgICBQYXJjZWwgZGF0YSwgcmVwbHk7CisgICAgICAgIGRhdGEud3JpdGVJbnRlcmZhY2VUb2tlbihJU3VyZmFjZUNvbXBvc2VyQ2xpZW50OjpnZXRJbnRlcmZhY2VEZXNjcmlwdG9yKCkpOworICAgICAgICBkYXRhLndyaXRlSW50MzIoc2lkKTsKKyAgICAgICAgcmVtb3RlKCktPnRyYW5zYWN0KERFU1RST1lfU1VSRkFDRSwgZGF0YSwgJnJlcGx5KTsKKyAgICAgICAgcmV0dXJuIHJlcGx5LnJlYWRJbnQzMigpOworICAgIH0KKworICAgIHZpcnR1YWwgc3RhdHVzX3Qgc2V0U3RhdGUoaW50MzJfdCBjb3VudCwgY29uc3QgbGF5ZXJfc3RhdGVfdCogc3RhdGVzKQorICAgIHsKKyAgICAgICAgUGFyY2VsIGRhdGEsIHJlcGx5OworICAgICAgICBkYXRhLndyaXRlSW50ZXJmYWNlVG9rZW4oSVN1cmZhY2VDb21wb3NlckNsaWVudDo6Z2V0SW50ZXJmYWNlRGVzY3JpcHRvcigpKTsKKyAgICAgICAgZGF0YS53cml0ZUludDMyKGNvdW50KTsKKyAgICAgICAgZm9yIChpbnQgaT0wIDsgaTxjb3VudCA7IGkrKykKKyAgICAgICAgICAgIHN0YXRlc1tpXS53cml0ZShkYXRhKTsKKyAgICAgICAgcmVtb3RlKCktPnRyYW5zYWN0KFNFVF9TVEFURSwgZGF0YSwgJnJlcGx5KTsKKyAgICAgICAgcmV0dXJuIHJlcGx5LnJlYWRJbnQzMigpOworICAgIH0KK307CisKK0lNUExFTUVOVF9NRVRBX0lOVEVSRkFDRShTdXJmYWNlQ29tcG9zZXJDbGllbnQsICJhbmRyb2lkLnVpLklTdXJmYWNlQ29tcG9zZXJDbGllbnQiKTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdGF0dXNfdCBCblN1cmZhY2VDb21wb3NlckNsaWVudDo6b25UcmFuc2FjdCgKKyAgICB1aW50MzJfdCBjb2RlLCBjb25zdCBQYXJjZWwmIGRhdGEsIFBhcmNlbCogcmVwbHksIHVpbnQzMl90IGZsYWdzKQoreworICAgIC8vIGNvZGVzIHRoYXQgZG9uJ3QgcmVxdWlyZSBwZXJtaXNzaW9uIGNoZWNrCisKKyAgICBzd2l0Y2goY29kZSkgeworICAgICAgICBjYXNlIEdFVF9DQkxLOiB7CisgICAgICAgICAgICBDSEVDS19JTlRFUkZBQ0UoSVN1cmZhY2VDb21wb3NlckNsaWVudCwgZGF0YSwgcmVwbHkpOworICAgICAgICAgICAgc3A8SU1lbW9yeUhlYXA+IGN0bChnZXRDb250cm9sQmxvY2soKSk7CisgICAgICAgICAgICByZXBseS0+d3JpdGVTdHJvbmdCaW5kZXIoY3RsLT5hc0JpbmRlcigpKTsKKyAgICAgICAgICAgIHJldHVybiBOT19FUlJPUjsKKyAgICAgICAgfSBicmVhazsKKyAgICAgICAgY2FzZSBHRVRfVE9LRU46IHsKKyAgICAgICAgICAgIENIRUNLX0lOVEVSRkFDRShJU3VyZmFjZUNvbXBvc2VyQ2xpZW50LCBkYXRhLCByZXBseSk7CisgICAgICAgICAgICBzcDxJU3VyZmFjZT4gc3VyID0gaW50ZXJmYWNlX2Nhc3Q8SVN1cmZhY2U+KGRhdGEucmVhZFN0cm9uZ0JpbmRlcigpKTsKKyAgICAgICAgICAgIHNzaXplX3QgdG9rZW4gPSBnZXRUb2tlbkZvclN1cmZhY2Uoc3VyKTsKKyAgICAgICAgICAgIHJlcGx5LT53cml0ZUludDMyKHRva2VuKTsKKyAgICAgICAgICAgIHJldHVybiBOT19FUlJPUjsKKyAgICAgICAgfSBicmVhazsKKyAgICB9CisKKyAgICAvLyB0aGVzZSBtdXN0IGJlIGNoZWNrZWQKKworICAgICBJUENUaHJlYWRTdGF0ZSogaXBjID0gSVBDVGhyZWFkU3RhdGU6OnNlbGYoKTsKKyAgICAgY29uc3QgaW50IHBpZCA9IGlwYy0+Z2V0Q2FsbGluZ1BpZCgpOworICAgICBjb25zdCBpbnQgdWlkID0gaXBjLT5nZXRDYWxsaW5nVWlkKCk7CisgICAgIGNvbnN0IGludCBzZWxmX3BpZCA9IGdldHBpZCgpOworICAgICBpZiAoVU5MSUtFTFkocGlkICE9IHNlbGZfcGlkICYmIHVpZCAhPSBBSURfR1JBUEhJQ1MpKSB7CisgICAgICAgICAvLyB3ZSdyZSBjYWxsZWQgZnJvbSBhIGRpZmZlcmVudCBwcm9jZXNzLCBkbyB0aGUgcmVhbCBjaGVjaworICAgICAgICAgaWYgKCFjaGVja0NhbGxpbmdQZXJtaXNzaW9uKAorICAgICAgICAgICAgICAgICBTdHJpbmcxNigiYW5kcm9pZC5wZXJtaXNzaW9uLkFDQ0VTU19TVVJGQUNFX0ZMSU5HRVIiKSkpCisgICAgICAgICB7CisgICAgICAgICAgICAgTE9HRSgiUGVybWlzc2lvbiBEZW5pYWw6ICIKKyAgICAgICAgICAgICAgICAgICAgICJjYW4ndCBvcGVuR2xvYmFsVHJhbnNhY3Rpb24gcGlkPSVkLCB1aWQ9JWQiLCBwaWQsIHVpZCk7CisgICAgICAgICAgICAgcmV0dXJuIFBFUk1JU1NJT05fREVOSUVEOworICAgICAgICAgfQorICAgICB9CisKKyAgICAgc3dpdGNoKGNvZGUpIHsKKyAgICAgICAgY2FzZSBDUkVBVEVfU1VSRkFDRTogeworICAgICAgICAgICAgQ0hFQ0tfSU5URVJGQUNFKElTdXJmYWNlQ29tcG9zZXJDbGllbnQsIGRhdGEsIHJlcGx5KTsKKyAgICAgICAgICAgIHN1cmZhY2VfZGF0YV90IHBhcmFtczsKKyAgICAgICAgICAgIGludDMyX3QgcGlkID0gZGF0YS5yZWFkSW50MzIoKTsKKyAgICAgICAgICAgIFN0cmluZzggbmFtZSA9IGRhdGEucmVhZFN0cmluZzgoKTsKKyAgICAgICAgICAgIERpc3BsYXlJRCBkaXNwbGF5ID0gZGF0YS5yZWFkSW50MzIoKTsKKyAgICAgICAgICAgIHVpbnQzMl90IHcgPSBkYXRhLnJlYWRJbnQzMigpOworICAgICAgICAgICAgdWludDMyX3QgaCA9IGRhdGEucmVhZEludDMyKCk7CisgICAgICAgICAgICBQaXhlbEZvcm1hdCBmb3JtYXQgPSBkYXRhLnJlYWRJbnQzMigpOworICAgICAgICAgICAgdWludDMyX3QgZmxhZ3MgPSBkYXRhLnJlYWRJbnQzMigpOworICAgICAgICAgICAgc3A8SVN1cmZhY2U+IHMgPSBjcmVhdGVTdXJmYWNlKCZwYXJhbXMsIHBpZCwgbmFtZSwgZGlzcGxheSwgdywgaCwKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0LCBmbGFncyk7CisgICAgICAgICAgICBwYXJhbXMud3JpdGVUb1BhcmNlbChyZXBseSk7CisgICAgICAgICAgICByZXBseS0+d3JpdGVTdHJvbmdCaW5kZXIocy0+YXNCaW5kZXIoKSk7CisgICAgICAgICAgICByZXR1cm4gTk9fRVJST1I7CisgICAgICAgIH0gYnJlYWs7CisgICAgICAgIGNhc2UgREVTVFJPWV9TVVJGQUNFOiB7CisgICAgICAgICAgICBDSEVDS19JTlRFUkZBQ0UoSVN1cmZhY2VDb21wb3NlckNsaWVudCwgZGF0YSwgcmVwbHkpOworICAgICAgICAgICAgcmVwbHktPndyaXRlSW50MzIoIGRlc3Ryb3lTdXJmYWNlKCBkYXRhLnJlYWRJbnQzMigpICkgKTsKKyAgICAgICAgICAgIHJldHVybiBOT19FUlJPUjsKKyAgICAgICAgfSBicmVhazsKKyAgICAgICAgY2FzZSBTRVRfU1RBVEU6IHsKKyAgICAgICAgICAgIENIRUNLX0lOVEVSRkFDRShJU3VyZmFjZUNvbXBvc2VyQ2xpZW50LCBkYXRhLCByZXBseSk7CisgICAgICAgICAgICBpbnQzMl90IGNvdW50ID0gZGF0YS5yZWFkSW50MzIoKTsKKyAgICAgICAgICAgIGxheWVyX3N0YXRlX3QqIHN0YXRlcyA9IG5ldyBsYXllcl9zdGF0ZV90W2NvdW50XTsKKyAgICAgICAgICAgIGZvciAoaW50IGk9MCA7IGk8Y291bnQgOyBpKyspCisgICAgICAgICAgICAgICAgc3RhdGVzW2ldLnJlYWQoZGF0YSk7CisgICAgICAgICAgICBzdGF0dXNfdCBlcnIgPSBzZXRTdGF0ZShjb3VudCwgc3RhdGVzKTsKKyAgICAgICAgICAgIGRlbGV0ZSBbXSBzdGF0ZXM7CisgICAgICAgICAgICByZXBseS0+d3JpdGVJbnQzMihlcnIpOworICAgICAgICAgICAgcmV0dXJuIE5PX0VSUk9SOworICAgICAgICB9IGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIEJCaW5kZXI6Om9uVHJhbnNhY3QoY29kZSwgZGF0YSwgcmVwbHksIGZsYWdzKTsKKyAgICB9Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworc3RhdHVzX3QgSVN1cmZhY2VDb21wb3NlckNsaWVudDo6c3VyZmFjZV9kYXRhX3Q6OnJlYWRGcm9tUGFyY2VsKGNvbnN0IFBhcmNlbCYgcGFyY2VsKQoreworICAgIHRva2VuICAgID0gcGFyY2VsLnJlYWRJbnQzMigpOworICAgIGlkZW50aXR5ID0gcGFyY2VsLnJlYWRJbnQzMigpOworICAgIHdpZHRoICAgID0gcGFyY2VsLnJlYWRJbnQzMigpOworICAgIGhlaWdodCAgID0gcGFyY2VsLnJlYWRJbnQzMigpOworICAgIGZvcm1hdCAgID0gcGFyY2VsLnJlYWRJbnQzMigpOworICAgIHJldHVybiBOT19FUlJPUjsKK30KKworc3RhdHVzX3QgSVN1cmZhY2VDb21wb3NlckNsaWVudDo6c3VyZmFjZV9kYXRhX3Q6OndyaXRlVG9QYXJjZWwoUGFyY2VsKiBwYXJjZWwpIGNvbnN0Cit7CisgICAgcGFyY2VsLT53cml0ZUludDMyKHRva2VuKTsKKyAgICBwYXJjZWwtPndyaXRlSW50MzIoaWRlbnRpdHkpOworICAgIHBhcmNlbC0+d3JpdGVJbnQzMih3aWR0aCk7CisgICAgcGFyY2VsLT53cml0ZUludDMyKGhlaWdodCk7CisgICAgcGFyY2VsLT53cml0ZUludDMyKGZvcm1hdCk7CisgICAgcmV0dXJuIE5PX0VSUk9SOworfQorCit9OyAvLyBuYW1lc3BhY2UgYW5kcm9pZApkaWZmIC0tZ2l0IGEvbGlicy9zdXJmYWNlZmxpbmdlcl9jbGllbnQvSVN1cmZhY2VGbGluZ2VyQ2xpZW50LmNwcCBiL2xpYnMvc3VyZmFjZWZsaW5nZXJfY2xpZW50L0lTdXJmYWNlRmxpbmdlckNsaWVudC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlZjk2ZDcuLjAwMDAwMDAKLS0tIGEvbGlicy9zdXJmYWNlZmxpbmdlcl9jbGllbnQvSVN1cmZhY2VGbGluZ2VyQ2xpZW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotLy8gdGFnIGFzIHN1cmZhY2VmbGluZ2VyCi0jZGVmaW5lIExPR19UQUcgIlN1cmZhY2VGbGluZ2VyIgotCi0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxzdGRpbnQuaD4KLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLQotI2luY2x1ZGUgPGJpbmRlci9QYXJjZWwuaD4KLSNpbmNsdWRlIDxiaW5kZXIvSU1lbW9yeS5oPgotI2luY2x1ZGUgPGJpbmRlci9JUENUaHJlYWRTdGF0ZS5oPgotI2luY2x1ZGUgPGJpbmRlci9JU2VydmljZU1hbmFnZXIuaD4KLQotI2luY2x1ZGUgPHVpL1BvaW50Lmg+Ci0jaW5jbHVkZSA8dWkvUmVjdC5oPgotCi0jaW5jbHVkZSA8c3VyZmFjZWZsaW5nZXIvSVN1cmZhY2UuaD4KLSNpbmNsdWRlIDxzdXJmYWNlZmxpbmdlci9JU3VyZmFjZUZsaW5nZXJDbGllbnQuaD4KLSNpbmNsdWRlIDxwcml2YXRlL3N1cmZhY2VmbGluZ2VyL0xheWVyU3RhdGUuaD4KLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8qIGlkZWFsbHkgQUlEX0dSQVBISUNTIHdvdWxkIGJlIGluIGEgc2VtaS1wdWJsaWMgaGVhZGVyCi0gKiBvciB0aGVyZSB3b3VsZCBiZSBhIHdheSB0byBtYXAgYSB1c2VyL2dyb3VwIG5hbWUgdG8gaXRzIGlkCi0gKi8KLSNpZm5kZWYgQUlEX0dSQVBISUNTCi0jZGVmaW5lIEFJRF9HUkFQSElDUyAxMDAzCi0jZW5kaWYKLQotI2RlZmluZSBMSUtFTFkoIGV4cCApICAgICAgIChfX2J1aWx0aW5fZXhwZWN0KCAoZXhwKSAhPSAwLCB0cnVlICApKQotI2RlZmluZSBVTkxJS0VMWSggZXhwICkgICAgIChfX2J1aWx0aW5fZXhwZWN0KCAoZXhwKSAhPSAwLCBmYWxzZSApKQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotbmFtZXNwYWNlIGFuZHJvaWQgewotCi1lbnVtIHsKLSAgICBHRVRfQ0JMSyA9IElCaW5kZXI6OkZJUlNUX0NBTExfVFJBTlNBQ1RJT04sCi0gICAgQ1JFQVRFX1NVUkZBQ0UsCi0gICAgREVTVFJPWV9TVVJGQUNFLAotICAgIFNFVF9TVEFURQotfTsKLQotY2xhc3MgQnBTdXJmYWNlRmxpbmdlckNsaWVudCA6IHB1YmxpYyBCcEludGVyZmFjZTxJU3VyZmFjZUZsaW5nZXJDbGllbnQ+Ci17Ci1wdWJsaWM6Ci0gICAgQnBTdXJmYWNlRmxpbmdlckNsaWVudChjb25zdCBzcDxJQmluZGVyPiYgaW1wbCkKLSAgICAgICAgOiBCcEludGVyZmFjZTxJU3VyZmFjZUZsaW5nZXJDbGllbnQ+KGltcGwpCi0gICAgewotICAgIH0KLQotICAgIHZpcnR1YWwgc3A8SU1lbW9yeUhlYXA+IGdldENvbnRyb2xCbG9jaygpIGNvbnN0Ci0gICAgewotICAgICAgICBQYXJjZWwgZGF0YSwgcmVwbHk7Ci0gICAgICAgIGRhdGEud3JpdGVJbnRlcmZhY2VUb2tlbihJU3VyZmFjZUZsaW5nZXJDbGllbnQ6OmdldEludGVyZmFjZURlc2NyaXB0b3IoKSk7Ci0gICAgICAgIHJlbW90ZSgpLT50cmFuc2FjdChHRVRfQ0JMSywgZGF0YSwgJnJlcGx5KTsKLSAgICAgICAgcmV0dXJuIGludGVyZmFjZV9jYXN0PElNZW1vcnlIZWFwPihyZXBseS5yZWFkU3Ryb25nQmluZGVyKCkpOwotICAgIH0KLQotICAgIHZpcnR1YWwgc3A8SVN1cmZhY2U+IGNyZWF0ZVN1cmZhY2UoIHN1cmZhY2VfZGF0YV90KiBwYXJhbXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmc4JiBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERpc3BsYXlJRCBkaXNwbGF5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQaXhlbEZvcm1hdCBmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZmxhZ3MpCi0gICAgewotICAgICAgICBQYXJjZWwgZGF0YSwgcmVwbHk7Ci0gICAgICAgIGRhdGEud3JpdGVJbnRlcmZhY2VUb2tlbihJU3VyZmFjZUZsaW5nZXJDbGllbnQ6OmdldEludGVyZmFjZURlc2NyaXB0b3IoKSk7Ci0gICAgICAgIGRhdGEud3JpdGVJbnQzMihwaWQpOwotICAgICAgICBkYXRhLndyaXRlU3RyaW5nOChuYW1lKTsKLSAgICAgICAgZGF0YS53cml0ZUludDMyKGRpc3BsYXkpOwotICAgICAgICBkYXRhLndyaXRlSW50MzIodyk7Ci0gICAgICAgIGRhdGEud3JpdGVJbnQzMihoKTsKLSAgICAgICAgZGF0YS53cml0ZUludDMyKGZvcm1hdCk7Ci0gICAgICAgIGRhdGEud3JpdGVJbnQzMihmbGFncyk7Ci0gICAgICAgIHJlbW90ZSgpLT50cmFuc2FjdChDUkVBVEVfU1VSRkFDRSwgZGF0YSwgJnJlcGx5KTsKLSAgICAgICAgcGFyYW1zLT5yZWFkRnJvbVBhcmNlbChyZXBseSk7Ci0gICAgICAgIHJldHVybiBpbnRlcmZhY2VfY2FzdDxJU3VyZmFjZT4ocmVwbHkucmVhZFN0cm9uZ0JpbmRlcigpKTsKLSAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICB2aXJ0dWFsIHN0YXR1c190IGRlc3Ryb3lTdXJmYWNlKFN1cmZhY2VJRCBzaWQpCi0gICAgewotICAgICAgICBQYXJjZWwgZGF0YSwgcmVwbHk7Ci0gICAgICAgIGRhdGEud3JpdGVJbnRlcmZhY2VUb2tlbihJU3VyZmFjZUZsaW5nZXJDbGllbnQ6OmdldEludGVyZmFjZURlc2NyaXB0b3IoKSk7Ci0gICAgICAgIGRhdGEud3JpdGVJbnQzMihzaWQpOwotICAgICAgICByZW1vdGUoKS0+dHJhbnNhY3QoREVTVFJPWV9TVVJGQUNFLCBkYXRhLCAmcmVwbHkpOwotICAgICAgICByZXR1cm4gcmVwbHkucmVhZEludDMyKCk7Ci0gICAgfQotCi0gICAgdmlydHVhbCBzdGF0dXNfdCBzZXRTdGF0ZShpbnQzMl90IGNvdW50LCBjb25zdCBsYXllcl9zdGF0ZV90KiBzdGF0ZXMpCi0gICAgewotICAgICAgICBQYXJjZWwgZGF0YSwgcmVwbHk7Ci0gICAgICAgIGRhdGEud3JpdGVJbnRlcmZhY2VUb2tlbihJU3VyZmFjZUZsaW5nZXJDbGllbnQ6OmdldEludGVyZmFjZURlc2NyaXB0b3IoKSk7Ci0gICAgICAgIGRhdGEud3JpdGVJbnQzMihjb3VudCk7Ci0gICAgICAgIGZvciAoaW50IGk9MCA7IGk8Y291bnQgOyBpKyspCi0gICAgICAgICAgICBzdGF0ZXNbaV0ud3JpdGUoZGF0YSk7Ci0gICAgICAgIHJlbW90ZSgpLT50cmFuc2FjdChTRVRfU1RBVEUsIGRhdGEsICZyZXBseSk7Ci0gICAgICAgIHJldHVybiByZXBseS5yZWFkSW50MzIoKTsKLSAgICB9Ci19OwotCi1JTVBMRU1FTlRfTUVUQV9JTlRFUkZBQ0UoU3VyZmFjZUZsaW5nZXJDbGllbnQsICJhbmRyb2lkLnVpLklTdXJmYWNlRmxpbmdlckNsaWVudCIpOwotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLXN0YXR1c190IEJuU3VyZmFjZUZsaW5nZXJDbGllbnQ6Om9uVHJhbnNhY3QoCi0gICAgdWludDMyX3QgY29kZSwgY29uc3QgUGFyY2VsJiBkYXRhLCBQYXJjZWwqIHJlcGx5LCB1aW50MzJfdCBmbGFncykKLXsKLSAgICAvLyBjb2RlcyB0aGF0IGRvbid0IHJlcXVpcmUgcGVybWlzc2lvbiBjaGVjawotCi0gICAgc3dpdGNoKGNvZGUpIHsKLSAgICAgICAgY2FzZSBHRVRfQ0JMSzogewotICAgICAgICAgICAgQ0hFQ0tfSU5URVJGQUNFKElTdXJmYWNlRmxpbmdlckNsaWVudCwgZGF0YSwgcmVwbHkpOwotICAgICAgICAgICAgc3A8SU1lbW9yeUhlYXA+IGN0bChnZXRDb250cm9sQmxvY2soKSk7Ci0gICAgICAgICAgICByZXBseS0+d3JpdGVTdHJvbmdCaW5kZXIoY3RsLT5hc0JpbmRlcigpKTsKLSAgICAgICAgICAgIHJldHVybiBOT19FUlJPUjsKLSAgICAgICAgfSBicmVhazsKLSAgICB9Ci0KLSAgICAvLyB0aGVzZSBtdXN0IGJlIGNoZWNrZWQKLSAgICAgCi0gICAgIElQQ1RocmVhZFN0YXRlKiBpcGMgPSBJUENUaHJlYWRTdGF0ZTo6c2VsZigpOwotICAgICBjb25zdCBpbnQgcGlkID0gaXBjLT5nZXRDYWxsaW5nUGlkKCk7Ci0gICAgIGNvbnN0IGludCB1aWQgPSBpcGMtPmdldENhbGxpbmdVaWQoKTsKLSAgICAgY29uc3QgaW50IHNlbGZfcGlkID0gZ2V0cGlkKCk7Ci0gICAgIGlmIChVTkxJS0VMWShwaWQgIT0gc2VsZl9waWQgJiYgdWlkICE9IEFJRF9HUkFQSElDUykpIHsKLSAgICAgICAgIC8vIHdlJ3JlIGNhbGxlZCBmcm9tIGEgZGlmZmVyZW50IHByb2Nlc3MsIGRvIHRoZSByZWFsIGNoZWNrCi0gICAgICAgICBpZiAoIWNoZWNrQ2FsbGluZ1Blcm1pc3Npb24oCi0gICAgICAgICAgICAgICAgIFN0cmluZzE2KCJhbmRyb2lkLnBlcm1pc3Npb24uQUNDRVNTX1NVUkZBQ0VfRkxJTkdFUiIpKSkKLSAgICAgICAgIHsKLSAgICAgICAgICAgICBMT0dFKCJQZXJtaXNzaW9uIERlbmlhbDogIgotICAgICAgICAgICAgICAgICAgICAgImNhbid0IG9wZW5HbG9iYWxUcmFuc2FjdGlvbiBwaWQ9JWQsIHVpZD0lZCIsIHBpZCwgdWlkKTsKLSAgICAgICAgICAgICByZXR1cm4gUEVSTUlTU0lPTl9ERU5JRUQ7Ci0gICAgICAgICB9Ci0gICAgIH0KLSAgIAotICAgICBzd2l0Y2goY29kZSkgewotICAgICAgICBjYXNlIENSRUFURV9TVVJGQUNFOiB7Ci0gICAgICAgICAgICBDSEVDS19JTlRFUkZBQ0UoSVN1cmZhY2VGbGluZ2VyQ2xpZW50LCBkYXRhLCByZXBseSk7Ci0gICAgICAgICAgICBzdXJmYWNlX2RhdGFfdCBwYXJhbXM7Ci0gICAgICAgICAgICBpbnQzMl90IHBpZCA9IGRhdGEucmVhZEludDMyKCk7Ci0gICAgICAgICAgICBTdHJpbmc4IG5hbWUgPSBkYXRhLnJlYWRTdHJpbmc4KCk7Ci0gICAgICAgICAgICBEaXNwbGF5SUQgZGlzcGxheSA9IGRhdGEucmVhZEludDMyKCk7Ci0gICAgICAgICAgICB1aW50MzJfdCB3ID0gZGF0YS5yZWFkSW50MzIoKTsKLSAgICAgICAgICAgIHVpbnQzMl90IGggPSBkYXRhLnJlYWRJbnQzMigpOwotICAgICAgICAgICAgUGl4ZWxGb3JtYXQgZm9ybWF0ID0gZGF0YS5yZWFkSW50MzIoKTsKLSAgICAgICAgICAgIHVpbnQzMl90IGZsYWdzID0gZGF0YS5yZWFkSW50MzIoKTsKLSAgICAgICAgICAgIHNwPElTdXJmYWNlPiBzID0gY3JlYXRlU3VyZmFjZSgmcGFyYW1zLCBwaWQsIG5hbWUsIGRpc3BsYXksIHcsIGgsCi0gICAgICAgICAgICAgICAgICAgIGZvcm1hdCwgZmxhZ3MpOwotICAgICAgICAgICAgcGFyYW1zLndyaXRlVG9QYXJjZWwocmVwbHkpOwotICAgICAgICAgICAgcmVwbHktPndyaXRlU3Ryb25nQmluZGVyKHMtPmFzQmluZGVyKCkpOwotICAgICAgICAgICAgcmV0dXJuIE5PX0VSUk9SOwotICAgICAgICB9IGJyZWFrOwotICAgICAgICBjYXNlIERFU1RST1lfU1VSRkFDRTogewotICAgICAgICAgICAgQ0hFQ0tfSU5URVJGQUNFKElTdXJmYWNlRmxpbmdlckNsaWVudCwgZGF0YSwgcmVwbHkpOwotICAgICAgICAgICAgcmVwbHktPndyaXRlSW50MzIoIGRlc3Ryb3lTdXJmYWNlKCBkYXRhLnJlYWRJbnQzMigpICkgKTsKLSAgICAgICAgICAgIHJldHVybiBOT19FUlJPUjsKLSAgICAgICAgfSBicmVhazsKLSAgICAgICAgY2FzZSBTRVRfU1RBVEU6IHsKLSAgICAgICAgICAgIENIRUNLX0lOVEVSRkFDRShJU3VyZmFjZUZsaW5nZXJDbGllbnQsIGRhdGEsIHJlcGx5KTsKLSAgICAgICAgICAgIGludDMyX3QgY291bnQgPSBkYXRhLnJlYWRJbnQzMigpOwotICAgICAgICAgICAgbGF5ZXJfc3RhdGVfdCogc3RhdGVzID0gbmV3IGxheWVyX3N0YXRlX3RbY291bnRdOwotICAgICAgICAgICAgZm9yIChpbnQgaT0wIDsgaTxjb3VudCA7IGkrKykKLSAgICAgICAgICAgICAgICBzdGF0ZXNbaV0ucmVhZChkYXRhKTsKLSAgICAgICAgICAgIHN0YXR1c190IGVyciA9IHNldFN0YXRlKGNvdW50LCBzdGF0ZXMpOwotICAgICAgICAgICAgZGVsZXRlIFtdIHN0YXRlczsKLSAgICAgICAgICAgIHJlcGx5LT53cml0ZUludDMyKGVycik7Ci0gICAgICAgICAgICByZXR1cm4gTk9fRVJST1I7Ci0gICAgICAgIH0gYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gQkJpbmRlcjo6b25UcmFuc2FjdChjb2RlLCBkYXRhLCByZXBseSwgZmxhZ3MpOwotICAgIH0KLX0KLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1zdGF0dXNfdCBJU3VyZmFjZUZsaW5nZXJDbGllbnQ6OnN1cmZhY2VfZGF0YV90OjpyZWFkRnJvbVBhcmNlbChjb25zdCBQYXJjZWwmIHBhcmNlbCkKLXsKLSAgICB0b2tlbiAgICA9IHBhcmNlbC5yZWFkSW50MzIoKTsKLSAgICBpZGVudGl0eSA9IHBhcmNlbC5yZWFkSW50MzIoKTsKLSAgICB3aWR0aCAgICA9IHBhcmNlbC5yZWFkSW50MzIoKTsKLSAgICBoZWlnaHQgICA9IHBhcmNlbC5yZWFkSW50MzIoKTsKLSAgICBmb3JtYXQgICA9IHBhcmNlbC5yZWFkSW50MzIoKTsKLSAgICByZXR1cm4gTk9fRVJST1I7Ci19Ci0KLXN0YXR1c190IElTdXJmYWNlRmxpbmdlckNsaWVudDo6c3VyZmFjZV9kYXRhX3Q6OndyaXRlVG9QYXJjZWwoUGFyY2VsKiBwYXJjZWwpIGNvbnN0Ci17Ci0gICAgcGFyY2VsLT53cml0ZUludDMyKHRva2VuKTsKLSAgICBwYXJjZWwtPndyaXRlSW50MzIoaWRlbnRpdHkpOwotICAgIHBhcmNlbC0+d3JpdGVJbnQzMih3aWR0aCk7Ci0gICAgcGFyY2VsLT53cml0ZUludDMyKGhlaWdodCk7Ci0gICAgcGFyY2VsLT53cml0ZUludDMyKGZvcm1hdCk7Ci0gICAgcmV0dXJuIE5PX0VSUk9SOwotfQotCi19OyAvLyBuYW1lc3BhY2UgYW5kcm9pZApkaWZmIC0tZ2l0IGEvbGlicy9zdXJmYWNlZmxpbmdlcl9jbGllbnQvU2hhcmVkQnVmZmVyU3RhY2suY3BwIGIvbGlicy9zdXJmYWNlZmxpbmdlcl9jbGllbnQvU2hhcmVkQnVmZmVyU3RhY2suY3BwCmluZGV4IGExN2U4YWMuLmQ2N2E1ODkgMTAwNjQ0Ci0tLSBhL2xpYnMvc3VyZmFjZWZsaW5nZXJfY2xpZW50L1NoYXJlZEJ1ZmZlclN0YWNrLmNwcAorKysgYi9saWJzL3N1cmZhY2VmbGluZ2VyX2NsaWVudC9TaGFyZWRCdWZmZXJTdGFjay5jcHAKQEAgLTQ0LDE1ICs0NCwxMSBAQAogCiAvLyB0aGVzZSBmdW5jdGlvbnMgYXJlIHVzZWQgYnkgdGhlIGNsaWVudHMKIHN0YXR1c190IFNoYXJlZENsaWVudDo6dmFsaWRhdGUoc2l6ZV90IGkpIGNvbnN0IHsKLSAgICBpZiAodWludDMyX3QoaSkgPj0gdWludDMyX3QoTlVNX0xBWUVSU19NQVgpKQorICAgIGlmICh1aW50MzJfdChpKSA+PSB1aW50MzJfdChTaGFyZWRCdWZmZXJTdGFjazo6TlVNX0xBWUVSU19NQVgpKQogICAgICAgICByZXR1cm4gQkFEX0lOREVYOwogICAgIHJldHVybiBzdXJmYWNlc1tpXS5zdGF0dXM7CiB9CiAKLXVpbnQzMl90IFNoYXJlZENsaWVudDo6Z2V0SWRlbnRpdHkoc2l6ZV90IHRva2VuKSBjb25zdCB7Ci0gICAgcmV0dXJuIHVpbnQzMl90KHN1cmZhY2VzW3Rva2VuXS5pZGVudGl0eSk7Ci19Ci0KIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogCkBAIC02MiwyNCArNTgsNTIgQEAKIAogdm9pZCBTaGFyZWRCdWZmZXJTdGFjazo6aW5pdChpbnQzMl90IGkpCiB7Ci0gICAgaW5Vc2UgPSAtMTsKKyAgICBpblVzZSA9IC0yOwogICAgIHN0YXR1cyA9IE5PX0VSUk9SOwogICAgIGlkZW50aXR5ID0gaTsKIH0KIAorc3RhdHVzX3QgU2hhcmVkQnVmZmVyU3RhY2s6OnNldENyb3AoaW50IGJ1ZmZlciwgY29uc3QgUmVjdCYgY3JvcCkKK3sKKyAgICBpZiAodWludDMyX3QoYnVmZmVyKSA+PSBOVU1fQlVGRkVSX01BWCkKKyAgICAgICAgcmV0dXJuIEJBRF9JTkRFWDsKKworICAgIGJ1ZmZlcnNbYnVmZmVyXS5jcm9wLmwgPSB1aW50MTZfdChjcm9wLmxlZnQpOworICAgIGJ1ZmZlcnNbYnVmZmVyXS5jcm9wLnQgPSB1aW50MTZfdChjcm9wLnRvcCk7CisgICAgYnVmZmVyc1tidWZmZXJdLmNyb3AuciA9IHVpbnQxNl90KGNyb3AucmlnaHQpOworICAgIGJ1ZmZlcnNbYnVmZmVyXS5jcm9wLmIgPSB1aW50MTZfdChjcm9wLmJvdHRvbSk7CisgICAgcmV0dXJuIE5PX0VSUk9SOworfQorCiBzdGF0dXNfdCBTaGFyZWRCdWZmZXJTdGFjazo6c2V0RGlydHlSZWdpb24oaW50IGJ1ZmZlciwgY29uc3QgUmVnaW9uJiBkaXJ0eSkKIHsKICAgICBpZiAodWludDMyX3QoYnVmZmVyKSA+PSBOVU1fQlVGRkVSX01BWCkKICAgICAgICAgcmV0dXJuIEJBRF9JTkRFWDsKIAotICAgIC8vIGluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIHdlIG9ubHkgc2VuZCBhIHNpbmdsZSByZWN0YW5nbGUKLSAgICBjb25zdCBSZWN0IGJvdW5kcyhkaXJ0eS5nZXRCb3VuZHMoKSk7Ci0gICAgRmxhdFJlZ2lvbiYgcmVnKGRpcnR5UmVnaW9uW2J1ZmZlcl0pOwotICAgIHJlZy5jb3VudCA9IDE7Ci0gICAgcmVnLnJlY3RzWzBdID0gdWludDE2X3QoYm91bmRzLmxlZnQpOwotICAgIHJlZy5yZWN0c1sxXSA9IHVpbnQxNl90KGJvdW5kcy50b3ApOwotICAgIHJlZy5yZWN0c1syXSA9IHVpbnQxNl90KGJvdW5kcy5yaWdodCk7Ci0gICAgcmVnLnJlY3RzWzNdID0gdWludDE2X3QoYm91bmRzLmJvdHRvbSk7CisgICAgRmxhdFJlZ2lvbiYgcmVnKGJ1ZmZlcnNbYnVmZmVyXS5kaXJ0eVJlZ2lvbik7CisgICAgaWYgKGRpcnR5LmlzRW1wdHkoKSkgeworICAgICAgICByZWcuY291bnQgPSAwOworICAgICAgICByZXR1cm4gTk9fRVJST1I7CisgICAgfQorCisgICAgc2l6ZV90IGNvdW50OworICAgIFJlY3QgY29uc3QqIHIgPSBkaXJ0eS5nZXRBcnJheSgmY291bnQpOworICAgIGlmIChjb3VudCA+IEZsYXRSZWdpb246Ok5VTV9SRUNUX01BWCkgeworICAgICAgICBjb25zdCBSZWN0IGJvdW5kcyhkaXJ0eS5nZXRCb3VuZHMoKSk7CisgICAgICAgIHJlZy5jb3VudCA9IDE7CisgICAgICAgIHJlZy5yZWN0c1swXS5sID0gdWludDE2X3QoYm91bmRzLmxlZnQpOworICAgICAgICByZWcucmVjdHNbMF0udCA9IHVpbnQxNl90KGJvdW5kcy50b3ApOworICAgICAgICByZWcucmVjdHNbMF0uciA9IHVpbnQxNl90KGJvdW5kcy5yaWdodCk7CisgICAgICAgIHJlZy5yZWN0c1swXS5iID0gdWludDE2X3QoYm91bmRzLmJvdHRvbSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmVnLmNvdW50ID0gY291bnQ7CisgICAgICAgIGZvciAoc2l6ZV90IGk9MCA7IGk8Y291bnQgOyBpKyspIHsKKyAgICAgICAgICAgIHJlZy5yZWN0c1tpXS5sID0gdWludDE2X3QocltpXS5sZWZ0KTsKKyAgICAgICAgICAgIHJlZy5yZWN0c1tpXS50ID0gdWludDE2X3QocltpXS50b3ApOworICAgICAgICAgICAgcmVnLnJlY3RzW2ldLnIgPSB1aW50MTZfdChyW2ldLnJpZ2h0KTsKKyAgICAgICAgICAgIHJlZy5yZWN0c1tpXS5iID0gdWludDE2X3QocltpXS5ib3R0b20pOworICAgICAgICB9CisgICAgfQogICAgIHJldHVybiBOT19FUlJPUjsKIH0KIApAQCAtODksMTggKzExMywzNyBAQAogICAgIGlmICh1aW50MzJfdChidWZmZXIpID49IE5VTV9CVUZGRVJfTUFYKQogICAgICAgICByZXR1cm4gcmVzOwogCi0gICAgY29uc3QgRmxhdFJlZ2lvbiYgcmVnKGRpcnR5UmVnaW9uW2J1ZmZlcl0pOwotICAgIHJlcy5zZXQoUmVjdChyZWcucmVjdHNbMF0sIHJlZy5yZWN0c1sxXSwgcmVnLnJlY3RzWzJdLCByZWcucmVjdHNbM10pKTsKKyAgICBjb25zdCBGbGF0UmVnaW9uJiByZWcoYnVmZmVyc1tidWZmZXJdLmRpcnR5UmVnaW9uKTsKKyAgICBpZiAocmVnLmNvdW50ID4gRmxhdFJlZ2lvbjo6TlVNX1JFQ1RfTUFYKQorICAgICAgICByZXR1cm4gcmVzOworCisgICAgaWYgKHJlZy5jb3VudCA9PSAxKSB7CisgICAgICAgIGNvbnN0IFJlY3QgcigKKyAgICAgICAgICAgICAgICByZWcucmVjdHNbMF0ubCwKKyAgICAgICAgICAgICAgICByZWcucmVjdHNbMF0udCwKKyAgICAgICAgICAgICAgICByZWcucmVjdHNbMF0uciwKKyAgICAgICAgICAgICAgICByZWcucmVjdHNbMF0uYik7CisgICAgICAgIHJlcy5zZXQocik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZm9yIChzaXplX3QgaT0wIDsgaTxyZWcuY291bnQgOyBpKyspIHsKKyAgICAgICAgICAgIGNvbnN0IFJlY3QgcigKKyAgICAgICAgICAgICAgICAgICAgcmVnLnJlY3RzW2ldLmwsCisgICAgICAgICAgICAgICAgICAgIHJlZy5yZWN0c1tpXS50LAorICAgICAgICAgICAgICAgICAgICByZWcucmVjdHNbaV0uciwKKyAgICAgICAgICAgICAgICAgICAgcmVnLnJlY3RzW2ldLmIpOworICAgICAgICAgICAgcmVzLm9yU2VsZihyKTsKKyAgICAgICAgfQorICAgIH0KICAgICByZXR1cm4gcmVzOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIFNoYXJlZEJ1ZmZlckJhc2U6OlNoYXJlZEJ1ZmZlckJhc2UoU2hhcmVkQ2xpZW50KiBzaGFyZWRDbGllbnQsCi0gICAgICAgIGludCBzdXJmYWNlLCBpbnQgbnVtLCBpbnQzMl90IGlkZW50aXR5KQorICAgICAgICBpbnQgc3VyZmFjZSwgaW50MzJfdCBpZGVudGl0eSkKICAgICA6IG1TaGFyZWRDbGllbnQoc2hhcmVkQ2xpZW50KSwgCiAgICAgICBtU2hhcmVkU3RhY2soc2hhcmVkQ2xpZW50LT5zdXJmYWNlcyArIHN1cmZhY2UpLAotICAgICAgbU51bUJ1ZmZlcnMobnVtKSwgbUlkZW50aXR5KGlkZW50aXR5KQorICAgICAgbUlkZW50aXR5KGlkZW50aXR5KQogewogfQogCkBAIC0xMDgsMTggKzE1MSwxOCBAQAogewogfQogCi11aW50MzJfdCBTaGFyZWRCdWZmZXJCYXNlOjpnZXRJZGVudGl0eSgpCi17Ci0gICAgU2hhcmVkQnVmZmVyU3RhY2smIHN0YWNrKCAqbVNoYXJlZFN0YWNrICk7Ci0gICAgcmV0dXJuIHN0YWNrLmlkZW50aXR5OwotfQotCiBzdGF0dXNfdCBTaGFyZWRCdWZmZXJCYXNlOjpnZXRTdGF0dXMoKSBjb25zdAogewogICAgIFNoYXJlZEJ1ZmZlclN0YWNrJiBzdGFjayggKm1TaGFyZWRTdGFjayApOwogICAgIHJldHVybiBzdGFjay5zdGF0dXM7CiB9CiAKK2ludDMyX3QgU2hhcmVkQnVmZmVyQmFzZTo6Z2V0SWRlbnRpdHkoKSBjb25zdAoreworICAgIFNoYXJlZEJ1ZmZlclN0YWNrJiBzdGFjayggKm1TaGFyZWRTdGFjayApOworICAgIHJldHVybiBzdGFjay5pZGVudGl0eTsKK30KKwogc2l6ZV90IFNoYXJlZEJ1ZmZlckJhc2U6OmdldEZyb250QnVmZmVyKCkgY29uc3QKIHsKICAgICBTaGFyZWRCdWZmZXJTdGFjayYgc3RhY2soICptU2hhcmVkU3RhY2sgKTsKQEAgLTEzMiwxNiArMTc1LDUyIEBACiAgICAgY2hhciBidWZmZXJbU0laRV07CiAgICAgU3RyaW5nOCByZXN1bHQ7CiAgICAgU2hhcmVkQnVmZmVyU3RhY2smIHN0YWNrKCAqbVNoYXJlZFN0YWNrICk7Ci0gICAgaW50IHRhaWwgPSAobU51bUJ1ZmZlcnMgKyBzdGFjay5oZWFkIC0gc3RhY2suYXZhaWxhYmxlICsgMSkgJSBtTnVtQnVmZmVyczsKICAgICBzbnByaW50ZihidWZmZXIsIFNJWkUsIAotICAgICAgICAgICAgIiVzWyBoZWFkPSUyZCwgYXZhaWxhYmxlPSUyZCwgcXVldWVkPSUyZCwgdGFpbD0lMmQgXSAiCi0gICAgICAgICAgICAicmVhbGxvY01hc2s9JTA4eCwgaW5Vc2U9JTJkLCBpZGVudGl0eT0lZCwgc3RhdHVzPSVkXG4iLAotICAgICAgICAgICAgcHJlZml4LCBzdGFjay5oZWFkLCBzdGFjay5hdmFpbGFibGUsIHN0YWNrLnF1ZXVlZCwgdGFpbCwKKyAgICAgICAgICAgICIlc1sgaGVhZD0lMmQsIGF2YWlsYWJsZT0lMmQsIHF1ZXVlZD0lMmQgXSAiCisgICAgICAgICAgICAicmVhbGxvY01hc2s9JTA4eCwgaW5Vc2U9JTJkLCBpZGVudGl0eT0lZCwgc3RhdHVzPSVkIiwKKyAgICAgICAgICAgIHByZWZpeCwgc3RhY2suaGVhZCwgc3RhY2suYXZhaWxhYmxlLCBzdGFjay5xdWV1ZWQsCiAgICAgICAgICAgICBzdGFjay5yZWFsbG9jTWFzaywgc3RhY2suaW5Vc2UsIHN0YWNrLmlkZW50aXR5LCBzdGFjay5zdGF0dXMpOwogICAgIHJlc3VsdC5hcHBlbmQoYnVmZmVyKTsKKyAgICByZXN1bHQuYXBwZW5kKCJcbiIpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3N0YXR1c190IFNoYXJlZEJ1ZmZlckJhc2U6OndhaXRGb3JDb25kaXRpb24oY29uc3QgQ29uZGl0aW9uQmFzZSYgY29uZGl0aW9uKQoreworICAgIGNvbnN0IFNoYXJlZEJ1ZmZlclN0YWNrJiBzdGFjayggKm1TaGFyZWRTdGFjayApOworICAgIFNoYXJlZENsaWVudCYgY2xpZW50KCAqbVNoYXJlZENsaWVudCApOworICAgIGNvbnN0IG5zZWNzX3QgVElNRU9VVCA9IHMybnMoMSk7CisgICAgY29uc3QgaW50IGlkZW50aXR5ID0gbUlkZW50aXR5OworCisgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKGNsaWVudC5sb2NrKTsKKyAgICB3aGlsZSAoKGNvbmRpdGlvbigpPT1mYWxzZSkgJiYKKyAgICAgICAgICAgIChzdGFjay5pZGVudGl0eSA9PSBpZGVudGl0eSkgJiYKKyAgICAgICAgICAgIChzdGFjay5zdGF0dXMgPT0gTk9fRVJST1IpKQorICAgIHsKKyAgICAgICAgc3RhdHVzX3QgZXJyID0gY2xpZW50LmN2LndhaXRSZWxhdGl2ZShjbGllbnQubG9jaywgVElNRU9VVCk7CisgICAgICAgIC8vIGhhbmRsZSBlcnJvcnMgYW5kIHRpbWVvdXRzCisgICAgICAgIGlmIChDQ19VTkxJS0VMWShlcnIgIT0gTk9fRVJST1IpKSB7CisgICAgICAgICAgICBpZiAoZXJyID09IFRJTUVEX09VVCkgeworICAgICAgICAgICAgICAgIGlmIChjb25kaXRpb24oKSkgeworICAgICAgICAgICAgICAgICAgICBMT0dFKCJ3YWl0Rm9yQ29uZGl0aW9uKCVzKSB0aW1lZCBvdXQgKGlkZW50aXR5PSVkKSwgIgorICAgICAgICAgICAgICAgICAgICAgICAgImJ1dCBjb25kaXRpb24gaXMgdHJ1ZSEgV2UgcmVjb3ZlcmVkIGJ1dCBpdCAiCisgICAgICAgICAgICAgICAgICAgICAgICAic2hvdWxkbid0IGhhcHBlbi4iICwgY29uZGl0aW9uLm5hbWUoKSwgc3RhY2suaWRlbnRpdHkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBMT0dXKCJ3YWl0Rm9yQ29uZGl0aW9uKCVzKSB0aW1lZCBvdXQgIgorICAgICAgICAgICAgICAgICAgICAgICAgIihpZGVudGl0eT0lZCwgc3RhdHVzPSVkKS4gIgorICAgICAgICAgICAgICAgICAgICAgICAgIkNQVSBtYXkgYmUgcGVnZ2VkLiB0cnlpbmcgYWdhaW4uIiwgY29uZGl0aW9uLm5hbWUoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrLmlkZW50aXR5LCBzdGFjay5zdGF0dXMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgTE9HRSgid2FpdEZvckNvbmRpdGlvbiglcykgZXJyb3IgKCVzKSAiLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uZGl0aW9uLm5hbWUoKSwgc3RyZXJyb3IoLWVycikpOworICAgICAgICAgICAgICAgIHJldHVybiBlcnI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIChzdGFjay5pZGVudGl0eSAhPSBtSWRlbnRpdHkpID8gc3RhdHVzX3QoQkFEX0lOREVYKSA6IHN0YWNrLnN0YXR1czsKK30KIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC8vIGNvbmRpdGlvbnMgYW5kIHVwZGF0ZXMKIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTE0OSwyNCArMjI4LDM0IEBACiBTaGFyZWRCdWZmZXJDbGllbnQ6OkRlcXVldWVDb25kaXRpb246OkRlcXVldWVDb25kaXRpb24oCiAgICAgICAgIFNoYXJlZEJ1ZmZlckNsaWVudCogc2JjKSA6IENvbmRpdGlvbkJhc2Uoc2JjKSAgeyAKIH0KLWJvb2wgU2hhcmVkQnVmZmVyQ2xpZW50OjpEZXF1ZXVlQ29uZGl0aW9uOjpvcGVyYXRvcigpKCkgeworYm9vbCBTaGFyZWRCdWZmZXJDbGllbnQ6OkRlcXVldWVDb25kaXRpb246Om9wZXJhdG9yKCkoKSBjb25zdCB7CiAgICAgcmV0dXJuIHN0YWNrLmF2YWlsYWJsZSA+IDA7CiB9CiAKIFNoYXJlZEJ1ZmZlckNsaWVudDo6TG9ja0NvbmRpdGlvbjo6TG9ja0NvbmRpdGlvbigKICAgICAgICAgU2hhcmVkQnVmZmVyQ2xpZW50KiBzYmMsIGludCBidWYpIDogQ29uZGl0aW9uQmFzZShzYmMpLCBidWYoYnVmKSB7IAogfQotYm9vbCBTaGFyZWRCdWZmZXJDbGllbnQ6OkxvY2tDb25kaXRpb246Om9wZXJhdG9yKCkoKSB7Ci0gICAgcmV0dXJuIChidWYgIT0gc3RhY2suaGVhZCB8fCAKK2Jvb2wgU2hhcmVkQnVmZmVyQ2xpZW50OjpMb2NrQ29uZGl0aW9uOjpvcGVyYXRvcigpKCkgY29uc3QgeworICAgIC8vIE5PVEU6IGlmIHN0YWNrLmhlYWQgaXMgbWVzc2VkIHVwLCB3ZSBjb3VsZCBjcmFzaCB0aGUgY2xpZW50CisgICAgLy8gb3IgY2F1c2Ugc29tZSBkcmF3aW5nIGFydGlmYWN0cy4gVGhpcyBpcyBva2F5LCBhcyBsb25nIGFzIGl0IGlzCisgICAgLy8gbGltaXRlZCB0byB0aGUgY2xpZW50LgorICAgIHJldHVybiAoYnVmICE9IHN0YWNrLmluZGV4W3N0YWNrLmhlYWRdIHx8CiAgICAgICAgICAgICAoc3RhY2sucXVldWVkID4gMCAmJiBzdGFjay5pblVzZSAhPSBidWYpKTsKIH0KIAogU2hhcmVkQnVmZmVyU2VydmVyOjpSZWFsbG9jYXRlQ29uZGl0aW9uOjpSZWFsbG9jYXRlQ29uZGl0aW9uKAogICAgICAgICBTaGFyZWRCdWZmZXJCYXNlKiBzYmIsIGludCBidWYpIDogQ29uZGl0aW9uQmFzZShzYmIpLCBidWYoYnVmKSB7IAogfQotYm9vbCBTaGFyZWRCdWZmZXJTZXJ2ZXI6OlJlYWxsb2NhdGVDb25kaXRpb246Om9wZXJhdG9yKCkoKSB7Citib29sIFNoYXJlZEJ1ZmZlclNlcnZlcjo6UmVhbGxvY2F0ZUNvbmRpdGlvbjo6b3BlcmF0b3IoKSgpIGNvbnN0IHsKKyAgICBpbnQzMl90IGhlYWQgPSBzdGFjay5oZWFkOworICAgIGlmICh1aW50MzJfdChoZWFkKSA+PSBTaGFyZWRCdWZmZXJTdGFjazo6TlVNX0JVRkZFUl9NQVgpIHsKKyAgICAgICAgLy8gaWYgc3RhY2suaGVhZCBpcyBtZXNzZWQgdXAsIHdlIGNhbm5vdCBhbGxvdyB0aGUgc2VydmVyIHRvCisgICAgICAgIC8vIGNyYXNoIChzaW5jZSBzdGFjay5oZWFkIGlzIG1hcHBlZCBvbiB0aGUgY2xpZW50IHNpZGUpCisgICAgICAgIHN0YWNrLnN0YXR1cyA9IEJBRF9WQUxVRTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KICAgICAvLyBUT0RPOiB3ZSBzaG91bGQgYWxzbyBjaGVjayB0aGF0IGJ1ZiBoYXMgYmVlbiBkZXF1ZXVlZAotICAgIHJldHVybiAoYnVmICE9IHN0YWNrLmhlYWQpOworICAgIHJldHVybiAoYnVmICE9IHN0YWNrLmluZGV4W2hlYWRdKTsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTkzLDggKzI4MiwxMCBAQAogfQogc3NpemVfdCBTaGFyZWRCdWZmZXJTZXJ2ZXI6OlVubG9ja1VwZGF0ZTo6b3BlcmF0b3IoKSgpIHsKICAgICBpZiAoc3RhY2suaW5Vc2UgIT0gbG9ja2VkQnVmZmVyKSB7Ci0gICAgICAgIExPR0UoInVubG9ja2luZyAlZCwgYnV0IGN1cnJlbnRseSBsb2NrZWQgYnVmZmVyIGlzICVkIiwKLSAgICAgICAgICAgICAgICBsb2NrZWRCdWZmZXIsIHN0YWNrLmluVXNlKTsKKyAgICAgICAgTE9HRSgidW5sb2NraW5nICVkLCBidXQgY3VycmVudGx5IGxvY2tlZCBidWZmZXIgaXMgJWQgIgorICAgICAgICAgICAgICIoaWRlbnRpdHk9JWQsIHRva2VuPSVkKSIsCisgICAgICAgICAgICAgICAgbG9ja2VkQnVmZmVyLCBzdGFjay5pblVzZSwKKyAgICAgICAgICAgICAgICBzdGFjay5pZGVudGl0eSwgc3RhY2sudG9rZW4pOwogICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOwogICAgIH0KICAgICBhbmRyb2lkX2F0b21pY193cml0ZSgtMSwgJnN0YWNrLmluVXNlKTsKQEAgLTIwNiwxMSArMjk3LDEyIEBACiAgICAgOiBVcGRhdGVCYXNlKHNiYiksIG51bUJ1ZmZlcnMobnVtQnVmZmVycykgewogfQogc3NpemVfdCBTaGFyZWRCdWZmZXJTZXJ2ZXI6OlJldGlyZVVwZGF0ZTo6b3BlcmF0b3IoKSgpIHsKLSAgICAvLyBoZWFkIGlzIG9ubHkgd3JpdHRlbiBpbiB0aGlzIGZ1bmN0aW9uLCB3aGljaCBpcyBzaW5nbGUtdGhyZWFkLgogICAgIGludDMyX3QgaGVhZCA9IHN0YWNrLmhlYWQ7CisgICAgaWYgKHVpbnQzMl90KGhlYWQpID49IFNoYXJlZEJ1ZmZlclN0YWNrOjpOVU1fQlVGRkVSX01BWCkKKyAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKIAogICAgIC8vIFByZXZlbnRpdmVseSBsb2NrIHRoZSBjdXJyZW50IGJ1ZmZlciBiZWZvcmUgdXBkYXRpbmcgcXVldWVkLgotICAgIGFuZHJvaWRfYXRvbWljX3dyaXRlKGhlYWQsICZzdGFjay5pblVzZSk7CisgICAgYW5kcm9pZF9hdG9taWNfd3JpdGUoc3RhY2suaW5kZXhbaGVhZF0sICZzdGFjay5pblVzZSk7CiAKICAgICAvLyBEZWNyZW1lbnQgdGhlIG51bWJlciBvZiBxdWV1ZWQgYnVmZmVycyAKICAgICBpbnQzMl90IHF1ZXVlZDsKQEAgLTIyMSwxNiArMzEzLDE1IEBACiAgICAgICAgIH0KICAgICB9IHdoaWxlIChhbmRyb2lkX2F0b21pY19jbXB4Y2hnKHF1ZXVlZCwgcXVldWVkLTEsICZzdGFjay5xdWV1ZWQpKTsKICAgICAKLSAgICAvLyB1cGRhdGUgdGhlIGhlYWQgcG9pbnRlcgotICAgIGhlYWQgPSAoKGhlYWQrMSA+PSBudW1CdWZmZXJzKSA/IDAgOiBoZWFkKzEpOwotCiAgICAgLy8gbG9jayB0aGUgYnVmZmVyIGJlZm9yZSBhZHZhbmNpbmcgaGVhZCwgd2hpY2ggYXV0b21hdGljYWxseSB1bmxvY2tzCiAgICAgLy8gdGhlIGJ1ZmZlciB3ZSBwcmV2ZW50aXZlbHkgbG9ja2VkIHVwb24gZW50ZXJpbmcgdGhpcyBmdW5jdGlvbgotICAgIGFuZHJvaWRfYXRvbWljX3dyaXRlKGhlYWQsICZzdGFjay5pblVzZSk7CiAKLSAgICAvLyBhZHZhbmNlIGhlYWQKKyAgICBoZWFkID0gKGhlYWQgKyAxKSAlIG51bUJ1ZmZlcnM7CisgICAgYW5kcm9pZF9hdG9taWNfd3JpdGUoc3RhY2suaW5kZXhbaGVhZF0sICZzdGFjay5pblVzZSk7CisKKyAgICAvLyBoZWFkIGlzIG9ubHkgbW9kaWZpZWQgaGVyZSwgc28gd2UgZG9uJ3QgbmVlZCB0byB1c2UgY21weGNoZwogICAgIGFuZHJvaWRfYXRvbWljX3dyaXRlKGhlYWQsICZzdGFjay5oZWFkKTsKLSAgICAKKwogICAgIC8vIG5vdyB0aGF0IGhlYWQgaGFzIG1vdmVkLCB3ZSBjYW4gaW5jcmVtZW50IHRoZSBudW1iZXIgb2YgYXZhaWxhYmxlIGJ1ZmZlcnMKICAgICBhbmRyb2lkX2F0b21pY19pbmMoJnN0YWNrLmF2YWlsYWJsZSk7CiAgICAgcmV0dXJuIGhlYWQ7CkBAIC0yNTAsNDEgKzM0MSwzMSBAQAogCiBTaGFyZWRCdWZmZXJDbGllbnQ6OlNoYXJlZEJ1ZmZlckNsaWVudChTaGFyZWRDbGllbnQqIHNoYXJlZENsaWVudCwKICAgICAgICAgaW50IHN1cmZhY2UsIGludCBudW0sIGludDMyX3QgaWRlbnRpdHkpCi0gICAgOiBTaGFyZWRCdWZmZXJCYXNlKHNoYXJlZENsaWVudCwgc3VyZmFjZSwgbnVtLCBpZGVudGl0eSksIHRhaWwoMCkKKyAgICA6IFNoYXJlZEJ1ZmZlckJhc2Uoc2hhcmVkQ2xpZW50LCBzdXJmYWNlLCBpZGVudGl0eSksCisgICAgICBtTnVtQnVmZmVycyhudW0pLCB0YWlsKDApLCB1bmRvRGVxdWV1ZVRhaWwoMCkKIHsKKyAgICBTaGFyZWRCdWZmZXJTdGFjayYgc3RhY2soICptU2hhcmVkU3RhY2sgKTsKICAgICB0YWlsID0gY29tcHV0ZVRhaWwoKTsKKyAgICBxdWV1ZWRfaGVhZCA9IHN0YWNrLmhlYWQ7CiB9CiAKIGludDMyX3QgU2hhcmVkQnVmZmVyQ2xpZW50Ojpjb21wdXRlVGFpbCgpIGNvbnN0CiB7CiAgICAgU2hhcmVkQnVmZmVyU3RhY2smIHN0YWNrKCAqbVNoYXJlZFN0YWNrICk7Ci0gICAgLy8gd2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgcmVhZCBhdmFpbGFibGUgYW5kIGhlYWQgY29oZXJlbnRseSwKLSAgICAvLyB3LnIudCBSZXRpcmVVcGRhdGUuCi0gICAgaW50MzJfdCBuZXdUYWlsOwotICAgIGludDMyX3QgYXZhaWw7Ci0gICAgaW50MzJfdCBoZWFkOwotICAgIGRvIHsKLSAgICAgICAgYXZhaWwgPSBzdGFjay5hdmFpbGFibGU7Ci0gICAgICAgIGhlYWQgPSBzdGFjay5oZWFkOwotICAgIH0gd2hpbGUgKHN0YWNrLmF2YWlsYWJsZSAhPSBhdmFpbCk7Ci0gICAgbmV3VGFpbCA9IGhlYWQgLSBhdmFpbCArIDE7Ci0gICAgaWYgKG5ld1RhaWwgPCAwKSB7Ci0gICAgICAgIG5ld1RhaWwgKz0gbU51bUJ1ZmZlcnM7Ci0gICAgfSBlbHNlIGlmIChuZXdUYWlsID49IG1OdW1CdWZmZXJzKSB7Ci0gICAgICAgIG5ld1RhaWwgLT0gbU51bUJ1ZmZlcnM7Ci0gICAgfQotICAgIHJldHVybiBuZXdUYWlsOworICAgIHJldHVybiAobU51bUJ1ZmZlcnMgKyBzdGFjay5oZWFkIC0gc3RhY2suYXZhaWxhYmxlICsgMSkgJSBtTnVtQnVmZmVyczsKIH0KIAogc3NpemVfdCBTaGFyZWRCdWZmZXJDbGllbnQ6OmRlcXVldWUoKQogewogICAgIFNoYXJlZEJ1ZmZlclN0YWNrJiBzdGFjayggKm1TaGFyZWRTdGFjayApOwogCi0gICAgaWYgKHN0YWNrLmhlYWQgPT0gdGFpbCAmJiBzdGFjay5hdmFpbGFibGUgPT0gMikgeworICAgIGlmIChzdGFjay5oZWFkID09IHRhaWwgJiYgc3RhY2suYXZhaWxhYmxlID09IG1OdW1CdWZmZXJzKSB7CiAgICAgICAgIExPR1coImRlcXVldWU6IHRhaWw9JWQsIGhlYWQ9JWQsIGF2YWlsPSVkLCBxdWV1ZWQ9JWQiLAogICAgICAgICAgICAgICAgIHRhaWwsIHN0YWNrLmhlYWQsIHN0YWNrLmF2YWlsYWJsZSwgc3RhY2sucXVldWVkKTsKICAgICB9Ci0gICAgICAgIAorCisgICAgUldMb2NrOjpBdXRvUkxvY2sgX3JkKG1Mb2NrKTsKKwogICAgIGNvbnN0IG5zZWNzX3QgZGVxdWV1ZVRpbWUgPSBzeXN0ZW1UaW1lKFNZU1RFTV9USU1FX1RIUkVBRCk7CiAKICAgICAvL0xPR0QoIlslZF0gYWJvdXQgdG8gZGVxdWV1ZSBhIGJ1ZmZlciIsCkBAIC0zMDEsOSArMzgyLDEwIEBACiAgICAgICAgIExPR1coImRlcXVldWUgcHJvYmFibHkgY2FsbGVkIGZyb20gbXVsdGlwbGUgdGhyZWFkcyEiKTsKICAgICB9CiAKLSAgICBpbnQgZGVxdWV1ZWQgPSB0YWlsOworICAgIHVuZG9EZXF1ZXVlVGFpbCA9IHRhaWw7CisgICAgaW50IGRlcXVldWVkID0gc3RhY2suaW5kZXhbdGFpbF07CiAgICAgdGFpbCA9ICgodGFpbCsxID49IG1OdW1CdWZmZXJzKSA/IDAgOiB0YWlsKzEpOwotICAgIExPR0RfSUYoREVCVUdfQVRPTUlDUywgImRlcXVldWVkPSVkLCB0YWlsPSVkLCAlcyIsCisgICAgTE9HRF9JRihERUJVR19BVE9NSUNTLCAiZGVxdWV1ZWQ9JWQsIHRhaWwrKz0lZCwgJXMiLAogICAgICAgICAgICAgZGVxdWV1ZWQsIHRhaWwsIGR1bXAoIiIpLnN0cmluZygpKTsKIAogICAgIG1EZXF1ZXVlVGltZVtkZXF1ZXVlZF0gPSBkZXF1ZXVlVGltZTsgCkBAIC0zMTMsMTYgKzM5NSwyMyBAQAogCiBzdGF0dXNfdCBTaGFyZWRCdWZmZXJDbGllbnQ6OnVuZG9EZXF1ZXVlKGludCBidWYpCiB7CisgICAgUldMb2NrOjpBdXRvUkxvY2sgX3JkKG1Mb2NrKTsKKworICAgIC8vIFRPRE86IHdlIGNhbiBvbmx5IHVuZG8gdGhlIHByZXZpb3VzIGRlcXVldWUsIHdlIHNob3VsZAorICAgIC8vIGVuZm9yY2UgdGhhdCBpbiB0aGUgYXBpCiAgICAgVW5kb0RlcXVldWVVcGRhdGUgdXBkYXRlKHRoaXMpOwogICAgIHN0YXR1c190IGVyciA9IHVwZGF0ZUNvbmRpdGlvbiggdXBkYXRlICk7CiAgICAgaWYgKGVyciA9PSBOT19FUlJPUikgewotICAgICAgICB0YWlsID0gY29tcHV0ZVRhaWwoKTsKKyAgICAgICAgdGFpbCA9IHVuZG9EZXF1ZXVlVGFpbDsKICAgICB9CiAgICAgcmV0dXJuIGVycjsKIH0KIAogc3RhdHVzX3QgU2hhcmVkQnVmZmVyQ2xpZW50Ojpsb2NrKGludCBidWYpCiB7CisgICAgUldMb2NrOjpBdXRvUkxvY2sgX3JkKG1Mb2NrKTsKKworICAgIFNoYXJlZEJ1ZmZlclN0YWNrJiBzdGFjayggKm1TaGFyZWRTdGFjayApOwogICAgIExvY2tDb25kaXRpb24gY29uZGl0aW9uKHRoaXMsIGJ1Zik7CiAgICAgc3RhdHVzX3QgZXJyID0gd2FpdEZvckNvbmRpdGlvbihjb25kaXRpb24pOwogICAgIHJldHVybiBlcnI7CkBAIC0zMzAsNTMgKzQxOSwxMDUgQEAKIAogc3RhdHVzX3QgU2hhcmVkQnVmZmVyQ2xpZW50OjpxdWV1ZShpbnQgYnVmKQogeworICAgIFJXTG9jazo6QXV0b1JMb2NrIF9yZChtTG9jayk7CisKKyAgICBTaGFyZWRCdWZmZXJTdGFjayYgc3RhY2soICptU2hhcmVkU3RhY2sgKTsKKworICAgIHF1ZXVlZF9oZWFkID0gKHF1ZXVlZF9oZWFkICsgMSkgJSBtTnVtQnVmZmVyczsKKyAgICBzdGFjay5pbmRleFtxdWV1ZWRfaGVhZF0gPSBidWY7CisKICAgICBRdWV1ZVVwZGF0ZSB1cGRhdGUodGhpcyk7CiAgICAgc3RhdHVzX3QgZXJyID0gdXBkYXRlQ29uZGl0aW9uKCB1cGRhdGUgKTsKICAgICBMT0dEX0lGKERFQlVHX0FUT01JQ1MsICJxdWV1ZWQ9JWQsICVzIiwgYnVmLCBkdW1wKCIiKS5zdHJpbmcoKSk7Ci0gICAgU2hhcmVkQnVmZmVyU3RhY2smIHN0YWNrKCAqbVNoYXJlZFN0YWNrICk7CisKICAgICBjb25zdCBuc2Vjc190IG5vdyA9IHN5c3RlbVRpbWUoU1lTVEVNX1RJTUVfVEhSRUFEKTsKICAgICBzdGFjay5zdGF0cy50b3RhbFRpbWUgPSBuczJ1cyhub3cgLSBtRGVxdWV1ZVRpbWVbYnVmXSk7CiAgICAgcmV0dXJuIGVycjsKIH0KIAotYm9vbCBTaGFyZWRCdWZmZXJDbGllbnQ6Om5lZWROZXdCdWZmZXIoaW50IGJ1ZmZlcikgY29uc3QKK2Jvb2wgU2hhcmVkQnVmZmVyQ2xpZW50OjpuZWVkTmV3QnVmZmVyKGludCBidWYpIGNvbnN0CiB7CiAgICAgU2hhcmVkQnVmZmVyU3RhY2smIHN0YWNrKCAqbVNoYXJlZFN0YWNrICk7Ci0gICAgY29uc3QgdWludDMyX3QgbWFzayA9IDE8PGJ1ZmZlcjsKKyAgICBjb25zdCB1aW50MzJfdCBtYXNrID0gMTw8KDMxLWJ1Zik7CiAgICAgcmV0dXJuIChhbmRyb2lkX2F0b21pY19hbmQofm1hc2ssICZzdGFjay5yZWFsbG9jTWFzaykgJiBtYXNrKSAhPSAwOwogfQogCi1zdGF0dXNfdCBTaGFyZWRCdWZmZXJDbGllbnQ6OnNldERpcnR5UmVnaW9uKGludCBidWZmZXIsIGNvbnN0IFJlZ2lvbiYgcmVnKQorc3RhdHVzX3QgU2hhcmVkQnVmZmVyQ2xpZW50OjpzZXRDcm9wKGludCBidWYsIGNvbnN0IFJlY3QmIGNyb3ApCiB7CiAgICAgU2hhcmVkQnVmZmVyU3RhY2smIHN0YWNrKCAqbVNoYXJlZFN0YWNrICk7Ci0gICAgcmV0dXJuIHN0YWNrLnNldERpcnR5UmVnaW9uKGJ1ZmZlciwgcmVnKTsKKyAgICByZXR1cm4gc3RhY2suc2V0Q3JvcChidWYsIGNyb3ApOworfQorCitzdGF0dXNfdCBTaGFyZWRCdWZmZXJDbGllbnQ6OnNldERpcnR5UmVnaW9uKGludCBidWYsIGNvbnN0IFJlZ2lvbiYgcmVnKQoreworICAgIFNoYXJlZEJ1ZmZlclN0YWNrJiBzdGFjayggKm1TaGFyZWRTdGFjayApOworICAgIHJldHVybiBzdGFjay5zZXREaXJ0eVJlZ2lvbihidWYsIHJlZyk7Cit9CisKK3N0YXR1c190IFNoYXJlZEJ1ZmZlckNsaWVudDo6c2V0QnVmZmVyQ291bnQoCisgICAgICAgIGludCBidWZmZXJDb3VudCwgY29uc3QgU2V0QnVmZmVyQ291bnRDYWxsYmFjayYgaXBjKQoreworICAgIFNoYXJlZEJ1ZmZlclN0YWNrJiBzdGFjayggKm1TaGFyZWRTdGFjayApOworICAgIGlmICh1aW50MzJfdChidWZmZXJDb3VudCkgPj0gU2hhcmVkQnVmZmVyU3RhY2s6Ok5VTV9CVUZGRVJfTUFYKQorICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOworCisgICAgaWYgKHVpbnQzMl90KGJ1ZmZlckNvdW50KSA8IFNoYXJlZEJ1ZmZlclN0YWNrOjpOVU1fQlVGRkVSX01JTikKKyAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKworICAgIFJXTG9jazo6QXV0b1dMb2NrIF93cihtTG9jayk7CisKKyAgICBzdGF0dXNfdCBlcnIgPSBpcGMoYnVmZmVyQ291bnQpOworICAgIGlmIChlcnIgPT0gTk9fRVJST1IpIHsKKyAgICAgICAgbU51bUJ1ZmZlcnMgPSBidWZmZXJDb3VudDsKKyAgICAgICAgcXVldWVkX2hlYWQgPSAoc3RhY2suaGVhZCArIHN0YWNrLnF1ZXVlZCkgJSBtTnVtQnVmZmVyczsKKyAgICB9CisgICAgcmV0dXJuIGVycjsKIH0KIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBTaGFyZWRCdWZmZXJTZXJ2ZXI6OlNoYXJlZEJ1ZmZlclNlcnZlcihTaGFyZWRDbGllbnQqIHNoYXJlZENsaWVudCwKICAgICAgICAgaW50IHN1cmZhY2UsIGludCBudW0sIGludDMyX3QgaWRlbnRpdHkpCi0gICAgOiBTaGFyZWRCdWZmZXJCYXNlKHNoYXJlZENsaWVudCwgc3VyZmFjZSwgbnVtLCBpZGVudGl0eSkKKyAgICA6IFNoYXJlZEJ1ZmZlckJhc2Uoc2hhcmVkQ2xpZW50LCBzdXJmYWNlLCBpZGVudGl0eSksCisgICAgICBtTnVtQnVmZmVycyhudW0pCiB7CiAgICAgbVNoYXJlZFN0YWNrLT5pbml0KGlkZW50aXR5KTsKKyAgICBtU2hhcmVkU3RhY2stPnRva2VuID0gc3VyZmFjZTsKICAgICBtU2hhcmVkU3RhY2stPmhlYWQgPSBudW0tMTsKICAgICBtU2hhcmVkU3RhY2stPmF2YWlsYWJsZSA9IG51bTsKICAgICBtU2hhcmVkU3RhY2stPnF1ZXVlZCA9IDA7CiAgICAgbVNoYXJlZFN0YWNrLT5yZWFsbG9jTWFzayA9IDA7Ci0gICAgbWVtc2V0KG1TaGFyZWRTdGFjay0+ZGlydHlSZWdpb24sIDAsIHNpemVvZihtU2hhcmVkU3RhY2stPmRpcnR5UmVnaW9uKSk7CisgICAgbWVtc2V0KG1TaGFyZWRTdGFjay0+YnVmZmVycywgMCwgc2l6ZW9mKG1TaGFyZWRTdGFjay0+YnVmZmVycykpOworICAgIGZvciAoaW50IGk9MCA7IGk8bnVtIDsgaSsrKSB7CisgICAgICAgIG1CdWZmZXJMaXN0LmFkZChpKTsKKyAgICAgICAgbVNoYXJlZFN0YWNrLT5pbmRleFtpXSA9IGk7CisgICAgfQorfQorCitTaGFyZWRCdWZmZXJTZXJ2ZXI6On5TaGFyZWRCdWZmZXJTZXJ2ZXIoKQorewogfQogCiBzc2l6ZV90IFNoYXJlZEJ1ZmZlclNlcnZlcjo6cmV0aXJlQW5kTG9jaygpCiB7CisgICAgUldMb2NrOjpBdXRvUkxvY2sgX2wobUxvY2spOworCiAgICAgUmV0aXJlVXBkYXRlIHVwZGF0ZSh0aGlzLCBtTnVtQnVmZmVycyk7CiAgICAgc3NpemVfdCBidWYgPSB1cGRhdGVDb25kaXRpb24oIHVwZGF0ZSApOwotICAgIExPR0RfSUYoREVCVUdfQVRPTUlDUyAmJiBidWY+PTAsICJyZXRpcmU9JWQsICVzIiwgaW50KGJ1ZiksIGR1bXAoIiIpLnN0cmluZygpKTsKKyAgICBpZiAoYnVmID49IDApIHsKKyAgICAgICAgaWYgKHVpbnQzMl90KGJ1ZikgPj0gU2hhcmVkQnVmZmVyU3RhY2s6Ok5VTV9CVUZGRVJfTUFYKQorICAgICAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKyAgICAgICAgU2hhcmVkQnVmZmVyU3RhY2smIHN0YWNrKCAqbVNoYXJlZFN0YWNrICk7CisgICAgICAgIGJ1ZiA9IHN0YWNrLmluZGV4W2J1Zl07CisgICAgICAgIExPR0RfSUYoREVCVUdfQVRPTUlDUyAmJiBidWY+PTAsICJyZXRpcmU9JWQsICVzIiwKKyAgICAgICAgICAgICAgICBpbnQoYnVmKSwgZHVtcCgiIikuc3RyaW5nKCkpOworICAgIH0KICAgICByZXR1cm4gYnVmOwogfQogCi1zdGF0dXNfdCBTaGFyZWRCdWZmZXJTZXJ2ZXI6OnVubG9jayhpbnQgYnVmZmVyKQorc3RhdHVzX3QgU2hhcmVkQnVmZmVyU2VydmVyOjp1bmxvY2soaW50IGJ1ZikKIHsKLSAgICBVbmxvY2tVcGRhdGUgdXBkYXRlKHRoaXMsIGJ1ZmZlcik7CisgICAgVW5sb2NrVXBkYXRlIHVwZGF0ZSh0aGlzLCBidWYpOwogICAgIHN0YXR1c190IGVyciA9IHVwZGF0ZUNvbmRpdGlvbiggdXBkYXRlICk7CiAgICAgcmV0dXJuIGVycjsKIH0KQEAgLTM4OSwxMSArNTMwLDI1IEBACiAgICAgfQogfQogCi1zdGF0dXNfdCBTaGFyZWRCdWZmZXJTZXJ2ZXI6OnJlYWxsb2NhdGUoKQorc3RhdHVzX3QgU2hhcmVkQnVmZmVyU2VydmVyOjpyZWFsbG9jYXRlQWxsKCkKIHsKKyAgICBSV0xvY2s6OkF1dG9STG9jayBfbChtTG9jayk7CisKICAgICBTaGFyZWRCdWZmZXJTdGFjayYgc3RhY2soICptU2hhcmVkU3RhY2sgKTsKLSAgICB1aW50MzJfdCBtYXNrID0gKDE8PG1OdW1CdWZmZXJzKS0xOwotICAgIGFuZHJvaWRfYXRvbWljX29yKG1hc2ssICZzdGFjay5yZWFsbG9jTWFzayk7IAorICAgIHVpbnQzMl90IG1hc2sgPSBtQnVmZmVyTGlzdC5nZXRNYXNrKCk7CisgICAgYW5kcm9pZF9hdG9taWNfb3IobWFzaywgJnN0YWNrLnJlYWxsb2NNYXNrKTsKKyAgICByZXR1cm4gTk9fRVJST1I7Cit9CisKK3N0YXR1c190IFNoYXJlZEJ1ZmZlclNlcnZlcjo6cmVhbGxvY2F0ZUFsbEV4Y2VwdChpbnQgYnVmZmVyKQoreworICAgIFJXTG9jazo6QXV0b1JMb2NrIF9sKG1Mb2NrKTsKKworICAgIFNoYXJlZEJ1ZmZlclN0YWNrJiBzdGFjayggKm1TaGFyZWRTdGFjayApOworICAgIEJ1ZmZlckxpc3QgdGVtcChtQnVmZmVyTGlzdCk7CisgICAgdGVtcC5yZW1vdmUoYnVmZmVyKTsKKyAgICB1aW50MzJfdCBtYXNrID0gdGVtcC5nZXRNYXNrKCk7CisgICAgYW5kcm9pZF9hdG9taWNfb3IobWFzaywgJnN0YWNrLnJlYWxsb2NNYXNrKTsKICAgICByZXR1cm4gTk9fRVJST1I7CiB9CiAKQEAgLTQwMywxNyArNTU4LDc3IEBACiAgICAgcmV0dXJuIHN0YWNrLnF1ZXVlZDsKIH0KIAotc3RhdHVzX3QgU2hhcmVkQnVmZmVyU2VydmVyOjphc3NlcnRSZWFsbG9jYXRlKGludCBidWZmZXIpCitzdGF0dXNfdCBTaGFyZWRCdWZmZXJTZXJ2ZXI6OmFzc2VydFJlYWxsb2NhdGUoaW50IGJ1ZikKIHsKLSAgICBSZWFsbG9jYXRlQ29uZGl0aW9uIGNvbmRpdGlvbih0aGlzLCBidWZmZXIpOworICAgIC8qCisgICAgICogTk9URTogaXQncyBzYWZlIHRvIGhvbGQgbUxvY2sgZm9yIHJlYWQgd2hpbGUgd2FpdGluZyBmb3IKKyAgICAgKiB0aGUgUmVhbGxvY2F0ZUNvbmRpdGlvbiBiZWNhdXNlIHRoYXQgY29uZGl0aW9uIGlzIG5vdCB1cGRhdGVkCisgICAgICogYnkgdGhlIHRocmVhZCB0aGF0IGhvbGRzIG1Mb2NrIGZvciB3cml0ZS4KKyAgICAgKi8KKyAgICBSV0xvY2s6OkF1dG9STG9jayBfbChtTG9jayk7CisKKyAgICAvLyBUT0RPOiBuZWVkIHRvIHZhbGlkYXRlICJidWYiCisgICAgUmVhbGxvY2F0ZUNvbmRpdGlvbiBjb25kaXRpb24odGhpcywgYnVmKTsKICAgICBzdGF0dXNfdCBlcnIgPSB3YWl0Rm9yQ29uZGl0aW9uKGNvbmRpdGlvbik7CiAgICAgcmV0dXJuIGVycjsKIH0KIAotUmVnaW9uIFNoYXJlZEJ1ZmZlclNlcnZlcjo6Z2V0RGlydHlSZWdpb24oaW50IGJ1ZmZlcikgY29uc3QKK1JlZ2lvbiBTaGFyZWRCdWZmZXJTZXJ2ZXI6OmdldERpcnR5UmVnaW9uKGludCBidWYpIGNvbnN0CiB7CiAgICAgU2hhcmVkQnVmZmVyU3RhY2smIHN0YWNrKCAqbVNoYXJlZFN0YWNrICk7Ci0gICAgcmV0dXJuIHN0YWNrLmdldERpcnR5UmVnaW9uKGJ1ZmZlcik7CisgICAgcmV0dXJuIHN0YWNrLmdldERpcnR5UmVnaW9uKGJ1Zik7Cit9CisKKy8qCisgKiBOT1RFOiB0aGlzIGlzIG5vdCB0aHJlYWQtc2FmZSBvbiB0aGUgc2VydmVyLXNpZGUsIG1lYW5pbmcKKyAqICdoZWFkJyBjYW5ub3QgbW92ZSBkdXJpbmcgdGhpcyBvcGVyYXRpb24uIFRoZSBjbGllbnQtc2lkZQorICogY2FuIHNhZmVseSBvcGVyYXRlIGFuIHVzdWFsLgorICoKKyAqLworc3RhdHVzX3QgU2hhcmVkQnVmZmVyU2VydmVyOjpyZXNpemUoaW50IG5ld051bUJ1ZmZlcnMpCit7CisgICAgaWYgKHVpbnQzMl90KG5ld051bUJ1ZmZlcnMpID49IFNoYXJlZEJ1ZmZlclN0YWNrOjpOVU1fQlVGRkVSX01BWCkKKyAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKworICAgIFJXTG9jazo6QXV0b1dMb2NrIF9sKG1Mb2NrKTsKKworICAgIC8vIGZvciBub3cgd2UncmUgbm90IHN1cHBvcnRpbmcgc2hyaW5raW5nCisgICAgY29uc3QgaW50IG51bUJ1ZmZlcnMgPSBtTnVtQnVmZmVyczsKKyAgICBpZiAobmV3TnVtQnVmZmVycyA8IG51bUJ1ZmZlcnMpCisgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisKKyAgICBTaGFyZWRCdWZmZXJTdGFjayYgc3RhY2soICptU2hhcmVkU3RhY2sgKTsKKyAgICBjb25zdCBpbnQgZXh0cmEgPSBuZXdOdW1CdWZmZXJzIC0gbnVtQnVmZmVyczsKKworICAgIC8vIHJlYWQgdGhlIGhlYWQsIG1ha2Ugc3VyZSBpdCdzIHZhbGlkCisgICAgaW50MzJfdCBoZWFkID0gc3RhY2suaGVhZDsKKyAgICBpZiAodWludDMyX3QoaGVhZCkgPj0gU2hhcmVkQnVmZmVyU3RhY2s6Ok5VTV9CVUZGRVJfTUFYKQorICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOworCisgICAgaW50IGJhc2UgPSBudW1CdWZmZXJzOworICAgIGludDMyX3QgYXZhaWwgPSBzdGFjay5hdmFpbGFibGU7CisgICAgaW50IHRhaWwgPSBoZWFkIC0gYXZhaWwgKyAxOworCisgICAgaWYgKHRhaWwgPj0gMCkgeworICAgICAgICBpbnQ4X3QqIGNvbnN0IGluZGV4ID0gY29uc3RfY2FzdDxpbnQ4X3QqPihzdGFjay5pbmRleCk7CisgICAgICAgIGNvbnN0IGludCBuYiA9IG51bUJ1ZmZlcnMgLSBoZWFkOworICAgICAgICBtZW1tb3ZlKCZpbmRleFtoZWFkICsgZXh0cmFdLCAmaW5kZXhbaGVhZF0sIG5iKTsKKyAgICAgICAgYmFzZSA9IGhlYWQ7CisgICAgICAgIC8vIG1vdmUgaGVhZCAnZXh0cmEnIGFoZWFkLCB0aGlzIGRvZXNuJ3QgaW1wYWN0IHN0YWNrLmluZGV4W2hlYWRdOworICAgICAgICBzdGFjay5oZWFkID0gaGVhZCArIGV4dHJhOworICAgIH0KKyAgICBzdGFjay5hdmFpbGFibGUgKz0gZXh0cmE7CisKKyAgICAvLyBmaWxsIHRoZSBuZXcgZnJlZSBzcGFjZSB3aXRoIHVudXNlZCBidWZmZXJzCisgICAgQnVmZmVyTGlzdDo6Y29uc3RfaXRlcmF0b3IgY3VycihtQnVmZmVyTGlzdC5mcmVlX2JlZ2luKCkpOworICAgIGZvciAoaW50IGk9MCA7IGk8ZXh0cmEgOyBpKyspIHsKKyAgICAgICAgc3RhY2suaW5kZXhbYmFzZStpXSA9ICpjdXJyOworICAgICAgICBtQnVmZmVyTGlzdC5hZGQoKmN1cnIpOworICAgICAgICArK2N1cnI7CisgICAgfQorCisgICAgbU51bUJ1ZmZlcnMgPSBuZXdOdW1CdWZmZXJzOworICAgIHJldHVybiBOT19FUlJPUjsKIH0KIAogU2hhcmVkQnVmZmVyU3RhY2s6OlN0YXRpc3RpY3MgU2hhcmVkQnVmZmVyU2VydmVyOjpnZXRTdGF0cygpIGNvbnN0CkBAIC00MjIsNiArNjM3LDI5IEBACiAgICAgcmV0dXJuIHN0YWNrLnN0YXRzOwogfQogCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3N0YXR1c190IFNoYXJlZEJ1ZmZlclNlcnZlcjo6QnVmZmVyTGlzdDo6YWRkKGludCB2YWx1ZSkKK3sKKyAgICBpZiAodWludDMyX3QodmFsdWUpID49IG1DYXBhY2l0eSkKKyAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKyAgICB1aW50MzJfdCBtYXNrID0gMTw8KDMxLXZhbHVlKTsKKyAgICBpZiAobUxpc3QgJiBtYXNrKQorICAgICAgICByZXR1cm4gQUxSRUFEWV9FWElTVFM7CisgICAgbUxpc3QgfD0gbWFzazsKKyAgICByZXR1cm4gTk9fRVJST1I7Cit9CisKK3N0YXR1c190IFNoYXJlZEJ1ZmZlclNlcnZlcjo6QnVmZmVyTGlzdDo6cmVtb3ZlKGludCB2YWx1ZSkKK3sKKyAgICBpZiAodWludDMyX3QodmFsdWUpID49IG1DYXBhY2l0eSkKKyAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKyAgICB1aW50MzJfdCBtYXNrID0gMTw8KDMxLXZhbHVlKTsKKyAgICBpZiAoIShtTGlzdCAmIG1hc2spKQorICAgICAgICByZXR1cm4gTkFNRV9OT1RfRk9VTkQ7CisgICAgbUxpc3QgJj0gfm1hc2s7CisgICAgcmV0dXJuIE5PX0VSUk9SOworfQorCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogfTsgLy8gbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL2xpYnMvc3VyZmFjZWZsaW5nZXJfY2xpZW50L1N1cmZhY2UuY3BwIGIvbGlicy9zdXJmYWNlZmxpbmdlcl9jbGllbnQvU3VyZmFjZS5jcHAKaW5kZXggNWRkNzVjMy4uZGM2MzMyYyAxMDA2NDQKLS0tIGEvbGlicy9zdXJmYWNlZmxpbmdlcl9jbGllbnQvU3VyZmFjZS5jcHAKKysrIGIvbGlicy9zdXJmYWNlZmxpbmdlcl9jbGllbnQvU3VyZmFjZS5jcHAKQEAgLTE3LDggKzE3LDYgQEAKICNkZWZpbmUgTE9HX1RBRyAiU3VyZmFjZSIKIAogI2luY2x1ZGUgPHN0ZGludC5oPgotI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2luY2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDxzeXMvc3RhdC5oPgpAQCAtMjgsOCArMjYsNiBAQAogI2luY2x1ZGUgPHV0aWxzL0NhbGxTdGFjay5oPgogI2luY2x1ZGUgPHV0aWxzL0xvZy5oPgogCi0jaW5jbHVkZSA8cGl4ZWxmbGluZ2VyL3BpeGVsZmxpbmdlci5oPgotCiAjaW5jbHVkZSA8YmluZGVyL0lQQ1RocmVhZFN0YXRlLmg+CiAjaW5jbHVkZSA8YmluZGVyL0lNZW1vcnkuaD4KIApAQCAtNTUsNiArNTEsOCBAQAogICAgICAgICBjb25zdCBzcDxHcmFwaGljQnVmZmVyPiYgc3JjLCAKICAgICAgICAgY29uc3QgUmVnaW9uJiByZWcpCiB7CisgICAgLy8gc3JjIGFuZCBkc3Qgd2l0aCwgaGVpZ2h0IGFuZCBmb3JtYXQgbXVzdCBiZSBpZGVudGljYWwuIG5vIHZlcmlmaWNhdGlvbgorICAgIC8vIGlzIGRvbmUgaGVyZS4KICAgICBzdGF0dXNfdCBlcnI7CiAgICAgdWludDhfdCBjb25zdCAqIHNyY19iaXRzID0gTlVMTDsKICAgICBlcnIgPSBzcmMtPmxvY2soR1JBTExPQ19VU0FHRV9TV19SRUFEX09GVEVOLCByZWcuYm91bmRzKCksICh2b2lkKiopJnNyY19iaXRzKTsKQEAgLTY3LDcgKzY1LDYgQEAKICAgICBSZWdpb246OmNvbnN0X2l0ZXJhdG9yIGhlYWQocmVnLmJlZ2luKCkpOwogICAgIFJlZ2lvbjo6Y29uc3RfaXRlcmF0b3IgdGFpbChyZWcuZW5kKCkpOwogICAgIGlmIChoZWFkICE9IHRhaWwgJiYgc3JjX2JpdHMgJiYgZHN0X2JpdHMpIHsKLSAgICAgICAgLy8gTk9URTogZHN0IGFuZCBzcmMgbXVzdCBiZSB0aGUgc2FtZSBmb3JtYXQKICAgICAgICAgY29uc3Qgc2l6ZV90IGJwcCA9IGJ5dGVzUGVyUGl4ZWwoc3JjLT5mb3JtYXQpOwogICAgICAgICBjb25zdCBzaXplX3QgZGJwciA9IGRzdC0+c3RyaWRlICogYnBwOwogICAgICAgICBjb25zdCBzaXplX3Qgc2JwciA9IHNyYy0+c3RyaWRlICogYnBwOwpAQCAtMTA3LDcgKzEwNCw3IEBACiBTdXJmYWNlQ29udHJvbDo6U3VyZmFjZUNvbnRyb2woCiAgICAgICAgIGNvbnN0IHNwPFN1cmZhY2VDb21wb3NlckNsaWVudD4mIGNsaWVudCwgCiAgICAgICAgIGNvbnN0IHNwPElTdXJmYWNlPiYgc3VyZmFjZSwKLSAgICAgICAgY29uc3QgSVN1cmZhY2VGbGluZ2VyQ2xpZW50OjpzdXJmYWNlX2RhdGFfdCYgZGF0YSwKKyAgICAgICAgY29uc3QgSVN1cmZhY2VDb21wb3NlckNsaWVudDo6c3VyZmFjZV9kYXRhX3QmIGRhdGEsCiAgICAgICAgIHVpbnQzMl90IHcsIHVpbnQzMl90IGgsIFBpeGVsRm9ybWF0IGZvcm1hdCwgdWludDMyX3QgZmxhZ3MpCiAgICAgOiBtQ2xpZW50KGNsaWVudCksIG1TdXJmYWNlKHN1cmZhY2UpLAogICAgICAgbVRva2VuKGRhdGEudG9rZW4pLCBtSWRlbnRpdHkoZGF0YS5pZGVudGl0eSksCkBAIC0xNTQsNzUgKzE1MSw3NSBAQAogfQogCiBzdGF0dXNfdCBTdXJmYWNlQ29udHJvbDo6c2V0TGF5ZXIoaW50MzJfdCBsYXllcikgewotICAgIGNvbnN0IHNwPFN1cmZhY2VDb21wb3NlckNsaWVudD4mIGNsaWVudChtQ2xpZW50KTsKICAgICBzdGF0dXNfdCBlcnIgPSB2YWxpZGF0ZSgpOwogICAgIGlmIChlcnIgPCAwKSByZXR1cm4gZXJyOworICAgIGNvbnN0IHNwPFN1cmZhY2VDb21wb3NlckNsaWVudD4mIGNsaWVudChtQ2xpZW50KTsKICAgICByZXR1cm4gY2xpZW50LT5zZXRMYXllcihtVG9rZW4sIGxheWVyKTsKIH0KIHN0YXR1c190IFN1cmZhY2VDb250cm9sOjpzZXRQb3NpdGlvbihpbnQzMl90IHgsIGludDMyX3QgeSkgewotICAgIGNvbnN0IHNwPFN1cmZhY2VDb21wb3NlckNsaWVudD4mIGNsaWVudChtQ2xpZW50KTsKICAgICBzdGF0dXNfdCBlcnIgPSB2YWxpZGF0ZSgpOwogICAgIGlmIChlcnIgPCAwKSByZXR1cm4gZXJyOworICAgIGNvbnN0IHNwPFN1cmZhY2VDb21wb3NlckNsaWVudD4mIGNsaWVudChtQ2xpZW50KTsKICAgICByZXR1cm4gY2xpZW50LT5zZXRQb3NpdGlvbihtVG9rZW4sIHgsIHkpOwogfQogc3RhdHVzX3QgU3VyZmFjZUNvbnRyb2w6OnNldFNpemUodWludDMyX3QgdywgdWludDMyX3QgaCkgewotICAgIGNvbnN0IHNwPFN1cmZhY2VDb21wb3NlckNsaWVudD4mIGNsaWVudChtQ2xpZW50KTsKICAgICBzdGF0dXNfdCBlcnIgPSB2YWxpZGF0ZSgpOwogICAgIGlmIChlcnIgPCAwKSByZXR1cm4gZXJyOworICAgIGNvbnN0IHNwPFN1cmZhY2VDb21wb3NlckNsaWVudD4mIGNsaWVudChtQ2xpZW50KTsKICAgICByZXR1cm4gY2xpZW50LT5zZXRTaXplKG1Ub2tlbiwgdywgaCk7CiB9CiBzdGF0dXNfdCBTdXJmYWNlQ29udHJvbDo6aGlkZSgpIHsKLSAgICBjb25zdCBzcDxTdXJmYWNlQ29tcG9zZXJDbGllbnQ+JiBjbGllbnQobUNsaWVudCk7CiAgICAgc3RhdHVzX3QgZXJyID0gdmFsaWRhdGUoKTsKICAgICBpZiAoZXJyIDwgMCkgcmV0dXJuIGVycjsKKyAgICBjb25zdCBzcDxTdXJmYWNlQ29tcG9zZXJDbGllbnQ+JiBjbGllbnQobUNsaWVudCk7CiAgICAgcmV0dXJuIGNsaWVudC0+aGlkZShtVG9rZW4pOwogfQogc3RhdHVzX3QgU3VyZmFjZUNvbnRyb2w6OnNob3coaW50MzJfdCBsYXllcikgewotICAgIGNvbnN0IHNwPFN1cmZhY2VDb21wb3NlckNsaWVudD4mIGNsaWVudChtQ2xpZW50KTsKICAgICBzdGF0dXNfdCBlcnIgPSB2YWxpZGF0ZSgpOwogICAgIGlmIChlcnIgPCAwKSByZXR1cm4gZXJyOworICAgIGNvbnN0IHNwPFN1cmZhY2VDb21wb3NlckNsaWVudD4mIGNsaWVudChtQ2xpZW50KTsKICAgICByZXR1cm4gY2xpZW50LT5zaG93KG1Ub2tlbiwgbGF5ZXIpOwogfQogc3RhdHVzX3QgU3VyZmFjZUNvbnRyb2w6OmZyZWV6ZSgpIHsKLSAgICBjb25zdCBzcDxTdXJmYWNlQ29tcG9zZXJDbGllbnQ+JiBjbGllbnQobUNsaWVudCk7CiAgICAgc3RhdHVzX3QgZXJyID0gdmFsaWRhdGUoKTsKICAgICBpZiAoZXJyIDwgMCkgcmV0dXJuIGVycjsKKyAgICBjb25zdCBzcDxTdXJmYWNlQ29tcG9zZXJDbGllbnQ+JiBjbGllbnQobUNsaWVudCk7CiAgICAgcmV0dXJuIGNsaWVudC0+ZnJlZXplKG1Ub2tlbik7CiB9CiBzdGF0dXNfdCBTdXJmYWNlQ29udHJvbDo6dW5mcmVlemUoKSB7Ci0gICAgY29uc3Qgc3A8U3VyZmFjZUNvbXBvc2VyQ2xpZW50PiYgY2xpZW50KG1DbGllbnQpOwogICAgIHN0YXR1c190IGVyciA9IHZhbGlkYXRlKCk7CiAgICAgaWYgKGVyciA8IDApIHJldHVybiBlcnI7CisgICAgY29uc3Qgc3A8U3VyZmFjZUNvbXBvc2VyQ2xpZW50PiYgY2xpZW50KG1DbGllbnQpOwogICAgIHJldHVybiBjbGllbnQtPnVuZnJlZXplKG1Ub2tlbik7CiB9CiBzdGF0dXNfdCBTdXJmYWNlQ29udHJvbDo6c2V0RmxhZ3ModWludDMyX3QgZmxhZ3MsIHVpbnQzMl90IG1hc2spIHsKLSAgICBjb25zdCBzcDxTdXJmYWNlQ29tcG9zZXJDbGllbnQ+JiBjbGllbnQobUNsaWVudCk7CiAgICAgc3RhdHVzX3QgZXJyID0gdmFsaWRhdGUoKTsKICAgICBpZiAoZXJyIDwgMCkgcmV0dXJuIGVycjsKKyAgICBjb25zdCBzcDxTdXJmYWNlQ29tcG9zZXJDbGllbnQ+JiBjbGllbnQobUNsaWVudCk7CiAgICAgcmV0dXJuIGNsaWVudC0+c2V0RmxhZ3MobVRva2VuLCBmbGFncywgbWFzayk7CiB9CiBzdGF0dXNfdCBTdXJmYWNlQ29udHJvbDo6c2V0VHJhbnNwYXJlbnRSZWdpb25IaW50KGNvbnN0IFJlZ2lvbiYgdHJhbnNwYXJlbnQpIHsKLSAgICBjb25zdCBzcDxTdXJmYWNlQ29tcG9zZXJDbGllbnQ+JiBjbGllbnQobUNsaWVudCk7CiAgICAgc3RhdHVzX3QgZXJyID0gdmFsaWRhdGUoKTsKICAgICBpZiAoZXJyIDwgMCkgcmV0dXJuIGVycjsKKyAgICBjb25zdCBzcDxTdXJmYWNlQ29tcG9zZXJDbGllbnQ+JiBjbGllbnQobUNsaWVudCk7CiAgICAgcmV0dXJuIGNsaWVudC0+c2V0VHJhbnNwYXJlbnRSZWdpb25IaW50KG1Ub2tlbiwgdHJhbnNwYXJlbnQpOwogfQogc3RhdHVzX3QgU3VyZmFjZUNvbnRyb2w6OnNldEFscGhhKGZsb2F0IGFscGhhKSB7Ci0gICAgY29uc3Qgc3A8U3VyZmFjZUNvbXBvc2VyQ2xpZW50PiYgY2xpZW50KG1DbGllbnQpOwogICAgIHN0YXR1c190IGVyciA9IHZhbGlkYXRlKCk7CiAgICAgaWYgKGVyciA8IDApIHJldHVybiBlcnI7CisgICAgY29uc3Qgc3A8U3VyZmFjZUNvbXBvc2VyQ2xpZW50PiYgY2xpZW50KG1DbGllbnQpOwogICAgIHJldHVybiBjbGllbnQtPnNldEFscGhhKG1Ub2tlbiwgYWxwaGEpOwogfQogc3RhdHVzX3QgU3VyZmFjZUNvbnRyb2w6OnNldE1hdHJpeChmbG9hdCBkc2R4LCBmbG9hdCBkdGR4LCBmbG9hdCBkc2R5LCBmbG9hdCBkdGR5KSB7Ci0gICAgY29uc3Qgc3A8U3VyZmFjZUNvbXBvc2VyQ2xpZW50PiYgY2xpZW50KG1DbGllbnQpOwogICAgIHN0YXR1c190IGVyciA9IHZhbGlkYXRlKCk7CiAgICAgaWYgKGVyciA8IDApIHJldHVybiBlcnI7CisgICAgY29uc3Qgc3A8U3VyZmFjZUNvbXBvc2VyQ2xpZW50PiYgY2xpZW50KG1DbGllbnQpOwogICAgIHJldHVybiBjbGllbnQtPnNldE1hdHJpeChtVG9rZW4sIGRzZHgsIGR0ZHgsIGRzZHksIGR0ZHkpOwogfQogc3RhdHVzX3QgU3VyZmFjZUNvbnRyb2w6OnNldEZyZWV6ZVRpbnQodWludDMyX3QgdGludCkgewotICAgIGNvbnN0IHNwPFN1cmZhY2VDb21wb3NlckNsaWVudD4mIGNsaWVudChtQ2xpZW50KTsKICAgICBzdGF0dXNfdCBlcnIgPSB2YWxpZGF0ZSgpOwogICAgIGlmIChlcnIgPCAwKSByZXR1cm4gZXJyOworICAgIGNvbnN0IHNwPFN1cmZhY2VDb21wb3NlckNsaWVudD4mIGNsaWVudChtQ2xpZW50KTsKICAgICByZXR1cm4gY2xpZW50LT5zZXRGcmVlemVUaW50KG1Ub2tlbiwgdGludCk7CiB9CiAKQEAgLTIzMyw1MCArMjMwLDI3IEBACiAgICAgICAgICAgICAgICAgbVRva2VuLCBtSWRlbnRpdHksIG1DbGllbnQuZ2V0KCkpOwogICAgICAgICByZXR1cm4gTk9fSU5JVDsKICAgICB9Ci0gICAgU2hhcmVkQ2xpZW50IGNvbnN0KiBjYmxrID0gbUNsaWVudC0+bUNvbnRyb2w7Ci0gICAgaWYgKGNibGsgPT0gMCkgewotICAgICAgICBMT0dFKCJjYmxrIGlzIG51bGwgKHN1cmZhY2UgaWQ9JWQsIGlkZW50aXR5PSV1KSIsIG1Ub2tlbiwgbUlkZW50aXR5KTsKLSAgICAgICAgcmV0dXJuIE5PX0lOSVQ7Ci0gICAgfQotICAgIHN0YXR1c190IGVyciA9IGNibGstPnZhbGlkYXRlKG1Ub2tlbik7Ci0gICAgaWYgKGVyciAhPSBOT19FUlJPUikgewotICAgICAgICBMT0dFKCJzdXJmYWNlIChpZD0lZCwgaWRlbnRpdHk9JXUpIGlzIGludmFsaWQsIGVycj0lZCAoJXMpIiwKLSAgICAgICAgICAgICAgICBtVG9rZW4sIG1JZGVudGl0eSwgZXJyLCBzdHJlcnJvcigtZXJyKSk7Ci0gICAgICAgIHJldHVybiBlcnI7Ci0gICAgfQotICAgIHVpbnQzMl90IGlkZW50aXR5ID0gY2Jsay0+Z2V0SWRlbnRpdHkobVRva2VuKTsKLSAgICBpZiAobUlkZW50aXR5ICE9IGlkZW50aXR5KSB7Ci0gICAgICAgIExPR0UoInVzaW5nIGFuIGludmFsaWQgc3VyZmFjZSBpZD0lZCwgaWRlbnRpdHk9JXUgc2hvdWxkIGJlICVkIiwKLSAgICAgICAgICAgICAgICBtVG9rZW4sIG1JZGVudGl0eSwgaWRlbnRpdHkpOwotICAgICAgICByZXR1cm4gTk9fSU5JVDsKLSAgICB9CiAgICAgcmV0dXJuIE5PX0VSUk9SOwogfQogCiBzdGF0dXNfdCBTdXJmYWNlQ29udHJvbDo6d3JpdGVTdXJmYWNlVG9QYXJjZWwoCiAgICAgICAgIGNvbnN0IHNwPFN1cmZhY2VDb250cm9sPiYgY29udHJvbCwgUGFyY2VsKiBwYXJjZWwpCiB7Ci0gICAgdWludDMyX3QgZmxhZ3MgPSAwOwotICAgIHVpbnQzMl90IGZvcm1hdCA9IDA7Ci0gICAgU3VyZmFjZUlEIHRva2VuID0gLTE7CisgICAgc3A8SVN1cmZhY2U+IHN1cjsKICAgICB1aW50MzJfdCBpZGVudGl0eSA9IDA7CiAgICAgdWludDMyX3Qgd2lkdGggPSAwOwogICAgIHVpbnQzMl90IGhlaWdodCA9IDA7Ci0gICAgc3A8U3VyZmFjZUNvbXBvc2VyQ2xpZW50PiBjbGllbnQ7Ci0gICAgc3A8SVN1cmZhY2U+IHN1cjsKKyAgICB1aW50MzJfdCBmb3JtYXQgPSAwOworICAgIHVpbnQzMl90IGZsYWdzID0gMDsKICAgICBpZiAoU3VyZmFjZUNvbnRyb2w6OmlzVmFsaWQoY29udHJvbCkpIHsKLSAgICAgICAgdG9rZW4gICAgPSBjb250cm9sLT5tVG9rZW47Ci0gICAgICAgIGlkZW50aXR5ID0gY29udHJvbC0+bUlkZW50aXR5OwotICAgICAgICBjbGllbnQgICA9IGNvbnRyb2wtPm1DbGllbnQ7CiAgICAgICAgIHN1ciAgICAgID0gY29udHJvbC0+bVN1cmZhY2U7CisgICAgICAgIGlkZW50aXR5ID0gY29udHJvbC0+bUlkZW50aXR5OwogICAgICAgICB3aWR0aCAgICA9IGNvbnRyb2wtPm1XaWR0aDsKICAgICAgICAgaGVpZ2h0ICAgPSBjb250cm9sLT5tSGVpZ2h0OwogICAgICAgICBmb3JtYXQgICA9IGNvbnRyb2wtPm1Gb3JtYXQ7CiAgICAgICAgIGZsYWdzICAgID0gY29udHJvbC0+bUZsYWdzOwogICAgIH0KLSAgICBwYXJjZWwtPndyaXRlU3Ryb25nQmluZGVyKGNsaWVudCE9MCAgPyBjbGllbnQtPmNvbm5lY3Rpb24oKSA6IE5VTEwpOwotICAgIHBhcmNlbC0+d3JpdGVTdHJvbmdCaW5kZXIoc3VyIT0wICAgICA/IHN1ci0+YXNCaW5kZXIoKSAgICAgIDogTlVMTCk7Ci0gICAgcGFyY2VsLT53cml0ZUludDMyKHRva2VuKTsKKyAgICBwYXJjZWwtPndyaXRlU3Ryb25nQmluZGVyKHN1ciE9MCA/IHN1ci0+YXNCaW5kZXIoKSA6IE5VTEwpOwogICAgIHBhcmNlbC0+d3JpdGVJbnQzMihpZGVudGl0eSk7CiAgICAgcGFyY2VsLT53cml0ZUludDMyKHdpZHRoKTsKICAgICBwYXJjZWwtPndyaXRlSW50MzIoaGVpZ2h0KTsKQEAgLTI5OCw3MCArMjcyLDE1OSBAQAogLy8gIFN1cmZhY2UKIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAorY2xhc3MgU3VyZmFjZUNsaWVudCA6IHB1YmxpYyBTaW5nbGV0b248U3VyZmFjZUNsaWVudD4KK3sKKyAgICAvLyBhbGwgdGhlc2UgYXR0cmlidXRlcyBhcmUgY29uc3RhbnRzCisgICAgc3A8SVN1cmZhY2VDb21wb3Nlcj4gbUNvbXBvc2VyU2VydmljZTsKKyAgICBzcDxJU3VyZmFjZUNvbXBvc2VyQ2xpZW50PiBtQ2xpZW50OworICAgIHN0YXR1c190IG1TdGF0dXM7CisgICAgU2hhcmVkQ2xpZW50KiBtQ29udHJvbDsKKyAgICBzcDxJTWVtb3J5SGVhcD4gbUNvbnRyb2xNZW1vcnk7CisKKyAgICBTdXJmYWNlQ2xpZW50KCkKKyAgICAgICAgOiBTaW5nbGV0b248U3VyZmFjZUNsaWVudD4oKSwgbVN0YXR1cyhOT19JTklUKQorICAgIHsKKyAgICAgICAgc3A8SVN1cmZhY2VDb21wb3Nlcj4gc2YoQ29tcG9zZXJTZXJ2aWNlOjpnZXRDb21wb3NlclNlcnZpY2UoKSk7CisgICAgICAgIG1Db21wb3NlclNlcnZpY2UgPSBzZjsKKyAgICAgICAgbUNsaWVudCA9IHNmLT5jcmVhdGVDbGllbnRDb25uZWN0aW9uKCk7CisgICAgICAgIGlmIChtQ2xpZW50ICE9IE5VTEwpIHsKKyAgICAgICAgICAgIG1Db250cm9sTWVtb3J5ID0gbUNsaWVudC0+Z2V0Q29udHJvbEJsb2NrKCk7CisgICAgICAgICAgICBpZiAobUNvbnRyb2xNZW1vcnkgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIG1Db250cm9sID0gc3RhdGljX2Nhc3Q8U2hhcmVkQ2xpZW50ICo+KAorICAgICAgICAgICAgICAgICAgICAgICAgbUNvbnRyb2xNZW1vcnktPmdldEJhc2UoKSk7CisgICAgICAgICAgICAgICAgaWYgKG1Db250cm9sKSB7CisgICAgICAgICAgICAgICAgICAgIG1TdGF0dXMgPSBOT19FUlJPUjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgZnJpZW5kIGNsYXNzIFNpbmdsZXRvbjxTdXJmYWNlQ2xpZW50PjsKK3B1YmxpYzoKKyAgICBzdGF0dXNfdCBpbml0Q2hlY2soKSBjb25zdCB7CisgICAgICAgIHJldHVybiBtU3RhdHVzOworICAgIH0KKyAgICBTaGFyZWRDbGllbnQqIGdldFNoYXJlZENsaWVudCgpIGNvbnN0IHsKKyAgICAgICAgcmV0dXJuIG1Db250cm9sOworICAgIH0KKyAgICBzc2l6ZV90IGdldFRva2VuRm9yU3VyZmFjZShjb25zdCBzcDxJU3VyZmFjZT4mIHN1cikgY29uc3QgeworICAgICAgICAvLyBUT0RPOiB3ZSBjb3VsZCBjYWNoZSBhIGZldyB0b2tlbnMgaGVyZSB0byBhdm9pZCBhbiBJUEMKKyAgICAgICAgcmV0dXJuIG1DbGllbnQtPmdldFRva2VuRm9yU3VyZmFjZShzdXIpOworICAgIH0KKyAgICB2b2lkIHNpZ25hbFNlcnZlcigpIGNvbnN0IHsKKyAgICAgICAgbUNvbXBvc2VyU2VydmljZS0+c2lnbmFsKCk7CisgICAgfQorfTsKKworQU5EUk9JRF9TSU5HTEVUT05fU1RBVElDX0lOU1RBTkNFKFN1cmZhY2VDbGllbnQpOworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwogU3VyZmFjZTo6U3VyZmFjZShjb25zdCBzcDxTdXJmYWNlQ29udHJvbD4mIHN1cmZhY2UpCi0gICAgOiBtQ2xpZW50KHN1cmZhY2UtPm1DbGllbnQpLCBtU3VyZmFjZShzdXJmYWNlLT5tU3VyZmFjZSksCi0gICAgICBtVG9rZW4oc3VyZmFjZS0+bVRva2VuKSwgbUlkZW50aXR5KHN1cmZhY2UtPm1JZGVudGl0eSksCisgICAgOiBtQnVmZmVyTWFwcGVyKEdyYXBoaWNCdWZmZXJNYXBwZXI6OmdldCgpKSwKKyAgICAgIG1DbGllbnQoU3VyZmFjZUNsaWVudDo6Z2V0SW5zdGFuY2UoKSksCisgICAgICBtU2hhcmVkQnVmZmVyQ2xpZW50KE5VTEwpLAorICAgICAgbUluaXRDaGVjayhOT19JTklUKSwKKyAgICAgIG1TdXJmYWNlKHN1cmZhY2UtPm1TdXJmYWNlKSwKKyAgICAgIG1JZGVudGl0eShzdXJmYWNlLT5tSWRlbnRpdHkpLAogICAgICAgbUZvcm1hdChzdXJmYWNlLT5tRm9ybWF0KSwgbUZsYWdzKHN1cmZhY2UtPm1GbGFncyksCi0gICAgICBtQnVmZmVyTWFwcGVyKEdyYXBoaWNCdWZmZXJNYXBwZXI6OmdldCgpKSwgbVNoYXJlZEJ1ZmZlckNsaWVudChOVUxMKSwKICAgICAgIG1XaWR0aChzdXJmYWNlLT5tV2lkdGgpLCBtSGVpZ2h0KHN1cmZhY2UtPm1IZWlnaHQpCiB7Ci0gICAgbVNoYXJlZEJ1ZmZlckNsaWVudCA9IG5ldyBTaGFyZWRCdWZmZXJDbGllbnQoCi0gICAgICAgICAgICBtQ2xpZW50LT5tQ29udHJvbCwgbVRva2VuLCAyLCBtSWRlbnRpdHkpOwotCiAgICAgaW5pdCgpOwogfQogCi1TdXJmYWNlOjpTdXJmYWNlKGNvbnN0IFBhcmNlbCYgcGFyY2VsKQotICAgIDogIG1CdWZmZXJNYXBwZXIoR3JhcGhpY0J1ZmZlck1hcHBlcjo6Z2V0KCkpLCBtU2hhcmVkQnVmZmVyQ2xpZW50KE5VTEwpCitTdXJmYWNlOjpTdXJmYWNlKGNvbnN0IFBhcmNlbCYgcGFyY2VsLCBjb25zdCBzcDxJQmluZGVyPiYgcmVmKQorICAgIDogbUJ1ZmZlck1hcHBlcihHcmFwaGljQnVmZmVyTWFwcGVyOjpnZXQoKSksCisgICAgICBtQ2xpZW50KFN1cmZhY2VDbGllbnQ6OmdldEluc3RhbmNlKCkpLAorICAgICAgbVNoYXJlZEJ1ZmZlckNsaWVudChOVUxMKSwKKyAgICAgIG1Jbml0Q2hlY2soTk9fSU5JVCkKIHsKLSAgICBzcDxJQmluZGVyPiBjbGllbnRCaW5kZXIgPSBwYXJjZWwucmVhZFN0cm9uZ0JpbmRlcigpOwotICAgIG1TdXJmYWNlICAgID0gaW50ZXJmYWNlX2Nhc3Q8SVN1cmZhY2U+KHBhcmNlbC5yZWFkU3Ryb25nQmluZGVyKCkpOwotICAgIG1Ub2tlbiAgICAgID0gcGFyY2VsLnJlYWRJbnQzMigpOworICAgIG1TdXJmYWNlICAgID0gaW50ZXJmYWNlX2Nhc3Q8SVN1cmZhY2U+KHJlZik7CiAgICAgbUlkZW50aXR5ICAgPSBwYXJjZWwucmVhZEludDMyKCk7CiAgICAgbVdpZHRoICAgICAgPSBwYXJjZWwucmVhZEludDMyKCk7CiAgICAgbUhlaWdodCAgICAgPSBwYXJjZWwucmVhZEludDMyKCk7CiAgICAgbUZvcm1hdCAgICAgPSBwYXJjZWwucmVhZEludDMyKCk7CiAgICAgbUZsYWdzICAgICAgPSBwYXJjZWwucmVhZEludDMyKCk7Ci0KLSAgICAvLyBGSVhNRTogd2hhdCBkb2VzIHRoYXQgbWVhbiBpZiBjbGllbnRCaW5kZXIgaXMgTlVMTCBoZXJlPwotICAgIGlmIChjbGllbnRCaW5kZXIgIT0gTlVMTCkgewotICAgICAgICBtQ2xpZW50ID0gU3VyZmFjZUNvbXBvc2VyQ2xpZW50OjpjbGllbnRGb3JDb25uZWN0aW9uKGNsaWVudEJpbmRlcik7Ci0KLSAgICAgICAgbVNoYXJlZEJ1ZmZlckNsaWVudCA9IG5ldyBTaGFyZWRCdWZmZXJDbGllbnQoCi0gICAgICAgICAgICAgICAgbUNsaWVudC0+bUNvbnRyb2wsIG1Ub2tlbiwgMiwgbUlkZW50aXR5KTsKLSAgICB9Ci0KICAgICBpbml0KCk7CiB9CiAKK3N0YXR1c190IFN1cmZhY2U6OndyaXRlVG9QYXJjZWwoCisgICAgICAgIGNvbnN0IHNwPFN1cmZhY2U+JiBzdXJmYWNlLCBQYXJjZWwqIHBhcmNlbCkKK3sKKyAgICBzcDxJU3VyZmFjZT4gc3VyOworICAgIHVpbnQzMl90IGlkZW50aXR5ID0gMDsKKyAgICB1aW50MzJfdCB3aWR0aCA9IDA7CisgICAgdWludDMyX3QgaGVpZ2h0ID0gMDsKKyAgICB1aW50MzJfdCBmb3JtYXQgPSAwOworICAgIHVpbnQzMl90IGZsYWdzID0gMDsKKyAgICBpZiAoU3VyZmFjZTo6aXNWYWxpZChzdXJmYWNlKSkgeworICAgICAgICBzdXIgICAgICA9IHN1cmZhY2UtPm1TdXJmYWNlOworICAgICAgICBpZGVudGl0eSA9IHN1cmZhY2UtPm1JZGVudGl0eTsKKyAgICAgICAgd2lkdGggICAgPSBzdXJmYWNlLT5tV2lkdGg7CisgICAgICAgIGhlaWdodCAgID0gc3VyZmFjZS0+bUhlaWdodDsKKyAgICAgICAgZm9ybWF0ICAgPSBzdXJmYWNlLT5tRm9ybWF0OworICAgICAgICBmbGFncyAgICA9IHN1cmZhY2UtPm1GbGFnczsKKyAgICB9CisgICAgcGFyY2VsLT53cml0ZVN0cm9uZ0JpbmRlcihzdXIhPTAgPyBzdXItPmFzQmluZGVyKCkgOiBOVUxMKTsKKyAgICBwYXJjZWwtPndyaXRlSW50MzIoaWRlbnRpdHkpOworICAgIHBhcmNlbC0+d3JpdGVJbnQzMih3aWR0aCk7CisgICAgcGFyY2VsLT53cml0ZUludDMyKGhlaWdodCk7CisgICAgcGFyY2VsLT53cml0ZUludDMyKGZvcm1hdCk7CisgICAgcGFyY2VsLT53cml0ZUludDMyKGZsYWdzKTsKKyAgICByZXR1cm4gTk9fRVJST1I7CisKK30KKworc3A8U3VyZmFjZT4gU3VyZmFjZTo6cmVhZEZyb21QYXJjZWwoCisgICAgICAgIGNvbnN0IFBhcmNlbCYgZGF0YSwgY29uc3Qgc3A8U3VyZmFjZT4mIG90aGVyKQoreworICAgIHNwPFN1cmZhY2U+IHJlc3VsdChvdGhlcik7CisgICAgc3A8SUJpbmRlcj4gYmluZGVyKGRhdGEucmVhZFN0cm9uZ0JpbmRlcigpKTsKKyAgICBpZiAob3RoZXI9PTAgfHwgYmluZGVyICE9IG90aGVyLT5tU3VyZmFjZS0+YXNCaW5kZXIoKSkgeworICAgICAgICByZXN1bHQgPSBuZXcgU3VyZmFjZShkYXRhLCBiaW5kZXIpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCiB2b2lkIFN1cmZhY2U6OmluaXQoKQogewotICAgIGFuZHJvaWRfbmF0aXZlX3dpbmRvd190OjpzZXRTd2FwSW50ZXJ2YWwgID0gc2V0U3dhcEludGVydmFsOwotICAgIGFuZHJvaWRfbmF0aXZlX3dpbmRvd190OjpkZXF1ZXVlQnVmZmVyICAgID0gZGVxdWV1ZUJ1ZmZlcjsKLSAgICBhbmRyb2lkX25hdGl2ZV93aW5kb3dfdDo6bG9ja0J1ZmZlciAgICAgICA9IGxvY2tCdWZmZXI7Ci0gICAgYW5kcm9pZF9uYXRpdmVfd2luZG93X3Q6OnF1ZXVlQnVmZmVyICAgICAgPSBxdWV1ZUJ1ZmZlcjsKLSAgICBhbmRyb2lkX25hdGl2ZV93aW5kb3dfdDo6cXVlcnkgICAgICAgICAgICA9IHF1ZXJ5OwotICAgIGFuZHJvaWRfbmF0aXZlX3dpbmRvd190OjpwZXJmb3JtICAgICAgICAgID0gcGVyZm9ybTsKLSAgICBtU3dhcFJlY3RhbmdsZS5tYWtlSW52YWxpZCgpOworICAgIEFOYXRpdmVXaW5kb3c6OnNldFN3YXBJbnRlcnZhbCAgPSBzZXRTd2FwSW50ZXJ2YWw7CisgICAgQU5hdGl2ZVdpbmRvdzo6ZGVxdWV1ZUJ1ZmZlciAgICA9IGRlcXVldWVCdWZmZXI7CisgICAgQU5hdGl2ZVdpbmRvdzo6bG9ja0J1ZmZlciAgICAgICA9IGxvY2tCdWZmZXI7CisgICAgQU5hdGl2ZVdpbmRvdzo6cXVldWVCdWZmZXIgICAgICA9IHF1ZXVlQnVmZmVyOworICAgIEFOYXRpdmVXaW5kb3c6OnF1ZXJ5ICAgICAgICAgICAgPSBxdWVyeTsKKyAgICBBTmF0aXZlV2luZG93OjpwZXJmb3JtICAgICAgICAgID0gcGVyZm9ybTsKKwogICAgIERpc3BsYXlJbmZvIGRpbmZvOwogICAgIFN1cmZhY2VDb21wb3NlckNsaWVudDo6Z2V0RGlzcGxheUluZm8oMCwgJmRpbmZvKTsKLSAgICBjb25zdF9jYXN0PGZsb2F0Jj4oYW5kcm9pZF9uYXRpdmVfd2luZG93X3Q6OnhkcGkpID0gZGluZm8ueGRwaTsKLSAgICBjb25zdF9jYXN0PGZsb2F0Jj4oYW5kcm9pZF9uYXRpdmVfd2luZG93X3Q6OnlkcGkpID0gZGluZm8ueWRwaTsKKyAgICBjb25zdF9jYXN0PGZsb2F0Jj4oQU5hdGl2ZVdpbmRvdzo6eGRwaSkgPSBkaW5mby54ZHBpOworICAgIGNvbnN0X2Nhc3Q8ZmxvYXQmPihBTmF0aXZlV2luZG93Ojp5ZHBpKSA9IGRpbmZvLnlkcGk7CiAgICAgLy8gRklYTUU6IHNldCByZWFsIHZhbHVlcyBoZXJlCi0gICAgY29uc3RfY2FzdDxpbnQmPihhbmRyb2lkX25hdGl2ZV93aW5kb3dfdDo6bWluU3dhcEludGVydmFsKSA9IDE7Ci0gICAgY29uc3RfY2FzdDxpbnQmPihhbmRyb2lkX25hdGl2ZV93aW5kb3dfdDo6bWF4U3dhcEludGVydmFsKSA9IDE7Ci0gICAgY29uc3RfY2FzdDx1aW50MzJfdCY+KGFuZHJvaWRfbmF0aXZlX3dpbmRvd190OjpmbGFncykgPSAwOwotICAgIC8vIGJlIGRlZmF1bHQgd2UgcmVxdWVzdCBhIGhhcmR3YXJlIHN1cmZhY2UKLSAgICBtVXNhZ2UgPSBHUkFMTE9DX1VTQUdFX0hXX1JFTkRFUjsKKyAgICBjb25zdF9jYXN0PGludCY+KEFOYXRpdmVXaW5kb3c6Om1pblN3YXBJbnRlcnZhbCkgPSAxOworICAgIGNvbnN0X2Nhc3Q8aW50Jj4oQU5hdGl2ZVdpbmRvdzo6bWF4U3dhcEludGVydmFsKSA9IDE7CisgICAgY29uc3RfY2FzdDx1aW50MzJfdCY+KEFOYXRpdmVXaW5kb3c6OmZsYWdzKSA9IDA7CisKICAgICBtQ29ubmVjdGVkID0gMDsKLSAgICBtTmVlZEZ1bGxVcGRhdGUgPSBmYWxzZTsKKyAgICBtU3dhcFJlY3RhbmdsZS5tYWtlSW52YWxpZCgpOworICAgIC8vIHR3byBidWZmZXJzIGJ5IGRlZmF1bHQKKyAgICBtQnVmZmVycy5zZXRDYXBhY2l0eSgyKTsKKyAgICBtQnVmZmVycy5pbnNlcnRBdCgwLCAyKTsKKworICAgIGlmIChtU3VyZmFjZSAhPSAwICYmIG1DbGllbnQuaW5pdENoZWNrKCkgPT0gTk9fRVJST1IpIHsKKyAgICAgICAgaW50MzJfdCB0b2tlbiA9IG1DbGllbnQuZ2V0VG9rZW5Gb3JTdXJmYWNlKG1TdXJmYWNlKTsKKyAgICAgICAgaWYgKHRva2VuID49IDApIHsKKyAgICAgICAgICAgIG1TaGFyZWRCdWZmZXJDbGllbnQgPSBuZXcgU2hhcmVkQnVmZmVyQ2xpZW50KAorICAgICAgICAgICAgICAgICAgICBtQ2xpZW50LmdldFNoYXJlZENsaWVudCgpLCB0b2tlbiwgMiwgbUlkZW50aXR5KTsKKyAgICAgICAgICAgIG1Jbml0Q2hlY2sgPSBtQ2xpZW50LmdldFNoYXJlZENsaWVudCgpLT52YWxpZGF0ZSh0b2tlbik7CisgICAgICAgIH0KKyAgICB9CiB9CiAKIFN1cmZhY2U6On5TdXJmYWNlKCkKIHsKICAgICAvLyB0aGlzIGlzIGEgY2xpZW50LXNpZGUgb3BlcmF0aW9uLCB0aGUgc3VyZmFjZSBpcyBkZXN0cm95ZWQsIHVubWFwCiAgICAgLy8gaXRzIGJ1ZmZlcnMgaW4gdGhpcyBwcm9jZXNzLgotICAgIGZvciAoaW50IGk9MCA7IGk8MiA7IGkrKykgeworICAgIHNpemVfdCBzaXplID0gbUJ1ZmZlcnMuc2l6ZSgpOworICAgIGZvciAoc2l6ZV90IGk9MCA7IGk8c2l6ZSA7IGkrKykgewogICAgICAgICBpZiAobUJ1ZmZlcnNbaV0gIT0gMCAmJiBtQnVmZmVyc1tpXS0+aGFuZGxlICE9IDApIHsKICAgICAgICAgICAgIGdldEJ1ZmZlck1hcHBlcigpLnVucmVnaXN0ZXJCdWZmZXIobUJ1ZmZlcnNbaV0tPmhhbmRsZSk7CiAgICAgICAgIH0KQEAgLTM2OSw5MyArNDMyLDg4IEBACiAKICAgICAvLyBjbGVhciBhbGwgcmVmZXJlbmNlcyBhbmQgdHJpZ2dlciBhbiBJUEMgbm93LCB0byBtYWtlIHN1cmUgdGhpbmdzCiAgICAgLy8gaGFwcGVuIHdpdGhvdXQgZGVsYXksIHNpbmNlIHRoZXNlIHJlc291cmNlcyBhcmUgcXVpdGUgaGVhdnkuCi0gICAgbUNsaWVudC5jbGVhcigpOworICAgIG1CdWZmZXJzLmNsZWFyKCk7CiAgICAgbVN1cmZhY2UuY2xlYXIoKTsKICAgICBkZWxldGUgbVNoYXJlZEJ1ZmZlckNsaWVudDsKICAgICBJUENUaHJlYWRTdGF0ZTo6c2VsZigpLT5mbHVzaENvbW1hbmRzKCk7CiB9CiAKLXNwPFN1cmZhY2VDb21wb3NlckNsaWVudD4gU3VyZmFjZTo6Z2V0Q2xpZW50KCkgY29uc3QgewotICAgIHJldHVybiBtQ2xpZW50OworYm9vbCBTdXJmYWNlOjppc1ZhbGlkKCkgeworICAgIHJldHVybiBtSW5pdENoZWNrID09IE5PX0VSUk9SOworfQorCitzdGF0dXNfdCBTdXJmYWNlOjp2YWxpZGF0ZSgpIGNvbnN0Cit7CisgICAgLy8gY2hlY2sgdGhhdCB3ZSBpbml0aWFsaXplZCBvdXJzZWxmIHByb3Blcmx5CisgICAgaWYgKG1Jbml0Q2hlY2sgIT0gTk9fRVJST1IpIHsKKyAgICAgICAgTE9HRSgiaW52YWxpZCB0b2tlbiAoaWRlbnRpdHk9JXUpIiwgbUlkZW50aXR5KTsKKyAgICAgICAgcmV0dXJuIG1Jbml0Q2hlY2s7CisgICAgfQorCisgICAgLy8gdmVyaWZ5IHRoZSBpZGVudGl0eSBvZiB0aGlzIHN1cmZhY2UKKyAgICB1aW50MzJfdCBpZGVudGl0eSA9IG1TaGFyZWRCdWZmZXJDbGllbnQtPmdldElkZW50aXR5KCk7CisKKyAgICAvLyB0aGlzIGlzIGEgYml0IG9mIGEgKHRlbXBvcmFyeSkgc3BlY2lhbCBjYXNlLCBpZGVudGl0eT09MCBtZWFucyB0aGF0CisgICAgLy8gbm8gb3BlcmF0aW9uIGFyZSBhbGxvd2VkIGZyb20gdGhlIGNsaWVudCAoZWc6IGRlcXVldWUvcXVldWUpLCB0aGlzCisgICAgLy8gaXMgdXNlZCB3aXRoIFBVU0hfQlVGRkVSIHN1cmZhY2VzIGZvciBpbnN0YW5jZQorICAgIGlmIChpZGVudGl0eSA9PSAwKSB7CisgICAgICAgIExPR0UoIltTdXJmYWNlXSBpbnZhbGlkIG9wZXJhdGlvbiAoaWRlbnRpdHk9JXUpIiwgbUlkZW50aXR5KTsKKyAgICAgICAgcmV0dXJuIElOVkFMSURfT1BFUkFUSU9OOworICAgIH0KKworICAgIGlmIChtSWRlbnRpdHkgIT0gaWRlbnRpdHkpIHsKKyAgICAgICAgTE9HRSgiW1N1cmZhY2VdIHVzaW5nIGFuIGludmFsaWQgc3VyZmFjZSwgIgorICAgICAgICAgICAgICAgICJpZGVudGl0eT0ldSBzaG91bGQgYmUgJWQiLAorICAgICAgICAgICAgICAgIG1JZGVudGl0eSwgaWRlbnRpdHkpOworICAgICAgICByZXR1cm4gTk9fSU5JVDsKKyAgICB9CisKKyAgICAvLyBjaGVjayB0aGUgc3VyZmFjZSBkaWRuJ3QgYmVjb21lIGludmFsaWQKKyAgICBzdGF0dXNfdCBlcnIgPSBtU2hhcmVkQnVmZmVyQ2xpZW50LT5nZXRTdGF0dXMoKTsKKyAgICBpZiAoZXJyICE9IE5PX0VSUk9SKSB7CisgICAgICAgIExPR0UoInN1cmZhY2UgKGlkZW50aXR5PSV1KSBpcyBpbnZhbGlkLCBlcnI9JWQgKCVzKSIsCisgICAgICAgICAgICAgICAgbUlkZW50aXR5LCBlcnIsIHN0cmVycm9yKC1lcnIpKTsKKyAgICAgICAgcmV0dXJuIGVycjsKKyAgICB9CisKKyAgICByZXR1cm4gTk9fRVJST1I7CiB9CiAKIHNwPElTdXJmYWNlPiBTdXJmYWNlOjpnZXRJU3VyZmFjZSgpIGNvbnN0IHsKICAgICByZXR1cm4gbVN1cmZhY2U7CiB9CiAKLWJvb2wgU3VyZmFjZTo6aXNWYWxpZCgpIHsKLSAgICByZXR1cm4gbVRva2VuPj0wICYmIG1DbGllbnQhPTA7Ci19Ci0KLXN0YXR1c190IFN1cmZhY2U6OnZhbGlkYXRlKCkgY29uc3QKLXsKLSAgICBzcDxTdXJmYWNlQ29tcG9zZXJDbGllbnQ+IGNsaWVudChnZXRDbGllbnQoKSk7Ci0gICAgaWYgKG1Ub2tlbjwwIHx8IG1DbGllbnQ9PTApIHsKLSAgICAgICAgTE9HRSgiaW52YWxpZCB0b2tlbiAoJWQsIGlkZW50aXR5PSV1KSBvciBjbGllbnQgKCVwKSIsIAotICAgICAgICAgICAgICAgIG1Ub2tlbiwgbUlkZW50aXR5LCBjbGllbnQuZ2V0KCkpOwotICAgICAgICByZXR1cm4gTk9fSU5JVDsKLSAgICB9Ci0gICAgU2hhcmVkQ2xpZW50IGNvbnN0KiBjYmxrID0gbUNsaWVudC0+bUNvbnRyb2w7Ci0gICAgaWYgKGNibGsgPT0gMCkgewotICAgICAgICBMT0dFKCJjYmxrIGlzIG51bGwgKHN1cmZhY2UgaWQ9JWQsIGlkZW50aXR5PSV1KSIsIG1Ub2tlbiwgbUlkZW50aXR5KTsKLSAgICAgICAgcmV0dXJuIE5PX0lOSVQ7Ci0gICAgfQotICAgIHN0YXR1c190IGVyciA9IGNibGstPnZhbGlkYXRlKG1Ub2tlbik7Ci0gICAgaWYgKGVyciAhPSBOT19FUlJPUikgewotICAgICAgICBMT0dFKCJzdXJmYWNlIChpZD0lZCwgaWRlbnRpdHk9JXUpIGlzIGludmFsaWQsIGVycj0lZCAoJXMpIiwKLSAgICAgICAgICAgICAgICBtVG9rZW4sIG1JZGVudGl0eSwgZXJyLCBzdHJlcnJvcigtZXJyKSk7Ci0gICAgICAgIHJldHVybiBlcnI7Ci0gICAgfQotICAgIHVpbnQzMl90IGlkZW50aXR5ID0gY2Jsay0+Z2V0SWRlbnRpdHkobVRva2VuKTsKLSAgICBpZiAobUlkZW50aXR5ICE9IGlkZW50aXR5KSB7Ci0gICAgICAgIExPR0UoInVzaW5nIGFuIGludmFsaWQgc3VyZmFjZSBpZD0lZCwgaWRlbnRpdHk9JXUgc2hvdWxkIGJlICVkIiwKLSAgICAgICAgICAgICAgICBtVG9rZW4sIG1JZGVudGl0eSwgaWRlbnRpdHkpOwotICAgICAgICByZXR1cm4gTk9fSU5JVDsKLSAgICB9Ci0gICAgcmV0dXJuIE5PX0VSUk9SOwotfQotCi0KLWJvb2wgU3VyZmFjZTo6aXNTYW1lU3VyZmFjZSgKLSAgICAgICAgY29uc3Qgc3A8U3VyZmFjZT4mIGxocywgY29uc3Qgc3A8U3VyZmFjZT4mIHJocykgCi17Ci0gICAgaWYgKGxocyA9PSAwIHx8IHJocyA9PSAwKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICByZXR1cm4gbGhzLT5tU3VyZmFjZS0+YXNCaW5kZXIoKSA9PSByaHMtPm1TdXJmYWNlLT5hc0JpbmRlcigpOwotfQotCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWludCBTdXJmYWNlOjpzZXRTd2FwSW50ZXJ2YWwoYW5kcm9pZF9uYXRpdmVfd2luZG93X3QqIHdpbmRvdywgaW50IGludGVydmFsKSB7CitpbnQgU3VyZmFjZTo6c2V0U3dhcEludGVydmFsKEFOYXRpdmVXaW5kb3cqIHdpbmRvdywgaW50IGludGVydmFsKSB7CiAgICAgcmV0dXJuIDA7CiB9CiAKLWludCBTdXJmYWNlOjpkZXF1ZXVlQnVmZmVyKGFuZHJvaWRfbmF0aXZlX3dpbmRvd190KiB3aW5kb3csIAoraW50IFN1cmZhY2U6OmRlcXVldWVCdWZmZXIoQU5hdGl2ZVdpbmRvdyogd2luZG93LCAKICAgICAgICAgYW5kcm9pZF9uYXRpdmVfYnVmZmVyX3QqKiBidWZmZXIpIHsKICAgICBTdXJmYWNlKiBzZWxmID0gZ2V0U2VsZih3aW5kb3cpOwogICAgIHJldHVybiBzZWxmLT5kZXF1ZXVlQnVmZmVyKGJ1ZmZlcik7CiB9CiAKLWludCBTdXJmYWNlOjpsb2NrQnVmZmVyKGFuZHJvaWRfbmF0aXZlX3dpbmRvd190KiB3aW5kb3csIAoraW50IFN1cmZhY2U6OmxvY2tCdWZmZXIoQU5hdGl2ZVdpbmRvdyogd2luZG93LCAKICAgICAgICAgYW5kcm9pZF9uYXRpdmVfYnVmZmVyX3QqIGJ1ZmZlcikgewogICAgIFN1cmZhY2UqIHNlbGYgPSBnZXRTZWxmKHdpbmRvdyk7CiAgICAgcmV0dXJuIHNlbGYtPmxvY2tCdWZmZXIoYnVmZmVyKTsKIH0KIAotaW50IFN1cmZhY2U6OnF1ZXVlQnVmZmVyKGFuZHJvaWRfbmF0aXZlX3dpbmRvd190KiB3aW5kb3csIAoraW50IFN1cmZhY2U6OnF1ZXVlQnVmZmVyKEFOYXRpdmVXaW5kb3cqIHdpbmRvdywgCiAgICAgICAgIGFuZHJvaWRfbmF0aXZlX2J1ZmZlcl90KiBidWZmZXIpIHsKICAgICBTdXJmYWNlKiBzZWxmID0gZ2V0U2VsZih3aW5kb3cpOwogICAgIHJldHVybiBzZWxmLT5xdWV1ZUJ1ZmZlcihidWZmZXIpOwogfQogCi1pbnQgU3VyZmFjZTo6cXVlcnkoYW5kcm9pZF9uYXRpdmVfd2luZG93X3QqIHdpbmRvdywgCitpbnQgU3VyZmFjZTo6cXVlcnkoQU5hdGl2ZVdpbmRvdyogd2luZG93LCAKICAgICAgICAgaW50IHdoYXQsIGludCogdmFsdWUpIHsKICAgICBTdXJmYWNlKiBzZWxmID0gZ2V0U2VsZih3aW5kb3cpOwogICAgIHJldHVybiBzZWxmLT5xdWVyeSh3aGF0LCB2YWx1ZSk7CiB9CiAKLWludCBTdXJmYWNlOjpwZXJmb3JtKGFuZHJvaWRfbmF0aXZlX3dpbmRvd190KiB3aW5kb3csIAoraW50IFN1cmZhY2U6OnBlcmZvcm0oQU5hdGl2ZVdpbmRvdyogd2luZG93LCAKICAgICAgICAgaW50IG9wZXJhdGlvbiwgLi4uKSB7CiAgICAgdmFfbGlzdCBhcmdzOwogICAgIHZhX3N0YXJ0KGFyZ3MsIG9wZXJhdGlvbik7CkBAIC00NjcsMjEgKzUyNSwyNCBAQAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLXN0YXR1c190IFN1cmZhY2U6OmRlcXVldWVCdWZmZXIoc3A8R3JhcGhpY0J1ZmZlcj4qIGJ1ZmZlcikgewotICAgIGFuZHJvaWRfbmF0aXZlX2J1ZmZlcl90KiBvdXQ7Ci0gICAgc3RhdHVzX3QgZXJyID0gZGVxdWV1ZUJ1ZmZlcigmb3V0KTsKLSAgICBpZiAoZXJyID09IE5PX0VSUk9SKSB7Ci0gICAgICAgICpidWZmZXIgPSBHcmFwaGljQnVmZmVyOjpnZXRTZWxmKG91dCk7Citib29sIFN1cmZhY2U6Om5lZWROZXdCdWZmZXIoaW50IGJ1ZklkeCwKKyAgICAgICAgdWludDMyX3QgKnBXaWR0aCwgdWludDMyX3QgKnBIZWlnaHQsCisgICAgICAgIHVpbnQzMl90ICpwRm9ybWF0LCB1aW50MzJfdCAqcFVzYWdlKSBjb25zdAoreworICAgIE11dGV4OjpBdXRvbG9jayBfbChtU3VyZmFjZUxvY2spOworCisgICAgLy8gQWx3YXlzIGNhbGwgbmVlZE5ld0J1ZmZlcigpLCBzaW5jZSBpdCBjbGVhcnMgdGhlIG5lZWRlZCBidWZmZXJzIGZsYWdzCisgICAgYm9vbCBuZWVkTmV3QnVmZmVyID0gbVNoYXJlZEJ1ZmZlckNsaWVudC0+bmVlZE5ld0J1ZmZlcihidWZJZHgpOworICAgIGJvb2wgdmFsaWRCdWZmZXIgPSBtQnVmZmVySW5mby52YWxpZGF0ZUJ1ZmZlcihtQnVmZmVyc1tidWZJZHhdKTsKKyAgICBib29sIG5ld05lZXdCdWZmZXIgPSBuZWVkTmV3QnVmZmVyIHx8ICF2YWxpZEJ1ZmZlcjsKKyAgICBpZiAobmV3TmVld0J1ZmZlcikgeworICAgICAgICBtQnVmZmVySW5mby5nZXQocFdpZHRoLCBwSGVpZ2h0LCBwRm9ybWF0LCBwVXNhZ2UpOwogICAgIH0KLSAgICByZXR1cm4gZXJyOworICAgIHJldHVybiBuZXdOZWV3QnVmZmVyOwogfQogCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLQogaW50IFN1cmZhY2U6OmRlcXVldWVCdWZmZXIoYW5kcm9pZF9uYXRpdmVfYnVmZmVyX3QqKiBidWZmZXIpCiB7Ci0gICAgc3A8U3VyZmFjZUNvbXBvc2VyQ2xpZW50PiBjbGllbnQoZ2V0Q2xpZW50KCkpOwogICAgIHN0YXR1c190IGVyciA9IHZhbGlkYXRlKCk7CiAgICAgaWYgKGVyciAhPSBOT19FUlJPUikKICAgICAgICAgcmV0dXJuIGVycjsKQEAgLTQ5MiwyNCArNTUzLDI4IEBACiAgICAgICAgIHJldHVybiBidWZJZHg7CiAgICAgfQogCi0gICAgLy8gYmVsb3cgd2UgbWFrZSBzdXJlIHdlIEFUIExFQVNUIGhhdmUgdGhlIHVzYWdlIGZsYWdzIHdlIHdhbnQKLSAgICBjb25zdCB1aW50MzJfdCB1c2FnZShnZXRVc2FnZSgpKTsKLSAgICBjb25zdCBzcDxHcmFwaGljQnVmZmVyPiYgYmFja0J1ZmZlcihtQnVmZmVyc1tidWZJZHhdKTsKLSAgICBpZiAoYmFja0J1ZmZlciA9PSAwIHx8IAotICAgICAgICAoKHVpbnQzMl90KGJhY2tCdWZmZXItPnVzYWdlKSAmIHVzYWdlKSAhPSB1c2FnZSkgfHwKLSAgICAgICAgbVNoYXJlZEJ1ZmZlckNsaWVudC0+bmVlZE5ld0J1ZmZlcihidWZJZHgpKSAKLSAgICB7Ci0gICAgICAgIGVyciA9IGdldEJ1ZmZlckxvY2tlZChidWZJZHgsIHVzYWdlKTsKLSAgICAgICAgTE9HRV9JRihlcnIsICJnZXRCdWZmZXJMb2NrZWQoJWxkLCAlMDh4KSBmYWlsZWQgKCVzKSIsCi0gICAgICAgICAgICAgICAgYnVmSWR4LCB1c2FnZSwgc3RyZXJyb3IoLWVycikpOworICAgIC8vIGdyb3cgdGhlIGJ1ZmZlciBhcnJheSBpZiBuZWVkZWQKKyAgICBjb25zdCBzaXplX3Qgc2l6ZSA9IG1CdWZmZXJzLnNpemUoKTsKKyAgICBjb25zdCBzaXplX3QgbmVlZGVkID0gYnVmSWR4KzE7CisgICAgaWYgKHNpemUgPCBuZWVkZWQpIHsKKyAgICAgICAgbUJ1ZmZlcnMuaW5zZXJ0QXQoc2l6ZSwgbmVlZGVkLXNpemUpOworICAgIH0KKworICAgIHVpbnQzMl90IHcsIGgsIGZvcm1hdCwgdXNhZ2U7CisgICAgaWYgKG5lZWROZXdCdWZmZXIoYnVmSWR4LCAmdywgJmgsICZmb3JtYXQsICZ1c2FnZSkpIHsKKyAgICAgICAgZXJyID0gZ2V0QnVmZmVyTG9ja2VkKGJ1ZklkeCwgdywgaCwgZm9ybWF0LCB1c2FnZSk7CisgICAgICAgIExPR0VfSUYoZXJyLCAiZ2V0QnVmZmVyTG9ja2VkKCVsZCwgJXUsICV1LCAldSwgJTA4eCkgZmFpbGVkICglcykiLAorICAgICAgICAgICAgICAgIGJ1ZklkeCwgdywgaCwgZm9ybWF0LCB1c2FnZSwgc3RyZXJyb3IoLWVycikpOwogICAgICAgICBpZiAoZXJyID09IE5PX0VSUk9SKSB7CiAgICAgICAgICAgICAvLyByZXNldCB0aGUgd2lkdGgvaGVpZ2h0IHdpdGggdGhlIHdoYXQgd2UgZ2V0IGZyb20gdGhlIGJ1ZmZlcgorICAgICAgICAgICAgY29uc3Qgc3A8R3JhcGhpY0J1ZmZlcj4mIGJhY2tCdWZmZXIobUJ1ZmZlcnNbYnVmSWR4XSk7CiAgICAgICAgICAgICBtV2lkdGggID0gdWludDMyX3QoYmFja0J1ZmZlci0+d2lkdGgpOwogICAgICAgICAgICAgbUhlaWdodCA9IHVpbnQzMl90KGJhY2tCdWZmZXItPmhlaWdodCk7CiAgICAgICAgIH0KICAgICB9CiAKICAgICAvLyBpZiB3ZSBzdGlsbCBkb24ndCBoYXZlIGEgYnVmZmVyIGhlcmUsIHdlIHByb2JhYmx5IHJhbiBvdXQgb2YgbWVtb3J5CisgICAgY29uc3Qgc3A8R3JhcGhpY0J1ZmZlcj4mIGJhY2tCdWZmZXIobUJ1ZmZlcnNbYnVmSWR4XSk7CiAgICAgaWYgKCFlcnIgJiYgYmFja0J1ZmZlcj09MCkgewogICAgICAgICBlcnIgPSBOT19NRU1PUlk7CiAgICAgfQpAQCAtNTI2LDEyICs1OTEsMTEgQEAKIAogaW50IFN1cmZhY2U6OmxvY2tCdWZmZXIoYW5kcm9pZF9uYXRpdmVfYnVmZmVyX3QqIGJ1ZmZlcikKIHsKLSAgICBzcDxTdXJmYWNlQ29tcG9zZXJDbGllbnQ+IGNsaWVudChnZXRDbGllbnQoKSk7CiAgICAgc3RhdHVzX3QgZXJyID0gdmFsaWRhdGUoKTsKICAgICBpZiAoZXJyICE9IE5PX0VSUk9SKQogICAgICAgICByZXR1cm4gZXJyOwogCi0gICAgaW50MzJfdCBidWZJZHggPSBHcmFwaGljQnVmZmVyOjpnZXRTZWxmKGJ1ZmZlciktPmdldEluZGV4KCk7CisgICAgaW50MzJfdCBidWZJZHggPSBnZXRCdWZmZXJJbmRleChHcmFwaGljQnVmZmVyOjpnZXRTZWxmKGJ1ZmZlcikpOwogICAgIGVyciA9IG1TaGFyZWRCdWZmZXJDbGllbnQtPmxvY2soYnVmSWR4KTsKICAgICBMT0dFX0lGKGVyciwgImVycm9yIGxvY2tpbmcgYnVmZmVyICVkICglcykiLCBidWZJZHgsIHN0cmVycm9yKC1lcnIpKTsKICAgICByZXR1cm4gZXJyOwpAQCAtNTM5LDcgKzYwMyw2IEBACiAKIGludCBTdXJmYWNlOjpxdWV1ZUJ1ZmZlcihhbmRyb2lkX25hdGl2ZV9idWZmZXJfdCogYnVmZmVyKQogeyAgIAotICAgIHNwPFN1cmZhY2VDb21wb3NlckNsaWVudD4gY2xpZW50KGdldENsaWVudCgpKTsKICAgICBzdGF0dXNfdCBlcnIgPSB2YWxpZGF0ZSgpOwogICAgIGlmIChlcnIgIT0gTk9fRVJST1IpCiAgICAgICAgIHJldHVybiBlcnI7CkBAIC01NDgsMTQgKzYxMSwxNSBAQAogICAgICAgICBtRGlydHlSZWdpb24uc2V0KG1Td2FwUmVjdGFuZ2xlKTsKICAgICB9CiAgICAgCi0gICAgaW50MzJfdCBidWZJZHggPSBHcmFwaGljQnVmZmVyOjpnZXRTZWxmKGJ1ZmZlciktPmdldEluZGV4KCk7CisgICAgaW50MzJfdCBidWZJZHggPSBnZXRCdWZmZXJJbmRleChHcmFwaGljQnVmZmVyOjpnZXRTZWxmKGJ1ZmZlcikpOworICAgIG1TaGFyZWRCdWZmZXJDbGllbnQtPnNldENyb3AoYnVmSWR4LCBtTmV4dEJ1ZmZlckNyb3ApOwogICAgIG1TaGFyZWRCdWZmZXJDbGllbnQtPnNldERpcnR5UmVnaW9uKGJ1ZklkeCwgbURpcnR5UmVnaW9uKTsKICAgICBlcnIgPSBtU2hhcmVkQnVmZmVyQ2xpZW50LT5xdWV1ZShidWZJZHgpOwogICAgIExPR0VfSUYoZXJyLCAiZXJyb3IgcXVldWluZyBidWZmZXIgJWQgKCVzKSIsIGJ1ZklkeCwgc3RyZXJyb3IoLWVycikpOwogCiAgICAgaWYgKGVyciA9PSBOT19FUlJPUikgewotICAgICAgICAvLyBGSVhNRTogY2FuIHdlIGF2b2lkIHRoaXMgSVBDIGlmIHdlIGtub3cgdGhlcmUgaXMgb25lIHBlbmRpbmc/Ci0gICAgICAgIGNsaWVudC0+c2lnbmFsU2VydmVyKCk7CisgICAgICAgIC8vIFRPRE86IGNhbiB3ZSBhdm9pZCB0aGlzIElQQyBpZiB3ZSBrbm93IHRoZXJlIGlzIG9uZSBwZW5kaW5nPworICAgICAgICBtQ2xpZW50LnNpZ25hbFNlcnZlcigpOwogICAgIH0KICAgICByZXR1cm4gZXJyOwogfQpAQCAtNTc4LDYgKzY0MiwxMCBAQAogCiBpbnQgU3VyZmFjZTo6cGVyZm9ybShpbnQgb3BlcmF0aW9uLCB2YV9saXN0IGFyZ3MpCiB7CisgICAgc3RhdHVzX3QgZXJyID0gdmFsaWRhdGUoKTsKKyAgICBpZiAoZXJyICE9IE5PX0VSUk9SKQorICAgICAgICByZXR1cm4gZXJyOworCiAgICAgaW50IHJlcyA9IE5PX0VSUk9SOwogICAgIHN3aXRjaCAob3BlcmF0aW9uKSB7CiAgICAgY2FzZSBOQVRJVkVfV0lORE9XX1NFVF9VU0FHRToKQEAgLTU4OSw2ICs2NTcsMTUgQEAKICAgICBjYXNlIE5BVElWRV9XSU5ET1dfRElTQ09OTkVDVDoKICAgICAgICAgcmVzID0gZGlzcGF0Y2hfZGlzY29ubmVjdCggYXJncyApOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIE5BVElWRV9XSU5ET1dfU0VUX0NST1A6CisgICAgICAgIHJlcyA9IGRpc3BhdGNoX2Nyb3AoIGFyZ3MgKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOQVRJVkVfV0lORE9XX1NFVF9CVUZGRVJfQ09VTlQ6CisgICAgICAgIHJlcyA9IGRpc3BhdGNoX3NldF9idWZmZXJfY291bnQoIGFyZ3MgKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBOQVRJVkVfV0lORE9XX1NFVF9CVUZGRVJTX0dFT01FVFJZOgorICAgICAgICByZXMgPSBkaXNwYXRjaF9zZXRfYnVmZmVyc19nZW9tZXRyeSggYXJncyApOworICAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgICByZXMgPSBOQU1FX05PVF9GT1VORDsKICAgICAgICAgYnJlYWs7CkBAIC02MDgsMTIgKzY4NSwyNSBAQAogICAgIGludCBhcGkgPSB2YV9hcmcoYXJncywgaW50KTsKICAgICByZXR1cm4gZGlzY29ubmVjdCggYXBpICk7CiB9Ci0KK2ludCBTdXJmYWNlOjpkaXNwYXRjaF9jcm9wKHZhX2xpc3QgYXJncykgeworICAgIGFuZHJvaWRfbmF0aXZlX3JlY3RfdCBjb25zdCogcmVjdCA9IHZhX2FyZyhhcmdzLCBhbmRyb2lkX25hdGl2ZV9yZWN0X3QqKTsKKyAgICByZXR1cm4gY3JvcCggcmVpbnRlcnByZXRfY2FzdDxSZWN0IGNvbnN0Kj4ocmVjdCkgKTsKK30KK2ludCBTdXJmYWNlOjpkaXNwYXRjaF9zZXRfYnVmZmVyX2NvdW50KHZhX2xpc3QgYXJncykgeworICAgIHNpemVfdCBidWZmZXJDb3VudCA9IHZhX2FyZyhhcmdzLCBzaXplX3QpOworICAgIHJldHVybiBzZXRCdWZmZXJDb3VudChidWZmZXJDb3VudCk7Cit9CitpbnQgU3VyZmFjZTo6ZGlzcGF0Y2hfc2V0X2J1ZmZlcnNfZ2VvbWV0cnkodmFfbGlzdCBhcmdzKSB7CisgICAgaW50IHcgPSB2YV9hcmcoYXJncywgaW50KTsKKyAgICBpbnQgaCA9IHZhX2FyZyhhcmdzLCBpbnQpOworICAgIGludCBmID0gdmFfYXJnKGFyZ3MsIGludCk7CisgICAgcmV0dXJuIHNldEJ1ZmZlcnNHZW9tZXRyeSh3LCBoLCBmKTsKK30KIAogdm9pZCBTdXJmYWNlOjpzZXRVc2FnZSh1aW50MzJfdCByZXFVc2FnZSkKIHsKICAgICBNdXRleDo6QXV0b2xvY2sgX2wobVN1cmZhY2VMb2NrKTsKLSAgICBtVXNhZ2UgPSByZXFVc2FnZTsKKyAgICBtQnVmZmVySW5mby5zZXQocmVxVXNhZ2UpOwogfQogCiBpbnQgU3VyZmFjZTo6Y29ubmVjdChpbnQgYXBpKQpAQCAtNjU0LDE5ICs3NDQsNTUgQEAKICAgICByZXR1cm4gZXJyOwogfQogCi11aW50MzJfdCBTdXJmYWNlOjpnZXRVc2FnZSgpIGNvbnN0CitpbnQgU3VyZmFjZTo6Y3JvcChSZWN0IGNvbnN0KiByZWN0KQogewogICAgIE11dGV4OjpBdXRvbG9jayBfbChtU3VyZmFjZUxvY2spOwotICAgIHJldHVybiBtVXNhZ2U7CisgICAgLy8gVE9ETzogdmFsaWRhdGUgcmVjdCBzaXplCisgICAgbU5leHRCdWZmZXJDcm9wID0gKnJlY3Q7CisgICAgcmV0dXJuIE5PX0VSUk9SOwogfQogCitpbnQgU3VyZmFjZTo6c2V0QnVmZmVyQ291bnQoaW50IGJ1ZmZlckNvdW50KQoreworICAgIHNwPElTdXJmYWNlPiBzKG1TdXJmYWNlKTsKKyAgICBpZiAocyA9PSAwKSByZXR1cm4gTk9fSU5JVDsKKworICAgIGNsYXNzIFNldEJ1ZmZlckNvdW50SVBDIDogcHVibGljIFNoYXJlZEJ1ZmZlckNsaWVudDo6U2V0QnVmZmVyQ291bnRDYWxsYmFjayB7CisgICAgICAgIHNwPElTdXJmYWNlPiBzdXJmYWNlOworICAgICAgICB2aXJ0dWFsIHN0YXR1c190IG9wZXJhdG9yKCkoaW50IGJ1ZmZlckNvdW50KSBjb25zdCB7CisgICAgICAgICAgICByZXR1cm4gc3VyZmFjZS0+c2V0QnVmZmVyQ291bnQoYnVmZmVyQ291bnQpOworICAgICAgICB9CisgICAgcHVibGljOgorICAgICAgICBTZXRCdWZmZXJDb3VudElQQyhjb25zdCBzcDxJU3VyZmFjZT4mIHN1cmZhY2UpIDogc3VyZmFjZShzdXJmYWNlKSB7IH0KKyAgICB9IGlwYyhzKTsKKworICAgIHN0YXR1c190IGVyciA9IG1TaGFyZWRCdWZmZXJDbGllbnQtPnNldEJ1ZmZlckNvdW50KGJ1ZmZlckNvdW50LCBpcGMpOworICAgIExPR0VfSUYoZXJyLCAiSVN1cmZhY2U6OnNldEJ1ZmZlckNvdW50KCVkKSByZXR1cm5lZCAlcyIsCisgICAgICAgICAgICBidWZmZXJDb3VudCwgc3RyZXJyb3IoLWVycikpOworICAgIHJldHVybiBlcnI7Cit9CisKK2ludCBTdXJmYWNlOjpzZXRCdWZmZXJzR2VvbWV0cnkoaW50IHcsIGludCBoLCBpbnQgZm9ybWF0KQoreworICAgIGlmICh3PDAgfHwgaDwwIHx8IGZvcm1hdDwwKQorICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOworCisgICAgaWYgKCh3ICYmICFoKSB8fCAoIXcgJiYgaCkpCisgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisKKyAgICBNdXRleDo6QXV0b2xvY2sgX2wobVN1cmZhY2VMb2NrKTsKKyAgICBtQnVmZmVySW5mby5zZXQodywgaCwgZm9ybWF0KTsKKyAgICByZXR1cm4gTk9fRVJST1I7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwogaW50IFN1cmZhY2U6OmdldENvbm5lY3RlZEFwaSgpIGNvbnN0CiB7CiAgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1TdXJmYWNlTG9jayk7CiAgICAgcmV0dXJuIG1Db25uZWN0ZWQ7CiB9CiAKLQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBzdGF0dXNfdCBTdXJmYWNlOjpsb2NrKFN1cmZhY2VJbmZvKiBpbmZvLCBib29sIGJsb2NraW5nKSB7CkBAIC02NzcsNyArODAzLDcgQEAKIHsKICAgICBpZiAoZ2V0Q29ubmVjdGVkQXBpKCkpIHsKICAgICAgICAgTE9HRSgiU3VyZmFjZTo6bG9jayglcCkgZmFpbGVkLiBBbHJlYWR5IGNvbm5lY3RlZCB0byBhbm90aGVyIEFQSSIsCi0gICAgICAgICAgICAgICAgKGFuZHJvaWRfbmF0aXZlX3dpbmRvd190Kil0aGlzKTsKKyAgICAgICAgICAgICAgICAoQU5hdGl2ZVdpbmRvdyopdGhpcyk7CiAgICAgICAgIENhbGxTdGFjayBzdGFjazsKICAgICAgICAgc3RhY2sudXBkYXRlKCk7CiAgICAgICAgIHN0YWNrLmR1bXAoIiIpOwpAQCAtNzAzLDQ1ICs4MjksNDcgQEAKICAgICAvLyB3ZSdyZSBpbnRlbmRpbmcgdG8gZG8gc29mdHdhcmUgcmVuZGVyaW5nIGZyb20gdGhpcyBwb2ludAogICAgIHNldFVzYWdlKEdSQUxMT0NfVVNBR0VfU1dfUkVBRF9PRlRFTiB8IEdSQUxMT0NfVVNBR0VfU1dfV1JJVEVfT0ZURU4pOwogCi0gICAgc3A8R3JhcGhpY0J1ZmZlcj4gYmFja0J1ZmZlcjsKLSAgICBzdGF0dXNfdCBlcnIgPSBkZXF1ZXVlQnVmZmVyKCZiYWNrQnVmZmVyKTsKKyAgICBhbmRyb2lkX25hdGl2ZV9idWZmZXJfdCogb3V0OworICAgIHN0YXR1c190IGVyciA9IGRlcXVldWVCdWZmZXIoJm91dCk7CiAgICAgTE9HRV9JRihlcnIsICJkZXF1ZXVlQnVmZmVyIGZhaWxlZCAoJXMpIiwgc3RyZXJyb3IoLWVycikpOwogICAgIGlmIChlcnIgPT0gTk9fRVJST1IpIHsKKyAgICAgICAgc3A8R3JhcGhpY0J1ZmZlcj4gYmFja0J1ZmZlcihHcmFwaGljQnVmZmVyOjpnZXRTZWxmKG91dCkpOwogICAgICAgICBlcnIgPSBsb2NrQnVmZmVyKGJhY2tCdWZmZXIuZ2V0KCkpOwogICAgICAgICBMT0dFX0lGKGVyciwgImxvY2tCdWZmZXIgKGlkeD0lZCkgZmFpbGVkICglcykiLAotICAgICAgICAgICAgICAgIGJhY2tCdWZmZXItPmdldEluZGV4KCksIHN0cmVycm9yKC1lcnIpKTsKKyAgICAgICAgICAgICAgICBnZXRCdWZmZXJJbmRleChiYWNrQnVmZmVyKSwgc3RyZXJyb3IoLWVycikpOwogICAgICAgICBpZiAoZXJyID09IE5PX0VSUk9SKSB7Ci0gICAgICAgICAgICAvLyB3ZSBoYW5kbGUgY29weS1iYWNrIGhlcmUuLi4KLQogICAgICAgICAgICAgY29uc3QgUmVjdCBib3VuZHMoYmFja0J1ZmZlci0+d2lkdGgsIGJhY2tCdWZmZXItPmhlaWdodCk7Ci0gICAgICAgICAgICBSZWdpb24gc2NyYXRjaChib3VuZHMpOworICAgICAgICAgICAgY29uc3QgUmVnaW9uIGJvdW5kc1JlZ2lvbihib3VuZHMpOworICAgICAgICAgICAgUmVnaW9uIHNjcmF0Y2goYm91bmRzUmVnaW9uKTsKICAgICAgICAgICAgIFJlZ2lvbiYgbmV3RGlydHlSZWdpb24oZGlydHlJbiA/ICpkaXJ0eUluIDogc2NyYXRjaCk7CisgICAgICAgICAgICBuZXdEaXJ0eVJlZ2lvbiAmPSBib3VuZHNSZWdpb247CiAKLSAgICAgICAgICAgIGlmIChtTmVlZEZ1bGxVcGRhdGUpIHsKLSAgICAgICAgICAgICAgICAvLyByZXNldCBuZXdEaXJ0eVJlZ2lvbiB0byBib3VuZHMgd2hlbiBhIGJ1ZmZlciBpcyByZWFsbG9jYXRlZAotICAgICAgICAgICAgICAgIC8vIGl0IHdvdWxkIGJlIGJldHRlciBpZiB0aGlzIGluZm9ybWF0aW9uIHdhcyBhc3NvY2lhdGVkIHdpdGgKLSAgICAgICAgICAgICAgICAvLyB0aGUgYnVmZmVyIGFuZCBtYWRlIGF2YWlsYWJsZSB0byBvdXRzaWRlIG9mIFN1cmZhY2UuCi0gICAgICAgICAgICAgICAgLy8gVGhpcyB3aWxsIGRvIGZvciBub3cgdGhvdWdoLgotICAgICAgICAgICAgICAgIG1OZWVkRnVsbFVwZGF0ZSA9IGZhbHNlOwotICAgICAgICAgICAgICAgIG5ld0RpcnR5UmVnaW9uLnNldChib3VuZHMpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBuZXdEaXJ0eVJlZ2lvbi5hbmRTZWxmKGJvdW5kcyk7Ci0gICAgICAgICAgICB9Ci0KKyAgICAgICAgICAgIC8vIGZpZ3VyZSBvdXQgaWYgd2UgY2FuIGNvcHkgdGhlIGZyb250YnVmZmVyIGJhY2sKICAgICAgICAgICAgIGNvbnN0IHNwPEdyYXBoaWNCdWZmZXI+JiBmcm9udEJ1ZmZlcihtUG9zdGVkQnVmZmVyKTsKLSAgICAgICAgICAgIGlmIChmcm9udEJ1ZmZlciAhPTAgJiYKLSAgICAgICAgICAgICAgICBiYWNrQnVmZmVyLT53aWR0aCAgPT0gZnJvbnRCdWZmZXItPndpZHRoICYmIAotICAgICAgICAgICAgICAgIGJhY2tCdWZmZXItPmhlaWdodCA9PSBmcm9udEJ1ZmZlci0+aGVpZ2h0ICYmCi0gICAgICAgICAgICAgICAgIShtRmxhZ3MgJiBJU3VyZmFjZUNvbXBvc2VyOjplRGVzdHJveUJhY2tidWZmZXIpKSAKLSAgICAgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IGJvb2wgY2FuQ29weUJhY2sgPSAoZnJvbnRCdWZmZXIgIT0gMCAmJgorICAgICAgICAgICAgICAgICAgICBiYWNrQnVmZmVyLT53aWR0aCAgPT0gZnJvbnRCdWZmZXItPndpZHRoICYmCisgICAgICAgICAgICAgICAgICAgIGJhY2tCdWZmZXItPmhlaWdodCA9PSBmcm9udEJ1ZmZlci0+aGVpZ2h0ICYmCisgICAgICAgICAgICAgICAgICAgIGJhY2tCdWZmZXItPmZvcm1hdCA9PSBmcm9udEJ1ZmZlci0+Zm9ybWF0ICYmCisgICAgICAgICAgICAgICAgICAgICEobUZsYWdzICYgSVN1cmZhY2VDb21wb3Nlcjo6ZURlc3Ryb3lCYWNrYnVmZmVyKSk7CisKKyAgICAgICAgICAgIC8vIHRoZSBkaXJ0eSByZWdpb24gd2UgcmVwb3J0IHRvIHN1cmZhY2VmbGluZ2VyIGlzIHRoZSBvbmUKKyAgICAgICAgICAgIC8vIGdpdmVuIGJ5IHRoZSB1c2VyIChhcyBvcHBvc2VkIHRvIHRoZSBvbmUgKndlKiByZXR1cm4gdG8gdGhlCisgICAgICAgICAgICAvLyB1c2VyKS4KKyAgICAgICAgICAgIG1EaXJ0eVJlZ2lvbiA9IG5ld0RpcnR5UmVnaW9uOworCisgICAgICAgICAgICBpZiAoY2FuQ29weUJhY2spIHsKKyAgICAgICAgICAgICAgICAvLyBjb3B5IHRoZSBhcmVhIHRoYXQgaXMgaW52YWxpZCBhbmQgbm90IHJlcGFpbnRlZCB0aGlzIHJvdW5kCiAgICAgICAgICAgICAgICAgY29uc3QgUmVnaW9uIGNvcHliYWNrKG1PbGREaXJ0eVJlZ2lvbi5zdWJ0cmFjdChuZXdEaXJ0eVJlZ2lvbikpOwotICAgICAgICAgICAgICAgIGlmICghY29weWJhY2suaXNFbXB0eSgpICYmIGZyb250QnVmZmVyIT0wKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIGNvcHkgZnJvbnQgdG8gYmFjaworICAgICAgICAgICAgICAgIGlmICghY29weWJhY2suaXNFbXB0eSgpKQogICAgICAgICAgICAgICAgICAgICBjb3B5Qmx0KGJhY2tCdWZmZXIsIGZyb250QnVmZmVyLCBjb3B5YmFjayk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBpZiB3ZSBjYW4ndCBjb3B5LWJhY2sgYW55dGhpbmcsIG1vZGlmeSB0aGUgdXNlcidzIGRpcnR5CisgICAgICAgICAgICAgICAgLy8gcmVnaW9uIHRvIG1ha2Ugc3VyZSB0aGV5IHJlZHJhdyB0aGUgd2hvbGUgYnVmZmVyCisgICAgICAgICAgICAgICAgbmV3RGlydHlSZWdpb24gPSBib3VuZHNSZWdpb247CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIG1EaXJ0eVJlZ2lvbiA9IG5ld0RpcnR5UmVnaW9uOworICAgICAgICAgICAgLy8ga2VlcCB0cmFjayBvZiB0aGUgYXJlIG9mIHRoZSBidWZmZXIgdGhhdCBpcyAiY2xlYW4iCisgICAgICAgICAgICAvLyAoaWU6IHRoYXQgd2lsbCBiZSByZWRyYXduKQogICAgICAgICAgICAgbU9sZERpcnR5UmVnaW9uID0gbmV3RGlydHlSZWdpb247CiAKICAgICAgICAgICAgIHZvaWQqIHZhZGRyOwpAQCAtNzc3LDcgKzkwNSw3IEBACiAgICAgCiAgICAgZXJyID0gcXVldWVCdWZmZXIobUxvY2tlZEJ1ZmZlci5nZXQoKSk7CiAgICAgTE9HRV9JRihlcnIsICJxdWV1ZUJ1ZmZlciAoaWR4PSVkKSBmYWlsZWQgKCVzKSIsCi0gICAgICAgICAgICBtTG9ja2VkQnVmZmVyLT5nZXRJbmRleCgpLCBzdHJlcnJvcigtZXJyKSk7CisgICAgICAgICAgICBnZXRCdWZmZXJJbmRleChtTG9ja2VkQnVmZmVyKSwgc3RyZXJyb3IoLWVycikpOwogCiAgICAgbVBvc3RlZEJ1ZmZlciA9IG1Mb2NrZWRCdWZmZXI7CiAgICAgbUxvY2tlZEJ1ZmZlciA9IDA7CkBAIC03ODksNyArOTE3LDEzIEBACiAgICAgbVN3YXBSZWN0YW5nbGUgPSByOwogfQogCi1zdGF0dXNfdCBTdXJmYWNlOjpnZXRCdWZmZXJMb2NrZWQoaW50IGluZGV4LCBpbnQgdXNhZ2UpCitpbnQgU3VyZmFjZTo6Z2V0QnVmZmVySW5kZXgoY29uc3Qgc3A8R3JhcGhpY0J1ZmZlcj4mIGJ1ZmZlcikgY29uc3QKK3sKKyAgICByZXR1cm4gYnVmZmVyLT5nZXRJbmRleCgpOworfQorCitzdGF0dXNfdCBTdXJmYWNlOjpnZXRCdWZmZXJMb2NrZWQoaW50IGluZGV4LAorICAgICAgICB1aW50MzJfdCB3LCB1aW50MzJfdCBoLCB1aW50MzJfdCBmb3JtYXQsIHVpbnQzMl90IHVzYWdlKQogewogICAgIHNwPElTdXJmYWNlPiBzKG1TdXJmYWNlKTsKICAgICBpZiAocyA9PSAwKSByZXR1cm4gTk9fSU5JVDsKQEAgLTc5NywyMCArOTMxLDIxIEBACiAgICAgc3RhdHVzX3QgZXJyID0gTk9fTUVNT1JZOwogCiAgICAgLy8gZnJlZSB0aGUgY3VycmVudCBidWZmZXIKLSAgICBzcDxHcmFwaGljQnVmZmVyPiYgY3VycmVudEJ1ZmZlcihtQnVmZmVyc1tpbmRleF0pOworICAgIHNwPEdyYXBoaWNCdWZmZXI+JiBjdXJyZW50QnVmZmVyKG1CdWZmZXJzLmVkaXRJdGVtQXQoaW5kZXgpKTsKICAgICBpZiAoY3VycmVudEJ1ZmZlciAhPSAwKSB7CiAgICAgICAgIGdldEJ1ZmZlck1hcHBlcigpLnVucmVnaXN0ZXJCdWZmZXIoY3VycmVudEJ1ZmZlci0+aGFuZGxlKTsKICAgICAgICAgY3VycmVudEJ1ZmZlci5jbGVhcigpOwogICAgIH0KIAotICAgIHNwPEdyYXBoaWNCdWZmZXI+IGJ1ZmZlciA9IHMtPnJlcXVlc3RCdWZmZXIoaW5kZXgsIHVzYWdlKTsKKyAgICBzcDxHcmFwaGljQnVmZmVyPiBidWZmZXIgPSBzLT5yZXF1ZXN0QnVmZmVyKGluZGV4LCB3LCBoLCBmb3JtYXQsIHVzYWdlKTsKICAgICBMT0dFX0lGKGJ1ZmZlcj09MCwKICAgICAgICAgICAgICJJU3VyZmFjZTo6Z2V0QnVmZmVyKCVkLCAlMDh4KSByZXR1cm5lZCBOVUxMIiwKICAgICAgICAgICAgIGluZGV4LCB1c2FnZSk7CiAgICAgaWYgKGJ1ZmZlciAhPSAwKSB7IC8vIHRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiBieSBjb25zdHJ1Y3Rpb24KICAgICAgICAgTE9HRV9JRihidWZmZXItPmhhbmRsZSA9PSBOVUxMLCAKLSAgICAgICAgICAgICAgICAiU3VyZmFjZSAoaWRlbnRpdHk9JWQpIHJlcXVlc3RCdWZmZXIoJWQsICUwOHgpIHJldHVybmVkIgotICAgICAgICAgICAgICAgICJhIGJ1ZmZlciB3aXRoIGEgbnVsbCBoYW5kbGUiLCBtSWRlbnRpdHksIGluZGV4LCB1c2FnZSk7CisgICAgICAgICAgICAgICAgIlN1cmZhY2UgKGlkZW50aXR5PSVkKSByZXF1ZXN0QnVmZmVyKCVkLCAldSwgJXUsICV1LCAlMDh4KSAiCisgICAgICAgICAgICAgICAgInJldHVybmVkIGEgYnVmZmVyIHdpdGggYSBudWxsIGhhbmRsZSIsCisgICAgICAgICAgICAgICAgbUlkZW50aXR5LCBpbmRleCwgdywgaCwgZm9ybWF0LCB1c2FnZSk7CiAgICAgICAgIGVyciA9IG1TaGFyZWRCdWZmZXJDbGllbnQtPmdldFN0YXR1cygpOwogICAgICAgICBMT0dFX0lGKGVyciwgICJTdXJmYWNlIChpZGVudGl0eT0lZCkgc3RhdGUgPSAlZCIsIG1JZGVudGl0eSwgZXJyKTsKICAgICAgICAgaWYgKCFlcnIgJiYgYnVmZmVyLT5oYW5kbGUgIT0gTlVMTCkgewpAQCAtODIwLDE0ICs5NTUsNTIgQEAKICAgICAgICAgICAgIGlmIChlcnIgPT0gTk9fRVJST1IpIHsKICAgICAgICAgICAgICAgICBjdXJyZW50QnVmZmVyID0gYnVmZmVyOwogICAgICAgICAgICAgICAgIGN1cnJlbnRCdWZmZXItPnNldEluZGV4KGluZGV4KTsKLSAgICAgICAgICAgICAgICBtTmVlZEZ1bGxVcGRhdGUgPSB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgZXJyID0gZXJyPDAgPyBlcnIgOiBOT19NRU1PUlk7CisgICAgICAgICAgICBlcnIgPSBlcnI8MCA/IGVyciA6IHN0YXR1c190KE5PX01FTU9SWSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIGVycjsgCiB9CiAKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1N1cmZhY2U6OkJ1ZmZlckluZm86OkJ1ZmZlckluZm8oKQorICAgIDogbVdpZHRoKDApLCBtSGVpZ2h0KDApLCBtRm9ybWF0KDApLAorICAgICAgbVVzYWdlKEdSQUxMT0NfVVNBR0VfSFdfUkVOREVSKSwgbURpcnR5KDApCit7Cit9CisKK3ZvaWQgU3VyZmFjZTo6QnVmZmVySW5mbzo6c2V0KHVpbnQzMl90IHcsIHVpbnQzMl90IGgsIHVpbnQzMl90IGZvcm1hdCkgeworICAgIGlmICgobVdpZHRoICE9IHcpIHx8IChtSGVpZ2h0ICE9IGgpIHx8IChtRm9ybWF0ICE9IGZvcm1hdCkpIHsKKyAgICAgICAgbVdpZHRoID0gdzsKKyAgICAgICAgbUhlaWdodCA9IGg7CisgICAgICAgIG1Gb3JtYXQgPSBmb3JtYXQ7CisgICAgICAgIG1EaXJ0eSB8PSBHRU9NRVRSWTsKKyAgICB9Cit9CisKK3ZvaWQgU3VyZmFjZTo6QnVmZmVySW5mbzo6c2V0KHVpbnQzMl90IHVzYWdlKSB7CisgICAgbVVzYWdlID0gdXNhZ2U7Cit9CisKK3ZvaWQgU3VyZmFjZTo6QnVmZmVySW5mbzo6Z2V0KHVpbnQzMl90ICpwV2lkdGgsIHVpbnQzMl90ICpwSGVpZ2h0LAorICAgICAgICB1aW50MzJfdCAqcEZvcm1hdCwgdWludDMyX3QgKnBVc2FnZSkgY29uc3QgeworICAgICpwV2lkdGggID0gbVdpZHRoOworICAgICpwSGVpZ2h0ID0gbUhlaWdodDsKKyAgICAqcEZvcm1hdCA9IG1Gb3JtYXQ7CisgICAgKnBVc2FnZSAgPSBtVXNhZ2U7Cit9CisKK2Jvb2wgU3VyZmFjZTo6QnVmZmVySW5mbzo6dmFsaWRhdGVCdWZmZXIoY29uc3Qgc3A8R3JhcGhpY0J1ZmZlcj4mIGJ1ZmZlcikgY29uc3QgeworICAgIC8vIG1ha2Ugc3VyZSB3ZSBBVCBMRUFTVCBoYXZlIHRoZSB1c2FnZSBmbGFncyB3ZSB3YW50CisgICAgaWYgKG1EaXJ0eSB8fCBidWZmZXI9PTAgfHwKKyAgICAgICAgICAgICgoYnVmZmVyLT51c2FnZSAmIG1Vc2FnZSkgIT0gbVVzYWdlKSkgeworICAgICAgICBtRGlydHkgPSAwOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiB9OyAvLyBuYW1lc3BhY2UgYW5kcm9pZAogCmRpZmYgLS1naXQgYS9saWJzL3N1cmZhY2VmbGluZ2VyX2NsaWVudC9TdXJmYWNlQ29tcG9zZXJDbGllbnQuY3BwIGIvbGlicy9zdXJmYWNlZmxpbmdlcl9jbGllbnQvU3VyZmFjZUNvbXBvc2VyQ2xpZW50LmNwcAppbmRleCAzMTE3NDk1Li40MDk2YWM2IDEwMDY0NAotLS0gYS9saWJzL3N1cmZhY2VmbGluZ2VyX2NsaWVudC9TdXJmYWNlQ29tcG9zZXJDbGllbnQuY3BwCisrKyBiL2xpYnMvc3VyZmFjZWZsaW5nZXJfY2xpZW50L1N1cmZhY2VDb21wb3NlckNsaWVudC5jcHAKQEAgLTE3LDk4ICsxNywxMzcgQEAKICNkZWZpbmUgTE9HX1RBRyAiU3VyZmFjZUNvbXBvc2VyQ2xpZW50IgogCiAjaW5jbHVkZSA8c3RkaW50Lmg+Ci0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0jaW5jbHVkZSA8ZmNudGwuaD4KLSNpbmNsdWRlIDxlcnJuby5oPgogI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiAKLSNpbmNsdWRlIDxjdXRpbHMvbWVtb3J5Lmg+Ci0KLSNpbmNsdWRlIDx1dGlscy9BdG9taWMuaD4KICNpbmNsdWRlIDx1dGlscy9FcnJvcnMuaD4KICNpbmNsdWRlIDx1dGlscy90aHJlYWRzLmg+Ci0jaW5jbHVkZSA8dXRpbHMvS2V5ZWRWZWN0b3IuaD4KKyNpbmNsdWRlIDx1dGlscy9Tb3J0ZWRWZWN0b3IuaD4KICNpbmNsdWRlIDx1dGlscy9Mb2cuaD4KKyNpbmNsdWRlIDx1dGlscy9TaW5nbGV0b24uaD4KIAogI2luY2x1ZGUgPGJpbmRlci9JU2VydmljZU1hbmFnZXIuaD4KICNpbmNsdWRlIDxiaW5kZXIvSU1lbW9yeS5oPgogCiAjaW5jbHVkZSA8dWkvRGlzcGxheUluZm8uaD4KLSNpbmNsdWRlIDx1aS9SZWN0Lmg+CiAKICNpbmNsdWRlIDxzdXJmYWNlZmxpbmdlci9JU3VyZmFjZUNvbXBvc2VyLmg+Ci0jaW5jbHVkZSA8c3VyZmFjZWZsaW5nZXIvSVN1cmZhY2VGbGluZ2VyQ2xpZW50Lmg+CisjaW5jbHVkZSA8c3VyZmFjZWZsaW5nZXIvSVN1cmZhY2VDb21wb3NlckNsaWVudC5oPgogI2luY2x1ZGUgPHN1cmZhY2VmbGluZ2VyL0lTdXJmYWNlLmg+CiAjaW5jbHVkZSA8c3VyZmFjZWZsaW5nZXIvU3VyZmFjZUNvbXBvc2VyQ2xpZW50Lmg+CiAKICNpbmNsdWRlIDxwcml2YXRlL3N1cmZhY2VmbGluZ2VyL0xheWVyU3RhdGUuaD4KICNpbmNsdWRlIDxwcml2YXRlL3N1cmZhY2VmbGluZ2VyL1NoYXJlZEJ1ZmZlclN0YWNrLmg+CiAKLSNkZWZpbmUgVkVSQk9TRSguLi4pCSgodm9pZCkwKQotLy8jZGVmaW5lIFZFUkJPU0UJCQlMT0dECi0KLSNkZWZpbmUgTElLRUxZKCBleHAgKSAgICAgICAoX19idWlsdGluX2V4cGVjdCggKGV4cCkgIT0gMCwgdHJ1ZSAgKSkKLSNkZWZpbmUgVU5MSUtFTFkoIGV4cCApICAgICAoX19idWlsdGluX2V4cGVjdCggKGV4cCkgIT0gMCwgZmFsc2UgKSkKIAogbmFtZXNwYWNlIGFuZHJvaWQgeworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0FORFJPSURfU0lOR0xFVE9OX1NUQVRJQ19JTlNUQU5DRShDb21wb3NlclNlcnZpY2UpOworCitDb21wb3NlclNlcnZpY2U6OkNvbXBvc2VyU2VydmljZSgpCis6IFNpbmdsZXRvbjxDb21wb3NlclNlcnZpY2U+KCkgeworICAgIGNvbnN0IFN0cmluZzE2IG5hbWUoIlN1cmZhY2VGbGluZ2VyIik7CisgICAgd2hpbGUgKGdldFNlcnZpY2UobmFtZSwgJm1Db21wb3NlclNlcnZpY2UpICE9IE5PX0VSUk9SKSB7CisgICAgICAgIHVzbGVlcCgyNTAwMDApOworICAgIH0KKyAgICBtU2VydmVyQ2Jsa01lbW9yeSA9IG1Db21wb3NlclNlcnZpY2UtPmdldENibGsoKTsKKyAgICBtU2VydmVyQ2JsayA9IHN0YXRpY19jYXN0PHN1cmZhY2VfZmxpbmdlcl9jYmxrX3Qgdm9sYXRpbGUgKj4oCisgICAgICAgICAgICBtU2VydmVyQ2Jsa01lbW9yeS0+Z2V0QmFzZSgpKTsKK30KKworc3A8SVN1cmZhY2VDb21wb3Nlcj4gQ29tcG9zZXJTZXJ2aWNlOjpnZXRDb21wb3NlclNlcnZpY2UoKSB7CisgICAgcmV0dXJuIENvbXBvc2VyU2VydmljZTo6Z2V0SW5zdGFuY2UoKS5tQ29tcG9zZXJTZXJ2aWNlOworfQorCitzdXJmYWNlX2ZsaW5nZXJfY2Jsa190IGNvbnN0IHZvbGF0aWxlICogQ29tcG9zZXJTZXJ2aWNlOjpnZXRDb250cm9sQmxvY2soKSB7CisgICAgcmV0dXJuIENvbXBvc2VyU2VydmljZTo6Z2V0SW5zdGFuY2UoKS5tU2VydmVyQ2JsazsKK30KKworc3RhdGljIGlubGluZSBzcDxJU3VyZmFjZUNvbXBvc2VyPiBnZXRDb21wb3NlclNlcnZpY2UoKSB7CisgICAgcmV0dXJuIENvbXBvc2VyU2VydmljZTo6Z2V0Q29tcG9zZXJTZXJ2aWNlKCk7Cit9CisKK3N0YXRpYyBpbmxpbmUgc3VyZmFjZV9mbGluZ2VyX2NibGtfdCBjb25zdCB2b2xhdGlsZSAqIGdldF9jYmxrKCkgeworICAgIHJldHVybiBDb21wb3NlclNlcnZpY2U6OmdldENvbnRyb2xCbG9jaygpOworfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotLy8gTXVzdCBub3QgYmUgaG9sZGluZyBTdXJmYWNlQ29tcG9zZXJDbGllbnQ6Om1Mb2NrIHdoZW4gYWNxdWlyaW5nIGdMb2NrIGhlcmUuCi1zdGF0aWMgTXV0ZXggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnTG9jazsKLXN0YXRpYyBzcDxJU3VyZmFjZUNvbXBvc2VyPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdTdXJmYWNlTWFuYWdlcjsKLXN0YXRpYyBEZWZhdWx0S2V5ZWRWZWN0b3I8IHNwPElCaW5kZXI+LCBzcDxTdXJmYWNlQ29tcG9zZXJDbGllbnQ+ID4gZ0FjdGl2ZUNvbm5lY3Rpb25zOwotc3RhdGljIFNvcnRlZFZlY3RvcjxzcDxTdXJmYWNlQ29tcG9zZXJDbGllbnQ+ID4gICAgICAgICAgICAgZ09wZW5UcmFuc2FjdGlvbnM7Ci1zdGF0aWMgc3A8SU1lbW9yeUhlYXA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnU2VydmVyQ2Jsa01lbW9yeTsKLXN0YXRpYyB2b2xhdGlsZSBzdXJmYWNlX2ZsaW5nZXJfY2Jsa190KiAgICAgICAgICAgICAgICAgICAgIGdTZXJ2ZXJDYmxrOwotCi1zdGF0aWMgc3A8SVN1cmZhY2VDb21wb3Nlcj4gZ2V0Q29tcG9zZXJTZXJ2aWNlKCkKK2NsYXNzIENvbXBvc2VyIDogcHVibGljIFNpbmdsZXRvbjxDb21wb3Nlcj4KIHsKLSAgICBzcDxJU3VyZmFjZUNvbXBvc2VyPiBzYzsKLSAgICBNdXRleDo6QXV0b2xvY2sgX2woZ0xvY2spOwotICAgIGlmIChnU3VyZmFjZU1hbmFnZXIgIT0gMCkgewotICAgICAgICBzYyA9IGdTdXJmYWNlTWFuYWdlcjsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyByZWxlYXNlIHRoZSBsb2NrIHdoaWxlIHdlJ3JlIHdhaXRpbmcuLi4KLSAgICAgICAgZ0xvY2sudW5sb2NrKCk7CisgICAgTXV0ZXggbUxvY2s7CisgICAgU29ydGVkVmVjdG9yPCB3cDxTdXJmYWNlQ29tcG9zZXJDbGllbnQ+ID4gbUFjdGl2ZUNvbm5lY3Rpb25zOworICAgIFNvcnRlZFZlY3RvcjxzcDxTdXJmYWNlQ29tcG9zZXJDbGllbnQ+ID4gbU9wZW5UcmFuc2FjdGlvbnM7CiAKLSAgICAgICAgc3A8SUJpbmRlcj4gYmluZGVyOwotICAgICAgICBzcDxJU2VydmljZU1hbmFnZXI+IHNtID0gZGVmYXVsdFNlcnZpY2VNYW5hZ2VyKCk7Ci0gICAgICAgIGRvIHsKLSAgICAgICAgICAgIGJpbmRlciA9IHNtLT5nZXRTZXJ2aWNlKFN0cmluZzE2KCJTdXJmYWNlRmxpbmdlciIpKTsKLSAgICAgICAgICAgIGlmIChiaW5kZXIgPT0gMCkgewotICAgICAgICAgICAgICAgIExPR1coIlN1cmZhY2VGbGluZ2VyIG5vdCBwdWJsaXNoZWQsIHdhaXRpbmcuLi4iKTsKLSAgICAgICAgICAgICAgICB1c2xlZXAoNTAwMDAwKTsgLy8gMC41IHMKKyAgICBDb21wb3NlcigpIDogU2luZ2xldG9uPENvbXBvc2VyPigpIHsKKyAgICB9CisKKyAgICB2b2lkIGFkZENsaWVudEltcGwoY29uc3Qgc3A8U3VyZmFjZUNvbXBvc2VyQ2xpZW50PiYgY2xpZW50KSB7CisgICAgICAgIE11dGV4OjpBdXRvbG9jayBfbChtTG9jayk7CisgICAgICAgIG1BY3RpdmVDb25uZWN0aW9ucy5hZGQoY2xpZW50KTsKKyAgICB9CisKKyAgICB2b2lkIHJlbW92ZUNsaWVudEltcGwoY29uc3Qgc3A8U3VyZmFjZUNvbXBvc2VyQ2xpZW50PiYgY2xpZW50KSB7CisgICAgICAgIE11dGV4OjpBdXRvbG9jayBfbChtTG9jayk7CisgICAgICAgIG1BY3RpdmVDb25uZWN0aW9ucy5yZW1vdmUoY2xpZW50KTsKKyAgICB9CisKKyAgICB2b2lkIG9wZW5HbG9iYWxUcmFuc2FjdGlvbkltcGwoKQorICAgIHsKKyAgICAgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1Mb2NrKTsKKyAgICAgICAgaWYgKG1PcGVuVHJhbnNhY3Rpb25zLnNpemUoKSkgeworICAgICAgICAgICAgTE9HRSgib3Blbkdsb2JhbFRyYW5zYWN0aW9uKCkgY2FsbGVkIG1vcmUgdGhhbiBvbmNlLiBza2lwcGluZy4iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBjb25zdCBzaXplX3QgTiA9IG1BY3RpdmVDb25uZWN0aW9ucy5zaXplKCk7CisgICAgICAgIGZvciAoc2l6ZV90IGk9MDsgaTxOOyBpKyspIHsKKyAgICAgICAgICAgIHNwPFN1cmZhY2VDb21wb3NlckNsaWVudD4gY2xpZW50KG1BY3RpdmVDb25uZWN0aW9uc1tpXS5wcm9tb3RlKCkpOworICAgICAgICAgICAgaWYgKGNsaWVudCAhPSAwICYmIG1PcGVuVHJhbnNhY3Rpb25zLmluZGV4T2YoY2xpZW50KSA8IDApIHsKKyAgICAgICAgICAgICAgICBpZiAoY2xpZW50LT5vcGVuVHJhbnNhY3Rpb24oKSA9PSBOT19FUlJPUikgeworICAgICAgICAgICAgICAgICAgICBtT3BlblRyYW5zYWN0aW9ucy5hZGQoY2xpZW50KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBMT0dFKCJvcGVuVHJhbnNhY3Rpb24gb24gY2xpZW50ICVwIGZhaWxlZCIsIGNsaWVudC5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIC8vIGxldCBpdCBnbywgaXQnbGwgZmFpbCBsYXRlciB3aGVuIHRoZSB1c2VyCisgICAgICAgICAgICAgICAgICAgIC8vIHRyaWVzIHRvIGRvIHNvbWV0aGluZyB3aXRoIHRoZSB0cmFuc2FjdGlvbgorICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KLSAgICAgICAgfSB3aGlsZShiaW5kZXIgPT0gMCk7Ci0KLSAgICAgICAgLy8gZ3JhYiB0aGUgbG9jayBhZ2FpbiBmb3IgdXBkYXRpbmcgZ1N1cmZhY2VNYW5hZ2VyCi0gICAgICAgIGdMb2NrLmxvY2soKTsKLSAgICAgICAgaWYgKGdTdXJmYWNlTWFuYWdlciA9PSAwKSB7Ci0gICAgICAgICAgICBzYyA9IGludGVyZmFjZV9jYXN0PElTdXJmYWNlQ29tcG9zZXI+KGJpbmRlcik7Ci0gICAgICAgICAgICBnU3VyZmFjZU1hbmFnZXIgPSBzYzsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHNjID0gZ1N1cmZhY2VNYW5hZ2VyOwogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiBzYzsKLX0KIAotc3RhdGljIHZvbGF0aWxlIHN1cmZhY2VfZmxpbmdlcl9jYmxrX3QgY29uc3QgKiBnZXRfY2JsaygpCi17Ci0gICAgaWYgKGdTZXJ2ZXJDYmxrID09IDApIHsKKyAgICB2b2lkIGNsb3NlR2xvYmFsVHJhbnNhY3Rpb25JbXBsKCkKKyAgICB7CisgICAgICAgIG1Mb2NrLmxvY2soKTsKKyAgICAgICAgICAgIFNvcnRlZFZlY3Rvcjwgc3A8U3VyZmFjZUNvbXBvc2VyQ2xpZW50PiA+IGNsaWVudHMobU9wZW5UcmFuc2FjdGlvbnMpOworICAgICAgICAgICAgbU9wZW5UcmFuc2FjdGlvbnMuY2xlYXIoKTsKKyAgICAgICAgbUxvY2sudW5sb2NrKCk7CisKICAgICAgICAgc3A8SVN1cmZhY2VDb21wb3Nlcj4gc20oZ2V0Q29tcG9zZXJTZXJ2aWNlKCkpOwotICAgICAgICBNdXRleDo6QXV0b2xvY2sgX2woZ0xvY2spOwotICAgICAgICBpZiAoZ1NlcnZlckNibGsgPT0gMCkgewotICAgICAgICAgICAgZ1NlcnZlckNibGtNZW1vcnkgPSBzbS0+Z2V0Q2JsaygpOwotICAgICAgICAgICAgTE9HRV9JRihnU2VydmVyQ2Jsa01lbW9yeT09MCwgIkNhbid0IGdldCBzZXJ2ZXIgY29udHJvbCBibG9jayIpOwotICAgICAgICAgICAgZ1NlcnZlckNibGsgPSAoc3VyZmFjZV9mbGluZ2VyX2NibGtfdCAqKWdTZXJ2ZXJDYmxrTWVtb3J5LT5nZXRCYXNlKCk7Ci0gICAgICAgICAgICBMT0dFX0lGKGdTZXJ2ZXJDYmxrPT0wLCAiQ2FuJ3QgZ2V0IHNlcnZlciBjb250cm9sIGJsb2NrIGFkZHJlc3MiKTsKLSAgICAgICAgfQorICAgICAgICBzbS0+b3Blbkdsb2JhbFRyYW5zYWN0aW9uKCk7CisgICAgICAgICAgICBjb25zdCBzaXplX3QgTiA9IGNsaWVudHMuc2l6ZSgpOworICAgICAgICAgICAgZm9yIChzaXplX3QgaT0wOyBpPE47IGkrKykgeworICAgICAgICAgICAgICAgIGNsaWVudHNbaV0tPmNsb3NlVHJhbnNhY3Rpb24oKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgc20tPmNsb3NlR2xvYmFsVHJhbnNhY3Rpb24oKTsKICAgICB9Ci0gICAgcmV0dXJuIGdTZXJ2ZXJDYmxrOwotfQorCisgICAgZnJpZW5kIGNsYXNzIFNpbmdsZXRvbjxDb21wb3Nlcj47CisKK3B1YmxpYzoKKyAgICBzdGF0aWMgdm9pZCBhZGRDbGllbnQoY29uc3Qgc3A8U3VyZmFjZUNvbXBvc2VyQ2xpZW50PiYgY2xpZW50KSB7CisgICAgICAgIENvbXBvc2VyOjpnZXRJbnN0YW5jZSgpLmFkZENsaWVudEltcGwoY2xpZW50KTsKKyAgICB9CisgICAgc3RhdGljIHZvaWQgcmVtb3ZlQ2xpZW50KGNvbnN0IHNwPFN1cmZhY2VDb21wb3NlckNsaWVudD4mIGNsaWVudCkgeworICAgICAgICBDb21wb3Nlcjo6Z2V0SW5zdGFuY2UoKS5yZW1vdmVDbGllbnRJbXBsKGNsaWVudCk7CisgICAgfQorICAgIHN0YXRpYyB2b2lkIG9wZW5HbG9iYWxUcmFuc2FjdGlvbigpIHsKKyAgICAgICAgQ29tcG9zZXI6OmdldEluc3RhbmNlKCkub3Blbkdsb2JhbFRyYW5zYWN0aW9uSW1wbCgpOworICAgIH0KKyAgICBzdGF0aWMgdm9pZCBjbG9zZUdsb2JhbFRyYW5zYWN0aW9uKCkgeworICAgICAgICBDb21wb3Nlcjo6Z2V0SW5zdGFuY2UoKS5jbG9zZUdsb2JhbFRyYW5zYWN0aW9uSW1wbCgpOworICAgIH0KK307CisKK0FORFJPSURfU0lOR0xFVE9OX1NUQVRJQ19JTlNUQU5DRShDb21wb3Nlcik7CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC0xMjAsNjEgKzE1OSwyNyBAQAogfQogCiBTdXJmYWNlQ29tcG9zZXJDbGllbnQ6OlN1cmZhY2VDb21wb3NlckNsaWVudCgpCisgICAgOiBtVHJhbnNhY3Rpb25PcGVuKDApLCBtUHJlYnVpbHRMYXllclN0YXRlKDApLCBtU3RhdHVzKE5PX0lOSVQpCit7Cit9CisKK3ZvaWQgU3VyZmFjZUNvbXBvc2VyQ2xpZW50OjpvbkZpcnN0UmVmKCkKIHsKICAgICBzcDxJU3VyZmFjZUNvbXBvc2VyPiBzbShnZXRDb21wb3NlclNlcnZpY2UoKSk7Ci0gICAgaWYgKHNtID09IDApIHsKLSAgICAgICAgX2luaXQoMCwgMCk7Ci0gICAgICAgIHJldHVybjsKKyAgICBpZiAoc20gIT0gMCkgeworICAgICAgICBzcDxJU3VyZmFjZUNvbXBvc2VyQ2xpZW50PiBjb25uID0gc20tPmNyZWF0ZUNvbm5lY3Rpb24oKTsKKyAgICAgICAgaWYgKGNvbm4gIT0gMCkgeworICAgICAgICAgICAgbUNsaWVudCA9IGNvbm47CisgICAgICAgICAgICBDb21wb3Nlcjo6YWRkQ2xpZW50KHRoaXMpOworICAgICAgICAgICAgbVByZWJ1aWx0TGF5ZXJTdGF0ZSA9IG5ldyBsYXllcl9zdGF0ZV90OworICAgICAgICAgICAgbVN0YXR1cyA9IE5PX0VSUk9SOworICAgICAgICB9CiAgICAgfQotCi0gICAgX2luaXQoc20sIHNtLT5jcmVhdGVDb25uZWN0aW9uKCkpOwotCi0gICAgaWYgKG1DbGllbnQgIT0gMCkgewotICAgICAgICBNdXRleDo6QXV0b2xvY2sgX2woZ0xvY2spOwotICAgICAgICBWRVJCT1NFKCJBZGRpbmcgY2xpZW50ICVwIHRvIG1hcCIsIHRoaXMpOwotICAgICAgICBnQWN0aXZlQ29ubmVjdGlvbnMuYWRkKG1DbGllbnQtPmFzQmluZGVyKCksIHRoaXMpOwotICAgIH0KLX0KLQotU3VyZmFjZUNvbXBvc2VyQ2xpZW50OjpTdXJmYWNlQ29tcG9zZXJDbGllbnQoCi0gICAgICAgIGNvbnN0IHNwPElTdXJmYWNlQ29tcG9zZXI+JiBzbSwgY29uc3Qgc3A8SUJpbmRlcj4mIGNvbm4pCi17Ci0gICAgX2luaXQoc20sIGludGVyZmFjZV9jYXN0PElTdXJmYWNlRmxpbmdlckNsaWVudD4oY29ubikpOwotfQotCi0KLXN0YXR1c190IFN1cmZhY2VDb21wb3NlckNsaWVudDo6bGlua1RvQ29tcG9zZXJEZWF0aCgKLSAgICAgICAgY29uc3Qgc3A8SUJpbmRlcjo6RGVhdGhSZWNpcGllbnQ+JiByZWNpcGllbnQsCi0gICAgICAgIHZvaWQqIGNvb2tpZSwgdWludDMyX3QgZmxhZ3MpCi17Ci0gICAgc3A8SVN1cmZhY2VDb21wb3Nlcj4gc20oZ2V0Q29tcG9zZXJTZXJ2aWNlKCkpOwotICAgIHJldHVybiBzbS0+YXNCaW5kZXIoKS0+bGlua1RvRGVhdGgocmVjaXBpZW50LCBjb29raWUsIGZsYWdzKTsgICAgCi19Ci0KLXZvaWQgU3VyZmFjZUNvbXBvc2VyQ2xpZW50OjpfaW5pdCgKLSAgICAgICAgY29uc3Qgc3A8SVN1cmZhY2VDb21wb3Nlcj4mIHNtLCBjb25zdCBzcDxJU3VyZmFjZUZsaW5nZXJDbGllbnQ+JiBjb25uKQotewotICAgIFZFUkJPU0UoIkNyZWF0aW5nIGNsaWVudCAlcCwgY29ubiAlcCIsIHRoaXMsIGNvbm4uZ2V0KCkpOwotCi0gICAgbVByZWJ1aWx0TGF5ZXJTdGF0ZSA9IDA7Ci0gICAgbVRyYW5zYWN0aW9uT3BlbiA9IDA7Ci0gICAgbVN0YXR1cyA9IE5PX0VSUk9SOwotICAgIG1Db250cm9sID0gMDsKLQotICAgIG1DbGllbnQgPSBjb25uOwotICAgIGlmIChtQ2xpZW50ID09IDApIHsKLSAgICAgICAgbVN0YXR1cyA9IE5PX0lOSVQ7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBtQ29udHJvbE1lbW9yeSA9IG1DbGllbnQtPmdldENvbnRyb2xCbG9jaygpOwotICAgIG1TaWduYWxTZXJ2ZXIgPSBzbTsKLSAgICBtQ29udHJvbCA9IHN0YXRpY19jYXN0PFNoYXJlZENsaWVudCAqPihtQ29udHJvbE1lbW9yeS0+Z2V0QmFzZSgpKTsKIH0KIAogU3VyZmFjZUNvbXBvc2VyQ2xpZW50Ojp+U3VyZmFjZUNvbXBvc2VyQ2xpZW50KCkKIHsKLSAgICBWRVJCT1NFKCJEZXN0cm95aW5nIGNsaWVudCAlcCwgY29ubiAlcCIsIHRoaXMsIG1DbGllbnQuZ2V0KCkpOworICAgIGRlbGV0ZSBtUHJlYnVpbHRMYXllclN0YXRlOwogICAgIGRpc3Bvc2UoKTsKIH0KIApAQCAtMTg4LDY5ICsxOTMsMzEgQEAKICAgICByZXR1cm4gKG1DbGllbnQgIT0gMCkgPyBtQ2xpZW50LT5hc0JpbmRlcigpIDogMDsKIH0KIAotc3A8U3VyZmFjZUNvbXBvc2VyQ2xpZW50PgotU3VyZmFjZUNvbXBvc2VyQ2xpZW50OjpjbGllbnRGb3JDb25uZWN0aW9uKGNvbnN0IHNwPElCaW5kZXI+JiBjb25uKQorc3RhdHVzX3QgU3VyZmFjZUNvbXBvc2VyQ2xpZW50OjpsaW5rVG9Db21wb3NlckRlYXRoKAorICAgICAgICBjb25zdCBzcDxJQmluZGVyOjpEZWF0aFJlY2lwaWVudD4mIHJlY2lwaWVudCwKKyAgICAgICAgdm9pZCogY29va2llLCB1aW50MzJfdCBmbGFncykKIHsKLSAgICBzcDxTdXJmYWNlQ29tcG9zZXJDbGllbnQ+IGNsaWVudDsKLQotICAgIHsgLy8gc2NvcGUgZm9yIGxvY2sKLSAgICAgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKGdMb2NrKTsKLSAgICAgICAgY2xpZW50ID0gZ0FjdGl2ZUNvbm5lY3Rpb25zLnZhbHVlRm9yKGNvbm4pOwotICAgIH0KLQotICAgIGlmIChjbGllbnQgPT0gMCkgewotICAgICAgICAvLyBOZWVkIHRvIG1ha2UgYSBuZXcgY2xpZW50LgotICAgICAgICBzcDxJU3VyZmFjZUNvbXBvc2VyPiBzbShnZXRDb21wb3NlclNlcnZpY2UoKSk7Ci0gICAgICAgIGNsaWVudCA9IG5ldyBTdXJmYWNlQ29tcG9zZXJDbGllbnQoc20sIGNvbm4pOwotICAgICAgICBpZiAoY2xpZW50ICE9IDAgJiYgY2xpZW50LT5pbml0Q2hlY2soKSA9PSBOT19FUlJPUikgewotICAgICAgICAgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKGdMb2NrKTsKLSAgICAgICAgICAgIGdBY3RpdmVDb25uZWN0aW9ucy5hZGQoY29ubiwgY2xpZW50KTsKLSAgICAgICAgICAgIC8vTE9HRCgid2UgaGF2ZSAlZCBjb25uZWN0aW9ucyIsIGdBY3RpdmVDb25uZWN0aW9ucy5zaXplKCkpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgY2xpZW50LmNsZWFyKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gY2xpZW50OworICAgIHNwPElTdXJmYWNlQ29tcG9zZXI+IHNtKGdldENvbXBvc2VyU2VydmljZSgpKTsKKyAgICByZXR1cm4gc20tPmFzQmluZGVyKCktPmxpbmtUb0RlYXRoKHJlY2lwaWVudCwgY29va2llLCBmbGFncyk7CiB9CiAKIHZvaWQgU3VyZmFjZUNvbXBvc2VyQ2xpZW50OjpkaXNwb3NlKCkKIHsKICAgICAvLyB0aGlzIGNhbiBiZSBjYWxsZWQgbW9yZSB0aGFuIG9uY2UuCi0KLSAgICBzcDxJTWVtb3J5SGVhcD4gICAgICAgICAgICAgY29udHJvbE1lbW9yeTsKLSAgICBzcDxJU3VyZmFjZUZsaW5nZXJDbGllbnQ+ICAgY2xpZW50OwotCi0gICAgewotICAgICAgICBNdXRleDo6QXV0b2xvY2sgX2xnKGdMb2NrKTsKLSAgICAgICAgTXV0ZXg6OkF1dG9sb2NrIF9sbShtTG9jayk7Ci0KLSAgICAgICAgbVNpZ25hbFNlcnZlciA9IDA7Ci0KLSAgICAgICAgaWYgKG1DbGllbnQgIT0gMCkgewotICAgICAgICAgICAgY2xpZW50ID0gbUNsaWVudDsKLSAgICAgICAgICAgIG1DbGllbnQuY2xlYXIoKTsKLQotICAgICAgICAgICAgc3NpemVfdCBpID0gZ0FjdGl2ZUNvbm5lY3Rpb25zLmluZGV4T2ZLZXkoY2xpZW50LT5hc0JpbmRlcigpKTsKLSAgICAgICAgICAgIGlmIChpID49IDAgJiYgZ0FjdGl2ZUNvbm5lY3Rpb25zLnZhbHVlQXQoaSkgPT0gdGhpcykgewotICAgICAgICAgICAgICAgIFZFUkJPU0UoIlJlbW92aW5nIGNsaWVudCAlcCBmcm9tIG1hcCBhdCAlZCIsIHRoaXMsIGludChpKSk7Ci0gICAgICAgICAgICAgICAgZ0FjdGl2ZUNvbm5lY3Rpb25zLnJlbW92ZUl0ZW1zQXQoaSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBkZWxldGUgbVByZWJ1aWx0TGF5ZXJTdGF0ZTsKLSAgICAgICAgbVByZWJ1aWx0TGF5ZXJTdGF0ZSA9IDA7Ci0gICAgICAgIGNvbnRyb2xNZW1vcnkgPSBtQ29udHJvbE1lbW9yeTsKLSAgICAgICAgbUNvbnRyb2xNZW1vcnkuY2xlYXIoKTsKLSAgICAgICAgbUNvbnRyb2wgPSAwOwotICAgICAgICBtU3RhdHVzID0gTk9fSU5JVDsKKyAgICBzcDxJU3VyZmFjZUNvbXBvc2VyQ2xpZW50PiBjbGllbnQ7CisgICAgTXV0ZXg6OkF1dG9sb2NrIF9sbShtTG9jayk7CisgICAgaWYgKG1DbGllbnQgIT0gMCkgeworICAgICAgICBDb21wb3Nlcjo6cmVtb3ZlQ2xpZW50KHRoaXMpOworICAgICAgICBjbGllbnQgPSBtQ2xpZW50OyAvLyBob2xkIHJlZiB3aGlsZSBsb2NrIGlzIGhlbGQKKyAgICAgICAgbUNsaWVudC5jbGVhcigpOwogICAgIH0KKyAgICBtU3RhdHVzID0gTk9fSU5JVDsKIH0KIAogc3RhdHVzX3QgU3VyZmFjZUNvbXBvc2VyQ2xpZW50OjpnZXREaXNwbGF5SW5mbygKICAgICAgICAgRGlzcGxheUlEIGRweSwgRGlzcGxheUluZm8qIGluZm8pCiB7Ci0gICAgaWYgKHVpbnQzMl90KGRweSk+PU5VTV9ESVNQTEFZX01BWCkKKyAgICBpZiAodWludDMyX3QoZHB5KT49U2hhcmVkQnVmZmVyU3RhY2s6Ok5VTV9ESVNQTEFZX01BWCkKICAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKIAogICAgIHZvbGF0aWxlIHN1cmZhY2VfZmxpbmdlcl9jYmxrX3QgY29uc3QgKiBjYmxrID0gZ2V0X2NibGsoKTsKQEAgLTI2OCw3ICsyMzUsNyBAQAogCiBzc2l6ZV90IFN1cmZhY2VDb21wb3NlckNsaWVudDo6Z2V0RGlzcGxheVdpZHRoKERpc3BsYXlJRCBkcHkpCiB7Ci0gICAgaWYgKHVpbnQzMl90KGRweSk+PU5VTV9ESVNQTEFZX01BWCkKKyAgICBpZiAodWludDMyX3QoZHB5KT49U2hhcmVkQnVmZmVyU3RhY2s6Ok5VTV9ESVNQTEFZX01BWCkKICAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKICAgICB2b2xhdGlsZSBzdXJmYWNlX2ZsaW5nZXJfY2Jsa190IGNvbnN0ICogY2JsayA9IGdldF9jYmxrKCk7CiAgICAgdm9sYXRpbGUgZGlzcGxheV9jYmxrX3QgY29uc3QgKiBkY2JsayA9IGNibGstPmRpc3BsYXlzICsgZHB5OwpAQCAtMjc3LDcgKzI0NCw3IEBACiAKIHNzaXplX3QgU3VyZmFjZUNvbXBvc2VyQ2xpZW50OjpnZXREaXNwbGF5SGVpZ2h0KERpc3BsYXlJRCBkcHkpCiB7Ci0gICAgaWYgKHVpbnQzMl90KGRweSk+PU5VTV9ESVNQTEFZX01BWCkKKyAgICBpZiAodWludDMyX3QoZHB5KT49U2hhcmVkQnVmZmVyU3RhY2s6Ok5VTV9ESVNQTEFZX01BWCkKICAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKICAgICB2b2xhdGlsZSBzdXJmYWNlX2ZsaW5nZXJfY2Jsa190IGNvbnN0ICogY2JsayA9IGdldF9jYmxrKCk7CiAgICAgdm9sYXRpbGUgZGlzcGxheV9jYmxrX3QgY29uc3QgKiBkY2JsayA9IGNibGstPmRpc3BsYXlzICsgZHB5OwpAQCAtMjg2LDcgKzI1Myw3IEBACiAKIHNzaXplX3QgU3VyZmFjZUNvbXBvc2VyQ2xpZW50OjpnZXREaXNwbGF5T3JpZW50YXRpb24oRGlzcGxheUlEIGRweSkKIHsKLSAgICBpZiAodWludDMyX3QoZHB5KT49TlVNX0RJU1BMQVlfTUFYKQorICAgIGlmICh1aW50MzJfdChkcHkpPj1TaGFyZWRCdWZmZXJTdGFjazo6TlVNX0RJU1BMQVlfTUFYKQogICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOwogICAgIHZvbGF0aWxlIHN1cmZhY2VfZmxpbmdlcl9jYmxrX3QgY29uc3QgKiBjYmxrID0gZ2V0X2NibGsoKTsKICAgICB2b2xhdGlsZSBkaXNwbGF5X2NibGtfdCBjb25zdCAqIGRjYmxrID0gY2Jsay0+ZGlzcGxheXMgKyBkcHk7CkBAIC0zMDUsMTIgKzI3Miw2IEBACiAgICAgcmV0dXJuIG47CiB9CiAKLQotdm9pZCBTdXJmYWNlQ29tcG9zZXJDbGllbnQ6OnNpZ25hbFNlcnZlcigpCi17Ci0gICAgbVNpZ25hbFNlcnZlci0+c2lnbmFsKCk7Ci19Ci0KIHNwPFN1cmZhY2VDb250cm9sPiBTdXJmYWNlQ29tcG9zZXJDbGllbnQ6OmNyZWF0ZVN1cmZhY2UoCiAgICAgICAgIGludCBwaWQsCiAgICAgICAgIERpc3BsYXlJRCBkaXNwbGF5LApAQCAtMzI3LDcgKzI4OCw2IEBACiAKICAgICByZXR1cm4gU3VyZmFjZUNvbXBvc2VyQ2xpZW50OjpjcmVhdGVTdXJmYWNlKHBpZCwgbmFtZSwgZGlzcGxheSwKICAgICAgICAgICAgIHcsIGgsIGZvcm1hdCwgZmxhZ3MpOwotCiB9CiAKIHNwPFN1cmZhY2VDb250cm9sPiBTdXJmYWNlQ29tcG9zZXJDbGllbnQ6OmNyZWF0ZVN1cmZhY2UoCkBAIC0zNDEsMTMgKzMwMSwxMSBAQAogewogICAgIHNwPFN1cmZhY2VDb250cm9sPiByZXN1bHQ7CiAgICAgaWYgKG1TdGF0dXMgPT0gTk9fRVJST1IpIHsKLSAgICAgICAgSVN1cmZhY2VGbGluZ2VyQ2xpZW50OjpzdXJmYWNlX2RhdGFfdCBkYXRhOworICAgICAgICBJU3VyZmFjZUNvbXBvc2VyQ2xpZW50OjpzdXJmYWNlX2RhdGFfdCBkYXRhOwogICAgICAgICBzcDxJU3VyZmFjZT4gc3VyZmFjZSA9IG1DbGllbnQtPmNyZWF0ZVN1cmZhY2UoJmRhdGEsIHBpZCwgbmFtZSwKICAgICAgICAgICAgICAgICBkaXNwbGF5LCB3LCBoLCBmb3JtYXQsIGZsYWdzKTsKICAgICAgICAgaWYgKHN1cmZhY2UgIT0gMCkgewotICAgICAgICAgICAgaWYgKHVpbnQzMl90KGRhdGEudG9rZW4pIDwgTlVNX0xBWUVSU19NQVgpIHsKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBuZXcgU3VyZmFjZUNvbnRyb2wodGhpcywgc3VyZmFjZSwgZGF0YSwgdywgaCwgZm9ybWF0LCBmbGFncyk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICByZXN1bHQgPSBuZXcgU3VyZmFjZUNvbnRyb2wodGhpcywgc3VyZmFjZSwgZGF0YSwgdywgaCwgZm9ybWF0LCBmbGFncyk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTM3Myw1NiArMzMxLDE0IEBACiAKIHZvaWQgU3VyZmFjZUNvbXBvc2VyQ2xpZW50OjpvcGVuR2xvYmFsVHJhbnNhY3Rpb24oKQogewotICAgIE11dGV4OjpBdXRvbG9jayBfbChnTG9jayk7Ci0KLSAgICBpZiAoZ09wZW5UcmFuc2FjdGlvbnMuc2l6ZSgpKSB7Ci0gICAgICAgIExPR0UoIm9wZW5HbG9iYWxUcmFuc2FjdGlvbigpIGNhbGxlZCBtb3JlIHRoYW4gb25jZS4gc2tpcHBpbmcuIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjb25zdCBzaXplX3QgTiA9IGdBY3RpdmVDb25uZWN0aW9ucy5zaXplKCk7Ci0gICAgVkVSQk9TRSgib3Blbkdsb2JhbFRyYW5zYWN0aW9uICglbGQgY2xpZW50cykiLCBOKTsKLSAgICBmb3IgKHNpemVfdCBpPTA7IGk8TjsgaSsrKSB7Ci0gICAgICAgIHNwPFN1cmZhY2VDb21wb3NlckNsaWVudD4gY2xpZW50KGdBY3RpdmVDb25uZWN0aW9ucy52YWx1ZUF0KGkpKTsKLSAgICAgICAgaWYgKGdPcGVuVHJhbnNhY3Rpb25zLmluZGV4T2YoY2xpZW50KSA8IDApIHsKLSAgICAgICAgICAgIGlmIChjbGllbnQtPm9wZW5UcmFuc2FjdGlvbigpID09IE5PX0VSUk9SKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGdPcGVuVHJhbnNhY3Rpb25zLmFkZChjbGllbnQpIDwgMCkgewotICAgICAgICAgICAgICAgICAgICAvLyBPb29wcyEKLSAgICAgICAgICAgICAgICAgICAgTE9HRSggICAiVW5hYmxlIHRvIGFkZCBhIFN1cmZhY2VDb21wb3NlckNsaWVudCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInRvIHRoZSBnbG9iYWwgdHJhbnNhY3Rpb24gc2V0IChvdXQgb2YgbWVtb3J5PykiKTsKLSAgICAgICAgICAgICAgICAgICAgY2xpZW50LT5jbG9zZVRyYW5zYWN0aW9uKCk7Ci0gICAgICAgICAgICAgICAgICAgIC8vIGxldCBpdCBnbywgaXQnbGwgZmFpbCBsYXRlciB3aGVuIHRoZSB1c2VyCi0gICAgICAgICAgICAgICAgICAgIC8vIHRyaWVzIHRvIGRvIHNvbWV0aGluZyB3aXRoIHRoZSB0cmFuc2FjdGlvbgotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgTE9HRSgib3BlblRyYW5zYWN0aW9uIG9uIGNsaWVudCAlcCBmYWlsZWQiLCBjbGllbnQuZ2V0KCkpOwotICAgICAgICAgICAgICAgIC8vIGxldCBpdCBnbywgaXQnbGwgZmFpbCBsYXRlciB3aGVuIHRoZSB1c2VyCi0gICAgICAgICAgICAgICAgLy8gdHJpZXMgdG8gZG8gc29tZXRoaW5nIHdpdGggdGhlIHRyYW5zYWN0aW9uCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9CisgICAgQ29tcG9zZXI6Om9wZW5HbG9iYWxUcmFuc2FjdGlvbigpOwogfQogCiB2b2lkIFN1cmZhY2VDb21wb3NlckNsaWVudDo6Y2xvc2VHbG9iYWxUcmFuc2FjdGlvbigpCiB7Ci0gICAgZ0xvY2subG9jaygpOwotICAgICAgICBTb3J0ZWRWZWN0b3I8IHNwPFN1cmZhY2VDb21wb3NlckNsaWVudD4gPiBjbGllbnRzKGdPcGVuVHJhbnNhY3Rpb25zKTsKLSAgICAgICAgZ09wZW5UcmFuc2FjdGlvbnMuY2xlYXIoKTsKLSAgICBnTG9jay51bmxvY2soKTsKLQotICAgIGNvbnN0IHNpemVfdCBOID0gY2xpZW50cy5zaXplKCk7Ci0gICAgVkVSQk9TRSgiY2xvc2VHbG9iYWxUcmFuc2FjdGlvbiAoJWxkIGNsaWVudHMpIiwgTik7Ci0KLSAgICBzcDxJU3VyZmFjZUNvbXBvc2VyPiBzbShnZXRDb21wb3NlclNlcnZpY2UoKSk7Ci0gICAgc20tPm9wZW5HbG9iYWxUcmFuc2FjdGlvbigpOwotICAgIGZvciAoc2l6ZV90IGk9MDsgaTxOOyBpKyspIHsKLSAgICAgICAgY2xpZW50c1tpXS0+Y2xvc2VUcmFuc2FjdGlvbigpOwotICAgIH0KLSAgICBzbS0+Y2xvc2VHbG9iYWxUcmFuc2FjdGlvbigpOwotCisgICAgQ29tcG9zZXI6OmNsb3NlR2xvYmFsVHJhbnNhY3Rpb24oKTsKIH0KIAotCiBzdGF0dXNfdCBTdXJmYWNlQ29tcG9zZXJDbGllbnQ6OmZyZWV6ZURpc3BsYXkoRGlzcGxheUlEIGRweSwgdWludDMyX3QgZmxhZ3MpCiB7CiAgICAgc3A8SVN1cmZhY2VDb21wb3Nlcj4gc20oZ2V0Q29tcG9zZXJTZXJ2aWNlKCkpOwpAQCAtNDQ3LDI2ICszNjMsMTYgQEAKICAgICBpZiAobVN0YXR1cyAhPSBOT19FUlJPUikKICAgICAgICAgcmV0dXJuIG1TdGF0dXM7CiAgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1Mb2NrKTsKLSAgICBWRVJCT1NFKCAgICJvcGVuVHJhbnNhY3Rpb24gKGNsaWVudCAlcCwgbVRyYW5zYWN0aW9uT3Blbj0lZCkiLAotICAgICAgICAgICAgdGhpcywgbVRyYW5zYWN0aW9uT3Blbik7CiAgICAgbVRyYW5zYWN0aW9uT3BlbisrOwotICAgIGlmIChtUHJlYnVpbHRMYXllclN0YXRlID09IDApIHsKLSAgICAgICAgbVByZWJ1aWx0TGF5ZXJTdGF0ZSA9IG5ldyBsYXllcl9zdGF0ZV90OwotICAgIH0KICAgICByZXR1cm4gTk9fRVJST1I7CiB9CiAKLQogc3RhdHVzX3QgU3VyZmFjZUNvbXBvc2VyQ2xpZW50OjpjbG9zZVRyYW5zYWN0aW9uKCkKIHsKICAgICBpZiAobVN0YXR1cyAhPSBOT19FUlJPUikKICAgICAgICAgcmV0dXJuIG1TdGF0dXM7CiAKICAgICBNdXRleDo6QXV0b2xvY2sgX2wobUxvY2spOwotCi0gICAgVkVSQk9TRSggICAiY2xvc2VUcmFuc2FjdGlvbiAoY2xpZW50ICVwLCBtVHJhbnNhY3Rpb25PcGVuPSVkKSIsCi0gICAgICAgICAgICB0aGlzLCBtVHJhbnNhY3Rpb25PcGVuKTsKLQogICAgIGlmIChtVHJhbnNhY3Rpb25PcGVuIDw9IDApIHsKICAgICAgICAgTE9HRSggICAiY2xvc2VUcmFuc2FjdGlvbiAoY2xpZW50ICVwLCBtVHJhbnNhY3Rpb25PcGVuPSVkKSAiCiAgICAgICAgICAgICAgICAgImNhbGxlZCBtb3JlIHRpbWVzIHRoYW4gb3BlblRyYW5zYWN0aW9uKCkiLApAQCAtNDg4LDcgKzM5NCw3IEBACiAgICAgcmV0dXJuIE5PX0VSUk9SOwogfQogCi1sYXllcl9zdGF0ZV90KiBTdXJmYWNlQ29tcG9zZXJDbGllbnQ6Ol9nZXRfc3RhdGVfbChTdXJmYWNlSUQgaW5kZXgpCitsYXllcl9zdGF0ZV90KiBTdXJmYWNlQ29tcG9zZXJDbGllbnQ6OmdldF9zdGF0ZV9sKFN1cmZhY2VJRCBpbmRleCkKIHsKICAgICAvLyBBUEkgdXNhZ2UgZXJyb3IsIGRvIG5vdGhpbmcuCiAgICAgaWYgKG1UcmFuc2FjdGlvbk9wZW48PTApIHsKQEAgLTQ5OCw3ICs0MDQsNyBAQAogICAgIH0KIAogICAgIC8vIHVzZSBtUHJlYnVpbHRMYXllclN0YXRlIGp1c3QgdG8gZmluZCBvdXQgaWYgd2UgYWxyZWFkeSBoYXZlIGl0Ci0gICAgbGF5ZXJfc3RhdGVfdCYgZHVtbXkgPSAqbVByZWJ1aWx0TGF5ZXJTdGF0ZTsKKyAgICBsYXllcl9zdGF0ZV90JiBkdW1teSgqbVByZWJ1aWx0TGF5ZXJTdGF0ZSk7CiAgICAgZHVtbXkuc3VyZmFjZSA9IGluZGV4OwogICAgIHNzaXplX3QgaSA9IG1TdGF0ZXMuaW5kZXhPZihkdW1teSk7CiAgICAgaWYgKGkgPCAwKSB7CkBAIC01MDgsNDkgKzQxNCw0OSBAQAogICAgIHJldHVybiBtU3RhdGVzLmVkaXRBcnJheSgpICsgaTsKIH0KIAotbGF5ZXJfc3RhdGVfdCogU3VyZmFjZUNvbXBvc2VyQ2xpZW50OjpfbG9ja0xheWVyU3RhdGUoU3VyZmFjZUlEIGlkKQorbGF5ZXJfc3RhdGVfdCogU3VyZmFjZUNvbXBvc2VyQ2xpZW50Ojpsb2NrTGF5ZXJTdGF0ZShTdXJmYWNlSUQgaWQpCiB7CiAgICAgbGF5ZXJfc3RhdGVfdCogczsKICAgICBtTG9jay5sb2NrKCk7Ci0gICAgcyA9IF9nZXRfc3RhdGVfbChpZCk7CisgICAgcyA9IGdldF9zdGF0ZV9sKGlkKTsKICAgICBpZiAoIXMpIG1Mb2NrLnVubG9jaygpOwogICAgIHJldHVybiBzOwogfQogCi12b2lkIFN1cmZhY2VDb21wb3NlckNsaWVudDo6X3VubG9ja0xheWVyU3RhdGUoKQordm9pZCBTdXJmYWNlQ29tcG9zZXJDbGllbnQ6OnVubG9ja0xheWVyU3RhdGUoKQogewogICAgIG1Mb2NrLnVubG9jaygpOwogfQogCiBzdGF0dXNfdCBTdXJmYWNlQ29tcG9zZXJDbGllbnQ6OnNldFBvc2l0aW9uKFN1cmZhY2VJRCBpZCwgaW50MzJfdCB4LCBpbnQzMl90IHkpCiB7Ci0gICAgbGF5ZXJfc3RhdGVfdCogcyA9IF9sb2NrTGF5ZXJTdGF0ZShpZCk7CisgICAgbGF5ZXJfc3RhdGVfdCogcyA9IGxvY2tMYXllclN0YXRlKGlkKTsKICAgICBpZiAoIXMpIHJldHVybiBCQURfSU5ERVg7CiAgICAgcy0+d2hhdCB8PSBJU3VyZmFjZUNvbXBvc2VyOjplUG9zaXRpb25DaGFuZ2VkOwogICAgIHMtPnggPSB4OwogICAgIHMtPnkgPSB5OwotICAgIF91bmxvY2tMYXllclN0YXRlKCk7CisgICAgdW5sb2NrTGF5ZXJTdGF0ZSgpOwogICAgIHJldHVybiBOT19FUlJPUjsKIH0KIAogc3RhdHVzX3QgU3VyZmFjZUNvbXBvc2VyQ2xpZW50OjpzZXRTaXplKFN1cmZhY2VJRCBpZCwgdWludDMyX3QgdywgdWludDMyX3QgaCkKIHsKLSAgICBsYXllcl9zdGF0ZV90KiBzID0gX2xvY2tMYXllclN0YXRlKGlkKTsKKyAgICBsYXllcl9zdGF0ZV90KiBzID0gbG9ja0xheWVyU3RhdGUoaWQpOwogICAgIGlmICghcykgcmV0dXJuIEJBRF9JTkRFWDsKICAgICBzLT53aGF0IHw9IElTdXJmYWNlQ29tcG9zZXI6OmVTaXplQ2hhbmdlZDsKICAgICBzLT53ID0gdzsKICAgICBzLT5oID0gaDsKLSAgICBfdW5sb2NrTGF5ZXJTdGF0ZSgpOworICAgIHVubG9ja0xheWVyU3RhdGUoKTsKICAgICByZXR1cm4gTk9fRVJST1I7CiB9CiAKIHN0YXR1c190IFN1cmZhY2VDb21wb3NlckNsaWVudDo6c2V0TGF5ZXIoU3VyZmFjZUlEIGlkLCBpbnQzMl90IHopCiB7Ci0gICAgbGF5ZXJfc3RhdGVfdCogcyA9IF9sb2NrTGF5ZXJTdGF0ZShpZCk7CisgICAgbGF5ZXJfc3RhdGVfdCogcyA9IGxvY2tMYXllclN0YXRlKGlkKTsKICAgICBpZiAoIXMpIHJldHVybiBCQURfSU5ERVg7CiAgICAgcy0+d2hhdCB8PSBJU3VyZmFjZUNvbXBvc2VyOjplTGF5ZXJDaGFuZ2VkOwogICAgIHMtPnogPSB6OwotICAgIF91bmxvY2tMYXllclN0YXRlKCk7CisgICAgdW5sb2NrTGF5ZXJTdGF0ZSgpOwogICAgIHJldHVybiBOT19FUlJPUjsKIH0KIApAQCAtNTc5LDM0ICs0ODUsMzQgQEAKIHN0YXR1c190IFN1cmZhY2VDb21wb3NlckNsaWVudDo6c2V0RmxhZ3MoU3VyZmFjZUlEIGlkLAogICAgICAgICB1aW50MzJfdCBmbGFncywgdWludDMyX3QgbWFzaykKIHsKLSAgICBsYXllcl9zdGF0ZV90KiBzID0gX2xvY2tMYXllclN0YXRlKGlkKTsKKyAgICBsYXllcl9zdGF0ZV90KiBzID0gbG9ja0xheWVyU3RhdGUoaWQpOwogICAgIGlmICghcykgcmV0dXJuIEJBRF9JTkRFWDsKICAgICBzLT53aGF0IHw9IElTdXJmYWNlQ29tcG9zZXI6OmVWaXNpYmlsaXR5Q2hhbmdlZDsKICAgICBzLT5mbGFncyAmPSB+bWFzazsKICAgICBzLT5mbGFncyB8PSAoZmxhZ3MgJiBtYXNrKTsKICAgICBzLT5tYXNrIHw9IG1hc2s7Ci0gICAgX3VubG9ja0xheWVyU3RhdGUoKTsKKyAgICB1bmxvY2tMYXllclN0YXRlKCk7CiAgICAgcmV0dXJuIE5PX0VSUk9SOwogfQogCiBzdGF0dXNfdCBTdXJmYWNlQ29tcG9zZXJDbGllbnQ6OnNldFRyYW5zcGFyZW50UmVnaW9uSGludCgKICAgICAgICAgU3VyZmFjZUlEIGlkLCBjb25zdCBSZWdpb24mIHRyYW5zcGFyZW50UmVnaW9uKQogewotICAgIGxheWVyX3N0YXRlX3QqIHMgPSBfbG9ja0xheWVyU3RhdGUoaWQpOworICAgIGxheWVyX3N0YXRlX3QqIHMgPSBsb2NrTGF5ZXJTdGF0ZShpZCk7CiAgICAgaWYgKCFzKSByZXR1cm4gQkFEX0lOREVYOwogICAgIHMtPndoYXQgfD0gSVN1cmZhY2VDb21wb3Nlcjo6ZVRyYW5zcGFyZW50UmVnaW9uQ2hhbmdlZDsKICAgICBzLT50cmFuc3BhcmVudFJlZ2lvbiA9IHRyYW5zcGFyZW50UmVnaW9uOwotICAgIF91bmxvY2tMYXllclN0YXRlKCk7CisgICAgdW5sb2NrTGF5ZXJTdGF0ZSgpOwogICAgIHJldHVybiBOT19FUlJPUjsKIH0KIAogc3RhdHVzX3QgU3VyZmFjZUNvbXBvc2VyQ2xpZW50OjpzZXRBbHBoYShTdXJmYWNlSUQgaWQsIGZsb2F0IGFscGhhKQogewotICAgIGxheWVyX3N0YXRlX3QqIHMgPSBfbG9ja0xheWVyU3RhdGUoaWQpOworICAgIGxheWVyX3N0YXRlX3QqIHMgPSBsb2NrTGF5ZXJTdGF0ZShpZCk7CiAgICAgaWYgKCFzKSByZXR1cm4gQkFEX0lOREVYOwogICAgIHMtPndoYXQgfD0gSVN1cmZhY2VDb21wb3Nlcjo6ZUFscGhhQ2hhbmdlZDsKICAgICBzLT5hbHBoYSA9IGFscGhhOwotICAgIF91bmxvY2tMYXllclN0YXRlKCk7CisgICAgdW5sb2NrTGF5ZXJTdGF0ZSgpOwogICAgIHJldHVybiBOT19FUlJPUjsKIH0KIApAQCAtNjE1LDcgKzUyMSw3IEBACiAgICAgICAgIGZsb2F0IGRzZHgsIGZsb2F0IGR0ZHgsCiAgICAgICAgIGZsb2F0IGRzZHksIGZsb2F0IGR0ZHkgKQogewotICAgIGxheWVyX3N0YXRlX3QqIHMgPSBfbG9ja0xheWVyU3RhdGUoaWQpOworICAgIGxheWVyX3N0YXRlX3QqIHMgPSBsb2NrTGF5ZXJTdGF0ZShpZCk7CiAgICAgaWYgKCFzKSByZXR1cm4gQkFEX0lOREVYOwogICAgIHMtPndoYXQgfD0gSVN1cmZhY2VDb21wb3Nlcjo6ZU1hdHJpeENoYW5nZWQ7CiAgICAgbGF5ZXJfc3RhdGVfdDo6bWF0cml4MjJfdCBtYXRyaXg7CkBAIC02MjQsMTkgKzUzMCwyMCBAQAogICAgIG1hdHJpeC5kc2R5ID0gZHNkeTsKICAgICBtYXRyaXguZHRkeSA9IGR0ZHk7CiAgICAgcy0+bWF0cml4ID0gbWF0cml4OwotICAgIF91bmxvY2tMYXllclN0YXRlKCk7CisgICAgdW5sb2NrTGF5ZXJTdGF0ZSgpOwogICAgIHJldHVybiBOT19FUlJPUjsKIH0KIAogc3RhdHVzX3QgU3VyZmFjZUNvbXBvc2VyQ2xpZW50OjpzZXRGcmVlemVUaW50KFN1cmZhY2VJRCBpZCwgdWludDMyX3QgdGludCkKIHsKLSAgICBsYXllcl9zdGF0ZV90KiBzID0gX2xvY2tMYXllclN0YXRlKGlkKTsKKyAgICBsYXllcl9zdGF0ZV90KiBzID0gbG9ja0xheWVyU3RhdGUoaWQpOwogICAgIGlmICghcykgcmV0dXJuIEJBRF9JTkRFWDsKICAgICBzLT53aGF0IHw9IElTdXJmYWNlQ29tcG9zZXI6OmVGcmVlemVUaW50Q2hhbmdlZDsKICAgICBzLT50aW50ID0gdGludDsKLSAgICBfdW5sb2NrTGF5ZXJTdGF0ZSgpOworICAgIHVubG9ja0xheWVyU3RhdGUoKTsKICAgICByZXR1cm4gTk9fRVJST1I7CiB9CiAKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIH07IC8vIG5hbWVzcGFjZSBhbmRyb2lkCiAKZGlmZiAtLWdpdCBhL3Rlc3RzL2ZyYW1ld29yay10ZXN0cy9BbmRyb2lkLm1rIGIvbGlicy9zdXJmYWNlZmxpbmdlcl9jbGllbnQvdGVzdHMvQW5kcm9pZC5tawpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gdGVzdHMvZnJhbWV3b3JrLXRlc3RzL0FuZHJvaWQubWsKcmVuYW1lIHRvIGxpYnMvc3VyZmFjZWZsaW5nZXJfY2xpZW50L3Rlc3RzL0FuZHJvaWQubWsKZGlmZiAtLWdpdCBhL2xpYnMvc3VyZmFjZWZsaW5nZXJfY2xpZW50L3Rlc3RzL1NoYXJlZEJ1ZmZlclN0YWNrL0FuZHJvaWQubWsgYi9saWJzL3N1cmZhY2VmbGluZ2VyX2NsaWVudC90ZXN0cy9TaGFyZWRCdWZmZXJTdGFjay9BbmRyb2lkLm1rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzZGZlMDQKLS0tIC9kZXYvbnVsbAorKysgYi9saWJzL3N1cmZhY2VmbGluZ2VyX2NsaWVudC90ZXN0cy9TaGFyZWRCdWZmZXJTdGFjay9BbmRyb2lkLm1rCkBAIC0wLDAgKzEsMTcgQEAKK0xPQ0FMX1BBVEg6PSAkKGNhbGwgbXktZGlyKQoraW5jbHVkZSAkKENMRUFSX1ZBUlMpCisKK0xPQ0FMX1NSQ19GSUxFUzo9IFwKKwlTaGFyZWRCdWZmZXJTdGFja1Rlc3QuY3BwCisKK0xPQ0FMX1NIQVJFRF9MSUJSQVJJRVMgOj0gXAorCWxpYmN1dGlscyBcCisJbGlidXRpbHMgXAorICAgIGxpYnVpIFwKKyAgICBsaWJzdXJmYWNlZmxpbmdlcl9jbGllbnQKKworTE9DQUxfTU9EVUxFOj0gdGVzdC1zaGFyZWRidWZmZXJzdGFjaworCitMT0NBTF9NT0RVTEVfVEFHUyA6PSB0ZXN0cworCitpbmNsdWRlICQoQlVJTERfRVhFQ1VUQUJMRSkKZGlmZiAtLWdpdCBhL2xpYnMvc3VyZmFjZWZsaW5nZXJfY2xpZW50L3Rlc3RzL1NoYXJlZEJ1ZmZlclN0YWNrL1NoYXJlZEJ1ZmZlclN0YWNrVGVzdC5jcHAgYi9saWJzL3N1cmZhY2VmbGluZ2VyX2NsaWVudC90ZXN0cy9TaGFyZWRCdWZmZXJTdGFjay9TaGFyZWRCdWZmZXJTdGFja1Rlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0MDlmNDgKLS0tIC9kZXYvbnVsbAorKysgYi9saWJzL3N1cmZhY2VmbGluZ2VyX2NsaWVudC90ZXN0cy9TaGFyZWRCdWZmZXJTdGFjay9TaGFyZWRCdWZmZXJTdGFja1Rlc3QuY3BwCkBAIC0wLDAgKzEsMjc5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI3VuZGVmIE5ERUJVRworCisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisjaW5jbHVkZSA8Y3V0aWxzL21lbW9yeS5oPgorI2luY2x1ZGUgPGN1dGlscy9sb2cuaD4KKyNpbmNsdWRlIDx1dGlscy9FcnJvcnMuaD4KKyNpbmNsdWRlIDxwcml2YXRlL3N1cmZhY2VmbGluZ2VyL1NoYXJlZEJ1ZmZlclN0YWNrLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBhbmRyb2lkOworCit2b2lkIGxvZyhjb25zdCBjaGFyKiBwcmVmaXgsIGludCAqYiwgc2l6ZV90IG51bSk7Cit2b2lkIHRlc3QwKFNoYXJlZEJ1ZmZlclNlcnZlciYgcywgU2hhcmVkQnVmZmVyQ2xpZW50JiBjLCBzaXplX3QgbnVtLCBpbnQqIGxpc3QpOworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2ludCBtYWluKGludCBhcmdjLCBjaGFyKiogYXJndikKK3sKKyAgICBTaGFyZWRDbGllbnQgY2xpZW50OworICAgIFNoYXJlZEJ1ZmZlclNlcnZlciBzKCZjbGllbnQsIDAsIDQsIDApOworICAgIFNoYXJlZEJ1ZmZlckNsaWVudCBjKCZjbGllbnQsIDAsIDQsIDApOworCisgICAgcHJpbnRmKCJiYXNpYyB0ZXN0IDBcbiIpOworICAgIGludCBsaXN0MFs0XSA9IHswLCAxLCAyLCAzfTsKKyAgICB0ZXN0MChzLCBjLCA0LCBsaXN0MCk7CisKKyAgICBwcmludGYoImJhc2ljIHRlc3QgMVxuIik7CisgICAgaW50IGxpc3QxWzRdID0gezIsIDEsIDAsIDN9OworICAgIHRlc3QwKHMsIGMsIDQsIGxpc3QxKTsKKworICAgIGludCBiID0gYy5kZXF1ZXVlKCk7CisgICAgYy5sb2NrKGIpOworICAgIGMucXVldWUoYik7CisgICAgcy5yZXRpcmVBbmRMb2NrKCk7CisKKyAgICBwcmludGYoImJhc2ljIHRlc3QgMlxuIik7CisgICAgaW50IGxpc3QyWzRdID0gezEsIDIsIDMsIDB9OworICAgIHRlc3QwKHMsIGMsIDQsIGxpc3QyKTsKKworCisgICAgcHJpbnRmKCJyZXNpemUgdGVzdFxuIik7CisgICAgY2xhc3MgU2V0QnVmZmVyQ291bnRJUEMgOiBwdWJsaWMgU2hhcmVkQnVmZmVyQ2xpZW50OjpTZXRCdWZmZXJDb3VudENhbGxiYWNrIHsKKyAgICAgICAgU2hhcmVkQnVmZmVyU2VydmVyJiBzOworICAgICAgICB2aXJ0dWFsIHN0YXR1c190IG9wZXJhdG9yKCkoaW50IGJ1ZmZlckNvdW50KSBjb25zdCB7CisgICAgICAgICAgICByZXR1cm4gcy5yZXNpemUoYnVmZmVyQ291bnQpOworICAgICAgICB9CisgICAgcHVibGljOgorICAgICAgICBTZXRCdWZmZXJDb3VudElQQyhTaGFyZWRCdWZmZXJTZXJ2ZXImIHMpIDogcyhzKSB7IH0KKyAgICB9IHJlc2l6ZShzKTsKKworICAgIGMuc2V0QnVmZmVyQ291bnQoNiwgcmVzaXplKTsKKyAgICBpbnQgbGlzdDNbNl0gPSB7MywgMiwgMSwgNCwgNSwgMH07CisgICAgdGVzdDAocywgYywgNiwgbGlzdDMpOworCisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgbG9nKGNvbnN0IGNoYXIqIHByZWZpeCwgaW50ICpiLCBzaXplX3QgbnVtKQoreworICAgIHByaW50ZigiJXM6ICIsIHByZWZpeCk7CisgICAgZm9yIChzaXplX3QgaT0wIDsgaTxudW0gOyBpKyspIHsKKyAgICAgICAgcHJpbnRmKCIlZCAiLCBiW2ldKTsKKyAgICB9CisgICAgcHJpbnRmKCJcbiIpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgdGVzdDAoCisgICAgICAgIFNoYXJlZEJ1ZmZlclNlcnZlciYgcywKKyAgICAgICAgU2hhcmVkQnVmZmVyQ2xpZW50JiBjLAorICAgICAgICBzaXplX3QgbnVtLAorICAgICAgICBpbnQqIGxpc3QpCit7CisgICAgc3RhdHVzX3QgZXJyOworICAgIGludCBiW251bV0sIHVbbnVtXSwgcltudW1dOworCisgICAgZm9yIChzaXplX3QgaT0wIDsgaTxudW0gOyBpKyspIHsKKyAgICAgICAgYltpXSA9IGMuZGVxdWV1ZSgpOworICAgICAgICBhc3NlcnQoYltpXT09bGlzdFtpXSk7CisgICAgfQorICAgIGxvZygiRFEiLCBiLCBudW0pOworCisgICAgZm9yIChzaXplX3QgaT0wIDsgaTxudW0tMSA7IGkrKykgeworICAgICAgICBlcnIgPSBjLmxvY2soYltpXSk7CisgICAgICAgIGFzc2VydChlcnI9PTApOworICAgIH0KKyAgICBsb2coIkxLIiwgYiwgbnVtLTEpOworCisgICAgZm9yIChzaXplX3QgaT0wIDsgaTxudW0tMSA7IGkrKykgeworICAgICAgICBlcnIgPSBjLnF1ZXVlKGJbaV0pOworICAgICAgICBhc3NlcnQoZXJyPT0wKTsKKyAgICB9CisgICAgbG9nKCIgUSIsIGIsIG51bS0xKTsKKworCisgICAgZm9yIChzaXplX3QgaT0wIDsgaTxudW0tMSA7IGkrKykgeworICAgICAgICByW2ldID0gcy5yZXRpcmVBbmRMb2NrKCk7CisgICAgICAgIGFzc2VydChyW2ldPT1saXN0W2ldKTsKKyAgICAgICAgZXJyID0gcy51bmxvY2socltpXSk7CisgICAgICAgIGFzc2VydChlcnIgPT0gMCk7CisgICAgfQorICAgIGxvZygiUlQiLCByLCBudW0tMSk7CisKKyAgICBlcnIgPSBjLmxvY2soYltudW0tMV0pOworICAgIGFzc2VydChlcnIgPT0gMCk7CisgICAgbG9nKCJMSyIsIGIrbnVtLTEsIDEpOworCisgICAgZXJyID0gYy5xdWV1ZShiW251bS0xXSk7CisgICAgYXNzZXJ0KGVyciA9PSAwKTsKKyAgICBsb2coIiBRIiwgYitudW0tMSwgMSk7CisKKyAgICByW251bS0xXSA9IHMucmV0aXJlQW5kTG9jaygpOworICAgIGFzc2VydChyW251bS0xXT09bGlzdFtudW0tMV0pOworICAgIGVyciA9IHMudW5sb2NrKHJbbnVtLTFdKTsKKyAgICBhc3NlcnQoZXJyID09IDApOworICAgIGxvZygiUlQiLCByK251bS0xLCAxKTsKKworICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHByaW50ZigiXG4iKTsKKworICAgIGZvciAoc2l6ZV90IGk9MCA7IGk8bnVtIDsgaSsrKSB7CisgICAgICAgIGJbaV0gPSBjLmRlcXVldWUoKTsKKyAgICAgICAgYXNzZXJ0KGJbaV09PWxpc3RbaV0pOworICAgIH0KKyAgICBsb2coIkRRIiwgYiwgbnVtKTsKKworICAgIGZvciAoc2l6ZV90IGk9MCA7IGk8bnVtLTEgOyBpKyspIHsKKyAgICAgICAgZXJyID0gYy5sb2NrKGJbaV0pOworICAgICAgICBhc3NlcnQoZXJyPT0wKTsKKyAgICB9CisgICAgbG9nKCJMSyIsIGIsIG51bS0xKTsKKworICAgIGZvciAoc2l6ZV90IGk9MCA7IGk8bnVtLTEgOyBpKyspIHsKKyAgICAgICAgdVtpXSA9IGJbbnVtLTItaV07CisgICAgfQorICAgIHVbbnVtLTFdID0gYltudW0tMV07CisKKyAgICBmb3IgKHNpemVfdCBpPTAgOyBpPG51bS0xIDsgaSsrKSB7CisgICAgICAgIGVyciA9IGMucXVldWUodVtpXSk7CisgICAgICAgIGFzc2VydChlcnI9PTApOworICAgIH0KKyAgICBsb2coIiBRIiwgdSwgbnVtLTEpOworCisgICAgZm9yIChzaXplX3QgaT0wIDsgaTxudW0tMSA7IGkrKykgeworICAgICAgICByW2ldID0gcy5yZXRpcmVBbmRMb2NrKCk7CisgICAgICAgIGFzc2VydChyW2ldPT11W2ldKTsKKyAgICAgICAgZXJyID0gcy51bmxvY2socltpXSk7CisgICAgICAgIGFzc2VydChlcnIgPT0gMCk7CisgICAgfQorICAgIGxvZygiUlQiLCByLCBudW0tMSk7CisKKyAgICBlcnIgPSBjLmxvY2soYltudW0tMV0pOworICAgIGFzc2VydChlcnIgPT0gMCk7CisgICAgbG9nKCJMSyIsIGIrbnVtLTEsIDEpOworCisgICAgZXJyID0gYy5xdWV1ZShiW251bS0xXSk7CisgICAgYXNzZXJ0KGVyciA9PSAwKTsKKyAgICBsb2coIiBRIiwgYitudW0tMSwgMSk7CisKKyAgICByW251bS0xXSA9IHMucmV0aXJlQW5kTG9jaygpOworICAgIGFzc2VydChyW251bS0xXT09bGlzdFtudW0tMV0pOworICAgIGVyciA9IHMudW5sb2NrKHJbbnVtLTFdKTsKKyAgICBhc3NlcnQoZXJyID09IDApOworICAgIGxvZygiUlQiLCByK251bS0xLCAxKTsKKworICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHByaW50ZigiXG4iKTsKKworICAgIGZvciAoc2l6ZV90IGk9MCA7IGk8bnVtIDsgaSsrKSB7CisgICAgICAgIGJbaV0gPSBjLmRlcXVldWUoKTsKKyAgICAgICAgYXNzZXJ0KGJbaV09PXVbaV0pOworICAgIH0KKyAgICBsb2coIkRRIiwgYiwgbnVtKTsKKworICAgIGZvciAoc2l6ZV90IGk9MCA7IGk8bnVtLTEgOyBpKyspIHsKKyAgICAgICAgZXJyID0gYy5sb2NrKGJbaV0pOworICAgICAgICBhc3NlcnQoZXJyPT0wKTsKKyAgICB9CisgICAgbG9nKCJMSyIsIGIsIG51bS0xKTsKKworICAgIGZvciAoc2l6ZV90IGk9MCA7IGk8bnVtLTEgOyBpKyspIHsKKyAgICAgICAgZXJyID0gYy5xdWV1ZShiW2ldKTsKKyAgICAgICAgYXNzZXJ0KGVycj09MCk7CisgICAgfQorICAgIGxvZygiIFEiLCBiLCBudW0tMSk7CisKKyAgICBmb3IgKHNpemVfdCBpPTAgOyBpPG51bS0xIDsgaSsrKSB7CisgICAgICAgIHJbaV0gPSBzLnJldGlyZUFuZExvY2soKTsKKyAgICAgICAgYXNzZXJ0KHJbaV09PXVbaV0pOworICAgICAgICBlcnIgPSBzLnVubG9jayhyW2ldKTsKKyAgICAgICAgYXNzZXJ0KGVyciA9PSAwKTsKKyAgICB9CisgICAgbG9nKCJSVCIsIHIsIG51bS0xKTsKKworICAgIGVyciA9IGMubG9jayh1W251bS0xXSk7CisgICAgYXNzZXJ0KGVyciA9PSAwKTsKKyAgICBsb2coIkxLIiwgdStudW0tMSwgMSk7CisKKyAgICBlcnIgPSBjLnF1ZXVlKHVbbnVtLTFdKTsKKyAgICBhc3NlcnQoZXJyID09IDApOworICAgIGxvZygiIFEiLCB1K251bS0xLCAxKTsKKworICAgIHJbbnVtLTFdID0gcy5yZXRpcmVBbmRMb2NrKCk7CisgICAgYXNzZXJ0KHJbbnVtLTFdPT11W251bS0xXSk7CisgICAgZXJyID0gcy51bmxvY2socltudW0tMV0pOworICAgIGFzc2VydChlcnIgPT0gMCk7CisgICAgbG9nKCJSVCIsIHIrbnVtLTEsIDEpOworCisgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgcHJpbnRmKCJcbiIpOworCisgICAgYlswXSA9IGMuZGVxdWV1ZSgpOworICAgIGFzc2VydChiWzBdPT11WzBdKTsKKyAgICBsb2coIkRRIiwgYiwgMSk7CisKKyAgICBjLnVuZG9EZXF1ZXVlKGJbMF0pOworICAgIGFzc2VydChlcnIgPT0gMCk7CisgICAgbG9nKCJVRFEiLCBiLCAxKTsKKworICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIHByaW50ZigiXG4iKTsKKworICAgIGZvciAoc2l6ZV90IGk9MCA7IGk8bnVtIDsgaSsrKSB7CisgICAgICAgIGJbaV0gPSBjLmRlcXVldWUoKTsKKyAgICAgICAgYXNzZXJ0KGJbaV09PXVbaV0pOworICAgIH0KKyAgICBsb2coIkRRIiwgYiwgbnVtKTsKKworICAgIGZvciAoc2l6ZV90IGk9MCA7IGk8bnVtLTEgOyBpKyspIHsKKyAgICAgICAgZXJyID0gYy5sb2NrKGJbaV0pOworICAgICAgICBhc3NlcnQoZXJyPT0wKTsKKyAgICB9CisgICAgbG9nKCJMSyIsIGIsIG51bS0xKTsKKworICAgIGZvciAoc2l6ZV90IGk9MCA7IGk8bnVtLTEgOyBpKyspIHsKKyAgICAgICAgZXJyID0gYy5xdWV1ZShiW2ldKTsKKyAgICAgICAgYXNzZXJ0KGVycj09MCk7CisgICAgfQorICAgIGxvZygiIFEiLCBiLCBudW0tMSk7CisKKyAgICBmb3IgKHNpemVfdCBpPTAgOyBpPG51bS0xIDsgaSsrKSB7CisgICAgICAgIHJbaV0gPSBzLnJldGlyZUFuZExvY2soKTsKKyAgICAgICAgYXNzZXJ0KHJbaV09PXVbaV0pOworICAgICAgICBlcnIgPSBzLnVubG9jayhyW2ldKTsKKyAgICAgICAgYXNzZXJ0KGVyciA9PSAwKTsKKyAgICB9CisgICAgbG9nKCJSVCIsIHIsIG51bS0xKTsKKworICAgIGVyciA9IGMubG9jayh1W251bS0xXSk7CisgICAgYXNzZXJ0KGVyciA9PSAwKTsKKyAgICBsb2coIkxLIiwgdStudW0tMSwgMSk7CisKKyAgICBlcnIgPSBjLnF1ZXVlKHVbbnVtLTFdKTsKKyAgICBhc3NlcnQoZXJyID09IDApOworICAgIGxvZygiIFEiLCB1K251bS0xLCAxKTsKKworICAgIHJbbnVtLTFdID0gcy5yZXRpcmVBbmRMb2NrKCk7CisgICAgYXNzZXJ0KHJbbnVtLTFdPT11W251bS0xXSk7CisgICAgZXJyID0gcy51bmxvY2socltudW0tMV0pOworICAgIGFzc2VydChlcnIgPT0gMCk7CisgICAgbG9nKCJSVCIsIHIrbnVtLTEsIDEpOworICAgIHByaW50ZigiXG4iKTsKK30KZGlmZiAtLWdpdCBhL2xpYnMvdWkvQW5kcm9pZC5tayBiL2xpYnMvdWkvQW5kcm9pZC5tawppbmRleCBmN2FjZDk3Li4yNGNkYzc4IDEwMDY0NAotLS0gYS9saWJzL3VpL0FuZHJvaWQubWsKKysrIGIvbGlicy91aS9BbmRyb2lkLm1rCkBAIC0xMSw2ICsxMSwxMSBAQAogCUdyYXBoaWNCdWZmZXJNYXBwZXIuY3BwIFwKIAlLZXlMYXlvdXRNYXAuY3BwIFwKIAlLZXlDaGFyYWN0ZXJNYXAuY3BwIFwKKwlJbnB1dC5jcHAgXAorCUlucHV0RGlzcGF0Y2hlci5jcHAgXAorCUlucHV0TWFuYWdlci5jcHAgXAorCUlucHV0UmVhZGVyLmNwcCBcCisJSW5wdXRUcmFuc3BvcnQuY3BwIFwKIAlJT3ZlcmxheS5jcHAgXAogCU92ZXJsYXkuY3BwIFwKIAlQaXhlbEZvcm1hdC5jcHAgXApkaWZmIC0tZ2l0IGEvbGlicy91aS9FdmVudEh1Yi5jcHAgYi9saWJzL3VpL0V2ZW50SHViLmNwcAppbmRleCBkNDVlYWYwLi4yNzg5NWYyIDEwMDY0NAotLS0gYS9saWJzL3VpL0V2ZW50SHViLmNwcAorKysgYi9saWJzL3VpL0V2ZW50SHViLmNwcApAQCAtMTU1LDc3ICsxNTUsNzAgQEAKICAgICByZXR1cm4gMDsKIH0KIAotaW50IEV2ZW50SHViOjpnZXRTd2l0Y2hTdGF0ZShpbnQgc3cpIGNvbnN0Ci17Ci0jaWZkZWYgRVZfU1cKLSAgICBpZiAoc3cgPj0gMCAmJiBzdyA8PSBTV19NQVgpIHsKLSAgICAgICAgaW50MzJfdCBkZXZpZCA9IG1Td2l0Y2hlc1tzd107Ci0gICAgICAgIGlmIChkZXZpZCAhPSAwKSB7Ci0gICAgICAgICAgICByZXR1cm4gZ2V0U3dpdGNoU3RhdGUoZGV2aWQsIHN3KTsKK2ludDMyX3QgRXZlbnRIdWI6OmdldFNjYW5Db2RlU3RhdGUoaW50MzJfdCBkZXZpY2VJZCwgaW50MzJfdCBkZXZpY2VDbGFzc2VzLAorICAgICAgICBpbnQzMl90IHNjYW5Db2RlKSBjb25zdCB7CisgICAgaWYgKHNjYW5Db2RlID49IDAgJiYgc2NhbkNvZGUgPD0gS0VZX01BWCkgeworICAgICAgICBBdXRvTXV0ZXggX2wobUxvY2spOworCisgICAgICAgIGlmIChkZXZpY2VJZCA9PSAtMSkgeworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtTnVtRGV2aWNlc0J5SWQ7IGkrKykgeworICAgICAgICAgICAgICAgIGRldmljZV90KiBkZXZpY2UgPSBtRGV2aWNlc0J5SWRbaV0uZGV2aWNlOworICAgICAgICAgICAgICAgIGlmIChkZXZpY2UgIT0gTlVMTCAmJiAoZGV2aWNlLT5jbGFzc2VzICYgZGV2aWNlQ2xhc3NlcykgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICBpbnQzMl90IHJlc3VsdCA9IGdldFNjYW5Db2RlU3RhdGVMb2NrZWQoZGV2aWNlLCBzY2FuQ29kZSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPj0gS0VZX1NUQVRFX0RPV04pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gS0VZX1NUQVRFX1VQOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZGV2aWNlX3QqIGRldmljZSA9IGdldERldmljZShkZXZpY2VJZCk7CisgICAgICAgICAgICBpZiAoZGV2aWNlICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZ2V0U2NhbkNvZGVTdGF0ZUxvY2tlZChkZXZpY2UsIHNjYW5Db2RlKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSNlbmRpZgotICAgIHJldHVybiAtMTsKKyAgICByZXR1cm4gS0VZX1NUQVRFX1VOS05PV047CiB9CiAKLWludCBFdmVudEh1Yjo6Z2V0U3dpdGNoU3RhdGUoaW50MzJfdCBkZXZpY2VJZCwgaW50IHN3KSBjb25zdAotewotI2lmZGVmIEVWX1NXCi0gICAgQXV0b011dGV4IF9sKG1Mb2NrKTsKLSAgICBkZXZpY2VfdCogZGV2aWNlID0gZ2V0RGV2aWNlKGRldmljZUlkKTsKLSAgICBpZiAoZGV2aWNlID09IE5VTEwpIHJldHVybiAtMTsKLSAgICAKLSAgICBpZiAoc3cgPj0gMCAmJiBzdyA8PSBTV19NQVgpIHsKLSAgICAgICAgdWludDhfdCBzd19iaXRtYXNrWyhTV19NQVgrNykvOF07Ci0gICAgICAgIG1lbXNldChzd19iaXRtYXNrLCAwLCBzaXplb2Yoc3dfYml0bWFzaykpOwotICAgICAgICBpZiAoaW9jdGwobUZEc1tpZF90b19pbmRleChkZXZpY2UtPmlkKV0uZmQsCi0gICAgICAgICAgICAgICAgICAgRVZJT0NHU1coc2l6ZW9mKHN3X2JpdG1hc2spKSwgc3dfYml0bWFzaykgPj0gMCkgewotICAgICAgICAgICAgcmV0dXJuIHRlc3RfYml0KHN3LCBzd19iaXRtYXNrKSA/IDEgOiAwOworaW50MzJfdCBFdmVudEh1Yjo6Z2V0U2NhbkNvZGVTdGF0ZUxvY2tlZChkZXZpY2VfdCogZGV2aWNlLCBpbnQzMl90IHNjYW5Db2RlKSBjb25zdCB7CisgICAgdWludDhfdCBrZXlfYml0bWFza1soS0VZX01BWCArIDcpIC8gOF07CisgICAgbWVtc2V0KGtleV9iaXRtYXNrLCAwLCBzaXplb2Yoa2V5X2JpdG1hc2spKTsKKyAgICBpZiAoaW9jdGwobUZEc1tpZF90b19pbmRleChkZXZpY2UtPmlkKV0uZmQsCisgICAgICAgICAgICAgICBFVklPQ0dLRVkoc2l6ZW9mKGtleV9iaXRtYXNrKSksIGtleV9iaXRtYXNrKSA+PSAwKSB7CisgICAgICAgIHJldHVybiB0ZXN0X2JpdChzY2FuQ29kZSwga2V5X2JpdG1hc2spID8gS0VZX1NUQVRFX0RPV04gOiBLRVlfU1RBVEVfVVA7CisgICAgfQorICAgIHJldHVybiBLRVlfU1RBVEVfVU5LTk9XTjsKK30KKworaW50MzJfdCBFdmVudEh1Yjo6Z2V0S2V5Q29kZVN0YXRlKGludDMyX3QgZGV2aWNlSWQsIGludDMyX3QgZGV2aWNlQ2xhc3NlcywKKyAgICAgICAgaW50MzJfdCBrZXlDb2RlKSBjb25zdCB7CisKKyAgICBpZiAoZGV2aWNlSWQgPT0gLTEpIHsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtTnVtRGV2aWNlc0J5SWQ7IGkrKykgeworICAgICAgICAgICAgZGV2aWNlX3QqIGRldmljZSA9IG1EZXZpY2VzQnlJZFtpXS5kZXZpY2U7CisgICAgICAgICAgICBpZiAoZGV2aWNlICE9IE5VTEwgJiYgKGRldmljZS0+Y2xhc3NlcyAmIGRldmljZUNsYXNzZXMpICE9IDApIHsKKyAgICAgICAgICAgICAgICBpbnQzMl90IHJlc3VsdCA9IGdldEtleUNvZGVTdGF0ZUxvY2tlZChkZXZpY2UsIGtleUNvZGUpOworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPj0gS0VZX1NUQVRFX0RPV04pIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIEtFWV9TVEFURV9VUDsKKyAgICB9IGVsc2UgeworICAgICAgICBkZXZpY2VfdCogZGV2aWNlID0gZ2V0RGV2aWNlKGRldmljZUlkKTsKKyAgICAgICAgaWYgKGRldmljZSAhPSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gZ2V0S2V5Q29kZVN0YXRlTG9ja2VkKGRldmljZSwga2V5Q29kZSk7CiAgICAgICAgIH0KICAgICB9Ci0jZW5kaWYKLSAgICAKLSAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIEtFWV9TVEFURV9VTktOT1dOOwogfQogCi1pbnQgRXZlbnRIdWI6OmdldFNjYW5jb2RlU3RhdGUoaW50IGNvZGUpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIGdldFNjYW5jb2RlU3RhdGUobUZpcnN0S2V5Ym9hcmRJZCwgY29kZSk7Ci19Ci0KLWludCBFdmVudEh1Yjo6Z2V0U2NhbmNvZGVTdGF0ZShpbnQzMl90IGRldmljZUlkLCBpbnQgY29kZSkgY29uc3QKLXsKLSAgICBBdXRvTXV0ZXggX2wobUxvY2spOwotICAgIGRldmljZV90KiBkZXZpY2UgPSBnZXREZXZpY2UoZGV2aWNlSWQpOwotICAgIGlmIChkZXZpY2UgPT0gTlVMTCkgcmV0dXJuIC0xOwotICAgIAotICAgIGlmIChjb2RlID49IDAgJiYgY29kZSA8PSBLRVlfTUFYKSB7Ci0gICAgICAgIHVpbnQ4X3Qga2V5X2JpdG1hc2tbKEtFWV9NQVgrNykvOF07Ci0gICAgICAgIG1lbXNldChrZXlfYml0bWFzaywgMCwgc2l6ZW9mKGtleV9iaXRtYXNrKSk7Ci0gICAgICAgIGlmIChpb2N0bChtRkRzW2lkX3RvX2luZGV4KGRldmljZS0+aWQpXS5mZCwKLSAgICAgICAgICAgICAgICAgICBFVklPQ0dLRVkoc2l6ZW9mKGtleV9iaXRtYXNrKSksIGtleV9iaXRtYXNrKSA+PSAwKSB7Ci0gICAgICAgICAgICByZXR1cm4gdGVzdF9iaXQoY29kZSwga2V5X2JpdG1hc2spID8gMSA6IDA7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgcmV0dXJuIC0xOwotfQotCi1pbnQgRXZlbnRIdWI6OmdldEtleWNvZGVTdGF0ZShpbnQgY29kZSkgY29uc3QKLXsKLSAgICByZXR1cm4gZ2V0S2V5Y29kZVN0YXRlKG1GaXJzdEtleWJvYXJkSWQsIGNvZGUpOwotfQotCi1pbnQgRXZlbnRIdWI6OmdldEtleWNvZGVTdGF0ZShpbnQzMl90IGRldmljZUlkLCBpbnQgY29kZSkgY29uc3QKLXsKLSAgICBBdXRvTXV0ZXggX2wobUxvY2spOwotICAgIGRldmljZV90KiBkZXZpY2UgPSBnZXREZXZpY2UoZGV2aWNlSWQpOwotICAgIGlmIChkZXZpY2UgPT0gTlVMTCB8fCBkZXZpY2UtPmxheW91dE1hcCA9PSBOVUxMKSByZXR1cm4gLTE7Ci0gICAgCitpbnQzMl90IEV2ZW50SHViOjpnZXRLZXlDb2RlU3RhdGVMb2NrZWQoZGV2aWNlX3QqIGRldmljZSwgaW50MzJfdCBrZXlDb2RlKSBjb25zdCB7CiAgICAgVmVjdG9yPGludDMyX3Q+IHNjYW5Db2RlczsKLSAgICBkZXZpY2UtPmxheW91dE1hcC0+ZmluZFNjYW5jb2Rlcyhjb2RlLCAmc2NhbkNvZGVzKTsKLSAgICAKLSAgICB1aW50OF90IGtleV9iaXRtYXNrWyhLRVlfTUFYKzcpLzhdOworICAgIGRldmljZS0+bGF5b3V0TWFwLT5maW5kU2NhbmNvZGVzKGtleUNvZGUsICZzY2FuQ29kZXMpOworCisgICAgdWludDhfdCBrZXlfYml0bWFza1soS0VZX01BWCArIDcpIC8gOF07CiAgICAgbWVtc2V0KGtleV9iaXRtYXNrLCAwLCBzaXplb2Yoa2V5X2JpdG1hc2spKTsKICAgICBpZiAoaW9jdGwobUZEc1tpZF90b19pbmRleChkZXZpY2UtPmlkKV0uZmQsCiAgICAgICAgICAgICAgICBFVklPQ0dLRVkoc2l6ZW9mKGtleV9iaXRtYXNrKSksIGtleV9iaXRtYXNrKSA+PSAwKSB7CkBAIC0yMzksMTIgKzIzMiw0NSBAQAogICAgICAgICAgICAgaW50MzJfdCBzYyA9IHNjYW5Db2Rlcy5pdGVtQXQoaSk7CiAgICAgICAgICAgICAvL0xPR0koIkNvZGUgJWQ6IGRvd249JWQiLCBzYywgdGVzdF9iaXQoc2MsIGtleV9iaXRtYXNrKSk7CiAgICAgICAgICAgICBpZiAoc2MgPj0gMCAmJiBzYyA8PSBLRVlfTUFYICYmIHRlc3RfYml0KHNjLCBrZXlfYml0bWFzaykpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgICAgICByZXR1cm4gS0VZX1NUQVRFX0RPV047CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIEtFWV9TVEFURV9VUDsKICAgICB9Ci0gICAgCi0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIEtFWV9TVEFURV9VTktOT1dOOworfQorCitpbnQzMl90IEV2ZW50SHViOjpnZXRTd2l0Y2hTdGF0ZShpbnQzMl90IGRldmljZUlkLCBpbnQzMl90IGRldmljZUNsYXNzZXMsIGludDMyX3Qgc3cpIGNvbnN0IHsKKyNpZmRlZiBFVl9TVworICAgIGlmIChzdyA+PSAwICYmIHN3IDw9IFNXX01BWCkgeworICAgICAgICBBdXRvTXV0ZXggX2wobUxvY2spOworCisgICAgICAgIGlmIChkZXZpY2VJZCA9PSAtMSkgeworICAgICAgICAgICAgZGV2aWNlSWQgPSBtU3dpdGNoZXNbc3ddOworICAgICAgICAgICAgaWYgKGRldmljZUlkID09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gS0VZX1NUQVRFX1VOS05PV047CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBkZXZpY2VfdCogZGV2aWNlID0gZ2V0RGV2aWNlKGRldmljZUlkKTsKKyAgICAgICAgaWYgKGRldmljZSA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gS0VZX1NUQVRFX1VOS05PV047CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZ2V0U3dpdGNoU3RhdGVMb2NrZWQoZGV2aWNlLCBzdyk7CisgICAgfQorI2VuZGlmCisgICAgcmV0dXJuIEtFWV9TVEFURV9VTktOT1dOOworfQorCitpbnQzMl90IEV2ZW50SHViOjpnZXRTd2l0Y2hTdGF0ZUxvY2tlZChkZXZpY2VfdCogZGV2aWNlLCBpbnQzMl90IHN3KSBjb25zdCB7CisgICAgdWludDhfdCBzd19iaXRtYXNrWyhTV19NQVggKyA3KSAvIDhdOworICAgIG1lbXNldChzd19iaXRtYXNrLCAwLCBzaXplb2Yoc3dfYml0bWFzaykpOworICAgIGlmIChpb2N0bChtRkRzW2lkX3RvX2luZGV4KGRldmljZS0+aWQpXS5mZCwKKyAgICAgICAgICAgICAgIEVWSU9DR1NXKHNpemVvZihzd19iaXRtYXNrKSksIHN3X2JpdG1hc2spID49IDApIHsKKyAgICAgICAgcmV0dXJuIHRlc3RfYml0KHN3LCBzd19iaXRtYXNrKSA/IEtFWV9TVEFURV9ET1dOIDogS0VZX1NUQVRFX1VQOworICAgIH0KKyAgICByZXR1cm4gS0VZX1NUQVRFX1VOS05PV047CiB9CiAKIHN0YXR1c190IEV2ZW50SHViOjpzY2FuY29kZVRvS2V5Y29kZShpbnQzMl90IGRldmljZUlkLCBpbnQgc2NhbmNvZGUsCkBAIC0zMDksOSArMzM1LDYgQEAKIAogICAgIHN0YXR1c190IGVycjsKIAotICAgIGZkX3NldCByZWFkZmRzOwotICAgIGludCBtYXhGZCA9IC0xOwotICAgIGludCBjYzsKICAgICBpbnQgaTsKICAgICBpbnQgcmVzOwogICAgIGludCBwb2xscmVzOwpAQCAtNDU3LDcgKzQ4MCw3IEBACiAgKiBJbnNwZWN0IHRoZSBrbm93biBkZXZpY2VzIHRvIGRldGVybWluZSB3aGV0aGVyIHBoeXNpY2FsIGtleXMgZXhpc3QgZm9yIHRoZSBnaXZlbgogICogZnJhbWV3b3JrLWRvbWFpbiBrZXkgY29kZXMuCiAgKi8KLWJvb2wgRXZlbnRIdWI6Omhhc0tleXMoc2l6ZV90IG51bUNvZGVzLCBpbnQzMl90KiBrZXlDb2RlcywgdWludDhfdCogb3V0RmxhZ3MpIHsKK2Jvb2wgRXZlbnRIdWI6Omhhc0tleXMoc2l6ZV90IG51bUNvZGVzLCBjb25zdCBpbnQzMl90KiBrZXlDb2RlcywgdWludDhfdCogb3V0RmxhZ3MpIGNvbnN0IHsKICAgICBmb3IgKHNpemVfdCBjb2RlSW5kZXggPSAwOyBjb2RlSW5kZXggPCBudW1Db2RlczsgY29kZUluZGV4KyspIHsKICAgICAgICAgb3V0RmxhZ3NbY29kZUluZGV4XSA9IDA7CiAKQEAgLTQ2NSw3ICs0ODgsOCBAQAogICAgICAgICBWZWN0b3I8aW50MzJfdD4gc2NhbkNvZGVzOwogICAgICAgICBmb3IgKGludCBuID0gMDsgKG4gPCBtRkRDb3VudCkgJiYgKG91dEZsYWdzW2NvZGVJbmRleF0gPT0gMCk7IG4rKykgewogICAgICAgICAgICAgaWYgKG1EZXZpY2VzW25dKSB7Ci0gICAgICAgICAgICAgICAgc3RhdHVzX3QgZXJyID0gbURldmljZXNbbl0tPmxheW91dE1hcC0+ZmluZFNjYW5jb2RlcyhrZXlDb2Rlc1tjb2RlSW5kZXhdLCAmc2NhbkNvZGVzKTsKKyAgICAgICAgICAgICAgICBzdGF0dXNfdCBlcnIgPSBtRGV2aWNlc1tuXS0+bGF5b3V0TWFwLT5maW5kU2NhbmNvZGVzKAorICAgICAgICAgICAgICAgICAgICAgICAga2V5Q29kZXNbY29kZUluZGV4XSwgJnNjYW5Db2Rlcyk7CiAgICAgICAgICAgICAgICAgaWYgKCFlcnIpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgdGhlIHBvc3NpYmxlIHNjYW4gY29kZXMgaWRlbnRpZmllZCBieSB0aGUgbGF5b3V0IG1hcCBhZ2FpbnN0IHRoZQogICAgICAgICAgICAgICAgICAgICAvLyBtYXAgb2YgY29kZXMgYWN0dWFsbHkgZW1pdHRlZCBieSB0aGUgZHJpdmVyCkBAIC02MTgsMTEgKzY0MiwxMSBAQAogICAgICAgICAvL30KICAgICAgICAgZm9yIChpbnQgaT0wOyBpPCgoQlROX01JU0MrNykvOCk7IGkrKykgewogICAgICAgICAgICAgaWYgKGtleV9iaXRtYXNrW2ldICE9IDApIHsKLSAgICAgICAgICAgICAgICBkZXZpY2UtPmNsYXNzZXMgfD0gQ0xBU1NfS0VZQk9BUkQ7CisgICAgICAgICAgICAgICAgZGV2aWNlLT5jbGFzc2VzIHw9IElOUFVUX0RFVklDRV9DTEFTU19LRVlCT0FSRDsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBpZiAoKGRldmljZS0+Y2xhc3NlcyAmIENMQVNTX0tFWUJPQVJEKSAhPSAwKSB7CisgICAgICAgIGlmICgoZGV2aWNlLT5jbGFzc2VzICYgSU5QVVRfREVWSUNFX0NMQVNTX0tFWUJPQVJEKSAhPSAwKSB7CiAgICAgICAgICAgICBkZXZpY2UtPmtleUJpdG1hc2sgPSBuZXcgdWludDhfdFtzaXplb2Yoa2V5X2JpdG1hc2spXTsKICAgICAgICAgICAgIGlmIChkZXZpY2UtPmtleUJpdG1hc2sgIT0gTlVMTCkgewogICAgICAgICAgICAgICAgIG1lbWNweShkZXZpY2UtPmtleUJpdG1hc2ssIGtleV9iaXRtYXNrLCBzaXplb2Yoa2V5X2JpdG1hc2spKTsKQEAgLTY0Miw3ICs2NjYsNyBAQAogICAgICAgICBpZiAoaW9jdGwoZmQsIEVWSU9DR0JJVChFVl9SRUwsIHNpemVvZihyZWxfYml0bWFzaykpLCByZWxfYml0bWFzaykgPj0gMCkKICAgICAgICAgewogICAgICAgICAgICAgaWYgKHRlc3RfYml0KFJFTF9YLCByZWxfYml0bWFzaykgJiYgdGVzdF9iaXQoUkVMX1ksIHJlbF9iaXRtYXNrKSkgewotICAgICAgICAgICAgICAgIGRldmljZS0+Y2xhc3NlcyB8PSBDTEFTU19UUkFDS0JBTEw7CisgICAgICAgICAgICAgICAgZGV2aWNlLT5jbGFzc2VzIHw9IElOUFVUX0RFVklDRV9DTEFTU19UUkFDS0JBTEw7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC02NTYsMTIgKzY4MCwxMiBAQAogICAgIGlmICh0ZXN0X2JpdChBQlNfTVRfVE9VQ0hfTUFKT1IsIGFic19iaXRtYXNrKQogICAgICAgICAgICAgJiYgdGVzdF9iaXQoQUJTX01UX1BPU0lUSU9OX1gsIGFic19iaXRtYXNrKQogICAgICAgICAgICAgJiYgdGVzdF9iaXQoQUJTX01UX1BPU0lUSU9OX1ksIGFic19iaXRtYXNrKSkgewotICAgICAgICBkZXZpY2UtPmNsYXNzZXMgfD0gQ0xBU1NfVE9VQ0hTQ1JFRU4gfCBDTEFTU19UT1VDSFNDUkVFTl9NVDsKKyAgICAgICAgZGV2aWNlLT5jbGFzc2VzIHw9IElOUFVUX0RFVklDRV9DTEFTU19UT1VDSFNDUkVFTiB8IElOUFVUX0RFVklDRV9DTEFTU19UT1VDSFNDUkVFTl9NVDsKICAgICAgICAgCiAgICAgLy8gSXMgdGhpcyBhbiBvbGQgc3R5bGUgc2luZ2xlLXRvdWNoIGRyaXZlcj8KICAgICB9IGVsc2UgaWYgKHRlc3RfYml0KEJUTl9UT1VDSCwga2V5X2JpdG1hc2spCiAgICAgICAgICAgICAmJiB0ZXN0X2JpdChBQlNfWCwgYWJzX2JpdG1hc2spICYmIHRlc3RfYml0KEFCU19ZLCBhYnNfYml0bWFzaykpIHsKLSAgICAgICAgZGV2aWNlLT5jbGFzc2VzIHw9IENMQVNTX1RPVUNIU0NSRUVOOworICAgICAgICBkZXZpY2UtPmNsYXNzZXMgfD0gSU5QVVRfREVWSUNFX0NMQVNTX1RPVUNIU0NSRUVOOwogICAgIH0KIAogI2lmZGVmIEVWX1NXCkBAIC02ODAsNyArNzA0LDcgQEAKICAgICB9CiAjZW5kaWYKIAotICAgIGlmICgoZGV2aWNlLT5jbGFzc2VzJkNMQVNTX0tFWUJPQVJEKSAhPSAwKSB7CisgICAgaWYgKChkZXZpY2UtPmNsYXNzZXMgJiBJTlBVVF9ERVZJQ0VfQ0xBU1NfS0VZQk9BUkQpICE9IDApIHsKICAgICAgICAgY2hhciB0bXBmbltzaXplb2YobmFtZSldOwogICAgICAgICBjaGFyIGtleWxheW91dEZpbGVuYW1lWzMwMF07CiAKQEAgLTcyMyw3ICs3NDcsNyBAQAogCiAgICAgICAgIC8vICdRJyBrZXkgc3VwcG9ydCA9IGNoZWFwIHRlc3Qgb2Ygd2hldGhlciB0aGlzIGlzIGFuIGFscGhhLWNhcGFibGUga2JkCiAgICAgICAgIGlmIChoYXNLZXljb2RlKGRldmljZSwga0tleUNvZGVRKSkgewotICAgICAgICAgICAgZGV2aWNlLT5jbGFzc2VzIHw9IENMQVNTX0FMUEhBS0VZOworICAgICAgICAgICAgZGV2aWNlLT5jbGFzc2VzIHw9IElOUFVUX0RFVklDRV9DTEFTU19BTFBIQUtFWTsKICAgICAgICAgfQogICAgICAgICAKICAgICAgICAgLy8gU2VlIGlmIHRoaXMgaGFzIGEgRFBBRC4KQEAgLTczMiw3ICs3NTYsNyBAQAogICAgICAgICAgICAgICAgIGhhc0tleWNvZGUoZGV2aWNlLCBrS2V5Q29kZURwYWRMZWZ0KSAmJgogICAgICAgICAgICAgICAgIGhhc0tleWNvZGUoZGV2aWNlLCBrS2V5Q29kZURwYWRSaWdodCkgJiYKICAgICAgICAgICAgICAgICBoYXNLZXljb2RlKGRldmljZSwga0tleUNvZGVEcGFkQ2VudGVyKSkgewotICAgICAgICAgICAgZGV2aWNlLT5jbGFzc2VzIHw9IENMQVNTX0RQQUQ7CisgICAgICAgICAgICBkZXZpY2UtPmNsYXNzZXMgfD0gSU5QVVRfREVWSUNFX0NMQVNTX0RQQUQ7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIExPR0koIk5ldyBrZXlib2FyZDogZGV2aWNlLT5pZD0weCV4IGRldm5hbWU9JyVzJyBwcm9wTmFtZT0nJXMnIGtleWxheW91dD0nJXMnXG4iLApkaWZmIC0tZ2l0IGEvbGlicy91aS9GcmFtZWJ1ZmZlck5hdGl2ZVdpbmRvdy5jcHAgYi9saWJzL3VpL0ZyYW1lYnVmZmVyTmF0aXZlV2luZG93LmNwcAppbmRleCA1MjM4MGEwLi42Zjg5NDhkIDEwMDY0NAotLS0gYS9saWJzL3VpL0ZyYW1lYnVmZmVyTmF0aXZlV2luZG93LmNwcAorKysgYi9saWJzL3VpL0ZyYW1lYnVmZmVyTmF0aXZlV2luZG93LmNwcApAQCAtNjcsNyArNjcsNyBAQAogICogVGhpcyBpbXBsZW1lbnRzIHRoZSAobWFpbikgZnJhbWVidWZmZXIgbWFuYWdlbWVudC4gVGhpcyBjbGFzcyBpcyB1c2VkCiAgKiBtb3N0bHkgYnkgU3VyZmFjZUZsaW5nZXIsIGJ1dCBhbHNvIGJ5IGNvbW1hbmQgbGluZSBHTCBhcHBsaWNhdGlvbi4KICAqIAotICogSW4gZmFjdCB0aGlzIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIGFuZHJvaWRfbmF0aXZlX3dpbmRvd190IG9uIHRvcCBvZgorICogSW4gZmFjdCB0aGlzIGlzIGFuIGltcGxlbWVudGF0aW9uIG9mIEFOYXRpdmVXaW5kb3cgb24gdG9wIG9mCiAgKiB0aGUgZnJhbWVidWZmZXIuCiAgKiAKICAqIEN1cnJlbnRseSBpdCBpcyBwcmV0dHkgc2ltcGxlLCBpdCBtYW5hZ2VzIG9ubHkgdHdvIGJ1ZmZlcnMgKHRoZSBmcm9udCBhbmQgCkBAIC0xMTcsMjMgKzExNywyMyBAQAogICAgICAgICBMT0dFX0lGKGVyciwgImZiIGJ1ZmZlciAxIGFsbG9jYXRpb24gZmFpbGVkIHc9JWQsIGg9JWQsIGVycj0lcyIsCiAgICAgICAgICAgICAgICAgZmJEZXYtPndpZHRoLCBmYkRldi0+aGVpZ2h0LCBzdHJlcnJvcigtZXJyKSk7CiAKLSAgICAgICAgY29uc3RfY2FzdDx1aW50MzJfdCY+KGFuZHJvaWRfbmF0aXZlX3dpbmRvd190OjpmbGFncykgPSBmYkRldi0+ZmxhZ3M7IAotICAgICAgICBjb25zdF9jYXN0PGZsb2F0Jj4oYW5kcm9pZF9uYXRpdmVfd2luZG93X3Q6OnhkcGkpID0gZmJEZXYtPnhkcGk7Ci0gICAgICAgIGNvbnN0X2Nhc3Q8ZmxvYXQmPihhbmRyb2lkX25hdGl2ZV93aW5kb3dfdDo6eWRwaSkgPSBmYkRldi0+eWRwaTsKLSAgICAgICAgY29uc3RfY2FzdDxpbnQmPihhbmRyb2lkX25hdGl2ZV93aW5kb3dfdDo6bWluU3dhcEludGVydmFsKSA9IAorICAgICAgICBjb25zdF9jYXN0PHVpbnQzMl90Jj4oQU5hdGl2ZVdpbmRvdzo6ZmxhZ3MpID0gZmJEZXYtPmZsYWdzOyAKKyAgICAgICAgY29uc3RfY2FzdDxmbG9hdCY+KEFOYXRpdmVXaW5kb3c6OnhkcGkpID0gZmJEZXYtPnhkcGk7CisgICAgICAgIGNvbnN0X2Nhc3Q8ZmxvYXQmPihBTmF0aXZlV2luZG93Ojp5ZHBpKSA9IGZiRGV2LT55ZHBpOworICAgICAgICBjb25zdF9jYXN0PGludCY+KEFOYXRpdmVXaW5kb3c6Om1pblN3YXBJbnRlcnZhbCkgPSAKICAgICAgICAgICAgIGZiRGV2LT5taW5Td2FwSW50ZXJ2YWw7Ci0gICAgICAgIGNvbnN0X2Nhc3Q8aW50Jj4oYW5kcm9pZF9uYXRpdmVfd2luZG93X3Q6Om1heFN3YXBJbnRlcnZhbCkgPSAKKyAgICAgICAgY29uc3RfY2FzdDxpbnQmPihBTmF0aXZlV2luZG93OjptYXhTd2FwSW50ZXJ2YWwpID0gCiAgICAgICAgICAgICBmYkRldi0+bWF4U3dhcEludGVydmFsOwogICAgIH0gZWxzZSB7CiAgICAgICAgIExPR0UoIkNvdWxkbid0IGdldCBncmFsbG9jIG1vZHVsZSIpOwogICAgIH0KIAotICAgIGFuZHJvaWRfbmF0aXZlX3dpbmRvd190OjpzZXRTd2FwSW50ZXJ2YWwgPSBzZXRTd2FwSW50ZXJ2YWw7Ci0gICAgYW5kcm9pZF9uYXRpdmVfd2luZG93X3Q6OmRlcXVldWVCdWZmZXIgPSBkZXF1ZXVlQnVmZmVyOwotICAgIGFuZHJvaWRfbmF0aXZlX3dpbmRvd190Ojpsb2NrQnVmZmVyID0gbG9ja0J1ZmZlcjsKLSAgICBhbmRyb2lkX25hdGl2ZV93aW5kb3dfdDo6cXVldWVCdWZmZXIgPSBxdWV1ZUJ1ZmZlcjsKLSAgICBhbmRyb2lkX25hdGl2ZV93aW5kb3dfdDo6cXVlcnkgPSBxdWVyeTsKLSAgICBhbmRyb2lkX25hdGl2ZV93aW5kb3dfdDo6cGVyZm9ybSA9IHBlcmZvcm07CisgICAgQU5hdGl2ZVdpbmRvdzo6c2V0U3dhcEludGVydmFsID0gc2V0U3dhcEludGVydmFsOworICAgIEFOYXRpdmVXaW5kb3c6OmRlcXVldWVCdWZmZXIgPSBkZXF1ZXVlQnVmZmVyOworICAgIEFOYXRpdmVXaW5kb3c6OmxvY2tCdWZmZXIgPSBsb2NrQnVmZmVyOworICAgIEFOYXRpdmVXaW5kb3c6OnF1ZXVlQnVmZmVyID0gcXVldWVCdWZmZXI7CisgICAgQU5hdGl2ZVdpbmRvdzo6cXVlcnkgPSBxdWVyeTsKKyAgICBBTmF0aXZlV2luZG93OjpwZXJmb3JtID0gcGVyZm9ybTsKIH0KIAogRnJhbWVidWZmZXJOYXRpdmVXaW5kb3c6On5GcmFtZWJ1ZmZlck5hdGl2ZVdpbmRvdygpIApAQCAtMTY4LDEzICsxNjgsMTMgQEAKIH0KIAogaW50IEZyYW1lYnVmZmVyTmF0aXZlV2luZG93OjpzZXRTd2FwSW50ZXJ2YWwoCi0gICAgICAgIGFuZHJvaWRfbmF0aXZlX3dpbmRvd190KiB3aW5kb3csIGludCBpbnRlcnZhbCkgCisgICAgICAgIEFOYXRpdmVXaW5kb3cqIHdpbmRvdywgaW50IGludGVydmFsKSAKIHsKICAgICBmcmFtZWJ1ZmZlcl9kZXZpY2VfdCogZmIgPSBnZXRTZWxmKHdpbmRvdyktPmZiRGV2OwogICAgIHJldHVybiBmYi0+c2V0U3dhcEludGVydmFsKGZiLCBpbnRlcnZhbCk7CiB9CiAKLWludCBGcmFtZWJ1ZmZlck5hdGl2ZVdpbmRvdzo6ZGVxdWV1ZUJ1ZmZlcihhbmRyb2lkX25hdGl2ZV93aW5kb3dfdCogd2luZG93LCAKK2ludCBGcmFtZWJ1ZmZlck5hdGl2ZVdpbmRvdzo6ZGVxdWV1ZUJ1ZmZlcihBTmF0aXZlV2luZG93KiB3aW5kb3csIAogICAgICAgICBhbmRyb2lkX25hdGl2ZV9idWZmZXJfdCoqIGJ1ZmZlcikKIHsKICAgICBGcmFtZWJ1ZmZlck5hdGl2ZVdpbmRvdyogc2VsZiA9IGdldFNlbGYod2luZG93KTsKQEAgLTE5Niw3ICsxOTYsNyBAQAogICAgIHJldHVybiAwOwogfQogCi1pbnQgRnJhbWVidWZmZXJOYXRpdmVXaW5kb3c6OmxvY2tCdWZmZXIoYW5kcm9pZF9uYXRpdmVfd2luZG93X3QqIHdpbmRvdywgCitpbnQgRnJhbWVidWZmZXJOYXRpdmVXaW5kb3c6OmxvY2tCdWZmZXIoQU5hdGl2ZVdpbmRvdyogd2luZG93LCAKICAgICAgICAgYW5kcm9pZF9uYXRpdmVfYnVmZmVyX3QqIGJ1ZmZlcikKIHsKICAgICBGcmFtZWJ1ZmZlck5hdGl2ZVdpbmRvdyogc2VsZiA9IGdldFNlbGYod2luZG93KTsKQEAgLTIxMCw3ICsyMTAsNyBAQAogICAgIHJldHVybiBOT19FUlJPUjsKIH0KIAotaW50IEZyYW1lYnVmZmVyTmF0aXZlV2luZG93OjpxdWV1ZUJ1ZmZlcihhbmRyb2lkX25hdGl2ZV93aW5kb3dfdCogd2luZG93LCAKK2ludCBGcmFtZWJ1ZmZlck5hdGl2ZVdpbmRvdzo6cXVldWVCdWZmZXIoQU5hdGl2ZVdpbmRvdyogd2luZG93LCAKICAgICAgICAgYW5kcm9pZF9uYXRpdmVfYnVmZmVyX3QqIGJ1ZmZlcikKIHsKICAgICBGcmFtZWJ1ZmZlck5hdGl2ZVdpbmRvdyogc2VsZiA9IGdldFNlbGYod2luZG93KTsKQEAgLTIyNCw3ICsyMjQsNyBAQAogICAgIHJldHVybiByZXM7CiB9CiAKLWludCBGcmFtZWJ1ZmZlck5hdGl2ZVdpbmRvdzo6cXVlcnkoYW5kcm9pZF9uYXRpdmVfd2luZG93X3QqIHdpbmRvdywKK2ludCBGcmFtZWJ1ZmZlck5hdGl2ZVdpbmRvdzo6cXVlcnkoQU5hdGl2ZVdpbmRvdyogd2luZG93LAogICAgICAgICBpbnQgd2hhdCwgaW50KiB2YWx1ZSkgCiB7CiAgICAgRnJhbWVidWZmZXJOYXRpdmVXaW5kb3cqIHNlbGYgPSBnZXRTZWxmKHdpbmRvdyk7CkBAIC0yNDUsNyArMjQ1LDcgQEAKICAgICByZXR1cm4gQkFEX1ZBTFVFOwogfQogCi1pbnQgRnJhbWVidWZmZXJOYXRpdmVXaW5kb3c6OnBlcmZvcm0oYW5kcm9pZF9uYXRpdmVfd2luZG93X3QqIHdpbmRvdywKK2ludCBGcmFtZWJ1ZmZlck5hdGl2ZVdpbmRvdzo6cGVyZm9ybShBTmF0aXZlV2luZG93KiB3aW5kb3csCiAgICAgICAgIGludCBvcGVyYXRpb24sIC4uLikKIHsKICAgICBzd2l0Y2ggKG9wZXJhdGlvbikgewpkaWZmIC0tZ2l0IGEvbGlicy91aS9HcmFwaGljQnVmZmVyLmNwcCBiL2xpYnMvdWkvR3JhcGhpY0J1ZmZlci5jcHAKaW5kZXggYmExZmQ5Yy4uNTE5YzI3NyAxMDA2NDQKLS0tIGEvbGlicy91aS9HcmFwaGljQnVmZmVyLmNwcAorKysgYi9saWJzL3VpL0dyYXBoaWNCdWZmZXIuY3BwCkBAIC0zOCw3ICszOCw3IEBACiAKIEdyYXBoaWNCdWZmZXI6OkdyYXBoaWNCdWZmZXIoKQogICAgIDogQkFTRSgpLCBtT3duZXIob3duRGF0YSksIG1CdWZmZXJNYXBwZXIoR3JhcGhpY0J1ZmZlck1hcHBlcjo6Z2V0KCkpLAotICAgICAgbUluaXRDaGVjayhOT19FUlJPUiksICBtVlN0cmlkZSgwKSwgbUluZGV4KC0xKQorICAgICAgbUluaXRDaGVjayhOT19FUlJPUiksIG1JbmRleCgtMSkKIHsKICAgICB3aWR0aCAgPSAKICAgICBoZWlnaHQgPSAKQEAgLTUxLDcgKzUxLDcgQEAKIEdyYXBoaWNCdWZmZXI6OkdyYXBoaWNCdWZmZXIodWludDMyX3QgdywgdWludDMyX3QgaCwgCiAgICAgICAgIFBpeGVsRm9ybWF0IHJlcUZvcm1hdCwgdWludDMyX3QgcmVxVXNhZ2UpCiAgICAgOiBCQVNFKCksIG1Pd25lcihvd25EYXRhKSwgbUJ1ZmZlck1hcHBlcihHcmFwaGljQnVmZmVyTWFwcGVyOjpnZXQoKSksCi0gICAgICBtSW5pdENoZWNrKE5PX0VSUk9SKSwgIG1WU3RyaWRlKDApLCBtSW5kZXgoLTEpCisgICAgICBtSW5pdENoZWNrKE5PX0VSUk9SKSwgbUluZGV4KC0xKQogewogICAgIHdpZHRoICA9IAogICAgIGhlaWdodCA9IApAQCAtNjcsNyArNjcsNyBAQAogICAgICAgICB1aW50MzJfdCBpblN0cmlkZSwgbmF0aXZlX2hhbmRsZV90KiBpbkhhbmRsZSwgYm9vbCBrZWVwT3duZXJzaGlwKQogICAgIDogQkFTRSgpLCBtT3duZXIoa2VlcE93bmVyc2hpcCA/IG93bkhhbmRsZSA6IG93bk5vbmUpLAogICAgICAgbUJ1ZmZlck1hcHBlcihHcmFwaGljQnVmZmVyTWFwcGVyOjpnZXQoKSksCi0gICAgICBtSW5pdENoZWNrKE5PX0VSUk9SKSwgIG1WU3RyaWRlKDApLCBtSW5kZXgoLTEpCisgICAgICBtSW5pdENoZWNrKE5PX0VSUk9SKSwgbUluZGV4KC0xKQogewogICAgIHdpZHRoICA9IHc7CiAgICAgaGVpZ2h0ID0gaDsKQEAgLTExMSw2ICsxMTEsOSBAQAogICAgIGlmIChtT3duZXIgIT0gb3duRGF0YSkKICAgICAgICAgcmV0dXJuIElOVkFMSURfT1BFUkFUSU9OOwogCisgICAgaWYgKGhhbmRsZSAmJiB3PT13aWR0aCAmJiBoPT1oZWlnaHQgJiYgZj09Zm9ybWF0ICYmIHJlcVVzYWdlPT11c2FnZSkKKyAgICAgICAgcmV0dXJuIE5PX0VSUk9SOworCiAgICAgaWYgKGhhbmRsZSkgewogICAgICAgICBHcmFwaGljQnVmZmVyQWxsb2NhdG9yJiBhbGxvY2F0b3IoR3JhcGhpY0J1ZmZlckFsbG9jYXRvcjo6Z2V0KCkpOwogICAgICAgICBhbGxvY2F0b3IuZnJlZShoYW5kbGUpOwpAQCAtMTIyLDkgKzEyNSw2IEBACiBzdGF0dXNfdCBHcmFwaGljQnVmZmVyOjppbml0U2l6ZSh1aW50MzJfdCB3LCB1aW50MzJfdCBoLCBQaXhlbEZvcm1hdCBmb3JtYXQsCiAgICAgICAgIHVpbnQzMl90IHJlcVVzYWdlKQogewotICAgIGlmIChmb3JtYXQgPT0gUElYRUxfRk9STUFUX1JHQlhfODg4OCkKLSAgICAgICAgZm9ybWF0ID0gUElYRUxfRk9STUFUX1JHQkFfODg4ODsKLQogICAgIEdyYXBoaWNCdWZmZXJBbGxvY2F0b3ImIGFsbG9jYXRvciA9IEdyYXBoaWNCdWZmZXJBbGxvY2F0b3I6OmdldCgpOwogICAgIHN0YXR1c190IGVyciA9IGFsbG9jYXRvci5hbGxvYyh3LCBoLCBmb3JtYXQsIHJlcVVzYWdlLCAmaGFuZGxlLCAmc3RyaWRlKTsKICAgICBpZiAoZXJyID09IE5PX0VSUk9SKSB7CkBAIC0xMzIsNyArMTMyLDYgQEAKICAgICAgICAgdGhpcy0+aGVpZ2h0ID0gaDsKICAgICAgICAgdGhpcy0+Zm9ybWF0ID0gZm9ybWF0OwogICAgICAgICB0aGlzLT51c2FnZSAgPSByZXFVc2FnZTsKLSAgICAgICAgbVZTdHJpZGUgPSAwOwogICAgIH0KICAgICByZXR1cm4gZXJyOwogfQpAQCAtMTczLDcgKzE3Miw2IEBACiAgICAgICAgIHN1ci0+aGVpZ2h0ID0gaGVpZ2h0OwogICAgICAgICBzdXItPnN0cmlkZSA9IHN0cmlkZTsKICAgICAgICAgc3VyLT5mb3JtYXQgPSBmb3JtYXQ7Ci0gICAgICAgIHN1ci0+dnN0cmlkZSA9IG1WU3RyaWRlOwogICAgICAgICBzdXItPmRhdGEgPSBzdGF0aWNfY2FzdDxHR0x1Ynl0ZSo+KHZhZGRyKTsKICAgICB9CiAgICAgcmV0dXJuIHJlczsKQEAgLTI2NywxNCArMjY1LDYgQEAKICAgICByZXR1cm4gbUluZGV4OwogfQogCi12b2lkIEdyYXBoaWNCdWZmZXI6OnNldFZlcnRpY2FsU3RyaWRlKHVpbnQzMl90IHZzdHJpZGUpIHsKLSAgICBtVlN0cmlkZSA9IHZzdHJpZGU7Ci19Ci0KLXVpbnQzMl90IEdyYXBoaWNCdWZmZXI6OmdldFZlcnRpY2FsU3RyaWRlKCkgY29uc3QgewotICAgIHJldHVybiBtVlN0cmlkZTsKLX0KLQogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIH07IC8vIG5hbWVzcGFjZSBhbmRyb2lkCmRpZmYgLS1naXQgYS9saWJzL3VpL0dyYXBoaWNCdWZmZXJBbGxvY2F0b3IuY3BwIGIvbGlicy91aS9HcmFwaGljQnVmZmVyQWxsb2NhdG9yLmNwcAppbmRleCA2YWU3ZTc0Li5kNTE2NjRkIDEwMDY0NAotLS0gYS9saWJzL3VpL0dyYXBoaWNCdWZmZXJBbGxvY2F0b3IuY3BwCisrKyBiL2xpYnMvdWkvR3JhcGhpY0J1ZmZlckFsbG9jYXRvci5jcHAKQEAgLTE1LDYgKzE1LDggQEAKICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogKi8KIAorI2RlZmluZSBMT0dfVEFHICJHcmFwaGljQnVmZmVyQWxsb2NhdG9yIgorCiAjaW5jbHVkZSA8Y3V0aWxzL2xvZy5oPgogCiAjaW5jbHVkZSA8dXRpbHMvU2luZ2xldG9uLmg+CkBAIC02MSw5ICs2Myw5IEBACiAgICAgY29uc3Qgc2l6ZV90IGMgPSBsaXN0LnNpemUoKTsKICAgICBmb3IgKHNpemVfdCBpPTAgOyBpPGMgOyBpKyspIHsKICAgICAgICAgY29uc3QgYWxsb2NfcmVjX3QmIHJlYyhsaXN0LnZhbHVlQXQoaSkpOwotICAgICAgICBzbnByaW50ZihidWZmZXIsIFNJWkUsICIlMTBwOiAlNy4yZiBLaUIgfCAlNHUgeCAlNHUgfCAlMmQgfCAweCUwOHhcbiIsCisgICAgICAgIHNucHJpbnRmKGJ1ZmZlciwgU0laRSwgIiUxMHA6ICU3LjJmIEtpQiB8ICU0dSAoJTR1KSB4ICU0dSB8ICUyZCB8IDB4JTA4eFxuIiwKICAgICAgICAgICAgIGxpc3Qua2V5QXQoaSksIHJlYy5zaXplLzEwMjQuMGYsIAotICAgICAgICAgICAgcmVjLncsIHJlYy5oLCByZWMuZm9ybWF0LCByZWMudXNhZ2UpOworICAgICAgICAgICAgcmVjLncsIHJlYy5zLCByZWMuaCwgcmVjLmZvcm1hdCwgcmVjLnVzYWdlKTsKICAgICAgICAgcmVzdWx0LmFwcGVuZChidWZmZXIpOwogICAgICAgICB0b3RhbCArPSByZWMuc2l6ZTsKICAgICB9CkBAIC03MSwxNiArNzMsMTMgQEAKICAgICByZXN1bHQuYXBwZW5kKGJ1ZmZlcik7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdWludDMyX3QgY2xhbXAodWludDMyX3QgYykgewotICAgIHJldHVybiBjPjAgPyBjIDogMTsKLX0KLQogc3RhdHVzX3QgR3JhcGhpY0J1ZmZlckFsbG9jYXRvcjo6YWxsb2ModWludDMyX3QgdywgdWludDMyX3QgaCwgUGl4ZWxGb3JtYXQgZm9ybWF0LAogICAgICAgICBpbnQgdXNhZ2UsIGJ1ZmZlcl9oYW5kbGVfdCogaGFuZGxlLCBpbnQzMl90KiBzdHJpZGUpCiB7Ci0gICAgLy8gbWFrZSBzdXJlIHRvIG5vdCBhbGxvY2F0ZSBhIDAgeCAwIGJ1ZmZlcgotICAgIHcgPSBjbGFtcCh3KTsKLSAgICBoID0gY2xhbXAoaCk7CisgICAgLy8gbWFrZSBzdXJlIHRvIG5vdCBhbGxvY2F0ZSBhIE4geCAwIG9yIDAgeCBOIGJ1ZmZlciwgc2luY2UgdGhpcyBpcworICAgIC8vIGFsbG93ZWQgZnJvbSBhbiBBUEkgc3RhbmQtcG9pbnQgYWxsb2NhdGUgYSAxeDEgYnVmZmVyIGluc3RlYWQuCisgICAgaWYgKCF3IHx8ICFoKQorICAgICAgICB3ID0gaCA9IDE7CiAKICAgICAvLyB3ZSBoYXZlIGEgaC93IGFsbG9jYXRvciBhbmQgaC93IGJ1ZmZlciBpcyByZXF1ZXN0ZWQKICAgICBzdGF0dXNfdCBlcnI7IApAQCAtMTAwLDkgKzk5LDkgQEAKICAgICAgICAgYWxsb2NfcmVjX3QgcmVjOwogICAgICAgICByZWMudyA9IHc7CiAgICAgICAgIHJlYy5oID0gaDsKKyAgICAgICAgcmVjLnMgPSAqc3RyaWRlOwogICAgICAgICByZWMuZm9ybWF0ID0gZm9ybWF0OwogICAgICAgICByZWMudXNhZ2UgPSB1c2FnZTsKLSAgICAgICAgcmVjLnZhZGRyID0gMDsKICAgICAgICAgcmVjLnNpemUgPSBoICogc3RyaWRlWzBdICogYnl0ZXNQZXJQaXhlbChmb3JtYXQpOwogICAgICAgICBsaXN0LmFkZCgqaGFuZGxlLCByZWMpOwogICAgIH0gZWxzZSB7CmRpZmYgLS1naXQgYS9saWJzL3VpL0lucHV0LmNwcCBiL2xpYnMvdWkvSW5wdXQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2NDI1MWYKLS0tIC9kZXYvbnVsbAorKysgYi9saWJzL3VpL0lucHV0LmNwcApAQCAtMCwwICsxLDE1NCBAQAorLy8KKy8vIENvcHlyaWdodCAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKy8vCisvLyBQcm92aWRlcyBhIHBpcGUtYmFzZWQgdHJhbnNwb3J0IGZvciBuYXRpdmUgZXZlbnRzIGluIHRoZSBOREsuCisvLworI2RlZmluZSBMT0dfVEFHICJJbnB1dCIKKworLy8jZGVmaW5lIExPR19OREVCVUcgMAorCisjaW5jbHVkZSA8dWkvSW5wdXQuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCisvLyBjbGFzcyBJbnB1dEV2ZW50CisKK3ZvaWQgSW5wdXRFdmVudDo6aW5pdGlhbGl6ZShpbnQzMl90IGRldmljZUlkLCBpbnQzMl90IG5hdHVyZSkgeworICAgIG1EZXZpY2VJZCA9IGRldmljZUlkOworICAgIG1OYXR1cmUgPSBuYXR1cmU7Cit9CisKKy8vIGNsYXNzIEtleUV2ZW50CisKK2Jvb2wgS2V5RXZlbnQ6Omhhc0RlZmF1bHRBY3Rpb24oaW50MzJfdCBrZXlDb2RlKSB7CisgICAgc3dpdGNoIChrZXlDb2RlKSB7CisgICAgICAgIGNhc2UgS0VZQ09ERV9IT01FOgorICAgICAgICBjYXNlIEtFWUNPREVfQkFDSzoKKyAgICAgICAgY2FzZSBLRVlDT0RFX0NBTEw6CisgICAgICAgIGNhc2UgS0VZQ09ERV9FTkRDQUxMOgorICAgICAgICBjYXNlIEtFWUNPREVfVk9MVU1FX1VQOgorICAgICAgICBjYXNlIEtFWUNPREVfVk9MVU1FX0RPV046CisgICAgICAgIGNhc2UgS0VZQ09ERV9QT1dFUjoKKyAgICAgICAgY2FzZSBLRVlDT0RFX0NBTUVSQToKKyAgICAgICAgY2FzZSBLRVlDT0RFX0hFQURTRVRIT09LOgorICAgICAgICBjYXNlIEtFWUNPREVfTUVOVToKKyAgICAgICAgY2FzZSBLRVlDT0RFX05PVElGSUNBVElPTjoKKyAgICAgICAgY2FzZSBLRVlDT0RFX0ZPQ1VTOgorICAgICAgICBjYXNlIEtFWUNPREVfU0VBUkNIOgorICAgICAgICBjYXNlIEtFWUNPREVfTUVESUFfUExBWV9QQVVTRToKKyAgICAgICAgY2FzZSBLRVlDT0RFX01FRElBX1NUT1A6CisgICAgICAgIGNhc2UgS0VZQ09ERV9NRURJQV9ORVhUOgorICAgICAgICBjYXNlIEtFWUNPREVfTUVESUFfUFJFVklPVVM6CisgICAgICAgIGNhc2UgS0VZQ09ERV9NRURJQV9SRVdJTkQ6CisgICAgICAgIGNhc2UgS0VZQ09ERV9NRURJQV9GQVNUX0ZPUldBUkQ6CisgICAgICAgIGNhc2UgS0VZQ09ERV9NVVRFOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBLZXlFdmVudDo6aGFzRGVmYXVsdEFjdGlvbigpIGNvbnN0IHsKKyAgICByZXR1cm4gaGFzRGVmYXVsdEFjdGlvbihnZXRLZXlDb2RlKCkpOworfQorCitib29sIEtleUV2ZW50Ojppc1N5c3RlbUtleShpbnQzMl90IGtleUNvZGUpIHsKKyAgICBzd2l0Y2ggKGtleUNvZGUpIHsKKyAgICAgICAgY2FzZSBLRVlDT0RFX01FTlU6CisgICAgICAgIGNhc2UgS0VZQ09ERV9TT0ZUX1JJR0hUOgorICAgICAgICBjYXNlIEtFWUNPREVfSE9NRToKKyAgICAgICAgY2FzZSBLRVlDT0RFX0JBQ0s6CisgICAgICAgIGNhc2UgS0VZQ09ERV9DQUxMOgorICAgICAgICBjYXNlIEtFWUNPREVfRU5EQ0FMTDoKKyAgICAgICAgY2FzZSBLRVlDT0RFX1ZPTFVNRV9VUDoKKyAgICAgICAgY2FzZSBLRVlDT0RFX1ZPTFVNRV9ET1dOOgorICAgICAgICBjYXNlIEtFWUNPREVfTVVURToKKyAgICAgICAgY2FzZSBLRVlDT0RFX1BPV0VSOgorICAgICAgICBjYXNlIEtFWUNPREVfSEVBRFNFVEhPT0s6CisgICAgICAgIGNhc2UgS0VZQ09ERV9NRURJQV9QTEFZX1BBVVNFOgorICAgICAgICBjYXNlIEtFWUNPREVfTUVESUFfU1RPUDoKKyAgICAgICAgY2FzZSBLRVlDT0RFX01FRElBX05FWFQ6CisgICAgICAgIGNhc2UgS0VZQ09ERV9NRURJQV9QUkVWSU9VUzoKKyAgICAgICAgY2FzZSBLRVlDT0RFX01FRElBX1JFV0lORDoKKyAgICAgICAgY2FzZSBLRVlDT0RFX01FRElBX0ZBU1RfRk9SV0FSRDoKKyAgICAgICAgY2FzZSBLRVlDT0RFX0NBTUVSQToKKyAgICAgICAgY2FzZSBLRVlDT0RFX0ZPQ1VTOgorICAgICAgICBjYXNlIEtFWUNPREVfU0VBUkNIOgorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBLZXlFdmVudDo6aXNTeXN0ZW1LZXkoKSBjb25zdCB7CisgICAgcmV0dXJuIGlzU3lzdGVtS2V5KGdldEtleUNvZGUoKSk7Cit9CisKK3ZvaWQgS2V5RXZlbnQ6OmluaXRpYWxpemUoCisgICAgICAgIGludDMyX3QgZGV2aWNlSWQsCisgICAgICAgIGludDMyX3QgbmF0dXJlLAorICAgICAgICBpbnQzMl90IGFjdGlvbiwKKyAgICAgICAgaW50MzJfdCBmbGFncywKKyAgICAgICAgaW50MzJfdCBrZXlDb2RlLAorICAgICAgICBpbnQzMl90IHNjYW5Db2RlLAorICAgICAgICBpbnQzMl90IG1ldGFTdGF0ZSwKKyAgICAgICAgaW50MzJfdCByZXBlYXRDb3VudCwKKyAgICAgICAgbnNlY3NfdCBkb3duVGltZSwKKyAgICAgICAgbnNlY3NfdCBldmVudFRpbWUpIHsKKyAgICBJbnB1dEV2ZW50Ojppbml0aWFsaXplKGRldmljZUlkLCBuYXR1cmUpOworICAgIG1BY3Rpb24gPSBhY3Rpb247CisgICAgbUZsYWdzID0gZmxhZ3M7CisgICAgbUtleUNvZGUgPSBrZXlDb2RlOworICAgIG1TY2FuQ29kZSA9IHNjYW5Db2RlOworICAgIG1NZXRhU3RhdGUgPSBtZXRhU3RhdGU7CisgICAgbVJlcGVhdENvdW50ID0gcmVwZWF0Q291bnQ7CisgICAgbURvd25UaW1lID0gZG93blRpbWU7CisgICAgbUV2ZW50VGltZSA9IGV2ZW50VGltZTsKK30KKworLy8gY2xhc3MgTW90aW9uRXZlbnQKKwordm9pZCBNb3Rpb25FdmVudDo6aW5pdGlhbGl6ZSgKKyAgICAgICAgaW50MzJfdCBkZXZpY2VJZCwKKyAgICAgICAgaW50MzJfdCBuYXR1cmUsCisgICAgICAgIGludDMyX3QgYWN0aW9uLAorICAgICAgICBpbnQzMl90IGVkZ2VGbGFncywKKyAgICAgICAgaW50MzJfdCBtZXRhU3RhdGUsCisgICAgICAgIGZsb2F0IHhPZmZzZXQsCisgICAgICAgIGZsb2F0IHlPZmZzZXQsCisgICAgICAgIGZsb2F0IHhQcmVjaXNpb24sCisgICAgICAgIGZsb2F0IHlQcmVjaXNpb24sCisgICAgICAgIG5zZWNzX3QgZG93blRpbWUsCisgICAgICAgIG5zZWNzX3QgZXZlbnRUaW1lLAorICAgICAgICBzaXplX3QgcG9pbnRlckNvdW50LAorICAgICAgICBjb25zdCBpbnQzMl90KiBwb2ludGVySWRzLAorICAgICAgICBjb25zdCBQb2ludGVyQ29vcmRzKiBwb2ludGVyQ29vcmRzKSB7CisgICAgSW5wdXRFdmVudDo6aW5pdGlhbGl6ZShkZXZpY2VJZCwgbmF0dXJlKTsKKyAgICBtQWN0aW9uID0gYWN0aW9uOworICAgIG1FZGdlRmxhZ3MgPSBlZGdlRmxhZ3M7CisgICAgbU1ldGFTdGF0ZSA9IG1ldGFTdGF0ZTsKKyAgICBtWE9mZnNldCA9IHhPZmZzZXQ7CisgICAgbVlPZmZzZXQgPSB5T2Zmc2V0OworICAgIG1YUHJlY2lzaW9uID0geFByZWNpc2lvbjsKKyAgICBtWVByZWNpc2lvbiA9IHlQcmVjaXNpb247CisgICAgbURvd25UaW1lID0gZG93blRpbWU7CisgICAgbVBvaW50ZXJJZHMuY2xlYXIoKTsKKyAgICBtUG9pbnRlcklkcy5hcHBlbmRBcnJheShwb2ludGVySWRzLCBwb2ludGVyQ291bnQpOworICAgIG1TYW1wbGVFdmVudFRpbWVzLmNsZWFyKCk7CisgICAgbVNhbXBsZVBvaW50ZXJDb29yZHMuY2xlYXIoKTsKKyAgICBhZGRTYW1wbGUoZXZlbnRUaW1lLCBwb2ludGVyQ29vcmRzKTsKK30KKwordm9pZCBNb3Rpb25FdmVudDo6YWRkU2FtcGxlKAorICAgICAgICBpbnQ2NF90IGV2ZW50VGltZSwKKyAgICAgICAgY29uc3QgUG9pbnRlckNvb3JkcyogcG9pbnRlckNvb3JkcykgeworICAgIG1TYW1wbGVFdmVudFRpbWVzLnB1c2goZXZlbnRUaW1lKTsKKyAgICBtU2FtcGxlUG9pbnRlckNvb3Jkcy5hcHBlbmRBcnJheShwb2ludGVyQ29vcmRzLCBnZXRQb2ludGVyQ291bnQoKSk7Cit9CisKK3ZvaWQgTW90aW9uRXZlbnQ6Om9mZnNldExvY2F0aW9uKGZsb2F0IHhPZmZzZXQsIGZsb2F0IHlPZmZzZXQpIHsKKyAgICBtWE9mZnNldCArPSB4T2Zmc2V0OworICAgIG1ZT2Zmc2V0ICs9IHlPZmZzZXQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL2xpYnMvdWkvSW5wdXREaXNwYXRjaGVyLmNwcCBiL2xpYnMvdWkvSW5wdXREaXNwYXRjaGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODA5Y2JhCi0tLSAvZGV2L251bGwKKysrIGIvbGlicy91aS9JbnB1dERpc3BhdGNoZXIuY3BwCkBAIC0wLDAgKzEsMTcxMSBAQAorLy8KKy8vIENvcHlyaWdodCAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKy8vCisvLyBUaGUgaW5wdXQgZGlzcGF0Y2hlci4KKy8vCisjZGVmaW5lIExPR19UQUcgIklucHV0RGlzcGF0Y2hlciIKKworLy8jZGVmaW5lIExPR19OREVCVUcgMAorCisvLyBMb2cgZGV0YWlsZWQgZGVidWcgbWVzc2FnZXMgYWJvdXQgZWFjaCBpbmJvdW5kIGV2ZW50IG5vdGlmaWNhdGlvbiB0byB0aGUgZGlzcGF0Y2hlci4KKyNkZWZpbmUgREVCVUdfSU5CT1VORF9FVkVOVF9ERVRBSUxTIDAKKworLy8gTG9nIGRldGFpbGVkIGRlYnVnIG1lc3NhZ2VzIGFib3V0IGVhY2ggb3V0Ym91bmQgZXZlbnQgcHJvY2Vzc2VkIGJ5IHRoZSBkaXNwYXRjaGVyLgorI2RlZmluZSBERUJVR19PVVRCT1VORF9FVkVOVF9ERVRBSUxTIDAKKworLy8gTG9nIGRlYnVnIG1lc3NhZ2VzIGFib3V0IGJhdGNoaW5nLgorI2RlZmluZSBERUJVR19CQVRDSElORyAwCisKKy8vIExvZyBkZWJ1ZyBtZXNzYWdlcyBhYm91dCB0aGUgZGlzcGF0Y2ggY3ljbGUuCisjZGVmaW5lIERFQlVHX0RJU1BBVENIX0NZQ0xFIDAKKworLy8gTG9nIGRlYnVnIG1lc3NhZ2VzIGFib3V0IHJlZ2lzdHJhdGlvbnMuCisjZGVmaW5lIERFQlVHX1JFR0lTVFJBVElPTiAwCisKKy8vIExvZyBkZWJ1ZyBtZXNzYWdlcyBhYm91dCBwZXJmb3JtYW5jZSBzdGF0aXN0aWNzLgorI2RlZmluZSBERUJVR19QRVJGT1JNQU5DRV9TVEFUSVNUSUNTIDAKKworLy8gTG9nIGRlYnVnIG1lc3NhZ2VzIGFib3V0IGlucHV0IGV2ZW50IGluamVjdGlvbi4KKyNkZWZpbmUgREVCVUdfSU5KRUNUSU9OIDAKKworI2luY2x1ZGUgPGN1dGlscy9sb2cuaD4KKyNpbmNsdWRlIDx1aS9JbnB1dERpc3BhdGNoZXIuaD4KKworI2luY2x1ZGUgPHN0ZGRlZi5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8bGltaXRzLmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworLy8gVE9ETywgdGhpcyBuZWVkcyB0byBiZSBzb21ld2hlcmUgZWxzZSwgcGVyaGFwcyBpbiB0aGUgcG9saWN5CitzdGF0aWMgaW5saW5lIGJvb2wgaXNNb3ZlbWVudEtleShpbnQzMl90IGtleUNvZGUpIHsKKyAgICByZXR1cm4ga2V5Q29kZSA9PSBLRVlDT0RFX0RQQURfVVAKKyAgICAgICAgICAgIHx8IGtleUNvZGUgPT0gS0VZQ09ERV9EUEFEX0RPV04KKyAgICAgICAgICAgIHx8IGtleUNvZGUgPT0gS0VZQ09ERV9EUEFEX0xFRlQKKyAgICAgICAgICAgIHx8IGtleUNvZGUgPT0gS0VZQ09ERV9EUEFEX1JJR0hUOworfQorCitzdGF0aWMgaW5saW5lIG5zZWNzX3Qgbm93KCkgeworICAgIHJldHVybiBzeXN0ZW1UaW1lKFNZU1RFTV9USU1FX01PTk9UT05JQyk7Cit9CisKKy8vIC0tLSBJbnB1dERpc3BhdGNoZXIgLS0tCisKK0lucHV0RGlzcGF0Y2hlcjo6SW5wdXREaXNwYXRjaGVyKGNvbnN0IHNwPElucHV0RGlzcGF0Y2hlclBvbGljeUludGVyZmFjZT4mIHBvbGljeSkgOgorICAgIG1Qb2xpY3kocG9saWN5KSB7CisgICAgbVBvbGxMb29wID0gbmV3IFBvbGxMb29wKGZhbHNlKTsKKworICAgIG1JbmJvdW5kUXVldWUuaGVhZC5yZWZDb3VudCA9IC0xOworICAgIG1JbmJvdW5kUXVldWUuaGVhZC50eXBlID0gRXZlbnRFbnRyeTo6VFlQRV9TRU5USU5FTDsKKyAgICBtSW5ib3VuZFF1ZXVlLmhlYWQuZXZlbnRUaW1lID0gTE9OR19MT05HX01JTjsKKworICAgIG1JbmJvdW5kUXVldWUudGFpbC5yZWZDb3VudCA9IC0xOworICAgIG1JbmJvdW5kUXVldWUudGFpbC50eXBlID0gRXZlbnRFbnRyeTo6VFlQRV9TRU5USU5FTDsKKyAgICBtSW5ib3VuZFF1ZXVlLnRhaWwuZXZlbnRUaW1lID0gTE9OR19MT05HX01BWDsKKworICAgIG1LZXlSZXBlYXRTdGF0ZS5sYXN0S2V5RW50cnkgPSBOVUxMOworCisgICAgbUN1cnJlbnRJbnB1dFRhcmdldHNWYWxpZCA9IGZhbHNlOworfQorCitJbnB1dERpc3BhdGNoZXI6On5JbnB1dERpc3BhdGNoZXIoKSB7CisgICAgcmVzZXRLZXlSZXBlYXRMb2NrZWQoKTsKKworICAgIHdoaWxlIChtQ29ubmVjdGlvbnNCeVJlY2VpdmVGZC5zaXplKCkgIT0gMCkgeworICAgICAgICB1bnJlZ2lzdGVySW5wdXRDaGFubmVsKG1Db25uZWN0aW9uc0J5UmVjZWl2ZUZkLnZhbHVlQXQoMCktPmlucHV0Q2hhbm5lbCk7CisgICAgfQorCisgICAgZm9yIChFdmVudEVudHJ5KiBlbnRyeSA9IG1JbmJvdW5kUXVldWUuaGVhZC5uZXh0OyBlbnRyeSAhPSAmIG1JbmJvdW5kUXVldWUudGFpbDsgKSB7CisgICAgICAgIEV2ZW50RW50cnkqIG5leHQgPSBlbnRyeS0+bmV4dDsKKyAgICAgICAgbUFsbG9jYXRvci5yZWxlYXNlRXZlbnRFbnRyeShuZXh0KTsKKyAgICAgICAgZW50cnkgPSBuZXh0OworICAgIH0KK30KKwordm9pZCBJbnB1dERpc3BhdGNoZXI6OmRpc3BhdGNoT25jZSgpIHsKKyAgICBuc2Vjc190IGtleVJlcGVhdFRpbWVvdXQgPSBtUG9saWN5LT5nZXRLZXlSZXBlYXRUaW1lb3V0KCk7CisKKyAgICBib29sIHNraXBQb2xsID0gZmFsc2U7CisgICAgbnNlY3NfdCBjdXJyZW50VGltZTsKKyAgICBuc2Vjc190IG5leHRXYWtldXBUaW1lID0gTE9OR19MT05HX01BWDsKKyAgICB7IC8vIGFjcXVpcmUgbG9jaworICAgICAgICBBdXRvTXV0ZXggX2wobUxvY2spOworICAgICAgICBjdXJyZW50VGltZSA9IG5vdygpOworCisgICAgICAgIC8vIFJlc2V0IHRoZSBrZXkgcmVwZWF0IHRpbWVyIHdoZW5ldmVyIHdlIGRpc2FsbG93IGtleSBldmVudHMsIGV2ZW4gaWYgdGhlIG5leHQgZXZlbnQKKyAgICAgICAgLy8gaXMgbm90IGEga2V5LiAgVGhpcyBpcyB0byBlbnN1cmUgdGhhdCB3ZSBhYm9ydCBhIGtleSByZXBlYXQgaWYgdGhlIGRldmljZSBpcyBqdXN0IGNvbWluZworICAgICAgICAvLyBvdXQgb2Ygc2xlZXAuCisgICAgICAgIC8vIFhYWCB3ZSBzaG91bGQgaGFuZGxlIHJlc2V0dGluZyBpbnB1dCBzdGF0ZSBjb21pbmcgb3V0IG9mIHNsZWVwIG1vcmUgZ2VuZXJhbGx5IGVsc2V3aGVyZQorICAgICAgICBpZiAoa2V5UmVwZWF0VGltZW91dCA8IDApIHsKKyAgICAgICAgICAgIHJlc2V0S2V5UmVwZWF0TG9ja2VkKCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBEZXRlY3QgYW5kIHByb2Nlc3MgdGltZW91dHMgZm9yIGFsbCBjb25uZWN0aW9ucyBhbmQgZGV0ZXJtaW5lIGlmIHRoZXJlIGFyZSBhbnkKKyAgICAgICAgLy8gc3luY2hyb25vdXMgZXZlbnQgZGlzcGF0Y2hlcyBwZW5kaW5nLiAgVGhpcyBzdGVwIGlzIGVudGlyZWx5IG5vbi1pbnRlcnJ1cHRpYmxlLgorICAgICAgICBib29sIGhhc1BlbmRpbmdTeW5jVGFyZ2V0ID0gZmFsc2U7CisgICAgICAgIHNpemVfdCBhY3RpdmVDb25uZWN0aW9uQ291bnQgPSBtQWN0aXZlQ29ubmVjdGlvbnMuc2l6ZSgpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFjdGl2ZUNvbm5lY3Rpb25Db3VudDsgaSsrKSB7CisgICAgICAgICAgICBDb25uZWN0aW9uKiBjb25uZWN0aW9uID0gbUFjdGl2ZUNvbm5lY3Rpb25zLml0ZW1BdChpKTsKKworICAgICAgICAgICAgaWYgKGNvbm5lY3Rpb24tPmhhc1BlbmRpbmdTeW5jVGFyZ2V0KCkpIHsKKyAgICAgICAgICAgICAgICBoYXNQZW5kaW5nU3luY1RhcmdldCA9IHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG5zZWNzX3QgY29ubmVjdGlvblRpbWVvdXRUaW1lICA9IGNvbm5lY3Rpb24tPm5leHRUaW1lb3V0VGltZTsKKyAgICAgICAgICAgIGlmIChjb25uZWN0aW9uVGltZW91dFRpbWUgPD0gY3VycmVudFRpbWUpIHsKKyAgICAgICAgICAgICAgICBtVGltZWRPdXRDb25uZWN0aW9ucy5hZGQoY29ubmVjdGlvbik7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbm5lY3Rpb25UaW1lb3V0VGltZSA8IG5leHRXYWtldXBUaW1lKSB7CisgICAgICAgICAgICAgICAgbmV4dFdha2V1cFRpbWUgPSBjb25uZWN0aW9uVGltZW91dFRpbWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBzaXplX3QgdGltZWRPdXRDb25uZWN0aW9uQ291bnQgPSBtVGltZWRPdXRDb25uZWN0aW9ucy5zaXplKCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdGltZWRPdXRDb25uZWN0aW9uQ291bnQ7IGkrKykgeworICAgICAgICAgICAgQ29ubmVjdGlvbiogY29ubmVjdGlvbiA9IG1UaW1lZE91dENvbm5lY3Rpb25zLml0ZW1BdChpKTsKKyAgICAgICAgICAgIHRpbWVvdXREaXNwYXRjaEN5Y2xlTG9ja2VkKGN1cnJlbnRUaW1lLCBjb25uZWN0aW9uKTsKKyAgICAgICAgICAgIHNraXBQb2xsID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBtVGltZWRPdXRDb25uZWN0aW9ucy5jbGVhcigpOworCisgICAgICAgIC8vIElmIHdlIGRvbid0IGhhdmUgYSBwZW5kaW5nIHN5bmMgdGFyZ2V0LCB0aGVuIHdlIGNhbiBiZWdpbiBkZWxpdmVyaW5nIGEgbmV3IGV2ZW50LgorICAgICAgICAvLyAoT3RoZXJ3aXNlIHdlIHdhaXQgZm9yIGRpc3BhdGNoIHRvIGNvbXBsZXRlIGZvciB0aGF0IHRhcmdldC4pCisgICAgICAgIGlmICghIGhhc1BlbmRpbmdTeW5jVGFyZ2V0KSB7CisgICAgICAgICAgICBpZiAobUluYm91bmRRdWV1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAobUtleVJlcGVhdFN0YXRlLmxhc3RLZXlFbnRyeSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoY3VycmVudFRpbWUgPj0gbUtleVJlcGVhdFN0YXRlLm5leHRSZXBlYXRUaW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzS2V5UmVwZWF0TG9ja2VkSW50ZXJydXB0aWJsZShjdXJyZW50VGltZSwga2V5UmVwZWF0VGltZW91dCk7CisgICAgICAgICAgICAgICAgICAgICAgICBza2lwUG9sbCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobUtleVJlcGVhdFN0YXRlLm5leHRSZXBlYXRUaW1lIDwgbmV4dFdha2V1cFRpbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0V2FrZXVwVGltZSA9IG1LZXlSZXBlYXRTdGF0ZS5uZXh0UmVwZWF0VGltZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gSW5ib3VuZCBxdWV1ZSBoYXMgYXQgbGVhc3Qgb25lIGVudHJ5LgorICAgICAgICAgICAgICAgIC8vIFN0YXJ0IHByb2Nlc3NpbmcgaXQgYnV0IGxlYXZlIGl0IG9uIHRoZSBxdWV1ZSB1bnRpbCBsYXRlciBzbyB0aGF0IHRoZQorICAgICAgICAgICAgICAgIC8vIGlucHV0IHJlYWRlciBjYW4ga2VlcCBhcHBlbmRpbmcgc2FtcGxlcyBvbnRvIGEgbW90aW9uIGV2ZW50IGJldHdlZW4gdGhlCisgICAgICAgICAgICAgICAgLy8gdGltZSB3ZSBzdGFydGVkIHByb2Nlc3NpbmcgaXQgYW5kIHRoZSB0aW1lIHdlIGZpbmFsbHkgZW5xdWV1ZSBkaXNwYXRjaAorICAgICAgICAgICAgICAgIC8vIGVudHJpZXMgZm9yIGl0LgorICAgICAgICAgICAgICAgIEV2ZW50RW50cnkqIGVudHJ5ID0gbUluYm91bmRRdWV1ZS5oZWFkLm5leHQ7CisKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGVudHJ5LT50eXBlKSB7CisgICAgICAgICAgICAgICAgY2FzZSBFdmVudEVudHJ5OjpUWVBFX0NPTkZJR1VSQVRJT05fQ0hBTkdFRDogeworICAgICAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uQ2hhbmdlZEVudHJ5KiB0eXBlZEVudHJ5ID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxDb25maWd1cmF0aW9uQ2hhbmdlZEVudHJ5Kj4oZW50cnkpOworICAgICAgICAgICAgICAgICAgICBwcm9jZXNzQ29uZmlndXJhdGlvbkNoYW5nZWRMb2NrZWRJbnRlcnJ1cHRpYmxlKGN1cnJlbnRUaW1lLCB0eXBlZEVudHJ5KTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgY2FzZSBFdmVudEVudHJ5OjpUWVBFX0tFWTogeworICAgICAgICAgICAgICAgICAgICBLZXlFbnRyeSogdHlwZWRFbnRyeSA9IHN0YXRpY19jYXN0PEtleUVudHJ5Kj4oZW50cnkpOworICAgICAgICAgICAgICAgICAgICBwcm9jZXNzS2V5TG9ja2VkSW50ZXJydXB0aWJsZShjdXJyZW50VGltZSwgdHlwZWRFbnRyeSwga2V5UmVwZWF0VGltZW91dCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGNhc2UgRXZlbnRFbnRyeTo6VFlQRV9NT1RJT046IHsKKyAgICAgICAgICAgICAgICAgICAgTW90aW9uRW50cnkqIHR5cGVkRW50cnkgPSBzdGF0aWNfY2FzdDxNb3Rpb25FbnRyeSo+KGVudHJ5KTsKKyAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc01vdGlvbkxvY2tlZEludGVycnVwdGlibGUoY3VycmVudFRpbWUsIHR5cGVkRW50cnkpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBhc3NlcnQoZmFsc2UpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBEZXF1ZXVlIGFuZCByZWxlYXNlIHRoZSBldmVudCBlbnRyeSB0aGF0IHdlIGp1c3QgcHJvY2Vzc2VkLgorICAgICAgICAgICAgICAgIG1JbmJvdW5kUXVldWUuZGVxdWV1ZShlbnRyeSk7CisgICAgICAgICAgICAgICAgbUFsbG9jYXRvci5yZWxlYXNlRXZlbnRFbnRyeShlbnRyeSk7CisgICAgICAgICAgICAgICAgc2tpcFBvbGwgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gUnVuIGFueSBkZWZlcnJlZCBjb21tYW5kcy4KKyAgICAgICAgc2tpcFBvbGwgfD0gcnVuQ29tbWFuZHNMb2NrZWRJbnRlcnJ1cHRpYmxlKCk7CisKKyAgICAgICAgLy8gV2FrZSB1cCBzeW5jaHJvbml6YXRpb24gd2FpdGVycywgaWYgbmVlZGVkLgorICAgICAgICBpZiAoaXNGdWxseVN5bmNocm9uaXplZExvY2tlZCgpKSB7CisgICAgICAgICAgICBtRnVsbHlTeW5jaHJvbml6ZWRDb25kaXRpb24uYnJvYWRjYXN0KCk7CisgICAgICAgIH0KKyAgICB9IC8vIHJlbGVhc2UgbG9jaworCisgICAgLy8gSWYgd2UgZGlzcGF0Y2hlZCBhbnl0aGluZywgZG9uJ3QgcG9sbCBqdXN0IG5vdy4gIFdhaXQgZm9yIHRoZSBuZXh0IGl0ZXJhdGlvbi4KKyAgICAvLyBDb250ZW50cyBtYXkgaGF2ZSBzaGlmdGVkIGR1cmluZyBmbGlnaHQuCisgICAgaWYgKHNraXBQb2xsKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBXYWl0IGZvciBjYWxsYmFjayBvciB0aW1lb3V0IG9yIHdha2UuCisgICAgbnNlY3NfdCB0aW1lb3V0ID0gbmFub3NlY29uZHNfdG9fbWlsbGlzZWNvbmRzKG5leHRXYWtldXBUaW1lIC0gY3VycmVudFRpbWUpOworICAgIGludDMyX3QgdGltZW91dE1pbGxpcyA9IHRpbWVvdXQgPiBJTlRfTUFYID8gLTEgOiB0aW1lb3V0ID4gMCA/IGludDMyX3QodGltZW91dCkgOiAwOworICAgIG1Qb2xsTG9vcC0+cG9sbE9uY2UodGltZW91dE1pbGxpcyk7Cit9CisKK2Jvb2wgSW5wdXREaXNwYXRjaGVyOjpydW5Db21tYW5kc0xvY2tlZEludGVycnVwdGlibGUoKSB7CisgICAgaWYgKG1Db21tYW5kUXVldWUuaXNFbXB0eSgpKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBkbyB7CisgICAgICAgIENvbW1hbmRFbnRyeSogY29tbWFuZEVudHJ5ID0gbUNvbW1hbmRRdWV1ZS5kZXF1ZXVlQXRIZWFkKCk7CisKKyAgICAgICAgQ29tbWFuZCBjb21tYW5kID0gY29tbWFuZEVudHJ5LT5jb21tYW5kOworICAgICAgICAodGhpcy0+KmNvbW1hbmQpKGNvbW1hbmRFbnRyeSk7IC8vIGNvbW1hbmRzIGFyZSBpbXBsaWNpdGx5ICdMb2NrZWRJbnRlcnJ1cHRpYmxlJworCisgICAgICAgIGNvbW1hbmRFbnRyeS0+Y29ubmVjdGlvbi5jbGVhcigpOworICAgICAgICBtQWxsb2NhdG9yLnJlbGVhc2VDb21tYW5kRW50cnkoY29tbWFuZEVudHJ5KTsKKyAgICB9IHdoaWxlICghIG1Db21tYW5kUXVldWUuaXNFbXB0eSgpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworSW5wdXREaXNwYXRjaGVyOjpDb21tYW5kRW50cnkqIElucHV0RGlzcGF0Y2hlcjo6cG9zdENvbW1hbmRMb2NrZWQoQ29tbWFuZCBjb21tYW5kKSB7CisgICAgQ29tbWFuZEVudHJ5KiBjb21tYW5kRW50cnkgPSBtQWxsb2NhdG9yLm9idGFpbkNvbW1hbmRFbnRyeShjb21tYW5kKTsKKyAgICBtQ29tbWFuZFF1ZXVlLmVucXVldWVBdFRhaWwoY29tbWFuZEVudHJ5KTsKKyAgICByZXR1cm4gY29tbWFuZEVudHJ5OworfQorCit2b2lkIElucHV0RGlzcGF0Y2hlcjo6cHJvY2Vzc0NvbmZpZ3VyYXRpb25DaGFuZ2VkTG9ja2VkSW50ZXJydXB0aWJsZSgKKyAgICAgICAgbnNlY3NfdCBjdXJyZW50VGltZSwgQ29uZmlndXJhdGlvbkNoYW5nZWRFbnRyeSogZW50cnkpIHsKKyNpZiBERUJVR19PVVRCT1VORF9FVkVOVF9ERVRBSUxTCisgICAgTE9HRCgicHJvY2Vzc0NvbmZpZ3VyYXRpb25DaGFuZ2VkIC0gZXZlbnRUaW1lPSVsbGQiLCBlbnRyeS0+ZXZlbnRUaW1lKTsKKyNlbmRpZgorCisgICAgLy8gUmVzZXQga2V5IHJlcGVhdGluZyBpbiBjYXNlIGEga2V5Ym9hcmQgZGV2aWNlIHdhcyBhZGRlZCBvciByZW1vdmVkIG9yIHNvbWV0aGluZy4KKyAgICByZXNldEtleVJlcGVhdExvY2tlZCgpOworCisgICAgbUxvY2sudW5sb2NrKCk7CisKKyAgICBtUG9saWN5LT5ub3RpZnlDb25maWd1cmF0aW9uQ2hhbmdlZChlbnRyeS0+ZXZlbnRUaW1lKTsKKworICAgIG1Mb2NrLmxvY2soKTsKK30KKwordm9pZCBJbnB1dERpc3BhdGNoZXI6OnByb2Nlc3NLZXlMb2NrZWRJbnRlcnJ1cHRpYmxlKAorICAgICAgICBuc2Vjc190IGN1cnJlbnRUaW1lLCBLZXlFbnRyeSogZW50cnksIG5zZWNzX3Qga2V5UmVwZWF0VGltZW91dCkgeworI2lmIERFQlVHX09VVEJPVU5EX0VWRU5UX0RFVEFJTFMKKyAgICBMT0dEKCJwcm9jZXNzS2V5IC0gZXZlbnRUaW1lPSVsbGQsIGRldmljZUlkPTB4JXgsIG5hdHVyZT0weCV4LCBwb2xpY3lGbGFncz0weCV4LCBhY3Rpb249MHgleCwgIgorICAgICAgICAgICAgImZsYWdzPTB4JXgsIGtleUNvZGU9MHgleCwgc2NhbkNvZGU9MHgleCwgbWV0YVN0YXRlPTB4JXgsIGRvd25UaW1lPSVsbGQiLAorICAgICAgICAgICAgZW50cnktPmV2ZW50VGltZSwgZW50cnktPmRldmljZUlkLCBlbnRyeS0+bmF0dXJlLCBlbnRyeS0+cG9saWN5RmxhZ3MsIGVudHJ5LT5hY3Rpb24sCisgICAgICAgICAgICBlbnRyeS0+ZmxhZ3MsIGVudHJ5LT5rZXlDb2RlLCBlbnRyeS0+c2NhbkNvZGUsIGVudHJ5LT5tZXRhU3RhdGUsCisgICAgICAgICAgICBlbnRyeS0+ZG93blRpbWUpOworI2VuZGlmCisKKyAgICBpZiAoZW50cnktPmFjdGlvbiA9PSBLRVlfRVZFTlRfQUNUSU9OX0RPV04gJiYgISBlbnRyeS0+aXNJbmplY3RlZCgpKSB7CisgICAgICAgIGlmIChtS2V5UmVwZWF0U3RhdGUubGFzdEtleUVudHJ5CisgICAgICAgICAgICAgICAgJiYgbUtleVJlcGVhdFN0YXRlLmxhc3RLZXlFbnRyeS0+a2V5Q29kZSA9PSBlbnRyeS0+a2V5Q29kZSkgeworICAgICAgICAgICAgLy8gV2UgaGF2ZSBzZWVuIHR3byBpZGVudGljYWwga2V5IGRvd25zIGluIGEgcm93IHdoaWNoIGluZGljYXRlcyB0aGF0IHRoZSBkZXZpY2UKKyAgICAgICAgICAgIC8vIGRyaXZlciBpcyBhdXRvbWF0aWNhbGx5IGdlbmVyYXRpbmcga2V5IHJlcGVhdHMgaXRzZWxmLiAgV2UgdGFrZSBub3RlIG9mIHRoZQorICAgICAgICAgICAgLy8gcmVwZWF0IGhlcmUsIGJ1dCB3ZSBkaXNhYmxlIG91ciBvd24gbmV4dCBrZXkgcmVwZWF0IHRpbWVyIHNpbmNlIGl0IGlzIGNsZWFyIHRoYXQKKyAgICAgICAgICAgIC8vIHdlIHdpbGwgbm90IG5lZWQgdG8gc3ludGhlc2l6ZSBrZXkgcmVwZWF0cyBvdXJzZWx2ZXMuCisgICAgICAgICAgICBlbnRyeS0+cmVwZWF0Q291bnQgPSBtS2V5UmVwZWF0U3RhdGUubGFzdEtleUVudHJ5LT5yZXBlYXRDb3VudCArIDE7CisgICAgICAgICAgICByZXNldEtleVJlcGVhdExvY2tlZCgpOworICAgICAgICAgICAgbUtleVJlcGVhdFN0YXRlLm5leHRSZXBlYXRUaW1lID0gTE9OR19MT05HX01BWDsgLy8gZG9uJ3QgZ2VuZXJhdGUgcmVwZWF0cyBvdXJzZWx2ZXMKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIE5vdCBhIHJlcGVhdC4gIFNhdmUga2V5IGRvd24gc3RhdGUgaW4gY2FzZSB3ZSBkbyBzZWUgYSByZXBlYXQgbGF0ZXIuCisgICAgICAgICAgICByZXNldEtleVJlcGVhdExvY2tlZCgpOworICAgICAgICAgICAgbUtleVJlcGVhdFN0YXRlLm5leHRSZXBlYXRUaW1lID0gZW50cnktPmV2ZW50VGltZSArIGtleVJlcGVhdFRpbWVvdXQ7CisgICAgICAgIH0KKyAgICAgICAgbUtleVJlcGVhdFN0YXRlLmxhc3RLZXlFbnRyeSA9IGVudHJ5OworICAgICAgICBlbnRyeS0+cmVmQ291bnQgKz0gMTsKKyAgICB9IGVsc2UgeworICAgICAgICByZXNldEtleVJlcGVhdExvY2tlZCgpOworICAgIH0KKworICAgIGlkZW50aWZ5SW5wdXRUYXJnZXRzQW5kRGlzcGF0Y2hLZXlMb2NrZWRJbnRlcnJ1cHRpYmxlKGN1cnJlbnRUaW1lLCBlbnRyeSk7Cit9CisKK3ZvaWQgSW5wdXREaXNwYXRjaGVyOjpwcm9jZXNzS2V5UmVwZWF0TG9ja2VkSW50ZXJydXB0aWJsZSgKKyAgICAgICAgbnNlY3NfdCBjdXJyZW50VGltZSwgbnNlY3NfdCBrZXlSZXBlYXRUaW1lb3V0KSB7CisgICAgS2V5RW50cnkqIGVudHJ5ID0gbUtleVJlcGVhdFN0YXRlLmxhc3RLZXlFbnRyeTsKKworICAgIC8vIFNlYXJjaCB0aGUgaW5ib3VuZCBxdWV1ZSBmb3IgYSBrZXkgdXAgY29ycmVzcG9uZGluZyB0byB0aGlzIGRldmljZS4KKyAgICAvLyBJdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgdG8gZ2VuZXJhdGUgYSBrZXkgcmVwZWF0IGV2ZW50IGlmIHRoZSBrZXkgaXMgYWxyZWFkeSB1cC4KKyAgICBmb3IgKEV2ZW50RW50cnkqIHF1ZXVlZEVudHJ5ID0gbUluYm91bmRRdWV1ZS5oZWFkLm5leHQ7CisgICAgICAgICAgICBxdWV1ZWRFbnRyeSAhPSAmIG1JbmJvdW5kUXVldWUudGFpbDsgcXVldWVkRW50cnkgPSBlbnRyeS0+bmV4dCkgeworICAgICAgICBpZiAocXVldWVkRW50cnktPnR5cGUgPT0gRXZlbnRFbnRyeTo6VFlQRV9LRVkpIHsKKyAgICAgICAgICAgIEtleUVudHJ5KiBxdWV1ZWRLZXlFbnRyeSA9IHN0YXRpY19jYXN0PEtleUVudHJ5Kj4ocXVldWVkRW50cnkpOworICAgICAgICAgICAgaWYgKHF1ZXVlZEtleUVudHJ5LT5kZXZpY2VJZCA9PSBlbnRyeS0+ZGV2aWNlSWQKKyAgICAgICAgICAgICAgICAgICAgJiYgZW50cnktPmFjdGlvbiA9PSBLRVlfRVZFTlRfQUNUSU9OX1VQKSB7CisgICAgICAgICAgICAgICAgcmVzZXRLZXlSZXBlYXRMb2NrZWQoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBTeW50aGVzaXplIGEga2V5IHJlcGVhdCBhZnRlciB0aGUgcmVwZWF0IHRpbWVvdXQgZXhwaXJlZC4KKyAgICAvLyBSZXVzZSB0aGUgcmVwZWF0ZWQga2V5IGVudHJ5IGlmIGl0IGlzIG90aGVyd2lzZSB1bnJlZmVyZW5jZWQuCisgICAgdWludDMyX3QgcG9saWN5RmxhZ3MgPSBlbnRyeS0+cG9saWN5RmxhZ3MgJiBQT0xJQ1lfRkxBR19SQVdfTUFTSzsKKyAgICBpZiAoZW50cnktPnJlZkNvdW50ID09IDEpIHsKKyAgICAgICAgZW50cnktPmV2ZW50VGltZSA9IGN1cnJlbnRUaW1lOworICAgICAgICBlbnRyeS0+cG9saWN5RmxhZ3MgPSBwb2xpY3lGbGFnczsKKyAgICAgICAgZW50cnktPnJlcGVhdENvdW50ICs9IDE7CisgICAgfSBlbHNlIHsKKyAgICAgICAgS2V5RW50cnkqIG5ld0VudHJ5ID0gbUFsbG9jYXRvci5vYnRhaW5LZXlFbnRyeShjdXJyZW50VGltZSwKKyAgICAgICAgICAgICAgICBlbnRyeS0+ZGV2aWNlSWQsIGVudHJ5LT5uYXR1cmUsIHBvbGljeUZsYWdzLAorICAgICAgICAgICAgICAgIGVudHJ5LT5hY3Rpb24sIGVudHJ5LT5mbGFncywgZW50cnktPmtleUNvZGUsIGVudHJ5LT5zY2FuQ29kZSwKKyAgICAgICAgICAgICAgICBlbnRyeS0+bWV0YVN0YXRlLCBlbnRyeS0+cmVwZWF0Q291bnQgKyAxLCBlbnRyeS0+ZG93blRpbWUpOworCisgICAgICAgIG1LZXlSZXBlYXRTdGF0ZS5sYXN0S2V5RW50cnkgPSBuZXdFbnRyeTsKKyAgICAgICAgbUFsbG9jYXRvci5yZWxlYXNlS2V5RW50cnkoZW50cnkpOworCisgICAgICAgIGVudHJ5ID0gbmV3RW50cnk7CisgICAgfQorCisgICAgaWYgKGVudHJ5LT5yZXBlYXRDb3VudCA9PSAxKSB7CisgICAgICAgIGVudHJ5LT5mbGFncyB8PSBLRVlfRVZFTlRfRkxBR19MT05HX1BSRVNTOworICAgIH0KKworICAgIG1LZXlSZXBlYXRTdGF0ZS5uZXh0UmVwZWF0VGltZSA9IGN1cnJlbnRUaW1lICsga2V5UmVwZWF0VGltZW91dDsKKworI2lmIERFQlVHX09VVEJPVU5EX0VWRU5UX0RFVEFJTFMKKyAgICBMT0dEKCJwcm9jZXNzS2V5UmVwZWF0IC0gZXZlbnRUaW1lPSVsbGQsIGRldmljZUlkPTB4JXgsIG5hdHVyZT0weCV4LCBwb2xpY3lGbGFncz0weCV4LCAiCisgICAgICAgICAgICAiYWN0aW9uPTB4JXgsIGZsYWdzPTB4JXgsIGtleUNvZGU9MHgleCwgc2NhbkNvZGU9MHgleCwgbWV0YVN0YXRlPTB4JXgsICIKKyAgICAgICAgICAgICJyZXBlYXRDb3VudD0lZCwgZG93blRpbWU9JWxsZCIsCisgICAgICAgICAgICBlbnRyeS0+ZXZlbnRUaW1lLCBlbnRyeS0+ZGV2aWNlSWQsIGVudHJ5LT5uYXR1cmUsIGVudHJ5LT5wb2xpY3lGbGFncywKKyAgICAgICAgICAgIGVudHJ5LT5hY3Rpb24sIGVudHJ5LT5mbGFncywgZW50cnktPmtleUNvZGUsIGVudHJ5LT5zY2FuQ29kZSwgZW50cnktPm1ldGFTdGF0ZSwKKyAgICAgICAgICAgIGVudHJ5LT5yZXBlYXRDb3VudCwgZW50cnktPmRvd25UaW1lKTsKKyNlbmRpZgorCisgICAgaWRlbnRpZnlJbnB1dFRhcmdldHNBbmREaXNwYXRjaEtleUxvY2tlZEludGVycnVwdGlibGUoY3VycmVudFRpbWUsIGVudHJ5KTsKK30KKwordm9pZCBJbnB1dERpc3BhdGNoZXI6OnByb2Nlc3NNb3Rpb25Mb2NrZWRJbnRlcnJ1cHRpYmxlKAorICAgICAgICBuc2Vjc190IGN1cnJlbnRUaW1lLCBNb3Rpb25FbnRyeSogZW50cnkpIHsKKyNpZiBERUJVR19PVVRCT1VORF9FVkVOVF9ERVRBSUxTCisgICAgTE9HRCgicHJvY2Vzc01vdGlvbiAtIGV2ZW50VGltZT0lbGxkLCBkZXZpY2VJZD0weCV4LCBuYXR1cmU9MHgleCwgcG9saWN5RmxhZ3M9MHgleCwgYWN0aW9uPTB4JXgsICIKKyAgICAgICAgICAgICJtZXRhU3RhdGU9MHgleCwgZWRnZUZsYWdzPTB4JXgsIHhQcmVjaXNpb249JWYsIHlQcmVjaXNpb249JWYsIGRvd25UaW1lPSVsbGQiLAorICAgICAgICAgICAgZW50cnktPmV2ZW50VGltZSwgZW50cnktPmRldmljZUlkLCBlbnRyeS0+bmF0dXJlLCBlbnRyeS0+cG9saWN5RmxhZ3MsIGVudHJ5LT5hY3Rpb24sCisgICAgICAgICAgICBlbnRyeS0+bWV0YVN0YXRlLCBlbnRyeS0+ZWRnZUZsYWdzLCBlbnRyeS0+eFByZWNpc2lvbiwgZW50cnktPnlQcmVjaXNpb24sCisgICAgICAgICAgICBlbnRyeS0+ZG93blRpbWUpOworCisgICAgLy8gUHJpbnQgdGhlIG1vc3QgcmVjZW50IHNhbXBsZSB0aGF0IHdlIGhhdmUgYXZhaWxhYmxlLCB0aGlzIG1heSBjaGFuZ2UgZHVlIHRvIGJhdGNoaW5nLgorICAgIHNpemVfdCBzYW1wbGVDb3VudCA9IDE7CisgICAgTW90aW9uU2FtcGxlKiBzYW1wbGUgPSAmIGVudHJ5LT5maXJzdFNhbXBsZTsKKyAgICBmb3IgKDsgc2FtcGxlLT5uZXh0ICE9IE5VTEw7IHNhbXBsZSA9IHNhbXBsZS0+bmV4dCkgeworICAgICAgICBzYW1wbGVDb3VudCArPSAxOworICAgIH0KKyAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgZW50cnktPnBvaW50ZXJDb3VudDsgaSsrKSB7CisgICAgICAgIExPR0QoIiAgUG9pbnRlciAlZDogaWQ9JWQsIHg9JWYsIHk9JWYsIHByZXNzdXJlPSVmLCBzaXplPSVmIiwKKyAgICAgICAgICAgICAgICBpLCBlbnRyeS0+cG9pbnRlcklkc1tpXSwKKyAgICAgICAgICAgICAgICBzYW1wbGUtPnBvaW50ZXJDb29yZHNbaV0ueCwKKyAgICAgICAgICAgICAgICBzYW1wbGUtPnBvaW50ZXJDb29yZHNbaV0ueSwKKyAgICAgICAgICAgICAgICBzYW1wbGUtPnBvaW50ZXJDb29yZHNbaV0ucHJlc3N1cmUsCisgICAgICAgICAgICAgICAgc2FtcGxlLT5wb2ludGVyQ29vcmRzW2ldLnNpemUpOworICAgIH0KKworICAgIC8vIEtlZXAgaW4gbWluZCB0aGF0IGR1ZSB0byBiYXRjaGluZywgaXQgaXMgcG9zc2libGUgZm9yIHRoZSBudW1iZXIgb2Ygc2FtcGxlcyBhY3R1YWxseQorICAgIC8vIGRpc3BhdGNoZWQgdG8gY2hhbmdlIGJlZm9yZSB0aGUgYXBwbGljYXRpb24gZmluYWxseSBjb25zdW1lZCB0aGVtLgorICAgIGlmIChlbnRyeS0+YWN0aW9uID09IE1PVElPTl9FVkVOVF9BQ1RJT05fTU9WRSkgeworICAgICAgICBMT0dEKCIgIC4uLiBUb3RhbCBtb3ZlbWVudCBzYW1wbGVzIGN1cnJlbnRseSBiYXRjaGVkICVkIC4uLiIsIHNhbXBsZUNvdW50KTsKKyAgICB9CisjZW5kaWYKKworICAgIGlkZW50aWZ5SW5wdXRUYXJnZXRzQW5kRGlzcGF0Y2hNb3Rpb25Mb2NrZWRJbnRlcnJ1cHRpYmxlKGN1cnJlbnRUaW1lLCBlbnRyeSk7Cit9CisKK3ZvaWQgSW5wdXREaXNwYXRjaGVyOjppZGVudGlmeUlucHV0VGFyZ2V0c0FuZERpc3BhdGNoS2V5TG9ja2VkSW50ZXJydXB0aWJsZSgKKyAgICAgICAgbnNlY3NfdCBjdXJyZW50VGltZSwgS2V5RW50cnkqIGVudHJ5KSB7CisjaWYgREVCVUdfRElTUEFUQ0hfQ1lDTEUKKyAgICBMT0dEKCJpZGVudGlmeUlucHV0VGFyZ2V0c0FuZERpc3BhdGNoS2V5Iik7CisjZW5kaWYKKworICAgIGVudHJ5LT5kaXNwYXRjaEluUHJvZ3Jlc3MgPSB0cnVlOworICAgIG1DdXJyZW50SW5wdXRUYXJnZXRzVmFsaWQgPSBmYWxzZTsKKyAgICBtTG9jay51bmxvY2soKTsKKworICAgIG1SZXVzYWJsZUtleUV2ZW50LmluaXRpYWxpemUoZW50cnktPmRldmljZUlkLCBlbnRyeS0+bmF0dXJlLCBlbnRyeS0+YWN0aW9uLCBlbnRyeS0+ZmxhZ3MsCisgICAgICAgICAgICBlbnRyeS0+a2V5Q29kZSwgZW50cnktPnNjYW5Db2RlLCBlbnRyeS0+bWV0YVN0YXRlLCBlbnRyeS0+cmVwZWF0Q291bnQsCisgICAgICAgICAgICBlbnRyeS0+ZG93blRpbWUsIGVudHJ5LT5ldmVudFRpbWUpOworCisgICAgbUN1cnJlbnRJbnB1dFRhcmdldHMuY2xlYXIoKTsKKyAgICBpbnQzMl90IGluamVjdGlvblJlc3VsdCA9IG1Qb2xpY3ktPndhaXRGb3JLZXlFdmVudFRhcmdldHMoJiBtUmV1c2FibGVLZXlFdmVudCwKKyAgICAgICAgICAgIGVudHJ5LT5wb2xpY3lGbGFncywgZW50cnktPmluamVjdG9yUGlkLCBlbnRyeS0+aW5qZWN0b3JVaWQsCisgICAgICAgICAgICBtQ3VycmVudElucHV0VGFyZ2V0cyk7CisKKyAgICBtTG9jay5sb2NrKCk7CisgICAgbUN1cnJlbnRJbnB1dFRhcmdldHNWYWxpZCA9IHRydWU7CisKKyAgICBzZXRJbmplY3Rpb25SZXN1bHRMb2NrZWQoZW50cnksIGluamVjdGlvblJlc3VsdCk7CisKKyAgICBpZiAoaW5qZWN0aW9uUmVzdWx0ID09IElOUFVUX0VWRU5UX0lOSkVDVElPTl9TVUNDRUVERUQpIHsKKyAgICAgICAgZGlzcGF0Y2hFdmVudFRvQ3VycmVudElucHV0VGFyZ2V0c0xvY2tlZChjdXJyZW50VGltZSwgZW50cnksIGZhbHNlKTsKKyAgICB9Cit9CisKK3ZvaWQgSW5wdXREaXNwYXRjaGVyOjppZGVudGlmeUlucHV0VGFyZ2V0c0FuZERpc3BhdGNoTW90aW9uTG9ja2VkSW50ZXJydXB0aWJsZSgKKyAgICAgICAgbnNlY3NfdCBjdXJyZW50VGltZSwgTW90aW9uRW50cnkqIGVudHJ5KSB7CisjaWYgREVCVUdfRElTUEFUQ0hfQ1lDTEUKKyAgICBMT0dEKCJpZGVudGlmeUlucHV0VGFyZ2V0c0FuZERpc3BhdGNoTW90aW9uIik7CisjZW5kaWYKKworICAgIGVudHJ5LT5kaXNwYXRjaEluUHJvZ3Jlc3MgPSB0cnVlOworICAgIG1DdXJyZW50SW5wdXRUYXJnZXRzVmFsaWQgPSBmYWxzZTsKKyAgICBtTG9jay51bmxvY2soKTsKKworICAgIG1SZXVzYWJsZU1vdGlvbkV2ZW50LmluaXRpYWxpemUoZW50cnktPmRldmljZUlkLCBlbnRyeS0+bmF0dXJlLCBlbnRyeS0+YWN0aW9uLAorICAgICAgICAgICAgZW50cnktPmVkZ2VGbGFncywgZW50cnktPm1ldGFTdGF0ZSwKKyAgICAgICAgICAgIDAsIDAsIGVudHJ5LT54UHJlY2lzaW9uLCBlbnRyeS0+eVByZWNpc2lvbiwKKyAgICAgICAgICAgIGVudHJ5LT5kb3duVGltZSwgZW50cnktPmV2ZW50VGltZSwgZW50cnktPnBvaW50ZXJDb3VudCwgZW50cnktPnBvaW50ZXJJZHMsCisgICAgICAgICAgICBlbnRyeS0+Zmlyc3RTYW1wbGUucG9pbnRlckNvb3Jkcyk7CisKKyAgICBtQ3VycmVudElucHV0VGFyZ2V0cy5jbGVhcigpOworICAgIGludDMyX3QgaW5qZWN0aW9uUmVzdWx0ID0gbVBvbGljeS0+d2FpdEZvck1vdGlvbkV2ZW50VGFyZ2V0cygmIG1SZXVzYWJsZU1vdGlvbkV2ZW50LAorICAgICAgICAgICAgZW50cnktPnBvbGljeUZsYWdzLCBlbnRyeS0+aW5qZWN0b3JQaWQsIGVudHJ5LT5pbmplY3RvclVpZCwKKyAgICAgICAgICAgIG1DdXJyZW50SW5wdXRUYXJnZXRzKTsKKworICAgIG1Mb2NrLmxvY2soKTsKKyAgICBtQ3VycmVudElucHV0VGFyZ2V0c1ZhbGlkID0gdHJ1ZTsKKworICAgIHNldEluamVjdGlvblJlc3VsdExvY2tlZChlbnRyeSwgaW5qZWN0aW9uUmVzdWx0KTsKKworICAgIGlmIChpbmplY3Rpb25SZXN1bHQgPT0gSU5QVVRfRVZFTlRfSU5KRUNUSU9OX1NVQ0NFRURFRCkgeworICAgICAgICBkaXNwYXRjaEV2ZW50VG9DdXJyZW50SW5wdXRUYXJnZXRzTG9ja2VkKGN1cnJlbnRUaW1lLCBlbnRyeSwgZmFsc2UpOworICAgIH0KK30KKwordm9pZCBJbnB1dERpc3BhdGNoZXI6OmRpc3BhdGNoRXZlbnRUb0N1cnJlbnRJbnB1dFRhcmdldHNMb2NrZWQobnNlY3NfdCBjdXJyZW50VGltZSwKKyAgICAgICAgRXZlbnRFbnRyeSogZXZlbnRFbnRyeSwgYm9vbCByZXN1bWVXaXRoQXBwZW5kZWRNb3Rpb25TYW1wbGUpIHsKKyNpZiBERUJVR19ESVNQQVRDSF9DWUNMRQorICAgIExPR0QoImRpc3BhdGNoRXZlbnRUb0N1cnJlbnRJbnB1dFRhcmdldHMgLSAiCisgICAgICAgICAgICAicmVzdW1lV2l0aEFwcGVuZGVkTW90aW9uU2FtcGxlPSVzIiwKKyAgICAgICAgICAgIHJlc3VtZVdpdGhBcHBlbmRlZE1vdGlvblNhbXBsZSA/ICJ0cnVlIiA6ICJmYWxzZSIpOworI2VuZGlmCisKKyAgICBhc3NlcnQoZXZlbnRFbnRyeS0+ZGlzcGF0Y2hJblByb2dyZXNzKTsgLy8gc2hvdWxkIGFscmVhZHkgaGF2ZSBiZWVuIHNldCB0byB0cnVlCisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1DdXJyZW50SW5wdXRUYXJnZXRzLnNpemUoKTsgaSsrKSB7CisgICAgICAgIGNvbnN0IElucHV0VGFyZ2V0JiBpbnB1dFRhcmdldCA9IG1DdXJyZW50SW5wdXRUYXJnZXRzLml0ZW1BdChpKTsKKworICAgICAgICBzc2l6ZV90IGNvbm5lY3Rpb25JbmRleCA9IG1Db25uZWN0aW9uc0J5UmVjZWl2ZUZkLmluZGV4T2ZLZXkoCisgICAgICAgICAgICAgICAgaW5wdXRUYXJnZXQuaW5wdXRDaGFubmVsLT5nZXRSZWNlaXZlUGlwZUZkKCkpOworICAgICAgICBpZiAoY29ubmVjdGlvbkluZGV4ID49IDApIHsKKyAgICAgICAgICAgIHNwPENvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBtQ29ubmVjdGlvbnNCeVJlY2VpdmVGZC52YWx1ZUF0KGNvbm5lY3Rpb25JbmRleCk7CisgICAgICAgICAgICBwcmVwYXJlRGlzcGF0Y2hDeWNsZUxvY2tlZChjdXJyZW50VGltZSwgY29ubmVjdGlvbiwgZXZlbnRFbnRyeSwgJiBpbnB1dFRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgcmVzdW1lV2l0aEFwcGVuZGVkTW90aW9uU2FtcGxlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIExPR1coIkZyYW1ld29yayByZXF1ZXN0ZWQgZGVsaXZlcnkgb2YgYW4gaW5wdXQgZXZlbnQgdG8gY2hhbm5lbCAnJXMnIGJ1dCBpdCAiCisgICAgICAgICAgICAgICAgICAgICJpcyBub3QgcmVnaXN0ZXJlZCB3aXRoIHRoZSBpbnB1dCBkaXNwYXRjaGVyLiIsCisgICAgICAgICAgICAgICAgICAgIGlucHV0VGFyZ2V0LmlucHV0Q2hhbm5lbC0+Z2V0TmFtZSgpLnN0cmluZygpKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBJbnB1dERpc3BhdGNoZXI6OnByZXBhcmVEaXNwYXRjaEN5Y2xlTG9ja2VkKG5zZWNzX3QgY3VycmVudFRpbWUsCisgICAgICAgIGNvbnN0IHNwPENvbm5lY3Rpb24+JiBjb25uZWN0aW9uLCBFdmVudEVudHJ5KiBldmVudEVudHJ5LCBjb25zdCBJbnB1dFRhcmdldCogaW5wdXRUYXJnZXQsCisgICAgICAgIGJvb2wgcmVzdW1lV2l0aEFwcGVuZGVkTW90aW9uU2FtcGxlKSB7CisjaWYgREVCVUdfRElTUEFUQ0hfQ1lDTEUKKyAgICBMT0dEKCJjaGFubmVsICclcycgfiBwcmVwYXJlRGlzcGF0Y2hDeWNsZSAtIGZsYWdzPSVkLCB0aW1lb3V0PSVsbGRucywgIgorICAgICAgICAgICAgInhPZmZzZXQ9JWYsIHlPZmZzZXQ9JWYsIHJlc3VtZVdpdGhBcHBlbmRlZE1vdGlvblNhbXBsZT0lcyIsCisgICAgICAgICAgICBjb25uZWN0aW9uLT5nZXRJbnB1dENoYW5uZWxOYW1lKCksIGlucHV0VGFyZ2V0LT5mbGFncywgaW5wdXRUYXJnZXQtPnRpbWVvdXQsCisgICAgICAgICAgICBpbnB1dFRhcmdldC0+eE9mZnNldCwgaW5wdXRUYXJnZXQtPnlPZmZzZXQsCisgICAgICAgICAgICByZXN1bWVXaXRoQXBwZW5kZWRNb3Rpb25TYW1wbGUgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKKyNlbmRpZgorCisgICAgLy8gU2tpcCB0aGlzIGV2ZW50IGlmIHRoZSBjb25uZWN0aW9uIHN0YXR1cyBpcyBub3Qgbm9ybWFsLgorICAgIC8vIFdlIGRvbid0IHdhbnQgdG8gcXVldWUgb3V0Ym91bmQgZXZlbnRzIGF0IGFsbCBpZiB0aGUgY29ubmVjdGlvbiBpcyBicm9rZW4gb3IKKyAgICAvLyBub3QgcmVzcG9uZGluZy4KKyAgICBpZiAoY29ubmVjdGlvbi0+c3RhdHVzICE9IENvbm5lY3Rpb246OlNUQVRVU19OT1JNQUwpIHsKKyAgICAgICAgTE9HVigiY2hhbm5lbCAnJXMnIH4gRHJvcHBpbmcgZXZlbnQgYmVjYXVzZSB0aGUgY2hhbm5lbCBzdGF0dXMgaXMgJXMiLAorICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24tPmdldFN0YXR1c0xhYmVsKCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gUmVzdW1lIHRoZSBkaXNwYXRjaCBjeWNsZSB3aXRoIGEgZnJlc2hseSBhcHBlbmRlZCBtb3Rpb24gc2FtcGxlLgorICAgIC8vIEZpcnN0IHdlIGNoZWNrIHRoYXQgdGhlIGxhc3QgZGlzcGF0Y2ggZW50cnkgaW4gdGhlIG91dGJvdW5kIHF1ZXVlIGlzIGZvciB0aGUgc2FtZQorICAgIC8vIG1vdGlvbiBldmVudCB0byB3aGljaCB3ZSBhcHBlbmRlZCB0aGUgbW90aW9uIHNhbXBsZS4gIElmIHdlIGZpbmQgc3VjaCBhIGRpc3BhdGNoCisgICAgLy8gZW50cnksIGFuZCBpZiBpdCBpcyBjdXJyZW50bHkgaW4gcHJvZ3Jlc3MgdGhlbiB3ZSB0cnkgdG8gc3RyZWFtIHRoZSBuZXcgc2FtcGxlLgorICAgIGJvb2wgd2FzRW1wdHkgPSBjb25uZWN0aW9uLT5vdXRib3VuZFF1ZXVlLmlzRW1wdHkoKTsKKworICAgIGlmICghIHdhc0VtcHR5ICYmIHJlc3VtZVdpdGhBcHBlbmRlZE1vdGlvblNhbXBsZSkgeworICAgICAgICBEaXNwYXRjaEVudHJ5KiBtb3Rpb25FdmVudERpc3BhdGNoRW50cnkgPQorICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24tPmZpbmRRdWV1ZWREaXNwYXRjaEVudHJ5Rm9yRXZlbnQoZXZlbnRFbnRyeSk7CisgICAgICAgIGlmIChtb3Rpb25FdmVudERpc3BhdGNoRW50cnkpIHsKKyAgICAgICAgICAgIC8vIElmIHRoZSBkaXNwYXRjaCBlbnRyeSBpcyBub3QgaW4gcHJvZ3Jlc3MsIHRoZW4gd2UgbXVzdCBiZSBidXN5IGRpc3BhdGNoaW5nIGFuCisgICAgICAgICAgICAvLyBlYXJsaWVyIGV2ZW50LiAgTm90IGEgcHJvYmxlbSwgdGhlIG1vdGlvbiBldmVudCBpcyBvbiB0aGUgb3V0Ym91bmQgcXVldWUgYW5kIHdpbGwKKyAgICAgICAgICAgIC8vIGJlIGRpc3BhdGNoZWQgbGF0ZXIuCisgICAgICAgICAgICBpZiAoISBtb3Rpb25FdmVudERpc3BhdGNoRW50cnktPmluUHJvZ3Jlc3MpIHsKKyNpZiBERUJVR19CQVRDSElORworICAgICAgICAgICAgICAgIExPR0QoImNoYW5uZWwgJyVzJyB+IE5vdCBzdHJlYW1pbmcgYmVjYXVzZSB0aGUgbW90aW9uIGV2ZW50IGhhcyAiCisgICAgICAgICAgICAgICAgICAgICAgICAibm90IHlldCBiZWVuIGRpc3BhdGNoZWQuICAiCisgICAgICAgICAgICAgICAgICAgICAgICAiKFdhaXRpbmcgZm9yIGVhcmxpZXIgZXZlbnRzIHRvIGJlIGNvbnN1bWVkLikiLAorICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+Z2V0SW5wdXRDaGFubmVsTmFtZSgpKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gSWYgdGhlIGRpc3BhdGNoIGVudHJ5IGlzIGluIHByb2dyZXNzIGJ1dCBpdCBhbHJlYWR5IGhhcyBhIHRhaWwgb2YgcGVuZGluZworICAgICAgICAgICAgLy8gbW90aW9uIHNhbXBsZXMsIHRoZW4gaXQgbXVzdCBtZWFuIHRoYXQgdGhlIHNoYXJlZCBtZW1vcnkgYnVmZmVyIGZpbGxlZCB1cC4KKyAgICAgICAgICAgIC8vIE5vdCBhIHByb2JsZW0sIHdoZW4gdGhpcyBkaXNwYXRjaCBjeWNsZSBpcyBmaW5pc2hlZCwgd2Ugd2lsbCBldmVudHVhbGx5IHN0YXJ0CisgICAgICAgICAgICAvLyBhIG5ldyBkaXNwYXRjaCBjeWNsZSB0byBwcm9jZXNzIHRoZSB0YWlsIGFuZCB0aGF0IHRhaWwgaW5jbHVkZXMgdGhlIG5ld2x5CisgICAgICAgICAgICAvLyBhcHBlbmRlZCBtb3Rpb24gc2FtcGxlLgorICAgICAgICAgICAgaWYgKG1vdGlvbkV2ZW50RGlzcGF0Y2hFbnRyeS0+dGFpbE1vdGlvblNhbXBsZSkgeworI2lmIERFQlVHX0JBVENISU5HCisgICAgICAgICAgICAgICAgTE9HRCgiY2hhbm5lbCAnJXMnIH4gTm90IHN0cmVhbWluZyBiZWNhdXNlIG5vIG5ldyBzYW1wbGVzIGNhbiAiCisgICAgICAgICAgICAgICAgICAgICAgICAiYmUgYXBwZW5kZWQgdG8gdGhlIG1vdGlvbiBldmVudCBpbiB0aGlzIGRpc3BhdGNoIGN5Y2xlLiAgIgorICAgICAgICAgICAgICAgICAgICAgICAgIihXYWl0aW5nIGZvciBuZXh0IGRpc3BhdGNoIGN5Y2xlIHRvIHN0YXJ0LikiLAorICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+Z2V0SW5wdXRDaGFubmVsTmFtZSgpKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gVGhlIGRpc3BhdGNoIGVudHJ5IGlzIGluIHByb2dyZXNzIGFuZCBpcyBzdGlsbCBwb3RlbnRpYWxseSBvcGVuIGZvciBzdHJlYW1pbmcuCisgICAgICAgICAgICAvLyBUcnkgdG8gc3RyZWFtIHRoZSBuZXcgbW90aW9uIHNhbXBsZS4gIFRoaXMgbWlnaHQgZmFpbCBpZiB0aGUgY29uc3VtZXIgaGFzIGFscmVhZHkKKyAgICAgICAgICAgIC8vIGNvbnN1bWVkIHRoZSBtb3Rpb24gZXZlbnQgKG9yIGlmIHRoZSBjaGFubmVsIGlzIGJyb2tlbikuCisgICAgICAgICAgICBNb3Rpb25TYW1wbGUqIGFwcGVuZGVkTW90aW9uU2FtcGxlID0gc3RhdGljX2Nhc3Q8TW90aW9uRW50cnkqPihldmVudEVudHJ5KS0+bGFzdFNhbXBsZTsKKyAgICAgICAgICAgIHN0YXR1c190IHN0YXR1cyA9IGNvbm5lY3Rpb24tPmlucHV0UHVibGlzaGVyLmFwcGVuZE1vdGlvblNhbXBsZSgKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kZWRNb3Rpb25TYW1wbGUtPmV2ZW50VGltZSwgYXBwZW5kZWRNb3Rpb25TYW1wbGUtPnBvaW50ZXJDb29yZHMpOworICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSBPSykgeworI2lmIERFQlVHX0JBVENISU5HCisgICAgICAgICAgICAgICAgTE9HRCgiY2hhbm5lbCAnJXMnIH4gU3VjY2Vzc2Z1bGx5IHN0cmVhbWVkIG5ldyBtb3Rpb24gc2FtcGxlLiIsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLT5nZXRJbnB1dENoYW5uZWxOYW1lKCkpOworI2VuZGlmCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisjaWYgREVCVUdfQkFUQ0hJTkcKKyAgICAgICAgICAgIGlmIChzdGF0dXMgPT0gTk9fTUVNT1JZKSB7CisgICAgICAgICAgICAgICAgTE9HRCgiY2hhbm5lbCAnJXMnIH4gQ291bGQgbm90IGFwcGVuZCBtb3Rpb24gc2FtcGxlIHRvIGN1cnJlbnRseSAiCisgICAgICAgICAgICAgICAgICAgICAgICAiZGlzcGF0Y2hlZCBtb3ZlIGV2ZW50IGJlY2F1c2UgdGhlIHNoYXJlZCBtZW1vcnkgYnVmZmVyIGlzIGZ1bGwuICAiCisgICAgICAgICAgICAgICAgICAgICAgICAiKFdhaXRpbmcgZm9yIG5leHQgZGlzcGF0Y2ggY3ljbGUgdG8gc3RhcnQuKSIsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLT5nZXRJbnB1dENoYW5uZWxOYW1lKCkpOworICAgICAgICAgICAgfSBlbHNlIGlmIChzdGF0dXMgPT0gc3RhdHVzX3QoRkFJTEVEX1RSQU5TQUNUSU9OKSkgeworICAgICAgICAgICAgICAgIExPR0QoImNoYW5uZWwgJyVzJyB+IENvdWxkIG5vdCBhcHBlbmQgbW90aW9uIHNhbXBsZSB0byBjdXJyZW50bHkgIgorICAgICAgICAgICAgICAgICAgICAgICAgImRpc3BhdGNoZWQgbW92ZSBldmVudCBiZWNhdXNlIHRoZSBldmVudCBoYXMgYWxyZWFkeSBiZWVuIGNvbnN1bWVkLiAgIgorICAgICAgICAgICAgICAgICAgICAgICAgIihXYWl0aW5nIGZvciBuZXh0IGRpc3BhdGNoIGN5Y2xlIHRvIHN0YXJ0LikiLAorICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+Z2V0SW5wdXRDaGFubmVsTmFtZSgpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgTE9HRCgiY2hhbm5lbCAnJXMnIH4gQ291bGQgbm90IGFwcGVuZCBtb3Rpb24gc2FtcGxlIHRvIGN1cnJlbnRseSAiCisgICAgICAgICAgICAgICAgICAgICAgICAiZGlzcGF0Y2hlZCBtb3ZlIGV2ZW50IGR1ZSB0byBhbiBlcnJvciwgc3RhdHVzPSVkLiAgIgorICAgICAgICAgICAgICAgICAgICAgICAgIihXYWl0aW5nIGZvciBuZXh0IGRpc3BhdGNoIGN5Y2xlIHRvIHN0YXJ0LikiLAorICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+Z2V0SW5wdXRDaGFubmVsTmFtZSgpLCBzdGF0dXMpOworICAgICAgICAgICAgfQorI2VuZGlmCisgICAgICAgICAgICAvLyBGYWlsZWQgdG8gc3RyZWFtLiAgU3RhcnQgYSBuZXcgdGFpbCBvZiBwZW5kaW5nIG1vdGlvbiBzYW1wbGVzIHRvIGRpc3BhdGNoCisgICAgICAgICAgICAvLyBpbiB0aGUgbmV4dCBjeWNsZS4KKyAgICAgICAgICAgIG1vdGlvbkV2ZW50RGlzcGF0Y2hFbnRyeS0+dGFpbE1vdGlvblNhbXBsZSA9IGFwcGVuZGVkTW90aW9uU2FtcGxlOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gVGhpcyBpcyBhIG5ldyBldmVudC4KKyAgICAvLyBFbnF1ZXVlIGEgbmV3IGRpc3BhdGNoIGVudHJ5IG9udG8gdGhlIG91dGJvdW5kIHF1ZXVlIGZvciB0aGlzIGNvbm5lY3Rpb24uCisgICAgRGlzcGF0Y2hFbnRyeSogZGlzcGF0Y2hFbnRyeSA9IG1BbGxvY2F0b3Iub2J0YWluRGlzcGF0Y2hFbnRyeShldmVudEVudHJ5KTsgLy8gaW5jcmVtZW50cyByZWYKKyAgICBkaXNwYXRjaEVudHJ5LT50YXJnZXRGbGFncyA9IGlucHV0VGFyZ2V0LT5mbGFnczsKKyAgICBkaXNwYXRjaEVudHJ5LT54T2Zmc2V0ID0gaW5wdXRUYXJnZXQtPnhPZmZzZXQ7CisgICAgZGlzcGF0Y2hFbnRyeS0+eU9mZnNldCA9IGlucHV0VGFyZ2V0LT55T2Zmc2V0OworICAgIGRpc3BhdGNoRW50cnktPnRpbWVvdXQgPSBpbnB1dFRhcmdldC0+dGltZW91dDsKKyAgICBkaXNwYXRjaEVudHJ5LT5pblByb2dyZXNzID0gZmFsc2U7CisgICAgZGlzcGF0Y2hFbnRyeS0+aGVhZE1vdGlvblNhbXBsZSA9IE5VTEw7CisgICAgZGlzcGF0Y2hFbnRyeS0+dGFpbE1vdGlvblNhbXBsZSA9IE5VTEw7CisKKyAgICAvLyBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgd2UgY291bGQgbm90IHN0cmVhbSBhIG5ldyBtb3Rpb24gc2FtcGxlIGJlY2F1c2UgdGhlIGNvbnN1bWVyIGhhcworICAgIC8vIGFscmVhZHkgY29uc3VtZWQgdGhlIG1vdGlvbiBldmVudCAob3RoZXJ3aXNlIHRoZSBjb3JyZXNwb25kaW5nIGRpc3BhdGNoIGVudHJ5IHdvdWxkCisgICAgLy8gc3RpbGwgYmUgaW4gdGhlIG91dGJvdW5kIHF1ZXVlIGZvciB0aGlzIGNvbm5lY3Rpb24pLiAgV2Ugc2V0IHRoZSBoZWFkIG1vdGlvbiBzYW1wbGUKKyAgICAvLyB0byB0aGUgbGlzdCBzdGFydGluZyB3aXRoIHRoZSBuZXdseSBhcHBlbmRlZCBtb3Rpb24gc2FtcGxlLgorICAgIGlmIChyZXN1bWVXaXRoQXBwZW5kZWRNb3Rpb25TYW1wbGUpIHsKKyNpZiBERUJVR19CQVRDSElORworICAgICAgICBMT0dEKCJjaGFubmVsICclcycgfiBQcmVwYXJpbmcgYSBuZXcgZGlzcGF0Y2ggY3ljbGUgZm9yIGFkZGl0aW9uYWwgbW90aW9uIHNhbXBsZXMgIgorICAgICAgICAgICAgICAgICJ0aGF0IGNhbm5vdCBiZSBzdHJlYW1lZCBiZWNhdXNlIHRoZSBtb3Rpb24gZXZlbnQgaGFzIGFscmVhZHkgYmVlbiBjb25zdW1lZC4iLAorICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24tPmdldElucHV0Q2hhbm5lbE5hbWUoKSk7CisjZW5kaWYKKyAgICAgICAgTW90aW9uU2FtcGxlKiBhcHBlbmRlZE1vdGlvblNhbXBsZSA9IHN0YXRpY19jYXN0PE1vdGlvbkVudHJ5Kj4oZXZlbnRFbnRyeSktPmxhc3RTYW1wbGU7CisgICAgICAgIGRpc3BhdGNoRW50cnktPmhlYWRNb3Rpb25TYW1wbGUgPSBhcHBlbmRlZE1vdGlvblNhbXBsZTsKKyAgICB9CisKKyAgICAvLyBFbnF1ZXVlIHRoZSBkaXNwYXRjaCBlbnRyeS4KKyAgICBjb25uZWN0aW9uLT5vdXRib3VuZFF1ZXVlLmVucXVldWVBdFRhaWwoZGlzcGF0Y2hFbnRyeSk7CisKKyAgICAvLyBJZiB0aGUgb3V0Ym91bmQgcXVldWUgd2FzIHByZXZpb3VzbHkgZW1wdHksIHN0YXJ0IHRoZSBkaXNwYXRjaCBjeWNsZSBnb2luZy4KKyAgICBpZiAod2FzRW1wdHkpIHsKKyAgICAgICAgYWN0aXZhdGVDb25uZWN0aW9uTG9ja2VkKGNvbm5lY3Rpb24uZ2V0KCkpOworICAgICAgICBzdGFydERpc3BhdGNoQ3ljbGVMb2NrZWQoY3VycmVudFRpbWUsIGNvbm5lY3Rpb24pOworICAgIH0KK30KKwordm9pZCBJbnB1dERpc3BhdGNoZXI6OnN0YXJ0RGlzcGF0Y2hDeWNsZUxvY2tlZChuc2Vjc190IGN1cnJlbnRUaW1lLAorICAgICAgICBjb25zdCBzcDxDb25uZWN0aW9uPiYgY29ubmVjdGlvbikgeworI2lmIERFQlVHX0RJU1BBVENIX0NZQ0xFCisgICAgTE9HRCgiY2hhbm5lbCAnJXMnIH4gc3RhcnREaXNwYXRjaEN5Y2xlIiwKKyAgICAgICAgICAgIGNvbm5lY3Rpb24tPmdldElucHV0Q2hhbm5lbE5hbWUoKSk7CisjZW5kaWYKKworICAgIGFzc2VydChjb25uZWN0aW9uLT5zdGF0dXMgPT0gQ29ubmVjdGlvbjo6U1RBVFVTX05PUk1BTCk7CisgICAgYXNzZXJ0KCEgY29ubmVjdGlvbi0+b3V0Ym91bmRRdWV1ZS5pc0VtcHR5KCkpOworCisgICAgRGlzcGF0Y2hFbnRyeSogZGlzcGF0Y2hFbnRyeSA9IGNvbm5lY3Rpb24tPm91dGJvdW5kUXVldWUuaGVhZC5uZXh0OworICAgIGFzc2VydCghIGRpc3BhdGNoRW50cnktPmluUHJvZ3Jlc3MpOworCisgICAgLy8gVE9ETyB0aHJvdHRsZSBzdWNjZXNzaXZlIEFDVElPTl9NT1ZFIG1vdGlvbiBldmVudHMgZm9yIHRoZSBzYW1lIGRldmljZQorICAgIC8vICAgICAgcG9zc2libGUgaW1wbGVtZW50YXRpb24gY291bGQgc2V0IGEgYnJpZWYgcG9sbCB0aW1lb3V0IGhlcmUgYW5kIHJlc3VtZSBzdGFydGluZyB0aGUKKyAgICAvLyAgICAgIGRpc3BhdGNoIGN5Y2xlIHdoZW4gZWxhcHNlZAorCisgICAgLy8gUHVibGlzaCB0aGUgZXZlbnQuCisgICAgc3RhdHVzX3Qgc3RhdHVzOworICAgIHN3aXRjaCAoZGlzcGF0Y2hFbnRyeS0+ZXZlbnRFbnRyeS0+dHlwZSkgeworICAgIGNhc2UgRXZlbnRFbnRyeTo6VFlQRV9LRVk6IHsKKyAgICAgICAgS2V5RW50cnkqIGtleUVudHJ5ID0gc3RhdGljX2Nhc3Q8S2V5RW50cnkqPihkaXNwYXRjaEVudHJ5LT5ldmVudEVudHJ5KTsKKworICAgICAgICAvLyBBcHBseSB0YXJnZXQgZmxhZ3MuCisgICAgICAgIGludDMyX3QgYWN0aW9uID0ga2V5RW50cnktPmFjdGlvbjsKKyAgICAgICAgaW50MzJfdCBmbGFncyA9IGtleUVudHJ5LT5mbGFnczsKKyAgICAgICAgaWYgKGRpc3BhdGNoRW50cnktPnRhcmdldEZsYWdzICYgSW5wdXRUYXJnZXQ6OkZMQUdfQ0FOQ0VMKSB7CisgICAgICAgICAgICBmbGFncyB8PSBLRVlfRVZFTlRfRkxBR19DQU5DRUxFRDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFB1Ymxpc2ggdGhlIGtleSBldmVudC4KKyAgICAgICAgc3RhdHVzID0gY29ubmVjdGlvbi0+aW5wdXRQdWJsaXNoZXIucHVibGlzaEtleUV2ZW50KGtleUVudHJ5LT5kZXZpY2VJZCwga2V5RW50cnktPm5hdHVyZSwKKyAgICAgICAgICAgICAgICBhY3Rpb24sIGZsYWdzLCBrZXlFbnRyeS0+a2V5Q29kZSwga2V5RW50cnktPnNjYW5Db2RlLAorICAgICAgICAgICAgICAgIGtleUVudHJ5LT5tZXRhU3RhdGUsIGtleUVudHJ5LT5yZXBlYXRDb3VudCwga2V5RW50cnktPmRvd25UaW1lLAorICAgICAgICAgICAgICAgIGtleUVudHJ5LT5ldmVudFRpbWUpOworCisgICAgICAgIGlmIChzdGF0dXMpIHsKKyAgICAgICAgICAgIExPR0UoImNoYW5uZWwgJyVzJyB+IENvdWxkIG5vdCBwdWJsaXNoIGtleSBldmVudCwgIgorICAgICAgICAgICAgICAgICAgICAic3RhdHVzPSVkIiwgY29ubmVjdGlvbi0+Z2V0SW5wdXRDaGFubmVsTmFtZSgpLCBzdGF0dXMpOworICAgICAgICAgICAgYWJvcnREaXNwYXRjaEN5Y2xlTG9ja2VkKGN1cnJlbnRUaW1lLCBjb25uZWN0aW9uLCB0cnVlIC8qYnJva2VuKi8pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgRXZlbnRFbnRyeTo6VFlQRV9NT1RJT046IHsKKyAgICAgICAgTW90aW9uRW50cnkqIG1vdGlvbkVudHJ5ID0gc3RhdGljX2Nhc3Q8TW90aW9uRW50cnkqPihkaXNwYXRjaEVudHJ5LT5ldmVudEVudHJ5KTsKKworICAgICAgICAvLyBBcHBseSB0YXJnZXQgZmxhZ3MuCisgICAgICAgIGludDMyX3QgYWN0aW9uID0gbW90aW9uRW50cnktPmFjdGlvbjsKKyAgICAgICAgaWYgKGRpc3BhdGNoRW50cnktPnRhcmdldEZsYWdzICYgSW5wdXRUYXJnZXQ6OkZMQUdfT1VUU0lERSkgeworICAgICAgICAgICAgYWN0aW9uID0gTU9USU9OX0VWRU5UX0FDVElPTl9PVVRTSURFOworICAgICAgICB9CisgICAgICAgIGlmIChkaXNwYXRjaEVudHJ5LT50YXJnZXRGbGFncyAmIElucHV0VGFyZ2V0OjpGTEFHX0NBTkNFTCkgeworICAgICAgICAgICAgYWN0aW9uID0gTU9USU9OX0VWRU5UX0FDVElPTl9DQU5DRUw7CisgICAgICAgIH0KKworICAgICAgICAvLyBJZiBoZWFkTW90aW9uU2FtcGxlIGlzIG5vbi1OVUxMLCB0aGVuIGl0IHBvaW50cyB0byB0aGUgZmlyc3QgbmV3IHNhbXBsZSB0aGF0IHdlCisgICAgICAgIC8vIHdlcmUgdW5hYmxlIHRvIGRpc3BhdGNoIGR1cmluZyB0aGUgcHJldmlvdXMgY3ljbGUgc28gd2UgcmVzdW1lIGRpc3BhdGNoaW5nIGZyb20KKyAgICAgICAgLy8gdGhhdCBwb2ludCBpbiB0aGUgbGlzdCBvZiBtb3Rpb24gc2FtcGxlcy4KKyAgICAgICAgLy8gT3RoZXJ3aXNlLCB3ZSBqdXN0IHN0YXJ0IGZyb20gdGhlIGZpcnN0IHNhbXBsZSBvZiB0aGUgbW90aW9uIGV2ZW50LgorICAgICAgICBNb3Rpb25TYW1wbGUqIGZpcnN0TW90aW9uU2FtcGxlID0gZGlzcGF0Y2hFbnRyeS0+aGVhZE1vdGlvblNhbXBsZTsKKyAgICAgICAgaWYgKCEgZmlyc3RNb3Rpb25TYW1wbGUpIHsKKyAgICAgICAgICAgIGZpcnN0TW90aW9uU2FtcGxlID0gJiBtb3Rpb25FbnRyeS0+Zmlyc3RTYW1wbGU7CisgICAgICAgIH0KKworICAgICAgICAvLyBQdWJsaXNoIHRoZSBtb3Rpb24gZXZlbnQgYW5kIHRoZSBmaXJzdCBtb3Rpb24gc2FtcGxlLgorICAgICAgICBzdGF0dXMgPSBjb25uZWN0aW9uLT5pbnB1dFB1Ymxpc2hlci5wdWJsaXNoTW90aW9uRXZlbnQobW90aW9uRW50cnktPmRldmljZUlkLAorICAgICAgICAgICAgICAgIG1vdGlvbkVudHJ5LT5uYXR1cmUsIGFjdGlvbiwgbW90aW9uRW50cnktPmVkZ2VGbGFncywgbW90aW9uRW50cnktPm1ldGFTdGF0ZSwKKyAgICAgICAgICAgICAgICBkaXNwYXRjaEVudHJ5LT54T2Zmc2V0LCBkaXNwYXRjaEVudHJ5LT55T2Zmc2V0LAorICAgICAgICAgICAgICAgIG1vdGlvbkVudHJ5LT54UHJlY2lzaW9uLCBtb3Rpb25FbnRyeS0+eVByZWNpc2lvbiwKKyAgICAgICAgICAgICAgICBtb3Rpb25FbnRyeS0+ZG93blRpbWUsIGZpcnN0TW90aW9uU2FtcGxlLT5ldmVudFRpbWUsCisgICAgICAgICAgICAgICAgbW90aW9uRW50cnktPnBvaW50ZXJDb3VudCwgbW90aW9uRW50cnktPnBvaW50ZXJJZHMsCisgICAgICAgICAgICAgICAgZmlyc3RNb3Rpb25TYW1wbGUtPnBvaW50ZXJDb29yZHMpOworCisgICAgICAgIGlmIChzdGF0dXMpIHsKKyAgICAgICAgICAgIExPR0UoImNoYW5uZWwgJyVzJyB+IENvdWxkIG5vdCBwdWJsaXNoIG1vdGlvbiBldmVudCwgIgorICAgICAgICAgICAgICAgICAgICAic3RhdHVzPSVkIiwgY29ubmVjdGlvbi0+Z2V0SW5wdXRDaGFubmVsTmFtZSgpLCBzdGF0dXMpOworICAgICAgICAgICAgYWJvcnREaXNwYXRjaEN5Y2xlTG9ja2VkKGN1cnJlbnRUaW1lLCBjb25uZWN0aW9uLCB0cnVlIC8qYnJva2VuKi8pOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gQXBwZW5kIGFkZGl0aW9uYWwgbW90aW9uIHNhbXBsZXMuCisgICAgICAgIE1vdGlvblNhbXBsZSogbmV4dE1vdGlvblNhbXBsZSA9IGZpcnN0TW90aW9uU2FtcGxlLT5uZXh0OworICAgICAgICBmb3IgKDsgbmV4dE1vdGlvblNhbXBsZSAhPSBOVUxMOyBuZXh0TW90aW9uU2FtcGxlID0gbmV4dE1vdGlvblNhbXBsZS0+bmV4dCkgeworICAgICAgICAgICAgc3RhdHVzID0gY29ubmVjdGlvbi0+aW5wdXRQdWJsaXNoZXIuYXBwZW5kTW90aW9uU2FtcGxlKAorICAgICAgICAgICAgICAgICAgICBuZXh0TW90aW9uU2FtcGxlLT5ldmVudFRpbWUsIG5leHRNb3Rpb25TYW1wbGUtPnBvaW50ZXJDb29yZHMpOworICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSBOT19NRU1PUlkpIHsKKyNpZiBERUJVR19ESVNQQVRDSF9DWUNMRQorICAgICAgICAgICAgICAgICAgICBMT0dEKCJjaGFubmVsICclcycgfiBTaGFyZWQgbWVtb3J5IGJ1ZmZlciBmdWxsLiAgU29tZSBtb3Rpb24gc2FtcGxlcyB3aWxsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmUgc2VudCBpbiB0aGUgbmV4dCBkaXNwYXRjaCBjeWNsZS4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24tPmdldElucHV0Q2hhbm5lbE5hbWUoKSk7CisjZW5kaWYKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gT0spIHsKKyAgICAgICAgICAgICAgICBMT0dFKCJjaGFubmVsICclcycgfiBDb3VsZCBub3QgYXBwZW5kIG1vdGlvbiBzYW1wbGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgImZvciBhIHJlYXNvbiBvdGhlciB0aGFuIG91dCBvZiBtZW1vcnksIHN0YXR1cz0lZCIsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLT5nZXRJbnB1dENoYW5uZWxOYW1lKCksIHN0YXR1cyk7CisgICAgICAgICAgICAgICAgYWJvcnREaXNwYXRjaEN5Y2xlTG9ja2VkKGN1cnJlbnRUaW1lLCBjb25uZWN0aW9uLCB0cnVlIC8qYnJva2VuKi8pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFJlbWVtYmVyIHRoZSBuZXh0IG1vdGlvbiBzYW1wbGUgdGhhdCB3ZSBjb3VsZCBub3QgZGlzcGF0Y2gsIGluIGNhc2Ugd2UgcmFuIG91dAorICAgICAgICAvLyBvZiBzcGFjZSBpbiB0aGUgc2hhcmVkIG1lbW9yeSBidWZmZXIuCisgICAgICAgIGRpc3BhdGNoRW50cnktPnRhaWxNb3Rpb25TYW1wbGUgPSBuZXh0TW90aW9uU2FtcGxlOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBkZWZhdWx0OiB7CisgICAgICAgIGFzc2VydChmYWxzZSk7CisgICAgfQorICAgIH0KKworICAgIC8vIFNlbmQgdGhlIGRpc3BhdGNoIHNpZ25hbC4KKyAgICBzdGF0dXMgPSBjb25uZWN0aW9uLT5pbnB1dFB1Ymxpc2hlci5zZW5kRGlzcGF0Y2hTaWduYWwoKTsKKyAgICBpZiAoc3RhdHVzKSB7CisgICAgICAgIExPR0UoImNoYW5uZWwgJyVzJyB+IENvdWxkIG5vdCBzZW5kIGRpc3BhdGNoIHNpZ25hbCwgc3RhdHVzPSVkIiwKKyAgICAgICAgICAgICAgICBjb25uZWN0aW9uLT5nZXRJbnB1dENoYW5uZWxOYW1lKCksIHN0YXR1cyk7CisgICAgICAgIGFib3J0RGlzcGF0Y2hDeWNsZUxvY2tlZChjdXJyZW50VGltZSwgY29ubmVjdGlvbiwgdHJ1ZSAvKmJyb2tlbiovKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIFJlY29yZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbmV3bHkgc3RhcnRlZCBkaXNwYXRjaCBjeWNsZS4KKyAgICBkaXNwYXRjaEVudHJ5LT5pblByb2dyZXNzID0gdHJ1ZTsKKworICAgIGNvbm5lY3Rpb24tPmxhc3RFdmVudFRpbWUgPSBkaXNwYXRjaEVudHJ5LT5ldmVudEVudHJ5LT5ldmVudFRpbWU7CisgICAgY29ubmVjdGlvbi0+bGFzdERpc3BhdGNoVGltZSA9IGN1cnJlbnRUaW1lOworCisgICAgbnNlY3NfdCB0aW1lb3V0ID0gZGlzcGF0Y2hFbnRyeS0+dGltZW91dDsKKyAgICBjb25uZWN0aW9uLT5zZXROZXh0VGltZW91dFRpbWUoY3VycmVudFRpbWUsIHRpbWVvdXQpOworCisgICAgLy8gTm90aWZ5IG90aGVyIHN5c3RlbSBjb21wb25lbnRzLgorICAgIG9uRGlzcGF0Y2hDeWNsZVN0YXJ0ZWRMb2NrZWQoY3VycmVudFRpbWUsIGNvbm5lY3Rpb24pOworfQorCit2b2lkIElucHV0RGlzcGF0Y2hlcjo6ZmluaXNoRGlzcGF0Y2hDeWNsZUxvY2tlZChuc2Vjc190IGN1cnJlbnRUaW1lLAorICAgICAgICBjb25zdCBzcDxDb25uZWN0aW9uPiYgY29ubmVjdGlvbikgeworI2lmIERFQlVHX0RJU1BBVENIX0NZQ0xFCisgICAgTE9HRCgiY2hhbm5lbCAnJXMnIH4gZmluaXNoRGlzcGF0Y2hDeWNsZSAtICUwMS4xZm1zIHNpbmNlIGV2ZW50LCAiCisgICAgICAgICAgICAiJTAxLjFmbXMgc2luY2UgZGlzcGF0Y2giLAorICAgICAgICAgICAgY29ubmVjdGlvbi0+Z2V0SW5wdXRDaGFubmVsTmFtZSgpLAorICAgICAgICAgICAgY29ubmVjdGlvbi0+Z2V0RXZlbnRMYXRlbmN5TWlsbGlzKGN1cnJlbnRUaW1lKSwKKyAgICAgICAgICAgIGNvbm5lY3Rpb24tPmdldERpc3BhdGNoTGF0ZW5jeU1pbGxpcyhjdXJyZW50VGltZSkpOworI2VuZGlmCisKKyAgICBpZiAoY29ubmVjdGlvbi0+c3RhdHVzID09IENvbm5lY3Rpb246OlNUQVRVU19CUk9LRU4KKyAgICAgICAgICAgIHx8IGNvbm5lY3Rpb24tPnN0YXR1cyA9PSBDb25uZWN0aW9uOjpTVEFUVVNfWk9NQklFKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBDbGVhciB0aGUgcGVuZGluZyB0aW1lb3V0LgorICAgIGNvbm5lY3Rpb24tPm5leHRUaW1lb3V0VGltZSA9IExPTkdfTE9OR19NQVg7CisKKyAgICBpZiAoY29ubmVjdGlvbi0+c3RhdHVzID09IENvbm5lY3Rpb246OlNUQVRVU19OT1RfUkVTUE9ORElORykgeworICAgICAgICAvLyBSZWNvdmVyaW5nIGZyb20gYW4gQU5SLgorICAgICAgICBjb25uZWN0aW9uLT5zdGF0dXMgPSBDb25uZWN0aW9uOjpTVEFUVVNfTk9STUFMOworCisgICAgICAgIC8vIE5vdGlmeSBvdGhlciBzeXN0ZW0gY29tcG9uZW50cy4KKyAgICAgICAgb25EaXNwYXRjaEN5Y2xlRmluaXNoZWRMb2NrZWQoY3VycmVudFRpbWUsIGNvbm5lY3Rpb24sIHRydWUgLypyZWNvdmVyZWRGcm9tQU5SKi8pOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIE5vcm1hbCBmaW5pc2guICBOb3QgbXVjaCB0byBkbyBoZXJlLgorCisgICAgICAgIC8vIE5vdGlmeSBvdGhlciBzeXN0ZW0gY29tcG9uZW50cy4KKyAgICAgICAgb25EaXNwYXRjaEN5Y2xlRmluaXNoZWRMb2NrZWQoY3VycmVudFRpbWUsIGNvbm5lY3Rpb24sIGZhbHNlIC8qcmVjb3ZlcmVkRnJvbUFOUiovKTsKKyAgICB9CisKKyAgICAvLyBSZXNldCB0aGUgcHVibGlzaGVyIHNpbmNlIHRoZSBldmVudCBoYXMgYmVlbiBjb25zdW1lZC4KKyAgICAvLyBXZSBkbyB0aGlzIG5vdyBzbyB0aGF0IHRoZSBwdWJsaXNoZXIgY2FuIHJlbGVhc2Ugc29tZSBvZiBpdHMgaW50ZXJuYWwgcmVzb3VyY2VzCisgICAgLy8gd2hpbGUgd2FpdGluZyBmb3IgdGhlIG5leHQgZGlzcGF0Y2ggY3ljbGUgdG8gYmVnaW4uCisgICAgc3RhdHVzX3Qgc3RhdHVzID0gY29ubmVjdGlvbi0+aW5wdXRQdWJsaXNoZXIucmVzZXQoKTsKKyAgICBpZiAoc3RhdHVzKSB7CisgICAgICAgIExPR0UoImNoYW5uZWwgJyVzJyB+IENvdWxkIG5vdCByZXNldCBwdWJsaXNoZXIsIHN0YXR1cz0lZCIsCisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+Z2V0SW5wdXRDaGFubmVsTmFtZSgpLCBzdGF0dXMpOworICAgICAgICBhYm9ydERpc3BhdGNoQ3ljbGVMb2NrZWQoY3VycmVudFRpbWUsIGNvbm5lY3Rpb24sIHRydWUgLypicm9rZW4qLyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBTdGFydCB0aGUgbmV4dCBkaXNwYXRjaCBjeWNsZSBmb3IgdGhpcyBjb25uZWN0aW9uLgorICAgIHdoaWxlICghIGNvbm5lY3Rpb24tPm91dGJvdW5kUXVldWUuaXNFbXB0eSgpKSB7CisgICAgICAgIERpc3BhdGNoRW50cnkqIGRpc3BhdGNoRW50cnkgPSBjb25uZWN0aW9uLT5vdXRib3VuZFF1ZXVlLmhlYWQubmV4dDsKKyAgICAgICAgaWYgKGRpc3BhdGNoRW50cnktPmluUHJvZ3Jlc3MpIHsKKyAgICAgICAgICAgICAvLyBGaW5pc2ggb3IgcmVzdW1lIGN1cnJlbnQgZXZlbnQgaW4gcHJvZ3Jlc3MuCisgICAgICAgICAgICBpZiAoZGlzcGF0Y2hFbnRyeS0+dGFpbE1vdGlvblNhbXBsZSkgeworICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgYSB0YWlsIG9mIHVuZGlzcGF0Y2hlZCBtb3Rpb24gc2FtcGxlcy4KKyAgICAgICAgICAgICAgICAvLyBSZXVzZSB0aGUgc2FtZSBEaXNwYXRjaEVudHJ5IGFuZCBzdGFydCBhIG5ldyBjeWNsZS4KKyAgICAgICAgICAgICAgICBkaXNwYXRjaEVudHJ5LT5pblByb2dyZXNzID0gZmFsc2U7CisgICAgICAgICAgICAgICAgZGlzcGF0Y2hFbnRyeS0+aGVhZE1vdGlvblNhbXBsZSA9IGRpc3BhdGNoRW50cnktPnRhaWxNb3Rpb25TYW1wbGU7CisgICAgICAgICAgICAgICAgZGlzcGF0Y2hFbnRyeS0+dGFpbE1vdGlvblNhbXBsZSA9IE5VTEw7CisgICAgICAgICAgICAgICAgc3RhcnREaXNwYXRjaEN5Y2xlTG9ja2VkKGN1cnJlbnRUaW1lLCBjb25uZWN0aW9uKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBGaW5pc2hlZC4KKyAgICAgICAgICAgIGNvbm5lY3Rpb24tPm91dGJvdW5kUXVldWUuZGVxdWV1ZUF0SGVhZCgpOworICAgICAgICAgICAgbUFsbG9jYXRvci5yZWxlYXNlRGlzcGF0Y2hFbnRyeShkaXNwYXRjaEVudHJ5KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIElmIHRoZSBoZWFkIGlzIG5vdCBpbiBwcm9ncmVzcywgdGhlbiB3ZSBtdXN0IGhhdmUgYWxyZWFkeSBkZXF1ZXVlZCB0aGUgaW4KKyAgICAgICAgICAgIC8vIHByb2dyZXNzIGV2ZW50LCB3aGljaCBtZWFucyB3ZSBhY3R1YWxseSBhYm9ydGVkIGl0IChkdWUgdG8gQU5SKS4KKyAgICAgICAgICAgIC8vIFNvIGp1c3Qgc3RhcnQgdGhlIG5leHQgZXZlbnQgZm9yIHRoaXMgY29ubmVjdGlvbi4KKyAgICAgICAgICAgIHN0YXJ0RGlzcGF0Y2hDeWNsZUxvY2tlZChjdXJyZW50VGltZSwgY29ubmVjdGlvbik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBPdXRib3VuZCBxdWV1ZSBpcyBlbXB0eSwgZGVhY3RpdmF0ZSB0aGUgY29ubmVjdGlvbi4KKyAgICBkZWFjdGl2YXRlQ29ubmVjdGlvbkxvY2tlZChjb25uZWN0aW9uLmdldCgpKTsKK30KKwordm9pZCBJbnB1dERpc3BhdGNoZXI6OnRpbWVvdXREaXNwYXRjaEN5Y2xlTG9ja2VkKG5zZWNzX3QgY3VycmVudFRpbWUsCisgICAgICAgIGNvbnN0IHNwPENvbm5lY3Rpb24+JiBjb25uZWN0aW9uKSB7CisjaWYgREVCVUdfRElTUEFUQ0hfQ1lDTEUKKyAgICBMT0dEKCJjaGFubmVsICclcycgfiB0aW1lb3V0RGlzcGF0Y2hDeWNsZSIsCisgICAgICAgICAgICBjb25uZWN0aW9uLT5nZXRJbnB1dENoYW5uZWxOYW1lKCkpOworI2VuZGlmCisKKyAgICBpZiAoY29ubmVjdGlvbi0+c3RhdHVzICE9IENvbm5lY3Rpb246OlNUQVRVU19OT1JNQUwpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEVudGVyIHRoZSBub3QgcmVzcG9uZGluZyBzdGF0ZS4KKyAgICBjb25uZWN0aW9uLT5zdGF0dXMgPSBDb25uZWN0aW9uOjpTVEFUVVNfTk9UX1JFU1BPTkRJTkc7CisgICAgY29ubmVjdGlvbi0+bGFzdEFOUlRpbWUgPSBjdXJyZW50VGltZTsKKworICAgIC8vIE5vdGlmeSBvdGhlciBzeXN0ZW0gY29tcG9uZW50cy4KKyAgICAvLyBUaGlzIGVucXVldWVzIGEgY29tbWFuZCB3aGljaCB3aWxsIGV2ZW50dWFsbHkgZWl0aGVyIGNhbGwKKyAgICAvLyByZXN1bWVBZnRlclRpbWVvdXREaXNwYXRjaEN5Y2xlTG9ja2VkIG9yIGFib3J0RGlzcGF0Y2hDeWNsZUxvY2tlZC4KKyAgICBvbkRpc3BhdGNoQ3ljbGVBTlJMb2NrZWQoY3VycmVudFRpbWUsIGNvbm5lY3Rpb24pOworfQorCit2b2lkIElucHV0RGlzcGF0Y2hlcjo6cmVzdW1lQWZ0ZXJUaW1lb3V0RGlzcGF0Y2hDeWNsZUxvY2tlZChuc2Vjc190IGN1cnJlbnRUaW1lLAorICAgICAgICBjb25zdCBzcDxDb25uZWN0aW9uPiYgY29ubmVjdGlvbiwgbnNlY3NfdCBuZXdUaW1lb3V0KSB7CisjaWYgREVCVUdfRElTUEFUQ0hfQ1lDTEUKKyAgICBMT0dEKCJjaGFubmVsICclcycgfiByZXN1bWVBZnRlclRpbWVvdXREaXNwYXRjaEN5Y2xlTG9ja2VkIiwKKyAgICAgICAgICAgIGNvbm5lY3Rpb24tPmdldElucHV0Q2hhbm5lbE5hbWUoKSk7CisjZW5kaWYKKworICAgIGlmIChjb25uZWN0aW9uLT5zdGF0dXMgIT0gQ29ubmVjdGlvbjo6U1RBVFVTX05PVF9SRVNQT05ESU5HKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvLyBSZXN1bWUgbm9ybWFsIGRpc3BhdGNoLgorICAgIGNvbm5lY3Rpb24tPnN0YXR1cyA9IENvbm5lY3Rpb246OlNUQVRVU19OT1JNQUw7CisgICAgY29ubmVjdGlvbi0+c2V0TmV4dFRpbWVvdXRUaW1lKGN1cnJlbnRUaW1lLCBuZXdUaW1lb3V0KTsKK30KKwordm9pZCBJbnB1dERpc3BhdGNoZXI6OmFib3J0RGlzcGF0Y2hDeWNsZUxvY2tlZChuc2Vjc190IGN1cnJlbnRUaW1lLAorICAgICAgICBjb25zdCBzcDxDb25uZWN0aW9uPiYgY29ubmVjdGlvbiwgYm9vbCBicm9rZW4pIHsKKyNpZiBERUJVR19ESVNQQVRDSF9DWUNMRQorICAgIExPR0QoImNoYW5uZWwgJyVzJyB+IGFib3J0RGlzcGF0Y2hDeWNsZSAtIGJyb2tlbj0lcyIsCisgICAgICAgICAgICBjb25uZWN0aW9uLT5nZXRJbnB1dENoYW5uZWxOYW1lKCksIGJyb2tlbiA/ICJ0cnVlIiA6ICJmYWxzZSIpOworI2VuZGlmCisKKyAgICAvLyBDbGVhciB0aGUgcGVuZGluZyB0aW1lb3V0LgorICAgIGNvbm5lY3Rpb24tPm5leHRUaW1lb3V0VGltZSA9IExPTkdfTE9OR19NQVg7CisKKyAgICAvLyBDbGVhciB0aGUgb3V0Ym91bmQgcXVldWUuCisgICAgaWYgKCEgY29ubmVjdGlvbi0+b3V0Ym91bmRRdWV1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgZG8geworICAgICAgICAgICAgRGlzcGF0Y2hFbnRyeSogZGlzcGF0Y2hFbnRyeSA9IGNvbm5lY3Rpb24tPm91dGJvdW5kUXVldWUuZGVxdWV1ZUF0SGVhZCgpOworICAgICAgICAgICAgbUFsbG9jYXRvci5yZWxlYXNlRGlzcGF0Y2hFbnRyeShkaXNwYXRjaEVudHJ5KTsKKyAgICAgICAgfSB3aGlsZSAoISBjb25uZWN0aW9uLT5vdXRib3VuZFF1ZXVlLmlzRW1wdHkoKSk7CisKKyAgICAgICAgZGVhY3RpdmF0ZUNvbm5lY3Rpb25Mb2NrZWQoY29ubmVjdGlvbi5nZXQoKSk7CisgICAgfQorCisgICAgLy8gSGFuZGxlIHRoZSBjYXNlIHdoZXJlIHRoZSBjb25uZWN0aW9uIGFwcGVhcnMgdG8gYmUgdW5yZWNvdmVyYWJseSBicm9rZW4uCisgICAgLy8gSWdub3JlIGFscmVhZHkgYnJva2VuIG9yIHpvbWJpZSBjb25uZWN0aW9ucy4KKyAgICBpZiAoYnJva2VuKSB7CisgICAgICAgIGlmIChjb25uZWN0aW9uLT5zdGF0dXMgPT0gQ29ubmVjdGlvbjo6U1RBVFVTX05PUk1BTAorICAgICAgICAgICAgICAgIHx8IGNvbm5lY3Rpb24tPnN0YXR1cyA9PSBDb25uZWN0aW9uOjpTVEFUVVNfTk9UX1JFU1BPTkRJTkcpIHsKKyAgICAgICAgICAgIGNvbm5lY3Rpb24tPnN0YXR1cyA9IENvbm5lY3Rpb246OlNUQVRVU19CUk9LRU47CisKKyAgICAgICAgICAgIC8vIE5vdGlmeSBvdGhlciBzeXN0ZW0gY29tcG9uZW50cy4KKyAgICAgICAgICAgIG9uRGlzcGF0Y2hDeWNsZUJyb2tlbkxvY2tlZChjdXJyZW50VGltZSwgY29ubmVjdGlvbik7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Jvb2wgSW5wdXREaXNwYXRjaGVyOjpoYW5kbGVSZWNlaXZlQ2FsbGJhY2soaW50IHJlY2VpdmVGZCwgaW50IGV2ZW50cywgdm9pZCogZGF0YSkgeworICAgIElucHV0RGlzcGF0Y2hlciogZCA9IHN0YXRpY19jYXN0PElucHV0RGlzcGF0Y2hlcio+KGRhdGEpOworCisgICAgeyAvLyBhY3F1aXJlIGxvY2sKKyAgICAgICAgQXV0b011dGV4IF9sKGQtPm1Mb2NrKTsKKworICAgICAgICBzc2l6ZV90IGNvbm5lY3Rpb25JbmRleCA9IGQtPm1Db25uZWN0aW9uc0J5UmVjZWl2ZUZkLmluZGV4T2ZLZXkocmVjZWl2ZUZkKTsKKyAgICAgICAgaWYgKGNvbm5lY3Rpb25JbmRleCA8IDApIHsKKyAgICAgICAgICAgIExPR0UoIlJlY2VpdmVkIHNwdXJpb3VzIHJlY2VpdmUgY2FsbGJhY2sgZm9yIHVua25vd24gaW5wdXQgY2hhbm5lbC4gICIKKyAgICAgICAgICAgICAgICAgICAgImZkPSVkLCBldmVudHM9MHgleCIsIHJlY2VpdmVGZCwgZXZlbnRzKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gcmVtb3ZlIHRoZSBjYWxsYmFjaworICAgICAgICB9CisKKyAgICAgICAgbnNlY3NfdCBjdXJyZW50VGltZSA9IG5vdygpOworCisgICAgICAgIHNwPENvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBkLT5tQ29ubmVjdGlvbnNCeVJlY2VpdmVGZC52YWx1ZUF0KGNvbm5lY3Rpb25JbmRleCk7CisgICAgICAgIGlmIChldmVudHMgJiAoUE9MTEVSUiB8IFBPTExIVVAgfCBQT0xMTlZBTCkpIHsKKyAgICAgICAgICAgIExPR0UoImNoYW5uZWwgJyVzJyB+IENvbnN1bWVyIGNsb3NlZCBpbnB1dCBjaGFubmVsIG9yIGFuIGVycm9yIG9jY3VycmVkLiAgIgorICAgICAgICAgICAgICAgICAgICAiZXZlbnRzPTB4JXgiLCBjb25uZWN0aW9uLT5nZXRJbnB1dENoYW5uZWxOYW1lKCksIGV2ZW50cyk7CisgICAgICAgICAgICBkLT5hYm9ydERpc3BhdGNoQ3ljbGVMb2NrZWQoY3VycmVudFRpbWUsIGNvbm5lY3Rpb24sIHRydWUgLypicm9rZW4qLyk7CisgICAgICAgICAgICBkLT5ydW5Db21tYW5kc0xvY2tlZEludGVycnVwdGlibGUoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gcmVtb3ZlIHRoZSBjYWxsYmFjaworICAgICAgICB9CisKKyAgICAgICAgaWYgKCEgKGV2ZW50cyAmIFBPTExJTikpIHsKKyAgICAgICAgICAgIExPR1coImNoYW5uZWwgJyVzJyB+IFJlY2VpdmVkIHNwdXJpb3VzIGNhbGxiYWNrIGZvciB1bmhhbmRsZWQgcG9sbCBldmVudC4gICIKKyAgICAgICAgICAgICAgICAgICAgImV2ZW50cz0weCV4IiwgY29ubmVjdGlvbi0+Z2V0SW5wdXRDaGFubmVsTmFtZSgpLCBldmVudHMpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICBzdGF0dXNfdCBzdGF0dXMgPSBjb25uZWN0aW9uLT5pbnB1dFB1Ymxpc2hlci5yZWNlaXZlRmluaXNoZWRTaWduYWwoKTsKKyAgICAgICAgaWYgKHN0YXR1cykgeworICAgICAgICAgICAgTE9HRSgiY2hhbm5lbCAnJXMnIH4gRmFpbGVkIHRvIHJlY2VpdmUgZmluaXNoZWQgc2lnbmFsLiAgc3RhdHVzPSVkIiwKKyAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+Z2V0SW5wdXRDaGFubmVsTmFtZSgpLCBzdGF0dXMpOworICAgICAgICAgICAgZC0+YWJvcnREaXNwYXRjaEN5Y2xlTG9ja2VkKGN1cnJlbnRUaW1lLCBjb25uZWN0aW9uLCB0cnVlIC8qYnJva2VuKi8pOworICAgICAgICAgICAgZC0+cnVuQ29tbWFuZHNMb2NrZWRJbnRlcnJ1cHRpYmxlKCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIHJlbW92ZSB0aGUgY2FsbGJhY2sKKyAgICAgICAgfQorCisgICAgICAgIGQtPmZpbmlzaERpc3BhdGNoQ3ljbGVMb2NrZWQoY3VycmVudFRpbWUsIGNvbm5lY3Rpb24pOworICAgICAgICBkLT5ydW5Db21tYW5kc0xvY2tlZEludGVycnVwdGlibGUoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSAvLyByZWxlYXNlIGxvY2sKK30KKwordm9pZCBJbnB1dERpc3BhdGNoZXI6Om5vdGlmeUNvbmZpZ3VyYXRpb25DaGFuZ2VkKG5zZWNzX3QgZXZlbnRUaW1lKSB7CisjaWYgREVCVUdfSU5CT1VORF9FVkVOVF9ERVRBSUxTCisgICAgTE9HRCgibm90aWZ5Q29uZmlndXJhdGlvbkNoYW5nZWQgLSBldmVudFRpbWU9JWxsZCIsIGV2ZW50VGltZSk7CisjZW5kaWYKKworICAgIGJvb2wgd2FzRW1wdHk7CisgICAgeyAvLyBhY3F1aXJlIGxvY2sKKyAgICAgICAgQXV0b011dGV4IF9sKG1Mb2NrKTsKKworICAgICAgICBDb25maWd1cmF0aW9uQ2hhbmdlZEVudHJ5KiBuZXdFbnRyeSA9IG1BbGxvY2F0b3Iub2J0YWluQ29uZmlndXJhdGlvbkNoYW5nZWRFbnRyeShldmVudFRpbWUpOworCisgICAgICAgIHdhc0VtcHR5ID0gbUluYm91bmRRdWV1ZS5pc0VtcHR5KCk7CisgICAgICAgIG1JbmJvdW5kUXVldWUuZW5xdWV1ZUF0VGFpbChuZXdFbnRyeSk7CisgICAgfSAvLyByZWxlYXNlIGxvY2sKKworICAgIGlmICh3YXNFbXB0eSkgeworICAgICAgICBtUG9sbExvb3AtPndha2UoKTsKKyAgICB9Cit9CisKK3ZvaWQgSW5wdXREaXNwYXRjaGVyOjpub3RpZnlBcHBTd2l0Y2hDb21pbmcobnNlY3NfdCBldmVudFRpbWUpIHsKKyNpZiBERUJVR19JTkJPVU5EX0VWRU5UX0RFVEFJTFMKKyAgICBMT0dEKCJub3RpZnlBcHBTd2l0Y2hDb21pbmcgLSBldmVudFRpbWU9JWxsZCIsIGV2ZW50VGltZSk7CisjZW5kaWYKKworICAgIC8vIFJlbW92ZSBtb3ZlbWVudCBrZXlzIGZyb20gdGhlIHF1ZXVlIGZyb20gbW9zdCByZWNlbnQgdG8gbGVhc3QgcmVjZW50LCBzdG9wcGluZyBhdCB0aGUKKyAgICAvLyBmaXJzdCBub24tbW92ZW1lbnQga2V5LgorICAgIC8vIFRPRE86IEluY2x1ZGUgYSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBvZiB3aHkgd2UgZG8gdGhpcy4uLgorCisgICAgeyAvLyBhY3F1aXJlIGxvY2sKKyAgICAgICAgQXV0b011dGV4IF9sKG1Mb2NrKTsKKworICAgICAgICBmb3IgKEV2ZW50RW50cnkqIGVudHJ5ID0gbUluYm91bmRRdWV1ZS50YWlsLnByZXY7IGVudHJ5ICE9ICYgbUluYm91bmRRdWV1ZS5oZWFkOyApIHsKKyAgICAgICAgICAgIEV2ZW50RW50cnkqIHByZXYgPSBlbnRyeS0+cHJldjsKKworICAgICAgICAgICAgaWYgKGVudHJ5LT50eXBlID09IEV2ZW50RW50cnk6OlRZUEVfS0VZKSB7CisgICAgICAgICAgICAgICAgS2V5RW50cnkqIGtleUVudHJ5ID0gc3RhdGljX2Nhc3Q8S2V5RW50cnkqPihlbnRyeSk7CisgICAgICAgICAgICAgICAgaWYgKGlzTW92ZW1lbnRLZXkoa2V5RW50cnktPmtleUNvZGUpKSB7CisgICAgICAgICAgICAgICAgICAgIExPR1YoIkRyb3BwaW5nIG1vdmVtZW50IGtleSBkdXJpbmcgYXBwIHN3aXRjaDoga2V5Q29kZT0lZCwgYWN0aW9uPSVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlFbnRyeS0+a2V5Q29kZSwga2V5RW50cnktPmFjdGlvbik7CisgICAgICAgICAgICAgICAgICAgIG1JbmJvdW5kUXVldWUuZGVxdWV1ZShrZXlFbnRyeSk7CisKKyAgICAgICAgICAgICAgICAgICAgc2V0SW5qZWN0aW9uUmVzdWx0TG9ja2VkKGVudHJ5LCBJTlBVVF9FVkVOVF9JTkpFQ1RJT05fRkFJTEVEKTsKKworICAgICAgICAgICAgICAgICAgICBtQWxsb2NhdG9yLnJlbGVhc2VLZXlFbnRyeShrZXlFbnRyeSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gc3RvcCBhdCBsYXN0IG5vbi1tb3ZlbWVudCBrZXkKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBlbnRyeSA9IHByZXY7CisgICAgICAgIH0KKyAgICB9IC8vIHJlbGVhc2UgbG9jaworfQorCit2b2lkIElucHV0RGlzcGF0Y2hlcjo6bm90aWZ5S2V5KG5zZWNzX3QgZXZlbnRUaW1lLCBpbnQzMl90IGRldmljZUlkLCBpbnQzMl90IG5hdHVyZSwKKyAgICAgICAgdWludDMyX3QgcG9saWN5RmxhZ3MsIGludDMyX3QgYWN0aW9uLCBpbnQzMl90IGZsYWdzLAorICAgICAgICBpbnQzMl90IGtleUNvZGUsIGludDMyX3Qgc2NhbkNvZGUsIGludDMyX3QgbWV0YVN0YXRlLCBuc2Vjc190IGRvd25UaW1lKSB7CisjaWYgREVCVUdfSU5CT1VORF9FVkVOVF9ERVRBSUxTCisgICAgTE9HRCgibm90aWZ5S2V5IC0gZXZlbnRUaW1lPSVsbGQsIGRldmljZUlkPTB4JXgsIG5hdHVyZT0weCV4LCBwb2xpY3lGbGFncz0weCV4LCBhY3Rpb249MHgleCwgIgorICAgICAgICAgICAgImZsYWdzPTB4JXgsIGtleUNvZGU9MHgleCwgc2NhbkNvZGU9MHgleCwgbWV0YVN0YXRlPTB4JXgsIGRvd25UaW1lPSVsbGQiLAorICAgICAgICAgICAgZXZlbnRUaW1lLCBkZXZpY2VJZCwgbmF0dXJlLCBwb2xpY3lGbGFncywgYWN0aW9uLCBmbGFncywKKyAgICAgICAgICAgIGtleUNvZGUsIHNjYW5Db2RlLCBtZXRhU3RhdGUsIGRvd25UaW1lKTsKKyNlbmRpZgorCisgICAgYm9vbCB3YXNFbXB0eTsKKyAgICB7IC8vIGFjcXVpcmUgbG9jaworICAgICAgICBBdXRvTXV0ZXggX2wobUxvY2spOworCisgICAgICAgIGludDMyX3QgcmVwZWF0Q291bnQgPSAwOworICAgICAgICBLZXlFbnRyeSogbmV3RW50cnkgPSBtQWxsb2NhdG9yLm9idGFpbktleUVudHJ5KGV2ZW50VGltZSwKKyAgICAgICAgICAgICAgICBkZXZpY2VJZCwgbmF0dXJlLCBwb2xpY3lGbGFncywgYWN0aW9uLCBmbGFncywga2V5Q29kZSwgc2NhbkNvZGUsCisgICAgICAgICAgICAgICAgbWV0YVN0YXRlLCByZXBlYXRDb3VudCwgZG93blRpbWUpOworCisgICAgICAgIHdhc0VtcHR5ID0gbUluYm91bmRRdWV1ZS5pc0VtcHR5KCk7CisgICAgICAgIG1JbmJvdW5kUXVldWUuZW5xdWV1ZUF0VGFpbChuZXdFbnRyeSk7CisgICAgfSAvLyByZWxlYXNlIGxvY2sKKworICAgIGlmICh3YXNFbXB0eSkgeworICAgICAgICBtUG9sbExvb3AtPndha2UoKTsKKyAgICB9Cit9CisKK3ZvaWQgSW5wdXREaXNwYXRjaGVyOjpub3RpZnlNb3Rpb24obnNlY3NfdCBldmVudFRpbWUsIGludDMyX3QgZGV2aWNlSWQsIGludDMyX3QgbmF0dXJlLAorICAgICAgICB1aW50MzJfdCBwb2xpY3lGbGFncywgaW50MzJfdCBhY3Rpb24sIGludDMyX3QgbWV0YVN0YXRlLCBpbnQzMl90IGVkZ2VGbGFncywKKyAgICAgICAgdWludDMyX3QgcG9pbnRlckNvdW50LCBjb25zdCBpbnQzMl90KiBwb2ludGVySWRzLCBjb25zdCBQb2ludGVyQ29vcmRzKiBwb2ludGVyQ29vcmRzLAorICAgICAgICBmbG9hdCB4UHJlY2lzaW9uLCBmbG9hdCB5UHJlY2lzaW9uLCBuc2Vjc190IGRvd25UaW1lKSB7CisjaWYgREVCVUdfSU5CT1VORF9FVkVOVF9ERVRBSUxTCisgICAgTE9HRCgibm90aWZ5TW90aW9uIC0gZXZlbnRUaW1lPSVsbGQsIGRldmljZUlkPTB4JXgsIG5hdHVyZT0weCV4LCBwb2xpY3lGbGFncz0weCV4LCAiCisgICAgICAgICAgICAiYWN0aW9uPTB4JXgsIG1ldGFTdGF0ZT0weCV4LCBlZGdlRmxhZ3M9MHgleCwgeFByZWNpc2lvbj0lZiwgeVByZWNpc2lvbj0lZiwgIgorICAgICAgICAgICAgImRvd25UaW1lPSVsbGQiLAorICAgICAgICAgICAgZXZlbnRUaW1lLCBkZXZpY2VJZCwgbmF0dXJlLCBwb2xpY3lGbGFncywgYWN0aW9uLCBtZXRhU3RhdGUsIGVkZ2VGbGFncywKKyAgICAgICAgICAgIHhQcmVjaXNpb24sIHlQcmVjaXNpb24sIGRvd25UaW1lKTsKKyAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgcG9pbnRlckNvdW50OyBpKyspIHsKKyAgICAgICAgTE9HRCgiICBQb2ludGVyICVkOiBpZD0lZCwgeD0lZiwgeT0lZiwgcHJlc3N1cmU9JWYsIHNpemU9JWYiLAorICAgICAgICAgICAgICAgIGksIHBvaW50ZXJJZHNbaV0sIHBvaW50ZXJDb29yZHNbaV0ueCwgcG9pbnRlckNvb3Jkc1tpXS55LAorICAgICAgICAgICAgICAgIHBvaW50ZXJDb29yZHNbaV0ucHJlc3N1cmUsIHBvaW50ZXJDb29yZHNbaV0uc2l6ZSk7CisgICAgfQorI2VuZGlmCisKKyAgICBib29sIHdhc0VtcHR5OworICAgIHsgLy8gYWNxdWlyZSBsb2NrCisgICAgICAgIEF1dG9NdXRleCBfbChtTG9jayk7CisKKyAgICAgICAgLy8gQXR0ZW1wdCBiYXRjaGluZyBhbmQgc3RyZWFtaW5nIG9mIG1vdmUgZXZlbnRzLgorICAgICAgICBpZiAoYWN0aW9uID09IE1PVElPTl9FVkVOVF9BQ1RJT05fTU9WRSkgeworICAgICAgICAgICAgLy8gQkFUQ0hJTkcgQ0FTRQorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIFRyeSB0byBhcHBlbmQgYSBtb3ZlIHNhbXBsZSB0byB0aGUgdGFpbCBvZiB0aGUgaW5ib3VuZCBxdWV1ZSBmb3IgdGhpcyBkZXZpY2UuCisgICAgICAgICAgICAvLyBHaXZlIHVwIGlmIHdlIGVuY291bnRlciBhIG5vbi1tb3ZlIG1vdGlvbiBldmVudCBmb3IgdGhpcyBkZXZpY2Ugc2luY2UgdGhhdAorICAgICAgICAgICAgLy8gbWVhbnMgd2UgY2Fubm90IGFwcGVuZCBhbnkgbmV3IHNhbXBsZXMgdW50aWwgYSBuZXcgbW90aW9uIGV2ZW50IGhhcyBzdGFydGVkLgorICAgICAgICAgICAgZm9yIChFdmVudEVudHJ5KiBlbnRyeSA9IG1JbmJvdW5kUXVldWUudGFpbC5wcmV2OworICAgICAgICAgICAgICAgICAgICBlbnRyeSAhPSAmIG1JbmJvdW5kUXVldWUuaGVhZDsgZW50cnkgPSBlbnRyeS0+cHJldikgeworICAgICAgICAgICAgICAgIGlmIChlbnRyeS0+dHlwZSAhPSBFdmVudEVudHJ5OjpUWVBFX01PVElPTikgeworICAgICAgICAgICAgICAgICAgICAvLyBLZWVwIGxvb2tpbmcgZm9yIG1vdGlvbiBldmVudHMuCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIE1vdGlvbkVudHJ5KiBtb3Rpb25FbnRyeSA9IHN0YXRpY19jYXN0PE1vdGlvbkVudHJ5Kj4oZW50cnkpOworICAgICAgICAgICAgICAgIGlmIChtb3Rpb25FbnRyeS0+ZGV2aWNlSWQgIT0gZGV2aWNlSWQpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gS2VlcCBsb29raW5nIGZvciB0aGlzIGRldmljZS4KKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKG1vdGlvbkVudHJ5LT5hY3Rpb24gIT0gTU9USU9OX0VWRU5UX0FDVElPTl9NT1ZFCisgICAgICAgICAgICAgICAgICAgICAgICB8fCBtb3Rpb25FbnRyeS0+cG9pbnRlckNvdW50ICE9IHBvaW50ZXJDb3VudAorICAgICAgICAgICAgICAgICAgICAgICAgfHwgbW90aW9uRW50cnktPmlzSW5qZWN0ZWQoKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBMYXN0IG1vdGlvbiBldmVudCBpbiB0aGUgcXVldWUgZm9yIHRoaXMgZGV2aWNlIGlzIG5vdCBjb21wYXRpYmxlIGZvcgorICAgICAgICAgICAgICAgICAgICAvLyBhcHBlbmRpbmcgbmV3IHNhbXBsZXMuICBTdG9wIGhlcmUuCisgICAgICAgICAgICAgICAgICAgIGdvdG8gTm9CYXRjaGluZ09yU3RyZWFtaW5nOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIFRoZSBsYXN0IG1vdGlvbiBldmVudCBpcyBhIG1vdmUgYW5kIGlzIGNvbXBhdGlibGUgZm9yIGFwcGVuZGluZy4KKyAgICAgICAgICAgICAgICAvLyBEbyB0aGUgYmF0Y2hpbmcgbWFnaWMuCisgICAgICAgICAgICAgICAgbUFsbG9jYXRvci5hcHBlbmRNb3Rpb25TYW1wbGUobW90aW9uRW50cnksIGV2ZW50VGltZSwgcG9pbnRlckNvb3Jkcyk7CisjaWYgREVCVUdfQkFUQ0hJTkcKKyAgICAgICAgICAgICAgICBMT0dEKCJBcHBlbmRlZCBtb3Rpb24gc2FtcGxlIG9udG8gYmF0Y2ggZm9yIG1vc3QgcmVjZW50ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJtb3Rpb24gZXZlbnQgZm9yIHRoaXMgZGV2aWNlIGluIHRoZSBpbmJvdW5kIHF1ZXVlLiIpOworI2VuZGlmCisKKyAgICAgICAgICAgICAgICAvLyBTYW5pdHkgY2hlY2sgZm9yIHNwZWNpYWwgY2FzZSBiZWNhdXNlIGRpc3BhdGNoIGlzIGludGVycnVwdGlibGUuCisgICAgICAgICAgICAgICAgLy8gVGhlIGRpc3BhdGNoIGxvZ2ljIGlzIHBhcnRpYWxseSBpbnRlcnJ1cHRpYmxlIGFuZCByZWxlYXNlcyBpdHMgbG9jayB3aGlsZQorICAgICAgICAgICAgICAgIC8vIGlkZW50aWZ5aW5nIHRhcmdldHMuICBIb3dldmVyLCBhcyBzb29uIGFzIHRoZSB0YXJnZXRzIGhhdmUgYmVlbiBpZGVudGlmaWVkLAorICAgICAgICAgICAgICAgIC8vIHRoZSBkaXNwYXRjaGVyIHByb2NlZWRzIHRvIHdyaXRlIGEgZGlzcGF0Y2ggZW50cnkgaW50byBhbGwgcmVsZXZhbnQgb3V0Ym91bmQKKyAgICAgICAgICAgICAgICAvLyBxdWV1ZXMgYW5kIHRoZW4gcHJvbXB0bHkgcmVtb3ZlcyB0aGUgbW90aW9uIGVudHJ5IGZyb20gdGhlIHF1ZXVlLgorICAgICAgICAgICAgICAgIC8vCisgICAgICAgICAgICAgICAgLy8gQ29uc2VxdWVudGx5LCB3ZSBzaG91bGQgbmV2ZXIgb2JzZXJ2ZSB0aGUgY2FzZSB3aGVyZSB0aGUgaW5ib3VuZCBxdWV1ZSBjb250YWlucworICAgICAgICAgICAgICAgIC8vIGFuIGluLXByb2dyZXNzIG1vdGlvbiBlbnRyeSB1bmxlc3MgdGhlIGN1cnJlbnQgaW5wdXQgdGFyZ2V0cyBhcmUgaW52YWxpZAorICAgICAgICAgICAgICAgIC8vIChjdXJyZW50bHkgYmVpbmcgY29tcHV0ZWQpLiAgQ2hlY2sgZm9yIHRoaXMhCisgICAgICAgICAgICAgICAgYXNzZXJ0KCEgKG1vdGlvbkVudHJ5LT5kaXNwYXRjaEluUHJvZ3Jlc3MgJiYgbUN1cnJlbnRJbnB1dFRhcmdldHNWYWxpZCkpOworCisgICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBkb25lIQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBTVFJFQU1JTkcgQ0FTRQorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgIC8vIFRoZXJlIGlzIG5vIHBlbmRpbmcgbW90aW9uIGV2ZW50IChvZiBhbnkga2luZCkgZm9yIHRoaXMgZGV2aWNlIGluIHRoZSBpbmJvdW5kIHF1ZXVlLgorICAgICAgICAgICAgLy8gU2VhcmNoIHRoZSBvdXRib3VuZCBxdWV1ZXMgZm9yIGEgc3luY2hyb25vdXNseSBkaXNwYXRjaGVkIG1vdGlvbiBldmVudCBmb3IgdGhpcworICAgICAgICAgICAgLy8gZGV2aWNlLiAgSWYgZm91bmQsIHRoZW4gd2UgYXBwZW5kIHRoZSBuZXcgc2FtcGxlIHRvIHRoYXQgZXZlbnQgYW5kIHRoZW4gdHJ5IHRvCisgICAgICAgICAgICAvLyBwdXNoIGl0IG91dCB0byBhbGwgY3VycmVudCB0YXJnZXRzLiAgSXQgaXMgcG9zc2libGUgdGhhdCBzb21lIHRhcmdldHMgd2lsbCBhbHJlYWR5CisgICAgICAgICAgICAvLyBoYXZlIGNvbnN1bWVkIHRoZSBtb3Rpb24gZXZlbnQuICBUaGlzIGNhc2UgaXMgYXV0b21hdGljYWxseSBoYW5kbGVkIGJ5IHRoZQorICAgICAgICAgICAgLy8gbG9naWMgaW4gcHJlcGFyZURpc3BhdGNoQ3ljbGVMb2NrZWQgYnkgdHJhY2tpbmcgd2hlcmUgcmVzdW1wdGlvbiB0YWtlcyBwbGFjZS4KKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBUaGUgcmVhc29uIHdlIGxvb2sgZm9yIGEgc3luY2hyb25vdXNseSBkaXNwYXRjaGVkIG1vdGlvbiBldmVudCBpcyBiZWNhdXNlIHdlCisgICAgICAgICAgICAvLyB3YW50IHRvIGJlIHN1cmUgdGhhdCBubyBvdGhlciBtb3Rpb24gZXZlbnRzIGhhdmUgYmVlbiBkaXNwYXRjaGVkIHNpbmNlIHRoZSBtb3ZlLgorICAgICAgICAgICAgLy8gSXQncyBhbHNvIGNvbnZlbmllbnQgYmVjYXVzZSBpdCBtZWFucyB0aGF0IHRoZSBpbnB1dCB0YXJnZXRzIGFyZSBzdGlsbCB2YWxpZC4KKyAgICAgICAgICAgIC8vIFRoaXMgY29kZSBjb3VsZCBiZSBpbXByb3ZlZCB0byBzdXBwb3J0IHN0cmVhbWluZyBvZiBhc3luY2hyb25vdXNseSBkaXNwYXRjaGVkCisgICAgICAgICAgICAvLyBtb3Rpb24gZXZlbnRzICh3aGljaCBtaWdodCBiZSBzaWduaWZpY2FudGx5IG1vcmUgZWZmaWNpZW50KSBidXQgaXQgbWF5IGJlY29tZQorICAgICAgICAgICAgLy8gYSBsaXR0bGUgbW9yZSBjb21wbGljYXRlZCBhcyBhIHJlc3VsdC4KKyAgICAgICAgICAgIC8vCisgICAgICAgICAgICAvLyBOb3RlOiBUaGlzIGNvZGUgY3J1Y2lhbGx5IGRlcGVuZHMgb24gdGhlIGludmFyaWFudCB0aGF0IGFuIG91dGJvdW5kIHF1ZXVlIGFsd2F5cworICAgICAgICAgICAgLy8gICAgICAgY29udGFpbnMgYXQgbW9zdCBvbmUgc3luY2hyb25vdXMgZXZlbnQgYW5kIGl0IGlzIGFsd2F5cyBsYXN0IChidXQgaXQgbWlnaHQKKyAgICAgICAgICAgIC8vICAgICAgIG5vdCBiZSBmaXJzdCEpLgorICAgICAgICAgICAgaWYgKG1DdXJyZW50SW5wdXRUYXJnZXRzVmFsaWQpIHsKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1BY3RpdmVDb25uZWN0aW9ucy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBDb25uZWN0aW9uKiBjb25uZWN0aW9uID0gbUFjdGl2ZUNvbm5lY3Rpb25zLml0ZW1BdChpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCEgY29ubmVjdGlvbi0+b3V0Ym91bmRRdWV1ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIERpc3BhdGNoRW50cnkqIGRpc3BhdGNoRW50cnkgPSBjb25uZWN0aW9uLT5vdXRib3VuZFF1ZXVlLnRhaWwucHJldjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaXNwYXRjaEVudHJ5LT50YXJnZXRGbGFncyAmIElucHV0VGFyZ2V0OjpGTEFHX1NZTkMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGlzcGF0Y2hFbnRyeS0+ZXZlbnRFbnRyeS0+dHlwZSAhPSBFdmVudEVudHJ5OjpUWVBFX01PVElPTikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIE5vQmF0Y2hpbmdPclN0cmVhbWluZzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNb3Rpb25FbnRyeSogc3luY2VkTW90aW9uRW50cnkgPSBzdGF0aWNfY2FzdDxNb3Rpb25FbnRyeSo+KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2hFbnRyeS0+ZXZlbnRFbnRyeSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN5bmNlZE1vdGlvbkVudHJ5LT5hY3Rpb24gIT0gTU9USU9OX0VWRU5UX0FDVElPTl9NT1ZFCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBzeW5jZWRNb3Rpb25FbnRyeS0+ZGV2aWNlSWQgIT0gZGV2aWNlSWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHN5bmNlZE1vdGlvbkVudHJ5LT5wb2ludGVyQ291bnQgIT0gcG9pbnRlckNvdW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBzeW5jZWRNb3Rpb25FbnRyeS0+aXNJbmplY3RlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gTm9CYXRjaGluZ09yU3RyZWFtaW5nOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZvdW5kIHN5bmNlZCBtb3ZlIGVudHJ5LiAgQXBwZW5kIHNhbXBsZSBhbmQgcmVzdW1lIGRpc3BhdGNoLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1BbGxvY2F0b3IuYXBwZW5kTW90aW9uU2FtcGxlKHN5bmNlZE1vdGlvbkVudHJ5LCBldmVudFRpbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyQ29vcmRzKTsKKyAgICAjaWYgREVCVUdfQkFUQ0hJTkcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMT0dEKCJBcHBlbmRlZCBtb3Rpb24gc2FtcGxlIG9udG8gYmF0Y2ggZm9yIG1vc3QgcmVjZW50IHN5bmNocm9ub3VzbHkgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRpc3BhdGNoZWQgbW90aW9uIGV2ZW50IGZvciB0aGlzIGRldmljZSBpbiB0aGUgb3V0Ym91bmQgcXVldWVzLiIpOworICAgICNlbmRpZgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5zZWNzX3QgY3VycmVudFRpbWUgPSBub3coKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaEV2ZW50VG9DdXJyZW50SW5wdXRUYXJnZXRzTG9ja2VkKGN1cnJlbnRUaW1lLCBzeW5jZWRNb3Rpb25FbnRyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRydWUgLypyZXN1bWVXaXRoQXBwZW5kZWRNb3Rpb25TYW1wbGUqLyk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5Db21tYW5kc0xvY2tlZEludGVycnVwdGlibGUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47IC8vIGRvbmUhCisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKK05vQmF0Y2hpbmdPclN0cmVhbWluZzo7CisgICAgICAgIH0KKworICAgICAgICAvLyBKdXN0IGVucXVldWUgYSBuZXcgbW90aW9uIGV2ZW50LgorICAgICAgICBNb3Rpb25FbnRyeSogbmV3RW50cnkgPSBtQWxsb2NhdG9yLm9idGFpbk1vdGlvbkVudHJ5KGV2ZW50VGltZSwKKyAgICAgICAgICAgICAgICBkZXZpY2VJZCwgbmF0dXJlLCBwb2xpY3lGbGFncywgYWN0aW9uLCBtZXRhU3RhdGUsIGVkZ2VGbGFncywKKyAgICAgICAgICAgICAgICB4UHJlY2lzaW9uLCB5UHJlY2lzaW9uLCBkb3duVGltZSwKKyAgICAgICAgICAgICAgICBwb2ludGVyQ291bnQsIHBvaW50ZXJJZHMsIHBvaW50ZXJDb29yZHMpOworCisgICAgICAgIHdhc0VtcHR5ID0gbUluYm91bmRRdWV1ZS5pc0VtcHR5KCk7CisgICAgICAgIG1JbmJvdW5kUXVldWUuZW5xdWV1ZUF0VGFpbChuZXdFbnRyeSk7CisgICAgfSAvLyByZWxlYXNlIGxvY2sKKworICAgIGlmICh3YXNFbXB0eSkgeworICAgICAgICBtUG9sbExvb3AtPndha2UoKTsKKyAgICB9Cit9CisKK2ludDMyX3QgSW5wdXREaXNwYXRjaGVyOjppbmplY3RJbnB1dEV2ZW50KGNvbnN0IElucHV0RXZlbnQqIGV2ZW50LAorICAgICAgICBpbnQzMl90IGluamVjdG9yUGlkLCBpbnQzMl90IGluamVjdG9yVWlkLCBib29sIHN5bmMsIGludDMyX3QgdGltZW91dE1pbGxpcykgeworI2lmIERFQlVHX0lOQk9VTkRfRVZFTlRfREVUQUlMUworICAgIExPR0QoImluamVjdElucHV0RXZlbnQgLSBldmVudFR5cGU9JWQsIGluamVjdG9yUGlkPSVkLCBpbmplY3RvclVpZD0lZCwgIgorICAgICAgICAgICAgInN5bmM9JWQsIHRpbWVvdXRNaWxsaXM9JWQiLAorICAgICAgICAgICAgZXZlbnQtPmdldFR5cGUoKSwgaW5qZWN0b3JQaWQsIGluamVjdG9yVWlkLCBzeW5jLCB0aW1lb3V0TWlsbGlzKTsKKyNlbmRpZgorCisgICAgbnNlY3NfdCBlbmRUaW1lID0gbm93KCkgKyBtaWxsaXNlY29uZHNfdG9fbmFub3NlY29uZHModGltZW91dE1pbGxpcyk7CisKKyAgICBFdmVudEVudHJ5KiBpbmplY3RlZEVudHJ5OworICAgIGJvb2wgd2FzRW1wdHk7CisgICAgeyAvLyBhY3F1aXJlIGxvY2sKKyAgICAgICAgQXV0b011dGV4IF9sKG1Mb2NrKTsKKworICAgICAgICBpbmplY3RlZEVudHJ5ID0gY3JlYXRlRW50cnlGcm9tSW5wdXRFdmVudExvY2tlZChldmVudCk7CisgICAgICAgIGluamVjdGVkRW50cnktPnJlZkNvdW50ICs9IDE7CisgICAgICAgIGluamVjdGVkRW50cnktPmluamVjdG9yUGlkID0gaW5qZWN0b3JQaWQ7CisgICAgICAgIGluamVjdGVkRW50cnktPmluamVjdG9yVWlkID0gaW5qZWN0b3JVaWQ7CisKKyAgICAgICAgd2FzRW1wdHkgPSBtSW5ib3VuZFF1ZXVlLmlzRW1wdHkoKTsKKyAgICAgICAgbUluYm91bmRRdWV1ZS5lbnF1ZXVlQXRUYWlsKGluamVjdGVkRW50cnkpOworCisgICAgfSAvLyByZWxlYXNlIGxvY2sKKworICAgIGlmICh3YXNFbXB0eSkgeworICAgICAgICBtUG9sbExvb3AtPndha2UoKTsKKyAgICB9CisKKyAgICBpbnQzMl90IGluamVjdGlvblJlc3VsdDsKKyAgICB7IC8vIGFjcXVpcmUgbG9jaworICAgICAgICBBdXRvTXV0ZXggX2wobUxvY2spOworCisgICAgICAgIGZvciAoOzspIHsKKyAgICAgICAgICAgIGluamVjdGlvblJlc3VsdCA9IGluamVjdGVkRW50cnktPmluamVjdGlvblJlc3VsdDsKKyAgICAgICAgICAgIGlmIChpbmplY3Rpb25SZXN1bHQgIT0gSU5QVVRfRVZFTlRfSU5KRUNUSU9OX1BFTkRJTkcpIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbnNlY3NfdCByZW1haW5pbmdUaW1lb3V0ID0gZW5kVGltZSAtIG5vdygpOworICAgICAgICAgICAgaWYgKHJlbWFpbmluZ1RpbWVvdXQgPD0gMCkgeworICAgICAgICAgICAgICAgIGluamVjdGlvblJlc3VsdCA9IElOUFVUX0VWRU5UX0lOSkVDVElPTl9USU1FRF9PVVQ7CisgICAgICAgICAgICAgICAgc3luYyA9IGZhbHNlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtSW5qZWN0aW9uUmVzdWx0QXZhaWxhYmxlQ29uZGl0aW9uLndhaXRSZWxhdGl2ZShtTG9jaywgcmVtYWluaW5nVGltZW91dCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3luYykgeworICAgICAgICAgICAgd2hpbGUgKCEgaXNGdWxseVN5bmNocm9uaXplZExvY2tlZCgpKSB7CisgICAgICAgICAgICAgICAgbnNlY3NfdCByZW1haW5pbmdUaW1lb3V0ID0gZW5kVGltZSAtIG5vdygpOworICAgICAgICAgICAgICAgIGlmIChyZW1haW5pbmdUaW1lb3V0IDw9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgaW5qZWN0aW9uUmVzdWx0ID0gSU5QVVRfRVZFTlRfSU5KRUNUSU9OX1RJTUVEX09VVDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgbUZ1bGx5U3luY2hyb25pemVkQ29uZGl0aW9uLndhaXRSZWxhdGl2ZShtTG9jaywgcmVtYWluaW5nVGltZW91dCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBtQWxsb2NhdG9yLnJlbGVhc2VFdmVudEVudHJ5KGluamVjdGVkRW50cnkpOworICAgIH0gLy8gcmVsZWFzZSBsb2NrCisKKyAgICByZXR1cm4gaW5qZWN0aW9uUmVzdWx0OworfQorCit2b2lkIElucHV0RGlzcGF0Y2hlcjo6c2V0SW5qZWN0aW9uUmVzdWx0TG9ja2VkKEV2ZW50RW50cnkqIGVudHJ5LCBpbnQzMl90IGluamVjdGlvblJlc3VsdCkgeworICAgIGlmIChlbnRyeS0+aXNJbmplY3RlZCgpKSB7CisjaWYgREVCVUdfSU5KRUNUSU9OCisgICAgICAgIExPR0QoIlNldHRpbmcgaW5wdXQgZXZlbnQgaW5qZWN0aW9uIHJlc3VsdCB0byAlZC4gICIKKyAgICAgICAgICAgICAgICAiaW5qZWN0b3JQaWQ9JWQsIGluamVjdG9yVWlkPSVkIiwKKyAgICAgICAgICAgICAgICAgaW5qZWN0aW9uUmVzdWx0LCBlbnRyeS0+aW5qZWN0b3JQaWQsIGVudHJ5LT5pbmplY3RvclVpZCk7CisjZW5kaWYKKworICAgICAgICBlbnRyeS0+aW5qZWN0aW9uUmVzdWx0ID0gaW5qZWN0aW9uUmVzdWx0OworICAgICAgICBtSW5qZWN0aW9uUmVzdWx0QXZhaWxhYmxlQ29uZGl0aW9uLmJyb2FkY2FzdCgpOworICAgIH0KK30KKworYm9vbCBJbnB1dERpc3BhdGNoZXI6OmlzRnVsbHlTeW5jaHJvbml6ZWRMb2NrZWQoKSB7CisgICAgcmV0dXJuIG1JbmJvdW5kUXVldWUuaXNFbXB0eSgpICYmIG1BY3RpdmVDb25uZWN0aW9ucy5pc0VtcHR5KCk7Cit9CisKK0lucHV0RGlzcGF0Y2hlcjo6RXZlbnRFbnRyeSogSW5wdXREaXNwYXRjaGVyOjpjcmVhdGVFbnRyeUZyb21JbnB1dEV2ZW50TG9ja2VkKAorICAgICAgICBjb25zdCBJbnB1dEV2ZW50KiBldmVudCkgeworICAgIHN3aXRjaCAoZXZlbnQtPmdldFR5cGUoKSkgeworICAgIGNhc2UgSU5QVVRfRVZFTlRfVFlQRV9LRVk6IHsKKyAgICAgICAgY29uc3QgS2V5RXZlbnQqIGtleUV2ZW50ID0gc3RhdGljX2Nhc3Q8Y29uc3QgS2V5RXZlbnQqPihldmVudCk7CisgICAgICAgIHVpbnQzMl90IHBvbGljeUZsYWdzID0gMDsgLy8gWFhYIGNvbnNpZGVyIGFkZGluZyBhIHBvbGljeSBmbGFnIHRvIHRyYWNrIGluamVjdGVkIGV2ZW50cworCisgICAgICAgIEtleUVudHJ5KiBrZXlFbnRyeSA9IG1BbGxvY2F0b3Iub2J0YWluS2V5RW50cnkoa2V5RXZlbnQtPmdldEV2ZW50VGltZSgpLAorICAgICAgICAgICAgICAgIGtleUV2ZW50LT5nZXREZXZpY2VJZCgpLCBrZXlFdmVudC0+Z2V0TmF0dXJlKCksIHBvbGljeUZsYWdzLAorICAgICAgICAgICAgICAgIGtleUV2ZW50LT5nZXRBY3Rpb24oKSwga2V5RXZlbnQtPmdldEZsYWdzKCksCisgICAgICAgICAgICAgICAga2V5RXZlbnQtPmdldEtleUNvZGUoKSwga2V5RXZlbnQtPmdldFNjYW5Db2RlKCksIGtleUV2ZW50LT5nZXRNZXRhU3RhdGUoKSwKKyAgICAgICAgICAgICAgICBrZXlFdmVudC0+Z2V0UmVwZWF0Q291bnQoKSwga2V5RXZlbnQtPmdldERvd25UaW1lKCkpOworICAgICAgICByZXR1cm4ga2V5RW50cnk7CisgICAgfQorCisgICAgY2FzZSBJTlBVVF9FVkVOVF9UWVBFX01PVElPTjogeworICAgICAgICBjb25zdCBNb3Rpb25FdmVudCogbW90aW9uRXZlbnQgPSBzdGF0aWNfY2FzdDxjb25zdCBNb3Rpb25FdmVudCo+KGV2ZW50KTsKKyAgICAgICAgdWludDMyX3QgcG9saWN5RmxhZ3MgPSAwOyAvLyBYWFggY29uc2lkZXIgYWRkaW5nIGEgcG9saWN5IGZsYWcgdG8gdHJhY2sgaW5qZWN0ZWQgZXZlbnRzCisKKyAgICAgICAgY29uc3QgbnNlY3NfdCogc2FtcGxlRXZlbnRUaW1lcyA9IG1vdGlvbkV2ZW50LT5nZXRTYW1wbGVFdmVudFRpbWVzKCk7CisgICAgICAgIGNvbnN0IFBvaW50ZXJDb29yZHMqIHNhbXBsZVBvaW50ZXJDb29yZHMgPSBtb3Rpb25FdmVudC0+Z2V0U2FtcGxlUG9pbnRlckNvb3JkcygpOworICAgICAgICBzaXplX3QgcG9pbnRlckNvdW50ID0gbW90aW9uRXZlbnQtPmdldFBvaW50ZXJDb3VudCgpOworCisgICAgICAgIE1vdGlvbkVudHJ5KiBtb3Rpb25FbnRyeSA9IG1BbGxvY2F0b3Iub2J0YWluTW90aW9uRW50cnkoKnNhbXBsZUV2ZW50VGltZXMsCisgICAgICAgICAgICAgICAgbW90aW9uRXZlbnQtPmdldERldmljZUlkKCksIG1vdGlvbkV2ZW50LT5nZXROYXR1cmUoKSwgcG9saWN5RmxhZ3MsCisgICAgICAgICAgICAgICAgbW90aW9uRXZlbnQtPmdldEFjdGlvbigpLCBtb3Rpb25FdmVudC0+Z2V0TWV0YVN0YXRlKCksIG1vdGlvbkV2ZW50LT5nZXRFZGdlRmxhZ3MoKSwKKyAgICAgICAgICAgICAgICBtb3Rpb25FdmVudC0+Z2V0WFByZWNpc2lvbigpLCBtb3Rpb25FdmVudC0+Z2V0WVByZWNpc2lvbigpLAorICAgICAgICAgICAgICAgIG1vdGlvbkV2ZW50LT5nZXREb3duVGltZSgpLCB1aW50MzJfdChwb2ludGVyQ291bnQpLAorICAgICAgICAgICAgICAgIG1vdGlvbkV2ZW50LT5nZXRQb2ludGVySWRzKCksIHNhbXBsZVBvaW50ZXJDb29yZHMpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gbW90aW9uRXZlbnQtPmdldEhpc3RvcnlTaXplKCk7IGkgPiAwOyBpLS0pIHsKKyAgICAgICAgICAgIHNhbXBsZUV2ZW50VGltZXMgKz0gMTsKKyAgICAgICAgICAgIHNhbXBsZVBvaW50ZXJDb29yZHMgKz0gcG9pbnRlckNvdW50OworICAgICAgICAgICAgbUFsbG9jYXRvci5hcHBlbmRNb3Rpb25TYW1wbGUobW90aW9uRW50cnksICpzYW1wbGVFdmVudFRpbWVzLCBzYW1wbGVQb2ludGVyQ29vcmRzKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbW90aW9uRW50cnk7CisgICAgfQorCisgICAgZGVmYXVsdDoKKyAgICAgICAgYXNzZXJ0KGZhbHNlKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorfQorCit2b2lkIElucHV0RGlzcGF0Y2hlcjo6cmVzZXRLZXlSZXBlYXRMb2NrZWQoKSB7CisgICAgaWYgKG1LZXlSZXBlYXRTdGF0ZS5sYXN0S2V5RW50cnkpIHsKKyAgICAgICAgbUFsbG9jYXRvci5yZWxlYXNlS2V5RW50cnkobUtleVJlcGVhdFN0YXRlLmxhc3RLZXlFbnRyeSk7CisgICAgICAgIG1LZXlSZXBlYXRTdGF0ZS5sYXN0S2V5RW50cnkgPSBOVUxMOworICAgIH0KK30KKwordm9pZCBJbnB1dERpc3BhdGNoZXI6OnByZWVtcHRJbnB1dERpc3BhdGNoKCkgeworI2lmIERFQlVHX0RJU1BBVENIX0NZQ0xFCisgICAgTE9HRCgicHJlZW1wdElucHV0RGlzcGF0Y2giKTsKKyNlbmRpZgorCisgICAgYm9vbCBwcmVlbXB0ZWRPbmUgPSBmYWxzZTsKKyAgICB7IC8vIGFjcXVpcmUgbG9jaworICAgICAgICBBdXRvTXV0ZXggX2wobUxvY2spOworCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbUFjdGl2ZUNvbm5lY3Rpb25zLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICBDb25uZWN0aW9uKiBjb25uZWN0aW9uID0gbUFjdGl2ZUNvbm5lY3Rpb25zW2ldOworICAgICAgICAgICAgaWYgKGNvbm5lY3Rpb24tPmhhc1BlbmRpbmdTeW5jVGFyZ2V0KCkpIHsKKyNpZiBERUJVR19ESVNQQVRDSF9DWUNMRQorICAgICAgICAgICAgICAgIExPR0QoImNoYW5uZWwgJyVzJyB+IFByZWVtcHRlZCBwZW5kaW5nIHN5bmNocm9ub3VzIGRpc3BhdGNoIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24tPmdldElucHV0Q2hhbm5lbE5hbWUoKSk7CisjZW5kaWYKKyAgICAgICAgICAgICAgICBjb25uZWN0aW9uLT5vdXRib3VuZFF1ZXVlLnRhaWwucHJldi0+dGFyZ2V0RmxhZ3MgJj0gfiBJbnB1dFRhcmdldDo6RkxBR19TWU5DOworICAgICAgICAgICAgICAgIHByZWVtcHRlZE9uZSA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9IC8vIHJlbGVhc2UgbG9jaworCisgICAgaWYgKHByZWVtcHRlZE9uZSkgeworICAgICAgICAvLyBXYWtlIHVwIHRoZSBwb2xsIGxvb3Agc28gaXQgY2FuIGdldCBhIGhlYWQgc3RhcnQgZGlzcGF0Y2hpbmcgdGhlIG5leHQgZXZlbnQuCisgICAgICAgIG1Qb2xsTG9vcC0+d2FrZSgpOworICAgIH0KK30KKworc3RhdHVzX3QgSW5wdXREaXNwYXRjaGVyOjpyZWdpc3RlcklucHV0Q2hhbm5lbChjb25zdCBzcDxJbnB1dENoYW5uZWw+JiBpbnB1dENoYW5uZWwpIHsKKyNpZiBERUJVR19SRUdJU1RSQVRJT04KKyAgICBMT0dEKCJjaGFubmVsICclcycgfiByZWdpc3RlcklucHV0Q2hhbm5lbCIsIGlucHV0Q2hhbm5lbC0+Z2V0TmFtZSgpLnN0cmluZygpKTsKKyNlbmRpZgorCisgICAgaW50IHJlY2VpdmVGZDsKKyAgICB7IC8vIGFjcXVpcmUgbG9jaworICAgICAgICBBdXRvTXV0ZXggX2wobUxvY2spOworCisgICAgICAgIHJlY2VpdmVGZCA9IGlucHV0Q2hhbm5lbC0+Z2V0UmVjZWl2ZVBpcGVGZCgpOworICAgICAgICBpZiAobUNvbm5lY3Rpb25zQnlSZWNlaXZlRmQuaW5kZXhPZktleShyZWNlaXZlRmQpID49IDApIHsKKyAgICAgICAgICAgIExPR1coIkF0dGVtcHRlZCB0byByZWdpc3RlciBhbHJlYWR5IHJlZ2lzdGVyZWQgaW5wdXQgY2hhbm5lbCAnJXMnIiwKKyAgICAgICAgICAgICAgICAgICAgaW5wdXRDaGFubmVsLT5nZXROYW1lKCkuc3RyaW5nKCkpOworICAgICAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKyAgICAgICAgfQorCisgICAgICAgIHNwPENvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBuZXcgQ29ubmVjdGlvbihpbnB1dENoYW5uZWwpOworICAgICAgICBzdGF0dXNfdCBzdGF0dXMgPSBjb25uZWN0aW9uLT5pbml0aWFsaXplKCk7CisgICAgICAgIGlmIChzdGF0dXMpIHsKKyAgICAgICAgICAgIExPR0UoIkZhaWxlZCB0byBpbml0aWFsaXplIGlucHV0IHB1Ymxpc2hlciBmb3IgaW5wdXQgY2hhbm5lbCAnJXMnLCBzdGF0dXM9JWQiLAorICAgICAgICAgICAgICAgICAgICBpbnB1dENoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKSwgc3RhdHVzKTsKKyAgICAgICAgICAgIHJldHVybiBzdGF0dXM7CisgICAgICAgIH0KKworICAgICAgICBtQ29ubmVjdGlvbnNCeVJlY2VpdmVGZC5hZGQocmVjZWl2ZUZkLCBjb25uZWN0aW9uKTsKKworICAgICAgICBydW5Db21tYW5kc0xvY2tlZEludGVycnVwdGlibGUoKTsKKyAgICB9IC8vIHJlbGVhc2UgbG9jaworCisgICAgbVBvbGxMb29wLT5zZXRDYWxsYmFjayhyZWNlaXZlRmQsIFBPTExJTiwgaGFuZGxlUmVjZWl2ZUNhbGxiYWNrLCB0aGlzKTsKKyAgICByZXR1cm4gT0s7Cit9CisKK3N0YXR1c190IElucHV0RGlzcGF0Y2hlcjo6dW5yZWdpc3RlcklucHV0Q2hhbm5lbChjb25zdCBzcDxJbnB1dENoYW5uZWw+JiBpbnB1dENoYW5uZWwpIHsKKyNpZiBERUJVR19SRUdJU1RSQVRJT04KKyAgICBMT0dEKCJjaGFubmVsICclcycgfiB1bnJlZ2lzdGVySW5wdXRDaGFubmVsIiwgaW5wdXRDaGFubmVsLT5nZXROYW1lKCkuc3RyaW5nKCkpOworI2VuZGlmCisKKyAgICBpbnQzMl90IHJlY2VpdmVGZDsKKyAgICB7IC8vIGFjcXVpcmUgbG9jaworICAgICAgICBBdXRvTXV0ZXggX2wobUxvY2spOworCisgICAgICAgIHJlY2VpdmVGZCA9IGlucHV0Q2hhbm5lbC0+Z2V0UmVjZWl2ZVBpcGVGZCgpOworICAgICAgICBzc2l6ZV90IGNvbm5lY3Rpb25JbmRleCA9IG1Db25uZWN0aW9uc0J5UmVjZWl2ZUZkLmluZGV4T2ZLZXkocmVjZWl2ZUZkKTsKKyAgICAgICAgaWYgKGNvbm5lY3Rpb25JbmRleCA8IDApIHsKKyAgICAgICAgICAgIExPR1coIkF0dGVtcHRlZCB0byB1bnJlZ2lzdGVyIGFscmVhZHkgdW5yZWdpc3RlcmVkIGlucHV0IGNoYW5uZWwgJyVzJyIsCisgICAgICAgICAgICAgICAgICAgIGlucHV0Q2hhbm5lbC0+Z2V0TmFtZSgpLnN0cmluZygpKTsKKyAgICAgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisgICAgICAgIH0KKworICAgICAgICBzcDxDb25uZWN0aW9uPiBjb25uZWN0aW9uID0gbUNvbm5lY3Rpb25zQnlSZWNlaXZlRmQudmFsdWVBdChjb25uZWN0aW9uSW5kZXgpOworICAgICAgICBtQ29ubmVjdGlvbnNCeVJlY2VpdmVGZC5yZW1vdmVJdGVtc0F0KGNvbm5lY3Rpb25JbmRleCk7CisKKyAgICAgICAgY29ubmVjdGlvbi0+c3RhdHVzID0gQ29ubmVjdGlvbjo6U1RBVFVTX1pPTUJJRTsKKworICAgICAgICBuc2Vjc190IGN1cnJlbnRUaW1lID0gbm93KCk7CisgICAgICAgIGFib3J0RGlzcGF0Y2hDeWNsZUxvY2tlZChjdXJyZW50VGltZSwgY29ubmVjdGlvbiwgdHJ1ZSAvKmJyb2tlbiovKTsKKworICAgICAgICBydW5Db21tYW5kc0xvY2tlZEludGVycnVwdGlibGUoKTsKKyAgICB9IC8vIHJlbGVhc2UgbG9jaworCisgICAgbVBvbGxMb29wLT5yZW1vdmVDYWxsYmFjayhyZWNlaXZlRmQpOworCisgICAgLy8gV2FrZSB0aGUgcG9sbCBsb29wIGJlY2F1c2UgcmVtb3ZpbmcgdGhlIGNvbm5lY3Rpb24gbWF5IGhhdmUgY2hhbmdlZCB0aGUgY3VycmVudAorICAgIC8vIHN5bmNocm9uaXphdGlvbiBzdGF0ZS4KKyAgICBtUG9sbExvb3AtPndha2UoKTsKKyAgICByZXR1cm4gT0s7Cit9CisKK3ZvaWQgSW5wdXREaXNwYXRjaGVyOjphY3RpdmF0ZUNvbm5lY3Rpb25Mb2NrZWQoQ29ubmVjdGlvbiogY29ubmVjdGlvbikgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbUFjdGl2ZUNvbm5lY3Rpb25zLnNpemUoKTsgaSsrKSB7CisgICAgICAgIGlmIChtQWN0aXZlQ29ubmVjdGlvbnMuaXRlbUF0KGkpID09IGNvbm5lY3Rpb24pIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKyAgICBtQWN0aXZlQ29ubmVjdGlvbnMuYWRkKGNvbm5lY3Rpb24pOworfQorCit2b2lkIElucHV0RGlzcGF0Y2hlcjo6ZGVhY3RpdmF0ZUNvbm5lY3Rpb25Mb2NrZWQoQ29ubmVjdGlvbiogY29ubmVjdGlvbikgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbUFjdGl2ZUNvbm5lY3Rpb25zLnNpemUoKTsgaSsrKSB7CisgICAgICAgIGlmIChtQWN0aXZlQ29ubmVjdGlvbnMuaXRlbUF0KGkpID09IGNvbm5lY3Rpb24pIHsKKyAgICAgICAgICAgIG1BY3RpdmVDb25uZWN0aW9ucy5yZW1vdmVBdChpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBJbnB1dERpc3BhdGNoZXI6Om9uRGlzcGF0Y2hDeWNsZVN0YXJ0ZWRMb2NrZWQoCisgICAgICAgIG5zZWNzX3QgY3VycmVudFRpbWUsIGNvbnN0IHNwPENvbm5lY3Rpb24+JiBjb25uZWN0aW9uKSB7Cit9CisKK3ZvaWQgSW5wdXREaXNwYXRjaGVyOjpvbkRpc3BhdGNoQ3ljbGVGaW5pc2hlZExvY2tlZCgKKyAgICAgICAgbnNlY3NfdCBjdXJyZW50VGltZSwgY29uc3Qgc3A8Q29ubmVjdGlvbj4mIGNvbm5lY3Rpb24sIGJvb2wgcmVjb3ZlcmVkRnJvbUFOUikgeworICAgIGlmIChyZWNvdmVyZWRGcm9tQU5SKSB7CisgICAgICAgIExPR0koImNoYW5uZWwgJyVzJyB+IFJlY292ZXJlZCBmcm9tIEFOUi4gICUwMS4xZm1zIHNpbmNlIGV2ZW50LCAiCisgICAgICAgICAgICAgICAgIiUwMS4xZm1zIHNpbmNlIGRpc3BhdGNoLCAlMDEuMWZtcyBzaW5jZSBBTlIiLAorICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24tPmdldElucHV0Q2hhbm5lbE5hbWUoKSwKKyAgICAgICAgICAgICAgICBjb25uZWN0aW9uLT5nZXRFdmVudExhdGVuY3lNaWxsaXMoY3VycmVudFRpbWUpLAorICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24tPmdldERpc3BhdGNoTGF0ZW5jeU1pbGxpcyhjdXJyZW50VGltZSksCisgICAgICAgICAgICAgICAgY29ubmVjdGlvbi0+Z2V0QU5STGF0ZW5jeU1pbGxpcyhjdXJyZW50VGltZSkpOworCisgICAgICAgIENvbW1hbmRFbnRyeSogY29tbWFuZEVudHJ5ID0gcG9zdENvbW1hbmRMb2NrZWQoCisgICAgICAgICAgICAgICAgJiBJbnB1dERpc3BhdGNoZXI6OmRvTm90aWZ5SW5wdXRDaGFubmVsUmVjb3ZlcmVkRnJvbUFOUkxvY2tlZEludGVycnVwdGlibGUpOworICAgICAgICBjb21tYW5kRW50cnktPmNvbm5lY3Rpb24gPSBjb25uZWN0aW9uOworICAgIH0KK30KKwordm9pZCBJbnB1dERpc3BhdGNoZXI6Om9uRGlzcGF0Y2hDeWNsZUFOUkxvY2tlZCgKKyAgICAgICAgbnNlY3NfdCBjdXJyZW50VGltZSwgY29uc3Qgc3A8Q29ubmVjdGlvbj4mIGNvbm5lY3Rpb24pIHsKKyAgICBMT0dJKCJjaGFubmVsICclcycgfiBOb3QgcmVzcG9uZGluZyEgICUwMS4xZm1zIHNpbmNlIGV2ZW50LCAlMDEuMWZtcyBzaW5jZSBkaXNwYXRjaCIsCisgICAgICAgICAgICBjb25uZWN0aW9uLT5nZXRJbnB1dENoYW5uZWxOYW1lKCksCisgICAgICAgICAgICBjb25uZWN0aW9uLT5nZXRFdmVudExhdGVuY3lNaWxsaXMoY3VycmVudFRpbWUpLAorICAgICAgICAgICAgY29ubmVjdGlvbi0+Z2V0RGlzcGF0Y2hMYXRlbmN5TWlsbGlzKGN1cnJlbnRUaW1lKSk7CisKKyAgICBDb21tYW5kRW50cnkqIGNvbW1hbmRFbnRyeSA9IHBvc3RDb21tYW5kTG9ja2VkKAorICAgICAgICAgICAgJiBJbnB1dERpc3BhdGNoZXI6OmRvTm90aWZ5SW5wdXRDaGFubmVsQU5STG9ja2VkSW50ZXJydXB0aWJsZSk7CisgICAgY29tbWFuZEVudHJ5LT5jb25uZWN0aW9uID0gY29ubmVjdGlvbjsKK30KKwordm9pZCBJbnB1dERpc3BhdGNoZXI6Om9uRGlzcGF0Y2hDeWNsZUJyb2tlbkxvY2tlZCgKKyAgICAgICAgbnNlY3NfdCBjdXJyZW50VGltZSwgY29uc3Qgc3A8Q29ubmVjdGlvbj4mIGNvbm5lY3Rpb24pIHsKKyAgICBMT0dFKCJjaGFubmVsICclcycgfiBDaGFubmVsIGlzIHVucmVjb3ZlcmFibHkgYnJva2VuIGFuZCB3aWxsIGJlIGRpc3Bvc2VkISIsCisgICAgICAgICAgICBjb25uZWN0aW9uLT5nZXRJbnB1dENoYW5uZWxOYW1lKCkpOworCisgICAgQ29tbWFuZEVudHJ5KiBjb21tYW5kRW50cnkgPSBwb3N0Q29tbWFuZExvY2tlZCgKKyAgICAgICAgICAgICYgSW5wdXREaXNwYXRjaGVyOjpkb05vdGlmeUlucHV0Q2hhbm5lbEJyb2tlbkxvY2tlZEludGVycnVwdGlibGUpOworICAgIGNvbW1hbmRFbnRyeS0+Y29ubmVjdGlvbiA9IGNvbm5lY3Rpb247Cit9CisKK3ZvaWQgSW5wdXREaXNwYXRjaGVyOjpkb05vdGlmeUlucHV0Q2hhbm5lbEJyb2tlbkxvY2tlZEludGVycnVwdGlibGUoCisgICAgICAgIENvbW1hbmRFbnRyeSogY29tbWFuZEVudHJ5KSB7CisgICAgc3A8Q29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IGNvbW1hbmRFbnRyeS0+Y29ubmVjdGlvbjsKKworICAgIGlmIChjb25uZWN0aW9uLT5zdGF0dXMgIT0gQ29ubmVjdGlvbjo6U1RBVFVTX1pPTUJJRSkgeworICAgICAgICBtTG9jay51bmxvY2soKTsKKworICAgICAgICBtUG9saWN5LT5ub3RpZnlJbnB1dENoYW5uZWxCcm9rZW4oY29ubmVjdGlvbi0+aW5wdXRDaGFubmVsKTsKKworICAgICAgICBtTG9jay5sb2NrKCk7CisgICAgfQorfQorCit2b2lkIElucHV0RGlzcGF0Y2hlcjo6ZG9Ob3RpZnlJbnB1dENoYW5uZWxBTlJMb2NrZWRJbnRlcnJ1cHRpYmxlKAorICAgICAgICBDb21tYW5kRW50cnkqIGNvbW1hbmRFbnRyeSkgeworICAgIHNwPENvbm5lY3Rpb24+IGNvbm5lY3Rpb24gPSBjb21tYW5kRW50cnktPmNvbm5lY3Rpb247CisKKyAgICBpZiAoY29ubmVjdGlvbi0+c3RhdHVzICE9IENvbm5lY3Rpb246OlNUQVRVU19aT01CSUUpIHsKKyAgICAgICAgbUxvY2sudW5sb2NrKCk7CisKKyAgICAgICAgbnNlY3NfdCBuZXdUaW1lb3V0OworICAgICAgICBib29sIHJlc3VtZSA9IG1Qb2xpY3ktPm5vdGlmeUlucHV0Q2hhbm5lbEFOUihjb25uZWN0aW9uLT5pbnB1dENoYW5uZWwsIG5ld1RpbWVvdXQpOworCisgICAgICAgIG1Mb2NrLmxvY2soKTsKKworICAgICAgICBuc2Vjc190IGN1cnJlbnRUaW1lID0gbm93KCk7CisgICAgICAgIGlmIChyZXN1bWUpIHsKKyAgICAgICAgICAgIHJlc3VtZUFmdGVyVGltZW91dERpc3BhdGNoQ3ljbGVMb2NrZWQoY3VycmVudFRpbWUsIGNvbm5lY3Rpb24sIG5ld1RpbWVvdXQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYWJvcnREaXNwYXRjaEN5Y2xlTG9ja2VkKGN1cnJlbnRUaW1lLCBjb25uZWN0aW9uLCBmYWxzZSAvKihub3QpIGJyb2tlbiovKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBJbnB1dERpc3BhdGNoZXI6OmRvTm90aWZ5SW5wdXRDaGFubmVsUmVjb3ZlcmVkRnJvbUFOUkxvY2tlZEludGVycnVwdGlibGUoCisgICAgICAgIENvbW1hbmRFbnRyeSogY29tbWFuZEVudHJ5KSB7CisgICAgc3A8Q29ubmVjdGlvbj4gY29ubmVjdGlvbiA9IGNvbW1hbmRFbnRyeS0+Y29ubmVjdGlvbjsKKworICAgIGlmIChjb25uZWN0aW9uLT5zdGF0dXMgIT0gQ29ubmVjdGlvbjo6U1RBVFVTX1pPTUJJRSkgeworICAgICAgICBtTG9jay51bmxvY2soKTsKKworICAgICAgICBtUG9saWN5LT5ub3RpZnlJbnB1dENoYW5uZWxSZWNvdmVyZWRGcm9tQU5SKGNvbm5lY3Rpb24tPmlucHV0Q2hhbm5lbCk7CisKKyAgICAgICAgbUxvY2subG9jaygpOworICAgIH0KK30KKworCisvLyAtLS0gSW5wdXREaXNwYXRjaGVyOjpBbGxvY2F0b3IgLS0tCisKK0lucHV0RGlzcGF0Y2hlcjo6QWxsb2NhdG9yOjpBbGxvY2F0b3IoKSB7Cit9CisKK3ZvaWQgSW5wdXREaXNwYXRjaGVyOjpBbGxvY2F0b3I6OmluaXRpYWxpemVFdmVudEVudHJ5KEV2ZW50RW50cnkqIGVudHJ5LCBpbnQzMl90IHR5cGUsCisgICAgICAgIG5zZWNzX3QgZXZlbnRUaW1lKSB7CisgICAgZW50cnktPnR5cGUgPSB0eXBlOworICAgIGVudHJ5LT5yZWZDb3VudCA9IDE7CisgICAgZW50cnktPmRpc3BhdGNoSW5Qcm9ncmVzcyA9IGZhbHNlOworICAgIGVudHJ5LT5ldmVudFRpbWUgPSBldmVudFRpbWU7CisgICAgZW50cnktPmluamVjdGlvblJlc3VsdCA9IElOUFVUX0VWRU5UX0lOSkVDVElPTl9QRU5ESU5HOworICAgIGVudHJ5LT5pbmplY3RvclBpZCA9IC0xOworICAgIGVudHJ5LT5pbmplY3RvclVpZCA9IC0xOworfQorCitJbnB1dERpc3BhdGNoZXI6OkNvbmZpZ3VyYXRpb25DaGFuZ2VkRW50cnkqCitJbnB1dERpc3BhdGNoZXI6OkFsbG9jYXRvcjo6b2J0YWluQ29uZmlndXJhdGlvbkNoYW5nZWRFbnRyeShuc2Vjc190IGV2ZW50VGltZSkgeworICAgIENvbmZpZ3VyYXRpb25DaGFuZ2VkRW50cnkqIGVudHJ5ID0gbUNvbmZpZ3VyYXRpb25DaGFuZ2VFbnRyeVBvb2wuYWxsb2MoKTsKKyAgICBpbml0aWFsaXplRXZlbnRFbnRyeShlbnRyeSwgRXZlbnRFbnRyeTo6VFlQRV9DT05GSUdVUkFUSU9OX0NIQU5HRUQsIGV2ZW50VGltZSk7CisgICAgcmV0dXJuIGVudHJ5OworfQorCitJbnB1dERpc3BhdGNoZXI6OktleUVudHJ5KiBJbnB1dERpc3BhdGNoZXI6OkFsbG9jYXRvcjo6b2J0YWluS2V5RW50cnkobnNlY3NfdCBldmVudFRpbWUsCisgICAgICAgIGludDMyX3QgZGV2aWNlSWQsIGludDMyX3QgbmF0dXJlLCB1aW50MzJfdCBwb2xpY3lGbGFncywgaW50MzJfdCBhY3Rpb24sCisgICAgICAgIGludDMyX3QgZmxhZ3MsIGludDMyX3Qga2V5Q29kZSwgaW50MzJfdCBzY2FuQ29kZSwgaW50MzJfdCBtZXRhU3RhdGUsCisgICAgICAgIGludDMyX3QgcmVwZWF0Q291bnQsIG5zZWNzX3QgZG93blRpbWUpIHsKKyAgICBLZXlFbnRyeSogZW50cnkgPSBtS2V5RW50cnlQb29sLmFsbG9jKCk7CisgICAgaW5pdGlhbGl6ZUV2ZW50RW50cnkoZW50cnksIEV2ZW50RW50cnk6OlRZUEVfS0VZLCBldmVudFRpbWUpOworCisgICAgZW50cnktPmRldmljZUlkID0gZGV2aWNlSWQ7CisgICAgZW50cnktPm5hdHVyZSA9IG5hdHVyZTsKKyAgICBlbnRyeS0+cG9saWN5RmxhZ3MgPSBwb2xpY3lGbGFnczsKKyAgICBlbnRyeS0+YWN0aW9uID0gYWN0aW9uOworICAgIGVudHJ5LT5mbGFncyA9IGZsYWdzOworICAgIGVudHJ5LT5rZXlDb2RlID0ga2V5Q29kZTsKKyAgICBlbnRyeS0+c2NhbkNvZGUgPSBzY2FuQ29kZTsKKyAgICBlbnRyeS0+bWV0YVN0YXRlID0gbWV0YVN0YXRlOworICAgIGVudHJ5LT5yZXBlYXRDb3VudCA9IHJlcGVhdENvdW50OworICAgIGVudHJ5LT5kb3duVGltZSA9IGRvd25UaW1lOworICAgIHJldHVybiBlbnRyeTsKK30KKworSW5wdXREaXNwYXRjaGVyOjpNb3Rpb25FbnRyeSogSW5wdXREaXNwYXRjaGVyOjpBbGxvY2F0b3I6Om9idGFpbk1vdGlvbkVudHJ5KG5zZWNzX3QgZXZlbnRUaW1lLAorICAgICAgICBpbnQzMl90IGRldmljZUlkLCBpbnQzMl90IG5hdHVyZSwgdWludDMyX3QgcG9saWN5RmxhZ3MsIGludDMyX3QgYWN0aW9uLAorICAgICAgICBpbnQzMl90IG1ldGFTdGF0ZSwgaW50MzJfdCBlZGdlRmxhZ3MsIGZsb2F0IHhQcmVjaXNpb24sIGZsb2F0IHlQcmVjaXNpb24sCisgICAgICAgIG5zZWNzX3QgZG93blRpbWUsIHVpbnQzMl90IHBvaW50ZXJDb3VudCwKKyAgICAgICAgY29uc3QgaW50MzJfdCogcG9pbnRlcklkcywgY29uc3QgUG9pbnRlckNvb3JkcyogcG9pbnRlckNvb3JkcykgeworICAgIE1vdGlvbkVudHJ5KiBlbnRyeSA9IG1Nb3Rpb25FbnRyeVBvb2wuYWxsb2MoKTsKKyAgICBpbml0aWFsaXplRXZlbnRFbnRyeShlbnRyeSwgRXZlbnRFbnRyeTo6VFlQRV9NT1RJT04sIGV2ZW50VGltZSk7CisKKyAgICBlbnRyeS0+ZXZlbnRUaW1lID0gZXZlbnRUaW1lOworICAgIGVudHJ5LT5kZXZpY2VJZCA9IGRldmljZUlkOworICAgIGVudHJ5LT5uYXR1cmUgPSBuYXR1cmU7CisgICAgZW50cnktPnBvbGljeUZsYWdzID0gcG9saWN5RmxhZ3M7CisgICAgZW50cnktPmFjdGlvbiA9IGFjdGlvbjsKKyAgICBlbnRyeS0+bWV0YVN0YXRlID0gbWV0YVN0YXRlOworICAgIGVudHJ5LT5lZGdlRmxhZ3MgPSBlZGdlRmxhZ3M7CisgICAgZW50cnktPnhQcmVjaXNpb24gPSB4UHJlY2lzaW9uOworICAgIGVudHJ5LT55UHJlY2lzaW9uID0geVByZWNpc2lvbjsKKyAgICBlbnRyeS0+ZG93blRpbWUgPSBkb3duVGltZTsKKyAgICBlbnRyeS0+cG9pbnRlckNvdW50ID0gcG9pbnRlckNvdW50OworICAgIGVudHJ5LT5maXJzdFNhbXBsZS5ldmVudFRpbWUgPSBldmVudFRpbWU7CisgICAgZW50cnktPmZpcnN0U2FtcGxlLm5leHQgPSBOVUxMOworICAgIGVudHJ5LT5sYXN0U2FtcGxlID0gJiBlbnRyeS0+Zmlyc3RTYW1wbGU7CisgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IHBvaW50ZXJDb3VudDsgaSsrKSB7CisgICAgICAgIGVudHJ5LT5wb2ludGVySWRzW2ldID0gcG9pbnRlcklkc1tpXTsKKyAgICAgICAgZW50cnktPmZpcnN0U2FtcGxlLnBvaW50ZXJDb29yZHNbaV0gPSBwb2ludGVyQ29vcmRzW2ldOworICAgIH0KKyAgICByZXR1cm4gZW50cnk7Cit9CisKK0lucHV0RGlzcGF0Y2hlcjo6RGlzcGF0Y2hFbnRyeSogSW5wdXREaXNwYXRjaGVyOjpBbGxvY2F0b3I6Om9idGFpbkRpc3BhdGNoRW50cnkoCisgICAgICAgIEV2ZW50RW50cnkqIGV2ZW50RW50cnkpIHsKKyAgICBEaXNwYXRjaEVudHJ5KiBlbnRyeSA9IG1EaXNwYXRjaEVudHJ5UG9vbC5hbGxvYygpOworICAgIGVudHJ5LT5ldmVudEVudHJ5ID0gZXZlbnRFbnRyeTsKKyAgICBldmVudEVudHJ5LT5yZWZDb3VudCArPSAxOworICAgIHJldHVybiBlbnRyeTsKK30KKworSW5wdXREaXNwYXRjaGVyOjpDb21tYW5kRW50cnkqIElucHV0RGlzcGF0Y2hlcjo6QWxsb2NhdG9yOjpvYnRhaW5Db21tYW5kRW50cnkoQ29tbWFuZCBjb21tYW5kKSB7CisgICAgQ29tbWFuZEVudHJ5KiBlbnRyeSA9IG1Db21tYW5kRW50cnlQb29sLmFsbG9jKCk7CisgICAgZW50cnktPmNvbW1hbmQgPSBjb21tYW5kOworICAgIHJldHVybiBlbnRyeTsKK30KKwordm9pZCBJbnB1dERpc3BhdGNoZXI6OkFsbG9jYXRvcjo6cmVsZWFzZUV2ZW50RW50cnkoRXZlbnRFbnRyeSogZW50cnkpIHsKKyAgICBzd2l0Y2ggKGVudHJ5LT50eXBlKSB7CisgICAgY2FzZSBFdmVudEVudHJ5OjpUWVBFX0NPTkZJR1VSQVRJT05fQ0hBTkdFRDoKKyAgICAgICAgcmVsZWFzZUNvbmZpZ3VyYXRpb25DaGFuZ2VkRW50cnkoc3RhdGljX2Nhc3Q8Q29uZmlndXJhdGlvbkNoYW5nZWRFbnRyeSo+KGVudHJ5KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXZlbnRFbnRyeTo6VFlQRV9LRVk6CisgICAgICAgIHJlbGVhc2VLZXlFbnRyeShzdGF0aWNfY2FzdDxLZXlFbnRyeSo+KGVudHJ5KSk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRXZlbnRFbnRyeTo6VFlQRV9NT1RJT046CisgICAgICAgIHJlbGVhc2VNb3Rpb25FbnRyeShzdGF0aWNfY2FzdDxNb3Rpb25FbnRyeSo+KGVudHJ5KSk7CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIGFzc2VydChmYWxzZSk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKwordm9pZCBJbnB1dERpc3BhdGNoZXI6OkFsbG9jYXRvcjo6cmVsZWFzZUNvbmZpZ3VyYXRpb25DaGFuZ2VkRW50cnkoCisgICAgICAgIENvbmZpZ3VyYXRpb25DaGFuZ2VkRW50cnkqIGVudHJ5KSB7CisgICAgZW50cnktPnJlZkNvdW50IC09IDE7CisgICAgaWYgKGVudHJ5LT5yZWZDb3VudCA9PSAwKSB7CisgICAgICAgIG1Db25maWd1cmF0aW9uQ2hhbmdlRW50cnlQb29sLmZyZWUoZW50cnkpOworICAgIH0gZWxzZSB7CisgICAgICAgIGFzc2VydChlbnRyeS0+cmVmQ291bnQgPiAwKTsKKyAgICB9Cit9CisKK3ZvaWQgSW5wdXREaXNwYXRjaGVyOjpBbGxvY2F0b3I6OnJlbGVhc2VLZXlFbnRyeShLZXlFbnRyeSogZW50cnkpIHsKKyAgICBlbnRyeS0+cmVmQ291bnQgLT0gMTsKKyAgICBpZiAoZW50cnktPnJlZkNvdW50ID09IDApIHsKKyAgICAgICAgbUtleUVudHJ5UG9vbC5mcmVlKGVudHJ5KTsKKyAgICB9IGVsc2UgeworICAgICAgICBhc3NlcnQoZW50cnktPnJlZkNvdW50ID4gMCk7CisgICAgfQorfQorCit2b2lkIElucHV0RGlzcGF0Y2hlcjo6QWxsb2NhdG9yOjpyZWxlYXNlTW90aW9uRW50cnkoTW90aW9uRW50cnkqIGVudHJ5KSB7CisgICAgZW50cnktPnJlZkNvdW50IC09IDE7CisgICAgaWYgKGVudHJ5LT5yZWZDb3VudCA9PSAwKSB7CisgICAgICAgIGZvciAoTW90aW9uU2FtcGxlKiBzYW1wbGUgPSBlbnRyeS0+Zmlyc3RTYW1wbGUubmV4dDsgc2FtcGxlICE9IE5VTEw7ICkgeworICAgICAgICAgICAgTW90aW9uU2FtcGxlKiBuZXh0ID0gc2FtcGxlLT5uZXh0OworICAgICAgICAgICAgbU1vdGlvblNhbXBsZVBvb2wuZnJlZShzYW1wbGUpOworICAgICAgICAgICAgc2FtcGxlID0gbmV4dDsKKyAgICAgICAgfQorICAgICAgICBtTW90aW9uRW50cnlQb29sLmZyZWUoZW50cnkpOworICAgIH0gZWxzZSB7CisgICAgICAgIGFzc2VydChlbnRyeS0+cmVmQ291bnQgPiAwKTsKKyAgICB9Cit9CisKK3ZvaWQgSW5wdXREaXNwYXRjaGVyOjpBbGxvY2F0b3I6OnJlbGVhc2VEaXNwYXRjaEVudHJ5KERpc3BhdGNoRW50cnkqIGVudHJ5KSB7CisgICAgcmVsZWFzZUV2ZW50RW50cnkoZW50cnktPmV2ZW50RW50cnkpOworICAgIG1EaXNwYXRjaEVudHJ5UG9vbC5mcmVlKGVudHJ5KTsKK30KKwordm9pZCBJbnB1dERpc3BhdGNoZXI6OkFsbG9jYXRvcjo6cmVsZWFzZUNvbW1hbmRFbnRyeShDb21tYW5kRW50cnkqIGVudHJ5KSB7CisgICAgbUNvbW1hbmRFbnRyeVBvb2wuZnJlZShlbnRyeSk7Cit9CisKK3ZvaWQgSW5wdXREaXNwYXRjaGVyOjpBbGxvY2F0b3I6OmFwcGVuZE1vdGlvblNhbXBsZShNb3Rpb25FbnRyeSogbW90aW9uRW50cnksCisgICAgICAgIG5zZWNzX3QgZXZlbnRUaW1lLCBjb25zdCBQb2ludGVyQ29vcmRzKiBwb2ludGVyQ29vcmRzKSB7CisgICAgTW90aW9uU2FtcGxlKiBzYW1wbGUgPSBtTW90aW9uU2FtcGxlUG9vbC5hbGxvYygpOworICAgIHNhbXBsZS0+ZXZlbnRUaW1lID0gZXZlbnRUaW1lOworICAgIHVpbnQzMl90IHBvaW50ZXJDb3VudCA9IG1vdGlvbkVudHJ5LT5wb2ludGVyQ291bnQ7CisgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IHBvaW50ZXJDb3VudDsgaSsrKSB7CisgICAgICAgIHNhbXBsZS0+cG9pbnRlckNvb3Jkc1tpXSA9IHBvaW50ZXJDb29yZHNbaV07CisgICAgfQorCisgICAgc2FtcGxlLT5uZXh0ID0gTlVMTDsKKyAgICBtb3Rpb25FbnRyeS0+bGFzdFNhbXBsZS0+bmV4dCA9IHNhbXBsZTsKKyAgICBtb3Rpb25FbnRyeS0+bGFzdFNhbXBsZSA9IHNhbXBsZTsKK30KKworLy8gLS0tIElucHV0RGlzcGF0Y2hlcjo6Q29ubmVjdGlvbiAtLS0KKworSW5wdXREaXNwYXRjaGVyOjpDb25uZWN0aW9uOjpDb25uZWN0aW9uKGNvbnN0IHNwPElucHV0Q2hhbm5lbD4mIGlucHV0Q2hhbm5lbCkgOgorICAgICAgICBzdGF0dXMoU1RBVFVTX05PUk1BTCksIGlucHV0Q2hhbm5lbChpbnB1dENoYW5uZWwpLCBpbnB1dFB1Ymxpc2hlcihpbnB1dENoYW5uZWwpLAorICAgICAgICBuZXh0VGltZW91dFRpbWUoTE9OR19MT05HX01BWCksCisgICAgICAgIGxhc3RFdmVudFRpbWUoTE9OR19MT05HX01BWCksIGxhc3REaXNwYXRjaFRpbWUoTE9OR19MT05HX01BWCksCisgICAgICAgIGxhc3RBTlJUaW1lKExPTkdfTE9OR19NQVgpIHsKK30KKworSW5wdXREaXNwYXRjaGVyOjpDb25uZWN0aW9uOjp+Q29ubmVjdGlvbigpIHsKK30KKworc3RhdHVzX3QgSW5wdXREaXNwYXRjaGVyOjpDb25uZWN0aW9uOjppbml0aWFsaXplKCkgeworICAgIHJldHVybiBpbnB1dFB1Ymxpc2hlci5pbml0aWFsaXplKCk7Cit9CisKK3ZvaWQgSW5wdXREaXNwYXRjaGVyOjpDb25uZWN0aW9uOjpzZXROZXh0VGltZW91dFRpbWUobnNlY3NfdCBjdXJyZW50VGltZSwgbnNlY3NfdCB0aW1lb3V0KSB7CisgICAgbmV4dFRpbWVvdXRUaW1lID0gKHRpbWVvdXQgPj0gMCkgPyBjdXJyZW50VGltZSArIHRpbWVvdXQgOiBMT05HX0xPTkdfTUFYOworfQorCitjb25zdCBjaGFyKiBJbnB1dERpc3BhdGNoZXI6OkNvbm5lY3Rpb246OmdldFN0YXR1c0xhYmVsKCkgY29uc3QgeworICAgIHN3aXRjaCAoc3RhdHVzKSB7CisgICAgY2FzZSBTVEFUVVNfTk9STUFMOgorICAgICAgICByZXR1cm4gIk5PUk1BTCI7CisKKyAgICBjYXNlIFNUQVRVU19CUk9LRU46CisgICAgICAgIHJldHVybiAiQlJPS0VOIjsKKworICAgIGNhc2UgU1RBVFVTX05PVF9SRVNQT05ESU5HOgorICAgICAgICByZXR1cm4gIk5PVF9SRVNQT05ESU5HIjsKKworICAgIGNhc2UgU1RBVFVTX1pPTUJJRToKKyAgICAgICAgcmV0dXJuICJaT01CSUUiOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuICJVTktOT1dOIjsKKyAgICB9Cit9CisKK0lucHV0RGlzcGF0Y2hlcjo6RGlzcGF0Y2hFbnRyeSogSW5wdXREaXNwYXRjaGVyOjpDb25uZWN0aW9uOjpmaW5kUXVldWVkRGlzcGF0Y2hFbnRyeUZvckV2ZW50KAorICAgICAgICBjb25zdCBFdmVudEVudHJ5KiBldmVudEVudHJ5KSBjb25zdCB7CisgICAgZm9yIChEaXNwYXRjaEVudHJ5KiBkaXNwYXRjaEVudHJ5ID0gb3V0Ym91bmRRdWV1ZS50YWlsLnByZXY7CisgICAgICAgICAgICBkaXNwYXRjaEVudHJ5ICE9ICYgb3V0Ym91bmRRdWV1ZS5oZWFkOyBkaXNwYXRjaEVudHJ5ID0gZGlzcGF0Y2hFbnRyeS0+cHJldikgeworICAgICAgICBpZiAoZGlzcGF0Y2hFbnRyeS0+ZXZlbnRFbnRyeSA9PSBldmVudEVudHJ5KSB7CisgICAgICAgICAgICByZXR1cm4gZGlzcGF0Y2hFbnRyeTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gTlVMTDsKK30KKworLy8gLS0tIElucHV0RGlzcGF0Y2hlcjo6Q29tbWFuZEVudHJ5IC0tLQorCitJbnB1dERpc3BhdGNoZXI6OkNvbW1hbmRFbnRyeTo6Q29tbWFuZEVudHJ5KCkgeworfQorCitJbnB1dERpc3BhdGNoZXI6OkNvbW1hbmRFbnRyeTo6fkNvbW1hbmRFbnRyeSgpIHsKK30KKworCisvLyAtLS0gSW5wdXREaXNwYXRjaGVyVGhyZWFkIC0tLQorCitJbnB1dERpc3BhdGNoZXJUaHJlYWQ6OklucHV0RGlzcGF0Y2hlclRocmVhZChjb25zdCBzcDxJbnB1dERpc3BhdGNoZXJJbnRlcmZhY2U+JiBkaXNwYXRjaGVyKSA6CisgICAgICAgIFRocmVhZCgvKmNhbkNhbGxKYXZhKi8gdHJ1ZSksIG1EaXNwYXRjaGVyKGRpc3BhdGNoZXIpIHsKK30KKworSW5wdXREaXNwYXRjaGVyVGhyZWFkOjp+SW5wdXREaXNwYXRjaGVyVGhyZWFkKCkgeworfQorCitib29sIElucHV0RGlzcGF0Y2hlclRocmVhZDo6dGhyZWFkTG9vcCgpIHsKKyAgICBtRGlzcGF0Y2hlci0+ZGlzcGF0Y2hPbmNlKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL2xpYnMvdWkvSW5wdXRNYW5hZ2VyLmNwcCBiL2xpYnMvdWkvSW5wdXRNYW5hZ2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMWQxNWE0Ci0tLSAvZGV2L251bGwKKysrIGIvbGlicy91aS9JbnB1dE1hbmFnZXIuY3BwCkBAIC0wLDAgKzEsMTE0IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorLy8KKy8vIFRoZSBpbnB1dCBtYW5hZ2VyLgorLy8KKyNkZWZpbmUgTE9HX1RBRyAiSW5wdXRNYW5hZ2VyIgorCisvLyNkZWZpbmUgTE9HX05ERUJVRyAwCisKKyNpbmNsdWRlIDxjdXRpbHMvbG9nLmg+CisjaW5jbHVkZSA8dWkvSW5wdXRNYW5hZ2VyLmg+CisjaW5jbHVkZSA8dWkvSW5wdXRSZWFkZXIuaD4KKyNpbmNsdWRlIDx1aS9JbnB1dERpc3BhdGNoZXIuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitJbnB1dE1hbmFnZXI6OklucHV0TWFuYWdlcigKKyAgICAgICAgY29uc3Qgc3A8RXZlbnRIdWJJbnRlcmZhY2U+JiBldmVudEh1YiwKKyAgICAgICAgY29uc3Qgc3A8SW5wdXRSZWFkZXJQb2xpY3lJbnRlcmZhY2U+JiByZWFkZXJQb2xpY3ksCisgICAgICAgIGNvbnN0IHNwPElucHV0RGlzcGF0Y2hlclBvbGljeUludGVyZmFjZT4mIGRpc3BhdGNoZXJQb2xpY3kpIHsKKyAgICBtRGlzcGF0Y2hlciA9IG5ldyBJbnB1dERpc3BhdGNoZXIoZGlzcGF0Y2hlclBvbGljeSk7CisgICAgbVJlYWRlciA9IG5ldyBJbnB1dFJlYWRlcihldmVudEh1YiwgcmVhZGVyUG9saWN5LCBtRGlzcGF0Y2hlcik7CisgICAgaW5pdGlhbGl6ZSgpOworfQorCitJbnB1dE1hbmFnZXI6OklucHV0TWFuYWdlcigKKyAgICAgICAgY29uc3Qgc3A8SW5wdXRSZWFkZXJJbnRlcmZhY2U+JiByZWFkZXIsCisgICAgICAgIGNvbnN0IHNwPElucHV0RGlzcGF0Y2hlckludGVyZmFjZT4mIGRpc3BhdGNoZXIpIDoKKyAgICAgICAgbVJlYWRlcihyZWFkZXIpLAorICAgICAgICBtRGlzcGF0Y2hlcihkaXNwYXRjaGVyKSB7CisgICAgaW5pdGlhbGl6ZSgpOworfQorCitJbnB1dE1hbmFnZXI6On5JbnB1dE1hbmFnZXIoKSB7CisgICAgc3RvcCgpOworfQorCit2b2lkIElucHV0TWFuYWdlcjo6aW5pdGlhbGl6ZSgpIHsKKyAgICBtUmVhZGVyVGhyZWFkID0gbmV3IElucHV0UmVhZGVyVGhyZWFkKG1SZWFkZXIpOworICAgIG1EaXNwYXRjaGVyVGhyZWFkID0gbmV3IElucHV0RGlzcGF0Y2hlclRocmVhZChtRGlzcGF0Y2hlcik7Cit9CisKK3N0YXR1c190IElucHV0TWFuYWdlcjo6c3RhcnQoKSB7CisgICAgc3RhdHVzX3QgcmVzdWx0ID0gbURpc3BhdGNoZXJUaHJlYWQtPnJ1bigiSW5wdXREaXNwYXRjaGVyIiwgUFJJT1JJVFlfVVJHRU5UX0RJU1BMQVkpOworICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgTE9HRSgiQ291bGQgbm90IHN0YXJ0IElucHV0RGlzcGF0Y2hlciB0aHJlYWQgZHVlIHRvIGVycm9yICVkLiIsIHJlc3VsdCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgcmVzdWx0ID0gbVJlYWRlclRocmVhZC0+cnVuKCJJbnB1dFJlYWRlciIsIFBSSU9SSVRZX1VSR0VOVF9ESVNQTEFZKTsKKyAgICBpZiAocmVzdWx0KSB7CisgICAgICAgIExPR0UoIkNvdWxkIG5vdCBzdGFydCBJbnB1dFJlYWRlciB0aHJlYWQgZHVlIHRvIGVycm9yICVkLiIsIHJlc3VsdCk7CisKKyAgICAgICAgbURpc3BhdGNoZXJUaHJlYWQtPnJlcXVlc3RFeGl0KCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgcmV0dXJuIE9LOworfQorCitzdGF0dXNfdCBJbnB1dE1hbmFnZXI6OnN0b3AoKSB7CisgICAgc3RhdHVzX3QgcmVzdWx0ID0gbVJlYWRlclRocmVhZC0+cmVxdWVzdEV4aXRBbmRXYWl0KCk7CisgICAgaWYgKHJlc3VsdCkgeworICAgICAgICBMT0dXKCJDb3VsZCBub3Qgc3RvcCBJbnB1dFJlYWRlciB0aHJlYWQgZHVlIHRvIGVycm9yICVkLiIsIHJlc3VsdCk7CisgICAgfQorCisgICAgcmVzdWx0ID0gbURpc3BhdGNoZXJUaHJlYWQtPnJlcXVlc3RFeGl0QW5kV2FpdCgpOworICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgTE9HVygiQ291bGQgbm90IHN0b3AgSW5wdXREaXNwYXRjaGVyIHRocmVhZCBkdWUgdG8gZXJyb3IgJWQuIiwgcmVzdWx0KTsKKyAgICB9CisKKyAgICByZXR1cm4gT0s7Cit9CisKK3N0YXR1c190IElucHV0TWFuYWdlcjo6cmVnaXN0ZXJJbnB1dENoYW5uZWwoY29uc3Qgc3A8SW5wdXRDaGFubmVsPiYgaW5wdXRDaGFubmVsKSB7CisgICAgcmV0dXJuIG1EaXNwYXRjaGVyLT5yZWdpc3RlcklucHV0Q2hhbm5lbChpbnB1dENoYW5uZWwpOworfQorCitzdGF0dXNfdCBJbnB1dE1hbmFnZXI6OnVucmVnaXN0ZXJJbnB1dENoYW5uZWwoY29uc3Qgc3A8SW5wdXRDaGFubmVsPiYgaW5wdXRDaGFubmVsKSB7CisgICAgcmV0dXJuIG1EaXNwYXRjaGVyLT51bnJlZ2lzdGVySW5wdXRDaGFubmVsKGlucHV0Q2hhbm5lbCk7Cit9CisKK2ludDMyX3QgSW5wdXRNYW5hZ2VyOjppbmplY3RJbnB1dEV2ZW50KGNvbnN0IElucHV0RXZlbnQqIGV2ZW50LAorICAgICAgICBpbnQzMl90IGluamVjdG9yUGlkLCBpbnQzMl90IGluamVjdG9yVWlkLCBib29sIHN5bmMsIGludDMyX3QgdGltZW91dE1pbGxpcykgeworICAgIHJldHVybiBtRGlzcGF0Y2hlci0+aW5qZWN0SW5wdXRFdmVudChldmVudCwgaW5qZWN0b3JQaWQsIGluamVjdG9yVWlkLCBzeW5jLCB0aW1lb3V0TWlsbGlzKTsKK30KKwordm9pZCBJbnB1dE1hbmFnZXI6OnByZWVtcHRJbnB1dERpc3BhdGNoKCkgeworICAgIG1EaXNwYXRjaGVyLT5wcmVlbXB0SW5wdXREaXNwYXRjaCgpOworfQorCit2b2lkIElucHV0TWFuYWdlcjo6Z2V0SW5wdXRDb25maWd1cmF0aW9uKElucHV0Q29uZmlndXJhdGlvbiogb3V0Q29uZmlndXJhdGlvbikgY29uc3QgeworICAgIG1SZWFkZXItPmdldEN1cnJlbnRJbnB1dENvbmZpZ3VyYXRpb24ob3V0Q29uZmlndXJhdGlvbik7Cit9CisKK2ludDMyX3QgSW5wdXRNYW5hZ2VyOjpnZXRTY2FuQ29kZVN0YXRlKGludDMyX3QgZGV2aWNlSWQsIGludDMyX3QgZGV2aWNlQ2xhc3NlcywKKyAgICAgICAgaW50MzJfdCBzY2FuQ29kZSkgY29uc3QgeworICAgIHJldHVybiBtUmVhZGVyLT5nZXRDdXJyZW50U2NhbkNvZGVTdGF0ZShkZXZpY2VJZCwgZGV2aWNlQ2xhc3Nlcywgc2NhbkNvZGUpOworfQorCitpbnQzMl90IElucHV0TWFuYWdlcjo6Z2V0S2V5Q29kZVN0YXRlKGludDMyX3QgZGV2aWNlSWQsIGludDMyX3QgZGV2aWNlQ2xhc3NlcywKKyAgICAgICAgaW50MzJfdCBrZXlDb2RlKSBjb25zdCB7CisgICAgcmV0dXJuIG1SZWFkZXItPmdldEN1cnJlbnRLZXlDb2RlU3RhdGUoZGV2aWNlSWQsIGRldmljZUNsYXNzZXMsIGtleUNvZGUpOworfQorCitpbnQzMl90IElucHV0TWFuYWdlcjo6Z2V0U3dpdGNoU3RhdGUoaW50MzJfdCBkZXZpY2VJZCwgaW50MzJfdCBkZXZpY2VDbGFzc2VzLCBpbnQzMl90IHN3KSBjb25zdCB7CisgICAgcmV0dXJuIG1SZWFkZXItPmdldEN1cnJlbnRTd2l0Y2hTdGF0ZShkZXZpY2VJZCwgZGV2aWNlQ2xhc3Nlcywgc3cpOworfQorCitib29sIElucHV0TWFuYWdlcjo6aGFzS2V5cyhzaXplX3QgbnVtQ29kZXMsIGNvbnN0IGludDMyX3QqIGtleUNvZGVzLCB1aW50OF90KiBvdXRGbGFncykgY29uc3QgeworICAgIHJldHVybiBtUmVhZGVyLT5oYXNLZXlzKG51bUNvZGVzLCBrZXlDb2Rlcywgb3V0RmxhZ3MpOworfQorCit9IC8vIG5hbWVzcGFjZSBhbmRyb2lkCmRpZmYgLS1naXQgYS9saWJzL3VpL0lucHV0UmVhZGVyLmNwcCBiL2xpYnMvdWkvSW5wdXRSZWFkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjZWQxNWMKLS0tIC9kZXYvbnVsbAorKysgYi9saWJzL3VpL0lucHV0UmVhZGVyLmNwcApAQCAtMCwwICsxLDIwNzAgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisvLworLy8gVGhlIGlucHV0IHJlYWRlci4KKy8vCisjZGVmaW5lIExPR19UQUcgIklucHV0UmVhZGVyIgorCisvLyNkZWZpbmUgTE9HX05ERUJVRyAwCisKKy8vIExvZyBkZWJ1ZyBtZXNzYWdlcyBmb3IgZWFjaCByYXcgZXZlbnQgcmVjZWl2ZWQgZnJvbSB0aGUgRXZlbnRIdWIuCisjZGVmaW5lIERFQlVHX1JBV19FVkVOVFMgMAorCisvLyBMb2cgZGVidWcgbWVzc2FnZXMgYWJvdXQgdG91Y2ggc2NyZWVuIGZpbHRlcmluZyBoYWNrcy4KKyNkZWZpbmUgREVCVUdfSEFDS1MgMAorCisvLyBMb2cgZGVidWcgbWVzc2FnZXMgYWJvdXQgdmlydHVhbCBrZXkgcHJvY2Vzc2luZy4KKyNkZWZpbmUgREVCVUdfVklSVFVBTF9LRVlTIDAKKworLy8gTG9nIGRlYnVnIG1lc3NhZ2VzIGFib3V0IHBvaW50ZXJzLgorI2RlZmluZSBERUJVR19QT0lOVEVSUyAwCisKKy8vIExvZyBkZWJ1ZyBtZXNzYWdlcyBhYm91dCBwb2ludGVyIGFzc2lnbm1lbnQgY2FsY3VsYXRpb25zLgorI2RlZmluZSBERUJVR19QT0lOVEVSX0FTU0lHTk1FTlQgMAorCisjaW5jbHVkZSA8Y3V0aWxzL2xvZy5oPgorI2luY2x1ZGUgPHVpL0lucHV0UmVhZGVyLmg+CisKKyNpbmNsdWRlIDxzdGRkZWYuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxlcnJuby5oPgorI2luY2x1ZGUgPGxpbWl0cy5oPgorCisvKiogQW1vdW50IHRoYXQgdHJhY2tiYWxsIG5lZWRzIHRvIG1vdmUgaW4gb3JkZXIgdG8gZ2VuZXJhdGUgYSBrZXkgZXZlbnQuICovCisjZGVmaW5lIFRSQUNLQkFMTF9NT1ZFTUVOVF9USFJFU0hPTEQgNgorCisvKiBTbG9wIGRpc3RhbmNlIGZvciBqdW1weSBwb2ludGVyIGRldGVjdGlvbi4KKyAqIFRoZSB2ZXJ0aWNhbCByYW5nZSBvZiB0aGUgc2NyZWVuIGRpdmlkZWQgYnkgdGhpcyBpcyBvdXIgZXBzaWxvbiB2YWx1ZS4gKi8KKyNkZWZpbmUgSlVNUFlfRVBTSUxPTl9ESVZJU09SIDIxMgorCisvKiBOdW1iZXIgb2YganVtcHkgcG9pbnRzIHRvIGRyb3AgZm9yIHRvdWNoc2NyZWVucyB0aGF0IG5lZWQgaXQuICovCisjZGVmaW5lIEpVTVBZX1RSQU5TSVRJT05fRFJPUFMgMworI2RlZmluZSBKVU1QWV9EUk9QX0xJTUlUIDMKKworLyogTWF4aW11bSBzcXVhcmVkIGRpc3RhbmNlIGZvciBhdmVyYWdpbmcuCisgKiBJZiBtb3ZpbmcgZmFydGhlciB0aGFuIHRoaXMsIHR1cm4gb2YgYXZlcmFnaW5nIHRvIGF2b2lkIGxhZyBpbiByZXNwb25zZS4gKi8KKyNkZWZpbmUgQVZFUkFHSU5HX0RJU1RBTkNFX0xJTUlUICg3NSAqIDc1KQorCisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworLy8gLS0tIFN0YXRpYyBGdW5jdGlvbnMgLS0tCisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+CitpbmxpbmUgc3RhdGljIFQgYWJzKGNvbnN0IFQmIHZhbHVlKSB7CisgICAgcmV0dXJuIHZhbHVlIDwgMCA/IC0gdmFsdWUgOiB2YWx1ZTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVD4KK2lubGluZSBzdGF0aWMgVCBtaW4oY29uc3QgVCYgYSwgY29uc3QgVCYgYikgeworICAgIHJldHVybiBhIDwgYiA/IGEgOiBiOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgoraW5saW5lIHN0YXRpYyB2b2lkIHN3YXAoVCYgYSwgVCYgYikgeworICAgIFQgdGVtcCA9IGE7CisgICAgYSA9IGI7CisgICAgYiA9IHRlbXA7Cit9CisKKworaW50MzJfdCB1cGRhdGVNZXRhU3RhdGUoaW50MzJfdCBrZXlDb2RlLCBib29sIGRvd24sIGludDMyX3Qgb2xkTWV0YVN0YXRlKSB7CisgICAgaW50MzJfdCBtYXNrOworICAgIHN3aXRjaCAoa2V5Q29kZSkgeworICAgIGNhc2UgS0VZQ09ERV9BTFRfTEVGVDoKKyAgICAgICAgbWFzayA9IE1FVEFfQUxUX0xFRlRfT047CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgS0VZQ09ERV9BTFRfUklHSFQ6CisgICAgICAgIG1hc2sgPSBNRVRBX0FMVF9SSUdIVF9PTjsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBLRVlDT0RFX1NISUZUX0xFRlQ6CisgICAgICAgIG1hc2sgPSBNRVRBX1NISUZUX0xFRlRfT047CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgS0VZQ09ERV9TSElGVF9SSUdIVDoKKyAgICAgICAgbWFzayA9IE1FVEFfU0hJRlRfUklHSFRfT047CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgS0VZQ09ERV9TWU06CisgICAgICAgIG1hc2sgPSBNRVRBX1NZTV9PTjsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIG9sZE1ldGFTdGF0ZTsKKyAgICB9CisKKyAgICBpbnQzMl90IG5ld01ldGFTdGF0ZSA9IGRvd24gPyBvbGRNZXRhU3RhdGUgfCBtYXNrIDogb2xkTWV0YVN0YXRlICYgfiBtYXNrCisgICAgICAgICAgICAmIH4gKE1FVEFfQUxUX09OIHwgTUVUQV9TSElGVF9PTik7CisKKyAgICBpZiAobmV3TWV0YVN0YXRlICYgKE1FVEFfQUxUX0xFRlRfT04gfCBNRVRBX0FMVF9SSUdIVF9PTikpIHsKKyAgICAgICAgbmV3TWV0YVN0YXRlIHw9IE1FVEFfQUxUX09OOworICAgIH0KKworICAgIGlmIChuZXdNZXRhU3RhdGUgJiAoTUVUQV9TSElGVF9MRUZUX09OIHwgTUVUQV9TSElGVF9SSUdIVF9PTikpIHsKKyAgICAgICAgbmV3TWV0YVN0YXRlIHw9IE1FVEFfU0hJRlRfT047CisgICAgfQorCisgICAgcmV0dXJuIG5ld01ldGFTdGF0ZTsKK30KKworc3RhdGljIGNvbnN0IGludDMyX3Qga2V5Q29kZVJvdGF0aW9uTWFwW11bNF0gPSB7CisgICAgICAgIC8vIGtleSBjb2RlcyBlbnVtZXJhdGVkIGNvdW50ZXItY2xvY2t3aXNlIHdpdGggdGhlIG9yaWdpbmFsICh1bnJvdGF0ZWQpIGtleSBmaXJzdAorICAgICAgICAvLyBubyByb3RhdGlvbiwgICAgICAgIDkwIGRlZ3JlZSByb3RhdGlvbiwgIDE4MCBkZWdyZWUgcm90YXRpb24sIDI3MCBkZWdyZWUgcm90YXRpb24KKyAgICAgICAgeyBLRVlDT0RFX0RQQURfRE9XTiwgICBLRVlDT0RFX0RQQURfUklHSFQsICBLRVlDT0RFX0RQQURfVVAsICAgICBLRVlDT0RFX0RQQURfTEVGVCB9LAorICAgICAgICB7IEtFWUNPREVfRFBBRF9SSUdIVCwgIEtFWUNPREVfRFBBRF9VUCwgICAgIEtFWUNPREVfRFBBRF9MRUZULCAgIEtFWUNPREVfRFBBRF9ET1dOIH0sCisgICAgICAgIHsgS0VZQ09ERV9EUEFEX1VQLCAgICAgS0VZQ09ERV9EUEFEX0xFRlQsICAgS0VZQ09ERV9EUEFEX0RPV04sICAgS0VZQ09ERV9EUEFEX1JJR0hUIH0sCisgICAgICAgIHsgS0VZQ09ERV9EUEFEX0xFRlQsICAgS0VZQ09ERV9EUEFEX0RPV04sICAgS0VZQ09ERV9EUEFEX1JJR0hULCAgS0VZQ09ERV9EUEFEX1VQIH0sCit9Oworc3RhdGljIGNvbnN0IGludCBrZXlDb2RlUm90YXRpb25NYXBTaXplID0KKyAgICAgICAgc2l6ZW9mKGtleUNvZGVSb3RhdGlvbk1hcCkgLyBzaXplb2Yoa2V5Q29kZVJvdGF0aW9uTWFwWzBdKTsKKworaW50MzJfdCByb3RhdGVLZXlDb2RlKGludDMyX3Qga2V5Q29kZSwgaW50MzJfdCBvcmllbnRhdGlvbikgeworICAgIGlmIChvcmllbnRhdGlvbiAhPSBJbnB1dFJlYWRlclBvbGljeUludGVyZmFjZTo6Uk9UQVRJT05fMCkgeworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGtleUNvZGVSb3RhdGlvbk1hcFNpemU7IGkrKykgeworICAgICAgICAgICAgaWYgKGtleUNvZGUgPT0ga2V5Q29kZVJvdGF0aW9uTWFwW2ldWzBdKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGtleUNvZGVSb3RhdGlvbk1hcFtpXVtvcmllbnRhdGlvbl07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGtleUNvZGU7Cit9CisKKworLy8gLS0tIElucHV0RGV2aWNlIC0tLQorCitJbnB1dERldmljZTo6SW5wdXREZXZpY2UoaW50MzJfdCBpZCwgdWludDMyX3QgY2xhc3NlcywgU3RyaW5nOCBuYW1lKSA6CisgICAgaWQoaWQpLCBjbGFzc2VzKGNsYXNzZXMpLCBuYW1lKG5hbWUpLCBpZ25vcmVkKGZhbHNlKSB7Cit9CisKK3ZvaWQgSW5wdXREZXZpY2U6OnJlc2V0KCkgeworICAgIGlmIChpc0tleWJvYXJkKCkpIHsKKyAgICAgICAga2V5Ym9hcmQucmVzZXQoKTsKKyAgICB9CisKKyAgICBpZiAoaXNUcmFja2JhbGwoKSkgeworICAgICAgICB0cmFja2JhbGwucmVzZXQoKTsKKyAgICB9CisKKyAgICBpZiAoaXNNdWx0aVRvdWNoU2NyZWVuKCkpIHsKKyAgICAgICAgbXVsdGlUb3VjaFNjcmVlbi5yZXNldCgpOworICAgIH0gZWxzZSBpZiAoaXNTaW5nbGVUb3VjaFNjcmVlbigpKSB7CisgICAgICAgIHNpbmdsZVRvdWNoU2NyZWVuLnJlc2V0KCk7CisgICAgfQorCisgICAgaWYgKGlzVG91Y2hTY3JlZW4oKSkgeworICAgICAgICB0b3VjaFNjcmVlbi5yZXNldCgpOworICAgIH0KK30KKworCisvLyAtLS0gSW5wdXREZXZpY2U6OlRvdWNoRGF0YSAtLS0KKwordm9pZCBJbnB1dERldmljZTo6VG91Y2hEYXRhOjpjb3B5RnJvbShjb25zdCBUb3VjaERhdGEmIG90aGVyKSB7CisgICAgcG9pbnRlckNvdW50ID0gb3RoZXIucG9pbnRlckNvdW50OworICAgIGlkQml0cyA9IG90aGVyLmlkQml0czsKKworICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBwb2ludGVyQ291bnQ7IGkrKykgeworICAgICAgICBwb2ludGVyc1tpXSA9IG90aGVyLnBvaW50ZXJzW2ldOworICAgICAgICBpZFRvSW5kZXhbaV0gPSBvdGhlci5pZFRvSW5kZXhbaV07CisgICAgfQorfQorCisKKy8vIC0tLSBJbnB1dERldmljZTo6S2V5Ym9hcmRTdGF0ZSAtLS0KKwordm9pZCBJbnB1dERldmljZTo6S2V5Ym9hcmRTdGF0ZTo6cmVzZXQoKSB7CisgICAgY3VycmVudC5tZXRhU3RhdGUgPSBNRVRBX05PTkU7CisgICAgY3VycmVudC5kb3duVGltZSA9IDA7Cit9CisKKworLy8gLS0tIElucHV0RGV2aWNlOjpUcmFja2JhbGxTdGF0ZSAtLS0KKwordm9pZCBJbnB1dERldmljZTo6VHJhY2tiYWxsU3RhdGU6OnJlc2V0KCkgeworICAgIGFjY3VtdWxhdG9yLmNsZWFyKCk7CisgICAgY3VycmVudC5kb3duID0gZmFsc2U7CisgICAgY3VycmVudC5kb3duVGltZSA9IDA7Cit9CisKKworLy8gLS0tIElucHV0RGV2aWNlOjpUb3VjaFNjcmVlblN0YXRlIC0tLQorCit2b2lkIElucHV0RGV2aWNlOjpUb3VjaFNjcmVlblN0YXRlOjpyZXNldCgpIHsKKyAgICBsYXN0VG91Y2guY2xlYXIoKTsKKyAgICBkb3duVGltZSA9IDA7CisgICAgY3VycmVudFZpcnR1YWxLZXkuc3RhdHVzID0gQ3VycmVudFZpcnR1YWxLZXlTdGF0ZTo6U1RBVFVTX1VQOworCisgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IE1BWF9QT0lOVEVSUzsgaSsrKSB7CisgICAgICAgIGF2ZXJhZ2luZ1RvdWNoRmlsdGVyLmhpc3RvcnlTdGFydFtpXSA9IDA7CisgICAgICAgIGF2ZXJhZ2luZ1RvdWNoRmlsdGVyLmhpc3RvcnlFbmRbaV0gPSAwOworICAgIH0KKworICAgIGp1bXB5VG91Y2hGaWx0ZXIuanVtcHlQb2ludHNEcm9wcGVkID0gMDsKK30KKworc3RydWN0IFBvaW50ZXJEaXN0YW5jZUhlYXBFbGVtZW50IHsKKyAgICB1aW50MzJfdCBjdXJyZW50UG9pbnRlckluZGV4IDogODsKKyAgICB1aW50MzJfdCBsYXN0UG9pbnRlckluZGV4IDogODsKKyAgICB1aW50NjRfdCBkaXN0YW5jZSA6IDQ4OyAvLyBzcXVhcmVkIGRpc3RhbmNlCit9OworCit2b2lkIElucHV0RGV2aWNlOjpUb3VjaFNjcmVlblN0YXRlOjpjYWxjdWxhdGVQb2ludGVySWRzKCkgeworICAgIHVpbnQzMl90IGN1cnJlbnRQb2ludGVyQ291bnQgPSBjdXJyZW50VG91Y2gucG9pbnRlckNvdW50OworICAgIHVpbnQzMl90IGxhc3RQb2ludGVyQ291bnQgPSBsYXN0VG91Y2gucG9pbnRlckNvdW50OworCisgICAgaWYgKGN1cnJlbnRQb2ludGVyQ291bnQgPT0gMCkgeworICAgICAgICAvLyBObyBwb2ludGVycyB0byBhc3NpZ24uCisgICAgICAgIGN1cnJlbnRUb3VjaC5pZEJpdHMuY2xlYXIoKTsKKyAgICB9IGVsc2UgaWYgKGxhc3RQb2ludGVyQ291bnQgPT0gMCkgeworICAgICAgICAvLyBBbGwgcG9pbnRlcnMgYXJlIG5ldy4KKyAgICAgICAgY3VycmVudFRvdWNoLmlkQml0cy5jbGVhcigpOworICAgICAgICBmb3IgKHVpbnQzMl90IGkgPSAwOyBpIDwgY3VycmVudFBvaW50ZXJDb3VudDsgaSsrKSB7CisgICAgICAgICAgICBjdXJyZW50VG91Y2gucG9pbnRlcnNbaV0uaWQgPSBpOworICAgICAgICAgICAgY3VycmVudFRvdWNoLmlkVG9JbmRleFtpXSA9IGk7CisgICAgICAgICAgICBjdXJyZW50VG91Y2guaWRCaXRzLm1hcmtCaXQoaSk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGN1cnJlbnRQb2ludGVyQ291bnQgPT0gMSAmJiBsYXN0UG9pbnRlckNvdW50ID09IDEpIHsKKyAgICAgICAgLy8gT25seSBvbmUgcG9pbnRlciBhbmQgbm8gY2hhbmdlIGluIGNvdW50IHNvIGl0IG11c3QgaGF2ZSB0aGUgc2FtZSBpZCBhcyBiZWZvcmUuCisgICAgICAgIHVpbnQzMl90IGlkID0gbGFzdFRvdWNoLnBvaW50ZXJzWzBdLmlkOworICAgICAgICBjdXJyZW50VG91Y2gucG9pbnRlcnNbMF0uaWQgPSBpZDsKKyAgICAgICAgY3VycmVudFRvdWNoLmlkVG9JbmRleFtpZF0gPSAwOworICAgICAgICBjdXJyZW50VG91Y2guaWRCaXRzLnZhbHVlID0gQml0U2V0MzI6OnZhbHVlRm9yQml0KGlkKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBHZW5lcmFsIGNhc2UuCisgICAgICAgIC8vIFdlIGJ1aWxkIGEgaGVhcCBvZiBzcXVhcmVkIGV1Y2xpZGVhbiBkaXN0YW5jZXMgYmV0d2VlbiBjdXJyZW50IGFuZCBsYXN0IHBvaW50ZXJzCisgICAgICAgIC8vIGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudCBhbmQgbGFzdCBwb2ludGVyIGluZGljZXMuICBUaGVuLCB3ZSBmaW5kIHRoZSBiZXN0CisgICAgICAgIC8vIG1hdGNoIChieSBkaXN0YW5jZSkgZm9yIGVhY2ggY3VycmVudCBwb2ludGVyLgorICAgICAgICBQb2ludGVyRGlzdGFuY2VIZWFwRWxlbWVudCBoZWFwW01BWF9QT0lOVEVSUyAqIE1BWF9QT0lOVEVSU107CisKKyAgICAgICAgdWludDMyX3QgaGVhcFNpemUgPSAwOworICAgICAgICBmb3IgKHVpbnQzMl90IGN1cnJlbnRQb2ludGVySW5kZXggPSAwOyBjdXJyZW50UG9pbnRlckluZGV4IDwgY3VycmVudFBvaW50ZXJDb3VudDsKKyAgICAgICAgICAgICAgICBjdXJyZW50UG9pbnRlckluZGV4KyspIHsKKyAgICAgICAgICAgIGZvciAodWludDMyX3QgbGFzdFBvaW50ZXJJbmRleCA9IDA7IGxhc3RQb2ludGVySW5kZXggPCBsYXN0UG9pbnRlckNvdW50OworICAgICAgICAgICAgICAgICAgICBsYXN0UG9pbnRlckluZGV4KyspIHsKKyAgICAgICAgICAgICAgICBpbnQ2NF90IGRlbHRhWCA9IGN1cnJlbnRUb3VjaC5wb2ludGVyc1tjdXJyZW50UG9pbnRlckluZGV4XS54CisgICAgICAgICAgICAgICAgICAgICAgICAtIGxhc3RUb3VjaC5wb2ludGVyc1tsYXN0UG9pbnRlckluZGV4XS54OworICAgICAgICAgICAgICAgIGludDY0X3QgZGVsdGFZID0gY3VycmVudFRvdWNoLnBvaW50ZXJzW2N1cnJlbnRQb2ludGVySW5kZXhdLnkKKyAgICAgICAgICAgICAgICAgICAgICAgIC0gbGFzdFRvdWNoLnBvaW50ZXJzW2xhc3RQb2ludGVySW5kZXhdLnk7CisKKyAgICAgICAgICAgICAgICB1aW50NjRfdCBkaXN0YW5jZSA9IHVpbnQ2NF90KGRlbHRhWCAqIGRlbHRhWCArIGRlbHRhWSAqIGRlbHRhWSk7CisKKyAgICAgICAgICAgICAgICAvLyBJbnNlcnQgbmV3IGVsZW1lbnQgaW50byB0aGUgaGVhcCAoc2lmdCB1cCkuCisgICAgICAgICAgICAgICAgaGVhcFtoZWFwU2l6ZV0uY3VycmVudFBvaW50ZXJJbmRleCA9IGN1cnJlbnRQb2ludGVySW5kZXg7CisgICAgICAgICAgICAgICAgaGVhcFtoZWFwU2l6ZV0ubGFzdFBvaW50ZXJJbmRleCA9IGxhc3RQb2ludGVySW5kZXg7CisgICAgICAgICAgICAgICAgaGVhcFtoZWFwU2l6ZV0uZGlzdGFuY2UgPSBkaXN0YW5jZTsKKyAgICAgICAgICAgICAgICBoZWFwU2l6ZSArPSAxOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gSGVhcGlmeQorICAgICAgICBmb3IgKHVpbnQzMl90IHN0YXJ0SW5kZXggPSBoZWFwU2l6ZSAvIDI7IHN0YXJ0SW5kZXggIT0gMDsgKSB7CisgICAgICAgICAgICBzdGFydEluZGV4IC09IDE7CisgICAgICAgICAgICBmb3IgKHVpbnQzMl90IHBhcmVudEluZGV4ID0gc3RhcnRJbmRleDsgOykgeworICAgICAgICAgICAgICAgIHVpbnQzMl90IGNoaWxkSW5kZXggPSBwYXJlbnRJbmRleCAqIDIgKyAxOworICAgICAgICAgICAgICAgIGlmIChjaGlsZEluZGV4ID49IGhlYXBTaXplKSB7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChjaGlsZEluZGV4ICsgMSA8IGhlYXBTaXplCisgICAgICAgICAgICAgICAgICAgICAgICAmJiBoZWFwW2NoaWxkSW5kZXggKyAxXS5kaXN0YW5jZSA8IGhlYXBbY2hpbGRJbmRleF0uZGlzdGFuY2UpIHsKKyAgICAgICAgICAgICAgICAgICAgY2hpbGRJbmRleCArPSAxOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChoZWFwW3BhcmVudEluZGV4XS5kaXN0YW5jZSA8PSBoZWFwW2NoaWxkSW5kZXhdLmRpc3RhbmNlKSB7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHN3YXAoaGVhcFtwYXJlbnRJbmRleF0sIGhlYXBbY2hpbGRJbmRleF0pOworICAgICAgICAgICAgICAgIHBhcmVudEluZGV4ID0gY2hpbGRJbmRleDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisjaWYgREVCVUdfUE9JTlRFUl9BU1NJR05NRU5UCisgICAgICAgIExPR0QoImNhbGN1bGF0ZVBvaW50ZXJJZHMgLSBpbml0aWFsIGRpc3RhbmNlIG1pbi1oZWFwOiBzaXplPSVkIiwgaGVhcFNpemUpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGhlYXBTaXplOyBpKyspIHsKKyAgICAgICAgICAgIExPR0QoIiAgaGVhcFslZF06IGN1cj0lZCwgbGFzdD0lZCwgZGlzdGFuY2U9JWxsZCIsCisgICAgICAgICAgICAgICAgICAgIGksIGhlYXBbaV0uY3VycmVudFBvaW50ZXJJbmRleCwgaGVhcFtpXS5sYXN0UG9pbnRlckluZGV4LAorICAgICAgICAgICAgICAgICAgICBoZWFwW2ldLmRpc3RhbmNlKTsKKyAgICAgICAgfQorI2VuZGlmCisKKyAgICAgICAgLy8gUHVsbCBtYXRjaGVzIG91dCBieSBpbmNyZWFzaW5nIG9yZGVyIG9mIGRpc3RhbmNlLgorICAgICAgICAvLyBUbyBhdm9pZCByZWFzc2lnbmluZyBwb2ludGVycyB0aGF0IGhhdmUgYWxyZWFkeSBiZWVuIG1hdGNoZWQsIHRoZSBsb29wIGtlZXBzIHRyYWNrCisgICAgICAgIC8vIG9mIHdoaWNoIGxhc3QgYW5kIGN1cnJlbnQgcG9pbnRlcnMgaGF2ZSBiZWVuIG1hdGNoZWQgdXNpbmcgdGhlIG1hdGNoZWRYWFhCaXRzIHZhcmlhYmxlcy4KKyAgICAgICAgLy8gSXQgYWxzbyB0cmFja3MgdGhlIHVzZWQgcG9pbnRlciBpZCBiaXRzLgorICAgICAgICBCaXRTZXQzMiBtYXRjaGVkTGFzdEJpdHMoMCk7CisgICAgICAgIEJpdFNldDMyIG1hdGNoZWRDdXJyZW50Qml0cygwKTsKKyAgICAgICAgQml0U2V0MzIgdXNlZElkQml0cygwKTsKKyAgICAgICAgYm9vbCBmaXJzdCA9IHRydWU7CisgICAgICAgIGZvciAodWludDMyX3QgaSA9IG1pbihjdXJyZW50UG9pbnRlckNvdW50LCBsYXN0UG9pbnRlckNvdW50KTsgaSA+IDA7IGktLSkgeworICAgICAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgICAgIGlmIChmaXJzdCkgeworICAgICAgICAgICAgICAgICAgICAvLyBUaGUgZmlyc3QgdGltZSB0aHJvdWdoIHRoZSBsb29wLCB3ZSBqdXN0IGNvbnN1bWUgdGhlIHJvb3QgZWxlbWVudCBvZgorICAgICAgICAgICAgICAgICAgICAvLyB0aGUgaGVhcCAodGhlIG9uZSB3aXRoIHNtYWxsZXN0IGRpc3RhbmNlKS4KKyAgICAgICAgICAgICAgICAgICAgZmlyc3QgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvLyBQcmV2aW91cyBpdGVyYXRpb25zIGNvbnN1bWVkIHRoZSByb290IGVsZW1lbnQgb2YgdGhlIGhlYXAuCisgICAgICAgICAgICAgICAgICAgIC8vIFBvcCByb290IGVsZW1lbnQgb2ZmIG9mIHRoZSBoZWFwIChzaWZ0IGRvd24pLgorICAgICAgICAgICAgICAgICAgICBoZWFwU2l6ZSAtPSAxOworICAgICAgICAgICAgICAgICAgICBhc3NlcnQoaGVhcFNpemUgPiAwKTsKKworICAgICAgICAgICAgICAgICAgICAvLyBTaWZ0IGRvd24uCisgICAgICAgICAgICAgICAgICAgIGhlYXBbMF0gPSBoZWFwW2hlYXBTaXplXTsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh1aW50MzJfdCBwYXJlbnRJbmRleCA9IDA7IDspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGNoaWxkSW5kZXggPSBwYXJlbnRJbmRleCAqIDIgKyAxOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkSW5kZXggPj0gaGVhcFNpemUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNoaWxkSW5kZXggKyAxIDwgaGVhcFNpemUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgaGVhcFtjaGlsZEluZGV4ICsgMV0uZGlzdGFuY2UgPCBoZWFwW2NoaWxkSW5kZXhdLmRpc3RhbmNlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRJbmRleCArPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGVhcFtwYXJlbnRJbmRleF0uZGlzdGFuY2UgPD0gaGVhcFtjaGlsZEluZGV4XS5kaXN0YW5jZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBzd2FwKGhlYXBbcGFyZW50SW5kZXhdLCBoZWFwW2NoaWxkSW5kZXhdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudEluZGV4ID0gY2hpbGRJbmRleDsKKyAgICAgICAgICAgICAgICAgICAgfQorCisjaWYgREVCVUdfUE9JTlRFUl9BU1NJR05NRU5UCisgICAgICAgICAgICAgICAgICAgIExPR0QoImNhbGN1bGF0ZVBvaW50ZXJJZHMgLSByZWR1Y2VkIGRpc3RhbmNlIG1pbi1oZWFwOiBzaXplPSVkIiwgaGVhcFNpemUpOworICAgICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGhlYXBTaXplOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIExPR0QoIiAgaGVhcFslZF06IGN1cj0lZCwgbGFzdD0lZCwgZGlzdGFuY2U9JWxsZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGksIGhlYXBbaV0uY3VycmVudFBvaW50ZXJJbmRleCwgaGVhcFtpXS5sYXN0UG9pbnRlckluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFwW2ldLmRpc3RhbmNlKTsKKyAgICAgICAgICAgICAgICAgICAgfQorI2VuZGlmCisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdWludDMyX3QgY3VycmVudFBvaW50ZXJJbmRleCA9IGhlYXBbMF0uY3VycmVudFBvaW50ZXJJbmRleDsKKyAgICAgICAgICAgICAgICBpZiAobWF0Y2hlZEN1cnJlbnRCaXRzLmhhc0JpdChjdXJyZW50UG9pbnRlckluZGV4KSkgY29udGludWU7IC8vIGFscmVhZHkgbWF0Y2hlZAorCisgICAgICAgICAgICAgICAgdWludDMyX3QgbGFzdFBvaW50ZXJJbmRleCA9IGhlYXBbMF0ubGFzdFBvaW50ZXJJbmRleDsKKyAgICAgICAgICAgICAgICBpZiAobWF0Y2hlZExhc3RCaXRzLmhhc0JpdChsYXN0UG9pbnRlckluZGV4KSkgY29udGludWU7IC8vIGFscmVhZHkgbWF0Y2hlZAorCisgICAgICAgICAgICAgICAgbWF0Y2hlZEN1cnJlbnRCaXRzLm1hcmtCaXQoY3VycmVudFBvaW50ZXJJbmRleCk7CisgICAgICAgICAgICAgICAgbWF0Y2hlZExhc3RCaXRzLm1hcmtCaXQobGFzdFBvaW50ZXJJbmRleCk7CisKKyAgICAgICAgICAgICAgICB1aW50MzJfdCBpZCA9IGxhc3RUb3VjaC5wb2ludGVyc1tsYXN0UG9pbnRlckluZGV4XS5pZDsKKyAgICAgICAgICAgICAgICBjdXJyZW50VG91Y2gucG9pbnRlcnNbY3VycmVudFBvaW50ZXJJbmRleF0uaWQgPSBpZDsKKyAgICAgICAgICAgICAgICBjdXJyZW50VG91Y2guaWRUb0luZGV4W2lkXSA9IGN1cnJlbnRQb2ludGVySW5kZXg7CisgICAgICAgICAgICAgICAgdXNlZElkQml0cy5tYXJrQml0KGlkKTsKKworI2lmIERFQlVHX1BPSU5URVJfQVNTSUdOTUVOVAorICAgICAgICAgICAgICAgIExPR0QoImNhbGN1bGF0ZVBvaW50ZXJJZHMgLSBtYXRjaGVkOiBjdXI9JWQsIGxhc3Q9JWQsIGlkPSVkLCBkaXN0YW5jZT0lbGxkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RQb2ludGVySW5kZXgsIGN1cnJlbnRQb2ludGVySW5kZXgsIGlkLCBoZWFwWzBdLmRpc3RhbmNlKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gQXNzaWduIGZyZXNoIGlkcyB0byBuZXcgcG9pbnRlcnMuCisgICAgICAgIGlmIChjdXJyZW50UG9pbnRlckNvdW50ID4gbGFzdFBvaW50ZXJDb3VudCkgeworICAgICAgICAgICAgZm9yICh1aW50MzJfdCBpID0gY3VycmVudFBvaW50ZXJDb3VudCAtIGxhc3RQb2ludGVyQ291bnQ7IDspIHsKKyAgICAgICAgICAgICAgICB1aW50MzJfdCBjdXJyZW50UG9pbnRlckluZGV4ID0gbWF0Y2hlZEN1cnJlbnRCaXRzLmZpcnN0VW5tYXJrZWRCaXQoKTsKKyAgICAgICAgICAgICAgICB1aW50MzJfdCBpZCA9IHVzZWRJZEJpdHMuZmlyc3RVbm1hcmtlZEJpdCgpOworCisgICAgICAgICAgICAgICAgY3VycmVudFRvdWNoLnBvaW50ZXJzW2N1cnJlbnRQb2ludGVySW5kZXhdLmlkID0gaWQ7CisgICAgICAgICAgICAgICAgY3VycmVudFRvdWNoLmlkVG9JbmRleFtpZF0gPSBjdXJyZW50UG9pbnRlckluZGV4OworICAgICAgICAgICAgICAgIHVzZWRJZEJpdHMubWFya0JpdChpZCk7CisKKyNpZiBERUJVR19QT0lOVEVSX0FTU0lHTk1FTlQKKyAgICAgICAgICAgICAgICBMT0dEKCJjYWxjdWxhdGVQb2ludGVySWRzIC0gYXNzaWduZWQ6IGN1cj0lZCwgaWQ9JWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudFBvaW50ZXJJbmRleCwgaWQpOworI2VuZGlmCisKKyAgICAgICAgICAgICAgICBpZiAoLS1pID09IDApIGJyZWFrOyAvLyBkb25lCisgICAgICAgICAgICAgICAgbWF0Y2hlZEN1cnJlbnRCaXRzLm1hcmtCaXQoY3VycmVudFBvaW50ZXJJbmRleCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBGaXggaWQgYml0cy4KKyAgICAgICAgY3VycmVudFRvdWNoLmlkQml0cyA9IHVzZWRJZEJpdHM7CisgICAgfQorfQorCisvKiBTcGVjaWFsIGhhY2sgZm9yIGRldmljZXMgdGhhdCBoYXZlIGJhZCBzY3JlZW4gZGF0YTogaWYgb25lIG9mIHRoZQorICogcG9pbnRzIGhhcyBtb3ZlZCBtb3JlIHRoYW4gYSBzY3JlZW4gaGVpZ2h0IGZyb20gdGhlIGxhc3QgcG9zaXRpb24sCisgKiB0aGVuIGRyb3AgaXQuICovCitib29sIElucHV0RGV2aWNlOjpUb3VjaFNjcmVlblN0YXRlOjphcHBseUJhZFRvdWNoRmlsdGVyKCkgeworICAgIC8vIFRoaXMgaGFjayByZXF1aXJlcyB2YWxpZCBheGlzIHBhcmFtZXRlcnMuCisgICAgaWYgKCEgcGFyYW1ldGVycy55QXhpcy52YWxpZCkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgdWludDMyX3QgcG9pbnRlckNvdW50ID0gY3VycmVudFRvdWNoLnBvaW50ZXJDb3VudDsKKworICAgIC8vIE5vdGhpbmcgdG8gZG8gaWYgdGhlcmUgYXJlIG5vIHBvaW50cy4KKyAgICBpZiAocG9pbnRlckNvdW50ID09IDApIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIERvbid0IGRvIGFueXRoaW5nIGlmIGEgZmluZ2VyIGlzIGdvaW5nIGRvd24gb3IgdXAuICBXZSBydW4KKyAgICAvLyBoZXJlIGJlZm9yZSBhc3NpZ25pbmcgcG9pbnRlciBJRHMsIHNvIHRoZXJlIGlzbid0IGEgZ29vZAorICAgIC8vIHdheSB0byBkbyBwZXItZmluZ2VyIG1hdGNoaW5nLgorICAgIGlmIChwb2ludGVyQ291bnQgIT0gbGFzdFRvdWNoLnBvaW50ZXJDb3VudCkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gV2UgY29uc2lkZXIgYSBzaW5nbGUgbW92ZW1lbnQgYWNyb3NzIG1vcmUgdGhhbiBhIDcvMTYgb2YKKyAgICAvLyB0aGUgbG9uZyBzaXplIG9mIHRoZSBzY3JlZW4gdG8gYmUgYmFkLiAgVGhpcyB3YXMgYSBtYWdpYyB2YWx1ZQorICAgIC8vIGRldGVybWluZWQgYnkgbG9va2luZyBhdCB0aGUgbWF4aW11bSBkaXN0YW5jZSBpdCBpcyBmZWFzaWJsZQorICAgIC8vIHRvIGFjdHVhbGx5IG1vdmUgaW4gb25lIHNhbXBsZS4KKyAgICBpbnQzMl90IG1heERlbHRhWSA9IHBhcmFtZXRlcnMueUF4aXMucmFuZ2UgKiA3IC8gMTY7CisKKyAgICAvLyBYWFggVGhlIG9yaWdpbmFsIGNvZGUgaW4gSW5wdXREZXZpY2UuamF2YSBpbmNsdWRlZCBjb21tZW50ZWQgb3V0CisgICAgLy8gICAgIGNvZGUgZm9yIHRlc3RpbmcgdGhlIFggYXhpcy4gIE5vdGUgdGhhdCB3aGVuIHdlIGRyb3AgYSBwb2ludAorICAgIC8vICAgICB3ZSBkb24ndCBhY3R1YWxseSByZXN0b3JlIHRoZSBvbGQgWCBlaXRoZXIuICBTdHJhbmdlLgorICAgIC8vICAgICBUaGUgb2xkIGNvZGUgYWxzbyB0cmllcyB0byB0cmFjayB3aGVuIGJhZCBwb2ludHMgd2VyZSBwcmV2aW91c2x5CisgICAgLy8gICAgIGRldGVjdGVkIGJ1dCBpdCB0dXJucyBvdXQgdGhhdCBkdWUgdG8gdGhlIHBsYWNlbWVudCBvZiBhICJicmVhayIKKyAgICAvLyAgICAgYXQgdGhlIGVuZCBvZiB0aGUgbG9vcCwgd2UgbmV2ZXIgc2V0IG1Ecm9wcGVkQmFkUG9pbnQgdG8gdHJ1ZQorICAgIC8vICAgICBzbyBpdCBpcyBlZmZlY3RpdmVseSBkZWFkIGNvZGUuCisgICAgLy8gTmVlZCB0byBmaWd1cmUgb3V0IGlmIHRoZSBvbGQgY29kZSBpcyBidXN0ZWQgb3IganVzdCBvdmVyY29tcGxpY2F0ZWQKKyAgICAvLyBidXQgd29ya2luZyBhcyBpbnRlbmRlZC4KKworICAgIC8vIExvb2sgdGhyb3VnaCBhbGwgbmV3IHBvaW50cyBhbmQgc2VlIGlmIGFueSBhcmUgZmFydGhlciB0aGFuCisgICAgLy8gYWNjZXB0YWJsZSBmcm9tIGFsbCBwcmV2aW91cyBwb2ludHMuCisgICAgZm9yICh1aW50MzJfdCBpID0gcG9pbnRlckNvdW50OyBpLS0gPiAwOyApIHsKKyAgICAgICAgaW50MzJfdCB5ID0gY3VycmVudFRvdWNoLnBvaW50ZXJzW2ldLnk7CisgICAgICAgIGludDMyX3QgY2xvc2VzdFkgPSBJTlRfTUFYOworICAgICAgICBpbnQzMl90IGNsb3Nlc3REZWx0YVkgPSAwOworCisjaWYgREVCVUdfSEFDS1MKKyAgICAgICAgTE9HRCgiQmFkVG91Y2hGaWx0ZXI6IExvb2tpbmcgYXQgbmV4dCBwb2ludCAjJWQ6IHk9JWQiLCBpLCB5KTsKKyNlbmRpZgorCisgICAgICAgIGZvciAodWludDMyX3QgaiA9IHBvaW50ZXJDb3VudDsgai0tID4gMDsgKSB7CisgICAgICAgICAgICBpbnQzMl90IGxhc3RZID0gbGFzdFRvdWNoLnBvaW50ZXJzW2pdLnk7CisgICAgICAgICAgICBpbnQzMl90IGRlbHRhWSA9IGFicyh5IC0gbGFzdFkpOworCisjaWYgREVCVUdfSEFDS1MKKyAgICAgICAgICAgIExPR0QoIkJhZFRvdWNoRmlsdGVyOiBDb21wYXJpbmcgd2l0aCBsYXN0IHBvaW50ICMlZDogeT0lZCBkZWx0YVk9JWQiLAorICAgICAgICAgICAgICAgICAgICBqLCBsYXN0WSwgZGVsdGFZKTsKKyNlbmRpZgorCisgICAgICAgICAgICBpZiAoZGVsdGFZIDwgbWF4RGVsdGFZKSB7CisgICAgICAgICAgICAgICAgZ290byBTa2lwU3VmZmljaWVudGx5Q2xvc2VQb2ludDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChkZWx0YVkgPCBjbG9zZXN0RGVsdGFZKSB7CisgICAgICAgICAgICAgICAgY2xvc2VzdERlbHRhWSA9IGRlbHRhWTsKKyAgICAgICAgICAgICAgICBjbG9zZXN0WSA9IGxhc3RZOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gTXVzdCBub3QgaGF2ZSBmb3VuZCBhIGNsb3NlIGVub3VnaCBtYXRjaC4KKyNpZiBERUJVR19IQUNLUworICAgICAgICBMT0dEKCJCYWRUb3VjaEZpbHRlcjogRHJvcHBpbmcgYmFkIHBvaW50ICMlZDogbmV3WT0lZCBvbGRZPSVkIGRlbHRhWT0lZCBtYXhEZWx0YVk9JWQiLAorICAgICAgICAgICAgICAgIGksIHksIGNsb3Nlc3RZLCBjbG9zZXN0RGVsdGFZLCBtYXhEZWx0YVkpOworI2VuZGlmCisKKyAgICAgICAgY3VycmVudFRvdWNoLnBvaW50ZXJzW2ldLnkgPSBjbG9zZXN0WTsKKyAgICAgICAgcmV0dXJuIHRydWU7IC8vIFhYWCBvcmlnaW5hbCBjb2RlIG9ubHkgY29ycmVjdHMgb25lIHBvaW50CisKKyAgICBTa2lwU3VmZmljaWVudGx5Q2xvc2VQb2ludDogOworICAgIH0KKworICAgIC8vIE5vIGNoYW5nZS4KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKy8qIFNwZWNpYWwgaGFjayBmb3IgZGV2aWNlcyB0aGF0IGhhdmUgYmFkIHNjcmVlbiBkYXRhOiBkcm9wIHBvaW50cyB3aGVyZQorICogdGhlIGNvb3JkaW5hdGUgdmFsdWUgZm9yIG9uZSBheGlzIGhhcyBqdW1wZWQgdG8gdGhlIG90aGVyIHBvaW50ZXIncyBsb2NhdGlvbi4KKyAqLworYm9vbCBJbnB1dERldmljZTo6VG91Y2hTY3JlZW5TdGF0ZTo6YXBwbHlKdW1weVRvdWNoRmlsdGVyKCkgeworICAgIC8vIFRoaXMgaGFjayByZXF1aXJlcyB2YWxpZCBheGlzIHBhcmFtZXRlcnMuCisgICAgaWYgKCEgcGFyYW1ldGVycy55QXhpcy52YWxpZCkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgdWludDMyX3QgcG9pbnRlckNvdW50ID0gY3VycmVudFRvdWNoLnBvaW50ZXJDb3VudDsKKyAgICBpZiAobGFzdFRvdWNoLnBvaW50ZXJDb3VudCAhPSBwb2ludGVyQ291bnQpIHsKKyNpZiBERUJVR19IQUNLUworICAgICAgICBMT0dEKCJKdW1weVRvdWNoRmlsdGVyOiBEaWZmZXJlbnQgcG9pbnRlciBjb3VudCAlZCAtPiAlZCIsCisgICAgICAgICAgICAgICAgbGFzdFRvdWNoLnBvaW50ZXJDb3VudCwgcG9pbnRlckNvdW50KTsKKyAgICAgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IHBvaW50ZXJDb3VudDsgaSsrKSB7CisgICAgICAgICAgICBMT0dEKCIgIFBvaW50ZXIgJWQgKCVkLCAlZCkiLCBpLAorICAgICAgICAgICAgICAgICAgICBjdXJyZW50VG91Y2gucG9pbnRlcnNbaV0ueCwgY3VycmVudFRvdWNoLnBvaW50ZXJzW2ldLnkpOworICAgICAgICB9CisjZW5kaWYKKworICAgICAgICBpZiAoanVtcHlUb3VjaEZpbHRlci5qdW1weVBvaW50c0Ryb3BwZWQgPCBKVU1QWV9UUkFOU0lUSU9OX0RST1BTKSB7CisgICAgICAgICAgICBpZiAobGFzdFRvdWNoLnBvaW50ZXJDb3VudCA9PSAxICYmIHBvaW50ZXJDb3VudCA9PSAyKSB7CisgICAgICAgICAgICAgICAgLy8gSnVzdCBkcm9wIHRoZSBmaXJzdCBmZXcgZXZlbnRzIGdvaW5nIGZyb20gMSB0byAyIHBvaW50ZXJzLgorICAgICAgICAgICAgICAgIC8vIFRoZXkncmUgYmFkIG9mdGVuIGVub3VnaCB0aGF0IHRoZXkncmUgbm90IHdvcnRoIGNvbnNpZGVyaW5nLgorICAgICAgICAgICAgICAgIGN1cnJlbnRUb3VjaC5wb2ludGVyQ291bnQgPSAxOworICAgICAgICAgICAgICAgIGp1bXB5VG91Y2hGaWx0ZXIuanVtcHlQb2ludHNEcm9wcGVkICs9IDE7CisKKyNpZiBERUJVR19IQUNLUworICAgICAgICAgICAgICAgIExPR0QoIkp1bXB5VG91Y2hGaWx0ZXI6IFBvaW50ZXIgMiBkcm9wcGVkIik7CisjZW5kaWYKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobGFzdFRvdWNoLnBvaW50ZXJDb3VudCA9PSAyICYmIHBvaW50ZXJDb3VudCA9PSAxKSB7CisgICAgICAgICAgICAgICAgLy8gVGhlIGV2ZW50IHdoZW4gd2UgZ28gZnJvbSAyIC0+IDEgdGVuZHMgdG8gYmUgbWVzc2VkIHVwIHRvbworICAgICAgICAgICAgICAgIGN1cnJlbnRUb3VjaC5wb2ludGVyQ291bnQgPSAyOworICAgICAgICAgICAgICAgIGN1cnJlbnRUb3VjaC5wb2ludGVyc1swXSA9IGxhc3RUb3VjaC5wb2ludGVyc1swXTsKKyAgICAgICAgICAgICAgICBjdXJyZW50VG91Y2gucG9pbnRlcnNbMV0gPSBsYXN0VG91Y2gucG9pbnRlcnNbMV07CisgICAgICAgICAgICAgICAganVtcHlUb3VjaEZpbHRlci5qdW1weVBvaW50c0Ryb3BwZWQgKz0gMTsKKworI2lmIERFQlVHX0hBQ0tTCisgICAgICAgICAgICAgICAgZm9yIChpbnQzMl90IGkgPSAwOyBpIDwgMjsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIExPR0QoIkp1bXB5VG91Y2hGaWx0ZXI6IFBvaW50ZXIgJWQgcmVwbGFjZWQgKCVkLCAlZCkiLCBpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRUb3VjaC5wb2ludGVyc1tpXS54LCBjdXJyZW50VG91Y2gucG9pbnRlcnNbaV0ueSk7CisgICAgICAgICAgICAgICAgfQorI2VuZGlmCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgLy8gUmVzZXQganVtcHkgcG9pbnRzIGRyb3BwZWQgb24gb3RoZXIgdHJhbnNpdGlvbnMgb3IgaWYgbGltaXQgZXhjZWVkZWQuCisgICAgICAgIGp1bXB5VG91Y2hGaWx0ZXIuanVtcHlQb2ludHNEcm9wcGVkID0gMDsKKworI2lmIERFQlVHX0hBQ0tTCisgICAgICAgIExPR0QoIkp1bXB5VG91Y2hGaWx0ZXI6IFRyYW5zaXRpb24gLSBkcm9wIGxpbWl0IHJlc2V0Iik7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8vIFdlIGhhdmUgdGhlIHNhbWUgbnVtYmVyIG9mIHBvaW50ZXJzIGFzIGxhc3QgdGltZS4KKyAgICAvLyBBICdqdW1weScgcG9pbnQgaXMgb25lIHdoZXJlIHRoZSBjb29yZGluYXRlIHZhbHVlIGZvciBvbmUgYXhpcworICAgIC8vIGhhcyBqdW1wZWQgdG8gdGhlIG90aGVyIHBvaW50ZXIncyBsb2NhdGlvbi4gTm8gbmVlZCB0byBkbyBhbnl0aGluZworICAgIC8vIGVsc2UgaWYgd2Ugb25seSBoYXZlIG9uZSBwb2ludGVyLgorICAgIGlmIChwb2ludGVyQ291bnQgPCAyKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAoanVtcHlUb3VjaEZpbHRlci5qdW1weVBvaW50c0Ryb3BwZWQgPCBKVU1QWV9EUk9QX0xJTUlUKSB7CisgICAgICAgIGludCBqdW1weUVwc2lsb24gPSBwYXJhbWV0ZXJzLnlBeGlzLnJhbmdlIC8gSlVNUFlfRVBTSUxPTl9ESVZJU09SOworCisgICAgICAgIC8vIFdlIG9ubHkgcmVwbGFjZSB0aGUgc2luZ2xlIHdvcnN0IGp1bXB5IHBvaW50IGFzIGNoYXJhY3Rlcml6ZWQgYnkgcG9pbnRlciBkaXN0YW5jZQorICAgICAgICAvLyBpbiBhIHNpbmdsZSBheGlzLgorICAgICAgICBpbnQzMl90IGJhZFBvaW50ZXJJbmRleCA9IC0xOworICAgICAgICBpbnQzMl90IGJhZFBvaW50ZXJSZXBsYWNlbWVudEluZGV4ID0gLTE7CisgICAgICAgIGludDMyX3QgYmFkUG9pbnRlckRpc3RhbmNlID0gSU5UX01JTjsgLy8gZGlzdGFuY2UgdG8gYmUgY29ycmVjdGVkCisKKyAgICAgICAgZm9yICh1aW50MzJfdCBpID0gcG9pbnRlckNvdW50OyBpLS0gPiAwOyApIHsKKyAgICAgICAgICAgIGludDMyX3QgeCA9IGN1cnJlbnRUb3VjaC5wb2ludGVyc1tpXS54OworICAgICAgICAgICAgaW50MzJfdCB5ID0gY3VycmVudFRvdWNoLnBvaW50ZXJzW2ldLnk7CisKKyNpZiBERUJVR19IQUNLUworICAgICAgICAgICAgTE9HRCgiSnVtcHlUb3VjaEZpbHRlcjogUG9pbnQgJWQgKCVkLCAlZCkiLCBpLCB4LCB5KTsKKyNlbmRpZgorCisgICAgICAgICAgICAvLyBDaGVjayBpZiBhIHRvdWNoIHBvaW50IGlzIHRvbyBjbG9zZSB0byBhbm90aGVyJ3MgY29vcmRpbmF0ZXMKKyAgICAgICAgICAgIGJvb2wgZHJvcFggPSBmYWxzZSwgZHJvcFkgPSBmYWxzZTsKKyAgICAgICAgICAgIGZvciAodWludDMyX3QgaiA9IDA7IGogPCBwb2ludGVyQ291bnQ7IGorKykgeworICAgICAgICAgICAgICAgIGlmIChpID09IGopIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKGFicyh4IC0gY3VycmVudFRvdWNoLnBvaW50ZXJzW2pdLngpIDw9IGp1bXB5RXBzaWxvbikgeworICAgICAgICAgICAgICAgICAgICBkcm9wWCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChhYnMoeSAtIGN1cnJlbnRUb3VjaC5wb2ludGVyc1tqXS55KSA8PSBqdW1weUVwc2lsb24pIHsKKyAgICAgICAgICAgICAgICAgICAgZHJvcFkgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoISBkcm9wWCAmJiAhIGRyb3BZKSB7CisgICAgICAgICAgICAgICAgY29udGludWU7IC8vIG5vdCBqdW1weQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBGaW5kIGEgcmVwbGFjZW1lbnQgY2FuZGlkYXRlIGJ5IGNvbXBhcmluZyB3aXRoIG9sZGVyIHBvaW50cyBvbiB0aGUKKyAgICAgICAgICAgIC8vIGNvbXBsZW1lbnRhcnkgKG5vbi1qdW1weSkgYXhpcy4KKyAgICAgICAgICAgIGludDMyX3QgZGlzdGFuY2UgPSBJTlRfTUlOOyAvLyBkaXN0YW5jZSB0byBiZSBjb3JyZWN0ZWQKKyAgICAgICAgICAgIGludDMyX3QgcmVwbGFjZW1lbnRJbmRleCA9IC0xOworCisgICAgICAgICAgICBpZiAoZHJvcFgpIHsKKyAgICAgICAgICAgICAgICAvLyBYIGxvb2tzIHRvbyBjbG9zZS4gIEZpbmQgYW4gb2xkZXIgcmVwbGFjZW1lbnQgcG9pbnQgd2l0aCBhIGNsb3NlIFkuCisgICAgICAgICAgICAgICAgaW50MzJfdCBzbWFsbGVzdERlbHRhWSA9IElOVF9NQVg7CisgICAgICAgICAgICAgICAgZm9yICh1aW50MzJfdCBqID0gMDsgaiA8IHBvaW50ZXJDb3VudDsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgIGludDMyX3QgZGVsdGFZID0gYWJzKHkgLSBsYXN0VG91Y2gucG9pbnRlcnNbal0ueSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChkZWx0YVkgPCBzbWFsbGVzdERlbHRhWSkgeworICAgICAgICAgICAgICAgICAgICAgICAgc21hbGxlc3REZWx0YVkgPSBkZWx0YVk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlbWVudEluZGV4ID0gajsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkaXN0YW5jZSA9IGFicyh4IC0gbGFzdFRvdWNoLnBvaW50ZXJzW3JlcGxhY2VtZW50SW5kZXhdLngpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBZIGxvb2tzIHRvbyBjbG9zZS4gIEZpbmQgYW4gb2xkZXIgcmVwbGFjZW1lbnQgcG9pbnQgd2l0aCBhIGNsb3NlIFguCisgICAgICAgICAgICAgICAgaW50MzJfdCBzbWFsbGVzdERlbHRhWCA9IElOVF9NQVg7CisgICAgICAgICAgICAgICAgZm9yICh1aW50MzJfdCBqID0gMDsgaiA8IHBvaW50ZXJDb3VudDsgaisrKSB7CisgICAgICAgICAgICAgICAgICAgIGludDMyX3QgZGVsdGFYID0gYWJzKHggLSBsYXN0VG91Y2gucG9pbnRlcnNbal0ueCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChkZWx0YVggPCBzbWFsbGVzdERlbHRhWCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc21hbGxlc3REZWx0YVggPSBkZWx0YVg7CisgICAgICAgICAgICAgICAgICAgICAgICByZXBsYWNlbWVudEluZGV4ID0gajsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkaXN0YW5jZSA9IGFicyh5IC0gbGFzdFRvdWNoLnBvaW50ZXJzW3JlcGxhY2VtZW50SW5kZXhdLnkpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBJZiByZXBsYWNpbmcgdGhpcyBwb2ludGVyIHdvdWxkIGNvcnJlY3QgYSB3b3JzZSBlcnJvciB0aGFuIHRoZSBwcmV2aW91cyBvbmVzCisgICAgICAgICAgICAvLyBjb25zaWRlcmVkLCB0aGVuIHVzZSB0aGlzIHJlcGxhY2VtZW50IGluc3RlYWQuCisgICAgICAgICAgICBpZiAoZGlzdGFuY2UgPiBiYWRQb2ludGVyRGlzdGFuY2UpIHsKKyAgICAgICAgICAgICAgICBiYWRQb2ludGVySW5kZXggPSBpOworICAgICAgICAgICAgICAgIGJhZFBvaW50ZXJSZXBsYWNlbWVudEluZGV4ID0gcmVwbGFjZW1lbnRJbmRleDsKKyAgICAgICAgICAgICAgICBiYWRQb2ludGVyRGlzdGFuY2UgPSBkaXN0YW5jZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIENvcnJlY3QgdGhlIGp1bXB5IHBvaW50ZXIgaWYgb25lIHdhcyBmb3VuZC4KKyAgICAgICAgaWYgKGJhZFBvaW50ZXJJbmRleCA+PSAwKSB7CisjaWYgREVCVUdfSEFDS1MKKyAgICAgICAgICAgIExPR0QoIkp1bXB5VG91Y2hGaWx0ZXI6IFJlcGxhY2luZyBiYWQgcG9pbnRlciAlZCB3aXRoICglZCwgJWQpIiwKKyAgICAgICAgICAgICAgICAgICAgYmFkUG9pbnRlckluZGV4LAorICAgICAgICAgICAgICAgICAgICBsYXN0VG91Y2gucG9pbnRlcnNbYmFkUG9pbnRlclJlcGxhY2VtZW50SW5kZXhdLngsCisgICAgICAgICAgICAgICAgICAgIGxhc3RUb3VjaC5wb2ludGVyc1tiYWRQb2ludGVyUmVwbGFjZW1lbnRJbmRleF0ueSk7CisjZW5kaWYKKworICAgICAgICAgICAgY3VycmVudFRvdWNoLnBvaW50ZXJzW2JhZFBvaW50ZXJJbmRleF0ueCA9CisgICAgICAgICAgICAgICAgICAgIGxhc3RUb3VjaC5wb2ludGVyc1tiYWRQb2ludGVyUmVwbGFjZW1lbnRJbmRleF0ueDsKKyAgICAgICAgICAgIGN1cnJlbnRUb3VjaC5wb2ludGVyc1tiYWRQb2ludGVySW5kZXhdLnkgPQorICAgICAgICAgICAgICAgICAgICBsYXN0VG91Y2gucG9pbnRlcnNbYmFkUG9pbnRlclJlcGxhY2VtZW50SW5kZXhdLnk7CisgICAgICAgICAgICBqdW1weVRvdWNoRmlsdGVyLmp1bXB5UG9pbnRzRHJvcHBlZCArPSAxOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBqdW1weVRvdWNoRmlsdGVyLmp1bXB5UG9pbnRzRHJvcHBlZCA9IDA7CisgICAgcmV0dXJuIGZhbHNlOworfQorCisvKiBTcGVjaWFsIGhhY2sgZm9yIGRldmljZXMgdGhhdCBoYXZlIGJhZCBzY3JlZW4gZGF0YTogYWdncmVnYXRlIGFuZAorICogY29tcHV0ZSBhdmVyYWdlcyBvZiB0aGUgY29vcmRpbmF0ZSBkYXRhLCB0byByZWR1Y2UgdGhlIGFtb3VudCBvZgorICogaml0dGVyIHNlZW4gYnkgYXBwbGljYXRpb25zLiAqLwordm9pZCBJbnB1dERldmljZTo6VG91Y2hTY3JlZW5TdGF0ZTo6YXBwbHlBdmVyYWdpbmdUb3VjaEZpbHRlcigpIHsKKyAgICBmb3IgKHVpbnQzMl90IGN1cnJlbnRJbmRleCA9IDA7IGN1cnJlbnRJbmRleCA8IGN1cnJlbnRUb3VjaC5wb2ludGVyQ291bnQ7IGN1cnJlbnRJbmRleCsrKSB7CisgICAgICAgIHVpbnQzMl90IGlkID0gY3VycmVudFRvdWNoLnBvaW50ZXJzW2N1cnJlbnRJbmRleF0uaWQ7CisgICAgICAgIGludDMyX3QgeCA9IGN1cnJlbnRUb3VjaC5wb2ludGVyc1tjdXJyZW50SW5kZXhdLng7CisgICAgICAgIGludDMyX3QgeSA9IGN1cnJlbnRUb3VjaC5wb2ludGVyc1tjdXJyZW50SW5kZXhdLnk7CisgICAgICAgIGludDMyX3QgcHJlc3N1cmUgPSBjdXJyZW50VG91Y2gucG9pbnRlcnNbY3VycmVudEluZGV4XS5wcmVzc3VyZTsKKworICAgICAgICBpZiAobGFzdFRvdWNoLmlkQml0cy5oYXNCaXQoaWQpKSB7CisgICAgICAgICAgICAvLyBQb2ludGVyIHdhcyBkb3duIGJlZm9yZSBhbmQgaXMgc3RpbGwgZG93biBub3cuCisgICAgICAgICAgICAvLyBDb21wdXRlIGF2ZXJhZ2Ugb3ZlciBoaXN0b3J5IHRyYWNlLgorICAgICAgICAgICAgdWludDMyX3Qgc3RhcnQgPSBhdmVyYWdpbmdUb3VjaEZpbHRlci5oaXN0b3J5U3RhcnRbaWRdOworICAgICAgICAgICAgdWludDMyX3QgZW5kID0gYXZlcmFnaW5nVG91Y2hGaWx0ZXIuaGlzdG9yeUVuZFtpZF07CisKKyAgICAgICAgICAgIGludDY0X3QgZGVsdGFYID0geCAtIGF2ZXJhZ2luZ1RvdWNoRmlsdGVyLmhpc3RvcnlEYXRhW2VuZF0ucG9pbnRlcnNbaWRdLng7CisgICAgICAgICAgICBpbnQ2NF90IGRlbHRhWSA9IHkgLSBhdmVyYWdpbmdUb3VjaEZpbHRlci5oaXN0b3J5RGF0YVtlbmRdLnBvaW50ZXJzW2lkXS55OworICAgICAgICAgICAgdWludDY0X3QgZGlzdGFuY2UgPSB1aW50NjRfdChkZWx0YVggKiBkZWx0YVggKyBkZWx0YVkgKiBkZWx0YVkpOworCisjaWYgREVCVUdfSEFDS1MKKyAgICAgICAgICAgIExPR0QoIkF2ZXJhZ2luZ1RvdWNoRmlsdGVyOiBQb2ludGVyIGlkICVkIC0gRGlzdGFuY2UgZnJvbSBsYXN0IHNhbXBsZTogJWxsZCIsCisgICAgICAgICAgICAgICAgICAgIGlkLCBkaXN0YW5jZSk7CisjZW5kaWYKKworICAgICAgICAgICAgaWYgKGRpc3RhbmNlIDwgQVZFUkFHSU5HX0RJU1RBTkNFX0xJTUlUKSB7CisgICAgICAgICAgICAgICAgLy8gSW5jcmVtZW50IGVuZCBpbmRleCBpbiBwcmVwYXJhdGlvbiBmb3IgcmVjb3JkaW5nIG5ldyBoaXN0b3JpY2FsIGRhdGEuCisgICAgICAgICAgICAgICAgZW5kICs9IDE7CisgICAgICAgICAgICAgICAgaWYgKGVuZCA+IEFWRVJBR0lOR19ISVNUT1JZX1NJWkUpIHsKKyAgICAgICAgICAgICAgICAgICAgZW5kID0gMDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBJZiB0aGUgZW5kIGluZGV4IGhhcyBsb29wZWQgYmFjayB0byB0aGUgc3RhcnQgaW5kZXggdGhlbiB3ZSBoYXZlIGZpbGxlZAorICAgICAgICAgICAgICAgIC8vIHRoZSBoaXN0b3JpY2FsIHRyYWNlIHVwIHRvIHRoZSBkZXNpcmVkIHNpemUgc28gd2UgZHJvcCB0aGUgaGlzdG9yaWNhbAorICAgICAgICAgICAgICAgIC8vIGRhdGEgYXQgdGhlIHN0YXJ0IG9mIHRoZSB0cmFjZS4KKyAgICAgICAgICAgICAgICBpZiAoZW5kID09IHN0YXJ0KSB7CisgICAgICAgICAgICAgICAgICAgIHN0YXJ0ICs9IDE7CisgICAgICAgICAgICAgICAgICAgIGlmIChzdGFydCA+IEFWRVJBR0lOR19ISVNUT1JZX1NJWkUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIEFkZCB0aGUgcmF3IGRhdGEgdG8gdGhlIGhpc3RvcmljYWwgdHJhY2UuCisgICAgICAgICAgICAgICAgYXZlcmFnaW5nVG91Y2hGaWx0ZXIuaGlzdG9yeVN0YXJ0W2lkXSA9IHN0YXJ0OworICAgICAgICAgICAgICAgIGF2ZXJhZ2luZ1RvdWNoRmlsdGVyLmhpc3RvcnlFbmRbaWRdID0gZW5kOworICAgICAgICAgICAgICAgIGF2ZXJhZ2luZ1RvdWNoRmlsdGVyLmhpc3RvcnlEYXRhW2VuZF0ucG9pbnRlcnNbaWRdLnggPSB4OworICAgICAgICAgICAgICAgIGF2ZXJhZ2luZ1RvdWNoRmlsdGVyLmhpc3RvcnlEYXRhW2VuZF0ucG9pbnRlcnNbaWRdLnkgPSB5OworICAgICAgICAgICAgICAgIGF2ZXJhZ2luZ1RvdWNoRmlsdGVyLmhpc3RvcnlEYXRhW2VuZF0ucG9pbnRlcnNbaWRdLnByZXNzdXJlID0gcHJlc3N1cmU7CisKKyAgICAgICAgICAgICAgICAvLyBBdmVyYWdlIG92ZXIgYWxsIGhpc3RvcmljYWwgcG9zaXRpb25zIGluIHRoZSB0cmFjZSBieSB0b3RhbCBwcmVzc3VyZS4KKyAgICAgICAgICAgICAgICBpbnQzMl90IGF2ZXJhZ2VkWCA9IDA7CisgICAgICAgICAgICAgICAgaW50MzJfdCBhdmVyYWdlZFkgPSAwOworICAgICAgICAgICAgICAgIGludDMyX3QgdG90YWxQcmVzc3VyZSA9IDA7CisgICAgICAgICAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGhpc3RvcmljYWxYID0gYXZlcmFnaW5nVG91Y2hGaWx0ZXIuaGlzdG9yeURhdGFbc3RhcnRdLnBvaW50ZXJzW2lkXS54OworICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGhpc3RvcmljYWxZID0gYXZlcmFnaW5nVG91Y2hGaWx0ZXIuaGlzdG9yeURhdGFbc3RhcnRdLnBvaW50ZXJzW2lkXS55OworICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGhpc3RvcmljYWxQcmVzc3VyZSA9IGF2ZXJhZ2luZ1RvdWNoRmlsdGVyLmhpc3RvcnlEYXRhW3N0YXJ0XQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5wb2ludGVyc1tpZF0ucHJlc3N1cmU7CisKKyAgICAgICAgICAgICAgICAgICAgYXZlcmFnZWRYICs9IGhpc3RvcmljYWxYICogaGlzdG9yaWNhbFByZXNzdXJlOworICAgICAgICAgICAgICAgICAgICBhdmVyYWdlZFkgKz0gaGlzdG9yaWNhbFkgKiBoaXN0b3JpY2FsUHJlc3N1cmU7CisgICAgICAgICAgICAgICAgICAgIHRvdGFsUHJlc3N1cmUgKz0gaGlzdG9yaWNhbFByZXNzdXJlOworCisgICAgICAgICAgICAgICAgICAgIGlmIChzdGFydCA9PSBlbmQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgc3RhcnQgKz0gMTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0ID4gQVZFUkFHSU5HX0hJU1RPUllfU0laRSkgeworICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSAwOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgYXZlcmFnZWRYIC89IHRvdGFsUHJlc3N1cmU7CisgICAgICAgICAgICAgICAgYXZlcmFnZWRZIC89IHRvdGFsUHJlc3N1cmU7CisKKyNpZiBERUJVR19IQUNLUworICAgICAgICAgICAgICAgIExPR0QoIkF2ZXJhZ2luZ1RvdWNoRmlsdGVyOiBQb2ludGVyIGlkICVkIC0gIgorICAgICAgICAgICAgICAgICAgICAgICAgInRvdGFsUHJlc3N1cmU9JWQsIGF2ZXJhZ2VkWD0lZCwgYXZlcmFnZWRZPSVkIiwgaWQsIHRvdGFsUHJlc3N1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICBhdmVyYWdlZFgsIGF2ZXJhZ2VkWSk7CisjZW5kaWYKKworICAgICAgICAgICAgICAgIGN1cnJlbnRUb3VjaC5wb2ludGVyc1tjdXJyZW50SW5kZXhdLnggPSBhdmVyYWdlZFg7CisgICAgICAgICAgICAgICAgY3VycmVudFRvdWNoLnBvaW50ZXJzW2N1cnJlbnRJbmRleF0ueSA9IGF2ZXJhZ2VkWTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisjaWYgREVCVUdfSEFDS1MKKyAgICAgICAgICAgICAgICBMT0dEKCJBdmVyYWdpbmdUb3VjaEZpbHRlcjogUG9pbnRlciBpZCAlZCAtIEV4Y2VlZGVkIG1heCBkaXN0YW5jZSIsIGlkKTsKKyNlbmRpZgorICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworI2lmIERFQlVHX0hBQ0tTCisgICAgICAgICAgICBMT0dEKCJBdmVyYWdpbmdUb3VjaEZpbHRlcjogUG9pbnRlciBpZCAlZCAtIFBvaW50ZXIgd2VudCB1cCIsIGlkKTsKKyNlbmRpZgorICAgICAgICB9CisKKyAgICAgICAgLy8gUmVzZXQgcG9pbnRlciBoaXN0b3J5LgorICAgICAgICBhdmVyYWdpbmdUb3VjaEZpbHRlci5oaXN0b3J5U3RhcnRbaWRdID0gMDsKKyAgICAgICAgYXZlcmFnaW5nVG91Y2hGaWx0ZXIuaGlzdG9yeUVuZFtpZF0gPSAwOworICAgICAgICBhdmVyYWdpbmdUb3VjaEZpbHRlci5oaXN0b3J5RGF0YVswXS5wb2ludGVyc1tpZF0ueCA9IHg7CisgICAgICAgIGF2ZXJhZ2luZ1RvdWNoRmlsdGVyLmhpc3RvcnlEYXRhWzBdLnBvaW50ZXJzW2lkXS55ID0geTsKKyAgICAgICAgYXZlcmFnaW5nVG91Y2hGaWx0ZXIuaGlzdG9yeURhdGFbMF0ucG9pbnRlcnNbaWRdLnByZXNzdXJlID0gcHJlc3N1cmU7CisgICAgfQorfQorCitib29sIElucHV0RGV2aWNlOjpUb3VjaFNjcmVlblN0YXRlOjppc1BvaW50SW5zaWRlRGlzcGxheShpbnQzMl90IHgsIGludDMyX3QgeSkgY29uc3QgeworICAgIGlmICghIHBhcmFtZXRlcnMueEF4aXMudmFsaWQgfHwgISBwYXJhbWV0ZXJzLnlBeGlzLnZhbGlkKSB7CisgICAgICAgIC8vIEFzc3VtZSBhbGwgcG9pbnRzIG9uIGEgdG91Y2ggc2NyZWVuIHdpdGhvdXQgdmFsaWQgYXhpcyBwYXJhbWV0ZXJzIGFyZQorICAgICAgICAvLyBpbnNpZGUgdGhlIGRpc3BsYXkuCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiB4ID49IHBhcmFtZXRlcnMueEF4aXMubWluVmFsdWUKKyAgICAgICAgJiYgeCA8PSBwYXJhbWV0ZXJzLnhBeGlzLm1heFZhbHVlCisgICAgICAgICYmIHkgPj0gcGFyYW1ldGVycy55QXhpcy5taW5WYWx1ZQorICAgICAgICAmJiB5IDw9IHBhcmFtZXRlcnMueUF4aXMubWF4VmFsdWU7Cit9CisKK2NvbnN0IElucHV0RGV2aWNlOjpWaXJ0dWFsS2V5KiBJbnB1dERldmljZTo6VG91Y2hTY3JlZW5TdGF0ZTo6ZmluZFZpcnR1YWxLZXlIaXQoKSBjb25zdCB7CisgICAgaW50MzJfdCB4ID0gY3VycmVudFRvdWNoLnBvaW50ZXJzWzBdLng7CisgICAgaW50MzJfdCB5ID0gY3VycmVudFRvdWNoLnBvaW50ZXJzWzBdLnk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2aXJ0dWFsS2V5cy5zaXplKCk7IGkrKykgeworICAgICAgICBjb25zdCBJbnB1dERldmljZTo6VmlydHVhbEtleSYgdmlydHVhbEtleSA9IHZpcnR1YWxLZXlzW2ldOworCisjaWYgREVCVUdfVklSVFVBTF9LRVlTCisgICAgICAgIExPR0QoIlZpcnR1YWxLZXlzOiBIaXQgdGVzdCAoJWQsICVkKToga2V5Q29kZT0lZCwgc2NhbkNvZGU9JWQsICIKKyAgICAgICAgICAgICAgICAibGVmdD0lZCwgdG9wPSVkLCByaWdodD0lZCwgYm90dG9tPSVkIiwKKyAgICAgICAgICAgICAgICB4LCB5LAorICAgICAgICAgICAgICAgIHZpcnR1YWxLZXkua2V5Q29kZSwgdmlydHVhbEtleS5zY2FuQ29kZSwKKyAgICAgICAgICAgICAgICB2aXJ0dWFsS2V5LmhpdExlZnQsIHZpcnR1YWxLZXkuaGl0VG9wLAorICAgICAgICAgICAgICAgIHZpcnR1YWxLZXkuaGl0UmlnaHQsIHZpcnR1YWxLZXkuaGl0Qm90dG9tKTsKKyNlbmRpZgorCisgICAgICAgIGlmICh2aXJ0dWFsS2V5LmlzSGl0KHgsIHkpKSB7CisgICAgICAgICAgICByZXR1cm4gJiB2aXJ0dWFsS2V5OworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIE5VTEw7Cit9CisKKworLy8gLS0tIElucHV0RGV2aWNlOjpTaW5nbGVUb3VjaFNjcmVlblN0YXRlIC0tLQorCit2b2lkIElucHV0RGV2aWNlOjpTaW5nbGVUb3VjaFNjcmVlblN0YXRlOjpyZXNldCgpIHsKKyAgICBhY2N1bXVsYXRvci5jbGVhcigpOworICAgIGN1cnJlbnQuZG93biA9IGZhbHNlOworICAgIGN1cnJlbnQueCA9IDA7CisgICAgY3VycmVudC55ID0gMDsKKyAgICBjdXJyZW50LnByZXNzdXJlID0gMDsKKyAgICBjdXJyZW50LnNpemUgPSAwOworfQorCisKKy8vIC0tLSBJbnB1dERldmljZTo6TXVsdGlUb3VjaFNjcmVlblN0YXRlIC0tLQorCit2b2lkIElucHV0RGV2aWNlOjpNdWx0aVRvdWNoU2NyZWVuU3RhdGU6OnJlc2V0KCkgeworICAgIGFjY3VtdWxhdG9yLmNsZWFyKCk7Cit9CisKKworLy8gLS0tIElucHV0UmVhZGVyIC0tLQorCitJbnB1dFJlYWRlcjo6SW5wdXRSZWFkZXIoY29uc3Qgc3A8RXZlbnRIdWJJbnRlcmZhY2U+JiBldmVudEh1YiwKKyAgICAgICAgY29uc3Qgc3A8SW5wdXRSZWFkZXJQb2xpY3lJbnRlcmZhY2U+JiBwb2xpY3ksCisgICAgICAgIGNvbnN0IHNwPElucHV0RGlzcGF0Y2hlckludGVyZmFjZT4mIGRpc3BhdGNoZXIpIDoKKyAgICAgICAgbUV2ZW50SHViKGV2ZW50SHViKSwgbVBvbGljeShwb2xpY3kpLCBtRGlzcGF0Y2hlcihkaXNwYXRjaGVyKSB7CisgICAgY29uZmlndXJlRXhjbHVkZWREZXZpY2VzKCk7CisgICAgcmVzZXRHbG9iYWxNZXRhU3RhdGUoKTsKKyAgICByZXNldERpc3BsYXlQcm9wZXJ0aWVzKCk7CisgICAgdXBkYXRlRXhwb3J0ZWRWaXJ0dWFsS2V5U3RhdGUoKTsKK30KKworSW5wdXRSZWFkZXI6On5JbnB1dFJlYWRlcigpIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1EZXZpY2VzLnNpemUoKTsgaSsrKSB7CisgICAgICAgIGRlbGV0ZSBtRGV2aWNlcy52YWx1ZUF0KGkpOworICAgIH0KK30KKwordm9pZCBJbnB1dFJlYWRlcjo6bG9vcE9uY2UoKSB7CisgICAgUmF3RXZlbnQgcmF3RXZlbnQ7CisgICAgbUV2ZW50SHViLT5nZXRFdmVudCgmIHJhd0V2ZW50LmRldmljZUlkLCAmIHJhd0V2ZW50LnR5cGUsICYgcmF3RXZlbnQuc2NhbkNvZGUsCisgICAgICAgICAgICAmIHJhd0V2ZW50LmtleUNvZGUsICYgcmF3RXZlbnQuZmxhZ3MsICYgcmF3RXZlbnQudmFsdWUsICYgcmF3RXZlbnQud2hlbik7CisKKyAgICAvLyBSZXBsYWNlIHRoZSBldmVudCB0aW1lc3RhbXAgc28gaXQgaXMgaW4gc2FtZSB0aW1lYmFzZSBhcyBqYXZhLmxhbmcuU3lzdGVtLm5hbm9UaW1lKCkKKyAgICAvLyBhbmQgYW5kcm9pZC5vcy5TeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKSBhcyBleHBlY3RlZCBieSB0aGUgcmVzdCBvZiB0aGUgc3lzdGVtLgorICAgIHJhd0V2ZW50LndoZW4gPSBzeXN0ZW1UaW1lKFNZU1RFTV9USU1FX01PTk9UT05JQyk7CisKKyNpZiBERUJVR19SQVdfRVZFTlRTCisgICAgTE9HRCgiSW5wdXQgZXZlbnQ6IGRldmljZT0weCV4IHR5cGU9MHgleCBzY2FuY29kZT0lZCBrZXljb2RlPSVkIHZhbHVlPSVkIiwKKyAgICAgICAgICAgIHJhd0V2ZW50LmRldmljZUlkLCByYXdFdmVudC50eXBlLCByYXdFdmVudC5zY2FuQ29kZSwgcmF3RXZlbnQua2V5Q29kZSwKKyAgICAgICAgICAgIHJhd0V2ZW50LnZhbHVlKTsKKyNlbmRpZgorCisgICAgcHJvY2VzcygmIHJhd0V2ZW50KTsKK30KKwordm9pZCBJbnB1dFJlYWRlcjo6cHJvY2Vzcyhjb25zdCBSYXdFdmVudCogcmF3RXZlbnQpIHsKKyAgICBzd2l0Y2ggKHJhd0V2ZW50LT50eXBlKSB7CisgICAgY2FzZSBFdmVudEh1YkludGVyZmFjZTo6REVWSUNFX0FEREVEOgorICAgICAgICBoYW5kbGVEZXZpY2VBZGRlZChyYXdFdmVudCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBFdmVudEh1YkludGVyZmFjZTo6REVWSUNFX1JFTU9WRUQ6CisgICAgICAgIGhhbmRsZURldmljZVJlbW92ZWQocmF3RXZlbnQpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgRVZfU1lOOgorICAgICAgICBoYW5kbGVTeW5jKHJhd0V2ZW50KTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEVWX0tFWToKKyAgICAgICAgaGFuZGxlS2V5KHJhd0V2ZW50KTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEVWX1JFTDoKKyAgICAgICAgaGFuZGxlUmVsYXRpdmVNb3Rpb24ocmF3RXZlbnQpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgRVZfQUJTOgorICAgICAgICBoYW5kbGVBYnNvbHV0ZU1vdGlvbihyYXdFdmVudCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBFVl9TVzoKKyAgICAgICAgaGFuZGxlU3dpdGNoKHJhd0V2ZW50KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCit2b2lkIElucHV0UmVhZGVyOjpoYW5kbGVEZXZpY2VBZGRlZChjb25zdCBSYXdFdmVudCogcmF3RXZlbnQpIHsKKyAgICBJbnB1dERldmljZSogZGV2aWNlID0gZ2V0RGV2aWNlKHJhd0V2ZW50LT5kZXZpY2VJZCk7CisgICAgaWYgKGRldmljZSkgeworICAgICAgICBMT0dXKCJJZ25vcmluZyBzcHVyaW91cyBkZXZpY2UgYWRkZWQgZXZlbnQgZm9yIGRldmljZUlkICVkLiIsIHJhd0V2ZW50LT5kZXZpY2VJZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhZGREZXZpY2UocmF3RXZlbnQtPndoZW4sIHJhd0V2ZW50LT5kZXZpY2VJZCk7Cit9CisKK3ZvaWQgSW5wdXRSZWFkZXI6OmhhbmRsZURldmljZVJlbW92ZWQoY29uc3QgUmF3RXZlbnQqIHJhd0V2ZW50KSB7CisgICAgSW5wdXREZXZpY2UqIGRldmljZSA9IGdldERldmljZShyYXdFdmVudC0+ZGV2aWNlSWQpOworICAgIGlmICghIGRldmljZSkgeworICAgICAgICBMT0dXKCJJZ25vcmluZyBzcHVyaW91cyBkZXZpY2UgcmVtb3ZlZCBldmVudCBmb3IgZGV2aWNlSWQgJWQuIiwgcmF3RXZlbnQtPmRldmljZUlkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHJlbW92ZURldmljZShyYXdFdmVudC0+d2hlbiwgZGV2aWNlKTsKK30KKwordm9pZCBJbnB1dFJlYWRlcjo6aGFuZGxlU3luYyhjb25zdCBSYXdFdmVudCogcmF3RXZlbnQpIHsKKyAgICBJbnB1dERldmljZSogZGV2aWNlID0gZ2V0Tm9uSWdub3JlZERldmljZShyYXdFdmVudC0+ZGV2aWNlSWQpOworICAgIGlmICghIGRldmljZSkgcmV0dXJuOworCisgICAgaWYgKHJhd0V2ZW50LT5zY2FuQ29kZSA9PSBTWU5fTVRfUkVQT1JUKSB7CisgICAgICAgIC8vIE11bHRpVG91Y2ggU3luYzogVGhlIGRyaXZlciBoYXMgcmV0dXJuZWQgYWxsIGRhdGEgZm9yICpvbmUqIG9mIHRoZSBwb2ludGVycy4KKyAgICAgICAgLy8gV2UgZHJvcCBwb2ludGVycyB3aXRoIHByZXNzdXJlIDw9IDAgc2luY2UgdGhhdCBpbmRpY2F0ZXMgdGhleSBhcmUgbm90IGRvd24uCisgICAgICAgIGlmIChkZXZpY2UtPmlzTXVsdGlUb3VjaFNjcmVlbigpKSB7CisgICAgICAgICAgICB1aW50MzJfdCBwb2ludGVySW5kZXggPSBkZXZpY2UtPm11bHRpVG91Y2hTY3JlZW4uYWNjdW11bGF0b3IucG9pbnRlckNvdW50OworCisgICAgICAgICAgICBpZiAoZGV2aWNlLT5tdWx0aVRvdWNoU2NyZWVuLmFjY3VtdWxhdG9yLnBvaW50ZXJzW3BvaW50ZXJJbmRleF0uZmllbGRzKSB7CisgICAgICAgICAgICAgICAgaWYgKHBvaW50ZXJJbmRleCA9PSBNQVhfUE9JTlRFUlMpIHsKKyAgICAgICAgICAgICAgICAgICAgTE9HVygiTXVsdGlUb3VjaCBkZXZpY2UgZHJpdmVyIHJldHVybmVkIG1vcmUgdGhhbiBtYXhpbXVtIG9mICVkIHBvaW50ZXJzLiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUFYX1BPSU5URVJTKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBwb2ludGVySW5kZXggKz0gMTsKKyAgICAgICAgICAgICAgICAgICAgZGV2aWNlLT5tdWx0aVRvdWNoU2NyZWVuLmFjY3VtdWxhdG9yLnBvaW50ZXJDb3VudCA9IHBvaW50ZXJJbmRleDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGRldmljZS0+bXVsdGlUb3VjaFNjcmVlbi5hY2N1bXVsYXRvci5wb2ludGVyc1twb2ludGVySW5kZXhdLmNsZWFyKCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKHJhd0V2ZW50LT5zY2FuQ29kZSA9PSBTWU5fUkVQT1JUKSB7CisgICAgICAgIC8vIEdlbmVyYWwgU3luYzogVGhlIGRyaXZlciBoYXMgcmV0dXJuZWQgYWxsIGRhdGEgZm9yIHRoZSBjdXJyZW50IGV2ZW50IHVwZGF0ZS4KKyAgICAgICAgaWYgKGRldmljZS0+aXNNdWx0aVRvdWNoU2NyZWVuKCkpIHsKKyAgICAgICAgICAgIGlmIChkZXZpY2UtPm11bHRpVG91Y2hTY3JlZW4uYWNjdW11bGF0b3IuaXNEaXJ0eSgpKSB7CisgICAgICAgICAgICAgICAgb25NdWx0aVRvdWNoU2NyZWVuU3RhdGVDaGFuZ2VkKHJhd0V2ZW50LT53aGVuLCBkZXZpY2UpOworICAgICAgICAgICAgICAgIGRldmljZS0+bXVsdGlUb3VjaFNjcmVlbi5hY2N1bXVsYXRvci5jbGVhcigpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGRldmljZS0+aXNTaW5nbGVUb3VjaFNjcmVlbigpKSB7CisgICAgICAgICAgICBpZiAoZGV2aWNlLT5zaW5nbGVUb3VjaFNjcmVlbi5hY2N1bXVsYXRvci5pc0RpcnR5KCkpIHsKKyAgICAgICAgICAgICAgICBvblNpbmdsZVRvdWNoU2NyZWVuU3RhdGVDaGFuZ2VkKHJhd0V2ZW50LT53aGVuLCBkZXZpY2UpOworICAgICAgICAgICAgICAgIGRldmljZS0+c2luZ2xlVG91Y2hTY3JlZW4uYWNjdW11bGF0b3IuY2xlYXIoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChkZXZpY2UtPnRyYWNrYmFsbC5hY2N1bXVsYXRvci5pc0RpcnR5KCkpIHsKKyAgICAgICAgICAgIG9uVHJhY2tiYWxsU3RhdGVDaGFuZ2VkKHJhd0V2ZW50LT53aGVuLCBkZXZpY2UpOworICAgICAgICAgICAgZGV2aWNlLT50cmFja2JhbGwuYWNjdW11bGF0b3IuY2xlYXIoKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBJbnB1dFJlYWRlcjo6aGFuZGxlS2V5KGNvbnN0IFJhd0V2ZW50KiByYXdFdmVudCkgeworICAgIElucHV0RGV2aWNlKiBkZXZpY2UgPSBnZXROb25JZ25vcmVkRGV2aWNlKHJhd0V2ZW50LT5kZXZpY2VJZCk7CisgICAgaWYgKCEgZGV2aWNlKSByZXR1cm47CisKKyAgICBib29sIGRvd24gPSByYXdFdmVudC0+dmFsdWUgIT0gMDsKKyAgICBpbnQzMl90IHNjYW5Db2RlID0gcmF3RXZlbnQtPnNjYW5Db2RlOworCisgICAgaWYgKGRldmljZS0+aXNLZXlib2FyZCgpICYmIChzY2FuQ29kZSA8IEJUTl9GSVJTVCB8fCBzY2FuQ29kZSA+IEJUTl9MQVNUKSkgeworICAgICAgICBpbnQzMl90IGtleUNvZGUgPSByYXdFdmVudC0+a2V5Q29kZTsKKyAgICAgICAgb25LZXkocmF3RXZlbnQtPndoZW4sIGRldmljZSwgZG93biwga2V5Q29kZSwgc2NhbkNvZGUsIHJhd0V2ZW50LT5mbGFncyk7CisgICAgfSBlbHNlIGlmIChkZXZpY2UtPmlzU2luZ2xlVG91Y2hTY3JlZW4oKSkgeworICAgICAgICBzd2l0Y2ggKHJhd0V2ZW50LT5zY2FuQ29kZSkgeworICAgICAgICBjYXNlIEJUTl9UT1VDSDoKKyAgICAgICAgICAgIGRldmljZS0+c2luZ2xlVG91Y2hTY3JlZW4uYWNjdW11bGF0b3IuZmllbGRzIHw9CisgICAgICAgICAgICAgICAgICAgIElucHV0RGV2aWNlOjpTaW5nbGVUb3VjaFNjcmVlblN0YXRlOjpBY2N1bXVsYXRvcjo6RklFTERfQlROX1RPVUNIOworICAgICAgICAgICAgZGV2aWNlLT5zaW5nbGVUb3VjaFNjcmVlbi5hY2N1bXVsYXRvci5idG5Ub3VjaCA9IGRvd247CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoZGV2aWNlLT5pc1RyYWNrYmFsbCgpKSB7CisgICAgICAgIHN3aXRjaCAocmF3RXZlbnQtPnNjYW5Db2RlKSB7CisgICAgICAgIGNhc2UgQlROX01PVVNFOgorICAgICAgICAgICAgZGV2aWNlLT50cmFja2JhbGwuYWNjdW11bGF0b3IuZmllbGRzIHw9CisgICAgICAgICAgICAgICAgICAgIElucHV0RGV2aWNlOjpUcmFja2JhbGxTdGF0ZTo6QWNjdW11bGF0b3I6OkZJRUxEX0JUTl9NT1VTRTsKKyAgICAgICAgICAgIGRldmljZS0+dHJhY2tiYWxsLmFjY3VtdWxhdG9yLmJ0bk1vdXNlID0gZG93bjsKKworICAgICAgICAgICAgLy8gc2VuZCB0aGUgZG93biBpbW1lZGlhdGVseQorICAgICAgICAgICAgLy8gWFhYIHRoaXMgZW11bGF0ZXMgdGhlIG9sZCBiZWhhdmlvciBvZiBLZXlJbnB1dFF1ZXVlLCB1bmNsZWFyIHdoZXRoZXIgaXQgaXMKKyAgICAgICAgICAgIC8vICAgICBuZWNlc3Nhcnkgb3IgaWYgd2UgY2FuIHdhaXQgdW50aWwgdGhlIG5leHQgc3luYworICAgICAgICAgICAgb25UcmFja2JhbGxTdGF0ZUNoYW5nZWQocmF3RXZlbnQtPndoZW4sIGRldmljZSk7CisgICAgICAgICAgICBkZXZpY2UtPnRyYWNrYmFsbC5hY2N1bXVsYXRvci5jbGVhcigpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgSW5wdXRSZWFkZXI6OmhhbmRsZVJlbGF0aXZlTW90aW9uKGNvbnN0IFJhd0V2ZW50KiByYXdFdmVudCkgeworICAgIElucHV0RGV2aWNlKiBkZXZpY2UgPSBnZXROb25JZ25vcmVkRGV2aWNlKHJhd0V2ZW50LT5kZXZpY2VJZCk7CisgICAgaWYgKCEgZGV2aWNlKSByZXR1cm47CisKKyAgICBpZiAoZGV2aWNlLT5pc1RyYWNrYmFsbCgpKSB7CisgICAgICAgIHN3aXRjaCAocmF3RXZlbnQtPnNjYW5Db2RlKSB7CisgICAgICAgIGNhc2UgUkVMX1g6CisgICAgICAgICAgICBkZXZpY2UtPnRyYWNrYmFsbC5hY2N1bXVsYXRvci5maWVsZHMgfD0KKyAgICAgICAgICAgICAgICAgICAgSW5wdXREZXZpY2U6OlRyYWNrYmFsbFN0YXRlOjpBY2N1bXVsYXRvcjo6RklFTERfUkVMX1g7CisgICAgICAgICAgICBkZXZpY2UtPnRyYWNrYmFsbC5hY2N1bXVsYXRvci5yZWxYID0gcmF3RXZlbnQtPnZhbHVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUkVMX1k6CisgICAgICAgICAgICBkZXZpY2UtPnRyYWNrYmFsbC5hY2N1bXVsYXRvci5maWVsZHMgfD0KKyAgICAgICAgICAgICAgICAgICAgSW5wdXREZXZpY2U6OlRyYWNrYmFsbFN0YXRlOjpBY2N1bXVsYXRvcjo6RklFTERfUkVMX1k7CisgICAgICAgICAgICBkZXZpY2UtPnRyYWNrYmFsbC5hY2N1bXVsYXRvci5yZWxZID0gcmF3RXZlbnQtPnZhbHVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgSW5wdXRSZWFkZXI6OmhhbmRsZUFic29sdXRlTW90aW9uKGNvbnN0IFJhd0V2ZW50KiByYXdFdmVudCkgeworICAgIElucHV0RGV2aWNlKiBkZXZpY2UgPSBnZXROb25JZ25vcmVkRGV2aWNlKHJhd0V2ZW50LT5kZXZpY2VJZCk7CisgICAgaWYgKCEgZGV2aWNlKSByZXR1cm47CisKKyAgICBpZiAoZGV2aWNlLT5pc011bHRpVG91Y2hTY3JlZW4oKSkgeworICAgICAgICB1aW50MzJfdCBwb2ludGVySW5kZXggPSBkZXZpY2UtPm11bHRpVG91Y2hTY3JlZW4uYWNjdW11bGF0b3IucG9pbnRlckNvdW50OworICAgICAgICBJbnB1dERldmljZTo6TXVsdGlUb3VjaFNjcmVlblN0YXRlOjpBY2N1bXVsYXRvcjo6UG9pbnRlciogcG9pbnRlciA9CisgICAgICAgICAgICAgICAgJiBkZXZpY2UtPm11bHRpVG91Y2hTY3JlZW4uYWNjdW11bGF0b3IucG9pbnRlcnNbcG9pbnRlckluZGV4XTsKKworICAgICAgICBzd2l0Y2ggKHJhd0V2ZW50LT5zY2FuQ29kZSkgeworICAgICAgICBjYXNlIEFCU19NVF9QT1NJVElPTl9YOgorICAgICAgICAgICAgcG9pbnRlci0+ZmllbGRzIHw9CisgICAgICAgICAgICAgICAgICAgIElucHV0RGV2aWNlOjpNdWx0aVRvdWNoU2NyZWVuU3RhdGU6OkFjY3VtdWxhdG9yOjpGSUVMRF9BQlNfTVRfUE9TSVRJT05fWDsKKyAgICAgICAgICAgIHBvaW50ZXItPmFic01UUG9zaXRpb25YID0gcmF3RXZlbnQtPnZhbHVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQUJTX01UX1BPU0lUSU9OX1k6CisgICAgICAgICAgICBwb2ludGVyLT5maWVsZHMgfD0KKyAgICAgICAgICAgICAgICAgICAgSW5wdXREZXZpY2U6Ok11bHRpVG91Y2hTY3JlZW5TdGF0ZTo6QWNjdW11bGF0b3I6OkZJRUxEX0FCU19NVF9QT1NJVElPTl9ZOworICAgICAgICAgICAgcG9pbnRlci0+YWJzTVRQb3NpdGlvblkgPSByYXdFdmVudC0+dmFsdWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBQlNfTVRfVE9VQ0hfTUFKT1I6CisgICAgICAgICAgICBwb2ludGVyLT5maWVsZHMgfD0KKyAgICAgICAgICAgICAgICAgICAgSW5wdXREZXZpY2U6Ok11bHRpVG91Y2hTY3JlZW5TdGF0ZTo6QWNjdW11bGF0b3I6OkZJRUxEX0FCU19NVF9UT1VDSF9NQUpPUjsKKyAgICAgICAgICAgIHBvaW50ZXItPmFic01UVG91Y2hNYWpvciA9IHJhd0V2ZW50LT52YWx1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFCU19NVF9XSURUSF9NQUpPUjoKKyAgICAgICAgICAgIHBvaW50ZXItPmZpZWxkcyB8PQorICAgICAgICAgICAgICAgICAgICBJbnB1dERldmljZTo6TXVsdGlUb3VjaFNjcmVlblN0YXRlOjpBY2N1bXVsYXRvcjo6RklFTERfQUJTX01UX1dJRFRIX01BSk9SOworICAgICAgICAgICAgcG9pbnRlci0+YWJzTVRXaWR0aE1ham9yID0gcmF3RXZlbnQtPnZhbHVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQUJTX01UX1RSQUNLSU5HX0lEOgorICAgICAgICAgICAgcG9pbnRlci0+ZmllbGRzIHw9CisgICAgICAgICAgICAgICAgICAgIElucHV0RGV2aWNlOjpNdWx0aVRvdWNoU2NyZWVuU3RhdGU6OkFjY3VtdWxhdG9yOjpGSUVMRF9BQlNfTVRfVFJBQ0tJTkdfSUQ7CisgICAgICAgICAgICBwb2ludGVyLT5hYnNNVFRyYWNraW5nSWQgPSByYXdFdmVudC0+dmFsdWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoZGV2aWNlLT5pc1NpbmdsZVRvdWNoU2NyZWVuKCkpIHsKKyAgICAgICAgc3dpdGNoIChyYXdFdmVudC0+c2NhbkNvZGUpIHsKKyAgICAgICAgY2FzZSBBQlNfWDoKKyAgICAgICAgICAgIGRldmljZS0+c2luZ2xlVG91Y2hTY3JlZW4uYWNjdW11bGF0b3IuZmllbGRzIHw9CisgICAgICAgICAgICAgICAgICAgIElucHV0RGV2aWNlOjpTaW5nbGVUb3VjaFNjcmVlblN0YXRlOjpBY2N1bXVsYXRvcjo6RklFTERfQUJTX1g7CisgICAgICAgICAgICBkZXZpY2UtPnNpbmdsZVRvdWNoU2NyZWVuLmFjY3VtdWxhdG9yLmFic1ggPSByYXdFdmVudC0+dmFsdWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBQlNfWToKKyAgICAgICAgICAgIGRldmljZS0+c2luZ2xlVG91Y2hTY3JlZW4uYWNjdW11bGF0b3IuZmllbGRzIHw9CisgICAgICAgICAgICAgICAgICAgIElucHV0RGV2aWNlOjpTaW5nbGVUb3VjaFNjcmVlblN0YXRlOjpBY2N1bXVsYXRvcjo6RklFTERfQUJTX1k7CisgICAgICAgICAgICBkZXZpY2UtPnNpbmdsZVRvdWNoU2NyZWVuLmFjY3VtdWxhdG9yLmFic1kgPSByYXdFdmVudC0+dmFsdWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBQlNfUFJFU1NVUkU6CisgICAgICAgICAgICBkZXZpY2UtPnNpbmdsZVRvdWNoU2NyZWVuLmFjY3VtdWxhdG9yLmZpZWxkcyB8PQorICAgICAgICAgICAgICAgICAgICBJbnB1dERldmljZTo6U2luZ2xlVG91Y2hTY3JlZW5TdGF0ZTo6QWNjdW11bGF0b3I6OkZJRUxEX0FCU19QUkVTU1VSRTsKKyAgICAgICAgICAgIGRldmljZS0+c2luZ2xlVG91Y2hTY3JlZW4uYWNjdW11bGF0b3IuYWJzUHJlc3N1cmUgPSByYXdFdmVudC0+dmFsdWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBQlNfVE9PTF9XSURUSDoKKyAgICAgICAgICAgIGRldmljZS0+c2luZ2xlVG91Y2hTY3JlZW4uYWNjdW11bGF0b3IuZmllbGRzIHw9CisgICAgICAgICAgICAgICAgICAgIElucHV0RGV2aWNlOjpTaW5nbGVUb3VjaFNjcmVlblN0YXRlOjpBY2N1bXVsYXRvcjo6RklFTERfQUJTX1RPT0xfV0lEVEg7CisgICAgICAgICAgICBkZXZpY2UtPnNpbmdsZVRvdWNoU2NyZWVuLmFjY3VtdWxhdG9yLmFic1Rvb2xXaWR0aCA9IHJhd0V2ZW50LT52YWx1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIElucHV0UmVhZGVyOjpoYW5kbGVTd2l0Y2goY29uc3QgUmF3RXZlbnQqIHJhd0V2ZW50KSB7CisgICAgSW5wdXREZXZpY2UqIGRldmljZSA9IGdldE5vbklnbm9yZWREZXZpY2UocmF3RXZlbnQtPmRldmljZUlkKTsKKyAgICBpZiAoISBkZXZpY2UpIHJldHVybjsKKworICAgIG9uU3dpdGNoKHJhd0V2ZW50LT53aGVuLCBkZXZpY2UsIHJhd0V2ZW50LT5zY2FuQ29kZSwgcmF3RXZlbnQtPnZhbHVlKTsKK30KKwordm9pZCBJbnB1dFJlYWRlcjo6b25LZXkobnNlY3NfdCB3aGVuLCBJbnB1dERldmljZSogZGV2aWNlLAorICAgICAgICBib29sIGRvd24sIGludDMyX3Qga2V5Q29kZSwgaW50MzJfdCBzY2FuQ29kZSwgdWludDMyX3QgcG9saWN5RmxhZ3MpIHsKKyAgICAvKiBSZWZyZXNoIGRpc3BsYXkgcHJvcGVydGllcyBzbyB3ZSBjYW4gcm90YXRlIGtleSBjb2RlcyBhY2NvcmRpbmcgdG8gZGlzcGxheSBvcmllbnRhdGlvbiAqLworCisgICAgaWYgKCEgcmVmcmVzaERpc3BsYXlQcm9wZXJ0aWVzKCkpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8qIFVwZGF0ZSBkZXZpY2Ugc3RhdGUgKi8KKworICAgIGludDMyX3Qgb2xkTWV0YVN0YXRlID0gZGV2aWNlLT5rZXlib2FyZC5jdXJyZW50Lm1ldGFTdGF0ZTsKKyAgICBpbnQzMl90IG5ld01ldGFTdGF0ZSA9IHVwZGF0ZU1ldGFTdGF0ZShrZXlDb2RlLCBkb3duLCBvbGRNZXRhU3RhdGUpOworICAgIGlmIChvbGRNZXRhU3RhdGUgIT0gbmV3TWV0YVN0YXRlKSB7CisgICAgICAgIGRldmljZS0+a2V5Ym9hcmQuY3VycmVudC5tZXRhU3RhdGUgPSBuZXdNZXRhU3RhdGU7CisgICAgICAgIHJlc2V0R2xvYmFsTWV0YVN0YXRlKCk7CisgICAgfQorCisgICAgLy8gRklYTUUgaWYgd2Ugc2VuZCBhIGRvd24gZXZlbnQgYWJvdXQgYSByb3RhdGVkIGtleSBwcmVzcyB3ZSBzaG91bGQgZW5zdXJlIHRoYXQgd2Ugc2VuZAorICAgIC8vICAgICAgIGEgY29ycmVzcG9uZGluZyB1cCBldmVudCBhYm91dCB0aGUgcm90YXRlZCBrZXkgcHJlc3MgZXZlbiBpZiB0aGUgb3JpZW50YXRpb24KKyAgICAvLyAgICAgICBoYXMgY2hhbmdlZCBpbiB0aGUgbWVhbnRpbWUKKyAgICBrZXlDb2RlID0gcm90YXRlS2V5Q29kZShrZXlDb2RlLCBtRGlzcGxheU9yaWVudGF0aW9uKTsKKworICAgIGlmIChkb3duKSB7CisgICAgICAgIGRldmljZS0+a2V5Ym9hcmQuY3VycmVudC5kb3duVGltZSA9IHdoZW47CisgICAgfQorCisgICAgLyogQXBwbHkgcG9saWN5ICovCisKKyAgICBpbnQzMl90IHBvbGljeUFjdGlvbnMgPSBtUG9saWN5LT5pbnRlcmNlcHRLZXkod2hlbiwgZGV2aWNlLT5pZCwKKyAgICAgICAgICAgIGRvd24sIGtleUNvZGUsIHNjYW5Db2RlLCBwb2xpY3lGbGFncyk7CisKKyAgICBpZiAoISBhcHBseVN0YW5kYXJkSW5wdXREaXNwYXRjaFBvbGljeUFjdGlvbnMod2hlbiwgcG9saWN5QWN0aW9ucywgJiBwb2xpY3lGbGFncykpIHsKKyAgICAgICAgcmV0dXJuOyAvLyBldmVudCBkcm9wcGVkCisgICAgfQorCisgICAgLyogRW5xdWV1ZSBrZXkgZXZlbnQgZm9yIGRpc3BhdGNoICovCisKKyAgICBpbnQzMl90IGtleUV2ZW50QWN0aW9uOworICAgIGlmIChkb3duKSB7CisgICAgICAgIGRldmljZS0+a2V5Ym9hcmQuY3VycmVudC5kb3duVGltZSA9IHdoZW47CisgICAgICAgIGtleUV2ZW50QWN0aW9uID0gS0VZX0VWRU5UX0FDVElPTl9ET1dOOworICAgIH0gZWxzZSB7CisgICAgICAgIGtleUV2ZW50QWN0aW9uID0gS0VZX0VWRU5UX0FDVElPTl9VUDsKKyAgICB9CisKKyAgICBpbnQzMl90IGtleUV2ZW50RmxhZ3MgPSBLRVlfRVZFTlRfRkxBR19GUk9NX1NZU1RFTTsKKyAgICBpZiAocG9saWN5QWN0aW9ucyAmIElucHV0UmVhZGVyUG9saWN5SW50ZXJmYWNlOjpBQ1RJT05fV09LRV9IRVJFKSB7CisgICAgICAgIGtleUV2ZW50RmxhZ3MgPSBrZXlFdmVudEZsYWdzIHwgS0VZX0VWRU5UX0ZMQUdfV09LRV9IRVJFOworICAgIH0KKworICAgIG1EaXNwYXRjaGVyLT5ub3RpZnlLZXkod2hlbiwgZGV2aWNlLT5pZCwgSU5QVVRfRVZFTlRfTkFUVVJFX0tFWSwgcG9saWN5RmxhZ3MsCisgICAgICAgICAgICBrZXlFdmVudEFjdGlvbiwga2V5RXZlbnRGbGFncywga2V5Q29kZSwgc2NhbkNvZGUsCisgICAgICAgICAgICBkZXZpY2UtPmtleWJvYXJkLmN1cnJlbnQubWV0YVN0YXRlLAorICAgICAgICAgICAgZGV2aWNlLT5rZXlib2FyZC5jdXJyZW50LmRvd25UaW1lKTsKK30KKwordm9pZCBJbnB1dFJlYWRlcjo6b25Td2l0Y2gobnNlY3NfdCB3aGVuLCBJbnB1dERldmljZSogZGV2aWNlLCBpbnQzMl90IHN3aXRjaENvZGUsCisgICAgICAgIGludDMyX3Qgc3dpdGNoVmFsdWUpIHsKKyAgICBpbnQzMl90IHBvbGljeUFjdGlvbnMgPSBtUG9saWN5LT5pbnRlcmNlcHRTd2l0Y2god2hlbiwgc3dpdGNoQ29kZSwgc3dpdGNoVmFsdWUpOworCisgICAgdWludDMyX3QgcG9saWN5RmxhZ3MgPSAwOworICAgIGFwcGx5U3RhbmRhcmRJbnB1dERpc3BhdGNoUG9saWN5QWN0aW9ucyh3aGVuLCBwb2xpY3lBY3Rpb25zLCAmIHBvbGljeUZsYWdzKTsKK30KKwordm9pZCBJbnB1dFJlYWRlcjo6b25NdWx0aVRvdWNoU2NyZWVuU3RhdGVDaGFuZ2VkKG5zZWNzX3Qgd2hlbiwKKyAgICAgICAgSW5wdXREZXZpY2UqIGRldmljZSkgeworICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBSRVFVSVJFRF9GSUVMRFMgPQorICAgICAgICAgICAgSW5wdXREZXZpY2U6Ok11bHRpVG91Y2hTY3JlZW5TdGF0ZTo6QWNjdW11bGF0b3I6OkZJRUxEX0FCU19NVF9QT1NJVElPTl9YCisgICAgICAgICAgICB8IElucHV0RGV2aWNlOjpNdWx0aVRvdWNoU2NyZWVuU3RhdGU6OkFjY3VtdWxhdG9yOjpGSUVMRF9BQlNfTVRfUE9TSVRJT05fWQorICAgICAgICAgICAgfCBJbnB1dERldmljZTo6TXVsdGlUb3VjaFNjcmVlblN0YXRlOjpBY2N1bXVsYXRvcjo6RklFTERfQUJTX01UX1RPVUNIX01BSk9SCisgICAgICAgICAgICB8IElucHV0RGV2aWNlOjpNdWx0aVRvdWNoU2NyZWVuU3RhdGU6OkFjY3VtdWxhdG9yOjpGSUVMRF9BQlNfTVRfV0lEVEhfTUFKT1I7CisKKyAgICAvKiBSZWZyZXNoIGRpc3BsYXkgcHJvcGVydGllcyBzbyB3ZSBjYW4gbWFwIHRvdWNoIHNjcmVlbiBjb29yZHMgaW50byBkaXNwbGF5IGNvb3JkcyAqLworCisgICAgaWYgKCEgcmVmcmVzaERpc3BsYXlQcm9wZXJ0aWVzKCkpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8qIFVwZGF0ZSBkZXZpY2Ugc3RhdGUgKi8KKworICAgIElucHV0RGV2aWNlOjpNdWx0aVRvdWNoU2NyZWVuU3RhdGUqIGluID0gJiBkZXZpY2UtPm11bHRpVG91Y2hTY3JlZW47CisgICAgSW5wdXREZXZpY2U6OlRvdWNoRGF0YSogb3V0ID0gJiBkZXZpY2UtPnRvdWNoU2NyZWVuLmN1cnJlbnRUb3VjaDsKKworICAgIHVpbnQzMl90IGluQ291bnQgPSBpbi0+YWNjdW11bGF0b3IucG9pbnRlckNvdW50OworICAgIHVpbnQzMl90IG91dENvdW50ID0gMDsKKyAgICBib29sIGhhdmVQb2ludGVySWRzID0gdHJ1ZTsKKworICAgIG91dC0+Y2xlYXIoKTsKKworICAgIGZvciAodWludDMyX3QgaW5JbmRleCA9IDA7IGluSW5kZXggPCBpbkNvdW50OyBpbkluZGV4KyspIHsKKyAgICAgICAgdWludDMyX3QgZmllbGRzID0gaW4tPmFjY3VtdWxhdG9yLnBvaW50ZXJzW2luSW5kZXhdLmZpZWxkczsKKworICAgICAgICBpZiAoKGZpZWxkcyAmIFJFUVVJUkVEX0ZJRUxEUykgIT0gUkVRVUlSRURfRklFTERTKSB7CisjaWYgREVCVUdfUE9JTlRFUlMKKyAgICAgICAgICAgIExPR0QoIlBvaW50ZXJzOiBNaXNzaW5nIHJlcXVpcmVkIG11bHRpdG91Y2ggcG9pbnRlciBmaWVsZHM6IGluZGV4PSVkLCBmaWVsZHM9JWQiLAorICAgICAgICAgICAgICAgICAgICBpbkluZGV4LCBmaWVsZHMpOworICAgICAgICAgICAgY29udGludWU7CisjZW5kaWYKKyAgICAgICAgfQorCisgICAgICAgIGlmIChpbi0+YWNjdW11bGF0b3IucG9pbnRlcnNbaW5JbmRleF0uYWJzTVRUb3VjaE1ham9yIDw9IDApIHsKKyAgICAgICAgICAgIC8vIFBvaW50ZXIgaXMgbm90IGRvd24uICBEcm9wIGl0LgorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICAvLyBGSVhNRSBhc3NpZ25tZW50IG9mIHByZXNzdXJlIG1heSBiZSBpbmNvcnJlY3QsIHByb2JhYmx5IGJldHRlciB0byBsZXQKKyAgICAgICAgLy8gcHJlc3N1cmUgPSB0b3VjaCAvIHdpZHRoLiAgTGF0ZXIgb24gd2UgcGFzcyB3aWR0aCB0byBNb3Rpb25FdmVudCBhcyBhIHNpemUsIHdoaWNoCisgICAgICAgIC8vIGlzbid0IHF1aXRlIHJpZ2h0IGVpdGhlci4gIFNob3VsZCBiZSB1c2luZyB0b3VjaCBmb3IgdGhhdC4KKyAgICAgICAgb3V0LT5wb2ludGVyc1tvdXRDb3VudF0ueCA9IGluLT5hY2N1bXVsYXRvci5wb2ludGVyc1tpbkluZGV4XS5hYnNNVFBvc2l0aW9uWDsKKyAgICAgICAgb3V0LT5wb2ludGVyc1tvdXRDb3VudF0ueSA9IGluLT5hY2N1bXVsYXRvci5wb2ludGVyc1tpbkluZGV4XS5hYnNNVFBvc2l0aW9uWTsKKyAgICAgICAgb3V0LT5wb2ludGVyc1tvdXRDb3VudF0ucHJlc3N1cmUgPSBpbi0+YWNjdW11bGF0b3IucG9pbnRlcnNbaW5JbmRleF0uYWJzTVRUb3VjaE1ham9yOworICAgICAgICBvdXQtPnBvaW50ZXJzW291dENvdW50XS5zaXplID0gaW4tPmFjY3VtdWxhdG9yLnBvaW50ZXJzW2luSW5kZXhdLmFic01UV2lkdGhNYWpvcjsKKworICAgICAgICBpZiAoaGF2ZVBvaW50ZXJJZHMpIHsKKyAgICAgICAgICAgIGlmIChmaWVsZHMgJiBJbnB1dERldmljZTo6TXVsdGlUb3VjaFNjcmVlblN0YXRlOjpBY2N1bXVsYXRvcjo6CisgICAgICAgICAgICAgICAgICAgIEZJRUxEX0FCU19NVF9UUkFDS0lOR19JRCkgeworICAgICAgICAgICAgICAgIHVpbnQzMl90IGlkID0gdWludDMyX3QoaW4tPmFjY3VtdWxhdG9yLnBvaW50ZXJzW2luSW5kZXhdLmFic01UVHJhY2tpbmdJZCk7CisKKyAgICAgICAgICAgICAgICBpZiAoaWQgPiBNQVhfUE9JTlRFUl9JRCkgeworI2lmIERFQlVHX1BPSU5URVJTCisgICAgICAgICAgICAgICAgICAgIExPR0QoIlBvaW50ZXJzOiBJZ25vcmluZyBkcml2ZXIgcHJvdmlkZWQgcG9pbnRlciBpZCAlZCBiZWNhdXNlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaXQgaXMgbGFyZ2VyIHRoYW4gbWF4IHN1cHBvcnRlZCBpZCAlZCBmb3Igb3B0aW1pemF0aW9ucyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWQsIE1BWF9QT0lOVEVSX0lEKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICBoYXZlUG9pbnRlcklkcyA9IGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgb3V0LT5wb2ludGVyc1tvdXRDb3VudF0uaWQgPSBpZDsKKyAgICAgICAgICAgICAgICAgICAgb3V0LT5pZFRvSW5kZXhbaWRdID0gb3V0Q291bnQ7CisgICAgICAgICAgICAgICAgICAgIG91dC0+aWRCaXRzLm1hcmtCaXQoaWQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaGF2ZVBvaW50ZXJJZHMgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIG91dENvdW50ICs9IDE7CisgICAgfQorCisgICAgb3V0LT5wb2ludGVyQ291bnQgPSBvdXRDb3VudDsKKworICAgIG9uVG91Y2hTY3JlZW5DaGFuZ2VkKHdoZW4sIGRldmljZSwgaGF2ZVBvaW50ZXJJZHMpOworfQorCit2b2lkIElucHV0UmVhZGVyOjpvblNpbmdsZVRvdWNoU2NyZWVuU3RhdGVDaGFuZ2VkKG5zZWNzX3Qgd2hlbiwKKyAgICAgICAgSW5wdXREZXZpY2UqIGRldmljZSkgeworICAgIC8qIFJlZnJlc2ggZGlzcGxheSBwcm9wZXJ0aWVzIHNvIHdlIGNhbiBtYXAgdG91Y2ggc2NyZWVuIGNvb3JkcyBpbnRvIGRpc3BsYXkgY29vcmRzICovCisKKyAgICBpZiAoISByZWZyZXNoRGlzcGxheVByb3BlcnRpZXMoKSkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLyogVXBkYXRlIGRldmljZSBzdGF0ZSAqLworCisgICAgSW5wdXREZXZpY2U6OlNpbmdsZVRvdWNoU2NyZWVuU3RhdGUqIGluID0gJiBkZXZpY2UtPnNpbmdsZVRvdWNoU2NyZWVuOworICAgIElucHV0RGV2aWNlOjpUb3VjaERhdGEqIG91dCA9ICYgZGV2aWNlLT50b3VjaFNjcmVlbi5jdXJyZW50VG91Y2g7CisKKyAgICB1aW50MzJfdCBmaWVsZHMgPSBpbi0+YWNjdW11bGF0b3IuZmllbGRzOworCisgICAgaWYgKGZpZWxkcyAmIElucHV0RGV2aWNlOjpTaW5nbGVUb3VjaFNjcmVlblN0YXRlOjpBY2N1bXVsYXRvcjo6RklFTERfQlROX1RPVUNIKSB7CisgICAgICAgIGluLT5jdXJyZW50LmRvd24gPSBpbi0+YWNjdW11bGF0b3IuYnRuVG91Y2g7CisgICAgfQorCisgICAgaWYgKGZpZWxkcyAmIElucHV0RGV2aWNlOjpTaW5nbGVUb3VjaFNjcmVlblN0YXRlOjpBY2N1bXVsYXRvcjo6RklFTERfQUJTX1gpIHsKKyAgICAgICAgaW4tPmN1cnJlbnQueCA9IGluLT5hY2N1bXVsYXRvci5hYnNYOworICAgIH0KKworICAgIGlmIChmaWVsZHMgJiBJbnB1dERldmljZTo6U2luZ2xlVG91Y2hTY3JlZW5TdGF0ZTo6QWNjdW11bGF0b3I6OkZJRUxEX0FCU19ZKSB7CisgICAgICAgIGluLT5jdXJyZW50LnkgPSBpbi0+YWNjdW11bGF0b3IuYWJzWTsKKyAgICB9CisKKyAgICBpZiAoZmllbGRzICYgSW5wdXREZXZpY2U6OlNpbmdsZVRvdWNoU2NyZWVuU3RhdGU6OkFjY3VtdWxhdG9yOjpGSUVMRF9BQlNfUFJFU1NVUkUpIHsKKyAgICAgICAgaW4tPmN1cnJlbnQucHJlc3N1cmUgPSBpbi0+YWNjdW11bGF0b3IuYWJzUHJlc3N1cmU7CisgICAgfQorCisgICAgaWYgKGZpZWxkcyAmIElucHV0RGV2aWNlOjpTaW5nbGVUb3VjaFNjcmVlblN0YXRlOjpBY2N1bXVsYXRvcjo6RklFTERfQUJTX1RPT0xfV0lEVEgpIHsKKyAgICAgICAgaW4tPmN1cnJlbnQuc2l6ZSA9IGluLT5hY2N1bXVsYXRvci5hYnNUb29sV2lkdGg7CisgICAgfQorCisgICAgb3V0LT5jbGVhcigpOworCisgICAgaWYgKGluLT5jdXJyZW50LmRvd24pIHsKKyAgICAgICAgb3V0LT5wb2ludGVyQ291bnQgPSAxOworICAgICAgICBvdXQtPnBvaW50ZXJzWzBdLmlkID0gMDsKKyAgICAgICAgb3V0LT5wb2ludGVyc1swXS54ID0gaW4tPmN1cnJlbnQueDsKKyAgICAgICAgb3V0LT5wb2ludGVyc1swXS55ID0gaW4tPmN1cnJlbnQueTsKKyAgICAgICAgb3V0LT5wb2ludGVyc1swXS5wcmVzc3VyZSA9IGluLT5jdXJyZW50LnByZXNzdXJlOworICAgICAgICBvdXQtPnBvaW50ZXJzWzBdLnNpemUgPSBpbi0+Y3VycmVudC5zaXplOworICAgICAgICBvdXQtPmlkVG9JbmRleFswXSA9IDA7CisgICAgICAgIG91dC0+aWRCaXRzLm1hcmtCaXQoMCk7CisgICAgfQorCisgICAgb25Ub3VjaFNjcmVlbkNoYW5nZWQod2hlbiwgZGV2aWNlLCB0cnVlKTsKK30KKwordm9pZCBJbnB1dFJlYWRlcjo6b25Ub3VjaFNjcmVlbkNoYW5nZWQobnNlY3NfdCB3aGVuLAorICAgICAgICBJbnB1dERldmljZSogZGV2aWNlLCBib29sIGhhdmVQb2ludGVySWRzKSB7CisgICAgLyogQXBwbHkgcG9saWN5ICovCisKKyAgICBpbnQzMl90IHBvbGljeUFjdGlvbnMgPSBtUG9saWN5LT5pbnRlcmNlcHRUb3VjaCh3aGVuKTsKKworICAgIHVpbnQzMl90IHBvbGljeUZsYWdzID0gMDsKKyAgICBpZiAoISBhcHBseVN0YW5kYXJkSW5wdXREaXNwYXRjaFBvbGljeUFjdGlvbnMod2hlbiwgcG9saWN5QWN0aW9ucywgJiBwb2xpY3lGbGFncykpIHsKKyAgICAgICAgZGV2aWNlLT50b3VjaFNjcmVlbi5sYXN0VG91Y2guY2xlYXIoKTsKKyAgICAgICAgcmV0dXJuOyAvLyBldmVudCBkcm9wcGVkCisgICAgfQorCisgICAgLyogUHJlcHJvY2VzcyBwb2ludGVyIGRhdGEgKi8KKworICAgIGlmIChkZXZpY2UtPnRvdWNoU2NyZWVuLnBhcmFtZXRlcnMudXNlQmFkVG91Y2hGaWx0ZXIpIHsKKyAgICAgICAgaWYgKGRldmljZS0+dG91Y2hTY3JlZW4uYXBwbHlCYWRUb3VjaEZpbHRlcigpKSB7CisgICAgICAgICAgICBoYXZlUG9pbnRlcklkcyA9IGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGRldmljZS0+dG91Y2hTY3JlZW4ucGFyYW1ldGVycy51c2VKdW1weVRvdWNoRmlsdGVyKSB7CisgICAgICAgIGlmIChkZXZpY2UtPnRvdWNoU2NyZWVuLmFwcGx5SnVtcHlUb3VjaEZpbHRlcigpKSB7CisgICAgICAgICAgICBoYXZlUG9pbnRlcklkcyA9IGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCEgaGF2ZVBvaW50ZXJJZHMpIHsKKyAgICAgICAgZGV2aWNlLT50b3VjaFNjcmVlbi5jYWxjdWxhdGVQb2ludGVySWRzKCk7CisgICAgfQorCisgICAgSW5wdXREZXZpY2U6OlRvdWNoRGF0YSB0ZW1wOworICAgIElucHV0RGV2aWNlOjpUb3VjaERhdGEqIHNhdmVkVG91Y2g7CisgICAgaWYgKGRldmljZS0+dG91Y2hTY3JlZW4ucGFyYW1ldGVycy51c2VBdmVyYWdpbmdUb3VjaEZpbHRlcikgeworICAgICAgICB0ZW1wLmNvcHlGcm9tKGRldmljZS0+dG91Y2hTY3JlZW4uY3VycmVudFRvdWNoKTsKKyAgICAgICAgc2F2ZWRUb3VjaCA9ICYgdGVtcDsKKworICAgICAgICBkZXZpY2UtPnRvdWNoU2NyZWVuLmFwcGx5QXZlcmFnaW5nVG91Y2hGaWx0ZXIoKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzYXZlZFRvdWNoID0gJiBkZXZpY2UtPnRvdWNoU2NyZWVuLmN1cnJlbnRUb3VjaDsKKyAgICB9CisKKyAgICAvKiBQcm9jZXNzIHZpcnR1YWwga2V5cyBvciB0b3VjaGVzICovCisKKyAgICBpZiAoISBjb25zdW1lVmlydHVhbEtleVRvdWNoZXMod2hlbiwgZGV2aWNlLCBwb2xpY3lGbGFncykpIHsKKyAgICAgICAgZGlzcGF0Y2hUb3VjaGVzKHdoZW4sIGRldmljZSwgcG9saWN5RmxhZ3MpOworICAgIH0KKworICAgIC8vIENvcHkgY3VycmVudCB0b3VjaCB0byBsYXN0IHRvdWNoIGluIHByZXBhcmF0aW9uIGZvciB0aGUgbmV4dCBjeWNsZS4KKyAgICBkZXZpY2UtPnRvdWNoU2NyZWVuLmxhc3RUb3VjaC5jb3B5RnJvbSgqc2F2ZWRUb3VjaCk7Cit9CisKK2Jvb2wgSW5wdXRSZWFkZXI6OmNvbnN1bWVWaXJ0dWFsS2V5VG91Y2hlcyhuc2Vjc190IHdoZW4sCisgICAgICAgIElucHV0RGV2aWNlKiBkZXZpY2UsIHVpbnQzMl90IHBvbGljeUZsYWdzKSB7CisgICAgc3dpdGNoIChkZXZpY2UtPnRvdWNoU2NyZWVuLmN1cnJlbnRWaXJ0dWFsS2V5LnN0YXR1cykgeworICAgIGNhc2UgSW5wdXREZXZpY2U6OlRvdWNoU2NyZWVuU3RhdGU6OkN1cnJlbnRWaXJ0dWFsS2V5U3RhdGU6OlNUQVRVU19DQU5DRUxFRDoKKyAgICAgICAgaWYgKGRldmljZS0+dG91Y2hTY3JlZW4uY3VycmVudFRvdWNoLnBvaW50ZXJDb3VudCA9PSAwKSB7CisgICAgICAgICAgICAvLyBQb2ludGVyIHdlbnQgdXAgYWZ0ZXIgdmlydHVhbCBrZXkgY2FuY2VsZWQuCisgICAgICAgICAgICBkZXZpY2UtPnRvdWNoU2NyZWVuLmN1cnJlbnRWaXJ0dWFsS2V5LnN0YXR1cyA9CisgICAgICAgICAgICAgICAgICAgIElucHV0RGV2aWNlOjpUb3VjaFNjcmVlblN0YXRlOjpDdXJyZW50VmlydHVhbEtleVN0YXRlOjpTVEFUVVNfVVA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7IC8vIGNvbnN1bWVkCisKKyAgICBjYXNlIElucHV0RGV2aWNlOjpUb3VjaFNjcmVlblN0YXRlOjpDdXJyZW50VmlydHVhbEtleVN0YXRlOjpTVEFUVVNfRE9XTjoKKyAgICAgICAgaWYgKGRldmljZS0+dG91Y2hTY3JlZW4uY3VycmVudFRvdWNoLnBvaW50ZXJDb3VudCA9PSAwKSB7CisgICAgICAgICAgICAvLyBQb2ludGVyIHdlbnQgdXAgd2hpbGUgdmlydHVhbCBrZXkgd2FzIGRvd24uCisgICAgICAgICAgICBkZXZpY2UtPnRvdWNoU2NyZWVuLmN1cnJlbnRWaXJ0dWFsS2V5LnN0YXR1cyA9CisgICAgICAgICAgICAgICAgICAgIElucHV0RGV2aWNlOjpUb3VjaFNjcmVlblN0YXRlOjpDdXJyZW50VmlydHVhbEtleVN0YXRlOjpTVEFUVVNfVVA7CisjaWYgREVCVUdfVklSVFVBTF9LRVlTCisgICAgICAgICAgICBMT0dEKCJWaXJ0dWFsS2V5czogR2VuZXJhdGluZyBrZXkgdXA6IGtleUNvZGU9JWQsIHNjYW5Db2RlPSVkIiwKKyAgICAgICAgICAgICAgICAgICAgZGV2aWNlLT50b3VjaFNjcmVlbi5jdXJyZW50VmlydHVhbEtleS5rZXlDb2RlLAorICAgICAgICAgICAgICAgICAgICBkZXZpY2UtPnRvdWNoU2NyZWVuLmN1cnJlbnRWaXJ0dWFsS2V5LnNjYW5Db2RlKTsKKyNlbmRpZgorICAgICAgICAgICAgZGlzcGF0Y2hWaXJ0dWFsS2V5KHdoZW4sIGRldmljZSwgcG9saWN5RmxhZ3MsIEtFWV9FVkVOVF9BQ1RJT05fVVAsCisgICAgICAgICAgICAgICAgICAgIEtFWV9FVkVOVF9GTEFHX0ZST01fU1lTVEVNIHwgS0VZX0VWRU5UX0ZMQUdfVklSVFVBTF9IQVJEX0tFWSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gY29uc3VtZWQKKyAgICAgICAgfQorCisgICAgICAgIGlmIChkZXZpY2UtPnRvdWNoU2NyZWVuLmN1cnJlbnRUb3VjaC5wb2ludGVyQ291bnQgPT0gMSkgeworICAgICAgICAgICAgY29uc3QgSW5wdXREZXZpY2U6OlZpcnR1YWxLZXkqIHZpcnR1YWxLZXkgPSBkZXZpY2UtPnRvdWNoU2NyZWVuLmZpbmRWaXJ0dWFsS2V5SGl0KCk7CisgICAgICAgICAgICBpZiAodmlydHVhbEtleQorICAgICAgICAgICAgICAgICAgICAmJiB2aXJ0dWFsS2V5LT5rZXlDb2RlID09IGRldmljZS0+dG91Y2hTY3JlZW4uY3VycmVudFZpcnR1YWxLZXkua2V5Q29kZSkgeworICAgICAgICAgICAgICAgIC8vIFBvaW50ZXIgaXMgc3RpbGwgd2l0aGluIHRoZSBzcGFjZSBvZiB0aGUgdmlydHVhbCBrZXkuCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7IC8vIGNvbnN1bWVkCisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBQb2ludGVyIGxlZnQgdmlydHVhbCBrZXkgYXJlYSBvciBhbm90aGVyIHBvaW50ZXIgYWxzbyB3ZW50IGRvd24uCisgICAgICAgIC8vIFNlbmQga2V5IGNhbmNlbGxhdGlvbi4KKyAgICAgICAgZGV2aWNlLT50b3VjaFNjcmVlbi5jdXJyZW50VmlydHVhbEtleS5zdGF0dXMgPQorICAgICAgICAgICAgICAgIElucHV0RGV2aWNlOjpUb3VjaFNjcmVlblN0YXRlOjpDdXJyZW50VmlydHVhbEtleVN0YXRlOjpTVEFUVVNfQ0FOQ0VMRUQ7CisjaWYgREVCVUdfVklSVFVBTF9LRVlTCisgICAgICAgIExPR0QoIlZpcnR1YWxLZXlzOiBDYW5jZWxpbmcga2V5OiBrZXlDb2RlPSVkLCBzY2FuQ29kZT0lZCIsCisgICAgICAgICAgICAgICAgZGV2aWNlLT50b3VjaFNjcmVlbi5jdXJyZW50VmlydHVhbEtleS5rZXlDb2RlLAorICAgICAgICAgICAgICAgIGRldmljZS0+dG91Y2hTY3JlZW4uY3VycmVudFZpcnR1YWxLZXkuc2NhbkNvZGUpOworI2VuZGlmCisgICAgICAgIGRpc3BhdGNoVmlydHVhbEtleSh3aGVuLCBkZXZpY2UsIHBvbGljeUZsYWdzLCBLRVlfRVZFTlRfQUNUSU9OX1VQLAorICAgICAgICAgICAgICAgIEtFWV9FVkVOVF9GTEFHX0ZST01fU1lTVEVNIHwgS0VZX0VWRU5UX0ZMQUdfVklSVFVBTF9IQVJEX0tFWQorICAgICAgICAgICAgICAgICAgICAgICAgfCBLRVlfRVZFTlRfRkxBR19DQU5DRUxFRCk7CisgICAgICAgIHJldHVybiB0cnVlOyAvLyBjb25zdW1lZAorCisgICAgZGVmYXVsdDoKKyAgICAgICAgaWYgKGRldmljZS0+dG91Y2hTY3JlZW4uY3VycmVudFRvdWNoLnBvaW50ZXJDb3VudCA9PSAxCisgICAgICAgICAgICAgICAgJiYgZGV2aWNlLT50b3VjaFNjcmVlbi5sYXN0VG91Y2gucG9pbnRlckNvdW50ID09IDApIHsKKyAgICAgICAgICAgIC8vIFBvaW50ZXIganVzdCB3ZW50IGRvd24uICBDaGVjayBmb3IgdmlydHVhbCBrZXkgaGl0LgorICAgICAgICAgICAgY29uc3QgSW5wdXREZXZpY2U6OlZpcnR1YWxLZXkqIHZpcnR1YWxLZXkgPSBkZXZpY2UtPnRvdWNoU2NyZWVuLmZpbmRWaXJ0dWFsS2V5SGl0KCk7CisgICAgICAgICAgICBpZiAodmlydHVhbEtleSkgeworICAgICAgICAgICAgICAgIGRldmljZS0+dG91Y2hTY3JlZW4uY3VycmVudFZpcnR1YWxLZXkuc3RhdHVzID0KKyAgICAgICAgICAgICAgICAgICAgICAgIElucHV0RGV2aWNlOjpUb3VjaFNjcmVlblN0YXRlOjpDdXJyZW50VmlydHVhbEtleVN0YXRlOjpTVEFUVVNfRE9XTjsKKyAgICAgICAgICAgICAgICBkZXZpY2UtPnRvdWNoU2NyZWVuLmN1cnJlbnRWaXJ0dWFsS2V5LmRvd25UaW1lID0gd2hlbjsKKyAgICAgICAgICAgICAgICBkZXZpY2UtPnRvdWNoU2NyZWVuLmN1cnJlbnRWaXJ0dWFsS2V5LmtleUNvZGUgPSB2aXJ0dWFsS2V5LT5rZXlDb2RlOworICAgICAgICAgICAgICAgIGRldmljZS0+dG91Y2hTY3JlZW4uY3VycmVudFZpcnR1YWxLZXkuc2NhbkNvZGUgPSB2aXJ0dWFsS2V5LT5zY2FuQ29kZTsKKyNpZiBERUJVR19WSVJUVUFMX0tFWVMKKyAgICAgICAgICAgICAgICBMT0dEKCJWaXJ0dWFsS2V5czogR2VuZXJhdGluZyBrZXkgZG93bjoga2V5Q29kZT0lZCwgc2NhbkNvZGU9JWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlLT50b3VjaFNjcmVlbi5jdXJyZW50VmlydHVhbEtleS5rZXlDb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlLT50b3VjaFNjcmVlbi5jdXJyZW50VmlydHVhbEtleS5zY2FuQ29kZSk7CisjZW5kaWYKKyAgICAgICAgICAgICAgICBkaXNwYXRjaFZpcnR1YWxLZXkod2hlbiwgZGV2aWNlLCBwb2xpY3lGbGFncywgS0VZX0VWRU5UX0FDVElPTl9ET1dOLAorICAgICAgICAgICAgICAgICAgICAgICAgS0VZX0VWRU5UX0ZMQUdfRlJPTV9TWVNURU0gfCBLRVlfRVZFTlRfRkxBR19WSVJUVUFMX0hBUkRfS0VZKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gY29uc3VtZWQKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7IC8vIG5vdCBjb25zdW1lZAorICAgIH0KK30KKwordm9pZCBJbnB1dFJlYWRlcjo6ZGlzcGF0Y2hWaXJ0dWFsS2V5KG5zZWNzX3Qgd2hlbiwKKyAgICAgICAgSW5wdXREZXZpY2UqIGRldmljZSwgdWludDMyX3QgcG9saWN5RmxhZ3MsCisgICAgICAgIGludDMyX3Qga2V5RXZlbnRBY3Rpb24sIGludDMyX3Qga2V5RXZlbnRGbGFncykgeworICAgIHVwZGF0ZUV4cG9ydGVkVmlydHVhbEtleVN0YXRlKCk7CisKKyAgICBpbnQzMl90IGtleUNvZGUgPSBkZXZpY2UtPnRvdWNoU2NyZWVuLmN1cnJlbnRWaXJ0dWFsS2V5LmtleUNvZGU7CisgICAgaW50MzJfdCBzY2FuQ29kZSA9IGRldmljZS0+dG91Y2hTY3JlZW4uY3VycmVudFZpcnR1YWxLZXkuc2NhbkNvZGU7CisgICAgbnNlY3NfdCBkb3duVGltZSA9IGRldmljZS0+dG91Y2hTY3JlZW4uY3VycmVudFZpcnR1YWxLZXkuZG93blRpbWU7CisgICAgaW50MzJfdCBtZXRhU3RhdGUgPSBnbG9iYWxNZXRhU3RhdGUoKTsKKworICAgIGlmIChrZXlFdmVudEFjdGlvbiA9PSBLRVlfRVZFTlRfQUNUSU9OX0RPV04pIHsKKyAgICAgICAgbVBvbGljeS0+dmlydHVhbEtleURvd25GZWVkYmFjaygpOworICAgIH0KKworICAgIGludDMyX3QgcG9saWN5QWN0aW9ucyA9IG1Qb2xpY3ktPmludGVyY2VwdEtleSh3aGVuLCBkZXZpY2UtPmlkLAorICAgICAgICAgICAga2V5RXZlbnRBY3Rpb24gPT0gS0VZX0VWRU5UX0FDVElPTl9ET1dOLCBrZXlDb2RlLCBzY2FuQ29kZSwgcG9saWN5RmxhZ3MpOworCisgICAgaWYgKGFwcGx5U3RhbmRhcmRJbnB1dERpc3BhdGNoUG9saWN5QWN0aW9ucyh3aGVuLCBwb2xpY3lBY3Rpb25zLCAmIHBvbGljeUZsYWdzKSkgeworICAgICAgICBtRGlzcGF0Y2hlci0+bm90aWZ5S2V5KHdoZW4sIGRldmljZS0+aWQsIElOUFVUX0VWRU5UX05BVFVSRV9LRVksIHBvbGljeUZsYWdzLAorICAgICAgICAgICAgICAgIGtleUV2ZW50QWN0aW9uLCBrZXlFdmVudEZsYWdzLCBrZXlDb2RlLCBzY2FuQ29kZSwgbWV0YVN0YXRlLCBkb3duVGltZSk7CisgICAgfQorfQorCit2b2lkIElucHV0UmVhZGVyOjpkaXNwYXRjaFRvdWNoZXMobnNlY3NfdCB3aGVuLAorICAgICAgICBJbnB1dERldmljZSogZGV2aWNlLCB1aW50MzJfdCBwb2xpY3lGbGFncykgeworICAgIHVpbnQzMl90IGN1cnJlbnRQb2ludGVyQ291bnQgPSBkZXZpY2UtPnRvdWNoU2NyZWVuLmN1cnJlbnRUb3VjaC5wb2ludGVyQ291bnQ7CisgICAgdWludDMyX3QgbGFzdFBvaW50ZXJDb3VudCA9IGRldmljZS0+dG91Y2hTY3JlZW4ubGFzdFRvdWNoLnBvaW50ZXJDb3VudDsKKyAgICBpZiAoY3VycmVudFBvaW50ZXJDb3VudCA9PSAwICYmIGxhc3RQb2ludGVyQ291bnQgPT0gMCkgeworICAgICAgICByZXR1cm47IC8vIG5vdGhpbmcgdG8gZG8hCisgICAgfQorCisgICAgQml0U2V0MzIgY3VycmVudElkQml0cyA9IGRldmljZS0+dG91Y2hTY3JlZW4uY3VycmVudFRvdWNoLmlkQml0czsKKyAgICBCaXRTZXQzMiBsYXN0SWRCaXRzID0gZGV2aWNlLT50b3VjaFNjcmVlbi5sYXN0VG91Y2guaWRCaXRzOworCisgICAgaWYgKGN1cnJlbnRJZEJpdHMgPT0gbGFzdElkQml0cykgeworICAgICAgICAvLyBObyBwb2ludGVyIGlkIGNoYW5nZXMgc28gdGhpcyBpcyBhIG1vdmUgZXZlbnQuCisgICAgICAgIC8vIFRoZSBkaXNwYXRjaGVyIHRha2VzIGNhcmUgb2YgYmF0Y2hpbmcgbW92ZXMgc28gd2UgZG9uJ3QgaGF2ZSB0byBkZWFsIHdpdGggdGhhdCBoZXJlLgorICAgICAgICBpbnQzMl90IG1vdGlvbkV2ZW50QWN0aW9uID0gTU9USU9OX0VWRU5UX0FDVElPTl9NT1ZFOworICAgICAgICBkaXNwYXRjaFRvdWNoKHdoZW4sIGRldmljZSwgcG9saWN5RmxhZ3MsICYgZGV2aWNlLT50b3VjaFNjcmVlbi5jdXJyZW50VG91Y2gsCisgICAgICAgICAgICAgICAgY3VycmVudElkQml0cywgbW90aW9uRXZlbnRBY3Rpb24pOworICAgIH0gZWxzZSB7CisgICAgICAgIC8vIFRoZXJlIG1heSBiZSBwb2ludGVycyBnb2luZyB1cCBhbmQgcG9pbnRlcnMgZ29pbmcgZG93biBhdCB0aGUgc2FtZSB0aW1lIHdoZW4gcG9pbnRlcgorICAgICAgICAvLyBpZHMgYXJlIHJlcG9ydGVkIGJ5IHRoZSBkZXZpY2UgZHJpdmVyLgorICAgICAgICBCaXRTZXQzMiB1cElkQml0cyhsYXN0SWRCaXRzLnZhbHVlICYgfiBjdXJyZW50SWRCaXRzLnZhbHVlKTsKKyAgICAgICAgQml0U2V0MzIgZG93bklkQml0cyhjdXJyZW50SWRCaXRzLnZhbHVlICYgfiBsYXN0SWRCaXRzLnZhbHVlKTsKKyAgICAgICAgQml0U2V0MzIgYWN0aXZlSWRCaXRzKGxhc3RJZEJpdHMudmFsdWUpOworCisgICAgICAgIHdoaWxlICghIHVwSWRCaXRzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgdWludDMyX3QgdXBJZCA9IHVwSWRCaXRzLmZpcnN0TWFya2VkQml0KCk7CisgICAgICAgICAgICB1cElkQml0cy5jbGVhckJpdCh1cElkKTsKKyAgICAgICAgICAgIEJpdFNldDMyIG9sZEFjdGl2ZUlkQml0cyA9IGFjdGl2ZUlkQml0czsKKyAgICAgICAgICAgIGFjdGl2ZUlkQml0cy5jbGVhckJpdCh1cElkKTsKKworICAgICAgICAgICAgaW50MzJfdCBtb3Rpb25FdmVudEFjdGlvbjsKKyAgICAgICAgICAgIGlmIChhY3RpdmVJZEJpdHMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgbW90aW9uRXZlbnRBY3Rpb24gPSBNT1RJT05fRVZFTlRfQUNUSU9OX1VQOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtb3Rpb25FdmVudEFjdGlvbiA9IE1PVElPTl9FVkVOVF9BQ1RJT05fUE9JTlRFUl9VUAorICAgICAgICAgICAgICAgICAgICAgICAgfCAodXBJZCA8PCBNT1RJT05fRVZFTlRfQUNUSU9OX1BPSU5URVJfSU5ERVhfU0hJRlQpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBkaXNwYXRjaFRvdWNoKHdoZW4sIGRldmljZSwgcG9saWN5RmxhZ3MsICYgZGV2aWNlLT50b3VjaFNjcmVlbi5sYXN0VG91Y2gsCisgICAgICAgICAgICAgICAgICAgIG9sZEFjdGl2ZUlkQml0cywgbW90aW9uRXZlbnRBY3Rpb24pOworICAgICAgICB9CisKKyAgICAgICAgd2hpbGUgKCEgZG93bklkQml0cy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIHVpbnQzMl90IGRvd25JZCA9IGRvd25JZEJpdHMuZmlyc3RNYXJrZWRCaXQoKTsKKyAgICAgICAgICAgIGRvd25JZEJpdHMuY2xlYXJCaXQoZG93bklkKTsKKyAgICAgICAgICAgIEJpdFNldDMyIG9sZEFjdGl2ZUlkQml0cyA9IGFjdGl2ZUlkQml0czsKKyAgICAgICAgICAgIGFjdGl2ZUlkQml0cy5tYXJrQml0KGRvd25JZCk7CisKKyAgICAgICAgICAgIGludDMyX3QgbW90aW9uRXZlbnRBY3Rpb247CisgICAgICAgICAgICBpZiAob2xkQWN0aXZlSWRCaXRzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgICAgIG1vdGlvbkV2ZW50QWN0aW9uID0gTU9USU9OX0VWRU5UX0FDVElPTl9ET1dOOworICAgICAgICAgICAgICAgIGRldmljZS0+dG91Y2hTY3JlZW4uZG93blRpbWUgPSB3aGVuOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtb3Rpb25FdmVudEFjdGlvbiA9IE1PVElPTl9FVkVOVF9BQ1RJT05fUE9JTlRFUl9ET1dOCisgICAgICAgICAgICAgICAgICAgICAgICB8IChkb3duSWQgPDwgTU9USU9OX0VWRU5UX0FDVElPTl9QT0lOVEVSX0lOREVYX1NISUZUKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZGlzcGF0Y2hUb3VjaCh3aGVuLCBkZXZpY2UsIHBvbGljeUZsYWdzLCAmIGRldmljZS0+dG91Y2hTY3JlZW4uY3VycmVudFRvdWNoLAorICAgICAgICAgICAgICAgICAgICBhY3RpdmVJZEJpdHMsIG1vdGlvbkV2ZW50QWN0aW9uKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBJbnB1dFJlYWRlcjo6ZGlzcGF0Y2hUb3VjaChuc2Vjc190IHdoZW4sIElucHV0RGV2aWNlKiBkZXZpY2UsIHVpbnQzMl90IHBvbGljeUZsYWdzLAorICAgICAgICBJbnB1dERldmljZTo6VG91Y2hEYXRhKiB0b3VjaCwgQml0U2V0MzIgaWRCaXRzLAorICAgICAgICBpbnQzMl90IG1vdGlvbkV2ZW50QWN0aW9uKSB7CisgICAgaW50MzJfdCBvcmllbnRlZFdpZHRoLCBvcmllbnRlZEhlaWdodDsKKyAgICBzd2l0Y2ggKG1EaXNwbGF5T3JpZW50YXRpb24pIHsKKyAgICBjYXNlIElucHV0UmVhZGVyUG9saWN5SW50ZXJmYWNlOjpST1RBVElPTl85MDoKKyAgICBjYXNlIElucHV0UmVhZGVyUG9saWN5SW50ZXJmYWNlOjpST1RBVElPTl8yNzA6CisgICAgICAgIG9yaWVudGVkV2lkdGggPSBtRGlzcGxheUhlaWdodDsKKyAgICAgICAgb3JpZW50ZWRIZWlnaHQgPSBtRGlzcGxheVdpZHRoOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBvcmllbnRlZFdpZHRoID0gbURpc3BsYXlXaWR0aDsKKyAgICAgICAgb3JpZW50ZWRIZWlnaHQgPSBtRGlzcGxheUhlaWdodDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgdWludDMyX3QgcG9pbnRlckNvdW50ID0gMDsKKyAgICBpbnQzMl90IHBvaW50ZXJJZHNbTUFYX1BPSU5URVJTXTsKKyAgICBQb2ludGVyQ29vcmRzIHBvaW50ZXJDb29yZHNbTUFYX1BPSU5URVJTXTsKKworICAgIGNvbnN0IElucHV0RGV2aWNlOjpUb3VjaFNjcmVlblN0YXRlOjpQcmVjYWxjdWxhdGVkJiBwcmVjYWxjdWxhdGVkID0KKyAgICAgICAgICAgIGRldmljZS0+dG91Y2hTY3JlZW4ucHJlY2FsY3VsYXRlZDsKKworICAgIC8vIFdhbGsgdGhyb3VnaCB0aGUgdGhlIGFjdGl2ZSBwb2ludGVycyBhbmQgbWFwIHRvdWNoIHNjcmVlbiBjb29yZGluYXRlcyAoVG91Y2hEYXRhKSBpbnRvCisgICAgLy8gZGlzcGxheSBjb29yZGluYXRlcyAoUG9pbnRlckNvb3JkcykgYW5kIGFkanVzdCBmb3IgZGlzcGxheSBvcmllbnRhdGlvbi4KKyAgICB3aGlsZSAoISBpZEJpdHMuaXNFbXB0eSgpKSB7CisgICAgICAgIHVpbnQzMl90IGlkID0gaWRCaXRzLmZpcnN0TWFya2VkQml0KCk7CisgICAgICAgIGlkQml0cy5jbGVhckJpdChpZCk7CisgICAgICAgIHVpbnQzMl90IGluZGV4ID0gdG91Y2gtPmlkVG9JbmRleFtpZF07CisKKyAgICAgICAgZmxvYXQgeCA9IGZsb2F0KHRvdWNoLT5wb2ludGVyc1tpbmRleF0ueAorICAgICAgICAgICAgICAgIC0gcHJlY2FsY3VsYXRlZC54T3JpZ2luKSAqIHByZWNhbGN1bGF0ZWQueFNjYWxlOworICAgICAgICBmbG9hdCB5ID0gZmxvYXQodG91Y2gtPnBvaW50ZXJzW2luZGV4XS55CisgICAgICAgICAgICAgICAgLSBwcmVjYWxjdWxhdGVkLnlPcmlnaW4pICogcHJlY2FsY3VsYXRlZC55U2NhbGU7CisgICAgICAgIGZsb2F0IHByZXNzdXJlID0gZmxvYXQodG91Y2gtPnBvaW50ZXJzW2luZGV4XS5wcmVzc3VyZQorICAgICAgICAgICAgICAgIC0gcHJlY2FsY3VsYXRlZC5wcmVzc3VyZU9yaWdpbikgKiBwcmVjYWxjdWxhdGVkLnByZXNzdXJlU2NhbGU7CisgICAgICAgIGZsb2F0IHNpemUgPSBmbG9hdCh0b3VjaC0+cG9pbnRlcnNbaW5kZXhdLnNpemUKKyAgICAgICAgICAgICAgICAtIHByZWNhbGN1bGF0ZWQuc2l6ZU9yaWdpbikgKiBwcmVjYWxjdWxhdGVkLnNpemVTY2FsZTsKKworICAgICAgICBzd2l0Y2ggKG1EaXNwbGF5T3JpZW50YXRpb24pIHsKKyAgICAgICAgY2FzZSBJbnB1dFJlYWRlclBvbGljeUludGVyZmFjZTo6Uk9UQVRJT05fOTA6IHsKKyAgICAgICAgICAgIGZsb2F0IHhUZW1wID0geDsKKyAgICAgICAgICAgIHggPSB5OworICAgICAgICAgICAgeSA9IG1EaXNwbGF5V2lkdGggLSB4VGVtcDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgSW5wdXRSZWFkZXJQb2xpY3lJbnRlcmZhY2U6OlJPVEFUSU9OXzE4MDogeworICAgICAgICAgICAgeCA9IG1EaXNwbGF5V2lkdGggLSB4OworICAgICAgICAgICAgeSA9IG1EaXNwbGF5SGVpZ2h0IC0geTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGNhc2UgSW5wdXRSZWFkZXJQb2xpY3lJbnRlcmZhY2U6OlJPVEFUSU9OXzI3MDogeworICAgICAgICAgICAgZmxvYXQgeFRlbXAgPSB4OworICAgICAgICAgICAgeCA9IG1EaXNwbGF5SGVpZ2h0IC0geTsKKyAgICAgICAgICAgIHkgPSB4VGVtcDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBwb2ludGVySWRzW3BvaW50ZXJDb3VudF0gPSBpbnQzMl90KGlkKTsKKworICAgICAgICBwb2ludGVyQ29vcmRzW3BvaW50ZXJDb3VudF0ueCA9IHg7CisgICAgICAgIHBvaW50ZXJDb29yZHNbcG9pbnRlckNvdW50XS55ID0geTsKKyAgICAgICAgcG9pbnRlckNvb3Jkc1twb2ludGVyQ291bnRdLnByZXNzdXJlID0gcHJlc3N1cmU7CisgICAgICAgIHBvaW50ZXJDb29yZHNbcG9pbnRlckNvdW50XS5zaXplID0gc2l6ZTsKKworICAgICAgICBwb2ludGVyQ291bnQgKz0gMTsKKyAgICB9CisKKyAgICAvLyBDaGVjayBlZGdlIGZsYWdzIGJ5IGxvb2tpbmcgb25seSBhdCB0aGUgZmlyc3QgcG9pbnRlciBzaW5jZSB0aGUgZmxhZ3MgYXJlCisgICAgLy8gZ2xvYmFsIHRvIHRoZSBldmVudC4KKyAgICAvLyBYWFggTWF5YmUgd2Ugc2hvdWxkIHJldmlzZSB0aGUgZWRnZSBmbGFncyBBUEkgdG8gd29yayBvbiBhIHBlci1wb2ludGVyIGJhc2lzLgorICAgIGludDMyX3QgbW90aW9uRXZlbnRFZGdlRmxhZ3MgPSAwOworICAgIGlmIChtb3Rpb25FdmVudEFjdGlvbiA9PSBNT1RJT05fRVZFTlRfQUNUSU9OX0RPV04pIHsKKyAgICAgICAgaWYgKHBvaW50ZXJDb29yZHNbMF0ueCA8PSAwKSB7CisgICAgICAgICAgICBtb3Rpb25FdmVudEVkZ2VGbGFncyB8PSBNT1RJT05fRVZFTlRfRURHRV9GTEFHX0xFRlQ7CisgICAgICAgIH0gZWxzZSBpZiAocG9pbnRlckNvb3Jkc1swXS54ID49IG9yaWVudGVkV2lkdGgpIHsKKyAgICAgICAgICAgIG1vdGlvbkV2ZW50RWRnZUZsYWdzIHw9IE1PVElPTl9FVkVOVF9FREdFX0ZMQUdfUklHSFQ7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHBvaW50ZXJDb29yZHNbMF0ueSA8PSAwKSB7CisgICAgICAgICAgICBtb3Rpb25FdmVudEVkZ2VGbGFncyB8PSBNT1RJT05fRVZFTlRfRURHRV9GTEFHX1RPUDsKKyAgICAgICAgfSBlbHNlIGlmIChwb2ludGVyQ29vcmRzWzBdLnkgPj0gb3JpZW50ZWRIZWlnaHQpIHsKKyAgICAgICAgICAgIG1vdGlvbkV2ZW50RWRnZUZsYWdzIHw9IE1PVElPTl9FVkVOVF9FREdFX0ZMQUdfQk9UVE9NOworICAgICAgICB9CisgICAgfQorCisgICAgbnNlY3NfdCBkb3duVGltZSA9IGRldmljZS0+dG91Y2hTY3JlZW4uZG93blRpbWU7CisgICAgbURpc3BhdGNoZXItPm5vdGlmeU1vdGlvbih3aGVuLCBkZXZpY2UtPmlkLCBJTlBVVF9FVkVOVF9OQVRVUkVfVE9VQ0gsIHBvbGljeUZsYWdzLAorICAgICAgICAgICAgbW90aW9uRXZlbnRBY3Rpb24sIGdsb2JhbE1ldGFTdGF0ZSgpLCBtb3Rpb25FdmVudEVkZ2VGbGFncywKKyAgICAgICAgICAgIHBvaW50ZXJDb3VudCwgcG9pbnRlcklkcywgcG9pbnRlckNvb3JkcywKKyAgICAgICAgICAgIDAsIDAsIGRvd25UaW1lKTsKK30KKwordm9pZCBJbnB1dFJlYWRlcjo6b25UcmFja2JhbGxTdGF0ZUNoYW5nZWQobnNlY3NfdCB3aGVuLAorICAgICAgICBJbnB1dERldmljZSogZGV2aWNlKSB7CisgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IERFTFRBX0ZJRUxEUyA9CisgICAgICAgICAgICBJbnB1dERldmljZTo6VHJhY2tiYWxsU3RhdGU6OkFjY3VtdWxhdG9yOjpGSUVMRF9SRUxfWAorICAgICAgICAgICAgfCBJbnB1dERldmljZTo6VHJhY2tiYWxsU3RhdGU6OkFjY3VtdWxhdG9yOjpGSUVMRF9SRUxfWTsKKworICAgIC8qIFJlZnJlc2ggZGlzcGxheSBwcm9wZXJ0aWVzIHNvIHdlIGNhbiB0cmFja2JhbGwgbW92ZXMgYWNjb3JkaW5nIHRvIGRpc3BsYXkgb3JpZW50YXRpb24gKi8KKworICAgIGlmICghIHJlZnJlc2hEaXNwbGF5UHJvcGVydGllcygpKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICAvKiBVcGRhdGUgZGV2aWNlIHN0YXRlICovCisKKyAgICB1aW50MzJfdCBmaWVsZHMgPSBkZXZpY2UtPnRyYWNrYmFsbC5hY2N1bXVsYXRvci5maWVsZHM7CisgICAgYm9vbCBkb3duQ2hhbmdlZCA9IGZpZWxkcyAmIElucHV0RGV2aWNlOjpUcmFja2JhbGxTdGF0ZTo6QWNjdW11bGF0b3I6OkZJRUxEX0JUTl9NT1VTRTsKKyAgICBib29sIGRlbHRhQ2hhbmdlZCA9IGZpZWxkcyAmIERFTFRBX0ZJRUxEUzsKKworICAgIGJvb2wgZG93bjsKKyAgICBpZiAoZG93bkNoYW5nZWQpIHsKKyAgICAgICAgaWYgKGRldmljZS0+dHJhY2tiYWxsLmFjY3VtdWxhdG9yLmJ0bk1vdXNlKSB7CisgICAgICAgICAgICBkZXZpY2UtPnRyYWNrYmFsbC5jdXJyZW50LmRvd24gPSB0cnVlOworICAgICAgICAgICAgZGV2aWNlLT50cmFja2JhbGwuY3VycmVudC5kb3duVGltZSA9IHdoZW47CisgICAgICAgICAgICBkb3duID0gdHJ1ZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGRldmljZS0+dHJhY2tiYWxsLmN1cnJlbnQuZG93biA9IGZhbHNlOworICAgICAgICAgICAgZG93biA9IGZhbHNlOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgZG93biA9IGRldmljZS0+dHJhY2tiYWxsLmN1cnJlbnQuZG93bjsKKyAgICB9CisKKyAgICAvKiBBcHBseSBwb2xpY3kgKi8KKworICAgIGludDMyX3QgcG9saWN5QWN0aW9ucyA9IG1Qb2xpY3ktPmludGVyY2VwdFRyYWNrYmFsbCh3aGVuLCBkb3duQ2hhbmdlZCwgZG93biwgZGVsdGFDaGFuZ2VkKTsKKworICAgIHVpbnQzMl90IHBvbGljeUZsYWdzID0gMDsKKyAgICBpZiAoISBhcHBseVN0YW5kYXJkSW5wdXREaXNwYXRjaFBvbGljeUFjdGlvbnMod2hlbiwgcG9saWN5QWN0aW9ucywgJiBwb2xpY3lGbGFncykpIHsKKyAgICAgICAgcmV0dXJuOyAvLyBldmVudCBkcm9wcGVkCisgICAgfQorCisgICAgLyogRW5xdWV1ZSBtb3Rpb24gZXZlbnQgZm9yIGRpc3BhdGNoICovCisKKyAgICBpbnQzMl90IG1vdGlvbkV2ZW50QWN0aW9uOworICAgIGlmIChkb3duQ2hhbmdlZCkgeworICAgICAgICBtb3Rpb25FdmVudEFjdGlvbiA9IGRvd24gPyBNT1RJT05fRVZFTlRfQUNUSU9OX0RPV04gOiBNT1RJT05fRVZFTlRfQUNUSU9OX1VQOworICAgIH0gZWxzZSB7CisgICAgICAgIG1vdGlvbkV2ZW50QWN0aW9uID0gTU9USU9OX0VWRU5UX0FDVElPTl9NT1ZFOworICAgIH0KKworICAgIGludDMyX3QgcG9pbnRlcklkID0gMDsKKyAgICBQb2ludGVyQ29vcmRzIHBvaW50ZXJDb29yZHM7CisgICAgcG9pbnRlckNvb3Jkcy54ID0gZmllbGRzICYgSW5wdXREZXZpY2U6OlRyYWNrYmFsbFN0YXRlOjpBY2N1bXVsYXRvcjo6RklFTERfUkVMX1gKKyAgICAgICAgICAgID8gZGV2aWNlLT50cmFja2JhbGwuYWNjdW11bGF0b3IucmVsWCAqIGRldmljZS0+dHJhY2tiYWxsLnByZWNhbGN1bGF0ZWQueFNjYWxlIDogMDsKKyAgICBwb2ludGVyQ29vcmRzLnkgPSBmaWVsZHMgJiBJbnB1dERldmljZTo6VHJhY2tiYWxsU3RhdGU6OkFjY3VtdWxhdG9yOjpGSUVMRF9SRUxfWQorICAgICAgICAgICAgPyBkZXZpY2UtPnRyYWNrYmFsbC5hY2N1bXVsYXRvci5yZWxZICogZGV2aWNlLT50cmFja2JhbGwucHJlY2FsY3VsYXRlZC55U2NhbGUgOiAwOworICAgIHBvaW50ZXJDb29yZHMucHJlc3N1cmUgPSAxLjBmOyAvLyBYWFggQ29uc2lkZXIgbWFraW5nIHRoaXMgMS4wZiBpZiBkb3duLCAwIG90aGVyd2lzZS4KKyAgICBwb2ludGVyQ29vcmRzLnNpemUgPSAwOworCisgICAgZmxvYXQgdGVtcDsKKyAgICBzd2l0Y2ggKG1EaXNwbGF5T3JpZW50YXRpb24pIHsKKyAgICBjYXNlIElucHV0UmVhZGVyUG9saWN5SW50ZXJmYWNlOjpST1RBVElPTl85MDoKKyAgICAgICAgdGVtcCA9IHBvaW50ZXJDb29yZHMueDsKKyAgICAgICAgcG9pbnRlckNvb3Jkcy54ID0gcG9pbnRlckNvb3Jkcy55OworICAgICAgICBwb2ludGVyQ29vcmRzLnkgPSAtIHRlbXA7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBJbnB1dFJlYWRlclBvbGljeUludGVyZmFjZTo6Uk9UQVRJT05fMTgwOgorICAgICAgICBwb2ludGVyQ29vcmRzLnggPSAtIHBvaW50ZXJDb29yZHMueDsKKyAgICAgICAgcG9pbnRlckNvb3Jkcy55ID0gLSBwb2ludGVyQ29vcmRzLnk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBJbnB1dFJlYWRlclBvbGljeUludGVyZmFjZTo6Uk9UQVRJT05fMjcwOgorICAgICAgICB0ZW1wID0gcG9pbnRlckNvb3Jkcy54OworICAgICAgICBwb2ludGVyQ29vcmRzLnggPSAtIHBvaW50ZXJDb29yZHMueTsKKyAgICAgICAgcG9pbnRlckNvb3Jkcy55ID0gdGVtcDsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgbURpc3BhdGNoZXItPm5vdGlmeU1vdGlvbih3aGVuLCBkZXZpY2UtPmlkLCBJTlBVVF9FVkVOVF9OQVRVUkVfVFJBQ0tCQUxMLCBwb2xpY3lGbGFncywKKyAgICAgICAgICAgIG1vdGlvbkV2ZW50QWN0aW9uLCBnbG9iYWxNZXRhU3RhdGUoKSwgTU9USU9OX0VWRU5UX0VER0VfRkxBR19OT05FLAorICAgICAgICAgICAgMSwgJiBwb2ludGVySWQsICYgcG9pbnRlckNvb3JkcywKKyAgICAgICAgICAgIGRldmljZS0+dHJhY2tiYWxsLnByZWNhbGN1bGF0ZWQueFByZWNpc2lvbiwKKyAgICAgICAgICAgIGRldmljZS0+dHJhY2tiYWxsLnByZWNhbGN1bGF0ZWQueVByZWNpc2lvbiwKKyAgICAgICAgICAgIGRldmljZS0+dHJhY2tiYWxsLmN1cnJlbnQuZG93blRpbWUpOworfQorCit2b2lkIElucHV0UmVhZGVyOjpvbkNvbmZpZ3VyYXRpb25DaGFuZ2VkKG5zZWNzX3Qgd2hlbikgeworICAgIC8vIFJlc2V0IGdsb2JhbCBtZXRhIHN0YXRlIGJlY2F1c2UgaXQgZGVwZW5kcyBvbiB0aGUgbGlzdCBvZiBhbGwgY29uZmlndXJlZCBkZXZpY2VzLgorICAgIHJlc2V0R2xvYmFsTWV0YVN0YXRlKCk7CisKKyAgICAvLyBSZXNldCB2aXJ0dWFsIGtleXMsIGp1c3QgaW4gY2FzZS4KKyAgICB1cGRhdGVFeHBvcnRlZFZpcnR1YWxLZXlTdGF0ZSgpOworCisgICAgLy8gVXBkYXRlIGlucHV0IGNvbmZpZ3VyYXRpb24uCisgICAgdXBkYXRlRXhwb3J0ZWRJbnB1dENvbmZpZ3VyYXRpb24oKTsKKworICAgIC8vIEVucXVldWUgY29uZmlndXJhdGlvbiBjaGFuZ2VkLgorICAgIG1EaXNwYXRjaGVyLT5ub3RpZnlDb25maWd1cmF0aW9uQ2hhbmdlZCh3aGVuKTsKK30KKworYm9vbCBJbnB1dFJlYWRlcjo6YXBwbHlTdGFuZGFyZElucHV0RGlzcGF0Y2hQb2xpY3lBY3Rpb25zKG5zZWNzX3Qgd2hlbiwKKyAgICAgICAgaW50MzJfdCBwb2xpY3lBY3Rpb25zLCB1aW50MzJfdCogcG9saWN5RmxhZ3MpIHsKKyAgICBpZiAocG9saWN5QWN0aW9ucyAmIElucHV0UmVhZGVyUG9saWN5SW50ZXJmYWNlOjpBQ1RJT05fQVBQX1NXSVRDSF9DT01JTkcpIHsKKyAgICAgICAgbURpc3BhdGNoZXItPm5vdGlmeUFwcFN3aXRjaENvbWluZyh3aGVuKTsKKyAgICB9CisKKyAgICBpZiAocG9saWN5QWN0aW9ucyAmIElucHV0UmVhZGVyUG9saWN5SW50ZXJmYWNlOjpBQ1RJT05fV09LRV9IRVJFKSB7CisgICAgICAgICpwb2xpY3lGbGFncyB8PSBQT0xJQ1lfRkxBR19XT0tFX0hFUkU7CisgICAgfQorCisgICAgaWYgKHBvbGljeUFjdGlvbnMgJiBJbnB1dFJlYWRlclBvbGljeUludGVyZmFjZTo6QUNUSU9OX0JSSUdIVF9IRVJFKSB7CisgICAgICAgICpwb2xpY3lGbGFncyB8PSBQT0xJQ1lfRkxBR19CUklHSFRfSEVSRTsKKyAgICB9CisKKyAgICByZXR1cm4gcG9saWN5QWN0aW9ucyAmIElucHV0UmVhZGVyUG9saWN5SW50ZXJmYWNlOjpBQ1RJT05fRElTUEFUQ0g7Cit9CisKK3ZvaWQgSW5wdXRSZWFkZXI6OnJlc2V0RGlzcGxheVByb3BlcnRpZXMoKSB7CisgICAgbURpc3BsYXlXaWR0aCA9IG1EaXNwbGF5SGVpZ2h0ID0gLTE7CisgICAgbURpc3BsYXlPcmllbnRhdGlvbiA9IC0xOworfQorCitib29sIElucHV0UmVhZGVyOjpyZWZyZXNoRGlzcGxheVByb3BlcnRpZXMoKSB7CisgICAgaW50MzJfdCBuZXdXaWR0aCwgbmV3SGVpZ2h0LCBuZXdPcmllbnRhdGlvbjsKKyAgICBpZiAobVBvbGljeS0+Z2V0RGlzcGxheUluZm8oMCwgJiBuZXdXaWR0aCwgJiBuZXdIZWlnaHQsICYgbmV3T3JpZW50YXRpb24pKSB7CisgICAgICAgIGlmIChuZXdXaWR0aCAhPSBtRGlzcGxheVdpZHRoIHx8IG5ld0hlaWdodCAhPSBtRGlzcGxheUhlaWdodCkgeworICAgICAgICAgICAgTE9HRCgiRGlzcGxheSBzaXplIGNoYW5nZWQgZnJvbSAlZHglZCB0byAlZHglZCwgdXBkYXRpbmcgZGV2aWNlIGNvbmZpZ3VyYXRpb24iLAorICAgICAgICAgICAgICAgICAgICBtRGlzcGxheVdpZHRoLCBtRGlzcGxheUhlaWdodCwgbmV3V2lkdGgsIG5ld0hlaWdodCk7CisKKyAgICAgICAgICAgIG1EaXNwbGF5V2lkdGggPSBuZXdXaWR0aDsKKyAgICAgICAgICAgIG1EaXNwbGF5SGVpZ2h0ID0gbmV3SGVpZ2h0OworCisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1EZXZpY2VzLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgY29uZmlndXJlRGV2aWNlRm9yQ3VycmVudERpc3BsYXlTaXplKG1EZXZpY2VzLnZhbHVlQXQoaSkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKG5ld09yaWVudGF0aW9uICE9IG1EaXNwbGF5T3JpZW50YXRpb24pIHsKKyAgICAgICAgICAgIExPR0QoIkRpc3BsYXkgb3JpZW50YXRpb24gY2hhbmdlZCB0byAlZCIsIG1EaXNwbGF5T3JpZW50YXRpb24pOworCisgICAgICAgICAgICBtRGlzcGxheU9yaWVudGF0aW9uID0gbmV3T3JpZW50YXRpb247CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmVzZXREaXNwbGF5UHJvcGVydGllcygpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCitJbnB1dERldmljZSogSW5wdXRSZWFkZXI6OmdldERldmljZShpbnQzMl90IGRldmljZUlkKSB7CisgICAgc3NpemVfdCBpbmRleCA9IG1EZXZpY2VzLmluZGV4T2ZLZXkoZGV2aWNlSWQpOworICAgIHJldHVybiBpbmRleCA+PSAwID8gbURldmljZXMudmFsdWVBdCgoc2l6ZV90KSBpbmRleCkgOiBOVUxMOworfQorCitJbnB1dERldmljZSogSW5wdXRSZWFkZXI6OmdldE5vbklnbm9yZWREZXZpY2UoaW50MzJfdCBkZXZpY2VJZCkgeworICAgIElucHV0RGV2aWNlKiBkZXZpY2UgPSBnZXREZXZpY2UoZGV2aWNlSWQpOworICAgIHJldHVybiBkZXZpY2UgJiYgISBkZXZpY2UtPmlnbm9yZWQgPyBkZXZpY2UgOiBOVUxMOworfQorCit2b2lkIElucHV0UmVhZGVyOjphZGREZXZpY2UobnNlY3NfdCB3aGVuLCBpbnQzMl90IGRldmljZUlkKSB7CisgICAgdWludDMyX3QgY2xhc3NlcyA9IG1FdmVudEh1Yi0+Z2V0RGV2aWNlQ2xhc3NlcyhkZXZpY2VJZCk7CisgICAgU3RyaW5nOCBuYW1lID0gbUV2ZW50SHViLT5nZXREZXZpY2VOYW1lKGRldmljZUlkKTsKKyAgICBJbnB1dERldmljZSogZGV2aWNlID0gbmV3IElucHV0RGV2aWNlKGRldmljZUlkLCBjbGFzc2VzLCBuYW1lKTsKKworICAgIGlmIChjbGFzc2VzICE9IDApIHsKKyAgICAgICAgTE9HSSgiRGV2aWNlIGFkZGVkOiBpZD0weCV4LCBuYW1lPSVzLCBjbGFzc2VzPSUwMngiLCBkZXZpY2UtPmlkLAorICAgICAgICAgICAgICAgIGRldmljZS0+bmFtZS5zdHJpbmcoKSwgZGV2aWNlLT5jbGFzc2VzKTsKKworICAgICAgICBjb25maWd1cmVEZXZpY2UoZGV2aWNlKTsKKyAgICB9IGVsc2UgeworICAgICAgICBMT0dJKCJEZXZpY2UgYWRkZWQ6IGlkPTB4JXgsIG5hbWU9JXMgKGlnbm9yZWQgbm9uLWlucHV0IGRldmljZSkiLCBkZXZpY2UtPmlkLAorICAgICAgICAgICAgICAgIGRldmljZS0+bmFtZS5zdHJpbmcoKSk7CisKKyAgICAgICAgZGV2aWNlLT5pZ25vcmVkID0gdHJ1ZTsKKyAgICB9CisKKyAgICBkZXZpY2UtPnJlc2V0KCk7CisKKyAgICBtRGV2aWNlcy5hZGQoZGV2aWNlSWQsIGRldmljZSk7CisKKyAgICBpZiAoISBkZXZpY2UtPmlnbm9yZWQpIHsKKyAgICAgICAgb25Db25maWd1cmF0aW9uQ2hhbmdlZCh3aGVuKTsKKyAgICB9Cit9CisKK3ZvaWQgSW5wdXRSZWFkZXI6OnJlbW92ZURldmljZShuc2Vjc190IHdoZW4sIElucHV0RGV2aWNlKiBkZXZpY2UpIHsKKyAgICBtRGV2aWNlcy5yZW1vdmVJdGVtKGRldmljZS0+aWQpOworCisgICAgaWYgKCEgZGV2aWNlLT5pZ25vcmVkKSB7CisgICAgICAgIExPR0koIkRldmljZSByZW1vdmVkOiBpZD0weCV4LCBuYW1lPSVzLCBjbGFzc2VzPSUwMngiLCBkZXZpY2UtPmlkLAorICAgICAgICAgICAgICAgIGRldmljZS0+bmFtZS5zdHJpbmcoKSwgZGV2aWNlLT5jbGFzc2VzKTsKKworICAgICAgICBvbkNvbmZpZ3VyYXRpb25DaGFuZ2VkKHdoZW4pOworICAgIH0gZWxzZSB7CisgICAgICAgIExPR0koIkRldmljZSByZW1vdmVkOiBpZD0weCV4LCBuYW1lPSVzIChpZ25vcmVkIG5vbi1pbnB1dCBkZXZpY2UpIiwgZGV2aWNlLT5pZCwKKyAgICAgICAgICAgICAgICBkZXZpY2UtPm5hbWUuc3RyaW5nKCkpOworICAgIH0KKworICAgIGRlbGV0ZSBkZXZpY2U7Cit9CisKK3ZvaWQgSW5wdXRSZWFkZXI6OmNvbmZpZ3VyZURldmljZShJbnB1dERldmljZSogZGV2aWNlKSB7CisgICAgaWYgKGRldmljZS0+aXNNdWx0aVRvdWNoU2NyZWVuKCkpIHsKKyAgICAgICAgY29uZmlndXJlQWJzb2x1dGVBeGlzSW5mbyhkZXZpY2UsIEFCU19NVF9QT1NJVElPTl9YLCAiWCIsCisgICAgICAgICAgICAgICAgJiBkZXZpY2UtPnRvdWNoU2NyZWVuLnBhcmFtZXRlcnMueEF4aXMpOworICAgICAgICBjb25maWd1cmVBYnNvbHV0ZUF4aXNJbmZvKGRldmljZSwgQUJTX01UX1BPU0lUSU9OX1ksICJZIiwKKyAgICAgICAgICAgICAgICAmIGRldmljZS0+dG91Y2hTY3JlZW4ucGFyYW1ldGVycy55QXhpcyk7CisgICAgICAgIGNvbmZpZ3VyZUFic29sdXRlQXhpc0luZm8oZGV2aWNlLCBBQlNfTVRfVE9VQ0hfTUFKT1IsICJQcmVzc3VyZSIsCisgICAgICAgICAgICAgICAgJiBkZXZpY2UtPnRvdWNoU2NyZWVuLnBhcmFtZXRlcnMucHJlc3N1cmVBeGlzKTsKKyAgICAgICAgY29uZmlndXJlQWJzb2x1dGVBeGlzSW5mbyhkZXZpY2UsIEFCU19NVF9XSURUSF9NQUpPUiwgIlNpemUiLAorICAgICAgICAgICAgICAgICYgZGV2aWNlLT50b3VjaFNjcmVlbi5wYXJhbWV0ZXJzLnNpemVBeGlzKTsKKyAgICB9IGVsc2UgaWYgKGRldmljZS0+aXNTaW5nbGVUb3VjaFNjcmVlbigpKSB7CisgICAgICAgIGNvbmZpZ3VyZUFic29sdXRlQXhpc0luZm8oZGV2aWNlLCBBQlNfWCwgIlgiLAorICAgICAgICAgICAgICAgICYgZGV2aWNlLT50b3VjaFNjcmVlbi5wYXJhbWV0ZXJzLnhBeGlzKTsKKyAgICAgICAgY29uZmlndXJlQWJzb2x1dGVBeGlzSW5mbyhkZXZpY2UsIEFCU19ZLCAiWSIsCisgICAgICAgICAgICAgICAgJiBkZXZpY2UtPnRvdWNoU2NyZWVuLnBhcmFtZXRlcnMueUF4aXMpOworICAgICAgICBjb25maWd1cmVBYnNvbHV0ZUF4aXNJbmZvKGRldmljZSwgQUJTX1BSRVNTVVJFLCAiUHJlc3N1cmUiLAorICAgICAgICAgICAgICAgICYgZGV2aWNlLT50b3VjaFNjcmVlbi5wYXJhbWV0ZXJzLnByZXNzdXJlQXhpcyk7CisgICAgICAgIGNvbmZpZ3VyZUFic29sdXRlQXhpc0luZm8oZGV2aWNlLCBBQlNfVE9PTF9XSURUSCwgIlNpemUiLAorICAgICAgICAgICAgICAgICYgZGV2aWNlLT50b3VjaFNjcmVlbi5wYXJhbWV0ZXJzLnNpemVBeGlzKTsKKyAgICB9CisKKyAgICBpZiAoZGV2aWNlLT5pc1RvdWNoU2NyZWVuKCkpIHsKKyAgICAgICAgZGV2aWNlLT50b3VjaFNjcmVlbi5wYXJhbWV0ZXJzLnVzZUJhZFRvdWNoRmlsdGVyID0KKyAgICAgICAgICAgICAgICBtUG9saWN5LT5maWx0ZXJUb3VjaEV2ZW50cygpOworICAgICAgICBkZXZpY2UtPnRvdWNoU2NyZWVuLnBhcmFtZXRlcnMudXNlQXZlcmFnaW5nVG91Y2hGaWx0ZXIgPQorICAgICAgICAgICAgICAgIG1Qb2xpY3ktPmZpbHRlclRvdWNoRXZlbnRzKCk7CisgICAgICAgIGRldmljZS0+dG91Y2hTY3JlZW4ucGFyYW1ldGVycy51c2VKdW1weVRvdWNoRmlsdGVyID0KKyAgICAgICAgICAgICAgICBtUG9saWN5LT5maWx0ZXJKdW1weVRvdWNoRXZlbnRzKCk7CisKKyAgICAgICAgaWYgKGRldmljZS0+dG91Y2hTY3JlZW4ucGFyYW1ldGVycy5wcmVzc3VyZUF4aXMudmFsaWQpIHsKKyAgICAgICAgICAgIGRldmljZS0+dG91Y2hTY3JlZW4ucHJlY2FsY3VsYXRlZC5wcmVzc3VyZU9yaWdpbiA9CisgICAgICAgICAgICAgICAgICAgIGRldmljZS0+dG91Y2hTY3JlZW4ucGFyYW1ldGVycy5wcmVzc3VyZUF4aXMubWluVmFsdWU7CisgICAgICAgICAgICBkZXZpY2UtPnRvdWNoU2NyZWVuLnByZWNhbGN1bGF0ZWQucHJlc3N1cmVTY2FsZSA9CisgICAgICAgICAgICAgICAgICAgIDEuMGYgLyBkZXZpY2UtPnRvdWNoU2NyZWVuLnBhcmFtZXRlcnMucHJlc3N1cmVBeGlzLnJhbmdlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZGV2aWNlLT50b3VjaFNjcmVlbi5wcmVjYWxjdWxhdGVkLnByZXNzdXJlT3JpZ2luID0gMDsKKyAgICAgICAgICAgIGRldmljZS0+dG91Y2hTY3JlZW4ucHJlY2FsY3VsYXRlZC5wcmVzc3VyZVNjYWxlID0gMS4wZjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChkZXZpY2UtPnRvdWNoU2NyZWVuLnBhcmFtZXRlcnMuc2l6ZUF4aXMudmFsaWQpIHsKKyAgICAgICAgICAgIGRldmljZS0+dG91Y2hTY3JlZW4ucHJlY2FsY3VsYXRlZC5zaXplT3JpZ2luID0KKyAgICAgICAgICAgICAgICAgICAgZGV2aWNlLT50b3VjaFNjcmVlbi5wYXJhbWV0ZXJzLnNpemVBeGlzLm1pblZhbHVlOworICAgICAgICAgICAgZGV2aWNlLT50b3VjaFNjcmVlbi5wcmVjYWxjdWxhdGVkLnNpemVTY2FsZSA9CisgICAgICAgICAgICAgICAgICAgIDEuMGYgLyBkZXZpY2UtPnRvdWNoU2NyZWVuLnBhcmFtZXRlcnMuc2l6ZUF4aXMucmFuZ2U7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBkZXZpY2UtPnRvdWNoU2NyZWVuLnByZWNhbGN1bGF0ZWQuc2l6ZU9yaWdpbiA9IDA7CisgICAgICAgICAgICBkZXZpY2UtPnRvdWNoU2NyZWVuLnByZWNhbGN1bGF0ZWQuc2l6ZVNjYWxlID0gMS4wZjsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChkZXZpY2UtPmlzVHJhY2tiYWxsKCkpIHsKKyAgICAgICAgZGV2aWNlLT50cmFja2JhbGwucHJlY2FsY3VsYXRlZC54UHJlY2lzaW9uID0gVFJBQ0tCQUxMX01PVkVNRU5UX1RIUkVTSE9MRDsKKyAgICAgICAgZGV2aWNlLT50cmFja2JhbGwucHJlY2FsY3VsYXRlZC55UHJlY2lzaW9uID0gVFJBQ0tCQUxMX01PVkVNRU5UX1RIUkVTSE9MRDsKKyAgICAgICAgZGV2aWNlLT50cmFja2JhbGwucHJlY2FsY3VsYXRlZC54U2NhbGUgPSAxLjBmIC8gVFJBQ0tCQUxMX01PVkVNRU5UX1RIUkVTSE9MRDsKKyAgICAgICAgZGV2aWNlLT50cmFja2JhbGwucHJlY2FsY3VsYXRlZC55U2NhbGUgPSAxLjBmIC8gVFJBQ0tCQUxMX01PVkVNRU5UX1RIUkVTSE9MRDsKKyAgICB9CisKKyAgICBjb25maWd1cmVEZXZpY2VGb3JDdXJyZW50RGlzcGxheVNpemUoZGV2aWNlKTsKK30KKwordm9pZCBJbnB1dFJlYWRlcjo6Y29uZmlndXJlRGV2aWNlRm9yQ3VycmVudERpc3BsYXlTaXplKElucHV0RGV2aWNlKiBkZXZpY2UpIHsKKyAgICBpZiAoZGV2aWNlLT5pc1RvdWNoU2NyZWVuKCkpIHsKKyAgICAgICAgaWYgKGRldmljZS0+dG91Y2hTY3JlZW4ucGFyYW1ldGVycy54QXhpcy52YWxpZAorICAgICAgICAgICAgICAgICYmIGRldmljZS0+dG91Y2hTY3JlZW4ucGFyYW1ldGVycy55QXhpcy52YWxpZCkgeworICAgICAgICAgICAgZGV2aWNlLT50b3VjaFNjcmVlbi5wcmVjYWxjdWxhdGVkLnhPcmlnaW4gPQorICAgICAgICAgICAgICAgICAgICBkZXZpY2UtPnRvdWNoU2NyZWVuLnBhcmFtZXRlcnMueEF4aXMubWluVmFsdWU7CisgICAgICAgICAgICBkZXZpY2UtPnRvdWNoU2NyZWVuLnByZWNhbGN1bGF0ZWQueU9yaWdpbiA9CisgICAgICAgICAgICAgICAgICAgIGRldmljZS0+dG91Y2hTY3JlZW4ucGFyYW1ldGVycy55QXhpcy5taW5WYWx1ZTsKKworICAgICAgICAgICAgaWYgKG1EaXNwbGF5V2lkdGggPCAwKSB7CisgICAgICAgICAgICAgICAgTE9HRCgiU2tpcHBpbmcgcGFydCBvZiB0b3VjaCBzY3JlZW4gY29uZmlndXJhdGlvbiBzaW5jZSBkaXNwbGF5IHNpemUgaXMgdW5rbm93bi4iKTsKKworICAgICAgICAgICAgICAgIGRldmljZS0+dG91Y2hTY3JlZW4ucHJlY2FsY3VsYXRlZC54U2NhbGUgPSAxLjBmOworICAgICAgICAgICAgICAgIGRldmljZS0+dG91Y2hTY3JlZW4ucHJlY2FsY3VsYXRlZC55U2NhbGUgPSAxLjBmOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBMT0dJKCJEZXZpY2UgY29uZmlndXJlZDogaWQ9MHgleCwgbmFtZT0lcyAoZGlzcGxheSBzaXplIHdhcyBjaGFuZ2VkKSIsIGRldmljZS0+aWQsCisgICAgICAgICAgICAgICAgICAgICAgICBkZXZpY2UtPm5hbWUuc3RyaW5nKCkpOworCisgICAgICAgICAgICAgICAgZGV2aWNlLT50b3VjaFNjcmVlbi5wcmVjYWxjdWxhdGVkLnhTY2FsZSA9CisgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdChtRGlzcGxheVdpZHRoKSAvIGRldmljZS0+dG91Y2hTY3JlZW4ucGFyYW1ldGVycy54QXhpcy5yYW5nZTsKKyAgICAgICAgICAgICAgICBkZXZpY2UtPnRvdWNoU2NyZWVuLnByZWNhbGN1bGF0ZWQueVNjYWxlID0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0KG1EaXNwbGF5SGVpZ2h0KSAvIGRldmljZS0+dG91Y2hTY3JlZW4ucGFyYW1ldGVycy55QXhpcy5yYW5nZTsKKworICAgICAgICAgICAgICAgIGNvbmZpZ3VyZVZpcnR1YWxLZXlzKGRldmljZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBkZXZpY2UtPnRvdWNoU2NyZWVuLnByZWNhbGN1bGF0ZWQueE9yaWdpbiA9IDA7CisgICAgICAgICAgICBkZXZpY2UtPnRvdWNoU2NyZWVuLnByZWNhbGN1bGF0ZWQueFNjYWxlID0gMS4wZjsKKyAgICAgICAgICAgIGRldmljZS0+dG91Y2hTY3JlZW4ucHJlY2FsY3VsYXRlZC55T3JpZ2luID0gMDsKKyAgICAgICAgICAgIGRldmljZS0+dG91Y2hTY3JlZW4ucHJlY2FsY3VsYXRlZC55U2NhbGUgPSAxLjBmOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIElucHV0UmVhZGVyOjpjb25maWd1cmVWaXJ0dWFsS2V5cyhJbnB1dERldmljZSogZGV2aWNlKSB7CisgICAgYXNzZXJ0KGRldmljZS0+dG91Y2hTY3JlZW4ucGFyYW1ldGVycy54QXhpcy52YWxpZAorICAgICAgICAgICAgJiYgZGV2aWNlLT50b3VjaFNjcmVlbi5wYXJhbWV0ZXJzLnlBeGlzLnZhbGlkKTsKKworICAgIGRldmljZS0+dG91Y2hTY3JlZW4udmlydHVhbEtleXMuY2xlYXIoKTsKKworICAgIFZlY3RvcjxJbnB1dFJlYWRlclBvbGljeUludGVyZmFjZTo6VmlydHVhbEtleURlZmluaXRpb24+IHZpcnR1YWxLZXlEZWZpbml0aW9uczsKKyAgICBtUG9saWN5LT5nZXRWaXJ0dWFsS2V5RGVmaW5pdGlvbnMoZGV2aWNlLT5uYW1lLCB2aXJ0dWFsS2V5RGVmaW5pdGlvbnMpOworICAgIGlmICh2aXJ0dWFsS2V5RGVmaW5pdGlvbnMuc2l6ZSgpID09IDApIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGRldmljZS0+dG91Y2hTY3JlZW4udmlydHVhbEtleXMuc2V0Q2FwYWNpdHkodmlydHVhbEtleURlZmluaXRpb25zLnNpemUoKSk7CisKKyAgICBpbnQzMl90IHRvdWNoU2NyZWVuTGVmdCA9IGRldmljZS0+dG91Y2hTY3JlZW4ucGFyYW1ldGVycy54QXhpcy5taW5WYWx1ZTsKKyAgICBpbnQzMl90IHRvdWNoU2NyZWVuVG9wID0gZGV2aWNlLT50b3VjaFNjcmVlbi5wYXJhbWV0ZXJzLnlBeGlzLm1pblZhbHVlOworICAgIGludDMyX3QgdG91Y2hTY3JlZW5XaWR0aCA9IGRldmljZS0+dG91Y2hTY3JlZW4ucGFyYW1ldGVycy54QXhpcy5yYW5nZTsKKyAgICBpbnQzMl90IHRvdWNoU2NyZWVuSGVpZ2h0ID0gZGV2aWNlLT50b3VjaFNjcmVlbi5wYXJhbWV0ZXJzLnlBeGlzLnJhbmdlOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2aXJ0dWFsS2V5RGVmaW5pdGlvbnMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgY29uc3QgSW5wdXRSZWFkZXJQb2xpY3lJbnRlcmZhY2U6OlZpcnR1YWxLZXlEZWZpbml0aW9uJiB2aXJ0dWFsS2V5RGVmaW5pdGlvbiA9CisgICAgICAgICAgICAgICAgdmlydHVhbEtleURlZmluaXRpb25zW2ldOworCisgICAgICAgIGRldmljZS0+dG91Y2hTY3JlZW4udmlydHVhbEtleXMuYWRkKCk7CisgICAgICAgIElucHV0RGV2aWNlOjpWaXJ0dWFsS2V5JiB2aXJ0dWFsS2V5ID0KKyAgICAgICAgICAgICAgICBkZXZpY2UtPnRvdWNoU2NyZWVuLnZpcnR1YWxLZXlzLmVkaXRUb3AoKTsKKworICAgICAgICB2aXJ0dWFsS2V5LnNjYW5Db2RlID0gdmlydHVhbEtleURlZmluaXRpb24uc2NhbkNvZGU7CisgICAgICAgIGludDMyX3Qga2V5Q29kZTsKKyAgICAgICAgdWludDMyX3QgZmxhZ3M7CisgICAgICAgIGlmIChtRXZlbnRIdWItPnNjYW5jb2RlVG9LZXljb2RlKGRldmljZS0+aWQsIHZpcnR1YWxLZXkuc2NhbkNvZGUsCisgICAgICAgICAgICAgICAgJiBrZXlDb2RlLCAmIGZsYWdzKSkgeworICAgICAgICAgICAgTE9HVygiICBWaXJ0dWFsS2V5ICVkOiBjb3VsZCBub3Qgb2J0YWluIGtleSBjb2RlLCBpZ25vcmluZyIsIHZpcnR1YWxLZXkuc2NhbkNvZGUpOworICAgICAgICAgICAgZGV2aWNlLT50b3VjaFNjcmVlbi52aXJ0dWFsS2V5cy5wb3AoKTsgLy8gZHJvcCB0aGUga2V5CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQorCisgICAgICAgIHZpcnR1YWxLZXkua2V5Q29kZSA9IGtleUNvZGU7CisgICAgICAgIHZpcnR1YWxLZXkuZmxhZ3MgPSBmbGFnczsKKworICAgICAgICAvLyBjb252ZXJ0IHRoZSBrZXkgZGVmaW5pdGlvbidzIGRpc3BsYXkgY29vcmRpbmF0ZXMgaW50byB0b3VjaCBjb29yZGluYXRlcyBmb3IgYSBoaXQgYm94CisgICAgICAgIGludDMyX3QgaGFsZldpZHRoID0gdmlydHVhbEtleURlZmluaXRpb24ud2lkdGggLyAyOworICAgICAgICBpbnQzMl90IGhhbGZIZWlnaHQgPSB2aXJ0dWFsS2V5RGVmaW5pdGlvbi5oZWlnaHQgLyAyOworCisgICAgICAgIHZpcnR1YWxLZXkuaGl0TGVmdCA9ICh2aXJ0dWFsS2V5RGVmaW5pdGlvbi5jZW50ZXJYIC0gaGFsZldpZHRoKQorICAgICAgICAgICAgICAgICogdG91Y2hTY3JlZW5XaWR0aCAvIG1EaXNwbGF5V2lkdGggKyB0b3VjaFNjcmVlbkxlZnQ7CisgICAgICAgIHZpcnR1YWxLZXkuaGl0UmlnaHQ9ICh2aXJ0dWFsS2V5RGVmaW5pdGlvbi5jZW50ZXJYICsgaGFsZldpZHRoKQorICAgICAgICAgICAgICAgICogdG91Y2hTY3JlZW5XaWR0aCAvIG1EaXNwbGF5V2lkdGggKyB0b3VjaFNjcmVlbkxlZnQ7CisgICAgICAgIHZpcnR1YWxLZXkuaGl0VG9wID0gKHZpcnR1YWxLZXlEZWZpbml0aW9uLmNlbnRlclkgLSBoYWxmSGVpZ2h0KQorICAgICAgICAgICAgICAgICogdG91Y2hTY3JlZW5IZWlnaHQgLyBtRGlzcGxheUhlaWdodCArIHRvdWNoU2NyZWVuVG9wOworICAgICAgICB2aXJ0dWFsS2V5LmhpdEJvdHRvbSA9ICh2aXJ0dWFsS2V5RGVmaW5pdGlvbi5jZW50ZXJZICsgaGFsZkhlaWdodCkKKyAgICAgICAgICAgICAgICAqIHRvdWNoU2NyZWVuSGVpZ2h0IC8gbURpc3BsYXlIZWlnaHQgKyB0b3VjaFNjcmVlblRvcDsKKworICAgICAgICBMT0dJKCIgIFZpcnR1YWxLZXkgJWQ6IGtleUNvZGU9JWQgaGl0TGVmdD0lZCBoaXRSaWdodD0lZCBoaXRUb3A9JWQgaGl0Qm90dG9tPSVkIiwKKyAgICAgICAgICAgICAgICB2aXJ0dWFsS2V5LnNjYW5Db2RlLCB2aXJ0dWFsS2V5LmtleUNvZGUsCisgICAgICAgICAgICAgICAgdmlydHVhbEtleS5oaXRMZWZ0LCB2aXJ0dWFsS2V5LmhpdFJpZ2h0LCB2aXJ0dWFsS2V5LmhpdFRvcCwgdmlydHVhbEtleS5oaXRCb3R0b20pOworICAgIH0KK30KKwordm9pZCBJbnB1dFJlYWRlcjo6Y29uZmlndXJlQWJzb2x1dGVBeGlzSW5mbyhJbnB1dERldmljZSogZGV2aWNlLAorICAgICAgICBpbnQgYXhpcywgY29uc3QgY2hhciogbmFtZSwgSW5wdXREZXZpY2U6OkFic29sdXRlQXhpc0luZm8qIG91dCkgeworICAgIGlmICghIG1FdmVudEh1Yi0+Z2V0QWJzb2x1dGVJbmZvKGRldmljZS0+aWQsIGF4aXMsCisgICAgICAgICAgICAmIG91dC0+bWluVmFsdWUsICYgb3V0LT5tYXhWYWx1ZSwgJiBvdXQtPmZsYXQsICZvdXQtPmZ1enopKSB7CisgICAgICAgIG91dC0+cmFuZ2UgPSBvdXQtPm1heFZhbHVlIC0gb3V0LT5taW5WYWx1ZTsKKyAgICAgICAgaWYgKG91dC0+cmFuZ2UgIT0gMCkgeworICAgICAgICAgICAgTE9HSSgiICAlczogbWluPSVkIG1heD0lZCBmbGF0PSVkIGZ1eno9JWQiLAorICAgICAgICAgICAgICAgICAgICBuYW1lLCBvdXQtPm1pblZhbHVlLCBvdXQtPm1heFZhbHVlLCBvdXQtPmZsYXQsIG91dC0+ZnV6eik7CisgICAgICAgICAgICBvdXQtPnZhbGlkID0gdHJ1ZTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIG91dC0+dmFsaWQgPSBmYWxzZTsKKyAgICBvdXQtPm1pblZhbHVlID0gMDsKKyAgICBvdXQtPm1heFZhbHVlID0gMDsKKyAgICBvdXQtPmZsYXQgPSAwOworICAgIG91dC0+ZnV6eiA9IDA7CisgICAgb3V0LT5yYW5nZSA9IDA7CisgICAgTE9HSSgiICAlczogdW5rbm93biBheGlzIHZhbHVlcywgbWFya2luZyBhcyBpbnZhbGlkIiwgbmFtZSk7Cit9CisKK3ZvaWQgSW5wdXRSZWFkZXI6OmNvbmZpZ3VyZUV4Y2x1ZGVkRGV2aWNlcygpIHsKKyAgICBWZWN0b3I8U3RyaW5nOD4gZXhjbHVkZWREZXZpY2VOYW1lczsKKyAgICBtUG9saWN5LT5nZXRFeGNsdWRlZERldmljZU5hbWVzKGV4Y2x1ZGVkRGV2aWNlTmFtZXMpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBleGNsdWRlZERldmljZU5hbWVzLnNpemUoKTsgaSsrKSB7CisgICAgICAgIG1FdmVudEh1Yi0+YWRkRXhjbHVkZWREZXZpY2UoZXhjbHVkZWREZXZpY2VOYW1lc1tpXSk7CisgICAgfQorfQorCit2b2lkIElucHV0UmVhZGVyOjpyZXNldEdsb2JhbE1ldGFTdGF0ZSgpIHsKKyAgICBtR2xvYmFsTWV0YVN0YXRlID0gLTE7Cit9CisKK2ludDMyX3QgSW5wdXRSZWFkZXI6Omdsb2JhbE1ldGFTdGF0ZSgpIHsKKyAgICBpZiAobUdsb2JhbE1ldGFTdGF0ZSA9PSAtMSkgeworICAgICAgICBtR2xvYmFsTWV0YVN0YXRlID0gMDsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtRGV2aWNlcy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgSW5wdXREZXZpY2UqIGRldmljZSA9IG1EZXZpY2VzLnZhbHVlQXQoaSk7CisgICAgICAgICAgICBpZiAoZGV2aWNlLT5pc0tleWJvYXJkKCkpIHsKKyAgICAgICAgICAgICAgICBtR2xvYmFsTWV0YVN0YXRlIHw9IGRldmljZS0+a2V5Ym9hcmQuY3VycmVudC5tZXRhU3RhdGU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIG1HbG9iYWxNZXRhU3RhdGU7Cit9CisKK3ZvaWQgSW5wdXRSZWFkZXI6OnVwZGF0ZUV4cG9ydGVkVmlydHVhbEtleVN0YXRlKCkgeworICAgIGludDMyX3Qga2V5Q29kZSA9IC0xLCBzY2FuQ29kZSA9IC0xOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtRGV2aWNlcy5zaXplKCk7IGkrKykgeworICAgICAgICBJbnB1dERldmljZSogZGV2aWNlID0gbURldmljZXMudmFsdWVBdChpKTsKKyAgICAgICAgaWYgKGRldmljZS0+aXNUb3VjaFNjcmVlbigpKSB7CisgICAgICAgICAgICBpZiAoZGV2aWNlLT50b3VjaFNjcmVlbi5jdXJyZW50VmlydHVhbEtleS5zdGF0dXMKKyAgICAgICAgICAgICAgICAgICAgPT0gSW5wdXREZXZpY2U6OlRvdWNoU2NyZWVuU3RhdGU6OkN1cnJlbnRWaXJ0dWFsS2V5U3RhdGU6OlNUQVRVU19ET1dOKSB7CisgICAgICAgICAgICAgICAga2V5Q29kZSA9IGRldmljZS0+dG91Y2hTY3JlZW4uY3VycmVudFZpcnR1YWxLZXkua2V5Q29kZTsKKyAgICAgICAgICAgICAgICBzY2FuQ29kZSA9IGRldmljZS0+dG91Y2hTY3JlZW4uY3VycmVudFZpcnR1YWxLZXkuc2NhbkNvZGU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICB7IC8vIGFjcXVpcmUgZXhwb3J0ZWQgc3RhdGUgbG9jaworICAgICAgICBBdXRvTXV0ZXggX2wobUV4cG9ydGVkU3RhdGVMb2NrKTsKKworICAgICAgICBtRXhwb3J0ZWRWaXJ0dWFsS2V5Q29kZSA9IGtleUNvZGU7CisgICAgICAgIG1FeHBvcnRlZFZpcnR1YWxTY2FuQ29kZSA9IHNjYW5Db2RlOworICAgIH0gLy8gcmVsZWFzZSBleHBvcnRlZCBzdGF0ZSBsb2NrCit9CisKK2Jvb2wgSW5wdXRSZWFkZXI6OmdldEN1cnJlbnRWaXJ0dWFsS2V5KGludDMyX3QqIG91dEtleUNvZGUsIGludDMyX3QqIG91dFNjYW5Db2RlKSBjb25zdCB7CisgICAgeyAvLyBhY3F1aXJlIGV4cG9ydGVkIHN0YXRlIGxvY2sKKyAgICAgICAgQXV0b011dGV4IF9sKG1FeHBvcnRlZFN0YXRlTG9jayk7CisKKyAgICAgICAgKm91dEtleUNvZGUgPSBtRXhwb3J0ZWRWaXJ0dWFsS2V5Q29kZTsKKyAgICAgICAgKm91dFNjYW5Db2RlID0gbUV4cG9ydGVkVmlydHVhbFNjYW5Db2RlOworICAgICAgICByZXR1cm4gbUV4cG9ydGVkVmlydHVhbEtleUNvZGUgIT0gLTE7CisgICAgfSAvLyByZWxlYXNlIGV4cG9ydGVkIHN0YXRlIGxvY2sKK30KKwordm9pZCBJbnB1dFJlYWRlcjo6dXBkYXRlRXhwb3J0ZWRJbnB1dENvbmZpZ3VyYXRpb24oKSB7CisgICAgaW50MzJfdCB0b3VjaFNjcmVlbkNvbmZpZyA9IElucHV0Q29uZmlndXJhdGlvbjo6VE9VQ0hTQ1JFRU5fTk9UT1VDSDsKKyAgICBpbnQzMl90IGtleWJvYXJkQ29uZmlnID0gSW5wdXRDb25maWd1cmF0aW9uOjpLRVlCT0FSRF9OT0tFWVM7CisgICAgaW50MzJfdCBuYXZpZ2F0aW9uQ29uZmlnID0gSW5wdXRDb25maWd1cmF0aW9uOjpOQVZJR0FUSU9OX05PTkFWOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtRGV2aWNlcy5zaXplKCk7IGkrKykgeworICAgICAgICBJbnB1dERldmljZSogZGV2aWNlID0gbURldmljZXMudmFsdWVBdChpKTsKKyAgICAgICAgaW50MzJfdCBkZXZpY2VDbGFzc2VzID0gZGV2aWNlLT5jbGFzc2VzOworCisgICAgICAgIGlmIChkZXZpY2VDbGFzc2VzICYgSU5QVVRfREVWSUNFX0NMQVNTX1RPVUNIU0NSRUVOKSB7CisgICAgICAgICAgICB0b3VjaFNjcmVlbkNvbmZpZyA9IElucHV0Q29uZmlndXJhdGlvbjo6VE9VQ0hTQ1JFRU5fRklOR0VSOworICAgICAgICB9CisgICAgICAgIGlmIChkZXZpY2VDbGFzc2VzICYgSU5QVVRfREVWSUNFX0NMQVNTX0FMUEhBS0VZKSB7CisgICAgICAgICAgICBrZXlib2FyZENvbmZpZyA9IElucHV0Q29uZmlndXJhdGlvbjo6S0VZQk9BUkRfUVdFUlRZOworICAgICAgICB9CisgICAgICAgIGlmIChkZXZpY2VDbGFzc2VzICYgSU5QVVRfREVWSUNFX0NMQVNTX1RSQUNLQkFMTCkgeworICAgICAgICAgICAgbmF2aWdhdGlvbkNvbmZpZyA9IElucHV0Q29uZmlndXJhdGlvbjo6TkFWSUdBVElPTl9UUkFDS0JBTEw7CisgICAgICAgIH0gZWxzZSBpZiAoZGV2aWNlQ2xhc3NlcyAmIElOUFVUX0RFVklDRV9DTEFTU19EUEFEKSB7CisgICAgICAgICAgICBuYXZpZ2F0aW9uQ29uZmlnID0gSW5wdXRDb25maWd1cmF0aW9uOjpOQVZJR0FUSU9OX0RQQUQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB7IC8vIGFjcXVpcmUgZXhwb3J0ZWQgc3RhdGUgbG9jaworICAgICAgICBBdXRvTXV0ZXggX2wobUV4cG9ydGVkU3RhdGVMb2NrKTsKKworICAgICAgICBtRXhwb3J0ZWRJbnB1dENvbmZpZ3VyYXRpb24udG91Y2hTY3JlZW4gPSB0b3VjaFNjcmVlbkNvbmZpZzsKKyAgICAgICAgbUV4cG9ydGVkSW5wdXRDb25maWd1cmF0aW9uLmtleWJvYXJkID0ga2V5Ym9hcmRDb25maWc7CisgICAgICAgIG1FeHBvcnRlZElucHV0Q29uZmlndXJhdGlvbi5uYXZpZ2F0aW9uID0gbmF2aWdhdGlvbkNvbmZpZzsKKyAgICB9IC8vIHJlbGVhc2UgZXhwb3J0ZWQgc3RhdGUgbG9jaworfQorCit2b2lkIElucHV0UmVhZGVyOjpnZXRDdXJyZW50SW5wdXRDb25maWd1cmF0aW9uKElucHV0Q29uZmlndXJhdGlvbiogb3V0Q29uZmlndXJhdGlvbikgY29uc3QgeworICAgIHsgLy8gYWNxdWlyZSBleHBvcnRlZCBzdGF0ZSBsb2NrCisgICAgICAgIEF1dG9NdXRleCBfbChtRXhwb3J0ZWRTdGF0ZUxvY2spOworCisgICAgICAgICpvdXRDb25maWd1cmF0aW9uID0gbUV4cG9ydGVkSW5wdXRDb25maWd1cmF0aW9uOworICAgIH0gLy8gcmVsZWFzZSBleHBvcnRlZCBzdGF0ZSBsb2NrCit9CisKK2ludDMyX3QgSW5wdXRSZWFkZXI6OmdldEN1cnJlbnRTY2FuQ29kZVN0YXRlKGludDMyX3QgZGV2aWNlSWQsIGludDMyX3QgZGV2aWNlQ2xhc3NlcywKKyAgICAgICAgaW50MzJfdCBzY2FuQ29kZSkgY29uc3QgeworICAgIHsgLy8gYWNxdWlyZSBleHBvcnRlZCBzdGF0ZSBsb2NrCisgICAgICAgIEF1dG9NdXRleCBfbChtRXhwb3J0ZWRTdGF0ZUxvY2spOworCisgICAgICAgIGlmIChtRXhwb3J0ZWRWaXJ0dWFsU2NhbkNvZGUgPT0gc2NhbkNvZGUpIHsKKyAgICAgICAgICAgIHJldHVybiBLRVlfU1RBVEVfVklSVFVBTDsKKyAgICAgICAgfQorICAgIH0gLy8gcmVsZWFzZSBleHBvcnRlZCBzdGF0ZSBsb2NrCisKKyAgICByZXR1cm4gbUV2ZW50SHViLT5nZXRTY2FuQ29kZVN0YXRlKGRldmljZUlkLCBkZXZpY2VDbGFzc2VzLCBzY2FuQ29kZSk7Cit9CisKK2ludDMyX3QgSW5wdXRSZWFkZXI6OmdldEN1cnJlbnRLZXlDb2RlU3RhdGUoaW50MzJfdCBkZXZpY2VJZCwgaW50MzJfdCBkZXZpY2VDbGFzc2VzLAorICAgICAgICBpbnQzMl90IGtleUNvZGUpIGNvbnN0IHsKKyAgICB7IC8vIGFjcXVpcmUgZXhwb3J0ZWQgc3RhdGUgbG9jaworICAgICAgICBBdXRvTXV0ZXggX2wobUV4cG9ydGVkU3RhdGVMb2NrKTsKKworICAgICAgICBpZiAobUV4cG9ydGVkVmlydHVhbEtleUNvZGUgPT0ga2V5Q29kZSkgeworICAgICAgICAgICAgcmV0dXJuIEtFWV9TVEFURV9WSVJUVUFMOworICAgICAgICB9CisgICAgfSAvLyByZWxlYXNlIGV4cG9ydGVkIHN0YXRlIGxvY2sKKworICAgIHJldHVybiBtRXZlbnRIdWItPmdldEtleUNvZGVTdGF0ZShkZXZpY2VJZCwgZGV2aWNlQ2xhc3Nlcywga2V5Q29kZSk7Cit9CisKK2ludDMyX3QgSW5wdXRSZWFkZXI6OmdldEN1cnJlbnRTd2l0Y2hTdGF0ZShpbnQzMl90IGRldmljZUlkLCBpbnQzMl90IGRldmljZUNsYXNzZXMsCisgICAgICAgIGludDMyX3Qgc3cpIGNvbnN0IHsKKyAgICByZXR1cm4gbUV2ZW50SHViLT5nZXRTd2l0Y2hTdGF0ZShkZXZpY2VJZCwgZGV2aWNlQ2xhc3Nlcywgc3cpOworfQorCitib29sIElucHV0UmVhZGVyOjpoYXNLZXlzKHNpemVfdCBudW1Db2RlcywgY29uc3QgaW50MzJfdCoga2V5Q29kZXMsIHVpbnQ4X3QqIG91dEZsYWdzKSBjb25zdCB7CisgICAgcmV0dXJuIG1FdmVudEh1Yi0+aGFzS2V5cyhudW1Db2Rlcywga2V5Q29kZXMsIG91dEZsYWdzKTsKK30KKworCisvLyAtLS0gSW5wdXRSZWFkZXJUaHJlYWQgLS0tCisKK0lucHV0UmVhZGVyVGhyZWFkOjpJbnB1dFJlYWRlclRocmVhZChjb25zdCBzcDxJbnB1dFJlYWRlckludGVyZmFjZT4mIHJlYWRlcikgOgorICAgICAgICBUaHJlYWQoLypjYW5DYWxsSmF2YSovIHRydWUpLCBtUmVhZGVyKHJlYWRlcikgeworfQorCitJbnB1dFJlYWRlclRocmVhZDo6fklucHV0UmVhZGVyVGhyZWFkKCkgeworfQorCitib29sIElucHV0UmVhZGVyVGhyZWFkOjp0aHJlYWRMb29wKCkgeworICAgIG1SZWFkZXItPmxvb3BPbmNlKCk7CisgICAgcmV0dXJuIHRydWU7Cit9CisKK30gLy8gbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL2xpYnMvdWkvSW5wdXRUcmFuc3BvcnQuY3BwIGIvbGlicy91aS9JbnB1dFRyYW5zcG9ydC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjVkZWYzYwotLS0gL2Rldi9udWxsCisrKyBiL2xpYnMvdWkvSW5wdXRUcmFuc3BvcnQuY3BwCkBAIC0wLDAgKzEsNzExIEBACisvLworLy8gQ29weXJpZ2h0IDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorLy8KKy8vIFByb3ZpZGVzIGEgc2hhcmVkIG1lbW9yeSB0cmFuc3BvcnQgZm9yIGlucHV0IGV2ZW50cy4KKy8vCisjZGVmaW5lIExPR19UQUcgIklucHV0VHJhbnNwb3J0IgorCisvLyNkZWZpbmUgTE9HX05ERUJVRyAwCisKKy8vIExvZyBkZWJ1ZyBtZXNzYWdlcyBhYm91dCBjaGFubmVsIHNpZ25hbGxpbmcgKHNlbmQgc2lnbmFsLCByZWNlaXZlIHNpZ25hbCkKKyNkZWZpbmUgREVCVUdfQ0hBTk5FTF9TSUdOQUxTIDAKKworLy8gTG9nIGRlYnVnIG1lc3NhZ2VzIHdoZW5ldmVyIElucHV0Q2hhbm5lbCBvYmplY3RzIGFyZSBjcmVhdGVkL2Rlc3Ryb3llZAorI2RlZmluZSBERUJVR19DSEFOTkVMX0xJRkVDWUNMRSAwCisKKy8vIExvZyBkZWJ1ZyBtZXNzYWdlcyBhYm91dCB0cmFuc3BvcnQgYWN0aW9ucyAoaW5pdGlhbGl6ZSwgcmVzZXQsIHB1Ymxpc2gsIC4uLikKKyNkZWZpbmUgREVCVUdfVFJBTlNQT1JUX0FDVElPTlMgMAorCisKKyNpbmNsdWRlIDxjdXRpbHMvYXNobWVtLmg+CisjaW5jbHVkZSA8Y3V0aWxzL2xvZy5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKyNpbmNsdWRlIDxzeXMvbW1hbi5oPgorI2luY2x1ZGUgPHVpL0lucHV0VHJhbnNwb3J0Lmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworLy8gTXVzdCBiZSBhdCBsZWFzdCBzaXplb2YoSW5wdXRNZXNzYWdlKSArIHN1ZmZpY2llbnQgc3BhY2UgZm9yIHBvaW50ZXIgZGF0YQorc3RhdGljIGNvbnN0IGludCBERUZBVUxUX01FU1NBR0VfQlVGRkVSX1NJWkUgPSAxNjM4NDsKKworLy8gU2lnbmFsIHNlbnQgYnkgdGhlIHByb2R1Y2VyIHRvIHRoZSBjb25zdW1lciB0byBpbmZvcm0gaXQgdGhhdCBhIG5ldyBtZXNzYWdlIGlzCisvLyBhdmFpbGFibGUgdG8gYmUgY29uc3VtZWQgaW4gdGhlIHNoYXJlZCBtZW1vcnkgYnVmZmVyLgorc3RhdGljIGNvbnN0IGNoYXIgSU5QVVRfU0lHTkFMX0RJU1BBVENIID0gJ0QnOworCisvLyBTaWduYWwgc2VudCBieSB0aGUgY29uc3VtZXIgdG8gdGhlIHByb2R1Y2VyIHRvIGluZm9ybSBpdCB0aGF0IGl0IGhhcyBmaW5pc2hlZAorLy8gY29uc3VtaW5nIHRoZSBtb3N0IHJlY2VudCBtZXNzYWdlLgorc3RhdGljIGNvbnN0IGNoYXIgSU5QVVRfU0lHTkFMX0ZJTklTSEVEID0gJ2YnOworCisKKy8vIC0tLSBJbnB1dENoYW5uZWwgLS0tCisKK0lucHV0Q2hhbm5lbDo6SW5wdXRDaGFubmVsKGNvbnN0IFN0cmluZzgmIG5hbWUsIGludDMyX3QgYXNobWVtRmQsIGludDMyX3QgcmVjZWl2ZVBpcGVGZCwKKyAgICAgICAgaW50MzJfdCBzZW5kUGlwZUZkKSA6CisgICAgICAgIG1OYW1lKG5hbWUpLCBtQXNobWVtRmQoYXNobWVtRmQpLCBtUmVjZWl2ZVBpcGVGZChyZWNlaXZlUGlwZUZkKSwgbVNlbmRQaXBlRmQoc2VuZFBpcGVGZCkgeworI2lmIERFQlVHX0NIQU5ORUxfTElGRUNZQ0xFCisgICAgTE9HRCgiSW5wdXQgY2hhbm5lbCBjb25zdHJ1Y3RlZDogbmFtZT0nJXMnLCBhc2htZW1GZD0lZCwgcmVjZWl2ZVBpcGVGZD0lZCwgc2VuZFBpcGVGZD0lZCIsCisgICAgICAgICAgICBtTmFtZS5zdHJpbmcoKSwgYXNobWVtRmQsIHJlY2VpdmVQaXBlRmQsIHNlbmRQaXBlRmQpOworI2VuZGlmCisKKyAgICBpbnQgcmVzdWx0ID0gZmNudGwobVJlY2VpdmVQaXBlRmQsIEZfU0VURkwsIE9fTk9OQkxPQ0spOworICAgIExPR19BTFdBWVNfRkFUQUxfSUYocmVzdWx0ICE9IDAsICJjaGFubmVsICclcycgfiBDb3VsZCBub3QgbWFrZSByZWNlaXZlIHBpcGUgIgorICAgICAgICAgICAgIm5vbi1ibG9ja2luZy4gIGVycm5vPSVkIiwgbU5hbWUuc3RyaW5nKCksIGVycm5vKTsKKworICAgIHJlc3VsdCA9IGZjbnRsKG1TZW5kUGlwZUZkLCBGX1NFVEZMLCBPX05PTkJMT0NLKTsKKyAgICBMT0dfQUxXQVlTX0ZBVEFMX0lGKHJlc3VsdCAhPSAwLCAiY2hhbm5lbCAnJXMnIH4gQ291bGQgbm90IG1ha2Ugc2VuZCBwaXBlICIKKyAgICAgICAgICAgICJub24tYmxvY2tpbmcuICBlcnJubz0lZCIsIG1OYW1lLnN0cmluZygpLCBlcnJubyk7Cit9CisKK0lucHV0Q2hhbm5lbDo6fklucHV0Q2hhbm5lbCgpIHsKKyNpZiBERUJVR19DSEFOTkVMX0xJRkVDWUNMRQorICAgIExPR0QoIklucHV0IGNoYW5uZWwgZGVzdHJveWVkOiBuYW1lPSclcycsIGFzaG1lbUZkPSVkLCByZWNlaXZlUGlwZUZkPSVkLCBzZW5kUGlwZUZkPSVkIiwKKyAgICAgICAgICAgIG1OYW1lLnN0cmluZygpLCBtQXNobWVtRmQsIG1SZWNlaXZlUGlwZUZkLCBtU2VuZFBpcGVGZCk7CisjZW5kaWYKKworICAgIDo6Y2xvc2UobUFzaG1lbUZkKTsKKyAgICA6OmNsb3NlKG1SZWNlaXZlUGlwZUZkKTsKKyAgICA6OmNsb3NlKG1TZW5kUGlwZUZkKTsKK30KKworc3RhdHVzX3QgSW5wdXRDaGFubmVsOjpvcGVuSW5wdXRDaGFubmVsUGFpcihjb25zdCBTdHJpbmc4JiBuYW1lLAorICAgICAgICBzcDxJbnB1dENoYW5uZWw+JiBvdXRTZXJ2ZXJDaGFubmVsLCBzcDxJbnB1dENoYW5uZWw+JiBvdXRDbGllbnRDaGFubmVsKSB7CisgICAgc3RhdHVzX3QgcmVzdWx0OworCisgICAgaW50IHNlcnZlckFzaG1lbUZkID0gYXNobWVtX2NyZWF0ZV9yZWdpb24obmFtZS5zdHJpbmcoKSwgREVGQVVMVF9NRVNTQUdFX0JVRkZFUl9TSVpFKTsKKyAgICBpZiAoc2VydmVyQXNobWVtRmQgPCAwKSB7CisgICAgICAgIHJlc3VsdCA9IC1lcnJubzsKKyAgICAgICAgTE9HRSgiY2hhbm5lbCAnJXMnIH4gQ291bGQgbm90IGNyZWF0ZSBzaGFyZWQgbWVtb3J5IHJlZ2lvbi4gZXJybm89JWQiLAorICAgICAgICAgICAgICAgIG5hbWUuc3RyaW5nKCksIGVycm5vKTsKKyAgICB9IGVsc2UgeworICAgICAgICByZXN1bHQgPSBhc2htZW1fc2V0X3Byb3RfcmVnaW9uKHNlcnZlckFzaG1lbUZkLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFKTsKKyAgICAgICAgaWYgKHJlc3VsdCA8IDApIHsKKyAgICAgICAgICAgIExPR0UoImNoYW5uZWwgJyVzJyB+IEVycm9yICVkIHRyeWluZyB0byBzZXQgcHJvdGVjdGlvbiBvZiBhc2htZW0gZmQgJWQuIiwKKyAgICAgICAgICAgICAgICAgICAgbmFtZS5zdHJpbmcoKSwgcmVzdWx0LCBzZXJ2ZXJBc2htZW1GZCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBEdXAgdGhlIGZpbGUgZGVzY3JpcHRvciBiZWNhdXNlIHRoZSBzZXJ2ZXIgYW5kIGNsaWVudCBpbnB1dCBjaGFubmVsIG9iamVjdHMgdGhhdAorICAgICAgICAgICAgLy8gYXJlIHJldHVybmVkIG1heSBoYXZlIGRpZmZlcmVudCBsaWZldGltZXMgYnV0IHRoZXkgc2hhcmUgdGhlIHNhbWUgc2hhcmVkIG1lbW9yeSByZWdpb24uCisgICAgICAgICAgICBpbnQgY2xpZW50QXNobWVtRmQ7CisgICAgICAgICAgICBjbGllbnRBc2htZW1GZCA9IGR1cChzZXJ2ZXJBc2htZW1GZCk7CisgICAgICAgICAgICBpZiAoY2xpZW50QXNobWVtRmQgPCAwKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gLWVycm5vOworICAgICAgICAgICAgICAgIExPR0UoImNoYW5uZWwgJyVzJyB+IENvdWxkIG5vdCBkdXAoKSBzaGFyZWQgbWVtb3J5IHJlZ2lvbiBmZC4gZXJybm89JWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZS5zdHJpbmcoKSwgZXJybm8pOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpbnQgZm9yd2FyZFsyXTsKKyAgICAgICAgICAgICAgICBpZiAocGlwZShmb3J3YXJkKSkgeworICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSAtZXJybm87CisgICAgICAgICAgICAgICAgICAgIExPR0UoImNoYW5uZWwgJyVzJyB+IENvdWxkIG5vdCBjcmVhdGUgZm9yd2FyZCBwaXBlLiAgZXJybm89JWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUuc3RyaW5nKCksIGVycm5vKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpbnQgcmV2ZXJzZVsyXTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHBpcGUocmV2ZXJzZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IC1lcnJubzsKKyAgICAgICAgICAgICAgICAgICAgICAgIExPR0UoImNoYW5uZWwgJyVzJyB+IENvdWxkIG5vdCBjcmVhdGUgcmV2ZXJzZSBwaXBlLiAgZXJybm89JWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLnN0cmluZygpLCBlcnJubyk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmc4IHNlcnZlckNoYW5uZWxOYW1lID0gbmFtZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlckNoYW5uZWxOYW1lLmFwcGVuZCgiIChzZXJ2ZXIpIik7CisgICAgICAgICAgICAgICAgICAgICAgICBvdXRTZXJ2ZXJDaGFubmVsID0gbmV3IElucHV0Q2hhbm5lbChzZXJ2ZXJDaGFubmVsTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyQXNobWVtRmQsIHJldmVyc2VbMF0sIGZvcndhcmRbMV0pOworCisgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmc4IGNsaWVudENoYW5uZWxOYW1lID0gbmFtZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudENoYW5uZWxOYW1lLmFwcGVuZCgiIChjbGllbnQpIik7CisgICAgICAgICAgICAgICAgICAgICAgICBvdXRDbGllbnRDaGFubmVsID0gbmV3IElucHV0Q2hhbm5lbChjbGllbnRDaGFubmVsTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50QXNobWVtRmQsIGZvcndhcmRbMF0sIHJldmVyc2VbMV0pOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE9LOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIDo6Y2xvc2UoZm9yd2FyZFswXSk7CisgICAgICAgICAgICAgICAgICAgIDo6Y2xvc2UoZm9yd2FyZFsxXSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIDo6Y2xvc2UoY2xpZW50QXNobWVtRmQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIDo6Y2xvc2Uoc2VydmVyQXNobWVtRmQpOworICAgIH0KKworICAgIG91dFNlcnZlckNoYW5uZWwuY2xlYXIoKTsKKyAgICBvdXRDbGllbnRDaGFubmVsLmNsZWFyKCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdHVzX3QgSW5wdXRDaGFubmVsOjpzZW5kU2lnbmFsKGNoYXIgc2lnbmFsKSB7CisgICAgc3NpemVfdCBuV3JpdGUgPSA6OndyaXRlKG1TZW5kUGlwZUZkLCAmIHNpZ25hbCwgMSk7CisKKyAgICBpZiAobldyaXRlID09IDEpIHsKKyNpZiBERUJVR19DSEFOTkVMX1NJR05BTFMKKyAgICAgICAgTE9HRCgiY2hhbm5lbCAnJXMnIH4gc2VudCBzaWduYWwgJyVjJyIsIG1OYW1lLnN0cmluZygpLCBzaWduYWwpOworI2VuZGlmCisgICAgICAgIHJldHVybiBPSzsKKyAgICB9CisKKyNpZiBERUJVR19DSEFOTkVMX1NJR05BTFMKKyAgICBMT0dEKCJjaGFubmVsICclcycgfiBlcnJvciBzZW5kaW5nIHNpZ25hbCAnJWMnLCBlcnJubz0lZCIsIG1OYW1lLnN0cmluZygpLCBzaWduYWwsIGVycm5vKTsKKyNlbmRpZgorICAgIHJldHVybiAtZXJybm87Cit9CisKK3N0YXR1c190IElucHV0Q2hhbm5lbDo6cmVjZWl2ZVNpZ25hbChjaGFyKiBvdXRTaWduYWwpIHsKKyAgICBzc2l6ZV90IG5SZWFkID0gOjpyZWFkKG1SZWNlaXZlUGlwZUZkLCBvdXRTaWduYWwsIDEpOworICAgIGlmIChuUmVhZCA9PSAxKSB7CisjaWYgREVCVUdfQ0hBTk5FTF9TSUdOQUxTCisgICAgICAgIExPR0QoImNoYW5uZWwgJyVzJyB+IHJlY2VpdmVkIHNpZ25hbCAnJWMnIiwgbU5hbWUuc3RyaW5nKCksICpvdXRTaWduYWwpOworI2VuZGlmCisgICAgICAgIHJldHVybiBPSzsKKyAgICB9CisKKyAgICBpZiAoblJlYWQgPT0gMCkgeyAvLyBjaGVjayBmb3IgRU9GCisjaWYgREVCVUdfQ0hBTk5FTF9TSUdOQUxTCisgICAgICAgIExPR0QoImNoYW5uZWwgJyVzJyB+IHJlY2VpdmUgc2lnbmFsIGZhaWxlZCBiZWNhdXNlIHBlZXIgd2FzIGNsb3NlZCIsIG1OYW1lLnN0cmluZygpKTsKKyNlbmRpZgorICAgICAgICByZXR1cm4gREVBRF9PQkpFQ1Q7CisgICAgfQorCisgICAgaWYgKGVycm5vID09IEVBR0FJTikgeworI2lmIERFQlVHX0NIQU5ORUxfU0lHTkFMUworICAgICAgICBMT0dEKCJjaGFubmVsICclcycgfiByZWNlaXZlIHNpZ25hbCBmYWlsZWQgYmVjYXVzZSBubyBzaWduYWwgYXZhaWxhYmxlIiwgbU5hbWUuc3RyaW5nKCkpOworI2VuZGlmCisgICAgICAgIHJldHVybiBXT1VMRF9CTE9DSzsKKyAgICB9CisKKyNpZiBERUJVR19DSEFOTkVMX1NJR05BTFMKKyAgICBMT0dEKCJjaGFubmVsICclcycgfiByZWNlaXZlIHNpZ25hbCBmYWlsZWQsIGVycm5vPSVkIiwgbU5hbWUuc3RyaW5nKCksIGVycm5vKTsKKyNlbmRpZgorICAgIHJldHVybiAtZXJybm87Cit9CisKKworLy8gLS0tIElucHV0UHVibGlzaGVyIC0tLQorCitJbnB1dFB1Ymxpc2hlcjo6SW5wdXRQdWJsaXNoZXIoY29uc3Qgc3A8SW5wdXRDaGFubmVsPiYgY2hhbm5lbCkgOgorICAgICAgICBtQ2hhbm5lbChjaGFubmVsKSwgbVNoYXJlZE1lc3NhZ2UoTlVMTCksCisgICAgICAgIG1QaW5uZWQoZmFsc2UpLCBtU2VtYXBob3JlSW5pdGlhbGl6ZWQoZmFsc2UpLCBtV2FzRGlzcGF0Y2hlZChmYWxzZSksCisgICAgICAgIG1Nb3Rpb25FdmVudFNhbXBsZURhdGFUYWlsKE5VTEwpIHsKK30KKworSW5wdXRQdWJsaXNoZXI6On5JbnB1dFB1Ymxpc2hlcigpIHsKKyAgICByZXNldCgpOworCisgICAgaWYgKG1TaGFyZWRNZXNzYWdlKSB7CisgICAgICAgIG11bm1hcChtU2hhcmVkTWVzc2FnZSwgbUFzaG1lbVNpemUpOworICAgIH0KK30KKworc3RhdHVzX3QgSW5wdXRQdWJsaXNoZXI6OmluaXRpYWxpemUoKSB7CisjaWYgREVCVUdfVFJBTlNQT1JUX0FDVElPTlMKKyAgICBMT0dEKCJjaGFubmVsICclcycgcHVibGlzaGVyIH4gaW5pdGlhbGl6ZSIsCisgICAgICAgICAgICBtQ2hhbm5lbC0+Z2V0TmFtZSgpLnN0cmluZygpKTsKKyNlbmRpZgorCisgICAgaW50IGFzaG1lbUZkID0gbUNoYW5uZWwtPmdldEFzaG1lbUZkKCk7CisgICAgaW50IHJlc3VsdCA9IGFzaG1lbV9nZXRfc2l6ZV9yZWdpb24oYXNobWVtRmQpOworICAgIGlmIChyZXN1bHQgPCAwKSB7CisgICAgICAgIExPR0UoImNoYW5uZWwgJyVzJyBwdWJsaXNoZXIgfiBFcnJvciAlZCBnZXR0aW5nIHNpemUgb2YgYXNobWVtIGZkICVkLiIsCisgICAgICAgICAgICAgICAgbUNoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKSwgcmVzdWx0LCBhc2htZW1GZCk7CisgICAgICAgIHJldHVybiBVTktOT1dOX0VSUk9SOworICAgIH0KKyAgICBtQXNobWVtU2l6ZSA9IChzaXplX3QpIHJlc3VsdDsKKworICAgIG1TaGFyZWRNZXNzYWdlID0gc3RhdGljX2Nhc3Q8SW5wdXRNZXNzYWdlKj4obW1hcChOVUxMLCBtQXNobWVtU2l6ZSwKKyAgICAgICAgICAgIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsIE1BUF9TSEFSRUQsIGFzaG1lbUZkLCAwKSk7CisgICAgaWYgKCEgbVNoYXJlZE1lc3NhZ2UpIHsKKyAgICAgICAgTE9HRSgiY2hhbm5lbCAnJXMnIHB1Ymxpc2hlciB+IG1tYXAgZmFpbGVkIG9uIGFzaG1lbSBmZCAlZC4iLAorICAgICAgICAgICAgICAgIG1DaGFubmVsLT5nZXROYW1lKCkuc3RyaW5nKCksIGFzaG1lbUZkKTsKKyAgICAgICAgcmV0dXJuIE5PX01FTU9SWTsKKyAgICB9CisKKyAgICBtUGlubmVkID0gdHJ1ZTsKKyAgICBtU2hhcmVkTWVzc2FnZS0+Y29uc3VtZWQgPSBmYWxzZTsKKworICAgIHJldHVybiByZXNldCgpOworfQorCitzdGF0dXNfdCBJbnB1dFB1Ymxpc2hlcjo6cmVzZXQoKSB7CisjaWYgREVCVUdfVFJBTlNQT1JUX0FDVElPTlMKKyAgICBMT0dEKCJjaGFubmVsICclcycgcHVibGlzaGVyIH4gcmVzZXQiLAorICAgICAgICBtQ2hhbm5lbC0+Z2V0TmFtZSgpLnN0cmluZygpKTsKKyNlbmRpZgorCisgICAgaWYgKG1QaW5uZWQpIHsKKyAgICAgICAgLy8gRGVzdHJveSB0aGUgc2VtYXBob3JlIHNpbmNlIHdlIGFyZSBhYm91dCB0byB1bnBpbiB0aGUgbWVtb3J5IHJlZ2lvbiB0aGF0IGNvbnRhaW5zIGl0LgorICAgICAgICBpbnQgcmVzdWx0OworICAgICAgICBpZiAobVNlbWFwaG9yZUluaXRpYWxpemVkKSB7CisgICAgICAgICAgICBpZiAobVNoYXJlZE1lc3NhZ2UtPmNvbnN1bWVkKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gc2VtX3Bvc3QoJiBtU2hhcmVkTWVzc2FnZS0+c2VtYXBob3JlKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0IDwgMCkgeworICAgICAgICAgICAgICAgICAgICBMT0dFKCJjaGFubmVsICclcycgcHVibGlzaGVyIH4gRXJyb3IgJWQgaW4gc2VtX3Bvc3QuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQ2hhbm5lbC0+Z2V0TmFtZSgpLnN0cmluZygpLCBlcnJubyk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBVTktOT1dOX0VSUk9SOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmVzdWx0ID0gc2VtX2Rlc3Ryb3koJiBtU2hhcmVkTWVzc2FnZS0+c2VtYXBob3JlKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQgPCAwKSB7CisgICAgICAgICAgICAgICAgTE9HRSgiY2hhbm5lbCAnJXMnIHB1Ymxpc2hlciB+IEVycm9yICVkIGluIHNlbV9kZXN0cm95LiIsCisgICAgICAgICAgICAgICAgICAgICAgICBtQ2hhbm5lbC0+Z2V0TmFtZSgpLnN0cmluZygpLCBlcnJubyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFVOS05PV05fRVJST1I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1TZW1hcGhvcmVJbml0aWFsaXplZCA9IGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgLy8gVW5waW4gdGhlIHJlZ2lvbiBzaW5jZSB3ZSBubyBsb25nZXIgY2FyZSBhYm91dCBpdHMgY29udGVudHMuCisgICAgICAgIGludCBhc2htZW1GZCA9IG1DaGFubmVsLT5nZXRBc2htZW1GZCgpOworICAgICAgICByZXN1bHQgPSBhc2htZW1fdW5waW5fcmVnaW9uKGFzaG1lbUZkLCAwLCAwKTsKKyAgICAgICAgaWYgKHJlc3VsdCA8IDApIHsKKyAgICAgICAgICAgIExPR0UoImNoYW5uZWwgJyVzJyBwdWJsaXNoZXIgfiBFcnJvciAlZCB1bnBpbm5pbmcgYXNobWVtIGZkICVkLiIsCisgICAgICAgICAgICAgICAgICAgIG1DaGFubmVsLT5nZXROYW1lKCkuc3RyaW5nKCksIHJlc3VsdCwgYXNobWVtRmQpOworICAgICAgICAgICAgcmV0dXJuIFVOS05PV05fRVJST1I7CisgICAgICAgIH0KKworICAgICAgICBtUGlubmVkID0gZmFsc2U7CisgICAgfQorCisgICAgbU1vdGlvbkV2ZW50U2FtcGxlRGF0YVRhaWwgPSBOVUxMOworICAgIG1XYXNEaXNwYXRjaGVkID0gZmFsc2U7CisgICAgcmV0dXJuIE9LOworfQorCitzdGF0dXNfdCBJbnB1dFB1Ymxpc2hlcjo6cHVibGlzaElucHV0RXZlbnQoCisgICAgICAgIGludDMyX3QgdHlwZSwKKyAgICAgICAgaW50MzJfdCBkZXZpY2VJZCwKKyAgICAgICAgaW50MzJfdCBuYXR1cmUpIHsKKyAgICBpZiAobVBpbm5lZCkgeworICAgICAgICBMT0dFKCJjaGFubmVsICclcycgcHVibGlzaGVyIH4gQXR0ZW1wdGVkIHRvIHB1Ymxpc2ggYSBuZXcgZXZlbnQgYnV0IHB1Ymxpc2hlciBoYXMgIgorICAgICAgICAgICAgICAgICJub3QgeWV0IGJlZW4gcmVzZXQuIiwgbUNoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKSk7CisgICAgICAgIHJldHVybiBJTlZBTElEX09QRVJBVElPTjsKKyAgICB9CisKKyAgICAvLyBQaW4gdGhlIHJlZ2lvbi4KKyAgICAvLyBXZSBkbyBub3QgY2hlY2sgZm9yIEFTSE1FTV9OT1RfUFVSR0VEIGJlY2F1c2Ugd2UgZG9uJ3QgY2FyZSBhYm91dCB0aGUgcHJldmlvdXMKKyAgICAvLyBjb250ZW50cyBvZiB0aGUgYnVmZmVyIHNvIGl0IGRvZXMgbm90IG1hdHRlciB3aGV0aGVyIGl0IHdhcyBwdXJnZWQgaW4gdGhlIG1lYW50aW1lLgorICAgIGludCBhc2htZW1GZCA9IG1DaGFubmVsLT5nZXRBc2htZW1GZCgpOworICAgIGludCByZXN1bHQgPSBhc2htZW1fcGluX3JlZ2lvbihhc2htZW1GZCwgMCwgMCk7CisgICAgaWYgKHJlc3VsdCA8IDApIHsKKyAgICAgICAgTE9HRSgiY2hhbm5lbCAnJXMnIHB1Ymxpc2hlciB+IEVycm9yICVkIHBpbm5pbmcgYXNobWVtIGZkICVkLiIsCisgICAgICAgICAgICAgICAgbUNoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKSwgcmVzdWx0LCBhc2htZW1GZCk7CisgICAgICAgIHJldHVybiBVTktOT1dOX0VSUk9SOworICAgIH0KKworICAgIG1QaW5uZWQgPSB0cnVlOworCisgICAgcmVzdWx0ID0gc2VtX2luaXQoJiBtU2hhcmVkTWVzc2FnZS0+c2VtYXBob3JlLCAxLCAxKTsKKyAgICBpZiAocmVzdWx0IDwgMCkgeworICAgICAgICBMT0dFKCJjaGFubmVsICclcycgcHVibGlzaGVyIH4gRXJyb3IgJWQgaW4gc2VtX2luaXQuIiwKKyAgICAgICAgICAgICAgICBtQ2hhbm5lbC0+Z2V0TmFtZSgpLnN0cmluZygpLCBlcnJubyk7CisgICAgICAgIHJldHVybiBVTktOT1dOX0VSUk9SOworICAgIH0KKworICAgIG1TZW1hcGhvcmVJbml0aWFsaXplZCA9IHRydWU7CisKKyAgICBtU2hhcmVkTWVzc2FnZS0+Y29uc3VtZWQgPSBmYWxzZTsKKyAgICBtU2hhcmVkTWVzc2FnZS0+dHlwZSA9IHR5cGU7CisgICAgbVNoYXJlZE1lc3NhZ2UtPmRldmljZUlkID0gZGV2aWNlSWQ7CisgICAgbVNoYXJlZE1lc3NhZ2UtPm5hdHVyZSA9IG5hdHVyZTsKKyAgICByZXR1cm4gT0s7Cit9CisKK3N0YXR1c190IElucHV0UHVibGlzaGVyOjpwdWJsaXNoS2V5RXZlbnQoCisgICAgICAgIGludDMyX3QgZGV2aWNlSWQsCisgICAgICAgIGludDMyX3QgbmF0dXJlLAorICAgICAgICBpbnQzMl90IGFjdGlvbiwKKyAgICAgICAgaW50MzJfdCBmbGFncywKKyAgICAgICAgaW50MzJfdCBrZXlDb2RlLAorICAgICAgICBpbnQzMl90IHNjYW5Db2RlLAorICAgICAgICBpbnQzMl90IG1ldGFTdGF0ZSwKKyAgICAgICAgaW50MzJfdCByZXBlYXRDb3VudCwKKyAgICAgICAgbnNlY3NfdCBkb3duVGltZSwKKyAgICAgICAgbnNlY3NfdCBldmVudFRpbWUpIHsKKyNpZiBERUJVR19UUkFOU1BPUlRfQUNUSU9OUworICAgIExPR0QoImNoYW5uZWwgJyVzJyBwdWJsaXNoZXIgfiBwdWJsaXNoS2V5RXZlbnQ6IGRldmljZUlkPSVkLCBuYXR1cmU9JWQsICIKKyAgICAgICAgICAgICJhY3Rpb249JWQsIGZsYWdzPSVkLCBrZXlDb2RlPSVkLCBzY2FuQ29kZT0lZCwgbWV0YVN0YXRlPSVkLCByZXBlYXRDb3VudD0lZCwiCisgICAgICAgICAgICAiZG93blRpbWU9JWxsZCwgZXZlbnRUaW1lPSVsbGQiLAorICAgICAgICAgICAgbUNoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKSwKKyAgICAgICAgICAgIGRldmljZUlkLCBuYXR1cmUsIGFjdGlvbiwgZmxhZ3MsIGtleUNvZGUsIHNjYW5Db2RlLCBtZXRhU3RhdGUsIHJlcGVhdENvdW50LAorICAgICAgICAgICAgZG93blRpbWUsIGV2ZW50VGltZSk7CisjZW5kaWYKKworICAgIHN0YXR1c190IHJlc3VsdCA9IHB1Ymxpc2hJbnB1dEV2ZW50KElOUFVUX0VWRU5UX1RZUEVfS0VZLCBkZXZpY2VJZCwgbmF0dXJlKTsKKyAgICBpZiAocmVzdWx0IDwgMCkgeworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIG1TaGFyZWRNZXNzYWdlLT5rZXkuYWN0aW9uID0gYWN0aW9uOworICAgIG1TaGFyZWRNZXNzYWdlLT5rZXkuZmxhZ3MgPSBmbGFnczsKKyAgICBtU2hhcmVkTWVzc2FnZS0+a2V5LmtleUNvZGUgPSBrZXlDb2RlOworICAgIG1TaGFyZWRNZXNzYWdlLT5rZXkuc2NhbkNvZGUgPSBzY2FuQ29kZTsKKyAgICBtU2hhcmVkTWVzc2FnZS0+a2V5Lm1ldGFTdGF0ZSA9IG1ldGFTdGF0ZTsKKyAgICBtU2hhcmVkTWVzc2FnZS0+a2V5LnJlcGVhdENvdW50ID0gcmVwZWF0Q291bnQ7CisgICAgbVNoYXJlZE1lc3NhZ2UtPmtleS5kb3duVGltZSA9IGRvd25UaW1lOworICAgIG1TaGFyZWRNZXNzYWdlLT5rZXkuZXZlbnRUaW1lID0gZXZlbnRUaW1lOworICAgIHJldHVybiBPSzsKK30KKworc3RhdHVzX3QgSW5wdXRQdWJsaXNoZXI6OnB1Ymxpc2hNb3Rpb25FdmVudCgKKyAgICAgICAgaW50MzJfdCBkZXZpY2VJZCwKKyAgICAgICAgaW50MzJfdCBuYXR1cmUsCisgICAgICAgIGludDMyX3QgYWN0aW9uLAorICAgICAgICBpbnQzMl90IGVkZ2VGbGFncywKKyAgICAgICAgaW50MzJfdCBtZXRhU3RhdGUsCisgICAgICAgIGZsb2F0IHhPZmZzZXQsCisgICAgICAgIGZsb2F0IHlPZmZzZXQsCisgICAgICAgIGZsb2F0IHhQcmVjaXNpb24sCisgICAgICAgIGZsb2F0IHlQcmVjaXNpb24sCisgICAgICAgIG5zZWNzX3QgZG93blRpbWUsCisgICAgICAgIG5zZWNzX3QgZXZlbnRUaW1lLAorICAgICAgICBzaXplX3QgcG9pbnRlckNvdW50LAorICAgICAgICBjb25zdCBpbnQzMl90KiBwb2ludGVySWRzLAorICAgICAgICBjb25zdCBQb2ludGVyQ29vcmRzKiBwb2ludGVyQ29vcmRzKSB7CisjaWYgREVCVUdfVFJBTlNQT1JUX0FDVElPTlMKKyAgICBMT0dEKCJjaGFubmVsICclcycgcHVibGlzaGVyIH4gcHVibGlzaE1vdGlvbkV2ZW50OiBkZXZpY2VJZD0lZCwgbmF0dXJlPSVkLCAiCisgICAgICAgICAgICAiYWN0aW9uPSVkLCBlZGdlRmxhZ3M9JWQsIG1ldGFTdGF0ZT0lZCwgeE9mZnNldD0lZiwgeU9mZnNldD0lZiwgIgorICAgICAgICAgICAgInhQcmVjaXNpb249JWYsIHlQcmVjaXNpb249JWYsIGRvd25UaW1lPSVsbGQsIGV2ZW50VGltZT0lbGxkLCAiCisgICAgICAgICAgICAicG9pbnRlckNvdW50PSVkIiwKKyAgICAgICAgICAgIG1DaGFubmVsLT5nZXROYW1lKCkuc3RyaW5nKCksCisgICAgICAgICAgICBkZXZpY2VJZCwgbmF0dXJlLCBhY3Rpb24sIGVkZ2VGbGFncywgbWV0YVN0YXRlLCB4T2Zmc2V0LCB5T2Zmc2V0LAorICAgICAgICAgICAgeFByZWNpc2lvbiwgeVByZWNpc2lvbiwgZG93blRpbWUsIGV2ZW50VGltZSwgcG9pbnRlckNvdW50KTsKKyNlbmRpZgorCisgICAgaWYgKHBvaW50ZXJDb3VudCA+IE1BWF9QT0lOVEVSUyB8fCBwb2ludGVyQ291bnQgPCAxKSB7CisgICAgICAgIExPR0UoImNoYW5uZWwgJyVzJyBwdWJsaXNoZXIgfiBJbnZhbGlkIG51bWJlciBvZiBwb2ludGVycyBwcm92aWRlZDogJWQuIiwKKyAgICAgICAgICAgICAgICBtQ2hhbm5lbC0+Z2V0TmFtZSgpLnN0cmluZygpLCBwb2ludGVyQ291bnQpOworICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOworICAgIH0KKworICAgIHN0YXR1c190IHJlc3VsdCA9IHB1Ymxpc2hJbnB1dEV2ZW50KElOUFVUX0VWRU5UX1RZUEVfTU9USU9OLCBkZXZpY2VJZCwgbmF0dXJlKTsKKyAgICBpZiAocmVzdWx0IDwgMCkgeworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIG1TaGFyZWRNZXNzYWdlLT5tb3Rpb24uYWN0aW9uID0gYWN0aW9uOworICAgIG1TaGFyZWRNZXNzYWdlLT5tb3Rpb24uZWRnZUZsYWdzID0gZWRnZUZsYWdzOworICAgIG1TaGFyZWRNZXNzYWdlLT5tb3Rpb24ubWV0YVN0YXRlID0gbWV0YVN0YXRlOworICAgIG1TaGFyZWRNZXNzYWdlLT5tb3Rpb24ueE9mZnNldCA9IHhPZmZzZXQ7CisgICAgbVNoYXJlZE1lc3NhZ2UtPm1vdGlvbi55T2Zmc2V0ID0geU9mZnNldDsKKyAgICBtU2hhcmVkTWVzc2FnZS0+bW90aW9uLnhQcmVjaXNpb24gPSB4UHJlY2lzaW9uOworICAgIG1TaGFyZWRNZXNzYWdlLT5tb3Rpb24ueVByZWNpc2lvbiA9IHlQcmVjaXNpb247CisgICAgbVNoYXJlZE1lc3NhZ2UtPm1vdGlvbi5kb3duVGltZSA9IGRvd25UaW1lOworICAgIG1TaGFyZWRNZXNzYWdlLT5tb3Rpb24ucG9pbnRlckNvdW50ID0gcG9pbnRlckNvdW50OworCisgICAgbVNoYXJlZE1lc3NhZ2UtPm1vdGlvbi5zYW1wbGVDb3VudCA9IDE7CisgICAgbVNoYXJlZE1lc3NhZ2UtPm1vdGlvbi5zYW1wbGVEYXRhWzBdLmV2ZW50VGltZSA9IGV2ZW50VGltZTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcG9pbnRlckNvdW50OyBpKyspIHsKKyAgICAgICAgbVNoYXJlZE1lc3NhZ2UtPm1vdGlvbi5wb2ludGVySWRzW2ldID0gcG9pbnRlcklkc1tpXTsKKyAgICAgICAgbVNoYXJlZE1lc3NhZ2UtPm1vdGlvbi5zYW1wbGVEYXRhWzBdLmNvb3Jkc1tpXSA9IHBvaW50ZXJDb29yZHNbaV07CisgICAgfQorCisgICAgLy8gQ2FjaGUgZXNzZW50aWFsIGluZm9ybWF0aW9uIGFib3V0IHRoZSBtb3Rpb24gZXZlbnQgdG8gZW5zdXJlIHRoYXQgYSBtYWxpY2lvdXMgY29uc3VtZXIKKyAgICAvLyBjYW5ub3QgY29uZnVzZSB0aGUgcHVibGlzaGVyIGJ5IG1vZGlmeWluZyB0aGUgY29udGVudHMgb2YgdGhlIHNoYXJlZCBtZW1vcnkgYnVmZmVyIHdoaWxlCisgICAgLy8gaXQgaXMgYmVpbmcgdXBkYXRlZC4KKyAgICBpZiAoYWN0aW9uID09IE1PVElPTl9FVkVOVF9BQ1RJT05fTU9WRSkgeworICAgICAgICBtTW90aW9uRXZlbnRQb2ludGVyQ291bnQgPSBwb2ludGVyQ291bnQ7CisgICAgICAgIG1Nb3Rpb25FdmVudFNhbXBsZURhdGFTdHJpZGUgPSBJbnB1dE1lc3NhZ2U6OnNhbXBsZURhdGFTdHJpZGUocG9pbnRlckNvdW50KTsKKyAgICAgICAgbU1vdGlvbkV2ZW50U2FtcGxlRGF0YVRhaWwgPSBJbnB1dE1lc3NhZ2U6OnNhbXBsZURhdGFQdHJJbmNyZW1lbnQoCisgICAgICAgICAgICAgICAgbVNoYXJlZE1lc3NhZ2UtPm1vdGlvbi5zYW1wbGVEYXRhLCBtTW90aW9uRXZlbnRTYW1wbGVEYXRhU3RyaWRlKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtTW90aW9uRXZlbnRTYW1wbGVEYXRhVGFpbCA9IE5VTEw7CisgICAgfQorICAgIHJldHVybiBPSzsKK30KKworc3RhdHVzX3QgSW5wdXRQdWJsaXNoZXI6OmFwcGVuZE1vdGlvblNhbXBsZSgKKyAgICAgICAgbnNlY3NfdCBldmVudFRpbWUsCisgICAgICAgIGNvbnN0IFBvaW50ZXJDb29yZHMqIHBvaW50ZXJDb29yZHMpIHsKKyNpZiBERUJVR19UUkFOU1BPUlRfQUNUSU9OUworICAgIExPR0QoImNoYW5uZWwgJyVzJyBwdWJsaXNoZXIgfiBhcHBlbmRNb3Rpb25TYW1wbGU6IGV2ZW50VGltZT0lbGxkIiwKKyAgICAgICAgICAgIG1DaGFubmVsLT5nZXROYW1lKCkuc3RyaW5nKCksIGV2ZW50VGltZSk7CisjZW5kaWYKKworICAgIGlmICghIG1QaW5uZWQgfHwgISBtTW90aW9uRXZlbnRTYW1wbGVEYXRhVGFpbCkgeworICAgICAgICBMT0dFKCJjaGFubmVsICclcycgcHVibGlzaGVyIH4gQ2Fubm90IGFwcGVuZCBtb3Rpb24gc2FtcGxlIGJlY2F1c2UgdGhlcmUgaXMgbm8gY3VycmVudCAiCisgICAgICAgICAgICAgICAgIk1PVElPTl9FVkVOVF9BQ1RJT05fTU9WRSBldmVudC4iLCBtQ2hhbm5lbC0+Z2V0TmFtZSgpLnN0cmluZygpKTsKKyAgICAgICAgcmV0dXJuIElOVkFMSURfT1BFUkFUSU9OOworICAgIH0KKworICAgIElucHV0TWVzc2FnZTo6U2FtcGxlRGF0YSogbmV3VGFpbCA9IElucHV0TWVzc2FnZTo6c2FtcGxlRGF0YVB0ckluY3JlbWVudCgKKyAgICAgICAgICAgIG1Nb3Rpb25FdmVudFNhbXBsZURhdGFUYWlsLCBtTW90aW9uRXZlbnRTYW1wbGVEYXRhU3RyaWRlKTsKKyAgICBzaXplX3QgbmV3Qnl0ZXNVc2VkID0gcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obmV3VGFpbCkgLQorICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjaGFyKj4obVNoYXJlZE1lc3NhZ2UpOworCisgICAgaWYgKG5ld0J5dGVzVXNlZCA+IG1Bc2htZW1TaXplKSB7CisjaWYgREVCVUdfVFJBTlNQT1JUX0FDVElPTlMKKyAgICAgICAgTE9HRCgiY2hhbm5lbCAnJXMnIHB1Ymxpc2hlciB+IENhbm5vdCBhcHBlbmQgbW90aW9uIHNhbXBsZSBiZWNhdXNlIHRoZSBzaGFyZWQgbWVtb3J5ICIKKyAgICAgICAgICAgICAgICAiYnVmZmVyIGlzIGZ1bGwuICBCdWZmZXIgc2l6ZTogJWQgYnl0ZXMsIHBvaW50ZXJzOiAlZCwgc2FtcGxlczogJWQiLAorICAgICAgICAgICAgICAgIG1DaGFubmVsLT5nZXROYW1lKCkuc3RyaW5nKCksCisgICAgICAgICAgICAgICAgbUFzaG1lbVNpemUsIG1Nb3Rpb25FdmVudFBvaW50ZXJDb3VudCwgbVNoYXJlZE1lc3NhZ2UtPm1vdGlvbi5zYW1wbGVDb3VudCk7CisjZW5kaWYKKyAgICAgICAgcmV0dXJuIE5PX01FTU9SWTsKKyAgICB9CisKKyAgICBpbnQgcmVzdWx0OworICAgIGlmIChtV2FzRGlzcGF0Y2hlZCkgeworICAgICAgICByZXN1bHQgPSBzZW1fdHJ5d2FpdCgmIG1TaGFyZWRNZXNzYWdlLT5zZW1hcGhvcmUpOworICAgICAgICBpZiAocmVzdWx0IDwgMCkgeworICAgICAgICAgICAgaWYgKGVycm5vID09IEVBR0FJTikgeworICAgICAgICAgICAgICAgIC8vIE9ubHkgcG9zc2libGUgc291cmNlIG9mIGNvbnRlbnRpb24gaXMgdGhlIGNvbnN1bWVyIGhhdmluZyBjb25zdW1lZCAob3IgYmVpbmcgaW4gdGhlCisgICAgICAgICAgICAgICAgLy8gcHJvY2VzcyBvZiBjb25zdW1pbmcpIHRoZSBtZXNzYWdlIGFuZCBsZWZ0IHRoZSBzZW1hcGhvcmUgY291bnQgYXQgMC4KKyNpZiBERUJVR19UUkFOU1BPUlRfQUNUSU9OUworICAgICAgICAgICAgICAgIExPR0QoImNoYW5uZWwgJyVzJyBwdWJsaXNoZXIgfiBDYW5ub3QgYXBwZW5kIG1vdGlvbiBzYW1wbGUgYmVjYXVzZSB0aGUgbWVzc2FnZSBoYXMgIgorICAgICAgICAgICAgICAgICAgICAgICAgImFscmVhZHkgYmVlbiBjb25zdW1lZC4iLCBtQ2hhbm5lbC0+Z2V0TmFtZSgpLnN0cmluZygpKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIHJldHVybiBGQUlMRURfVFJBTlNBQ1RJT047CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIExPR0UoImNoYW5uZWwgJyVzJyBwdWJsaXNoZXIgfiBFcnJvciAlZCBpbiBzZW1fdHJ5d2FpdC4iLAorICAgICAgICAgICAgICAgICAgICAgICAgbUNoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKSwgZXJybm8pOworICAgICAgICAgICAgICAgIHJldHVybiBVTktOT1dOX0VSUk9SOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgbU1vdGlvbkV2ZW50U2FtcGxlRGF0YVRhaWwtPmV2ZW50VGltZSA9IGV2ZW50VGltZTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1Nb3Rpb25FdmVudFBvaW50ZXJDb3VudDsgaSsrKSB7CisgICAgICAgIG1Nb3Rpb25FdmVudFNhbXBsZURhdGFUYWlsLT5jb29yZHNbaV0gPSBwb2ludGVyQ29vcmRzW2ldOworICAgIH0KKyAgICBtTW90aW9uRXZlbnRTYW1wbGVEYXRhVGFpbCA9IG5ld1RhaWw7CisKKyAgICBtU2hhcmVkTWVzc2FnZS0+bW90aW9uLnNhbXBsZUNvdW50ICs9IDE7CisKKyAgICBpZiAobVdhc0Rpc3BhdGNoZWQpIHsKKyAgICAgICAgcmVzdWx0ID0gc2VtX3Bvc3QoJiBtU2hhcmVkTWVzc2FnZS0+c2VtYXBob3JlKTsKKyAgICAgICAgaWYgKHJlc3VsdCA8IDApIHsKKyAgICAgICAgICAgIExPR0UoImNoYW5uZWwgJyVzJyBwdWJsaXNoZXIgfiBFcnJvciAlZCBpbiBzZW1fcG9zdC4iLAorICAgICAgICAgICAgICAgICAgICBtQ2hhbm5lbC0+Z2V0TmFtZSgpLnN0cmluZygpLCBlcnJubyk7CisgICAgICAgICAgICByZXR1cm4gVU5LTk9XTl9FUlJPUjsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gT0s7Cit9CisKK3N0YXR1c190IElucHV0UHVibGlzaGVyOjpzZW5kRGlzcGF0Y2hTaWduYWwoKSB7CisjaWYgREVCVUdfVFJBTlNQT1JUX0FDVElPTlMKKyAgICBMT0dEKCJjaGFubmVsICclcycgcHVibGlzaGVyIH4gc2VuZERpc3BhdGNoU2lnbmFsIiwKKyAgICAgICAgICAgIG1DaGFubmVsLT5nZXROYW1lKCkuc3RyaW5nKCkpOworI2VuZGlmCisKKyAgICBtV2FzRGlzcGF0Y2hlZCA9IHRydWU7CisgICAgcmV0dXJuIG1DaGFubmVsLT5zZW5kU2lnbmFsKElOUFVUX1NJR05BTF9ESVNQQVRDSCk7Cit9CisKK3N0YXR1c190IElucHV0UHVibGlzaGVyOjpyZWNlaXZlRmluaXNoZWRTaWduYWwoKSB7CisjaWYgREVCVUdfVFJBTlNQT1JUX0FDVElPTlMKKyAgICBMT0dEKCJjaGFubmVsICclcycgcHVibGlzaGVyIH4gcmVjZWl2ZUZpbmlzaGVkU2lnbmFsIiwKKyAgICAgICAgICAgIG1DaGFubmVsLT5nZXROYW1lKCkuc3RyaW5nKCkpOworI2VuZGlmCisKKyAgICBjaGFyIHNpZ25hbDsKKyAgICBzdGF0dXNfdCByZXN1bHQgPSBtQ2hhbm5lbC0+cmVjZWl2ZVNpZ25hbCgmIHNpZ25hbCk7CisgICAgaWYgKHJlc3VsdCkgeworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKyAgICBpZiAoc2lnbmFsICE9IElOUFVUX1NJR05BTF9GSU5JU0hFRCkgeworICAgICAgICBMT0dFKCJjaGFubmVsICclcycgcHVibGlzaGVyIH4gUmVjZWl2ZWQgdW5leHBlY3RlZCBzaWduYWwgJyVjJyBmcm9tIGNvbnN1bWVyIiwKKyAgICAgICAgICAgICAgICBtQ2hhbm5lbC0+Z2V0TmFtZSgpLnN0cmluZygpLCBzaWduYWwpOworICAgICAgICByZXR1cm4gVU5LTk9XTl9FUlJPUjsKKyAgICB9CisgICAgcmV0dXJuIE9LOworfQorCisvLyAtLS0gSW5wdXRDb25zdW1lciAtLS0KKworSW5wdXRDb25zdW1lcjo6SW5wdXRDb25zdW1lcihjb25zdCBzcDxJbnB1dENoYW5uZWw+JiBjaGFubmVsKSA6CisgICAgICAgIG1DaGFubmVsKGNoYW5uZWwpLCBtU2hhcmVkTWVzc2FnZShOVUxMKSB7Cit9CisKK0lucHV0Q29uc3VtZXI6On5JbnB1dENvbnN1bWVyKCkgeworICAgIGlmIChtU2hhcmVkTWVzc2FnZSkgeworICAgICAgICBtdW5tYXAobVNoYXJlZE1lc3NhZ2UsIG1Bc2htZW1TaXplKTsKKyAgICB9Cit9CisKK3N0YXR1c190IElucHV0Q29uc3VtZXI6OmluaXRpYWxpemUoKSB7CisjaWYgREVCVUdfVFJBTlNQT1JUX0FDVElPTlMKKyAgICBMT0dEKCJjaGFubmVsICclcycgY29uc3VtZXIgfiBpbml0aWFsaXplIiwKKyAgICAgICAgICAgIG1DaGFubmVsLT5nZXROYW1lKCkuc3RyaW5nKCkpOworI2VuZGlmCisKKyAgICBpbnQgYXNobWVtRmQgPSBtQ2hhbm5lbC0+Z2V0QXNobWVtRmQoKTsKKyAgICBpbnQgcmVzdWx0ID0gYXNobWVtX2dldF9zaXplX3JlZ2lvbihhc2htZW1GZCk7CisgICAgaWYgKHJlc3VsdCA8IDApIHsKKyAgICAgICAgTE9HRSgiY2hhbm5lbCAnJXMnIGNvbnN1bWVyIH4gRXJyb3IgJWQgZ2V0dGluZyBzaXplIG9mIGFzaG1lbSBmZCAlZC4iLAorICAgICAgICAgICAgICAgIG1DaGFubmVsLT5nZXROYW1lKCkuc3RyaW5nKCksIHJlc3VsdCwgYXNobWVtRmQpOworICAgICAgICByZXR1cm4gVU5LTk9XTl9FUlJPUjsKKyAgICB9CisKKyAgICBtQXNobWVtU2l6ZSA9IChzaXplX3QpIHJlc3VsdDsKKworICAgIG1TaGFyZWRNZXNzYWdlID0gc3RhdGljX2Nhc3Q8SW5wdXRNZXNzYWdlKj4obW1hcChOVUxMLCBtQXNobWVtU2l6ZSwKKyAgICAgICAgICAgIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsIE1BUF9TSEFSRUQsIGFzaG1lbUZkLCAwKSk7CisgICAgaWYgKCEgbVNoYXJlZE1lc3NhZ2UpIHsKKyAgICAgICAgTE9HRSgiY2hhbm5lbCAnJXMnIGNvbnN1bWVyIH4gbW1hcCBmYWlsZWQgb24gYXNobWVtIGZkICVkLiIsCisgICAgICAgICAgICAgICAgbUNoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKSwgYXNobWVtRmQpOworICAgICAgICByZXR1cm4gTk9fTUVNT1JZOworICAgIH0KKworICAgIHJldHVybiBPSzsKK30KKworc3RhdHVzX3QgSW5wdXRDb25zdW1lcjo6Y29uc3VtZShJbnB1dEV2ZW50RmFjdG9yeUludGVyZmFjZSogZmFjdG9yeSwgSW5wdXRFdmVudCoqIG91dEV2ZW50KSB7CisjaWYgREVCVUdfVFJBTlNQT1JUX0FDVElPTlMKKyAgICBMT0dEKCJjaGFubmVsICclcycgY29uc3VtZXIgfiBjb25zdW1lIiwKKyAgICAgICAgICAgIG1DaGFubmVsLT5nZXROYW1lKCkuc3RyaW5nKCkpOworI2VuZGlmCisKKyAgICAqb3V0RXZlbnQgPSBOVUxMOworCisgICAgaW50IGFzaG1lbUZkID0gbUNoYW5uZWwtPmdldEFzaG1lbUZkKCk7CisgICAgaW50IHJlc3VsdCA9IGFzaG1lbV9waW5fcmVnaW9uKGFzaG1lbUZkLCAwLCAwKTsKKyAgICBpZiAocmVzdWx0ICE9IEFTSE1FTV9OT1RfUFVSR0VEKSB7CisgICAgICAgIGlmIChyZXN1bHQgPT0gQVNITUVNX1dBU19QVVJHRUQpIHsKKyAgICAgICAgICAgIExPR0UoImNoYW5uZWwgJyVzJyBjb25zdW1lciB+IEVycm9yICVkIHBpbm5pbmcgYXNobWVtIGZkICVkIGJlY2F1c2UgaXQgd2FzIHB1cmdlZCAiCisgICAgICAgICAgICAgICAgICAgICJ3aGljaCBwcm9iYWJseSBpbmRpY2F0ZXMgdGhhdCB0aGUgcHVibGlzaGVyIGFuZCBjb25zdW1lciBhcmUgb3V0IG9mIHN5bmMuIiwKKyAgICAgICAgICAgICAgICAgICAgbUNoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKSwgcmVzdWx0LCBhc2htZW1GZCk7CisgICAgICAgICAgICByZXR1cm4gSU5WQUxJRF9PUEVSQVRJT047CisgICAgICAgIH0KKworICAgICAgICBMT0dFKCJjaGFubmVsICclcycgY29uc3VtZXIgfiBFcnJvciAlZCBwaW5uaW5nIGFzaG1lbSBmZCAlZC4iLAorICAgICAgICAgICAgICAgIG1DaGFubmVsLT5nZXROYW1lKCkuc3RyaW5nKCksIHJlc3VsdCwgYXNobWVtRmQpOworICAgICAgICByZXR1cm4gVU5LTk9XTl9FUlJPUjsKKyAgICB9CisKKyAgICBpZiAobVNoYXJlZE1lc3NhZ2UtPmNvbnN1bWVkKSB7CisgICAgICAgIExPR0UoImNoYW5uZWwgJyVzJyBjb25zdW1lciB+IFRoZSBjdXJyZW50IG1lc3NhZ2UgaGFzIGFscmVhZHkgYmVlbiBjb25zdW1lZC4iLAorICAgICAgICAgICAgICAgIG1DaGFubmVsLT5nZXROYW1lKCkuc3RyaW5nKCkpOworICAgICAgICByZXR1cm4gSU5WQUxJRF9PUEVSQVRJT047CisgICAgfQorCisgICAgLy8gQWNxdWlyZSBidXQgKm5ldmVyIHJlbGVhc2UqIHRoZSBzZW1hcGhvcmUuICBDb250ZW50aW9uIG9uIHRoZSBzZW1hcGhvcmUgaXMgdXNlZCB0byBzaWduYWwKKyAgICAvLyB0byB0aGUgcHVibGlzaGVyIHRoYXQgdGhlIG1lc3NhZ2UgaGFzIGJlZW4gY29uc3VtZWQgKG9yIGlzIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nCisgICAgLy8gY29uc3VtZWQpLiAgRXZlbnR1YWxseSB0aGUgcHVibGlzaGVyIHdpbGwgcmVpbml0aWFsaXplIHRoZSBzZW1hcGhvcmUgZm9yIHRoZSBuZXh0IG1lc3NhZ2UuCisgICAgcmVzdWx0ID0gc2VtX3dhaXQoJiBtU2hhcmVkTWVzc2FnZS0+c2VtYXBob3JlKTsKKyAgICBpZiAocmVzdWx0IDwgMCkgeworICAgICAgICBMT0dFKCJjaGFubmVsICclcycgY29uc3VtZXIgfiBFcnJvciAlZCBpbiBzZW1fd2FpdC4iLAorICAgICAgICAgICAgICAgIG1DaGFubmVsLT5nZXROYW1lKCkuc3RyaW5nKCksIGVycm5vKTsKKyAgICAgICAgcmV0dXJuIFVOS05PV05fRVJST1I7CisgICAgfQorCisgICAgbVNoYXJlZE1lc3NhZ2UtPmNvbnN1bWVkID0gdHJ1ZTsKKworICAgIHN3aXRjaCAobVNoYXJlZE1lc3NhZ2UtPnR5cGUpIHsKKyAgICBjYXNlIElOUFVUX0VWRU5UX1RZUEVfS0VZOiB7CisgICAgICAgIEtleUV2ZW50KiBrZXlFdmVudCA9IGZhY3RvcnktPmNyZWF0ZUtleUV2ZW50KCk7CisgICAgICAgIGlmICghIGtleUV2ZW50KSByZXR1cm4gTk9fTUVNT1JZOworCisgICAgICAgIHBvcHVsYXRlS2V5RXZlbnQoa2V5RXZlbnQpOworCisgICAgICAgICpvdXRFdmVudCA9IGtleUV2ZW50OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBjYXNlIElOUFVUX0VWRU5UX1RZUEVfTU9USU9OOiB7CisgICAgICAgIE1vdGlvbkV2ZW50KiBtb3Rpb25FdmVudCA9IGZhY3RvcnktPmNyZWF0ZU1vdGlvbkV2ZW50KCk7CisgICAgICAgIGlmICghIG1vdGlvbkV2ZW50KSByZXR1cm4gTk9fTUVNT1JZOworCisgICAgICAgIHBvcHVsYXRlTW90aW9uRXZlbnQobW90aW9uRXZlbnQpOworCisgICAgICAgICpvdXRFdmVudCA9IG1vdGlvbkV2ZW50OworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBkZWZhdWx0OgorICAgICAgICBMT0dFKCJjaGFubmVsICclcycgY29uc3VtZXIgfiBSZWNlaXZlZCBtZXNzYWdlIG9mIHVua25vd24gdHlwZSAlZCIsCisgICAgICAgICAgICAgICAgbUNoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKSwgbVNoYXJlZE1lc3NhZ2UtPnR5cGUpOworICAgICAgICByZXR1cm4gVU5LTk9XTl9FUlJPUjsKKyAgICB9CisKKyAgICByZXR1cm4gT0s7Cit9CisKK3N0YXR1c190IElucHV0Q29uc3VtZXI6OnNlbmRGaW5pc2hlZFNpZ25hbCgpIHsKKyNpZiBERUJVR19UUkFOU1BPUlRfQUNUSU9OUworICAgIExPR0QoImNoYW5uZWwgJyVzJyBjb25zdW1lciB+IHNlbmRGaW5pc2hlZFNpZ25hbCIsCisgICAgICAgICAgICBtQ2hhbm5lbC0+Z2V0TmFtZSgpLnN0cmluZygpKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIG1DaGFubmVsLT5zZW5kU2lnbmFsKElOUFVUX1NJR05BTF9GSU5JU0hFRCk7Cit9CisKK3N0YXR1c190IElucHV0Q29uc3VtZXI6OnJlY2VpdmVEaXNwYXRjaFNpZ25hbCgpIHsKKyNpZiBERUJVR19UUkFOU1BPUlRfQUNUSU9OUworICAgIExPR0QoImNoYW5uZWwgJyVzJyBjb25zdW1lciB+IHJlY2VpdmVEaXNwYXRjaFNpZ25hbCIsCisgICAgICAgICAgICBtQ2hhbm5lbC0+Z2V0TmFtZSgpLnN0cmluZygpKTsKKyNlbmRpZgorCisgICAgY2hhciBzaWduYWw7CisgICAgc3RhdHVzX3QgcmVzdWx0ID0gbUNoYW5uZWwtPnJlY2VpdmVTaWduYWwoJiBzaWduYWwpOworICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgaWYgKHNpZ25hbCAhPSBJTlBVVF9TSUdOQUxfRElTUEFUQ0gpIHsKKyAgICAgICAgTE9HRSgiY2hhbm5lbCAnJXMnIGNvbnN1bWVyIH4gUmVjZWl2ZWQgdW5leHBlY3RlZCBzaWduYWwgJyVjJyBmcm9tIHB1Ymxpc2hlciIsCisgICAgICAgICAgICAgICAgbUNoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKSwgc2lnbmFsKTsKKyAgICAgICAgcmV0dXJuIFVOS05PV05fRVJST1I7CisgICAgfQorICAgIHJldHVybiBPSzsKK30KKwordm9pZCBJbnB1dENvbnN1bWVyOjpwb3B1bGF0ZUtleUV2ZW50KEtleUV2ZW50KiBrZXlFdmVudCkgY29uc3QgeworICAgIGtleUV2ZW50LT5pbml0aWFsaXplKAorICAgICAgICAgICAgbVNoYXJlZE1lc3NhZ2UtPmRldmljZUlkLAorICAgICAgICAgICAgbVNoYXJlZE1lc3NhZ2UtPm5hdHVyZSwKKyAgICAgICAgICAgIG1TaGFyZWRNZXNzYWdlLT5rZXkuYWN0aW9uLAorICAgICAgICAgICAgbVNoYXJlZE1lc3NhZ2UtPmtleS5mbGFncywKKyAgICAgICAgICAgIG1TaGFyZWRNZXNzYWdlLT5rZXkua2V5Q29kZSwKKyAgICAgICAgICAgIG1TaGFyZWRNZXNzYWdlLT5rZXkuc2NhbkNvZGUsCisgICAgICAgICAgICBtU2hhcmVkTWVzc2FnZS0+a2V5Lm1ldGFTdGF0ZSwKKyAgICAgICAgICAgIG1TaGFyZWRNZXNzYWdlLT5rZXkucmVwZWF0Q291bnQsCisgICAgICAgICAgICBtU2hhcmVkTWVzc2FnZS0+a2V5LmRvd25UaW1lLAorICAgICAgICAgICAgbVNoYXJlZE1lc3NhZ2UtPmtleS5ldmVudFRpbWUpOworfQorCit2b2lkIElucHV0Q29uc3VtZXI6OnBvcHVsYXRlTW90aW9uRXZlbnQoTW90aW9uRXZlbnQqIG1vdGlvbkV2ZW50KSBjb25zdCB7CisgICAgbW90aW9uRXZlbnQtPmluaXRpYWxpemUoCisgICAgICAgICAgICBtU2hhcmVkTWVzc2FnZS0+ZGV2aWNlSWQsCisgICAgICAgICAgICBtU2hhcmVkTWVzc2FnZS0+bmF0dXJlLAorICAgICAgICAgICAgbVNoYXJlZE1lc3NhZ2UtPm1vdGlvbi5hY3Rpb24sCisgICAgICAgICAgICBtU2hhcmVkTWVzc2FnZS0+bW90aW9uLmVkZ2VGbGFncywKKyAgICAgICAgICAgIG1TaGFyZWRNZXNzYWdlLT5tb3Rpb24ubWV0YVN0YXRlLAorICAgICAgICAgICAgbVNoYXJlZE1lc3NhZ2UtPm1vdGlvbi54T2Zmc2V0LAorICAgICAgICAgICAgbVNoYXJlZE1lc3NhZ2UtPm1vdGlvbi55T2Zmc2V0LAorICAgICAgICAgICAgbVNoYXJlZE1lc3NhZ2UtPm1vdGlvbi54UHJlY2lzaW9uLAorICAgICAgICAgICAgbVNoYXJlZE1lc3NhZ2UtPm1vdGlvbi55UHJlY2lzaW9uLAorICAgICAgICAgICAgbVNoYXJlZE1lc3NhZ2UtPm1vdGlvbi5kb3duVGltZSwKKyAgICAgICAgICAgIG1TaGFyZWRNZXNzYWdlLT5tb3Rpb24uc2FtcGxlRGF0YVswXS5ldmVudFRpbWUsCisgICAgICAgICAgICBtU2hhcmVkTWVzc2FnZS0+bW90aW9uLnBvaW50ZXJDb3VudCwKKyAgICAgICAgICAgIG1TaGFyZWRNZXNzYWdlLT5tb3Rpb24ucG9pbnRlcklkcywKKyAgICAgICAgICAgIG1TaGFyZWRNZXNzYWdlLT5tb3Rpb24uc2FtcGxlRGF0YVswXS5jb29yZHMpOworCisgICAgc2l6ZV90IHNhbXBsZUNvdW50ID0gbVNoYXJlZE1lc3NhZ2UtPm1vdGlvbi5zYW1wbGVDb3VudDsKKyAgICBpZiAoc2FtcGxlQ291bnQgPiAxKSB7CisgICAgICAgIElucHV0TWVzc2FnZTo6U2FtcGxlRGF0YSogc2FtcGxlRGF0YSA9IG1TaGFyZWRNZXNzYWdlLT5tb3Rpb24uc2FtcGxlRGF0YTsKKyAgICAgICAgc2l6ZV90IHNhbXBsZURhdGFTdHJpZGUgPSBJbnB1dE1lc3NhZ2U6OnNhbXBsZURhdGFTdHJpZGUoCisgICAgICAgICAgICAgICAgbVNoYXJlZE1lc3NhZ2UtPm1vdGlvbi5wb2ludGVyQ291bnQpOworCisgICAgICAgIHdoaWxlICgtLXNhbXBsZUNvdW50ID4gMCkgeworICAgICAgICAgICAgc2FtcGxlRGF0YSA9IElucHV0TWVzc2FnZTo6c2FtcGxlRGF0YVB0ckluY3JlbWVudChzYW1wbGVEYXRhLCBzYW1wbGVEYXRhU3RyaWRlKTsKKyAgICAgICAgICAgIG1vdGlvbkV2ZW50LT5hZGRTYW1wbGUoc2FtcGxlRGF0YS0+ZXZlbnRUaW1lLCBzYW1wbGVEYXRhLT5jb29yZHMpOworICAgICAgICB9CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBhbmRyb2lkCisKKy8vIC0tLSBBSW5wdXRRdWV1ZSAtLS0KKwordXNpbmcgYW5kcm9pZDo6SW5wdXRFdmVudDsKK3VzaW5nIGFuZHJvaWQ6OklucHV0Q2hhbm5lbDsKK3VzaW5nIGFuZHJvaWQ6OklucHV0Q29uc3VtZXI7Cit1c2luZyBhbmRyb2lkOjpzcDsKK3VzaW5nIGFuZHJvaWQ6OnN0YXR1c190OworCitBSW5wdXRRdWV1ZTo6QUlucHV0UXVldWUoY29uc3Qgc3A8SW5wdXRDaGFubmVsPiYgY2hhbm5lbCkgOgorICAgICAgICBtQ29uc3VtZXIoY2hhbm5lbCkgeworfQorCitBSW5wdXRRdWV1ZTo6fkFJbnB1dFF1ZXVlKCkgeworfQorCitzdGF0dXNfdCBBSW5wdXRRdWV1ZTo6Y29uc3VtZShJbnB1dEV2ZW50KiogZXZlbnQpIHsKKyAgICByZXR1cm4gbUNvbnN1bWVyLmNvbnN1bWUoJm1JbnB1dEV2ZW50RmFjdG9yeSwgZXZlbnQpOworfQpkaWZmIC0tZ2l0IGEvbGlicy91aS9QaXhlbEZvcm1hdC5jcHAgYi9saWJzL3VpL1BpeGVsRm9ybWF0LmNwcAppbmRleCA5YjQxODA0Li5iMjA1NDE4IDEwMDY0NAotLS0gYS9saWJzL3VpL1BpeGVsRm9ybWF0LmNwcAorKysgYi9saWJzL3VpL1BpeGVsRm9ybWF0LmNwcApAQCAtNTksMTkgKzU5LDEzIEBACiAgICAgLy8gWVVWIGZvcm1hdCBmcm9tIHRoZSBIQUwgYXJlIGhhbmRsZWQgaGVyZQogICAgIHN3aXRjaCAoZm9ybWF0KSB7CiAgICAgY2FzZSBIQUxfUElYRUxfRk9STUFUX1lDYkNyXzQyMl9TUDoKLSAgICBjYXNlIEhBTF9QSVhFTF9GT1JNQVRfWUNyQ2JfNDIyX1NQOgotICAgIGNhc2UgSEFMX1BJWEVMX0ZPUk1BVF9ZQ2JDcl80MjJfUDoKICAgICBjYXNlIEhBTF9QSVhFTF9GT1JNQVRfWUNiQ3JfNDIyX0k6Ci0gICAgY2FzZSBIQUxfUElYRUxfRk9STUFUX0NiWUNyWV80MjJfSToKKyAgICBjYXNlIEhBTF9QSVhFTF9GT1JNQVRfWVYxNjoKICAgICAgICAgaW5mby0+Yml0c1BlclBpeGVsID0gMTY7CiAgICAgICAgIGdvdG8gZG9uZTsKLSAgICBjYXNlIEhBTF9QSVhFTF9GT1JNQVRfWUNiQ3JfNDIwX1NQOgogICAgIGNhc2UgSEFMX1BJWEVMX0ZPUk1BVF9ZQ3JDYl80MjBfU1A6CiAgICAgY2FzZSBIQUxfUElYRUxfRk9STUFUX1lDYkNyXzQyMF9TUF9USUxFRDoKLSAgICBjYXNlIEhBTF9QSVhFTF9GT1JNQVRfWUNyQ2JfNDIwX1NQX1RJTEVEOgotICAgIGNhc2UgSEFMX1BJWEVMX0ZPUk1BVF9ZQ2JDcl80MjBfUDoKLSAgICBjYXNlIEhBTF9QSVhFTF9GT1JNQVRfWUNiQ3JfNDIwX0k6Ci0gICAgY2FzZSBIQUxfUElYRUxfRk9STUFUX0NiWUNyWV80MjBfSToKKyAgICBjYXNlIEhBTF9QSVhFTF9GT1JNQVRfWVYxMjoKICAgICAgICAgaW5mby0+Yml0c1BlclBpeGVsID0gMTI7CiAgICAgIGRvbmU6CiAgICAgICAgIGluZm8tPmZvcm1hdCA9IGZvcm1hdDsKZGlmZiAtLWdpdCBhL2xpYnMvdWkvUmVjdC5jcHAgYi9saWJzL3VpL1JlY3QuY3BwCmluZGV4IDY2Yjk1NzYuLjU2OTRlMDAgMTAwNjQ0Ci0tLSBhL2xpYnMvdWkvUmVjdC5jcHAKKysrIGIvbGlicy91aS9SZWN0LmNwcApAQCAtMTgsMTEgKzE4LDExIEBACiAKIG5hbWVzcGFjZSBhbmRyb2lkIHsKIAotc3RhdGljIGlubGluZSBpbnQgbWluKGludCBhLCBpbnQgYikgeworc3RhdGljIGlubGluZSBpbnQzMl90IG1pbihpbnQzMl90IGEsIGludDMyX3QgYikgewogICAgIHJldHVybiAoYTxiKSA/IGEgOiBiOwogfQogCi1zdGF0aWMgaW5saW5lIGludCBtYXgoaW50IGEsIGludCBiKSB7CitzdGF0aWMgaW5saW5lIGludDMyX3QgbWF4KGludDMyX3QgYSwgaW50MzJfdCBiKSB7CiAgICAgcmV0dXJuIChhPmIpID8gYSA6IGI7CiB9CiAKQEAgLTUzLDcgKzUzLDcgQEAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLVJlY3QmIFJlY3Q6Om9mZnNldFRvKGludCB4LCBpbnQgeSkKK1JlY3QmIFJlY3Q6Om9mZnNldFRvKGludDMyX3QgeCwgaW50MzJfdCB5KQogewogICAgIHJpZ2h0IC09IGxlZnQgLSB4OwogICAgIGJvdHRvbSAtPSB0b3AgLSB5OwpAQCAtNjIsNyArNjIsNyBAQAogICAgIHJldHVybiAqdGhpczsKIH0KIAotUmVjdCYgUmVjdDo6b2Zmc2V0QnkoaW50IHgsIGludCB5KQorUmVjdCYgUmVjdDo6b2Zmc2V0QnkoaW50MzJfdCB4LCBpbnQzMl90IHkpCiB7CiAgICAgbGVmdCArPSB4OwogICAgIHRvcCAgKz0geTsKZGlmZiAtLWdpdCBhL2xpYnMvdWkvdGVzdHMvQW5kcm9pZC5tayBiL2xpYnMvdWkvdGVzdHMvQW5kcm9pZC5tawppbmRleCA2Y2M0YTVhLi40NmQ3NDkzIDEwMDY0NAotLS0gYS9saWJzL3VpL3Rlc3RzL0FuZHJvaWQubWsKKysrIGIvbGlicy91aS90ZXN0cy9BbmRyb2lkLm1rCkBAIC0xLDE2ICsxLDQ1IEBACisjIEJ1aWxkIHRoZSB1bml0IHRlc3RzLgogTE9DQUxfUEFUSDo9ICQoY2FsbCBteS1kaXIpCiBpbmNsdWRlICQoQ0xFQVJfVkFSUykKIAotTE9DQUxfU1JDX0ZJTEVTOj0gXAotCXJlZ2lvbi5jcHAKK3Rlc3Rfc3JjX2ZpbGVzIDo9IFwKKyAgICBJbnB1dENoYW5uZWxfdGVzdC5jcHAgXAorICAgIElucHV0RGlzcGF0Y2hlcl90ZXN0LmNwcCBcCisgICAgSW5wdXRQdWJsaXNoZXJBbmRDb25zdW1lcl90ZXN0LmNwcAogCi1MT0NBTF9TSEFSRURfTElCUkFSSUVTIDo9IFwKK3NoYXJlZF9saWJyYXJpZXMgOj0gXAogCWxpYmN1dGlscyBcCiAJbGlidXRpbHMgXAotICAgIGxpYnVpCisJbGliRUdMIFwKKwlsaWJiaW5kZXIgXAorCWxpYnBpeGVsZmxpbmdlciBcCisJbGliaGFyZHdhcmUgXAorCWxpYmhhcmR3YXJlX2xlZ2FjeSBcCisJbGlidWkgXAorCWxpYnN0bHBvcnQKIAotTE9DQUxfTU9EVUxFOj0gdGVzdC1yZWdpb24KK3N0YXRpY19saWJyYXJpZXMgOj0gXAorCWxpYmd0ZXN0IFwKKwlsaWJndGVzdF9tYWluCiAKLUxPQ0FMX01PRFVMRV9UQUdTIDo9IHRlc3RzCitjX2luY2x1ZGVzIDo9IFwKKyAgICBiaW9uaWMgXAorICAgIGJpb25pYy9saWJzdGRjKysvaW5jbHVkZSBcCisgICAgZXh0ZXJuYWwvZ3Rlc3QvaW5jbHVkZSBcCisgICAgZXh0ZXJuYWwvc3RscG9ydC9zdGxwb3J0CiAKLWluY2x1ZGUgJChCVUlMRF9FWEVDVVRBQkxFKQorbW9kdWxlX3RhZ3MgOj0gZW5nIHRlc3RzCisKKyQoZm9yZWFjaCBmaWxlLCQodGVzdF9zcmNfZmlsZXMpLCBcCisgICAgJChldmFsIGluY2x1ZGUgJChDTEVBUl9WQVJTKSkgXAorICAgICQoZXZhbCBMT0NBTF9TSEFSRURfTElCUkFSSUVTIDo9ICQoc2hhcmVkX2xpYnJhcmllcykpIFwKKyAgICAkKGV2YWwgTE9DQUxfU1RBVElDX0xJQlJBUklFUyA6PSAkKHN0YXRpY19saWJyYXJpZXMpKSBcCisgICAgJChldmFsIExPQ0FMX0NfSU5DTFVERVMgOj0gJChjX2luY2x1ZGVzKSkgXAorICAgICQoZXZhbCBMT0NBTF9TUkNfRklMRVMgOj0gJChmaWxlKSkgXAorICAgICQoZXZhbCBMT0NBTF9NT0RVTEUgOj0gJChub3RkaXIgJChmaWxlOiUuY3BwPSUpKSkgXAorICAgICQoZXZhbCBMT0NBTF9NT0RVTEVfVEFHUyA6PSAkKG1vZHVsZV90YWdzKSkgXAorICAgICQoZXZhbCBpbmNsdWRlICQoQlVJTERfRVhFQ1VUQUJMRSkpIFwKKykKKworIyBCdWlsZCB0aGUgbWFudWFsIHRlc3QgcHJvZ3JhbXMuCitpbmNsdWRlICQoY2FsbCBhbGwtc3ViZGlyLW1ha2VmaWxlcykKZGlmZiAtLWdpdCBhL2xpYnMvdWkvdGVzdHMvSW5wdXRDaGFubmVsX3Rlc3QuY3BwIGIvbGlicy91aS90ZXN0cy9JbnB1dENoYW5uZWxfdGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmNlYzFjMDIKLS0tIC9kZXYvbnVsbAorKysgYi9saWJzL3VpL3Rlc3RzL0lucHV0Q2hhbm5lbF90ZXN0LmNwcApAQCAtMCwwICsxLDE1OCBAQAorLy8KKy8vIENvcHlyaWdodCAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKy8vCisKKyNpbmNsdWRlIDx1aS9JbnB1dFRyYW5zcG9ydC5oPgorI2luY2x1ZGUgPHV0aWxzL1RpbWVycy5oPgorI2luY2x1ZGUgPHV0aWxzL1N0b3BXYXRjaC5oPgorI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPHN5cy9tbWFuLmg+CisjaW5jbHVkZSA8Y3V0aWxzL2FzaG1lbS5oPgorCisjaW5jbHVkZSAiLi4vLi4vdXRpbHMvdGVzdHMvVGVzdEhlbHBlcnMuaCIKKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitjbGFzcyBJbnB1dENoYW5uZWxUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBUZWFyRG93bigpIHsgfQorfTsKKworCitURVNUX0YoSW5wdXRDaGFubmVsVGVzdCwgQ29uc3RydWN0b3JBbmREZXN0cnVjdG9yX1Rha2VzT3duZXJzaGlwT2ZGaWxlRGVzY3JpcHRvcnMpIHsKKyAgICAvLyBPdXIgcHVycG9zZSBoZXJlIGlzIHRvIHZlcmlmeSB0aGF0IHRoZSBpbnB1dCBjaGFubmVsIGRlc3RydWN0b3IgY2xvc2VzIHRoZQorICAgIC8vIGZpbGUgZGVzY3JpcHRvcnMgcHJvdmlkZWQgdG8gaXQuICBPbmUgZWFzeSB3YXkgaXMgdG8gcHJvdmlkZSBpdCB3aXRoIG9uZSBlbmQKKyAgICAvLyBvZiBhIHBpcGUgYW5kIHRvIGNoZWNrIGZvciBFUElQRSBvbiB0aGUgb3RoZXIgZW5kIGFmdGVyIHRoZSBjaGFubmVsIGlzIGRlc3Ryb3llZC4KKyAgICBQaXBlIGZha2VBc2htZW0sIHNlbmRQaXBlLCByZWNlaXZlUGlwZTsKKworICAgIHNwPElucHV0Q2hhbm5lbD4gaW5wdXRDaGFubmVsID0gbmV3IElucHV0Q2hhbm5lbChTdHJpbmc4KCJjaGFubmVsIG5hbWUiKSwKKyAgICAgICAgICAgIGZha2VBc2htZW0uc2VuZEZkLCByZWNlaXZlUGlwZS5yZWNlaXZlRmQsIHNlbmRQaXBlLnNlbmRGZCk7CisKKyAgICBFWFBFQ1RfU1RSRVEoImNoYW5uZWwgbmFtZSIsIGlucHV0Q2hhbm5lbC0+Z2V0TmFtZSgpLnN0cmluZygpKQorICAgICAgICAgICAgPDwgImNoYW5uZWwgc2hvdWxkIGhhdmUgcHJvdmlkZWQgbmFtZSI7CisgICAgRVhQRUNUX0VRKGZha2VBc2htZW0uc2VuZEZkLCBpbnB1dENoYW5uZWwtPmdldEFzaG1lbUZkKCkpCisgICAgICAgICAgICA8PCAiY2hhbm5lbCBzaG91bGQgaGF2ZSBwcm92aWRlZCBhc2htZW0gZmQiOworICAgIEVYUEVDVF9FUShyZWNlaXZlUGlwZS5yZWNlaXZlRmQsIGlucHV0Q2hhbm5lbC0+Z2V0UmVjZWl2ZVBpcGVGZCgpKQorICAgICAgICAgICAgPDwgImNoYW5uZWwgc2hvdWxkIGhhdmUgcHJvdmlkZWQgcmVjZWl2ZSBwaXBlIGZkIjsKKyAgICBFWFBFQ1RfRVEoc2VuZFBpcGUuc2VuZEZkLCBpbnB1dENoYW5uZWwtPmdldFNlbmRQaXBlRmQoKSkKKyAgICAgICAgICAgIDw8ICJjaGFubmVsIHNob3VsZCBoYXZlIHByb3ZpZGVkIHNlbmQgcGlwZSBmZCI7CisKKyAgICBpbnB1dENoYW5uZWwuY2xlYXIoKTsgLy8gZGVzdHJveXMgaW5wdXQgY2hhbm5lbAorCisgICAgRVhQRUNUX0VRKC1FUElQRSwgZmFrZUFzaG1lbS5yZWFkU2lnbmFsKCkpCisgICAgICAgICAgICA8PCAiY2hhbm5lbCBzaG91bGQgaGF2ZSBjbG9zZWQgYXNobWVtIGZkIHdoZW4gZGVzdHJveWVkIjsKKyAgICBFWFBFQ1RfRVEoLUVQSVBFLCByZWNlaXZlUGlwZS53cml0ZVNpZ25hbCgpKQorICAgICAgICAgICAgPDwgImNoYW5uZWwgc2hvdWxkIGhhdmUgY2xvc2VkIHJlY2VpdmUgcGlwZSBmZCB3aGVuIGRlc3Ryb3llZCI7CisgICAgRVhQRUNUX0VRKC1FUElQRSwgc2VuZFBpcGUucmVhZFNpZ25hbCgpKQorICAgICAgICAgICAgPDwgImNoYW5uZWwgc2hvdWxkIGhhdmUgY2xvc2VkIHNlbmQgcGlwZSBmZCB3aGVuIGRlc3Ryb3llZCI7CisKKyAgICAvLyBjbGVhbiB1cCBmZHMgb2YgUGlwZSBlbmRwb2ludHMgdGhhdCB3ZXJlIGNsb3NlZCBzbyB3ZSBkb24ndCB0cnkgdG8gY2xvc2UgdGhlbSBhZ2FpbgorICAgIGZha2VBc2htZW0uc2VuZEZkID0gLTE7CisgICAgcmVjZWl2ZVBpcGUucmVjZWl2ZUZkID0gLTE7CisgICAgc2VuZFBpcGUuc2VuZEZkID0gLTE7Cit9CisKK1RFU1RfRihJbnB1dENoYW5uZWxUZXN0LCBPcGVuSW5wdXRDaGFubmVsUGFpcl9SZXR1cm5zQVBhaXJPZkNvbm5lY3RlZENoYW5uZWxzKSB7CisgICAgc3A8SW5wdXRDaGFubmVsPiBzZXJ2ZXJDaGFubmVsLCBjbGllbnRDaGFubmVsOworCisgICAgc3RhdHVzX3QgcmVzdWx0ID0gSW5wdXRDaGFubmVsOjpvcGVuSW5wdXRDaGFubmVsUGFpcihTdHJpbmc4KCJjaGFubmVsIG5hbWUiKSwKKyAgICAgICAgICAgIHNlcnZlckNoYW5uZWwsIGNsaWVudENoYW5uZWwpOworCisgICAgQVNTRVJUX0VRKE9LLCByZXN1bHQpCisgICAgICAgICAgICA8PCAic2hvdWxkIGhhdmUgc3VjY2Vzc2Z1bGx5IG9wZW5lZCBhIGNoYW5uZWwgcGFpciI7CisKKyAgICAvLyBOYW1lCisgICAgRVhQRUNUX1NUUkVRKCJjaGFubmVsIG5hbWUgKHNlcnZlcikiLCBzZXJ2ZXJDaGFubmVsLT5nZXROYW1lKCkuc3RyaW5nKCkpCisgICAgICAgICAgICA8PCAic2VydmVyIGNoYW5uZWwgc2hvdWxkIGhhdmUgc3VmZml4ZWQgbmFtZSI7CisgICAgRVhQRUNUX1NUUkVRKCJjaGFubmVsIG5hbWUgKGNsaWVudCkiLCBjbGllbnRDaGFubmVsLT5nZXROYW1lKCkuc3RyaW5nKCkpCisgICAgICAgICAgICA8PCAiY2xpZW50IGNoYW5uZWwgc2hvdWxkIGhhdmUgc3VmZml4ZWQgbmFtZSI7CisKKyAgICAvLyBBc2htZW0gdW5pcXVlbmVzcworICAgIEVYUEVDVF9ORShzZXJ2ZXJDaGFubmVsLT5nZXRBc2htZW1GZCgpLCBjbGllbnRDaGFubmVsLT5nZXRBc2htZW1GZCgpKQorICAgICAgICAgICAgPDwgInNlcnZlciBhbmQgY2xpZW50IGNoYW5uZWwgc2hvdWxkIGhhdmUgZGlmZmVyZW50IGFzaG1lbSBmZHMgYmVjYXVzZSBpdCB3YXMgZHVwJ2QiOworCisgICAgLy8gQXNobWVtIHVzYWJpbGl0eQorICAgIHNzaXplX3Qgc2VydmVyQXNobWVtU2l6ZSA9IGFzaG1lbV9nZXRfc2l6ZV9yZWdpb24oc2VydmVyQ2hhbm5lbC0+Z2V0QXNobWVtRmQoKSk7CisgICAgc3NpemVfdCBjbGllbnRBc2htZW1TaXplID0gYXNobWVtX2dldF9zaXplX3JlZ2lvbihjbGllbnRDaGFubmVsLT5nZXRBc2htZW1GZCgpKTsKKyAgICB1aW50MzJfdCogc2VydmVyQXNobWVtID0gc3RhdGljX2Nhc3Q8dWludDMyX3QqPihtbWFwKE5VTEwsIHNlcnZlckFzaG1lbVNpemUsCisgICAgICAgICAgICBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLCBNQVBfU0hBUkVELCBzZXJ2ZXJDaGFubmVsLT5nZXRBc2htZW1GZCgpLCAwKSk7CisgICAgdWludDMyX3QqIGNsaWVudEFzaG1lbSA9IHN0YXRpY19jYXN0PHVpbnQzMl90Kj4obW1hcChOVUxMLCBjbGllbnRBc2htZW1TaXplLAorICAgICAgICAgICAgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwgTUFQX1NIQVJFRCwgY2xpZW50Q2hhbm5lbC0+Z2V0QXNobWVtRmQoKSwgMCkpOworICAgIEFTU0VSVF9UUlVFKHNlcnZlckFzaG1lbSAhPSBOVUxMKQorICAgICAgICAgICAgPDwgInNlcnZlciBjaGFubmVsIGFzaG1lbSBzaG91bGQgYmUgbWFwcGFibGUiOworICAgIEFTU0VSVF9UUlVFKGNsaWVudEFzaG1lbSAhPSBOVUxMKQorICAgICAgICAgICAgPDwgImNsaWVudCBjaGFubmVsIGFzaG1lbSBzaG91bGQgYmUgbWFwcGFibGUiOworICAgICpzZXJ2ZXJBc2htZW0gPSAweGYwMGRkMDBkOworICAgIEVYUEVDVF9FUSgweGYwMGRkMDBkLCAqY2xpZW50QXNobWVtKQorICAgICAgICAgICAgPDwgImFzaG1lbSBidWZmZXIgc2hvdWxkIGJlIHNoYXJlZCBieSBjbGllbnQgYW5kIHNlcnZlciI7CisgICAgbXVubWFwKHNlcnZlckFzaG1lbSwgc2VydmVyQXNobWVtU2l6ZSk7CisgICAgbXVubWFwKGNsaWVudEFzaG1lbSwgY2xpZW50QXNobWVtU2l6ZSk7CisKKyAgICAvLyBTZXJ2ZXItPkNsaWVudCBjb21tdW5pY2F0aW9uCisgICAgRVhQRUNUX0VRKE9LLCBzZXJ2ZXJDaGFubmVsLT5zZW5kU2lnbmFsKCdTJykpCisgICAgICAgICAgICA8PCAic2VydmVyIGNoYW5uZWwgc2hvdWxkIGJlIGFibGUgdG8gc2VuZCBzaWduYWwgdG8gY2xpZW50IGNoYW5uZWwiOworICAgIGNoYXIgc2lnbmFsOworICAgIEVYUEVDVF9FUShPSywgY2xpZW50Q2hhbm5lbC0+cmVjZWl2ZVNpZ25hbCgmIHNpZ25hbCkpCisgICAgICAgICAgICA8PCAiY2xpZW50IGNoYW5uZWwgc2hvdWxkIGJlIGFibGUgdG8gcmVjZWl2ZSBzaWduYWwgZnJvbSBzZXJ2ZXIgY2hhbm5lbCI7CisgICAgRVhQRUNUX0VRKCdTJywgc2lnbmFsKQorICAgICAgICAgICAgPDwgImNsaWVudCBjaGFubmVsIHNob3VsZCByZWNlaXZlIHRoZSBjb3JyZWN0IHNpZ25hbCBmcm9tIHNlcnZlciBjaGFubmVsIjsKKworICAgIC8vIENsaWVudC0+U2VydmVyIGNvbW11bmljYXRpb24KKyAgICBFWFBFQ1RfRVEoT0ssIGNsaWVudENoYW5uZWwtPnNlbmRTaWduYWwoJ2MnKSkKKyAgICAgICAgICAgIDw8ICJjbGllbnQgY2hhbm5lbCBzaG91bGQgYmUgYWJsZSB0byBzZW5kIHNpZ25hbCB0byBzZXJ2ZXIgY2hhbm5lbCI7CisgICAgRVhQRUNUX0VRKE9LLCBzZXJ2ZXJDaGFubmVsLT5yZWNlaXZlU2lnbmFsKCYgc2lnbmFsKSkKKyAgICAgICAgICAgIDw8ICJzZXJ2ZXIgY2hhbm5lbCBzaG91bGQgYmUgYWJsZSB0byByZWNlaXZlIHNpZ25hbCBmcm9tIGNsaWVudCBjaGFubmVsIjsKKyAgICBFWFBFQ1RfRVEoJ2MnLCBzaWduYWwpCisgICAgICAgICAgICA8PCAic2VydmVyIGNoYW5uZWwgc2hvdWxkIHJlY2VpdmUgdGhlIGNvcnJlY3Qgc2lnbmFsIGZyb20gY2xpZW50IGNoYW5uZWwiOworfQorCitURVNUX0YoSW5wdXRDaGFubmVsVGVzdCwgUmVjZWl2ZVNpZ25hbF9XaGVuTm9TaWduYWxQcmVzZW50X1JldHVybnNBbkVycm9yKSB7CisgICAgc3A8SW5wdXRDaGFubmVsPiBzZXJ2ZXJDaGFubmVsLCBjbGllbnRDaGFubmVsOworCisgICAgc3RhdHVzX3QgcmVzdWx0ID0gSW5wdXRDaGFubmVsOjpvcGVuSW5wdXRDaGFubmVsUGFpcihTdHJpbmc4KCJjaGFubmVsIG5hbWUiKSwKKyAgICAgICAgICAgIHNlcnZlckNoYW5uZWwsIGNsaWVudENoYW5uZWwpOworCisgICAgQVNTRVJUX0VRKE9LLCByZXN1bHQpCisgICAgICAgICAgICA8PCAic2hvdWxkIGhhdmUgc3VjY2Vzc2Z1bGx5IG9wZW5lZCBhIGNoYW5uZWwgcGFpciI7CisKKyAgICBjaGFyIHNpZ25hbDsKKyAgICBFWFBFQ1RfRVEoV09VTERfQkxPQ0ssIGNsaWVudENoYW5uZWwtPnJlY2VpdmVTaWduYWwoJiBzaWduYWwpKQorICAgICAgICAgICAgPDwgInJlY2VpdmVTaWduYWwgc2hvdWxkIGhhdmUgcmV0dXJuZWQgV09VTERfQkxPQ0siOworfQorCitURVNUX0YoSW5wdXRDaGFubmVsVGVzdCwgUmVjZWl2ZVNpZ25hbF9XaGVuUGVlckNsb3NlZF9SZXR1cm5zQW5FcnJvcikgeworICAgIHNwPElucHV0Q2hhbm5lbD4gc2VydmVyQ2hhbm5lbCwgY2xpZW50Q2hhbm5lbDsKKworICAgIHN0YXR1c190IHJlc3VsdCA9IElucHV0Q2hhbm5lbDo6b3BlbklucHV0Q2hhbm5lbFBhaXIoU3RyaW5nOCgiY2hhbm5lbCBuYW1lIiksCisgICAgICAgICAgICBzZXJ2ZXJDaGFubmVsLCBjbGllbnRDaGFubmVsKTsKKworICAgIEFTU0VSVF9FUShPSywgcmVzdWx0KQorICAgICAgICAgICAgPDwgInNob3VsZCBoYXZlIHN1Y2Nlc3NmdWxseSBvcGVuZWQgYSBjaGFubmVsIHBhaXIiOworCisgICAgc2VydmVyQ2hhbm5lbC5jbGVhcigpOyAvLyBjbG9zZSBzZXJ2ZXIgY2hhbm5lbAorCisgICAgY2hhciBzaWduYWw7CisgICAgRVhQRUNUX0VRKERFQURfT0JKRUNULCBjbGllbnRDaGFubmVsLT5yZWNlaXZlU2lnbmFsKCYgc2lnbmFsKSkKKyAgICAgICAgICAgIDw8ICJyZWNlaXZlU2lnbmFsIHNob3VsZCBoYXZlIHJldHVybmVkIERFQURfT0JKRUNUIjsKK30KKworVEVTVF9GKElucHV0Q2hhbm5lbFRlc3QsIFNlbmRTaWduYWxfV2hlblBlZXJDbG9zZWRfUmV0dXJuc0FuRXJyb3IpIHsKKyAgICBzcDxJbnB1dENoYW5uZWw+IHNlcnZlckNoYW5uZWwsIGNsaWVudENoYW5uZWw7CisKKyAgICBzdGF0dXNfdCByZXN1bHQgPSBJbnB1dENoYW5uZWw6Om9wZW5JbnB1dENoYW5uZWxQYWlyKFN0cmluZzgoImNoYW5uZWwgbmFtZSIpLAorICAgICAgICAgICAgc2VydmVyQ2hhbm5lbCwgY2xpZW50Q2hhbm5lbCk7CisKKyAgICBBU1NFUlRfRVEoT0ssIHJlc3VsdCkKKyAgICAgICAgICAgIDw8ICJzaG91bGQgaGF2ZSBzdWNjZXNzZnVsbHkgb3BlbmVkIGEgY2hhbm5lbCBwYWlyIjsKKworICAgIHNlcnZlckNoYW5uZWwuY2xlYXIoKTsgLy8gY2xvc2Ugc2VydmVyIGNoYW5uZWwKKworICAgIEVYUEVDVF9FUShERUFEX09CSkVDVCwgY2xpZW50Q2hhbm5lbC0+c2VuZFNpZ25hbCgnUycpKQorICAgICAgICAgICAgPDwgInNlbmRTaWduYWwgc2hvdWxkIGhhdmUgcmV0dXJuZWQgREVBRF9PQkpFQ1QiOworfQorCisKK30gLy8gbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL2xpYnMvdWkvdGVzdHMvSW5wdXREaXNwYXRjaGVyX3Rlc3QuY3BwIGIvbGlicy91aS90ZXN0cy9JbnB1dERpc3BhdGNoZXJfdGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWRjNmU0NgotLS0gL2Rldi9udWxsCisrKyBiL2xpYnMvdWkvdGVzdHMvSW5wdXREaXNwYXRjaGVyX3Rlc3QuY3BwCkBAIC0wLDAgKzEsMTggQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisvLworCisjaW5jbHVkZSA8dWkvSW5wdXREaXNwYXRjaGVyLmg+CisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitjbGFzcyBJbnB1dERpc3BhdGNoZXJUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworcHVibGljOgorfTsKKworVEVTVF9GKElucHV0RGlzcGF0Y2hlclRlc3QsIER1bW15KSB7CisgICAgLy8gVE9ETworfQorCit9IC8vIG5hbWVzcGFjZSBhbmRyb2lkCmRpZmYgLS1naXQgYS9saWJzL3VpL3Rlc3RzL0lucHV0UHVibGlzaGVyQW5kQ29uc3VtZXJfdGVzdC5jcHAgYi9saWJzL3VpL3Rlc3RzL0lucHV0UHVibGlzaGVyQW5kQ29uc3VtZXJfdGVzdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQ2YjUzMQotLS0gL2Rldi9udWxsCisrKyBiL2xpYnMvdWkvdGVzdHMvSW5wdXRQdWJsaXNoZXJBbmRDb25zdW1lcl90ZXN0LmNwcApAQCAtMCwwICsxLDQ0OSBAQAorLy8KKy8vIENvcHlyaWdodCAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKy8vCisKKyNpbmNsdWRlIDx1aS9JbnB1dFRyYW5zcG9ydC5oPgorI2luY2x1ZGUgPHV0aWxzL1RpbWVycy5oPgorI2luY2x1ZGUgPHV0aWxzL1N0b3BXYXRjaC5oPgorI2luY2x1ZGUgPGd0ZXN0L2d0ZXN0Lmg+CisjaW5jbHVkZSA8dW5pc3RkLmg+CisjaW5jbHVkZSA8dGltZS5oPgorI2luY2x1ZGUgPHN5cy9tbWFuLmg+CisjaW5jbHVkZSA8Y3V0aWxzL2FzaG1lbS5oPgorCisjaW5jbHVkZSAiLi4vLi4vdXRpbHMvdGVzdHMvVGVzdEhlbHBlcnMuaCIKKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitjbGFzcyBJbnB1dFB1Ymxpc2hlckFuZENvbnN1bWVyVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpUZXN0IHsKK3Byb3RlY3RlZDoKKyAgICBzcDxJbnB1dENoYW5uZWw+IHNlcnZlckNoYW5uZWwsIGNsaWVudENoYW5uZWw7CisgICAgSW5wdXRQdWJsaXNoZXIqIG1QdWJsaXNoZXI7CisgICAgSW5wdXRDb25zdW1lciogbUNvbnN1bWVyOworICAgIFByZWFsbG9jYXRlZElucHV0RXZlbnRGYWN0b3J5IG1FdmVudEZhY3Rvcnk7CisKKyAgICB2aXJ0dWFsIHZvaWQgU2V0VXAoKSB7CisgICAgICAgIHN0YXR1c190IHJlc3VsdCA9IElucHV0Q2hhbm5lbDo6b3BlbklucHV0Q2hhbm5lbFBhaXIoU3RyaW5nOCgiY2hhbm5lbCBuYW1lIiksCisgICAgICAgICAgICAgICAgc2VydmVyQ2hhbm5lbCwgY2xpZW50Q2hhbm5lbCk7CisKKyAgICAgICAgbVB1Ymxpc2hlciA9IG5ldyBJbnB1dFB1Ymxpc2hlcihzZXJ2ZXJDaGFubmVsKTsKKyAgICAgICAgbUNvbnN1bWVyID0gbmV3IElucHV0Q29uc3VtZXIoY2xpZW50Q2hhbm5lbCk7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIFRlYXJEb3duKCkgeworICAgICAgICBpZiAobVB1Ymxpc2hlcikgeworICAgICAgICAgICAgZGVsZXRlIG1QdWJsaXNoZXI7CisgICAgICAgICAgICBtUHVibGlzaGVyID0gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtQ29uc3VtZXIpIHsKKyAgICAgICAgICAgIGRlbGV0ZSBtQ29uc3VtZXI7CisgICAgICAgICAgICBtQ29uc3VtZXIgPSBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgc2VydmVyQ2hhbm5lbC5jbGVhcigpOworICAgICAgICBjbGllbnRDaGFubmVsLmNsZWFyKCk7CisgICAgfQorCisgICAgdm9pZCBJbml0aWFsaXplKCk7CisgICAgdm9pZCBQdWJsaXNoQW5kQ29uc3VtZUtleUV2ZW50KCk7CisgICAgdm9pZCBQdWJsaXNoQW5kQ29uc3VtZU1vdGlvbkV2ZW50KAorICAgICAgICAgICAgc2l6ZV90IHNhbXBsZXNUb0FwcGVuZEJlZm9yZURpc3BhdGNoID0gMCwKKyAgICAgICAgICAgIHNpemVfdCBzYW1wbGVzVG9BcHBlbmRBZnRlckRpc3BhdGNoID0gMCk7Cit9OworCitURVNUX0YoSW5wdXRQdWJsaXNoZXJBbmRDb25zdW1lclRlc3QsIEdldENoYW5uZWxfUmV0dXJuc1RoZUNoYW5uZWwpIHsKKyAgICBFWFBFQ1RfRVEoc2VydmVyQ2hhbm5lbC5nZXQoKSwgbVB1Ymxpc2hlci0+Z2V0Q2hhbm5lbCgpLmdldCgpKTsKKyAgICBFWFBFQ1RfRVEoY2xpZW50Q2hhbm5lbC5nZXQoKSwgbUNvbnN1bWVyLT5nZXRDaGFubmVsKCkuZ2V0KCkpOworfQorCit2b2lkIElucHV0UHVibGlzaGVyQW5kQ29uc3VtZXJUZXN0OjpJbml0aWFsaXplKCkgeworICAgIHN0YXR1c190IHN0YXR1czsKKworICAgIHN0YXR1cyA9IG1QdWJsaXNoZXItPmluaXRpYWxpemUoKTsKKyAgICBBU1NFUlRfRVEoT0ssIHN0YXR1cykKKyAgICAgICAgICAgIDw8ICJwdWJsaXNoZXIgaW5pdGlhbGl6ZSBzaG91bGQgcmV0dXJuIE9LIjsKKworICAgIHN0YXR1cyA9IG1Db25zdW1lci0+aW5pdGlhbGl6ZSgpOworICAgIEFTU0VSVF9FUShPSywgc3RhdHVzKQorICAgICAgICAgICAgPDwgImNvbnN1bWVyIGluaXRpYWxpemUgc2hvdWxkIHJldHVybiBPSyI7Cit9CisKK3ZvaWQgSW5wdXRQdWJsaXNoZXJBbmRDb25zdW1lclRlc3Q6OlB1Ymxpc2hBbmRDb25zdW1lS2V5RXZlbnQoKSB7CisgICAgc3RhdHVzX3Qgc3RhdHVzOworCisgICAgY29uc3QgaW50MzJfdCBkZXZpY2VJZCA9IDE7CisgICAgY29uc3QgaW50MzJfdCBuYXR1cmUgPSBJTlBVVF9FVkVOVF9OQVRVUkVfS0VZOworICAgIGNvbnN0IGludDMyX3QgYWN0aW9uID0gS0VZX0VWRU5UX0FDVElPTl9ET1dOOworICAgIGNvbnN0IGludDMyX3QgZmxhZ3MgPSBLRVlfRVZFTlRfRkxBR19GUk9NX1NZU1RFTTsKKyAgICBjb25zdCBpbnQzMl90IGtleUNvZGUgPSBLRVlDT0RFX0VOVEVSOworICAgIGNvbnN0IGludDMyX3Qgc2NhbkNvZGUgPSAxMzsKKyAgICBjb25zdCBpbnQzMl90IG1ldGFTdGF0ZSA9IE1FVEFfQUxUX0xFRlRfT04gfCBNRVRBX0FMVF9PTjsKKyAgICBjb25zdCBpbnQzMl90IHJlcGVhdENvdW50ID0gMTsKKyAgICBjb25zdCBuc2Vjc190IGRvd25UaW1lID0gMzsKKyAgICBjb25zdCBuc2Vjc190IGV2ZW50VGltZSA9IDQ7CisKKyAgICBzdGF0dXMgPSBtUHVibGlzaGVyLT5wdWJsaXNoS2V5RXZlbnQoZGV2aWNlSWQsIG5hdHVyZSwgYWN0aW9uLCBmbGFncywKKyAgICAgICAgICAgIGtleUNvZGUsIHNjYW5Db2RlLCBtZXRhU3RhdGUsIHJlcGVhdENvdW50LCBkb3duVGltZSwgZXZlbnRUaW1lKTsKKyAgICBBU1NFUlRfRVEoT0ssIHN0YXR1cykKKyAgICAgICAgICAgIDw8ICJwdWJsaXNoZXIgcHVibGlzaEtleUV2ZW50IHNob3VsZCByZXR1cm4gT0siOworCisgICAgc3RhdHVzID0gbVB1Ymxpc2hlci0+c2VuZERpc3BhdGNoU2lnbmFsKCk7CisgICAgQVNTRVJUX0VRKE9LLCBzdGF0dXMpCisgICAgICAgICAgICA8PCAicHVibGlzaGVyIHNlbmREaXNwYXRjaFNpZ25hbCBzaG91bGQgcmV0dXJuIE9LIjsKKworICAgIHN0YXR1cyA9IG1Db25zdW1lci0+cmVjZWl2ZURpc3BhdGNoU2lnbmFsKCk7CisgICAgQVNTRVJUX0VRKE9LLCBzdGF0dXMpCisgICAgICAgICAgICA8PCAiY29uc3VtZXIgcmVjZWl2ZURpc3BhdGNoU2lnbmFsIHNob3VsZCByZXR1cm4gT0siOworCisgICAgSW5wdXRFdmVudCogZXZlbnQ7CisgICAgc3RhdHVzID0gbUNvbnN1bWVyLT5jb25zdW1lKCYgbUV2ZW50RmFjdG9yeSwgJiBldmVudCk7CisgICAgQVNTRVJUX0VRKE9LLCBzdGF0dXMpCisgICAgICAgICAgICA8PCAiY29uc3VtZXIgY29uc3VtZSBzaG91bGQgcmV0dXJuIE9LIjsKKworICAgIEFTU0VSVF9UUlVFKGV2ZW50ICE9IE5VTEwpCisgICAgICAgICAgICA8PCAiY29uc3VtZXIgc2hvdWxkIGhhdmUgcmV0dXJuZWQgbm9uLU5VTEwgZXZlbnQiOworICAgIEFTU0VSVF9FUShJTlBVVF9FVkVOVF9UWVBFX0tFWSwgZXZlbnQtPmdldFR5cGUoKSkKKyAgICAgICAgICAgIDw8ICJjb25zdW1lciBzaG91bGQgaGF2ZSByZXR1cm5lZCBhIGtleSBldmVudCI7CisKKyAgICBLZXlFdmVudCoga2V5RXZlbnQgPSBzdGF0aWNfY2FzdDxLZXlFdmVudCo+KGV2ZW50KTsKKyAgICBFWFBFQ1RfRVEoZGV2aWNlSWQsIGtleUV2ZW50LT5nZXREZXZpY2VJZCgpKTsKKyAgICBFWFBFQ1RfRVEobmF0dXJlLCBrZXlFdmVudC0+Z2V0TmF0dXJlKCkpOworICAgIEVYUEVDVF9FUShhY3Rpb24sIGtleUV2ZW50LT5nZXRBY3Rpb24oKSk7CisgICAgRVhQRUNUX0VRKGZsYWdzLCBrZXlFdmVudC0+Z2V0RmxhZ3MoKSk7CisgICAgRVhQRUNUX0VRKGtleUNvZGUsIGtleUV2ZW50LT5nZXRLZXlDb2RlKCkpOworICAgIEVYUEVDVF9FUShzY2FuQ29kZSwga2V5RXZlbnQtPmdldFNjYW5Db2RlKCkpOworICAgIEVYUEVDVF9FUShtZXRhU3RhdGUsIGtleUV2ZW50LT5nZXRNZXRhU3RhdGUoKSk7CisgICAgRVhQRUNUX0VRKHJlcGVhdENvdW50LCBrZXlFdmVudC0+Z2V0UmVwZWF0Q291bnQoKSk7CisgICAgRVhQRUNUX0VRKGRvd25UaW1lLCBrZXlFdmVudC0+Z2V0RG93blRpbWUoKSk7CisgICAgRVhQRUNUX0VRKGV2ZW50VGltZSwga2V5RXZlbnQtPmdldEV2ZW50VGltZSgpKTsKKworICAgIHN0YXR1cyA9IG1Db25zdW1lci0+c2VuZEZpbmlzaGVkU2lnbmFsKCk7CisgICAgQVNTRVJUX0VRKE9LLCBzdGF0dXMpCisgICAgICAgICAgICA8PCAiY29uc3VtZXIgc2VuZEZpbmlzaGVkU2lnbmFsIHNob3VsZCByZXR1cm4gT0siOworCisgICAgc3RhdHVzID0gbVB1Ymxpc2hlci0+cmVjZWl2ZUZpbmlzaGVkU2lnbmFsKCk7CisgICAgQVNTRVJUX0VRKE9LLCBzdGF0dXMpCisgICAgICAgICAgICA8PCAicHVibGlzaGVyIHJlY2VpdmVGaW5pc2hlZFNpZ25hbCBzaG91bGQgcmV0dXJuIE9LIjsKKworICAgIHN0YXR1cyA9IG1QdWJsaXNoZXItPnJlc2V0KCk7CisgICAgQVNTRVJUX0VRKE9LLCBzdGF0dXMpCisgICAgICAgICAgICA8PCAicHVibGlzaGVyIHJlc2V0IHNob3VsZCByZXR1cm4gT0siOworfQorCit2b2lkIElucHV0UHVibGlzaGVyQW5kQ29uc3VtZXJUZXN0OjpQdWJsaXNoQW5kQ29uc3VtZU1vdGlvbkV2ZW50KAorICAgICAgICBzaXplX3Qgc2FtcGxlc1RvQXBwZW5kQmVmb3JlRGlzcGF0Y2gsIHNpemVfdCBzYW1wbGVzVG9BcHBlbmRBZnRlckRpc3BhdGNoKSB7CisgICAgc3RhdHVzX3Qgc3RhdHVzOworCisgICAgY29uc3QgaW50MzJfdCBkZXZpY2VJZCA9IDE7CisgICAgY29uc3QgaW50MzJfdCBuYXR1cmUgPSBJTlBVVF9FVkVOVF9OQVRVUkVfVE9VQ0g7CisgICAgY29uc3QgaW50MzJfdCBhY3Rpb24gPSBNT1RJT05fRVZFTlRfQUNUSU9OX01PVkU7CisgICAgY29uc3QgaW50MzJfdCBlZGdlRmxhZ3MgPSBNT1RJT05fRVZFTlRfRURHRV9GTEFHX1RPUDsKKyAgICBjb25zdCBpbnQzMl90IG1ldGFTdGF0ZSA9IE1FVEFfQUxUX0xFRlRfT04gfCBNRVRBX0FMVF9PTjsKKyAgICBjb25zdCBmbG9hdCB4T2Zmc2V0ID0gLTEwOworICAgIGNvbnN0IGZsb2F0IHlPZmZzZXQgPSAtMjA7CisgICAgY29uc3QgZmxvYXQgeFByZWNpc2lvbiA9IDAuMjU7CisgICAgY29uc3QgZmxvYXQgeVByZWNpc2lvbiA9IDAuNTsKKyAgICBjb25zdCBuc2Vjc190IGRvd25UaW1lID0gMzsKKyAgICBjb25zdCBzaXplX3QgcG9pbnRlckNvdW50ID0gMzsKKyAgICBjb25zdCBpbnQzMl90IHBvaW50ZXJJZHNbcG9pbnRlckNvdW50XSA9IHsgMiwgMCwgMSB9OworCisgICAgVmVjdG9yPG5zZWNzX3Q+IHNhbXBsZUV2ZW50VGltZXM7CisgICAgVmVjdG9yPFBvaW50ZXJDb29yZHM+IHNhbXBsZVBvaW50ZXJDb29yZHM7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8PSBzYW1wbGVzVG9BcHBlbmRBZnRlckRpc3BhdGNoICsgc2FtcGxlc1RvQXBwZW5kQmVmb3JlRGlzcGF0Y2g7IGkrKykgeworICAgICAgICBzYW1wbGVFdmVudFRpbWVzLnB1c2goaSArIDEwKTsKKyAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBwb2ludGVyQ291bnQ7IGorKykgeworICAgICAgICAgICAgc2FtcGxlUG9pbnRlckNvb3Jkcy5wdXNoKCk7CisgICAgICAgICAgICBzYW1wbGVQb2ludGVyQ29vcmRzLmVkaXRUb3AoKS54ID0gMTAwICogaSArIGo7CisgICAgICAgICAgICBzYW1wbGVQb2ludGVyQ29vcmRzLmVkaXRUb3AoKS55ID0gMjAwICogaSArIGo7CisgICAgICAgICAgICBzYW1wbGVQb2ludGVyQ29vcmRzLmVkaXRUb3AoKS5wcmVzc3VyZSA9IDAuNSAqIGkgKyBqOworICAgICAgICAgICAgc2FtcGxlUG9pbnRlckNvb3Jkcy5lZGl0VG9wKCkuc2l6ZSA9IDAuNyAqIGkgKyBqOworICAgICAgICB9CisgICAgfQorCisgICAgc3RhdHVzID0gbVB1Ymxpc2hlci0+cHVibGlzaE1vdGlvbkV2ZW50KGRldmljZUlkLCBuYXR1cmUsIGFjdGlvbiwgZWRnZUZsYWdzLAorICAgICAgICAgICAgbWV0YVN0YXRlLCB4T2Zmc2V0LCB5T2Zmc2V0LCB4UHJlY2lzaW9uLCB5UHJlY2lzaW9uLAorICAgICAgICAgICAgZG93blRpbWUsIHNhbXBsZUV2ZW50VGltZXNbMF0sIHBvaW50ZXJDb3VudCwgcG9pbnRlcklkcywgc2FtcGxlUG9pbnRlckNvb3Jkcy5hcnJheSgpKTsKKyAgICBBU1NFUlRfRVEoT0ssIHN0YXR1cykKKyAgICAgICAgICAgIDw8ICJwdWJsaXNoZXIgcHVibGlzaE1vdGlvbkV2ZW50IHNob3VsZCByZXR1cm4gT0siOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzYW1wbGVzVG9BcHBlbmRCZWZvcmVEaXNwYXRjaDsgaSsrKSB7CisgICAgICAgIHNpemVfdCBzYW1wbGVJbmRleCA9IGkgKyAxOworICAgICAgICBzdGF0dXMgPSBtUHVibGlzaGVyLT5hcHBlbmRNb3Rpb25TYW1wbGUoc2FtcGxlRXZlbnRUaW1lc1tzYW1wbGVJbmRleF0sCisgICAgICAgICAgICAgICAgc2FtcGxlUG9pbnRlckNvb3Jkcy5hcnJheSgpICsgc2FtcGxlSW5kZXggKiBwb2ludGVyQ291bnQpOworICAgICAgICBBU1NFUlRfRVEoT0ssIHN0YXR1cykKKyAgICAgICAgICAgICAgICA8PCAicHVibGlzaGVyIGFwcGVuZE1vdGlvbkV2ZW50IHNob3VsZCByZXR1cm4gT0siOworICAgIH0KKworICAgIHN0YXR1cyA9IG1QdWJsaXNoZXItPnNlbmREaXNwYXRjaFNpZ25hbCgpOworICAgIEFTU0VSVF9FUShPSywgc3RhdHVzKQorICAgICAgICAgICAgPDwgInB1Ymxpc2hlciBzZW5kRGlzcGF0Y2hTaWduYWwgc2hvdWxkIHJldHVybiBPSyI7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNhbXBsZXNUb0FwcGVuZEFmdGVyRGlzcGF0Y2g7IGkrKykgeworICAgICAgICBzaXplX3Qgc2FtcGxlSW5kZXggPSBpICsgMSArIHNhbXBsZXNUb0FwcGVuZEJlZm9yZURpc3BhdGNoOworICAgICAgICBzdGF0dXMgPSBtUHVibGlzaGVyLT5hcHBlbmRNb3Rpb25TYW1wbGUoc2FtcGxlRXZlbnRUaW1lc1tzYW1wbGVJbmRleF0sCisgICAgICAgICAgICAgICAgc2FtcGxlUG9pbnRlckNvb3Jkcy5hcnJheSgpICsgc2FtcGxlSW5kZXggKiBwb2ludGVyQ291bnQpOworICAgICAgICBBU1NFUlRfRVEoT0ssIHN0YXR1cykKKyAgICAgICAgICAgICAgICA8PCAicHVibGlzaGVyIGFwcGVuZE1vdGlvbkV2ZW50IHNob3VsZCByZXR1cm4gT0siOworICAgIH0KKworICAgIHN0YXR1cyA9IG1Db25zdW1lci0+cmVjZWl2ZURpc3BhdGNoU2lnbmFsKCk7CisgICAgQVNTRVJUX0VRKE9LLCBzdGF0dXMpCisgICAgICAgICAgICA8PCAiY29uc3VtZXIgcmVjZWl2ZURpc3BhdGNoU2lnbmFsIHNob3VsZCByZXR1cm4gT0siOworCisgICAgSW5wdXRFdmVudCogZXZlbnQ7CisgICAgc3RhdHVzID0gbUNvbnN1bWVyLT5jb25zdW1lKCYgbUV2ZW50RmFjdG9yeSwgJiBldmVudCk7CisgICAgQVNTRVJUX0VRKE9LLCBzdGF0dXMpCisgICAgICAgICAgICA8PCAiY29uc3VtZXIgY29uc3VtZSBzaG91bGQgcmV0dXJuIE9LIjsKKworICAgIEFTU0VSVF9UUlVFKGV2ZW50ICE9IE5VTEwpCisgICAgICAgICAgICA8PCAiY29uc3VtZXIgc2hvdWxkIGhhdmUgcmV0dXJuZWQgbm9uLU5VTEwgZXZlbnQiOworICAgIEFTU0VSVF9FUShJTlBVVF9FVkVOVF9UWVBFX01PVElPTiwgZXZlbnQtPmdldFR5cGUoKSkKKyAgICAgICAgICAgIDw8ICJjb25zdW1lciBzaG91bGQgaGF2ZSByZXR1cm5lZCBhIG1vdGlvbiBldmVudCI7CisKKyAgICBzaXplX3QgbGFzdFNhbXBsZUluZGV4ID0gc2FtcGxlc1RvQXBwZW5kQmVmb3JlRGlzcGF0Y2ggKyBzYW1wbGVzVG9BcHBlbmRBZnRlckRpc3BhdGNoOworCisgICAgTW90aW9uRXZlbnQqIG1vdGlvbkV2ZW50ID0gc3RhdGljX2Nhc3Q8TW90aW9uRXZlbnQqPihldmVudCk7CisgICAgRVhQRUNUX0VRKGRldmljZUlkLCBtb3Rpb25FdmVudC0+Z2V0RGV2aWNlSWQoKSk7CisgICAgRVhQRUNUX0VRKG5hdHVyZSwgbW90aW9uRXZlbnQtPmdldE5hdHVyZSgpKTsKKyAgICBFWFBFQ1RfRVEoYWN0aW9uLCBtb3Rpb25FdmVudC0+Z2V0QWN0aW9uKCkpOworICAgIEVYUEVDVF9FUShlZGdlRmxhZ3MsIG1vdGlvbkV2ZW50LT5nZXRFZGdlRmxhZ3MoKSk7CisgICAgRVhQRUNUX0VRKG1ldGFTdGF0ZSwgbW90aW9uRXZlbnQtPmdldE1ldGFTdGF0ZSgpKTsKKyAgICBFWFBFQ1RfRVEoeFByZWNpc2lvbiwgbW90aW9uRXZlbnQtPmdldFhQcmVjaXNpb24oKSk7CisgICAgRVhQRUNUX0VRKHlQcmVjaXNpb24sIG1vdGlvbkV2ZW50LT5nZXRZUHJlY2lzaW9uKCkpOworICAgIEVYUEVDVF9FUShkb3duVGltZSwgbW90aW9uRXZlbnQtPmdldERvd25UaW1lKCkpOworICAgIEVYUEVDVF9FUShzYW1wbGVFdmVudFRpbWVzW2xhc3RTYW1wbGVJbmRleF0sIG1vdGlvbkV2ZW50LT5nZXRFdmVudFRpbWUoKSk7CisgICAgRVhQRUNUX0VRKHBvaW50ZXJDb3VudCwgbW90aW9uRXZlbnQtPmdldFBvaW50ZXJDb3VudCgpKTsKKyAgICBFWFBFQ1RfRVEobGFzdFNhbXBsZUluZGV4LCBtb3Rpb25FdmVudC0+Z2V0SGlzdG9yeVNpemUoKSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBvaW50ZXJDb3VudDsgaSsrKSB7CisgICAgICAgIFNDT1BFRF9UUkFDRShpKTsKKyAgICAgICAgRVhQRUNUX0VRKHBvaW50ZXJJZHNbaV0sIG1vdGlvbkV2ZW50LT5nZXRQb2ludGVySWQoaSkpOworICAgIH0KKworICAgIGZvciAoc2l6ZV90IHNhbXBsZUluZGV4ID0gMDsgc2FtcGxlSW5kZXggPCBsYXN0U2FtcGxlSW5kZXg7IHNhbXBsZUluZGV4KyspIHsKKyAgICAgICAgU0NPUEVEX1RSQUNFKHNhbXBsZUluZGV4KTsKKyAgICAgICAgRVhQRUNUX0VRKHNhbXBsZUV2ZW50VGltZXNbc2FtcGxlSW5kZXhdLAorICAgICAgICAgICAgICAgIG1vdGlvbkV2ZW50LT5nZXRIaXN0b3JpY2FsRXZlbnRUaW1lKHNhbXBsZUluZGV4KSk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcG9pbnRlckNvdW50OyBpKyspIHsKKyAgICAgICAgICAgIFNDT1BFRF9UUkFDRShpKTsKKyAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBzYW1wbGVJbmRleCAqIHBvaW50ZXJDb3VudCArIGk7CisgICAgICAgICAgICBFWFBFQ1RfRVEoc2FtcGxlUG9pbnRlckNvb3Jkc1tvZmZzZXRdLngsCisgICAgICAgICAgICAgICAgICAgIG1vdGlvbkV2ZW50LT5nZXRIaXN0b3JpY2FsUmF3WChpLCBzYW1wbGVJbmRleCkpOworICAgICAgICAgICAgRVhQRUNUX0VRKHNhbXBsZVBvaW50ZXJDb29yZHNbb2Zmc2V0XS55LAorICAgICAgICAgICAgICAgICAgICBtb3Rpb25FdmVudC0+Z2V0SGlzdG9yaWNhbFJhd1koaSwgc2FtcGxlSW5kZXgpKTsKKyAgICAgICAgICAgIEVYUEVDVF9FUShzYW1wbGVQb2ludGVyQ29vcmRzW29mZnNldF0ueCArIHhPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgIG1vdGlvbkV2ZW50LT5nZXRIaXN0b3JpY2FsWChpLCBzYW1wbGVJbmRleCkpOworICAgICAgICAgICAgRVhQRUNUX0VRKHNhbXBsZVBvaW50ZXJDb29yZHNbb2Zmc2V0XS55ICsgeU9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgbW90aW9uRXZlbnQtPmdldEhpc3RvcmljYWxZKGksIHNhbXBsZUluZGV4KSk7CisgICAgICAgICAgICBFWFBFQ1RfRVEoc2FtcGxlUG9pbnRlckNvb3Jkc1tvZmZzZXRdLnByZXNzdXJlLAorICAgICAgICAgICAgICAgICAgICBtb3Rpb25FdmVudC0+Z2V0SGlzdG9yaWNhbFByZXNzdXJlKGksIHNhbXBsZUluZGV4KSk7CisgICAgICAgICAgICBFWFBFQ1RfRVEoc2FtcGxlUG9pbnRlckNvb3Jkc1tvZmZzZXRdLnNpemUsCisgICAgICAgICAgICAgICAgICAgIG1vdGlvbkV2ZW50LT5nZXRIaXN0b3JpY2FsU2l6ZShpLCBzYW1wbGVJbmRleCkpOworICAgICAgICB9CisgICAgfQorCisgICAgU0NPUEVEX1RSQUNFKGxhc3RTYW1wbGVJbmRleCk7CisgICAgRVhQRUNUX0VRKHNhbXBsZUV2ZW50VGltZXNbbGFzdFNhbXBsZUluZGV4XSwgbW90aW9uRXZlbnQtPmdldEV2ZW50VGltZSgpKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBvaW50ZXJDb3VudDsgaSsrKSB7CisgICAgICAgIFNDT1BFRF9UUkFDRShpKTsKKyAgICAgICAgc2l6ZV90IG9mZnNldCA9IGxhc3RTYW1wbGVJbmRleCAqIHBvaW50ZXJDb3VudCArIGk7CisgICAgICAgIEVYUEVDVF9FUShzYW1wbGVQb2ludGVyQ29vcmRzW29mZnNldF0ueCwgbW90aW9uRXZlbnQtPmdldFJhd1goaSkpOworICAgICAgICBFWFBFQ1RfRVEoc2FtcGxlUG9pbnRlckNvb3Jkc1tvZmZzZXRdLnksIG1vdGlvbkV2ZW50LT5nZXRSYXdZKGkpKTsKKyAgICAgICAgRVhQRUNUX0VRKHNhbXBsZVBvaW50ZXJDb29yZHNbb2Zmc2V0XS54ICsgeE9mZnNldCwgbW90aW9uRXZlbnQtPmdldFgoaSkpOworICAgICAgICBFWFBFQ1RfRVEoc2FtcGxlUG9pbnRlckNvb3Jkc1tvZmZzZXRdLnkgKyB5T2Zmc2V0LCBtb3Rpb25FdmVudC0+Z2V0WShpKSk7CisgICAgICAgIEVYUEVDVF9FUShzYW1wbGVQb2ludGVyQ29vcmRzW29mZnNldF0ucHJlc3N1cmUsIG1vdGlvbkV2ZW50LT5nZXRQcmVzc3VyZShpKSk7CisgICAgICAgIEVYUEVDVF9FUShzYW1wbGVQb2ludGVyQ29vcmRzW29mZnNldF0uc2l6ZSwgbW90aW9uRXZlbnQtPmdldFNpemUoaSkpOworICAgIH0KKworICAgIHN0YXR1cyA9IG1Db25zdW1lci0+c2VuZEZpbmlzaGVkU2lnbmFsKCk7CisgICAgQVNTRVJUX0VRKE9LLCBzdGF0dXMpCisgICAgICAgICAgICA8PCAiY29uc3VtZXIgc2VuZEZpbmlzaGVkU2lnbmFsIHNob3VsZCByZXR1cm4gT0siOworCisgICAgc3RhdHVzID0gbVB1Ymxpc2hlci0+cmVjZWl2ZUZpbmlzaGVkU2lnbmFsKCk7CisgICAgQVNTRVJUX0VRKE9LLCBzdGF0dXMpCisgICAgICAgICAgICA8PCAicHVibGlzaGVyIHJlY2VpdmVGaW5pc2hlZFNpZ25hbCBzaG91bGQgcmV0dXJuIE9LIjsKKworICAgIHN0YXR1cyA9IG1QdWJsaXNoZXItPnJlc2V0KCk7CisgICAgQVNTRVJUX0VRKE9LLCBzdGF0dXMpCisgICAgICAgICAgICA8PCAicHVibGlzaGVyIHJlc2V0IHNob3VsZCByZXR1cm4gT0siOworfQorCitURVNUX0YoSW5wdXRQdWJsaXNoZXJBbmRDb25zdW1lclRlc3QsIFB1Ymxpc2hLZXlFdmVudF9FbmRUb0VuZCkgeworICAgIEFTU0VSVF9OT19GQVRBTF9GQUlMVVJFKEluaXRpYWxpemUoKSk7CisgICAgQVNTRVJUX05PX0ZBVEFMX0ZBSUxVUkUoUHVibGlzaEFuZENvbnN1bWVLZXlFdmVudCgpKTsKK30KKworVEVTVF9GKElucHV0UHVibGlzaGVyQW5kQ29uc3VtZXJUZXN0LCBQdWJsaXNoS2V5RXZlbnRfV2hlbk5vdFJlc2V0X1JldHVybnNFcnJvcikgeworICAgIHN0YXR1c190IHN0YXR1czsKKyAgICBBU1NFUlRfTk9fRkFUQUxfRkFJTFVSRShJbml0aWFsaXplKCkpOworCisgICAgc3RhdHVzID0gbVB1Ymxpc2hlci0+cHVibGlzaEtleUV2ZW50KDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDApOworICAgIEFTU0VSVF9FUShPSywgc3RhdHVzKQorICAgICAgICAgICAgPDwgInB1Ymxpc2hlciBwdWJsaXNoS2V5RXZlbnQgc2hvdWxkIHJldHVybiBPSyBmaXJzdCB0aW1lIjsKKworICAgIHN0YXR1cyA9IG1QdWJsaXNoZXItPnB1Ymxpc2hLZXlFdmVudCgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwKTsKKyAgICBBU1NFUlRfRVEoSU5WQUxJRF9PUEVSQVRJT04sIHN0YXR1cykKKyAgICAgICAgICAgIDw8ICJwdWJsaXNoZXIgcHVibGlzaEtleUV2ZW50IHNob3VsZCByZXR1cm4gSU5WQUxJRF9PUEVSQVRJT04gYmVjYXVzZSAiCisgICAgICAgICAgICAgICAgICAgICJ0aGUgcHVibGlzaGVyIHdhcyBub3QgcmVzZXQiOworfQorCitURVNUX0YoSW5wdXRQdWJsaXNoZXJBbmRDb25zdW1lclRlc3QsIFB1Ymxpc2hNb3Rpb25FdmVudF9FbmRUb0VuZCkgeworICAgIEFTU0VSVF9OT19GQVRBTF9GQUlMVVJFKEluaXRpYWxpemUoKSk7CisgICAgQVNTRVJUX05PX0ZBVEFMX0ZBSUxVUkUoUHVibGlzaEFuZENvbnN1bWVNb3Rpb25FdmVudCgpKTsKK30KKworVEVTVF9GKElucHV0UHVibGlzaGVyQW5kQ29uc3VtZXJUZXN0LCBQdWJsaXNoTW90aW9uRXZlbnRfV2hlbk5vdFJlc2V0X1JldHVybnNFcnJvcikgeworICAgIHN0YXR1c190IHN0YXR1czsKKyAgICBBU1NFUlRfTk9fRkFUQUxfRkFJTFVSRShJbml0aWFsaXplKCkpOworCisgICAgY29uc3Qgc2l6ZV90IHBvaW50ZXJDb3VudCA9IDE7CisgICAgaW50MzJfdCBwb2ludGVySWRzW3BvaW50ZXJDb3VudF0gPSB7IDAgfTsKKyAgICBQb2ludGVyQ29vcmRzIHBvaW50ZXJDb29yZHNbcG9pbnRlckNvdW50XSA9IHsgeyAwLCAwLCAwLCAwIH0gfTsKKworICAgIHN0YXR1cyA9IG1QdWJsaXNoZXItPnB1Ymxpc2hNb3Rpb25FdmVudCgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgICAgICAgICAgcG9pbnRlckNvdW50LCBwb2ludGVySWRzLCBwb2ludGVyQ29vcmRzKTsKKyAgICBBU1NFUlRfRVEoT0ssIHN0YXR1cykKKyAgICAgICAgICAgIDw8ICJwdWJsaXNoZXIgcHVibGlzaE1vdGlvbkV2ZW50IHNob3VsZCByZXR1cm4gT0siOworCisgICAgc3RhdHVzID0gbVB1Ymxpc2hlci0+cHVibGlzaE1vdGlvbkV2ZW50KDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsCisgICAgICAgICAgICBwb2ludGVyQ291bnQsIHBvaW50ZXJJZHMsIHBvaW50ZXJDb29yZHMpOworICAgIEFTU0VSVF9FUShJTlZBTElEX09QRVJBVElPTiwgc3RhdHVzKQorICAgICAgICAgICAgPDwgInB1Ymxpc2hlciBwdWJsaXNoTW90aW9uRXZlbnQgc2hvdWxkIHJldHVybiBJTlZBTElEX09QRVJBVElPTiBiZWNhdXNlICI7CisgICAgICAgICAgICAgICAgICAgICJ0aGUgcHVibGlzaGVyIHdhcyBub3QgcmVzZXQiOworfQorCitURVNUX0YoSW5wdXRQdWJsaXNoZXJBbmRDb25zdW1lclRlc3QsIFB1Ymxpc2hNb3Rpb25FdmVudF9XaGVuUG9pbnRlckNvdW50TGVzc1RoYW4xX1JldHVybnNFcnJvcikgeworICAgIHN0YXR1c190IHN0YXR1czsKKyAgICBBU1NFUlRfTk9fRkFUQUxfRkFJTFVSRShJbml0aWFsaXplKCkpOworCisgICAgY29uc3Qgc2l6ZV90IHBvaW50ZXJDb3VudCA9IDA7CisgICAgaW50MzJfdCBwb2ludGVySWRzW3BvaW50ZXJDb3VudF07CisgICAgUG9pbnRlckNvb3JkcyBwb2ludGVyQ29vcmRzW3BvaW50ZXJDb3VudF07CisKKyAgICBzdGF0dXMgPSBtUHVibGlzaGVyLT5wdWJsaXNoTW90aW9uRXZlbnQoMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKKyAgICAgICAgICAgIHBvaW50ZXJDb3VudCwgcG9pbnRlcklkcywgcG9pbnRlckNvb3Jkcyk7CisgICAgQVNTRVJUX0VRKEJBRF9WQUxVRSwgc3RhdHVzKQorICAgICAgICAgICAgPDwgInB1Ymxpc2hlciBwdWJsaXNoTW90aW9uRXZlbnQgc2hvdWxkIHJldHVybiBCQURfVkFMVUUiOworfQorCitURVNUX0YoSW5wdXRQdWJsaXNoZXJBbmRDb25zdW1lclRlc3QsIFB1Ymxpc2hNb3Rpb25FdmVudF9XaGVuUG9pbnRlckNvdW50R3JlYXRlclRoYW5NYXhfUmV0dXJuc0Vycm9yKSB7CisgICAgc3RhdHVzX3Qgc3RhdHVzOworICAgIEFTU0VSVF9OT19GQVRBTF9GQUlMVVJFKEluaXRpYWxpemUoKSk7CisKKyAgICBjb25zdCBzaXplX3QgcG9pbnRlckNvdW50ID0gTUFYX1BPSU5URVJTICsgMTsKKyAgICBpbnQzMl90IHBvaW50ZXJJZHNbcG9pbnRlckNvdW50XTsKKyAgICBQb2ludGVyQ29vcmRzIHBvaW50ZXJDb29yZHNbcG9pbnRlckNvdW50XTsKKworICAgIHN0YXR1cyA9IG1QdWJsaXNoZXItPnB1Ymxpc2hNb3Rpb25FdmVudCgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLAorICAgICAgICAgICAgcG9pbnRlckNvdW50LCBwb2ludGVySWRzLCBwb2ludGVyQ29vcmRzKTsKKyAgICBBU1NFUlRfRVEoQkFEX1ZBTFVFLCBzdGF0dXMpCisgICAgICAgICAgICA8PCAicHVibGlzaGVyIHB1Ymxpc2hNb3Rpb25FdmVudCBzaG91bGQgcmV0dXJuIEJBRF9WQUxVRSI7Cit9CisKK1RFU1RfRihJbnB1dFB1Ymxpc2hlckFuZENvbnN1bWVyVGVzdCwgUHVibGlzaE11bHRpcGxlRXZlbnRzX0VuZFRvRW5kKSB7CisgICAgQVNTRVJUX05PX0ZBVEFMX0ZBSUxVUkUoSW5pdGlhbGl6ZSgpKTsKKyAgICBBU1NFUlRfTk9fRkFUQUxfRkFJTFVSRShQdWJsaXNoQW5kQ29uc3VtZU1vdGlvbkV2ZW50KCkpOworICAgIEFTU0VSVF9OT19GQVRBTF9GQUlMVVJFKFB1Ymxpc2hBbmRDb25zdW1lS2V5RXZlbnQoKSk7CisgICAgQVNTRVJUX05PX0ZBVEFMX0ZBSUxVUkUoUHVibGlzaEFuZENvbnN1bWVNb3Rpb25FdmVudCgpKTsKKyAgICBBU1NFUlRfTk9fRkFUQUxfRkFJTFVSRShQdWJsaXNoQW5kQ29uc3VtZU1vdGlvbkV2ZW50KCkpOworICAgIEFTU0VSVF9OT19GQVRBTF9GQUlMVVJFKFB1Ymxpc2hBbmRDb25zdW1lS2V5RXZlbnQoKSk7Cit9CisKK1RFU1RfRihJbnB1dFB1Ymxpc2hlckFuZENvbnN1bWVyVGVzdCwgQXBwZW5kTW90aW9uU2FtcGxlX1doZW5DYWxsZWRCZWZvcmVEaXNwYXRjaFNpZ25hbF9BcHBlbmRzU2FtcGxlcykgeworICAgIHN0YXR1c190IHN0YXR1czsKKyAgICBBU1NFUlRfTk9fRkFUQUxfRkFJTFVSRShJbml0aWFsaXplKCkpOworICAgIEFTU0VSVF9OT19GQVRBTF9GQUlMVVJFKFB1Ymxpc2hBbmRDb25zdW1lTW90aW9uRXZlbnQoMywgMCkpOworfQorCitURVNUX0YoSW5wdXRQdWJsaXNoZXJBbmRDb25zdW1lclRlc3QsIEFwcGVuZE1vdGlvblNhbXBsZV9XaGVuQ2FsbGVkQWZ0ZXJEaXNwYXRjaFNpZ25hbEFuZE5vdENvbnN1bWVkX0FwcGVuZHNTYW1wbGVzKSB7CisgICAgc3RhdHVzX3Qgc3RhdHVzOworICAgIEFTU0VSVF9OT19GQVRBTF9GQUlMVVJFKEluaXRpYWxpemUoKSk7CisgICAgQVNTRVJUX05PX0ZBVEFMX0ZBSUxVUkUoUHVibGlzaEFuZENvbnN1bWVNb3Rpb25FdmVudCgwLCA0KSk7Cit9CisKK1RFU1RfRihJbnB1dFB1Ymxpc2hlckFuZENvbnN1bWVyVGVzdCwgQXBwZW5kTW90aW9uU2FtcGxlX1doZW5Ob01vdGlvbkV2ZW50UHVibGlzaGVkX1JldHVybnNFcnJvcikgeworICAgIHN0YXR1c190IHN0YXR1czsKKyAgICBBU1NFUlRfTk9fRkFUQUxfRkFJTFVSRShJbml0aWFsaXplKCkpOworCisgICAgUG9pbnRlckNvb3JkcyBwb2ludGVyQ29vcmRzWzFdOworICAgIHN0YXR1cyA9IG1QdWJsaXNoZXItPmFwcGVuZE1vdGlvblNhbXBsZSgwLCBwb2ludGVyQ29vcmRzKTsKKyAgICBBU1NFUlRfRVEoSU5WQUxJRF9PUEVSQVRJT04sIHN0YXR1cykKKyAgICAgICAgICAgIDw8ICJwdWJsaXNoZXIgYXBwZW5kTW90aW9uU2FtcGxlIHNob3VsZCByZXR1cm4gSU5WQUxJRF9PUEVSQVRJT04iOworfQorCitURVNUX0YoSW5wdXRQdWJsaXNoZXJBbmRDb25zdW1lclRlc3QsIEFwcGVuZE1vdGlvblNhbXBsZV9XaGVuUHVibGlzaGVkTW90aW9uRXZlbnRJc05vdEFNb3ZlX1JldHVybnNFcnJvcikgeworICAgIHN0YXR1c190IHN0YXR1czsKKyAgICBBU1NFUlRfTk9fRkFUQUxfRkFJTFVSRShJbml0aWFsaXplKCkpOworCisgICAgY29uc3Qgc2l6ZV90IHBvaW50ZXJDb3VudCA9IE1BWF9QT0lOVEVSUzsKKyAgICBpbnQzMl90IHBvaW50ZXJJZHNbcG9pbnRlckNvdW50XTsKKyAgICBQb2ludGVyQ29vcmRzIHBvaW50ZXJDb29yZHNbcG9pbnRlckNvdW50XTsKKworICAgIHN0YXR1cyA9IG1QdWJsaXNoZXItPnB1Ymxpc2hNb3Rpb25FdmVudCgwLCAwLCBNT1RJT05fRVZFTlRfQUNUSU9OX0RPV04sCisgICAgICAgICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCBwb2ludGVyQ291bnQsIHBvaW50ZXJJZHMsIHBvaW50ZXJDb29yZHMpOworICAgIEFTU0VSVF9FUShPSywgc3RhdHVzKTsKKworICAgIHN0YXR1cyA9IG1QdWJsaXNoZXItPmFwcGVuZE1vdGlvblNhbXBsZSgwLCBwb2ludGVyQ29vcmRzKTsKKyAgICBBU1NFUlRfRVEoSU5WQUxJRF9PUEVSQVRJT04sIHN0YXR1cykKKyAgICAgICAgICAgIDw8ICJwdWJsaXNoZXIgYXBwZW5kTW90aW9uU2FtcGxlIHNob3VsZCByZXR1cm4gSU5WQUxJRF9PUEVSQVRJT04iOworfQorCitURVNUX0YoSW5wdXRQdWJsaXNoZXJBbmRDb25zdW1lclRlc3QsIEFwcGVuZE1vdGlvblNhbXBsZV9XaGVuQWxyZWFkeUNvbnN1bWVkX1JldHVybnNFcnJvcikgeworICAgIHN0YXR1c190IHN0YXR1czsKKyAgICBBU1NFUlRfTk9fRkFUQUxfRkFJTFVSRShJbml0aWFsaXplKCkpOworCisgICAgY29uc3Qgc2l6ZV90IHBvaW50ZXJDb3VudCA9IE1BWF9QT0lOVEVSUzsKKyAgICBpbnQzMl90IHBvaW50ZXJJZHNbcG9pbnRlckNvdW50XTsKKyAgICBQb2ludGVyQ29vcmRzIHBvaW50ZXJDb29yZHNbcG9pbnRlckNvdW50XTsKKworICAgIHN0YXR1cyA9IG1QdWJsaXNoZXItPnB1Ymxpc2hNb3Rpb25FdmVudCgwLCAwLCBNT1RJT05fRVZFTlRfQUNUSU9OX01PVkUsCisgICAgICAgICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCBwb2ludGVyQ291bnQsIHBvaW50ZXJJZHMsIHBvaW50ZXJDb29yZHMpOworICAgIEFTU0VSVF9FUShPSywgc3RhdHVzKTsKKworICAgIHN0YXR1cyA9IG1QdWJsaXNoZXItPnNlbmREaXNwYXRjaFNpZ25hbCgpOworICAgIEFTU0VSVF9FUShPSywgc3RhdHVzKTsKKworICAgIHN0YXR1cyA9IG1Db25zdW1lci0+cmVjZWl2ZURpc3BhdGNoU2lnbmFsKCk7CisgICAgQVNTRVJUX0VRKE9LLCBzdGF0dXMpOworCisgICAgSW5wdXRFdmVudCogZXZlbnQ7CisgICAgc3RhdHVzID0gbUNvbnN1bWVyLT5jb25zdW1lKCYgbUV2ZW50RmFjdG9yeSwgJiBldmVudCk7CisgICAgQVNTRVJUX0VRKE9LLCBzdGF0dXMpOworCisgICAgc3RhdHVzID0gbVB1Ymxpc2hlci0+YXBwZW5kTW90aW9uU2FtcGxlKDAsIHBvaW50ZXJDb29yZHMpOworICAgIEFTU0VSVF9FUShzdGF0dXNfdChGQUlMRURfVFJBTlNBQ1RJT04pLCBzdGF0dXMpCisgICAgICAgICAgICA8PCAicHVibGlzaGVyIGFwcGVuZE1vdGlvblNhbXBsZSBzaG91bGQgcmV0dXJuIEZBSUxFRF9UUkFOU0FDVElPTiI7Cit9CisKK1RFU1RfRihJbnB1dFB1Ymxpc2hlckFuZENvbnN1bWVyVGVzdCwgQXBwZW5kTW90aW9uU2FtcGxlX1doZW5CdWZmZXJGdWxsX1JldHVybnNFcnJvcikgeworICAgIHN0YXR1c190IHN0YXR1czsKKyAgICBBU1NFUlRfTk9fRkFUQUxfRkFJTFVSRShJbml0aWFsaXplKCkpOworCisgICAgY29uc3Qgc2l6ZV90IHBvaW50ZXJDb3VudCA9IE1BWF9QT0lOVEVSUzsKKyAgICBpbnQzMl90IHBvaW50ZXJJZHNbcG9pbnRlckNvdW50XTsKKyAgICBQb2ludGVyQ29vcmRzIHBvaW50ZXJDb29yZHNbcG9pbnRlckNvdW50XTsKKworICAgIHN0YXR1cyA9IG1QdWJsaXNoZXItPnB1Ymxpc2hNb3Rpb25FdmVudCgwLCAwLCBNT1RJT05fRVZFTlRfQUNUSU9OX01PVkUsCisgICAgICAgICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCBwb2ludGVyQ291bnQsIHBvaW50ZXJJZHMsIHBvaW50ZXJDb29yZHMpOworICAgIEFTU0VSVF9FUShPSywgc3RhdHVzKTsKKworICAgIGZvciAoaW50IGNvdW50ID0gMTs7IGNvdW50KyspIHsKKyAgICAgICAgQVNTRVJUX0xUKGNvdW50LCAxMDAwMDApIDw8ICJzaG91bGQgZXZlbnR1YWxseSByZWFjaCBPT00iOworCisgICAgICAgIHN0YXR1cyA9IG1QdWJsaXNoZXItPmFwcGVuZE1vdGlvblNhbXBsZSgwLCBwb2ludGVyQ29vcmRzKTsKKyAgICAgICAgaWYgKHN0YXR1cyAhPSBPSykgeworICAgICAgICAgICAgQVNTRVJUX0dUKGNvdW50LCAxMikgPDwgInNob3VsZCBiZSBhYmxlIHRvIGFkZCBhdCBsZWFzdCBhIGRvemVuIHNhbXBsZXMiOworICAgICAgICAgICAgQVNTRVJUX0VRKE5PX01FTU9SWSwgc3RhdHVzKQorICAgICAgICAgICAgICAgICAgICA8PCAicHVibGlzaGVyIGFwcGVuZE1vdGlvblNhbXBsZSBzaG91bGQgcmV0dXJuIE5PX01FTU9SWSB3aGVuIGJ1ZmZlciBpcyBmdWxsIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgc3RhdHVzID0gbVB1Ymxpc2hlci0+YXBwZW5kTW90aW9uU2FtcGxlKDAsIHBvaW50ZXJDb29yZHMpOworICAgIEFTU0VSVF9FUShOT19NRU1PUlksIHN0YXR1cykKKyAgICAgICAgICAgIDw8ICJwdWJsaXNoZXIgYXBwZW5kTW90aW9uU2FtcGxlIHNob3VsZCByZXR1cm4gTk9fTUVNT1JZIHBlcnNpc3RlbnRseSB1bnRpbCByZXNldCI7Cit9CisKK30gLy8gbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL2xpYnMvdWkvdGVzdHMvcmVnaW9uL0FuZHJvaWQubWsgYi9saWJzL3VpL3Rlc3RzL3JlZ2lvbi9BbmRyb2lkLm1rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjYzRhNWEKLS0tIC9kZXYvbnVsbAorKysgYi9saWJzL3VpL3Rlc3RzL3JlZ2lvbi9BbmRyb2lkLm1rCkBAIC0wLDAgKzEsMTYgQEAKK0xPQ0FMX1BBVEg6PSAkKGNhbGwgbXktZGlyKQoraW5jbHVkZSAkKENMRUFSX1ZBUlMpCisKK0xPQ0FMX1NSQ19GSUxFUzo9IFwKKwlyZWdpb24uY3BwCisKK0xPQ0FMX1NIQVJFRF9MSUJSQVJJRVMgOj0gXAorCWxpYmN1dGlscyBcCisJbGlidXRpbHMgXAorICAgIGxpYnVpCisKK0xPQ0FMX01PRFVMRTo9IHRlc3QtcmVnaW9uCisKK0xPQ0FMX01PRFVMRV9UQUdTIDo9IHRlc3RzCisKK2luY2x1ZGUgJChCVUlMRF9FWEVDVVRBQkxFKQpkaWZmIC0tZ2l0IGEvbGlicy91aS90ZXN0cy9yZWdpb24uY3BwIGIvbGlicy91aS90ZXN0cy9yZWdpb24vcmVnaW9uLmNwcApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbGlicy91aS90ZXN0cy9yZWdpb24uY3BwCnJlbmFtZSB0byBsaWJzL3VpL3Rlc3RzL3JlZ2lvbi9yZWdpb24uY3BwCmRpZmYgLS1naXQgYS9saWJzL3V0aWxzL0FuZHJvaWQubWsgYi9saWJzL3V0aWxzL0FuZHJvaWQubWsKaW5kZXggYWZlY2RjYi4uMmJiNDJhYiAxMDA2NDQKLS0tIGEvbGlicy91dGlscy9BbmRyb2lkLm1rCisrKyBiL2xpYnMvdXRpbHMvQW5kcm9pZC5tawpAQCAtMjYsNiArMjYsOCBAQAogCURlYnVnLmNwcCBcCiAJRmlsZU1hcC5jcHAgXAogCUZsYXR0ZW5hYmxlLmNwcCBcCisJT2JiRmlsZS5jcHAgXAorCVBvb2wuY3BwIFwKIAlSZWZCYXNlLmNwcCBcCiAJUmVzb3VyY2VUeXBlcy5jcHAgXAogCVNoYXJlZEJ1ZmZlci5jcHAgXApAQCAtMzksNyArNDEsNyBAQAogCVRocmVhZHMuY3BwIFwKIAlUaW1lcnMuY3BwIFwKIAlWZWN0b3JJbXBsLmNwcCBcCi0gICAgWmlwRmlsZUNSTy5jcHAgXAorCVppcEZpbGVDUk8uY3BwIFwKIAlaaXBGaWxlUk8uY3BwIFwKIAlaaXBVdGlscy5jcHAgXAogCW1pc2MuY3BwCkBAIC02NCw2ICs2NiwxMSBAQAogZW5kaWYKIGVuZGlmCiAKK2lmZXEgKCQoSE9TVF9PUyksZGFyd2luKQorIyBNYWNPUyBkb2Vzbid0IGhhdmUgbHNlZWs2NC4gSG93ZXZlciwgb2ZmX3QgaXMgNjQtYml0IGFueXdheS4KK0xPQ0FMX0NGTEFHUyArPSAtRE9GRl9UX0lTXzY0X0JJVAorZW5kaWYKKwogaW5jbHVkZSAkKEJVSUxEX0hPU1RfU1RBVElDX0xJQlJBUlkpCiAKIApAQCAtNzYsOCArODMsOSBAQAogIyB3ZSBoYXZlIHRoZSBjb21tb24gc291cmNlcywgcGx1cyBzb21lIGRldmljZS1zcGVjaWZpYyBzdHVmZgogTE9DQUxfU1JDX0ZJTEVTOj0gXAogCSQoY29tbW9uU291cmNlcykgXAotICAgIEJhY2t1cERhdGEuY3BwIFwKLQlCYWNrdXBIZWxwZXJzLmNwcAorCUJhY2t1cERhdGEuY3BwIFwKKwlCYWNrdXBIZWxwZXJzLmNwcCBcCisJUG9sbExvb3AuY3BwCiAKIGlmZXEgKCQoVEFSR0VUX09TKSxsaW51eCkKIExPQ0FMX0xETElCUyArPSAtbHJ0IC1sZGwKZGlmZiAtLWdpdCBhL2xpYnMvdXRpbHMvQXNzZXRNYW5hZ2VyLmNwcCBiL2xpYnMvdXRpbHMvQXNzZXRNYW5hZ2VyLmNwcAppbmRleCA1YTA1ZTZhLi42MGEwZDgyIDEwMDY0NAotLS0gYS9saWJzL3V0aWxzL0Fzc2V0TWFuYWdlci5jcHAKKysrIGIvbGlicy91dGlscy9Bc3NldE1hbmFnZXIuY3BwCkBAIC04MjQsNyArODI0LDcgQEAKIAogICAgIC8vIFRPRE86IGxvb2sgZm9yIHByZXZpb3VzbHktY3JlYXRlZCBzaGFyZWQgbWVtb3J5IHNsaWNlPwogICAgIGludCBtZXRob2Q7Ci0gICAgbG9uZyB1bmNvbXByZXNzZWRMZW47CisgICAgc2l6ZV90IHVuY29tcHJlc3NlZExlbjsKIAogICAgIC8vcHJpbnRmKCJVU0lORyBaaXAgJyVzJ1xuIiwgcEVudHJ5LT5nZXRGaWxlTmFtZSgpKTsKIApkaWZmIC0tZ2l0IGEvbGlicy91dGlscy9PYmJGaWxlLmNwcCBiL2xpYnMvdXRpbHMvT2JiRmlsZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmU0OTMwMAotLS0gL2Rldi9udWxsCisrKyBiL2xpYnMvdXRpbHMvT2JiRmlsZS5jcHAKQEAgLTAsMCArMSwyOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxmY250bC5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorCisjZGVmaW5lIExPR19UQUcgIk9iYkZpbGUiCisjaW5jbHVkZSA8dXRpbHMvTG9nLmg+CisjaW5jbHVkZSA8dXRpbHMvT2JiRmlsZS5oPgorCisvLyNkZWZpbmUgREVCVUcgMQorCisjZGVmaW5lIGtGb290ZXJUYWdTaXplIDggIC8qIGxhc3QgdHdvIDMyLWJpdCBpbnRlZ2VycyAqLworCisjZGVmaW5lIGtGb290ZXJNaW5TaXplIDIxIC8qIDMyLWJpdCBzaWduYXR1cmUgdmVyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAzMi1iaXQgcGFja2FnZSB2ZXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAqIDMyLWJpdCBwYWNrYWdlIG5hbWUgc2l6ZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAxLWNoYXJhY3RlciBwYWNrYWdlIG5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICogMzItYml0IGZvb3RlciBzaXplCisgICAgICAgICAgICAgICAgICAgICAgICAgICAqIDMyLWJpdCBmb290ZXIgbWFya2VyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisjZGVmaW5lIGtNYXhCdWZTaXplICAgIDMyNzY4IC8qIE1heGltdW0gZmlsZSByZWFkIGJ1ZmZlciAqLworCisjZGVmaW5lIGtTaWduYXR1cmUgICAgIDB4MDEwNTk5ODNVIC8qIE9iYkZpbGUgc2lnbmF0dXJlICovCisKKyNkZWZpbmUga1NpZ1ZlcnNpb24gICAgMSAvKiBXZSBvbmx5IGtub3cgYWJvdXQgc2lnbmF0dXJlIHZlcnNpb24gMSAqLworCisvKiBvZmZzZXRzIGluIHZlcnNpb24gMSBvZiB0aGUgaGVhZGVyICovCisjZGVmaW5lIGtQYWNrYWdlVmVyc2lvbk9mZnNldCA0CisjZGVmaW5lIGtQYWNrYWdlTmFtZUxlbk9mZnNldCA4CisjZGVmaW5lIGtQYWNrYWdlTmFtZU9mZnNldCAgICAxMgorCisvKgorICogVEVNUF9GQUlMVVJFX1JFVFJZIGlzIGRlZmluZWQgYnkgc29tZSwgYnV0IG5vdCBhbGwsIHZlcnNpb25zIG9mCisgKiA8dW5pc3RkLmg+LiAoQWxhcywgaXQgaXMgbm90IGFzIHN0YW5kYXJkIGFzIHdlJ2QgaG9wZWQhKSBTbywgaWYgaXQncworICogbm90IGFscmVhZHkgZGVmaW5lZCwgdGhlbiBkZWZpbmUgaXQgaGVyZS4KKyAqLworI2lmbmRlZiBURU1QX0ZBSUxVUkVfUkVUUlkKKy8qIFVzZWQgdG8gcmV0cnkgc3lzY2FsbHMgdGhhdCBjYW4gcmV0dXJuIEVJTlRSLiAqLworI2RlZmluZSBURU1QX0ZBSUxVUkVfUkVUUlkoZXhwKSAoeyAgICAgICAgIFwKKyAgICB0eXBlb2YgKGV4cCkgX3JjOyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBfcmMgPSAoZXhwKTsgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9IHdoaWxlIChfcmMgPT0gLTEgJiYgZXJybm8gPT0gRUlOVFIpOyBcCisgICAgX3JjOyB9KQorI2VuZGlmCisKKy8qCisgKiBXb3JrIGFyb3VuZCBzaXR1YXRpb25zIHdoZXJlIG9mZl90IGlzIDY0LWJpdCBhbmQgdXNlIG9mZjY0X3QgaW4KKyAqIHNpdHVhdGlvbnMgd2hlcmUgaXQncyAzMi1iaXQuCisgKi8KKyNpZmRlZiBPRkZfVF9JU182NF9CSVQKKyNkZWZpbmUgbXlfbHNlZWs2NCBsc2VlawordHlwZWRlZiBvZmZfdCBteV9vZmY2NF90OworI2Vsc2UKKyNkZWZpbmUgbXlfbHNlZWs2NCBsc2VlazY0Cit0eXBlZGVmIG9mZjY0X3QgbXlfb2ZmNjRfdDsKKyNlbmRpZgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK09iYkZpbGU6Ok9iYkZpbGUoKSA6CisgICAgICAgIG1WZXJzaW9uKC0xKSB7Cit9CisKK09iYkZpbGU6On5PYmJGaWxlKCkgeworfQorCitib29sIE9iYkZpbGU6OnJlYWRGcm9tKGNvbnN0IGNoYXIqIGZpbGVuYW1lKQoreworICAgIGludCBmZDsKKyAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKKworICAgIGZkID0gOjpvcGVuKGZpbGVuYW1lLCBPX1JET05MWSk7CisgICAgaWYgKGZkIDwgMCkgeworICAgICAgICBMT0dXKCJjb3VsZG4ndCBvcGVuIGZpbGUgJXM6ICVzIiwgZmlsZW5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIGdvdG8gb3V0OworICAgIH0KKyAgICBzdWNjZXNzID0gcmVhZEZyb20oZmQpOworICAgIGNsb3NlKGZkKTsKKworICAgIGlmICghc3VjY2VzcykgeworICAgICAgICBMT0dXKCJmYWlsZWQgdG8gcmVhZCBmcm9tICVzIChmZD0lZClcbiIsIGZpbGVuYW1lLCBmZCk7CisgICAgfQorCitvdXQ6CisgICAgcmV0dXJuIHN1Y2Nlc3M7Cit9CisKK2Jvb2wgT2JiRmlsZTo6cmVhZEZyb20oaW50IGZkKQoreworICAgIGlmIChmZCA8IDApIHsKKyAgICAgICAgTE9HVygiYXR0ZW1wdCB0byByZWFkIGZyb20gaW52YWxpZCBmZFxuIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gcGFyc2VPYmJGaWxlKGZkKTsKK30KKworYm9vbCBPYmJGaWxlOjpwYXJzZU9iYkZpbGUoaW50IGZkKQoreworICAgIG15X29mZjY0X3QgZmlsZUxlbmd0aCA9IG15X2xzZWVrNjQoZmQsIDAsIFNFRUtfRU5EKTsKKworICAgIGlmIChmaWxlTGVuZ3RoIDwga0Zvb3Rlck1pblNpemUpIHsKKyAgICAgICAgaWYgKGZpbGVMZW5ndGggPCAwKSB7CisgICAgICAgICAgICBMT0dXKCJlcnJvciBzZWVraW5nIGluIE9iYkZpbGU6ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgTE9HVygiZmlsZSBpcyBvbmx5ICVsbGQgKGxlc3MgdGhhbiAlZCBtaW5pbXVtKVxuIiwgZmlsZUxlbmd0aCwga0Zvb3Rlck1pblNpemUpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBzc2l6ZV90IGFjdHVhbDsKKyAgICBzaXplX3QgZm9vdGVyU2l6ZTsKKworICAgIHsKKyAgICAgICAgbXlfbHNlZWs2NChmZCwgZmlsZUxlbmd0aCAtIGtGb290ZXJUYWdTaXplLCBTRUVLX1NFVCk7CisKKyAgICAgICAgY2hhciAqZm9vdGVyID0gbmV3IGNoYXJba0Zvb3RlclRhZ1NpemVdOworICAgICAgICBhY3R1YWwgPSBURU1QX0ZBSUxVUkVfUkVUUlkocmVhZChmZCwgZm9vdGVyLCBrRm9vdGVyVGFnU2l6ZSkpOworICAgICAgICBpZiAoYWN0dWFsICE9IGtGb290ZXJUYWdTaXplKSB7CisgICAgICAgICAgICBMT0dXKCJjb3VsZG4ndCByZWFkIGZvb3RlciBzaWduYXR1cmU6ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgdW5zaWduZWQgaW50IGZpbGVTaWcgPSBnZXQ0TEUoKHVuc2lnbmVkIGNoYXIqKWZvb3RlciArIHNpemVvZihpbnQzMl90KSk7CisgICAgICAgIGlmIChmaWxlU2lnICE9IGtTaWduYXR1cmUpIHsKKyAgICAgICAgICAgIExPR1coImZvb3RlciBkaWRuJ3QgbWF0Y2ggbWFnaWMgc3RyaW5nIChleHBlY3RlZCAweCUwOHg7IGdvdCAweCUwOHgpXG4iLAorICAgICAgICAgICAgICAgICAgICBrU2lnbmF0dXJlLCBmaWxlU2lnKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGZvb3RlclNpemUgPSBnZXQ0TEUoKHVuc2lnbmVkIGNoYXIqKWZvb3Rlcik7CisgICAgICAgIGlmIChmb290ZXJTaXplID4gKHNpemVfdClmaWxlTGVuZ3RoIC0ga0Zvb3RlclRhZ1NpemUKKyAgICAgICAgICAgICAgICB8fCBmb290ZXJTaXplID4ga01heEJ1ZlNpemUpIHsKKyAgICAgICAgICAgIExPR1coImNsYWltZWQgZm9vdGVyIHNpemUgaXMgdG9vIGxhcmdlICgweCUwOHp4OyBmaWxlIHNpemUgaXMgMHglMDhsbHgpXG4iLAorICAgICAgICAgICAgICAgICAgICBmb290ZXJTaXplLCBmaWxlTGVuZ3RoKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChmb290ZXJTaXplIDwga0Zvb3Rlck1pblNpemUpIHsKKyAgICAgICAgICAgIExPR1coImNsYWltZWQgZm9vdGVyIHNpemUgaXMgdG9vIHNtYWxsICglMDh6eDsgbWluaW11bSBzaXplIGlzIDB4JXgpXG4iLAorICAgICAgICAgICAgICAgICAgICBmb290ZXJTaXplLCBrRm9vdGVyTWluU2l6ZSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBteV9vZmY2NF90IGZpbGVPZmZzZXQgPSBmaWxlTGVuZ3RoIC0gZm9vdGVyU2l6ZSAtIGtGb290ZXJUYWdTaXplOworICAgIGlmIChteV9sc2VlazY0KGZkLCBmaWxlT2Zmc2V0LCBTRUVLX1NFVCkgIT0gZmlsZU9mZnNldCkgeworICAgICAgICBMT0dXKCJzZWVrICVsbGQgZmFpbGVkOiAlc1xuIiwgZmlsZU9mZnNldCwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGNoYXIqIHNjYW5CdWYgPSAoY2hhciopbWFsbG9jKGZvb3RlclNpemUpOworICAgIGlmIChzY2FuQnVmID09IE5VTEwpIHsKKyAgICAgICAgTE9HVygiY291bGRuJ3QgYWxsb2NhdGUgc2NhbkJ1ZjogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBhY3R1YWwgPSBURU1QX0ZBSUxVUkVfUkVUUlkocmVhZChmZCwgc2NhbkJ1ZiwgZm9vdGVyU2l6ZSkpOworICAgIC8vIHJlYWRBbW91bnQgaXMgZ3VhcmFudGVlZCB0byBiZSBsZXNzIHRoYW4ga01heEJ1ZlNpemUKKyAgICBpZiAoYWN0dWFsICE9IChzc2l6ZV90KWZvb3RlclNpemUpIHsKKyAgICAgICAgTE9HSSgiY291bGRuJ3QgcmVhZCBPYmJGaWxlIGZvb3RlcjogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIGZyZWUoc2NhbkJ1Zik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyNpZmRlZiBERUJVRworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZm9vdGVyU2l6ZTsgKytpKSB7CisgICAgICAgIExPR0koImNoYXI6IDB4JTAyeCIsIHNjYW5CdWZbaV0pOworICAgIH0KKyNlbmRpZgorCisgICAgdWludDMyX3Qgc2lnVmVyc2lvbiA9IGdldDRMRSgodW5zaWduZWQgY2hhciopc2NhbkJ1Zik7CisgICAgaWYgKHNpZ1ZlcnNpb24gIT0ga1NpZ1ZlcnNpb24pIHsKKyAgICAgICAgTE9HVygiVW5zdXBwb3J0ZWQgT2JiRmlsZSB2ZXJzaW9uICVkXG4iLCBzaWdWZXJzaW9uKTsKKyAgICAgICAgZnJlZShzY2FuQnVmKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIG1WZXJzaW9uID0gKGludDMyX3QpIGdldDRMRSgodW5zaWduZWQgY2hhciopc2NhbkJ1ZiArIGtQYWNrYWdlVmVyc2lvbk9mZnNldCk7CisKKyAgICB1aW50MzJfdCBwYWNrYWdlTmFtZUxlbiA9IGdldDRMRSgodW5zaWduZWQgY2hhciopc2NhbkJ1ZiArIGtQYWNrYWdlTmFtZUxlbk9mZnNldCk7CisgICAgaWYgKHBhY2thZ2VOYW1lTGVuIDw9IDAKKyAgICAgICAgICAgIHx8IHBhY2thZ2VOYW1lTGVuID4gKGZvb3RlclNpemUgLSBrUGFja2FnZU5hbWVPZmZzZXQpKSB7CisgICAgICAgIExPR1coImJhZCBPYmJGaWxlIHBhY2thZ2UgbmFtZSBsZW5ndGggKDB4JTA0eDsgMHglMDR4IHBvc3NpYmxlKVxuIiwKKyAgICAgICAgICAgICAgICBwYWNrYWdlTmFtZUxlbiwgZm9vdGVyU2l6ZSAtIGtQYWNrYWdlTmFtZU9mZnNldCk7CisgICAgICAgIGZyZWUoc2NhbkJ1Zik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBjaGFyKiBwYWNrYWdlTmFtZSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KHNjYW5CdWYgKyBrUGFja2FnZU5hbWVPZmZzZXQpOworICAgIG1QYWNrYWdlTmFtZSA9IFN0cmluZzgoY29uc3RfY2FzdDxjaGFyKj4ocGFja2FnZU5hbWUpLCBwYWNrYWdlTmFtZUxlbik7CisKKyAgICBmcmVlKHNjYW5CdWYpOworCisjaWZkZWYgREVCVUcKKyAgICBMT0dJKCJPYmIgc2NhbiBzdWNjZWVkZWQ6IHBhY2thZ2VOYW1lPSVzLCB2ZXJzaW9uPSVkXG4iLCBtUGFja2FnZU5hbWUuc3RyaW5nKCksIG1WZXJzaW9uKTsKKyNlbmRpZgorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgT2JiRmlsZTo6d3JpdGVUbyhjb25zdCBjaGFyKiBmaWxlbmFtZSkKK3sKKyAgICBpbnQgZmQ7CisgICAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CisKKyAgICBmZCA9IDo6b3BlbihmaWxlbmFtZSwgT19XUk9OTFkpOworICAgIGlmIChmZCA8IDApIHsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorICAgIHN1Y2Nlc3MgPSB3cml0ZVRvKGZkKTsKKyAgICBjbG9zZShmZCk7CisKK291dDoKKyAgICBpZiAoIXN1Y2Nlc3MpIHsKKyAgICAgICAgTE9HVygiZmFpbGVkIHRvIHdyaXRlIHRvICVzOiAlc1xuIiwgZmlsZW5hbWUsIHN0cmVycm9yKGVycm5vKSk7CisgICAgfQorICAgIHJldHVybiBzdWNjZXNzOworfQorCitib29sIE9iYkZpbGU6OndyaXRlVG8oaW50IGZkKQoreworICAgIGlmIChmZCA8IDApIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIG15X2xzZWVrNjQoZmQsIDAsIFNFRUtfRU5EKTsKKworICAgIGlmIChtUGFja2FnZU5hbWUuc2l6ZSgpID09IDAgfHwgbVZlcnNpb24gPT0gLTEpIHsKKyAgICAgICAgTE9HVygidHJpZWQgdG8gd3JpdGUgdW5pbml0aWFsaXplZCBPYmJGaWxlIGRhdGEiKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHVuc2lnbmVkIGNoYXIgaW50QnVmW3NpemVvZih1aW50MzJfdCkrMV07CisgICAgbWVtc2V0KCZpbnRCdWYsIDAsIHNpemVvZihpbnRCdWYpKTsKKworICAgIHB1dDRMRShpbnRCdWYsIGtTaWdWZXJzaW9uKTsKKyAgICBpZiAod3JpdGUoZmQsICZpbnRCdWYsIHNpemVvZih1aW50MzJfdCkpICE9IChzc2l6ZV90KXNpemVvZih1aW50MzJfdCkpIHsKKyAgICAgICAgTE9HVygiY291bGRuJ3Qgd3JpdGUgc2lnbmF0dXJlIHZlcnNpb246ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHB1dDRMRShpbnRCdWYsIG1WZXJzaW9uKTsKKyAgICBpZiAod3JpdGUoZmQsICZpbnRCdWYsIHNpemVvZih1aW50MzJfdCkpICE9IChzc2l6ZV90KXNpemVvZih1aW50MzJfdCkpIHsKKyAgICAgICAgTE9HVygiY291bGRuJ3Qgd3JpdGUgcGFja2FnZSB2ZXJzaW9uIik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBzaXplX3QgcGFja2FnZU5hbWVMZW4gPSBtUGFja2FnZU5hbWUuc2l6ZSgpOworICAgIHB1dDRMRShpbnRCdWYsIHBhY2thZ2VOYW1lTGVuKTsKKyAgICBpZiAod3JpdGUoZmQsICZpbnRCdWYsIHNpemVvZih1aW50MzJfdCkpICE9IChzc2l6ZV90KXNpemVvZih1aW50MzJfdCkpIHsKKyAgICAgICAgTE9HVygiY291bGRuJ3Qgd3JpdGUgcGFja2FnZSBuYW1lIGxlbmd0aDogJXMiLCBzdHJlcnJvcihlcnJubykpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKHdyaXRlKGZkLCBtUGFja2FnZU5hbWUuc3RyaW5nKCksIHBhY2thZ2VOYW1lTGVuKSAhPSAoc3NpemVfdClwYWNrYWdlTmFtZUxlbikgeworICAgICAgICBMT0dXKCJjb3VsZG4ndCB3cml0ZSBwYWNrYWdlIG5hbWU6ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHB1dDRMRShpbnRCdWYsIDMqc2l6ZW9mKHVpbnQzMl90KSArIHBhY2thZ2VOYW1lTGVuKTsKKyAgICBpZiAod3JpdGUoZmQsICZpbnRCdWYsIHNpemVvZih1aW50MzJfdCkpICE9IChzc2l6ZV90KXNpemVvZih1aW50MzJfdCkpIHsKKyAgICAgICAgTE9HVygiY291bGRuJ3Qgd3JpdGUgZm9vdGVyIHNpemU6ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHB1dDRMRShpbnRCdWYsIGtTaWduYXR1cmUpOworICAgIGlmICh3cml0ZShmZCwgJmludEJ1Ziwgc2l6ZW9mKHVpbnQzMl90KSkgIT0gKHNzaXplX3Qpc2l6ZW9mKHVpbnQzMl90KSkgeworICAgICAgICBMT0dXKCJjb3VsZG4ndCB3cml0ZSBmb290ZXIgbWFnaWMgc2lnbmF0dXJlOiAlcyIsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfQpkaWZmIC0tZ2l0IGEvbGlicy91dGlscy9Qb2xsTG9vcC5jcHAgYi9saWJzL3V0aWxzL1BvbGxMb29wLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzQwZmEwCi0tLSAvZGV2L251bGwKKysrIGIvbGlicy91dGlscy9Qb2xsTG9vcC5jcHAKQEAgLTAsMCArMSwzNjQgQEAKKy8vCisvLyBDb3B5cmlnaHQgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisvLworLy8gQSBzZWxlY3QgbG9vcCBpbXBsZW1lbnRhdGlvbi4KKy8vCisjZGVmaW5lIExPR19UQUcgIlBvbGxMb29wIgorCisvLyNkZWZpbmUgTE9HX05ERUJVRyAwCisKKy8vIERlYnVncyBwb2xsIGFuZCB3YWtlIGludGVyYWN0aW9ucy4KKyNkZWZpbmUgREVCVUdfUE9MTF9BTkRfV0FLRSAwCisKKy8vIERlYnVncyBjYWxsYmFjayByZWdpc3RyYXRpb24gYW5kIGludm9jYXRpb24uCisjZGVmaW5lIERFQlVHX0NBTExCQUNLUyAwCisKKyNpbmNsdWRlIDxjdXRpbHMvbG9nLmg+CisjaW5jbHVkZSA8dXRpbHMvUG9sbExvb3AuaD4KKworI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworc3RhdGljIHB0aHJlYWRfbXV0ZXhfdCBnVExTTXV0ZXggPSBQVEhSRUFEX01VVEVYX0lOSVRJQUxJWkVSOworc3RhdGljIGJvb2wgZ0hhdmVUTFMgPSBmYWxzZTsKK3N0YXRpYyBwdGhyZWFkX2tleV90IGdUTFMgPSAwOworCitQb2xsTG9vcDo6UG9sbExvb3AoYm9vbCBhbGxvd05vbkNhbGxiYWNrcykgOgorICAgICAgICBtQWxsb3dOb25DYWxsYmFja3MoYWxsb3dOb25DYWxsYmFja3MpLCBtUG9sbGluZyhmYWxzZSksCisgICAgICAgIG1XYWl0ZXJzKDApLCBtUGVuZGluZ0Zkc1BvcygwKSB7CisgICAgb3Blbldha2VQaXBlKCk7Cit9CisKK1BvbGxMb29wOjp+UG9sbExvb3AoKSB7CisgICAgY2xvc2VXYWtlUGlwZSgpOworfQorCit2b2lkIFBvbGxMb29wOjp0aHJlYWREZXN0cnVjdG9yKHZvaWQgKnN0KSB7CisgICAgUG9sbExvb3AqIGNvbnN0IHNlbGYgPSBzdGF0aWNfY2FzdDxQb2xsTG9vcCo+KHN0KTsKKyAgICBpZiAoc2VsZiAhPSBOVUxMKSB7CisgICAgICAgIHNlbGYtPmRlY1N0cm9uZygodm9pZCopdGhyZWFkRGVzdHJ1Y3Rvcik7CisgICAgfQorfQorCit2b2lkIFBvbGxMb29wOjpzZXRGb3JUaHJlYWQoY29uc3Qgc3A8UG9sbExvb3A+JiBwb2xsTG9vcCkgeworICAgIHNwPFBvbGxMb29wPiBvbGQgPSBnZXRGb3JUaHJlYWQoKTsKKyAgICAKKyAgICBpZiAocG9sbExvb3AgIT0gTlVMTCkgeworICAgICAgICBwb2xsTG9vcC0+aW5jU3Ryb25nKCh2b2lkKil0aHJlYWREZXN0cnVjdG9yKTsKKyAgICB9CisgICAgCisgICAgcHRocmVhZF9zZXRzcGVjaWZpYyhnVExTLCBwb2xsTG9vcC5nZXQoKSk7CisgICAgCisgICAgaWYgKG9sZCAhPSBOVUxMKSB7CisgICAgICAgIG9sZC0+ZGVjU3Ryb25nKCh2b2lkKil0aHJlYWREZXN0cnVjdG9yKTsKKyAgICB9Cit9CisgICAgCitzcDxQb2xsTG9vcD4gUG9sbExvb3A6OmdldEZvclRocmVhZCgpIHsKKyAgICBpZiAoIWdIYXZlVExTKSB7CisgICAgICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmZ1RMU011dGV4KTsKKyAgICAgICAgaWYgKHB0aHJlYWRfa2V5X2NyZWF0ZSgmZ1RMUywgdGhyZWFkRGVzdHJ1Y3RvcikgIT0gMCkgeworICAgICAgICAgICAgcHRocmVhZF9tdXRleF91bmxvY2soJmdUTFNNdXRleCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBnSGF2ZVRMUyA9IHRydWU7CisgICAgICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZnVExTTXV0ZXgpOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gKFBvbGxMb29wKilwdGhyZWFkX2dldHNwZWNpZmljKGdUTFMpOworfQorCit2b2lkIFBvbGxMb29wOjpvcGVuV2FrZVBpcGUoKSB7CisgICAgaW50IHdha2VGZHNbMl07CisgICAgaW50IHJlc3VsdCA9IHBpcGUod2FrZUZkcyk7CisgICAgTE9HX0FMV0FZU19GQVRBTF9JRihyZXN1bHQgIT0gMCwgIkNvdWxkIG5vdCBjcmVhdGUgd2FrZSBwaXBlLiAgZXJybm89JWQiLCBlcnJubyk7CisKKyAgICBtV2FrZVJlYWRQaXBlRmQgPSB3YWtlRmRzWzBdOworICAgIG1XYWtlV3JpdGVQaXBlRmQgPSB3YWtlRmRzWzFdOworCisgICAgcmVzdWx0ID0gZmNudGwobVdha2VSZWFkUGlwZUZkLCBGX1NFVEZMLCBPX05PTkJMT0NLKTsKKyAgICBMT0dfQUxXQVlTX0ZBVEFMX0lGKHJlc3VsdCAhPSAwLCAiQ291bGQgbm90IG1ha2Ugd2FrZSByZWFkIHBpcGUgbm9uLWJsb2NraW5nLiAgZXJybm89JWQiLAorICAgICAgICAgICAgZXJybm8pOworCisgICAgcmVzdWx0ID0gZmNudGwobVdha2VXcml0ZVBpcGVGZCwgRl9TRVRGTCwgT19OT05CTE9DSyk7CisgICAgTE9HX0FMV0FZU19GQVRBTF9JRihyZXN1bHQgIT0gMCwgIkNvdWxkIG5vdCBtYWtlIHdha2Ugd3JpdGUgcGlwZSBub24tYmxvY2tpbmcuICBlcnJubz0lZCIsCisgICAgICAgICAgICBlcnJubyk7CisKKyAgICAvLyBBZGQgdGhlIHdha2UgcGlwZSB0byB0aGUgaGVhZCBvZiB0aGUgcmVxdWVzdCBsaXN0IHdpdGggYSBudWxsIGNhbGxiYWNrLgorICAgIHN0cnVjdCBwb2xsZmQgcmVxdWVzdGVkRmQ7CisgICAgcmVxdWVzdGVkRmQuZmQgPSBtV2FrZVJlYWRQaXBlRmQ7CisgICAgcmVxdWVzdGVkRmQuZXZlbnRzID0gUE9MTElOOworICAgIG1SZXF1ZXN0ZWRGZHMuaW5zZXJ0QXQocmVxdWVzdGVkRmQsIDApOworCisgICAgUmVxdWVzdGVkQ2FsbGJhY2sgcmVxdWVzdGVkQ2FsbGJhY2s7CisgICAgcmVxdWVzdGVkQ2FsbGJhY2suY2FsbGJhY2sgPSBOVUxMOworICAgIHJlcXVlc3RlZENhbGxiYWNrLmxvb3BlckNhbGxiYWNrID0gTlVMTDsKKyAgICByZXF1ZXN0ZWRDYWxsYmFjay5kYXRhID0gTlVMTDsKKyAgICBtUmVxdWVzdGVkQ2FsbGJhY2tzLmluc2VydEF0KHJlcXVlc3RlZENhbGxiYWNrLCAwKTsKK30KKwordm9pZCBQb2xsTG9vcDo6Y2xvc2VXYWtlUGlwZSgpIHsKKyAgICBjbG9zZShtV2FrZVJlYWRQaXBlRmQpOworICAgIGNsb3NlKG1XYWtlV3JpdGVQaXBlRmQpOworCisgICAgLy8gTm90ZTogV2UgZG9uJ3QgbmVlZCB0byByZW1vdmUgdGhlIHBvbGwgc3RydWN0dXJlIG9yIGNhbGxiYWNrIGVudHJ5IGJlY2F1c2UgdGhpcworICAgIC8vICAgICAgIG1ldGhvZCBpcyBjdXJyZW50bHkgb25seSBjYWxsZWQgYnkgdGhlIGRlc3RydWN0b3IuCit9CisKK2ludDMyX3QgUG9sbExvb3A6OnBvbGxPbmNlKGludCB0aW1lb3V0TWlsbGlzLCBpbnQqIG91dEV2ZW50cywgdm9pZCoqIG91dERhdGEpIHsKKyAgICAvLyBJZiB0aGVyZSBhcmUgc3RpbGwgcGVuZGluZyBmZHMgZnJvbSB0aGUgbGFzdCBjYWxsLCBkaXNwYXRjaCB0aG9zZQorICAgIC8vIGZpcnN0LCB0byBhdm9pZCBhbiBlYXJsaWVyIGZkIGZyb20gc3RhcnZpbmcgbGF0ZXIgb25lcy4KKyAgICBjb25zdCBzaXplX3QgcGVuZGluZ0Zkc0NvdW50ID0gbVBlbmRpbmdGZHMuc2l6ZSgpOworICAgIGlmIChtUGVuZGluZ0Zkc1BvcyA8IHBlbmRpbmdGZHNDb3VudCkgeworICAgICAgICBjb25zdCBQZW5kaW5nQ2FsbGJhY2smIHBlbmRpbmcgPSBtUGVuZGluZ0Zkcy5pdGVtQXQobVBlbmRpbmdGZHNQb3MpOworICAgICAgICBtUGVuZGluZ0Zkc1BvcysrOworICAgICAgICBpZiAob3V0RXZlbnRzICE9IE5VTEwpICpvdXRFdmVudHMgPSBwZW5kaW5nLmV2ZW50czsKKyAgICAgICAgaWYgKG91dERhdGEgIT0gTlVMTCkgKm91dERhdGEgPSBwZW5kaW5nLmRhdGE7CisgICAgICAgIHJldHVybiBwZW5kaW5nLmZkOworICAgIH0KKyAgICAKKyAgICBtTG9jay5sb2NrKCk7CisgICAgd2hpbGUgKG1XYWl0ZXJzICE9IDApIHsKKyAgICAgICAgbVJlc3VtZS53YWl0KG1Mb2NrKTsKKyAgICB9CisgICAgbVBvbGxpbmcgPSB0cnVlOworICAgIG1Mb2NrLnVubG9jaygpOworCisgICAgaW50MzJfdCByZXN1bHQ7CisgICAgc2l6ZV90IHJlcXVlc3RlZENvdW50ID0gbVJlcXVlc3RlZEZkcy5zaXplKCk7CisKKyNpZiBERUJVR19QT0xMX0FORF9XQUtFCisgICAgTE9HRCgiJXAgfiBwb2xsT25jZSAtIHdhaXRpbmcgb24gJWQgZmRzIiwgdGhpcywgcmVxdWVzdGVkQ291bnQpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVxdWVzdGVkQ291bnQ7IGkrKykgeworICAgICAgICBMT0dEKCIgIGZkICVkIC0gZXZlbnRzICVkIiwgbVJlcXVlc3RlZEZkc1tpXS5mZCwgbVJlcXVlc3RlZEZkc1tpXS5ldmVudHMpOworICAgIH0KKyNlbmRpZgorCisgICAgaW50IHJlc3BvbmRlZENvdW50ID0gcG9sbChtUmVxdWVzdGVkRmRzLmVkaXRBcnJheSgpLCByZXF1ZXN0ZWRDb3VudCwgdGltZW91dE1pbGxpcyk7CisKKyAgICBpZiAocmVzcG9uZGVkQ291bnQgPT0gMCkgeworICAgICAgICAvLyBUaW1lb3V0CisjaWYgREVCVUdfUE9MTF9BTkRfV0FLRQorICAgICAgICBMT0dEKCIlcCB+IHBvbGxPbmNlIC0gdGltZW91dCIsIHRoaXMpOworI2VuZGlmCisgICAgICAgIHJlc3VsdCA9IFBPTExfVElNRU9VVDsKKyAgICAgICAgZ290byBEb25lOworICAgIH0KKworICAgIGlmIChyZXNwb25kZWRDb3VudCA8IDApIHsKKyAgICAgICAgLy8gRXJyb3IKKyNpZiBERUJVR19QT0xMX0FORF9XQUtFCisgICAgICAgIExPR0QoIiVwIH4gcG9sbE9uY2UgLSBlcnJvciwgZXJybm89JWQiLCB0aGlzLCBlcnJubyk7CisjZW5kaWYKKyAgICAgICAgaWYgKGVycm5vICE9IEVJTlRSKSB7CisgICAgICAgICAgICBMT0dXKCJQb2xsIGZhaWxlZCB3aXRoIGFuIHVuZXhwZWN0ZWQgZXJyb3IsIGVycm5vPSVkIiwgZXJybm8pOworICAgICAgICB9CisgICAgICAgIHJlc3VsdCA9IFBPTExfRVJST1I7CisgICAgICAgIGdvdG8gRG9uZTsKKyAgICB9CisKKyNpZiBERUJVR19QT0xMX0FORF9XQUtFCisgICAgTE9HRCgiJXAgfiBwb2xsT25jZSAtIGhhbmRsaW5nIHJlc3BvbnNlcyBmcm9tICVkIGZkcyIsIHRoaXMsIHJlc3BvbmRlZENvdW50KTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlcXVlc3RlZENvdW50OyBpKyspIHsKKyAgICAgICAgTE9HRCgiICBmZCAlZCAtIGV2ZW50cyAlZCwgcmV2ZW50cyAlZCIsIG1SZXF1ZXN0ZWRGZHNbaV0uZmQsIG1SZXF1ZXN0ZWRGZHNbaV0uZXZlbnRzLAorICAgICAgICAgICAgICAgIG1SZXF1ZXN0ZWRGZHNbaV0ucmV2ZW50cyk7CisgICAgfQorI2VuZGlmCisKKyAgICBtUGVuZGluZ0NhbGxiYWNrcy5jbGVhcigpOworICAgIG1QZW5kaW5nRmRzLmNsZWFyKCk7CisgICAgbVBlbmRpbmdGZHNQb3MgPSAwOworICAgIGlmIChvdXRFdmVudHMgIT0gTlVMTCkgKm91dEV2ZW50cyA9IDA7CisgICAgaWYgKG91dERhdGEgIT0gTlVMTCkgKm91dERhdGEgPSBOVUxMOworICAgIAorICAgIHJlc3VsdCA9IFBPTExfQ0FMTEJBQ0s7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZXF1ZXN0ZWRDb3VudDsgaSsrKSB7CisgICAgICAgIGNvbnN0IHN0cnVjdCBwb2xsZmQmIHJlcXVlc3RlZEZkID0gbVJlcXVlc3RlZEZkcy5pdGVtQXQoaSk7CisKKyAgICAgICAgc2hvcnQgcmV2ZW50cyA9IHJlcXVlc3RlZEZkLnJldmVudHM7CisgICAgICAgIGlmIChyZXZlbnRzKSB7CisgICAgICAgICAgICBjb25zdCBSZXF1ZXN0ZWRDYWxsYmFjayYgcmVxdWVzdGVkQ2FsbGJhY2sgPSBtUmVxdWVzdGVkQ2FsbGJhY2tzLml0ZW1BdChpKTsKKyAgICAgICAgICAgIFBlbmRpbmdDYWxsYmFjayBwZW5kaW5nOworICAgICAgICAgICAgcGVuZGluZy5mZCA9IHJlcXVlc3RlZEZkLmZkOworICAgICAgICAgICAgcGVuZGluZy5ldmVudHMgPSByZXZlbnRzOworICAgICAgICAgICAgcGVuZGluZy5jYWxsYmFjayA9IHJlcXVlc3RlZENhbGxiYWNrLmNhbGxiYWNrOworICAgICAgICAgICAgcGVuZGluZy5sb29wZXJDYWxsYmFjayA9IHJlcXVlc3RlZENhbGxiYWNrLmxvb3BlckNhbGxiYWNrOworICAgICAgICAgICAgcGVuZGluZy5kYXRhID0gcmVxdWVzdGVkQ2FsbGJhY2suZGF0YTsKKworICAgICAgICAgICAgaWYgKHBlbmRpbmcuY2FsbGJhY2sgfHwgcGVuZGluZy5sb29wZXJDYWxsYmFjaykgeworICAgICAgICAgICAgICAgIG1QZW5kaW5nQ2FsbGJhY2tzLnB1c2gocGVuZGluZyk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHBlbmRpbmcuZmQgIT0gbVdha2VSZWFkUGlwZUZkKSB7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBQT0xMX0NBTExCQUNLKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHBlbmRpbmcuZmQ7CisgICAgICAgICAgICAgICAgICAgIGlmIChvdXRFdmVudHMgIT0gTlVMTCkgKm91dEV2ZW50cyA9IHBlbmRpbmcuZXZlbnRzOworICAgICAgICAgICAgICAgICAgICBpZiAob3V0RGF0YSAhPSBOVUxMKSAqb3V0RGF0YSA9IHBlbmRpbmcuZGF0YTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBtUGVuZGluZ0Zkcy5wdXNoKHBlbmRpbmcpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisjaWYgREVCVUdfUE9MTF9BTkRfV0FLRQorICAgICAgICAgICAgICAgIExPR0QoIiVwIH4gcG9sbE9uY2UgLSBhd29rZW4iLCB0aGlzKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIGNoYXIgYnVmZmVyWzE2XTsKKyAgICAgICAgICAgICAgICBzc2l6ZV90IG5SZWFkOworICAgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgblJlYWQgPSByZWFkKG1XYWtlUmVhZFBpcGVGZCwgYnVmZmVyLCBzaXplb2YoYnVmZmVyKSk7CisgICAgICAgICAgICAgICAgfSB3aGlsZSAoblJlYWQgPT0gc2l6ZW9mKGJ1ZmZlcikpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXNwb25kZWRDb3VudCAtPSAxOworICAgICAgICAgICAgaWYgKHJlc3BvbmRlZENvdW50ID09IDApIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworRG9uZToKKyAgICBtTG9jay5sb2NrKCk7CisgICAgbVBvbGxpbmcgPSBmYWxzZTsKKyAgICBpZiAobVdhaXRlcnMgIT0gMCkgeworICAgICAgICBtQXdha2UuYnJvYWRjYXN0KCk7CisgICAgfQorICAgIG1Mb2NrLnVubG9jaygpOworCisgICAgaWYgKHJlc3VsdCA9PSBQT0xMX0NBTExCQUNLIHx8IHJlc3VsdCA+PSAwKSB7CisgICAgICAgIHNpemVfdCBwZW5kaW5nQ291bnQgPSBtUGVuZGluZ0NhbGxiYWNrcy5zaXplKCk7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcGVuZGluZ0NvdW50OyBpKyspIHsKKyAgICAgICAgICAgIGNvbnN0IFBlbmRpbmdDYWxsYmFjayYgcGVuZGluZ0NhbGxiYWNrID0gbVBlbmRpbmdDYWxsYmFja3MuaXRlbUF0KGkpOworI2lmIERFQlVHX1BPTExfQU5EX1dBS0UgfHwgREVCVUdfQ0FMTEJBQ0tTCisgICAgICAgICAgICBMT0dEKCIlcCB+IHBvbGxPbmNlIC0gaW52b2tpbmcgY2FsbGJhY2sgZm9yIGZkICVkIiwgdGhpcywgcGVuZGluZ0NhbGxiYWNrLmZkKTsKKyNlbmRpZgorCisgICAgICAgICAgICBib29sIGtlZXAgPSB0cnVlOworICAgICAgICAgICAgaWYgKHBlbmRpbmdDYWxsYmFjay5jYWxsYmFjayAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAga2VlcCA9IHBlbmRpbmdDYWxsYmFjay5jYWxsYmFjayhwZW5kaW5nQ2FsbGJhY2suZmQsIHBlbmRpbmdDYWxsYmFjay5ldmVudHMsCisgICAgICAgICAgICAgICAgICAgICAgICBwZW5kaW5nQ2FsbGJhY2suZGF0YSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGtlZXAgPSBwZW5kaW5nQ2FsbGJhY2subG9vcGVyQ2FsbGJhY2socGVuZGluZ0NhbGxiYWNrLmZkLCBwZW5kaW5nQ2FsbGJhY2suZXZlbnRzLAorICAgICAgICAgICAgICAgICAgICAgICAgcGVuZGluZ0NhbGxiYWNrLmRhdGEpICE9IDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoISBrZWVwKSB7CisgICAgICAgICAgICAgICAgcmVtb3ZlQ2FsbGJhY2socGVuZGluZ0NhbGxiYWNrLmZkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworI2lmIERFQlVHX1BPTExfQU5EX1dBS0UKKyAgICBMT0dEKCIlcCB+IHBvbGxPbmNlIC0gZG9uZSIsIHRoaXMpOworI2VuZGlmCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCBQb2xsTG9vcDo6d2FrZSgpIHsKKyNpZiBERUJVR19QT0xMX0FORF9XQUtFCisgICAgTE9HRCgiJXAgfiB3YWtlIiwgdGhpcyk7CisjZW5kaWYKKworICAgIHNzaXplX3QgbldyaXRlID0gd3JpdGUobVdha2VXcml0ZVBpcGVGZCwgIlciLCAxKTsKKyAgICBpZiAobldyaXRlICE9IDEpIHsKKyAgICAgICAgaWYgKGVycm5vICE9IEVBR0FJTikgeworICAgICAgICAgICAgTE9HVygiQ291bGQgbm90IHdyaXRlIHdha2Ugc2lnbmFsLCBlcnJubz0lZCIsIGVycm5vKTsKKyAgICAgICAgfQorICAgIH0KK30KKworYm9vbCBQb2xsTG9vcDo6Z2V0QWxsb3dOb25DYWxsYmFja3MoKSBjb25zdCB7CisgICAgcmV0dXJuIG1BbGxvd05vbkNhbGxiYWNrczsKK30KKwordm9pZCBQb2xsTG9vcDo6c2V0Q2FsbGJhY2soaW50IGZkLCBpbnQgZXZlbnRzLCBDYWxsYmFjayBjYWxsYmFjaywgdm9pZCogZGF0YSkgeworICAgIHNldENhbGxiYWNrQ29tbW9uKGZkLCBldmVudHMsIGNhbGxiYWNrLCBOVUxMLCBkYXRhKTsKK30KKwordm9pZCBQb2xsTG9vcDo6c2V0TG9vcGVyQ2FsbGJhY2soaW50IGZkLCBpbnQgZXZlbnRzLCBBTG9vcGVyX2NhbGxiYWNrRnVuYyogY2FsbGJhY2ssCisgICAgICAgIHZvaWQqIGRhdGEpIHsKKyAgICBzZXRDYWxsYmFja0NvbW1vbihmZCwgZXZlbnRzLCBOVUxMLCBjYWxsYmFjaywgZGF0YSk7Cit9CisKK3ZvaWQgUG9sbExvb3A6OnNldENhbGxiYWNrQ29tbW9uKGludCBmZCwgaW50IGV2ZW50cywgQ2FsbGJhY2sgY2FsbGJhY2ssCisgICAgICAgIEFMb29wZXJfY2FsbGJhY2tGdW5jKiBsb29wZXJDYWxsYmFjaywgdm9pZCogZGF0YSkgeworCisjaWYgREVCVUdfQ0FMTEJBQ0tTCisgICAgTE9HRCgiJXAgfiBzZXRDYWxsYmFjayAtIGZkPSVkLCBldmVudHM9JWQiLCB0aGlzLCBmZCwgZXZlbnRzKTsKKyNlbmRpZgorCisgICAgaWYgKCEgZXZlbnRzKSB7CisgICAgICAgIExPR0UoIkludmFsaWQgYXR0ZW1wdCB0byBzZXQgYSBjYWxsYmFjayB3aXRoIG5vIHNlbGVjdGVkIHBvbGwgZXZlbnRzLiIpOworICAgICAgICByZW1vdmVDYWxsYmFjayhmZCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoISBjYWxsYmFjayAmJiAhIGxvb3BlckNhbGxiYWNrICYmICEgbUFsbG93Tm9uQ2FsbGJhY2tzKSB7CisgICAgICAgIExPR0UoIkludmFsaWQgYXR0ZW1wdCB0byBzZXQgTlVMTCBjYWxsYmFjayBidXQgbm90IGFsbG93ZWQuIik7CisgICAgICAgIHJlbW92ZUNhbGxiYWNrKGZkKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAKKyAgICB3YWtlQW5kTG9jaygpOworCisgICAgc3RydWN0IHBvbGxmZCByZXF1ZXN0ZWRGZDsKKyAgICByZXF1ZXN0ZWRGZC5mZCA9IGZkOworICAgIHJlcXVlc3RlZEZkLmV2ZW50cyA9IGV2ZW50czsKKworICAgIFJlcXVlc3RlZENhbGxiYWNrIHJlcXVlc3RlZENhbGxiYWNrOworICAgIHJlcXVlc3RlZENhbGxiYWNrLmNhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgcmVxdWVzdGVkQ2FsbGJhY2subG9vcGVyQ2FsbGJhY2sgPSBsb29wZXJDYWxsYmFjazsKKyAgICByZXF1ZXN0ZWRDYWxsYmFjay5kYXRhID0gZGF0YTsKKworICAgIHNzaXplX3QgaW5kZXggPSBnZXRSZXF1ZXN0SW5kZXhMb2NrZWQoZmQpOworICAgIGlmIChpbmRleCA8IDApIHsKKyAgICAgICAgbVJlcXVlc3RlZEZkcy5wdXNoKHJlcXVlc3RlZEZkKTsKKyAgICAgICAgbVJlcXVlc3RlZENhbGxiYWNrcy5wdXNoKHJlcXVlc3RlZENhbGxiYWNrKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtUmVxdWVzdGVkRmRzLnJlcGxhY2VBdChyZXF1ZXN0ZWRGZCwgc2l6ZV90KGluZGV4KSk7CisgICAgICAgIG1SZXF1ZXN0ZWRDYWxsYmFja3MucmVwbGFjZUF0KHJlcXVlc3RlZENhbGxiYWNrLCBzaXplX3QoaW5kZXgpKTsKKyAgICB9CisKKyAgICBtTG9jay51bmxvY2soKTsKK30KKworYm9vbCBQb2xsTG9vcDo6cmVtb3ZlQ2FsbGJhY2soaW50IGZkKSB7CisjaWYgREVCVUdfQ0FMTEJBQ0tTCisgICAgTE9HRCgiJXAgfiByZW1vdmVDYWxsYmFjayAtIGZkPSVkIiwgdGhpcywgZmQpOworI2VuZGlmCisKKyAgICB3YWtlQW5kTG9jaygpOworCisgICAgc3NpemVfdCBpbmRleCA9IGdldFJlcXVlc3RJbmRleExvY2tlZChmZCk7CisgICAgaWYgKGluZGV4ID49IDApIHsKKyAgICAgICAgbVJlcXVlc3RlZEZkcy5yZW1vdmVBdChzaXplX3QoaW5kZXgpKTsKKyAgICAgICAgbVJlcXVlc3RlZENhbGxiYWNrcy5yZW1vdmVBdChzaXplX3QoaW5kZXgpKTsKKyAgICB9CisKKyAgICBtTG9jay51bmxvY2soKTsKKyAgICByZXR1cm4gaW5kZXggPj0gMDsKK30KKworc3NpemVfdCBQb2xsTG9vcDo6Z2V0UmVxdWVzdEluZGV4TG9ja2VkKGludCBmZCkgeworICAgIHNpemVfdCByZXF1ZXN0Q291bnQgPSBtUmVxdWVzdGVkRmRzLnNpemUoKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVxdWVzdENvdW50OyBpKyspIHsKKyAgICAgICAgaWYgKG1SZXF1ZXN0ZWRGZHMuaXRlbUF0KGkpLmZkID09IGZkKSB7CisgICAgICAgICAgICByZXR1cm4gaTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAtMTsKK30KKwordm9pZCBQb2xsTG9vcDo6d2FrZUFuZExvY2soKSB7CisgICAgbUxvY2subG9jaygpOworICAgIG1XYWl0ZXJzICs9IDE7CisgICAgd2hpbGUgKG1Qb2xsaW5nKSB7CisgICAgICAgIHdha2UoKTsKKyAgICAgICAgbUF3YWtlLndhaXQobUxvY2spOworICAgIH0KKyAgICBtV2FpdGVycyAtPSAxOworICAgIGlmIChtV2FpdGVycyA9PSAwKSB7CisgICAgICAgIG1SZXN1bWUuc2lnbmFsKCk7CisgICAgfQorfQorCit9IC8vIG5hbWVzcGFjZSBhbmRyb2lkCmRpZmYgLS1naXQgYS9saWJzL3V0aWxzL1Bvb2wuY3BwIGIvbGlicy91dGlscy9Qb29sLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjE4Y2I5Ci0tLSAvZGV2L251bGwKKysrIGIvbGlicy91dGlscy9Qb29sLmNwcApAQCAtMCwwICsxLDM3IEBACisvLworLy8gQ29weXJpZ2h0IDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorLy8KKy8vIEEgc2ltcGxlIG1lbW9yeSBwb29sLgorLy8KKyNkZWZpbmUgTE9HX1RBRyAiUG9vbCIKKworLy8jZGVmaW5lIExPR19OREVCVUcgMAorCisjaW5jbHVkZSA8Y3V0aWxzL2xvZy5oPgorI2luY2x1ZGUgPHV0aWxzL1Bvb2wuaD4KKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKKy8vIFRPRE8gUHJvdmlkZSBhIHJlYWwgaW1wbGVtZW50YXRpb24gb2YgYSBwb29sLiAgVGhpcyBpcyBqdXN0IGEgc3R1YiBmb3IgaW5pdGlhbCBkZXZlbG9wbWVudC4KKworUG9vbEltcGw6OlBvb2xJbXBsKHNpemVfdCBvYmpTaXplKSA6CisgICAgbU9ialNpemUob2JqU2l6ZSkgeworfQorCitQb29sSW1wbDo6flBvb2xJbXBsKCkgeworfQorCit2b2lkKiBQb29sSW1wbDo6YWxsb2NJbXBsKCkgeworICAgIHZvaWQqIHB0ciA9IG1hbGxvYyhtT2JqU2l6ZSk7CisgICAgTE9HX0FMV0FZU19GQVRBTF9JRihwdHIgPT0gTlVMTCwgIkNhbm5vdCBhbGxvY2F0ZSBuZXcgcG9vbCBvYmplY3QuIik7CisgICAgcmV0dXJuIHB0cjsKK30KKwordm9pZCBQb29sSW1wbDo6ZnJlZUltcGwodm9pZCogb2JqKSB7CisgICAgTE9HX0FMV0FZU19GQVRBTF9JRihvYmogPT0gTlVMTCwgIkNhbGxlciBhdHRlbXB0ZWQgdG8gZnJlZSBOVUxMIHBvb2wgb2JqZWN0LiIpOworICAgIHJldHVybiBmcmVlKG9iaik7Cit9CisKK30gLy8gbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL2xpYnMvdXRpbHMvUmVzb3VyY2VUeXBlcy5jcHAgYi9saWJzL3V0aWxzL1Jlc291cmNlVHlwZXMuY3BwCmluZGV4IDdlMGY4ODEuLmExNDAxYWQgMTAwNjQ0Ci0tLSBhL2xpYnMvdXRpbHMvUmVzb3VyY2VUeXBlcy5jcHAKKysrIGIvbGlicy91dGlscy9SZXNvdXJjZVR5cGVzLmNwcApAQCAtNDE3OCw2ICs0MTc4LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFJlc1RhYmxlX2NvbmZpZzo6U0NSRUVOU0laRV9MQVJHRToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCIgKGxhcmdlKSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFJlc1RhYmxlX2NvbmZpZzo6U0NSRUVOU0laRV9YTEFSR0U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ZigiICh4bGFyZ2UpIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRmKCIgbG5nPSVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZS0+Y29uZmlnLnNjcmVlbkxheW91dCZSZXNUYWJsZV9jb25maWc6Ok1BU0tfU0NSRUVOTE9ORyk7CmRpZmYgLS1naXQgYS9saWJzL3V0aWxzL1N0b3BXYXRjaC5jcHAgYi9saWJzL3V0aWxzL1N0b3BXYXRjaC5jcHAKaW5kZXggNjhhMWM1Mi4uYjVkZGEyZiAxMDA2NDQKLS0tIGEvbGlicy91dGlscy9TdG9wV2F0Y2guY3BwCisrKyBiL2xpYnMvdXRpbHMvU3RvcFdhdGNoLmNwcApAQCAtMzAsMTAgKzMwLDkgQEAKIAogCiBTdG9wV2F0Y2g6OlN0b3BXYXRjaChjb25zdCBjaGFyICpuYW1lLCBpbnQgY2xvY2ssIHVpbnQzMl90IGZsYWdzKQotICAgIDogICBtTmFtZShuYW1lKSwgbUNsb2NrKGNsb2NrKSwgbUZsYWdzKGZsYWdzKSwKLSAgICAgICAgbVN0YXJ0VGltZSgwKSwgbU51bUxhcHMoMCkKKyAgICA6ICAgbU5hbWUobmFtZSksIG1DbG9jayhjbG9jayksIG1GbGFncyhmbGFncykKIHsKLSAgICBtU3RhcnRUaW1lID0gc3lzdGVtVGltZShtQ2xvY2spOworICAgIHJlc2V0KCk7CiB9CiAKIFN0b3BXYXRjaDo6flN0b3BXYXRjaCgpCkBAIC03Miw2ICs3MSwxMiBAQAogICAgIHJldHVybiBzeXN0ZW1UaW1lKG1DbG9jaykgLSBtU3RhcnRUaW1lOwogfQogCit2b2lkIFN0b3BXYXRjaDo6cmVzZXQoKQoreworICAgIG1OdW1MYXBzID0gMDsKKyAgICBtU3RhcnRUaW1lID0gc3lzdGVtVGltZShtQ2xvY2spOworfQorCiAKIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIApkaWZmIC0tZ2l0IGEvbGlicy91dGlscy9TdHJpbmc4LmNwcCBiL2xpYnMvdXRpbHMvU3RyaW5nOC5jcHAKaW5kZXggNjM2Y2Q4My4uODI3NzZmNCAxMDA2NDQKLS0tIGEvbGlicy91dGlscy9TdHJpbmc4LmNwcAorKysgYi9saWJzL3V0aWxzL1N0cmluZzguY3BwCkBAIC0zMDEsOCArMzAxLDkgQEAKIAogc3RhdHVzX3QgU3RyaW5nODo6c2V0VG8oY29uc3QgY2hhciogb3RoZXIpCiB7CisgICAgY29uc3QgY2hhciAqbmV3U3RyaW5nID0gYWxsb2NGcm9tVVRGOChvdGhlciwgc3RybGVuKG90aGVyKSk7CiAgICAgU2hhcmVkQnVmZmVyOjpidWZmZXJGcm9tRGF0YShtU3RyaW5nKS0+cmVsZWFzZSgpOwotICAgIG1TdHJpbmcgPSBhbGxvY0Zyb21VVEY4KG90aGVyLCBzdHJsZW4ob3RoZXIpKTsKKyAgICBtU3RyaW5nID0gbmV3U3RyaW5nOwogICAgIGlmIChtU3RyaW5nKSByZXR1cm4gTk9fRVJST1I7CiAKICAgICBtU3RyaW5nID0gZ2V0RW1wdHlTdHJpbmcoKTsKQEAgLTMxMSw4ICszMTIsOSBAQAogCiBzdGF0dXNfdCBTdHJpbmc4OjpzZXRUbyhjb25zdCBjaGFyKiBvdGhlciwgc2l6ZV90IGxlbikKIHsKKyAgICBjb25zdCBjaGFyICpuZXdTdHJpbmcgPSBhbGxvY0Zyb21VVEY4KG90aGVyLCBsZW4pOwogICAgIFNoYXJlZEJ1ZmZlcjo6YnVmZmVyRnJvbURhdGEobVN0cmluZyktPnJlbGVhc2UoKTsKLSAgICBtU3RyaW5nID0gYWxsb2NGcm9tVVRGOChvdGhlciwgbGVuKTsKKyAgICBtU3RyaW5nID0gbmV3U3RyaW5nOwogICAgIGlmIChtU3RyaW5nKSByZXR1cm4gTk9fRVJST1I7CiAKICAgICBtU3RyaW5nID0gZ2V0RW1wdHlTdHJpbmcoKTsKQEAgLTMyMSw4ICszMjMsOSBAQAogCiBzdGF0dXNfdCBTdHJpbmc4OjpzZXRUbyhjb25zdCBjaGFyMTZfdCogb3RoZXIsIHNpemVfdCBsZW4pCiB7CisgICAgY29uc3QgY2hhciAqbmV3U3RyaW5nID0gYWxsb2NGcm9tVVRGMTYob3RoZXIsIGxlbik7CiAgICAgU2hhcmVkQnVmZmVyOjpidWZmZXJGcm9tRGF0YShtU3RyaW5nKS0+cmVsZWFzZSgpOwotICAgIG1TdHJpbmcgPSBhbGxvY0Zyb21VVEYxNihvdGhlciwgbGVuKTsKKyAgICBtU3RyaW5nID0gbmV3U3RyaW5nOwogICAgIGlmIChtU3RyaW5nKSByZXR1cm4gTk9fRVJST1I7CiAKICAgICBtU3RyaW5nID0gZ2V0RW1wdHlTdHJpbmcoKTsKQEAgLTMzMSw4ICszMzQsOSBAQAogCiBzdGF0dXNfdCBTdHJpbmc4OjpzZXRUbyhjb25zdCBjaGFyMzJfdCogb3RoZXIsIHNpemVfdCBsZW4pCiB7CisgICAgY29uc3QgY2hhciAqbmV3U3RyaW5nID0gYWxsb2NGcm9tVVRGMzIob3RoZXIsIGxlbik7CiAgICAgU2hhcmVkQnVmZmVyOjpidWZmZXJGcm9tRGF0YShtU3RyaW5nKS0+cmVsZWFzZSgpOwotICAgIG1TdHJpbmcgPSBhbGxvY0Zyb21VVEYzMihvdGhlciwgbGVuKTsKKyAgICBtU3RyaW5nID0gbmV3U3RyaW5nOwogICAgIGlmIChtU3RyaW5nKSByZXR1cm4gTk9fRVJST1I7CiAKICAgICBtU3RyaW5nID0gZ2V0RW1wdHlTdHJpbmcoKTsKZGlmZiAtLWdpdCBhL2xpYnMvdXRpbHMvVmVjdG9ySW1wbC5jcHAgYi9saWJzL3V0aWxzL1ZlY3RvckltcGwuY3BwCmluZGV4IDAzMjJhZjcuLjI4OWM4MjYgMTAwNjQ0Ci0tLSBhL2xpYnMvdXRpbHMvVmVjdG9ySW1wbC5jcHAKKysrIGIvbGlicy91dGlscy9WZWN0b3JJbXBsLmNwcApAQCAtMTA4LDEzICsxMDgsNyBAQAogCiBzc2l6ZV90IFZlY3RvckltcGw6Omluc2VydFZlY3RvckF0KGNvbnN0IFZlY3RvckltcGwmIHZlY3Rvciwgc2l6ZV90IGluZGV4KQogewotICAgIGlmIChpbmRleCA+IHNpemUoKSkKLSAgICAgICAgcmV0dXJuIEJBRF9JTkRFWDsKLSAgICB2b2lkKiB3aGVyZSA9IF9ncm93KGluZGV4LCB2ZWN0b3Iuc2l6ZSgpKTsKLSAgICBpZiAod2hlcmUpIHsKLSAgICAgICAgX2RvX2NvcHkod2hlcmUsIHZlY3Rvci5hcnJheUltcGwoKSwgdmVjdG9yLnNpemUoKSk7Ci0gICAgfQotICAgIHJldHVybiB3aGVyZSA/IGluZGV4IDogKHNzaXplX3QpTk9fTUVNT1JZOworICAgIHJldHVybiBpbnNlcnRBcnJheUF0KHZlY3Rvci5hcnJheUltcGwoKSwgaW5kZXgsIHZlY3Rvci5zaXplKCkpOwogfQogCiBzc2l6ZV90IFZlY3RvckltcGw6OmFwcGVuZFZlY3Rvcihjb25zdCBWZWN0b3JJbXBsJiB2ZWN0b3IpCkBAIC0xMjIsNiArMTE2LDIyIEBACiAgICAgcmV0dXJuIGluc2VydFZlY3RvckF0KHZlY3Rvciwgc2l6ZSgpKTsKIH0KIAorc3NpemVfdCBWZWN0b3JJbXBsOjppbnNlcnRBcnJheUF0KGNvbnN0IHZvaWQqIGFycmF5LCBzaXplX3QgaW5kZXgsIHNpemVfdCBsZW5ndGgpCit7CisgICAgaWYgKGluZGV4ID4gc2l6ZSgpKQorICAgICAgICByZXR1cm4gQkFEX0lOREVYOworICAgIHZvaWQqIHdoZXJlID0gX2dyb3coaW5kZXgsIGxlbmd0aCk7CisgICAgaWYgKHdoZXJlKSB7CisgICAgICAgIF9kb19jb3B5KHdoZXJlLCBhcnJheSwgbGVuZ3RoKTsKKyAgICB9CisgICAgcmV0dXJuIHdoZXJlID8gaW5kZXggOiAoc3NpemVfdClOT19NRU1PUlk7Cit9CisKK3NzaXplX3QgVmVjdG9ySW1wbDo6YXBwZW5kQXJyYXkoY29uc3Qgdm9pZCogYXJyYXksIHNpemVfdCBsZW5ndGgpCit7CisgICAgcmV0dXJuIGluc2VydEFycmF5QXQoYXJyYXksIHNpemUoKSwgbGVuZ3RoKTsKK30KKwogc3NpemVfdCBWZWN0b3JJbXBsOjppbnNlcnRBdChzaXplX3QgaW5kZXgsIHNpemVfdCBudW1JdGVtcykKIHsKICAgICByZXR1cm4gaW5zZXJ0QXQoMCwgaW5kZXgsIG51bUl0ZW1zKTsKZGlmZiAtLWdpdCBhL2xpYnMvdXRpbHMvWmlwRmlsZUNSTy5jcHAgYi9saWJzL3V0aWxzL1ppcEZpbGVDUk8uY3BwCmluZGV4IDQ1ZjZjOGIuLjE2YjIxOWNhIDEwMDY0NAotLS0gYS9saWJzL3V0aWxzL1ppcEZpbGVDUk8uY3BwCisrKyBiL2xpYnMvdXRpbHMvWmlwRmlsZUNSTy5jcHAKQEAgLTM5LDggKzM5LDggQEAKIH0KIAogYm9vbCBaaXBGaWxlQ1JPX2dldEVudHJ5SW5mbyhaaXBGaWxlQ1JPIHppcFRva2VuLCBaaXBFbnRyeVJPIGVudHJ5VG9rZW4sCi0gICAgICAgIGludCogcE1ldGhvZCwgbG9uZyogcFVuY29tcExlbiwKLSAgICAgICAgbG9uZyogcENvbXBMZW4sIG9mZl90KiBwT2Zmc2V0LCBsb25nKiBwTW9kV2hlbiwgbG9uZyogcENyYzMyKSB7CisgICAgICAgIGludCogcE1ldGhvZCwgc2l6ZV90KiBwVW5jb21wTGVuLAorICAgICAgICBzaXplX3QqIHBDb21wTGVuLCBvZmZfdCogcE9mZnNldCwgbG9uZyogcE1vZFdoZW4sIGxvbmcqIHBDcmMzMikgewogICAgIFppcEZpbGVSTyogemlwID0gKFppcEZpbGVSTyopemlwVG9rZW47CiAgICAgWmlwRW50cnlSTyBlbnRyeSA9IChaaXBFbnRyeVJPKWVudHJ5VG9rZW47CiAgICAgcmV0dXJuIHppcC0+Z2V0RW50cnlJbmZvKGVudHJ5LCBwTWV0aG9kLCBwVW5jb21wTGVuLCBwQ29tcExlbiwgcE9mZnNldCwKZGlmZiAtLWdpdCBhL2xpYnMvdXRpbHMvWmlwRmlsZVJPLmNwcCBiL2xpYnMvdXRpbHMvWmlwRmlsZVJPLmNwcAppbmRleCA2YzcwMWRkLi4yOGRjNTEyIDEwMDY0NAotLS0gYS9saWJzL3V0aWxzL1ppcEZpbGVSTy5jcHAKKysrIGIvbGlicy91dGlscy9aaXBGaWxlUk8uY3BwCkBAIC0yOSw2ICsyOSwyMiBAQAogI2luY2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8ZXJybm8uaD4KICNpbmNsdWRlIDxhc3NlcnQuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKworLyoKKyAqIFRFTVBfRkFJTFVSRV9SRVRSWSBpcyBkZWZpbmVkIGJ5IHNvbWUsIGJ1dCBub3QgYWxsLCB2ZXJzaW9ucyBvZgorICogPHVuaXN0ZC5oPi4gKEFsYXMsIGl0IGlzIG5vdCBhcyBzdGFuZGFyZCBhcyB3ZSdkIGhvcGVkISkgU28sIGlmIGl0J3MKKyAqIG5vdCBhbHJlYWR5IGRlZmluZWQsIHRoZW4gZGVmaW5lIGl0IGhlcmUuCisgKi8KKyNpZm5kZWYgVEVNUF9GQUlMVVJFX1JFVFJZCisvKiBVc2VkIHRvIHJldHJ5IHN5c2NhbGxzIHRoYXQgY2FuIHJldHVybiBFSU5UUi4gKi8KKyNkZWZpbmUgVEVNUF9GQUlMVVJFX1JFVFJZKGV4cCkgKHsgICAgICAgICBcCisgICAgdHlwZW9mIChleHApIF9yYzsgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgX3JjID0gKGV4cCk7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoX3JjID09IC0xICYmIGVycm5vID09IEVJTlRSKTsgXAorICAgIF9yYzsgfSkKKyNlbmRpZgogCiB1c2luZyBuYW1lc3BhY2UgYW5kcm9pZDsKIApAQCAtMzgsNiArNTQsNyBAQAogI2RlZmluZSBrRU9DRFNpZ25hdHVyZSAgICAgIDB4MDYwNTRiNTAKICNkZWZpbmUga0VPQ0RMZW4gICAgICAgICAgICAyMgogI2RlZmluZSBrRU9DRE51bUVudHJpZXMgICAgIDggICAgICAgICAgICAgICAvLyBvZmZzZXQgdG8gI29mIGVudHJpZXMgaW4gZmlsZQorI2RlZmluZSBrRU9DRFNpemUgICAgICAgICAgIDEyICAgICAgICAgICAgICAvLyBzaXplIG9mIHRoZSBjZW50cmFsIGRpcmVjdG9yeQogI2RlZmluZSBrRU9DREZpbGVPZmZzZXQgICAgIDE2ICAgICAgICAgICAgICAvLyBvZmZzZXQgdG8gY2VudHJhbCBkaXJlY3RvcnkKIAogI2RlZmluZSBrTWF4Q29tbWVudExlbiAgICAgIDY1NTM1ICAgICAgICAgICAvLyBsb25nZXN0IHBvc3NpYmxlIGluIHVzaG9ydApAQCAtOTAsOSArMTA3LDggQEAKIHN0YXR1c190IFppcEZpbGVSTzo6b3Blbihjb25zdCBjaGFyKiB6aXBGaWxlTmFtZSkKIHsKICAgICBpbnQgZmQgPSAtMTsKLSAgICBvZmZfdCBsZW5ndGg7CiAKLSAgICBhc3NlcnQobUZpbGVNYXAgPT0gTlVMTCk7CisgICAgYXNzZXJ0KG1EaXJlY3RvcnlNYXAgPT0gTlVMTCk7CiAKICAgICAvKgogICAgICAqIE9wZW4gYW5kIG1hcCB0aGUgc3BlY2lmaWVkIGZpbGUuCkBAIC0xMDMsMTcyICsxMTksMjQwIEBACiAgICAgICAgIHJldHVybiBOQU1FX05PVF9GT1VORDsKICAgICB9CiAKLSAgICBsZW5ndGggPSBsc2VlayhmZCwgMCwgU0VFS19FTkQpOwotICAgIGlmIChsZW5ndGggPCAwKSB7CisgICAgbUZpbGVMZW5ndGggPSBsc2VlayhmZCwgMCwgU0VFS19FTkQpOworICAgIGlmIChtRmlsZUxlbmd0aCA8IGtFT0NETGVuKSB7CiAgICAgICAgIGNsb3NlKGZkKTsKICAgICAgICAgcmV0dXJuIFVOS05PV05fRVJST1I7CiAgICAgfQogCi0gICAgbUZpbGVNYXAgPSBuZXcgRmlsZU1hcCgpOwotICAgIGlmIChtRmlsZU1hcCA9PSBOVUxMKSB7Ci0gICAgICAgIGNsb3NlKGZkKTsKLSAgICAgICAgcmV0dXJuIE5PX01FTU9SWTsKKyAgICBpZiAobUZpbGVOYW1lICE9IE5VTEwpIHsKKyAgICAgICAgZnJlZShtRmlsZU5hbWUpOwogICAgIH0KLSAgICBpZiAoIW1GaWxlTWFwLT5jcmVhdGUoemlwRmlsZU5hbWUsIGZkLCAwLCBsZW5ndGgsIHRydWUpKSB7Ci0gICAgICAgIExPR1coIlVuYWJsZSB0byBtYXAgJyVzJzogJXNcbiIsIHppcEZpbGVOYW1lLCBzdHJlcnJvcihlcnJubykpOwotICAgICAgICBjbG9zZShmZCk7Ci0gICAgICAgIHJldHVybiBVTktOT1dOX0VSUk9SOwotICAgIH0KKyAgICBtRmlsZU5hbWUgPSBzdHJkdXAoemlwRmlsZU5hbWUpOwogCiAgICAgbUZkID0gZmQ7CiAKICAgICAvKgotICAgICAqIEdvdCBpdCBtYXBwZWQsIHZlcmlmeSBpdCBhbmQgY3JlYXRlIGRhdGEgc3RydWN0dXJlcyBmb3IgZmFzdCBhY2Nlc3MuCisgICAgICogRmluZCB0aGUgQ2VudHJhbCBEaXJlY3RvcnkgYW5kIHN0b3JlIGl0cyBzaXplIGFuZCBudW1iZXIgb2YgZW50cmllcy4KKyAgICAgKi8KKyAgICBpZiAoIW1hcENlbnRyYWxEaXJlY3RvcnkoKSkgeworICAgICAgICBnb3RvIGJhaWw7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBWZXJpZnkgQ2VudHJhbCBEaXJlY3RvcnkgYW5kIGNyZWF0ZSBkYXRhIHN0cnVjdHVyZXMgZm9yIGZhc3QgYWNjZXNzLgogICAgICAqLwogICAgIGlmICghcGFyc2VaaXBBcmNoaXZlKCkpIHsKLSAgICAgICAgbUZpbGVNYXAtPnJlbGVhc2UoKTsKLSAgICAgICAgbUZpbGVNYXAgPSBOVUxMOwotICAgICAgICByZXR1cm4gVU5LTk9XTl9FUlJPUjsKKyAgICAgICAgZ290byBiYWlsOwogICAgIH0KIAogICAgIHJldHVybiBPSzsKKworYmFpbDoKKyAgICBmcmVlKG1GaWxlTmFtZSk7CisgICAgbUZpbGVOYW1lID0gTlVMTDsKKyAgICBjbG9zZShmZCk7CisgICAgcmV0dXJuIFVOS05PV05fRVJST1I7CiB9CiAKIC8qCiAgKiBQYXJzZSB0aGUgWmlwIGFyY2hpdmUsIHZlcmlmeWluZyBpdHMgY29udGVudHMgYW5kIGluaXRpYWxpemluZyBpbnRlcm5hbAogICogZGF0YSBzdHJ1Y3R1cmVzLgogICovCitib29sIFppcEZpbGVSTzo6bWFwQ2VudHJhbERpcmVjdG9yeSh2b2lkKQoreworICAgIHNpemVfdCByZWFkQW1vdW50ID0ga01heEVPQ0RTZWFyY2g7CisgICAgaWYgKHJlYWRBbW91bnQgPiAoc2l6ZV90KSBtRmlsZUxlbmd0aCkKKyAgICAgICAgcmVhZEFtb3VudCA9IG1GaWxlTGVuZ3RoOworCisgICAgdW5zaWduZWQgY2hhciogc2NhbkJ1ZiA9ICh1bnNpZ25lZCBjaGFyKikgbWFsbG9jKHJlYWRBbW91bnQpOworICAgIGlmIChzY2FuQnVmID09IE5VTEwpIHsKKyAgICAgICAgTE9HVygiY291bGRuJ3QgYWxsb2NhdGUgc2NhbkJ1ZjogJXMiLCBzdHJlcnJvcihlcnJubykpOworICAgICAgICBmcmVlKHNjYW5CdWYpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBNYWtlIHN1cmUgdGhpcyBpcyBhIFppcCBhcmNoaXZlLgorICAgICAqLworICAgIGlmIChsc2VlayhtRmQsIDAsIFNFRUtfU0VUKSAhPSAwKSB7CisgICAgICAgIExPR1coInNlZWsgdG8gc3RhcnQgZmFpbGVkOiAlcyIsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIGZyZWUoc2NhbkJ1Zik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBzc2l6ZV90IGFjdHVhbCA9IFRFTVBfRkFJTFVSRV9SRVRSWShyZWFkKG1GZCwgc2NhbkJ1Ziwgc2l6ZW9mKGludDMyX3QpKSk7CisgICAgaWYgKGFjdHVhbCAhPSAoc3NpemVfdCkgc2l6ZW9mKGludDMyX3QpKSB7CisgICAgICAgIExPR0koImNvdWxkbid0IHJlYWQgZmlyc3Qgc2lnbmF0dXJlIGZyb20gemlwIGFyY2hpdmU6ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgZnJlZShzY2FuQnVmKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHsKKyAgICAgICAgdW5zaWduZWQgaW50IGhlYWRlciA9IGdldDRMRShzY2FuQnVmKTsKKyAgICAgICAgaWYgKGhlYWRlciA9PSBrRU9DRFNpZ25hdHVyZSkgeworICAgICAgICAgICAgTE9HSSgiRm91bmQgWmlwIGFyY2hpdmUsIGJ1dCBpdCBsb29rcyBlbXB0eVxuIik7CisgICAgICAgICAgICBmcmVlKHNjYW5CdWYpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9IGVsc2UgaWYgKGhlYWRlciAhPSBrTEZIU2lnbmF0dXJlKSB7CisgICAgICAgICAgICBMT0dWKCJOb3QgYSBaaXAgYXJjaGl2ZSAoZm91bmQgMHglMDh4KVxuIiwgdmFsKTsKKyAgICAgICAgICAgIGZyZWUoc2NhbkJ1Zik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKgorICAgICAqIFBlcmZvcm0gdGhlIHRyYWRpdGlvbmFsIEVPQ0Qgc25pcGUgaHVudC4KKyAgICAgKgorICAgICAqIFdlJ3JlIHNlYXJjaGluZyBmb3IgdGhlIEVuZCBvZiBDZW50cmFsIERpcmVjdG9yeSBtYWdpYyBudW1iZXIsCisgICAgICogd2hpY2ggYXBwZWFycyBhdCB0aGUgc3RhcnQgb2YgdGhlIEVPQ0QgYmxvY2suICBJdCdzIGZvbGxvd2VkIGJ5CisgICAgICogMTggYnl0ZXMgb2YgRU9DRCBzdHVmZiBhbmQgdXAgdG8gNjRLQiBvZiBhcmNoaXZlIGNvbW1lbnQuICBXZQorICAgICAqIG5lZWQgdG8gcmVhZCB0aGUgbGFzdCBwYXJ0IG9mIHRoZSBmaWxlIGludG8gYSBidWZmZXIsIGRpZyB0aHJvdWdoCisgICAgICogaXQgdG8gZmluZCB0aGUgbWFnaWMgbnVtYmVyLCBwYXJzZSBzb21lIHZhbHVlcyBvdXQsIGFuZCB1c2UgdGhvc2UKKyAgICAgKiB0byBkZXRlcm1pbmUgdGhlIGV4dGVudCBvZiB0aGUgQ0QuCisgICAgICoKKyAgICAgKiBXZSBzdGFydCBieSBwdWxsaW5nIGluIHRoZSBsYXN0IHBhcnQgb2YgdGhlIGZpbGUuCisgICAgICovCisgICAgb2ZmX3Qgc2VhcmNoU3RhcnQgPSBtRmlsZUxlbmd0aCAtIHJlYWRBbW91bnQ7CisKKyAgICBpZiAobHNlZWsobUZkLCBzZWFyY2hTdGFydCwgU0VFS19TRVQpICE9IHNlYXJjaFN0YXJ0KSB7CisgICAgICAgIExPR1coInNlZWsgJWxkIGZhaWxlZDogJXNcbiIsICAobG9uZykgc2VhcmNoU3RhcnQsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIGZyZWUoc2NhbkJ1Zik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgYWN0dWFsID0gVEVNUF9GQUlMVVJFX1JFVFJZKHJlYWQobUZkLCBzY2FuQnVmLCByZWFkQW1vdW50KSk7CisgICAgaWYgKGFjdHVhbCAhPSAoc3NpemVfdCkgcmVhZEFtb3VudCkgeworICAgICAgICBMT0dXKCJaaXA6IHJlYWQgJXpkIGZhaWxlZDogJXNcbiIsIHJlYWRBbW91bnQsIHN0cmVycm9yKGVycm5vKSk7CisgICAgICAgIGZyZWUoc2NhbkJ1Zik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIFNjYW4gYmFja3dhcmQgZm9yIHRoZSBFT0NEIG1hZ2ljLiAgSW4gYW4gYXJjaGl2ZSB3aXRob3V0IGEgdHJhaWxpbmcKKyAgICAgKiBjb21tZW50LCB3ZSdsbCBmaW5kIGl0IG9uIHRoZSBmaXJzdCB0cnkuICAoV2UgbWF5IHdhbnQgdG8gY29uc2lkZXIKKyAgICAgKiBkb2luZyBhbiBpbml0aWFsIG1pbmltYWwgcmVhZDsgaWYgd2UgZG9uJ3QgZmluZCBpdCwgcmV0cnkgd2l0aCBhCisgICAgICogc2Vjb25kIHJlYWQgYXMgYWJvdmUuKQorICAgICAqLworICAgIGludCBpOworICAgIGZvciAoaSA9IHJlYWRBbW91bnQgLSBrRU9DRExlbjsgaSA+PSAwOyBpLS0pIHsKKyAgICAgICAgaWYgKHNjYW5CdWZbaV0gPT0gMHg1MCAmJiBnZXQ0TEUoJnNjYW5CdWZbaV0pID09IGtFT0NEU2lnbmF0dXJlKSB7CisgICAgICAgICAgICBMT0dWKCIrKysgRm91bmQgRU9DRCBhdCBidWYrJWRcbiIsIGkpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKGkgPCAwKSB7CisgICAgICAgIExPR0QoIlppcDogRU9DRCBub3QgZm91bmQsICVzIGlzIG5vdCB6aXBcbiIsIG1GaWxlTmFtZSk7CisgICAgICAgIGZyZWUoc2NhbkJ1Zik7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBvZmZfdCBlb2NkT2Zmc2V0ID0gc2VhcmNoU3RhcnQgKyBpOworICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGVvY2RQdHIgPSBzY2FuQnVmICsgaTsKKworICAgIGFzc2VydChlb2NkT2Zmc2V0IDwgbUZpbGVMZW5ndGgpOworCisgICAgLyoKKyAgICAgKiBHcmFiIHRoZSBDRCBvZmZzZXQgYW5kIHNpemUsIGFuZCB0aGUgbnVtYmVyIG9mIGVudHJpZXMgaW4gdGhlCisgICAgICogYXJjaGl2ZS4gIFZlcmlmeSB0aGF0IHRoZXkgbG9vayByZWFzb25hYmxlLgorICAgICAqLworICAgIHVuc2lnbmVkIGludCBudW1FbnRyaWVzID0gZ2V0MkxFKGVvY2RQdHIgKyBrRU9DRE51bUVudHJpZXMpOworICAgIHVuc2lnbmVkIGludCBkaXJTaXplID0gZ2V0NExFKGVvY2RQdHIgKyBrRU9DRFNpemUpOworICAgIHVuc2lnbmVkIGludCBkaXJPZmZzZXQgPSBnZXQ0TEUoZW9jZFB0ciArIGtFT0NERmlsZU9mZnNldCk7CisKKyAgICBpZiAoKGxvbmcgbG9uZykgZGlyT2Zmc2V0ICsgKGxvbmcgbG9uZykgZGlyU2l6ZSA+IChsb25nIGxvbmcpIGVvY2RPZmZzZXQpIHsKKyAgICAgICAgTE9HVygiYmFkIG9mZnNldHMgKGRpciAlbGQsIHNpemUgJXUsIGVvY2QgJWxkKVxuIiwKKyAgICAgICAgICAgIChsb25nKSBkaXJPZmZzZXQsIGRpclNpemUsIChsb25nKSBlb2NkT2Zmc2V0KTsKKyAgICAgICAgZnJlZShzY2FuQnVmKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICBpZiAobnVtRW50cmllcyA9PSAwKSB7CisgICAgICAgIExPR1coImVtcHR5IGFyY2hpdmU/XG4iKTsKKyAgICAgICAgZnJlZShzY2FuQnVmKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIExPR1YoIisrKyBudW1FbnRyaWVzPSVkIGRpclNpemU9JWQgZGlyT2Zmc2V0PSVkXG4iLAorICAgICAgICBudW1FbnRyaWVzLCBkaXJTaXplLCBkaXJPZmZzZXQpOworCisgICAgbURpcmVjdG9yeU1hcCA9IG5ldyBGaWxlTWFwKCk7CisgICAgaWYgKG1EaXJlY3RvcnlNYXAgPT0gTlVMTCkgeworICAgICAgICBMT0dXKCJVbmFibGUgdG8gY3JlYXRlIGRpcmVjdG9yeSBtYXA6ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICAgICAgZnJlZShzY2FuQnVmKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghbURpcmVjdG9yeU1hcC0+Y3JlYXRlKG1GaWxlTmFtZSwgbUZkLCBkaXJPZmZzZXQsIGRpclNpemUsIHRydWUpKSB7CisgICAgICAgIExPR1coIlVuYWJsZSB0byBtYXAgJyVzJyAoJXpkIHRvICV6ZCk6ICVzXG4iLCBtRmlsZU5hbWUsCisgICAgICAgICAgICAgICAgZGlyT2Zmc2V0LCBkaXJPZmZzZXQgKyBkaXJTaXplLCBzdHJlcnJvcihlcnJubykpOworICAgICAgICBmcmVlKHNjYW5CdWYpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgbU51bUVudHJpZXMgPSBudW1FbnRyaWVzOworICAgIG1EaXJlY3RvcnlPZmZzZXQgPSBkaXJPZmZzZXQ7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogYm9vbCBaaXBGaWxlUk86OnBhcnNlWmlwQXJjaGl2ZSh2b2lkKQogewotI2RlZmluZSBDSEVDS19PRkZTRVQoX29mZikgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaWYgKCh1bnNpZ25lZCBpbnQpIChfb2ZmKSA+PSBtYXhPZmZzZXQpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBMT0dFKCJFUlJPUjogYmFkIG9mZnNldCAldSAobWF4ICVkKTogJXNcbiIsICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgICAgICh1bnNpZ25lZCBpbnQpIChfb2ZmKSwgbWF4T2Zmc2V0LCAjX29mZik7ICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgIGdvdG8gYmFpbDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0KLSAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBiYXNlUHRyID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIqKW1GaWxlTWFwLT5nZXREYXRhUHRyKCk7Ci0gICAgY29uc3QgdW5zaWduZWQgY2hhciogcHRyOwotICAgIHNpemVfdCBsZW5ndGggPSBtRmlsZU1hcC0+Z2V0RGF0YUxlbmd0aCgpOwogICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7Ci0gICAgdW5zaWduZWQgaW50IGksIG51bUVudHJpZXMsIGNkT2Zmc2V0OwotICAgIHVuc2lnbmVkIGludCB2YWw7Ci0KLSAgICAvKgotICAgICAqIFRoZSBmaXJzdCA0IGJ5dGVzIG9mIHRoZSBmaWxlIHdpbGwgZWl0aGVyIGJlIHRoZSBsb2NhbCBoZWFkZXIKLSAgICAgKiBzaWduYXR1cmUgZm9yIHRoZSBmaXJzdCBmaWxlIChrTEZIU2lnbmF0dXJlKSBvciwgaWYgdGhlIGFyY2hpdmUgZG9lc24ndAotICAgICAqIGhhdmUgYW55IGZpbGVzIGluIGl0LCB0aGUgZW5kLW9mLWNlbnRyYWwtZGlyZWN0b3J5IHNpZ25hdHVyZQotICAgICAqIChrRU9DRFNpZ25hdHVyZSkuCi0gICAgICovCi0gICAgdmFsID0gZ2V0NExFKGJhc2VQdHIpOwotICAgIGlmICh2YWwgPT0ga0VPQ0RTaWduYXR1cmUpIHsKLSAgICAgICAgTE9HSSgiRm91bmQgWmlwIGFyY2hpdmUsIGJ1dCBpdCBsb29rcyBlbXB0eVxuIik7Ci0gICAgICAgIGdvdG8gYmFpbDsKLSAgICB9IGVsc2UgaWYgKHZhbCAhPSBrTEZIU2lnbmF0dXJlKSB7Ci0gICAgICAgIExPR1YoIk5vdCBhIFppcCBhcmNoaXZlIChmb3VuZCAweCUwOHgpXG4iLCB2YWwpOwotICAgICAgICBnb3RvIGJhaWw7Ci0gICAgfQotCi0gICAgLyoKLSAgICAgKiBGaW5kIHRoZSBFT0NELiAgV2UnbGwgZmluZCBpdCBpbW1lZGlhdGVseSB1bmxlc3MgdGhleSBoYXZlIGEgZmlsZQotICAgICAqIGNvbW1lbnQuCi0gICAgICovCi0gICAgcHRyID0gYmFzZVB0ciArIGxlbmd0aCAtIGtFT0NETGVuOwotCi0gICAgd2hpbGUgKHB0ciA+PSBiYXNlUHRyKSB7Ci0gICAgICAgIGlmICgqcHRyID09IChrRU9DRFNpZ25hdHVyZSAmIDB4ZmYpICYmIGdldDRMRShwdHIpID09IGtFT0NEU2lnbmF0dXJlKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIHB0ci0tOwotICAgIH0KLSAgICBpZiAocHRyIDwgYmFzZVB0cikgewotICAgICAgICBMT0dJKCJDb3VsZCBub3QgZmluZCBlbmQtb2YtY2VudHJhbC1kaXJlY3RvcnkgaW4gWmlwXG4iKTsKLSAgICAgICAgZ290byBiYWlsOwotICAgIH0KLQotICAgIC8qCi0gICAgICogVGhlcmUgYXJlIHR3byBpbnRlcmVzdGluZyBpdGVtcyBpbiB0aGUgRU9DRCBibG9jazogdGhlIG51bWJlciBvZgotICAgICAqIGVudHJpZXMgaW4gdGhlIGZpbGUsIGFuZCB0aGUgZmlsZSBvZmZzZXQgb2YgdGhlIHN0YXJ0IG9mIHRoZQotICAgICAqIGNlbnRyYWwgZGlyZWN0b3J5LgotICAgICAqCi0gICAgICogKFRoZXJlJ3MgYWN0dWFsbHkgYSBjb3VudCBvZiB0aGUgI29mIGVudHJpZXMgaW4gdGhpcyBmaWxlLCBhbmQgZm9yCi0gICAgICogYWxsIGZpbGVzIHdoaWNoIGNvbXByaXNlIGEgc3Bhbm5lZCBhcmNoaXZlLCBidXQgZm9yIG91ciBwdXJwb3NlcwotICAgICAqIHdlJ3JlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUgY3VycmVudCBmaWxlLiAgQmVzaWRlcywgd2UgZXhwZWN0IHRoZQotICAgICAqIHR3byB0byBiZSBlcXVpdmFsZW50IGZvciBvdXIgc3R1ZmYuKQotICAgICAqLwotICAgIG51bUVudHJpZXMgPSBnZXQyTEUocHRyICsga0VPQ0ROdW1FbnRyaWVzKTsKLSAgICBjZE9mZnNldCA9IGdldDRMRShwdHIgKyBrRU9DREZpbGVPZmZzZXQpOwotCi0gICAgLyogdmFsaWQgb2Zmc2V0cyBhcmUgWzAsRU9DRF0gKi8KLSAgICB1bnNpZ25lZCBpbnQgbWF4T2Zmc2V0OwotICAgIG1heE9mZnNldCA9IChwdHIgLSBiYXNlUHRyKSArMTsKLQotICAgIExPR1YoIisrKyBudW1FbnRyaWVzPSVkIGNkT2Zmc2V0PSVkXG4iLCBudW1FbnRyaWVzLCBjZE9mZnNldCk7Ci0gICAgaWYgKG51bUVudHJpZXMgPT0gMCB8fCBjZE9mZnNldCA+PSBsZW5ndGgpIHsKLSAgICAgICAgTE9HVygiSW52YWxpZCBlbnRyaWVzPSVkIG9mZnNldD0lZCAobGVuPSV6ZClcbiIsCi0gICAgICAgICAgICBudW1FbnRyaWVzLCBjZE9mZnNldCwgbGVuZ3RoKTsKLSAgICAgICAgZ290byBiYWlsOwotICAgIH0KKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBjZFB0ciA9IChjb25zdCB1bnNpZ25lZCBjaGFyKikgbURpcmVjdG9yeU1hcC0+Z2V0RGF0YVB0cigpOworICAgIHNpemVfdCBjZExlbmd0aCA9IG1EaXJlY3RvcnlNYXAtPmdldERhdGFMZW5ndGgoKTsKKyAgICBpbnQgbnVtRW50cmllcyA9IG1OdW1FbnRyaWVzOwogCiAgICAgLyoKICAgICAgKiBDcmVhdGUgaGFzaCB0YWJsZS4gIFdlIGhhdmUgYSBtaW5pbXVtIDc1JSBsb2FkIGZhY3RvciwgcG9zc2libHkgYXMKICAgICAgKiBsb3cgYXMgNTAlIGFmdGVyIHdlIHJvdW5kIG9mZiB0byBhIHBvd2VyIG9mIDIuCiAgICAgICovCi0gICAgbU51bUVudHJpZXMgPSBudW1FbnRyaWVzOwotICAgIG1IYXNoVGFibGVTaXplID0gcm91bmRVcFBvd2VyMigxICsgKChudW1FbnRyaWVzICogNCkgLyAzKSk7Ci0gICAgbUhhc2hUYWJsZSA9IChIYXNoRW50cnkqKSBjYWxsb2MoMSwgc2l6ZW9mKEhhc2hFbnRyeSkgKiBtSGFzaFRhYmxlU2l6ZSk7CisgICAgbUhhc2hUYWJsZVNpemUgPSByb3VuZFVwUG93ZXIyKDEgKyAobnVtRW50cmllcyAqIDQpIC8gMyk7CisgICAgbUhhc2hUYWJsZSA9IChIYXNoRW50cnkqKSBjYWxsb2MobUhhc2hUYWJsZVNpemUsIHNpemVvZihIYXNoRW50cnkpKTsKIAogICAgIC8qCiAgICAgICogV2FsayB0aHJvdWdoIHRoZSBjZW50cmFsIGRpcmVjdG9yeSwgYWRkaW5nIGVudHJpZXMgdG8gdGhlIGhhc2gKICAgICAgKiB0YWJsZS4KICAgICAgKi8KLSAgICBwdHIgPSBiYXNlUHRyICsgY2RPZmZzZXQ7Ci0gICAgZm9yIChpID0gMDsgaSA8IG51bUVudHJpZXM7IGkrKykgewotICAgICAgICB1bnNpZ25lZCBpbnQgZmlsZU5hbWVMZW4sIGV4dHJhTGVuLCBjb21tZW50TGVuLCBsb2NhbEhkck9mZnNldDsKLSAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciogbG9jYWxIZHI7Ci0gICAgICAgIHVuc2lnbmVkIGludCBoYXNoOwotCisgICAgY29uc3QgdW5zaWduZWQgY2hhciogcHRyID0gY2RQdHI7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1FbnRyaWVzOyBpKyspIHsKICAgICAgICAgaWYgKGdldDRMRShwdHIpICE9IGtDREVTaWduYXR1cmUpIHsKICAgICAgICAgICAgIExPR1coIk1pc3NlZCBhIGNlbnRyYWwgZGlyIHNpZyAoYXQgJWQpXG4iLCBpKTsKICAgICAgICAgICAgIGdvdG8gYmFpbDsKICAgICAgICAgfQotICAgICAgICBpZiAocHRyICsga0NERUxlbiA+IGJhc2VQdHIgKyBsZW5ndGgpIHsKKyAgICAgICAgaWYgKHB0ciArIGtDREVMZW4gPiBjZFB0ciArIGNkTGVuZ3RoKSB7CiAgICAgICAgICAgICBMT0dXKCJSYW4gb2ZmIHRoZSBlbmQgKGF0ICVkKVxuIiwgaSk7CiAgICAgICAgICAgICBnb3RvIGJhaWw7CiAgICAgICAgIH0KIAotICAgICAgICBsb2NhbEhkck9mZnNldCA9IGdldDRMRShwdHIgKyBrQ0RFTG9jYWxPZmZzZXQpOwotICAgICAgICBDSEVDS19PRkZTRVQobG9jYWxIZHJPZmZzZXQpOworICAgICAgICBsb25nIGxvY2FsSGRyT2Zmc2V0ID0gKGxvbmcpIGdldDRMRShwdHIgKyBrQ0RFTG9jYWxPZmZzZXQpOworICAgICAgICBpZiAobG9jYWxIZHJPZmZzZXQgPj0gbURpcmVjdG9yeU9mZnNldCkgeworICAgICAgICAgICAgTE9HVygiYmFkIExGSCBvZmZzZXQgJWxkIGF0IGVudHJ5ICVkXG4iLCBsb2NhbEhkck9mZnNldCwgaSk7CisgICAgICAgICAgICBnb3RvIGJhaWw7CisgICAgICAgIH0KKworICAgICAgICB1bnNpZ25lZCBpbnQgZmlsZU5hbWVMZW4sIGV4dHJhTGVuLCBjb21tZW50TGVuLCBoYXNoOworCiAgICAgICAgIGZpbGVOYW1lTGVuID0gZ2V0MkxFKHB0ciArIGtDREVOYW1lTGVuKTsKICAgICAgICAgZXh0cmFMZW4gPSBnZXQyTEUocHRyICsga0NERUV4dHJhTGVuKTsKICAgICAgICAgY29tbWVudExlbiA9IGdldDJMRShwdHIgKyBrQ0RFQ29tbWVudExlbik7CiAKLSAgICAgICAgLy9MT0dWKCIrKysgJWQ6IGxvY2FsSGRyPSVkIGZubD0lZCBlbD0lZCBjbD0lZFxuIiwKLSAgICAgICAgLy8gICAgaSwgbG9jYWxIZHJPZmZzZXQsIGZpbGVOYW1lTGVuLCBleHRyYUxlbiwgY29tbWVudExlbik7Ci0gICAgICAgIC8vTE9HVigiICclLipzJ1xuIiwgZmlsZU5hbWVMZW4sIHB0ciArIGtDREVMZW4pOwotCiAgICAgICAgIC8qIGFkZCB0aGUgQ0RFIGZpbGVuYW1lIHRvIHRoZSBoYXNoIHRhYmxlICovCiAgICAgICAgIGhhc2ggPSBjb21wdXRlSGFzaCgoY29uc3QgY2hhciopcHRyICsga0NERUxlbiwgZmlsZU5hbWVMZW4pOwogICAgICAgICBhZGRUb0hhc2goKGNvbnN0IGNoYXIqKXB0ciArIGtDREVMZW4sIGZpbGVOYW1lTGVuLCBoYXNoKTsKIAotICAgICAgICBsb2NhbEhkciA9IGJhc2VQdHIgKyBsb2NhbEhkck9mZnNldDsKLSAgICAgICAgaWYgKGdldDRMRShsb2NhbEhkcikgIT0ga0xGSFNpZ25hdHVyZSkgewotICAgICAgICAgICAgTE9HVygiQmFkIG9mZnNldCB0byBsb2NhbCBoZWFkZXI6ICVkIChhdCAlZClcbiIsCi0gICAgICAgICAgICAgICAgbG9jYWxIZHJPZmZzZXQsIGkpOworICAgICAgICBwdHIgKz0ga0NERUxlbiArIGZpbGVOYW1lTGVuICsgZXh0cmFMZW4gKyBjb21tZW50TGVuOworICAgICAgICBpZiAoKHNpemVfdCkocHRyIC0gY2RQdHIpID4gY2RMZW5ndGgpIHsKKyAgICAgICAgICAgIExPR1coImJhZCBDRCBhZHZhbmNlICglZCB2cyAlemQpIGF0IGVudHJ5ICVkXG4iLAorICAgICAgICAgICAgICAgIChpbnQpIChwdHIgLSBjZFB0ciksIGNkTGVuZ3RoLCBpKTsKICAgICAgICAgICAgIGdvdG8gYmFpbDsKICAgICAgICAgfQotCi0gICAgICAgIHB0ciArPSBrQ0RFTGVuICsgZmlsZU5hbWVMZW4gKyBleHRyYUxlbiArIGNvbW1lbnRMZW47Ci0gICAgICAgIENIRUNLX09GRlNFVChwdHIgLSBiYXNlUHRyKTsKICAgICB9Ci0KKyAgICBMT0dWKCIrKysgemlwIGdvb2Qgc2NhbiAlZCBlbnRyaWVzXG4iLCBudW1FbnRyaWVzKTsKICAgICByZXN1bHQgPSB0cnVlOwogCiBiYWlsOgogICAgIHJldHVybiByZXN1bHQ7Ci0jdW5kZWYgQ0hFQ0tfT0ZGU0VUCiB9CiAKLQogLyoKICAqIFNpbXBsZSBzdHJpbmcgaGFzaCBmdW5jdGlvbiBmb3Igbm9uLW51bGwtdGVybWluYXRlZCBzdHJpbmdzLgogICovCkBAIC0zMTUsNyArMzk5LDcgQEAKICAgICAgICAgICAgIG1lbWNtcChtSGFzaFRhYmxlW2VudF0ubmFtZSwgZmlsZU5hbWUsIG5hbWVMZW4pID09IDApCiAgICAgICAgIHsKICAgICAgICAgICAgIC8qIG1hdGNoICovCi0gICAgICAgICAgICByZXR1cm4gKFppcEVudHJ5Uk8pIChlbnQgKyBrWmlwRW50cnlBZGopOworICAgICAgICAgICAgcmV0dXJuIChaaXBFbnRyeVJPKShsb25nKShlbnQgKyBrWmlwRW50cnlBZGopOwogICAgICAgICB9CiAKICAgICAgICAgZW50ID0gKGVudCArIDEpICYgKG1IYXNoVGFibGVTaXplLTEpOwpAQCAtMzU0LDIwICs0MzgsMjQgQEAKICAqIFJldHVybnMgImZhbHNlIiBpZiB0aGUgb2Zmc2V0cyB0byB0aGUgZmllbGRzIG9yIHRoZSBjb250ZW50cyBvZiB0aGUgZmllbGRzCiAgKiBhcHBlYXIgdG8gYmUgYm9ndXMuCiAgKi8KLWJvb2wgWmlwRmlsZVJPOjpnZXRFbnRyeUluZm8oWmlwRW50cnlSTyBlbnRyeSwgaW50KiBwTWV0aG9kLCBsb25nKiBwVW5jb21wTGVuLAotICAgIGxvbmcqIHBDb21wTGVuLCBvZmZfdCogcE9mZnNldCwgbG9uZyogcE1vZFdoZW4sIGxvbmcqIHBDcmMzMikgY29uc3QKK2Jvb2wgWmlwRmlsZVJPOjpnZXRFbnRyeUluZm8oWmlwRW50cnlSTyBlbnRyeSwgaW50KiBwTWV0aG9kLCBzaXplX3QqIHBVbmNvbXBMZW4sCisgICAgc2l6ZV90KiBwQ29tcExlbiwgb2ZmX3QqIHBPZmZzZXQsIGxvbmcqIHBNb2RXaGVuLCBsb25nKiBwQ3JjMzIpIGNvbnN0CiB7Ci0gICAgaW50IGVudCA9IGVudHJ5VG9JbmRleChlbnRyeSk7CisgICAgYm9vbCByZXQgPSBmYWxzZTsKKworICAgIGNvbnN0IGludCBlbnQgPSBlbnRyeVRvSW5kZXgoZW50cnkpOwogICAgIGlmIChlbnQgPCAwKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBIYXNoRW50cnkgaGFzaEVudHJ5ID0gbUhhc2hUYWJsZVtlbnRdOworCiAgICAgLyoKICAgICAgKiBSZWNvdmVyIHRoZSBzdGFydCBvZiB0aGUgY2VudHJhbCBkaXJlY3RvcnkgZW50cnkgZnJvbSB0aGUgZmlsZW5hbWUKLSAgICAgKiBwb2ludGVyLgorICAgICAqIHBvaW50ZXIuICBUaGUgZmlsZW5hbWUgaXMgdGhlIGZpcnN0IGVudHJ5IHBhc3QgdGhlIGZpeGVkLXNpemUgZGF0YSwKKyAgICAgKiBzbyB3ZSBjYW4ganVzdCBzdWJ0cmFjdCBiYWNrIGZyb20gdGhhdC4KICAgICAgKi8KLSAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBiYXNlUHRyID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIqKW1GaWxlTWFwLT5nZXREYXRhUHRyKCk7Ci0gICAgY29uc3QgdW5zaWduZWQgY2hhciogcHRyID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIqKSBtSGFzaFRhYmxlW2VudF0ubmFtZTsKLSAgICBzaXplX3QgemlwTGVuZ3RoID0gbUZpbGVNYXAtPmdldERhdGFMZW5ndGgoKTsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBwdHIgPSAoY29uc3QgdW5zaWduZWQgY2hhciopIGhhc2hFbnRyeS5uYW1lOworICAgIG9mZl90IGNkT2Zmc2V0ID0gbURpcmVjdG9yeU9mZnNldDsKIAogICAgIHB0ciAtPSBrQ0RFTGVuOwogCkBAIC0zODAsNDggKzQ2OCw3OCBAQAogICAgIGlmIChwQ3JjMzIgIT0gTlVMTCkKICAgICAgICAgKnBDcmMzMiA9IGdldDRMRShwdHIgKyBrQ0RFQ1JDKTsKIAorICAgIHNpemVfdCBjb21wTGVuID0gZ2V0NExFKHB0ciArIGtDREVDb21wTGVuKTsKKyAgICBpZiAocENvbXBMZW4gIT0gTlVMTCkKKyAgICAgICAgKnBDb21wTGVuID0gY29tcExlbjsKKyAgICBzaXplX3QgdW5jb21wTGVuID0gZ2V0NExFKHB0ciArIGtDREVVbmNvbXBMZW4pOworICAgIGlmIChwVW5jb21wTGVuICE9IE5VTEwpCisgICAgICAgICpwVW5jb21wTGVuID0gdW5jb21wTGVuOworCiAgICAgLyoKLSAgICAgKiBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZSBsZW5ndGhzIGFyZSBub3Qgc28gbGFyZ2UgdGhhdCBzb21lYm9keQotICAgICAqIHRyeWluZyB0byBtYXAgdGhlIGNvbXByZXNzZWQgb3IgdW5jb21wcmVzc2VkIGRhdGEgcnVucyBvZmYgdGhlIGVuZAotICAgICAqIG9mIHRoZSBtYXBwZWQgcmVnaW9uLgorICAgICAqIElmIHJlcXVlc3RlZCwgZGV0ZXJtaW5lIHRoZSBvZmZzZXQgb2YgdGhlIHN0YXJ0IG9mIHRoZSBkYXRhLiAgQWxsIHdlCisgICAgICogaGF2ZSBpcyB0aGUgb2Zmc2V0IHRvIHRoZSBMb2NhbCBGaWxlIEhlYWRlciwgd2hpY2ggaXMgdmFyaWFibGUgc2l6ZSwKKyAgICAgKiBzbyB3ZSBoYXZlIHRvIHJlYWQgdGhlIGNvbnRlbnRzIG9mIHRoZSBzdHJ1Y3QgdG8gZmlndXJlIG91dCB3aGVyZQorICAgICAqIHRoZSBhY3R1YWwgZGF0YSBzdGFydHMuCisgICAgICoKKyAgICAgKiBXZSBhbHNvIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGxlbmd0aHMgYXJlIG5vdCBzbyBsYXJnZSB0aGF0CisgICAgICogc29tZWJvZHkgdHJ5aW5nIHRvIG1hcCB0aGUgY29tcHJlc3NlZCBvciB1bmNvbXByZXNzZWQgZGF0YSBydW5zCisgICAgICogb2ZmIHRoZSBlbmQgb2YgdGhlIG1hcHBlZCByZWdpb24uCisgICAgICoKKyAgICAgKiBOb3RlIHdlIGRvbid0IHZlcmlmeSBjb21wTGVuL3VuY29tcExlbiBpZiB0aGV5IGRvbid0IHJlcXVlc3QgdGhlCisgICAgICogZGF0YU9mZnNldCwgYmVjYXVzZSBkYXRhT2Zmc2V0IGlzIGV4cGVuc2l2ZSB0byBkZXRlcm1pbmUuICBIb3dldmVyLAorICAgICAqIGlmIHRoZXkgZG9uJ3QgaGF2ZSB0aGUgZmlsZSBvZmZzZXQsIHRoZXkncmUgbm90IGxpa2VseSB0byBiZSBkb2luZworICAgICAqIGFueXRoaW5nIHdpdGggdGhlIGNvbnRlbnRzLgogICAgICAqLwotICAgIHVuc2lnbmVkIGxvbmcgbG9jYWxIZHJPZmZzZXQgPSBnZXQ0TEUocHRyICsga0NERUxvY2FsT2Zmc2V0KTsKLSAgICBpZiAobG9jYWxIZHJPZmZzZXQgKyBrTEZITGVuID49IHppcExlbmd0aCkgewotICAgICAgICBMT0dFKCJFUlJPUjogYmFkIGxvY2FsIGhkciBvZmZzZXQgaW4gemlwXG4iKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBsb2NhbEhkciA9IGJhc2VQdHIgKyBsb2NhbEhkck9mZnNldDsKLSAgICBvZmZfdCBkYXRhT2Zmc2V0ID0gbG9jYWxIZHJPZmZzZXQgKyBrTEZITGVuCi0gICAgICAgICsgZ2V0MkxFKGxvY2FsSGRyICsga0xGSE5hbWVMZW4pICsgZ2V0MkxFKGxvY2FsSGRyICsga0xGSEV4dHJhTGVuKTsKLSAgICBpZiAoKHVuc2lnbmVkIGxvbmcpIGRhdGFPZmZzZXQgPj0gemlwTGVuZ3RoKSB7Ci0gICAgICAgIExPR0UoIkVSUk9SOiBiYWQgZGF0YSBvZmZzZXQgaW4gemlwXG4iKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIGlmIChwQ29tcExlbiAhPSBOVUxMKSB7Ci0gICAgICAgICpwQ29tcExlbiA9IGdldDRMRShwdHIgKyBrQ0RFQ29tcExlbik7Ci0gICAgICAgIGlmICgqcENvbXBMZW4gPCAwIHx8IChzaXplX3QpKGRhdGFPZmZzZXQgKyAqcENvbXBMZW4pID49IHppcExlbmd0aCkgewotICAgICAgICAgICAgTE9HRSgiRVJST1I6IGJhZCBjb21wcmVzc2VkIGxlbmd0aCBpbiB6aXBcbiIpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotICAgIGlmIChwVW5jb21wTGVuICE9IE5VTEwpIHsKLSAgICAgICAgKnBVbmNvbXBMZW4gPSBnZXQ0TEUocHRyICsga0NERVVuY29tcExlbik7Ci0gICAgICAgIGlmICgqcFVuY29tcExlbiA8IDApIHsKLSAgICAgICAgICAgIExPR0UoIkVSUk9SOiBuZWdhdGl2ZSB1bmNvbXByZXNzZWQgbGVuZ3RoIGluIHppcFxuIik7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG1ldGhvZCA9PSBrQ29tcHJlc3NTdG9yZWQgJiYKLSAgICAgICAgICAgIChzaXplX3QpKGRhdGFPZmZzZXQgKyAqcFVuY29tcExlbikgPj0gemlwTGVuZ3RoKQotICAgICAgICB7Ci0gICAgICAgICAgICBMT0dFKCJFUlJPUjogYmFkIHVuY29tcHJlc3NlZCBsZW5ndGggaW4gemlwXG4iKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQogICAgIGlmIChwT2Zmc2V0ICE9IE5VTEwpIHsKKyAgICAgICAgbG9uZyBsb2NhbEhkck9mZnNldCA9IGdldDRMRShwdHIgKyBrQ0RFTG9jYWxPZmZzZXQpOworICAgICAgICBpZiAobG9jYWxIZHJPZmZzZXQgKyBrTEZITGVuID49IGNkT2Zmc2V0KSB7CisgICAgICAgICAgICBMT0dFKCJFUlJPUjogYmFkIGxvY2FsIGhkciBvZmZzZXQgaW4gemlwXG4iKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHVuc2lnbmVkIGNoYXIgbGZoQnVmW2tMRkhMZW5dOworICAgICAgICBpZiAobHNlZWsobUZkLCBsb2NhbEhkck9mZnNldCwgU0VFS19TRVQpICE9IGxvY2FsSGRyT2Zmc2V0KSB7CisgICAgICAgICAgICBMT0dXKCJmYWlsZWQgc2Vla2luZyB0byBsZmggYXQgb2Zmc2V0ICVsZFxuIiwgbG9jYWxIZHJPZmZzZXQpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHNzaXplX3QgYWN0dWFsID0KKyAgICAgICAgICAgIFRFTVBfRkFJTFVSRV9SRVRSWShyZWFkKG1GZCwgbGZoQnVmLCBzaXplb2YobGZoQnVmKSkpOworICAgICAgICBpZiAoYWN0dWFsICE9IHNpemVvZihsZmhCdWYpKSB7CisgICAgICAgICAgICBMT0dXKCJmYWlsZWQgcmVhZGluZyBsZmggZnJvbSBvZmZzZXQgJWxkXG4iLCBsb2NhbEhkck9mZnNldCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZ2V0NExFKGxmaEJ1ZikgIT0ga0xGSFNpZ25hdHVyZSkgeworICAgICAgICAgICAgTE9HVygiZGlkbid0IGZpbmQgc2lnbmF0dXJlIGF0IHN0YXJ0IG9mIGxmaCwgb2Zmc2V0PSVsZFxuIiwKKyAgICAgICAgICAgICAgICBsb2NhbEhkck9mZnNldCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBvZmZfdCBkYXRhT2Zmc2V0ID0gbG9jYWxIZHJPZmZzZXQgKyBrTEZITGVuCisgICAgICAgICAgICArIGdldDJMRShsZmhCdWYgKyBrTEZITmFtZUxlbikgKyBnZXQyTEUobGZoQnVmICsga0xGSEV4dHJhTGVuKTsKKyAgICAgICAgaWYgKGRhdGFPZmZzZXQgPj0gY2RPZmZzZXQpIHsKKyAgICAgICAgICAgIExPR1coImJhZCBkYXRhIG9mZnNldCAlbGQgaW4gemlwXG4iLCAobG9uZykgZGF0YU9mZnNldCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICAvKiBjaGVjayBsZW5ndGhzICovCisgICAgICAgIGlmICgob2ZmX3QpKGRhdGFPZmZzZXQgKyBjb21wTGVuKSA+IGNkT2Zmc2V0KSB7CisgICAgICAgICAgICBMT0dXKCJiYWQgY29tcHJlc3NlZCBsZW5ndGggaW4gemlwICglbGQgKyAlemQgPiAlbGQpXG4iLAorICAgICAgICAgICAgICAgIChsb25nKSBkYXRhT2Zmc2V0LCBjb21wTGVuLCAobG9uZykgY2RPZmZzZXQpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1ldGhvZCA9PSBrQ29tcHJlc3NTdG9yZWQgJiYKKyAgICAgICAgICAgIChvZmZfdCkoZGF0YU9mZnNldCArIHVuY29tcExlbikgPiBjZE9mZnNldCkKKyAgICAgICAgeworICAgICAgICAgICAgTE9HRSgiRVJST1I6IGJhZCB1bmNvbXByZXNzZWQgbGVuZ3RoIGluIHppcCAoJWxkICsgJXpkID4gJWxkKVxuIiwKKyAgICAgICAgICAgICAgICAobG9uZykgZGF0YU9mZnNldCwgdW5jb21wTGVuLCAobG9uZykgY2RPZmZzZXQpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKICAgICAgICAgKnBPZmZzZXQgPSBkYXRhT2Zmc2V0OwogICAgIH0KKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC00NTcsMTQgKzU3NSwxNCBAQAogICAgICAqLwogCiAgICAgRmlsZU1hcCogbmV3TWFwOwotICAgIGxvbmcgY29tcExlbjsKKyAgICBzaXplX3QgY29tcExlbjsKICAgICBvZmZfdCBvZmZzZXQ7CiAKICAgICBpZiAoIWdldEVudHJ5SW5mbyhlbnRyeSwgTlVMTCwgTlVMTCwgJmNvbXBMZW4sICZvZmZzZXQsIE5VTEwsIE5VTEwpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIG5ld01hcCA9IG5ldyBGaWxlTWFwKCk7Ci0gICAgaWYgKCFuZXdNYXAtPmNyZWF0ZShtRmlsZU1hcC0+Z2V0RmlsZU5hbWUoKSwgbUZkLCBvZmZzZXQsIGNvbXBMZW4sIHRydWUpKSB7CisgICAgaWYgKCFuZXdNYXAtPmNyZWF0ZShtRmlsZU5hbWUsIG1GZCwgb2Zmc2V0LCBjb21wTGVuLCB0cnVlKSkgewogICAgICAgICBuZXdNYXAtPnJlbGVhc2UoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtNDgwLDE5ICs1OTgsMjYgQEAKICAqLwogYm9vbCBaaXBGaWxlUk86OnVuY29tcHJlc3NFbnRyeShaaXBFbnRyeVJPIGVudHJ5LCB2b2lkKiBidWZmZXIpIGNvbnN0CiB7Ci0gICAgY29uc3QgaW50IGtTZXF1ZW50aWFsTWluID0gMzI3Njg7CisgICAgY29uc3Qgc2l6ZV90IGtTZXF1ZW50aWFsTWluID0gMzI3Njg7CiAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKICAgICBpbnQgZW50ID0gZW50cnlUb0luZGV4KGVudHJ5KTsKICAgICBpZiAoZW50IDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgY29uc3QgdW5zaWduZWQgY2hhciogYmFzZVB0ciA9IChjb25zdCB1bnNpZ25lZCBjaGFyKiltRmlsZU1hcC0+Z2V0RGF0YVB0cigpOwogICAgIGludCBtZXRob2Q7Ci0gICAgbG9uZyB1bmNvbXBMZW4sIGNvbXBMZW47CisgICAgc2l6ZV90IHVuY29tcExlbiwgY29tcExlbjsKICAgICBvZmZfdCBvZmZzZXQ7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciogcHRyOwogCiAgICAgZ2V0RW50cnlJbmZvKGVudHJ5LCAmbWV0aG9kLCAmdW5jb21wTGVuLCAmY29tcExlbiwgJm9mZnNldCwgTlVMTCwgTlVMTCk7CiAKKyAgICBGaWxlTWFwKiBmaWxlID0gY3JlYXRlRW50cnlGaWxlTWFwKGVudHJ5KTsKKyAgICBpZiAoZmlsZSA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gYmFpbDsKKyAgICB9CisKKyAgICBwdHIgPSAoY29uc3QgdW5zaWduZWQgY2hhciopIGZpbGUtPmdldERhdGFQdHIoKTsKKwogICAgIC8qCiAgICAgICogRXhwZXJpbWVudCB3aXRoIG1hZHZpc2UgaGludC4gIFdoZW4gd2Ugd2FudCB0byB1bmNvbXByZXNzIGEgZmlsZSwKICAgICAgKiB3ZSBwdWxsIHNvbWUgc3R1ZmYgb3V0IG9mIHRoZSBjZW50cmFsIGRpciBlbnRyeSBhbmQgdGhlbiBoaXQgYQpAQCAtNTA3LDE3ICs2MzIsMTcgQEAKICAgICAgKiBwYWlyIG9mIHN5c3RlbSBjYWxscyBhcmUgbmVnYXRlZCBieSBhIHJlZHVjdGlvbiBpbiBwYWdlIGZhdWx0cy4KICAgICAgKi8KICAgICBpZiAoY29tcExlbiA+IGtTZXF1ZW50aWFsTWluKQotICAgICAgICBtRmlsZU1hcC0+YWR2aXNlKEZpbGVNYXA6OlNFUVVFTlRJQUwpOworICAgICAgICBmaWxlLT5hZHZpc2UoRmlsZU1hcDo6U0VRVUVOVElBTCk7CiAKICAgICBpZiAobWV0aG9kID09IGtDb21wcmVzc1N0b3JlZCkgewotICAgICAgICBtZW1jcHkoYnVmZmVyLCBiYXNlUHRyICsgb2Zmc2V0LCB1bmNvbXBMZW4pOworICAgICAgICBtZW1jcHkoYnVmZmVyLCBwdHIsIHVuY29tcExlbik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaWYgKCFpbmZsYXRlQnVmZmVyKGJ1ZmZlciwgYmFzZVB0ciArIG9mZnNldCwgdW5jb21wTGVuLCBjb21wTGVuKSkKKyAgICAgICAgaWYgKCFpbmZsYXRlQnVmZmVyKGJ1ZmZlciwgcHRyLCB1bmNvbXBMZW4sIGNvbXBMZW4pKQogICAgICAgICAgICAgZ290byBiYWlsOwogICAgIH0KIAogICAgIGlmIChjb21wTGVuID4ga1NlcXVlbnRpYWxNaW4pCi0gICAgICAgIG1GaWxlTWFwLT5hZHZpc2UoRmlsZU1hcDo6Tk9STUFMKTsKKyAgICAgICAgZmlsZS0+YWR2aXNlKEZpbGVNYXA6Ok5PUk1BTCk7CiAKICAgICByZXN1bHQgPSB0cnVlOwogCkBAIC01MzcsMjkgKzY2MiwzNCBAQAogICAgIGlmIChlbnQgPCAwKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBiYXNlUHRyID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIqKW1GaWxlTWFwLT5nZXREYXRhUHRyKCk7CiAgICAgaW50IG1ldGhvZDsKLSAgICBsb25nIHVuY29tcExlbiwgY29tcExlbjsKKyAgICBzaXplX3QgdW5jb21wTGVuLCBjb21wTGVuOwogICAgIG9mZl90IG9mZnNldDsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBwdHI7CiAKICAgICBnZXRFbnRyeUluZm8oZW50cnksICZtZXRob2QsICZ1bmNvbXBMZW4sICZjb21wTGVuLCAmb2Zmc2V0LCBOVUxMLCBOVUxMKTsKIAotICAgIGlmIChtZXRob2QgPT0ga0NvbXByZXNzU3RvcmVkKSB7Ci0gICAgICAgIHNzaXplX3QgYWN0dWFsOworICAgIGNvbnN0IEZpbGVNYXAqIGZpbGUgPSBjcmVhdGVFbnRyeUZpbGVNYXAoZW50cnkpOworICAgIGlmIChmaWxlID09IE5VTEwpIHsKKyAgICAgICAgZ290byBiYWlsOworICAgIH0KIAotICAgICAgICBhY3R1YWwgPSB3cml0ZShmZCwgYmFzZVB0ciArIG9mZnNldCwgdW5jb21wTGVuKTsKKyAgICBwdHIgPSAoY29uc3QgdW5zaWduZWQgY2hhciopIGZpbGUtPmdldERhdGFQdHIoKTsKKworICAgIGlmIChtZXRob2QgPT0ga0NvbXByZXNzU3RvcmVkKSB7CisgICAgICAgIHNzaXplX3QgYWN0dWFsID0gd3JpdGUoZmQsIHB0ciwgdW5jb21wTGVuKTsKICAgICAgICAgaWYgKGFjdHVhbCA8IDApIHsKICAgICAgICAgICAgIExPR0UoIldyaXRlIGZhaWxlZDogJXNcbiIsIHN0cmVycm9yKGVycm5vKSk7CiAgICAgICAgICAgICBnb3RvIGJhaWw7Ci0gICAgICAgIH0gZWxzZSBpZiAoYWN0dWFsICE9IHVuY29tcExlbikgewotICAgICAgICAgICAgTE9HRSgiUGFydGlhbCB3cml0ZSBkdXJpbmcgdW5jb21wcmVzcyAoJWQgb2YgJWxkKVxuIiwKLSAgICAgICAgICAgICAgICAoaW50KWFjdHVhbCwgdW5jb21wTGVuKTsKKyAgICAgICAgfSBlbHNlIGlmICgoc2l6ZV90KSBhY3R1YWwgIT0gdW5jb21wTGVuKSB7CisgICAgICAgICAgICBMT0dFKCJQYXJ0aWFsIHdyaXRlIGR1cmluZyB1bmNvbXByZXNzICglemQgb2YgJXpkKVxuIiwKKyAgICAgICAgICAgICAgICBhY3R1YWwsIHVuY29tcExlbik7CiAgICAgICAgICAgICBnb3RvIGJhaWw7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBMT0dJKCIrKysgc3VjY2Vzc2Z1bCB3cml0ZVxuIik7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBpZiAoIWluZmxhdGVCdWZmZXIoZmQsIGJhc2VQdHIrb2Zmc2V0LCB1bmNvbXBMZW4sIGNvbXBMZW4pKQorICAgICAgICBpZiAoIWluZmxhdGVCdWZmZXIoZmQsIHB0ciwgdW5jb21wTGVuLCBjb21wTGVuKSkKICAgICAgICAgICAgIGdvdG8gYmFpbDsKICAgICB9CiAKQEAgLTU3Myw3ICs3MDMsNyBAQAogICogVW5jb21wcmVzcyAiZGVmbGF0ZSIgZGF0YSBmcm9tIG9uZSBidWZmZXIgdG8gYW5vdGhlci4KICAqLwogLypzdGF0aWMqLyBib29sIFppcEZpbGVSTzo6aW5mbGF0ZUJ1ZmZlcih2b2lkKiBvdXRCdWYsIGNvbnN0IHZvaWQqIGluQnVmLAotICAgIGxvbmcgdW5jb21wTGVuLCBsb25nIGNvbXBMZW4pCisgICAgc2l6ZV90IHVuY29tcExlbiwgc2l6ZV90IGNvbXBMZW4pCiB7CiAgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKICAgICB6X3N0cmVhbSB6c3RyZWFtOwpAQCAtNTgyLDcgKzcxMiw3IEBACiAgICAgLyoKICAgICAgKiBJbml0aWFsaXplIHRoZSB6bGliIHN0cmVhbSBzdHJ1Y3QuCiAgICAgICovCi0JbWVtc2V0KCZ6c3RyZWFtLCAwLCBzaXplb2YoenN0cmVhbSkpOworICAgIG1lbXNldCgmenN0cmVhbSwgMCwgc2l6ZW9mKHpzdHJlYW0pKTsKICAgICB6c3RyZWFtLnphbGxvYyA9IFpfTlVMTDsKICAgICB6c3RyZWFtLnpmcmVlID0gWl9OVUxMOwogICAgIHpzdHJlYW0ub3BhcXVlID0gWl9OVUxMOwpAQCAtNTkyLDEwICs3MjIsMTAgQEAKICAgICB6c3RyZWFtLmF2YWlsX291dCA9IHVuY29tcExlbjsKICAgICB6c3RyZWFtLmRhdGFfdHlwZSA9IFpfVU5LTk9XTjsKIAotCS8qCi0JICogVXNlIHRoZSB1bmRvY3VtZW50ZWQgIm5lZ2F0aXZlIHdpbmRvdyBiaXRzIiBmZWF0dXJlIHRvIHRlbGwgemxpYgotCSAqIHRoYXQgdGhlcmUncyBubyB6bGliIGhlYWRlciB3YWl0aW5nIGZvciBpdC4KLQkgKi8KKyAgICAvKgorICAgICAqIFVzZSB0aGUgdW5kb2N1bWVudGVkICJuZWdhdGl2ZSB3aW5kb3cgYml0cyIgZmVhdHVyZSB0byB0ZWxsIHpsaWIKKyAgICAgKiB0aGF0IHRoZXJlJ3Mgbm8gemxpYiBoZWFkZXIgd2FpdGluZyBmb3IgaXQuCisgICAgICovCiAgICAgemVyciA9IGluZmxhdGVJbml0MigmenN0cmVhbSwgLU1BWF9XQklUUyk7CiAgICAgaWYgKHplcnIgIT0gWl9PSykgewogICAgICAgICBpZiAoemVyciA9PSBaX1ZFUlNJT05fRVJST1IpIHsKQEAgLTYxOSw4ICs3NDksOCBAQAogICAgIH0KIAogICAgIC8qIHBhcmFub2lhICovCi0gICAgaWYgKChsb25nKSB6c3RyZWFtLnRvdGFsX291dCAhPSB1bmNvbXBMZW4pIHsKLSAgICAgICAgTE9HVygiU2l6ZSBtaXNtYXRjaCBvbiBpbmZsYXRlZCBmaWxlICglbGQgdnMgJWxkKVxuIiwKKyAgICBpZiAoenN0cmVhbS50b3RhbF9vdXQgIT0gdW5jb21wTGVuKSB7CisgICAgICAgIExPR1coIlNpemUgbWlzbWF0Y2ggb24gaW5mbGF0ZWQgZmlsZSAoJWxkIHZzICV6ZClcbiIsCiAgICAgICAgICAgICB6c3RyZWFtLnRvdGFsX291dCwgdW5jb21wTGVuKTsKICAgICAgICAgZ290byB6X2JhaWw7CiAgICAgfQpAQCAtNjM4LDEwICs3NjgsMTAgQEAKICAqIFVuY29tcHJlc3MgImRlZmxhdGUiIGRhdGEgZnJvbSBvbmUgYnVmZmVyIHRvIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yLgogICovCiAvKnN0YXRpYyovIGJvb2wgWmlwRmlsZVJPOjppbmZsYXRlQnVmZmVyKGludCBmZCwgY29uc3Qgdm9pZCogaW5CdWYsCi0gICAgbG9uZyB1bmNvbXBMZW4sIGxvbmcgY29tcExlbikKKyAgICBzaXplX3QgdW5jb21wTGVuLCBzaXplX3QgY29tcExlbikKIHsKICAgICBib29sIHJlc3VsdCA9IGZhbHNlOwotICAgIGNvbnN0IGludCBrV3JpdGVCdWZTaXplID0gMzI3Njg7CisgICAgY29uc3Qgc2l6ZV90IGtXcml0ZUJ1ZlNpemUgPSAzMjc2ODsKICAgICB1bnNpZ25lZCBjaGFyIHdyaXRlQnVmW2tXcml0ZUJ1ZlNpemVdOwogICAgIHpfc3RyZWFtIHpzdHJlYW07CiAgICAgaW50IHplcnI7CkBAIC02NDksNyArNzc5LDcgQEAKICAgICAvKgogICAgICAqIEluaXRpYWxpemUgdGhlIHpsaWIgc3RyZWFtIHN0cnVjdC4KICAgICAgKi8KLQltZW1zZXQoJnpzdHJlYW0sIDAsIHNpemVvZih6c3RyZWFtKSk7CisgICAgbWVtc2V0KCZ6c3RyZWFtLCAwLCBzaXplb2YoenN0cmVhbSkpOwogICAgIHpzdHJlYW0uemFsbG9jID0gWl9OVUxMOwogICAgIHpzdHJlYW0uemZyZWUgPSBaX05VTEw7CiAgICAgenN0cmVhbS5vcGFxdWUgPSBaX05VTEw7CkBAIC02NTksMTAgKzc4OSwxMCBAQAogICAgIHpzdHJlYW0uYXZhaWxfb3V0ID0gc2l6ZW9mKHdyaXRlQnVmKTsKICAgICB6c3RyZWFtLmRhdGFfdHlwZSA9IFpfVU5LTk9XTjsKIAotCS8qCi0JICogVXNlIHRoZSB1bmRvY3VtZW50ZWQgIm5lZ2F0aXZlIHdpbmRvdyBiaXRzIiBmZWF0dXJlIHRvIHRlbGwgemxpYgotCSAqIHRoYXQgdGhlcmUncyBubyB6bGliIGhlYWRlciB3YWl0aW5nIGZvciBpdC4KLQkgKi8KKyAgICAvKgorICAgICAqIFVzZSB0aGUgdW5kb2N1bWVudGVkICJuZWdhdGl2ZSB3aW5kb3cgYml0cyIgZmVhdHVyZSB0byB0ZWxsIHpsaWIKKyAgICAgKiB0aGF0IHRoZXJlJ3Mgbm8gemxpYiBoZWFkZXIgd2FpdGluZyBmb3IgaXQuCisgICAgICovCiAgICAgemVyciA9IGluZmxhdGVJbml0MigmenN0cmVhbSwgLU1BWF9XQklUUyk7CiAgICAgaWYgKHplcnIgIT0gWl9PSykgewogICAgICAgICBpZiAoemVyciA9PSBaX1ZFUlNJT05fRVJST1IpIHsKQEAgLTcwOCw4ICs4MzgsOCBAQAogICAgIGFzc2VydCh6ZXJyID09IFpfU1RSRUFNX0VORCk7ICAgICAgIC8qIG90aGVyIGVycm9ycyBzaG91bGQndmUgYmVlbiBjYXVnaHQgKi8KIAogICAgIC8qIHBhcmFub2lhICovCi0gICAgaWYgKChsb25nKSB6c3RyZWFtLnRvdGFsX291dCAhPSB1bmNvbXBMZW4pIHsKLSAgICAgICAgTE9HVygiU2l6ZSBtaXNtYXRjaCBvbiBpbmZsYXRlZCBmaWxlICglbGQgdnMgJWxkKVxuIiwKKyAgICBpZiAoenN0cmVhbS50b3RhbF9vdXQgIT0gdW5jb21wTGVuKSB7CisgICAgICAgIExPR1coIlNpemUgbWlzbWF0Y2ggb24gaW5mbGF0ZWQgZmlsZSAoJWxkIHZzICV6ZClcbiIsCiAgICAgICAgICAgICB6c3RyZWFtLnRvdGFsX291dCwgdW5jb21wTGVuKTsKICAgICAgICAgZ290byB6X2JhaWw7CiAgICAgfQpkaWZmIC0tZ2l0IGEvbGlicy91dGlscy90ZXN0cy9BbmRyb2lkLm1rIGIvbGlicy91dGlscy90ZXN0cy9BbmRyb2lkLm1rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxYjhjZDUKLS0tIC9kZXYvbnVsbAorKysgYi9saWJzL3V0aWxzL3Rlc3RzL0FuZHJvaWQubWsKQEAgLTAsMCArMSwzOSBAQAorIyBCdWlsZCB0aGUgdW5pdCB0ZXN0cy4KK0xPQ0FMX1BBVEggOj0gJChjYWxsIG15LWRpcikKK2luY2x1ZGUgJChDTEVBUl9WQVJTKQorCit0ZXN0X3NyY19maWxlcyA6PSBcCisJT2JiRmlsZV90ZXN0LmNwcCBcCisJUG9sbExvb3BfdGVzdC5jcHAKKworc2hhcmVkX2xpYnJhcmllcyA6PSBcCisJbGlieiBcCisJbGlibG9nIFwKKwlsaWJjdXRpbHMgXAorCWxpYnV0aWxzIFwKKwlsaWJzdGxwb3J0CisKK3N0YXRpY19saWJyYXJpZXMgOj0gXAorCWxpYmd0ZXN0IFwKKwlsaWJndGVzdF9tYWluCisKK2NfaW5jbHVkZXMgOj0gXAorICAgIGV4dGVybmFsL3psaWIgXAorICAgIGV4dGVybmFsL2ljdTRjL2NvbW1vbiBcCisgICAgYmlvbmljIFwKKyAgICBiaW9uaWMvbGlic3RkYysrL2luY2x1ZGUgXAorICAgIGV4dGVybmFsL2d0ZXN0L2luY2x1ZGUgXAorICAgIGV4dGVybmFsL3N0bHBvcnQvc3RscG9ydAorCittb2R1bGVfdGFncyA6PSBlbmcgdGVzdHMKKworJChmb3JlYWNoIGZpbGUsJCh0ZXN0X3NyY19maWxlcyksIFwKKyAgICAkKGV2YWwgaW5jbHVkZSAkKENMRUFSX1ZBUlMpKSBcCisgICAgJChldmFsIExPQ0FMX1NIQVJFRF9MSUJSQVJJRVMgOj0gJChzaGFyZWRfbGlicmFyaWVzKSkgXAorICAgICQoZXZhbCBMT0NBTF9TVEFUSUNfTElCUkFSSUVTIDo9ICQoc3RhdGljX2xpYnJhcmllcykpIFwKKyAgICAkKGV2YWwgTE9DQUxfQ19JTkNMVURFUyA6PSAkKGNfaW5jbHVkZXMpKSBcCisgICAgJChldmFsIExPQ0FMX1NSQ19GSUxFUyA6PSAkKGZpbGUpKSBcCisgICAgJChldmFsIExPQ0FMX01PRFVMRSA6PSAkKG5vdGRpciAkKGZpbGU6JS5jcHA9JSkpKSBcCisgICAgJChldmFsIExPQ0FMX01PRFVMRV9UQUdTIDo9ICQobW9kdWxlX3RhZ3MpKSBcCisgICAgJChldmFsIGluY2x1ZGUgJChCVUlMRF9FWEVDVVRBQkxFKSkgXAorKQpkaWZmIC0tZ2l0IGEvbGlicy91dGlscy90ZXN0cy9PYmJGaWxlX3Rlc3QuY3BwIGIvbGlicy91dGlscy90ZXN0cy9PYmJGaWxlX3Rlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5YmI3MGEKLS0tIC9kZXYvbnVsbAorKysgYi9saWJzL3V0aWxzL3Rlc3RzL09iYkZpbGVfdGVzdC5jcHAKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNkZWZpbmUgTE9HX1RBRyAiT2JiRmlsZV90ZXN0IgorI2luY2x1ZGUgPHV0aWxzL0xvZy5oPgorI2luY2x1ZGUgPHV0aWxzL09iYkZpbGUuaD4KKyNpbmNsdWRlIDx1dGlscy9SZWZCYXNlLmg+CisjaW5jbHVkZSA8dXRpbHMvU3RyaW5nOC5oPgorCisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKworI2luY2x1ZGUgPGZjbnRsLmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworI2RlZmluZSBURVNUX0ZJTEVOQU1FICIvdGVzdC5vYmIiCisKK2NsYXNzIE9iYkZpbGVUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QgeworcHJvdGVjdGVkOgorICAgIHNwPE9iYkZpbGU+IG1PYmJGaWxlOworICAgIGNoYXIqIG1FeHRlcm5hbFN0b3JhZ2U7CisgICAgY2hhciogbUZpbGVOYW1lOworCisgICAgdmlydHVhbCB2b2lkIFNldFVwKCkgeworICAgICAgICBtT2JiRmlsZSA9IG5ldyBPYmJGaWxlKCk7CisgICAgICAgIG1FeHRlcm5hbFN0b3JhZ2UgPSBnZXRlbnYoIkVYVEVSTkFMX1NUT1JBR0UiKTsKKworICAgICAgICBjb25zdCBpbnQgdG90YWxMZW4gPSBzdHJsZW4obUV4dGVybmFsU3RvcmFnZSkgKyBzdHJsZW4oVEVTVF9GSUxFTkFNRSkgKyAxOworICAgICAgICBtRmlsZU5hbWUgPSBuZXcgY2hhclt0b3RhbExlbl07CisgICAgICAgIHNucHJpbnRmKG1GaWxlTmFtZSwgdG90YWxMZW4sICIlcyVzIiwgbUV4dGVybmFsU3RvcmFnZSwgVEVTVF9GSUxFTkFNRSk7CisKKyAgICAgICAgaW50IGZkID0gOjpvcGVuKG1GaWxlTmFtZSwgT19DUkVBVCB8IE9fVFJVTkMpOworICAgICAgICBpZiAoZmQgPCAwKSB7CisgICAgICAgICAgICBGQUlMKCkgPDwgIkNvdWxkbid0IGNyZWF0ZSAiIDw8IG1GaWxlTmFtZSA8PCAiIGZvciB0ZXN0cyI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgfQorfTsKKworVEVTVF9GKE9iYkZpbGVUZXN0LCBSZWFkRmFpbHVyZSkgeworICAgIEVYUEVDVF9GQUxTRShtT2JiRmlsZS0+cmVhZEZyb20oLTEpKQorICAgICAgICAgICAgPDwgIk5vIGZhaWx1cmUgb24gaW52YWxpZCBmaWxlIGRlc2NyaXB0b3IiOworfQorCitURVNUX0YoT2JiRmlsZVRlc3QsIFdyaXRlVGhlblJlYWQpIHsKKyAgICBjb25zdCBjaGFyKiBwYWNrYWdlTmFtZSA9ICJjb20uZXhhbXBsZS5vYmJmaWxlIjsKKyAgICBjb25zdCBpbnQzMl90IHZlcnNpb25OdW0gPSAxOworCisgICAgbU9iYkZpbGUtPnNldFBhY2thZ2VOYW1lKFN0cmluZzgocGFja2FnZU5hbWUpKTsKKyAgICBtT2JiRmlsZS0+c2V0VmVyc2lvbih2ZXJzaW9uTnVtKTsKKworICAgIEVYUEVDVF9UUlVFKG1PYmJGaWxlLT53cml0ZVRvKG1GaWxlTmFtZSkpCisgICAgICAgICAgICA8PCAiY291bGRuJ3Qgd3JpdGUgdG8gZmFrZSAub2JiIGZpbGUiOworCisgICAgbU9iYkZpbGUgPSBuZXcgT2JiRmlsZSgpOworCisgICAgRVhQRUNUX1RSVUUobU9iYkZpbGUtPnJlYWRGcm9tKG1GaWxlTmFtZSkpCisgICAgICAgICAgICA8PCAiY291bGRuJ3QgcmVhZCBmcm9tIGZha2UgLm9iYiBmaWxlIjsKKworICAgIEVYUEVDVF9FUSh2ZXJzaW9uTnVtLCBtT2JiRmlsZS0+Z2V0VmVyc2lvbigpKQorICAgICAgICAgICAgPDwgInZlcnNpb24gZGlkbid0IGNvbWUgb3V0IHRoZSBzYW1lIGFzIGl0IHdlbnQgaW4iOworICAgIGNvbnN0IGNoYXIqIGN1cnJlbnRQYWNrYWdlTmFtZSA9IG1PYmJGaWxlLT5nZXRQYWNrYWdlTmFtZSgpLnN0cmluZygpOworICAgIEVYUEVDVF9TVFJFUShwYWNrYWdlTmFtZSwgY3VycmVudFBhY2thZ2VOYW1lKQorICAgICAgICAgICAgPDwgInBhY2thZ2UgbmFtZSBkaWRuJ3QgY29tZSBvdXQgdGhlIHNhbWUgYXMgaXQgd2VudCBpbiI7Cit9CisKK30KZGlmZiAtLWdpdCBhL2xpYnMvdXRpbHMvdGVzdHMvUG9sbExvb3BfdGVzdC5jcHAgYi9saWJzL3V0aWxzL3Rlc3RzL1BvbGxMb29wX3Rlc3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyZjE4MDgKLS0tIC9kZXYvbnVsbAorKysgYi9saWJzL3V0aWxzL3Rlc3RzL1BvbGxMb29wX3Rlc3QuY3BwCkBAIC0wLDAgKzEsMzcwIEBACisvLworLy8gQ29weXJpZ2h0IDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorLy8KKworI2luY2x1ZGUgPHV0aWxzL1BvbGxMb29wLmg+CisjaW5jbHVkZSA8dXRpbHMvVGltZXJzLmg+CisjaW5jbHVkZSA8dXRpbHMvU3RvcFdhdGNoLmg+CisjaW5jbHVkZSA8Z3Rlc3QvZ3Rlc3QuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDx0aW1lLmg+CisKKyNpbmNsdWRlICJUZXN0SGVscGVycy5oIgorCisvLyAjIG9mIG1pbGxpc2Vjb25kcyB0byBmdWRnZSBzdG9wd2F0Y2ggbWVhc3VyZW1lbnRzCisjZGVmaW5lIFRJTUlOR19UT0xFUkFOQ0VfTVMgMjUKKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitjbGFzcyBEZWxheWVkV2FrZSA6IHB1YmxpYyBEZWxheWVkVGFzayB7CisgICAgc3A8UG9sbExvb3A+IG1Qb2xsTG9vcDsKKworcHVibGljOgorICAgIERlbGF5ZWRXYWtlKGludCBkZWxheU1pbGxpcywgY29uc3Qgc3A8UG9sbExvb3A+IHBvbGxMb29wKSA6CisgICAgICAgIERlbGF5ZWRUYXNrKGRlbGF5TWlsbGlzKSwgbVBvbGxMb29wKHBvbGxMb29wKSB7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIGRvVGFzaygpIHsKKyAgICAgICAgbVBvbGxMb29wLT53YWtlKCk7CisgICAgfQorfTsKKworY2xhc3MgRGVsYXllZFdyaXRlU2lnbmFsIDogcHVibGljIERlbGF5ZWRUYXNrIHsKKyAgICBQaXBlKiBtUGlwZTsKKworcHVibGljOgorICAgIERlbGF5ZWRXcml0ZVNpZ25hbChpbnQgZGVsYXlNaWxsaXMsIFBpcGUqIHBpcGUpIDoKKyAgICAgICAgRGVsYXllZFRhc2soZGVsYXlNaWxsaXMpLCBtUGlwZShwaXBlKSB7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIGRvVGFzaygpIHsKKyAgICAgICAgbVBpcGUtPndyaXRlU2lnbmFsKCk7CisgICAgfQorfTsKKworY2xhc3MgQ2FsbGJhY2tIYW5kbGVyIHsKK3B1YmxpYzoKKyAgICB2b2lkIHNldENhbGxiYWNrKGNvbnN0IHNwPFBvbGxMb29wPiYgcG9sbExvb3AsIGludCBmZCwgaW50IGV2ZW50cykgeworICAgICAgICBwb2xsTG9vcC0+c2V0Q2FsbGJhY2soZmQsIGV2ZW50cywgc3RhdGljSGFuZGxlciwgdGhpcyk7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+Q2FsbGJhY2tIYW5kbGVyKCkgeyB9CisKKyAgICB2aXJ0dWFsIGJvb2wgaGFuZGxlcihpbnQgZmQsIGludCBldmVudHMpID0gMDsKKworcHJpdmF0ZToKKyAgICBzdGF0aWMgYm9vbCBzdGF0aWNIYW5kbGVyKGludCBmZCwgaW50IGV2ZW50cywgdm9pZCogZGF0YSkgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Q2FsbGJhY2tIYW5kbGVyKj4oZGF0YSktPmhhbmRsZXIoZmQsIGV2ZW50cyk7CisgICAgfQorfTsKKworY2xhc3MgU3R1YkNhbGxiYWNrSGFuZGxlciA6IHB1YmxpYyBDYWxsYmFja0hhbmRsZXIgeworcHVibGljOgorICAgIGJvb2wgbmV4dFJlc3VsdDsKKyAgICBpbnQgY2FsbGJhY2tDb3VudDsKKworICAgIGludCBmZDsKKyAgICBpbnQgZXZlbnRzOworCisgICAgU3R1YkNhbGxiYWNrSGFuZGxlcihib29sIG5leHRSZXN1bHQpIDogbmV4dFJlc3VsdChuZXh0UmVzdWx0KSwKKyAgICAgICAgICAgIGNhbGxiYWNrQ291bnQoMCksIGZkKC0xKSwgZXZlbnRzKC0xKSB7CisgICAgfQorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCBib29sIGhhbmRsZXIoaW50IGZkLCBpbnQgZXZlbnRzKSB7CisgICAgICAgIGNhbGxiYWNrQ291bnQgKz0gMTsKKyAgICAgICAgdGhpcy0+ZmQgPSBmZDsKKyAgICAgICAgdGhpcy0+ZXZlbnRzID0gZXZlbnRzOworICAgICAgICByZXR1cm4gbmV4dFJlc3VsdDsKKyAgICB9Cit9OworCitjbGFzcyBQb2xsTG9vcFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCB7Citwcm90ZWN0ZWQ6CisgICAgc3A8UG9sbExvb3A+IG1Qb2xsTG9vcDsKKworICAgIHZpcnR1YWwgdm9pZCBTZXRVcCgpIHsKKyAgICAgICAgbVBvbGxMb29wID0gbmV3IFBvbGxMb29wKGZhbHNlKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgVGVhckRvd24oKSB7CisgICAgICAgIG1Qb2xsTG9vcC5jbGVhcigpOworICAgIH0KK307CisKKworVEVTVF9GKFBvbGxMb29wVGVzdCwgUG9sbE9uY2VfV2hlbk5vblplcm9UaW1lb3V0QW5kTm90QXdva2VuX1dhaXRzRm9yVGltZW91dEFuZFJldHVybnNGYWxzZSkgeworICAgIFN0b3BXYXRjaCBzdG9wV2F0Y2goInBvbGxPbmNlIik7CisgICAgaW50MzJfdCByZXN1bHQgPSBtUG9sbExvb3AtPnBvbGxPbmNlKDEwMCk7CisgICAgaW50MzJfdCBlbGFwc2VkTWlsbGlzID0gbnMybXMoc3RvcFdhdGNoLmVsYXBzZWRUaW1lKCkpOworCisgICAgRVhQRUNUX05FQVIoMTAwLCBlbGFwc2VkTWlsbGlzLCBUSU1JTkdfVE9MRVJBTkNFX01TKQorICAgICAgICAgICAgPDwgImVsYXBzZWQgdGltZSBzaG91bGQgYXBwcm94LiBlcXVhbCB0aW1lb3V0IjsKKyAgICBFWFBFQ1RfRVEocmVzdWx0LCBQb2xsTG9vcDo6UE9MTF9USU1FT1VUKQorICAgICAgICAgICAgPDwgInBvbGxPbmNlIHJlc3VsdCBzaG91bGQgYmUgUE9MTF9USU1FT1VUIjsKK30KKworVEVTVF9GKFBvbGxMb29wVGVzdCwgUG9sbE9uY2VfV2hlbk5vblplcm9UaW1lb3V0QW5kQXdva2VuQmVmb3JlV2FpdGluZ19JbW1lZGlhdGVseVJldHVybnNUcnVlKSB7CisgICAgbVBvbGxMb29wLT53YWtlKCk7CisKKyAgICBTdG9wV2F0Y2ggc3RvcFdhdGNoKCJwb2xsT25jZSIpOworICAgIGludDMyX3QgcmVzdWx0ID0gbVBvbGxMb29wLT5wb2xsT25jZSgxMDAwKTsKKyAgICBpbnQzMl90IGVsYXBzZWRNaWxsaXMgPSBuczJtcyhzdG9wV2F0Y2guZWxhcHNlZFRpbWUoKSk7CisKKyAgICBFWFBFQ1RfTkVBUigwLCBlbGFwc2VkTWlsbGlzLCBUSU1JTkdfVE9MRVJBTkNFX01TKQorICAgICAgICAgICAgPDwgImVsYXBzZWQgdGltZSBzaG91bGQgYXBwcm94LiB6ZXJvIGJlY2F1c2Ugd2FrZSgpIHdhcyBjYWxsZWQgYmVmb3JlIHdhaXRpbmciOworICAgIEVYUEVDVF9FUShyZXN1bHQsIFBvbGxMb29wOjpQT0xMX0NBTExCQUNLKQorICAgICAgICAgICAgPDwgInBvbGxPbmNlIHJlc3VsdCBzaG91bGQgYmUgUE9MTF9DQUxMQkFDSyBiZWNhdXNlIGxvb3Agd2FzIGF3b2tlbiI7Cit9CisKK1RFU1RfRihQb2xsTG9vcFRlc3QsIFBvbGxPbmNlX1doZW5Ob25aZXJvVGltZW91dEFuZEF3b2tlbldoaWxlV2FpdGluZ19Qcm9tcHRseVJldHVybnNUcnVlKSB7CisgICAgc3A8RGVsYXllZFdha2U+IGRlbGF5ZWRXYWtlID0gbmV3IERlbGF5ZWRXYWtlKDEwMCwgbVBvbGxMb29wKTsKKyAgICBkZWxheWVkV2FrZS0+cnVuKCk7CisKKyAgICBTdG9wV2F0Y2ggc3RvcFdhdGNoKCJwb2xsT25jZSIpOworICAgIGludDMyX3QgcmVzdWx0ID0gbVBvbGxMb29wLT5wb2xsT25jZSgxMDAwKTsKKyAgICBpbnQzMl90IGVsYXBzZWRNaWxsaXMgPSBuczJtcyhzdG9wV2F0Y2guZWxhcHNlZFRpbWUoKSk7CisKKyAgICBFWFBFQ1RfTkVBUigxMDAsIGVsYXBzZWRNaWxsaXMsIFRJTUlOR19UT0xFUkFOQ0VfTVMpCisgICAgICAgICAgICA8PCAiZWxhcHNlZCB0aW1lIHNob3VsZCBhcHByb3guIGVxdWFsIHdha2UgZGVsYXkiOworICAgIEVYUEVDVF9FUShyZXN1bHQsIFBvbGxMb29wOjpQT0xMX0NBTExCQUNLKQorICAgICAgICAgICAgPDwgInBvbGxPbmNlIHJlc3VsdCBzaG91bGQgYmUgUE9MTF9DQUxMQkFDSyBiZWNhdXNlIGxvb3Agd2FzIGF3b2tlbiI7Cit9CisKK1RFU1RfRihQb2xsTG9vcFRlc3QsIFBvbGxPbmNlX1doZW5aZXJvVGltZW91dEFuZE5vUmVnaXN0ZXJlZEZEc19JbW1lZGlhdGVseVJldHVybnNGYWxzZSkgeworICAgIFN0b3BXYXRjaCBzdG9wV2F0Y2goInBvbGxPbmNlIik7CisgICAgaW50MzJfdCByZXN1bHQgPSBtUG9sbExvb3AtPnBvbGxPbmNlKDApOworICAgIGludDMyX3QgZWxhcHNlZE1pbGxpcyA9IG5zMm1zKHN0b3BXYXRjaC5lbGFwc2VkVGltZSgpKTsKKworICAgIEVYUEVDVF9ORUFSKDAsIGVsYXBzZWRNaWxsaXMsIFRJTUlOR19UT0xFUkFOQ0VfTVMpCisgICAgICAgICAgICA8PCAiZWxhcHNlZCB0aW1lIHNob3VsZCBiZSBhcHByb3guIHplcm8iOworICAgIEVYUEVDVF9FUShyZXN1bHQsIFBvbGxMb29wOjpQT0xMX1RJTUVPVVQpCisgICAgICAgICAgICA8PCAicG9sbE9uY2UgcmVzdWx0IHNob3VsZCBiZSBQT0xMX1RJTUVPVVQiOworfQorCitURVNUX0YoUG9sbExvb3BUZXN0LCBQb2xsT25jZV9XaGVuWmVyb1RpbWVvdXRBbmROb1NpZ25hbGxlZEZEc19JbW1lZGlhdGVseVJldHVybnNGYWxzZSkgeworICAgIFBpcGUgcGlwZTsKKyAgICBTdHViQ2FsbGJhY2tIYW5kbGVyIGhhbmRsZXIodHJ1ZSk7CisKKyAgICBoYW5kbGVyLnNldENhbGxiYWNrKG1Qb2xsTG9vcCwgcGlwZS5yZWNlaXZlRmQsIFBPTExfSU4pOworCisgICAgU3RvcFdhdGNoIHN0b3BXYXRjaCgicG9sbE9uY2UiKTsKKyAgICBpbnQzMl90IHJlc3VsdCA9IG1Qb2xsTG9vcC0+cG9sbE9uY2UoMCk7CisgICAgaW50MzJfdCBlbGFwc2VkTWlsbGlzID0gbnMybXMoc3RvcFdhdGNoLmVsYXBzZWRUaW1lKCkpOworCisgICAgRVhQRUNUX05FQVIoMCwgZWxhcHNlZE1pbGxpcywgVElNSU5HX1RPTEVSQU5DRV9NUykKKyAgICAgICAgICAgIDw8ICJlbGFwc2VkIHRpbWUgc2hvdWxkIGJlIGFwcHJveC4gemVybyI7CisgICAgRVhQRUNUX0VRKHJlc3VsdCwgUG9sbExvb3A6OlBPTExfVElNRU9VVCkKKyAgICAgICAgICAgIDw8ICJwb2xsT25jZSByZXN1bHQgc2hvdWxkIGJlIFBPTExfVElNRU9VVCI7CisgICAgRVhQRUNUX0VRKDAsIGhhbmRsZXIuY2FsbGJhY2tDb3VudCkKKyAgICAgICAgICAgIDw8ICJjYWxsYmFjayBzaG91bGQgbm90IGhhdmUgYmVlbiBpbnZva2VkIGJlY2F1c2UgRkQgd2FzIG5vdCBzaWduYWxsZWQiOworfQorCitURVNUX0YoUG9sbExvb3BUZXN0LCBQb2xsT25jZV9XaGVuWmVyb1RpbWVvdXRBbmRTaWduYWxsZWRGRF9JbW1lZGlhdGVseUludm9rZXNDYWxsYmFja0FuZFJldHVybnNUcnVlKSB7CisgICAgUGlwZSBwaXBlOworICAgIFN0dWJDYWxsYmFja0hhbmRsZXIgaGFuZGxlcih0cnVlKTsKKworICAgIEFTU0VSVF9FUShPSywgcGlwZS53cml0ZVNpZ25hbCgpKTsKKyAgICBoYW5kbGVyLnNldENhbGxiYWNrKG1Qb2xsTG9vcCwgcGlwZS5yZWNlaXZlRmQsIFBPTExfSU4pOworCisgICAgU3RvcFdhdGNoIHN0b3BXYXRjaCgicG9sbE9uY2UiKTsKKyAgICBpbnQzMl90IHJlc3VsdCA9IG1Qb2xsTG9vcC0+cG9sbE9uY2UoMCk7CisgICAgaW50MzJfdCBlbGFwc2VkTWlsbGlzID0gbnMybXMoc3RvcFdhdGNoLmVsYXBzZWRUaW1lKCkpOworCisgICAgRVhQRUNUX05FQVIoMCwgZWxhcHNlZE1pbGxpcywgVElNSU5HX1RPTEVSQU5DRV9NUykKKyAgICAgICAgICAgIDw8ICJlbGFwc2VkIHRpbWUgc2hvdWxkIGJlIGFwcHJveC4gemVybyI7CisgICAgRVhQRUNUX0VRKHJlc3VsdCwgUG9sbExvb3A6OlBPTExfQ0FMTEJBQ0spCisgICAgICAgICAgICA8PCAicG9sbE9uY2UgcmVzdWx0IHNob3VsZCBiZSBQT0xMX0NBTExCQUNLIGJlY2F1c2UgRkQgd2FzIHNpZ25hbGxlZCI7CisgICAgRVhQRUNUX0VRKDEsIGhhbmRsZXIuY2FsbGJhY2tDb3VudCkKKyAgICAgICAgICAgIDw8ICJjYWxsYmFjayBzaG91bGQgYmUgaW52b2tlZCBleGFjdGx5IG9uY2UiOworICAgIEVYUEVDVF9FUShwaXBlLnJlY2VpdmVGZCwgaGFuZGxlci5mZCkKKyAgICAgICAgICAgIDw8ICJjYWxsYmFjayBzaG91bGQgaGF2ZSByZWNlaXZlZCBwaXBlIGZkIGFzIHBhcmFtZXRlciI7CisgICAgRVhQRUNUX0VRKFBPTExfSU4sIGhhbmRsZXIuZXZlbnRzKQorICAgICAgICAgICAgPDwgImNhbGxiYWNrIHNob3VsZCBoYXZlIHJlY2VpdmVkIFBPTExfSU4gYXMgZXZlbnRzIjsKK30KKworVEVTVF9GKFBvbGxMb29wVGVzdCwgUG9sbE9uY2VfV2hlbk5vblplcm9UaW1lb3V0QW5kTm9TaWduYWxsZWRGRHNfV2FpdHNGb3JUaW1lb3V0QW5kUmV0dXJuc0ZhbHNlKSB7CisgICAgUGlwZSBwaXBlOworICAgIFN0dWJDYWxsYmFja0hhbmRsZXIgaGFuZGxlcih0cnVlKTsKKworICAgIGhhbmRsZXIuc2V0Q2FsbGJhY2sobVBvbGxMb29wLCBwaXBlLnJlY2VpdmVGZCwgUE9MTF9JTik7CisKKyAgICBTdG9wV2F0Y2ggc3RvcFdhdGNoKCJwb2xsT25jZSIpOworICAgIGludDMyX3QgcmVzdWx0ID0gbVBvbGxMb29wLT5wb2xsT25jZSgxMDApOworICAgIGludDMyX3QgZWxhcHNlZE1pbGxpcyA9IG5zMm1zKHN0b3BXYXRjaC5lbGFwc2VkVGltZSgpKTsKKworICAgIEVYUEVDVF9ORUFSKDEwMCwgZWxhcHNlZE1pbGxpcywgVElNSU5HX1RPTEVSQU5DRV9NUykKKyAgICAgICAgICAgIDw8ICJlbGFwc2VkIHRpbWUgc2hvdWxkIGFwcHJveC4gZXF1YWwgdGltZW91dCI7CisgICAgRVhQRUNUX0VRKHJlc3VsdCwgUG9sbExvb3A6OlBPTExfVElNRU9VVCkKKyAgICAgICAgICAgIDw8ICJwb2xsT25jZSByZXN1bHQgc2hvdWxkIGJlIFBPTExfVElNRU9VVCI7CisgICAgRVhQRUNUX0VRKDAsIGhhbmRsZXIuY2FsbGJhY2tDb3VudCkKKyAgICAgICAgICAgIDw8ICJjYWxsYmFjayBzaG91bGQgbm90IGhhdmUgYmVlbiBpbnZva2VkIGJlY2F1c2UgRkQgd2FzIG5vdCBzaWduYWxsZWQiOworfQorCitURVNUX0YoUG9sbExvb3BUZXN0LCBQb2xsT25jZV9XaGVuTm9uWmVyb1RpbWVvdXRBbmRTaWduYWxsZWRGREJlZm9yZVdhaXRpbmdfSW1tZWRpYXRlbHlJbnZva2VzQ2FsbGJhY2tBbmRSZXR1cm5zVHJ1ZSkgeworICAgIFBpcGUgcGlwZTsKKyAgICBTdHViQ2FsbGJhY2tIYW5kbGVyIGhhbmRsZXIodHJ1ZSk7CisKKyAgICBwaXBlLndyaXRlU2lnbmFsKCk7CisgICAgaGFuZGxlci5zZXRDYWxsYmFjayhtUG9sbExvb3AsIHBpcGUucmVjZWl2ZUZkLCBQT0xMX0lOKTsKKworICAgIFN0b3BXYXRjaCBzdG9wV2F0Y2goInBvbGxPbmNlIik7CisgICAgaW50MzJfdCByZXN1bHQgPSBtUG9sbExvb3AtPnBvbGxPbmNlKDEwMCk7CisgICAgaW50MzJfdCBlbGFwc2VkTWlsbGlzID0gbnMybXMoc3RvcFdhdGNoLmVsYXBzZWRUaW1lKCkpOworCisgICAgQVNTRVJUX0VRKE9LLCBwaXBlLnJlYWRTaWduYWwoKSkKKyAgICAgICAgICAgIDw8ICJzaWduYWwgc2hvdWxkIGFjdHVhbGx5IGhhdmUgYmVlbiB3cml0dGVuIjsKKyAgICBFWFBFQ1RfTkVBUigwLCBlbGFwc2VkTWlsbGlzLCBUSU1JTkdfVE9MRVJBTkNFX01TKQorICAgICAgICAgICAgPDwgImVsYXBzZWQgdGltZSBzaG91bGQgYmUgYXBwcm94LiB6ZXJvIjsKKyAgICBFWFBFQ1RfRVEocmVzdWx0LCBQb2xsTG9vcDo6UE9MTF9DQUxMQkFDSykKKyAgICAgICAgICAgIDw8ICJwb2xsT25jZSByZXN1bHQgc2hvdWxkIGJlIFBPTExfQ0FMTEJBQ0sgYmVjYXVzZSBGRCB3YXMgc2lnbmFsbGVkIjsKKyAgICBFWFBFQ1RfRVEoMSwgaGFuZGxlci5jYWxsYmFja0NvdW50KQorICAgICAgICAgICAgPDwgImNhbGxiYWNrIHNob3VsZCBiZSBpbnZva2VkIGV4YWN0bHkgb25jZSI7CisgICAgRVhQRUNUX0VRKHBpcGUucmVjZWl2ZUZkLCBoYW5kbGVyLmZkKQorICAgICAgICAgICAgPDwgImNhbGxiYWNrIHNob3VsZCBoYXZlIHJlY2VpdmVkIHBpcGUgZmQgYXMgcGFyYW1ldGVyIjsKKyAgICBFWFBFQ1RfRVEoUE9MTF9JTiwgaGFuZGxlci5ldmVudHMpCisgICAgICAgICAgICA8PCAiY2FsbGJhY2sgc2hvdWxkIGhhdmUgcmVjZWl2ZWQgUE9MTF9JTiBhcyBldmVudHMiOworfQorCitURVNUX0YoUG9sbExvb3BUZXN0LCBQb2xsT25jZV9XaGVuTm9uWmVyb1RpbWVvdXRBbmRTaWduYWxsZWRGRFdoaWxlV2FpdGluZ19Qcm9tcHRseUludm9rZXNDYWxsYmFja0FuZFJldHVybnNUcnVlKSB7CisgICAgUGlwZSBwaXBlOworICAgIFN0dWJDYWxsYmFja0hhbmRsZXIgaGFuZGxlcih0cnVlKTsKKyAgICBzcDxEZWxheWVkV3JpdGVTaWduYWw+IGRlbGF5ZWRXcml0ZVNpZ25hbCA9IG5ldyBEZWxheWVkV3JpdGVTaWduYWwoMTAwLCAmIHBpcGUpOworCisgICAgaGFuZGxlci5zZXRDYWxsYmFjayhtUG9sbExvb3AsIHBpcGUucmVjZWl2ZUZkLCBQT0xMX0lOKTsKKyAgICBkZWxheWVkV3JpdGVTaWduYWwtPnJ1bigpOworCisgICAgU3RvcFdhdGNoIHN0b3BXYXRjaCgicG9sbE9uY2UiKTsKKyAgICBpbnQzMl90IHJlc3VsdCA9IG1Qb2xsTG9vcC0+cG9sbE9uY2UoMTAwMCk7CisgICAgaW50MzJfdCBlbGFwc2VkTWlsbGlzID0gbnMybXMoc3RvcFdhdGNoLmVsYXBzZWRUaW1lKCkpOworCisgICAgQVNTRVJUX0VRKE9LLCBwaXBlLnJlYWRTaWduYWwoKSkKKyAgICAgICAgICAgIDw8ICJzaWduYWwgc2hvdWxkIGFjdHVhbGx5IGhhdmUgYmVlbiB3cml0dGVuIjsKKyAgICBFWFBFQ1RfTkVBUigxMDAsIGVsYXBzZWRNaWxsaXMsIFRJTUlOR19UT0xFUkFOQ0VfTVMpCisgICAgICAgICAgICA8PCAiZWxhcHNlZCB0aW1lIHNob3VsZCBhcHByb3guIGVxdWFsIHNpZ25hbCBkZWxheSI7CisgICAgRVhQRUNUX0VRKHJlc3VsdCwgUG9sbExvb3A6OlBPTExfQ0FMTEJBQ0spCisgICAgICAgICAgICA8PCAicG9sbE9uY2UgcmVzdWx0IHNob3VsZCBiZSBQT0xMX0NBTExCQUNLIGJlY2F1c2UgRkQgd2FzIHNpZ25hbGxlZCI7CisgICAgRVhQRUNUX0VRKDEsIGhhbmRsZXIuY2FsbGJhY2tDb3VudCkKKyAgICAgICAgICAgIDw8ICJjYWxsYmFjayBzaG91bGQgYmUgaW52b2tlZCBleGFjdGx5IG9uY2UiOworICAgIEVYUEVDVF9FUShwaXBlLnJlY2VpdmVGZCwgaGFuZGxlci5mZCkKKyAgICAgICAgICAgIDw8ICJjYWxsYmFjayBzaG91bGQgaGF2ZSByZWNlaXZlZCBwaXBlIGZkIGFzIHBhcmFtZXRlciI7CisgICAgRVhQRUNUX0VRKFBPTExfSU4sIGhhbmRsZXIuZXZlbnRzKQorICAgICAgICAgICAgPDwgImNhbGxiYWNrIHNob3VsZCBoYXZlIHJlY2VpdmVkIFBPTExfSU4gYXMgZXZlbnRzIjsKK30KKworVEVTVF9GKFBvbGxMb29wVGVzdCwgUG9sbE9uY2VfV2hlbkNhbGxiYWNrQWRkZWRUaGVuUmVtb3ZlZF9DYWxsYmFja1Nob3VsZE5vdEJlSW52b2tlZCkgeworICAgIFBpcGUgcGlwZTsKKyAgICBTdHViQ2FsbGJhY2tIYW5kbGVyIGhhbmRsZXIodHJ1ZSk7CisKKyAgICBoYW5kbGVyLnNldENhbGxiYWNrKG1Qb2xsTG9vcCwgcGlwZS5yZWNlaXZlRmQsIFBPTExfSU4pOworICAgIHBpcGUud3JpdGVTaWduYWwoKTsgLy8gd291bGQgY2F1c2UgRkQgdG8gYmUgY29uc2lkZXJlZCBzaWduYWxsZWQKKyAgICBtUG9sbExvb3AtPnJlbW92ZUNhbGxiYWNrKHBpcGUucmVjZWl2ZUZkKTsKKworICAgIFN0b3BXYXRjaCBzdG9wV2F0Y2goInBvbGxPbmNlIik7CisgICAgaW50MzJfdCByZXN1bHQgPSBtUG9sbExvb3AtPnBvbGxPbmNlKDEwMCk7CisgICAgaW50MzJfdCBlbGFwc2VkTWlsbGlzID0gbnMybXMoc3RvcFdhdGNoLmVsYXBzZWRUaW1lKCkpOworCisgICAgQVNTRVJUX0VRKE9LLCBwaXBlLnJlYWRTaWduYWwoKSkKKyAgICAgICAgICAgIDw8ICJzaWduYWwgc2hvdWxkIGFjdHVhbGx5IGhhdmUgYmVlbiB3cml0dGVuIjsKKyAgICBFWFBFQ1RfTkVBUigxMDAsIGVsYXBzZWRNaWxsaXMsIFRJTUlOR19UT0xFUkFOQ0VfTVMpCisgICAgICAgICAgICA8PCAiZWxhcHNlZCB0aW1lIHNob3VsZCBhcHByb3guIGVxdWFsIHRpbWVvdXQgYmVjYXVzZSBGRCB3YXMgbm8gbG9uZ2VyIHJlZ2lzdGVyZWQiOworICAgIEVYUEVDVF9FUShyZXN1bHQsIFBvbGxMb29wOjpQT0xMX1RJTUVPVVQpCisgICAgICAgICAgICA8PCAicG9sbE9uY2UgcmVzdWx0IHNob3VsZCBiZSBQT0xMX1RJTUVPVVQiOworICAgIEVYUEVDVF9FUSgwLCBoYW5kbGVyLmNhbGxiYWNrQ291bnQpCisgICAgICAgICAgICA8PCAiY2FsbGJhY2sgc2hvdWxkIG5vdCBiZSBpbnZva2VkIjsKK30KKworVEVTVF9GKFBvbGxMb29wVGVzdCwgUG9sbE9uY2VfV2hlbkNhbGxiYWNrUmV0dXJuc0ZhbHNlX0NhbGxiYWNrU2hvdWxkTm90QmVJbnZva2VkQWdhaW5MYXRlcikgeworICAgIFBpcGUgcGlwZTsKKyAgICBTdHViQ2FsbGJhY2tIYW5kbGVyIGhhbmRsZXIoZmFsc2UpOworCisgICAgaGFuZGxlci5zZXRDYWxsYmFjayhtUG9sbExvb3AsIHBpcGUucmVjZWl2ZUZkLCBQT0xMX0lOKTsKKworICAgIC8vIEZpcnN0IGxvb3A6IENhbGxiYWNrIGlzIHJlZ2lzdGVyZWQgYW5kIEZEIGlzIHNpZ25hbGxlZC4KKyAgICBwaXBlLndyaXRlU2lnbmFsKCk7CisKKyAgICBTdG9wV2F0Y2ggc3RvcFdhdGNoKCJwb2xsT25jZSIpOworICAgIGludDMyX3QgcmVzdWx0ID0gbVBvbGxMb29wLT5wb2xsT25jZSgwKTsKKyAgICBpbnQzMl90IGVsYXBzZWRNaWxsaXMgPSBuczJtcyhzdG9wV2F0Y2guZWxhcHNlZFRpbWUoKSk7CisKKyAgICBBU1NFUlRfRVEoT0ssIHBpcGUucmVhZFNpZ25hbCgpKQorICAgICAgICAgICAgPDwgInNpZ25hbCBzaG91bGQgYWN0dWFsbHkgaGF2ZSBiZWVuIHdyaXR0ZW4iOworICAgIEVYUEVDVF9ORUFSKDAsIGVsYXBzZWRNaWxsaXMsIFRJTUlOR19UT0xFUkFOQ0VfTVMpCisgICAgICAgICAgICA8PCAiZWxhcHNlZCB0aW1lIHNob3VsZCBhcHByb3guIGVxdWFsIHplcm8gYmVjYXVzZSBGRCB3YXMgYWxyZWFkeSBzaWduYWxsZWQiOworICAgIEVYUEVDVF9FUShyZXN1bHQsIFBvbGxMb29wOjpQT0xMX0NBTExCQUNLKQorICAgICAgICAgICAgPDwgInBvbGxPbmNlIHJlc3VsdCBzaG91bGQgYmUgUE9MTF9DQUxMQkFDSyBiZWNhdXNlIEZEIHdhcyBzaWduYWxsZWQiOworICAgIEVYUEVDVF9FUSgxLCBoYW5kbGVyLmNhbGxiYWNrQ291bnQpCisgICAgICAgICAgICA8PCAiY2FsbGJhY2sgc2hvdWxkIGJlIGludm9rZWQiOworCisgICAgLy8gU2Vjb25kIGxvb3A6IENhbGxiYWNrIGlzIG5vIGxvbmdlciByZWdpc3RlcmVkIGFuZCBGRCBpcyBzaWduYWxsZWQuCisgICAgcGlwZS53cml0ZVNpZ25hbCgpOworCisgICAgc3RvcFdhdGNoLnJlc2V0KCk7CisgICAgcmVzdWx0ID0gbVBvbGxMb29wLT5wb2xsT25jZSgwKTsKKyAgICBlbGFwc2VkTWlsbGlzID0gbnMybXMoc3RvcFdhdGNoLmVsYXBzZWRUaW1lKCkpOworCisgICAgQVNTRVJUX0VRKE9LLCBwaXBlLnJlYWRTaWduYWwoKSkKKyAgICAgICAgICAgIDw8ICJzaWduYWwgc2hvdWxkIGFjdHVhbGx5IGhhdmUgYmVlbiB3cml0dGVuIjsKKyAgICBFWFBFQ1RfTkVBUigwLCBlbGFwc2VkTWlsbGlzLCBUSU1JTkdfVE9MRVJBTkNFX01TKQorICAgICAgICAgICAgPDwgImVsYXBzZWQgdGltZSBzaG91bGQgYXBwcm94LiBlcXVhbCB6ZXJvIGJlY2F1c2UgdGltZW91dCB3YXMgemVybyI7CisgICAgRVhQRUNUX0VRKHJlc3VsdCwgUG9sbExvb3A6OlBPTExfVElNRU9VVCkKKyAgICAgICAgICAgIDw8ICJwb2xsT25jZSByZXN1bHQgc2hvdWxkIGJlIFBPTExfVElNRU9VVCI7CisgICAgRVhQRUNUX0VRKDEsIGhhbmRsZXIuY2FsbGJhY2tDb3VudCkKKyAgICAgICAgICAgIDw8ICJjYWxsYmFjayBzaG91bGQgbm90IGJlIGludm9rZWQgdGhpcyB0aW1lIjsKK30KKworVEVTVF9GKFBvbGxMb29wVGVzdCwgUmVtb3ZlQ2FsbGJhY2tfV2hlbkNhbGxiYWNrTm90QWRkZWRfUmV0dXJuc0ZhbHNlKSB7CisgICAgYm9vbCByZXN1bHQgPSBtUG9sbExvb3AtPnJlbW92ZUNhbGxiYWNrKDEpOworCisgICAgRVhQRUNUX0ZBTFNFKHJlc3VsdCkKKyAgICAgICAgICAgIDw8ICJyZW1vdmVDYWxsYmFjayBzaG91bGQgcmV0dXJuIGZhbHNlIGJlY2F1c2UgRkQgbm90IHJlZ2lzdGVyZWQiOworfQorCitURVNUX0YoUG9sbExvb3BUZXN0LCBSZW1vdmVDYWxsYmFja19XaGVuQ2FsbGJhY2tBZGRlZFRoZW5SZW1vdmVkVHdpY2VfUmV0dXJuc1RydWVGaXJzdFRpbWVBbmRSZXR1cm5zRmFsc2VTZWNvbmRUaW1lKSB7CisgICAgUGlwZSBwaXBlOworICAgIFN0dWJDYWxsYmFja0hhbmRsZXIgaGFuZGxlcihmYWxzZSk7CisgICAgaGFuZGxlci5zZXRDYWxsYmFjayhtUG9sbExvb3AsIHBpcGUucmVjZWl2ZUZkLCBQT0xMX0lOKTsKKworICAgIC8vIEZpcnN0IHRpbWUuCisgICAgYm9vbCByZXN1bHQgPSBtUG9sbExvb3AtPnJlbW92ZUNhbGxiYWNrKHBpcGUucmVjZWl2ZUZkKTsKKworICAgIEVYUEVDVF9UUlVFKHJlc3VsdCkKKyAgICAgICAgICAgIDw8ICJyZW1vdmVDYWxsYmFjayBzaG91bGQgcmV0dXJuIHRydWUgZmlyc3QgdGltZSBiZWNhdXNlIEZEIHdhcyByZWdpc3RlcmVkIjsKKworICAgIC8vIFNlY29uZCB0aW1lLgorICAgIHJlc3VsdCA9IG1Qb2xsTG9vcC0+cmVtb3ZlQ2FsbGJhY2socGlwZS5yZWNlaXZlRmQpOworCisgICAgRVhQRUNUX0ZBTFNFKHJlc3VsdCkKKyAgICAgICAgICAgIDw8ICJyZW1vdmVDYWxsYmFjayBzaG91bGQgcmV0dXJuIGZhbHNlIHNlY29uZCB0aW1lIGJlY2F1c2UgRkQgd2FzIG5vIGxvbmdlciByZWdpc3RlcmVkIjsKK30KKworVEVTVF9GKFBvbGxMb29wVGVzdCwgUG9sbE9uY2VfV2hlbkNhbGxiYWNrQWRkZWRUd2ljZV9Pbmx5U2Vjb25kQ2FsbGJhY2tTaG91bGRCZUludm9rZWQpIHsKKyAgICBQaXBlIHBpcGU7CisgICAgU3R1YkNhbGxiYWNrSGFuZGxlciBoYW5kbGVyMSh0cnVlKTsKKyAgICBTdHViQ2FsbGJhY2tIYW5kbGVyIGhhbmRsZXIyKHRydWUpOworCisgICAgaGFuZGxlcjEuc2V0Q2FsbGJhY2sobVBvbGxMb29wLCBwaXBlLnJlY2VpdmVGZCwgUE9MTF9JTik7CisgICAgaGFuZGxlcjIuc2V0Q2FsbGJhY2sobVBvbGxMb29wLCBwaXBlLnJlY2VpdmVGZCwgUE9MTF9JTik7IC8vIHJlcGxhY2UgaXQKKyAgICBwaXBlLndyaXRlU2lnbmFsKCk7IC8vIHdvdWxkIGNhdXNlIEZEIHRvIGJlIGNvbnNpZGVyZWQgc2lnbmFsbGVkCisKKyAgICBTdG9wV2F0Y2ggc3RvcFdhdGNoKCJwb2xsT25jZSIpOworICAgIGludDMyX3QgcmVzdWx0ID0gbVBvbGxMb29wLT5wb2xsT25jZSgxMDApOworICAgIGludDMyX3QgZWxhcHNlZE1pbGxpcyA9IG5zMm1zKHN0b3BXYXRjaC5lbGFwc2VkVGltZSgpKTsKKworICAgIEFTU0VSVF9FUShPSywgcGlwZS5yZWFkU2lnbmFsKCkpCisgICAgICAgICAgICA8PCAic2lnbmFsIHNob3VsZCBhY3R1YWxseSBoYXZlIGJlZW4gd3JpdHRlbiI7CisgICAgRVhQRUNUX05FQVIoMCwgZWxhcHNlZE1pbGxpcywgVElNSU5HX1RPTEVSQU5DRV9NUykKKyAgICAgICAgICAgIDw8ICJlbGFwc2VkIHRpbWUgc2hvdWxkIGFwcHJveC4gemVybyBiZWNhdXNlIEZEIHdhcyBhbHJlYWR5IHNpZ25hbGxlZCI7CisgICAgRVhQRUNUX0VRKHJlc3VsdCwgUG9sbExvb3A6OlBPTExfQ0FMTEJBQ0spCisgICAgICAgICAgICA8PCAicG9sbE9uY2UgcmVzdWx0IHNob3VsZCBiZSBQT0xMX0NBTExCQUNLIGJlY2F1c2UgRkQgd2FzIHNpZ25hbGxlZCI7CisgICAgRVhQRUNUX0VRKDAsIGhhbmRsZXIxLmNhbGxiYWNrQ291bnQpCisgICAgICAgICAgICA8PCAib3JpZ2luYWwgaGFuZGxlciBjYWxsYmFjayBzaG91bGQgbm90IGJlIGludm9rZWQgYmVjYXVzZSBpdCB3YXMgcmVwbGFjZWQiOworICAgIEVYUEVDVF9FUSgxLCBoYW5kbGVyMi5jYWxsYmFja0NvdW50KQorICAgICAgICAgICAgPDwgInJlcGxhY2VtZW50IGhhbmRsZXIgY2FsbGJhY2sgc2hvdWxkIGJlIGludm9rZWQiOworfQorCisKK30gLy8gbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL2xpYnMvdXRpbHMvdGVzdHMvVGVzdEhlbHBlcnMuaCBiL2xpYnMvdXRpbHMvdGVzdHMvVGVzdEhlbHBlcnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOGU5ODVlCi0tLSAvZGV2L251bGwKKysrIGIvbGlicy91dGlscy90ZXN0cy9UZXN0SGVscGVycy5oCkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIFRFU1RIRUxQRVJTX0gKKyNkZWZpbmUgVEVTVEhFTFBFUlNfSAorCisjaW5jbHVkZSA8dXRpbHMvdGhyZWFkcy5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK2NsYXNzIFBpcGUgeworcHVibGljOgorICAgIGludCBzZW5kRmQ7CisgICAgaW50IHJlY2VpdmVGZDsKKworICAgIFBpcGUoKSB7CisgICAgICAgIGludCBmZHNbMl07CisgICAgICAgIDo6cGlwZShmZHMpOworCisgICAgICAgIHJlY2VpdmVGZCA9IGZkc1swXTsKKyAgICAgICAgc2VuZEZkID0gZmRzWzFdOworICAgIH0KKworICAgIH5QaXBlKCkgeworICAgICAgICBpZiAoc2VuZEZkICE9IC0xKSB7CisgICAgICAgICAgICA6OmNsb3NlKHNlbmRGZCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAocmVjZWl2ZUZkICE9IC0xKSB7CisgICAgICAgICAgICA6OmNsb3NlKHJlY2VpdmVGZCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdGF0dXNfdCB3cml0ZVNpZ25hbCgpIHsKKyAgICAgICAgc3NpemVfdCBuV3JpdHRlbiA9IDo6d3JpdGUoc2VuZEZkLCAiKiIsIDEpOworICAgICAgICByZXR1cm4gbldyaXR0ZW4gPT0gMSA/IDAgOiAtZXJybm87CisgICAgfQorCisgICAgc3RhdHVzX3QgcmVhZFNpZ25hbCgpIHsKKyAgICAgICAgY2hhciBidWZbMV07CisgICAgICAgIHNzaXplX3QgblJlYWQgPSA6OnJlYWQocmVjZWl2ZUZkLCBidWYsIDEpOworICAgICAgICByZXR1cm4gblJlYWQgPT0gMSA/IDAgOiBuUmVhZCA9PSAwID8gLUVQSVBFIDogLWVycm5vOworICAgIH0KK307CisKK2NsYXNzIERlbGF5ZWRUYXNrIDogcHVibGljIFRocmVhZCB7CisgICAgaW50IG1EZWxheU1pbGxpczsKKworcHVibGljOgorICAgIERlbGF5ZWRUYXNrKGludCBkZWxheU1pbGxpcykgOiBtRGVsYXlNaWxsaXMoZGVsYXlNaWxsaXMpIHsgfQorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+RGVsYXllZFRhc2soKSB7IH0KKworICAgIHZpcnR1YWwgdm9pZCBkb1Rhc2soKSA9IDA7CisKKyAgICB2aXJ0dWFsIGJvb2wgdGhyZWFkTG9vcCgpIHsKKyAgICAgICAgdXNsZWVwKG1EZWxheU1pbGxpcyAqIDEwMDApOworICAgICAgICBkb1Rhc2soKTsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIGFuZHJvaWQKKworI2VuZGlmIC8vIFRFU1RIRUxQRVJTX0gKZGlmZiAtLWdpdCBhL2xvY2F0aW9uL2phdmEvYW5kcm9pZC9sb2NhdGlvbi9BZGRyZXNzLmphdmEgYi9sb2NhdGlvbi9qYXZhL2FuZHJvaWQvbG9jYXRpb24vQWRkcmVzcy5qYXZhCmluZGV4IGFjMjc1YzYuLmIxNTJmNDggMTAwNjQ0Ci0tLSBhL2xvY2F0aW9uL2phdmEvYW5kcm9pZC9sb2NhdGlvbi9BZGRyZXNzLmphdmEKKysrIGIvbG9jYXRpb24vamF2YS9hbmRyb2lkL2xvY2F0aW9uL0FkZHJlc3MuamF2YQpAQCAtNTAwLDcgKzUwMCwxMCBAQAogICAgICAgICAgICAgYS5tQWRtaW5BcmVhID0gaW4ucmVhZFN0cmluZygpOwogICAgICAgICAgICAgYS5tU3ViQWRtaW5BcmVhID0gaW4ucmVhZFN0cmluZygpOwogICAgICAgICAgICAgYS5tTG9jYWxpdHkgPSBpbi5yZWFkU3RyaW5nKCk7CisgICAgICAgICAgICBhLm1TdWJMb2NhbGl0eSA9IGluLnJlYWRTdHJpbmcoKTsKICAgICAgICAgICAgIGEubVRob3JvdWdoZmFyZSA9IGluLnJlYWRTdHJpbmcoKTsKKyAgICAgICAgICAgIGEubVN1YlRob3JvdWdoZmFyZSA9IGluLnJlYWRTdHJpbmcoKTsKKyAgICAgICAgICAgIGEubVByZW1pc2VzID0gaW4ucmVhZFN0cmluZygpOwogICAgICAgICAgICAgYS5tUG9zdGFsQ29kZSA9IGluLnJlYWRTdHJpbmcoKTsKICAgICAgICAgICAgIGEubUNvdW50cnlDb2RlID0gaW4ucmVhZFN0cmluZygpOwogICAgICAgICAgICAgYS5tQ291bnRyeU5hbWUgPSBpbi5yZWFkU3RyaW5nKCk7CkBAIC01NDQsNyArNTQ3LDEwIEBACiAgICAgICAgIHBhcmNlbC53cml0ZVN0cmluZyhtQWRtaW5BcmVhKTsKICAgICAgICAgcGFyY2VsLndyaXRlU3RyaW5nKG1TdWJBZG1pbkFyZWEpOwogICAgICAgICBwYXJjZWwud3JpdGVTdHJpbmcobUxvY2FsaXR5KTsKKyAgICAgICAgcGFyY2VsLndyaXRlU3RyaW5nKG1TdWJMb2NhbGl0eSk7CiAgICAgICAgIHBhcmNlbC53cml0ZVN0cmluZyhtVGhvcm91Z2hmYXJlKTsKKyAgICAgICAgcGFyY2VsLndyaXRlU3RyaW5nKG1TdWJUaG9yb3VnaGZhcmUpOworICAgICAgICBwYXJjZWwud3JpdGVTdHJpbmcobVByZW1pc2VzKTsKICAgICAgICAgcGFyY2VsLndyaXRlU3RyaW5nKG1Qb3N0YWxDb2RlKTsKICAgICAgICAgcGFyY2VsLndyaXRlU3RyaW5nKG1Db3VudHJ5Q29kZSk7CiAgICAgICAgIHBhcmNlbC53cml0ZVN0cmluZyhtQ291bnRyeU5hbWUpOwpkaWZmIC0tZ2l0IGEvbG9jYXRpb24vamF2YS9hbmRyb2lkL2xvY2F0aW9uL0NyaXRlcmlhLmphdmEgYi9sb2NhdGlvbi9qYXZhL2FuZHJvaWQvbG9jYXRpb24vQ3JpdGVyaWEuamF2YQppbmRleCA5ZDI1OGQwLi4xZjNmYjdhIDEwMDY0NAotLS0gYS9sb2NhdGlvbi9qYXZhL2FuZHJvaWQvbG9jYXRpb24vQ3JpdGVyaWEuamF2YQorKysgYi9sb2NhdGlvbi9qYXZhL2FuZHJvaWQvbG9jYXRpb24vQ3JpdGVyaWEuamF2YQpAQCAtNTcsOSArNTcsMzUgQEAKICAgICAgKi8KICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBBQ0NVUkFDWV9DT0FSU0UgPSAyOwogCi0gICAgcHJpdmF0ZSBpbnQgbUFjY3VyYWN5ICAgICAgICAgICAgICA9IE5PX1JFUVVJUkVNRU5UOworICAgIC8qKgorICAgICAqIEEgY29uc3RhbnQgaW5kaWNhdGluZyBhIGxvdyBsb2NhdGlvbiBhY2N1cmFjeSByZXF1aXJlbWVudAorICAgICAqIC0gbWF5IGJlIHVzZWQgZm9yIGhvcml6b250YWwsIGFsdGl0dWRlLCBzcGVlZCBvciBiZWFyaW5nIGFjY3VyYWN5LgorICAgICAqIEZvciBob3Jpem9udGFsIGFuZCB2ZXJ0aWNhbCBwb3NpdGlvbiB0aGlzIGNvcnJlc3BvbmRzIHJvdWdobHkgdG8KKyAgICAgKiBhbiBhY2N1cmFjeSBvZiBncmVhdGVyIHRoYW4gNTAwIG1ldGVycy4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBBQ0NVUkFDWV9MT1cgPSAxOworCisgICAgLyoqCisgICAgICogQSBjb25zdGFudCBpbmRpY2F0aW5nIGEgbWVkaXVtIGFjY3VyYWN5IHJlcXVpcmVtZW50CisgICAgICogLSBjdXJyZW50bHkgdXNlZCBvbmx5IGZvciBob3Jpem9udGFsIGFjY3VyYWN5LgorICAgICAqIEZvciBob3Jpem9udGFsIHBvc2l0aW9uIHRoaXMgY29ycmVzcG9uZHMgcm91Z2hseSB0byB0byBhbiBhY2N1cmFjeQorICAgICAqIG9mIGJldHdlZW4gMTAwIGFuZCA1MDAgbWV0ZXJzLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFDQ1VSQUNZX01FRElVTSA9IDI7CisKKyAgICAvKioKKyAgICAgKiBhIGNvbnN0YW50IGluZGljYXRpbmcgYSBoaWdoIGFjY3VyYWN5IHJlcXVpcmVtZW50CisgICAgICogLSBtYXkgYmUgdXNlZCBmb3IgaG9yaXpvbnRhbCwgYWx0aXR1ZGUsIHNwZWVkIG9yIGJlYXJpbmcgYWNjdXJhY3kuCisgICAgICogRm9yIGhvcml6b250YWwgYW5kIHZlcnRpY2FsIHBvc2l0aW9uIHRoaXMgY29ycmVzcG9uZHMgcm91Z2hseSB0bworICAgICAqIGFuIGFjY3VyYWN5IG9mIGxlc3MgdGhhbiAxMDAgbWV0ZXJzLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFDQ1VSQUNZX0hJR0ggPSAzOworCisgICAgcHJpdmF0ZSBpbnQgbUhvcml6b250YWxBY2N1cmFjeSAgICA9IE5PX1JFUVVJUkVNRU5UOworICAgIHByaXZhdGUgaW50IG1WZXJ0aWNhbEFjY3VyYWN5ICAgICAgPSBOT19SRVFVSVJFTUVOVDsKKyAgICBwcml2YXRlIGludCBtU3BlZWRBY2N1cmFjeSAgICAgICAgID0gTk9fUkVRVUlSRU1FTlQ7CisgICAgcHJpdmF0ZSBpbnQgbUJlYXJpbmdBY2N1cmFjeSAgICAgICA9IE5PX1JFUVVJUkVNRU5UOwogICAgIHByaXZhdGUgaW50IG1Qb3dlclJlcXVpcmVtZW50ICAgICAgPSBOT19SRVFVSVJFTUVOVDsKLS8vICAgIHByaXZhdGUgaW50IG1QcmVmZXJyZWRSZXNwb25zZVRpbWUgPSBOT19SRVFVSVJFTUVOVDsKICAgICBwcml2YXRlIGJvb2xlYW4gbUFsdGl0dWRlUmVxdWlyZWQgID0gZmFsc2U7CiAgICAgcHJpdmF0ZSBib29sZWFuIG1CZWFyaW5nUmVxdWlyZWQgICA9IGZhbHNlOwogICAgIHByaXZhdGUgYm9vbGVhbiBtU3BlZWRSZXF1aXJlZCAgICAgPSBmYWxzZTsKQEAgLTc3LDkgKzEwMywxMSBAQAogICAgICAqIENvbnN0cnVjdHMgYSBuZXcgQ3JpdGVyaWEgb2JqZWN0IHRoYXQgaXMgYSBjb3B5IG9mIHRoZSBnaXZlbiBjcml0ZXJpYS4KICAgICAgKi8KICAgICBwdWJsaWMgQ3JpdGVyaWEoQ3JpdGVyaWEgY3JpdGVyaWEpIHsKLSAgICAgICAgbUFjY3VyYWN5ID0gY3JpdGVyaWEubUFjY3VyYWN5OworICAgICAgICBtSG9yaXpvbnRhbEFjY3VyYWN5ID0gY3JpdGVyaWEubUhvcml6b250YWxBY2N1cmFjeTsKKyAgICAgICAgbVZlcnRpY2FsQWNjdXJhY3kgPSBjcml0ZXJpYS5tVmVydGljYWxBY2N1cmFjeTsKKyAgICAgICAgbVNwZWVkQWNjdXJhY3kgPSBjcml0ZXJpYS5tU3BlZWRBY2N1cmFjeTsKKyAgICAgICAgbUJlYXJpbmdBY2N1cmFjeSA9IGNyaXRlcmlhLm1CZWFyaW5nQWNjdXJhY3k7CiAgICAgICAgIG1Qb3dlclJlcXVpcmVtZW50ID0gY3JpdGVyaWEubVBvd2VyUmVxdWlyZW1lbnQ7Ci0vLyAgICAgICAgbVByZWZlcnJlZFJlc3BvbnNlVGltZSA9IGNyaXRlcmlhLm1QcmVmZXJyZWRSZXNwb25zZVRpbWU7CiAgICAgICAgIG1BbHRpdHVkZVJlcXVpcmVkID0gY3JpdGVyaWEubUFsdGl0dWRlUmVxdWlyZWQ7CiAgICAgICAgIG1CZWFyaW5nUmVxdWlyZWQgPSBjcml0ZXJpYS5tQmVhcmluZ1JlcXVpcmVkOwogICAgICAgICBtU3BlZWRSZXF1aXJlZCA9IGNyaXRlcmlhLm1TcGVlZFJlcXVpcmVkOwpAQCAtODcsMTkgKzExNSwxMTggQEAKICAgICB9CiAKICAgICAvKioKKyAgICAgKiBJbmRpY2F0ZXMgdGhlIGRlc2lyZWQgaG9yaXpvbnRhbCBhY2N1cmFjeSAobGF0aXR1ZGUgYW5kIGxvbmdpdHVkZSkuCisgICAgICogQWNjdXJhY3kgbWF5IGJlIHtAbGluayAjQUNDVVJBQ1lfTE9XfSwge0BsaW5rICNBQ0NVUkFDWV9NRURJVU19LAorICAgICAqIHtAbGluayAjQUNDVVJBQ1lfSElHSH0gb3Ige0BsaW5rICNOT19SRVFVSVJFTUVOVH0uCisgICAgICogTW9yZSBhY2N1cmF0ZSBsb2NhdGlvbiBtYXkgY29uc3VtZSBtb3JlIHBvd2VyIGFuZCBtYXkgdGFrZSBsb25nZXIuCisgICAgICoKKyAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiBhY2N1cmFjeSBpcyBub3Qgb25lIG9mIHRoZSBzdXBwb3J0ZWQgY29uc3RhbnRzCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0SG9yaXpvbnRhbEFjY3VyYWN5KGludCBhY2N1cmFjeSkgeworICAgICAgICBpZiAoYWNjdXJhY3kgPCBOT19SRVFVSVJFTUVOVCB8fCBhY2N1cmFjeSA+IEFDQ1VSQUNZX0hJR0gpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImFjY3VyYWN5PSIgKyBhY2N1cmFjeSk7CisgICAgICAgIH0KKyAgICAgICAgbUhvcml6b250YWxBY2N1cmFjeSA9IGFjY3VyYWN5OworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgYSBjb25zdGFudCBpbmRpY2F0aW5nIHRoZSBkZXNpcmVkIGhvcml6b250YWwgYWNjdXJhY3kgKGxhdGl0dWRlIGFuZCBsb25naXR1ZGUpLgorICAgICAqIEFjY3VyYWN5IG1heSBiZSB7QGxpbmsgI0FDQ1VSQUNZX0xPV30sIHtAbGluayAjQUNDVVJBQ1lfTUVESVVNfSwKKyAgICAgKiB7QGxpbmsgI0FDQ1VSQUNZX0hJR0h9IG9yIHtAbGluayAjTk9fUkVRVUlSRU1FTlR9LgorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0SG9yaXpvbnRhbEFjY3VyYWN5KCkgeworICAgICAgICByZXR1cm4gbUhvcml6b250YWxBY2N1cmFjeTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJbmRpY2F0ZXMgdGhlIGRlc2lyZWQgdmVydGljYWwgYWNjdXJhY3kgKGFsdGl0dWRlKS4KKyAgICAgKiBBY2N1cmFjeSBtYXkgYmUge0BsaW5rICNBQ0NVUkFDWV9MT1d9LCB7QGxpbmsgI0FDQ1VSQUNZX01FRElVTX0sCisgICAgICoge0BsaW5rICNBQ0NVUkFDWV9ISUdIfSBvciB7QGxpbmsgI05PX1JFUVVJUkVNRU5UfS4KKyAgICAgKiBNb3JlIGFjY3VyYXRlIGxvY2F0aW9uIG1heSBjb25zdW1lIG1vcmUgcG93ZXIgYW5kIG1heSB0YWtlIGxvbmdlci4KKyAgICAgKgorICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIGFjY3VyYWN5IGlzIG5vdCBvbmUgb2YgdGhlIHN1cHBvcnRlZCBjb25zdGFudHMKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRWZXJ0aWNhbEFjY3VyYWN5KGludCBhY2N1cmFjeSkgeworICAgICAgICBpZiAoYWNjdXJhY3kgPCBOT19SRVFVSVJFTUVOVCB8fCBhY2N1cmFjeSA+IEFDQ1VSQUNZX0hJR0gpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImFjY3VyYWN5PSIgKyBhY2N1cmFjeSk7CisgICAgICAgIH0KKyAgICAgICAgbVZlcnRpY2FsQWNjdXJhY3kgPSBhY2N1cmFjeTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGEgY29uc3RhbnQgaW5kaWNhdGluZyB0aGUgZGVzaXJlZCB2ZXJ0aWNhbCBhY2N1cmFjeSAoYWx0aXR1ZGUpLgorICAgICAqIEFjY3VyYWN5IG1heSBiZSB7QGxpbmsgI0FDQ1VSQUNZX0xPV30sIHtAbGluayAjQUNDVVJBQ1lfSElHSH0sCisgICAgICogb3Ige0BsaW5rICNOT19SRVFVSVJFTUVOVH0uCisgICAgICovCisgICAgcHVibGljIGludCBnZXRWZXJ0aWNhbEFjY3VyYWN5KCkgeworICAgICAgICByZXR1cm4gbVZlcnRpY2FsQWNjdXJhY3k7CisgICAgfQorCisgICAgLyoqCisgICAgICogSW5kaWNhdGVzIHRoZSBkZXNpcmVkIHNwZWVkIGFjY3VyYWN5LgorICAgICAqIEFjY3VyYWN5IG1heSBiZSB7QGxpbmsgI0FDQ1VSQUNZX0xPV30sIHtAbGluayAjQUNDVVJBQ1lfSElHSH0sCisgICAgICogb3Ige0BsaW5rICNOT19SRVFVSVJFTUVOVH0uCisgICAgICogTW9yZSBhY2N1cmF0ZSBsb2NhdGlvbiBtYXkgY29uc3VtZSBtb3JlIHBvd2VyIGFuZCBtYXkgdGFrZSBsb25nZXIuCisgICAgICoKKyAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiBhY2N1cmFjeSBpcyBub3Qgb25lIG9mIHRoZSBzdXBwb3J0ZWQgY29uc3RhbnRzCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0U3BlZWRBY2N1cmFjeShpbnQgYWNjdXJhY3kpIHsKKyAgICAgICAgaWYgKGFjY3VyYWN5IDwgTk9fUkVRVUlSRU1FTlQgfHwgYWNjdXJhY3kgPiBBQ0NVUkFDWV9ISUdIKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJhY2N1cmFjeT0iICsgYWNjdXJhY3kpOworICAgICAgICB9CisgICAgICAgIG1TcGVlZEFjY3VyYWN5ID0gYWNjdXJhY3k7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIGNvbnN0YW50IGluZGljYXRpbmcgdGhlIGRlc2lyZWQgc3BlZWQgYWNjdXJhY3kKKyAgICAgKiBBY2N1cmFjeSBtYXkgYmUge0BsaW5rICNBQ0NVUkFDWV9MT1d9LCB7QGxpbmsgI0FDQ1VSQUNZX0hJR0h9LAorICAgICAqIG9yIHtAbGluayAjTk9fUkVRVUlSRU1FTlR9LgorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0U3BlZWRBY2N1cmFjeSgpIHsKKyAgICAgICAgcmV0dXJuIG1TcGVlZEFjY3VyYWN5OworICAgIH0KKworICAgIC8qKgorICAgICAqIEluZGljYXRlcyB0aGUgZGVzaXJlZCBiZWFyaW5nIGFjY3VyYWN5LgorICAgICAqIEFjY3VyYWN5IG1heSBiZSB7QGxpbmsgI0FDQ1VSQUNZX0xPV30sIHtAbGluayAjQUNDVVJBQ1lfSElHSH0sCisgICAgICogb3Ige0BsaW5rICNOT19SRVFVSVJFTUVOVH0uCisgICAgICogTW9yZSBhY2N1cmF0ZSBsb2NhdGlvbiBtYXkgY29uc3VtZSBtb3JlIHBvd2VyIGFuZCBtYXkgdGFrZSBsb25nZXIuCisgICAgICoKKyAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiBhY2N1cmFjeSBpcyBub3Qgb25lIG9mIHRoZSBzdXBwb3J0ZWQgY29uc3RhbnRzCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0QmVhcmluZ0FjY3VyYWN5KGludCBhY2N1cmFjeSkgeworICAgICAgICBpZiAoYWNjdXJhY3kgPCBOT19SRVFVSVJFTUVOVCB8fCBhY2N1cmFjeSA+IEFDQ1VSQUNZX0hJR0gpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImFjY3VyYWN5PSIgKyBhY2N1cmFjeSk7CisgICAgICAgIH0KKyAgICAgICAgbUJlYXJpbmdBY2N1cmFjeSA9IGFjY3VyYWN5OworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgYSBjb25zdGFudCBpbmRpY2F0aW5nIHRoZSBkZXNpcmVkIGJlYXJpbmcgYWNjdXJhY3kuCisgICAgICogQWNjdXJhY3kgbWF5IGJlIHtAbGluayAjQUNDVVJBQ1lfTE9XfSwge0BsaW5rICNBQ0NVUkFDWV9ISUdIfSwKKyAgICAgKiBvciB7QGxpbmsgI05PX1JFUVVJUkVNRU5UfS4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldEJlYXJpbmdBY2N1cmFjeSgpIHsKKyAgICAgICAgcmV0dXJuIG1CZWFyaW5nQWNjdXJhY3k7CisgICAgfQorCisgICAgLyoqCiAgICAgICogSW5kaWNhdGVzIHRoZSBkZXNpcmVkIGFjY3VyYWN5IGZvciBsYXRpdHVkZSBhbmQgbG9uZ2l0dWRlLiBBY2N1cmFjeQogICAgICAqIG1heSBiZSB7QGxpbmsgI0FDQ1VSQUNZX0ZJTkV9IGlmIGRlc2lyZWQgbG9jYXRpb24KICAgICAgKiBpcyBmaW5lLCBlbHNlIGl0IGNhbiBiZSB7QGxpbmsgI0FDQ1VSQUNZX0NPQVJTRX0uCi0gICAgICogTW9yZSBhY2N1cmF0ZSBsb2NhdGlvbiB1c3VhbGx5IGNvbnN1bWVzIG1vcmUgcG93ZXIgYW5kIG1heSB0YWtlCi0gICAgICogbG9uZ2VyLgorICAgICAqIE1vcmUgYWNjdXJhdGUgbG9jYXRpb24gbWF5IGNvbnN1bWUgbW9yZSBwb3dlciBhbmQgbWF5IHRha2UgbG9uZ2VyLgogICAgICAqCi0gICAgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgYWNjdXJhY3kgaXMgbmVnYXRpdmUKKyAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiBhY2N1cmFjeSBpcyBub3Qgb25lIG9mIHRoZSBzdXBwb3J0ZWQgY29uc3RhbnRzCiAgICAgICovCiAgICAgcHVibGljIHZvaWQgc2V0QWNjdXJhY3koaW50IGFjY3VyYWN5KSB7Ci0gICAgICAgIGlmIChhY2N1cmFjeSA8IE5PX1JFUVVJUkVNRU5UICYmIGFjY3VyYWN5ID4gQUNDVVJBQ1lfQ09BUlNFKSB7CisgICAgICAgIGlmIChhY2N1cmFjeSA8IE5PX1JFUVVJUkVNRU5UIHx8IGFjY3VyYWN5ID4gQUNDVVJBQ1lfQ09BUlNFKSB7CiAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJhY2N1cmFjeT0iICsgYWNjdXJhY3kpOwogICAgICAgICB9Ci0gICAgICAgIG1BY2N1cmFjeSA9IGFjY3VyYWN5OworICAgICAgICBpZiAoYWNjdXJhY3kgPT0gQUNDVVJBQ1lfRklORSkgeworICAgICAgICAgICAgbUhvcml6b250YWxBY2N1cmFjeSA9IEFDQ1VSQUNZX0hJR0g7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtSG9yaXpvbnRhbEFjY3VyYWN5ID0gQUNDVVJBQ1lfTE9XOworICAgICAgICB9CiAgICAgfQogCiAgICAgLyoqCkBAIC0xMDgsNyArMjM1LDExIEBACiAgICAgICogaXMgZmluZSwgZWxzZSBpdCBjYW4gYmUge0BsaW5rICNBQ0NVUkFDWV9DT0FSU0V9LgogICAgICAqLwogICAgIHB1YmxpYyBpbnQgZ2V0QWNjdXJhY3koKSB7Ci0gICAgICAgIHJldHVybiBtQWNjdXJhY3k7CisgICAgICAgIGlmIChtSG9yaXpvbnRhbEFjY3VyYWN5ID49IEFDQ1VSQUNZX0hJR0gpIHsKKyAgICAgICAgICAgIHJldHVybiBBQ0NVUkFDWV9GSU5FOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIEFDQ1VSQUNZX0NPQVJTRTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIC8qKgpAQCAtMTMxLDIwICsyNjIsNiBAQAogICAgICAgICByZXR1cm4gbVBvd2VyUmVxdWlyZW1lbnQ7CiAgICAgfQogCi0vLyAgICAvKioKLS8vICAgICAqIEluZGljYXRlcyB0aGUgcHJlZmVycmVkIHJlc3BvbnNlIHRpbWUgb2YgdGhlIHByb3ZpZGVyLCBpbiBtaWxsaXNlY29uZHMuCi0vLyAgICAgKi8KLS8vICAgIHB1YmxpYyB2b2lkIHNldFByZWZlcnJlZFJlc3BvbnNlVGltZShpbnQgdGltZSkgewotLy8gICAgICAgIG1QcmVmZXJyZWRSZXNwb25zZVRpbWUgPSB0aW1lOwotLy8gICAgfQotLy8KLS8vICAgIC8qKgotLy8gICAgICogUmV0dXJucyB0aGUgcHJlZmVycmVkIHJlc3BvbnNlIHRpbWUgb2YgdGhlIHByb3ZpZGVyLCBpbiBtaWxsaXNlY29uZHMuCi0vLyAgICAgKi8KLS8vICAgIHB1YmxpYyBpbnQgZ2V0UHJlZmVycmVkUmVzcG9uc2VUaW1lKCkgewotLy8gICAgICAgIHJldHVybiBtUHJlZmVycmVkUmVzcG9uc2VUaW1lOwotLy8gICAgfQotCiAgICAgLyoqCiAgICAgICogSW5kaWNhdGVzIHdoZXRoZXIgdGhlIHByb3ZpZGVyIGlzIGFsbG93ZWQgdG8gaW5jdXIgbW9uZXRhcnkgY29zdC4KICAgICAgKi8KQEAgLTIxMSw5ICszMjgsMTEgQEAKICAgICAgICAgbmV3IFBhcmNlbGFibGUuQ3JlYXRvcjxDcml0ZXJpYT4oKSB7CiAgICAgICAgIHB1YmxpYyBDcml0ZXJpYSBjcmVhdGVGcm9tUGFyY2VsKFBhcmNlbCBpbikgewogICAgICAgICAgICAgQ3JpdGVyaWEgYyA9IG5ldyBDcml0ZXJpYSgpOwotICAgICAgICAgICAgYy5tQWNjdXJhY3kgPSBpbi5yZWFkSW50KCk7CisgICAgICAgICAgICBjLm1Ib3Jpem9udGFsQWNjdXJhY3kgPSBpbi5yZWFkSW50KCk7CisgICAgICAgICAgICBjLm1WZXJ0aWNhbEFjY3VyYWN5ID0gaW4ucmVhZEludCgpOworICAgICAgICAgICAgYy5tU3BlZWRBY2N1cmFjeSA9IGluLnJlYWRJbnQoKTsKKyAgICAgICAgICAgIGMubUJlYXJpbmdBY2N1cmFjeSA9IGluLnJlYWRJbnQoKTsKICAgICAgICAgICAgIGMubVBvd2VyUmVxdWlyZW1lbnQgPSBpbi5yZWFkSW50KCk7Ci0vLyAgICAgICAgICAgIGMubVByZWZlcnJlZFJlc3BvbnNlVGltZSA9IGluLnJlYWRJbnQoKTsKICAgICAgICAgICAgIGMubUFsdGl0dWRlUmVxdWlyZWQgPSBpbi5yZWFkSW50KCkgIT0gMDsKICAgICAgICAgICAgIGMubUJlYXJpbmdSZXF1aXJlZCA9IGluLnJlYWRJbnQoKSAhPSAwOwogICAgICAgICAgICAgYy5tU3BlZWRSZXF1aXJlZCA9IGluLnJlYWRJbnQoKSAhPSAwOwpAQCAtMjMxLDkgKzM1MCwxMSBAQAogICAgIH0KIAogICAgIHB1YmxpYyB2b2lkIHdyaXRlVG9QYXJjZWwoUGFyY2VsIHBhcmNlbCwgaW50IGZsYWdzKSB7Ci0gICAgICAgIHBhcmNlbC53cml0ZUludChtQWNjdXJhY3kpOworICAgICAgICBwYXJjZWwud3JpdGVJbnQobUhvcml6b250YWxBY2N1cmFjeSk7CisgICAgICAgIHBhcmNlbC53cml0ZUludChtVmVydGljYWxBY2N1cmFjeSk7CisgICAgICAgIHBhcmNlbC53cml0ZUludChtU3BlZWRBY2N1cmFjeSk7CisgICAgICAgIHBhcmNlbC53cml0ZUludChtQmVhcmluZ0FjY3VyYWN5KTsKICAgICAgICAgcGFyY2VsLndyaXRlSW50KG1Qb3dlclJlcXVpcmVtZW50KTsKLS8vICAgICAgICBwYXJjZWwud3JpdGVJbnQobVByZWZlcnJlZFJlc3BvbnNlVGltZSk7CiAgICAgICAgIHBhcmNlbC53cml0ZUludChtQWx0aXR1ZGVSZXF1aXJlZCA/IDEgOiAwKTsKICAgICAgICAgcGFyY2VsLndyaXRlSW50KG1CZWFyaW5nUmVxdWlyZWQgPyAxIDogMCk7CiAgICAgICAgIHBhcmNlbC53cml0ZUludChtU3BlZWRSZXF1aXJlZCA/IDEgOiAwKTsKZGlmZiAtLWdpdCBhL2xvY2F0aW9uL2phdmEvYW5kcm9pZC9sb2NhdGlvbi9HZW9jb2Rlci5qYXZhIGIvbG9jYXRpb24vamF2YS9hbmRyb2lkL2xvY2F0aW9uL0dlb2NvZGVyLmphdmEKaW5kZXggYzMyNWIxYi4uNTQ2YmI5ZCAxMDA2NDQKLS0tIGEvbG9jYXRpb24vamF2YS9hbmRyb2lkL2xvY2F0aW9uL0dlb2NvZGVyLmphdmEKKysrIGIvbG9jYXRpb24vamF2YS9hbmRyb2lkL2xvY2F0aW9uL0dlb2NvZGVyLmphdmEKQEAgLTQwLDcgKzQwLDkgQEAKICAqCiAgKiBUaGUgR2VvY29kZXIgY2xhc3MgcmVxdWlyZXMgYSBiYWNrZW5kIHNlcnZpY2UgdGhhdCBpcyBub3QgaW5jbHVkZWQgaW4KICAqIHRoZSBjb3JlIGFuZHJvaWQgZnJhbWV3b3JrLiAgVGhlIEdlb2NvZGVyIHF1ZXJ5IG1ldGhvZHMgd2lsbCByZXR1cm4gYW4KLSAqIGVtcHR5IGxpc3QgaWYgdGhlcmUgbm8gYmFja2VuZCBzZXJ2aWNlIGluIHRoZSBwbGF0Zm9ybS4KKyAqIGVtcHR5IGxpc3QgaWYgdGhlcmUgbm8gYmFja2VuZCBzZXJ2aWNlIGluIHRoZSBwbGF0Zm9ybS4gIFVzZSB0aGUKKyAqIGlzSW1wbGVtZW50ZWQoKSBtZXRob2QgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBHZW9jb2RlciBpbXBsZW1lbnRhdGlvbgorICogZXhpc3RzLgogICovCiBwdWJsaWMgZmluYWwgY2xhc3MgR2VvY29kZXIgewogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSAiR2VvY29kZXIiOwpAQCAtNDksNiArNTEsMjMgQEAKICAgICBwcml2YXRlIElMb2NhdGlvbk1hbmFnZXIgbVNlcnZpY2U7CiAKICAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIEdlb2NvZGVyIG1ldGhvZHMgZ2V0RnJvbUxvY2F0aW9uIGFuZAorICAgICAqIGdldEZyb21Mb2NhdGlvbk5hbWUgYXJlIGltcGxlbWVudGVkLiAgTGFjayBvZiBuZXR3b3JrCisgICAgICogY29ubmVjdGl2aXR5IG1heSBzdGlsbCBjYXVzZSB0aGVzZSBtZXRob2RzIHRvIHJldHVybiBudWxsIG9yCisgICAgICogZW1wdHkgbGlzdHMuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBCb29sZWFuIGlzSW1wbGVtZW50ZWQoKSB7CisgICAgICAgIElCaW5kZXIgYiA9IFNlcnZpY2VNYW5hZ2VyLmdldFNlcnZpY2UoQ29udGV4dC5MT0NBVElPTl9TRVJWSUNFKTsKKyAgICAgICAgSUxvY2F0aW9uTWFuYWdlciBsbSA9IElMb2NhdGlvbk1hbmFnZXIuU3R1Yi5hc0ludGVyZmFjZShiKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJldHVybiBsbS5nZW9jb2RlcklzSW1wbGVtZW50ZWQoKTsKKyAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIExvZy5lKFRBRywgImlzSW1wbGVtZW50ZWQ6IGdvdCBSZW1vdGVFeGNlcHRpb24iLCBlKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgogICAgICAqIENvbnN0cnVjdHMgYSBHZW9jb2RlciB3aG9zZSByZXNwb25zZXMgd2lsbCBiZSBsb2NhbGl6ZWQgZm9yIHRoZQogICAgICAqIGdpdmVuIExvY2FsZS4KICAgICAgKgpkaWZmIC0tZ2l0IGEvbG9jYXRpb24vamF2YS9hbmRyb2lkL2xvY2F0aW9uL0dlb2NvZGVyUGFyYW1zLmphdmEgYi9sb2NhdGlvbi9qYXZhL2FuZHJvaWQvbG9jYXRpb24vR2VvY29kZXJQYXJhbXMuamF2YQppbmRleCAxNzRmZTNlLi44YjhlNjNiIDEwMDY0NAotLS0gYS9sb2NhdGlvbi9qYXZhL2FuZHJvaWQvbG9jYXRpb24vR2VvY29kZXJQYXJhbXMuamF2YQorKysgYi9sb2NhdGlvbi9qYXZhL2FuZHJvaWQvbG9jYXRpb24vR2VvY29kZXJQYXJhbXMuamF2YQpAQCAtMjksOCArMjksNiBAQAogICogYXMgd2VsbCBhcyB0aGUgR2VvY29kZXIgY2xpZW50J3MgcGFja2FnZSBuYW1lIGZvciBnZW9jb2RlciBzZXJ2ZXIKICAqIGxvZ2dpbmcuICBUaGlzIGluZm9ybWF0aW9uIGlzIGtlcHQgaW4gYSBzZXBhcmF0ZSBjbGFzcyB0byBhbGxvdyBmb3IKICAqIGZ1dHVyZSBleHBhbnNpb24gb2YgdGhlIElHZW9jb2RlUHJvdmlkZXIgaW50ZXJmYWNlLgotICoKLSAqIEBoaWRlCiAgKi8KIHB1YmxpYyBjbGFzcyBHZW9jb2RlclBhcmFtcyBpbXBsZW1lbnRzIFBhcmNlbGFibGUgewogICAgIHByaXZhdGUgTG9jYWxlIG1Mb2NhbGU7CmRpZmYgLS1naXQgYS9sb2NhdGlvbi9qYXZhL2FuZHJvaWQvbG9jYXRpb24vR3BzU3RhdHVzLmphdmEgYi9sb2NhdGlvbi9qYXZhL2FuZHJvaWQvbG9jYXRpb24vR3BzU3RhdHVzLmphdmEKaW5kZXggY2U2OWFjMS4uNGFmNTVhNiAxMDA2NDQKLS0tIGEvbG9jYXRpb24vamF2YS9hbmRyb2lkL2xvY2F0aW9uL0dwc1N0YXR1cy5qYXZhCisrKyBiL2xvY2F0aW9uL2phdmEvYW5kcm9pZC9sb2NhdGlvbi9HcHNTdGF0dXMuamF2YQpAQCAtMTUwLDE1ICsxNTAsMTcgQEAKICAgICAgICAgZm9yIChpID0gMDsgaSA8IHN2Q291bnQ7IGkrKykgewogICAgICAgICAgICAgaW50IHBybiA9IHBybnNbaV0gLSAxOwogICAgICAgICAgICAgaW50IHByblNoaWZ0ID0gKDEgPDwgcHJuKTsKLSAgICAgICAgICAgIEdwc1NhdGVsbGl0ZSBzYXRlbGxpdGUgPSBtU2F0ZWxsaXRlc1twcm5dOwotCi0gICAgICAgICAgICBzYXRlbGxpdGUubVZhbGlkID0gdHJ1ZTsKLSAgICAgICAgICAgIHNhdGVsbGl0ZS5tU25yID0gc25yc1tpXTsKLSAgICAgICAgICAgIHNhdGVsbGl0ZS5tRWxldmF0aW9uID0gZWxldmF0aW9uc1tpXTsKLSAgICAgICAgICAgIHNhdGVsbGl0ZS5tQXppbXV0aCA9IGF6aW11dGhzW2ldOwotICAgICAgICAgICAgc2F0ZWxsaXRlLm1IYXNFcGhlbWVyaXMgPSAoKGVwaGVtZXJpc01hc2sgJiBwcm5TaGlmdCkgIT0gMCk7Ci0gICAgICAgICAgICBzYXRlbGxpdGUubUhhc0FsbWFuYWMgPSAoKGFsbWFuYWNNYXNrICYgcHJuU2hpZnQpICE9IDApOwotICAgICAgICAgICAgc2F0ZWxsaXRlLm1Vc2VkSW5GaXggPSAoKHVzZWRJbkZpeE1hc2sgJiBwcm5TaGlmdCkgIT0gMCk7CisgICAgICAgICAgICBpZiAocHJuID49IDAgJiYgcHJuIDwgbVNhdGVsbGl0ZXMubGVuZ3RoKSB7CisgICAgICAgICAgICAgICAgR3BzU2F0ZWxsaXRlIHNhdGVsbGl0ZSA9IG1TYXRlbGxpdGVzW3Bybl07CisgICAgCisgICAgICAgICAgICAgICAgc2F0ZWxsaXRlLm1WYWxpZCA9IHRydWU7CisgICAgICAgICAgICAgICAgc2F0ZWxsaXRlLm1TbnIgPSBzbnJzW2ldOworICAgICAgICAgICAgICAgIHNhdGVsbGl0ZS5tRWxldmF0aW9uID0gZWxldmF0aW9uc1tpXTsKKyAgICAgICAgICAgICAgICBzYXRlbGxpdGUubUF6aW11dGggPSBhemltdXRoc1tpXTsKKyAgICAgICAgICAgICAgICBzYXRlbGxpdGUubUhhc0VwaGVtZXJpcyA9ICgoZXBoZW1lcmlzTWFzayAmIHByblNoaWZ0KSAhPSAwKTsKKyAgICAgICAgICAgICAgICBzYXRlbGxpdGUubUhhc0FsbWFuYWMgPSAoKGFsbWFuYWNNYXNrICYgcHJuU2hpZnQpICE9IDApOworICAgICAgICAgICAgICAgIHNhdGVsbGl0ZS5tVXNlZEluRml4ID0gKCh1c2VkSW5GaXhNYXNrICYgcHJuU2hpZnQpICE9IDApOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCmRpZmYgLS1naXQgYS9sb2NhdGlvbi9qYXZhL2FuZHJvaWQvbG9jYXRpb24vSUxvY2F0aW9uTWFuYWdlci5haWRsIGIvbG9jYXRpb24vamF2YS9hbmRyb2lkL2xvY2F0aW9uL0lMb2NhdGlvbk1hbmFnZXIuYWlkbAppbmRleCAyYzAzOTllLi4zMmQ0YjI3IDEwMDY0NAotLS0gYS9sb2NhdGlvbi9qYXZhL2FuZHJvaWQvbG9jYXRpb24vSUxvY2F0aW9uTWFuYWdlci5haWRsCisrKyBiL2xvY2F0aW9uL2phdmEvYW5kcm9pZC9sb2NhdGlvbi9JTG9jYXRpb25NYW5hZ2VyLmFpZGwKQEAgLTE4LDYgKzE4LDcgQEAKIAogaW1wb3J0IGFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQ7CiBpbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5BZGRyZXNzOworaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uQ3JpdGVyaWE7CiBpbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5HZW9jb2RlclBhcmFtczsKIGltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLklHZW9jb2RlUHJvdmlkZXI7CiBpbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5JR3BzU3RhdHVzTGlzdGVuZXI7CkBAIC0zMiwxMyArMzMsMTUgQEAKICAqLwogaW50ZXJmYWNlIElMb2NhdGlvbk1hbmFnZXIKIHsKLSAgICBMaXN0IGdldEFsbFByb3ZpZGVycygpOwotICAgIExpc3QgZ2V0UHJvdmlkZXJzKGJvb2xlYW4gZW5hYmxlZE9ubHkpOworICAgIExpc3Q8U3RyaW5nPiBnZXRBbGxQcm92aWRlcnMoKTsKKyAgICBMaXN0PFN0cmluZz4gZ2V0UHJvdmlkZXJzKGluIENyaXRlcmlhIGNyaXRlcmlhLCBib29sZWFuIGVuYWJsZWRPbmx5KTsKKyAgICBTdHJpbmcgZ2V0QmVzdFByb3ZpZGVyKGluIENyaXRlcmlhIGNyaXRlcmlhLCBib29sZWFuIGVuYWJsZWRPbmx5KTsKKyAgICBib29sZWFuIHByb3ZpZGVyTWVldHNDcml0ZXJpYShTdHJpbmcgcHJvdmlkZXIsIGluIENyaXRlcmlhIGNyaXRlcmlhKTsKIAotICAgIHZvaWQgcmVxdWVzdExvY2F0aW9uVXBkYXRlcyhTdHJpbmcgcHJvdmlkZXIsIGxvbmcgbWluVGltZSwgZmxvYXQgbWluRGlzdGFuY2UsCi0gICAgICAgIGluIElMb2NhdGlvbkxpc3RlbmVyIGxpc3RlbmVyKTsKLSAgICB2b2lkIHJlcXVlc3RMb2NhdGlvblVwZGF0ZXNQSShTdHJpbmcgcHJvdmlkZXIsIGxvbmcgbWluVGltZSwgZmxvYXQgbWluRGlzdGFuY2UsCi0gICAgICAgIGluIFBlbmRpbmdJbnRlbnQgaW50ZW50KTsKKyAgICB2b2lkIHJlcXVlc3RMb2NhdGlvblVwZGF0ZXMoU3RyaW5nIHByb3ZpZGVyLCBpbiBDcml0ZXJpYSBjcml0ZXJpYSwgbG9uZyBtaW5UaW1lLCBmbG9hdCBtaW5EaXN0YW5jZSwKKyAgICAgICAgYm9vbGVhbiBzaW5nbGVTaG90LCBpbiBJTG9jYXRpb25MaXN0ZW5lciBsaXN0ZW5lcik7CisgICAgdm9pZCByZXF1ZXN0TG9jYXRpb25VcGRhdGVzUEkoU3RyaW5nIHByb3ZpZGVyLCBpbiBDcml0ZXJpYSBjcml0ZXJpYSwgbG9uZyBtaW5UaW1lLCBmbG9hdCBtaW5EaXN0YW5jZSwKKyAgICAgICAgYm9vbGVhbiBzaW5nbGVTaG90LCBpbiBQZW5kaW5nSW50ZW50IGludGVudCk7CiAgICAgdm9pZCByZW1vdmVVcGRhdGVzKGluIElMb2NhdGlvbkxpc3RlbmVyIGxpc3RlbmVyKTsKICAgICB2b2lkIHJlbW92ZVVwZGF0ZXNQSShpbiBQZW5kaW5nSW50ZW50IGludGVudCk7CiAKQEAgLTY0LDYgKzY3LDcgQEAKICAgICAvLyBpdCBuZWVkIG5vdCBiZSBzaGFyZWQgd2l0aCBvdGhlciBwcm92aWRlcnMuCiAgICAgdm9pZCByZXBvcnRMb2NhdGlvbihpbiBMb2NhdGlvbiBsb2NhdGlvbiwgYm9vbGVhbiBwYXNzaXZlKTsKIAorICAgIGJvb2xlYW4gZ2VvY29kZXJJc0ltcGxlbWVudGVkKCk7CiAgICAgU3RyaW5nIGdldEZyb21Mb2NhdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGludCBtYXhSZXN1bHRzLAogICAgICAgICBpbiBHZW9jb2RlclBhcmFtcyBwYXJhbXMsIG91dCBMaXN0PEFkZHJlc3M+IGFkZHJzKTsKICAgICBTdHJpbmcgZ2V0RnJvbUxvY2F0aW9uTmFtZShTdHJpbmcgbG9jYXRpb25OYW1lLApkaWZmIC0tZ2l0IGEvbG9jYXRpb24vamF2YS9hbmRyb2lkL2xvY2F0aW9uL0lMb2NhdGlvblByb3ZpZGVyLmFpZGwgYi9sb2NhdGlvbi9qYXZhL2FuZHJvaWQvbG9jYXRpb24vSUxvY2F0aW9uUHJvdmlkZXIuYWlkbAppbmRleCA5N2IyODNjLi4yYjk3ODJhIDEwMDY0NAotLS0gYS9sb2NhdGlvbi9qYXZhL2FuZHJvaWQvbG9jYXRpb24vSUxvY2F0aW9uUHJvdmlkZXIuYWlkbAorKysgYi9sb2NhdGlvbi9qYXZhL2FuZHJvaWQvbG9jYXRpb24vSUxvY2F0aW9uUHJvdmlkZXIuYWlkbApAQCAtMTYsNiArMTYsNyBAQAogCiBwYWNrYWdlIGFuZHJvaWQubG9jYXRpb247CiAKK2ltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLkNyaXRlcmlhOwogaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uTG9jYXRpb247CiBpbXBvcnQgYW5kcm9pZC5uZXQuTmV0d29ya0luZm87CiBpbXBvcnQgYW5kcm9pZC5vcy5CdW5kbGU7CkBAIC0zNCw2ICszNSw3IEBACiAgICAgYm9vbGVhbiBzdXBwb3J0c1NwZWVkKCk7CiAgICAgYm9vbGVhbiBzdXBwb3J0c0JlYXJpbmcoKTsKICAgICBpbnQgZ2V0UG93ZXJSZXF1aXJlbWVudCgpOworICAgIGJvb2xlYW4gbWVldHNDcml0ZXJpYShpbiBDcml0ZXJpYSBjcml0ZXJpYSk7CiAgICAgaW50IGdldEFjY3VyYWN5KCk7CiAgICAgdm9pZCBlbmFibGUoKTsKICAgICB2b2lkIGRpc2FibGUoKTsKZGlmZiAtLWdpdCBhL2xvY2F0aW9uL2phdmEvYW5kcm9pZC9sb2NhdGlvbi9Mb2NhdGlvbk1hbmFnZXIuamF2YSBiL2xvY2F0aW9uL2phdmEvYW5kcm9pZC9sb2NhdGlvbi9Mb2NhdGlvbk1hbmFnZXIuamF2YQppbmRleCA5ZTRhMTZiLi43ZDA3ZTRiIDEwMDY0NAotLS0gYS9sb2NhdGlvbi9qYXZhL2FuZHJvaWQvbG9jYXRpb24vTG9jYXRpb25NYW5hZ2VyLmphdmEKKysrIGIvbG9jYXRpb24vamF2YS9hbmRyb2lkL2xvY2F0aW9uL0xvY2F0aW9uTWFuYWdlci5qYXZhCkBAIC0yOCw4ICsyOCw2IEBACiBpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwubG9jYXRpb24uRHVtbXlMb2NhdGlvblByb3ZpZGVyOwogCiBpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKLWltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7Ci1pbXBvcnQgamF2YS51dGlsLkNvbXBhcmF0b3I7CiBpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CiBpbXBvcnQgamF2YS51dGlsLkxpc3Q7CiAKQEAgLTExNyw2ICsxMTUsMzcgQEAKICAgICAgKi8KICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBLRVlfTE9DQVRJT05fQ0hBTkdFRCA9ICJsb2NhdGlvbiI7CiAKKyAgICAvKioKKyAgICAgKiBCcm9hZGNhc3QgaW50ZW50IGFjdGlvbiBpbmRpY2F0aW5nIHRoYXQgdGhlIEdQUyBoYXMgZWl0aGVyIGJlZW4KKyAgICAgKiBlbmFibGVkIG9yIGRpc2FibGVkLiBBbiBpbnRlbnQgZXh0cmEgcHJvdmlkZXMgdGhpcyBzdGF0ZSBhcyBhIGJvb2xlYW4sCisgICAgICogd2hlcmUge0Bjb2RlIHRydWV9IG1lYW5zIGVuYWJsZWQuCisgICAgICogQHNlZSAjRVhUUkFfR1BTX0VOQUJMRUQKKyAgICAgKgorICAgICAqIHtAaGlkZX0KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBHUFNfRU5BQkxFRF9DSEFOR0VfQUNUSU9OID0KKyAgICAgICAgImFuZHJvaWQubG9jYXRpb24uR1BTX0VOQUJMRURfQ0hBTkdFIjsKKworICAgIC8qKgorICAgICAqIEJyb2FkY2FzdCBpbnRlbnQgYWN0aW9uIGluZGljYXRpbmcgdGhhdCB0aGUgR1BTIGhhcyBlaXRoZXIgc3RhcnRlZCBvcgorICAgICAqIHN0b3BwZWQgcmVjZWl2aW5nIEdQUyBmaXhlcy4gQW4gaW50ZW50IGV4dHJhIHByb3ZpZGVzIHRoaXMgc3RhdGUgYXMgYQorICAgICAqIGJvb2xlYW4sIHdoZXJlIHtAY29kZSB0cnVlfSBtZWFucyB0aGF0IHRoZSBHUFMgaXMgYWN0aXZlbHkgcmVjZWl2aW5nIGZpeGVzLgorICAgICAqIEBzZWUgI0VYVFJBX0dQU19FTkFCTEVECisgICAgICoKKyAgICAgKiB7QGhpZGV9CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgR1BTX0ZJWF9DSEFOR0VfQUNUSU9OID0KKyAgICAgICAgImFuZHJvaWQubG9jYXRpb24uR1BTX0ZJWF9DSEFOR0UiOworCisgICAgLyoqCisgICAgICogVGhlIGxvb2t1cCBrZXkgZm9yIGEgYm9vbGVhbiB0aGF0IGluZGljYXRlcyB3aGV0aGVyIEdQUyBpcyBlbmFibGVkIG9yCisgICAgICogZGlzYWJsZWQuIHtAY29kZSB0cnVlfSBtZWFucyBHUFMgaXMgZW5hYmxlZC4gUmV0cmlldmUgaXQgd2l0aAorICAgICAqIHtAbGluayBhbmRyb2lkLmNvbnRlbnQuSW50ZW50I2dldEJvb2xlYW5FeHRyYShTdHJpbmcsYm9vbGVhbil9LgorICAgICAqCisgICAgICoge0BoaWRlfQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVYVFJBX0dQU19FTkFCTEVEID0gImVuYWJsZWQiOworCiAgICAgLy8gTWFwIGZyb20gTG9jYXRpb25MaXN0ZW5lcnMgdG8gdGhlaXIgYXNzb2NpYXRlZCBMaXN0ZW5lclRyYW5zcG9ydCBvYmplY3RzCiAgICAgcHJpdmF0ZSBIYXNoTWFwPExvY2F0aW9uTGlzdGVuZXIsTGlzdGVuZXJUcmFuc3BvcnQ+IG1MaXN0ZW5lcnMgPQogICAgICAgICBuZXcgSGFzaE1hcDxMb2NhdGlvbkxpc3RlbmVyLExpc3RlbmVyVHJhbnNwb3J0PigpOwpAQCAtMjE4LDE1ICsyNDcsMTIgQEAKICAgICAgKiBmYWN0b3J5IENvbnRleHQuZ2V0U3lzdGVtU2VydmljZS4KICAgICAgKi8KICAgICBwdWJsaWMgTG9jYXRpb25NYW5hZ2VyKElMb2NhdGlvbk1hbmFnZXIgc2VydmljZSkgewotICAgICAgICBpZiAoZmFsc2UpIHsKLSAgICAgICAgICAgIExvZy5kKFRBRywgIkNvbnN0cnVjdG9yOiBzZXJ2aWNlID0gIiArIHNlcnZpY2UpOwotICAgICAgICB9CiAgICAgICAgIG1TZXJ2aWNlID0gc2VydmljZTsKICAgICB9CiAKICAgICBwcml2YXRlIExvY2F0aW9uUHJvdmlkZXIgY3JlYXRlUHJvdmlkZXIoU3RyaW5nIG5hbWUsIEJ1bmRsZSBpbmZvKSB7CiAgICAgICAgIER1bW15TG9jYXRpb25Qcm92aWRlciBwcm92aWRlciA9Ci0gICAgICAgICAgICBuZXcgRHVtbXlMb2NhdGlvblByb3ZpZGVyKG5hbWUpOworICAgICAgICAgICAgbmV3IER1bW15TG9jYXRpb25Qcm92aWRlcihuYW1lLCBtU2VydmljZSk7CiAgICAgICAgIHByb3ZpZGVyLnNldFJlcXVpcmVzTmV0d29yayhpbmZvLmdldEJvb2xlYW4oIm5ldHdvcmsiKSk7CiAgICAgICAgIHByb3ZpZGVyLnNldFJlcXVpcmVzU2F0ZWxsaXRlKGluZm8uZ2V0Qm9vbGVhbigic2F0ZWxsaXRlIikpOwogICAgICAgICBwcm92aWRlci5zZXRSZXF1aXJlc0NlbGwoaW5mby5nZXRCb29sZWFuKCJjZWxsIikpOwpAQCAtMjY4LDcgKzI5NCw3IEBACiAgICAgICovCiAgICAgcHVibGljIExpc3Q8U3RyaW5nPiBnZXRQcm92aWRlcnMoYm9vbGVhbiBlbmFibGVkT25seSkgewogICAgICAgICB0cnkgewotICAgICAgICAgICAgcmV0dXJuIG1TZXJ2aWNlLmdldFByb3ZpZGVycyhlbmFibGVkT25seSk7CisgICAgICAgICAgICByZXR1cm4gbVNlcnZpY2UuZ2V0UHJvdmlkZXJzKG51bGwsIGVuYWJsZWRPbmx5KTsKICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGV4KSB7CiAgICAgICAgICAgICBMb2cuZShUQUcsICJnZXRQcm92aWRlcnM6IFJlbW90ZUV4Y2VwdGlvbiIsIGV4KTsKICAgICAgICAgfQpAQCAtMzEzLDE3MyArMzM5LDE1IEBACiAgICAgICogQHJldHVybiBsaXN0IG9mIFN0cmluZ3MgY29udGFpbmluZyBuYW1lcyBvZiB0aGUgcHJvdmlkZXJzCiAgICAgICovCiAgICAgcHVibGljIExpc3Q8U3RyaW5nPiBnZXRQcm92aWRlcnMoQ3JpdGVyaWEgY3JpdGVyaWEsIGJvb2xlYW4gZW5hYmxlZE9ubHkpIHsKLSAgICAgICAgTGlzdDxTdHJpbmc+IGdvb2RQcm92aWRlcnMgPSBDb2xsZWN0aW9ucy5lbXB0eUxpc3QoKTsKLSAgICAgICAgTGlzdDxTdHJpbmc+IHByb3ZpZGVycyA9IGdldFByb3ZpZGVycyhlbmFibGVkT25seSk7Ci0gICAgICAgIGZvciAoU3RyaW5nIHByb3ZpZGVyTmFtZSA6IHByb3ZpZGVycykgewotICAgICAgICAgICAgTG9jYXRpb25Qcm92aWRlciBwcm92aWRlciA9IGdldFByb3ZpZGVyKHByb3ZpZGVyTmFtZSk7Ci0gICAgICAgICAgICBpZiAocHJvdmlkZXIgIT0gbnVsbCAmJiBwcm92aWRlci5tZWV0c0NyaXRlcmlhKGNyaXRlcmlhKSkgewotICAgICAgICAgICAgICAgIGlmIChnb29kUHJvdmlkZXJzLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgICAgICAgICBnb29kUHJvdmlkZXJzID0gbmV3IEFycmF5TGlzdDxTdHJpbmc+KCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGdvb2RQcm92aWRlcnMuYWRkKHByb3ZpZGVyTmFtZSk7Ci0gICAgICAgICAgICB9CisgICAgICAgIGlmIChjcml0ZXJpYSA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJjcml0ZXJpYT09bnVsbCIpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBnb29kUHJvdmlkZXJzOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIFJldHVybnMgdGhlIG5leHQgbG9vc2VyIHBvd2VyIHJlcXVpcmVtZW50LCBpbiB0aGUgc2VxdWVuY2U6Ci0gICAgICoKLSAgICAgKiBQT1dFUl9MT1cgLT4gUE9XRVJfTUVESVVNIC0+IFBPV0VSX0hJR0ggLT4gTk9fUkVRVUlSRU1FTlQKLSAgICAgKi8KLSAgICBwcml2YXRlIGludCBuZXh0UG93ZXIoaW50IHBvd2VyKSB7Ci0gICAgICAgIHN3aXRjaCAocG93ZXIpIHsKLSAgICAgICAgY2FzZSBDcml0ZXJpYS5QT1dFUl9MT1c6Ci0gICAgICAgICAgICByZXR1cm4gQ3JpdGVyaWEuUE9XRVJfTUVESVVNOwotICAgICAgICBjYXNlIENyaXRlcmlhLlBPV0VSX01FRElVTToKLSAgICAgICAgICAgIHJldHVybiBDcml0ZXJpYS5QT1dFUl9ISUdIOwotICAgICAgICBjYXNlIENyaXRlcmlhLlBPV0VSX0hJR0g6Ci0gICAgICAgICAgICByZXR1cm4gQ3JpdGVyaWEuTk9fUkVRVUlSRU1FTlQ7Ci0gICAgICAgIGNhc2UgQ3JpdGVyaWEuTk9fUkVRVUlSRU1FTlQ6Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gQ3JpdGVyaWEuTk9fUkVRVUlSRU1FTlQ7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gbVNlcnZpY2UuZ2V0UHJvdmlkZXJzKGNyaXRlcmlhLCBlbmFibGVkT25seSk7CisgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgTG9nLmUoVEFHLCAiZ2V0UHJvdmlkZXJzOiBSZW1vdGVFeGNlcHRpb24iLCBleCk7CiAgICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBSZXR1cm5zIHRoZSBuZXh0IGxvb3NlciBhY2N1cmFjeSByZXF1aXJlbWVudCwgaW4gdGhlIHNlcXVlbmNlOgotICAgICAqCi0gICAgICogQUNDVVJBQ1lfRklORSAtPiBBQ0NVUkFDWV9BUFBST1hJTUFURS0+IE5PX1JFUVVJUkVNRU5UCi0gICAgICovCi0gICAgcHJpdmF0ZSBpbnQgbmV4dEFjY3VyYWN5KGludCBhY2N1cmFjeSkgewotICAgICAgICBpZiAoYWNjdXJhY3kgPT0gQ3JpdGVyaWEuQUNDVVJBQ1lfRklORSkgewotICAgICAgICAgICAgcmV0dXJuIENyaXRlcmlhLkFDQ1VSQUNZX0NPQVJTRTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiBDcml0ZXJpYS5OT19SRVFVSVJFTUVOVDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHByaXZhdGUgYWJzdHJhY3QgY2xhc3MgTHBDb21wYXJhdG9yIGltcGxlbWVudHMgQ29tcGFyYXRvcjxMb2NhdGlvblByb3ZpZGVyPiB7Ci0KLSAgICAgICAgcHVibGljIGludCBjb21wYXJlKGludCBhMSwgaW50IGEyKSB7Ci0gICAgICAgICAgICBpZiAoYTEgPCBhMikgewotICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoYTEgPiBhMikgewotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHB1YmxpYyBpbnQgY29tcGFyZShmbG9hdCBhMSwgZmxvYXQgYTIpIHsKLSAgICAgICAgICAgIGlmIChhMSA8IGEyKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgfSBlbHNlIGlmIChhMSA+IGEyKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBjbGFzcyBMcFBvd2VyQ29tcGFyYXRvciBleHRlbmRzIExwQ29tcGFyYXRvciB7Ci0gICAgICAgIHB1YmxpYyBpbnQgY29tcGFyZShMb2NhdGlvblByb3ZpZGVyIGwxLCBMb2NhdGlvblByb3ZpZGVyIGwyKSB7Ci0gICAgICAgICAgICBpbnQgYTEgPSBsMS5nZXRQb3dlclJlcXVpcmVtZW50KCk7Ci0gICAgICAgICAgICBpbnQgYTIgPSBsMi5nZXRQb3dlclJlcXVpcmVtZW50KCk7Ci0gICAgICAgICAgICByZXR1cm4gY29tcGFyZShhMSwgYTIpOyAvLyBTbWFsbGVyIGlzIGJldHRlcgotICAgICAgICAgfQotCi0gICAgICAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoTG9jYXRpb25Qcm92aWRlciBsMSwgTG9jYXRpb25Qcm92aWRlciBsMikgewotICAgICAgICAgICAgIGludCBhMSA9IGwxLmdldFBvd2VyUmVxdWlyZW1lbnQoKTsKLSAgICAgICAgICAgICBpbnQgYTIgPSBsMi5nZXRQb3dlclJlcXVpcmVtZW50KCk7Ci0gICAgICAgICAgICAgcmV0dXJuIGExID09IGEyOwotICAgICAgICAgfQotICAgIH0KLQotICAgIHByaXZhdGUgY2xhc3MgTHBBY2N1cmFjeUNvbXBhcmF0b3IgZXh0ZW5kcyBMcENvbXBhcmF0b3IgewotICAgICAgICBwdWJsaWMgaW50IGNvbXBhcmUoTG9jYXRpb25Qcm92aWRlciBsMSwgTG9jYXRpb25Qcm92aWRlciBsMikgewotICAgICAgICAgICAgaW50IGExID0gbDEuZ2V0QWNjdXJhY3koKTsKLSAgICAgICAgICAgIGludCBhMiA9IGwyLmdldEFjY3VyYWN5KCk7Ci0gICAgICAgICAgICByZXR1cm4gY29tcGFyZShhMSwgYTIpOyAvLyBTbWFsbGVyIGlzIGJldHRlcgotICAgICAgICAgfQotCi0gICAgICAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoTG9jYXRpb25Qcm92aWRlciBsMSwgTG9jYXRpb25Qcm92aWRlciBsMikgewotICAgICAgICAgICAgIGludCBhMSA9IGwxLmdldEFjY3VyYWN5KCk7Ci0gICAgICAgICAgICAgaW50IGEyID0gbDIuZ2V0QWNjdXJhY3koKTsKLSAgICAgICAgICAgICByZXR1cm4gYTEgPT0gYTI7Ci0gICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBjbGFzcyBMcENhcGFiaWxpdHlDb21wYXJhdG9yIGV4dGVuZHMgTHBDb21wYXJhdG9yIHsKLQotICAgICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQUxUSVRVREVfU0NPUkUgPSA0OwotICAgICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQkVBUklOR19TQ09SRSA9IDQ7Ci0gICAgICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTUEVFRF9TQ09SRSA9IDQ7Ci0KLSAgICAgICAgcHJpdmF0ZSBpbnQgc2NvcmUoTG9jYXRpb25Qcm92aWRlciBwKSB7Ci0gICAgICAgICAgICByZXR1cm4gKHAuc3VwcG9ydHNBbHRpdHVkZSgpID8gQUxUSVRVREVfU0NPUkUgOiAwKSArCi0gICAgICAgICAgICAgICAgKHAuc3VwcG9ydHNCZWFyaW5nKCkgPyBCRUFSSU5HX1NDT1JFIDogMCkgKwotICAgICAgICAgICAgICAgIChwLnN1cHBvcnRzU3BlZWQoKSA/IFNQRUVEX1NDT1JFIDogMCk7Ci0gICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgaW50IGNvbXBhcmUoTG9jYXRpb25Qcm92aWRlciBsMSwgTG9jYXRpb25Qcm92aWRlciBsMikgewotICAgICAgICAgICAgaW50IGExID0gc2NvcmUobDEpOwotICAgICAgICAgICAgaW50IGEyID0gc2NvcmUobDIpOwotICAgICAgICAgICAgcmV0dXJuIGNvbXBhcmUoLWExLCAtYTIpOyAvLyBCaWdnZXIgaXMgYmV0dGVyCi0gICAgICAgICB9Ci0KLSAgICAgICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhMb2NhdGlvblByb3ZpZGVyIGwxLCBMb2NhdGlvblByb3ZpZGVyIGwyKSB7Ci0gICAgICAgICAgICAgaW50IGExID0gc2NvcmUobDEpOwotICAgICAgICAgICAgIGludCBhMiA9IHNjb3JlKGwyKTsKLSAgICAgICAgICAgICByZXR1cm4gYTEgPT0gYTI7Ci0gICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBMb2NhdGlvblByb3ZpZGVyIGJlc3QoTGlzdDxTdHJpbmc+IHByb3ZpZGVyTmFtZXMpIHsKLSAgICAgICAgTGlzdDxMb2NhdGlvblByb3ZpZGVyPiBwcm92aWRlcnMgPSBuZXcgQXJyYXlMaXN0PExvY2F0aW9uUHJvdmlkZXI+KHByb3ZpZGVyTmFtZXMuc2l6ZSgpKTsKLSAgICAgICAgZm9yIChTdHJpbmcgbmFtZSA6IHByb3ZpZGVyTmFtZXMpIHsKLSAgICAgICAgICAgIHByb3ZpZGVycy5hZGQoZ2V0UHJvdmlkZXIobmFtZSkpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHByb3ZpZGVycy5zaXplKCkgPCAyKSB7Ci0gICAgICAgICAgICByZXR1cm4gcHJvdmlkZXJzLmdldCgwKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEZpcnN0LCBzb3J0IGJ5IHBvd2VyIHJlcXVpcmVtZW50Ci0gICAgICAgIENvbGxlY3Rpb25zLnNvcnQocHJvdmlkZXJzLCBuZXcgTHBQb3dlckNvbXBhcmF0b3IoKSk7Ci0gICAgICAgIGludCBwb3dlciA9IHByb3ZpZGVycy5nZXQoMCkuZ2V0UG93ZXJSZXF1aXJlbWVudCgpOwotICAgICAgICBpZiAocG93ZXIgPCBwcm92aWRlcnMuZ2V0KDEpLmdldFBvd2VyUmVxdWlyZW1lbnQoKSkgewotICAgICAgICAgICAgcmV0dXJuIHByb3ZpZGVycy5nZXQoMCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpbnQgaWR4LCBzaXplOwotCi0gICAgICAgIExpc3Q8TG9jYXRpb25Qcm92aWRlcj4gdG1wID0gbmV3IEFycmF5TGlzdDxMb2NhdGlvblByb3ZpZGVyPigpOwotICAgICAgICBpZHggPSAwOwotICAgICAgICBzaXplID0gcHJvdmlkZXJzLnNpemUoKTsKLSAgICAgICAgd2hpbGUgKChpZHggPCBzaXplKSAmJiAocHJvdmlkZXJzLmdldChpZHgpLmdldFBvd2VyUmVxdWlyZW1lbnQoKSA9PSBwb3dlcikpIHsKLSAgICAgICAgICAgIHRtcC5hZGQocHJvdmlkZXJzLmdldChpZHgpKTsKLSAgICAgICAgICAgIGlkeCsrOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gTmV4dCwgc29ydCBieSBhY2N1cmFjeQotICAgICAgICBDb2xsZWN0aW9ucy5zb3J0KHRtcCwgbmV3IExwQWNjdXJhY3lDb21wYXJhdG9yKCkpOwotICAgICAgICBpbnQgYWNjID0gdG1wLmdldCgwKS5nZXRBY2N1cmFjeSgpOwotICAgICAgICBpZiAoYWNjIDwgdG1wLmdldCgxKS5nZXRBY2N1cmFjeSgpKSB7Ci0gICAgICAgICAgICByZXR1cm4gdG1wLmdldCgwKTsKLSAgICAgICAgfQotCi0gICAgICAgIExpc3Q8TG9jYXRpb25Qcm92aWRlcj4gdG1wMiA9IG5ldyBBcnJheUxpc3Q8TG9jYXRpb25Qcm92aWRlcj4oKTsKLSAgICAgICAgaWR4ID0gMDsKLSAgICAgICAgc2l6ZSA9IHRtcC5zaXplKCk7Ci0gICAgICAgIHdoaWxlICgoaWR4IDwgc2l6ZSkgJiYgKHRtcC5nZXQoaWR4KS5nZXRBY2N1cmFjeSgpID09IGFjYykpIHsKLSAgICAgICAgICAgIHRtcDIuYWRkKHRtcC5nZXQoaWR4KSk7Ci0gICAgICAgICAgICBpZHgrKzsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEZpbmFsbHksIHNvcnQgYnkgY2FwYWJpbGl0eSAic2NvcmUiCi0gICAgICAgIENvbGxlY3Rpb25zLnNvcnQodG1wMiwgbmV3IExwQ2FwYWJpbGl0eUNvbXBhcmF0b3IoKSk7Ci0gICAgICAgIHJldHVybiB0bXAyLmdldCgwKTsKKyAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgfQogCiAgICAgLyoqCkBAIC01MDUsNzIgKzM3MywxNCBAQAogICAgICAqIEByZXR1cm4gbmFtZSBvZiB0aGUgcHJvdmlkZXIgdGhhdCBiZXN0IG1hdGNoZXMgdGhlIHJlcXVpcmVtZW50cwogICAgICAqLwogICAgIHB1YmxpYyBTdHJpbmcgZ2V0QmVzdFByb3ZpZGVyKENyaXRlcmlhIGNyaXRlcmlhLCBib29sZWFuIGVuYWJsZWRPbmx5KSB7Ci0gICAgICAgIExpc3Q8U3RyaW5nPiBnb29kUHJvdmlkZXJzID0gZ2V0UHJvdmlkZXJzKGNyaXRlcmlhLCBlbmFibGVkT25seSk7Ci0gICAgICAgIGlmICghZ29vZFByb3ZpZGVycy5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIHJldHVybiBiZXN0KGdvb2RQcm92aWRlcnMpLmdldE5hbWUoKTsKKyAgICAgICAgaWYgKGNyaXRlcmlhID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImNyaXRlcmlhPT1udWxsIik7CiAgICAgICAgIH0KLQotICAgICAgICAvLyBNYWtlIGEgY29weSBvZiB0aGUgY3JpdGVyaWEgdGhhdCB3ZSBjYW4gbW9kaWZ5Ci0gICAgICAgIGNyaXRlcmlhID0gbmV3IENyaXRlcmlhKGNyaXRlcmlhKTsKLQotICAgICAgICAvLyBMb29zZW4gcG93ZXIgcmVxdWlyZW1lbnQKLSAgICAgICAgaW50IHBvd2VyID0gY3JpdGVyaWEuZ2V0UG93ZXJSZXF1aXJlbWVudCgpOwotICAgICAgICB3aGlsZSAoZ29vZFByb3ZpZGVycy5pc0VtcHR5KCkgJiYgKHBvd2VyICE9IENyaXRlcmlhLk5PX1JFUVVJUkVNRU5UKSkgewotICAgICAgICAgICAgcG93ZXIgPSBuZXh0UG93ZXIocG93ZXIpOwotICAgICAgICAgICAgY3JpdGVyaWEuc2V0UG93ZXJSZXF1aXJlbWVudChwb3dlcik7Ci0gICAgICAgICAgICBnb29kUHJvdmlkZXJzID0gZ2V0UHJvdmlkZXJzKGNyaXRlcmlhLCBlbmFibGVkT25seSk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gbVNlcnZpY2UuZ2V0QmVzdFByb3ZpZGVyKGNyaXRlcmlhLCBlbmFibGVkT25seSk7CisgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgTG9nLmUoVEFHLCAiZ2V0QmVzdFByb3ZpZGVyOiBSZW1vdGVFeGNlcHRpb24iLCBleCk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKCFnb29kUHJvdmlkZXJzLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgcmV0dXJuIGJlc3QoZ29vZFByb3ZpZGVycykuZ2V0TmFtZSgpOwotICAgICAgICB9Ci0KLS8vICAgICAgICAvLyBMb29zZW4gcmVzcG9uc2UgdGltZSByZXF1aXJlbWVudAotLy8gICAgICAgIGludCByZXNwb25zZVRpbWUgPSBjcml0ZXJpYS5nZXRQcmVmZXJyZWRSZXNwb25zZVRpbWUoKTsKLS8vICAgICAgICB3aGlsZSAoZ29vZFByb3ZpZGVycy5pc0VtcHR5KCkgJiYKLS8vICAgICAgICAgICAgKHJlc3BvbnNlVGltZSAhPSBDcml0ZXJpYS5OT19SRVFVSVJFTUVOVCkpIHsKLS8vICAgICAgICAgICAgcmVzcG9uc2VUaW1lICs9IDEwMDA7Ci0vLyAgICAgICAgICAgIGlmIChyZXNwb25zZVRpbWUgPiA2MDAwMCkgewotLy8gICAgICAgICAgICAgICAgcmVzcG9uc2VUaW1lID0gQ3JpdGVyaWEuTk9fUkVRVUlSRU1FTlQ7Ci0vLyAgICAgICAgICAgIH0KLS8vICAgICAgICAgICAgY3JpdGVyaWEuc2V0UHJlZmVycmVkUmVzcG9uc2VUaW1lKHJlc3BvbnNlVGltZSk7Ci0vLyAgICAgICAgICAgIGdvb2RQcm92aWRlcnMgPSBnZXRQcm92aWRlcnMoY3JpdGVyaWEpOwotLy8gICAgICAgIH0KLS8vICAgICAgICBpZiAoIWdvb2RQcm92aWRlcnMuaXNFbXB0eSgpKSB7Ci0vLyAgICAgICAgICAgIHJldHVybiBiZXN0KGdvb2RQcm92aWRlcnMpOwotLy8gICAgICAgIH0KLQotICAgICAgICAvLyBMb29zZW4gYWNjdXJhY3kgcmVxdWlyZW1lbnQKLSAgICAgICAgaW50IGFjY3VyYWN5ID0gY3JpdGVyaWEuZ2V0QWNjdXJhY3koKTsKLSAgICAgICAgd2hpbGUgKGdvb2RQcm92aWRlcnMuaXNFbXB0eSgpICYmIChhY2N1cmFjeSAhPSBDcml0ZXJpYS5OT19SRVFVSVJFTUVOVCkpIHsKLSAgICAgICAgICAgIGFjY3VyYWN5ID0gbmV4dEFjY3VyYWN5KGFjY3VyYWN5KTsKLSAgICAgICAgICAgIGNyaXRlcmlhLnNldEFjY3VyYWN5KGFjY3VyYWN5KTsKLSAgICAgICAgICAgIGdvb2RQcm92aWRlcnMgPSBnZXRQcm92aWRlcnMoY3JpdGVyaWEsIGVuYWJsZWRPbmx5KTsKLSAgICAgICAgfQotICAgICAgICBpZiAoIWdvb2RQcm92aWRlcnMuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICByZXR1cm4gYmVzdChnb29kUHJvdmlkZXJzKS5nZXROYW1lKCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBSZW1vdmUgYmVhcmluZyByZXF1aXJlbWVudAotICAgICAgICBjcml0ZXJpYS5zZXRCZWFyaW5nUmVxdWlyZWQoZmFsc2UpOwotICAgICAgICBnb29kUHJvdmlkZXJzID0gZ2V0UHJvdmlkZXJzKGNyaXRlcmlhLCBlbmFibGVkT25seSk7Ci0gICAgICAgIGlmICghZ29vZFByb3ZpZGVycy5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIHJldHVybiBiZXN0KGdvb2RQcm92aWRlcnMpLmdldE5hbWUoKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFJlbW92ZSBzcGVlZCByZXF1aXJlbWVudAotICAgICAgICBjcml0ZXJpYS5zZXRTcGVlZFJlcXVpcmVkKGZhbHNlKTsKLSAgICAgICAgZ29vZFByb3ZpZGVycyA9IGdldFByb3ZpZGVycyhjcml0ZXJpYSwgZW5hYmxlZE9ubHkpOwotICAgICAgICBpZiAoIWdvb2RQcm92aWRlcnMuaXNFbXB0eSgpKSB7Ci0gICAgICAgICAgICByZXR1cm4gYmVzdChnb29kUHJvdmlkZXJzKS5nZXROYW1lKCk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBSZW1vdmUgYWx0aXR1ZGUgcmVxdWlyZW1lbnQKLSAgICAgICAgY3JpdGVyaWEuc2V0QWx0aXR1ZGVSZXF1aXJlZChmYWxzZSk7Ci0gICAgICAgIGdvb2RQcm92aWRlcnMgPSBnZXRQcm92aWRlcnMoY3JpdGVyaWEsIGVuYWJsZWRPbmx5KTsKLSAgICAgICAgaWYgKCFnb29kUHJvdmlkZXJzLmlzRW1wdHkoKSkgewotICAgICAgICAgICAgcmV0dXJuIGJlc3QoZ29vZFByb3ZpZGVycykuZ2V0TmFtZSgpOwotICAgICAgICB9Ci0KICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgfQogCkBAIC02MjcsNyArNDM3LDcgQEAKICAgICAgICAgaWYgKGxpc3RlbmVyID09IG51bGwpIHsKICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImxpc3RlbmVyPT1udWxsIik7CiAgICAgICAgIH0KLSAgICAgICAgX3JlcXVlc3RMb2NhdGlvblVwZGF0ZXMocHJvdmlkZXIsIG1pblRpbWUsIG1pbkRpc3RhbmNlLCBsaXN0ZW5lciwgbnVsbCk7CisgICAgICAgIF9yZXF1ZXN0TG9jYXRpb25VcGRhdGVzKHByb3ZpZGVyLCBudWxsLCBtaW5UaW1lLCBtaW5EaXN0YW5jZSwgZmFsc2UsIGxpc3RlbmVyLCBudWxsKTsKICAgICB9CiAKICAgICAvKioKQEAgLTY3MCwxMCArNDgwLDEwIEBACiAgICAgICogZWFjaCBsb2NhdGlvbiB1cGRhdGUKICAgICAgKiBAcGFyYW0gbG9vcGVyIGEgTG9vcGVyIG9iamVjdCB3aG9zZSBtZXNzYWdlIHF1ZXVlIHdpbGwgYmUgdXNlZCB0bwogICAgICAqIGltcGxlbWVudCB0aGUgY2FsbGJhY2sgbWVjaGFuaXNtLgorICAgICAqIElmIGxvb3BlciBpcyBudWxsIHRoZW4gdGhlIGNhbGxiYWNrcyB3aWxsIGJlIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQuCiAgICAgICoKICAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiBwcm92aWRlciBpcyBudWxsIG9yIGRvZXNuJ3QgZXhpc3QKICAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiBsaXN0ZW5lciBpcyBudWxsCi0gICAgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgbG9vcGVyIGlzIG51bGwKICAgICAgKiBAdGhyb3dzIFNlY3VyaXR5RXhjZXB0aW9uIGlmIG5vIHN1aXRhYmxlIHBlcm1pc3Npb24gaXMgcHJlc2VudCBmb3IgdGhlIHByb3ZpZGVyLgogICAgICAqLwogICAgIHB1YmxpYyB2b2lkIHJlcXVlc3RMb2NhdGlvblVwZGF0ZXMoU3RyaW5nIHByb3ZpZGVyLApAQCAtNjg1LDE1ICs0OTUsNzAgQEAKICAgICAgICAgaWYgKGxpc3RlbmVyID09IG51bGwpIHsKICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImxpc3RlbmVyPT1udWxsIik7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGxvb3BlciA9PSBudWxsKSB7Ci0gICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJsb29wZXI9PW51bGwiKTsKLSAgICAgICAgfQotICAgICAgICBfcmVxdWVzdExvY2F0aW9uVXBkYXRlcyhwcm92aWRlciwgbWluVGltZSwgbWluRGlzdGFuY2UsIGxpc3RlbmVyLCBsb29wZXIpOworICAgICAgICBfcmVxdWVzdExvY2F0aW9uVXBkYXRlcyhwcm92aWRlciwgbnVsbCwgbWluVGltZSwgbWluRGlzdGFuY2UsIGZhbHNlLCBsaXN0ZW5lciwgbG9vcGVyKTsKICAgICB9CiAKLSAgICBwcml2YXRlIHZvaWQgX3JlcXVlc3RMb2NhdGlvblVwZGF0ZXMoU3RyaW5nIHByb3ZpZGVyLAotICAgICAgICBsb25nIG1pblRpbWUsIGZsb2F0IG1pbkRpc3RhbmNlLCBMb2NhdGlvbkxpc3RlbmVyIGxpc3RlbmVyLAotICAgICAgICBMb29wZXIgbG9vcGVyKSB7CisgICAgLyoqCisgICAgICogUmVnaXN0ZXJzIHRoZSBjdXJyZW50IGFjdGl2aXR5IHRvIGJlIG5vdGlmaWVkIHBlcmlvZGljYWxseSBiYXNlZCBvbgorICAgICAqIHRoZSBzcGVjaWZpZWQgY3JpdGVyaWEuICBQZXJpb2RpY2FsbHksIHRoZSBzdXBwbGllZCBMb2NhdGlvbkxpc3RlbmVyIHdpbGwKKyAgICAgKiBiZSBjYWxsZWQgd2l0aCB0aGUgY3VycmVudCBMb2NhdGlvbiBvciB3aXRoIHN0YXR1cyB1cGRhdGVzLgorICAgICAqCisgICAgICogPHA+IEl0IG1heSB0YWtlIGEgd2hpbGUgdG8gcmVjZWl2ZSB0aGUgbW9zdCByZWNlbnQgbG9jYXRpb24uIElmCisgICAgICogYW4gaW1tZWRpYXRlIGxvY2F0aW9uIGlzIHJlcXVpcmVkLCBhcHBsaWNhdGlvbnMgbWF5IHVzZSB0aGUKKyAgICAgKiB7QGxpbmsgI2dldExhc3RLbm93bkxvY2F0aW9uKFN0cmluZyl9IG1ldGhvZC4KKyAgICAgKgorICAgICAqIDxwPiBJbiBjYXNlIHRoZSBwcm92aWRlciBpcyBkaXNhYmxlZCBieSB0aGUgdXNlciwgdXBkYXRlcyB3aWxsIHN0b3AsCisgICAgICogYW5kIHRoZSB7QGxpbmsgTG9jYXRpb25MaXN0ZW5lciNvblByb3ZpZGVyRGlzYWJsZWQoU3RyaW5nKX0KKyAgICAgKiBtZXRob2Qgd2lsbCBiZSBjYWxsZWQuIEFzIHNvb24gYXMgdGhlIHByb3ZpZGVyIGlzIGVuYWJsZWQgYWdhaW4sCisgICAgICogdGhlIHtAbGluayBMb2NhdGlvbkxpc3RlbmVyI29uUHJvdmlkZXJFbmFibGVkKFN0cmluZyl9IG1ldGhvZCB3aWxsCisgICAgICogYmUgY2FsbGVkIGFuZCBsb2NhdGlvbiB1cGRhdGVzIHdpbGwgc3RhcnQgYWdhaW4uCisgICAgICoKKyAgICAgKiA8cD4gVGhlIGZyZXF1ZW5jeSBvZiBub3RpZmljYXRpb24gbWF5IGJlIGNvbnRyb2xsZWQgdXNpbmcgdGhlCisgICAgICogbWluVGltZSBhbmQgbWluRGlzdGFuY2UgcGFyYW1ldGVycy4gSWYgbWluVGltZSBpcyBncmVhdGVyIHRoYW4gMCwKKyAgICAgKiB0aGUgTG9jYXRpb25NYW5hZ2VyIGNvdWxkIHBvdGVudGlhbGx5IHJlc3QgZm9yIG1pblRpbWUgbWlsbGlzZWNvbmRzCisgICAgICogYmV0d2VlbiBsb2NhdGlvbiB1cGRhdGVzIHRvIGNvbnNlcnZlIHBvd2VyLiBJZiBtaW5EaXN0YW5jZSBpcyBncmVhdGVyIHRoYW4gMCwKKyAgICAgKiBhIGxvY2F0aW9uIHdpbGwgb25seSBiZSBicm9hZGNhc3RlZCBpZiB0aGUgZGV2aWNlIG1vdmVzIGJ5IG1pbkRpc3RhbmNlIG1ldGVycy4KKyAgICAgKiBUbyBvYnRhaW4gbm90aWZpY2F0aW9ucyBhcyBmcmVxdWVudGx5IGFzIHBvc3NpYmxlLCBzZXQgYm90aCBwYXJhbWV0ZXJzIHRvIDAuCisgICAgICoKKyAgICAgKiA8cD4gQmFja2dyb3VuZCBzZXJ2aWNlcyBzaG91bGQgYmUgY2FyZWZ1bCBhYm91dCBzZXR0aW5nIGEgc3VmZmljaWVudGx5IGhpZ2gKKyAgICAgKiBtaW5UaW1lIHNvIHRoYXQgdGhlIGRldmljZSBkb2Vzbid0IGNvbnN1bWUgdG9vIG11Y2ggcG93ZXIgYnkga2VlcGluZyB0aGUKKyAgICAgKiBHUFMgb3Igd2lyZWxlc3MgcmFkaW9zIG9uIGFsbCB0aGUgdGltZS4gSW4gcGFydGljdWxhciwgdmFsdWVzIHVuZGVyIDYwMDAwbXMKKyAgICAgKiBhcmUgbm90IHJlY29tbWVuZGVkLgorICAgICAqCisgICAgICogPHA+IFRoZSBzdXBwbGllZCBMb29wZXIgaXMgdXNlZCB0byBpbXBsZW1lbnQgdGhlIGNhbGxiYWNrIG1lY2hhbmlzbS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBtaW5UaW1lIHRoZSBtaW5pbXVtIHRpbWUgaW50ZXJ2YWwgZm9yIG5vdGlmaWNhdGlvbnMsIGluCisgICAgICogbWlsbGlzZWNvbmRzLiBUaGlzIGZpZWxkIGlzIG9ubHkgdXNlZCBhcyBhIGhpbnQgdG8gY29uc2VydmUgcG93ZXIsIGFuZCBhY3R1YWwKKyAgICAgKiB0aW1lIGJldHdlZW4gbG9jYXRpb24gdXBkYXRlcyBtYXkgYmUgZ3JlYXRlciBvciBsZXNzZXIgdGhhbiB0aGlzIHZhbHVlLgorICAgICAqIEBwYXJhbSBtaW5EaXN0YW5jZSB0aGUgbWluaW11bSBkaXN0YW5jZSBpbnRlcnZhbCBmb3Igbm90aWZpY2F0aW9ucywKKyAgICAgKiBpbiBtZXRlcnMKKyAgICAgKiBAcGFyYW0gY3JpdGVyaWEgY29udGFpbnMgcGFyYW1ldGVycyBmb3IgdGhlIGxvY2F0aW9uIG1hbmFnZXIgdG8gY2hvb3NlIHRoZQorICAgICAqIGFwcHJvcHJpYXRlIHByb3ZpZGVyIGFuZCBwYXJhbWV0ZXJzIHRvIGNvbXB1dGUgdGhlIGxvY2F0aW9uCisgICAgICogQHBhcmFtIGxpc3RlbmVyIGEgeyNsaW5rIExvY2F0aW9uTGlzdGVuZXJ9IHdob3NlCisgICAgICoge0BsaW5rIExvY2F0aW9uTGlzdGVuZXIjb25Mb2NhdGlvbkNoYW5nZWR9IG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBmb3IKKyAgICAgKiBlYWNoIGxvY2F0aW9uIHVwZGF0ZQorICAgICAqIEBwYXJhbSBsb29wZXIgYSBMb29wZXIgb2JqZWN0IHdob3NlIG1lc3NhZ2UgcXVldWUgd2lsbCBiZSB1c2VkIHRvCisgICAgICogaW1wbGVtZW50IHRoZSBjYWxsYmFjayBtZWNoYW5pc20uCisgICAgICogSWYgbG9vcGVyIGlzIG51bGwgdGhlbiB0aGUgY2FsbGJhY2tzIHdpbGwgYmUgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICAgKgorICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIGNyaXRlcmlhIGlzIG51bGwKKyAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiBsaXN0ZW5lciBpcyBudWxsCisgICAgICogQHRocm93cyBTZWN1cml0eUV4Y2VwdGlvbiBpZiBubyBzdWl0YWJsZSBwZXJtaXNzaW9uIGlzIHByZXNlbnQgdG8gYWNjZXNzCisgICAgICogdGhlIGxvY2F0aW9uIHNlcnZpY2VzLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHJlcXVlc3RMb2NhdGlvblVwZGF0ZXMobG9uZyBtaW5UaW1lLCBmbG9hdCBtaW5EaXN0YW5jZSwKKyAgICAgICAgICAgIENyaXRlcmlhIGNyaXRlcmlhLCBMb2NhdGlvbkxpc3RlbmVyIGxpc3RlbmVyLCBMb29wZXIgbG9vcGVyKSB7CisgICAgICAgIGlmIChjcml0ZXJpYSA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJjcml0ZXJpYT09bnVsbCIpOworICAgICAgICB9CisgICAgICAgIGlmIChsaXN0ZW5lciA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJsaXN0ZW5lcj09bnVsbCIpOworICAgICAgICB9CisgICAgICAgIF9yZXF1ZXN0TG9jYXRpb25VcGRhdGVzKG51bGwsIGNyaXRlcmlhLCBtaW5UaW1lLCBtaW5EaXN0YW5jZSwgZmFsc2UsIGxpc3RlbmVyLCBsb29wZXIpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBfcmVxdWVzdExvY2F0aW9uVXBkYXRlcyhTdHJpbmcgcHJvdmlkZXIsIENyaXRlcmlhIGNyaXRlcmlhLCBsb25nIG1pblRpbWUsCisgICAgICAgICAgICBmbG9hdCBtaW5EaXN0YW5jZSwgYm9vbGVhbiBzaW5nbGVTaG90LCBMb2NhdGlvbkxpc3RlbmVyIGxpc3RlbmVyLCBMb29wZXIgbG9vcGVyKSB7CiAgICAgICAgIGlmIChtaW5UaW1lIDwgMEwpIHsKICAgICAgICAgICAgIG1pblRpbWUgPSAwTDsKICAgICAgICAgfQpAQCAtNzA4LDcgKzU3Myw3IEBACiAgICAgICAgICAgICAgICAgICAgIHRyYW5zcG9ydCA9IG5ldyBMaXN0ZW5lclRyYW5zcG9ydChsaXN0ZW5lciwgbG9vcGVyKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbUxpc3RlbmVycy5wdXQobGlzdGVuZXIsIHRyYW5zcG9ydCk7Ci0gICAgICAgICAgICAgICAgbVNlcnZpY2UucmVxdWVzdExvY2F0aW9uVXBkYXRlcyhwcm92aWRlciwgbWluVGltZSwgbWluRGlzdGFuY2UsIHRyYW5zcG9ydCk7CisgICAgICAgICAgICAgICAgbVNlcnZpY2UucmVxdWVzdExvY2F0aW9uVXBkYXRlcyhwcm92aWRlciwgY3JpdGVyaWEsIG1pblRpbWUsIG1pbkRpc3RhbmNlLCBzaW5nbGVTaG90LCB0cmFuc3BvcnQpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZXgpIHsKICAgICAgICAgICAgIExvZy5lKFRBRywgInJlcXVlc3RMb2NhdGlvblVwZGF0ZXM6IERlYWRPYmplY3RFeGNlcHRpb24iLCBleCk7CkBAIC03NTQsNyArNjE5LDcgQEAKICAgICAgKiB0aW1lIGJldHdlZW4gbG9jYXRpb24gdXBkYXRlcyBtYXkgYmUgZ3JlYXRlciBvciBsZXNzZXIgdGhhbiB0aGlzIHZhbHVlLgogICAgICAqIEBwYXJhbSBtaW5EaXN0YW5jZSB0aGUgbWluaW11bSBkaXN0YW5jZSBpbnRlcnZhbCBmb3Igbm90aWZpY2F0aW9ucywKICAgICAgKiBpbiBtZXRlcnMKLSAgICAgKiBAcGFyYW0gaW50ZW50IGEgeyNsaW5rIFBlbmRpbmdJbnRldH0gdG8gYmUgc2VudCBmb3IgZWFjaCBsb2NhdGlvbiB1cGRhdGUKKyAgICAgKiBAcGFyYW0gaW50ZW50IGEgeyNsaW5rIFBlbmRpbmdJbnRlbnR9IHRvIGJlIHNlbnQgZm9yIGVhY2ggbG9jYXRpb24gdXBkYXRlCiAgICAgICoKICAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiBwcm92aWRlciBpcyBudWxsIG9yIGRvZXNuJ3QgZXhpc3QKICAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiBpbnRlbnQgaXMgbnVsbApAQCAtNzY4LDExICs2MzMsNjcgQEAKICAgICAgICAgaWYgKGludGVudCA9PSBudWxsKSB7CiAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJpbnRlbnQ9PW51bGwiKTsKICAgICAgICAgfQotICAgICAgICBfcmVxdWVzdExvY2F0aW9uVXBkYXRlcyhwcm92aWRlciwgbWluVGltZSwgbWluRGlzdGFuY2UsIGludGVudCk7CisgICAgICAgIF9yZXF1ZXN0TG9jYXRpb25VcGRhdGVzKHByb3ZpZGVyLCBudWxsLCBtaW5UaW1lLCBtaW5EaXN0YW5jZSwgZmFsc2UsIGludGVudCk7CiAgICAgfQogCi0gICAgcHJpdmF0ZSB2b2lkIF9yZXF1ZXN0TG9jYXRpb25VcGRhdGVzKFN0cmluZyBwcm92aWRlciwKLSAgICAgICAgICAgIGxvbmcgbWluVGltZSwgZmxvYXQgbWluRGlzdGFuY2UsIFBlbmRpbmdJbnRlbnQgaW50ZW50KSB7CisgICAgLyoqCisgICAgICogUmVnaXN0ZXJzIHRoZSBjdXJyZW50IGFjdGl2aXR5IHRvIGJlIG5vdGlmaWVkIHBlcmlvZGljYWxseSBiYXNlZCBvbgorICAgICAqIHRoZSBzcGVjaWZpZWQgY3JpdGVyaWEuICBQZXJpb2RpY2FsbHksIHRoZSBzdXBwbGllZCBQZW5kaW5nSW50ZW50IHdpbGwKKyAgICAgKiBiZSBicm9hZGNhc3Qgd2l0aCB0aGUgY3VycmVudCBMb2NhdGlvbiBvciB3aXRoIHN0YXR1cyB1cGRhdGVzLgorICAgICAqCisgICAgICogPHA+IExvY2F0aW9uIHVwZGF0ZXMgYXJlIHNlbnQgd2l0aCBhIGtleSBvZiBLRVlfTE9DQVRJT05fQ0hBTkdFRCBhbmQgYSBMb2NhdGlvbiB2YWx1ZS4KKyAgICAgKgorICAgICAqIDxwPiBJdCBtYXkgdGFrZSBhIHdoaWxlIHRvIHJlY2VpdmUgdGhlIG1vc3QgcmVjZW50IGxvY2F0aW9uLiBJZgorICAgICAqIGFuIGltbWVkaWF0ZSBsb2NhdGlvbiBpcyByZXF1aXJlZCwgYXBwbGljYXRpb25zIG1heSB1c2UgdGhlCisgICAgICoge0BsaW5rICNnZXRMYXN0S25vd25Mb2NhdGlvbihTdHJpbmcpfSBtZXRob2QuCisgICAgICoKKyAgICAgKiA8cD4gVGhlIGZyZXF1ZW5jeSBvZiBub3RpZmljYXRpb24gb3IgbmV3IGxvY2F0aW9ucyBtYXkgYmUgY29udHJvbGxlZCB1c2luZyB0aGUKKyAgICAgKiBtaW5UaW1lIGFuZCBtaW5EaXN0YW5jZSBwYXJhbWV0ZXJzLiBJZiBtaW5UaW1lIGlzIGdyZWF0ZXIgdGhhbiAwLAorICAgICAqIHRoZSBMb2NhdGlvbk1hbmFnZXIgY291bGQgcG90ZW50aWFsbHkgcmVzdCBmb3IgbWluVGltZSBtaWxsaXNlY29uZHMKKyAgICAgKiBiZXR3ZWVuIGxvY2F0aW9uIHVwZGF0ZXMgdG8gY29uc2VydmUgcG93ZXIuIElmIG1pbkRpc3RhbmNlIGlzIGdyZWF0ZXIgdGhhbiAwLAorICAgICAqIGEgbG9jYXRpb24gd2lsbCBvbmx5IGJlIGJyb2FkY2FzdCBpZiB0aGUgZGV2aWNlIG1vdmVzIGJ5IG1pbkRpc3RhbmNlIG1ldGVycy4KKyAgICAgKiBUbyBvYnRhaW4gbm90aWZpY2F0aW9ucyBhcyBmcmVxdWVudGx5IGFzIHBvc3NpYmxlLCBzZXQgYm90aCBwYXJhbWV0ZXJzIHRvIDAuCisgICAgICoKKyAgICAgKiA8cD4gQmFja2dyb3VuZCBzZXJ2aWNlcyBzaG91bGQgYmUgY2FyZWZ1bCBhYm91dCBzZXR0aW5nIGEgc3VmZmljaWVudGx5IGhpZ2gKKyAgICAgKiBtaW5UaW1lIHNvIHRoYXQgdGhlIGRldmljZSBkb2Vzbid0IGNvbnN1bWUgdG9vIG11Y2ggcG93ZXIgYnkga2VlcGluZyB0aGUKKyAgICAgKiBHUFMgb3Igd2lyZWxlc3MgcmFkaW9zIG9uIGFsbCB0aGUgdGltZS4gSW4gcGFydGljdWxhciwgdmFsdWVzIHVuZGVyIDYwMDAwbXMKKyAgICAgKiBhcmUgbm90IHJlY29tbWVuZGVkLgorICAgICAqCisgICAgICogPHA+IEluIGNhc2UgdGhlIHByb3ZpZGVyIGlzIGRpc2FibGVkIGJ5IHRoZSB1c2VyLCB1cGRhdGVzIHdpbGwgc3RvcCwKKyAgICAgKiBhbmQgYW4gaW50ZW50IHdpbGwgYmUgc2VudCB3aXRoIGFuIGV4dHJhIHdpdGgga2V5IEtFWV9QUk9WSURFUl9FTkFCTEVEIGFuZCBhIGJvb2xlYW4gdmFsdWUKKyAgICAgKiBvZiBmYWxzZS4gIElmIHRoZSBwcm92aWRlciBpcyByZS1lbmFibGVkLCBhbiBpbnRlbnQgd2lsbCBiZSBzZW50IHdpdGggYW4KKyAgICAgKiBleHRyYSB3aXRoIGtleSBLRVlfUFJPVklERVJfRU5BQkxFRCBhbmQgYSBib29sZWFuIHZhbHVlIG9mIHRydWUgYW5kIGxvY2F0aW9uIHVwZGF0ZXMgd2lsbAorICAgICAqIHN0YXJ0IGFnYWluLgorICAgICAqCisgICAgICogPHA+IElmIHRoZSBwcm92aWRlcidzIHN0YXR1cyBjaGFuZ2VzLCBhbiBpbnRlbnQgd2lsbCBiZSBzZW50IHdpdGggYW4gZXh0cmEgd2l0aCBrZXkKKyAgICAgKiBLRVlfU1RBVFVTX0NIQU5HRUQgYW5kIGFuIGludGVnZXIgdmFsdWUgaW5kaWNhdGluZyB0aGUgbmV3IHN0YXR1cy4gIEFueSBleHRyYXMgYXNzb2NpYXRlZAorICAgICAqIHdpdGggdGhlIHN0YXR1cyB1cGRhdGUgd2lsbCBiZSBzZW50IGFzIHdlbGwuCisgICAgICoKKyAgICAgKiBAcGFyYW0gbWluVGltZSB0aGUgbWluaW11bSB0aW1lIGludGVydmFsIGZvciBub3RpZmljYXRpb25zLCBpbgorICAgICAqIG1pbGxpc2Vjb25kcy4gVGhpcyBmaWVsZCBpcyBvbmx5IHVzZWQgYXMgYSBoaW50IHRvIGNvbnNlcnZlIHBvd2VyLCBhbmQgYWN0dWFsCisgICAgICogdGltZSBiZXR3ZWVuIGxvY2F0aW9uIHVwZGF0ZXMgbWF5IGJlIGdyZWF0ZXIgb3IgbGVzc2VyIHRoYW4gdGhpcyB2YWx1ZS4KKyAgICAgKiBAcGFyYW0gbWluRGlzdGFuY2UgdGhlIG1pbmltdW0gZGlzdGFuY2UgaW50ZXJ2YWwgZm9yIG5vdGlmaWNhdGlvbnMsCisgICAgICogaW4gbWV0ZXJzCisgICAgICogQHBhcmFtIGNyaXRlcmlhIGNvbnRhaW5zIHBhcmFtZXRlcnMgZm9yIHRoZSBsb2NhdGlvbiBtYW5hZ2VyIHRvIGNob29zZSB0aGUKKyAgICAgKiBhcHByb3ByaWF0ZSBwcm92aWRlciBhbmQgcGFyYW1ldGVycyB0byBjb21wdXRlIHRoZSBsb2NhdGlvbgorICAgICAqIEBwYXJhbSBpbnRlbnQgYSB7I2xpbmsgUGVuZGluZ0ludGVudH0gdG8gYmUgc2VudCBmb3IgZWFjaCBsb2NhdGlvbiB1cGRhdGUKKyAgICAgKgorICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIHByb3ZpZGVyIGlzIG51bGwgb3IgZG9lc24ndCBleGlzdAorICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIGludGVudCBpcyBudWxsCisgICAgICogQHRocm93cyBTZWN1cml0eUV4Y2VwdGlvbiBpZiBubyBzdWl0YWJsZSBwZXJtaXNzaW9uIGlzIHByZXNlbnQgZm9yIHRoZSBwcm92aWRlci4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCByZXF1ZXN0TG9jYXRpb25VcGRhdGVzKGxvbmcgbWluVGltZSwgZmxvYXQgbWluRGlzdGFuY2UsIENyaXRlcmlhIGNyaXRlcmlhLCBQZW5kaW5nSW50ZW50IGludGVudCkgeworICAgICAgICBpZiAoY3JpdGVyaWEgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiY3JpdGVyaWE9PW51bGwiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaW50ZW50ID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImludGVudD09bnVsbCIpOworICAgICAgICB9CisgICAgICAgIF9yZXF1ZXN0TG9jYXRpb25VcGRhdGVzKG51bGwsIGNyaXRlcmlhLCBtaW5UaW1lLCBtaW5EaXN0YW5jZSwgZmFsc2UsIGludGVudCk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIF9yZXF1ZXN0TG9jYXRpb25VcGRhdGVzKFN0cmluZyBwcm92aWRlciwgQ3JpdGVyaWEgY3JpdGVyaWEsCisgICAgICAgICAgICBsb25nIG1pblRpbWUsIGZsb2F0IG1pbkRpc3RhbmNlLCBib29sZWFuIHNpbmdsZVNob3QsIFBlbmRpbmdJbnRlbnQgaW50ZW50KSB7CiAgICAgICAgIGlmIChtaW5UaW1lIDwgMEwpIHsKICAgICAgICAgICAgIG1pblRpbWUgPSAwTDsKICAgICAgICAgfQpAQCAtNzgxLDEzICs3MDIsMTUwIEBACiAgICAgICAgIH0KIAogICAgICAgICB0cnkgewotICAgICAgICAgICAgbVNlcnZpY2UucmVxdWVzdExvY2F0aW9uVXBkYXRlc1BJKHByb3ZpZGVyLCBtaW5UaW1lLCBtaW5EaXN0YW5jZSwgaW50ZW50KTsKKyAgICAgICAgICAgIG1TZXJ2aWNlLnJlcXVlc3RMb2NhdGlvblVwZGF0ZXNQSShwcm92aWRlciwgY3JpdGVyaWEsIG1pblRpbWUsIG1pbkRpc3RhbmNlLCBzaW5nbGVTaG90LCBpbnRlbnQpOwogICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZXgpIHsKICAgICAgICAgICAgIExvZy5lKFRBRywgInJlcXVlc3RMb2NhdGlvblVwZGF0ZXM6IFJlbW90ZUV4Y2VwdGlvbiIsIGV4KTsKICAgICAgICAgfQogICAgIH0KIAogICAgIC8qKgorICAgICAqIFJlZ2lzdGVycyB0aGUgY3VycmVudCBhY3Rpdml0eSB0byBiZSBub3RpZmllZCBwZXJpb2RpY2FsbHkgYnkKKyAgICAgKiB0aGUgbmFtZWQgcHJvdmlkZXIuICBQZXJpb2RpY2FsbHksIHRoZSBzdXBwbGllZCBMb2NhdGlvbkxpc3RlbmVyIHdpbGwKKyAgICAgKiBiZSBjYWxsZWQgd2l0aCB0aGUgY3VycmVudCBMb2NhdGlvbiBvciB3aXRoIHN0YXR1cyB1cGRhdGVzLgorICAgICAqCisgICAgICogPHA+IEl0IG1heSB0YWtlIGEgd2hpbGUgdG8gcmVjZWl2ZSB0aGUgbW9zdCByZWNlbnQgbG9jYXRpb24uIElmCisgICAgICogYW4gaW1tZWRpYXRlIGxvY2F0aW9uIGlzIHJlcXVpcmVkLCBhcHBsaWNhdGlvbnMgbWF5IHVzZSB0aGUKKyAgICAgKiB7QGxpbmsgI2dldExhc3RLbm93bkxvY2F0aW9uKFN0cmluZyl9IG1ldGhvZC4KKyAgICAgKgorICAgICAqIDxwPiBJbiBjYXNlIHRoZSBwcm92aWRlciBpcyBkaXNhYmxlZCBieSB0aGUgdXNlciwgdXBkYXRlcyB3aWxsIHN0b3AsCisgICAgICogYW5kIHRoZSB7QGxpbmsgTG9jYXRpb25MaXN0ZW5lciNvblByb3ZpZGVyRGlzYWJsZWQoU3RyaW5nKX0KKyAgICAgKiBtZXRob2Qgd2lsbCBiZSBjYWxsZWQuIEFzIHNvb24gYXMgdGhlIHByb3ZpZGVyIGlzIGVuYWJsZWQgYWdhaW4sCisgICAgICogdGhlIHtAbGluayBMb2NhdGlvbkxpc3RlbmVyI29uUHJvdmlkZXJFbmFibGVkKFN0cmluZyl9IG1ldGhvZCB3aWxsCisgICAgICogYmUgY2FsbGVkIGFuZCBsb2NhdGlvbiB1cGRhdGVzIHdpbGwgc3RhcnQgYWdhaW4uCisgICAgICoKKyAgICAgKiA8cD4gVGhlIHN1cHBsaWVkIExvb3BlciBpcyB1c2VkIHRvIGltcGxlbWVudCB0aGUgY2FsbGJhY2sgbWVjaGFuaXNtLgorICAgICAqCisgICAgICogQHBhcmFtIHByb3ZpZGVyIHRoZSBuYW1lIG9mIHRoZSBwcm92aWRlciB3aXRoIHdoaWNoIHRvIHJlZ2lzdGVyCisgICAgICogQHBhcmFtIGxpc3RlbmVyIGEgeyNsaW5rIExvY2F0aW9uTGlzdGVuZXJ9IHdob3NlCisgICAgICoge0BsaW5rIExvY2F0aW9uTGlzdGVuZXIjb25Mb2NhdGlvbkNoYW5nZWR9IG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBmb3IKKyAgICAgKiBlYWNoIGxvY2F0aW9uIHVwZGF0ZQorICAgICAqIEBwYXJhbSBsb29wZXIgYSBMb29wZXIgb2JqZWN0IHdob3NlIG1lc3NhZ2UgcXVldWUgd2lsbCBiZSB1c2VkIHRvCisgICAgICogaW1wbGVtZW50IHRoZSBjYWxsYmFjayBtZWNoYW5pc20uCisgICAgICogSWYgbG9vcGVyIGlzIG51bGwgdGhlbiB0aGUgY2FsbGJhY2tzIHdpbGwgYmUgY2FsbGVkIG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICAgKgorICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIHByb3ZpZGVyIGlzIG51bGwgb3IgZG9lc24ndCBleGlzdAorICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIGxpc3RlbmVyIGlzIG51bGwKKyAgICAgKiBAdGhyb3dzIFNlY3VyaXR5RXhjZXB0aW9uIGlmIG5vIHN1aXRhYmxlIHBlcm1pc3Npb24gaXMgcHJlc2VudCBmb3IgdGhlIHByb3ZpZGVyLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHJlcXVlc3RTaW5nbGVVcGRhdGUoU3RyaW5nIHByb3ZpZGVyLCBMb2NhdGlvbkxpc3RlbmVyIGxpc3RlbmVyLCBMb29wZXIgbG9vcGVyKSB7CisgICAgICAgIGlmIChwcm92aWRlciA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJwcm92aWRlcj09bnVsbCIpOworICAgICAgICB9CisgICAgICAgIGlmIChsaXN0ZW5lciA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJsaXN0ZW5lcj09bnVsbCIpOworICAgICAgICB9CisgICAgICAgIF9yZXF1ZXN0TG9jYXRpb25VcGRhdGVzKHByb3ZpZGVyLCBudWxsLCAwTCwgMC4wZiwgdHJ1ZSwgbGlzdGVuZXIsIGxvb3Blcik7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVnaXN0ZXJzIHRoZSBjdXJyZW50IGFjdGl2aXR5IHRvIGJlIG5vdGlmaWVkIHBlcmlvZGljYWxseSBiYXNlZCBvbgorICAgICAqIHRoZSBzcGVjaWZpZWQgY3JpdGVyaWEuICBQZXJpb2RpY2FsbHksIHRoZSBzdXBwbGllZCBMb2NhdGlvbkxpc3RlbmVyIHdpbGwKKyAgICAgKiBiZSBjYWxsZWQgd2l0aCB0aGUgY3VycmVudCBMb2NhdGlvbiBvciB3aXRoIHN0YXR1cyB1cGRhdGVzLgorICAgICAqCisgICAgICogPHA+IEl0IG1heSB0YWtlIGEgd2hpbGUgdG8gcmVjZWl2ZSB0aGUgbW9zdCByZWNlbnQgbG9jYXRpb24uIElmCisgICAgICogYW4gaW1tZWRpYXRlIGxvY2F0aW9uIGlzIHJlcXVpcmVkLCBhcHBsaWNhdGlvbnMgbWF5IHVzZSB0aGUKKyAgICAgKiB7QGxpbmsgI2dldExhc3RLbm93bkxvY2F0aW9uKFN0cmluZyl9IG1ldGhvZC4KKyAgICAgKgorICAgICAqIDxwPiBJbiBjYXNlIHRoZSBwcm92aWRlciBpcyBkaXNhYmxlZCBieSB0aGUgdXNlciwgdXBkYXRlcyB3aWxsIHN0b3AsCisgICAgICogYW5kIHRoZSB7QGxpbmsgTG9jYXRpb25MaXN0ZW5lciNvblByb3ZpZGVyRGlzYWJsZWQoU3RyaW5nKX0KKyAgICAgKiBtZXRob2Qgd2lsbCBiZSBjYWxsZWQuIEFzIHNvb24gYXMgdGhlIHByb3ZpZGVyIGlzIGVuYWJsZWQgYWdhaW4sCisgICAgICogdGhlIHtAbGluayBMb2NhdGlvbkxpc3RlbmVyI29uUHJvdmlkZXJFbmFibGVkKFN0cmluZyl9IG1ldGhvZCB3aWxsCisgICAgICogYmUgY2FsbGVkIGFuZCBsb2NhdGlvbiB1cGRhdGVzIHdpbGwgc3RhcnQgYWdhaW4uCisgICAgICoKKyAgICAgKiA8cD4gVGhlIHN1cHBsaWVkIExvb3BlciBpcyB1c2VkIHRvIGltcGxlbWVudCB0aGUgY2FsbGJhY2sgbWVjaGFuaXNtLgorICAgICAqCisgICAgICogQHBhcmFtIGNyaXRlcmlhIGNvbnRhaW5zIHBhcmFtZXRlcnMgZm9yIHRoZSBsb2NhdGlvbiBtYW5hZ2VyIHRvIGNob29zZSB0aGUKKyAgICAgKiBhcHByb3ByaWF0ZSBwcm92aWRlciBhbmQgcGFyYW1ldGVycyB0byBjb21wdXRlIHRoZSBsb2NhdGlvbgorICAgICAqIEBwYXJhbSBsaXN0ZW5lciBhIHsjbGluayBMb2NhdGlvbkxpc3RlbmVyfSB3aG9zZQorICAgICAqIHtAbGluayBMb2NhdGlvbkxpc3RlbmVyI29uTG9jYXRpb25DaGFuZ2VkfSBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgZm9yCisgICAgICogZWFjaCBsb2NhdGlvbiB1cGRhdGUKKyAgICAgKiBAcGFyYW0gbG9vcGVyIGEgTG9vcGVyIG9iamVjdCB3aG9zZSBtZXNzYWdlIHF1ZXVlIHdpbGwgYmUgdXNlZCB0bworICAgICAqIGltcGxlbWVudCB0aGUgY2FsbGJhY2sgbWVjaGFuaXNtLgorICAgICAqIElmIGxvb3BlciBpcyBudWxsIHRoZW4gdGhlIGNhbGxiYWNrcyB3aWxsIGJlIGNhbGxlZCBvbiB0aGUgY3VycmVudCB0aHJlYWQuCisgICAgICoKKyAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiBpZiBjcml0ZXJpYSBpcyBudWxsCisgICAgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgbGlzdGVuZXIgaXMgbnVsbAorICAgICAqIEB0aHJvd3MgU2VjdXJpdHlFeGNlcHRpb24gaWYgbm8gc3VpdGFibGUgcGVybWlzc2lvbiBpcyBwcmVzZW50IHRvIGFjY2VzcworICAgICAqIHRoZSBsb2NhdGlvbiBzZXJ2aWNlcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCByZXF1ZXN0U2luZ2xlVXBkYXRlKENyaXRlcmlhIGNyaXRlcmlhLCBMb2NhdGlvbkxpc3RlbmVyIGxpc3RlbmVyLCBMb29wZXIgbG9vcGVyKSB7CisgICAgICAgIGlmIChjcml0ZXJpYSA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJjcml0ZXJpYT09bnVsbCIpOworICAgICAgICB9CisgICAgICAgIGlmIChsaXN0ZW5lciA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJsaXN0ZW5lcj09bnVsbCIpOworICAgICAgICB9CisgICAgICAgIF9yZXF1ZXN0TG9jYXRpb25VcGRhdGVzKG51bGwsIGNyaXRlcmlhLCAwTCwgMC4wZiwgdHJ1ZSwgbGlzdGVuZXIsIGxvb3Blcik7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVnaXN0ZXJzIHRoZSBjdXJyZW50IGFjdGl2aXR5IHRvIGJlIG5vdGlmaWVkIHBlcmlvZGljYWxseSBieQorICAgICAqIHRoZSBuYW1lZCBwcm92aWRlci4gIFBlcmlvZGljYWxseSwgdGhlIHN1cHBsaWVkIFBlbmRpbmdJbnRlbnQgd2lsbAorICAgICAqIGJlIGJyb2FkY2FzdCB3aXRoIHRoZSBjdXJyZW50IExvY2F0aW9uIG9yIHdpdGggc3RhdHVzIHVwZGF0ZXMuCisgICAgICoKKyAgICAgKiA8cD4gTG9jYXRpb24gdXBkYXRlcyBhcmUgc2VudCB3aXRoIGEga2V5IG9mIEtFWV9MT0NBVElPTl9DSEFOR0VEIGFuZCBhIExvY2F0aW9uIHZhbHVlLgorICAgICAqCisgICAgICogPHA+IEl0IG1heSB0YWtlIGEgd2hpbGUgdG8gcmVjZWl2ZSB0aGUgbW9zdCByZWNlbnQgbG9jYXRpb24uIElmCisgICAgICogYW4gaW1tZWRpYXRlIGxvY2F0aW9uIGlzIHJlcXVpcmVkLCBhcHBsaWNhdGlvbnMgbWF5IHVzZSB0aGUKKyAgICAgKiB7QGxpbmsgI2dldExhc3RLbm93bkxvY2F0aW9uKFN0cmluZyl9IG1ldGhvZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBwcm92aWRlciB0aGUgbmFtZSBvZiB0aGUgcHJvdmlkZXIgd2l0aCB3aGljaCB0byByZWdpc3RlcgorICAgICAqIEBwYXJhbSBpbnRlbnQgYSB7I2xpbmsgUGVuZGluZ0ludGVudH0gdG8gYmUgc2VudCBmb3IgdGhlIGxvY2F0aW9uIHVwZGF0ZQorICAgICAqCisgICAgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgcHJvdmlkZXIgaXMgbnVsbCBvciBkb2Vzbid0IGV4aXN0CisgICAgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24gaWYgaW50ZW50IGlzIG51bGwKKyAgICAgKiBAdGhyb3dzIFNlY3VyaXR5RXhjZXB0aW9uIGlmIG5vIHN1aXRhYmxlIHBlcm1pc3Npb24gaXMgcHJlc2VudCBmb3IgdGhlIHByb3ZpZGVyLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHJlcXVlc3RTaW5nbGVVcGRhdGUoU3RyaW5nIHByb3ZpZGVyLCBQZW5kaW5nSW50ZW50IGludGVudCkgeworICAgICAgICBpZiAocHJvdmlkZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigicHJvdmlkZXI9PW51bGwiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaW50ZW50ID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImludGVudD09bnVsbCIpOworICAgICAgICB9CisgICAgICAgIF9yZXF1ZXN0TG9jYXRpb25VcGRhdGVzKHByb3ZpZGVyLCBudWxsLCAwTCwgMC4wZiwgdHJ1ZSwgaW50ZW50KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZWdpc3RlcnMgdGhlIGN1cnJlbnQgYWN0aXZpdHkgdG8gYmUgbm90aWZpZWQgcGVyaW9kaWNhbGx5IGJhc2VkIG9uCisgICAgICogdGhlIHNwZWNpZmllZCBjcml0ZXJpYS4gIFBlcmlvZGljYWxseSwgdGhlIHN1cHBsaWVkIFBlbmRpbmdJbnRlbnQgd2lsbAorICAgICAqIGJlIGJyb2FkY2FzdCB3aXRoIHRoZSBjdXJyZW50IExvY2F0aW9uIG9yIHdpdGggc3RhdHVzIHVwZGF0ZXMuCisgICAgICoKKyAgICAgKiA8cD4gTG9jYXRpb24gdXBkYXRlcyBhcmUgc2VudCB3aXRoIGEga2V5IG9mIEtFWV9MT0NBVElPTl9DSEFOR0VEIGFuZCBhIExvY2F0aW9uIHZhbHVlLgorICAgICAqCisgICAgICogPHA+IEl0IG1heSB0YWtlIGEgd2hpbGUgdG8gcmVjZWl2ZSB0aGUgbW9zdCByZWNlbnQgbG9jYXRpb24uIElmCisgICAgICogYW4gaW1tZWRpYXRlIGxvY2F0aW9uIGlzIHJlcXVpcmVkLCBhcHBsaWNhdGlvbnMgbWF5IHVzZSB0aGUKKyAgICAgKiB7QGxpbmsgI2dldExhc3RLbm93bkxvY2F0aW9uKFN0cmluZyl9IG1ldGhvZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBjcml0ZXJpYSBjb250YWlucyBwYXJhbWV0ZXJzIGZvciB0aGUgbG9jYXRpb24gbWFuYWdlciB0byBjaG9vc2UgdGhlCisgICAgICogYXBwcm9wcmlhdGUgcHJvdmlkZXIgYW5kIHBhcmFtZXRlcnMgdG8gY29tcHV0ZSB0aGUgbG9jYXRpb24KKyAgICAgKiBAcGFyYW0gaW50ZW50IGEgeyNsaW5rIFBlbmRpbmdJbnRlbnR9IHRvIGJlIHNlbnQgZm9yIHRoZSBsb2NhdGlvbiB1cGRhdGUKKyAgICAgKgorICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIHByb3ZpZGVyIGlzIG51bGwgb3IgZG9lc24ndCBleGlzdAorICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIGlmIGludGVudCBpcyBudWxsCisgICAgICogQHRocm93cyBTZWN1cml0eUV4Y2VwdGlvbiBpZiBubyBzdWl0YWJsZSBwZXJtaXNzaW9uIGlzIHByZXNlbnQgZm9yIHRoZSBwcm92aWRlci4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCByZXF1ZXN0U2luZ2xlVXBkYXRlKENyaXRlcmlhIGNyaXRlcmlhLCBQZW5kaW5nSW50ZW50IGludGVudCkgeworICAgICAgICBpZiAoY3JpdGVyaWEgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiY3JpdGVyaWE9PW51bGwiKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaW50ZW50ID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImludGVudD09bnVsbCIpOworICAgICAgICB9CisgICAgICAgIF9yZXF1ZXN0TG9jYXRpb25VcGRhdGVzKG51bGwsIGNyaXRlcmlhLCAwTCwgMC4wZiwgdHJ1ZSwgaW50ZW50KTsKKyAgICB9CisKKyAgICAvKioKICAgICAgKiBSZW1vdmVzIGFueSBjdXJyZW50IHJlZ2lzdHJhdGlvbiBmb3IgbG9jYXRpb24gdXBkYXRlcyBvZiB0aGUgY3VycmVudCBhY3Rpdml0eQogICAgICAqIHdpdGggdGhlIGdpdmVuIExvY2F0aW9uTGlzdGVuZXIuICBGb2xsb3dpbmcgdGhpcyBjYWxsLCB1cGRhdGVzIHdpbGwgbm8gbG9uZ2VyCiAgICAgICogb2NjdXIgZm9yIHRoaXMgbGlzdGVuZXIuCmRpZmYgLS1naXQgYS9sb2NhdGlvbi9qYXZhL2FuZHJvaWQvbG9jYXRpb24vTG9jYXRpb25Qcm92aWRlci5qYXZhIGIvbG9jYXRpb24vamF2YS9hbmRyb2lkL2xvY2F0aW9uL0xvY2F0aW9uUHJvdmlkZXIuamF2YQppbmRleCBiYjNlMmE1Li44YzE2NTgwIDEwMDY0NAotLS0gYS9sb2NhdGlvbi9qYXZhL2FuZHJvaWQvbG9jYXRpb24vTG9jYXRpb25Qcm92aWRlci5qYXZhCisrKyBiL2xvY2F0aW9uL2phdmEvYW5kcm9pZC9sb2NhdGlvbi9Mb2NhdGlvblByb3ZpZGVyLmphdmEKQEAgLTE2LDYgKzE2LDkgQEAKIAogcGFja2FnZSBhbmRyb2lkLmxvY2F0aW9uOwogCitpbXBvcnQgYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb247CitpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKKwogLyoqCiAgKiBBbiBhYnN0cmFjdCBzdXBlcmNsYXNzIGZvciBsb2NhdGlvbiBwcm92aWRlcnMuICBBIGxvY2F0aW9uIHByb3ZpZGVyCiAgKiBwcm92aWRlcyBwZXJpb2RpYyByZXBvcnRzIG9uIHRoZSBnZW9ncmFwaGljYWwgbG9jYXRpb24gb2YgdGhlCkBAIC0zNiw3ICszOSw4IEBACiAgICAgLy8gaW4gdGhlIG5hbWUgb2YgYSBMb2NhdGlvblByb3ZpZGVyLgogICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQkFEX0NIQVJTX1JFR0VYID0gIlteYS16QS1aMC05XSI7CiAKLSAgICBwcml2YXRlIFN0cmluZyBtTmFtZTsKKyAgICBwcml2YXRlIGZpbmFsIFN0cmluZyBtTmFtZTsKKyAgICBwcml2YXRlIGZpbmFsIElMb2NhdGlvbk1hbmFnZXIgbVNlcnZpY2U7CiAKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBPVVRfT0ZfU0VSVklDRSA9IDA7CiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVEVNUE9SQVJJTFlfVU5BVkFJTEFCTEUgPSAxOwpAQCAtNTAsMTMgKzU0LDEzIEBACiAgICAgICoKICAgICAgKiB7QGhpZGV9CiAgICAgICovCi0gICAgcHVibGljIExvY2F0aW9uUHJvdmlkZXIoU3RyaW5nIG5hbWUpIHsKKyAgICBwdWJsaWMgTG9jYXRpb25Qcm92aWRlcihTdHJpbmcgbmFtZSwgSUxvY2F0aW9uTWFuYWdlciBzZXJ2aWNlKSB7CiAgICAgICAgIGlmIChuYW1lLm1hdGNoZXMoQkFEX0NIQVJTX1JFR0VYKSkgewogICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigibmFtZSAiICsgbmFtZSArCiAgICAgICAgICAgICAgICAgIiBjb250YWlucyBhbiBpbGxlZ2FsIGNoYXJhY3RlciIpOwogICAgICAgICB9Ci0gICAgICAgIC8vIExvZy5kKFRBRywgIkNvbnN0cnVjdG9yOiBuYW1lID0gIiArIG5hbWUpOwogICAgICAgICBtTmFtZSA9IG5hbWU7CisgICAgICAgIG1TZXJ2aWNlID0gc2VydmljZTsKICAgICB9CiAKICAgICAvKioKQEAgLTcxLDI5ICs3NSwxMiBAQAogICAgICAqIGZhbHNlIG90aGVyd2lzZS4KICAgICAgKi8KICAgICBwdWJsaWMgYm9vbGVhbiBtZWV0c0NyaXRlcmlhKENyaXRlcmlhIGNyaXRlcmlhKSB7Ci0gICAgICAgIC8vIFdlIGRvIG5vdCB3YW50IHRvIG1hdGNoIHRoZSBzcGVjaWFsIHBhc3NpdmUgcHJvdmlkZXIgYmFzZWQgb24gY3JpdGVyaWEuCi0gICAgICAgIGlmIChMb2NhdGlvbk1hbmFnZXIuUEFTU0lWRV9QUk9WSURFUi5lcXVhbHMobU5hbWUpKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gbVNlcnZpY2UucHJvdmlkZXJNZWV0c0NyaXRlcmlhKG1OYW1lLCBjcml0ZXJpYSk7CisgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBMb2cuZShUQUcsICJtZWV0c0NyaXRlcmlhOiBSZW1vdGVFeGNlcHRpb24iLCBlKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQotICAgICAgICBpZiAoKGNyaXRlcmlhLmdldEFjY3VyYWN5KCkgIT0gQ3JpdGVyaWEuTk9fUkVRVUlSRU1FTlQpICYmIAotICAgICAgICAgICAgKGNyaXRlcmlhLmdldEFjY3VyYWN5KCkgPCBnZXRBY2N1cmFjeSgpKSkgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGludCBjcml0ZXJpYVBvd2VyID0gY3JpdGVyaWEuZ2V0UG93ZXJSZXF1aXJlbWVudCgpOwotICAgICAgICBpZiAoKGNyaXRlcmlhUG93ZXIgIT0gQ3JpdGVyaWEuTk9fUkVRVUlSRU1FTlQpICYmCi0gICAgICAgICAgICAoY3JpdGVyaWFQb3dlciA8IGdldFBvd2VyUmVxdWlyZW1lbnQoKSkpIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBpZiAoY3JpdGVyaWEuaXNBbHRpdHVkZVJlcXVpcmVkKCkgJiYgIXN1cHBvcnRzQWx0aXR1ZGUoKSkgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIGlmIChjcml0ZXJpYS5pc1NwZWVkUmVxdWlyZWQoKSAmJiAhc3VwcG9ydHNTcGVlZCgpKSB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGNyaXRlcmlhLmlzQmVhcmluZ1JlcXVpcmVkKCkgJiYgIXN1cHBvcnRzQmVhcmluZygpKSB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgLyoqCmRpZmYgLS1naXQgYS9sb2NhdGlvbi9qYXZhL2FuZHJvaWQvbG9jYXRpb24vTG9jYXRpb25Qcm92aWRlckludGVyZmFjZS5qYXZhIGIvbG9jYXRpb24vamF2YS9hbmRyb2lkL2xvY2F0aW9uL0xvY2F0aW9uUHJvdmlkZXJJbnRlcmZhY2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWZmZTE1YzMuLjAwMDAwMDAKLS0tIGEvbG9jYXRpb24vamF2YS9hbmRyb2lkL2xvY2F0aW9uL0xvY2F0aW9uUHJvdmlkZXJJbnRlcmZhY2UuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi1wYWNrYWdlIGFuZHJvaWQubG9jYXRpb247Ci0KLWltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uOwotaW1wb3J0IGFuZHJvaWQubmV0Lk5ldHdvcmtJbmZvOwotaW1wb3J0IGFuZHJvaWQub3MuQnVuZGxlOwotCi0vKioKLSAqIExvY2F0aW9uIE1hbmFnZXIncyBpbnRlcmZhY2UgZm9yIGxvY2F0aW9uIHByb3ZpZGVycy4KLSAqCi0gKiB7QGhpZGV9Ci0gKi8KLXB1YmxpYyBpbnRlcmZhY2UgTG9jYXRpb25Qcm92aWRlckludGVyZmFjZSB7Ci0gICAgU3RyaW5nIGdldE5hbWUoKTsKLSAgICBib29sZWFuIHJlcXVpcmVzTmV0d29yaygpOwotICAgIGJvb2xlYW4gcmVxdWlyZXNTYXRlbGxpdGUoKTsKLSAgICBib29sZWFuIHJlcXVpcmVzQ2VsbCgpOwotICAgIGJvb2xlYW4gaGFzTW9uZXRhcnlDb3N0KCk7Ci0gICAgYm9vbGVhbiBzdXBwb3J0c0FsdGl0dWRlKCk7Ci0gICAgYm9vbGVhbiBzdXBwb3J0c1NwZWVkKCk7Ci0gICAgYm9vbGVhbiBzdXBwb3J0c0JlYXJpbmcoKTsKLSAgICBpbnQgZ2V0UG93ZXJSZXF1aXJlbWVudCgpOwotICAgIGludCBnZXRBY2N1cmFjeSgpOwotICAgIGJvb2xlYW4gaXNFbmFibGVkKCk7Ci0gICAgdm9pZCBlbmFibGUoKTsKLSAgICB2b2lkIGRpc2FibGUoKTsKLSAgICBpbnQgZ2V0U3RhdHVzKEJ1bmRsZSBleHRyYXMpOwotICAgIGxvbmcgZ2V0U3RhdHVzVXBkYXRlVGltZSgpOwotICAgIHZvaWQgZW5hYmxlTG9jYXRpb25UcmFja2luZyhib29sZWFuIGVuYWJsZSk7Ci0gICAgU3RyaW5nIGdldEludGVybmFsU3RhdGUoKTsKLSAgICB2b2lkIHNldE1pblRpbWUobG9uZyBtaW5UaW1lKTsKLSAgICB2b2lkIHVwZGF0ZU5ldHdvcmtTdGF0ZShpbnQgc3RhdGUsIE5ldHdvcmtJbmZvIGluZm8pOwotICAgIHZvaWQgdXBkYXRlTG9jYXRpb24oTG9jYXRpb24gbG9jYXRpb24pOwotICAgIGJvb2xlYW4gc2VuZEV4dHJhQ29tbWFuZChTdHJpbmcgY29tbWFuZCwgQnVuZGxlIGV4dHJhcyk7Ci0gICAgdm9pZCBhZGRMaXN0ZW5lcihpbnQgdWlkKTsKLSAgICB2b2lkIHJlbW92ZUxpc3RlbmVyKGludCB1aWQpOwotfQpkaWZmIC0tZ2l0IGEvbG9jYXRpb24vamF2YS9hbmRyb2lkL2xvY2F0aW9uL3Byb3ZpZGVyL0dlb2NvZGVQcm92aWRlci5qYXZhIGIvbG9jYXRpb24vamF2YS9hbmRyb2lkL2xvY2F0aW9uL3Byb3ZpZGVyL0dlb2NvZGVQcm92aWRlci5qYXZhCmluZGV4IDg2Mzc2YTcuLjlhNTg3NjMgMTAwNjQ0Ci0tLSBhL2xvY2F0aW9uL2phdmEvYW5kcm9pZC9sb2NhdGlvbi9wcm92aWRlci9HZW9jb2RlUHJvdmlkZXIuamF2YQorKysgYi9sb2NhdGlvbi9qYXZhL2FuZHJvaWQvbG9jYXRpb24vcHJvdmlkZXIvR2VvY29kZVByb3ZpZGVyLmphdmEKQEAgLTI5LDggKzI5LDYgQEAKICAqIG91dHNpZGUgb2YgdGhlIGNvcmUgYW5kcm9pZCBwbGF0Zm9ybS4KICAqIEdlb2NvZGUgcHJvdmlkZXJzIGNhbiBiZSBpbXBsZW1lbnRlZCBhcyBzZXJ2aWNlcyBhbmQgcmV0dXJuIHRoZSByZXN1bHQgb2YKICAqIHtAbGluayBHZW9jb2RlUHJvdmlkZXIjZ2V0QmluZGVyKCl9IGluIGl0cyBnZXRCaW5kZXIoKSBtZXRob2QuCi0gKgotICogQGhpZGUKICAqLwogcHVibGljIGFic3RyYWN0IGNsYXNzIEdlb2NvZGVQcm92aWRlciB7CiAKQEAgLTUzLDcgKzUxLDcgQEAKIAogICAgIC8qKgogICAgICAqIFRoaXMgbWV0aG9kIGlzIG92ZXJyaWRkZW4gdG8gaW1wbGVtZW50IHRoZQotICAgICAqIHtAbGluayBHZW9jb2RlciNnZXRGcm9tTG9jYXRpb24oZG91YmxlLCBkb3VibGUsIGludCl9IG1ldGhvZC4KKyAgICAgKiB7QGxpbmsgYW5kcm9pZC5sb2NhdGlvbi5HZW9jb2RlciNnZXRGcm9tTG9jYXRpb24oZG91YmxlLCBkb3VibGUsIGludCl9IG1ldGhvZC4KICAgICAgKiBDbGFzc2VzIGltcGxlbWVudGluZyB0aGlzIG1ldGhvZCBzaG91bGQgbm90IGhvbGQgYSByZWZlcmVuY2UgdG8gdGhlIHBhcmFtcyBwYXJhbWV0ZXIuCiAgICAgICovCiAgICAgcHVibGljIGFic3RyYWN0IFN0cmluZyBvbkdldEZyb21Mb2NhdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGludCBtYXhSZXN1bHRzLApAQCAtNjEsNyArNTksNyBAQAogCiAgICAgLyoqCiAgICAgICogVGhpcyBtZXRob2QgaXMgb3ZlcnJpZGRlbiB0byBpbXBsZW1lbnQgdGhlCi0gICAgICoge0BsaW5rIEdlb2NvZGVyI2dldEZyb21Mb2NhdGlvbk5hbWUoU3RyaW5nLCBpbnQsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUsIGRvdWJsZSl9IG1ldGhvZC4KKyAgICAgKiB7QGxpbmsgYW5kcm9pZC5sb2NhdGlvbi5HZW9jb2RlciNnZXRGcm9tTG9jYXRpb25OYW1lKFN0cmluZywgaW50LCBkb3VibGUsIGRvdWJsZSwgZG91YmxlLCBkb3VibGUpfSBtZXRob2QuCiAgICAgICogQ2xhc3NlcyBpbXBsZW1lbnRpbmcgdGhpcyBtZXRob2Qgc2hvdWxkIG5vdCBob2xkIGEgcmVmZXJlbmNlIHRvIHRoZSBwYXJhbXMgcGFyYW1ldGVyLgogICAgICAqLwogICAgIHB1YmxpYyBhYnN0cmFjdCBTdHJpbmcgb25HZXRGcm9tTG9jYXRpb25OYW1lKFN0cmluZyBsb2NhdGlvbk5hbWUsCmRpZmYgLS1naXQgYS9sb2NhdGlvbi9qYXZhL2FuZHJvaWQvbG9jYXRpb24vcHJvdmlkZXIvTG9jYXRpb25Qcm92aWRlci5qYXZhIGIvbG9jYXRpb24vamF2YS9hbmRyb2lkL2xvY2F0aW9uL3Byb3ZpZGVyL0xvY2F0aW9uUHJvdmlkZXIuamF2YQppbmRleCA1NmNmYjMzLi5jZjkzOWRlIDEwMDY0NAotLS0gYS9sb2NhdGlvbi9qYXZhL2FuZHJvaWQvbG9jYXRpb24vcHJvdmlkZXIvTG9jYXRpb25Qcm92aWRlci5qYXZhCisrKyBiL2xvY2F0aW9uL2phdmEvYW5kcm9pZC9sb2NhdGlvbi9wcm92aWRlci9Mb2NhdGlvblByb3ZpZGVyLmphdmEKQEAgLTE4LDYgKzE4LDcgQEAKIAogaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OwogaW1wb3J0IGFuZHJvaWQubmV0Lk5ldHdvcmtJbmZvOworaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uQ3JpdGVyaWE7CiBpbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5JTG9jYXRpb25NYW5hZ2VyOwogaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uSUxvY2F0aW9uUHJvdmlkZXI7CiBpbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5Mb2NhdGlvbjsKQEAgLTMyLDggKzMzLDYgQEAKICAqIG91dHNpZGUgb2YgdGhlIGNvcmUgYW5kcm9pZCBwbGF0Zm9ybS4KICAqIExvY2F0aW9uIHByb3ZpZGVycyBjYW4gYmUgaW1wbGVtZW50ZWQgYXMgc2VydmljZXMgYW5kIHJldHVybiB0aGUgcmVzdWx0IG9mCiAgKiB7QGxpbmsgTG9jYXRpb25Qcm92aWRlciNnZXRCaW5kZXIoKX0gaW4gaXRzIGdldEJpbmRlcigpIG1ldGhvZC4KLSAqCi0gKiBAaGlkZQogICovCiBwdWJsaWMgYWJzdHJhY3QgY2xhc3MgTG9jYXRpb25Qcm92aWRlciB7CiAKQEAgLTc1LDYgKzc0LDEwIEBACiAgICAgICAgICAgICByZXR1cm4gTG9jYXRpb25Qcm92aWRlci50aGlzLm9uR2V0UG93ZXJSZXF1aXJlbWVudCgpOwogICAgICAgICB9CiAKKyAgICAgICAgcHVibGljIGJvb2xlYW4gbWVldHNDcml0ZXJpYShDcml0ZXJpYSBjcml0ZXJpYSkgeworICAgICAgICAgICAgcmV0dXJuIExvY2F0aW9uUHJvdmlkZXIudGhpcy5vbk1lZXRzQ3JpdGVyaWEoY3JpdGVyaWEpOworICAgICAgICB9CisKICAgICAgICAgcHVibGljIGludCBnZXRBY2N1cmFjeSgpIHsKICAgICAgICAgICAgIHJldHVybiBMb2NhdGlvblByb3ZpZGVyLnRoaXMub25HZXRBY2N1cmFjeSgpOwogICAgICAgICB9CkBAIC0yMjYsNiArMjI5LDEyIEBACiAgICAgcHVibGljIGFic3RyYWN0IGludCBvbkdldFBvd2VyUmVxdWlyZW1lbnQoKTsKIAogICAgIC8qKgorICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGlzIHByb3ZpZGVyIG1lZXRzIHRoZSBnaXZlbiBjcml0ZXJpYSwKKyAgICAgKiBmYWxzZSBvdGhlcndpc2UuCisgICAgICovCisgICAgcHVibGljIGFic3RyYWN0IGJvb2xlYW4gb25NZWV0c0NyaXRlcmlhKENyaXRlcmlhIGNyaXRlcmlhKTsKKworICAgIC8qKgogICAgICAqIFJldHVybnMgYSBjb25zdGFudCBkZXNjcmliaW5nIGhvcml6b250YWwgYWNjdXJhY3kgb2YgdGhpcyBwcm92aWRlci4KICAgICAgKiBJZiB0aGUgcHJvdmlkZXIgcmV0dXJucyBmaW5lciBncmFpbiBvciBleGFjdCBsb2NhdGlvbiwKICAgICAgKiB7QGxpbmsgQ3JpdGVyaWEjQUNDVVJBQ1lfRklORX0gaXMgcmV0dXJuZWQsIG90aGVyd2lzZSBpZiB0aGUKQEAgLTI0NiwxMSArMjU1LDExIEBACiAKICAgICAvKioKICAgICAgKiBSZXR1cm5zIGEgaW5mb3JtYXRpb24gb24gdGhlIHN0YXR1cyBvZiB0aGlzIHByb3ZpZGVyLgotICAgICAqIHtAbGluayAjT1VUX09GX1NFUlZJQ0V9IGlzIHJldHVybmVkIGlmIHRoZSBwcm92aWRlciBpcworICAgICAqIHtAbGluayBhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uUHJvdmlkZXIjT1VUX09GX1NFUlZJQ0V9IGlzIHJldHVybmVkIGlmIHRoZSBwcm92aWRlciBpcwogICAgICAqIG91dCBvZiBzZXJ2aWNlLCBhbmQgdGhpcyBpcyBub3QgZXhwZWN0ZWQgdG8gY2hhbmdlIGluIHRoZSBuZWFyCi0gICAgICogZnV0dXJlOyB7QGxpbmsgI1RFTVBPUkFSSUxZX1VOQVZBSUxBQkxFfSBpcyByZXR1cm5lZCBpZgorICAgICAqIGZ1dHVyZTsge0BsaW5rIGFuZHJvaWQubG9jYXRpb24uTG9jYXRpb25Qcm92aWRlciNURU1QT1JBUklMWV9VTkFWQUlMQUJMRX0gaXMgcmV0dXJuZWQgaWYKICAgICAgKiB0aGUgcHJvdmlkZXIgaXMgdGVtcG9yYXJpbHkgdW5hdmFpbGFibGUgYnV0IGlzIGV4cGVjdGVkIHRvIGJlCi0gICAgICogYXZhaWxhYmxlIHNob3J0bHk7IGFuZCB7QGxpbmsgI0FWQUlMQUJMRX0gaXMgcmV0dXJuZWQKKyAgICAgKiBhdmFpbGFibGUgc2hvcnRseTsgYW5kIHtAbGluayBhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uUHJvdmlkZXIjQVZBSUxBQkxFfSBpcyByZXR1cm5lZAogICAgICAqIGlmIHRoZSBwcm92aWRlciBpcyBjdXJyZW50bHkgYXZhaWxhYmxlLgogICAgICAqCiAgICAgICogPHA+IElmIGV4dHJhcyBpcyBub24tbnVsbCwgYWRkaXRpb25hbCBzdGF0dXMgaW5mb3JtYXRpb24gbWF5IGJlCkBAIC0yOTksOSArMzA4LDkgQEAKIAogICAgIC8qKgogICAgICAqIFVwZGF0ZXMgdGhlIG5ldHdvcmsgc3RhdGUgZm9yIHRoZSBnaXZlbiBwcm92aWRlci4gVGhpcyBmdW5jdGlvbiBtdXN0Ci0gICAgICogYmUgb3ZlcndyaXR0ZW4gaWYge0BsaW5rICNyZXF1aXJlc05ldHdvcmt9IHJldHVybnMgdHJ1ZS4gVGhlIHN0YXRlIGlzCi0gICAgICoge0BsaW5rICNURU1QT1JBUklMWV9VTkFWQUlMQUJMRX0gKGRpc2Nvbm5lY3RlZCksIE9SIHtAbGluayAjQVZBSUxBQkxFfQotICAgICAqIChjb25uZWN0ZWQgb3IgY29ubmVjdGluZykuCisgICAgICogYmUgb3ZlcndyaXR0ZW4gaWYge0BsaW5rIGFuZHJvaWQubG9jYXRpb24uTG9jYXRpb25Qcm92aWRlciNyZXF1aXJlc05ldHdvcmt9IHJldHVybnMgdHJ1ZS4KKyAgICAgKiBUaGUgc3RhdGUgaXMge0BsaW5rIGFuZHJvaWQubG9jYXRpb24uTG9jYXRpb25Qcm92aWRlciNURU1QT1JBUklMWV9VTkFWQUlMQUJMRX0gKGRpc2Nvbm5lY3RlZCkKKyAgICAgKiBPUiB7QGxpbmsgYW5kcm9pZC5sb2NhdGlvbi5Mb2NhdGlvblByb3ZpZGVyI0FWQUlMQUJMRX0gKGNvbm5lY3RlZCBvciBjb25uZWN0aW5nKS4KICAgICAgKgogICAgICAqIEBwYXJhbSBzdGF0ZSBkYXRhIHN0YXRlCiAgICAgICovCmRpZmYgLS1naXQgYS9sb2NhdGlvbi9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL2xvY2F0aW9uL0R1bW15TG9jYXRpb25Qcm92aWRlci5qYXZhIGIvbG9jYXRpb24vamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9sb2NhdGlvbi9EdW1teUxvY2F0aW9uUHJvdmlkZXIuamF2YQppbmRleCBmZjVlMjdiLi5lN2I1MTQzIDEwMDY0NAotLS0gYS9sb2NhdGlvbi9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL2xvY2F0aW9uL0R1bW15TG9jYXRpb25Qcm92aWRlci5qYXZhCisrKyBiL2xvY2F0aW9uL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvbG9jYXRpb24vRHVtbXlMb2NhdGlvblByb3ZpZGVyLmphdmEKQEAgLTE2LDYgKzE2LDcgQEAKIAogcGFja2FnZSBjb20uYW5kcm9pZC5pbnRlcm5hbC5sb2NhdGlvbjsKIAoraW1wb3J0IGFuZHJvaWQubG9jYXRpb24uSUxvY2F0aW9uTWFuYWdlcjsKIGltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uUHJvdmlkZXI7CiAKIC8qKgpAQCAtNDEsOCArNDIsOCBAQAogICAgIGludCBtUG93ZXJSZXF1aXJlbWVudDsKICAgICBpbnQgbUFjY3VyYWN5OwogCi0gICAgcHVibGljIER1bW15TG9jYXRpb25Qcm92aWRlcihTdHJpbmcgbmFtZSkgewotICAgICAgICBzdXBlcihuYW1lKTsKKyAgICBwdWJsaWMgRHVtbXlMb2NhdGlvblByb3ZpZGVyKFN0cmluZyBuYW1lLCBJTG9jYXRpb25NYW5hZ2VyIHNlcnZpY2UpIHsKKyAgICAgICAgc3VwZXIobmFtZSwgc2VydmljZSk7CiAgICAgfQogCiAgICAgcHVibGljIHZvaWQgc2V0UmVxdWlyZXNOZXR3b3JrKGJvb2xlYW4gcmVxdWlyZXNOZXR3b3JrKSB7CmRpZmYgLS1naXQgYS9sb2NhdGlvbi9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL2xvY2F0aW9uL0dlb2NvZGVyUHJveHkuamF2YSBiL2xvY2F0aW9uL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvbG9jYXRpb24vR2VvY29kZXJQcm94eS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMDYyOTdiLi4wMDAwMDAwCi0tLSBhL2xvY2F0aW9uL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvbG9jYXRpb24vR2VvY29kZXJQcm94eS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi1wYWNrYWdlIGNvbS5hbmRyb2lkLmludGVybmFsLmxvY2F0aW9uOwotCi1pbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbXBvbmVudE5hbWU7Ci1pbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7Ci1pbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQuU2VydmljZUNvbm5lY3Rpb247Ci1pbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5BZGRyZXNzOwotaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uR2VvY29kZXJQYXJhbXM7Ci1pbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5JR2VvY29kZVByb3ZpZGVyOwotaW1wb3J0IGFuZHJvaWQub3MuSUJpbmRlcjsKLWltcG9ydCBhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbjsKLWltcG9ydCBhbmRyb2lkLm9zLlN5c3RlbUNsb2NrOwotaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7Ci0KLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotLyoqCi0gKiBBIGNsYXNzIGZvciBwcm94eWluZyBJR2VvY29kZVByb3ZpZGVyIGltcGxlbWVudGF0aW9ucy4KLSAqCi0gKiB7QGhpZGV9Ci0gKi8KLXB1YmxpYyBjbGFzcyBHZW9jb2RlclByb3h5IHsKLQotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSAiR2VvY29kZXJQcm94eSI7Ci0KLSAgICBwcml2YXRlIGZpbmFsIENvbnRleHQgbUNvbnRleHQ7Ci0gICAgcHJpdmF0ZSBmaW5hbCBJbnRlbnQgbUludGVudDsKLSAgICBwcml2YXRlIGZpbmFsIENvbm5lY3Rpb24gbVNlcnZpY2VDb25uZWN0aW9uID0gbmV3IENvbm5lY3Rpb24oKTsKLSAgICBwcml2YXRlIElHZW9jb2RlUHJvdmlkZXIgbVByb3ZpZGVyOwotCi0gICAgcHVibGljIEdlb2NvZGVyUHJveHkoQ29udGV4dCBjb250ZXh0LCBTdHJpbmcgc2VydmljZU5hbWUpIHsKLSAgICAgICAgbUNvbnRleHQgPSBjb250ZXh0OwotICAgICAgICBtSW50ZW50ID0gbmV3IEludGVudChzZXJ2aWNlTmFtZSk7Ci0gICAgICAgIG1Db250ZXh0LmJpbmRTZXJ2aWNlKG1JbnRlbnQsIG1TZXJ2aWNlQ29ubmVjdGlvbiwgQ29udGV4dC5CSU5EX0FVVE9fQ1JFQVRFKTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIGNsYXNzIENvbm5lY3Rpb24gaW1wbGVtZW50cyBTZXJ2aWNlQ29ubmVjdGlvbiB7Ci0gICAgICAgIHB1YmxpYyB2b2lkIG9uU2VydmljZUNvbm5lY3RlZChDb21wb25lbnROYW1lIGNsYXNzTmFtZSwgSUJpbmRlciBzZXJ2aWNlKSB7Ci0gICAgICAgICAgICBMb2cuZChUQUcsICJvblNlcnZpY2VDb25uZWN0ZWQgIiArIGNsYXNzTmFtZSk7Ci0gICAgICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKLSAgICAgICAgICAgICAgICBtUHJvdmlkZXIgPSBJR2VvY29kZVByb3ZpZGVyLlN0dWIuYXNJbnRlcmZhY2Uoc2VydmljZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgdm9pZCBvblNlcnZpY2VEaXNjb25uZWN0ZWQoQ29tcG9uZW50TmFtZSBjbGFzc05hbWUpIHsKLSAgICAgICAgICAgIExvZy5kKFRBRywgIm9uU2VydmljZURpc2Nvbm5lY3RlZCAiICsgY2xhc3NOYW1lKTsKLSAgICAgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgewotICAgICAgICAgICAgICAgIG1Qcm92aWRlciA9IG51bGw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldEZyb21Mb2NhdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGludCBtYXhSZXN1bHRzLAotICAgICAgICAgICAgR2VvY29kZXJQYXJhbXMgcGFyYW1zLCBMaXN0PEFkZHJlc3M+IGFkZHJzKSB7Ci0gICAgICAgIElHZW9jb2RlUHJvdmlkZXIgcHJvdmlkZXI7Ci0gICAgICAgIHN5bmNocm9uaXplZCAobVNlcnZpY2VDb25uZWN0aW9uKSB7Ci0gICAgICAgICAgICBwcm92aWRlciA9IG1Qcm92aWRlcjsKLSAgICAgICAgfQotICAgICAgICBpZiAocHJvdmlkZXIgIT0gbnVsbCkgewotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gcHJvdmlkZXIuZ2V0RnJvbUxvY2F0aW9uKGxhdGl0dWRlLCBsb25naXR1ZGUsIG1heFJlc3VsdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMsIGFkZHJzKTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgTG9nLmUoVEFHLCAiZ2V0RnJvbUxvY2F0aW9uIGZhaWxlZCIsIGUpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAiU2VydmljZSBub3QgQXZhaWxhYmxlIjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldEZyb21Mb2NhdGlvbk5hbWUoU3RyaW5nIGxvY2F0aW9uTmFtZSwKLSAgICAgICAgICAgIGRvdWJsZSBsb3dlckxlZnRMYXRpdHVkZSwgZG91YmxlIGxvd2VyTGVmdExvbmdpdHVkZSwKLSAgICAgICAgICAgIGRvdWJsZSB1cHBlclJpZ2h0TGF0aXR1ZGUsIGRvdWJsZSB1cHBlclJpZ2h0TG9uZ2l0dWRlLCBpbnQgbWF4UmVzdWx0cywKLSAgICAgICAgICAgIEdlb2NvZGVyUGFyYW1zIHBhcmFtcywgTGlzdDxBZGRyZXNzPiBhZGRycykgewotICAgICAgICBJR2VvY29kZVByb3ZpZGVyIHByb3ZpZGVyOwotICAgICAgICBzeW5jaHJvbml6ZWQgKG1TZXJ2aWNlQ29ubmVjdGlvbikgewotICAgICAgICAgICAgcHJvdmlkZXIgPSBtUHJvdmlkZXI7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHByb3ZpZGVyICE9IG51bGwpIHsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHByb3ZpZGVyLmdldEZyb21Mb2NhdGlvbk5hbWUobG9jYXRpb25OYW1lLCBsb3dlckxlZnRMYXRpdHVkZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvd2VyTGVmdExvbmdpdHVkZSwgdXBwZXJSaWdodExhdGl0dWRlLCB1cHBlclJpZ2h0TG9uZ2l0dWRlLAotICAgICAgICAgICAgICAgICAgICAgICAgbWF4UmVzdWx0cywgcGFyYW1zLCBhZGRycyk7Ci0gICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgIExvZy5lKFRBRywgImdldEZyb21Mb2NhdGlvbk5hbWUgZmFpbGVkIiwgZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuICJTZXJ2aWNlIG5vdCBBdmFpbGFibGUiOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL2xvY2F0aW9uL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvbG9jYXRpb24vR3BzTG9jYXRpb25Qcm92aWRlci5qYXZhIGIvbG9jYXRpb24vamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9sb2NhdGlvbi9HcHNMb2NhdGlvblByb3ZpZGVyLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDE1ZDY5MmMuLjAwMDAwMDAKLS0tIGEvbG9jYXRpb24vamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9sb2NhdGlvbi9HcHNMb2NhdGlvblByb3ZpZGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNDcxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi1wYWNrYWdlIGNvbS5hbmRyb2lkLmludGVybmFsLmxvY2F0aW9uOwotCi1pbXBvcnQgYW5kcm9pZC5hcHAuQWxhcm1NYW5hZ2VyOwotaW1wb3J0IGFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQ7Ci1pbXBvcnQgYW5kcm9pZC5jb250ZW50LkJyb2FkY2FzdFJlY2VpdmVyOwotaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OwotaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnQ7Ci1pbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudEZpbHRlcjsKLWltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLkNyaXRlcmlhOwotaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uSUdwc1N0YXR1c0xpc3RlbmVyOwotaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uSUdwc1N0YXR1c1Byb3ZpZGVyOwotaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uSUxvY2F0aW9uTWFuYWdlcjsKLWltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLklOZXRJbml0aWF0ZWRMaXN0ZW5lcjsKLWltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uOwotaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uTG9jYXRpb25NYW5hZ2VyOwotaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uTG9jYXRpb25Qcm92aWRlcjsKLWltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uUHJvdmlkZXJJbnRlcmZhY2U7Ci1pbXBvcnQgYW5kcm9pZC5uZXQuQ29ubmVjdGl2aXR5TWFuYWdlcjsKLWltcG9ydCBhbmRyb2lkLm5ldC5OZXR3b3JrSW5mbzsKLWltcG9ydCBhbmRyb2lkLm5ldC5TbnRwQ2xpZW50OwotaW1wb3J0IGFuZHJvaWQub3MuQnVuZGxlOwotaW1wb3J0IGFuZHJvaWQub3MuSGFuZGxlcjsKLWltcG9ydCBhbmRyb2lkLm9zLklCaW5kZXI7Ci1pbXBvcnQgYW5kcm9pZC5vcy5Mb29wZXI7Ci1pbXBvcnQgYW5kcm9pZC5vcy5NZXNzYWdlOwotaW1wb3J0IGFuZHJvaWQub3MuUG93ZXJNYW5hZ2VyOwotaW1wb3J0IGFuZHJvaWQub3MuUHJvY2VzczsKLWltcG9ydCBhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbjsKLWltcG9ydCBhbmRyb2lkLm9zLlNlcnZpY2VNYW5hZ2VyOwotaW1wb3J0IGFuZHJvaWQub3MuU3lzdGVtQ2xvY2s7Ci1pbXBvcnQgYW5kcm9pZC5wcm92aWRlci5TZXR0aW5nczsKLWltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOwotaW1wb3J0IGFuZHJvaWQudXRpbC5TcGFyc2VJbnRBcnJheTsKLQotaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLmFwcC5JQmF0dGVyeVN0YXRzOwotaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5QaG9uZTsKLWltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5sb2NhdGlvbi5HcHNOZXRJbml0aWF0ZWRIYW5kbGVyOwotaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLmxvY2F0aW9uLkdwc05ldEluaXRpYXRlZEhhbmRsZXIuR3BzTmlOb3RpZmljYXRpb247Ci0KLWltcG9ydCBqYXZhLmlvLkZpbGU7Ci1pbXBvcnQgamF2YS5pby5GaWxlSW5wdXRTdHJlYW07Ci1pbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKLWltcG9ydCBqYXZhLmlvLlN0cmluZ0J1ZmZlcklucHV0U3RyZWFtOwotaW1wb3J0IGphdmEubmV0LkluZXRBZGRyZXNzOwotaW1wb3J0IGphdmEubmV0LlVua25vd25Ib3N0RXhjZXB0aW9uOwotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkRhdGU7Ci1pbXBvcnQgamF2YS51dGlsLlByb3BlcnRpZXM7Ci1pbXBvcnQgamF2YS51dGlsLk1hcC5FbnRyeTsKLWltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5Db3VudERvd25MYXRjaDsKLQotLyoqCi0gKiBBIEdQUyBpbXBsZW1lbnRhdGlvbiBvZiBMb2NhdGlvblByb3ZpZGVyIHVzZWQgYnkgTG9jYXRpb25NYW5hZ2VyLgotICoKLSAqIHtAaGlkZX0KLSAqLwotcHVibGljIGNsYXNzIEdwc0xvY2F0aW9uUHJvdmlkZXIgaW1wbGVtZW50cyBMb2NhdGlvblByb3ZpZGVySW50ZXJmYWNlIHsKLQotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSAiR3BzTG9jYXRpb25Qcm92aWRlciI7Ci0KLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIERFQlVHID0gZmFsc2U7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBWRVJCT1NFID0gZmFsc2U7Ci0KLSAgICAvKioKLSAgICAgKiBCcm9hZGNhc3QgaW50ZW50IGFjdGlvbiBpbmRpY2F0aW5nIHRoYXQgdGhlIEdQUyBoYXMgZWl0aGVyIGJlZW4KLSAgICAgKiBlbmFibGVkIG9yIGRpc2FibGVkLiBBbiBpbnRlbnQgZXh0cmEgcHJvdmlkZXMgdGhpcyBzdGF0ZSBhcyBhIGJvb2xlYW4sCi0gICAgICogd2hlcmUge0Bjb2RlIHRydWV9IG1lYW5zIGVuYWJsZWQuCi0gICAgICogQHNlZSAjRVhUUkFfRU5BQkxFRAotICAgICAqCi0gICAgICoge0BoaWRlfQotICAgICAqLwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEdQU19FTkFCTEVEX0NIQU5HRV9BQ1RJT04gPQotICAgICAgICAiYW5kcm9pZC5sb2NhdGlvbi5HUFNfRU5BQkxFRF9DSEFOR0UiOwotCi0gICAgLyoqCi0gICAgICogQnJvYWRjYXN0IGludGVudCBhY3Rpb24gaW5kaWNhdGluZyB0aGF0IHRoZSBHUFMgaGFzIGVpdGhlciBzdGFydGVkIG9yCi0gICAgICogc3RvcHBlZCByZWNlaXZpbmcgR1BTIGZpeGVzLiBBbiBpbnRlbnQgZXh0cmEgcHJvdmlkZXMgdGhpcyBzdGF0ZSBhcyBhCi0gICAgICogYm9vbGVhbiwgd2hlcmUge0Bjb2RlIHRydWV9IG1lYW5zIHRoYXQgdGhlIEdQUyBpcyBhY3RpdmVseSByZWNlaXZpbmcgZml4ZXMuCi0gICAgICogQHNlZSAjRVhUUkFfRU5BQkxFRAotICAgICAqCi0gICAgICoge0BoaWRlfQotICAgICAqLwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEdQU19GSVhfQ0hBTkdFX0FDVElPTiA9Ci0gICAgICAgICJhbmRyb2lkLmxvY2F0aW9uLkdQU19GSVhfQ0hBTkdFIjsKLQotICAgIC8qKgotICAgICAqIFRoZSBsb29rdXAga2V5IGZvciBhIGJvb2xlYW4gdGhhdCBpbmRpY2F0ZXMgd2hldGhlciBHUFMgaXMgZW5hYmxlZCBvcgotICAgICAqIGRpc2FibGVkLiB7QGNvZGUgdHJ1ZX0gbWVhbnMgR1BTIGlzIGVuYWJsZWQuIFJldHJpZXZlIGl0IHdpdGgKLSAgICAgKiB7QGxpbmsgYW5kcm9pZC5jb250ZW50LkludGVudCNnZXRCb29sZWFuRXh0cmEoU3RyaW5nLGJvb2xlYW4pfS4KLSAgICAgKgotICAgICAqIHtAaGlkZX0KLSAgICAgKi8KLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFWFRSQV9FTkFCTEVEID0gImVuYWJsZWQiOwotCi0gICAgLy8gdGhlc2UgbmVlZCB0byBtYXRjaCBHcHNQb3NpdGlvbk1vZGUgZW51bSBpbiBncHMuaAotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBHUFNfUE9TSVRJT05fTU9ERV9TVEFOREFMT05FID0gMDsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgR1BTX1BPU0lUSU9OX01PREVfTVNfQkFTRUQgPSAxOwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBHUFNfUE9TSVRJT05fTU9ERV9NU19BU1NJU1RFRCA9IDI7Ci0KLSAgICAvLyB0aGVzZSBuZWVkIHRvIG1hdGNoIEdwc1N0YXR1c1ZhbHVlIGRlZmluZXMgaW4gZ3BzLmgKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgR1BTX1NUQVRVU19OT05FID0gMDsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgR1BTX1NUQVRVU19TRVNTSU9OX0JFR0lOID0gMTsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgR1BTX1NUQVRVU19TRVNTSU9OX0VORCA9IDI7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEdQU19TVEFUVVNfRU5HSU5FX09OID0gMzsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgR1BTX1NUQVRVU19FTkdJTkVfT0ZGID0gNDsKLQotICAgIC8vIHRoZXNlIG5lZWQgdG8gbWF0Y2ggR3BzQXBnc1N0YXR1c1ZhbHVlIGRlZmluZXMgaW4gZ3BzLmgKLSAgICAvKiogQUdQUyBzdGF0dXMgZXZlbnQgdmFsdWVzLiAqLwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBHUFNfUkVRVUVTVF9BR1BTX0RBVEFfQ09OTiA9IDE7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEdQU19SRUxFQVNFX0FHUFNfREFUQV9DT05OID0gMjsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgR1BTX0FHUFNfREFUQV9DT05ORUNURUQgPSAzOwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBHUFNfQUdQU19EQVRBX0NPTk5fRE9ORSA9IDQ7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEdQU19BR1BTX0RBVEFfQ09OTl9GQUlMRUQgPSA1OwotCi0gICAgLy8gdGhlc2UgbmVlZCB0byBtYXRjaCBHcHNMb2NhdGlvbkZsYWdzIGVudW0gaW4gZ3BzLmgKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTE9DQVRJT05fSU5WQUxJRCA9IDA7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExPQ0FUSU9OX0hBU19MQVRfTE9ORyA9IDE7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExPQ0FUSU9OX0hBU19BTFRJVFVERSA9IDI7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExPQ0FUSU9OX0hBU19TUEVFRCA9IDQ7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExPQ0FUSU9OX0hBU19CRUFSSU5HID0gODsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTE9DQVRJT05fSEFTX0FDQ1VSQUNZID0gMTY7Ci0KLS8vIElNUE9SVEFOVCAtIHRoZSBHUFNfREVMRVRFXyogc3ltYm9scyBoZXJlIG11c3QgbWF0Y2ggY29uc3RhbnRzIGluIGdwcy5oCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEdQU19ERUxFVEVfRVBIRU1FUklTID0gMHgwMDAxOwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBHUFNfREVMRVRFX0FMTUFOQUMgPSAweDAwMDI7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEdQU19ERUxFVEVfUE9TSVRJT04gPSAweDAwMDQ7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEdQU19ERUxFVEVfVElNRSA9IDB4MDAwODsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgR1BTX0RFTEVURV9JT05PID0gMHgwMDEwOwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBHUFNfREVMRVRFX1VUQyA9IDB4MDAyMDsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgR1BTX0RFTEVURV9IRUFMVEggPSAweDAwNDA7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEdQU19ERUxFVEVfU1ZESVIgPSAweDAwODA7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEdQU19ERUxFVEVfU1ZTVEVFUiA9IDB4MDEwMDsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgR1BTX0RFTEVURV9TQURBVEEgPSAweDAyMDA7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEdQU19ERUxFVEVfUlRJID0gMHgwNDAwOwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBHUFNfREVMRVRFX0NFTExEQl9JTkZPID0gMHg4MDAwOwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBHUFNfREVMRVRFX0FMTCA9IDB4RkZGRjsKLQotICAgIC8vIHRoZXNlIG5lZWQgdG8gbWF0Y2ggQUdwc1R5cGUgZW51bSBpbiBncHMuaAotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBBR1BTX1RZUEVfU1VQTCA9IDE7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEFHUFNfVFlQRV9DMksgPSAyOwotCi0gICAgLy8gZm9yIG1BR3BzRGF0YUNvbm5lY3Rpb25TdGF0ZQotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBBR1BTX0RBVEFfQ09OTkVDVElPTl9DTE9TRUQgPSAwOwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBBR1BTX0RBVEFfQ09OTkVDVElPTl9PUEVOSU5HID0gMTsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQUdQU19EQVRBX0NPTk5FQ1RJT05fT1BFTiA9IDI7Ci0KLSAgICAvLyBIYW5kbGVyIG1lc3NhZ2VzCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENIRUNLX0xPQ0FUSU9OID0gMTsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRU5BQkxFID0gMjsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRU5BQkxFX1RSQUNLSU5HID0gMzsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgVVBEQVRFX05FVFdPUktfU1RBVEUgPSA0OwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBJTkpFQ1RfTlRQX1RJTUUgPSA1OwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBET1dOTE9BRF9YVFJBX0RBVEEgPSA2OwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBVUERBVEVfTE9DQVRJT04gPSA3OwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBBRERfTElTVEVORVIgPSA4OwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBSRU1PVkVfTElTVEVORVIgPSA5OwotCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFBST1BFUlRJRVNfRklMRSA9ICIvZXRjL2dwcy5jb25mIjsKLQotICAgIHByaXZhdGUgaW50IG1Mb2NhdGlvbkZsYWdzID0gTE9DQVRJT05fSU5WQUxJRDsKLQotICAgIC8vIGN1cnJlbnQgc3RhdHVzCi0gICAgcHJpdmF0ZSBpbnQgbVN0YXR1cyA9IExvY2F0aW9uUHJvdmlkZXIuVEVNUE9SQVJJTFlfVU5BVkFJTEFCTEU7Ci0KLSAgICAvLyB0aW1lIGZvciBsYXN0IHN0YXR1cyB1cGRhdGUKLSAgICBwcml2YXRlIGxvbmcgbVN0YXR1c1VwZGF0ZVRpbWUgPSBTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKTsKLSAgICAKLSAgICAvLyB0dXJuIG9mZiBHUFMgZml4IGljb24gaWYgd2UgaGF2ZW4ndCByZWNlaXZlZCBhIGZpeCBpbiAxMCBzZWNvbmRzCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBSRUNFTlRfRklYX1RJTUVPVVQgPSAxMDsKLSAgICAKLSAgICAvLyBudW1iZXIgb2YgZml4ZXMgdG8gcmVjZWl2ZSBiZWZvcmUgZGlzYWJsaW5nIEdQUwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNSU5fRklYX0NPVU5UID0gMTA7Ci0KLSAgICAvLyBzdG9wIHRyeWluZyBpZiB3ZSBkbyBub3QgcmVjZWl2ZSBhIGZpeCB3aXRoaW4gNjAgc2Vjb25kcwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBOT19GSVhfVElNRU9VVCA9IDYwOwotCi0gICAgLy8gdHJ1ZSBpZiB3ZSBhcmUgZW5hYmxlZAotICAgIHByaXZhdGUgdm9sYXRpbGUgYm9vbGVhbiBtRW5hYmxlZDsKLSAgICAKLSAgICAvLyB0cnVlIGlmIHdlIGhhdmUgbmV0d29yayBjb25uZWN0aXZpdHkKLSAgICBwcml2YXRlIGJvb2xlYW4gbU5ldHdvcmtBdmFpbGFibGU7Ci0KLSAgICAvLyBmbGFncyB0byB0cmlnZ2VyIE5UUCBvciBYVFJBIGRhdGEgZG93bmxvYWQgd2hlbiBuZXR3b3JrIGJlY29tZXMgYXZhaWxhYmxlCi0gICAgLy8gaW5pdGlhbGl6ZWQgdG8gdHJ1ZSBzbyB3ZSBkbyBOVFAgYW5kIFhUUkEgd2hlbiB0aGUgbmV0d29yayBjb21lcyB1cCBhZnRlciBib290aW5nCi0gICAgcHJpdmF0ZSBib29sZWFuIG1JbmplY3ROdHBUaW1lUGVuZGluZyA9IHRydWU7Ci0gICAgcHJpdmF0ZSBib29sZWFuIG1Eb3dubG9hZFh0cmFEYXRhUGVuZGluZyA9IHRydWU7Ci0KLSAgICAvLyB0cnVlIGlmIEdQUyBpcyBuYXZpZ2F0aW5nCi0gICAgcHJpdmF0ZSBib29sZWFuIG1OYXZpZ2F0aW5nOwotCi0gICAgLy8gdHJ1ZSBpZiBHUFMgZW5naW5lIGlzIG9uCi0gICAgcHJpdmF0ZSBib29sZWFuIG1FbmdpbmVPbjsKLSAgICAKLSAgICAvLyByZXF1ZXN0ZWQgZnJlcXVlbmN5IG9mIGZpeGVzLCBpbiBzZWNvbmRzCi0gICAgcHJpdmF0ZSBpbnQgbUZpeEludGVydmFsID0gMTsKLQotICAgIC8vIG51bWJlciBvZiBmaXhlcyB3ZSBoYXZlIHJlY2VpdmVkIHNpbmNlIHdlIHN0YXJ0ZWQgbmF2aWdhdGluZwotICAgIHByaXZhdGUgaW50IG1GaXhDb3VudDsKLQotICAgIC8vIHRydWUgaWYgd2Ugc3RhcnRlZCBuYXZpZ2F0aW9uCi0gICAgcHJpdmF0ZSBib29sZWFuIG1TdGFydGVkOwotCi0gICAgLy8gZm9yIGNhbGN1bGF0aW5nIHRpbWUgdG8gZmlyc3QgZml4Ci0gICAgcHJpdmF0ZSBsb25nIG1GaXhSZXF1ZXN0VGltZSA9IDA7Ci0gICAgLy8gdGltZSB0byBmaXJzdCBmaXggZm9yIG1vc3QgcmVjZW50IHNlc3Npb24KLSAgICBwcml2YXRlIGludCBtVFRGRiA9IDA7Ci0gICAgLy8gdGltZSB3ZSByZWNlaXZlZCBvdXIgbGFzdCBmaXgKLSAgICBwcml2YXRlIGxvbmcgbUxhc3RGaXhUaW1lOwotCi0gICAgLy8gcHJvcGVydGllcyBsb2FkZWQgZnJvbSBQUk9QRVJUSUVTX0ZJTEUKLSAgICBwcml2YXRlIFByb3BlcnRpZXMgbVByb3BlcnRpZXM7Ci0gICAgcHJpdmF0ZSBTdHJpbmcgbU50cFNlcnZlcjsKLSAgICBwcml2YXRlIFN0cmluZyBtU3VwbFNlcnZlckhvc3Q7Ci0gICAgcHJpdmF0ZSBpbnQgbVN1cGxTZXJ2ZXJQb3J0OwotICAgIHByaXZhdGUgU3RyaW5nIG1DMktTZXJ2ZXJIb3N0OwotICAgIHByaXZhdGUgaW50IG1DMktTZXJ2ZXJQb3J0OwotCi0gICAgcHJpdmF0ZSBmaW5hbCBDb250ZXh0IG1Db250ZXh0OwotICAgIHByaXZhdGUgZmluYWwgSUxvY2F0aW9uTWFuYWdlciBtTG9jYXRpb25NYW5hZ2VyOwotICAgIHByaXZhdGUgTG9jYXRpb24gbUxvY2F0aW9uID0gbmV3IExvY2F0aW9uKExvY2F0aW9uTWFuYWdlci5HUFNfUFJPVklERVIpOwotICAgIHByaXZhdGUgQnVuZGxlIG1Mb2NhdGlvbkV4dHJhcyA9IG5ldyBCdW5kbGUoKTsKLSAgICBwcml2YXRlIEFycmF5TGlzdDxMaXN0ZW5lcj4gbUxpc3RlbmVycyA9IG5ldyBBcnJheUxpc3Q8TGlzdGVuZXI+KCk7Ci0KLSAgICAvLyBHcHNMb2NhdGlvblByb3ZpZGVyJ3MgaGFuZGxlciB0aHJlYWQKLSAgICBwcml2YXRlIGZpbmFsIFRocmVhZCBtVGhyZWFkOwotICAgIC8vIEhhbmRsZXIgZm9yIHByb2Nlc3NpbmcgZXZlbnRzIGluIG1UaHJlYWQuCi0gICAgcHJpdmF0ZSBIYW5kbGVyIG1IYW5kbGVyOwotICAgIC8vIFVzZWQgdG8gc2lnbmFsIHdoZW4gb3VyIG1haW4gdGhyZWFkIGhhcyBpbml0aWFsaXplZCBldmVyeXRoaW5nCi0gICAgcHJpdmF0ZSBmaW5hbCBDb3VudERvd25MYXRjaCBtSW5pdGlhbGl6ZWRMYXRjaCA9IG5ldyBDb3VudERvd25MYXRjaCgxKTsKLSAgICAvLyBUaHJlYWQgZm9yIHJlY2VpdmluZyBldmVudHMgZnJvbSB0aGUgbmF0aXZlIGNvZGUKLSAgICBwcml2YXRlIFRocmVhZCBtRXZlbnRUaHJlYWQ7Ci0KLSAgICBwcml2YXRlIFN0cmluZyBtQUdwc0FwbjsKLSAgICBwcml2YXRlIGludCBtQUdwc0RhdGFDb25uZWN0aW9uU3RhdGU7Ci0gICAgcHJpdmF0ZSBmaW5hbCBDb25uZWN0aXZpdHlNYW5hZ2VyIG1Db25uTWdyOwotICAgIHByaXZhdGUgZmluYWwgR3BzTmV0SW5pdGlhdGVkSGFuZGxlciBtTklIYW5kbGVyOyAKLQotICAgIC8vIFdha2Vsb2NrcwotICAgIHByaXZhdGUgZmluYWwgc3RhdGljIFN0cmluZyBXQUtFTE9DS19LRVkgPSAiR3BzTG9jYXRpb25Qcm92aWRlciI7Ci0gICAgcHJpdmF0ZSBmaW5hbCBQb3dlck1hbmFnZXIuV2FrZUxvY2sgbVdha2VMb2NrOwotCi0gICAgLy8gQWxhcm1zCi0gICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgU3RyaW5nIEFMQVJNX1dBS0VVUCA9ICJjb20uYW5kcm9pZC5pbnRlcm5hbC5sb2NhdGlvbi5BTEFSTV9XQUtFVVAiOwotICAgIHByaXZhdGUgZmluYWwgc3RhdGljIFN0cmluZyBBTEFSTV9USU1FT1VUID0gImNvbS5hbmRyb2lkLmludGVybmFsLmxvY2F0aW9uLkFMQVJNX1RJTUVPVVQiOwotICAgIHByaXZhdGUgZmluYWwgQWxhcm1NYW5hZ2VyIG1BbGFybU1hbmFnZXI7Ci0gICAgcHJpdmF0ZSBmaW5hbCBQZW5kaW5nSW50ZW50IG1XYWtldXBJbnRlbnQ7Ci0gICAgcHJpdmF0ZSBmaW5hbCBQZW5kaW5nSW50ZW50IG1UaW1lb3V0SW50ZW50OwotCi0gICAgcHJpdmF0ZSBmaW5hbCBJQmF0dGVyeVN0YXRzIG1CYXR0ZXJ5U3RhdHM7Ci0gICAgcHJpdmF0ZSBmaW5hbCBTcGFyc2VJbnRBcnJheSBtQ2xpZW50VWlkcyA9IG5ldyBTcGFyc2VJbnRBcnJheSgpOwotCi0gICAgLy8gaG93IG9mdGVuIHRvIHJlcXVlc3QgTlRQIHRpbWUsIGluIG1pbGxpc2Vjb25kcwotICAgIC8vIGN1cnJlbnQgc2V0dGluZyA0IGhvdXJzCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBOVFBfSU5URVJWQUwgPSA0KjYwKjYwKjEwMDA7Ci0gICAgLy8gaG93IGxvbmcgdG8gd2FpdCBpZiB3ZSBoYXZlIGEgbmV0d29yayBlcnJvciBpbiBOVFAgb3IgWFRSQSBkb3dubG9hZGluZwotICAgIC8vIGN1cnJlbnQgc2V0dGluZyAtIDUgbWludXRlcwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgUkVUUllfSU5URVJWQUwgPSA1KjYwKjEwMDA7Ci0KLSAgICAvLyB0byBhdm9pZCBpbmplY3RpbmcgYmFkIE5UUCB0aW1lLCB3ZSByZWplY3QgYW55IHRpbWUgZml4ZXMgdGhhdCBkaWZmZXIgZnJvbSBzeXN0ZW0gdGltZQotICAgIC8vIGJ5IG1vcmUgdGhhbiA1IG1pbnV0ZXMuCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBNQVhfTlRQX1NZU1RFTV9USU1FX09GRlNFVCA9IDUqNjAqMTAwMDsKLQotICAgIHByaXZhdGUgZmluYWwgSUdwc1N0YXR1c1Byb3ZpZGVyIG1HcHNTdGF0dXNQcm92aWRlciA9IG5ldyBJR3BzU3RhdHVzUHJvdmlkZXIuU3R1YigpIHsKLSAgICAgICAgcHVibGljIHZvaWQgYWRkR3BzU3RhdHVzTGlzdGVuZXIoSUdwc1N0YXR1c0xpc3RlbmVyIGxpc3RlbmVyKSB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKLSAgICAgICAgICAgIGlmIChsaXN0ZW5lciA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3cgbmV3IE51bGxQb2ludGVyRXhjZXB0aW9uKCJsaXN0ZW5lciBpcyBudWxsIGluIGFkZEdwc1N0YXR1c0xpc3RlbmVyIik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHN5bmNocm9uaXplZChtTGlzdGVuZXJzKSB7Ci0gICAgICAgICAgICAgICAgSUJpbmRlciBiaW5kZXIgPSBsaXN0ZW5lci5hc0JpbmRlcigpOwotICAgICAgICAgICAgICAgIGludCBzaXplID0gbUxpc3RlbmVycy5zaXplKCk7Ci0gICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgTGlzdGVuZXIgdGVzdCA9IG1MaXN0ZW5lcnMuZ2V0KGkpOwotICAgICAgICAgICAgICAgICAgICBpZiAoYmluZGVyLmVxdWFscyh0ZXN0Lm1MaXN0ZW5lci5hc0JpbmRlcigpKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGlzdGVuZXIgYWxyZWFkeSBhZGRlZAotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgTGlzdGVuZXIgbCA9IG5ldyBMaXN0ZW5lcihsaXN0ZW5lcik7Ci0gICAgICAgICAgICAgICAgYmluZGVyLmxpbmtUb0RlYXRoKGwsIDApOwotICAgICAgICAgICAgICAgIG1MaXN0ZW5lcnMuYWRkKGwpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIHZvaWQgcmVtb3ZlR3BzU3RhdHVzTGlzdGVuZXIoSUdwc1N0YXR1c0xpc3RlbmVyIGxpc3RlbmVyKSB7Ci0gICAgICAgICAgICBpZiAobGlzdGVuZXIgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigibGlzdGVuZXIgaXMgbnVsbCBpbiBhZGRHcHNTdGF0dXNMaXN0ZW5lciIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBzeW5jaHJvbml6ZWQobUxpc3RlbmVycykgewotICAgICAgICAgICAgICAgIElCaW5kZXIgYmluZGVyID0gbGlzdGVuZXIuYXNCaW5kZXIoKTsKLSAgICAgICAgICAgICAgICBMaXN0ZW5lciBsID0gbnVsbDsKLSAgICAgICAgICAgICAgICBpbnQgc2l6ZSA9IG1MaXN0ZW5lcnMuc2l6ZSgpOwotICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZSAmJiBsID09IG51bGw7IGkrKykgewotICAgICAgICAgICAgICAgICAgICBMaXN0ZW5lciB0ZXN0ID0gbUxpc3RlbmVycy5nZXQoaSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChiaW5kZXIuZXF1YWxzKHRlc3QubUxpc3RlbmVyLmFzQmluZGVyKCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsID0gdGVzdDsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmIChsICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgbUxpc3RlbmVycy5yZW1vdmUobCk7Ci0gICAgICAgICAgICAgICAgICAgIGJpbmRlci51bmxpbmtUb0RlYXRoKGwsIDApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH07Ci0KLSAgICBwdWJsaWMgSUdwc1N0YXR1c1Byb3ZpZGVyIGdldEdwc1N0YXR1c1Byb3ZpZGVyKCkgewotICAgICAgICByZXR1cm4gbUdwc1N0YXR1c1Byb3ZpZGVyOwotICAgIH0KLQotICAgIHByaXZhdGUgZmluYWwgQnJvYWRjYXN0UmVjZWl2ZXIgbUJyb2FkY2FzdFJlY2lldmVyID0gbmV3IEJyb2FkY2FzdFJlY2VpdmVyKCkgewotICAgICAgICBAT3ZlcnJpZGUgcHVibGljIHZvaWQgb25SZWNlaXZlKENvbnRleHQgY29udGV4dCwgSW50ZW50IGludGVudCkgewotICAgICAgICAgICAgU3RyaW5nIGFjdGlvbiA9IGludGVudC5nZXRBY3Rpb24oKTsKLQotICAgICAgICAgICAgaWYgKGFjdGlvbi5lcXVhbHMoQUxBUk1fV0FLRVVQKSkgewotICAgICAgICAgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAiQUxBUk1fV0FLRVVQIik7Ci0gICAgICAgICAgICAgICAgc3RhcnROYXZpZ2F0aW5nKCk7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbi5lcXVhbHMoQUxBUk1fVElNRU9VVCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgIkFMQVJNX1RJTUVPVVQiKTsKLSAgICAgICAgICAgICAgICBoaWJlcm5hdGUoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH07Ci0KLSAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNTdXBwb3J0ZWQoKSB7Ci0gICAgICAgIHJldHVybiBuYXRpdmVfaXNfc3VwcG9ydGVkKCk7Ci0gICAgfQotCi0gICAgcHVibGljIEdwc0xvY2F0aW9uUHJvdmlkZXIoQ29udGV4dCBjb250ZXh0LCBJTG9jYXRpb25NYW5hZ2VyIGxvY2F0aW9uTWFuYWdlcikgewotICAgICAgICBtQ29udGV4dCA9IGNvbnRleHQ7Ci0gICAgICAgIG1Mb2NhdGlvbk1hbmFnZXIgPSBsb2NhdGlvbk1hbmFnZXI7Ci0gICAgICAgIG1OSUhhbmRsZXIgPSBuZXcgR3BzTmV0SW5pdGlhdGVkSGFuZGxlcihjb250ZXh0LCB0aGlzKTsKLQotICAgICAgICBtTG9jYXRpb24uc2V0RXh0cmFzKG1Mb2NhdGlvbkV4dHJhcyk7Ci0KLSAgICAgICAgLy8gQ3JlYXRlIGEgd2FrZSBsb2NrCi0gICAgICAgIFBvd2VyTWFuYWdlciBwb3dlck1hbmFnZXIgPSAoUG93ZXJNYW5hZ2VyKSBtQ29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuUE9XRVJfU0VSVklDRSk7Ci0gICAgICAgIG1XYWtlTG9jayA9IHBvd2VyTWFuYWdlci5uZXdXYWtlTG9jayhQb3dlck1hbmFnZXIuUEFSVElBTF9XQUtFX0xPQ0ssIFdBS0VMT0NLX0tFWSk7Ci0KLSAgICAgICAgbUFsYXJtTWFuYWdlciA9IChBbGFybU1hbmFnZXIpbUNvbnRleHQuZ2V0U3lzdGVtU2VydmljZShDb250ZXh0LkFMQVJNX1NFUlZJQ0UpOwotICAgICAgICBtV2FrZXVwSW50ZW50ID0gUGVuZGluZ0ludGVudC5nZXRCcm9hZGNhc3QobUNvbnRleHQsIDAsIG5ldyBJbnRlbnQoQUxBUk1fV0FLRVVQKSwgMCk7Ci0gICAgICAgIG1UaW1lb3V0SW50ZW50ID0gUGVuZGluZ0ludGVudC5nZXRCcm9hZGNhc3QobUNvbnRleHQsIDAsIG5ldyBJbnRlbnQoQUxBUk1fVElNRU9VVCksIDApOwotCi0gICAgICAgIG1Db25uTWdyID0gKENvbm5lY3Rpdml0eU1hbmFnZXIpY29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuQ09OTkVDVElWSVRZX1NFUlZJQ0UpOwotCi0gICAgICAgIC8vIEJhdHRlcnkgc3RhdGlzdGljcyBzZXJ2aWNlIHRvIGJlIG5vdGlmaWVkIHdoZW4gR1BTIHR1cm5zIG9uIG9yIG9mZgotICAgICAgICBtQmF0dGVyeVN0YXRzID0gSUJhdHRlcnlTdGF0cy5TdHViLmFzSW50ZXJmYWNlKFNlcnZpY2VNYW5hZ2VyLmdldFNlcnZpY2UoImJhdHRlcnlpbmZvIikpOwotCi0gICAgICAgIG1Qcm9wZXJ0aWVzID0gbmV3IFByb3BlcnRpZXMoKTsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIEZpbGUgZmlsZSA9IG5ldyBGaWxlKFBST1BFUlRJRVNfRklMRSk7Ci0gICAgICAgICAgICBGaWxlSW5wdXRTdHJlYW0gc3RyZWFtID0gbmV3IEZpbGVJbnB1dFN0cmVhbShmaWxlKTsKLSAgICAgICAgICAgIG1Qcm9wZXJ0aWVzLmxvYWQoc3RyZWFtKTsKLSAgICAgICAgICAgIHN0cmVhbS5jbG9zZSgpOwotICAgICAgICAgICAgbU50cFNlcnZlciA9IG1Qcm9wZXJ0aWVzLmdldFByb3BlcnR5KCJOVFBfU0VSVkVSIiwgbnVsbCk7Ci0KLSAgICAgICAgICAgIG1TdXBsU2VydmVySG9zdCA9IG1Qcm9wZXJ0aWVzLmdldFByb3BlcnR5KCJTVVBMX0hPU1QiKTsKLSAgICAgICAgICAgIFN0cmluZyBwb3J0U3RyaW5nID0gbVByb3BlcnRpZXMuZ2V0UHJvcGVydHkoIlNVUExfUE9SVCIpOwotICAgICAgICAgICAgaWYgKG1TdXBsU2VydmVySG9zdCAhPSBudWxsICYmIHBvcnRTdHJpbmcgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIG1TdXBsU2VydmVyUG9ydCA9IEludGVnZXIucGFyc2VJbnQocG9ydFN0cmluZyk7Ci0gICAgICAgICAgICAgICAgfSBjYXRjaCAoTnVtYmVyRm9ybWF0RXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICAgICAgTG9nLmUoVEFHLCAidW5hYmxlIHRvIHBhcnNlIFNVUExfUE9SVDogIiArIHBvcnRTdHJpbmcpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbUMyS1NlcnZlckhvc3QgPSBtUHJvcGVydGllcy5nZXRQcm9wZXJ0eSgiQzJLX0hPU1QiKTsKLSAgICAgICAgICAgIHBvcnRTdHJpbmcgPSBtUHJvcGVydGllcy5nZXRQcm9wZXJ0eSgiQzJLX1BPUlQiKTsKLSAgICAgICAgICAgIGlmIChtQzJLU2VydmVySG9zdCAhPSBudWxsICYmIHBvcnRTdHJpbmcgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIG1DMktTZXJ2ZXJQb3J0ID0gSW50ZWdlci5wYXJzZUludChwb3J0U3RyaW5nKTsKLSAgICAgICAgICAgICAgICB9IGNhdGNoIChOdW1iZXJGb3JtYXRFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgICAgICBMb2cuZShUQUcsICJ1bmFibGUgdG8gcGFyc2UgQzJLX1BPUlQ6ICIgKyBwb3J0U3RyaW5nKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgIExvZy53KFRBRywgIkNvdWxkIG5vdCBvcGVuIEdQUyBjb25maWd1cmF0aW9uIGZpbGUgIiArIFBST1BFUlRJRVNfRklMRSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyB3YWl0IHVudGlsIHdlIGFyZSBmdWxseSBpbml0aWFsaXplZCBiZWZvcmUgcmV0dXJuaW5nCi0gICAgICAgIG1UaHJlYWQgPSBuZXcgR3BzTG9jYXRpb25Qcm92aWRlclRocmVhZCgpOwotICAgICAgICBtVGhyZWFkLnN0YXJ0KCk7Ci0gICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIG1Jbml0aWFsaXplZExhdGNoLmF3YWl0KCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9IGNhdGNoIChJbnRlcnJ1cHRlZEV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgVGhyZWFkLmN1cnJlbnRUaHJlYWQoKS5pbnRlcnJ1cHQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHByaXZhdGUgdm9pZCBpbml0aWFsaXplKCkgewotICAgICAgICAvLyByZWdpc3RlciBvdXIgcmVjZWl2ZXIgb24gb3VyIHRocmVhZCByYXRoZXIgdGhhbiB0aGUgbWFpbiB0aHJlYWQKLSAgICAgICAgSW50ZW50RmlsdGVyIGludGVudEZpbHRlciA9IG5ldyBJbnRlbnRGaWx0ZXIoKTsKLSAgICAgICAgaW50ZW50RmlsdGVyLmFkZEFjdGlvbihBTEFSTV9XQUtFVVApOwotICAgICAgICBpbnRlbnRGaWx0ZXIuYWRkQWN0aW9uKEFMQVJNX1RJTUVPVVQpOwotICAgICAgICBtQ29udGV4dC5yZWdpc3RlclJlY2VpdmVyKG1Ccm9hZGNhc3RSZWNpZXZlciwgaW50ZW50RmlsdGVyKTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBSZXR1cm5zIHRoZSBuYW1lIG9mIHRoaXMgcHJvdmlkZXIuCi0gICAgICovCi0gICAgcHVibGljIFN0cmluZyBnZXROYW1lKCkgewotICAgICAgICByZXR1cm4gTG9jYXRpb25NYW5hZ2VyLkdQU19QUk9WSURFUjsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHByb3ZpZGVyIHJlcXVpcmVzIGFjY2VzcyB0byBhCi0gICAgICogZGF0YSBuZXR3b3JrIChlLmcuLCB0aGUgSW50ZXJuZXQpLCBmYWxzZSBvdGhlcndpc2UuCi0gICAgICovCi0gICAgcHVibGljIGJvb2xlYW4gcmVxdWlyZXNOZXR3b3JrKCkgewotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCB1cGRhdGVOZXR3b3JrU3RhdGUoaW50IHN0YXRlLCBOZXR3b3JrSW5mbyBpbmZvKSB7Ci0gICAgICAgIG1IYW5kbGVyLnJlbW92ZU1lc3NhZ2VzKFVQREFURV9ORVRXT1JLX1NUQVRFKTsKLSAgICAgICAgTWVzc2FnZSBtID0gTWVzc2FnZS5vYnRhaW4obUhhbmRsZXIsIFVQREFURV9ORVRXT1JLX1NUQVRFKTsKLSAgICAgICAgbS5hcmcxID0gc3RhdGU7Ci0gICAgICAgIG0ub2JqID0gaW5mbzsKLSAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2UobSk7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSB2b2lkIGhhbmRsZVVwZGF0ZU5ldHdvcmtTdGF0ZShpbnQgc3RhdGUsIE5ldHdvcmtJbmZvIGluZm8pIHsKLSAgICAgICAgbU5ldHdvcmtBdmFpbGFibGUgPSAoc3RhdGUgPT0gTG9jYXRpb25Qcm92aWRlci5BVkFJTEFCTEUpOwotCi0gICAgICAgIGlmIChERUJVRykgewotICAgICAgICAgICAgTG9nLmQoVEFHLCAidXBkYXRlTmV0d29ya1N0YXRlICIgKyAobU5ldHdvcmtBdmFpbGFibGUgPyAiYXZhaWxhYmxlIiA6ICJ1bmF2YWlsYWJsZSIpCi0gICAgICAgICAgICAgICAgKyAiIGluZm86ICIgKyBpbmZvKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChpbmZvICE9IG51bGwgJiYgaW5mby5nZXRUeXBlKCkgPT0gQ29ubmVjdGl2aXR5TWFuYWdlci5UWVBFX01PQklMRV9TVVBMCi0gICAgICAgICAgICAgICAgJiYgbUFHcHNEYXRhQ29ubmVjdGlvblN0YXRlID09IEFHUFNfREFUQV9DT05ORUNUSU9OX09QRU5JTkcpIHsKLSAgICAgICAgICAgIFN0cmluZyBhcG5OYW1lID0gaW5mby5nZXRFeHRyYUluZm8oKTsKLSAgICAgICAgICAgIGlmIChtTmV0d29ya0F2YWlsYWJsZSAmJiBhcG5OYW1lICE9IG51bGwgJiYgYXBuTmFtZS5sZW5ndGgoKSA+IDApIHsKLSAgICAgICAgICAgICAgICBtQUdwc0FwbiA9IGFwbk5hbWU7Ci0gICAgICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJjYWxsIG5hdGl2ZV9hZ3BzX2RhdGFfY29ubl9vcGVuIik7Ci0gICAgICAgICAgICAgICAgbmF0aXZlX2FncHNfZGF0YV9jb25uX29wZW4oYXBuTmFtZSk7Ci0gICAgICAgICAgICAgICAgbUFHcHNEYXRhQ29ubmVjdGlvblN0YXRlID0gQUdQU19EQVRBX0NPTk5FQ1RJT05fT1BFTjsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJjYWxsIG5hdGl2ZV9hZ3BzX2RhdGFfY29ubl9mYWlsZWQiKTsKLSAgICAgICAgICAgICAgICBtQUdwc0FwbiA9IG51bGw7Ci0gICAgICAgICAgICAgICAgbUFHcHNEYXRhQ29ubmVjdGlvblN0YXRlID0gQUdQU19EQVRBX0NPTk5FQ1RJT05fQ0xPU0VEOwotICAgICAgICAgICAgICAgIG5hdGl2ZV9hZ3BzX2RhdGFfY29ubl9mYWlsZWQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmIChtTmV0d29ya0F2YWlsYWJsZSkgewotICAgICAgICAgICAgaWYgKG1JbmplY3ROdHBUaW1lUGVuZGluZykgewotICAgICAgICAgICAgICAgIG1IYW5kbGVyLnJlbW92ZU1lc3NhZ2VzKElOSkVDVF9OVFBfVElNRSk7Ci0gICAgICAgICAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2UoTWVzc2FnZS5vYnRhaW4obUhhbmRsZXIsIElOSkVDVF9OVFBfVElNRSkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG1Eb3dubG9hZFh0cmFEYXRhUGVuZGluZykgewotICAgICAgICAgICAgICAgIG1IYW5kbGVyLnJlbW92ZU1lc3NhZ2VzKERPV05MT0FEX1hUUkFfREFUQSk7Ci0gICAgICAgICAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2UoTWVzc2FnZS5vYnRhaW4obUhhbmRsZXIsIERPV05MT0FEX1hUUkFfREFUQSkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSB2b2lkIGhhbmRsZUluamVjdE50cFRpbWUoKSB7Ci0gICAgICAgIGlmICghbU5ldHdvcmtBdmFpbGFibGUpIHsKLSAgICAgICAgICAgIC8vIHRyeSBhZ2FpbiB3aGVuIG5ldHdvcmsgaXMgdXAKLSAgICAgICAgICAgIG1JbmplY3ROdHBUaW1lUGVuZGluZyA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgbUluamVjdE50cFRpbWVQZW5kaW5nID0gZmFsc2U7Ci0KLSAgICAgICAgU250cENsaWVudCBjbGllbnQgPSBuZXcgU250cENsaWVudCgpOwotICAgICAgICBsb25nIGRlbGF5OwotCi0gICAgICAgIGlmIChjbGllbnQucmVxdWVzdFRpbWUobU50cFNlcnZlciwgMTAwMDApKSB7Ci0gICAgICAgICAgICBsb25nIHRpbWUgPSBjbGllbnQuZ2V0TnRwVGltZSgpOwotICAgICAgICAgICAgbG9uZyB0aW1lUmVmZXJlbmNlID0gY2xpZW50LmdldE50cFRpbWVSZWZlcmVuY2UoKTsKLSAgICAgICAgICAgIGludCBjZXJ0YWludHkgPSAoaW50KShjbGllbnQuZ2V0Um91bmRUcmlwVGltZSgpLzIpOwotICAgICAgICAgICAgbG9uZyBub3cgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKLSAgICAgICAgICAgIGxvbmcgc3lzdGVtVGltZU9mZnNldCA9IHRpbWUgLSBub3c7Ci0KLSAgICAgICAgICAgIExvZy5kKFRBRywgIk5UUCBzZXJ2ZXIgcmV0dXJuZWQ6ICIKLSAgICAgICAgICAgICAgICAgICAgKyB0aW1lICsgIiAoIiArIG5ldyBEYXRlKHRpbWUpCi0gICAgICAgICAgICAgICAgICAgICsgIikgcmVmZXJlbmNlOiAiICsgdGltZVJlZmVyZW5jZQotICAgICAgICAgICAgICAgICAgICArICIgY2VydGFpbnR5OiAiICsgY2VydGFpbnR5Ci0gICAgICAgICAgICAgICAgICAgICsgIiBzeXN0ZW0gdGltZSBvZmZzZXQ6ICIgKyBzeXN0ZW1UaW1lT2Zmc2V0KTsKLQotICAgICAgICAgICAgLy8gc2FuaXR5IGNoZWNrIE5UUCB0aW1lIGFuZCBkbyBub3QgdXNlIGlmIGl0IGlzIHRvbyBmYXIgZnJvbSBzeXN0ZW0gdGltZQotICAgICAgICAgICAgaWYgKHN5c3RlbVRpbWVPZmZzZXQgPCAwKSB7Ci0gICAgICAgICAgICAgICAgc3lzdGVtVGltZU9mZnNldCA9IC1zeXN0ZW1UaW1lT2Zmc2V0OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHN5c3RlbVRpbWVPZmZzZXQgPCBNQVhfTlRQX1NZU1RFTV9USU1FX09GRlNFVCkgewotICAgICAgICAgICAgICAgIG5hdGl2ZV9pbmplY3RfdGltZSh0aW1lLCB0aW1lUmVmZXJlbmNlLCBjZXJ0YWludHkpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBMb2cuZShUQUcsICJOVFAgdGltZSBkaWZmZXJzIGZyb20gc3lzdGVtIHRpbWUgYnkgIiArIHN5c3RlbVRpbWVPZmZzZXQKLSAgICAgICAgICAgICAgICAgICAgICAgICsgIm1zLiAgSWdub3JpbmcuIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBkZWxheSA9IE5UUF9JTlRFUlZBTDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAicmVxdWVzdFRpbWUgZmFpbGVkIik7Ci0gICAgICAgICAgICBkZWxheSA9IFJFVFJZX0lOVEVSVkFMOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gc2VuZCBkZWxheWVkIG1lc3NhZ2UgZm9yIG5leHQgTlRQIGluamVjdGlvbgotICAgICAgICBtSGFuZGxlci5yZW1vdmVNZXNzYWdlcyhJTkpFQ1RfTlRQX1RJTUUpOwotICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZURlbGF5ZWQoTWVzc2FnZS5vYnRhaW4obUhhbmRsZXIsIElOSkVDVF9OVFBfVElNRSksIGRlbGF5KTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIHZvaWQgaGFuZGxlRG93bmxvYWRYdHJhRGF0YSgpIHsKLSAgICAgICAgaWYgKCFtRG93bmxvYWRYdHJhRGF0YVBlbmRpbmcpIHsKLSAgICAgICAgICAgIC8vIHRyeSBhZ2FpbiB3aGVuIG5ldHdvcmsgaXMgdXAKLSAgICAgICAgICAgIG1Eb3dubG9hZFh0cmFEYXRhUGVuZGluZyA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgbURvd25sb2FkWHRyYURhdGFQZW5kaW5nID0gZmFsc2U7Ci0KLQotICAgICAgICBHcHNYdHJhRG93bmxvYWRlciB4dHJhRG93bmxvYWRlciA9IG5ldyBHcHNYdHJhRG93bmxvYWRlcihtQ29udGV4dCwgbVByb3BlcnRpZXMpOwotICAgICAgICBieXRlW10gZGF0YSA9IHh0cmFEb3dubG9hZGVyLmRvd25sb2FkWHRyYURhdGEoKTsKLSAgICAgICAgaWYgKGRhdGEgIT0gbnVsbCkgewotICAgICAgICAgICAgaWYgKERFQlVHKSB7Ci0gICAgICAgICAgICAgICAgTG9nLmQoVEFHLCAiY2FsbGluZyBuYXRpdmVfaW5qZWN0X3h0cmFfZGF0YSIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbmF0aXZlX2luamVjdF94dHJhX2RhdGEoZGF0YSwgZGF0YS5sZW5ndGgpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gdHJ5IGFnYWluIGxhdGVyCi0gICAgICAgICAgICBtSGFuZGxlci5yZW1vdmVNZXNzYWdlcyhET1dOTE9BRF9YVFJBX0RBVEEpOwotICAgICAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2VEZWxheWVkKE1lc3NhZ2Uub2J0YWluKG1IYW5kbGVyLCBET1dOTE9BRF9YVFJBX0RBVEEpLCBSRVRSWV9JTlRFUlZBTCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBUaGlzIGlzIGNhbGxlZCB0byBpbmZvcm0gdXMgd2hlbiBhbm90aGVyIGxvY2F0aW9uIHByb3ZpZGVyIHJldHVybnMgYSBsb2NhdGlvbi4KLSAgICAgKiBTb21lZGF5IHdlIG1pZ2h0IHVzZSB0aGlzIGZvciBuZXR3b3JrIGxvY2F0aW9uIGluamVjdGlvbiB0byBhaWQgdGhlIEdQUwotICAgICAqLwotICAgIHB1YmxpYyB2b2lkIHVwZGF0ZUxvY2F0aW9uKExvY2F0aW9uIGxvY2F0aW9uKSB7Ci0gICAgICAgIG1IYW5kbGVyLnJlbW92ZU1lc3NhZ2VzKFVQREFURV9MT0NBVElPTik7Ci0gICAgICAgIE1lc3NhZ2UgbSA9IE1lc3NhZ2Uub2J0YWluKG1IYW5kbGVyLCBVUERBVEVfTE9DQVRJT04pOwotICAgICAgICBtLm9iaiA9IGxvY2F0aW9uOwotICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZShtKTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIHZvaWQgaGFuZGxlVXBkYXRlTG9jYXRpb24oTG9jYXRpb24gbG9jYXRpb24pIHsKLSAgICAgICAgaWYgKGxvY2F0aW9uLmhhc0FjY3VyYWN5KCkpIHsKLSAgICAgICAgICAgIG5hdGl2ZV9pbmplY3RfbG9jYXRpb24obG9jYXRpb24uZ2V0TGF0aXR1ZGUoKSwgbG9jYXRpb24uZ2V0TG9uZ2l0dWRlKCksCi0gICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uLmdldEFjY3VyYWN5KCkpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBwcm92aWRlciByZXF1aXJlcyBhY2Nlc3MgdG8gYQotICAgICAqIHNhdGVsbGl0ZS1iYXNlZCBwb3NpdGlvbmluZyBzeXN0ZW0gKGUuZy4sIEdQUyksIGZhbHNlCi0gICAgICogb3RoZXJ3aXNlLgotICAgICAqLwotICAgIHB1YmxpYyBib29sZWFuIHJlcXVpcmVzU2F0ZWxsaXRlKCkgewotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHByb3ZpZGVyIHJlcXVpcmVzIGFjY2VzcyB0byBhbiBhcHByb3ByaWF0ZQotICAgICAqIGNlbGx1bGFyIG5ldHdvcmsgKGUuZy4sIHRvIG1ha2UgdXNlIG9mIGNlbGwgdG93ZXIgSURzKSwgZmFsc2UKLSAgICAgKiBvdGhlcndpc2UuCi0gICAgICovCi0gICAgcHVibGljIGJvb2xlYW4gcmVxdWlyZXNDZWxsKCkgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSB1c2Ugb2YgdGhpcyBwcm92aWRlciBtYXkgcmVzdWx0IGluIGEKLSAgICAgKiBtb25ldGFyeSBjaGFyZ2UgdG8gdGhlIHVzZXIsIGZhbHNlIGlmIHVzZSBpcyBmcmVlLiAgSXQgaXMgdXAgdG8KLSAgICAgKiBlYWNoIHByb3ZpZGVyIHRvIGdpdmUgYWNjdXJhdGUgaW5mb3JtYXRpb24uCi0gICAgICovCi0gICAgcHVibGljIGJvb2xlYW4gaGFzTW9uZXRhcnlDb3N0KCkgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBwcm92aWRlciBpcyBhYmxlIHRvIHByb3ZpZGUgYWx0aXR1ZGUKLSAgICAgKiBpbmZvcm1hdGlvbiwgZmFsc2Ugb3RoZXJ3aXNlLiAgQSBwcm92aWRlciB0aGF0IHJlcG9ydHMgYWx0aXR1ZGUKLSAgICAgKiB1bmRlciBtb3N0IGNpcmN1bXN0YW5jZXMgYnV0IG1heSBvY2Nhc3Npb25hbGx5IG5vdCByZXBvcnQgaXQKLSAgICAgKiBzaG91bGQgcmV0dXJuIHRydWUuCi0gICAgICovCi0gICAgcHVibGljIGJvb2xlYW4gc3VwcG9ydHNBbHRpdHVkZSgpIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBwcm92aWRlciBpcyBhYmxlIHRvIHByb3ZpZGUgc3BlZWQKLSAgICAgKiBpbmZvcm1hdGlvbiwgZmFsc2Ugb3RoZXJ3aXNlLiAgQSBwcm92aWRlciB0aGF0IHJlcG9ydHMgc3BlZWQKLSAgICAgKiB1bmRlciBtb3N0IGNpcmN1bXN0YW5jZXMgYnV0IG1heSBvY2Nhc3Npb25hbGx5IG5vdCByZXBvcnQgaXQKLSAgICAgKiBzaG91bGQgcmV0dXJuIHRydWUuCi0gICAgICovCi0gICAgcHVibGljIGJvb2xlYW4gc3VwcG9ydHNTcGVlZCgpIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBwcm92aWRlciBpcyBhYmxlIHRvIHByb3ZpZGUgYmVhcmluZwotICAgICAqIGluZm9ybWF0aW9uLCBmYWxzZSBvdGhlcndpc2UuICBBIHByb3ZpZGVyIHRoYXQgcmVwb3J0cyBiZWFyaW5nCi0gICAgICogdW5kZXIgbW9zdCBjaXJjdW1zdGFuY2VzIGJ1dCBtYXkgb2NjYXNzaW9uYWxseSBub3QgcmVwb3J0IGl0Ci0gICAgICogc2hvdWxkIHJldHVybiB0cnVlLgotICAgICAqLwotICAgIHB1YmxpYyBib29sZWFuIHN1cHBvcnRzQmVhcmluZygpIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogUmV0dXJucyB0aGUgcG93ZXIgcmVxdWlyZW1lbnQgZm9yIHRoaXMgcHJvdmlkZXIuCi0gICAgICoKLSAgICAgKiBAcmV0dXJuIHRoZSBwb3dlciByZXF1aXJlbWVudCBmb3IgdGhpcyBwcm92aWRlciwgYXMgb25lIG9mIHRoZQotICAgICAqIGNvbnN0YW50cyBDcml0ZXJpYS5QT1dFUl9SRVFVSVJFTUVOVF8qLgotICAgICAqLwotICAgIHB1YmxpYyBpbnQgZ2V0UG93ZXJSZXF1aXJlbWVudCgpIHsKLSAgICAgICAgcmV0dXJuIENyaXRlcmlhLlBPV0VSX0hJR0g7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogUmV0dXJucyB0aGUgaG9yaXpvbnRhbCBhY2N1cmFjeSBvZiB0aGlzIHByb3ZpZGVyCi0gICAgICoKLSAgICAgKiBAcmV0dXJuIHRoZSBhY2N1cmFjeSBvZiBsb2NhdGlvbiBmcm9tIHRoaXMgcHJvdmlkZXIsIGFzIG9uZQotICAgICAqIG9mIHRoZSBjb25zdGFudHMgQ3JpdGVyaWEuQUNDVVJBQ1lfKi4KLSAgICAgKi8KLSAgICBwdWJsaWMgaW50IGdldEFjY3VyYWN5KCkgewotICAgICAgICByZXR1cm4gQ3JpdGVyaWEuQUNDVVJBQ1lfRklORTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBFbmFibGVzIHRoaXMgcHJvdmlkZXIuICBXaGVuIGVuYWJsZWQsIGNhbGxzIHRvIGdldFN0YXR1cygpCi0gICAgICogbXVzdCBiZSBoYW5kbGVkLiAgSGFyZHdhcmUgbWF5IGJlIHN0YXJ0ZWQgdXAKLSAgICAgKiB3aGVuIHRoZSBwcm92aWRlciBpcyBlbmFibGVkLgotICAgICAqLwotICAgIHB1YmxpYyB2b2lkIGVuYWJsZSgpIHsKLSAgICAgICAgc3luY2hyb25pemVkIChtSGFuZGxlcikgewotICAgICAgICAgICAgbUhhbmRsZXIucmVtb3ZlTWVzc2FnZXMoRU5BQkxFKTsKLSAgICAgICAgICAgIE1lc3NhZ2UgbSA9IE1lc3NhZ2Uub2J0YWluKG1IYW5kbGVyLCBFTkFCTEUpOwotICAgICAgICAgICAgbS5hcmcxID0gMTsKLSAgICAgICAgICAgIG1IYW5kbGVyLnNlbmRNZXNzYWdlKG0pOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSB2b2lkIGhhbmRsZUVuYWJsZSgpIHsKLSAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJoYW5kbGVFbmFibGUiKTsKLSAgICAgICAgaWYgKG1FbmFibGVkKSByZXR1cm47Ci0gICAgICAgIG1FbmFibGVkID0gbmF0aXZlX2luaXQoKTsKLQotICAgICAgICBpZiAobUVuYWJsZWQpIHsKLSAgICAgICAgICAgIGlmIChtU3VwbFNlcnZlckhvc3QgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIG5hdGl2ZV9zZXRfYWdwc19zZXJ2ZXIoQUdQU19UWVBFX1NVUEwsIG1TdXBsU2VydmVySG9zdCwgbVN1cGxTZXJ2ZXJQb3J0KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChtQzJLU2VydmVySG9zdCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgbmF0aXZlX3NldF9hZ3BzX3NlcnZlcihBR1BTX1RZUEVfQzJLLCBtQzJLU2VydmVySG9zdCwgbUMyS1NlcnZlclBvcnQpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBydW4gZXZlbnQgbGlzdGVuZXIgdGhyZWFkIHdoaWxlIHdlIGFyZSBlbmFibGVkCi0gICAgICAgICAgICBtRXZlbnRUaHJlYWQgPSBuZXcgR3BzRXZlbnRUaHJlYWQoKTsKLSAgICAgICAgICAgIG1FdmVudFRocmVhZC5zdGFydCgpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgTG9nLncoVEFHLCAiRmFpbGVkIHRvIGVuYWJsZSBsb2NhdGlvbiBwcm92aWRlciIpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogRGlzYWJsZXMgdGhpcyBwcm92aWRlci4gIFdoZW4gZGlzYWJsZWQsIGNhbGxzIHRvIGdldFN0YXR1cygpCi0gICAgICogbmVlZCBub3QgYmUgaGFuZGxlZC4gIEhhcmR3YXJlIG1heSBiZSBzaHV0Ci0gICAgICogZG93biB3aGlsZSB0aGUgcHJvdmlkZXIgaXMgZGlzYWJsZWQuCi0gICAgICovCi0gICAgcHVibGljIHZvaWQgZGlzYWJsZSgpIHsKLSAgICAgICAgc3luY2hyb25pemVkIChtSGFuZGxlcikgewotICAgICAgICAgICAgbUhhbmRsZXIucmVtb3ZlTWVzc2FnZXMoRU5BQkxFKTsKLSAgICAgICAgICAgIE1lc3NhZ2UgbSA9IE1lc3NhZ2Uub2J0YWluKG1IYW5kbGVyLCBFTkFCTEUpOwotICAgICAgICAgICAgbS5hcmcxID0gMDsKLSAgICAgICAgICAgIG1IYW5kbGVyLnNlbmRNZXNzYWdlKG0pOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSB2b2lkIGhhbmRsZURpc2FibGUoKSB7Ci0gICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAiaGFuZGxlRGlzYWJsZSIpOwotICAgICAgICBpZiAoIW1FbmFibGVkKSByZXR1cm47Ci0KLSAgICAgICAgbUVuYWJsZWQgPSBmYWxzZTsKLSAgICAgICAgc3RvcE5hdmlnYXRpbmcoKTsKLSAgICAgICAgbmF0aXZlX2Rpc2FibGUoKTsKLQotICAgICAgICAvLyBtYWtlIHN1cmUgb3VyIGV2ZW50IHRocmVhZCBleGl0cwotICAgICAgICBpZiAobUV2ZW50VGhyZWFkICE9IG51bGwpIHsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgbUV2ZW50VGhyZWFkLmpvaW4oKTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKEludGVycnVwdGVkRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICBMb2cudyhUQUcsICJJbnRlcnJ1cHRlZEV4Y2VwdGlvbiB3aGVuIGpvaW5pbmcgbUV2ZW50VGhyZWFkIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBtRXZlbnRUaHJlYWQgPSBudWxsOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gZG8gdGhpcyBiZWZvcmUgcmVsZWFzaW5nIHdha2Vsb2NrCi0gICAgICAgIG5hdGl2ZV9jbGVhbnVwKCk7Ci0KLSAgICAgICAgLy8gVGhlIEdwc0V2ZW50VGhyZWFkIGRvZXMgbm90IHdhaXQgZm9yIHRoZSBHUFMgdG8gc2h1dGRvd24KLSAgICAgICAgLy8gc28gd2UgbmVlZCB0byByZXBvcnQgdGhlIEdQU19TVEFUVVNfRU5HSU5FX09GRiBldmVudCBoZXJlCi0gICAgICAgIGlmIChtTmF2aWdhdGluZykgewotICAgICAgICAgICAgcmVwb3J0U3RhdHVzKEdQU19TVEFUVVNfU0VTU0lPTl9FTkQpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChtRW5naW5lT24pIHsKLSAgICAgICAgICAgIHJlcG9ydFN0YXR1cyhHUFNfU1RBVFVTX0VOR0lORV9PRkYpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHVibGljIGJvb2xlYW4gaXNFbmFibGVkKCkgewotICAgICAgICByZXR1cm4gbUVuYWJsZWQ7Ci0gICAgfQotCi0gICAgcHVibGljIGludCBnZXRTdGF0dXMoQnVuZGxlIGV4dHJhcykgewotICAgICAgICBpZiAoZXh0cmFzICE9IG51bGwpIHsKLSAgICAgICAgICAgIGV4dHJhcy5wdXRJbnQoInNhdGVsbGl0ZXMiLCBtU3ZDb3VudCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1TdGF0dXM7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSB2b2lkIHVwZGF0ZVN0YXR1cyhpbnQgc3RhdHVzLCBpbnQgc3ZDb3VudCkgewotICAgICAgICBpZiAoc3RhdHVzICE9IG1TdGF0dXMgfHwgc3ZDb3VudCAhPSBtU3ZDb3VudCkgewotICAgICAgICAgICAgbVN0YXR1cyA9IHN0YXR1czsKLSAgICAgICAgICAgIG1TdkNvdW50ID0gc3ZDb3VudDsKLSAgICAgICAgICAgIG1Mb2NhdGlvbkV4dHJhcy5wdXRJbnQoInNhdGVsbGl0ZXMiLCBzdkNvdW50KTsKLSAgICAgICAgICAgIG1TdGF0dXNVcGRhdGVUaW1lID0gU3lzdGVtQ2xvY2suZWxhcHNlZFJlYWx0aW1lKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwdWJsaWMgbG9uZyBnZXRTdGF0dXNVcGRhdGVUaW1lKCkgewotICAgICAgICByZXR1cm4gbVN0YXR1c1VwZGF0ZVRpbWU7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgZW5hYmxlTG9jYXRpb25UcmFja2luZyhib29sZWFuIGVuYWJsZSkgewotICAgICAgICBzeW5jaHJvbml6ZWQgKG1IYW5kbGVyKSB7Ci0gICAgICAgICAgICBtSGFuZGxlci5yZW1vdmVNZXNzYWdlcyhFTkFCTEVfVFJBQ0tJTkcpOwotICAgICAgICAgICAgTWVzc2FnZSBtID0gTWVzc2FnZS5vYnRhaW4obUhhbmRsZXIsIEVOQUJMRV9UUkFDS0lORyk7Ci0gICAgICAgICAgICBtLmFyZzEgPSAoZW5hYmxlID8gMSA6IDApOwotICAgICAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2UobSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwcml2YXRlIHZvaWQgaGFuZGxlRW5hYmxlTG9jYXRpb25UcmFja2luZyhib29sZWFuIGVuYWJsZSkgewotICAgICAgICBpZiAoZW5hYmxlKSB7Ci0gICAgICAgICAgICBtVFRGRiA9IDA7Ci0gICAgICAgICAgICBtTGFzdEZpeFRpbWUgPSAwOwotICAgICAgICAgICAgc3RhcnROYXZpZ2F0aW5nKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtQWxhcm1NYW5hZ2VyLmNhbmNlbChtV2FrZXVwSW50ZW50KTsKLSAgICAgICAgICAgIG1BbGFybU1hbmFnZXIuY2FuY2VsKG1UaW1lb3V0SW50ZW50KTsKLSAgICAgICAgICAgIHN0b3BOYXZpZ2F0aW5nKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRNaW5UaW1lKGxvbmcgbWluVGltZSkgewotICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgInNldE1pblRpbWUgIiArIG1pblRpbWUpOwotICAgICAgICAKLSAgICAgICAgaWYgKG1pblRpbWUgPj0gMCkgewotICAgICAgICAgICAgaW50IGludGVydmFsID0gKGludCkobWluVGltZS8xMDAwKTsKLSAgICAgICAgICAgIGlmIChpbnRlcnZhbCA8IDEpIHsKLSAgICAgICAgICAgICAgICBpbnRlcnZhbCA9IDE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBtRml4SW50ZXJ2YWwgPSBpbnRlcnZhbDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyBTdHJpbmcgZ2V0SW50ZXJuYWxTdGF0ZSgpIHsKLSAgICAgICAgcmV0dXJuIG5hdGl2ZV9nZXRfaW50ZXJuYWxfc3RhdGUoKTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIGZpbmFsIGNsYXNzIExpc3RlbmVyIGltcGxlbWVudHMgSUJpbmRlci5EZWF0aFJlY2lwaWVudCB7Ci0gICAgICAgIGZpbmFsIElHcHNTdGF0dXNMaXN0ZW5lciBtTGlzdGVuZXI7Ci0gICAgICAgIAotICAgICAgICBpbnQgbVNlbnNvcnMgPSAwOwotICAgICAgICAKLSAgICAgICAgTGlzdGVuZXIoSUdwc1N0YXR1c0xpc3RlbmVyIGxpc3RlbmVyKSB7Ci0gICAgICAgICAgICBtTGlzdGVuZXIgPSBsaXN0ZW5lcjsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgcHVibGljIHZvaWQgYmluZGVyRGllZCgpIHsKLSAgICAgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAiR1BTIHN0YXR1cyBsaXN0ZW5lciBkaWVkIik7Ci0KLSAgICAgICAgICAgIHN5bmNocm9uaXplZChtTGlzdGVuZXJzKSB7Ci0gICAgICAgICAgICAgICAgbUxpc3RlbmVycy5yZW1vdmUodGhpcyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobUxpc3RlbmVyICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBtTGlzdGVuZXIuYXNCaW5kZXIoKS51bmxpbmtUb0RlYXRoKHRoaXMsIDApOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgYWRkTGlzdGVuZXIoaW50IHVpZCkgewotICAgICAgICBNZXNzYWdlIG0gPSBNZXNzYWdlLm9idGFpbihtSGFuZGxlciwgQUREX0xJU1RFTkVSKTsKLSAgICAgICAgbS5hcmcxID0gdWlkOwotICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZShtKTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIHZvaWQgaGFuZGxlQWRkTGlzdGVuZXIoaW50IHVpZCkgewotICAgICAgICBzeW5jaHJvbml6ZWQobUxpc3RlbmVycykgewotICAgICAgICAgICAgaWYgKG1DbGllbnRVaWRzLmluZGV4T2ZLZXkodWlkKSA+PSAwKSB7Ci0gICAgICAgICAgICAgICAgLy8gU2hvdWxkbid0IGJlIGhlcmUgLS0gYWxyZWFkeSBoYXZlIHRoaXMgdWlkLgotICAgICAgICAgICAgICAgIExvZy53KFRBRywgIkR1cGxpY2F0ZSBhZGQgbGlzdGVuZXIgZm9yIHVpZCAiICsgdWlkKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBtQ2xpZW50VWlkcy5wdXQodWlkLCAwKTsKLSAgICAgICAgICAgIGlmIChtTmF2aWdhdGluZykgewotICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIG1CYXR0ZXJ5U3RhdHMubm90ZVN0YXJ0R3BzKHVpZCk7Ci0gICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICAgICAgTG9nLncoVEFHLCAiUmVtb3RlRXhjZXB0aW9uIGluIGFkZExpc3RlbmVyIik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgcmVtb3ZlTGlzdGVuZXIoaW50IHVpZCkgewotICAgICAgICBNZXNzYWdlIG0gPSBNZXNzYWdlLm9idGFpbihtSGFuZGxlciwgUkVNT1ZFX0xJU1RFTkVSKTsKLSAgICAgICAgbS5hcmcxID0gdWlkOwotICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZShtKTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIHZvaWQgaGFuZGxlUmVtb3ZlTGlzdGVuZXIoaW50IHVpZCkgewotICAgICAgICBzeW5jaHJvbml6ZWQobUxpc3RlbmVycykgewotICAgICAgICAgICAgaWYgKG1DbGllbnRVaWRzLmluZGV4T2ZLZXkodWlkKSA8IDApIHsKLSAgICAgICAgICAgICAgICAvLyBTaG91bGRuJ3QgYmUgaGVyZSAtLSBkb24ndCBoYXZlIHRoaXMgdWlkLgotICAgICAgICAgICAgICAgIExvZy53KFRBRywgIlVubmVlZGVkIHJlbW92ZSBsaXN0ZW5lciBmb3IgdWlkICIgKyB1aWQpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1DbGllbnRVaWRzLmRlbGV0ZSh1aWQpOwotICAgICAgICAgICAgaWYgKG1OYXZpZ2F0aW5nKSB7Ci0gICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgbUJhdHRlcnlTdGF0cy5ub3RlU3RvcEdwcyh1aWQpOwotICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgICAgIExvZy53KFRBRywgIlJlbW90ZUV4Y2VwdGlvbiBpbiByZW1vdmVMaXN0ZW5lciIpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyBib29sZWFuIHNlbmRFeHRyYUNvbW1hbmQoU3RyaW5nIGNvbW1hbmQsIEJ1bmRsZSBleHRyYXMpIHsKLSAgICAgICAgCi0gICAgICAgIGlmICgiZGVsZXRlX2FpZGluZ19kYXRhIi5lcXVhbHMoY29tbWFuZCkpIHsKLSAgICAgICAgICAgIHJldHVybiBkZWxldGVBaWRpbmdEYXRhKGV4dHJhcyk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCJmb3JjZV90aW1lX2luamVjdGlvbiIuZXF1YWxzKGNvbW1hbmQpKSB7Ci0gICAgICAgICAgICBtSGFuZGxlci5yZW1vdmVNZXNzYWdlcyhJTkpFQ1RfTlRQX1RJTUUpOwotICAgICAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2UoTWVzc2FnZS5vYnRhaW4obUhhbmRsZXIsIElOSkVDVF9OVFBfVElNRSkpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCJmb3JjZV94dHJhX2luamVjdGlvbiIuZXF1YWxzKGNvbW1hbmQpKSB7Ci0gICAgICAgICAgICBpZiAobmF0aXZlX3N1cHBvcnRzX3h0cmEoKSkgewotICAgICAgICAgICAgICAgIHh0cmFEb3dubG9hZFJlcXVlc3QoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgTG9nLncoVEFHLCAic2VuZEV4dHJhQ29tbWFuZDogdW5rbm93biBjb21tYW5kICIgKyBjb21tYW5kKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHByaXZhdGUgYm9vbGVhbiBkZWxldGVBaWRpbmdEYXRhKEJ1bmRsZSBleHRyYXMpIHsKLSAgICAgICAgaW50IGZsYWdzOwotCi0gICAgICAgIGlmIChleHRyYXMgPT0gbnVsbCkgewotICAgICAgICAgICAgZmxhZ3MgPSBHUFNfREVMRVRFX0FMTDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGZsYWdzID0gMDsKLSAgICAgICAgICAgIGlmIChleHRyYXMuZ2V0Qm9vbGVhbigiZXBoZW1lcmlzIikpIGZsYWdzIHw9IEdQU19ERUxFVEVfRVBIRU1FUklTOwotICAgICAgICAgICAgaWYgKGV4dHJhcy5nZXRCb29sZWFuKCJhbG1hbmFjIikpIGZsYWdzIHw9IEdQU19ERUxFVEVfQUxNQU5BQzsKLSAgICAgICAgICAgIGlmIChleHRyYXMuZ2V0Qm9vbGVhbigicG9zaXRpb24iKSkgZmxhZ3MgfD0gR1BTX0RFTEVURV9QT1NJVElPTjsKLSAgICAgICAgICAgIGlmIChleHRyYXMuZ2V0Qm9vbGVhbigidGltZSIpKSBmbGFncyB8PSBHUFNfREVMRVRFX1RJTUU7Ci0gICAgICAgICAgICBpZiAoZXh0cmFzLmdldEJvb2xlYW4oImlvbm8iKSkgZmxhZ3MgfD0gR1BTX0RFTEVURV9JT05POwotICAgICAgICAgICAgaWYgKGV4dHJhcy5nZXRCb29sZWFuKCJ1dGMiKSkgZmxhZ3MgfD0gR1BTX0RFTEVURV9VVEM7Ci0gICAgICAgICAgICBpZiAoZXh0cmFzLmdldEJvb2xlYW4oImhlYWx0aCIpKSBmbGFncyB8PSBHUFNfREVMRVRFX0hFQUxUSDsKLSAgICAgICAgICAgIGlmIChleHRyYXMuZ2V0Qm9vbGVhbigic3ZkaXIiKSkgZmxhZ3MgfD0gR1BTX0RFTEVURV9TVkRJUjsKLSAgICAgICAgICAgIGlmIChleHRyYXMuZ2V0Qm9vbGVhbigic3ZzdGVlciIpKSBmbGFncyB8PSBHUFNfREVMRVRFX1NWU1RFRVI7Ci0gICAgICAgICAgICBpZiAoZXh0cmFzLmdldEJvb2xlYW4oInNhZGF0YSIpKSBmbGFncyB8PSBHUFNfREVMRVRFX1NBREFUQTsKLSAgICAgICAgICAgIGlmIChleHRyYXMuZ2V0Qm9vbGVhbigicnRpIikpIGZsYWdzIHw9IEdQU19ERUxFVEVfUlRJOwotICAgICAgICAgICAgaWYgKGV4dHJhcy5nZXRCb29sZWFuKCJjZWxsZGItaW5mbyIpKSBmbGFncyB8PSBHUFNfREVMRVRFX0NFTExEQl9JTkZPOwotICAgICAgICAgICAgaWYgKGV4dHJhcy5nZXRCb29sZWFuKCJhbGwiKSkgZmxhZ3MgfD0gR1BTX0RFTEVURV9BTEw7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZmxhZ3MgIT0gMCkgewotICAgICAgICAgICAgbmF0aXZlX2RlbGV0ZV9haWRpbmdfZGF0YShmbGFncyk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIHZvaWQgc3RhcnROYXZpZ2F0aW5nKCkgewotICAgICAgICBpZiAoIW1TdGFydGVkKSB7Ci0gICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgInN0YXJ0TmF2aWdhdGluZyIpOwotICAgICAgICAgICAgbVN0YXJ0ZWQgPSB0cnVlOwotICAgICAgICAgICAgaW50IHBvc2l0aW9uTW9kZTsKLSAgICAgICAgICAgIGlmIChTZXR0aW5ncy5TZWN1cmUuZ2V0SW50KG1Db250ZXh0LmdldENvbnRlbnRSZXNvbHZlcigpLAotICAgICAgICAgICAgICAgICAgICBTZXR0aW5ncy5TZWN1cmUuQVNTSVNURURfR1BTX0VOQUJMRUQsIDEpICE9IDApIHsKLSAgICAgICAgICAgICAgICBwb3NpdGlvbk1vZGUgPSBHUFNfUE9TSVRJT05fTU9ERV9NU19CQVNFRDsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcG9zaXRpb25Nb2RlID0gR1BTX1BPU0lUSU9OX01PREVfU1RBTkRBTE9ORTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKCFuYXRpdmVfc3RhcnQocG9zaXRpb25Nb2RlLCBmYWxzZSwgMSkpIHsKLSAgICAgICAgICAgICAgICBtU3RhcnRlZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIExvZy5lKFRBRywgIm5hdGl2ZV9zdGFydCBmYWlsZWQgaW4gc3RhcnROYXZpZ2F0aW5nKCkiKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIHJlc2V0IFNWIGNvdW50IHRvIHplcm8KLSAgICAgICAgICAgIHVwZGF0ZVN0YXR1cyhMb2NhdGlvblByb3ZpZGVyLlRFTVBPUkFSSUxZX1VOQVZBSUxBQkxFLCAwKTsKLSAgICAgICAgICAgIG1GaXhDb3VudCA9IDA7Ci0gICAgICAgICAgICBtRml4UmVxdWVzdFRpbWUgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKLSAgICAgICAgICAgIC8vIHNldCB0aW1lciB0byBnaXZlIHVwIGlmIHdlIGRvIG5vdCByZWNlaXZlIGEgZml4IHdpdGhpbiBOT19GSVhfVElNRU9VVAotICAgICAgICAgICAgLy8gYW5kIG91ciBmaXggaW50ZXJ2YWwgaXMgbm90IHNob3J0Ci0gICAgICAgICAgICBpZiAobUZpeEludGVydmFsID49IE5PX0ZJWF9USU1FT1VUKSB7Ci0gICAgICAgICAgICAgICAgbUFsYXJtTWFuYWdlci5zZXQoQWxhcm1NYW5hZ2VyLkVMQVBTRURfUkVBTFRJTUVfV0FLRVVQLAotICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtQ2xvY2suZWxhcHNlZFJlYWx0aW1lKCkgKyBOT19GSVhfVElNRU9VVCAqIDEwMDAsIG1UaW1lb3V0SW50ZW50KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHByaXZhdGUgdm9pZCBzdG9wTmF2aWdhdGluZygpIHsKLSAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJzdG9wTmF2aWdhdGluZyIpOwotICAgICAgICBpZiAobVN0YXJ0ZWQpIHsKLSAgICAgICAgICAgIG1TdGFydGVkID0gZmFsc2U7Ci0gICAgICAgICAgICBuYXRpdmVfc3RvcCgpOwotICAgICAgICAgICAgbVRURkYgPSAwOwotICAgICAgICAgICAgbUxhc3RGaXhUaW1lID0gMDsKLSAgICAgICAgICAgIG1Mb2NhdGlvbkZsYWdzID0gTE9DQVRJT05fSU5WQUxJRDsKLQotICAgICAgICAgICAgLy8gcmVzZXQgU1YgY291bnQgdG8gemVybwotICAgICAgICAgICAgdXBkYXRlU3RhdHVzKExvY2F0aW9uUHJvdmlkZXIuVEVNUE9SQVJJTFlfVU5BVkFJTEFCTEUsIDApOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSB2b2lkIGhpYmVybmF0ZSgpIHsKLSAgICAgICAgLy8gc3RvcCBHUFMgdW50aWwgb3VyIG5leHQgZml4IGludGVydmFsIGFycml2ZXMKLSAgICAgICAgc3RvcE5hdmlnYXRpbmcoKTsKLSAgICAgICAgbUZpeENvdW50ID0gMDsKLSAgICAgICAgbUFsYXJtTWFuYWdlci5jYW5jZWwobVRpbWVvdXRJbnRlbnQpOwotICAgICAgICBtQWxhcm1NYW5hZ2VyLmNhbmNlbChtV2FrZXVwSW50ZW50KTsKLSAgICAgICAgbG9uZyBub3cgPSBTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKTsKLSAgICAgICAgbUFsYXJtTWFuYWdlci5zZXQoQWxhcm1NYW5hZ2VyLkVMQVBTRURfUkVBTFRJTUVfV0FLRVVQLAotICAgICAgICAgICAgICAgIFN5c3RlbUNsb2NrLmVsYXBzZWRSZWFsdGltZSgpICsgbUZpeEludGVydmFsICogMTAwMCwgbVdha2V1cEludGVudCk7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogY2FsbGVkIGZyb20gbmF0aXZlIGNvZGUgdG8gdXBkYXRlIG91ciBwb3NpdGlvbi4KLSAgICAgKi8KLSAgICBwcml2YXRlIHZvaWQgcmVwb3J0TG9jYXRpb24oaW50IGZsYWdzLCBkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGRvdWJsZSBhbHRpdHVkZSwKLSAgICAgICAgICAgIGZsb2F0IHNwZWVkLCBmbG9hdCBiZWFyaW5nLCBmbG9hdCBhY2N1cmFjeSwgbG9uZyB0aW1lc3RhbXApIHsKLSAgICAgICAgaWYgKFZFUkJPU0UpIExvZy52KFRBRywgInJlcG9ydExvY2F0aW9uIGxhdDogIiArIGxhdGl0dWRlICsgIiBsb25nOiAiICsgbG9uZ2l0dWRlICsKLSAgICAgICAgICAgICAgICAiIHRpbWVzdGFtcDogIiArIHRpbWVzdGFtcCk7Ci0KLSAgICAgICAgbUxhc3RGaXhUaW1lID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7Ci0gICAgICAgIC8vIHJlcG9ydCB0aW1lIHRvIGZpcnN0IGZpeAotICAgICAgICBpZiAobVRURkYgPT0gMCAmJiAoZmxhZ3MgJiBMT0NBVElPTl9IQVNfTEFUX0xPTkcpID09IExPQ0FUSU9OX0hBU19MQVRfTE9ORykgewotICAgICAgICAgICAgbVRURkYgPSAoaW50KShtTGFzdEZpeFRpbWUgLSBtRml4UmVxdWVzdFRpbWUpOwotICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJUVEZGOiAiICsgbVRURkYpOwotCi0gICAgICAgICAgICAvLyBub3RpZnkgc3RhdHVzIGxpc3RlbmVycwotICAgICAgICAgICAgc3luY2hyb25pemVkKG1MaXN0ZW5lcnMpIHsKLSAgICAgICAgICAgICAgICBpbnQgc2l6ZSA9IG1MaXN0ZW5lcnMuc2l6ZSgpOwotICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIExpc3RlbmVyIGxpc3RlbmVyID0gbUxpc3RlbmVycy5nZXQoaSk7Ci0gICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lci5tTGlzdGVuZXIub25GaXJzdEZpeChtVFRGRik7IAotICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgTG9nLncoVEFHLCAiUmVtb3RlRXhjZXB0aW9uIGluIHN0b3BOYXZpZ2F0aW5nIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtTGlzdGVuZXJzLnJlbW92ZShsaXN0ZW5lcik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBhZGp1c3QgZm9yIHNpemUgb2YgbGlzdCBjaGFuZ2luZwotICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZS0tOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgc3luY2hyb25pemVkIChtTG9jYXRpb24pIHsKLSAgICAgICAgICAgIG1Mb2NhdGlvbkZsYWdzID0gZmxhZ3M7Ci0gICAgICAgICAgICBpZiAoKGZsYWdzICYgTE9DQVRJT05fSEFTX0xBVF9MT05HKSA9PSBMT0NBVElPTl9IQVNfTEFUX0xPTkcpIHsKLSAgICAgICAgICAgICAgICBtTG9jYXRpb24uc2V0TGF0aXR1ZGUobGF0aXR1ZGUpOwotICAgICAgICAgICAgICAgIG1Mb2NhdGlvbi5zZXRMb25naXR1ZGUobG9uZ2l0dWRlKTsKLSAgICAgICAgICAgICAgICBtTG9jYXRpb24uc2V0VGltZSh0aW1lc3RhbXApOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKChmbGFncyAmIExPQ0FUSU9OX0hBU19BTFRJVFVERSkgPT0gTE9DQVRJT05fSEFTX0FMVElUVURFKSB7Ci0gICAgICAgICAgICAgICAgbUxvY2F0aW9uLnNldEFsdGl0dWRlKGFsdGl0dWRlKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbUxvY2F0aW9uLnJlbW92ZUFsdGl0dWRlKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoKGZsYWdzICYgTE9DQVRJT05fSEFTX1NQRUVEKSA9PSBMT0NBVElPTl9IQVNfU1BFRUQpIHsKLSAgICAgICAgICAgICAgICBtTG9jYXRpb24uc2V0U3BlZWQoc3BlZWQpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtTG9jYXRpb24ucmVtb3ZlU3BlZWQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICgoZmxhZ3MgJiBMT0NBVElPTl9IQVNfQkVBUklORykgPT0gTE9DQVRJT05fSEFTX0JFQVJJTkcpIHsKLSAgICAgICAgICAgICAgICBtTG9jYXRpb24uc2V0QmVhcmluZyhiZWFyaW5nKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbUxvY2F0aW9uLnJlbW92ZUJlYXJpbmcoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICgoZmxhZ3MgJiBMT0NBVElPTl9IQVNfQUNDVVJBQ1kpID09IExPQ0FUSU9OX0hBU19BQ0NVUkFDWSkgewotICAgICAgICAgICAgICAgIG1Mb2NhdGlvbi5zZXRBY2N1cmFjeShhY2N1cmFjeSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG1Mb2NhdGlvbi5yZW1vdmVBY2N1cmFjeSgpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIG1Mb2NhdGlvbk1hbmFnZXIucmVwb3J0TG9jYXRpb24obUxvY2F0aW9uLCBmYWxzZSk7Ci0gICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgIExvZy5lKFRBRywgIlJlbW90ZUV4Y2VwdGlvbiBjYWxsaW5nIHJlcG9ydExvY2F0aW9uIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobVN0YXJ0ZWQgJiYgbVN0YXR1cyAhPSBMb2NhdGlvblByb3ZpZGVyLkFWQUlMQUJMRSkgewotICAgICAgICAgICAgLy8gd2Ugc3RpbGwgd2FudCB0byB0aW1lIG91dCBpZiB3ZSBkbyBub3QgcmVjZWl2ZSBNSU5fRklYX0NPVU5UCi0gICAgICAgICAgICAvLyB3aXRoaW4gdGhlIHRpbWUgb3V0IGFuZCB3ZSBhcmUgcmVxdWVzdGluZyBpbmZyZXF1ZW50IGZpeGVzCi0gICAgICAgICAgICBpZiAobUZpeEludGVydmFsIDwgTk9fRklYX1RJTUVPVVQpIHsKLSAgICAgICAgICAgICAgICBtQWxhcm1NYW5hZ2VyLmNhbmNlbChtVGltZW91dEludGVudCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIHNlbmQgYW4gaW50ZW50IHRvIG5vdGlmeSB0aGF0IHRoZSBHUFMgaXMgcmVjZWl2aW5nIGZpeGVzLgotICAgICAgICAgICAgSW50ZW50IGludGVudCA9IG5ldyBJbnRlbnQoR1BTX0ZJWF9DSEFOR0VfQUNUSU9OKTsKLSAgICAgICAgICAgIGludGVudC5wdXRFeHRyYShFWFRSQV9FTkFCTEVELCB0cnVlKTsKLSAgICAgICAgICAgIG1Db250ZXh0LnNlbmRCcm9hZGNhc3QoaW50ZW50KTsKLSAgICAgICAgICAgIHVwZGF0ZVN0YXR1cyhMb2NhdGlvblByb3ZpZGVyLkFWQUlMQUJMRSwgbVN2Q291bnQpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG1GaXhDb3VudCsrID49IE1JTl9GSVhfQ09VTlQgJiYgbUZpeEludGVydmFsID4gMSkgewotICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJleGNlZWRlZCBNSU5fRklYX0NPVU5UIik7Ci0gICAgICAgICAgICBoaWJlcm5hdGUoKTsKLSAgICAgICAgfQotICAgfQotCi0gICAgLyoqCi0gICAgICogY2FsbGVkIGZyb20gbmF0aXZlIGNvZGUgdG8gdXBkYXRlIG91ciBzdGF0dXMKLSAgICAgKi8KLSAgICBwcml2YXRlIHZvaWQgcmVwb3J0U3RhdHVzKGludCBzdGF0dXMpIHsKLSAgICAgICAgaWYgKFZFUkJPU0UpIExvZy52KFRBRywgInJlcG9ydFN0YXR1cyBzdGF0dXM6ICIgKyBzdGF0dXMpOwotCi0gICAgICAgIHN5bmNocm9uaXplZChtTGlzdGVuZXJzKSB7Ci0gICAgICAgICAgICBib29sZWFuIHdhc05hdmlnYXRpbmcgPSBtTmF2aWdhdGluZzsKLQotICAgICAgICAgICAgc3dpdGNoIChzdGF0dXMpIHsKLSAgICAgICAgICAgICAgICBjYXNlIEdQU19TVEFUVVNfU0VTU0lPTl9CRUdJTjoKLSAgICAgICAgICAgICAgICAgICAgbU5hdmlnYXRpbmcgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBtRW5naW5lT24gPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIEdQU19TVEFUVVNfU0VTU0lPTl9FTkQ6Ci0gICAgICAgICAgICAgICAgICAgIG1OYXZpZ2F0aW5nID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgR1BTX1NUQVRVU19FTkdJTkVfT046Ci0gICAgICAgICAgICAgICAgICAgIG1FbmdpbmVPbiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgR1BTX1NUQVRVU19FTkdJTkVfT0ZGOgotICAgICAgICAgICAgICAgICAgICBtRW5naW5lT24gPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgbU5hdmlnYXRpbmcgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIGJld2FyZSwgdGhlIGV2ZW50cyBjYW4gY29tZSBvdXQgb2Ygb3JkZXIKLSAgICAgICAgICAgIGlmICgobU5hdmlnYXRpbmcgfHwgbUVuZ2luZU9uKSAmJiAhbVdha2VMb2NrLmlzSGVsZCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJBY3F1aXJpbmcgd2FrZWxvY2siKTsKLSAgICAgICAgICAgICAgICAgbVdha2VMb2NrLmFjcXVpcmUoKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKHdhc05hdmlnYXRpbmcgIT0gbU5hdmlnYXRpbmcpIHsKLSAgICAgICAgICAgICAgICBpbnQgc2l6ZSA9IG1MaXN0ZW5lcnMuc2l6ZSgpOwotICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIExpc3RlbmVyIGxpc3RlbmVyID0gbUxpc3RlbmVycy5nZXQoaSk7Ci0gICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobU5hdmlnYXRpbmcpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lci5tTGlzdGVuZXIub25HcHNTdGFydGVkKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RlbmVyLm1MaXN0ZW5lci5vbkdwc1N0b3BwZWQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIExvZy53KFRBRywgIlJlbW90ZUV4Y2VwdGlvbiBpbiByZXBvcnRTdGF0dXMiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1MaXN0ZW5lcnMucmVtb3ZlKGxpc3RlbmVyKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFkanVzdCBmb3Igc2l6ZSBvZiBsaXN0IGNoYW5naW5nCi0gICAgICAgICAgICAgICAgICAgICAgICBzaXplLS07Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAvLyB1cGRhdGUgYmF0dGVyeSBzdGF0cwotICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpPW1DbGllbnRVaWRzLnNpemUoKSAtIDE7IGkgPj0gMDsgaS0tKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgdWlkID0gbUNsaWVudFVpZHMua2V5QXQoaSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobU5hdmlnYXRpbmcpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQmF0dGVyeVN0YXRzLm5vdGVTdGFydEdwcyh1aWQpOwotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQmF0dGVyeVN0YXRzLm5vdGVTdG9wR3BzKHVpZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgICAgICBMb2cudyhUQUcsICJSZW1vdGVFeGNlcHRpb24gaW4gcmVwb3J0U3RhdHVzIik7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gc2VuZCBhbiBpbnRlbnQgdG8gbm90aWZ5IHRoYXQgdGhlIEdQUyBoYXMgYmVlbiBlbmFibGVkIG9yIGRpc2FibGVkLgotICAgICAgICAgICAgICAgIEludGVudCBpbnRlbnQgPSBuZXcgSW50ZW50KEdQU19FTkFCTEVEX0NIQU5HRV9BQ1RJT04pOwotICAgICAgICAgICAgICAgIGludGVudC5wdXRFeHRyYShFWFRSQV9FTkFCTEVELCBtTmF2aWdhdGluZyk7Ci0gICAgICAgICAgICAgICAgbUNvbnRleHQuc2VuZEJyb2FkY2FzdChpbnRlbnQpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBiZXdhcmUsIHRoZSBldmVudHMgY2FuIGNvbWUgb3V0IG9mIG9yZGVyCi0gICAgICAgICAgICBpZiAoIW1OYXZpZ2F0aW5nICYmICFtRW5naW5lT24gJiYgbVdha2VMb2NrLmlzSGVsZCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJSZWxlYXNpbmcgd2FrZWxvY2siKTsKLSAgICAgICAgICAgICAgICBtV2FrZUxvY2sucmVsZWFzZSgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogY2FsbGVkIGZyb20gbmF0aXZlIGNvZGUgdG8gdXBkYXRlIFNWIGluZm8KLSAgICAgKi8KLSAgICBwcml2YXRlIHZvaWQgcmVwb3J0U3ZTdGF0dXMoKSB7Ci0KLSAgICAgICAgaW50IHN2Q291bnQgPSBuYXRpdmVfcmVhZF9zdl9zdGF0dXMobVN2cywgbVNucnMsIG1TdkVsZXZhdGlvbnMsIG1TdkF6aW11dGhzLCBtU3ZNYXNrcyk7Ci0gICAgICAgIAotICAgICAgICBzeW5jaHJvbml6ZWQobUxpc3RlbmVycykgewotICAgICAgICAgICAgaW50IHNpemUgPSBtTGlzdGVuZXJzLnNpemUoKTsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgTGlzdGVuZXIgbGlzdGVuZXIgPSBtTGlzdGVuZXJzLmdldChpKTsKLSAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lci5tTGlzdGVuZXIub25TdlN0YXR1c0NoYW5nZWQoc3ZDb3VudCwgbVN2cywgbVNucnMsIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TdkVsZXZhdGlvbnMsIG1TdkF6aW11dGhzLCBtU3ZNYXNrc1tFUEhFTUVSSVNfTUFTS10sIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Tdk1hc2tzW0FMTUFOQUNfTUFTS10sIG1Tdk1hc2tzW1VTRURfRk9SX0ZJWF9NQVNLXSk7IAotICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgICAgIExvZy53KFRBRywgIlJlbW90ZUV4Y2VwdGlvbiBpbiByZXBvcnRTdkluZm8iKTsKLSAgICAgICAgICAgICAgICAgICAgbUxpc3RlbmVycy5yZW1vdmUobGlzdGVuZXIpOwotICAgICAgICAgICAgICAgICAgICAvLyBhZGp1c3QgZm9yIHNpemUgb2YgbGlzdCBjaGFuZ2luZwotICAgICAgICAgICAgICAgICAgICBzaXplLS07Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKFZFUkJPU0UpIHsKLSAgICAgICAgICAgIExvZy52KFRBRywgIlNWIGNvdW50OiAiICsgc3ZDb3VudCArCi0gICAgICAgICAgICAgICAgICAgICIgZXBoZW1lcmlzTWFzazogIiArIEludGVnZXIudG9IZXhTdHJpbmcobVN2TWFza3NbRVBIRU1FUklTX01BU0tdKSArCi0gICAgICAgICAgICAgICAgICAgICIgYWxtYW5hY01hc2s6ICIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG1Tdk1hc2tzW0FMTUFOQUNfTUFTS10pKTsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc3ZDb3VudDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgTG9nLnYoVEFHLCAic3Y6ICIgKyBtU3ZzW2ldICsKLSAgICAgICAgICAgICAgICAgICAgICAgICIgc25yOiAiICsgKGZsb2F0KW1TbnJzW2ldLzEwICsKLSAgICAgICAgICAgICAgICAgICAgICAgICIgZWxldjogIiArIG1TdkVsZXZhdGlvbnNbaV0gKwotICAgICAgICAgICAgICAgICAgICAgICAgIiBhemltdXRoOiAiICsgbVN2QXppbXV0aHNbaV0gKwotICAgICAgICAgICAgICAgICAgICAgICAgKChtU3ZNYXNrc1tFUEhFTUVSSVNfTUFTS10gJiAoMSA8PCAobVN2c1tpXSAtIDEpKSkgPT0gMCA/ICIgICIgOiAiIEUiKSArCi0gICAgICAgICAgICAgICAgICAgICAgICAoKG1Tdk1hc2tzW0FMTUFOQUNfTUFTS10gJiAoMSA8PCAobVN2c1tpXSAtIDEpKSkgPT0gMCA/ICIgICIgOiAiIEEiKSArCi0gICAgICAgICAgICAgICAgICAgICAgICAoKG1Tdk1hc2tzW1VTRURfRk9SX0ZJWF9NQVNLXSAmICgxIDw8IChtU3ZzW2ldIC0gMSkpKSA9PSAwID8gIiIgOiAiVSIpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHVwZGF0ZVN0YXR1cyhtU3RhdHVzLCBzdkNvdW50KTsKLQotICAgICAgICBpZiAobU5hdmlnYXRpbmcgJiYgbVN0YXR1cyA9PSBMb2NhdGlvblByb3ZpZGVyLkFWQUlMQUJMRSAmJiBtTGFzdEZpeFRpbWUgPiAwICYmCi0gICAgICAgICAgICBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKSAtIG1MYXN0Rml4VGltZSA+IFJFQ0VOVF9GSVhfVElNRU9VVCAqIDEwMDApIHsKLSAgICAgICAgICAgIC8vIHNlbmQgYW4gaW50ZW50IHRvIG5vdGlmeSB0aGF0IHRoZSBHUFMgaXMgbm8gbG9uZ2VyIHJlY2VpdmluZyBmaXhlcy4KLSAgICAgICAgICAgIEludGVudCBpbnRlbnQgPSBuZXcgSW50ZW50KEdQU19GSVhfQ0hBTkdFX0FDVElPTik7Ci0gICAgICAgICAgICBpbnRlbnQucHV0RXh0cmEoRVhUUkFfRU5BQkxFRCwgZmFsc2UpOwotICAgICAgICAgICAgbUNvbnRleHQuc2VuZEJyb2FkY2FzdChpbnRlbnQpOwotICAgICAgICAgICAgdXBkYXRlU3RhdHVzKExvY2F0aW9uUHJvdmlkZXIuVEVNUE9SQVJJTFlfVU5BVkFJTEFCTEUsIG1TdkNvdW50KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8qKgotICAgICAqIGNhbGxlZCBmcm9tIG5hdGl2ZSBjb2RlIHRvIHVwZGF0ZSBBR1BTIHN0YXR1cwotICAgICAqLwotICAgIHByaXZhdGUgdm9pZCByZXBvcnRBR3BzU3RhdHVzKGludCB0eXBlLCBpbnQgc3RhdHVzKSB7Ci0gICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7Ci0gICAgICAgICAgICBjYXNlIEdQU19SRVFVRVNUX0FHUFNfREFUQV9DT05OOgotICAgICAgICAgICAgICAgICBpbnQgcmVzdWx0ID0gbUNvbm5NZ3Iuc3RhcnRVc2luZ05ldHdvcmtGZWF0dXJlKAotICAgICAgICAgICAgICAgICAgICAgICAgQ29ubmVjdGl2aXR5TWFuYWdlci5UWVBFX01PQklMRSwgUGhvbmUuRkVBVFVSRV9FTkFCTEVfU1VQTCk7Ci0gICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBQaG9uZS5BUE5fQUxSRUFEWV9BQ1RJVkUpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1BR3BzQXBuICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZV9hZ3BzX2RhdGFfY29ubl9vcGVuKG1BR3BzQXBuKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1BR3BzRGF0YUNvbm5lY3Rpb25TdGF0ZSA9IEFHUFNfREFUQV9DT05ORUNUSU9OX09QRU47Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBMb2cuZShUQUcsICJtQUdwc0FwbiBub3Qgc2V0IHdoZW4gcmVjZWl2aW5nIFBob25lLkFQTl9BTFJFQURZX0FDVElWRSIpOwotICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlX2FncHNfZGF0YV9jb25uX2ZhaWxlZCgpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gUGhvbmUuQVBOX1JFUVVFU1RfU1RBUlRFRCkgewotICAgICAgICAgICAgICAgICAgICBtQUdwc0RhdGFDb25uZWN0aW9uU3RhdGUgPSBBR1BTX0RBVEFfQ09OTkVDVElPTl9PUEVOSU5HOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIG5hdGl2ZV9hZ3BzX2RhdGFfY29ubl9mYWlsZWQoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEdQU19SRUxFQVNFX0FHUFNfREFUQV9DT05OOgotICAgICAgICAgICAgICAgIGlmIChtQUdwc0RhdGFDb25uZWN0aW9uU3RhdGUgIT0gQUdQU19EQVRBX0NPTk5FQ1RJT05fQ0xPU0VEKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1Db25uTWdyLnN0b3BVc2luZ05ldHdvcmtGZWF0dXJlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbm5lY3Rpdml0eU1hbmFnZXIuVFlQRV9NT0JJTEUsIFBob25lLkZFQVRVUkVfRU5BQkxFX1NVUEwpOwotICAgICAgICAgICAgICAgICAgICBuYXRpdmVfYWdwc19kYXRhX2Nvbm5fY2xvc2VkKCk7Ci0gICAgICAgICAgICAgICAgICAgIG1BR3BzRGF0YUNvbm5lY3Rpb25TdGF0ZSA9IEFHUFNfREFUQV9DT05ORUNUSU9OX0NMT1NFRDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEdQU19BR1BTX0RBVEFfQ09OTkVDVEVEOgotICAgICAgICAgICAgICAgIC8vIExvZy5kKFRBRywgIkdQU19BR1BTX0RBVEFfQ09OTkVDVEVEIik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEdQU19BR1BTX0RBVEFfQ09OTl9ET05FOgotICAgICAgICAgICAgICAgIC8vIExvZy5kKFRBRywgIkdQU19BR1BTX0RBVEFfQ09OTl9ET05FIik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEdQU19BR1BTX0RBVEFfQ09OTl9GQUlMRUQ6Ci0gICAgICAgICAgICAgICAgLy8gTG9nLmQoVEFHLCAiR1BTX0FHUFNfREFUQV9DT05OX0ZBSUxFRCIpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogY2FsbGVkIGZyb20gbmF0aXZlIGNvZGUgdG8gcmVwb3J0IE5NRUEgZGF0YSByZWNlaXZlZAotICAgICAqLwotICAgIHByaXZhdGUgdm9pZCByZXBvcnRObWVhKGludCBpbmRleCwgbG9uZyB0aW1lc3RhbXApIHsKLSAgICAgICAgc3luY2hyb25pemVkKG1MaXN0ZW5lcnMpIHsKLSAgICAgICAgICAgIGludCBzaXplID0gbUxpc3RlbmVycy5zaXplKCk7Ci0gICAgICAgICAgICBpZiAoc2l6ZSA+IDApIHsKLSAgICAgICAgICAgICAgICAvLyBkb24ndCBib3RoZXIgY3JlYXRpbmcgdGhlIFN0cmluZyBpZiB3ZSBoYXZlIG5vIGxpc3RlbmVycwotICAgICAgICAgICAgICAgIGludCBsZW5ndGggPSBuYXRpdmVfcmVhZF9ubWVhKGluZGV4LCBtTm1lYUJ1ZmZlciwgbU5tZWFCdWZmZXIubGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBTdHJpbmcgbm1lYSA9IG5ldyBTdHJpbmcobU5tZWFCdWZmZXIsIDAsIGxlbmd0aCk7Ci0KLSAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkrKykgewotICAgICAgICAgICAgICAgICAgICBMaXN0ZW5lciBsaXN0ZW5lciA9IG1MaXN0ZW5lcnMuZ2V0KGkpOwotICAgICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAgICAgbGlzdGVuZXIubUxpc3RlbmVyLm9uTm1lYVJlY2VpdmVkKHRpbWVzdGFtcCwgbm1lYSk7Ci0gICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBMb2cudyhUQUcsICJSZW1vdGVFeGNlcHRpb24gaW4gcmVwb3J0Tm1lYSIpOwotICAgICAgICAgICAgICAgICAgICAgICAgbUxpc3RlbmVycy5yZW1vdmUobGlzdGVuZXIpOwotICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWRqdXN0IGZvciBzaXplIG9mIGxpc3QgY2hhbmdpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgIHNpemUtLTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIC8qKgotICAgICAqIGNhbGxlZCBmcm9tIG5hdGl2ZSBjb2RlIHRvIHJlcXVlc3QgWFRSQSBkYXRhCi0gICAgICovCi0gICAgcHJpdmF0ZSB2b2lkIHh0cmFEb3dubG9hZFJlcXVlc3QoKSB7Ci0gICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAieHRyYURvd25sb2FkUmVxdWVzdCIpOwotICAgICAgICBtSGFuZGxlci5yZW1vdmVNZXNzYWdlcyhET1dOTE9BRF9YVFJBX0RBVEEpOwotICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZShNZXNzYWdlLm9idGFpbihtSGFuZGxlciwgRE9XTkxPQURfWFRSQV9EQVRBKSk7Ci0gICAgfQotCi0gICAgLy89PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAgLy8gTkkgQ2xpZW50IHN1cHBvcnQKLQkvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgICBwcml2YXRlIGZpbmFsIElOZXRJbml0aWF0ZWRMaXN0ZW5lciBtTmV0SW5pdGlhdGVkTGlzdGVuZXIgPSBuZXcgSU5ldEluaXRpYXRlZExpc3RlbmVyLlN0dWIoKSB7Ci0gICAgCS8vIFNlbmRzIGEgcmVzcG9uc2UgZm9yIGFuIE5JIHJlcWV1c3QgdG8gSEFMLgotICAgIAlwdWJsaWMgYm9vbGVhbiBzZW5kTmlSZXNwb25zZShpbnQgbm90aWZpY2F0aW9uSWQsIGludCB1c2VyUmVzcG9uc2UpCi0gICAgCXsKLSAgICAgICAgCS8vIFRPRE8gQWRkIFBlcm1pc3Npb24gY2hlY2sKLSAgICAJCQotICAgIAkJU3RyaW5nQnVpbGRlciBleHRyYXNCdWYgPSBuZXcgU3RyaW5nQnVpbGRlcigpOwotCi0gICAgCQlpZiAoREVCVUcpIExvZy5kKFRBRywgInNlbmROaVJlc3BvbnNlLCBub3RpZklkOiAiICsgbm90aWZpY2F0aW9uSWQgKwotICAgIAkJCQkiLCByZXNwb25zZTogIiArIHVzZXJSZXNwb25zZSk7Ci0gICAgCQkKLSAgICAJCW5hdGl2ZV9zZW5kX25pX3Jlc3BvbnNlKG5vdGlmaWNhdGlvbklkLCB1c2VyUmVzcG9uc2UpOwotICAgIAkJCi0gICAgCQlyZXR1cm4gdHJ1ZTsKLSAgICAJfSAgICAgICAgCi0gICAgfTsKLSAgICAgICAgCi0gICAgcHVibGljIElOZXRJbml0aWF0ZWRMaXN0ZW5lciBnZXROZXRJbml0aWF0ZWRMaXN0ZW5lcigpIHsKLSAgICAgICAgcmV0dXJuIG1OZXRJbml0aWF0ZWRMaXN0ZW5lcjsKLSAgICB9Ci0KLSAgICAvLyBDYWxsZWQgYnkgSk5JIGZ1bmN0aW9uIHRvIHJlcG9ydCBhbiBOSSByZXF1ZXN0LgotCUBTdXBwcmVzc1dhcm5pbmdzKCJkZXByZWNhdGlvbiIpCi0JcHVibGljIHZvaWQgcmVwb3J0TmlOb3RpZmljYXRpb24oCi0gICAgICAgIAlpbnQgbm90aWZpY2F0aW9uSWQsCi0gICAgICAgIAlpbnQgbmlUeXBlLAotICAgICAgICAJaW50IG5vdGlmeUZsYWdzLAotICAgICAgICAJaW50IHRpbWVvdXQsCi0gICAgICAgIAlpbnQgZGVmYXVsdFJlc3BvbnNlLAotICAgICAgICAJU3RyaW5nIHJlcXVlc3RvcklkLAotICAgICAgICAJU3RyaW5nIHRleHQsCi0gICAgICAgIAlpbnQgcmVxdWVzdG9ySWRFbmNvZGluZywKLSAgICAgICAgCWludCB0ZXh0RW5jb2RpbmcsCi0gICAgICAgIAlTdHJpbmcgZXh0cmFzICAvLyBFbmNvZGVkIGV4dHJhIGRhdGEKLSAgICAgICAgKQotCXsKLQkJTG9nLmkoVEFHLCAicmVwb3J0TmlOb3RpZmljYXRpb246IGVudGVyZWQiKTsKLQkJTG9nLmkoVEFHLCAibm90aWZpY2F0aW9uSWQ6ICIgKyBub3RpZmljYXRpb25JZCArCi0JCQkJIiwgbmlUeXBlOiAiICsgbmlUeXBlICsKLQkJCQkiLCBub3RpZnlGbGFnczogIiArIG5vdGlmeUZsYWdzICsKLQkJCQkiLCB0aW1lb3V0OiAiICsgdGltZW91dCArCi0JCQkJIiwgZGVmYXVsdFJlc3BvbnNlOiAiICsgZGVmYXVsdFJlc3BvbnNlKTsKLQkJCi0JCUxvZy5pKFRBRywgInJlcXVlc3RvcklkOiAiICsgcmVxdWVzdG9ySWQgKwotCQkJCSIsIHRleHQ6ICIgKyB0ZXh0ICsKLQkJCQkiLCByZXF1ZXN0b3JJZEVuY29kaW5nOiAiICsgcmVxdWVzdG9ySWRFbmNvZGluZyArCi0JCQkJIiwgdGV4dEVuY29kaW5nOiAiICsgdGV4dEVuY29kaW5nKTsKLQkJCi0JCUdwc05pTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbiA9IG5ldyBHcHNOaU5vdGlmaWNhdGlvbigpOwotCQkKLQkJbm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvbklkID0gbm90aWZpY2F0aW9uSWQ7Ci0JCW5vdGlmaWNhdGlvbi5uaVR5cGUgPSBuaVR5cGU7Ci0JCW5vdGlmaWNhdGlvbi5uZWVkTm90aWZ5ID0gKG5vdGlmeUZsYWdzICYgR3BzTmV0SW5pdGlhdGVkSGFuZGxlci5HUFNfTklfTkVFRF9OT1RJRlkpICE9IDA7Ci0JCW5vdGlmaWNhdGlvbi5uZWVkVmVyaWZ5ID0gKG5vdGlmeUZsYWdzICYgR3BzTmV0SW5pdGlhdGVkSGFuZGxlci5HUFNfTklfTkVFRF9WRVJJRlkpICE9IDA7Ci0JCW5vdGlmaWNhdGlvbi5wcml2YWN5T3ZlcnJpZGUgPSAobm90aWZ5RmxhZ3MgJiBHcHNOZXRJbml0aWF0ZWRIYW5kbGVyLkdQU19OSV9QUklWQUNZX09WRVJSSURFKSAhPSAwOwotCQlub3RpZmljYXRpb24udGltZW91dCA9IHRpbWVvdXQ7Ci0JCW5vdGlmaWNhdGlvbi5kZWZhdWx0UmVzcG9uc2UgPSBkZWZhdWx0UmVzcG9uc2U7Ci0JCW5vdGlmaWNhdGlvbi5yZXF1ZXN0b3JJZCA9IHJlcXVlc3RvcklkOwotCQlub3RpZmljYXRpb24udGV4dCA9IHRleHQ7Ci0JCW5vdGlmaWNhdGlvbi5yZXF1ZXN0b3JJZEVuY29kaW5nID0gcmVxdWVzdG9ySWRFbmNvZGluZzsKLQkJbm90aWZpY2F0aW9uLnRleHRFbmNvZGluZyA9IHRleHRFbmNvZGluZzsKLQkJCi0JCS8vIFByb2Nlc3MgZXh0cmFzLCBhc3N1bWluZyB0aGUgZm9ybWF0IGlzCi0JCS8vIG9uZSBvZiBtb3JlIGxpbmVzIG9mICJrZXkgPSB2YWx1ZSIKLQkJQnVuZGxlIGJ1bmRsZSA9IG5ldyBCdW5kbGUoKTsKLQkJCi0JCWlmIChleHRyYXMgPT0gbnVsbCkgZXh0cmFzID0gIiI7Ci0JCVByb3BlcnRpZXMgZXh0cmFQcm9wID0gbmV3IFByb3BlcnRpZXMoKTsKLQkJCi0JCXRyeSB7Ci0JCQlleHRyYVByb3AubG9hZChuZXcgU3RyaW5nQnVmZmVySW5wdXRTdHJlYW0oZXh0cmFzKSk7Ci0JCX0KLQkJY2F0Y2ggKElPRXhjZXB0aW9uIGUpCi0JCXsKLQkJCUxvZy5lKFRBRywgInJlcG9ydE5pTm90aWZpY2F0aW9uIGNhbm5vdCBwYXJzZSBleHRyYXMgZGF0YTogIiArIGV4dHJhcyk7Ci0JCX0KLQkJCi0JCWZvciAoRW50cnk8T2JqZWN0LCBPYmplY3Q+IGVudCA6IGV4dHJhUHJvcC5lbnRyeVNldCgpKQotCQl7Ci0JCQlidW5kbGUucHV0U3RyaW5nKChTdHJpbmcpIGVudC5nZXRLZXkoKSwgKFN0cmluZykgZW50LmdldFZhbHVlKCkpOwotCQl9CQkKLQkJCi0JCW5vdGlmaWNhdGlvbi5leHRyYXMgPSBidW5kbGU7Ci0JCQotCQltTklIYW5kbGVyLmhhbmRsZU5pTm90aWZpY2F0aW9uKG5vdGlmaWNhdGlvbik7CQkKLQl9Ci0KLSAgICAvLyB0aGlzIHRocmVhZCBpcyB1c2VkIHRvIHJlY2VpdmUgZXZlbnRzIGZyb20gdGhlIG5hdGl2ZSBjb2RlLgotICAgIC8vIG5hdGl2ZV93YWl0X2Zvcl9ldmVudCgpIHdpbGwgY2FsbGJhY2sgdG8gdXMgdmlhIHJlcG9ydExvY2F0aW9uKCksIHJlcG9ydFN0YXR1cygpLCBldGMuCi0gICAgLy8gdGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBuYXRpdmUgY29kZSBjYW5ub3QgY2FsbCBKYXZhIG9uIGEgdGhyZWFkIHRoYXQgdGhlIEpWTSBkb2VzCi0gICAgLy8gbm90IGtub3cgYWJvdXQuCi0gICAgcHJpdmF0ZSBmaW5hbCBjbGFzcyBHcHNFdmVudFRocmVhZCBleHRlbmRzIFRocmVhZCB7Ci0KLSAgICAgICAgcHVibGljIEdwc0V2ZW50VGhyZWFkKCkgewotICAgICAgICAgICAgc3VwZXIoIkdwc0V2ZW50VGhyZWFkIik7Ci0gICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7Ci0gICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgIkdwc0V2ZW50VGhyZWFkIHN0YXJ0aW5nIik7Ci0gICAgICAgICAgICAvLyBFeGl0IGFzIHNvb24gYXMgZGlzYWJsZSgpIGlzIGNhbGxlZCBpbnN0ZWFkIG9mIHdhaXRpbmcgZm9yIHRoZSBHUFMgdG8gc3RvcC4KLSAgICAgICAgICAgIHdoaWxlIChtRW5hYmxlZCkgewotICAgICAgICAgICAgICAgIC8vIHRoaXMgd2lsbCB3YWl0IGZvciBhbiBldmVudCBmcm9tIHRoZSBHUFMsCi0gICAgICAgICAgICAgICAgLy8gd2hpY2ggd2lsbCBiZSByZXBvcnRlZCB2aWEgcmVwb3J0TG9jYXRpb24gb3IgcmVwb3J0U3RhdHVzCi0gICAgICAgICAgICAgICAgbmF0aXZlX3dhaXRfZm9yX2V2ZW50KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgIkdwc0V2ZW50VGhyZWFkIGV4aXRpbmciKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHByaXZhdGUgZmluYWwgY2xhc3MgUHJvdmlkZXJIYW5kbGVyIGV4dGVuZHMgSGFuZGxlciB7Ci0gICAgICAgIEBPdmVycmlkZQotICAgICAgICBwdWJsaWMgdm9pZCBoYW5kbGVNZXNzYWdlKE1lc3NhZ2UgbXNnKQotICAgICAgICB7Ci0gICAgICAgICAgICBzd2l0Y2ggKG1zZy53aGF0KSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBFTkFCTEU6Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtc2cuYXJnMSA9PSAxKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVFbmFibGUoKTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZURpc2FibGUoKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBjYXNlIEVOQUJMRV9UUkFDS0lORzoKLSAgICAgICAgICAgICAgICAgICAgaGFuZGxlRW5hYmxlTG9jYXRpb25UcmFja2luZyhtc2cuYXJnMSA9PSAxKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBVUERBVEVfTkVUV09SS19TVEFURToKLSAgICAgICAgICAgICAgICAgICAgaGFuZGxlVXBkYXRlTmV0d29ya1N0YXRlKG1zZy5hcmcxLCAoTmV0d29ya0luZm8pbXNnLm9iaik7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgSU5KRUNUX05UUF9USU1FOgotICAgICAgICAgICAgICAgICAgICBoYW5kbGVJbmplY3ROdHBUaW1lKCk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgRE9XTkxPQURfWFRSQV9EQVRBOgotICAgICAgICAgICAgICAgICAgICBpZiAobmF0aXZlX3N1cHBvcnRzX3h0cmEoKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlRG93bmxvYWRYdHJhRGF0YSgpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgVVBEQVRFX0xPQ0FUSU9OOgotICAgICAgICAgICAgICAgICAgICBoYW5kbGVVcGRhdGVMb2NhdGlvbigoTG9jYXRpb24pbXNnLm9iaik7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgQUREX0xJU1RFTkVSOgotICAgICAgICAgICAgICAgICAgICBoYW5kbGVBZGRMaXN0ZW5lcihtc2cuYXJnMSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgUkVNT1ZFX0xJU1RFTkVSOgotICAgICAgICAgICAgICAgICAgICBoYW5kbGVSZW1vdmVMaXN0ZW5lcihtc2cuYXJnMSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfTsKLQotICAgIHByaXZhdGUgZmluYWwgY2xhc3MgR3BzTG9jYXRpb25Qcm92aWRlclRocmVhZCBleHRlbmRzIFRocmVhZCB7Ci0KLSAgICAgICAgcHVibGljIEdwc0xvY2F0aW9uUHJvdmlkZXJUaHJlYWQoKSB7Ci0gICAgICAgICAgICBzdXBlcigiR3BzTG9jYXRpb25Qcm92aWRlciIpOwotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgewotICAgICAgICAgICAgUHJvY2Vzcy5zZXRUaHJlYWRQcmlvcml0eShQcm9jZXNzLlRIUkVBRF9QUklPUklUWV9CQUNLR1JPVU5EKTsKLSAgICAgICAgICAgIGluaXRpYWxpemUoKTsKLSAgICAgICAgICAgIExvb3Blci5wcmVwYXJlKCk7Ci0gICAgICAgICAgICBtSGFuZGxlciA9IG5ldyBQcm92aWRlckhhbmRsZXIoKTsKLSAgICAgICAgICAgIC8vIHNpZ25hbCB3aGVuIHdlIGFyZSBpbml0aWFsaXplZCBhbmQgcmVhZHkgdG8gZ28KLSAgICAgICAgICAgIG1Jbml0aWFsaXplZExhdGNoLmNvdW50RG93bigpOwotICAgICAgICAgICAgTG9vcGVyLmxvb3AoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIGZvciBHUFMgU1Ygc3RhdGlzdGljcwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNQVhfU1ZTID0gMzI7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEVQSEVNRVJJU19NQVNLID0gMDsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQUxNQU5BQ19NQVNLID0gMTsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgVVNFRF9GT1JfRklYX01BU0sgPSAyOwotCi0gICAgLy8gcHJlYWxsb2NhdGVkIGFycmF5cywgdG8gYXZvaWQgbWVtb3J5IGFsbG9jYXRpb24gaW4gcmVwb3J0U3RhdHVzKCkKLSAgICBwcml2YXRlIGludCBtU3ZzW10gPSBuZXcgaW50W01BWF9TVlNdOwotICAgIHByaXZhdGUgZmxvYXQgbVNucnNbXSA9IG5ldyBmbG9hdFtNQVhfU1ZTXTsKLSAgICBwcml2YXRlIGZsb2F0IG1TdkVsZXZhdGlvbnNbXSA9IG5ldyBmbG9hdFtNQVhfU1ZTXTsKLSAgICBwcml2YXRlIGZsb2F0IG1TdkF6aW11dGhzW10gPSBuZXcgZmxvYXRbTUFYX1NWU107Ci0gICAgcHJpdmF0ZSBpbnQgbVN2TWFza3NbXSA9IG5ldyBpbnRbM107Ci0gICAgcHJpdmF0ZSBpbnQgbVN2Q291bnQ7Ci0gICAgLy8gcHJlYWxsb2NhdGVkIHRvIGF2b2lkIG1lbW9yeSBhbGxvY2F0aW9uIGluIHJlcG9ydE5tZWEoKQotICAgIHByaXZhdGUgYnl0ZVtdIG1ObWVhQnVmZmVyID0gbmV3IGJ5dGVbMTIwXTsKLQotICAgIHN0YXRpYyB7IGNsYXNzX2luaXRfbmF0aXZlKCk7IH0KLSAgICBwcml2YXRlIHN0YXRpYyBuYXRpdmUgdm9pZCBjbGFzc19pbml0X25hdGl2ZSgpOwotICAgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSBib29sZWFuIG5hdGl2ZV9pc19zdXBwb3J0ZWQoKTsKLQotICAgIHByaXZhdGUgbmF0aXZlIGJvb2xlYW4gbmF0aXZlX2luaXQoKTsKLSAgICBwcml2YXRlIG5hdGl2ZSB2b2lkIG5hdGl2ZV9kaXNhYmxlKCk7Ci0gICAgcHJpdmF0ZSBuYXRpdmUgdm9pZCBuYXRpdmVfY2xlYW51cCgpOwotICAgIHByaXZhdGUgbmF0aXZlIGJvb2xlYW4gbmF0aXZlX3N0YXJ0KGludCBwb3NpdGlvbk1vZGUsIGJvb2xlYW4gc2luZ2xlRml4LCBpbnQgZml4SW50ZXJ2YWwpOwotICAgIHByaXZhdGUgbmF0aXZlIGJvb2xlYW4gbmF0aXZlX3N0b3AoKTsKLSAgICBwcml2YXRlIG5hdGl2ZSB2b2lkIG5hdGl2ZV9zZXRfZml4X2ZyZXF1ZW5jeShpbnQgZml4RnJlcXVlbmN5KTsKLSAgICBwcml2YXRlIG5hdGl2ZSB2b2lkIG5hdGl2ZV9kZWxldGVfYWlkaW5nX2RhdGEoaW50IGZsYWdzKTsKLSAgICBwcml2YXRlIG5hdGl2ZSB2b2lkIG5hdGl2ZV93YWl0X2Zvcl9ldmVudCgpOwotICAgIC8vIHJldHVybnMgbnVtYmVyIG9mIFNWcwotICAgIC8vIG1hc2tbMF0gaXMgZXBoZW1lcmlzIG1hc2sgYW5kIG1hc2tbMV0gaXMgYWxtYW5hYyBtYXNrCi0gICAgcHJpdmF0ZSBuYXRpdmUgaW50IG5hdGl2ZV9yZWFkX3N2X3N0YXR1cyhpbnRbXSBzdnMsIGZsb2F0W10gc25ycywKLSAgICAgICAgICAgIGZsb2F0W10gZWxldmF0aW9ucywgZmxvYXRbXSBhemltdXRocywgaW50W10gbWFza3MpOwotICAgIHByaXZhdGUgbmF0aXZlIGludCBuYXRpdmVfcmVhZF9ubWVhKGludCBpbmRleCwgYnl0ZVtdIGJ1ZmZlciwgaW50IGJ1ZmZlclNpemUpOwotICAgIHByaXZhdGUgbmF0aXZlIHZvaWQgbmF0aXZlX2luamVjdF9sb2NhdGlvbihkb3VibGUgbGF0aXR1ZGUsIGRvdWJsZSBsb25naXR1ZGUsIGZsb2F0IGFjY3VyYWN5KTsKLQotICAgIC8vIFhUUkEgU3VwcG9ydAotICAgIHByaXZhdGUgbmF0aXZlIHZvaWQgbmF0aXZlX2luamVjdF90aW1lKGxvbmcgdGltZSwgbG9uZyB0aW1lUmVmZXJlbmNlLCBpbnQgdW5jZXJ0YWludHkpOwotICAgIHByaXZhdGUgbmF0aXZlIGJvb2xlYW4gbmF0aXZlX3N1cHBvcnRzX3h0cmEoKTsKLSAgICBwcml2YXRlIG5hdGl2ZSB2b2lkIG5hdGl2ZV9pbmplY3RfeHRyYV9kYXRhKGJ5dGVbXSBkYXRhLCBpbnQgbGVuZ3RoKTsKLQotICAgIC8vIERFQlVHIFN1cHBvcnQKLSAgICBwcml2YXRlIG5hdGl2ZSBTdHJpbmcgbmF0aXZlX2dldF9pbnRlcm5hbF9zdGF0ZSgpOwotCi0gICAgLy8gQUdQUyBTdXBwb3J0Ci0gICAgcHJpdmF0ZSBuYXRpdmUgdm9pZCBuYXRpdmVfYWdwc19kYXRhX2Nvbm5fb3BlbihTdHJpbmcgYXBuKTsKLSAgICBwcml2YXRlIG5hdGl2ZSB2b2lkIG5hdGl2ZV9hZ3BzX2RhdGFfY29ubl9jbG9zZWQoKTsKLSAgICBwcml2YXRlIG5hdGl2ZSB2b2lkIG5hdGl2ZV9hZ3BzX2RhdGFfY29ubl9mYWlsZWQoKTsKLSAgICBwcml2YXRlIG5hdGl2ZSB2b2lkIG5hdGl2ZV9zZXRfYWdwc19zZXJ2ZXIoaW50IHR5cGUsIFN0cmluZyBob3N0bmFtZSwgaW50IHBvcnQpOwotCi0gICAgLy8gTmV0d29yay1pbml0aWF0ZWQgKE5JKSBTdXBwb3J0Ci0gICAgcHJpdmF0ZSBuYXRpdmUgdm9pZCBuYXRpdmVfc2VuZF9uaV9yZXNwb25zZShpbnQgbm90aWZpY2F0aW9uSWQsIGludCB1c2VyUmVzcG9uc2UpOwotfQpkaWZmIC0tZ2l0IGEvbG9jYXRpb24vamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9sb2NhdGlvbi9HcHNOZXRJbml0aWF0ZWRIYW5kbGVyLmphdmEgYi9sb2NhdGlvbi9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL2xvY2F0aW9uL0dwc05ldEluaXRpYXRlZEhhbmRsZXIuamF2YQppbmRleCBhNTQ2NmQxLi5kM2E3MWIzIDEwMDc1NQotLS0gYS9sb2NhdGlvbi9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL2xvY2F0aW9uL0dwc05ldEluaXRpYXRlZEhhbmRsZXIuamF2YQorKysgYi9sb2NhdGlvbi9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL2xvY2F0aW9uL0dwc05ldEluaXRpYXRlZEhhbmRsZXIuamF2YQpAQCAtMjMsNiArMjMsNyBAQAogaW1wb3J0IGFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQ7CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKK2ltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uTWFuYWdlcjsKIGltcG9ydCBhbmRyb2lkLm9zLkJ1bmRsZTsKIGltcG9ydCBhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbjsKIGltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOwpAQCAtODEsNyArODIsNyBAQAogICAgIHByaXZhdGUgZmluYWwgQ29udGV4dCBtQ29udGV4dDsKICAgICAKICAgICAvLyBwYXJlbnQgZ3BzIGxvY2F0aW9uIHByb3ZpZGVyCi0gICAgcHJpdmF0ZSBmaW5hbCBHcHNMb2NhdGlvblByb3ZpZGVyIG1HcHNMb2NhdGlvblByb3ZpZGVyOworICAgIHByaXZhdGUgZmluYWwgTG9jYXRpb25NYW5hZ2VyIG1Mb2NhdGlvbk1hbmFnZXI7CiAgICAgCiAgICAgLy8gY29uZmlndXJhdGlvbiBvZiBub3RpZmljYWl0b24gYmVoYXZpb3IKICAgICBwcml2YXRlIGJvb2xlYW4gbVBsYXlTb3VuZHMgPSBmYWxzZTsKQEAgLTkzLDI1ICs5NCwyNSBAQAogICAgICAgICAKICAgICBwdWJsaWMgc3RhdGljIGNsYXNzIEdwc05pTm90aWZpY2F0aW9uCiAgICAgewotICAgIAlpbnQgbm90aWZpY2F0aW9uSWQ7Ci0gICAgCWludCBuaVR5cGU7Ci0gICAgCWJvb2xlYW4gbmVlZE5vdGlmeTsKLSAgICAJYm9vbGVhbiBuZWVkVmVyaWZ5OwotICAgIAlib29sZWFuIHByaXZhY3lPdmVycmlkZTsKLSAgICAJaW50IHRpbWVvdXQ7Ci0gICAgCWludCBkZWZhdWx0UmVzcG9uc2U7Ci0gICAgCVN0cmluZyByZXF1ZXN0b3JJZDsKLSAgICAJU3RyaW5nIHRleHQ7Ci0gICAgCWludCByZXF1ZXN0b3JJZEVuY29kaW5nOwotICAgIAlpbnQgdGV4dEVuY29kaW5nOwotICAgIAlCdW5kbGUgZXh0cmFzOworICAgICAgICBwdWJsaWMgaW50IG5vdGlmaWNhdGlvbklkOworICAgICAgICBwdWJsaWMgaW50IG5pVHlwZTsKKyAgICAgICAgcHVibGljIGJvb2xlYW4gbmVlZE5vdGlmeTsKKyAgICAgICAgcHVibGljIGJvb2xlYW4gbmVlZFZlcmlmeTsKKyAgICAgICAgcHVibGljIGJvb2xlYW4gcHJpdmFjeU92ZXJyaWRlOworICAgICAgICBwdWJsaWMgaW50IHRpbWVvdXQ7CisgICAgICAgIHB1YmxpYyBpbnQgZGVmYXVsdFJlc3BvbnNlOworICAgICAgICBwdWJsaWMgU3RyaW5nIHJlcXVlc3RvcklkOworICAgICAgICBwdWJsaWMgU3RyaW5nIHRleHQ7CisgICAgICAgIHB1YmxpYyBpbnQgcmVxdWVzdG9ySWRFbmNvZGluZzsKKyAgICAgICAgcHVibGljIGludCB0ZXh0RW5jb2Rpbmc7CisgICAgICAgIHB1YmxpYyBCdW5kbGUgZXh0cmFzOwogICAgIH07CiAgICAgCiAgICAgcHVibGljIHN0YXRpYyBjbGFzcyBHcHNOaVJlc3BvbnNlIHsKLSAgICAJLyogVXNlciByZXBvbnNlLCBvbmUgb2YgdGhlIHZhbHVlcyBpbiBHcHNVc2VyUmVzcG9uc2VUeXBlICovCi0gICAgCWludCB1c2VyUmVzcG9uc2U7Ci0gICAgCS8qIE9wdGlvbmFsIGV4dHJhIGRhdGEgdG8gcGFzcyB3aXRoIHRoZSB1c2VyIHJlc3BvbnNlICovCi0gICAgCUJ1bmRsZSBleHRyYXM7CisgICAgICAgIC8qIFVzZXIgcmVwb25zZSwgb25lIG9mIHRoZSB2YWx1ZXMgaW4gR3BzVXNlclJlc3BvbnNlVHlwZSAqLworICAgICAgICBpbnQgdXNlclJlc3BvbnNlOworICAgICAgICAvKiBPcHRpb25hbCBleHRyYSBkYXRhIHRvIHBhc3Mgd2l0aCB0aGUgdXNlciByZXNwb25zZSAqLworICAgICAgICBCdW5kbGUgZXh0cmFzOwogICAgIH07CiAgICAgCiAgICAgLyoqCkBAIC0xMjIsNjMgKzEyMyw1NyBAQAogICAgICAqLwogICAgIHByaXZhdGUgTm90aWZpY2F0aW9uIG1OaU5vdGlmaWNhdGlvbjsKICAgICAKLSAgICBwdWJsaWMgR3BzTmV0SW5pdGlhdGVkSGFuZGxlcihDb250ZXh0IGNvbnRleHQsIEdwc0xvY2F0aW9uUHJvdmlkZXIgZ3BzTG9jYXRpb25Qcm92aWRlcikgewotICAgIAltQ29udGV4dCA9IGNvbnRleHQ7ICAgICAgIAotICAgIAltR3BzTG9jYXRpb25Qcm92aWRlciA9IGdwc0xvY2F0aW9uUHJvdmlkZXI7CisgICAgcHVibGljIEdwc05ldEluaXRpYXRlZEhhbmRsZXIoQ29udGV4dCBjb250ZXh0KSB7CisgICAgICAgIG1Db250ZXh0ID0gY29udGV4dDsKKyAgICAgICAgbUxvY2F0aW9uTWFuYWdlciA9IChMb2NhdGlvbk1hbmFnZXIpY29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuTE9DQVRJT05fU0VSVklDRSk7CiAgICAgfQogICAgIAogICAgIC8vIEhhbmRsZXMgTkkgZXZlbnRzIGZyb20gSEFMCiAgICAgcHVibGljIHZvaWQgaGFuZGxlTmlOb3RpZmljYXRpb24oR3BzTmlOb3RpZmljYXRpb24gbm90aWYpCiAgICAgewotICAgIAlpZiAoREVCVUcpIExvZy5kKFRBRywgImhhbmRsZU5pTm90aWZpY2F0aW9uIiArICIgbm90aWZpY2F0aW9uSWQ6ICIgKyBub3RpZi5ub3RpZmljYXRpb25JZCAKLSAgICAJCQkrICIgcmVxdWVzdG9ySWQ6ICIgKyBub3RpZi5yZXF1ZXN0b3JJZCArICIgdGV4dDogIiArIG5vdGlmLnRleHQpOwotICAgIAkKLSAgICAJLy8gTm90aWZ5IGFuZCB2ZXJpZnkgd2l0aCBpbW1lZGlhdGUgcG9wLXVwCi0gICAgCWlmIChub3RpZi5uZWVkTm90aWZ5ICYmIG5vdGlmLm5lZWRWZXJpZnkgJiYgbVBvcHVwSW1tZWRpYXRlbHkpCi0gICAgCXsKLSAgICAJCS8vIFBvcHVwIHRoZSBkaWFsb2cgYm94IG5vdwotICAgIAkJb3Blbk5pRGlhbG9nKG5vdGlmKTsKLSAgICAJfQotICAgIAkKLSAgICAJLy8gTm90aWZ5IG9ubHksIG9yIGRlbGF5ZWQgcG9wLXVwIChjaGFuZ2UgbVBvcHVwSW1tZWRpYXRlbHkgdG8gRkFMU0UpIAotICAgIAlpZiAobm90aWYubmVlZE5vdGlmeSAmJiAhbm90aWYubmVlZFZlcmlmeSB8fAotICAgIAkJbm90aWYubmVlZE5vdGlmeSAmJiBub3RpZi5uZWVkVmVyaWZ5ICYmICFtUG9wdXBJbW1lZGlhdGVseSkgCi0gICAgCXsKLSAgICAJCS8vIFNob3cgdGhlIG5vdGlmaWNhdGlvbgorICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgImhhbmRsZU5pTm90aWZpY2F0aW9uIiArICIgbm90aWZpY2F0aW9uSWQ6ICIgKyBub3RpZi5ub3RpZmljYXRpb25JZAorICAgICAgICAgICAgICAgICsgIiByZXF1ZXN0b3JJZDogIiArIG5vdGlmLnJlcXVlc3RvcklkICsgIiB0ZXh0OiAiICsgbm90aWYudGV4dCk7CiAKLSAgICAJCS8vIGlmIG1Qb3B1cEltbWVkaWF0ZWx5ID09IEZBTFNFIGFuZCBuZWVkVmVyaWZ5ID09IFRSVUUsIGEgZGlhbG9nIHdpbGwgYmUgb3BlbmVkCi0gICAgCQkvLyB3aGVuIHRoZSB1c2VyIG9wZW5zIHRoZSBub3RpZmljYXRpb24gbWVzc2FnZQotICAgIAkJCi0gICAgCQlzZXROaU5vdGlmaWNhdGlvbihub3RpZik7Ci0gICAgCX0KLSAgICAJCi0gICAgCS8vIEFDQ0VQVCBjYXNlczogMS4gTm90aWZ5LCBubyB2ZXJpZnk7IDIuIG5vIG5vdGlmeSwgbm8gdmVyaWZ5OyAzLiBwcml2YWN5IG92ZXJyaWRlLgotICAgIAlpZiAoIG5vdGlmLm5lZWROb3RpZnkgJiYgIW5vdGlmLm5lZWRWZXJpZnkgfHwgCi0gICAgCQkhbm90aWYubmVlZE5vdGlmeSAmJiAhbm90aWYubmVlZFZlcmlmeSB8fCAKLSAgICAJCSBub3RpZi5wcml2YWN5T3ZlcnJpZGUpCi0gICAgCXsKLSAgICAJCXRyeSB7Ci0gICAgCQkJbUdwc0xvY2F0aW9uUHJvdmlkZXIuZ2V0TmV0SW5pdGlhdGVkTGlzdGVuZXIoKS5zZW5kTmlSZXNwb25zZShub3RpZi5ub3RpZmljYXRpb25JZCwgR1BTX05JX1JFU1BPTlNFX0FDQ0VQVCk7Ci0gICAgCQl9IAotICAgIAkJY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKQotICAgIAkJewotICAgIAkJCUxvZy5lKFRBRywgZS5nZXRNZXNzYWdlKCkpOwotICAgIAkJfQotICAgIAl9Ci0gICAgCQotICAgIAkvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwotICAgIAkvLyAgIEEgbm90ZSBhYm91dCB0aW1lb3V0Ci0gICAgCS8vICAgQWNjb3JkaW5nIHRvIHRoZSBwcm90b2NvbCwgaW4gdGhlIG5lZWRfbm90aWZ5IGFuZCBuZWVkX3ZlcmlmeSBjYXNlLAotICAgIAkvLyAgIGEgZGVmYXVsdCByZXNwb25zZSBzaG91bGQgYmUgc2VudCB3aGVuIHRpbWUgb3V0LgotICAgIAkvLyAgIAotICAgIAkvLyAgIEluIHNvbWUgR1BTIGhhcmR3YXJlLCB0aGUgR1BTIGRyaXZlciAodW5kZXIgSEFMKSBjYW4gaGFuZGxlIHRoZSB0aW1lb3V0IGNhc2UKLSAgICAJLy8gICBhbmQgdGhpcyBjbGFzcyBHcHNOZXRJbml0aWF0ZWRIYW5kbGVyIGRvZXMgbm90IG5lZWQgdG8gZG8gYW55dGhpbmcuCi0gICAgCS8vICAgCi0gICAgCS8vICAgSG93ZXZlciwgdGhlIFVJIHNob3VsZCBhdCBsZWFzdCBjbG9zZSB0aGUgZGlhbG9nIHdoZW4gdGltZW91dC4gRnVydGhlciwgCi0gICAgCS8vICAgZm9yIG1vcmUgZ2VuZXJhbCBoYW5kbGluZywgdGltZW91dCByZXNwb25zZSBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIEhhbmRsZXIgaGVyZS4KLSAgICAJLy8gICAgCSAgICAJCisgICAgICAgIC8vIE5vdGlmeSBhbmQgdmVyaWZ5IHdpdGggaW1tZWRpYXRlIHBvcC11cAorICAgICAgICBpZiAobm90aWYubmVlZE5vdGlmeSAmJiBub3RpZi5uZWVkVmVyaWZ5ICYmIG1Qb3B1cEltbWVkaWF0ZWx5KQorICAgICAgICB7CisgICAgICAgICAgICAvLyBQb3B1cCB0aGUgZGlhbG9nIGJveCBub3cKKyAgICAgICAgICAgIG9wZW5OaURpYWxvZyhub3RpZik7CisgICAgICAgIH0KKworICAgICAgICAvLyBOb3RpZnkgb25seSwgb3IgZGVsYXllZCBwb3AtdXAgKGNoYW5nZSBtUG9wdXBJbW1lZGlhdGVseSB0byBGQUxTRSkKKyAgICAgICAgaWYgKG5vdGlmLm5lZWROb3RpZnkgJiYgIW5vdGlmLm5lZWRWZXJpZnkgfHwKKyAgICAgICAgICAgIG5vdGlmLm5lZWROb3RpZnkgJiYgbm90aWYubmVlZFZlcmlmeSAmJiAhbVBvcHVwSW1tZWRpYXRlbHkpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFNob3cgdGhlIG5vdGlmaWNhdGlvbgorCisgICAgICAgICAgICAvLyBpZiBtUG9wdXBJbW1lZGlhdGVseSA9PSBGQUxTRSBhbmQgbmVlZFZlcmlmeSA9PSBUUlVFLCBhIGRpYWxvZyB3aWxsIGJlIG9wZW5lZAorICAgICAgICAgICAgLy8gd2hlbiB0aGUgdXNlciBvcGVucyB0aGUgbm90aWZpY2F0aW9uIG1lc3NhZ2UKKworICAgICAgICAgICAgc2V0TmlOb3RpZmljYXRpb24obm90aWYpOworICAgICAgICB9CisKKyAgICAgICAgLy8gQUNDRVBUIGNhc2VzOiAxLiBOb3RpZnksIG5vIHZlcmlmeTsgMi4gbm8gbm90aWZ5LCBubyB2ZXJpZnk7IDMuIHByaXZhY3kgb3ZlcnJpZGUuCisgICAgICAgIGlmICggbm90aWYubmVlZE5vdGlmeSAmJiAhbm90aWYubmVlZFZlcmlmeSB8fAorICAgICAgICAgICAgIW5vdGlmLm5lZWROb3RpZnkgJiYgIW5vdGlmLm5lZWRWZXJpZnkgfHwKKyAgICAgICAgICAgICBub3RpZi5wcml2YWN5T3ZlcnJpZGUpCisgICAgICAgIHsKKyAgICAgICAgICAgIG1Mb2NhdGlvbk1hbmFnZXIuc2VuZE5pUmVzcG9uc2Uobm90aWYubm90aWZpY2F0aW9uSWQsIEdQU19OSV9SRVNQT05TRV9BQ0NFUFQpOworICAgICAgICB9CisKKyAgICAgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKyAgICAgICAgLy8gICBBIG5vdGUgYWJvdXQgdGltZW91dAorICAgICAgICAvLyAgIEFjY29yZGluZyB0byB0aGUgcHJvdG9jb2wsIGluIHRoZSBuZWVkX25vdGlmeSBhbmQgbmVlZF92ZXJpZnkgY2FzZSwKKyAgICAgICAgLy8gICBhIGRlZmF1bHQgcmVzcG9uc2Ugc2hvdWxkIGJlIHNlbnQgd2hlbiB0aW1lIG91dC4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gICBJbiBzb21lIEdQUyBoYXJkd2FyZSwgdGhlIEdQUyBkcml2ZXIgKHVuZGVyIEhBTCkgY2FuIGhhbmRsZSB0aGUgdGltZW91dCBjYXNlCisgICAgICAgIC8vICAgYW5kIHRoaXMgY2xhc3MgR3BzTmV0SW5pdGlhdGVkSGFuZGxlciBkb2VzIG5vdCBuZWVkIHRvIGRvIGFueXRoaW5nLgorICAgICAgICAvLworICAgICAgICAvLyAgIEhvd2V2ZXIsIHRoZSBVSSBzaG91bGQgYXQgbGVhc3QgY2xvc2UgdGhlIGRpYWxvZyB3aGVuIHRpbWVvdXQuIEZ1cnRoZXIsCisgICAgICAgIC8vICAgZm9yIG1vcmUgZ2VuZXJhbCBoYW5kbGluZywgdGltZW91dCByZXNwb25zZSBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIEhhbmRsZXIgaGVyZS4KKyAgICAgICAgLy8KICAgICB9Ci0gICAgCisKICAgICAvLyBTZXRzIHRoZSBOSSBub3RpZmljYXRpb24uCiAgICAgcHJpdmF0ZSBzeW5jaHJvbml6ZWQgdm9pZCBzZXROaU5vdGlmaWNhdGlvbihHcHNOaU5vdGlmaWNhdGlvbiBub3RpZikgewogICAgICAgICBOb3RpZmljYXRpb25NYW5hZ2VyIG5vdGlmaWNhdGlvbk1hbmFnZXIgPSAoTm90aWZpY2F0aW9uTWFuYWdlcikgbUNvbnRleHQKQEAgLTE4NiwyNzIgKzE4MSwyNzIgQEAKICAgICAgICAgaWYgKG5vdGlmaWNhdGlvbk1hbmFnZXIgPT0gbnVsbCkgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9Ci0gICAgICAKLSAgICAJU3RyaW5nIHRpdGxlID0gZ2V0Tm90aWZUaXRsZShub3RpZik7Ci0gICAgCVN0cmluZyBtZXNzYWdlID0gZ2V0Tm90aWZNZXNzYWdlKG5vdGlmKTsKLSAgICAgICAgCisKKyAgICAgICAgU3RyaW5nIHRpdGxlID0gZ2V0Tm90aWZUaXRsZShub3RpZik7CisgICAgICAgIFN0cmluZyBtZXNzYWdlID0gZ2V0Tm90aWZNZXNzYWdlKG5vdGlmKTsKKwogICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgInNldE5pTm90aWZpY2F0aW9uLCBub3RpZnlJZDogIiArIG5vdGlmLm5vdGlmaWNhdGlvbklkICsKLSAgICAgICAgCQkiLCB0aXRsZTogIiArIHRpdGxlICsKLSAgICAgICAgCQkiLCBtZXNzYWdlOiAiICsgbWVzc2FnZSk7Ci0gICAgICAgIAotICAgIAkvLyBDb25zdHJ1Y3QgTm90aWZpY2F0aW9uCi0gICAgCWlmIChtTmlOb3RpZmljYXRpb24gPT0gbnVsbCkgewotICAgICAgICAJbU5pTm90aWZpY2F0aW9uID0gbmV3IE5vdGlmaWNhdGlvbigpOwotICAgICAgICAJbU5pTm90aWZpY2F0aW9uLmljb24gPSBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX2dwc19vbjsgLyogQ2hhbmdlIG5vdGlmaWNhdGlvbiBpY29uIGhlcmUgKi8KLSAgICAgICAgCW1OaU5vdGlmaWNhdGlvbi53aGVuID0gMDsKKyAgICAgICAgICAgICAgICAiLCB0aXRsZTogIiArIHRpdGxlICsKKyAgICAgICAgICAgICAgICAiLCBtZXNzYWdlOiAiICsgbWVzc2FnZSk7CisKKyAgICAgICAgLy8gQ29uc3RydWN0IE5vdGlmaWNhdGlvbgorICAgICAgICBpZiAobU5pTm90aWZpY2F0aW9uID09IG51bGwpIHsKKyAgICAgICAgICAgIG1OaU5vdGlmaWNhdGlvbiA9IG5ldyBOb3RpZmljYXRpb24oKTsKKyAgICAgICAgICAgIG1OaU5vdGlmaWNhdGlvbi5pY29uID0gY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19ncHNfb247IC8qIENoYW5nZSBub3RpZmljYXRpb24gaWNvbiBoZXJlICovCisgICAgICAgICAgICBtTmlOb3RpZmljYXRpb24ud2hlbiA9IDA7CiAgICAgICAgIH0KLSAgICAJCisKICAgICAgICAgaWYgKG1QbGF5U291bmRzKSB7Ci0gICAgICAgIAltTmlOb3RpZmljYXRpb24uZGVmYXVsdHMgfD0gTm90aWZpY2F0aW9uLkRFRkFVTFRfU09VTkQ7CisgICAgICAgICAgICBtTmlOb3RpZmljYXRpb24uZGVmYXVsdHMgfD0gTm90aWZpY2F0aW9uLkRFRkFVTFRfU09VTkQ7CiAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgIAltTmlOb3RpZmljYXRpb24uZGVmYXVsdHMgJj0gfk5vdGlmaWNhdGlvbi5ERUZBVUxUX1NPVU5EOworICAgICAgICAgICAgbU5pTm90aWZpY2F0aW9uLmRlZmF1bHRzICY9IH5Ob3RpZmljYXRpb24uREVGQVVMVF9TT1VORDsKICAgICAgICAgfSAgICAgICAgCi0gICAgICAgIAorCiAgICAgICAgIG1OaU5vdGlmaWNhdGlvbi5mbGFncyA9IE5vdGlmaWNhdGlvbi5GTEFHX09OR09JTkdfRVZFTlQ7CiAgICAgICAgIG1OaU5vdGlmaWNhdGlvbi50aWNrZXJUZXh0ID0gZ2V0Tm90aWZUaWNrZXIobm90aWYpOwotICAgICAgICAKKwogICAgICAgICAvLyBpZiBub3QgdG8gcG9wdXAgZGlhbG9nIGltbWVkaWF0ZWx5LCBwZW5kaW5nIGludGVudCB3aWxsIG9wZW4gdGhlIGRpYWxvZwotICAgICAgICBJbnRlbnQgaW50ZW50ID0gIW1Qb3B1cEltbWVkaWF0ZWx5ID8gZ2V0RGxnSW50ZW50KG5vdGlmKSA6IG5ldyBJbnRlbnQoKTsgICAgCSAgICAgICAgCisgICAgICAgIEludGVudCBpbnRlbnQgPSAhbVBvcHVwSW1tZWRpYXRlbHkgPyBnZXREbGdJbnRlbnQobm90aWYpIDogbmV3IEludGVudCgpOwogICAgICAgICBQZW5kaW5nSW50ZW50IHBpID0gUGVuZGluZ0ludGVudC5nZXRCcm9hZGNhc3QobUNvbnRleHQsIDAsIGludGVudCwgMCk7ICAgICAgICAgICAgICAgIAogICAgICAgICBtTmlOb3RpZmljYXRpb24uc2V0TGF0ZXN0RXZlbnRJbmZvKG1Db250ZXh0LCB0aXRsZSwgbWVzc2FnZSwgcGkpOwotICAgICAgICAKKwogICAgICAgICBpZiAodmlzaWJsZSkgewogICAgICAgICAgICAgbm90aWZpY2F0aW9uTWFuYWdlci5ub3RpZnkobm90aWYubm90aWZpY2F0aW9uSWQsIG1OaU5vdGlmaWNhdGlvbik7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBub3RpZmljYXRpb25NYW5hZ2VyLmNhbmNlbChub3RpZi5ub3RpZmljYXRpb25JZCk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgCi0gICAgLy8gT3BlbnMgdGhlIG5vdGlmaWNhdGlvbiBkaWFsb2cgYW5kIHdhaXRzIGZvciB1c2VyIGlucHV0Ci0gICAgcHJpdmF0ZSB2b2lkIG9wZW5OaURpYWxvZyhHcHNOaU5vdGlmaWNhdGlvbiBub3RpZikgCi0gICAgewotICAgIAlJbnRlbnQgaW50ZW50ID0gZ2V0RGxnSW50ZW50KG5vdGlmKTsKLSAgICAJCi0gICAgCWlmIChERUJVRykgTG9nLmQoVEFHLCAib3Blbk5pRGlhbG9nLCBub3RpZnlJZDogIiArIG5vdGlmLm5vdGlmaWNhdGlvbklkICsgCi0gICAgCQkJIiwgcmVxdWVzdG9ySWQ6ICIgKyBub3RpZi5yZXF1ZXN0b3JJZCArIAotICAgIAkJCSIsIHRleHQ6ICIgKyBub3RpZi50ZXh0KTsgICAgICAgICAgICAgICAJCiAKLSAgICAJbUNvbnRleHQuc3RhcnRBY3Rpdml0eShpbnRlbnQpOworICAgIC8vIE9wZW5zIHRoZSBub3RpZmljYXRpb24gZGlhbG9nIGFuZCB3YWl0cyBmb3IgdXNlciBpbnB1dAorICAgIHByaXZhdGUgdm9pZCBvcGVuTmlEaWFsb2coR3BzTmlOb3RpZmljYXRpb24gbm90aWYpCisgICAgeworICAgICAgICBJbnRlbnQgaW50ZW50ID0gZ2V0RGxnSW50ZW50KG5vdGlmKTsKKworICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgIm9wZW5OaURpYWxvZywgbm90aWZ5SWQ6ICIgKyBub3RpZi5ub3RpZmljYXRpb25JZCArCisgICAgICAgICAgICAgICAgIiwgcmVxdWVzdG9ySWQ6ICIgKyBub3RpZi5yZXF1ZXN0b3JJZCArCisgICAgICAgICAgICAgICAgIiwgdGV4dDogIiArIG5vdGlmLnRleHQpOworCisgICAgICAgIG1Db250ZXh0LnN0YXJ0QWN0aXZpdHkoaW50ZW50KTsKICAgICB9Ci0gICAgCisKICAgICAvLyBDb25zdHJ1Y3QgdGhlIGludGVudCBmb3IgYnJpbmdpbmcgdXAgdGhlIGRpYWxvZyBhY3Rpdml0eSwgd2hpY2ggc2hvd3MgdGhlIAogICAgIC8vIG5vdGlmaWNhdGlvbiBhbmQgdGFrZXMgdXNlciBpbnB1dAogICAgIHByaXZhdGUgSW50ZW50IGdldERsZ0ludGVudChHcHNOaU5vdGlmaWNhdGlvbiBub3RpZikKICAgICB7Ci0gICAgCUludGVudCBpbnRlbnQgPSBuZXcgSW50ZW50KCk7Ci0gICAgCVN0cmluZyB0aXRsZSA9IGdldERpYWxvZ1RpdGxlKG5vdGlmKTsKLSAgICAJU3RyaW5nIG1lc3NhZ2UgPSBnZXREaWFsb2dNZXNzYWdlKG5vdGlmKTsKLSAgICAJCi0gICAgCS8vIGRpcmVjdGx5IGJyaW5nIHVwIHRoZSBOSSBhY3Rpdml0eQotICAgIAlpbnRlbnQuc2V0RmxhZ3MoSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX1RBU0spOwotICAgIAlpbnRlbnQuc2V0Q2xhc3MobUNvbnRleHQsIGNvbS5hbmRyb2lkLmludGVybmFsLmFwcC5OZXRJbml0aWF0ZWRBY3Rpdml0eS5jbGFzcyk7ICAgIAkKKyAgICAgICAgSW50ZW50IGludGVudCA9IG5ldyBJbnRlbnQoKTsKKyAgICAgICAgU3RyaW5nIHRpdGxlID0gZ2V0RGlhbG9nVGl0bGUobm90aWYpOworICAgICAgICBTdHJpbmcgbWVzc2FnZSA9IGdldERpYWxvZ01lc3NhZ2Uobm90aWYpOwogCi0gICAgCS8vIHB1dCBkYXRhIGluIHRoZSBpbnRlbnQKLSAgICAJaW50ZW50LnB1dEV4dHJhKE5JX0lOVEVOVF9LRVlfTk9USUZfSUQsIG5vdGlmLm5vdGlmaWNhdGlvbklkKTsgICAgCQotICAgIAlpbnRlbnQucHV0RXh0cmEoTklfSU5URU5UX0tFWV9USVRMRSwgdGl0bGUpOwotICAgIAlpbnRlbnQucHV0RXh0cmEoTklfSU5URU5UX0tFWV9NRVNTQUdFLCBtZXNzYWdlKTsKLSAgICAJaW50ZW50LnB1dEV4dHJhKE5JX0lOVEVOVF9LRVlfVElNRU9VVCwgbm90aWYudGltZW91dCk7Ci0gICAgCWludGVudC5wdXRFeHRyYShOSV9JTlRFTlRfS0VZX0RFRkFVTFRfUkVTUE9OU0UsIG5vdGlmLmRlZmF1bHRSZXNwb25zZSk7Ci0gICAgCQotICAgIAlpZiAoREVCVUcpIExvZy5kKFRBRywgImdlbmVyYXRlSW50ZW50LCB0aXRsZTogIiArIHRpdGxlICsgIiwgbWVzc2FnZTogIiArIG1lc3NhZ2UgKwotICAgIAkJCSIsIHRpbWVvdXQ6ICIgKyBub3RpZi50aW1lb3V0KTsKLSAgICAJCi0gICAgCXJldHVybiBpbnRlbnQ7CisgICAgICAgIC8vIGRpcmVjdGx5IGJyaW5nIHVwIHRoZSBOSSBhY3Rpdml0eQorICAgICAgICBpbnRlbnQuc2V0RmxhZ3MoSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX1RBU0spOworICAgICAgICBpbnRlbnQuc2V0Q2xhc3MobUNvbnRleHQsIGNvbS5hbmRyb2lkLmludGVybmFsLmFwcC5OZXRJbml0aWF0ZWRBY3Rpdml0eS5jbGFzcyk7CisKKyAgICAgICAgLy8gcHV0IGRhdGEgaW4gdGhlIGludGVudAorICAgICAgICBpbnRlbnQucHV0RXh0cmEoTklfSU5URU5UX0tFWV9OT1RJRl9JRCwgbm90aWYubm90aWZpY2F0aW9uSWQpOworICAgICAgICBpbnRlbnQucHV0RXh0cmEoTklfSU5URU5UX0tFWV9USVRMRSwgdGl0bGUpOworICAgICAgICBpbnRlbnQucHV0RXh0cmEoTklfSU5URU5UX0tFWV9NRVNTQUdFLCBtZXNzYWdlKTsKKyAgICAgICAgaW50ZW50LnB1dEV4dHJhKE5JX0lOVEVOVF9LRVlfVElNRU9VVCwgbm90aWYudGltZW91dCk7CisgICAgICAgIGludGVudC5wdXRFeHRyYShOSV9JTlRFTlRfS0VZX0RFRkFVTFRfUkVTUE9OU0UsIG5vdGlmLmRlZmF1bHRSZXNwb25zZSk7CisKKyAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJnZW5lcmF0ZUludGVudCwgdGl0bGU6ICIgKyB0aXRsZSArICIsIG1lc3NhZ2U6ICIgKyBtZXNzYWdlICsKKyAgICAgICAgICAgICAgICAiLCB0aW1lb3V0OiAiICsgbm90aWYudGltZW91dCk7CisKKyAgICAgICAgcmV0dXJuIGludGVudDsKICAgICB9Ci0gICAgCisKICAgICAvLyBDb252ZXJ0cyBhIHN0cmluZyAob3IgSGV4IHN0cmluZykgdG8gYSBjaGFyIGFycmF5CiAgICAgc3RhdGljIGJ5dGVbXSBzdHJpbmdUb0J5dGVBcnJheShTdHJpbmcgb3JpZ2luYWwsIGJvb2xlYW4gaXNIZXgpCiAgICAgewotICAgIAlpbnQgbGVuZ3RoID0gaXNIZXggPyBvcmlnaW5hbC5sZW5ndGgoKSAvIDIgOiBvcmlnaW5hbC5sZW5ndGgoKTsKLSAgICAJYnl0ZVtdIG91dHB1dCA9IG5ldyBieXRlW2xlbmd0aF07Ci0gICAgCWludCBpOwotICAgIAkKLSAgICAJaWYgKGlzSGV4KQotICAgIAl7Ci0gICAgCQlmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspCi0gICAgCQl7Ci0gICAgCQkJb3V0cHV0W2ldID0gKGJ5dGUpIEludGVnZXIucGFyc2VJbnQob3JpZ2luYWwuc3Vic3RyaW5nKGkqMiwgaSoyKzIpLCAxNik7Ci0gICAgCQl9Ci0gICAgCX0KLSAgICAJZWxzZSB7Ci0gICAgCQlmb3IgKGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspCi0gICAgCQl7Ci0gICAgCQkJb3V0cHV0W2ldID0gKGJ5dGUpIG9yaWdpbmFsLmNoYXJBdChpKTsKLSAgICAJCX0KLSAgICAJfQotICAgIAkKLSAgICAJcmV0dXJuIG91dHB1dDsKKyAgICAgICAgaW50IGxlbmd0aCA9IGlzSGV4ID8gb3JpZ2luYWwubGVuZ3RoKCkgLyAyIDogb3JpZ2luYWwubGVuZ3RoKCk7CisgICAgICAgIGJ5dGVbXSBvdXRwdXQgPSBuZXcgYnl0ZVtsZW5ndGhdOworICAgICAgICBpbnQgaTsKKworICAgICAgICBpZiAoaXNIZXgpCisgICAgICAgIHsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXRwdXRbaV0gPSAoYnl0ZSkgSW50ZWdlci5wYXJzZUludChvcmlnaW5hbC5zdWJzdHJpbmcoaSoyLCBpKjIrMiksIDE2KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBvdXRwdXRbaV0gPSAoYnl0ZSkgb3JpZ2luYWwuY2hhckF0KGkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG91dHB1dDsKICAgICB9Ci0gICAgCisKICAgICAvKioKICAgICAgKiBVbnBhY2tzIGFuIGJ5dGUgYXJyYXkgY29udGFpbmluZyA3LWJpdCBwYWNrZWQgY2hhcmFjdGVycyBpbnRvIGEgU3RyaW5nLgotICAgICAqIAorICAgICAqCiAgICAgICogQHBhcmFtIGlucHV0IGEgNy1iaXQgcGFja2VkIGNoYXIgYXJyYXkKICAgICAgKiBAcmV0dXJuIHRoZSB1bnBhY2tlZCBTdHJpbmcKICAgICAgKi8KICAgICBzdGF0aWMgU3RyaW5nIGRlY29kZUdTTVBhY2tlZFN0cmluZyhieXRlW10gaW5wdXQpCiAgICAgewotICAgIAlmaW5hbCBjaGFyIENIQVJfQ1IgPSAweDBEOwotICAgIAlpbnQgblN0cmlkeCA9IDA7Ci0gICAgCWludCBuUGNraWR4ID0gMDsKLSAgICAJaW50IG51bV9ieXRlcyA9IGlucHV0Lmxlbmd0aDsKLSAgICAJaW50IGNQcmV2ID0gMDsKLSAgICAJaW50IGNDdXJyID0gMDsKLSAgICAJYnl0ZSBuU2hpZnQ7Ci0gICAgCWJ5dGUgbmV4dENoYXI7Ci0gICAgCWJ5dGVbXSBzdHJpbmdCdWYgPSBuZXcgYnl0ZVtpbnB1dC5sZW5ndGggKiAyXTsgCi0gICAgCVN0cmluZyByZXN1bHQgPSAiIjsKLSAgICAJCi0gICAgCXdoaWxlKG5QY2tpZHggPCBudW1fYnl0ZXMpCi0gICAgCXsKLSAgICAJCW5TaGlmdCA9IChieXRlKSAoblN0cmlkeCAmIDB4MDcpOwotICAgIAkJY0N1cnIgPSBpbnB1dFtuUGNraWR4KytdOwotICAgIAkJaWYgKGNDdXJyIDwgMCkgY0N1cnIgKz0gMjU2OworICAgICAgICBmaW5hbCBjaGFyIENIQVJfQ1IgPSAweDBEOworICAgICAgICBpbnQgblN0cmlkeCA9IDA7CisgICAgICAgIGludCBuUGNraWR4ID0gMDsKKyAgICAgICAgaW50IG51bV9ieXRlcyA9IGlucHV0Lmxlbmd0aDsKKyAgICAgICAgaW50IGNQcmV2ID0gMDsKKyAgICAgICAgaW50IGNDdXJyID0gMDsKKyAgICAgICAgYnl0ZSBuU2hpZnQ7CisgICAgICAgIGJ5dGUgbmV4dENoYXI7CisgICAgICAgIGJ5dGVbXSBzdHJpbmdCdWYgPSBuZXcgYnl0ZVtpbnB1dC5sZW5ndGggKiAyXTsKKyAgICAgICAgU3RyaW5nIHJlc3VsdCA9ICIiOwogCi0gICAgCQkvKiBBIDctYml0IGNoYXJhY3RlciBjYW4gYmUgc3BsaXQgYXQgdGhlIG1vc3QgYmV0d2VlbiB0d28gYnl0ZXMgb2YgcGFja2VkCi0gICAgCQkgKiogZGF0YS4KLSAgICAJCSAqLwotICAgIAkJbmV4dENoYXIgPSAoYnl0ZSkgKCggKGNDdXJyIDw8IG5TaGlmdCkgfCAoY1ByZXYgPj4gKDgtblNoaWZ0KSkgKSAmIDB4N0YpOwotICAgIAkJc3RyaW5nQnVmW25TdHJpZHgrK10gPSBuZXh0Q2hhcjsKKyAgICAgICAgd2hpbGUoblBja2lkeCA8IG51bV9ieXRlcykKKyAgICAgICAgeworICAgICAgICAgICAgblNoaWZ0ID0gKGJ5dGUpIChuU3RyaWR4ICYgMHgwNyk7CisgICAgICAgICAgICBjQ3VyciA9IGlucHV0W25QY2tpZHgrK107CisgICAgICAgICAgICBpZiAoY0N1cnIgPCAwKSBjQ3VyciArPSAyNTY7CiAKLSAgICAJCS8qIFNwZWNpYWwgY2FzZSB3aGVyZSB0aGUgd2hvbGUgb2YgdGhlIG5leHQgNy1iaXQgY2hhcmFjdGVyIGZpdHMgaW5zaWRlCi0gICAgCQkgKiogdGhlIGN1cnJlbnQgYnl0ZSBvZiBwYWNrZWQgZGF0YS4KLSAgICAJCSAqLwotICAgIAkJaWYoblNoaWZ0ID09IDYpCi0gICAgCQl7Ci0gICAgCQkJLyogSWYgdGhlIG5leHQgNy1iaXQgY2hhcmFjdGVyIGlzIGEgQ1IgKDB4MEQpIGFuZCBpdCBpcyB0aGUgbGFzdAotICAgIAkJCSAqKiBjaGFyYWN0ZXIsIHRoZW4gaXQgaW5kaWNhdGVzIGEgcGFkZGluZyBjaGFyYWN0ZXIuIERyb3AgaXQuCi0gICAgCQkJICovCi0gICAgCQkJaWYgKG5QY2tpZHggPT0gbnVtX2J5dGVzIHx8IChjQ3VyciA+PiAxKSA9PSBDSEFSX0NSKQotICAgIAkJCXsKLSAgICAJCQkJYnJlYWs7Ci0gICAgCQkJfQotICAgIAkJCQotICAgIAkJCW5leHRDaGFyID0gKGJ5dGUpIChjQ3VyciA+PiAxKTsgCi0gICAgCQkJc3RyaW5nQnVmW25TdHJpZHgrK10gPSBuZXh0Q2hhcjsKLSAgICAJCX0KKyAgICAgICAgICAgIC8qIEEgNy1iaXQgY2hhcmFjdGVyIGNhbiBiZSBzcGxpdCBhdCB0aGUgbW9zdCBiZXR3ZWVuIHR3byBieXRlcyBvZiBwYWNrZWQKKyAgICAgICAgICAgICAqKiBkYXRhLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBuZXh0Q2hhciA9IChieXRlKSAoKCAoY0N1cnIgPDwgblNoaWZ0KSB8IChjUHJldiA+PiAoOC1uU2hpZnQpKSApICYgMHg3Rik7CisgICAgICAgICAgICBzdHJpbmdCdWZbblN0cmlkeCsrXSA9IG5leHRDaGFyOwogCi0gICAgCQljUHJldiA9IGNDdXJyOwotICAgIAl9Ci0gICAgCQotICAgIAl0cnl7Ci0gICAgCQlyZXN1bHQgPSBuZXcgU3RyaW5nKHN0cmluZ0J1ZiwgMCwgblN0cmlkeCwgIlVTLUFTQ0lJIik7Ci0gICAgCX0KLSAgICAJY2F0Y2ggKFVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24gZSkKLSAgICAJewotICAgIAkJTG9nLmUoVEFHLCBlLmdldE1lc3NhZ2UoKSk7Ci0gICAgCX0KLSAgICAJCi0gICAgCXJldHVybiByZXN1bHQ7CisgICAgICAgICAgICAvKiBTcGVjaWFsIGNhc2Ugd2hlcmUgdGhlIHdob2xlIG9mIHRoZSBuZXh0IDctYml0IGNoYXJhY3RlciBmaXRzIGluc2lkZQorICAgICAgICAgICAgICoqIHRoZSBjdXJyZW50IGJ5dGUgb2YgcGFja2VkIGRhdGEuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIGlmKG5TaGlmdCA9PSA2KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8qIElmIHRoZSBuZXh0IDctYml0IGNoYXJhY3RlciBpcyBhIENSICgweDBEKSBhbmQgaXQgaXMgdGhlIGxhc3QKKyAgICAgICAgICAgICAgICAgKiogY2hhcmFjdGVyLCB0aGVuIGl0IGluZGljYXRlcyBhIHBhZGRpbmcgY2hhcmFjdGVyLiBEcm9wIGl0LgorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIGlmIChuUGNraWR4ID09IG51bV9ieXRlcyB8fCAoY0N1cnIgPj4gMSkgPT0gQ0hBUl9DUikKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIG5leHRDaGFyID0gKGJ5dGUpIChjQ3VyciA+PiAxKTsKKyAgICAgICAgICAgICAgICBzdHJpbmdCdWZbblN0cmlkeCsrXSA9IG5leHRDaGFyOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjUHJldiA9IGNDdXJyOworICAgICAgICB9CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJlc3VsdCA9IG5ldyBTdHJpbmcoc3RyaW5nQnVmLCAwLCBuU3RyaWR4LCAiVVMtQVNDSUkiKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiBlKQorICAgICAgICB7CisgICAgICAgICAgICBMb2cuZShUQUcsIGUuZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgfQotICAgIAorCiAgICAgc3RhdGljIFN0cmluZyBkZWNvZGVVVEY4U3RyaW5nKGJ5dGVbXSBpbnB1dCkKICAgICB7Ci0gICAgCVN0cmluZyBkZWNvZGVkID0gIiI7Ci0gICAgCXRyeSB7Ci0gICAgCQlkZWNvZGVkID0gbmV3IFN0cmluZyhpbnB1dCwgIlVURi04Iik7Ci0gICAgCX0KLSAgICAJY2F0Y2ggKFVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24gZSkKLSAgICAJeyAKLSAgICAJCUxvZy5lKFRBRywgZS5nZXRNZXNzYWdlKCkpOwotICAgIAl9IAotCQlyZXR1cm4gZGVjb2RlZDsKKyAgICAgICAgU3RyaW5nIGRlY29kZWQgPSAiIjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGRlY29kZWQgPSBuZXcgU3RyaW5nKGlucHV0LCAiVVRGLTgiKTsKKyAgICAgICAgfQorICAgICAgICBjYXRjaCAoVW5zdXBwb3J0ZWRFbmNvZGluZ0V4Y2VwdGlvbiBlKQorICAgICAgICB7CisgICAgICAgICAgICBMb2cuZShUQUcsIGUuZ2V0TWVzc2FnZSgpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZGVjb2RlZDsKICAgICB9Ci0gICAgCisKICAgICBzdGF0aWMgU3RyaW5nIGRlY29kZVVDUzJTdHJpbmcoYnl0ZVtdIGlucHV0KQogICAgIHsKLSAgICAJU3RyaW5nIGRlY29kZWQgPSAiIjsKLSAgICAJdHJ5IHsKLSAgICAJCWRlY29kZWQgPSBuZXcgU3RyaW5nKGlucHV0LCAiVVRGLTE2Iik7Ci0gICAgCX0KLSAgICAJY2F0Y2ggKFVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24gZSkKLSAgICAJeyAKLSAgICAJCUxvZy5lKFRBRywgZS5nZXRNZXNzYWdlKCkpOwotICAgIAl9IAotCQlyZXR1cm4gZGVjb2RlZDsKKyAgICAgICAgU3RyaW5nIGRlY29kZWQgPSAiIjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGRlY29kZWQgPSBuZXcgU3RyaW5nKGlucHV0LCAiVVRGLTE2Iik7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKFVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24gZSkKKyAgICAgICAgeworICAgICAgICAgICAgTG9nLmUoVEFHLCBlLmdldE1lc3NhZ2UoKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGRlY29kZWQ7CiAgICAgfQotICAgIAorCiAgICAgLyoqIERlY29kZSBOSSBzdHJpbmcKLSAgICAgKiAKKyAgICAgKgogICAgICAqIEBwYXJhbSBvcmlnaW5hbCAgIFRoZSB0ZXh0IHN0cmluZyB0byBiZSBkZWNvZGVkCiAgICAgICogQHBhcmFtIGlzSGV4ICAgICAgU3BlY2lmaWVzIHdoZXRoZXIgdGhlIGNvbnRlbnQgb2YgdGhlIHN0cmluZyBoYXMgYmVlbiBlbmNvZGVkIGFzIGEgSGV4IHN0cmluZy4gRW5jb2RpbmcKLSAgICAgKiAgICAgICAgICAgICAgICAgICBhIHN0cmluZyBhcyBIZXggY2FuIGFsbG93IHplcm9zIGluc2lkZSB0aGUgY29kZWQgdGV4dC4gCisgICAgICogICAgICAgICAgICAgICAgICAgYSBzdHJpbmcgYXMgSGV4IGNhbiBhbGxvdyB6ZXJvcyBpbnNpZGUgdGhlIGNvZGVkIHRleHQuCiAgICAgICogQHBhcmFtIGNvZGluZyAgICAgU3BlY2lmaWVzIHRoZSBjb2Rpbmcgc2NoZW1lIG9mIHRoZSBzdHJpbmcsIHN1Y2ggYXMgR1NNLCBVVEY4LCBVQ1MyLCBldGMuIFRoaXMgY29kaW5nIHNjaGVtZQotICAgICAqIAkJCQkJIG5lZWRzIHRvIG1hdGNoIHRob3NlIHVzZWQgcGFzc2VkIHRvIEhBTCBmcm9tIHRoZSBuYXRpdmUgR1BTIGRyaXZlci4gRGVjb2RpbmcgaXMgZG9uZSBhY2NvcmRpbmcKKyAgICAgKiAgICAgICAgICAgICAgICAgICAgICBuZWVkcyB0byBtYXRjaCB0aG9zZSB1c2VkIHBhc3NlZCB0byBIQUwgZnJvbSB0aGUgbmF0aXZlIEdQUyBkcml2ZXIuIERlY29kaW5nIGlzIGRvbmUgYWNjb3JkaW5nCiAgICAgICogICAgICAgICAgICAgICAgICAgdG8gdGhlIDxjb2RlPiBjb2RpbmcgPC9jb2RlPiwgYWZ0ZXIgYSBIZXggc3RyaW5nIGlzIGRlY29kZWQuIEdlbmVyYWxseSwgaWYgdGhlCi0gICAgICogICAgICAgICAgICAgICAgICAgbm90aWZpY2F0aW9uIHN0cmluZ3MgZG9uJ3QgbmVlZCBmdXJ0aGVyIGRlY29kaW5nLCA8Y29kZT4gY29kaW5nIDwvY29kZT4gZW5jb2RpbmcgY2FuIGJlIAorICAgICAqICAgICAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbiBzdHJpbmdzIGRvbid0IG5lZWQgZnVydGhlciBkZWNvZGluZywgPGNvZGU+IGNvZGluZyA8L2NvZGU+IGVuY29kaW5nIGNhbiBiZQogICAgICAqICAgICAgICAgICAgICAgICAgIHNldCB0byAtMSwgYW5kIDxjb2RlPiBpc0hleCA8L2NvZGU+IGNhbiBiZSBmYWxzZS4KICAgICAgKiBAcmV0dXJuIHRoZSBkZWNvZGVkIHN0cmluZwogICAgICAqLwogICAgIHN0YXRpYyBwcml2YXRlIFN0cmluZyBkZWNvZGVTdHJpbmcoU3RyaW5nIG9yaWdpbmFsLCBib29sZWFuIGlzSGV4LCBpbnQgY29kaW5nKQogICAgIHsKLSAgICAJU3RyaW5nIGRlY29kZWQgPSBvcmlnaW5hbDsKLSAgICAJYnl0ZVtdIGlucHV0ID0gc3RyaW5nVG9CeXRlQXJyYXkob3JpZ2luYWwsIGlzSGV4KTsKKyAgICAgICAgU3RyaW5nIGRlY29kZWQgPSBvcmlnaW5hbDsKKyAgICAgICAgYnl0ZVtdIGlucHV0ID0gc3RyaW5nVG9CeXRlQXJyYXkob3JpZ2luYWwsIGlzSGV4KTsKIAotICAgIAlzd2l0Y2ggKGNvZGluZykgewotICAgIAljYXNlIEdQU19FTkNfTk9ORToKLSAgICAJCWRlY29kZWQgPSBvcmlnaW5hbDsKLSAgICAJCWJyZWFrOwotICAgIAkJCi0gICAgCWNhc2UgR1BTX0VOQ19TVVBMX0dTTV9ERUZBVUxUOgotICAgIAkJZGVjb2RlZCA9IGRlY29kZUdTTVBhY2tlZFN0cmluZyhpbnB1dCk7Ci0gICAgCQlicmVhazsKLSAgICAJCQotICAgIAljYXNlIEdQU19FTkNfU1VQTF9VVEY4OgotICAgIAkJZGVjb2RlZCA9IGRlY29kZVVURjhTdHJpbmcoaW5wdXQpOwotICAgIAkJYnJlYWs7Ci0gICAgCQkKLSAgICAJY2FzZSBHUFNfRU5DX1NVUExfVUNTMjoKLSAgICAJCWRlY29kZWQgPSBkZWNvZGVVQ1MyU3RyaW5nKGlucHV0KTsKLSAgICAJCWJyZWFrOwotICAgIAkJCi0gICAgCWNhc2UgR1BTX0VOQ19VTktOT1dOOgotICAgIAkJZGVjb2RlZCA9IG9yaWdpbmFsOwotICAgIAkJYnJlYWs7Ci0gICAgCQkKLSAgICAJZGVmYXVsdDoKLSAgICAJCUxvZy5lKFRBRywgIlVua25vd24gZW5jb2RpbmcgIiArIGNvZGluZyArICIgZm9yIE5JIHRleHQgIiArIG9yaWdpbmFsKTsKLSAgICAJCWJyZWFrOwotICAgIAl9Ci0gICAgCXJldHVybiBkZWNvZGVkOworICAgICAgICBzd2l0Y2ggKGNvZGluZykgeworICAgICAgICBjYXNlIEdQU19FTkNfTk9ORToKKyAgICAgICAgICAgIGRlY29kZWQgPSBvcmlnaW5hbDsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR1BTX0VOQ19TVVBMX0dTTV9ERUZBVUxUOgorICAgICAgICAgICAgZGVjb2RlZCA9IGRlY29kZUdTTVBhY2tlZFN0cmluZyhpbnB1dCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEdQU19FTkNfU1VQTF9VVEY4OgorICAgICAgICAgICAgZGVjb2RlZCA9IGRlY29kZVVURjhTdHJpbmcoaW5wdXQpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBHUFNfRU5DX1NVUExfVUNTMjoKKyAgICAgICAgICAgIGRlY29kZWQgPSBkZWNvZGVVQ1MyU3RyaW5nKGlucHV0KTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgR1BTX0VOQ19VTktOT1dOOgorICAgICAgICAgICAgZGVjb2RlZCA9IG9yaWdpbmFsOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIExvZy5lKFRBRywgIlVua25vd24gZW5jb2RpbmcgIiArIGNvZGluZyArICIgZm9yIE5JIHRleHQgIiArIG9yaWdpbmFsKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIHJldHVybiBkZWNvZGVkOwogICAgIH0KLSAgICAKKwogICAgIC8vIGNoYW5nZSB0aGlzIHRvIGNvbmZpZ3VyZSBub3RpZmljYXRpb24gZGlzcGxheQogICAgIHN0YXRpYyBwcml2YXRlIFN0cmluZyBnZXROb3RpZlRpY2tlcihHcHNOaU5vdGlmaWNhdGlvbiBub3RpZikKICAgICB7Ci0gICAgCVN0cmluZyB0aWNrZXIgPSBTdHJpbmcuZm9ybWF0KCJQb3NpdGlvbiByZXF1ZXN0ISBSZXFJZDogWyVzXSBDbGllbnROYW1lOiBbJXNdIiwKLSAgICAJCQlkZWNvZGVTdHJpbmcobm90aWYucmVxdWVzdG9ySWQsIG1Jc0hleElucHV0LCBub3RpZi5yZXF1ZXN0b3JJZEVuY29kaW5nKSwKLSAgICAJCQlkZWNvZGVTdHJpbmcobm90aWYudGV4dCwgbUlzSGV4SW5wdXQsIG5vdGlmLnRleHRFbmNvZGluZykpOwotICAgIAlyZXR1cm4gdGlja2VyOworICAgICAgICBTdHJpbmcgdGlja2VyID0gU3RyaW5nLmZvcm1hdCgiUG9zaXRpb24gcmVxdWVzdCEgUmVxSWQ6IFslc10gQ2xpZW50TmFtZTogWyVzXSIsCisgICAgICAgICAgICAgICAgZGVjb2RlU3RyaW5nKG5vdGlmLnJlcXVlc3RvcklkLCBtSXNIZXhJbnB1dCwgbm90aWYucmVxdWVzdG9ySWRFbmNvZGluZyksCisgICAgICAgICAgICAgICAgZGVjb2RlU3RyaW5nKG5vdGlmLnRleHQsIG1Jc0hleElucHV0LCBub3RpZi50ZXh0RW5jb2RpbmcpKTsKKyAgICAgICAgcmV0dXJuIHRpY2tlcjsKICAgICB9Ci0gICAgCisKICAgICAvLyBjaGFuZ2UgdGhpcyB0byBjb25maWd1cmUgbm90aWZpY2F0aW9uIGRpc3BsYXkKICAgICBzdGF0aWMgcHJpdmF0ZSBTdHJpbmcgZ2V0Tm90aWZUaXRsZShHcHNOaU5vdGlmaWNhdGlvbiBub3RpZikKICAgICB7Ci0gICAgCVN0cmluZyB0aXRsZSA9IFN0cmluZy5mb3JtYXQoIlBvc2l0aW9uIFJlcXVlc3QiKTsKLSAgICAJcmV0dXJuIHRpdGxlOworICAgICAgICBTdHJpbmcgdGl0bGUgPSBTdHJpbmcuZm9ybWF0KCJQb3NpdGlvbiBSZXF1ZXN0Iik7CisgICAgICAgIHJldHVybiB0aXRsZTsKICAgICB9Ci0gICAgCisKICAgICAvLyBjaGFuZ2UgdGhpcyB0byBjb25maWd1cmUgbm90aWZpY2F0aW9uIGRpc3BsYXkKICAgICBzdGF0aWMgcHJpdmF0ZSBTdHJpbmcgZ2V0Tm90aWZNZXNzYWdlKEdwc05pTm90aWZpY2F0aW9uIG5vdGlmKQogICAgIHsKLSAgICAJU3RyaW5nIG1lc3NhZ2UgPSBTdHJpbmcuZm9ybWF0KAotICAgIAkJCSJOSSBSZXF1ZXN0IHJlY2VpdmVkIGZyb20gWyVzXSBmb3IgY2xpZW50IFslc10hIiwgCi0gICAgCQkJZGVjb2RlU3RyaW5nKG5vdGlmLnJlcXVlc3RvcklkLCBtSXNIZXhJbnB1dCwgbm90aWYucmVxdWVzdG9ySWRFbmNvZGluZyksCi0gICAgCQkJZGVjb2RlU3RyaW5nKG5vdGlmLnRleHQsIG1Jc0hleElucHV0LCBub3RpZi50ZXh0RW5jb2RpbmcpKTsKLSAgICAJcmV0dXJuIG1lc3NhZ2U7CisgICAgICAgIFN0cmluZyBtZXNzYWdlID0gU3RyaW5nLmZvcm1hdCgKKyAgICAgICAgICAgICAgICAiTkkgUmVxdWVzdCByZWNlaXZlZCBmcm9tIFslc10gZm9yIGNsaWVudCBbJXNdISIsCisgICAgICAgICAgICAgICAgZGVjb2RlU3RyaW5nKG5vdGlmLnJlcXVlc3RvcklkLCBtSXNIZXhJbnB1dCwgbm90aWYucmVxdWVzdG9ySWRFbmNvZGluZyksCisgICAgICAgICAgICAgICAgZGVjb2RlU3RyaW5nKG5vdGlmLnRleHQsIG1Jc0hleElucHV0LCBub3RpZi50ZXh0RW5jb2RpbmcpKTsKKyAgICAgICAgcmV0dXJuIG1lc3NhZ2U7CiAgICAgfSAgICAgICAKLSAgICAKKwogICAgIC8vIGNoYW5nZSB0aGlzIHRvIGNvbmZpZ3VyZSBkaWFsb2cgZGlzcGxheSAoZm9yIHZlcmlmaWNhdGlvbikKICAgICBzdGF0aWMgcHVibGljIFN0cmluZyBnZXREaWFsb2dUaXRsZShHcHNOaU5vdGlmaWNhdGlvbiBub3RpZikKICAgICB7Ci0gICAgCXJldHVybiBnZXROb3RpZlRpdGxlKG5vdGlmKTsKKyAgICAgICAgcmV0dXJuIGdldE5vdGlmVGl0bGUobm90aWYpOwogICAgIH0KLSAgICAKKwogICAgIC8vIGNoYW5nZSB0aGlzIHRvIGNvbmZpZ3VyZSBkaWFsb2cgZGlzcGxheSAoZm9yIHZlcmlmaWNhdGlvbikKICAgICBzdGF0aWMgcHJpdmF0ZSBTdHJpbmcgZ2V0RGlhbG9nTWVzc2FnZShHcHNOaU5vdGlmaWNhdGlvbiBub3RpZikKICAgICB7Ci0gICAgCXJldHVybiBnZXROb3RpZk1lc3NhZ2Uobm90aWYpOworICAgICAgICByZXR1cm4gZ2V0Tm90aWZNZXNzYWdlKG5vdGlmKTsKICAgICB9Ci0gICAgCisKIH0KZGlmZiAtLWdpdCBhL2xvY2F0aW9uL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvbG9jYXRpb24vR3BzWHRyYURvd25sb2FkZXIuamF2YSBiL2xvY2F0aW9uL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvbG9jYXRpb24vR3BzWHRyYURvd25sb2FkZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTc4YmRhMi4uMDAwMDAwMAotLS0gYS9sb2NhdGlvbi9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL2xvY2F0aW9uL0dwc1h0cmFEb3dubG9hZGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxNzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLXBhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwubG9jYXRpb247Ci0KLWltcG9ydCBvcmcuYXBhY2hlLmh0dHAuSHR0cEVudGl0eTsKLWltcG9ydCBvcmcuYXBhY2hlLmh0dHAuSHR0cEhvc3Q7Ci1pbXBvcnQgb3JnLmFwYWNoZS5odHRwLkh0dHBSZXNwb25zZTsKLWltcG9ydCBvcmcuYXBhY2hlLmh0dHAuU3RhdHVzTGluZTsKLWltcG9ydCBvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lkh0dHBDbGllbnQ7Ci1pbXBvcnQgb3JnLmFwYWNoZS5odHRwLmNsaWVudC5tZXRob2RzLkh0dHBHZXQ7Ci1pbXBvcnQgb3JnLmFwYWNoZS5odHRwLmNsaWVudC5tZXRob2RzLkh0dHBVcmlSZXF1ZXN0OwotaW1wb3J0IG9yZy5hcGFjaGUuaHR0cC5jb25uLnBhcmFtcy5Db25uUm91dGVQYXJhbXM7Ci0KLWltcG9ydCBqYXZhLmlvLkRhdGFJbnB1dFN0cmVhbTsKLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotaW1wb3J0IGphdmEudXRpbC5Qcm9wZXJ0aWVzOwotaW1wb3J0IGphdmEudXRpbC5SYW5kb207Ci0KLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKLWltcG9ydCBhbmRyb2lkLm5ldC5Qcm94eTsKLWltcG9ydCBhbmRyb2lkLm5ldC5odHRwLkFuZHJvaWRIdHRwQ2xpZW50OwotaW1wb3J0IGFuZHJvaWQudXRpbC5Db25maWc7Ci1pbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKLQotCi0KLS8qKgotICogQSBjbGFzcyBmb3IgZG93bmxvYWRpbmcgR1BTIFhUUkEgZGF0YS4KLSAqCi0gKiB7QGhpZGV9Ci0gKi8KLXB1YmxpYyBjbGFzcyBHcHNYdHJhRG93bmxvYWRlciB7Ci0KLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gIkdwc1h0cmFEb3dubG9hZGVyIjsKLSAgICAKLSAgICBwcml2YXRlIENvbnRleHQgbUNvbnRleHQ7Ci0gICAgcHJpdmF0ZSBTdHJpbmdbXSBtWHRyYVNlcnZlcnM7Ci0gICAgLy8gdG8gbG9hZCBiYWxhbmNlIG91ciBzZXJ2ZXIgcmVxdWVzdHMKLSAgICBwcml2YXRlIGludCBtTmV4dFNlcnZlckluZGV4OwotCi0gICAgR3BzWHRyYURvd25sb2FkZXIoQ29udGV4dCBjb250ZXh0LCBQcm9wZXJ0aWVzIHByb3BlcnRpZXMpIHsKLSAgICAgICAgbUNvbnRleHQgPSBjb250ZXh0OwotCi0gICAgICAgIC8vIHJlYWQgWFRSQSBzZXJ2ZXJzIGZyb20gdGhlIFByb3BlcnRpZXMgb2JqZWN0Ci0gICAgICAgIGludCBjb3VudCA9IDA7Ci0gICAgICAgIFN0cmluZyBzZXJ2ZXIxID0gcHJvcGVydGllcy5nZXRQcm9wZXJ0eSgiWFRSQV9TRVJWRVJfMSIpOwotICAgICAgICBTdHJpbmcgc2VydmVyMiA9IHByb3BlcnRpZXMuZ2V0UHJvcGVydHkoIlhUUkFfU0VSVkVSXzIiKTsKLSAgICAgICAgU3RyaW5nIHNlcnZlcjMgPSBwcm9wZXJ0aWVzLmdldFByb3BlcnR5KCJYVFJBX1NFUlZFUl8zIik7Ci0gICAgICAgIGlmIChzZXJ2ZXIxICE9IG51bGwpIGNvdW50Kys7Ci0gICAgICAgIGlmIChzZXJ2ZXIyICE9IG51bGwpIGNvdW50Kys7Ci0gICAgICAgIGlmIChzZXJ2ZXIzICE9IG51bGwpIGNvdW50Kys7Ci0gICAgICAgIAotICAgICAgICBpZiAoY291bnQgPT0gMCkgewotICAgICAgICAgICAgTG9nLmUoVEFHLCAiTm8gWFRSQSBzZXJ2ZXJzIHdlcmUgc3BlY2lmaWVkIGluIHRoZSBHUFMgY29uZmlndXJhdGlvbiIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbVh0cmFTZXJ2ZXJzID0gbmV3IFN0cmluZ1tjb3VudF07Ci0gICAgICAgICAgICBjb3VudCA9IDA7Ci0gICAgICAgICAgICBpZiAoc2VydmVyMSAhPSBudWxsKSBtWHRyYVNlcnZlcnNbY291bnQrK10gPSBzZXJ2ZXIxOwotICAgICAgICAgICAgaWYgKHNlcnZlcjIgIT0gbnVsbCkgbVh0cmFTZXJ2ZXJzW2NvdW50KytdID0gc2VydmVyMjsKLSAgICAgICAgICAgIGlmIChzZXJ2ZXIzICE9IG51bGwpIG1YdHJhU2VydmVyc1tjb3VudCsrXSA9IHNlcnZlcjM7Ci0KLSAgICAgICAgICAgIC8vIHJhbmRvbWl6ZSBmaXJzdCBzZXJ2ZXIKLSAgICAgICAgICAgIFJhbmRvbSByYW5kb20gPSBuZXcgUmFuZG9tKCk7Ci0gICAgICAgICAgICBtTmV4dFNlcnZlckluZGV4ID0gcmFuZG9tLm5leHRJbnQoY291bnQpOwotICAgICAgICB9ICAgICAgIAotICAgIH0KLQotICAgIGJ5dGVbXSBkb3dubG9hZFh0cmFEYXRhKCkgewotICAgICAgICBTdHJpbmcgcHJveHlIb3N0ID0gUHJveHkuZ2V0SG9zdChtQ29udGV4dCk7Ci0gICAgICAgIGludCBwcm94eVBvcnQgPSBQcm94eS5nZXRQb3J0KG1Db250ZXh0KTsKLSAgICAgICAgYm9vbGVhbiB1c2VQcm94eSA9IChwcm94eUhvc3QgIT0gbnVsbCAmJiBwcm94eVBvcnQgIT0gLTEpOwotICAgICAgICBieXRlW10gcmVzdWx0ID0gbnVsbDsKLSAgICAgICAgaW50IHN0YXJ0SW5kZXggPSBtTmV4dFNlcnZlckluZGV4OwotCi0gICAgICAgIGlmIChtWHRyYVNlcnZlcnMgPT0gbnVsbCkgewotICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBsb2FkIGJhbGFuY2Ugb3VyIHJlcXVlc3RzIGFtb25nIHRoZSBhdmFpbGFibGUgc2VydmVycwotICAgICAgICB3aGlsZSAocmVzdWx0ID09IG51bGwpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGRvRG93bmxvYWQobVh0cmFTZXJ2ZXJzW21OZXh0U2VydmVySW5kZXhdLCB1c2VQcm94eSwgcHJveHlIb3N0LCBwcm94eVBvcnQpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBpbmNyZW1lbnQgbU5leHRTZXJ2ZXJJbmRleCBhbmQgd3JhcCBhcm91bmQgaWYgbmVjZXNzYXJ5Ci0gICAgICAgICAgICBtTmV4dFNlcnZlckluZGV4Kys7Ci0gICAgICAgICAgICBpZiAobU5leHRTZXJ2ZXJJbmRleCA9PSBtWHRyYVNlcnZlcnMubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgbU5leHRTZXJ2ZXJJbmRleCA9IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBicmVhayBpZiB3ZSBoYXZlIHRyaWVkIGFsbCB0aGUgc2VydmVycwotICAgICAgICAgICAgaWYgKG1OZXh0U2VydmVySW5kZXggPT0gc3RhcnRJbmRleCkgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICBwcm90ZWN0ZWQgc3RhdGljIGJ5dGVbXSBkb0Rvd25sb2FkKFN0cmluZyB1cmwsIGJvb2xlYW4gaXNQcm94eVNldCwgCi0gICAgICAgICAgICBTdHJpbmcgcHJveHlIb3N0LCBpbnQgcHJveHlQb3J0KSB7Ci0gICAgICAgIGlmIChDb25maWcuTE9HRCkgTG9nLmQoVEFHLCAiRG93bmxvYWRpbmcgWFRSQSBkYXRhIGZyb20gIiArIHVybCk7Ci0KLSAgICAgICAgQW5kcm9pZEh0dHBDbGllbnQgY2xpZW50ID0gbnVsbDsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGNsaWVudCA9IEFuZHJvaWRIdHRwQ2xpZW50Lm5ld0luc3RhbmNlKCJBbmRyb2lkIik7Ci0gICAgICAgICAgICBIdHRwVXJpUmVxdWVzdCByZXEgPSBuZXcgSHR0cEdldCh1cmwpOwotCi0gICAgICAgICAgICBpZiAoaXNQcm94eVNldCkgewotICAgICAgICAgICAgICAgIEh0dHBIb3N0IHByb3h5ID0gbmV3IEh0dHBIb3N0KHByb3h5SG9zdCwgcHJveHlQb3J0KTsKLSAgICAgICAgICAgICAgICBDb25uUm91dGVQYXJhbXMuc2V0RGVmYXVsdFByb3h5KHJlcS5nZXRQYXJhbXMoKSwgcHJveHkpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXEuYWRkSGVhZGVyKAotICAgICAgICAgICAgICAgICAgICAiQWNjZXB0IiwKLSAgICAgICAgICAgICAgICAgICAgIiovKiwgYXBwbGljYXRpb24vdm5kLndhcC5tbXMtbWVzc2FnZSwgYXBwbGljYXRpb24vdm5kLndhcC5zaWMiKTsKLQotICAgICAgICAgICAgcmVxLmFkZEhlYWRlcigKLSAgICAgICAgICAgICAgICAgICAgIngtd2FwLXByb2ZpbGUiLAotICAgICAgICAgICAgICAgICAgICAiaHR0cDovL3d3dy5vcGVubW9iaWxlYWxsaWFuY2Uub3JnL3RlY2gvcHJvZmlsZXMvVUFQUk9GL2NjcHBzY2hlbWEtMjAwMjEyMTIjIik7Ci0KLSAgICAgICAgICAgIEh0dHBSZXNwb25zZSByZXNwb25zZSA9IGNsaWVudC5leGVjdXRlKHJlcSk7Ci0gICAgICAgICAgICBTdGF0dXNMaW5lIHN0YXR1cyA9IHJlc3BvbnNlLmdldFN0YXR1c0xpbmUoKTsKLSAgICAgICAgICAgIGlmIChzdGF0dXMuZ2V0U3RhdHVzQ29kZSgpICE9IDIwMCkgeyAvLyBIVFRQIDIwMCBpcyBzdWNjZXNzLgotICAgICAgICAgICAgICAgIGlmIChDb25maWcuTE9HRCkgTG9nLmQoVEFHLCAiSFRUUCBlcnJvcjogIiArIHN0YXR1cy5nZXRSZWFzb25QaHJhc2UoKSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIEh0dHBFbnRpdHkgZW50aXR5ID0gcmVzcG9uc2UuZ2V0RW50aXR5KCk7Ci0gICAgICAgICAgICBieXRlW10gYm9keSA9IG51bGw7Ci0gICAgICAgICAgICBpZiAoZW50aXR5ICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICBpZiAoZW50aXR5LmdldENvbnRlbnRMZW5ndGgoKSA+IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJvZHkgPSBuZXcgYnl0ZVsoaW50KSBlbnRpdHkuZ2V0Q29udGVudExlbmd0aCgpXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIERhdGFJbnB1dFN0cmVhbSBkaXMgPSBuZXcgRGF0YUlucHV0U3RyZWFtKGVudGl0eS5nZXRDb250ZW50KCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXMucmVhZEZ1bGx5KGJvZHkpOwotICAgICAgICAgICAgICAgICAgICAgICAgfSBmaW5hbGx5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXMuY2xvc2UoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZy5lKFRBRywgIlVuZXhwZWN0ZWQgSU9FeGNlcHRpb24uIiwgZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBmaW5hbGx5IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGVudGl0eSAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbnRpdHkuY29uc3VtZUNvbnRlbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBib2R5OwotICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgaWYgKENvbmZpZy5MT0dEKSBMb2cuZChUQUcsICJlcnJvciAiICsgZSk7Ci0gICAgICAgIH0gZmluYWxseSB7Ci0gICAgICAgICAgICBpZiAoY2xpZW50ICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBjbGllbnQuY2xvc2UoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2xvY2F0aW9uL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvbG9jYXRpb24vTG9jYXRpb25Qcm92aWRlclByb3h5LmphdmEgYi9sb2NhdGlvbi9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL2xvY2F0aW9uL0xvY2F0aW9uUHJvdmlkZXJQcm94eS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMWVjMDlhLi4wMDAwMDAwCi0tLSBhL2xvY2F0aW9uL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvbG9jYXRpb24vTG9jYXRpb25Qcm92aWRlclByb3h5LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwzODQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLXBhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwubG9jYXRpb247Ci0KLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZTsKLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50OwotaW1wb3J0IGFuZHJvaWQuY29udGVudC5TZXJ2aWNlQ29ubmVjdGlvbjsKLWltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLklMb2NhdGlvblByb3ZpZGVyOwotaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uTG9jYXRpb247Ci1pbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5Mb2NhdGlvblByb3ZpZGVySW50ZXJmYWNlOwotaW1wb3J0IGFuZHJvaWQubmV0Lk5ldHdvcmtJbmZvOwotaW1wb3J0IGFuZHJvaWQub3MuQnVuZGxlOwotaW1wb3J0IGFuZHJvaWQub3MuSGFuZGxlcjsKLWltcG9ydCBhbmRyb2lkLm9zLklCaW5kZXI7Ci1pbXBvcnQgYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb247Ci1pbXBvcnQgYW5kcm9pZC5vcy5TeXN0ZW1DbG9jazsKLWltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOwotCi0vKioKLSAqIEEgY2xhc3MgZm9yIHByb3h5aW5nIGxvY2F0aW9uIHByb3ZpZGVycyBpbXBsZW1lbnRlZCBhcyBzZXJ2aWNlcy4KLSAqCi0gKiB7QGhpZGV9Ci0gKi8KLXB1YmxpYyBjbGFzcyBMb2NhdGlvblByb3ZpZGVyUHJveHkgaW1wbGVtZW50cyBMb2NhdGlvblByb3ZpZGVySW50ZXJmYWNlIHsKLQotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSAiTG9jYXRpb25Qcm92aWRlclByb3h5IjsKLQotICAgIHByaXZhdGUgZmluYWwgQ29udGV4dCBtQ29udGV4dDsKLSAgICBwcml2YXRlIGZpbmFsIFN0cmluZyBtTmFtZTsKLSAgICBwcml2YXRlIElMb2NhdGlvblByb3ZpZGVyIG1Qcm92aWRlcjsKLSAgICBwcml2YXRlIEhhbmRsZXIgbUhhbmRsZXI7Ci0gICAgcHJpdmF0ZSBmaW5hbCBDb25uZWN0aW9uIG1TZXJ2aWNlQ29ubmVjdGlvbiA9IG5ldyBDb25uZWN0aW9uKCk7Ci0KLSAgICAvLyBjYWNoZWQgdmFsdWVzIHNldCBieSB0aGUgbG9jYXRpb24gbWFuYWdlcgotICAgIHByaXZhdGUgYm9vbGVhbiBtTG9jYXRpb25UcmFja2luZyA9IGZhbHNlOwotICAgIHByaXZhdGUgYm9vbGVhbiBtRW5hYmxlZCA9IGZhbHNlOwotICAgIHByaXZhdGUgbG9uZyBtTWluVGltZSA9IC0xOwotICAgIHByaXZhdGUgaW50IG1OZXR3b3JrU3RhdGU7Ci0gICAgcHJpdmF0ZSBOZXR3b3JrSW5mbyBtTmV0d29ya0luZm87Ci0KLSAgICAvLyBmb3IgY2FjaGluZyByZXF1aXJlc05ldHdvcmssIHJlcXVpcmVzU2F0ZWxsaXRlLCBldGMuCi0gICAgcHJpdmF0ZSBEdW1teUxvY2F0aW9uUHJvdmlkZXIgbUNhY2hlZEF0dHJpYnV0ZXM7Ci0KLSAgICAvLyBjb25zdHJ1Y3RvciBmb3IgcHJveHlpbmcgbG9jYXRpb24gcHJvdmlkZXJzIGltcGxlbWVudGVkIGluIGEgc2VwYXJhdGUgc2VydmljZQotICAgIHB1YmxpYyBMb2NhdGlvblByb3ZpZGVyUHJveHkoQ29udGV4dCBjb250ZXh0LCBTdHJpbmcgbmFtZSwgU3RyaW5nIHNlcnZpY2VOYW1lLAotICAgICAgICAgICAgSGFuZGxlciBoYW5kbGVyKSB7Ci0gICAgICAgIG1Db250ZXh0ID0gY29udGV4dDsKLSAgICAgICAgbU5hbWUgPSBuYW1lOwotICAgICAgICBtSGFuZGxlciA9IGhhbmRsZXI7Ci0gICAgICAgIG1Db250ZXh0LmJpbmRTZXJ2aWNlKG5ldyBJbnRlbnQoc2VydmljZU5hbWUpLCBtU2VydmljZUNvbm5lY3Rpb24sIENvbnRleHQuQklORF9BVVRPX0NSRUFURSk7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBjbGFzcyBDb25uZWN0aW9uIGltcGxlbWVudHMgU2VydmljZUNvbm5lY3Rpb24gewotICAgICAgICBwdWJsaWMgdm9pZCBvblNlcnZpY2VDb25uZWN0ZWQoQ29tcG9uZW50TmFtZSBjbGFzc05hbWUsIElCaW5kZXIgc2VydmljZSkgewotICAgICAgICAgICAgTG9nLmQoVEFHLCAiTG9jYXRpb25Qcm92aWRlclByb3h5Lm9uU2VydmljZUNvbm5lY3RlZCAiICsgY2xhc3NOYW1lKTsKLSAgICAgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgewotICAgICAgICAgICAgICAgIG1Qcm92aWRlciA9IElMb2NhdGlvblByb3ZpZGVyLlN0dWIuYXNJbnRlcmZhY2Uoc2VydmljZSk7Ci0gICAgICAgICAgICAgICAgaWYgKG1Qcm92aWRlciAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1IYW5kbGVyLnBvc3QobVNlcnZpY2VDb25uZWN0ZWRUYXNrKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgdm9pZCBvblNlcnZpY2VEaXNjb25uZWN0ZWQoQ29tcG9uZW50TmFtZSBjbGFzc05hbWUpIHsKLSAgICAgICAgICAgIExvZy5kKFRBRywgIkxvY2F0aW9uUHJvdmlkZXJQcm94eS5vblNlcnZpY2VEaXNjb25uZWN0ZWQgIiArIGNsYXNzTmFtZSk7Ci0gICAgICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKLSAgICAgICAgICAgICAgICBtUHJvdmlkZXIgPSBudWxsOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBSdW5uYWJsZSBtU2VydmljZUNvbm5lY3RlZFRhc2sgPSBuZXcgUnVubmFibGUoKSB7Ci0gICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKLSAgICAgICAgICAgIElMb2NhdGlvblByb3ZpZGVyIHByb3ZpZGVyOwotICAgICAgICAgICAgc3luY2hyb25pemVkIChtU2VydmljZUNvbm5lY3Rpb24pIHsKLSAgICAgICAgICAgICAgICBwcm92aWRlciA9IG1Qcm92aWRlcjsKLSAgICAgICAgICAgICAgICBpZiAocHJvdmlkZXIgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAobUNhY2hlZEF0dHJpYnV0ZXMgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIG1DYWNoZWRBdHRyaWJ1dGVzID0gbmV3IER1bW15TG9jYXRpb25Qcm92aWRlcihtTmFtZSk7Ci0gICAgICAgICAgICAgICAgICAgIG1DYWNoZWRBdHRyaWJ1dGVzLnNldFJlcXVpcmVzTmV0d29yayhwcm92aWRlci5yZXF1aXJlc05ldHdvcmsoKSk7Ci0gICAgICAgICAgICAgICAgICAgIG1DYWNoZWRBdHRyaWJ1dGVzLnNldFJlcXVpcmVzU2F0ZWxsaXRlKHByb3ZpZGVyLnJlcXVpcmVzU2F0ZWxsaXRlKCkpOwotICAgICAgICAgICAgICAgICAgICBtQ2FjaGVkQXR0cmlidXRlcy5zZXRSZXF1aXJlc0NlbGwocHJvdmlkZXIucmVxdWlyZXNDZWxsKCkpOwotICAgICAgICAgICAgICAgICAgICBtQ2FjaGVkQXR0cmlidXRlcy5zZXRIYXNNb25ldGFyeUNvc3QocHJvdmlkZXIuaGFzTW9uZXRhcnlDb3N0KCkpOwotICAgICAgICAgICAgICAgICAgICBtQ2FjaGVkQXR0cmlidXRlcy5zZXRTdXBwb3J0c0FsdGl0dWRlKHByb3ZpZGVyLnN1cHBvcnRzQWx0aXR1ZGUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIG1DYWNoZWRBdHRyaWJ1dGVzLnNldFN1cHBvcnRzU3BlZWQocHJvdmlkZXIuc3VwcG9ydHNTcGVlZCgpKTsKLSAgICAgICAgICAgICAgICAgICAgbUNhY2hlZEF0dHJpYnV0ZXMuc2V0U3VwcG9ydHNCZWFyaW5nKHByb3ZpZGVyLnN1cHBvcnRzQmVhcmluZygpKTsKLSAgICAgICAgICAgICAgICAgICAgbUNhY2hlZEF0dHJpYnV0ZXMuc2V0UG93ZXJSZXF1aXJlbWVudChwcm92aWRlci5nZXRQb3dlclJlcXVpcmVtZW50KCkpOwotICAgICAgICAgICAgICAgICAgICBtQ2FjaGVkQXR0cmlidXRlcy5zZXRBY2N1cmFjeShwcm92aWRlci5nZXRBY2N1cmFjeSgpKTsKLSAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgICAgICBtQ2FjaGVkQXR0cmlidXRlcyA9IG51bGw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyByZXNlbmQgcHJldmlvdXMgdmFsdWVzIGZyb20gdGhlIGxvY2F0aW9uIG1hbmFnZXIgaWYgdGhlIHNlcnZpY2UgaGFzIHJlc3RhcnRlZAotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBpZiAobUVuYWJsZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXIuZW5hYmxlKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChtTG9jYXRpb25UcmFja2luZykgewotICAgICAgICAgICAgICAgICAgICBwcm92aWRlci5lbmFibGVMb2NhdGlvblRyYWNraW5nKHRydWUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAobU1pblRpbWUgPj0gMCkgewotICAgICAgICAgICAgICAgICAgICBwcm92aWRlci5zZXRNaW5UaW1lKG1NaW5UaW1lKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKG1OZXR3b3JrSW5mbyAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIHByb3ZpZGVyLnVwZGF0ZU5ldHdvcmtTdGF0ZShtTmV0d29ya1N0YXRlLCBtTmV0d29ya0luZm8pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgcHVibGljIFN0cmluZyBnZXROYW1lKCkgewotICAgICAgICByZXR1cm4gbU5hbWU7Ci0gICAgfQotCi0gICAgcHVibGljIGJvb2xlYW4gcmVxdWlyZXNOZXR3b3JrKCkgewotICAgICAgICBpZiAobUNhY2hlZEF0dHJpYnV0ZXMgIT0gbnVsbCkgewotICAgICAgICAgICAgcmV0dXJuIG1DYWNoZWRBdHRyaWJ1dGVzLnJlcXVpcmVzTmV0d29yaygpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHVibGljIGJvb2xlYW4gcmVxdWlyZXNTYXRlbGxpdGUoKSB7Ci0gICAgICAgIGlmIChtQ2FjaGVkQXR0cmlidXRlcyAhPSBudWxsKSB7Ci0gICAgICAgICAgICByZXR1cm4gbUNhY2hlZEF0dHJpYnV0ZXMucmVxdWlyZXNTYXRlbGxpdGUoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyBib29sZWFuIHJlcXVpcmVzQ2VsbCgpIHsKLSAgICAgICAgaWYgKG1DYWNoZWRBdHRyaWJ1dGVzICE9IG51bGwpIHsKLSAgICAgICAgICAgIHJldHVybiBtQ2FjaGVkQXR0cmlidXRlcy5yZXF1aXJlc0NlbGwoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyBib29sZWFuIGhhc01vbmV0YXJ5Q29zdCgpIHsKLSAgICAgICAgaWYgKG1DYWNoZWRBdHRyaWJ1dGVzICE9IG51bGwpIHsKLSAgICAgICAgICAgIHJldHVybiBtQ2FjaGVkQXR0cmlidXRlcy5oYXNNb25ldGFyeUNvc3QoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyBib29sZWFuIHN1cHBvcnRzQWx0aXR1ZGUoKSB7Ci0gICAgICAgIGlmIChtQ2FjaGVkQXR0cmlidXRlcyAhPSBudWxsKSB7Ci0gICAgICAgICAgICByZXR1cm4gbUNhY2hlZEF0dHJpYnV0ZXMuc3VwcG9ydHNBbHRpdHVkZSgpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHVibGljIGJvb2xlYW4gc3VwcG9ydHNTcGVlZCgpIHsKLSAgICAgICAgaWYgKG1DYWNoZWRBdHRyaWJ1dGVzICE9IG51bGwpIHsKLSAgICAgICAgICAgIHJldHVybiBtQ2FjaGVkQXR0cmlidXRlcy5zdXBwb3J0c1NwZWVkKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAgcHVibGljIGJvb2xlYW4gc3VwcG9ydHNCZWFyaW5nKCkgewotICAgICAgICBpZiAobUNhY2hlZEF0dHJpYnV0ZXMgIT0gbnVsbCkgewotICAgICAgICAgICAgcmV0dXJuIG1DYWNoZWRBdHRyaWJ1dGVzLnN1cHBvcnRzQmVhcmluZygpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHVibGljIGludCBnZXRQb3dlclJlcXVpcmVtZW50KCkgewotICAgICAgICBpZiAobUNhY2hlZEF0dHJpYnV0ZXMgIT0gbnVsbCkgewotICAgICAgICAgICAgcmV0dXJuIG1DYWNoZWRBdHRyaWJ1dGVzLmdldFBvd2VyUmVxdWlyZW1lbnQoKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyBpbnQgZ2V0QWNjdXJhY3koKSB7Ci0gICAgICAgIGlmIChtQ2FjaGVkQXR0cmlidXRlcyAhPSBudWxsKSB7Ci0gICAgICAgICAgICByZXR1cm4gbUNhY2hlZEF0dHJpYnV0ZXMuZ2V0QWNjdXJhY3koKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIGVuYWJsZSgpIHsKLSAgICAgICAgbUVuYWJsZWQgPSB0cnVlOwotICAgICAgICBJTG9jYXRpb25Qcm92aWRlciBwcm92aWRlcjsKLSAgICAgICAgc3luY2hyb25pemVkIChtU2VydmljZUNvbm5lY3Rpb24pIHsKLSAgICAgICAgICAgIHByb3ZpZGVyID0gbVByb3ZpZGVyOwotICAgICAgICB9Ci0gICAgICAgIGlmIChwcm92aWRlciAhPSBudWxsKSB7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIHByb3ZpZGVyLmVuYWJsZSgpOwotICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIGRpc2FibGUoKSB7Ci0gICAgICAgIG1FbmFibGVkID0gZmFsc2U7Ci0gICAgICAgIElMb2NhdGlvblByb3ZpZGVyIHByb3ZpZGVyOwotICAgICAgICBzeW5jaHJvbml6ZWQgKG1TZXJ2aWNlQ29ubmVjdGlvbikgewotICAgICAgICAgICAgcHJvdmlkZXIgPSBtUHJvdmlkZXI7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHByb3ZpZGVyICE9IG51bGwpIHsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgcHJvdmlkZXIuZGlzYWJsZSgpOwotICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyBib29sZWFuIGlzRW5hYmxlZCgpIHsKLSAgICAgICAgcmV0dXJuIG1FbmFibGVkOwotICAgIH0KLQotICAgIHB1YmxpYyBpbnQgZ2V0U3RhdHVzKEJ1bmRsZSBleHRyYXMpIHsKLSAgICAgICAgSUxvY2F0aW9uUHJvdmlkZXIgcHJvdmlkZXI7Ci0gICAgICAgIHN5bmNocm9uaXplZCAobVNlcnZpY2VDb25uZWN0aW9uKSB7Ci0gICAgICAgICAgICBwcm92aWRlciA9IG1Qcm92aWRlcjsKLSAgICAgICAgfQotICAgICAgICBpZiAocHJvdmlkZXIgIT0gbnVsbCkgewotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICByZXR1cm4gcHJvdmlkZXIuZ2V0U3RhdHVzKGV4dHJhcyk7Ci0gICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIHB1YmxpYyBsb25nIGdldFN0YXR1c1VwZGF0ZVRpbWUoKSB7Ci0gICAgICAgICBJTG9jYXRpb25Qcm92aWRlciBwcm92aWRlcjsKLSAgICAgICAgc3luY2hyb25pemVkIChtU2VydmljZUNvbm5lY3Rpb24pIHsKLSAgICAgICAgICAgIHByb3ZpZGVyID0gbVByb3ZpZGVyOwotICAgICAgICB9Ci0gICAgICAgIGlmIChwcm92aWRlciAhPSBudWxsKSB7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIHJldHVybiBwcm92aWRlci5nZXRTdGF0dXNVcGRhdGVUaW1lKCk7Ci0gICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAwOwotICAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldEludGVybmFsU3RhdGUoKSB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICByZXR1cm4gbVByb3ZpZGVyLmdldEludGVybmFsU3RhdGUoKTsKLSAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgIExvZy5lKFRBRywgImdldEludGVybmFsU3RhdGUgZmFpbGVkIiwgZSk7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyBib29sZWFuIGlzTG9jYXRpb25UcmFja2luZygpIHsKLSAgICAgICAgcmV0dXJuIG1Mb2NhdGlvblRyYWNraW5nOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIGVuYWJsZUxvY2F0aW9uVHJhY2tpbmcoYm9vbGVhbiBlbmFibGUpIHsKLSAgICAgICAgbUxvY2F0aW9uVHJhY2tpbmcgPSBlbmFibGU7Ci0gICAgICAgIGlmICghZW5hYmxlKSB7Ci0gICAgICAgICAgICBtTWluVGltZSA9IC0xOwotICAgICAgICB9Ci0gICAgICAgIElMb2NhdGlvblByb3ZpZGVyIHByb3ZpZGVyOwotICAgICAgICBzeW5jaHJvbml6ZWQgKG1TZXJ2aWNlQ29ubmVjdGlvbikgewotICAgICAgICAgICAgcHJvdmlkZXIgPSBtUHJvdmlkZXI7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHByb3ZpZGVyICE9IG51bGwpIHsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgcHJvdmlkZXIuZW5hYmxlTG9jYXRpb25UcmFja2luZyhlbmFibGUpOwotICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyBsb25nIGdldE1pblRpbWUoKSB7Ci0gICAgICAgIHJldHVybiBtTWluVGltZTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRNaW5UaW1lKGxvbmcgbWluVGltZSkgewotICAgICAgIG1NaW5UaW1lID0gbWluVGltZTsKLSAgICAgICAgSUxvY2F0aW9uUHJvdmlkZXIgcHJvdmlkZXI7Ci0gICAgICAgIHN5bmNocm9uaXplZCAobVNlcnZpY2VDb25uZWN0aW9uKSB7Ci0gICAgICAgICAgICBwcm92aWRlciA9IG1Qcm92aWRlcjsKLSAgICAgICAgfQotICAgICAgICBpZiAocHJvdmlkZXIgIT0gbnVsbCkgewotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBwcm92aWRlci5zZXRNaW5UaW1lKG1pblRpbWUpOwotICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHVwZGF0ZU5ldHdvcmtTdGF0ZShpbnQgc3RhdGUsIE5ldHdvcmtJbmZvIGluZm8pIHsKLSAgICAgICAgbU5ldHdvcmtTdGF0ZSA9IHN0YXRlOwotICAgICAgICBtTmV0d29ya0luZm8gPSBpbmZvOwotICAgICAgICBJTG9jYXRpb25Qcm92aWRlciBwcm92aWRlcjsKLSAgICAgICAgc3luY2hyb25pemVkIChtU2VydmljZUNvbm5lY3Rpb24pIHsKLSAgICAgICAgICAgIHByb3ZpZGVyID0gbVByb3ZpZGVyOwotICAgICAgICB9Ci0gICAgICAgIGlmIChwcm92aWRlciAhPSBudWxsKSB7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIHByb3ZpZGVyLnVwZGF0ZU5ldHdvcmtTdGF0ZShzdGF0ZSwgaW5mbyk7Ci0gICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgdXBkYXRlTG9jYXRpb24oTG9jYXRpb24gbG9jYXRpb24pIHsKLSAgICAgICAgSUxvY2F0aW9uUHJvdmlkZXIgcHJvdmlkZXI7Ci0gICAgICAgIHN5bmNocm9uaXplZCAobVNlcnZpY2VDb25uZWN0aW9uKSB7Ci0gICAgICAgICAgICBwcm92aWRlciA9IG1Qcm92aWRlcjsKLSAgICAgICAgfQotICAgICAgICBpZiAocHJvdmlkZXIgIT0gbnVsbCkgewotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBwcm92aWRlci51cGRhdGVMb2NhdGlvbihsb2NhdGlvbik7Ci0gICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHVibGljIGJvb2xlYW4gc2VuZEV4dHJhQ29tbWFuZChTdHJpbmcgY29tbWFuZCwgQnVuZGxlIGV4dHJhcykgewotICAgICAgICBJTG9jYXRpb25Qcm92aWRlciBwcm92aWRlcjsKLSAgICAgICAgc3luY2hyb25pemVkIChtU2VydmljZUNvbm5lY3Rpb24pIHsKLSAgICAgICAgICAgIHByb3ZpZGVyID0gbVByb3ZpZGVyOwotICAgICAgICB9Ci0gICAgICAgIGlmIChwcm92aWRlciAhPSBudWxsKSB7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIHByb3ZpZGVyLnNlbmRFeHRyYUNvbW1hbmQoY29tbWFuZCwgZXh0cmFzKTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIGFkZExpc3RlbmVyKGludCB1aWQpIHsKLSAgICAgICAgSUxvY2F0aW9uUHJvdmlkZXIgcHJvdmlkZXI7Ci0gICAgICAgIHN5bmNocm9uaXplZCAobVNlcnZpY2VDb25uZWN0aW9uKSB7Ci0gICAgICAgICAgICBwcm92aWRlciA9IG1Qcm92aWRlcjsKLSAgICAgICAgfQotICAgICAgICBpZiAocHJvdmlkZXIgIT0gbnVsbCkgewotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBwcm92aWRlci5hZGRMaXN0ZW5lcih1aWQpOwotICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHJlbW92ZUxpc3RlbmVyKGludCB1aWQpIHsKLSAgICAgICAgSUxvY2F0aW9uUHJvdmlkZXIgcHJvdmlkZXI7Ci0gICAgICAgIHN5bmNocm9uaXplZCAobVNlcnZpY2VDb25uZWN0aW9uKSB7Ci0gICAgICAgICAgICBwcm92aWRlciA9IG1Qcm92aWRlcjsKLSAgICAgICAgfQotICAgICAgICBpZiAocHJvdmlkZXIgIT0gbnVsbCkgewotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBwcm92aWRlci5yZW1vdmVMaXN0ZW5lcih1aWQpOwotICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KZGlmZiAtLWdpdCBhL2xvY2F0aW9uL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvbG9jYXRpb24vTW9ja1Byb3ZpZGVyLmphdmEgYi9sb2NhdGlvbi9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL2xvY2F0aW9uL01vY2tQcm92aWRlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOTEyNzQwLi4wMDAwMDAwCi0tLSBhL2xvY2F0aW9uL2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvbG9jYXRpb24vTW9ja1Byb3ZpZGVyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMDcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLXBhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwubG9jYXRpb247Ci0KLWltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLklMb2NhdGlvbk1hbmFnZXI7Ci1pbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5Mb2NhdGlvbjsKLWltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uUHJvdmlkZXI7Ci1pbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5Mb2NhdGlvblByb3ZpZGVySW50ZXJmYWNlOwotaW1wb3J0IGFuZHJvaWQubmV0Lk5ldHdvcmtJbmZvOwotaW1wb3J0IGFuZHJvaWQub3MuQnVuZGxlOwotaW1wb3J0IGFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uOwotaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7Ci1pbXBvcnQgYW5kcm9pZC51dGlsLlByaW50V3JpdGVyUHJpbnRlcjsKLQotaW1wb3J0IGphdmEuaW8uUHJpbnRXcml0ZXI7Ci0KLS8qKgotICogQSBtb2NrIGxvY2F0aW9uIHByb3ZpZGVyIHVzZWQgYnkgTG9jYXRpb25NYW5hZ2VyU2VydmljZSB0byBpbXBsZW1lbnQgdGVzdCBwcm92aWRlcnMuCi0gKgotICoge0BoaWRlfQotICovCi1wdWJsaWMgY2xhc3MgTW9ja1Byb3ZpZGVyIGltcGxlbWVudHMgTG9jYXRpb25Qcm92aWRlckludGVyZmFjZSB7Ci0gICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgbU5hbWU7Ci0gICAgcHJpdmF0ZSBmaW5hbCBJTG9jYXRpb25NYW5hZ2VyIG1Mb2NhdGlvbk1hbmFnZXI7Ci0gICAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIG1SZXF1aXJlc05ldHdvcms7Ci0gICAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIG1SZXF1aXJlc1NhdGVsbGl0ZTsKLSAgICBwcml2YXRlIGZpbmFsIGJvb2xlYW4gbVJlcXVpcmVzQ2VsbDsKLSAgICBwcml2YXRlIGZpbmFsIGJvb2xlYW4gbUhhc01vbmV0YXJ5Q29zdDsKLSAgICBwcml2YXRlIGZpbmFsIGJvb2xlYW4gbVN1cHBvcnRzQWx0aXR1ZGU7Ci0gICAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIG1TdXBwb3J0c1NwZWVkOwotICAgIHByaXZhdGUgZmluYWwgYm9vbGVhbiBtU3VwcG9ydHNCZWFyaW5nOwotICAgIHByaXZhdGUgZmluYWwgaW50IG1Qb3dlclJlcXVpcmVtZW50OwotICAgIHByaXZhdGUgZmluYWwgaW50IG1BY2N1cmFjeTsKLSAgICBwcml2YXRlIGZpbmFsIExvY2F0aW9uIG1Mb2NhdGlvbjsKLSAgICBwcml2YXRlIGludCBtU3RhdHVzOwotICAgIHByaXZhdGUgbG9uZyBtU3RhdHVzVXBkYXRlVGltZTsKLSAgICBwcml2YXRlIGZpbmFsIEJ1bmRsZSBtRXh0cmFzID0gbmV3IEJ1bmRsZSgpOwotICAgIHByaXZhdGUgYm9vbGVhbiBtSGFzTG9jYXRpb247Ci0gICAgcHJpdmF0ZSBib29sZWFuIG1IYXNTdGF0dXM7Ci0gICAgcHJpdmF0ZSBib29sZWFuIG1FbmFibGVkOwotCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9ICJNb2NrUHJvdmlkZXIiOwotCi0gICAgcHVibGljIE1vY2tQcm92aWRlcihTdHJpbmcgbmFtZSwgIElMb2NhdGlvbk1hbmFnZXIgbG9jYXRpb25NYW5hZ2VyLAotICAgICAgICBib29sZWFuIHJlcXVpcmVzTmV0d29yaywgYm9vbGVhbiByZXF1aXJlc1NhdGVsbGl0ZSwKLSAgICAgICAgYm9vbGVhbiByZXF1aXJlc0NlbGwsIGJvb2xlYW4gaGFzTW9uZXRhcnlDb3N0LCBib29sZWFuIHN1cHBvcnRzQWx0aXR1ZGUsCi0gICAgICAgIGJvb2xlYW4gc3VwcG9ydHNTcGVlZCwgYm9vbGVhbiBzdXBwb3J0c0JlYXJpbmcsIGludCBwb3dlclJlcXVpcmVtZW50LCBpbnQgYWNjdXJhY3kpIHsKLSAgICAgICAgbU5hbWUgPSBuYW1lOwotICAgICAgICBtTG9jYXRpb25NYW5hZ2VyID0gbG9jYXRpb25NYW5hZ2VyOwotICAgICAgICBtUmVxdWlyZXNOZXR3b3JrID0gcmVxdWlyZXNOZXR3b3JrOwotICAgICAgICBtUmVxdWlyZXNTYXRlbGxpdGUgPSByZXF1aXJlc1NhdGVsbGl0ZTsKLSAgICAgICAgbVJlcXVpcmVzQ2VsbCA9IHJlcXVpcmVzQ2VsbDsKLSAgICAgICAgbUhhc01vbmV0YXJ5Q29zdCA9IGhhc01vbmV0YXJ5Q29zdDsKLSAgICAgICAgbVN1cHBvcnRzQWx0aXR1ZGUgPSBzdXBwb3J0c0FsdGl0dWRlOwotICAgICAgICBtU3VwcG9ydHNCZWFyaW5nID0gc3VwcG9ydHNCZWFyaW5nOwotICAgICAgICBtU3VwcG9ydHNTcGVlZCA9IHN1cHBvcnRzU3BlZWQ7Ci0gICAgICAgIG1Qb3dlclJlcXVpcmVtZW50ID0gcG93ZXJSZXF1aXJlbWVudDsKLSAgICAgICAgbUFjY3VyYWN5ID0gYWNjdXJhY3k7Ci0gICAgICAgIG1Mb2NhdGlvbiA9IG5ldyBMb2NhdGlvbihuYW1lKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKSB7Ci0gICAgICAgIHJldHVybiBtTmFtZTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBkaXNhYmxlKCkgewotICAgICAgICBtRW5hYmxlZCA9IGZhbHNlOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIGVuYWJsZSgpIHsKLSAgICAgICAgbUVuYWJsZWQgPSB0cnVlOwotICAgIH0KLQotICAgIHB1YmxpYyBib29sZWFuIGlzRW5hYmxlZCgpIHsKLSAgICAgICAgcmV0dXJuIG1FbmFibGVkOwotICAgIH0KLQotICAgIHB1YmxpYyBpbnQgZ2V0U3RhdHVzKEJ1bmRsZSBleHRyYXMpIHsKLSAgICAgICAgaWYgKG1IYXNTdGF0dXMpIHsKLSAgICAgICAgICAgIGV4dHJhcy5jbGVhcigpOwotICAgICAgICAgICAgZXh0cmFzLnB1dEFsbChtRXh0cmFzKTsKLSAgICAgICAgICAgIHJldHVybiBtU3RhdHVzOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIExvY2F0aW9uUHJvdmlkZXIuQVZBSUxBQkxFOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHVibGljIGxvbmcgZ2V0U3RhdHVzVXBkYXRlVGltZSgpIHsKLSAgICAgICAgcmV0dXJuIG1TdGF0dXNVcGRhdGVUaW1lOwotICAgIH0KLQotICAgIHB1YmxpYyBpbnQgZ2V0QWNjdXJhY3koKSB7Ci0gICAgICAgIHJldHVybiBtQWNjdXJhY3k7Ci0gICAgfQotCi0gICAgcHVibGljIGludCBnZXRQb3dlclJlcXVpcmVtZW50KCkgewotICAgICAgICByZXR1cm4gbVBvd2VyUmVxdWlyZW1lbnQ7Ci0gICAgfQotCi0gICAgcHVibGljIGJvb2xlYW4gaGFzTW9uZXRhcnlDb3N0KCkgewotICAgICAgICByZXR1cm4gbUhhc01vbmV0YXJ5Q29zdDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgYm9vbGVhbiByZXF1aXJlc0NlbGwoKSB7Ci0gICAgICAgIHJldHVybiBtUmVxdWlyZXNDZWxsOwotICAgIH0KLQotICAgIHB1YmxpYyBib29sZWFuIHJlcXVpcmVzTmV0d29yaygpIHsKLSAgICAgICAgcmV0dXJuIG1SZXF1aXJlc05ldHdvcms7Ci0gICAgfQotCi0gICAgcHVibGljIGJvb2xlYW4gcmVxdWlyZXNTYXRlbGxpdGUoKSB7Ci0gICAgICAgIHJldHVybiBtUmVxdWlyZXNTYXRlbGxpdGU7Ci0gICAgfQotCi0gICAgcHVibGljIGJvb2xlYW4gc3VwcG9ydHNBbHRpdHVkZSgpIHsKLSAgICAgICAgcmV0dXJuIG1TdXBwb3J0c0FsdGl0dWRlOwotICAgIH0KLQotICAgIHB1YmxpYyBib29sZWFuIHN1cHBvcnRzQmVhcmluZygpIHsKLSAgICAgICAgcmV0dXJuIG1TdXBwb3J0c0JlYXJpbmc7Ci0gICAgfQotCi0gICAgcHVibGljIGJvb2xlYW4gc3VwcG9ydHNTcGVlZCgpIHsKLSAgICAgICAgcmV0dXJuIG1TdXBwb3J0c1NwZWVkOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldExvY2F0aW9uKExvY2F0aW9uIGwpIHsKLSAgICAgICAgbUxvY2F0aW9uLnNldChsKTsKLSAgICAgICAgbUhhc0xvY2F0aW9uID0gdHJ1ZTsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIG1Mb2NhdGlvbk1hbmFnZXIucmVwb3J0TG9jYXRpb24obUxvY2F0aW9uLCBmYWxzZSk7Ci0gICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICBMb2cuZShUQUcsICJSZW1vdGVFeGNlcHRpb24gY2FsbGluZyByZXBvcnRMb2NhdGlvbiIpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgY2xlYXJMb2NhdGlvbigpIHsKLSAgICAgICAgbUhhc0xvY2F0aW9uID0gZmFsc2U7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0U3RhdHVzKGludCBzdGF0dXMsIEJ1bmRsZSBleHRyYXMsIGxvbmcgdXBkYXRlVGltZSkgewotICAgICAgICBtU3RhdHVzID0gc3RhdHVzOwotICAgICAgICBtU3RhdHVzVXBkYXRlVGltZSA9IHVwZGF0ZVRpbWU7Ci0gICAgICAgIG1FeHRyYXMuY2xlYXIoKTsKLSAgICAgICAgaWYgKGV4dHJhcyAhPSBudWxsKSB7Ci0gICAgICAgICAgICBtRXh0cmFzLnB1dEFsbChleHRyYXMpOwotICAgICAgICB9Ci0gICAgICAgIG1IYXNTdGF0dXMgPSB0cnVlOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIGNsZWFyU3RhdHVzKCkgewotICAgICAgICBtSGFzU3RhdHVzID0gZmFsc2U7Ci0gICAgICAgIG1TdGF0dXNVcGRhdGVUaW1lID0gMDsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldEludGVybmFsU3RhdGUoKSB7Ci0gICAgICAgIHJldHVybiBudWxsOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIGVuYWJsZUxvY2F0aW9uVHJhY2tpbmcoYm9vbGVhbiBlbmFibGUpIHsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRNaW5UaW1lKGxvbmcgbWluVGltZSkgewotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHVwZGF0ZU5ldHdvcmtTdGF0ZShpbnQgc3RhdGUsIE5ldHdvcmtJbmZvIGluZm8pIHsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCB1cGRhdGVMb2NhdGlvbihMb2NhdGlvbiBsb2NhdGlvbikgewotICAgIH0KLQotICAgIHB1YmxpYyBib29sZWFuIHNlbmRFeHRyYUNvbW1hbmQoU3RyaW5nIGNvbW1hbmQsIEJ1bmRsZSBleHRyYXMpIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIGFkZExpc3RlbmVyKGludCB1aWQpIHsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCByZW1vdmVMaXN0ZW5lcihpbnQgdWlkKSB7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgZHVtcChQcmludFdyaXRlciBwdywgU3RyaW5nIHByZWZpeCkgewotICAgICAgICBwdy5wcmludGxuKHByZWZpeCArIG1OYW1lKTsKLSAgICAgICAgcHcucHJpbnRsbihwcmVmaXggKyAibUhhc0xvY2F0aW9uPSIgKyBtSGFzTG9jYXRpb24pOwotICAgICAgICBwdy5wcmludGxuKHByZWZpeCArICJtTG9jYXRpb246Iik7Ci0gICAgICAgIG1Mb2NhdGlvbi5kdW1wKG5ldyBQcmludFdyaXRlclByaW50ZXIocHcpLCBwcmVmaXggKyAiICAiKTsKLSAgICAgICAgcHcucHJpbnRsbihwcmVmaXggKyAibUhhc1N0YXR1cz0iICsgbUhhc1N0YXR1cyk7Ci0gICAgICAgIHB3LnByaW50bG4ocHJlZml4ICsgIm1TdGF0dXM9IiArIG1TdGF0dXMpOwotICAgICAgICBwdy5wcmludGxuKHByZWZpeCArICJtU3RhdHVzVXBkYXRlVGltZT0iICsgbVN0YXR1c1VwZGF0ZVRpbWUpOwotICAgICAgICBwdy5wcmludGxuKHByZWZpeCArICJtRXh0cmFzPSIgKyBtRXh0cmFzKTsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9sb2NhdGlvbi9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL2xvY2F0aW9uL1Bhc3NpdmVQcm92aWRlci5qYXZhIGIvbG9jYXRpb24vamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC9sb2NhdGlvbi9QYXNzaXZlUHJvdmlkZXIuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWI5MDkzNy4uMDAwMDAwMAotLS0gYS9sb2NhdGlvbi9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL2xvY2F0aW9uL1Bhc3NpdmVQcm92aWRlci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTQzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi1wYWNrYWdlIGNvbS5hbmRyb2lkLmludGVybmFsLmxvY2F0aW9uOwotCi1pbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5JTG9jYXRpb25NYW5hZ2VyOwotaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uTG9jYXRpb247Ci1pbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5Mb2NhdGlvbk1hbmFnZXI7Ci1pbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5Mb2NhdGlvblByb3ZpZGVyOwotaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uTG9jYXRpb25Qcm92aWRlckludGVyZmFjZTsKLWltcG9ydCBhbmRyb2lkLm5ldC5OZXR3b3JrSW5mbzsKLWltcG9ydCBhbmRyb2lkLm9zLkJ1bmRsZTsKLWltcG9ydCBhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbjsKLWltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOwotCi0vKioKLSAqIEEgcGFzc2l2ZSBsb2NhdGlvbiBwcm92aWRlciByZXBvcnRzIGxvY2F0aW9ucyByZWNlaXZlZCBmcm9tIG90aGVyIHByb3ZpZGVycwotICogZm9yIGNsaWVudHMgdGhhdCB3YW50IHRvIGxpc3RlbiBwYXNzaXZlbHkgd2l0aG91dCBhY3R1YWxseSB0cmlnZ2VyaW5nCi0gKiBsb2NhdGlvbiB1cGRhdGVzLgotICoKLSAqIHtAaGlkZX0KLSAqLwotcHVibGljIGNsYXNzIFBhc3NpdmVQcm92aWRlciBpbXBsZW1lbnRzIExvY2F0aW9uUHJvdmlkZXJJbnRlcmZhY2UgewotCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9ICJQYXNzaXZlUHJvdmlkZXIiOwotCi0gICAgcHJpdmF0ZSBmaW5hbCBJTG9jYXRpb25NYW5hZ2VyIG1Mb2NhdGlvbk1hbmFnZXI7Ci0gICAgcHJpdmF0ZSBib29sZWFuIG1UcmFja2luZzsKLQotICAgIHB1YmxpYyBQYXNzaXZlUHJvdmlkZXIoSUxvY2F0aW9uTWFuYWdlciBsb2NhdGlvbk1hbmFnZXIpIHsKLSAgICAgICAgbUxvY2F0aW9uTWFuYWdlciA9IGxvY2F0aW9uTWFuYWdlcjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKSB7Ci0gICAgICAgIHJldHVybiBMb2NhdGlvbk1hbmFnZXIuUEFTU0lWRV9QUk9WSURFUjsKLSAgICB9Ci0KLSAgICBwdWJsaWMgYm9vbGVhbiByZXF1aXJlc05ldHdvcmsoKSB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgYm9vbGVhbiByZXF1aXJlc1NhdGVsbGl0ZSgpIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHB1YmxpYyBib29sZWFuIHJlcXVpcmVzQ2VsbCgpIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHB1YmxpYyBib29sZWFuIGhhc01vbmV0YXJ5Q29zdCgpIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHB1YmxpYyBib29sZWFuIHN1cHBvcnRzQWx0aXR1ZGUoKSB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgYm9vbGVhbiBzdXBwb3J0c1NwZWVkKCkgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcHVibGljIGJvb2xlYW4gc3VwcG9ydHNCZWFyaW5nKCkgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcHVibGljIGludCBnZXRQb3dlclJlcXVpcmVtZW50KCkgewotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotCi0gICAgcHVibGljIGludCBnZXRBY2N1cmFjeSgpIHsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQotICAgIHB1YmxpYyBib29sZWFuIGlzRW5hYmxlZCgpIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgZW5hYmxlKCkgewotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIGRpc2FibGUoKSB7Ci0gICAgfQotCi0gICAgcHVibGljIGludCBnZXRTdGF0dXMoQnVuZGxlIGV4dHJhcykgewotICAgICAgICBpZiAobVRyYWNraW5nKSB7Ci0gICAgICAgICAgICByZXR1cm4gTG9jYXRpb25Qcm92aWRlci5BVkFJTEFCTEU7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4gTG9jYXRpb25Qcm92aWRlci5URU1QT1JBUklMWV9VTkFWQUlMQUJMRTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyBsb25nIGdldFN0YXR1c1VwZGF0ZVRpbWUoKSB7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIGdldEludGVybmFsU3RhdGUoKSB7Ci0gICAgICAgIHJldHVybiBudWxsOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIGVuYWJsZUxvY2F0aW9uVHJhY2tpbmcoYm9vbGVhbiBlbmFibGUpIHsKLSAgICAgICAgbVRyYWNraW5nID0gZW5hYmxlOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHNldE1pblRpbWUobG9uZyBtaW5UaW1lKSB7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgdXBkYXRlTmV0d29ya1N0YXRlKGludCBzdGF0ZSwgTmV0d29ya0luZm8gaW5mbykgewotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHVwZGF0ZUxvY2F0aW9uKExvY2F0aW9uIGxvY2F0aW9uKSB7Ci0gICAgICAgIGlmIChtVHJhY2tpbmcpIHsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgLy8gcGFzcyB0aGUgbG9jYXRpb24gYmFjayB0byB0aGUgbG9jYXRpb24gbWFuYWdlcgotICAgICAgICAgICAgICAgIG1Mb2NhdGlvbk1hbmFnZXIucmVwb3J0TG9jYXRpb24obG9jYXRpb24sIHRydWUpOwotICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICBMb2cuZShUQUcsICJSZW1vdGVFeGNlcHRpb24gY2FsbGluZyByZXBvcnRMb2NhdGlvbiIpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHVibGljIGJvb2xlYW4gc2VuZEV4dHJhQ29tbWFuZChTdHJpbmcgY29tbWFuZCwgQnVuZGxlIGV4dHJhcykgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgYWRkTGlzdGVuZXIoaW50IHVpZCkgewotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHJlbW92ZUxpc3RlbmVyKGludCB1aWQpIHsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9tZWRpYS9qYXZhL2FuZHJvaWQvbWVkaWEvQXVkaW9FZmZlY3QuamF2YSBiL21lZGlhL2phdmEvYW5kcm9pZC9tZWRpYS9BdWRpb0VmZmVjdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1M2NjMjIKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9qYXZhL2FuZHJvaWQvbWVkaWEvQXVkaW9FZmZlY3QuamF2YQpAQCAtMCwwICsxLDEwNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGFuZHJvaWQubWVkaWE7CisKK2ltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOworaW1wb3J0IGphdmEubGFuZy5yZWYuV2Vha1JlZmVyZW5jZTsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGFuZHJvaWQub3MuSGFuZGxlcjsKK2ltcG9ydCBhbmRyb2lkLm9zLkxvb3BlcjsKK2ltcG9ydCBhbmRyb2lkLm9zLk1lc3NhZ2U7CitpbXBvcnQgamF2YS5uaW8uQnl0ZU9yZGVyOworaW1wb3J0IGphdmEubmlvLkJ5dGVCdWZmZXI7CitpbXBvcnQgamF2YS51dGlsLlVVSUQ7CisKKy8qKgorICogQXVkaW9FZmZlY3QgaXMgdGhlIGJhc2UgY2xhc3MgZm9yIGltcGxlbWVudGluZyBhdWRpbyBlZmZlY3QgY29udHJvbCBpbiBKYXZhCisgKiBhcHBsaWNhdGlvbnMuCisgKiA8cD5DcmVhdGluZyBhbiBBdWRpb0VmZmVjdCBvYmplY3Qgd2lsbCBjcmVhdGUgdGhlIGVmZmVjdCBlbmdpbmUgaW4KKyAqIGF1ZGlvIGZyYW1ld29yayBpZiBubyBpbnN0YW5jZSBvZiB0aGUgc2FtZSBlZmZlY3QgdHlwZSBleGlzdHMgaW4gdGhlCisgKiBzcGVjaWZpZWQgYXVkaW8gc2Vzc2lvbi4gSWYgb25lIGV4aXN0cywgdGhpcyBpbnN0YW5jZSB3aWxsIGJlIHVzZWQuCisgKiA8cD5UaGUgYXBwbGljYXRpb24gY3JlYXRpbmcgdGhlIEF1ZGlvRWZmZWN0IG9iamVjdCAob3IgYSBkZXJpdmVkIGNsYXNzKSB3aWxsIGVpdGhlcgorICogcmVjZWl2ZSBjb250cm9sIG9mIHRoZSBlZmZlY3QgZW5naW5lIG9yIG5vdCBkZXBlbmRpbmcgb24gdGhlIHByaW9yaXR5CisgKiBwYXJhbWV0ZXIuIElmIHByaW9yaXR5IGlzIGhpZ2hlciB0aGFuIHRoZSBwcmlvcml0eSB1c2VkIGJ5IHRoZSBjdXJyZW50IGVmZmVjdAorICogZW5naW5lIG93bmVyLCB0aGUgY29udHJvbCB3aWxsIGJlIHRyYW5zZmVyZWQgdG8gdGhlIG5ldyBvYmplY3QuIE90aGVyd2lzZQorICogY29udHJvbCB3aWxsIHJlbWFpbiB3aXRoIHRoZSBwcmV2aW91cyBvYmplY3QuIEluIHRoaXMgY2FzZSwgdGhlIG5ldworICogYXBwbGljYXRpb24gd2lsbCBiZSBub3RpZmllZCBvZiBjaGFuZ2VzIGluIGVmZmVjdCBlbmdpbmUgc3RhdGUgb3IgY29udHJvbAorICogb3duZXJzaGlwIGJ5IHRoZSBhcHByb3BpYXRlIGxpc3RlbmVyLgorICogPHA+SWYgdGhlIGVmZmVjdCBpcyB0byBiZSBhcHBsaWVkIHRvIGEgc3BlY2lmaWMgQXVkaW9UcmFjayBvciBNZWRpYVBsYXllciBpbnN0YW5jZSwKKyAqIHRoZSBhcHBsaWNhdGlvbiBtdXN0IHNwZWNpZnkgdGhlIGF1ZGlvIHNlc3Npb24gSUQgb2YgdGhhdCBpbnN0YW5jZSB3aGVuIGNhbGxpbmcgdGhlIEF1ZGlvRWZmZWN0CisgKiBjb25zdHJ1Y3Rvci4KKyAqCisgKiB7IEBoaWRlIFBlbmRpbmcgQVBJIGNvdW5jaWwgcmV2aWV3IH0KKyAqLworcHVibGljIGNsYXNzIEF1ZGlvRWZmZWN0IHsKKyAgICBzdGF0aWMgeworICAgICAgICBTeXN0ZW0ubG9hZExpYnJhcnkoImF1ZGlvZWZmZWN0X2puaSIpOworICAgICAgICBuYXRpdmVfaW5pdCgpOworICAgIH0KKworICAgIHByaXZhdGUgZmluYWwgc3RhdGljIFN0cmluZyBUQUcgPSAiQXVkaW9FZmZlY3QtSkFWQSI7CisKKyAgICAvKioKKyAgICAgKiBUaGUgZm9sbG93aW5nIFVVSURzIGRlZmluZSBlZmZlY3QgdHlwZXMgY29ycmVzcG9uZGluZyB0byBzdGFuZGFyZCBhdWRpbworICAgICAqIGVmZmVjdHMgd2hvc2UgaW1wbGVtZW50YXRpb24gYW5kIGludGVyZmFjZSBjb25mb3JtIHRvIHRoZSBPcGVuU0wgRVMKKyAgICAgKiBzcGVjaWZpY2F0aW9uLiBUaGUgZGVmaW5pdGlvbnMgbWF0Y2ggdGhlIGNvcnJlc3BvbmRpbmcgaW50ZXJmYWNlIElEcyBpbgorICAgICAqIE9wZW5TTEVTX0lJRC5oCisgICAgICovCisKKyAgICAvKioKKyAgICAgKiBVVUlEIGZvciBlbnZpcm9ubWVudGFsIHJldmVyYiBlZmZlY3QKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFVVSUQgRUZGRUNUX1RZUEVfRU5WX1JFVkVSQiA9IFVVSUQKKyAgICAgICAgICAgIC5mcm9tU3RyaW5nKCJjMmU1ZDVmMC05NGJkLTQ3NjMtOWNhYy00ZTIzNGQwNjgzOWUiKTsKKyAgICAvKioKKyAgICAgKiBVVUlEIGZvciBwcmVzZXQgcmV2ZXJiIGVmZmVjdAorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVVVJRCBFRkZFQ1RfVFlQRV9QUkVTRVRfUkVWRVJCID0gVVVJRAorICAgICAgICAgICAgLmZyb21TdHJpbmcoIjQ3MzgyZDYwLWRkZDgtMTFkYi1iZjNhLTAwMDJhNWQ1YzUxYiIpOworICAgIC8qKgorICAgICAqIFVVSUQgZm9yIGVxdWFsaXplciBlZmZlY3QKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFVVSUQgRUZGRUNUX1RZUEVfRVFVQUxJWkVSID0gVVVJRAorICAgICAgICAgICAgLmZyb21TdHJpbmcoIjBiZWQ0MzAwLWRkZDYtMTFkYi04ZjM0LTAwMDJhNWQ1YzUxYiIpOworICAgIC8qKgorICAgICAqIFVVSUQgZm9yIGJhc3MgYm9vc3QgZWZmZWN0CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBVVUlEIEVGRkVDVF9UWVBFX0JBU1NfQk9PU1QgPSBVVUlECisgICAgICAgICAgICAuZnJvbVN0cmluZygiMDYzNGYyMjAtZGRkNC0xMWRiLWEwZmMtMDAwMmE1ZDVjNTFiIik7CisgICAgLyoqCisgICAgICogVVVJRCBmb3IgdmlydHVhbGl6ZXIgZWZmZWN0CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBVVUlEIEVGRkVDVF9UWVBFX1ZJUlRVQUxJWkVSID0gVVVJRAorICAgICAgICAgICAgLmZyb21TdHJpbmcoIjM3Y2MyYzAwLWRkZGQtMTFkYi04NTc3LTAwMDJhNWQ1YzUxYiIpOworCisgICAgLyoqCisgICAgICogTnVsbCBlZmZlY3QgVVVJRC4gVXNlZCB3aGVuIHRoZSBVVUlEIGZvciBlZmZlY3QgdHlwZSBvZgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgVVVJRCBFRkZFQ1RfVFlQRV9OVUxMID0gVVVJRAorICAgICAgICAgICAgLmZyb21TdHJpbmcoImVjNzE3OGVjLWU1ZTEtNDQzMi1hM2Y0LTQ2NTdlNjc5NTIxMCIpOworCisgICAgLyoqCisgICAgICogU3RhdGUgb2YgYW4gQXVkaW9FZmZlY3Qgb2JqZWN0IHRoYXQgd2FzIG5vdCBzdWNjZXNzZnVsbHkgaW5pdGlhbGl6ZWQgdXBvbgorICAgICAqIGNyZWF0aW9uCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU1RBVEVfVU5JTklUSUFMSVpFRCA9IDA7CisgICAgLyoqCisgICAgICogU3RhdGUgb2YgYW4gQXVkaW9FZmZlY3Qgb2JqZWN0IHRoYXQgaXMgcmVhZHkgdG8gYmUgdXNlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTVEFURV9JTklUSUFMSVpFRCA9IDE7CisKKyAgICAvLyB0byBrZWVwIGluIHN5bmMgd2l0aAorICAgIC8vIGZyYW1ld29ya3MvYmFzZS9tZWRpYS9qbmkvYXVkaW9lZmZlY3QvYW5kcm9pZF9tZWRpYV9BdWRpb0VmZmVjdC5jcHAKKyAgICAvKioKKyAgICAgKiBFdmVudCBpZCBmb3IgZW5naW5lIHN0YXRlIGNoYW5nZSBub3RpZmljYXRpb24uCisgICAgICovCisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgTkFUSVZFX0VWRU5UX0VOQUJMRURfU1RBVFVTID0gMDsKKyAgICAvKioKKyAgICAgKiBFdmVudCBpZCBmb3IgZW5naW5lIGNvbnRyb2wgb3duZXJzaGlwIGNoYW5nZSBub3RpZmljYXRpb24uCisgICAgICovCisgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgTkFUSVZFX0VWRU5UX0NPTlRST0xfU1RBVFVTID0gMTsKKyAgICAvKioKKyAgICAgKiBFdmVudCBpZCBmb3IgZW5naW5lIHBhcmFtZXRlciBjaGFuZ2Ugbm90aWZpY2F0aW9uLgorICAgICAqLworICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgaW50IE5BVElWRV9FVkVOVF9QQVJBTUVURVJfQ0hBTkdFRCA9IDI7CisKKyAgICAvKioKKyAgICAgKiBTdWNjZXNzZnVsIG9wZXJhdGlvbi4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTVUNDRVNTID0gMDsKKyAgICAvKioKKyAgICAgKiBVbnNwZWNpZmllZCBlcnJvci4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBFUlJPUiA9IC0xOworICAgIC8qKgorICAgICAqIEludGVybmFsIG9wcmVhdGlvbiBzdGF0dXMuIE5vdCByZXR1cm5lZCBieSBhbnkgbWV0aG9kLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEFMUkVBRFlfRVhJU1RTID0gLTI7CisgICAgLyoqCisgICAgICogT3BlcmF0aW9uIGZhaWxlZCBkdWUgdG8gYmFkIG9iamVjdCBpbml0aWFsaXphdGlvbi4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBFUlJPUl9OT19JTklUID0gLTM7CisgICAgLyoqCisgICAgICogT3BlcmF0aW9uIGZhaWxlZCBkdWUgdG8gYmFkIHBhcmFtZXRlciB2YWx1ZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBFUlJPUl9CQURfVkFMVUUgPSAtNDsKKyAgICAvKioKKyAgICAgKiBPcGVyYXRpb24gZmFpbGVkIGJlY2F1c2UgaXQgd2FzIHJlcXVlc3RlZCBpbiB3cm9uZyBzdGF0ZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBFUlJPUl9JTlZBTElEX09QRVJBVElPTiA9IC01OworICAgIC8qKgorICAgICAqIE9wZXJhdGlvbiBmYWlsZWQgZHVlIHRvIGxhY2sgb2YgbWVtb3J5LgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEVSUk9SX05PX01FTU9SWSA9IC02OworICAgIC8qKgorICAgICAqIE9wZXJhdGlvbiBmYWlsZWQgZHVlIHRvIGRlYWQgcmVtb3RlIG9iamVjdC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBFUlJPUl9ERUFEX09CSkVDVCA9IC03OworCisgICAgLyoqCisgICAgICogVGhlIGVmZmVjdCBkZXNjcmlwdG9yIGNvbnRhaW5zIG5lY2Vzc2FyeSBpbmZvcm1hdGlvbiB0byBmYWNpbGl0YXRlCisgICAgICogZWZmZWN0cyBlbnVtZXJhdGlvbjo8YnI+CisgICAgICogPHVsPgorICAgICAqICA8bGk+bVR5cGU6IFVVSUQgY29ycmVzcG9uZGluZyB0byB0aGUgT3BlblNMIEVTIGludGVyZmFjZSBpbXBsZW1lbnRlZCBieSB0aGlzIGVmZmVjdDwvbGk+CisgICAgICogIDxsaT5tVXVpZDogVVVJRCBmb3IgdGhpcyBwYXJ0aWN1bGFyIGltcGxlbWVudGF0aW9uPC9saT4KKyAgICAgKiAgPGxpPm1Db25uZWN0TW9kZToge0BsaW5rICNFRkZFQ1RfSU5TRVJUfSBvciB7QGxpbmsgI0VGRkVDVF9BVVhJTElBUll9PC9saT4KKyAgICAgKiAgPGxpPm1OYW1lOiBodW1hbiByZWFkYWJsZSBlZmZlY3QgbmFtZTwvbGk+CisgICAgICogIDxsaT5tSW1wbGVtZW50b3I6IGh1bWFuIHJlYWRhYmxlIGVmZmVjdCBpbXBsZW1lbnRvciBuYW1lPC9saT4KKyAgICAgKiA8L3VsPgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgY2xhc3MgRGVzY3JpcHRvciB7CisKKyAgICAgICAgcHVibGljIERlc2NyaXB0b3IoKSB7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgRGVzY3JpcHRvcihTdHJpbmcgdHlwZSwgU3RyaW5nIHV1aWQsIFN0cmluZyBjb25uZWN0TW9kZSwKKyAgICAgICAgICAgICAgICBTdHJpbmcgbmFtZSwgU3RyaW5nIGltcGxlbWVudG9yKSB7CisgICAgICAgICAgICBtVHlwZSA9IFVVSUQuZnJvbVN0cmluZyh0eXBlKTsKKyAgICAgICAgICAgIG1VdWlkID0gVVVJRC5mcm9tU3RyaW5nKHV1aWQpOworICAgICAgICAgICAgbUNvbm5lY3RNb2RlID0gY29ubmVjdE1vZGU7CisgICAgICAgICAgICBtTmFtZSA9IG5hbWU7CisgICAgICAgICAgICBtSW1wbGVtZW50b3IgPSBpbXBsZW1lbnRvcjsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBVVUlEIG1UeXBlOworICAgICAgICBwdWJsaWMgVVVJRCBtVXVpZDsKKyAgICAgICAgcHVibGljIFN0cmluZyBtQ29ubmVjdE1vZGU7CisgICAgICAgIHB1YmxpYyBTdHJpbmcgbU5hbWU7CisgICAgICAgIHB1YmxpYyBTdHJpbmcgbUltcGxlbWVudG9yOworICAgIH07CisKKyAgICAvKioKKyAgICAgKiBFZmZlY3QgY29ubmVjdGlvbiBtb2RlIGlzIGluc2VydC4gU3BlY2lmeWluZyBhbiBhdWRpbyBzZXNzaW9uIElEIHdoZW4gY3JlYXRpbmcgdGhlIGVmZmVjdAorICAgICAqIHdpbGwgaW5zZXJ0IHRoaXMgZWZmZWN0IGFmdGVyIGFsbCBwbGF5ZXJzIGluIHRoZSBzYW1lIGF1ZGlvIHNlc3Npb24uCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgRUZGRUNUX0lOU0VSVCA9ICJJbnNlcnQiOworICAgIC8qKgorICAgICAqIEVmZmVjdCBjb25uZWN0aW9uIG1vZGUgaXMgYXV4aWxpYXJ5LgorICAgICAqIDxwPkF1eGlsaWFyeSBlZmZlY3RzIG11c3QgYmUgY3JlYXRlZCBvbiBzZXNzaW9uIDAgKGdsb2JhbCBvdXRwdXQgbWl4KS4gSW4gb3JkZXIgZm9yIGEKKyAgICAgKiBNZWRpYVBsYXllciBvciBBdWRpb1RyYWNrIHRvIGJlIGZlZCBpbnRvIHRoaXMgZWZmZWN0LCB0aGV5IG11c3QgYmUgZXhwbGljaXRlbHkgYXR0YWNoZWQgdG8KKyAgICAgKiB0aGlzIGVmZmVjdCBhbmQgYSBzZW5kIGxldmVsIG11c3QgYmUgc3BlY2lmaWVkLgorICAgICAqIDxwPlVzZSB0aGUgZWZmZWN0IElEIHJldHVybmVkIGJ5IHtAbGluayAjZ2V0SWQoKX0gdG8gZGVzaWduYXRlIHRoaXMgcGFydGljdWxhciBlZmZlY3Qgd2hlbgorICAgICAqIGF0dGFjaGluZyBpdCB0byB0aGUgTWVkaWFQbGF5ZXIgb3IgQXVkaW9UcmFjay4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBFRkZFQ1RfQVVYSUxJQVJZID0gIkF1eGlsaWFyeSI7CisKKyAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIE1lbWJlciB2YXJpYWJsZXMKKyAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8qKgorICAgICAqIEluZGljYXRlcyB0aGUgc3RhdGUgb2YgdGhlIEF1ZGlvRWZmZWN0IGluc3RhbmNlCisgICAgICovCisgICAgcHJvdGVjdGVkIGludCBtU3RhdGUgPSBTVEFURV9VTklOSVRJQUxJWkVEOworICAgIC8qKgorICAgICAqIExvY2sgdG8gc3luY2hyb25pemUgYWNjZXNzIHRvIG1TdGF0ZQorICAgICAqLworICAgIHByb3RlY3RlZCBmaW5hbCBPYmplY3QgbVN0YXRlTG9jayA9IG5ldyBPYmplY3QoKTsKKyAgICAvKioKKyAgICAgKiBTeXN0ZW0gd2lkZSB1bmlxdWUgZWZmZWN0IElECisgICAgICovCisgICAgcHJvdGVjdGVkIGludCBtSWQ7CisKKyAgICAvLyBhY2Nlc3NlZCBieSBuYXRpdmUgbWV0aG9kcworICAgIHByaXZhdGUgaW50IG1OYXRpdmVBdWRpb0VmZmVjdDsKKyAgICBwcml2YXRlIGludCBtSm5pRGF0YTsKKworICAgIC8qKgorICAgICAqIEVmZmVjdCBkZXNjcmlwdG9yCisgICAgICovCisgICAgcHJpdmF0ZSBEZXNjcmlwdG9yIG1EZXNjcmlwdG9yOworCisgICAgLyoqCisgICAgICogTGlzdGVuZXIgZm9yIGVmZmVjdCBlbmdpbmUgc3RhdGUgY2hhbmdlIG5vdGlmaWNhdGlvbnMuCisgICAgICoKKyAgICAgKiBAc2VlICNzZXRFbmFibGVTdGF0dXNMaXN0ZW5lcihPbkVuYWJsZVN0YXR1c0NoYW5nZUxpc3RlbmVyKQorICAgICAqLworICAgIHByb3RlY3RlZCBPbkVuYWJsZVN0YXR1c0NoYW5nZUxpc3RlbmVyIG1FbmFibGVTdGF0dXNDaGFuZ2VMaXN0ZW5lciA9IG51bGw7CisgICAgLyoqCisgICAgICogTGlzdGVuZXIgZm9yIGVmZmVjdCBlbmdpbmUgY29udHJvbCBvd25lcnNoaXAgY2hhbmdlIG5vdGlmaWNhdGlvbnMuCisgICAgICoKKyAgICAgKiBAc2VlICNzZXRDb250cm9sU3RhdHVzTGlzdGVuZXIoT25Db250cm9sU3RhdHVzQ2hhbmdlTGlzdGVuZXIpCisgICAgICovCisgICAgcHJvdGVjdGVkIE9uQ29udHJvbFN0YXR1c0NoYW5nZUxpc3RlbmVyIG1Db250cm9sQ2hhbmdlU3RhdHVzTGlzdGVuZXIgPSBudWxsOworICAgIC8qKgorICAgICAqIExpc3RlbmVyIGZvciBlZmZlY3QgZW5naW5lIGNvbnRyb2wgb3duZXJzaGlwIGNoYW5nZSBub3RpZmljYXRpb25zLgorICAgICAqCisgICAgICogQHNlZSAjc2V0UGFyYW1ldGVyTGlzdGVuZXIoT25QYXJhbWV0ZXJDaGFuZ2VMaXN0ZW5lcikKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgT25QYXJhbWV0ZXJDaGFuZ2VMaXN0ZW5lciBtUGFyYW1ldGVyQ2hhbmdlTGlzdGVuZXIgPSBudWxsOworICAgIC8qKgorICAgICAqIExvY2sgdG8gcHJvdGVjdCBsaXN0ZW5lcnMgdXBkYXRlcyBhZ2FpbnN0IGV2ZW50IG5vdGlmaWNhdGlvbnMKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgZmluYWwgT2JqZWN0IG1MaXN0ZW5lckxvY2sgPSBuZXcgT2JqZWN0KCk7CisgICAgLyoqCisgICAgICogSGFuZGxlciBmb3IgZXZlbnRzIGNvbWluZyBmcm9tIHRoZSBuYXRpdmUgY29kZQorICAgICAqLworICAgIHByb3RlY3RlZCBOYXRpdmVFdmVudEhhbmRsZXIgbU5hdGl2ZUV2ZW50SGFuZGxlciA9IG51bGw7CisKKyAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIENvbnN0cnVjdG9yLCBGaW5hbGl6ZQorICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLyoqCisgICAgICogQ2xhc3MgY29uc3RydWN0b3IuCisgICAgICoKKyAgICAgKiBAcGFyYW0gdHlwZSB0eXBlIG9mIGVmZmVjdCBlbmdpbmUgY3JlYXRlZC4gU2VlIHtAbGluayAjRUZGRUNUX1RZUEVfRU5WX1JFVkVSQn0sCisgICAgICogICAgICAgICAgICB7QGxpbmsgI0VGRkVDVF9UWVBFX0VRVUFMSVpFUn0gLi4uIFR5cGVzIGNvcnJlc3BvbmRpbmcgdG8KKyAgICAgKiAgICAgICAgICAgIGJ1aWx0LWluIGVmZmVjdHMgYXJlIGRlZmluZWQgYnkgQXVkaW9FZmZlY3QgY2xhc3MuIE90aGVyIHR5cGVzCisgICAgICogICAgICAgICAgICBjYW4gYmUgc3BlY2lmaWVkIHByb3ZpZGVkIHRoZXkgY29ycmVzcG9uZCBhbiBleGlzdGluZyBPcGVuU0wKKyAgICAgKiAgICAgICAgICAgIEVTIGludGVyZmFjZSBJRCBhbmQgdGhlIGNvcnJlc3BvbnNpbmcgZWZmZWN0IGlzIGF2YWlsYWJsZSBvbgorICAgICAqICAgICAgICAgICAgdGhlIHBsYXRmb3JtLiBJZiBhbiB1bnNwZWNpZmllZCBlZmZlY3QgdHlwZSBpcyByZXF1ZXN0ZWQsIHRoZQorICAgICAqICAgICAgICAgICAgY29uc3RydWN0b3Igd2l0aCB0aHJvdyB0aGUgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uLiBUaGlzCisgICAgICogICAgICAgICAgICBwYXJhbWV0ZXIgY2FuIGJlIHNldCB0byB7QGxpbmsgI0VGRkVDVF9UWVBFX05VTEx9IGluIHdoaWNoCisgICAgICogICAgICAgICAgICBjYXNlIG9ubHkgdGhlIHV1aWQgd2lsbCBiZSB1c2VkIHRvIHNlbGVjdCB0aGUgZWZmZWN0LgorICAgICAqIEBwYXJhbSB1dWlkIHVuaXF1ZSBpZGVudGlmaWVyIG9mIGEgcGFydGljdWxhciBlZmZlY3QgaW1wbGVtZW50YXRpb24uCisgICAgICogICAgICAgICAgICBNdXN0IGJlIHNwZWNpZmllZCBpZiB0aGUgY2FsbGVyIHdhbnRzIHRvIHVzZSBhIHBhcnRpY3VsYXIKKyAgICAgKiAgICAgICAgICAgIGltcGxlbWVudGF0aW9uIG9mIGFuIGVmZmVjdCB0eXBlLiBUaGlzIHBhcmFtZXRlciBjYW4gYmUgc2V0IHRvCisgICAgICogICAgICAgICAgICB7QGxpbmsgI0VGRkVDVF9UWVBFX05VTEx9IGluIHdoaWNoIGNhc2Ugb25seSB0aGUgdHlwZSB3aWxsCisgICAgICogICAgICAgICAgICBiZSB1c2VkIHRvIHNlbGVjdCB0aGUgZWZmZWN0LgorICAgICAqIEBwYXJhbSBwcmlvcml0eSB0aGUgcHJpb3JpdHkgbGV2ZWwgcmVxdWVzdGVkIGJ5IHRoZSBhcHBsaWNhdGlvbiBmb3IKKyAgICAgKiAgICAgICAgICAgIGNvbnRyb2xsaW5nIHRoZSBlZmZlY3QgZW5naW5lLiBBcyB0aGUgc2FtZSBlZmZlY3QgZW5naW5lIGNhbgorICAgICAqICAgICAgICAgICAgYmUgc2hhcmVkIGJ5IHNldmVyYWwgYXBwbGljYXRpb25zLCB0aGlzIHBhcmFtZXRlciBpbmRpY2F0ZXMKKyAgICAgKiAgICAgICAgICAgIGhvdyBtdWNoIHRoZSByZXF1ZXN0aW5nIGFwcGxpY2F0aW9uIG5lZWRzIGNvbnRyb2wgb2YgZWZmZWN0CisgICAgICogICAgICAgICAgICBwYXJhbWV0ZXJzLiBUaGUgbm9ybWFsIHByaW9yaXR5IGlzIDAsIGFib3ZlIG5vcm1hbCBpcyBhCisgICAgICogICAgICAgICAgICBwb3NpdGl2ZSBudW1iZXIsIGJlbG93IG5vcm1hbCBhIG5lZ2F0aXZlIG51bWJlci4KKyAgICAgKiBAcGFyYW0gYXVkaW9TZXNzaW9uIFN5c3RlbSB3aWRlIHVuaXF1ZSBhdWRpbyBzZXNzaW9uIGlkZW50aWZpZXIuIElmIGF1ZGlvU2Vzc2lvbgorICAgICAqICAgICAgICAgICAgaXMgbm90IDAsIHRoZSBlZmZlY3Qgd2lsbCBiZSBhdHRhY2hlZCB0byB0aGUgTWVkaWFQbGF5ZXIgb3IKKyAgICAgKiAgICAgICAgICAgIEF1ZGlvVHJhY2sgaW4gdGhlIHNhbWUgYXVkaW8gc2Vzc2lvbi4gT3RoZXJ3aXNlLCB0aGUgZWZmZWN0CisgICAgICogICAgICAgICAgICB3aWxsIGFwcGx5IHRvIHRoZSBvdXRwdXQgbWl4LgorICAgICAqCisgICAgICogQHRocm93cyBqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uCisgICAgICogQHRocm93cyBqYXZhLmxhbmcuVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIGphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uCisgICAgICovCisKKyAgICBwdWJsaWMgQXVkaW9FZmZlY3QoVVVJRCB0eXBlLCBVVUlEIHV1aWQsIGludCBwcmlvcml0eSwgaW50IGF1ZGlvU2Vzc2lvbikKKyAgICAgICAgICAgIHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24sIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uLAorICAgICAgICAgICAgUnVudGltZUV4Y2VwdGlvbiB7CisgICAgICAgIGludFtdIGlkID0gbmV3IGludFsxXTsKKyAgICAgICAgRGVzY3JpcHRvcltdIGRlc2MgPSBuZXcgRGVzY3JpcHRvclsxXTsKKyAgICAgICAgLy8gbmF0aXZlIGluaXRpYWxpemF0aW9uCisgICAgICAgIGludCBpbml0UmVzdWx0ID0gbmF0aXZlX3NldHVwKG5ldyBXZWFrUmVmZXJlbmNlPEF1ZGlvRWZmZWN0Pih0aGlzKSwKKyAgICAgICAgICAgICAgICB0eXBlLnRvU3RyaW5nKCksIHV1aWQudG9TdHJpbmcoKSwgcHJpb3JpdHksIGF1ZGlvU2Vzc2lvbiwgaWQsCisgICAgICAgICAgICAgICAgZGVzYyk7CisgICAgICAgIGlmIChpbml0UmVzdWx0ICE9IFNVQ0NFU1MgJiYgaW5pdFJlc3VsdCAhPSBBTFJFQURZX0VYSVNUUykgeworICAgICAgICAgICAgTG9nLmUoVEFHLCAiRXJyb3IgY29kZSAiICsgaW5pdFJlc3VsdAorICAgICAgICAgICAgICAgICAgICArICIgd2hlbiBpbml0aWFsaXppbmcgQXVkaW9FZmZlY3QuIik7CisgICAgICAgICAgICBzd2l0Y2ggKGluaXRSZXN1bHQpIHsKKyAgICAgICAgICAgIGNhc2UgRVJST1JfQkFEX1ZBTFVFOgorICAgICAgICAgICAgICAgIHRocm93IChuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJFZmZlY3QgdHlwZTogIiArIHR5cGUKKyAgICAgICAgICAgICAgICAgICAgICAgICsgIiBub3Qgc3VwcG9ydGVkLiIpKTsKKyAgICAgICAgICAgIGNhc2UgRVJST1JfSU5WQUxJRF9PUEVSQVRJT046CisgICAgICAgICAgICAgICAgdGhyb3cgKG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgICAgICJFZmZlY3QgbGlicmFyeSBub3QgbG9hZGVkIikpOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0aHJvdyAobmV3IFJ1bnRpbWVFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IGluaXRpYWxpemUgZWZmZWN0IGVuZ2luZSBmb3IgdHlwZTogIiArIHR5cGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiRXJyb3I6ICIgKyBpbml0UmVzdWx0KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgbUlkID0gaWRbMF07CisgICAgICAgIG1EZXNjcmlwdG9yID0gZGVzY1swXTsKKyAgICAgICAgc3luY2hyb25pemVkIChtU3RhdGVMb2NrKSB7CisgICAgICAgICAgICBtU3RhdGUgPSBTVEFURV9JTklUSUFMSVpFRDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFJlbGVhc2VzIHRoZSBuYXRpdmUgQXVkaW9FZmZlY3QgcmVzb3VyY2VzLiBJdCBpcyBhIGdvb2QgcHJhY3RpY2UgdG8KKyAgICAgKiByZWxlYXNlIHRoZSBlZmZlY3QgZW5naW5lIHdoZW4gbm90IGluIHVzZSBhcyBjb250cm9sIGNhbiBiZSByZXR1cm5lZCB0bworICAgICAqIG90aGVyIGFwcGxpY2F0aW9ucyBvciB0aGUgbmF0aXZlIHJlc291cmNlcyByZWxlYXNlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCByZWxlYXNlKCkgeworICAgICAgICBzeW5jaHJvbml6ZWQgKG1TdGF0ZUxvY2spIHsKKyAgICAgICAgICAgIG5hdGl2ZV9yZWxlYXNlKCk7CisgICAgICAgICAgICBtU3RhdGUgPSBTVEFURV9VTklOSVRJQUxJWkVEOworICAgICAgICB9CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgZmluYWxpemUoKSB7CisgICAgICAgIG5hdGl2ZV9maW5hbGl6ZSgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldCB0aGUgZWZmZWN0IGRlc2NyaXB0b3IuCisgICAgICoKKyAgICAgLy9UT0RPIHdoZW4gQXVkaW9FZmZlY3QgY2xhc3MgaXMgdW5oaWRkZW4gQCBzZWUgYW5kcm9pZC5tZWRpYS5BdWRpb0VmZmVjdC5EZXNjcmlwdG9yCisgICAgICogQHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgRGVzY3JpcHRvciBnZXREZXNjcmlwdG9yKCkgdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiB7CisgICAgICAgIGNoZWNrU3RhdGUoImdldERlc2NyaXB0b3IoKSIpOworICAgICAgICByZXR1cm4gbURlc2NyaXB0b3I7CisgICAgfQorCisgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBFZmZlY3RzIEVudW1lcmF0aW9uCisgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIFF1ZXJ5IGFsbCBlZmZlY3RzIGF2YWlsYWJsZSBvbiB0aGUgcGxhdGZvcm0uIFJldHVybnMgYW4gYXJyYXkgb2YKKyAgICAgLy9UT0RPIHdoZW4gQXVkaW9FZmZlY3QgY2xhc3MgaXMgdW5oaWRkZW46IHtAIGxpbmsgYW5kcm9pZC5tZWRpYS5BdWRpb0VmZmVjdC5EZXNjcmlwdG9yfSBvYmplY3RzCisgICAgICoKKyAgICAgKiBAdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbgorICAgICAqLworCisgICAgc3RhdGljIHB1YmxpYyBEZXNjcmlwdG9yW10gcXVlcnlFZmZlY3RzKCkgeworICAgICAgICByZXR1cm4gKERlc2NyaXB0b3JbXSkgbmF0aXZlX3F1ZXJ5X2VmZmVjdHMoKTsKKyAgICB9CisKKyAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIENvbnRyb2wgbWV0aG9kcworICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAgICAvKioKKyAgICAgKiBFbmFibGUgb3IgZGlzYWJsZSBlZmZlY3QgZW5naW5lLgorICAgICAqCisgICAgICogQHBhcmFtIGVuYWJsZWQgdGhlIHJlcXVlc3RlZCBlbmFibGUgc3RhdGUKKyAgICAgKiBAcmV0dXJuIHtAbGluayAjU1VDQ0VTU30gaW4gY2FzZSBvZiBzdWNjZXNzLCB7QGxpbmsgI0VSUk9SX0lOVkFMSURfT1BFUkFUSU9OfQorICAgICAqICAgICAgICAgb3Ige0BsaW5rICNFUlJPUl9ERUFEX09CSkVDVH0gaW4gY2FzZSBvZiBmYWlsdXJlLgorICAgICAqIEB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIGludCBzZXRFbmFibGVkKGJvb2xlYW4gZW5hYmxlZCkgdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiB7CisgICAgICAgIGNoZWNrU3RhdGUoInNldEVuYWJsZWQoKSIpOworICAgICAgICByZXR1cm4gbmF0aXZlX3NldEVuYWJsZWQoZW5hYmxlZCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0IGVmZmVjdCBwYXJhbWV0ZXIuIFRoZSBzZXRQYXJhbWV0ZXIgbWV0aG9kIGlzIHByb3ZpZGVkIGluIHNldmVyYWwKKyAgICAgKiBmb3JtcyBhZGRyZXNzaW5nIG1vc3QgY29tbW9uIHBhcmFtZXRlciBmb3JtYXRzLiBUaGlzIGZvcm0gaXMgdGhlIG1vc3QKKyAgICAgKiBnZW5lcmljIG9uZSB3aGVyZSB0aGUgcGFyYW1ldGVyIGFuZCBpdHMgdmFsdWUgYXJlIGJvdGggc3BlY2lmaWVkIGFzIGFuCisgICAgICogYXJyYXkgb2YgYnl0ZXMuIFRoZSBwYXJhbWV0ZXIgYW5kIHZhbHVlIHR5cGUgYW5kIGxlbmd0aCBhcmUgdGhlcmVmb3JlCisgICAgICogdG90YWxseSBmcmVlLiBGb3Igc3RhbmRhcmQgZWZmZWN0IGRlZmluZWQgYnkgT3BlblNMIEVTLCB0aGUgcGFyYW1ldGVyCisgICAgICogZm9ybWF0IGFuZCB2YWx1ZXMgbXVzdCBtYXRjaCB0aGUgZGVmaW5pdGlvbnMgaW4gdGhlIGNvcnJlc3BvbmRpbmcgT3BlblNMCisgICAgICogRVMgaW50ZXJmYWNlLgorICAgICAqCisgICAgICogQHBhcmFtIHBhcmFtIHRoZSBpZGVudGlmaWVyIG9mIHRoZSBwYXJhbWV0ZXIgdG8gc2V0CisgICAgICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgdmFsdWUgZm9yIHRoZSBzcGVjaWZpZWQgcGFyYW1ldGVyCisgICAgICogQHJldHVybiB7QGxpbmsgI1NVQ0NFU1N9IGluIGNhc2Ugb2Ygc3VjY2Vzcywge0BsaW5rICNFUlJPUl9CQURfVkFMVUV9LAorICAgICAqICAgICAgICAge0BsaW5rICNFUlJPUl9OT19NRU1PUll9LCB7QGxpbmsgI0VSUk9SX0lOVkFMSURfT1BFUkFUSU9OfSBvcgorICAgICAqICAgICAgICAge0BsaW5rICNFUlJPUl9ERUFEX09CSkVDVH0gaW4gY2FzZSBvZiBmYWlsdXJlCisgICAgICogQHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IHNldFBhcmFtZXRlcihieXRlW10gcGFyYW0sIGJ5dGVbXSB2YWx1ZSkKKyAgICAgICAgICAgIHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24geworICAgICAgICBjaGVja1N0YXRlKCJzZXRQYXJhbWV0ZXIoKSIpOworICAgICAgICByZXR1cm4gbmF0aXZlX3NldFBhcmFtZXRlcihwYXJhbS5sZW5ndGgsIHBhcmFtLCB2YWx1ZS5sZW5ndGgsIHZhbHVlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgZWZmZWN0IHBhcmFtZXRlci4gVGhlIHBhcmFtZXRlciBhbmQgaXRzIHZhbHVlIGFyZSBpbnRlZ2Vycy4KKyAgICAgKgorICAgICAqIEBzZWUgI3NldFBhcmFtZXRlcihieXRlW10sIGJ5dGVbXSkKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IHNldFBhcmFtZXRlcihpbnQgcGFyYW0sIGludCB2YWx1ZSkgdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiB7CisgICAgICAgIGJ5dGVbXSBwID0gaW50VG9CeXRlQXJyYXkocGFyYW0pOworICAgICAgICBieXRlW10gdiA9IGludFRvQnl0ZUFycmF5KHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHNldFBhcmFtZXRlcihwLCB2KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgZWZmZWN0IHBhcmFtZXRlci4gVGhlIHBhcmFtZXRlciBpcyBhbiBpbnRlZ2VyIGFuZCB0aGUgdmFsdWUgaXMgYQorICAgICAqIHNob3J0IGludGVnZXIuCisgICAgICoKKyAgICAgKiBAc2VlICNzZXRQYXJhbWV0ZXIoYnl0ZVtdLCBieXRlW10pCisgICAgICovCisgICAgcHVibGljIGludCBzZXRQYXJhbWV0ZXIoaW50IHBhcmFtLCBzaG9ydCB2YWx1ZSkKKyAgICAgICAgICAgIHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24geworICAgICAgICBieXRlW10gcCA9IGludFRvQnl0ZUFycmF5KHBhcmFtKTsKKyAgICAgICAgYnl0ZVtdIHYgPSBzaG9ydFRvQnl0ZUFycmF5KHZhbHVlKTsKKyAgICAgICAgcmV0dXJuIHNldFBhcmFtZXRlcihwLCB2KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgZWZmZWN0IHBhcmFtZXRlci4gVGhlIHBhcmFtZXRlciBpcyBhbiBpbnRlZ2VyIGFuZCB0aGUgdmFsdWUgaXMgYW4KKyAgICAgKiBhcnJheSBvZiBieXRlcy4KKyAgICAgKgorICAgICAqIEBzZWUgI3NldFBhcmFtZXRlcihieXRlW10sIGJ5dGVbXSkKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IHNldFBhcmFtZXRlcihpbnQgcGFyYW0sIGJ5dGVbXSB2YWx1ZSkKKyAgICAgICAgICAgIHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24geworICAgICAgICBieXRlW10gcCA9IGludFRvQnl0ZUFycmF5KHBhcmFtKTsKKyAgICAgICAgcmV0dXJuIHNldFBhcmFtZXRlcihwLCB2YWx1ZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0IGVmZmVjdCBwYXJhbWV0ZXIuIFRoZSBwYXJhbWV0ZXIgaXMgYW4gYXJyYXkgb2YgMSBvciAyIGludGVnZXJzIGFuZAorICAgICAqIHRoZSB2YWx1ZSBpcyBhbHNvIGFuIGFycmF5IG9mIDEgb3IgMiBpbnRlZ2VycworICAgICAqCisgICAgICogQHNlZSAjc2V0UGFyYW1ldGVyKGJ5dGVbXSwgYnl0ZVtdKQorICAgICAqLworICAgIHB1YmxpYyBpbnQgc2V0UGFyYW1ldGVyKGludFtdIHBhcmFtLCBpbnRbXSB2YWx1ZSkKKyAgICAgICAgICAgIHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24geworICAgICAgICBpZiAocGFyYW0ubGVuZ3RoID4gMiB8fCB2YWx1ZS5sZW5ndGggPiAyKSB7CisgICAgICAgICAgICByZXR1cm4gRVJST1JfQkFEX1ZBTFVFOworICAgICAgICB9CisgICAgICAgIGJ5dGVbXSBwID0gaW50VG9CeXRlQXJyYXkocGFyYW1bMF0pOworICAgICAgICBpZiAocGFyYW0ubGVuZ3RoID4gMSkgeworICAgICAgICAgICAgYnl0ZVtdIHAyID0gaW50VG9CeXRlQXJyYXkocGFyYW1bMV0pOworICAgICAgICAgICAgcCA9IGNvbmNhdEFycmF5cyhwLCBwMik7CisgICAgICAgIH0KKyAgICAgICAgYnl0ZVtdIHYgPSBpbnRUb0J5dGVBcnJheSh2YWx1ZVswXSk7CisgICAgICAgIGlmICh2YWx1ZS5sZW5ndGggPiAxKSB7CisgICAgICAgICAgICBieXRlW10gdjIgPSBpbnRUb0J5dGVBcnJheSh2YWx1ZVsxXSk7CisgICAgICAgICAgICB2ID0gY29uY2F0QXJyYXlzKHYsIHYyKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc2V0UGFyYW1ldGVyKHAsIHYpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCBlZmZlY3QgcGFyYW1ldGVyLiBUaGUgcGFyYW1ldGVyIGlzIGFuIGFycmF5IG9mIDEgb3IgMiBpbnRlZ2VycyBhbmQKKyAgICAgKiB0aGUgdmFsdWUgaXMgYW4gYXJyYXkgb2YgMSBvciAyIHNob3J0IGludGVnZXJzCisgICAgICoKKyAgICAgKiBAc2VlICNzZXRQYXJhbWV0ZXIoYnl0ZVtdLCBieXRlW10pCisgICAgICovCisgICAgcHVibGljIGludCBzZXRQYXJhbWV0ZXIoaW50W10gcGFyYW0sIHNob3J0W10gdmFsdWUpCisgICAgICAgICAgICB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uIHsKKyAgICAgICAgaWYgKHBhcmFtLmxlbmd0aCA+IDIgfHwgdmFsdWUubGVuZ3RoID4gMikgeworICAgICAgICAgICAgcmV0dXJuIEVSUk9SX0JBRF9WQUxVRTsKKyAgICAgICAgfQorICAgICAgICBieXRlW10gcCA9IGludFRvQnl0ZUFycmF5KHBhcmFtWzBdKTsKKyAgICAgICAgaWYgKHBhcmFtLmxlbmd0aCA+IDEpIHsKKyAgICAgICAgICAgIGJ5dGVbXSBwMiA9IGludFRvQnl0ZUFycmF5KHBhcmFtWzFdKTsKKyAgICAgICAgICAgIHAgPSBjb25jYXRBcnJheXMocCwgcDIpOworICAgICAgICB9CisKKyAgICAgICAgYnl0ZVtdIHYgPSBzaG9ydFRvQnl0ZUFycmF5KHZhbHVlWzBdKTsKKyAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA+IDEpIHsKKyAgICAgICAgICAgIGJ5dGVbXSB2MiA9IHNob3J0VG9CeXRlQXJyYXkodmFsdWVbMV0pOworICAgICAgICAgICAgdiA9IGNvbmNhdEFycmF5cyh2LCB2Mik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHNldFBhcmFtZXRlcihwLCB2KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXQgZWZmZWN0IHBhcmFtZXRlci4gVGhlIHBhcmFtZXRlciBpcyBhbiBhcnJheSBvZiAxIG9yIDIgaW50ZWdlcnMgYW5kCisgICAgICogdGhlIHZhbHVlIGlzIGFuIGFycmF5IG9mIGJ5dGVzCisgICAgICoKKyAgICAgKiBAc2VlICNzZXRQYXJhbWV0ZXIoYnl0ZVtdLCBieXRlW10pCisgICAgICovCisgICAgcHVibGljIGludCBzZXRQYXJhbWV0ZXIoaW50W10gcGFyYW0sIGJ5dGVbXSB2YWx1ZSkKKyAgICAgICAgICAgIHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24geworICAgICAgICBpZiAocGFyYW0ubGVuZ3RoID4gMikgeworICAgICAgICAgICAgcmV0dXJuIEVSUk9SX0JBRF9WQUxVRTsKKyAgICAgICAgfQorICAgICAgICBieXRlW10gcCA9IGludFRvQnl0ZUFycmF5KHBhcmFtWzBdKTsKKyAgICAgICAgaWYgKHBhcmFtLmxlbmd0aCA+IDEpIHsKKyAgICAgICAgICAgIGJ5dGVbXSBwMiA9IGludFRvQnl0ZUFycmF5KHBhcmFtWzFdKTsKKyAgICAgICAgICAgIHAgPSBjb25jYXRBcnJheXMocCwgcDIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBzZXRQYXJhbWV0ZXIocCwgdmFsdWUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldCBlZmZlY3QgcGFyYW1ldGVyLiBUaGUgZ2V0UGFyYW1ldGVyIG1ldGhvZCBpcyBwcm92aWRlZCBpbiBzZXZlcmFsCisgICAgICogZm9ybXMgYWRkcmVzc2luZyBtb3N0IGNvbW1vbiBwYXJhbWV0ZXIgZm9ybWF0cy4gVGhpcyBmb3JtIGlzIHRoZSBtb3N0CisgICAgICogZ2VuZXJpYyBvbmUgd2hlcmUgdGhlIHBhcmFtZXRlciBhbmQgaXRzIHZhbHVlIGFyZSBib3RoIHNwZWNpZmllZCBhcyBhbgorICAgICAqIGFycmF5IG9mIGJ5dGVzLiBUaGUgcGFyYW1ldGVyIGFuZCB2YWx1ZSB0eXBlIGFuZCBsZW5ndGggYXJlIHRoZXJlZm9yZQorICAgICAqIHRvdGFsbHkgZnJlZS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBwYXJhbSB0aGUgaWRlbnRpZmllciBvZiB0aGUgcGFyYW1ldGVyIHRvIHNldAorICAgICAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHZhbHVlIGZvciB0aGUgc3BlY2lmaWVkIHBhcmFtZXRlcgorICAgICAqIEByZXR1cm4ge0BsaW5rICNTVUNDRVNTfSBpbiBjYXNlIG9mIHN1Y2Nlc3MsIHtAbGluayAjRVJST1JfQkFEX1ZBTFVFfSwKKyAgICAgKiAgICAgICAgIHtAbGluayAjRVJST1JfTk9fTUVNT1JZfSwge0BsaW5rICNFUlJPUl9JTlZBTElEX09QRVJBVElPTn0gb3IKKyAgICAgKiAgICAgICAgIHtAbGluayAjRVJST1JfREVBRF9PQkpFQ1R9IGluIGNhc2Ugb2YgZmFpbHVyZSBXaGVuIGNhbGxlZCwgdmFsdWUubGVuZ3RoCisgICAgICogICAgICAgICBpbmRpY2F0ZXMgdGhlIG1heGltdW0gc2l6ZSBvZiB0aGUgcmV0dXJuZWQgcGFyYW1ldGVycyB2YWx1ZS4gV2hlbgorICAgICAqICAgICAgICAgcmV0dXJuaW5nLCB2YWx1ZS5sZW5ndGggaXMgdXBkYXRlZCB3aXRoIHRoZSBhY3R1YWwgc2l6ZSBvZiB0aGUKKyAgICAgKiAgICAgICAgIHJldHVybmVkIHZhbHVlLgorICAgICAqIEB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIGludCBnZXRQYXJhbWV0ZXIoYnl0ZVtdIHBhcmFtLCBieXRlW10gdmFsdWUpCisgICAgICAgICAgICB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uIHsKKyAgICAgICAgY2hlY2tTdGF0ZSgiZ2V0UGFyYW1ldGVyKCkiKTsKKyAgICAgICAgaW50W10gdlNpemUgPSBuZXcgaW50WzFdOworICAgICAgICB2U2l6ZVswXSA9IHZhbHVlLmxlbmd0aDsKKyAgICAgICAgaW50IHN0YXR1cyA9IG5hdGl2ZV9nZXRQYXJhbWV0ZXIocGFyYW0ubGVuZ3RoLCBwYXJhbSwgdlNpemUsIHZhbHVlKTsKKyAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA+IHZTaXplWzBdKSB7CisgICAgICAgICAgICBieXRlW10gcmVzaXplZFZhbHVlID0gbmV3IGJ5dGVbdlNpemVbMF1dOworICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weSh2YWx1ZSwgMCwgcmVzaXplZFZhbHVlLCAwLCB2U2l6ZVswXSk7CisgICAgICAgICAgICB2YWx1ZSA9IHJlc2l6ZWRWYWx1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc3RhdHVzOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldCBlZmZlY3QgcGFyYW1ldGVyLiBUaGUgcGFyYW1ldGVyIGlzIGFuIGludGVnZXIgYW5kIHRoZSB2YWx1ZSBpcyBhbgorICAgICAqIGFycmF5IG9mIGJ5dGVzLgorICAgICAqCisgICAgICogQHNlZSAjZ2V0UGFyYW1ldGVyKGJ5dGVbXSwgYnl0ZVtdKQorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0UGFyYW1ldGVyKGludCBwYXJhbSwgYnl0ZVtdIHZhbHVlKQorICAgICAgICAgICAgdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiB7CisgICAgICAgIGJ5dGVbXSBwID0gaW50VG9CeXRlQXJyYXkocGFyYW0pOworCisgICAgICAgIHJldHVybiBnZXRQYXJhbWV0ZXIocCwgdmFsdWUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldCBlZmZlY3QgcGFyYW1ldGVyLiBUaGUgcGFyYW1ldGVyIGlzIGFuIGludGVnZXIgYW5kIHRoZSB2YWx1ZSBpcyBhbgorICAgICAqIGFycmF5IG9mIDEgb3IgMiBpbnRlZ2VycworICAgICAqCisgICAgICogQHNlZSAjZ2V0UGFyYW1ldGVyKGJ5dGVbXSwgYnl0ZVtdKQorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0UGFyYW1ldGVyKGludCBwYXJhbSwgaW50W10gdmFsdWUpCisgICAgICAgICAgICB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uIHsKKyAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA+IDIpIHsKKyAgICAgICAgICAgIHJldHVybiBFUlJPUl9CQURfVkFMVUU7CisgICAgICAgIH0KKyAgICAgICAgYnl0ZVtdIHAgPSBpbnRUb0J5dGVBcnJheShwYXJhbSk7CisKKyAgICAgICAgYnl0ZVtdIHYgPSBuZXcgYnl0ZVt2YWx1ZS5sZW5ndGggKiA0XTsKKworICAgICAgICBpbnQgc3RhdHVzID0gZ2V0UGFyYW1ldGVyKHAsIHYpOworCisgICAgICAgIHZhbHVlWzBdID0gYnl0ZUFycmF5VG9JbnQodik7CisgICAgICAgIGlmICh2Lmxlbmd0aCA+IDQpIHsKKyAgICAgICAgICAgIHZhbHVlWzFdID0gYnl0ZUFycmF5VG9JbnQodiwgNCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHN0YXR1czsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXQgZWZmZWN0IHBhcmFtZXRlci4gVGhlIHBhcmFtZXRlciBpcyBhbiBpbnRlZ2VyIGFuZCB0aGUgdmFsdWUgaXMgYW4KKyAgICAgKiBhcnJheSBvZiAxIG9yIDIgc2hvcnQgaW50ZWdlcnMKKyAgICAgKgorICAgICAqIEBzZWUgI2dldFBhcmFtZXRlcihieXRlW10sIGJ5dGVbXSkKKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldFBhcmFtZXRlcihpbnQgcGFyYW0sIHNob3J0W10gdmFsdWUpCisgICAgICAgICAgICB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uIHsKKyAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA+IDIpIHsKKyAgICAgICAgICAgIHJldHVybiBFUlJPUl9CQURfVkFMVUU7CisgICAgICAgIH0KKyAgICAgICAgYnl0ZVtdIHAgPSBpbnRUb0J5dGVBcnJheShwYXJhbSk7CisKKyAgICAgICAgYnl0ZVtdIHYgPSBuZXcgYnl0ZVt2YWx1ZS5sZW5ndGggKiAyXTsKKworICAgICAgICBpbnQgc3RhdHVzID0gZ2V0UGFyYW1ldGVyKHAsIHYpOworCisgICAgICAgIHZhbHVlWzBdID0gYnl0ZUFycmF5VG9TaG9ydCh2KTsKKyAgICAgICAgaWYgKHYubGVuZ3RoID4gMikgeworICAgICAgICAgICAgdmFsdWVbMV0gPSBieXRlQXJyYXlUb1Nob3J0KHYsIDIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBzdGF0dXM7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0IGVmZmVjdCBwYXJhbWV0ZXIuIFRoZSBwYXJhbWV0ZXIgaXMgYW4gYXJyYXkgb2YgMSBvciAyIGludGVnZXJzIGFuZAorICAgICAqIHRoZSB2YWx1ZSBpcyBhbHNvIGFuIGFycmF5IG9mIDEgb3IgMiBpbnRlZ2VycworICAgICAqCisgICAgICogQHNlZSAjZ2V0UGFyYW1ldGVyKGJ5dGVbXSwgYnl0ZVtdKQorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0UGFyYW1ldGVyKGludFtdIHBhcmFtLCBpbnRbXSB2YWx1ZSkKKyAgICAgICAgICAgIHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24geworICAgICAgICBpZiAocGFyYW0ubGVuZ3RoID4gMiB8fCB2YWx1ZS5sZW5ndGggPiAyKSB7CisgICAgICAgICAgICByZXR1cm4gRVJST1JfQkFEX1ZBTFVFOworICAgICAgICB9CisgICAgICAgIGJ5dGVbXSBwID0gaW50VG9CeXRlQXJyYXkocGFyYW1bMF0pOworICAgICAgICBpZiAocGFyYW0ubGVuZ3RoID4gMSkgeworICAgICAgICAgICAgYnl0ZVtdIHAyID0gaW50VG9CeXRlQXJyYXkocGFyYW1bMV0pOworICAgICAgICAgICAgcCA9IGNvbmNhdEFycmF5cyhwLCBwMik7CisgICAgICAgIH0KKyAgICAgICAgYnl0ZVtdIHYgPSBuZXcgYnl0ZVt2YWx1ZS5sZW5ndGggKiA0XTsKKworICAgICAgICBpbnQgc3RhdHVzID0gZ2V0UGFyYW1ldGVyKHAsIHYpOworCisgICAgICAgIHZhbHVlWzBdID0gYnl0ZUFycmF5VG9JbnQodik7CisgICAgICAgIGlmICh2Lmxlbmd0aCA+IDQpIHsKKyAgICAgICAgICAgIHZhbHVlWzFdID0gYnl0ZUFycmF5VG9JbnQodiwgNCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHN0YXR1czsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXQgZWZmZWN0IHBhcmFtZXRlci4gVGhlIHBhcmFtZXRlciBpcyBhbiBhcnJheSBvZiAxIG9yIDIgaW50ZWdlcnMgYW5kCisgICAgICogdGhlIHZhbHVlIGlzIGFuIGFycmF5IG9mIDEgb3IgMiBzaG9ydCBpbnRlZ2VycworICAgICAqCisgICAgICogQHNlZSAjZ2V0UGFyYW1ldGVyKGJ5dGVbXSwgYnl0ZVtdKQorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0UGFyYW1ldGVyKGludFtdIHBhcmFtLCBzaG9ydFtdIHZhbHVlKQorICAgICAgICAgICAgdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiB7CisgICAgICAgIGlmIChwYXJhbS5sZW5ndGggPiAyIHx8IHZhbHVlLmxlbmd0aCA+IDIpIHsKKyAgICAgICAgICAgIHJldHVybiBFUlJPUl9CQURfVkFMVUU7CisgICAgICAgIH0KKyAgICAgICAgYnl0ZVtdIHAgPSBpbnRUb0J5dGVBcnJheShwYXJhbVswXSk7CisgICAgICAgIGlmIChwYXJhbS5sZW5ndGggPiAxKSB7CisgICAgICAgICAgICBieXRlW10gcDIgPSBpbnRUb0J5dGVBcnJheShwYXJhbVsxXSk7CisgICAgICAgICAgICBwID0gY29uY2F0QXJyYXlzKHAsIHAyKTsKKyAgICAgICAgfQorICAgICAgICBieXRlW10gdiA9IG5ldyBieXRlW3ZhbHVlLmxlbmd0aCAqIDJdOworCisgICAgICAgIGludCBzdGF0dXMgPSBnZXRQYXJhbWV0ZXIocCwgdik7CisKKyAgICAgICAgdmFsdWVbMF0gPSBieXRlQXJyYXlUb1Nob3J0KHYpOworICAgICAgICBpZiAodi5sZW5ndGggPiAyKSB7CisgICAgICAgICAgICB2YWx1ZVsxXSA9IGJ5dGVBcnJheVRvU2hvcnQodiwgMik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHN0YXR1czsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXQgZWZmZWN0IHBhcmFtZXRlci4gVGhlIHBhcmFtZXRlciBpcyBhbiBhcnJheSBvZiAxIG9yIDIgaW50ZWdlcnMgYW5kCisgICAgICogdGhlIHZhbHVlIGlzIGFuIGFycmF5IG9mIGJ5dGVzCisgICAgICoKKyAgICAgKiBAc2VlICNnZXRQYXJhbWV0ZXIoYnl0ZVtdLCBieXRlW10pCisgICAgICovCisgICAgcHVibGljIGludCBnZXRQYXJhbWV0ZXIoaW50W10gcGFyYW0sIGJ5dGVbXSB2YWx1ZSkKKyAgICAgICAgICAgIHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24geworICAgICAgICBpZiAocGFyYW0ubGVuZ3RoID4gMikgeworICAgICAgICAgICAgcmV0dXJuIEVSUk9SX0JBRF9WQUxVRTsKKyAgICAgICAgfQorICAgICAgICBieXRlW10gcCA9IGludFRvQnl0ZUFycmF5KHBhcmFtWzBdKTsKKyAgICAgICAgaWYgKHBhcmFtLmxlbmd0aCA+IDEpIHsKKyAgICAgICAgICAgIGJ5dGVbXSBwMiA9IGludFRvQnl0ZUFycmF5KHBhcmFtWzFdKTsKKyAgICAgICAgICAgIHAgPSBjb25jYXRBcnJheXMocCwgcDIpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGdldFBhcmFtZXRlcihwLCB2YWx1ZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2VuZCBhIGNvbW1hbmQgdG8gdGhlIGVmZmVjdCBlbmdpbmUuIFRoaXMgbWV0aG9kIGlzIGludGVuZGVkIHRvIHNlbmQKKyAgICAgKiBwcm9wcmlldGFyeSBjb21tYW5kcyB0byBhIHBhcnRpY3VsYXIgZWZmZWN0IGltcGxlbWVudGF0aW9uLgorICAgICAqCisgICAgICovCisgICAgcHVibGljIGludCBjb21tYW5kKGludCBjbWRDb2RlLCBieXRlW10gY29tbWFuZCwgYnl0ZVtdIHJlcGx5KQorICAgICAgICAgICAgdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiB7CisgICAgICAgIGNoZWNrU3RhdGUoImNvbW1hbmQoKSIpOworICAgICAgICBpbnRbXSByZXBseVNpemUgPSBuZXcgaW50WzFdOworICAgICAgICByZXBseVNpemVbMF0gPSByZXBseS5sZW5ndGg7CisKKyAgICAgICAgaW50IHN0YXR1cyA9IG5hdGl2ZV9jb21tYW5kKGNtZENvZGUsIGNvbW1hbmQubGVuZ3RoLCBjb21tYW5kLAorICAgICAgICAgICAgICAgIHJlcGx5U2l6ZSwgcmVwbHkpOworCisgICAgICAgIGlmIChyZXBseS5sZW5ndGggPiByZXBseVNpemVbMF0pIHsKKyAgICAgICAgICAgIGJ5dGVbXSByZXNpemVkUmVwbHkgPSBuZXcgYnl0ZVtyZXBseVNpemVbMF1dOworICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShyZXBseSwgMCwgcmVzaXplZFJlcGx5LCAwLCByZXBseVNpemVbMF0pOworICAgICAgICAgICAgcmVwbHkgPSByZXNpemVkUmVwbHk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHN0YXR1czsKKyAgICB9CisKKyAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIEdldHRlcnMKKyAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBlZmZlY3QgdW5pcXVlIGlkZW50aWZpZXIuIFRoaXMgc3lzdGVtIHdpZGUgdW5pcXVlIGlkZW50aWZpZXIgY2FuCisgICAgICogYmUgdXNlZCB0byBhdHRhY2ggdGhpcyBlZmZlY3QgdG8gYSBNZWRpYVBsYXllciBvciBhbiBBdWRpb1RyYWNrIHdoZW4gdGhlCisgICAgICogZWZmZWN0IGlzIGFuIGF1eGlsaWFyeSBlZmZlY3QgKFJldmVyYikKKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIGVmZmVjdCBpZGVudGlmaWVyLgorICAgICAqIEB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIGludCBnZXRJZCgpIHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24geworICAgICAgICBjaGVja1N0YXRlKCJnZXRJZCgpIik7CisgICAgICAgIHJldHVybiBtSWQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBlZmZlY3QgZW5naW5lIGVuYWJsZSBzdGF0ZQorICAgICAqCisgICAgICogQHJldHVybiB0cnVlIGlmIHRoZSBlZmZlY3QgaXMgZW5hYmxlZCwgZmFsc2Ugb3RoZXJ3aXNlLgorICAgICAqIEB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gZ2V0RW5hYmxlZCgpIHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24geworICAgICAgICBjaGVja1N0YXRlKCJnZXRFbmFibGVkKCkiKTsKKyAgICAgICAgcmV0dXJuIG5hdGl2ZV9nZXRFbmFibGVkKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ2hlY2tzIGlmIHRoaXMgQXVkaW9FZmZlY3Qgb2JqZWN0IGlzIGNvbnRyb2xsaW5nIHRoZSBlZmZlY3QgZW5naW5lLgorICAgICAqCisgICAgICogQHJldHVybiB0cnVlIGlmIHRoaXMgaW5zdGFuY2UgaGFzIGNvbnRyb2wgb2YgZWZmZWN0IGVuZ2luZSwgZmFsc2UKKyAgICAgKiAgICAgICAgIG90aGVyd2lzZS4KKyAgICAgKiBAdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGhhc0NvbnRyb2woKSB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uIHsKKyAgICAgICAgY2hlY2tTdGF0ZSgiaGFzQ29udHJvbCgpIik7CisgICAgICAgIHJldHVybiBuYXRpdmVfaGFzQ29udHJvbCgpOworICAgIH0KKworICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gSW5pdGlhbGl6YXRpb24gLyBjb25maWd1cmF0aW9uCisgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBsaXN0ZW5lciBBdWRpb0VmZmVjdCBub3RpZmllcyB3aGVuIHRoZSBlZmZlY3QgZW5naW5lIGlzIGVuYWJsZWQKKyAgICAgKiBvciBkaXNhYmxlZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBsaXN0ZW5lcgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldEVuYWJsZVN0YXR1c0xpc3RlbmVyKE9uRW5hYmxlU3RhdHVzQ2hhbmdlTGlzdGVuZXIgbGlzdGVuZXIpIHsKKyAgICAgICAgc3luY2hyb25pemVkIChtTGlzdGVuZXJMb2NrKSB7CisgICAgICAgICAgICBtRW5hYmxlU3RhdHVzQ2hhbmdlTGlzdGVuZXIgPSBsaXN0ZW5lcjsKKyAgICAgICAgfQorICAgICAgICBpZiAoKGxpc3RlbmVyICE9IG51bGwpICYmIChtTmF0aXZlRXZlbnRIYW5kbGVyID09IG51bGwpKSB7CisgICAgICAgICAgICBjcmVhdGVOYXRpdmVFdmVudEhhbmRsZXIoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIGxpc3RlbmVyIEF1ZGlvRWZmZWN0IG5vdGlmaWVzIHdoZW4gdGhlIGVmZmVjdCBlbmdpbmUgY29udHJvbCBpcworICAgICAqIHRha2VuIG9yIHJldHVybmVkLgorICAgICAqCisgICAgICogQHBhcmFtIGxpc3RlbmVyCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0Q29udHJvbFN0YXR1c0xpc3RlbmVyKE9uQ29udHJvbFN0YXR1c0NoYW5nZUxpc3RlbmVyIGxpc3RlbmVyKSB7CisgICAgICAgIHN5bmNocm9uaXplZCAobUxpc3RlbmVyTG9jaykgeworICAgICAgICAgICAgbUNvbnRyb2xDaGFuZ2VTdGF0dXNMaXN0ZW5lciA9IGxpc3RlbmVyOworICAgICAgICB9CisgICAgICAgIGlmICgobGlzdGVuZXIgIT0gbnVsbCkgJiYgKG1OYXRpdmVFdmVudEhhbmRsZXIgPT0gbnVsbCkpIHsKKyAgICAgICAgICAgIGNyZWF0ZU5hdGl2ZUV2ZW50SGFuZGxlcigpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgbGlzdGVuZXIgQXVkaW9FZmZlY3Qgbm90aWZpZXMgd2hlbiBhIHBhcmFtZXRlciBpcyBjaGFuZ2VkLgorICAgICAqCisgICAgICogQHBhcmFtIGxpc3RlbmVyCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0UGFyYW1ldGVyTGlzdGVuZXIoT25QYXJhbWV0ZXJDaGFuZ2VMaXN0ZW5lciBsaXN0ZW5lcikgeworICAgICAgICBzeW5jaHJvbml6ZWQgKG1MaXN0ZW5lckxvY2spIHsKKyAgICAgICAgICAgIG1QYXJhbWV0ZXJDaGFuZ2VMaXN0ZW5lciA9IGxpc3RlbmVyOworICAgICAgICB9CisgICAgICAgIGlmICgobGlzdGVuZXIgIT0gbnVsbCkgJiYgKG1OYXRpdmVFdmVudEhhbmRsZXIgPT0gbnVsbCkpIHsKKyAgICAgICAgICAgIGNyZWF0ZU5hdGl2ZUV2ZW50SGFuZGxlcigpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gQ29udmVuaWVuY2UgbWV0aG9kIGZvciB0aGUgY3JlYXRpb24gb2YgdGhlIG5hdGl2ZSBldmVudCBoYW5kbGVyCisgICAgLy8gSXQgaXMgY2FsbGVkIG9ubHkgd2hlbiBhIG5vbi1udWxsIGV2ZW50IGxpc3RlbmVyIGlzIHNldC4KKyAgICAvLyBwcmVjb25kaXRpb246CisgICAgLy8gbU5hdGl2ZUV2ZW50SGFuZGxlciBpcyBudWxsCisgICAgcHJpdmF0ZSB2b2lkIGNyZWF0ZU5hdGl2ZUV2ZW50SGFuZGxlcigpIHsKKyAgICAgICAgTG9vcGVyIGxvb3BlcjsKKyAgICAgICAgaWYgKChsb29wZXIgPSBMb29wZXIubXlMb29wZXIoKSkgIT0gbnVsbCkgeworICAgICAgICAgICAgbU5hdGl2ZUV2ZW50SGFuZGxlciA9IG5ldyBOYXRpdmVFdmVudEhhbmRsZXIodGhpcywgbG9vcGVyKTsKKyAgICAgICAgfSBlbHNlIGlmICgobG9vcGVyID0gTG9vcGVyLmdldE1haW5Mb29wZXIoKSkgIT0gbnVsbCkgeworICAgICAgICAgICAgbU5hdGl2ZUV2ZW50SGFuZGxlciA9IG5ldyBOYXRpdmVFdmVudEhhbmRsZXIodGhpcywgbG9vcGVyKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1OYXRpdmVFdmVudEhhbmRsZXIgPSBudWxsOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gSW50ZXJmYWNlIGRlZmluaXRpb25zCisgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvKioKKyAgICAgKiBUaGUgT25QYXJhbWV0ZXJDaGFuZ2VMaXN0ZW5lciBpbnRlcmZhY2UgZGVmaW5lcyBhIG1ldGhvZCBjYWxsZWQgYnkgdGhlIEF1ZGlvRWZmZWN0CisgICAgICogd2hlbiBhIHRoZSBlbmFibGVkIHN0YXRlIG9mIHRoZSBlZmZlY3QgZW5naW5lIHdhcyBjaGFuZ2VkIGJ5IHRoZSBjb250cm9sbGluZyBhcHBsaWNhdGlvbi4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50ZXJmYWNlIE9uRW5hYmxlU3RhdHVzQ2hhbmdlTGlzdGVuZXIgeworICAgICAgICAvKioKKyAgICAgICAgICogQ2FsbGVkIG9uIHRoZSBsaXN0ZW5lciB0byBub3RpZnkgaXQgdGhhdCB0aGUgZWZmZWN0IGVuZ2luZSBoYXMgYmVlbgorICAgICAgICAgKiBlbmFibGVkIG9yIGRpc2FibGVkLgorICAgICAgICAgKiBAcGFyYW0gZWZmZWN0IHRoZSBlZmZlY3Qgb24gd2hpY2ggdGhlIGludGVyZmFjZSBpcyByZWdpc3RlcmVkLgorICAgICAgICAgKiBAcGFyYW0gZW5hYmxlZCBuZXcgZWZmZWN0IHN0YXRlLgorICAgICAgICAgKi8KKyAgICAgICAgdm9pZCBvbkVuYWJsZVN0YXR1c0NoYW5nZShBdWRpb0VmZmVjdCBlZmZlY3QsIGJvb2xlYW4gZW5hYmxlZCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhlIE9uQ29udHJvbFN0YXR1c0NoYW5nZUxpc3RlbmVyIGludGVyZmFjZSBkZWZpbmVzIGEgbWV0aG9kIGNhbGxlZCBieSB0aGUgQXVkaW9FZmZlY3QKKyAgICAgKiB3aGVuIGEgdGhlIGNvbnRyb2wgb2YgdGhlIGVmZmVjdCBlbmdpbmUgaXMgZ2FpbmVkIG9yIGxvc3QgYnkgdGhlIGFwcGxpY2F0aW9uCisgICAgICovCisgICAgcHVibGljIGludGVyZmFjZSBPbkNvbnRyb2xTdGF0dXNDaGFuZ2VMaXN0ZW5lciB7CisgICAgICAgIC8qKgorICAgICAgICAgKiBDYWxsZWQgb24gdGhlIGxpc3RlbmVyIHRvIG5vdGlmeSBpdCB0aGF0IHRoZSBlZmZlY3QgZW5naW5lIGNvbnRyb2wKKyAgICAgICAgICogaGFzIGJlZW4gdGFrZW4gb3IgcmV0dXJuZWQuCisgICAgICAgICAqIEBwYXJhbSBlZmZlY3QgdGhlIGVmZmVjdCBvbiB3aGljaCB0aGUgaW50ZXJmYWNlIGlzIHJlZ2lzdGVyZWQuCisgICAgICAgICAqIEBwYXJhbSBjb250cm9sR3JhbnRlZCB0cnVlIGlmIHRoZSBhcHBsaWNhdGlvbiBoYXMgYmVlbiBncmFudGVkIGNvbnRyb2wgb2YgdGhlIGVmZmVjdAorICAgICAgICAgKiBlbmdpbmUsIGZhbHNlIG90aGVyd2lzZS4KKyAgICAgICAgICovCisgICAgICAgIHZvaWQgb25Db250cm9sU3RhdHVzQ2hhbmdlKEF1ZGlvRWZmZWN0IGVmZmVjdCwgYm9vbGVhbiBjb250cm9sR3JhbnRlZCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhlIE9uUGFyYW1ldGVyQ2hhbmdlTGlzdGVuZXIgaW50ZXJmYWNlIGRlZmluZXMgYSBtZXRob2QgY2FsbGVkIGJ5IHRoZSBBdWRpb0VmZmVjdAorICAgICAqIHdoZW4gYSBwYXJhbWV0ZXIgaXMgY2hhbmdlZCBpbiB0aGUgZWZmZWN0IGVuZ2luZSBieSB0aGUgY29udHJvbGxpbmcgYXBwbGljYXRpb24uCisgICAgICovCisgICAgcHVibGljIGludGVyZmFjZSBPblBhcmFtZXRlckNoYW5nZUxpc3RlbmVyIHsKKyAgICAgICAgLyoqCisgICAgICAgICAqIENhbGxlZCBvbiB0aGUgbGlzdGVuZXIgdG8gbm90aWZ5IGl0IHRoYXQgYSBwYXJhbWV0ZXIgdmFsdWUgaGFzIGNoYW5nZWQuCisgICAgICAgICAqIEBwYXJhbSBlZmZlY3QgdGhlIGVmZmVjdCBvbiB3aGljaCB0aGUgaW50ZXJmYWNlIGlzIHJlZ2lzdGVyZWQuCisgICAgICAgICAqIEBwYXJhbSBzdGF0dXMgc3RhdHVzIG9mIHRoZSBzZXQgcGFyYW1ldGVyIG9wZXJhdGlvbi4KKyAgICAgICAgICogQHBhcmFtIHBhcmFtIElEIG9mIHRoZSBtb2RpZmllZCBwYXJhbWV0ZXIuCisgICAgICAgICAqIEBwYXJhbSB2YWx1ZSB0aGUgbmV3IHBhcmFtZXRlciB2YWx1ZS4KKyAgICAgICAgICovCisgICAgICAgIHZvaWQgb25QYXJhbWV0ZXJDaGFuZ2UoQXVkaW9FZmZlY3QgZWZmZWN0LCBpbnQgc3RhdHVzLCBieXRlW10gcGFyYW0sCisgICAgICAgICAgICAgICAgYnl0ZVtdIHZhbHVlKTsKKyAgICB9CisKKyAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBJbm5lciBjbGFzc2VzCisgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvKioKKyAgICAgKiBIZWxwZXIgY2xhc3MgdG8gaGFuZGxlIHRoZSBmb3J3YXJkaW5nIG9mIG5hdGl2ZSBldmVudHMgdG8gdGhlIGFwcHJvcHJpYXRlCisgICAgICogbGlzdGVuZXJzCisgICAgICovCisgICAgcHJpdmF0ZSBjbGFzcyBOYXRpdmVFdmVudEhhbmRsZXIgZXh0ZW5kcyBIYW5kbGVyIHsKKyAgICAgICAgcHJpdmF0ZSBBdWRpb0VmZmVjdCBtQXVkaW9FZmZlY3Q7CisKKyAgICAgICAgcHVibGljIE5hdGl2ZUV2ZW50SGFuZGxlcihBdWRpb0VmZmVjdCBhZSwgTG9vcGVyIGxvb3BlcikgeworICAgICAgICAgICAgc3VwZXIobG9vcGVyKTsKKyAgICAgICAgICAgIG1BdWRpb0VmZmVjdCA9IGFlOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyB2b2lkIGhhbmRsZU1lc3NhZ2UoTWVzc2FnZSBtc2cpIHsKKyAgICAgICAgICAgIGlmIChtQXVkaW9FZmZlY3QgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN3aXRjaCAobXNnLndoYXQpIHsKKyAgICAgICAgICAgIGNhc2UgTkFUSVZFX0VWRU5UX0VOQUJMRURfU1RBVFVTOgorICAgICAgICAgICAgICAgIE9uRW5hYmxlU3RhdHVzQ2hhbmdlTGlzdGVuZXIgZW5hYmxlU3RhdHVzQ2hhbmdlTGlzdGVuZXIgPSBudWxsOworICAgICAgICAgICAgICAgIHN5bmNocm9uaXplZCAobUxpc3RlbmVyTG9jaykgeworICAgICAgICAgICAgICAgICAgICBlbmFibGVTdGF0dXNDaGFuZ2VMaXN0ZW5lciA9IG1BdWRpb0VmZmVjdC5tRW5hYmxlU3RhdHVzQ2hhbmdlTGlzdGVuZXI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChlbmFibGVTdGF0dXNDaGFuZ2VMaXN0ZW5lciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIGVuYWJsZVN0YXR1c0NoYW5nZUxpc3RlbmVyLm9uRW5hYmxlU3RhdHVzQ2hhbmdlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1BdWRpb0VmZmVjdCwgKGJvb2xlYW4pIChtc2cuYXJnMSAhPSAwKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBOQVRJVkVfRVZFTlRfQ09OVFJPTF9TVEFUVVM6CisgICAgICAgICAgICAgICAgT25Db250cm9sU3RhdHVzQ2hhbmdlTGlzdGVuZXIgY29udHJvbFN0YXR1c0NoYW5nZUxpc3RlbmVyID0gbnVsbDsKKyAgICAgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKG1MaXN0ZW5lckxvY2spIHsKKyAgICAgICAgICAgICAgICAgICAgY29udHJvbFN0YXR1c0NoYW5nZUxpc3RlbmVyID0gbUF1ZGlvRWZmZWN0Lm1Db250cm9sQ2hhbmdlU3RhdHVzTGlzdGVuZXI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChjb250cm9sU3RhdHVzQ2hhbmdlTGlzdGVuZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBjb250cm9sU3RhdHVzQ2hhbmdlTGlzdGVuZXIub25Db250cm9sU3RhdHVzQ2hhbmdlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1BdWRpb0VmZmVjdCwgKGJvb2xlYW4pIChtc2cuYXJnMSAhPSAwKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBOQVRJVkVfRVZFTlRfUEFSQU1FVEVSX0NIQU5HRUQ6CisgICAgICAgICAgICAgICAgT25QYXJhbWV0ZXJDaGFuZ2VMaXN0ZW5lciBwYXJhbWV0ZXJDaGFuZ2VMaXN0ZW5lciA9IG51bGw7CisgICAgICAgICAgICAgICAgc3luY2hyb25pemVkIChtTGlzdGVuZXJMb2NrKSB7CisgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlckNoYW5nZUxpc3RlbmVyID0gbUF1ZGlvRWZmZWN0Lm1QYXJhbWV0ZXJDaGFuZ2VMaXN0ZW5lcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHBhcmFtZXRlckNoYW5nZUxpc3RlbmVyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gYXJnMSBjb250YWlucyBvZmZzZXQgb2YgcGFyYW1ldGVyIHZhbHVlIGZyb20gc3RhcnQgb2YKKyAgICAgICAgICAgICAgICAgICAgLy8gYnl0ZSBhcnJheQorICAgICAgICAgICAgICAgICAgICBpbnQgdk9mZnNldCA9IG1zZy5hcmcxOworICAgICAgICAgICAgICAgICAgICBieXRlW10gcCA9IChieXRlW10pIG1zZy5vYmo7CisgICAgICAgICAgICAgICAgICAgIC8vIFNlZSBlZmZlY3RfcGFyYW1fdCBpbiBFZmZlY3RBcGkuaCBmb3IgcHNpemUgYW5kIHZzaXplCisgICAgICAgICAgICAgICAgICAgIC8vIGZpZWxkcyBvZmZzZXRzCisgICAgICAgICAgICAgICAgICAgIGludCBzdGF0dXMgPSBieXRlQXJyYXlUb0ludChwLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgaW50IHBzaXplID0gYnl0ZUFycmF5VG9JbnQocCwgNCk7CisgICAgICAgICAgICAgICAgICAgIGludCB2c2l6ZSA9IGJ5dGVBcnJheVRvSW50KHAsIDgpOworICAgICAgICAgICAgICAgICAgICBieXRlW10gcGFyYW0gPSBuZXcgYnl0ZVtwc2l6ZV07CisgICAgICAgICAgICAgICAgICAgIGJ5dGVbXSB2YWx1ZSA9IG5ldyBieXRlW3ZzaXplXTsKKyAgICAgICAgICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShwLCAxMiwgcGFyYW0sIDAsIHBzaXplKTsKKyAgICAgICAgICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShwLCB2T2Zmc2V0LCB2YWx1ZSwgMCwgdnNpemUpOworCisgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlckNoYW5nZUxpc3RlbmVyLm9uUGFyYW1ldGVyQ2hhbmdlKG1BdWRpb0VmZmVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMsIHBhcmFtLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIExvZy5lKFRBRywgImhhbmRsZU1lc3NhZ2UoKSBVbmtub3duIGV2ZW50IHR5cGU6ICIgKyBtc2cud2hhdCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBKYXZhIG1ldGhvZHMgY2FsbGVkIGZyb20gdGhlIG5hdGl2ZSBzaWRlCisgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICBAU3VwcHJlc3NXYXJuaW5ncygidW51c2VkIikKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIHBvc3RFdmVudEZyb21OYXRpdmUoT2JqZWN0IGVmZmVjdF9yZWYsIGludCB3aGF0LAorICAgICAgICAgICAgaW50IGFyZzEsIGludCBhcmcyLCBPYmplY3Qgb2JqKSB7CisgICAgICAgIEF1ZGlvRWZmZWN0IGVmZmVjdCA9IChBdWRpb0VmZmVjdCkgKChXZWFrUmVmZXJlbmNlKSBlZmZlY3RfcmVmKS5nZXQoKTsKKyAgICAgICAgaWYgKGVmZmVjdCA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoZWZmZWN0Lm1OYXRpdmVFdmVudEhhbmRsZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgTWVzc2FnZSBtID0gZWZmZWN0Lm1OYXRpdmVFdmVudEhhbmRsZXIub2J0YWluTWVzc2FnZSh3aGF0LCBhcmcxLAorICAgICAgICAgICAgICAgICAgICBhcmcyLCBvYmopOworICAgICAgICAgICAgZWZmZWN0Lm1OYXRpdmVFdmVudEhhbmRsZXIuc2VuZE1lc3NhZ2UobSk7CisgICAgICAgIH0KKworICAgIH0KKworICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIE5hdGl2ZSBtZXRob2RzIGNhbGxlZCBmcm9tIHRoZSBKYXZhIHNpZGUKKyAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIGZpbmFsIHZvaWQgbmF0aXZlX2luaXQoKTsKKworICAgIHByaXZhdGUgbmF0aXZlIGZpbmFsIGludCBuYXRpdmVfc2V0dXAoT2JqZWN0IGF1ZGlvZWZmZWN0X3RoaXMsIFN0cmluZyB0eXBlLAorICAgICAgICAgICAgU3RyaW5nIHV1aWQsIGludCBwcmlvcml0eSwgaW50IGF1ZGlvU2Vzc2lvbiwgaW50W10gaWQsIE9iamVjdFtdIGRlc2MpOworCisgICAgcHJpdmF0ZSBuYXRpdmUgZmluYWwgdm9pZCBuYXRpdmVfZmluYWxpemUoKTsKKworICAgIHByaXZhdGUgbmF0aXZlIGZpbmFsIHZvaWQgbmF0aXZlX3JlbGVhc2UoKTsKKworICAgIHByaXZhdGUgbmF0aXZlIGZpbmFsIGludCBuYXRpdmVfc2V0RW5hYmxlZChib29sZWFuIGVuYWJsZWQpOworCisgICAgcHJpdmF0ZSBuYXRpdmUgZmluYWwgYm9vbGVhbiBuYXRpdmVfZ2V0RW5hYmxlZCgpOworCisgICAgcHJpdmF0ZSBuYXRpdmUgZmluYWwgYm9vbGVhbiBuYXRpdmVfaGFzQ29udHJvbCgpOworCisgICAgcHJpdmF0ZSBuYXRpdmUgZmluYWwgaW50IG5hdGl2ZV9zZXRQYXJhbWV0ZXIoaW50IHBzaXplLCBieXRlW10gcGFyYW0sCisgICAgICAgICAgICBpbnQgdnNpemUsIGJ5dGVbXSB2YWx1ZSk7CisKKyAgICBwcml2YXRlIG5hdGl2ZSBmaW5hbCBpbnQgbmF0aXZlX2dldFBhcmFtZXRlcihpbnQgcHNpemUsIGJ5dGVbXSBwYXJhbSwKKyAgICAgICAgICAgIGludFtdIHZzaXplLCBieXRlW10gdmFsdWUpOworCisgICAgcHJpdmF0ZSBuYXRpdmUgZmluYWwgaW50IG5hdGl2ZV9jb21tYW5kKGludCBjbWRDb2RlLCBpbnQgY21kU2l6ZSwKKyAgICAgICAgICAgIGJ5dGVbXSBjbWREYXRhLCBpbnRbXSByZXBTaXplLCBieXRlW10gcmVwRGF0YSk7CisKKyAgICBwcml2YXRlIHN0YXRpYyBuYXRpdmUgT2JqZWN0W10gbmF0aXZlX3F1ZXJ5X2VmZmVjdHMoKTsKKworICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIFV0aWxpdHkgbWV0aG9kcworICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLQorCisgICAgcHJvdGVjdGVkIHZvaWQgY2hlY2tTdGF0ZShTdHJpbmcgbWV0aG9kTmFtZSkgdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiB7CisgICAgICAgIHN5bmNocm9uaXplZCAobVN0YXRlTG9jaykgeworICAgICAgICAgICAgaWYgKG1TdGF0ZSAhPSBTVEFURV9JTklUSUFMSVpFRCkgeworICAgICAgICAgICAgICAgIHRocm93IChuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKG1ldGhvZE5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICsgIiBjYWxsZWQgb24gdW5pbml0aWFsaXplZCBBdWRpb0VmZmVjdC4iKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcm90ZWN0ZWQgdm9pZCBjaGVja1N0YXR1cyhpbnQgc3RhdHVzKSB7CisgICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7CisgICAgICAgIGNhc2UgQXVkaW9FZmZlY3QuU1VDQ0VTUzoKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEF1ZGlvRWZmZWN0LkVSUk9SX0JBRF9WQUxVRToKKyAgICAgICAgICAgIHRocm93IChuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAiQXVkaW9FZmZlY3Q6IGJhZCBwYXJhbWV0ZXIgdmFsdWUiKSk7CisgICAgICAgIGNhc2UgQXVkaW9FZmZlY3QuRVJST1JfSU5WQUxJRF9PUEVSQVRJT046CisgICAgICAgICAgICB0aHJvdyAobmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAiQXVkaW9FZmZlY3Q6IGludmFsaWQgcGFyYW1ldGVyIG9wZXJhdGlvbiIpKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHRocm93IChuZXcgUnVudGltZUV4Y2VwdGlvbigiQXVkaW9FZmZlY3Q6IHNldC9nZXQgcGFyYW1ldGVyIGVycm9yIikpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJvdGVjdGVkIGludCBieXRlQXJyYXlUb0ludChieXRlW10gdmFsdWVCdWYpIHsKKyAgICAgICAgcmV0dXJuIGJ5dGVBcnJheVRvSW50KHZhbHVlQnVmLCAwKTsKKworICAgIH0KKworICAgIHByb3RlY3RlZCBpbnQgYnl0ZUFycmF5VG9JbnQoYnl0ZVtdIHZhbHVlQnVmLCBpbnQgb2Zmc2V0KSB7CisgICAgICAgIEJ5dGVCdWZmZXIgY29udmVydGVyID0gQnl0ZUJ1ZmZlci53cmFwKHZhbHVlQnVmKTsKKyAgICAgICAgY29udmVydGVyLm9yZGVyKEJ5dGVPcmRlci5uYXRpdmVPcmRlcigpKTsKKyAgICAgICAgcmV0dXJuIGNvbnZlcnRlci5nZXRJbnQob2Zmc2V0KTsKKworICAgIH0KKworICAgIHByb3RlY3RlZCBieXRlW10gaW50VG9CeXRlQXJyYXkoaW50IHZhbHVlKSB7CisgICAgICAgIEJ5dGVCdWZmZXIgY29udmVydGVyID0gQnl0ZUJ1ZmZlci5hbGxvY2F0ZSg0KTsKKyAgICAgICAgY29udmVydGVyLm9yZGVyKEJ5dGVPcmRlci5uYXRpdmVPcmRlcigpKTsKKyAgICAgICAgY29udmVydGVyLnB1dEludCh2YWx1ZSk7CisgICAgICAgIHJldHVybiBjb252ZXJ0ZXIuYXJyYXkoKTsKKyAgICB9CisKKyAgICBwcm90ZWN0ZWQgc2hvcnQgYnl0ZUFycmF5VG9TaG9ydChieXRlW10gdmFsdWVCdWYpIHsKKyAgICAgICAgcmV0dXJuIGJ5dGVBcnJheVRvU2hvcnQodmFsdWVCdWYsIDApOworICAgIH0KKworICAgIHByb3RlY3RlZCBzaG9ydCBieXRlQXJyYXlUb1Nob3J0KGJ5dGVbXSB2YWx1ZUJ1ZiwgaW50IG9mZnNldCkgeworICAgICAgICBCeXRlQnVmZmVyIGNvbnZlcnRlciA9IEJ5dGVCdWZmZXIud3JhcCh2YWx1ZUJ1Zik7CisgICAgICAgIGNvbnZlcnRlci5vcmRlcihCeXRlT3JkZXIubmF0aXZlT3JkZXIoKSk7CisgICAgICAgIHJldHVybiBjb252ZXJ0ZXIuZ2V0U2hvcnQob2Zmc2V0KTsKKworICAgIH0KKworICAgIHByb3RlY3RlZCBieXRlW10gc2hvcnRUb0J5dGVBcnJheShzaG9ydCB2YWx1ZSkgeworICAgICAgICBCeXRlQnVmZmVyIGNvbnZlcnRlciA9IEJ5dGVCdWZmZXIuYWxsb2NhdGUoMik7CisgICAgICAgIGNvbnZlcnRlci5vcmRlcihCeXRlT3JkZXIubmF0aXZlT3JkZXIoKSk7CisgICAgICAgIHNob3J0IHNWYWx1ZSA9IChzaG9ydCkgdmFsdWU7CisgICAgICAgIGNvbnZlcnRlci5wdXRTaG9ydChzVmFsdWUpOworICAgICAgICByZXR1cm4gY29udmVydGVyLmFycmF5KCk7CisgICAgfQorCisgICAgcHJvdGVjdGVkIGJ5dGVbXSBjb25jYXRBcnJheXMoYnl0ZVtdLi4uIGFycmF5cykgeworICAgICAgICBpbnQgbGVuID0gMDsKKyAgICAgICAgZm9yIChieXRlW10gYSA6IGFycmF5cykgeworICAgICAgICAgICAgbGVuICs9IGEubGVuZ3RoOworICAgICAgICB9CisgICAgICAgIGJ5dGVbXSBiID0gbmV3IGJ5dGVbbGVuXTsKKworICAgICAgICBpbnQgb2ZmcyA9IDA7CisgICAgICAgIGZvciAoYnl0ZVtdIGEgOiBhcnJheXMpIHsKKyAgICAgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoYSwgMCwgYiwgb2ZmcywgYS5sZW5ndGgpOworICAgICAgICAgICAgb2ZmcyArPSBhLmxlbmd0aDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYjsKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL21lZGlhL2phdmEvYW5kcm9pZC9tZWRpYS9BdWRpb1NlcnZpY2UuamF2YSBiL21lZGlhL2phdmEvYW5kcm9pZC9tZWRpYS9BdWRpb1NlcnZpY2UuamF2YQppbmRleCAwOGZjNzgyLi45MjEyNzA4IDEwMDY0NAotLS0gYS9tZWRpYS9qYXZhL2FuZHJvaWQvbWVkaWEvQXVkaW9TZXJ2aWNlLmphdmEKKysrIGIvbWVkaWEvamF2YS9hbmRyb2lkL21lZGlhL0F1ZGlvU2VydmljZS5qYXZhCkBAIC0xMTAzLDE2ICsxMTAzLDIwIEBACiAgICAgcHJpdmF0ZSBCbHVldG9vdGhIZWFkc2V0LlNlcnZpY2VMaXN0ZW5lciBtQmx1ZXRvb3RoSGVhZHNldFNlcnZpY2VMaXN0ZW5lciA9CiAgICAgICAgIG5ldyBCbHVldG9vdGhIZWFkc2V0LlNlcnZpY2VMaXN0ZW5lcigpIHsKICAgICAgICAgcHVibGljIHZvaWQgb25TZXJ2aWNlQ29ubmVjdGVkKCkgewotICAgICAgICAgICAgaWYgKG1CbHVldG9vdGhIZWFkc2V0ICE9IG51bGwgJiYKLSAgICAgICAgICAgICAgICBtQmx1ZXRvb3RoSGVhZHNldC5nZXRTdGF0ZSgpID09IEJsdWV0b290aEhlYWRzZXQuU1RBVEVfQ09OTkVDVEVEKSB7Ci0gICAgICAgICAgICAgICAgbUJsdWV0b290aEhlYWRzZXRDb25uZWN0ZWQgPSB0cnVlOworICAgICAgICAgICAgaWYgKG1CbHVldG9vdGhIZWFkc2V0ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBCbHVldG9vdGhEZXZpY2UgZGV2aWNlID0gbUJsdWV0b290aEhlYWRzZXQuZ2V0Q3VycmVudEhlYWRzZXQoKTsKKyAgICAgICAgICAgICAgICBpZiAobUJsdWV0b290aEhlYWRzZXQuZ2V0U3RhdGUoZGV2aWNlKSA9PSBCbHVldG9vdGhIZWFkc2V0LlNUQVRFX0NPTk5FQ1RFRCkgeworICAgICAgICAgICAgICAgICAgICBtQmx1ZXRvb3RoSGVhZHNldENvbm5lY3RlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHB1YmxpYyB2b2lkIG9uU2VydmljZURpc2Nvbm5lY3RlZCgpIHsKLSAgICAgICAgICAgIGlmIChtQmx1ZXRvb3RoSGVhZHNldCAhPSBudWxsICYmCi0gICAgICAgICAgICAgICAgbUJsdWV0b290aEhlYWRzZXQuZ2V0U3RhdGUoKSA9PSBCbHVldG9vdGhIZWFkc2V0LlNUQVRFX0RJU0NPTk5FQ1RFRCkgewotICAgICAgICAgICAgICAgIG1CbHVldG9vdGhIZWFkc2V0Q29ubmVjdGVkID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgY2xlYXJBbGxTY29DbGllbnRzKCk7CisgICAgICAgICAgICBpZiAobUJsdWV0b290aEhlYWRzZXQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIEJsdWV0b290aERldmljZSBkZXZpY2UgPSBtQmx1ZXRvb3RoSGVhZHNldC5nZXRDdXJyZW50SGVhZHNldCgpOworICAgICAgICAgICAgICAgIGlmIChtQmx1ZXRvb3RoSGVhZHNldC5nZXRTdGF0ZShkZXZpY2UpID09IEJsdWV0b290aEhlYWRzZXQuU1RBVEVfRElTQ09OTkVDVEVEKSB7CisgICAgICAgICAgICAgICAgICAgIG1CbHVldG9vdGhIZWFkc2V0Q29ubmVjdGVkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGNsZWFyQWxsU2NvQ2xpZW50cygpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH07CkBAIC0xNjM0LDYgKzE2MzgsMTIgQEAKIAogICAgICAgICAgICAgICAgIGNhc2UgTVNHX01FRElBX1NFUlZFUl9TVEFSVEVEOgogICAgICAgICAgICAgICAgICAgICBMb2cuZShUQUcsICJNZWRpYSBzZXJ2ZXIgc3RhcnRlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gaW5kaWNhdGUgdG8gYXVkaW8gSEFMIHRoYXQgd2Ugc3RhcnQgdGhlIHJlY29uZmlndXJhdGlvbiBwaGFzZSBhZnRlciBhIG1lZGlhCisgICAgICAgICAgICAgICAgICAgIC8vIHNlcnZlciBjcmFzaAorICAgICAgICAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgTVNHX01FRElBX1NFUlZFUl9TVEFSVEVEIG1lc3NhZ2UgaXMgb25seSByZWNlaXZlZCB3aGVuIHRoZSBtZWRpYSBzZXJ2ZXIKKyAgICAgICAgICAgICAgICAgICAgLy8gcHJvY2VzcyByZXN0YXJ0cyBhZnRlciBhIGNyYXNoLCBub3QgdGhlIGZpcnN0IHRpbWUgaXQgaXMgc3RhcnRlZC4KKyAgICAgICAgICAgICAgICAgICAgQXVkaW9TeXN0ZW0uc2V0UGFyYW1ldGVycygicmVzdGFydGluZz10cnVlIik7CisKICAgICAgICAgICAgICAgICAgICAgLy8gUmVzdG9yZSBkZXZpY2UgY29ubmVjdGlvbiBzdGF0ZXMKICAgICAgICAgICAgICAgICAgICAgU2V0IHNldCA9IG1Db25uZWN0ZWREZXZpY2VzLmVudHJ5U2V0KCk7CiAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdG9yIGkgPSBzZXQuaXRlcmF0b3IoKTsKQEAgLTE2NjcsNiArMTY3Nyw5IEBACiAKICAgICAgICAgICAgICAgICAgICAgLy8gUmVzdG9yZSByaW5nZXIgbW9kZQogICAgICAgICAgICAgICAgICAgICBzZXRSaW5nZXJNb2RlSW50KGdldFJpbmdlck1vZGUoKSwgZmFsc2UpOworCisgICAgICAgICAgICAgICAgICAgIC8vIGluZGljYXRlIHRoZSBlbmQgb2YgcmVjb25maWd1cmF0aW9uIHBoYXNlIHRvIGF1ZGlvIEhBTAorICAgICAgICAgICAgICAgICAgICBBdWRpb1N5c3RlbS5zZXRQYXJhbWV0ZXJzKCJyZXN0YXJ0aW5nPWZhbHNlIik7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAgICAgY2FzZSBNU0dfUExBWV9TT1VORF9FRkZFQ1Q6CmRpZmYgLS1naXQgYS9tZWRpYS9qYXZhL2FuZHJvaWQvbWVkaWEvQXVkaW9UcmFjay5qYXZhIGIvbWVkaWEvamF2YS9hbmRyb2lkL21lZGlhL0F1ZGlvVHJhY2suamF2YQppbmRleCAxZThkNzJmLi4wNzljNDFmIDEwMDY0NAotLS0gYS9tZWRpYS9qYXZhL2FuZHJvaWQvbWVkaWEvQXVkaW9UcmFjay5qYXZhCisrKyBiL21lZGlhL2phdmEvYW5kcm9pZC9tZWRpYS9BdWRpb1RyYWNrLmphdmEKQEAgLTIxMCw2ICsyMTAsMTAgQEAKICAgICAgKiBAc2VlIEF1ZGlvRm9ybWF0I0VOQ09ESU5HX1BDTV8xNkJJVAogICAgICAqLwogICAgIHByaXZhdGUgaW50IG1BdWRpb0Zvcm1hdCA9IEF1ZGlvRm9ybWF0LkVOQ09ESU5HX1BDTV8xNkJJVDsKKyAgICAvKioKKyAgICAgKiBBdWRpbyBzZXNzaW9uIElECisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgbVNlc3Npb25JZCA9IDA7CiAKIAogICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQEAgLTI1OCw2ICsyNjIsNDggQEAKICAgICBwdWJsaWMgQXVkaW9UcmFjayhpbnQgc3RyZWFtVHlwZSwgaW50IHNhbXBsZVJhdGVJbkh6LCBpbnQgY2hhbm5lbENvbmZpZywgaW50IGF1ZGlvRm9ybWF0LAogICAgICAgICAgICAgaW50IGJ1ZmZlclNpemVJbkJ5dGVzLCBpbnQgbW9kZSkKICAgICB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIHsKKyAgICAgICAgdGhpcyhzdHJlYW1UeXBlLCBzYW1wbGVSYXRlSW5IeiwgY2hhbm5lbENvbmZpZywgYXVkaW9Gb3JtYXQsCisgICAgICAgICAgICAgICAgYnVmZmVyU2l6ZUluQnl0ZXMsIG1vZGUsIDApOworICAgIH0KKworICAgIC8qKgorICAgICAqIENsYXNzIGNvbnN0cnVjdG9yIHdpdGggYXVkaW8gc2Vzc2lvbi4gVXNlIHRoaXMgY29uc3RydWN0b3Igd2hlbiB0aGUgQXVkaW9UcmFjayBtdXN0IGJlCisgICAgICogYXR0YWNoZWQgdG8gYSBwYXJ0aWN1bGFyIGF1ZGlvIHNlc3Npb24uIFRoZSBwcmltYXJ5IHVzZSBvZiB0aGUgYXVkaW8gc2Vzc2lvbiBJRCBpcyB0bworICAgICAqIGFzc29jaWF0ZSBhdWRpbyBlZmZlY3RzIHRvIGEgcGFydGljdWxhciBpbnN0YW5jZSBvZiBBdWRpb1RyYWNrOiBpZiBhbiBhdWRpbyBzZXNzaW9uIElECisgICAgICogaXMgcHJvdmlkZWQgd2hlbiBjcmVhdGluZyBhbiBBdWRpb0VmZmVjdCwgdGhpcyBlZmZlY3Qgd2lsbCBiZSBhcHBsaWVkIG9ubHkgdG8gYXVkaW8gdHJhY2tzCisgICAgICogYW5kIG1lZGlhIHBsYXllcnMgaW4gdGhlIHNhbWUgc2Vzc2lvbiBhbmQgbm90IHRvIHRoZSBvdXRwdXQgbWl4LgorICAgICAqIFdoZW4gYW4gQXVkaW9UcmFjayBpcyBjcmVhdGVkIHdpdGhvdXQgc3BlY2lmeWluZyBhIHNlc3Npb24sIGl0IHdpbGwgY3JlYXRlIGl0cyBvd24gc2Vzc2lvbgorICAgICAqIHdoaWNoIGNhbiBiZSByZXRyZWl2ZWQgYnkgY2FsbGluZyB0aGUge0BsaW5rICNnZXRBdWRpb1Nlc3Npb25JZCgpfSBtZXRob2QuCisgICAgICogSWYgYSBzZXNzaW9uIElEIGlzIHByb3ZpZGVkLCB0aGlzIEF1ZGlvVHJhY2sgd2lsbCBzaGFyZSBlZmZlY3RzIGF0dGFjaGVkIHRvIHRoaXMgc2Vzc2lvbgorICAgICAqIHdpdGggYWxsIG90aGVyIG1lZGlhIHBsYXllcnMgb3IgYXVkaW8gdHJhY2tzIGluIHRoZSBzYW1lIHNlc3Npb24uCisgICAgICogQHBhcmFtIHN0cmVhbVR5cGUgdGhlIHR5cGUgb2YgdGhlIGF1ZGlvIHN0cmVhbS4gU2VlCisgICAgICogICB7QGxpbmsgQXVkaW9NYW5hZ2VyI1NUUkVBTV9WT0lDRV9DQUxMfSwge0BsaW5rIEF1ZGlvTWFuYWdlciNTVFJFQU1fU1lTVEVNfSwKKyAgICAgKiAgIHtAbGluayBBdWRpb01hbmFnZXIjU1RSRUFNX1JJTkd9LCB7QGxpbmsgQXVkaW9NYW5hZ2VyI1NUUkVBTV9NVVNJQ30gYW5kCisgICAgICogICB7QGxpbmsgQXVkaW9NYW5hZ2VyI1NUUkVBTV9BTEFSTX0KKyAgICAgKiBAcGFyYW0gc2FtcGxlUmF0ZUluSHogdGhlIHNhbXBsZSByYXRlIGV4cHJlc3NlZCBpbiBIZXJ0ei4gRXhhbXBsZXMgb2YgcmF0ZXMgYXJlIChidXQKKyAgICAgKiAgIG5vdCBsaW1pdGVkIHRvKSA0NDEwMCwgMjIwNTAgYW5kIDExMDI1LgorICAgICAqIEBwYXJhbSBjaGFubmVsQ29uZmlnIGRlc2NyaWJlcyB0aGUgY29uZmlndXJhdGlvbiBvZiB0aGUgYXVkaW8gY2hhbm5lbHMuCisgICAgICogICBTZWUge0BsaW5rIEF1ZGlvRm9ybWF0I0NIQU5ORUxfT1VUX01PTk99IGFuZAorICAgICAqICAge0BsaW5rIEF1ZGlvRm9ybWF0I0NIQU5ORUxfT1VUX1NURVJFT30KKyAgICAgKiBAcGFyYW0gYXVkaW9Gb3JtYXQgdGhlIGZvcm1hdCBpbiB3aGljaCB0aGUgYXVkaW8gZGF0YSBpcyByZXByZXNlbnRlZC4KKyAgICAgKiAgIFNlZSB7QGxpbmsgQXVkaW9Gb3JtYXQjRU5DT0RJTkdfUENNXzE2QklUfSBhbmQKKyAgICAgKiAgIHtAbGluayBBdWRpb0Zvcm1hdCNFTkNPRElOR19QQ01fOEJJVH0KKyAgICAgKiBAcGFyYW0gYnVmZmVyU2l6ZUluQnl0ZXMgdGhlIHRvdGFsIHNpemUgKGluIGJ5dGVzKSBvZiB0aGUgYnVmZmVyIHdoZXJlIGF1ZGlvIGRhdGEgaXMgcmVhZAorICAgICAqICAgZnJvbSBmb3IgcGxheWJhY2suIElmIHVzaW5nIHRoZSBBdWRpb1RyYWNrIGluIHN0cmVhbWluZyBtb2RlLCB5b3UgY2FuIHdyaXRlIGRhdGEgaW50bworICAgICAqICAgdGhpcyBidWZmZXIgaW4gc21hbGxlciBjaHVua3MgdGhhbiB0aGlzIHNpemUuIElmIHVzaW5nIHRoZSBBdWRpb1RyYWNrIGluIHN0YXRpYyBtb2RlLAorICAgICAqICAgdGhpcyBpcyB0aGUgbWF4aW11bSBzaXplIG9mIHRoZSBzb3VuZCB0aGF0IHdpbGwgYmUgcGxheWVkIGZvciB0aGlzIGluc3RhbmNlLgorICAgICAqICAgU2VlIHtAbGluayAjZ2V0TWluQnVmZmVyU2l6ZShpbnQsIGludCwgaW50KX0gdG8gZGV0ZXJtaW5lIHRoZSBtaW5pbXVtIHJlcXVpcmVkIGJ1ZmZlciBzaXplCisgICAgICogICBmb3IgdGhlIHN1Y2Nlc3NmdWwgY3JlYXRpb24gb2YgYW4gQXVkaW9UcmFjayBpbnN0YW5jZSBpbiBzdHJlYW1pbmcgbW9kZS4gVXNpbmcgdmFsdWVzCisgICAgICogICBzbWFsbGVyIHRoYW4gZ2V0TWluQnVmZmVyU2l6ZSgpIHdpbGwgcmVzdWx0IGluIGFuIGluaXRpYWxpemF0aW9uIGZhaWx1cmUuCisgICAgICogQHBhcmFtIG1vZGUgc3RyZWFtaW5nIG9yIHN0YXRpYyBidWZmZXIuIFNlZSB7QGxpbmsgI01PREVfU1RBVElDfSBhbmQge0BsaW5rICNNT0RFX1NUUkVBTX0KKyAgICAgKiBAcGFyYW0gc2Vzc2lvbklkIElkIG9mIGF1ZGlvIHNlc3Npb24gdGhlIEF1ZGlvVHJhY2sgbXVzdCBiZSBhdHRhY2hlZCB0bworICAgICAqIEB0aHJvd3MgamF2YS5sYW5nLklsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbgorICAgICAvLyBGSVhNRTogdW5oaWRlLgorICAgICAqIEBoaWRlCisgICAgICovCisgICAgcHVibGljIEF1ZGlvVHJhY2soaW50IHN0cmVhbVR5cGUsIGludCBzYW1wbGVSYXRlSW5IeiwgaW50IGNoYW5uZWxDb25maWcsIGludCBhdWRpb0Zvcm1hdCwKKyAgICAgICAgICAgIGludCBidWZmZXJTaXplSW5CeXRlcywgaW50IG1vZGUsIGludCBzZXNzaW9uSWQpCisgICAgdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiB7CiAgICAgICAgIG1TdGF0ZSA9IFNUQVRFX1VOSU5JVElBTElaRUQ7CiAgICAgICAgIAogICAgICAgICAvLyByZW1lbWJlciB3aGljaCBsb29wZXIgaXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBBdWRpb1RyYWNrIGluc3RhbmNpYXRpb24KQEAgLTI2OSwxNSArMzE1LDIzIEBACiAKICAgICAgICAgYXVkaW9CdWZmU2l6ZUNoZWNrKGJ1ZmZlclNpemVJbkJ5dGVzKTsKIAorICAgICAgICBpZiAoc2Vzc2lvbklkIDwgMCkgeworICAgICAgICAgICAgdGhyb3cgKG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgYXVkaW8gc2Vzc2lvbiBJRDogIitzZXNzaW9uSWQpKTsKKyAgICAgICAgfQorCisgICAgICAgIGludFtdIHNlc3Npb24gPSBuZXcgaW50WzFdOworICAgICAgICBzZXNzaW9uWzBdID0gc2Vzc2lvbklkOwogICAgICAgICAvLyBuYXRpdmUgaW5pdGlhbGl6YXRpb24KICAgICAgICAgaW50IGluaXRSZXN1bHQgPSBuYXRpdmVfc2V0dXAobmV3IFdlYWtSZWZlcmVuY2U8QXVkaW9UcmFjaz4odGhpcyksCiAgICAgICAgICAgICAgICAgbVN0cmVhbVR5cGUsIG1TYW1wbGVSYXRlLCBtQ2hhbm5lbHMsIG1BdWRpb0Zvcm1hdCwKLSAgICAgICAgICAgICAgICBtTmF0aXZlQnVmZmVyU2l6ZUluQnl0ZXMsIG1EYXRhTG9hZE1vZGUpOworICAgICAgICAgICAgICAgIG1OYXRpdmVCdWZmZXJTaXplSW5CeXRlcywgbURhdGFMb2FkTW9kZSwgc2Vzc2lvbik7CiAgICAgICAgIGlmIChpbml0UmVzdWx0ICE9IFNVQ0NFU1MpIHsKICAgICAgICAgICAgIGxvZ2UoIkVycm9yIGNvZGUgIitpbml0UmVzdWx0KyIgd2hlbiBpbml0aWFsaXppbmcgQXVkaW9UcmFjay4iKTsKICAgICAgICAgICAgIHJldHVybjsgLy8gd2l0aCBtU3RhdGUgPT0gU1RBVEVfVU5JTklUSUFMSVpFRAogICAgICAgICB9CiAKKyAgICAgICAgbVNlc3Npb25JZCA9IHNlc3Npb25bMF07CisKICAgICAgICAgaWYgKG1EYXRhTG9hZE1vZGUgPT0gTU9ERV9TVEFUSUMpIHsKICAgICAgICAgICAgIG1TdGF0ZSA9IFNUQVRFX05PX1NUQVRJQ19EQVRBOwogICAgICAgICB9IGVsc2UgewpAQCAtNTkwLDYgKzY0NCwxNyBAQAogICAgICAgICB9CiAgICAgfQogCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgYXVkaW8gc2Vzc2lvbiBJRC4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdGhlIElEIG9mIHRoZSBhdWRpbyBzZXNzaW9uIHRoaXMgQXVkaW9UcmFjayBiZWxvbmdzIHRvLgorICAgICAvLyBGSVhNRTogdW5oaWRlLgorICAgICAvLyBGSVhNRTogbGluayB0byBBdWRpb0VmZmVjdCBjbGFzcyB3aGVuIHB1YmxpYy4KKyAgICAgKiBAaGlkZQorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0QXVkaW9TZXNzaW9uSWQoKSB7CisgICAgICAgIHJldHVybiBtU2Vzc2lvbklkOworICAgIH0KIAogICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAvLyBJbml0aWFsaXphdGlvbiAvIGNvbmZpZ3VyYXRpb24KQEAgLTEwMTIsNyArMTA3Nyw3IEBACiAKICAgICBwcml2YXRlIG5hdGl2ZSBmaW5hbCBpbnQgbmF0aXZlX3NldHVwKE9iamVjdCBhdWRpb3RyYWNrX3RoaXMsCiAgICAgICAgICAgICBpbnQgc3RyZWFtVHlwZSwgaW50IHNhbXBsZVJhdGUsIGludCBuYkNoYW5uZWxzLCBpbnQgYXVkaW9Gb3JtYXQsCi0gICAgICAgICAgICBpbnQgYnVmZlNpemVJbkJ5dGVzLCBpbnQgbW9kZSk7CisgICAgICAgICAgICBpbnQgYnVmZlNpemVJbkJ5dGVzLCBpbnQgbW9kZSwgaW50W10gc2Vzc2lvbklkKTsKIAogICAgIHByaXZhdGUgbmF0aXZlIGZpbmFsIHZvaWQgbmF0aXZlX2ZpbmFsaXplKCk7CiAKQEAgLTEwNTYsNiArMTEyMSw3IEBACiAgICAgc3RhdGljIHByaXZhdGUgbmF0aXZlIGZpbmFsIGludCBuYXRpdmVfZ2V0X21pbl9idWZmX3NpemUoCiAgICAgICAgICAgICBpbnQgc2FtcGxlUmF0ZUluSHosIGludCBjaGFubmVsQ29uZmlnLCBpbnQgYXVkaW9Gb3JtYXQpOwogCisgICAgcHJpdmF0ZSBuYXRpdmUgZmluYWwgaW50IG5hdGl2ZV9nZXRfc2Vzc2lvbl9pZCgpOwogCiAgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICAvLyBVdGlsaXR5IG1ldGhvZHMKZGlmZiAtLWdpdCBhL21lZGlhL2phdmEvYW5kcm9pZC9tZWRpYS9CYXNzQm9vc3QuamF2YSBiL21lZGlhL2phdmEvYW5kcm9pZC9tZWRpYS9CYXNzQm9vc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjRjZTA1Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvamF2YS9hbmRyb2lkL21lZGlhL0Jhc3NCb29zdC5qYXZhCkBAIC0wLDAgKzEsMjEzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBhbmRyb2lkLm1lZGlhOworCitpbXBvcnQgYW5kcm9pZC5hcHAuQWN0aXZpdHk7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKK2ltcG9ydCBhbmRyb2lkLm9zLkJ1bmRsZTsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOworaW1wb3J0IGphdmEubmlvLkJ5dGVPcmRlcjsKK2ltcG9ydCBqYXZhLm5pby5CeXRlQnVmZmVyOworaW1wb3J0IGphdmEubmlvLkNoYXJCdWZmZXI7CisKK2ltcG9ydCBhbmRyb2lkLm1lZGlhLkF1ZGlvRWZmZWN0OworCisvKioKKyAqIEJhc3MgYm9vc3QgaXMgYW4gYXVkaW8gZWZmZWN0IHRvIGJvb3N0IG9yIGFtcGxpZnkgbG93IGZyZXF1ZW5jaWVzIG9mIHRoZSBzb3VuZC4gSXQgaXMgY29tcGFyYWJsZQorICogdG8gYW4gc2ltcGxlIGVxdWFsaXplciBidXQgbGltaXRlZCB0byBvbmUgYmFuZCBhbXBsaWZpY2F0aW9uIGluIHRoZSBsb3cgZnJlcXVlbmN5IHJhbmdlLgorICogPHA+QW4gYXBwbGljYXRpb24gY3JlYXRlcyBhIEJhc3NCb29zdCBvYmplY3QgdG8gaW5zdGFudGlhdGUgYW5kIGNvbnRyb2wgYSBiYXNzIGJvb3N0IGVuZ2luZQorICogaW4gdGhlIGF1ZGlvIGZyYW1ld29yay4KKyAqIDxwPlRoZSBtZXRob2RzLCBwYXJhbWV0ZXIgdHlwZXMgYW5kIHVuaXRzIGV4cG9zZWQgYnkgdGhlIEJhc3NCb29zdCBpbXBsZW1lbnRhdGlvbiBhcmUgZGlyZWN0bHkKKyAqIG1hcHBpbmcgdGhvc2UgZGVmaW5lZCBieSB0aGUgT3BlblNMIEVTIDEuMC4xIFNwZWNpZmljYXRpb24gKGh0dHA6Ly93d3cua2hyb25vcy5vcmcvb3BlbnNsZXMvKQorICogZm9yIHRoZSBTTEJhc3NCb29zdEl0ZiBpbnRlcmZhY2UuIFBsZWFzZSByZWZlciB0byB0aGlzIHNwZWNpZmljYXRpb24gZm9yIG1vcmUgZGV0YWlscy4KKyAqIDxwPlRvIGF0dGFjaCB0aGUgQmFzc0Jvb3N0IHRvIGEgcGFydGljdWxhciBBdWRpb1RyYWNrIG9yIE1lZGlhUGxheWVyLCBzcGVjaWZ5IHRoZSBhdWRpbyBzZXNzaW9uCisgKiBJRCBvZiB0aGlzIEF1ZGlvVHJhY2sgb3IgTWVkaWFQbGF5ZXIgd2hlbiBjb25zdHJ1Y3RpbmcgdGhlIEJhc3NCb29zdC4gSWYgdGhlIGF1ZGlvIHNlc3Npb24gSUQgMAorICogaXMgc3BlY2lmaWVkLCB0aGUgQmFzc0Jvb3N0IGFwcGxpZXMgdG8gdGhlIG1haW4gYXVkaW8gb3V0cHV0IG1peC4KKyAvLyBUT0RPIHdoZW4gQXVkaW9FZmZlY3QgaXMgdW5oaWRkZW4KKyAvLyA8cD4gU2VlIHtfYXRfbGluayBhbmRyb2lkLm1lZGlhLkF1ZGlvRWZmZWN0fSBjbGFzcyBmb3IgbW9yZSBkZXRhaWxzIG9uIGNvbnRyb2xsaW5nIGF1ZGlvIGVmZmVjdHMuCisgKgorICoge0BoaWRlIFBlbmRpbmcgQVBJIGNvdW5jaWwgcmV2aWV3fQorICovCisKK3B1YmxpYyBjbGFzcyBCYXNzQm9vc3QgZXh0ZW5kcyBBdWRpb0VmZmVjdCB7CisKKyAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBTdHJpbmcgVEFHID0gIkJhc3NCb29zdCI7CisKKyAgICAvLyBUaGVzZSBjb25zdGFudHMgbXVzdCBiZSBzeW5jaHJvbml6ZWQgd2l0aCB0aG9zZSBpbgorICAgIC8vIGZyYW1ld29ya3MvYmFzZS9pbmNsdWRlL21lZGlhL0VmZmVjdEJhc3NCb29zdEFwaS5oCisgICAgLyoqCisgICAgICogSXMgc3RyZW5ndGggcGFyYW1ldGVyIHN1cHBvcnRlZCBieSBiYXNzIGJvb3N0IGVuZ2luZS4gUGFyYW1ldGVyIElEIGZvciBnZXRQYXJhbWV0ZXIoKS4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBQQVJBTV9TVFJFTkdUSF9TVVBQT1JURUQgPSAwOworICAgIC8qKgorICAgICAqIEJhc3MgYm9vc3QgZWZmZWN0IHN0cmVuZ3RoLiBQYXJhbWV0ZXIgSUQgZm9yCisgICAgICoge0BsaW5rIGFuZHJvaWQubWVkaWEuQmFzc0Jvb3N0Lk9uUGFyYW1ldGVyQ2hhbmdlTGlzdGVuZXJ9CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUEFSQU1fU1RSRU5HVEggPSAxOworCisgICAgLyoqCisgICAgICogSW5kaWNhdGVzIGlmIHN0cmVuZ3RoIHBhcmFtZXRlciBpcyBzdXBwb3J0ZWQgYnkgdGhlIGJhc3MgYm9vc3QgZW5naW5lCisgICAgICovCisgICAgcHJpdmF0ZSBib29sZWFuIG1TdHJlbmd0aFN1cHBvcnRlZCA9IGZhbHNlOworCisgICAgLyoqCisgICAgICogUmVnaXN0ZXJlZCBsaXN0ZW5lciBmb3IgcGFyYW1ldGVyIGNoYW5nZXMuCisgICAgICovCisgICAgcHJpdmF0ZSBPblBhcmFtZXRlckNoYW5nZUxpc3RlbmVyIG1QYXJhbUxpc3RlbmVyID0gbnVsbDsKKworICAgIC8qKgorICAgICAqIExpc3RlbmVyIHVzZWQgaW50ZXJuYWxseSB0byB0byByZWNlaXZlIHJhdyBwYXJhbWV0ZXIgY2hhbmdlIGV2ZW50IGZyb20gQXVkaW9FZmZlY3Qgc3VwZXIgY2xhc3MKKyAgICAgKi8KKyAgICBwcml2YXRlIEJhc2VQYXJhbWV0ZXJMaXN0ZW5lciBtQmFzZVBhcmFtTGlzdGVuZXIgPSBudWxsOworCisgICAgLyoqCisgICAgICogTG9jayBmb3IgYWNjZXNzIHRvIG1QYXJhbUxpc3RlbmVyCisgICAgICovCisgICAgcHJpdmF0ZSBmaW5hbCBPYmplY3QgbVBhcmFtTGlzdGVuZXJMb2NrID0gbmV3IE9iamVjdCgpOworCisgICAgLyoqCisgICAgICogQ2xhc3MgY29uc3RydWN0b3IuCisgICAgICogQHBhcmFtIHByaW9yaXR5IHRoZSBwcmlvcml0eSBsZXZlbCByZXF1ZXN0ZWQgYnkgdGhlIGFwcGxpY2F0aW9uIGZvciBjb250cm9sbGluZyB0aGUgQmFzc0Jvb3N0CisgICAgICogZW5naW5lLiBBcyB0aGUgc2FtZSBlbmdpbmUgY2FuIGJlIHNoYXJlZCBieSBzZXZlcmFsIGFwcGxpY2F0aW9ucywgdGhpcyBwYXJhbWV0ZXIgaW5kaWNhdGVzCisgICAgICogaG93IG11Y2ggdGhlIHJlcXVlc3RpbmcgYXBwbGljYXRpb24gbmVlZHMgY29udHJvbCBvZiBlZmZlY3QgcGFyYW1ldGVycy4gVGhlIG5vcm1hbCBwcmlvcml0eQorICAgICAqIGlzIDAsIGFib3ZlIG5vcm1hbCBpcyBhIHBvc2l0aXZlIG51bWJlciwgYmVsb3cgbm9ybWFsIGEgbmVnYXRpdmUgbnVtYmVyLgorICAgICAqIEBwYXJhbSBhdWRpb1Nlc3Npb24gIFN5c3RlbSB3aWRlIHVuaXF1ZSBhdWRpbyBzZXNzaW9uIGlkZW50aWZpZXIuIElmIGF1ZGlvU2Vzc2lvbgorICAgICAqICBpcyBub3QgMCwgdGhlIEJhc3NCb29zdCB3aWxsIGJlIGF0dGFjaGVkIHRvIHRoZSBNZWRpYVBsYXllciBvciBBdWRpb1RyYWNrIGluIHRoZQorICAgICAqICBzYW1lIGF1ZGlvIHNlc3Npb24uIE90aGVyd2lzZSwgdGhlIEJhc3NCb29zdCB3aWxsIGFwcGx5IHRvIHRoZSBvdXRwdXQgbWl4LgorICAgICAqCisgICAgICogQHRocm93cyBqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uCisgICAgICogQHRocm93cyBqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uCisgICAgICogQHRocm93cyBqYXZhLmxhbmcuVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIGphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIEJhc3NCb29zdChpbnQgcHJpb3JpdHksIGludCBhdWRpb1Nlc3Npb24pCisgICAgdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiwgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uLAorICAgICAgICAgICBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiwgUnVudGltZUV4Y2VwdGlvbiB7CisgICAgICAgIHN1cGVyKEVGRkVDVF9UWVBFX0JBU1NfQk9PU1QsIEVGRkVDVF9UWVBFX05VTEwsIHByaW9yaXR5LCBhdWRpb1Nlc3Npb24pOworCisgICAgICAgIHNob3J0W10gdmFsdWUgPSBuZXcgc2hvcnRbMV07CisgICAgICAgIGNoZWNrU3RhdHVzKGdldFBhcmFtZXRlcihQQVJBTV9TVFJFTkdUSF9TVVBQT1JURUQsIHZhbHVlKSk7CisgICAgICAgIG1TdHJlbmd0aFN1cHBvcnRlZCA9ICh2YWx1ZVswXSAhPSAwKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJbmRpY2F0ZXMgd2hldGhlciBzZXR0aW5nIHN0cmVuZ3RoIGlzIHN1cHBvcnRlZC4gSWYgdGhpcyBtZXRob2QgcmV0dXJucyBmYWxzZSwgb25seSBvbmUKKyAgICAgKiBzdHJlbmd0aCBpcyBzdXBwb3J0ZWQgYW5kIHRoZSBzZXRTdHJlbmd0aCgpIG1ldGhvZCBhbHdheXMgcm91bmRzIHRvIHRoYXQgdmFsdWUuCisgICAgICogQHJldHVybiB0cnVlIGlzIHN0cmVuZ3RoIHBhcmFtZXRlciBpcyBzdXBwb3J0ZWQsIGZhbHNlIG90aGVyd2lzZQorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGdldFN0cmVuZ3RoU3VwcG9ydGVkKCkgeworICAgICAgIHJldHVybiBtU3RyZW5ndGhTdXBwb3J0ZWQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgc3RyZW5ndGggb2YgdGhlIGJhc3MgYm9vc3QgZWZmZWN0LiBJZiB0aGUgaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9ydCBwZXIgbWlsbGUKKyAgICAgKiBhY2N1cmFjeSBmb3Igc2V0dGluZyB0aGUgc3RyZW5ndGgsIGl0IGlzIGFsbG93ZWQgdG8gcm91bmQgdGhlIGdpdmVuIHN0cmVuZ3RoIHRvIHRoZSBuZWFyZXN0CisgICAgICogc3VwcG9ydGVkIHZhbHVlLiBZb3UgY2FuIHVzZSB0aGUge0BsaW5rICNnZXRSb3VuZGVkU3RyZW5ndGgoKX0gbWV0aG9kIHRvIHF1ZXJ5IHRoZQorICAgICAqIChwb3NzaWJseSByb3VuZGVkKSB2YWx1ZSB0aGF0IHdhcyBhY3R1YWxseSBzZXQuCisgICAgICogQHBhcmFtIHN0cmVuZ3RoIFN0cmVuZ3RoIG9mIHRoZSBlZmZlY3QuIFRoZSB2YWxpZCByYW5nZSBmb3Igc3RyZW5ndGggc3RyZW5ndGggaXMgWzAsIDEwMDBdLAorICAgICAqIHdoZXJlIDAgcGVyIG1pbGxlIGRlc2lnbmF0ZXMgdGhlIG1pbGRlc3QgZWZmZWN0IGFuZCAxMDAwIHBlciBtaWxsZSBkZXNpZ25hdGVzIHRoZSBzdHJvbmdlc3QuCisgICAgICogQHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbgorICAgICAqIEB0aHJvd3MgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRTdHJlbmd0aChzaG9ydCBzdHJlbmd0aCkKKyAgICB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uLCBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24sIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIHsKKyAgICAgICAgY2hlY2tTdGF0dXMoc2V0UGFyYW1ldGVyKFBBUkFNX1NUUkVOR1RILCBzdHJlbmd0aCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIGN1cnJlbnQgc3RyZW5ndGggb2YgdGhlIGVmZmVjdC4KKyAgICAgKiBAcmV0dXJuIFRoZSBzdHJlbmd0aCBvZiB0aGUgZWZmZWN0LiBUaGUgdmFsaWQgcmFuZ2UgZm9yIHN0cmVuZ3RoIGlzIFswLCAxMDAwXSwgd2hlcmUgMCBwZXIKKyAgICAgKiBtaWxsZSBkZXNpZ25hdGVzIHRoZSBtaWxkZXN0IGVmZmVjdCBhbmQgMTAwMCBwZXIgbWlsbGUgdGhlIHN0cm9uZ2VzdAorICAgICAqIEB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uCisgICAgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIHNob3J0IGdldFJvdW5kZWRTdHJlbmd0aCgpCisgICAgdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiwgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uLCBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiB7CisgICAgICAgIHNob3J0W10gdmFsdWUgPSBuZXcgc2hvcnRbMV07CisgICAgICAgIGNoZWNrU3RhdHVzKGdldFBhcmFtZXRlcihQQVJBTV9TVFJFTkdUSCwgdmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlWzBdOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRoZSBPblBhcmFtZXRlckNoYW5nZUxpc3RlbmVyIGludGVyZmFjZSBkZWZpbmVzIGEgbWV0aG9kIGNhbGxlZCBieSB0aGUgQmFzc0Jvb3N0IHdoZW4gYQorICAgICAqIHBhcmFtZXRlciB2YWx1ZSBoYXMgY2hhbmdlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50ZXJmYWNlIE9uUGFyYW1ldGVyQ2hhbmdlTGlzdGVuZXIgIHsKKyAgICAgICAgLyoqCisgICAgICAgICAqIE1ldGhvZCBjYWxsZWQgd2hlbiBhIHBhcmFtZXRlciB2YWx1ZSBoYXMgY2hhbmdlZC4gVGhlIG1ldGhvZCBpcyBjYWxsZWQgb25seSBpZiB0aGUKKyAgICAgICAgICogcGFyYW1ldGVyIHdhcyBjaGFuZ2VkIGJ5IGFub3RoZXIgYXBwbGljYXRpb24gaGF2aW5nIHRoZSBjb250cm9sIG9mIHRoZSBzYW1lCisgICAgICAgICAqIEJhc3NCb29zdCBlbmdpbmUuCisgICAgICAgICAqIEBwYXJhbSBlZmZlY3QgdGhlIEJhc3NCb29zdCBvbiB3aGljaCB0aGUgaW50ZXJmYWNlIGlzIHJlZ2lzdGVyZWQuCisgICAgICAgICAqIEBwYXJhbSBzdGF0dXMgc3RhdHVzIG9mIHRoZSBzZXQgcGFyYW1ldGVyIG9wZXJhdGlvbi4KKyAgICAgICAgIC8vIFRPRE8gd2hlbiBBdWRpb0VmZmVjdCBpcyB1bmhpZGRlbgorICAgICAgICAgLy8gU2VlIHtfYXRfbGluayBhbmRyb2lkLm1lZGlhLkF1ZGlvRWZmZWN0I3NldFBhcmFtZXRlcihieXRlW10sIGJ5dGVbXSl9LgorICAgICAgICAgKiBAcGFyYW0gcGFyYW0gSUQgb2YgdGhlIG1vZGlmaWVkIHBhcmFtZXRlci4gU2VlIHtAbGluayAjUEFSQU1fU1RSRU5HVEh9IC4uLgorICAgICAgICAgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyBwYXJhbWV0ZXIgdmFsdWUuCisgICAgICAgICAqLworICAgICAgICB2b2lkIG9uUGFyYW1ldGVyQ2hhbmdlKEJhc3NCb29zdCBlZmZlY3QsIGludCBzdGF0dXMsIGludCBwYXJhbSwgc2hvcnQgdmFsdWUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIExpc3RlbmVyIHVzZWQgaW50ZXJuYWxseSB0byByZWNlaXZlIHVuZm9ybWF0dGVkIHBhcmFtZXRlciBjaGFuZ2UgZXZlbnRzIGZyb20gQXVkaW9FZmZlY3QKKyAgICAgKiBzdXBlciBjbGFzcy4KKyAgICAgKi8KKyAgICBwcml2YXRlIGNsYXNzIEJhc2VQYXJhbWV0ZXJMaXN0ZW5lciBpbXBsZW1lbnRzIEF1ZGlvRWZmZWN0Lk9uUGFyYW1ldGVyQ2hhbmdlTGlzdGVuZXIgeworICAgICAgICBwcml2YXRlIEJhc2VQYXJhbWV0ZXJMaXN0ZW5lcigpIHsKKworICAgICAgICB9CisgICAgICAgIHB1YmxpYyB2b2lkIG9uUGFyYW1ldGVyQ2hhbmdlKEF1ZGlvRWZmZWN0IGVmZmVjdCwgaW50IHN0YXR1cywgYnl0ZVtdIHBhcmFtLCBieXRlW10gdmFsdWUpIHsKKyAgICAgICAgICAgIE9uUGFyYW1ldGVyQ2hhbmdlTGlzdGVuZXIgbCA9IG51bGw7CisKKyAgICAgICAgICAgIHN5bmNocm9uaXplZCAobVBhcmFtTGlzdGVuZXJMb2NrKSB7CisgICAgICAgICAgICAgICAgaWYgKG1QYXJhbUxpc3RlbmVyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgbCA9IG1QYXJhbUxpc3RlbmVyOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChsICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBpbnQgcCA9IC0xOworICAgICAgICAgICAgICAgIHNob3J0IHYgPSAtMTsKKworICAgICAgICAgICAgICAgIGlmIChwYXJhbS5sZW5ndGggPT0gNCkgeworICAgICAgICAgICAgICAgICAgICBwID0gYnl0ZUFycmF5VG9JbnQocGFyYW0sIDApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoID09IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgdiA9IGJ5dGVBcnJheVRvU2hvcnQodmFsdWUsIDApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAocCAhPSAtMSAmJiB2ICE9IC0xKSB7CisgICAgICAgICAgICAgICAgICAgIGwub25QYXJhbWV0ZXJDaGFuZ2UoQmFzc0Jvb3N0LnRoaXMsIHN0YXR1cywgcCwgdik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVnaXN0ZXJzIGFuIE9uUGFyYW1ldGVyQ2hhbmdlTGlzdGVuZXIgaW50ZXJmYWNlLgorICAgICAqIEBwYXJhbSBsaXN0ZW5lciBPblBhcmFtZXRlckNoYW5nZUxpc3RlbmVyIGludGVyZmFjZSByZWdpc3RlcmVkCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0UGFyYW1ldGVyTGlzdGVuZXIoT25QYXJhbWV0ZXJDaGFuZ2VMaXN0ZW5lciBsaXN0ZW5lcikgeworICAgICAgICBzeW5jaHJvbml6ZWQgKG1QYXJhbUxpc3RlbmVyTG9jaykgeworICAgICAgICAgICAgaWYgKG1QYXJhbUxpc3RlbmVyID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBtUGFyYW1MaXN0ZW5lciA9IGxpc3RlbmVyOworICAgICAgICAgICAgICAgIG1CYXNlUGFyYW1MaXN0ZW5lciA9IG5ldyBCYXNlUGFyYW1ldGVyTGlzdGVuZXIoKTsKKyAgICAgICAgICAgICAgICBzdXBlci5zZXRQYXJhbWV0ZXJMaXN0ZW5lcihtQmFzZVBhcmFtTGlzdGVuZXIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvbWVkaWEvamF2YS9hbmRyb2lkL21lZGlhL0NhbWNvcmRlclByb2ZpbGUuamF2YSBiL21lZGlhL2phdmEvYW5kcm9pZC9tZWRpYS9DYW1jb3JkZXJQcm9maWxlLmphdmEKaW5kZXggNjRkNjQ2MC4uYTI3ZGY1NyAxMDA2NDQKLS0tIGEvbWVkaWEvamF2YS9hbmRyb2lkL21lZGlhL0NhbWNvcmRlclByb2ZpbGUuamF2YQorKysgYi9tZWRpYS9qYXZhL2FuZHJvaWQvbWVkaWEvQ2FtY29yZGVyUHJvZmlsZS5qYXZhCkBAIC0xMTksMTUgKzExOSwyNiBAQAogICAgIHB1YmxpYyBpbnQgYXVkaW9DaGFubmVsczsKIAogICAgIC8qKgotICAgICAqIFJldHVybnMgdGhlIGNhbWNvcmRlciBwcm9maWxlIGZvciB0aGUgZ2l2ZW4gcXVhbGl0eSBsZXZlbC4KKyAgICAgKiBSZXR1cm5zIHRoZSBjYW1jb3JkZXIgcHJvZmlsZSBmb3IgdGhlIGRlZmF1bHQgY2FtZXJhIGF0IHRoZSBnaXZlbgorICAgICAqIHF1YWxpdHkgbGV2ZWwuCiAgICAgICogQHBhcmFtIHF1YWxpdHkgdGhlIHRhcmdldCBxdWFsaXR5IGxldmVsIGZvciB0aGUgY2FtY29yZGVyIHByb2ZpbGUKICAgICAgKi8KICAgICBwdWJsaWMgc3RhdGljIENhbWNvcmRlclByb2ZpbGUgZ2V0KGludCBxdWFsaXR5KSB7CisgICAgICAgIHJldHVybiBnZXQoMCwgcXVhbGl0eSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgY2FtY29yZGVyIHByb2ZpbGUgZm9yIHRoZSBnaXZlbiBjYW1lcmEgYXQgdGhlIGdpdmVuCisgICAgICogcXVhbGl0eSBsZXZlbC4KKyAgICAgKiBAcGFyYW0gY2FtZXJhSWQgdGhlIGlkIGZvciB0aGUgY2FtZXJhCisgICAgICogQHBhcmFtIHF1YWxpdHkgdGhlIHRhcmdldCBxdWFsaXR5IGxldmVsIGZvciB0aGUgY2FtY29yZGVyIHByb2ZpbGUKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIENhbWNvcmRlclByb2ZpbGUgZ2V0KGludCBjYW1lcmFJZCwgaW50IHF1YWxpdHkpIHsKICAgICAgICAgaWYgKHF1YWxpdHkgPCBRVUFMSVRZX0xPVyB8fCBxdWFsaXR5ID4gUVVBTElUWV9ISUdIKSB7CiAgICAgICAgICAgICBTdHJpbmcgZXJyTWVzc2FnZSA9ICJVbnN1cHBvcnRlZCBxdWFsaXR5IGxldmVsOiAiICsgcXVhbGl0eTsKICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oZXJyTWVzc2FnZSk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG5hdGl2ZV9nZXRfY2FtY29yZGVyX3Byb2ZpbGUocXVhbGl0eSk7CisgICAgICAgIHJldHVybiBuYXRpdmVfZ2V0X2NhbWNvcmRlcl9wcm9maWxlKGNhbWVyYUlkLCBxdWFsaXR5KTsKICAgICB9CiAKICAgICBzdGF0aWMgewpAQCAtMTY1LDUgKzE3Niw2IEBACiAKICAgICAvLyBNZXRob2RzIGltcGxlbWVudGVkIGJ5IEpOSQogICAgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSBmaW5hbCB2b2lkIG5hdGl2ZV9pbml0KCk7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIGZpbmFsIENhbWNvcmRlclByb2ZpbGUgbmF0aXZlX2dldF9jYW1jb3JkZXJfcHJvZmlsZShpbnQgcXVhbGl0eSk7CisgICAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIGZpbmFsIENhbWNvcmRlclByb2ZpbGUgbmF0aXZlX2dldF9jYW1jb3JkZXJfcHJvZmlsZSgKKyAgICAgICAgICAgIGludCBjYW1lcmFJZCwgaW50IHF1YWxpdHkpOwogfQpkaWZmIC0tZ2l0IGEvbWVkaWEvamF2YS9hbmRyb2lkL21lZGlhL0NhbWVyYVByb2ZpbGUuamF2YSBiL21lZGlhL2phdmEvYW5kcm9pZC9tZWRpYS9DYW1lcmFQcm9maWxlLmphdmEKaW5kZXggZjhkMzkzNS4uNmEwYmUwOCAxMDA2NDQKLS0tIGEvbWVkaWEvamF2YS9hbmRyb2lkL21lZGlhL0NhbWVyYVByb2ZpbGUuamF2YQorKysgYi9tZWRpYS9qYXZhL2FuZHJvaWQvbWVkaWEvQ2FtZXJhUHJvZmlsZS5qYXZhCkBAIC0xNyw2ICsxNyw3IEBACiBwYWNrYWdlIGFuZHJvaWQubWVkaWE7CiAKIGltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwogCiAvKioKICAqIFRoZSBDYW1lcmFQcm9maWxlIGNsYXNzIGlzIHVzZWQgdG8gcmV0cmlldmUgdGhlIHByZS1kZWZpbmVkIHN0aWxsIGltYWdlCkBAIC00MCwzNiArNDEsNTUgQEAKICAgICAvKgogICAgICAqIENhY2hlIHRoZSBKcGVnIGVuY29kaW5nIHF1YWxpdHkgcGFyYW1ldGVycwogICAgICAqLwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludFtdIHNKcGVnRW5jb2RpbmdRdWFsaXR5UGFyYW1ldGVyczsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBIYXNoTWFwPEludGVnZXIsIGludFtdPiBzQ2FjaGUgPSBuZXcgSGFzaE1hcDxJbnRlZ2VyLCBpbnRbXT4oKTsKIAogICAgIC8qKgogICAgICAqIFJldHVybnMgYSBwcmUtZGVmaW5lZCBzdGlsbCBpbWFnZSBjYXB0dXJlIChqcGVnKSBxdWFsaXR5IGxldmVsCi0gICAgICogdXNlZCBmb3IgdGhlIGdpdmVuIHF1YWxpdHkgbGV2ZWwgaW4gdGhlIENhbWVyYSBhcHBsaWNhdGlvbi4KKyAgICAgKiB1c2VkIGZvciB0aGUgZ2l2ZW4gcXVhbGl0eSBsZXZlbCBpbiB0aGUgQ2FtZXJhIGFwcGxpY2F0aW9uIGZvcgorICAgICAqIHRoZSBkZWZhdWx0IGNhbWVyYS4KICAgICAgKgogICAgICAqIEBwYXJhbSBxdWFsaXR5IFRoZSB0YXJnZXQgcXVhbGl0eSBsZXZlbAogICAgICAqLwogICAgIHB1YmxpYyBzdGF0aWMgaW50IGdldEpwZWdFbmNvZGluZ1F1YWxpdHlQYXJhbWV0ZXIoaW50IHF1YWxpdHkpIHsKKyAgICAgICAgcmV0dXJuIGdldEpwZWdFbmNvZGluZ1F1YWxpdHlQYXJhbWV0ZXIoMCwgcXVhbGl0eSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyBhIHByZS1kZWZpbmVkIHN0aWxsIGltYWdlIGNhcHR1cmUgKGpwZWcpIHF1YWxpdHkgbGV2ZWwKKyAgICAgKiB1c2VkIGZvciB0aGUgZ2l2ZW4gcXVhbGl0eSBsZXZlbCBpbiB0aGUgQ2FtZXJhIGFwcGxpY2F0aW9uIGZvcgorICAgICAqIHRoZSBzcGVjaWZpZWQgY2FtZXJhLgorICAgICAqCisgICAgICogQHBhcmFtIGNhbWVyYUlkIFRoZSBpZCBvZiB0aGUgY2FtZXJhCisgICAgICogQHBhcmFtIHF1YWxpdHkgVGhlIHRhcmdldCBxdWFsaXR5IGxldmVsCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBpbnQgZ2V0SnBlZ0VuY29kaW5nUXVhbGl0eVBhcmFtZXRlcihpbnQgY2FtZXJhSWQsIGludCBxdWFsaXR5KSB7CiAgICAgICAgIGlmIChxdWFsaXR5IDwgUVVBTElUWV9MT1cgfHwgcXVhbGl0eSA+IFFVQUxJVFlfSElHSCkgewogICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiVW5zdXBwb3J0ZWQgcXVhbGl0eSBsZXZlbDogIiArIHF1YWxpdHkpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBzSnBlZ0VuY29kaW5nUXVhbGl0eVBhcmFtZXRlcnNbcXVhbGl0eV07CisgICAgICAgIHN5bmNocm9uaXplZCAoc0NhY2hlKSB7CisgICAgICAgICAgICBpbnRbXSBsZXZlbHMgPSBzQ2FjaGUuZ2V0KGNhbWVyYUlkKTsKKyAgICAgICAgICAgIGlmIChsZXZlbHMgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGxldmVscyA9IGdldEltYWdlRW5jb2RpbmdRdWFsaXR5TGV2ZWxzKGNhbWVyYUlkKTsKKyAgICAgICAgICAgICAgICBzQ2FjaGUucHV0KGNhbWVyYUlkLCBsZXZlbHMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGxldmVsc1txdWFsaXR5XTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHN0YXRpYyB7CiAgICAgICAgIFN5c3RlbS5sb2FkTGlicmFyeSgibWVkaWFfam5pIik7CiAgICAgICAgIG5hdGl2ZV9pbml0KCk7Ci0gICAgICAgIHNKcGVnRW5jb2RpbmdRdWFsaXR5UGFyYW1ldGVycyA9IGdldEltYWdlRW5jb2RpbmdRdWFsaXR5TGV2ZWxzKCk7CiAgICAgfQogCi0gICAgcHJpdmF0ZSBzdGF0aWMgaW50W10gZ2V0SW1hZ2VFbmNvZGluZ1F1YWxpdHlMZXZlbHMoKSB7Ci0gICAgICAgIGludCBuTGV2ZWxzID0gbmF0aXZlX2dldF9udW1faW1hZ2VfZW5jb2RpbmdfcXVhbGl0eV9sZXZlbHMoKTsKKyAgICBwcml2YXRlIHN0YXRpYyBpbnRbXSBnZXRJbWFnZUVuY29kaW5nUXVhbGl0eUxldmVscyhpbnQgY2FtZXJhSWQpIHsKKyAgICAgICAgaW50IG5MZXZlbHMgPSBuYXRpdmVfZ2V0X251bV9pbWFnZV9lbmNvZGluZ19xdWFsaXR5X2xldmVscyhjYW1lcmFJZCk7CiAgICAgICAgIGlmIChuTGV2ZWxzICE9IFFVQUxJVFlfSElHSCArIDEpIHsKICAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJVbmV4cGVjdGVkIEpwZWcgZW5jb2RpbmcgcXVhbGl0eSBsZXZlbHMgIiArIG5MZXZlbHMpOwogICAgICAgICB9CiAKICAgICAgICAgaW50W10gbGV2ZWxzID0gbmV3IGludFtuTGV2ZWxzXTsKICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuTGV2ZWxzOyArK2kpIHsKLSAgICAgICAgICAgIGxldmVsc1tpXSA9IG5hdGl2ZV9nZXRfaW1hZ2VfZW5jb2RpbmdfcXVhbGl0eV9sZXZlbChpKTsKKyAgICAgICAgICAgIGxldmVsc1tpXSA9IG5hdGl2ZV9nZXRfaW1hZ2VfZW5jb2RpbmdfcXVhbGl0eV9sZXZlbChjYW1lcmFJZCwgaSk7CiAgICAgICAgIH0KICAgICAgICAgQXJyYXlzLnNvcnQobGV2ZWxzKTsgIC8vIExvd2VyIHF1YWxpdHkgbGV2ZWwgQUxXQVlTIGNvbWVzIGJlZm9yZSBoaWdoZXIgb25lCiAgICAgICAgIHJldHVybiBsZXZlbHM7CkBAIC03Nyw2ICs5Nyw2IEBACiAKICAgICAvLyBNZXRob2RzIGltcGxlbWVudGVkIGJ5IEpOSQogICAgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSBmaW5hbCB2b2lkIG5hdGl2ZV9pbml0KCk7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIGZpbmFsIGludCBuYXRpdmVfZ2V0X251bV9pbWFnZV9lbmNvZGluZ19xdWFsaXR5X2xldmVscygpOwotICAgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSBmaW5hbCBpbnQgbmF0aXZlX2dldF9pbWFnZV9lbmNvZGluZ19xdWFsaXR5X2xldmVsKGludCBpbmRleCk7CisgICAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIGZpbmFsIGludCBuYXRpdmVfZ2V0X251bV9pbWFnZV9lbmNvZGluZ19xdWFsaXR5X2xldmVscyhpbnQgY2FtZXJhSWQpOworICAgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSBmaW5hbCBpbnQgbmF0aXZlX2dldF9pbWFnZV9lbmNvZGluZ19xdWFsaXR5X2xldmVsKGludCBjYW1lcmFJZCwgaW50IGluZGV4KTsKIH0KZGlmZiAtLWdpdCBhL21lZGlhL2phdmEvYW5kcm9pZC9tZWRpYS9FbnZpcm9ubWVudGFsUmV2ZXJiLmphdmEgYi9tZWRpYS9qYXZhL2FuZHJvaWQvbWVkaWEvRW52aXJvbm1lbnRhbFJldmVyYi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4MjMwZmMKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9qYXZhL2FuZHJvaWQvbWVkaWEvRW52aXJvbm1lbnRhbFJldmVyYi5qYXZhCkBAIC0wLDAgKzEsNTA0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBhbmRyb2lkLm1lZGlhOworCitpbXBvcnQgYW5kcm9pZC5hcHAuQWN0aXZpdHk7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKK2ltcG9ydCBhbmRyb2lkLm9zLkJ1bmRsZTsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOworaW1wb3J0IGphdmEubmlvLkJ5dGVPcmRlcjsKK2ltcG9ydCBqYXZhLm5pby5CeXRlQnVmZmVyOworCitpbXBvcnQgYW5kcm9pZC5tZWRpYS5BdWRpb0VmZmVjdDsKKworLyoqCisgKiBBIHNvdW5kIGdlbmVyYXRlZCB3aXRoaW4gYSByb29tIHRyYXZlbHMgaW4gbWFueSBkaXJlY3Rpb25zLiBUaGUgbGlzdGVuZXIgZmlyc3QgaGVhcnMgdGhlCisgKiBkaXJlY3Qgc291bmQgZnJvbSB0aGUgc291cmNlIGl0c2VsZi4gTGF0ZXIsIGhlIG9yIHNoZSBoZWFycyBkaXNjcmV0ZSBlY2hvZXMgY2F1c2VkIGJ5IHNvdW5kCisgKiBib3VuY2luZyBvZmYgbmVhcmJ5IHdhbGxzLCB0aGUgY2VpbGluZyBhbmQgdGhlIGZsb29yLiBBcyBzb3VuZCB3YXZlcyBhcnJpdmUgYWZ0ZXIKKyAqIHVuZGVyZ29pbmcgbW9yZSBhbmQgbW9yZSByZWZsZWN0aW9ucywgaW5kaXZpZHVhbCByZWZsZWN0aW9ucyBiZWNvbWUgaW5kaXN0aW5ndWlzaGFibGUgYW5kCisgKiB0aGUgbGlzdGVuZXIgaGVhcnMgY29udGludW91cyByZXZlcmJlcmF0aW9uIHRoYXQgZGVjYXlzIG92ZXIgdGltZS4KKyAqIFJldmVyYiBpcyB2aXRhbCBmb3IgbW9kZWxpbmcgYSBsaXN0ZW5lcidzIGVudmlyb25tZW50LiBJdCBjYW4gYmUgdXNlZCBpbiBtdXNpYyBhcHBsaWNhdGlvbnMKKyAqIHRvIHNpbXVsYXRlIG11c2ljIGJlaW5nIHBsYXllZCBiYWNrIGluIHZhcmlvdXMgZW52aXJvbm1lbnRzLCBvciBpbiBnYW1lcyB0byBpbW1lcnNlIHRoZQorICogbGlzdGVuZXIgd2l0aGluIHRoZSBnYW1lJ3MgZW52aXJvbm1lbnQuCisgKiBUaGUgRW52aXJvbm1lbnRhbFJldmVyYiBjbGFzcyBhbGxvd3MgYW4gYXBwbGljYXRpb24gdG8gY29udHJvbCBlYWNoIHJldmVyYiBlbmdpbmUgcHJvcGVydHkgaW4gYQorICogZ2xvYmFsIHJldmVyYiBlbnZpcm9ubWVudCBhbmQgaXMgbW9yZSBzdWl0YWJsZSBmb3IgZ2FtZXMuIEZvciBiYXNpYyBjb250cm9sLCBtb3JlIHN1aXRhYmxlIGZvcgorICogbXVzaWMgYXBwbGljYXRpb25zLCBpdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgdGhlCisgLy8gVE9ETyB3aGVuIFByZXNldFJldmVyYiBpcyB1bmhpZGRlbgorIC8vIHtfYXRfbGluayBhbmRyb2lkLm1lZGlhLlByZXNldFJldmVyYn0gY2xhc3MuCisgKiA8cD5BbiBhcHBsaWNhdGlvbiBjcmVhdGVzIGEgRW52aXJvbm1lbnRhbFJldmVyYiBvYmplY3QgdG8gaW5zdGFudGlhdGUgYW5kIGNvbnRyb2wgYSByZXZlcmIgZW5naW5lCisgKiBpbiB0aGUgYXVkaW8gZnJhbWV3b3JrLgorICogPHA+VGhlIG1ldGhvZHMsIHBhcmFtZXRlciB0eXBlcyBhbmQgdW5pdHMgZXhwb3NlZCBieSB0aGUgRW52aXJvbm1lbnRhbFJldmVyYiBpbXBsZW1lbnRhdGlvbiBhcmUKKyAqIGRpcmVjdGx5IG1hcHBpbmcgdGhvc2UgZGVmaW5lZCBieSB0aGUgT3BlblNMIEVTIDEuMC4xIFNwZWNpZmljYXRpb24KKyAqIChodHRwOi8vd3d3Lmtocm9ub3Mub3JnL29wZW5zbGVzLykgZm9yIHRoZSBTTEVudmlyb25tZW50YWxSZXZlcmJJdGYgaW50ZXJmYWNlLgorICogUGxlYXNlIHJlZmVyIHRvIHRoaXMgc3BlY2lmaWNhdGlvbiBmb3IgbW9yZSBkZXRhaWxzLgorICogPHA+VGhlIEVudmlyb25tZW50YWxSZXZlcmIgaXMgYW4gb3V0cHV0IG1peCBhdXhpbGlhcnkgZWZmZWN0IGFuZCBzaG91bGQgYmUgY3JlYXRlZCBvbgorICogQXVkaW8gc2Vzc2lvbiAwLiBJbiBvcmRlciBmb3IgYSBNZWRpYVBsYXllciBvciBBdWRpb1RyYWNrIHRvIGJlIGZlZCBpbnRvIHRoaXMgZWZmZWN0LAorICogdGhleSBtdXN0IGJlIGV4cGxpY2l0ZWx5IGF0dGFjaGVkIHRvIGl0IGFuZCBhIHNlbmQgbGV2ZWwgbXVzdCBiZSBzcGVjaWZpZWQuIFVzZSB0aGUgZWZmZWN0IElECisgKiByZXR1cm5lZCBieSBnZXRJZCgpIG1ldGhvZCB0byBkZXNpZ25hdGUgdGhpcyBwYXJ0aWN1bGFyIGVmZmVjdCB3aGVuIGF0dGFjaGluZyBpdCB0byB0aGUKKyAqIE1lZGlhUGxheWVyIG9yIEF1ZGlvVHJhY2suCisgLy8gVE9ETyB3aGVuIEF1ZGlvRWZmZWN0IGlzIHVuaGlkZGVuCisgLy8gPHA+IFNlZSB7X2F0X2xpbmsgYW5kcm9pZC5tZWRpYS5BdWRpb0VmZmVjdH0gY2xhc3MgZm9yIG1vcmUgZGV0YWlscyBvbiBjb250cm9sbGluZworICogYXVkaW8gZWZmZWN0cy4KKyAqCisgKiB7QGhpZGUgUGVuZGluZyBBUEkgY291bmNpbCByZXZpZXd9CisgKi8KKworcHVibGljIGNsYXNzIEVudmlyb25tZW50YWxSZXZlcmIgZXh0ZW5kcyBBdWRpb0VmZmVjdCB7CisKKyAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBTdHJpbmcgVEFHID0gIkVudmlyb25tZW50YWxSZXZlcmIiOworCisgICAgLy8gVGhlc2UgY29uc3RhbnRzIG11c3QgYmUgc3luY2hyb25pemVkIHdpdGggdGhvc2UgaW4KKyAgICAvLyBmcmFtZXdvcmtzL2Jhc2UvaW5jbHVkZS9tZWRpYS9FZmZlY3RFbnZpcm9ubWVudGFsUmV2ZXJiQXBpLmgKKworICAgIC8qKgorICAgICAqIFJvb20gbGV2ZWwuIFBhcmFtZXRlciBJRCBmb3IKKyAgICAgKiB7QGxpbmsgYW5kcm9pZC5tZWRpYS5FbnZpcm9ubWVudGFsUmV2ZXJiLk9uUGFyYW1ldGVyQ2hhbmdlTGlzdGVuZXJ9CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUEFSQU1fUk9PTV9MRVZFTCA9IDA7CisgICAgLyoqCisgICAgICogUm9vbSBIRiBsZXZlbC4gUGFyYW1ldGVyIElEIGZvciBPblBhcmFtZXRlckNoYW5nZUxpc3RlbmVyCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUEFSQU1fUk9PTV9IRl9MRVZFTCA9IDE7CisgICAgLyoqCisgICAgICogRGVjYXkgdGltZS4gUGFyYW1ldGVyIElEIGZvciBPblBhcmFtZXRlckNoYW5nZUxpc3RlbmVyCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUEFSQU1fREVDQVlfVElNRSA9IDI7CisgICAgLyoqCisgICAgICogRGVjYXkgSEYgcmF0aW8uIFBhcmFtZXRlciBJRCBmb3IgT25QYXJhbWV0ZXJDaGFuZ2VMaXN0ZW5lcgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBBUkFNX0RFQ0FZX0hGX1JBVElPID0gMzsKKyAgICAvKioKKyAgICAgKiBFYXJseSByZWZsZWN0aW9ucyBsZXZlbC4gUGFyYW1ldGVyIElEIGZvciBPblBhcmFtZXRlckNoYW5nZUxpc3RlbmVyCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUEFSQU1fUkVGTEVDVElPTlNfTEVWRUwgPSA0OworICAgIC8qKgorICAgICAqIEVhcmx5IHJlZmxlY3Rpb25zIGRlbGF5LiBQYXJhbWV0ZXIgSUQgZm9yIE9uUGFyYW1ldGVyQ2hhbmdlTGlzdGVuZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBQQVJBTV9SRUZMRUNUSU9OU19ERUxBWSA9IDU7CisgICAgLyoqCisgICAgICogUmV2ZXJiIGxldmVsLiBQYXJhbWV0ZXIgSUQgZm9yIE9uUGFyYW1ldGVyQ2hhbmdlTGlzdGVuZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBQQVJBTV9SRVZFUkJfTEVWRUwgPSA2OworICAgIC8qKgorICAgICAqIFJldmVyYiBkZWxheS4gUGFyYW1ldGVyIElEIGZvciBPblBhcmFtZXRlckNoYW5nZUxpc3RlbmVyCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUEFSQU1fUkVWRVJCX0RFTEFZID0gNzsKKyAgICAvKioKKyAgICAgKiBEaWZmdXNpb24uIFBhcmFtZXRlciBJRCBmb3IgT25QYXJhbWV0ZXJDaGFuZ2VMaXN0ZW5lcgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBBUkFNX0RJRkZVU0lPTiA9IDg7CisgICAgLyoqCisgICAgICogRGVuc2l0eS4gUGFyYW1ldGVyIElEIGZvciBPblBhcmFtZXRlckNoYW5nZUxpc3RlbmVyCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUEFSQU1fREVOU0lUWSA9IDk7CisKKyAgICAvKioKKyAgICAgKiBSZWdpc3RlcmVkIGxpc3RlbmVyIGZvciBwYXJhbWV0ZXIgY2hhbmdlcworICAgICAqLworICAgIHByaXZhdGUgT25QYXJhbWV0ZXJDaGFuZ2VMaXN0ZW5lciBtUGFyYW1MaXN0ZW5lciA9IG51bGw7CisKKyAgICAvKioKKyAgICAgKiBMaXN0ZW5lciB1c2VkIGludGVybmFsbHkgdG8gdG8gcmVjZWl2ZSByYXcgcGFyYW1ldGVyIGNoYW5nZSBldmVudCBmcm9tIEF1ZGlvRWZmZWN0IHN1cGVyCisgICAgICogY2xhc3MKKyAgICAgKi8KKyAgICBwcml2YXRlIEJhc2VQYXJhbWV0ZXJMaXN0ZW5lciBtQmFzZVBhcmFtTGlzdGVuZXIgPSBudWxsOworCisgICAgLyoqCisgICAgICogTG9jayBmb3IgYWNjZXNzIHRvIG1QYXJhbUxpc3RlbmVyCisgICAgICovCisgICAgcHJpdmF0ZSBmaW5hbCBPYmplY3QgbVBhcmFtTGlzdGVuZXJMb2NrID0gbmV3IE9iamVjdCgpOworCisgICAgLyoqCisgICAgICogQ2xhc3MgY29uc3RydWN0b3IuCisgICAgICogQHBhcmFtIHByaW9yaXR5IHRoZSBwcmlvcml0eSBsZXZlbCByZXF1ZXN0ZWQgYnkgdGhlIGFwcGxpY2F0aW9uIGZvciBjb250cm9sbGluZyB0aGUKKyAgICAgKiBFbnZpcm9ubWVudGFsUmV2ZXJiIGVuZ2luZS4gQXMgdGhlIHNhbWUgZW5naW5lIGNhbiBiZSBzaGFyZWQgYnkgc2V2ZXJhbCBhcHBsaWNhdGlvbnMsIHRoaXMKKyAgICAgKiBwYXJhbWV0ZXIgaW5kaWNhdGVzIGhvdyBtdWNoIHRoZSByZXF1ZXN0aW5nIGFwcGxpY2F0aW9uIG5lZWRzIGNvbnRyb2wgb2YgZWZmZWN0IHBhcmFtZXRlcnMuCisgICAgICogVGhlIG5vcm1hbCBwcmlvcml0eSBpcyAwLCBhYm92ZSBub3JtYWwgaXMgYSBwb3NpdGl2ZSBudW1iZXIsIGJlbG93IG5vcm1hbCBhIG5lZ2F0aXZlIG51bWJlci4KKyAgICAgKiBAcGFyYW0gYXVkaW9TZXNzaW9uICBTeXN0ZW0gd2lkZSB1bmlxdWUgYXVkaW8gc2Vzc2lvbiBpZGVudGlmaWVyLiBJZiBhdWRpb1Nlc3Npb24KKyAgICAgKiAgaXMgbm90IDAsIHRoZSBFbnZpcm9ubWVudGFsUmV2ZXJiIHdpbGwgYmUgYXR0YWNoZWQgdG8gdGhlIE1lZGlhUGxheWVyIG9yIEF1ZGlvVHJhY2sgaW4gdGhlCisgICAgICogIHNhbWUgYXVkaW8gc2Vzc2lvbi4gT3RoZXJ3aXNlLCB0aGUgRW52aXJvbm1lbnRhbFJldmVyYiB3aWxsIGFwcGx5IHRvIHRoZSBvdXRwdXQgbWl4LgorICAgICAqICBBcyB0aGUgRW52aXJvbm1lbnRhbFJldmVyYiBpcyBhbiBhdXhpbGlhcnkgZWZmZWN0IGl0IGlzIHJlY29tbWVuZGVkIHRvIGluc3RhbnRpYXRlIGl0IG9uCisgICAgICogIGF1ZGlvIHNlc3Npb24gMCBhbmQgdG8gYXR0YWNoIGl0IHRvIHRoZSBNZWRpYVBMYXllciBhdXhpbGlhcnkgb3V0cHV0LgorICAgICAqCisgICAgICogQHRocm93cyBqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uCisgICAgICogQHRocm93cyBqYXZhLmxhbmcuVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIGphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIEVudmlyb25tZW50YWxSZXZlcmIoaW50IHByaW9yaXR5LCBpbnQgYXVkaW9TZXNzaW9uKQorICAgIHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24sIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uLCBSdW50aW1lRXhjZXB0aW9uIHsKKyAgICAgICAgc3VwZXIoRUZGRUNUX1RZUEVfRU5WX1JFVkVSQiwgRUZGRUNUX1RZUEVfTlVMTCwgcHJpb3JpdHksIGF1ZGlvU2Vzc2lvbik7CisgICAgICAgIExvZy5lKFRBRywgImNvbnRydWN0b3IiKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBtYXN0ZXIgdm9sdW1lIGxldmVsIG9mIHRoZSBlbnZpcm9ubWVudGFsIHJldmVyYiBlZmZlY3QuCisgICAgICogQHBhcmFtIHJvb20gUm9vbSBsZXZlbCBpbiBtaWxsaWJlbHMuIFRoZSB2YWxpZCByYW5nZSBpcyBbLTkwMDAsIDBdLgorICAgICAqIEB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uCisgICAgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0Um9vbUxldmVsKHNob3J0IHJvb20pCisgICAgdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiwgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uLCBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiB7CisgICAgICAgIGJ5dGVbXSBwYXJhbSA9IHNob3J0VG9CeXRlQXJyYXkocm9vbSk7CisgICAgICAgIGNoZWNrU3RhdHVzKHNldFBhcmFtZXRlcihQQVJBTV9ST09NX0xFVkVMLCBwYXJhbSkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIG1hc3RlciB2b2x1bWUgbGV2ZWwgb2YgdGhlIGVudmlyb25tZW50YWwgcmV2ZXJiIGVmZmVjdC4KKyAgICAgKiBAcmV0dXJuIHRoZSByb29tIGxldmVsIGluIG1pbGxpYmVscy4KKyAgICAgKiBAdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbgorICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uCisgICAgICogQHRocm93cyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyBzaG9ydCBnZXRSb29tTGV2ZWwoKQorICAgIHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24sIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiwgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24geworICAgICAgICBieXRlW10gcGFyYW0gPSBuZXcgYnl0ZVsyXTsKKyAgICAgICAgY2hlY2tTdGF0dXMoZ2V0UGFyYW1ldGVyKFBBUkFNX1JPT01fTEVWRUwsIHBhcmFtKSk7CisgICAgICAgIHJldHVybiBieXRlQXJyYXlUb1Nob3J0KHBhcmFtKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSB2b2x1bWUgbGV2ZWwgYXQgNSBrSHogcmVsYXRpdmUgdG8gdGhlIHZvbHVtZSBsZXZlbCBhdCBsb3cgZnJlcXVlbmNpZXMgb2YgdGhlCisgICAgICogb3ZlcmFsbCByZXZlcmIgZWZmZWN0LgorICAgICAqIDxwPlRoaXMgY29udHJvbHMgYSBsb3ctcGFzcyBmaWx0ZXIgdGhhdCB3aWxsIHJlZHVjZSB0aGUgbGV2ZWwgb2YgdGhlIGhpZ2gtZnJlcXVlbmN5LgorICAgICAqIEBwYXJhbSByb29tSEYgSGlnaCBmcmVxdWVuY3kgYXR0ZW51YXRpb24gbGV2ZWwgaW4gbWlsbGliZWxzLiBUaGUgdmFsaWQgcmFuZ2UgaXMgWy05MDAwLCAwXS4KKyAgICAgKiBAdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbgorICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uCisgICAgICogQHRocm93cyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFJvb21IRkxldmVsKHNob3J0IHJvb21IRikKKyAgICB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uLCBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24sIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIHsKKyAgICAgICAgYnl0ZVtdIHBhcmFtID0gc2hvcnRUb0J5dGVBcnJheShyb29tSEYpOworICAgICAgICBjaGVja1N0YXR1cyhzZXRQYXJhbWV0ZXIoUEFSQU1fUk9PTV9IRl9MRVZFTCwgcGFyYW0pKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSByb29tIEhGIGxldmVsLgorICAgICAqIEByZXR1cm4gdGhlIHJvb20gSEYgbGV2ZWwgaW4gbWlsbGliZWxzLgorICAgICAqIEB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uCisgICAgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIHNob3J0IGdldFJvb21IRkxldmVsKCkKKyAgICB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uLCBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24sIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIHsKKyAgICAgICAgYnl0ZVtdIHBhcmFtID0gbmV3IGJ5dGVbMl07CisgICAgICAgIGNoZWNrU3RhdHVzKGdldFBhcmFtZXRlcihQQVJBTV9ST09NX0hGX0xFVkVMLCBwYXJhbSkpOworICAgICAgICByZXR1cm4gYnl0ZUFycmF5VG9TaG9ydChwYXJhbSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgdGltZSB0YWtlbiBmb3IgdGhlIGxldmVsIG9mIHJldmVyYmVyYXRpb24gdG8gZGVjYXkgYnkgNjAgZEIuCisgICAgICogQHBhcmFtIGRlY2F5VGltZSBEZWNheSB0aW1lIGluIG1pbGxpc2Vjb25kcy4gVGhlIHZhbGlkIHJhbmdlIGlzIFsxMDAsIDIwMDAwXS4KKyAgICAgKiBAdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbgorICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uCisgICAgICogQHRocm93cyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldERlY2F5VGltZShpbnQgZGVjYXlUaW1lKQorICAgIHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24sIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiwgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24geworICAgICAgICBieXRlW10gcGFyYW0gPSBpbnRUb0J5dGVBcnJheShkZWNheVRpbWUpOworICAgICAgICBjaGVja1N0YXR1cyhzZXRQYXJhbWV0ZXIoUEFSQU1fREVDQVlfVElNRSwgcGFyYW0pKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBkZWNheSB0aW1lLgorICAgICAqIEByZXR1cm4gdGhlIGRlY2F5IHRpbWUgaW4gbWlsbGlzZWNvbmRzLgorICAgICAqIEB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uCisgICAgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIGludCBnZXREZWNheVRpbWUoKQorICAgIHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24sIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiwgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24geworICAgICAgICBieXRlW10gcGFyYW0gPSBuZXcgYnl0ZVs0XTsKKyAgICAgICAgY2hlY2tTdGF0dXMoZ2V0UGFyYW1ldGVyKFBBUkFNX0RFQ0FZX1RJTUUsIHBhcmFtKSk7CisgICAgICAgIHJldHVybiBieXRlQXJyYXlUb0ludChwYXJhbSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgcmF0aW8gb2YgaGlnaCBmcmVxdWVuY3kgZGVjYXkgdGltZSAoYXQgNSBrSHopIHJlbGF0aXZlIHRvIHRoZSBkZWNheSB0aW1lIGF0IGxvdworICAgICAqIGZyZXF1ZW5jaWVzLgorICAgICAqIEBwYXJhbSBkZWNheUhGUmF0aW8gSGlnaCBmcmVxdWVuY3kgZGVjYXkgcmF0aW8gdXNpbmcgYSBwZXJtaWxsZSBzY2FsZS4gVGhlIHZhbGlkIHJhbmdlIGlzCisgICAgICogWzEwMCwgMjAwMF0uIEEgcmF0aW8gb2YgMTAwMCBpbmRpY2F0ZXMgdGhhdCBhbGwgZnJlcXVlbmNpZXMgZGVjYXkgYXQgdGhlIHNhbWUgcmF0ZS4KKyAgICAgKiBAdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbgorICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uCisgICAgICogQHRocm93cyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldERlY2F5SEZSYXRpbyhzaG9ydCBkZWNheUhGUmF0aW8pCisgICAgdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiwgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uLCBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiB7CisgICAgICAgIGJ5dGVbXSBwYXJhbSA9IHNob3J0VG9CeXRlQXJyYXkoZGVjYXlIRlJhdGlvKTsKKyAgICAgICAgY2hlY2tTdGF0dXMoc2V0UGFyYW1ldGVyKFBBUkFNX0RFQ0FZX0hGX1JBVElPLCBwYXJhbSkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIHJhdGlvIG9mIGhpZ2ggZnJlcXVlbmN5IGRlY2F5IHRpbWUgKGF0IDUga0h6KSByZWxhdGl2ZSB0byBsb3cgZnJlcXVlbmNpZXMuCisgICAgICogQHJldHVybiB0aGUgZGVjYXkgSEYgcmF0aW9uLiBTZWUge0BsaW5rICNzZXREZWNheUhGUmF0aW8oc2hvcnQpfSBmb3IgdW5pdHMuCisgICAgICogQHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbgorICAgICAqIEB0aHJvd3MgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgc2hvcnQgZ2V0RGVjYXlIRlJhdGlvKCkKKyAgICB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uLCBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24sIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIHsKKyAgICAgICAgYnl0ZVtdIHBhcmFtID0gbmV3IGJ5dGVbMl07CisgICAgICAgIGNoZWNrU3RhdHVzKGdldFBhcmFtZXRlcihQQVJBTV9ERUNBWV9IRl9SQVRJTywgcGFyYW0pKTsKKyAgICAgICAgcmV0dXJuIGJ5dGVBcnJheVRvU2hvcnQocGFyYW0pOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIHZvbHVtZSBsZXZlbCBvZiB0aGUgZWFybHkgcmVmbGVjdGlvbnMuCisgICAgICogPHA+VGhpcyBsZXZlbCBpcyBjb21iaW5lZCB3aXRoIHRoZSBvdmVyYWxsIHJvb20gbGV2ZWwKKyAgICAgKiAoc2V0IHVzaW5nIHtAbGluayAjc2V0Um9vbUxldmVsKHNob3J0KX0pLgorICAgICAqIEBwYXJhbSByZWZsZWN0aW9uc0xldmVsIFJlZmxlY3Rpb24gbGV2ZWwgaW4gbWlsbGliZWxzLiBUaGUgdmFsaWQgcmFuZ2UgaXMgWy05MDAwLCAxMDAwXS4KKyAgICAgKiBAdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbgorICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uCisgICAgICogQHRocm93cyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFJlZmxlY3Rpb25zTGV2ZWwoc2hvcnQgcmVmbGVjdGlvbnNMZXZlbCkKKyAgICB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uLCBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24sIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIHsKKyAgICAgICAgYnl0ZVtdIHBhcmFtID0gc2hvcnRUb0J5dGVBcnJheShyZWZsZWN0aW9uc0xldmVsKTsKKyAgICAgICAgY2hlY2tTdGF0dXMoc2V0UGFyYW1ldGVyKFBBUkFNX1JFRkxFQ1RJT05TX0xFVkVMLCBwYXJhbSkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIHZvbHVtZSBsZXZlbCBvZiB0aGUgZWFybHkgcmVmbGVjdGlvbnMuCisgICAgICogQHJldHVybiB0aGUgZWFybHkgcmVmbGVjdGlvbnMgbGV2ZWwgaW4gbWlsbGliZWxzLgorICAgICAqIEB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uCisgICAgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIHNob3J0IGdldFJlZmxlY3Rpb25zTGV2ZWwoKQorICAgIHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24sIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiwgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24geworICAgICAgICBieXRlW10gcGFyYW0gPSBuZXcgYnl0ZVsyXTsKKyAgICAgICAgY2hlY2tTdGF0dXMoZ2V0UGFyYW1ldGVyKFBBUkFNX1JFRkxFQ1RJT05TX0xFVkVMLCBwYXJhbSkpOworICAgICAgICByZXR1cm4gYnl0ZUFycmF5VG9TaG9ydChwYXJhbSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgZGVsYXkgdGltZSBmb3IgdGhlIGVhcmx5IHJlZmxlY3Rpb25zLgorICAgICAqIDxwPlRoaXMgbWV0aG9kIHNldHMgdGhlIHRpbWUgYmV0d2VlbiB3aGVuIHRoZSBkaXJlY3QgcGF0aCBpcyBoZWFyZCBhbmQgd2hlbiB0aGUgZmlyc3QKKyAgICAgKiByZWZsZWN0aW9uIGlzIGhlYXJkLgorICAgICAqIEBwYXJhbSByZWZsZWN0aW9uc0RlbGF5IFJlZmxlY3Rpb25zIGRlbGF5IGluIG1pbGxpc2Vjb25kcy4gVGhlIHZhbGlkIHJhbmdlIGlzIFswLCAzMDBdLgorICAgICAqIEB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uCisgICAgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0UmVmbGVjdGlvbnNEZWxheShpbnQgcmVmbGVjdGlvbnNEZWxheSkKKyAgICB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uLCBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24sIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIHsKKyAgICAgICAgYnl0ZVtdIHBhcmFtID0gaW50VG9CeXRlQXJyYXkocmVmbGVjdGlvbnNEZWxheSk7CisgICAgICAgIGNoZWNrU3RhdHVzKHNldFBhcmFtZXRlcihQQVJBTV9SRUZMRUNUSU9OU19ERUxBWSwgcGFyYW0pKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSByZWZsZWN0aW9ucyBkZWxheS4KKyAgICAgKiBAcmV0dXJuIHRoZSBlYXJseSByZWZsZWN0aW9ucyBkZWxheSBpbiBtaWxsaXNlY29uZHMuCisgICAgICogQHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbgorICAgICAqIEB0aHJvd3MgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldFJlZmxlY3Rpb25zRGVsYXkoKQorICAgIHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24sIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiwgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24geworICAgICAgICBieXRlW10gcGFyYW0gPSBuZXcgYnl0ZVs0XTsKKyAgICAgICAgY2hlY2tTdGF0dXMoZ2V0UGFyYW1ldGVyKFBBUkFNX1JFRkxFQ1RJT05TX0RFTEFZLCBwYXJhbSkpOworICAgICAgICByZXR1cm4gYnl0ZUFycmF5VG9JbnQocGFyYW0pOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIHZvbHVtZSBsZXZlbCBvZiB0aGUgbGF0ZSByZXZlcmJlcmF0aW9uLgorICAgICAqIDxwPlRoaXMgbGV2ZWwgaXMgY29tYmluZWQgd2l0aCB0aGUgb3ZlcmFsbCByb29tIGxldmVsIChzZXQgdXNpbmcge0BsaW5rICNzZXRSb29tTGV2ZWwoc2hvcnQpfSkuCisgICAgICogQHBhcmFtIHJldmVyYkxldmVsIFJldmVyYiBsZXZlbCBpbiBtaWxsaWJlbHMuIFRoZSB2YWxpZCByYW5nZSBpcyBbLTkwMDAsIDIwMDBdLgorICAgICAqIEB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uCisgICAgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0UmV2ZXJiTGV2ZWwoc2hvcnQgcmV2ZXJiTGV2ZWwpCisgICAgdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiwgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uLCBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiB7CisgICAgICAgIGJ5dGVbXSBwYXJhbSA9IHNob3J0VG9CeXRlQXJyYXkocmV2ZXJiTGV2ZWwpOworICAgICAgICBjaGVja1N0YXR1cyhzZXRQYXJhbWV0ZXIoUEFSQU1fUkVWRVJCX0xFVkVMLCBwYXJhbSkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIHJldmVyYiBsZXZlbC4KKyAgICAgKiBAcmV0dXJuIHRoZSByZXZlcmIgbGV2ZWwgaW4gbWlsbGliZWxzLgorICAgICAqIEB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uCisgICAgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIHNob3J0IGdldFJldmVyYkxldmVsKCkKKyAgICB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uLCBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24sIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIHsKKyAgICAgICAgYnl0ZVtdIHBhcmFtID0gbmV3IGJ5dGVbMl07CisgICAgICAgIGNoZWNrU3RhdHVzKGdldFBhcmFtZXRlcihQQVJBTV9SRVZFUkJfTEVWRUwsIHBhcmFtKSk7CisgICAgICAgIHJldHVybiBieXRlQXJyYXlUb1Nob3J0KHBhcmFtKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSB0aW1lIGJldHdlZW4gdGhlIGZpcnN0IHJlZmxlY3Rpb24gYW5kIHRoZSByZXZlcmJlcmF0aW9uLgorICAgICAqIEBwYXJhbSByZXZlcmJEZWxheSBSZXZlcmIgZGVsYXkgaW4gbWlsbGlzZWNvbmRzLiBUaGUgdmFsaWQgcmFuZ2UgaXMgWzAsIDEwMF0uCisgICAgICogQHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbgorICAgICAqIEB0aHJvd3MgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRSZXZlcmJEZWxheShpbnQgcmV2ZXJiRGVsYXkpCisgICAgdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiwgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uLCBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiB7CisgICAgICAgIGJ5dGVbXSBwYXJhbSA9IGludFRvQnl0ZUFycmF5KHJldmVyYkRlbGF5KTsKKyAgICAgICAgY2hlY2tTdGF0dXMoc2V0UGFyYW1ldGVyKFBBUkFNX1JFVkVSQl9ERUxBWSwgcGFyYW0pKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSByZXZlcmIgZGVsYXkuCisgICAgICogQHJldHVybiB0aGUgcmV2ZXJiIGRlbGF5IGluIG1pbGxpc2Vjb25kcy4KKyAgICAgKiBAdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbgorICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uCisgICAgICogQHRocm93cyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0UmV2ZXJiRGVsYXkoKQorICAgIHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24sIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiwgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24geworICAgICAgICBieXRlW10gcGFyYW0gPSBuZXcgYnl0ZVs0XTsKKyAgICAgICAgY2hlY2tTdGF0dXMoZ2V0UGFyYW1ldGVyKFBBUkFNX1JFVkVSQl9ERUxBWSwgcGFyYW0pKTsKKyAgICAgICAgcmV0dXJuIGJ5dGVBcnJheVRvSW50KHBhcmFtKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBlY2hvIGRlbnNpdHkgaW4gdGhlIGxhdGUgcmV2ZXJiZXJhdGlvbiBkZWNheS4KKyAgICAgKiA8cD5UaGUgc2NhbGUgc2hvdWxkIGFwcHJveGltYXRlbHkgbWFwIGxpbmVhcmx5IHRvIHRoZSBwZXJjZWl2ZWQgY2hhbmdlIGluIHJldmVyYmVyYXRpb24uCisgICAgICogQHBhcmFtIGRpZmZ1c2lvbiBEaWZmdXNpb24gc3BlY2lmaWVkIHVzaW5nIGEgcGVybWlsbGUgc2NhbGUuIFRoZSBkaWZmdXNpb24gdmFsaWQgcmFuZ2UgaXMKKyAgICAgKiBbMCwgMTAwMF0uIEEgdmFsdWUgb2YgMTAwMCBvL29vIGluZGljYXRlcyBhIHNtb290aCByZXZlcmJlcmF0aW9uIGRlY2F5LgorICAgICAqIFZhbHVlcyBiZWxvdyB0aGlzIGxldmVsIGdpdmUgYSBtb3JlIDxpPmdyYWlueTwvaT4gY2hhcmFjdGVyLgorICAgICAqIEB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uCisgICAgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0RGlmZnVzaW9uKHNob3J0IGRpZmZ1c2lvbikKKyAgICB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uLCBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24sIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIHsKKyAgICAgICAgYnl0ZVtdIHBhcmFtID0gc2hvcnRUb0J5dGVBcnJheShkaWZmdXNpb24pOworICAgICAgICBjaGVja1N0YXR1cyhzZXRQYXJhbWV0ZXIoUEFSQU1fRElGRlVTSU9OLCBwYXJhbSkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgZGlmZnVzaW9uIGxldmVsLgorICAgICAqIEByZXR1cm4gdGhlIGRpZmZ1c2lvbiBsZXZlbC4gU2VlIHtAbGluayAjc2V0RGlmZnVzaW9uKHNob3J0KX0gZm9yIHVuaXRzLgorICAgICAqIEB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uCisgICAgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIHNob3J0IGdldERpZmZ1c2lvbigpCisgICAgdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiwgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uLCBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiB7CisgICAgICAgIGJ5dGVbXSBwYXJhbSA9IG5ldyBieXRlWzJdOworICAgICAgICBjaGVja1N0YXR1cyhnZXRQYXJhbWV0ZXIoUEFSQU1fRElGRlVTSU9OLCBwYXJhbSkpOworICAgICAgICByZXR1cm4gYnl0ZUFycmF5VG9TaG9ydChwYXJhbSk7CisgICAgfQorCisKKyAgICAvKioKKyAgICAgKiBDb250cm9scyB0aGUgbW9kYWwgZGVuc2l0eSBvZiB0aGUgbGF0ZSByZXZlcmJlcmF0aW9uIGRlY2F5LgorICAgICAqIDxwPiBUaGUgc2NhbGUgc2hvdWxkIGFwcHJveGltYXRlbHkgbWFwIGxpbmVhcmx5IHRvIHRoZSBwZXJjZWl2ZWQgY2hhbmdlIGluIHJldmVyYmVyYXRpb24uCisgICAgICogQSBsb3dlciBkZW5zaXR5IGNyZWF0ZXMgYSBob2xsb3cgc291bmQgdGhhdCBpcyB1c2VmdWwgZm9yIHNpbXVsYXRpbmcgc21hbGwgcmV2ZXJiZXJhdGlvbgorICAgICAqIHNwYWNlcyBzdWNoIGFzIGJhdGhyb29tcy4KKyAgICAgKiBAcGFyYW0gZGVuc2l0eSBEZW5zaXR5IHNwZWNpZmllZCB1c2luZyBhIHBlcm1pbGxlIHNjYWxlLiBUaGUgdmFsaWQgcmFuZ2UgaXMgWzAsIDEwMDBdLgorICAgICAqIEEgdmFsdWUgb2YgMTAwMCBvL29vIGluZGljYXRlcyBhIG5hdHVyYWwgc291bmRpbmcgcmV2ZXJiZXJhdGlvbi4gVmFsdWVzIGJlbG93IHRoaXMgbGV2ZWwKKyAgICAgKiBwcm9kdWNlIGEgbW9yZSBjb2xvcmVkIGVmZmVjdC4KKyAgICAgKiBAdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbgorICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uCisgICAgICogQHRocm93cyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldERlbnNpdHkoc2hvcnQgZGVuc2l0eSkKKyAgICB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uLCBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24sIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIHsKKyAgICAgICAgYnl0ZVtdIHBhcmFtID0gc2hvcnRUb0J5dGVBcnJheShkZW5zaXR5KTsKKyAgICAgICAgY2hlY2tTdGF0dXMoc2V0UGFyYW1ldGVyKFBBUkFNX0RFTlNJVFksIHBhcmFtKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgZGVuc2l0eSBsZXZlbC4KKyAgICAgKiBAcmV0dXJuIHRoZSBkZW5zaXR5IGxldmVsLiBTZWUge0BsaW5rICNzZXREaWZmdXNpb24oc2hvcnQpfSBmb3IgdW5pdHMuCisgICAgICogQHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbgorICAgICAqIEB0aHJvd3MgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgc2hvcnQgZ2V0RGVuc2l0eSgpCisgICAgdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiwgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uLCBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiB7CisgICAgICAgIGJ5dGVbXSBwYXJhbSA9IG5ldyBieXRlWzJdOworICAgICAgICBjaGVja1N0YXR1cyhnZXRQYXJhbWV0ZXIoUEFSQU1fREVOU0lUWSwgcGFyYW0pKTsKKyAgICAgICAgcmV0dXJuIGJ5dGVBcnJheVRvU2hvcnQocGFyYW0pOworICAgIH0KKworCisgICAgLyoqCisgICAgICogVGhlIE9uUGFyYW1ldGVyQ2hhbmdlTGlzdGVuZXIgaW50ZXJmYWNlIGRlZmluZXMgYSBtZXRob2QgY2FsbGVkIGJ5IHRoZSBFbnZpcm9ubWVudGFsUmV2ZXJiCisgICAgICogd2hlbiBhIHBhcmFtZXRlciB2YWx1ZSBoYXMgY2hhbmdlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50ZXJmYWNlIE9uUGFyYW1ldGVyQ2hhbmdlTGlzdGVuZXIgIHsKKyAgICAgICAgLyoqCisgICAgICAgICAqIE1ldGhvZCBjYWxsZWQgd2hlbiBhIHBhcmFtZXRlciB2YWx1ZSBoYXMgY2hhbmdlZC4gVGhlIG1ldGhvZCBpcyBjYWxsZWQgb25seSBpZiB0aGUKKyAgICAgICAgICogcGFyYW1ldGVyIHdhcyBjaGFuZ2VkIGJ5IGFub3RoZXIgYXBwbGljYXRpb24gaGF2aW5nIHRoZSBjb250cm9sIG9mIHRoZSBzYW1lCisgICAgICAgICAqIEVudmlyb25tZW50YWxSZXZlcmIgZW5naW5lLgorICAgICAgICAgKiBAcGFyYW0gZWZmZWN0IHRoZSBFbnZpcm9ubWVudGFsUmV2ZXJiIG9uIHdoaWNoIHRoZSBpbnRlcmZhY2UgaXMgcmVnaXN0ZXJlZC4KKyAgICAgICAgICogQHBhcmFtIHN0YXR1cyBzdGF0dXMgb2YgdGhlIHNldCBwYXJhbWV0ZXIgb3BlcmF0aW9uLgorICAgICAgICAgLy8gVE9ETyB3aGVuIEF1ZGlvRWZmZWN0IGlzIHVuaGlkZGVuCisgICAgICAgICAvLyBTZWUge19hdF9saW5rIGFuZHJvaWQubWVkaWEuQXVkaW9FZmZlY3Qjc2V0UGFyYW1ldGVyKGJ5dGVbXSwgYnl0ZVtdKX0uCisgICAgICAgICAqIEBwYXJhbSBwYXJhbSBJRCBvZiB0aGUgbW9kaWZpZWQgcGFyYW1ldGVyLiBTZWUge0BsaW5rICNQQVJBTV9ST09NX0xFVkVMfSAuLi4KKyAgICAgICAgICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgcGFyYW1ldGVyIHZhbHVlLgorICAgICAgICAgKi8KKyAgICAgICAgdm9pZCBvblBhcmFtZXRlckNoYW5nZShFbnZpcm9ubWVudGFsUmV2ZXJiIGVmZmVjdCwgaW50IHN0YXR1cywgaW50IHBhcmFtLCBpbnQgdmFsdWUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIExpc3RlbmVyIHVzZWQgaW50ZXJuYWxseSB0byByZWNlaXZlIHVuZm9ybWF0dGVkIHBhcmFtZXRlciBjaGFuZ2UgZXZlbnRzIGZyb20gQXVkaW9FZmZlY3QKKyAgICAgKiBzdXBlciBjbGFzcy4KKyAgICAgKi8KKyAgICBwcml2YXRlIGNsYXNzIEJhc2VQYXJhbWV0ZXJMaXN0ZW5lciBpbXBsZW1lbnRzIEF1ZGlvRWZmZWN0Lk9uUGFyYW1ldGVyQ2hhbmdlTGlzdGVuZXIgeworICAgICAgICBwcml2YXRlIEJhc2VQYXJhbWV0ZXJMaXN0ZW5lcigpIHsKKworICAgICAgICB9CisgICAgICAgIHB1YmxpYyB2b2lkIG9uUGFyYW1ldGVyQ2hhbmdlKEF1ZGlvRWZmZWN0IGVmZmVjdCwgaW50IHN0YXR1cywgYnl0ZVtdIHBhcmFtLCBieXRlW10gdmFsdWUpIHsKKyAgICAgICAgICAgIE9uUGFyYW1ldGVyQ2hhbmdlTGlzdGVuZXIgbCA9IG51bGw7CisKKyAgICAgICAgICAgIHN5bmNocm9uaXplZCAobVBhcmFtTGlzdGVuZXJMb2NrKSB7CisgICAgICAgICAgICAgICAgaWYgKG1QYXJhbUxpc3RlbmVyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgbCA9IG1QYXJhbUxpc3RlbmVyOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChsICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBpbnQgcCA9IC0xOworICAgICAgICAgICAgICAgIGludCB2ID0gLTE7CisKKyAgICAgICAgICAgICAgICBpZiAocGFyYW0ubGVuZ3RoID09IDQpIHsKKyAgICAgICAgICAgICAgICAgICAgcCA9IGJ5dGVBcnJheVRvSW50KHBhcmFtLCAwKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA9PSAyKSB7CisgICAgICAgICAgICAgICAgICAgIHYgPSAoaW50KWJ5dGVBcnJheVRvU2hvcnQodmFsdWUsIDApOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUubGVuZ3RoID09IDQpIHsKKyAgICAgICAgICAgICAgICAgICAgdiA9IGJ5dGVBcnJheVRvSW50KHZhbHVlLCAwKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHAgIT0gLTEgJiYgdiAhPSAtMSkgeworICAgICAgICAgICAgICAgICAgICBsLm9uUGFyYW1ldGVyQ2hhbmdlKEVudmlyb25tZW50YWxSZXZlcmIudGhpcywgc3RhdHVzLCBwLCB2KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZWdpc3RlcnMgYW4gT25QYXJhbWV0ZXJDaGFuZ2VMaXN0ZW5lciBpbnRlcmZhY2UuCisgICAgICogQHBhcmFtIGxpc3RlbmVyIE9uUGFyYW1ldGVyQ2hhbmdlTGlzdGVuZXIgaW50ZXJmYWNlIHJlZ2lzdGVyZWQKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRQYXJhbWV0ZXJMaXN0ZW5lcihPblBhcmFtZXRlckNoYW5nZUxpc3RlbmVyIGxpc3RlbmVyKSB7CisgICAgICAgIHN5bmNocm9uaXplZCAobVBhcmFtTGlzdGVuZXJMb2NrKSB7CisgICAgICAgICAgICBpZiAobVBhcmFtTGlzdGVuZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIG1QYXJhbUxpc3RlbmVyID0gbGlzdGVuZXI7CisgICAgICAgICAgICAgICAgbUJhc2VQYXJhbUxpc3RlbmVyID0gbmV3IEJhc2VQYXJhbWV0ZXJMaXN0ZW5lcigpOworICAgICAgICAgICAgICAgIHN1cGVyLnNldFBhcmFtZXRlckxpc3RlbmVyKG1CYXNlUGFyYW1MaXN0ZW5lcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9tZWRpYS9qYXZhL2FuZHJvaWQvbWVkaWEvRXF1YWxpemVyLmphdmEgYi9tZWRpYS9qYXZhL2FuZHJvaWQvbWVkaWEvRXF1YWxpemVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDgyZjY5NAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2phdmEvYW5kcm9pZC9tZWRpYS9FcXVhbGl6ZXIuamF2YQpAQCAtMCwwICsxLDQ0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgYW5kcm9pZC5tZWRpYTsKKworaW1wb3J0IGFuZHJvaWQuYXBwLkFjdGl2aXR5OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnQ7CitpbXBvcnQgYW5kcm9pZC5vcy5CdW5kbGU7CitpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKK2ltcG9ydCBqYXZhLm5pby5CeXRlT3JkZXI7CitpbXBvcnQgamF2YS5uaW8uQnl0ZUJ1ZmZlcjsKK2ltcG9ydCBqYXZhLm5pby5DaGFyQnVmZmVyOworCitpbXBvcnQgYW5kcm9pZC5tZWRpYS5BdWRpb0VmZmVjdDsKKworLyoqCisgKiBBbiBFcXVhbGl6ZXIgaXMgdXNlZCB0byBhbHRlciB0aGUgZnJlcXVlbmN5IHJlc3BvbnNlIG9mIGEgcGFydGljdWxhciBtdXNpYyBzb3VyY2Ugb3Igb2YgdGhlIG1haW4KKyAqIG91dHB1dCBtaXguCisgKiA8cD5BbiBhcHBsaWNhdGlvbiBjcmVhdGVzIGFuIEVxdWFsaXplciBvYmplY3QgdG8gaW5zdGFudGlhdGUgYW5kIGNvbnRyb2wgYW4gRXF1YWxpemVyIGVuZ2luZQorICogaW4gdGhlIGF1ZGlvIGZyYW1ld29yay4gVGhlIGFwcGxpY2F0aW9uIGNhbiBlaXRoZXIgc2ltcGx5IHVzZSBwcmVkZWZpbmVkIHByZXNldHMgb3IgaGF2ZSBhIG1vcmUKKyAqIHByZWNpc2UgY29udHJvbCBvZiB0aGUgZ2FpbiBpbiBlYWNoIGZyZXF1ZW5jeSBiYW5kIGNvbnRyb2xsZWQgYnkgdGhlIGVxdWFsaXplci4KKyAqIDxwPlRoZSBtZXRob2RzLCBwYXJhbWV0ZXIgdHlwZXMgYW5kIHVuaXRzIGV4cG9zZWQgYnkgdGhlIEVxdWFsaXplciBpbXBsZW1lbnRhdGlvbiBhcmUgZGlyZWN0bHkKKyAqIG1hcHBpbmcgdGhvc2UgZGVmaW5lZCBieSB0aGUgT3BlblNMIEVTIDEuMC4xIFNwZWNpZmljYXRpb24gKGh0dHA6Ly93d3cua2hyb25vcy5vcmcvb3BlbnNsZXMvKQorICogZm9yIHRoZSBTTEVxdWFsaXplckl0ZiBpbnRlcmZhY2UuIFBsZWFzZSByZWZlciB0byB0aGlzIHNwZWNpZmljYXRpb24gZm9yIG1vcmUgZGV0YWlscy4KKyAqIDxwPlRvIGF0dGFjaCB0aGUgRXF1YWxpemVyIHRvIGEgcGFydGljdWxhciBBdWRpb1RyYWNrIG9yIE1lZGlhUGxheWVyLCBzcGVjaWZ5IHRoZSBhdWRpbyBzZXNzaW9uCisgKiBJRCBvZiB0aGlzIEF1ZGlvVHJhY2sgb3IgTWVkaWFQbGF5ZXIgd2hlbiBjb25zdHJ1Y3RpbmcgdGhlIEVxdWFsaXplci4gSWYgdGhlIGF1ZGlvIHNlc3Npb24gSUQgMAorICogaXMgc3BlY2lmaWVkLCB0aGUgRXF1YWxpemVyIGFwcGxpZXMgdG8gdGhlIG1haW4gYXVkaW8gb3V0cHV0IG1peC4KKyAvLyBUT0RPIHdoZW4gQXVkaW9FZmZlY3QgaXMgdW5oaWRkZW4KKyAvLyA8cD4gU2VlIHtfYXRfbGluayBhbmRyb2lkLm1lZGlhLkF1ZGlvRWZmZWN0fSBjbGFzcyBmb3IgbW9yZSBkZXRhaWxzIG9uIGNvbnRyb2xsaW5nIGF1ZGlvIGVmZmVjdHMuCisgKgorICoge0BoaWRlIFBlbmRpbmcgQVBJIGNvdW5jaWwgcmV2aWV3fQorICovCisKK3B1YmxpYyBjbGFzcyBFcXVhbGl6ZXIgZXh0ZW5kcyBBdWRpb0VmZmVjdCB7CisKKyAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBTdHJpbmcgVEFHID0gIkVxdWFsaXplciI7CisKKyAgICAvLyBUaGVzZSBjb25zdGFudHMgbXVzdCBiZSBzeW5jaHJvbml6ZWQgd2l0aCB0aG9zZSBpbgorICAgIC8vIGZyYW1ld29ya3MvYmFzZS9pbmNsdWRlL21lZGlhL0VmZmVjdEVxdWFsaXplckFwaS5oCisgICAgLyoqCisgICAgICogTnVtYmVyIG9mIGJhbmRzLiBQYXJhbWV0ZXIgSUQgZm9yIHtAbGluayBhbmRyb2lkLm1lZGlhLkVxdWFsaXplci5PblBhcmFtZXRlckNoYW5nZUxpc3RlbmVyfQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBBUkFNX05VTV9CQU5EUyA9IDA7CisgICAgLyoqCisgICAgICogQmFuZCBsZXZlbCByYW5nZS4gUGFyYW1ldGVyIElEIGZvciBPblBhcmFtZXRlckNoYW5nZUxpc3RlbmVyCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUEFSQU1fTEVWRUxfUkFOR0UgPSAxOworICAgIC8qKgorICAgICAqIEJhbmQgbGV2ZWwuIFBhcmFtZXRlciBJRCBmb3IgT25QYXJhbWV0ZXJDaGFuZ2VMaXN0ZW5lcgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBBUkFNX0JBTkRfTEVWRUwgPSAyOworICAgIC8qKgorICAgICAqIEJhbmQgY2VudGVyIGZyZXF1ZW5jeS4gUGFyYW1ldGVyIElEIGZvciBPblBhcmFtZXRlckNoYW5nZUxpc3RlbmVyCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUEFSQU1fQ0VOVEVSX0ZSRVEgPSAzOworICAgIC8qKgorICAgICAqIEJhbmQgZnJlcXVlbmN5IHJhbmdlLiBQYXJhbWV0ZXIgSUQgZm9yIE9uUGFyYW1ldGVyQ2hhbmdlTGlzdGVuZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBQQVJBTV9CQU5EX0ZSRVFfUkFOR0UgPSA0OworICAgIC8qKgorICAgICAqIEJhbmQgZm9yIGEgZ2l2ZW4gZnJlcXVlbmN5LiBQYXJhbWV0ZXIgSUQgZm9yIE9uUGFyYW1ldGVyQ2hhbmdlTGlzdGVuZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBQQVJBTV9HRVRfQkFORCA9IDU7CisgICAgLyoqCisgICAgICogQ3VycmVudCBwcmVzZXQuIFBhcmFtZXRlciBJRCBmb3IgT25QYXJhbWV0ZXJDaGFuZ2VMaXN0ZW5lcgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBBUkFNX0NVUlJFTlRfUFJFU0VUID0gNjsKKyAgICAvKioKKyAgICAgKiBSZXF1ZXN0IG51bWJlciBvZiBwcmVzZXRzLiBQYXJhbWV0ZXIgSUQgZm9yIE9uUGFyYW1ldGVyQ2hhbmdlTGlzdGVuZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBQQVJBTV9HRVRfTlVNX09GX1BSRVNFVFMgPSA3OworICAgIC8qKgorICAgICAqIFJlcXVlc3QgcHJlc2V0IG5hbWUuIFBhcmFtZXRlciBJRCBmb3IgT25QYXJhbWV0ZXJDaGFuZ2VMaXN0ZW5lcgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBBUkFNX0dFVF9QUkVTRVRfTkFNRSA9IDg7CisgICAgLyoqCisgICAgICogbWF4aW11bSBzaXplIGZvciBwZXJzZXQgbmFtZQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBBUkFNX1NUUklOR19TSVpFX01BWCA9IDMyOworCisgICAgLyoqCisgICAgICogTnVtYmVyIG9mIHByZXNldHMgaW1wbGVtZW50ZWQgYnkgRXF1YWxpemVyIGVuZ2luZQorICAgICAqLworICAgIHByaXZhdGUgaW50IG1OdW1QcmVzZXRzOworICAgIC8qKgorICAgICAqIE5hbWVzIG9mIHByZXNldHMgaW1wbGVtZW50ZWQgYnkgRXF1YWxpemVyIGVuZ2luZQorICAgICAqLworICAgIHByaXZhdGUgU3RyaW5nW10gbVByZXNldE5hbWVzOworCisgICAgLyoqCisgICAgICogUmVnaXN0ZXJlZCBsaXN0ZW5lciBmb3IgcGFyYW1ldGVyIGNoYW5nZXMuCisgICAgICovCisgICAgcHJpdmF0ZSBPblBhcmFtZXRlckNoYW5nZUxpc3RlbmVyIG1QYXJhbUxpc3RlbmVyID0gbnVsbDsKKworICAgIC8qKgorICAgICAqIExpc3RlbmVyIHVzZWQgaW50ZXJuYWxseSB0byB0byByZWNlaXZlIHJhdyBwYXJhbWV0ZXIgY2hhbmdlIGV2ZW50IGZyb20gQXVkaW9FZmZlY3Qgc3VwZXIgY2xhc3MKKyAgICAgKi8KKyAgICBwcml2YXRlIEJhc2VQYXJhbWV0ZXJMaXN0ZW5lciBtQmFzZVBhcmFtTGlzdGVuZXIgPSBudWxsOworCisgICAgLyoqCisgICAgICogTG9jayBmb3IgYWNjZXNzIHRvIG1QYXJhbUxpc3RlbmVyCisgICAgICovCisgICAgcHJpdmF0ZSBmaW5hbCBPYmplY3QgbVBhcmFtTGlzdGVuZXJMb2NrID0gbmV3IE9iamVjdCgpOworCisgICAgLyoqCisgICAgICogQ2xhc3MgY29uc3RydWN0b3IuCisgICAgICogQHBhcmFtIHByaW9yaXR5IHRoZSBwcmlvcml0eSBsZXZlbCByZXF1ZXN0ZWQgYnkgdGhlIGFwcGxpY2F0aW9uIGZvciBjb250cm9sbGluZyB0aGUgRXF1YWxpemVyCisgICAgICogZW5naW5lLiBBcyB0aGUgc2FtZSBlbmdpbmUgY2FuIGJlIHNoYXJlZCBieSBzZXZlcmFsIGFwcGxpY2F0aW9ucywgdGhpcyBwYXJhbWV0ZXIgaW5kaWNhdGVzCisgICAgICogaG93IG11Y2ggdGhlIHJlcXVlc3RpbmcgYXBwbGljYXRpb24gbmVlZHMgY29udHJvbCBvZiBlZmZlY3QgcGFyYW1ldGVycy4gVGhlIG5vcm1hbCBwcmlvcml0eQorICAgICAqIGlzIDAsIGFib3ZlIG5vcm1hbCBpcyBhIHBvc2l0aXZlIG51bWJlciwgYmVsb3cgbm9ybWFsIGEgbmVnYXRpdmUgbnVtYmVyLgorICAgICAqIEBwYXJhbSBhdWRpb1Nlc3Npb24gIFN5c3RlbSB3aWRlIHVuaXF1ZSBhdWRpbyBzZXNzaW9uIGlkZW50aWZpZXIuIElmIGF1ZGlvU2Vzc2lvbgorICAgICAqICBpcyBub3QgMCwgdGhlIEVxdWFsaXplciB3aWxsIGJlIGF0dGFjaGVkIHRvIHRoZSBNZWRpYVBsYXllciBvciBBdWRpb1RyYWNrIGluIHRoZQorICAgICAqICBzYW1lIGF1ZGlvIHNlc3Npb24uIE90aGVyd2lzZSwgdGhlIEVxdWFsaXplciB3aWxsIGFwcGx5IHRvIHRoZSBvdXRwdXQgbWl4LgorICAgICAqCisgICAgICogQHRocm93cyBqYXZhLmxhbmcuSWxsZWdhbFN0YXRlRXhjZXB0aW9uCisgICAgICogQHRocm93cyBqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uCisgICAgICogQHRocm93cyBqYXZhLmxhbmcuVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIGphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIEVxdWFsaXplcihpbnQgcHJpb3JpdHksIGludCBhdWRpb1Nlc3Npb24pCisgICAgdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiwgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uLAorICAgICAgICAgICBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiwgUnVudGltZUV4Y2VwdGlvbiB7CisgICAgICAgIHN1cGVyKEVGRkVDVF9UWVBFX0VRVUFMSVpFUiwgRUZGRUNUX1RZUEVfTlVMTCwgcHJpb3JpdHksIGF1ZGlvU2Vzc2lvbik7CisKKyAgICAgICAgbU51bVByZXNldHMgPSAoaW50KWdldE51bWJlck9mUHJlc2V0cygpOworCisgICAgICAgIGlmIChtTnVtUHJlc2V0cyAhPSAwKSB7CisgICAgICAgICAgICBtUHJlc2V0TmFtZXMgPSBuZXcgU3RyaW5nW21OdW1QcmVzZXRzXTsKKyAgICAgICAgICAgIGJ5dGVbXSB2YWx1ZSA9IG5ldyBieXRlW1BBUkFNX1NUUklOR19TSVpFX01BWF07CisgICAgICAgICAgICBpbnRbXSBwYXJhbSA9IG5ldyBpbnRbMl07CisgICAgICAgICAgICBwYXJhbVswXSA9IFBBUkFNX0dFVF9QUkVTRVRfTkFNRTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbU51bVByZXNldHM7IGkrKykgeworICAgICAgICAgICAgICAgIHBhcmFtWzFdID0gaTsKKyAgICAgICAgICAgICAgICBjaGVja1N0YXR1cyhnZXRQYXJhbWV0ZXIocGFyYW0sIHZhbHVlKSk7CisgICAgICAgICAgICAgICAgaW50IGxlbmd0aCA9IDA7CisgICAgICAgICAgICAgICAgd2hpbGUgKHZhbHVlW2xlbmd0aF0gIT0gMCkgbGVuZ3RoKys7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgbVByZXNldE5hbWVzW2ldID0gbmV3IFN0cmluZyh2YWx1ZSwgMCwgbGVuZ3RoLCAiSVNPLTg4NTktMSIpOworICAgICAgICAgICAgICAgICAgICBMb2cuZShUQUcsICJwcmVzZXQgIzogIitpKyIgbmFtZTogIittUHJlc2V0TmFtZXNbaV0rIiBsZW5ndGg6ICIrbGVuZ3RoKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChqYXZhLmlvLlVuc3VwcG9ydGVkRW5jb2RpbmdFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICBMb2cuZShUQUcsICJwcmVzZXQgbmFtZSBkZWNvZGUgZXJyb3IiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBudW1iZXIgb2YgZnJlcXVlbmN5IGJhbmRzIHN1cHBvcnRlZCBieSB0aGUgRXF1YWxpemVyIGVuZ2luZS4KKyAgICAgKiBAcmV0dXJuIHRoZSBudW1iZXIgb2YgYmFuZHMKKyAgICAgKiBAdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbgorICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uCisgICAgICogQHRocm93cyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyBzaG9ydCBnZXROdW1iZXJPZkJhbmRzKCkKKyAgICB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uLCBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24sIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIHsKKyAgICAgICAgaW50W10gcGFyYW0gPSBuZXcgaW50WzFdOworICAgICAgICBwYXJhbVswXSA9IFBBUkFNX05VTV9CQU5EUzsKKyAgICAgICAgc2hvcnRbXSB2YWx1ZSA9IG5ldyBzaG9ydFsxXTsKKyAgICAgICAgY2hlY2tTdGF0dXMoZ2V0UGFyYW1ldGVyKHBhcmFtLCB2YWx1ZSkpOworICAgICAgICByZXR1cm4gdmFsdWVbMF07CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgbGV2ZWwgcmFuZ2UgZm9yIHVzZSBieSB7QGxpbmsgI3NldEJhbmRMZXZlbChpbnQsc2hvcnQpfS4gVGhlIGxldmVsIGlzIGV4cHJlc3NlZCBpbgorICAgICAqIG1pbGxpQmVsLgorICAgICAqIEByZXR1cm4gdGhlIGJhbmQgbGV2ZWwgcmFuZ2UgaW4gYW4gYXJyYXkgb2Ygc2hvcnQgaW50ZWdlcnMuIFRoZSBmaXJzdCBlbGVtZW50IGlzIHRoZSBsb3dlcgorICAgICAqIGxpbWl0IG9mIHRoZSByYW5nZSwgdGhlIHNlY29uZCBlbGVtZW50IHRoZSB1cHBlciBsaW1pdC4KKyAgICAgKiBAdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbgorICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uCisgICAgICogQHRocm93cyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyBzaG9ydFtdIGdldEJhbmRMZXZlbFJhbmdlKCkKKyAgICB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uLCBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24sIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIHsKKyAgICAgICAgaW50W10gcGFyYW0gPSBuZXcgaW50WzFdOworICAgICAgICBpbnRbXSB2YWx1ZSA9IG5ldyBpbnRbMl07CisgICAgICAgIHBhcmFtWzBdID0gUEFSQU1fTEVWRUxfUkFOR0U7CisgICAgICAgIGNoZWNrU3RhdHVzKGdldFBhcmFtZXRlcihwYXJhbSwgdmFsdWUpKTsKKworICAgICAgICBzaG9ydFtdIHJlc3VsdCA9IG5ldyBzaG9ydFsyXTsKKworICAgICAgICByZXN1bHRbMF0gPSAoc2hvcnQpdmFsdWVbMF07CisgICAgICAgIHJlc3VsdFsxXSA9IChzaG9ydCl2YWx1ZVsxXTsKKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIGdpdmVuIGVxdWFsaXplciBiYW5kIHRvIHRoZSBnaXZlbiBnYWluIHZhbHVlLgorICAgICAqIEBwYXJhbSBiYW5kIEZyZXF1ZW5jeSBiYW5kIHRoYXQgd2lsbCBoYXZlIHRoZSBuZXcgZ2Fpbi4gVGhlIG51bWJlcmluZyBvZiB0aGUgYmFuZHMgc3RhcnRzCisgICAgICogZnJvbSAwIGFuZCBlbmRzIGF0IChudW1iZXIgb2YgYmFuZHMgLSAxKS4gU2VlIEBzZWUgI2dldE51bWJlck9mQmFuZHMoKS4KKyAgICAgKiBAcGFyYW0gbGV2ZWwgTmV3IGdhaW4gaW4gbWlsbGliZWxzIHRoYXQgd2lsbCBiZSBzZXQgdG8gdGhlIGdpdmVuIGJhbmQuIGdldEJhbmRMZXZlbFJhbmdlKCkKKyAgICAgKiB3aWxsIGRlZmluZSB0aGUgbWF4aW11bSBhbmQgbWluaW11bSB2YWx1ZXMuCisgICAgICogQHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbgorICAgICAqIEB0aHJvd3MgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRCYW5kTGV2ZWwoaW50IGJhbmQsIHNob3J0IGxldmVsKQorICAgIHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24sIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiwgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24geworICAgICAgICBpbnRbXSBwYXJhbSA9IG5ldyBpbnRbMl07CisgICAgICAgIGludFtdIHZhbHVlID0gbmV3IGludFsxXTsKKworICAgICAgICBwYXJhbVswXSA9IFBBUkFNX0JBTkRfTEVWRUw7CisgICAgICAgIHBhcmFtWzFdID0gYmFuZDsKKyAgICAgICAgdmFsdWVbMF0gPSAoaW50KWxldmVsOworICAgICAgICBjaGVja1N0YXR1cyhzZXRQYXJhbWV0ZXIocGFyYW0sIHZhbHVlKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgZ2FpbiBzZXQgZm9yIHRoZSBnaXZlbiBlcXVhbGl6ZXIgYmFuZC4KKyAgICAgKiBAcGFyYW0gYmFuZCBGcmVxdWVuY3kgYmFuZCB3aG9zZSBnYWluIGlzIHJlcXVlc3RlZC4gVGhlIG51bWJlcmluZyBvZiB0aGUgYmFuZHMgc3RhcnRzCisgICAgICogZnJvbSAwIGFuZCBlbmRzIGF0IChudW1iZXIgb2YgYmFuZHMgLSAxKS4KKyAgICAgKiBAcmV0dXJuIEdhaW4gaW4gbWlsbGliZWxzIG9mIHRoZSBnaXZlbiBiYW5kLgorICAgICAqIEB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uCisgICAgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIHNob3J0IGdldEJhbmRMZXZlbChpbnQgYmFuZCkKKyAgICB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uLCBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24sIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIHsKKyAgICAgICAgaW50W10gcGFyYW0gPSBuZXcgaW50WzJdOworICAgICAgICBpbnRbXSByZXN1bHQgPSBuZXcgaW50WzFdOworCisgICAgICAgIHBhcmFtWzBdID0gUEFSQU1fQkFORF9MRVZFTDsKKyAgICAgICAgcGFyYW1bMV0gPSBiYW5kOworICAgICAgICBjaGVja1N0YXR1cyhnZXRQYXJhbWV0ZXIocGFyYW0sIHJlc3VsdCkpOworCisgICAgICAgIHJldHVybiAoc2hvcnQpcmVzdWx0WzBdOworICAgIH0KKworCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgY2VudGVyIGZyZXF1ZW5jeSBvZiB0aGUgZ2l2ZW4gYmFuZC4KKyAgICAgKiBAcGFyYW0gYmFuZCBGcmVxdWVuY3kgYmFuZCB3aG9zZSBjZW50ZXIgZnJlcXVlbmN5IGlzIHJlcXVlc3RlZC4gVGhlIG51bWJlcmluZyBvZiB0aGUgYmFuZHMKKyAgICAgKiBzdGFydHMgZnJvbSAwIGFuZCBlbmRzIGF0IChudW1iZXIgb2YgYmFuZHMgLSAxKS4KKyAgICAgKiBAcmV0dXJuIFRoZSBjZW50ZXIgZnJlcXVlbmN5IGluIG1pbGxpSGVydHoKKyAgICAgKiBAdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbgorICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uCisgICAgICogQHRocm93cyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0Q2VudGVyRnJlcShpbnQgYmFuZCkKKyAgICB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uLCBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24sIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIHsKKyAgICAgICAgaW50W10gcGFyYW0gPSBuZXcgaW50WzJdOworICAgICAgICBpbnRbXSByZXN1bHQgPSBuZXcgaW50WzFdOworCisgICAgICAgIHBhcmFtWzBdID0gUEFSQU1fQ0VOVEVSX0ZSRVE7CisgICAgICAgIHBhcmFtWzFdID0gYmFuZDsKKyAgICAgICAgY2hlY2tTdGF0dXMoZ2V0UGFyYW1ldGVyKHBhcmFtLCByZXN1bHQpKTsKKworICAgICAgICByZXR1cm4gcmVzdWx0WzBdOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIGZyZXF1ZW5jeSByYW5nZSBvZiB0aGUgZ2l2ZW4gZnJlcXVlbmN5IGJhbmQuCisgICAgICogQHBhcmFtIGJhbmQgRnJlcXVlbmN5IGJhbmQgd2hvc2UgZnJlcXVlbmN5IHJhbmdlIGlzIHJlcXVlc3RlZC4gVGhlIG51bWJlcmluZyBvZiB0aGUgYmFuZHMKKyAgICAgKiBzdGFydHMgZnJvbSAwIGFuZCBlbmRzIGF0IChudW1iZXIgb2YgYmFuZHMgLSAxKS4KKyAgICAgKiBAcmV0dXJuIFRoZSBmcmVxdWVuY3kgcmFuZ2UgaW4gbWlsbEhlcnR6IGluIGFuIGFycmF5IG9mIGludGVnZXJzLiBUaGUgZmlyc3QgZWxlbWVudCBpcyB0aGUKKyAgICAgKiBsb3dlciBsaW1pdCBvZiB0aGUgcmFuZ2UsIHRoZSBzZWNvbmQgZWxlbWVudCB0aGUgdXBwZXIgbGltaXQuCisgICAgICogQHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbgorICAgICAqIEB0aHJvd3MgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50W10gZ2V0QmFuZEZyZXFSYW5nZShpbnQgYmFuZCkKKyAgICB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uLCBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24sIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIHsKKyAgICAgICAgaW50W10gcGFyYW0gPSBuZXcgaW50WzJdOworICAgICAgICBpbnRbXSByZXN1bHQgPSBuZXcgaW50WzJdOworICAgICAgICBwYXJhbVswXSA9IFBBUkFNX0JBTkRfRlJFUV9SQU5HRTsKKyAgICAgICAgcGFyYW1bMV0gPSBiYW5kOworICAgICAgICBjaGVja1N0YXR1cyhnZXRQYXJhbWV0ZXIocGFyYW0sIHJlc3VsdCkpOworCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgYmFuZCB0aGF0IGhhcyB0aGUgbW9zdCBlZmZlY3Qgb24gdGhlIGdpdmVuIGZyZXF1ZW5jeS4KKyAgICAgKiBAcGFyYW0gZnJlcXVlbmN5IEZyZXF1ZW5jeSBpbiBtaWxsaUhlcnR6IHdoaWNoIGlzIHRvIGJlIGVxdWFsaXplZCB2aWEgdGhlIHJldHVybmVkIGJhbmQuCisgICAgICogQHJldHVybiBGcmVxdWVuY3kgYmFuZCB0aGF0IGhhcyBtb3N0IGVmZmVjdCBvbiB0aGUgZ2l2ZW4gZnJlcXVlbmN5LgorICAgICAqIEB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uCisgICAgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIGludCBnZXRCYW5kKGludCBmcmVxdWVuY3kpCisgICAgdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiwgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uLCBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiB7CisgICAgICAgIGludFtdIHBhcmFtID0gbmV3IGludFsyXTsKKyAgICAgICAgaW50W10gcmVzdWx0ID0gbmV3IGludFsxXTsKKworICAgICAgICBwYXJhbVswXSA9IFBBUkFNX0dFVF9CQU5EOworICAgICAgICBwYXJhbVsxXSA9IGZyZXF1ZW5jeTsKKyAgICAgICAgY2hlY2tTdGF0dXMoZ2V0UGFyYW1ldGVyKHBhcmFtLCByZXN1bHQpKTsKKworICAgICAgICByZXR1cm4gcmVzdWx0WzBdOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgY3VycmVudCBwcmVzZXQuCisgICAgICogQHJldHVybiBQcmVzZXQgdGhhdCBpcyBzZXQgYXQgdGhlIG1vbWVudC4KKyAgICAgKiBAdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbgorICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uCisgICAgICogQHRocm93cyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyBzaG9ydCBnZXRDdXJyZW50UHJlc2V0KCkKKyAgICB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uLCBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24sIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIHsKKyAgICAgICAgaW50W10gcGFyYW0gPSBuZXcgaW50WzFdOworICAgICAgICBwYXJhbVswXSA9IFBBUkFNX0NVUlJFTlRfUFJFU0VUOworICAgICAgICBzaG9ydFtdIHZhbHVlID0gbmV3IHNob3J0WzFdOworICAgICAgICBjaGVja1N0YXR1cyhnZXRQYXJhbWV0ZXIocGFyYW0sIHZhbHVlKSk7CisgICAgICAgIHJldHVybiB2YWx1ZVswXTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBlcXVhbGl6ZXIgYWNjb3JkaW5nIHRvIHRoZSBnaXZlbiBwcmVzZXQuCisgICAgICogQHBhcmFtIHByZXNldCBOZXcgcHJlc2V0IHRoYXQgd2lsbCBiZSB0YWtlbiBpbnRvIHVzZS4gVGhlIHZhbGlkIHJhbmdlIGlzIFswLAorICAgICAqIG51bWJlciBvZiBwcmVzZXRzLTFdLiBTZWUge0BzZWUgI2dldE51bWJlck9mUHJlc2V0cygpfS4KKyAgICAgKiBAdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbgorICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uCisgICAgICogQHRocm93cyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHVzZVByZXNldChzaG9ydCBwcmVzZXQpCisgICAgdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiwgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uLCBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiB7CisgICAgICAgIGNoZWNrU3RhdHVzKHNldFBhcmFtZXRlcihQQVJBTV9DVVJSRU5UX1BSRVNFVCwgcHJlc2V0KSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgdG90YWwgbnVtYmVyIG9mIHByZXNldHMgdGhlIGVxdWFsaXplciBzdXBwb3J0cy4gVGhlIHByZXNldHMgd2lsbCBoYXZlIGluZGljZXMKKyAgICAgKiBbMCwgbnVtYmVyIG9mIHByZXNldHMtMV0uCisgICAgICogQHJldHVybiBUaGUgbnVtYmVyIG9mIHByZXNldHMgdGhlIGVxdWFsaXplciBzdXBwb3J0cy4KKyAgICAgKiBAdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbgorICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uCisgICAgICogQHRocm93cyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyBzaG9ydCBnZXROdW1iZXJPZlByZXNldHMoKQorICAgIHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24sIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiwgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24geworICAgICAgICBpbnRbXSBwYXJhbSA9IG5ldyBpbnRbMV07CisgICAgICAgIHBhcmFtWzBdID0gUEFSQU1fR0VUX05VTV9PRl9QUkVTRVRTOworICAgICAgICBzaG9ydFtdIHZhbHVlID0gbmV3IHNob3J0WzFdOworICAgICAgICBjaGVja1N0YXR1cyhnZXRQYXJhbWV0ZXIocGFyYW0sIHZhbHVlKSk7CisgICAgICAgIHJldHVybiB2YWx1ZVswXTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBwcmVzZXQgbmFtZSBiYXNlZCBvbiB0aGUgaW5kZXguCisgICAgICogQHBhcmFtIHByZXNldCBJbmRleCBvZiB0aGUgcHJlc2V0LiBUaGUgdmFsaWQgcmFuZ2UgaXMgWzAsIG51bWJlciBvZiBwcmVzZXRzLTFdLgorICAgICAqIEByZXR1cm4gQSBzdHJpbmcgY29udGFpbmluZyB0aGUgbmFtZSBvZiB0aGUgZ2l2ZW4gcHJlc2V0LgorICAgICAqIEB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uCisgICAgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIFN0cmluZyBnZXRQcmVzZXROYW1lKHNob3J0IHByZXNldCkKKyAgICB7CisgICAgICAgIGlmIChwcmVzZXQgPj0gMCAmJiBwcmVzZXQgPCBtTnVtUHJlc2V0cykgeworICAgICAgICAgICAgcmV0dXJuIG1QcmVzZXROYW1lc1twcmVzZXRdOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuICIiOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhlIE9uUGFyYW1ldGVyQ2hhbmdlTGlzdGVuZXIgaW50ZXJmYWNlIGRlZmluZXMgYSBtZXRob2QgY2FsbGVkIGJ5IHRoZSBFcXVhbGl6ZXIgd2hlbiBhCisgICAgICogcGFyYW1ldGVyIHZhbHVlIGhhcyBjaGFuZ2VkLgorICAgICAqLworICAgIHB1YmxpYyBpbnRlcmZhY2UgT25QYXJhbWV0ZXJDaGFuZ2VMaXN0ZW5lciAgeworICAgICAgICAvKioKKyAgICAgICAgICogTWV0aG9kIGNhbGxlZCB3aGVuIGEgcGFyYW1ldGVyIHZhbHVlIGhhcyBjaGFuZ2VkLiBUaGUgbWV0aG9kIGlzIGNhbGxlZCBvbmx5IGlmIHRoZQorICAgICAgICAgKiBwYXJhbWV0ZXIgd2FzIGNoYW5nZWQgYnkgYW5vdGhlciBhcHBsaWNhdGlvbiBoYXZpbmcgdGhlIGNvbnRyb2wgb2YgdGhlIHNhbWUKKyAgICAgICAgICogRXF1YWxpemVyIGVuZ2luZS4KKyAgICAgICAgICogQHBhcmFtIGVmZmVjdCB0aGUgRXF1YWxpemVyIG9uIHdoaWNoIHRoZSBpbnRlcmZhY2UgaXMgcmVnaXN0ZXJlZC4KKyAgICAgICAgICogQHBhcmFtIHN0YXR1cyBzdGF0dXMgb2YgdGhlIHNldCBwYXJhbWV0ZXIgb3BlcmF0aW9uLgorICAgICAgICAgLy8gVE9ETyB3aGVuIEF1ZGlvRWZmZWN0IGlzIHVuaGlkZGVuCisgICAgICAgICAvLyBTZWUge19hdF9saW5rIGFuZHJvaWQubWVkaWEuQXVkaW9FZmZlY3Qjc2V0UGFyYW1ldGVyKGJ5dGVbXSwgYnl0ZVtdKX0uCisgICAgICAgICAqIEBwYXJhbSBwYXJhbTEgSUQgb2YgdGhlIG1vZGlmaWVkIHBhcmFtZXRlci4gU2VlIHtAbGluayAjUEFSQU1fQkFORF9MRVZFTH0gLi4uCisgICAgICAgICAqIEBwYXJhbSBwYXJhbTIgYWRkaXRpb25hbCBwYXJhbWV0ZXIgcXVhbGlmaWVyIChlLmcgdGhlIGJhbmQgZm9yIGJhbmQgbGV2ZWwgcGFyYW1ldGVyKS4KKyAgICAgICAgICogQHBhcmFtIHZhbHVlIHRoZSBuZXcgcGFyYW1ldGVyIHZhbHVlLgorICAgICAgICAgKi8KKyAgICAgICAgdm9pZCBvblBhcmFtZXRlckNoYW5nZShFcXVhbGl6ZXIgZWZmZWN0LCBpbnQgc3RhdHVzLCBpbnQgcGFyYW0xLCBpbnQgcGFyYW0yLCBpbnQgdmFsdWUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIExpc3RlbmVyIHVzZWQgaW50ZXJuYWxseSB0byByZWNlaXZlIHVuZm9ybWF0dGVkIHBhcmFtZXRlciBjaGFuZ2UgZXZlbnRzIGZyb20gQXVkaW9FZmZlY3QKKyAgICAgKiBzdXBlciBjbGFzcy4KKyAgICAgKi8KKyAgICBwcml2YXRlIGNsYXNzIEJhc2VQYXJhbWV0ZXJMaXN0ZW5lciBpbXBsZW1lbnRzIEF1ZGlvRWZmZWN0Lk9uUGFyYW1ldGVyQ2hhbmdlTGlzdGVuZXIgeworICAgICAgICBwcml2YXRlIEJhc2VQYXJhbWV0ZXJMaXN0ZW5lcigpIHsKKworICAgICAgICB9CisgICAgICAgIHB1YmxpYyB2b2lkIG9uUGFyYW1ldGVyQ2hhbmdlKEF1ZGlvRWZmZWN0IGVmZmVjdCwgaW50IHN0YXR1cywgYnl0ZVtdIHBhcmFtLCBieXRlW10gdmFsdWUpIHsKKyAgICAgICAgICAgIE9uUGFyYW1ldGVyQ2hhbmdlTGlzdGVuZXIgbCA9IG51bGw7CisKKyAgICAgICAgICAgIHN5bmNocm9uaXplZCAobVBhcmFtTGlzdGVuZXJMb2NrKSB7CisgICAgICAgICAgICAgICAgaWYgKG1QYXJhbUxpc3RlbmVyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgbCA9IG1QYXJhbUxpc3RlbmVyOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChsICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBpbnQgcDEgPSAtMTsKKyAgICAgICAgICAgICAgICBpbnQgcDIgPSAtMTsKKyAgICAgICAgICAgICAgICBpbnQgdiA9IC0xOworCisgICAgICAgICAgICAgICAgaWYgKHBhcmFtLmxlbmd0aCA+PSA0KSB7CisgICAgICAgICAgICAgICAgICAgIHAxID0gYnl0ZUFycmF5VG9JbnQocGFyYW0sIDApOworICAgICAgICAgICAgICAgICAgICBpZiAocGFyYW0ubGVuZ3RoID49IDgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHAyID0gYnl0ZUFycmF5VG9JbnQocGFyYW0sIDQpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5sZW5ndGggPT0gMikgeworICAgICAgICAgICAgICAgICAgICB2ID0gKGludClieXRlQXJyYXlUb1Nob3J0KHZhbHVlLCAwKTs7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS5sZW5ndGggPT0gNCkgeworICAgICAgICAgICAgICAgICAgICB2ID0gYnl0ZUFycmF5VG9JbnQodmFsdWUsIDApOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChwMSAhPSAtMSAmJiB2ICE9IC0xKSB7CisgICAgICAgICAgICAgICAgICAgIGwub25QYXJhbWV0ZXJDaGFuZ2UoRXF1YWxpemVyLnRoaXMsIHN0YXR1cywgcDEsIHAyLCB2KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZWdpc3RlcnMgYW4gT25QYXJhbWV0ZXJDaGFuZ2VMaXN0ZW5lciBpbnRlcmZhY2UuCisgICAgICogQHBhcmFtIGxpc3RlbmVyIE9uUGFyYW1ldGVyQ2hhbmdlTGlzdGVuZXIgaW50ZXJmYWNlIHJlZ2lzdGVyZWQKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRQYXJhbWV0ZXJMaXN0ZW5lcihPblBhcmFtZXRlckNoYW5nZUxpc3RlbmVyIGxpc3RlbmVyKSB7CisgICAgICAgIHN5bmNocm9uaXplZCAobVBhcmFtTGlzdGVuZXJMb2NrKSB7CisgICAgICAgICAgICBpZiAobVBhcmFtTGlzdGVuZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIG1QYXJhbUxpc3RlbmVyID0gbGlzdGVuZXI7CisgICAgICAgICAgICAgICAgbUJhc2VQYXJhbUxpc3RlbmVyID0gbmV3IEJhc2VQYXJhbWV0ZXJMaXN0ZW5lcigpOworICAgICAgICAgICAgICAgIHN1cGVyLnNldFBhcmFtZXRlckxpc3RlbmVyKG1CYXNlUGFyYW1MaXN0ZW5lcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL21lZGlhL2phdmEvYW5kcm9pZC9tZWRpYS9FeGlmSW50ZXJmYWNlLmphdmEgYi9tZWRpYS9qYXZhL2FuZHJvaWQvbWVkaWEvRXhpZkludGVyZmFjZS5qYXZhCmluZGV4IGIyNjkwNmQuLjc0NDg4YzUgMTAwNjQ0Ci0tLSBhL21lZGlhL2phdmEvYW5kcm9pZC9tZWRpYS9FeGlmSW50ZXJmYWNlLmphdmEKKysrIGIvbWVkaWEvamF2YS9hbmRyb2lkL21lZGlhL0V4aWZJbnRlcmZhY2UuamF2YQpAQCAtNTEsNiArNTEsMTkgQEAKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBUQUdfR1BTX0xBVElUVURFX1JFRiA9ICJHUFNMYXRpdHVkZVJlZiI7CiAgICAgLyoqIFR5cGUgaXMgU3RyaW5nLiAqLwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFRBR19HUFNfTE9OR0lUVURFX1JFRiA9ICJHUFNMb25naXR1ZGVSZWYiOworCisgICAgLyoqCisgICAgICogVGhlIGFsdGl0dWRlIChpbiBtZXRlcnMpIGJhc2VkIG9uIHRoZSByZWZlcmVuY2UgaW4gVEFHX0dQU19BTFRJVFVERV9SRUYuCisgICAgICogVHlwZSBpcyByYXRpb25hbC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBUQUdfR1BTX0FMVElUVURFID0gIkdQU0FsdGl0dWRlIjsKKworICAgIC8qKgorICAgICAqIDAgaWYgdGhlIGFsdGl0dWRlIGlzIGFib3ZlIHNlYSBsZXZlbC4gMSBpZiB0aGUgYWx0aXR1ZGUgaXMgYmVsb3cgc2VhCisgICAgICogbGV2ZWwuIFR5cGUgaXMgaW50LgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIFRBR19HUFNfQUxUSVRVREVfUkVGID0gIkdQU0FsdGl0dWRlUmVmIjsKKwogICAgIC8qKiBUeXBlIGlzIFN0cmluZy4gKi8KICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBUQUdfR1BTX1RJTUVTVEFNUCA9ICJHUFNUaW1lU3RhbXAiOwogICAgIC8qKiBUeXBlIGlzIFN0cmluZy4gKi8KQEAgLTI4OSw2ICszMDIsMjMgQEAKICAgICB9CiAKICAgICAvKioKKyAgICAgKiBSZXR1cm4gdGhlIGFsdGl0dWRlIGluIG1ldGVycy4gSWYgdGhlIGV4aWYgdGFnIGRvZXMgbm90IGV4aXN0LCByZXR1cm4KKyAgICAgKiA8dmFyPmRlZmF1bHRWYWx1ZTwvdmFyPi4KKyAgICAgKgorICAgICAqIEBwYXJhbSBkZWZhdWx0VmFsdWUgdGhlIHZhbHVlIHRvIHJldHVybiBpZiB0aGUgdGFnIGlzIG5vdCBhdmFpbGFibGUuCisgICAgICovCisgICAgcHVibGljIGRvdWJsZSBnZXRBbHRpdHVkZShkb3VibGUgZGVmYXVsdFZhbHVlKSB7CisgICAgICAgIGRvdWJsZSBhbHRpdHVkZSA9IGdldEF0dHJpYnV0ZURvdWJsZShUQUdfR1BTX0FMVElUVURFLCAtMSk7CisgICAgICAgIGludCByZWYgPSBnZXRBdHRyaWJ1dGVJbnQoVEFHX0dQU19BTFRJVFVERV9SRUYsIC0xKTsKKworICAgICAgICBpZiAoYWx0aXR1ZGUgPj0gMCAmJiByZWYgPj0gMCkgeworICAgICAgICAgICAgcmV0dXJuIChkb3VibGUpIChhbHRpdHVkZSAqICgocmVmID09IDEpID8gLTEgOiAxKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gZGVmYXVsdFZhbHVlOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCiAgICAgICogUmV0dXJucyBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHNpbmNlIEphbi4gMSwgMTk3MCwgbWlkbmlnaHQuCiAgICAgICogUmV0dXJucyAtMSBpZiB0aGUgZGF0ZSB0aW1lIGluZm9ybWF0aW9uIGlmIG5vdCBhdmFpbGFibGUuCiAgICAgICogQGhpZGUKQEAgLTM0NSwxNCArMzc1LDE0IEBACiAgICAgICAgICAgICAgICAgICAgIC8gRmxvYXQucGFyc2VGbG9hdChwYWlyWzFdLnRyaW0oKSkpKTsKIAogICAgICAgICAgICAgcGFpciA9IHBhcnRzWzJdLnNwbGl0KCIvIik7Ci0gICAgICAgICAgICBmbG9hdCBzZWNvbmRzID0gRmxvYXQucGFyc2VGbG9hdChwYWlyWzBdLnRyaW0oKSkKLSAgICAgICAgICAgICAgICAgICAgLyBGbG9hdC5wYXJzZUZsb2F0KHBhaXJbMV0udHJpbSgpKTsKKyAgICAgICAgICAgIGRvdWJsZSBzZWNvbmRzID0gRG91YmxlLnBhcnNlRG91YmxlKHBhaXJbMF0udHJpbSgpKQorICAgICAgICAgICAgICAgICAgICAvIERvdWJsZS5wYXJzZURvdWJsZShwYWlyWzFdLnRyaW0oKSk7CiAKLSAgICAgICAgICAgIGZsb2F0IHJlc3VsdCA9IGRlZ3JlZXMgKyAobWludXRlcyAvIDYwRikgKyAoc2Vjb25kcyAvICg2MEYgKiA2MEYpKTsKKyAgICAgICAgICAgIGRvdWJsZSByZXN1bHQgPSBkZWdyZWVzICsgKG1pbnV0ZXMgLyA2MC4wKSArIChzZWNvbmRzIC8gMzYwMC4wKTsKICAgICAgICAgICAgIGlmICgocmVmLmVxdWFscygiUyIpIHx8IHJlZi5lcXVhbHMoIlciKSkpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gLXJlc3VsdDsKKyAgICAgICAgICAgICAgICByZXR1cm4gKGZsb2F0KSAtcmVzdWx0OwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIHJldHVybiAoZmxvYXQpIHJlc3VsdDsKICAgICAgICAgfSBjYXRjaCAoUnVudGltZUV4Y2VwdGlvbiBleCkgewogICAgICAgICAgICAgLy8gaWYgZm9yIHdoYXRldmVyIHJlYXNvbiB3ZSBjYW4ndCBwYXJzZSB0aGUgbGF0IGxvbmcgdGhlbiByZXR1cm4KICAgICAgICAgICAgIC8vIG51bGwKZGlmZiAtLWdpdCBhL21lZGlhL2phdmEvYW5kcm9pZC9tZWRpYS9NZWRpYUZpbGUuamF2YSBiL21lZGlhL2phdmEvYW5kcm9pZC9tZWRpYS9NZWRpYUZpbGUuamF2YQppbmRleCA5ZDFkNDIwLi42ZTUyN2Q5IDEwMDY0NAotLS0gYS9tZWRpYS9qYXZhL2FuZHJvaWQvbWVkaWEvTWVkaWFGaWxlLmphdmEKKysrIGIvbWVkaWEvamF2YS9hbmRyb2lkL21lZGlhL01lZGlhRmlsZS5qYXZhCkBAIC00Niw4ICs0Niw5IEBACiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRklMRV9UWVBFX1dNQSAgICAgPSA2OwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZJTEVfVFlQRV9PR0cgICAgID0gNzsKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGSUxFX1RZUEVfQUFDICAgICA9IDg7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRklMRV9UWVBFX01LQSAgICAgPSA5OwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBGSVJTVF9BVURJT19GSUxFX1RZUEUgPSBGSUxFX1RZUEVfTVAzOwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBMQVNUX0FVRElPX0ZJTEVfVFlQRSA9IEZJTEVfVFlQRV9BQUM7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExBU1RfQVVESU9fRklMRV9UWVBFID0gRklMRV9UWVBFX01LQTsKIAogICAgIC8vIE1JREkgZmlsZSB0eXBlcwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZJTEVfVFlQRV9NSUQgICAgID0gMTE7CkBAIC02Myw4ICs2NCwxMCBAQAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZJTEVfVFlQRV8zR1BQMiAgID0gMjQ7CiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRklMRV9UWVBFX1dNViAgICAgPSAyNTsKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGSUxFX1RZUEVfQVNGICAgICA9IDI2OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZJTEVfVFlQRV9NS1YgICAgID0gMjc7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRklMRV9UWVBFX01QMlRTICAgPSAyODsKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRklSU1RfVklERU9fRklMRV9UWVBFID0gRklMRV9UWVBFX01QNDsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTEFTVF9WSURFT19GSUxFX1RZUEUgPSBGSUxFX1RZUEVfQVNGOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBMQVNUX1ZJREVPX0ZJTEVfVFlQRSA9IEZJTEVfVFlQRV9NUDJUUzsKICAgICAKICAgICAvLyBJbWFnZSBmaWxlIHR5cGVzCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRklMRV9UWVBFX0pQRUcgICAgPSAzMTsKQEAgLTEzNCw2ICsxMzcsNyBAQAogICAgICAgICBhZGRGaWxlVHlwZSgiT0dHIiwgRklMRV9UWVBFX09HRywgImFwcGxpY2F0aW9uL29nZyIpOwogICAgICAgICBhZGRGaWxlVHlwZSgiT0dBIiwgRklMRV9UWVBFX09HRywgImFwcGxpY2F0aW9uL29nZyIpOwogICAgICAgICBhZGRGaWxlVHlwZSgiQUFDIiwgRklMRV9UWVBFX0FBQywgImF1ZGlvL2FhYyIpOworICAgICAgICBhZGRGaWxlVHlwZSgiTUtBIiwgRklMRV9UWVBFX01LQSwgImF1ZGlvL3gtbWF0cm9za2EiKTsKICAKICAgICAgICAgYWRkRmlsZVR5cGUoIk1JRCIsIEZJTEVfVFlQRV9NSUQsICJhdWRpby9taWRpIik7CiAgICAgICAgIGFkZEZpbGVUeXBlKCJNSURJIiwgRklMRV9UWVBFX01JRCwgImF1ZGlvL21pZGkiKTsKQEAgLTE1MSw2ICsxNTUsMTAgQEAKICAgICAgICAgYWRkRmlsZVR5cGUoIjNHUFAiLCBGSUxFX1RZUEVfM0dQUCwgInZpZGVvLzNncHAiKTsKICAgICAgICAgYWRkRmlsZVR5cGUoIjNHMiIsIEZJTEVfVFlQRV8zR1BQMiwgInZpZGVvLzNncHAyIik7CiAgICAgICAgIGFkZEZpbGVUeXBlKCIzR1BQMiIsIEZJTEVfVFlQRV8zR1BQMiwgInZpZGVvLzNncHAyIik7CisgICAgICAgIGFkZEZpbGVUeXBlKCJNS1YiLCBGSUxFX1RZUEVfTUtWLCAidmlkZW8veC1tYXRyb3NrYSIpOworICAgICAgICBhZGRGaWxlVHlwZSgiV0VCTSIsIEZJTEVfVFlQRV9NS1YsICJ2aWRlby94LW1hdHJvc2thIik7CisgICAgICAgIGFkZEZpbGVUeXBlKCJUUyIsIEZJTEVfVFlQRV9NUDJUUywgInZpZGVvL21wMnRzIik7CisKICAgICAgICAgaWYgKGlzV01WRW5hYmxlZCgpKSB7CiAgICAgICAgICAgICBhZGRGaWxlVHlwZSgiV01WIiwgRklMRV9UWVBFX1dNViwgInZpZGVvL3gtbXMtd212Iik7CiAgICAgICAgICAgICBhZGRGaWxlVHlwZSgiQVNGIiwgRklMRV9UWVBFX0FTRiwgInZpZGVvL3gtbXMtYXNmIik7CmRpZmYgLS1naXQgYS9tZWRpYS9qYXZhL2FuZHJvaWQvbWVkaWEvTWVkaWFQbGF5ZXIuamF2YSBiL21lZGlhL2phdmEvYW5kcm9pZC9tZWRpYS9NZWRpYVBsYXllci5qYXZhCmluZGV4IDM4YjE1ODIuLjhjYWEwN2EgMTAwNjQ0Ci0tLSBhL21lZGlhL2phdmEvYW5kcm9pZC9tZWRpYS9NZWRpYVBsYXllci5qYXZhCisrKyBiL21lZGlhL2phdmEvYW5kcm9pZC9tZWRpYS9NZWRpYVBsYXllci5qYXZhCkBAIC0xMzMsNyArMTMzLDcgQEAKICAqICAgICAgICAgPGxpPkl0IGlzIGdvb2QgcHJvZ3JhbW1pbmcgcHJhY3RpY2UgdG8gaGF2ZSB5b3VyIGFwcGxpY2F0aW9uCiAgKiAgICAgICAgIHJlZ2lzdGVyIGEgT25FcnJvckxpc3RlbmVyIHRvIGxvb2sgb3V0IGZvciBlcnJvciBub3RpZmljYXRpb25zIGZyb20KICAqICAgICAgICAgdGhlIGludGVybmFsIHBsYXllciBlbmdpbmUuPC9saT4KLSAqICAgICAgICAgPGxpPklsbGVnbFN0YXRlRXhjZXB0aW9uIGlzCisgKiAgICAgICAgIDxsaT5JbGxlZ2FsU3RhdGVFeGNlcHRpb24gaXMKICAqICAgICAgICAgdGhyb3duIHRvIHByZXZlbnQgcHJvZ3JhbW1pbmcgZXJyb3JzIHN1Y2ggYXMgY2FsbGluZyB7QGxpbmsgI3ByZXBhcmUoKX0sCiAgKiAgICAgICAgIHtAbGluayAjcHJlcGFyZUFzeW5jKCl9LCBvciBvbmUgb2YgdGhlIG92ZXJsb2FkZWQgPGNvZGU+c2V0RGF0YVNvdXJjZQogICogICAgICAgICA8L2NvZGU+IG1ldGhvZHMgaW4gYW4gaW52YWxpZCBzdGF0ZS4gPC9saT4KQEAgLTQyMyw2ICs0MjMsMTggQEAKICAqICAgICA8dGQ+U3VjY2Vzc2Z1bCBpbnZva2Ugb2YgdGhpcyBtZXRob2QgaW4gYSB2YWxpZCBzdGF0ZSB0cmFuc2ZlcnMgdGhlCiAgKiAgICAgICAgIG9iamVjdCB0byB0aGUgPGVtPlN0b3BwZWQ8L2VtPiBzdGF0ZS4gQ2FsbGluZyB0aGlzIG1ldGhvZCBpbiBhbgogICogICAgICAgICBpbnZhbGlkIHN0YXRlIHRyYW5zZmVycyB0aGUgb2JqZWN0IHRvIHRoZSA8ZW0+RXJyb3I8L2VtPiBzdGF0ZS48L3A+PC90ZD48L3RyPgorICAqIDx0cj48dGQ+c2V0QXVkaW9TZXNzaW9uSWQgPC9wPjwvdGQ+CisgKiAgICAgPHRkPntJZGxlfSA8L3A+PC90ZD4KKyAqICAgICA8dGQ+e0luaXRpYWxpemVkLCBQcmVwYXJlZCwgU3RhcnRlZCwgUGF1c2VkLCBTdG9wcGVkLCBQbGF5YmFja0NvbXBsZXRlZCwKKyAqICAgICAgICAgIEVycm9yfSA8L3A+PC90ZD4KKyAqICAgICA8dGQ+VGhpcyBtZXRob2QgbXVzdCBiZSBjYWxsZWQgaW4gaWRsZSBzdGF0ZSBhcyB0aGUgYXVkaW8gc2Vzc2lvbiBJRCBtdXN0IGJlIGtub3duIGJlZm9yZQorICogICAgICAgICBjYWxsaW5nIHNldERhdGFTb3VyY2UuIENhbGxpbmcgaXQgZG9lcyBub3QgY2hhbmdlIHRoZSBvYmplY3Qgc3RhdGUuIDwvcD48L3RkPjwvdHI+CisgKiA8dHI+PHRkPmdldEF1ZGlvU2Vzc2lvbklkIDwvcD48L3RkPgorICogICAgIDx0ZD5hbnkgPC9wPjwvdGQ+CisgKiAgICAgPHRkPnt9IDwvcD48L3RkPgorICogICAgIDx0ZD5UaGlzIG1ldGhvZCBjYW4gYmUgY2FsbGVkIGluIGFueSBzdGF0ZSBhbmQgY2FsbGluZyBpdCBkb2VzIG5vdCBjaGFuZ2UKKyAqICAgICAgICAgdGhlIG9iamVjdCBzdGF0ZS4gPC9wPjwvdGQ+PC90cj4KKyAqCiAgKiA8L3RhYmxlPgogICoKICAqIDxhIG5hbWU9IlBlcm1pc3Npb25zIj48L2E+CkBAIC0xMTU5LDYgKzExNzEsMzggQEAKICAgICBwdWJsaWMgbmF0aXZlIEJpdG1hcCBnZXRGcmFtZUF0KGludCBtc2VjKSB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uOwogCiAgICAgLyoqCisgICAgICogU2V0cyB0aGUgYXVkaW8gc2Vzc2lvbiBJRC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBzZXNzaW9uSWQ6IHRoZSBhdWRpbyBzZXNzaW9uIElELgorICAgICAqIFRoZSBhdWRpbyBzZXNzaW9uIElEIGlzIGEgc3lzdGVtIHdpZGUgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBhdWRpbyBzdHJlYW0gcGxheWVkIGJ5CisgICAgICogdGhpcyBNZWRpYVBsYXllciBpbnN0YW5jZS4KKyAgICAgKiBUaGUgcHJpbWFyeSB1c2Ugb2YgdGhlIGF1ZGlvIHNlc3Npb24gSUQgIGlzIHRvIGFzc29jaWF0ZSBhdWRpbyBlZmZlY3RzIHRvIGEgcGFydGljdWxhcgorICAgICAqIGluc3RhbmNlIG9mIE1lZGlhUGxheWVyOiBpZiBhbiBhdWRpbyBzZXNzaW9uIElEIGlzIHByb3ZpZGVkIHdoZW4gY3JlYXRpbmcgYW4gYXVkaW8gZWZmZWN0LAorICAgICAqIHRoaXMgZWZmZWN0IHdpbGwgYmUgYXBwbGllZCBvbmx5IHRvIHRoZSBhdWRpbyBjb250ZW50IG9mIG1lZGlhIHBsYXllcnMgd2l0aGluIHRoZSBzYW1lCisgICAgICogYXVkaW8gc2Vzc2lvbiBhbmQgbm90IHRvIHRoZSBvdXRwdXQgbWl4LgorICAgICAqIFdoZW4gY3JlYXRlZCwgYSBNZWRpYVBsYXllciBpbnN0YW5jZSBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlcyBpdHMgb3duIGF1ZGlvIHNlc3Npb24gSUQuCisgICAgICogSG93ZXZlciwgaXQgaXMgcG9zc2libGUgdG8gZm9yY2UgdGhpcyBwbGF5ZXIgdG8gYmUgcGFydCBvZiBhbiBhbHJlYWR5IGV4aXN0aW5nIGF1ZGlvIHNlc3Npb24KKyAgICAgKiBieSBjYWxsaW5nIHRoaXMgbWV0aG9kLgorICAgICAqIFRoaXMgbWV0aG9kIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBvbmUgb2YgdGhlIG92ZXJsb2FkZWQgPGNvZGU+IHNldERhdGFTb3VyY2UgPC9jb2RlPiBtZXRob2RzLgorICAgICAqIEB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uIGlmIGl0IGlzIGNhbGxlZCBpbiBhbiBpbnZhbGlkIHN0YXRlCisgICAgICoKKyAgICAgLy8gRklYTUU6IHVuaGlkZS4KKyAgICAgLy8gRklYTUU6IGxpbmsgdG8gQXVkaW9FZmZlY3QgY2xhc3Mgd2hlbiBwdWJsaWMuCisgICAgICogQGhpZGUKKyAgICAgKi8KKyAgICBwdWJsaWMgbmF0aXZlIHZvaWQgc2V0QXVkaW9TZXNzaW9uSWQoaW50IHNlc3Npb25JZCkgIHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24sIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbjsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGF1ZGlvIHNlc3Npb24gSUQuCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRoZSBhdWRpbyBzZXNzaW9uIElELiB7QHNlZSAjc2V0QXVkaW9TZXNzaW9uSWQoaW50KX0uCisgICAgICogTm90ZSB0aGF0IHRoZSBhdWRpbyBzZXNzaW9uIElEIGlzIDAgb25seSBpZiBhIHByb2JsZW0gb2NjdXJlZCB3aGVuIHRoZSBNZWRpYVBsYXllciB3YXMgY29udHJ1Y3RlZC4KKyAgICAgLy8gRklYTUU6IHVuaGlkZS4KKyAgICAgKiBAaGlkZQorICAgICAqLworICAgIHB1YmxpYyBuYXRpdmUgaW50IGdldEF1ZGlvU2Vzc2lvbklkKCk7CisKKyAgICAvKioKICAgICAgKiBAcGFyYW0gcmVxdWVzdCBQYXJjZWwgZGVzdGluYXRlZCB0byB0aGUgbWVkaWEgcGxheWVyLiBUaGUKICAgICAgKiAgICAgICAgICAgICAgICBJbnRlcmZhY2UgdG9rZW4gbXVzdCBiZSBzZXQgdG8gdGhlIElNZWRpYVBsYXllcgogICAgICAqICAgICAgICAgICAgICAgIG9uZSB0byBiZSByb3V0ZWQgY29ycmVjdGx5IHRocm91Z2ggdGhlIHN5c3RlbS4KQEAgLTE1MjMsNiArMTU2NywxNSBAQAogICAgICAqLwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE1FRElBX0lORk9fVklERU9fVFJBQ0tfTEFHR0lORyA9IDcwMDsKIAorICAgIC8qKiBNZWRpYVBsYXllciBpcyB0ZW1wb3JhcmlseSBwYXVzaW5nIHBsYXliYWNrIGludGVybmFsbHkgaW4gb3JkZXIgdG8KKyAgICAgKiBidWZmZXIgbW9yZSBkYXRhLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE1FRElBX0lORk9fQlVGRkVSSU5HX1NUQVJUID0gNzAxOworCisgICAgLyoqIE1lZGlhUGxheWVyIGlzIHJlc3VtaW5nIHBsYXliYWNrIGFmdGVyIGZpbGxpbmcgYnVmZmVycy4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBNRURJQV9JTkZPX0JVRkZFUklOR19FTkQgPSA3MDI7CisKICAgICAvKiogQmFkIGludGVybGVhdmluZyBtZWFucyB0aGF0IGEgbWVkaWEgaGFzIGJlZW4gaW1wcm9wZXJseSBpbnRlcmxlYXZlZCBvcgogICAgICAqIG5vdCBpbnRlcmxlYXZlZCBhdCBhbGwsIGUuZyBoYXMgYWxsIHRoZSB2aWRlbyBzYW1wbGVzIGZpcnN0IHRoZW4gYWxsIHRoZQogICAgICAqIGF1ZGlvIG9uZXMuIFZpZGVvIGlzIHBsYXlpbmcgYnV0IGEgbG90IG9mIGRpc2sgc2Vla3MgbWF5IGJlIGhhcHBlbmluZy4KZGlmZiAtLWdpdCBhL21lZGlhL2phdmEvYW5kcm9pZC9tZWRpYS9QcmVzZXRSZXZlcmIuamF2YSBiL21lZGlhL2phdmEvYW5kcm9pZC9tZWRpYS9QcmVzZXRSZXZlcmIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44M2EwMWE0Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvamF2YS9hbmRyb2lkL21lZGlhL1ByZXNldFJldmVyYi5qYXZhCkBAIC0wLDAgKzEsMjE5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBhbmRyb2lkLm1lZGlhOworCitpbXBvcnQgYW5kcm9pZC5hcHAuQWN0aXZpdHk7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKK2ltcG9ydCBhbmRyb2lkLm9zLkJ1bmRsZTsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOworaW1wb3J0IGphdmEubmlvLkJ5dGVPcmRlcjsKK2ltcG9ydCBqYXZhLm5pby5CeXRlQnVmZmVyOworCitpbXBvcnQgYW5kcm9pZC5tZWRpYS5BdWRpb0VmZmVjdDsKKworLyoqCisgKiBBIHNvdW5kIGdlbmVyYXRlZCB3aXRoaW4gYSByb29tIHRyYXZlbHMgaW4gbWFueSBkaXJlY3Rpb25zLiBUaGUgbGlzdGVuZXIgZmlyc3QgaGVhcnMgdGhlCisgKiBkaXJlY3Qgc291bmQgZnJvbSB0aGUgc291cmNlIGl0c2VsZi4gTGF0ZXIsIGhlIG9yIHNoZSBoZWFycyBkaXNjcmV0ZSBlY2hvZXMgY2F1c2VkIGJ5IHNvdW5kCisgKiBib3VuY2luZyBvZmYgbmVhcmJ5IHdhbGxzLCB0aGUgY2VpbGluZyBhbmQgdGhlIGZsb29yLiBBcyBzb3VuZCB3YXZlcyBhcnJpdmUgYWZ0ZXIKKyAqIHVuZGVyZ29pbmcgbW9yZSBhbmQgbW9yZSByZWZsZWN0aW9ucywgaW5kaXZpZHVhbCByZWZsZWN0aW9ucyBiZWNvbWUgaW5kaXN0aW5ndWlzaGFibGUgYW5kCisgKiB0aGUgbGlzdGVuZXIgaGVhcnMgY29udGludW91cyByZXZlcmJlcmF0aW9uIHRoYXQgZGVjYXlzIG92ZXIgdGltZS4KKyAqIFJldmVyYiBpcyB2aXRhbCBmb3IgbW9kZWxpbmcgYSBsaXN0ZW5lcidzIGVudmlyb25tZW50LiBJdCBjYW4gYmUgdXNlZCBpbiBtdXNpYyBhcHBsaWNhdGlvbnMKKyAqIHRvIHNpbXVsYXRlIG11c2ljIGJlaW5nIHBsYXllZCBiYWNrIGluIHZhcmlvdXMgZW52aXJvbm1lbnRzLCBvciBpbiBnYW1lcyB0byBpbW1lcnNlIHRoZQorICogbGlzdGVuZXIgd2l0aGluIHRoZSBnYW1lJ3MgZW52aXJvbm1lbnQuCisgKiBUaGUgUHJlc2V0UmV2ZXJiIGNsYXNzIGFsbG93cyBhbiBhcHBsaWNhdGlvbiB0byBjb25maWd1cmUgdGhlIGdsb2JhbCByZXZlcmIgdXNpbmcgYSByZXZlcmIgcHJlc2V0LgorICogVGhpcyBpcyBwcmltYXJpbHkgdXNlZCBmb3IgYWRkaW5nIHNvbWUgcmV2ZXJiIGluIGEgbXVzaWMgcGxheWJhY2sgY29udGV4dC4gQXBwbGljYXRpb25zCisgKiByZXF1aXJpbmcgY29udHJvbCBvdmVyIGEgbW9yZSBhZHZhbmNlZCBlbnZpcm9ubWVudGFsIHJldmVyYiBhcmUgYWR2aXNlZCB0byB1c2UgdGhlCisgLy8gVE9ETyB3aGVuIEVudmlyb25tZW50YWxSZXZlcmIgaXMgdW5oaWRkZW4KKyAvLyB7X2F0X2xpbmsgYW5kcm9pZC5tZWRpYS5FbnZpcm9ubWVudGFsUmV2ZXJifSBjbGFzcy4KKyAqIDxwPkFuIGFwcGxpY2F0aW9uIGNyZWF0ZXMgYSBQcmVzZXRSZXZlcmIgb2JqZWN0IHRvIGluc3RhbnRpYXRlIGFuZCBjb250cm9sIGEgcmV2ZXJiIGVuZ2luZSBpbiB0aGUKKyAqIGF1ZGlvIGZyYW1ld29yay4KKyAqIDxwPlRoZSBtZXRob2RzLCBwYXJhbWV0ZXIgdHlwZXMgYW5kIHVuaXRzIGV4cG9zZWQgYnkgdGhlIFByZXNldFJldmVyYiBpbXBsZW1lbnRhdGlvbiBhcmUKKyAqIGRpcmVjdGx5IG1hcHBpbmcgdGhvc2UgZGVmaW5lZCBieSB0aGUgT3BlblNMIEVTIDEuMC4xIFNwZWNpZmljYXRpb24KKyAqIChodHRwOi8vd3d3Lmtocm9ub3Mub3JnL29wZW5zbGVzLykgZm9yIHRoZSBTTFByZXNldFJldmVyYkl0ZiBpbnRlcmZhY2UuCisgKiBQbGVhc2UgcmVmZXIgdG8gdGhpcyBzcGVjaWZpY2F0aW9uIGZvciBtb3JlIGRldGFpbHMuCisgKiA8cD5UaGUgUHJlc2V0UmV2ZXJiIGlzIGFuIG91dHB1dCBtaXggYXV4aWxpYXJ5IGVmZmVjdCBhbmQgc2hvdWxkIGJlIGNyZWF0ZWQgb24KKyAqIEF1ZGlvIHNlc3Npb24gMC4gSW4gb3JkZXIgZm9yIGEgTWVkaWFQbGF5ZXIgb3IgQXVkaW9UcmFjayB0byBiZSBmZWQgaW50byB0aGlzIGVmZmVjdCwKKyAqIHRoZXkgbXVzdCBiZSBleHBsaWNpdGVseSBhdHRhY2hlZCB0byBpdCBhbmQgYSBzZW5kIGxldmVsIG11c3QgYmUgc3BlY2lmaWVkLiBVc2UgdGhlIGVmZmVjdCBJRAorICogcmV0dXJuZWQgYnkgZ2V0SWQoKSBtZXRob2QgdG8gZGVzaWduYXRlIHRoaXMgcGFydGljdWxhciBlZmZlY3Qgd2hlbiBhdHRhY2hpbmcgaXQgdG8gdGhlCisgKiBNZWRpYVBsYXllciBvciBBdWRpb1RyYWNrLgorIC8vIFRPRE8gd2hlbiBBdWRpb0VmZmVjdCBpcyB1bmhpZGRlbgorIC8vIDxwPiBTZWUge19hdF9saW5rIGFuZHJvaWQubWVkaWEuQXVkaW9FZmZlY3R9IGNsYXNzIGZvciBtb3JlIGRldGFpbHMgb24gY29udHJvbGxpbmcgYXVkaW8gZWZmZWN0cy4KKyAqCisgKiB7QGhpZGUgUGVuZGluZyBBUEkgY291bmNpbCByZXZpZXd9CisgKi8KKworcHVibGljIGNsYXNzIFByZXNldFJldmVyYiBleHRlbmRzIEF1ZGlvRWZmZWN0IHsKKworICAgIHByaXZhdGUgZmluYWwgc3RhdGljIFN0cmluZyBUQUcgPSAiUHJlc2V0UmV2ZXJiIjsKKworICAgIC8vIFRoZXNlIGNvbnN0YW50cyBtdXN0IGJlIHN5bmNocm9uaXplZCB3aXRoIHRob3NlIGluCisgICAgLy8gZnJhbWV3b3Jrcy9iYXNlL2luY2x1ZGUvbWVkaWEvRWZmZWN0UHJlc2V0UmV2ZXJiQXBpLmgKKworICAgIC8qKgorICAgICAqIFByZXNldC4gUGFyYW1ldGVyIElEIGZvcgorICAgICAqIHtAbGluayBhbmRyb2lkLm1lZGlhLlByZXNldFJldmVyYi5PblBhcmFtZXRlckNoYW5nZUxpc3RlbmVyfQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBBUkFNX1BSRVNFVCA9IDA7CisKKyAgICAvKioKKyAgICAgKiBSb29tIGxldmVsLiBQYXJhbWV0ZXIgSUQgZm9yCisgICAgICoge0BsaW5rIGFuZHJvaWQubWVkaWEuUHJlc2V0UmV2ZXJiLk9uUGFyYW1ldGVyQ2hhbmdlTGlzdGVuZXJ9CisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUFJFU0VUX05PTkUgICAgICAgID0gMDsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBQUkVTRVRfU01BTExST09NICAgPSAxOworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBSRVNFVF9NRURJVU1ST09NICA9IDI7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUFJFU0VUX0xBUkdFUk9PTSAgID0gMzsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBQUkVTRVRfTUVESVVNSEFMTCAgPSA0OworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBSRVNFVF9MQVJHRUhBTEwgICA9IDU7CisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUFJFU0VUX1BMQVRFICAgICAgID0gNjsKKworICAgIC8qKgorICAgICAqIFJlZ2lzdGVyZWQgbGlzdGVuZXIgZm9yIHBhcmFtZXRlciBjaGFuZ2VzLgorICAgICAqLworICAgIHByaXZhdGUgT25QYXJhbWV0ZXJDaGFuZ2VMaXN0ZW5lciBtUGFyYW1MaXN0ZW5lciA9IG51bGw7CisKKyAgICAvKioKKyAgICAgKiBMaXN0ZW5lciB1c2VkIGludGVybmFsbHkgdG8gdG8gcmVjZWl2ZSByYXcgcGFyYW1ldGVyIGNoYW5nZSBldmVudCBmcm9tIEF1ZGlvRWZmZWN0IHN1cGVyIGNsYXNzCisgICAgICovCisgICAgcHJpdmF0ZSBCYXNlUGFyYW1ldGVyTGlzdGVuZXIgbUJhc2VQYXJhbUxpc3RlbmVyID0gbnVsbDsKKworICAgIC8qKgorICAgICAqIExvY2sgZm9yIGFjY2VzcyB0byBtUGFyYW1MaXN0ZW5lcgorICAgICAqLworICAgIHByaXZhdGUgZmluYWwgT2JqZWN0IG1QYXJhbUxpc3RlbmVyTG9jayA9IG5ldyBPYmplY3QoKTsKKworICAgIC8qKgorICAgICAqIENsYXNzIGNvbnN0cnVjdG9yLgorICAgICAqIEBwYXJhbSBwcmlvcml0eSB0aGUgcHJpb3JpdHkgbGV2ZWwgcmVxdWVzdGVkIGJ5IHRoZSBhcHBsaWNhdGlvbiBmb3IgY29udHJvbGxpbmcgdGhlCisgICAgICogUHJlc2V0UmV2ZXJiIGVuZ2luZS4gQXMgdGhlIHNhbWUgZW5naW5lIGNhbiBiZSBzaGFyZWQgYnkgc2V2ZXJhbCBhcHBsaWNhdGlvbnMsIHRoaXMKKyAgICAgKiBwYXJhbWV0ZXIgaW5kaWNhdGVzIGhvdyBtdWNoIHRoZSByZXF1ZXN0aW5nIGFwcGxpY2F0aW9uIG5lZWRzIGNvbnRyb2wgb2YgZWZmZWN0IHBhcmFtZXRlcnMuCisgICAgICogVGhlIG5vcm1hbCBwcmlvcml0eSBpcyAwLCBhYm92ZSBub3JtYWwgaXMgYSBwb3NpdGl2ZSBudW1iZXIsIGJlbG93IG5vcm1hbCBhIG5lZ2F0aXZlIG51bWJlci4KKyAgICAgKiBAcGFyYW0gYXVkaW9TZXNzaW9uICBTeXN0ZW0gd2lkZSB1bmlxdWUgYXVkaW8gc2Vzc2lvbiBpZGVudGlmaWVyLiBJZiBhdWRpb1Nlc3Npb24KKyAgICAgKiAgaXMgbm90IDAsIHRoZSBQcmVzZXRSZXZlcmIgd2lsbCBiZSBhdHRhY2hlZCB0byB0aGUgTWVkaWFQbGF5ZXIgb3IgQXVkaW9UcmFjayBpbiB0aGUKKyAgICAgKiAgc2FtZSBhdWRpbyBzZXNzaW9uLiBPdGhlcndpc2UsIHRoZSBQcmVzZXRSZXZlcmIgd2lsbCBhcHBseSB0byB0aGUgb3V0cHV0IG1peC4KKyAgICAgKiAgQXMgdGhlIFByZXNldFJldmVyYiBpcyBhbiBhdXhpbGlhcnkgZWZmZWN0IGl0IGlzIHJlY29tbWVuZGVkIHRvIGluc3RhbnRpYXRlIGl0IG9uCisgICAgICogIGF1ZGlvIHNlc3Npb24gMCBhbmQgdG8gYXR0YWNoIGl0IHRvIHRoZSBNZWRpYVBMYXllciBhdXhpbGlhcnkgb3V0cHV0LgorICAgICAqCisgICAgICogQHRocm93cyBqYXZhLmxhbmcuSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uCisgICAgICogQHRocm93cyBqYXZhLmxhbmcuVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIGphdmEubGFuZy5SdW50aW1lRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIFByZXNldFJldmVyYihpbnQgcHJpb3JpdHksIGludCBhdWRpb1Nlc3Npb24pCisgICAgdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiwgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24sIFJ1bnRpbWVFeGNlcHRpb24geworICAgICAgICBzdXBlcihFRkZFQ1RfVFlQRV9QUkVTRVRfUkVWRVJCLCBFRkZFQ1RfVFlQRV9OVUxMLCBwcmlvcml0eSwgYXVkaW9TZXNzaW9uKTsKKyAgICAgICAgTG9nLmUoVEFHLCAiY29udHJ1Y3RvciIpOworICAgIH0KKworICAgIC8qKgorICAgICAqICBFbmFibGVzIGEgcHJlc2V0IG9uIHRoZSByZXZlcmIuCisgICAgICogIDxwPlRoZSByZXZlcmIgUFJFU0VUX05PTkUgZGlzYWJsZXMgYW55IHJldmVyYiBmcm9tIHRoZSBjdXJyZW50IG91dHB1dCBidXQgZG9lcyBub3QgZnJlZSB0aGUKKyAgICAgKiAgcmVzb3VyY2VzIGFzc29jaWF0ZWQgd2l0aCB0aGUgcmV2ZXJiLiBGb3IgYW4gYXBwbGljYXRpb24gdG8gc2lnbmFsIHRvIHRoZSBpbXBsZW1lbnRhdGlvbgorICAgICAqICB0byBmcmVlIHRoZSByZXNvdXJjZXMsIGl0IG11c3QgY2FsbCB0aGUgcmVsZWFzZSgpIG1ldGhvZC4KKyAgICAgKiBAcGFyYW0gcHJlc2V0IFRoaXMgbXVzdCBiZSBvbmUgb2YgdGhlIHRoZSBwcmVzZXQgY29uc3RhbnRzIGRlZmluZWQgaW4gdGhpcyBjbGFzcy4KKyAgICAgKiBlLmcuIHtAbGluayAjUFJFU0VUX1NNQUxMUk9PTX0KKyAgICAgKiBAdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbgorICAgICAqIEB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uCisgICAgICogQHRocm93cyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFByZXNldChzaG9ydCBwcmVzZXQpCisgICAgdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiwgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uLCBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiB7CisgICAgICAgIGNoZWNrU3RhdHVzKHNldFBhcmFtZXRlcihQQVJBTV9QUkVTRVQsIHByZXNldCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgY3VycmVudCByZXZlcmIgcHJlc2V0LgorICAgICAqIEByZXR1cm4gUHJlc2V0IHRoYXQgaXMgc2V0IGF0IHRoZSBtb21lbnQuCisgICAgICogQHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbgorICAgICAqIEB0aHJvd3MgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgc2hvcnQgZ2V0UHJlc2V0KCkKKyAgICB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uLCBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24sIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIHsKKyAgICAgICAgaW50W10gcGFyYW0gPSBuZXcgaW50WzFdOworICAgICAgICBwYXJhbVswXSA9IFBBUkFNX1BSRVNFVDsKKyAgICAgICAgc2hvcnRbXSB2YWx1ZSA9IG5ldyBzaG9ydFsxXTsKKyAgICAgICAgY2hlY2tTdGF0dXMoZ2V0UGFyYW1ldGVyKHBhcmFtLCB2YWx1ZSkpOworICAgICAgICByZXR1cm4gdmFsdWVbMF07CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhlIE9uUGFyYW1ldGVyQ2hhbmdlTGlzdGVuZXIgaW50ZXJmYWNlIGRlZmluZXMgYSBtZXRob2QgY2FsbGVkIGJ5IHRoZSBQcmVzZXRSZXZlcmIKKyAgICAgKiB3aGVuIGEgcGFyYW1ldGVyIHZhbHVlIGhhcyBjaGFuZ2VkLgorICAgICAqLworICAgIHB1YmxpYyBpbnRlcmZhY2UgT25QYXJhbWV0ZXJDaGFuZ2VMaXN0ZW5lciAgeworICAgICAgICAvKioKKyAgICAgICAgICogTWV0aG9kIGNhbGxlZCB3aGVuIGEgcGFyYW1ldGVyIHZhbHVlIGhhcyBjaGFuZ2VkLiBUaGUgbWV0aG9kIGlzIGNhbGxlZCBvbmx5IGlmIHRoZQorICAgICAgICAgKiBwYXJhbWV0ZXIgd2FzIGNoYW5nZWQgYnkgYW5vdGhlciBhcHBsaWNhdGlvbiBoYXZpbmcgdGhlIGNvbnRyb2wgb2YgdGhlIHNhbWUKKyAgICAgICAgICogUHJlc2V0UmV2ZXJiIGVuZ2luZS4KKyAgICAgICAgICogQHBhcmFtIGVmZmVjdCB0aGUgUHJlc2V0UmV2ZXJiIG9uIHdoaWNoIHRoZSBpbnRlcmZhY2UgaXMgcmVnaXN0ZXJlZC4KKyAgICAgICAgICogQHBhcmFtIHN0YXR1cyBzdGF0dXMgb2YgdGhlIHNldCBwYXJhbWV0ZXIgb3BlcmF0aW9uLgorICAgICAgICAgLy8gVE9ETyB3aGVuIEF1ZGlvRWZmZWN0IGlzIHVuaGlkZGVuCisgICAgICAgICAvLyBTZWUge19hdF9saW5rIGFuZHJvaWQubWVkaWEuQXVkaW9FZmZlY3Qjc2V0UGFyYW1ldGVyKGJ5dGVbXSwgYnl0ZVtdKX0uCisgICAgICAgICAqIEBwYXJhbSBwYXJhbSBJRCBvZiB0aGUgbW9kaWZpZWQgcGFyYW1ldGVyLiBTZWUge0BsaW5rICNQQVJBTV9QUkVTRVR9IC4uLgorICAgICAgICAgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyBwYXJhbWV0ZXIgdmFsdWUuCisgICAgICAgICAqLworICAgICAgICB2b2lkIG9uUGFyYW1ldGVyQ2hhbmdlKFByZXNldFJldmVyYiBlZmZlY3QsIGludCBzdGF0dXMsIGludCBwYXJhbSwgc2hvcnQgdmFsdWUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIExpc3RlbmVyIHVzZWQgaW50ZXJuYWxseSB0byByZWNlaXZlIHVuZm9ybWF0dGVkIHBhcmFtZXRlciBjaGFuZ2UgZXZlbnRzIGZyb20gQXVkaW9FZmZlY3QKKyAgICAgKiBzdXBlciBjbGFzcy4KKyAgICAgKi8KKyAgICBwcml2YXRlIGNsYXNzIEJhc2VQYXJhbWV0ZXJMaXN0ZW5lciBpbXBsZW1lbnRzIEF1ZGlvRWZmZWN0Lk9uUGFyYW1ldGVyQ2hhbmdlTGlzdGVuZXIgeworICAgICAgICBwcml2YXRlIEJhc2VQYXJhbWV0ZXJMaXN0ZW5lcigpIHsKKworICAgICAgICB9CisgICAgICAgIHB1YmxpYyB2b2lkIG9uUGFyYW1ldGVyQ2hhbmdlKEF1ZGlvRWZmZWN0IGVmZmVjdCwgaW50IHN0YXR1cywgYnl0ZVtdIHBhcmFtLCBieXRlW10gdmFsdWUpIHsKKyAgICAgICAgICAgIE9uUGFyYW1ldGVyQ2hhbmdlTGlzdGVuZXIgbCA9IG51bGw7CisKKyAgICAgICAgICAgIHN5bmNocm9uaXplZCAobVBhcmFtTGlzdGVuZXJMb2NrKSB7CisgICAgICAgICAgICAgICAgaWYgKG1QYXJhbUxpc3RlbmVyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgbCA9IG1QYXJhbUxpc3RlbmVyOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChsICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBpbnQgcCA9IC0xOworICAgICAgICAgICAgICAgIHNob3J0IHYgPSAtMTsKKworICAgICAgICAgICAgICAgIGlmIChwYXJhbS5sZW5ndGggPT0gNCkgeworICAgICAgICAgICAgICAgICAgICBwID0gYnl0ZUFycmF5VG9JbnQocGFyYW0sIDApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoID09IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgdiA9IGJ5dGVBcnJheVRvU2hvcnQodmFsdWUsIDApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAocCAhPSAtMSAmJiB2ICE9IC0xKSB7CisgICAgICAgICAgICAgICAgICAgIGwub25QYXJhbWV0ZXJDaGFuZ2UoUHJlc2V0UmV2ZXJiLnRoaXMsIHN0YXR1cywgcCwgdik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVnaXN0ZXJzIGFuIE9uUGFyYW1ldGVyQ2hhbmdlTGlzdGVuZXIgaW50ZXJmYWNlLgorICAgICAqIEBwYXJhbSBsaXN0ZW5lciBPblBhcmFtZXRlckNoYW5nZUxpc3RlbmVyIGludGVyZmFjZSByZWdpc3RlcmVkCisgICAgICovCisgICAgcHVibGljIHZvaWQgc2V0UGFyYW1ldGVyTGlzdGVuZXIoT25QYXJhbWV0ZXJDaGFuZ2VMaXN0ZW5lciBsaXN0ZW5lcikgeworICAgICAgICBzeW5jaHJvbml6ZWQgKG1QYXJhbUxpc3RlbmVyTG9jaykgeworICAgICAgICAgICAgaWYgKG1QYXJhbUxpc3RlbmVyID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBtUGFyYW1MaXN0ZW5lciA9IGxpc3RlbmVyOworICAgICAgICAgICAgICAgIG1CYXNlUGFyYW1MaXN0ZW5lciA9IG5ldyBCYXNlUGFyYW1ldGVyTGlzdGVuZXIoKTsKKyAgICAgICAgICAgICAgICBzdXBlci5zZXRQYXJhbWV0ZXJMaXN0ZW5lcihtQmFzZVBhcmFtTGlzdGVuZXIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvbWVkaWEvamF2YS9hbmRyb2lkL21lZGlhL1ZpcnR1YWxpemVyLmphdmEgYi9tZWRpYS9qYXZhL2FuZHJvaWQvbWVkaWEvVmlydHVhbGl6ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZjcxMjk3Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvamF2YS9hbmRyb2lkL21lZGlhL1ZpcnR1YWxpemVyLmphdmEKQEAgLTAsMCArMSwyMTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGFuZHJvaWQubWVkaWE7CisKK2ltcG9ydCBhbmRyb2lkLmFwcC5BY3Rpdml0eTsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50OworaW1wb3J0IGFuZHJvaWQub3MuQnVuZGxlOworaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CitpbXBvcnQgamF2YS5uaW8uQnl0ZU9yZGVyOworaW1wb3J0IGphdmEubmlvLkJ5dGVCdWZmZXI7CitpbXBvcnQgamF2YS5uaW8uQ2hhckJ1ZmZlcjsKKworaW1wb3J0IGFuZHJvaWQubWVkaWEuQXVkaW9FZmZlY3Q7CisKKy8qKgorICogQW4gYXVkaW8gdmlydHVhbGl6ZXIgaXMgYSBnZW5lcmFsIG5hbWUgZm9yIGFuIGVmZmVjdCB0byBzcGF0aWFsaXplIGF1ZGlvIGNoYW5uZWxzLiBUaGUgZXhhY3QKKyAqIGJlaGF2aW9yIG9mIHRoaXMgZWZmZWN0IGlzIGRlcGVuZGVudCBvbiB0aGUgbnVtYmVyIG9mIGF1ZGlvIGlucHV0IGNoYW5uZWxzIGFuZCB0aGUgdHlwZXMgYW5kCisgKiBudW1iZXIgb2YgYXVkaW8gb3V0cHV0IGNoYW5uZWxzIG9mIHRoZSBkZXZpY2UuIEZvciBleGFtcGxlLCBpbiB0aGUgY2FzZSBvZiBhIHN0ZXJlbyBpbnB1dCBhbmQKKyAqIHN0ZXJlbyBoZWFkcGhvbmUgb3V0cHV0LCBhIHN0ZXJlbyB3aWRlbmluZyBlZmZlY3QgaXMgdXNlZCB3aGVuIHRoaXMgZWZmZWN0IGlzIHR1cm5lZCBvbi4KKyAqIDxwPkFuIGFwcGxpY2F0aW9uIGNyZWF0ZXMgYSBWaXJ0dWFsaXplciBvYmplY3QgdG8gaW5zdGFudGlhdGUgYW5kIGNvbnRyb2wgYSB2aXJ0dWFsaXplciBlbmdpbmUKKyAqIGluIHRoZSBhdWRpbyBmcmFtZXdvcmsuCisgKiA8cD5UaGUgbWV0aG9kcywgcGFyYW1ldGVyIHR5cGVzIGFuZCB1bml0cyBleHBvc2VkIGJ5IHRoZSBWaXJ0dWFsaXplciBpbXBsZW1lbnRhdGlvbiBhcmUgZGlyZWN0bHkKKyAqIG1hcHBpbmcgdGhvc2UgZGVmaW5lZCBieSB0aGUgT3BlblNMIEVTIDEuMC4xIFNwZWNpZmljYXRpb24gKGh0dHA6Ly93d3cua2hyb25vcy5vcmcvb3BlbnNsZXMvKQorICogZm9yIHRoZSBTTFZpcnR1YWxpemVySXRmIGludGVyZmFjZS4gUGxlYXNlIHJlZmVyIHRvIHRoaXMgc3BlY2lmaWNhdGlvbiBmb3IgbW9yZSBkZXRhaWxzLgorICogPHA+VG8gYXR0YWNoIHRoZSBWaXJ0dWFsaXplciB0byBhIHBhcnRpY3VsYXIgQXVkaW9UcmFjayBvciBNZWRpYVBsYXllciwgc3BlY2lmeSB0aGUgYXVkaW8gc2Vzc2lvbgorICogSUQgb2YgdGhpcyBBdWRpb1RyYWNrIG9yIE1lZGlhUGxheWVyIHdoZW4gY29uc3RydWN0aW5nIHRoZSBWaXJ0dWFsaXplci4gSWYgdGhlIGF1ZGlvIHNlc3Npb24gSUQgMAorICogaXMgc3BlY2lmaWVkLCB0aGUgVmlydHVhbGl6ZXIgYXBwbGllcyB0byB0aGUgbWFpbiBhdWRpbyBvdXRwdXQgbWl4LgorIC8vIFRPRE8gd2hlbiBBdWRpb0VmZmVjdCBpcyB1bmhpZGRlbgorIC8vIDxwPiBTZWUge19hdF9saW5rIGFuZHJvaWQubWVkaWEuQXVkaW9FZmZlY3R9IGNsYXNzIGZvciBtb3JlIGRldGFpbHMgb24gY29udHJvbGxpbmcgYXVkaW8gZWZmZWN0cy4KKyAqCisgKiB7QGhpZGUgUGVuZGluZyBBUEkgY291bmNpbCByZXZpZXd9CisgKi8KKworcHVibGljIGNsYXNzIFZpcnR1YWxpemVyIGV4dGVuZHMgQXVkaW9FZmZlY3QgeworCisgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgU3RyaW5nIFRBRyA9ICJWaXJ0dWFsaXplciI7CisKKyAgICAvLyBUaGVzZSBjb25zdGFudHMgbXVzdCBiZSBzeW5jaHJvbml6ZWQgd2l0aCB0aG9zZSBpbiBmcmFtZXdvcmtzL2Jhc2UvaW5jbHVkZS9tZWRpYS9FZmZlY3RWaXJ0dWFsaXplckFwaS5oCisgICAgLyoqCisgICAgICogSXMgc3RyZW5ndGggcGFyYW1ldGVyIHN1cHBvcnRlZCBieSB2aXJ0dWFsaXplciBlbmdpbmUuIFBhcmFtZXRlciBJRCBmb3IgZ2V0UGFyYW1ldGVyKCkuCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUEFSQU1fU1RSRU5HVEhfU1VQUE9SVEVEID0gMDsKKyAgICAvKioKKyAgICAgKiBWaXJ0dWFsaXplciBlZmZlY3Qgc3RyZW5ndGguIFBhcmFtZXRlciBJRCBmb3IKKyAgICAgKiB7QGxpbmsgYW5kcm9pZC5tZWRpYS5WaXJ0dWFsaXplci5PblBhcmFtZXRlckNoYW5nZUxpc3RlbmVyfQorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBBUkFNX1NUUkVOR1RIID0gMTsKKworICAgIC8qKgorICAgICAqIEluZGljYXRlcyBpZiBzdHJlbmd0aCBwYXJhbWV0ZXIgaXMgc3VwcG9ydGVkIGJ5IHRoZSB2aXJ0dWFsaXplciBlbmdpbmUKKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gbVN0cmVuZ3RoU3VwcG9ydGVkID0gZmFsc2U7CisKKyAgICAvKioKKyAgICAgKiBSZWdpc3RlcmVkIGxpc3RlbmVyIGZvciBwYXJhbWV0ZXIgY2hhbmdlcy4KKyAgICAgKi8KKyAgICBwcml2YXRlIE9uUGFyYW1ldGVyQ2hhbmdlTGlzdGVuZXIgbVBhcmFtTGlzdGVuZXIgPSBudWxsOworCisgICAgLyoqCisgICAgICogTGlzdGVuZXIgdXNlZCBpbnRlcm5hbGx5IHRvIHRvIHJlY2VpdmUgcmF3IHBhcmFtZXRlciBjaGFuZ2UgZXZlbnQgZnJvbSBBdWRpb0VmZmVjdCBzdXBlciBjbGFzcworICAgICAqLworICAgIHByaXZhdGUgQmFzZVBhcmFtZXRlckxpc3RlbmVyIG1CYXNlUGFyYW1MaXN0ZW5lciA9IG51bGw7CisKKyAgICAvKioKKyAgICAgKiBMb2NrIGZvciBhY2Nlc3MgdG8gbVBhcmFtTGlzdGVuZXIKKyAgICAgKi8KKyAgICBwcml2YXRlIGZpbmFsIE9iamVjdCBtUGFyYW1MaXN0ZW5lckxvY2sgPSBuZXcgT2JqZWN0KCk7CisKKyAgICAvKioKKyAgICAgKiBDbGFzcyBjb25zdHJ1Y3Rvci4KKyAgICAgKiBAcGFyYW0gcHJpb3JpdHkgdGhlIHByaW9yaXR5IGxldmVsIHJlcXVlc3RlZCBieSB0aGUgYXBwbGljYXRpb24gZm9yIGNvbnRyb2xsaW5nIHRoZSBWaXJ0dWFsaXplcgorICAgICAqIGVuZ2luZS4gQXMgdGhlIHNhbWUgZW5naW5lIGNhbiBiZSBzaGFyZWQgYnkgc2V2ZXJhbCBhcHBsaWNhdGlvbnMsIHRoaXMgcGFyYW1ldGVyIGluZGljYXRlcworICAgICAqIGhvdyBtdWNoIHRoZSByZXF1ZXN0aW5nIGFwcGxpY2F0aW9uIG5lZWRzIGNvbnRyb2wgb2YgZWZmZWN0IHBhcmFtZXRlcnMuIFRoZSBub3JtYWwgcHJpb3JpdHkKKyAgICAgKiBpcyAwLCBhYm92ZSBub3JtYWwgaXMgYSBwb3NpdGl2ZSBudW1iZXIsIGJlbG93IG5vcm1hbCBhIG5lZ2F0aXZlIG51bWJlci4KKyAgICAgKiBAcGFyYW0gYXVkaW9TZXNzaW9uICBTeXN0ZW0gd2lkZSB1bmlxdWUgYXVkaW8gc2Vzc2lvbiBpZGVudGlmaWVyLiBJZiBhdWRpb1Nlc3Npb24KKyAgICAgKiAgaXMgbm90IDAsIHRoZSBWaXJ0dWFsaXplciB3aWxsIGJlIGF0dGFjaGVkIHRvIHRoZSBNZWRpYVBsYXllciBvciBBdWRpb1RyYWNrIGluIHRoZQorICAgICAqICBzYW1lIGF1ZGlvIHNlc3Npb24uIE90aGVyd2lzZSwgdGhlIFZpcnR1YWxpemVyIHdpbGwgYXBwbHkgdG8gdGhlIG91dHB1dCBtaXguCisgICAgICoKKyAgICAgKiBAdGhyb3dzIGphdmEubGFuZy5JbGxlZ2FsU3RhdGVFeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIGphdmEubGFuZy5JbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIGphdmEubGFuZy5VbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbgorICAgICAqIEB0aHJvd3MgamF2YS5sYW5nLlJ1bnRpbWVFeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgVmlydHVhbGl6ZXIoaW50IHByaW9yaXR5LCBpbnQgYXVkaW9TZXNzaW9uKQorICAgIHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24sIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiwKKyAgICAgICAgICAgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24sIFJ1bnRpbWVFeGNlcHRpb24geworICAgICAgICBzdXBlcihFRkZFQ1RfVFlQRV9WSVJUVUFMSVpFUiwgRUZGRUNUX1RZUEVfTlVMTCwgcHJpb3JpdHksIGF1ZGlvU2Vzc2lvbik7CisKKyAgICAgICAgc2hvcnRbXSB2YWx1ZSA9IG5ldyBzaG9ydFsxXTsKKyAgICAgICAgY2hlY2tTdGF0dXMoZ2V0UGFyYW1ldGVyKFBBUkFNX1NUUkVOR1RIX1NVUFBPUlRFRCwgdmFsdWUpKTsKKyAgICAgICAgbVN0cmVuZ3RoU3VwcG9ydGVkID0gKHZhbHVlWzBdICE9IDApOworICAgIH0KKworICAgIC8qKgorICAgICAqIEluZGljYXRlcyB3aGV0aGVyIHNldHRpbmcgc3RyZW5ndGggaXMgc3VwcG9ydGVkLiBJZiB0aGlzIG1ldGhvZCByZXR1cm5zIGZhbHNlLCBvbmx5IG9uZQorICAgICAqIHN0cmVuZ3RoIGlzIHN1cHBvcnRlZCBhbmQgdGhlIHNldFN0cmVuZ3RoKCkgbWV0aG9kIGFsd2F5cyByb3VuZHMgdG8gdGhhdCB2YWx1ZS4KKyAgICAgKiBAcmV0dXJuIHRydWUgaXMgc3RyZW5ndGggcGFyYW1ldGVyIGlzIHN1cHBvcnRlZCwgZmFsc2Ugb3RoZXJ3aXNlCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gZ2V0U3RyZW5ndGhTdXBwb3J0ZWQoKSB7CisgICAgICAgcmV0dXJuIG1TdHJlbmd0aFN1cHBvcnRlZDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZXRzIHRoZSBzdHJlbmd0aCBvZiB0aGUgdmlydHVhbGl6ZXIgZWZmZWN0LiBJZiB0aGUgaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc3VwcG9ydCBwZXIgbWlsbGUKKyAgICAgKiBhY2N1cmFjeSBmb3Igc2V0dGluZyB0aGUgc3RyZW5ndGgsIGl0IGlzIGFsbG93ZWQgdG8gcm91bmQgdGhlIGdpdmVuIHN0cmVuZ3RoIHRvIHRoZSBuZWFyZXN0CisgICAgICogc3VwcG9ydGVkIHZhbHVlLiBZb3UgY2FuIHVzZSB0aGUge0BsaW5rICNnZXRSb3VuZGVkU3RyZW5ndGgoKX0gbWV0aG9kIHRvIHF1ZXJ5IHRoZQorICAgICAqIChwb3NzaWJseSByb3VuZGVkKSB2YWx1ZSB0aGF0IHdhcyBhY3R1YWxseSBzZXQuCisgICAgICogQHBhcmFtIHN0cmVuZ3RoIFN0cmVuZ3RoIG9mIHRoZSBlZmZlY3QuIFRoZSB2YWxpZCByYW5nZSBmb3Igc3RyZW5ndGggc3RyZW5ndGggaXMgWzAsIDEwMDBdLAorICAgICAqIHdoZXJlIDAgcGVyIG1pbGxlIGRlc2lnbmF0ZXMgdGhlIG1pbGRlc3QgZWZmZWN0IGFuZCAxMDAwIHBlciBtaWxsZSBkZXNpZ25hdGVzIHRoZSBzdHJvbmdlc3QuCisgICAgICogQHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbgorICAgICAqIEB0aHJvd3MgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBzZXRTdHJlbmd0aChzaG9ydCBzdHJlbmd0aCkKKyAgICB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uLCBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24sIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uIHsKKyAgICAgICAgY2hlY2tTdGF0dXMoc2V0UGFyYW1ldGVyKFBBUkFNX1NUUkVOR1RILCBzdHJlbmd0aCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIGN1cnJlbnQgc3RyZW5ndGggb2YgdGhlIGVmZmVjdC4KKyAgICAgKiBAcmV0dXJuIFRoZSBzdHJlbmd0aCBvZiB0aGUgZWZmZWN0LiBUaGUgdmFsaWQgcmFuZ2UgZm9yIHN0cmVuZ3RoIGlzIFswLCAxMDAwXSwgd2hlcmUgMCBwZXIKKyAgICAgKiBtaWxsZSBkZXNpZ25hdGVzIHRoZSBtaWxkZXN0IGVmZmVjdCBhbmQgMTAwMCBwZXIgbWlsbGUgdGhlIHN0cm9uZ2VzdAorICAgICAqIEB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uCisgICAgICogQHRocm93cyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24KKyAgICAgKiBAdGhyb3dzIFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uCisgICAgICovCisgICAgcHVibGljIHNob3J0IGdldFJvdW5kZWRTdHJlbmd0aCgpCisgICAgdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiwgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uLCBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbiB7CisgICAgICAgIHNob3J0W10gdmFsdWUgPSBuZXcgc2hvcnRbMV07CisgICAgICAgIGNoZWNrU3RhdHVzKGdldFBhcmFtZXRlcihQQVJBTV9TVFJFTkdUSCwgdmFsdWUpKTsKKyAgICAgICAgcmV0dXJuIHZhbHVlWzBdOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRoZSBPblBhcmFtZXRlckNoYW5nZUxpc3RlbmVyIGludGVyZmFjZSBkZWZpbmVzIGEgbWV0aG9kIGNhbGxlZCBieSB0aGUgVmlydHVhbGl6ZXIgd2hlbiBhCisgICAgICogcGFyYW1ldGVyIHZhbHVlIGhhcyBjaGFuZ2VkLgorICAgICAqLworICAgIHB1YmxpYyBpbnRlcmZhY2UgT25QYXJhbWV0ZXJDaGFuZ2VMaXN0ZW5lciAgeworICAgICAgICAvKioKKyAgICAgICAgICogTWV0aG9kIGNhbGxlZCB3aGVuIGEgcGFyYW1ldGVyIHZhbHVlIGhhcyBjaGFuZ2VkLiBUaGUgbWV0aG9kIGlzIGNhbGxlZCBvbmx5IGlmIHRoZQorICAgICAgICAgKiBwYXJhbWV0ZXIgd2FzIGNoYW5nZWQgYnkgYW5vdGhlciBhcHBsaWNhdGlvbiBoYXZpbmcgdGhlIGNvbnRyb2wgb2YgdGhlIHNhbWUKKyAgICAgICAgICogVmlydHVhbGl6ZXIgZW5naW5lLgorICAgICAgICAgKiBAcGFyYW0gZWZmZWN0IHRoZSBWaXJ0dWFsaXplciBvbiB3aGljaCB0aGUgaW50ZXJmYWNlIGlzIHJlZ2lzdGVyZWQuCisgICAgICAgICAqIEBwYXJhbSBzdGF0dXMgc3RhdHVzIG9mIHRoZSBzZXQgcGFyYW1ldGVyIG9wZXJhdGlvbi4KKyAgICAgICAgIC8vIFRPRE8gd2hlbiBBdWRpb0VmZmVjdCBpcyB1bmhpZGRlbgorICAgICAgICAgLy8gU2VlIHtfYXRfbGluayBhbmRyb2lkLm1lZGlhLkF1ZGlvRWZmZWN0I3NldFBhcmFtZXRlcihieXRlW10sIGJ5dGVbXSl9LgorICAgICAgICAgKiBAcGFyYW0gcGFyYW0gSUQgb2YgdGhlIG1vZGlmaWVkIHBhcmFtZXRlci4gU2VlIHtAbGluayAjUEFSQU1fU1RSRU5HVEh9IC4uLgorICAgICAgICAgKiBAcGFyYW0gdmFsdWUgdGhlIG5ldyBwYXJhbWV0ZXIgdmFsdWUuCisgICAgICAgICAqLworICAgICAgICB2b2lkIG9uUGFyYW1ldGVyQ2hhbmdlKFZpcnR1YWxpemVyIGVmZmVjdCwgaW50IHN0YXR1cywgaW50IHBhcmFtLCBzaG9ydCB2YWx1ZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogTGlzdGVuZXIgdXNlZCBpbnRlcm5hbGx5IHRvIHJlY2VpdmUgdW5mb3JtYXR0ZWQgcGFyYW1ldGVyIGNoYW5nZSBldmVudHMgZnJvbSBBdWRpb0VmZmVjdAorICAgICAqIHN1cGVyIGNsYXNzLgorICAgICAqLworICAgIHByaXZhdGUgY2xhc3MgQmFzZVBhcmFtZXRlckxpc3RlbmVyIGltcGxlbWVudHMgQXVkaW9FZmZlY3QuT25QYXJhbWV0ZXJDaGFuZ2VMaXN0ZW5lciB7CisgICAgICAgIHByaXZhdGUgQmFzZVBhcmFtZXRlckxpc3RlbmVyKCkgeworCisgICAgICAgIH0KKyAgICAgICAgcHVibGljIHZvaWQgb25QYXJhbWV0ZXJDaGFuZ2UoQXVkaW9FZmZlY3QgZWZmZWN0LCBpbnQgc3RhdHVzLCBieXRlW10gcGFyYW0sIGJ5dGVbXSB2YWx1ZSkgeworICAgICAgICAgICAgT25QYXJhbWV0ZXJDaGFuZ2VMaXN0ZW5lciBsID0gbnVsbDsKKworICAgICAgICAgICAgc3luY2hyb25pemVkIChtUGFyYW1MaXN0ZW5lckxvY2spIHsKKyAgICAgICAgICAgICAgICBpZiAobVBhcmFtTGlzdGVuZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBsID0gbVBhcmFtTGlzdGVuZXI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGwgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGludCBwID0gLTE7CisgICAgICAgICAgICAgICAgc2hvcnQgdiA9IC0xOworCisgICAgICAgICAgICAgICAgaWYgKHBhcmFtLmxlbmd0aCA9PSA0KSB7CisgICAgICAgICAgICAgICAgICAgIHAgPSBieXRlQXJyYXlUb0ludChwYXJhbSwgMCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5sZW5ndGggPT0gMikgeworICAgICAgICAgICAgICAgICAgICB2ID0gYnl0ZUFycmF5VG9TaG9ydCh2YWx1ZSwgMCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChwICE9IC0xICYmIHYgIT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgbC5vblBhcmFtZXRlckNoYW5nZShWaXJ0dWFsaXplci50aGlzLCBzdGF0dXMsIHAsIHYpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFJlZ2lzdGVycyBhbiBPblBhcmFtZXRlckNoYW5nZUxpc3RlbmVyIGludGVyZmFjZS4KKyAgICAgKiBAcGFyYW0gbGlzdGVuZXIgT25QYXJhbWV0ZXJDaGFuZ2VMaXN0ZW5lciBpbnRlcmZhY2UgcmVnaXN0ZXJlZAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldFBhcmFtZXRlckxpc3RlbmVyKE9uUGFyYW1ldGVyQ2hhbmdlTGlzdGVuZXIgbGlzdGVuZXIpIHsKKyAgICAgICAgc3luY2hyb25pemVkIChtUGFyYW1MaXN0ZW5lckxvY2spIHsKKyAgICAgICAgICAgIGlmIChtUGFyYW1MaXN0ZW5lciA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgbVBhcmFtTGlzdGVuZXIgPSBsaXN0ZW5lcjsKKyAgICAgICAgICAgICAgICBtQmFzZVBhcmFtTGlzdGVuZXIgPSBuZXcgQmFzZVBhcmFtZXRlckxpc3RlbmVyKCk7CisgICAgICAgICAgICAgICAgc3VwZXIuc2V0UGFyYW1ldGVyTGlzdGVuZXIobUJhc2VQYXJhbUxpc3RlbmVyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL21lZGlhL2phdmEvYW5kcm9pZC9tZWRpYS9WaXN1YWxpemVyLmphdmEgYi9tZWRpYS9qYXZhL2FuZHJvaWQvbWVkaWEvVmlzdWFsaXplci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmNkZDNjZGYKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9qYXZhL2FuZHJvaWQvbWVkaWEvVmlzdWFsaXplci5qYXZhCkBAIC0wLDAgKzEsNTEwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBhbmRyb2lkLm1lZGlhOworCitpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKK2ltcG9ydCBqYXZhLmxhbmcucmVmLldlYWtSZWZlcmVuY2U7CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBhbmRyb2lkLm9zLkhhbmRsZXI7CitpbXBvcnQgYW5kcm9pZC5vcy5Mb29wZXI7CitpbXBvcnQgYW5kcm9pZC5vcy5NZXNzYWdlOworCisvKioKKyAqIFRoZSBWaXN1YWxpemVyIGNsYXNzIGVuYWJsZXMgYXBwbGljYXRpb24gdG8gcmV0cmlldmUgcGFydCBvZiB0aGUgY3VycmVudGx5IHBsYXlpbmcgYXVkaW8gZm9yCisgKiB2aXN1YWxpemF0aW9uIHB1cnBvc2UuIEl0IGlzIG5vdCBhbiBhdWRpbyByZWNvcmRpbmcgaW50ZXJmYWNlIGFuZCBvbmx5IHJldHVybnMgcGFydGlhbCBhbmQgbG93CisgKiBxdWFsaXR5IGF1ZGlvIGNvbnRlbnQuIEhvd2V2ZXIsIHRvIHByb3RlY3QgcHJpdmFjeSBvZiBjZXJ0YWluIGF1ZGlvIGRhdGEgKGUuZyB2b2ljZSBtYWlsKSB0aGUgdXNlCisgKiBvZiB0aGUgdmlzdWFsaXplciByZXF1aXJlcyB0aGUgcGVybWlzc2lvbiBhbmRyb2lkLnBlcm1pc3Npb24uUkVDT1JEX0FVRElPLgorICogPHA+VGhlIGF1ZGlvIHNlc3Npb24gSUQgcGFzc2VkIHRvIHRoZSBjb25zdHJ1Y3RvciBpbmRpY2F0ZXMgd2hpY2ggYXVkaW8gY29udGVudCBzaG91bGQgYmUKKyAqIHZpc3VhbGl6ZWQ6PGJyPgorICogPHVsPgorICogICA8bGk+SWYgdGhlIHNlc3Npb24gaXMgMCwgdGhlIGF1ZGlvIG91dHB1dCBtaXggaXMgdmlzdWFsaXplZDwvbGk+CisgKiAgIDxsaT5JZiB0aGUgc2Vzc2lvbiBpcyBub3QgMCwgdGhlIGF1ZGlvIGZyb20gYSBwYXJ0aWN1bGFyIHtAbGluayBNZWRpYVBsYXllcn0gb3IKKyAqICAge0BsaW5rIEF1ZGlvVHJhY2t9CisgKiAgIHVzaW5nIHRoaXMgYXVkaW8gc2Vzc2lvbiBpcyB2aXN1YWxpemVkIDwvbGk+CisgKiA8L3VsPgorICogPHA+VHdvIHR5cGVzIG9mIHJlcHJlc2VudGF0aW9uIG9mIGF1ZGlvIGNvbnRlbnQgY2FuIGJlIGNhcHR1cmVkOiA8YnI+CisgKiA8dWw+CisgKiAgIDxsaT5XYXZlZm9ybSBkYXRhOiBjb25zZWN1dGl2ZSA4LWJpdCAodW5zaWduZWQpIG1vbm8gc2FtcGxlcyBieSB1c2luZyB0aGUKKyAqICAge0BsaW5rICNnZXRXYXZlRm9ybShieXRlW10pfSBtZXRob2Q8L2xpPgorICogICA8bGk+RnJlcXVlbmN5IGRhdGE6IDgtYml0IG1hZ25pdHVkZSBGRlQgYnkgdXNpbmcgdGhlIHtAbGluayAjZ2V0RmZ0KGJ5dGVbXSl9IG1ldGhvZDwvbGk+CisgKiA8L3VsPgorICogPHA+VGhlIGxlbmd0aCBvZiB0aGUgY2FwdHVyZSBjYW4gYmUgcmV0cmlldmVkIG9yIHNwZWNpZmllZCBieSBjYWxsaW5nIHJlc3BlY3RpdmVseQorICoge0BsaW5rICNnZXRDYXB0dXJlU2l6ZSgpfSBhbmQge0BsaW5rICNzZXRDYXB0dXJlU2l6ZShpbnQpfSBtZXRob2RzLiBOb3RlIHRoYXQgdGhlIHNpemUgb2YgdGhlIEZGVAorICogaXMgaGFsZiBvZiB0aGUgc3BlY2lmaWVkIGNhcHR1cmUgc2l6ZSBidXQgYm90aCBzaWRlcyBvZiB0aGUgc3BlY3RydW0gYXJlIHJldHVybmVkIHlpZWxkaW5nIGluIGEKKyAqIG51bWJlciBvZiBieXRlcyBlcXVhbCB0byB0aGUgY2FwdHVyZSBzaXplLiBUaGUgY2FwdHVyZSBzaXplIG11c3QgYmUgYSBwb3dlciBvZiAyIGluIHRoZSByYW5nZQorICogcmV0dXJuZWQgYnkge0BsaW5rICNnZXRDYXB0dXJlU2l6ZVJhbmdlKCl9LgorICogPHA+SW4gYWRkaXRpb24gdG8gdGhlIHBvbGxpbmcgY2FwdHVyZSBtb2RlIGRlc2NyaWJlZCBhYm92ZSB3aXRoIHtAbGluayAjZ2V0V2F2ZUZvcm0oYnl0ZVtdKX0gYW5kCisgKiAge0BsaW5rICNnZXRGZnQoYnl0ZVtdKX0gbWV0aG9kcywgYSBjYWxsYmFjayBtb2RlIGlzIGFsc28gYXZhaWxhYmxlIGJ5IGluc3RhbGxpbmcgYSBsaXN0ZW5lciBieQorICogIHVzZSBvZiB0aGUge0BsaW5rICNzZXREYXRhQ2FwdHVyZUxpc3RlbmVyKE9uRGF0YUNhcHR1cmVMaXN0ZW5lciwgaW50LCBib29sZWFuLCBib29sZWFuKX0gbWV0aG9kLgorICogIFRoZSByYXRlIGF0IHdoaWNoIHRoZSBsaXN0ZW5lciBjYXB0dXJlIG1ldGhvZCBpcyBjYWxsZWQgYXMgd2VsbCBhcyB0aGUgdHlwZSBvZiBkYXRhIHJldHVybmVkIGlzCisgKiAgc3BlY2lmaWVkLgorICogPHA+QmVmb3JlIGNhcHR1cmluZyBkYXRhLCB0aGUgVmlzdWFsaXplciBtdXN0IGJlIGVuYWJsZWQgYnkgY2FsbGluZyB0aGUKKyAqIHtAbGluayAjc2V0RW5hYmxlZChib29sZWFuKX0gbWV0aG9kLgorICogV2hlbiBkYXRhIGNhcHR1cmUgaXMgbm90IG5lZWRlZCBhbnkgbW9yZSwgdGhlIFZpc3VhbGl6ZXIgc2hvdWxkIGJlIGRpc2FibGVkLgorICogPHA+SXQgaXMgZ29vZCBwcmFjdGljZSB0byBjYWxsIHRoZSB7QGxpbmsgI3JlbGVhc2UoKX0gbWV0aG9kIHdoZW4gdGhlIFZpc3VhbGl6ZXIgaXMgbm90IHVzZWQKKyAqIGFueW1vcmUgdG8gZnJlZSB1cCBuYXRpdmUgcmVzb3VyY2VzIGFzc29jaWF0ZWQgdG8gdGhlIFZpc3VhbGl6ZXIgaW5zdGFuY2UuCisgKgorICoge0BoaWRlIFBlbmRpbmcgQVBJIGNvdW5jaWwgcmV2aWV3fQorICovCisKK3B1YmxpYyBjbGFzcyBWaXN1YWxpemVyIHsKKworICAgIHN0YXRpYyB7CisgICAgICAgIFN5c3RlbS5sb2FkTGlicmFyeSgiYXVkaW9lZmZlY3Rfam5pIik7CisgICAgICAgIG5hdGl2ZV9pbml0KCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgU3RyaW5nIFRBRyA9ICJWaXN1YWxpemVyLUpBVkEiOworCisgICAgLyoqCisgICAgICogU3RhdGUgb2YgYSBWaXN1YWxpemVyIG9iamVjdCB0aGF0IHdhcyBub3Qgc3VjY2Vzc2Z1bGx5IGluaXRpYWxpemVkIHVwb24gY3JlYXRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTVEFURV9VTklOSVRJQUxJWkVEID0gMDsKKyAgICAvKioKKyAgICAgKiBTdGF0ZSBvZiBhIFZpc3VhbGl6ZXIgb2JqZWN0IHRoYXQgaXMgcmVhZHkgdG8gYmUgdXNlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTVEFURV9JTklUSUFMSVpFRCAgID0gMTsKKyAgICAvKioKKyAgICAgKiBTdGF0ZSBvZiBhIFZpc3VhbGl6ZXIgb2JqZWN0IHRoYXQgaXMgYWN0aXZlLgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNUQVRFX0VOQUJMRUQgICA9IDI7CisKKyAgICAvLyB0byBrZWVwIGluIHN5bmMgd2l0aCBmcmFtZXdvcmtzL2Jhc2UvbWVkaWEvam5pL2F1ZGlvZWZmZWN0L2FuZHJvaWRfbWVkaWFfVmlzdWFsaXplci5jcHAKKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCBOQVRJVkVfRVZFTlRfUENNX0NBUFRVUkUgPSAwOworICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgaW50IE5BVElWRV9FVkVOVF9GRlRfQ0FQVFVSRSA9IDE7CisKKyAgICAvLyBFcnJvciBjb2RlczoKKyAgICAvKioKKyAgICAgKiBTdWNjZXNzZnVsIG9wZXJhdGlvbi4KKyAgICAgKi8KKyAgICBwdWJsaWMgIHN0YXRpYyBmaW5hbCBpbnQgU1VDQ0VTUyAgICAgICAgICAgICAgPSAwOworICAgIC8qKgorICAgICAqIFVuc3BlY2lmaWVkIGVycm9yLgorICAgICAqLworICAgIHB1YmxpYyAgc3RhdGljIGZpbmFsIGludCBFUlJPUiAgICAgICAgICAgICAgICA9IC0xOworICAgIC8qKgorICAgICAqIEludGVybmFsIG9wcmVhdGlvbiBzdGF0dXMuIE5vdCByZXR1cm5lZCBieSBhbnkgbWV0aG9kLgorICAgICAqLworICAgIHB1YmxpYyAgc3RhdGljIGZpbmFsIGludCBBTFJFQURZX0VYSVNUUyAgICAgICA9IC0yOworICAgIC8qKgorICAgICAqIE9wZXJhdGlvbiBmYWlsZWQgZHVlIHRvIGJhZCBvYmplY3QgaW5pdGlhbGl6YXRpb24uCisgICAgICovCisgICAgcHVibGljICBzdGF0aWMgZmluYWwgaW50IEVSUk9SX05PX0lOSVQgICAgICAgICAgICAgID0gLTM7CisgICAgLyoqCisgICAgICogT3BlcmF0aW9uIGZhaWxlZCBkdWUgdG8gYmFkIHBhcmFtZXRlciB2YWx1ZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgIHN0YXRpYyBmaW5hbCBpbnQgRVJST1JfQkFEX1ZBTFVFICAgICAgICAgICAgPSAtNDsKKyAgICAvKioKKyAgICAgKiBPcGVyYXRpb24gZmFpbGVkIGJlY2F1c2UgaXQgd2FzIHJlcXVlc3RlZCBpbiB3cm9uZyBzdGF0ZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgIHN0YXRpYyBmaW5hbCBpbnQgRVJST1JfSU5WQUxJRF9PUEVSQVRJT04gICAgPSAtNTsKKyAgICAvKioKKyAgICAgKiBPcGVyYXRpb24gZmFpbGVkIGR1ZSB0byBsYWNrIG9mIG1lbW9yeS4KKyAgICAgKi8KKyAgICBwdWJsaWMgIHN0YXRpYyBmaW5hbCBpbnQgRVJST1JfTk9fTUVNT1JZICAgICAgICAgICAgPSAtNjsKKyAgICAvKioKKyAgICAgKiBPcGVyYXRpb24gZmFpbGVkIGR1ZSB0byBkZWFkIHJlbW90ZSBvYmplY3QuCisgICAgICovCisgICAgcHVibGljICBzdGF0aWMgZmluYWwgaW50IEVSUk9SX0RFQURfT0JKRUNUICAgICAgICAgID0gLTc7CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gTWVtYmVyIHZhcmlhYmxlcworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvKioKKyAgICAgKiBJbmRpY2F0ZXMgdGhlIHN0YXRlIG9mIHRoZSBWaXN1YWxpemVyIGluc3RhbmNlCisgICAgICovCisgICAgcHJvdGVjdGVkIGludCBtU3RhdGUgPSBTVEFURV9VTklOSVRJQUxJWkVEOworICAgIC8qKgorICAgICAqIExvY2sgdG8gc3luY2hyb25pemUgYWNjZXNzIHRvIG1TdGF0ZQorICAgICAqLworICAgIHByb3RlY3RlZCBmaW5hbCBPYmplY3QgbVN0YXRlTG9jayA9IG5ldyBPYmplY3QoKTsKKyAgICAvKioKKyAgICAgKiBTeXN0ZW0gd2lkZSB1bmlxdWUgSWRlbnRpZmllciBvZiB0aGUgdmlzdWFsaXplciBlbmdpbmUgdXNlZCBieSB0aGlzIFZpc3VhbGl6ZXIgaW5zdGFuY2UKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgaW50IG1JZDsKKworICAgIC8qKgorICAgICAqIExvY2sgdG8gcHJvdGVjdCBsaXN0ZW5lcnMgdXBkYXRlcyBhZ2FpbnN0IGV2ZW50IG5vdGlmaWNhdGlvbnMKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgZmluYWwgT2JqZWN0IG1MaXN0ZW5lckxvY2sgPSBuZXcgT2JqZWN0KCk7CisgICAgLyoqCisgICAgICogSGFuZGxlciBmb3IgZXZlbnRzIGNvbWluZyBmcm9tIHRoZSBuYXRpdmUgY29kZQorICAgICAqLworICAgIHByb3RlY3RlZCBOYXRpdmVFdmVudEhhbmRsZXIgbU5hdGl2ZUV2ZW50SGFuZGxlciA9IG51bGw7CisgICAgLyoqCisgICAgICogIFBDTSBhbmQgRkZUIGNhcHR1cmUgbGlzdGVuZXIgcmVnaXN0ZXJlZCBieSBjbGllbnQKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgT25EYXRhQ2FwdHVyZUxpc3RlbmVyIG1DYXB0dXJlTGlzdGVuZXIgPSBudWxsOworCisgICAgLy8gYWNjZXNzZWQgYnkgbmF0aXZlIG1ldGhvZHMKKyAgICBwcml2YXRlIGludCBtTmF0aXZlVmlzdWFsaXplcjsKKyAgICBwcml2YXRlIGludCBtSm5pRGF0YTsKKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBDb25zdHJ1Y3RvciwgRmluYWxpemUKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLyoqCisgICAgICogQ2xhc3MgY29uc3RydWN0b3IuCisgICAgICogQHBhcmFtIGF1ZGlvU2Vzc2lvbiAgU3lzdGVtIHdpZGUgdW5pcXVlIGF1ZGlvIHNlc3Npb24gaWRlbnRpZmllci4gSWYgYXVkaW9TZXNzaW9uCisgICAgICogIGlzIG5vdCAwLCB0aGUgdmlzdWFsaXplciB3aWxsIGJlIGF0dGFjaGVkIHRvIHRoZSBNZWRpYVBsYXllciBvciBBdWRpb1RyYWNrIGluIHRoZQorICAgICAqICBzYW1lIGF1ZGlvIHNlc3Npb24uIE90aGVyd2lzZSwgdGhlIFZpc3VhbGl6ZXIgd2lsbCBhcHBseSB0byB0aGUgb3V0cHV0IG1peC4KKyAgICAgKgorICAgICAqIEB0aHJvd3MgamF2YS5sYW5nLlVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uCisgICAgICogQHRocm93cyBqYXZhLmxhbmcuUnVudGltZUV4Y2VwdGlvbgorICAgICAqLworCisgICAgcHVibGljIFZpc3VhbGl6ZXIoaW50IGF1ZGlvU2Vzc2lvbikKKyAgICB0aHJvd3MgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24sIFJ1bnRpbWVFeGNlcHRpb24geworICAgICAgICBpbnRbXSBpZCA9IG5ldyBpbnRbMV07CisKKyAgICAgICAgc3luY2hyb25pemVkIChtU3RhdGVMb2NrKSB7CisgICAgICAgICAgICBtU3RhdGUgPSBTVEFURV9VTklOSVRJQUxJWkVEOworICAgICAgICAgICAgLy8gbmF0aXZlIGluaXRpYWxpemF0aW9uCisgICAgICAgICAgICBpbnQgcmVzdWx0ID0gbmF0aXZlX3NldHVwKG5ldyBXZWFrUmVmZXJlbmNlPFZpc3VhbGl6ZXI+KHRoaXMpLCBhdWRpb1Nlc3Npb24sIGlkKTsKKyAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gU1VDQ0VTUyAmJiByZXN1bHQgIT0gQUxSRUFEWV9FWElTVFMpIHsKKyAgICAgICAgICAgICAgICBMb2cuZShUQUcsICJFcnJvciBjb2RlICIrcmVzdWx0KyIgd2hlbiBpbml0aWFsaXppbmcgVmlzdWFsaXplci4iKTsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKHJlc3VsdCkgeworICAgICAgICAgICAgICAgIGNhc2UgRVJST1JfSU5WQUxJRF9PUEVSQVRJT046CisgICAgICAgICAgICAgICAgICAgIHRocm93IChuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oIkVmZmVjdCBsaWJyYXJ5IG5vdCBsb2FkZWQiKSk7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgKG5ldyBSdW50aW1lRXhjZXB0aW9uKCJDYW5ub3QgaW5pdGlhbGl6ZSBWaXN1YWxpemVyIGVuZ2luZSwgZXJyb3I6ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArcmVzdWx0KSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgbUlkID0gaWRbMF07CisgICAgICAgICAgICBpZiAobmF0aXZlX2dldEVuYWJsZWQoKSkgeworICAgICAgICAgICAgICAgIG1TdGF0ZSA9IFNUQVRFX0VOQUJMRUQ7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1TdGF0ZSA9IFNUQVRFX0lOSVRJQUxJWkVEOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVsZWFzZXMgdGhlIG5hdGl2ZSBWaXN1YWxpemVyIHJlc291cmNlcy4gSXQgaXMgYSBnb29kIHByYWN0aWNlIHRvIHJlbGVhc2UgdGhlCisgICAgICogdmlzdWFsaXphdGlvbiBlbmdpbmUgd2hlbiBub3QgaW4gdXNlLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHJlbGVhc2UoKSB7CisgICAgICAgIHN5bmNocm9uaXplZCAobVN0YXRlTG9jaykgeworICAgICAgICAgICAgbmF0aXZlX3JlbGVhc2UoKTsKKyAgICAgICAgICAgIG1TdGF0ZSA9IFNUQVRFX1VOSU5JVElBTElaRUQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCBmaW5hbGl6ZSgpIHsKKyAgICAgICAgbmF0aXZlX2ZpbmFsaXplKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogRW5hYmxlIG9yIGRpc2FibGUgdGhlIHZpc3VhbGl6YXRpb24gZW5naW5lLgorICAgICAqIEBwYXJhbSBlbmFibGVkIHJlcXVlc3RlZCBlbmFibGUgc3RhdGUKKyAgICAgKiBAcmV0dXJuIHtAbGluayAjU1VDQ0VTU30gaW4gY2FzZSBvZiBzdWNjZXNzLAorICAgICAqIHtAbGluayAjRVJST1JfSU5WQUxJRF9PUEVSQVRJT059IG9yIHtAbGluayAjRVJST1JfREVBRF9PQkpFQ1R9IGluIGNhc2Ugb2YgZmFpbHVyZS4KKyAgICAgKiBAdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyBpbnQgc2V0RW5hYmxlZChib29sZWFuIGVuYWJsZWQpCisgICAgdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiB7CisgICAgICAgIHN5bmNocm9uaXplZCAobVN0YXRlTG9jaykgeworICAgICAgICAgICAgaWYgKChlbmFibGVkICYmIG1TdGF0ZSAhPSBTVEFURV9JTklUSUFMSVpFRCkgfHwKKyAgICAgICAgICAgICAgICAgICAgKCFlbmFibGVkICYmIG1TdGF0ZSAhPSBTVEFURV9FTkFCTEVEKSkgeworICAgICAgICAgICAgICAgIHRocm93KG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oInNldEVuYWJsZWQoKSBjYWxsZWQgaW4gd3Jvbmcgc3RhdGU6ICIrbVN0YXRlKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbnQgc3RhdHVzID0gbmF0aXZlX3NldEVuYWJsZWQoZW5hYmxlZCk7CisgICAgICAgICAgICBpZiAoc3RhdHVzID09IFNVQ0NFU1MpIHsKKyAgICAgICAgICAgICAgICBtU3RhdGUgPSBlbmFibGVkID8gU1RBVEVfRU5BQkxFRCA6IFNUQVRFX0lOSVRJQUxJWkVEOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEdldCBjdXJyZW50IGFjdGl2YXRpb24gc3RhdGUgb2YgdGhlIHZpc3VhbGl6ZXIuCisgICAgICogQHJldHVybiB0cnVlIGlmIHRoZSB2aXN1YWxpemVyIGlzIGFjdGl2ZSwgZmFsc2Ugb3RoZXJ3aXNlCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gZ2V0RW5hYmxlZCgpCisgICAgeworICAgICAgICBzeW5jaHJvbml6ZWQgKG1TdGF0ZUxvY2spIHsKKyAgICAgICAgICAgIGlmIChtU3RhdGUgPT0gU1RBVEVfVU5JTklUSUFMSVpFRCkgeworICAgICAgICAgICAgICAgIHRocm93KG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oImdldEVuYWJsZWQoKSBjYWxsZWQgaW4gd3Jvbmcgc3RhdGU6ICIrbVN0YXRlKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gbmF0aXZlX2dldEVuYWJsZWQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGNhcHR1cmUgc2l6ZSByYW5nZS4KKyAgICAgKiBAcmV0dXJuIHRoZSBtaW5pbnVtIGNhcHR1cmUgc2l6ZSBpcyByZXR1cm5lZCBpbiBmaXJzdCBhcnJheSBlbGVtZW50IGFuZCB0aGUgbWF4aW11bSBpbiBzZWNvbmQKKyAgICAgKiBhcnJheSBlbGVtZW50LgorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgbmF0aXZlIGludFtdIGdldENhcHR1cmVTaXplUmFuZ2UoKTsKKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIG1heGltdW0gY2FwdHVyZSByYXRlIGZvciB0aGUgY2FsbGJhY2sgY2FwdHVyZSBtZXRob2QuIFRoaXMgaXMgdGhlIG1heGltdW0gdmFsdWUKKyAgICAgKiBmb3IgdGhlIHJhdGUgcGFyYW1ldGVyIG9mIHRoZQorICAgICAqIHtAbGluayAjc2V0RGF0YUNhcHR1cmVMaXN0ZW5lcihPbkRhdGFDYXB0dXJlTGlzdGVuZXIsIGludCwgYm9vbGVhbiwgYm9vbGVhbil9IG1ldGhvZC4KKyAgICAgKiBAcmV0dXJuIHRoZSBtYXhpbXVtIGNhcHR1cmUgcmF0ZSBleHByZXNzZWQgaW4gbWlsbGlIZXJ0egorICAgICAqLworICAgIHB1YmxpYyBzdGF0aWMgbmF0aXZlIGludCBnZXRNYXhDYXB0dXJlUmF0ZSgpOworCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgY2FwdHVyZSBzaXplLCBpLmUuIHRoZSBudW1iZXIgb2YgYnl0ZXMgcmV0dXJuZWQgYnkge0BsaW5rICNnZXRXYXZlRm9ybShieXRlW10pfSBhbmQKKyAgICAgKiB7QGxpbmsgI2dldEZmdChieXRlW10pfSBtZXRob2RzLiBUaGUgY2FwdHVyZSBzaXplIG11c3QgYmUgYSBwb3dlciBvZiAyIGluIHRoZSByYW5nZSByZXR1cm5lZAorICAgICAqIGJ5IHtAbGluayAjZ2V0Q2FwdHVyZVNpemVSYW5nZSgpfS4KKyAgICAgKiBUaGlzIG1ldGhvZCBtdXN0IG5vdCBiZSBjYWxsZWQgd2hlbiB0aGUgVmlzdWFsaXplciBpcyBlbmFibGVkLgorICAgICAqIEBwYXJhbSBzaXplIHJlcXVlc3RlZCBjYXB0dXJlIHNpemUKKyAgICAgKiBAcmV0dXJuIHtAbGluayAjU1VDQ0VTU30gaW4gY2FzZSBvZiBzdWNjZXNzLAorICAgICAqIHtAbGluayAjRVJST1JfQkFEX1ZBTFVFfSBpbiBjYXNlIG9mIGZhaWx1cmUuCisgICAgICogQHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IHNldENhcHR1cmVTaXplKGludCBzaXplKQorICAgIHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24geworICAgICAgICBzeW5jaHJvbml6ZWQgKG1TdGF0ZUxvY2spIHsKKyAgICAgICAgICAgIGlmIChtU3RhdGUgIT0gU1RBVEVfSU5JVElBTElaRUQpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyhuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJzZXRDYXB0dXJlU2l6ZSgpIGNhbGxlZCBpbiB3cm9uZyBzdGF0ZTogIittU3RhdGUpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBuYXRpdmVfc2V0Q2FwdHVyZVNpemUoc2l6ZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIGN1cnJlbnQgY2FwdHVyZSBzaXplLgorICAgICAqIEByZXR1cm4gdGhlIGNhcHR1cmUgc2l6ZSBpbiBieXRlcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldENhcHR1cmVTaXplKCkKKyAgICB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uIHsKKyAgICAgICAgc3luY2hyb25pemVkIChtU3RhdGVMb2NrKSB7CisgICAgICAgICAgICBpZiAobVN0YXRlID09IFNUQVRFX1VOSU5JVElBTElaRUQpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyhuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJnZXRDYXB0dXJlU2l6ZSgpIGNhbGxlZCBpbiB3cm9uZyBzdGF0ZTogIittU3RhdGUpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBuYXRpdmVfZ2V0Q2FwdHVyZVNpemUoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIHNhbXBsaW5nIHJhdGUgb2YgdGhlIGNhcHR1cmVkIGF1ZGlvLgorICAgICAqIEByZXR1cm4gdGhlIHNhbXBsaW5nIHJhdGUgaW4gbWlsbGlIZXJ0ei4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldFNhbXBsaW5nUmF0ZSgpCisgICAgdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiB7CisgICAgICAgIHN5bmNocm9uaXplZCAobVN0YXRlTG9jaykgeworICAgICAgICAgICAgaWYgKG1TdGF0ZSA9PSBTVEFURV9VTklOSVRJQUxJWkVEKSB7CisgICAgICAgICAgICAgICAgdGhyb3cobmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiZ2V0U2FtcGxpbmdSYXRlKCkgY2FsbGVkIGluIHdyb25nIHN0YXRlOiAiK21TdGF0ZSkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG5hdGl2ZV9nZXRTYW1wbGluZ1JhdGUoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgYSB3YXZlZm9ybSBjYXB0dXJlIG9mIGN1cnJlbnRseSBwbGF5aW5nIGF1ZGlvIGNvbnRlbnQuIFRoZSBjYXB0dXJlIGNvbnNpc3RzIGluCisgICAgICogYSBudW1iZXIgb2YgY29uc2VjdXRpdmUgOC1iaXQgKHVuc2lnbmVkKSBtb25vIFBDTSBzYW1wbGVzIGVxdWFsIHRvIHRoZSBjYXB0dXJlIHNpemUgcmV0dXJuZWQKKyAgICAgKiBieSB7QGxpbmsgI2dldENhcHR1cmVTaXplKCl9LgorICAgICAqIDxwPlRoaXMgbWV0aG9kIG11c3QgYmUgY2FsbGVkIHdoZW4gdGhlIFZpc3VhbGl6ZXIgaXMgZW5hYmxlZC4KKyAgICAgKiBAcGFyYW0gd2F2ZWZvcm0gYXJyYXkgb2YgYnl0ZXMgd2hlcmUgdGhlIHdhdmVmb3JtIHNob3VsZCBiZSByZXR1cm5lZAorICAgICAqIEByZXR1cm4ge0BsaW5rICNTVUNDRVNTfSBpbiBjYXNlIG9mIHN1Y2Nlc3MsCisgICAgICoge0BsaW5rICNFUlJPUl9OT19NRU1PUll9LCB7QGxpbmsgI0VSUk9SX0lOVkFMSURfT1BFUkFUSU9OfSBvciB7QGxpbmsgI0VSUk9SX0RFQURfT0JKRUNUfQorICAgICAqIGluIGNhc2Ugb2YgZmFpbHVyZS4KKyAgICAgKiBAdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0V2F2ZUZvcm0oYnl0ZVtdIHdhdmVmb3JtKQorICAgIHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24geworICAgICAgICBzeW5jaHJvbml6ZWQgKG1TdGF0ZUxvY2spIHsKKyAgICAgICAgICAgIGlmIChtU3RhdGUgIT0gU1RBVEVfRU5BQkxFRCkgeworICAgICAgICAgICAgICAgIHRocm93KG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oImdldFdhdmVGb3JtKCkgY2FsbGVkIGluIHdyb25nIHN0YXRlOiAiK21TdGF0ZSkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG5hdGl2ZV9nZXRXYXZlRm9ybSh3YXZlZm9ybSk7CisgICAgICAgIH0KKyAgICB9CisgICAgLyoqCisgICAgICogUmV0dXJucyBhIGZyZXF1ZW5jeSBjYXB0dXJlIG9mIGN1cnJlbnRseSBwbGF5aW5nIGF1ZGlvIGNvbnRlbnQuIFRoZSBjYXB0dXJlIGlzIGEgOC1iaXQKKyAgICAgKiBtYWduaXR1ZGUgRkZULiBOb3RlIHRoYXQgdGhlIHNpemUgb2YgdGhlIEZGVCBpcyBoYWxmIG9mIHRoZSBzcGVjaWZpZWQgY2FwdHVyZSBzaXplIGJ1dCBib3RoCisgICAgICogc2lkZXMgb2YgdGhlIHNwZWN0cnVtIGFyZSByZXR1cm5lZCB5aWVsZGluZyBpbiBhIG51bWJlciBvZiBieXRlcyBlcXVhbCB0byB0aGUgY2FwdHVyZSBzaXplLgorICAgICAqIHtAc2VlICNnZXRDYXB0dXJlU2l6ZSgpfS4KKyAgICAgKiA8cD5UaGlzIG1ldGhvZCBtdXN0IGJlIGNhbGxlZCB3aGVuIHRoZSBWaXN1YWxpemVyIGlzIGVuYWJsZWQuCisgICAgICogQHBhcmFtIGZmdCBhcnJheSBvZiBieXRlcyB3aGVyZSB0aGUgRkZUIHNob3VsZCBiZSByZXR1cm5lZAorICAgICAqIEByZXR1cm4ge0BsaW5rICNTVUNDRVNTfSBpbiBjYXNlIG9mIHN1Y2Nlc3MsCisgICAgICoge0BsaW5rICNFUlJPUl9OT19NRU1PUll9LCB7QGxpbmsgI0VSUk9SX0lOVkFMSURfT1BFUkFUSU9OfSBvciB7QGxpbmsgI0VSUk9SX0RFQURfT0JKRUNUfQorICAgICAqIGluIGNhc2Ugb2YgZmFpbHVyZS4KKyAgICAgKiBAdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbgorICAgICAqLworICAgIHB1YmxpYyBpbnQgZ2V0RmZ0KGJ5dGVbXSBmZnQpCisgICAgdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiB7CisgICAgICAgIHN5bmNocm9uaXplZCAobVN0YXRlTG9jaykgeworICAgICAgICAgICAgaWYgKG1TdGF0ZSAhPSBTVEFURV9FTkFCTEVEKSB7CisgICAgICAgICAgICAgICAgdGhyb3cobmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiZ2V0RmZ0KCkgY2FsbGVkIGluIHdyb25nIHN0YXRlOiAiK21TdGF0ZSkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG5hdGl2ZV9nZXRGZnQoZmZ0KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gSW50ZXJmYWNlIGRlZmluaXRpb25zCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8qKgorICAgICAqIFRoZSBPbkRhdGFDYXB0dXJlTGlzdGVuZXIgaW50ZXJmYWNlIGRlZmluZXMgbWV0aG9kcyBjYWxsZWQgYnkgdGhlIFZpc3VhbGl6ZXIgdG8gcGVyaW9kaWNhbGx5CisgICAgICogdXBkYXRlIHRoZSBhdWRpbyB2aXN1YWxpemF0aW9uIGNhcHR1cmUuCisgICAgICogVGhlIGNsaWVudCBhcHBsaWNhdGlvbiBjYW4gaW1wbGVtZW50IHRoaXMgaW50ZXJmYWNlIGFuZCByZWdpc3RlciB0aGUgbGlzdGVuZXIgd2l0aCB0aGUKKyAgICAgKiB7QGxpbmsgI3NldERhdGFDYXB0dXJlTGlzdGVuZXIoT25EYXRhQ2FwdHVyZUxpc3RlbmVyLCBpbnQsIGJvb2xlYW4sIGJvb2xlYW4pfSBtZXRob2QuCisgICAgICovCisgICAgcHVibGljIGludGVyZmFjZSBPbkRhdGFDYXB0dXJlTGlzdGVuZXIgIHsKKyAgICAgICAgLyoqCisgICAgICAgICAqIE1ldGhvZCBjYWxsZWQgd2hlbiBhIG5ldyB3YXZlZm9ybSBjYXB0dXJlIGlzIGF2YWlsYWJsZS4KKyAgICAgICAgICogQHBhcmFtIHZpc3VhbGl6ZXIgVmlzdWFsaXplciBvYmplY3Qgb24gd2hpY2ggdGhlIGxpc3RlbmVyIGlzIHJlZ2lzdGVyZWQuCisgICAgICAgICAqIEBwYXJhbSB3YXZlZm9ybSBhcnJheSBvZiBieXRlcyBjb250YWluaW5nIHRoZSB3YXZlZm9ybSByZXByZXNlbnRhdGlvbi4KKyAgICAgICAgICogQHBhcmFtIHNhbXBsaW5nUmF0ZSBzYW1wbGluZyByYXRlIG9mIHRoZSBhdWRpbyB2aXN1YWxpemVkLgorICAgICAgICAgKi8KKyAgICAgICAgdm9pZCBvbldhdmVGb3JtRGF0YUNhcHR1cmUoVmlzdWFsaXplciB2aXN1YWxpemVyLCBieXRlW10gd2F2ZWZvcm0sIGludCBzYW1wbGluZ1JhdGUpOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBNZXRob2QgY2FsbGVkIHdoZW4gYSBuZXcgZnJlcXVlbmN5IGNhcHR1cmUgaXMgYXZhaWxhYmxlLgorICAgICAgICAgKiBAcGFyYW0gdmlzdWFsaXplciBWaXN1YWxpemVyIG9iamVjdCBvbiB3aGljaCB0aGUgbGlzdGVuZXIgaXMgcmVnaXN0ZXJlZC4KKyAgICAgICAgICogQHBhcmFtIGZmdCBhcnJheSBvZiBieXRlcyBjb250YWluaW5nIHRoZSBmcmVxdWVuY3kgcmVwcmVzZW50YXRpb24uCisgICAgICAgICAqIEBwYXJhbSBzYW1wbGluZ1JhdGUgc2FtcGxpbmcgcmF0ZSBvZiB0aGUgYXVkaW8gdmlzdWFsaXplZC4KKyAgICAgICAgICovCisgICAgICAgIHZvaWQgb25GZnREYXRhQ2FwdHVyZShWaXN1YWxpemVyIHZpc3VhbGl6ZXIsIGJ5dGVbXSBmZnQsIGludCBzYW1wbGluZ1JhdGUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlZ2lzdGVycyBhbiBPbkRhdGFDYXB0dXJlTGlzdGVuZXIgaW50ZXJmYWNlIGFuZCBzcGVjaWZpZXMgdGhlIHJhdGUgYXQgd2hpY2ggdGhlIGNhcHR1cmUKKyAgICAgKiBzaG91bGQgYmUgdXBkYXRlZCBhcyB3ZWxsIGFzIHRoZSB0eXBlIG9mIGNhcHR1cmUgcmVxdWVzdGVkLgorICAgICAqIDxwPkNhbGwgdGhpcyBtZXRob2Qgd2l0aCBhIG51bGwgbGlzdGVuZXIgdG8gc3RvcCByZWNlaXZpbmcgdGhlIGNhcHR1cmUgdXBkYXRlcy4KKyAgICAgKiBAcGFyYW0gbGlzdGVuZXIgT25EYXRhQ2FwdHVyZUxpc3RlbmVyIHJlZ2lzdGVyZWQKKyAgICAgKiBAcGFyYW0gcmF0ZSByYXRlIGluIG1pbGxpSGVydHogYXQgd2hpY2ggdGhlIGNhcHR1cmUgc2hvdWxkIGJlIHVwZGF0ZWQKKyAgICAgKiBAcGFyYW0gd2F2ZWZvcm0gdHJ1ZSBpZiBhIHdhdmVmb3JtIGNhcHR1cmUgaXMgcmVxdWVzdGVkOiB0aGUgb25XYXZlRm9ybURhdGFDYXB0dXJlKCkKKyAgICAgKiBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgb24gdGhlIE9uRGF0YUNhcHR1cmVMaXN0ZW5lciBpbnRlcmZhY2UuCisgICAgICogQHBhcmFtIGZmdCB0cnVlIGlmIGEgZnJlcXVlbmN5IGNhcHR1cmUgaXMgcmVxdWVzdGVkOiB0aGUgb25GZnREYXRhQ2FwdHVyZSgpIG1ldGhvZCB3aWxsIGJlCisgICAgICogY2FsbGVkIG9uIHRoZSBPbkRhdGFDYXB0dXJlTGlzdGVuZXIgaW50ZXJmYWNlLgorICAgICAqIEByZXR1cm4ge0BsaW5rICNTVUNDRVNTfSBpbiBjYXNlIG9mIHN1Y2Nlc3MsCisgICAgICoge0BsaW5rICNFUlJPUl9OT19JTklUfSBvciB7QGxpbmsgI0VSUk9SX0JBRF9WQUxVRX0gaW4gY2FzZSBvZiBmYWlsdXJlLgorICAgICAqLworICAgIHB1YmxpYyBpbnQgc2V0RGF0YUNhcHR1cmVMaXN0ZW5lcihPbkRhdGFDYXB0dXJlTGlzdGVuZXIgbGlzdGVuZXIsCisgICAgICAgICAgICBpbnQgcmF0ZSwgYm9vbGVhbiB3YXZlZm9ybSwgYm9vbGVhbiBmZnQpIHsKKyAgICAgICAgc3luY2hyb25pemVkIChtTGlzdGVuZXJMb2NrKSB7CisgICAgICAgICAgICBtQ2FwdHVyZUxpc3RlbmVyID0gbGlzdGVuZXI7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGxpc3RlbmVyID09IG51bGwpIHsKKyAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSBjYXB0dXJlIGNhbGxiYWNrIGlzIHN0b3BwZWQgaW4gbmF0aXZlIGNvZGUKKyAgICAgICAgICAgIHdhdmVmb3JtID0gZmFsc2U7CisgICAgICAgICAgICBmZnQgPSBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBpbnQgc3RhdHVzID0gbmF0aXZlX3NldFBlcmlvZGljQ2FwdHVyZShyYXRlLCB3YXZlZm9ybSwgZmZ0KTsKKyAgICAgICAgaWYgKHN0YXR1cyA9PSBTVUNDRVNTKSB7CisgICAgICAgICAgICBpZiAoKGxpc3RlbmVyICE9IG51bGwpICYmIChtTmF0aXZlRXZlbnRIYW5kbGVyID09IG51bGwpKSB7CisgICAgICAgICAgICAgICAgTG9vcGVyIGxvb3BlcjsKKyAgICAgICAgICAgICAgICBpZiAoKGxvb3BlciA9IExvb3Blci5teUxvb3BlcigpKSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIG1OYXRpdmVFdmVudEhhbmRsZXIgPSBuZXcgTmF0aXZlRXZlbnRIYW5kbGVyKHRoaXMsIGxvb3Blcik7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgobG9vcGVyID0gTG9vcGVyLmdldE1haW5Mb29wZXIoKSkgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBtTmF0aXZlRXZlbnRIYW5kbGVyID0gbmV3IE5hdGl2ZUV2ZW50SGFuZGxlcih0aGlzLCBsb29wZXIpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIG1OYXRpdmVFdmVudEhhbmRsZXIgPSBudWxsOworICAgICAgICAgICAgICAgICAgICBzdGF0dXMgPSBFUlJPUl9OT19JTklUOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc3RhdHVzOworICAgIH0KKworICAgIC8qKgorICAgICAqIEhlbHBlciBjbGFzcyB0byBoYW5kbGUgdGhlIGZvcndhcmRpbmcgb2YgbmF0aXZlIGV2ZW50cyB0byB0aGUgYXBwcm9wcmlhdGUgbGlzdGVuZXJzCisgICAgICovCisgICAgcHJpdmF0ZSBjbGFzcyBOYXRpdmVFdmVudEhhbmRsZXIgZXh0ZW5kcyBIYW5kbGVyCisgICAgeworICAgICAgICBwcml2YXRlIFZpc3VhbGl6ZXIgbVZpc3VhbGl6ZXI7CisKKyAgICAgICAgcHVibGljIE5hdGl2ZUV2ZW50SGFuZGxlcihWaXN1YWxpemVyIHYsIExvb3BlciBsb29wZXIpIHsKKyAgICAgICAgICAgIHN1cGVyKGxvb3Blcik7CisgICAgICAgICAgICBtVmlzdWFsaXplciA9IHY7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHZvaWQgaGFuZGxlTWVzc2FnZShNZXNzYWdlIG1zZykgeworICAgICAgICAgICAgaWYgKG1WaXN1YWxpemVyID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBPbkRhdGFDYXB0dXJlTGlzdGVuZXIgbCA9IG51bGw7CisgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKG1MaXN0ZW5lckxvY2spIHsKKyAgICAgICAgICAgICAgICBsID0gbVZpc3VhbGl6ZXIubUNhcHR1cmVMaXN0ZW5lcjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGwgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGJ5dGVbXSBkYXRhID0gKGJ5dGVbXSltc2cub2JqOworICAgICAgICAgICAgICAgIGludCBzYW1wbGluZ1JhdGUgPSBtc2cuYXJnMTsKKyAgICAgICAgICAgICAgICBzd2l0Y2gobXNnLndoYXQpIHsKKyAgICAgICAgICAgICAgICBjYXNlIE5BVElWRV9FVkVOVF9QQ01fQ0FQVFVSRToKKyAgICAgICAgICAgICAgICAgICAgbC5vbldhdmVGb3JtRGF0YUNhcHR1cmUobVZpc3VhbGl6ZXIsIGRhdGEsIHNhbXBsaW5nUmF0ZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgTkFUSVZFX0VWRU5UX0ZGVF9DQVBUVVJFOgorICAgICAgICAgICAgICAgICAgICBsLm9uRmZ0RGF0YUNhcHR1cmUobVZpc3VhbGl6ZXIsIGRhdGEsIHNhbXBsaW5nUmF0ZSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIExvZy5lKFRBRywiVW5rbm93biBuYXRpdmUgZXZlbnQ6ICIrbXNnLndoYXQpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIEludGVyZmFjZSBkZWZpbml0aW9ucworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSBmaW5hbCB2b2lkIG5hdGl2ZV9pbml0KCk7CisKKyAgICBwcml2YXRlIG5hdGl2ZSBmaW5hbCBpbnQgbmF0aXZlX3NldHVwKE9iamVjdCBhdWRpb2VmZmVjdF90aGlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGF1ZGlvU2Vzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludFtdIGlkKTsKKworICAgIHByaXZhdGUgbmF0aXZlIGZpbmFsIHZvaWQgbmF0aXZlX2ZpbmFsaXplKCk7CisKKyAgICBwcml2YXRlIG5hdGl2ZSBmaW5hbCB2b2lkIG5hdGl2ZV9yZWxlYXNlKCk7CisKKyAgICBwcml2YXRlIG5hdGl2ZSBmaW5hbCBpbnQgbmF0aXZlX3NldEVuYWJsZWQoYm9vbGVhbiBlbmFibGVkKTsKKworICAgIHByaXZhdGUgbmF0aXZlIGZpbmFsIGJvb2xlYW4gbmF0aXZlX2dldEVuYWJsZWQoKTsKKworICAgIHByaXZhdGUgbmF0aXZlIGZpbmFsIGludCBuYXRpdmVfc2V0Q2FwdHVyZVNpemUoaW50IHNpemUpOworCisgICAgcHJpdmF0ZSBuYXRpdmUgZmluYWwgaW50IG5hdGl2ZV9nZXRDYXB0dXJlU2l6ZSgpOworCisgICAgcHJpdmF0ZSBuYXRpdmUgZmluYWwgaW50IG5hdGl2ZV9nZXRTYW1wbGluZ1JhdGUoKTsKKworICAgIHByaXZhdGUgbmF0aXZlIGZpbmFsIGludCBuYXRpdmVfZ2V0V2F2ZUZvcm0oYnl0ZVtdIHdhdmVmb3JtKTsKKworICAgIHByaXZhdGUgbmF0aXZlIGZpbmFsIGludCBuYXRpdmVfZ2V0RmZ0KGJ5dGVbXSBmZnQpOworCisgICAgcHJpdmF0ZSBuYXRpdmUgZmluYWwgaW50IG5hdGl2ZV9zZXRQZXJpb2RpY0NhcHR1cmUoaW50IHJhdGUsIGJvb2xlYW4gd2F2ZUZvcm0sIGJvb2xlYW4gZmZ0KTsKKworICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gSmF2YSBtZXRob2RzIGNhbGxlZCBmcm9tIHRoZSBuYXRpdmUgc2lkZQorICAgIC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICBAU3VwcHJlc3NXYXJuaW5ncygidW51c2VkIikKKyAgICBwcml2YXRlIHN0YXRpYyB2b2lkIHBvc3RFdmVudEZyb21OYXRpdmUoT2JqZWN0IGVmZmVjdF9yZWYsCisgICAgICAgICAgICBpbnQgd2hhdCwgaW50IGFyZzEsIGludCBhcmcyLCBPYmplY3Qgb2JqKSB7CisgICAgICAgIFZpc3VhbGl6ZXIgdmlzdSA9IChWaXN1YWxpemVyKSgoV2Vha1JlZmVyZW5jZSllZmZlY3RfcmVmKS5nZXQoKTsKKyAgICAgICAgaWYgKHZpc3UgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHZpc3UubU5hdGl2ZUV2ZW50SGFuZGxlciAhPSBudWxsKSB7CisgICAgICAgICAgICBNZXNzYWdlIG0gPSB2aXN1Lm1OYXRpdmVFdmVudEhhbmRsZXIub2J0YWluTWVzc2FnZSh3aGF0LCBhcmcxLCBhcmcyLCBvYmopOworICAgICAgICAgICAgdmlzdS5tTmF0aXZlRXZlbnRIYW5kbGVyLnNlbmRNZXNzYWdlKG0pOworICAgICAgICB9CisKKyAgICB9CisKK30KKwpkaWZmIC0tZ2l0IGEvbWVkaWEvam5pL0FuZHJvaWQubWsgYi9tZWRpYS9qbmkvQW5kcm9pZC5tawppbmRleCBhNmEyNWNkLi42ZWVjMjE1YSAxMDA2NDQKLS0tIGEvbWVkaWEvam5pL0FuZHJvaWQubWsKKysrIGIvbWVkaWEvam5pL0FuZHJvaWQubWsKQEAgLTExLDcgKzExLDggQEAKICAgICBhbmRyb2lkX21lZGlhX01lZGlhU2Nhbm5lci5jcHAgXAogICAgIGFuZHJvaWRfbWVkaWFfTWVkaWFNZXRhZGF0YVJldHJpZXZlci5jcHAgXAogICAgIGFuZHJvaWRfbWVkaWFfUmVzYW1wbGVJbnB1dFN0cmVhbS5jcHAgXAotICAgIGFuZHJvaWRfbWVkaWFfTWVkaWFQcm9maWxlcy5jcHAKKyAgICBhbmRyb2lkX21lZGlhX01lZGlhUHJvZmlsZXMuY3BwIFwKKyAgICBhbmRyb2lkX21lZGlhX0FtcklucHV0U3RyZWFtLmNwcAogCiBMT0NBTF9TSEFSRURfTElCUkFSSUVTIDo9IFwKICAgICBsaWJhbmRyb2lkX3J1bnRpbWUgXApAQCAtMjMsMzUgKzI0LDI2IEBACiAgICAgbGlidWkgXAogICAgIGxpYmN1dGlscyBcCiAgICAgbGlic3VyZmFjZWZsaW5nZXJfY2xpZW50IFwKKyAgICBsaWJzdGFnZWZyaWdodCBcCiAgICAgbGliY2FtZXJhX2NsaWVudAogCiBpZm5lcSAoJChCVUlMRF9XSVRIT1VUX1BWKSx0cnVlKQogCi1MT0NBTF9TUkNfRklMRVMgKz0gXAotICAgIGFuZHJvaWRfbWVkaWFfQW1ySW5wdXRTdHJlYW0uY3BwCi0KIExPQ0FMX1NIQVJFRF9MSUJSQVJJRVMgKz0gXAotICAgIGxpYm9wZW5jb3JlX3BsYXllciAgICAgICAgICBcCi0gICAgbGlib214X2FtcmVuY19zaGFyZWRsaWJyYXJ5CisgICAgbGlib3BlbmNvcmVfcGxheWVyCiBlbHNlCiAgICAgTE9DQUxfQ0ZMQUdTICs9IC1ETk9fT1BFTkNPUkUKIGVuZGlmCiAKLWlmZXEgKCQoQlVJTERfV0lUSF9GVUxMX1NUQUdFRlJJR0hUKSx0cnVlKQotCi1MT0NBTF9DRkxBR1MgKz0gLURCVUlMRF9XSVRIX0ZVTExfU1RBR0VGUklHSFQ9MQotCi1MT0NBTF9TSEFSRURfTElCUkFSSUVTICs9IFwKLSAgICBsaWJzdGFnZWZyaWdodAotCi1lbmRpZgotCiBMT0NBTF9TVEFUSUNfTElCUkFSSUVTIDo9CiAKIExPQ0FMX0NfSU5DTFVERVMgKz0gXAogICAgIGV4dGVybmFsL3RyZW1vci9UcmVtb3IgXAogICAgIGZyYW1ld29ya3MvYmFzZS9jb3JlL2puaSBcCiAgICAgZnJhbWV3b3Jrcy9iYXNlL21lZGlhL2xpYm1lZGlhIFwKKyAgICBmcmFtZXdvcmtzL2Jhc2UvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2Ftcm5iL2VuYy9zcmMgXAorICAgIGZyYW1ld29ya3MvYmFzZS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1ybmIvY29tbW9uIFwKKyAgICBmcmFtZXdvcmtzL2Jhc2UvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2Ftcm5iL2NvbW1vbi9pbmNsdWRlIFwKICAgICAkKFBWX0lOQ0xVREVTKSBcCiAgICAgJChKTklfSF9JTkNMVURFKSBcCiAgICAgJChjYWxsIGluY2x1ZGUtcGF0aC1mb3IsIGNvcmVjZyBncmFwaGljcykKQEAgLTY1LDQgKzU3LDUgQEAKIGluY2x1ZGUgJChCVUlMRF9TSEFSRURfTElCUkFSWSkKIAogIyBidWlsZCBsaWJzb3VuZHBvb2wuc28KLWluY2x1ZGUgJChMT0NBTF9QQVRIKS9zb3VuZHBvb2wvQW5kcm9pZC5taworIyBidWlsZCBsaWJhdWRpb2VmZmVjdF9qbmkuc28KK2luY2x1ZGUgJChjYWxsIGFsbC1tYWtlZmlsZXMtdW5kZXIsJChMT0NBTF9QQVRIKSkKZGlmZiAtLWdpdCBhL21lZGlhL2puaS9hbmRyb2lkX21lZGlhX0FtcklucHV0U3RyZWFtLmNwcCBiL21lZGlhL2puaS9hbmRyb2lkX21lZGlhX0FtcklucHV0U3RyZWFtLmNwcAppbmRleCBjNGRkMDdlLi5mOGFlY2RkIDEwMDY0NAotLS0gYS9tZWRpYS9qbmkvYW5kcm9pZF9tZWRpYV9BbXJJbnB1dFN0cmVhbS5jcHAKKysrIGIvbWVkaWEvam5pL2FuZHJvaWRfbWVkaWFfQW1ySW5wdXRTdHJlYW0uY3BwCkBAIC0xOCwzNiArMTgsNDMgQEAKICNkZWZpbmUgTE9HX1RBRyAiQW1ySW5wdXRTdHJlYW0iCiAjaW5jbHVkZSAidXRpbHMvTG9nLmgiCiAKLSNpbmNsdWRlIDxtZWRpYS9tZWRpYXJlY29yZGVyLmg+Ci0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxhc3NlcnQuaD4KLSNpbmNsdWRlIDxsaW1pdHMuaD4KLSNpbmNsdWRlIDx1bmlzdGQuaD4KLSNpbmNsdWRlIDxmY250bC5oPgotI2luY2x1ZGUgPHV0aWxzL3RocmVhZHMuaD4KLQogI2luY2x1ZGUgImpuaS5oIgogI2luY2x1ZGUgIkpOSUhlbHAuaCIKICNpbmNsdWRlICJhbmRyb2lkX3J1bnRpbWUvQW5kcm9pZFJ1bnRpbWUuaCIKLSNpbmNsdWRlICJnc21hbXJfZW5jb2Rlcl93cmFwcGVyLmgiCi0KKyNpbmNsdWRlICJnc21hbXJfZW5jLmgiCiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogdXNpbmcgbmFtZXNwYWNlIGFuZHJvaWQ7CiAKIC8vIENvcnJlc3BvbmRzIHRvIG1heCBiaXQgcmF0ZSBvZiAxMi4yIGticHMuCi1zdGF0aWMgY29uc3QgaW50IGFNYXhPdXRwdXRCdWZmZXJTaXplID0gMzI7CitzdGF0aWMgY29uc3QgaW50IE1BWF9PVVRQVVRfQlVGRkVSX1NJWkUgPSAzMjsKK3N0YXRpYyBjb25zdCBpbnQgRlJBTUVfRFVSQVRJT05fTVMgPSAyMDsKK3N0YXRpYyBjb25zdCBpbnQgU0FNUExJTkdfUkFURV9IWiA9IDgwMDA7CitzdGF0aWMgY29uc3QgaW50IFNBTVBMRVNfUEVSX0ZSQU1FID0gKChTQU1QTElOR19SQVRFX0haICogRlJBTUVfRFVSQVRJT05fTVMpIC8gMTAwMCk7CitzdGF0aWMgY29uc3QgaW50IEJZVEVTX1BFUl9TQU1QTEUgPSAyOyAgLy8gQXNzdW1lIDE2LWJpdCBQQ00gc2FtcGxlcworc3RhdGljIGNvbnN0IGludCBCWVRFU19QRVJfRlJBTUUgPSAoU0FNUExFU19QRVJfRlJBTUUgKiBCWVRFU19QRVJfU0FNUExFKTsKIAotc3RhdGljIGNvbnN0IGludCBTQU1QTEVTX1BFUl9GUkFNRSA9IDgwMDAgKiAyMCAvIDEwMDA7CitzdHJ1Y3QgR3NtQW1yRW5jb2RlclN0YXRlIHsKKyAgICBHc21BbXJFbmNvZGVyU3RhdGUoKQorICAgICAgICA6IG1FbmNTdGF0ZShOVUxMKSwKKyAgICAgICAgICBtU2lkU3RhdGUoTlVMTCksCisgICAgICAgICAgbUxhc3RNb2RlVXNlZCgwKSB7CisgICAgfQogCisgICAgfkdzbUFtckVuY29kZXJTdGF0ZSgpIHt9CisKKyAgICB2b2lkKiAgIG1FbmNTdGF0ZTsKKyAgICB2b2lkKiAgIG1TaWRTdGF0ZTsKKyAgICBpbnQzMl90IG1MYXN0TW9kZVVzZWQ7Cit9OwogCiAvLwogLy8gaGVscGVyIGZ1bmN0aW9uIHRvIHRocm93IGFuIGV4Y2VwdGlvbgogLy8KIHN0YXRpYyB2b2lkIHRocm93RXhjZXB0aW9uKEpOSUVudiAqZW52LCBjb25zdCBjaGFyKiBleCwgY29uc3QgY2hhciogZm10LCBpbnQgZGF0YSkgewogICAgIGlmIChqY2xhc3MgY2xzID0gZW52LT5GaW5kQ2xhc3MoZXgpKSB7Ci0gICAgICAgIGNoYXIgbXNnWzEwMDBdOworICAgICAgICBjaGFyIG1zZ1sxMjhdOwogICAgICAgICBzcHJpbnRmKG1zZywgZm10LCBkYXRhKTsKICAgICAgICAgZW52LT5UaHJvd05ldyhjbHMsIG1zZyk7CiAgICAgICAgIGVudi0+RGVsZXRlTG9jYWxSZWYoY2xzKTsKQEAgLTU2LDM0ICs2MywyMSBAQAogCiBzdGF0aWMgamludCBhbmRyb2lkX21lZGlhX0FtcklucHV0U3RyZWFtX0dzbUFtckVuY29kZXJOZXcKICAgICAgICAgKEpOSUVudiAqZW52LCBqY2xhc3MgY2xhenopIHsKLSAgICBDUHZHc21BbXJFbmNvZGVyKiBnYWUgPSBuZXcgQ1B2R3NtQW1yRW5jb2RlcigpOworICAgIEdzbUFtckVuY29kZXJTdGF0ZSogZ2FlID0gbmV3IEdzbUFtckVuY29kZXJTdGF0ZSgpOwogICAgIGlmIChnYWUgPT0gTlVMTCkgewotICAgICAgICB0aHJvd0V4Y2VwdGlvbihlbnYsICJqYXZhL2xhbmcvSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiwKLSAgICAgICAgICAgICAgICAibmV3IENQdkdzbUFtckVuY29kZXIoKSBmYWlsZWQiLCAwKTsKKyAgICAgICAgdGhyb3dFeGNlcHRpb24oZW52LCAiamF2YS9sYW5nL1J1bnRpbWVFeGNlcHRpb24iLAorICAgICAgICAgICAgICAgICJPdXQgb2YgbWVtb3J5IiwgMCk7CiAgICAgfQogICAgIHJldHVybiAoamludClnYWU7CiB9CiAKIHN0YXRpYyB2b2lkIGFuZHJvaWRfbWVkaWFfQW1ySW5wdXRTdHJlYW1fR3NtQW1yRW5jb2RlckluaXRpYWxpemUKICAgICAgICAgKEpOSUVudiAqZW52LCBqY2xhc3MgY2xhenosIGppbnQgZ2FlKSB7Ci0gICAgLy8gc2V0IGlucHV0IHBhcmFtZXRlcnMKLSAgICBURW5jb2RlUHJvcGVydGllcyBlbmNvZGVQcm9wczsKLSAgICBlbmNvZGVQcm9wcy5pSW5CaXRzUGVyU2FtcGxlID0gMTY7Ci0gICAgZW5jb2RlUHJvcHMuaUluU2FtcGxpbmdSYXRlID0gODAwMDsKLSAgICBlbmNvZGVQcm9wcy5pSW5DbG9ja1JhdGUgPSAxMDAwOwotICAgIGVuY29kZVByb3BzLmlJbk51bUNoYW5uZWxzID0gMTsKLSAgICBlbmNvZGVQcm9wcy5pSW5JbnRlcmxlYXZlTW9kZSA9IFRFbmNvZGVQcm9wZXJ0aWVzOjpFSU5URVJMRUFWRV9MUjsKLSAgICBlbmNvZGVQcm9wcy5pTW9kZSA9IENQdkdzbUFtckVuY29kZXI6OkdTTV9BTVJfMTJfMjsKLSAgICBlbmNvZGVQcm9wcy5pQml0U3RyZWFtRm9ybWF0ID0gZmFsc2U7Ci0gICAgZW5jb2RlUHJvcHMuaUF1ZGlvT2JqZWN0VHlwZSA9IDA7Ci0gICAgZW5jb2RlUHJvcHMuaU91dFNhbXBsaW5nUmF0ZSA9IGVuY29kZVByb3BzLmlJblNhbXBsaW5nUmF0ZTsKLSAgICBlbmNvZGVQcm9wcy5pT3V0TnVtQ2hhbm5lbHMgPSBlbmNvZGVQcm9wcy5pSW5OdW1DaGFubmVsczsKLSAgICBlbmNvZGVQcm9wcy5pT3V0Q2xvY2tSYXRlID0gZW5jb2RlUHJvcHMuaUluQ2xvY2tSYXRlOwotCi0gICAgaWYgKGludCBydG4gPSAoKENQdkdzbUFtckVuY29kZXIqKWdhZSktPgotICAgICAgICAgICAgSW5pdGlhbGl6ZUVuY29kZXIoYU1heE91dHB1dEJ1ZmZlclNpemUsICZlbmNvZGVQcm9wcykpIHsKKyAgICBHc21BbXJFbmNvZGVyU3RhdGUgKnN0YXRlID0gKEdzbUFtckVuY29kZXJTdGF0ZSAqKSBnYWU7CisgICAgaW50MzJfdCBuUmVzdWx0ID0gQU1SRW5jb2RlSW5pdCgmc3RhdGUtPm1FbmNTdGF0ZSwgJnN0YXRlLT5tU2lkU3RhdGUsIGZhbHNlKTsKKyAgICBpZiAoblJlc3VsdCAhPSBPSykgewogICAgICAgICB0aHJvd0V4Y2VwdGlvbihlbnYsICJqYXZhL2xhbmcvSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiwKLSAgICAgICAgICAgICAgICAiQ1B2R3NtQW1yRW5jb2Rlcjo6SW5pdGlhbGl6ZUVuY29kZXIgZmFpbGVkICVkIiwgcnRuKTsKKyAgICAgICAgICAgICAgICAiR3NtQW1yRW5jb2RlciBpbml0aWFsaXphdGlvbiBmYWlsZWQgJWQiLCBuUmVzdWx0KTsKICAgICB9CiB9CiAKQEAgLTkxLDQyICs4NSwyMyBAQAogICAgICAgICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwKICAgICAgICAgIGppbnQgZ2FlLCBqYnl0ZUFycmF5IHBjbSwgamludCBwY21PZmZzZXQsIGpieXRlQXJyYXkgYW1yLCBqaW50IGFtck9mZnNldCkgewogCi0gICAgLy8gc2V0IHVwIGlucHV0IHN0cmVhbQotICAgIGpieXRlIGluQnVmW1NBTVBMRVNfUEVSX0ZSQU1FKjJdOwotICAgIFRJbnB1dEF1ZGlvU3RyZWFtIGluOwotICAgIGluLmlTYW1wbGVCdWZmZXIgPSAodWludDgqKWluQnVmOworICAgIGpieXRlIGluQnVmW0JZVEVTX1BFUl9GUkFNRV07CisgICAgamJ5dGUgb3V0QnVmW01BWF9PVVRQVVRfQlVGRkVSX1NJWkVdOworCiAgICAgZW52LT5HZXRCeXRlQXJyYXlSZWdpb24ocGNtLCBwY21PZmZzZXQsIHNpemVvZihpbkJ1ZiksIGluQnVmKTsKLSAgICBpbi5pU2FtcGxlTGVuZ3RoID0gc2l6ZW9mKGluQnVmKTsKLSAgICBpbi5pTW9kZSA9IENQdkdzbUFtckVuY29kZXI6OkdTTV9BTVJfMTJfMjsKLSAgICBpbi5pU3RhcnRUaW1lID0gMDsKLSAgICBpbi5pU3RvcFRpbWUgPSAwOwotCi0gICAgLy8gc2V0IHVwIG91dHB1dCBzdHJlYW0KLSAgICBqYnl0ZSBvdXRCdWZbYU1heE91dHB1dEJ1ZmZlclNpemVdOwotICAgIGludDMyIHNhbXBsZUZyYW1lU2l6ZVsxXSA9IHsgMCB9OwotICAgIFRPdXRwdXRBdWRpb1N0cmVhbSBvdXQ7Ci0gICAgb3V0LmlCaXRTdHJlYW1CdWZmZXIgPSAodWludDgqKW91dEJ1ZjsKLSAgICBvdXQuaU51bVNhbXBsZUZyYW1lcyA9IDA7Ci0gICAgb3V0LmlTYW1wbGVGcmFtZVNpemUgPSBzYW1wbGVGcmFtZVNpemU7Ci0gICAgb3V0LmlTdGFydFRpbWUgPSAwOwotICAgIG91dC5pU3RvcFRpbWUgPSAwOwotCi0gICAgLy8gZW5jb2RlCi0gICAgaWYgKGludCBydG4gPSAoKENQdkdzbUFtckVuY29kZXIqKWdhZSktPkVuY29kZShpbiwgb3V0KSkgewotICAgICAgICB0aHJvd0V4Y2VwdGlvbihlbnYsICJqYXZhL2lvL0lPRXhjZXB0aW9uIiwgIkNQdkdzbUFtckVuY29kZXI6OkVuY29kZSBmYWlsZWQgJWQiLCBydG4pOworICAgIEdzbUFtckVuY29kZXJTdGF0ZSAqc3RhdGUgPSAoR3NtQW1yRW5jb2RlclN0YXRlICopIGdhZTsKKyAgICBpbnQzMl90IGxlbmd0aCA9IEFNUkVuY29kZShzdGF0ZS0+bUVuY1N0YXRlLCBzdGF0ZS0+bVNpZFN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTW9kZSkgTVIxMjIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQxNl90ICopIGluQnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhciAqKSBvdXRCdWYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChGcmFtZV9UeXBlXzNHUFAqKSAmc3RhdGUtPm1MYXN0TW9kZVVzZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFNUl9UWF9XTUYpOworICAgIGlmIChsZW5ndGggPCAwKSB7CisgICAgICAgIHRocm93RXhjZXB0aW9uKGVudiwgImphdmEvaW8vSU9FeGNlcHRpb24iLAorICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gZW5jb2RlIGEgZnJhbWUgd2l0aCBlcnJvciBjb2RlOiAlZCIsIGxlbmd0aCk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICAvLyB2YWxpZGF0ZSBvbmUtZnJhbWUgYXNzdW1wdGlvbgotICAgIGlmIChvdXQuaU51bVNhbXBsZUZyYW1lcyAhPSAxKSB7Ci0gICAgICAgIHRocm93RXhjZXB0aW9uKGVudiwgImphdmEvaW8vSU9FeGNlcHRpb24iLAotICAgICAgICAgICAgICAgICJDUHZHc21BbXJFbmNvZGVyOjpFbmNvZGUgbW9yZSB0aGFuIG9uZSBmcmFtZSByZXR1cm5lZCAlZCIsIG91dC5pTnVtU2FtcGxlRnJhbWVzKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgLy8gY29weSByZXN1bHQKLSAgICBpbnQgbGVuZ3RoID0gb3V0LmlTYW1wbGVGcmFtZVNpemVbMF07Ci0KICAgICAvLyBUaGUgMXN0IGJ5dGUgb2YgUFYgQU1SIGZyYW1lcyBhcmUgV01GIChXaXJlbGVzcyBNdWx0aW1lZGlhIEZvcnVtKQogICAgIC8vIGJpdHBhY2tlZCwgaS5lLjsKICAgICAvLyAgICBbUCg0KSArIEZUKDQpXS4gUT0xIGZvciBnb29kIGZyYW1lLCBQPXBhZGRpbmcgYml0LCAwCkBAIC0xNDQsMTUgKzExOSwxNSBAQAogCiBzdGF0aWMgdm9pZCBhbmRyb2lkX21lZGlhX0FtcklucHV0U3RyZWFtX0dzbUFtckVuY29kZXJDbGVhbnVwCiAgICAgICAgIChKTklFbnYgKmVudiwgamNsYXNzIGNsYXp6LCBqaW50IGdhZSkgewotICAgIGlmIChpbnQgcnRuID0gKChDUHZHc21BbXJFbmNvZGVyKilnYWUpLT5DbGVhbnVwRW5jb2RlcigpKSB7Ci0gICAgICAgIHRocm93RXhjZXB0aW9uKGVudiwgImphdmEvbGFuZy9JbGxlZ2FsU3RhdGVFeGNlcHRpb24iLAotICAgICAgICAgICAgICAgICJDUHZHc21BbXJFbmNvZGVyOjpDbGVhbnVwRW5jb2RlciBmYWlsZWQgJWQiLCBydG4pOwotICAgIH0KKyAgICBHc21BbXJFbmNvZGVyU3RhdGUgKnN0YXRlID0gKEdzbUFtckVuY29kZXJTdGF0ZSAqKWdhZTsKKyAgICBBTVJFbmNvZGVFeGl0KCZzdGF0ZS0+bUVuY1N0YXRlLCAmc3RhdGUtPm1TaWRTdGF0ZSk7CisgICAgc3RhdGUtPm1FbmNTdGF0ZSA9IE5VTEw7CisgICAgc3RhdGUtPm1TaWRTdGF0ZSA9IE5VTEw7CiB9CiAKIHN0YXRpYyB2b2lkIGFuZHJvaWRfbWVkaWFfQW1ySW5wdXRTdHJlYW1fR3NtQW1yRW5jb2RlckRlbGV0ZQogICAgICAgICAoSk5JRW52ICplbnYsIGpjbGFzcyBjbGF6eiwgamludCBnYWUpIHsKLSAgICBkZWxldGUgKENQdkdzbUFtckVuY29kZXIqKWdhZTsKKyAgICBkZWxldGUgKEdzbUFtckVuY29kZXJTdGF0ZSopZ2FlOwogfQogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9tZWRpYS9qbmkvYW5kcm9pZF9tZWRpYV9NZWRpYVBsYXllci5jcHAgYi9tZWRpYS9qbmkvYW5kcm9pZF9tZWRpYV9NZWRpYVBsYXllci5jcHAKaW5kZXggOGVkMzczMC4uYWVkYjU0YSAxMDA2NDQKLS0tIGEvbWVkaWEvam5pL2FuZHJvaWRfbWVkaWFfTWVkaWFQbGF5ZXIuY3BwCisrKyBiL21lZGlhL2puaS9hbmRyb2lkX21lZGlhX01lZGlhUGxheWVyLmNwcApAQCAtMjkyLDcgKzI5Miw3IEBACiAgICAgaWYgKHN1cmZhY2UgIT0gTlVMTCkgewogICAgICAgICBjb25zdCBzcDxTdXJmYWNlPiBuYXRpdmVfc3VyZmFjZSA9IGdldF9zdXJmYWNlKGVudiwgc3VyZmFjZSk7CiAgICAgICAgIExPR1YoInByZXBhcmU6IHN1cmZhY2U9JXAgKGlkPSVkKSIsCi0gICAgICAgICAgICAgbmF0aXZlX3N1cmZhY2UuZ2V0KCksIG5hdGl2ZV9zdXJmYWNlLT5JRCgpKTsKKyAgICAgICAgICAgICBuYXRpdmVfc3VyZmFjZS5nZXQoKSwgbmF0aXZlX3N1cmZhY2UtPmdldElkZW50aXR5KCkpOwogICAgICAgICBtcC0+c2V0VmlkZW9TdXJmYWNlKG5hdGl2ZV9zdXJmYWNlKTsKICAgICB9CiB9CkBAIC0zMzIsNyArMzMyLDcgQEAKICAgICBpZiAoc3VyZmFjZSAhPSBOVUxMKSB7CiAgICAgICAgIGNvbnN0IHNwPFN1cmZhY2U+IG5hdGl2ZV9zdXJmYWNlID0gZ2V0X3N1cmZhY2UoZW52LCBzdXJmYWNlKTsKICAgICAgICAgTE9HVigicHJlcGFyZUFzeW5jOiBzdXJmYWNlPSVwIChpZD0lZCkiLAotICAgICAgICAgICAgIG5hdGl2ZV9zdXJmYWNlLmdldCgpLCBuYXRpdmVfc3VyZmFjZS0+SUQoKSk7CisgICAgICAgICAgICAgbmF0aXZlX3N1cmZhY2UuZ2V0KCksIG5hdGl2ZV9zdXJmYWNlLT5nZXRJZGVudGl0eSgpKTsKICAgICAgICAgbXAtPnNldFZpZGVvU3VyZmFjZShuYXRpdmVfc3VyZmFjZSk7CiAgICAgfQogICAgIHByb2Nlc3NfbWVkaWFfcGxheWVyX2NhbGwoIGVudiwgdGhpeiwgbXAtPnByZXBhcmVBc3luYygpLCAiamF2YS9pby9JT0V4Y2VwdGlvbiIsICJQcmVwYXJlIEFzeW5jIGZhaWxlZC4iICk7CkBAIC02MzYsNyArNjM2LDcgQEAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGZpZWxkcy5zdXJmYWNlX25hdGl2ZSA9IGVudi0+R2V0RmllbGRJRChzdXJmYWNlLCAibVN1cmZhY2UiLCAiSSIpOworICAgIGZpZWxkcy5zdXJmYWNlX25hdGl2ZSA9IGVudi0+R2V0RmllbGRJRChzdXJmYWNlLCBBTkRST0lEX1ZJRVdfU1VSRkFDRV9KTklfSUQsICJJIik7CiAgICAgaWYgKGZpZWxkcy5zdXJmYWNlX25hdGl2ZSA9PSBOVUxMKSB7CiAgICAgICAgIGpuaVRocm93RXhjZXB0aW9uKGVudiwgImphdmEvbGFuZy9SdW50aW1lRXhjZXB0aW9uIiwgIkNhbid0IGZpbmQgU3VyZmFjZS5tU3VyZmFjZSIpOwogICAgICAgICByZXR1cm47CkBAIC02ODEsMTggKzY4MSw2IEBACiB9CiAKIHN0YXRpYyBqaW50Ci1hbmRyb2lkX21lZGlhX01lZGlhUGxheWVyX3Nub29wKEpOSUVudiogZW52LCBqb2JqZWN0IHRoaXosIGpvYmplY3QgZGF0YSwgamludCBraW5kKSB7Ci0gICAganNob3J0KiBhciA9IChqc2hvcnQqKWVudi0+R2V0UHJpbWl0aXZlQXJyYXlDcml0aWNhbCgoamFycmF5KWRhdGEsIDApOwotICAgIGpzaXplIGxlbiA9IGVudi0+R2V0QXJyYXlMZW5ndGgoKGphcnJheSlkYXRhKTsKLSAgICBpbnQgcmV0ID0gMDsKLSAgICBpZiAoYXIpIHsKLSAgICAgICAgcmV0ID0gTWVkaWFQbGF5ZXI6OnNub29wKGFyLCBsZW4sIGtpbmQpOwotICAgICAgICBlbnYtPlJlbGVhc2VQcmltaXRpdmVBcnJheUNyaXRpY2FsKChqYXJyYXkpZGF0YSwgYXIsIDApOwotICAgIH0KLSAgICByZXR1cm4gcmV0OwotfQotCi1zdGF0aWMgamludAogYW5kcm9pZF9tZWRpYV9NZWRpYVBsYXllcl9uYXRpdmVfc3VzcGVuZF9yZXN1bWUoCiAgICAgICAgIEpOSUVudiAqZW52LCBqb2JqZWN0IHRoaXosIGpib29sZWFuIGlzU3VzcGVuZCkgewogICAgIExPR1YoInN1c3BlbmRfcmVzdW1lKCVkKSIsIGlzU3VzcGVuZCk7CkBAIC03MDUsNiArNjkzLDI3IEBACiAgICAgcmV0dXJuIGlzU3VzcGVuZCA/IG1wLT5zdXNwZW5kKCkgOiBtcC0+cmVzdW1lKCk7CiB9CiAKK3N0YXRpYyB2b2lkIGFuZHJvaWRfbWVkaWFfTWVkaWFQbGF5ZXJfc2V0X2F1ZGlvX3Nlc3Npb25faWQoSk5JRW52ICplbnYsICBqb2JqZWN0IHRoaXosIGppbnQgc2Vzc2lvbklkKSB7CisgICAgTE9HVigic2V0X3Nlc3Npb25faWQoKTogJWQiLCBzZXNzaW9uSWQpOworICAgIHNwPE1lZGlhUGxheWVyPiBtcCA9IGdldE1lZGlhUGxheWVyKGVudiwgdGhpeik7CisgICAgaWYgKG1wID09IE5VTEwgKSB7CisgICAgICAgIGpuaVRocm93RXhjZXB0aW9uKGVudiwgImphdmEvbGFuZy9JbGxlZ2FsU3RhdGVFeGNlcHRpb24iLCBOVUxMKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICBwcm9jZXNzX21lZGlhX3BsYXllcl9jYWxsKCBlbnYsIHRoaXosIG1wLT5zZXRBdWRpb1Nlc3Npb25JZChzZXNzaW9uSWQpLCBOVUxMLCBOVUxMICk7Cit9CisKK3N0YXRpYyBqaW50IGFuZHJvaWRfbWVkaWFfTWVkaWFQbGF5ZXJfZ2V0X2F1ZGlvX3Nlc3Npb25faWQoSk5JRW52ICplbnYsICBqb2JqZWN0IHRoaXopIHsKKyAgICBMT0dWKCJnZXRfc2Vzc2lvbl9pZCgpIik7CisgICAgc3A8TWVkaWFQbGF5ZXI+IG1wID0gZ2V0TWVkaWFQbGF5ZXIoZW52LCB0aGl6KTsKKyAgICBpZiAobXAgPT0gTlVMTCApIHsKKyAgICAgICAgam5pVGhyb3dFeGNlcHRpb24oZW52LCAiamF2YS9sYW5nL0lsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIsIE5VTEwpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICByZXR1cm4gbXAtPmdldEF1ZGlvU2Vzc2lvbklkKCk7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogc3RhdGljIEpOSU5hdGl2ZU1ldGhvZCBnTWV0aG9kc1tdID0gewpAQCAtNzM2LDggKzc0NSw5IEBACiAgICAgeyJuYXRpdmVfaW5pdCIsICAgICAgICAgIigpViIsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKilhbmRyb2lkX21lZGlhX01lZGlhUGxheWVyX25hdGl2ZV9pbml0fSwKICAgICB7Im5hdGl2ZV9zZXR1cCIsICAgICAgICAiKExqYXZhL2xhbmcvT2JqZWN0OylWIiwgICAgICAgICAgICAodm9pZCAqKWFuZHJvaWRfbWVkaWFfTWVkaWFQbGF5ZXJfbmF0aXZlX3NldHVwfSwKICAgICB7Im5hdGl2ZV9maW5hbGl6ZSIsICAgICAiKClWIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKWFuZHJvaWRfbWVkaWFfTWVkaWFQbGF5ZXJfbmF0aXZlX2ZpbmFsaXplfSwKLSAgICB7InNub29wIiwgICAgICAgICAgICAgICAiKFtTSSlJIiwgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKWFuZHJvaWRfbWVkaWFfTWVkaWFQbGF5ZXJfc25vb3B9LAogICAgIHsibmF0aXZlX3N1c3BlbmRfcmVzdW1lIiwgIihaKUkiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopYW5kcm9pZF9tZWRpYV9NZWRpYVBsYXllcl9uYXRpdmVfc3VzcGVuZF9yZXN1bWV9LAorICAgIHsiZ2V0QXVkaW9TZXNzaW9uSWQiLCAgICIoKUkiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopYW5kcm9pZF9tZWRpYV9NZWRpYVBsYXllcl9nZXRfYXVkaW9fc2Vzc2lvbl9pZH0sCisgICAgeyJzZXRBdWRpb1Nlc3Npb25JZCIsICAgIihJKVYiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKilhbmRyb2lkX21lZGlhX01lZGlhUGxheWVyX3NldF9hdWRpb19zZXNzaW9uX2lkfSwKIH07CiAKIHN0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBrQ2xhc3NQYXRoTmFtZSA9ICJhbmRyb2lkL21lZGlhL01lZGlhUGxheWVyIjsKZGlmZiAtLWdpdCBhL21lZGlhL2puaS9hbmRyb2lkX21lZGlhX01lZGlhUHJvZmlsZXMuY3BwIGIvbWVkaWEvam5pL2FuZHJvaWRfbWVkaWFfTWVkaWFQcm9maWxlcy5jcHAKaW5kZXggN2Q3NTMzYS4uY2NlOWZkMCAxMDA2NDQKLS0tIGEvbWVkaWEvam5pL2FuZHJvaWRfbWVkaWFfTWVkaWFQcm9maWxlcy5jcHAKKysrIGIvbWVkaWEvam5pL2FuZHJvaWRfbWVkaWFfTWVkaWFQcm9maWxlcy5jcHAKQEAgLTE2MiwyNiArMTYyLDI2IEBACiB9CiAKIHN0YXRpYyBqb2JqZWN0Ci1hbmRyb2lkX21lZGlhX01lZGlhUHJvZmlsZXNfbmF0aXZlX2dldF9jYW1jb3JkZXJfcHJvZmlsZShKTklFbnYgKmVudiwgam9iamVjdCB0aGl6LCBqaW50IHF1YWxpdHkpCithbmRyb2lkX21lZGlhX01lZGlhUHJvZmlsZXNfbmF0aXZlX2dldF9jYW1jb3JkZXJfcHJvZmlsZShKTklFbnYgKmVudiwgam9iamVjdCB0aGl6LCBqaW50IGlkLCBqaW50IHF1YWxpdHkpCiB7Ci0gICAgTE9HVigibmF0aXZlX2dldF9jYW1jb3JkZXJfcHJvZmlsZTogJWQiLCBxdWFsaXR5KTsKKyAgICBMT0dWKCJuYXRpdmVfZ2V0X2NhbWNvcmRlcl9wcm9maWxlOiAlZCAlZCIsIGlkLCBxdWFsaXR5KTsKICAgICBpZiAocXVhbGl0eSAhPSBDQU1DT1JERVJfUVVBTElUWV9ISUdIICYmIHF1YWxpdHkgIT0gQ0FNQ09SREVSX1FVQUxJVFlfTE9XKSB7CiAgICAgICAgIGpuaVRocm93RXhjZXB0aW9uKGVudiwgImphdmEvbGFuZy9SdW50aW1lRXhjZXB0aW9uIiwgIlVua25vd24gY2FtY29yZGVyIHByb2ZpbGUgcXVhbGl0eSIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICBjYW1jb3JkZXJfcXVhbGl0eSBxID0gc3RhdGljX2Nhc3Q8Y2FtY29yZGVyX3F1YWxpdHk+KHF1YWxpdHkpOwotICAgIGludCBkdXJhdGlvbiAgICAgICAgID0gc1Byb2ZpbGVzLT5nZXRDYW1jb3JkZXJQcm9maWxlUGFyYW1CeU5hbWUoImR1cmF0aW9uIiwgcSk7Ci0gICAgaW50IGZpbGVGb3JtYXQgICAgICAgPSBzUHJvZmlsZXMtPmdldENhbWNvcmRlclByb2ZpbGVQYXJhbUJ5TmFtZSgiZmlsZS5mb3JtYXQiLCBxKTsKLSAgICBpbnQgdmlkZW9Db2RlYyAgICAgICA9IHNQcm9maWxlcy0+Z2V0Q2FtY29yZGVyUHJvZmlsZVBhcmFtQnlOYW1lKCJ2aWQuY29kZWMiLCAgIHEpOwotICAgIGludCB2aWRlb0JpdFJhdGUgICAgID0gc1Byb2ZpbGVzLT5nZXRDYW1jb3JkZXJQcm9maWxlUGFyYW1CeU5hbWUoInZpZC5icHMiLCAgICAgcSk7Ci0gICAgaW50IHZpZGVvRnJhbWVSYXRlICAgPSBzUHJvZmlsZXMtPmdldENhbWNvcmRlclByb2ZpbGVQYXJhbUJ5TmFtZSgidmlkLmZwcyIsICAgICBxKTsKLSAgICBpbnQgdmlkZW9GcmFtZVdpZHRoICA9IHNQcm9maWxlcy0+Z2V0Q2FtY29yZGVyUHJvZmlsZVBhcmFtQnlOYW1lKCJ2aWQud2lkdGgiLCAgIHEpOwotICAgIGludCB2aWRlb0ZyYW1lSGVpZ2h0ID0gc1Byb2ZpbGVzLT5nZXRDYW1jb3JkZXJQcm9maWxlUGFyYW1CeU5hbWUoInZpZC5oZWlnaHQiLCAgcSk7Ci0gICAgaW50IGF1ZGlvQ29kZWMgICAgICAgPSBzUHJvZmlsZXMtPmdldENhbWNvcmRlclByb2ZpbGVQYXJhbUJ5TmFtZSgiYXVkLmNvZGVjIiwgICBxKTsKLSAgICBpbnQgYXVkaW9CaXRSYXRlICAgICA9IHNQcm9maWxlcy0+Z2V0Q2FtY29yZGVyUHJvZmlsZVBhcmFtQnlOYW1lKCJhdWQuYnBzIiwgICAgIHEpOwotICAgIGludCBhdWRpb1NhbXBsZVJhdGUgID0gc1Byb2ZpbGVzLT5nZXRDYW1jb3JkZXJQcm9maWxlUGFyYW1CeU5hbWUoImF1ZC5oeiIsICAgICAgcSk7Ci0gICAgaW50IGF1ZGlvQ2hhbm5lbHMgICAgPSBzUHJvZmlsZXMtPmdldENhbWNvcmRlclByb2ZpbGVQYXJhbUJ5TmFtZSgiYXVkLmNoIiwgICAgICBxKTsKKyAgICBpbnQgZHVyYXRpb24gICAgICAgICA9IHNQcm9maWxlcy0+Z2V0Q2FtY29yZGVyUHJvZmlsZVBhcmFtQnlOYW1lKCJkdXJhdGlvbiIsICAgIGlkLCBxKTsKKyAgICBpbnQgZmlsZUZvcm1hdCAgICAgICA9IHNQcm9maWxlcy0+Z2V0Q2FtY29yZGVyUHJvZmlsZVBhcmFtQnlOYW1lKCJmaWxlLmZvcm1hdCIsIGlkLCBxKTsKKyAgICBpbnQgdmlkZW9Db2RlYyAgICAgICA9IHNQcm9maWxlcy0+Z2V0Q2FtY29yZGVyUHJvZmlsZVBhcmFtQnlOYW1lKCJ2aWQuY29kZWMiLCAgIGlkLCBxKTsKKyAgICBpbnQgdmlkZW9CaXRSYXRlICAgICA9IHNQcm9maWxlcy0+Z2V0Q2FtY29yZGVyUHJvZmlsZVBhcmFtQnlOYW1lKCJ2aWQuYnBzIiwgICAgIGlkLCBxKTsKKyAgICBpbnQgdmlkZW9GcmFtZVJhdGUgICA9IHNQcm9maWxlcy0+Z2V0Q2FtY29yZGVyUHJvZmlsZVBhcmFtQnlOYW1lKCJ2aWQuZnBzIiwgICAgIGlkLCBxKTsKKyAgICBpbnQgdmlkZW9GcmFtZVdpZHRoICA9IHNQcm9maWxlcy0+Z2V0Q2FtY29yZGVyUHJvZmlsZVBhcmFtQnlOYW1lKCJ2aWQud2lkdGgiLCAgIGlkLCBxKTsKKyAgICBpbnQgdmlkZW9GcmFtZUhlaWdodCA9IHNQcm9maWxlcy0+Z2V0Q2FtY29yZGVyUHJvZmlsZVBhcmFtQnlOYW1lKCJ2aWQuaGVpZ2h0IiwgIGlkLCBxKTsKKyAgICBpbnQgYXVkaW9Db2RlYyAgICAgICA9IHNQcm9maWxlcy0+Z2V0Q2FtY29yZGVyUHJvZmlsZVBhcmFtQnlOYW1lKCJhdWQuY29kZWMiLCAgIGlkLCBxKTsKKyAgICBpbnQgYXVkaW9CaXRSYXRlICAgICA9IHNQcm9maWxlcy0+Z2V0Q2FtY29yZGVyUHJvZmlsZVBhcmFtQnlOYW1lKCJhdWQuYnBzIiwgICAgIGlkLCBxKTsKKyAgICBpbnQgYXVkaW9TYW1wbGVSYXRlICA9IHNQcm9maWxlcy0+Z2V0Q2FtY29yZGVyUHJvZmlsZVBhcmFtQnlOYW1lKCJhdWQuaHoiLCAgICAgIGlkLCBxKTsKKyAgICBpbnQgYXVkaW9DaGFubmVscyAgICA9IHNQcm9maWxlcy0+Z2V0Q2FtY29yZGVyUHJvZmlsZVBhcmFtQnlOYW1lKCJhdWQuY2giLCAgICAgIGlkLCBxKTsKIAogICAgIC8vIENoZWNrIG9uIHRoZSB2YWx1ZXMgcmV0cmlldmVkCiAgICAgaWYgKGR1cmF0aW9uID09IC0xIHx8IGZpbGVGb3JtYXQgPT0gLTEgfHwgdmlkZW9Db2RlYyA9PSAtMSB8fCBhdWRpb0NvZGVjID09IC0xIHx8CkBAIC0yNTMsMTcgKzI1MywxNyBAQAogfQogCiBzdGF0aWMgamludAotYW5kcm9pZF9tZWRpYV9NZWRpYVByb2ZpbGVzX25hdGl2ZV9nZXRfbnVtX2ltYWdlX2VuY29kaW5nX3F1YWxpdHlfbGV2ZWxzKEpOSUVudiAqZW52LCBqb2JqZWN0IHRoaXopCithbmRyb2lkX21lZGlhX01lZGlhUHJvZmlsZXNfbmF0aXZlX2dldF9udW1faW1hZ2VfZW5jb2RpbmdfcXVhbGl0eV9sZXZlbHMoSk5JRW52ICplbnYsIGpvYmplY3QgdGhpeiwgamludCBjYW1lcmFJZCkKIHsKICAgICBMT0dWKCJuYXRpdmVfZ2V0X251bV9pbWFnZV9lbmNvZGluZ19xdWFsaXR5X2xldmVscyIpOwotICAgIHJldHVybiBzUHJvZmlsZXMtPmdldEltYWdlRW5jb2RpbmdRdWFsaXR5TGV2ZWxzKCkuc2l6ZSgpOworICAgIHJldHVybiBzUHJvZmlsZXMtPmdldEltYWdlRW5jb2RpbmdRdWFsaXR5TGV2ZWxzKGNhbWVyYUlkKS5zaXplKCk7CiB9CiAKIHN0YXRpYyBqaW50Ci1hbmRyb2lkX21lZGlhX01lZGlhUHJvZmlsZXNfbmF0aXZlX2dldF9pbWFnZV9lbmNvZGluZ19xdWFsaXR5X2xldmVsKEpOSUVudiAqZW52LCBqb2JqZWN0IHRoaXosIGppbnQgaW5kZXgpCithbmRyb2lkX21lZGlhX01lZGlhUHJvZmlsZXNfbmF0aXZlX2dldF9pbWFnZV9lbmNvZGluZ19xdWFsaXR5X2xldmVsKEpOSUVudiAqZW52LCBqb2JqZWN0IHRoaXosIGppbnQgY2FtZXJhSWQsIGppbnQgaW5kZXgpCiB7CiAgICAgTE9HVigibmF0aXZlX2dldF9pbWFnZV9lbmNvZGluZ19xdWFsaXR5X2xldmVsIik7Ci0gICAgVmVjdG9yPGludD4gbGV2ZWxzID0gc1Byb2ZpbGVzLT5nZXRJbWFnZUVuY29kaW5nUXVhbGl0eUxldmVscygpOworICAgIFZlY3RvcjxpbnQ+IGxldmVscyA9IHNQcm9maWxlcy0+Z2V0SW1hZ2VFbmNvZGluZ1F1YWxpdHlMZXZlbHMoY2FtZXJhSWQpOwogICAgIGlmIChpbmRleCA8IDAgfHwgaW5kZXggPj0gbGV2ZWxzLnNpemUoKSkgewogICAgICAgICBqbmlUaHJvd0V4Y2VwdGlvbihlbnYsICJqYXZhL2xhbmcvSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIiwgIm91dCBvZiBhcnJheSBib3VuZGFyeSIpOwogICAgICAgICByZXR1cm4gLTE7CkBAIC0yODcsNyArMjg3LDcgQEAKIAogc3RhdGljIEpOSU5hdGl2ZU1ldGhvZCBnTWV0aG9kc0ZvckNhbWNvcmRlclByb2ZpbGVDbGFzc1tdID0gewogICAgIHsibmF0aXZlX2luaXQiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKClWIiwgICAgICAgICAgICAgICAgICAgICh2b2lkICopYW5kcm9pZF9tZWRpYV9NZWRpYVByb2ZpbGVzX25hdGl2ZV9pbml0fSwKLSAgICB7Im5hdGl2ZV9nZXRfY2FtY29yZGVyX3Byb2ZpbGUiLCAgICAgICAgICAgIihJKUxhbmRyb2lkL21lZGlhL0NhbWNvcmRlclByb2ZpbGU7IiwKKyAgICB7Im5hdGl2ZV9nZXRfY2FtY29yZGVyX3Byb2ZpbGUiLCAgICAgICAgICAgIihJSSlMYW5kcm9pZC9tZWRpYS9DYW1jb3JkZXJQcm9maWxlOyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKilhbmRyb2lkX21lZGlhX01lZGlhUHJvZmlsZXNfbmF0aXZlX2dldF9jYW1jb3JkZXJfcHJvZmlsZX0sCiB9OwogCkBAIC0zMDIsOCArMzAyLDggQEAKIHN0YXRpYyBKTklOYXRpdmVNZXRob2QgZ01ldGhvZHNGb3JDYW1lcmFQcm9maWxlQ2xhc3NbXSA9IHsKICAgICB7Im5hdGl2ZV9pbml0IiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIigpViIsICAgICAgICAgICAgICAgICAgICAodm9pZCAqKWFuZHJvaWRfbWVkaWFfTWVkaWFQcm9maWxlc19uYXRpdmVfaW5pdH0sCiAgICAgeyJuYXRpdmVfZ2V0X251bV9pbWFnZV9lbmNvZGluZ19xdWFsaXR5X2xldmVscyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIoKUkiLCAgICAgICAgICAgICAgICAgICAgKHZvaWQgKilhbmRyb2lkX21lZGlhX01lZGlhUHJvZmlsZXNfbmF0aXZlX2dldF9udW1faW1hZ2VfZW5jb2RpbmdfcXVhbGl0eV9sZXZlbHN9LAotICAgIHsibmF0aXZlX2dldF9pbWFnZV9lbmNvZGluZ19xdWFsaXR5X2xldmVsIiwiKEkpSSIsICAgICAgICAgICAgICAgICAgICh2b2lkICopYW5kcm9pZF9tZWRpYV9NZWRpYVByb2ZpbGVzX25hdGl2ZV9nZXRfaW1hZ2VfZW5jb2RpbmdfcXVhbGl0eV9sZXZlbH0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIoSSlJIiwgICAgICAgICAgICAgICAgICAgKHZvaWQgKilhbmRyb2lkX21lZGlhX01lZGlhUHJvZmlsZXNfbmF0aXZlX2dldF9udW1faW1hZ2VfZW5jb2RpbmdfcXVhbGl0eV9sZXZlbHN9LAorICAgIHsibmF0aXZlX2dldF9pbWFnZV9lbmNvZGluZ19xdWFsaXR5X2xldmVsIiwiKElJKUkiLCAgICAgICAgICAgICAgICAgICAodm9pZCAqKWFuZHJvaWRfbWVkaWFfTWVkaWFQcm9maWxlc19uYXRpdmVfZ2V0X2ltYWdlX2VuY29kaW5nX3F1YWxpdHlfbGV2ZWx9LAogfTsKIAogc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGtFbmNvZGVyQ2FwYWJpbGl0aWVzQ2xhc3NQYXRoTmFtZSA9ICJhbmRyb2lkL21lZGlhL0VuY29kZXJDYXBhYmlsaXRpZXMiOwpkaWZmIC0tZ2l0IGEvbWVkaWEvam5pL2FuZHJvaWRfbWVkaWFfTWVkaWFSZWNvcmRlci5jcHAgYi9tZWRpYS9qbmkvYW5kcm9pZF9tZWRpYV9NZWRpYVJlY29yZGVyLmNwcAppbmRleCAwMGFmM2EyLi5jMTEzZmZlIDEwMDY0NAotLS0gYS9tZWRpYS9qbmkvYW5kcm9pZF9tZWRpYV9NZWRpYVJlY29yZGVyLmNwcAorKysgYi9tZWRpYS9qbmkvYW5kcm9pZF9tZWRpYV9NZWRpYVJlY29yZGVyLmNwcApAQCAtMzE3LDggKzMxNyw4IEBACiAKICAgICBqb2JqZWN0IHN1cmZhY2UgPSBlbnYtPkdldE9iamVjdEZpZWxkKHRoaXosIGZpZWxkcy5zdXJmYWNlKTsKICAgICBpZiAoc3VyZmFjZSAhPSBOVUxMKSB7Ci0gICAgICAgIGNvbnN0IHNwPFN1cmZhY2U+JiBuYXRpdmVfc3VyZmFjZSA9IGdldF9zdXJmYWNlKGVudiwgc3VyZmFjZSk7Ci0gICAgICAgIExPR0koInByZXBhcmU6IHN1cmZhY2U9JXAgKGlkPSVkKSIsIG5hdGl2ZV9zdXJmYWNlLmdldCgpLCBuYXRpdmVfc3VyZmFjZS0+SUQoKSk7CisgICAgICAgIGNvbnN0IHNwPFN1cmZhY2U+IG5hdGl2ZV9zdXJmYWNlID0gZ2V0X3N1cmZhY2UoZW52LCBzdXJmYWNlKTsKKyAgICAgICAgTE9HSSgicHJlcGFyZTogc3VyZmFjZT0lcCAoaWRlbnRpdHk9JWQpIiwgbmF0aXZlX3N1cmZhY2UuZ2V0KCksIG5hdGl2ZV9zdXJmYWNlLT5nZXRJZGVudGl0eSgpKTsKICAgICAgICAgaWYgKHByb2Nlc3NfbWVkaWFfcmVjb3JkZXJfY2FsbChlbnYsIG1yLT5zZXRQcmV2aWV3U3VyZmFjZShuYXRpdmVfc3VyZmFjZSksICJqYXZhL2xhbmcvUnVudGltZUV4Y2VwdGlvbiIsICJzZXRQcmV2aWV3U3VyZmFjZSBmYWlsZWQuIikpIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtNDAzLDcgKzQwMyw3IEBACiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBmaWVsZHMuc3VyZmFjZV9uYXRpdmUgPSBlbnYtPkdldEZpZWxkSUQoc3VyZmFjZSwgIm1TdXJmYWNlIiwgIkkiKTsKKyAgICBmaWVsZHMuc3VyZmFjZV9uYXRpdmUgPSBlbnYtPkdldEZpZWxkSUQoc3VyZmFjZSwgQU5EUk9JRF9WSUVXX1NVUkZBQ0VfSk5JX0lELCAiSSIpOwogICAgIGlmIChmaWVsZHMuc3VyZmFjZV9uYXRpdmUgPT0gTlVMTCkgewogICAgICAgICBqbmlUaHJvd0V4Y2VwdGlvbihlbnYsICJqYXZhL2xhbmcvUnVudGltZUV4Y2VwdGlvbiIsICJDYW4ndCBmaW5kIFN1cmZhY2UubVN1cmZhY2UiKTsKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvbWVkaWEvam5pL2FuZHJvaWRfbWVkaWFfTWVkaWFTY2FubmVyLmNwcCBiL21lZGlhL2puaS9hbmRyb2lkX21lZGlhX01lZGlhU2Nhbm5lci5jcHAKaW5kZXggMmFiMjQ0NS4uMjczZjFhZiAxMDA2NDQKLS0tIGEvbWVkaWEvam5pL2FuZHJvaWRfbWVkaWFfTWVkaWFTY2FubmVyLmNwcAorKysgYi9tZWRpYS9qbmkvYW5kcm9pZF9tZWRpYV9NZWRpYVNjYW5uZXIuY3BwCkBAIC0zMSwxMyArMzEsNyBAQAogI2luY2x1ZGUgIkpOSUhlbHAuaCIKICNpbmNsdWRlICJhbmRyb2lkX3J1bnRpbWUvQW5kcm9pZFJ1bnRpbWUuaCIKIAotI2lmbmRlZiBOT19PUEVOQ09SRQotI2luY2x1ZGUgInB2bWVkaWFzY2FubmVyLmgiCi0jZW5kaWYKLQotI2lmIEJVSUxEX1dJVEhfRlVMTF9TVEFHRUZSSUdIVAogI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L1N0YWdlZnJpZ2h0TWVkaWFTY2FubmVyLmg+Ci0jZW5kaWYKIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC0yODYsMjUgKzI4MCwxMCBAQAogICAgIH0KIH0KIAotc3RhdGljIE1lZGlhU2Nhbm5lciAqY3JlYXRlTWVkaWFTY2FubmVyKCkgewotI2lmIEJVSUxEX1dJVEhfRlVMTF9TVEFHRUZSSUdIVAotICAgIGNoYXIgdmFsdWVbUFJPUEVSVFlfVkFMVUVfTUFYXTsKLSAgICBpZiAocHJvcGVydHlfZ2V0KCJtZWRpYS5zdGFnZWZyaWdodC5lbmFibGUtc2NhbiIsIHZhbHVlLCBOVUxMKQotICAgICAgICAmJiAoIXN0cmNtcCh2YWx1ZSwgIjEiKSB8fCAhc3RyY2FzZWNtcCh2YWx1ZSwgInRydWUiKSkpIHsKLSAgICAgICAgcmV0dXJuIG5ldyBTdGFnZWZyaWdodE1lZGlhU2Nhbm5lcjsKLSAgICB9Ci0jZW5kaWYKLSNpZm5kZWYgTk9fT1BFTkNPUkUKLSAgICByZXR1cm4gbmV3IFBWTWVkaWFTY2FubmVyKCk7Ci0jZW5kaWYKLQotICAgIHJldHVybiBOVUxMOwotfQotCiBzdGF0aWMgdm9pZAogYW5kcm9pZF9tZWRpYV9NZWRpYVNjYW5uZXJfbmF0aXZlX3NldHVwKEpOSUVudiAqZW52LCBqb2JqZWN0IHRoaXopCiB7Ci0gICAgTWVkaWFTY2FubmVyICptcCA9IGNyZWF0ZU1lZGlhU2Nhbm5lcigpOworICAgIE1lZGlhU2Nhbm5lciAqbXAgPSBuZXcgU3RhZ2VmcmlnaHRNZWRpYVNjYW5uZXI7CiAKICAgICBpZiAobXAgPT0gTlVMTCkgewogICAgICAgICBqbmlUaHJvd0V4Y2VwdGlvbihlbnYsICJqYXZhL2xhbmcvUnVudGltZUV4Y2VwdGlvbiIsICJPdXQgb2YgbWVtb3J5Iik7CmRpZmYgLS1naXQgYS9tZWRpYS9qbmkvYXVkaW9lZmZlY3QvQW5kcm9pZC5tayBiL21lZGlhL2puaS9hdWRpb2VmZmVjdC9BbmRyb2lkLm1rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjNWNmNzEKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9qbmkvYXVkaW9lZmZlY3QvQW5kcm9pZC5tawpAQCAtMCwwICsxLDE3IEBACitMT0NBTF9QQVRIOj0gJChjYWxsIG15LWRpcikKK2luY2x1ZGUgJChDTEVBUl9WQVJTKQorCitMT0NBTF9TUkNfRklMRVM6PSBcCisJYW5kcm9pZF9tZWRpYV9BdWRpb0VmZmVjdC5jcHAgXAorCWFuZHJvaWRfbWVkaWFfVmlzdWFsaXplci5jcHAKKworTE9DQUxfU0hBUkVEX0xJQlJBUklFUyA6PSBcCisJbGliY3V0aWxzIFwKKwlsaWJ1dGlscyBcCisJbGliYW5kcm9pZF9ydW50aW1lIFwKKwlsaWJuYXRpdmVoZWxwZXIgXAorCWxpYm1lZGlhCisKK0xPQ0FMX01PRFVMRTo9IGxpYmF1ZGlvZWZmZWN0X2puaQorCitpbmNsdWRlICQoQlVJTERfU0hBUkVEX0xJQlJBUlkpCmRpZmYgLS1naXQgYS9tZWRpYS9qbmkvYXVkaW9lZmZlY3QvYW5kcm9pZF9tZWRpYV9BdWRpb0VmZmVjdC5jcHAgYi9tZWRpYS9qbmkvYXVkaW9lZmZlY3QvYW5kcm9pZF9tZWRpYV9BdWRpb0VmZmVjdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmViM2RmYwotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2puaS9hdWRpb2VmZmVjdC9hbmRyb2lkX21lZGlhX0F1ZGlvRWZmZWN0LmNwcApAQCAtMCwwICsxLDg0OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpbmNsdWRlIDxzdGRpby5oPgorCisvLyNkZWZpbmUgTE9HX05ERUJVRyAwCisjZGVmaW5lIExPR19UQUcgIkF1ZGlvRWZmZWN0cy1KTkkiCisKKyNpbmNsdWRlIDx1dGlscy9Mb2cuaD4KKyNpbmNsdWRlIDxuYXRpdmVoZWxwZXIvam5pLmg+CisjaW5jbHVkZSA8bmF0aXZlaGVscGVyL0pOSUhlbHAuaD4KKyNpbmNsdWRlIDxhbmRyb2lkX3J1bnRpbWUvQW5kcm9pZFJ1bnRpbWUuaD4KKyNpbmNsdWRlICJtZWRpYS9BdWRpb0VmZmVjdC5oIgorCit1c2luZyBuYW1lc3BhY2UgYW5kcm9pZDsKKworI2RlZmluZSBBVURJT0VGRkVDVF9TVUNDRVNTICAgICAgICAgICAgICAgICAgICAgIDAKKyNkZWZpbmUgQVVESU9FRkZFQ1RfRVJST1IgICAgICAgICAgICAgICAgICAgICAgIC0xCisjZGVmaW5lIEFVRElPRUZGRUNUX0VSUk9SX0FMUkVBRFlfRVhJU1RTICAgICAgICAtMgorI2RlZmluZSBBVURJT0VGRkVDVF9FUlJPUl9OT19JTklUICAgICAgICAgICAgICAgLTMKKyNkZWZpbmUgQVVESU9FRkZFQ1RfRVJST1JfQkFEX1ZBTFVFICAgICAgICAgICAgIC00CisjZGVmaW5lIEFVRElPRUZGRUNUX0VSUk9SX0lOVkFMSURfT1BFUkFUSU9OICAgICAtNQorI2RlZmluZSBBVURJT0VGRkVDVF9FUlJPUl9OT19NRU1PUlkgICAgICAgICAgICAgLTYKKyNkZWZpbmUgQVVESU9FRkZFQ1RfRVJST1JfREVBRF9PQkpFQ1QgICAgICAgICAgIC03CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3N0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBrQ2xhc3NQYXRoTmFtZSA9ICJhbmRyb2lkL21lZGlhL0F1ZGlvRWZmZWN0IjsKKworc3RydWN0IGZpZWxkc190IHsKKyAgICAvLyB0aGVzZSBmaWVsZHMgcHJvdmlkZSBhY2Nlc3MgZnJvbSBDKysgdG8gdGhlLi4uCisgICAgamNsYXNzICAgIGNsYXp6RWZmZWN0OyAgICAgICAgICAvLyBBdWRpb0VmZmVjdCBjbGFzcworICAgIGptZXRob2RJRCBtaWRQb3N0TmF0aXZlRXZlbnQ7ICAgLy8gZXZlbnQgcG9zdCBjYWxsYmFjayBtZXRob2QKKyAgICBqZmllbGRJRCAgZmlkTmF0aXZlQXVkaW9FZmZlY3Q7IC8vIHN0b3JlcyBpbiBKYXZhIHRoZSBuYXRpdmUgQXVkaW9FZmZlY3Qgb2JqZWN0CisgICAgamZpZWxkSUQgIGZpZEpuaURhdGE7ICAgICAgICAgICAvLyBzdG9yZXMgaW4gSmF2YSBhZGRpdGlvbmFsIHJlc291cmNlcyB1c2VkIGJ5IHRoZSBuYXRpdmUgQXVkaW9FZmZlY3QKKyAgICBqY2xhc3MgICAgY2xhenpEZXNjOyAgICAgICAgICAgIC8vIEF1ZGlvRWZmZWN0LkRlc2NyaXB0b3IgY2xhc3MKKyAgICBqbWV0aG9kSUQgbWlkRGVzY0NzdG9yOyAgICAgICAgIC8vIEF1ZGlvRWZmZWN0LkRlc2NyaXB0b3IgY2xhc3MgY29uc3RydWN0b3IKK307CitzdGF0aWMgZmllbGRzX3QgZmllbGRzOworCitzdHJ1Y3QgZWZmZWN0X2NhbGxiYWNrX2Nvb2tpZSB7CisgICAgamNsYXNzICAgICAgYXVkaW9FZmZlY3RfY2xhc3M7ICAvLyBBdWRpb0VmZmVjdCBjbGFzcworICAgIGpvYmplY3QgICAgIGF1ZGlvRWZmZWN0X3JlZjsgICAgLy8gQXVkaW9FZmZlY3Qgb2JqZWN0IGluc3RhbmNlCisgfTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorY2xhc3MgQXVkaW9FZmZlY3RKbmlTdG9yYWdlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIGVmZmVjdF9jYWxsYmFja19jb29raWUgbUNhbGxiYWNrRGF0YTsKKworICAgIEF1ZGlvRWZmZWN0Sm5pU3RvcmFnZSgpIHsKKyAgICB9CisKKyAgICB+QXVkaW9FZmZlY3RKbmlTdG9yYWdlKCkgeworICAgIH0KKworfTsKKworCitzdGF0aWMgamludCB0cmFuc2xhdGVFcnJvcihpbnQgY29kZSkgeworICAgIHN3aXRjaChjb2RlKSB7CisgICAgY2FzZSBOT19FUlJPUjoKKyAgICAgICAgcmV0dXJuIEFVRElPRUZGRUNUX1NVQ0NFU1M7CisgICAgY2FzZSBBTFJFQURZX0VYSVNUUzoKKyAgICAgICAgcmV0dXJuIEFVRElPRUZGRUNUX0VSUk9SX0FMUkVBRFlfRVhJU1RTOworICAgIGNhc2UgTk9fSU5JVDoKKyAgICAgICAgcmV0dXJuIEFVRElPRUZGRUNUX0VSUk9SX05PX0lOSVQ7CisgICAgY2FzZSBCQURfVkFMVUU6CisgICAgICAgIHJldHVybiBBVURJT0VGRkVDVF9FUlJPUl9CQURfVkFMVUU7CisgICAgY2FzZSBJTlZBTElEX09QRVJBVElPTjoKKyAgICAgICAgcmV0dXJuIEFVRElPRUZGRUNUX0VSUk9SX0lOVkFMSURfT1BFUkFUSU9OOworICAgIGNhc2UgTk9fTUVNT1JZOgorICAgICAgICByZXR1cm4gQVVESU9FRkZFQ1RfRVJST1JfTk9fTUVNT1JZOworICAgIGNhc2UgREVBRF9PQkpFQ1Q6CisgICAgICAgIHJldHVybiBBVURJT0VGRkVDVF9FUlJPUl9ERUFEX09CSkVDVDsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gQVVESU9FRkZFQ1RfRVJST1I7CisgICAgfQorfQorCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3N0YXRpYyB2b2lkIGVmZmVjdENhbGxiYWNrKGludCBldmVudCwgdm9pZCogdXNlciwgdm9pZCAqaW5mbykgeworCisgICAgZWZmZWN0X3BhcmFtX3QgKnA7CisgICAgaW50IGFyZzEgPSAwOworICAgIGludCBhcmcyID0gMDsKKyAgICBqb2JqZWN0IG9iaiA9IE5VTEw7CisgICAgamJ5dGVBcnJheSBhcnJheSA9IE5VTEw7CisgICAgamJ5dGUgKmJ5dGVzOworICAgIGJvb2wgcGFyYW07CisgICAgc2l6ZV90IHNpemU7CisKKyAgICBlZmZlY3RfY2FsbGJhY2tfY29va2llICpjYWxsYmFja0luZm8gPSAoZWZmZWN0X2NhbGxiYWNrX2Nvb2tpZSAqKXVzZXI7CisgICAgSk5JRW52ICplbnYgPSBBbmRyb2lkUnVudGltZTo6Z2V0Sk5JRW52KCk7CisKKyAgICBMT0dWKCJlZmZlY3RDYWxsYmFjazogY2FsbGJhY2tJbmZvICVwLCBhdWRpb0VmZmVjdF9yZWYgJXAgYXVkaW9FZmZlY3RfY2xhc3MgJXAiLAorICAgICAgICAgICAgY2FsbGJhY2tJbmZvLAorICAgICAgICAgICAgY2FsbGJhY2tJbmZvLT5hdWRpb0VmZmVjdF9yZWYsCisgICAgICAgICAgICBjYWxsYmFja0luZm8tPmF1ZGlvRWZmZWN0X2NsYXNzKTsKKworICAgIGlmICghdXNlciB8fCAhZW52KSB7CisgICAgICAgIExPR1coImVmZmVjdENhbGxiYWNrIGVycm9yIHVzZXIgJXAsIGVudiAlcCIsIHVzZXIsIGVudik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzd2l0Y2ggKGV2ZW50KSB7CisgICAgY2FzZSBBdWRpb0VmZmVjdDo6RVZFTlRfQ09OVFJPTF9TVEFUVVNfQ0hBTkdFRDoKKyAgICAgICAgaWYgKGluZm8gPT0gMCkgeworICAgICAgICAgICAgTE9HVygiRVZFTlRfQ09OVFJPTF9TVEFUVVNfQ0hBTkdFRCBpbmZvID09IE5VTEwiKTsKKyAgICAgICAgICAgIGdvdG8gZWZmZWN0Q2FsbGJhY2tfRXhpdDsKKyAgICAgICAgfQorICAgICAgICBwYXJhbSA9ICooYm9vbCAqKWluZm87CisgICAgICAgIGFyZzEgPSAoaW50KXBhcmFtOworICAgICAgICBMT0dWKCJFVkVOVF9DT05UUk9MX1NUQVRVU19DSEFOR0VEIik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQXVkaW9FZmZlY3Q6OkVWRU5UX0VOQUJMRV9TVEFUVVNfQ0hBTkdFRDoKKyAgICAgICAgaWYgKGluZm8gPT0gMCkgeworICAgICAgICAgICAgTE9HVygiRVZFTlRfRU5BQkxFX1NUQVRVU19DSEFOR0VEIGluZm8gPT0gTlVMTCIpOworICAgICAgICAgICAgZ290byBlZmZlY3RDYWxsYmFja19FeGl0OworICAgICAgICB9CisgICAgICAgIHBhcmFtID0gKihib29sICopaW5mbzsKKyAgICAgICAgYXJnMSA9IChpbnQpcGFyYW07CisgICAgICAgIExPR1YoIkVWRU5UX0VOQUJMRV9TVEFUVVNfQ0hBTkdFRCIpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEF1ZGlvRWZmZWN0OjpFVkVOVF9QQVJBTUVURVJfQ0hBTkdFRDoKKyAgICAgICAgaWYgKGluZm8gPT0gMCkgeworICAgICAgICAgICAgTE9HVygiRVZFTlRfUEFSQU1FVEVSX0NIQU5HRUQgaW5mbyA9PSBOVUxMIik7CisgICAgICAgICAgICBnb3RvIGVmZmVjdENhbGxiYWNrX0V4aXQ7CisgICAgICAgIH0KKyAgICAgICAgcCA9IChlZmZlY3RfcGFyYW1fdCAqKWluZm87CisgICAgICAgIGlmIChwLT5wc2l6ZSA9PSAwIHx8IHAtPnZzaXplID09IDApIHsKKyAgICAgICAgICAgIGdvdG8gZWZmZWN0Q2FsbGJhY2tfRXhpdDsKKyAgICAgICAgfQorICAgICAgICAvLyBhcmcxIGNvbnRhaW5zIG9mZnNldCBvZiBwYXJhbWV0ZXIgdmFsdWUgZnJvbSBzdGFydCBvZiBieXRlIGFycmF5CisgICAgICAgIGFyZzEgPSBzaXplb2YoZWZmZWN0X3BhcmFtX3QpICsgKChwLT5wc2l6ZSAtIDEpIC8gc2l6ZW9mKGludCkgKyAxKSAqIHNpemVvZihpbnQpOworICAgICAgICBzaXplID0gYXJnMSArIHAtPnZzaXplOworICAgICAgICBhcnJheSA9IGVudi0+TmV3Qnl0ZUFycmF5KHNpemUpOworICAgICAgICBpZiAoYXJyYXkgPT0gTlVMTCkgeworICAgICAgICAgICAgTE9HRSgiZWZmZWN0Q2FsbGJhY2s6IENvdWxkbid0IGFsbG9jYXRlIGJ5dGUgYXJyYXkgZm9yIHBhcmFtZXRlciBkYXRhIik7CisgICAgICAgICAgICBnb3RvIGVmZmVjdENhbGxiYWNrX0V4aXQ7CisgICAgICAgIH0KKyAgICAgICAgYnl0ZXMgPSBlbnYtPkdldEJ5dGVBcnJheUVsZW1lbnRzKGFycmF5LCBOVUxMKTsKKyAgICAgICAgbWVtY3B5KGJ5dGVzLCBwLCBzaXplKTsKKyAgICAgICAgZW52LT5SZWxlYXNlQnl0ZUFycmF5RWxlbWVudHMoYXJyYXksIGJ5dGVzLCAwKTsKKyAgICAgICAgb2JqID0gYXJyYXk7CisgICAgICAgIExPR1YoIkVWRU5UX1BBUkFNRVRFUl9DSEFOR0VEIik7CisgICAgICAgYnJlYWs7CisgICAgY2FzZSBBdWRpb0VmZmVjdDo6RVZFTlRfRVJST1I6CisgICAgICAgIExPR1coIkVWRU5UX0VSUk9SIik7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGVudi0+Q2FsbFN0YXRpY1ZvaWRNZXRob2QoCisgICAgICAgIGNhbGxiYWNrSW5mby0+YXVkaW9FZmZlY3RfY2xhc3MsCisgICAgICAgIGZpZWxkcy5taWRQb3N0TmF0aXZlRXZlbnQsCisgICAgICAgIGNhbGxiYWNrSW5mby0+YXVkaW9FZmZlY3RfcmVmLCBldmVudCwgYXJnMSwgYXJnMiwgb2JqKTsKKworZWZmZWN0Q2FsbGJhY2tfRXhpdDoKKyAgICBpZiAoYXJyYXkpIHsKKyAgICAgICAgZW52LT5EZWxldGVMb2NhbFJlZihhcnJheSk7CisgICAgfQorCisgICAgaWYgKGVudi0+RXhjZXB0aW9uQ2hlY2soKSkgeworICAgICAgICBlbnYtPkV4Y2VwdGlvbkRlc2NyaWJlKCk7CisgICAgICAgIGVudi0+RXhjZXB0aW9uQ2xlYXIoKTsKKyAgICB9Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIFRoaXMgZnVuY3Rpb24gZ2V0cyBzb21lIGZpZWxkIElEcywgd2hpY2ggaW4gdHVybiBjYXVzZXMgY2xhc3MgaW5pdGlhbGl6YXRpb24uCisvLyBJdCBpcyBjYWxsZWQgZnJvbSBhIHN0YXRpYyBibG9jayBpbiBBdWRpb0VmZmVjdCwgd2hpY2ggd29uJ3QgcnVuIHVudGlsIHRoZQorLy8gZmlyc3QgdGltZSBhbiBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzIGlzIHVzZWQuCitzdGF0aWMgdm9pZAorYW5kcm9pZF9tZWRpYV9BdWRpb0VmZmVjdF9uYXRpdmVfaW5pdChKTklFbnYgKmVudikKK3sKKworICAgIExPR1YoImFuZHJvaWRfbWVkaWFfQXVkaW9FZmZlY3RfbmF0aXZlX2luaXQiKTsKKworICAgIGZpZWxkcy5jbGF6ekVmZmVjdCA9IE5VTEw7CisgICAgZmllbGRzLmNsYXp6RGVzYyA9IE5VTEw7CisKKyAgICAvLyBHZXQgdGhlIEF1ZGlvRWZmZWN0IGNsYXNzCisgICAgamNsYXNzIGNsYXp6ID0gZW52LT5GaW5kQ2xhc3Moa0NsYXNzUGF0aE5hbWUpOworICAgIGlmIChjbGF6eiA9PSBOVUxMKSB7CisgICAgICAgIExPR0UoIkNhbid0IGZpbmQgJXMiLCBrQ2xhc3NQYXRoTmFtZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmaWVsZHMuY2xhenpFZmZlY3QgPSAoamNsYXNzKWVudi0+TmV3R2xvYmFsUmVmKGNsYXp6KTsKKworICAgIC8vIEdldCB0aGUgcG9zdEV2ZW50IG1ldGhvZAorICAgIGZpZWxkcy5taWRQb3N0TmF0aXZlRXZlbnQgPSBlbnYtPkdldFN0YXRpY01ldGhvZElEKAorICAgICAgICAgICAgZmllbGRzLmNsYXp6RWZmZWN0LAorICAgICAgICAgICAgInBvc3RFdmVudEZyb21OYXRpdmUiLCAiKExqYXZhL2xhbmcvT2JqZWN0O0lJSUxqYXZhL2xhbmcvT2JqZWN0OylWIik7CisgICAgaWYgKGZpZWxkcy5taWRQb3N0TmF0aXZlRXZlbnQgPT0gTlVMTCkgeworICAgICAgICBMT0dFKCJDYW4ndCBmaW5kIEF1ZGlvRWZmZWN0LiVzIiwgInBvc3RFdmVudEZyb21OYXRpdmUiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIC8vIEdldCB0aGUgdmFyaWFibGVzIGZpZWxkcworICAgIC8vICAgICAgbmF0aXZlVHJhY2tJbkphdmFPYmoKKyAgICBmaWVsZHMuZmlkTmF0aXZlQXVkaW9FZmZlY3QgPSBlbnYtPkdldEZpZWxkSUQoCisgICAgICAgICAgICBmaWVsZHMuY2xhenpFZmZlY3QsCisgICAgICAgICAgICAibU5hdGl2ZUF1ZGlvRWZmZWN0IiwgIkkiKTsKKyAgICBpZiAoZmllbGRzLmZpZE5hdGl2ZUF1ZGlvRWZmZWN0ID09IE5VTEwpIHsKKyAgICAgICAgTE9HRSgiQ2FuJ3QgZmluZCBBdWRpb0VmZmVjdC4lcyIsICJtTmF0aXZlQXVkaW9FZmZlY3QiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAvLyAgICAgIGZpZEpuaURhdGE7CisgICAgZmllbGRzLmZpZEpuaURhdGEgPSBlbnYtPkdldEZpZWxkSUQoCisgICAgICAgICAgICBmaWVsZHMuY2xhenpFZmZlY3QsCisgICAgICAgICAgICAibUpuaURhdGEiLCAiSSIpOworICAgIGlmIChmaWVsZHMuZmlkSm5pRGF0YSA9PSBOVUxMKSB7CisgICAgICAgIExPR0UoIkNhbid0IGZpbmQgQXVkaW9FZmZlY3QuJXMiLCAibUpuaURhdGEiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNsYXp6ID0gZW52LT5GaW5kQ2xhc3MoImFuZHJvaWQvbWVkaWEvQXVkaW9FZmZlY3QkRGVzY3JpcHRvciIpOworICAgIGlmIChjbGF6eiA9PSBOVUxMKSB7CisgICAgICAgIExPR0UoIkNhbid0IGZpbmQgYW5kcm9pZC9tZWRpYS9BdWRpb0VmZmVjdCREZXNjcmlwdG9yIGNsYXNzIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgZmllbGRzLmNsYXp6RGVzYyA9IChqY2xhc3MpZW52LT5OZXdHbG9iYWxSZWYoY2xhenopOworCisgICAgZmllbGRzLm1pZERlc2NDc3RvcgorICAgICAgICAgICAgPSBlbnYtPkdldE1ldGhvZElEKAorICAgICAgICAgICAgICAgICAgICBmaWVsZHMuY2xhenpEZXNjLAorICAgICAgICAgICAgICAgICAgICAiPGluaXQ+IiwKKyAgICAgICAgICAgICAgICAgICAgIihMamF2YS9sYW5nL1N0cmluZztMamF2YS9sYW5nL1N0cmluZztMamF2YS9sYW5nL1N0cmluZztMamF2YS9sYW5nL1N0cmluZztMamF2YS9sYW5nL1N0cmluZzspViIpOworICAgIGlmIChmaWVsZHMubWlkRGVzY0NzdG9yID09IE5VTEwpIHsKKyAgICAgICAgTE9HRSgiQ2FuJ3QgZmluZCBhbmRyb2lkL21lZGlhL0F1ZGlvRWZmZWN0JERlc2NyaXB0b3IgY2xhc3MgY29uc3RydWN0b3IiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KK30KKworCitzdGF0aWMgamludAorYW5kcm9pZF9tZWRpYV9BdWRpb0VmZmVjdF9uYXRpdmVfc2V0dXAoSk5JRW52ICplbnYsIGpvYmplY3QgdGhpeiwgam9iamVjdCB3ZWFrX3RoaXMsCisgICAgICAgIGpzdHJpbmcgdHlwZSwganN0cmluZyB1dWlkLCBqaW50IHByaW9yaXR5LCBqaW50IHNlc3Npb25JZCwgamludEFycmF5IGpJZCwgam9iamVjdEFycmF5IGphdmFkZXNjKQoreworICAgIExPR1YoImFuZHJvaWRfbWVkaWFfQXVkaW9FZmZlY3RfbmF0aXZlX3NldHVwIik7CisgICAgQXVkaW9FZmZlY3RKbmlTdG9yYWdlKiBscEpuaVN0b3JhZ2UgPSBOVUxMOworICAgIGludCBsU3RhdHVzID0gQVVESU9FRkZFQ1RfRVJST1JfTk9fTUVNT1JZOworICAgIEF1ZGlvRWZmZWN0KiBscEF1ZGlvRWZmZWN0ID0gTlVMTDsKKyAgICBqaW50KiBuSWQgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKnR5cGVTdHIgPSBOVUxMOworICAgIGNvbnN0IGNoYXIgKnV1aWRTdHIgPSBOVUxMOworICAgIGVmZmVjdF9kZXNjcmlwdG9yX3QgZGVzYzsKKyAgICBqb2JqZWN0IGpkZXNjOworICAgIGNoYXIgc3RyW0VGRkVDVF9TVFJJTkdfTEVOX01BWF07CisgICAganN0cmluZyBqZGVzY1R5cGU7CisgICAganN0cmluZyBqZGVzY1V1aWQ7CisgICAganN0cmluZyBqZGVzY0Nvbm5lY3Q7CisgICAganN0cmluZyBqZGVzY05hbWU7CisgICAganN0cmluZyBqZGVzY0ltcGxlbWVudG9yOworCisgICAgaWYgKHR5cGUgIT0gTlVMTCkgeworICAgICAgICB0eXBlU3RyID0gZW52LT5HZXRTdHJpbmdVVEZDaGFycyh0eXBlLCBOVUxMKTsKKyAgICAgICAgaWYgKHR5cGVTdHIgPT0gTlVMTCkgeyAgLy8gT3V0IG9mIG1lbW9yeQorICAgICAgICAgICAgam5pVGhyb3dFeGNlcHRpb24oZW52LCAiamF2YS9sYW5nL1J1bnRpbWVFeGNlcHRpb24iLCAiT3V0IG9mIG1lbW9yeSIpOworICAgICAgICAgICAgZ290byBzZXR1cF9mYWlsdXJlOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHV1aWQgIT0gTlVMTCkgeworICAgICAgICB1dWlkU3RyID0gZW52LT5HZXRTdHJpbmdVVEZDaGFycyh1dWlkLCBOVUxMKTsKKyAgICAgICAgaWYgKHV1aWRTdHIgPT0gTlVMTCkgeyAgLy8gT3V0IG9mIG1lbW9yeQorICAgICAgICAgICAgam5pVGhyb3dFeGNlcHRpb24oZW52LCAiamF2YS9sYW5nL1J1bnRpbWVFeGNlcHRpb24iLCAiT3V0IG9mIG1lbW9yeSIpOworICAgICAgICAgICAgZ290byBzZXR1cF9mYWlsdXJlOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKHR5cGVTdHIgPT0gTlVMTCAmJiB1dWlkU3RyID09IE5VTEwpIHsKKyAgICAgICAgbFN0YXR1cyA9IEFVRElPRUZGRUNUX0VSUk9SX0JBRF9WQUxVRTsKKyAgICAgICAgZ290byBzZXR1cF9mYWlsdXJlOworICAgIH0KKworICAgIGxwSm5pU3RvcmFnZSA9IG5ldyBBdWRpb0VmZmVjdEpuaVN0b3JhZ2UoKTsKKyAgICBpZiAobHBKbmlTdG9yYWdlID09IE5VTEwpIHsKKyAgICAgICAgTE9HRSgic2V0dXA6IEVycm9yIGNyZWF0aW5nIEpOSSBTdG9yYWdlIik7CisgICAgICAgIGdvdG8gc2V0dXBfZmFpbHVyZTsKKyAgICB9CisKKyAgICBscEpuaVN0b3JhZ2UtPm1DYWxsYmFja0RhdGEuYXVkaW9FZmZlY3RfY2xhc3MgPSAoamNsYXNzKWVudi0+TmV3R2xvYmFsUmVmKGZpZWxkcy5jbGF6ekVmZmVjdCk7CisgICAgLy8gd2UgdXNlIGEgd2VhayByZWZlcmVuY2Ugc28gdGhlIEF1ZGlvRWZmZWN0IG9iamVjdCBjYW4gYmUgZ2FyYmFnZSBjb2xsZWN0ZWQuCisgICAgbHBKbmlTdG9yYWdlLT5tQ2FsbGJhY2tEYXRhLmF1ZGlvRWZmZWN0X3JlZiA9IGVudi0+TmV3R2xvYmFsUmVmKHdlYWtfdGhpcyk7CisKKyAgICBMT0dWKCJzZXR1cDogbHBKbmlTdG9yYWdlOiAlcCBhdWRpb0VmZmVjdF9yZWYgJXAgYXVkaW9FZmZlY3RfY2xhc3MgJXAsICZtQ2FsbGJhY2tEYXRhICVwIiwKKyAgICAgICAgICAgIGxwSm5pU3RvcmFnZSwKKyAgICAgICAgICAgIGxwSm5pU3RvcmFnZS0+bUNhbGxiYWNrRGF0YS5hdWRpb0VmZmVjdF9yZWYsCisgICAgICAgICAgICBscEpuaVN0b3JhZ2UtPm1DYWxsYmFja0RhdGEuYXVkaW9FZmZlY3RfY2xhc3MsCisgICAgICAgICAgICAmbHBKbmlTdG9yYWdlLT5tQ2FsbGJhY2tEYXRhKTsKKworICAgIGlmIChqSWQpIHsKKyAgICAgICAgbklkID0gKGppbnQgKikgZW52LT5HZXRQcmltaXRpdmVBcnJheUNyaXRpY2FsKGpJZCwgTlVMTCk7CisgICAgICAgIGlmIChuSWQgPT0gTlVMTCkgeworICAgICAgICAgICAgTE9HRSgic2V0dXA6IEVycm9yIHJldHJpZXZpbmcgaWQgcG9pbnRlciIpOworICAgICAgICAgICAgbFN0YXR1cyA9IEFVRElPRUZGRUNUX0VSUk9SX0JBRF9WQUxVRTsKKyAgICAgICAgICAgIGdvdG8gc2V0dXBfZmFpbHVyZTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIExPR0UoInNldHVwOiBOVUxMIGphdmEgYXJyYXkgZm9yIGlkIHBvaW50ZXIiKTsKKyAgICAgICAgbFN0YXR1cyA9IEFVRElPRUZGRUNUX0VSUk9SX0JBRF9WQUxVRTsKKyAgICAgICAgZ290byBzZXR1cF9mYWlsdXJlOworICAgIH0KKworICAgIC8vIGNyZWF0ZSB0aGUgbmF0aXZlIEF1ZGlvRWZmZWN0IG9iamVjdAorICAgIGxwQXVkaW9FZmZlY3QgPSBuZXcgQXVkaW9FZmZlY3QodHlwZVN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV1aWRTdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmlvcml0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVmZmVjdENhbGxiYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxwSm5pU3RvcmFnZS0+bUNhbGxiYWNrRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb25JZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOworICAgIGlmIChscEF1ZGlvRWZmZWN0ID09IE5VTEwpIHsKKyAgICAgICAgTE9HRSgiRXJyb3IgY3JlYXRpbmcgQXVkaW9FZmZlY3QiKTsKKyAgICAgICAgZ290byBzZXR1cF9mYWlsdXJlOworICAgIH0KKworICAgIGxTdGF0dXMgPSB0cmFuc2xhdGVFcnJvcihscEF1ZGlvRWZmZWN0LT5pbml0Q2hlY2soKSk7CisgICAgaWYgKGxTdGF0dXMgIT0gQVVESU9FRkZFQ1RfU1VDQ0VTUyAmJiBsU3RhdHVzICE9IEFVRElPRUZGRUNUX0VSUk9SX0FMUkVBRFlfRVhJU1RTKSB7CisgICAgICAgIExPR0UoIkF1ZGlvRWZmZWN0IGluaXRDaGVjayBmYWlsZWQgJWQiLCBsU3RhdHVzKTsKKyAgICAgICAgZ290byBzZXR1cF9mYWlsdXJlOworICAgIH0KKworICAgIG5JZFswXSA9IGxwQXVkaW9FZmZlY3QtPmlkKCk7CisKKyAgICBlbnYtPlJlbGVhc2VQcmltaXRpdmVBcnJheUNyaXRpY2FsKGpJZCwgbklkLCAwKTsKKyAgICBuSWQgPSBOVUxMOworCisgICAgaWYgKHR5cGVTdHIpIHsKKyAgICAgICAgZW52LT5SZWxlYXNlU3RyaW5nVVRGQ2hhcnModHlwZSwgdHlwZVN0cik7CisgICAgICAgIHR5cGVTdHIgPSBOVUxMOworICAgIH0KKworICAgIGlmICh1dWlkU3RyKSB7CisgICAgICAgIGVudi0+UmVsZWFzZVN0cmluZ1VURkNoYXJzKHV1aWQsIHV1aWRTdHIpOworICAgICAgICB1dWlkU3RyID0gTlVMTDsKKyAgICB9CisKKyAgICAvLyBnZXQgdGhlIGVmZmVjdCBkZXNjcmlwdG9yCisgICAgZGVzYyA9IGxwQXVkaW9FZmZlY3QtPmRlc2NyaXB0b3IoKTsKKworICAgIEF1ZGlvRWZmZWN0OjpndWlkVG9TdHJpbmcoJmRlc2MudHlwZSwgc3RyLCBFRkZFQ1RfU1RSSU5HX0xFTl9NQVgpOworICAgIGpkZXNjVHlwZSA9IGVudi0+TmV3U3RyaW5nVVRGKHN0cik7CisKKyAgICBBdWRpb0VmZmVjdDo6Z3VpZFRvU3RyaW5nKCZkZXNjLnV1aWQsIHN0ciwgRUZGRUNUX1NUUklOR19MRU5fTUFYKTsKKyAgICBqZGVzY1V1aWQgPSBlbnYtPk5ld1N0cmluZ1VURihzdHIpOworCisgICAgaWYgKChkZXNjLmZsYWdzICYgRUZGRUNUX0ZMQUdfVFlQRV9NQVNLKSA9PSBFRkZFQ1RfRkxBR19UWVBFX0FVWElMSUFSWSkgeworICAgICAgICBqZGVzY0Nvbm5lY3QgPSBlbnYtPk5ld1N0cmluZ1VURigiQXV4aWxpYXJ5Iik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgamRlc2NDb25uZWN0ID0gZW52LT5OZXdTdHJpbmdVVEYoIkluc2VydCIpOworICAgIH0KKworICAgIGpkZXNjTmFtZSA9IGVudi0+TmV3U3RyaW5nVVRGKGRlc2MubmFtZSk7CisgICAgamRlc2NJbXBsZW1lbnRvciA9IGVudi0+TmV3U3RyaW5nVVRGKGRlc2MuaW1wbGVtZW50b3IpOworCisgICAgamRlc2MgPSBlbnYtPk5ld09iamVjdChmaWVsZHMuY2xhenpEZXNjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRzLm1pZERlc2NDc3RvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGpkZXNjVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGpkZXNjVXVpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGpkZXNjQ29ubmVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGpkZXNjTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGpkZXNjSW1wbGVtZW50b3IpOworICAgIGVudi0+RGVsZXRlTG9jYWxSZWYoamRlc2NUeXBlKTsKKyAgICBlbnYtPkRlbGV0ZUxvY2FsUmVmKGpkZXNjVXVpZCk7CisgICAgZW52LT5EZWxldGVMb2NhbFJlZihqZGVzY0Nvbm5lY3QpOworICAgIGVudi0+RGVsZXRlTG9jYWxSZWYoamRlc2NOYW1lKTsKKyAgICBlbnYtPkRlbGV0ZUxvY2FsUmVmKGpkZXNjSW1wbGVtZW50b3IpOworICAgIGlmIChqZGVzYyA9PSBOVUxMKSB7CisgICAgICAgIExPR0UoImVudi0+TmV3T2JqZWN0KGZpZWxkcy5jbGF6ekRlc2MsIGZpZWxkcy5taWREZXNjQ3N0b3IpIik7CisgICAgICAgIGdvdG8gc2V0dXBfZmFpbHVyZTsKKyAgICB9CisKKyAgICBlbnYtPlNldE9iamVjdEFycmF5RWxlbWVudChqYXZhZGVzYywgMCwgamRlc2MpOworCisgICAgZW52LT5TZXRJbnRGaWVsZCh0aGl6LCBmaWVsZHMuZmlkTmF0aXZlQXVkaW9FZmZlY3QsIChpbnQpbHBBdWRpb0VmZmVjdCk7CisKKyAgICBlbnYtPlNldEludEZpZWxkKHRoaXosIGZpZWxkcy5maWRKbmlEYXRhLCAoaW50KWxwSm5pU3RvcmFnZSk7CisKKyAgICByZXR1cm4gQVVESU9FRkZFQ1RfU1VDQ0VTUzsKKworICAgIC8vIGZhaWx1cmVzOgorc2V0dXBfZmFpbHVyZToKKworICAgIGlmIChuSWQgIT0gTlVMTCkgeworICAgICAgICBlbnYtPlJlbGVhc2VQcmltaXRpdmVBcnJheUNyaXRpY2FsKGpJZCwgbklkLCAwKTsKKyAgICB9CisKKyAgICBpZiAobHBBdWRpb0VmZmVjdCkgeworICAgICAgICBkZWxldGUgbHBBdWRpb0VmZmVjdDsKKyAgICB9CisgICAgZW52LT5TZXRJbnRGaWVsZCh0aGl6LCBmaWVsZHMuZmlkTmF0aXZlQXVkaW9FZmZlY3QsIDApOworCisgICAgaWYgKGxwSm5pU3RvcmFnZSkgeworICAgICAgICBkZWxldGUgbHBKbmlTdG9yYWdlOworICAgIH0KKyAgICBlbnYtPlNldEludEZpZWxkKHRoaXosIGZpZWxkcy5maWRKbmlEYXRhLCAwKTsKKworICAgIGlmICh1dWlkU3RyICE9IE5VTEwpIHsKKyAgICAgICAgZW52LT5SZWxlYXNlU3RyaW5nVVRGQ2hhcnModXVpZCwgdXVpZFN0cik7CisgICAgfQorCisgICAgaWYgKHR5cGVTdHIgIT0gTlVMTCkgeworICAgICAgICBlbnYtPlJlbGVhc2VTdHJpbmdVVEZDaGFycyh0eXBlLCB0eXBlU3RyKTsKKyAgICB9CisKKyAgICByZXR1cm4gbFN0YXR1czsKK30KKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitzdGF0aWMgdm9pZCBhbmRyb2lkX21lZGlhX0F1ZGlvRWZmZWN0X25hdGl2ZV9maW5hbGl6ZShKTklFbnYgKmVudiwgIGpvYmplY3QgdGhpeikgeworICAgIExPR1YoImFuZHJvaWRfbWVkaWFfQXVkaW9FZmZlY3RfbmF0aXZlX2ZpbmFsaXplIGpvYmplY3Q6ICV4XG4iLCAoaW50KXRoaXopOworCisgICAgLy8gZGVsZXRlIHRoZSBBdWRpb0VmZmVjdCBvYmplY3QKKyAgICBBdWRpb0VmZmVjdCogbHBBdWRpb0VmZmVjdCA9IChBdWRpb0VmZmVjdCAqKWVudi0+R2V0SW50RmllbGQoCisgICAgICAgIHRoaXosIGZpZWxkcy5maWROYXRpdmVBdWRpb0VmZmVjdCk7CisgICAgaWYgKGxwQXVkaW9FZmZlY3QpIHsKKyAgICAgICAgTE9HVigiZGVsZXRpbmcgQXVkaW9FZmZlY3Q6ICV4XG4iLCAoaW50KWxwQXVkaW9FZmZlY3QpOworICAgICAgICBkZWxldGUgbHBBdWRpb0VmZmVjdDsKKyAgICB9CisKKyAgICAvLyBkZWxldGUgdGhlIEpOSSBkYXRhCisgICAgQXVkaW9FZmZlY3RKbmlTdG9yYWdlKiBscEpuaVN0b3JhZ2UgPSAoQXVkaW9FZmZlY3RKbmlTdG9yYWdlICopZW52LT5HZXRJbnRGaWVsZCgKKyAgICAgICAgdGhpeiwgZmllbGRzLmZpZEpuaURhdGEpOworICAgIGlmIChscEpuaVN0b3JhZ2UpIHsKKyAgICAgICAgTE9HVigiZGVsZXRpbmcgcEpuaVN0b3JhZ2U6ICV4XG4iLCAoaW50KWxwSm5pU3RvcmFnZSk7CisgICAgICAgIGRlbGV0ZSBscEpuaVN0b3JhZ2U7CisgICAgfQorfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitzdGF0aWMgdm9pZCBhbmRyb2lkX21lZGlhX0F1ZGlvRWZmZWN0X25hdGl2ZV9yZWxlYXNlKEpOSUVudiAqZW52LCAgam9iamVjdCB0aGl6KSB7CisKKyAgICAvLyBkbyBldmVyeXRoaW5nIGEgY2FsbCB0byBmaW5hbGl6ZSB3b3VsZAorICAgIGFuZHJvaWRfbWVkaWFfQXVkaW9FZmZlY3RfbmF0aXZlX2ZpbmFsaXplKGVudiwgdGhpeik7CisgICAgLy8gKyByZXNldCB0aGUgbmF0aXZlIHJlc291cmNlcyBpbiB0aGUgSmF2YSBvYmplY3Qgc28gYW55IGF0dGVtcHQgdG8gYWNjZXNzCisgICAgLy8gdGhlbSBhZnRlciBhIGNhbGwgdG8gcmVsZWFzZSBmYWlscy4KKyAgICBlbnYtPlNldEludEZpZWxkKHRoaXosIGZpZWxkcy5maWROYXRpdmVBdWRpb0VmZmVjdCwgMCk7CisgICAgZW52LT5TZXRJbnRGaWVsZCh0aGl6LCBmaWVsZHMuZmlkSm5pRGF0YSwgMCk7Cit9CisKK3N0YXRpYyBqaW50CithbmRyb2lkX21lZGlhX0F1ZGlvRWZmZWN0X25hdGl2ZV9zZXRFbmFibGVkKEpOSUVudiAqZW52LCBqb2JqZWN0IHRoaXosIGpib29sZWFuIGVuYWJsZWQpCit7CisgICAgLy8gcmV0cmlldmUgdGhlIEF1ZGlvRWZmZWN0IG9iamVjdAorICAgIEF1ZGlvRWZmZWN0KiBscEF1ZGlvRWZmZWN0ID0gKEF1ZGlvRWZmZWN0ICopZW52LT5HZXRJbnRGaWVsZCgKKyAgICAgICAgdGhpeiwgZmllbGRzLmZpZE5hdGl2ZUF1ZGlvRWZmZWN0KTsKKworICAgIGlmIChscEF1ZGlvRWZmZWN0ID09IE5VTEwpIHsKKyAgICAgICAgam5pVGhyb3dFeGNlcHRpb24oZW52LCAiamF2YS9sYW5nL0lsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIsCisgICAgICAgICAgICAiVW5hYmxlIHRvIHJldHJpZXZlIEF1ZGlvRWZmZWN0IHBvaW50ZXIgZm9yIGVuYWJsZSgpIik7CisgICAgICAgIHJldHVybiBBVURJT0VGRkVDVF9FUlJPUl9OT19JTklUOworICAgIH0KKworICAgIHJldHVybiB0cmFuc2xhdGVFcnJvcihscEF1ZGlvRWZmZWN0LT5zZXRFbmFibGVkKGVuYWJsZWQpKTsKK30KKworc3RhdGljIGpib29sZWFuCithbmRyb2lkX21lZGlhX0F1ZGlvRWZmZWN0X25hdGl2ZV9nZXRFbmFibGVkKEpOSUVudiAqZW52LCBqb2JqZWN0IHRoaXopCit7CisgICAgLy8gcmV0cmlldmUgdGhlIEF1ZGlvRWZmZWN0IG9iamVjdAorICAgIEF1ZGlvRWZmZWN0KiBscEF1ZGlvRWZmZWN0ID0gKEF1ZGlvRWZmZWN0ICopZW52LT5HZXRJbnRGaWVsZCgKKyAgICAgICAgdGhpeiwgZmllbGRzLmZpZE5hdGl2ZUF1ZGlvRWZmZWN0KTsKKworICAgIGlmIChscEF1ZGlvRWZmZWN0ID09IE5VTEwpIHsKKyAgICAgICAgam5pVGhyb3dFeGNlcHRpb24oZW52LCAiamF2YS9sYW5nL0lsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIsCisgICAgICAgICAgICAiVW5hYmxlIHRvIHJldHJpZXZlIEF1ZGlvRWZmZWN0IHBvaW50ZXIgZm9yIGdldEVuYWJsZWQoKSIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIChqYm9vbGVhbilscEF1ZGlvRWZmZWN0LT5nZXRFbmFibGVkKCk7Cit9CisKKworc3RhdGljIGpib29sZWFuCithbmRyb2lkX21lZGlhX0F1ZGlvRWZmZWN0X25hdGl2ZV9oYXNDb250cm9sKEpOSUVudiAqZW52LCBqb2JqZWN0IHRoaXopCit7CisgICAgLy8gcmV0cmlldmUgdGhlIEF1ZGlvRWZmZWN0IG9iamVjdAorICAgIEF1ZGlvRWZmZWN0KiBscEF1ZGlvRWZmZWN0ID0gKEF1ZGlvRWZmZWN0ICopZW52LT5HZXRJbnRGaWVsZCgKKyAgICAgICAgdGhpeiwgZmllbGRzLmZpZE5hdGl2ZUF1ZGlvRWZmZWN0KTsKKworICAgIGlmIChscEF1ZGlvRWZmZWN0ID09IE5VTEwpIHsKKyAgICAgICAgam5pVGhyb3dFeGNlcHRpb24oZW52LCAiamF2YS9sYW5nL0lsbGVnYWxTdGF0ZUV4Y2VwdGlvbiIsCisgICAgICAgICAgICAiVW5hYmxlIHRvIHJldHJpZXZlIEF1ZGlvRWZmZWN0IHBvaW50ZXIgZm9yIGhhc0NvbnRyb2woKSIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKGxwQXVkaW9FZmZlY3QtPmluaXRDaGVjaygpID09IE5PX0VSUk9SKSB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK3N0YXRpYyBqaW50IGFuZHJvaWRfbWVkaWFfQXVkaW9FZmZlY3RfbmF0aXZlX3NldFBhcmFtZXRlcihKTklFbnYgKmVudiwKKyAgICAgICAgam9iamVjdCB0aGl6LCBpbnQgcHNpemUsIGpieXRlQXJyYXkgcEphdmFQYXJhbSwgaW50IHZzaXplLAorICAgICAgICBqYnl0ZUFycmF5IHBKYXZhVmFsdWUpIHsKKyAgICAvLyByZXRyaWV2ZSB0aGUgQXVkaW9FZmZlY3Qgb2JqZWN0CisgICAgamJ5dGUqIGxwVmFsdWUgPSBOVUxMOworICAgIGpieXRlKiBscFBhcmFtID0gTlVMTDsKKyAgICBqaW50IGxTdGF0dXMgPSBBVURJT0VGRkVDVF9FUlJPUl9CQURfVkFMVUU7CisgICAgZWZmZWN0X3BhcmFtX3QgKnA7CisgICAgaW50IHZvZmZzZXQ7CisKKyAgICBBdWRpb0VmZmVjdCogbHBBdWRpb0VmZmVjdCA9IChBdWRpb0VmZmVjdCAqKSBlbnYtPkdldEludEZpZWxkKHRoaXosCisgICAgICAgICAgICBmaWVsZHMuZmlkTmF0aXZlQXVkaW9FZmZlY3QpOworCisgICAgaWYgKGxwQXVkaW9FZmZlY3QgPT0gTlVMTCkgeworICAgICAgICBqbmlUaHJvd0V4Y2VwdGlvbihlbnYsICJqYXZhL2xhbmcvSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiwKKyAgICAgICAgICAgICAgICAiVW5hYmxlIHRvIHJldHJpZXZlIEF1ZGlvRWZmZWN0IHBvaW50ZXIgZm9yIHNldFBhcmFtZXRlcigpIik7CisgICAgICAgIHJldHVybiBBVURJT0VGRkVDVF9FUlJPUl9OT19JTklUOworICAgIH0KKworICAgIGlmIChwc2l6ZSA9PSAwIHx8IHZzaXplID09IDAgfHwgcEphdmFQYXJhbSA9PSBOVUxMIHx8IHBKYXZhVmFsdWUgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gQVVESU9FRkZFQ1RfRVJST1JfQkFEX1ZBTFVFOworICAgIH0KKworICAgIC8vIGdldCB0aGUgcG9pbnRlciBmb3IgdGhlIHBhcmFtIGZyb20gdGhlIGphdmEgYXJyYXkKKyAgICBscFBhcmFtID0gKGpieXRlICopIGVudi0+R2V0UHJpbWl0aXZlQXJyYXlDcml0aWNhbChwSmF2YVBhcmFtLCBOVUxMKTsKKyAgICBpZiAobHBQYXJhbSA9PSBOVUxMKSB7CisgICAgICAgIExPR0UoInNldFBhcmFtZXRlcjogRXJyb3IgcmV0cmlldmluZyBwYXJhbSBwb2ludGVyIik7CisgICAgICAgIGdvdG8gc2V0UGFyYW1ldGVyX0V4aXQ7CisgICAgfQorCisgICAgLy8gZ2V0IHRoZSBwb2ludGVyIGZvciB0aGUgdmFsdWUgZnJvbSB0aGUgamF2YSBhcnJheQorICAgIGxwVmFsdWUgPSAoamJ5dGUgKikgZW52LT5HZXRQcmltaXRpdmVBcnJheUNyaXRpY2FsKHBKYXZhVmFsdWUsIE5VTEwpOworICAgIGlmIChscFZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgTE9HRSgic2V0UGFyYW1ldGVyOiBFcnJvciByZXRyaWV2aW5nIHZhbHVlIHBvaW50ZXIiKTsKKyAgICAgICAgZ290byBzZXRQYXJhbWV0ZXJfRXhpdDsKKyAgICB9CisKKyAgICB2b2Zmc2V0ID0gKChwc2l6ZSAtIDEpIC8gc2l6ZW9mKGludCkgKyAxKSAqIHNpemVvZihpbnQpOworICAgIHAgPSAoZWZmZWN0X3BhcmFtX3QgKikgbWFsbG9jKHNpemVvZihlZmZlY3RfcGFyYW1fdCkgKyB2b2Zmc2V0ICsgdnNpemUpOworICAgIG1lbWNweShwLT5kYXRhLCBscFBhcmFtLCBwc2l6ZSk7CisgICAgcC0+cHNpemUgPSBwc2l6ZTsKKyAgICBtZW1jcHkocC0+ZGF0YSArIHZvZmZzZXQsIGxwVmFsdWUsIHBzaXplKTsKKyAgICBwLT52c2l6ZSA9IHZzaXplOworCisgICAgbFN0YXR1cyA9IGxwQXVkaW9FZmZlY3QtPnNldFBhcmFtZXRlcihwKTsKKyAgICBpZiAobFN0YXR1cyA9PSBOT19FUlJPUikgeworICAgICAgICBsU3RhdHVzID0gcC0+c3RhdHVzOworICAgIH0KKworICAgIGZyZWUocCk7CisKK3NldFBhcmFtZXRlcl9FeGl0OgorCisgICAgaWYgKGxwUGFyYW0gIT0gTlVMTCkgeworICAgICAgICBlbnYtPlJlbGVhc2VQcmltaXRpdmVBcnJheUNyaXRpY2FsKHBKYXZhUGFyYW0sIGxwUGFyYW0sIDApOworICAgIH0KKyAgICBpZiAobHBWYWx1ZSAhPSBOVUxMKSB7CisgICAgICAgIGVudi0+UmVsZWFzZVByaW1pdGl2ZUFycmF5Q3JpdGljYWwocEphdmFWYWx1ZSwgbHBWYWx1ZSwgMCk7CisgICAgfQorICAgIHJldHVybiB0cmFuc2xhdGVFcnJvcihsU3RhdHVzKTsKK30KKworc3RhdGljIGppbnQKK2FuZHJvaWRfbWVkaWFfQXVkaW9FZmZlY3RfbmF0aXZlX2dldFBhcmFtZXRlcihKTklFbnYgKmVudiwKKyAgICAgICAgam9iamVjdCB0aGl6LCBpbnQgcHNpemUsIGpieXRlQXJyYXkgcEphdmFQYXJhbSwKKyAgICAgICAgamludEFycmF5IHBKYXZhVmFsdWVTaXplLCBqYnl0ZUFycmF5IHBKYXZhVmFsdWUpIHsKKyAgICAvLyByZXRyaWV2ZSB0aGUgQXVkaW9FZmZlY3Qgb2JqZWN0CisgICAgamJ5dGUqIGxwUGFyYW0gPSBOVUxMOworICAgIGpieXRlKiBscFZhbHVlID0gTlVMTDsKKyAgICBqYnl0ZSogbHBWYWx1ZVNpemUgPSBOVUxMOworICAgIGppbnQgbFN0YXR1cyA9IEFVRElPRUZGRUNUX0VSUk9SX0JBRF9WQUxVRTsKKyAgICBlZmZlY3RfcGFyYW1fdCAqcDsKKyAgICBpbnQgdm9mZnNldDsKKworICAgIEF1ZGlvRWZmZWN0KiBscEF1ZGlvRWZmZWN0ID0gKEF1ZGlvRWZmZWN0ICopIGVudi0+R2V0SW50RmllbGQodGhpeiwKKyAgICAgICAgICAgIGZpZWxkcy5maWROYXRpdmVBdWRpb0VmZmVjdCk7CisKKyAgICBpZiAobHBBdWRpb0VmZmVjdCA9PSBOVUxMKSB7CisgICAgICAgIGpuaVRocm93RXhjZXB0aW9uKGVudiwgImphdmEvbGFuZy9JbGxlZ2FsU3RhdGVFeGNlcHRpb24iLAorICAgICAgICAgICAgICAgICJVbmFibGUgdG8gcmV0cmlldmUgQXVkaW9FZmZlY3QgcG9pbnRlciBmb3IgZ2V0UGFyYW1ldGVyKCkiKTsKKyAgICAgICAgcmV0dXJuIEFVRElPRUZGRUNUX0VSUk9SX05PX0lOSVQ7CisgICAgfQorCisgICAgaWYgKHBzaXplID09IDAgfHwgcEphdmFWYWx1ZVNpemUgPT0gTlVMTCB8fCBwSmF2YVBhcmFtID09IE5VTEwgfHwgcEphdmFWYWx1ZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBBVURJT0VGRkVDVF9FUlJPUl9CQURfVkFMVUU7CisgICAgfQorCisgICAgLy8gZ2V0IHRoZSBwb2ludGVyIGZvciB0aGUgcGFyYW0gZnJvbSB0aGUgamF2YSBhcnJheQorICAgIGxwUGFyYW0gPSAoamJ5dGUgKikgZW52LT5HZXRQcmltaXRpdmVBcnJheUNyaXRpY2FsKHBKYXZhUGFyYW0sIE5VTEwpOworICAgIGlmIChscFBhcmFtID09IE5VTEwpIHsKKyAgICAgICAgTE9HRSgiZ2V0UGFyYW1ldGVyOiBFcnJvciByZXRyaWV2aW5nIHBhcmFtIHBvaW50ZXIiKTsKKyAgICAgICAgZ290byBnZXRQYXJhbWV0ZXJfRXhpdDsKKyAgICB9CisKKyAgICAvLyBnZXQgdGhlIHBvaW50ZXIgZm9yIHRoZSB2YWx1ZSBmcm9tIHRoZSBqYXZhIGFycmF5CisgICAgbHBWYWx1ZSA9IChqYnl0ZSAqKSBlbnYtPkdldFByaW1pdGl2ZUFycmF5Q3JpdGljYWwocEphdmFWYWx1ZSwgTlVMTCk7CisgICAgaWYgKGxwVmFsdWUgPT0gTlVMTCkgeworICAgICAgICBMT0dFKCJnZXRQYXJhbWV0ZXI6IEVycm9yIHJldHJpZXZpbmcgdmFsdWUgcG9pbnRlciIpOworICAgICAgICBnb3RvIGdldFBhcmFtZXRlcl9FeGl0OworICAgIH0KKworICAgIC8vIGdldCB0aGUgcG9pbnRlciBmb3IgdGhlIHZhbHVlIHNpemUgZnJvbSB0aGUgamF2YSBhcnJheQorICAgIGxwVmFsdWVTaXplID0gKGpieXRlICopIGVudi0+R2V0UHJpbWl0aXZlQXJyYXlDcml0aWNhbChwSmF2YVZhbHVlU2l6ZSwgTlVMTCk7CisgICAgaWYgKGxwVmFsdWVTaXplID09IE5VTEwpIHsKKyAgICAgICAgTE9HRSgiZ2V0UGFyYW1ldGVyOiBFcnJvciByZXRyaWV2aW5nIHZhbHVlIHNpemUgcG9pbnRlciIpOworICAgICAgICBnb3RvIGdldFBhcmFtZXRlcl9FeGl0OworICAgIH0KKworICAgIHZvZmZzZXQgPSAoKHBzaXplIC0gMSkgLyBzaXplb2YoaW50KSArIDEpICogc2l6ZW9mKGludCk7CisgICAgcCA9IChlZmZlY3RfcGFyYW1fdCAqKSBtYWxsb2Moc2l6ZW9mKGVmZmVjdF9wYXJhbV90KSArIHZvZmZzZXQKKyAgICAgICAgICAgICsgbHBWYWx1ZVNpemVbMF0pOworICAgIG1lbWNweShwLT5kYXRhLCBscFBhcmFtLCBwc2l6ZSk7CisgICAgcC0+cHNpemUgPSBwc2l6ZTsKKyAgICBwLT52c2l6ZSA9IGxwVmFsdWVTaXplWzBdOworCisgICAgbFN0YXR1cyA9IGxwQXVkaW9FZmZlY3QtPmdldFBhcmFtZXRlcihwKTsKKyAgICBpZiAobFN0YXR1cyA9PSBOT19FUlJPUikgeworICAgICAgICBsU3RhdHVzID0gcC0+c3RhdHVzOworICAgICAgICBpZiAobFN0YXR1cyA9PSBOT19FUlJPUikgeworICAgICAgICAgICAgbWVtY3B5KGxwVmFsdWUsIHAtPmRhdGEgKyB2b2Zmc2V0LCBwLT52c2l6ZSk7CisgICAgICAgICAgICBscFZhbHVlU2l6ZVswXSA9IHAtPnZzaXplOworICAgICAgICB9CisgICAgfQorCisgICAgZnJlZShwKTsKKworZ2V0UGFyYW1ldGVyX0V4aXQ6CisKKyAgICBpZiAobHBQYXJhbSAhPSBOVUxMKSB7CisgICAgICAgIGVudi0+UmVsZWFzZVByaW1pdGl2ZUFycmF5Q3JpdGljYWwocEphdmFQYXJhbSwgbHBQYXJhbSwgMCk7CisgICAgfQorICAgIGlmIChscFZhbHVlICE9IE5VTEwpIHsKKyAgICAgICAgZW52LT5SZWxlYXNlUHJpbWl0aXZlQXJyYXlDcml0aWNhbChwSmF2YVZhbHVlLCBscFZhbHVlLCAwKTsKKyAgICB9CisgICAgaWYgKGxwVmFsdWVTaXplICE9IE5VTEwpIHsKKyAgICAgICAgZW52LT5SZWxlYXNlUHJpbWl0aXZlQXJyYXlDcml0aWNhbChwSmF2YVZhbHVlU2l6ZSwgbHBWYWx1ZVNpemUsIDApOworICAgIH0KKworICAgIHJldHVybiB0cmFuc2xhdGVFcnJvcihsU3RhdHVzKTsKK30KKworc3RhdGljIGppbnQgYW5kcm9pZF9tZWRpYV9BdWRpb0VmZmVjdF9uYXRpdmVfY29tbWFuZChKTklFbnYgKmVudiwgam9iamVjdCB0aGl6LAorICAgICAgICBqaW50IGNtZENvZGUsIGppbnQgY21kU2l6ZSwgamJ5dGVBcnJheSBqQ21kRGF0YSwgamludEFycmF5IGpSZXBseVNpemUsCisgICAgICAgIGpieXRlQXJyYXkgalJlcGx5RGF0YSkgeworICAgIGpieXRlKiBwQ21kRGF0YSA9IE5VTEw7CisgICAgamJ5dGUqIHBSZXBseURhdGEgPSBOVUxMOworICAgIGppbnQqIHBSZXBseVNpemUgPSBOVUxMOworICAgIGppbnQgbFN0YXR1cyA9IEFVRElPRUZGRUNUX0VSUk9SX0JBRF9WQUxVRTsKKworICAgIC8vIHJldHJpZXZlIHRoZSBBdWRpb0VmZmVjdCBvYmplY3QKKyAgICBBdWRpb0VmZmVjdCogbHBBdWRpb0VmZmVjdCA9IChBdWRpb0VmZmVjdCAqKSBlbnYtPkdldEludEZpZWxkKHRoaXosCisgICAgICAgICAgICBmaWVsZHMuZmlkTmF0aXZlQXVkaW9FZmZlY3QpOworCisgICAgaWYgKGxwQXVkaW9FZmZlY3QgPT0gTlVMTCkgeworICAgICAgICBqbmlUaHJvd0V4Y2VwdGlvbihlbnYsICJqYXZhL2xhbmcvSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiwKKyAgICAgICAgICAgICAgICAiVW5hYmxlIHRvIHJldHJpZXZlIEF1ZGlvRWZmZWN0IHBvaW50ZXIgZm9yIHNldFBhcmFtZXRlcigpIik7CisgICAgICAgIHJldHVybiBBVURJT0VGRkVDVF9FUlJPUl9OT19JTklUOworICAgIH0KKworICAgIGlmICgoY21kU2l6ZSAhPSAwICYmIGpDbWREYXRhID09IE5VTEwpIHx8IChqUmVwbHlTaXplICE9IE5VTEwgJiYgalJlcGx5RGF0YSA9PSBOVUxMKSkgeworICAgICAgICByZXR1cm4gQVVESU9FRkZFQ1RfRVJST1JfQkFEX1ZBTFVFOworICAgIH0KKworICAgIC8vIGdldCB0aGUgcG9pbnRlciBmb3IgdGhlIGNvbW1hbmQgZnJvbSB0aGUgamF2YSBhcnJheQorICAgIGlmIChjbWRTaXplICE9IDApIHsKKyAgICAgICAgcENtZERhdGEgPSAoamJ5dGUgKikgZW52LT5HZXRQcmltaXRpdmVBcnJheUNyaXRpY2FsKGpDbWREYXRhLCBOVUxMKTsKKyAgICAgICAgaWYgKHBDbWREYXRhID09IE5VTEwpIHsKKyAgICAgICAgICAgIExPR0UoInNldFBhcmFtZXRlcjogRXJyb3IgcmV0cmlldmluZyBjb21tYW5kIHBvaW50ZXIiKTsKKyAgICAgICAgICAgIGdvdG8gY29tbWFuZF9FeGl0OworICAgICAgICB9CisgICAgfQorCisgICAgLy8gZ2V0IHRoZSBwb2ludGVyIGZvciB0aGUgcmVwbHkgc2l6ZSBmcm9tIHRoZSBqYXZhIGFycmF5CisgICAgaWYgKGpSZXBseVNpemUgIT0gTlVMTCkgeworICAgICAgICBwUmVwbHlTaXplID0gKGppbnQgKikgZW52LT5HZXRQcmltaXRpdmVBcnJheUNyaXRpY2FsKGpSZXBseVNpemUsIE5VTEwpOworICAgICAgICBpZiAocFJlcGx5U2l6ZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBMT0dFKCJzZXRQYXJhbWV0ZXI6IEVycm9yIHJldHJpZXZpbmcgcmVwbHkgcG9pbnRlciIpOworICAgICAgICAgICAgZ290byBjb21tYW5kX0V4aXQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBnZXQgdGhlIHBvaW50ZXIgZm9yIHRoZSByZXBseSBmcm9tIHRoZSBqYXZhIGFycmF5CisgICAgaWYgKHBSZXBseVNpemUgIT0gTlVMTCAmJiBwUmVwbHlTaXplWzBdICE9IDAgJiYgalJlcGx5RGF0YSAhPSBOVUxMKSB7CisgICAgICAgIHBSZXBseURhdGEgPSAoamJ5dGUgKikgZW52LT5HZXRQcmltaXRpdmVBcnJheUNyaXRpY2FsKGpSZXBseURhdGEsIE5VTEwpOworICAgICAgICBpZiAocFJlcGx5RGF0YSA9PSBOVUxMKSB7CisgICAgICAgICAgICBMT0dFKCJzZXRQYXJhbWV0ZXI6IEVycm9yIHJldHJpZXZpbmcgcmVwbHkgcG9pbnRlciIpOworICAgICAgICAgICAgZ290byBjb21tYW5kX0V4aXQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBsU3RhdHVzID0gdHJhbnNsYXRlRXJyb3IobHBBdWRpb0VmZmVjdC0+Y29tbWFuZChjbWRDb2RlLCBjbWRTaXplLCBwQ21kRGF0YSwKKyAgICAgICAgICAgIHBSZXBseVNpemUsIHBSZXBseURhdGEpKTsKKworY29tbWFuZF9FeGl0OgorCisgICAgaWYgKHBDbWREYXRhICE9IE5VTEwpIHsKKyAgICAgICAgZW52LT5SZWxlYXNlUHJpbWl0aXZlQXJyYXlDcml0aWNhbChqQ21kRGF0YSwgcENtZERhdGEsIDApOworICAgIH0KKyAgICBpZiAocFJlcGx5RGF0YSAhPSBOVUxMKSB7CisgICAgICAgIGVudi0+UmVsZWFzZVByaW1pdGl2ZUFycmF5Q3JpdGljYWwoalJlcGx5RGF0YSwgcFJlcGx5RGF0YSwgMCk7CisgICAgfQorICAgIGlmIChwUmVwbHlTaXplICE9IE5VTEwpIHsKKyAgICAgICAgZW52LT5SZWxlYXNlUHJpbWl0aXZlQXJyYXlDcml0aWNhbChqUmVwbHlTaXplLCBwUmVwbHlTaXplLCAwKTsKKyAgICB9CisKKyAgICByZXR1cm4gbFN0YXR1czsKK30KKworc3RhdGljIGpvYmplY3RBcnJheQorYW5kcm9pZF9tZWRpYV9BdWRpb0VmZmVjdF9uYXRpdmVfcXVlcnlFZmZlY3RzKEpOSUVudiAqZW52LCBqY2xhc3MgY2xhenopCit7CisgICAgZWZmZWN0X2Rlc2NyaXB0b3JfdCBkZXNjOworICAgIGNoYXIgc3RyW0VGRkVDVF9TVFJJTkdfTEVOX01BWF07CisgICAgdWludDMyX3QgbnVtRWZmZWN0czsKKyAgICB1aW50MzJfdCBpID0gMDsKKyAgICBqc3RyaW5nIGpkZXNjVHlwZTsKKyAgICBqc3RyaW5nIGpkZXNjVXVpZDsKKyAgICBqc3RyaW5nIGpkZXNjQ29ubmVjdDsKKyAgICBqc3RyaW5nIGpkZXNjTmFtZTsKKyAgICBqc3RyaW5nIGpkZXNjSW1wbGVtZW50b3I7CisgICAgam9iamVjdCBqZGVzYzsKKworICAgIEF1ZGlvRWZmZWN0OjpxdWVyeU51bWJlckVmZmVjdHMoJm51bUVmZmVjdHMpOworICAgIGpvYmplY3RBcnJheSByZXQgPSBlbnYtPk5ld09iamVjdEFycmF5KG51bUVmZmVjdHMsIGZpZWxkcy5jbGF6ekRlc2MsIE5VTEwpOworICAgIGlmIChyZXQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gcmV0OworICAgIH0KKworICAgIExPR1YoInF1ZXJ5RWZmZWN0cygpIG51bUVmZmVjdHM6ICVkIiwgbnVtRWZmZWN0cyk7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbnVtRWZmZWN0czsgaSsrKSB7CisgICAgICAgIGlmIChBdWRpb0VmZmVjdDo6cXVlcnlFZmZlY3QoaSwgJmRlc2MpICE9IE5PX0VSUk9SKSB7CisgICAgICAgICAgICBnb3RvIHF1ZXJ5RWZmZWN0c19mYWlsdXJlOworICAgICAgICB9CisKKyAgICAgICAgQXVkaW9FZmZlY3Q6Omd1aWRUb1N0cmluZygmZGVzYy50eXBlLCBzdHIsIEVGRkVDVF9TVFJJTkdfTEVOX01BWCk7CisgICAgICAgIGpkZXNjVHlwZSA9IGVudi0+TmV3U3RyaW5nVVRGKHN0cik7CisKKyAgICAgICAgQXVkaW9FZmZlY3Q6Omd1aWRUb1N0cmluZygmZGVzYy51dWlkLCBzdHIsIEVGRkVDVF9TVFJJTkdfTEVOX01BWCk7CisgICAgICAgIGpkZXNjVXVpZCA9IGVudi0+TmV3U3RyaW5nVVRGKHN0cik7CisKKyAgICAgICAgaWYgKChkZXNjLmZsYWdzICYgRUZGRUNUX0ZMQUdfVFlQRV9NQVNLKSA9PSBFRkZFQ1RfRkxBR19UWVBFX0FVWElMSUFSWSkgeworICAgICAgICAgICAgamRlc2NDb25uZWN0ID0gZW52LT5OZXdTdHJpbmdVVEYoIkF1eGlsaWFyeSIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgamRlc2NDb25uZWN0ID0gZW52LT5OZXdTdHJpbmdVVEYoIkluc2VydCIpOworICAgICAgICB9CisKKyAgICAgICAgamRlc2NOYW1lID0gZW52LT5OZXdTdHJpbmdVVEYoZGVzYy5uYW1lKTsKKyAgICAgICAgamRlc2NJbXBsZW1lbnRvciA9IGVudi0+TmV3U3RyaW5nVVRGKGRlc2MuaW1wbGVtZW50b3IpOworCisgICAgICAgIGpkZXNjID0gZW52LT5OZXdPYmplY3QoZmllbGRzLmNsYXp6RGVzYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZHMubWlkRGVzY0NzdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpkZXNjVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqZGVzY1V1aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamRlc2NDb25uZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpkZXNjTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqZGVzY0ltcGxlbWVudG9yKTsKKyAgICAgICAgZW52LT5EZWxldGVMb2NhbFJlZihqZGVzY1R5cGUpOworICAgICAgICBlbnYtPkRlbGV0ZUxvY2FsUmVmKGpkZXNjVXVpZCk7CisgICAgICAgIGVudi0+RGVsZXRlTG9jYWxSZWYoamRlc2NDb25uZWN0KTsKKyAgICAgICAgZW52LT5EZWxldGVMb2NhbFJlZihqZGVzY05hbWUpOworICAgICAgICBlbnYtPkRlbGV0ZUxvY2FsUmVmKGpkZXNjSW1wbGVtZW50b3IpOworICAgICAgICBpZiAoamRlc2MgPT0gTlVMTCkgeworICAgICAgICAgICAgTE9HRSgiZW52LT5OZXdPYmplY3QoZmllbGRzLmNsYXp6RGVzYywgZmllbGRzLm1pZERlc2NDc3RvcikiKTsKKyAgICAgICAgICAgIGdvdG8gcXVlcnlFZmZlY3RzX2ZhaWx1cmU7CisgICAgICAgIH0KKworICAgICAgICBlbnYtPlNldE9iamVjdEFycmF5RWxlbWVudChyZXQsIGksIGpkZXNjKTsKKyAgIH0KKworICAgIHJldHVybiByZXQ7CisKK3F1ZXJ5RWZmZWN0c19mYWlsdXJlOgorCisgICAgaWYgKHJldCAhPSBOVUxMKSB7CisgICAgICAgIGVudi0+RGVsZXRlTG9jYWxSZWYocmV0KTsKKyAgICB9CisgICAgcmV0dXJuIE5VTEw7CisKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBEYWx2aWsgVk0gdHlwZSBzaWduYXR1cmVzCitzdGF0aWMgSk5JTmF0aXZlTWV0aG9kIGdNZXRob2RzW10gPSB7CisgICAgeyJuYXRpdmVfaW5pdCIsICAgICAgICAgICIoKVYiLCAgICAgICh2b2lkICopYW5kcm9pZF9tZWRpYV9BdWRpb0VmZmVjdF9uYXRpdmVfaW5pdH0sCisgICAgeyJuYXRpdmVfc2V0dXAiLCAgICAgICAgICIoTGphdmEvbGFuZy9PYmplY3Q7TGphdmEvbGFuZy9TdHJpbmc7TGphdmEvbGFuZy9TdHJpbmc7SUlbSVtMamF2YS9sYW5nL09iamVjdDspSSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopYW5kcm9pZF9tZWRpYV9BdWRpb0VmZmVjdF9uYXRpdmVfc2V0dXB9LAorICAgIHsibmF0aXZlX2ZpbmFsaXplIiwgICAgICAiKClWIiwgICAgICAodm9pZCAqKWFuZHJvaWRfbWVkaWFfQXVkaW9FZmZlY3RfbmF0aXZlX2ZpbmFsaXplfSwKKyAgICB7Im5hdGl2ZV9yZWxlYXNlIiwgICAgICAgIigpViIsICAgICAgKHZvaWQgKilhbmRyb2lkX21lZGlhX0F1ZGlvRWZmZWN0X25hdGl2ZV9yZWxlYXNlfSwKKyAgICB7Im5hdGl2ZV9zZXRFbmFibGVkIiwgICAgIihaKUkiLCAgICAgICh2b2lkICopYW5kcm9pZF9tZWRpYV9BdWRpb0VmZmVjdF9uYXRpdmVfc2V0RW5hYmxlZH0sCisgICAgeyJuYXRpdmVfZ2V0RW5hYmxlZCIsICAgICIoKVoiLCAgICAgICh2b2lkICopYW5kcm9pZF9tZWRpYV9BdWRpb0VmZmVjdF9uYXRpdmVfZ2V0RW5hYmxlZH0sCisgICAgeyJuYXRpdmVfaGFzQ29udHJvbCIsICAgICIoKVoiLCAgICAgICh2b2lkICopYW5kcm9pZF9tZWRpYV9BdWRpb0VmZmVjdF9uYXRpdmVfaGFzQ29udHJvbH0sCisgICAgeyJuYXRpdmVfc2V0UGFyYW1ldGVyIiwgICIoSVtCSVtCKUkiLCAgKHZvaWQgKilhbmRyb2lkX21lZGlhX0F1ZGlvRWZmZWN0X25hdGl2ZV9zZXRQYXJhbWV0ZXJ9LAorICAgIHsibmF0aXZlX2dldFBhcmFtZXRlciIsICAiKElbQltJW0IpSSIsICAodm9pZCAqKWFuZHJvaWRfbWVkaWFfQXVkaW9FZmZlY3RfbmF0aXZlX2dldFBhcmFtZXRlcn0sCisgICAgeyJuYXRpdmVfY29tbWFuZCIsICAgICAgICIoSUlbQltJW0IpSSIsICh2b2lkICopYW5kcm9pZF9tZWRpYV9BdWRpb0VmZmVjdF9uYXRpdmVfY29tbWFuZH0sCisgICAgeyJuYXRpdmVfcXVlcnlfZWZmZWN0cyIsICIoKVtMamF2YS9sYW5nL09iamVjdDsiLCAodm9pZCAqKWFuZHJvaWRfbWVkaWFfQXVkaW9FZmZlY3RfbmF0aXZlX3F1ZXJ5RWZmZWN0c30sCit9OworCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworZXh0ZXJuIGludCByZWdpc3Rlcl9hbmRyb2lkX21lZGlhX3Zpc3VhbGl6ZXIoSk5JRW52ICplbnYpOworCitpbnQgcmVnaXN0ZXJfYW5kcm9pZF9tZWRpYV9BdWRpb0VmZmVjdChKTklFbnYgKmVudikKK3sKKyAgICByZXR1cm4gQW5kcm9pZFJ1bnRpbWU6OnJlZ2lzdGVyTmF0aXZlTWV0aG9kcyhlbnYsIGtDbGFzc1BhdGhOYW1lLCBnTWV0aG9kcywgTkVMRU0oZ01ldGhvZHMpKTsKK30KKworamludCBKTklfT25Mb2FkKEphdmFWTSogdm0sIHZvaWQqIHJlc2VydmVkKQoreworCisgICAgSk5JRW52KiBlbnYgPSBOVUxMOworICAgIGppbnQgcmVzdWx0ID0gLTE7CisKKyAgICBpZiAodm0tPkdldEVudigodm9pZCoqKSAmZW52LCBKTklfVkVSU0lPTl8xXzQpICE9IEpOSV9PSykgeworICAgICAgICBMT0dFKCJFUlJPUjogR2V0RW52IGZhaWxlZFxuIik7CisgICAgICAgIGdvdG8gYmFpbDsKKyAgICB9CisgICAgYXNzZXJ0KGVudiAhPSBOVUxMKTsKKworICAgIGlmIChyZWdpc3Rlcl9hbmRyb2lkX21lZGlhX0F1ZGlvRWZmZWN0KGVudikgPCAwKSB7CisgICAgICAgIExPR0UoIkVSUk9SOiBBdWRpb0VmZmVjdCBuYXRpdmUgcmVnaXN0cmF0aW9uIGZhaWxlZFxuIik7CisgICAgICAgIGdvdG8gYmFpbDsKKyAgICB9CisKKyAgICBpZiAocmVnaXN0ZXJfYW5kcm9pZF9tZWRpYV92aXN1YWxpemVyKGVudikgPCAwKSB7CisgICAgICAgIExPR0UoIkVSUk9SOiBWaXN1YWxpemVyIG5hdGl2ZSByZWdpc3RyYXRpb24gZmFpbGVkXG4iKTsKKyAgICAgICAgZ290byBiYWlsOworICAgIH0KKworICAgIC8qIHN1Y2Nlc3MgLS0gcmV0dXJuIHZhbGlkIHZlcnNpb24gbnVtYmVyICovCisgICAgcmVzdWx0ID0gSk5JX1ZFUlNJT05fMV80OworCitiYWlsOgorICAgIHJldHVybiByZXN1bHQ7Cit9CisKZGlmZiAtLWdpdCBhL21lZGlhL2puaS9hdWRpb2VmZmVjdC9hbmRyb2lkX21lZGlhX1Zpc3VhbGl6ZXIuY3BwIGIvbWVkaWEvam5pL2F1ZGlvZWZmZWN0L2FuZHJvaWRfbWVkaWFfVmlzdWFsaXplci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzExMTlmOAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2puaS9hdWRpb2VmZmVjdC9hbmRyb2lkX21lZGlhX1Zpc3VhbGl6ZXIuY3BwCkBAIC0wLDAgKzEsNTA3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2luY2x1ZGUgPHN0ZGlvLmg+CisKKy8vI2RlZmluZSBMT0dfTkRFQlVHIDAKKyNkZWZpbmUgTE9HX1RBRyAidmlzdWFsaXplcnMtSk5JIgorCisjaW5jbHVkZSA8dXRpbHMvTG9nLmg+CisjaW5jbHVkZSA8bmF0aXZlaGVscGVyL2puaS5oPgorI2luY2x1ZGUgPG5hdGl2ZWhlbHBlci9KTklIZWxwLmg+CisjaW5jbHVkZSA8YW5kcm9pZF9ydW50aW1lL0FuZHJvaWRSdW50aW1lLmg+CisjaW5jbHVkZSAibWVkaWEvVmlzdWFsaXplci5oIgorCit1c2luZyBuYW1lc3BhY2UgYW5kcm9pZDsKKworI2RlZmluZSBWSVNVQUxJWkVSX1NVQ0NFU1MgICAgICAgICAgICAgICAgICAgICAgMAorI2RlZmluZSBWSVNVQUxJWkVSX0VSUk9SICAgICAgICAgICAgICAgICAgICAgICAtMQorI2RlZmluZSBWSVNVQUxJWkVSX0VSUk9SX0FMUkVBRFlfRVhJU1RTICAgICAgICAtMgorI2RlZmluZSBWSVNVQUxJWkVSX0VSUk9SX05PX0lOSVQgICAgICAgICAgICAgICAtMworI2RlZmluZSBWSVNVQUxJWkVSX0VSUk9SX0JBRF9WQUxVRSAgICAgICAgICAgICAtNAorI2RlZmluZSBWSVNVQUxJWkVSX0VSUk9SX0lOVkFMSURfT1BFUkFUSU9OICAgICAtNQorI2RlZmluZSBWSVNVQUxJWkVSX0VSUk9SX05PX01FTU9SWSAgICAgICAgICAgICAtNgorI2RlZmluZSBWSVNVQUxJWkVSX0VSUk9SX0RFQURfT0JKRUNUICAgICAgICAgICAtNworCisjZGVmaW5lIE5BVElWRV9FVkVOVF9QQ01fQ0FQVFVSRSAgICAgICAgICAgICAgICAwCisjZGVmaW5lIE5BVElWRV9FVkVOVF9GRlRfQ0FQVFVSRSAgICAgICAgICAgICAgICAxCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3N0YXRpYyBjb25zdCBjaGFyKiBjb25zdCBrQ2xhc3NQYXRoTmFtZSA9ICJhbmRyb2lkL21lZGlhL1Zpc3VhbGl6ZXIiOworCitzdHJ1Y3QgZmllbGRzX3QgeworICAgIC8vIHRoZXNlIGZpZWxkcyBwcm92aWRlIGFjY2VzcyBmcm9tIEMrKyB0byB0aGUuLi4KKyAgICBqY2xhc3MgICAgY2xhenpFZmZlY3Q7ICAgICAgICAgIC8vIFZpc3VhbGl6ZXIgY2xhc3MKKyAgICBqbWV0aG9kSUQgbWlkUG9zdE5hdGl2ZUV2ZW50OyAgIC8vIGV2ZW50IHBvc3QgY2FsbGJhY2sgbWV0aG9kCisgICAgamZpZWxkSUQgIGZpZE5hdGl2ZVZpc3VhbGl6ZXI7IC8vIHN0b3JlcyBpbiBKYXZhIHRoZSBuYXRpdmUgVmlzdWFsaXplciBvYmplY3QKKyAgICBqZmllbGRJRCAgZmlkSm5pRGF0YTsgICAgICAgICAgIC8vIHN0b3JlcyBpbiBKYXZhIGFkZGl0aW9uYWwgcmVzb3VyY2VzIHVzZWQgYnkgdGhlIG5hdGl2ZSBWaXN1YWxpemVyCit9Oworc3RhdGljIGZpZWxkc190IGZpZWxkczsKKworc3RydWN0IHZpc3VhbGl6ZXJfY2FsbGJhY2tfY29va2llIHsKKyAgICBqY2xhc3MgICAgICB2aXN1YWxpemVyX2NsYXNzOyAgLy8gVmlzdWFsaXplciBjbGFzcworICAgIGpvYmplY3QgICAgIHZpc3VhbGl6ZXJfcmVmOyAgICAvLyBWaXN1YWxpemVyIG9iamVjdCBpbnN0YW5jZQorIH07CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2NsYXNzIHZpc3VhbGl6ZXJKbmlTdG9yYWdlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIHZpc3VhbGl6ZXJfY2FsbGJhY2tfY29va2llIG1DYWxsYmFja0RhdGE7CisKKyAgICB2aXN1YWxpemVySm5pU3RvcmFnZSgpIHsKKyAgICB9CisKKyAgICB+dmlzdWFsaXplckpuaVN0b3JhZ2UoKSB7CisgICAgfQorCit9OworCisKK3N0YXRpYyBqaW50IHRyYW5zbGF0ZUVycm9yKGludCBjb2RlKSB7CisgICAgc3dpdGNoKGNvZGUpIHsKKyAgICBjYXNlIE5PX0VSUk9SOgorICAgICAgICByZXR1cm4gVklTVUFMSVpFUl9TVUNDRVNTOworICAgIGNhc2UgQUxSRUFEWV9FWElTVFM6CisgICAgICAgIHJldHVybiBWSVNVQUxJWkVSX0VSUk9SX0FMUkVBRFlfRVhJU1RTOworICAgIGNhc2UgTk9fSU5JVDoKKyAgICAgICAgcmV0dXJuIFZJU1VBTElaRVJfRVJST1JfTk9fSU5JVDsKKyAgICBjYXNlIEJBRF9WQUxVRToKKyAgICAgICAgcmV0dXJuIFZJU1VBTElaRVJfRVJST1JfQkFEX1ZBTFVFOworICAgIGNhc2UgSU5WQUxJRF9PUEVSQVRJT046CisgICAgICAgIHJldHVybiBWSVNVQUxJWkVSX0VSUk9SX0lOVkFMSURfT1BFUkFUSU9OOworICAgIGNhc2UgTk9fTUVNT1JZOgorICAgICAgICByZXR1cm4gVklTVUFMSVpFUl9FUlJPUl9OT19NRU1PUlk7CisgICAgY2FzZSBERUFEX09CSkVDVDoKKyAgICAgICAgcmV0dXJuIFZJU1VBTElaRVJfRVJST1JfREVBRF9PQkpFQ1Q7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIFZJU1VBTElaRVJfRVJST1I7CisgICAgfQorfQorCisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3N0YXRpYyB2b2lkIGNhcHR1cmVDYWxsYmFjayh2b2lkKiB1c2VyLAorICAgICAgICB1aW50MzJfdCB3YXZlZm9ybVNpemUsCisgICAgICAgIHVpbnQ4X3QgKndhdmVmb3JtLAorICAgICAgICB1aW50MzJfdCBmZnRTaXplLAorICAgICAgICB1aW50OF90ICpmZnQsCisgICAgICAgIHVpbnQzMl90IHNhbXBsaW5ncmF0ZSkgeworCisgICAgaW50IGFyZzEgPSAwOworICAgIGludCBhcmcyID0gMDsKKyAgICBzaXplX3Qgc2l6ZTsKKworICAgIHZpc3VhbGl6ZXJfY2FsbGJhY2tfY29va2llICpjYWxsYmFja0luZm8gPSAodmlzdWFsaXplcl9jYWxsYmFja19jb29raWUgKil1c2VyOworICAgIEpOSUVudiAqZW52ID0gQW5kcm9pZFJ1bnRpbWU6OmdldEpOSUVudigpOworCisgICAgTE9HVigiY2FwdHVyZUNhbGxiYWNrOiBjYWxsYmFja0luZm8gJXAsIHZpc3VhbGl6ZXJfcmVmICVwIHZpc3VhbGl6ZXJfY2xhc3MgJXAiLAorICAgICAgICAgICAgY2FsbGJhY2tJbmZvLAorICAgICAgICAgICAgY2FsbGJhY2tJbmZvLT52aXN1YWxpemVyX3JlZiwKKyAgICAgICAgICAgIGNhbGxiYWNrSW5mby0+dmlzdWFsaXplcl9jbGFzcyk7CisKKyAgICBpZiAoIXVzZXIgfHwgIWVudikgeworICAgICAgICBMT0dXKCJjYXB0dXJlQ2FsbGJhY2sgZXJyb3IgdXNlciAlcCwgZW52ICVwIiwgdXNlciwgZW52KTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICh3YXZlZm9ybVNpemUgIT0gMCAmJiB3YXZlZm9ybSAhPSBOVUxMKSB7CisgICAgICAgIGpieXRlQXJyYXkgakFycmF5ID0gZW52LT5OZXdCeXRlQXJyYXkod2F2ZWZvcm1TaXplKTsKKyAgICAgICAgaWYgKGpBcnJheSAhPSBOVUxMKSB7CisgICAgICAgICAgICBqYnl0ZSAqbkFycmF5ID0gZW52LT5HZXRCeXRlQXJyYXlFbGVtZW50cyhqQXJyYXksIE5VTEwpOworICAgICAgICAgICAgbWVtY3B5KG5BcnJheSwgd2F2ZWZvcm0sIHdhdmVmb3JtU2l6ZSk7CisgICAgICAgICAgICBlbnYtPlJlbGVhc2VCeXRlQXJyYXlFbGVtZW50cyhqQXJyYXksIG5BcnJheSwgMCk7CisgICAgICAgICAgICBlbnYtPkNhbGxTdGF0aWNWb2lkTWV0aG9kKAorICAgICAgICAgICAgICAgIGNhbGxiYWNrSW5mby0+dmlzdWFsaXplcl9jbGFzcywKKyAgICAgICAgICAgICAgICBmaWVsZHMubWlkUG9zdE5hdGl2ZUV2ZW50LAorICAgICAgICAgICAgICAgIGNhbGxiYWNrSW5mby0+dmlzdWFsaXplcl9yZWYsCisgICAgICAgICAgICAgICAgTkFUSVZFX0VWRU5UX1BDTV9DQVBUVVJFLAorICAgICAgICAgICAgICAgIHNhbXBsaW5ncmF0ZSwKKyAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgIGpBcnJheSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoZmZ0U2l6ZSAhPSAwICYmIGZmdCAhPSBOVUxMKSB7CisgICAgICAgIGpieXRlQXJyYXkgakFycmF5ID0gZW52LT5OZXdCeXRlQXJyYXkoZmZ0U2l6ZSk7CisgICAgICAgIGlmIChqQXJyYXkgIT0gTlVMTCkgeworICAgICAgICAgICAgamJ5dGUgKm5BcnJheSA9IGVudi0+R2V0Qnl0ZUFycmF5RWxlbWVudHMoakFycmF5LCBOVUxMKTsKKyAgICAgICAgICAgIG1lbWNweShuQXJyYXksIGZmdCwgZmZ0U2l6ZSk7CisgICAgICAgICAgICBlbnYtPlJlbGVhc2VCeXRlQXJyYXlFbGVtZW50cyhqQXJyYXksIG5BcnJheSwgMCk7CisgICAgICAgICAgICBlbnYtPkNhbGxTdGF0aWNWb2lkTWV0aG9kKAorICAgICAgICAgICAgICAgIGNhbGxiYWNrSW5mby0+dmlzdWFsaXplcl9jbGFzcywKKyAgICAgICAgICAgICAgICBmaWVsZHMubWlkUG9zdE5hdGl2ZUV2ZW50LAorICAgICAgICAgICAgICAgIGNhbGxiYWNrSW5mby0+dmlzdWFsaXplcl9yZWYsCisgICAgICAgICAgICAgICAgTkFUSVZFX0VWRU5UX0ZGVF9DQVBUVVJFLAorICAgICAgICAgICAgICAgIHNhbXBsaW5ncmF0ZSwKKyAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgIGpBcnJheSk7CisgICAgICAgICAgICBlbnYtPkRlbGV0ZUxvY2FsUmVmKGpBcnJheSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoZW52LT5FeGNlcHRpb25DaGVjaygpKSB7CisgICAgICAgIGVudi0+RXhjZXB0aW9uRGVzY3JpYmUoKTsKKyAgICAgICAgZW52LT5FeGNlcHRpb25DbGVhcigpOworICAgIH0KK30KKworc3RhdGljIFZpc3VhbGl6ZXIgKmdldFZpc3VhbGl6ZXIoSk5JRW52KiBlbnYsIGpvYmplY3QgdGhpeikKK3sKKyAgICBWaXN1YWxpemVyICp2ID0gKFZpc3VhbGl6ZXIgKillbnYtPkdldEludEZpZWxkKAorICAgICAgICB0aGl6LCBmaWVsZHMuZmlkTmF0aXZlVmlzdWFsaXplcik7CisgICAgaWYgKHYgPT0gTlVMTCkgeworICAgICAgICBqbmlUaHJvd0V4Y2VwdGlvbihlbnYsICJqYXZhL2xhbmcvSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiwKKyAgICAgICAgICAgICJVbmFibGUgdG8gcmV0cmlldmUgVmlzdWFsaXplciBwb2ludGVyIik7CisgICAgfQorICAgIHJldHVybiB2OworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBUaGlzIGZ1bmN0aW9uIGdldHMgc29tZSBmaWVsZCBJRHMsIHdoaWNoIGluIHR1cm4gY2F1c2VzIGNsYXNzIGluaXRpYWxpemF0aW9uLgorLy8gSXQgaXMgY2FsbGVkIGZyb20gYSBzdGF0aWMgYmxvY2sgaW4gVmlzdWFsaXplciwgd2hpY2ggd29uJ3QgcnVuIHVudGlsIHRoZQorLy8gZmlyc3QgdGltZSBhbiBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzIGlzIHVzZWQuCitzdGF0aWMgdm9pZAorYW5kcm9pZF9tZWRpYV92aXN1YWxpemVyX25hdGl2ZV9pbml0KEpOSUVudiAqZW52KQoreworCisgICAgTE9HVigiYW5kcm9pZF9tZWRpYV92aXN1YWxpemVyX25hdGl2ZV9pbml0Iik7CisKKyAgICBmaWVsZHMuY2xhenpFZmZlY3QgPSBOVUxMOworCisgICAgLy8gR2V0IHRoZSBWaXN1YWxpemVyIGNsYXNzCisgICAgamNsYXNzIGNsYXp6ID0gZW52LT5GaW5kQ2xhc3Moa0NsYXNzUGF0aE5hbWUpOworICAgIGlmIChjbGF6eiA9PSBOVUxMKSB7CisgICAgICAgIExPR0UoIkNhbid0IGZpbmQgJXMiLCBrQ2xhc3NQYXRoTmFtZSk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmaWVsZHMuY2xhenpFZmZlY3QgPSAoamNsYXNzKWVudi0+TmV3R2xvYmFsUmVmKGNsYXp6KTsKKworICAgIC8vIEdldCB0aGUgcG9zdEV2ZW50IG1ldGhvZAorICAgIGZpZWxkcy5taWRQb3N0TmF0aXZlRXZlbnQgPSBlbnYtPkdldFN0YXRpY01ldGhvZElEKAorICAgICAgICAgICAgZmllbGRzLmNsYXp6RWZmZWN0LAorICAgICAgICAgICAgInBvc3RFdmVudEZyb21OYXRpdmUiLCAiKExqYXZhL2xhbmcvT2JqZWN0O0lJSUxqYXZhL2xhbmcvT2JqZWN0OylWIik7CisgICAgaWYgKGZpZWxkcy5taWRQb3N0TmF0aXZlRXZlbnQgPT0gTlVMTCkgeworICAgICAgICBMT0dFKCJDYW4ndCBmaW5kIFZpc3VhbGl6ZXIuJXMiLCAicG9zdEV2ZW50RnJvbU5hdGl2ZSIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gR2V0IHRoZSB2YXJpYWJsZXMgZmllbGRzCisgICAgLy8gICAgICBuYXRpdmVUcmFja0luSmF2YU9iagorICAgIGZpZWxkcy5maWROYXRpdmVWaXN1YWxpemVyID0gZW52LT5HZXRGaWVsZElEKAorICAgICAgICAgICAgZmllbGRzLmNsYXp6RWZmZWN0LAorICAgICAgICAgICAgIm1OYXRpdmVWaXN1YWxpemVyIiwgIkkiKTsKKyAgICBpZiAoZmllbGRzLmZpZE5hdGl2ZVZpc3VhbGl6ZXIgPT0gTlVMTCkgeworICAgICAgICBMT0dFKCJDYW4ndCBmaW5kIFZpc3VhbGl6ZXIuJXMiLCAibU5hdGl2ZVZpc3VhbGl6ZXIiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyAgICAvLyAgICAgIGZpZEpuaURhdGE7CisgICAgZmllbGRzLmZpZEpuaURhdGEgPSBlbnYtPkdldEZpZWxkSUQoCisgICAgICAgICAgICBmaWVsZHMuY2xhenpFZmZlY3QsCisgICAgICAgICAgICAibUpuaURhdGEiLCAiSSIpOworICAgIGlmIChmaWVsZHMuZmlkSm5pRGF0YSA9PSBOVUxMKSB7CisgICAgICAgIExPR0UoIkNhbid0IGZpbmQgVmlzdWFsaXplci4lcyIsICJtSm5pRGF0YSIpOworICAgICAgICByZXR1cm47CisgICAgfQorCit9CisKKworc3RhdGljIGppbnQKK2FuZHJvaWRfbWVkaWFfdmlzdWFsaXplcl9uYXRpdmVfc2V0dXAoSk5JRW52ICplbnYsIGpvYmplY3QgdGhpeiwgam9iamVjdCB3ZWFrX3RoaXMsCisgICAgICAgIGppbnQgc2Vzc2lvbklkLCBqaW50QXJyYXkgaklkKQoreworICAgIExPR1YoImFuZHJvaWRfbWVkaWFfdmlzdWFsaXplcl9uYXRpdmVfc2V0dXAiKTsKKyAgICB2aXN1YWxpemVySm5pU3RvcmFnZSogbHBKbmlTdG9yYWdlID0gTlVMTDsKKyAgICBpbnQgbFN0YXR1cyA9IFZJU1VBTElaRVJfRVJST1JfTk9fTUVNT1JZOworICAgIFZpc3VhbGl6ZXIqIGxwVmlzdWFsaXplciA9IE5VTEw7CisgICAgamludCogbklkID0gTlVMTDsKKworICAgIGxwSm5pU3RvcmFnZSA9IG5ldyB2aXN1YWxpemVySm5pU3RvcmFnZSgpOworICAgIGlmIChscEpuaVN0b3JhZ2UgPT0gTlVMTCkgeworICAgICAgICBMT0dFKCJzZXR1cDogRXJyb3IgY3JlYXRpbmcgSk5JIFN0b3JhZ2UiKTsKKyAgICAgICAgZ290byBzZXR1cF9mYWlsdXJlOworICAgIH0KKworICAgIGxwSm5pU3RvcmFnZS0+bUNhbGxiYWNrRGF0YS52aXN1YWxpemVyX2NsYXNzID0gKGpjbGFzcyllbnYtPk5ld0dsb2JhbFJlZihmaWVsZHMuY2xhenpFZmZlY3QpOworICAgIC8vIHdlIHVzZSBhIHdlYWsgcmVmZXJlbmNlIHNvIHRoZSBWaXN1YWxpemVyIG9iamVjdCBjYW4gYmUgZ2FyYmFnZSBjb2xsZWN0ZWQuCisgICAgbHBKbmlTdG9yYWdlLT5tQ2FsbGJhY2tEYXRhLnZpc3VhbGl6ZXJfcmVmID0gZW52LT5OZXdHbG9iYWxSZWYod2Vha190aGlzKTsKKworICAgIExPR1YoInNldHVwOiBscEpuaVN0b3JhZ2U6ICVwIHZpc3VhbGl6ZXJfcmVmICVwIHZpc3VhbGl6ZXJfY2xhc3MgJXAsICZtQ2FsbGJhY2tEYXRhICVwIiwKKyAgICAgICAgICAgIGxwSm5pU3RvcmFnZSwKKyAgICAgICAgICAgIGxwSm5pU3RvcmFnZS0+bUNhbGxiYWNrRGF0YS52aXN1YWxpemVyX3JlZiwKKyAgICAgICAgICAgIGxwSm5pU3RvcmFnZS0+bUNhbGxiYWNrRGF0YS52aXN1YWxpemVyX2NsYXNzLAorICAgICAgICAgICAgJmxwSm5pU3RvcmFnZS0+bUNhbGxiYWNrRGF0YSk7CisKKyAgICBpZiAoaklkKSB7CisgICAgICAgIG5JZCA9IChqaW50ICopIGVudi0+R2V0UHJpbWl0aXZlQXJyYXlDcml0aWNhbChqSWQsIE5VTEwpOworICAgICAgICBpZiAobklkID09IE5VTEwpIHsKKyAgICAgICAgICAgIExPR0UoInNldHVwOiBFcnJvciByZXRyaWV2aW5nIGlkIHBvaW50ZXIiKTsKKyAgICAgICAgICAgIGxTdGF0dXMgPSBWSVNVQUxJWkVSX0VSUk9SX0JBRF9WQUxVRTsKKyAgICAgICAgICAgIGdvdG8gc2V0dXBfZmFpbHVyZTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIExPR0UoInNldHVwOiBOVUxMIGphdmEgYXJyYXkgZm9yIGlkIHBvaW50ZXIiKTsKKyAgICAgICAgbFN0YXR1cyA9IFZJU1VBTElaRVJfRVJST1JfQkFEX1ZBTFVFOworICAgICAgICBnb3RvIHNldHVwX2ZhaWx1cmU7CisgICAgfQorCisgICAgLy8gY3JlYXRlIHRoZSBuYXRpdmUgVmlzdWFsaXplciBvYmplY3QKKyAgICBscFZpc3VhbGl6ZXIgPSBuZXcgVmlzdWFsaXplcigwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uSWQpOworICAgIGlmIChscFZpc3VhbGl6ZXIgPT0gTlVMTCkgeworICAgICAgICBMT0dFKCJFcnJvciBjcmVhdGluZyBWaXN1YWxpemVyIik7CisgICAgICAgIGdvdG8gc2V0dXBfZmFpbHVyZTsKKyAgICB9CisKKyAgICBsU3RhdHVzID0gdHJhbnNsYXRlRXJyb3IobHBWaXN1YWxpemVyLT5pbml0Q2hlY2soKSk7CisgICAgaWYgKGxTdGF0dXMgIT0gVklTVUFMSVpFUl9TVUNDRVNTICYmIGxTdGF0dXMgIT0gVklTVUFMSVpFUl9FUlJPUl9BTFJFQURZX0VYSVNUUykgeworICAgICAgICBMT0dFKCJWaXN1YWxpemVyIGluaXRDaGVjayBmYWlsZWQgJWQiLCBsU3RhdHVzKTsKKyAgICAgICAgZ290byBzZXR1cF9mYWlsdXJlOworICAgIH0KKworICAgIG5JZFswXSA9IGxwVmlzdWFsaXplci0+aWQoKTsKKworICAgIGVudi0+UmVsZWFzZVByaW1pdGl2ZUFycmF5Q3JpdGljYWwoaklkLCBuSWQsIDApOworICAgIG5JZCA9IE5VTEw7CisKKyAgICBlbnYtPlNldEludEZpZWxkKHRoaXosIGZpZWxkcy5maWROYXRpdmVWaXN1YWxpemVyLCAoaW50KWxwVmlzdWFsaXplcik7CisKKyAgICBlbnYtPlNldEludEZpZWxkKHRoaXosIGZpZWxkcy5maWRKbmlEYXRhLCAoaW50KWxwSm5pU3RvcmFnZSk7CisKKyAgICByZXR1cm4gVklTVUFMSVpFUl9TVUNDRVNTOworCisgICAgLy8gZmFpbHVyZXM6CitzZXR1cF9mYWlsdXJlOgorCisgICAgaWYgKG5JZCAhPSBOVUxMKSB7CisgICAgICAgIGVudi0+UmVsZWFzZVByaW1pdGl2ZUFycmF5Q3JpdGljYWwoaklkLCBuSWQsIDApOworICAgIH0KKworICAgIGlmIChscFZpc3VhbGl6ZXIpIHsKKyAgICAgICAgZGVsZXRlIGxwVmlzdWFsaXplcjsKKyAgICB9CisgICAgZW52LT5TZXRJbnRGaWVsZCh0aGl6LCBmaWVsZHMuZmlkTmF0aXZlVmlzdWFsaXplciwgMCk7CisKKyAgICBpZiAobHBKbmlTdG9yYWdlKSB7CisgICAgICAgIGRlbGV0ZSBscEpuaVN0b3JhZ2U7CisgICAgfQorICAgIGVudi0+U2V0SW50RmllbGQodGhpeiwgZmllbGRzLmZpZEpuaURhdGEsIDApOworCisgICAgcmV0dXJuIGxTdGF0dXM7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3N0YXRpYyB2b2lkIGFuZHJvaWRfbWVkaWFfdmlzdWFsaXplcl9uYXRpdmVfZmluYWxpemUoSk5JRW52ICplbnYsICBqb2JqZWN0IHRoaXopIHsKKyAgICBMT0dWKCJhbmRyb2lkX21lZGlhX3Zpc3VhbGl6ZXJfbmF0aXZlX2ZpbmFsaXplIGpvYmplY3Q6ICV4XG4iLCAoaW50KXRoaXopOworCisgICAgLy8gZGVsZXRlIHRoZSBWaXN1YWxpemVyIG9iamVjdAorICAgIFZpc3VhbGl6ZXIqIGxwVmlzdWFsaXplciA9IChWaXN1YWxpemVyICopZW52LT5HZXRJbnRGaWVsZCgKKyAgICAgICAgdGhpeiwgZmllbGRzLmZpZE5hdGl2ZVZpc3VhbGl6ZXIpOworICAgIGlmIChscFZpc3VhbGl6ZXIpIHsKKyAgICAgICAgTE9HVigiZGVsZXRpbmcgVmlzdWFsaXplcjogJXhcbiIsIChpbnQpbHBWaXN1YWxpemVyKTsKKyAgICAgICAgZGVsZXRlIGxwVmlzdWFsaXplcjsKKyAgICB9CisKKyAgICAvLyBkZWxldGUgdGhlIEpOSSBkYXRhCisgICAgdmlzdWFsaXplckpuaVN0b3JhZ2UqIGxwSm5pU3RvcmFnZSA9ICh2aXN1YWxpemVySm5pU3RvcmFnZSAqKWVudi0+R2V0SW50RmllbGQoCisgICAgICAgIHRoaXosIGZpZWxkcy5maWRKbmlEYXRhKTsKKyAgICBpZiAobHBKbmlTdG9yYWdlKSB7CisgICAgICAgIExPR1YoImRlbGV0aW5nIHBKbmlTdG9yYWdlOiAleFxuIiwgKGludClscEpuaVN0b3JhZ2UpOworICAgICAgICBkZWxldGUgbHBKbmlTdG9yYWdlOworICAgIH0KK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorc3RhdGljIHZvaWQgYW5kcm9pZF9tZWRpYV92aXN1YWxpemVyX25hdGl2ZV9yZWxlYXNlKEpOSUVudiAqZW52LCAgam9iamVjdCB0aGl6KSB7CisKKyAgICAvLyBkbyBldmVyeXRoaW5nIGEgY2FsbCB0byBmaW5hbGl6ZSB3b3VsZAorICAgIGFuZHJvaWRfbWVkaWFfdmlzdWFsaXplcl9uYXRpdmVfZmluYWxpemUoZW52LCB0aGl6KTsKKyAgICAvLyArIHJlc2V0IHRoZSBuYXRpdmUgcmVzb3VyY2VzIGluIHRoZSBKYXZhIG9iamVjdCBzbyBhbnkgYXR0ZW1wdCB0byBhY2Nlc3MKKyAgICAvLyB0aGVtIGFmdGVyIGEgY2FsbCB0byByZWxlYXNlIGZhaWxzLgorICAgIGVudi0+U2V0SW50RmllbGQodGhpeiwgZmllbGRzLmZpZE5hdGl2ZVZpc3VhbGl6ZXIsIDApOworICAgIGVudi0+U2V0SW50RmllbGQodGhpeiwgZmllbGRzLmZpZEpuaURhdGEsIDApOworfQorCitzdGF0aWMgamludAorYW5kcm9pZF9tZWRpYV92aXN1YWxpemVyX25hdGl2ZV9zZXRFbmFibGVkKEpOSUVudiAqZW52LCBqb2JqZWN0IHRoaXosIGpib29sZWFuIGVuYWJsZWQpCit7CisgICAgVmlzdWFsaXplciogbHBWaXN1YWxpemVyID0gZ2V0VmlzdWFsaXplcihlbnYsIHRoaXopOworICAgIGlmIChscFZpc3VhbGl6ZXIgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gVklTVUFMSVpFUl9FUlJPUl9OT19JTklUOworICAgIH0KKworICAgIHJldHVybiB0cmFuc2xhdGVFcnJvcihscFZpc3VhbGl6ZXItPnNldEVuYWJsZWQoZW5hYmxlZCkpOworfQorCitzdGF0aWMgamJvb2xlYW4KK2FuZHJvaWRfbWVkaWFfdmlzdWFsaXplcl9uYXRpdmVfZ2V0RW5hYmxlZChKTklFbnYgKmVudiwgam9iamVjdCB0aGl6KQoreworICAgIFZpc3VhbGl6ZXIqIGxwVmlzdWFsaXplciA9IGdldFZpc3VhbGl6ZXIoZW52LCB0aGl6KTsKKyAgICBpZiAobHBWaXN1YWxpemVyID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiAoamJvb2xlYW4pbHBWaXN1YWxpemVyLT5nZXRFbmFibGVkKCk7Cit9CisKK3N0YXRpYyBqaW50QXJyYXkKK2FuZHJvaWRfbWVkaWFfdmlzdWFsaXplcl9uYXRpdmVfZ2V0Q2FwdHVyZVNpemVSYW5nZShKTklFbnYgKmVudiwgam9iamVjdCB0aGl6KQoreworICAgIGppbnRBcnJheSBqUmFuZ2UgPSBlbnYtPk5ld0ludEFycmF5KDIpOworICAgIGppbnQgKm5SYW5nZSA9IGVudi0+R2V0SW50QXJyYXlFbGVtZW50cyhqUmFuZ2UsIE5VTEwpOworICAgIG5SYW5nZVswXSA9IFZpc3VhbGl6ZXI6OmdldE1pbkNhcHR1cmVTaXplKCk7CisgICAgblJhbmdlWzFdID0gVmlzdWFsaXplcjo6Z2V0TWF4Q2FwdHVyZVNpemUoKTsKKyAgICBMT0dWKCJnZXRDYXB0dXJlU2l6ZVJhbmdlKCkgbWluICVkIG1heCAlZCIsIG5SYW5nZVswXSwgblJhbmdlWzFdKTsKKyAgICBlbnYtPlJlbGVhc2VJbnRBcnJheUVsZW1lbnRzKGpSYW5nZSwgblJhbmdlLCAwKTsKKyAgICByZXR1cm4galJhbmdlOworfQorCitzdGF0aWMgamludAorYW5kcm9pZF9tZWRpYV92aXN1YWxpemVyX25hdGl2ZV9nZXRNYXhDYXB0dXJlUmF0ZShKTklFbnYgKmVudiwgam9iamVjdCB0aGl6KQoreworICAgIHJldHVybiBWaXN1YWxpemVyOjpnZXRNYXhDYXB0dXJlUmF0ZSgpOworfQorCitzdGF0aWMgamludAorYW5kcm9pZF9tZWRpYV92aXN1YWxpemVyX25hdGl2ZV9zZXRDYXB0dXJlU2l6ZShKTklFbnYgKmVudiwgam9iamVjdCB0aGl6LCBqaW50IHNpemUpCit7CisgICAgVmlzdWFsaXplciogbHBWaXN1YWxpemVyID0gZ2V0VmlzdWFsaXplcihlbnYsIHRoaXopOworICAgIGlmIChscFZpc3VhbGl6ZXIgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gVklTVUFMSVpFUl9FUlJPUl9OT19JTklUOworICAgIH0KKworICAgIHJldHVybiB0cmFuc2xhdGVFcnJvcihscFZpc3VhbGl6ZXItPnNldENhcHR1cmVTaXplKHNpemUpKTsKK30KKworc3RhdGljIGppbnQKK2FuZHJvaWRfbWVkaWFfdmlzdWFsaXplcl9uYXRpdmVfZ2V0Q2FwdHVyZVNpemUoSk5JRW52ICplbnYsIGpvYmplY3QgdGhpeikKK3sKKyAgICBWaXN1YWxpemVyKiBscFZpc3VhbGl6ZXIgPSBnZXRWaXN1YWxpemVyKGVudiwgdGhpeik7CisgICAgaWYgKGxwVmlzdWFsaXplciA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIGxwVmlzdWFsaXplci0+Z2V0Q2FwdHVyZVNpemUoKTsKK30KKworc3RhdGljIGppbnQKK2FuZHJvaWRfbWVkaWFfdmlzdWFsaXplcl9uYXRpdmVfZ2V0U2FtcGxpbmdSYXRlKEpOSUVudiAqZW52LCBqb2JqZWN0IHRoaXopCit7CisgICAgVmlzdWFsaXplciogbHBWaXN1YWxpemVyID0gZ2V0VmlzdWFsaXplcihlbnYsIHRoaXopOworICAgIGlmIChscFZpc3VhbGl6ZXIgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiBscFZpc3VhbGl6ZXItPmdldFNhbXBsaW5nUmF0ZSgpOworfQorCitzdGF0aWMgamludAorYW5kcm9pZF9tZWRpYV92aXN1YWxpemVyX25hdGl2ZV9nZXRXYXZlRm9ybShKTklFbnYgKmVudiwgam9iamVjdCB0aGl6LCBqYnl0ZUFycmF5IGpXYXZlZm9ybSkKK3sKKyAgICBWaXN1YWxpemVyKiBscFZpc3VhbGl6ZXIgPSBnZXRWaXN1YWxpemVyKGVudiwgdGhpeik7CisgICAgaWYgKGxwVmlzdWFsaXplciA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBWSVNVQUxJWkVSX0VSUk9SX05PX0lOSVQ7CisgICAgfQorCisgICAgamJ5dGUqIG5XYXZlZm9ybSA9IChqYnl0ZSAqKSBlbnYtPkdldFByaW1pdGl2ZUFycmF5Q3JpdGljYWwoaldhdmVmb3JtLCBOVUxMKTsKKyAgICBpZiAobldhdmVmb3JtID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIFZJU1VBTElaRVJfRVJST1JfTk9fTUVNT1JZOworICAgIH0KKyAgICBqaW50IHN0YXR1cyA9IHRyYW5zbGF0ZUVycm9yKGxwVmlzdWFsaXplci0+Z2V0V2F2ZUZvcm0oKHVpbnQ4X3QgKiluV2F2ZWZvcm0pKTsKKworICAgIGVudi0+UmVsZWFzZVByaW1pdGl2ZUFycmF5Q3JpdGljYWwoaldhdmVmb3JtLCBuV2F2ZWZvcm0sIDApOworCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworc3RhdGljIGppbnQKK2FuZHJvaWRfbWVkaWFfdmlzdWFsaXplcl9uYXRpdmVfZ2V0RmZ0KEpOSUVudiAqZW52LCBqb2JqZWN0IHRoaXosIGpieXRlQXJyYXkgakZmdCkKK3sKKyAgICBWaXN1YWxpemVyKiBscFZpc3VhbGl6ZXIgPSBnZXRWaXN1YWxpemVyKGVudiwgdGhpeik7CisgICAgaWYgKGxwVmlzdWFsaXplciA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBWSVNVQUxJWkVSX0VSUk9SX05PX0lOSVQ7CisgICAgfQorCisgICAgamJ5dGUqIG5GZnQgPSAoamJ5dGUgKikgZW52LT5HZXRQcmltaXRpdmVBcnJheUNyaXRpY2FsKGpGZnQsIE5VTEwpOworICAgIGlmIChuRmZ0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIFZJU1VBTElaRVJfRVJST1JfTk9fTUVNT1JZOworICAgIH0KKyAgICBqaW50IHN0YXR1cyA9IHRyYW5zbGF0ZUVycm9yKGxwVmlzdWFsaXplci0+Z2V0RmZ0KCh1aW50OF90ICopbkZmdCkpOworCisgICAgZW52LT5SZWxlYXNlUHJpbWl0aXZlQXJyYXlDcml0aWNhbChqRmZ0LCBuRmZ0LCAwKTsKKworICAgIHJldHVybiBzdGF0dXM7Cit9CisKK3N0YXRpYyBqaW50CithbmRyb2lkX21lZGlhX3NldFBlcmlvZGljQ2FwdHVyZShKTklFbnYgKmVudiwgam9iamVjdCB0aGl6LCBqaW50IHJhdGUsIGpib29sZWFuIGpXYXZlZm9ybSwgamJvb2xlYW4gakZmdCkKK3sKKyAgICBWaXN1YWxpemVyKiBscFZpc3VhbGl6ZXIgPSBnZXRWaXN1YWxpemVyKGVudiwgdGhpeik7CisgICAgaWYgKGxwVmlzdWFsaXplciA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBWSVNVQUxJWkVSX0VSUk9SX05PX0lOSVQ7CisgICAgfQorICAgIHZpc3VhbGl6ZXJKbmlTdG9yYWdlKiBscEpuaVN0b3JhZ2UgPSAodmlzdWFsaXplckpuaVN0b3JhZ2UgKillbnYtPkdldEludEZpZWxkKHRoaXosCisgICAgICAgICAgICBmaWVsZHMuZmlkSm5pRGF0YSk7CisgICAgaWYgKGxwSm5pU3RvcmFnZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBWSVNVQUxJWkVSX0VSUk9SX05PX0lOSVQ7CisgICAgfQorCisgICAgTE9HVigic2V0UGVyaW9kaWNDYXB0dXJlOiByYXRlICVkLCBqV2F2ZWZvcm0gJWQgakZmdCAlZCIsCisgICAgICAgICAgICByYXRlLAorICAgICAgICAgICAgaldhdmVmb3JtLAorICAgICAgICAgICAgakZmdCk7CisKKyAgICB1aW50MzJfdCBmbGFncyA9IFZpc3VhbGl6ZXI6OkNBUFRVUkVfQ0FMTF9KQVZBOworICAgIGlmIChqV2F2ZWZvcm0pIGZsYWdzIHw9IFZpc3VhbGl6ZXI6OkNBUFRVUkVfV0FWRUZPUk07CisgICAgaWYgKGpGZnQpIGZsYWdzIHw9IFZpc3VhbGl6ZXI6OkNBUFRVUkVfRkZUOworICAgIFZpc3VhbGl6ZXI6OmNhcHR1cmVfY2JrX3QgY2JrID0gY2FwdHVyZUNhbGxiYWNrOworICAgIGlmICghaldhdmVmb3JtICYmICFqRmZ0KSBjYmsgPSBOVUxMOworCisgICAgcmV0dXJuIHRyYW5zbGF0ZUVycm9yKGxwVmlzdWFsaXplci0+c2V0Q2FwdHVyZUNhbGxCYWNrKGNiaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZscEpuaVN0b3JhZ2UtPm1DYWxsYmFja0RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhdGUpKTsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisvLyBEYWx2aWsgVk0gdHlwZSBzaWduYXR1cmVzCitzdGF0aWMgSk5JTmF0aXZlTWV0aG9kIGdNZXRob2RzW10gPSB7CisgICAgeyJuYXRpdmVfaW5pdCIsICAgICAgICAgICAgIigpViIsICAgICAodm9pZCAqKWFuZHJvaWRfbWVkaWFfdmlzdWFsaXplcl9uYXRpdmVfaW5pdH0sCisgICAgeyJuYXRpdmVfc2V0dXAiLCAgICAgICAgICAgIihMamF2YS9sYW5nL09iamVjdDtJW0kpSSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodm9pZCAqKWFuZHJvaWRfbWVkaWFfdmlzdWFsaXplcl9uYXRpdmVfc2V0dXB9LAorICAgIHsibmF0aXZlX2ZpbmFsaXplIiwgICAgICAgICAgIigpViIsICAgKHZvaWQgKilhbmRyb2lkX21lZGlhX3Zpc3VhbGl6ZXJfbmF0aXZlX2ZpbmFsaXplfSwKKyAgICB7Im5hdGl2ZV9yZWxlYXNlIiwgICAgICAgICAgICIoKVYiLCAgICh2b2lkICopYW5kcm9pZF9tZWRpYV92aXN1YWxpemVyX25hdGl2ZV9yZWxlYXNlfSwKKyAgICB7Im5hdGl2ZV9zZXRFbmFibGVkIiwgICAgICAgICIoWilJIiwgICh2b2lkICopYW5kcm9pZF9tZWRpYV92aXN1YWxpemVyX25hdGl2ZV9zZXRFbmFibGVkfSwKKyAgICB7Im5hdGl2ZV9nZXRFbmFibGVkIiwgICAgICAgICIoKVoiLCAgICh2b2lkICopYW5kcm9pZF9tZWRpYV92aXN1YWxpemVyX25hdGl2ZV9nZXRFbmFibGVkfSwKKyAgICB7ImdldENhcHR1cmVTaXplUmFuZ2UiLCAgICAgICIoKVtJIiwgICh2b2lkICopYW5kcm9pZF9tZWRpYV92aXN1YWxpemVyX25hdGl2ZV9nZXRDYXB0dXJlU2l6ZVJhbmdlfSwKKyAgICB7ImdldE1heENhcHR1cmVSYXRlIiwgICAgICAgICIoKUkiLCAgICh2b2lkICopYW5kcm9pZF9tZWRpYV92aXN1YWxpemVyX25hdGl2ZV9nZXRNYXhDYXB0dXJlUmF0ZX0sCisgICAgeyJuYXRpdmVfc2V0Q2FwdHVyZVNpemUiLCAgICAiKEkpSSIsICAodm9pZCAqKWFuZHJvaWRfbWVkaWFfdmlzdWFsaXplcl9uYXRpdmVfc2V0Q2FwdHVyZVNpemV9LAorICAgIHsibmF0aXZlX2dldENhcHR1cmVTaXplIiwgICAgIigpSSIsICAgKHZvaWQgKilhbmRyb2lkX21lZGlhX3Zpc3VhbGl6ZXJfbmF0aXZlX2dldENhcHR1cmVTaXplfSwKKyAgICB7Im5hdGl2ZV9nZXRTYW1wbGluZ1JhdGUiLCAgICIoKUkiLCAgICh2b2lkICopYW5kcm9pZF9tZWRpYV92aXN1YWxpemVyX25hdGl2ZV9nZXRTYW1wbGluZ1JhdGV9LAorICAgIHsibmF0aXZlX2dldFdhdmVGb3JtIiwgICAgICAgIihbQilJIiwgKHZvaWQgKilhbmRyb2lkX21lZGlhX3Zpc3VhbGl6ZXJfbmF0aXZlX2dldFdhdmVGb3JtfSwKKyAgICB7Im5hdGl2ZV9nZXRGZnQiLCAgICAgICAgICAgICIoW0IpSSIsICh2b2lkICopYW5kcm9pZF9tZWRpYV92aXN1YWxpemVyX25hdGl2ZV9nZXRGZnR9LAorICAgIHsibmF0aXZlX3NldFBlcmlvZGljQ2FwdHVyZSIsIihJWlopSSIsKHZvaWQgKilhbmRyb2lkX21lZGlhX3NldFBlcmlvZGljQ2FwdHVyZX0sCit9OworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2ludCByZWdpc3Rlcl9hbmRyb2lkX21lZGlhX3Zpc3VhbGl6ZXIoSk5JRW52ICplbnYpCit7CisgICAgcmV0dXJuIEFuZHJvaWRSdW50aW1lOjpyZWdpc3Rlck5hdGl2ZU1ldGhvZHMoZW52LCBrQ2xhc3NQYXRoTmFtZSwgZ01ldGhvZHMsIE5FTEVNKGdNZXRob2RzKSk7Cit9CisKZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL0FuZHJvaWQubWsgYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9BbmRyb2lkLm1rCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMTg3MTM5Li4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL0FuZHJvaWQubWsKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi1MT0NBTF9QQVRIOj0gJChjYWxsIG15LWRpcikKLQotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgRmlyc3QgcHJvamVjdAotIyAKLSMgQnVpbGQgRFJNMiBjb3JlIGxpYnJhcnkKLSMKLSMgT3V0cHV0OiBsaWJkcm0yLnNvCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotaW5jbHVkZSAkKENMRUFSX1ZBUlMpCi0KLWNvbW1vbl9TUkNfRklMRVMgOj0gXAotICAgIHNyYy91dGlsL3VzdGwtMS4wL2JrdHJhY2UuY3BwIFwKLSAgICBzcmMvdXRpbC91c3RsLTEuMC9tZW1ibG9jay5jcHAgXAotICAgIHNyYy91dGlsL3VzdGwtMS4wL29mc3RyZWFtLmNwcCBcCi0gICAgc3JjL3V0aWwvdXN0bC0xLjAvdWFsZ29iYXNlLmNwcCBcCi0gICAgc3JjL3V0aWwvdXN0bC0xLjAvdW5ldy5jcHAgXAotICAgIHNyYy91dGlsL3VzdGwtMS4wL2NtZW1saW5rLmNwcCBcCi0gICAgc3JjL3V0aWwvdXN0bC0xLjAvbWVtbGluay5jcHAgXAotICAgIHNyYy91dGlsL3VzdGwtMS4wL3Npc3RyZWFtLmNwcCBcCi0gICAgc3JjL3V0aWwvdXN0bC0xLjAvdWJpdHNldC5jcHAgXAotICAgIHNyYy91dGlsL3VzdGwtMS4wL3VzdGR4ZXB0LmNwcCBcCi0gICAgc3JjL3V0aWwvdXN0bC0xLjAvZnN0cmVhbS5jcHAgXAotICAgIHNyYy91dGlsL3VzdGwtMS4wL21pc3RyZWFtLmNwcCBcCi0gICAgc3JjL3V0aWwvdXN0bC0xLjAvc29zdHJlYW0uY3BwIFwKLSAgICBzcmMvdXRpbC91c3RsLTEuMC91ZXhjZXB0aW9uLmNwcCBcCi0gICAgc3JjL3V0aWwvdXN0bC0xLjAvdXN0cmluZy5jcHAgXAotICAgIHNyYy91dGlsL3htbC9Eb21FeHBhdEFnZW50LmNwcCBcCi0gICAgc3JjL3V0aWwveG1sL0V4cGF0V3JhcHBlci5jcHAgXAotICAgIHNyYy91dGlsL3htbC9YTUxEb2N1bWVudEltcGwuY3BwIFwKLSAgICBzcmMvdXRpbC94bWwvWE1MRWxlbWVudEltcGwuY3BwIFwKLSAgICBzcmMvdXRpbC9kb21jb3JlL0NoYXJhY3RlckRhdGFJbXBsLmNwcCBcCi0gICAgc3JjL3V0aWwvZG9tY29yZS9FbGVtZW50SW1wbC5jcHAgXAotICAgIHNyYy91dGlsL2RvbWNvcmUvTm9kZUxpc3RJbXBsLmNwcCBcCi0gICAgc3JjL3V0aWwvZG9tY29yZS9Eb2N1bWVudEltcGwuY3BwIFwKLSAgICBzcmMvdXRpbC9kb21jb3JlL05vZGVJbXBsLmNwcCBcCi0gICAgc3JjL3V0aWwvZG9tY29yZS9UZXh0SW1wbC5jcHAgXAotICAgIHNyYy91dGlsL2RvbWNvcmUvRE9NRXhjZXB0aW9uLmNwcCBcCi0gICAgc3JjL3V0aWwvZG9tY29yZS9Ob2RlSXRlcmF0b3IuY3BwIFwKLSAgICBzcmMvdXRpbC9jcnlwdG8vRHJtQ3J5cHRvLmNwcCBcCi0gICAgc3JjL3JpZ2h0cy9Sb01hbmFnZXIuY3BwIFwKLSAgICBzcmMvcmlnaHRzL0Fzc2V0LmNwcCBcCi0gICAgc3JjL3JpZ2h0cy9Sby5jcHAgXAotICAgIHNyYy9yaWdodHMvT3BlcmF0aW9uUGVybWlzc2lvbi5jcHAgXAotICAgIHNyYy9yaWdodHMvUmlnaHQuY3BwIFwKLSAgICBzcmMvcmlnaHRzL0NvbnN0cmFpbnQuY3BwIFwKLSAgICBzcmMvZHJtbWFuYWdlci9Ecm1NYW5hZ2VyLmNwcCBcCi0gICAgc3JjL2RjZi9Ecm1EY2ZDb21tb24uY3BwIFwKLSAgICBzcmMvZGNmL0RybURjZkNvbnRhaW5lci5jcHAgXAotICAgIHNyYy9kY2YvRHJtSVN0cmVhbS5jcHAgXAotICAgIHNyYy9kY2YvRHJtUmF3Q29udGVudC5jcHAgXAotICAgIHNyYy9yb2FwL1JvYXBNZXNzYWdlSGFuZGxlci5jcHAgXAotICAgIHNyYy9yb2FwL1JlZ2lzdHJhdGlvbi5jcHAKLQotaWZlcSAoJChUQVJHRVRfQVJDSCksYXJtKQotCUxPQ0FMX0NGTEFHUyArPSAtZnN0cmljdC1hbGlhc2luZyAtZm9taXQtZnJhbWUtcG9pbnRlcgotZW5kaWYKLQotY29tbW9uX0NGTEFHUyA6PSAtVyAtZyAtRFBMQVRGT1JNX0FORFJPSUQKLQotY29tbW9uX0NfSU5DTFVERVMgKz1cCi0gICAgJChMT0NBTF9QQVRIKS9pbmNsdWRlIFwKLSAgICAkKExPQ0FMX1BBVEgpL3NyYy91dGlsL3VzdGwtMS4wIFwKLSAgICBleHRlcm5hbC9leHBhdC9saWIgXAotICAgIGV4dGVybmFsL29wZW5zc2wgICAgXAotICAgIGV4dGVybmFsL29wZW5zc2wvaW5jbHVkZQotCi1MT0NBTF9TUkNfRklMRVMgOj0gJChjb21tb25fU1JDX0ZJTEVTKQotTE9DQUxfQ0ZMQUdTICs9ICQoY29tbW9uX0NGTEFHUykKLUxPQ0FMX0NfSU5DTFVERVMgKz0gJChjb21tb25fQ19JTkNMVURFUykKLQotTE9DQUxfU0hBUkVEX0xJQlJBUklFUyA6PSBsaWJleHBhdCBsaWJjcnlwdG8KLUxPQ0FMX01PRFVMRSA6PSBsaWJkcm0yIAotCi1pZmVxICgkKFRBUkdFVF9PUyktJChUQVJHRVRfQVJDSCksbGludXgteDg2KQotTE9DQUxfQ0ZMQUdTICs9IC1EVVNUTF9BTkRST0lEX1g4NgotZW5kaWYKLQotaW5jbHVkZSAkKEJVSUxEX1NUQVRJQ19MSUJSQVJZKQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS9Ecm0yQ29tbW9uVHlwZXMuaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvRHJtMkNvbW1vblR5cGVzLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhZDNhNzMxLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvRHJtMkNvbW1vblR5cGVzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLSNpZm5kZWYgX0RSTTJDT01NT05UWVBFU19IXwotI2RlZmluZSBfRFJNMkNPTU1PTlRZUEVTX0hfCi0jaW5jbHVkZSA8c3RkaW50Lmg+Ci0KLSNpZmRlZiBEUk0yX1VUCi0jZGVmaW5lIFBST1RFQ1RFRCBwdWJsaWMKLSNkZWZpbmUgUFJJVkFURSBwdWJsaWMKLSNlbHNlCi0jZGVmaW5lIFBST1RFQ1RFRCBwcm90ZWN0ZWQKLSNkZWZpbmUgUFJJVkFURSBwcml2YXRlCi0jZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL2RjZi9Ecm1EY2ZDb21tb24uaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvZGNmL0RybURjZkNvbW1vbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Y2E3YjNmLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvZGNmL0RybURjZkNvbW1vbi5oCisrKyAvZGV2L251bGwKQEAgLTEsMTkyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi0jaWZuZGVmIF9fRENGX0NPTU1fSF9fCi0jZGVmaW5lIF9fRENGX0NPTU1fSF9fCi0KLSNpbmNsdWRlIDxEcm0yQ29tbW9uVHlwZXMuaD4KLSNpbmNsdWRlIDxhcnBhL2luZXQuaD4KLSNpbmNsdWRlIDxtaXN0cmVhbS5oPgotI2luY2x1ZGUgPHVzdHJpbmcuaD4KLQotdXNpbmcgbmFtZXNwYWNlIHVzdGw7Ci0KLS8vLy9EQ0YgYm94IHR5cGUgbGlzdAotY29uc3QgdWludDMyX3QgRENGX0NPTlRBSU5FUl9CT1ggPSB1aW50MzJfdCgnbScgPDwgMjQgfCAncicgPDwgMTYgfCAnZCcgPDwgOCB8ICdvJyk7Ci1jb25zdCB1aW50MzJfdCBEQ0ZfVVNFUl9UWVBFID0gdWludDMyX3QoJ2QnIDw8IDI0IHwgJ2knIDw8IDE2IHwgJ3UnIDw8IDggfCAndScpOwotY29uc3QgdWludDMyX3QgRENGX0ZJTEVfVFlQRSA9IHVpbnQzMl90KCdwJyA8PCAyNCB8ICd5JyA8PCAxNiB8ICd0JyA8PCA4IHwgJ2YnKTsKLWNvbnN0IHVpbnQzMl90IERDRl9GSUxFX0JSQU5EID0gdWludDMyX3QoJ2YnIDw8IDI0IHwgJ2MnIDw8IDE2IHwgJ2QnIDw8IDggfCAnbycpOwotCi0KLS8qKgotICogVGhlIGJhc2ljIGJveCBjbGFzcy4KLSAqLwotY2xhc3MgQm94Ci17Ci1wdWJsaWM6Ci0gICAgLyoqCi0gICAgICogY29uc3RydWN0b3IgZm9yIEJveCwgdXNlZCB0byBwYXJzZSBCb3gKLSAgICAgKiBccGFyYW0gYm94ICBCb3ggZGF0YQotICAgICAqLwotICAgIEJveChjb25zdCB1aW50OF90KiBib3gpOwotCi0gICAgLyoqCi0gICAgICogY29weSBjb25zdHJ1Y3RvciBmb3IgQm94Ci0gICAgICogXHBhcmFtIGRjZkJveCAgQm94IG9iamVjdCB1c2VkIHRvIGluaXQgYSBuZXcgQm94IG9iamVjdAotICAgICAqLwotICAgIEJveChjb25zdCBCb3gmIGRjZkJveCk7Ci0KLSAgICAvKioKLSAgICAgKiBhc3NpZ25tZW50IG9wZXJhdG9yIGZvciBCb3gKLSAgICAgKiBccGFyYW0gb3RoZXIgIEJveCBvYmplY3QgdXNlZCB0byBhc3NpZ24gdG8gYSBleGlzdCBCb3ggb2JqZWN0Ci0gICAgICovCi0gICAgQm94JiBvcGVyYXRvcj0oY29uc3QgQm94JiBvdGhlcik7Ci0KLSAgICAvKiogRGVzdHJ1Y3RvciBmb3IgQm94ICovCi0gICAgdmlydHVhbCB+Qm94KCk7Ci0KLSAgICAvKioKLSAgICAgKiBnZXQgdGhlIHNpemUgb2YgQm94Ci0gICAgICogXHBhcmFtIG5vbmUKLSAgICAgKiBccmV0dXJuCi0gICAgICogICB0aGUgc2l6ZQotICAgICAqLwotICAgIHVpbnQ2NF90IGdldFNpemUodm9pZCkgY29uc3Q7Ci0KLSAgICAvKioKLSAgICAgKiBnZXQgdGhlIHR5cGUgb2YgQm94Ci0gICAgICogXHBhcmFtIG5vbmUKLSAgICAgKiBccmV0dXJuCi0gICAgICogICB0aGUgdHlwZQotICAgICAqLwotICAgIHVpbnQzMl90IGdldFR5cGUodm9pZCkgY29uc3Q7Ci0KLSAgICAvKioKLSAgICAgKiBnZXQgdGhlIHVzZXIgdHlwZSBvZiBCb3gKLSAgICAgKiBccGFyYW0gbm9uZQotICAgICAqIFxyZXR1cm4KLSAgICAgKiAgIHRoZSB1c2VyIHR5cGUKLSAgICAgKi8KLSAgICBjb25zdCB1aW50OF90KiBnZXRVc2VydHlwZSh2b2lkKSBjb25zdDsKLQotICAgIC8qKgotICAgICAqIGdldCB0aGUgbGVuZ3RoIG9mIEJveAotICAgICAqIFxwYXJhbSBub25lCi0gICAgICogXHJldHVybgotICAgICAqICAgdGhlIGxlbmd0aAotICAgICAqLwotICAgIHZpcnR1YWwgdWludDMyX3QgZ2V0TGVuKHZvaWQpIGNvbnN0OwotUFJJVkFURToKLSAgICBzdGF0aWMgY29uc3QgdWludDMyX3QgVVNFUl9UWVBFX0xFTiA9IDE2OwotCi0gICAgdWludDMyX3QgbVNpemU7Ci0gICAgdWludDMyX3QgbVR5cGU7Ci0gICAgdWludDY0X3QgbUxhcmdlU2l6ZTsKLSAgICB1aW50OF90KiBtVXNlclR5cGU7Ci0gICAgdWludDMyX3QgbUJveExlbmd0aDsKLX07Ci0KLS8qKgotICogVGhlIGZ1bGxCb3ggY2xhc3MuCi0gKi8KLWNsYXNzIEZ1bGxCb3ggOiBwdWJsaWMgQm94Ci17Ci1wdWJsaWM6Ci0gICAgLyoqCi0gICAgICogY29uc3RydWN0b3IgZm9yIEZ1bGxCb3gsIHVzZWQgdG8gcGFyc2UgRnVsbEJveAotICAgICAqIFxwYXJhbSBmdWxsQm94ICBGdWxsQm94IGRhdGEKLSAgICAgKi8KLSAgICBGdWxsQm94KGNvbnN0IHVpbnQ4X3QqIGZ1bGxCb3gpOwotCi0gICAgLyoqIERlc3RydWN0b3IgZm9yIEZ1bGxCb3ggKi8KLSAgICB2aXJ0dWFsIH5GdWxsQm94KCl7fQotCi0gICAgLyoqCi0gICAgICogZ2V0IHRoZSB2ZXJzaW9uIG9mIEZ1bGxCb3gKLSAgICAgKiBccGFyYW0gbm9uZQotICAgICAqIFxyZXR1cm4KLSAgICAgKiAgIHRoZSB2ZXJzaW9uCi0gICAgICovCi0gICAgdWludDhfdCBnZXRWZXJzaW9uKHZvaWQpIGNvbnN0OwotCi0gICAgLyoqCi0gICAgICogZ2V0IHRoZSBmbGFnIG9mIEZ1bGxCb3gKLSAgICAgKiBccGFyYW0gbm9uZQotICAgICAqIFxyZXR1cm4KLSAgICAgKiAgIHRoZSBmbGFnCi0gICAgICovCi0gICAgY29uc3QgdWludDhfdCogZ2V0RmxhZyh2b2lkKSBjb25zdDsKLQotICAgIC8qKgotICAgICAqIGdldCB0aGUgbGVuZ3RoIG9mIEZ1bGxCb3gKLSAgICAgKiBccGFyYW0gbm9uZQotICAgICAqIFxyZXR1cm4KLSAgICAgKiAgIHRoZSBsZW5ndGgKLSAgICAgKi8KLSAgICB2aXJ0dWFsIHVpbnQzMl90IGdldExlbih2b2lkKSBjb25zdDsKLVBSSVZBVEU6Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IEZMQUdfTEVOID0gMzsKLQotICAgIHVpbnQ4X3QgbVZlcnNpb247Ci0gICAgdWludDhfdCBtRmxhZ1tGTEFHX0xFTl07Ci0gICAgdWludDMyX3QgbUZ1bGxCb3hMZW5ndGg7Ci19OwotCi0vLy8vLy8gdGV4dGFsIGhlYWRlciBjbGFzcwotY2xhc3MgVGV4dHVhbEhlYWRlcgotewotcHVibGljOgotICAgIC8qKiBkZWZhdWx0IGNvbnN0cnVjdG9yIG9mIERybUluU3RyZWFtICovCi0gICAgVGV4dHVhbEhlYWRlcigpe307Ci0KLSAgICAvKioKLSAgICAgKiBjb25zdHJ1Y3RvciBmb3IgVGV4dHVhbEhlYWRlciwgdXNlZCB0byBwYXJzZSB0ZXh0YWwgaGVhZGVyCi0gICAgICogXHBhcmFtIGluRGF0YSAgdGV4dGFsIGhlYWRlciBkYXRhCi0gICAgICovCi0gICAgVGV4dHVhbEhlYWRlcihjb25zdCBzdHJpbmcmIGluRGF0YSk7Ci0KLSAgICAvKioKLSAgICAgKiBnZXQgdGhlIG5hbWUgb2YgdGV4dGFsIGhlYWRlcgotICAgICAqIFxwYXJhbSBub25lCi0gICAgICogXHJldHVybgotICAgICAqICAgdGhlIG5hbWUKLSAgICAgKi8KLSAgICBzdHJpbmcgZ2V0TmFtZSgpIGNvbnN0OwotCi0gICAgLyoqCi0gICAgICogZ2V0IHRoZSB2YWx1ZSBvZiB0ZXh0YWwgaGVhZGVyCi0gICAgICogXHBhcmFtIG5vbmUKLSAgICAgKiBccmV0dXJuCi0gICAgICogICB0aGUgdmFsdWUKLSAgICAgKi8KLSAgICBzdHJpbmcgZ2V0VmFsdWUoKSBjb25zdDsKLQotICAgIC8qKgotICAgICAqIGdldCB0aGUgcGFyYW1ldGVyIG9mIHRleHRhbCBoZWFkZXIKLSAgICAgKiBccGFyYW0gbm9uZQotICAgICAqIFxyZXR1cm4KLSAgICAgKiAgIHRoZSBwYXJhbWV0ZXIKLSAgICAgKi8KLSAgICBzdHJpbmcgZ2V0UGFyYW0oKSBjb25zdDsKLVBSSVZBVEU6Ci0gICAgc3RyaW5nIG5hbWU7Ci0gICAgc3RyaW5nIHZhbHVlOwotICAgIHN0cmluZyBwYXJhbTsKLX07Ci0KLWV4dGVybiBpbnQ2NF90IG50b2hfaW50NjQoaW50NjRfdCBpbik7Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS9kY2YvRHJtRGNmQ29udGFpbmVyLmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL2RjZi9Ecm1EY2ZDb250YWluZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTRkYTQ1MC4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL2RjZi9Ecm1EY2ZDb250YWluZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDIxMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotI2lmbmRlZiBfX0RDRl9DT05UQUlORVJfSF9fCi0jZGVmaW5lIF9fRENGX0NPTlRBSU5FUl9IX18KLQotI2luY2x1ZGUgPERybTJDb21tb25UeXBlcy5oPgotI2luY2x1ZGUgPHV2ZWN0b3IuaD4KLSNpbmNsdWRlIDxkY2YvRHJtSVN0cmVhbS5oPgotI2luY2x1ZGUgPGRjZi9Ecm1EY2ZDb21tb24uaD4KLQotY2xhc3MgRHJtSW5TdHJlYW07Ci0KLS8vLy8vLy8vL2RjZiBjb250YWluZXIKLWNsYXNzIERjZkNvbnRhaW5lciA6IHB1YmxpYyBGdWxsQm94Ci17Ci1wdWJsaWM6Ci0gICAgZnJpZW5kIGNsYXNzIERybUluU3RyZWFtOwotCi0gICAgLyoqIGRlZmF1bHQgY29uc3RydWN0b3Igb2YgRGNmQ29udGFpbmVyICovCi0gICAgRGNmQ29udGFpbmVyKGlzdHJlYW0mIGluUmF3RGF0YSk6RnVsbEJveChOVUxMKSxtQ29uU3RyZWFtKGluUmF3RGF0YSl7fQotCi0gICAgLyoqCi0gICAgICogY29uc3RydWN0b3IgZm9yIERjZkNvbnRhaW5lciwgdXNlZCB0byBwYXJzZSBEQ0YgY29udGFpbmVyCi0gICAgICogXHBhcmFtIGRhdGEgIERDRiBjb250YWluZXIgZGF0YQotICAgICAqIFxwYXJhbSBsZW4gICBEQ0YgY29udGFpbmVyIGRhdGEgbGVuCi0gICAgICogXHBhcmFtIG9mZiAgIHRoZSBvZmZzZXQgZnJvbSB0aGUgc3RhcnQgb2YgRENGIGNvbnRhaW5lcgotICAgICAqLwotICAgIERjZkNvbnRhaW5lcihjb25zdCB1aW50OF90KiBkYXRhLGlzdHJlYW0mIGluUmF3RGF0YSx1aW50NjRfdCBjb25PZmYpOwotCi0gICAgLyoqIERlc3RydWN0b3IgZm9yIERjZkNvbnRhaW5lciAqLwotICAgIH5EY2ZDb250YWluZXIoKTsKLQotICAgIC8qKgotICAgICAqIGdldCB0aGUgY29udGVudCB0eXBlIG9mIG9uZSBjb250ZW50Ci0gICAgICogXHBhcmFtIG5vbmUKLSAgICAgKiBccmV0dXJuCi0gICAgICogICB0aGUgY29udGVudCB0eXBlCi0gICAgICovCi0gICAgc3RyaW5nIGdldENvbnRlbnRUeXBlKHZvaWQpIGNvbnN0OwotCi0gICAgLyoqCi0gICAgICogZ2V0IHRoZSBlbmNyeXB0aW9uIG1ldGhvZCBhcHBseSB0byBjb250ZW50Ci0gICAgICogXHBhcmFtIG5vbmUKLSAgICAgKiBccmV0dXJuCi0gICAgICogICB0aGUgZW5jcnlwdGlvbiBtZXRob2QKLSAgICAgKi8KLSAgICB1aW50OF90IGdldEVuY3J5cHRpb25NZXRob2Qodm9pZCkgY29uc3Q7Ci0KLSAgICAvKioKLSAgICAgKiBnZXQgdGhlIHBhZGRpbmcgc2NoZW1lIGFwcGx5IHRvIGNvbnRlbnQKLSAgICAgKiBccGFyYW0gbm9uZQotICAgICAqIFxyZXR1cm4KLSAgICAgKiAgIHRoZSBwYWRkaW5nIHNjaGVtZQotICAgICAqLwotICAgIHVpbnQ4X3QgZ2V0UGFkZGluZ1NjaGVtZSh2b2lkKSBjb25zdDsKLQotICAgIC8qKgotICAgICAqIGdldCB0aGUgbGVuZ3RoIG9mIHBsYWluIGNvbnRlbnQKLSAgICAgKiBccGFyYW0gbm9uZQotICAgICAqIFxyZXR1cm4KLSAgICAgKiAgIHRoZSBsZW5ndGggb2YgcGxhaW4gY29udGVudAotICAgICAqLwotICAgIHVpbnQ2NF90IGdldFBsYWludGV4dExlbmd0aCh2b2lkKSBjb25zdDsKLQotICAgIC8qKgotICAgICAqIGdldCB0aGUgbGVuZ3RoIG9mIGNvbnRlbnQgSUQKLSAgICAgKiBccGFyYW0gbm9uZQotICAgICAqIFxyZXR1cm4KLSAgICAgKiAgIHRoZSBsZW5ndGggb2YgY29udGVudCBJRAotICAgICAqLwotICAgIHVpbnQxNl90IGdldENvbnRlbnRJRExlbmd0aCh2b2lkKSBjb25zdDsKLQotICAgIC8qKgotICAgICAqIGdldCB0aGUgbGVuZ3RoIG9mIHJpZ2h0cyBpc3N1ZXIgVVJMCi0gICAgICogXHBhcmFtIG5vbmUKLSAgICAgKiBccmV0dXJuCi0gICAgICogICB0aGUgbGVuZ3RoIG9mIHJpZ2h0cyBpc3N1ZXIgVVJMCi0gICAgICovCi0gICAgdWludDE2X3QgZ2V0UmlnaHRzSXNzdWVyVVJMTGVuZ3RoKHZvaWQpIGNvbnN0OwotCi0gICAgLyoqCi0gICAgICogZ2V0IHRoZSBsZW5ndGggb2YgdGV4dGFsIGhlYWRlcgotICAgICAqIFxwYXJhbSBub25lCi0gICAgICogXHJldHVybgotICAgICAqICAgdGhlIGxlbmd0aCBvZiB0ZXh0YWwgaGVhZGVyCi0gICAgICovCi0gICAgdWludDE2X3QgZ2V0VGV4dHVhbEhlYWRlcnNMZW5ndGgodm9pZCkgY29uc3Q7Ci0KLSAgICAvKioKLSAgICAgKiBnZXQgdGhlIGNvbnRlbnQgSUQgb2Ygb25lIGNvbnRlbnQKLSAgICAgKiBccGFyYW0gbm9uZQotICAgICAqIFxyZXR1cm4KLSAgICAgKiAgIHRoZSBjb250ZW50IElECi0gICAgICovCi0gICAgc3RyaW5nIGdldENvbnRlbnRJRCh2b2lkKSBjb25zdDsKLQotICAgIC8qKgotICAgICAqIGdldCB0aGUgcmlnaHRzIGlzc3VlciBVUkwKLSAgICAgKiBccGFyYW0gbm9uZQotICAgICAqIFxyZXR1cm4KLSAgICAgKiAgIHRoZSByaWdodHMgaXNzdWVyIFVSTAotICAgICAqLwotICAgIHN0cmluZyBnZXRSaWdodHNJc3N1ZXJVUkwodm9pZCkgY29uc3Q7Ci0KLSAgICAvKioKLSAgICAgKiBnZXQgdGhlIHByZXZpZXcgbWV0aG9kCi0gICAgICogXHBhcmFtIG5vbmUKLSAgICAgKiBccmV0dXJuCi0gICAgICogICB0aGUgcHJldmlldyBtZXRob2QKLSAgICAgKi8KLSAgICBzdHJpbmcgZ2V0UHJldmlld01ldGhvZCh2b2lkKSBjb25zdDsKLQotICAgIC8qKgotICAgICAqIGdldCB0aGUgbG9jYXRpb24gb2YgY29udGVudAotICAgICAqIFxwYXJhbSBub25lCi0gICAgICogXHJldHVybgotICAgICAqICAgdGhlIGxvY2F0aW9uIG9mIGNvbnRlbnQKLSAgICAgKi8KLSAgICBzdHJpbmcgZ2V0Q29udGVudExvY2F0aW9uKHZvaWQpIGNvbnN0OwotCi0gICAgLyoqCi0gICAgICogZ2V0IHRoZSBVUkwgb2YgY29udGVudAotICAgICAqIFxwYXJhbSBub25lCi0gICAgICogXHJldHVybgotICAgICAqICAgdGhlIFVSTCBvZiBjb250ZW50Ci0gICAgICovCi0gICAgc3RyaW5nIGdldENvbnRlbnRVUkwodm9pZCkgY29uc3Q7Ci0KLSAgICAvKioKLSAgICAgKiBnZXQgdGhlIGN1c3RvbWVyIGhlYWQKLSAgICAgKiBccGFyYW0gbm9uZQotICAgICAqIFxyZXR1cm4KLSAgICAgKiAgIHRoZSBjdXN0b21lciBoZWFkCi0gICAgICovCi0gICAgdmVjdG9yPHN0cmluZz4gZ2V0Q3VzdG9tZXJIZWFkKHZvaWQpIGNvbnN0OwotCi0gICAgLyoqCi0gICAgICogZ2V0IHRoZSBwcmV2aWV3IGVsZW1lbnQgZGF0YQotICAgICAqIFxwYXJhbSBub25lCi0gICAgICogXHJldHVybgotICAgICAqICAgdGhlIERSTSBJbnN0cmVhbSBvZiBwcmV2aWV3IGVsZW1lbnQgZGF0YQotICAgICAqLwotICAgIERybUluU3RyZWFtIGdldFByZXZpZXdFbGVtZW50RGF0YSh2b2lkKSBjb25zdDsKLQotICAgIC8qKgotICAgICAqIGdldCB0aGUgcGxhaW4gY29udGVudAotICAgICAqIFxwYXJhbSBub25lCi0gICAgICogXHJldHVybgotICAgICAqICAgdGhlIERSTSBJbnN0cmVhbSBvZiBwbGFpbiBjb250ZW50Ci0gICAgICovCi0gICAgRHJtSW5TdHJlYW0gZ2V0RGVjcnlwdENvbnRlbnQodWludDhfdCogZGVjcnlwdEtleSkgY29uc3Q7Ci0KLSAgICAvKioKLSAgICAgKiBnZXQgdGhlIGlzdHJlYW0gb2YgRENGCi0gICAgICogXHBhcmFtIG5vbmUKLSAgICAgKiBccmV0dXJuCi0gICAgICogICB0aGUgaXN0cmVhbSBvZiBEQ0YKLSAgICAgKi8KLSAgICBpc3RyZWFtJiBnZXRTdHJlYW0odm9pZCkgY29uc3Q7Ci0KLVBSSVZBVEU6Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IFVTRVJfREFUQV9GTEFHID0gMHgwMTsKLQotICAgIHVpbnQ4X3QgbUNvbnRlbnRUeXBlTGVuOwotICAgIHN0cmluZyBtQ29udGVudFR5cGU7Ci0gICAgdWludDhfdCBtRW5jcnlwdGlvbk1ldGhvZDsKLSAgICB1aW50OF90IG1QYWRkaW5nU2NoZW1lOwotICAgIHVpbnQ2NF90IG1QbGFpbnRleHRMZW5ndGg7Ci0gICAgdWludDE2X3QgbUNvbnRlbnRJRExlbmd0aDsKLSAgICB1aW50MTZfdCBtUmlnaHRzSXNzdWVyVVJMTGVuZ3RoOwotICAgIHVpbnQxNl90IG1UZXh0dWFsSGVhZGVyc0xlbmd0aDsKLSAgICBzdHJpbmcgbUNvbnRlbnRJRDsKLSAgICBzdHJpbmcgbVJpZ2h0c0lzc3VlclVSTDsKLSAgICB2ZWN0b3I8VGV4dHVhbEhlYWRlcio+IG1UZXh0dWFsSGVhZGVyczsKLSAgICBib29sIG1TaWxlbnRGaXJzdDsKLSAgICBzdHJpbmcgbVNsaWVudE1ldGhvZDsKLSAgICBzdHJpbmcgbVNpbGVudFJpZ2h0c1VSTDsKLSAgICBzdHJpbmcgbVByZXZpZXdNZXRob2Q7Ci0gICAgc3RyaW5nIG1QcmV2aWV3RWxlbWVudFVSSTsKLSAgICBzdHJpbmcgbVByZXZpZXdSaWdodHNVUkw7Ci0gICAgc3RyaW5nIG1Db250ZW50VVJMOwotICAgIHN0cmluZyBtQ29udGVudFZlcnNpb247Ci0gICAgc3RyaW5nIG1Db250ZW50TG9jYXRpb247Ci0gICAgdmVjdG9yPHN0cmluZz4gbUN1c3RvbUhlYWRlcjsKLSAgICBib29sIG1IYXNVc2VyRGF0YTsKLSAgICB1aW50NjRfdCBtRGF0YUxlbjsKLSAgICBpc3RyZWFtJiBtQ29uU3RyZWFtOwotICAgIHVpbnQ2NF90IG1EZWNPZmZzZXQ7Ci0KLVBSSVZBVEU6Ci0gICAgLy8gcGFyc2UgdGV4dCBoZWFkZXIKLSAgICBib29sIHBhcnNlVGV4dHVhbEhlYWRlcnMoY29uc3QgdWludDhfdCogZGF0YSwgdWludDMyX3QgbGVuKTsKLSAgICB2b2lkIGNvcHkoY29uc3QgRGNmQ29udGFpbmVyJiBjb250YWluZXIpOwotICAgIERjZkNvbnRhaW5lcihjb25zdCBEY2ZDb250YWluZXImIGNvbnRhaW5lcik6RnVsbEJveChOVUxMKSxtQ29uU3RyZWFtKGNvbnRhaW5lci5tQ29uU3RyZWFtKXt9Ci0gICAgRGNmQ29udGFpbmVyJiBvcGVyYXRvcj0oY29uc3QgRGNmQ29udGFpbmVyJiBvdGhlcil7cmV0dXJuICp0aGlzO30KLX07Ci0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL2RjZi9Ecm1JU3RyZWFtLmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL2RjZi9Ecm1JU3RyZWFtLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwZTI2NGUuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS9kY2YvRHJtSVN0cmVhbS5oCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLSNpZm5kZWYgX19EUk1fSVNUUkVBTV9IX18KLSNkZWZpbmUgX19EUk1fSVNUUkVBTV9IX18KLQotI2luY2x1ZGUgPERybTJDb21tb25UeXBlcy5oPgotI2luY2x1ZGUgPHV0aWwvY3J5cHRvL0RybUNyeXB0by5oPgotI2luY2x1ZGUgPGRjZi9Ecm1EY2ZDb250YWluZXIuaD4KLSNpbmNsdWRlIDx1c3RyaW5nLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSB1c3RsOwotCi1jbGFzcyBEY2ZDb250YWluZXI7Ci0KLWNsYXNzIERybUluU3RyZWFtCi17Ci1wdWJsaWM6Ci0gICAgLyoqIGRlZmF1bHQgY29uc3RydWN0b3Igb2YgRHJtSW5TdHJlYW0gKi8KLSAgICBEcm1JblN0cmVhbSgpOm1EZWNyeXB0UG9zKDApe30KLQotICAgIC8qKgotICAgICAqIGNvbnN0cnVjdG9yIGZvciBEcm1JblN0cmVhbSwgdXNlZCB0byByZWFkIERDRiBjb250ZW50Ci0gICAgICogXHBhcmFtIGVuY0ZpbGUgIERDRiBjb250YWluZXIgZGF0YQotICAgICAqIFxwYXJhbSBsZW4gICBEQ0YgY29udGFpbmVyIGRhdGEgbGVuCi0gICAgICogXHBhcmFtIG9mZiAgIHRoZSBvZmZzZXQgZnJvbSB0aGUgc3RhcnQgb2YgRENGIGNvbnRhaW5lcgotICAgICAqLwotICAgIERybUluU3RyZWFtKGNvbnN0IERjZkNvbnRhaW5lciogY29udGFpbmVyLHVpbnQ4X3QqIEtleSk7Ci0KLSAgICAvKioKLSAgICAgKiBnZXQgdGhlIHNpemUgb2YgRFJNIEluc3RyZWFtCi0gICAgICogXHBhcmFtIG5vbmUKLSAgICAgKiBccmV0dXJuCi0gICAgICogICB0aGUgc2l6ZSBvZiBEUk0gSW5zdHJlYW0KLSAgICAgKi8KLSAgICB1aW50NjRfdCBzaXplKCkgY29uc3Q7Ci0KLSAgICAvKioKLSAgICAgKiByZWFkIGRhdGEgZnJvbSBEUk0gSW5zdHJlYW0KLSAgICAgKiBccGFyYW0gIGRhdGEgIHRoZSBidWZmZXIgdG8gc3RvcmUgcmVhZCBkYXRhCi0gICAgICogXHBhcmFtICBsZW4gICBob3cgbXVjaCBkYXRhIG5lZWQgdG8gcmVhZAotICAgICAqIFxyZXR1cm4KLSAgICAgKiAgIHRoZSBhY3R1YWwgbGVuIG9mIHJlYWQgZGF0YQotICAgICAqLwotICAgIHVpbnQ2NF90IHJlYWQodWludDhfdCogZGF0YSx1aW50NjRfdCBsZW4pOwotCi1QUklWQVRFOgotICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBBRVNfSVZfTEVOID0gMTY7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IEFFU19LRVlfTEVOID0gMTY7Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IEFFU19CTE9DS19MRU4gPSAxNjsKLQotICAgIGNvbnN0IERjZkNvbnRhaW5lciogbURjZkNvbjsKLSAgICB1aW50NjRfdCBtRGVjcnlwdFBvczsKLSAgICB1aW50OF90IG1BZXNLZXlbQUVTX0tFWV9MRU5dOwotfTsKLQotCi0KLSNlbmRpZgotCi0KLQotCi0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvZGNmL0RybVJhd0NvbnRlbnQuaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvZGNmL0RybVJhd0NvbnRlbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmQ0MzNhZi4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL2RjZi9Ecm1SYXdDb250ZW50LmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotI2lmbmRlZiBfX0RSTV9DT05URU5UX0hfXwotI2RlZmluZSBfX0RSTV9DT05URU5UX0hfXwotCi0jaW5jbHVkZSA8RHJtMkNvbW1vblR5cGVzLmg+Ci0jaW5jbHVkZSA8ZGNmL0RybURjZkNvbnRhaW5lci5oPgotCi0vLy8vLy8vLy8vLy8vcmF3IGNvbnRlbnQKLWNsYXNzIERybVJhd0NvbnRlbnQKLXsKLXB1YmxpYzoKLSAgICAvKioKLSAgICAgKiBjb25zdHJ1Y3RvciBmb3IgRHJtUmF3Q29udGVudCwgdXNlZCB0byBwYXJzZSBEQ0YKLSAgICAgKiBccGFyYW0gaW5SYXdEYXRhICBpbnB1dCBzdHJlYW0gb2YgcmF3IGRhdGEuCi0gICAgICovCi0gICAgRHJtUmF3Q29udGVudChpc3RyZWFtJiBpblJhd0RhdGEpOwotCi0gICAgLyoqIERlc3RydWN0b3IgZm9yIERybVJhd0NvbnRlbnQgKi8KLSAgICB+RHJtUmF3Q29udGVudCgpOwotCi0gICAgLyoqCi0gICAgICogZ2V0IERDRiBjb250YWluZXIKLSAgICAgKiBccGFyYW0gbm9uZQotICAgICAqIFxyZXR1cm4KLSAgICAgKiAgIHRoZSBEQ0YgY29udGFpbmVyCi0gICAgICovCi0gICAgdmVjdG9yPERjZkNvbnRhaW5lcio+IGdldENvbnRlbnRzKHZvaWQpIGNvbnN0OwotCi0gICAgLyoqCi0gICAgICogZ2V0IHRoZSBsZW5ndGggb2YgRENGIGhhc2gKLSAgICAgKiBccGFyYW0gbm9uZQotICAgICAqIFxyZXR1cm4KLSAgICAgKiAgIHRoZSBsZW5ndGggb2YgRENGIGhhc2gKLSAgICAgKi8KLSAgICB1aW50MzJfdCBnZXREY2ZIYXNoTGVuKCkgY29uc3Q7Ci0KLSAgICAvKioKLSAgICAgKiBnZXQgRENGIGhhc2gKLSAgICAgKiBccGFyYW0gb3V0RGNmSGFzaCAgdGhlIGJ1ZmZlciB0byBzdG9yZSBEQ0YgaGFzaAotICAgICAqIFxyZXR1cm4KLSAgICAgKiAgIG5vbmUKLSAgICAgKi8KLSAgICB2b2lkIGdldERjZkhhc2godWludDhfdCogb3V0RGNmSGFzaCkgY29uc3Q7Ci0KLVBSSVZBVEU6Ci0gICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IERDRl9IQVNIX0xFTiA9IDIwOwotICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBGSVhfSEVBREVSX0xFTiA9IDIwOwotICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBNQVhfUElFQ0VfTEVOID0gKDEwMCAqIDEwMjQpOwotCi0gICAgdWludDhfdCBtRGNmSGFzaFtEQ0ZfSEFTSF9MRU5dOwotICAgIHZlY3RvcjxEY2ZDb250YWluZXIqPiBtQ29udGFpbmVyOwotCi1QUklWQVRFOgotICAgIGJvb2wgcGFyc2VEY2ZIZWFkZXIoY29uc3QgdWludDhfdCogZGNmSGVhZCk7Ci0gICAgRHJtUmF3Q29udGVudChjb25zdCBEcm1SYXdDb250ZW50JiByYXdDb250ZW50KXt9Ci0gICAgRHJtUmF3Q29udGVudCYgb3BlcmF0b3I9KGNvbnN0IERybVJhd0NvbnRlbnQmIG90aGVyKXtyZXR1cm4gKnRoaXM7fQotfTsKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL2RybW1hbmFnZXIvRHJtTWFuYWdlci5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS9kcm1tYW5hZ2VyL0RybU1hbmFnZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzhiZmJjMS4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL2RybW1hbmFnZXIvRHJtTWFuYWdlci5oCisrKyAvZGV2L251bGwKQEAgLTEsMTA3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLw0KLSNpZm5kZWYgX0RSTU1BTkFHRVJfCi0jZGVmaW5lIF9EUk1NQU5BR0VSXwotCi0jaW5jbHVkZSA8RHJtMkNvbW1vblR5cGVzLmg+Ci0jaW5jbHVkZSA8b2ZzdHJlYW0uaD4KLSNpbmNsdWRlIDxzb3N0cmVhbS5oPgotI2luY2x1ZGUgPHVzdHJpbmcuaD4KLSNpbmNsdWRlIDxzaXN0cmVhbS5oPgotI2luY2x1ZGUgPHV2ZWN0b3IuaD4KLQotdXNpbmcgbmFtZXNwYWNlIHVzdGw7Ci0KLS8qKiBJdCBzaG91bGQgYmUgcmVtb3ZlZCBhZnRlciByZWFsIERjZkNvbnRhaW5lciBpcyByZWFkeSAqLwotI2RlZmluZSBEY2ZDb250YWluZXIgc3RyaW5nCi1zdGF0aWMgY29uc3QgaW50MTZfdCBEUk1fT0sgPSAxOwotCi1jbGFzcyBEcm1NYW5hZ2VyCi17Ci1wdWJsaWM6Ci0gICAgLyoqCi0gICAgICogRXJyb3IgZGVmaW5pdGlvbgotICAgICAqLwotICAgICBzdGF0aWMgY29uc3QgaW50MTZfdCBEUk1fTUFOQUdFUl9CQVNFID0gMTAwOwotICAgICBzdGF0aWMgY29uc3QgaW50MTZfdCBFUlJfRENGU1RSRUFNX05PVF9JTklUSUFMSVpFRCA9IERSTV9NQU5BR0VSX0JBU0UrMTsKLSAgICAgc3RhdGljIGNvbnN0IGludDE2X3QgRVJSX1dST05HX0RDRkRBVEEgPSBEUk1fTUFOQUdFUl9CQVNFKzI7Ci0gICAgIHN0YXRpYyBjb25zdCBpbnQxNl90IEVSUl9XUk9OR19SSUdIVFMgPSBEUk1fTUFOQUdFUl9CQVNFKzM7Ci0KLSAgICAvKioKLSAgICAgKiBDb25zdHJ1Y3RvciBmb3IgRHJtTWFuYWdlcix1c2VkIHRvIG9wZW4gbG9jYWwgZGNmIGZpbGUuCi0gICAgICogQHBhcmFtIGluUmF3RGF0YSBpbnB1dCBzdHJlYW0gb2YgcmF3IGRhdGEuCi0gICAgICovCi0gICAgRHJtTWFuYWdlcihpc3RyZWFtICppblJhd0RhdGEpOwotCi0gICAgLyoqCi0gICAgICogQ29uc3RydWN0b3IgZm9yIERybU1hbmFnZXIsdXNlZCB0byBzZXBhcmF0ZSBkY2YgZmlsZSBhbmQgdHJpZyBtZXNzYWdlIHdoZW4gdXBwZXIKLSAgICAgKiBhcHBsaWNhdGlvbiBkb3dubG9hZGluZyBvbmUgbXVsdGlwYXJ0IG1lc3NhZ2UgZnJvbSBDSS4KLSAgICAgKiBAcGFyYW0gaW5SYXdEYXRhIGlucHV0IHN0cmVhbSBvZiByYXcgZGF0YS4KLSAgICAgKi8KLSAgICBEcm1NYW5hZ2VyKGlzdHJlYW0gKiBpblJhd0RhdGEsIHN0cmluZyBtaW1lVHlwZSk7Ci0KLSAgICAvKiogRGVzdHJ1Y3RvciBmb3IgRG9tRXhwYXRBZ2VudC4gKi8KLSAgICB+RHJtTWFuYWdlcigpOwotICAgIC8qKgotICAgICAqIENvbmZpZyBEUk0gZW5naW5lCi0gICAgICogRml4IG1lIGxhdGVyCi0gICAgICovCi0gICAgIGJvb2wgY29uZmlnKCk7Ci0KLSAgICAvKioKLSAgICAgKiBDb25zdW1lIHJpZ2h0cyBhY2NvcmRpbmcgdG8gc3BlY2lmaWVkIG9wZXJhdGlvbiwgRHJtTWFuYWdlciB3aWxsIGNoZWNrLgotICAgICAqIEBwYXJhbSBvcGVyYXRpb25UeXBlIHRoZSB0eXBlIG9mIG9wZXJhdGlvbi4KLSAgICAgKiBAcmV0dXJuIHRoZSBvcGVyYXRpb24gcmVzdWx0LgotICAgICAqLwotICAgIGludDE2X3QgY29uc3VtZVJpZ2h0cyhpbnQxNl90IG9wZXJhdGlvblR5cGUpOwotCi0gICAgLyoqCi0gICAgICogR2V0IHRoZSBsaXN0IG9mIGFsbCBkY2YgY29udGFpbmVycyBvYmplY3QgcmVmZXJlbmNlIGluIHRoZSBkY2YgZmlsZS4KLSAgICAgKiBAcGFyYW0gdGhlIHZlY3RvciBvZiB0aGUgZGNmIG9iamVjdHMgbGlzdCByZXR1cm5lZC4KLSAgICAgKiBAcmV0dXJuIHRoZSBvcGVyYXRpb24gcmVzdWx0LgotICAgICAqLwotICAgICBpbnQxNl90IGdldExpc3RPZkRjZk9iamVjdHModmVjdG9yPERjZkNvbnRhaW5lcio+ICoqb3V0RGNmTGlzdCk7Ci0KLSAgICAvKioKLSAgICAgKiBPcGVuIG9uZSBEY2YgY29udGFpbmVyIHRvIHJlYWQgdGhlIGRlY3J5cHRlZCBkYXRhIGFjY29yZGluZyB0byBzcGVjaWZpZWQKLSAgICAgKiBvcGVyYXRpb24uCi0gICAgICogQHBhcmFtIG9uZURjZk9iamVjdCB0aGUgcmVmZXJlbmNlIG9mIHRoZSBEY2ZDb250YWluZXIuCi0gICAgICogQHBhcmFtIG9wZXJhdGlvblR5cGUgdGhlIHR5cGUgb2Ygb3BlcmF0aW9uLgotICAgICAqIEBwYXJhbSBkZWNyeXB0ZWQgZGF0YSByZXR1cm5lZC4KLSAgICAgKiBAcmV0dXJuIHRoZSBvcGVyYXRpb24gcmVzdWx0LgotICAgICAqLwotICAgIGludDE2X3Qgb3BlbkRlY3J5cHRlZENvbnRlbnQoRGNmQ29udGFpbmVyICpvbmVEY2ZPYmplY3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludDE2X3Qgb3BlcmF0aW9uVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXN0cmVhbSAqb3V0RGVjcnlwdGVkRGF0YSk7Ci0KLSAgICAvKioKLSAgICAgKiBHZXQgdGhlIHNlcGFyYXRlZCBEY2YgcmF3IGRhdGEgZnJvbSBtdWx0aXBhcnQgbWVzc2FnZS4KLSAgICAgKiBAcmV0dXJuIHRoZSBpZnN0cmVhbSBvZiB0aGUgZGNmIHJhdyBkYXRhIHdoaWNoIHNob3VsZCBiZSBzdG9yZWQgYnkgdXBwZXIKLSAgICAgKiBhcHBsaWNhdGlvbi4KLSAgICAgKi8KLSAgICBpZnN0cmVhbSogZ2V0T3JpZ2luYWxNZWRpYURhdGEodm9pZCk7Ci0KLSAgICAvKioKLSAgICAgKiBIYW5kbGUgRFJNMi4wIHB1c2ggbWVzc2FnZQotICAgICAqLwotICAgIGJvb2wgaGFuZGxlUHVzaE1zZyh1aW50OF90KiBkYXRhLCBzdHJpbmcgbWltZVR5cGUpOwotCi1QUklWQVRFOgotICAgIGlzdHJlYW0gKm1EY2ZTdHJlYW07IC8qKjwgdGhlIGhhbmRsZXIgb2YgZGNmIHN0cmVhbS4gKi8KLSAgICB2ZWN0b3I8RGNmQ29udGFpbmVyKj4gbURjZnM7IC8qKjwgYWxsIHRoZSBkY2YgY29udGFpbmVycyBpbmNsdWRlZCBpbiBvbmUgZGNmIGZpbGUuICovCi19OwotCi0jZW5kaWYgLy9fRFJNTUFOQUdFUl8KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvcmlnaHRzL0Fzc2V0LmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL3JpZ2h0cy9Bc3NldC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NjY5NmRkLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvcmlnaHRzL0Fzc2V0LmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0jaWZuZGVmIF9BU1NFVF9ICi0jZGVmaW5lIF9BU1NFVF9ICi0KLSNpbmNsdWRlIDx1c3RyaW5nLmg+Ci0jaW5jbHVkZSA8dXZlY3Rvci5oPgotI2luY2x1ZGUgPERybTJDb21tb25UeXBlcy5oPgotI2luY2x1ZGUgPHJpZ2h0cy9SaWdodC5oPgotdXNpbmcgbmFtZXNwYWNlIHVzdGw7Ci0KLWNsYXNzIEFzc2V0IHsKLXB1YmxpYzoKLSAgICAvKioKLSAgICAgKiBDb25zdHJ1Y3RvciBmb3IgYXNzZXQuCi0gICAgICovCi0gICAgQXNzZXQoKTsKLQotICAgIC8qKgotICAgICAqIERlc3RydWN0b3IgZm9yIGFzc2V0LgotICAgICAqLwotICAgIH5Bc3NldCgpOwotCi0gICAgLyoqCi0gICAgICogVGVzdCB3aGV0aGVyIGFzc2V0IGhhcyBwYXJlbnQgb3Igbm90LgotICAgICAqIEByZXR1cm4gdHJ1ZS9mYWxzZSB0byBpbmRpY2F0ZSB0aGUgcmVzdWx0LgotICAgICAqLwotICAgIGJvb2wgaGFzUGFyZW50KCk7Ci0KLSAgICAvKioKLSAgICAgKiBTZXQgaWQgb2YgYXNzZXQuCi0gICAgICogQHBhcmFtIGlkIHRoZSBpZCBvZiBhc3NldC4KLSAgICAgKi8KLSAgICB2b2lkIHNldElEKGNvbnN0IHN0cmluZyAmaWQpOwotCi0gICAgLyoqCi0gICAgICogR2V0IHRoZSBpZCBvZiBjb250ZW50LgotICAgICAqIEByZXR1cm4gYXNzZXQgaWQuCi0gICAgICovCi0gICAgY29uc3Qgc3RyaW5nJiBnZXRJRCgpIGNvbnN0OwotCi0gICAgLyoqCi0gICAgICogU2V0IGNvbnRlbmQgaWQgcmVsYXRlZCB0byBhc3NldC4KLSAgICAgKiBAcGFyYW0gaWQgdGhlIGlkIG9mIGNvbnRlbnQuCi0gICAgICovCi0gICAgdm9pZCBzZXRDb250ZW50SUQoY29uc3Qgc3RyaW5nICZpZCk7Ci0KLSAgICAvKioKLSAgICAgKiBHZXQgY29udGVudCBpZC4KLSAgICAgKiBAcmV0dXJuIGNvbnRlbnQgaWQuCi0gICAgICovCi0gICAgY29uc3Qgc3RyaW5nJiBnZXRDb250ZW50SUQoKSBjb25zdDsKLQotICAgIC8qKgotICAgICAqIFNldCBkaWdlc3QgdmFsdWUgb2YgRENGLgotICAgICAqIEBwYXJhbSB2YWx1ZSB0aGUgRENGIGRpZ2VzdCB2YWx1ZS4KLSAgICAgKi8KLSAgICB2b2lkIHNldERDRkRpZ2VzdChjb25zdCBzdHJpbmcgJnZhbHVlKTsKLQotICAgIC8qKgotICAgICAqIEdldCB0aGUgRENGIGRpZ2VzdCB2YWx1ZS4KLSAgICAgKiBAcmV0dXJuIHRoZSBkaWdlc3QgdmFsdWUgb2YgRENGLgotICAgICAqLwotICAgIGNvbnN0IHN0cmluZyYgZ2V0RENGRGlnZXN0KCkgY29uc3Q7Ci0KLSAgICAvKioKLSAgICAgKiBTZXQgZW5jcnlwdGVkIGtleSBpbiBhc3NldC4KLSAgICAgKiBAcGFyYW0gdGhlIGVuY3J5cHRlZCBrZXkuCi0gICAgICovCi0gICAgdm9pZCBzZXRFbmNyeXB0ZWRLZXkoY29uc3Qgc3RyaW5nICZrZXkpOwotCi0gICAgLyoqCi0gICAgICogR2V0IGVuY3J5cHRlZCBrZXkuCi0gICAgICogQHJldHVybiBlbmN5cHRlZCBrZXkuCi0gICAgICovCi0gICAgY29uc3Qgc3RyaW5nJiBnZXRFbmNyeXRlZEtleSgpIGNvbnN0OwotCi0gICAgLyoqCi0gICAgICogR2V0IGNlay4KLSAgICAgKiBAcmV0dXJuIGNlay4KLSAgICAgKi8KLSAgICBjb25zdCBjaGFyKiBnZXRDZWsoKSBjb25zdDsKLQotICAgIC8qKgotICAgICAqIFNldCB0aGUgcmV0cmlldmFsIG1ldGhvZCBvZiBrZXkuCi0gICAgICogQHBhcmFtIHJtIHRoZSByZXRyaWV2YWwgbWV0aG9kIG9mIHRoZSBrZXkuCi0gICAgICovCi0gICAgdm9pZCBzZXRLZXlSZXRyaWV2YWxNZXRob2QoY29uc3Qgc3RyaW5nICZybSk7Ci0KLSAgICAvKioKLSAgICAgKiBTZXQgcGFyZW50IGNvbnRlbnQgaWQgZm9yIGFzc2V0LgotICAgICAqIEBwYXJhbSBpZCB0aGUgcGFyZW50IGNvbnRlbnQgaWQuCi0gICAgICovCi0gICAgdm9pZCBzZXRQYXJlbnRDb250ZW50SUQoY29uc3Qgc3RyaW5nICZpZCk7Ci0KLSAgICAvKioKLSAgICAgKiBHZXQgdGhlIHBhcmVudCBjb250ZW50IGlkIG9mIHRoZSBhc3NldC4KLSAgICAgKiBAcmV0dXJuIHRoZSBwYXJlbnQgY29udGVudCBpZC4KLSAgICAgKi8KLSAgICBjb25zdCBzdHJpbmcmIGdldFBhcmVudENvbnRlbnRJRCgpIGNvbnN0OwotCi0gICAgLyoqCi0gICAgICogUmVjb3ZlciB0aGUgQ0VLIHVzaW5nIHByaXZhdGUga2V5LgotICAgICAqLwotICAgIHZvaWQgcmVjb3ZlckNlaygpOwotCi1QUklWQVRFOgotICAgIHN0cmluZyBtQXNzZXRJRDsKLSAgICBzdHJpbmcgbUNvbnRlbnRJRDsKLSAgICBzdHJpbmcgbURpZ2VzdE1ldGhvZDsKLSAgICBzdHJpbmcgbURpZ2VzdFZhbHVlOwotICAgIHN0cmluZyBtRW5jcnlwdGVkTWV0aG9kOwotICAgIHN0cmluZyBtRW5jcnlwdGVkS2V5OwotICAgIHN0cmluZyBtUmV0cmlldmFsTWV0aG9kOwotICAgIHN0cmluZyBtUGFyZW50Q29udGVudElEOwotICAgIHN0cmluZyBtQ2VrOwotfTsKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL3JpZ2h0cy9Db25zdHJhaW50LmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL3JpZ2h0cy9Db25zdHJhaW50LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjZjVhZmUuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS9yaWdodHMvQ29uc3RyYWludC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTkwICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotI2lmbmRlZiBfQ09OU1RSQUlOVF9ICi0jZGVmaW5lIF9DT05TVFJBSU5UX0gKLQotI2luY2x1ZGUgPERybTJDb21tb25UeXBlcy5oPgotI2luY2x1ZGUgPHVzdHJpbmcuaD4KLSNpbmNsdWRlIDx1dmVjdG9yLmg+Ci11c2luZyBuYW1lc3BhY2UgdXN0bDsKLQotc3RydWN0IENvbnRleHQgewotICAgIHN0cmluZyBpZDsKLSAgICBzdHJpbmcgdmVyc2lvbjsKLX07Ci0KLWNvbnN0IGludCBJTklUX1ZBTFVFID0gLTE7Ci0KLWNsYXNzIENvbnN0cmFpbnQgewotcHVibGljOgotICAgIGVudW0gTU9ERSB7Tk9ORSwgTU9WRSwgQ09QWX07IC8qKjwgZXhwb3J0IG1vZGUgdHlwZS4gKi8KLQotICAgIC8qKgotICAgICAqIENvbnN0cnV0b3IgZm9yIGNvbnN0cmFpbnQuCi0gICAgICovCi0gICAgQ29uc3RyYWludCgpOwotCi0gICAgLyoqCi0gICAgICogRGVzdHJ1Y3RvciBmb3IgY29uc3RyYWludC4KLSAgICAgKi8KLSAgICB+Q29uc3RyYWludCgpOwotCi1wdWJsaWM6Ci0gICAgLyoqCi0gICAgICogVGVzdCB3aGV0aGVyIGNvbnN0cmFpbnQgaXMgdmFsaWQgb3Igbm90Ci0gICAgICogQHBhcmFtIHRpbWUgdGhlIHNwZWNpdGljIHRpbWUgdG8gdGVzdC4KLSAgICAgKiBAcmV0dXJuIHRydWUvZmFsc2UgdG8gaW5kaWNhdGUgdGhlIHJlc3VsdC4KLSAgICAgKi8KLSAgICBib29sIGlzVmFsaWQobG9uZyB0aW1lKSBjb25zdDsKLQotICAgIC8qKgotICAgICAqIFRlc3Qgd2hldGhlciBjb25zdHJhaW50IGlzIHVuY29uc3RyYWludCBvciBub3QKLSAgICAgKiBAcmV0dXJuIHRydWUvZmFsc2UgdG8gaW5kaWNhdGUgdGhlIHJlc3VsdC4KLSAgICAgKi8KLSAgICBib29sIGlzVW5Db25zdHJhaW50KCkgY29uc3Q7Ci0KLSAgICAvKioKLSAgICAgKiBUZXN0IHdoZXRoZXIgY29uc3RyYWludCBpcyBkYXRldGltZSByZWxhdGVkIG9yIG5vdC4KLSAgICAgKiBAcmV0dXJuIHRydWUvZmFsc2UgdG8gaW5kaWNhdGUgdGhlIHJlc3VsdC4KLSAgICAgKi8KLSAgICBib29sIGlzRGF0ZVRpbWVDb25zdHJhaW50KCkgY29uc3Q7Ci0KLSAgICAvKioKLSAgICAgKiBUZXN0IHdoZXRoZXIgY29uc3RyYWludCBjb250YWluIGludGVydmFsIG9yIG5vdAotICAgICAqIEByZXR1cm4gdHJ1ZS9mYWxzZSB0byBpbmRpY2F0ZSB0aGUgcmVzdWx0LgotICAgICAqLwotICAgIGJvb2wgaXNJbnRlcnZhbENvbnN0cmFpbnQoKSBjb25zdDsKLQotICAgIC8qKgotICAgICAqIFRlc3Qgd2hldGhlciBjb25zdHJhaW50IGlzIHRpbWVkIGNvdW50IG9yIG5vdAotICAgICAqIEByZXR1cm4gdHJ1ZS9mYWxzZSB0byBpbmRpY2F0ZSB0aGUgcmVzdWx0LgotICAgICAqLwotICAgIGJvb2wgaXNUaW1lZENvdW50Q29uc3RyYWludCgpIGNvbnN0OwotCi0gICAgLyoqCi0gICAgICogU2V0IHRoZSBzdGFydCB0aW1lIHZhbHVlIG9mIGNvbnN0cmFpbnQuCi0gICAgICogQHBhcmFtIHRpbWUgdGhlIHNwZWNpZmljIHRpbWUgdmFsdWUuCi0gICAgICovCi0gICAgdm9pZCBzZXRTdGFydFRpbWUobG9uZyB0aW1lKTsKLQotICAgIC8qKgotICAgICAqIEdldCB0aGUgc3RhcnQgdGltZS4KLSAgICAgKiBAcmV0dXJuIHZhbHVlIG9mIHN0YXJ0IHRpbWUuCi0gICAgICovCi0gICAgbG9uZyBnZXRTdGFydFRpbWUoKSBjb25zdDsKLQotICAgIC8qKgotICAgICAqIFNldCB0aGUgZW5kIHRpbWUuCi0gICAgICogQHBhcmFtIHRpbWUgdGhlIHZhbHVlIG9mIGVuZCB0aW1lLgotICAgICAqLwotICAgIHZvaWQgc2V0RW5kVGltZShsb25nIHRpbWUpOwotCi0gICAgLyoqCi0gICAgICogR2V0IHRoZSBlbmQgdGltZS4KLSAgICAgKiBAcGFyYW0gcmV0dXJuIHRoZSB2YWx1ZSBvZiAgZW5kIHRpbWUuCi0gICAgICovCi0gICAgbG9uZyBnZXRFbmRUaW1lKCkgY29uc3Q7Ci0KLSAgICAvKioKLSAgICAgKiBTZXQgdGhlIGFjY3VtdWxhdGVkIC4KLSAgICAgKiBAcGFyYW0gdGltZSB0aGUgc3BlY2lmaWMgdGltZS4KLSAgICAgKi8KLSAgICB2b2lkIHNldEFjY3VtdWxhdGVkKGxvbmcgdGltZSk7Ci0KLSAgICAvKioKLSAgICAgKiBHZXQgdGhlIGFjY3VtdWxhdGVkLgotICAgICAqIEByZXR1cm4gdGhlIHZhbHVlIG9mIGFjY3VtdWxhdGVkCi0gICAgICovCi0gICAgbG9uZyBnZXRBY2N1bXVsYXRlZCgpIGNvbnN0OwotCi0gICAgLyoqCi0gICAgICogU2V0IHRoZSBjb3VudC4KLSAgICAgKiBAcGFyYW0gY291bnQgdGhlIHZhbHVlIG9mIGNvdW50LgotICAgICAqLwotICAgIHZvaWQgc2V0Q291bnQoaW50IGNvdW50KTsKLQotICAgIC8qKgotICAgICAqIEdldCB0aGUgY291bnQuCi0gICAgICogQHJldHVybiB2YWx1ZSBvZiBjb3VudC4KLSAgICAgKi8KLSAgICBpbnQgZ2V0Q291bnQoKSBjb25zdDsKLQotICAgIC8qKgotICAgICAqIFNldCB0aGUgdmFsdWUgb2YgdGltZXIuCi0gICAgICogQHBhcmFtIHRpbWVyIHRoZSB2YWx1ZSBvZiB0aGUgdGltZXIuCi0gICAgICovCi0gICAgdm9pZCBzZXRUaW1lcihpbnQgdGltZXIpOwotCi0gICAgLyoqCi0gICAgICogR2V0IHRoZSB0aW1lci4KLSAgICAgKiBAcmV0dXJuIHZhbHVlIG9mIHRpbWUuCi0gICAgICovCi0gICAgaW50IGdldFRpbWVyKCkgY29uc3Q7Ci0KLSAgICAvKioKLSAgICAgKiBTZXQgdGhlIHRpbWVkQ291bnQuCi0gICAgICogQHBhcmFtIHRpbWVkQ291bnQgdGhlIHZhbHVlIG9mIHRpbWVkQ291bnQuCi0gICAgICovCi0gICAgdm9pZCBzZXRUaW1lZENvdW50KGludCB0aW1lZENvdW50KTsKLQotICAgIC8qKgotICAgICAqIEdldCB0aGUgdGltZWRDb3VudC4KLSAgICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aW1lZENvdW50LgotICAgICAqLwotICAgIGludCBnZXRUaW1lZENvdW50KCkgY29uc3Q7Ci0KLSAgICAvKioKLSAgICAgKiBTZXQgdGhlIGludGVydmFsLgotICAgICAqIEBwYXJhbSBpbnRlcnZhbCB0aGUgdmFsdWUgb2YgaW50ZXJ2YWwuCi0gICAgICovCi0gICAgdm9pZCBzZXRJbnRlcnZhbChpbnQgaW50ZXJ2YWwpOwotCi0gICAgLyoqCi0gICAgICogR2V0IHRoZSBpbnRlcnZhbC4KLSAgICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiBpbnRlcnZhbC4KLSAgICAgKi8KLSAgICBpbnQgZ2V0SW50ZXJ2YWwoKSBjb25zdDsKLQotICAgIC8qKgotICAgICAqIHNldCBleHBvcnQgbW9kZS4KLSAgICAgKiBAcGFyYW0gbW9kZSB0aGUgbW9kZSB0eXBlIG9mIGV4cG9ydC4KLSAgICAgKi8KLSAgICB2b2lkIHNldEV4cG9ydE1vZGUoTU9ERSBtb2RlKTsKLQotICAgIC8qKgotICAgICAqIEdldCB0aGUgZXhwb3J0IG1vZGUuCi0gICAgICogQHJldHVybiB0aGUgZXhwb3J0IG1vZGUuCi0gICAgICovCi0gICAgTU9ERSBnZXRFeHBvcnRNb2RlKCkgY29uc3Q7Ci0KLSAgICAvKioKLSAgICAgKiBDb25zdW1lIHRoZSBjb25zdHJhaW50LgotICAgICAqIEByZXR1cm4gdHJ1ZS9mYWxzZSB0byBpbmRpY2F0ZSB3aGV0aGVyIGNvbnN1bWUgc3VjY2VzZnVsbHkgb3Igbm90LgotICAgICAqLwotICAgIGJvb2wgY29uc3VtZSgpOwotCi1QUklWQVRFOgotICAgIGludCBtQ291bnQ7IC8qKjwgdGhlIGNvdW50LiAqLwotICAgIGludCBtVGltZWRDb3VudDsgLyoqPCB0aW1lZCBjb3VudC4gKi8KLSAgICBpbnQgbVRpbWVyOyAvKio8IHRpbWVyIGZvciB0aW1lZCBjb3VudC4gKi8KLSAgICBsb25nIG1TdGFydDsgLyoqPCBzdGFydCB0aW1lLiAqLwotICAgIGxvbmcgbUVuZDsgLyoqPCBlbmQgdGltZS4gKi8KLSAgICBpbnQgbUludGVydmFsOyAvKio8IGludGVydmFsLiAqLwotICAgIGxvbmcgbUFjY3VtdWxhdGVkOyAvKio8IGFjY3VtbGF0ZWQuICovCi0gICAgdmVjdG9yPENvbnRleHQ+IG1TeXN0ZW1MaXN0OyAvKio8IHN5c3RlbSBsaXN0LiAqLwotICAgIE1PREUgbUV4cG9ydDsgLyoqPCBleHBvcnQgbW9kZS4gKi8KLX07Ci0jZW5kaWYKZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvcmlnaHRzL09wZXJhdGlvblBlcm1pc3Npb24uaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvcmlnaHRzL09wZXJhdGlvblBlcm1pc3Npb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjhjYmE3Yi4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL3JpZ2h0cy9PcGVyYXRpb25QZXJtaXNzaW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLSNpZm5kZWYgX09QRVJBVElPTlBFUk1JU1NJT05fSAotI2RlZmluZSBfT1BFUkFUSU9OUEVSTUlTU0lPTl9ICi0KLSNpbmNsdWRlIDxEcm0yQ29tbW9uVHlwZXMuaD4KLSNpbmNsdWRlIDxyaWdodHMvQ29uc3RyYWludC5oPgotCi1jbGFzcyBPcGVyYXRpb25QZXJtaXNzaW9uIHsKLXB1YmxpYzoKLSAgICBlbnVtIE9QRVJBVElPTiB7Tk9ORSwgUExBWSwgRElTUExBWSwgRVhFQ1VURSwgUFJJTlQsIEVYUE9SVCwgQ09NTU9OfTsKLQotICAgIC8qKgotICAgICAqIENvbnN0cnV0b3Igb2YgT3BlcmF0aW9uUGVybWlzc2lvbi4KLSAgICAgKi8KLSAgICBPcGVyYXRpb25QZXJtaXNzaW9uKCk7Ci0KLSAgICAvKioKLSAgICAgKiBDb25zdHJ1dG9yIG9mIE9wZXJhdGlvblBlcm1pc3Npb24uCi0gICAgICogQHBhcmFtIHR5cGUgdGhlIHNwZWNpZmljIG9wZXJhdGlvbiB0eXBlLgotICAgICAqIEBwYXJhbSBjc3QgdGhlIGNvbnN0cmFpbnQgcmVsYXRlZCB3aXRoIG9wZXJhdGlvbiBwZXJtaXNzaW9uLgotICAgICAqLwotICAgIE9wZXJhdGlvblBlcm1pc3Npb24oT1BFUkFUSU9OIHR5cGUsIENvbnN0cmFpbnQqIGNzdD1OVUxMKTsKLQotICAgIC8qKgotICAgICAqIERlc3RydXRvciBvZiBPcGVyYXRpb25QZXJtaXNzaW9uLgotICAgICAqLwotICAgIH5PcGVyYXRpb25QZXJtaXNzaW9uKCk7Ci0KLSAgICAvKioKLSAgICAgKiBTZXQgdGhlIHR5cGUgZm9yIG9wZXJhdGlvbiBwZXJtaXNzaW9uLgotICAgICAqIEBwYXJhbSB0eXBlIHRoZSBzcGVjaWZpYyB0eXBlLgotICAgICAqLwotICAgIHZvaWQgc2V0VHlwZShPUEVSQVRJT04gdHlwZSk7Ci0KLSAgICAvKioKLSAgICAgKiBHZXQgdGhlIHR5cGUgb2Ygb3BlcmF0aW9uIHBlcm1pc3Npb24uCi0gICAgICogQHJldHVybiBvcGVyYXRpb24gdHlwZS4KLSAgICAgKi8KLSAgICBPUEVSQVRJT04gZ2V0VHlwZSgpIGNvbnN0OwotCi0gICAgLyoqCi0gICAgICogQWRkIGNvbnN0cmFpbnQgZm9yIG9wZXJhdGlvbiBwZXJtaXNzaW9uLgotICAgICAqIEBwYXJhbSBjb25zdHJhaW50IHRoZSBjb25zdHJhaW50IHJlbGF0ZWQgd2l0aCBvcGVyYXRpb24gcGVybWlzc2lvbi4KLSAgICAgKi8KLSAgICB2b2lkIGFkZENvbnN0cmFpbnQoQ29uc3RyYWludCogY29uc3RyYWludCk7Ci0KLSAgICAvKioKLSAgICAgKiBBZGQgY29uc3RyYWludCBmb3Igb3BlcmF0aW9uIHBlcm1pc3Npb24uCi0gICAgICogQHJldHVybiBjb25zdHJhaW50IHJlbGF0ZWQgd2l0aCBvcGVyYXRpb24gcGVybWlzc2lvbi4KLSAgICAgKi8KLSAgICBDb25zdHJhaW50KiBnZXRDb25zdHJhaW50KCkgY29uc3Q7Ci0KLVBSSVZBVEU6Ci0gICAgT1BFUkFUSU9OIG1UeXBlOwotICAgIENvbnN0cmFpbnQqIG1Db25zdHJhaW50OwotCi1QUklWQVRFOgotICAgIC8qKgotICAgICAqIERpc2FibGUgdGhlIGFzc2lnbm1lbnQgYmV0d2VlbiBPcGVyYXRpb25QZXJtaXNzaW9ucy4KLSAgICAgKi8KLSAgICBPcGVyYXRpb25QZXJtaXNzaW9uJiBvcGVyYXRvcj0oY29uc3QgT3BlcmF0aW9uUGVybWlzc2lvbiAmb3ApOwotCi0gICAgLyoqCi0gICAgICogRGlzYWJsZSBjb3B5IGNvbnN0cnV0b3IuCi0gICAgICovCi0gICAgT3BlcmF0aW9uUGVybWlzc2lvbihjb25zdCBPcGVyYXRpb25QZXJtaXNzaW9uICZvcCk7Ci19OwotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvcmlnaHRzL1JpZ2h0LmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL3JpZ2h0cy9SaWdodC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNDdlNDg0Li4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvcmlnaHRzL1JpZ2h0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLSNpZm5kZWYgX1JJR0hUX0gKLSNkZWZpbmUgX1JJR0hUX0gKLQotI2luY2x1ZGUgPERybTJDb21tb25UeXBlcy5oPgotI2luY2x1ZGUgPHV2ZWN0b3IuaD4KLSNpbmNsdWRlIDx1c3RyaW5nLmg+Ci0jaW5jbHVkZSA8cmlnaHRzL0NvbnN0cmFpbnQuaD4KLSNpbmNsdWRlIDxyaWdodHMvT3BlcmF0aW9uUGVybWlzc2lvbi5oPgotdXNpbmcgbmFtZXNwYWNlIHVzdGw7Ci0KLWNsYXNzIFJpZ2h0IHsKLXB1YmxpYzoKLSAgICAvKioKLSAgICAgKiBDb25zdHJ1Y3RvciBmb3IgUmlnaHQuCi0gICAgICovCi0gICAgUmlnaHQoKTsKLQotICAgIC8qKgotICAgICAqIERlc3RydWN0b3IgZm9yIFJpZ2h0LgotICAgICAqLwotICAgIH5SaWdodCgpOwotCi0gICAgLyoqCi0gICAgICogQWRkIHRoZSBhc3NldCBpZCByZWxhdGVkIHdpdGggcmlnaHQgaW50byBhc3NldCBuYW1lIGxpc3QuCi0gICAgICogQHBhcmFtIGlkIHRoZSBpZCBvZiB0aGUgYXNzZXQuCi0gICAgICovCi0gICAgdm9pZCBhZGRBc3NldElEKGNvbnN0IHN0cmluZyYgaWQpOwotCi0gICAgLyoqCi0gICAgICogQWRkIGEgb3BlcmF0aW9uIHBlcm1pc3Npb24gaW50byByaWdodCdzIG9wZXJhdGlvbiBwZXJtaXNzaW9uIGxpc3QuCi0gICAgICogQHBhcmFtIG9wIGEgcG9pbnRlciBvZiBvcGVyYXRpb24gcGVybWlzc2lvbi4KLSAgICAgKi8KLSAgICB2b2lkIGFkZE9wZXJhdGlvblBlcm1pc3Npb24oT3BlcmF0aW9uUGVybWlzc2lvbiogb3ApOwotCi0gICAgLyoqCi0gICAgICogR2V0IHRoZSBjb25zdHJhaW50IHJlbGF0ZWQgd2l0aCBvcGVyYXRpb24gdHlwZS4KLSAgICAgKiBAcGFyYW0gdHlwZSB0aGUgc3BlY2lmaWMgb3BlcmF0aW9uIHR5cGUuCi0gICAgICogQHJldHVybiBOVUxMIGlmIG5vdCBmb3VuZCBvdGhlcndpc2UgdGhlIGNvbnN0cmFpbnQgcG9pbnRlci4KLSAgICAgKi8KLSAgICBDb25zdHJhaW50KiBnZXRDb25zdHJhaW50KE9wZXJhdGlvblBlcm1pc3Npb246Ok9QRVJBVElPTiB0eXBlKTsKLQotICAgIC8qKgotICAgICAqIFRlc3Qgd2hldGhlciB0aGUgcmlnaHQgaGFzIHNwZWNpZmljIG9wZXJhdGlvbiB0eXBlIG9yIG5vdC4KLSAgICAgKiBAcGFyYW0gdHlwZSB0aGUgc3BlY2lmaWMgdHlwZS4KLSAgICAgKiBAcmV0dXJuIHRydWUvZmFsc2UgdG8gaW5kaWNhdGUgdGhlIHJlc3VsdC4KLSAgICAgKi8KLSAgICBib29sIGNoZWNrUGVybWlzc2lvbihPcGVyYXRpb25QZXJtaXNzaW9uOjpPUEVSQVRJT04gdHlwZSk7Ci0KLXB1YmxpYzoKLSAgICB2ZWN0b3I8c3RyaW5nPiBtQXNzZXROYW1lTGlzdDsKLQotUFJJVkFURToKLSAgICB2ZWN0b3I8T3BlcmF0aW9uUGVybWlzc2lvbio+IG1PcExpc3Q7Ci0KLVBSSVZBVEU6Ci0KLSAgICAvKioKLSAgICAgKiBEaXNhYmxlIHRoZSBhc3NpZ25tZW50IGJldHdlZW4gcmlnaHRzLgotICAgICAqLwotICAgIFJpZ2h0JiBvcGVyYXRvcj0oY29uc3QgUmlnaHQmIHJpZ2h0KTsKLQotICAgIC8qKgotICAgICAqIERpc2FibGUgY29weSBjb25zdHJ1Y3Rvci4KLSAgICAgKi8KLSAgICBSaWdodChjb25zdCBSaWdodCYgcmlnaHQpOwotICAgfTsKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL3JpZ2h0cy9Sby5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS9yaWdodHMvUm8uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGJmMGE5Ny4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL3JpZ2h0cy9Sby5oCisrKyAvZGV2L251bGwKQEAgLTEsMjE0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi0jaWZuZGVmIF9ST19IXwotI2RlZmluZSBfUk9fSF8KLQotI2luY2x1ZGUgPHJpZ2h0cy9Bc3NldC5oPgotI2luY2x1ZGUgPHJpZ2h0cy9SaWdodC5oPgotI2luY2x1ZGUgPHV2ZWN0b3IuaD4KLSNpbmNsdWRlIDx1c3RyaW5nLmg+Ci0jaW5jbHVkZSA8c2lzdHJlYW0uaD4KLXVzaW5nIG5hbWVzcGFjZSB1c3RsOwotCi1jbGFzcyBBc3NldDsKLWNsYXNzIFhNTERvY3VtZW50SW1wbDsKLWNsYXNzIFhNTEVsZW1lbnRJbXBsOwotY2xhc3MgTm9kZUltcGw7Ci0KLWNsYXNzIFJvIHsKLXB1YmxpYzoKLSAgICBlbnVtIEVSUkNPREUgeyBST19OVUxMX1NUUkVBTSwgUk9fRVJSX0JBRF9YTUwsIFJPX09LLCBST19CQUQgfTsKLQotICAgIC8qKgotICAgICAqIENvbnN0cnVjdG9yIGZvciBSby4KLSAgICAgKi8KLSAgICBSbygpOwotCi0gICAgLyoqCi0gICAgICogRGVzdHJ1Y3RvciBmb3IgUm8uCi0gICAgICovCi0gICAgflJvKCk7Ci0KLSAgICAvKioKLSAgICAgKiBTZXQgaWQgZm9yIFJvLgotICAgICAqIEBwYXJhbSBpZCB0aGUgaWQgb2YgUm8uCi0gICAgICovCi0gICAgdm9pZCBzZXRSb0lEKHN0cmluZyAmaWQpOwotCi0gICAgLyoqCi0gICAgICogR2V0IHRoZSBpZCBvZiBSby4KLSAgICAgKiBAcmV0dXJuIHRoZSBpZCBvZiBSby4KLSAgICAgKi8KLSAgICBjb25zdCBzdHJpbmcmIGdldFJvSUQoKSBjb25zdDsKLQotICAgIC8qKgotICAgICAqIFNldCB2ZXJzaW9uIGZvciBSby4KLSAgICAgKi8KLSAgICB2b2lkIHNldFJvVmVyc2lvbihzdHJpbmcgJnZlcnNpb24pOwotCi0gICAgLyoqCi0gICAgICogQWRkIGEgYXNzZXQgaW50byBybydzIGFzc2V0IGxpc3QuCi0gICAgICogQHBhcmFtIGFzc2V0IHRoZSBwb2ludGVyIG9mIGFzc2V0LgotICAgICAqLwotICAgIHZvaWQgYWRkQXNzZXQoQXNzZXQqIGFzc2V0KTsKLQotICAgIC8qKgotICAgICAqIEFkZCBhIHJpZ2h0IGludG8gcm8ncyByaWdodCBsaXN0LgotICAgICAqIEBwYXJhbSByaWdodCB0aGUgcG9pbnRlciBvZiByaWdodC4KLSAgICAgKi8KLSAgICB2b2lkIGFkZFJpZ2h0KFJpZ2h0KiByaWdodCk7Ci0KLSAgICAvKioKLSAgICAgKiBTYXZlIHRoZSBSby4KLSAgICAgKi8KLSAgICBib29sIHNhdmUoKTsKLQotICAgIC8qKgotICAgICAqIFZlcmlmeSB0aGUgUm8uCi0gICAgICovCi0gICAgYm9vbCB2ZXJpZnkoKTsKLQotICAgIC8qKgotICAgICAqIFBhcnNlIHRoZSBybyBmcm9tIHN0cmVhbS4KLSAgICAgKiBAcGFyYW0gcm9TdHJlYW0gdGhlIGlucHV0IHJvIHN0cmVhbS4KLSAgICAgKiBAcmV0dXJuIFJPX09LIGlmIHBhcnNlIHN1Y2Nlc3NmdWxseSBvdGhlcndpc2UgcmV0dXJuIGVycm9yIGNvZGUuCi0gICAgICovCi0gICAgRVJSQ09ERSBwYXJzZShpc3RyaW5nc3RyZWFtICpyb1N0cmVhbSk7Ci0KLSAgICAvKioKLSAgICAgKiBDaGVjayB0aGUgcGVybWlzc2lvbiBvZiB0aGUgY29udGVudC4KLSAgICAgKiBAcGFyYW0gdHlwZSB0aGUgb3BlcmF0aW9uIHR5cGUuCi0gICAgICogQHBhcmFtIGNvbnRlbnRJRCB0aGUgc3BlY2lmaWMgY29udGVudElELgotICAgICAqIEByZXR1cm4gdHJ1ZS9mYWxzZSB0byBpbmRpY2F0ZSByZXN1bHQuCi0gICAgICovCi0gICAgYm9vbCBjaGVja1Blcm1pc3Npb24oT3BlcmF0aW9uUGVybWlzc2lvbjo6T1BFUkFUSU9OIHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RyaW5nJiBjb250ZW50SUQpOwotCi0gICAgLyoqCi0gICAgICogQ29uc3VtZSB0aGUgcmlnaHQgcmVsYXRlZCB0byBjb250ZW50LgotICAgICAqIEBwYXJhbSB0eXBlIHRoZSBvcGVyYXRpb24gdHlwZS4KLSAgICAgKiBAcGFyYW0gY29udGVudElEIHRoZSBzcGVjaWZpYyBjb250ZW50SUQuCi0gICAgICogQHJldHVybiB0aGUgc3RhdHVzIG9mIGNvbnN1bWUuCi0gICAgICovCi0gICAgRVJSQ09ERSBjb25zdW1lKE9wZXJhdGlvblBlcm1pc3Npb246Ok9QRVJBVElPTiB0eXBlLAotICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJpbmcmIGNvbnRlbnRJRCk7Ci0KLSAgICAvKioKLSAgICAgKiBHZXQgQ0VLIG9mIGNvbnRlbnQuCi0gICAgICogQHBhcmFtIGNvbnRlbnRJRCB0aGUgc3BlY2lmaWMgY29udGVudCBpZC4KLSAgICAgKiBAcmV0dXJuICIiIGlmIG5vdCBmb3VuZCBvdGhlcndpc2UgcmV0dXJuIENFSy4KLSAgICAgKi8KLSAgICBzdHJpbmcgZ2V0Q29udGVudENlayhjb25zdCBzdHJpbmcmIGNvbnRlbnRJRCk7Ci0KLSAgICAvKioKLSAgICAgKiBHZXQgRGlnZXN0IHZhbHVlIG9mIGNvbnRlbnQuCi0gICAgICogQHBhcmFtIGNvbnRlbnRJRCB0aGUgc3BlY2lmaWMgY29udGVudCBpZC4KLSAgICAgKiBAcmV0dXJuICIiIGlmIG5vdCBmb3VuZCBvdGhlcndpc2UgcmV0dXJuIGRpZ2VzdCB2YWx1ZS4KLSAgICAgKi8KLSAgICBzdHJpbmcgZ2V0Q29udGVudEhhc2goY29uc3Qgc3RyaW5nJiBjb250ZW50SUQpOwotCi1QUklWQVRFOgotICAgIC8qKgotICAgICAqIEhhbmRsZSB0aGUgeG1sIGRvbSBkb2N1bWVudC4KLSAgICAgKiBAcGFyYW0gZG9jIHRoZSBwb2ludGVyIHRvIHRoZSBkb20gZG9jdW1lbnQuCi0gICAgICogQHJldHVybiB0cnVlL2ZhbHNlIHRvIGluZGljYXRlIHRoZSByZXN1bHQuCi0gICAgICovCi0gICAgYm9vbCBoYW5kbGVEb2N1bWVudChjb25zdCBYTUxEb2N1bWVudEltcGwqIGRvYyk7Ci0KLSAgICAvKioKLSAgICAgKiBIYW5kbGUgdGhlIHhtbCBkb20gbm9kZSB3aGljaCBjb250YWlucyA8cmlnaHQ+IGVsZW1lbnQuCi0gICAgICogQHBhcmFtIGN1ck5vZGUgdGhlIGRvbSBub2RlIHdoaWNoIGNvbnRhaW5zIDxyaWdodD4gZWxlbWVudC4KLSAgICAgKiBAcmV0dXJuIHRydWUvZmFsc2UgdG8gaW5kaWNhdGUgdGhlIHJlc3VsdC4KLSAgICAgKi8KLSAgICBib29sIGhhbmRsZVJpZ2h0cyhjb25zdCBOb2RlSW1wbCAqY3VyTm9kZSk7Ci0KLSAgICAvKioKLSAgICAgKiBIYW5kbGUgdGhlIHhtbCBkb20gbm9kZSB3aGljaCBjb250YWlucyB0aGUgPGFncmVlbWVudD4gZWxlbWVudC4KLSAgICAgKiBAcGFyYW0gY3VyTm9kZSB0aGUgZG9tIG5vZGUgd2hpY2ggY29udGFpbnMgPGFncmVlbWVudD4gZWxlbWVudC4KLSAgICAgKiBAcmV0dXJuIHRydWUvZmFsc2UgdG8gaW5kaWNhdGUgdGhlIHJlc3VsdC4KLSAgICAgKi8KLSAgICBib29sIGhhbmRsZUFncmVlbWVudChjb25zdCBOb2RlSW1wbCAqY3VyTm9kZSk7Ci0KLSAgICAvKioKLSAgICAgKiBIYW5kbGUgdGhlIHhtbCBkb20gbm9kZSB3aGljaCBjb250YWlucyB0aGUgPGFzc2V0PiBlbGVtZW50LgotICAgICAqIEBwYXJhbSBjdXJOb2RlIHRoZSBkb20gbm9kZSB3aGljaCBjb250YWlucyA8YXNzZXQ+IGVsZW1lbnQuCi0gICAgICogQHJldHVybiB0cnVlL2ZhbHNlIHRvIGluZGljYXRlIHRoZSByZXN1bHQuCi0gICAgICovCi0gICAgYm9vbCBoYW5kbGVBc3NldChjb25zdCBOb2RlSW1wbCAqY3VyTm9kZSk7Ci0KLSAgICAvKioKLSAgICAgKiBIYW5kbGUgdGhlIHhtbCBkb20gbm9kZSB3aGljaCBjb250YWlucyB0aGUgPHBlcm1pc3Npb24+IGVsZW1lbnQuCi0gICAgICogQHBhcmFtIGN1ck5vZGUgdGhlIGRvbSBub2RlIHdoaWNoIGNvbnRhaW5zIDxwZXJtaXNzaW9uPiBlbGVtZW50LgotICAgICAqIEByZXR1cm4gdHJ1ZS9mYWxzZSB0byBpbmRpY2F0ZSB0aGUgcmVzdWx0LgotICAgICAqLwotICAgIGJvb2wgaGFuZGxlUGVybWlzc2lvbihjb25zdCBOb2RlSW1wbCAqY3VyTm9kZSk7Ci0KLSAgICAvKioKLSAgICAgKiBHZXQgdGhlIGNvbnN0cmFpbnQgaW4geG1sIGRvbSBub2RlLgotICAgICAqIEBwYXJhbSBjdXJOb2RlIHRoZSBkb20gbm9kZSB3aGljaCBjb250YWlucyBjb25zdHJhaW50LgotICAgICAqIEByZXR1cm4gdGhlIGNvbnN0cmFpbnQuCi0gICAgICovCi0gICAgQ29uc3RyYWludCogZ2V0Q29uc3RyYWludChjb25zdCBOb2RlSW1wbCAqY3VyTm9kZSk7Ci0KLSAgICAvKioKLSAgICAgKiBDb252ZXJ0IElTTzg2MDEgdGltZSB0byBsb25nLgotICAgICAqIEBwYXJhbSB0cyB0aGUgc3RyaW5nIHdpdGggSVNPODYwMSB0aW1lLgotICAgICAqIEByZXR1cm4gdGhlIHJlc3VsdCB2YWx1ZS4KLSAgICAgKi8KLSAgICBsb25nIGNvbnZlcnRJU084NjAxRGF0ZVRpbWVUb0xvbmcoY29uc3QgY2hhciogdHMpOwotCi0gICAgLyoqCi0gICAgICogQ29udmVydCBJU084NjAxIHBlcmlvZCB0byBsb25nLgotICAgICAqIEBwYXJhbSB0cyB0aGUgc3RyaW5nIHdpdGggSVNPODYwMSBwZXJpb2QuCi0gICAgICogQHJldHVybiB0aGUgcmVzdWx0IHZhbHVlLgotICAgICAqLwotICAgIGxvbmcgY29udmVydElTTzg2MDFQZXJpb2RUb0xvbmcoY29uc3QgY2hhciogdHMpOwotCi0gICAgLyoqCi0gICAgICogTG9hZCB0aGUgcmlnaHRzIHJlbGF0ZWQgd2l0aCBzcGVjaWZpYyBjb250ZW50aW50byBjb250ZW50IHJpZ2h0cyBsaXN0LgotICAgICAqIEBwYXJhbSBjb250ZW50SUQgdGhlIHNwZWNpZmljIGNvbnRlbnQgaWQuCi0gICAgICovCi0gICAgdm9pZCBsb2FkUmlnaHRzKGNvbnN0IHN0cmluZyYgY29udGVudElEKTsKLQotICAgIC8qKgotICAgICAqIEZyZWUgdGhlIGN1cnJlbnQgY29udGVudCByaWdodHMgbGlzdC4KLSAgICAgKi8KLSAgICB2b2lkIGZyZWVSaWdodHMoKTsKLQotUFJJVkFURToKLSAgICAvKioKLSAgICAgKiBEaXNhYmxlIHRoZSBhc3NpZ25tZW50IGJldHdlZW4gcmlnaHRzLgotICAgICAqLwotICAgIFJvJiBvcGVyYXRvcj0oY29uc3QgUm8mIHJvKTsKLQotICAgIC8qKgotICAgICAqIERpc2FibGUgY29weSBjb25zdHJ1Y3Rvci4KLSAgICAgKi8KLSAgICBSbyhjb25zdCBSbyYgcm8pOwotCi1wdWJsaWM6Ci0gICAgdmVjdG9yPEFzc2V0Kj4gbUFzc2V0TGlzdDsKLSAgICB2ZWN0b3I8UmlnaHQqPiBtUmlnaHRMaXN0OwotCi1QUklWQVRFOgotICAgIHN0cmluZyBtUm9JRDsgLyoqIHRoZSBSbyBpZC4gKi8KLSAgICBzdHJpbmcgbVJvVmVyc2lvbjsgLyoqIHRoZSBSbyB2ZXJzaW9uLiAqLwotICAgIFhNTERvY3VtZW50SW1wbCAqbURvYzsgLyoqPCB0aGUgeG1sIGRvY3VtZW50IGhhbmRsZS4gKi8KLSAgICB2ZWN0b3I8UmlnaHQqPiBtQ29udGVudFJpZ2h0TGlzdDsgLyoqPCB0aGUgcmlnaHQgbGlzdCB0byBzdG9yZSB0aGUgcmVzdWx0IHJlbGF0ZWQgd2l0aCBzcGVjaWZpYyBjb250ZW50LiAqLwotICAgIFJpZ2h0KiBtUHJvcGVyUmlnaHQ7IC8qKjwgdGhlIHJpZ2h0IHRvIGNvbnN1bWUuICovCi19OwotI2VuZGlmCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL3JpZ2h0cy9Sb01hbmFnZXIuaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvcmlnaHRzL1JvTWFuYWdlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MWU5ZWVmLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvcmlnaHRzL1JvTWFuYWdlci5oCisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0jaWZuZGVmIF9ST01BTkFHRVJfSAotI2RlZmluZSBfUk9NQU5BR0VSX0gKLQotI2luY2x1ZGUgPERybTJDb21tb25UeXBlcy5oPgotI2luY2x1ZGUgPHVzdHJpbmcuaD4KLSNpbmNsdWRlIDxyaWdodHMvUm8uaD4KLQotdXNpbmcgbmFtZXNwYWNlIHVzdGw7Ci0KLWNsYXNzIFJvTWFuYWdlciB7Ci0KLXB1YmxpYzoKLSAgICAvKioKLSAgICAgKiBTaW5nbGV0b24gaW5zdGFuY2UgZnVuY3Rpb24uCi0gICAgICogQHJldHVybiB0aGUgc2luZ2xldG9uIHBvaW50ZXIuCi0gICAgICovCi0gICAgc3RhdGljIFJvTWFuYWdlciogSW5zdGFuY2UoKTsKLQotICAgIC8qKgotICAgICAqIERlc3RydWN0b3IgZm9yIEV4cGF0V3JhcHBlci4KLSAgICAgKi8KLSAgICB+Um9NYW5hZ2VyKCk7Ci0KLSAgICAvKioKLSAgICAgKiBJbnN0YWxsIFJvIGZyb20gc3RyZWFtLgotICAgICAqIEBwYXJhbSByb1N0cmVhbSB0aGUgaW5wdXQgcm8gc3RyZWFtLgotICAgICAqIEByZXR1cm4gdGhlIHN0YXR1cyBvZiBpbnN0YWxsYWx0aW9uLgotICAgICAqLwotICAgIFJvOjpFUlJDT0RFIGluc3RhbGxSbyhpc3RyaW5nc3RyZWFtICpyb1N0cmVhbSk7Ci0KLSAgICAvKioKLSAgICAgKiBDaGVjayB3aGV0aGVyIFJvIGluIGNhY2hlIG9yIG5vdC4KLSAgICAgKiBAcGFyYW0gcm9JRCB0aGUgc3BlY2lmaWMgcm9JRC4KLSAgICAgKiBAcmV0dXJuIHRydWUvZmFsc2UgdG8gaW5kaWNhdGUgcmVzdWx0LgotICAgICAqLwotICAgIGJvb2wgY2hlY2tSb0luQ2FjaGUoY29uc3Qgc3RyaW5nJiByb0lEKTsKLQotICAgIC8qKgotICAgICAqIEdldCB0aGUgcm8uCi0gICAgICogQHBhcmFtIHJvSUQgdGhlIHNwZWNpZmljIGlkIG9mIHJvLgotICAgICAqIEByZXR1cm4gTlVMTCBpZiBub3QgZm91bmQgb3RoZXJ3aXNlIHJldHVybiByby4KLSAgICAgKi8KLSAgICBSbyogZ2V0Um8oY29uc3Qgc3RyaW5nJiByb0lEKTsKLQotICAgIC8qKgotICAgICAqIEdldCBhbGwgdGhlIFJvLgotICAgICAqIEByZXR1cm4gcm8gbGlzdC4KLSAgICAgKi8KLSAgICB2ZWN0b3I8Um8qPiBnZXRBbGxSbygpOwotCi0gICAgLyoqCi0gICAgICogR2V0IHJvIHdoaWNoIGNvbnRhaW5lZCByaWdodHMgb2Ygc3BlY2lmaWMgY29udGVudC4KLSAgICAgKiBAcGFyYW0gY29udGVudElEIHRoZSBzcGVjaWZpYyBpZCBvZiBjb250ZW50LgotICAgICAqIEByZXR1cm4gTlVMTCBpZiBub3QgZm91bnQgb3RoZXJ3aXNlIHRoZSByZWxhdGVkIHJvLgotICAgICAqLwotICAgIFJvKiBnZXRSb0J5Q29udGVudElEKGNvbnN0IHN0cmluZyYgY29udGVudElEKTsKLQotICAgIC8qKgotICAgICAqIERlbGV0ZSBSbyBieSBpdHMgaWQuCi0gICAgICogQHBhcmFtIHJvSUQgdGhlIHNwZWNpZmljIHJvSUQuCi0gICAgICogQHJldHVybiB0cnVlL2ZhbHNlIHRvIGluZGljYXRlIHRoZSByZXN1bHQuCi0gICAgICovCi0gICAgYm9vbCBkZWxldGVSbyhjb25zdCBzdHJpbmcmIHJvSUQpOwotCi0KLVBSSVZBVEU6Ci0gICAgLyoqCi0gICAgICogQ29uc3RydWN0b3IgZm9yIFJvTWFuYWdlci4KLSAgICAgKi8KLSAgICBSb01hbmFnZXIoKTsKLQotUFJJVkFURToKLSAgICBzdGF0aWMgUm9NYW5hZ2VyKiBtc0luc3RhbmNlOyAvKio8IHNpbmdsZXRvbiBpbnN0YW5jZSBwb2ludGVyLiAqLwotICAgIHZlY3RvcjxSbyo+IG1Sb0xpc3Q7IC8qKjwgdGhlIHJvIGxpc3QuICovCi19OwotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvcm9hcC9SZWdpc3RyYXRpb24uaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvcm9hcC9SZWdpc3RyYXRpb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGJlZWQ4ZS4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL3JvYXAvUmVnaXN0cmF0aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLSNpZm5kZWYgX1JFR0lTVFJBVElPTl8KLSNkZWZpbmUgX1JFR0lTVFJBVElPTl8KLQotI2luY2x1ZGUgPHJvYXAvUm9hcE1lc3NhZ2VIYW5kbGVyLmg+Ci0KLWNsYXNzIFJlZ2lzdHJhdGlvbiA6IHB1YmxpYyBSb2FwTWVzc2FnZUhhbmRsZXIKLXsKLXB1YmxpYzoKLSAgICAvKioKLSAgICAgKiBDb25zdHJ1Y3RvciBmb3IgUmVnaXN0cmF0aW9uLgotICAgICAqIEBwYXJhbSB0eXBlIHRoZSBhZGRyZXNzIG9mIFJJLgotICAgICAqLwotICAgIFJlZ2lzdHJhdGlvbihzdHJpbmcgcmlBZGRyZXMpOwotCi0gICAgLyoqCi0gICAgICogUmVnaXN0cmF0aW9uIHdpdGggdGhlIFJJLgotICAgICAqIEByZXR1cm4gdGhlIHJlc3VsdCBvZiByZWdpc3RyYXRpb24uCi0gICAgICovCi0gICAgaW50MTZfdCByZWdpc3RlcldpdGhSSSgpOwotCi0gICAgLyoqCi0gICAgICogQ3JlYXRlIG9uZSBzcGVjaWZpZWQgY2xpZW50IG1lc3NhZ2UgYmFzZWQgb24gbWVzc2FnZSB0ZW1wbGF0ZSB4bWwgZmlsZS4KLSAgICAgKiBAcGFyYW0gdHlwZSB0aGUgbWVzc2FnZSB0eXBlLiAgICAgCi0gICAgICogQHJldHVybiB0aGUgcG9pbnRlciBvZiB0aGUgZG9jdW1lbnQgb2JqZWN0IG9mIHRoZSBtZXNzYWdlIGlmIHN1Y2Nlc3NmdWwsb3RoZXJ3aXNlCi0gICAgICogICAgICAgICByZXR1cm4gTlVMTC4KLSAgICAgKi8KLSAgICAgWE1MRG9jdW1lbnRJbXBsKiBjcmVhdGVDbGllbnRNc2coaW50MTZfdCB0eXBlKTsKLX0KLSNlbmRpZiBfUkVHSVNUUkFUSU9OXwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS9yb2FwL1JvYXBNZXNzYWdlSGFuZGxlci5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS9yb2FwL1JvYXBNZXNzYWdlSGFuZGxlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzEwNDdmLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvcm9hcC9Sb2FwTWVzc2FnZUhhbmRsZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotI2lmbmRlZiBfUk9BUE1FU1NBR0VIQURMRVJfCi0jZGVmaW5lIF9ST0FQTUVTU0FHRUhBRExFUl8KLQotI2luY2x1ZGUgPERybTJDb21tb25UeXBlcy5oPgotI2luY2x1ZGUgPHV0aWwveG1sL1hNTERvY3VtZW50SW1wbC5oPgotCi1jbGFzcyBSb2FwTWVzc2FnZUhhbmRsZXIKLXsKLXB1YmxpYzoKLSAgICAvKioKLSAgICAgKiBkZWZpbmUgYWxsIHRoZSBjbGllbnQgbWVzc2FnZSB0eXBlcy4KLSAgICAgKi8KLSAgICAgZW51bSBtc2dUeXBlIHtEZXZpY2VIZWxsbz0xLFJlZ2lzdHJhdGlvblJlcXVlc3QsUk9SZXF1ZXN0fTsKLQotICAgIC8qKgotICAgICAqIENvbnN0cnVjdG9yIGZvciBEcm1NYW5hZ2VyLHVzZWQgdG8gb3BlbiBsb2NhbCBkY2YgZmlsZS4KLSAgICAgKiBAcGFyYW0gdHlwZSB0aGUgbWVzc2FnZSB0eXBlLgotICAgICAqLwotICAgICBSb2FwTWVzc2FnZUhhbmRsZXIoKTsKLQotICAgIC8qKgotICAgICAqIENyZWF0ZSBvbmUgc3BlY2lmaWVkIGNsaWVudCBtZXNzYWdlIGJhc2VkIG9uIG1lc3NhZ2UgdGVtcGxhdGUgeG1sIGZpbGUuCi0gICAgICogQHBhcmFtIHR5cGUgdGhlIG1lc3NhZ2UgdHlwZS4gICAgIAotICAgICAqIEByZXR1cm4gdGhlIHBvaW50ZXIgb2YgdGhlIGRvY3VtZW50IG9iamVjdCBvZiB0aGUgbWVzc2FnZSBpZiBzdWNjZXNzZnVsLG90aGVyd2lzZQotICAgICAqICAgICAgICAgcmV0dXJuIE5VTEwuCi0gICAgICovCi0gICAgIFhNTERvY3VtZW50SW1wbCogY3JlYXRlQ2xpZW50TXNnKG1zZ1R5cGUgdHlwZSk7Ci0KLSAgICAvKioKLSAgICAgKiBIYW5kbGUgcmVjZWl2ZWQgbWVzc2FnZSBmcm9tIFJJLgotICAgICAqIEByZXR1cm4gdHJ1ZSBpZiBzdWNjZXNzZnVsLCBvdGhlcndpc2UgcmV0dXJuIGZhbHNlLgotICAgICAqLwotICAgIGJvb2wgaGFuZGxlUGVlck1zZygpOwotCi0gICAgLyoqCi0gICAgICogU2VuZCB0aGUgY2xpZW50IG1lc3NhZ2UgdG8gUkkKLSAgICAgKi8KLSAgICBpbnQxNl90IHNlbmQoKTsKLQotICAgIC8qKgotICAgICAqIFJlY2VpdmUgbWVzc2FnZSBmcm9tIFJJIGFuZCBwYXJzZSBpdCAKLSAgICAgKiBAcmV0dXJuIHRoZSBwb2ludGVyIG9mIHRoZSBwYXJzZWQgZG9jdW1lbnQuCi0gICAgICovCi0gICAgWE1MRG9jdW1lbnRJbXBsKiByZWNlaXZlKCk7Ci0KLVBST1RFQ1RFRDoKLSAgICBYTUxEb2N1bWVudEltcGwgKiBtRG9jOwotUFJJVkFURToKLSAgICBpbnQxNl90IG1Nc2dUeXBlOwotfTsKLSNlbmRpZiAvL19ST0FQTUVTU0FHRUhBRExFUl8KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvdXRpbC9jcnlwdG8vRHJtQ3J5cHRvLmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL3V0aWwvY3J5cHRvL0RybUNyeXB0by5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMGU3YmMxLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvdXRpbC9jcnlwdG8vRHJtQ3J5cHRvLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyMTEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLSNpZm5kZWYgX0RSTUNSWVBUT19IXwotI2RlZmluZSBfRFJNQ1JZUFRPX0hfCi0KLSNpbmNsdWRlIDxEcm0yQ29tbW9uVHlwZXMuaD4KLSNpbmNsdWRlIDxvcGVuc3NsL2Flcy5oPgotI2luY2x1ZGUgPG9wZW5zc2wvaG1hYy5oPgotI2luY2x1ZGUgPG9wZW5zc2wvc2hhLmg+Ci0jaW5jbHVkZSA8b3BlbnNzbC9yc2EuaD4KLQotLy8gQUVTIGVuY3J5cHQgbW9kZQotdHlwZWRlZiBlbnVtIHtBRVNfMTI4X0NCQyA9IDB4MDEsQUVTXzEyOF9DVFIgPSAweDAyfUFlc01vZGU7Ci0KLS8vIGFlcyBjcnlwdG8gZm9yIGRlY3J5cHQKLWNsYXNzIEFlc0FnZW50Ci17Ci0gICAgcHVibGljOgotICAgICAgICBBZXNBZ2VudChjb25zdCBBZXNNb2RlIG1ldGhvZCxjb25zdCB1bnNpZ25lZCBjaGFyKiBkZWNyeXB0ZWRLZXkpCi0gICAgICAgICAgICA6bW9kZShtZXRob2QpLEFlc0tleShkZWNyeXB0ZWRLZXkpe307Ci0KLSAgICAgICAgLyoqDQotICAgICAgICAgKiBkZWNyeXB0IGRhdGEgdXNpbmcgQUVTLCBub3cgb25seSBzdXBwb3J0IDEyOCBiaXRzIENCQwotICAgICAgICAgKiBccGFyYW0gaXYgICAgICAgMTI4IGJpdHMgaW5pdGlhbGl6YXRpb24gdmVjdG9yL2NvdW50ZXIKLSAgICAgICAgICogICAgICAgICAgICAgICAgIHByZWZpeGluZyB0aGUgY2lwaGVydGV4dA0KLSAgICAgICAgICogXHBhcmFtIGVuY0RhdGEgIGVuY3J5cHRlZCBkYXRhDQotICAgICAgICAgKiBccGFyYW0gZW5jTGVuICAgdGhlIGxlbmd0aCBvZiBlbmNEYXRhDQotICAgICAgICAgKiBccGFyYW0gZGVjRGF0YSAgdGhlIGJ1ZmZlciB0byBzdG9yZSBkZWNyeXB0ZWQgZGF0YQ0KLSAgICAgICAgICogXHBhcmFtIGRlY0xlbiAgIHRoZSBhY3R1YWwgbGVuZ3RoIG9mIGRlY3J5cHRlZCBkYXRhDQotICAgICAgICAgKiBccmV0dXJuDQotICAgICAgICAgKiAgID49ICAgc3VjY2VlZCwgdGhlIHBhZGRpbmcgbGVuZ3RoDQotICAgICAgICAgKiAgIDwgMCAgZmFpbGVkDQotICAgICAgICAgKi8KLSAgICAgICAgaW50MzJfdCBkZWNDb250ZW50KCB1bnNpZ25lZCBjaGFyKiBpdiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBlbmNEYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgZW5jTGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIGRlY0RhdGEpOwotICAgICAgICBzdGF0aWMgY29uc3QgaW50MzJfdCBBRVNfREVDX0ZBSUxFRCA9IC0xOwotCi0gICAgUFJJVkFURToKLSAgICAgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IEFFU19LRVlfQklUUyA9IDEyODsKLSAgICAgICAgY29uc3QgQWVzTW9kZSBtb2RlOwotICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBBZXNLZXk7Ci0KLSAgICBQUklWQVRFOgotICAgICAgICAvLyBnZXQgdGhlIGFjdHVhbCBsZW5ndGggb2YgZGVjcnlwdCBkYXRhDQotICAgICAgICB2b2lkIGRpc2NhcmRQYWRkaW5nQnl0ZSh1bnNpZ25lZCBjaGFyKiBkZWNyeXB0ZWRCdWYsdW5zaWduZWQgbG9uZyogZGVjcnlwdGVkQnVmTGVuKTsNCi19OwotCi0vLyBTaGExIGNyeXB0byBmb3IgaGFzaAotY2xhc3MgU2hhMUFnZW50Ci17Ci0gICAgcHVibGljOgotICAgICAgICAvKioNCi0gICAgICAgICAqIGNvbXB1dGUgaGFzaCB1c2luZyBTaGExDQotICAgICAgICAgKiBccGFyYW0gaW5EYXRhICAgdGhlIGRhdGEgdG8gYmUgaGFzaGVkDQotICAgICAgICAgKiBccGFyYW0gaW5MZW4gICAgdGhlIGxlbmd0aCBvZiBpbkRhdGENCi0gICAgICAgICAqIFxwYXJhbSBvdXRIYXNoICB0aGUgaGFzaCBvZiBpbkRhdGENCi0gICAgICAgICAqIFxyZXR1cm4gICBub25lDQotICAgICAgICAgKi8NCi0gICAgICAgIHZvaWQgY29tcHV0ZUhhc2goIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGluRGF0YSwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgaW5MZW4sDQotICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiBvdXRIYXNoKSBjb25zdDsNCi0NCi0gICAgICAgIC8qKg0KLSAgICAgICAgICogZ2V0IHRoZSBsZW5ndGggb2YgU0hBMSBoYXNoDQotICAgICAgICAgKiBccGFyYW0gIG5vbmUNCi0gICAgICAgICAqIFxyZXR1cm4NCi0gICAgICAgICAqICAgICAgdGhlIGxlbmd0aCBvZiBTSEExIGhhc2gNCi0gICAgICAgICAqLw0KLSAgICAgICAgdW5zaWduZWQgbG9uZyBnZXRTaGFMZW4odm9pZCkgY29uc3QKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIFNIQV9ESUdFU1RfTEVOR1RIOwotICAgICAgICB9DQotfTsKLQotLy8gSG1hYy1TaGExIGNyeXB0byBmb3IgTUFDCi1jbGFzcyBIbWFjU2hhMUFnZW50Ci17Ci0gICAgcHVibGljOgotICAgICAgICBIbWFjU2hhMUFnZW50KGNvbnN0IHVuc2lnbmVkIGNoYXIqIEtleSwgaW50IGtleV9sZW4pCi0gICAgICAgICAgOm1hY0tleShLZXkpLGtleUxlbihrZXlfbGVuKXt9OwotCi0gICAgICAgIC8qKg0KLSAgICAgICAgICogY29tcHV0ZSBNQUMgdXNpbmcgSG1hYy1TaGExDQotICAgICAgICAgKiBccGFyYW0gaW5EYXRhICB0aGUgZGF0YSB0byBiZSBNQUMNCi0gICAgICAgICAqIFxwYXJhbSBpbkxlbiAgIHRoZSBsZW5ndGggb2YgaW5EYXRhDQotICAgICAgICAgKiBccGFyYW0gb3V0TWFjICB0aGUgTUFDIG9mIGluRGF0YQ0KLSAgICAgICAgICogXHJldHVybiAgIG5vbmUNCi0gICAgICAgICAqLw0KLSAgICAgICAgdm9pZCBjb21wdXRlTWFjKCBjb25zdCB1bnNpZ25lZCBjaGFyKiBpbkRhdGEsDQotICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgaW5MZW4sDQotICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIG91dE1hYykgY29uc3Q7DQotDQotICAgICAgICAvKioNCi0gICAgICAgICAqIGdldCB0aGUgbGVuZ3RoIG9mIEhNQUMtU0hBMSBNQUMNCi0gICAgICAgICAqIFxwYXJhbSAgbm9uZQ0KLSAgICAgICAgICogXHJldHVybg0KLSAgICAgICAgICogICAgICB0aGUgbGVuZ3RoIG9mIEhNQUMtU0hBMSBNQUMNCi0gICAgICAgICAqLw0KLSAgICAgICAgdW5zaWduZWQgbG9uZyBnZXRIbWFjTGVuKHZvaWQpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBTSEFfRElHRVNUX0xFTkdUSDsKLSAgICAgICAgfQotDQotICAgIFBSSVZBVEU6Ci0gICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIG1hY0tleTsKLSAgICAgICAgY29uc3QgaW50IGtleUxlbjsKLX07Ci0KLS8vIFJzYSBjcnlwdG8gZm9yIHNpZ25hdHVyZSx2ZXJpZnkgc2lnbmF0dXJlIGFuZCBrZXkgdHJhbnNwb3J0Ci1jbGFzcyBSc2FBZ2VudAotewotICAgIHB1YmxpYzoKLSAgICAgICAgUnNhQWdlbnQoUlNBJiBLZXkpOnJzYUtleShLZXkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJzYVNpemUgPSAodW5zaWduZWQgaW50KVJTQV9zaXplKCZLZXkpOwotICAgICAgICB9OwotCi0gICAgICAgIC8vIHNpZ25hdHVyZSBhbGdvcml0aG0KLSAgICAgICAgdHlwZWRlZiBlbnVtIHtSU0FfUFNTLFJTQV9TSEExfVJzYUFsZzsKLQotICAgICAgICAvKioNCi0gICAgICAgICAqIERvIHNpZ25hdHVyZSB1c2luZyBSU0EtUFNTDQotICAgICAgICAgKiBccGFyYW0gcmF3RGF0YSAgdGhlIGRhdGEgdG8gYmUgc2lnbmF0dXJlDQotICAgICAgICAgKiBccGFyYW0gcmF3TGVuICAgdGhlIGxlbmd0aCBvZiBpbkRhdGENCi0gICAgICAgICAqIFxwYXJhbSBzaWdEYXRhICB0aGUgYnVmZmVyIHRvIHN0b3JlIHRoZSBzaWduYXR1cmUgb2YgcmF3RGF0YQotICAgICAgICAgKiBccGFyYW0gc2lnQWxnICAgc2lnbmF0dXJlIGFsZ29yaXRobQ0KLSAgICAgICAgICogXHJldHVybg0KLSAgICAgICAgICogICB0cnVlICAgc3VjY2VlZA0KLSAgICAgICAgICogICBmYWxzZSAgZmFpbGVkDQotICAgICAgICAgKi8NCi0gICAgICAgIGJvb2wgc2lnbmF0dXJlKCBjb25zdCB1bnNpZ25lZCBjaGFyKiByYXdEYXRhLA0KLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgcmF3TGVuLA0KLSAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIHNpZ0RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSc2FBbGcgc2lnQWxnKTsNCi0NCi0gICAgICAgIC8qKg0KLSAgICAgICAgICogZ2V0IHRoZSBsZW5ndGggb2Ygc2lnbmF0dXJlDQotICAgICAgICAgKiBccGFyYW0gIG5vbmUNCi0gICAgICAgICAqIFxyZXR1cm4NCi0gICAgICAgICAqICAgICAgdGhlIGxlbmd0aCBvZiBzaWduYXR1cmUNCi0gICAgICAgICAqLw0KLSAgICAgICAgdW5zaWduZWQgaW50IGdldFNpZ0xlbih2b2lkKSBjb25zdAotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gcnNhU2l6ZTsKLSAgICAgICAgfQotCi0gICAgICAgIC8qKg0KLSAgICAgICAgICogVmVyaWZ5IHNpZ25hdHVyZSB1c2luZyBSU0EtUFNTDQotICAgICAgICAgKiBccGFyYW0gc2lnRGF0YSAgdGhlIGRhdGEgdG8gYmUgdmVyaWZ5DQotICAgICAgICAgKiBccGFyYW0gc2lnTGVuICAgdGhlIGxlbmd0aCBvZiBzaWdEYXRhCi0gICAgICAgICAqIFxwYXJhbSByYXdEYXRhICB0aGUgZGF0YSBmcm9tIHdoaWNoIHRoZSBzaWdEYXRhIGdlbmVyYXRlZAotICAgICAgICAgKiBccGFyYW0gcmF3TGVuICAgdGhlIGxlbmd0aCBvZiByYXdEYXRhCi0gICAgICAgICAqIFxwYXJhbSBzaWdBbGcgICBzaWduYXR1cmUgYWxnb3JpdGhtDQotICAgICAgICAgKiBccmV0dXJuDQotICAgICAgICAgKiAgIHRydWUgICBzdWNjZWVkDQotICAgICAgICAgKiAgIGZhbHNlICBmYWlsZWQNCi0gICAgICAgICAqLw0KLSAgICAgICAgYm9vbCBzaWdWZXJpZnkodW5zaWduZWQgY2hhciogc2lnRGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBzaWdMZW4sCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIqIHJhd0RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgcmF3TGVuLAotICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBSc2FBbGcgc2lnQWxnKTsKLQ0KLQotICAgICAgICAvKioNCi0gICAgICAgICAqIERlY3J5cHQgZGF0YSB1c2luZyBSU0ENCi0gICAgICAgICAqIFxwYXJhbSBlbmNEYXRhICBlbmNyeXB0ZWQgZGF0YQ0KLSAgICAgICAgICogXHBhcmFtIGVuY0xlbiAgIHRoZSBsZW5ndGggb2YgZW5jRGF0YQ0KLSAgICAgICAgICogXHBhcmFtIGRlY0RhdGEgIHRoZSBidWZmZXIgdG8gc3RvcmUgZGVjcnlwdGVkIGRhdGENCi0gICAgICAgICAqIFxyZXR1cm4NCi0gICAgICAgICAqICAgLTEgIGRlY3J5cHRlZCBmYWlsZWQNCi0gICAgICAgICAqICAgPjAgIHRoZSBhY3R1YWwgbGVuZ3RoIG9mIGRlY3J5cHRlZCBkYXRhDQotICAgICAgICAgKi8NCi0gICAgICAgIGludCBkZWNyeXB0KCBjb25zdCB1bnNpZ25lZCBjaGFyKiBlbmNEYXRhLA0KLSAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGxvbmcgZW5jTGVuLA0KLSAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIGRlY0RhdGEpOw0KLQ0KLSAgICAgICAgLyoqDQotICAgICAgICAgKiBnZXQgdGhlIGxlbmd0aCBvZiBkZWNyeXB0ZWQgZGF0YQ0KLSAgICAgICAgICogXHBhcmFtIG5vbmUNCi0gICAgICAgICAqIFxyZXR1cm4NCi0gICAgICAgICAqICAgICAgdGhlIGxlbmd0aCBvZiBkZWNyeXB0ZWQgZGF0YQ0KLSAgICAgICAgICovDQotICAgICAgICB1bnNpZ25lZCBpbnQgZ2V0RGVjTGVuKHZvaWQpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgcmV0dXJuIHJzYVNpemU7Ci0gICAgICAgIH0KLQ0KLSAgICBQUklWQVRFOgotICAgICAgICBSU0EmIHJzYUtleTsKLSAgICAgICAgdW5zaWduZWQgaW50IHJzYVNpemU7Ci19OwotCi0KLSNlbmRpZiAvKiBfRFJNQ1JZUFRPX0hfICovCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL3V0aWwvZG9tY29yZS9DaGFyYWN0ZXJEYXRhSW1wbC5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS91dGlsL2RvbWNvcmUvQ2hhcmFjdGVyRGF0YUltcGwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDFhYjMxZS4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL3V0aWwvZG9tY29yZS9DaGFyYWN0ZXJEYXRhSW1wbC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotI2lmbmRlZiBfX0NIQVJBQ1RFUl9JTVBMX18NCi0jZGVmaW5lIF9fQ0hBUkFDVEVSX0lNUExfXw0KLQ0KLSNpbmNsdWRlICJOb2RlSW1wbC5oIg0KLSNpbmNsdWRlICJET01TdHJpbmcuaCINCi0NCi1jbGFzcyBDaGFyYWN0ZXJEYXRhSW1wbCA6IHB1YmxpYyBOb2RlSW1wbA0KLXsNCi1wcml2YXRlOg0KLSAgICBET01TdHJpbmcqIGNoYXJEYXRhOw0KLXB1YmxpYzoNCi0NCi0gICAgIC8qKg0KLSAgICAgICogRGVmYXVsdCBDb25zdHJ1Y3RvciBmb3IgQ2hhcmFjdGVyRGF0YUltcGwuDQotICAgICAgKi8NCi0gICAgIENoYXJhY3RlckRhdGFJbXBsKCk7DQotDQotICAgICAvKioNCi0gICAgICAqIENvbnN0cnVjdG9yIGZvciBDaGFyYWN0ZXJEYXRhSW1wbC4NCi0gICAgICAqIEBwYXJhbSBkYXRhIFRoZSBzcGVjaWZ5IGNoYXJhY3RlciBkYXRhLg0KLSAgICAgICovDQotICAgICBDaGFyYWN0ZXJEYXRhSW1wbChjb25zdCBET01TdHJpbmcqIGRhdGEpOw0KLQ0KLSAgICAvKioNCi0gICAgICogVGhlIGNoYXJhY3RlciBkYXRhIG9mIHRoZSBub2RlIHRoYXQgaW1wbGVtZW50cyB0aGlzIGludGVyZmFjZS4gVGhlIERPTQ0KLSAgICAgKiBpbXBsZW1lbnRhdGlvbiBtYXkgbm90IHB1dCBhcmJpdHJhcnkgbGltaXRzIG9uIHRoZSBhbW91bnQgb2YgZGF0YQ0KLSAgICAgKiB0aGF0IG1heSBiZSBzdG9yZWQgaW4gYSA8Y29kZT5DaGFyYWN0ZXJEYXRhPC9jb2RlPiBub2RlLiBIb3dldmVyLA0KLSAgICAgKiBpbXBsZW1lbnRhdGlvbiBsaW1pdHMgbWF5IG1lYW4gdGhhdCB0aGUgZW50aXJldHkgb2YgYSBub2RlJ3MgZGF0YSBtYXkNCi0gICAgICogbm90IGZpdCBpbnRvIGEgc2luZ2xlIDxjb2RlPkRPTVN0cmluZzwvY29kZT4uIEluIHN1Y2ggY2FzZXMsIHRoZSB1c2VyDQotICAgICAqIG1heSBjYWxsIDxjb2RlPnN1YnN0cmluZ0RhdGE8L2NvZGU+IHRvIHJldHJpZXZlIHRoZSBkYXRhIGluDQotICAgICAqIGFwcHJvcHJpYXRlbHkgc2l6ZWQgcGllY2VzLg0KLSAgICAgKiBAZXhjZXB0aW9uIERPTUV4Y2VwdGlvbg0KLSAgICAgKiAgIE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUjogUmFpc2VkIHdoZW4gdGhlIG5vZGUgaXMgcmVhZG9ubHkuDQotICAgICAqIEBleGNlcHRpb24gRE9NRXhjZXB0aW9uDQotICAgICAqICAgRE9NU1RSSU5HX1NJWkVfRVJSOiBSYWlzZWQgd2hlbiBpdCB3b3VsZCByZXR1cm4gbW9yZSBjaGFyYWN0ZXJzIHRoYW4NCi0gICAgICogICBmaXQgaW4gYSA8Y29kZT5ET01TdHJpbmc8L2NvZGU+IHZhcmlhYmxlIG9uIHRoZSBpbXBsZW1lbnRhdGlvbg0KLSAgICAgKiAgIHBsYXRmb3JtLg0KLSAgICAgKiBAcmV0dXJuIHRoZSBjaGFyYWN0ZXIgZGF0YS4NCi0gICAgICovDQotICAgIGNvbnN0IERPTVN0cmluZyogZ2V0RGF0YSgpIGNvbnN0IHRocm93IChET01FeGNlcHRpb24pOw0KLQ0KLSAgICAvKioNCi0gICAgICogVGhlIGNoYXJhY3RlciBkYXRhIG9mIHRoZSBub2RlIHRoYXQgaW1wbGVtZW50cyB0aGlzIGludGVyZmFjZS4gVGhlIERPTQ0KLSAgICAgKiBpbXBsZW1lbnRhdGlvbiBtYXkgbm90IHB1dCBhcmJpdHJhcnkgbGltaXRzIG9uIHRoZSBhbW91bnQgb2YgZGF0YQ0KLSAgICAgKiB0aGF0IG1heSBiZSBzdG9yZWQgaW4gYSA8Y29kZT5DaGFyYWN0ZXJEYXRhPC9jb2RlPiBub2RlLiBIb3dldmVyLA0KLSAgICAgKiBpbXBsZW1lbnRhdGlvbiBsaW1pdHMgbWF5IG1lYW4gdGhhdCB0aGUgZW50aXJldHkgb2YgYSBub2RlJ3MgZGF0YSBtYXkNCi0gICAgICogbm90IGZpdCBpbnRvIGEgc2luZ2xlIDxjb2RlPkRPTVN0cmluZzwvY29kZT4uIEluIHN1Y2ggY2FzZXMsIHRoZSB1c2VyDQotICAgICAqIG1heSBjYWxsIDxjb2RlPnN1YnN0cmluZ0RhdGE8L2NvZGU+IHRvIHJldHJpZXZlIHRoZSBkYXRhIGluDQotICAgICAqIGFwcHJvcHJpYXRlbHkgc2l6ZWQgcGllY2VzLg0KLSAgICAgKiBAcGFyYW0gZGF0YSB0aGUgc3BlY2lmeSBjaGFyYWN0ZXIgZGF0YS4NCi0gICAgICogQGV4Y2VwdGlvbiBET01FeGNlcHRpb24NCi0gICAgICogICBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlI6IFJhaXNlZCB3aGVuIHRoZSBub2RlIGlzIHJlYWRvbmx5Lg0KLSAgICAgKiBAZXhjZXB0aW9uIERPTUV4Y2VwdGlvbg0KLSAgICAgKiAgIERPTVNUUklOR19TSVpFX0VSUjogUmFpc2VkIHdoZW4gaXQgd291bGQgcmV0dXJuIG1vcmUgY2hhcmFjdGVycyB0aGFuDQotICAgICAqICAgZml0IGluIGEgPGNvZGU+RE9NU3RyaW5nPC9jb2RlPiB2YXJpYWJsZSBvbiB0aGUgaW1wbGVtZW50YXRpb24NCi0gICAgICogICBwbGF0Zm9ybS4NCi0gICAgICovDQotICAgIHZvaWQgc2V0RGF0YShjb25zdCBET01TdHJpbmcqIGRhdGEpIHRocm93IChET01FeGNlcHRpb24pOw0KLQ0KLSAgICAvKioNCi0gICAgICogVGhlIG51bWJlciBvZiAxNi1iaXQgdW5pdHMgdGhhdCBhcmUgYXZhaWxhYmxlIHRocm91Z2ggPGNvZGU+ZGF0YTwvY29kZT4NCi0gICAgICogYW5kIHRoZSA8Y29kZT5zdWJzdHJpbmdEYXRhPC9jb2RlPiBtZXRob2QgYmVsb3cuIFRoaXMgbWF5IGhhdmUgdGhlDQotICAgICAqIHZhbHVlIHplcm8sIGkuZS4sIDxjb2RlPkNoYXJhY3RlckRhdGE8L2NvZGU+IG5vZGVzIG1heSBiZSBlbXB0eS4NCi0gICAgICogQHJldHVybiB0aGUgc2l6ZSBvZiBjaGFyYWN0ZXJzIGRhdGEuDQotICAgICAqLw0KLSAgICBpbnQgZ2V0TGVuZ3RoKCkgY29uc3Q7DQotDQotICAgIC8qKg0KLSAgICAgKiBBcHBlbmQgdGhlIHN0cmluZyB0byB0aGUgZW5kIG9mIHRoZSBjaGFyYWN0ZXIgZGF0YSBvZiB0aGUgbm9kZS4gVXBvbg0KLSAgICAgKiBzdWNjZXNzLCA8Y29kZT5kYXRhPC9jb2RlPiBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIGNvbmNhdGVuYXRpb24gb2YNCi0gICAgICogPGNvZGU+ZGF0YTwvY29kZT4gYW5kIHRoZSA8Y29kZT5ET01TdHJpbmc8L2NvZGU+IHNwZWNpZmllZC4NCi0gICAgICogQHBhcmFtIGFyZyBUaGUgPGNvZGU+RE9NU3RyaW5nPC9jb2RlPiB0byBhcHBlbmQuDQotICAgICAqIEBleGNlcHRpb24gRE9NRXhjZXB0aW9uDQotICAgICAqICAgTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSOiBSYWlzZWQgaWYgdGhpcyBub2RlIGlzIHJlYWRvbmx5Lg0KLSAgICAgKi8NCi0gICAgdm9pZCBhcHBlbmREYXRhKGNvbnN0IERPTVN0cmluZyogYXJnKSB0aHJvdyhET01FeGNlcHRpb24pOw0KLQ0KLSAgICAvKiogT3ZlcnJpZGUgZ2V0Tm9kZVZhbHVlKCkgbWV0aG9kIGluIE5vZGVJbXBsLmguKi8NCi0gICAgY29uc3QgRE9NU3RyaW5nKiBnZXROb2RlVmFsdWUoKSBjb25zdCB0aHJvdyhET01FeGNlcHRpb24pOw0KLQ0KLSAgICAvKiogT3ZlcnJpZGUgc2V0Tm9kZVZhbHVlKCkgbWV0aG9kIGluIE5vZGVJbXBsLmggKi8NCi0gICAgdm9pZCBzZXROb2RlVmFsdWUoRE9NU3RyaW5nKiBub2RlVmFsdWUpIHRocm93KERPTUV4Y2VwdGlvbik7DQotDQotICAgIH5DaGFyYWN0ZXJEYXRhSW1wbCgpOw0KLX07DQotI2VuZGlmIC8qX19DSEFSQUNURVJfSU1QTF9fKi8NCi0NCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL3V0aWwvZG9tY29yZS9ET01FeGNlcHRpb24uaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvdXRpbC9kb21jb3JlL0RPTUV4Y2VwdGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MTY1MTliLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvdXRpbC9kb21jb3JlL0RPTUV4Y2VwdGlvbi5oCisrKyAvZGV2L251bGwKQEAgLTEsMTU1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotI2lmbmRlZiBfX0RPTV9FWENFUFRJT05fXw0KLSNkZWZpbmUgX19ET01fRVhDRVBUSU9OX18NCi0NCi0jaW5jbHVkZSA8dWV4Y2VwdGlvbi5oPg0KLXVzaW5nIG5hbWVzcGFjZSB1c3RsOw0KLQ0KLS8qKg0KLSAqIERPTSBvcGVyYXRpb25zIG9ubHkgcmFpc2UgZXhjZXB0aW9ucyBpbiAiZXhjZXB0aW9uYWwiIGNpcmN1bXN0YW5jZXMsIGkuZS4sDQotICogd2hlbiBhbiBvcGVyYXRpb24gaXMgaW1wb3NzaWJsZSB0byBwZXJmb3JtIChlaXRoZXIgZm9yIGxvZ2ljYWwgcmVhc29ucywgYmVjYXVzZSBkYXRhIGlzIGxvc3QsDQotICogb3IgYmVjYXVzZSB0aGUgaW1wbGVtZW50YXRpb24gaGFzIGJlY29tZSB1bnN0YWJsZSkuIEluIGdlbmVyYWwsIERPTSBtZXRob2RzIHJldHVybiBzcGVjaWZpYyBlcnJvcg0KLSAqIHZhbHVlcyBpbiBvcmRpbmFyeSBwcm9jZXNzaW5nIHNpdHVhdGlvbnMsIHN1Y2ggYXMgb3V0LW9mLWJvdW5kIGVycm9ycyB3aGVuIHVzaW5nIDxjb2RlPk5vZGVMaXN0PC9jb2RlPi4NCi0gKiA8cD5JbXBsZW1lbnRhdGlvbnMgc2hvdWxkIHJhaXNlIG90aGVyIGV4Y2VwdGlvbnMgdW5kZXIgb3RoZXIgY2lyY3Vtc3RhbmNlcy4gRm9yIGV4YW1wbGUsIGltcGxlbWVudGF0aW9ucw0KLSAqIHNob3VsZCByYWlzZSBhbiBpbXBsZW1lbnRhdGlvbi1kZXBlbmRlbnQgZXhjZXB0aW9uIGlmIGEgbnVsbCBhcmd1bWVudCBpcyBwYXNzZWQuDQotICogU29tZSBsYW5ndWFnZXMgYW5kIG9iamVjdCBzeXN0ZW1zIGRvIG5vdCBzdXBwb3J0IHRoZSBjb25jZXB0IG9mIGV4Y2VwdGlvbnMuDQotICogRm9yIHN1Y2ggc3lzdGVtcywgZXJyb3IgY29uZGl0aW9ucyBtYXkgYmUgaW5kaWNhdGVkIHVzaW5nIG5hdGl2ZSBlcnJvciByZXBvcnRpbmcgbWVjaGFuaXNtcy4NCi0gKiBGb3Igc29tZSBiaW5kaW5ncywgZm9yIGV4YW1wbGUsIG1ldGhvZHMgbWF5IHJldHVybiBlcnJvciBjb2RlcyBzaW1pbGFyIHRvIHRob3NlIGxpc3RlZCBpbiB0aGUgY29ycmVzcG9uZGluZw0KLSAqIG1ldGhvZCBkZXNjcmlwdGlvbnMuDQotICovDQotY2xhc3MgRE9NRXhjZXB0aW9uIDogcHVibGljIGV4Y2VwdGlvbiB7DQotDQotIHByaXZhdGU6DQotICAgICAgICBzaG9ydCBjb2RlOw0KLSBwdWJsaWM6DQotICAgICAgICBET01FeGNlcHRpb24oc2hvcnQgY29kZSkNCi0gICAgICAgIHsNCi0gICAgICAgICAgICB0aGlzLT5jb2RlID0gY29kZTsNCi0gICAgICAgIH0NCi0gcHVibGljOg0KLQ0KLSAgICAgICAgZW51bSBFeGNlcHRpb25SZWFzb24gew0KLSAgICAgICAgICAgLyoqDQotICAgICAgICAgICAgKiBJZiBpbmRleCBvciBzaXplIGlzIG5lZ2F0aXZlLCBvciBncmVhdGVyIHRoYW4gdGhlIGFsbG93ZWQgdmFsdWUNCi0gICAgICAgICAgICAqLw0KLSAgICAgICAgICAgIElOREVYX1NJWkVfRVJSID0gMSwNCi0NCi0gICAgICAgICAgICAvKioNCi0gICAgICAgICAgICAgKiBJZiB0aGUgc3BlY2lmaWVkIHJhbmdlIG9mIHRleHQgZG9lcyBub3QgZml0IGludG8gYSBET01TdHJpbmcNCi0gICAgICAgICAgICAgKiBAc2luY2UgaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMC9SRUMtRE9NLUxldmVsLTItQ29yZS0yMDAwMTExMy9jb3JlLmh0bWwNCi0gICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICBET01TVFJJTkdfU0laRV9FUlIgPSAyLA0KLSAgICAgICAgICAgIC8qKg0KLSAgICAgICAgICAgICAqIElmIGFueSBub2RlIGlzIGluc2VydGVkIHNvbWV3aGVyZSBpdCBkb2Vzbid0IGJlbG9uZw0KLSAgICAgICAgICAgICAqIEBzaW5jZSBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAwL1JFQy1ET00tTGV2ZWwtMi1Db3JlLTIwMDAxMTEzL2NvcmUuaHRtbA0KLSAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgIEhJRVJBUkNIWV9SRVFVRVNUX0VSUiA9IDMsDQotDQotICAgICAgICAgICAgLyoqDQotICAgICAgICAgICAgICogSWYgYSBub2RlIGlzIHVzZWQgaW4gYSBkaWZmZXJlbnQgZG9jdW1lbnQgdGhhbiB0aGUgb25lIHRoYXQgY3JlYXRlZCBpdA0KLSAgICAgICAgICAgICAqICh0aGF0IGRvZXNuJ3Qgc3VwcG9ydCBpdCkNCi0gICAgICAgICAgICAgKiBAc2luY2UgaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMC9SRUMtRE9NLUxldmVsLTItQ29yZS0yMDAwMTExMy9jb3JlLmh0bWwNCi0gICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICBXUk9OR19ET0NVTUVOVF9FUlIgPSA0LA0KLQ0KLSAgICAgICAgICAgIC8qKg0KLSAgICAgICAgICAgICAqIElmIGFuIGludmFsaWQgb3IgaWxsZWdhbCBjaGFyYWN0ZXIgaXMgc3BlY2lmaWVkLCBzdWNoIGFzIGluIGEgbmFtZS4gU2VlDQotICAgICAgICAgICAgICogcHJvZHVjdGlvbiAyIGluIHRoZSBYTUwgc3BlY2lmaWNhdGlvbiBmb3IgdGhlIGRlZmluaXRpb24gb2YgYSBsZWdhbA0KLSAgICAgICAgICAgICAqIGNoYXJhY3RlciwgYW5kIHByb2R1Y3Rpb24gNSBmb3IgdGhlIGRlZmluaXRpb24gb2YgYSBsZWdhbCBuYW1lDQotICAgICAgICAgICAgICogY2hhcmFjdGVyLg0KLSAgICAgICAgICAgICAqIEBzaW5jZSBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAwL1JFQy1ET00tTGV2ZWwtMi1Db3JlLTIwMDAxMTEzL2NvcmUuaHRtbA0KLSAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgIElOVkFMSURfQ0hBUkFDVEVSX0VSUiA9IDUsDQotDQotICAgICAgICAgICAgLyoqDQotICAgICAgICAgICAgICogSWYgZGF0YSBpcyBzcGVjaWZpZWQgZm9yIGEgbm9kZSB3aGljaCBkb2VzIG5vdCBzdXBwb3J0IGRhdGENCi0gICAgICAgICAgICAgKiBAc2luY2UgaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMC9SRUMtRE9NLUxldmVsLTItQ29yZS0yMDAwMTExMy9jb3JlLmh0bWwNCi0gICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICBOT19EQVRBX0FMTE9XRURfRVJSID0gNiwNCi0NCi0gICAgICAgICAgICAvKioNCi0gICAgICAgICAgICAgKiBJZiBhbiBhdHRlbXB0IGlzIG1hZGUgdG8gbW9kaWZ5IGFuIG9iamVjdCB3aGVyZSBtb2RpZmljYXRpb25zIGFyZSBub3QNCi0gICAgICAgICAgICAgKiBhbGxvd2VkDQotICAgICAgICAgICAgICogQHNpbmNlIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDAvUkVDLURPTS1MZXZlbC0yLUNvcmUtMjAwMDExMTMvY29yZS5odG1sDQotICAgICAgICAgICAgICovDQotICAgICAgICAgICAgTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSID0gNywNCi0NCi0gICAgICAgICAgICAvKioNCi0gICAgICAgICAgICAgKiBJZiBhbiBhdHRlbXB0IGlzIG1hZGUgdG8gcmVmZXJlbmNlIGEgbm9kZSBpbiBhIGNvbnRleHQgd2hlcmUgaXQgZG9lcw0KLSAgICAgICAgICAgICAqIG5vdCBleGlzdA0KLSAgICAgICAgICAgICAqIEBzaW5jZSBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAwL1JFQy1ET00tTGV2ZWwtMi1Db3JlLTIwMDAxMTEzL2NvcmUuaHRtbA0KLSAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgIE5PVF9GT1VORF9FUlIgPSA4LA0KLQ0KLSAgICAgICAgICAgIC8qKg0KLSAgICAgICAgICAgICAqIElmIHRoZSBpbXBsZW1lbnRhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IHRoZSByZXF1ZXN0ZWQgdHlwZSBvZiBvYmplY3Qgb3INCi0gICAgICAgICAgICAgKiBvcGVyYXRpb24uDQotICAgICAgICAgICAgICogQHNpbmNlIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDAvUkVDLURPTS1MZXZlbC0yLUNvcmUtMjAwMDExMTMvY29yZS5odG1sDQotICAgICAgICAgICAgICovDQotICAgICAgICAgICAgTk9UX1NVUFBPUlRFRF9FUlIgPSA5LA0KLQ0KLSAgICAgICAgICAgIC8qKg0KLSAgICAgICAgICAgICAqIElmIGFuIGF0dGVtcHQgaXMgbWFkZSB0byBhZGQgYW4gYXR0cmlidXRlIHRoYXQgaXMgYWxyZWFkeSBpbiB1c2UNCi0gICAgICAgICAgICAgKiBlbHNld2hlcmUNCi0gICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICBJTlVTRV9BVFRSSUJVVEVfRVJSID0gMTAsDQotDQotICAgICAgICAgICAgLyoqDQotICAgICAgICAgICAgICogSWYgYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIHVzZSBhbiBvYmplY3QgdGhhdCBpcyBub3QsIG9yIGlzIG5vIGxvbmdlciwNCi0gICAgICAgICAgICAgKiB1c2FibGUuDQotICAgICAgICAgICAgICogQHNpbmNlIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDAvUkVDLURPTS1MZXZlbC0yLUNvcmUtMjAwMDExMTMvY29yZS5odG1sDQotICAgICAgICAgICAgICovDQotICAgICAgICAgICAgSU5WQUxJRF9TVEFURV9FUlIgPSAxMSwNCi0NCi0gICAgICAgICAgICAvKioNCi0gICAgICAgICAgICAgKiBJZiBhbiBpbnZhbGlkIG9yIGlsbGVnYWwgc3RyaW5nIGlzIHNwZWNpZmllZC4NCi0gICAgICAgICAgICAgKiBAc2luY2UgaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMC9SRUMtRE9NLUxldmVsLTItQ29yZS0yMDAwMTExMy9jb3JlLmh0bWwNCi0gICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICBTWU5UQVhfRVJSID0gMTIsDQotDQotICAgICAgICAgICAgLyoqDQotICAgICAgICAgICAgICogSWYgYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIG1vZGlmeSB0aGUgdHlwZSBvZiB0aGUgdW5kZXJseWluZyBvYmplY3QuDQotICAgICAgICAgICAgICogQHNpbmNlIGh0dHA6Ly93d3cudzMub3JnL1RSLzIwMDAvUkVDLURPTS1MZXZlbC0yLUNvcmUtMjAwMDExMTMvY29yZS5odG1sDQotICAgICAgICAgICAgICovDQotICAgICAgICAgICAgSU5WQUxJRF9NT0RJRklDQVRJT05fRVJSID0gMTMsDQotDQotICAgICAgICAgICAgLyoqDQotICAgICAgICAgICAgICogSWYgYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIGNyZWF0ZSBvciBjaGFuZ2UgYW4gb2JqZWN0IGluIGEgd2F5IHdoaWNoIGlzDQotICAgICAgICAgICAgICogaW5jb3JyZWN0IHdpdGggcmVnYXJkIHRvIG5hbWVzcGFjZXMuDQotICAgICAgICAgICAgICogQHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi8yMDAwL1JFQy1ET00tTGV2ZWwtMi1Db3JlLTIwMDAxMTEzL2NvcmUuaHRtbA0KLSAgICAgICAgICAgICAqLw0KLSAgICAgICAgICAgIE5BTUVTUEFDRV9FUlIgPSAxNCwNCi0NCi0gICAgICAgICAgICAvKioNCi0gICAgICAgICAgICAgKiBJZiBhIHBhcmFtZXRlciBvciBhbiBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBieSB0aGUgdW5kZXJseWluZw0KLSAgICAgICAgICAgICAqIG9iamVjdC4NCi0gICAgICAgICAgICAgKiBAc2luY2UgaHR0cDovL3d3dy53My5vcmcvVFIvMjAwMC9SRUMtRE9NLUxldmVsLTItQ29yZS0yMDAwMTExMy9jb3JlLmh0bWwNCi0gICAgICAgICAgICAgKi8NCi0gICAgICAgICAgICBJTlZBTElEX0FDQ0VTU19FUlIgPSAxNSwNCi0gICAgICAgIH07DQotcHVibGljOg0KLSAgICAgICAgLyoqDQotICAgICAgICAgKiBSZXR1cm4gdGhlIGV4Y2VwdGlvbiByZWFzb24uDQotICAgICAgICAgKiBAcmV0dXJuIHRoZSBleGNlcHRpb24gcmVhc29uLg0KLSAgICAgICAgICovDQotICAgICAgICBzaG9ydCBnZXRDb2RlKCkgY29uc3QNCi0gICAgICAgIHsNCi0gICAgICAgICAgICByZXR1cm4gY29kZTsNCi0gICAgICAgIH0NCi19Ow0KLSNlbmRpZiAvKl9fRE9NRVhDRVBUSU9OX18qLw0KLQ0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvdXRpbC9kb21jb3JlL0RPTVN0cmluZy5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS91dGlsL2RvbWNvcmUvRE9NU3RyaW5nLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2ZjJiMTQuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS91dGlsL2RvbWNvcmUvRE9NU3RyaW5nLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLSNpZm5kZWYgX19ET01fU1RSSU5HX0hfXw0KLSNkZWZpbmUgX19ET01fU1RSSU5HX0hfXw0KLQ0KLSNpbmNsdWRlIDx1c3RyaW5nLmg+DQotdXNpbmcgbmFtZXNwYWNlIHVzdGw7DQotdHlwZWRlZiBzdHJpbmcgRE9NU3RyaW5nOw0KLQ0KLWNvbnN0IERPTVN0cmluZyBlbXB0eVN0cmluZyA9IERPTVN0cmluZygiIik7DQotDQotI2VuZGlmIC8qX19ET01fU1RSSU5HX0hfKi8NCi0NCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL3V0aWwvZG9tY29yZS9Eb2N1bWVudEltcGwuaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvdXRpbC9kb21jb3JlL0RvY3VtZW50SW1wbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMDAzZTJhLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvdXRpbC9kb21jb3JlL0RvY3VtZW50SW1wbC5oCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS91dGlsL2RvbWNvcmUvRWxlbWVudEltcGwuaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvdXRpbC9kb21jb3JlL0VsZW1lbnRJbXBsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiMGJjNDUuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS91dGlsL2RvbWNvcmUvRWxlbWVudEltcGwuaAorKysgL2Rldi9udWxsCkBAIC0xLDE0NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8NCi0jaWZuZGVmIF9fRE9NX0VMRU1FTlRfSU1QTF9fDQotI2RlZmluZSBfX0RPTV9FTEVNRU5UX0lNUExfXw0KLSNpbmNsdWRlICJOb2RlSW1wbC5oIg0KLSNpbmNsdWRlICJOb2RlTGlzdEltcGwuaCINCi0jaW5jbHVkZSAiTm9kZVR5cGUuaCINCi0NCi1jbGFzcyBFbGVtZW50SW1wbCA6IHB1YmxpYyBOb2RlSW1wbA0KLXsNCi1wdWJsaWM6DQotDQotICAgICAgICAvKioNCi0gICAgICAgICAqIFRoZSBuYW1lIG9mIHRoZSBlbGVtZW50LiBGb3IgZXhhbXBsZSwgaW46DQotICAgICAgICAgKiA8cHJlPiAmbHQ7ZWxlbWVudEV4YW1wbGUNCi0gICAgICAgICAqIGlkPSJkZW1vIiZndDsgLi4uICZsdDsvZWxlbWVudEV4YW1wbGUmZ3Q7ICwgPC9wcmU+DQotICAgICAgICAgKiAgPGNvZGU+dGFnTmFtZTwvY29kZT4gaGFzDQotICAgICAgICAgKiB0aGUgdmFsdWUgPGNvZGU+ImVsZW1lbnRFeGFtcGxlIjwvY29kZT4uIE5vdGUgdGhhdCB0aGlzIGlzDQotICAgICAgICAgKiBjYXNlLXByZXNlcnZpbmcgaW4gWE1MLCBhcyBhcmUgYWxsIG9mIHRoZSBvcGVyYXRpb25zIG9mIHRoZSBET00uIFRoZQ0KLSAgICAgICAgICogSFRNTCBET00gcmV0dXJucyB0aGUgPGNvZGU+dGFnTmFtZTwvY29kZT4gb2YgYW4gSFRNTCBlbGVtZW50IGluIHRoZQ0KLSAgICAgICAgICogY2Fub25pY2FsIHVwcGVyY2FzZSBmb3JtLCByZWdhcmRsZXNzIG9mIHRoZSBjYXNlIGluIHRoZSBzb3VyY2UgSFRNTA0KLSAgICAgICAgICogZG9jdW1lbnQuDQotICAgICAgICAgKiBAcmV0dXJuIHRoZSBlbGVtZW50J3MgdGFnIG5hbWUuDQotICAgICAgICAgKi8NCi0gICAgICAgIHZpcnR1YWwgY29uc3QgRE9NU3RyaW5nKiBnZXRUYWdOYW1lKCkgY29uc3Q7DQotDQotICAgICAgICAvKioNCi0gICAgICAgICAqIFJldHJpZXZlcyBhbiBhdHRyaWJ1dGUgdmFsdWUgYnkgbmFtZS4NCi0gICAgICAgICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBhdHRyaWJ1dGUgdG8gcmV0cmlldmUuDQotICAgICAgICAgKiBAcmV0dXJuIFRoZSA8Y29kZT5BdHRyPC9jb2RlPiB2YWx1ZSBhcyBhIHN0cmluZywgb3IgdGhlIGVtcHR5IHN0cmluZw0KLSAgICAgICAgICogICBpZiB0aGF0IGF0dHJpYnV0ZSBkb2VzIG5vdCBoYXZlIGEgc3BlY2lmaWVkIG9yIGRlZmF1bHQgdmFsdWUuDQotICAgICAgICAgKi8NCi0gICAgICAgIHZpcnR1YWwgY29uc3QgRE9NU3RyaW5nKiBnZXRBdHRyaWJ1dGUoY29uc3QgRE9NU3RyaW5nKiBuYW1lKSBjb25zdDsNCi0NCi0gICAgICAgIC8qKg0KLSAgICAgICAgICogQWRkcyBhIG5ldyBhdHRyaWJ1dGUuIElmIGFuIGF0dHJpYnV0ZSB3aXRoIHRoYXQgbmFtZSBpcyBhbHJlYWR5IHByZXNlbnQNCi0gICAgICAgICAqIGluIHRoZSBlbGVtZW50LCBpdHMgdmFsdWUgaXMgY2hhbmdlZCB0byBiZSB0aGF0IG9mIHRoZSB2YWx1ZQ0KLSAgICAgICAgICogcGFyYW1ldGVyLiBUaGlzIHZhbHVlIGlzIGEgc2ltcGxlIHN0cmluZzsgaXQgaXMgbm90IHBhcnNlZCBhcyBpdCBpcw0KLSAgICAgICAgICogYmVpbmcgc2V0LiBTbyBhbnkgbWFya3VwIChzdWNoIGFzIHN5bnRheCB0byBiZSByZWNvZ25pemVkIGFzIGFuDQotICAgICAgICAgKiBlbnRpdHkgcmVmZXJlbmNlKSBpcyB0cmVhdGVkIGFzIGxpdGVyYWwgdGV4dCwgYW5kIG5lZWRzIHRvIGJlDQotICAgICAgICAgKiBhcHByb3ByaWF0ZWx5IGVzY2FwZWQgYnkgdGhlIGltcGxlbWVudGF0aW9uIHdoZW4gaXQgaXMgd3JpdHRlbiBvdXQuDQotICAgICAgICAgKiBJbiBvcmRlciB0byBhc3NpZ24gYW4gYXR0cmlidXRlIHZhbHVlIHRoYXQgY29udGFpbnMgZW50aXR5DQotICAgICAgICAgKiByZWZlcmVuY2VzLCB0aGUgdXNlciBtdXN0IGNyZWF0ZSBhbiA8Y29kZT5BdHRyPC9jb2RlPiBub2RlIHBsdXMgYW55DQotICAgICAgICAgKiA8Y29kZT5UZXh0PC9jb2RlPiBhbmQgPGNvZGU+RW50aXR5UmVmZXJlbmNlPC9jb2RlPiBub2RlcywgYnVpbGQgdGhlDQotICAgICAgICAgKiBhcHByb3ByaWF0ZSBzdWJ0cmVlLCBhbmQgdXNlIDxjb2RlPnNldEF0dHJpYnV0ZU5vZGU8L2NvZGU+IHRvIGFzc2lnbg0KLSAgICAgICAgICogaXQgYXMgdGhlIHZhbHVlIG9mIGFuIGF0dHJpYnV0ZS4NCi0gICAgICAgICAqIDxicj5UbyBzZXQgYW4gYXR0cmlidXRlIHdpdGggYSBxdWFsaWZpZWQgbmFtZSBhbmQgbmFtZXNwYWNlIFVSSSwgdXNlDQotICAgICAgICAgKiB0aGUgPGNvZGU+c2V0QXR0cmlidXRlTlM8L2NvZGU+IG1ldGhvZC4NCi0gICAgICAgICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSBhdHRyaWJ1dGUgdG8gY3JlYXRlIG9yIGFsdGVyLg0KLSAgICAgICAgICogQHBhcmFtIHZhbHVlIFZhbHVlIHRvIHNldCBpbiBzdHJpbmcgZm9ybS4NCi0gICAgICAgICAqIEBleGNlcHRpb24gRE9NRXhjZXB0aW9uDQotICAgICAgICAgKiAgIElOVkFMSURfQ0hBUkFDVEVSX0VSUjogUmFpc2VkIGlmIHRoZSBzcGVjaWZpZWQgbmFtZSBjb250YWlucyBhbg0KLSAgICAgICAgICogICBpbGxlZ2FsIGNoYXJhY3Rlci4NCi0gICAgICAgICAqICAgPGJyPk5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUjogUmFpc2VkIGlmIHRoaXMgbm9kZSBpcyByZWFkb25seS4NCi0gICAgICAgICAqLw0KLSAgICAgICAgdmlydHVhbCB2b2lkIHNldEF0dHJpYnV0ZShjb25zdCBET01TdHJpbmcqIG5hbWUsIGNvbnN0IERPTVN0cmluZyogdmFsdWUpIHRocm93IChET01FeGNlcHRpb24pOw0KLQ0KLSAgICAgICAgLyoqDQotICAgICAgICAgKiBSZW1vdmVzIGFuIGF0dHJpYnV0ZSBieSBuYW1lLiBJZiB0aGUgcmVtb3ZlZCBhdHRyaWJ1dGUgaXMga25vd24gdG8gaGF2ZQ0KLSAgICAgICAgICogYSBkZWZhdWx0IHZhbHVlLCBhbiBhdHRyaWJ1dGUgaW1tZWRpYXRlbHkgYXBwZWFycyBjb250YWluaW5nIHRoZQ0KLSAgICAgICAgICogZGVmYXVsdCB2YWx1ZSBhcyB3ZWxsIGFzIHRoZSBjb3JyZXNwb25kaW5nIG5hbWVzcGFjZSBVUkksIGxvY2FsIG5hbWUsDQotICAgICAgICAgKiBhbmQgcHJlZml4IHdoZW4gYXBwbGljYWJsZS4NCi0gICAgICAgICAqIDxicj5UbyByZW1vdmUgYW4gYXR0cmlidXRlIGJ5IGxvY2FsIG5hbWUgYW5kIG5hbWVzcGFjZSBVUkksIHVzZSB0aGUNCi0gICAgICAgICAqIDxjb2RlPnJlbW92ZUF0dHJpYnV0ZU5TPC9jb2RlPiBtZXRob2QuDQotICAgICAgICAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0aGUgYXR0cmlidXRlIHRvIHJlbW92ZS4NCi0gICAgICAgICAqIEBleGNlcHRpb24gRE9NRXhjZXB0aW9uDQotICAgICAgICAgKiAgIE5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUjogUmFpc2VkIGlmIHRoaXMgbm9kZSBpcyByZWFkb25seS4NCi0gICAgICAgICAqLw0KLSAgICAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUF0dHJpYnV0ZShjb25zdCBET01TdHJpbmcqIG5hbWUpIHRocm93IChET01FeGNlcHRpb24pOw0KLQ0KLSAgICAgICAgLyoqDQotICAgICAgICAgKiBSZXR1cm5zIGEgPGNvZGU+Tm9kZUxpc3Q8L2NvZGU+IG9mIGFsbCBkZXNjZW5kYW50IDxjb2RlPkVsZW1lbnRzPC9jb2RlPg0KLSAgICAgICAgICogd2l0aCBhIGdpdmVuIHRhZyBuYW1lLCBpbiB0aGUgb3JkZXIgaW4gd2hpY2ggdGhleSBhcmUgZW5jb3VudGVyZWQgaW4NCi0gICAgICAgICAqIGEgcHJlb3JkZXIgdHJhdmVyc2FsIG9mIHRoaXMgPGNvZGU+RWxlbWVudDwvY29kZT4gdHJlZS4NCi0gICAgICAgICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRoZSB0YWcgdG8gbWF0Y2ggb24uIFRoZSBzcGVjaWFsIHZhbHVlICIqIg0KLSAgICAgICAgICogICBtYXRjaGVzIGFsbCB0YWdzLg0KLSAgICAgICAgICogQHJldHVybiBBIGxpc3Qgb2YgbWF0Y2hpbmcgPGNvZGU+RWxlbWVudDwvY29kZT4gbm9kZXMuDQotICAgICAgICAgKi8NCi0gICAgICAgIE5vZGVMaXN0SW1wbCogZ2V0RWxlbWVudHNCeVRhZ05hbWUoY29uc3QgRE9NU3RyaW5nKiBuYW1lKSBjb25zdDsNCi0NCi0gICAgICAgIC8qKiBPdmVycmlkZSBnZXROb2RlVHlwZSgpIG1ldGhvZCBpbiBOb2RlSW1wbC5oLiovDQotICAgICAgICB2aXJ0dWFsIGJvb2wgaGFzQXR0cmlidXRlcygpIGNvbnN0Ow0KLQ0KLSAgICAgICAgLyoqIE92ZXJyaWRlIGdldE5vZGVOYW1lKCkgbWV0aG9kIGluIE5vZGVJbXBsLmguKi8NCi0gICAgICAgIGNvbnN0IERPTVN0cmluZyogZ2V0Tm9kZU5hbWUoKSBjb25zdDsNCi0NCi0gICAgICAgIC8qKiBPdmVycmlkZSBnZXROb2RlVHlwZSgpIG1ldGhvZCBpbiBOb2RlSW1wbC5oLiovDQotICAgICAgICBOb2RlVHlwZSBnZXROb2RlVHlwZSgpIGNvbnN0Ow0KLQ0KLSAgICAgICAgLyoqIERlZmluaW5nICJjbGljaygpIiBtZXRob2QqLw0KLSAgICAgICAgdmlydHVhbCB2b2lkIGNsaWNrKCl7fQ0KLQ0KLSAgICAgICAgLyoqIERlZmluaW5nICJibHVyKCkiIG1ldGhvZCwqLw0KLSAgICAgICAgdmlydHVhbCB2b2lkIGJsdXIoKXt9DQotDQotICAgICAgICAvKiogRGVmaW5pbmcgImZvY3VzKCkiIG1ldGhvZCovDQotICAgICAgICB2aXJ0dWFsIHZvaWQgZm9jdXMoKXt9DQotDQotICAgICAgICAvKiogRGVmaW5pbmcgImNoYW5nZSgpIiBtZXRob2QqLw0KLSAgICAgICAgdmlydHVhbCB2b2lkIGNoYW5nZSgpe30NCi0NCi0gICAgICAgIC8qKiBEZWZpbmluZyAic2VsZWN0KCkiIG1ldGhvZCovDQotICAgICAgICB2aXJ0dWFsIHZvaWQgc2VsZWN0KCl7fQ0KLQ0KLSAgICAgICAgLyoqIERlZmluaW5nICJvbkNsaWNrKCkiIGV2ZW50IGlucHV0LHRleHRhcmVhLGJ1dHRvbiwgYW5kIGFuY2hvciovDQotICAgICAgICB2aXJ0dWFsIGJvb2wgb25DbGljaygpe3JldHVybiB0cnVlO30NCi0NCi0gICAgICAgIC8qKiBEZWZpbmluZyAib25CbHVyKCkiIGV2ZW50LGZvciBpbnB1dCx0ZXh0YXJlYSxidXR0b24sYW5jaG9yIGFuZCBzZWxlY3QgKi8NCi0gICAgICAgIHZpcnR1YWwgYm9vbCBvbkJsdXIoKXtyZXR1cm4gdHJ1ZTt9DQotDQotICAgICAgICAvKiogRGVmaW5pbmcgIm9uRm9jdXMoKSIgZXZlbnQsZm9yIGlucHV0LHRleHRhcmVhLGJ1dHRvbixhbmNob3IgYW5kIHNlbGVjdCovDQotICAgICAgICB2aXJ0dWFsIGJvb2wgb25Gb2N1cygpe3JldHVybiB0cnVlO30NCi0NCi0gICAgICAgIC8qKiBEZWZpbmluZyAib25DaGFuZ2UoKSIgZXZlbnQsZm9yIGlucHV0LHRleHRhcmVhIGFuZCBzZWxlY3QgdGFnKi8NCi0gICAgICAgIHZpcnR1YWwgYm9vbCBvbkNoYW5nZSgpe3JldHVybiB0cnVlO30NCi0NCi0gICAgICAgIC8qKiBEZWZpbmluZyAib25TZWxlY3QoKSIgZXZlbnQsZm9yIHRleHRhcmVhIGFuZCBpbnB1dCovDQotICAgICAgICB2aXJ0dWFsIGJvb2wgb25TZWxlY3QoKXtyZXR1cm4gdHJ1ZTt9DQotDQotICAgICAgICAvKioNCi0gICAgICAgICAqIHdoZW4gdGhlIGVuZCB0YWcgb2Ygb25lIGVsZW1lbnQgaXMgZm91bmQsdGhpcyBtZXRob2Qgd291bGQgYmUgY2FsbGVkLlRoZSBiYXNpYyBhY3Rpb24gaXMgY2FsbCBzZUNvbXBsZXRlZCgpLg0KLSAgICAgICAgKiovDQotICAgICAgICB2aXJ0dWFsIHZvaWQgZW5kRWxlbWVudCgpIHt9DQotDQotcHJpdmF0ZToNCi0gICAgICAgIC8qKg0KLSAgICAgICAgICogR2V0IGVsZW1lbnRzIHdob3NlIG5hbWUgbWF0Y2ggb24gPGNvZGU+bmFtZTwvY29kZT4sdGhhbiBrZWVwIHRoZXkgaW50byA8Y29kZT5ub2RlTGlzdDwvY29kZT4uDQotICAgICAgICAgKiBAcGFyYW0gbmFtZSAgIFRoZSB0YWcgbmFtZSBvZiB0aGUgZWxlbWVudHMgdG8gbWF0Y2ggb24uDQotICAgICAgICAgKiBAcGFyYW0gbm9kZUxpc3Qga2VlcCBhbGwgdGhlIG1hdGNoZWQgZWxlbWVudC4NCi0gICAgICAgICAqLw0KLSAgICAgICAgdm9pZCBnZXRFbGVtZW50c0J5VGFnTmFtZShjb25zdCBET01TdHJpbmcqIG5hbWUsTm9kZUxpc3RJbXBsKiBub2RlTGlzdCkgY29uc3Q7DQotfTsNCi0jZW5kaWYgLypfX0RPTV9FTEVNRU5UX0lNUExfXyovDQotDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS91dGlsL2RvbWNvcmUvTm9kZUltcGwuaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvdXRpbC9kb21jb3JlL05vZGVJbXBsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwNDIzYzMuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS91dGlsL2RvbWNvcmUvTm9kZUltcGwuaAorKysgL2Rldi9udWxsCkBAIC0xLDI2NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLSNpZm5kZWYgIF9fRE9NX05PREVfSU1QTF9fDQotI2RlZmluZSAgX19ET01fTk9ERV9JTVBMX18NCi0NCi0jaW5jbHVkZSAiRE9NRXhjZXB0aW9uLmgiDQotI2luY2x1ZGUgIk5vZGVUeXBlLmgiDQotI2luY2x1ZGUgIkRPTVN0cmluZy5oIg0KLWNsYXNzIExheW91dEF0dHI7DQotY2xhc3MgRG9jdW1lbnRJbXBsOw0KLWNsYXNzIE5vZGVJbXBsIHsNCi1wcml2YXRlOg0KLSAgICAvKiogVGhlIHBvaW50ZXIgdG8gZmlyc3QgY2hpbGRyZW4gKi8NCi0gICAgTm9kZUltcGwqIGZpcnN0Q2hpbGQ7DQotDQotICAgIC8qKiBUaGUgcG9pbnRlciB0byBsYXN0Q2hpbGQgY2hpbGRyZW4gKi8NCi0gICAgTm9kZUltcGwqIGxhc3RDaGlsZDsNCi0NCi0gICAgLyoqIFRoZSBwb2ludGVyIHRvIHByZXZpb3VzIHNpYmxpbmcgY2hpbGRyZW4gKi8NCi0gICAgTm9kZUltcGwqIHByZXZpb3VzU2libGluZzsNCi0NCi0gICAgLyoqIFRoZSBwb2ludGVyIHRvIG5leHQgc2libGluZyBjaGlsZHJlbiAqLw0KLSAgICBOb2RlSW1wbCogbmV4dFNpYmxpbmc7DQotDQotICAgIC8qKiBUaGUgcG9pbnRlciB0byBwYXJlbnQgKi8NCi0gICAgTm9kZUltcGwqIHBhcmVudDsNCi0NCi0gICAgLyoqIEN1cnJlbnQgbm9kZSdzIGRvY3VtZW50IGNvbnRleHQgKi8NCi0gICAgY29uc3QgRG9jdW1lbnRJbXBsKiBkb2N1bWVudDsNCi0NCi0gICAvKioNCi0gICAgICogQWRkIG5leHQgc2xpYmluZyBub2RlDQotICAgICAqIEBwYXJhbSBub2RlIHRoZSBub2RlIHRvIGJlIGFkZC4NCi0gICAgICovDQotICAgIHZvaWQgYXBwZW5kTmV4dFNpYmxpbmcoTm9kZUltcGwqIG5vZGUpOw0KLQ0KLXB1YmxpYzoNCi0gICAgLyoqDQotICAgICAqIERlZmF1bHQgY29uc3R1Y3Rvci4NCi0gICAgICovDQotICAgIE5vZGVJbXBsKCk6IGZpcnN0Q2hpbGQoTlVMTCksbGFzdENoaWxkKE5VTEwpLHByZXZpb3VzU2libGluZyhOVUxMKSxuZXh0U2libGluZyhOVUxMKSxwYXJlbnQoTlVMTCksZG9jdW1lbnQoTlVMTCkge307DQotDQotICAgIC8qKg0KLSAgICAgKiBTZXQgPGNvZGU+cGFyZW50Tm9kZTwvY29kZT4gYXMgY3VycmVudCBub2RlJ3MgcGFyZW50Lg0KLSAgICAgKg0KLSAgICAgKiBAcGFyYW0gcGFyZW50Tm9kZSBUaGUgc3BlY2lmeSBwYXJlbnQgbm9kZS4NCi0gICAgICovDQotICAgIHZvaWQgc2V0UGFyZW50KE5vZGVJbXBsKiBwYXJlbnROb2RlKTsNCi0NCi0gICAgLyoqDQotICAgICAqIFNldCB0aGUgbm9kZSBpbW1lZGlhdGVseSBmb2xsb3dpbmcgbm9kZS4NCi0gICAgICoNCi0gICAgICogQHBhcmFtIHNpYmxpbmdOb2RlIFRoZSBzcGVjaWFsIG5vZGUgYmUgaW5zZXJ0IGFmdGVyIGN1cnJlbnQgbm9kZS4NCi0gICAgICovDQotICAgIHZvaWQgc2V0TmV4dFNpYmxpbmcoTm9kZUltcGwqIHNpYmxpbmdOb2RlKTsNCi0NCi0gICAgLyoqDQotICAgICAqIFJldHVybnMgdGhlIG5vZGUgaW1tZWRpYXRlbHkgcHJlY2VkaW5nIHRoaXMgbm9kZS4NCi0gICAgICoNCi0gICAgICogQHBhcmFtIHNpYmxpbmdOb2RlIFRoZSBzcGVjaWFsIG5vZGUgYmUgaW5zZXJ0IGJlZm9yZSBjdXJyZW50IG5vZGUuDQotICAgICAqLw0KLSAgICB2b2lkIHNldFByZXZpb3VzU2libGluZyhOb2RlSW1wbCogc2libGluZ05vZGUpOw0KLQ0KLSAgICAvKioNCi0gICAgICogU2V0IDxjb2RlPmNoaWxkTm9kZTwvY29kZT4gYXMgY3VycmVudCBub2RlJ3MgZmlyc3QgY2hpbGRyZW4uIElmIGN1cnJlbnQNCi0gICAgICogbm9kZSBoYXZlIGZpcnN0IGNoaWxkIG5vZGUsaXQgd2lsbCByZXBsYWNlIHdpdGggdGhlIDxjb2RlPmNoaWxkTm9kZTwvY29kZT4uDQotICAgICAqDQotICAgICAqIEBwYXJhbSBjaGlsZE5vZGUgVGhlIHNwZWNpYWwgbm9kZSBiZSBzZXQgYXMgdGhlIGZpcnN0IGNoaWxkcmVuIG5vZGUgb2YgY3VycmVudA0KLSAgICAgKiAgICAgICAgICAgICAgICAgIG5vZGUuDQotICAgICAqLw0KLSAgICB2b2lkIHNldEZpcnN0Q2hpbGQoTm9kZUltcGwqIGNoaWxkTm9kZSk7DQotDQotICAgIC8qKg0KLSAgICAgKiBTZXQgPGNvZGU+Y2hpbGROb2RlPC9jb2RlPiBhcyBjdXJyZW50IG5vZGUncyBsYXN0IGNoaWxkcmVuLiBJZiBjdXJyZW50DQotICAgICAqIG5vZGUgaGF2ZSBsYXN0IGNoaWxkIG5vZGUsaXQgd2lsbCByZXBsYWNlIHdpdGggdGhlIDxjb2RlPmNoaWxkTm9kZTwvY29kZT4uDQotICAgICAqDQotICAgICAqIEBwYXJhbSBjaGlsZE5vZGUgVGhlIHNwZWNpYWwgbm9kZSBiZSBzZXQgYXMgdGhlIGxhc3QgY2hpbGRyZW4gbm9kZSBvZiBjdXJyZW50DQotICAgICAqICAgICAgICAgICAgICAgICAgbm9kZS4NCi0gICAgICovDQotICAgIHZvaWQgc2V0TGFzdENoaWxkKE5vZGVJbXBsKiBjaGlsZE5vZGUpOw0KLQ0KLSAgICAvKioNCi0gICAgICogVGhlIG5hbWUgb2YgdGhpcyBub2RlLCBkZXBlbmRpbmcgb24gaXRzIHR5cGU7DQotICAgICAqIEByZXR1cm4gdGhlIG5vZGUncyBuYW1lLg0KLSAgICAgKi8NCi0gICAgdmlydHVhbCBjb25zdCBET01TdHJpbmcqIGdldE5vZGVOYW1lKCkgY29uc3QgPSAwOw0KLQ0KLSAgICAvKioNCi0gICAgICogVGhlIHZhbHVlIG9mIHRoaXMgbm9kZSwgZGVwZW5kaW5nIG9uIGl0cyB0eXBlOw0KLSAgICAgKiBXaGVuIGl0IGlzIGRlZmluZWQgdG8gYmUgPGNvZGU+bnVsbDwvY29kZT4sIHNldHRpbmcgaXQgaGFzIG5vIGVmZmVjdC4NCi0gICAgICogQHJldHVybiB0aGUgdmFsdWUgb2Ygbm9kZS4NCi0gICAgICogQGV4Y2VwdGlvbiBET01FeGNlcHRpb24NCi0gICAgICogRE9NU1RSSU5HX1NJWkVfRVJSOiBSYWlzZWQgd2hlbiBpdCB3b3VsZCByZXR1cm4gbW9yZSBjaGFyYWN0ZXJzIHRoYW4NCi0gICAgICogZml0IGluIGEgPGNvZGU+RE9NU3RyaW5nPC9jb2RlPiB2YXJpYWJsZSBvbiB0aGUgaW1wbGVtZW50YXRpb24NCi0gICAgICogcGxhdGZvcm0uDQotICAgICAqLw0KLSAgICB2aXJ0dWFsIGNvbnN0IERPTVN0cmluZyogZ2V0Tm9kZVZhbHVlKCkgY29uc3QgdGhyb3cgKERPTUV4Y2VwdGlvbik7DQotDQotICAgIC8qKg0KLSAgICAgKiBTZXQgdGhlIG5vZGUgdmFsdWUuDQotICAgICAqIEBwYXJhbSBub2RlVmFsdWUgdGhlIG5vZGUgdmFsdWUNCi0gICAgICogQGV4Y2VwdGlvbiBET01FeGNlcHRpb24NCi0gICAgICogTk9fTU9ESUZJQ0FUSU9OX0FMTE9XRURfRVJSOiBSYWlzZWQgd2hlbiB0aGUgbm9kZSBpcyByZWFkb25seS4NCi0gICAgICovDQotICAgIHZpcnR1YWwgdm9pZCBzZXROb2RlVmFsdWUoRE9NU3RyaW5nKiBub2RlVmFsdWUpIHRocm93IChET01FeGNlcHRpb24pOw0KLQ0KLSAgICAvKioNCi0gICAgICogQSBjb2RlIHJlcHJlc2VudGluZyB0aGUgdHlwZSBvZiB0aGUgdW5kZXJseWluZyBvYmplY3QsIGFzIGRlZmluZWQgYWJvdmUuDQotICAgICAqIEByZXR1cm4gdGhlIG5vZGUncyB0eXBlLg0KLSAgICAgKi8NCi0gICAgdmlydHVhbCBOb2RlVHlwZSBnZXROb2RlVHlwZSgpIGNvbnN0ID0gMDsNCi0NCi0gICAgLyoqDQotICAgICAqIFJldHVybnMgd2hldGhlciB0aGlzIG5vZGUgKGlmIGl0IGlzIGFuIGVsZW1lbnQpIGhhcyBhbnkgYXR0cmlidXRlcy4NCi0gICAgICogQHJldHVybiA8Y29kZT50cnVlPC9jb2RlPiBpZiB0aGlzIG5vZGUgaGFzIGFueSBhdHRyaWJ1dGVzLA0KLSAgICAgKiAgIDxjb2RlPmZhbHNlPC9jb2RlPiBvdGhlcndpc2UuDQotICAgICAqIEBzaW5jZSBET00gTGV2ZWwgMg0KLSAgICAgKi8NCi0gICAgdmlydHVhbCBib29sIGhhc0F0dHJpYnV0ZXMoKSBjb25zdDsNCi0NCi0gICAgLyoqDQotICAgICAqIFRoZSBwYXJlbnQgb2YgdGhpcyBub2RlLiBBbGwgbm9kZXMsIGV4Y2VwdCA8Y29kZT5BdHRyPC9jb2RlPiwNCi0gICAgICogPGNvZGU+RG9jdW1lbnQ8L2NvZGU+LCA8Y29kZT5Eb2N1bWVudEZyYWdtZW50PC9jb2RlPiwNCi0gICAgICogPGNvZGU+RW50aXR5PC9jb2RlPiwgYW5kIDxjb2RlPk5vdGF0aW9uPC9jb2RlPiBtYXkgaGF2ZSBhIHBhcmVudC4NCi0gICAgICogSG93ZXZlciwgaWYgYSBub2RlIGhhcyBqdXN0IGJlZW4gY3JlYXRlZCBhbmQgbm90IHlldCBhZGRlZCB0byB0aGUNCi0gICAgICogdHJlZSwgb3IgaWYgaXQgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSB0cmVlLCB0aGlzIGlzDQotICAgICAqIDxjb2RlPk5VTEw8L2NvZGU+Lg0KLSAgICAgKiBAcmV0dXJuIHJldHVybiBjdXJyZW50IG5vZGUncyBwYXJlbnQuDQotICAgICAqLw0KLSAgICBOb2RlSW1wbCogZ2V0UGFyZW50Tm9kZSgpIGNvbnN0Ow0KLQ0KLSAgICAvKioNCi0gICAgICogVGhlIGZpcnN0IGNoaWxkIG9mIHRoaXMgbm9kZS4gSWYgdGhlcmUgaXMgbm8gc3VjaCBub2RlLCB0aGlzIHJldHVybnMNCi0gICAgICogPGNvZGU+TlVMTDwvY29kZT4uDQotICAgICAqIEByZXR1cm4gY3VycmVudCBub2RlICBmaXJzdCBjaGlsZHJlbi4NCi0gICAgICovDQotICAgIE5vZGVJbXBsKiBnZXRGaXJzdENoaWxkKCkgY29uc3Q7DQotDQotICAgIC8qKg0KLSAgICAgKiBUaGUgbGFzdCBjaGlsZCBvZiB0aGlzIG5vZGUuIElmIHRoZXJlIGlzIG5vIHN1Y2ggbm9kZSwgdGhpcyByZXR1cm5zDQotICAgICAqIDxjb2RlPk5VTEw8L2NvZGU+Lg0KLSAgICAgKiBAcmV0dXJuIGN1cnJlbnQgIG5vZGUgbGFzdCBjaGlsZHJlbi4NCi0gICAgICovDQotICAgIE5vZGVJbXBsKiBnZXRMYXN0Q2hpbGQoKSBjb25zdDsNCi0NCi0gICAgLyoqDQotICAgICAqIFRoZSBub2RlIGltbWVkaWF0ZWx5IHByZWNlZGluZyB0aGlzIG5vZGUuIElmIHRoZXJlIGlzIG5vIHN1Y2ggbm9kZSwNCi0gICAgICogdGhpcyByZXR1cm5zIDxjb2RlPk5VTEw8L2NvZGU+Lg0KLSAgICAgKiBAcmV0dXJuIGN1cnJlbnQgbm9kZSBwcmV2aW91cyBzaWJsaW5nIGNoaWxkcmVuLg0KLSAgICAgKi8NCi0gICAgTm9kZUltcGwqIGdldFByZXZpb3VzU2libGluZygpIGNvbnN0Ow0KLQ0KLSAgICAvKioNCi0gICAgICogVGhlIG5vZGUgaW1tZWRpYXRlbHkgZm9sbG93aW5nIHRoaXMgbm9kZS4gSWYgdGhlcmUgaXMgbm8gc3VjaCBub2RlLA0KLSAgICAgKiB0aGlzIHJldHVybnMgPGNvZGU+TlVMTDwvY29kZT4uDQotICAgICAqIEByZXR1cm4gcmV0dXJuIGN1cnJlbnQgIG5vZGUgbmV4dCBzaWJsaW5nIGNoaWxkcmVuLg0KLSAgICAgKi8NCi0gICAgTm9kZUltcGwqIGdldE5leHRTaWJsaW5nKCkgY29uc3Q7DQotDQotICAgIC8qKg0KLSAgICAgKiBJbnNlcnRzIHRoZSBub2RlIDxjb2RlPm5ld0NoaWxkPC9jb2RlPiBiZWZvcmUgdGhlIGV4aXN0aW5nIGNoaWxkIG5vZGUNCi0gICAgICogPGNvZGU+cmVmQ2hpbGQ8L2NvZGU+LiBJZiA8Y29kZT5yZWZDaGlsZDwvY29kZT4gaXMgPGNvZGU+TlVMTDwvY29kZT4sDQotICAgICAqIGluc2VydCA8Y29kZT5uZXdDaGlsZDwvY29kZT4gYXQgdGhlIGVuZCBvZiB0aGUgbGlzdCBvZiBjaGlsZHJlbi4NCi0gICAgICogPGJyPklmIDxjb2RlPm5ld0NoaWxkPC9jb2RlPiBpcyBhIDxjb2RlPkRvY3VtZW50RnJhZ21lbnQ8L2NvZGU+IG9iamVjdCwNCi0gICAgICogYWxsIG9mIGl0cyBjaGlsZHJlbiBhcmUgaW5zZXJ0ZWQsIGluIHRoZSBzYW1lIG9yZGVyLCBiZWZvcmUNCi0gICAgICogPGNvZGU+cmVmQ2hpbGQ8L2NvZGU+LiBJZiB0aGUgPGNvZGU+bmV3Q2hpbGQ8L2NvZGU+IGlzIGFscmVhZHkgaW4gdGhlDQotICAgICAqIHRyZWUsIGl0IGlzIGZpcnN0IHJlbW92ZWQuDQotICAgICAqIEBwYXJhbSBuZXdDaGlsZCBUaGUgbm9kZSB0byBpbnNlcnQuDQotICAgICAqIEBwYXJhbSByZWZDaGlsZCBUaGUgcmVmZXJlbmNlIG5vZGUsIGkuZS4sIHRoZSBub2RlIGJlZm9yZSB3aGljaCB0aGUNCi0gICAgICogICBuZXcgbm9kZSBtdXN0IGJlIGluc2VydGVkLg0KLSAgICAgKiBAcmV0dXJuIFRoZSBub2RlIGJlaW5nIGluc2VydGVkLg0KLSAgICAgKiBAZXhjZXB0aW9uIERPTUV4Y2VwdGlvbg0KLSAgICAgKiAgIEhJRVJBUkNIWV9SRVFVRVNUX0VSUjogUmFpc2VkIGlmIHRoaXMgbm9kZSBpcyBvZiBhIHR5cGUgdGhhdCBkb2VzIG5vdA0KLSAgICAgKiAgIGFsbG93IGNoaWxkcmVuIG9mIHRoZSB0eXBlIG9mIHRoZSA8Y29kZT5uZXdDaGlsZDwvY29kZT4gbm9kZSwgb3IgaWYNCi0gICAgICogICB0aGUgbm9kZSB0byBpbnNlcnQgaXMgb25lIG9mIHRoaXMgbm9kZSdzIGFuY2VzdG9ycyBvciB0aGlzIG5vZGUNCi0gICAgICogICBpdHNlbGYuDQotICAgICAqICAgPGJyPldST05HX0RPQ1VNRU5UX0VSUjogUmFpc2VkIGlmIDxjb2RlPm5ld0NoaWxkPC9jb2RlPiB3YXMgY3JlYXRlZA0KLSAgICAgKiAgIGZyb20gYSBkaWZmZXJlbnQgZG9jdW1lbnQgdGhhbiB0aGUgb25lIHRoYXQgY3JlYXRlZCB0aGlzIG5vZGUuDQotICAgICAqICAgPGJyPk5PX01PRElGSUNBVElPTl9BTExPV0VEX0VSUjogUmFpc2VkIGlmIHRoaXMgbm9kZSBpcyByZWFkb25seSBvcg0KLSAgICAgKiAgIGlmIHRoZSBwYXJlbnQgb2YgdGhlIG5vZGUgYmVpbmcgaW5zZXJ0ZWQgaXMgcmVhZG9ubHkuDQotICAgICAqICAgPGJyPk5PVF9GT1VORF9FUlI6IFJhaXNlZCBpZiA8Y29kZT5yZWZDaGlsZDwvY29kZT4gaXMgbm90IGEgY2hpbGQgb2YNCi0gICAgICogICB0aGlzIG5vZGUuDQotICAgICAqLw0KLSAgICBOb2RlSW1wbCogaW5zZXJ0QmVmb3JlKE5vZGVJbXBsKiBuZXdDaGlsZCwgTm9kZUltcGwqIHJlZkNoaWxkKSB0aHJvdyAoRE9NRXhjZXB0aW9uKTsNCi0NCi0gICAgLyoqDQotICAgICAqIFJlbW92ZXMgdGhlIGNoaWxkIG5vZGUgaW5kaWNhdGVkIGJ5IDxjb2RlPm9sZENoaWxkPC9jb2RlPiBmcm9tIHRoZSBsaXN0DQotICAgICAqIG9mIGNoaWxkcmVuLCBhbmQgcmV0dXJucyBpdC4NCi0gICAgICogQHBhcmFtIG9sZENoaWxkIFRoZSBub2RlIGJlaW5nIHJlbW92ZWQuDQotICAgICAqIEByZXR1cm4gVGhlIG5vZGUgcmVtb3ZlZC4NCi0gICAgICogQGV4Y2VwdGlvbiBET01FeGNlcHRpb24NCi0gICAgICogICBOT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlI6IFJhaXNlZCBpZiB0aGlzIG5vZGUgaXMgcmVhZG9ubHkuDQotICAgICAqICAgPGJyPk5PVF9GT1VORF9FUlI6IFJhaXNlZCBpZiA8Y29kZT5vbGRDaGlsZDwvY29kZT4gaXMgbm90IGEgY2hpbGQgb2YNCi0gICAgICogICB0aGlzIG5vZGUuDQotICAgICAqLw0KLSAgICBOb2RlSW1wbCogcmVtb3ZlQ2hpbGQoTm9kZUltcGwqIG9sZENoaWxkKSB0aHJvdyAoRE9NRXhjZXB0aW9uKTsNCi0NCi0gICAgLyoqDQotICAgICAqIEFkZHMgdGhlIG5vZGUgPGNvZGU+bmV3Q2hpbGQ8L2NvZGU+IHRvIHRoZSBlbmQgb2YgdGhlIGxpc3Qgb2YgY2hpbGRyZW4NCi0gICAgICogb2YgdGhpcyBub2RlLiBJZiB0aGUgPGNvZGU+bmV3Q2hpbGQ8L2NvZGU+IGlzIGFscmVhZHkgaW4gdGhlIHRyZWUsIGl0DQotICAgICAqIGlzIGZpcnN0IHJlbW92ZWQuDQotICAgICAqIEBwYXJhbSBuZXdDaGlsZCBUaGUgbm9kZSB0byBhZGQuSWYgaXQgaXMgYQ0KLSAgICAgKiAgIDxjb2RlPkRvY3VtZW50RnJhZ21lbnQ8L2NvZGU+IG9iamVjdCwgdGhlIGVudGlyZSBjb250ZW50cyBvZiB0aGUNCi0gICAgICogICBkb2N1bWVudCBmcmFnbWVudCBhcmUgbW92ZWQgaW50byB0aGUgY2hpbGQgbGlzdCBvZiB0aGlzIG5vZGUNCi0gICAgICogQHJldHVybiBUaGUgbm9kZSBhZGRlZC4NCi0gICAgICogQGV4Y2VwdGlvbiBET01FeGNlcHRpb24NCi0gICAgICogICBISUVSQVJDSFlfUkVRVUVTVF9FUlI6IFJhaXNlZCBpZiB0aGlzIG5vZGUgaXMgb2YgYSB0eXBlIHRoYXQgZG9lcyBub3QNCi0gICAgICogICBhbGxvdyBjaGlsZHJlbiBvZiB0aGUgdHlwZSBvZiB0aGUgPGNvZGU+bmV3Q2hpbGQ8L2NvZGU+IG5vZGUsIG9yIGlmDQotICAgICAqICAgdGhlIG5vZGUgdG8gYXBwZW5kIGlzIG9uZSBvZiB0aGlzIG5vZGUncyBhbmNlc3RvcnMgb3IgdGhpcyBub2RlDQotICAgICAqICAgaXRzZWxmLg0KLSAgICAgKiAgIDxicj5XUk9OR19ET0NVTUVOVF9FUlI6IFJhaXNlZCBpZiA8Y29kZT5uZXdDaGlsZDwvY29kZT4gd2FzIGNyZWF0ZWQNCi0gICAgICogICBmcm9tIGEgZGlmZmVyZW50IGRvY3VtZW50IHRoYW4gdGhlIG9uZSB0aGF0IGNyZWF0ZWQgdGhpcyBub2RlLg0KLSAgICAgKiAgIDxicj5OT19NT0RJRklDQVRJT05fQUxMT1dFRF9FUlI6IFJhaXNlZCBpZiB0aGlzIG5vZGUgaXMgcmVhZG9ubHkgb3INCi0gICAgICogICBpZiB0aGUgcHJldmlvdXMgcGFyZW50IG9mIHRoZSBub2RlIGJlaW5nIGluc2VydGVkIGlzIHJlYWRvbmx5Lg0KLSAgICAgKi8NCi0gICAgTm9kZUltcGwqIGFwcGVuZENoaWxkKE5vZGVJbXBsKiBuZXdDaGlsZCkgdGhyb3cgKERPTUV4Y2VwdGlvbik7DQotDQotICAgIC8qKg0KLSAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhpcyBub2RlIGhhcyBhbnkgY2hpbGRyZW4uDQotICAgICAqIEByZXR1cm4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgdGhpcyBub2RlIGhhcyBhbnkgY2hpbGRyZW4sDQotICAgICAqICAgPGNvZGU+ZmFsc2U8L2NvZGU+IG90aGVyd2lzZS4NCi0gICAgICovDQotICAgIGJvb2wgaGFzQ2hpbGROb2RlcygpIGNvbnN0Ow0KLQ0KLSAgICB2aXJ0dWFsIH5Ob2RlSW1wbCgpIHt9Ow0KLQ0KLSAgICAvKioNCi0gICAgICogR2V0IHRoZSBMYXlvdXRBdHRyIG9mIHRoaXMgbm9kZQ0KLSAgICAgKiBAcmV0dXJuIHRoZSBwb2ludGVyIHRvICBMYXlvdXRBdHRyDQotICAgICAqLw0KLSAgICB2aXJ0dWFsIExheW91dEF0dHIqIGdldExheW91dEF0dHIoKSBjb25zdCB7IHJldHVybiBOVUxMO30NCi0NCi0gICAgLyoqDQotICAgICAqIFNldCB0aGUgTGF5b3V0QXR0ciBvZiB0aGlzIG5vZGUNCi0gICAgICogQHBhcmFtIGF0dHIgdGhlIGF0dHJpYnV0ZXMgdG8gYmUgc2V0DQotICAgICAqIEByZXR1cm4gdm9pZA0KLSAgICAgKi8NCi0gICAgdmlydHVhbCB2b2lkIHNldExheW91dEF0dHIoTGF5b3V0QXR0ciogYXR0cikgeyByZXR1cm47fQ0KLQ0KLSAgICAvKioNCi0gICAgICogU2V0IGRvY3VtZW50IGNvbnRleHQuDQotICAgICAqIEBwYXJhbSBkb2N1bWVudCBUaGUgc3BlY2lmeSBkb2N1bWVudCBjb250ZXh0Lg0KLSAgICAgKi8NCi0gICAgdm9pZCBzZXREb2N1bWVudChjb25zdCBEb2N1bWVudEltcGwqIGRvY3VtZW50KTsNCi0NCi0gICAgLyoqDQotICAgICAqIEdldCBkb2N1bWVudCBjb250ZXh0Lg0KLSAgICAgKiBAcmV0dXJuIHRoZSBjdXJyZW50IG5vZGUncyBkb2N1bWVudCBjb250ZXh0Lg0KLSAgICAgKi8NCi0gICAgY29uc3QgRG9jdW1lbnRJbXBsKiBnZXREb2N1bWVudCgpIGNvbnN0Ow0KLX07DQotI2VuZGlmICAvKl9fRE9NX05PREVfSU1QTF9fKi8NCi0NCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL3V0aWwvZG9tY29yZS9Ob2RlSXRlcmF0b3IuaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvdXRpbC9kb21jb3JlL05vZGVJdGVyYXRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNmZkYTI4Li4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvdXRpbC9kb21jb3JlL05vZGVJdGVyYXRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsNzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0jaWZuZGVmIF9fRE9NX05PREVfSVRFUkFUT1JfXw0KLSNkZWZpbmUgX19ET01fTk9ERV9JVEVSQVRPUl9fDQotY2xhc3MgTm9kZUltcGw7DQotLyoqDQotICogVGhlIEl0ZXJhdG9yIGlzIHVzZWQgdG8gdmlzaXQgRE9NX1RSRUUuDQotICogPGNvZGU+QXR0ZW50aW9uPC9jb2RlPjpUaGUgSXRlcmF0b3IgaXMgbm90IHNhZmUuDQotICogV2hlbiB0aGUgY2FsbGVyIHVzaW5nIHRoZSBJdGVyYXRvciB0byBhY2Nlc3MgdGhlIHRyZWUsDQotICogdGhlIHVuZGVybHlpbmcgZGF0YSB3YXMgbW9kaWZpZWQsIHRoZSBuZXh0KCkgb3IgcHJldigpIG1heSBub3QgcmV0dXJuIHRoZSByaWdodCByZXN1bHQuDQotICogbWVhbnMgd2UgaGF2ZSBhIDxjb2RlPnJlc3RyaWN0aW9uPC9jb2RlPjogdGhlIEl0ZXJhdG9yIGNhbiBvbmx5IGJlIHVzZWQgaW4gdGhlIGNhc2UgdGhhdCB0aGUgdHJlZSBzdHJ1Y3R1cmUgd2lsbA0KLSAqIG5vdCBiZSBtb2RpZmllZCBiZWZvcmUgdGhlIGVuZCBvZiBpdGVyYXRpb24uDQotICovDQotY2xhc3MgTm9kZUl0ZXJhdG9yIHsNCi1wcml2YXRlOg0KLSAgICBOb2RlSW1wbCogc2NvcGVOb2RlOy8qKiBUaGUgc3BlY2lmeSB0aGUgcmFuZ2Ugb2YgaXRlcmF0aW5nICovDQotICAgIE5vZGVJbXBsKiBlbmROb2RlOyAgLyoqIFRoZSBzcGVjaWZ5IHRoZSBlbmQgcG9zaXRpb24gb2YgaXRlcmF0aW5nICovDQotICAgIE5vZGVJbXBsKiBjdXJOb2RlOyAgLyoqIFRoZSBwb3NpdGlvbiBvZiBjdXJyZW50IG5vZGUuKi8NCi0NCi0gICAgLyoqDQotICAgICAqIEZpbmQgdGhlIHNwZWNpZnkgbm9kZSdzIG5leHQgb3JkZXIgbm9kZS4NCi0gICAgICogQHBhcmFtIG5vZGUgVGhlIHNwZWNpZnkgbm9kZS4NCi0gICAgICogQHJldHVybiBUaGUgbmV4dCBvcmRlciBub2RlIHdoZW4gc3VjY2Vzcy4NCi0gICAgICogICAgICAgICBOVUxMIHdoZW4gaGFzIGFuIGVycm9yLg0KLSAgICAgKi8NCi0gICAgTm9kZUltcGwqIGZpbmROZXh0T3JkZXJOb2RlKE5vZGVJbXBsKiBub2RlKTsNCi0NCi0gICAgLyoqDQotICAgICAqIEZpbmQgdGhlIHNwZWNpZnkgbm9kZSdzIHByZXZpb3VzIG9yZGVyIG5vZGUuDQotICAgICAqIEBwYXJhbSBub2RlIFRoZSBzcGVjaWZ5IG5vZGUuDQotICAgICAqIEByZXR1cm4gVGhlIHByZXZpb3VzIG9yZGVyIG5vZGUgd2hlbiBzdWNjZXNzLg0KLSAgICAgKiAgICAgICAgIE5VTEwgd2hlbiBoYXMgYW4gZXJyb3IuDQotICAgICAqLw0KLSAgICBOb2RlSW1wbCogZmluZFByZXZpb3VzT3JkZXJOb2RlKE5vZGVJbXBsKiBub2RlKTsNCi1wdWJsaWM6DQotICAgIC8qKg0KLSAgICAgKiBDb25zdHJ1Y3QgZm9yIE5vZGVJdGVyYXRvci4NCi0gICAgICogd2UgbXVzdCBzcGVjaWZ5IDxjb2RlPnN0YXJ0PC9jb2RlPiB2YWx1ZSB3aGVuIHdlIHdhbnQgaXRlcmF0ZSB0aGUgRE9NX1RSRUUuDQotICAgICAqIGFuZCB3ZSBhbHNvIGNhbiBzcGVjaWZ5IHRoZSA8Y29kZT5zY29wZTwvY29kZT4gaWYgd2FudCByZXN0cmljdCB0aGUgcmFuZ2Ugb2YgaXRlcmF0b3IuDQotICAgICAqIChlZzogcmVzdHJpY3QgdGhlIHJhbmdlIG9mIGl0ZXJhdGluZyBhdCBhIHN1YnRyZWUpLm90aGVyd2lzZSBpdCB3aWxsIGl0ZXJhdGUgdGhlIHdob2xlIERPTV9UUkVFLg0KLSAgICAgKiBAcGFyYW0gc3RhcnQgVGhlIHN0YXJ0IHBvc2l0aW9uLg0KLSAgICAgKiBAcGFyYW0gc2NvcGUgVGhlIHNjb3BlIG9mIGl0ZXJhdGluZy4NCi0gICAgICogQHBhcmFtIGVuZCBUaGUgZW5kIHBvc2l0aW9uIG9mIGl0ZXJhdGluZy4NCi0gICAgICovDQotICAgIE5vZGVJdGVyYXRvcihOb2RlSW1wbCogc3RhcnQsIE5vZGVJbXBsKiBzY29wZSA9IE5VTEwsIE5vZGVJbXBsKiBlbmQgPSBOVUxMKTsNCi0NCi0gICAgLyoqDQotICAgICAqIEdldCBuZXh0IG9yZGVyIG5vZGUgYXQgY3VycmVudCBwb3NpdGlvbiBpbiBET01fVFJFRS4NCi0gICAgICogQHJldHVybiBOVUxMIE9uIHRoZXJlIGlzIG5vdCBub2RlIGNhbiBiZSBnZXQuDQotICAgICAqICAgICAgICAgVGhlIHBvaW50ZXIgb2Ygbm9kZSBPbiBjYW4gZ2V0IG5leHQgbm9kZS4NCi0gICAgICovDQotICAgIE5vZGVJbXBsKiBuZXh0KCk7DQotDQotICAgIC8qKg0KLSAgICAgKiBHZXQgbmV4dCBvcmRlciBub2RlIGF0IGN1cnJlbnQgcG9zaXRpb24gaW4gRE9NX1RSRUUuDQotICAgICAqIEByZXR1cm4gTlVMTCBPbiB0aGVyZSBpcyBub3Qgbm9kZSBjYW4gYmUgZ2V0Lg0KLSAgICAgKiAgICAgICAgIFRoZSBwb2ludGVyIG9mIG5vZGUgT24gY2FuIGdldCBwcmV2aW91cyBub2RlLg0KLSAgICAgKi8NCi0gICAgTm9kZUltcGwqIHByZXYoKTsNCi19Ow0KLSNlbmRpZiAvKiAgX19ET01fTk9ERV9JVEVSQVRPUl9fICovDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS91dGlsL2RvbWNvcmUvTm9kZUxpc3RJbXBsLmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL3V0aWwvZG9tY29yZS9Ob2RlTGlzdEltcGwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDdjMGE2YS4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL3V0aWwvZG9tY29yZS9Ob2RlTGlzdEltcGwuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotI2lmbmRlZiBfX05PREVfTElTVF9JTVBMX18NCi0jZGVmaW5lIF9fTk9ERV9MSVNUX0lNUExfXw0KLQ0KLSNpbmNsdWRlICJOb2RlSW1wbC5oIg0KLSNpbmNsdWRlICJWZWN0b3IuaCINCi1jbGFzcyBOb2RlTGlzdEltcGwgew0KLXByaXZhdGU6DQotICAgIHZlY3Rvcjxjb25zdCBOb2RlSW1wbCo+IG5vZGVMaXN0Ow0KLXB1YmxpYzoNCi0gICAgLyoqDQotICAgICAqICBBZGQgYSBzcGVjaWFsIG5vZGUgaW50byBsaXN0Lg0KLSAgICAgKiAgQHBhcmFtIG5ld05vZGUgc3BlY2lmeSBjb21wb25lbnQuDQotICAgICAqLw0KLSAgICB2b2lkIGFwcGVuZChjb25zdCBOb2RlSW1wbCogbmV3Tm9kZSk7DQotDQotICAgIC8qKg0KLSAgICAgKiBSZXR1cm4gVGhlIHNwZWNpYWwgcG9zaXRpb24gbm9kZSBwb2ludGVyLg0KLSAgICAgKiBAcGFyYW0gaW5kZXggVGhlIHNwZWNpYWwgcG9zaXRpb24uDQotICAgICAqIEByZXR1cm4gVGhlIG5vZGUncyBwb2ludGVyIG9uIHN1Y2Nlc3MuDQotICAgICAqICAgICAgICAgTlVMTCB3aGVuIG91dCBvZiBsaXN0J3MgYm91bmRhcnkuDQotICAgICAqLw0KLSAgICBjb25zdCBOb2RlSW1wbCogaXRlbShpbnQgaW5kZXgpIGNvbnN0Ow0KLQ0KLSAgICAvKioNCi0gICAgICogUmV0dXJuIHRoZSBsZW5ndGggb2YgbGlzdC4NCi0gICAgICogQHJldHVybiB0aGUgbGVuZ3RoIG9mIGxpc3QuDQotICAgICAqLw0KLSAgICBpbnQgZ2V0TGVuZ3RoKCkgY29uc3Q7DQotDQotICAgIH5Ob2RlTGlzdEltcGwoKTsNCi19Ow0KLSNlbmRpZiAvKl9fTk9ERV9MSVNUX0lNUExfXyAqLw0KLQ0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvdXRpbC9kb21jb3JlL05vZGVUeXBlLmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL3V0aWwvZG9tY29yZS9Ob2RlVHlwZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZTUxYTYzLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvdXRpbC9kb21jb3JlL05vZGVUeXBlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLSNpZm5kZWYgX19ET01fTk9ERV9UWVBFX18NCi0jZGVmaW5lIF9fRE9NX05PREVfVFlQRV9fDQotZW51bSBOb2RlVHlwZSB7DQotICAgIC8qKg0KLSAgICAgKiBUaGUgbm9kZSBpcyBhbiA8Y29kZT5FbGVtZW50PC9jb2RlPi4NCi0gICAgICovDQotICAgIEVMRU1FTlRfTk9ERSA9IDEsDQotICAgIC8qKg0KLSAgICAgKiBUaGUgbm9kZSBpcyBhbiA8Y29kZT5BdHRyPC9jb2RlPi4NCi0gICAgICovDQotICAgIEFUVFJJQlVURV9OT0RFID0gMiwNCi0gICAgLyoqDQotICAgICAqIFRoZSBub2RlIGlzIGEgPGNvZGU+VGV4dDwvY29kZT4gbm9kZS4NCi0gICAgICovDQotICAgIFRFWFRfTk9ERSAgICAgICAgICAgICAgICAgPSAzLA0KLSAgICAvKioNCi0gICAgICogVGhlIG5vZGUgdHlwZSBpcyBDREFUQVNlY3Rpb24uDQotICAgICAqLw0KLSAgICBDREFUQV9TRUNUSU9OX05PREUgICAgICAgID0gNCwNCi0gICAgLyoqDQotICAgICAqIFRoZSBub2RlIHR5cGUgaXMgYW4gRW50aXR5UmVmZXJlbmNlLg0KLSAgICAgKi8NCi0gICAgRU5USVRZX1JFRkVSRU5DRV9OT0RFICAgICA9IDUsDQotICAgIC8qKg0KLSAgICAgKiBUaGUgbm9kZSB0eXBlIGlzIGFuIDxjb2RlPkVudGl0eTwvY29kZT4uDQotICAgICAqLw0KLSAgICBFTlRJVFlfTk9ERSAgICAgICAgICAgICAgID0gNiwNCi0gICAgLyoqDQotICAgICAqIFRoZSBub2RlIHR5cGUgaXMgYSBQcm9jZXNzaW5nSW5zdHJ1Y3Rpb24uDQotICAgICAqLw0KLSAgICBQUk9DRVNTSU5HX0lOU1RSVUNUSU9OX05PREUgPSA3LA0KLSAgICAvKioNCi0gICAgICogVGhlIG5vZGUgaXMgYSBDb21tZW50DQotICAgICAqLw0KLSAgICBDT01NRU5UX05PREUgICAgICAgICAgICAgID0gOCwNCi0gICAgLyoqDQotICAgICAqIFRoZSBub2RlIGlzIGEgRG9jdW1lbnQuDQotICAgICAqLw0KLSAgICBET0NVTUVOVF9OT0RFICAgICAgICAgICAgID0gOSwNCi0gICAgLyoqDQotICAgICAqIFRoZSBub2RlIGlzIGEgRG9jdW1lbnRUeXBlLg0KLSAgICAgKi8NCi0gICAgRE9DVU1FTlRfVFlQRV9OT0RFICAgICAgICA9IDEwLA0KLSAgICAvKioNCi0gICAgICogVGhlIG5vZGUgaXMgYSBEb2N1bWVudEZyYWdtZW50Lg0KLSAgICAgKi8NCi0gICAgRE9DVU1FTlRfRlJBR01FTlRfTk9ERSAgICA9IDExLA0KLSAgICAvKioNCi0gICAgICogVGhlIG5vZGUgaXMgYSBOb3RhdGlvbi4NCi0gICAgICovDQotICAgIE5PVEFUSU9OX05PREUgICAgICAgICAgICAgPSAxMiwNCi19Ow0KLSNlbmRpZg0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvdXRpbC9kb21jb3JlL1RleHRJbXBsLmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL3V0aWwvZG9tY29yZS9UZXh0SW1wbC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYzU1ZmNkLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvdXRpbC9kb21jb3JlL1RleHRJbXBsLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLSNpZm5kZWYgX19ET01fVEVYVF9JTVBMX18NCi0jZGVmaW5lIF9fRE9NX1RFWFRfSU1QTF9fDQotI2luY2x1ZGUgIkNoYXJhY3RlckRhdGFJbXBsLmgiDQotY2xhc3MgVGV4dEltcGw6cHVibGljIENoYXJhY3RlckRhdGFJbXBsDQotew0KLXByaXZhdGU6DQotICAgICAgICBjb25zdCBzdGF0aWMgRE9NU3RyaW5nIG5vZGVOYW1lOw0KLXB1YmxpYzoNCi0gICAgICAgIC8qKiBUZXh0IGRlZmF1bHQgY29uc3RydWN0b3IgZm9yIFRleHRJbXBsLiovDQotICAgICAgICBUZXh0SW1wbCgpOw0KLQ0KLSAgICAgICAgLyoqDQotICAgICAgICAgKiBDb25zdHJ1Y3RvciBmb3IgVGV4dEltcGwNCi0gICAgICAgICAqIEBwYXJhbSBkYXRhIFRoZSBzcGVjaWZ5IGRhdGEgdG8gYmUgc2V0Lg0KLSAgICAgICAgICovDQotICAgICAgICBUZXh0SW1wbChjb25zdCBET01TdHJpbmcqIGRhdGEpOw0KLQ0KLSAgICAgICAgLyoqIE92ZXJyaWRlIGdldE5vZGVUeXBlIG1ldGhvZCBpbiBOb2RlSW1wbC5oICovDQotICAgICAgICBOb2RlVHlwZSBnZXROb2RlVHlwZSgpIGNvbnN0Ow0KLQ0KLSAgICAgICAgLyoqIE92ZXJyaWRlIGdldE5vZGVOYW1lIG1ldGhvZCBpbiBOb2RlSW1wbC5oICovDQotICAgICAgICBjb25zdCBET01TdHJpbmcqIGdldE5vZGVOYW1lKCkgY29uc3Q7DQotfTsNCi0jZW5kaWYgLypfX0RPTV9URVhUX0lNUExfXyovDQotDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS91dGlsL2RvbWNvcmUvVmVjdG9yLmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL3V0aWwvZG9tY29yZS9WZWN0b3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGNlYWUzYi4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL3V0aWwvZG9tY29yZS9WZWN0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotI2lmbmRlZiBfX1ZFQ1RPUl9IX18NCi0jZGVmaW5lIF9fVkVDVE9SX0hfXw0KLSNpbmNsdWRlIDx1dmVjdG9yLmg+DQotdXNpbmcgbmFtZXNwYWNlIHVzdGw7DQotI2VuZGlmIC8qX19WRUNUT1JfSF9fKi8NCi0NCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL3V0aWwvZG9tY29yZS9zdGFjay5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS91dGlsL2RvbWNvcmUvc3RhY2suaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ZjZjRlNS4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL3V0aWwvZG9tY29yZS9zdGFjay5oCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0jaWZuZGVmIF9fU1RBQ0tfSF9fDQotI2RlZmluZSBfX1NUQUNLX0hfXw0KLSNpbmNsdWRlIDx1c3RhY2suaD4NCi11c2luZyBuYW1lc3BhY2UgdXN0bDsNCi0jZW5kaWYgLypfX1NUQUNLX0hfXyovDQotDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS91dGlsL3htbC9Eb21FeHBhdEFnZW50LmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL3V0aWwveG1sL0RvbUV4cGF0QWdlbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTk3MmQ1Yi4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL3V0aWwveG1sL0RvbUV4cGF0QWdlbnQuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwNCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8NCi0jaWZuZGVmIF9ET01FWFBBVEFHRU5UXwotI2RlZmluZSBfRE9NRVhQQVRBR0VOVF8KLQotI2luY2x1ZGUgPERybTJDb21tb25UeXBlcy5oPgotI2luY2x1ZGUgPG9mc3RyZWFtLmg+Ci0jaW5jbHVkZSA8c29zdHJlYW0uaD4KLSNpbmNsdWRlIDx1c3RyaW5nLmg+Ci0jaW5jbHVkZSA8c2lzdHJlYW0uaD4KLSNpbmNsdWRlIDx1dGlsL2RvbWNvcmUvTm9kZUltcGwuaD4KLSNpbmNsdWRlIDx1dGlsL2RvbWNvcmUvRE9NU3RyaW5nLmg+Ci0jaW5jbHVkZSAiRXhwYXRXcmFwcGVyLmgiCi0jaW5jbHVkZSAiWE1MRWxlbWVudEltcGwuaCIKLSNpbmNsdWRlICJYTUxEb2N1bWVudEltcGwuaCIKLXVzaW5nIG5hbWVzcGFjZSB1c3RsOwotCi1jbGFzcyBEb21FeHBhdEFnZW50IDogcHVibGljIEV4cGF0V3JhcHBlciB7Ci1wdWJsaWM6Ci0gICAgLyoqCi0gICAgICogQ29uc3RydWN0b3IgZm9yIERvbUV4cGF0QWdlbnQuCi0gICAgICogQHBhcmFtIHhtbERvY1B0ciBYTUxEb2N1bWVudCBwb2ludGVyLgotICAgICAqLwotICAgIERvbUV4cGF0QWdlbnQoWE1MRG9jdW1lbnRJbXBsKiB4bWxEb2NQdHIpOwotCi0gICAgLyoqIERlc3RydWN0b3IgZm9yIERvbUV4cGF0QWdlbnQuICovCi0gICAgfkRvbUV4cGF0QWdlbnQoKTsKLQotICAgIC8qKgotICAgICAqIEdlbmVyYXRlIFhNTCBET00gRG9jdW1lbnQgZnJvbSBYTUwgc291cmNlLgotICAgICAqIEBwYXJhbSA8Y29kZT54bWxTdHJlYW08L2NvZGU+IHRoZSBYTUwgc291cmNlIHN0cmVhbS4KLSAgICAgKiBAcmV0dXJuIHR1cmUgb3IgZmFsc2UgdG8gaW5kaWNhdGUgd2hldGhlciBnZW5lcmF0ZSBzdWNjZXNzZnVsbHkuCi0gICAgICovCi0gICAgYm9vbCBnZW5lcmF0ZURvY3VtZW50RnJvbVhNTChpc3RyaW5nc3RyZWFtICp4bWxTdHJlYW0pOwotCi0gICAgLyoqCi0gICAgICogR2VuZXJhdGUgWE1MIHN0cmVhbSBmcm9tIFhNTCBET00gZG9jdW1lbnQuCi0gICAgICogQHJldHVybiB4bWwgc3RyZWFtLgotICAgICAqLwotICAgIG9zdHJpbmdzdHJlYW0qIGdlbmVyYXRlWE1MRnJvbURvY3VtZW50KCk7Ci0KLSAgICAvKioKLSAgICAgKiBkZWFsIHdpdGggc3RhcnQgZWxlbWVudCBpbiBFeHBhdC4KLSAgICAgKi8KLSAgICB2aXJ0dWFsIHZvaWQgc3RhcnRFbGVtZW50KGNvbnN0IFhNTF9DaGFyICpuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgWE1MX0NoYXIgKiphdHRzKTsKLQotICAgIC8qKgotICAgICAqIGRlYWwgd2l0aCBlbmQgZWxlbWVudCBmb3IgRXhwYXQuCi0gICAgICovCi0gICAgdmlydHVhbCB2b2lkIGVuZEVsZW1lbnQoY29uc3QgWE1MX0NoYXIgKm5hbWUpOwotCi0gICAgLyoqCi0gICAgICogZGVhbCB3aXRoIGRhdGEgaGFuZGxlciBmb3IgRXhwYXQuCi0gICAgICovCi0gICAgdmlydHVhbCB2b2lkIGRhdGFIYW5kbGVyKGNvbnN0IFhNTF9DaGFyICpzLCBpbnQgbGVuKTsKLQotUFJJVkFURToKLSAgICAvKioKLSAgICAgKiBQdXNoIGEgeG1sIGVsZW1lbnQgd2l0aCB0aGUgc3BlY2lmaWMgdGFnIG5hbWUgaW50byBzdGFjay4KLSAgICAgKiBAcGFyYW0gbmFtZSBUaGUgbmFtZSBvZiB0YWcuCi0gICAgICogQHBhcmFtIGF0dHMgVGhlIGF0dHJpYnV0ZXMgb2YgcmVsYXRlZCB0YWcuCi0gICAgICovCi0gICAgdm9pZCBwdXNoVGFnKGNvbnN0IERPTVN0cmluZyAqbmFtZSwgY29uc3QgWE1MX0NoYXIgKiphdHRzKTsKLQotICAgIC8qKgotICAgICAqIEFwcGVuZCB0ZXh0IGludG8gdG9wIGVsZW1lbnQgb2Ygc3RhY2suCi0gICAgICogQHBhcmFtIHRleHQgVGhlIGRhdGEgcmVsYXRlZCB0byB0aGUgcHJlc2VudCB0YWcuCi0gICAgICovCi0gICAgdm9pZCBhcHBlbmRUZXh0KGNvbnN0IERPTVN0cmluZyAqdGV4dCk7Ci0KLSAgICAvKioKLSAgICAgKiBQb3AgdGhlIHhtbCBlbGVtZW50IHdpdGggdGhlIHNwZWNpZmljIHRhZyBuYW1lLgotICAgICAqIEBwYXJhbSBuYW1lIFRoZSBuYW1lIG9mIHRhZy4KLSAgICAgKi8KLSAgICB2b2lkIHBvcFRhZyhjb25zdCBET01TdHJpbmcgKm5hbWUpOwotCi0gICAgLyoqCi0gICAgICogVHJhdmVyc2UgdGhlIFhNTCBET00gZG9jdW1lbnQgc3RhcnRpbmcgZnJvbSBzcGVjaWZpYyBlbGVtZW50LgotICAgICAqIEBwYXJhbSByb290IFRoZSBzcGVjaWZpYyBlbGVtZW50IHN0YXJ0IHRvIHRyYXZlcnNlLgotICAgICAqLwotICAgIHZvaWQgdHJhdmVyc2UoRWxlbWVudEltcGwgKnJvb3QpOwotCi1QUklWQVRFOgotICAgIHZlY3RvcjxOb2RlSW1wbCo+IG1TdGFjazsgLyoqPCB0aGUgc3RhY2sgdG8gbWFuYWdlIHRoZSB0YWcuICovCi0gICAgWE1MRWxlbWVudEltcGwqIG1Ub3BFbGVtZW50UHRyOyAvKio8IHRoZSB0b3AgZWxlbWVudCBvZiB0aGUgc3RhY2suICovCi0gICAgWE1MRG9jdW1lbnRJbXBsKiBtWE1MRG9jdW1lbnRQdHI7IC8qKjwgWE1MIERPTSBkb2N1bWVudCBwb2ludGVyLiAqLwotICAgIG9zdHJpbmdzdHJlYW0gbVhNTG9zdHJlYW07IC8qKjwgeG1sIG91dHB1dCBzdHJlYW0uICovCi19OwotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvdXRpbC94bWwvRXhwYXRXcmFwcGVyLmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL3V0aWwveG1sL0V4cGF0V3JhcHBlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YTJkN2ZlLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvdXRpbC94bWwvRXhwYXRXcmFwcGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8NCi0jaWZuZGVmIF9YTUxfSF8KLSNkZWZpbmUgX1hNTF9IXwotCi0jaW5jbHVkZSA8ZXhwYXQuaD4KLSNpbmNsdWRlIDx1c3RyaW5nLmg+Ci0jaW5jbHVkZSA8RHJtMkNvbW1vblR5cGVzLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSB1c3RsOwotCi1jbGFzcyBFeHBhdFdyYXBwZXIgewotcHVibGljOgotICAgIC8qKgotICAgICAqIENvbnN0cnVjdG9yIGZvciBFeHBhdFdyYXBwZXIuCi0gICAgICovCi0gICAgRXhwYXRXcmFwcGVyKCk7Ci0KLSAgICAvKioKLSAgICAgKiBEZXN0cnVjdG9yIGZvciBFeHBhdFdyYXBwZXIuCi0gICAgICovCi0gICAgdmlydHVhbCB+RXhwYXRXcmFwcGVyKCk7Ci0KLSAgICAvKioKLSAgICAgKiBkZWNvZGUgY2FsbCBleHBhdCB0byBwYXJzZSB0aGUgeG1sLgotICAgICAqIEBwYXJhbSBidWYgVGhlIGJ1ZmZlciB0byBiZSBwYXJzZWQuCi0gICAgICogQHBhcmFtIGxlbiBUaGUgbGVuZ3RoIG9mIHRoZSBidWZmZXIuCi0gICAgICogQHBhcmFtIGlzRmluYWwgVGhlIGZsYWcgdG8gaW5kaWNhdGUgd2hldGhlciB0aGUgYnVmZmVyCi0gICAgICogICAgICAgICAgICAgICAgaXMgYSBmcmFnbWVudCBvciB3aG9sZSB4bWwuCi0gICAgICovCi0gICAgaW50IGRlY29kZShjb25zdCBjaGFyKiBidWYsIGludCBsZW4sIGludCBpc0ZpbmFsKTsKLQotICAgIC8qKgotICAgICAqIHZpcnR1YWwgZnVudGlvbiB0byBkZWFsIHdpdGggdGhlIHN0YXJ0IGVsZW1lbnQgaW4gZXhwYXQsIG5lZWQgaW1wbGVtZW50IGJ5IGNoaWxkIGNsYXNzLgotICAgICAqLwotICAgIHZpcnR1YWwgdm9pZCBzdGFydEVsZW1lbnQoY29uc3QgWE1MX0NoYXIgKm5hbWUsIGNvbnN0IFhNTF9DaGFyICoqYXR0cyk7Ci0KLSAgICAvKioKLSAgICAgKiB2aXJ0dWFsIGZ1bnRpb24gdG8gZGVhbCB3aXRoIHRoZSBlbmQgZWxlbWVudCBpbiBleHBhdCwgbmVlZCBpbXBsZW1lbnQgYnkgY2hpbGQgY2xhc3MuCi0gICAgICovCi0gICAgdmlydHVhbCB2b2lkIGVuZEVsZW1lbnQoY29uc3QgWE1MX0NoYXIgKm5hbWUpOwotCi0gICAgLyoqCi0gICAgICogdmlydHVhbCBmdW50aW9uIHRvIGRlYWwgd2l0aCB0aGUgZGF0YSBoYW5kbGVyIGluIGV4cGF0LCBuZWVkIGltcGxlbWVudCBieSBjaGlsZCBjbGFzcy4KLSAgICAgKi8KLSAgICB2aXJ0dWFsIHZvaWQgZGF0YUhhbmRsZXIoY29uc3QgWE1MX0NoYXIgKnMsIGludCBsZW4pOwotCi1QUklWQVRFOgotICAgIC8qKgotICAgICAqIENhbGxiYWNrIGZvciBFeHBhdCBzdGFydEVsZW1lbnQuCi0gICAgICovCi0gICAgc3RhdGljIHZvaWQgc3RhcnRFbGVtZW50Q2FsbGJhY2sodm9pZCAqdXNlckRhdGEsIGNvbnN0IFhNTF9DaGFyICpuYW1lLCBjb25zdCBYTUxfQ2hhciAqKmF0dHMpOwotCi0gICAgLyoqCi0gICAgICogQ2FsbGJhY2sgZm9yIEV4cGF0IGVuZEVsZW1lbnQuCi0gICAgICovCi0gICAgc3RhdGljIHZvaWQgZW5kRWxlbWVudENhbGxiYWNrKHZvaWQgKnVzZXJEYXRhLCBjb25zdCBYTUxfQ2hhciAqbmFtZSk7Ci0KLSAgICAvKioKLSAgICAgKiBDYWxsYmFjayBmb3IgRXhwYXQgZGF0YUhhbmRsZXIuCi0gICAgICovCi0gICAgc3RhdGljIHZvaWQgZGF0YUhhbmRsZXJDYWxsYmFjayh2b2lkICp1c2VyRGF0YSwgY29uc3QgWE1MX0NoYXIgKnMsIGludCBsZW4pOwotCi1QUklWQVRFOgotICAgIFhNTF9QYXJzZXIgbVBhcnNlcjsgLyoqPCBUaGUgZXhwYXQgcGFyc2VyIG9iamVjdC4gKi8KLX07Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS91dGlsL3htbC9YTUxEb2N1bWVudEltcGwuaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL2luY2x1ZGUvdXRpbC94bWwvWE1MRG9jdW1lbnRJbXBsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMyOWI4N2QuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS91dGlsL3htbC9YTUxEb2N1bWVudEltcGwuaAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLw0KLSNpZm5kZWYgX1hNTERPQ1VNRU5USU1QTF9IXwotI2RlZmluZSBfWE1MRE9DVU1FTlRJTVBMX0hfCi0KLSNpbmNsdWRlIDxEcm0yQ29tbW9uVHlwZXMuaD4KLSNpbmNsdWRlIDx1dGlsL2RvbWNvcmUvRG9jdW1lbnRJbXBsLmg+Ci0KLWNsYXNzIFhNTERvY3VtZW50SW1wbCA6IHB1YmxpYyBEb2N1bWVudEltcGwgewotcHVibGljOgotICAgIC8qKiBDb25zdHJ1Y3RvciBmb3IgWE1MRG9jdW1lbnRJbXBsLiAqLwotICAgIFhNTERvY3VtZW50SW1wbCgpOwotCi0gICAgLyoqIERlc3RydWN0b3IgZm9yIFhNTERvY3VtZW50SW1wbC4gKi8KLSAgICB+WE1MRG9jdW1lbnRJbXBsKCk7Ci0KLSAgICAvKioKLSAgICAgKiBHZXQgdGhlIGZpcnN0IGNoaWxkIGVsZW1lbnQgb2YgdGhlIGRvY3VtZW50LgotICAgICAqIEByZXR1cm4gdGhlIGZpcnN0IGNoaWxkIDxjb2RlPkVsZW1lbnQ8L2NvZGU+IG9mIGRvY3VtZW50LgotICAgICAqLwotICAgIHZpcnR1YWwgRWxlbWVudEltcGwqIGdldERvY3VtZW50RWxlbWVudCgpIGNvbnN0OwotCi0gICAgLyoqCi0gICAgICogQ3JlYXRlIGEgWE1MIGVsZW1lbnQgd2l0aCB0aGUgc3BlY2lmaWMgbmFtZS4KLSAgICAgKiBAcGFyYW0gdGFnTmFtZSBUaGUgc3BlY2lmaWMgdGFnIG5hbWUuCi0gICAgICogQHJldHVybiBhIG5ldyB4bWwgPGNvZGU+RWxlbWVudDwvY29kZT4KLSAgICAgKiBAZXhjZXB0aW9uIERPTUV4Y2VwdGlvbgotICAgICAqLwotICAgIHZpcnR1YWwgRWxlbWVudEltcGwqIGNyZWF0ZUVsZW1lbnQoY29uc3QgRE9NU3RyaW5nKiB0YWdOYW1lKSBjb25zdCB0aHJvdyAoRE9NRXhjZXB0aW9uKTsKLQotICAgIC8qKgotICAgICAqIENyZWF0ZSBhIHRleHQgbm9kZSB3aXRoIHRoZSBzcGVjaWZpYyBkYXRhLgotICAgICAqIEBwYXJhbSBkYXRhIFRoZSBzcGVjaWZpYyBkYXRhLgotICAgICAqIEByZXR1cm4gYSBuZXcgPGNvZGU+VGV4dDwvY29kZT4gbm9kZS4KLSAgICAgKi8KLSAgICB2aXJ0dWFsIFRleHRJbXBsKiBjcmVhdGVUZXh0Tm9kZShjb25zdCBET01TdHJpbmcqIGRhdGEpIGNvbnN0OwotfTsKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL3V0aWwveG1sL1hNTEVsZW1lbnRJbXBsLmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9pbmNsdWRlL3V0aWwveG1sL1hNTEVsZW1lbnRJbXBsLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwYzk1ZWMuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvaW5jbHVkZS91dGlsL3htbC9YTUxFbGVtZW50SW1wbC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLw0KLSNpZm5kZWYgX1hNTEVMRU1FTlRJTVBMX0hfCi0jZGVmaW5lIF9YTUxFTEVNRU5USU1QTF9IXwotCi0jaW5jbHVkZSA8RHJtMkNvbW1vblR5cGVzLmg+Ci0jaW5jbHVkZSA8dXRpbC9kb21jb3JlL0VsZW1lbnRJbXBsLmg+Ci0jaW5jbHVkZSA8dXRpbC9kb21jb3JlL0RPTVN0cmluZy5oPgotI2luY2x1ZGUgPHVtYXAuaD4KLSNpbmNsdWRlIDx1c3RyaW5nLmg+Ci11c2luZyBuYW1lc3BhY2UgdXN0bDsKLQotdHlwZWRlZiBtYXA8RE9NU3RyaW5nLCBET01TdHJpbmc+IERPTVN0cmluZ01hcDsKLQotY2xhc3MgWE1MRWxlbWVudEltcGwgOiBwdWJsaWMgRWxlbWVudEltcGwgewotcHVibGljOgotICAgIC8qKgotICAgICAqIENvbnN0cnVjdG9yIGZvciBYTUxFbGVtZW50SW1wbC4KLSAgICAgKiBAcGFyYW0gdGFnIFRoZSBuYW1lIG9mIHRoZSB0YWcuCi0gICAgICovCi0gICAgWE1MRWxlbWVudEltcGwoY29uc3QgRE9NU3RyaW5nICp0YWcpOwotCi0gICAgLyoqIERlc3RydWN0b3IgZm9yIFhNTEVsZW1lbnRJbXBsLiAqLwotICAgIH5YTUxFbGVtZW50SW1wbCgpOwotCi0gICAgLyoqCi0gICAgICogR2V0IHRoZSBhdHRyaWJ1dGUgbWFwIG9mIHRoZSBYTUwgZWxlbWVudC4KLSAgICAgKiBAcmV0dXJuIDxjb2RlPkRPTVN0cmluZ01hcDwvY29kZT4KLSAgICAgKi8KLSAgICBjb25zdCBET01TdHJpbmdNYXAqIGdldEF0dHJpYnV0ZU1hcCgpIGNvbnN0OwotCi0gICAgLyoqCi0gICAgICogR2V0IHRoZSB0YWcgbmFtZSBvZiB0aGUgZWxlbWVudC4KLSAgICAgKiByZXR1cm4gdGFnIG5hbWUuCi0gICAgICovCi0gICAgdmlydHVhbCBjb25zdCBET01TdHJpbmcqIGdldFRhZ05hbWUoKSBjb25zdDsKLQotICAgIC8qKgotICAgICAqIFNldCB0aGUgYXR0cmlidXRlIG9mIHRoZSBlbGVtZW50LgotICAgICAqIEBwYXJhbSBuYW1lIFRoZSBrZXkgb2YgdGhlIGF0dHJpYnV0ZS4KLSAgICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIG9mIHRoZSBhdHRyaWJ1dGUuCi0gICAgICovCi0gICAgdmlydHVhbCB2b2lkIHNldEF0dHJpYnV0ZShjb25zdCBET01TdHJpbmcqIG5hbWUsIGNvbnN0IERPTVN0cmluZyogdmFsdWUpIHRocm93IChET01FeGNlcHRpb24pOwotCi0gICAgLyoqCi0gICAgICogUmVtb3ZlIHRoZSBzcGVjaWZpYyBhdHRyaWJ1dGUuCi0gICAgICogQHBhcmFtIG5hbWUgVGhlIGtleSBvZiB0aGUgYXR0cmlidXRlLgotICAgICAqIEBleGNlcHRpb24gRE9NRXhjZXB0aW9uLgotICAgICAqLwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVBdHRyaWJ1dGUoY29uc3QgRE9NU3RyaW5nKiBuYW1lKSB0aHJvdyAoRE9NRXhjZXB0aW9uKTsKLQotICAgIC8qKgotICAgICAqIEdldCB0aGUgc3BlY2lmaWMgYXR0cmlidXRlLgotICAgICAqIEBwYXJhbSBuYW1lIFRoZSBrZXkgb2YgdGhlIGF0dHJpYnV0ZS4KLSAgICAgKiBAcmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgYXR0cmlidXRlLgotICAgICAqLwotICAgIHZpcnR1YWwgY29uc3QgRE9NU3RyaW5nKiBnZXRBdHRyaWJ1dGUoY29uc3QgRE9NU3RyaW5nKiBuYW1lKSBjb25zdDsKLQotICAgIC8qKgotICAgICAqIERldGVjdCB3aGV0aGVyIGVsZW1lbnQgaGFzIGF0dHJpYnV0ZXMgb3Igbm90LgotICAgICAqIEByZXR1cm4gdHJ1ZSBvciBmYWxzZSB0byBpbmRpY2F0ZSB0aGUgcmVzdWx0LgotICAgICAqLwotICAgIHZpcnR1YWwgYm9vbCBoYXNBdHRyaWJ1dGVzKCkgY29uc3Q7Ci0KLSAgICAvKioKLSAgICAgKiBGaW5kIHRoZSBmaXJzdCBjaGlsZCBub2RlIGluIGVsZW1lbnQgYnkgaXRzIHRhZyBuYW1lLgotICAgICAqIEBwYXJhbSBlbGVtZW50IHRoZSBzcGVjaWZpYyBlbGVtZW50IHRvIGJlIGZvdW5kLgotICAgICAqIEBwYXJhbSB0YWcgdGhlIHNwZWNpZmljIHRhZyBuYW1lIHRvIGJlIHNlYXJjaGVkLgotICAgICAqIEByZXR1cm4gTlVMTCBpZiBub3QgZm91bmQgb3RoZXJ3aXNlIHRoZSBjaGlsZCBub2RlLgotICAgICAqLwotICAgIGNvbnN0IE5vZGVJbXBsKiBmaW5kU29sb0NoaWxkTm9kZShjb25zdCBjaGFyKiB0YWcpIGNvbnN0OwotCi0gICAgLyoqCi0gICAgICogR2V0IHRoZSBmaXJzdCB0ZXh0IGNvbnRhaW50ZWQgaW4gZmlyc3QgY2hpbGQgb2YgdGhlIGVsZW1lbnQuCi0gICAgICogQHBhcmFtIHRhZyB0aGUgc3BlY2lmaWMgdGFnIG5hbWUgdG8gYmUgc2VhcmNoZWQuCi0gICAgICogQHJldHVybiBOVUxMIGlmIG5vdCBmb3VuZCBvdGhlcndpc2UgdGhlIHRleHQuCi0gICAgICovCi0gICAgY29uc3Qgc3RyaW5nKiBnZXRTb2xvVGV4dChjb25zdCBjaGFyKiB0YWcpIGNvbnN0OwotCi0gICAgLyoqCi0gICAgICogR2V0IHRoZSBmaXJzdCBjaGlsZCB4bWwgZWxlbWVudCBjb250YWludGVkIGluIHRoZSBlbGVtZW50LgotICAgICAqIEBwYXJhbSB0YWcgdGhlIHNwZWNpZmljIHRhZyBuYW1lIHRvIGJlIHNlYXJjaGVkLgotICAgICAqIEByZXR1cm4gTlVMTCBpZiBub3QgZm91bmQgb3RoZXJ3aXNlIHRoZSBlbGVtZW50LgotICAgICAqLwotICAgIGNvbnN0IFhNTEVsZW1lbnRJbXBsKiBnZXRTb2xvRWxlbWVudChjb25zdCBjaGFyKiB0YWcpIGNvbnN0OwotCi1QUklWQVRFOgotICAgIERPTVN0cmluZyBtVGFnTmFtZTsgLyoqPCBUaGUgdGFnIG5hbWUuICovCi0gICAgRE9NU3RyaW5nTWFwIG1BdHRyaWJ1dGVNYXA7IC8qKiBUaGUgbWFwIG9mIGF0dHJpYnV0ZXMuICovCi19OwotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy9kY2YvRHJtRGNmQ29tbW9uLmNwcCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy9kY2YvRHJtRGNmQ29tbW9uLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGY1ZTRhYy4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvZGNmL0RybURjZkNvbW1vbi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyMDYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLSNpbmNsdWRlIDxkY2YvRHJtRGNmQ29tbW9uLmg+Ci0KLWludDY0X3QgbnRvaF9pbnQ2NChpbnQ2NF90IHgpCi17Ci0gICAgcmV0dXJuICgoKGludDY0X3QpKG50b2hsKChpbnQzMl90KSgoeCA8PCAzMikgPj4gMzIpKSkgPDwgMzIpIHwgKHVpbnQzMl90KW50b2hsKCgoaW50MzJfdCkoeCA+PiAzMikpKSk7Ci19Ci0KLS8qKgotICogQ2xhc3M6IEJveAotICovCi1Cb3g6OkJveChjb25zdCB1aW50OF90KiBib3gpOm1MYXJnZVNpemUoMCksbVVzZXJUeXBlKE5VTEwpCi17Ci0gICAgaWYoIWJveCkKLSAgICB7Ci0gICAgICAgIHJldHVybiA7Ci0gICAgfQotCi0gICAgY29uc3QgdWludDhfdCogcCA9IGJveDsKLQotICAgIC8qIEdldCB0aGUgc2l6ZSB2YWx1ZSAqLwotICAgIG1TaXplID0gbnRvaGwoKih1aW50MzJfdCAqKXApOwotICAgIHAgKz0gc2l6ZW9mKG1TaXplKTsKLQotICAgIC8qIEdldCB0aGUgdHlwZSB2YWx1ZSAqLwotICAgIG1UeXBlID0gKigodWludDMyX3QgKilwKTsKLSAgICBwICs9IHNpemVvZihtVHlwZSk7Ci0KLSAgICBpZiAoMSA9PSBtU2l6ZSkKLSAgICB7Ci0gICAgICAgIG1MYXJnZVNpemUgPSBudG9oX2ludDY0KCoodWludDY0X3QgKilwKTsKLSAgICAgICAgcCArPSBzaXplb2YobUxhcmdlU2l6ZSk7Ci0gICAgfQotCi0gICAgaWYgKERDRl9VU0VSX1RZUEUgPT0gbVR5cGUpCi0gICAgewotICAgICAgICBtVXNlclR5cGUgPSBuZXcgdWludDhfdFtVU0VSX1RZUEVfTEVOXTsKLSAgICAgICAgbWVtY3B5KG1Vc2VyVHlwZSwgcCwgVVNFUl9UWVBFX0xFTik7Ci0gICAgICAgIHAgKz0gVVNFUl9UWVBFX0xFTjsKLSAgICB9Ci0KLSAgICBtQm94TGVuZ3RoID0gcCAtIGJveDsKLX0KLQotQm94OjpCb3goY29uc3QgQm94JiBvdGhlcikKLXsKLSAgICBtU2l6ZSA9IG90aGVyLm1TaXplOwotICAgIG1UeXBlID0gb3RoZXIubVR5cGU7Ci0gICAgbUxhcmdlU2l6ZSA9IG90aGVyLm1MYXJnZVNpemU7Ci0gICAgbVVzZXJUeXBlID0gTlVMTDsKLQotICAgIGlmKG90aGVyLm1Vc2VyVHlwZSkKLSAgICB7Ci0gICAgICAgIG1Vc2VyVHlwZSA9IG5ldyB1aW50OF90W1VTRVJfVFlQRV9MRU5dOwotICAgICAgICBtZW1jcHkobVVzZXJUeXBlLG90aGVyLm1Vc2VyVHlwZSxVU0VSX1RZUEVfTEVOKTsKLSAgICB9Ci19Ci0KLUJveCYgQm94OjpvcGVyYXRvcj0oY29uc3QgQm94JiBvdGhlcikKLXsKLSAgICBpZih0aGlzID09ICZvdGhlcikKLSAgICB7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9Ci0KLSAgICBpZihtVXNlclR5cGUpCi0gICAgewotICAgICAgICBkZWxldGUgW11tVXNlclR5cGU7Ci0gICAgICAgIG1Vc2VyVHlwZSA9IE5VTEw7Ci0gICAgfQotCi0gICAgaWYob3RoZXIubVVzZXJUeXBlKQotICAgIHsKLSAgICAgICAgbVVzZXJUeXBlID0gbmV3IHVpbnQ4X3RbVVNFUl9UWVBFX0xFTl07Ci0gICAgICAgIG1lbWNweShtVXNlclR5cGUsIG90aGVyLm1Vc2VyVHlwZSwgVVNFUl9UWVBFX0xFTik7Ci0gICAgfQotCi0gICAgcmV0dXJuICp0aGlzOwotfQotCi1Cb3g6On5Cb3goKQotewotICAgIGlmKG1Vc2VyVHlwZSkKLSAgICB7Ci0gICAgICAgIGRlbGV0ZSBbXW1Vc2VyVHlwZTsKLSAgICAgICAgbVVzZXJUeXBlID0gTlVMTDsKLSAgICB9Ci19Ci0KLXVpbnQ2NF90IEJveDo6Z2V0U2l6ZSh2b2lkKSBjb25zdAotewotICAgIGlmKDEgPT0gbVNpemUpCi0gICAgewotICAgICAgICByZXR1cm4gbUxhcmdlU2l6ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbVNpemU7Ci19Ci0KLXVpbnQzMl90IEJveDo6Z2V0VHlwZSh2b2lkKSBjb25zdAotewotICAgIHJldHVybiBtVHlwZTsKLX0KLQotY29uc3QgdWludDhfdCogQm94OjpnZXRVc2VydHlwZSh2b2lkKSBjb25zdAotewotICAgIHJldHVybiBtVXNlclR5cGU7Ci19Ci0KLXVpbnQzMl90IEJveDo6Z2V0TGVuKHZvaWQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1Cb3hMZW5ndGg7Ci19Ci0KLQotLyoqCi0gKiBDbGFzczogRnVsbEJveAotICovCi1GdWxsQm94OjpGdWxsQm94KGNvbnN0IHVpbnQ4X3QqIGZ1bGxCb3gpIDogQm94KGZ1bGxCb3gpCi17Ci0gICAgaWYoIWZ1bGxCb3gpCi0gICAgewotICAgICAgICByZXR1cm4gOwotICAgIH0KLQotICAgIGNvbnN0IHVpbnQ4X3QqIHAgPSBmdWxsQm94OwotCi0gICAgcCArPSBCb3g6OmdldExlbigpOwotCi0gICAgbVZlcnNpb24gPSAqcDsKLSAgICBwKys7Ci0KLSAgICBtZW1jcHkobUZsYWcsIHAsRkxBR19MRU4pOwotICAgIHAgKz0gRkxBR19MRU47Ci0KLSAgICBtRnVsbEJveExlbmd0aCA9IHAgLSBmdWxsQm94OwotfQotCi11aW50OF90IEZ1bGxCb3g6OmdldFZlcnNpb24odm9pZCkgY29uc3QKLXsKLSAgICByZXR1cm4gbVZlcnNpb247Ci19Ci0KLWNvbnN0IHVpbnQ4X3QqIEZ1bGxCb3g6OmdldEZsYWcodm9pZCkgY29uc3QKLXsKLSAgICByZXR1cm4gbUZsYWc7Ci19Ci0KLXVpbnQzMl90IEZ1bGxCb3g6OmdldExlbih2b2lkKSBjb25zdAotewotICAgIHJldHVybiBtRnVsbEJveExlbmd0aDsKLX0KLQotLy8vLy8gY2xhc3MgVGV4dHVhbEhlYWRlciBpbXBsZW1lbnRhdGlvbgotVGV4dHVhbEhlYWRlcjo6VGV4dHVhbEhlYWRlcihjb25zdCBzdHJpbmcmIGluRGF0YSkKLXsKLSAgICBzdHJpbmc6OnNpemVfdHlwZSBsb2MxID0gaW5EYXRhLmZpbmQoIjoiLCAwKTsKLQotICAgIGlmIChsb2MxICE9IHN0cmluZzo6bnBvcykKLSAgICB7Ci0gICAgICAgIG5hbWUuYXNzaWduKGluRGF0YSwgMCwgbG9jMSk7Ci0gICAgfQotCi0gICAgc3RyaW5nOjpzaXplX3R5cGUgbG9jMiA9IGluRGF0YS5maW5kKCI7IiwgbG9jMSArIDEpOwotCi0gICAgaWYgKGxvYzIgIT0gc3RyaW5nOjpucG9zKQotICAgIHsKLSAgICAgICAgdmFsdWUuYXNzaWduKGluRGF0YSwgbG9jMSArIDEsIGxvYzIgLSBsb2MxIC0gMSk7Ci0gICAgICAgIHBhcmFtLmFzc2lnbihpbkRhdGEsIGxvYzIgKyAxLCBpbkRhdGEubGVuZ3RoKCkgLSBsb2MyIC0gMSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICB7Ci0gICAgICAgIHZhbHVlLmFzc2lnbihpbkRhdGEsIGxvYzEgKyAxLCBpbkRhdGEubGVuZ3RoKCkgLSBsb2MxIC0gMSk7Ci0gICAgfQotfQotCi1zdHJpbmcgVGV4dHVhbEhlYWRlcjo6Z2V0TmFtZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG5hbWU7Ci19Ci0KLXN0cmluZyBUZXh0dWFsSGVhZGVyOjpnZXRWYWx1ZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIHZhbHVlOwotfQotCi1zdHJpbmcgVGV4dHVhbEhlYWRlcjo6Z2V0UGFyYW0oKSBjb25zdAotewotICAgIHJldHVybiBwYXJhbTsKLX0KLQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL2RjZi9Ecm1EY2ZDb250YWluZXIuY3BwIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL2RjZi9Ecm1EY2ZDb250YWluZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTdjOTMwLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy9kY2YvRHJtRGNmQ29udGFpbmVyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotI2luY2x1ZGUgPGRjZi9Ecm1EY2ZDb250YWluZXIuaD4KLQotRGNmQ29udGFpbmVyOjpEY2ZDb250YWluZXIoY29uc3QgdWludDhfdCogZGF0YSxpc3RyZWFtJiBpblJhd0RhdGEsdWludDY0X3QgY29uT2ZmKQotICAgICAgICAgICAgICAgIDogRnVsbEJveChkYXRhKSxtQ29uU3RyZWFtKGluUmF3RGF0YSkKLXsKLSAgICBpZighZGF0YSkKLSAgICB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjb25zdCB1aW50OF90KiBwID0gZGF0YTsKLSAgICBjb25zdCB1aW50OF90KiBmbGFnID0gdGhpcy0+Z2V0RmxhZygpOwotCi0gICAgaWYoZmxhZ1swXSAmIFVTRVJfREFUQV9GTEFHKQotICAgIHsKLSAgICAgICAgbUhhc1VzZXJEYXRhID0gdHJ1ZTsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgbUhhc1VzZXJEYXRhID0gZmFsc2U7Ci0gICAgfQotCi0gICAgcCArPSB0aGlzLT5nZXRMZW4oKTsKLQotICAgIEZ1bGxCb3ggZnVsbEJveERpc2NyZXRlKHApOwotCi0gICAgcCArPSBmdWxsQm94RGlzY3JldGUuZ2V0TGVuKCk7Ci0KLSAgICBtQ29udGVudFR5cGVMZW4gPSAqcDsKLSAgICBwKys7Ci0KLSAgICBtQ29udGVudFR5cGUuYXNzaWduKChjb25zdCBjaGFyKilwLDAsbUNvbnRlbnRUeXBlTGVuKTsKLSAgICBwICs9IG1Db250ZW50VHlwZUxlbjsKLQotICAgIC8vIHBhcnNlIGNvbW1vbiBoZWFkZXIKLSAgICBGdWxsQm94IGZ1bGxCb3hDb21tKHApOwotICAgIHAgKz0gZnVsbEJveENvbW0uZ2V0TGVuKCk7Ci0KLSAgICBtRW5jcnlwdGlvbk1ldGhvZCA9ICpwOwotICAgIHArKzsKLQotICAgIG1QYWRkaW5nU2NoZW1lID0gKnA7Ci0gICAgcCsrOwotCi0gICAgbVBsYWludGV4dExlbmd0aCA9IG50b2hfaW50NjQoKigodWludDY0X3QgKilwKSk7Ci0gICAgcCArPSBzaXplb2YobVBsYWludGV4dExlbmd0aCk7Ci0KLSAgICBtQ29udGVudElETGVuZ3RoID0gbnRvaHMoKih1aW50MTZfdCAqKXApOwotICAgIHAgKz0gc2l6ZW9mKG1Db250ZW50SURMZW5ndGgpOwotCi0gICAgbVJpZ2h0c0lzc3VlclVSTExlbmd0aCA9IG50b2hzKCoodWludDE2X3QgKilwKTsKLSAgICBwICs9IHNpemVvZihtUmlnaHRzSXNzdWVyVVJMTGVuZ3RoKTsKLQotICAgIG1UZXh0dWFsSGVhZGVyc0xlbmd0aCA9IG50b2hzKCoodWludDE2X3QgKilwKTsKLSAgICBwICs9IHNpemVvZihtVGV4dHVhbEhlYWRlcnNMZW5ndGgpOwotCi0gICAgbUNvbnRlbnRJRC5hc3NpZ24oKGNvbnN0IGNoYXIgKilwLDAsbUNvbnRlbnRJRExlbmd0aCk7Ci0gICAgcCArPSBtQ29udGVudElETGVuZ3RoOwotCi0gICAgbVJpZ2h0c0lzc3VlclVSTC5hc3NpZ24oKGNvbnN0IGNoYXIgKilwLDAsbVJpZ2h0c0lzc3VlclVSTExlbmd0aCk7Ci0gICAgcCArPSBtUmlnaHRzSXNzdWVyVVJMTGVuZ3RoOwotCi0gICAgLy8gcGFyc2UgdGV4dHVhbCBoZWFkZXIKLSAgICBpZiAobVRleHR1YWxIZWFkZXJzTGVuZ3RoID4gMCkKLSAgICB7Ci0gICAgICAgIGlmKGZhbHNlID09IHBhcnNlVGV4dHVhbEhlYWRlcnMocCxtVGV4dHVhbEhlYWRlcnNMZW5ndGgpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBwICs9IG1UZXh0dWFsSGVhZGVyc0xlbmd0aDsKLSAgICB9Ci0KLSAgICAvLy8vLy8vLy8vLy8vLyBwYXJzZXIgZ3JvdXAgaWQKLQotICAgIC8vL3BhcnNlIGNvbnRlbnQKLSAgICBwID0gZGF0YSArIHRoaXMtPmdldExlbigpICsgZnVsbEJveERpc2NyZXRlLmdldFNpemUoKTsKLSAgICBGdWxsQm94IGZ1bGxCb3hDb250ZXRuKHApOwotICAgIHAgKz0gZnVsbEJveENvbnRldG4uZ2V0TGVuKCk7Ci0gICAgbURhdGFMZW4gPSBudG9oX2ludDY0KCooKHVpbnQ2NF90ICopcCkpOwotICAgIHAgKz0gc2l6ZW9mKG1EYXRhTGVuKTsKLQotICAgIG1EZWNPZmZzZXQgPSBjb25PZmYgKyAocCAtIGRhdGEpOwotICAgIHAgKz0gbURhdGFMZW47Ci0KLSAgICAvLy8vLy8vLy8vLy8vLy8gcGFyc2VyIHVzZXIgZGF0YQotfQotCi1EY2ZDb250YWluZXI6On5EY2ZDb250YWluZXIoKQotewotICAgIHVpbnQzMl90IHNpemUgPSBtVGV4dHVhbEhlYWRlcnMuc2l6ZSgpOwotCi0gICAgZm9yKHVpbnQzMl90IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKQotICAgIHsKLSAgICAgICAgZGVsZXRlIG1UZXh0dWFsSGVhZGVyc1tpXTsKLSAgICB9Ci0KLSAgICBtVGV4dHVhbEhlYWRlcnMuY2xlYXIoKTsKLSAgICBtQ3VzdG9tSGVhZGVyLmNsZWFyKCk7Ci19Ci0KLQotc3RyaW5nIERjZkNvbnRhaW5lcjo6Z2V0Q29udGVudFR5cGUodm9pZCkgY29uc3QKLXsKLSAgICByZXR1cm4gbUNvbnRlbnRUeXBlOwotfQotCi11aW50OF90IERjZkNvbnRhaW5lcjo6Z2V0RW5jcnlwdGlvbk1ldGhvZCh2b2lkKSBjb25zdAotewotICAgIHJldHVybiBtRW5jcnlwdGlvbk1ldGhvZDsKLX0KLQotdWludDhfdCBEY2ZDb250YWluZXI6OmdldFBhZGRpbmdTY2hlbWUodm9pZCkgY29uc3QKLXsKLSAgICByZXR1cm4gbVBhZGRpbmdTY2hlbWU7Ci19Ci0KLXVpbnQ2NF90IERjZkNvbnRhaW5lcjo6Z2V0UGxhaW50ZXh0TGVuZ3RoKHZvaWQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1QbGFpbnRleHRMZW5ndGg7Ci19Ci0KLXVpbnQxNl90IERjZkNvbnRhaW5lcjo6Z2V0Q29udGVudElETGVuZ3RoKHZvaWQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1Db250ZW50SURMZW5ndGg7Ci19Ci0KLXVpbnQxNl90IERjZkNvbnRhaW5lcjo6Z2V0UmlnaHRzSXNzdWVyVVJMTGVuZ3RoKHZvaWQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1SaWdodHNJc3N1ZXJVUkxMZW5ndGg7Ci19Ci0KLXVpbnQxNl90IERjZkNvbnRhaW5lcjo6Z2V0VGV4dHVhbEhlYWRlcnNMZW5ndGgodm9pZCkgY29uc3QKLXsKLSAgICByZXR1cm4gbVRleHR1YWxIZWFkZXJzTGVuZ3RoOwotfQotCi1zdHJpbmcgRGNmQ29udGFpbmVyOjpnZXRDb250ZW50SUQodm9pZCkgY29uc3QKLXsKLSAgICByZXR1cm4gbUNvbnRlbnRJRDsKLX0KLQotc3RyaW5nIERjZkNvbnRhaW5lcjo6Z2V0UmlnaHRzSXNzdWVyVVJMKHZvaWQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1SaWdodHNJc3N1ZXJVUkw7Ci19Ci0KLXN0cmluZyBEY2ZDb250YWluZXI6OmdldFByZXZpZXdNZXRob2Qodm9pZCkgY29uc3QKLXsKLSAgICByZXR1cm4gbVNsaWVudE1ldGhvZDsKLX0KLQotc3RyaW5nIERjZkNvbnRhaW5lcjo6Z2V0Q29udGVudExvY2F0aW9uKHZvaWQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1Db250ZW50TG9jYXRpb247Ci19Ci0KLXN0cmluZyBEY2ZDb250YWluZXI6OmdldENvbnRlbnRVUkwodm9pZCkgY29uc3QKLXsKLSAgICByZXR1cm4gbUNvbnRlbnRVUkw7Ci19Ci0KLXZlY3RvcjxzdHJpbmc+IERjZkNvbnRhaW5lcjo6Z2V0Q3VzdG9tZXJIZWFkKHZvaWQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1DdXN0b21IZWFkZXI7Ci19Ci0KLWlzdHJlYW0mIERjZkNvbnRhaW5lcjo6Z2V0U3RyZWFtKHZvaWQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1Db25TdHJlYW07Ci19Ci0KLURybUluU3RyZWFtIERjZkNvbnRhaW5lcjo6Z2V0UHJldmlld0VsZW1lbnREYXRhKHZvaWQpIGNvbnN0Ci17Ci0gICAgIC8vIGdldCBkYXRhIGJhc2VkIG9uIG1QcmV2aWV3RWxlbWVudFVSSQotICAgICAvL2VuY3J5cHRlZERhdGEgPSA7Ci0KLSAgICAgRHJtSW5TdHJlYW0gaW5TdHJlYW07Ci0gICAgIHJldHVybiBpblN0cmVhbTsKLX0KLQotRHJtSW5TdHJlYW0gRGNmQ29udGFpbmVyOjpnZXREZWNyeXB0Q29udGVudCh1aW50OF90KiBkZWNyeXB0S2V5KSBjb25zdAotewotICAgIERybUluU3RyZWFtIGluU3RyZWFtKHRoaXMsZGVjcnlwdEtleSk7Ci0gICAgcmV0dXJuIGluU3RyZWFtOwotfQotCi1ib29sIERjZkNvbnRhaW5lcjo6cGFyc2VUZXh0dWFsSGVhZGVycyhjb25zdCB1aW50OF90KiBkYXRhLCB1aW50MzJfdCBsZW4pCi17Ci0gICAgaWYoIWRhdGEpCi0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgY29uc3QgdWludDhfdCogcCA9IGRhdGE7Ci0KLSAgICB3aGlsZSAobGVuID4gKHVpbnQzMl90KShwIC0gZGF0YSkpCi0gICAgewotICAgICAgICB1aW50MzJfdCBsID0gc3RybGVuKChjb25zdCBjaGFyKilwKTsKLQotICAgICAgICBzdHJpbmcgc3RyKChjb25zdCBjaGFyKilwLCBsKTsKLSAgICAgICAgVGV4dHVhbEhlYWRlciogdG1wID0gbmV3IFRleHR1YWxIZWFkZXIoc3RyKTsKLQotICAgICAgICBpZighdG1wKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICBtVGV4dHVhbEhlYWRlcnMucHVzaF9iYWNrKHRtcCk7Ci0KLSAgICAgICAgcCArPSBsICsgMTsKLSAgICB9Ci0KLSAgICB1aW50MzJfdCBzaXplID0gbVRleHR1YWxIZWFkZXJzLnNpemUoKTsKLSAgICB1aW50MzJfdCBzaWxlbnRwb3MgPSAwOwotICAgIHVpbnQzMl90IHByZXZpZXdwb3MgPSAwOwotCi0gICAgZm9yKCB1aW50MzJfdCBpID0gMDsgaSA8IHNpemU7IGkrKykKLSAgICB7Ci0gICAgICAgIHN0cmluZyB0ZW1wU3RyID0gbVRleHR1YWxIZWFkZXJzW2ldLT5nZXROYW1lKCk7Ci0KLSAgICAgICAgaWYodGVtcFN0ciA9PSAiU2lsZW50IikKLSAgICAgICAgewotICAgICAgICAgICAgc2lsZW50cG9zID0gaTsKLSAgICAgICAgICAgIG1TbGllbnRNZXRob2QgPSBtVGV4dHVhbEhlYWRlcnNbaV0tPmdldFZhbHVlKCk7Ci0gICAgICAgICAgICBtU2lsZW50UmlnaHRzVVJMID0gbVRleHR1YWxIZWFkZXJzW2ldLT5nZXRQYXJhbSgpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYodGVtcFN0ciA9PSAiUHJldmlldyIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHByZXZpZXdwb3MgPSBpOwotICAgICAgICAgICAgbVByZXZpZXdNZXRob2QgPSBtVGV4dHVhbEhlYWRlcnNbaV0tPmdldFZhbHVlKCk7Ci0KLSAgICAgICAgICAgIGlmKG1QcmV2aWV3TWV0aG9kID09ICJpbnN0YW50IikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBtUHJldmlld0VsZW1lbnRVUkkgPSBtVGV4dHVhbEhlYWRlcnNbaV0tPmdldFBhcmFtKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbVByZXZpZXdSaWdodHNVUkwgPSBtVGV4dHVhbEhlYWRlcnNbaV0tPmdldFBhcmFtKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZih0ZW1wU3RyID09ICJDb250ZW50VVJMIikKLSAgICAgICAgewotICAgICAgICAgICAgbUNvbnRlbnRVUkwgPSBtVGV4dHVhbEhlYWRlcnNbaV0tPmdldFZhbHVlKCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZih0ZW1wU3RyID09ICJDb250ZW50VmVyc2lvbiIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1Db250ZW50VmVyc2lvbiA9IG1UZXh0dWFsSGVhZGVyc1tpXS0+Z2V0VmFsdWUoKTsKLSAgICAgICAgfQotICAgICAgICBpZih0ZW1wU3RyID09ICJDb250ZW50LUxvY2F0aW9uIikKLSAgICAgICAgewotICAgICAgICAgICAgbUNvbnRlbnRMb2NhdGlvbiA9IG1UZXh0dWFsSGVhZGVyc1tpXS0+Z2V0VmFsdWUoKTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHN0cmluZyBzdHIgPSBtVGV4dHVhbEhlYWRlcnNbaV0tPmdldE5hbWUoKTsKLSAgICAgICAgICAgIHN0ciArPSAiOiI7Ci0gICAgICAgICAgICBzdHIgKz0gbVRleHR1YWxIZWFkZXJzW2ldLT5nZXRWYWx1ZSgpOwotICAgICAgICAgICAgbUN1c3RvbUhlYWRlci5wdXNoX2JhY2soc3RyKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmKHNpbGVudHBvcyA8IHByZXZpZXdwb3MpCi0gICAgewotICAgICAgICBtU2lsZW50Rmlyc3QgPSB0cnVlOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICBtU2lsZW50Rmlyc3QgPSBmYWxzZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotCi0KLQotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvZGNmL0RybUlTdHJlYW0uY3BwIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL2RjZi9Ecm1JU3RyZWFtLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWJjYzE2YS4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvZGNmL0RybUlTdHJlYW0uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLSNpbmNsdWRlIDxkY2YvRHJtSVN0cmVhbS5oPgotCi0KLURybUluU3RyZWFtOjpEcm1JblN0cmVhbShjb25zdCBEY2ZDb250YWluZXIqIGNvbnRhaW5lcix1aW50OF90KiBLZXkpCi06bURjZkNvbihjb250YWluZXIpLG1EZWNyeXB0UG9zKDApCi17Ci0gICAgbWVtY3B5KG1BZXNLZXksS2V5LEFFU19LRVlfTEVOKTsKLX0KLQotdWludDY0X3QgRHJtSW5TdHJlYW06OnNpemUoKSBjb25zdAotewotICAgIHJldHVybiBtRGNmQ29uLT5tUGxhaW50ZXh0TGVuZ3RoOwotfQotCi11aW50NjRfdCBEcm1JblN0cmVhbTo6cmVhZCh1aW50OF90KiBkYXRhLCB1aW50NjRfdCBsZW4pCi17Ci0gICAgaWYoIWRhdGEpCi0gICAgewotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBpZihtRGVjcnlwdFBvcyA+PSBtRGNmQ29uLT5tUGxhaW50ZXh0TGVuZ3RoKQotICAgIHsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgdWludDY0X3QgcmVhZExlbiA9IGxlbjsKLQotICAgIC8vIGNvbWUgdG8gdGhlIGVuZCBvZiBkZWNyeXB0ZWQgZGF0YQotICAgIGlmKG1EZWNyeXB0UG9zICsgbGVuID4gbURjZkNvbi0+bVBsYWludGV4dExlbmd0aCkKLSAgICB7Ci0gICAgICAgIHJlYWRMZW4gPSBtRGNmQ29uLT5tUGxhaW50ZXh0TGVuZ3RoIC0gbURlY3J5cHRQb3M7Ci0gICAgfQotCi0gICAgdWludDY0X3QgZW5jTGVuID0gbURjZkNvbi0+bURhdGFMZW47Ci0gICAgdWludDhfdCogZW5jRGF0YSA9IG5ldyB1aW50OF90W2VuY0xlbl07Ci0KLSAgICBpZighZW5jRGF0YSkKLSAgICB7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIG1EY2ZDb24tPm1Db25TdHJlYW0uc2VlayhtRGNmQ29uLT5tRGVjT2Zmc2V0KTsKLSAgICBtRGNmQ29uLT5tQ29uU3RyZWFtLnJlYWQoZW5jRGF0YSxlbmNMZW4pOwotCi0gICAgdWludDhfdCBpdltBRVNfSVZfTEVOXSA9IHswfTsKLQotICAgIG1lbWNweShpdixlbmNEYXRhLEFFU19JVl9MRU4pOwotICAgIGVuY0xlbiAtPSBBRVNfSVZfTEVOOwotCi0gICAgaWYoQUVTXzEyOF9DQkMgIT0gbURjZkNvbi0+bUVuY3J5cHRpb25NZXRob2QpCi0gICAgewotICAgICAgICBkZWxldGUgW11lbmNEYXRhOwotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBBZXNBZ2VudCBkcm1BZXNEZWNyeXB0KEFFU18xMjhfQ0JDLG1BZXNLZXkpOwotICAgIGludDMyX3QgcGFkTGVuID0gZHJtQWVzRGVjcnlwdC5kZWNDb250ZW50KCBpdiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jRGF0YSArIEFFU19JVl9MRU4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY0xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSk7Ci0KLSAgICBkZWxldGUgW11lbmNEYXRhOwotCi0gICAgaWYocGFkTGVuID49IDApCi0gICAgewotICAgICAgICByZXR1cm4gcmVhZExlbjsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotfQotCi0KLQotCi0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy9kY2YvRHJtUmF3Q29udGVudC5jcHAgYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvZGNmL0RybVJhd0NvbnRlbnQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODEzZTNjLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy9kY2YvRHJtUmF3Q29udGVudC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxNjQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLSNpbmNsdWRlIDxkY2YvRHJtUmF3Q29udGVudC5oPgotCi0KLURybVJhd0NvbnRlbnQ6OkRybVJhd0NvbnRlbnQoaXN0cmVhbSYgaW5SYXdEYXRhKQotewotICAgIHVpbnQzMl90IGNvdW50ID0gaW5SYXdEYXRhLnN0cmVhbV9zaXplKCk7Ci0KLSAgICBpZiAoY291bnQgPD0gTUFYX1BJRUNFX0xFTikKLSAgICB7Ci0gICAgICAgIHVpbnQ4X3QqIGRhdGEgPSBuZXcgdWludDhfdFtjb3VudF07Ci0KLSAgICAgICAgaWYoIWRhdGEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGluUmF3RGF0YS5yZWFkKGRhdGEsY291bnQpOwotCi0gICAgICAgIGNvbnN0IHVpbnQ4X3QqIGRjZiA9IGRhdGE7Ci0KLSAgICAgICAgLy9wYXJzZSBEQ0YgZmlsZSBoZWFkZXIKLSAgICAgICAgaWYoZmFsc2UgPT0gcGFyc2VEY2ZIZWFkZXIoZGNmKSkKLSAgICAgICAgewotICAgICAgICAgICAgZGVsZXRlIFtdZGF0YTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGRjZiA9IGRhdGE7Ci0gICAgICAgIGRjZiArPSBGSVhfSEVBREVSX0xFTjsKLQotICAgICAgICBpZihkY2YgPj0gKGRhdGEgKyBjb3VudCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIHBhcnNlIGNvbnRhaW5lciBib3gKLSAgICAgICAgRnVsbEJveCBjb25GdWxsQm94KGRjZik7Ci0KLSAgICAgICAgaWYoRENGX0NPTlRBSU5FUl9CT1ggIT0gY29uRnVsbEJveC5nZXRUeXBlKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vY2hlY2sgd2hldGhlciBpdCBpcyBtdWx0aXBhcnQgRENGIG9yIG5vdAotICAgICAgICBkbwotICAgICAgICB7Ci0gICAgICAgICAgICB1aW50NjRfdCBzaXplID0gY29uRnVsbEJveC5nZXRTaXplKCk7Ci0KLSAgICAgICAgICAgIG1Db250YWluZXIucHVzaF9iYWNrKG5ldyBEY2ZDb250YWluZXIoZGNmLGluUmF3RGF0YSxkY2YtZGF0YSkpOwotCi0gICAgICAgICAgICBkY2YgKz0gc2l6ZTsKLQotICAgICAgICAgICAgLy8gY29tZSB0byB0aGUgZW5kIG9mIHJhdyBjb250ZW50Ci0gICAgICAgICAgICBpZihkY2YgPj0gKGRhdGEgKyBjb3VudCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGNvbkZ1bGxCb3ggPSBGdWxsQm94KGRjZik7Ci0gICAgICAgIH13aGlsZShEQ0ZfQ09OVEFJTkVSX0JPWCA9PSBjb25GdWxsQm94LmdldFR5cGUoKSk7Ci0KLSAgICAgICAgLy8gY29tcHV0ZSBEQ0YgaGFzaCB1c2luZyBTaGExQWdlbnQKLSAgICAgICAgU2hhMUFnZW50IGRybVNoYTFIYXNoOwotICAgICAgICBkcm1TaGExSGFzaC5jb21wdXRlSGFzaChkYXRhLGRjZi1kYXRhLG1EY2ZIYXNoKTsKLQotICAgICAgICAvLy8vIHBhcnNlIG11dGFibGUgYm94Ci0KLSAgICAgICAgZGVsZXRlIFtdZGF0YTsKLSAgICB9Ci19Ci0KLURybVJhd0NvbnRlbnQ6On5Ecm1SYXdDb250ZW50KCkKLXsKLSAgICB1aW50MzJfdCBzaXplID0gbUNvbnRhaW5lci5zaXplKCk7Ci0KLSAgICBmb3IodWludDMyX3QgaSA9IDA7IGkgPCBzaXplOyBpKyspCi0gICAgewotICAgICAgICBkZWxldGUgbUNvbnRhaW5lcltpXTsKLSAgICB9Ci0KLSAgICBtQ29udGFpbmVyLmNsZWFyKCk7Ci19Ci0KLXZlY3RvcjxEY2ZDb250YWluZXIqPiBEcm1SYXdDb250ZW50OjpnZXRDb250ZW50cyh2b2lkKSBjb25zdAotewotICAgIHJldHVybiBtQ29udGFpbmVyOwotfQotCi11aW50MzJfdCBEcm1SYXdDb250ZW50OjpnZXREY2ZIYXNoTGVuKCkgY29uc3QKLXsKLSAgICByZXR1cm4gRENGX0hBU0hfTEVOOwotfQotCi12b2lkIERybVJhd0NvbnRlbnQ6OmdldERjZkhhc2godWludDhfdCogb3V0RGNmSGFzaCkgY29uc3QKLXsKLSAgICBpZihvdXREY2ZIYXNoKQotICAgIHsKLSAgICAgICAgbWVtY3B5KG91dERjZkhhc2gsbURjZkhhc2gsRENGX0hBU0hfTEVOKTsKLSAgICB9Ci0KLSAgICByZXR1cm47Ci19Ci0KLWJvb2wgRHJtUmF3Q29udGVudDo6cGFyc2VEY2ZIZWFkZXIoY29uc3QgdWludDhfdCogZGNmSGVhZCkKLXsKLSAgICBpZighZGNmSGVhZCkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBpZihGSVhfSEVBREVSX0xFTiAhPSBudG9obCgqKHVpbnQzMl90ICopZGNmSGVhZCkpCi0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgZGNmSGVhZCArPSA0OwotICAgIHVpbnQzMl90IHR5cGUgPSAqKHVpbnQzMl90ICopZGNmSGVhZDsKLQotICAgIGlmKERDRl9GSUxFX1RZUEUgIT0gdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBkY2ZIZWFkICs9IDQ7Ci0gICAgdHlwZSA9ICoodWludDMyX3QgKilkY2ZIZWFkOwotCi0gICAgaWYoRENGX0ZJTEVfQlJBTkQgIT0gdHlwZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBkY2ZIZWFkICs9IDQ7Ci0gICAgaWYoMiAhPSBudG9obCgqKHVpbnQzMl90ICopZGNmSGVhZCkpCi0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgZGNmSGVhZCArPSA0OwotICAgIHR5cGUgPSAqKHVpbnQzMl90ICopZGNmSGVhZDsKLQotICAgIGlmKERDRl9GSUxFX0JSQU5EICE9IHR5cGUpCi0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgZGNmSGVhZCArPSA0OwotICAgIHJldHVybiB0cnVlOwotfQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL2RybW1hbmFnZXIvRHJtTWFuYWdlci5jcHAgYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvZHJtbWFuYWdlci9Ecm1NYW5hZ2VyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTk5NTI2Zi4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvZHJtbWFuYWdlci9Ecm1NYW5hZ2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotI2luY2x1ZGUgPGRybW1hbmFnZXIvRHJtTWFuYWdlci5oPgotI2luY2x1ZGUgPHVzdHJpbmcuaD4KLSNpbmNsdWRlIDxvZnN0cmVhbS5oPgotI2luY2x1ZGUgPHNvc3RyZWFtLmg+Ci0jaW5jbHVkZSA8c2lzdHJlYW0uaD4KLXVzaW5nIG5hbWVzcGFjZSB1c3RsOwotCi0vKipzZWUgRHJtTWFuYWdlci5oICovCi1Ecm1NYW5hZ2VyOjpEcm1NYW5hZ2VyKGlzdHJlYW0gKiBpblJhd0RhdGEpCi17Ci0gICAgbURjZlN0cmVhbSA9IE5VTEw7Ci0gICAgaWYgKGluUmF3RGF0YSAhPSBOVUxMKQotICAgIHsKLSAgICAgICAgbURjZlN0cmVhbSA9IGluUmF3RGF0YTsKLSAgICB9Ci19Ci0KLS8qKnNlZSBEcm1NYW5hZ2VyLmggKi8KLURybU1hbmFnZXI6OkRybU1hbmFnZXIoaXN0cmVhbSAqIGluUmF3RGF0YSwgc3RyaW5nIG1pbWVUeXBlKQotewotICAgIG1EY2ZTdHJlYW0gPSBpblJhd0RhdGE7Ci19Ci0KLS8qKnNlZSBEcm1NYW5hZ2VyLmggKi8KLWludDE2X3QgRHJtTWFuYWdlcjo6Z2V0TGlzdE9mRGNmT2JqZWN0cyh2ZWN0b3I8RGNmQ29udGFpbmVyKj4gKipvdXREY2ZMaXN0KQotewotICAgIC8qKiBjYWxsIGRjZiBmdW5jdGlvbnMgdG8gcGFyc2UgdGhlIGRjZiBmaWxlKi8KLSAgICBpZiAoTlVMTCA9PSBtRGNmU3RyZWFtKQotICAgIHsKLSAgICAgICAgcmV0dXJuIEVSUl9EQ0ZTVFJFQU1fTk9UX0lOSVRJQUxJWkVEOwotICAgIH0KLSAgICBpZiAoTlVMTCA9PSBvdXREY2ZMaXN0KQotICAgIHsKLSAgICAgICAgcmV0dXJuIEVSUl9EQ0ZTVFJFQU1fTk9UX0lOSVRJQUxJWkVEOwotICAgIH0KLSAgICAqb3V0RGNmTGlzdD0mbURjZnM7Ci0gICAgcmV0dXJuIERSTV9PSzsKLX0KLQotLyoqc2VlIERybU1hbmFnZXIuaCAqLwotaW50MTZfdCBEcm1NYW5hZ2VyOjpvcGVuRGVjcnlwdGVkQ29udGVudChEY2ZDb250YWluZXIgKm9uZURjZk9iamVjdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MTZfdCBvcGVyYXRpb25UeXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc3RyZWFtICpvdXREZWNyeXB0ZWREYXRhKQotewotICAgIHJldHVybiAxOwotfQotCi0vKipzZWUgRHJtTWFuYWdlci5oICovCi1Ecm1NYW5hZ2VyOjp+RHJtTWFuYWdlcigpCi17Ci0KLX0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy9yaWdodHMvQXNzZXQuY3BwIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3JpZ2h0cy9Bc3NldC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyMGI0NjUuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3JpZ2h0cy9Bc3NldC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLSNpbmNsdWRlIDxyaWdodHMvQXNzZXQuaD4KLQotLyoqIHNlZSBBc3NldC5oICovCi1Bc3NldDo6QXNzZXQoKQote30KLQotLyoqIHNlZSBBc3NldC5oICovCi1Bc3NldDo6fkFzc2V0KCkKLXt9Ci0KLS8qKiBzZWUgQXNzZXQuaCAqLwotYm9vbCBBc3NldDo6aGFzUGFyZW50KCkKLXsKLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLS8qKiBzZWUgQXNzZXQuaCAqLwotdm9pZCBBc3NldDo6c2V0SUQoY29uc3Qgc3RyaW5nICZpZCkKLXsKLSAgICBtQXNzZXRJRCA9IGlkOwotfQotCi0vKiogc2VlIEFzc2V0LmggKi8KLWNvbnN0IHN0cmluZyYgQXNzZXQ6OmdldElEKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbUFzc2V0SUQ7Ci19Ci0KLS8qKiBzZWUgQXNzZXQuaCAqLwotdm9pZCBBc3NldDo6c2V0Q29udGVudElEKGNvbnN0IHN0cmluZyAmaWQpCi17Ci0gICAgbUNvbnRlbnRJRCA9IGlkOwotfQotCi0vKiogc2VlIEFzc2V0LmggKi8KLWNvbnN0IHN0cmluZyYgQXNzZXQ6OmdldENvbnRlbnRJRCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1Db250ZW50SUQ7Ci19Ci0KLS8qKiBzZWUgQXNzZXQuaCAqLwotdm9pZCBBc3NldDo6c2V0RW5jcnlwdGVkS2V5KGNvbnN0IHN0cmluZyAma2V5KQotewotICAgIG1FbmNyeXB0ZWRLZXkgPSBrZXk7Ci19Ci0KLS8qKiBzZWUgQXNzZXQuaCAqLwotdm9pZCBBc3NldDo6c2V0RENGRGlnZXN0KGNvbnN0IHN0cmluZyAmdmFsdWUpCi17Ci0gICAgbURpZ2VzdFZhbHVlID0gdmFsdWU7Ci19Ci0KLS8qKiBzZWUgQXNzZXQuaCAqLwotY29uc3Qgc3RyaW5nJiBBc3NldDo6Z2V0RENGRGlnZXN0KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbURpZ2VzdFZhbHVlOwotfQotCi0vKiogc2VlIEFzc2V0LmggKi8KLXZvaWQgQXNzZXQ6OnNldEtleVJldHJpZXZhbE1ldGhvZChjb25zdCBzdHJpbmcgJnJtKQotewotICAgIG1SZXRyaWV2YWxNZXRob2QgPSBybTsKLX0KLQotLyoqIHNlZSBBc3NldC5oICovCi12b2lkIEFzc2V0OjpzZXRQYXJlbnRDb250ZW50SUQoY29uc3Qgc3RyaW5nICZpZCkKLXsKLSAgICBtUGFyZW50Q29udGVudElEID0gaWQ7Ci19Ci0KLS8qKiBzZWUgQXNzZXQuaCAqLwotY29uc3Qgc3RyaW5nJiBBc3NldDo6Z2V0RW5jcnl0ZWRLZXkoKSBjb25zdAotewotICAgIHJldHVybiBtRW5jcnlwdGVkS2V5OwotfQotCi0vKiogc2VlIEFzc2V0LmggKi8KLWNvbnN0IGNoYXIqIEFzc2V0OjpnZXRDZWsoKSBjb25zdAotewotICAgIHJldHVybiBOVUxMOwotfQotCi0vKiogc2VlIEFzc2V0LmggKi8KLXZvaWQgQXNzZXQ6OnJlY292ZXJDZWsoKQotewotLy9maXggbGF0ZXIuCi0KLX0KLQotLyoqIHNlZSBBc3NldC5oICovCi1jb25zdCBzdHJpbmcmIEFzc2V0OjpnZXRQYXJlbnRDb250ZW50SUQoKSBjb25zdAotewotICAgIHJldHVybiBtUGFyZW50Q29udGVudElEOwotfQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3JpZ2h0cy9Db25zdHJhaW50LmNwcCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy9yaWdodHMvQ29uc3RyYWludC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjYjQzMTEuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3JpZ2h0cy9Db25zdHJhaW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxMCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotI2luY2x1ZGUgPHJpZ2h0cy9Db25zdHJhaW50Lmg+Ci0KLS8qKiBzZWUgQ29uc3RyYWludC5oICovCi1Db25zdHJhaW50OjpDb25zdHJhaW50KCkKLXsKLSAgICBtQ291bnQgPSBJTklUX1ZBTFVFOwotICAgIG1UaW1lZENvdW50ID0gSU5JVF9WQUxVRTsKLSAgICBtVGltZXIgPSBJTklUX1ZBTFVFOwotICAgIG1TdGFydCA9IElOSVRfVkFMVUU7Ci0gICAgbUVuZCA9IElOSVRfVkFMVUU7Ci0gICAgbUludGVydmFsID0gSU5JVF9WQUxVRTsKLSAgICBtQWNjdW11bGF0ZWQgPSBJTklUX1ZBTFVFOwotICAgIG1FeHBvcnQgPSBOT05FOwotfQotCi0vKiogc2VlIENvbnN0cmFpbnQuaCAqLwotQ29uc3RyYWludDo6fkNvbnN0cmFpbnQoKQote30KLQotLyoqIHNlZSBDb25zdHJhaW50LmggKi8KLWJvb2wgQ29uc3RyYWludDo6aXNVbkNvbnN0cmFpbnQoKSBjb25zdAotewotICAgIHJldHVybiAobUNvdW50ID09IElOSVRfVkFMVUUgJiYgbVRpbWVkQ291bnQgPT0gSU5JVF9WQUxVRSAmJgotICAgICAgICAgICAgbVRpbWVyID09IElOSVRfVkFMVUUgJiYgbVN0YXJ0ID09IElOSVRfVkFMVUUgJiYKLSAgICAgICAgICAgIG1FbmQgPT0gSU5JVF9WQUxVRSAmJiBtSW50ZXJ2YWwgPT0gSU5JVF9WQUxVRSAmJgotICAgICAgICAgICAgbUFjY3VtdWxhdGVkID09IElOSVRfVkFMVUUgJiYgbUV4cG9ydCA9PSBOT05FICYmCi0gICAgICAgICAgICBtU3lzdGVtTGlzdC5lbXB0eSgpKTsKLX0KLQotLyoqIHNlZSBDb25zdHJhaW50LmggKi8KLWJvb2wgQ29uc3RyYWludDo6aXNEYXRlVGltZUNvbnN0cmFpbnQoKSBjb25zdAotewotICAgIHJldHVybiAhKG1TdGFydCA9PSBJTklUX1ZBTFVFICYmIG1FbmQgPT0gSU5JVF9WQUxVRSk7Ci19Ci0KLS8qKiBzZWUgQ29uc3RyYWludC5oICovCi1ib29sIENvbnN0cmFpbnQ6OmlzSW50ZXJ2YWxDb25zdHJhaW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gIShtSW50ZXJ2YWwgPT0gSU5JVF9WQUxVRSk7Ci19Ci0KLS8qKiBzZWUgQ29uc3RyYWludC5oICovCi1ib29sIENvbnN0cmFpbnQ6OmlzVGltZWRDb3VudENvbnN0cmFpbnQoKSBjb25zdAotewotICAgIHJldHVybiAhKG1UaW1lZENvdW50ID09IElOSVRfVkFMVUUpOwotfQotCi0vKiogc2VlIENvbnN0cmFpbnQuaCAqLwotYm9vbCBDb25zdHJhaW50Ojppc1ZhbGlkKGxvbmcgdGltZSkgY29uc3QKLXsKLSAgICBpZiAoaXNVbkNvbnN0cmFpbnQoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIGlmIChpc0RhdGVUaW1lQ29uc3RyYWludCgpKQotICAgIHsKLSAgICAgICAgaWYgKHRpbWUgPCBtU3RhcnQgfHwgdGltZSA+IG1FbmQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmIChtSW50ZXJ2YWwgPT0gMCB8fCBtQ291bnQgPT0gMCB8fAotICAgICAgICBtVGltZWRDb3VudCA9PSAwIHx8IG1BY2N1bXVsYXRlZCA9PSAwKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCi0vKiogc2VlIENvbnN0cmFpbnQuaCAqLwotdm9pZCBDb25zdHJhaW50OjpzZXRTdGFydFRpbWUobG9uZyB0aW1lKQotewotICAgIG1TdGFydCA9IHRpbWU7Ci19Ci0KLS8qKiBzZWUgQ29uc3RyYWludC5oICovCi1sb25nIENvbnN0cmFpbnQ6OmdldFN0YXJ0VGltZSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1TdGFydDsKLX0KLQotLyoqIHNlZSBDb25zdHJhaW50LmggKi8KLXZvaWQgQ29uc3RyYWludDo6c2V0RW5kVGltZShsb25nIHRpbWUpCi17Ci0gICAgbUVuZCA9IHRpbWU7Ci19Ci0KLS8qKiBzZWUgQ29uc3RyYWludC5oICovCi1sb25nIENvbnN0cmFpbnQ6OmdldEVuZFRpbWUoKSBjb25zdAotewotICAgIHJldHVybiBtRW5kOwotfQotCi0vKiogc2VlIENvbnN0cmFpbnQuaCAqLwotdm9pZCBDb25zdHJhaW50OjpzZXRBY2N1bXVsYXRlZChsb25nIHRpbWUpCi17Ci0gICAgbUFjY3VtdWxhdGVkID0gdGltZTsKLX0KLQotLyoqIHNlZSBDb25zdHJhaW50LmggKi8KLWxvbmcgQ29uc3RyYWludDo6Z2V0QWNjdW11bGF0ZWQoKSBjb25zdAotewotICAgIHJldHVybiBtQWNjdW11bGF0ZWQ7Ci19Ci0KLS8qKiBzZWUgQ29uc3RyYWludC5oICovCi12b2lkIENvbnN0cmFpbnQ6OnNldENvdW50KGludCBjb3VudCkKLXsKLSAgICBtQ291bnQgPSBjb3VudDsKLX0KLQotLyoqIHNlZSBDb25zdHJhaW50LmggKi8KLWludCBDb25zdHJhaW50OjpnZXRDb3VudCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1Db3VudDsKLX0KLQotLyoqIHNlZSBDb25zdHJhaW50LmggKi8KLXZvaWQgQ29uc3RyYWludDo6c2V0VGltZXIoaW50IHRpbWVyKQotewotICAgIG1UaW1lciA9IHRpbWVyOwotfQotCi0vKiogc2VlIENvbnN0cmFpbnQuaCAqLwotaW50IENvbnN0cmFpbnQ6OmdldFRpbWVyKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbVRpbWVyOwotfQotCi0vKiogc2VlIENvbnN0cmFpbnQuaCAqLwotdm9pZCBDb25zdHJhaW50OjpzZXRUaW1lZENvdW50KGludCB0aW1lZENvdW50KQotewotICAgIG1UaW1lZENvdW50ID0gdGltZWRDb3VudDsKLX0KLQotLyoqIHNlZSBDb25zdHJhaW50LmggKi8KLWludCBDb25zdHJhaW50OjpnZXRUaW1lZENvdW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbVRpbWVkQ291bnQ7Ci19Ci0KLS8qKiBzZWUgQ29uc3RyYWludC5oICovCi12b2lkIENvbnN0cmFpbnQ6OnNldEludGVydmFsKGludCBpbnRlcnZhbCkKLXsKLSAgICBtSW50ZXJ2YWwgPSBpbnRlcnZhbDsKLX0KLQotLyoqIHNlZSBDb25zdHJhaW50LmggKi8KLWludCBDb25zdHJhaW50OjpnZXRJbnRlcnZhbCgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG1JbnRlcnZhbDsKLX0KLQotLyoqIHNlZSBDb25zdHJhaW50LmggKi8KLXZvaWQgQ29uc3RyYWludDo6c2V0RXhwb3J0TW9kZShNT0RFIG1vZGUpCi17Ci0gICAgbUV4cG9ydCA9IG1vZGU7Ci19Ci0KLS8qKiBzZWUgQ29uc3RyYWludC5oICovCi1Db25zdHJhaW50OjpNT0RFIENvbnN0cmFpbnQ6OmdldEV4cG9ydE1vZGUoKSBjb25zdAotewotICAgIHJldHVybiBtRXhwb3J0OwotfQotCi0vKiogc2VlIENvbnN0cmFpbnQuaCAqLwotYm9vbCBDb25zdHJhaW50Ojpjb25zdW1lKCkKLXsKLSAgICBpZiAoaXNVbkNvbnN0cmFpbnQoKSkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIGlmIChtQ291bnQgPiAwKQotICAgIHsKLSAgICAgICAgbUNvdW50LS07Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIGlmIChtQWNjdW11bGF0ZWQgPiAwKQotICAgIHsKLSAgICAgICAgbUFjY3VtdWxhdGVkLS07Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLQotICAgIGlmIChtVGltZWRDb3VudCA+IDApCi0gICAgewotCi0gICAgfQotICAgIHJldHVybiBmYWxzZTsKLX0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy9yaWdodHMvT3BlcmF0aW9uUGVybWlzc2lvbi5jcHAgYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvcmlnaHRzL09wZXJhdGlvblBlcm1pc3Npb24uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYzc1ZmIxLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy9yaWdodHMvT3BlcmF0aW9uUGVybWlzc2lvbi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotI2luY2x1ZGUgPHJpZ2h0cy9PcGVyYXRpb25QZXJtaXNzaW9uLmg+Ci0jaW5jbHVkZSA8cmlnaHRzL0NvbnN0cmFpbnQuaD4KLQotLyoqIHNlZSBPcGVyYXRpb25QZXJtaXNzaW9uLmggKi8KLU9wZXJhdGlvblBlcm1pc3Npb246Ok9wZXJhdGlvblBlcm1pc3Npb24oKSA6IG1Db25zdHJhaW50KE5VTEwpCi17Ci0KLX0KLQotLyoqIHNlZSBPcGVyYXRpb25QZXJtaXNzaW9uLmggKi8KLU9wZXJhdGlvblBlcm1pc3Npb246Ok9wZXJhdGlvblBlcm1pc3Npb24oT1BFUkFUSU9OIHR5cGUsIENvbnN0cmFpbnQgKmNzdCkgOiBtVHlwZSh0eXBlKSwgbUNvbnN0cmFpbnQoY3N0KQotewotCi19Ci0KLS8qKiBzZWUgT3BlcmF0aW9uUGVybWlzc2lvbi5oICovCi1PcGVyYXRpb25QZXJtaXNzaW9uOjp+T3BlcmF0aW9uUGVybWlzc2lvbigpCi17Ci0gICAgZGVsZXRlIG1Db25zdHJhaW50OwotfQotCi0vKiogc2VlIE9wZXJhdGlvblBlcm1pc3Npb24uaCAqLwotdm9pZCBPcGVyYXRpb25QZXJtaXNzaW9uOjpzZXRUeXBlKE9QRVJBVElPTiB0eXBlKQotewotICAgIG1UeXBlID0gdHlwZTsKLX0KLQotLyoqIHNlZSBPcGVyYXRpb25QZXJtaXNzaW9uLmggKi8KLU9wZXJhdGlvblBlcm1pc3Npb246Ok9QRVJBVElPTiBPcGVyYXRpb25QZXJtaXNzaW9uOjpnZXRUeXBlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbVR5cGU7Ci19Ci0KLS8qKiBzZWUgT3BlcmF0aW9uUGVybWlzc2lvbi5oICovCi12b2lkIE9wZXJhdGlvblBlcm1pc3Npb246OmFkZENvbnN0cmFpbnQoQ29uc3RyYWludCogY29uc3RyYWludCkKLXsKLSAgICBtQ29uc3RyYWludCA9IGNvbnN0cmFpbnQ7Ci19Ci0KLS8qKiBzZWUgT3BlcmF0aW9uUGVybWlzc2lvbi5oICovCi1Db25zdHJhaW50KiBPcGVyYXRpb25QZXJtaXNzaW9uOjpnZXRDb25zdHJhaW50KCkgY29uc3QKLXsKLSAgICByZXR1cm4gbUNvbnN0cmFpbnQ7Ci19CmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvcmlnaHRzL1JpZ2h0LmNwcCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy9yaWdodHMvUmlnaHQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YmU5YzcwLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy9yaWdodHMvUmlnaHQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNzkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0jaW5jbHVkZSA8cmlnaHRzL1JpZ2h0Lmg+Ci0jaW5jbHVkZSA8cmlnaHRzL09wZXJhdGlvblBlcm1pc3Npb24uaD4KLSNpbmNsdWRlIDxyaWdodHMvQ29uc3RyYWludC5oPgotCi0vKiogc2VlIFJpZ2h0LmggKi8KLVJpZ2h0OjpSaWdodCgpCi17Ci0KLX0KLQotLyoqIHNlZSBSaWdodC5oICovCi1SaWdodDo6flJpZ2h0KCkKLXsKLSAgICAgdmVjdG9yPE9wZXJhdGlvblBlcm1pc3Npb24qPjo6aXRlcmF0b3IgaXQ7Ci0KLSAgICAgZm9yIChpdCA9IG1PcExpc3QuYmVnaW4oKTsgaXQgIT0gbU9wTGlzdC5lbmQoKTsgaXQrKykKLSAgICAgewotICAgICAgICBkZWxldGUoKml0KTsKLSAgICAgfQotCi0gICAgIG1PcExpc3QuY2xlYXIoKTsKLX0KLQotLyoqIHNlZSBSaWdodC5oICovCi12b2lkIFJpZ2h0OjphZGRBc3NldElEKGNvbnN0IHN0cmluZyYgaWQpCi17Ci0gICAgbUFzc2V0TmFtZUxpc3QucHVzaF9iYWNrKGlkKTsKLX0KLQotLyoqIHNlZSBSaWdodC5oICovCi12b2lkIFJpZ2h0OjphZGRPcGVyYXRpb25QZXJtaXNzaW9uKE9wZXJhdGlvblBlcm1pc3Npb24qIG9wKQotewotICAgIG1PcExpc3QucHVzaF9iYWNrKG9wKTsKLX0KLQotLyoqIHNlZSBSaWdodC5oICovCi1ib29sIFJpZ2h0OjpjaGVja1Blcm1pc3Npb24oT3BlcmF0aW9uUGVybWlzc2lvbjo6T1BFUkFUSU9OIHR5cGUpCi17Ci0gICAgZm9yICh2ZWN0b3I8T3BlcmF0aW9uUGVybWlzc2lvbio+OjppdGVyYXRvciBpdCA9IG1PcExpc3QuYmVnaW4oKTsKLSAgICAgICAgICAgICBpdCAhPSBtT3BMaXN0LmVuZCgpOyBpdCsrKQotICAgIHsKLSAgICAgICAgaWYgKCgqaXQpLT5nZXRUeXBlKCkgPT0gdHlwZSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KLS8qKiBzZWUgUmlnaHQuaCAqLwotQ29uc3RyYWludCogUmlnaHQ6OmdldENvbnN0cmFpbnQoT3BlcmF0aW9uUGVybWlzc2lvbjo6T1BFUkFUSU9OIHR5cGUpCi17Ci0gICAgZm9yICh2ZWN0b3I8T3BlcmF0aW9uUGVybWlzc2lvbio+OjppdGVyYXRvciBpdCA9IG1PcExpc3QuYmVnaW4oKTsKLSAgICAgICAgICAgICBpdCAhPSBtT3BMaXN0LmVuZCgpOyBpdCsrKQotICAgIHsKLSAgICAgICAgaWYgKCgqaXQpLT5nZXRUeXBlKCkgPT0gdHlwZSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuICgqaXQpLT5nZXRDb25zdHJhaW50KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gTlVMTDsKLX0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy9yaWdodHMvUm8uY3BwIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3JpZ2h0cy9Sby5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxNDFlMTcuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3JpZ2h0cy9Sby5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw4MzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLSNpbmNsdWRlIDxyaWdodHMvUm8uaD4KLSNpbmNsdWRlIDxyaWdodHMvQ29uc3RyYWludC5oPgotI2luY2x1ZGUgPHJpZ2h0cy9PcGVyYXRpb25QZXJtaXNzaW9uLmg+Ci0jaW5jbHVkZSA8dXRpbC94bWwvRG9tRXhwYXRBZ2VudC5oPgotI2luY2x1ZGUgPHV0aWwvZG9tY29yZS9ET01TdHJpbmcuaD4KLSNpbmNsdWRlIDx1dGlscy9Mb2cuaD4KLQotI2luY2x1ZGUgPHVhc3NlcnQuaD4KLSNpbmNsdWRlIDx0aW1lLmg+Ci0jaW5jbHVkZSA8b2ZzdHJlYW0uaD4KLXVzaW5nIG5hbWVzcGFjZSB1c3RsOwotCi1jb25zdCBjaGFyICpTVFJfUk9fUklHSFRTID0gIm8tZXg6cmlnaHRzIjsKLWNvbnN0IGNoYXIgKlNUUl9ST19DT05URVhUID0gIm8tZXg6Y29udGV4dCI7Ci1jb25zdCBjaGFyICpTVFJfUk9fQUdSRUVNRU5UID0gIm8tZXg6YWdyZWVtZW50IjsKLWNvbnN0IGNoYXIgKlNUUl9ST19BU1NFVCA9ICJvLWV4OmFzc2V0IjsKLWNvbnN0IGNoYXIgKlNUUl9ST19JTkhFUklUID0gIm8tZXg6aW5oZXJpdCI7Ci1jb25zdCBjaGFyICpTVFJfUk9fRElHRVNUID0gIm8tZXg6ZGlnZXN0IjsKLWNvbnN0IGNoYXIgKlNUUl9ST19LRVlJTkZPID0gImRzOktleUluZm8iOwotY29uc3QgY2hhciAqU1RSX1JPX1BFUk1JU1NJT04gPSAiby1leDpwZXJtaXNzaW9uIjsKLWNvbnN0IGNoYXIgKlNUUl9ST19BU1NFVF9JRCA9ICJvLWV4OmlkIjsKLWNvbnN0IGNoYXIgKlNUUl9ST19BU1NFVF9JRFJFRiA9ICJvLWV4OmlkcmVmIjsKLWNvbnN0IGNoYXIgKlNUUl9ST19DT05URVhUX0lEID0gIm8tZGQ6dWlkIjsKLWNvbnN0IGNoYXIgKlNUUl9ST19DT05URVhUX1ZFUlNJT04gPSAiby1kZDp2ZXJzaW9uIjsKLWNvbnN0IGNoYXIgKlNUUl9ST19ESUdFU1RfVkFMVUUgPSAiZHM6RGlnZXN0VmFsdWUiOwotY29uc3QgY2hhciAqU1RSX1JPX0NJUEhFUl9WQUxVRSA9ICJ4ZW5jOkNpcGhlclZhbHVlIjsKLWNvbnN0IGNoYXIgKlNUUl9ST19SRVRSSUVWQUxfTUVUSE9EID0gImRzOlJldHJpZXZhbE1ldGhvZCI7Ci1jb25zdCBjaGFyICpTVFJfUk9fUExBWSA9ICJvLWRkOnBsYXkiOwotY29uc3QgY2hhciAqU1RSX1JPX0RJU1BMQVkgPSAiby1kZDpkaXNwbGF5IjsKLWNvbnN0IGNoYXIgKlNUUl9ST19FWEVDVVRFID0gIm8tZGQ6ZXhlY3V0ZSI7Ci1jb25zdCBjaGFyICpTVFJfUk9fUFJJTlQgPSAiby1kZDpwcmludCI7Ci1jb25zdCBjaGFyICpTVFJfUk9fRVhQT1JUID0gIm8tZGQ6ZXhwb3J0IjsKLWNvbnN0IGNoYXIgKlNUUl9ST19DT05TVFJBSU5UID0gIm8tZXg6Y29uc3RyYWludCI7Ci1jb25zdCBjaGFyICpTVFJfUk9fQ09VTlQgPSAiby1kZDpjb3VudCI7Ci1jb25zdCBjaGFyICpTVFJfUk9fVElNRURDT1VOVCA9ICJvLWRkOnRpbWVkLWNvdW50IjsKLWNvbnN0IGNoYXIgKlNUUl9ST19USU1FUiA9ICJvbWEtZGQ6dGltZXIiOwotY29uc3QgY2hhciAqU1RSX1JPX0lOVEVSVkFMID0gIm8tZGQ6aW50ZXJ2YWwiOwotY29uc3QgY2hhciAqU1RSX1JPX0RBVEVUSU1FID0gIm8tZGQ6ZGF0ZXRpbWUiOwotY29uc3QgY2hhciAqU1RSX1JPX1NUQVJUID0gIm8tZGQ6c3RhcnQiOwotY29uc3QgY2hhciAqU1RSX1JPX0VORCA9ICJvLWRkOmVuZCI7Ci1jb25zdCBjaGFyICpTVFJfUk9fQUNDVU1VTEFURUQgPSAiby1kZDphY2N1bXVsYXRlZCI7Ci1jb25zdCBjaGFyICpTVFJfUk9fSU5ESVZJRFVBTCA9ICJvLWRkOmluZGl2aWR1YWwiOwotY29uc3QgY2hhciAqU1RSX1JPX1NZU1RFTSA9ICJvLWRkOnN5c3RlbSI7Ci0KLS8qKiBzZWUgUm8uaCAqLwotUm86OlJvKCkKLXsKLSAgICBtRG9jID0gbmV3IFhNTERvY3VtZW50SW1wbCgpOwotICAgIG1Qcm9wZXJSaWdodCA9IE5VTEw7Ci19Ci0KLS8qKiBzZWUgUm8uaCAqLwotUm86On5SbygpCi17Ci0gICAgIGZvciAodmVjdG9yPFJpZ2h0Kj46Oml0ZXJhdG9yIGl0ciA9IG1SaWdodExpc3QuYmVnaW4oKTsgaXRyICE9IG1SaWdodExpc3QuZW5kKCk7IGl0cisrKQotICAgICB7Ci0gICAgICAgIGRlbGV0ZSgqaXRyKTsKLSAgICAgfQotCi0gICAgIG1SaWdodExpc3QuY2xlYXIoKTsKLQotICAgICBmb3IgKHZlY3RvcjxBc3NldCo+OjppdGVyYXRvciBpdGEgPSBtQXNzZXRMaXN0LmJlZ2luKCk7IGl0YSAhPSBtQXNzZXRMaXN0LmVuZCgpOyBpdGErKykKLSAgICAgewotICAgICAgICBkZWxldGUoKml0YSk7Ci0gICAgIH0KLQotICAgICBtQXNzZXRMaXN0LmNsZWFyKCk7Ci0KLSAgICAgbVByb3BlclJpZ2h0ID0gTlVMTDsKLSAgICAgZGVsZXRlIG1Eb2M7Ci0KLX0KLQotLyoqIHNlZSBSby5oICovCi12b2lkIFJvOjpzZXRSb0lEKHN0cmluZyYgaWQpCi17Ci0gICAgbVJvSUQgPSBpZDsKLX0KLQotLyoqIHNlZSBSby5oICovCi1jb25zdCBzdHJpbmcmIFJvOjpnZXRSb0lEKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbVJvSUQ7Ci19Ci0KLS8qKiBzZWUgUm8uaCAqLwotdm9pZCBSbzo6c2V0Um9WZXJzaW9uKHN0cmluZyYgdmVyc2lvbikKLXsKLSAgICBtUm9WZXJzaW9uID0gdmVyc2lvbjsKLX0KLQotLyoqIHNlZSBSby5oICovCi12b2lkIFJvOjphZGRBc3NldChBc3NldCogYXNzZXQpCi17Ci0gICAgbUFzc2V0TGlzdC5wdXNoX2JhY2soYXNzZXQpOwotfQotCi0vKiogc2VlIFJvLmggKi8KLXZvaWQgUm86OmFkZFJpZ2h0KFJpZ2h0KiByaWdodCkKLXsKLSAgICBtUmlnaHRMaXN0LnB1c2hfYmFjayhyaWdodCk7Ci19Ci0KLS8qKiBzZWUgUm8uaCAqLwotYm9vbCBSbzo6c2F2ZSgpCi17Ci0gICAgIExPR0koIj09PT09PT09PT09PT09Um8gc2F2ZS49PT09PT09PT09PT09PT09PSIpOwotCi0gICAgIHJldHVybiB0cnVlOwotfQotCi0vKiogc2VlIFJvLmggKi8KLVJvOjpFUlJDT0RFIFJvOjpwYXJzZShpc3RyaW5nc3RyZWFtICpyb1N0cmVhbSkKLXsKLSAgICBEb21FeHBhdEFnZW50IHhtbEFnZW50KG1Eb2MpOwotCi0gICAgaWYgKE5VTEwgPT0gcm9TdHJlYW0pCi0gICAgewotICAgICAgICBMT0dJKCJOVUxMIHN0cmVhbSIpOwotICAgICAgICByZXR1cm4gUk9fTlVMTF9TVFJFQU07Ci0gICAgfQotCi0gICAgaWYgKHhtbEFnZW50LmdlbmVyYXRlRG9jdW1lbnRGcm9tWE1MKHJvU3RyZWFtKSA9PSBmYWxzZSkKLSAgICB7Ci0gICAgICAgIExPR0koImdlbmVyYXRlIHhtbCBkb2MgZXJyb3IiKTsKLSAgICAgICAgcmV0dXJuIFJPX0VSUl9CQURfWE1MOwotICAgIH0KLQotICAgIGhhbmRsZURvY3VtZW50KG1Eb2MpOwotCi0gICAgcmV0dXJuIFJPX09LOwotfQotCi0vKiogc2VlIFJvLmggKi8KLWJvb2wgUm86OmhhbmRsZURvY3VtZW50KGNvbnN0IFhNTERvY3VtZW50SW1wbCogZG9jKQotewotICAgIGFzc2VydChkb2MgIT0gTlVMTCk7Ci0KLSAgICBOb2RlSW1wbCogbm9kZSA9IGRvYy0+Z2V0RG9jdW1lbnRFbGVtZW50KCk7Ci0KLSAgICByZXR1cm4gaGFuZGxlUmlnaHRzKG5vZGUpOwotfQotCi0vKiogc2VlIFJvLmggKi8KLWJvb2wgUm86OmhhbmRsZVJpZ2h0cyhjb25zdCBOb2RlSW1wbCAqY3VyTm9kZSkKLXsKLSAgICBhc3NlcnQoY3VyTm9kZSAhPSBOVUxMKTsKLQotICAgIE5vZGVJbXBsICpub2RlID0gY3VyTm9kZS0+Z2V0Rmlyc3RDaGlsZCgpOwotCi0gICAgd2hpbGUgKE5VTEwgIT0gbm9kZSkKLSAgICB7Ci0gICAgICAgIGNvbnN0IERPTVN0cmluZyogbmFtZTsKLQotICAgICAgICBuYW1lID0gc3RhdGljX2Nhc3Q8Y29uc3QgWE1MRWxlbWVudEltcGwqPihub2RlKS0+Z2V0VGFnTmFtZSgpOwotCi0gICAgICAgIGlmIChuYW1lLT5jb21wYXJlKFNUUl9ST19DT05URVhUKSA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBMT0dJKCJyaWdodHMgY29udGV4dCIpOwotICAgICAgICAgICAgY29uc3QgRE9NU3RyaW5nICp0b2tlbiA9IE5VTEw7Ci0gICAgICAgICAgICB0b2tlbiA9IHN0YXRpY19jYXN0PGNvbnN0IFhNTEVsZW1lbnRJbXBsKj4obm9kZSktPmdldFNvbG9UZXh0KFNUUl9ST19DT05URVhUX0lEKTsKLQotICAgICAgICAgICAgaWYgKHRva2VuKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIExPR0koKnRva2VuKTsKLSAgICAgICAgICAgICAgICBtUm9JRCA9ICp0b2tlbjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgdG9rZW4gPSBzdGF0aWNfY2FzdDxjb25zdCBYTUxFbGVtZW50SW1wbCo+KG5vZGUpLT5nZXRTb2xvVGV4dChTVFJfUk9fQ09OVEVYVF9WRVJTSU9OKTsKLSAgICAgICAgICAgIGlmICh0b2tlbikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBMT0dJKCp0b2tlbik7Ci0gICAgICAgICAgICAgICAgbVJvVmVyc2lvbiA9ICp0b2tlbjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmIChuYW1lLT5jb21wYXJlKFNUUl9ST19BR1JFRU1FTlQpID09IDApCi0gICAgICAgIHsKLQotICAgICAgICAgICAgTE9HSSgicmlnaHRzIGFncmVlbWVudCIpOwotICAgICAgICAgICAgaWYgKGhhbmRsZUFncmVlbWVudChub2RlKSA9PSBmYWxzZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBub2RlID0gbm9kZS0+Z2V0TmV4dFNpYmxpbmcoKTsKLSAgICB9Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLS8qKiBzZWUgUm8uaCAqLwotYm9vbCBSbzo6aGFuZGxlQWdyZWVtZW50KGNvbnN0IE5vZGVJbXBsICpjdXJOb2RlKQotewotICAgIGFzc2VydChjdXJOb2RlICE9IE5VTEwpOwotCi0gICAgTm9kZUltcGwgKm5vZGUgPSBjdXJOb2RlLT5nZXRGaXJzdENoaWxkKCk7Ci0KLSAgICB3aGlsZSAoTlVMTCAhPSBub2RlKQotICAgIHsKLSAgICAgICAgY29uc3QgRE9NU3RyaW5nKiBuYW1lOwotCi0gICAgICAgIG5hbWUgPSBzdGF0aWNfY2FzdDxjb25zdCBYTUxFbGVtZW50SW1wbCo+KG5vZGUpLT5nZXRUYWdOYW1lKCk7Ci0KLSAgICAgICAgaWYgKG5hbWUtPmNvbXBhcmUoU1RSX1JPX0FTU0VUKSA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICAvLyBkbyBzb21ldGhpbmcgYWJvdXQgYXNzZXQuCi0gICAgICAgICAgICBMT0dJKCJhc3NldCIpOwotCi0gICAgICAgICAgICBpZiAoaGFuZGxlQXNzZXQobm9kZSkgPT0gZmFsc2UpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG5hbWUtPmNvbXBhcmUoU1RSX1JPX1BFUk1JU1NJT04pID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vIGRvIHNvbWV0aGluZyBhYm91dCBwZXJtaXNzaW9uLgotICAgICAgICAgICAgTE9HSSgicGVybWlzc2lvbiIpOwotCi0gICAgICAgICAgICBpZiAoaGFuZGxlUGVybWlzc2lvbihub2RlKSA9PSBmYWxzZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBub2RlID0gbm9kZS0+Z2V0TmV4dFNpYmxpbmcoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotLyoqIHNlZSBSby5oICovCi1ib29sIFJvOjpoYW5kbGVBc3NldChjb25zdCBOb2RlSW1wbCAqY3VyTm9kZSkKLXsKLSAgICBhc3NlcnQoY3VyTm9kZSAhPSBOVUxMKTsKLQotICAgIEFzc2V0ICphc3NldCA9IG5ldyBBc3NldCgpOwotCi0gICAgY29uc3QgWE1MRWxlbWVudEltcGwgKmN1ckVsZW1lbnQgPSBzdGF0aWNfY2FzdDxjb25zdCBYTUxFbGVtZW50SW1wbCo+KGN1ck5vZGUpOwotCi0gICAgaWYgKGN1ckVsZW1lbnQtPmhhc0F0dHJpYnV0ZXMoKSkKLSAgICB7Ci0gICAgICAgIERPTVN0cmluZyBhc3NldElEKFNUUl9ST19BU1NFVF9JRCk7Ci0gICAgICAgIExPR0koImFzc2V0IGlkOiIpOwotCi0gICAgICAgIGNvbnN0IERPTVN0cmluZyAqaWQgPSBjdXJFbGVtZW50LT5nZXRBdHRyaWJ1dGUoJmFzc2V0SUQpOwotCi0gICAgICAgIGlmIChpZCkKLSAgICAgICAgewotICAgICAgICAgICAgYXNzZXQtPnNldElEKCppZCk7Ci0gICAgICAgIH0KLQotICAgIH0KLQotICAgIE5vZGVJbXBsKiBub2RlID0gY3VyTm9kZS0+Z2V0Rmlyc3RDaGlsZCgpOwotCi0gICAgY29uc3QgRE9NU3RyaW5nICpuYW1lID0gTlVMTDsKLSAgICBjb25zdCBzdHJpbmcgKnRva2VuID0gTlVMTDsKLQotICAgIHdoaWxlIChOVUxMICE9IG5vZGUpCi0gICAgewotICAgICAgICBjdXJFbGVtZW50ID0gc3RhdGljX2Nhc3Q8Y29uc3QgWE1MRWxlbWVudEltcGwqPihub2RlKTsKLSAgICAgICAgbmFtZSA9IGN1ckVsZW1lbnQtPmdldFRhZ05hbWUoKTsKLQotICAgICAgICBpZiAobmFtZS0+Y29tcGFyZShTVFJfUk9fQ09OVEVYVCkgPT0gMCB8fAotICAgICAgICAgICAgbmFtZS0+Y29tcGFyZShTVFJfUk9fSU5IRVJJVCkgPT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgTE9HSSgiYXNzZXQgY29udGV4dCIpOwotCi0gICAgICAgICAgICB0b2tlbiA9IGN1ckVsZW1lbnQtPmdldFNvbG9UZXh0KFNUUl9ST19DT05URVhUX0lEKTsKLSAgICAgICAgICAgIGlmICh0b2tlbikKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBMT0dJKCp0b2tlbik7Ci0KLSAgICAgICAgICAgICAgICBpZiAobmFtZS0+Y29tcGFyZShTVFJfUk9fQ09OVEVYVCkgPT0gMCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGFzc2V0LT5zZXRDb250ZW50SUQoKnRva2VuKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgLy9wYXJlbnQgSUQuCi0gICAgICAgICAgICAgICAgICAgIGFzc2V0LT5zZXRQYXJlbnRDb250ZW50SUQoKnRva2VuKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobmFtZS0+Y29tcGFyZShTVFJfUk9fRElHRVNUKSA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBMT0dJKCJhc3NldCBkaWdlc3QiKTsKLSAgICAgICAgICAgIC8vZGlnZXN0IG1ldGhvZCBpcyBmaXhlZCB2YWx1ZToKLSAgICAgICAgICAgIC8vaHR0cDovL3d3dy53My5vcmcvMjAwMC8wOS94bWxkaXNpZyNzaGExCi0gICAgICAgICAgICB0b2tlbiA9IGN1ckVsZW1lbnQtPmdldFNvbG9UZXh0KFNUUl9ST19ESUdFU1RfVkFMVUUpOwotICAgICAgICAgICAgaWYgKHRva2VuKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIExPR0koKnRva2VuKTsKLSAgICAgICAgICAgICAgICBhc3NldC0+c2V0RENGRGlnZXN0KCp0b2tlbik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobmFtZS0+Y29tcGFyZShTVFJfUk9fS0VZSU5GTykgPT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgTE9HSSgiYXNzZXQga2V5aW5mbyIpOwotCi0gICAgICAgICAgICB0b2tlbiA9IGN1ckVsZW1lbnQtPmdldFNvbG9UZXh0KFNUUl9ST19DSVBIRVJfVkFMVUUpOwotICAgICAgICAgICAgaWYgKHRva2VuKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIExPR0koKnRva2VuKTsKLSAgICAgICAgICAgICAgICBhc3NldC0+c2V0RW5jcnlwdGVkS2V5KCp0b2tlbik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGNvbnN0IFhNTEVsZW1lbnRJbXBsICpub2RlID0gY3VyRWxlbWVudC0+Z2V0U29sb0VsZW1lbnQoU1RSX1JPX1JFVFJJRVZBTF9NRVRIT0QpOwotCi0gICAgICAgICAgICBpZiAobm9kZSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBpZiAobm9kZS0+aGFzQXR0cmlidXRlcygpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgRE9NU3RyaW5nIHVyaSgiVVJJIik7Ci0gICAgICAgICAgICAgICAgICAgIHRva2VuID0gbm9kZS0+Z2V0QXR0cmlidXRlKCZ1cmkpOwotICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW4pCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIExPR0koKnRva2VuKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFzc2V0LT5zZXRLZXlSZXRyaWV2YWxNZXRob2QoKnRva2VuKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIG5vZGUgPSBub2RlLT5nZXROZXh0U2libGluZygpOwotICAgIH0KLQotICAgIHRoaXMtPmFkZEFzc2V0KGFzc2V0KTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotLyoqIHNlZSBSby5oICovCi1ib29sIFJvOjpoYW5kbGVQZXJtaXNzaW9uKGNvbnN0IE5vZGVJbXBsICpjdXJOb2RlKQotewotICAgIGFzc2VydChjdXJOb2RlICE9IE5VTEwpOwotCi0gICAgUmlnaHQgKnJpZ2h0ID0gbmV3IFJpZ2h0KCk7Ci0KLSAgICBjb25zdCBYTUxFbGVtZW50SW1wbCAqY3VyRWxlbWVudCA9IHN0YXRpY19jYXN0PGNvbnN0IFhNTEVsZW1lbnRJbXBsKj4oY3VyTm9kZSk7Ci0KLSAgICBOb2RlSW1wbCogbm9kZSA9IGN1ck5vZGUtPmdldEZpcnN0Q2hpbGQoKTsKLQotICAgIHdoaWxlIChOVUxMICE9IG5vZGUpCi0gICAgewotICAgICAgICBjb25zdCBET01TdHJpbmcgKm5hbWUgPSBOVUxMOwotICAgICAgICBOb2RlTGlzdEltcGwgKm5vZGVMaXN0ID0gTlVMTDsKLQotICAgICAgICBjb25zdCBzdHJpbmcgKnRva2VuID0gTlVMTDsKLSAgICAgICAgY3VyRWxlbWVudCA9IHN0YXRpY19jYXN0PGNvbnN0IFhNTEVsZW1lbnRJbXBsKj4obm9kZSk7Ci0gICAgICAgIG5hbWUgPSBjdXJFbGVtZW50LT5nZXRUYWdOYW1lKCk7Ci0KLSAgICAgICAgaWYgKG5hbWUtPmNvbXBhcmUoU1RSX1JPX0FTU0VUKSA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICBMT0dJKCJwZXJtaXNzaW9uIGFzc2V0Iik7Ci0gICAgICAgICAgICBpZiAoY3VyRWxlbWVudC0+aGFzQXR0cmlidXRlcygpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIERPTVN0cmluZyBhc3NldElEKFNUUl9ST19BU1NFVF9JRFJFRik7Ci0gICAgICAgICAgICAgICAgY29uc3QgRE9NU3RyaW5nICppZCA9IGN1ckVsZW1lbnQtPmdldEF0dHJpYnV0ZSgmYXNzZXRJRCk7Ci0gICAgICAgICAgICAgICAgaWYgKGlkKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmlnaHQtPmFkZEFzc2V0SUQoKmlkKTsKLSAgICAgICAgICAgICAgICAgICAgTE9HSSgqaWQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIE9wZXJhdGlvblBlcm1pc3Npb246Ok9QRVJBVElPTiB0eXBlID0gT3BlcmF0aW9uUGVybWlzc2lvbjo6Tk9ORTsKLQotICAgICAgICBpZiAobmFtZS0+Y29tcGFyZShTVFJfUk9fUExBWSkgPT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgTE9HSSgicGVybWlzc2lvbiBwbGF5IGNvbnN0cmFpbnQiKTsKLSAgICAgICAgICAgIHR5cGUgPSBPcGVyYXRpb25QZXJtaXNzaW9uOjpQTEFZOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG5hbWUtPmNvbXBhcmUoU1RSX1JPX0RJU1BMQVkpID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIExPR0koInBlcm1pc3Npb24gZGlzcGxheSBjb3N0cmFpbnQiKTsKLSAgICAgICAgICAgIHR5cGUgPSBPcGVyYXRpb25QZXJtaXNzaW9uOjpESVNQTEFZOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG5hbWUtPmNvbXBhcmUoU1RSX1JPX0VYRUNVVEUpID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIExPR0koInBlcm1pc3Npb24gZXhlY3V0ZSBjb25zdHJhaW50Iik7Ci0gICAgICAgICAgICB0eXBlID0gT3BlcmF0aW9uUGVybWlzc2lvbjo6RVhFQ1VURTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChuYW1lLT5jb21wYXJlKFNUUl9ST19FWFBPUlQpID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIExPR0koInBlcm1pc3Npb24gZXhwb3J0IGNvbnN0cmFpbnQiKTsKLSAgICAgICAgICAgIHR5cGUgPSBPcGVyYXRpb25QZXJtaXNzaW9uOjpFWFBPUlQ7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobmFtZS0+Y29tcGFyZShTVFJfUk9fUFJJTlQpID09IDApCi0gICAgICAgIHsKLSAgICAgICAgICAgIExPR0koInBlcm1pc3Npb24gcHJpbnQgY29uc3RyYWludCIpOwotICAgICAgICAgICAgdHlwZSA9IE9wZXJhdGlvblBlcm1pc3Npb246OlBSSU5UOwotICAgICAgICB9Ci0KLSAgICAgICAgQ29uc3RyYWludCAqY3N0ID0gTlVMTDsKLQotICAgICAgICBpZiAobmFtZS0+Y29tcGFyZShTVFJfUk9fQ09OU1RSQUlOVCkgPT0gMCkKLSAgICAgICAgewotICAgICAgICAgICAgTE9HSSgicGVybWlzc2lvbiBjb21tb24gY29uc3RyYWludCIpOwotICAgICAgICAgICAgdHlwZSA9IE9wZXJhdGlvblBlcm1pc3Npb246OkNPTU1PTjsKLSAgICAgICAgfQotCi0gICAgICAgIGNzdCA9IGdldENvbnN0cmFpbnQoY3VyRWxlbWVudCk7Ci0gICAgICAgIGlmIChjc3QpCi0gICAgICAgIHsKLSAgICAgICAgICAgIE9wZXJhdGlvblBlcm1pc3Npb24gKm9wID0gbmV3IE9wZXJhdGlvblBlcm1pc3Npb24odHlwZSwgY3N0KTsKLSAgICAgICAgICAgIHJpZ2h0LT5hZGRPcGVyYXRpb25QZXJtaXNzaW9uKG9wKTsKLSAgICAgICAgfQotCi0gICAgICAgIG5vZGUgPSBub2RlLT5nZXROZXh0U2libGluZygpOwotICAgIH0KLQotICAgIHRoaXMtPmFkZFJpZ2h0KHJpZ2h0KTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQotLyoqIHNlZSBSby5oICovCi1sb25nIFJvOjpjb252ZXJ0SVNPODYwMURhdGVUaW1lVG9Mb25nKGNvbnN0IGNoYXIqIHRzKQotewotICAgIGlmIChOVUxMID09IHRzKQotICAgIHsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQotICAgIHN0cnVjdCB0bSB0aW1lOwotICAgIG1lbXNldCgmdGltZSwgMCwgc2l6ZW9mKHN0cnVjdCB0bSkpOwotCi0gICAgc3RycHRpbWUodHMsICIlRlQlVCV6IiwgJnRpbWUpOwotCi0vL25lZWQgdGltZXpvbmUgc3VwcG9ydDogIHJldHVybiBta3RpbWUoJnRpbWUpIC0gdGltZXpvbmU7Ci0vL0l0IHNlZW1zIGFuZHJvaWQtc29vbmVyIGRvZXNuJ3Qgc3VwcG9ydCB0aW1lem9uZSBmdW5jdGlvbi4KLS8vbGluZSBiZWxvdyBpcyBqdXN0IGZvciBidWlsZGluZywgdmFsdWUgd291bGQgYmUgd3JvbmcgaWYgbm8gdGltZXpvbmUgbWludXMuCi0gICAgcmV0dXJuIG1rdGltZSgmdGltZSk7Ci19Ci0KLS8qKiBzZWUgUm8uaCAqLwotbG9uZyBSbzo6Y29udmVydElTTzg2MDFQZXJpb2RUb0xvbmcoY29uc3QgY2hhciogdHMpCi17Ci0gICAgaWYgKE5VTEwgPT0gdHMpCi0gICAgewotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotCi0gICAgaW50IGRhdGUsIGhvdXIsIG1pbiwgc2VjOwotICAgIHNzY2FuZih0cywgIlAlZERUJWRIJWRNJWRTIiwgJmRhdGUsICZob3VyLCAmbWluLCAmc2VjKTsKLSAgICBMT0dJKCIlZCAlZCAlZCAlZCIsIGRhdGUsIGhvdXIsIG1pbiwgc2VjKTsKLSAgICByZXR1cm4gKGRhdGUqMjQqNjAqNjAgKyBob3VyKjYwKjYwICsgbWluKjYwICsgc2VjKTsKLX0KLQotLyoqIHNlZSBSby5oICovCi1Db25zdHJhaW50KiBSbzo6Z2V0Q29uc3RyYWludChjb25zdCBOb2RlSW1wbCogY3VyTm9kZSkKLXsKLSAgICBhc3NlcnQoY3VyTm9kZSAhPSBOVUxMKTsKLQotICAgIENvbnN0cmFpbnQgKmNvbnN0cmFpbnQgPSBuZXcgQ29uc3RyYWludCgpOwotCi0gICAgY29uc3QgWE1MRWxlbWVudEltcGwgKmN1ckVsZW1lbnQgPSBzdGF0aWNfY2FzdDxjb25zdCBYTUxFbGVtZW50SW1wbCo+KGN1ck5vZGUpOwotCi0gICAgY29uc3Qgc3RyaW5nICpuYW1lID0gTlVMTDsKLSAgICBjb25zdCBzdHJpbmcgKnRva2VuID0gTlVMTDsKLQotICAgIGlmICgodG9rZW4gPSBjdXJFbGVtZW50LT5nZXRTb2xvVGV4dChTVFJfUk9fQ09VTlQpKSkKLSAgICB7Ci0gICAgICAgIExPR0koKnRva2VuKTsKLSAgICAgICAgY29uc3RyYWludC0+c2V0Q291bnQoYXRvaSh0b2tlbi0+Y19zdHIoKSkpOwotICAgIH0KLQotICAgIGlmICgodG9rZW4gPSBjdXJFbGVtZW50LT5nZXRTb2xvVGV4dChTVFJfUk9fU1RBUlQpKSkKLSAgICB7Ci0gICAgICAgIExPR0koKnRva2VuKTsKLSAgICAgICAgLy9zdGFydCBUaW1lCi0gICAgICAgIGNvbnN0cmFpbnQtPnNldFN0YXJ0VGltZShjb252ZXJ0SVNPODYwMURhdGVUaW1lVG9Mb25nKHRva2VuLT5jX3N0cigpKSk7Ci0gICAgfQotCi0gICAgaWYgKCh0b2tlbiA9IGN1ckVsZW1lbnQtPmdldFNvbG9UZXh0KFNUUl9ST19FTkQpKSkKLSAgICB7Ci0gICAgICAgIExPR0koKnRva2VuKTsKLSAgICAgICAgLy9lbmQgVGltZQotICAgICAgICBjb25zdHJhaW50LT5zZXRFbmRUaW1lKGNvbnZlcnRJU084NjAxRGF0ZVRpbWVUb0xvbmcodG9rZW4tPmNfc3RyKCkpKTsKLSAgICB9Ci0KLSAgICBpZiAoKHRva2VuID0gY3VyRWxlbWVudC0+Z2V0U29sb1RleHQoU1RSX1JPX0lOVEVSVkFMKSkpCi0gICAgewotICAgICAgICBMT0dJKCp0b2tlbik7Ci0gICAgICAgIGNvbnN0cmFpbnQtPnNldEludGVydmFsKGF0b2kodG9rZW4tPmNfc3RyKCkpKTsKLSAgICB9Ci0KLSAgICBpZiAoKHRva2VuID0gY3VyRWxlbWVudC0+Z2V0U29sb1RleHQoU1RSX1JPX0FDQ1VNVUxBVEVEKSkpCi0gICAgewotICAgICAgICBMT0dJKCp0b2tlbik7Ci0gICAgICAgIC8vUGVyaW9kCi0gICAgICAgIGNvbnN0cmFpbnQtPnNldEFjY3VtdWxhdGVkKGNvbnZlcnRJU084NjAxUGVyaW9kVG9Mb25nKHRva2VuLT5jX3N0cigpKSk7Ci0gICAgfQotCi0gICAgaWYgKCh0b2tlbiA9IGN1ckVsZW1lbnQtPmdldFNvbG9UZXh0KFNUUl9ST19USU1FRENPVU5UKSkpCi0gICAgewotICAgICAgICBMT0dJKCp0b2tlbik7Ci0gICAgICAgIGNvbnN0cmFpbnQtPnNldFRpbWVkQ291bnQoYXRvaSh0b2tlbi0+Y19zdHIoKSkpOwotCi0gICAgICAgIGNvbnN0IFhNTEVsZW1lbnRJbXBsICpub2RlID0gY3VyRWxlbWVudC0+Z2V0U29sb0VsZW1lbnQoU1RSX1JPX1RJTUVEQ09VTlQpOwotCi0gICAgICAgIGlmIChub2RlKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAobm9kZS0+aGFzQXR0cmlidXRlcygpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIERPTVN0cmluZyB0aW1lcihTVFJfUk9fVElNRVIpOwotICAgICAgICAgICAgICAgIHRva2VuID0gbm9kZS0+Z2V0QXR0cmlidXRlKCZ0aW1lcik7Ci0gICAgICAgICAgICAgICAgaWYgKHRva2VuKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgTE9HSSgqdG9rZW4pOwotICAgICAgICAgICAgICAgICAgICBjb25zdHJhaW50LT5zZXRUaW1lcihhdG9pKHRva2VuLT5jX3N0cigpKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICB9Ci0KLSAgICByZXR1cm4gY29uc3RyYWludDsKLX0KLQotLyoqIHNlZSBSby5oICovCi12b2lkIFJvOjpsb2FkUmlnaHRzKGNvbnN0IHN0cmluZyYgY29udGVudElEKQotewotICAgIGZvciAodmVjdG9yPFJpZ2h0Kj46Oml0ZXJhdG9yIGl0ID0gdGhpcy0+bVJpZ2h0TGlzdC5iZWdpbigpOwotICAgICAgICBpdCAhPSB0aGlzLT5tUmlnaHRMaXN0LmVuZCgpOyBpdCsrKQotICAgIHsKLSAgICAgICAgaWYgKCgqaXQpLT5tQXNzZXROYW1lTGlzdC5lbXB0eSgpKQotICAgICAgICB7Ci0gICAgICAgICAgICBtQ29udGVudFJpZ2h0TGlzdC5wdXNoX2JhY2soKml0KTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZvciAodmVjdG9yPEFzc2V0Kj46Oml0ZXJhdG9yIGl0YSA9IHRoaXMtPm1Bc3NldExpc3QuYmVnaW4oKTsKLSAgICAgICAgICAgICAgICAgaXRhICE9IHRoaXMtPm1Bc3NldExpc3QuZW5kKCk7IGl0YSsrKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGZvciAodmVjdG9yPHN0cmluZz46Oml0ZXJhdG9yIGl0cyA9ICgqaXQpLT5tQXNzZXROYW1lTGlzdC5iZWdpbigpOwotICAgICAgICAgICAgICAgICAgICAgaXRzICE9ICgqaXQpLT5tQXNzZXROYW1lTGlzdC5lbmQoKTsgaXRzKyspCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICBpZiAoKCppdHMpLmNvbXBhcmUoKCppdGEpLT5nZXRJRCgpKSA9PSAwKQotICAgICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY29udGVudElELmNvbXBhcmUoKCppdGEpLT5nZXRDb250ZW50SUQoKSkgPT0gMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBMT0dJKCJmaW5kIGNvbnRlbnQgcmlnaHQiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQ29udGVudFJpZ2h0TGlzdC5wdXNoX2JhY2soKml0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0KLSAgICB9Ci0KLX0KLQotLyoqIHNlZSBSby5oICovCi12b2lkIFJvOjpmcmVlUmlnaHRzKCkKLXsKLSAgICBtQ29udGVudFJpZ2h0TGlzdC5jbGVhcigpOwotfQotCi0vKiogc2VlIFJvLmggKi8KLWJvb2wgUm86OmNoZWNrUGVybWlzc2lvbihPcGVyYXRpb25QZXJtaXNzaW9uOjpPUEVSQVRJT04gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RyaW5nJiBjb250ZW50SUQpCi17Ci0gICAgbG9hZFJpZ2h0cyhjb250ZW50SUQpOwotCi0gICAgZm9yICh2ZWN0b3I8UmlnaHQqPjo6aXRlcmF0b3IgaXQgPSBtQ29udGVudFJpZ2h0TGlzdC5iZWdpbigpOyBpdCAhPSBtQ29udGVudFJpZ2h0TGlzdC5lbmQoKTsgaXQrKykKLSAgICAgewotICAgICAgICBpZiAoKCppdCktPmNoZWNrUGVybWlzc2lvbih0eXBlKSkKLSAgICAgICAgewotICAgICAgICAgICAgZnJlZVJpZ2h0cygpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICB9Ci0gICAgZnJlZVJpZ2h0cygpOwotICAgIHJldHVybiBmYWxzZTsKLX0KLQotLyoqIHNlZSBSby5oICovCi1Sbzo6RVJSQ09ERSBSbzo6Y29uc3VtZShPcGVyYXRpb25QZXJtaXNzaW9uOjpPUEVSQVRJT04gdHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJpbmcmIGNvbnRlbnRJRCkKLXsKLSAgICBsb2FkUmlnaHRzKGNvbnRlbnRJRCk7Ci0KLSAgICAvL2NoZWNrIGluIG1SaWdodExpc3QKLSAgICB2ZWN0b3I8UmlnaHQqPjo6aXRlcmF0b3IgaXQ7Ci0gICAgdmVjdG9yPFJpZ2h0Kj4gdG1wTGlzdDsKLSAgICB2ZWN0b3I8UmlnaHQqPiByZXRMaXN0OwotICAgIENvbnN0cmFpbnQgKmNvbnN0cmFpbnQgPSBOVUxMOwotICAgIGxvbmcgZWFsaWVzdEVuZCA9IC0xOwotICAgIGJvb2wgaGFzQ29tbW9uQ29uc3RyYWludCA9IGZhbHNlOwotICAgIGJvb2wgaGFzVW5jb25zdHJhaW50ID0gZmFsc2U7Ci0gICAgYm9vbCBoYXNEYXRlVGltZUNvbnN0cmFpbnQgPSBmYWxzZTsKLSAgICBib29sIGhhc1RpbWVkQ291bnRDb25zdHJhaW50ID0gZmFsc2U7Ci0gICAgYm9vbCBoYXNJbnRlcnZhbENvbnN0cmFpbnQgPSBmYWxzZTsKLQotCi0gICAgLy9hcHBseSB0aGUgUk8gcnVsZSwgaWYgZG8gbm90IHNhdGlzZnkgdGhlIGNvbnN0cmFpbnQsIC4KLSAgICAvL3Byb3BlciByaWdodCBzZWxlY3QgcHJvY2VzcwotCi0gICAgZm9yIChpdCA9IG1Db250ZW50UmlnaHRMaXN0LmJlZ2luKCk7IGl0ICE9IG1Db250ZW50UmlnaHRMaXN0LmVuZCgpOyBpdCsrKQotICAgIHsKLSAgICAgICAgaWYgKCgqaXQpLT5jaGVja1Blcm1pc3Npb24odHlwZSkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0cmFpbnQgPSAoKml0KS0+Z2V0Q29uc3RyYWludChPcGVyYXRpb25QZXJtaXNzaW9uOjpDT01NT04pOwotICAgICAgICAgICAgaWYgKGNvbnN0cmFpbnQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKCFjb25zdHJhaW50LT5pc1ZhbGlkKHRpbWUoTlVMTCkpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaGFzQ29tbW9uQ29uc3RyYWludCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgdG1wTGlzdC5wdXNoX2JhY2soKml0KTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgY29uc3RyYWludCA9ICgqaXQpLT5nZXRDb25zdHJhaW50KHR5cGUpOwotICAgICAgICAgICAgYXNzZXJ0KGNvbnN0cmFpbnQgIT0gTlVMTCk7Ci0KLSAgICAgICAgICAgIGlmICghY29uc3RyYWludC0+aXNWYWxpZCh0aW1lKE5VTEwpKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKGNvbnN0cmFpbnQtPmlzVW5Db25zdHJhaW50KCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy91c2UgdW5jb250cmFpbnRlZCBmaXJzdGx5LgotICAgICAgICAgICAgICAgIGhhc1VuY29uc3RyYWludCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgdG1wTGlzdC5wdXNoX2JhY2soKml0KTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKGNvbnN0cmFpbnQtPmlzRGF0ZVRpbWVDb25zdHJhaW50KCkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgLy91c2UgZGF0ZXRpbWUgY29uc3RyYWludCBpbiBoaWdoIHByaW9yaXR5LgotICAgICAgICAgICAgICAgIC8vaWYgY29udGFpbiBtdWx0aXBlIGNvbnN0cmFpbnRzLCB1c2UgdGhlIGVhcmxpZXN0IGV4cGlyZSB0aW1lLgotICAgICAgICAgICAgICAgIGhhc0RhdGVUaW1lQ29uc3RyYWludCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgdG1wTGlzdC5wdXNoX2JhY2soKml0KTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKGNvbnN0cmFpbnQtPmlzVGltZWRDb3VudENvbnN0cmFpbnQoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgIC8vaWxsZWdhbCBPcGVyYXRpb24gd2hlbiB0aW1lIGNvdW50ZWQKLSAgICAgICAgICAgICAgICBpZiAodHlwZSA9PSBPcGVyYXRpb25QZXJtaXNzaW9uOjpQUklOVCB8fAotICAgICAgICAgICAgICAgICAgICB0eXBlID09IE9wZXJhdGlvblBlcm1pc3Npb246OkVYUE9SVCkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGhhc1RpbWVkQ291bnRDb25zdHJhaW50ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB0bXBMaXN0LnB1c2hfYmFjaygqaXQpOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoY29uc3RyYWludC0+aXNJbnRlcnZhbENvbnN0cmFpbnQoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBoYXNJbnRlcnZhbENvbnN0cmFpbnQgPSB0cnVlOwotICAgICAgICAgICAgICAgIHRtcExpc3QucHVzaF9iYWNrKCppdCk7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRtcExpc3QucHVzaF9iYWNrKCppdCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLQotICAgIGZvciAoaXQgPSB0bXBMaXN0LmJlZ2luKCk7IGl0ICE9IHRtcExpc3QuZW5kKCk7IGl0KyspCi0gICAgewotICAgICAgICBpZiAoaGFzVW5jb25zdHJhaW50ID09IHRydWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vZGVsZXRlIG90aGVyIGNvbnN0cmFpbnQKLSAgICAgICAgICAgIGNvbnN0cmFpbnQgPSAoKml0KS0+Z2V0Q29uc3RyYWludCh0eXBlKTsKLSAgICAgICAgICAgIGlmIChjb25zdHJhaW50KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChjb25zdHJhaW50LT5pc1VuQ29uc3RyYWludCgpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0TGlzdC5wdXNoX2JhY2soKml0KTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoaGFzRGF0ZVRpbWVDb25zdHJhaW50ID09IHRydWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIC8vZGVsZXRlIG90aGVyIGNvbnN0cmFpbnQKLSAgICAgICAgICAgIGNvbnN0cmFpbnQgPSAoKml0KS0+Z2V0Q29uc3RyYWludCh0eXBlKTsKLSAgICAgICAgICAgIGlmIChjb25zdHJhaW50KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChjb25zdHJhaW50LT5pc0RhdGVUaW1lQ29uc3RyYWludCgpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgbG9uZyB0dCA9IGNvbnN0cmFpbnQtPmdldEVuZFRpbWUoKTsKLQotICAgICAgICAgICAgICAgICAgICBpZiAoZWFsaWVzdEVuZCA9PSAtMSkKLSAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICAgZWFsaWVzdEVuZCA9IHR0OwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0TGlzdC5wdXNoX2JhY2soKml0KTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChlYWxpZXN0RW5kID4gdHQpCi0gICAgICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVhbGllc3RFbmQgPSB0dDsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldExpc3QucG9wX2JhY2soKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldExpc3QucHVzaF9iYWNrKCppdCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChoYXNJbnRlcnZhbENvbnN0cmFpbnQgPT0gdHJ1ZSkKLSAgICAgICAgewotICAgICAgICAgICAgLy9kZWxldGUgb3RoZXIgY29uc3RyYWludAotICAgICAgICAgICAgY29uc3RyYWludCA9ICgqaXQpLT5nZXRDb25zdHJhaW50KHR5cGUpOwotICAgICAgICAgICAgaWYgKGNvbnN0cmFpbnQpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnN0cmFpbnQtPmlzSW50ZXJ2YWxDb25zdHJhaW50KCkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXRMaXN0LnB1c2hfYmFjaygqaXQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGhhc1RpbWVkQ291bnRDb25zdHJhaW50ID09IHRydWUpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGNvbnN0cmFpbnQgPSAoKml0KS0+Z2V0Q29uc3RyYWludCh0eXBlKTsKLSAgICAgICAgICAgIGlmIChjb25zdHJhaW50KQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChjb25zdHJhaW50LT5pc1RpbWVkQ291bnRDb25zdHJhaW50KCkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXRMaXN0LnB1c2hfYmFjaygqaXQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0TGlzdC5wdXNoX2JhY2soKml0KTsKLSAgICB9Ci0KLSAgICBpZiAocmV0TGlzdC5zaXplKCkgPT0gMCkKLSAgICB7Ci0gICAgICAgIGZyZWVSaWdodHMoKTsKLSAgICAgICAgcmV0dXJuIFJPX0JBRDsKLSAgICB9Ci0KLSAgICBMT0dJKCJQcm9wZXIgcmlnaHQgaGFzICVkIiwgcmV0TGlzdC5zaXplKCkpOwotCi0gICAgYXNzZXJ0KHJldExpc3Quc2l6ZSgpID09IDEpOwotCi0gICAgbVByb3BlclJpZ2h0ID0gcmV0TGlzdFswXTsKLSAgICBjb25zdHJhaW50ID0gcmV0TGlzdFswXS0+Z2V0Q29uc3RyYWludChPcGVyYXRpb25QZXJtaXNzaW9uOjpDT01NT04pOwotICAgIGlmIChjb25zdHJhaW50KQotICAgIHsKLSAgICAgICAgaWYgKGNvbnN0cmFpbnQtPmNvbnN1bWUoKSA9PSBmYWxzZSkKLSAgICAgICAgewotICAgICAgICAgICAgZnJlZVJpZ2h0cygpOwotICAgICAgICAgICAgcmV0dXJuIFJPX0JBRDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGNvbnN0cmFpbnQgPSByZXRMaXN0WzBdLT5nZXRDb25zdHJhaW50KHR5cGUpOwotICAgIGlmIChjb25zdHJhaW50KQotICAgIHsKLSAgICAgICAgaWYgKGNvbnN0cmFpbnQtPmNvbnN1bWUoKSA9PSBmYWxzZSkKLSAgICAgICAgewotICAgICAgICAgICAgZnJlZVJpZ2h0cygpOwotICAgICAgICAgICAgcmV0dXJuIFJPX0JBRDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vdXBkYXRlIHRoZSBjb25zdHJhaW50Ci0gICAgZnJlZVJpZ2h0cygpOwotICAgIHJldHVybiBST19PSzsKLX0KLQotLyoqIHNlZSBSby5oICovCi1zdHJpbmcgUm86OmdldENvbnRlbnRDZWsoY29uc3Qgc3RyaW5nJiBjb250ZW50SUQpCi17Ci0gICAgZm9yICh2ZWN0b3I8QXNzZXQqPjo6aXRlcmF0b3IgaXQgPSBtQXNzZXRMaXN0LmJlZ2luKCk7Ci0gICAgICAgIGl0ICE9IG1Bc3NldExpc3QuZW5kKCk7IGl0KyspCi0gICAgewotICAgICAgICBpZiAoY29udGVudElELmNvbXBhcmUoKCppdCktPmdldENvbnRlbnRJRCgpKSA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKCppdCktPmdldENlaygpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuICIiOwotfQotCi0vKiogc2VlIFJvLmggKi8KLXN0cmluZyBSbzo6Z2V0Q29udGVudEhhc2goY29uc3Qgc3RyaW5nJiBjb250ZW50SUQpCi17Ci0gICAgZm9yICh2ZWN0b3I8QXNzZXQqPjo6aXRlcmF0b3IgaXQgPSBtQXNzZXRMaXN0LmJlZ2luKCk7Ci0gICAgICAgIGl0ICE9IG1Bc3NldExpc3QuZW5kKCk7IGl0KyspCi0gICAgewotICAgICAgICBpZiAoY29udGVudElELmNvbXBhcmUoKCppdCktPmdldENvbnRlbnRJRCgpKSA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKCppdCktPmdldERDRkRpZ2VzdCgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcmV0dXJuICIiOwotfQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3JpZ2h0cy9Sb01hbmFnZXIuY3BwIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3JpZ2h0cy9Sb01hbmFnZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMTE1ZDIxLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy9yaWdodHMvUm9NYW5hZ2VyLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotI2luY2x1ZGUgPHJpZ2h0cy9Sb01hbmFnZXIuaD4KLSNpbmNsdWRlIDxyaWdodHMvQXNzZXQuaD4KLQotdXNpbmcgbmFtZXNwYWNlIHVzdGw7Ci0KLVJvTWFuYWdlciogUm9NYW5hZ2VyOjptc0luc3RhbmNlID0gTlVMTDsKLQotLyoqIHNlZSBSb01hbmFnZXIuaCAqLwotUm9NYW5hZ2VyKiBSb01hbmFnZXI6Okluc3RhbmNlKCkKLXsKLSAgICBpZiAoTlVMTCA9PSBtc0luc3RhbmNlKQotICAgIHsKLSAgICAgICAgbXNJbnN0YW5jZSA9IG5ldyBSb01hbmFnZXIoKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gbXNJbnN0YW5jZTsKLX0KLQotLyoqIHNlZSBSb01hbmFnZXIuaCAqLwotUm9NYW5hZ2VyOjpSb01hbmFnZXIoKQotewotLy9sb2FkIHRoZSBybyBsaXN0IGZyb20gbG9jYWwgc3lzdGVtLgotfQotCi0vKiogc2VlIFJvTWFuYWdlci5oICovCi1Sb01hbmFnZXI6On5Sb01hbmFnZXIoKQotewotICAgIG1zSW5zdGFuY2UgPSBOVUxMOwotCi0gICAgZm9yICh2ZWN0b3I8Um8qPjo6aXRlcmF0b3IgaXQgPSBtUm9MaXN0LmJlZ2luKCk7Ci0gICAgICAgICBpdCAhPSBtUm9MaXN0LmVuZCgpOyBpdCsrKQotICAgIHsKLSAgICAgICAgZGVsZXRlICgqaXQpOwotICAgIH0KLQotICAgIG1Sb0xpc3QuY2xlYXIoKTsKLX0KLQotLyoqIHNlZSBSb01hbmFnZXIuaCAqLwotUm86OkVSUkNPREUgUm9NYW5hZ2VyOjppbnN0YWxsUm8oaXN0cmluZ3N0cmVhbSAqcm9TdHJlYW0pCi17Ci0gICAgUm8gKnJvID0gbmV3IFJvKCk7Ci0KLSAgICBSbzo6RVJSQ09ERSByZXQgPSByby0+cGFyc2Uocm9TdHJlYW0pOwotCi0gICAgaWYgKFJvOjpST19PSyA9PSByZXQpCi0gICAgewotICAgICAgICByby0+c2F2ZSgpOwotCi0gICAgICAgIG1Sb0xpc3QucHVzaF9iYWNrKHJvKTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmV0OwotfQotCi0vKiogc2VlIFJvTWFuYWdlci5oICovCi1SbyogUm9NYW5hZ2VyOjpnZXRSb0J5Q29udGVudElEKGNvbnN0IHN0cmluZyYgY29udGVudElEKQotewotICAgIGZvciAodmVjdG9yPFJvKj46Oml0ZXJhdG9yIGl0ID0gbVJvTGlzdC5iZWdpbigpOwotICAgICAgICAgaXQgIT0gbVJvTGlzdC5lbmQoKTsgaXQrKykKLSAgICB7Ci0gICAgICAgIGZvciAodmVjdG9yPEFzc2V0Kj46Oml0ZXJhdG9yIGl0YSA9ICgqaXQpLT5tQXNzZXRMaXN0LmJlZ2luKCk7Ci0gICAgICAgICAgICAgaXRhICE9ICgqaXQpLT5tQXNzZXRMaXN0LmVuZCgpOyBpdGErKykKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKGNvbnRlbnRJRC5jb21wYXJlKCgqaXRhKS0+Z2V0Q29udGVudElEKCkpID09IDApCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuICppdDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBOVUxMOwotfQotCi0vKiogc2VlIFJvTWFuYWdlci5oICovCi1SbyogUm9NYW5hZ2VyOjpnZXRSbyhjb25zdCBzdHJpbmcmIHJvSUQpCi17Ci0gICAgZm9yICh2ZWN0b3I8Um8qPjo6aXRlcmF0b3IgaXQgPSBtUm9MaXN0LmJlZ2luKCk7Ci0gICAgICAgICBpdCAhPSBtUm9MaXN0LmVuZCgpOyBpdCsrKQotICAgIHsKLSAgICAgICAgaWYgKHJvSUQuY29tcGFyZSgoKml0KS0+Z2V0Um9JRCgpKSA9PSAwKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKCppdCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gTlVMTDsKLX0KLQotLyoqIHNlZSBSb01hbmFnZXIuaCAqLwotdmVjdG9yPFJvKj4gUm9NYW5hZ2VyOjpnZXRBbGxSbygpCi17Ci0gICAgcmV0dXJuIG1Sb0xpc3Q7Ci19Ci0KLS8qKiBzZWUgUm9NYW5hZ2VyLmggKi8KLWJvb2wgUm9NYW5hZ2VyOjpkZWxldGVSbyhjb25zdCBzdHJpbmcmIHJvSUQpCi17Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLS8qKiBzZWUgUm9NYW5hZ2VyLmggKi8KLWJvb2wgUm9NYW5hZ2VyOjpjaGVja1JvSW5DYWNoZShjb25zdCBzdHJpbmcmIHJvSUQpCi17Ci0gICAgcmV0dXJuIHRydWU7Ci19Ci0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy9yb2FwL1JlZ2lzdHJhdGlvbi5jcHAgYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvcm9hcC9SZWdpc3RyYXRpb24uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZDZmNDU5Li4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy9yb2FwL1JlZ2lzdHJhdGlvbi5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0vKiovCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvcm9hcC9Sb2FwTWVzc2FnZUhhbmRsZXIuY3BwIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3JvYXAvUm9hcE1lc3NhZ2VIYW5kbGVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQxOTBlZS4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvcm9hcC9Sb2FwTWVzc2FnZUhhbmRsZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0jaW5jbHVkZSA8cm9hcC9Sb2FwTWVzc2FnZUhhbmRsZXIuaD4KLSNpbmNsdWRlIDx1dGlsL3htbC9Eb21FeHBhdEFnZW50Lmg+Ci0jaW5jbHVkZSA8dXRpbC94bWwvWE1MRG9jdW1lbnRJbXBsLmg+Ci0jaW5jbHVkZSA8dXRpbC9kb21jb3JlL05vZGVMaXN0SW1wbC5oPgotI2luY2x1ZGUgPHV0aWwvZG9tY29yZS9ET01TdHJpbmcuaD4KLSNpbmNsdWRlIDxvZnN0cmVhbS5oPgotdXNpbmcgbmFtZXNwYWNlIHVzdGw7Ci0KLS8qKnNlZSBSb2FwTWVzc2FnZUhhbmRsZXIuaCAqLwotUm9hcE1lc3NhZ2VIYW5kbGVyOjpSb2FwTWVzc2FnZUhhbmRsZXIoKQotewotICAgIG1Eb2MgPSBOVUxMOwotfQotCi0vKipzZWUgUm9hcE1lc3NhZ2VIYW5kbGVyLmggKi8KLVhNTERvY3VtZW50SW1wbCogUm9hcE1lc3NhZ2VIYW5kbGVyOjpjcmVhdGVDbGllbnRNc2coUm9hcE1lc3NhZ2VIYW5kbGVyOjptc2dUeXBlIHR5cGUpCi17Ci0gICAgLyogbG9hZCB0ZW1wbGF0ZSBmcm9tIGZpbGVzIHRlbXBvcmFyaWx5LCBGSVggTUUgbGF0ZXIgKi8KLSAgICBzdHJpbmcgbXNnVGVtcGxhdGU7Ci0gICAgc3dpdGNoICh0eXBlKQotICAgIHsKLSAgICAgICAgY2FzZSBSb2FwTWVzc2FnZUhhbmRsZXI6OkRldmljZUhlbGxvOgotICAgICAgICAgICAgbXNnVGVtcGxhdGUuYXBwZW5kKCJkZXZpY2VIZWxsby54bWwiKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFJvYXBNZXNzYWdlSGFuZGxlcjo6UmVnaXN0cmF0aW9uUmVxdWVzdDoKLSAgICAgICAgICAgIG1zZ1RlbXBsYXRlLmFwcGVuZCgiZGV2aWNlSGVsbG8ueG1sIik7ICAgICAgICAKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFJvYXBNZXNzYWdlSGFuZGxlcjo6Uk9SZXF1ZXN0OgotICAgICAgICAgICAgbXNnVGVtcGxhdGUuYXBwZW5kKCJkZXZpY2VIZWxsby54bWwiKTsgICAgICAKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmc3RyZWFtIHhtbFN0cmVhbShtc2dUZW1wbGF0ZS5jX3N0cigpKTsKLSAgICBYTUxEb2N1bWVudEltcGwqIHhtbERvYyA9IG5ldyBYTUxEb2N1bWVudEltcGwoKTsKLSAgICBEb21FeHBhdEFnZW50IGRvbUV4cGF0QWdlbnQxKHhtbERvYyk7Ci0gICAgaWYgKGRvbUV4cGF0QWdlbnQxLmdlbmVyYXRlRG9jdW1lbnRGcm9tWE1MKCZ4bWxTdHJlYW0pKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHhtbERvYzsKLSAgICB9Ci0gICAgZWxzZQotICAgIHsKLSAgICAgICAgZGVsZXRlKHhtbERvYyk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLX0KLQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvY3J5cHRvL0RybUNyeXB0by5jcHAgYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC9jcnlwdG8vRHJtQ3J5cHRvLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmJiZWZiOC4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC9jcnlwdG8vRHJtQ3J5cHRvLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotI2luY2x1ZGUgPHV0aWwvY3J5cHRvL0RybUNyeXB0by5oPgotI2luY2x1ZGUgPHVzdHJpbmcuaD4KLQotdXNpbmcgbmFtZXNwYWNlIHVzdGw7Ci0KLXZvaWQgQWVzQWdlbnQ6OmRpc2NhcmRQYWRkaW5nQnl0ZSggdW5zaWduZWQgY2hhciogZGVjcnlwdGVkQnVmLHVuc2lnbmVkIGxvbmcqIGRlY3J5cHRlZEJ1ZkxlbikNCi17DQotICAgIGlmKCFkZWNyeXB0ZWRCdWYpDQotICAgIHsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGludCBpOwotICAgIHVuc2lnbmVkIGxvbmcgdG1wTGVuID0gKmRlY3J5cHRlZEJ1ZkxlbjsKLQ0KLSAgICAvLyBDaGVjayB3aGV0aGVyIHRoZSBsYXN0IHNldmVyYWwgYnl0ZXMgYXJlIHBhZGRpbmcgb3Igbm90DQotICAgIGZvciAoIGkgPSAxOyBpIDwgZGVjcnlwdGVkQnVmW3RtcExlbiAtIDFdOyBpKyspCi0gICAgew0KLSAgICAgICAgaWYgKGRlY3J5cHRlZEJ1Zlt0bXBMZW4gLSAxIC0gaV0gIT0gZGVjcnlwdGVkQnVmW3RtcExlbiAtIDFdKQ0KLSAgICAgICAgICAgIGJyZWFrOw0KLSAgICB9Ci0KLSAgICAvLyBUaGV5IGFyZSBwYWRkaW5nIGJ5dGVzDQotICAgIGlmIChpID09IGRlY3J5cHRlZEJ1Zlt0bXBMZW4gLSAxXSkNCi0gICAgewotICAgICAgICAqZGVjcnlwdGVkQnVmTGVuID0gdG1wTGVuIC0gaTsKLSAgICB9Ci0NCi0gICAgcmV0dXJuOw0KLX0KLQotaW50MzJfdCBBZXNBZ2VudDo6ZGVjQ29udGVudCggdW5zaWduZWQgY2hhciogaXYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBlbmNEYXRhLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZW5jTGVuLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIGRlY0RhdGEpDQotewotICAgIGlmKEFFU18xMjhfQ0JDID09IG1vZGUpCi0gICAgewotICAgICAgICBBRVNfS0VZIGtleTsKLSAgICAgICAgQUVTX3NldF9kZWNyeXB0X2tleShBZXNLZXksQUVTX0tFWV9CSVRTLCZrZXkpOwotCi0gICAgICAgIHVpbnQ4X3QgKnRtcEJ1ZiA9IG5ldyB1aW50OF90W2VuY0xlbl07Ci0KLSAgICAgICAgQUVTX2NiY19lbmNyeXB0KCBlbmNEYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgIHRtcEJ1ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBlbmNMZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgJmtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBpdiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBBRVNfREVDUllQVCk7Ci0KLSAgICAgICAgdW5zaWduZWQgbG9uZyB0ZW1wTGVuID0gZW5jTGVuOwotICAgICAgICBkaXNjYXJkUGFkZGluZ0J5dGUodG1wQnVmLCZ0ZW1wTGVuKTsKLQotICAgICAgICBtZW1jcHkoZGVjRGF0YSwgdG1wQnVmLCB0ZW1wTGVuKTsKLQotICAgICAgICBkZWxldGUgW110bXBCdWY7Ci0gICAgICAgIHJldHVybiBlbmNMZW4gLSB0ZW1wTGVuOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICByZXR1cm4gQUVTX0RFQ19GQUlMRUQ7Ci0gICAgfQotfQotCi12b2lkIFNoYTFBZ2VudDo6Y29tcHV0ZUhhc2goIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGluRGF0YSwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgaW5MZW4sDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiBvdXRIYXNoKSBjb25zdA0KLXsKLSAgICBFVlBfRGlnZXN0KGluRGF0YSxpbkxlbixvdXRIYXNoLE5VTEwsRVZQX3NoYTEoKSxOVUxMKTsKLSAgICByZXR1cm47Ci19Ci0KLXZvaWQgSG1hY1NoYTFBZ2VudDo6Y29tcHV0ZU1hYyggY29uc3QgdW5zaWduZWQgY2hhciogaW5EYXRhLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBpbkxlbiwNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIqIG91dERhdGEpIGNvbnN0DQotewotICAgIEhNQUMoRVZQX3NoYTEoKSxtYWNLZXksa2V5TGVuLGluRGF0YSxpbkxlbixvdXREYXRhLE5VTEwpOwotICAgIHJldHVybjsKLX0KLQotYm9vbCBSc2FBZ2VudDo6c2lnbmF0dXJlKCBjb25zdCB1bnNpZ25lZCBjaGFyKiByYXdEYXRhLA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyByYXdMZW4sDQotICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiBzaWdEYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICBSc2FBbGcgc2lnQWxnKQ0KLXsKLSAgICBzd2l0Y2goc2lnQWxnKQotICAgIHsKLSAgICAgICAgY2FzZSBSU0FfUFNTOgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgbUhhc2hbU0hBX0RJR0VTVF9MRU5HVEhdOwotICAgICAgICAgICAgICAgIFNoYTFBZ2VudCBzaGExOwotICAgICAgICAgICAgICAgIHNoYTEuY29tcHV0ZUhhc2gocmF3RGF0YSxyYXdMZW4sbUhhc2gpOwotCi0gICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciBFTVtyc2FTaXplXTsKLSAgICAgICAgICAgICAgICBpZiggMCA9PSBSU0FfcGFkZGluZ19hZGRfUEtDUzFfUFNTKCAmcnNhS2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVNLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1IYXNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVWUF9zaGExKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0hBX0RJR0VTVF9MRU5HVEgpKQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmKDAgPiBSU0FfcHJpdmF0ZV9lbmNyeXB0KCBTSEFfRElHRVNUX0xFTkdUSCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRU0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ0RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyc2FLZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJTQV9QS0NTMV9QQURESU5HKSkKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7DQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFJTQV9TSEExOgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgbUhhc2hbU0hBX0RJR0VTVF9MRU5HVEhdOwotICAgICAgICAgICAgICAgIFNoYTFBZ2VudCBzaGExOwotICAgICAgICAgICAgICAgIHNoYTEuY29tcHV0ZUhhc2gocmF3RGF0YSxyYXdMZW4sbUhhc2gpOwotCi0gICAgICAgICAgICAgICAgaWYoMCAhPSBSU0Ffc2lnbiggTklEX3NoYTFXaXRoUlNBLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1IYXNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNIQV9ESUdFU1RfTEVOR1RILAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ0RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJzYVNpemUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJzYUtleSkpCi0gICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1ib29sIFJzYUFnZW50OjpzaWdWZXJpZnkoIHVuc2lnbmVkIGNoYXIqIHNpZ0RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgc2lnTGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiByYXdEYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHJhd0xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUnNhQWxnIHNpZ0FsZykNCi17Ci0gICAgaWYoIHNpZ0FsZyA9PSBSU0FfUFNTKQotICAgIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciBkZWNTaWdEYXRhW3JzYVNpemVdOwotCi0gICAgICAgIGlmKDAgPiBSU0FfcHVibGljX2RlY3J5cHQoc2lnTGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ0RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjU2lnRGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcnNhS2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJTQV9QS0NTMV9QQURESU5HKSkNCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgbUhhc2hbU0hBX0RJR0VTVF9MRU5HVEhdOwotICAgICAgICAgICAgU2hhMUFnZW50IHNoYTE7Ci0gICAgICAgICAgICBzaGExLmNvbXB1dGVIYXNoKHJhd0RhdGEscmF3TGVuLG1IYXNoKTsKLQotICAgICAgICAgICAgaWYoIDAgPT0gUlNBX3ZlcmlmeV9QS0NTMV9QU1MoICZyc2FLZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUhhc2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRVZQX3NoYTEoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNTaWdEYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0xKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSBpZihzaWdBbGcgPT0gUlNBX1NIQTEpCi0gICAgewotICAgICAgICB1bnNpZ25lZCBjaGFyIG1IYXNoW1NIQV9ESUdFU1RfTEVOR1RIXTsKLSAgICAgICAgU2hhMUFnZW50IHNoYTE7Ci0gICAgICAgIHNoYTEuY29tcHV0ZUhhc2gocmF3RGF0YSxyYXdMZW4sbUhhc2gpOwotCi0gICAgICAgIGlmKDAgIT0gUlNBX3ZlcmlmeSggTklEX3NoYTFXaXRoUlNBLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1IYXNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNIQV9ESUdFU1RfTEVOR1RILAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZ0RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lnTGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICZyc2FLZXkpKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICBlbHNlCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotfQotCi1pbnQgUnNhQWdlbnQ6OmRlY3J5cHQoIGNvbnN0IHVuc2lnbmVkIGNoYXIqIGVuY0RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgZW5jTGVuLAotICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyKiBkZWNEYXRhKQ0KLXsKLSAgICByZXR1cm4gUlNBX3ByaXZhdGVfZGVjcnlwdCggZW5jTGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNEYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNEYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmcnNhS2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSU0FfUEtDUzFfUEFERElORyk7Ci19CmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC9kb21jb3JlL0NoYXJhY3RlckRhdGFJbXBsLmNwcCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL2RvbWNvcmUvQ2hhcmFjdGVyRGF0YUltcGwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZmU2OTlhLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL2RvbWNvcmUvQ2hhcmFjdGVyRGF0YUltcGwuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0jaW5jbHVkZSA8dXRpbC9kb21jb3JlL0NoYXJhY3RlckRhdGFJbXBsLmg+DQotDQotLyoqIHNlZSBDaGFyYWN0ZXJEYXRhSW1wbC5oICovDQotY29uc3QgRE9NU3RyaW5nKiBDaGFyYWN0ZXJEYXRhSW1wbDo6Z2V0RGF0YSgpIGNvbnN0IHRocm93IChET01FeGNlcHRpb24pDQotew0KLSAgICByZXR1cm4gY2hhckRhdGE7DQotfQ0KLQ0KLS8qKiBzZWUgQ2hhcmFjdGVyRGF0YUltcGwuaCAqLw0KLUNoYXJhY3RlckRhdGFJbXBsOjpDaGFyYWN0ZXJEYXRhSW1wbCgpOmNoYXJEYXRhKE5VTEwpDQotew0KLX0NCi0NCi0vKiogc2VlIENoYXJhY3RlckRhdGFJbXBsLmgqLw0KLUNoYXJhY3RlckRhdGFJbXBsOjpDaGFyYWN0ZXJEYXRhSW1wbChjb25zdCBET01TdHJpbmcqIGRhdGEpOmNoYXJEYXRhKE5VTEwpDQotew0KLSAgICBpZiAoZGF0YSAhPSBOVUxMKQ0KLSAgICAgICAgY2hhckRhdGEgPSBuZXcgRE9NU3RyaW5nKCpkYXRhKTsNCi19DQotDQotLyoqIHNlZSBDaGFyYWN0ZXJEYXRhSW1wbC5oICovDQotdm9pZCBDaGFyYWN0ZXJEYXRhSW1wbDo6c2V0RGF0YShjb25zdCBET01TdHJpbmcqIGRhdGEpIHRocm93IChET01FeGNlcHRpb24pDQotew0KLQ0KLSAgICBpZiAoY2hhckRhdGEgIT0gTlVMTCkNCi0gICAgICAgIGRlbGV0ZSBjaGFyRGF0YTsNCi0NCi0gICAgaWYgKGRhdGEgPT0gTlVMTCkNCi0gICAgICAgIGNoYXJEYXRhID0gTlVMTDsNCi0gICAgZWxzZQ0KLSAgICAgICAgY2hhckRhdGEgPSBuZXcgRE9NU3RyaW5nKCpkYXRhKTsNCi19DQotDQotLyoqIHNlZSBDaGFyYWN0ZXJEYXRhSW1wbC5oICovDQotaW50IENoYXJhY3RlckRhdGFJbXBsOjpnZXRMZW5ndGgoKSBjb25zdA0KLXsNCi0gICAgcmV0dXJuIGNoYXJEYXRhICE9IE5VTEwgPyBjaGFyRGF0YS0+bGVuZ3RoKCkgOiAwOw0KLX0NCi0NCi0vKiogc2VlIENoYXJhY3RlckRhdGFJbXBsLmggKi8NCi12b2lkIENoYXJhY3RlckRhdGFJbXBsOjphcHBlbmREYXRhKGNvbnN0IERPTVN0cmluZyogYXJnKSB0aHJvdyhET01FeGNlcHRpb24pDQotew0KLSAgICBpZiAoYXJnICE9IE5VTEwpIHsNCi0gICAgICAgIGlmIChjaGFyRGF0YSAhPSBOVUxMKQ0KLSAgICAgICAgICAgIGNoYXJEYXRhLT5hcHBlbmQoKmFyZyk7DQotICAgICAgICBlbHNlDQotICAgICAgICAgICAgY2hhckRhdGEgPSBuZXcgRE9NU3RyaW5nKCphcmcpOw0KLSAgICB9DQotfQ0KLQ0KLS8qKiBzZWUgQ2hhcmFjdGVyRGF0YUltcGwuaCAqLw0KLWNvbnN0IERPTVN0cmluZyogQ2hhcmFjdGVyRGF0YUltcGw6OmdldE5vZGVWYWx1ZSgpIGNvbnN0IHRocm93KERPTUV4Y2VwdGlvbikNCi17DQotICAgIHJldHVybiBnZXREYXRhKCk7DQotfQ0KLQ0KLS8qKiBzZWUgQ2hhcmFjdGVyRGF0YUltcGwuaCAqLw0KLXZvaWQgQ2hhcmFjdGVyRGF0YUltcGw6OnNldE5vZGVWYWx1ZShET01TdHJpbmcqIG5vZGVWYWx1ZSkgdGhyb3coRE9NRXhjZXB0aW9uKQ0KLXsNCi0gICAgc2V0RGF0YShub2RlVmFsdWUpOw0KLX0NCi0NCi0vKiogc2VlIENoYXJhY3RlckRhdGFJbXBsLmggKi8NCi1DaGFyYWN0ZXJEYXRhSW1wbDo6fkNoYXJhY3RlckRhdGFJbXBsKCkNCi17DQotICAgIGRlbGV0ZSBjaGFyRGF0YTsNCi19DQotDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvZG9tY29yZS9ET01FeGNlcHRpb24uY3BwIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvZG9tY29yZS9ET01FeGNlcHRpb24uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTlkM2NlLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL2RvbWNvcmUvRE9NRXhjZXB0aW9uLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL2RvbWNvcmUvRG9jdW1lbnRJbXBsLmNwcCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL2RvbWNvcmUvRG9jdW1lbnRJbXBsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWJmNDZmYi4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC9kb21jb3JlL0RvY3VtZW50SW1wbC5jcHAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC9kb21jb3JlL0VsZW1lbnRJbXBsLmNwcCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL2RvbWNvcmUvRWxlbWVudEltcGwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjQ4ODMxLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL2RvbWNvcmUvRWxlbWVudEltcGwuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0jaW5jbHVkZSA8dXRpbC9kb21jb3JlL0VsZW1lbnRJbXBsLmg+DQotDQotLyoqIHNlZSBFbGVtZW50SW1wbC5oICovDQotTm9kZVR5cGUgRWxlbWVudEltcGw6OmdldE5vZGVUeXBlKCkgY29uc3QNCi17DQotICAgIHJldHVybiBFTEVNRU5UX05PREU7DQotfQ0KLQ0KLS8qKiBzZWUgRWxlbWVudEltcGwuaCAqLw0KLWNvbnN0IERPTVN0cmluZyogRWxlbWVudEltcGw6OmdldE5vZGVOYW1lKCkgY29uc3QNCi17DQotICAgIHJldHVybiBnZXRUYWdOYW1lKCk7DQotfQ0KLQ0KLS8qKiBzZWUgRWxlbWVudEltcGwuaCAqLw0KLWNvbnN0IERPTVN0cmluZyogRWxlbWVudEltcGw6OmdldFRhZ05hbWUoKSBjb25zdA0KLXsNCi0gICAgcmV0dXJuIE5VTEw7DQotfQ0KLQ0KLS8qKiBzZWUgRWxlbWVudEltcGwuaCAqLw0KLXZvaWQgRWxlbWVudEltcGw6OnNldEF0dHJpYnV0ZShjb25zdCBET01TdHJpbmcqIG5hbWUsIGNvbnN0IERPTVN0cmluZyogdmFsdWUpIHRocm93IChET01FeGNlcHRpb24pDQotew0KLQ0KLX0NCi0NCi0vKiogc2VlIEVsZW1lbnRJbXBsLmggKi8NCi12b2lkIEVsZW1lbnRJbXBsOjpyZW1vdmVBdHRyaWJ1dGUoY29uc3QgRE9NU3RyaW5nKiBuYW1lKSB0aHJvdyAoRE9NRXhjZXB0aW9uKQ0KLXsNCi0NCi19DQotDQotLyoqIHNlZSBFbGVtZW50SW1wbC5oICovDQotY29uc3QgRE9NU3RyaW5nKiBFbGVtZW50SW1wbDo6Z2V0QXR0cmlidXRlKGNvbnN0IERPTVN0cmluZyogbmFtZSkgY29uc3QNCi17DQotICAgIHJldHVybiBOVUxMOw0KLX0NCi0NCi0vKiogc2VlIEVsZW1lbnRJbXBsLmggKi8NCi12b2lkIEVsZW1lbnRJbXBsOjpnZXRFbGVtZW50c0J5VGFnTmFtZShjb25zdCBET01TdHJpbmcqIG5hbWUsIE5vZGVMaXN0SW1wbCogbm9kZUxpc3QpIGNvbnN0DQotew0KLSAgICBOb2RlSW1wbCogbm9kZSA9IGdldEZpcnN0Q2hpbGQoKTsNCi0NCi0gICAgaWYgKG5vZGUgPT0gTlVMTCB8fCBuYW1lID09IE5VTEwgfHwgbm9kZUxpc3QgPT0gTlVMTCkNCi0gICAgICAgIHJldHVybjsNCi0NCi0gICAgZG8gew0KLQ0KLSAgICAgICAgaWYgKG5vZGUtPmdldE5vZGVUeXBlKCkgPT0gRUxFTUVOVF9OT0RFKSB7DQotICAgICAgICAgICAgRWxlbWVudEltcGwqIGVsZW1lbnROb2RlID0gc3RhdGljX2Nhc3Q8RWxlbWVudEltcGwqPihub2RlKTsNCi0gICAgICAgICAgICBpZiAoKmVsZW1lbnROb2RlLT5nZXRUYWdOYW1lKCkgPT0gKm5hbWUpDQotICAgICAgICAgICAgICAgLyogaWYgY3VycmVudCBpcyBlbGVtZW50IG5vZGUgYW5kIHRhZyBuYW1lIGlzIGVxdWFsIHRvIDxjb2RlPm5hbWU8L2NvZGU+LHB1dCBpdCBpbnRvIG5vZGVMaXN0ICovDQotICAgICAgICAgICAgICAgIG5vZGVMaXN0LT5hcHBlbmQobm9kZSk7DQotICAgICAgICAgICAgICAgLyoNCi0gICAgICAgICAgICAgICAgKiB2aXNpdCBET00gdHJlZSByZWN1cnNpdmVseSwNCi0gICAgICAgICAgICAgICAgKiBnZXQgYWxsIEVsZW1lbnRzIG5vZGUgd2hvc2UgdGFnZSBuYW1lIGlzIGVxdWFsIHRvIG5hbWUuDQotICAgICAgICAgICAgICAgICovDQotICAgICAgICAgICAgICAgZWxlbWVudE5vZGUtPmdldEVsZW1lbnRzQnlUYWdOYW1lKG5hbWUsIG5vZGVMaXN0KTsNCi0gICAgICAgIH0NCi0NCi0gICAgICAgIC8qIHNldCBjdXJyZW50IG5vZGUncyBuZXh0IHNpYmxpbmcgbm9kZSBhcyBjdXJyZW50IG5vZGUuKi8NCi0gICAgICAgIG5vZGUgPSBub2RlLT5nZXROZXh0U2libGluZygpOw0KLSAgICB9IHdoaWxlKG5vZGUgIT0gTlVMTCk7DQotfQ0KLQ0KLS8qKiBzZWUgRWxlbWVudEltcGwuaCAqLw0KLU5vZGVMaXN0SW1wbCogRWxlbWVudEltcGw6OmdldEVsZW1lbnRzQnlUYWdOYW1lKGNvbnN0IERPTVN0cmluZyogbmFtZSkgY29uc3QNCi17DQotICAgIE5vZGVMaXN0SW1wbCogbm9kZUxpc3QgPSBuZXcgTm9kZUxpc3RJbXBsKCk7DQotDQotICAgIGlmIChub2RlTGlzdCA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkNCi0gICAgICAgIHJldHVybiBOVUxMOw0KLQ0KLSAgICBnZXRFbGVtZW50c0J5VGFnTmFtZShuYW1lLG5vZGVMaXN0KTsNCi0NCi0gICAgcmV0dXJuIG5vZGVMaXN0Ow0KLX0NCi0NCi0vKiogc2VlIEVsZW1lbnRJbXBsLmggKi8NCi1ib29sIEVsZW1lbnRJbXBsOjpoYXNBdHRyaWJ1dGVzKCkgY29uc3QNCi17DQotICAgIHJldHVybiBmYWxzZTsNCi19DQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvZG9tY29yZS9Ob2RlSW1wbC5jcHAgYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC9kb21jb3JlL05vZGVJbXBsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTgzYzU1ZS4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC9kb21jb3JlL05vZGVJbXBsLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIzOSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLSNpbmNsdWRlIDx1dGlsL2RvbWNvcmUvTm9kZUltcGwuaD4NCi0jaW5jbHVkZSA8dXRpbC9kb21jb3JlL0RvY3VtZW50SW1wbC5oPg0KLQ0KLS8qKiBzZWUgTm9kZUltcGwuaC4gKi8NCi12b2lkIE5vZGVJbXBsOjpzZXRQYXJlbnQoTm9kZUltcGwqIHBhcmVudE5vZGUpDQotew0KLSAgICB0aGlzLT5wYXJlbnQgPSBwYXJlbnROb2RlOw0KLX0NCi0NCi0vKiogc2VlIE5vZGVJbXBsLmguICovDQotdm9pZCBOb2RlSW1wbDo6c2V0TmV4dFNpYmxpbmcoTm9kZUltcGwqIHNpYmxpbmdOb2RlKQ0KLXsNCi0gICAgdGhpcy0+bmV4dFNpYmxpbmcgPSBzaWJsaW5nTm9kZTsNCi19DQotLyoqIHNlZSBOb2RlSW1wbC5oLiAqLw0KLXZvaWQgTm9kZUltcGw6OnNldFByZXZpb3VzU2libGluZyhOb2RlSW1wbCogc2libGluZ05vZGUpDQotew0KLSAgICB0aGlzLT5wcmV2aW91c1NpYmxpbmcgPSBzaWJsaW5nTm9kZTsNCi19DQotDQotLyoqIHNlZSBOb2RlSW1wbC5oLiAqLw0KLXZvaWQgTm9kZUltcGw6OnNldEZpcnN0Q2hpbGQoTm9kZUltcGwqIGNoaWxkTm9kZSkNCi17DQotICAgIHRoaXMtPmZpcnN0Q2hpbGQgPSBjaGlsZE5vZGU7DQotfQ0KLQ0KLS8qKiBzZWUgTm9kZUltcGwuaC4gKi8NCi12b2lkIE5vZGVJbXBsOjpzZXRMYXN0Q2hpbGQoTm9kZUltcGwqIGNoaWxkTm9kZSkNCi17DQotICAgIHRoaXMtPmxhc3RDaGlsZCA9IGNoaWxkTm9kZTsNCi19DQotDQotLyoqIHNlZSBOb2RlSW1wbC5oLiAqLw0KLU5vZGVJbXBsKiBOb2RlSW1wbDo6Z2V0UGFyZW50Tm9kZSgpIGNvbnN0DQotew0KLSAgICByZXR1cm4gcGFyZW50Ow0KLX0NCi0NCi0vKiogc2VlIE5vZGVJbXBsLmguICovDQotTm9kZUltcGwqIE5vZGVJbXBsOjpnZXRGaXJzdENoaWxkKCkgY29uc3QNCi17DQotICAgIHJldHVybiBmaXJzdENoaWxkOw0KLX0NCi0NCi0vKiogc2VlIE5vZGVJbXBsLmguICovDQotTm9kZUltcGwqIE5vZGVJbXBsOjpnZXRMYXN0Q2hpbGQoKSBjb25zdA0KLXsNCi0gICAgcmV0dXJuIGxhc3RDaGlsZDsNCi19DQotDQotLyoqIHNlZSBOb2RlSW1wbC5oLiAqLw0KLU5vZGVJbXBsKiBOb2RlSW1wbDo6Z2V0UHJldmlvdXNTaWJsaW5nKCkgY29uc3QNCi17DQotICAgIHJldHVybiBwcmV2aW91c1NpYmxpbmc7DQotfQ0KLQ0KLS8qKiBzZWUgTm9kZUltcGwuaC4gKi8NCi1Ob2RlSW1wbCogTm9kZUltcGw6OmdldE5leHRTaWJsaW5nKCkgY29uc3QNCi17DQotICAgIHJldHVybiBuZXh0U2libGluZzsNCi19DQotDQotLyoqIHNlZSBOb2RlSW1wbC5oLiAqLw0KLU5vZGVJbXBsKiBOb2RlSW1wbDo6aW5zZXJ0QmVmb3JlKE5vZGVJbXBsKiBuZXdDaGlsZCwgTm9kZUltcGwqIHJlZkNoaWxkKSB0aHJvdyAoRE9NRXhjZXB0aW9uKQ0KLXsNCi0gICAgaWYgKG5ld0NoaWxkID09IE5VTEwpCi0gICAgICAgICNpZiBQTEFURk9STV9BTkRST0lECi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgI2Vsc2UNCi0gICAgICAgICAgICB0aHJvdyBET01FeGNlcHRpb24oRE9NRXhjZXB0aW9uOjpXUk9OR19ET0NVTUVOVF9FUlIpOw0KLSAgICAgICAgI2VuZGlmDQotICAgIGlmIChyZWZDaGlsZCA9PSBOVUxMIHx8IHJlZkNoaWxkLT5nZXRQYXJlbnROb2RlKCkgIT0gdGhpcykKLSAgICAgICAgI2lmIFBMQVRGT1JNX0FORFJPSUQKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAjZWxzZQ0KLSAgICAgICAgICAgIHRocm93IERPTUV4Y2VwdGlvbihET01FeGNlcHRpb246Ok5PVF9GT1VORF9FUlIpOwotICAgICAgICAjZW5kaWYNCi0NCi0gICAgTm9kZUltcGwqIHBhcmVudE5vZGUgPSBuZXdDaGlsZC0+Z2V0UGFyZW50Tm9kZSgpOw0KLQ0KLSAgICBpZiAocGFyZW50Tm9kZSAhPSBOVUxMKQ0KLSAgICAgICAgcGFyZW50Tm9kZS0+cmVtb3ZlQ2hpbGQobmV3Q2hpbGQpOw0KLQ0KLSAgICBOb2RlSW1wbCogcHJldlNpYmxpbmdOb2RlID0gcmVmQ2hpbGQtPmdldFByZXZpb3VzU2libGluZygpOw0KLQ0KLSAgICBpZiAocHJldlNpYmxpbmdOb2RlICE9IE5VTEwpDQotICAgICAgICBwcmV2U2libGluZ05vZGUtPmFwcGVuZE5leHRTaWJsaW5nKG5ld0NoaWxkKTsNCi0gICAgZWxzZQ0KLSAgICAgICAgc2V0Rmlyc3RDaGlsZChuZXdDaGlsZCk7DQotDQotICAgIG5ld0NoaWxkLT5hcHBlbmROZXh0U2libGluZyhyZWZDaGlsZCk7DQotICAgIG5ld0NoaWxkLT5zZXRQYXJlbnQodGhpcyk7DQotDQotICAgIHJldHVybiBuZXdDaGlsZDsNCi19DQotDQotLyoqIHNlZSBOb2RlSW1wbC5oLiAqLw0KLU5vZGVJbXBsKiBOb2RlSW1wbDo6cmVtb3ZlQ2hpbGQoTm9kZUltcGwqIG9sZENoaWxkKSB0aHJvdyAoRE9NRXhjZXB0aW9uKQ0KLXsNCi0NCi0gICAgaWYgKG9sZENoaWxkID09IE5VTEwgfHwgb2xkQ2hpbGQtPmdldFBhcmVudE5vZGUoKSAhPSB0aGlzICkKLSAgICAjaWYgUExBVEZPUk1fQU5EUk9JRAotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAjZWxzZQotICAgICAgICB0aHJvdyBET01FeGNlcHRpb24oRE9NRXhjZXB0aW9uOjpOT1RfRk9VTkRfRVJSKTsKLSAgICAjZW5kaWYNCi0NCi0gICAgTm9kZUltcGwqIHBhcmVudE5vZGUgPSBvbGRDaGlsZC0+Z2V0UGFyZW50Tm9kZSgpOw0KLSAgICBOb2RlSW1wbCogbmV4dFNpYmxpbmdOb2RlID0gb2xkQ2hpbGQtPmdldE5leHRTaWJsaW5nKCk7DQotICAgIE5vZGVJbXBsKiBwcmV2U2libGluZ05vZGUgPSBvbGRDaGlsZC0+Z2V0UHJldmlvdXNTaWJsaW5nKCk7DQotDQotICAgIGlmIChwcmV2U2libGluZ05vZGUgPT0gTlVMTCAmJiBuZXh0U2libGluZ05vZGUgIT0gTlVMTCkgew0KLSAgICAgICAgLyoNCi0gICAgICAgICAqIGNoaWxkcmVuJ3MgcHJldmlvdXMgc2libGluZyBub2RlID09IE5VTEwgYW5kIG5leHQgc2libGluZyBub2RlICE9DQotICAgICAgICAgKiBOVUxMLCBtZWFucyB0aGUgY2hpbGRyZW4gbm9kZSBpcyB0aGUgZmlyc3Qgbm9kZSBvZiBpdHMgcGFyZW50Lg0KLSAgICAgICAgICogc28gc2V0IHRoZSBjaGlsZHJlbidzIG5leHQgc2libGluZyBub2RlIGFzIHRoZSBmaXJzdCBub2RlIG9mIGl0cyBwYXJlbnQuDQotICAgICAgICAgKi8NCi0gICAgICAgIHBhcmVudE5vZGUtPnNldEZpcnN0Q2hpbGQobmV4dFNpYmxpbmdOb2RlKTsNCi0gICAgICAgIG5leHRTaWJsaW5nTm9kZS0+c2V0UHJldmlvdXNTaWJsaW5nKE5VTEwpOw0KLQ0KLSAgICB9IGVsc2UgaWYgKHByZXZTaWJsaW5nTm9kZSAhPSBOVUxMICYmIG5leHRTaWJsaW5nTm9kZSA9PSBOVUxMKSB7DQotICAgICAgICAvKg0KLSAgICAgICAgICogY2hpbGRyZW4ncyBwcmV2aW91cyBzaWJsaW5nIG5vZGUgIT0gTlVMTCBhbmQgbmV4dCBzaWJsaW5nIG5vZGUgPT0NCi0gICAgICAgICAqIE5VTEwsIG1lYW5zIHRoZSBjaGlsZCBub2RlIGlzIHRoZSBsYXN0IG5vZGUgb2YgcGFyZW50LnNvIHNldCB0aGUNCi0gICAgICAgICAqIGxhc3Qgbm9kZSBvZiBjaGlsZHJlbidzIHBhcmVudCBhcyBjaGlsZHJlbidzIHByZXZpb3VzIHNpYmxpbmcgbm9kZS4NCi0gICAgICAgICAqLw0KLSAgICAgICAgcHJldlNpYmxpbmdOb2RlLT5zZXROZXh0U2libGluZyhOVUxMKTsNCi0gICAgICAgIHBhcmVudE5vZGUtPnNldExhc3RDaGlsZChwcmV2U2libGluZ05vZGUpOw0KLQ0KLSAgICB9IGVsc2UgaWYgKHByZXZTaWJsaW5nTm9kZSAhPSBOVUxMICYmIG5leHRTaWJsaW5nTm9kZSAhPSBOVUxMKSB7DQotICAgICAgICAvKg0KLSAgICAgICAgICogY2hpbGRyZW4ncyBwcmV2aW91cyBzaWJsaW5nIG5vZGUgIT0gTlVMTCBhbmQgbmV4dCBzaWJsaW5nIG5vZGUgIT0NCi0gICAgICAgICAqIE5VTEwsbWVhbnMgdGhlIG5vZGUgaXMgbmVpdGhlciBmaXJzdCBjaGlsZCBub3IgbGFzdCBjaGlsZHJlbiBvZiBpdHMgcGFyZW50Lg0KLSAgICAgICAgICovDQotICAgICAgICBwcmV2U2libGluZ05vZGUtPmFwcGVuZE5leHRTaWJsaW5nKG5leHRTaWJsaW5nTm9kZSk7DQotDQotICAgIH0gZWxzZSBpZiAocHJldlNpYmxpbmdOb2RlID09IE5VTEwgJiYgbmV4dFNpYmxpbmdOb2RlID09IE5VTEwpIHsNCi0gICAgICAgIC8qDQotICAgICAgICAgKiB0aGlzIG1lYW5zIGl0J3Mgb25seSBvbmUgY2hpbGRyZW4gbm9kZSBvZiBpdHMgcGFyZW50Lg0KLSAgICAgICAgICogc28gYWRqdXN0IHRoZSBmaXJzdCBjaGlsZCBhbmQgbGFzdCBjaGlsZCB0byBOVUxMIHdoZW4gcmVtb3ZlIHRoZSBjaGlsZHJlbiBub2RlLg0KLSAgICAgICAgICovDQotICAgICAgICB0aGlzLT5zZXRGaXJzdENoaWxkKE5VTEwpOw0KLSAgICAgICAgdGhpcy0+c2V0TGFzdENoaWxkKE5VTEwpOw0KLSAgICB9DQotDQotICAgIG9sZENoaWxkLT5zZXRQYXJlbnQoTlVMTCk7DQotICAgIG9sZENoaWxkLT5zZXROZXh0U2libGluZyhOVUxMKTsNCi0gICAgb2xkQ2hpbGQtPnNldFByZXZpb3VzU2libGluZyhOVUxMKTsNCi0NCi0gICAgcmV0dXJuIG9sZENoaWxkOw0KLX0NCi0NCi0vKiogc2VlIE5vZGVJbXBsLmguICovDQotdm9pZCBOb2RlSW1wbDo6YXBwZW5kTmV4dFNpYmxpbmcoTm9kZUltcGwqIG5vZGUpDQotew0KLSAgICBpZiAobm9kZSA9PSBOVUxMKQ0KLSAgICAgICAgcmV0dXJuOw0KLQ0KLSAgICBzZXROZXh0U2libGluZyhub2RlKTsNCi0gICAgbm9kZS0+c2V0UHJldmlvdXNTaWJsaW5nKHRoaXMpOw0KLX0NCi0NCi0vKiogc2VlIE5vZGVJbXBsLmguICovDQotTm9kZUltcGwqIE5vZGVJbXBsOjphcHBlbmRDaGlsZChOb2RlSW1wbCogbmV3Q2hpbGQpIHRocm93IChET01FeGNlcHRpb24pDQotew0KLSAgICBpZiAobmV3Q2hpbGQgPT0gTlVMTCkKLSAgICAgICAgI2lmIFBMQVRGT1JNX0FORFJPSUQKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAjZWxzZQ0KLSAgICAgICAgICAgIHRocm93IERPTUV4Y2VwdGlvbihET01FeGNlcHRpb246OldST05HX0RPQ1VNRU5UX0VSUik7DQotICAgICAgICAjZW5kaWYNCi0gICAgLyogSWYgbmV3Q2hpbGQgaGF2ZSBwYXJlbnQscmVtb3ZlIGl0IGZyb20gaXRzIHBhcmVudCBhdCBmaXJzdC4qLw0KLSAgICBOb2RlSW1wbCogcGFyZW50ID0gbmV3Q2hpbGQtPmdldFBhcmVudE5vZGUoKTsNCi0gICAgaWYgKHBhcmVudCAhPSBOVUxMKQ0KLSAgICAgICAgcGFyZW50LT5yZW1vdmVDaGlsZChuZXdDaGlsZCk7DQotDQotICAgIGlmIChnZXRGaXJzdENoaWxkKCkgPT0gTlVMTCAmJiBnZXRMYXN0Q2hpbGQoKSA9PSBOVUxMKSB7DQotICAgICAgICAvKiBUaGVyZSBhcmUgbm90IGFueSBub2RlcyBpbiBjdXJyZW50IG5vZGUuKi8NCi0gICAgICAgIHNldEZpcnN0Q2hpbGQobmV3Q2hpbGQpOw0KLSAgICB9IGVsc2UgaWYgKGdldExhc3RDaGlsZCgpICE9IE5VTEwpIHsNCi0gICAgICAgIGdldExhc3RDaGlsZCgpLT5hcHBlbmROZXh0U2libGluZyhuZXdDaGlsZCk7DQotICAgIH0NCi0NCi0gICAgbmV3Q2hpbGQtPnNldFBhcmVudCh0aGlzKTsNCi0gICAgc2V0TGFzdENoaWxkKG5ld0NoaWxkKTsNCi0NCi0NCi0gICAgcmV0dXJuIG5ld0NoaWxkOw0KLX0NCi0NCi0vKiogc2VlIE5vZGVJbXBsLmguICovDQotYm9vbCBOb2RlSW1wbDo6aGFzQ2hpbGROb2RlcygpIGNvbnN0DQotew0KLSAgICByZXR1cm4gZ2V0Rmlyc3RDaGlsZCgpICE9IE5VTEw7DQotfQ0KLQ0KLS8qKiBzZWUgTm9kZUltcGwuaC4gKi8NCi1jb25zdCBET01TdHJpbmcqIE5vZGVJbXBsOjpnZXROb2RlVmFsdWUoKSBjb25zdCB0aHJvdyAoRE9NRXhjZXB0aW9uKQ0KLXsNCi0gICAgcmV0dXJuIE5VTEw7DQotfQ0KLQ0KLS8qKiBzZWUgTm9kZUltcGwuaC4gKi8NCi12b2lkIE5vZGVJbXBsOjpzZXROb2RlVmFsdWUoRE9NU3RyaW5nKiBub2RlVmFsdWUpIHRocm93IChET01FeGNlcHRpb24pDQotew0KLX0NCi0NCi0vKiogc2VlIE5vZGVJbXBsLmguICovDQotYm9vbCBOb2RlSW1wbDo6aGFzQXR0cmlidXRlcygpIGNvbnN0DQotew0KLSAgICByZXR1cm4gZmFsc2U7DQotfQ0KLQ0KLS8qKiBzZWUgTm9kZUltcGwuaCAqLw0KLWNvbnN0IERvY3VtZW50SW1wbCogTm9kZUltcGw6OmdldERvY3VtZW50KCkgY29uc3QNCi17DQotICAgIHJldHVybiBkb2N1bWVudDsNCi19DQotDQotLyoqIHNlZSBOb2RlSW1wbC5oICovDQotdm9pZCBOb2RlSW1wbDo6c2V0RG9jdW1lbnQoY29uc3QgRG9jdW1lbnRJbXBsKiBkb2N1bWVudCkNCi17DQotICAgIHRoaXMtPmRvY3VtZW50ID0gZG9jdW1lbnQ7DQotfQ0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL2RvbWNvcmUvTm9kZUl0ZXJhdG9yLmNwcCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL2RvbWNvcmUvTm9kZUl0ZXJhdG9yLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmUxMzY2OS4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC9kb21jb3JlL05vZGVJdGVyYXRvci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0jaW5jbHVkZSA8dXRpbC9kb21jb3JlL05vZGVJbXBsLmg+DQotI2luY2x1ZGUgPHV0aWwvZG9tY29yZS9Ob2RlSXRlcmF0b3IuaD4NCi0NCi0vKiogc2VlIE5vZGVJdGVyYXRvci5oICovDQotTm9kZUl0ZXJhdG9yOjpOb2RlSXRlcmF0b3IoTm9kZUltcGwqIHN0YXJ0LE5vZGVJbXBsKiBzY29wZSxOb2RlSW1wbCogZW5kKTogc2NvcGVOb2RlKHNjb3BlKSxlbmROb2RlKGVuZCksY3VyTm9kZShzdGFydCkNCi17DQotfQ0KLQ0KLS8qKiBzZWUgTm9kZUl0ZXJhdG9yLmggKi8NCi1Ob2RlSW1wbCogTm9kZUl0ZXJhdG9yOjpmaW5kTmV4dE9yZGVyTm9kZShOb2RlSW1wbCogbm9kZSkNCi17DQotICAgIGlmIChub2RlID09IGVuZE5vZGUpDQotICAgICAgICByZXR1cm4gTlVMTDsNCi0NCi0gICAgaWYgKG5vZGUgIT0gTlVMTCkgew0KLSAgICAgICAgaWYgKG5vZGUtPmhhc0NoaWxkTm9kZXMoKSA9PSB0cnVlKSB7DQotICAgICAgICAgICAgbm9kZSA9IG5vZGUtPmdldEZpcnN0Q2hpbGQoKTsNCi0gICAgICAgIH1lbHNlIGlmIChub2RlID09IHNjb3BlTm9kZSAmJiBub2RlLT5oYXNDaGlsZE5vZGVzKCkgPT0gZmFsc2UpIHsNCi0gICAgICAgICAgICBub2RlID0gTlVMTDsNCi0gICAgICAgIH0gZWxzZSBpZiAobm9kZS0+Z2V0TmV4dFNpYmxpbmcoKSAhPSBOVUxMKSB7DQotICAgICAgICAgICAgbm9kZSA9IG5vZGUtPmdldE5leHRTaWJsaW5nKCk7DQotICAgICAgICB9IGVsc2Ugew0KLSAgICAgICAgICAgIHdoaWxlIChub2RlICE9IHNjb3BlTm9kZSAmJiBub2RlICE9IE5VTEwgJiYgbm9kZS0+Z2V0TmV4dFNpYmxpbmcoKSA9PSBOVUxMKSB7DQotICAgICAgICAgICAgICAgIG5vZGUgPSBub2RlLT5nZXRQYXJlbnROb2RlKCk7DQotICAgICAgICAgICAgfQ0KLSAgICAgICAgICAgIGlmIChub2RlID09IHNjb3BlTm9kZSkNCi0gICAgICAgICAgICAgICAgbm9kZSA9IE5VTEw7DQotICAgICAgICAgICAgaWYgKG5vZGUgIT0gTlVMTCkNCi0gICAgICAgICAgICAgICAgbm9kZSA9IG5vZGUtPmdldE5leHRTaWJsaW5nKCk7DQotICAgICAgICB9DQotICAgIH0NCi0gICAgaWYgKG5vZGUgPT0gZW5kTm9kZSB8fCBub2RlID09IHNjb3BlTm9kZSkNCi0gICAgICAgIG5vZGUgPSBOVUxMOw0KLQ0KLSAgICByZXR1cm4gbm9kZTsNCi19DQotDQotLyoqIHNlZSBOb2RlSXRlcmF0b3IuaCAqLw0KLU5vZGVJbXBsKiBOb2RlSXRlcmF0b3I6Om5leHQoKQ0KLXsNCi0gICAgTm9kZUltcGwqIG5vZGUgPSBOVUxMOw0KLQ0KLSAgICBub2RlID0gZmluZE5leHRPcmRlck5vZGUoY3VyTm9kZSk7DQotDQotICAgIGlmIChub2RlICE9IE5VTEwpDQotICAgICAgICBjdXJOb2RlID0gbm9kZTsNCi0NCi0gICAgcmV0dXJuIG5vZGU7DQotfQ0KLQ0KLS8qKiBzZWUgTm9kZUl0ZXJhdG9yLmggKi8NCi1Ob2RlSW1wbCogTm9kZUl0ZXJhdG9yOjpwcmV2KCkNCi17DQotICAgIE5vZGVJbXBsKiBub2RlOw0KLQ0KLSAgICBub2RlID0gZmluZFByZXZpb3VzT3JkZXJOb2RlKGN1ck5vZGUpOw0KLQ0KLSAgICBpZiAobm9kZSAhPSBOVUxMKQ0KLSAgICAgICAgY3VyTm9kZSA9IG5vZGU7DQotDQotICAgIHJldHVybiBub2RlOw0KLX0NCi0NCi0vKiogc2VlIE5vZGVJdGVyYXRvci5oICovDQotTm9kZUltcGwqIE5vZGVJdGVyYXRvcjo6ZmluZFByZXZpb3VzT3JkZXJOb2RlKE5vZGVJbXBsKiBub2RlKQ0KLXsNCi0gICAgaWYgKG5vZGUgPT0gTlVMTCB8fCBub2RlID09IGVuZE5vZGUpDQotICAgICAgICByZXR1cm4gTlVMTDsNCi0NCi0gICAgaWYgKG5vZGUtPmdldFByZXZpb3VzU2libGluZygpICE9IE5VTEwpIHsNCi0gICAgICAgIG5vZGUgPSBub2RlLT5nZXRQcmV2aW91c1NpYmxpbmcoKTsNCi0gICAgICAgIHdoaWxlKG5vZGUgIT0gTlVMTCAmJiBub2RlLT5oYXNDaGlsZE5vZGVzKCkgPT0gdHJ1ZSkNCi0gICAgICAgICAgICBub2RlID0gbm9kZS0+Z2V0TGFzdENoaWxkKCk7DQotICAgIH0gZWxzZSB7DQotICAgICAgICBpZiAobm9kZSA9PSBzY29wZU5vZGUpDQotICAgICAgICAgICAgbm9kZSA9IE5VTEw7DQotICAgICAgICBlbHNlDQotICAgICAgICAgICAgbm9kZSA9IG5vZGUtPmdldFBhcmVudE5vZGUoKTsNCi0gICAgfQ0KLQ0KLSAgICBpZiAobm9kZSA9PSBzY29wZU5vZGUgfHwgbm9kZSA9PSBlbmROb2RlKQ0KLSAgICAgICAgcmV0dXJuIE5VTEw7DQotDQotICAgIHJldHVybiBub2RlOw0KLX0NCi0NCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC9kb21jb3JlL05vZGVMaXN0SW1wbC5jcHAgYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC9kb21jb3JlL05vZGVMaXN0SW1wbC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxMGQ2MmQuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvZG9tY29yZS9Ob2RlTGlzdEltcGwuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0jaW5jbHVkZSA8dXRpbC9kb21jb3JlL05vZGVMaXN0SW1wbC5oPg0KLQ0KLS8qKiBzZWUgTm9kZUxpc3RJbXBsLmgqLw0KLXZvaWQgTm9kZUxpc3RJbXBsOjphcHBlbmQoY29uc3QgTm9kZUltcGwqIG5ld05vZGUpDQotew0KLSAgICBpZiAobmV3Tm9kZSA9PSBOVUxMKQ0KLSAgICAgICAgcmV0dXJuOw0KLQ0KLSAgICBub2RlTGlzdC5wdXNoX2JhY2sobmV3Tm9kZSk7DQotfQ0KLQ0KLS8qKiBzZWUgTm9kZUxpc3RJbXBsLmgqLw0KLWNvbnN0IE5vZGVJbXBsKiBOb2RlTGlzdEltcGw6Oml0ZW0oaW50IGluZGV4KSBjb25zdA0KLXsNCi0gICAgaW50IHNpemUgPSBub2RlTGlzdC5zaXplKCk7DQotDQotICAgIGlmIChzaXplID09IDAgfHwgaW5kZXggPiBzaXplIC0gMSB8fCBpbmRleCA8IDApDQotICAgICAgICByZXR1cm4gTlVMTDsNCi0NCi0gICAgcmV0dXJuIG5vZGVMaXN0LmF0KGluZGV4KTsNCi19DQotDQotLyoqIHNlZSBOb2RlTGlzdEltcGwuaCovDQotaW50IE5vZGVMaXN0SW1wbDo6Z2V0TGVuZ3RoKCkgY29uc3QNCi17DQotICAgIHJldHVybiBub2RlTGlzdC5zaXplKCk7DQotfQ0KLQ0KLS8qKiBzZWUgTm9kZUxpc3RJbXBsLmgqLw0KLU5vZGVMaXN0SW1wbDo6fk5vZGVMaXN0SW1wbCgpDQotew0KLSAgICBub2RlTGlzdC5jbGVhcigpOw0KLX0NCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC9kb21jb3JlL1RleHRJbXBsLmNwcCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL2RvbWNvcmUvVGV4dEltcGwuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZTQyMWQ1Li4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL2RvbWNvcmUvVGV4dEltcGwuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0jaW5jbHVkZSA8dXRpbC9kb21jb3JlL1RleHRJbXBsLmg+DQotDQotY29uc3QgRE9NU3RyaW5nIFRleHRJbXBsOjpub2RlTmFtZSA9ICIjVEVYVCI7DQotDQotLyoqIHNlZSBUZXh0SW1wbC5oICovDQotVGV4dEltcGw6OlRleHRJbXBsKCkNCi17DQotfQ0KLQ0KLS8qKiBzZWUgVGV4dEltcGwuaCAqLw0KLVRleHRJbXBsOjpUZXh0SW1wbChjb25zdCBET01TdHJpbmcqIGRhdGEpOkNoYXJhY3RlckRhdGFJbXBsKGRhdGEpDQotew0KLX0NCi0NCi0vKiogc2VlIFRleHRJbXBsLmggKi8NCi1Ob2RlVHlwZSBUZXh0SW1wbDo6Z2V0Tm9kZVR5cGUoKSBjb25zdA0KLXsNCi0gICAgcmV0dXJuIFRFWFRfTk9ERTsNCi19DQotDQotLyoqIHNlZSBUZXh0SW1wbC5oICovDQotY29uc3QgRE9NU3RyaW5nKiBUZXh0SW1wbDo6Z2V0Tm9kZU5hbWUoKSBjb25zdA0KLXsNCi0gICAgcmV0dXJuICZub2RlTmFtZTsNCi19DQotDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvYmt0cmFjZS5jcHAgYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9ia3RyYWNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWU2NjQ2My4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9ia3RyYWNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2MCArMCwwIEBACi0vLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdXN0bCBsaWJyYXJ5LCBhbiBTVEwgaW1wbGVtZW50YXRpb24uCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDA2IGJ5IE1pa2UgU2hhcm92IDxtc2hhcm92QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLS8vIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCi0vLwotLy8gYmt0cmFjZS5jYwotLy8KLQotI2luY2x1ZGUgImJrdHJhY2UuaCIKLSNpbmNsdWRlICJzb3N0cmVhbS5oIgotI2luY2x1ZGUgIm1pc3RyZWFtLmgiCi0jaW5jbHVkZSAidWFzc2VydC5oIgotI2lmIGxpbnV4ICYmIF9fR05VQ19fICYmICFkZWZpbmVkKEhBVkVfQU5EUk9JRF9PUykKLSAgICAjaW5jbHVkZSA8ZXhlY2luZm8uaD4KLSNlbHNlCi0gICAgc3RhdGljIGlubGluZSBpbnQgYmFja3RyYWNlICh2b2lkKiosIGludCkJCQl7IHJldHVybiAoMCk7IH0KLSAgICBzdGF0aWMgaW5saW5lIGNoYXIqKiBiYWNrdHJhY2Vfc3ltYm9scyAodm9pZCogY29uc3QqLCBpbnQpCXsgcmV0dXJuIChOVUxMKTsgfQotI2VuZGlmCi0jaWYgX19HTlVDX18gPj0gMyAmJiAhUExBVEZPUk1fQU5EUk9JRAotICAgICNpbmNsdWRlIDxjeHhhYmkuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgdXN0bCB7Ci0KLS8vLyBEZWZhdWx0IGNvbnN0cnVjdG9yLiBUaGUgYmFja3RyYWNlIGlzIG9idGFpbmVkIGhlcmUuCi1DQmFja3RyYWNlOjpDQmFja3RyYWNlICh2b2lkKQotOiBtX1N5bWJvbHMgKE5VTEwpLAotICBtX25GcmFtZXMgKDApLAotICBtX1N5bWJvbHNTaXplICgwKQotewotI2lmICFQTEFURk9STV9BTkRST0lECi0gICAgdHJ5IHsKLSNlbmRpZgotCW1fbkZyYW1lcyA9IGJhY2t0cmFjZSAoVmVjdG9yQmxvY2sgKG1fQWRkcmVzc2VzKSk7Ci0JR2V0U3ltYm9scygpOwotI2lmICFQTEFURk9STV9BTkRST0lECi0gICAgfSBjYXRjaCAoLi4uKSB7fQotI2VuZGlmCi19Ci0KLS8vLyBDb3B5IGNvbnN0cnVjdG9yLgotQ0JhY2t0cmFjZTo6Q0JhY2t0cmFjZSAoY29uc3QgQ0JhY2t0cmFjZSYgdikKLTogbV9TeW1ib2xzIChOVUxMKSwKLSAgbV9uRnJhbWVzICgwKSwKLSAgbV9TeW1ib2xzU2l6ZSAoMCkKLXsKLSAgICBvcGVyYXRvcj0gKHYpOwotfQotCi0vLy8gQ29weSBvcGVyYXRvci4KLWNvbnN0IENCYWNrdHJhY2UmIENCYWNrdHJhY2U6Om9wZXJhdG9yPSAoY29uc3QgQ0JhY2t0cmFjZSYgdikKLXsKLSAgICBtZW1jcHkgKG1fQWRkcmVzc2VzLCB2Lm1fQWRkcmVzc2VzLCBzaXplb2YobV9BZGRyZXNzZXMpKTsKLSAgICBtX1N5bWJvbHMgPSBzdHJkdXAgKHYubV9TeW1ib2xzKTsKLSAgICBtX25GcmFtZXMgPSB2Lm1fbkZyYW1lczsKLSAgICBtX1N5bWJvbHNTaXplID0gdi5tX1N5bWJvbHNTaXplOwotICAgIHJldHVybiAoKnRoaXMpOwotfQotCi0vLy8gQ29udmVydHMgYSBzdHJpbmcgcmV0dXJuZWQgYnkgYmFja3RyYWNlX3N5bWJvbHMgaW50byByZWFkYWJsZSBmb3JtLgotc3RhdGljIHNpemVfdCBFeHRyYWN0QWJpTmFtZSAoY29uc3QgY2hhciogaXN5bSwgY2hhciogbm1idWYpCi17Ci0gICAgLy8gUHJlcGFyZSB0aGUgZGVtYW5nbGVkIG5hbWUsIGlmIHBvc3NpYmxlCi0gICAgc2l6ZV90IG5tU2l6ZSA9IDA7Ci0gICAgaWYgKGlzeW0pIHsKLQkvLyBDb3B5IG91dCB0aGUgbmFtZTsgdGhlIHN0cmluZ3MgYXJlOiAiZmlsZShmdW5jdGlvbisweDQyKSBbMHhBZGRyZXNzXSIKLQljb25zdCBjaGFyKiBtblN0YXJ0ID0gc3RyY2hyIChpc3ltLCAnKCcpOwotCWlmICgrK21uU3RhcnQgPT0gKGNvbnN0IGNoYXIqKSgxKSkKLQkgICAgbW5TdGFydCA9IGlzeW07Ci0JY29uc3QgY2hhciogbW5FbmQgPSBzdHJjaHIgKGlzeW0sICcrJyk7Ci0JY29uc3QgY2hhciogaXN5bUVuZCA9IGlzeW0gKyBzdHJsZW4gKGlzeW0pOwotCWlmICghbW5FbmQpCi0JICAgIG1uRW5kID0gaXN5bUVuZDsKLQlubVNpemUgPSBtaW4gKHNpemVfdCAoZGlzdGFuY2UgKG1uU3RhcnQsIG1uRW5kKSksIDI1NlUpOwotCW1lbWNweSAobm1idWYsIG1uU3RhcnQsIG5tU2l6ZSk7Ci0gICAgfQotICAgIG5tYnVmW25tU2l6ZV0gPSAwOwotICAgIC8vIERlbWFuZ2xlCi0gICAgZGVtYW5nbGVfdHlwZV9uYW1lIChubWJ1ZiwgMjU2VSwgJm5tU2l6ZSk7Ci0gICAgcmV0dXJuIChubVNpemUpOwotfQotCi0vLy8gVHJpZXMgdG8gZ2V0IHN5bWJvbCBpbmZvcm1hdGlvbiBmb3IgdGhlIGFkZHJlc3Nlcy4KLXZvaWQgQ0JhY2t0cmFjZTo6R2V0U3ltYm9scyAodm9pZCkKLXsKLSAgICBhdXRvX3B0cjxjaGFyKj4gc3ltYm9scyAoYmFja3RyYWNlX3N5bWJvbHMgKG1fQWRkcmVzc2VzLCBtX25GcmFtZXMpKTsKLSAgICBpZiAoIXN5bWJvbHMuZ2V0KCkpCi0JcmV0dXJuOwotICAgIGNoYXIgbm1idWYgWzI1Nl07Ci0gICAgc2l6ZV90IHN5bVNpemUgPSAxOwotICAgIGZvciAodW9mZl90IGkgPSAwOyBpIDwgbV9uRnJhbWVzOyArKyBpKQotCXN5bVNpemUgKz0gRXh0cmFjdEFiaU5hbWUgKHN5bWJvbHMuZ2V0KClbaV0sIG5tYnVmKSArIDE7Ci0gICAgaWYgKCEobV9TeW1ib2xzID0gKGNoYXIqKSBjYWxsb2MgKHN5bVNpemUsIDEpKSkKLQlyZXR1cm47Ci0gICAgZm9yICh1b2ZmX3QgaSA9IDA7IG1fU3ltYm9sc1NpemUgPCBzeW1TaXplIC0gMTsgKysgaSkgewotCXNpemVfdCBzeiA9IEV4dHJhY3RBYmlOYW1lIChzeW1ib2xzLmdldCgpW2ldLCBubWJ1Zik7Ci0JbWVtY3B5IChtX1N5bWJvbHMgKyBtX1N5bWJvbHNTaXplLCBubWJ1Ziwgc3opOwotCW1fU3ltYm9sc1NpemUgKz0gc3ogKyAxOwotCW1fU3ltYm9scyBbbV9TeW1ib2xzU2l6ZSAtIDFdID0gJ1xuJzsKLSAgICB9Ci19Ci0KLS8vLyBEZWZhdWx0IGRlc3RydWN0b3IuCi1DQmFja3RyYWNlOjp+Q0JhY2t0cmFjZSAodm9pZCkKLXsKLSAgICBmcmVlX251bGxvayAobV9TeW1ib2xzKTsKLX0KLQotI2lmIFNJWkVfT0ZfTE9ORyA9PSA4Ci0gICAgI2RlZmluZSBBRERSRVNTX0ZNVAkiJTE2cCAgIgotI2Vsc2UKLSAgICAjZGVmaW5lIEFERFJFU1NfRk1UCSIlOHAgICIKLSNlbmRpZgotCi0vLy8gUHJpbnRzIHRoZSBiYWNrdHJhY2UgdG8gXHAgb3MuCi12b2lkIENCYWNrdHJhY2U6OnRleHRfd3JpdGUgKG9zdHJpbmdzdHJlYW0mIG9zKSBjb25zdAotewotICAgIGNvbnN0IGNoYXIgKnNzID0gbV9TeW1ib2xzLCAqc2U7Ci0gICAgZm9yICh1b2ZmX3QgaSA9IDA7IGkgPCBtX25GcmFtZXM7ICsrIGkpIHsKLQlvcy5mb3JtYXQgKEFERFJFU1NfRk1ULCBtX0FkZHJlc3Nlc1tpXSk7Ci0Jc2UgPSBzdHJjaHIgKHNzLCAnXG4nKSArIDE7Ci0Jb3Mud3JpdGUgKHNzLCBkaXN0YW5jZSAoc3MsIHNlKSk7Ci0Jc3MgPSBzZTsKLSAgICB9Ci19Ci0KLS8vLyBSZWFkcyB0aGUgb2JqZWN0IGZyb20gc3RyZWFtIFxwIGlzLgotdm9pZCBDQmFja3RyYWNlOjpyZWFkIChpc3RyZWFtJiBpcykKLXsKLSAgICBhc3NlcnQgKGlzLmFsaWduZWQgKGFsaWdub2YgKG1fQWRkcmVzc2VzWzBdKSkgJiYgIkJhY2t0cmFjZSBvYmplY3QgY29udGFpbnMgcG9pbnRlcnMgYW5kIG11c3QgYmUgdm9pZCogYWxpZ25lZCIpOwotICAgIGlzID4+IG1fbkZyYW1lcyA+PiBtX1N5bWJvbHNTaXplOwotICAgIGZyZWVfbnVsbG9rIChtX1N5bWJvbHMpOwotICAgIG1fU3ltYm9scyA9IChjaGFyKikgbWFsbG9jIChtX1N5bWJvbHNTaXplICsgMSk7Ci0gICAgaXMucmVhZCAobV9TeW1ib2xzLCBtX1N5bWJvbHNTaXplKTsKLSAgICBtX1N5bWJvbHMgW21fU3ltYm9sc1NpemVdID0gMDsKLSAgICBpcy5hbGlnbigpOwotICAgIGlzLnJlYWQgKG1fQWRkcmVzc2VzLCBtX25GcmFtZXMgKiBzaXplb2Yodm9pZCopKTsKLX0KLQotLy8vIFdyaXRlcyB0aGUgb2JqZWN0IHRvIHN0cmVhbSBccCBvcy4KLXZvaWQgQ0JhY2t0cmFjZTo6d3JpdGUgKG9zdHJlYW0mIG9zKSBjb25zdAotewotICAgIGFzc2VydCAob3MuYWxpZ25lZCAoYWxpZ25vZiAobV9BZGRyZXNzZXNbMF0pKSAmJiAiQmFja3RyYWNlIG9iamVjdCBjb250YWlucyBwb2ludGVycyBhbmQgbXVzdCBiZSB2b2lkKiBhbGlnbmVkIik7Ci0gICAgb3MgPDwgbV9uRnJhbWVzIDw8IG1fU3ltYm9sc1NpemU7Ci0gICAgb3Mud3JpdGUgKG1fU3ltYm9scywgbV9TeW1ib2xzU2l6ZSk7Ci0gICAgb3MuYWxpZ24oKTsKLSAgICBvcy53cml0ZSAobV9BZGRyZXNzZXMsIG1fbkZyYW1lcyAqIHNpemVvZih2b2lkKikpOwotfQotCi0vLy8gUmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgd3JpdHRlbiBvYmplY3QuCi1zaXplX3QgQ0JhY2t0cmFjZTo6c3RyZWFtX3NpemUgKHZvaWQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIChBbGlnbiAoc3RyZWFtX3NpemVfb2YgKG1fbkZyYW1lcykgKwotCQkgICBzdHJlYW1fc2l6ZV9vZiAobV9TeW1ib2xzU2l6ZSkgKwotCQkgICBtX25GcmFtZXMgKiBzaXplb2Yodm9pZCopICsKLQkJICAgbV9TeW1ib2xzU2l6ZSkpOwotfQotCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL2JrdHJhY2UuaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL2JrdHJhY2UuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2I4YzBlYS4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9ia3RyYWNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdXN0bCBsaWJyYXJ5LCBhbiBTVEwgaW1wbGVtZW50YXRpb24uCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDA2IGJ5IE1pa2UgU2hhcm92IDxtc2hhcm92QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLS8vIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCi0vLwotLy8gYmt0cmFjZS5oCi0vLwotCi0jaWZuZGVmIEJLVFJBQ0VfSF82M0FCQjFFNDM4OENFREQ5NzVEQkU1OEI1N0RFNDc0RgotI2RlZmluZSBCS1RSQUNFX0hfNjNBQkIxRTQzODhDRUREOTc1REJFNThCNTdERTQ3NEYKLQotI2luY2x1ZGUgInVsaW1pdHMuaCIKLQotbmFtZXNwYWNlIHVzdGwgewotCi1jbGFzcyBvc3RyaW5nc3RyZWFtOwotY2xhc3MgaXN0cmVhbTsKLWNsYXNzIG9zdHJlYW07Ci0KLS8vLyBcY2xhc3MgQ0JhY2t0cmFjZSBia3RyYWNlLmggdXN0bC5oCi0vLy8KLS8vLyBcYnJpZWYgU3RvcmVzIHRoZSBiYWNrdHJhY2UgZnJvbSB0aGUgcG9pbnQgb2YgY29uc3RydWN0aW9uLgotLy8vCi0vLy8gVGhlIGJhY2t0cmFjZSwgb3IgY2FsbHN0YWNrLCBpcyB0aGUgbGlzdGluZyBvZiBmdW5jdGlvbnMgY2FsbGVkIHRvCi0vLy8gcmVhY2ggdGhlIGNvbnN0cnVjdGlvbiBvZiB0aGlzIG9iamVjdC4gVGhpcyBpcyB1c2VmdWwgZm9yIGRlYnVnZ2luZywKLS8vLyB0byBwcmludCB0aGUgbG9jYXRpb24gb2YgYW4gZXJyb3IuIFRvIGdldCBtZWFuaW5nZnVsIG91dHB1dCB5b3UnbGwKLS8vLyBuZWVkIHRvIHVzZSBhIGRlYnVnIGJ1aWxkIHdpdGggc3ltYm9scyBhbmQgd2l0aCBmcmFtZSBwb2ludGVycy4gRm9yCi0vLy8gR05VIGxkIHlvdSB3aWxsIGFsc28gbmVlZCB0byBsaW5rIHdpdGggdGhlIC1yZHluYW1pYyBvcHRpb24gdG8gc2VlCi0vLy8gYWN0dWFsIGZ1bmN0aW9uIG5hbWVzIGluc3RlYWQgb2YgX19neHhfcGVyc29uYWxpdHkwKzB4RjQ4MDAuCi0vLy8KLWNsYXNzIENCYWNrdHJhY2UgewotcHVibGljOgotCQkJQ0JhY2t0cmFjZSAodm9pZCk7Ci0JCQlDQmFja3RyYWNlIChjb25zdCBDQmFja3RyYWNlJiB2KTsKLQkJICAgICAgIH5DQmFja3RyYWNlICh2b2lkKTsKLSAgICBjb25zdCBDQmFja3RyYWNlJglvcGVyYXRvcj0gKGNvbnN0IENCYWNrdHJhY2UmIHYpOwotICAgIHZvaWQJCXRleHRfd3JpdGUgKG9zdHJpbmdzdHJlYW0mIG9zKSBjb25zdDsKLSAgICB2b2lkCQlyZWFkIChpc3RyZWFtJiBpcyk7Ci0gICAgdm9pZAkJd3JpdGUgKG9zdHJlYW0mIG9zKSBjb25zdDsKLSAgICBzaXplX3QJCXN0cmVhbV9zaXplICh2b2lkKSBjb25zdDsKLXByaXZhdGU6Ci0gICAgdm9pZAkJR2V0U3ltYm9scyAodm9pZCk7Ci1wcml2YXRlOgotICAgIHZvaWQqCQltX0FkZHJlc3NlcyBbNjRdOwkvLy88IEFkZHJlc3NlcyBvZiBlYWNoIGZ1bmN0aW9uIG9uIHRoZSBzdGFjay4KLSAgICBjaGFyKgkJbV9TeW1ib2xzOwkJLy8vPCBTeW1ib2xzIGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBhZGRyZXNzLgotICAgIHVpbnQzMl90CQltX25GcmFtZXM7CQkvLy88IE51bWJlciBvZiBhZGRyZXNzZXMgaW4gbV9BZGRyZXNzZXMuCi0gICAgdWludDMyX3QJCW1fU3ltYm9sc1NpemU7CQkvLy88IFNpemUgb2YgbV9TeW1ib2xzLgotfTsKLQotfSAvLyBuYW1lc3BhY2UgdXN0bAotCi1BTElHTk9GKHVzdGw6OkNCYWNrdHJhY2UsIHNpemVvZih2b2lkKikpCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9ic2NvbmYuaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL2JzY29uZi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OWI0YWYxLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL2JzY29uZi5oCisrKyAvZGV2L251bGwKQEAgLTEsMTczICswLDAgQEAKLS8qIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGJzY29uZiAtIGEgY29uZmlndXJlIHJlcGxhY2VtZW50LgotICoKLSAqIFRoaXMgaXMgdGhlIGNvbmZpZ3VyYXRpb24gZmlsZSB1c2VkIGJ5IGJzY29uZi5jIHRvIHNwZWNpZnkgaW5mb3JtYXRpb24KLSAqIHNwZWNpZmljIHRvIHlvdXIgcHJvamVjdCB0aGF0IGl0IG5lZWRzIHRvIHN1YnN0aXR1dGUgaW50byBmaWxlcyBsaXN0ZWQKLSAqIGluIGdfRmlsZXMuIEJlaW5nIGEgY29uZmlndXJhdGlvbiBmaWxlLCB0aGlzIGZpbGUgY2FuIGJlIHVzZWQgb3IKLSAqIG1vZGlmaWVkIGVudGlyZWx5IHdpdGhvdXQgcmVzdHJpY3Rpb24uIFlvdSBzaG91bGQgY2hhbmdlIGFsbCB2YWx1ZXMKLSAqIGFwcHJvcHJpYXRlbHkgdG8gdGhlIG5hbWUgb2YgeW91ciBwcm9qZWN0IGFuZCBpdHMgcmVxdWlyZW1lbnRzLiBUaGUKLSAqIGJzY29uZiBsaWNlbnNlIGRvZXMgbm90IGFwcGx5IHRvIHRoaXMgZmlsZS4gSXQgY2FuIGFuZCBzaG91bGQgYmUKLSAqIHRyZWF0ZWQgYXMgYSB0ZW1wbGF0ZSBmb3IgdGhlIGNyZWF0aW9uIG9mIHlvdXIgb3duIGNvbmZpZ3VyYXRpb24gZmlsZS4KLSAqCi0gKiBBbGwgc3Vic3RpdHV0ZWQgdmFyaWFibGUgbmFtZXMgYXJlIGdpdmVuIHdpdGhvdXQgZW5jbG9zaW5nIEBALiBGb3IKLSAqIGV4YW1wbGU6ICJDQyIgd2lsbCBtYXRjaCAiQENDQCIgaW4gY29uZmlnLmguaW4gYW5kIHJlcGxhY2UgaXQgd2l0aAotICogImdjYyIgaW4gY29uZmlnLmguCi0qLwotCi0jaW5jbHVkZSAidWFzc2VydC5oIgotCi0jZGVmaW5lIEJTQ09ORl9WRVJTSU9OCQkweDAzCi0KLSNkZWZpbmUgUEFDS0FHRV9OQU1FCQkidXN0bCIKLSNkZWZpbmUgTElCX01BSk9SCQkiMSIKLSNkZWZpbmUgTElCX01JTk9SCQkiMCIKLSNkZWZpbmUgTElCX0JVSUxECQkiMCIKLQotI2RlZmluZSBQQUNLQUdFX1ZFUlNJT04JCUxJQl9NQUpPUiAiLiIgTElCX01JTk9SCi0jZGVmaW5lIFBBQ0tBR0VfVEFSTkFNRQkJUEFDS0FHRV9OQU1FCi0jZGVmaW5lIFBBQ0tBR0VfU1RSSU5HCQlQQUNLQUdFX05BTUUgIiAiIFBBQ0tBR0VfVkVSU0lPTgotI2RlZmluZSBQQUNLQUdFX0JVR1JFUE9SVAkiTWlrZSBTaGFyb3YgPG1zaGFyb3ZAdXNlcnMuc291cmNlZm9yZ2UubmV0PiIKLQotc3RhdGljIGNwY2hhcl90IGdfRmlsZXMgW10gPSB7Ci0gICAgIkNvbmZpZy5tayIsCi0gICAgImNvbmZpZy5oIiwKLSAgICAidXN0bC5zcGVjIgotfTsKLQotLyogVmFsdWVzIHN1YnN0aXR1dGUgQFZBUk5BTUVAICovCi1zdGF0aWMgY3BjaGFyX3QgZ19FbnZWYXJzIFtdID0gewotICAgICJDQyIsCi0gICAgIkxEIiwKLSAgICAiQ1hYIiwKLSAgICAiQ1BQIiwKLSAgICAiSE9NRSIsCi0gICAgIkNYWEZMQUdTIiwKLSAgICAiTERGTEFHUyIsCi0gICAgIkNQUEZMQUdTIiwKLSAgICAiTERGTEFHUyIsCi0gICAgIkNGTEFHUyIKLX07Ci0KLS8qICBWQVJJQUJMRQlQUk9HUkFNCQlIT1cgVE8gQ0FMTAlJRiBOT1QgRk9VTkQgKi8KLXN0YXRpYyBjcGNoYXJfdCBnX1Byb2dWYXJzIFtdID0gewotICAgICJDQyIsCSJnY2MiLAkJImdjYyIsCQkiQENDQCIsCi0gICAgIkNDIiwJImNjIiwJCSJjYyIsCQkiZ2NjIiwKLSAgICAiQ1hYIiwJImcrKyIsCQkiZysrIiwJCSJAQ1hYQCIsCi0gICAgIkNYWCIsCSJjKysiLAkJImMrKyIsCQkiZysrIiwKLSAgICAiTEQiLAkibGQiLAkJImxkIiwJCSJsZCIsCi0gICAgIkFSIiwJImFyIiwJCSJhciIsCQkiZWNobyIsCi0gICAgIlJBTkxJQiIsCSJyYW5saWIiLAkicmFubGliIiwJInRvdWNoIiwKLSAgICAiRE9YWUdFTiIsCSJkb3h5Z2VuIiwJImRveHlnZW4iLAkiZWNobyIsCi0gICAgIklOU1RBTEwiLAkiaW5zdGFsbCIsCSJpbnN0YWxsIC1jIiwJImNwIgotfTsKLQotLyogICBOQU1FICAgICAgICAgICAgICAgSUYgTk9UIEZPVU5EICAgICAgICAgICAgICAgICAgICBJRiBGT1VORCAqLwotc3RhdGljIGNwY2hhcl90CWdfSGVhZGVycyBbXSA9IHsKLSAgICAiYXNzZXJ0LmgiLAkJIiN1bmRlZiBIQVZFX0FTU0VSVF9IIiwJCSIjZGVmaW5lIEhBVkVfQVNTRVJUX0ggMSIsCi0gICAgImN0eXBlLmgiLAkJIiN1bmRlZiBIQVZFX0NUWVBFX0giLAkJIiNkZWZpbmUgSEFWRV9DVFlQRV9IIDEiLAotICAgICJlcnJuby5oIiwJCSIjdW5kZWYgSEFWRV9FUlJOT19IIiwJCSIjZGVmaW5lIEhBVkVfRVJSTk9fSCAxIiwKLSAgICAiZmNudGwuaCIsCQkiI3VuZGVmIEhBVkVfRkNOVExfSCIsCQkiI2RlZmluZSBIQVZFX0ZDTlRMX0ggMSIsCi0gICAgImZsb2F0LmgiLAkJIiN1bmRlZiBIQVZFX0ZMT0FUX0giLAkJIiNkZWZpbmUgSEFWRV9GTE9BVF9IIDEiLAotICAgICJpbnR0eXBlcy5oIiwJIiN1bmRlZiBIQVZFX0lOVFRZUEVTX0giLAkiI2RlZmluZSBIQVZFX0lOVFRZUEVTX0ggMSIsCi0gICAgImxpbWl0cy5oIiwJCSIjdW5kZWYgSEFWRV9MSU1JVFNfSCIsCQkiI2RlZmluZSBIQVZFX0xJTUlUU19IIDEiLAotICAgICJsb2NhbGUuaCIsCQkiI3VuZGVmIEhBVkVfTE9DQUxFX0giLAkJIiNkZWZpbmUgSEFWRV9MT0NBTEVfSCAxIiwKLSAgICAibWFsbG9jLmgiLAkJIiN1bmRlZiBIQVZFX01BTExPQ19IIiwJCSIjZGVmaW5lIEhBVkVfTUFMTE9DX0ggMSIsCi0gICAgImFsbG9jYS5oIiwJCSIjdW5kZWYgSEFWRV9BTExPQ0FfSCIsCQkiI2RlZmluZSBIQVZFX0FMTE9DQV9IIDEiLAotICAgICJtZW1vcnkuaCIsCQkiI3VuZGVmIEhBVkVfTUVNT1JZX0giLAkJIiNkZWZpbmUgSEFWRV9NRU1PUllfSCAxIiwKLSAgICAic2lnbmFsLmgiLAkJIiN1bmRlZiBIQVZFX1NJR05BTF9IIiwJCSIjZGVmaW5lIEhBVkVfU0lHTkFMX0ggMSIsCi0gICAgInN0ZGFyZy5oIiwJCSIjdW5kZWYgSEFWRV9TVERBUkdfSCIsCQkiI2RlZmluZSBIQVZFX1NUREFSR19IIDEiLAotICAgICJzdGRkZWYuaCIsCQkiI3VuZGVmIEhBVkVfU1REREVGX0giLAkJIiNkZWZpbmUgSEFWRV9TVERERUZfSCAxIiwKLSAgICAic3RkaW50LmgiLAkJIiN1bmRlZiBIQVZFX1NURElOVF9IIiwJCSIjZGVmaW5lIEhBVkVfU1RESU5UX0ggMSIsCi0gICAgInN0ZGlvLmgiLAkJIiN1bmRlZiBIQVZFX1NURElPX0giLAkJIiNkZWZpbmUgSEFWRV9TVERJT19IIDEiLAotICAgICJzdGRsaWIuaCIsCQkiI3VuZGVmIEhBVkVfU1RETElCX0giLAkJIiNkZWZpbmUgSEFWRV9TVERMSUJfSCAxIiwKLSAgICAic3RyaW5nLmgiLAkJIiN1bmRlZiBIQVZFX1NUUklOR19IIiwJCSIjZGVmaW5lIEhBVkVfU1RSSU5HX0ggMSIsCi0gICAgInN0cmluZ3MuaCIsCSIjdW5kZWYgSEFWRV9TVFJJTkdTX0giLAkiI2RlZmluZSBIQVZFX1NUUklOR1NfSCAxIiwKLSAgICAic3lzL3N0YXQuaCIsCSIjdW5kZWYgSEFWRV9TWVNfU1RBVF9IIiwJIiNkZWZpbmUgSEFWRV9TWVNfU1RBVF9IIDEiLAotICAgICJzeXMvdHlwZXMuaCIsCSIjdW5kZWYgSEFWRV9TWVNfVFlQRVNfSCIsCSIjZGVmaW5lIEhBVkVfU1lTX1RZUEVTX0ggMSIsCi0gICAgInN5cy93YWl0LmgiLAkiI3VuZGVmIEhBVkVfU1lTX1dBSVRfSCIsCSIjZGVmaW5lIEhBVkVfU1lTX1dBSVRfSCAxIiwKLSAgICAidGltZS5oIiwJCSIjdW5kZWYgSEFWRV9USU1FX0giLAkJIiNkZWZpbmUgSEFWRV9USU1FX0ggMSIsCi0gICAgInVuaXN0ZC5oIiwJCSIjdW5kZWYgSEFWRV9VTklTVERfSCIsCQkiI2RlZmluZSBIQVZFX1VOSVNURF9IIDEiLAotICAgICJtYXRoLmgiLAkJIiN1bmRlZiBIQVZFX01BVEhfSCIsCQkiI2RlZmluZSBIQVZFX01BVEhfSCAxIiwKLSAgICAic3RkbGliLmgiLAkJIiN1bmRlZiBIQVZFX1NURExJQl9IIiwJCSIjZGVmaW5lIEhBVkVfU1RETElCX0ggMSIKLX07Ci0KLS8qICAgTkFNRSAgICAgICAgICAgICAgIElGIE5PVCBGT1VORCAgICAgICAgICAgICAgICAgICAgSUYgRk9VTkQgKi8KLXN0YXRpYyBjcGNoYXJfdCBnX0xpYnMgW10gPSB7Ci0gICAgInN1cGMrKyIsCQkiIiwJCQkJIi1sc3VwYysrIiwKLSNpZiBfX0dOVUNfXyA+PSA0Ci0gICAgImdjYyIsCQkiLWxnY2NfcyIsCQkJIi1sZ2NjX3MiLAotICAgICJnY2NfZWgiLAkJIiIsCQkJCSIiLAotI2VsaWYgX19HTlVDX18gPj0gMwotICAgICJnY2MiLAkJIi1sZ2NjX3MiLAkJCSItbGdjYyIsCi0gICAgImdjY19laCIsCQkiLWxnY2NfcyIsCQkJIi1sZ2NjX2VoIiwKLSNlbHNlCi0gICAgImdjYyIsCQkiIiwJCQkJIi1sZ2NjIiwKLSAgICAiZ2NjX2VoIiwJCSIiLAkJCQkiIiwKLSNlbmRpZgotICAgICJTeXN0ZW1TdHVicyIsCSIiLAkJCQkiLWxTeXN0ZW1TdHVicyIsIC8qIEZvciBNYWNPUyAxMC40KyAqLwotICAgICJjIiwJCSIiLAkJCQkiLWxjIgotfTsKLQotLyogICBOQU1FICAgICAgICAgICAgICAgSUYgTk9UIEZPVU5EICAgICAgICAgICAgICAgICAgICBJRiBGT1VORCAqLwotc3RhdGljIGNwY2hhcl90IGdfRnVuY3Rpb25zIFtdID0gewotICAgICJhdGV4aXQiLAkJIiN1bmRlZiBIQVZFX0FURVhJVCIsCQkiI2RlZmluZSBIQVZFX0FURVhJVCAxIiwKLSAgICAibWFsbG9jIiwJCSIjdW5kZWYgSEFWRV9NQUxMT0NcbiIsCQkiI2RlZmluZSBIQVZFX01BTExPQyAxXG4iLAotICAgICJtZW1jaHIiLAkJIiN1bmRlZiBIQVZFX01FTUNIUiIsCQkiI2RlZmluZSBIQVZFX01FTUNIUiAxIiwKLSAgICAibWVtbW92ZSIsCQkiI3VuZGVmIEhBVkVfTUVNTU9WRSIsCQkiI2RlZmluZSBIQVZFX01FTU1PVkUgMSIsCi0gICAgIm1lbXNldCIsCQkiI3VuZGVmIEhBVkVfTUVNU0VUIiwJCSIjZGVmaW5lIEhBVkVfTUVNU0VUIDEiLAotICAgICJwdHJkaWZmX3QiLAkiI3VuZGVmIEhBVkVfUFRSRElGRl9UIiwJIiNkZWZpbmUgSEFWRV9QVFJESUZGX1QgMSIsCi0gICAgInN0cmVycm9yIiwJCSIjdW5kZWYgSEFWRV9TVFJFUlJPUiIsCQkiI2RlZmluZSBIQVZFX1NUUkVSUk9SIDEiLAotICAgICJzdHJzaWduYWwiLAkiI3VuZGVmIEhBVkVfU1RSU0lHTkFMIiwJIiNkZWZpbmUgSEFWRV9TVFJTSUdOQUwgMSIsCi0gICAgInN0cnRvbCIsCQkiI3VuZGVmIEhBVkVfU1RSVE9MIiwJCSIjZGVmaW5lIEhBVkVfU1RSVE9MIDEiLAotI2lmIF9fR05VQ19fID49IDMKLSAgICAicm91bmQiLAkJIiN1bmRlZiBIQVZFX1JPVU5EIiwJCSIjZGVmaW5lIEhBVkVfUk9VTkQgMSIsCi0jZW5kaWYKLSAgICAic3RycmNociIsCQkiI3VuZGVmIEhBVkVfU1RSUkNIUiIsCQkiI2RlZmluZSBIQVZFX1NUUlJDSFIgMSIsCi0gICAgIl9fdmFfY29weSIsCSIjdW5kZWYgSEFWRV9WQV9DT1BZIiwJCSIjZGVmaW5lIEhBVkVfVkFfQ09QWSAxIgotfTsKLQotLyogICBOQU1FICAgICAgICAgICAgICAgV0lUSE9VVCBURVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdJVEggVEVYVCAqLwotc3RhdGljIGNwY2hhcl90IGdfQ29tcG9uZW50cyBbXSA9IHsKLSAgICAic2hhcmVkIiwJCSIjQlVJTERfU0hBUkVEXHQ9IDEiLAkJCSJCVUlMRF9TSEFSRURcdD0gMSAiLAotICAgICJzdGF0aWMiLAkJIiNCVUlMRF9TVEFUSUNcdD0gMSIsCQkJIkJVSUxEX1NUQVRJQ1x0PSAxICIsCi0gICAgImRlYnVnIiwJCSIjREVCVUdcdFx0PSAxIiwJCQkiREVCVUdcdFx0PSAxICIsCi0gICAgImJvdW5kcyIsCQkiI3VuZGVmIFdBTlRfU1RSRUFNX0JPVU5EU19DSEVDS0lORyIsCSIjZGVmaW5lIFdBTlRfU1RSRUFNX0JPVU5EU19DSEVDS0lORyAxICIsCi0gICAgImZhc3Rjb3B5IiwJCSIjdW5kZWYgV0FOVF9VTlJPTExFRF9DT1BZIiwJCSIjZGVmaW5lIFdBTlRfVU5ST0xMRURfQ09QWSAxICIsCi0jaWYgX19HTlVDX18gPj0gMyAmJiAoX19pMzg2X18gfHwgX194ODZfNjRfXykgJiYgIXN1bgotICAgICJtbXgiLAkJIiN1bmRlZiBXQU5UX01NWCIsCQkJIiNkZWZpbmUgV0FOVF9NTVggMSAiLAotI2VuZGlmCi0gICAgImxpYnN0ZGMrKyIsCSIjZGVmaW5lIFdJVEhPVVRfTElCU1REQ1BQIDEiLAkJIiN1bmRlZiBXSVRIT1VUX0xJQlNURENQUCIsCi0gICAgImxpYnN0ZGMrKyIsCSJOT0xJQlNURENQUFx0PSAtbm9kZWZhdWx0bGlicyAiLAkiI05PTElCU1REQ1BQXHQ9IC1ub2RlZmF1bHRsaWJzIgotfTsKLQotLyogUGFyYWxsZWwgdG8gZ19Db21wb25lbnRzICovCi1zdGF0aWMgU0NvbXBvbmVudEluZm8gZ19Db21wb25lbnRJbmZvcyBbVmVjdG9yU2l6ZShnX0NvbXBvbmVudHMpIC8gM10gPSB7Ci0gICAgeyAxLCAiQnVpbGRzIHRoZSBzaGFyZWQgbGlicmFyeSAoaWYgc3VwcG9ydGVkIGJ5IHRoZSBPUykiIH0sCi0gICAgeyAwLCAiQnVpbGRzIHRoZSBzdGF0aWMgbGlicmFyeSIgfSwKLSAgICB7IDAsICJDb21waWxlcyB0aGUgbGlicmFyeSB3aXRoIGRlYnVnZ2luZyBpbmZvcm1hdGlvbiIgfSwKLSAgICB7IDEsICJEaXNhYmxlIHJ1bnRpbWUgYm91bmRzIGNoZWNraW5nIG9uIHN0cmVhbSByZWFkcy93cml0ZXMiIH0sCi0gICAgeyAxLCAiRGlzYWJsZSBzcGVjaWFsaXphdGlvbnMgZm9yIGNvcHkvZmlsbCIgfSwKLSNpZiBfX0dOVUNfXyA+PSAzICYmIChfX2kzODZfXyB8fCBfX3g4Nl82NF9fKSAmJiAhc3VuCi0gICAgeyAxLCAiRGlzYWJsZSB1c2Ugb2YgTU1YL1NTRS8zZE5vdyEgaW5zdHJ1Y3Rpb25zIiB9LAotI2VuZGlmCi0jaWYgX19HTlVDX18gPj0gMwotICAgIHsgMCwgIkxpbmsgd2l0aCBsaWJzdGRjKysiIH0sCi0gICAgeyAwLCAiIiB9Ci0jZWxzZQotICAgIHsgMSwgIiIgfSwKLSAgICB7IDEsICIiIH0KLSNlbmRpZgotfTsKLQotLyogU3Vic3RpdHV0ZXMgbmFtZXMgbGlrZSBAUEFDS0FHRV9OQU1FQCB3aXRoIHRoZSBzZWNvbmQgZmllbGQgKi8KLXN0YXRpYyBjcGNoYXJfdCBnX0N1c3RvbVZhcnMgW10gPSB7Ci0gICAgIlBBQ0tBR0VfTkFNRSIsCQlQQUNLQUdFX05BTUUsCi0gICAgIlBBQ0tBR0VfVkVSU0lPTiIsCQlQQUNLQUdFX1ZFUlNJT04sCi0gICAgIlBBQ0tBR0VfVEFSTkFNRSIsCQlQQUNLQUdFX1RBUk5BTUUsCi0gICAgIlBBQ0tBR0VfU1RSSU5HIiwJCVBBQ0tBR0VfU1RSSU5HLAotICAgICJQQUNLQUdFX0JVR1JFUE9SVCIsCVBBQ0tBR0VfQlVHUkVQT1JULAotICAgICJMSUJOQU1FIiwJCQlQQUNLQUdFX05BTUUsCi0gICAgIkxJQl9NQUpPUiIsCQlMSUJfTUFKT1IsCi0gICAgIkxJQl9NSU5PUiIsCQlMSUJfTUlOT1IsCi0gICAgIkxJQl9CVUlMRCIsCQlMSUJfQlVJTEQKLX07Ci0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL2NtZW1saW5rLmNwcCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL2NtZW1saW5rLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzI1MGU5Zi4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9jbWVtbGluay5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxMTAgKzAsMCBAQAotLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHVzdGwgbGlicmFyeSwgYW4gU1RMIGltcGxlbWVudGF0aW9uLgotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwNSBieSBNaWtlIFNoYXJvdiA8bXNoYXJvdkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0vLyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgotLy8KLS8vIGNtZW1saW5rLmNjCi0vLwotLy8gU2VlIGNtZW1saW5rLmggZm9yIGRvY3VtZW50YXRpb24uCi0vLwotCi0jaW5jbHVkZSAiY21lbWxpbmsuaCIKLSNpbmNsdWRlICJvZnN0cmVhbS5oIgotI2luY2x1ZGUgInN0cm1zaXplLmgiCi0jaW5jbHVkZSAidWFsZ28uaCIKLSNpbmNsdWRlICJ1YXNzZXJ0LmgiCi0KLSNpZiBQTEFURk9STV9BTkRST0lECi0jaW5jbHVkZSA8c3RkaW8uaD4KLSN1bmRlZiBDUFVfSEFTX01NWAotI2VuZGlmCi0KLW5hbWVzcGFjZSB1c3RsIHsKLQotLy8vIFxicmllZiBBdHRhY2hlcyB0aGUgb2JqZWN0IHRvIHBvaW50ZXIgXHAgcCBvZiBzaXplIFxwIG4uCi0vLy8KLS8vLyBJZiBccCBwIGlzIE5VTEwgYW5kIFxwIG4gaXMgbm9uLXplcm8sIGJhZF9hbGxvYyBpcyB0aHJvd24gYW5kIGN1cnJlbnQKLS8vLyBzdGF0ZSByZW1haW5zIHVuY2hhbmdlZC4KLS8vLwotdm9pZCBjbWVtbGluazo6bGluayAoY29uc3Qgdm9pZCogcCwgc2l6ZV90eXBlIG4pCi17Ci0gICAgaWYgKCFwICYmIG4pCi0jaWYgUExBVEZPUk1fQU5EUk9JRAotICAgICAgIHByaW50ZigiYmFkIGFsbG9jXG4iKTsKLSNlbHNlIC8qICFQTEFURk9STV9BTkRST0lEICovCi0JdGhyb3cgYmFkX2FsbG9jIChuKTsKLSNlbmRpZgotICAgIHVubGluaygpOwotICAgIHJlbGluayAocCwgbik7Ci19Ci0KLS8vLyBXcml0ZXMgdGhlIG9iamVjdCB0byBzdHJlYW0gXHAgb3MKLXZvaWQgY21lbWxpbms6OndyaXRlIChvc3RyZWFtJiBvcykgY29uc3QKLXsKLSAgICBjb25zdCB3cml0dGVuX3NpemVfdHlwZSBzeiAoc2l6ZSgpKTsKLSAgICBhc3NlcnQgKHN6ID09IHNpemUoKSAmJiAiTm8gc3VwcG9ydCBmb3Igd3JpdGluZyBtZW1ibG9ja3MgbGFyZ2VyIHRoYW4gNEciKTsKLSAgICBvcyA8PCBzejsKLSAgICBvcy53cml0ZSAoY2RhdGEoKSwgc3opOwotICAgIG9zLmFsaWduIChhbGlnbm9mIChzeikpOwotfQotCi0vLy8gV3JpdGVzIHRoZSBvYmplY3QgdG8gc3RyZWFtIFxwIG9zCi12b2lkIGNtZW1saW5rOjp0ZXh0X3dyaXRlIChvc3RyaW5nc3RyZWFtJiBvcykgY29uc3QKLXsKLSAgICBvcy53cml0ZSAoYmVnaW4oKSwgcmVhZGFibGVfc2l6ZSgpKTsKLX0KLQotLy8vIFJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyByZXF1aXJlZCB0byB3cml0ZSB0aGlzIG9iamVjdCB0byBhIHN0cmVhbS4KLWNtZW1saW5rOjpzaXplX3R5cGUgY21lbWxpbms6OnN0cmVhbV9zaXplICh2b2lkKSBjb25zdAotewotICAgIGNvbnN0IHdyaXR0ZW5fc2l6ZV90eXBlIHN6IChzaXplKCkpOwotICAgIHJldHVybiAoQWxpZ24gKHN0cmVhbV9zaXplX29mIChzeikgKyBzeiwgYWxpZ25vZihzeikpKTsKLX0KLQotLy8vIFdyaXRlcyB0aGUgZGF0YSB0byBmaWxlIFxwICJmaWxlbmFtZSIuCi12b2lkIGNtZW1saW5rOjp3cml0ZV9maWxlIChjb25zdCBjaGFyKiBmaWxlbmFtZSwgaW50IG1vZGUpIGNvbnN0Ci17Ci0gICAgZnN0cmVhbSBmOwotICAgIGYuZXhjZXB0aW9ucyAoZnN0cmVhbTo6YWxsYmFkYml0cyk7Ci0gICAgZi5vcGVuIChmaWxlbmFtZSwgZnN0cmVhbTo6b3V0IHwgZnN0cmVhbTo6dHJ1bmMsIG1vZGUpOwotICAgIGYud3JpdGUgKGNkYXRhKCksIHJlYWRhYmxlX3NpemUoKSk7Ci0gICAgZi5jbG9zZSgpOwotfQotCi0vLy8gc3dhcHMgdGhlIGNvbnRlbnRzIHdpdGggXHAgbAotdm9pZCBjbWVtbGluazo6c3dhcCAoY21lbWxpbmsmIGwpCi17Ci0jaWYgQ1BVX0hBU19NTVggJiYgU0laRV9PRl9QT0lOVEVSID09IDQKLSAgICBhc20gKAotCSJtb3ZxICUwLCAlJW1tMFxuXHQiCi0JIm1vdnEgJTIsICUlbW0xXG5cdCIKLQkibW92cSAlJW1tMCwgJTJcblx0IgotCSJtb3ZxICUlbW0xLCAlMCIKLQk6ICI9bSIobV9EYXRhKSwgIj1tIihtX1NpemUpLCAiPW0iKGwubV9EYXRhKSwgIj1tIihsLm1fU2l6ZSkKLQk6IAotCTogIm1tMCIsICJtbTEiLCAic3QiLCAic3QoMSkiKTsKLSAgICBzaW1kOjpyZXNldF9tbXgoKTsKLSNlbGlmIENQVV9IQVNfU1NFICYmIFNJWkVfT0ZfUE9JTlRFUiA9PSA4Ci0gICAgYXNtICgKLQkibW92dXBzICUwLCAlJXhtbTBcblx0IgotCSJtb3Z1cHMgJTIsICUleG1tMVxuXHQiCi0JIm1vdnVwcyAlJXhtbTAsICUyXG5cdCIKLQkibW92dXBzICUleG1tMSwgJTAiCi0JOiAiPW0iKG1fRGF0YSksICI9bSIobV9TaXplKSwgIj1tIihsLm1fRGF0YSksICI9bSIobC5tX1NpemUpCi0JOiAKLQk6ICJ4bW0wIiwgInhtbTEiKTsKLSNlbHNlCi0gICAgOjp1c3RsOjpzd2FwIChtX0RhdGEsIGwubV9EYXRhKTsKLSAgICA6OnVzdGw6OnN3YXAgKG1fU2l6ZSwgbC5tX1NpemUpOwotI2VuZGlmCi19Ci0KLS8vLyBDb21wYXJlcyB0byBtZW1vcnkgYmxvY2sgcG9pbnRlZCBieSBsLiBTaXplIGlzIGNvbXBhcmVkIGZpcnN0LgotYm9vbCBjbWVtbGluazo6b3BlcmF0b3I9PSAoY29uc3QgY21lbWxpbmsmIGwpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIChsLm1fU2l6ZSA9PSBtX1NpemUgJiYKLQkgICAgKGwubV9EYXRhID09IG1fRGF0YSB8fCAwID09IG1lbWNtcCAobC5tX0RhdGEsIG1fRGF0YSwgbV9TaXplKSkpOwotfQotCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL2NtZW1saW5rLmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9jbWVtbGluay5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NmE5Mzg4Li4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL2NtZW1saW5rLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDEgKzAsMCBAQAotLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHVzdGwgbGlicmFyeSwgYW4gU1RMIGltcGxlbWVudGF0aW9uLgotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwNSBieSBNaWtlIFNoYXJvdiA8bXNoYXJvdkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0vLyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgotLy8KLS8vIGNtZW1saW5rLmgKLS8vCi0KLSNpZm5kZWYgQ01FTUxJTktfSF83Q0ZBQjMyQzVDNjczMkVEMjlCMzRFRjAwRUE0MEExMgotI2RlZmluZSBDTUVNTElOS19IXzdDRkFCMzJDNUM2NzMyRUQyOUIzNEVGMDBFQTQwQTEyCi0KLSNpbmNsdWRlICJ1YWxnb2Jhc2UuaCIKLQotLy8vIFRoZSB1c3RsIG5hbWVzcGFjZSBjb250YWlucyBhbGwgdXN0bCBjbGFzc2VzIGFuZCBhbGdvcml0aG1zLgotbmFtZXNwYWNlIHVzdGwgewotCi1jbGFzcyBpc3RyZWFtOwotY2xhc3Mgb3N0cmVhbTsKLWNsYXNzIG9zdHJpbmdzdHJlYW07Ci0KLS8vLyBcY2xhc3MgY21lbWxpbmsgY21lbWxpbmsuaCB1c3RsLmgKLS8vLyBcaW5ncm91cCBNZW1vcnlNYW5hZ2VtZW50Ci0vLy8KLS8vLyBcYnJpZWYgQSByZWFkLW9ubHkgcG9pbnRlciB0byBhIHNpemVkIGJsb2NrIG9mIG1lbW9yeS4KLS8vLwotLy8vIFVzZSB0aGlzIGNsYXNzIHRoZSB3YXkgeW91IHdvdWxkIGEgY29uc3QgcG9pbnRlciB0byBhbiBhbGxvY2F0ZWQgdW5zdHJ1Y3R1cmVkIGJsb2NrLgotLy8vIFRoZSBwb2ludGVyIGFuZCBibG9jayBzaXplIGFyZSBhdmFpbGFibGUgdGhyb3VnaCBtZW1iZXIgZnVuY3Rpb25zIGFuZCBjYXN0IG9wZXJhdG9yLgotLy8vCi0vLy8gRXhhbXBsZSB1c2FnZToKLS8vLwotLy8vIFxjb2RlCi0vLy8gICAgIHZvaWQqIHAgPSBtYWxsb2MgKDQ2NzIxKTsKLS8vLyAgICAgY21lbWxpbmsgYSwgYjsKLS8vLyAgICAgYS5saW5rIChwLCA0NjcyMSk7Ci0vLy8gICAgIGFzc2VydCAoYS5zaXplKCkgPT0gNDY3MjEpKTsKLS8vLyAgICAgYiA9IGE7Ci0vLy8gICAgIGFzc2VydCAoYi5zaXplKCkgPT0gNDY3MjEpKTsKLS8vLyAgICAgYXNzZXJ0IChiLkRhdGFBdCgzNCkgPT0gYS5EYXRhQXQoMzQpKTsKLS8vLyAgICAgYXNzZXJ0ICgwID09IG1lbWNtcCAoYSwgYiwgMTIpKTsKLS8vLyBcZW5kY29kZQotLy8vCi1jbGFzcyBjbWVtbGluayB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBjaGFyCQl2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgY29uc3QgdmFsdWVfdHlwZSoJcG9pbnRlcjsKLSAgICB0eXBlZGVmIGNvbnN0IHZhbHVlX3R5cGUqCWNvbnN0X3BvaW50ZXI7Ci0gICAgdHlwZWRlZiB2YWx1ZV90eXBlCQlyZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiB2YWx1ZV90eXBlCQljb25zdF9yZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiBzaXplX3QJCXNpemVfdHlwZTsKLSAgICB0eXBlZGVmIHVpbnQzMl90CQl3cml0dGVuX3NpemVfdHlwZTsKLSAgICB0eXBlZGVmIHB0cmRpZmZfdAkJZGlmZmVyZW5jZV90eXBlOwotICAgIHR5cGVkZWYgY29uc3RfcG9pbnRlcgljb25zdF9pdGVyYXRvcjsKLSAgICB0eXBlZGVmIGNvbnN0X2l0ZXJhdG9yCWl0ZXJhdG9yOwotICAgIHR5cGVkZWYgY29uc3QgY21lbWxpbmsmCXJjc2VsZl90OwotcHVibGljOgotICAgIGlubGluZQkJY21lbWxpbmsgKHZvaWQpCQkJCTogbV9EYXRhIChOVUxMKSwgbV9TaXplICgwKSB7IH0KLSAgICBpbmxpbmUJCWNtZW1saW5rIChjb25zdCB2b2lkKiBwLCBzaXplX3R5cGUgbikJOiBtX0RhdGEgKGNvbnN0X3BvaW50ZXIocCkpLCBtX1NpemUgKG4pIHsgYXNzZXJ0IChwIHx8ICFuKTsgfQotICAgIGlubGluZQkJY21lbWxpbmsgKGNvbnN0IGNtZW1saW5rJiBsKQkJOiBtX0RhdGEgKGwubV9EYXRhKSwgbV9TaXplIChsLm1fU2l6ZSkge30KLSAgICBpbmxpbmUgdmlydHVhbCAgICAgfmNtZW1saW5rICh2b2lkKQkJCQl7fQotICAgIHZvaWQJCWxpbmsgKGNvbnN0IHZvaWQqIHAsIHNpemVfdHlwZSBuKTsKLQkJCU9WRVJMT0FEX1BPSU5URVJfQU5EX1NJWkVfVF9WMihsaW5rLCBjb25zdCB2b2lkKikKLSAgICBpbmxpbmUgdm9pZAkJbGluayAoY29uc3QgY21lbWxpbmsmIGwpCXsgbGluayAobC5iZWdpbigpLCBsLnNpemUoKSk7IH0KLSAgICBpbmxpbmUgdm9pZAkJbGluayAoY29uc3Qgdm9pZCogZmlyc3QsIGNvbnN0IHZvaWQqIGxhc3QpCXsgbGluayAoZmlyc3QsIGRpc3RhbmNlIChmaXJzdCwgbGFzdCkpOyB9Ci0gICAgaW5saW5lIHZvaWQJCXJlbGluayAoY29uc3Qgdm9pZCogcCwgc2l6ZV90eXBlIG4pOwotICAgIGlubGluZSB2aXJ0dWFsIHZvaWQJdW5saW5rICh2b2lkKQkJCXsgbV9EYXRhID0gTlVMTDsgbV9TaXplID0gMDsgfQotICAgIGlubGluZSByY3NlbGZfdAlvcGVyYXRvcj0gKGNvbnN0IGNtZW1saW5rJiBsKQl7IGxpbmsgKGwpOyByZXR1cm4gKCp0aGlzKTsgfQotICAgIGJvb2wJCW9wZXJhdG9yPT0gKGNvbnN0IGNtZW1saW5rJiBsKSBjb25zdDsKLSAgICB2b2lkCQlzd2FwIChjbWVtbGluayYgbCk7Ci0gICAgaW5saW5lIHNpemVfdHlwZQlzaXplICh2b2lkKSBjb25zdAkJeyByZXR1cm4gKG1fU2l6ZSk7IH0KLSAgICBpbmxpbmUgc2l6ZV90eXBlCW1heF9zaXplICh2b2lkKSBjb25zdAkJeyByZXR1cm4gKHNpemUoKSk7IH0KLSAgICBpbmxpbmUgc2l6ZV90eXBlCXJlYWRhYmxlX3NpemUgKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChzaXplKCkpOyB9Ci0gICAgaW5saW5lIGJvb2wJCWVtcHR5ICh2b2lkKSBjb25zdAkJeyByZXR1cm4gKCFzaXplKCkpOyB9Ci0gICBpbmxpbmUgY29uc3RfcG9pbnRlcgljZGF0YSAodm9pZCkgY29uc3QJCXsgcmV0dXJuIChtX0RhdGEpOyB9Ci0gICAgaW5saW5lIGl0ZXJhdG9yCWJlZ2luICh2b2lkKSBjb25zdAkJeyByZXR1cm4gKGl0ZXJhdG9yIChjZGF0YSgpKSk7IH0KLSAgICBpbmxpbmUgaXRlcmF0b3IJaWF0IChzaXplX3R5cGUgaSkgY29uc3QJCXsgYXNzZXJ0IChpIDw9IHNpemUoKSk7IHJldHVybiAoYmVnaW4oKSArIGkpOyB9Ci0gICAgaW5saW5lIGl0ZXJhdG9yCWVuZCAodm9pZCkgY29uc3QJCXsgcmV0dXJuIChpYXQgKHNpemUoKSkpOyB9Ci0gICAgaW5saW5lIHZvaWQJCXJlc2l6ZSAoc2l6ZV90eXBlIG4pCQl7IG1fU2l6ZSA9IG47IH0KLSAgICBpbmxpbmUgdm9pZAkJcmVhZCAoaXN0cmVhbSYpCQkJeyBhc3NlcnQgKCEidXN0bDo6Y21lbWxpbmsgaXMgYSByZWFkLW9ubHkgb2JqZWN0LiIpOyB9Ci0gICAgdm9pZAkJd3JpdGUgKG9zdHJlYW0mIG9zKSBjb25zdDsKLSAgICBzaXplX3R5cGUJCXN0cmVhbV9zaXplICh2b2lkKSBjb25zdDsKLSAgICB2b2lkCQl0ZXh0X3dyaXRlIChvc3RyaW5nc3RyZWFtJiBvcykgY29uc3Q7Ci0gICAgdm9pZAkJd3JpdGVfZmlsZSAoY29uc3QgY2hhciogZmlsZW5hbWUsIGludCBtb2RlID0gMDY0NCkgY29uc3Q7Ci1wcml2YXRlOgotICAgIGNvbnN0X3BvaW50ZXIJbV9EYXRhOwkJLy8vPCBQb2ludGVyIHRvIHRoZSBkYXRhIGJsb2NrIChjb25zdCkKLSAgICBzaXplX3R5cGUJCW1fU2l6ZTsJCS8vLzwgc2l6ZSBvZiB0aGUgZGF0YSBibG9jawotfTsKLQotLy8vIEEgZmFzdCBhbHRlcm5hdGl2ZSB0byBsaW5rIHdoaWNoIGNhbiBiZSB1c2VkIHdoZW4gcmVsaW5raW5nIHRvIHRoZSBzYW1lIGJsb2NrIChpLmUuIHdoZW4gaXQgaXMgcmVzaXplZCkKLWlubGluZSB2b2lkIGNtZW1saW5rOjpyZWxpbmsgKGNvbnN0IHZvaWQqIHAsIHNpemVfdHlwZSBuKQotewotICAgIG1fRGF0YSA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3RfcG9pbnRlcj4ocCk7Ci0gICAgbV9TaXplID0gbjsKLX0KLQotLy8vIFVzZSB3aXRoIGNtZW1saW5rLWRlcml2ZWQgY2xhc3NlcyB0byBsaW5rIHRvIGEgc3RhdGljIGFycmF5Ci0jZGVmaW5lIHN0YXRpY19saW5rKHYpCWxpbmsgKFZlY3RvckJsb2NrKHYpKQotCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9jb25maWcuaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL2NvbmZpZy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNmU0YjdmLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL2NvbmZpZy5oCisrKyAvZGV2L251bGwKQEAgLTEsMjk2ICswLDAgQEAKLS8vIGNvbmZpZy5oCi0vLwotLy8gQXV0b2dlbmVyYXRlZCBmcm9tIGNvbmZpZy5oLmluIGJ5IGJzY29uZi4KLS8vCi0KLSNpZm5kZWYgQ09ORklHX0hfMDFFMzM2NzA2MzREQUFDNzc5RUU1RkY0MUNDQkIzNkYKLSNkZWZpbmUgQ09ORklHX0hfMDFFMzM2NzA2MzREQUFDNzc5RUU1RkY0MUNDQkIzNkYKLQotI2luY2x1ZGUgInVhc3NlcnQuaCIKLQotI2lmIFBMQVRGT1JNX0FORFJPSUQKLQotI2luY2x1ZGUgPHV0aWxzL0VuZGlhbi5oPgotCi0vLyBCeXRlIG9yZGVyIG1hY3JvcywgY29udmVydGVkIGluIHV0eXBlcy5oCi0jZGVmaW5lIFVTVExfTElUVExFX0VORElBTglfX0xJVFRMRV9FTkRJQU4KLSNkZWZpbmUgVVNUTF9CSUdfRU5ESUFOCQlfX0JJR19FTkRJQU4KLSNkZWZpbmUgVVNUTF9CWVRFX09SREVSCQlfX0JZVEVfT1JERVIKLQotI2lmICFkZWZpbmVkIE5ERUJVRwotI2RlZmluZSBOREVCVUcKLSNlbmRpZgotI2Vsc2UgLyogIVBMQVRGT1JNX0FORFJPSUQgKi8KLS8vIEJ5dGUgb3JkZXIgbWFjcm9zLCBjb252ZXJ0ZWQgaW4gdXR5cGVzLmgKLSNkZWZpbmUgVVNUTF9MSVRUTEVfRU5ESUFOCTQzMjEKLSNkZWZpbmUgVVNUTF9CSUdfRU5ESUFOCQkxMjM0Ci0jZGVmaW5lIFVTVExfQllURV9PUkRFUgkJVVNUTF9MSVRUTEVfRU5ESUFOCi0jZW5kaWYKLQotLy8gRGVmaW5lIHRvIHRoZSBvbmUgc3ltYm9sIHNob3J0IG5hbWUgb2YgdGhpcyBwYWNrYWdlLgotI2RlZmluZSBVU1RMX05BTUUJInVzdGwiCi0vLyBEZWZpbmUgdG8gdGhlIGZ1bGwgbmFtZSBhbmQgdmVyc2lvbiBvZiB0aGlzIHBhY2thZ2UuCi0jZGVmaW5lIFVTVExfU1RSSU5HCSJ1c3RsIDEuMCIKLS8vIERlZmluZSB0byB0aGUgdmVyc2lvbiBvZiB0aGlzIHBhY2thZ2UuCi0jZGVmaW5lIFVTVExfVkVSU0lPTgkweDEwMAotLy8gRGVmaW5lIHRvIHRoZSBhZGRyZXNzIHdoZXJlIGJ1ZyByZXBvcnRzIGZvciB0aGlzIHBhY2thZ2Ugc2hvdWxkIGJlIHNlbnQuCi0jZGVmaW5lIFVTVExfQlVHUkVQT1JUCSJNaWtlIFNoYXJvdiA8bXNoYXJvdkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+IgotCi0vLy8gRGVmaW5lIHRvIDEgaWYgeW91IHdhbnQgc3RyZWFtIG9wZXJhdGlvbnMgdG8gdGhyb3cgZXhjZXB0aW9ucyBvbgotLy8vIGluc3VmZmljaWVudCBkYXRhIG9yIGluc3VmZmljaWVudCBzcGFjZS4gQWxsIHRoZXNlIGVycm9ycyBzaG91bGQKLS8vLyBiZSBwcmV2ZW50YWJsZSBpbiBvdXRwdXQgY29kZTsgdGhlIGlucHV0IGNvZGUgc2hvdWxkIHZlcmlmeSB0aGUKLS8vLyBkYXRhIGluIGEgc2VwYXJhdGUgc3RlcC4gSXQgc2xvd3MgZG93biBzdHJlYW0gb3BlcmF0aW9ucyBhIGxvdCwKLS8vLyBidXQgaXQncyB5b3VyIGNhbGwuIEJ5IGRlZmF1bHQgb25seSBkZWJ1ZyBidWlsZHMgdGhyb3cuCi0vLy8KLSN1bmRlZiBXQU5UX1NUUkVBTV9CT1VORFNfQ0hFQ0tJTkcKLQotI2lmICFkZWZpbmVkKFdBTlRfU1RSRUFNX0JPVU5EU19DSEVDS0lORykgJiYgIWRlZmluZWQoTkRFQlVHKQotICAgICNkZWZpbmUgV0FOVF9TVFJFQU1fQk9VTkRTX0NIRUNLSU5HIDEKLSNlbmRpZgotCi0vLy8gRGVmaW5lIHRvIDEgaWYgeW91IHdhbnQgdG8gYnVpbGQgd2l0aG91dCBsaWJzdGRjKysKLSNkZWZpbmUgV0lUSE9VVF9MSUJTVERDUFAgMQotCi0vLy8gRGVmaW5lIEdOVSBleHRlbnNpb25zIGlmIHVuYXZhaWxhYmxlLgotI2lmbmRlZiBfX0dOVUNfXwotICAgIC8vLyBHQ0MgKGFuZCBzb21lIG90aGVyIGNvbXBpbGVycykgZGVmaW5lICdfX2F0dHJpYnV0ZV9fJzsgdXN0bCBpcyB1c2luZyB0aGlzCi0gICAgLy8vIG1hY3JvIHRvIGFsZXJ0IHRoZSBjb21waWxlciB0byBmbGFnIGluY29uc2lzdGVuY2llcyBpbiBwcmludGYvc2NhbmYtbGlrZQotICAgIC8vLyBmdW5jdGlvbiBjYWxscy4gIEp1c3QgaW4gY2FzZSAnX19hdHRyaWJ1dGVfXycgaXNuJ3QgZGVmaW5lZCwgbWFrZSBhIGR1bW15LgotICAgIC8vLyAKLSAgICAjaWZuZGVmIF9fYXR0cmlidXRlX18KLQkjZGVmaW5lIF9fYXR0cmlidXRlX18ocCkKLSAgICAjZW5kaWYKLSNlbmRpZgotI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID49IDQKLSAgICAjZGVmaW5lIERMTF9FWFBPUlQJCV9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpCi0gICAgI2RlZmluZSBETExfTE9DQUwJCV9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImhpZGRlbiIpKSkKLSNlbHNlCi0gICAgI2RlZmluZSBETExfRVhQT1JUCi0gICAgI2RlZmluZSBETExfTE9DQUwKLSNlbmRpZgotI2lmIGRlZmluZWQoX19HTlVDX18pICYmIF9fR05VQ19fID49IDMgJiYgX19pMzg2X18KLSAgICAvLy8gR0NDIDMrIHN1cHBvcnRzIHRoZSBwcmVmZXRjaCBkaXJlY3RpdmUsIHdoaWNoIHNvbWUgQ1BVcyB1c2UgdG8gaW1wcm92ZSBjYWNoaW5nCi0gICAgI2RlZmluZSBwcmVmZXRjaChwLHJ3LGxvYykJX19idWlsdGluX3ByZWZldGNoKHAscncsbG9jKQotI2Vsc2UKLSAgICAjZGVmaW5lIHByZWZldGNoKHAscncsbG9jKQotI2VuZGlmCi0jaWYgIWRlZmluZWQoX19HTlVDX18pIHx8IF9fR05VQ19fIDwgMwotICAgIC8vLyBfX2FsaWdub2ZfXyByZXR1cm5zIHRoZSByZWNvbW1lbmRlZCBhbGlnbm1lbnQgZm9yIHRoZSB0eXBlCi0gICAgI2RlZmluZSBfX2FsaWdub2ZfXyh2KQltaW4oc2l6ZW9mKHYpLCBzaXplb2Yodm9pZCopKQotI2VuZGlmCi0KLS8vLyBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGF0ZXhpdCcgZnVuY3Rpb24uCi0jZGVmaW5lIEhBVkVfQVRFWElUIDEKLQotLy8vIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8YXNzZXJ0Lmg+IGhlYWRlciBmaWxlLgotI2RlZmluZSBIQVZFX0FTU0VSVF9IIDEKLQotLy8vIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8Y3R5cGUuaD4gaGVhZGVyIGZpbGUuCi0jZGVmaW5lIEhBVkVfQ1RZUEVfSCAxCi0KLS8vLyBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGVycm5vLmg+IGhlYWRlciBmaWxlLgotI2RlZmluZSBIQVZFX0VSUk5PX0ggMQotCi0vLy8gRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxmY250bC5oPiBoZWFkZXIgZmlsZS4KLSNkZWZpbmUgSEFWRV9GQ05UTF9IIDEKLQotLy8vIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8ZmxvYXQuaD4gaGVhZGVyIGZpbGUuCi0jZGVmaW5lIEhBVkVfRkxPQVRfSCAxCi0KLS8vLyBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGludHR5cGVzLmg+IGhlYWRlciBmaWxlLgotI2RlZmluZSBIQVZFX0lOVFRZUEVTX0ggMQotCi0vLy8gRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxsaW1pdHMuaD4gaGVhZGVyIGZpbGUuCi0jZGVmaW5lIEhBVkVfTElNSVRTX0ggMQotCi0vLy8gRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxsb2NhbGUuaD4gaGVhZGVyIGZpbGUuCi0jZGVmaW5lIEhBVkVfTE9DQUxFX0ggMQotCi0vLy8gRGVmaW5lIHRvIDEgaWYgeW91ciBzeXN0ZW0gaGFzIGEgd29ya2luZyBgbWFsbG9jJyBmdW5jdGlvbi4KLSNkZWZpbmUgSEFWRV9NQUxMT0MgMQotCi0vLyBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG1hbGxvYy5oPiBoZWFkZXIgZmlsZS4KLSN1bmRlZiBIQVZFX01BTExPQ19ICi0KLS8vIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8YWxsb2NhLmg+IGhlYWRlciBmaWxlLgotI2RlZmluZSBIQVZFX0FMTE9DQV9IIDEKLQotLy8gRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBtZW1jaHInIGZ1bmN0aW9uLgotI2RlZmluZSBIQVZFX01FTUNIUiAxCi0KLS8vIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgbWVtbW92ZScgZnVuY3Rpb24uCi0jZGVmaW5lIEhBVkVfTUVNTU9WRSAxCi0KLS8vIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8bWVtb3J5Lmg+IGhlYWRlciBmaWxlLgotI2RlZmluZSBIQVZFX01FTU9SWV9IIDEKLQotLy8gRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBtZW1zZXQnIGZ1bmN0aW9uLgotI2RlZmluZSBIQVZFX01FTVNFVCAxCi0KLS8vIERlZmluZSB0byAxIGlmIHRoZSBzeXN0ZW0gaGFzIHRoZSB0eXBlIGBwdHJkaWZmX3QnLgotI2RlZmluZSBIQVZFX1BUUkRJRkZfVCAxCi0KLS8vIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c2lnbmFsLmg+IGhlYWRlciBmaWxlLgotI2RlZmluZSBIQVZFX1NJR05BTF9IIDEKLQotLy8gRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIF9fdmFfY29weSBmdW5jdGlvbgotI2RlZmluZSBIQVZFX1ZBX0NPUFkgMQotCi0vLyBEZWZpbmUgdG8gMSBpZiBgc3RhdCcgaGFzIHRoZSBidWcgdGhhdCBpdCBzdWNjZWVkcyB3aGVuIGdpdmVuIHRoZQotLy8gemVyby1sZW5ndGggZmlsZSBuYW1lIGFyZ3VtZW50LgotLyogI3VuZGVmIEhBVkVfU1RBVF9FTVBUWV9TVFJJTkdfQlVHICovCi0KLS8vIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RkYXJnLmg+IGhlYWRlciBmaWxlLgotI2RlZmluZSBIQVZFX1NUREFSR19IIDEKLQotLy8gRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdGRkZWYuaD4gaGVhZGVyIGZpbGUuCi0jZGVmaW5lIEhBVkVfU1REREVGX0ggMQotCi0vLyBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0ZGludC5oPiBoZWFkZXIgZmlsZS4KLSNkZWZpbmUgSEFWRV9TVERJTlRfSCAxCi0KLS8vIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RkaW8uaD4gaGVhZGVyIGZpbGUuCi0jZGVmaW5lIEhBVkVfU1RESU9fSCAxCi0KLS8vIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3RkbGliLmg+IGhlYWRlciBmaWxlLgotI2RlZmluZSBIQVZFX1NURExJQl9IIDEKLQotLy8gRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzdHJlcnJvcicgZnVuY3Rpb24uCi0jZGVmaW5lIEhBVkVfU1RSRVJST1IgMQotCi0vLyBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0cmluZ3MuaD4gaGVhZGVyIGZpbGUuCi0jZGVmaW5lIEhBVkVfU1RSSU5HU19IIDEKLQotLy8gRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxzdHJpbmcuaD4gaGVhZGVyIGZpbGUuCi0jZGVmaW5lIEhBVkVfU1RSSU5HX0ggMQotCi0vLyBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN0cnJjaHInIGZ1bmN0aW9uLgotI2RlZmluZSBIQVZFX1NUUlJDSFIgMQotCi0vLyBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHN0cnNpZ25hbCcgZnVuY3Rpb24uCi0jdW5kZWYgSEFWRV9TVFJTSUdOQUwKLQotLy8gRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzdHJ0b2wnIGZ1bmN0aW9uLgotI2RlZmluZSBIQVZFX1NUUlRPTCAxCi0KLS8vIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3N0YXQuaD4gaGVhZGVyIGZpbGUuCi0jZGVmaW5lIEhBVkVfU1lTX1NUQVRfSCAxCi0KLS8vIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3R5cGVzLmg+IGhlYWRlciBmaWxlLgotI2RlZmluZSBIQVZFX1NZU19UWVBFU19IIDEKLQotLy8gRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgPHN5cy93YWl0Lmg+IHRoYXQgaXMgUE9TSVguMSBjb21wYXRpYmxlLgotI2RlZmluZSBIQVZFX1NZU19XQUlUX0ggMQotCi0vLyBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHRpbWUuaD4gaGVhZGVyIGZpbGUuCi0jZGVmaW5lIEhBVkVfVElNRV9IIDEKLQotLy8gRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDx1bmlzdGQuaD4gaGVhZGVyIGZpbGUuCi0jZGVmaW5lIEhBVkVfVU5JU1REX0ggMQotCi0vLyBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPG1hdGguaD4gaGVhZGVyIGZpbGUuCi0jZGVmaW5lIEhBVkVfTUFUSF9IIDEKLQotLy8gRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIHJpbnRmIGZ1bmN0aW9uLiBXaWxsIHVzZSByaW50IG90aGVyd2lzZS4KLSN1bmRlZiBIQVZFX1JJTlRGCi0KLS8vIFNURENfSEVBREVSUyBpcyBkZWZpbmVkIHRvIDEgb24gc2FuZSBzeXN0ZW1zLgotI2lmIGRlZmluZWQoSEFWRV9BU1NFUlRfSCkgJiYgZGVmaW5lZChIQVZFX0NUWVBFX0gpICYmXAotICAgIGRlZmluZWQoSEFWRV9FUlJOT19IKSAmJiBkZWZpbmVkKEhBVkVfRkxPQVRfSCkgJiZcCi0gICAgZGVmaW5lZChIQVZFX0xJTUlUU19IKSAmJiBkZWZpbmVkKEhBVkVfTE9DQUxFX0gpICYmXAotICAgIGRlZmluZWQoSEFWRV9NQVRIX0gpICYmIGRlZmluZWQoSEFWRV9TSUdOQUxfSCkgJiZcCi0gICAgZGVmaW5lZChIQVZFX1NUREFSR19IKSAmJiBkZWZpbmVkKEhBVkVfU1REREVGX0gpICYmXAotICAgIGRlZmluZWQoSEFWRV9TVERJT19IKSAmJiBkZWZpbmVkKEhBVkVfU1RETElCX0gpICYmXAotICAgIGRlZmluZWQoSEFWRV9TVFJJTkdfSCkgJiYgZGVmaW5lZChIQVZFX1RJTUVfSCkKLSNkZWZpbmUgU1REQ19IRUFERVJTIDEKLSNlbmRpZgotCi0vLyBTVERDX0hFQURFUlMgaXMgZGVmaW5lZCB0byAxIG9uIHVuaXggc3lzdGVtcy4KLSNpZiBkZWZpbmVkKEhBVkVfRkNOVExfSCkgJiYgZGVmaW5lZChIQVZFX1NZU19TVEFUX0gpICYmIGRlZmluZWQoSEFWRV9VTklTVERfSCkKLSNkZWZpbmUgU1REVU5JWF9IRUFERVJTIDEKLSNlbmRpZgotCi0vLyBEZWZpbmUgdG8gMSBpZiBgbHN0YXQnIGRlcmVmZXJlbmNlcyBhIHN5bWxpbmsgc3BlY2lmaWVkIHdpdGggYSB0cmFpbGluZyBzbGFzaC4KLSNkZWZpbmUgTFNUQVRfRk9MTE9XU19TTEFTSEVEX1NZTUxJTksgMQotCi0vLyBEZWZpbmUgdG8gMSBpZiB5b3VyIGNvbXBpbGVyIHRyZWF0cyBjaGFyIGFzIGEgc2VwYXJhdGUgdHlwZSBhbG9uZyB3aXRoCi0vLyBzaWduZWQgY2hhciBhbmQgdW5zaWduZWQgY2hhci4gVGhpcyB3aWxsIGNyZWF0ZSBvdmVybG9hZHMgZm9yIGNoYXIuCi0jZGVmaW5lIEhBVkVfVEhSRUVfQ0hBUl9UWVBFUyAxCi0KLS8vIERlZmluZSBhcyB0aGUgcmV0dXJuIHR5cGUgb2Ygc2lnbmFsIGhhbmRsZXJzIChgaW50JyBvciBgdm9pZCcpLgotI2RlZmluZSBSRVRTSUdUWVBFIHZvaWQKLQotLy8gRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgNjQgYml0IHR5cGVzIGF2YWlsYWJsZQotI2RlZmluZSBIQVZFX0lOVDY0X1QgMQotCi0vLyBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgbG9uZyBsb25nIHR5cGUKLSN1bmRlZiBIQVZFX0xPTkdfTE9ORwotCi0vLyBEZWZpbmUgdG8gMSBpZiB5b3Ugd2FudCB1bnJvbGxlZCBzcGVjaWFsaXphdGlvbnMgZm9yIGZpbGwgYW5kIGNvcHkKLSNkZWZpbmUgV0FOVF9VTlJPTExFRF9DT1BZIDEgCi0KLS8vIERlZmluZSB0byAxIGlmIHlvdSB3YW50IHRvIHVzZSBNTVgvU1NFLzNkTm93ISBwcm9jZXNzb3IgaW5zdHJ1Y3Rpb25zCi0jdW5kZWYgV0FOVF9NTVgKLQotLy8gRGVmaW5lIHRvIGJ5dGUgc2l6ZXMgb2YgdHlwZXMKLSNkZWZpbmUgU0laRV9PRl9DSEFSIDEKLSNkZWZpbmUgU0laRV9PRl9TSE9SVCAyCi0jZGVmaW5lIFNJWkVfT0ZfSU5UIDQKLSNkZWZpbmUgU0laRV9PRl9MT05HIDQKLSNkZWZpbmUgU0laRV9PRl9MT05HX0xPTkcgOAotI2RlZmluZSBTSVpFX09GX1BPSU5URVIgNAotI2RlZmluZSBTSVpFX09GX1NJWkVfVCA0Ci0jZGVmaW5lIFNJWkVfT0ZfQk9PTCBTSVpFX09GX0xPTkcKLSNpZiBTSVpFX09GX1NJWkVfVCA9PSBTSVpFX09GX0xPTkcKLSNkZWZpbmUgU0laRV9UX0lTX0xPTkcgMQotI2Vsc2UKLSNkZWZpbmUgU0laRV9UX0lTX0xPTkcgMAotI2VuZGlmCi0KLS8vIEV4dGVuZGVkIENQVSBjYXBhYmlsaXRpZXMKLSN1bmRlZiBDUFVfSEFTX0ZQVQotI3VuZGVmIENQVV9IQVNfRVhUX0RFQlVHCi0jdW5kZWYgQ1BVX0hBU19USU1FU1RBTVBDCi0jdW5kZWYgQ1BVX0hBU19NU1IKLSN1bmRlZiBDUFVfSEFTX0NNUFhDSEc4Ci0jdW5kZWYgQ1BVX0hBU19BUElDCi0jdW5kZWYgQ1BVX0hBU19TWVNDQUxMCi0jdW5kZWYgQ1BVX0hBU19NVFJSCi0jdW5kZWYgQ1BVX0hBU19DTU9WCi0jdW5kZWYgQ1BVX0hBU19GQ01PVgotI2lmIFdBTlRfTU1YCi0jdW5kZWYgQ1BVX0hBU19NTVgKLSN1bmRlZiBDUFVfSEFTX0ZYU0FWRQotI3VuZGVmIENQVV9IQVNfU1NFIAotI3VuZGVmIENQVV9IQVNfU1NFMgotI3VuZGVmIENQVV9IQVNfU1NFMwotI3VuZGVmIENQVV9IQVNfRVhUXzNETk9XCi0jdW5kZWYgQ1BVX0hBU18zRE5PVwotI2VuZGlmCi0KLS8vIEdDQyB2ZWN0b3IgZXh0ZW5zaW9ucwotI2lmIGRlZmluZWQoQ1BVX0hBU19NTVgpIHx8IGRlZmluZWQoQ1BVX0hBU19TU0UpCi0gICAgI2RlZmluZSBIQVZFX1ZFQ1RPUl9FWFRFTlNJT05TIDEKLSNlbmRpZgotCi0jaWYgQ1BVX0hBU19TU0UgJiYgZGVmaW5lZChfX0dOVUNfXykKLSAgICAjZGVmaW5lIF9fc3NlX2FsaWduCV9fYXR0cmlidXRlX18oKGFsaWduZWQoMTYpKSkKLSNlbHNlCi0gICAgI2RlZmluZSBfX3NzZV9hbGlnbgkKLSNlbmRpZgotCi0vLyBEZWZpbmUgdG8gZW1wdHkgaWYgYGNvbnN0JyBkb2VzIG5vdCBjb25mb3JtIHRvIEFOU0kgQy4KLS8qICNkZWZpbmUgY29uc3QgKi8KLQotLy8gRGVmaW5lIGFzIGBfX2lubGluZScgaWYgdGhhdCdzIHdoYXQgdGhlIEMgY29tcGlsZXIgY2FsbHMgaXQsIG9yIHRvIG5vdGhpbmcKLS8vIGlmIGl0IGlzIG5vdCBzdXBwb3J0ZWQuCi0vKiAjZGVmaW5lIGlubGluZSBfX2lubGluZSAqLwotCi0vLyBEZWZpbmUgdG8gYGxvbmcnIGlmIDxzeXMvdHlwZXMuaD4gZG9lcyBub3QgZGVmaW5lLgotLyogdHlwZWRlZiBsb25nIG9mZl90OyAqLwotCi0vLyBEZWZpbmUgdG8gYHVuc2lnbmVkJyBpZiA8c3lzL3R5cGVzLmg+IGRvZXMgbm90IGRlZmluZS4KLS8qIHR5cGVkZWYgbG9uZyBzaXplX3Q7ICovCi0KLSNlbmRpZgkvLyBDT05GSUdfSF8wMUUzMzY3MDYzNERBQUM3NzlFRTVGRjQxQ0NCQjM2RgotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9mc3RyZWFtLmNwcCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL2ZzdHJlYW0uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNmI5NjkxLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL2ZzdHJlYW0uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjgyICswLDAgQEAKLS8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB1c3RsIGxpYnJhcnksIGFuIFNUTCBpbXBsZW1lbnRhdGlvbi4KLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgYnkgTWlrZSBTaGFyb3YgPG1zaGFyb3ZAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotLy8gVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KLS8vCi0vLyBmaWxlLmNjCi0vLwotCi0jaW5jbHVkZSAiZnN0cmVhbS5oIgotI2luY2x1ZGUgInVhc3NlcnQuaCIKLSNpbmNsdWRlICJ1ZXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAidXV0aWxpdHkuaCIKLQotI2luY2x1ZGUgPGZjbnRsLmg+Ci0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0jaW5jbHVkZSA8ZXJybm8uaD4KLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotI2luY2x1ZGUgPHN5cy9tbWFuLmg+Ci0jaW5jbHVkZSA8c3lzL2lvY3RsLmg+Ci0KLSNpZiBQTEFURk9STV9BTkRST0lECi0jaW5jbHVkZSA8c3RkaW8uaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgdXN0bCB7Ci0KLS8vLyBEZWZhdWx0IGNvbnN0cnVjdG9yLgotZnN0cmVhbTo6ZnN0cmVhbSAodm9pZCkKLTogaW9zX2Jhc2UgKCksCi0gIG1fZmQgKC0xKSwKLSAgbV9GaWxlbmFtZSAoKQotewotfQotCi0vLy8gT3BlbnMgXHAgZmlsZW5hbWUgaW4gXHAgbW9kZS4KLWZzdHJlYW06OmZzdHJlYW0gKGNvbnN0IGNoYXIqIGZpbGVuYW1lLCBvcGVubW9kZSBtb2RlKQotOiBpb3NfYmFzZSAoKSwKLSAgbV9mZCAoLTEpLAotICBtX0ZpbGVuYW1lICgpCi17Ci0gICAgb3BlbiAoZmlsZW5hbWUsIG1vZGUpOwotfQotCi0vLy8gQXR0YWNoZXMgdG8gXHAgbmZkIG9mIFxwIGZpbGVuYW1lLgotZnN0cmVhbTo6ZnN0cmVhbSAoaW50IG5mZCwgY29uc3QgY2hhciogZmlsZW5hbWUpCi06IGlvc19iYXNlICgpLAotICBtX2ZkICgtMSksCi0gIG1fRmlsZW5hbWUgKCkKLXsKLSAgICBhdHRhY2ggKG5mZCwgZmlsZW5hbWUpOwotfQotCi0vLy8gRGVzdHJ1Y3Rvci4gQ2xvc2VzIGlmIHN0aWxsIG9wZW4sIGJ1dCB3aXRob3V0IHRocm93aW5nLgotZnN0cmVhbTo6fmZzdHJlYW0gKHZvaWQpIHRocm93KCkKLXsKLSAgICBjbGVhciAoZ29vZGJpdCk7Ci0gICAgZXhjZXB0aW9ucyAoZ29vZGJpdCk7Ci0gICAgY2xvc2UoKTsKLSAgICBhc3NlcnQgKCEocmRzdGF0ZSgpICYgYmFkYml0KSAmJiAiY2xvc2UgZmFpbGVkIGluIHRoZSBkZXN0cnVjdG9yISBUaGlzIG1heSBsZWFkIHRvIGxvc3Mgb2YgdXNlciBkYXRhLiBQbGVhc2UgY2FsbCBjbG9zZSgpIG1hbnVhbGx5IGFuZCBlaXRoZXIgZW5hYmxlIGV4Y2VwdGlvbnMgb3IgY2hlY2sgdGhlIGJhZGJpdC4iKTsKLX0KLQotLy8vIFNldHMgc3RhdGUgXHAgcyBhbmQgdGhyb3dzIGRlcGVuZGluZyBvbiB0aGUgZXhjZXB0aW9uIHNldHRpbmcuCi12b2lkIGZzdHJlYW06OnNldF9hbmRfdGhyb3cgKGlvc3RhdGUgcywgY29uc3QgY2hhciogb3ApCi17Ci0gICAgaWYgKGlvc19iYXNlOjpzZXRfYW5kX3Rocm93IChzKSkKLSNpZiBQTEFURk9STV9BTkRST0lECi0gICAgICAgIHByaW50ZigiZmlsZV9leGNlcHRpb25cbiIpOwotI2Vsc2UgLyogIVBMQVRGT1JNX0FORFJPSUQgKi8KLQl0aHJvdyBmaWxlX2V4Y2VwdGlvbiAob3AsIG5hbWUoKSk7Ci0jZW5kaWYKLX0KLQotLy8vIEF0dGFjaGVzIHRvIHRoZSBnaXZlbiBccCBuZmQuCi12b2lkIGZzdHJlYW06OmF0dGFjaCAoaW50IG5mZCwgY29uc3QgY2hhciogZmlsZW5hbWUpCi17Ci0gICAgYXNzZXJ0IChmaWxlbmFtZSAmJiAiRG9uJ3QgZG8gdGhhdCIpOwotICAgIGNsZWFyIChnb29kYml0KTsKLSAgICBpZiAobmZkIDwgMCAmJiBpb3NfYmFzZTo6c2V0X2FuZF90aHJvdyAoYmFkYml0KSkKLSNpZiBQTEFURk9STV9BTkRST0lECi0gICAgICAgIHByaW50ZigiZmlsZSBleGNlcHRpb25cbiIpOwotI2Vsc2UgLyogIVBMQVRGT1JNX0FORFJPSUQgKi8KLQl0aHJvdyBmaWxlX2V4Y2VwdGlvbiAoIm9wZW4iLCBmaWxlbmFtZSk7Ci0jZW5kaWYKLSAgICBjbG9zZSgpOwotICAgIG1fZmQgPSBuZmQ7Ci0gICAgbV9GaWxlbmFtZSA9IGZpbGVuYW1lOwotfQotCi0vLy8gRGV0YWNoZXMgZnJvbSB0aGUgY3VycmVudCBmZC4KLXZvaWQgZnN0cmVhbTo6ZGV0YWNoICh2b2lkKQotewotICAgIG1fZmQgPSAtMTsKLSAgICBtX0ZpbGVuYW1lLmNsZWFyKCk7Ci19Ci0KLS8vLyBDb252ZXJ0cyBvcGVubW9kZSBiaXRzIGludG8gbGliYyBvcGVuIGZsYWdzLgotLypzdGF0aWMqLyBpbnQgZnN0cmVhbTo6b21fdG9fZmxhZ3MgKG9wZW5tb2RlIG0pCi17Ci0gICAgc3RhdGljIGNvbnN0IGludCBzX09NRmxhZ3MgW25vbWJpdHNdID0gewotCTAsCQkvLyBpbgotCU9fQ1JFQVQsCS8vIG91dAotCU9fQVBQRU5ELAkvLyBhcHAKLQlPX0FQUEVORCwJLy8gYXRlCi0JMCwJCS8vIGJpbmFyeQotCU9fVFJVTkMsCS8vIHRydW5jCi0JT19OT05CTE9DSywJLy8gbm9uYmxvY2sKLQkwLAkJLy8gbm9jcmVhdGUKLQlPX05PQ1RUWQkvLyBub2N0dHkKLSAgICB9OwotICAgIGludCBmbGFncyA9IChtIC0gMSkgJiBPX0FDQ01PREU7CS8vIGluIGFuZCBvdXQKLSAgICBmb3IgKHVvZmZfdCBpID0gMDsgaSA8IFZlY3RvclNpemUoc19PTUZsYWdzKTsgKysgaSkKLQlpZiAobSAmICgxIDw8IGkpKQotCSAgICBmbGFncyB8PSBzX09NRmxhZ3NbaV07Ci0gICAgaWYgKG0gJiBub2NyZWF0ZSkKLQlmbGFncyAmPSB+T19DUkVBVDsKLSAgICByZXR1cm4gKGZsYWdzKTsKLX0KLQotLy8vIFxicmllZiBPcGVucyBccCBmaWxlbmFtZSBpbiB0aGUgZ2l2ZW4gbW9kZS4KLS8vLyBcd2FybmluZyBUaGUgc3RyaW5nIGF0IFxwIGZpbGVuYW1lIG11c3QgZXhpc3QgdW50aWwgdGhlIG9iamVjdCBpcyBjbG9zZWQuCi12b2lkIGZzdHJlYW06Om9wZW4gKGNvbnN0IGNoYXIqIGZpbGVuYW1lLCBvcGVubW9kZSBtb2RlLCBtb2RlX3QgcGVybXMpCi17Ci0gICAgaW50IG5mZCA9IDo6b3BlbiAoZmlsZW5hbWUsIG9tX3RvX2ZsYWdzKG1vZGUpLCBwZXJtcyk7Ci0gICAgYXR0YWNoIChuZmQsIGZpbGVuYW1lKTsKLX0KLQotLy8vIENsb3NlcyB0aGUgZmlsZSBhbmQgdGhyb3dzIG9uIGVycm9yLgotdm9pZCBmc3RyZWFtOjpjbG9zZSAodm9pZCkKLXsKLSAgICBpZiAobV9mZCA+PSAwICYmIDo6Y2xvc2UobV9mZCkpCi0Jc2V0X2FuZF90aHJvdyAoYmFkYml0IHwgZmFpbGJpdCwgImNsb3NlIik7Ci0gICAgZGV0YWNoKCk7Ci19Ci0KLS8vLyBNb3ZlcyB0aGUgY3VycmVudCBmaWxlIHBvc2l0aW9uIHRvIFxwIG4uCi1vZmZfdCBmc3RyZWFtOjpzZWVrIChvZmZfdCBuLCBzZWVrZGlyIHdoZW5jZSkKLXsKLSAgICBvZmZfdCBwID0gbHNlZWsgKG1fZmQsIG4sIHdoZW5jZSk7Ci0gICAgaWYgKHAgPCAwKQotCXNldF9hbmRfdGhyb3cgKGZhaWxiaXQsICJzZWVrIik7Ci0gICAgcmV0dXJuIChwKTsKLX0KLQotLy8vIFJldHVybnMgdGhlIGN1cnJlbnQgZmlsZSBwb3NpdGlvbi4KLW9mZl90IGZzdHJlYW06OnBvcyAodm9pZCkgY29uc3QKLXsKLSAgICByZXR1cm4gKGxzZWVrIChtX2ZkLCAwLCBTRUVLX0NVUikpOwotfQotCi0vLy8gUmVhZHMgXHAgbiBieXRlcyBpbnRvIFxwIHAuCi1vZmZfdCBmc3RyZWFtOjpyZWFkICh2b2lkKiBwLCBvZmZfdCBuKQotewotICAgIG9mZl90IGJyICgwKTsKLSAgICB3aGlsZSAoYnIgPCBuICYmIGdvb2QoKSkKLQliciArPSByZWFkc29tZSAoYWR2YW5jZSAocCwgYnIpLCBuIC0gYnIpOwotICAgIHJldHVybiAoYnIpOwotfQotCi0vLy8gUmVhZHMgYXQgbW9zdCBccCBuIGJ5dGVzIGludG8gXHAgcCwgc3RvcHBpbmcgd2hlbiBpdCBmZWVscyBsaWtlIGl0Lgotb2ZmX3QgZnN0cmVhbTo6cmVhZHNvbWUgKHZvaWQqIHAsIG9mZl90IG4pCi17Ci0gICAgc3NpemVfdCBicm47Ci0gICAgZG8geyBicm4gPSA6OnJlYWQgKG1fZmQsIHAsIG4pOyB9IHdoaWxlIChicm4gPCAwICYmIGVycm5vID09IEVJTlRSKTsKLSAgICBpZiAoYnJuID4gMCkKLQlyZXR1cm4gKGJybik7Ci0gICAgaWYgKGJybiA8IDAgJiYgZXJybm8gIT0gRUFHQUlOKQotCXNldF9hbmRfdGhyb3cgKGZhaWxiaXQsICJyZWFkIik7Ci0gICAgaWYgKCFicm4gJiYgaW9zX2Jhc2U6OnNldF9hbmRfdGhyb3cgKGVvZmJpdCB8IGZhaWxiaXQpKQotI2lmIFBMQVRGT1JNX0FORFJPSUQKLSAgICAgICAgcHJpbnRmKCJzdHJlYW1fYm91bmRzX2V4Y2VwdGlvblxuIik7Ci0jZWxzZSAvKiAhUExBVEZPUk1fQU5EUk9JRCAqLwotICAgICAgICB0aHJvdyBzdHJlYW1fYm91bmRzX2V4Y2VwdGlvbiAoInJlYWQiLCBuYW1lKCksIHBvcygpLCBuLCAwKTsKLSNlbmRpZgotICAgIHJldHVybiAoMCk7Ci19Ci0KLS8vLyBXcml0ZXMgXHAgbiBieXRlcyBmcm9tIFxwIHAuCi1vZmZfdCBmc3RyZWFtOjp3cml0ZSAoY29uc3Qgdm9pZCogcCwgb2ZmX3QgbikKLXsKLSAgICBvZmZfdCBidHcgKG4pOwotICAgIHdoaWxlIChidHcpIHsKLQljb25zdCBvZmZfdCBidyAobiAtIGJ0dyk7Ci0Jc3NpemVfdCBid24gPSA6OndyaXRlIChtX2ZkLCBhZHZhbmNlKHAsYncpLCBidHcpOwotCWlmIChid24gPiAwKQotCSAgICBidHcgLT0gYnduOwotCWVsc2UgaWYgKCFid24pIHsKLQkgICAgaWYgKGlvc19iYXNlOjpzZXRfYW5kX3Rocm93IChlb2ZiaXQgfCBmYWlsYml0KSkKLSNpZiBQTEFURk9STV9BTkRST0lECi0JICAgICAgcHJpbnRmKCJzdHJlYW1fYm91bmRzX2V4Y2VwdGlvblxuIik7Ci0jZWxzZSAvKiAhUExBVEZPUk1fQU5EUk9JRCAqLwotCSAgICB0aHJvdyBzdHJlYW1fYm91bmRzX2V4Y2VwdGlvbiAoIndyaXRlIiwgbmFtZSgpLCBwb3MoKSAtIGJ3LCBuLCBidyk7Ci0jZW5kaWYKLQkgICAgYnJlYWs7Ci0JfSBlbHNlIGlmIChlcnJubyAhPSBFSU5UUikgewotCSAgICBpZiAoZXJybm8gIT0gRUFHQUlOKQotCQlzZXRfYW5kX3Rocm93IChmYWlsYml0LCAid3JpdGUiKTsKLQkgICAgYnJlYWs7Ci0JfQotICAgIH0KLSAgICByZXR1cm4gKG4gLSBidHcpOwotfQotCi0vLy8gUmV0dXJucyB0aGUgZmlsZSBzaXplLgotb2ZmX3QgZnN0cmVhbTo6c2l6ZSAodm9pZCkgY29uc3QKLXsKLSAgICBzdHJ1Y3Qgc3RhdCBzdDsKLSAgICBzdC5zdF9zaXplID0gMDsKLSAgICBzdGF0IChzdCk7Ci0gICAgcmV0dXJuIChzdC5zdF9zaXplKTsKLX0KLQotLy8vIFN5bmNocm9uaXplcyB0aGUgZmlsZSdzIGRhdGEgYW5kIHN0YXR1cyB3aXRoIHRoZSBkaXNrLgotdm9pZCBmc3RyZWFtOjpzeW5jICh2b2lkKQotewotICAgIGlmIChmc3luYyAobV9mZCkpCi0Jc2V0X2FuZF90aHJvdyAoZmFpbGJpdCwgInN5bmMiKTsKLX0KLQotLy8vIEdldCB0aGUgc3RhdCBzdHJ1Y3R1cmUuCi12b2lkIGZzdHJlYW06OnN0YXQgKHN0cnVjdCBzdGF0JiBycykgY29uc3QKLXsKLSAgICBpZiAoZnN0YXQgKG1fZmQsICZycykpCi0jaWYgUExBVEZPUk1fQU5EUk9JRAotICAgICAgICBwcmludGYoImZpbGVfZXhjZXB0aW9uXG4iKTsKLSNlbHNlCi0JdGhyb3cgZmlsZV9leGNlcHRpb24gKCJzdGF0IiwgbmFtZSgpKTsKLSNlbmRpZgotfQotCi0vLy8gQ2FsbHMgdGhlIGdpdmVuIGlvY3RsLiBVc2UgSU9DVExJRCBtYWNybyB0byBwYXNzIGluIGJvdGggXHAgbmFtZSBhbmQgXHAgcmVxdWVzdC4KLWludCBmc3RyZWFtOjppb2N0bCAoY29uc3QgY2hhciogcm5hbWUsIGludCByZXF1ZXN0LCBsb25nIGFyZ3VtZW50KQotewotICAgIGludCBydiA9IDo6aW9jdGwgKG1fZmQsIHJlcXVlc3QsIGFyZ3VtZW50KTsKLSAgICBpZiAocnYgPCAwKQotCXNldF9hbmRfdGhyb3cgKGZhaWxiaXQsIHJuYW1lKTsKLSAgICByZXR1cm4gKHJ2KTsKLX0KLQotLy8vIENhbGxzIHRoZSBnaXZlbiBmY250bC4gVXNlIEZDTlRMSUQgbWFjcm8gdG8gcGFzcyBpbiBib3RoIFxwIG5hbWUgYW5kIFxwIHJlcXVlc3QuCi1pbnQgZnN0cmVhbTo6ZmNudGwgKGNvbnN0IGNoYXIqIHJuYW1lLCBpbnQgcmVxdWVzdCwgbG9uZyBhcmd1bWVudCkKLXsKLSAgICBpbnQgcnYgPSA6OmZjbnRsIChtX2ZkLCByZXF1ZXN0LCBhcmd1bWVudCk7Ci0gICAgaWYgKHJ2IDwgMCkKLQlzZXRfYW5kX3Rocm93IChmYWlsYml0LCBybmFtZSk7Ci0gICAgcmV0dXJuIChydik7Ci19Ci0KLS8vLyBNZW1vcnktbWFwcyB0aGUgZmlsZSBhbmQgcmV0dXJucyBhIGxpbmsgdG8gaXQuCi1tZW1saW5rIGZzdHJlYW06Om1tYXAgKG9mZl90IG4sIG9mZl90IG9mZnNldCkKLXsKLSAgICB2b2lkKiByZXN1bHQgPSA6Om1tYXAgKE5VTEwsIG4sIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsIE1BUF9TSEFSRUQsIG1fZmQsIG9mZnNldCk7Ci0gICAgaWYgKHJlc3VsdCA9PSBNQVBfRkFJTEVEKQotCXNldF9hbmRfdGhyb3cgKGZhaWxiaXQsICJtbWFwIik7Ci0gICAgcmV0dXJuIChtZW1saW5rIChyZXN1bHQsIG4pKTsKLX0KLQotLy8vIFVubWFwcyBhIG1lbW9yeS1tYXBwZWQgYXJlYS4KLXZvaWQgZnN0cmVhbTo6bXVubWFwIChtZW1saW5rJiBsKQotewotICAgIGlmICg6Om11bm1hcCAobC5kYXRhKCksIGwuc2l6ZSgpKSkKLQlzZXRfYW5kX3Rocm93IChmYWlsYml0LCAibXVubWFwIik7Ci0gICAgbC51bmxpbmsoKTsKLX0KLQotLy8vIFN5bmNocm9uaXplcyBhIG1lbW9yeS1tYXBwZWQgYXJlYS4KLXZvaWQgZnN0cmVhbTo6bXN5bmMgKG1lbWxpbmsmIGwpCi17Ci0gICAgaWYgKDo6bXN5bmMgKGwuZGF0YSgpLCBsLnNpemUoKSwgTVNfQVNZTkMgfCBNU19JTlZBTElEQVRFKSkKLQlzZXRfYW5kX3Rocm93IChmYWlsYml0LCAibXN5bmMiKTsKLX0KLQotdm9pZCBmc3RyZWFtOjpzZXRfbm9uYmxvY2sgKGJvb2wgdikKLXsKLSAgICBpbnQgY3VyZiA9IGZjbnRsIChGQ05UTElEIChGX0dFVEZMKSk7Ci0gICAgaWYgKGN1cmYgPCAwKSByZXR1cm47Ci0gICAgaWYgKHYpIGN1cmYgfD0gIE9fTk9OQkxPQ0s7Ci0gICAgZWxzZSAgIGN1cmYgJj0gfk9fTk9OQkxPQ0s7Ci0gICAgZmNudGwgKEZDTlRMSUQgKEZfU0VURkwpLCBjdXJmKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgdXN0bAotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9mc3RyZWFtLmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9mc3RyZWFtLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmNjBiYmQuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvZnN0cmVhbS5oCisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHVzdGwgbGlicmFyeSwgYW4gU1RMIGltcGxlbWVudGF0aW9uLgotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwNSBieSBNaWtlIFNoYXJvdiA8bXNoYXJvdkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0vLyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgotLy8KLS8vIGZzdHJlYW0uaAotLy8KLQotI2lmbmRlZiBGU1RSRUFNX0hfMDU2RTEwRjcwRUFENDE2NDQzRTNCMzZBMkQ2QjVGQTMKLSNkZWZpbmUgRlNUUkVBTV9IXzA1NkUxMEY3MEVBRDQxNjQ0M0UzQjM2QTJENkI1RkEzCi0KLSNpbmNsdWRlICJ1aW9zLmgiCi0jaW5jbHVkZSAidXN0cmluZy5oIgotCi1zdHJ1Y3Qgc3RhdDsKLQotbmFtZXNwYWNlIHVzdGwgewotCi0vLy8gXGNsYXNzIGZzdHJlYW0gZnN0cmVhbS5oIHVzdGwuaAotLy8vCi0vLy8gXGJyaWVmIEltcGxlbWVudHMgZmlsZSBvcGVyYXRpb25zLgotLy8vCi0vLy8gVGhpcyBpcyBub3QgaW1wbGVtZW50ZWQgYXMgYSBzdHJlYW0sIGJ1dCByYXRoZXIgYXMgYSBiYXNlIGZvciBvbmUuIFlvdQotLy8vIHNob3VsZCB1c2UgaWZzdHJlYW0gb3Igb2ZzdHJlYW0gaWYgeW91IHdhbnQgZmxvdyBvcGVyYXRvcnMuIE90aGVyd2lzZQotLy8vIHRoaXMgb25seSBpbXBsZW1lbnRzIGZ1bmN0aW9ucyBmb3IgYmluYXJ5IGkvby4KLS8vLwotY2xhc3MgZnN0cmVhbSA6IHB1YmxpYyBpb3NfYmFzZSB7Ci1wdWJsaWM6Ci0JCQlmc3RyZWFtICh2b2lkKTsKLSAgICBleHBsaWNpdAkJZnN0cmVhbSAoY29uc3QgY2hhciogZmlsZW5hbWUsIG9wZW5tb2RlIG1vZGUgPSBpbiB8IG91dCk7Ci0gICAgZXhwbGljaXQJCWZzdHJlYW0gKGludCBuZmQsIGNvbnN0IGNoYXIqIGZpbGVuYW1lID0gc3RyaW5nOjplbXB0eV9zdHJpbmcpOwotCQkgICAgICAgfmZzdHJlYW0gKHZvaWQpIHRocm93KCk7Ci0gICAgdm9pZAkJb3BlbiAoY29uc3QgY2hhciogZmlsZW5hbWUsIG9wZW5tb2RlIG1vZGUsIG1vZGVfdCBwZXJtcyA9IDA2NDQpOwotICAgIHZvaWQJCWF0dGFjaCAoaW50IG5mZCwgY29uc3QgY2hhciogZmlsZW5hbWUgPSBzdHJpbmc6OmVtcHR5X3N0cmluZyk7Ci0gICAgdm9pZAkJZGV0YWNoICh2b2lkKTsKLSAgICB2b2lkCQljbG9zZSAodm9pZCk7Ci0gICAgdm9pZAkJc3luYyAodm9pZCk7Ci0gICAgb2ZmX3QJCXJlYWQgKHZvaWQqIHAsIG9mZl90IG4pOwotICAgIG9mZl90CQlyZWFkc29tZSAodm9pZCogcCwgb2ZmX3Qgbik7Ci0gICAgb2ZmX3QJCXdyaXRlIChjb25zdCB2b2lkKiBwLCBvZmZfdCBuKTsKLSAgICBvZmZfdAkJc2l6ZSAodm9pZCkgY29uc3Q7Ci0gICAgb2ZmX3QJCXNlZWsgKG9mZl90IG4sIHNlZWtkaXIgd2hlbmNlID0gYmVnKTsKLSAgICBvZmZfdAkJcG9zICh2b2lkKSBjb25zdDsKLSAgICB2b2lkCQlzdGF0IChzdHJ1Y3Qgc3RhdCYgcnMpIGNvbnN0OwotICAgIGludAkJCWlvY3RsIChjb25zdCBjaGFyKiBybmFtZSwgaW50IHJlcXVlc3QsIGxvbmcgYXJndW1lbnQgPSAwKTsKLSAgICBpbmxpbmUgaW50CQlpb2N0bCAoY29uc3QgY2hhciogcm5hbWUsIGludCByZXF1ZXN0LCBpbnQgYXJndW1lbnQpCXsgcmV0dXJuIChmc3RyZWFtOjppb2N0bCAocm5hbWUsIHJlcXVlc3QsIGxvbmcoYXJndW1lbnQpKSk7IH0KLSAgICBpbmxpbmUgaW50CQlpb2N0bCAoY29uc3QgY2hhciogcm5hbWUsIGludCByZXF1ZXN0LCB2b2lkKiBhcmd1bWVudCkJeyByZXR1cm4gKGZzdHJlYW06OmlvY3RsIChybmFtZSwgcmVxdWVzdCwgaW50cHRyX3QoYXJndW1lbnQpKSk7IH0KLSAgICBpbnQJCQlmY250bCAoY29uc3QgY2hhciogcm5hbWUsIGludCByZXF1ZXN0LCBsb25nIGFyZ3VtZW50ID0gMCk7Ci0gICAgaW5saW5lIGludAkJZmNudGwgKGNvbnN0IGNoYXIqIHJuYW1lLCBpbnQgcmVxdWVzdCwgaW50IGFyZ3VtZW50KQl7IHJldHVybiAoZnN0cmVhbTo6ZmNudGwgKHJuYW1lLCByZXF1ZXN0LCBsb25nKGFyZ3VtZW50KSkpOyB9Ci0gICAgaW5saW5lIGludAkJZmNudGwgKGNvbnN0IGNoYXIqIHJuYW1lLCBpbnQgcmVxdWVzdCwgdm9pZCogYXJndW1lbnQpCXsgcmV0dXJuIChmc3RyZWFtOjpmY250bCAocm5hbWUsIHJlcXVlc3QsIGludHB0cl90KGFyZ3VtZW50KSkpOyB9Ci0gICAgbWVtbGluawkJbW1hcCAob2ZmX3Qgbiwgb2ZmX3Qgb2Zmc2V0ID0gMCk7Ci0gICAgdm9pZAkJbXVubWFwIChtZW1saW5rJiBsKTsKLSAgICB2b2lkCQltc3luYyAobWVtbGluayYgbCk7Ci0gICAgdm9pZAkJc2V0X25vbmJsb2NrIChib29sIHYgPSB0cnVlKTsKLSAgICBpbmxpbmUgaW50CQlmZCAodm9pZCkgY29uc3QJCXsgcmV0dXJuIChtX2ZkKTsgfQotICAgIGlubGluZSBib29sCQlpc19vcGVuICh2b2lkKSBjb25zdAl7IHJldHVybiAoZmQoKSA+PSAwKTsgfQotICAgIGlubGluZSBvZmZfdAl0ZWxsZyAodm9pZCkgY29uc3QJeyByZXR1cm4gKHBvcygpKTsgfQotICAgIGlubGluZSBvZmZfdAl0ZWxscCAodm9pZCkgY29uc3QJeyByZXR1cm4gKHBvcygpKTsgfQotICAgIGlubGluZSB2b2lkCQlzZWVrZyAob2ZmX3Qgbiwgc2Vla2RpciB3aGVuY2UgPSBiZWcpCXsgc2VlayAobiwgd2hlbmNlKTsgfQotICAgIGlubGluZSB2b2lkCQlzZWVrcCAob2ZmX3Qgbiwgc2Vla2RpciB3aGVuY2UgPSBiZWcpCXsgc2VlayAobiwgd2hlbmNlKTsgfQotICAgIGlubGluZSB2b2lkCQlmbHVzaCAodm9pZCkJCXsgc3luYygpOyB9Ci0gICAgaW5saW5lIGNvbnN0IHN0cmluZyYgbmFtZSAodm9pZCkgY29uc3QJeyByZXR1cm4gKG1fRmlsZW5hbWUpOyB9Ci1wcml2YXRlOgotICAgRExMX0xPQ0FMIHN0YXRpYyBpbnQJb21fdG9fZmxhZ3MgKG9wZW5tb2RlIG0pOwotICAgIERMTF9MT0NBTCB2b2lkCXNldF9hbmRfdGhyb3cgKGlvc3RhdGUgcywgY29uc3QgY2hhciogb3ApOwotcHJpdmF0ZToKLSAgICBpbnQJCQltX2ZkOwkJLy8vPCBDdXJyZW50bHkgb3BlbiBmaWxlIGRlc2NyaXB0b3IuCi0gICAgc3RyaW5nCQltX0ZpbGVuYW1lOwkvLy88IEN1cnJlbnRseSBvcGVuIGZpbGVuYW1lLgotfTsKLQotLy8vIEFyZ3VtZW50IG1hY3JvIGZvciBmc3RyZWFtOjppb2N0bC4gVXNlIGxpa2UgZnMuaW9jdGwgKElPQ1RMSUQgKFRDR0VUUyksICZ0cykuCi0jZGVmaW5lIElPQ1RMSUQocikJImlvY3RsKCIjciIpIiwgcgotI2RlZmluZSBGQ05UTElEKHIpCSJmY250bCgiI3IiKSIsIHIKLQotfQotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvbWVtYmxvY2suY3BwIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvbWVtYmxvY2suY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MjE0MzNlLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL21lbWJsb2NrLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIxNiArMCwwIEBACi0vLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdXN0bCBsaWJyYXJ5LCBhbiBTVEwgaW1wbGVtZW50YXRpb24uCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDA1IGJ5IE1pa2UgU2hhcm92IDxtc2hhcm92QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLS8vIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCi0vLwotLy8gbWVtYmxvY2suY2MKLS8vCi0vLwlBbGxvY2F0ZWQgbWVtb3J5IGJsb2NrLgotLy8KLQotI2luY2x1ZGUgImZzdHJlYW0uaCIKLSNpbmNsdWRlICJtaXN0cmVhbS5oIgotI2luY2x1ZGUgIm1lbWJsb2NrLmgiCi0jaW5jbHVkZSAidWFsZ28uaCIKLSNpbmNsdWRlICJ1YXNzZXJ0LmgiCi0jaW5jbHVkZSAidW1lbW9yeS5oIgotCi0jaW5jbHVkZSA8ZXJybm8uaD4KLQotbmFtZXNwYWNlIHVzdGwgewotCi0vLy8gQWxsb2NhdGVzIDAgYnl0ZXMgZm9yIHRoZSBpbnRlcm5hbCBibG9jay4KLW1lbWJsb2NrOjptZW1ibG9jayAodm9pZCkKLTogbWVtbGluayAoKSwKLSAgbV9DYXBhY2l0eSAoMCkKLXsKLX0KLQotLy8vIEFsbG9jYXRlcyBccCBuIGJ5dGVzIGZvciB0aGUgaW50ZXJuYWwgYmxvY2suCi1tZW1ibG9jazo6bWVtYmxvY2sgKHNpemVfdHlwZSBuKQotOiBtZW1saW5rICgpLAotICBtX0NhcGFjaXR5ICgwKQotewotICAgIHJlc2l6ZSAobik7Ci19Ci0KLS8vLyBsaW5rcyB0byBccCBwLCBccCBuLiBEYXRhIGNhbiBub3QgYmUgbW9kaWZpZWQgYW5kIHdpbGwgbm90IGJlIGZyZWVkLgotbWVtYmxvY2s6Om1lbWJsb2NrIChjb25zdCB2b2lkKiBwLCBzaXplX3R5cGUgbikKLTogbWVtbGluayAoKSwKLSAgbV9DYXBhY2l0eSAoMCkKLXsKLSAgICBhc3NpZ24gKHAsIG4pOwotfQotCi0vLy8gTGlua3MgdG8gd2hhdCBccCBiIGlzIGxpbmtlZCB0by4KLW1lbWJsb2NrOjptZW1ibG9jayAoY29uc3QgY21lbWxpbmsmIGIpCi06IG1lbWxpbmsgKCksCi0gIG1fQ2FwYWNpdHkgKDApCi17Ci0gICAgYXNzaWduIChiKTsKLX0KLQotLy8vIExpbmtzIHRvIHdoYXQgXHAgYiBpcyBsaW5rZWQgdG8uCi1tZW1ibG9jazo6bWVtYmxvY2sgKGNvbnN0IG1lbWxpbmsmIGIpCi06IG1lbWxpbmsgKCksCi0gIG1fQ2FwYWNpdHkgKDApCi17Ci0gICAgYXNzaWduIChiKTsKLX0KLQotLy8vIExpbmtzIHRvIHdoYXQgXHAgYiBpcyBsaW5rZWQgdG8uCi1tZW1ibG9jazo6bWVtYmxvY2sgKGNvbnN0IG1lbWJsb2NrJiBiKQotOiBtZW1saW5rICgpLAotICBtX0NhcGFjaXR5ICgwKQotewotICAgIGFzc2lnbiAoYik7Ci19Ci0KLS8vLyBGcmVlcyBpbnRlcm5hbCBkYXRhLCBpZiBhcHByb3ByaWF0ZQotLy8vIE9ubHkgaWYgdGhlIGJsb2NrIHdhcyBhbGxvY2F0ZWQgdXNpbmcgcmVzaXplLCBvciBsaW5rZWQgdG8gdXNpbmcgTWFuYWdlLAotLy8vIHdpbGwgaXQgYmUgZnJlZWQuIEFsc28sIERlcml2ZWQgY2xhc3NlcyBzaG91bGQgY2FsbCBEZXN0cnVjdEJsb2NrIGZyb20KLS8vLyB0aGVpciBkZXN0cnVjdG9yLCBiZWNhdXNlIHVwc3RyZWFtIHZpcnR1YWwgZnVuY3Rpb25zIGFyZSB1bmF2YWlsYWJsZSBhdAotLy8vIHRoaXMgcG9pbnQgYW5kIHdpbGwgbm90IGJlIGNhbGxlZCBhdXRvbWF0aWNhbGx5LgotLy8vCi1tZW1ibG9jazo6fm1lbWJsb2NrICh2b2lkKQotewotICAgIGlmICghaXNfbGlua2VkKCkpCi0JZGVhbGxvY2F0ZSgpOwotfQotCi0vLy8gcmVzaXplcyB0aGUgYmxvY2sgdG8gXHAgbmV3U2l6ZSBieXRlcywgcmVhbGxvY2F0aW5nIGlmIG5lY2Vzc2FyeS4KLXZvaWQgbWVtYmxvY2s6OnJlc2l6ZSAoc2l6ZV90eXBlIG5ld1NpemUsIGJvb2wgYkV4YWN0KQotewotICAgIGlmIChtX0NhcGFjaXR5IDwgbmV3U2l6ZSArIG1pbmltdW1GcmVlQ2FwYWNpdHkoKSkKLQlyZXNlcnZlIChuZXdTaXplLCBiRXhhY3QpOwotICAgIG1lbWxpbms6OnJlc2l6ZSAobmV3U2l6ZSk7Ci19Ci0KLS8vLyBGcmVlcyBpbnRlcm5hbCBkYXRhLgotdm9pZCBtZW1ibG9jazo6ZGVhbGxvY2F0ZSAodm9pZCkgdGhyb3coKQotewotICAgIGlmIChtX0NhcGFjaXR5KSB7Ci0JYXNzZXJ0IChjZGF0YSgpICYmICJJbnRlcm5hbCBlcnJvcjogc3BhY2UgYWxsb2NhdGVkLCBidXQgdGhlIHBvaW50ZXIgaXMgTlVMTCIpOwotCWFzc2VydCAoZGF0YSgpICYmICJJbnRlcm5hbCBlcnJvcjogcmVhZC1vbmx5IGJsb2NrIGlzIG1hcmtlZCBhcyBhbGxvY2F0ZWQgc3BhY2UiKTsKLQlmcmVlIChkYXRhKCkpOwotICAgIH0KLSAgICB1bmxpbmsoKTsKLX0KLQotLy8vIEFzc3VtZXMgY29udHJvbCBvZiB0aGUgbWVtb3J5IGJsb2NrIFxwIHAgb2Ygc2l6ZSBccCBuLgotLy8vIFRoZSBibG9jayBhc3NpZ25lZCB1c2luZyB0aGlzIGZ1bmN0aW9uIHdpbGwgYmUgZnJlZWQgaW4gdGhlIGRlc3RydWN0b3IuCi12b2lkIG1lbWJsb2NrOjptYW5hZ2UgKHZvaWQqIHAsIHNpemVfdHlwZSBuKQotewotICAgIGFzc2VydCAocCB8fCAhbik7Ci0gICAgYXNzZXJ0ICghbV9DYXBhY2l0eSAmJiAiQWxyZWFkeSBtYW5hZ2luZyBzb21ldGhpbmcuIGRlYWxsb2NhdGUgb3IgdW5saW5rIGZpcnN0LiIpOwotICAgIGxpbmsgKHAsIG4pOwotICAgIG1fQ2FwYWNpdHkgPSBuOwotfQotCi0vLy8gIkluc3RhbnRpYXRlIiBhIGxpbmtlZCBibG9jayBieSBhbGxvY2F0aW5nIGFuZCBjb3B5aW5nIHRoZSBsaW5rZWQgZGF0YS4KLXZvaWQgbWVtYmxvY2s6OmNvcHlfbGluayAodm9pZCkKLXsKLSAgICBjb25zdCBjbWVtbGluayBsICgqdGhpcyk7Ci0gICAgaWYgKGlzX2xpbmtlZCgpKQotCXVubGluaygpOwotICAgIGFzc2lnbiAobCk7Ci19Ci0gCi0vLy8gQ29waWVzIGRhdGEgZnJvbSBccCBwLCBccCBuLgotdm9pZCBtZW1ibG9jazo6YXNzaWduIChjb25zdCB2b2lkKiBwLCBzaXplX3R5cGUgbikKLXsKLSAgICBhc3NlcnQgKChwICE9IChjb25zdCB2b2lkKikgY2RhdGEoKSB8fCBzaXplKCkgPT0gbikgJiYgIlNlbGYtYXNzaWdubWVudCBjYW4gbm90IHJlc2l6ZSIpOwotICAgIHJlc2l6ZSAobik7Ci0gICAgY29weSAocCwgbik7Ci19Ci0KLS8vLyBcYnJpZWYgUmVhbGxvY2F0ZXMgaW50ZXJuYWwgYmxvY2sgdG8gaG9sZCBhdCBsZWFzdCBccCBuZXdTaXplIGJ5dGVzLgotLy8vCi0vLy8gQWRkaXRpb25hbCBtZW1vcnkgbWF5IGJlIGFsbG9jYXRlZCwgYnV0IGZvciBlZmZpY2llbmN5IGl0IGlzIGEgdmVyeQotLy8vIGdvb2QgaWRlYSB0byBjYWxsIHJlc2VydmUgYmVmb3JlIGRvaW5nIGJ5dGUtYnktYnl0ZSBlZGl0IG9wZXJhdGlvbnMuCi0vLy8gVGhlIGJsb2NrIHNpemUgYXMgcmV0dXJuZWQgYnkgc2l6ZSgpIGlzIG5vdCBhbHRlcmVkLiByZXNlcnZlIHdpbGwgbm90Ci0vLy8gcmVkdWNlIGFsbG9jYXRlZCBtZW1vcnkuIElmIHlvdSB0aGluayB5b3UgYXJlIHdhc3Rpbmcgc3BhY2UsIGNhbGwKLS8vLyBkZWFsbG9jYXRlIGFuZCBzdGFydCBvdmVyLiBUbyBhdm9pZCB3YXN0aW5nIHNwYWNlLCB1c2UgdGhlIGJsb2NrIGZvcgotLy8vIG9ubHkgb25lIHB1cnBvc2UsIGFuZCB0cnkgdG8gZ2V0IHRoYXQgcHVycG9zZSB0byB1c2Ugc2ltaWxhciBhbW91bnRzCi0vLy8gb2YgbWVtb3J5IG9uIGVhY2ggaXRlcmF0aW9uLgotLy8vCi12b2lkIG1lbWJsb2NrOjpyZXNlcnZlIChzaXplX3R5cGUgbmV3U2l6ZSwgYm9vbCBiRXhhY3QpCi17Ci0gICAgaWYgKChuZXdTaXplICs9IG1pbmltdW1GcmVlQ2FwYWNpdHkoKSkgPD0gbV9DYXBhY2l0eSkKLQlyZXR1cm47Ci0gICAgdm9pZCogb2xkQmxvY2sgKGlzX2xpbmtlZCgpID8gTlVMTCA6IGRhdGEoKSk7Ci0gICAgaWYgKCFiRXhhY3QpCi0JbmV3U2l6ZSA9IEFsaWduIChuZXdTaXplLCBjX1BhZ2VTaXplKTsKLSAgICBwb2ludGVyIG5ld0Jsb2NrID0gKHBvaW50ZXIpIHJlYWxsb2MgKG9sZEJsb2NrLCBuZXdTaXplKTsKLSAgICBpZiAoIW5ld0Jsb2NrKQotI2lmIFBMQVRGT1JNX0FORFJPSUQKLSAgICAgICAgcHJpbnRmKCJiYWRfYWxsb2NcbiIpOwotI2Vsc2UKLQl0aHJvdyBiYWRfYWxsb2MgKG5ld1NpemUpOwotI2VuZGlmCi0gICAgaWYgKCFvbGRCbG9jayAmJiBjZGF0YSgpKQotCWNvcHlfbiAoY2RhdGEoKSwgbWluIChzaXplKCkgKyAxLCBuZXdTaXplKSwgbmV3QmxvY2spOwotICAgIGxpbmsgKG5ld0Jsb2NrLCBzaXplKCkpOwotICAgIG1fQ2FwYWNpdHkgPSBuZXdTaXplOwotfQotCi0vLy8gU3dhcHMgdGhlIGNvbnRlbnRzIHdpdGggXHAgbAotdm9pZCBtZW1ibG9jazo6c3dhcCAobWVtYmxvY2smIGwpCi17Ci0gICAgbWVtbGluazo6c3dhcCAobCk7Ci0gICAgOjp1c3RsOjpzd2FwIChtX0NhcGFjaXR5LCBsLm1fQ2FwYWNpdHkpOwotfQotCi0vLy8gU2hpZnRzIHRoZSBkYXRhIGluIHRoZSBsaW5rZWQgYmxvY2sgZnJvbSBccCBzdGFydCB0byBccCBzdGFydCArIFxwIG4uCi1tZW1ibG9jazo6aXRlcmF0b3IgbWVtYmxvY2s6Omluc2VydCAoaXRlcmF0b3Igc3RhcnQsIHNpemVfdHlwZSBuKQotewotICAgIGNvbnN0IHVvZmZfdCBpcCA9IHN0YXJ0IC0gYmVnaW4oKTsKLSAgICBhc3NlcnQgKGlwIDw9IHNpemUoKSk7Ci0gICAgcmVzaXplIChzaXplKCkgKyBuLCBmYWxzZSk7Ci0gICAgbWVtbGluazo6aW5zZXJ0IChpYXQoaXApLCBuKTsKLSAgICByZXR1cm4gKGlhdCAoaXApKTsKLX0KLQotLy8vIFNoaWZ0cyB0aGUgZGF0YSBpbiB0aGUgbGlua2VkIGJsb2NrIGZyb20gXHAgc3RhcnQgKyBccCBuIHRvIFxwIHN0YXJ0LgotbWVtYmxvY2s6Oml0ZXJhdG9yIG1lbWJsb2NrOjplcmFzZSAoaXRlcmF0b3Igc3RhcnQsIHNpemVfdHlwZSBuKQotewotICAgIGNvbnN0IHVvZmZfdCBlcCA9IHN0YXJ0IC0gYmVnaW4oKTsKLSAgICBhc3NlcnQgKGVwICsgbiA8PSBzaXplKCkpOwotICAgIG1lbWxpbms6OmVyYXNlIChzdGFydCwgbik7Ci0gICAgbWVtbGluazo6cmVzaXplIChzaXplKCkgLSBuKTsKLSAgICByZXR1cm4gKGlhdCAoZXApKTsKLX0KLQotLy8vIFVubGlua3Mgb2JqZWN0Lgotdm9pZCBtZW1ibG9jazo6dW5saW5rICh2b2lkKQotewotICAgIG1lbWxpbms6OnVubGluaygpOwotICAgIG1fQ2FwYWNpdHkgPSAwOwotfQotCi0vLy8gUmVhZHMgdGhlIG9iamVjdCBmcm9tIHN0cmVhbSBccCBzCi12b2lkIG1lbWJsb2NrOjpyZWFkIChpc3RyZWFtJiBpcykKLXsKLSAgICB3cml0dGVuX3NpemVfdHlwZSBuOwotICAgIGlzID4+IG47Ci0gICAgaXMudmVyaWZ5X3JlbWFpbmluZyAoInJlYWQiLCAidXN0bDo6bWVtYmxvY2siLCBuKTsKLSAgICByZXNpemUgKG4pOwotICAgIGlzLnJlYWQgKGRhdGEoKSwgd3JpdGFibGVfc2l6ZSgpKTsKLSAgICBpcy5hbGlnbiAoYWxpZ25vZiAobikpOwotfQotCi0vLy8gUmVhZHMgdGhlIGVudGlyZSBmaWxlIFxwICJmaWxlbmFtZSIuCi12b2lkIG1lbWJsb2NrOjpyZWFkX2ZpbGUgKGNvbnN0IGNoYXIqIGZpbGVuYW1lKQotewotICAgIGZzdHJlYW0gZjsKLSAgICBmLmV4Y2VwdGlvbnMgKGZzdHJlYW06OmFsbGJhZGJpdHMpOwotICAgIGYub3BlbiAoZmlsZW5hbWUsIGZzdHJlYW06OmluKTsKLSAgICBjb25zdCBvZmZfdCBmc2l6ZSAoZi5zaXplKCkpOwotICAgIHJlc2VydmUgKGZzaXplKTsKLSAgICBmLnJlYWQgKGRhdGEoKSwgZnNpemUpOwotICAgIGYuY2xvc2UoKTsKLSAgICByZXNpemUgKGZzaXplKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgdXN0bAotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9tZW1ibG9jay5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvbWVtYmxvY2suaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDg1ZWEwZS4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9tZW1ibG9jay5oCisrKyAvZGV2L251bGwKQEAgLTEsNzQgKzAsMCBAQAotLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHVzdGwgbGlicmFyeSwgYW4gU1RMIGltcGxlbWVudGF0aW9uLgotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwNSBieSBNaWtlIFNoYXJvdiA8bXNoYXJvdkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0vLyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgotLy8KLS8vIG1lbWJsb2NrLmgKLS8vCi0KLSNpZm5kZWYgTUVNQkxPQ0tfSF83RUQ2M0E4OTExNjRDQzQzNTc4RTYzNjY0RDUyQTE5NgotI2RlZmluZSBNRU1CTE9DS19IXzdFRDYzQTg5MTE2NENDNDM1NzhFNjM2NjRENTJBMTk2Ci0KLSNpbmNsdWRlICJtZW1saW5rLmgiCi0KLW5hbWVzcGFjZSB1c3RsIHsKLQotLy8vIFxjbGFzcyBtZW1ibG9jayBtZW1ibG9jay5oIHVzdGwuaAotLy8vIFxpbmdyb3VwIE1lbW9yeU1hbmFnZW1lbnQKLS8vLwotLy8vIFxicmllZiBBbGxvY2F0ZWQgbWVtb3J5IGJsb2NrLgotLy8vCi0vLy8gQWRkcyBtZW1vcnkgbWFuYWdlbWVudCBjYXBhYmlsaXRpZXMgdG8gbWVtbGluay4gVXNlcyBtYWxsb2MgYW5kIHJlYWxsb2MgdG8KLS8vLyBtYWludGFpbiB0aGUgaW50ZXJuYWwgcG9pbnRlciwgYnV0IG9ubHkgaWYgYWxsb2NhdGVkIHVzaW5nIG1lbWJlcnMgb2YgdGhpcyBjbGFzcywKLS8vLyBvciBpZiBsaW5rZWQgdG8gdXNpbmcgdGhlIE1hbmFnZSgpIG1lbWJlciBmdW5jdGlvbi4gTWFuYWdlZCBtZW1vcnkgaXMgYXV0b21hdGljYWxseQotLy8vIGZyZWVkIGluIHRoZSBkZXN0cnVjdG9yLgotLy8vCi1jbGFzcyBtZW1ibG9jayA6IHB1YmxpYyBtZW1saW5rIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90eXBlCWNfUGFnZVNpemUgPSA2NDsJLy8vPCBUaGUgZGVmYXVsdCBtaW5pbXVtIGFsbG9jYXRpb24gdW5pdC4KLXB1YmxpYzoKLQkJCQltZW1ibG9jayAodm9pZCk7Ci0JCQkJbWVtYmxvY2sgKGNvbnN0IHZvaWQqIHAsIHNpemVfdHlwZSBuKTsKLSAgICBleHBsaWNpdAkJCW1lbWJsb2NrIChzaXplX3R5cGUgbik7Ci0gICAgZXhwbGljaXQJCQltZW1ibG9jayAoY29uc3QgY21lbWxpbmsmIGIpOwotICAgIGV4cGxpY2l0CQkJbWVtYmxvY2sgKGNvbnN0IG1lbWxpbmsmIGIpOwotCQkJCW1lbWJsb2NrIChjb25zdCBtZW1ibG9jayYgYik7Ci0gICAgdmlydHVhbAkJICAgICAgIH5tZW1ibG9jayAodm9pZCk7Ci0gICAgdmlydHVhbCB2b2lkCQl1bmxpbmsgKHZvaWQpOwotICAgIGlubGluZSB2b2lkCQkJYXNzaWduIChjb25zdCBjbWVtbGluayYgbCkJeyBhc3NpZ24gKGwuY2RhdGEoKSwgbC5yZWFkYWJsZV9zaXplKCkpOyB9Ci0gICAgaW5saW5lIGNvbnN0IG1lbWJsb2NrJglvcGVyYXRvcj0gKGNvbnN0IGNtZW1saW5rJiBsKQl7IGFzc2lnbiAobCk7IHJldHVybiAoKnRoaXMpOyB9Ci0gICAgaW5saW5lIGNvbnN0IG1lbWJsb2NrJglvcGVyYXRvcj0gKGNvbnN0IG1lbWxpbmsmIGwpCXsgYXNzaWduIChsKTsgcmV0dXJuICgqdGhpcyk7IH0KLSAgICBpbmxpbmUgY29uc3QgbWVtYmxvY2smCW9wZXJhdG9yPSAoY29uc3QgbWVtYmxvY2smIGwpCXsgYXNzaWduIChsKTsgcmV0dXJuICgqdGhpcyk7IH0KLSAgICB2b2lkCQkJYXNzaWduIChjb25zdCB2b2lkKiBwLCBzaXplX3R5cGUgbik7Ci0gICAgdm9pZAkJCXN3YXAgKG1lbWJsb2NrJiBsKTsKLSAgICB2b2lkCQkJcmVzZXJ2ZSAoc2l6ZV90eXBlIG5ld1NpemUsIGJvb2wgYkV4YWN0ID0gdHJ1ZSk7Ci0gICAgdm9pZAkJCXJlc2l6ZSAoc2l6ZV90eXBlIG5ld1NpemUsIGJvb2wgYkV4YWN0ID0gdHJ1ZSk7Ci0gICAgaXRlcmF0b3IJCQlpbnNlcnQgKGl0ZXJhdG9yIHN0YXJ0LCBzaXplX3R5cGUgc2l6ZSk7Ci0gICAgaXRlcmF0b3IJCQllcmFzZSAoaXRlcmF0b3Igc3RhcnQsIHNpemVfdHlwZSBzaXplKTsKLSAgICBpbmxpbmUgdm9pZAkJCWNsZWFyICh2b2lkKQkJCXsgcmVzaXplICgwKTsgfQotICAgIGlubGluZSBib29sCQkJaXNfbGlua2VkICh2b2lkKSBjb25zdAkJeyByZXR1cm4gKCFtX0NhcGFjaXR5ICYmIGNkYXRhKCkpOyB9Ci0gICAgaW5saW5lIHNpemVfdHlwZQkJbWF4X3NpemUgKHZvaWQpIGNvbnN0CQl7IHJldHVybiAoaXNfbGlua2VkKCkgPyBtZW1saW5rOjptYXhfc2l6ZSgpIDogU0laRV9NQVgpOyB9Ci0gICAgaW5saW5lIHNpemVfdHlwZQkJY2FwYWNpdHkgKHZvaWQpIGNvbnN0CQl7IHJldHVybiAobV9DYXBhY2l0eSk7IH0KLSAgICBpbmxpbmUgdm9pZAkJCW1hbmFnZSAobWVtbGluayYgbCkJCXsgbWFuYWdlIChsLmJlZ2luKCksIGwuc2l6ZSgpKTsgfQotICAgIHZvaWQJCQlkZWFsbG9jYXRlICh2b2lkKSB0aHJvdygpOwotICAgIHZvaWQJCQltYW5hZ2UgKHZvaWQqIHAsIHNpemVfdHlwZSBuKTsKLSAgICB2b2lkCQkJY29weV9saW5rICh2b2lkKTsKLSAgICB2b2lkCQkJcmVhZCAoaXN0cmVhbSYgaXMpOwotICAgIHZvaWQJCQlyZWFkX2ZpbGUgKGNvbnN0IGNoYXIqIGZpbGVuYW1lKTsKLXByb3RlY3RlZDoKLSAgICBpbmxpbmUgdmlydHVhbCBzaXplX3R5cGUJbWluaW11bUZyZWVDYXBhY2l0eSAodm9pZCkgY29uc3QgeyByZXR1cm4gKDApOyB9Ci1wcml2YXRlOgotICAgIHNpemVfdHlwZQkJCW1fQ2FwYWNpdHk7CS8vLzwgTnVtYmVyIG9mIGJ5dGVzIGFsbG9jYXRlZCBieSBSZXNpemUuCi19OwotCi0vLy8gUmVhZHMgb2JqZWN0IFxwIGwgZnJvbSBzdHJlYW0gXHAgaXMKLWlubGluZSBpc3RyZWFtJiBvcGVyYXRvcj4+IChpc3RyZWFtJiBpcywgbWVtYmxvY2smIGwpCi17Ci0gICAgbC5yZWFkIChpcyk7Ci0gICAgcmV0dXJuIChpcyk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIHVzdGwKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL21lbWxpbmsuY3BwIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvbWVtbGluay5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlZDY2MDEuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvbWVtbGluay5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0vLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdXN0bCBsaWJyYXJ5LCBhbiBTVEwgaW1wbGVtZW50YXRpb24uCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDA1IGJ5IE1pa2UgU2hhcm92IDxtc2hhcm92QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLS8vIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCi0vLwotLy8gbWVtbGluay5jYwotLy8KLS8vCUEgcG9pbnRlciB0byBhIHNpemVkIGJsb2NrIG9mIG1lbW9yeS4KLS8vCi0KLSNpbmNsdWRlICJtaXN0cmVhbS5oIgotI2luY2x1ZGUgInVhc3NlcnQuaCIKLSNpbmNsdWRlICJ1c3RkeGVwdC5oIgotCi0jaWYgUExBVEZPUk1fQU5EUk9JRAotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIHVzdGwgewotCi0vLy8gUmVhZHMgdGhlIG9iamVjdCBmcm9tIHN0cmVhbSBccCBzCi12b2lkIG1lbWxpbms6OnJlYWQgKGlzdHJlYW0mIGlzKQotewotICAgIHdyaXR0ZW5fc2l6ZV90eXBlIG47Ci0gICAgaXMgPj4gbjsKLSAgICBpcy52ZXJpZnlfcmVtYWluaW5nICgicmVhZCIsICJ1c3RsOjptZW1saW5rIiwgbik7Ci0gICAgaWYgKG4gPiBzaXplKCkpCi0jaWYgUExBVEZPUk1fQU5EUk9JRAotICAgICAgICBwcmludGYoImxlbmd0aCBlcnJvclxuIik7Ci0jZWxzZQotCXRocm93IGxlbmd0aF9lcnJvciAoIm1lbWxpbmsgY2FuIG5vdCBpbmNyZWFzZSB0aGUgc2l6ZSBvZiB0aGUgbGlua2VkIHN0b3JhZ2UgZm9yIHJlYWRpbmciKTsKLSNlbmRpZgotICAgIHJlc2l6ZSAobik7Ci0gICAgaXMucmVhZCAoZGF0YSgpLCBuKTsKLSAgICBpcy5hbGlnbiAoYWxpZ25vZiAobikpOwotfQotCi0vLy8gQ29waWVzIGRhdGEgZnJvbSBccCBwLCBccCBuIHRvIHRoZSBsaW5rZWQgYmxvY2sgc3RhcnRpbmcgYXQgXHAgc3RhcnQuCi12b2lkIG1lbWxpbms6OmNvcHkgKGl0ZXJhdG9yIHN0YXJ0LCBjb25zdCB2b2lkKiBwLCBzaXplX3R5cGUgbikKLXsKLSAgICBhc3NlcnQgKGRhdGEoKSB8fCAhbik7Ci0gICAgYXNzZXJ0IChwIHx8ICFuKTsKLSAgICBhc3NlcnQgKHN0YXJ0ID49IGJlZ2luKCkgJiYgc3RhcnQgKyBuIDw9IGVuZCgpKTsKLSAgICBpZiAocCkKLQljb3B5X24gKGNvbnN0X2l0ZXJhdG9yKHApLCBuLCBzdGFydCk7Ci19Ci0KLS8vLyBGaWxscyB0aGUgbGlua2VkIGJsb2NrIHdpdGggdGhlIGdpdmVuIHBhdHRlcm4uCi0vLy8gXGFyZyBzdGFydCAgIE9mZnNldCBhdCB3aGljaCB0byBzdGFydCBmaWxsaW5nIHRoZSBsaW5rZWQgYmxvY2sKLS8vLyBcYXJnIHAgICAgICAgUG9pbnRlciB0byB0aGUgcGF0dGVybi4KLS8vLyBcYXJnIGVsU2l6ZSAgU2l6ZSBvZiB0aGUgcGF0dGVybi4KLS8vLyBcYXJnIGVsQ291bnQgTnVtYmVyIG9mIHRpbWVzIHRvIHdyaXRlIHRoZSBwYXR0ZXJuLgotLy8vIFRvdGFsIG51bWJlciBvZiBieXRlcyB3cml0dGVuIGlzIFxwIGVsU2l6ZSAqIFxwIGVsQ291bnQuCi0vLy8KLXZvaWQgbWVtbGluazo6ZmlsbCAoaXRlcmF0b3Igc3RhcnQsIGNvbnN0IHZvaWQqIHAsIHNpemVfdHlwZSBlbFNpemUsIHNpemVfdHlwZSBlbENvdW50KQotewotICAgIGFzc2VydCAoZGF0YSgpIHx8ICFlbENvdW50IHx8ICFlbFNpemUpOwotICAgIGFzc2VydCAoc3RhcnQgPj0gYmVnaW4oKSAmJiBzdGFydCArIGVsU2l6ZSAqIGVsQ291bnQgPD0gZW5kKCkpOwotICAgIGlmIChlbFNpemUgPT0gMSkKLQlmaWxsX24gKHN0YXJ0LCBlbENvdW50LCAqcmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocCkpOwotICAgIGVsc2Ugd2hpbGUgKGVsQ291bnQtLSkKLQlzdGFydCA9IGNvcHlfbiAoY29uc3RfaXRlcmF0b3IocCksIGVsU2l6ZSwgc3RhcnQpOwotfQotCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL21lbWxpbmsuaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL21lbWxpbmsuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjVkOTkyOC4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9tZW1saW5rLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMTUgKzAsMCBAQAotLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHVzdGwgbGlicmFyeSwgYW4gU1RMIGltcGxlbWVudGF0aW9uLgotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwNSBieSBNaWtlIFNoYXJvdiA8bXNoYXJvdkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0vLyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgotLy8KLS8vIG1lbWxpbmsuaAotCi0jaWZuZGVmIE1FTUxJTktfSF83OThEMjU4MjdDOEUzMjJEMkQ3RTczNEIxNjlGRjVGQwotI2RlZmluZSBNRU1MSU5LX0hfNzk4RDI1ODI3QzhFMzIyRDJEN0U3MzRCMTY5RkY1RkMKLQotI2luY2x1ZGUgImNtZW1saW5rLmgiCi0jaW5jbHVkZSAidWFsZ28uaCIKLSNpbmNsdWRlICJ1YXNzZXJ0LmgiCi0KLW5hbWVzcGFjZSB1c3RsIHsKLQotLy8vIFxjbGFzcyBtZW1saW5rIG1lbWxpbmsuaCB1c3RsLmgKLS8vLyBcaW5ncm91cCBNZW1vcnlNYW5hZ2VtZW50Ci0vLy8KLS8vLyBcYnJpZWYgV3JhcHBlciBmb3IgcG9pbnRlciB0byBibG9jayB3aXRoIHNpemUuCi0vLy8KLS8vLyBVc2UgdGhpcyBjbGFzcyB0aGUgd2F5IHlvdSB3b3VsZCBhIHBvaW50ZXIgdG8gYW4gYWxsb2NhdGVkIHVuc3RydWN0dXJlZCBibG9jay4KLS8vLyBUaGUgcG9pbnRlciBhbmQgYmxvY2sgc2l6ZSBhcmUgYXZhaWxhYmxlIHRocm91Z2ggbWVtYmVyIGZ1bmN0aW9ucyBhbmQgY2FzdCBvcGVyYXRvci4KLS8vLwotLy8vIEV4YW1wbGUgdXNhZ2U6Ci0vLy8gXGNvZGUKLS8vLyAgICAgdm9pZCogcCA9IG1hbGxvYyAoNDY3MjEpOwotLy8vICAgICBtZW1saW5rIGEsIGI7Ci0vLy8gICAgIGEubGluayAocCwgNDY3MjEpOwotLy8vICAgICBhc3NlcnQgKGEuc2l6ZSgpID09IDQ2NzIxKSk7Ci0vLy8gICAgIGIgPSBhOwotLy8vICAgICBhc3NlcnQgKGIuc2l6ZSgpID09IDQ2NzIxKSk7Ci0vLy8gICAgIGFzc2VydCAoYi5iZWdpbigpICsgMzQgPT0gYS5iZWdpbiArIDM0KTsKLS8vLyAgICAgYXNzZXJ0ICgwID09IG1lbWNtcCAoYSwgYiwgMTIpKTsKLS8vLyAgICAgYS5maWxsICg2NzMsIGIsIDQyLCA2Nyk7Ci0vLy8gICAgIGIuZXJhc2UgKDg3LCAxMik7Ci0vLy8gXGVuZGNvZGUKLS8vLwotY2xhc3MgbWVtbGluayA6IHB1YmxpYyBjbWVtbGluayB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB2YWx1ZV90eXBlKgkJCXBvaW50ZXI7Ci0gICAgdHlwZWRlZiBjbWVtbGluazo6cG9pbnRlcgkJY29uc3RfcG9pbnRlcjsKLSAgICB0eXBlZGVmIGNtZW1saW5rOjpjb25zdF9pdGVyYXRvcgljb25zdF9pdGVyYXRvcjsKLSAgICB0eXBlZGVmIHBvaW50ZXIJCQlpdGVyYXRvcjsKLSAgICB0eXBlZGVmIGNvbnN0IG1lbWxpbmsmCQlyY3NlbGZfdDsKLXB1YmxpYzoKLSAgICBpbmxpbmUJCW1lbWxpbmsgKHZvaWQpCQkJCTogY21lbWxpbmsoKSB7fQotICAgIGlubGluZQkJbWVtbGluayAodm9pZCogcCwgc2l6ZV90eXBlIG4pCQk6IGNtZW1saW5rIChwLCBuKSB7fQotICAgIGlubGluZQkJbWVtbGluayAoY29uc3Qgdm9pZCogcCwgc2l6ZV90eXBlIG4pCTogY21lbWxpbmsgKHAsIG4pIHt9Ci0gICAgaW5saW5lCQltZW1saW5rIChyY3NlbGZfdCBsKQkJCTogY21lbWxpbmsgKGwpIHt9Ci0gICAgaW5saW5lIGV4cGxpY2l0CW1lbWxpbmsgKGNvbnN0IGNtZW1saW5rJiBsKQkJOiBjbWVtbGluayAobCkge30KLSAgICBpbmxpbmUgcG9pbnRlcglkYXRhICh2b2lkKQkJCQl7IHJldHVybiAoY29uc3RfY2FzdDxwb2ludGVyPihjZGF0YSgpKSk7IH0KLSAgICBpbmxpbmUgaXRlcmF0b3IJYmVnaW4gKHZvaWQpCQkJCXsgcmV0dXJuIChpdGVyYXRvciAoZGF0YSgpKSk7IH0KLSAgICBpbmxpbmUgaXRlcmF0b3IJaWF0IChzaXplX3R5cGUgaSkJCQl7IGFzc2VydCAoaSA8PSBzaXplKCkpOyByZXR1cm4gKGJlZ2luKCkgKyBpKTsgfQotICAgIGlubGluZSBpdGVyYXRvcgllbmQgKHZvaWQpCQkJCXsgcmV0dXJuIChpYXQgKHNpemUoKSkpOyB9Ci0gICAgaW5saW5lIGNvbnN0X2l0ZXJhdG9yCWJlZ2luICh2b2lkKSBjb25zdAkJeyByZXR1cm4gKGNtZW1saW5rOjpiZWdpbigpKTsgfQotICAgIGlubGluZSBjb25zdF9pdGVyYXRvcgllbmQgKHZvaWQpIGNvbnN0CQl7IHJldHVybiAoY21lbWxpbms6OmVuZCgpKTsgfQotICAgIGlubGluZSBjb25zdF9pdGVyYXRvcglpYXQgKHNpemVfdHlwZSBpKSBjb25zdAkJeyByZXR1cm4gKGNtZW1saW5rOjppYXQgKGkpKTsgfQotICAgIHNpemVfdHlwZQkJd3JpdGFibGVfc2l6ZSAodm9pZCkgY29uc3QJCXsgcmV0dXJuIChzaXplKCkpOyB9Ci0gICAgaW5saW5lIHJjc2VsZl90CW9wZXJhdG9yPSAoY29uc3QgY21lbWxpbmsmIGwpCQl7IGNtZW1saW5rOjpvcGVyYXRvcj0gKGwpOyByZXR1cm4gKCp0aGlzKTsgfQotICAgIGlubGluZSByY3NlbGZfdAlvcGVyYXRvcj0gKHJjc2VsZl90IGwpCQkJeyBjbWVtbGluazo6b3BlcmF0b3I9IChsKTsgcmV0dXJuICgqdGhpcyk7IH0KLSAgICBpbmxpbmUgdm9pZAkJbGluayAoY29uc3Qgdm9pZCogcCwgc2l6ZV90eXBlIG4pCXsgY21lbWxpbms6OmxpbmsgKHAsIG4pOyB9Ci0gICAgaW5saW5lIHZvaWQJCWxpbmsgKHZvaWQqIHAsIHNpemVfdHlwZSBuKQkJeyBjbWVtbGluazo6bGluayAocCwgbik7IH0KLSAgICBpbmxpbmUgdm9pZAkJbGluayAoY29uc3QgY21lbWxpbmsmIGwpCQl7IGNtZW1saW5rOjpsaW5rIChsKTsgfQotICAgIGlubGluZSB2b2lkCQlsaW5rIChtZW1saW5rJiBsKQkJCXsgY21lbWxpbms6OmxpbmsgKGwpOyB9Ci0JCQlPVkVSTE9BRF9QT0lOVEVSX0FORF9TSVpFX1RfVjIobGluaywgdm9pZCopCi0JCQlPVkVSTE9BRF9QT0lOVEVSX0FORF9TSVpFX1RfVjIobGluaywgY29uc3Qgdm9pZCopCi0gICAgaW5saW5lIHZvaWQJCWxpbmsgKGNvbnN0IHZvaWQqIGZpcnN0LCBjb25zdCB2b2lkKiBsYXN0KQl7IGxpbmsgKGZpcnN0LCBkaXN0YW5jZSAoZmlyc3QsIGxhc3QpKTsgfQotICAgIGlubGluZSB2b2lkCQlsaW5rICh2b2lkKiBmaXJzdCwgdm9pZCogbGFzdCkJCXsgbGluayAoZmlyc3QsIGRpc3RhbmNlIChmaXJzdCwgbGFzdCkpOyB9Ci0gICAgaW5saW5lIHZvaWQJCXJlbGluayAoY29uc3Qgdm9pZCogcCwgc2l6ZV90eXBlIG4pCXsgY21lbWxpbms6OnJlbGluayAocCwgbik7IH0KLSAgICBpbmxpbmUgdm9pZAkJcmVsaW5rICh2b2lkKiBwLCBzaXplX3R5cGUgbikJCXsgY21lbWxpbms6OnJlbGluayAocCwgbik7IH0KLSAgICBpbmxpbmUgdm9pZAkJY29weSAoY29uc3QgY21lbWxpbmsmIGwpCQl7IGNvcHkgKGJlZ2luKCksIGwuY2RhdGEoKSwgbC5zaXplKCkpOyB9Ci0gICAgaW5saW5lIHZvaWQJCWNvcHkgKGNvbnN0IHZvaWQqIHAsIHNpemVfdHlwZSBuKQl7IGNvcHkgKGJlZ2luKCksIHAsIG4pOyB9Ci0gICAgdm9pZAkJY29weSAoaXRlcmF0b3Igb2Zmc2V0LCBjb25zdCB2b2lkKiBwLCBzaXplX3R5cGUgbik7Ci0gICAgaW5saW5lIHZvaWQJCXN3YXAgKG1lbWxpbmsmIGwpCQkJeyBjbWVtbGluazo6c3dhcCAobCk7IH0KLSAgICB2b2lkCQlmaWxsIChpdGVyYXRvciBzdGFydCwgY29uc3Qgdm9pZCogcCwgc2l6ZV90eXBlIGVsc2l6ZSwgc2l6ZV90eXBlIGVsQ291bnQgPSAxKTsKLSAgICBpbmxpbmUgdm9pZAkJaW5zZXJ0IChpdGVyYXRvciBzdGFydCwgc2l6ZV90eXBlIHNpemUpOwotICAgIGlubGluZSB2b2lkCQllcmFzZSAoaXRlcmF0b3Igc3RhcnQsIHNpemVfdHlwZSBzaXplKTsKLSAgICB2b2lkCQlyZWFkIChpc3RyZWFtJiBpcyk7Ci19OwotCi0vLy8gU2hpZnRzIHRoZSBkYXRhIGluIHRoZSBsaW5rZWQgYmxvY2sgZnJvbSBccCBzdGFydCB0byBccCBzdGFydCArIFxwIG4uCi0vLy8gVGhlIGNvbnRlbnRzIG9mIHRoZSB1bmNvdmVyZWQgYnl0ZXMgaXMgdW5kZWZpbmVkLgotaW5saW5lIHZvaWQgbWVtbGluazo6aW5zZXJ0IChpdGVyYXRvciBzdGFydCwgc2l6ZV90eXBlIG4pCi17Ci0gICAgYXNzZXJ0IChkYXRhKCkgfHwgIW4pOwotICAgIGFzc2VydCAoY21lbWxpbms6OmJlZ2luKCkgfHwgIW4pOwotICAgIGFzc2VydCAoc3RhcnQgPj0gYmVnaW4oKSAmJiBzdGFydCArIG4gPD0gZW5kKCkpOwotICAgIHJvdGF0ZSAoc3RhcnQsIGVuZCgpIC0gbiwgZW5kKCkpOwotfQotCi0vLy8gU2hpZnRzIHRoZSBkYXRhIGluIHRoZSBsaW5rZWQgYmxvY2sgZnJvbSBccCBzdGFydCArIFxwIG4gdG8gXHAgc3RhcnQuCi0vLy8gVGhlIGNvbnRlbnRzIG9mIHRoZSB1bmNvdmVyZWQgYnl0ZXMgaXMgdW5kZWZpbmVkLgotaW5saW5lIHZvaWQgbWVtbGluazo6ZXJhc2UgKGl0ZXJhdG9yIHN0YXJ0LCBzaXplX3R5cGUgbikKLXsKLSAgICBhc3NlcnQgKGRhdGEoKSB8fCAhbik7Ci0gICAgYXNzZXJ0IChjbWVtbGluazo6YmVnaW4oKSB8fCAhbik7Ci0gICAgYXNzZXJ0IChzdGFydCA+PSBiZWdpbigpICYmIHN0YXJ0ICsgbiA8PSBlbmQoKSk7Ci0gICAgcm90YXRlIChzdGFydCwgc3RhcnQgKyBuLCBlbmQoKSk7Ci19Ci0KLS8vLyBSZWFkcyBvYmplY3QgXHAgbCBmcm9tIHN0cmVhbSBccCBpcwotaW5saW5lIGlzdHJlYW0mIG9wZXJhdG9yPj4gKGlzdHJlYW0mIGlzLCBtZW1saW5rJiBsKQotewotICAgIGwucmVhZCAoaXMpOwotICAgIHJldHVybiAoaXMpOwotfQotCi0vLy8gVXNlIHdpdGggbWVtbGluay1kZXJpdmVkIGNsYXNzZXMgdG8gYWxsb2NhdGUgYW5kIGxpbmsgdG8gc3RhY2sgc3BhY2UuCi0jZGVmaW5lIGFsbG9jYV9saW5rKG0sbikJKG0pLmxpbmsgKGFsbG9jYSAobiksIChuKSkKLQotfSAvLyBuYW1lc3BhY2UgdXN0bAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvbWlzdHJlYW0uY3BwIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvbWlzdHJlYW0uY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDk5ODI4OS4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9taXN0cmVhbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwyNDIgKzAsMCBAQAotLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHVzdGwgbGlicmFyeSwgYW4gU1RMIGltcGxlbWVudGF0aW9uLgotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwNSBieSBNaWtlIFNoYXJvdiA8bXNoYXJvdkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0vLyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgotLy8KLS8vIG1zdHJlYW0uY3BwCi0vLwotLy8JSGVscGVyIGNsYXNzZXMgdG8gcmVhZCBhbmQgd3JpdGUgcGFja2VkIGJpbmFyeSBzdHJlYW1zLgotLy8KLQotI2luY2x1ZGUgIm1pc3RyZWFtLmgiCi0jaW5jbHVkZSAic29zdHJlYW0uaCIKLSNpbmNsdWRlICJ1YWxnby5oIgotI2luY2x1ZGUgInVhc3NlcnQuaCIKLSNpbmNsdWRlICJ1c3RyaW5nLmgiCi0KLSNpZiBQTEFURk9STV9BTkRST0lECi0jaW5jbHVkZSA8c3RkaW8uaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgdXN0bCB7Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8vIFxicmllZiBDb25zdHJ1Y3RzIGEgc3RyZWFtIGF0dGFjaGVkIHRvIG5vdGhpbmcuCi0vLy8gQSBzdHJlYW0gYXR0YWNoZWQgdG8gbm90aGluZyBpcyBub3QgdXNhYmxlLiBDYWxsIExpbmsoKSBmdW5jdGlvbnMKLS8vLyBpbmhlcml0ZWQgZnJvbSBjbWVtbGluayB0byBhdHRhY2ggdG8gc29tZSBtZW1vcnkgYmxvY2suCi0vLy8KLWlzdHJlYW06OmlzdHJlYW0gKHZvaWQpCi06IGNtZW1saW5rICgpLAotICBtX1BvcyAoMCkKLXsKLX0KLQotLy8vIEF0dGFjaGVzIHRoZSBzdHJlYW0gdG8gYSBibG9jayBhdCBccCBwIG9mIHNpemUgXHAgbi4KLWlzdHJlYW06OmlzdHJlYW0gKGNvbnN0IHZvaWQqIHAsIHNpemVfdHlwZSBuKQotOiBjbWVtbGluayAocCwgbiksCi0gIG1fUG9zICgwKQotewotfQotCi0vLy8gQXR0YWNoZXMgdG8gdGhlIGJsb2NrIHBvaW50ZWQgdG8gYnkgXHAgc291cmNlLgotaXN0cmVhbTo6aXN0cmVhbSAoY29uc3QgY21lbWxpbmsmIHNvdXJjZSkKLTogY21lbWxpbmsgKHNvdXJjZSksCi0gIG1fUG9zICgwKQotewotfQotCi0vLy8gQXR0YWNoZXMgdG8gdGhlIGJsb2NrIHBvaW50ZWQgdG8gYnkgc291cmNlIG9mIHNpemUgc291cmNlLnBvcygpCi1pc3RyZWFtOjppc3RyZWFtIChjb25zdCBvc3RyZWFtJiBzb3VyY2UpCi06IGNtZW1saW5rIChzb3VyY2UuYmVnaW4oKSwgc291cmNlLnBvcygpKSwKLSAgbV9Qb3MgKDApCi17Ci19Ci0KLS8vLyBTd2FwcyBjb250ZW50cyB3aXRoIFxwIGlzCi12b2lkIGlzdHJlYW06OnN3YXAgKGlzdHJlYW0mIGlzKQotewotICAgIGNtZW1saW5rOjpzd2FwIChpcyk7Ci0gICAgOjp1c3RsOjpzd2FwIChtX1BvcywgaXMubV9Qb3MpOwotfQotCi0vLy8gQ2hlY2tzIHRoYXQgXHAgbiBieXRlcyBhcmUgYXZhaWxhYmxlIGluIHRoZSBzdHJlYW0sIG9yIGVsc2UgdGhyb3dzLgotdm9pZCBpc3RyZWFtOjp2ZXJpZnlfcmVtYWluaW5nIChjb25zdCBjaGFyKiBvcCwgY29uc3QgY2hhciogdHlwZSwgc2l6ZV90IG4pIGNvbnN0Ci17Ci0gICAgaWYgKHJlbWFpbmluZygpIDwgbikKLSNpZiBQTEFURk9STV9BTkRST0lECi0gICAgICAgIHByaW50Zigic3RyZWFtIGJvdW5kcyBleGNlcHRpb25cbiIpOwotI2Vsc2UKLQl0aHJvdyBzdHJlYW1fYm91bmRzX2V4Y2VwdGlvbiAob3AsIHR5cGUsIHBvcygpLCBuLCByZW1haW5pbmcoKSk7Ci0jZW5kaWYKLX0KLQotLy8vIFJlYWRzIFxwIG4gYnl0ZXMgaW50byBccCBidWZmZXIuCi12b2lkIGlzdHJlYW06OnJlYWQgKHZvaWQqIGJ1ZmZlciwgc2l6ZV90eXBlIG4pCi17Ci0jaWZkZWYgV0FOVF9TVFJFQU1fQk9VTkRTX0NIRUNLSU5HCi0gICAgdmVyaWZ5X3JlbWFpbmluZyAoInJlYWQiLCAiYmluYXJ5IGRhdGEiLCBuKTsKLSNlbHNlCi0gICAgYXNzZXJ0IChyZW1haW5pbmcoKSA+PSBuICYmICJSZWFkaW5nIHBhc3QgZW5kIG9mIGJ1ZmZlci4gTWFrZSBzdXJlIHlvdSBhcmUgcmVhZGluZyB0aGUgcmlnaHQgZm9ybWF0LiIpOwotI2VuZGlmCi0gICAgY29weV9uIChpcG9zKCksIG4sIHJlaW50ZXJwcmV0X2Nhc3Q8dmFsdWVfdHlwZSo+KGJ1ZmZlcikpOwotICAgIG1fUG9zICs9IG47Ci19Ci0KLS8vLyBSZWFkcyBhIG51bGwtdGVybWluYXRlZCBzdHJpbmcgaW50byBccCBzdHIuCi12b2lkIGlzdHJlYW06OnJlYWRfc3RyeiAoc3RyaW5nJiBzdHIpCi17Ci0gICAgY29uc3RfaXRlcmF0b3IgenAgPSBmaW5kIChpcG9zKCksIGVuZCgpLCBzdHJpbmc6OmNfVGVybWluYXRvcik7Ci0gICAgaWYgKHpwID09IGVuZCgpKQotCXpwID0gaXBvcygpOwotICAgIGNvbnN0IHNpemVfdHlwZSBzdHJsID0gZGlzdGFuY2UgKGlwb3MoKSwgenApOwotICAgIHN0ci5yZXNpemUgKHN0cmwpOwotICAgIGNvcHkgKGlwb3MoKSwgenAsIHN0ci5iZWdpbigpKTsKLSAgICBtX1BvcyArPSBzdHJsICsgMTsKLX0KLQotLy8vIFJlYWRzIGF0IG1vc3QgXHAgbiBieXRlcyBpbnRvIFxwIHMuCi1pc3RyZWFtOjpzaXplX3R5cGUgaXN0cmVhbTo6cmVhZHNvbWUgKHZvaWQqIHMsIHNpemVfdHlwZSBuKQotewotICAgIGlmIChyZW1haW5pbmcoKSA8IG4pCi0JdW5kZXJmbG93IChuKTsKLSAgICBjb25zdCBzaXplX3R5cGUgbnRyIChtaW4gKG4sIHJlbWFpbmluZygpKSk7Ci0gICAgcmVhZCAocywgbnRyKTsKLSAgICByZXR1cm4gKG50cik7Ci19Ci0KLS8vLyBXcml0ZXMgYWxsIHVucmVhZCBieXRlcyBpbnRvIFxwIG9zLgotdm9pZCBpc3RyZWFtOjp3cml0ZSAob3N0cmVhbSYgb3MpIGNvbnN0Ci17Ci0gICAgb3Mud3JpdGUgKGlwb3MoKSwgcmVtYWluaW5nKCkpOwotfQotCi0vLy8gV3JpdGVzIHRoZSBvYmplY3QgdG8gc3RyZWFtIFxwIG9zLgotdm9pZCBpc3RyZWFtOjp0ZXh0X3dyaXRlIChvc3RyaW5nc3RyZWFtJiBvcykgY29uc3QKLXsKLSAgICBvcy53cml0ZSAoaXBvcygpLCByZW1haW5pbmcoKSk7Ci19Ci0KLS8vLyBMaW5rcyB0byBccCBwIG9mIHNpemUgXHAgbgotdm9pZCBpc3RyZWFtOjp1bmxpbmsgKHZvaWQpCi17Ci0gICAgY21lbWxpbms6OnVubGluaygpOwotICAgIG1fUG9zID0gMDsKLX0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLy8gXGJyaWVmIENvbnN0cnVjdHMgYSBzdHJlYW0gYXR0YWNoZWQgdG8gbm90aGluZy4KLS8vLyBBIHN0cmVhbSBhdHRhY2hlZCB0byBub3RoaW5nIGlzIG5vdCB1c2FibGUuIENhbGwgTGluaygpIGZ1bmN0aW9ucwotLy8vIGluaGVyaXRlZCBmcm9tIG1lbWxpbmsgdG8gYXR0YWNoIHRvIHNvbWUgbWVtb3J5IGJsb2NrLgotLy8vCi1vc3RyZWFtOjpvc3RyZWFtICh2b2lkKQotOiBtZW1saW5rICgpLAotICBtX1BvcyAoMCkKLXsKLX0KLQotLy8vIEF0dGFjaGVzIHRoZSBzdHJlYW0gdG8gYSBibG9jayBhdCBccCBwIG9mIHNpemUgXHAgbi4KLW9zdHJlYW06Om9zdHJlYW0gKHZvaWQqIHAsIHNpemVfdHlwZSBuKQotOiBtZW1saW5rIChwLCBuKSwKLSAgbV9Qb3MgKDApCi17Ci19Ci0KLS8vLyBBdHRhY2hlcyB0byB0aGUgYmxvY2sgcG9pbnRlZCB0byBieSBccCBzb3VyY2UuCi1vc3RyZWFtOjpvc3RyZWFtIChjb25zdCBtZW1saW5rJiBzb3VyY2UpCi06IG1lbWxpbmsgKHNvdXJjZSksCi0gIG1fUG9zICgwKQotewotfQotCi0vLy8gTGlua3MgdG8gXHAgcCBvZiBzaXplIFxwIG4KLXZvaWQgb3N0cmVhbTo6dW5saW5rICh2b2lkKQotewotICAgIG1lbWxpbms6OnVubGluaygpOwotICAgIG1fUG9zID0gMDsKLX0KLQotLy8vIENoZWNrcyB0aGF0IFxwIG4gYnl0ZXMgYXJlIGF2YWlsYWJsZSBpbiB0aGUgc3RyZWFtLCBvciBlbHNlIHRocm93cy4KLXZvaWQgb3N0cmVhbTo6dmVyaWZ5X3JlbWFpbmluZyAoY29uc3QgY2hhciogb3AsIGNvbnN0IGNoYXIqIHR5cGUsIHNpemVfdCBuKSBjb25zdAotewotICAgIGlmIChyZW1haW5pbmcoKSA8IG4pCi0jaWYgUExBVEZPUk1fQU5EUk9JRAotICAgICAgICBwcmludGYoInN0cmVhbSBib3VuZHMgZXhjZXB0aW9uXG4iKTsKLSNlbHNlCi0JdGhyb3cgc3RyZWFtX2JvdW5kc19leGNlcHRpb24gKG9wLCB0eXBlLCBwb3MoKSwgbiwgcmVtYWluaW5nKCkpOwotI2VuZGlmCi19Ci0KLS8vLyBBbGlnbnMgdGhlIHdyaXRlIHBvaW50ZXIgb24gXHAgZ3JhaW4uIFRoZSBza2lwcGVkIGJ5dGVzIGFyZSB6ZXJvZWQuCi12b2lkIG9zdHJlYW06OmFsaWduIChzaXplX3R5cGUgZ3JhaW4pCi17Ci0gICAgY29uc3Qgc2l6ZV90IHIgPSBwb3MoKSAlIGdyYWluOwotICAgIHNpemVfdCBuYiA9IGdyYWluIC0gcjsKLSAgICBpZiAoIXIpIG5iID0gMDsKLSNpZmRlZiBXQU5UX1NUUkVBTV9CT1VORFNfQ0hFQ0tJTkcKLSAgICB2ZXJpZnlfcmVtYWluaW5nICgiYWxpZ24iLCAicGFkZGluZyIsIG5iKTsKLSNlbHNlCi0gICAgYXNzZXJ0IChyZW1haW5pbmcoKSA+PSBuYiAmJiAiQnVmZmVyIG92ZXJydW4uIENoZWNrIHlvdXIgc3RyZWFtIHNpemUgY2FsY3VsYXRpb25zLiIpOwotI2VuZGlmCi0gICAgZmlsbF9uIChpcG9zKCksIG5iLCAnXHgwJyk7Ci0gICAgbV9Qb3MgKz0gbmI7Ci19Ci0KLS8vLyBXcml0ZXMgXHAgbiBieXRlcyBmcm9tIFxwIGJ1ZmZlci4KLXZvaWQgb3N0cmVhbTo6d3JpdGUgKGNvbnN0IHZvaWQqIGJ1ZmZlciwgc2l6ZV90eXBlIG4pCi17Ci0jaWZkZWYgV0FOVF9TVFJFQU1fQk9VTkRTX0NIRUNLSU5HCi0gICAgdmVyaWZ5X3JlbWFpbmluZyAoIndyaXRlIiwgImJpbmFyeSBkYXRhIiwgbik7Ci0jZWxzZQotICAgIGFzc2VydCAocmVtYWluaW5nKCkgPj0gbiAmJiAiQnVmZmVyIG92ZXJydW4uIENoZWNrIHlvdXIgc3RyZWFtIHNpemUgY2FsY3VsYXRpb25zLiIpOwotI2VuZGlmCi0gICAgY29weV9uIChjb25zdF9pdGVyYXRvcihidWZmZXIpLCBuLCBpcG9zKCkpOwotICAgIG1fUG9zICs9IG47Ci19Ci0KLS8vLyBXcml0ZXMgXHAgc3RyIGFzIGEgbnVsbC10ZXJtaW5hdGVkIHN0cmluZy4KLXZvaWQgb3N0cmVhbTo6d3JpdGVfc3RyeiAoY29uc3QgY2hhciogc3RyKQotewotICAgIHdyaXRlIChzdHIsIHN0cmxlbihzdHIpKTsKLSAgICBpd3JpdGUgKHN0cmluZzo6Y19UZXJtaW5hdG9yKTsKLX0KLQotLy8vIFdyaXRlcyBhbGwgYXZhaWxhYmxlIGRhdGEgZnJvbSBccCBpcy4KLXZvaWQgb3N0cmVhbTo6cmVhZCAoaXN0cmVhbSYgaXMpCi17Ci0gICAgaXMud3JpdGUgKCp0aGlzKTsKLSAgICBpcy5zZWVrIChpcy5zaXplKCkpOwotfQotCi0vLy8gV3JpdGVzIGFsbCB3cml0dGVuIGRhdGEgdG8gXHAgb3MuCi12b2lkIG9zdHJlYW06OnRleHRfd3JpdGUgKG9zdHJpbmdzdHJlYW0mIG9zKSBjb25zdAotewotICAgIG9zLndyaXRlIChiZWdpbigpLCBwb3MoKSk7Ci19Ci0KLS8vLyBJbnNlcnRzIGFuIGVtcHR5IGFyZWEgb2YgXHAgc2l6ZSwgYXQgXHAgc3RhcnQuCi12b2lkIG9zdHJlYW06Omluc2VydCAoaXRlcmF0b3Igc3RhcnQsIHNpemVfdHlwZSBzKQotewotICAgIG1lbWxpbms6Omluc2VydCAoc3RhcnQsIHMpOwotICAgIG1fUG9zICs9IHM7Ci19Ci0KLS8vLyBFcmFzZXMgYW4gYXJlYSBvZiBccCBzaXplLCBhdCBccCBzdGFydC4KLXZvaWQgb3N0cmVhbTo6ZXJhc2UgKGl0ZXJhdG9yIHN0YXJ0LCBzaXplX3R5cGUgcykKLXsKLSAgICBtX1BvcyAtPSBzOwotICAgIG1lbWxpbms6OmVyYXNlIChzdGFydCwgcyk7Ci19Ci0KLS8vLyBTd2FwcyB3aXRoIFxwIG9zCi12b2lkIG9zdHJlYW06OnN3YXAgKG9zdHJlYW0mIG9zKQotewotICAgIG1lbWxpbms6OnN3YXAgKG9zKTsKLSAgICA6OnVzdGw6OnN3YXAgKG1fUG9zLCBvcy5tX1Bvcyk7Ci19Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotfSAvLyBuYW1lc3BhY2UgdXN0bAotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9taXN0cmVhbS5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvbWlzdHJlYW0uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGE3YWVlNy4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9taXN0cmVhbS5oCisrKyAvZGV2L251bGwKQEAgLTEsMjkzICswLDAgQEAKLS8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB1c3RsIGxpYnJhcnksIGFuIFNUTCBpbXBsZW1lbnRhdGlvbi4KLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgYnkgTWlrZSBTaGFyb3YgPG1zaGFyb3ZAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotLy8gVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KLS8vCi0vLyBtaXN0cmVhbS5oCi0vLwotI2lmbmRlZiBNSVNUUkVBTV9IXzEwM0FFRjFGMjY2QzA0QUExQTgxN0QzODcwNTk4M0RBCi0jZGVmaW5lIE1JU1RSRUFNX0hfMTAzQUVGMUYyNjZDMDRBQTFBODE3RDM4NzA1OTgzREEKLQotI2luY2x1ZGUgIm1lbWxpbmsuaCIKLSNpbmNsdWRlICJ1ZXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAic3RybXNpemUuaCIKLSNpbmNsdWRlICJ1YXNzZXJ0LmgiCi0jaW5jbHVkZSAidXRmOC5oIgotI2luY2x1ZGUgInVpb3MuaCIKLSNpZmRlZiBXQU5UX1NUUkVBTV9CT1VORFNfQ0hFQ0tJTkcKLSAgICAjaW5jbHVkZSA8dHlwZWluZm8+Ci0jZW5kaWYKLQotbmFtZXNwYWNlIHVzdGwgewotCi1jbGFzcyBvc3RyZWFtOwotY2xhc3MgbWVtbGluazsKLWNsYXNzIHN0cmluZzsKLQotLy8vIFxjbGFzcyBpc3RyZWFtIG1pc3RyZWFtLmggdXN0bC5oCi0vLy8gXGluZ3JvdXAgQmluYXJ5U3RyZWFtcwotLy8vCi0vLy8gXGJyaWVmIEhlbHBlciBjbGFzcyB0byByZWFkIHBhY2tlZCBiaW5hcnkgc3RyZWFtcy4KLS8vLyAKLS8vLyBUaGlzIGNsYXNzIGNvbnRhaW5zIGEgc2V0IG9mIGZ1bmN0aW9ucyB0byByZWFkIGludGVncmFsIHR5cGVzIGZyb20gYW4KLS8vLyB1bnN0cnVjdHVyZWQgbWVtb3J5IGJsb2NrLiBVbnBhY2tpbmcgYmluYXJ5IGZpbGUgZGF0YSBjYW4gYmUgZG9uZSB0aGlzCi0vLy8gd2F5LCBmb3IgaW5zdGFuY2UuIGFsaWduaW5nIHRoZSBkYXRhIGlzIHlvdXIgcmVzcG9uc2liaWxpdHksIGFuZCBjYW4KLS8vLyBiZSBhY2NvbXBsaXNoZWQgYnkgcHJvcGVyIG9yZGVyaW5nIG9mIHJlYWRzIGFuZCBieSBjYWxsaW5nIHRoZSBhbGlnbigpCi0vLy8gZnVuY3Rpb24uIFVuYWxpZ25lZCBhY2Nlc3MgaXMgdXN1YWxseSBzbG93ZXIgYnkgb3JkZXJzIG9mIG1hZ25pdHVkZSBhbmQsCi0vLy8gb24gc29tZSBhcmNoaXRlY3R1cmVzLCBzdWNoIGFzIFBvd2VyUEMsIGNhbiBjYXVzZSB5b3VyIHByb2dyYW0gdG8gY3Jhc2guCi0vLy8gVGhlcmVmb3JlLCBhbGwgcmVhZCBmdW5jdGlvbnMgaGF2ZSBhc3NlcnRzIHRvIGNoZWNrIGFsaWdubWVudC4KLS8vLyBPdmVycmVhZGluZyB0aGUgZW5kIG9mIHRoZSBzdHJlYW0gd2lsbCBhbHNvIGNhdXNlIGEgY3Jhc2ggKGFuIGFzc2VydCBpbgotLy8vIGRlYnVnIGJ1aWxkcykuIE9oLCBhbmQgZG9uJ3QgYmUgaW50aW1pZGF0ZWQgYnkgdGhlIHNpemUgb2YgdGhlIGlubGluZXMKLS8vLyBoZXJlLiBJbiB0aGUgYXNzZW1ibHkgY29kZSB0aGUgY29tcGlsZXIgd2lsbCB1c3VhbGx5IGNob3AgZXZlcnl0aGluZyBkb3duCi0vLy8gdG8gZml2ZSBpbnN0cnVjdGlvbnMgZWFjaC4KLS8vLyAKLS8vLyBBbGlnbm1lbnQgcnVsZXMgZm9yIHlvdXIgb2JqZWN0czoKLS8vLwktIEFzc3VtZSB5b3VyIHdyaXRlcyBzdGFydCBvZmYgNC1ieXRlIGFsaWduZWQuCi0vLy8JLSBBZnRlciBjb21wbGV0aW9uLCBccmVmIGlzdHJlYW06OmFsaWduIHRoZSBzdHJlYW0gdG8gYXQgbGVhc3QgNC4KLS8vLwktIElmIGRhdGEgcG9ydGFiaWxpdHkgYmV0d2VlbiAzMmJpdCBhbmQgNjRiaXQgcGxhdGZvcm1zIGlzIGltcG9ydGFudAotLy8vCShpdCBvZnRlbiBpcyBub3QsIGluIGNvbmZpZyBmaWxlcyBhbmQgdGhlIGxpa2UpLCBlbnN1cmUgeW91IGFyZSBhbHdheXMKLS8vLwl1c2luZyBmaXhlZC1zaXplIHR5cGVzIGFuZCBhcmUgYWxpZ25pbmcgdG8gYSBmaXhlZCBncmFpbi4gQXZvaWQgd3JpdGluZwotLy8vCTgtYnl0ZSB0eXBlcywgYW5kIGlmIHlvdSBkbywgbWFudWFsbHkgYWxpZ24gYmVmb3JlIGRvaW5nIHNvLgotLy8vCS0gTm9uLWRlZmF1bHQgYWxpZ25tZW50IGlzIGFsbG93ZWQgaWYgeW91IHBsYW4gdG8gZnJlcXVlbnRseSB3cml0ZSB0aGlzCi0vLy8Jb2JqZWN0IGluIGFycmF5IGZvcm0gYW5kIGFsaWdubWVudCB3b3VsZCBiZSBjb3N0bHkuIEZvciBleGFtcGxlLCBhbgotLy8vCWFycmF5IG9mIHVpbnQxNl90LXNpemVkIG9iamVjdHMgbWF5IGxlYXZlIHRoZSBzdHJlYW0gdWludDE2X3QgYWxpZ25lZAotLy8vCWFzIGxvbmcgYXMgeW91IGtub3cgYWJvdXQgaXQgYW5kIHdpbGwgZGVmYXVsdC1hbGlnbiB0aGUgc3RyZWFtIGFmdGVyCi0vLy8Jd3JpdGluZyB0aGUgYXJyYXkgKG5vdGU6IFxyZWYgdmVjdG9yIHdpbGwgYWxyZWFkeSBkbyB0aGlzIGZvciB5b3UpCi0vLy8gCi0vLy8gRXhhbXBsZSBjb2RlOgotLy8vIFxjb2RlCi0vLy8JbWVtYmxvY2sgYjsKLS8vLwliLnJlYWRfZmlsZSAoInRlc3QuZmlsZSIpOwotLy8vCW9zdHJlYW0gaXMgKGIpOwotLy8vCWlzID4+IGJvb2xWYXIgPj4gaW9zOjp0YWxpZ248aW50PigpOwotLy8vCWlzID4+IGludFZhciA+PiBmbG9hdFZhcjsKLS8vLwlpcy5yZWFkIChiaW5hcnlEYXRhLCBiaW5hcnlEYXRhU2l6ZSk7Ci0vLy8JaXMuYWxpZ24oKTsKLS8vLyBcZW5kY29kZQotLy8vCi1jbGFzcyBpc3RyZWFtIDogcHVibGljIGNtZW1saW5rLCBwdWJsaWMgaW9zX2Jhc2UgewotcHVibGljOgotCQkJaXN0cmVhbSAodm9pZCk7Ci0JCQlpc3RyZWFtIChjb25zdCB2b2lkKiBwLCBzaXplX3R5cGUgbik7Ci0gICAgZXhwbGljaXQJCWlzdHJlYW0gKGNvbnN0IGNtZW1saW5rJiBzb3VyY2UpOwotICAgIGV4cGxpY2l0CQlpc3RyZWFtIChjb25zdCBvc3RyZWFtJiBzb3VyY2UpOwotICAgIGlubGluZSBpdGVyYXRvcgllbmQgKHZvaWQpIGNvbnN0CQkJeyByZXR1cm4gKGNtZW1saW5rOjplbmQoKSk7IH0KLSAgICBpbmxpbmUgdm9pZAkJbGluayAoY29uc3Qgdm9pZCogcCwgc2l6ZV90eXBlIG4pCXsgY21lbWxpbms6OmxpbmsgKHAsIG4pOyB9Ci0gICAgaW5saW5lIHZvaWQJCWxpbmsgKGNvbnN0IGNtZW1saW5rJiBsKQkJeyBjbWVtbGluazo6bGluayAobC5jZGF0YSgpLCBsLnJlYWRhYmxlX3NpemUoKSk7IH0KLSAgICBpbmxpbmUgdm9pZAkJbGluayAoY29uc3Qgdm9pZCogZiwgY29uc3Qgdm9pZCogbCkJeyBjbWVtbGluazo6bGluayAoZiwgbCk7IH0KLQkJCU9WRVJMT0FEX1BPSU5URVJfQU5EX1NJWkVfVF9WMihsaW5rLCBjb25zdCB2b2lkKikKLSAgICBpbmxpbmUgdm9pZAkJcmVsaW5rIChjb25zdCB2b2lkKiBwLCBzaXplX3R5cGUgbikJeyBjbWVtbGluazo6cmVsaW5rIChwLCBuKTsgbV9Qb3MgPSAwOyB9Ci0gICAgaW5saW5lIHZvaWQJCXJlbGluayAoY29uc3QgY21lbWxpbmsmIGwpCQl7IHJlbGluayAobC5jZGF0YSgpLCBsLnJlYWRhYmxlX3NpemUoKSk7IH0KLSAgICB2aXJ0dWFsIHZvaWQJdW5saW5rICh2b2lkKTsKLSAgICBpbmxpbmUgdmlydHVhbCBzaXplX3R5cGUJdW5kZXJmbG93IChzaXplX3R5cGUgPSAxKQl7IHJldHVybiAocmVtYWluaW5nKCkpOyB9Ci0gICAgaW5saW5lIHVvZmZfdAlwb3MgKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChtX1Bvcyk7IH0KLSAgICBpbmxpbmUgY29uc3RfaXRlcmF0b3IgaXBvcyAodm9pZCkgY29uc3QJeyByZXR1cm4gKGJlZ2luKCkgKyBwb3MoKSk7IH0KLSAgICBpbmxpbmUgc2l6ZV90eXBlCXJlbWFpbmluZyAodm9pZCkgY29uc3QJeyByZXR1cm4gKHNpemUoKSAtIHBvcygpKTsgfQotICAgIGlubGluZSB2b2lkCQlzZWVrICh1b2ZmX3QgbmV3UG9zKTsKLSAgICBpbmxpbmUgdm9pZAkJaXNlZWsgKGNvbnN0X2l0ZXJhdG9yIG5ld1Bvcyk7Ci0gICAgaW5saW5lIHZvaWQJCXNraXAgKHNpemVfdHlwZSBuQnl0ZXMpOwotICAgIGlubGluZSBib29sCQlhbGlnbmVkIChzaXplX3R5cGUgZ3JhaW4gPSBjX0RlZmF1bHRBbGlnbm1lbnQpIGNvbnN0OwotICAgIHZvaWQJCXZlcmlmeV9yZW1haW5pbmcgKGNvbnN0IGNoYXIqIG9wLCBjb25zdCBjaGFyKiB0eXBlLCBzaXplX3QgbikgY29uc3Q7Ci0gICAgaW5saW5lIHNpemVfdHlwZQlhbGlnbl9zaXplIChzaXplX3R5cGUgZ3JhaW4gPSBjX0RlZmF1bHRBbGlnbm1lbnQpIGNvbnN0OwotICAgIGlubGluZSB2b2lkCQlhbGlnbiAoc2l6ZV90eXBlIGdyYWluID0gY19EZWZhdWx0QWxpZ25tZW50KTsKLSAgICB2b2lkCQlzd2FwIChpc3RyZWFtJiBpcyk7Ci0gICAgdm9pZAkJcmVhZCAodm9pZCogYnVmZmVyLCBzaXplX3R5cGUgc2l6ZSk7Ci0gICAgaW5saW5lIHZvaWQJCXJlYWQgKG1lbWxpbmsmIGJ1ZikJeyByZWFkIChidWYuYmVnaW4oKSwgYnVmLndyaXRhYmxlX3NpemUoKSk7IH0KLSAgICB2b2lkCQlyZWFkX3N0cnogKHN0cmluZyYgc3RyKTsKLSAgICBzaXplX3R5cGUJCXJlYWRzb21lICh2b2lkKiBzLCBzaXplX3R5cGUgbik7Ci0gICAgaW5saW5lIHZvaWQJCXJlYWQgKGlzdHJlYW0mKQkJCXsgfQotICAgIHZvaWQJCXdyaXRlIChvc3RyZWFtJiBvcykgY29uc3Q7Ci0gICAgdm9pZAkJdGV4dF93cml0ZSAob3N0cmluZ3N0cmVhbSYgb3MpIGNvbnN0OwotICAgIGlubGluZSBzaXplX3QJc3RyZWFtX3NpemUgKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChyZW1haW5pbmcoKSk7IH0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBpbmxpbmUgdm9pZAkJaXJlYWQgKFQmIHYpOwotICAgIGlubGluZSB2b2lkCQl1bmdldGMgKHZvaWQpCQl7IHNlZWsgKHBvcygpIC0gMSk7IH0KLSAgICBpbmxpbmUgb2ZmX3QJdGVsbGcgKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChwb3MoKSk7IH0KLSAgICBpbmxpbmUgdm9pZAkJc2Vla2cgKG9mZl90IHAsIHNlZWtkaXIgZCA9IGJlZyk7Ci1wcml2YXRlOgotICAgIHVvZmZfdAkJbV9Qb3M7CQkvLy88IFRoZSBjdXJyZW50IHJlYWQgcG9zaXRpb24uCi19OwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFN0cmVhbT4KLWlubGluZSBzaXplX3QgcmVxdWlyZWRfc3RyZWFtX3NpemUgKFQsIGNvbnN0IFN0cmVhbSYpIHsgcmV0dXJuICgxKTsgfQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgc2l6ZV90IHJlcXVpcmVkX3N0cmVhbV9zaXplIChUIHYsIGNvbnN0IGlzdHJlYW0mKSB7IHJldHVybiAoc3RyZWFtX3NpemVfb2YodikpOyB9Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBTdHJlYW0+Ci1pbmxpbmUgYm9vbCBzdHJlYW1fYXRfZW9mIChjb25zdCBTdHJlYW0mIHN0bSkJeyByZXR1cm4gKHN0bS5lb2YoKSk7IH0KLXRlbXBsYXRlIDw+Ci1pbmxpbmUgYm9vbCBzdHJlYW1fYXRfZW9mIChjb25zdCBpc3RyZWFtJikJeyByZXR1cm4gKGZhbHNlKTsgfQotCi0vLy8gXGNsYXNzIGlzdHJlYW1faXRlcmF0b3IKLS8vLyBcaW5ncm91cCBCaW5hcnlTdHJlYW1JdGVyYXRvcnMKLS8vLwotLy8vIFxicmllZiBBbiBpdGVyYXRvciBvdmVyIGFuIGlzdHJlYW0gdG8gdXNlIHdpdGggdVNUTCBhbGdvcml0aG1zLgotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgU3RyZWFtID0gaXN0cmVhbT4KLWNsYXNzIGlzdHJlYW1faXRlcmF0b3IgewotcHVibGljOgotICAgIHR5cGVkZWYgVAkJCXZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiBwdHJkaWZmX3QJCWRpZmZlcmVuY2VfdHlwZTsKLSAgICB0eXBlZGVmIGNvbnN0IHZhbHVlX3R5cGUqCXBvaW50ZXI7Ci0gICAgdHlwZWRlZiBjb25zdCB2YWx1ZV90eXBlJglyZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiBzaXplX3QJCXNpemVfdHlwZTsKLXB1YmxpYzoKLQkJCQlpc3RyZWFtX2l0ZXJhdG9yICh2b2lkKQkJOiBtX3BpcyAoTlVMTCksIG1fdigpIHt9Ci0gICAgZXhwbGljaXQJCQlpc3RyZWFtX2l0ZXJhdG9yIChTdHJlYW0mIGlzKQk6IG1fcGlzICgmaXMpLCBtX3YoKSB7IFJlYWQoKTsgfQotIAkJCQlpc3RyZWFtX2l0ZXJhdG9yIChjb25zdCBpc3RyZWFtX2l0ZXJhdG9yJiBpKQk6IG1fcGlzIChpLm1fcGlzKSwgbV92IChpLm1fdikge30KLSAgICAvLy8gUmVhZHMgYW5kIHJldHVybnMgdGhlIG5leHQgdmFsdWUuCi0gICAgaW5saW5lIGNvbnN0IFQmCQlvcGVyYXRvciogKHZvaWQpCXsgcmV0dXJuIChtX3YpOyB9Ci0gICAgaW5saW5lIGlzdHJlYW1faXRlcmF0b3ImCW9wZXJhdG9yKysgKHZvaWQpCXsgUmVhZCgpOyByZXR1cm4gKCp0aGlzKTsgfQotICAgIGlubGluZSBpc3RyZWFtX2l0ZXJhdG9yJglvcGVyYXRvci0tICh2b2lkKQl7IG1fcGlzLT5zZWVrIChtX3Bpcy0+cG9zKCkgLSAyICogc3RyZWFtX3NpemVfb2YobV92KSk7IHJldHVybiAob3BlcmF0b3IrKygpKTsgfQotICAgIGlubGluZSBpc3RyZWFtX2l0ZXJhdG9yCW9wZXJhdG9yKysgKGludCkJeyBpc3RyZWFtX2l0ZXJhdG9yIG9sZCAoKnRoaXMpOyBvcGVyYXRvcisrKCk7IHJldHVybiAob2xkKTsgfQotICAgIGlubGluZSBpc3RyZWFtX2l0ZXJhdG9yCW9wZXJhdG9yLS0gKGludCkJeyBpc3RyZWFtX2l0ZXJhdG9yIG9sZCAoKnRoaXMpOyBvcGVyYXRvci0tKCk7IHJldHVybiAob2xkKTsgfQotICAgIGlubGluZSBpc3RyZWFtX2l0ZXJhdG9yJglvcGVyYXRvcis9IChzaXplX3R5cGUgbikJeyB3aGlsZSAobi0tKSBvcGVyYXRvcisrKCk7IHJldHVybiAoKnRoaXMpOyB9Ci0gICAgaW5saW5lIGlzdHJlYW1faXRlcmF0b3ImCW9wZXJhdG9yLT0gKHNpemVfdHlwZSBuKQl7IG1fcGlzLT5zZWVrIChtX3Bpcy0+cG9zKCkgLSAobiArIDEpICogc3RyZWFtX3NpemVfb2YobV92KSk7IHJldHVybiAob3BlcmF0b3IrKygpKTsgfQotICAgIGlubGluZSBpc3RyZWFtX2l0ZXJhdG9yCW9wZXJhdG9yLSAoc2l6ZV90eXBlIG4pIGNvbnN0CQkJeyBpc3RyZWFtX2l0ZXJhdG9yIHJlc3VsdCAoKnRoaXMpOyByZXR1cm4gKHJlc3VsdCAtPSBuKTsgfQotICAgIGlubGluZSBkaWZmZXJlbmNlX3R5cGUJb3BlcmF0b3ItIChjb25zdCBpc3RyZWFtX2l0ZXJhdG9yJiBpKSBjb25zdAl7IHJldHVybiAoZGlzdGFuY2UgKGkubV9waXMtPnBvcygpLCBtX3Bpcy0+cG9zKCkpIC8gc3RyZWFtX3NpemVfb2YobV92KSk7IH0KLSAgICBpbmxpbmUgYm9vbAkJCW9wZXJhdG9yPT0gKGNvbnN0IGlzdHJlYW1faXRlcmF0b3ImIGkpIGNvbnN0CXsgcmV0dXJuICgoIW1fcGlzICYmICFpLm1fcGlzKSB8fCAobV9waXMgJiYgaS5tX3BpcyAmJiBtX3Bpcy0+cG9zKCkgPT0gaS5tX3Bpcy0+cG9zKCkpKTsgfQotICAgIGlubGluZSBib29sCQkJb3BlcmF0b3I8IChjb25zdCBpc3RyZWFtX2l0ZXJhdG9yJiBpKSBjb25zdAl7IHJldHVybiAoIWkubV9waXMgfHwgKG1fcGlzICYmIG1fcGlzLT5wb3MoKSA8IGkubV9waXMtPnBvcygpKSk7IH0KLXByaXZhdGU6Ci0gICAgdm9pZCBSZWFkICh2b2lkKQotICAgIHsKLQlpZiAoIW1fcGlzKQotCSAgICByZXR1cm47Ci0JY29uc3Qgc2l6ZV90IHJzIChyZXF1aXJlZF9zdHJlYW1fc2l6ZSAobV92LCAqbV9waXMpKTsKLQlpZiAobV9waXMtPnJlbWFpbmluZygpIDwgcnMgJiYgbV9waXMtPnVuZGVyZmxvdyAocnMpIDwgcnMpIHsKLQkgICAgbV9waXMgPSBOVUxMOwotCSAgICByZXR1cm47Ci0JfQotCSptX3BpcyA+PiBtX3Y7Ci0JaWYgKHN0cmVhbV9hdF9lb2YgKCptX3BpcykpCi0JICAgIG1fcGlzID0gTlVMTDsKLSAgICB9Ci1wcml2YXRlOgotICAgIFN0cmVhbSoJbV9waXM7CQkvLy88IFRoZSBob3N0IHN0cmVhbS4KLSAgICBUCQltX3Y7CQkvLy88IExhc3QgcmVhZCB2YWx1ZTsgY2FjaGVkIHRvIGJlIHJldHVybmFibGUgYXMgYSBjb25zdCByZWZlcmVuY2UuCi19OwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8vIFNldHMgdGhlIGN1cnJlbnQgcmVhZCBwb3NpdGlvbiB0byBccCBuZXdQb3MKLWlubGluZSB2b2lkIGlzdHJlYW06OnNlZWsgKHVvZmZfdCBuZXdQb3MpCi17Ci0jaWZkZWYgV0FOVF9TVFJFQU1fQk9VTkRTX0NIRUNLSU5HCi0gICAgaWYgKG5ld1BvcyA+IHNpemUoKSkKLQl0aHJvdyBzdHJlYW1fYm91bmRzX2V4Y2VwdGlvbiAoInNlZWtnIiwgImJ5dGUiLCBwb3MoKSwgbmV3UG9zIC0gcG9zKCksIHNpemUoKSk7Ci0jZWxzZQotICAgIGFzc2VydCAobmV3UG9zIDw9IHNpemUoKSk7Ci0jZW5kaWYKLSAgICBtX1BvcyA9IG5ld1BvczsKLX0KLQotLy8vIFNldHMgdGhlIGN1cnJlbnQgcmVhZCBwb3NpdGlvbiB0byBccCBuZXdQb3MKLWlubGluZSB2b2lkIGlzdHJlYW06OmlzZWVrIChjb25zdF9pdGVyYXRvciBuZXdQb3MpCi17Ci0gICAgc2VlayAoZGlzdGFuY2UgKGJlZ2luKCksIG5ld1BvcykpOwotfQotCi0vLy8gU2V0cyB0aGUgY3VycmVudCB3cml0ZSBwb3NpdGlvbiB0byBccCBwIGJhc2VkIG9uIFxwIGQuCi1pbmxpbmUgdm9pZCBpc3RyZWFtOjpzZWVrZyAob2ZmX3QgcCwgc2Vla2RpciBkKQotewotICAgIHN3aXRjaCAoZCkgewotCWNhc2UgYmVnOglzZWVrIChwKTsgYnJlYWs7Ci0JY2FzZSBjdXI6CXNlZWsgKHBvcygpICsgcCk7IGJyZWFrOwotCWNhc2UgaW9zX2Jhc2U6OmVuZDoJc2VlayAoc2l6ZSgpIC0gcCk7IGJyZWFrOwotICAgIH0KLX0KLQotLy8vIFNraXBzIFxwIG5CeXRlcyB3aXRob3V0IHJlYWRpbmcgdGhlbS4KLWlubGluZSB2b2lkIGlzdHJlYW06OnNraXAgKHNpemVfdHlwZSBuQnl0ZXMpCi17Ci0gICAgc2VlayAocG9zKCkgKyBuQnl0ZXMpOwotfQotCi0vLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIHNraXAgdG8gYmUgYWxpZ25lZCBvbiBccCBncmFpbi4KLWlubGluZSBpc3RyZWFtOjpzaXplX3R5cGUgaXN0cmVhbTo6YWxpZ25fc2l6ZSAoc2l6ZV90eXBlIGdyYWluKSBjb25zdAotewotICAgIHJldHVybiAoQWxpZ24gKHBvcygpLCBncmFpbikgLSBwb3MoKSk7Ci19Ci0KLS8vLyBSZXR1cm5zIFxjIHRydWUgaWYgdGhlIHJlYWQgcG9zaXRpb24gaXMgYWxpZ25lZCBvbiBccCBncmFpbgotaW5saW5lIGJvb2wgaXN0cmVhbTo6YWxpZ25lZCAoc2l6ZV90eXBlIGdyYWluKSBjb25zdAotewotICAgIGFzc2VydCAodWludHB0cl90KGJlZ2luKCkpICUgZ3JhaW4gPT0gMCAmJiAiU3RyZWFtcyBzaG91bGQgYmUgYXR0YWNoZWQgYWxpZ25lZCBhdCB0aGUgbWF4aW11bSBlbGVtZW50IGdyYWluIHRvIGF2b2lkIGJ1cyBlcnJvcnMuIik7Ci0gICAgcmV0dXJuIChwb3MoKSAlIGdyYWluID09IDApOwotfQotCi0vLy8gYWxpZ25zIHRoZSByZWFkIHBvc2l0aW9uIG9uIFxwIGdyYWluCi1pbmxpbmUgdm9pZCBpc3RyZWFtOjphbGlnbiAoc2l6ZV90eXBlIGdyYWluKQotewotICAgIHNlZWsgKEFsaWduIChwb3MoKSwgZ3JhaW4pKTsKLX0KLQotLy8vIFJlYWRzIHR5cGUgVCBmcm9tIHRoZSBzdHJlYW0gdmlhIGEgZGlyZWN0IHBvaW50ZXIgY2FzdC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIHZvaWQgaXN0cmVhbTo6aXJlYWQgKFQmIHYpCi17Ci0gICAgYXNzZXJ0IChhbGlnbmVkIChhbGlnbm9mIChUKCkpKSk7Ci0jaWZkZWYgV0FOVF9TVFJFQU1fQk9VTkRTX0NIRUNLSU5HCi0gICAgdmVyaWZ5X3JlbWFpbmluZyAoInJlYWQiLCB0eXBlaWQodikubmFtZSgpLCBzaXplb2YoVCkpOwotI2Vsc2UKLSAgICBhc3NlcnQgKHJlbWFpbmluZygpID49IHNpemVvZihUKSk7Ci0jZW5kaWYKLSAgICB2ID0gKnJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVCo+KGlwb3MoKSk7Ci0gICAgbV9Qb3MgKz0gc2l6ZW9mKFQpOwotfQotCi0jZGVmaW5lIElTVFJFQU1fT1BFUkFUT1IodHlwZSkJXAotaW5saW5lIGlzdHJlYW0mCW9wZXJhdG9yPj4gKGlzdHJlYW0mIGlzLCB0eXBlJiB2KQl7IGlzLmlyZWFkKHYpOyByZXR1cm4gKGlzKTsgfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLUlTVFJFQU1fT1BFUkFUT1IoVCopCi1JU1RSRUFNX09QRVJBVE9SKGludDhfdCkKLUlTVFJFQU1fT1BFUkFUT1IodWludDhfdCkKLUlTVFJFQU1fT1BFUkFUT1IoaW50MTZfdCkKLUlTVFJFQU1fT1BFUkFUT1IodWludDE2X3QpCi1JU1RSRUFNX09QRVJBVE9SKGludDMyX3QpCi1JU1RSRUFNX09QRVJBVE9SKHVpbnQzMl90KQotSVNUUkVBTV9PUEVSQVRPUihmbG9hdCkKLUlTVFJFQU1fT1BFUkFUT1IoZG91YmxlKQotSVNUUkVBTV9PUEVSQVRPUih3Y2hhcl90KQotI2lmIFNJWkVfT0ZfQk9PTCA9PSBTSVpFX09GX0NIQVIKLUlTVFJFQU1fT1BFUkFUT1IoYm9vbCkKLSNlbHNlCi1pbmxpbmUgaXN0cmVhbSYJb3BlcmF0b3I+PiAoaXN0cmVhbSYgaXMsIGJvb2wmIHYpCi17IHVpbnQ4X3Qgdjg7IGlzLmlyZWFkICh2OCk7IHYgPSB2ODsgcmV0dXJuIChpcyk7IH0KLSNlbmRpZgotI2lmIEhBVkVfVEhSRUVfQ0hBUl9UWVBFUwotSVNUUkVBTV9PUEVSQVRPUihjaGFyKQotI2VuZGlmCi0jaWYgSEFWRV9JTlQ2NF9UCi1JU1RSRUFNX09QRVJBVE9SKGludDY0X3QpCi1JU1RSRUFNX09QRVJBVE9SKHVpbnQ2NF90KQotI2VuZGlmCi0jaWYgU0laRV9PRl9MT05HID09IFNJWkVfT0ZfSU5UCi1JU1RSRUFNX09QRVJBVE9SKGxvbmcpCi1JU1RSRUFNX09QRVJBVE9SKHVuc2lnbmVkIGxvbmcpCi0jZW5kaWYKLSNpZiBIQVZFX0xPTkdfTE9ORyAmJiAoIUhBVkVfSU5UNjRfVCB8fCBTSVpFX09GX0xPTkdfTE9ORyA+IDgpCi1JU1RSRUFNX09QRVJBVE9SKGxvbmcgbG9uZykKLUlTVFJFQU1fT1BFUkFUT1IodW5zaWduZWQgbG9uZyBsb25nKQotI2VuZGlmCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi10eXBlZGVmIGlzdHJlYW1faXRlcmF0b3I8dXRmOHN1YmNoYXJfdD4gaXN0cmVhbV9pdGVyYXRvcl9mb3JfdXRmODsKLXR5cGVkZWYgdXRmOGluX2l0ZXJhdG9yPGlzdHJlYW1faXRlcmF0b3JfZm9yX3V0Zjg+IHV0Zjhpc3RyZWFtX2l0ZXJhdG9yOwotCi0vLy8gUmV0dXJucyBhIFVURi04IGFkYXB0b3IgcmVhZGluZyBmcm9tIFxwIGlzLgotaW5saW5lIHV0Zjhpc3RyZWFtX2l0ZXJhdG9yIHV0ZjhpbiAoaXN0cmVhbSYgaXMpCi17Ci0gICAgaXN0cmVhbV9pdGVyYXRvcl9mb3JfdXRmOCBzaSAoaXMpOwotICAgIHJldHVybiAodXRmOGlzdHJlYW1faXRlcmF0b3IgKHNpKSk7Ci19Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9tb3N0cmVhbS5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvbW9zdHJlYW0uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmIwNDE5Ni4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9tb3N0cmVhbS5oCisrKyAvZGV2L251bGwKQEAgLTEsMjYwICswLDAgQEAKLS8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB1c3RsIGxpYnJhcnksIGFuIFNUTCBpbXBsZW1lbnRhdGlvbi4KLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgYnkgTWlrZSBTaGFyb3YgPG1zaGFyb3ZAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotLy8gVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KLS8vCi0vLyBtb3N0cmVhbS5oCi0KLSNpZm5kZWYgTU9TVFJFQU1fSF8yNEE4QzUzOTdFMDg0ODIxNjU3M0U1NjcwOTMwRkM5QQotI2RlZmluZSBNT1NUUkVBTV9IXzI0QThDNTM5N0UwODQ4MjE2NTczRTU2NzA5MzBGQzlBCi0KLSNpbmNsdWRlICJtZW1saW5rLmgiCi0jaW5jbHVkZSAidWFzc2VydC5oIgotI2luY2x1ZGUgInVleGNlcHRpb24uaCIKLSNpbmNsdWRlICJ1dGY4LmgiCi0jaW5jbHVkZSAidWlvcy5oIgotI2luY2x1ZGUgPHR5cGVpbmZvPgotCi1uYW1lc3BhY2UgdXN0bCB7Ci0KLWNsYXNzIGlzdHJlYW07Ci1jbGFzcyBzdHJpbmc7Ci0KLS8vLyBcY2xhc3Mgb3N0cmVhbSBtb3N0cmVhbS5oIHVzdGwuaAotLy8vIFxpbmdyb3VwIEJpbmFyeVN0cmVhbXMKLS8vLwotLy8vIFxicmllZiBIZWxwZXIgY2xhc3MgdG8gd3JpdGUgcGFja2VkIGJpbmFyeSBzdHJlYW1zLgotLy8vCi0vLy8gVGhpcyBjbGFzcyBjb250YWlucyBhIHNldCBvZiBmdW5jdGlvbnMgdG8gd3JpdGUgaW50ZWdyYWwgdHlwZXMgaW50byBhbgotLy8vIHVuc3RydWN0dXJlZCBtZW1vcnkgYmxvY2suIFBhY2tpbmcgYmluYXJ5IGZpbGUgZGF0YSBjYW4gYmUgZG9uZSB0aGlzCi0vLy8gd2F5LCBmb3IgaW5zdGFuY2UuIGFsaWduaW5nIHRoZSBkYXRhIGlzIHlvdXIgcmVzcG9uc2liaWxpdHksIGFuZCBjYW4KLS8vLyBiZSBhY2NvbXBsaXNoZWQgYnkgcHJvcGVyIG9yZGVyaW5nIG9mIHdyaXRlcyBhbmQgYnkgY2FsbGluZyBccmVmIG9zdHJlYW06OmFsaWduLgotLy8vIFVuYWxpZ25lZCBhY2Nlc3MgaXMgdXN1YWxseSBzbG93ZXIgYnkgb3JkZXJzIG9mIG1hZ25pdHVkZSBhbmQsCi0vLy8gb24gc29tZSBhcmNoaXRlY3R1cmVzLCBzdWNoIGFzIFBvd2VyUEMsIGNhbiBjYXVzZSB5b3VyIHByb2dyYW0gdG8gY3Jhc2guCi0vLy8gVGhlcmVmb3JlLCBhbGwgd3JpdGUgZnVuY3Rpb25zIGhhdmUgYXNzZXJ0cyB0byBjaGVjayBhbGlnbm1lbnQuCi0vLy8gU2VlIFxyZWYgaXN0cmVhbSBkb2N1bWVudGF0aW9uIGZvciBydWxlcyBvbiBkZXNpZ25pbmcgeW91ciBkYXRhIGZvcm1hdC4KLS8vLyBPdmVyd3JpdGluZyB0aGUgZW5kIG9mIHRoZSBzdHJlYW0gd2lsbCBhbHNvIGNhdXNlIGEgY3Jhc2ggKGFuIGFzc2VydCBpbgotLy8vIGRlYnVnIGJ1aWxkcykuIE9oLCBhbmQgZG9uJ3QgYmUgaW50aW1pZGF0ZWQgYnkgdGhlIHNpemUgb2YgdGhlIGlubGluZXMKLS8vLyBoZXJlLiBJbiB0aGUgYXNzZW1ibHkgY29kZSB0aGUgY29tcGlsZXIgd2lsbCB1c3VhbGx5IGNob3AgZXZlcnl0aGluZyBkb3duCi0vLy8gdG8gZml2ZSBpbnN0cnVjdGlvbnMgZWFjaC4KLS8vLwotLy8vIEV4YW1wbGUgY29kZToKLS8vLyBcY29kZQotLy8vICAgICBtZW1ibG9jayBiOwotLy8vICAgICBvc3RyZWFtIG9zIChiKTsKLS8vLyAgICAgb3MgPDwgYm9vbFZhciA8PCBpb3M6OnRhbGlnbjxpbnQ+KCk7Ci0vLy8gICAgIG9zIDw8IGludFZhciA8PCBmbG9hdFZhcjsKLS8vLyAgICAgb3Mud3JpdGUgKGJpbmFyeURhdGEsIGJpbmFyeURhdGFTaXplKTsKLS8vLyAgICAgb3MuYWxpZ24oKTsKLS8vLyAgICAgYi5yZXNpemUgKG9zLnBvcygpKTsKLS8vLwliLndyaXRlX2ZpbGUgKCJ0ZXN0LmZpbGUiKTsKLS8vLyBcZW5kY29kZQotLy8vCi1jbGFzcyBvc3RyZWFtIDogcHVibGljIG1lbWxpbmssIHB1YmxpYyBpb3NfYmFzZSB7Ci1wdWJsaWM6Ci0JCQlvc3RyZWFtICh2b2lkKTsKLQkJCW9zdHJlYW0gKHZvaWQqIHAsIHNpemVfdHlwZSBuKTsKLSAgICBleHBsaWNpdAkJb3N0cmVhbSAoY29uc3QgbWVtbGluayYgc291cmNlKTsKLSAgICBpbmxpbmUgaXRlcmF0b3IJZW5kICh2b2lkKQkJCXsgcmV0dXJuIChtZW1saW5rOjplbmQoKSk7IH0KLSAgICBpbmxpbmUgY29uc3RfaXRlcmF0b3IJZW5kICh2b2lkKSBjb25zdAl7IHJldHVybiAobWVtbGluazo6ZW5kKCkpOyB9Ci0gICAgaW5saW5lIHZvaWQJCXNlZWsgKHVvZmZfdCBuZXdQb3MpOwotICAgIGlubGluZSB2b2lkCQlpc2VlayAoY29uc3RfaXRlcmF0b3IgbmV3UG9zKTsKLSAgICBpbmxpbmUgdm9pZAkJc2tpcCAoc2l6ZV90eXBlIG5CeXRlcyk7Ci0gICAgaW5saW5lIHVvZmZfdAlwb3MgKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChtX1Bvcyk7IH0KLSAgICBpbmxpbmUgaXRlcmF0b3IJaXBvcyAodm9pZCkJCXsgcmV0dXJuIChiZWdpbigpICsgcG9zKCkpOyB9Ci0gICAgaW5saW5lIGNvbnN0X2l0ZXJhdG9yIGlwb3MgKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChiZWdpbigpICsgcG9zKCkpOyB9Ci0gICAgaW5saW5lIHNpemVfdHlwZQlyZW1haW5pbmcgKHZvaWQpIGNvbnN0OwotICAgIGlubGluZSBib29sCQlhbGlnbmVkIChzaXplX3R5cGUgZ3JhaW4gPSBjX0RlZmF1bHRBbGlnbm1lbnQpIGNvbnN0OwotICAgIHZvaWQJCXZlcmlmeV9yZW1haW5pbmcgKGNvbnN0IGNoYXIqIG9wLCBjb25zdCBjaGFyKiB0eXBlLCBzaXplX3QgbikgY29uc3Q7Ci0gICAgaW5saW5lIHNpemVfdHlwZQlhbGlnbl9zaXplIChzaXplX3R5cGUgZ3JhaW4gPSBjX0RlZmF1bHRBbGlnbm1lbnQpIGNvbnN0OwotICAgIHZvaWQJCWFsaWduIChzaXplX3R5cGUgZ3JhaW4gPSBjX0RlZmF1bHRBbGlnbm1lbnQpOwotICAgIHZvaWQJCXdyaXRlIChjb25zdCB2b2lkKiBidWZmZXIsIHNpemVfdHlwZSBzaXplKTsKLSAgICBpbmxpbmUgdm9pZAkJd3JpdGUgKGNvbnN0IGNtZW1saW5rJiBidWYpOwotICAgIHZvaWQJCXdyaXRlX3N0cnogKGNvbnN0IGNoYXIqIHN0cik7Ci0gICAgdm9pZAkJcmVhZCAoaXN0cmVhbSYgaXMpOwotICAgIGlubGluZSB2b2lkCQl3cml0ZSAob3N0cmVhbSYgb3MpIGNvbnN0CXsgb3Mud3JpdGUgKGJlZ2luKCksIHBvcygpKTsgfQotICAgIHZvaWQJCXRleHRfd3JpdGUgKG9zdHJpbmdzdHJlYW0mIG9zKSBjb25zdDsKLSAgICBpbmxpbmUgc2l6ZV90CXN0cmVhbV9zaXplICh2b2lkKSBjb25zdAl7IHJldHVybiAocG9zKCkpOyB9Ci0gICAgdm9pZAkJaW5zZXJ0IChpdGVyYXRvciBzdGFydCwgc2l6ZV90eXBlIHNpemUpOwotICAgIHZvaWQJCWVyYXNlIChpdGVyYXRvciBzdGFydCwgc2l6ZV90eXBlIHNpemUpOwotICAgIHZvaWQJCXN3YXAgKG9zdHJlYW0mIG9zKTsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBpbmxpbmUgdm9pZAkJaXdyaXRlIChjb25zdCBUJiB2KTsKLSAgICBpbmxpbmUgdmlydHVhbCBzaXplX3R5cGUJb3ZlcmZsb3cgKHNpemVfdHlwZSA9IDEpeyByZXR1cm4gKHJlbWFpbmluZygpKTsgfQotICAgIHZpcnR1YWwgdm9pZAl1bmxpbmsgKHZvaWQpOwotICAgIGlubGluZSB2b2lkCQlsaW5rICh2b2lkKiBwLCBzaXplX3R5cGUgbikJeyBtZW1saW5rOjpsaW5rIChwLCBuKTsgfQotICAgIGlubGluZSB2b2lkCQlsaW5rIChtZW1saW5rJiBsKQkJeyBtZW1saW5rOjpsaW5rIChsLmRhdGEoKSwgbC53cml0YWJsZV9zaXplKCkpOyB9Ci0gICAgaW5saW5lIHZvaWQJCWxpbmsgKHZvaWQqIGYsIHZvaWQqIGwpCQl7IG1lbWxpbms6OmxpbmsgKGYsIGwpOyB9Ci0JCQlPVkVSTE9BRF9QT0lOVEVSX0FORF9TSVpFX1RfVjIobGluaywgdm9pZCopCi0gICAgaW5saW5lIHZvaWQJCXJlbGluayAodm9pZCogcCwgc2l6ZV90eXBlIG4pCXsgbWVtbGluazo6cmVsaW5rIChwLCBuKTsgbV9Qb3MgPSAwOyB9Ci0gICAgaW5saW5lIHZvaWQJCXJlbGluayAobWVtbGluayYgbCkJCXsgcmVsaW5rIChsLmRhdGEoKSwgbC53cml0YWJsZV9zaXplKCkpOyB9Ci0gICAgaW5saW5lIHZvaWQJCXNlZWtwIChvZmZfdCBwLCBzZWVrZGlyIGQgPSBiZWcpOwotICAgIGlubGluZSBvZmZfdAl0ZWxscCAodm9pZCkgY29uc3QJCXsgcmV0dXJuIChwb3MoKSk7IH0KLXByb3RlY3RlZDoKLSAgICBpbmxpbmUgdm9pZAkJU2V0UG9zICh1b2ZmX3QgbmV3UG9zKQkJeyBtX1BvcyA9IG5ld1BvczsgfQotcHJpdmF0ZToKLSAgICB1b2ZmX3QJCW1fUG9zOwkvLy88IEN1cnJlbnQgd3JpdGUgcG9zaXRpb24uCi19OwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8vIFxjbGFzcyBvc3RyZWFtX2l0ZXJhdG9yIG1vc3RyZWFtLmggdXN0bC5oCi0vLy8gXGluZ3JvdXAgQmluYXJ5U3RyZWFtSXRlcmF0b3JzCi0vLy8KLS8vLyBcYnJpZWYgQW4gaXRlcmF0b3Igb3ZlciBhbiBvc3RyZWFtIHRvIHVzZSB3aXRoIHVTVEwgYWxnb3JpdGhtcy4KLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIFN0cmVhbSA9IG9zdHJlYW0+Ci1jbGFzcyBvc3RyZWFtX2l0ZXJhdG9yIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIFQJCQl2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgcHRyZGlmZl90CQlkaWZmZXJlbmNlX3R5cGU7Ci0gICAgdHlwZWRlZiB2YWx1ZV90eXBlKgkJcG9pbnRlcjsKLSAgICB0eXBlZGVmIHZhbHVlX3R5cGUmCQlyZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiBvc3RyZWFtOjpzaXplX3R5cGUJc2l6ZV90eXBlOwotcHVibGljOgotICAgIGlubGluZSBleHBsaWNpdAkJb3N0cmVhbV9pdGVyYXRvciAoU3RyZWFtJiBvcykKLQkJCQkgICAgOiBtX09zIChvcykge30KLSAgICBpbmxpbmUJCQlvc3RyZWFtX2l0ZXJhdG9yIChjb25zdCBvc3RyZWFtX2l0ZXJhdG9yJiBpdGVyKQotCQkJCSAgICA6IG1fT3MgKGl0ZXIubV9Pcykge30gCi0gICAgLy8vIFdyaXRlcyBccCB2IGludG8gdGhlIHN0cmVhbS4KLSAgICBpbmxpbmUgb3N0cmVhbV9pdGVyYXRvciYJb3BlcmF0b3I9IChjb25zdCBUJiB2KQotCQkJCSAgICB7IG1fT3MgPDwgdjsgcmV0dXJuICgqdGhpcyk7IH0KLSAgICBpbmxpbmUgb3N0cmVhbV9pdGVyYXRvciYJb3BlcmF0b3IqICh2b2lkKSB7IHJldHVybiAoKnRoaXMpOyB9Ci0gICAgaW5saW5lIG9zdHJlYW1faXRlcmF0b3ImCW9wZXJhdG9yKysgKHZvaWQpIHsgcmV0dXJuICgqdGhpcyk7IH0KLSAgICBpbmxpbmUgb3N0cmVhbV9pdGVyYXRvcglvcGVyYXRvcisrIChpbnQpIHsgcmV0dXJuICgqdGhpcyk7IH0KLSAgICBpbmxpbmUgb3N0cmVhbV9pdGVyYXRvciYJb3BlcmF0b3IrPSAoc2l6ZV90eXBlIG4pIHsgbV9Pcy5za2lwIChuKTsgcmV0dXJuICgqdGhpcyk7IH0KLSAgICBpbmxpbmUgYm9vbAkJCW9wZXJhdG9yPT0gKGNvbnN0IG9zdHJlYW1faXRlcmF0b3ImIGkpIGNvbnN0Ci0JCQkJICAgIHsgcmV0dXJuIChtX09zLnBvcygpID09IGkubV9Pcy5wb3MoKSk7IH0KLSAgICBpbmxpbmUgYm9vbAkJCW9wZXJhdG9yPCAoY29uc3Qgb3N0cmVhbV9pdGVyYXRvciYgaSkgY29uc3QKLQkJCQkgICAgeyByZXR1cm4gKG1fT3MucG9zKCkgPCBpLm1fT3MucG9zKCkpOyB9Ci1wcml2YXRlOgotICAgIFN0cmVhbSYJbV9PczsKLX07Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi10eXBlZGVmIG9zdHJlYW1faXRlcmF0b3I8dXRmOHN1YmNoYXJfdD4gb3N0cmVhbV9pdGVyYXRvcl9mb3JfdXRmODsKLXR5cGVkZWYgdXRmOG91dF9pdGVyYXRvcjxvc3RyZWFtX2l0ZXJhdG9yX2Zvcl91dGY4PiB1dGY4b3N0cmVhbV9pdGVyYXRvcjsKLQotLy8vIFJldHVybnMgYSBVVEYtOCBhZGFwdG9yIHdyaXRpbmcgdG8gXHAgb3MuCi1pbmxpbmUgdXRmOG9zdHJlYW1faXRlcmF0b3IgdXRmOG91dCAob3N0cmVhbSYgb3MpCi17Ci0gICAgb3N0cmVhbV9pdGVyYXRvcl9mb3JfdXRmOCBzaSAob3MpOwotICAgIHJldHVybiAodXRmOG9zdHJlYW1faXRlcmF0b3IgKHNpKSk7Ci19Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLy8gTW92ZSB0aGUgd3JpdGUgcG9pbnRlciB0byBccCBuZXdQb3MKLWlubGluZSB2b2lkIG9zdHJlYW06OnNlZWsgKHVvZmZfdCBuZXdQb3MpCi17Ci0jaWZkZWYgV0FOVF9TVFJFQU1fQk9VTkRTX0NIRUNLSU5HCi0gICAgaWYgKG5ld1BvcyA+IHNpemUoKSkKLQl0aHJvdyBzdHJlYW1fYm91bmRzX2V4Y2VwdGlvbiAoInNlZWtwIiwgImJ5dGUiLCBwb3MoKSwgbmV3UG9zIC0gcG9zKCksIHNpemUoKSk7Ci0jZWxzZQotICAgIGFzc2VydCAobmV3UG9zIDw9IHNpemUoKSk7Ci0jZW5kaWYKLSAgICBTZXRQb3MgKG5ld1Bvcyk7Ci19Ci0KLS8vLyBTZXRzIHRoZSBjdXJyZW50IHdyaXRlIHBvc2l0aW9uIHRvIFxwIG5ld1BvcwotaW5saW5lIHZvaWQgb3N0cmVhbTo6aXNlZWsgKGNvbnN0X2l0ZXJhdG9yIG5ld1BvcykKLXsKLSAgICBzZWVrIChkaXN0YW5jZSAoYmVnaW4oKSwgY29uc3RfY2FzdDxpdGVyYXRvcj4obmV3UG9zKSkpOwotfQotCi0vLy8gU2V0cyB0aGUgY3VycmVudCB3cml0ZSBwb3NpdGlvbiB0byBccCBwIGJhc2VkIG9uIFxwIGQuCi1pbmxpbmUgdm9pZCBvc3RyZWFtOjpzZWVrcCAob2ZmX3QgcCwgc2Vla2RpciBkKQotewotICAgIHN3aXRjaCAoZCkgewotCWNhc2UgYmVnOglzZWVrIChwKTsgYnJlYWs7Ci0JY2FzZSBjdXI6CXNlZWsgKHBvcygpICsgcCk7IGJyZWFrOwotCWNhc2UgaW9zX2Jhc2U6OmVuZDoJc2VlayAoc2l6ZSgpIC0gcCk7IGJyZWFrOwotICAgIH0KLX0KLQotLy8vIFNraXBzIFxwIG5CeXRlcyB3aXRob3V0IHdyaXRpbmcgYW55dGhpbmcuCi1pbmxpbmUgdm9pZCBvc3RyZWFtOjpza2lwIChzaXplX3R5cGUgbkJ5dGVzKQotewotICAgIHNlZWsgKHBvcygpICsgbkJ5dGVzKTsKLX0KLQotLy8vIFJldHVybnMgbnVtYmVyIG9mIGJ5dGVzIHJlbWFpbmluZyBpbiB0aGUgd3JpdGUgYnVmZmVyLgotaW5saW5lIG9zdHJlYW06OnNpemVfdHlwZSBvc3RyZWFtOjpyZW1haW5pbmcgKHZvaWQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIChzaXplKCkgLSBwb3MoKSk7Ci19Ci0KLS8vLyBSZXR1cm5zIFxjIHRydWUgaWYgdGhlIHdyaXRlIHBvaW50ZXIgaXMgYWxpZ25lZCBvbiBccCBncmFpbgotaW5saW5lIGJvb2wgb3N0cmVhbTo6YWxpZ25lZCAoc2l6ZV90eXBlIGdyYWluKSBjb25zdAotewotICAgIGFzc2VydCAodWludHB0cl90KGJlZ2luKCkpICUgZ3JhaW4gPT0gMCAmJiAiU3RyZWFtcyBzaG91bGQgYmUgYXR0YWNoZWQgYWxpZ25lZCBhdCB0aGUgbWF4aW11bSBlbGVtZW50IGdyYWluIHRvIGF2b2lkIGJ1cyBlcnJvcnMuIik7Ci0gICAgcmV0dXJuIChwb3MoKSAlIGdyYWluID09IDApOwotfQotCi0vLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIHNraXAgdG8gYmUgYWxpZ25lZCBvbiBccCBncmFpbi4KLWlubGluZSBvc3RyZWFtOjpzaXplX3R5cGUgb3N0cmVhbTo6YWxpZ25fc2l6ZSAoc2l6ZV90eXBlIGdyYWluKSBjb25zdAotewotICAgIHJldHVybiAoQWxpZ24gKHBvcygpLCBncmFpbikgLSBwb3MoKSk7Ci19Ci0KLS8vLyBXcml0ZXMgdGhlIGNvbnRlbnRzIG9mIFxwIGJ1ZiBpbnRvIHRoZSBzdHJlYW0gYXMgYSByYXcgZHVtcC4KLWlubGluZSB2b2lkIG9zdHJlYW06OndyaXRlIChjb25zdCBjbWVtbGluayYgYnVmKQotewotICAgIHdyaXRlIChidWYuYmVnaW4oKSwgYnVmLnNpemUoKSk7Ci19Ci0KLS8vLyBXcml0ZXMgdHlwZSBUIGludG8gdGhlIHN0cmVhbSB2aWEgYSBkaXJlY3QgcG9pbnRlciBjYXN0LgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdm9pZCBvc3RyZWFtOjppd3JpdGUgKGNvbnN0IFQmIHYpCi17Ci0gICAgYXNzZXJ0IChhbGlnbmVkIChhbGlnbm9mICh2KSkpOwotI2lmZGVmIFdBTlRfU1RSRUFNX0JPVU5EU19DSEVDS0lORwotICAgIHZlcmlmeV9yZW1haW5pbmcgKCJ3cml0ZSIsIHR5cGVpZCh2KS5uYW1lKCksIHNpemVvZihUKSk7Ci0jZWxzZQotICAgIGFzc2VydCAocmVtYWluaW5nKCkgPj0gc2l6ZW9mKFQpKTsKLSNlbmRpZgotICAgICpyZWludGVycHJldF9jYXN0PFQqPihpcG9zKCkpID0gdjsKLSAgICBTZXRQb3MgKHBvcygpICsgc2l6ZW9mKFQpKTsKLX0KLQotI2RlZmluZSBPU1RSRUFNX09QRVJBVE9SKHR5cGUpCVwKLWlubGluZSBvc3RyZWFtJglvcGVyYXRvcjw8IChvc3RyZWFtJiBvcywgdHlwZSB2KQl7IG9zLml3cml0ZSh2KTsgcmV0dXJuIChvcyk7IH0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1PU1RSRUFNX09QRVJBVE9SKFQqKQotT1NUUkVBTV9PUEVSQVRPUihpbnQ4X3QpCi1PU1RSRUFNX09QRVJBVE9SKHVpbnQ4X3QpCi1PU1RSRUFNX09QRVJBVE9SKGludDE2X3QpCi1PU1RSRUFNX09QRVJBVE9SKHVpbnQxNl90KQotT1NUUkVBTV9PUEVSQVRPUihpbnQzMl90KQotT1NUUkVBTV9PUEVSQVRPUih1aW50MzJfdCkKLU9TVFJFQU1fT1BFUkFUT1IoZmxvYXQpCi1PU1RSRUFNX09QRVJBVE9SKGRvdWJsZSkKLU9TVFJFQU1fT1BFUkFUT1Iod2NoYXJfdCkKLSNpZiBTSVpFX09GX0JPT0wgPT0gU0laRV9PRl9DSEFSCi1PU1RSRUFNX09QRVJBVE9SKGJvb2wpCi0jZWxzZQotaW5saW5lIG9zdHJlYW0mCW9wZXJhdG9yPDwgKG9zdHJlYW0mIG9zLCBib29sIHYpCi17IG9zLml3cml0ZSAodWludDhfdCh2KSk7IHJldHVybiAob3MpOyB9Ci0jZW5kaWYKLSNpZiBIQVZFX1RIUkVFX0NIQVJfVFlQRVMKLU9TVFJFQU1fT1BFUkFUT1IoY2hhcikKLSNlbmRpZgotI2lmIEhBVkVfSU5UNjRfVAotT1NUUkVBTV9PUEVSQVRPUihpbnQ2NF90KQotT1NUUkVBTV9PUEVSQVRPUih1aW50NjRfdCkKLSNlbmRpZgotI2lmIFNJWkVfT0ZfTE9ORyA9PSBTSVpFX09GX0lOVAotT1NUUkVBTV9PUEVSQVRPUihsb25nKQotT1NUUkVBTV9PUEVSQVRPUih1bnNpZ25lZCBsb25nKQotI2VuZGlmCi0jaWYgSEFWRV9MT05HX0xPTkcgJiYgKCFIQVZFX0lOVDY0X1QgfHwgU0laRV9PRl9MT05HX0xPTkcgPiA4KQotT1NUUkVBTV9PUEVSQVRPUihsb25nIGxvbmcpCi1PU1RSRUFNX09QRVJBVE9SKHVuc2lnbmVkIGxvbmcgbG9uZykKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9vZnN0cmVhbS5jcHAgYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9vZnN0cmVhbS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA5NDhhNGQzLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL29mc3RyZWFtLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDE2MyArMCwwIEBACi0vLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdXN0bCBsaWJyYXJ5LCBhbiBTVEwgaW1wbGVtZW50YXRpb24uCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDA1IGJ5IE1pa2UgU2hhcm92IDxtc2hhcm92QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLS8vIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCi0vLwotLy8gb2ZzdHJlYW0uY2MKLS8vCi0KLSNpbmNsdWRlICJvZnN0cmVhbS5oIgotI2luY2x1ZGUgInVzdHJpbmcuaCIKLSNpbmNsdWRlICJ1ZXhjZXB0aW9uLmgiCi0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0jaW5jbHVkZSA8ZXJybm8uaD4KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPHN0ZGFyZy5oPgotCi1uYW1lc3BhY2UgdXN0bCB7Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1pZnN0cmVhbSBjaW4gIChTVERJTl9GSUxFTk8pOwotb2ZzdHJlYW0gY291dCAoU1RET1VUX0ZJTEVOTyk7Ci1vZnN0cmVhbSBjZXJyIChTVERFUlJfRklMRU5PKTsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vLyBEZWZhdWx0IGNvbnN0cnVjdG9yLgotb2ZzdHJlYW06Om9mc3RyZWFtICh2b2lkKQotOiBvc3RyaW5nc3RyZWFtICgpLAotICBtX0ZpbGUgKCkKLXsKLSAgICByZXNlcnZlICgyNTUpOwotfQotCi0vLy8gQ29uc3RydWN0cyBhIHN0cmVhbSBmb3Igd3JpdGluZyB0byBccCBGZC4KLW9mc3RyZWFtOjpvZnN0cmVhbSAoaW50IEZkKQotOiBvc3RyaW5nc3RyZWFtICgpLAotICBtX0ZpbGUgKEZkKQotewotICAgIGNsZWFyIChtX0ZpbGUucmRzdGF0ZSgpKTsKLSAgICByZXNlcnZlICgyNTUpOwotfQotCi0vLy8gQ29uc3RydWN0cyBhIHN0cmVhbSBmb3Igd3JpdGluZyB0byBccCBmaWxlbmFtZS4KLW9mc3RyZWFtOjpvZnN0cmVhbSAoY29uc3QgY2hhciogZmlsZW5hbWUsIG9wZW5tb2RlIG1vZGUpCi06IG9zdHJpbmdzdHJlYW0gKCksCi0gIG1fRmlsZSAoZmlsZW5hbWUsIG1vZGUpCi17Ci0gICAgY2xlYXIgKG1fRmlsZS5yZHN0YXRlKCkpOwotfQotCi0vLy8gRGVmYXVsdCBkZXN0cnVjdG9yLgotb2ZzdHJlYW06On5vZnN0cmVhbSAodm9pZCkKLXsKLSNpZiBQTEFURk9STV9BTkRST0lECi0gICAgZmx1c2goKTsKLSNlbHNlIC8qICFQTEFURk9STV9BTkRST0lEICovCi0gICAgdHJ5IHsgZmx1c2goKTsgfSBjYXRjaCAoLi4uKSB7fQotI2VuZGlmCi19Ci0KLS8vLyBGbHVzaGVzIHRoZSBidWZmZXIgdG8gdGhlIGZpbGUuCi12b2lkIG9mc3RyZWFtOjpmbHVzaCAodm9pZCkKLXsKLSAgICB3aGlsZSAocG9zKCkgJiYgb3ZlcmZsb3cgKHJlbWFpbmluZygpKSk7Ci0gICAgbV9GaWxlLnN5bmMoKTsKLSAgICBjbGVhciAobV9GaWxlLnJkc3RhdGUoKSk7Ci19Ci0KLS8vLyBTZWVrcyB0byBccCBwIGJhc2VkIG9uIFxwIGQuCi12b2lkIG9mc3RyZWFtOjpzZWVrcCAob2ZmX3QgcCwgc2Vla2RpciBkKQotewotICAgIGZsdXNoKCk7Ci0gICAgbV9GaWxlLnNlZWtwIChwLCBkKTsKLSAgICBjbGVhciAobV9GaWxlLnJkc3RhdGUoKSk7Ci19Ci0KLS8vLyBDYWxsZWQgd2hlbiBtb3JlIGJ1ZmZlciBzcGFjZSAoXHAgbiBieXRlcykgaXMgbmVlZGVkLgotb2ZzdHJlYW06OnNpemVfdHlwZSBvZnN0cmVhbTo6b3ZlcmZsb3cgKHNpemVfdHlwZSBuKQotewotICAgIGlmIChlb2YoKSB8fCAobiA+IHJlbWFpbmluZygpICYmIG4gPCBjYXBhY2l0eSgpIC0gcG9zKCkpKQotCXJldHVybiAob3N0cmluZ3N0cmVhbTo6b3ZlcmZsb3cgKG4pKTsKLSAgICBzaXplX3R5cGUgYncgPSBtX0ZpbGUud3JpdGUgKGNkYXRhKCksIHBvcygpKTsKLSAgICBjbGVhciAobV9GaWxlLnJkc3RhdGUoKSk7Ci0gICAgZXJhc2UgKGJlZ2luKCksIGJ3KTsKLSAgICBpZiAocmVtYWluaW5nKCkgPCBuKQotCW9zdHJpbmdzdHJlYW06Om92ZXJmbG93IChuKTsKLSAgICByZXR1cm4gKHJlbWFpbmluZygpKTsKLX0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vLyBDb25zdHJ1Y3RzIGEgc3RyZWFtIHRvIHJlYWQgZnJvbSBccCBGZC4KLWlmc3RyZWFtOjppZnN0cmVhbSAoaW50IEZkKQotOiBpc3RyaW5nc3RyZWFtICgpLAotICBtX0J1ZmZlciAoMjU1KSwKLSAgbV9GaWxlIChGZCkKLXsKLSAgICBsaW5rIChtX0J1ZmZlci5kYXRhKCksIDBVKTsKLX0KLQotLy8vIENvbnN0cnVjdHMgYSBzdHJlYW0gdG8gcmVhZCBmcm9tIFxwIGZpbGVuYW1lLgotaWZzdHJlYW06Omlmc3RyZWFtIChjb25zdCBjaGFyKiBmaWxlbmFtZSwgb3Blbm1vZGUgbW9kZSkKLTogaXN0cmluZ3N0cmVhbSAoKSwKLSAgbV9CdWZmZXIgKDI1NSksCi0gIG1fRmlsZSAoZmlsZW5hbWUsIG1vZGUpCi17Ci0gICAgY2xlYXIgKG1fRmlsZS5yZHN0YXRlKCkpOwotICAgIGxpbmsgKG1fQnVmZmVyLmRhdGEoKSwgMFUpOwotfQotCi0vLy8gUmVhZHMgYXQgbGVhc3QgXHAgbiBtb3JlIGJ5dGVzIGFuZCByZXR1cm5zIGF2YWlsYWJsZSBieXRlcy4KLWlmc3RyZWFtOjpzaXplX3R5cGUgaWZzdHJlYW06OnVuZGVyZmxvdyAoc2l6ZV90eXBlIG4pCi17Ci0gICAgaWYgKGVvZigpKQotCXJldHVybiAoaXN0cmluZ3N0cmVhbTo6dW5kZXJmbG93IChuKSk7Ci0KLSAgICBjb25zdCBzc2l6ZV90IGZyZWVTcGFjZSA9IG1fQnVmZmVyLnNpemUoKSAtIHBvcygpOwotICAgIGNvbnN0IHNzaXplX3QgbmVlZGVkRnJlZVNwYWNlID0gbWF4IChuLCBtX0J1ZmZlci5zaXplKCkgLyAyKTsKLSAgICBjb25zdCBzaXplX3Qgb3VnaHRUb0VyYXNlID0gQWxpZ24gKG1heCAoMCwgbmVlZGVkRnJlZVNwYWNlIC0gZnJlZVNwYWNlKSk7Ci0gICAgY29uc3Qgc2l6ZV90IG5Ub0VyYXNlID0gbWluIChwb3MoKSwgb3VnaHRUb0VyYXNlKTsKLSAgICBtX0J1ZmZlci5tZW1saW5rOjplcmFzZSAobV9CdWZmZXIuYmVnaW4oKSwgblRvRXJhc2UpOwotICAgIGNvbnN0IHVvZmZfdCBvbGRQb3MgKHBvcygpIC0gblRvRXJhc2UpOwotCi0gICAgc2l6ZV90eXBlIGJyID0gb2xkUG9zOwotICAgIGlmIChtX0J1ZmZlci5zaXplKCkgLSBiciA8IG4pIHsKLQltX0J1ZmZlci5yZXNpemUgKGJyICsgbmVlZGVkRnJlZVNwYWNlKTsKLQlsaW5rIChtX0J1ZmZlci5kYXRhKCksIDBVKTsKLSAgICB9Ci0gICAgY291dC5mbHVzaCgpOwotCi0gICAgd2hpbGUgKGJyIC0gb2xkUG9zIDwgbiAmJiBtX0ZpbGUuZ29vZCgpKQotCWJyICs9IG1fRmlsZS5yZWFkc29tZSAobV9CdWZmZXIuYmVnaW4oKSArIGJyLCBtX0J1ZmZlci5zaXplKCkgLSBicik7Ci0gICAgY2xlYXIgKG1fRmlsZS5yZHN0YXRlKCkpOwotCi0gICAgbV9CdWZmZXJbYnJdID0gc3RyaW5nOjpjX1Rlcm1pbmF0b3I7Ci0gICAgbGluayAobV9CdWZmZXIuZGF0YSgpLCBicik7Ci0gICAgc2VlayAob2xkUG9zKTsKLSAgICByZXR1cm4gKHJlbWFpbmluZygpKTsKLX0KLQotLy8vIEZsdXNoZXMgdGhlIGlucHV0Lgotdm9pZCBpZnN0cmVhbTo6c3luYyAodm9pZCkKLXsKLSAgICBpc3RyaW5nc3RyZWFtOjpzeW5jKCk7Ci0gICAgdW5kZXJmbG93ICgwVSk7Ci0gICAgbV9GaWxlLnN5bmMoKTsKLSAgICBjbGVhciAobV9GaWxlLnJkc3RhdGUoKSk7Ci19Ci0KLS8vLyBTZWVrcyB0byBccCBwIGJhc2VkIG9uIFxwIGQuCi12b2lkIGlmc3RyZWFtOjpzZWVrZyAob2ZmX3QgcCwgc2Vla2RpciBkKQotewotICAgIG1fQnVmZmVyLmNsZWFyKCk7Ci0gICAgbGluayAobV9CdWZmZXIpOwotICAgIG1fRmlsZS5zZWVrZyAocCwgZCk7Ci0gICAgY2xlYXIgKG1fRmlsZS5yZHN0YXRlKCkpOwotfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotfSAvLyBuYW1lc3BhY2UgdXN0bAotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9vZnN0cmVhbS5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvb2ZzdHJlYW0uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzc4MDgzMy4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9vZnN0cmVhbS5oCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHVzdGwgbGlicmFyeSwgYW4gU1RMIGltcGxlbWVudGF0aW9uLgotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwNSBieSBNaWtlIFNoYXJvdiA8bXNoYXJvdkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0vLyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgotLy8KLS8vIG9mc3RyZWFtLmgKLS8vCi0KLSNpZm5kZWYgRkRPU1RSRUFNX0hfNUUyN0ZDM0Q1MzBCRjNDQTA0RDZDNzNGNTcwMEVFQ0MKLSNkZWZpbmUgRkRPU1RSRUFNX0hfNUUyN0ZDM0Q1MzBCRjNDQTA0RDZDNzNGNTcwMEVFQ0MKLQotI2luY2x1ZGUgInNpc3RyZWFtLmgiCi0jaW5jbHVkZSAic29zdHJlYW0uaCIKLSNpbmNsdWRlICJmc3RyZWFtLmgiCi0KLW5hbWVzcGFjZSB1c3RsIHsKLQotLy8vIFxjbGFzcyBvZnN0cmVhbSBmZG9zdHJlYW0uaCB1c3RsLmgKLS8vLyBcaW5ncm91cCBEZXZpY2VTdHJlYW1zCi0vLy8gXGJyaWVmIEEgc3RyaW5nIHN0cmVhbSB0aGF0IHdyaXRlcyB0byBhbiBmZC4gSW1wbGVtZW50cyBjb3V0IGFuZCBjZXJyLgotY2xhc3Mgb2ZzdHJlYW0gOiBwdWJsaWMgb3N0cmluZ3N0cmVhbSB7Ci1wdWJsaWM6Ci0JCQlvZnN0cmVhbSAodm9pZCk7Ci0gICAgZXhwbGljaXQJCW9mc3RyZWFtIChpbnQgRmQpOwotICAgIGV4cGxpY2l0CQlvZnN0cmVhbSAoY29uc3QgY2hhciogZmlsZW5hbWUsIG9wZW5tb2RlIG1vZGUgPSBvdXQpOwotICAgIHZpcnR1YWwJICAgICAgIH5vZnN0cmVhbSAodm9pZCk7Ci0gICAgaW5saW5lIHZvaWQJCW9wZW4gKGNvbnN0IGNoYXIqIGZpbGVuYW1lLCBvcGVubW9kZSBtb2RlID0gb3V0KSB7IG1fRmlsZS5vcGVuIChmaWxlbmFtZSwgbW9kZSk7IGNsZWFyIChtX0ZpbGUucmRzdGF0ZSgpKTsgfQotICAgIGlubGluZSB2b2lkCQljbG9zZSAodm9pZCkJCXsgbV9GaWxlLmNsb3NlKCk7IGNsZWFyIChtX0ZpbGUucmRzdGF0ZSgpKTsgfQotICAgIGlubGluZSBib29sCQlpc19vcGVuICh2b2lkKSBjb25zdAl7IHJldHVybiAobV9GaWxlLmlzX29wZW4oKSk7IH0KLSAgICBpbmxpbmUgaW9zdGF0ZQlleGNlcHRpb25zIChpb3N0YXRlIHYpCXsgb3N0cmluZ3N0cmVhbTo6ZXhjZXB0aW9ucyh2KTsgcmV0dXJuIChtX0ZpbGUuZXhjZXB0aW9ucyh2KSk7IH0KLSAgICBpbmxpbmUgdm9pZAkJc2V0c3RhdGUgKGlvc3RhdGUgdikJeyBvc3RyaW5nc3RyZWFtOjpzZXRzdGF0ZSh2KTsgbV9GaWxlLnNldHN0YXRlKHYpOyB9Ci0gICAgaW5saW5lIHZvaWQJCWNsZWFyIChpb3N0YXRlIHYgPSBnb29kYml0KQl7IG9zdHJpbmdzdHJlYW06OmNsZWFyKHYpOyBtX0ZpbGUuY2xlYXIodik7IH0KLSAgICBpbmxpbmUgb2ZmX3QJdGVsbHAgKHZvaWQpIGNvbnN0CQl7IHJldHVybiAobV9GaWxlLnRlbGxwKCkgKyBvc3RyaW5nc3RyZWFtOjp0ZWxscCgpKTsgfQotICAgIGlubGluZSBpbnQJCWZkICh2b2lkKSBjb25zdAkJCXsgcmV0dXJuIChtX0ZpbGUuZmQoKSk7IH0KLSAgICBpbmxpbmUgdm9pZAkJc3RhdCAoc3RydWN0IHN0YXQmIHJzKSBjb25zdAl7IG1fRmlsZS5zdGF0IChycyk7IH0KLSAgICBpbmxpbmUgdm9pZAkJc2V0X25vbmJsb2NrIChib29sIHYgPSB0cnVlKQl7IG1fRmlsZS5zZXRfbm9uYmxvY2sgKHYpOyB9Ci0gICAgaW5saW5lIGludAkJaW9jdGwgKGNvbnN0IGNoYXIqIHJuYW1lLCBpbnQgcmVxdWVzdCwgbG9uZyBhcmd1bWVudCA9IDApCXsgcmV0dXJuIChtX0ZpbGUuaW9jdGwgKHJuYW1lLCByZXF1ZXN0LCBhcmd1bWVudCkpOyB9Ci0gICAgaW5saW5lIGludAkJaW9jdGwgKGNvbnN0IGNoYXIqIHJuYW1lLCBpbnQgcmVxdWVzdCwgaW50IGFyZ3VtZW50KQkJeyByZXR1cm4gKG1fRmlsZS5pb2N0bCAocm5hbWUsIHJlcXVlc3QsIGFyZ3VtZW50KSk7IH0KLSAgICBpbmxpbmUgaW50CQlpb2N0bCAoY29uc3QgY2hhciogcm5hbWUsIGludCByZXF1ZXN0LCB2b2lkKiBhcmd1bWVudCkJCXsgcmV0dXJuIChtX0ZpbGUuaW9jdGwgKHJuYW1lLCByZXF1ZXN0LCBhcmd1bWVudCkpOyB9Ci0gICAgdm9pZAkJc2Vla3AgKG9mZl90IHAsIHNlZWtkaXIgZCA9IGJlZyk7Ci0gICAgdm9pZAkJZmx1c2ggKHZvaWQpOwotICAgIHZpcnR1YWwgc2l6ZV90eXBlCW92ZXJmbG93IChzaXplX3R5cGUgbiA9IDEpOwotcHJpdmF0ZToKLSAgICBmc3RyZWFtCQltX0ZpbGU7Ci19OwotCi0vLy8gXGNsYXNzIGlmc3RyZWFtIGZkb3N0cmVhbS5oIHVzdGwuaAotLy8vIFxpbmdyb3VwIERldmljZVN0cmVhbXMKLS8vLyBcYnJpZWYgQSBzdHJpbmcgc3RyZWFtIHRoYXQgcmVhZHMgZnJvbSBhbiBmZC4gSW1wbGVtZW50cyBjaW4uCi1jbGFzcyBpZnN0cmVhbSA6IHB1YmxpYyBpc3RyaW5nc3RyZWFtIHsKLXB1YmxpYzoKLQkJCWlmc3RyZWFtICh2b2lkKTsKLSAgICBleHBsaWNpdAkJaWZzdHJlYW0gKGludCBGZCk7Ci0gICAgZXhwbGljaXQJCWlmc3RyZWFtIChjb25zdCBjaGFyKiBmaWxlbmFtZSwgb3Blbm1vZGUgbW9kZSA9IGluKTsKLSAgICBpbmxpbmUgdm9pZAkJb3BlbiAoY29uc3QgY2hhciogZmlsZW5hbWUsIG9wZW5tb2RlIG1vZGUgPSBpbikJeyBtX0ZpbGUub3BlbiAoZmlsZW5hbWUsIG1vZGUpOyBjbGVhciAobV9GaWxlLnJkc3RhdGUoKSk7IH0KLSAgICBpbmxpbmUgdm9pZAkJY2xvc2UgKHZvaWQpCQl7IG1fRmlsZS5jbG9zZSgpOyBjbGVhciAobV9GaWxlLnJkc3RhdGUoKSk7IH0KLSAgICBpbmxpbmUgYm9vbAkJaXNfb3BlbiAodm9pZCkgY29uc3QJeyByZXR1cm4gKG1fRmlsZS5pc19vcGVuKCkpOyB9Ci0gICAgaW5saW5lIGlvc3RhdGUJZXhjZXB0aW9ucyAoaW9zdGF0ZSB2KQl7IGlzdHJpbmdzdHJlYW06OmV4Y2VwdGlvbnModik7IHJldHVybiAobV9GaWxlLmV4Y2VwdGlvbnModikpOyB9Ci0gICAgaW5saW5lIHZvaWQJCXNldHN0YXRlIChpb3N0YXRlIHYpCXsgaXN0cmluZ3N0cmVhbTo6c2V0c3RhdGUodik7IG1fRmlsZS5zZXRzdGF0ZSh2KTsgfQotICAgIGlubGluZSB2b2lkCQljbGVhciAoaW9zdGF0ZSB2ID0gZ29vZGJpdCkJeyBpc3RyaW5nc3RyZWFtOjpjbGVhcih2KTsgbV9GaWxlLmNsZWFyKHYpOyB9Ci0gICAgaW5saW5lIG9mZl90CXRlbGxnICh2b2lkKSBjb25zdAkJeyByZXR1cm4gKG1fRmlsZS50ZWxsZygpIC0gcmVtYWluaW5nKCkpOyB9Ci0gICAgaW5saW5lIGludAkJZmQgKHZvaWQpIGNvbnN0CQkJeyByZXR1cm4gKG1fRmlsZS5mZCgpKTsgfQotICAgIGlubGluZSB2b2lkCQlzdGF0IChzdHJ1Y3Qgc3RhdCYgcnMpIGNvbnN0CXsgbV9GaWxlLnN0YXQgKHJzKTsgfQotICAgIGlubGluZSB2b2lkCQlzZXRfbm9uYmxvY2sgKGJvb2wgdiA9IHRydWUpCXsgbV9GaWxlLnNldF9ub25ibG9jayAodik7IH0KLSAgICBpbmxpbmUgaW50CQlpb2N0bCAoY29uc3QgY2hhciogcm5hbWUsIGludCByZXF1ZXN0LCBsb25nIGFyZ3VtZW50ID0gMCkJeyByZXR1cm4gKG1fRmlsZS5pb2N0bCAocm5hbWUsIHJlcXVlc3QsIGFyZ3VtZW50KSk7IH0KLSAgICBpbmxpbmUgaW50CQlpb2N0bCAoY29uc3QgY2hhciogcm5hbWUsIGludCByZXF1ZXN0LCBpbnQgYXJndW1lbnQpCQl7IHJldHVybiAobV9GaWxlLmlvY3RsIChybmFtZSwgcmVxdWVzdCwgYXJndW1lbnQpKTsgfQotICAgIGlubGluZSBpbnQJCWlvY3RsIChjb25zdCBjaGFyKiBybmFtZSwgaW50IHJlcXVlc3QsIHZvaWQqIGFyZ3VtZW50KQkJeyByZXR1cm4gKG1fRmlsZS5pb2N0bCAocm5hbWUsIHJlcXVlc3QsIGFyZ3VtZW50KSk7IH0KLSAgICB2b2lkCQlzZWVrZyAob2ZmX3QgcCwgc2Vla2RpciBkID0gYmVnKTsKLSAgICB2b2lkCQlzeW5jICh2b2lkKTsKLSAgICB2aXJ0dWFsIHNpemVfdHlwZQl1bmRlcmZsb3cgKHNpemVfdHlwZSBuID0gMSk7Ci1wcml2YXRlOgotICAgIHN0cmluZwkJbV9CdWZmZXI7Ci0gICAgZnN0cmVhbQkJbV9GaWxlOwotfTsKLQotZXh0ZXJuIG9mc3RyZWFtIGNvdXQsIGNlcnI7Ci1leHRlcm4gaWZzdHJlYW0gY2luOwotCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9zaW1kLmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9zaW1kLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1MGVmYzIuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvc2ltZC5oCisrKyAvZGV2L251bGwKQEAgLTEsNDY1ICswLDAgQEAKLS8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB1c3RsIGxpYnJhcnksIGFuIFNUTCBpbXBsZW1lbnRhdGlvbi4KLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgYnkgTWlrZSBTaGFyb3YgPG1zaGFyb3ZAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotLy8gVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KLS8vCi0vLy8gXGZpbGUgc2ltZC5oCi0vLy8gXGJyaWVmIFNJTUQtdHlwZSBhbGdvcml0aG1zLCB3aXRoIGhhcmR3YXJlIGFjY2VsZXJhdGlvbiwgaWYgYXZhaWxhYmxlLgotLy8vCi0vLy8gQWxsIGFsZ29yaXRobXMgYXJlIGNvbnRhaW5lci1iYXNlZCBiZWNhdXNlIGl0ZXJhdG9yIHN5bnRheCBpcyBqdXN0IHRvbwotLy8vIGRhbW4gdmVyYm9zZSBhbmQgYmVjYXVzZSB0aGUgc3BlY2lhbGl6YXRpb25zIG5lZWQgdG8gYmUgYWJsZSB0byB0ZWxsCi0vLy8gaG93IG1hbnkgZWxlbWVudHMgYXJlIGluIHRoZSBjb250YWluZXIgaW4gb3JkZXIgdG8gY2hvb3NlIHByb3BlciBTSU1ECi0vLy8gaW5zdHJ1Y3Rpb24gc2V0IChpLmUuOiA0IGZsb2F0cyBzZWxlY3QgU1NFLCB3aGlsZSAyIGZsb2F0cyBzZWxlY3QgM2ROb3chKQotLy8vIFNwZWNpYWxpemF0aW9ucyBhcmUgb25seSBmb3IgdGhlIHR1cGxlIHRlbXBsYXRlIGJlY2F1c2UgdGhlIGNvbnRhaW5lcgotLy8vIG11c3QgYmUgb2YgYSBmaXhlZCBhbmQgY29tcGlsZS10aW1lLWtub3duIHNpemUgZm9yIHRoZSBjb21waWxlciB0byBiZQotLy8vIGFibGUgdG8gY2hvb3NlIHRoZSBzcGVjaWFsaXphdGlvbi4KLS8vLwotCi0jaWZuZGVmIFNJTURfSF8zOUJFMkQ5NzBERjRCRDAwNTA4Q0NGRkI0ODI0OTZGOQotI2RlZmluZSBTSU1EX0hfMzlCRTJEOTcwREY0QkQwMDUwOENDRkZCNDgyNDk2RjkKLQotI2luY2x1ZGUgInVhc3NlcnQuaCIKLSNpbmNsdWRlICJ1bGltaXRzLmgiCi0jaWYgSEFWRV9NQVRIX0gKLSAgICAjaW5jbHVkZSA8bWF0aC5oPgotI2VuZGlmCi0KLSNpZiBQTEFURk9STV9BTkRST0lECi0jaW5jbHVkZSA8c3RkaW8uaD4KLSN1bmRlZiBDUFVfSEFTX01NWAotI2VuZGlmCi0KLW5hbWVzcGFjZSB1c3RsIHsKLW5hbWVzcGFjZSBzaW1kIHsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBHZW5lcmljIGFsZ29yaXRobXMKLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLy8gQXBwbGllcyBccCBvcCB0byBlYWNoIGVsZW1lbnQgaW4gXHAgb3AxLgotdGVtcGxhdGUgPHR5cGVuYW1lIEN0ciwgdHlwZW5hbWUgVW5hcnlPcGVyYXRpb24+Ci1pbmxpbmUgdm9pZCBwYWNrb3AgKEN0ciYgb3AxLCBVbmFyeU9wZXJhdGlvbiBvcCkKLXsKLSAgICBmb3JlYWNoICh0eXBlbmFtZSBDdHI6Oml0ZXJhdG9yLCBpLCBvcDEpCi0Jb3AgKCppKTsKLX0KLQotLy8vIEFwcGxpZXMgXHAgb3AgdG8gZWFjaCBlbGVtZW50IGluIFxwIG9wMSBhbmQgXHAgb3AyIGFuZCBzdG9yZXMgaW4gXHAgb3AyLgotdGVtcGxhdGUgPHR5cGVuYW1lIEN0ciwgdHlwZW5hbWUgQmluYXJ5T3BlcmF0aW9uPgotaW5saW5lIHZvaWQgcGFja29wIChjb25zdCBDdHImIG9wMSwgQ3RyJiBvcDIsIEJpbmFyeU9wZXJhdGlvbiBvcCkKLXsKLSAgICBhc3NlcnQgKG9wMi5zaXplKCkgPD0gb3AxLnNpemUoKSk7Ci0gICAgdHlwZW5hbWUgQ3RyOjpjb25zdF9pdGVyYXRvciBpMSAob3AxLmJlZ2luKCkpOwotICAgIHR5cGVuYW1lIEN0cjo6aXRlcmF0b3IgaTIgKG9wMi5iZWdpbigpKTsKLSAgICBmb3IgKDsgaTIgIT0gb3AyLmVuZCgpOyArK2kxLCArK2kyKQotCSppMiA9IG9wICgqaTIsICppMSk7Ci19Ci0KLS8vLyBBcHBsaWVzIFxwIG9wIHRvIGNvcnJlc3BvbmRpbmcgZWxlbWVudHMgaW4gXHAgb3AxIGFuZCBccCBvcDIgYW5kIHN0b3JlcyBpbiBccCByZXN1bHQuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ3RyLCB0eXBlbmFtZSBCaW5hcnlPcGVyYXRpb24+Ci1pbmxpbmUgdm9pZCBwYWNrb3AgKGNvbnN0IEN0ciYgb3AxLCBjb25zdCBDdHImIG9wMiwgQ3RyJiByZXN1bHQsIEJpbmFyeU9wZXJhdGlvbiBvcCkKLXsKLSAgICBhc3NlcnQgKG9wMS5zaXplKCkgPD0gb3AyLnNpemUoKSAmJiBvcDEuc2l6ZSgpIDw9IHJlc3VsdC5zaXplKCkpOwotICAgIHBhc3NpZ24gKG9wMSwgcmVzdWx0KTsKLSAgICBwYWNrb3AgKG9wMiwgcmVzdWx0KTsKLX0KLQotLy8vIENvcGllcyBccCBvcDEgaW50byBccCByZXN1bHQuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ3RyPgotaW5saW5lIHZvaWQgcGFzc2lnbiAoY29uc3QgQ3RyJiBvcDEsIEN0ciYgcmVzdWx0KQotewotICAgIGFzc2VydCAob3AxLnNpemUoKSA8PSByZXN1bHQuc2l6ZSgpKTsKLSAgICB0eXBlbmFtZSBDdHI6Oml0ZXJhdG9yIGQgKHJlc3VsdC5iZWdpbigpKTsKLSAgICBmb3JlYWNoICh0eXBlbmFtZSBDdHI6OmNvbnN0X2l0ZXJhdG9yLCBzLCBvcDEpCi0JKmQrKyA9ICpzOwotfQotCi0vLy8gQ29waWVzIFxwIHJlc3VsdC5zaXplKCkgZWxlbWVudHMgZnJvbSBccCBvcDEgdG8gXHAgcmVzdWx0LgotdGVtcGxhdGUgPHR5cGVuYW1lIEN0cj4KLWlubGluZSB2b2lkIGlwYXNzaWduICh0eXBlbmFtZSBDdHI6OmNvbnN0X2l0ZXJhdG9yIG9wMSwgQ3RyJiByZXN1bHQpCi17Ci0gICAgZm9yZWFjaCAodHlwZW5hbWUgQ3RyOjppdGVyYXRvciwgZCwgcmVzdWx0KQotCSpkID0gKm9wMSsrOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ3RyMSwgdHlwZW5hbWUgQ3RyMiwgdHlwZW5hbWUgQ29udmVydEZ1bmN0aW9uPgotaW5saW5lIHZvaWQgcGNvbnZlcnQgKGNvbnN0IEN0cjEmIG9wMSwgQ3RyMiYgb3AyLCBDb252ZXJ0RnVuY3Rpb24gZikKLXsKLSAgICBhc3NlcnQgKG9wMS5zaXplKCkgPD0gb3AyLnNpemUoKSk7Ci0gICAgdHlwZW5hbWUgQ3RyMTo6Y29uc3RfaXRlcmF0b3IgaTEgKG9wMS5iZWdpbigpKTsKLSAgICB0eXBlbmFtZSBDdHIyOjppdGVyYXRvciBpMiAob3AyLmJlZ2luKCkpOwotICAgIGZvciAoOyBpMSAhPSBvcDEuZW5kKCk7ICsraTEsICsraTIpCi0JKmkyID0gZiAoKmkxKTsKLX0KLQotLy8gRnVuY3Rpb25vaWRzIGZvciBTSU1EIG9wZXJhdGlvbnMsIGxpa2Ugc2F0dXJhdGlvbiBhcml0aG1ldGljLCBzaGlmdHMsIGV0Yy4KLVNURF9CSU5BUllfRlVOQ1RPUiAoZnBhZGRzLCBULCAoKGIgPiBudW1lcmljX2xpbWl0czxUPjo6bWF4KCkgLSBhKSA/IG51bWVyaWNfbGltaXRzPFQ+OjptYXgoKSA6IGEgKyBiKSkKLVNURF9CSU5BUllfRlVOQ1RPUiAoZnBzdWJzLCBULCAoKGEgPCBudW1lcmljX2xpbWl0czxUPjo6bWluKCkgKyBiKSA/IG51bWVyaWNfbGltaXRzPFQ+OjptaW4oKSA6IGEgLSBiKSkKLVNURF9CSU5BUllfRlVOQ1RPUiAoZnBzaGwsICBULCAoYSA8PCBiKSkKLVNURF9CSU5BUllfRlVOQ1RPUiAoZnBzaHIsICBULCAoYSA+PiBiKSkKLVNURF9CSU5BUllfRlVOQ1RPUiAoZnBtaW4sICBULCAobWluIChhLCBiKSkpCi1TVERfQklOQVJZX0ZVTkNUT1IgKGZwbWF4LCAgVCwgKG1heCAoYSwgYikpKQotU1REX0JJTkFSWV9GVU5DVE9SIChmcGF2ZywgIFQsICgoYSArIGIgKyAxKSAvIDIpKQotU1REX0NPTlZFUlNJT05fRlVOQ1RPUiAoZmNhc3QsIChEKGEpKSkKLSNpZiBIQVZFX01BVEhfSAotU1REX1VOQVJZX0ZVTkNUT1IgKGZwcmVjaXByb2NhbCxULCAoMSAvIGEpKQotU1REX1VOQVJZX0ZVTkNUT1IgKGZwc3FydCwJVCwgKHJlc2V0X21teCgpLCBUIChzcXJ0IChhKSkpKQotU1REX1VOQVJZX0ZVTkNUT1IgKGZwcmVjaXBzcXJ0LAlULCAocmVzZXRfbW14KCksIDEgLyBUKHNxcnQgKGEpKSkpCi1TVERfVU5BUllfRlVOQ1RPUiAoZnNpbiwJVCwgKHJlc2V0X21teCgpLCBUIChzaW4gKGEpKSkpCi1TVERfVU5BUllfRlVOQ1RPUiAoZmNvcywJVCwgKHJlc2V0X21teCgpLCBUIChjb3MgKGEpKSkpCi1TVERfVU5BUllfRlVOQ1RPUiAoZnRhbiwJVCwgKHJlc2V0X21teCgpLCBUICh0YW4gKGEpKSkpCi0jaWYgSEFWRV9SSU5URgotU1REX0NPTlZFUlNJT05fRlVOQ1RPUiAoZnJvdW5kLCAocmVzZXRfbW14KCksIEQocmludGYoYSkpKSkKLSNlbHNlCi1TVERfQ09OVkVSU0lPTl9GVU5DVE9SIChmcm91bmQsIChyZXNldF9tbXgoKSwgRChyaW50KGEpKSkpCi0jZW5kaWYKLXRlbXBsYXRlIDw+IGlubGluZSBpbnQzMl90IGZyb3VuZDxkb3VibGUsaW50MzJfdD46Om9wZXJhdG9yKCkoY29uc3QgZG91YmxlJiBhKSBjb25zdCB7IHJlc2V0X21teCgpOyByZXR1cm4gKGludDMyX3QocmludChhKSkpOyB9Ci0jZW5kaWYKLXRlbXBsYXRlIDw+IGlubGluZSBmbG9hdCBmcGF2ZzxmbG9hdD46Om9wZXJhdG9yKCkoY29uc3QgZmxvYXQmIGEsIGNvbnN0IGZsb2F0JiBiKSBjb25zdCB7IHJldHVybiAoKGEgKyBiKSAvIDIpOyB9Ci10ZW1wbGF0ZSA8PiBpbmxpbmUgZG91YmxlIGZwYXZnPGRvdWJsZT46Om9wZXJhdG9yKCkoY29uc3QgZG91YmxlJiBhLCBjb25zdCBkb3VibGUmIGIpIGNvbnN0IHsgcmV0dXJuICgoYSArIGIpIC8gMik7IH0KLQotI2RlZmluZSBTSU1EX1BBQ0tFRE9QMShuYW1lLCBvcGVyYXRpb24pCQlcCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ3RyPgkJCQlcCi1pbmxpbmUgdm9pZCBuYW1lIChDdHImIG9wMSkJCQlcCi17CQkJCQkJXAotICAgIHR5cGVkZWYgdHlwZW5hbWUgQ3RyOjp2YWx1ZV90eXBlIHZhbHVlX3Q7CVwKLSAgICBwYWNrb3AgKG9wMSwgb3BlcmF0aW9uPHZhbHVlX3Q+KCkpOwkJXAotfQotI2RlZmluZSBTSU1EX1BBQ0tFRE9QMihuYW1lLCBvcGVyYXRpb24pCQlcCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ3RyPgkJCQlcCi1pbmxpbmUgdm9pZCBuYW1lIChjb25zdCBDdHImIG9wMSwgQ3RyJiBvcDIpCVwKLXsJCQkJCQlcCi0gICAgdHlwZWRlZiB0eXBlbmFtZSBDdHI6OnZhbHVlX3R5cGUgdmFsdWVfdDsJXAotICAgIHBhY2tvcCAob3AxLCBvcDIsIG9wZXJhdGlvbjx2YWx1ZV90PigpKTsJXAotfQotI2RlZmluZSBTSU1EX1BBQ0tFRE9QMyhuYW1lLCBvcGVyYXRpb24pCQkJXAotdGVtcGxhdGUgPHR5cGVuYW1lIEN0cj4JCQkJCVwKLWlubGluZSB2b2lkIG5hbWUgKGNvbnN0IEN0ciYgb3AxLCBjb25zdCBDdHImIG9wMiwgQ3RyJiByZXN1bHQpCVwKLXsJCQkJCQkJXAotICAgIHR5cGVkZWYgdHlwZW5hbWUgQ3RyOjp2YWx1ZV90eXBlIHZhbHVlX3Q7CQlcCi0gICAgcGFja29wIChvcDEsIG9wMiwgcmVzdWx0LCBvcGVyYXRpb248dmFsdWVfdD4oKSk7CVwKLX0KLSNkZWZpbmUgU0lNRF9TSU5HTEVPUDEobmFtZSwgb3BlcmF0aW9uKQkJXAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CQkJCVwKLWlubGluZSBUIG5hbWUgKFQgb3ApCQkJCVwKLXsJCQkJCQlcCi0gICAgb3BlcmF0aW9uPFQ+IG9iajsJCQkJXAotICAgIHJldHVybiAob2JqKG9wKSk7CQkJCVwKLX0KLSNkZWZpbmUgU0lNRF9DT05WRVJUT1AobmFtZSwgb3BlcmF0aW9uKQkJXAotdGVtcGxhdGUgPHR5cGVuYW1lIEN0cjEsIHR5cGVuYW1lIEN0cjI+CQlcCi1pbmxpbmUgdm9pZCBuYW1lIChjb25zdCBDdHIxJiBvcDEsIEN0cjImIG9wMikJXAotewkJCQkJCVwKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEN0cjE6OnZhbHVlX3R5cGUgdmFsdWUxX3Q7CVwKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEN0cjI6OnZhbHVlX3R5cGUgdmFsdWUyX3Q7CVwKLSAgICBwY29udmVydCAob3AxLCBvcDIsIG9wZXJhdGlvbjx2YWx1ZTFfdCwgdmFsdWUyX3Q+KCkpO1wKLX0KLQotU0lNRF9QQUNLRURPUDIgKHBhZGQsIHBsdXMpCi1TSU1EX1BBQ0tFRE9QMiAocHN1YiwgbWludXMpCi1TSU1EX1BBQ0tFRE9QMiAocG11bCwgbXVsdGlwbGllcykKLVNJTURfUEFDS0VET1AyIChwZGl2LCBkaXZpZGVzKQotU0lNRF9QQUNLRURPUDIgKHBhbmQsIGJpdHdpc2VfYW5kKQotU0lNRF9QQUNLRURPUDIgKHBvciwgYml0d2lzZV9vcikKLVNJTURfUEFDS0VET1AyIChweG9yLCBiaXR3aXNlX3hvcikKLVNJTURfUEFDS0VET1AyIChwc2hsLCBmcHNobCkKLVNJTURfUEFDS0VET1AyIChwc2hyLCBmcHNocikKLVNJTURfUEFDS0VET1AyIChwc3VicywgZnBzdWJzKQotU0lNRF9QQUNLRURPUDIgKHBtaW4sIGZwbWluKQotU0lNRF9QQUNLRURPUDIgKHBtYXgsIGZwbWF4KQotU0lNRF9QQUNLRURPUDIgKHBhdmcsIGZwYXZnKQotCi1TSU1EX1BBQ0tFRE9QMyAocGFkZCwgcGx1cykKLVNJTURfUEFDS0VET1AzIChwc3ViLCBtaW51cykKLVNJTURfUEFDS0VET1AzIChwbXVsLCBtdWx0aXBsaWVzKQotU0lNRF9QQUNLRURPUDMgKHBkaXYsIGRpdmlkZXMpCi1TSU1EX1BBQ0tFRE9QMyAocGFuZCwgYml0d2lzZV9hbmQpCi1TSU1EX1BBQ0tFRE9QMyAocG9yLCBiaXR3aXNlX29yKQotU0lNRF9QQUNLRURPUDMgKHB4b3IsIGJpdHdpc2VfeG9yKQotU0lNRF9QQUNLRURPUDMgKHBzaGwsIGZwc2hsKQotU0lNRF9QQUNLRURPUDMgKHBzaHIsIGZwc2hyKQotU0lNRF9QQUNLRURPUDMgKHBhZGRzLCBmcGFkZHMpCi1TSU1EX1BBQ0tFRE9QMyAocHN1YnMsIGZwc3VicykKLVNJTURfUEFDS0VET1AzIChwbWluLCBmcG1pbikKLVNJTURfUEFDS0VET1AzIChwbWF4LCBmcG1heCkKLVNJTURfUEFDS0VET1AzIChwYXZnLCBmcGF2ZykKLQotI2lmIEhBVkVfTUFUSF9ICi1TSU1EX1BBQ0tFRE9QMSAocHJlY2lwLCBmcHJlY2lwcm9jYWwpCi1TSU1EX1BBQ0tFRE9QMSAocHNxcnQsIGZwc3FydCkKLVNJTURfUEFDS0VET1AxIChwcmVjaXBzcXJ0LCBmcHJlY2lwc3FydCkKLVNJTURfUEFDS0VET1AxIChwc2luLCBmc2luKQotU0lNRF9QQUNLRURPUDEgKHBjb3MsIGZjb3MpCi1TSU1EX1BBQ0tFRE9QMSAocHRhbiwgZnRhbikKLQotU0lNRF9TSU5HTEVPUDEgKHNyZWNpcCwgZnByZWNpcHJvY2FsKQotU0lNRF9TSU5HTEVPUDEgKHNzcXJ0LCBmcHNxcnQpCi1TSU1EX1NJTkdMRU9QMSAoc3JlY2lwc3FydCwgZnByZWNpcHNxcnQpCi1TSU1EX1NJTkdMRU9QMSAoc3NpbiwgZnNpbikKLVNJTURfU0lOR0xFT1AxIChzY29zLCBmY29zKQotU0lNRF9TSU5HTEVPUDEgKHN0YW4sIGZ0YW4pCi0KLVNJTURfQ09OVkVSVE9QIChwcm91bmQsIGZyb3VuZCkKLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBpbnQzMl90IHNyb3VuZCAoVCBvcCkgeyBmcm91bmQ8VCxpbnQzMl90PiBvYmo7IHJldHVybiAob2JqIChvcCkpOyB9Ci0jZW5kaWYKLQotI3VuZGVmIFNJTURfU0lOR0xFT1AxCi0jdW5kZWYgU0lNRF9QQUNLRURPUDMKLSN1bmRlZiBTSU1EX1BBQ0tFRE9QMgotI3VuZGVmIFNJTURfUEFDS0VET1AxCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gVmVjdG9yIHR5cGVzIHRvIGNhc3QgdHVwbGUgZGF0YSB0bwotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZiBIQVZFX1ZFQ1RPUl9FWFRFTlNJT05TICYmIF9fR05VQ19fID49IDQKLSNkZWZpbmUgVkVDVE9SX0FUVFJJQlVURShtb2RlLHZzKQlfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZSh2cykpKQotI2Vsc2UKLSNkZWZpbmUgVkVDVE9SX0FUVFJJQlVURShtb2RlLHZzKQotI2VuZGlmCi10eXBlZGVmIHVpbnQ4X3QgdjhxaV90IFZFQ1RPUl9BVFRSSUJVVEUgKFY4UUksOCk7Ci10eXBlZGVmIHVpbnQxNl90IHY0aGlfdCBWRUNUT1JfQVRUUklCVVRFIChWNEhJLDgpOwotdHlwZWRlZiB1aW50MTZfdCB2OGhpX3QgVkVDVE9SX0FUVFJJQlVURSAoVjhISSwxNik7Ci10eXBlZGVmIHVpbnQzMl90IHYyc2lfdCBWRUNUT1JfQVRUUklCVVRFIChWMlNJLDgpOwotdHlwZWRlZiB1aW50MzJfdCB2NHNpX3QgVkVDVE9SX0FUVFJJQlVURSAoVjRTSSwxNik7Ci0jaWYgSEFWRV9JTlQ2NF9UCi10eXBlZGVmIHVpbnQ2NF90IHYxZGlfdCBWRUNUT1JfQVRUUklCVVRFIChWMURJLDgpOwotI2VuZGlmCi10eXBlZGVmIGZsb2F0IHYyc2ZfdCBWRUNUT1JfQVRUUklCVVRFIChWMlNGLDgpOwotdHlwZWRlZiBmbG9hdCB2NHNmX3QgVkVDVE9SX0FUVFJJQlVURSAoVjRTRiwxNik7Ci10eXBlZGVmIGRvdWJsZSB2MmRmX3QgVkVDVE9SX0FUVFJJQlVURSAoVjJERiwxNik7Ci0jdW5kZWYgVkVDVE9SX0FUVFJJQlVURQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIEhhcmR3YXJlIGFjY2VsZXJhdGVkIHNwZWNpYWxpemF0aW9ucwotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNkZWZpbmUgU0lNRF9QS09QMl9TUEVDKG4sIHR5cGUsIG9wdHlwZSkJXAotdGVtcGxhdGUgPD4JCQkJCVwKLWlubGluZSB2b2lkIHBhY2tvcCAoY29uc3QgdHVwbGU8bix0eXBlPiYgb2luLCB0dXBsZTxuLHR5cGU+JiBvb3V0LCBvcHR5cGU8dHlwZT4pCi0jZGVmaW5lIFNJTURfUEFTU0lHTl9TUEVDKG4sIHR5cGUpCQlcCi10ZW1wbGF0ZSA8PgkJCQkJXAotaW5saW5lIHZvaWQgcGFzc2lnbiAoY29uc3QgdHVwbGU8bix0eXBlPiYgb2luLCB0dXBsZTxuLHR5cGU+JiBvb3V0KQotI2RlZmluZSBTSU1EX0lQQVNTSUdOX1NQRUMobiwgdHlwZSkJCVwKLXRlbXBsYXRlIDw+CQkJCQlcCi1pbmxpbmUgdm9pZCBpcGFzc2lnbiAodHVwbGU8bix0eXBlPjo6Y29uc3RfaXRlcmF0b3Igb2luLCB0dXBsZTxuLHR5cGU+JiBvb3V0KQotI2RlZmluZSBTSU1EX0NPTlZFUlRfU1BFQyhuLCB0eXBlMSwgdHlwZTIsIG9wdHlwZSkJXAotdGVtcGxhdGUgPD4JCQkJCVwKLWlubGluZSB2b2lkIHBjb252ZXJ0IChjb25zdCB0dXBsZTxuLHR5cGUxPiYgb2luLCB0dXBsZTxuLHR5cGUyPiYgb291dCwgb3B0eXBlPHR5cGUxLHR5cGUyPikKLQotI2lmIENQVV9IQVNfTU1YCi0jZGVmaW5lIFNURF9NTVhfQVJHUwkiPW0iKG9vdXRbMF0pIDogIm0iKG9pblswXSkgOiAibW0wIiwgInN0IiwgIm1lbW9yeSIKLSNkZWZpbmUgREJMX01NWF9BUkdTCSI9bSIob291dFswXSksICI9bSIob291dFsyXSkgOiAibSIob2luWzBdKSwgIm0iKG9pblsyXSkgOiAibW0wIiwgIm1tMSIsICJzdCIsICJzdCgxKSIsICJtZW1vcnkiCi0jZGVmaW5lIE1NWF9QS09QMl9TUEVDKG4sdHlwZSxvcHR5cGUsaW5zdHJ1Y3Rpb24pCVwKLVNJTURfUEtPUDJfU1BFQyhuLHR5cGUsb3B0eXBlKQkJXAoteyBhc20gKCJtb3ZxICUwLCAlJW1tMFxuXHQiICNpbnN0cnVjdGlvbiAiICUxLCAlJW1tMFxuXHRtb3ZxICUlbW0wLCAlMCIgOiBTVERfTU1YX0FSR1MpOyByZXNldF9tbXgoKTsgfQotI2RlZmluZSBNTVhfREJMX1BLT1AyX1NQRUMobix0eXBlLG9wdHlwZSxpbnN0cnVjdGlvbikJXAotU0lNRF9QS09QMl9TUEVDKG4sdHlwZSxvcHR5cGUpCQlcCi17IGFzbSAoIm1vdnEgJTAsICUlbW0wXG5cdG1vdnEgJTEsICUlbW0xXG5cdCIgI2luc3RydWN0aW9uICIgJTIsICUlbW0wXG5cdCIgI2luc3RydWN0aW9uICIgJTMsICUlbW0xXG5cdG1vdnEgJSVtbTAsICUwXG5cdG1vdnEgJSVtbTEsICUxIiA6IERCTF9NTVhfQVJHUyk7IHJlc2V0X21teCgpOyB9Ci0jZGVmaW5lIE1NWF9QQVNTSUdOX1NQRUMobix0eXBlKQlcCi1TSU1EX1BBU1NJR05fU1BFQyhuLHR5cGUpCQlcCi17IGFzbSAoIm1vdnEgJTEsICUlbW0wXG5cdG1vdnEgJSVtbTAsICUwIiA6IFNURF9NTVhfQVJHUyk7IHJlc2V0X21teCgpOyB9Ci0jZGVmaW5lIE1NWF9EQkxfUEFTU0lHTl9TUEVDKG4sdHlwZSkJXAotU0lNRF9QQVNTSUdOX1NQRUMobix0eXBlKQkJXAoteyBhc20gKCJtb3ZxICUyLCAlJW1tMFxuXHRtb3ZxICUzLCAlJW1tMVxuXHRtb3ZxICUlbW0wLCAlMFxuXHRtb3ZxICUlbW0xLCAlMSIgOiBEQkxfTU1YX0FSR1MpOyByZXNldF9tbXgoKTsgfQotI2RlZmluZSBNTVhfSVBBU1NJR05fU1BFQyhuLHR5cGUpCVwKLVNJTURfSVBBU1NJR05fU1BFQyhuLHR5cGUpCQlcCi17IGFzbSAoIm1vdnEgJTEsICUlbW0wXG5cdG1vdnEgJSVtbTAsICUwIiA6IFNURF9NTVhfQVJHUyk7IHJlc2V0X21teCgpOyB9Ci0jZGVmaW5lIE1NWF9EQkxfSVBBU1NJR05fU1BFQyhuLHR5cGUpCVwKLVNJTURfSVBBU1NJR05fU1BFQyhuLHR5cGUpCQlcCi17IGFzbSAoIm1vdnEgJTIsICUlbW0wXG5cdG1vdnEgJTMsICUlbW0xXG5cdG1vdnEgJSVtbTAsICUwXG5cdG1vdnEgJSVtbTEsICUxIiA6IERCTF9NTVhfQVJHUyk7IHJlc2V0X21teCgpOyB9Ci0KLU1NWF9QQVNTSUdOX1NQRUMoOCx1aW50OF90KQotTU1YX1BLT1AyX1NQRUMoOCx1aW50OF90LHBsdXMscGFkZGIpCi1NTVhfUEtPUDJfU1BFQyg4LHVpbnQ4X3QsbWludXMscHN1YmIpCi1NTVhfUEtPUDJfU1BFQyg4LHVpbnQ4X3QsYml0d2lzZV9hbmQscGFuZCkKLU1NWF9QS09QMl9TUEVDKDgsdWludDhfdCxiaXR3aXNlX29yLHBvcikKLU1NWF9QS09QMl9TUEVDKDgsdWludDhfdCxiaXR3aXNlX3hvcixweG9yKQotTU1YX1BLT1AyX1NQRUMoOCx1aW50OF90LGZwYWRkcyxwYWRkdXNiKQotTU1YX1BLT1AyX1NQRUMoOCx1aW50OF90LGZwc3Vicyxwc3VidXNiKQotCi1NTVhfUEFTU0lHTl9TUEVDKDgsaW50OF90KQotTU1YX1BLT1AyX1NQRUMoOCxpbnQ4X3QscGx1cyxwYWRkYikKLU1NWF9QS09QMl9TUEVDKDgsaW50OF90LG1pbnVzLHBzdWJiKQotTU1YX1BLT1AyX1NQRUMoOCxpbnQ4X3QsYml0d2lzZV9hbmQscGFuZCkKLU1NWF9QS09QMl9TUEVDKDgsaW50OF90LGJpdHdpc2Vfb3IscG9yKQotTU1YX1BLT1AyX1NQRUMoOCxpbnQ4X3QsYml0d2lzZV94b3IscHhvcikKLU1NWF9QS09QMl9TUEVDKDgsaW50OF90LGZwYWRkcyxwYWRkc2IpCi1NTVhfUEtPUDJfU1BFQyg4LGludDhfdCxmcHN1YnMscHN1YnNiKQotCi1NTVhfUEFTU0lHTl9TUEVDKDQsdWludDE2X3QpCi1NTVhfUEtPUDJfU1BFQyg0LHVpbnQxNl90LHBsdXMscGFkZHcpCi1NTVhfUEtPUDJfU1BFQyg0LHVpbnQxNl90LG1pbnVzLHBzdWJ3KQotTU1YX1BLT1AyX1NQRUMoNCx1aW50MTZfdCxiaXR3aXNlX2FuZCxwYW5kKQotTU1YX1BLT1AyX1NQRUMoNCx1aW50MTZfdCxiaXR3aXNlX29yLHBvcikKLU1NWF9QS09QMl9TUEVDKDQsdWludDE2X3QsYml0d2lzZV94b3IscHhvcikKLS8vLyBcdG9kbyBwc2xsdyBkb2VzIG5vdCB3b3JrIGxpa2Ugb3RoZXIgb3BlcmF0aW9ucywgaXQgdXNlcyB0aGUgZmlyc3QgZWxlbWVudCBmb3Igc2hpZnQgY291bnQuCi0vL01NWF9QS09QMl9TUEVDKDQsdWludDE2X3QsZnBzaGwscHNsbHcpCi0vL01NWF9QS09QMl9TUEVDKDQsdWludDE2X3QsZnBzaHIscHNybHcpCi1NTVhfUEtPUDJfU1BFQyg0LHVpbnQxNl90LGZwYWRkcyxwYWRkdXN3KQotTU1YX1BLT1AyX1NQRUMoNCx1aW50MTZfdCxmcHN1YnMscHN1YnVzdykKLQotTU1YX1BBU1NJR05fU1BFQyg0LGludDE2X3QpCi1NTVhfUEtPUDJfU1BFQyg0LGludDE2X3QscGx1cyxwYWRkdykKLU1NWF9QS09QMl9TUEVDKDQsaW50MTZfdCxtaW51cyxwc3VidykKLU1NWF9QS09QMl9TUEVDKDQsaW50MTZfdCxiaXR3aXNlX2FuZCxwYW5kKQotTU1YX1BLT1AyX1NQRUMoNCxpbnQxNl90LGJpdHdpc2Vfb3IscG9yKQotTU1YX1BLT1AyX1NQRUMoNCxpbnQxNl90LGJpdHdpc2VfeG9yLHB4b3IpCi0vL01NWF9QS09QMl9TUEVDKDQsaW50MTZfdCxmcHNobCxwc2xsdykKLS8vTU1YX1BLT1AyX1NQRUMoNCxpbnQxNl90LGZwc2hyLHBzcmx3KQotTU1YX1BLT1AyX1NQRUMoNCxpbnQxNl90LGZwYWRkcyxwYWRkc3cpCi1NTVhfUEtPUDJfU1BFQyg0LGludDE2X3QsZnBzdWJzLHBzdWJzdykKLQotTU1YX1BBU1NJR05fU1BFQygyLHVpbnQzMl90KQotTU1YX1BLT1AyX1NQRUMoMix1aW50MzJfdCxwbHVzLHBhZGRkKQotTU1YX1BLT1AyX1NQRUMoMix1aW50MzJfdCxtaW51cyxwc3ViZCkKLU1NWF9QS09QMl9TUEVDKDIsdWludDMyX3QsYml0d2lzZV9hbmQscGFuZCkKLU1NWF9QS09QMl9TUEVDKDIsdWludDMyX3QsYml0d2lzZV9vcixwb3IpCi1NTVhfUEtPUDJfU1BFQygyLHVpbnQzMl90LGJpdHdpc2VfeG9yLHB4b3IpCi0vL01NWF9QS09QMl9TUEVDKDIsdWludDMyX3QsZnBzaGwscHNsbGQpCi0vL01NWF9QS09QMl9TUEVDKDIsdWludDMyX3QsZnBzaHIscHNybGQpCi0KLU1NWF9QQVNTSUdOX1NQRUMoMixpbnQzMl90KQotTU1YX1BLT1AyX1NQRUMoMixpbnQzMl90LHBsdXMscGFkZGQpCi1NTVhfUEtPUDJfU1BFQygyLGludDMyX3QsbWludXMscHN1YmQpCi1NTVhfUEtPUDJfU1BFQygyLGludDMyX3QsYml0d2lzZV9hbmQscGFuZCkKLU1NWF9QS09QMl9TUEVDKDIsaW50MzJfdCxiaXR3aXNlX29yLHBvcikKLU1NWF9QS09QMl9TUEVDKDIsaW50MzJfdCxiaXR3aXNlX3hvcixweG9yKQotLy9NTVhfUEtPUDJfU1BFQygyLGludDMyX3QsZnBzaGwscHNsbGQpCi0vL01NWF9QS09QMl9TUEVDKDIsaW50MzJfdCxmcHNocixwc3JsZCkKLQotTU1YX0RCTF9QS09QMl9TUEVDKDQsdWludDMyX3QscGx1cyxwYWRkZCkKLU1NWF9EQkxfUEtPUDJfU1BFQyg0LHVpbnQzMl90LG1pbnVzLHBzdWJkKQotTU1YX0RCTF9QS09QMl9TUEVDKDQsdWludDMyX3QsYml0d2lzZV9hbmQscGFuZCkKLU1NWF9EQkxfUEtPUDJfU1BFQyg0LHVpbnQzMl90LGJpdHdpc2Vfb3IscG9yKQotTU1YX0RCTF9QS09QMl9TUEVDKDQsdWludDMyX3QsYml0d2lzZV94b3IscHhvcikKLS8vTU1YX0RCTF9QS09QMl9TUEVDKDIsdWludDMyX3QsZnBzaGwscHNsbGQpCi0vL01NWF9EQkxfUEtPUDJfU1BFQygyLHVpbnQzMl90LGZwc2hyLHBzcmxkKQotCi1NTVhfREJMX1BLT1AyX1NQRUMoNCxpbnQzMl90LHBsdXMscGFkZGQpCi1NTVhfREJMX1BLT1AyX1NQRUMoNCxpbnQzMl90LG1pbnVzLHBzdWJkKQotTU1YX0RCTF9QS09QMl9TUEVDKDQsaW50MzJfdCxiaXR3aXNlX2FuZCxwYW5kKQotTU1YX0RCTF9QS09QMl9TUEVDKDQsaW50MzJfdCxiaXR3aXNlX29yLHBvcikKLU1NWF9EQkxfUEtPUDJfU1BFQyg0LGludDMyX3QsYml0d2lzZV94b3IscHhvcikKLS8vTU1YX0RCTF9QS09QMl9TUEVDKDIsaW50MzJfdCxmcHNobCxwc2xsZCkKLS8vTU1YX0RCTF9QS09QMl9TUEVDKDIsaW50MzJfdCxmcHNocixwc3JsZCkKLQotI2lmIENQVV9IQVNfU1NFIHx8IENQVV9IQVNfM0ROT1cKLU1NWF9QS09QMl9TUEVDKDgsdWludDhfdCxmcGF2ZyxwYXZnYikKLU1NWF9QS09QMl9TUEVDKDgsaW50OF90LGZwYXZnLHBhdmdiKQotTU1YX1BLT1AyX1NQRUMoNCx1aW50MTZfdCxmcGF2ZyxwYXZndykKLU1NWF9QS09QMl9TUEVDKDQsaW50MTZfdCxmcGF2ZyxwYXZndykKLU1NWF9QS09QMl9TUEVDKDgsdWludDhfdCxmcG1pbixwbWludWIpCi1NTVhfUEtPUDJfU1BFQyg4LHVpbnQ4X3QsZnBtYXgscG1heHViKQotTU1YX1BLT1AyX1NQRUMoNCxpbnQxNl90LGZwbWF4LHBtYXhzdykKLU1NWF9QS09QMl9TUEVDKDQsaW50MTZfdCxmcG1pbixwbWluc3cpCi0jZW5kaWYgLy8gQ1BVX0hBU19TU0UgfHwgQ1BVX0hBU18zRE5PVwotCi0jaWYgQ1BVX0hBU18zRE5PVwotTU1YX1BBU1NJR05fU1BFQygyLGZsb2F0KQotTU1YX1BLT1AyX1NQRUMoMixmbG9hdCxwbHVzLHBmYWRkKQotTU1YX1BLT1AyX1NQRUMoMixmbG9hdCxtaW51cyxwZnN1YikKLU1NWF9QS09QMl9TUEVDKDIsZmxvYXQsbXVsdGlwbGllcyxwZm11bCkKLU1NWF9QS09QMl9TUEVDKDIsZmxvYXQsZnBtaW4scGZtaW4pCi1NTVhfUEtPUDJfU1BFQygyLGZsb2F0LGZwbWF4LHBmbWF4KQotI2lmbmRlZiBDUFVfSEFTX1NTRQotTU1YX0RCTF9QS09QMl9TUEVDKDQsZmxvYXQscGx1cyxwZmFkZCkKLU1NWF9EQkxfUEtPUDJfU1BFQyg0LGZsb2F0LG1pbnVzLHBmc3ViKQotTU1YX0RCTF9QS09QMl9TUEVDKDQsZmxvYXQsbXVsdGlwbGllcyxwZm11bCkKLU1NWF9EQkxfUEtPUDJfU1BFQyg0LGZsb2F0LGZwbWluLHBmbWluKQotTU1YX0RCTF9QS09QMl9TUEVDKDQsZmxvYXQsZnBtYXgscGZtYXgpCi0jZW5kaWYKLSNlbmRpZiAvLyBDUFVfSEFTXzNETk9XCi0KLU1NWF9JUEFTU0lHTl9TUEVDKDgsdWludDhfdCkKLU1NWF9JUEFTU0lHTl9TUEVDKDQsdWludDE2X3QpCi1NTVhfSVBBU1NJR05fU1BFQygyLHVpbnQzMl90KQotTU1YX0lQQVNTSUdOX1NQRUMoMixmbG9hdCkKLQotI2lmbmRlZiBDUFVfSEFTX1NTRQotTU1YX0RCTF9QQVNTSUdOX1NQRUMoNCxmbG9hdCkKLU1NWF9EQkxfUEFTU0lHTl9TUEVDKDQsdWludDMyX3QpCi1NTVhfREJMX1BBU1NJR05fU1BFQyg0LGludDMyX3QpCi1NTVhfREJMX0lQQVNTSUdOX1NQRUMoNCxmbG9hdCkKLU1NWF9EQkxfSVBBU1NJR05fU1BFQyg0LHVpbnQzMl90KQotTU1YX0RCTF9JUEFTU0lHTl9TUEVDKDQsaW50MzJfdCkKLSNlbmRpZgotCi0jdW5kZWYgTU1YX0lQQVNTSUdOX1NQRUMKLSN1bmRlZiBNTVhfUEFTU0lHTl9TUEVDCi0jdW5kZWYgTU1YX1BLT1AyX1NQRUMKLSN1bmRlZiBTVERfTU1YX0FSR1MKLSNlbmRpZiAvLyBDUFVfSEFTX01NWAotCi0jaWYgQ1BVX0hBU19TU0UKLSNkZWZpbmUgU1REX1NTRV9BUkdTCSI9bSIob291dFswXSkgOiAibSIob2luWzBdKSA6ICJ4bW0wIiwgIm1lbW9yeSIKLSNkZWZpbmUgU1NFX1BLT1AyX1NQRUMobix0eXBlLG9wdHlwZSxpbnN0cnVjdGlvbikJXAotU0lNRF9QS09QMl9TUEVDKG4sdHlwZSxvcHR5cGUpCQlcCi17IGFzbSAoIm1vdnVwcyAlMCwgJSV4bW0wXG5cdG1vdnVwcyAlMSwgJSV4bW0xXG5cdCIgI2luc3RydWN0aW9uICIgJSV4bW0xLCAlJXhtbTBcblx0bW92dXBzICUleG1tMCwgJTAiIDogU1REX1NTRV9BUkdTKTt9Ci0jZGVmaW5lIFNTRV9QQVNTSUdOX1NQRUMobix0eXBlKQkJCVwKLVNJTURfUEFTU0lHTl9TUEVDKG4sdHlwZSkJCVwKLXsgYXNtICgibW92dXBzICUxLCAlJXhtbTBcblx0bW92dXBzICUleG1tMCwgJTAiIDogU1REX1NTRV9BUkdTKTt9Ci0jZGVmaW5lIFNTRV9JUEFTU0lHTl9TUEVDKG4sdHlwZSkJXAotU0lNRF9JUEFTU0lHTl9TUEVDKG4sdHlwZSkJCVwKLXsgYXNtICgibW92dXBzICUxLCAlJXhtbTBcblx0bW92dXBzICUleG1tMCwgJTAiIDogU1REX1NTRV9BUkdTKTt9Ci1TU0VfUEFTU0lHTl9TUEVDKDQsZmxvYXQpCi1TU0VfUEFTU0lHTl9TUEVDKDQsaW50MzJfdCkKLVNTRV9QQVNTSUdOX1NQRUMoNCx1aW50MzJfdCkKLVNTRV9QS09QMl9TUEVDKDQsZmxvYXQscGx1cyxhZGRwcykKLVNTRV9QS09QMl9TUEVDKDQsZmxvYXQsbWludXMsc3VicHMpCi1TU0VfUEtPUDJfU1BFQyg0LGZsb2F0LG11bHRpcGxpZXMsbXVscHMpCi1TU0VfUEtPUDJfU1BFQyg0LGZsb2F0LGRpdmlkZXMsZGl2cHMpCi1TU0VfUEtPUDJfU1BFQyg0LGZsb2F0LGJpdHdpc2VfYW5kLGFuZHBzKQotU1NFX1BLT1AyX1NQRUMoNCxmbG9hdCxiaXR3aXNlX29yLG9ycHMpCi1TU0VfUEtPUDJfU1BFQyg0LGZsb2F0LGJpdHdpc2VfeG9yLHhvcnBzKQotU1NFX1BLT1AyX1NQRUMoNCxmbG9hdCxmcG1heCxtYXhwcykKLVNTRV9QS09QMl9TUEVDKDQsZmxvYXQsZnBtaW4sbWlucHMpCi0KLVNJTURfQ09OVkVSVF9TUEVDKDQsZmxvYXQsaW50MzJfdCxmcm91bmQpIHsKLSAgICBhc20gKCJjdnRwczJwaSAlMiwgJSVtbTBcblx0IgotCSAiY3Z0cHMycGkgJTMsICUlbW0xXG5cdCIKLQkgIm1vdnEgJSVtbTAsICUwXG5cdCIKLQkgIm1vdnEgJSVtbTEsICUxIgotCSA6IERCTF9NTVhfQVJHUyk7Ci0gICAgcmVzZXRfbW14KCk7Ci19Ci1TSU1EX0NPTlZFUlRfU1BFQyg0LGludDMyX3QsZmxvYXQsZnJvdW5kKSB7Ci0gICAgYXNtICgiY3Z0cGkycHMgJTIsICUleG1tMFxuXHQiCi0JICJzaHVmcHMgJDB4NEUsJSV4bW0wLCUleG1tMFxuXHQiCi0JICJjdnRwaTJwcyAlMSwgJSV4bW0wXG5cdCIKLQkgIm1vdnVwcyAlJXhtbTAsICUwIgotCSA6ICI9bSIob291dFswXSkgOiAibSIob2luWzBdKSwgIm0iKG9pblsyXSkgOiAieG1tMCIsICJtZW1vcnkiKTsKLX0KLXRlbXBsYXRlIDw+IGlubGluZSBpbnQzMl90IGZyb3VuZDxmbG9hdCxpbnQzMl90Pjo6b3BlcmF0b3IoKShjb25zdCBmbG9hdCYgYSkgY29uc3QgewotICAgIHJlZ2lzdGVyIGludDMyX3QgcnY7Ci0gICAgYXNtICgibW92c3MgJTEsICUleG1tMFxuXHQiCi0JICJjdnRzczJzaSAlJXhtbTAsICUwIgotCSA6ICI9ciIocnYpIDogIm0iKGEpIDogInhtbTAiICk7Ci0gICAgcmV0dXJuIChydik7Ci19Ci10ZW1wbGF0ZSA8PiBpbmxpbmUgdWludDMyX3QgZnJvdW5kPGZsb2F0LHVpbnQzMl90Pjo6b3BlcmF0b3IoKShjb25zdCBmbG9hdCYgYSkgY29uc3QgewotICAgIHJlZ2lzdGVyIHVpbnQzMl90IHJ2OwotICAgIGFzbSAoIm1vdnNzICUxLCAlJXhtbTBcblx0IgotCSAiY3Z0c3Myc2kgJSV4bW0wLCAlMCIKLQkgOiAiPXIiKHJ2KSA6ICJtIihhKSA6ICJ4bW0wIiApOwotICAgIHJldHVybiAocnYpOwotfQotCi1TU0VfSVBBU1NJR05fU1BFQyg0LGZsb2F0KQotU1NFX0lQQVNTSUdOX1NQRUMoNCxpbnQzMl90KQotU1NFX0lQQVNTSUdOX1NQRUMoNCx1aW50MzJfdCkKLQotI3VuZGVmIFNTRV9JUEFTU0lHTl9TUEVDCi0jdW5kZWYgU1NFX1BBU1NJR05fU1BFQwotI3VuZGVmIFNTRV9QS09QMl9TUEVDCi0jdW5kZWYgU1REX1NTRV9BUkdTCi0jZW5kaWYgLy8gQ1BVX0hBU19TU0UKLQotI3VuZGVmIFNJTURfUEFDS0VET1BfU1BFQwotCi19IC8vIG5hbWVzcGFjZSBzaW1kCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9zaXN0cmVhbS5jcHAgYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9zaXN0cmVhbS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhMjBkZGYuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvc2lzdHJlYW0uY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMjM3ICswLDAgQEAKLS8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB1c3RsIGxpYnJhcnksIGFuIFNUTCBpbXBsZW1lbnRhdGlvbi4KLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgYnkgTWlrZSBTaGFyb3YgPG1zaGFyb3ZAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotLy8gVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KLS8vCi0vLyBzaXN0cmVhbS5jYwotLy8KLQotI2luY2x1ZGUgInNpc3RyZWFtLmgiCi0jaW5jbHVkZSAic29zdHJlYW0uaCIKLSNpbmNsdWRlICJ1YXNzZXJ0LmgiCi0jaW5jbHVkZSAidXN0cmluZy5oIgotCi1uYW1lc3BhY2UgdXN0bCB7Ci0KLWNvbnN0IGNoYXIgaW9zX2Jhc2U6OmNfRGVmYXVsdERlbGltaXRlcnMgW2lzdHJpbmdzdHJlYW06OmNfTWF4RGVsaW1pdGVyc10gPSAiIFx0XG5ccjs6LC4/IjsKLQotLy8vIERlZmF1bHQgY29uc3RydWN0b3IuCi1pc3RyaW5nc3RyZWFtOjppc3RyaW5nc3RyZWFtICh2b2lkKQotOiBpc3RyZWFtICgpLAotICBtX0Jhc2UgKDApCi17Ci0gICAgc2V0X2RlbGltaXRlcnMgKGNfRGVmYXVsdERlbGltaXRlcnMpOwotfQotCi1pc3RyaW5nc3RyZWFtOjppc3RyaW5nc3RyZWFtIChjb25zdCB2b2lkKiBwLCBzaXplX3R5cGUgbikKLTogaXN0cmVhbSAoKSwKLSAgbV9CYXNlICgwKQotewotICAgIGxpbmsgKHAsIG4pOwotICAgIHNldF9kZWxpbWl0ZXJzIChjX0RlZmF1bHREZWxpbWl0ZXJzKTsKLX0KLQotaXN0cmluZ3N0cmVhbTo6aXN0cmluZ3N0cmVhbSAoY29uc3QgY21lbWxpbmsmIHNvdXJjZSkKLTogaXN0cmVhbSAoKSwKLSAgbV9CYXNlICgwKQotewotICAgIGxpbmsgKHNvdXJjZSk7Ci0gICAgc2V0X2RlbGltaXRlcnMgKGNfRGVmYXVsdERlbGltaXRlcnMpOwotfQotCi0vLy8gU2V0cyBkZWxpbWl0ZXJzIHRvIHRoZSBjb250ZW50cyBvZiBccCBkZWxpbWl0ZXJzLgotdm9pZCBpc3RyaW5nc3RyZWFtOjpzZXRfZGVsaW1pdGVycyAoY29uc3QgY2hhciogZGVsaW1pdGVycykKLXsKLSAgICBmaWxsIChWZWN0b3JSYW5nZSAobV9EZWxpbWl0ZXJzKSwgJ1wwJyk7Ci0gICAgc3RybmNweSAobV9EZWxpbWl0ZXJzLCBkZWxpbWl0ZXJzLCBWZWN0b3JTaXplKG1fRGVsaW1pdGVycyktMSk7Ci19Ci0KLWlubGluZSBib29sIGlzdHJpbmdzdHJlYW06OmlzX2RlbGltaXRlciAoY2hhciBjKSBjb25zdAotewotICAgIHJldHVybiAobWVtY2hyIChtX0RlbGltaXRlcnMsIGMsIFZlY3RvclNpemUobV9EZWxpbWl0ZXJzKS0xKSk7Ci19Ci0KLWNoYXIgaXN0cmluZ3N0cmVhbTo6c2tpcF9kZWxpbWl0ZXJzICh2b2lkKQotewotICAgIGNoYXIgYyA9IG1fRGVsaW1pdGVyc1swXTsKLSAgICB3aGlsZSAoaXNfZGVsaW1pdGVyKGMpICYmIChyZW1haW5pbmcoKSB8fCB1bmRlcmZsb3coKSkpCi0JaXN0cmVhbTo6aXJlYWQgKGMpOwotICAgIHJldHVybiAoYyk7Ci19Ci0KLXZvaWQgaXN0cmluZ3N0cmVhbTo6aXJlYWQgKGludDhfdCYgdikKLXsKLSAgICB2ID0gc2tpcF9kZWxpbWl0ZXJzKCk7Ci19Ci0KLXR5cGVkZWYgaXN0cmluZ3N0cmVhbTo6aXRlcmF0b3IgaXNzaXRlcl90OwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdm9pZCBzdHJfdG9fbnVtIChpc3NpdGVyX3QgaSwgaXNzaXRlcl90KiBpZW5kLCB1aW50OF90IGJhc2UsIFQmIHYpCi0gICAgeyB2ID0gc3RydG9sIChpLCBjb25zdF9jYXN0PGNoYXIqKj4oaWVuZCksIGJhc2UpOyB9Ci10ZW1wbGF0ZSA8PiBpbmxpbmUgdm9pZCBzdHJfdG9fbnVtIChpc3NpdGVyX3QgaSwgaXNzaXRlcl90KiBpZW5kLCB1aW50OF90LCBkb3VibGUmIHYpCi0gICAgeyB2ID0gc3RydG9kIChpLCBjb25zdF9jYXN0PGNoYXIqKj4oaWVuZCkpOyB9Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKLXRlbXBsYXRlIDw+IGlubGluZSB2b2lkIHN0cl90b19udW0gKGlzc2l0ZXJfdCBpLCBpc3NpdGVyX3QqIGllbmQsIHVpbnQ4X3QgYmFzZSwgbG9uZyBsb25nJiB2KQotICAgIHsgdiA9IHN0cnRvbGwgKGksIGNvbnN0X2Nhc3Q8Y2hhcioqPihpZW5kKSwgYmFzZSk7IH0KLSNlbmRpZgotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSB2b2lkIGlzdHJpbmdzdHJlYW06OnJlYWRfbnVtYmVyIChUJiB2KQotewotICAgIHYgPSAwOwotICAgIGlmIChza2lwX2RlbGltaXRlcnMoKSA9PSBtX0RlbGltaXRlcnNbMF0pCi0JcmV0dXJuOwotICAgIHVuZ2V0YygpOwotICAgIGl0ZXJhdG9yIGlsYXN0OwotICAgIGRvIHsKLQlzdHJfdG9fbnVtPFQ+IChpcG9zKCksICZpbGFzdCwgbV9CYXNlLCB2KTsKLSAgICB9IHdoaWxlIChpbGFzdCA9PSBlbmQoKSAmJiB1bmRlcmZsb3coKSk7Ci0gICAgc2tpcCAoZGlzdGFuY2UgKGlwb3MoKSwgaWxhc3QpKTsKLX0KLQotdm9pZCBpc3RyaW5nc3RyZWFtOjppcmVhZCAoaW50MzJfdCYgdikJCXsgcmVhZF9udW1iZXIgKHYpOyB9Ci12b2lkIGlzdHJpbmdzdHJlYW06OmlyZWFkIChkb3VibGUmIHYpCQl7IHJlYWRfbnVtYmVyICh2KTsgfSAKLSNpZiBIQVZFX0lOVDY0X1QKLXZvaWQgaXN0cmluZ3N0cmVhbTo6aXJlYWQgKGludDY0X3QmIHYpCQl7IHJlYWRfbnVtYmVyICh2KTsgfQotI2VuZGlmCi0jaWYgSEFWRV9MT05HX0xPTkcgJiYgKCFIQVZFX0lOVDY0X1QgfHwgU0laRV9PRl9MT05HX0xPTkcgPiA4KQotdm9pZCBpc3RyaW5nc3RyZWFtOjppcmVhZCAobG9uZyBsb25nJiB2KQl7IHJlYWRfbnVtYmVyICh2KTsgfQotI2VuZGlmCi0KLXZvaWQgaXN0cmluZ3N0cmVhbTo6aXJlYWQgKHdjaGFyX3QmIHYpCi17Ci0gICAgaWYgKCh2ID0gc2tpcF9kZWxpbWl0ZXJzKCkpID09IHdjaGFyX3QobV9EZWxpbWl0ZXJzWzBdKSkKLQlyZXR1cm47Ci0gICAgc2l6ZV90IGNzID0gVXRmOFNlcXVlbmNlQnl0ZXMgKHYpIC0gMTsKLSAgICBpZiAocmVtYWluaW5nKCkgPj0gY3MgfHwgdW5kZXJmbG93KGNzKSA+PSBjcykgewotCXVuZ2V0YygpOwotCXYgPSAqdXRmOGluIChpcG9zKCkpOwotCXNraXAgKGNzICsgMSk7Ci0gICAgfQotfQotCi12b2lkIGlzdHJpbmdzdHJlYW06OmlyZWFkIChib29sJiB2KQotewotICAgIHN0YXRpYyBjb25zdCBjaGFyIHRmWzJdWzhdID0geyAiZmFsc2UiLCAidHJ1ZSIgfTsKLSAgICBjaGFyIGMgPSBza2lwX2RlbGltaXRlcnMoKTsKLSAgICB2ID0gKGMgPT0gJ3QnIHx8IGMgPT0gJzEnKTsKLSAgICBpZiAoYyAhPSB0Zlt2XVswXSkKLQlyZXR1cm47Ci0gICAgZm9yIChjb25zdCBjaGFyKiB0diA9IHRmW3ZdOyBjID09ICp0diAmJiAocmVtYWluaW5nKCkgfHwgdW5kZXJmbG93KCkpOyArK3R2KQotCWlzdHJlYW06OmlyZWFkIChjKTsKLSAgICB1bmdldGMoKTsKLX0KLQotdm9pZCBpc3RyaW5nc3RyZWFtOjppcmVhZCAoc3RyaW5nJiB2KQotewotICAgIHYuY2xlYXIoKTsKLSAgICBjaGFyIHByZXZjLCBxdW90ZUNoYXIgPSAwLCBjID0gc2tpcF9kZWxpbWl0ZXJzKCk7Ci0gICAgaWYgKGMgPT0gJ1wiJyB8fCBjID09ICdcJycpCi0JcXVvdGVDaGFyID0gYzsKLSAgICBlbHNlCi0JdiArPSBjOwotICAgIHdoaWxlIChyZW1haW5pbmcoKSB8fCB1bmRlcmZsb3coKSkgewotCXByZXZjID0gYzsKLQlpc3RyZWFtOjppcmVhZCAoYyk7Ci0JaWYgKCFxdW90ZUNoYXIgJiYgaXNfZGVsaW1pdGVyKGMpKQotCSAgICBicmVhazsKLQlpZiAocHJldmMgPT0gJ1xcJykgewotCSAgICBzd2l0Y2ggKGMpIHsKLQkJY2FzZSAndCc6CWMgPSAnXHQnOyBicmVhazsKLQkJY2FzZSAnbic6CWMgPSAnXG4nOyBicmVhazsKLQkJY2FzZSAncic6CWMgPSAnXHInOyBicmVhazsKLQkJY2FzZSAnYic6CWMgPSAnXGInOyBicmVhazsKLQkJY2FzZSAnRSc6CWMgPSAyNzsgICBicmVhazsgLy8gRVNDIHNlcXVlbmNlCi0JCWNhc2UgJ1wiJzoJYyA9ICdcIic7IGJyZWFrOwotCQljYXNlICdcJyc6CWMgPSAnXCcnOyBicmVhazsKLQkJY2FzZSAnXFwnOgljID0gJ1xcJzsgYnJlYWs7Ci0JICAgIH07Ci0JICAgIHYuZW5kKClbLTFdID0gYzsKLQl9IGVsc2UgewotCSAgICBpZiAoYyA9PSBxdW90ZUNoYXIpCi0JCWJyZWFrOwotCSAgICB2ICs9IGM7Ci0JfQotICAgIH0KLX0KLQotdm9pZCBpc3RyaW5nc3RyZWFtOjpyZWFkICh2b2lkKiBidWZmZXIsIHNpemVfdHlwZSBzeikKLXsKLSAgICBpZiAocmVtYWluaW5nKCkgPCBzeiAmJiB1bmRlcmZsb3coc3opIDwgc3opCi0jaWZkZWYgV0FOVF9TVFJFQU1fQk9VTkRTX0NIRUNLSU5HCi0JdmVyaWZ5X3JlbWFpbmluZyAoInJlYWQiLCAiIiwgc3opOwotI2Vsc2UKLQlhc3NlcnQgKHJlbWFpbmluZygpID49IHNpemUoKSk7Ci0jZW5kaWYKLSAgICBpc3RyZWFtOjpyZWFkIChidWZmZXIsIHN6KTsKLX0KLQotdm9pZCBpc3RyaW5nc3RyZWFtOjpyZWFkIChtZW1saW5rJiBidWYpCi17Ci0gICAgaWYgKHJlbWFpbmluZygpIDwgYnVmLnNpemUoKSAmJiB1bmRlcmZsb3coYnVmLnNpemUoKSkgPCBidWYuc2l6ZSgpKQotI2lmZGVmIFdBTlRfU1RSRUFNX0JPVU5EU19DSEVDS0lORwotCXZlcmlmeV9yZW1haW5pbmcgKCJyZWFkIiwgIiIsIGJ1Zi5zaXplKCkpOwotI2Vsc2UKLQlhc3NlcnQgKHJlbWFpbmluZygpID49IGJ1Zi5zaXplKCkpOwotI2VuZGlmCi0gICAgaXN0cmVhbTo6cmVhZCAoYnVmKTsKLX0KLQotLy8vIFJlYWRzIG9uZSBjaGFyYWN0ZXIgZnJvbSB0aGUgc3RyZWFtLgotaW50IGlzdHJpbmdzdHJlYW06OmdldCAodm9pZCkKLXsKLSAgICBpbnQ4X3QgdiA9IDA7Ci0gICAgaWYgKHJlbWFpbmluZygpIHx8IHVuZGVyZmxvdygpKQotCWlzdHJlYW06OmlyZWFkICh2KTsKLSAgICByZXR1cm4gKHYpOwotfQotCi0vLy8gUmVhZHMgY2hhcmFjdGVycyBpbnRvIFxwIHMgdW50aWwgXHAgZGVsaW0gaXMgZm91bmQgKGJ1dCBub3Qgc3RvcmVkIG9yIGV4dHJhY3RlZCkKLXZvaWQgaXN0cmluZ3N0cmVhbTo6Z2V0IChzdHJpbmcmIHMsIGNoYXIgZGVsaW0pCi17Ci0gICAgZ2V0bGluZSAocywgZGVsaW0pOwotICAgIGlmICghcy5lbXB0eSgpICYmIHBvcygpID4gMCAmJiBpcG9zKClbLTFdID09IGRlbGltKQotCXVuZ2V0YygpOwotfQotCi0vLy8gUmVhZHMgY2hhcmFjdGVycyBpbnRvIFxwIHAsbiB1bnRpbCBccCBkZWxpbSBpcyBmb3VuZCAoYnV0IG5vdCBzdG9yZWQgb3IgZXh0cmFjdGVkKQotdm9pZCBpc3RyaW5nc3RyZWFtOjpnZXQgKGNoYXIqIHAsIHNpemVfdHlwZSBuLCBjaGFyIGRlbGltKQotewotICAgIGFzc2VydCAocCAmJiAhbiAmJiAiQSBub24tZW1wdHkgYnVmZmVyIGlzIHJlcXVpcmVkIGJ5IHRoaXMgaW1wbGVtZW50YXRpb24iKTsKLSAgICBzdHJpbmcgczsKLSAgICBnZXQgKHMsIGRlbGltKTsKLSAgICBjb25zdCBzaXplX3QgbnRjIChtaW4gKG4gLSAxLCBzLnNpemUoKSkpOwotICAgIG1lbWNweSAocCwgcy5kYXRhKCksIG50Yyk7Ci0gICAgcFtudGNdID0gMDsKLX0KLQotLy8vIFJlYWRzIGNoYXJhY3RlcnMgaW50byBccCBzIHVudGlsIFxwIGRlbGltIGlzIGV4dHJhY3RlZCAoYnV0IG5vdCBzdG9yZWQpCi12b2lkIGlzdHJpbmdzdHJlYW06OmdldGxpbmUgKHN0cmluZyYgcywgY2hhciBkZWxpbSkKLXsKLSAgICBjaGFyIG9sZERlbGltIFtWZWN0b3JTaXplKG1fRGVsaW1pdGVycyldOwotICAgIGNvcHkgKFZlY3RvclJhbmdlIChtX0RlbGltaXRlcnMpLCBvbGREZWxpbSk7Ci0gICAgZmlsbCAoVmVjdG9yUmFuZ2UgKG1fRGVsaW1pdGVycyksICdcMCcpOwotICAgIG1fRGVsaW1pdGVyc1swXSA9IGRlbGltOwotICAgIGlyZWFkIChzKTsKLSAgICBjb3B5IChWZWN0b3JSYW5nZSAob2xkRGVsaW0pLCBtX0RlbGltaXRlcnMpOwotfQotCi0vLy8gUmVhZHMgY2hhcmFjdGVycyBpbnRvIFxwIHAsbiB1bnRpbCBccCBkZWxpbSBpcyBleHRyYWN0ZWQgKGJ1dCBub3Qgc3RvcmVkKQotdm9pZCBpc3RyaW5nc3RyZWFtOjpnZXRsaW5lIChjaGFyKiBwLCBzaXplX3R5cGUgbiwgY2hhciBkZWxpbSkKLXsKLSAgICBhc3NlcnQgKHAgJiYgIW4gJiYgIkEgbm9uLWVtcHR5IGJ1ZmZlciBpcyByZXF1aXJlZCBieSB0aGlzIGltcGxlbWVudGF0aW9uIik7Ci0gICAgc3RyaW5nIHM7Ci0gICAgZ2V0bGluZSAocywgZGVsaW0pOwotICAgIGNvbnN0IHNpemVfdCBudGMgKG1pbiAobiAtIDEsIHMuc2l6ZSgpKSk7Ci0gICAgbWVtY3B5IChwLCBzLmRhdGEoKSwgbnRjKTsKLSAgICBwW250Y10gPSAwOwotfQotCi0vLy8gRXh0cmFjdCB1bnRpbCBccCBkZWxpbSBvciBccCBuIGNoYXJzIGhhdmUgYmVlbiByZWFkLgotdm9pZCBpc3RyaW5nc3RyZWFtOjppZ25vcmUgKHNpemVfdHlwZSBuLCBjaGFyIGRlbGltKQotewotICAgIHdoaWxlIChuLS0gJiYgKHJlbWFpbmluZygpIHx8IHVuZGVyZmxvdygpKSAmJiBnZXQoKSAhPSBkZWxpbSk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIHVzdGwKLQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvc2lzdHJlYW0uaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3Npc3RyZWFtLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyNGY0M2IuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvc2lzdHJlYW0uaAorKysgL2Rldi9udWxsCkBAIC0xLDEzMyArMCwwIEBACi0vLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdXN0bCBsaWJyYXJ5LCBhbiBTVEwgaW1wbGVtZW50YXRpb24uCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDA1IGJ5IE1pa2UgU2hhcm92IDxtc2hhcm92QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLS8vIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCi0vLwotLy8gc2lzdHJlYW0uaAotLy8KLQotI2lmbmRlZiBTSVNUUkVBTV9IXzBDQ0ExMDIyMjlBNDlGNUQ2NUVFODUyRTYyQjI3Q0UyCi0jZGVmaW5lIFNJU1RSRUFNX0hfMENDQTEwMjIyOUE0OUY1RDY1RUU4NTJFNjJCMjdDRTIKLQotI2luY2x1ZGUgIm1pc3RyZWFtLmgiCi0jaW5jbHVkZSAidWFzc2VydC5oIgotI2luY2x1ZGUgInVzdHJpbmcuaCIKLQotbmFtZXNwYWNlIHVzdGwgewotCi0vLy8gXGNsYXNzIGlzdHJpbmdzdHJlYW0gc2lzdHJlYW0uaCB1c3RsLmgKLS8vLyBcaW5ncm91cCBUZXh0U3RyZWFtcwotLy8vCi0vLy8gXGJyaWVmIEEgc3RyZWFtIHRoYXQgcmVhZHMgdGV4dHVhbCBkYXRhIGZyb20gYSBtZW1vcnkgYmxvY2suCi0vLy8KLWNsYXNzIGlzdHJpbmdzdHJlYW0gOiBwdWJsaWMgaXN0cmVhbSB7Ci1wdWJsaWM6Ci0gICAgc3RhdGljIGNvbnN0IHNpemVfdHlwZQljX01heERlbGltaXRlcnMgPSAxNjsJLy8vPCBNYXhpbXVtIG51bWJlciBvZiB3b3JkIGRlbGltaXRlcnMuCi1wdWJsaWM6Ci0gICAgCQkJCWlzdHJpbmdzdHJlYW0gKHZvaWQpOwotCQkJCWlzdHJpbmdzdHJlYW0gKGNvbnN0IHZvaWQqIHAsIHNpemVfdHlwZSBuKTsKLSAgICBleHBsaWNpdAkJCWlzdHJpbmdzdHJlYW0gKGNvbnN0IGNtZW1saW5rJiBzb3VyY2UpOwotICAgIHZvaWQJCQlpcmVhZCAoaW50OF90JiB2KTsKLSAgICB2b2lkCQkJaXJlYWQgKGludDMyX3QmIHYpOwotICAgIHZvaWQJCQlpcmVhZCAoZG91YmxlJiB2KTsKLSAgICB2b2lkCQkJaXJlYWQgKGJvb2wmIHYpOwotICAgIHZvaWQJCQlpcmVhZCAod2NoYXJfdCYgdik7Ci0gICAgdm9pZAkJCWlyZWFkIChzdHJpbmcmIHYpOwotI2lmZGVmIEhBVkVfSU5UNjRfVAotICAgIHZvaWQJCQlpcmVhZCAoaW50NjRfdCYgdik7Ci0jZW5kaWYKLSNpZiBIQVZFX0xPTkdfTE9ORyAmJiAoIUhBVkVfSU5UNjRfVCB8fCBTSVpFX09GX0xPTkdfTE9ORyA+IDgpCi0gICAgdm9pZAkJCWlyZWFkIChsb25nIGxvbmcmIHYpOwotI2VuZGlmCi0gICAgaW5saW5lIHN0cmluZwkJc3RyICh2b2lkKSBjb25zdAl7IHN0cmluZyBzOyBzLmxpbmsgKCp0aGlzKTsgcmV0dXJuIChzKTsgfQotICAgIGlubGluZSB2b2lkCQkJc3RyIChjb25zdCBzdHJpbmcmIHMpCXsgbGluayAocyk7IH0KLSAgICBpbnQJCQkJZ2V0ICh2b2lkKTsKLSAgICBpbmxpbmUgdm9pZAkJCWdldCAoY2hhciYgYykJeyBjID0gZ2V0KCk7IH0KLSAgICB2b2lkCQkJZ2V0IChjaGFyKiBwLCBzaXplX3R5cGUgbiwgY2hhciBkZWxpbSA9ICdcbicpOwotICAgIHZvaWQJCQlnZXQgKHN0cmluZyYgcywgY2hhciBkZWxpbSA9ICdcbicpOwotICAgIHZvaWQJCQlnZXRsaW5lIChjaGFyKiBwLCBzaXplX3R5cGUgbiwgY2hhciBkZWxpbSA9ICdcbicpOwotICAgIHZvaWQJCQlnZXRsaW5lIChzdHJpbmcmIHMsIGNoYXIgZGVsaW0gPSAnXG4nKTsKLSAgICB2b2lkCQkJaWdub3JlIChzaXplX3R5cGUgbiwgY2hhciBkZWxpbSA9ICdcMCcpOwotICAgIGlubGluZSBjaGFyCQkJcGVlayAodm9pZCkJeyBpbnQ4X3QgdjsgaXJlYWQgKHYpOyB1bmdldGMoKTsgcmV0dXJuICh2KTsgfQotICAgIGlubGluZSB2b2lkCQkJcHV0YmFjayAoY2hhcikJeyB1bmdldGMoKTsgfQotICAgIGlubGluZSB2b2lkCQkJdW5nZXQgKHZvaWQpCXsgdW5nZXRjKCk7IH0KLSAgICB2b2lkCQkJc2V0X2RlbGltaXRlcnMgKGNvbnN0IGNoYXIqIGRlbGltaXRlcnMpOwotICAgIGlubGluZSB2b2lkCQkJc2V0X2Jhc2UgKHNob3J0IGJhc2UpOwotICAgIGlubGluZSB2b2lkCQkJc2V0X2RlY2ltYWxfc2VwYXJhdG9yIChjaGFyKQl7IH0KLSAgICBpbmxpbmUgdm9pZAkJCXNldF90aG91c2FuZF9zZXBhcmF0b3IgKGNoYXIpCXsgfQotICAgIHZvaWQJCQlyZWFkICh2b2lkKiBidWZmZXIsIHNpemVfdHlwZSBzaXplKTsKLSAgICB2b2lkCQkJcmVhZCAobWVtbGluayYgYnVmKTsKLSAgICBpbmxpbmUgdm9pZAkJCXJlYWRfc3RyeiAoc3RyaW5nJiBzdHIpOwotICAgIGlubGluZSB2b2lkCQkJc3luYyAodm9pZCkJeyBza2lwIChyZW1haW5pbmcoKSk7IH0KLXByb3RlY3RlZDoKLSAgICBjaGFyCQkJc2tpcF9kZWxpbWl0ZXJzICh2b2lkKTsKLXByaXZhdGU6Ci0gICAgaW5saW5lIGJvb2wJCQlpc19kZWxpbWl0ZXIgKGNoYXIgYykgY29uc3Q7Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IHZvaWQJcmVhZF9udW1iZXIgKFQmIHYpOwotcHJpdmF0ZToKLSAgICBjaGFyCQkJbV9EZWxpbWl0ZXJzIFtjX01heERlbGltaXRlcnNdOwotICAgIHVpbnQ4X3QJCQltX0Jhc2U7Ci19OwotCi0vLy8gU2V0cyB0aGUgbnVtZXJpYyBiYXNlIHVzZWQgdG8gcmVhZCBudW1iZXJzLgotaW5saW5lIHZvaWQgaXN0cmluZ3N0cmVhbTo6c2V0X2Jhc2UgKHNob3J0IGJhc2UpCi17Ci0gICAgbV9CYXNlID0gYmFzZTsKLX0KLQotLy8vIFJlYWRzIGEgbnVsbC10ZXJtaW5hdGVkIGNoYXJhY3RlciBzdHJlYW0uIFRoaXMgaXMgbm90IGFsbG93ZWQgaW4gdGhpcyBjbGFzcy4KLWlubGluZSB2b2lkIGlzdHJpbmdzdHJlYW06OnJlYWRfc3RyeiAoc3RyaW5nJikKLXsKLSAgICBhc3NlcnQgKCEiUmVhZGluZyBudWwgY2hhcmFjdGVycyBpcyBub3QgYWxsb3dlZCBmcm9tIHRleHQgc3RyZWFtcyIpOwotfQotCi0vLy8gUmVhZHMgb25lIHR5cGUgYXMgYW5vdGhlci4KLXRlbXBsYXRlIDx0eXBlbmFtZSBSZWFsVCwgdHlwZW5hbWUgQ2FzdFQ+Ci1pbmxpbmUgdm9pZCBfY2FzdF9yZWFkIChpc3RyaW5nc3RyZWFtJiBpcywgUmVhbFQmIHYpCi17Ci0gICAgQ2FzdFQgY3Y7Ci0gICAgaXMuaXJlYWQgKGN2KTsKLSAgICB2ID0gUmVhbFQgKGN2KTsKLX0KLQotaW5saW5lIGlzdHJpbmdzdHJlYW0mIG9wZXJhdG9yPj4gKGlzdHJpbmdzdHJlYW0mIGlzLCBpbnQ4X3QmIHYpCXsgaXMuaXJlYWQgKHYpOyByZXR1cm4gKGlzKTsgfQotaW5saW5lIGlzdHJpbmdzdHJlYW0mIG9wZXJhdG9yPj4gKGlzdHJpbmdzdHJlYW0mIGlzLCBpbnQzMl90JiB2KXsgaXMuaXJlYWQgKHYpOyByZXR1cm4gKGlzKTsgfQotaW5saW5lIGlzdHJpbmdzdHJlYW0mIG9wZXJhdG9yPj4gKGlzdHJpbmdzdHJlYW0mIGlzLCBkb3VibGUmIHYpCXsgaXMuaXJlYWQgKHYpOyByZXR1cm4gKGlzKTsgfQotaW5saW5lIGlzdHJpbmdzdHJlYW0mIG9wZXJhdG9yPj4gKGlzdHJpbmdzdHJlYW0mIGlzLCBib29sJiB2KQl7IGlzLmlyZWFkICh2KTsgcmV0dXJuIChpcyk7IH0KLWlubGluZSBpc3RyaW5nc3RyZWFtJiBvcGVyYXRvcj4+IChpc3RyaW5nc3RyZWFtJiBpcywgd2NoYXJfdCYgdil7IGlzLmlyZWFkICh2KTsgcmV0dXJuIChpcyk7IH0KLWlubGluZSBpc3RyaW5nc3RyZWFtJiBvcGVyYXRvcj4+IChpc3RyaW5nc3RyZWFtJiBpcywgc3RyaW5nJiB2KQl7IGlzLmlyZWFkICh2KTsgcmV0dXJuIChpcyk7IH0KLSNpZiBIQVZFX0lOVDY0X1QKLWlubGluZSBpc3RyaW5nc3RyZWFtJiBvcGVyYXRvcj4+IChpc3RyaW5nc3RyZWFtJiBpcywgaW50NjRfdCYgdil7IGlzLmlyZWFkICh2KTsgcmV0dXJuIChpcyk7IH0KLSNlbmRpZgotI2lmIEhBVkVfTE9OR19MT05HICYmICghSEFWRV9JTlQ2NF9UIHx8IFNJWkVfT0ZfTE9OR19MT05HID4gOCkKLWlubGluZSBpc3RyaW5nc3RyZWFtJiBvcGVyYXRvcj4+IChpc3RyaW5nc3RyZWFtJiBpcywgbG9uZyBsb25nJiB2KSB7IGlzLmlyZWFkICh2KTsgcmV0dXJuIChpcyk7IH0KLSNlbmRpZgotCi0jZGVmaW5lIElTVFJTVFJFQU1fQ0FTVF9PUEVSQVRPUihSZWFsVCwgQ2FzdFQpCQkJXAotaW5saW5lIGlzdHJpbmdzdHJlYW0mIG9wZXJhdG9yPj4gKGlzdHJpbmdzdHJlYW0mIGlzLCBSZWFsVCYgdikJXAoteyBfY2FzdF9yZWFkPFJlYWxULENhc3RUPihpcywgdik7IHJldHVybiAoaXMpOyB9Ci0KLUlTVFJTVFJFQU1fQ0FTVF9PUEVSQVRPUiAodWludDhfdCwJaW50OF90KQotSVNUUlNUUkVBTV9DQVNUX09QRVJBVE9SIChpbnQxNl90LAlpbnQzMl90KQotSVNUUlNUUkVBTV9DQVNUX09QRVJBVE9SICh1aW50MTZfdCwJaW50MzJfdCkKLUlTVFJTVFJFQU1fQ0FTVF9PUEVSQVRPUiAodWludDMyX3QsCWludDMyX3QpCi1JU1RSU1RSRUFNX0NBU1RfT1BFUkFUT1IgKGZsb2F0LAlkb3VibGUpCi0jaWYgSEFWRV9USFJFRV9DSEFSX1RZUEVTCi1JU1RSU1RSRUFNX0NBU1RfT1BFUkFUT1IgKGNoYXIsCQlpbnQ4X3QpCi0jZW5kaWYKLSNpZiBIQVZFX0lOVDY0X1QKLUlTVFJTVFJFQU1fQ0FTVF9PUEVSQVRPUiAodWludDY0X3QsCWludDY0X3QpCi0jZW5kaWYKLSNpZiBTSVpFX09GX0xPTkcgPT0gU0laRV9PRl9JTlQKLUlTVFJTVFJFQU1fQ0FTVF9PUEVSQVRPUiAobG9uZywJCWludCkKLUlTVFJTVFJFQU1fQ0FTVF9PUEVSQVRPUiAodW5zaWduZWQgbG9uZyxpbnQpCi0jZW5kaWYKLSNpZiBIQVZFX0xPTkdfTE9ORyAmJiAoIUhBVkVfSU5UNjRfVCB8fCBTSVpFX09GX0xPTkdfTE9ORyA+IDgpCi1JU1RSU1RSRUFNX0NBU1RfT1BFUkFUT1IgKHVuc2lnbmVkIGxvbmcgbG9uZywgbG9uZyBsb25nKQotI2VuZGlmCi0jdW5kZWYgSVNUUlNUUkVBTV9DQVNUX09QRVJBVE9SCi0KLX0gLy8gbmFtZXNwYWNlIHVzdGwKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3Nvc3RyZWFtLmNwcCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3Nvc3RyZWFtLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTZmMDk3Ni4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9zb3N0cmVhbS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSwxOTMgKzAsMCBAQAotLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHVzdGwgbGlicmFyeSwgYW4gU1RMIGltcGxlbWVudGF0aW9uLgotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwNSBieSBNaWtlIFNoYXJvdiA8bXNoYXJvdkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0vLyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgotLy8KLS8vIHNvc3RyZWFtLmgKLS8vCi0KLSNpbmNsdWRlICJtaXN0cmVhbS5oIgkvLyBmb3IgaXN0cmVhbV9pdGVyYXRvciwgcmVmZXJlbmNlZCBpbiB1dGY4LmgKLSNpbmNsdWRlICJzb3N0cmVhbS5oIgotI2luY2x1ZGUgInVhc3NlcnQuaCIKLSNpbmNsdWRlICJ1bGltaXRzLmgiCi0jaW5jbHVkZSAidXN0cmluZy5oIgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0KLW5hbWVzcGFjZSB1c3RsIHsKLQotLy8vIENyZWF0ZXMgYW4gb3V0cHV0IHN0cmluZyBzdHJlYW0gbGlua2VkIHRvIHRoZSBnaXZlbiBtZW1vcnkgYXJlYS4KLW9zdHJpbmdzdHJlYW06Om9zdHJpbmdzdHJlYW0gKHZvaWQqIHAsIHNpemVfdCBuKQotOiBvc3RyZWFtICgpLAotICBtX0J1ZmZlciAoKSwKLSAgbV9GbGFncyAoMCksCi0gIG1fV2lkdGggKDApLAotICBtX0Jhc2UgKDEwKSwKLSAgbV9QcmVjaXNpb24gKDIpCi17Ci0gICAgbGluayAocCwgbik7Ci19Ci0KLS8vLyBDcmVhdGVzIGFuIG91dHB1dCBzdHJpbmcgc3RyZWFtLCBpbml0aWFsaXppbmcgdGhlIGJ1ZmZlciB3aXRoIHYuCi1vc3RyaW5nc3RyZWFtOjpvc3RyaW5nc3RyZWFtIChjb25zdCBzdHJpbmcmIHYpCi06IG9zdHJlYW0gKCksCi0gIG1fQnVmZmVyICh2KSwKLSAgbV9GbGFncyAoMCksCi0gIG1fV2lkdGggKDApLAotICBtX0Jhc2UgKDEwKSwKLSAgbV9QcmVjaXNpb24gKDIpCi17Ci0gICAgb3N0cmVhbTo6bGluayAobV9CdWZmZXIpOwotfQotCi0vLy8gQ29waWVzIFxwIHMgdG8gdGhlIGludGVybmFsIGJ1ZmZlci4KLXZvaWQgb3N0cmluZ3N0cmVhbTo6c3RyIChjb25zdCBzdHJpbmcmIHMpCi17Ci0gICAgbV9CdWZmZXIgPSBzOwotICAgIG9zdHJlYW06OmxpbmsgKG1fQnVmZmVyKTsKLSAgICBTZXRQb3MgKG1fQnVmZmVyLnNpemUoKSk7Ci19Ci0KLS8vLyBXcml0ZXMgYSBzaW5nbGUgY2hhcmFjdGVyIGludG8gdGhlIHN0cmVhbS4KLXZvaWQgb3N0cmluZ3N0cmVhbTo6aXdyaXRlICh1aW50OF90IHYpCi17Ci0gICAgaWYgKHJlbWFpbmluZygpID49IDEgfHwgb3ZlcmZsb3coKSA+PSAxKQotCW9zdHJlYW06Oml3cml0ZSAodik7Ci19Ci0KLS8vLyBXcml0ZXMgXHAgYnVmIG9mIHNpemUgXHAgYnVmU2l6ZSB0aHJvdWdoIHRoZSBpbnRlcm5hbCBidWZmZXIuCi12b2lkIG9zdHJpbmdzdHJlYW06OndyaXRlX2J1ZmZlciAoY29uc3QgY2hhciogYnVmLCBzaXplX3R5cGUgYnVmU2l6ZSkKLXsKLSAgICBzaXplX3R5cGUgYnR3ID0gMCwgd3JpdHRlbiA9IDA7Ci0gICAgd2hpbGUgKCh3cml0dGVuICs9IGJ0dykgPCBidWZTaXplICYmIChyZW1haW5pbmcoKSB8fCBvdmVyZmxvdyhidWZTaXplIC0gd3JpdHRlbikpKQotCXdyaXRlIChidWYgKyB3cml0dGVuLCBidHcgPSBtaW4gKHJlbWFpbmluZygpLCBidWZTaXplIC0gd3JpdHRlbikpOwotfQotCi0vLy8gU2ltcGxlIGRlY2ltYWwgZW5jb2Rpbmcgb2YgXHAgbiBpbnRvIFxwIGZtdC4KLWlubGluZSBjaGFyKiBvc3RyaW5nc3RyZWFtOjplbmNvZGVfZGVjIChjaGFyKiBmbXQsIHVpbnQzMl90IG4pIGNvbnN0Ci17Ci0gICAgZG8gewotCSpmbXQrKyA9ICcwJyArIG4gJSAxMDsKLSAgICB9IHdoaWxlIChuIC89IDEwKTsKLSAgICByZXR1cm4gKGZtdCk7Ci19Ci0KLS8vLyBHZW5lcmF0ZXMgYSBzcHJpbnRmIGZvcm1hdCBzdHJpbmcgZm9yIHRoZSBnaXZlbiB0eXBlLgotdm9pZCBvc3RyaW5nc3RyZWFtOjpmbXRzdHJpbmcgKGNoYXIqIGZtdCwgY29uc3QgY2hhciogdHlwZXN0ciwgYm9vbCBiSW50ZWdlcikgY29uc3QKLXsKLSAgICAqZm10KysgPSAnJSc7Ci0gICAgaWYgKG1fV2lkdGgpCi0JZm10ID0gZW5jb2RlX2RlYyAoZm10LCBtX1dpZHRoKTsKLSAgICBpZiAobV9GbGFncyAmIGxlZnQpCi0JKmZtdCsrID0gJy0nOwotICAgIGlmICghYkludGVnZXIpIHsKLQkqZm10KysgPSAnLic7Ci0JZm10ID0gZW5jb2RlX2RlYyAoZm10LCBtX1ByZWNpc2lvbik7Ci0gICAgfQotICAgIHdoaWxlICgqdHlwZXN0cikKLQkqZm10KysgPSAqdHlwZXN0cisrOwotICAgIGlmIChiSW50ZWdlcikgewotCWlmIChtX0Jhc2UgPT0gMTYpCi0JICAgIGZtdFstMV0gPSAnWCc7Ci0JZWxzZSBpZiAobV9CYXNlID09IDgpCi0JICAgIGZtdFstMV0gPSAnbyc7Ci0gICAgfSBlbHNlIHsKLQlpZiAobV9GbGFncyAmIHNjaWVudGlmaWMpCi0JICAgIGZtdFstMV0gPSAnRSc7Ci0gICAgfQotICAgICpmbXQgPSAwOwotfQotCi0vLy8gV3JpdGVzIFxwIHYgaW50byB0aGUgc3RyZWFtIGFzIHV0ZjgKLXZvaWQgb3N0cmluZ3N0cmVhbTo6aXdyaXRlICh3Y2hhcl90IHYpCi17Ci0gICAgY2hhciBidWZmZXIgWzhdOwotICAgICp1dGY4b3V0KGJ1ZmZlcikgPSB2OwotICAgIHdyaXRlX2J1ZmZlciAoYnVmZmVyLCBVdGY4Qnl0ZXModikpOwotfQotCi0vLy8gV3JpdGVzIHZhbHVlIFxwIHYgaW50byB0aGUgc3RyZWFtIGFzIHRleHQuCi12b2lkIG9zdHJpbmdzdHJlYW06Oml3cml0ZSAoYm9vbCB2KQotewotICAgIHN0YXRpYyBjb25zdCBjaGFyIHRmWzJdWzhdID0geyAiZmFsc2UiLCAidHJ1ZSIgfTsKLSAgICB3cml0ZV9idWZmZXIgKHRmW3ZdLCA1IC0gdik7Ci19Ci0KLS8vLyBFcXVpdmFsZW50IHRvIGEgdnNwcmludGYgb24gdGhlIHN0cmluZy4KLWludCBvc3RyaW5nc3RyZWFtOjp2Zm9ybWF0IChjb25zdCBjaGFyKiBmbXQsIHZhX2xpc3QgYXJncykKLXsKLSNpZiBIQVZFX1ZBX0NPUFkKLSAgICB2YV9saXN0IGFyZ3MyOwotI2Vsc2UKLSAgICAjZGVmaW5lIGFyZ3MyIGFyZ3MKLSAgICAjdW5kZWYgX192YV9jb3B5Ci0gICAgI2RlZmluZSBfX3ZhX2NvcHkoeCx5KQotI2VuZGlmCi0gICAgc2l6ZV90IHJ2LCBzcGFjZTsKLSAgICBkbyB7Ci0Jc3BhY2UgPSByZW1haW5pbmcoKTsKLQlfX3ZhX2NvcHkgKGFyZ3MyLCBhcmdzKTsKLQlydiA9IHZzbnByaW50ZiAoaXBvcygpLCBzcGFjZSwgZm10LCBhcmdzMik7Ci0JaWYgKHNzaXplX3QocnYpIDwgMCkKLQkgICAgcnYgPSBzcGFjZTsKLSAgICB9IHdoaWxlIChydiA+PSBzcGFjZSAmJiBydiA8IG92ZXJmbG93KHJ2ICsgMSkpOwotICAgIFNldFBvcyAocG9zKCkgKyBtaW4gKHJ2LCBzcGFjZSkpOwotICAgIHJldHVybiAocnYpOwotfQotCi0vLy8gRXF1aXZhbGVudCB0byBhIHNwcmludGYgb24gdGhlIHN0cmluZy4KLWludCBvc3RyaW5nc3RyZWFtOjpmb3JtYXQgKGNvbnN0IGNoYXIqIGZtdCwgLi4uKQotewotICAgIHZhX2xpc3QgYXJnczsKLSAgICB2YV9zdGFydCAoYXJncywgZm10KTsKLSAgICBjb25zdCBpbnQgcnYgPSB2Zm9ybWF0IChmbXQsIGFyZ3MpOwotICAgIHZhX2VuZCAoYXJncyk7Ci0gICAgcmV0dXJuIChydik7Ci19Ci0KLS8vLyBMaW5rcyB0byBzdHJpbmcgXHAgbCBhcyByZXNpemFibGUuCi12b2lkIG9zdHJpbmdzdHJlYW06OmxpbmsgKHZvaWQqIHAsIHNpemVfdCBuKQotewotICAgIGFzc2VydCAoKHAgfHwgIW4pICYmICJUaGUgb3V0cHV0IHN0cmluZyBidWZmZXIgbXVzdCBub3QgYmUgcmVhZC1vbmx5Iik7Ci0gICAgb3N0cmVhbTo6bGluayAocCwgbik7Ci0gICAgbV9CdWZmZXIubGluayAocCwgbik7Ci19Ci0KLS8vLyBXcml0ZXMgdGhlIGNvbnRlbnRzIG9mIFxwIGJ1ZmZlciBvZiBccCBzaXplIGludG8gdGhlIHN0cmVhbS4KLXZvaWQgb3N0cmluZ3N0cmVhbTo6d3JpdGUgKGNvbnN0IHZvaWQqIGJ1ZmZlciwgc2l6ZV90eXBlIHN6KQotewotICAgIGlmIChyZW1haW5pbmcoKSA8IHN6ICYmIG92ZXJmbG93KHN6KSA8IHN6KQotCXJldHVybjsKLSAgICBvc3RyZWFtOjp3cml0ZSAoYnVmZmVyLCBzeik7Ci19Ci0KLS8vLyBXcml0ZXMgdGhlIGNvbnRlbnRzIG9mIFxwIGJ1ZiBpbnRvIHRoZSBzdHJlYW0uCi12b2lkIG9zdHJpbmdzdHJlYW06OndyaXRlIChjb25zdCBjbWVtbGluayYgYnVmKQotewotICAgIGlmIChyZW1haW5pbmcoKSA8IGJ1Zi5zaXplKCkgJiYgb3ZlcmZsb3coYnVmLnNpemUoKSkgPCBidWYuc2l6ZSgpKQotCXJldHVybjsKLSAgICBvc3RyZWFtOjp3cml0ZSAoYnVmKTsKLX0KLQotLy8vIEZsdXNoZXMgdGhlIGludGVybmFsIGJ1ZmZlciBieSB0cnVuY2F0aW5nIGl0IGF0IHRoZSBjdXJyZW50IHBvc2l0aW9uLgotdm9pZCBvc3RyaW5nc3RyZWFtOjpmbHVzaCAodm9pZCkKLXsKLSAgICBtX0J1ZmZlci5yZXNpemUgKHBvcygpKTsKLX0KLQotLy8vIEF0dGVtcHRzIHRvIGNyZWF0ZSBtb3JlIG91dHB1dCBzcGFjZS4gUmV0dXJucyByZW1haW5pbmcoKS4KLW9zdHJpbmdzdHJlYW06OnNpemVfdHlwZSBvc3RyaW5nc3RyZWFtOjpvdmVyZmxvdyAoc2l6ZV90eXBlIG4pCi17Ci0gICAgaWYgKG4gPiByZW1haW5pbmcoKSkgewotCWNvbnN0IHVvZmZfdCBvbGRQb3MgKHBvcygpKTsKLQltX0J1ZmZlci5yZXNlcnZlIChvbGRQb3MgKyBuLCBmYWxzZSk7Ci0JbV9CdWZmZXIucmVzaXplIChvbGRQb3MgKyBuKTsKLQlvc3RyZWFtOjpsaW5rIChtX0J1ZmZlcik7Ci0JU2V0UG9zIChvbGRQb3MpOwotICAgIH0KLSAgICB2ZXJpZnlfcmVtYWluaW5nICgid3JpdGUiLCAidGV4dCIsIG4pOwotICAgIHJldHVybiAocmVtYWluaW5nKCkpOwotfQotCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KLQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvc29zdHJlYW0uaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3Nvc3RyZWFtLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExZGMzMjguLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvc29zdHJlYW0uaAorKysgL2Rldi9udWxsCkBAIC0xLDE1OCArMCwwIEBACi0vLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdXN0bCBsaWJyYXJ5LCBhbiBTVEwgaW1wbGVtZW50YXRpb24uCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDA1IGJ5IE1pa2UgU2hhcm92IDxtc2hhcm92QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLS8vIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCi0vLwotLy8gc29zdHJlYW0uaAotLy8KLQotI2lmbmRlZiBTT1NUUkVBTV9IXzUzMjNEQzhDMjZFMTgxRDQzMjc4RjJGNTNGRENGMTlGCi0jZGVmaW5lIFNPU1RSRUFNX0hfNTMyM0RDOEMyNkUxODFENDMyNzhGMkY1M0ZEQ0YxOUYKLQotI2luY2x1ZGUgInVhc3NlcnQuaCIKLSNpbmNsdWRlICJ1c3RyaW5nLmgiCi0jaW5jbHVkZSAibW9zdHJlYW0uaCIKLQotbmFtZXNwYWNlIHVzdGwgewotCi1jbGFzcyBzdHJpbmc7Ci0KLS8vLyBcY2xhc3Mgb3N0cmluZ3N0cmVhbSBzb3N0cmVhbS5oIHVzdGwuaAotLy8vIFxpbmdyb3VwIFRleHRTdHJlYW1zCi0vLy8KLS8vLyBcYnJpZWYgVGhpcyBzdHJlYW0gd3JpdGVzIHRleHR1YWwgZGF0YSBpbnRvIGEgbWVtb3J5IGJsb2NrLgotLy8vCi1jbGFzcyBvc3RyaW5nc3RyZWFtIDogcHVibGljIG9zdHJlYW0gewotcHVibGljOgotCQkJCW9zdHJpbmdzdHJlYW0gKGNvbnN0IHN0cmluZyYgdiA9IHN0cmluZzo6ZW1wdHlfc3RyaW5nKTsKLQkJCQlvc3RyaW5nc3RyZWFtICh2b2lkKiBwLCBzaXplX3Qgbik7Ci0gICAgdm9pZAkJCWl3cml0ZSAodWludDhfdCB2KTsKLSAgICB2b2lkCQkJaXdyaXRlICh3Y2hhcl90IHYpOwotICAgIGlubGluZSB2b2lkCQkJaXdyaXRlIChpbnQgdikJCQl7IGlmb3JtYXQgKHYpOyB9Ci0gICAgaW5saW5lIHZvaWQJCQlpd3JpdGUgKHVuc2lnbmVkIGludCB2KQkJeyBpZm9ybWF0ICh2KTsgfQotICAgIGlubGluZSB2b2lkCQkJaXdyaXRlIChsb25nIGludCB2KQkJeyBpZm9ybWF0ICh2KTsgfQotICAgIGlubGluZSB2b2lkCQkJaXdyaXRlICh1bnNpZ25lZCBsb25nIGludCB2KQl7IGlmb3JtYXQgKHYpOyB9Ci0gICAgaW5saW5lIHZvaWQJCQlpd3JpdGUgKGZsb2F0IHYpCQl7IGlmb3JtYXQgKHYpOyB9Ci0gICAgaW5saW5lIHZvaWQJCQlpd3JpdGUgKGRvdWJsZSB2KQkJeyBpZm9ybWF0ICh2KTsgfQotICAgIHZvaWQJCQlpd3JpdGUgKGJvb2wgdik7Ci0gICAgaW5saW5lIHZvaWQJCQlpd3JpdGUgKGNvbnN0IGNoYXIqIHMpCQl7IHdyaXRlX2J1ZmZlciAocywgc3RybGVuKHMpKTsgfQotICAgIGlubGluZSB2b2lkCQkJaXdyaXRlIChjb25zdCBzdHJpbmcmIHYpCXsgd3JpdGVfYnVmZmVyICh2LmJlZ2luKCksIHYuc2l6ZSgpKTsgfQotICAgIGlubGluZSB2b2lkCQkJaXdyaXRlIChmbXRmbGFncyBmKTsKLSNpZiBIQVZFX0xPTkdfTE9ORwotICAgIGlubGluZSB2b2lkCQkJaXdyaXRlIChsb25nIGxvbmcgdikJCXsgaWZvcm1hdCAodik7IH0KLSAgICBpbmxpbmUgdm9pZAkJCWl3cml0ZSAodW5zaWduZWQgbG9uZyBsb25nIHYpCXsgaWZvcm1hdCAodik7IH0KLSNlbmRpZgotICAgIGlubGluZSBzaXplX3R5cGUJCW1heF9zaXplICh2b2lkKSBjb25zdAkJeyByZXR1cm4gKG1fQnVmZmVyLm1heF9zaXplKCkpOyB9Ci0gICAgaW5saW5lIHZvaWQJCQlwdXQgKGNoYXIgYykJCQl7IGl3cml0ZSAodWludDhfdChjKSk7IH0KLSAgICBpbnQJCQkJdmZvcm1hdCAoY29uc3QgY2hhciogZm10LCB2YV9saXN0IGFyZ3MpOwotICAgIGludAkJCQlmb3JtYXQgKGNvbnN0IGNoYXIqIGZtdCwgLi4uKSBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fKF9fcHJpbnRmX18sIDIsIDMpKSk7Ci0gICAgaW5saW5lIHZvaWQJCQlzZXRfYmFzZSAodWludDE2X3QgYikJCXsgbV9CYXNlID0gYjsgfQotICAgIGlubGluZSB2b2lkCQkJc2V0X3dpZHRoICh1aW50MTZfdCB3KQkJeyBtX1dpZHRoID0gdzsgfQotICAgIGlubGluZSB2b2lkCQkJc2V0X2RlY2ltYWxfc2VwYXJhdG9yIChjaGFyKQl7IH0KLSAgICBpbmxpbmUgdm9pZAkJCXNldF90aG91c2FuZF9zZXBhcmF0b3IgKGNoYXIpCXsgfQotICAgIGlubGluZSB2b2lkCQkJc2V0X3ByZWNpc2lvbiAodWludDE2X3QgdikJeyBtX1ByZWNpc2lvbiA9IHY7IH0KLSAgICB2b2lkCQkJbGluayAodm9pZCogcCwgc2l6ZV90eXBlIG4pOwotICAgIGlubGluZSB2b2lkCQkJbGluayAobWVtbGluayYgbCkJCXsgbGluayAobC5kYXRhKCksIGwud3JpdGFibGVfc2l6ZSgpKTsgfQotICAgIGlubGluZSBjb25zdCBzdHJpbmcmCXN0ciAodm9pZCkJCQl7IGZsdXNoKCk7IHJldHVybiAobV9CdWZmZXIpOyB9Ci0gICAgdm9pZAkJCXN0ciAoY29uc3Qgc3RyaW5nJiBzKTsKLSAgICB2b2lkCQkJd3JpdGUgKGNvbnN0IHZvaWQqIGJ1ZmZlciwgc2l6ZV90eXBlIHNpemUpOwotICAgIHZvaWQJCQl3cml0ZSAoY29uc3QgY21lbWxpbmsmIGJ1Zik7Ci0gICAgaW5saW5lIHZvaWQJCQl3cml0ZV9zdHJ6IChjb25zdCBjaGFyKikJeyBhc3NlcnQgKCEiV3JpdGluZyBudWwgY2hhcmFjdGVycyBpbnRvIGEgdGV4dCBzdHJlYW0gaXMgbm90IGFsbG93ZWQiKTsgfQotICAgIHZvaWQJCQlmbHVzaCAodm9pZCk7Ci0gICAgdmlydHVhbCBzaXplX3R5cGUJCW92ZXJmbG93IChzaXplX3R5cGUgbiA9IDEpOwotcHJvdGVjdGVkOgotICAgIHZvaWQJCQl3cml0ZV9idWZmZXIgKGNvbnN0IGNoYXIqIGJ1Ziwgc2l6ZV90eXBlIGJ1ZlNpemUpOwotICAgIGlubGluZSB2b2lkCQkJcmVzZXJ2ZSAoc2l6ZV90eXBlIG4pCQl7IG1fQnVmZmVyLnJlc2VydmUgKG4sIGZhbHNlKTsgfQotICAgIGlubGluZSBzaXplX3R5cGUJCWNhcGFjaXR5ICh2b2lkKSBjb25zdAkJeyByZXR1cm4gKG1fQnVmZmVyLmNhcGFjaXR5KCkpOyB9Ci1wcml2YXRlOgotICAgIGlubGluZSBjaGFyKgkJZW5jb2RlX2RlYyAoY2hhciogZm10LCB1aW50MzJfdCBuKSBjb25zdDsKLSAgICB2b2lkCQkJZm10c3RyaW5nIChjaGFyKiBmbXQsIGNvbnN0IGNoYXIqIHR5cGVzdHIsIGJvb2wgYkludGVnZXIpIGNvbnN0OwotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgIHZvaWQJCQlpZm9ybWF0IChUIHYpOwotcHJpdmF0ZToKLSAgICBzdHJpbmcJCQltX0J1ZmZlcjsJCS8vLzwgVGhlIG91dHB1dCBidWZmZXIuCi0gICAgdWludDMyX3QJCQltX0ZsYWdzOwkJLy8vPCBTZWUgaW9zX2Jhc2U6OmZtdGZsYWdzLgotICAgIHVpbnQxNl90CQkJbV9XaWR0aDsJCS8vLzwgRmllbGQgd2lkdGguCi0gICAgdWludDhfdAkJCW1fQmFzZTsJCQkvLy88IE51bWVyaWMgYmFzZSBmb3Igd3JpdGluZyBudW1iZXJzLgotICAgIHVpbnQ4X3QJCQltX1ByZWNpc2lvbjsJCS8vLzwgTnVtYmVyIG9mIGRpZ2l0cyBhZnRlciB0aGUgZGVjaW1hbCBzZXBhcmF0b3IuCi19OwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgY29uc3QgY2hhciogcHJpbnRmX3R5cGVzdHJpbmcgKGNvbnN0IFQmKQl7IHJldHVybiAoIiIpOyB9Ci0jZGVmaW5lIFBSSU5URl9UWVBFU1RSSU5HX1NQRUModHlwZSxzdHIpCVwKLXRlbXBsYXRlIDw+IGlubGluZSBjb25zdCBjaGFyKiBwcmludGZfdHlwZXN0cmluZyAoY29uc3QgdHlwZSYpCXsgcmV0dXJuIChzdHIpOyB9Ci1QUklOVEZfVFlQRVNUUklOR19TUEVDIChpbnQsCQkiZCIpCi1QUklOVEZfVFlQRVNUUklOR19TUEVDICh1bnNpZ25lZCBpbnQsCSJ1IikKLVBSSU5URl9UWVBFU1RSSU5HX1NQRUMgKGxvbmcsCQkibGQiKQotUFJJTlRGX1RZUEVTVFJJTkdfU1BFQyAodW5zaWduZWQgbG9uZywJImx1IikKLVBSSU5URl9UWVBFU1RSSU5HX1NQRUMgKGZsb2F0LAkJImYiKQotUFJJTlRGX1RZUEVTVFJJTkdfU1BFQyAoZG91YmxlLAkJImxmIikKLSNpZiBIQVZFX0xPTkdfTE9ORwotUFJJTlRGX1RZUEVTVFJJTkdfU1BFQyAobG9uZyBsb25nLAkibGxkIikKLVBSSU5URl9UWVBFU1RSSU5HX1NQRUMgKHVuc2lnbmVkIGxvbmcgbG9uZywgImxsdSIpCi0jZW5kaWYKLSN1bmRlZiBQUklOVEZfVFlQRVNUUklOR19TUEVDCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdm9pZCBvc3RyaW5nc3RyZWFtOjppZm9ybWF0IChUIHYpCi17Ci0gICAgY2hhciBmbXQgWzE2XTsKLSAgICBmbXRzdHJpbmcgKGZtdCwgcHJpbnRmX3R5cGVzdHJpbmcodiksIG51bWVyaWNfbGltaXRzPFQ+Ojppc19pbnRlZ2VyKTsKLSAgICBmb3JtYXQgKGZtdCwgdik7Ci19Ci0KLS8vLyBTZXRzIHRoZSBmbGFnIFxwIGYgaW4gdGhlIHN0cmVhbS4KLWlubGluZSB2b2lkIG9zdHJpbmdzdHJlYW06Oml3cml0ZSAoZm10ZmxhZ3MgZikKLXsKLSAgICBzd2l0Y2ggKGYpIHsKLQljYXNlIG9jdDoJc2V0X2Jhc2UgKDgpOwlicmVhazsKLQljYXNlIGRlYzoJc2V0X2Jhc2UgKDEwKTsJYnJlYWs7Ci0JY2FzZSBoZXg6CXNldF9iYXNlICgxNik7CWJyZWFrOwotCWNhc2UgbGVmdDoJbV9GbGFncyB8PSBsZWZ0OyBtX0ZsYWdzICY9IH5yaWdodDsgYnJlYWs7Ci0JY2FzZSByaWdodDoJbV9GbGFncyB8PSByaWdodDsgbV9GbGFncyAmPSB+bGVmdDsgYnJlYWs7Ci0JZGVmYXVsdDoJbV9GbGFncyB8PSBmOwlicmVhazsKLSAgICB9Ci19Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jZGVmaW5lIE9TVFJTVFJFQU1fT1BFUkFUT1IoUmVhbFQsIENhc3RUKQkJCVwKLWlubGluZSBvc3RyaW5nc3RyZWFtJiBvcGVyYXRvcjw8IChvc3RyaW5nc3RyZWFtJiBvcywgUmVhbFQgdikJXAoteyBvcy5pd3JpdGUgKChDYXN0VCkgdik7IHJldHVybiAob3MpOyB9Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotT1NUUlNUUkVBTV9PUEVSQVRPUiAoVCosCQl1bnNpZ25lZCBsb25nIGludCkKLU9TVFJTVFJFQU1fT1BFUkFUT1IgKGNvbnN0IHZvaWQqLAl1bnNpZ25lZCBsb25nIGludCkKLU9TVFJTVFJFQU1fT1BFUkFUT1IgKHZvaWQqLAkJdW5zaWduZWQgbG9uZyBpbnQpCi1PU1RSU1RSRUFNX09QRVJBVE9SIChjb25zdCBjaGFyKiwJY29uc3QgY2hhciopCi1PU1RSU1RSRUFNX09QRVJBVE9SIChjaGFyKiwJCWNvbnN0IGNoYXIqKQotT1NUUlNUUkVBTV9PUEVSQVRPUiAodWludDhfdCosCQljb25zdCBjaGFyKikKLU9TVFJTVFJFQU1fT1BFUkFUT1IgKGNvbnN0IHVpbnQ4X3QqLAljb25zdCBjaGFyKikKLU9TVFJTVFJFQU1fT1BFUkFUT1IgKGNvbnN0IHN0cmluZyYsCWNvbnN0IHN0cmluZyYpCi1PU1RSU1RSRUFNX09QRVJBVE9SIChpb3NfYmFzZTo6Zm10ZmxhZ3MsaW9zX2Jhc2U6OmZtdGZsYWdzKQotT1NUUlNUUkVBTV9PUEVSQVRPUiAoaW50OF90LAkJdWludDhfdCkKLU9TVFJTVFJFQU1fT1BFUkFUT1IgKHVpbnQ4X3QsCQl1aW50OF90KQotT1NUUlNUUkVBTV9PUEVSQVRPUiAoc2hvcnQgaW50LAkJaW50KQotT1NUUlNUUkVBTV9PUEVSQVRPUiAodW5zaWduZWQgc2hvcnQsCXVuc2lnbmVkIGludCkKLU9TVFJTVFJFQU1fT1BFUkFUT1IgKGludCwJCWludCkKLU9TVFJTVFJFQU1fT1BFUkFUT1IgKHVuc2lnbmVkIGludCwJdW5zaWduZWQgaW50KQotT1NUUlNUUkVBTV9PUEVSQVRPUiAobG9uZywJCWxvbmcpCi1PU1RSU1RSRUFNX09QRVJBVE9SICh1bnNpZ25lZCBsb25nLAl1bnNpZ25lZCBsb25nKQotT1NUUlNUUkVBTV9PUEVSQVRPUiAoZmxvYXQsCQlmbG9hdCkKLU9TVFJTVFJFQU1fT1BFUkFUT1IgKGRvdWJsZSwJCWRvdWJsZSkKLU9TVFJTVFJFQU1fT1BFUkFUT1IgKGJvb2wsCQlib29sKQotT1NUUlNUUkVBTV9PUEVSQVRPUiAod2NoYXJfdCwJCXdjaGFyX3QpCi0jaWYgSEFWRV9USFJFRV9DSEFSX1RZUEVTCi1PU1RSU1RSRUFNX09QRVJBVE9SIChjaGFyLAkJdWludDhfdCkKLSNlbmRpZgotI2lmIEhBVkVfTE9OR19MT05HCi1PU1RSU1RSRUFNX09QRVJBVE9SIChsb25nIGxvbmcsCQlsb25nIGxvbmcpCi1PU1RSU1RSRUFNX09QRVJBVE9SICh1bnNpZ25lZCBsb25nIGxvbmcsIHVuc2lnbmVkIGxvbmcgbG9uZykKLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9zdHJtc2l6ZS5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvc3RybXNpemUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTg4OGUxNS4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC9zdHJtc2l6ZS5oCisrKyAvZGV2L251bGwKQEAgLTEsMTM1ICswLDAgQEAKLS8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB1c3RsIGxpYnJhcnksIGFuIFNUTCBpbXBsZW1lbnRhdGlvbi4KLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgYnkgTWlrZSBTaGFyb3YgPG1zaGFyb3ZAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotLy8gVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KLS8vCi0vLy8gXGZpbGUgc3RybXNpemUuaAotLy8vIFxicmllZiBUaGlzIGZpbGUgY29udGFpbnMgc3RyZWFtX3NpemVfb2YgZnVuY3Rpb25zIGZvciBiYXNpYyB0eXBlcyBhbmQgKlNUUkVBTUFCTEUgbWFjcm9zLgotLy8vIHN0cmVhbV9zaXplX29mIGZ1bmN0aW9ucyByZXR1cm4gdGhlIHNpemUgb2YgdGhlIG9iamVjdCdzIGRhdGEgdGhhdCBpcyB3cml0dGVuIG9yCi0vLy8gcmVhZCBmcm9tIGEgc3RyZWFtLgotLy8KLQotI2lmbmRlZiBTVFJNU0laRV9IXzA1MkZGMTZCMkQ4QTYwODc2MUJGMTAzMzNEMDY1MDczCi0jZGVmaW5lIFNUUk1TSVpFX0hfMDUyRkYxNkIyRDhBNjA4NzYxQkYxMDMzM0QwNjUwNzMKLQotI2luY2x1ZGUgInVhc3NlcnQuaCIKLQotbmFtZXNwYWNlIHVzdGwgewotCi0vLy8gUmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgZ2l2ZW4gb2JqZWN0LiBPdmVybG9hZHMgZm9yIHN0YW5kYXJkIHR5cGVzIGFyZSBhdmFpbGFibGUuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSBzaXplX3Qgc3RyZWFtX3NpemVfb2YgKFQqKQl7IHJldHVybiAoc2l6ZW9mKFQqKSk7CQl9Ci0jaWZuZGVmIERPWFlHRU5fU0hPVUxEX0lHTk9SRV9USElTCi1pbmxpbmUgc2l6ZV90IHN0cmVhbV9zaXplX29mIChpbnQ4X3QpCXsgcmV0dXJuIChzaXplb2YoaW50OF90KSk7CX0KLWlubGluZSBzaXplX3Qgc3RyZWFtX3NpemVfb2YgKHVpbnQ4X3QpCXsgcmV0dXJuIChzaXplb2YodWludDhfdCkpOwl9Ci1pbmxpbmUgc2l6ZV90IHN0cmVhbV9zaXplX29mIChpbnQxNl90KQl7IHJldHVybiAoc2l6ZW9mKGludDE2X3QpKTsJfQotaW5saW5lIHNpemVfdCBzdHJlYW1fc2l6ZV9vZiAodWludDE2X3QpCXsgcmV0dXJuIChzaXplb2YodWludDE2X3QpKTsJfQotaW5saW5lIHNpemVfdCBzdHJlYW1fc2l6ZV9vZiAoaW50MzJfdCkJeyByZXR1cm4gKHNpemVvZihpbnQzMl90KSk7CX0KLWlubGluZSBzaXplX3Qgc3RyZWFtX3NpemVfb2YgKHVpbnQzMl90KQl7IHJldHVybiAoc2l6ZW9mKHVpbnQzMl90KSk7CX0KLWlubGluZSBzaXplX3Qgc3RyZWFtX3NpemVfb2YgKGZsb2F0KQl7IHJldHVybiAoc2l6ZW9mKGZsb2F0KSk7CX0KLWlubGluZSBzaXplX3Qgc3RyZWFtX3NpemVfb2YgKGRvdWJsZSkJeyByZXR1cm4gKHNpemVvZihkb3VibGUpKTsJfQotaW5saW5lIHNpemVfdCBzdHJlYW1fc2l6ZV9vZiAoYm9vbCkJeyByZXR1cm4gKHNpemVvZih1aW50OF90KSk7CX0KLWlubGluZSBzaXplX3Qgc3RyZWFtX3NpemVfb2YgKHdjaGFyX3QpCXsgcmV0dXJuIChzaXplb2Yod2NoYXJfdCkpOwl9Ci0jaWYgSEFWRV9USFJFRV9DSEFSX1RZUEVTCi1pbmxpbmUgc2l6ZV90IHN0cmVhbV9zaXplX29mIChjaGFyKQl7IHJldHVybiAoc2l6ZW9mKGNoYXIpKTsJfQotI2VuZGlmCi0jaWYgSEFWRV9JTlQ2NF9UCi1pbmxpbmUgc2l6ZV90IHN0cmVhbV9zaXplX29mIChpbnQ2NF90KQl7IHJldHVybiAoc2l6ZW9mKGludDY0X3QpKTsJfQotaW5saW5lIHNpemVfdCBzdHJlYW1fc2l6ZV9vZiAodWludDY0X3QpCXsgcmV0dXJuIChzaXplb2YodWludDY0X3QpKTsJfQotI2VuZGlmCi0jaWYgU0laRV9PRl9MT05HID09IFNJWkVfT0ZfSU5UCi1pbmxpbmUgc2l6ZV90IHN0cmVhbV9zaXplX29mIChsb25nIHYpCQkJeyByZXR1cm4gKHNpemVvZiAodikpOwl9Ci1pbmxpbmUgc2l6ZV90IHN0cmVhbV9zaXplX29mICh1bnNpZ25lZCBsb25nIHYpCQl7IHJldHVybiAoc2l6ZW9mICh2KSk7CX0KLSNlbmRpZgotI2lmIEhBVkVfTE9OR19MT05HICYmICghSEFWRV9JTlQ2NF9UIHx8IFNJWkVfT0ZfTE9OR19MT05HID4gOCkKLWlubGluZSBzaXplX3Qgc3RyZWFtX3NpemVfb2YgKGxvbmcgbG9uZyB2KQkJeyByZXR1cm4gKHNpemVvZiAodikpOwl9Ci1pbmxpbmUgc2l6ZV90IHN0cmVhbV9zaXplX29mICh1bnNpZ25lZCBsb25nIGxvbmcgdikJeyByZXR1cm4gKHNpemVvZiAodikpOwl9Ci0jZW5kaWYKLSNlbmRpZiAvLyBET1hZR0VOX1NIT1VMRF9JR05PUkVfVEhJUwotCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KLS8vLyBEZWNsYXJlcyB0aGF0IFQgaXMgbm90IHdyaXR0ZW4gdG8gaXN0cmVhbS9vc3RyZWFtLgotI2RlZmluZSBOT1RfU1RSRUFNQUJMRShUKQlcCi0gICAgbmFtZXNwYWNlIHVzdGwgewkJXAotCWlubGluZSBpc3RyZWFtJiBvcGVyYXRvcj4+IChpc3RyZWFtJiBpcywgVCYpCQl7IHJldHVybiAoaXMpOyB9CVwKLQlpbmxpbmUgb3N0cmVhbSYgb3BlcmF0b3I8PCAob3N0cmVhbSYgb3MsIGNvbnN0IFQmKQl7IHJldHVybiAob3MpOyB9CVwKLQlpbmxpbmUgc2l6ZV90IHN0cmVhbV9zaXplX29mIChjb25zdCBUJikJCQl7IHJldHVybiAoMCk7IH0JCVwKLSAgICB9Ci0KLS8vCi0vLyBFeHRyYSBvdmVybG9hZHMgaW4gdGhpcyBtYWNybyBhcmUgbmVlZGVkIGJlY2F1c2UgaXQgaXMgdGhlIG9uZSB1c2VkIGZvcgotLy8gbWFyc2hhbGxpbmcgcG9pbnRlcnMuIFBhc3NpbmcgYSBwb2ludGVyIHRvIHN0cmVhbV9zaXplX29mIGNyZWF0ZXMgYQotLy8gY29udmVyc2lvbiBhbWJpZ3VpdHkgYmV0d2VlbiBjb252ZXJ0aW5nIHRvIGNvbnN0IHBvaW50ZXImIGFuZCBjb252ZXJ0aW5nCi0vLyB0byBib29sOyB0aGUgY29tcGlsZXIgYWx3YXlzIGNob29zZXMgdGhlIGJvb2wgY29udmVyc2lvbiAoYmVjYXVzZSBpdAotLy8gcmVxdWlyZXMgMSBjb252ZXJzaW9uIGluc3RlYWQgb2YgMiBmb3IgdGhlIG90aGVyIGNob2ljZSkuIFRoZXJlIGlzIGxpdHRsZQotLy8gcG9pbnQgaW4gYWRkaW5nIHRoZSBvdmVybG9hZHMgdG8gb3RoZXIgbWFjcm9zLCBzaW5jZSB0aGV5IGFyZSBuZXZlciB1c2VkCi0vLyBmb3IgcG9pbnRlcnMuCi0vLwotLy8vIERlY2xhcmVzIHRoYXQgVCBpcyB0byBiZSB3cml0dGVuIGFzIGlzIGludG8gYmluYXJ5IHN0cmVhbXMuCi0jZGVmaW5lIElOVEVHUkFMX1NUUkVBTUFCTEUoVCkJXAotICAgIG5hbWVzcGFjZSB1c3RsIHsJCVwKLQlpbmxpbmUgaXN0cmVhbSYgb3BlcmF0b3I+PiAoaXN0cmVhbSYgaXMsIFQmIHYpCQl7IGlzLmlyZWFkKHYpOyAgcmV0dXJuIChpcyk7IH0JXAotCWlubGluZSBvc3RyZWFtJiBvcGVyYXRvcjw8IChvc3RyZWFtJiBvcywgY29uc3QgVCYgdikJeyBvcy5pd3JpdGUodik7IHJldHVybiAob3MpOyB9CVwKLQlpbmxpbmUgb3N0cmVhbSYgb3BlcmF0b3I8PCAob3N0cmVhbSYgb3MsIFQmIHYpCQl7IG9zLml3cml0ZSh2KTsgcmV0dXJuIChvcyk7IH0JXAotCWlubGluZSBzaXplX3Qgc3RyZWFtX3NpemVfb2YgKGNvbnN0IFQmIHYpCQl7IHJldHVybiAoc2l6ZW9mKHYpKTsgfQkJXAotCWlubGluZSBzaXplX3Qgc3RyZWFtX3NpemVfb2YgKFQmIHYpCQkJeyByZXR1cm4gKHNpemVvZih2KSk7IH0JCVwKLSAgICB9Ci0KLSNpZmRlZiBOREVCVUcKLSAgICAjZGVmaW5lIFNURF9TVFJFQU1BQkxFX1NaQ0hLX0JFR0lOCi0gICAgI2RlZmluZSBTVERfU1RSRUFNQUJMRV9TWkNIS19FTkQKLSNlbHNlCi0gICAgI2RlZmluZSBTVERfU1RSRUFNQUJMRV9TWkNIS19CRUdJTgkJXAotCWFzc2VydCAob3MuYWxpZ25lZCAoYWxpZ25vZiAodikpKTsJXAotCWNvbnN0IHVvZmZfdCB2U3RhcnQgKG9zLnBvcygpKQotICAgICNkZWZpbmUgU1REX1NUUkVBTUFCTEVfU1pDSEtfRU5ECQlcCi0JaWYgKG9zLnBvcygpIC0gdlN0YXJ0ICE9IHYuc3RyZWFtX3NpemUoKSkgXAotCSAgICB0aHJvdyBzdHJlYW1fYm91bmRzX2V4Y2VwdGlvbiAoIndyaXRlIiwgdHlwZWlkKHYpLm5hbWUoKSwgdlN0YXJ0LCBvcy5wb3MoKSAtIHZTdGFydCwgdi5zdHJlYW1fc2l6ZSgpKQotI2VuZGlmCi0KLS8vLyBEZWNsYXJlcyB0aGF0IFQgY29udGFpbnMgcmVhZCwgd3JpdGUsIGFuZCBzdHJlYW1fc2l6ZSBtZXRob2RzLgotI2RlZmluZSBTVERfU1RSRUFNQUJMRShUKQlcCi0gICAgbmFtZXNwYWNlIHVzdGwgewkJXAotCWlubGluZSBpc3RyZWFtJiBvcGVyYXRvcj4+IChpc3RyZWFtJiBpcywgVCYgdikJCXsgYXNzZXJ0IChpcy5hbGlnbmVkIChhbGlnbm9mICh2KSkpOyB2LnJlYWQgKGlzKTsgIHJldHVybiAoaXMpOyB9CVwKLQlpbmxpbmUgb3N0cmVhbSYgb3BlcmF0b3I8PCAob3N0cmVhbSYgb3MsIGNvbnN0IFQmIHYpCXsgU1REX1NUUkVBTUFCTEVfU1pDSEtfQkVHSU47IHYud3JpdGUgKG9zKTsgU1REX1NUUkVBTUFCTEVfU1pDSEtfRU5EOyByZXR1cm4gKG9zKTsgfQlcCi0JaW5saW5lIHNpemVfdCBzdHJlYW1fc2l6ZV9vZiAoY29uc3QgVCYgdikJCXsgcmV0dXJuICh2LnN0cmVhbV9zaXplKCkpOyB9CVwKLSAgICB9Ci0KLS8vLyBEZWNsYXJlcyB0aGF0IFQgaXMgdG8gYmUgY2FzdCBpbnRvIFRTVUIgZm9yIHN0cmVhbWluZy4KLSNkZWZpbmUgQ0FTVF9TVFJFQU1BQkxFKFQsVFNVQikJXAotICAgIG5hbWVzcGFjZSB1c3RsIHsJCVwKLQlpbmxpbmUgaXN0cmVhbSYgb3BlcmF0b3I+PiAoaXN0cmVhbSYgaXMsIFQmIHYpCQl7IFRTVUIgc3Y7IGlzID4+IHN2OyB2ID0gKFQpKHN2KTsgcmV0dXJuIChpcyk7IH0JXAotCWlubGluZSBvc3RyZWFtJiBvcGVyYXRvcjw8IChvc3RyZWFtJiBvcywgY29uc3QgVCYgdikJeyBvcyA8PCBUU1VCKHYpOyByZXR1cm4gKG9zKTsgfQkJCVwKLQlpbmxpbmUgc2l6ZV90IHN0cmVhbV9zaXplX29mIChjb25zdCBUJiB2KQkJeyByZXR1cm4gKHNpemVvZihUU1VCKHYpKSk7IH0JCQkJXAotICAgIH0KLQotLy8vIFBsYWNlZCBpbnRvIGEgY2xhc3MgaXQgZGVjbGFyZXMgdGhlIG1ldGhvZHMgcmVxdWlyZWQgYnkgU1REX1NUUkVBTUFCTEUuIFN5bnRhY3RpYyBzdWdhci4KLSNkZWZpbmUgREVDTEFSRV9TVERfU1RSRUFNQUJMRQkJCVwKLSAgICBwdWJsaWM6CQkJCQlcCi0Jdm9pZAlyZWFkIChpc3RyZWFtJiBpcyk7CQlcCi0Jdm9pZAl3cml0ZSAob3N0cmVhbSYgb3MpIGNvbnN0OwlcCi0Jc2l6ZV90CXN0cmVhbV9zaXplICh2b2lkKSBjb25zdAotCi0vLy8gRGVjbGFyZXMgXHAgVCB0byBiZSB3cml0YWJsZSB0byB0ZXh0IHN0cmVhbXMuIFJlYWRpbmcgaXMgbm90IGltcGxlbWVudGVkIGJlY2F1c2UgeW91IHNob3VsZCBub3QgZG8gaXQuCi0jZGVmaW5lIFRFWFRfU1RSRUFNQUJMRShUKQlcCi0gICAgbmFtZXNwYWNlIHVzdGwgewkJXAotCWlubGluZSBvc3RyaW5nc3RyZWFtJiBvcGVyYXRvcjw8IChvc3RyaW5nc3RyZWFtJiBvcywgY29uc3QgVCYgdikJXAotCSAgICB7IHYudGV4dF93cml0ZSAob3MpOyByZXR1cm4gKG9zKTsgfQlcCi0gICAgfQotCi0vLy8gU3BlY2lmaWVzIHRoYXQgXHAgVCBpcyBwcmludGVkIGJ5IHVzaW5nIGl0IGFzIGFuIGluZGV4IGludG8gXHAgTmFtZXMgc3RyaW5nIGFycmF5LgotI2RlZmluZSBMT09LVVBfVEVYVF9TVFJFQU1BQkxFKFQsTmFtZXMsbk5hbWVzKQlcCi0gICAgbmFtZXNwYWNlIHVzdGwgewkJXAotCWlubGluZSBvc3RyaW5nc3RyZWFtJiBvcGVyYXRvcjw8IChvc3RyaW5nc3RyZWFtJiBvcywgY29uc3QgVCYgdikJXAotCXsJCQkJXAotCSAgICBpZiAodW9mZl90KHYpIDwgKG5OYW1lcykpCVwKLQkJb3MgPDwgTmFtZXNbdl07CQlcCi0JICAgIGVsc2UJCQlcCi0JCW9zIDw8IHVvZmZfdCh2KTsJXAotCSAgICByZXR1cm4gKG9zKTsJCVwKLQl9CQkJCVwKLSAgICB9Ci0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91YWxnby5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdWFsZ28uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDdiNjZkMC4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91YWxnby5oCisrKyAvZGV2L251bGwKQEAgLTEsNjc3ICswLDAgQEAKLS8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB1c3RsIGxpYnJhcnksIGFuIFNUTCBpbXBsZW1lbnRhdGlvbi4KLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgYnkgTWlrZSBTaGFyb3YgPG1zaGFyb3ZAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotLy8gVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KLS8vCi0vLyB1YWxnby5oCi0vLwotLy8gSW1wbGVtZW50YXRpb24gb2YgU1RMIGFsZ29yaXRobXMuCi0vLwotLy8gVGhlIGZ1bmN0aW9uIHByb3RvdHlwZXMgYXJlIGNvcGllZAotLy8gZXhhY3RseSBmcm9tIHRoZSBTR0kgdmVyc2lvbiBvZiBTVEwgZG9jdW1lbnRhdGlvbiBhbG9uZyB3aXRoIGNvbW1lbnRzIGFib3V0Ci0vLyB0aGVpciB1c2UuIFRoZSBjb2RlIGlzIE5PVCB0aGUgc2FtZSwgdGhvdWdoIHRoZSBmdW5jdGlvbmFsaXR5IHVzdWFsbHkgaXMuCi0vLwotCi0jaWZuZGVmIFVBTEdPX0hfNzExQUI0MjE0RDQxN0E1MTE2NjY5NEQ0N0E2NjJENkUKLSNkZWZpbmUgVUFMR09fSF83MTFBQjQyMTRENDE3QTUxMTY2Njk0RDQ3QTY2MkQ2RQotCi0jaW5jbHVkZSAidXBhaXIuaCIKLSNpbmNsdWRlICJ1YWxnb2Jhc2UuaCIKLSNpbmNsdWRlICJ1ZnVuY3Rpb24uaCIKLSNpbmNsdWRlICJ1cHJlZGFsZ28uaCIKLSNpbmNsdWRlICJ1bWVtb3J5LmgiCi0jaW5jbHVkZSA8c3RkbGliLmg+CS8vIGZvciByYW5kKCkKLQotbmFtZXNwYWNlIHVzdGwgewotCi0vLy8gU3dhcHMgY29ycmVzcG9uZGluZyBlbGVtZW50cyBvZiBbZmlyc3QsIGxhc3QpIGFuZCBbcmVzdWx0LCkKLS8vLyBcaW5ncm91cCBTd2FwQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yMSwgdHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yMj4KLWlubGluZSBGb3J3YXJkSXRlcmF0b3IyIHN3YXBfcmFuZ2VzIChGb3J3YXJkSXRlcmF0b3IxIGZpcnN0LCBGb3J3YXJkSXRlcmF0b3IyIGxhc3QsIEZvcndhcmRJdGVyYXRvcjIgcmVzdWx0KQotewotICAgIGZvciAoOyBmaXJzdCAhPSBsYXN0OyArK2ZpcnN0LCArK3Jlc3VsdCkKLQlpdGVyX3N3YXAgKGZpcnN0LCByZXN1bHQpOwotICAgIHJldHVybiAocmVzdWx0KTsKLX0KLQotLy8vIFJldHVybnMgdGhlIGZpcnN0IGl0ZXJhdG9yIGkgaW4gdGhlIHJhbmdlIFtmaXJzdCwgbGFzdCkgc3VjaCB0aGF0Ci0vLy8gKmkgPT0gdmFsdWUuIFJldHVybnMgbGFzdCBpZiBubyBzdWNoIGl0ZXJhdG9yIGV4aXN0cy4gCi0vLy8gXGluZ3JvdXAgU2VhcmNoaW5nQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgRXF1YWxpdHlDb21wYXJhYmxlPgotaW5saW5lIElucHV0SXRlcmF0b3IgZmluZCAoSW5wdXRJdGVyYXRvciBmaXJzdCwgSW5wdXRJdGVyYXRvciBsYXN0LCBjb25zdCBFcXVhbGl0eUNvbXBhcmFibGUmIHZhbHVlKQotewotICAgIHdoaWxlIChmaXJzdCAhPSBsYXN0ICYmICEoKmZpcnN0ID09IHZhbHVlKSkKLQkrKyBmaXJzdDsKLSAgICByZXR1cm4gKGZpcnN0KTsKLX0KLQotLy8vIFJldHVybnMgdGhlIGZpcnN0IGl0ZXJhdG9yIHN1Y2ggdGhhdCAqaSA9PSAqKGkgKyAxKQotLy8vIFxpbmdyb3VwIFNlYXJjaGluZ0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvcj4KLUZvcndhcmRJdGVyYXRvciBhZGphY2VudF9maW5kIChGb3J3YXJkSXRlcmF0b3IgZmlyc3QsIEZvcndhcmRJdGVyYXRvciBsYXN0KQotewotICAgIGlmIChmaXJzdCAhPSBsYXN0KQotCWZvciAoRm9yd2FyZEl0ZXJhdG9yIHByZXYgPSBmaXJzdDsgKytmaXJzdCAhPSBsYXN0OyArKyBwcmV2KQotCSAgICBpZiAoKnByZXYgPT0gKmZpcnN0KQotCQlyZXR1cm4gKHByZXYpOwotICAgIHJldHVybiAobGFzdCk7Ci19Ci0KLS8vLyBSZXR1cm5zIHRoZSBwb2ludGVyIHRvIHRoZSBmaXJzdCBwYWlyIG9mIHVuZXF1YWwgZWxlbWVudHMuCi0vLy8gXGluZ3JvdXAgU2VhcmNoaW5nQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyYXRvcj4KLXBhaXI8SW5wdXRJdGVyYXRvcixJbnB1dEl0ZXJhdG9yPgotbWlzbWF0Y2ggKElucHV0SXRlcmF0b3IgZmlyc3QxLCBJbnB1dEl0ZXJhdG9yIGxhc3QxLCBJbnB1dEl0ZXJhdG9yIGZpcnN0MikKLXsKLSAgICB3aGlsZSAoZmlyc3QxICE9IGxhc3QxICYmICpmaXJzdDEgPT0gKmZpcnN0MikKLQkrKyBmaXJzdDEsICsrIGZpcnN0MjsKLSAgICByZXR1cm4gKG1ha2VfcGFpciAoZmlyc3QxLCBmaXJzdDIpKTsKLX0KLQotLy8vIFxicmllZiBSZXR1cm5zIHRydWUgaWYgdHdvIHJhbmdlcyBhcmUgZXF1YWwuCi0vLy8gVGhpcyBpcyBhbiBleHRlbnNpb24sIHByZXNlbnQgaW4gdVNUTCBhbmQgU0dJIFNUTC4KLS8vLyBcaW5ncm91cCBTZWFyY2hpbmdBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yPgotaW5saW5lIGJvb2wgZXF1YWwgKElucHV0SXRlcmF0b3IgZmlyc3QxLCBJbnB1dEl0ZXJhdG9yIGxhc3QxLCBJbnB1dEl0ZXJhdG9yIGZpcnN0MikKLXsKLSAgICByZXR1cm4gKG1pc21hdGNoIChmaXJzdDEsIGxhc3QxLCBmaXJzdDIpLmZpcnN0ID09IGxhc3QxKTsKLX0KLQotLy8vIENvdW50IGZpbmRzIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gW2ZpcnN0LCBsYXN0KSB0aGF0IGFyZSBlcXVhbAotLy8vIHRvIHZhbHVlLiBNb3JlIHByZWNpc2VseSwgdGhlIGZpcnN0IHZlcnNpb24gb2YgY291bnQgcmV0dXJucyB0aGUKLS8vLyBudW1iZXIgb2YgaXRlcmF0b3JzIGkgaW4gW2ZpcnN0LCBsYXN0KSBzdWNoIHRoYXQgKmkgPT0gdmFsdWUuCi0vLy8gXGluZ3JvdXAgU2VhcmNoaW5nQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgRXF1YWxpdHlDb21wYXJhYmxlPgotaW5saW5lIHNpemVfdCBjb3VudCAoSW5wdXRJdGVyYXRvciBmaXJzdCwgSW5wdXRJdGVyYXRvciBsYXN0LCBjb25zdCBFcXVhbGl0eUNvbXBhcmFibGUmIHZhbHVlKQotewotICAgIHNpemVfdCB0b3RhbCA9IDA7Ci0gICAgZm9yICg7IGZpcnN0ICE9IGxhc3Q7ICsrZmlyc3QpCi0JaWYgKCpmaXJzdCA9PSB2YWx1ZSkKLQkgICAgKysgdG90YWw7Ci0gICAgcmV0dXJuICh0b3RhbCk7Ci19Ci0KLS8vLwotLy8vIFRoZSBmaXJzdCB2ZXJzaW9uIG9mIHRyYW5zZm9ybSBwZXJmb3JtcyB0aGUgb3BlcmF0aW9uIG9wKCppKSBmb3IgZWFjaAotLy8vIGl0ZXJhdG9yIGkgaW4gdGhlIHJhbmdlIFtmaXJzdCwgbGFzdCksIGFuZCBhc3NpZ25zIHRoZSByZXN1bHQgb2YgdGhhdAotLy8vIG9wZXJhdGlvbiB0byAqbywgd2hlcmUgbyBpcyB0aGUgY29ycmVzcG9uZGluZyBvdXRwdXQgaXRlcmF0b3IuIFRoYXQgaXMsCi0vLy8gZm9yIGVhY2ggbiBzdWNoIHRoYXQgMCA8PSBuIDwgbGFzdCAtIGZpcnN0LCBpdCBwZXJmb3JtcyB0aGUgYXNzaWdubWVudAotLy8vICoocmVzdWx0ICsgbikgPSBvcCgqKGZpcnN0ICsgbikpLgotLy8vIFRoZSByZXR1cm4gdmFsdWUgaXMgcmVzdWx0ICsgKGxhc3QgLSBmaXJzdCkuCi0vLy8gXGluZ3JvdXAgTXV0YXRpbmdBbGdvcml0aG1zCi0vLy8gXGluZ3JvdXAgUHJlZGljYXRlQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3IsIHR5cGVuYW1lIFVuYXJ5RnVuY3Rpb24+Ci1pbmxpbmUgT3V0cHV0SXRlcmF0b3IgdHJhbnNmb3JtIChJbnB1dEl0ZXJhdG9yIGZpcnN0LCBJbnB1dEl0ZXJhdG9yIGxhc3QsIE91dHB1dEl0ZXJhdG9yIHJlc3VsdCwgVW5hcnlGdW5jdGlvbiBvcCkKLXsKLSAgICBmb3IgKDsgZmlyc3QgIT0gbGFzdDsgKytyZXN1bHQsICsrZmlyc3QpCi0JKnJlc3VsdCA9IG9wICgqZmlyc3QpOwotICAgIHJldHVybiAocmVzdWx0KTsKLX0KLQotLy8vCi0vLy8gVGhlIHNlY29uZCB2ZXJzaW9uIG9mIHRyYW5zZm9ybSBpcyB2ZXJ5IHNpbWlsYXIsIGV4Y2VwdCB0aGF0IGl0IHVzZXMgYQotLy8vIEJpbmFyeSBGdW5jdGlvbiBpbnN0ZWFkIG9mIGEgVW5hcnkgRnVuY3Rpb246IGl0IHBlcmZvcm1zIHRoZSBvcGVyYXRpb24KLS8vLyBvcCgqaTEsICppMikgZm9yIGVhY2ggaXRlcmF0b3IgaTEgaW4gdGhlIHJhbmdlIFtmaXJzdDEsIGxhc3QxKSBhbmQgYXNzaWducwotLy8vIHRoZSByZXN1bHQgdG8gKm8sIHdoZXJlIGkyIGlzIHRoZSBjb3JyZXNwb25kaW5nIGl0ZXJhdG9yIGluIHRoZSBzZWNvbmQKLS8vLyBpbnB1dCByYW5nZSBhbmQgd2hlcmUgbyBpcyB0aGUgY29ycmVzcG9uZGluZyBvdXRwdXQgaXRlcmF0b3IuIFRoYXQgaXMsCi0vLy8gZm9yIGVhY2ggbiBzdWNoIHRoYXQgMCA8PSBuIDwgbGFzdDEgLSBmaXJzdDEsIGl0IHBlcmZvcm1zIHRoZSBhc3NpZ25tZW50Ci0vLy8gKihyZXN1bHQgKyBuKSA9IG9wKCooZmlyc3QxICsgbiksICooZmlyc3QyICsgbikuCi0vLy8gVGhlIHJldHVybiB2YWx1ZSBpcyByZXN1bHQgKyAobGFzdDEgLSBmaXJzdDEpLgotLy8vIFxpbmdyb3VwIE11dGF0aW5nQWxnb3JpdGhtcwotLy8vIFxpbmdyb3VwIFByZWRpY2F0ZUFsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcmF0b3IxLCB0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yMiwgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3IsIHR5cGVuYW1lIEJpbmFyeUZ1bmN0aW9uPgotaW5saW5lIE91dHB1dEl0ZXJhdG9yIHRyYW5zZm9ybSAoSW5wdXRJdGVyYXRvcjEgZmlyc3QxLCBJbnB1dEl0ZXJhdG9yMSBsYXN0MSwgSW5wdXRJdGVyYXRvcjIgZmlyc3QyLCBPdXRwdXRJdGVyYXRvciByZXN1bHQsIEJpbmFyeUZ1bmN0aW9uIG9wKQotewotICAgIGZvciAoOyBmaXJzdDEgIT0gbGFzdDE7ICsrcmVzdWx0LCArK2ZpcnN0MSwgKytmaXJzdDIpCi0JKnJlc3VsdCA9IG9wICgqZmlyc3QxLCAqZmlyc3QyKTsKLSAgICByZXR1cm4gKHJlc3VsdCk7Ci19Ci0KLS8vLyBSZXBsYWNlIHJlcGxhY2VzIGV2ZXJ5IGVsZW1lbnQgaW4gdGhlIHJhbmdlIFtmaXJzdCwgbGFzdCkgZXF1YWwgdG8KLS8vLyBvbGRfdmFsdWUgd2l0aCBuZXdfdmFsdWUuIFRoYXQgaXM6IGZvciBldmVyeSBpdGVyYXRvciBpLAotLy8vIGlmICppID09IG9sZF92YWx1ZSB0aGVuIGl0IHBlcmZvcm1zIHRoZSBhc3NpZ25tZW50ICppID0gbmV3X3ZhbHVlLgotLy8vIFxpbmdyb3VwIE11dGF0aW5nQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBUPgotaW5saW5lIHZvaWQgcmVwbGFjZSAoRm9yd2FyZEl0ZXJhdG9yIGZpcnN0LCBGb3J3YXJkSXRlcmF0b3IgbGFzdCwgY29uc3QgVCYgb2xkX3ZhbHVlLCBjb25zdCBUJiBuZXdfdmFsdWUpCi17Ci0gICAgZm9yICg7IGZpcnN0ICE9IGxhc3Q7ICsrZmlyc3QpCi0JaWYgKCpmaXJzdCA9PSBvbGRfdmFsdWUpCi0JICAgICpmaXJzdCA9IG5ld192YWx1ZTsKLX0KLQotLy8vIFJlcGxhY2VfY29weSBjb3BpZXMgZWxlbWVudHMgZnJvbSB0aGUgcmFuZ2UgW2ZpcnN0LCBsYXN0KSB0byB0aGUgcmFuZ2UKLS8vLyBbcmVzdWx0LCByZXN1bHQgKyAobGFzdC1maXJzdCkpLCBleGNlcHQgdGhhdCBhbnkgZWxlbWVudCBlcXVhbCB0byBvbGRfdmFsdWUKLS8vLyBpcyBub3QgY29waWVkOyBuZXdfdmFsdWUgaXMgY29waWVkIGluc3RlYWQuIE1vcmUgcHJlY2lzZWx5LCBmb3IgZXZlcnkKLS8vLyBpbnRlZ2VyIG4gc3VjaCB0aGF0IDAgPD0gbiA8IGxhc3QtZmlyc3QsIHJlcGxhY2VfY29weSBwZXJmb3JtcyB0aGUKLS8vLyBhc3NpZ25tZW50ICoocmVzdWx0K24pID0gbmV3X3ZhbHVlIGlmICooZmlyc3QrbikgPT0gb2xkX3ZhbHVlLCBhbmQKLS8vLyAqKHJlc3VsdCtuKSA9ICooZmlyc3Qrbikgb3RoZXJ3aXNlLgotLy8vIFxpbmdyb3VwIE11dGF0aW5nQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3IsIHR5cGVuYW1lIFQ+Ci1pbmxpbmUgT3V0cHV0SXRlcmF0b3IgcmVwbGFjZV9jb3B5IChJbnB1dEl0ZXJhdG9yIGZpcnN0LCBJbnB1dEl0ZXJhdG9yIGxhc3QsIE91dHB1dEl0ZXJhdG9yIHJlc3VsdCwgY29uc3QgVCYgb2xkX3ZhbHVlLCBjb25zdCBUJiBuZXdfdmFsdWUpCi17Ci0gICAgZm9yICg7IGZpcnN0ICE9IGxhc3Q7ICsrcmVzdWx0LCArK2ZpcnN0KQotICAgICAgICAqcmVzdWx0ID0gKCpmaXJzdCA9PSBvbGRfdmFsdWUpID8gbmV3X3ZhbHVlIDogKmZpcnN0OwotfQotCi0vLy8gR2VuZXJhdGUgYXNzaWducyB0aGUgcmVzdWx0IG9mIGludm9raW5nIGdlbiwgYSBmdW5jdGlvbiBvYmplY3QgdGhhdAotLy8vIHRha2VzIG5vIGFyZ3VtZW50cywgdG8gZWFjaCBlbGVtZW50IGluIHRoZSByYW5nZSBbZmlyc3QsIGxhc3QpLgotLy8vIFxpbmdyb3VwIEdlbmVyYXRvckFsZ29yaXRobXMKLS8vLyBcaW5ncm91cCBQcmVkaWNhdGVBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIEdlbmVyYXRvcj4KLWlubGluZSB2b2lkIGdlbmVyYXRlIChGb3J3YXJkSXRlcmF0b3IgZmlyc3QsIEZvcndhcmRJdGVyYXRvciBsYXN0LCBHZW5lcmF0b3IgZ2VuKQotewotICAgIGZvciAoOyBmaXJzdCAhPSBsYXN0OyArK2ZpcnN0KQotCSpmaXJzdCA9IGdlbigpOwotfQotCi0vLy8gR2VuZXJhdGVfbiBhc3NpZ25zIHRoZSByZXN1bHQgb2YgaW52b2tpbmcgZ2VuLCBhIGZ1bmN0aW9uIG9iamVjdCB0aGF0Ci0vLy8gdGFrZXMgbm8gYXJndW1lbnRzLCB0byBlYWNoIGVsZW1lbnQgaW4gdGhlIHJhbmdlIFtmaXJzdCwgZmlyc3QrbikuCi0vLy8gVGhlIHJldHVybiB2YWx1ZSBpcyBmaXJzdCArIG4uCi0vLy8gXGluZ3JvdXAgR2VuZXJhdG9yQWxnb3JpdGhtcwotLy8vIFxpbmdyb3VwIFByZWRpY2F0ZUFsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBHZW5lcmF0b3I+Ci1pbmxpbmUgT3V0cHV0SXRlcmF0b3IgZ2VuZXJhdGVfbiAoT3V0cHV0SXRlcmF0b3IgZmlyc3QsIHNpemVfdCBuLCBHZW5lcmF0b3IgZ2VuKQotewotICAgIGZvciAodW9mZl90IGkgPSAwOyBpICE9IG47ICsraSwgKytmaXJzdCkKLQkqZmlyc3QgPSBnZW4oKTsKLSAgICByZXR1cm4gKGZpcnN0KTsKLX0KLQotLy8vIFxicmllZiBSZXZlcnNlIHJldmVyc2VzIGEgcmFuZ2UuCi0vLy8gVGhhdCBpczogZm9yIGV2ZXJ5IGkgc3VjaCB0aGF0IDAgPD0gaSA8PSAobGFzdCAtIGZpcnN0KSAvIDIpLAotLy8vIGl0IGV4Y2hhbmdlcyAqKGZpcnN0ICsgaSkgYW5kICoobGFzdCAtIChpICsgMSkpLgotLy8vIFxpbmdyb3VwIE11dGF0aW5nQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yPgotaW5saW5lIHZvaWQgcmV2ZXJzZSAoQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGZpcnN0LCBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgbGFzdCkKLXsKLSAgICBmb3IgKDsgZGlzdGFuY2UgKGZpcnN0LCAtLWxhc3QpID4gMDsgKytmaXJzdCkKLQlpdGVyX3N3YXAgKGZpcnN0LCBsYXN0KTsKLX0KLQotLy8vIFxicmllZiBSZXZlcnNlcyBbZmlyc3QsbGFzdCkgYW5kIHdyaXRlcyBpdCB0byBccCBvdXRwdXQuCi0vLy8gXGluZ3JvdXAgTXV0YXRpbmdBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBCaWRpcmVjdGlvbmFsSXRlcmF0b3IsIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yPgotaW5saW5lIE91dHB1dEl0ZXJhdG9yIHJldmVyc2VfY29weSAoQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGZpcnN0LCBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgbGFzdCwgT3V0cHV0SXRlcmF0b3IgcmVzdWx0KQotewotICAgIGZvciAoOyBmaXJzdCAhPSBsYXN0OyArK3Jlc3VsdCkKLQkqcmVzdWx0ID0gKi0tbGFzdDsKLSAgICByZXR1cm4gKHJlc3VsdCk7Ci19Ci0KLS8vLyBcYnJpZWYgRXhjaGFuZ2VzIHJhbmdlcyBbZmlyc3QsIG1pZGRsZSkgYW5kIFttaWRkbGUsIGxhc3QpCi0vLy8gXGluZ3JvdXAgTXV0YXRpbmdBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3I+Ci1Gb3J3YXJkSXRlcmF0b3Igcm90YXRlIChGb3J3YXJkSXRlcmF0b3IgZmlyc3QsIEZvcndhcmRJdGVyYXRvciBtaWRkbGUsIEZvcndhcmRJdGVyYXRvciBsYXN0KQotewotICAgIGlmIChmaXJzdCA9PSBtaWRkbGUgfHwgbWlkZGxlID09IGxhc3QpCi0JcmV0dXJuIChmaXJzdCk7Ci0gICAgcmV2ZXJzZSAoZmlyc3QsIG1pZGRsZSk7Ci0gICAgcmV2ZXJzZSAobWlkZGxlLCBsYXN0KTsKLSAgICBmb3IgKDtmaXJzdCAhPSBtaWRkbGUgJiYgbWlkZGxlICE9IGxhc3Q7ICsrZmlyc3QpCi0JaXRlcl9zd2FwIChmaXJzdCwgLS1sYXN0KTsKLSAgICByZXZlcnNlIChmaXJzdCwgKGZpcnN0ID09IG1pZGRsZSA/IGxhc3QgOiBtaWRkbGUpKTsKLSAgICByZXR1cm4gKGZpcnN0KTsKLX0KLQotLy8vIFNwZWNpYWxpemF0aW9uIGZvciBwb2ludGVycywgd2hpY2ggY2FuIGJlIHRyZWF0ZWQgaWRlbnRpY2FsbHkuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSBUKiByb3RhdGUgKFQqIGZpcnN0LCBUKiBtaWRkbGUsIFQqIGxhc3QpCi17Ci0gICAgcm90YXRlX2Zhc3QgKGZpcnN0LCBtaWRkbGUsIGxhc3QpOwotICAgIHJldHVybiAoZmlyc3QpOwotfQotIAotCi0vLy8gXGJyaWVmIEV4Y2hhbmdlcyByYW5nZXMgW2ZpcnN0LCBtaWRkbGUpIGFuZCBbbWlkZGxlLCBsYXN0KSBpbnRvIFxwIHJlc3VsdC4KLS8vLyBcaW5ncm91cCBNdXRhdGluZ0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3I+Ci1pbmxpbmUgT3V0cHV0SXRlcmF0b3Igcm90YXRlX2NvcHkgKEZvcndhcmRJdGVyYXRvciBmaXJzdCwgRm9yd2FyZEl0ZXJhdG9yIG1pZGRsZSwgRm9yd2FyZEl0ZXJhdG9yIGxhc3QsIE91dHB1dEl0ZXJhdG9yIHJlc3VsdCkKLXsKLSAgICByZXR1cm4gKGNvcHkgKGZpcnN0LCBtaWRkbGUsIGNvcHkgKG1pZGRsZSwgbGFzdCwgcmVzdWx0KSkpOwotfQotCi0vLy8gXGJyaWVmIENvbWJpbmVzIHR3byBzb3J0ZWQgcmFuZ2VzLgotLy8vIFxpbmdyb3VwIFNvcnRpbmdBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yMSwgdHlwZW5hbWUgSW5wdXRJdGVyYXRvcjIsIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yPgotT3V0cHV0SXRlcmF0b3IgbWVyZ2UgKElucHV0SXRlcmF0b3IxIGZpcnN0MSwgSW5wdXRJdGVyYXRvcjEgbGFzdDEsCi0JCSAgICAgIElucHV0SXRlcmF0b3IyIGZpcnN0MiwgSW5wdXRJdGVyYXRvcjIgbGFzdDIsIE91dHB1dEl0ZXJhdG9yIHJlc3VsdCkKLXsKLSAgICBmb3IgKDsgZmlyc3QxICE9IGxhc3QxICYmIGZpcnN0MiAhPSBsYXN0MjsgKytyZXN1bHQpIHsKLQlpZiAoKmZpcnN0MSA8ICpmaXJzdDIpCi0JICAgICpyZXN1bHQgPSAqZmlyc3QxKys7Ci0JZWxzZQotCSAgICAqcmVzdWx0ID0gKmZpcnN0MisrOwotICAgIH0KLSAgICBpZiAoZmlyc3QxIDwgbGFzdDEpCi0JcmV0dXJuIChjb3B5IChmaXJzdDEsIGxhc3QxLCByZXN1bHQpKTsKLSAgICBlbHNlCi0JcmV0dXJuIChjb3B5IChmaXJzdDIsIGxhc3QyLCByZXN1bHQpKTsKLX0KLQotLy8vIENvbWJpbmVzIHR3byBzb3J0ZWQgcmFuZ2VzIGZyb20gdGhlIHNhbWUgY29udGFpbmVyLgotLy8vIFxpbmdyb3VwIFNvcnRpbmdBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yPgotdm9pZCBpbnBsYWNlX21lcmdlIChJbnB1dEl0ZXJhdG9yIGZpcnN0LCBJbnB1dEl0ZXJhdG9yIG1pZGRsZSwgSW5wdXRJdGVyYXRvciBsYXN0KQotewotICAgIGZvciAoOyBtaWRkbGUgIT0gbGFzdDsgKytmaXJzdCkgewotCXdoaWxlICgqZmlyc3QgPCAqbWlkZGxlKQotCSAgICArKyBmaXJzdDsKLQlyZXZlcnNlIChmaXJzdCwgbWlkZGxlKTsKLQlyZXZlcnNlIChmaXJzdCwgKyttaWRkbGUpOwotICAgIH0KLX0KLQotLy8vIFJlbW92ZV9jb3B5IGNvcGllcyBlbGVtZW50cyB0aGF0IGFyZSBub3QgZXF1YWwgdG8gdmFsdWUgZnJvbSB0aGUgcmFuZ2UKLS8vLyBbZmlyc3QsIGxhc3QpIHRvIGEgcmFuZ2UgYmVnaW5uaW5nIGF0IHJlc3VsdC4gVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUKLS8vLyBlbmQgb2YgdGhlIHJlc3VsdGluZyByYW5nZS4gVGhpcyBvcGVyYXRpb24gaXMgc3RhYmxlLCBtZWFuaW5nIHRoYXQgdGhlCi0vLy8gcmVsYXRpdmUgb3JkZXIgb2YgdGhlIGVsZW1lbnRzIHRoYXQgYXJlIGNvcGllZCBpcyB0aGUgc2FtZSBhcyBpbiB0aGUKLS8vLyByYW5nZSBbZmlyc3QsIGxhc3QpLgotLy8vIFxpbmdyb3VwIE11dGF0aW5nQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3IsIHR5cGVuYW1lIFQ+Ci1PdXRwdXRJdGVyYXRvciByZW1vdmVfY29weSAoSW5wdXRJdGVyYXRvciBmaXJzdCwgSW5wdXRJdGVyYXRvciBsYXN0LCBPdXRwdXRJdGVyYXRvciByZXN1bHQsIGNvbnN0IFQmIHZhbHVlKQotewotICAgIGZvciAoOyBmaXJzdCAhPSBsYXN0OyArK2ZpcnN0KSB7Ci0JaWYgKCEoKmZpcnN0ID09IHZhbHVlKSkgewotCSAgICAqcmVzdWx0ID0gKmZpcnN0OwotCSAgICArKyByZXN1bHQ7Ci0JfQotICAgIH0KLSAgICByZXR1cm4gKHJlc3VsdCk7Ci19Ci0KLS8vLyBSZW1vdmVfY29weSBjb3BpZXMgZWxlbWVudHMgcG9pbnRlZCB0byBieSBpdGVyYXRvcnMgaW4gW3JmaXJzdCwgcmxhc3QpCi0vLy8gZnJvbSB0aGUgcmFuZ2UgW2ZpcnN0LCBsYXN0KSB0byBhIHJhbmdlIGJlZ2lubmluZyBhdCByZXN1bHQuIFRoZSByZXR1cm4KLS8vLyB2YWx1ZSBpcyB0aGUgZW5kIG9mIHRoZSByZXN1bHRpbmcgcmFuZ2UuIFRoaXMgb3BlcmF0aW9uIGlzIHN0YWJsZSwgbWVhbmluZwotLy8vIHRoYXQgdGhlIHJlbGF0aXZlIG9yZGVyIG9mIHRoZSBlbGVtZW50cyB0aGF0IGFyZSBjb3BpZWQgaXMgdGhlIHNhbWUgYXMgaW4gdGhlCi0vLy8gcmFuZ2UgW2ZpcnN0LCBsYXN0KS4gUmFuZ2UgW3JmaXJzdCwgcmxhc3QpIGlzIGFzc3VtZWQgdG8gYmUgc29ydGVkLgotLy8vIFRoaXMgYWxnb3JpdGhtIGlzIGEgdVNUTCBleHRlbnNpb24uCi0vLy8gXGluZ3JvdXAgTXV0YXRpbmdBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvciwgdHlwZW5hbWUgUklucHV0SXRlcmF0b3I+Ci1PdXRwdXRJdGVyYXRvciByZW1vdmVfY29weSAoSW5wdXRJdGVyYXRvciBmaXJzdCwgSW5wdXRJdGVyYXRvciBsYXN0LCBPdXRwdXRJdGVyYXRvciByZXN1bHQsIFJJbnB1dEl0ZXJhdG9yIHJmaXJzdCwgUklucHV0SXRlcmF0b3Igcmxhc3QpCi17Ci0gICAgZm9yICg7IGZpcnN0ICE9IGxhc3Q7ICsrZmlyc3QpIHsKLQl3aGlsZSAocmZpcnN0ICE9IHJsYXN0ICYmICpyZmlyc3QgPCBmaXJzdCkKLQkgICAgKysgcmZpcnN0OwotCWlmIChyZmlyc3QgPT0gcmxhc3QgfHwgZmlyc3QgIT0gKnJmaXJzdCkgewotCSAgICAqcmVzdWx0ID0gKmZpcnN0OwotCSAgICArKyByZXN1bHQ7Ci0JfQotICAgIH0KLSAgICByZXR1cm4gKHJlc3VsdCk7Ci19Ci0KLS8vLyBSZW1vdmUgcmVtb3ZlcyBmcm9tIHRoZSByYW5nZSBbZmlyc3QsIGxhc3QpIGFsbCBlbGVtZW50cyB0aGF0IGFyZSBlcXVhbCB0bwotLy8vIHZhbHVlLiBUaGF0IGlzLCByZW1vdmUgcmV0dXJucyBhbiBpdGVyYXRvciBuZXdfbGFzdCBzdWNoIHRoYXQgdGhlIHJhbmdlCi0vLy8gW2ZpcnN0LCBuZXdfbGFzdCkgY29udGFpbnMgbm8gZWxlbWVudHMgZXF1YWwgdG8gdmFsdWUuIFsxXSBUaGUgaXRlcmF0b3JzCi0vLy8gaW4gdGhlIHJhbmdlIFtuZXdfbGFzdCwgbGFzdCkgYXJlIGFsbCBzdGlsbCBkZXJlZmVyZW5jZWFibGUsIGJ1dCB0aGUKLS8vLyBlbGVtZW50cyB0aGF0IHRoZXkgcG9pbnQgdG8gYXJlIHVuc3BlY2lmaWVkLiBSZW1vdmUgaXMgc3RhYmxlLCBtZWFuaW5nCi0vLy8gdGhhdCB0aGUgcmVsYXRpdmUgb3JkZXIgb2YgZWxlbWVudHMgdGhhdCBhcmUgbm90IGVxdWFsIHRvIHZhbHVlIGlzCi0vLy8gdW5jaGFuZ2VkLgotLy8vIFxpbmdyb3VwIE11dGF0aW5nQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBUPgotaW5saW5lIEZvcndhcmRJdGVyYXRvciByZW1vdmUgKEZvcndhcmRJdGVyYXRvciBmaXJzdCwgRm9yd2FyZEl0ZXJhdG9yIGxhc3QsIGNvbnN0IFQmIHZhbHVlKQotewotICAgIHJldHVybiAocmVtb3ZlX2NvcHkgKGZpcnN0LCBsYXN0LCBmaXJzdCwgdmFsdWUpKTsKLX0KLQotLy8vIFVuaXF1ZV9jb3B5IGNvcGllcyBlbGVtZW50cyBmcm9tIHRoZSByYW5nZSBbZmlyc3QsIGxhc3QpIHRvIGEgcmFuZ2UKLS8vLyBiZWdpbm5pbmcgd2l0aCByZXN1bHQsIGV4Y2VwdCB0aGF0IGluIGEgY29uc2VjdXRpdmUgZ3JvdXAgb2YgZHVwbGljYXRlCi0vLy8gZWxlbWVudHMgb25seSB0aGUgZmlyc3Qgb25lIGlzIGNvcGllZC4gVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgZW5kIG9mCi0vLy8gdGhlIHJhbmdlIHRvIHdoaWNoIHRoZSBlbGVtZW50cyBhcmUgY29waWVkLiBUaGlzIGJlaGF2aW9yIGlzIHNpbWlsYXIKLS8vLyB0byB0aGUgVW5peCBmaWx0ZXIgdW5pcS4KLS8vLyBcaW5ncm91cCBNdXRhdGluZ0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcmF0b3IsIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yPgotT3V0cHV0SXRlcmF0b3IgdW5pcXVlX2NvcHkgKElucHV0SXRlcmF0b3IgZmlyc3QsIElucHV0SXRlcmF0b3IgbGFzdCwgT3V0cHV0SXRlcmF0b3IgcmVzdWx0KQotewotICAgIGlmIChmaXJzdCAhPSBsYXN0KSB7Ci0JKnJlc3VsdCA9ICpmaXJzdDsKLQl3aGlsZSAoKytmaXJzdCAhPSBsYXN0KQotCSAgICBpZiAoISgqZmlyc3QgPT0gKnJlc3VsdCkpCi0JCSorK3Jlc3VsdCA9ICpmaXJzdDsKLQkrKyByZXN1bHQ7Ci0gICAgfQotICAgIHJldHVybiAocmVzdWx0KTsKLX0KLQotLy8vIEV2ZXJ5IHRpbWUgYSBjb25zZWN1dGl2ZSBncm91cCBvZiBkdXBsaWNhdGUgZWxlbWVudHMgYXBwZWFycyBpbiB0aGUgcmFuZ2UKLS8vLyBbZmlyc3QsIGxhc3QpLCB0aGUgYWxnb3JpdGhtIHVuaXF1ZSByZW1vdmVzIGFsbCBidXQgdGhlIGZpcnN0IGVsZW1lbnQuCi0vLy8gVGhhdCBpcywgdW5pcXVlIHJldHVybnMgYW4gaXRlcmF0b3IgbmV3X2xhc3Qgc3VjaCB0aGF0IHRoZSByYW5nZSBbZmlyc3QsCi0vLy8gbmV3X2xhc3QpIGNvbnRhaW5zIG5vIHR3byBjb25zZWN1dGl2ZSBlbGVtZW50cyB0aGF0IGFyZSBkdXBsaWNhdGVzLgotLy8vIFRoZSBpdGVyYXRvcnMgaW4gdGhlIHJhbmdlIFtuZXdfbGFzdCwgbGFzdCkgYXJlIGFsbCBzdGlsbCBkZXJlZmVyZW5jZWFibGUsCi0vLy8gYnV0IHRoZSBlbGVtZW50cyB0aGF0IHRoZXkgcG9pbnQgdG8gYXJlIHVuc3BlY2lmaWVkLiBVbmlxdWUgaXMgc3RhYmxlLAotLy8vIG1lYW5pbmcgdGhhdCB0aGUgcmVsYXRpdmUgb3JkZXIgb2YgZWxlbWVudHMgdGhhdCBhcmUgbm90IHJlbW92ZWQgaXMKLS8vLyB1bmNoYW5nZWQuCi0vLy8gXGluZ3JvdXAgTXV0YXRpbmdBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3I+Ci1pbmxpbmUgRm9yd2FyZEl0ZXJhdG9yIHVuaXF1ZSAoRm9yd2FyZEl0ZXJhdG9yIGZpcnN0LCBGb3J3YXJkSXRlcmF0b3IgbGFzdCkKLXsKLSAgICByZXR1cm4gKHVuaXF1ZV9jb3B5IChmaXJzdCwgbGFzdCwgZmlyc3QpKTsKLX0KLQotLy8vIFJldHVybnMgdGhlIGZ1cnRoZXJtb3N0IGl0ZXJhdG9yIGkgaW4gW2ZpcnN0LCBsYXN0KSBzdWNoIHRoYXQsCi0vLy8gZm9yIGV2ZXJ5IGl0ZXJhdG9yIGogaW4gW2ZpcnN0LCBpKSwgKmogPCB2YWx1ZQotLy8vIEFzc3VtZXMgdGhlIHJhbmdlIGlzIHNvcnRlZC4KLS8vLyBcaW5ncm91cCBTZWFyY2hpbmdBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIExlc3NUaGFuQ29tcGFyYWJsZT4KLUZvcndhcmRJdGVyYXRvciBsb3dlcl9ib3VuZCAoRm9yd2FyZEl0ZXJhdG9yIGZpcnN0LCBGb3J3YXJkSXRlcmF0b3IgbGFzdCwgY29uc3QgTGVzc1RoYW5Db21wYXJhYmxlJiB2YWx1ZSkKLXsKLSAgICBGb3J3YXJkSXRlcmF0b3IgbWlkOwotICAgIHdoaWxlIChmaXJzdCAhPSBsYXN0KSB7Ci0JbWlkID0gYWR2YW5jZSAoZmlyc3QsIGRpc3RhbmNlIChmaXJzdCxsYXN0KSAvIDIpOwotCWlmICgqbWlkIDwgdmFsdWUpCi0JICAgIGZpcnN0ID0gbWlkICsgMTsKLQllbHNlCi0JICAgIGxhc3QgPSBtaWQ7Ci0gICAgfQotICAgIHJldHVybiAoZmlyc3QpOwotfQotCi0vLy8gUGVyZm9ybXMgYSBiaW5hcnkgc2VhcmNoIGluc2lkZSB0aGUgc29ydGVkIHJhbmdlLgotLy8vIFxpbmdyb3VwIFNlYXJjaGluZ0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgTGVzc1RoYW5Db21wYXJhYmxlPgotaW5saW5lIEZvcndhcmRJdGVyYXRvciBiaW5hcnlfc2VhcmNoIChGb3J3YXJkSXRlcmF0b3IgZmlyc3QsIEZvcndhcmRJdGVyYXRvciBsYXN0LCBjb25zdCBMZXNzVGhhbkNvbXBhcmFibGUmIHZhbHVlKQotewotICAgIEZvcndhcmRJdGVyYXRvciBmb3VuZCA9IGxvd2VyX2JvdW5kIChmaXJzdCwgbGFzdCwgdmFsdWUpOwotICAgIHJldHVybiAoKGZvdW5kID09IGxhc3QgfHwgdmFsdWUgPCAqZm91bmQpID8gbGFzdCA6IGZvdW5kKTsKLX0KLQotLy8vIFJldHVybnMgdGhlIGZ1cnRoZXJtb3N0IGl0ZXJhdG9yIGkgaW4gW2ZpcnN0LGxhc3QpIHN1Y2ggdGhhdCBmb3IKLS8vLyBldmVyeSBpdGVyYXRvciBqIGluIFtmaXJzdCxpKSwgdmFsdWUgPCAqaiBpcyBmYWxzZS4KLS8vLyBcaW5ncm91cCBTZWFyY2hpbmdBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIExlc3NUaGFuQ29tcGFyYWJsZT4KLUZvcndhcmRJdGVyYXRvciB1cHBlcl9ib3VuZCAoRm9yd2FyZEl0ZXJhdG9yIGZpcnN0LCBGb3J3YXJkSXRlcmF0b3IgbGFzdCwgY29uc3QgTGVzc1RoYW5Db21wYXJhYmxlJiB2YWx1ZSkKLXsKLSAgICBGb3J3YXJkSXRlcmF0b3IgbWlkOwotICAgIHdoaWxlIChmaXJzdCAhPSBsYXN0KSB7Ci0JbWlkID0gYWR2YW5jZSAoZmlyc3QsIGRpc3RhbmNlIChmaXJzdCxsYXN0KSAvIDIpOwotCWlmICh2YWx1ZSA8ICptaWQpCi0JICAgIGxhc3QgPSBtaWQ7Ci0JZWxzZQotCSAgICBmaXJzdCA9IG1pZCArIDE7Ci0gICAgfQotICAgIHJldHVybiAobGFzdCk7Ci19Ci0KLS8vLyBSZXR1cm5zIHBhaXI8bG93ZXJfYm91bmQsdXBwZXJfYm91bmQ+Ci0vLy8gXGluZ3JvdXAgU2VhcmNoaW5nQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBMZXNzVGhhbkNvbXBhcmFibGU+Ci1pbmxpbmUgcGFpcjxGb3J3YXJkSXRlcmF0b3IsRm9yd2FyZEl0ZXJhdG9yPiBlcXVhbF9yYW5nZSAoRm9yd2FyZEl0ZXJhdG9yIGZpcnN0LCBGb3J3YXJkSXRlcmF0b3IgbGFzdCwgY29uc3QgTGVzc1RoYW5Db21wYXJhYmxlJiB2YWx1ZSkKLXsKLSAgICBwYWlyPEZvcndhcmRJdGVyYXRvcixGb3J3YXJkSXRlcmF0b3I+IHJ2OwotICAgIHJ2LnNlY29uZCA9IHJ2LmZpcnN0ID0gbG93ZXJfYm91bmQgKGZpcnN0LCBsYXN0LCB2YWx1ZSk7Ci0gICAgd2hpbGUgKHJ2LnNlY29uZCAhPSBsYXN0ICYmICEodmFsdWUgPCAqKHJ2LnNlY29uZCkpKQotCSsrIHJ2LnNlY29uZDsKLSAgICByZXR1cm4gKHJ2KTsKLX0KLQotLy8vIFJhbmRvbWx5IHBlcm11dGUgdGhlIGVsZW1lbnRzIG9mIHRoZSBjb250YWluZXIuCi0vLy8gXGluZ3JvdXAgR2VuZXJhdG9yQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci12b2lkIHJhbmRvbV9zaHVmZmxlIChSYW5kb21BY2Nlc3NJdGVyYXRvciBmaXJzdCwgUmFuZG9tQWNjZXNzSXRlcmF0b3IgbGFzdCkKLXsKLSAgICBmb3IgKDsgZmlyc3QgIT0gbGFzdDsgKysgZmlyc3QpCi0JaXRlcl9zd2FwIChmaXJzdCwgZmlyc3QgKyAocmFuZCgpICUgZGlzdGFuY2UgKGZpcnN0LCBsYXN0KSkpOwotfQotCi0vLy8gXGJyaWVmIEdlbmVyaWMgY29tcGFyZSBmdW5jdGlvbiBhZGFwdG9yIHRvIHBhc3MgdG8gcXNvcnQKLS8vLyBcaW5ncm91cCBGdW5jdG9yT2JqZWN0cwotdGVtcGxhdGUgPHR5cGVuYW1lIENvbnN0UG9pbnRlciwgdHlwZW5hbWUgQ29tcGFyZT4KLWludCBxc29ydF9hZGFwdGVyIChjb25zdCB2b2lkKiBwMSwgY29uc3Qgdm9pZCogcDIpCi17Ci0gICAgQ29uc3RQb2ludGVyIGkxID0gcmVpbnRlcnByZXRfY2FzdDxDb25zdFBvaW50ZXI+KHAxKTsKLSAgICBDb25zdFBvaW50ZXIgaTIgPSByZWludGVycHJldF9jYXN0PENvbnN0UG9pbnRlcj4ocDIpOwotICAgIENvbXBhcmUgY29tcDsKLSAgICByZXR1cm4gKGNvbXAgKCppMSwgKmkyKSA/IC0xIDogKGNvbXAgKCppMiwgKmkxKSA/IDEgOiAwKSk7Ci19Ci0KLS8vLyBTb3J0cyB0aGUgY29udGFpbmVyCi0vLy8gXGluZ3JvdXAgU29ydGluZ0FsZ29yaXRobXMKLS8vLyBcaW5ncm91cCBQcmVkaWNhdGVBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBSYW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgQ29tcGFyZT4KLXZvaWQgc29ydCAoUmFuZG9tQWNjZXNzSXRlcmF0b3IgZmlyc3QsIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yIGxhc3QsIENvbXBhcmUpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojpjb25zdF9wb2ludGVyIGNvbnN0X3BvaW50ZXI7Ci0gICAgcXNvcnQgKGZpcnN0LCBkaXN0YW5jZSAoZmlyc3QsIGxhc3QpLCBzaXplb2YodmFsdWVfdHlwZSksCi0JICAgJnFzb3J0X2FkYXB0ZXI8Y29uc3RfcG9pbnRlciwgQ29tcGFyZT4pOwotfQotCi0vLy8gU29ydHMgdGhlIGNvbnRhaW5lcgotLy8vIFxpbmdyb3VwIFNvcnRpbmdBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLWlubGluZSB2b2lkIHNvcnQgKFJhbmRvbUFjY2Vzc0l0ZXJhdG9yIGZpcnN0LCBSYW5kb21BY2Nlc3NJdGVyYXRvciBsYXN0KQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPjo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotICAgIHNvcnQgKGZpcnN0LCBsYXN0LCBsZXNzPHZhbHVlX3R5cGU+KCkpOwotfQotCi0vLy8gU29ydHMgdGhlIGNvbnRhaW5lciBwcmVzZXJ2aW5nIG9yZGVyIG9mIGVxdWFsIGVsZW1lbnRzLgotLy8vIFxpbmdyb3VwIFNvcnRpbmdBbGdvcml0aG1zCi0vLy8gXGluZ3JvdXAgUHJlZGljYXRlQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIENvbXBhcmU+Ci12b2lkIHN0YWJsZV9zb3J0IChSYW5kb21BY2Nlc3NJdGVyYXRvciBmaXJzdCwgUmFuZG9tQWNjZXNzSXRlcmF0b3IgbGFzdCwgQ29tcGFyZSBjb21wKQotewotICAgIGZvciAoUmFuZG9tQWNjZXNzSXRlcmF0b3IgaiwgaSA9IGZpcnN0OyArK2kgPCBsYXN0OykgeyAvLyBJbnNlcnRpb24gc29ydAotCWZvciAoaiA9IGk7IGotLSA+IGZpcnN0ICYmICFjb21wKCpqLCAqaSk7KTsKLQlyb3RhdGUgKCsraiwgaSwgaSArIDEpOwotICAgIH0KLX0KLQotLy8vIFNvcnRzIHRoZSBjb250YWluZXIKLS8vLyBcaW5ncm91cCBTb3J0aW5nQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1pbmxpbmUgdm9pZCBzdGFibGVfc29ydCAoUmFuZG9tQWNjZXNzSXRlcmF0b3IgZmlyc3QsIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yIGxhc3QpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0gICAgc3RhYmxlX3NvcnQgKGZpcnN0LCBsYXN0LCBsZXNzPHZhbHVlX3R5cGU+KCkpOwotfQotCi0vLy8gXGJyaWVmIFNlYXJjaGVzIGZvciB0aGUgZmlyc3Qgc3Vic2VxdWVuY2UgW2ZpcnN0MixsYXN0MikgaW4gW2ZpcnN0MSxsYXN0MSkKLS8vLyBcaW5ncm91cCBTZWFyY2hpbmdBbGdvcml0aG1zCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yMSwgdHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yMj4KLWlubGluZSBGb3J3YXJkSXRlcmF0b3IxIHNlYXJjaCAoRm9yd2FyZEl0ZXJhdG9yMSBmaXJzdDEsIEZvcndhcmRJdGVyYXRvcjEgbGFzdDEsIEZvcndhcmRJdGVyYXRvcjIgZmlyc3QyLCBGb3J3YXJkSXRlcmF0b3IyIGxhc3QyKQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPEZvcndhcmRJdGVyYXRvcjE+Ojp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0gICAgcmV0dXJuIChzZWFyY2ggKGZpcnN0MSwgbGFzdDEsIGZpcnN0MiwgbGFzdDIsIGVxdWFsX3RvPHZhbHVlX3R5cGU+KCkpKTsKLX0KLQotLy8vIFxicmllZiBTZWFyY2hlcyBmb3IgdGhlIGxhc3Qgc3Vic2VxdWVuY2UgW2ZpcnN0MixsYXN0MikgaW4gW2ZpcnN0MSxsYXN0MSkKLS8vLyBcaW5ncm91cCBTZWFyY2hpbmdBbGdvcml0aG1zCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yMSwgdHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yMj4KLWlubGluZSBGb3J3YXJkSXRlcmF0b3IxIGZpbmRfZW5kIChGb3J3YXJkSXRlcmF0b3IxIGZpcnN0MSwgRm9yd2FyZEl0ZXJhdG9yMSBsYXN0MSwgRm9yd2FyZEl0ZXJhdG9yMiBmaXJzdDIsIEZvcndhcmRJdGVyYXRvcjIgbGFzdDIpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8Rm9yd2FyZEl0ZXJhdG9yMT46OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLSAgICByZXR1cm4gKGZpbmRfZW5kIChmaXJzdDEsIGxhc3QxLCBmaXJzdDIsIGxhc3QyLCBlcXVhbF90bzx2YWx1ZV90eXBlPigpKSk7Ci19Ci0KLS8vLyBcYnJpZWYgU2VhcmNoZXMgZm9yIHRoZSBmaXJzdCBvY2N1cmVuY2Ugb2YgXHAgY291bnQgXHAgdmFsdWVzIGluIFtmaXJzdCwgbGFzdCkKLS8vLyBcaW5ncm91cCBTZWFyY2hpbmdBbGdvcml0aG1zCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lIFQ+Ci1pbmxpbmUgSXRlcmF0b3Igc2VhcmNoX24gKEl0ZXJhdG9yIGZpcnN0LCBJdGVyYXRvciBsYXN0LCBzaXplX3QgY291bnQsIGNvbnN0IFQmIHZhbHVlKQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPjo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotICAgIHJldHVybiAoc2VhcmNoX24gKGZpcnN0LCBsYXN0LCBjb3VudCwgdmFsdWUsIGVxdWFsX3RvPHZhbHVlX3R5cGU+KCkpKTsKLX0KLQotLy8vIFxicmllZiBTZWFyY2hlcyBbZmlyc3QxLGxhc3QxKSBmb3IgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgYW4gZWxlbWVudCBmcm9tIFtmaXJzdDIsbGFzdDIpCi0vLy8gXGluZ3JvdXAgU2VhcmNoaW5nQWxnb3JpdGhtcwotdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcmF0b3IsIHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvcj4KLWlubGluZSBJbnB1dEl0ZXJhdG9yIGZpbmRfZmlyc3Rfb2YgKElucHV0SXRlcmF0b3IgZmlyc3QxLCBJbnB1dEl0ZXJhdG9yIGxhc3QxLCBGb3J3YXJkSXRlcmF0b3IgZmlyc3QyLCBGb3J3YXJkSXRlcmF0b3IgbGFzdDIpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8SW5wdXRJdGVyYXRvcj46OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLSAgICByZXR1cm4gKGZpbmRfZmlyc3Rfb2YgKGZpcnN0MSwgbGFzdDEsIGZpcnN0MiwgbGFzdDIsIGVxdWFsX3RvPHZhbHVlX3R5cGU+KCkpKTsKLX0KLQotLy8vIFxicmllZiBSZXR1cm5zIHRydWUgaWYgW2ZpcnN0MixsYXN0MikgaXMgYSBzdWJzZXQgb2YgW2ZpcnN0MSxsYXN0MSkKLS8vLyBcaW5ncm91cCBDb25kaXRpb25BbGdvcml0aG1zCi0vLy8gXGluZ3JvdXAgU2V0QWxnb3JpdGhtcwotdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcmF0b3IxLCB0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yMj4KLWlubGluZSBib29sIGluY2x1ZGVzIChJbnB1dEl0ZXJhdG9yMSBmaXJzdDEsIElucHV0SXRlcmF0b3IxIGxhc3QxLCBJbnB1dEl0ZXJhdG9yMiBmaXJzdDIsIElucHV0SXRlcmF0b3IyIGxhc3QyKQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPElucHV0SXRlcmF0b3IxPjo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotICAgIHJldHVybiAoaW5jbHVkZXMgKGZpcnN0MSwgbGFzdDEsIGZpcnN0MiwgbGFzdDIsIGxlc3M8dmFsdWVfdHlwZT4oKSkpOwotfQotCi0vLy8gXGJyaWVmIE1lcmdlcyBbZmlyc3QxLGxhc3QxKSB3aXRoIFtmaXJzdDIsbGFzdDIpCi0vLy8KLS8vLyBSZXN1bHQgd2lsbCBjb250YWluIGV2ZXJ5IGVsZW1lbnQgdGhhdCBpcyBpbiBlaXRoZXIgc2V0LiBJZiBkdXBsaWNhdGUKLS8vLyBlbGVtZW50cyBhcmUgcHJlc2VudCwgbWF4KG4sbSkgaXMgcGxhY2VkIGluIHRoZSByZXN1bHQuCi0vLy8KLS8vLyBcaW5ncm91cCBTZXRBbGdvcml0aG1zCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyYXRvcjEsIHR5cGVuYW1lIElucHV0SXRlcmF0b3IyLCB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvcj4KLWlubGluZSBPdXRwdXRJdGVyYXRvciBzZXRfdW5pb24gKElucHV0SXRlcmF0b3IxIGZpcnN0MSwgSW5wdXRJdGVyYXRvcjEgbGFzdDEsIElucHV0SXRlcmF0b3IyIGZpcnN0MiwgSW5wdXRJdGVyYXRvcjIgbGFzdDIsIE91dHB1dEl0ZXJhdG9yIHJlc3VsdCkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxJbnB1dEl0ZXJhdG9yMT46OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLSAgICByZXR1cm4gKHNldF91bmlvbiAoZmlyc3QxLCBsYXN0MSwgZmlyc3QyLCBsYXN0MiwgcmVzdWx0LCBsZXNzPHZhbHVlX3R5cGU+KCkpKTsKLX0KLQotLy8vIFxicmllZiBDcmVhdGVzIGEgc2V0IGNvbnRhaW5pbmcgZWxlbWVudHMgc2hhcmVkIGJ5IHRoZSBnaXZlbiByYW5nZXMuCi0vLy8gXGluZ3JvdXAgU2V0QWxnb3JpdGhtcwotdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcmF0b3IxLCB0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yMiwgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3I+Ci1pbmxpbmUgT3V0cHV0SXRlcmF0b3Igc2V0X2ludGVyc2VjdGlvbiAoSW5wdXRJdGVyYXRvcjEgZmlyc3QxLCBJbnB1dEl0ZXJhdG9yMSBsYXN0MSwgSW5wdXRJdGVyYXRvcjIgZmlyc3QyLCBJbnB1dEl0ZXJhdG9yMiBsYXN0MiwgT3V0cHV0SXRlcmF0b3IgcmVzdWx0KQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPElucHV0SXRlcmF0b3IxPjo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotICAgIHJldHVybiAoc2V0X2ludGVyc2VjdGlvbiAoZmlyc3QxLCBsYXN0MSwgZmlyc3QyLCBsYXN0MiwgcmVzdWx0LCBsZXNzPHZhbHVlX3R5cGU+KCkpKTsKLX0KLQotLy8vIFxicmllZiBSZW1vdmVzIGZyb20gW2ZpcnN0MSxsYXN0MSkgZWxlbWVudHMgcHJlc2VudCBpbiBbZmlyc3QyLGxhc3QyKQotLy8vIFxpbmdyb3VwIFNldEFsZ29yaXRobXMKLXRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yMSwgdHlwZW5hbWUgSW5wdXRJdGVyYXRvcjIsIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yPgotaW5saW5lIE91dHB1dEl0ZXJhdG9yIHNldF9kaWZmZXJlbmNlIChJbnB1dEl0ZXJhdG9yMSBmaXJzdDEsIElucHV0SXRlcmF0b3IxIGxhc3QxLCBJbnB1dEl0ZXJhdG9yMiBmaXJzdDIsIElucHV0SXRlcmF0b3IyIGxhc3QyLCBPdXRwdXRJdGVyYXRvciByZXN1bHQpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8SW5wdXRJdGVyYXRvcjE+Ojp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0gICAgcmV0dXJuIChzZXRfZGlmZmVyZW5jZSAoZmlyc3QxLCBsYXN0MSwgZmlyc3QyLCBsYXN0MiwgcmVzdWx0LCBsZXNzPHZhbHVlX3R5cGU+KCkpKTsKLX0KLQotLy8vIFxicmllZiBQZXJmb3JtcyB1bmlvbiBvZiBzZXRzIEEtQiBhbmQgQi1BLgotLy8vIFxpbmdyb3VwIFNldEFsZ29yaXRobXMKLXRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yMSwgdHlwZW5hbWUgSW5wdXRJdGVyYXRvcjIsIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yPgotaW5saW5lIE91dHB1dEl0ZXJhdG9yIHNldF9zeW1tZXRyaWNfZGlmZmVyZW5jZSAoSW5wdXRJdGVyYXRvcjEgZmlyc3QxLCBJbnB1dEl0ZXJhdG9yMSBsYXN0MSwgSW5wdXRJdGVyYXRvcjIgZmlyc3QyLCBJbnB1dEl0ZXJhdG9yMiBsYXN0MiwgT3V0cHV0SXRlcmF0b3IgcmVzdWx0KQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPElucHV0SXRlcmF0b3IxPjo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotICAgIHJldHVybiAoc2V0X3N5bW1ldHJpY19kaWZmZXJlbmNlIChmaXJzdDEsIGxhc3QxLCBmaXJzdDIsIGxhc3QyLCByZXN1bHQsIGxlc3M8dmFsdWVfdHlwZT4oKSkpOwotfQotCi0vLy8gXGJyaWVmIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gcmFuZ2UgaXMgc29ydGVkLgotLy8vIFxpbmdyb3VwIENvbmRpdGlvbkFsZ29yaXRobXMKLXRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3I+Ci1pbmxpbmUgYm9vbCBpc19zb3J0ZWQgKEZvcndhcmRJdGVyYXRvciBmaXJzdCwgRm9yd2FyZEl0ZXJhdG9yIGxhc3QpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8Rm9yd2FyZEl0ZXJhdG9yPjo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotICAgIHJldHVybiAoaXNfc29ydGVkIChmaXJzdCwgbGFzdCwgbGVzczx2YWx1ZV90eXBlPigpKSk7Ci19Ci0KLS8vLyBcYnJpZWYgQ29tcGFyZXMgdHdvIGdpdmVuIGNvbnRhaW5lcnMgbGlrZSBzdHJjbXAgY29tcGFyZXMgc3RyaW5ncy4KLS8vLyBcaW5ncm91cCBDb25kaXRpb25BbGdvcml0aG1zCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyYXRvcjEsIHR5cGVuYW1lIElucHV0SXRlcmF0b3IyPgotaW5saW5lIGJvb2wgbGV4aWNvZ3JhcGhpY2FsX2NvbXBhcmUgKElucHV0SXRlcmF0b3IxIGZpcnN0MSwgSW5wdXRJdGVyYXRvcjEgbGFzdDEsIElucHV0SXRlcmF0b3IyIGZpcnN0MiwgSW5wdXRJdGVyYXRvcjIgbGFzdDIpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8SW5wdXRJdGVyYXRvcjE+Ojp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0gICAgcmV0dXJuIChsZXhpY29ncmFwaGljYWxfY29tcGFyZSAoZmlyc3QxLCBsYXN0MSwgZmlyc3QyLCBsYXN0MiwgbGVzczx2YWx1ZV90eXBlPigpKSk7Ci19Ci0KLS8vLyBcYnJpZWYgQ3JlYXRlcyB0aGUgbmV4dCBsZXhpY29ncmFwaGljYWwgcGVybXV0YXRpb24gb2YgW2ZpcnN0LGxhc3QpLgotLy8vIFJldHVybnMgZmFsc2UgaWYgbm8gZnVydGhlciBwZXJtdXRhdGlvbnMgY2FuIGJlIGNyZWF0ZWQuCi0vLy8gXGluZ3JvdXAgR2VuZXJhdG9yQWxnb3JpdGhtcwotdGVtcGxhdGUgPHR5cGVuYW1lIEJpZGlyZWN0aW9uYWxJdGVyYXRvcj4KLWlubGluZSBib29sIG5leHRfcGVybXV0YXRpb24gKEJpZGlyZWN0aW9uYWxJdGVyYXRvciBmaXJzdCwgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGxhc3QpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8QmlkaXJlY3Rpb25hbEl0ZXJhdG9yPjo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotICAgIHJldHVybiAobmV4dF9wZXJtdXRhdGlvbiAoZmlyc3QsIGxhc3QsIGxlc3M8dmFsdWVfdHlwZT4oKSkpOwotfQotCi0vLy8gXGJyaWVmIENyZWF0ZXMgdGhlIHByZXZpb3VzIGxleGljb2dyYXBoaWNhbCBwZXJtdXRhdGlvbiBvZiBbZmlyc3QsbGFzdCkuCi0vLy8gUmV0dXJucyBmYWxzZSBpZiBubyBmdXJ0aGVyIHBlcm11dGF0aW9ucyBjYW4gYmUgY3JlYXRlZC4KLS8vLyBcaW5ncm91cCBHZW5lcmF0b3JBbGdvcml0aG1zCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yPgotaW5saW5lIGJvb2wgcHJldl9wZXJtdXRhdGlvbiAoQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGZpcnN0LCBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgbGFzdCkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxCaWRpcmVjdGlvbmFsSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0gICAgcmV0dXJuIChwcmV2X3Blcm11dGF0aW9uIChmaXJzdCwgbGFzdCwgbGVzczx2YWx1ZV90eXBlPigpKSk7Ci19Ci0KLS8vLyBcYnJpZWYgUmV0dXJucyBpdGVyYXRvciB0byB0aGUgbWF4IGVsZW1lbnQgaW4gW2ZpcnN0LGxhc3QpCi0vLy8gXGluZ3JvdXAgU2VhcmNoaW5nQWxnb3JpdGhtcwotdGVtcGxhdGUgPHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvcj4KLWlubGluZSBGb3J3YXJkSXRlcmF0b3IgbWF4X2VsZW1lbnQgKEZvcndhcmRJdGVyYXRvciBmaXJzdCwgRm9yd2FyZEl0ZXJhdG9yIGxhc3QpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8Rm9yd2FyZEl0ZXJhdG9yPjo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotICAgIHJldHVybiAobWF4X2VsZW1lbnQgKGZpcnN0LCBsYXN0LCBsZXNzPHZhbHVlX3R5cGU+KCkpKTsKLX0KLQotLy8vIFxicmllZiBSZXR1cm5zIGl0ZXJhdG9yIHRvIHRoZSBtaW4gZWxlbWVudCBpbiBbZmlyc3QsbGFzdCkKLS8vLyBcaW5ncm91cCBTZWFyY2hpbmdBbGdvcml0aG1zCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yPgotaW5saW5lIEZvcndhcmRJdGVyYXRvciBtaW5fZWxlbWVudCAoRm9yd2FyZEl0ZXJhdG9yIGZpcnN0LCBGb3J3YXJkSXRlcmF0b3IgbGFzdCkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxGb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0gICAgcmV0dXJuIChtaW5fZWxlbWVudCAoZmlyc3QsIGxhc3QsIGxlc3M8dmFsdWVfdHlwZT4oKSkpOwotfQotCi0vLy8gXGJyaWVmIE1ha2VzIFtmaXJzdCxtaWRkbGUpIGEgcGFydCBvZiB0aGUgc29ydGVkIGFycmF5LgotLy8vIENvbnRlbnRzIG9mIFttaWRkbGUsbGFzdCkgaXMgdW5kZWZpbmVkLiBUaGlzIGltcGxlbWVudGF0aW9uIGp1c3QgY2FsbHMgc3RhYmxlX3NvcnQuCi0vLy8gXGluZ3JvdXAgU29ydGluZ0FsZ29yaXRobXMKLXRlbXBsYXRlIDx0eXBlbmFtZSBSYW5kb21BY2Nlc3NJdGVyYXRvcj4KLWlubGluZSB2b2lkIHBhcnRpYWxfc29ydCAoUmFuZG9tQWNjZXNzSXRlcmF0b3IgZmlyc3QsIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yIG1pZGRsZSwgUmFuZG9tQWNjZXNzSXRlcmF0b3IgbGFzdCkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLSAgICBwYXJ0aWFsX3NvcnQgKGZpcnN0LCBtaWRkbGUsIGxhc3QsIGxlc3M8dmFsdWVfdHlwZT4oKSk7Ci19Ci0KLS8vLyBcYnJpZWYgUHV0cyBccCBudGggZWxlbWVudCBpbnRvIGl0cyBzb3J0ZWQgcG9zaXRpb24uCi0vLy8gSW4gdGhpcyBpbXBsZW1lbnRhdGlvbiwgdGhlIGVudGlyZSBhcnJheSBpcyBzb3J0ZWQuIEkgY2FuJ3QgdGhpbmsgb2YgYW55Ci0vLy8gdXNlIGZvciBpdCB3aGVyZSB0aGUgdGltZSBnYWluZWQgd291bGQgYmUgdXNlZnVsLgotLy8vIFxpbmdyb3VwIFNvcnRpbmdBbGdvcml0aG1zCi0vLy8gXGluZ3JvdXAgU2VhcmNoaW5nQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1pbmxpbmUgdm9pZCBudGhfZWxlbWVudCAoUmFuZG9tQWNjZXNzSXRlcmF0b3IgZmlyc3QsIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yIG50aCwgUmFuZG9tQWNjZXNzSXRlcmF0b3IgbGFzdCkKLXsKLSAgICBwYXJ0aWFsX3NvcnQgKGZpcnN0LCBudGgsIGxhc3QpOwotfQotCi0vLy8gXGJyaWVmIExpa2UgcGFydGlhbF9zb3J0LCBidXQgb3V0cHV0cyB0byBbcmVzdWx0X2ZpcnN0LHJlc3VsdF9sYXN0KQotLy8vIFxpbmdyb3VwIFNvcnRpbmdBbGdvcml0aG1zCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgUmFuZG9tQWNjZXNzSXRlcmF0b3I+Ci1pbmxpbmUgUmFuZG9tQWNjZXNzSXRlcmF0b3IgcGFydGlhbF9zb3J0X2NvcHkgKElucHV0SXRlcmF0b3IgZmlyc3QsIElucHV0SXRlcmF0b3IgbGFzdCwgUmFuZG9tQWNjZXNzSXRlcmF0b3IgcmVzdWx0X2ZpcnN0LCBSYW5kb21BY2Nlc3NJdGVyYXRvciByZXN1bHRfbGFzdCkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxJbnB1dEl0ZXJhdG9yPjo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotICAgIHJldHVybiAocGFydGlhbF9zb3J0X2NvcHkgKGZpcnN0LCBsYXN0LCByZXN1bHRfZmlyc3QsIHJlc3VsdF9sYXN0LCBsZXNzPHZhbHVlX3R5cGU+KCkpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgdXN0bAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdWFsZ29iYXNlLmNwcCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VhbGdvYmFzZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3NjRjZDEuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdWFsZ29iYXNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDI5MyArMCwwIEBACi0vLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdXN0bCBsaWJyYXJ5LCBhbiBTVEwgaW1wbGVtZW50YXRpb24uCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDA1IGJ5IE1pa2UgU2hhcm92IDxtc2hhcm92QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLS8vIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCi0vLwotLy8gdWFsZ29iYXNlLmNjCi0vLwotLy8gQ29weSBhbmQgZmlsbCBvcHRpbWl6YXRpb25zIGFyZSBoZXJlLgotLy8KLQotI2lmbmRlZiBOREVCVUcJLy8gT3B0aW1pemVkIGNvZGUgaGVyZS4gYXNzZXJ0cyBzbG93IGl0IGRvd24sIGFuZCBhcmUgY2hlY2tlZCBlbHNld2hlcmUuCi0jZGVmaW5lIE5ERUJVRwotI2VuZGlmCi0KLSNpbmNsdWRlICJ1YWxnby5oIgotCi0jdW5kZWYgQ1BVX0hBU19NTVgKLQotbmFtZXNwYWNlIHVzdGwgewotCi0vLyBHZW5lcmljIHZlcnNpb24gZm9yIGltcGxlbWVudGluZyBmaWxsX25YX2Zhc3Qgb24gbm9uLWkzODYgYXJjaGl0ZWN0dXJlcy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgdm9pZCBzdG9zdiAoVComIHAsIHNpemVfdCBuLCBUIHYpCi0gICAgeyB3aGlsZSAobi0tKSAqcCsrID0gdjsgfQotCi0jaWYgZGVmaW5lZChfX2kzODZfXykgfHwgZGVmaW5lZChfX3g4Nl82NF9fKQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIENvcHkgZnVuY3Rpb25zCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2lmIF9fR05VQ19fID49IDMKLXN0YXRpYyBpbmxpbmUgdm9pZCBtb3ZzYl9kaXJfdXAgKHZvaWQpIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKTsKLXN0YXRpYyBpbmxpbmUgdm9pZCBtb3ZzYl9kaXJfZG93biAodm9pZCkgX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpOwotc3RhdGljIGlubGluZSB2b2lkIG1vdnNiIChjb25zdCB2b2lkKiYgc3JjLCBzaXplX3QgbkJ5dGVzLCB2b2lkKiYgZGVzdCkgX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpOwotc3RhdGljIGlubGluZSB2b2lkIG1vdnNkIChjb25zdCB2b2lkKiYgc3JjLCBzaXplX3QgbldvcmRzLCB2b2lkKiYgZGVzdCkgX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpOwotI2VuZGlmCi0KLXN0YXRpYyBpbmxpbmUgdm9pZCBtb3ZzYl9kaXJfdXAgKHZvaWQpIHsgYXNtIHZvbGF0aWxlICgiY2xkIik7IH0KLXN0YXRpYyBpbmxpbmUgdm9pZCBtb3ZzYl9kaXJfZG93biAodm9pZCkgeyBhc20gdm9sYXRpbGUgKCJzdGQiKTsgfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgbW92c2IgKGNvbnN0IHZvaWQqJiBzcmMsIHNpemVfdCBuQnl0ZXMsIHZvaWQqJiBkZXN0KQotewotICAgIGFzbSB2b2xhdGlsZSAoInJlcDtcblx0bW92c2IiCi0JOiAiPSZTIihzcmMpLCAiPSZEIihkZXN0KSwgIj0mYyIobkJ5dGVzKQotCTogIjAiKHNyYyksICIxIihkZXN0KSwgIjIiKG5CeXRlcykKLQk6ICJtZW1vcnkiKTsKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIG1vdnNkIChjb25zdCB2b2lkKiYgc3JjLCBzaXplX3QgbldvcmRzLCB2b2lkKiYgZGVzdCkKLXsKLSAgICBhc20gdm9sYXRpbGUgKCJyZXA7XG5cdG1vdnNsIgotCTogIj0mUyIoc3JjKSwgIj0mRCIoZGVzdCksICI9JmMiKG5Xb3JkcykKLQk6ICIwIihzcmMpLCAiMSIoZGVzdCksICIyIihuV29yZHMpCi0JOiAibWVtb3J5Iik7Ci19Ci0KLXRlbXBsYXRlIDw+IGlubGluZSB2b2lkIHN0b3N2ICh1aW50OF90KiYgcCwgc2l6ZV90IG4sIHVpbnQ4X3QgdikKLXsgYXNtIHZvbGF0aWxlICgicmVwO1xuXHRzdG9zYiIgOiAiPSZEIihwKSwgIj1jIihuKSA6ICIwIihwKSwgIjEiKG4pLCAiYSIodikgOiAibWVtb3J5Iik7IH0KLXRlbXBsYXRlIDw+IGlubGluZSB2b2lkIHN0b3N2ICh1aW50MTZfdComIHAsIHNpemVfdCBuLCB1aW50MTZfdCB2KQoteyBhc20gdm9sYXRpbGUgKCJyZXA7XG5cdHN0b3N3IiA6ICI9JkQiKHApLCAiPWMiKG4pIDogIjAiKHApLCAiMSIobiksICJhIih2KSA6ICJtZW1vcnkiKTsgfQotdGVtcGxhdGUgPD4gaW5saW5lIHZvaWQgc3Rvc3YgKHVpbnQzMl90KiYgcCwgc2l6ZV90IG4sIHVpbnQzMl90IHYpCi17IGFzbSB2b2xhdGlsZSAoInJlcDtcblx0c3Rvc2wiIDogIj0mRCIocCksICI9YyIobikgOiAiMCIocCksICIxIihuKSwgImEiKHYpIDogIm1lbW9yeSIpOyB9Ci0KLSNpZiBDUFVfSEFTX01NWAotI2RlZmluZSBNTVhfQUxJR04JMTZVCS8vIERhdGEgbXVzdCBiZSBhbGlnbmVkIG9uIHRoaXMgZ3JhaW4KLSNkZWZpbmUgTU1YX0JTCQkzMlUJLy8gQXNzZW1ibHkgcm91dGluZXMgY29weSBkYXRhIHRoaXMgbWFueSBieXRlcyBhdCBhIHRpbWUuCi0KLXN0YXRpYyBpbmxpbmUgdm9pZCBzaW1kX2Jsb2NrX2NvcHkgKGNvbnN0IHZvaWQqIHNyYywgdm9pZCogZGVzdCkgX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpOwotc3RhdGljIGlubGluZSB2b2lkIHNpbWRfYmxvY2tfc3RvcmUgKHVpbnQ4X3QqIGRlc3QpIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKTsKLXN0YXRpYyBpbmxpbmUgdm9pZCBzaW1kX2Jsb2NrX2NsZWFudXAgKHZvaWQpIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKTsKLQotc3RhdGljIGlubGluZSB2b2lkIHNpbWRfYmxvY2tfY29weSAoY29uc3Qgdm9pZCogc3JjLCB2b2lkKiBkZXN0KQotewotICAgIGNvbnN0IGNoYXIqIGNzcmMgKChjb25zdCBjaGFyKikgc3JjKTsKLSAgICBjaGFyKiBjZGVzdCAoKGNoYXIqKSBkZXN0KTsKLSAgICAjaWYgQ1BVX0hBU19TU0UKLSAgICBhc20gKAotCSJtb3ZhcHNcdCUyLCAlJXhtbTAJXG5cdCIKLQkibW92YXBzXHQlMywgJSV4bW0xCVxuXHQiCi0JIm1vdm50cHNcdCUleG1tMCwgJTAJXG5cdCIKLQkibW92bnRwc1x0JSV4bW0xLCAlMSIKLQk6ICI9bSIoY2Rlc3RbMF0pLCAiPW0iKGNkZXN0WzE2XSkKLQk6ICJtIihjc3JjWzBdKSwgIm0iKGNzcmNbMTZdKQotCTogInhtbTAiLCAieG1tMSIpOwotICAgICNlbHNlCi0gICAgYXNtICgKLQkibW92cQklNCwgJSVtbTAJXG5cdCIKLQkibW92cQklNSwgJSVtbTEJXG5cdCIKLQkibW92cQklNiwgJSVtbTIJXG5cdCIKLQkibW92cQklNywgJSVtbTMJXG5cdCIKLQkibW92cQklJW1tMCwgJTAJXG5cdCIKLQkibW92cQklJW1tMSwgJTEJXG5cdCIKLQkibW92cQklJW1tMiwgJTIJXG5cdCIKLQkibW92cQklJW1tMywgJTMiCi0JOiAiPW0iKGNkZXN0WzBdKSwgIj1tIihjZGVzdFs4XSksICI9bSIoY2Rlc3RbMTZdKSwgIj1tIihjZGVzdFsyNF0pCi0JOiAibSIoY3NyY1swXSksICJtIihjc3JjWzhdKSwgIm0iKGNzcmNbMTZdKSwgIm0iKGNzcmNbMjRdKQotCTogIm1tMCIsICJtbTEiLCAibW0yIiwgIm1tMyIsICJzdCIsICJzdCgxKSIsICJzdCgyKSIsICJzdCgzKSIpOwotICAgICNlbmRpZgotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgc2ltZF9ibG9ja19zdG9yZSAodWludDhfdCogZGVzdCkKLXsKLSAgICAjaWYgQ1BVX0hBU19TU0UKLSAgICBhc20gdm9sYXRpbGUgKAotCSJtb3ZudHEgJSVtbTAsICUwXG5cdCIKLQkibW92bnRxICUlbW0wLCAlMVxuXHQiCi0JIm1vdm50cSAlJW1tMCwgJTJcblx0IgotCSJtb3ZudHEgJSVtbTAsICUzIgotCTogIj1tIihkZXN0WzBdKSwgIj1tIihkZXN0WzhdKSwgIj1tIihkZXN0WzE2XSksICI9bSIoZGVzdFsyNF0pKTsKLSAgICAjZWxzZQotICAgIGFzbSB2b2xhdGlsZSAoCi0JIm1vdnEgJSVtbTAsICUwCVxuXHQiCi0JIm1vdnEgJSVtbTAsICUxCVxuXHQiCi0JIm1vdnEgJSVtbTAsICUyCVxuXHQiCi0JIm1vdnEgJSVtbTAsICUzIgotCTogIj1tIihkZXN0WzBdKSwgIj1tIihkZXN0WzhdKSwgIj1tIihkZXN0WzE2XSksICI9bSIoZGVzdFsyNF0pKTsKLSAgICAjZW5kaWYKLX0KLQotc3RhdGljIGlubGluZSB2b2lkIHNpbWRfYmxvY2tfY2xlYW51cCAodm9pZCkKLXsKLSAgICAjaWYgIUNQVV9IQVNfU1NFCi0Jc2ltZDo6cmVzZXRfbW14KCk7Ci0gICAgI2VuZGlmCi0gICAgYXNtIHZvbGF0aWxlICgic2ZlbmNlIik7Ci19Ci0KLS8vLyBUaGUgZmFzdGVzdCBvcHRpbWl6ZWQgcmF3IG1lbW9yeSBjb3B5Lgotdm9pZCBjb3B5X25fZmFzdCAoY29uc3Qgdm9pZCogc3JjLCBzaXplX3QgbkJ5dGVzLCB2b2lkKiBkZXN0KQotewotICAgIG1vdnNiX2Rpcl91cCgpOwotICAgIHNpemVfdCBuSGVhZEJ5dGVzID0gQWxpZ24odWludHB0cl90KHNyYyksIE1NWF9BTElHTikgLSB1aW50cHRyX3Qoc3JjKTsKLSAgICBuSGVhZEJ5dGVzID0gbWluIChuSGVhZEJ5dGVzLCBuQnl0ZXMpOwotICAgIG1vdnNiIChzcmMsIG5IZWFkQnl0ZXMsIGRlc3QpOwotICAgIG5CeXRlcyAtPSBuSGVhZEJ5dGVzOwotICAgIGlmICghKHVpbnRwdHJfdChkZXN0KSAlIE1NWF9BTElHTikpIHsKLQljb25zdCBzaXplX3Qgbk1pZGRsZUJsb2NrcyA9IG5CeXRlcyAvIE1NWF9CUzsKLQlmb3IgKHVvZmZfdCBpID0gMDsgaSA8IG5NaWRkbGVCbG9ja3M7ICsrIGkpIHsKLQkgICAgcHJlZmV0Y2ggKGFkdmFuY2UgKHNyYywgNTEyKSwgMCwgMCk7Ci0JICAgIHNpbWRfYmxvY2tfY29weSAoc3JjLCBkZXN0KTsKLQkgICAgc3JjID0gYWR2YW5jZSAoc3JjLCBNTVhfQlMpOwotCSAgICBkZXN0ID0gYWR2YW5jZSAoZGVzdCwgTU1YX0JTKTsKLQl9Ci0Jc2ltZF9ibG9ja19jbGVhbnVwKCk7Ci0JbkJ5dGVzICU9IE1NWF9CUzsKLSAgICB9Ci0gICAgbW92c2IgKHNyYywgbkJ5dGVzLCBkZXN0KTsKLX0KLSNlbmRpZiAvLyBDUFVfSEFTX01NWAotCi0vLy8gVGhlIGZhc3Rlc3Qgb3B0aW1pemVkIGJhY2t3YXJkcyByYXcgbWVtb3J5IGNvcHkuCi12b2lkIGNvcHlfYmFja3dhcmRfZmFzdCAoY29uc3Qgdm9pZCogZmlyc3QsIGNvbnN0IHZvaWQqIGxhc3QsIHZvaWQqIHJlc3VsdCkKLXsKLSAgICBwcmVmZXRjaCAoZmlyc3QsIDAsIDApOwotICAgIHByZWZldGNoIChyZXN1bHQsIDEsIDApOwotICAgIHNpemVfdCBuQnl0ZXMgKGRpc3RhbmNlIChmaXJzdCwgbGFzdCkpOwotICAgIG1vdnNiX2Rpcl9kb3duKCk7Ci0gICAgc2l6ZV90IG5IZWFkQnl0ZXMgPSB1aW50cHRyX3QobGFzdCkgJSA0OwotICAgIGxhc3QgPSBhZHZhbmNlIChsYXN0LCAtMSk7Ci0gICAgcmVzdWx0ID0gYWR2YW5jZSAocmVzdWx0LCAtMSk7Ci0gICAgbW92c2IgKGxhc3QsIG5IZWFkQnl0ZXMsIHJlc3VsdCk7Ci0gICAgbkJ5dGVzIC09IG5IZWFkQnl0ZXM7Ci0gICAgaWYgKHVpbnRwdHJfdChyZXN1bHQpICUgNCA9PSAzKSB7Ci0JY29uc3Qgc2l6ZV90IG5NaWRkbGVCbG9ja3MgPSBuQnl0ZXMgLyA0OwotCWxhc3QgPSBhZHZhbmNlIChsYXN0LCAtMyk7Ci0JcmVzdWx0ID0gYWR2YW5jZSAocmVzdWx0LCAtMyk7Ci0JbW92c2QgKGxhc3QsIG5NaWRkbGVCbG9ja3MsIHJlc3VsdCk7Ci0JbkJ5dGVzICU9IDQ7Ci0gICAgfQotICAgIG1vdnNiIChsYXN0LCBuQnl0ZXMsIHJlc3VsdCk7Ci0gICAgbW92c2JfZGlyX3VwKCk7Ci19Ci0jZW5kaWYgLy8gX19pMzg2X18KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBGaWxsIGZ1bmN0aW9ucwotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZiBDUFVfSEFTX01NWAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSB2b2lkIGJ1aWxkX2Jsb2NrIChUKSB7fQotdGVtcGxhdGUgPD4gaW5saW5lIHZvaWQgYnVpbGRfYmxvY2sgKHVpbnQ4X3QgdikKLXsKLSAgICBhc20gdm9sYXRpbGUgKAotCSJtb3ZkICUwLCAlJW1tMFxuXHRwdW5wY2tsYncgJSVtbTAsICUlbW0wXG5cdHBzaHVmdyAkMCwgJSVtbTAsICUlbW0wIgotCTogOiAiZyIodWludDMyX3QodikpIDogIm1tMCIpOwotfQotdGVtcGxhdGUgPD4gaW5saW5lIHZvaWQgYnVpbGRfYmxvY2sgKHVpbnQxNl90IHYpCi17Ci0gICAgYXNtIHZvbGF0aWxlICgKLQkibW92ZCAlMCwgJSVtbTBcblx0cHNodWZ3ICQwLCAlJW1tMCwgJSVtbTAiCi0JOiA6ICJnIih1aW50MzJfdCh2KSkgOiAibW0wIik7Ci19Ci10ZW1wbGF0ZSA8PiBpbmxpbmUgdm9pZCBidWlsZF9ibG9jayAodWludDMyX3QgdikKLXsKLSAgICBhc20gdm9sYXRpbGUgKAotCSJtb3ZkICUwLCAlJW1tMFxuXHRwdW5wY2tsZHEgJSVtbTAsICUlbW0wIgotCTogOiAiZyIodWludDMyX3QodikpIDogIm1tMCIpOwotfQotCi1zdGF0aWMgaW5saW5lIHZvaWQgc2ltZF9ibG9ja19maWxsX2xvb3AgKHVpbnQ4X3QqJiBkZXN0LCBzaXplX3QgY291bnQpCi17Ci0gICAgcHJlZmV0Y2ggKGFkdmFuY2UgKGRlc3QsIDUxMiksIDEsIDApOwotICAgIGZvciAodW9mZl90IGkgPSAwOyBpIDwgY291bnQ7ICsrIGksIGRlc3QgKz0gTU1YX0JTKQotCXNpbWRfYmxvY2tfc3RvcmUgKGRlc3QpOwotICAgIHNpbWRfYmxvY2tfY2xlYW51cCgpOwotICAgIHNpbWQ6OnJlc2V0X21teCgpOwotfQotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSB2b2lkIGZpbGxfbl9mYXN0IChUKiBkZXN0LCBzaXplX3QgY291bnQsIFQgdikKLXsKLSAgICBzaXplX3QgbkhlYWQgPSBBbGlnbih1aW50cHRyX3QoZGVzdCksIE1NWF9BTElHTikgLSB1aW50cHRyX3QoZGVzdCkgLyBzaXplb2YoVCk7Ci0gICAgbkhlYWQgPSBtaW4gKG5IZWFkLCBjb3VudCk7Ci0gICAgc3Rvc3YgKGRlc3QsIG5IZWFkLCB2KTsKLSAgICBjb3VudCAtPSBuSGVhZDsKLSAgICBidWlsZF9ibG9jayAodik7Ci0gICAgc2ltZF9ibG9ja19maWxsX2xvb3AgKCh1aW50OF90KiYpIGRlc3QsIGNvdW50ICogc2l6ZW9mKFQpIC8gTU1YX0JTKTsKLSAgICBjb3VudCAlPSBNTVhfQlM7Ci0gICAgc3Rvc3YgKGRlc3QsIGNvdW50LCB2KTsKLX0KLQotdm9pZCBmaWxsX244X2Zhc3QgKHVpbnQ4X3QqIGRlc3QsIHNpemVfdCBjb3VudCwgdWludDhfdCB2KQotICAgIHsgZmlsbF9uX2Zhc3QgKGRlc3QsIGNvdW50LCB2KTsgfQotdm9pZCBmaWxsX24xNl9mYXN0ICh1aW50MTZfdCogZGVzdCwgc2l6ZV90IGNvdW50LCB1aW50MTZfdCB2KQotICAgIHsgZmlsbF9uX2Zhc3QgKGRlc3QsIGNvdW50LCB2KTsgfQotdm9pZCBmaWxsX24zMl9mYXN0ICh1aW50MzJfdCogZGVzdCwgc2l6ZV90IGNvdW50LCB1aW50MzJfdCB2KQotICAgIHsgZmlsbF9uX2Zhc3QgKGRlc3QsIGNvdW50LCB2KTsgfQotI2Vsc2UKLXZvaWQgZmlsbF9uOF9mYXN0ICh1aW50OF90KiBkZXN0LCBzaXplX3QgY291bnQsIHVpbnQ4X3QgdikgeyBtZW1zZXQgKGRlc3QsIHYsIGNvdW50KTsgfQotdm9pZCBmaWxsX24xNl9mYXN0ICh1aW50MTZfdCogZGVzdCwgc2l6ZV90IGNvdW50LCB1aW50MTZfdCB2KSB7IHN0b3N2IChkZXN0LCBjb3VudCwgdik7IH0KLXZvaWQgZmlsbF9uMzJfZmFzdCAodWludDMyX3QqIGRlc3QsIHNpemVfdCBjb3VudCwgdWludDMyX3QgdikgeyBzdG9zdiAoZGVzdCwgY291bnQsIHYpOyB9Ci0jZW5kaWYgLy8gQ1BVX0hBU19NTVgKLQotLy8vIEV4Y2hhbmdlcyByYW5nZXMgW2ZpcnN0LCBtaWRkbGUpIGFuZCBbbWlkZGxlLCBsYXN0KQotdm9pZCByb3RhdGVfZmFzdCAodm9pZCogZmlyc3QsIHZvaWQqIG1pZGRsZSwgdm9pZCogbGFzdCkKLXsKLSNpZmRlZiBIQVZFX0FMTE9DQV9ICi0gICAgY29uc3Qgc2l6ZV90IGhhbGYxIChkaXN0YW5jZSAoZmlyc3QsIG1pZGRsZSkpLCBoYWxmMiAoZGlzdGFuY2UgKG1pZGRsZSwgbGFzdCkpOwotICAgIGNvbnN0IHNpemVfdCBobWluIChtaW4gKGhhbGYxLCBoYWxmMikpOwotICBpZiAoIWhtaW4pIHsKLQlyZXR1cm47Ci0gIH0KLSAgICB2b2lkKiBidWYgPSBhbGxvY2EgKGhtaW4pOwotICAgIGlmIChidWYpIHsKLQlpZiAoaGFsZjIgPCBoYWxmMSkgewotCSAgICBjb3B5X25fZmFzdCAobWlkZGxlLCBoYWxmMiwgYnVmKTsKLQkgICAgY29weV9iYWNrd2FyZF9mYXN0IChmaXJzdCwgbWlkZGxlLCBsYXN0KTsKLQkgICAgY29weV9uX2Zhc3QgKGJ1ZiwgaGFsZjIsIGZpcnN0KTsKLQl9IGVsc2UgewotCSAgICBjb3B5X25fZmFzdCAoZmlyc3QsIGhhbGYxLCBidWYpOwotCSAgICBjb3B5X25fZmFzdCAobWlkZGxlLCBoYWxmMiwgZmlyc3QpOwotCSAgICBjb3B5X25fZmFzdCAoYnVmLCBoYWxmMSwgYWR2YW5jZSAoZmlyc3QsIGhhbGYyKSk7Ci0JfQotICAgIH0gZWxzZQotI2Vsc2UKLSAgICBpZiAoZmlyc3QgPT0gbWlkZGxlIHx8IG1pZGRsZSA9PSBsYXN0KSB7Ci0JcmV0dXJuOwotICAgIH0KLSNlbmRpZgotICAgIHsKLQljaGFyKiBmID0gKGNoYXIqKSBmaXJzdDsKLQljaGFyKiBtID0gKGNoYXIqKSBtaWRkbGU7Ci0JY2hhciogbCA9IChjaGFyKikgbGFzdDsKLQlyZXZlcnNlIChmLCBtKTsKLQlyZXZlcnNlIChtLCBsKTsKLQl3aGlsZSAoZiAhPSBtICYmIG0gIT0gbCkKLQkgICAgaXRlcl9zd2FwIChmKyssIC0tbCk7Ci0JcmV2ZXJzZSAoZiwgKGYgPT0gbSA/IGwgOiBtKSk7Ci0gICAgfQotfQotCi0jaWYgX19HTlVDX18gPCA0Ci1zaXplX3QgcG9wY291bnQgKHVpbnQzMl90IHYpCi17Ci0gICAgY29uc3QgdWludDMyX3QgdyA9IHYgLSAoKHYgPj4gMSkgJiAweDU1NTU1NTU1KTsgLy8gQWxnb3JpdGhtIGZyb20gQU1EIG9wdGltaXphdGlvbiBndWlkZQotICAgIGNvbnN0IHVpbnQzMl90IHggPSAodyAmIDB4MzMzMzMzMzMpICsgKCh3ID4+IDIpICYgMHgzMzMzMzMzMyk7Ci0gICAgcmV0dXJuICgoKHggKyAoeCA+PiA0KSAmIDB4MEYwRjBGMEYpICogMHgwMTAxMDEwMSkgPj4gMjQpOwotfQotCi0jaWYgSEFWRV9JTlQ2NF9UCi0vLy8gXGJyaWVmIFJldHVybnMgdGhlIG51bWJlciBvZiAxcyBpbiBccCB2IGluIGJpbmFyeS4KLXNpemVfdCBwb3Bjb3VudCAodWludDY0X3QgdikKLXsKLSAgICB2IC09ICh2ID4+IDEpICYgVUlOVDY0X0MoMHg1NTU1NTU1NTU1NTU1NTU1KTsJCS8vIEFsZ29yaXRobSBmcm9tIFdpa2lwZWRpYQotICAgIHYgPSAodiAmIFVJTlQ2NF9DKDB4MzMzMzMzMzMzMzMzMzMzMykpICsgKCh2ID4+IDIpICYgVUlOVDY0X0MoMHgzMzMzMzMzMzMzMzMzMzMzKSk7Ci0gICAgdiA9ICh2ICsgKHYgPj4gNCkpICYgVUlOVDY0X0MoMHgwRjBGMEYwRjBGMEYwRjBGKTsKLSAgICByZXR1cm4gKCh2ICogVUlOVDY0X0MoMHgwMTAxMDEwMTAxMDEwMTAxKSkgPj4gNTYpOwotfQotI2VuZGlmCS8vIEhBVkVfSU5UNjRfVAotI2VuZGlmCS8vICFfX0dOVUNfXwotCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VhbGdvYmFzZS5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdWFsZ29iYXNlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4YzFhNzIuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdWFsZ29iYXNlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwzMzQgKzAsMCBAQAotLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHVzdGwgbGlicmFyeSwgYW4gU1RMIGltcGxlbWVudGF0aW9uLgotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwNSBieSBNaWtlIFNoYXJvdiA8bXNoYXJvdkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0vLyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgotLy8KLS8vIHVhbGdvYmFzZS5oCi0vLwotLy8gSW1wbGVtZW50YXRpb24gb2YgU1RMIGFsZ29yaXRobXMuCi0vLwotLy8gVGhlIGZ1bmN0aW9uIHByb3RvdHlwZXMgYXJlIGNvcGllZAotLy8gZXhhY3RseSBmcm9tIHRoZSBTR0kgdmVyc2lvbiBvZiBTVEwgZG9jdW1lbnRhdGlvbiBhbG9uZyB3aXRoIGNvbW1lbnRzIGFib3V0Ci0vLyB0aGVpciB1c2UuIFRoZSBjb2RlIGlzIE5PVCB0aGUgc2FtZSwgdGhvdWdoIHRoZSBmdW5jdGlvbmFsaXR5IHVzdWFsbHkgaXMuCi0vLwotCi0jaWZuZGVmIFVBTEdPQkFTRV9IXzY4M0EwQkU3NzU0NjEzM0M0Q0UwRTM2MjJDRkFBMkVCCi0jZGVmaW5lIFVBTEdPQkFTRV9IXzY4M0EwQkU3NzU0NjEzM0M0Q0UwRTM2MjJDRkFBMkVCCi0KLSNpbmNsdWRlICJ1dXRpbGl0eS5oIgotI2luY2x1ZGUgPHN0cmluZy5oPgotCi0jaWYgUExBVEZPUk1fQU5EUk9JRAotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jdW5kZWYgQ1BVX0hBU19NTVgKLSNlbmRpZgotCi1uYW1lc3BhY2UgdXN0bCB7Ci0KLS8vLyBBc3NpZ25zIHRoZSBjb250ZW50cyBvZiBhIHRvIGIgYW5kIHRoZSBjb250ZW50cyBvZiBiIHRvIGEuCi0vLy8gVGhpcyBpcyB1c2VkIGFzIGEgcHJpbWl0aXZlIG9wZXJhdGlvbiBieSBtYW55IG90aGVyIGFsZ29yaXRobXMuIAotLy8vIFxpbmdyb3VwIFN3YXBBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBBc3NpZ25hYmxlPiAKLWlubGluZSB2b2lkIHN3YXAgKEFzc2lnbmFibGUmIGEsIEFzc2lnbmFibGUmIGIpCi17Ci0gICAgQXNzaWduYWJsZSB0bXAgPSBhOwotICAgIGEgPSBiOwotICAgIGIgPSB0bXA7Ci19Ci0KLS8vLyBFcXVpdmFsZW50IHRvIHN3YXAgKCphLCAqYikKLS8vLyBcaW5ncm91cCBTd2FwQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcmF0b3I+IAotaW5saW5lIHZvaWQgaXRlcl9zd2FwIChJdGVyYXRvciBhLCBJdGVyYXRvciBiKQotewotICAgIHN3YXAgKCphLCAqYik7Ci19Ci0KLS8vLyBDb3B5IGNvcGllcyBlbGVtZW50cyBmcm9tIHRoZSByYW5nZSBbZmlyc3QsIGxhc3QpIHRvIHRoZSByYW5nZQotLy8vIFtyZXN1bHQsIHJlc3VsdCArIChsYXN0IC0gZmlyc3QpKS4gVGhhdCBpcywgaXQgcGVyZm9ybXMgdGhlIGFzc2lnbm1lbnRzCi0vLy8gKnJlc3VsdCA9ICpmaXJzdCwgKihyZXN1bHQgKyAxKSA9ICooZmlyc3QgKyAxKSwgYW5kIHNvIG9uLiBbMV0gR2VuZXJhbGx5LAotLy8vIGZvciBldmVyeSBpbnRlZ2VyIG4gZnJvbSAwIHRvIGxhc3QgLSBmaXJzdCwgY29weSBwZXJmb3JtcyB0aGUgYXNzaWdubWVudAotLy8vICoocmVzdWx0ICsgbikgPSAqKGZpcnN0ICsgbikuIEFzc2lnbm1lbnRzIGFyZSBwZXJmb3JtZWQgaW4gZm9yd2FyZCBvcmRlciwKLS8vLyBpLmUuIGluIG9yZGVyIG9mIGluY3JlYXNpbmcgbi4gCi0vLy8gXGluZ3JvdXAgTXV0YXRpbmdBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvcj4KLWlubGluZSBPdXRwdXRJdGVyYXRvciBjb3B5IChJbnB1dEl0ZXJhdG9yIGZpcnN0LCBJbnB1dEl0ZXJhdG9yIGxhc3QsIE91dHB1dEl0ZXJhdG9yIHJlc3VsdCkKLXsKLSAgICBmb3IgKDsgZmlyc3QgIT0gbGFzdDsgKytyZXN1bHQsICsrZmlyc3QpCi0JKnJlc3VsdCA9ICpmaXJzdDsKLSAgICByZXR1cm4gKHJlc3VsdCk7Ci19Ci0KLS8vLyBDb3B5X24gY29waWVzIGVsZW1lbnRzIGZyb20gdGhlIHJhbmdlIFtmaXJzdCwgZmlyc3QgKyBuKSB0byB0aGUgcmFuZ2UKLS8vLyBbcmVzdWx0LCByZXN1bHQgKyBuKS4gVGhhdCBpcywgaXQgcGVyZm9ybXMgdGhlIGFzc2lnbm1lbnRzCi0vLy8gKnJlc3VsdCA9ICpmaXJzdCwgKihyZXN1bHQgKyAxKSA9ICooZmlyc3QgKyAxKSwgYW5kIHNvIG9uLiBHZW5lcmFsbHksCi0vLy8gZm9yIGV2ZXJ5IGludGVnZXIgaSBmcm9tIDAgdXAgdG8gKGJ1dCBub3QgaW5jbHVkaW5nKSBuLCBjb3B5X24gcGVyZm9ybXMKLS8vLyB0aGUgYXNzaWdubWVudCAqKHJlc3VsdCArIGkpID0gKihmaXJzdCArIGkpLiBBc3NpZ25tZW50cyBhcmUgcGVyZm9ybWVkCi0vLy8gaW4gZm9yd2FyZCBvcmRlciwgaS5lLiBpbiBvcmRlciBvZiBpbmNyZWFzaW5nIG4uCi0vLy8gXGluZ3JvdXAgTXV0YXRpbmdBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvcj4KLWlubGluZSBPdXRwdXRJdGVyYXRvciBjb3B5X24gKElucHV0SXRlcmF0b3IgZmlyc3QsIHNpemVfdCBjb3VudCwgT3V0cHV0SXRlcmF0b3IgcmVzdWx0KQotewotICAgIGZvciAoOyBjb3VudDsgLS1jb3VudCwgKytyZXN1bHQsICsrZmlyc3QpCi0JKnJlc3VsdCA9ICpmaXJzdDsKLSAgICByZXR1cm4gKHJlc3VsdCk7Ci19Ci0KLS8vLyBcYnJpZWYgQ29weSBjb3BpZXMgZWxlbWVudHMgZnJvbSB0aGUgcmFuZ2UgKGxhc3QsIGZpcnN0XSB0byByZXN1bHQuCi0vLy8gXGluZ3JvdXAgTXV0YXRpbmdBbGdvcml0aG1zCi0vLy8gQ29waWVzIGVsZW1lbnRzIHN0YXJ0aW5nIGF0IGxhc3QsIGRlY3JlbWVudGluZyBib3RoIGxhc3QgYW5kIHJlc3VsdC4KLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcmF0b3IsIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yPgotaW5saW5lIE91dHB1dEl0ZXJhdG9yIGNvcHlfYmFja3dhcmQgKElucHV0SXRlcmF0b3IgZmlyc3QsIElucHV0SXRlcmF0b3IgbGFzdCwgT3V0cHV0SXRlcmF0b3IgcmVzdWx0KQotewotICAgIHdoaWxlIChmaXJzdCAhPSBsYXN0KQotCSotLXJlc3VsdCA9ICotLWxhc3Q7Ci0gICAgcmV0dXJuIChyZXN1bHQpOwotfQotCi0vLy8gRm9yX2VhY2ggYXBwbGllcyB0aGUgZnVuY3Rpb24gb2JqZWN0IGYgdG8gZWFjaCBlbGVtZW50IGluIHRoZSByYW5nZQotLy8vIFtmaXJzdCwgbGFzdCk7IGYncyByZXR1cm4gdmFsdWUsIGlmIGFueSwgaXMgaWdub3JlZC4gQXBwbGljYXRpb25zIGFyZQotLy8vIHBlcmZvcm1lZCBpbiBmb3J3YXJkIG9yZGVyLCBpLmUuIGZyb20gZmlyc3QgdG8gbGFzdC4gRm9yX2VhY2ggcmV0dXJucwotLy8vIHRoZSBmdW5jdGlvbiBvYmplY3QgYWZ0ZXIgaXQgaGFzIGJlZW4gYXBwbGllZCB0byBlYWNoIGVsZW1lbnQuCi0vLy8gXGluZ3JvdXAgTXV0YXRpbmdBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBVbmFyeUZ1bmN0aW9uPgotaW5saW5lIFVuYXJ5RnVuY3Rpb24gZm9yX2VhY2ggKElucHV0SXRlcmF0b3IgZmlyc3QsIElucHV0SXRlcmF0b3IgbGFzdCwgVW5hcnlGdW5jdGlvbiBmKQotewotICAgIGZvciAoOyBmaXJzdCAhPSBsYXN0OyArK2ZpcnN0KQotCWYgKCpmaXJzdCk7Ci0gICAgcmV0dXJuIChmKTsKLX0KLQotLy8vIEZpbGwgYXNzaWducyB0aGUgdmFsdWUgdmFsdWUgdG8gZXZlcnkgZWxlbWVudCBpbiB0aGUgcmFuZ2UgW2ZpcnN0LCBsYXN0KS4KLS8vLyBUaGF0IGlzLCBmb3IgZXZlcnkgaXRlcmF0b3IgaSBpbiBbZmlyc3QsIGxhc3QpLAotLy8vIGl0IHBlcmZvcm1zIHRoZSBhc3NpZ25tZW50ICppID0gdmFsdWUuCi0vLy8gXGluZ3JvdXAgR2VuZXJhdG9yQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBUPgotaW5saW5lIHZvaWQgZmlsbCAoRm9yd2FyZEl0ZXJhdG9yIGZpcnN0LCBGb3J3YXJkSXRlcmF0b3IgbGFzdCwgY29uc3QgVCYgdmFsdWUpCi17Ci0gICAgZm9yICg7IGZpcnN0ICE9IGxhc3Q7ICsrZmlyc3QpCi0JKmZpcnN0ID0gdmFsdWU7Ci19Ci0KLS8vLyBGaWxsX24gYXNzaWducyB0aGUgdmFsdWUgdmFsdWUgdG8gZXZlcnkgZWxlbWVudCBpbiB0aGUgcmFuZ2UKLS8vLyBbZmlyc3QsIGZpcnN0K2NvdW50KS4gVGhhdCBpcywgZm9yIGV2ZXJ5IGl0ZXJhdG9yIGkgaW4gW2ZpcnN0LCBmaXJzdCtjb3VudCksCi0vLy8gaXQgcGVyZm9ybXMgdGhlIGFzc2lnbm1lbnQgKmkgPSB2YWx1ZS4gVGhlIHJldHVybiB2YWx1ZSBpcyBmaXJzdCArIGNvdW50LgotLy8vIFxpbmdyb3VwIEdlbmVyYXRvckFsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBUPgotaW5saW5lIE91dHB1dEl0ZXJhdG9yIGZpbGxfbiAoT3V0cHV0SXRlcmF0b3IgZmlyc3QsIHNpemVfdCBjb3VudCwgY29uc3QgVCYgdmFsdWUpCi17Ci0gICAgZm9yICg7IGNvdW50OyAtLWNvdW50LCArK2ZpcnN0KQotCSpmaXJzdCA9IHZhbHVlOwotICAgIHJldHVybiAoZmlyc3QpOwotfQotCi0jaWYgQ1BVX0hBU19NTVgKLWV4dGVybiAiQyIgdm9pZCBjb3B5X25fZmFzdCAoY29uc3Qgdm9pZCogc3JjLCBzaXplX3QgY291bnQsIHZvaWQqIGRlc3QpOwotI2Vsc2UKLWlubGluZSB2b2lkIGNvcHlfbl9mYXN0IChjb25zdCB2b2lkKiBzcmMsIHNpemVfdCBjb3VudCwgdm9pZCogZGVzdCkKLXsgbWVtY3B5IChkZXN0LCBzcmMsIGNvdW50KTsgfQotI2VuZGlmCi0jaWYgX19pMzg2X18gfHwgX194ODZfNjRfXwotZXh0ZXJuICJDIiB2b2lkIGNvcHlfYmFja3dhcmRfZmFzdCAoY29uc3Qgdm9pZCogZmlyc3QsIGNvbnN0IHZvaWQqIGxhc3QsIHZvaWQqIHJlc3VsdCk7Ci0jZWxzZQotaW5saW5lIHZvaWQgY29weV9iYWNrd2FyZF9mYXN0IChjb25zdCB2b2lkKiBmaXJzdCwgY29uc3Qgdm9pZCogbGFzdCwgdm9pZCogcmVzdWx0KQotewotICAgIGNvbnN0IHNpemVfdCBuQnl0ZXMgKGRpc3RhbmNlIChmaXJzdCwgbGFzdCkpOwotICAgIG1lbW1vdmUgKGFkdmFuY2UgKHJlc3VsdCwgLW5CeXRlcyksIGZpcnN0LCBuQnl0ZXMpOwotfQotI2VuZGlmCi1leHRlcm4gIkMiIHZvaWQgZmlsbF9uOF9mYXN0ICh1aW50OF90KiBkZXN0LCBzaXplX3QgY291bnQsIHVpbnQ4X3Qgdik7Ci1leHRlcm4gIkMiIHZvaWQgZmlsbF9uMTZfZmFzdCAodWludDE2X3QqIGRlc3QsIHNpemVfdCBjb3VudCwgdWludDE2X3Qgdik7Ci1leHRlcm4gIkMiIHZvaWQgZmlsbF9uMzJfZmFzdCAodWludDMyX3QqIGRlc3QsIHNpemVfdCBjb3VudCwgdWludDMyX3Qgdik7Ci1leHRlcm4gIkMiIHZvaWQgcm90YXRlX2Zhc3QgKHZvaWQqIGZpcnN0LCB2b2lkKiBtaWRkbGUsIHZvaWQqIGxhc3QpOwotCi0jaWYgX19HTlVDX18gPj0gNAotLy8vIFxicmllZiBDb21wdXRlcyB0aGUgbnVtYmVyIG9mIDEgYml0cyBpbiBhIG51bWJlci4KLS8vLyBcaW5ncm91cCBDb25kaXRpb25BbGdvcml0aG1zCi1pbmxpbmUgc2l6ZV90IHBvcGNvdW50ICh1aW50MzJfdCB2KQl7IHJldHVybiAoX19idWlsdGluX3BvcGNvdW50ICh2KSk7IH0KLSNpZiBIQVZFX0lOVDY0X1QKLWlubGluZSBzaXplX3QgcG9wY291bnQgKHVpbnQ2NF90IHYpCXsgcmV0dXJuIChfX2J1aWx0aW5fcG9wY291bnRsbCAodikpOyB9Ci0jZW5kaWYKLSNlbHNlCi1zaXplX3QgcG9wY291bnQgKHVpbnQzMl90IHYpOwotI2lmIEhBVkVfSU5UNjRfVAotc2l6ZV90IHBvcGNvdW50ICh1aW50NjRfdCB2KTsKLSNlbmRpZgkvLyBIQVZFX0lOVDY0X1QKLSNlbmRpZgkvLyBfX0dOVUNfXwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIE9wdGltaXplZCB2ZXJzaW9ucyBmb3Igc3RhbmRhcmQgdHlwZXMKLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWYgV0FOVF9VTlJPTExFRF9DT1BZCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIFQqIHVucm9sbGVkX2NvcHkgKGNvbnN0IFQqIGZpcnN0LCBzaXplX3QgY291bnQsIFQqIHJlc3VsdCkKLXsKLSAgICBjb3B5X25fZmFzdCAoZmlyc3QsIGNvdW50ICogc2l6ZW9mKFQpLCByZXN1bHQpOwotICAgIHJldHVybiAoYWR2YW5jZSAocmVzdWx0LCBjb3VudCkpOwotfQotCi10ZW1wbGF0ZSA8PgotaW5saW5lIHVpbnQ4X3QqIGNvcHlfYmFja3dhcmQgKGNvbnN0IHVpbnQ4X3QqIGZpcnN0LCBjb25zdCB1aW50OF90KiBsYXN0LCB1aW50OF90KiByZXN1bHQpCi17Ci0gICAgY29weV9iYWNrd2FyZF9mYXN0IChmaXJzdCwgbGFzdCwgcmVzdWx0KTsKLSAgICByZXR1cm4gKHJlc3VsdCk7Ci19Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIFQqIHVucm9sbGVkX2ZpbGwgKFQqIHJlc3VsdCwgc2l6ZV90IGNvdW50LCBUIHZhbHVlKQotewotICAgIGZvciAoOyBjb3VudDsgLS1jb3VudCwgKytyZXN1bHQpCi0JKnJlc3VsdCA9IHZhbHVlOwotICAgIHJldHVybiAocmVzdWx0KTsKLX0KLXRlbXBsYXRlIDw+IGlubGluZSB1aW50OF90KiB1bnJvbGxlZF9maWxsICh1aW50OF90KiByZXN1bHQsIHNpemVfdCBjb3VudCwgdWludDhfdCB2YWx1ZSkKLSAgICB7IGZpbGxfbjhfZmFzdCAocmVzdWx0LCBjb3VudCwgdmFsdWUpOyByZXR1cm4gKGFkdmFuY2UgKHJlc3VsdCwgY291bnQpKTsgfQotdGVtcGxhdGUgPD4gaW5saW5lIHVpbnQxNl90KiB1bnJvbGxlZF9maWxsICh1aW50MTZfdCogcmVzdWx0LCBzaXplX3QgY291bnQsIHVpbnQxNl90IHZhbHVlKQotICAgIHsgZmlsbF9uMTZfZmFzdCAocmVzdWx0LCBjb3VudCwgdmFsdWUpOyByZXR1cm4gKGFkdmFuY2UgKHJlc3VsdCwgY291bnQpKTsgfQotdGVtcGxhdGUgPD4gaW5saW5lIHVpbnQzMl90KiB1bnJvbGxlZF9maWxsICh1aW50MzJfdCogcmVzdWx0LCBzaXplX3QgY291bnQsIHVpbnQzMl90IHZhbHVlKQotICAgIHsgZmlsbF9uMzJfZmFzdCAocmVzdWx0LCBjb3VudCwgdmFsdWUpOyByZXR1cm4gKGFkdmFuY2UgKHJlc3VsdCwgY291bnQpKTsgfQotdGVtcGxhdGUgPD4gaW5saW5lIGZsb2F0KiB1bnJvbGxlZF9maWxsIChmbG9hdCogcmVzdWx0LCBzaXplX3QgY291bnQsIGZsb2F0IHZhbHVlKQotICAgIHsgZmlsbF9uMzJfZmFzdCAoKHVpbnQzMl90KikgcmVzdWx0LCBjb3VudCwgbm9hbGlhcyh1aW50MzJfdCgpLCZ2YWx1ZSkpOyByZXR1cm4gKGFkdmFuY2UgKHJlc3VsdCwgY291bnQpKTsgfQotCi0jaWYgQ1BVX0hBU19NTVgKLSNkZWZpbmUgVU5ST0xMRURfQ09QWV9TUEVDSUFMSVpBVElPTih0eXBlKQkJCQkJCVwKLXRlbXBsYXRlIDw+IGlubGluZSB0eXBlKiBjb3B5IChjb25zdCB0eXBlKiBmaXJzdCwgY29uc3QgdHlwZSogbGFzdCwgdHlwZSogcmVzdWx0KQlcCi17IHJldHVybiAodW5yb2xsZWRfY29weSAoZmlyc3QsIGRpc3RhbmNlIChmaXJzdCwgbGFzdCksIHJlc3VsdCkpOyB9CQkJXAotdGVtcGxhdGUgPD4gaW5saW5lIHR5cGUqIGNvcHlfbiAoY29uc3QgdHlwZSogZmlyc3QsIHNpemVfdCBjb3VudCwgdHlwZSogcmVzdWx0KQkJXAoteyByZXR1cm4gKHVucm9sbGVkX2NvcHkgKGZpcnN0LCBjb3VudCwgcmVzdWx0KSk7IH0KLSNkZWZpbmUgVU5ST0xMRURfRklMTF9TUEVDSUFMSVpBVElPTih0eXBlKQkJCQkJCVwKLXRlbXBsYXRlIDw+IGlubGluZSB2b2lkIGZpbGwgKHR5cGUqIGZpcnN0LCB0eXBlKiBsYXN0LCBjb25zdCB0eXBlJiB2YWx1ZSkJCVwKLXsgdW5yb2xsZWRfZmlsbCAoZmlyc3QsIGRpc3RhbmNlIChmaXJzdCwgbGFzdCksIHZhbHVlKTsgfQkJCQlcCi10ZW1wbGF0ZSA8PiBpbmxpbmUgdHlwZSogZmlsbF9uICh0eXBlKiBmaXJzdCwgc2l6ZV90IGNvdW50LCBjb25zdCB0eXBlJiB2YWx1ZSkJCVwKLXsgcmV0dXJuICh1bnJvbGxlZF9maWxsIChmaXJzdCwgY291bnQsIHZhbHVlKSk7IH0KLVVOUk9MTEVEX0NPUFlfU1BFQ0lBTElaQVRJT04odWludDhfdCkKLVVOUk9MTEVEX0ZJTExfU1BFQ0lBTElaQVRJT04odWludDhfdCkKLVVOUk9MTEVEX0NPUFlfU1BFQ0lBTElaQVRJT04odWludDE2X3QpCi1VTlJPTExFRF9GSUxMX1NQRUNJQUxJWkFUSU9OKHVpbnQxNl90KQotVU5ST0xMRURfQ09QWV9TUEVDSUFMSVpBVElPTih1aW50MzJfdCkKLVVOUk9MTEVEX0ZJTExfU1BFQ0lBTElaQVRJT04odWludDMyX3QpCi1VTlJPTExFRF9DT1BZX1NQRUNJQUxJWkFUSU9OKGZsb2F0KQotVU5ST0xMRURfRklMTF9TUEVDSUFMSVpBVElPTihmbG9hdCkKLSN1bmRlZiBVTlJPTExFRF9GSUxMX1NQRUNJQUxJWkFUSU9OCi0jdW5kZWYgVU5ST0xMRURfQ09QWV9TUEVDSUFMSVpBVElPTgotI2VuZGlmIC8vIFdBTlRfVU5ST0xMRURfQ09QWQotI2VuZGlmIC8vIENQVV9IQVNfTU1YCi0KLS8vIFNwZWNpYWxpemF0aW9ucyBmb3Igdm9pZCogYW5kIGNoYXIqLCBhbGlhc2luZyB0aGUgYWJvdmUgb3B0aW1pemVkIHZlcnNpb25zLgotLy8KLS8vIEFsbCB0aGVzZSBuZWVkIGR1cGxpY2F0aW9uIHdpdGggY29uc3QgYW5kIG5vbi1jb25zdCBhcmd1bWVudHMsIHNpbmNlCi0vLyBvdGhlcndpc2UgdGhlIGNvbXBpbGVyIHdpbGwgZGVmYXVsdCB0byB0aGUgdW5vcHRpbWl6ZWQgdmVyc2lvbiBmb3IKLS8vIHBvaW50ZXJzIG5vdCBjb25zdCBpbiB0aGUgY2FsbGVyJ3MgY29udGV4dCwgc3VjaCBhcyBsb2NhbCB2YXJpYWJsZXMuCi0vLyBUaGVzZSBhcmUgYWxsIGlubGluZSwgYnV0IHRoZXkgc3VyZSBzbG93IGRvd24gY29tcGlsYXRpb24uLi4gOigKLS8vCi0jZGVmaW5lIENPUFlfQUxJQVNfRlVOQyhjdHlwZSwgdHlwZSwgYWxpYXNfdHlwZSkJCQlcCi10ZW1wbGF0ZSA8PiBpbmxpbmUgdHlwZSogY29weSAoY3R5cGUqIGZpcnN0LCBjdHlwZSogbGFzdCwgdHlwZSogcmVzdWx0KQlcCi17IHJldHVybiAoKHR5cGUqKSBjb3B5ICgoY29uc3QgYWxpYXNfdHlwZSopIGZpcnN0LCAoY29uc3QgYWxpYXNfdHlwZSopIGxhc3QsIChhbGlhc190eXBlKikgcmVzdWx0KSk7IH0KLSNpZiBXQU5UX1VOUk9MTEVEX0NPUFkKLSNpZiBIQVZFX1RIUkVFX0NIQVJfVFlQRVMKLUNPUFlfQUxJQVNfRlVOQyhjb25zdCBjaGFyLCBjaGFyLCB1aW50OF90KQotQ09QWV9BTElBU19GVU5DKGNoYXIsIGNoYXIsIHVpbnQ4X3QpCi0jZW5kaWYKLUNPUFlfQUxJQVNfRlVOQyhjb25zdCBpbnQ4X3QsIGludDhfdCwgdWludDhfdCkKLUNPUFlfQUxJQVNfRlVOQyhpbnQ4X3QsIGludDhfdCwgdWludDhfdCkKLUNPUFlfQUxJQVNfRlVOQyh1aW50OF90LCB1aW50OF90LCB1aW50OF90KQotQ09QWV9BTElBU19GVU5DKGNvbnN0IGludDE2X3QsIGludDE2X3QsIHVpbnQxNl90KQotQ09QWV9BTElBU19GVU5DKGludDE2X3QsIGludDE2X3QsIHVpbnQxNl90KQotQ09QWV9BTElBU19GVU5DKHVpbnQxNl90LCB1aW50MTZfdCwgdWludDE2X3QpCi0jaWYgQ1BVX0hBU19NTVggfHwgKFNJWkVfT0ZfTE9ORyA+IDQpCi1DT1BZX0FMSUFTX0ZVTkMoY29uc3QgaW50MzJfdCwgaW50MzJfdCwgdWludDMyX3QpCi1DT1BZX0FMSUFTX0ZVTkMoaW50MzJfdCwgaW50MzJfdCwgdWludDMyX3QpCi1DT1BZX0FMSUFTX0ZVTkModWludDMyX3QsIHVpbnQzMl90LCB1aW50MzJfdCkKLSNlbmRpZgotI2VuZGlmCi1DT1BZX0FMSUFTX0ZVTkMoY29uc3Qgdm9pZCwgdm9pZCwgdWludDhfdCkKLUNPUFlfQUxJQVNfRlVOQyh2b2lkLCB2b2lkLCB1aW50OF90KQotI3VuZGVmIENPUFlfQUxJQVNfRlVOQwotI2RlZmluZSBDT1BZX0JBQ0tXQVJEX0FMSUFTX0ZVTkMoY3R5cGUsIHR5cGUsIGFsaWFzX3R5cGUpCQkJCVwKLXRlbXBsYXRlIDw+IGlubGluZSB0eXBlKiBjb3B5X2JhY2t3YXJkIChjdHlwZSogZmlyc3QsIGN0eXBlKiBsYXN0LCB0eXBlKiByZXN1bHQpCVwKLXsgcmV0dXJuICgodHlwZSopIGNvcHlfYmFja3dhcmQgKChjb25zdCBhbGlhc190eXBlKikgZmlyc3QsIChjb25zdCBhbGlhc190eXBlKikgbGFzdCwgKGFsaWFzX3R5cGUqKSByZXN1bHQpKTsgfQotI2lmIFdBTlRfVU5ST0xMRURfQ09QWQotI2lmIEhBVkVfVEhSRUVfQ0hBUl9UWVBFUwotQ09QWV9CQUNLV0FSRF9BTElBU19GVU5DKGNoYXIsIGNoYXIsIHVpbnQ4X3QpCi0jZW5kaWYKLUNPUFlfQkFDS1dBUkRfQUxJQVNfRlVOQyh1aW50OF90LCB1aW50OF90LCB1aW50OF90KQotQ09QWV9CQUNLV0FSRF9BTElBU19GVU5DKGludDhfdCwgaW50OF90LCB1aW50OF90KQotQ09QWV9CQUNLV0FSRF9BTElBU19GVU5DKHVpbnQxNl90LCB1aW50MTZfdCwgdWludDhfdCkKLUNPUFlfQkFDS1dBUkRfQUxJQVNfRlVOQyhjb25zdCB1aW50MTZfdCwgdWludDE2X3QsIHVpbnQ4X3QpCi1DT1BZX0JBQ0tXQVJEX0FMSUFTX0ZVTkMoaW50MTZfdCwgaW50MTZfdCwgdWludDhfdCkKLUNPUFlfQkFDS1dBUkRfQUxJQVNfRlVOQyhjb25zdCBpbnQxNl90LCBpbnQxNl90LCB1aW50OF90KQotI2VuZGlmCi1DT1BZX0JBQ0tXQVJEX0FMSUFTX0ZVTkModm9pZCwgdm9pZCwgdWludDhfdCkKLUNPUFlfQkFDS1dBUkRfQUxJQVNfRlVOQyhjb25zdCB2b2lkLCB2b2lkLCB1aW50OF90KQotI3VuZGVmIENPUFlfQkFDS1dBUkRfQUxJQVNfRlVOQwotI2RlZmluZSBGSUxMX0FMSUFTX0ZVTkModHlwZSwgYWxpYXNfdHlwZSwgdl90eXBlKQkJCQlcCi10ZW1wbGF0ZSA8PiBpbmxpbmUgdm9pZCBmaWxsICh0eXBlKiBmaXJzdCwgdHlwZSogbGFzdCwgY29uc3Qgdl90eXBlJiB2YWx1ZSkJXAoteyBmaWxsICgoYWxpYXNfdHlwZSopIGZpcnN0LCAoYWxpYXNfdHlwZSopIGxhc3QsIChjb25zdCBhbGlhc190eXBlJikgdmFsdWUpOyB9Ci1GSUxMX0FMSUFTX0ZVTkModm9pZCwgdWludDhfdCwgY2hhcikKLUZJTExfQUxJQVNfRlVOQyh2b2lkLCB1aW50OF90LCB1aW50OF90KQotI2lmIFdBTlRfVU5ST0xMRURfQ09QWQotI2lmIEhBVkVfVEhSRUVfQ0hBUl9UWVBFUwotRklMTF9BTElBU19GVU5DKGNoYXIsIHVpbnQ4X3QsIGNoYXIpCi1GSUxMX0FMSUFTX0ZVTkMoY2hhciwgdWludDhfdCwgdWludDhfdCkKLSNlbmRpZgotRklMTF9BTElBU19GVU5DKGludDhfdCwgdWludDhfdCwgaW50OF90KQotRklMTF9BTElBU19GVU5DKGludDE2X3QsIHVpbnQxNl90LCBpbnQxNl90KQotI2lmIENQVV9IQVNfTU1YIHx8IChTSVpFX09GX0xPTkcgPiA0KQotRklMTF9BTElBU19GVU5DKGludDMyX3QsIHVpbnQzMl90LCBpbnQzMl90KQotI2VuZGlmCi0jZW5kaWYKLSN1bmRlZiBGSUxMX0FMSUFTX0ZVTkMKLSNkZWZpbmUgQ09QWV9OX0FMSUFTX0ZVTkMoY3R5cGUsIHR5cGUsIGFsaWFzX3R5cGUpCQkJCQlcCi10ZW1wbGF0ZSA8PiBpbmxpbmUgdHlwZSogY29weV9uIChjdHlwZSogZmlyc3QsIHNpemVfdCBjb3VudCwgdHlwZSogcmVzdWx0KQlcCi17IHJldHVybiAoKHR5cGUqKSBjb3B5X24gKChjb25zdCBhbGlhc190eXBlKikgZmlyc3QsIGNvdW50LCAoYWxpYXNfdHlwZSopIHJlc3VsdCkpOyB9Ci1DT1BZX05fQUxJQVNfRlVOQyhjb25zdCB2b2lkLCB2b2lkLCB1aW50OF90KQotQ09QWV9OX0FMSUFTX0ZVTkModm9pZCwgdm9pZCwgdWludDhfdCkKLSNpZiBXQU5UX1VOUk9MTEVEX0NPUFkKLSNpZiBIQVZFX1RIUkVFX0NIQVJfVFlQRVMKLUNPUFlfTl9BTElBU19GVU5DKGNvbnN0IGNoYXIsIGNoYXIsIHVpbnQ4X3QpCi1DT1BZX05fQUxJQVNfRlVOQyhjaGFyLCBjaGFyLCB1aW50OF90KQotI2VuZGlmCi1DT1BZX05fQUxJQVNfRlVOQyhpbnQ4X3QsIGludDhfdCwgdWludDhfdCkKLUNPUFlfTl9BTElBU19GVU5DKHVpbnQ4X3QsIHVpbnQ4X3QsIHVpbnQ4X3QpCi1DT1BZX05fQUxJQVNfRlVOQyhjb25zdCBpbnQ4X3QsIGludDhfdCwgdWludDhfdCkKLUNPUFlfTl9BTElBU19GVU5DKGludDE2X3QsIGludDE2X3QsIHVpbnQxNl90KQotQ09QWV9OX0FMSUFTX0ZVTkModWludDE2X3QsIHVpbnQxNl90LCB1aW50MTZfdCkKLUNPUFlfTl9BTElBU19GVU5DKGNvbnN0IGludDE2X3QsIGludDE2X3QsIHVpbnQxNl90KQotI2lmIENQVV9IQVNfTU1YIHx8IChTSVpFX09GX0xPTkcgPiA0KQotQ09QWV9OX0FMSUFTX0ZVTkMoaW50MzJfdCwgaW50MzJfdCwgdWludDMyX3QpCi1DT1BZX05fQUxJQVNfRlVOQyh1aW50MzJfdCwgdWludDMyX3QsIHVpbnQzMl90KQotQ09QWV9OX0FMSUFTX0ZVTkMoY29uc3QgaW50MzJfdCwgaW50MzJfdCwgdWludDMyX3QpCi0jZW5kaWYKLSNlbmRpZgotI3VuZGVmIENPUFlfTl9BTElBU19GVU5DCi0jZGVmaW5lIEZJTExfTl9BTElBU19GVU5DKHR5cGUsIGFsaWFzX3R5cGUsIHZfdHlwZSkJCQkJXAotdGVtcGxhdGUgPD4gaW5saW5lIHR5cGUqIGZpbGxfbiAodHlwZSogZmlyc3QsIHNpemVfdCBuLCBjb25zdCB2X3R5cGUmIHZhbHVlKQlcCi17IHJldHVybiAoKHR5cGUqKSBmaWxsX24gKChhbGlhc190eXBlKikgZmlyc3QsIG4sIChjb25zdCBhbGlhc190eXBlJikgdmFsdWUpKTsgfQotRklMTF9OX0FMSUFTX0ZVTkModm9pZCwgdWludDhfdCwgY2hhcikKLUZJTExfTl9BTElBU19GVU5DKHZvaWQsIHVpbnQ4X3QsIHVpbnQ4X3QpCi0jaWYgV0FOVF9VTlJPTExFRF9DT1BZCi0jaWYgSEFWRV9USFJFRV9DSEFSX1RZUEVTCi1GSUxMX05fQUxJQVNfRlVOQyhjaGFyLCB1aW50OF90LCBjaGFyKQotRklMTF9OX0FMSUFTX0ZVTkMoY2hhciwgdWludDhfdCwgdWludDhfdCkKLSNlbmRpZgotRklMTF9OX0FMSUFTX0ZVTkMoaW50OF90LCB1aW50OF90LCBpbnQ4X3QpCi1GSUxMX05fQUxJQVNfRlVOQyhpbnQxNl90LCB1aW50MTZfdCwgaW50MTZfdCkKLSNpZiBDUFVfSEFTX01NWCB8fCAoU0laRV9PRl9MT05HID4gNCkKLUZJTExfTl9BTElBU19GVU5DKGludDMyX3QsIHVpbnQzMl90LCBpbnQzMl90KQotI2VuZGlmCi0jZW5kaWYKLSN1bmRlZiBGSUxMX05fQUxJQVNfRlVOQwotCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91YXNzZXJ0LmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91YXNzZXJ0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5ZmRlNDYuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdWFzc2VydC5oCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotLy8gdWFzc2VydC5oCi0KLSNpZm5kZWYgVUFTU0VSVF9ICi0jZGVmaW5lIFVBU1NFUlRfSAotCi0jaWYgUExBVEZPUk1fQU5EUk9JRAotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0KLSN1bmRlZiBhc3NlcnQKLSNkZWZpbmUgYXNzZXJ0KHgpIF91YXNzZXJ0KCh4KSwgI3gsIF9fRklMRV9fLCBfX0xJTkVfXykKLQotc3RhdGljIHZvaWQgX3Vhc3NlcnQoaW50IHgsIGNvbnN0IGNoYXIgKnhzdHIsIGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lKSB7Ci0gIGlmICgheCkgewotICAgIHByaW50ZigiYXNzZXJ0ICVzIGZhaWxlZCBhdCAlczolZFxuIiwgeHN0ciwgZmlsZSwgbGluZSk7Ci0gIH0KLX0KLSNlbHNlCi0jaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0jZW5kaWYKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91Yml0c2V0LmNwcCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3ViaXRzZXQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMWI1YTdhLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3ViaXRzZXQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHVzdGwgbGlicmFyeSwgYW4gU1RMIGltcGxlbWVudGF0aW9uLgotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwNSBieSBNaWtlIFNoYXJvdiA8bXNoYXJvdkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0vLyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgotLy8KLS8vIHViaXRzZXQuY2MKLS8vCi0KLSNpbmNsdWRlICJ1Yml0c2V0LmgiCi0KLW5hbWVzcGFjZSB1c3RsIHsKLQotLy8vIENvcGllcyBiaXRzIGZyb20gXHAgdiBvZiBzaXplIFxwIG4gaW50byBccCBidWYgYXMgTVNCICIxMDExMDAxLi4uIiBMU0IKLS8vLyBJZiBccCBidWYgaXMgdG9vIHNtYWxsLCBNU0IgYml0cyB3aWxsIGJlIHRydW5jYXRlZC4KLXZvaWQgY29udmVydF90b19iaXRzdHJpbmcgKGNvbnN0IGJpdHNldF92YWx1ZV90eXBlKiB2LCBzaXplX3Qgbiwgc3RyaW5nJiBidWYpCi17Ci0gICAgc3RyaW5nOjppdGVyYXRvciBzdHJpID0gYnVmLmVuZCgpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbiAmJiBzdHJpID4gYnVmLmJlZ2luKCk7ICsrIGkpCi0JZm9yIChiaXRzZXRfdmFsdWVfdHlwZSBiID0gMTsgYiAmJiBzdHJpID4gYnVmLmJlZ2luKCk7IGIgPDw9IDEpCi0JICAgICotLXN0cmkgPSAodltpXSAmIGIpID8gJzEnIDogJzAnOwotfQotCi0vLy8gQ29waWVzIGJpdHMgZnJvbSBccCBidWYgYXMgTVNCICIxMDExMDAxLi4uIiBMU0IgaW50byBccCB2IG9mIHNpemUgXHAgbi4KLXZvaWQgY29udmVydF9mcm9tX2JpdHN0cmluZyAoY29uc3Qgc3RyaW5nJiBidWYsIGJpdHNldF92YWx1ZV90eXBlKiB2LCBzaXplX3QgbikKLXsKLSAgICBzdHJpbmc6OmNvbnN0X2l0ZXJhdG9yIHN0cmkgPSBidWYuZW5kKCk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuOyArKyBpKSB7Ci0JZm9yIChiaXRzZXRfdmFsdWVfdHlwZSBiID0gMTsgYjsgYiA8PD0gMSkgewotCSAgICBpZiAoc3RyaSA9PSBidWYuYmVnaW4oKSB8fCAqLS1zdHJpID09ICcwJykKLQkJdltpXSAmPSB+YjsKLQkgICAgZWxzZQotCQl2W2ldIHw9IGI7Ci0JfQotICAgIH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgdXN0bAotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91Yml0c2V0LmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91Yml0c2V0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmNTNhOTUuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdWJpdHNldC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTMxICswLDAgQEAKLS8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB1c3RsIGxpYnJhcnksIGFuIFNUTCBpbXBsZW1lbnRhdGlvbi4KLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgYnkgTWlrZSBTaGFyb3YgPG1zaGFyb3ZAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotLy8gVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KLS8vCi0vLyB1Yml0c2V0LmgKLS8vCi0jaWZuZGVmIFVCSVRTRVRfSF83QjY0NTBFQzE0MDBDQkE0NURDRTAxMjc3MzlGODJFRQotI2RlZmluZSBVQklUU0VUX0hfN0I2NDUwRUMxNDAwQ0JBNDVEQ0UwMTI3NzM5RjgyRUUKLQotI2luY2x1ZGUgInVhc3NlcnQuaCIKLSNpbmNsdWRlICJ1c3RyaW5nLmgiCi0jaW5jbHVkZSAidWZ1bmN0aW9uLmgiCi0KLW5hbWVzcGFjZSB1c3RsIHsKLQotdHlwZWRlZiB1aW50MzJfdAliaXRzZXRfdmFsdWVfdHlwZTsKLQotdm9pZCBjb252ZXJ0X3RvX2JpdHN0cmluZyAoY29uc3QgYml0c2V0X3ZhbHVlX3R5cGUqIHYsIHNpemVfdCBuLCBzdHJpbmcmIGJ1Zik7Ci12b2lkIGNvbnZlcnRfZnJvbV9iaXRzdHJpbmcgKGNvbnN0IHN0cmluZyYgYnVmLCBiaXRzZXRfdmFsdWVfdHlwZSogdiwgc2l6ZV90IG4pOwotCi0vLy8gXGNsYXNzIGJpdHNldCB1Yml0c2V0LmggdXN0bC5oCi0vLy8gXGluZ3JvdXAgU2VxdWVuY2VzCi0vLy8KLS8vLyBcYnJpZWYgYml0c2V0IGlzIGEgZml4ZWQtc2l6ZSBibG9jayBvZiBtZW1vcnkgd2l0aCBhZGRyZXNzYWJsZSBiaXRzLgotLy8vCi0vLy8gTm9ybWFsbHkgdXNlZCBmb3Igc3RhdGUgZmxhZ3M7IGFsbG93cyBzZXR0aW5nIGFuZCB1bnNldHRpbmcgb2YgaW5kaXZpZHVhbAotLy8vIGJpdHMgYXMgd2VsbCBhcyBiaXR3aXNlIG9wZXJhdGlvbnMgb24gdGhlIGVudGlyZSBzZXQuIFRoZSBpbnRlcmZhY2UgaXMKLS8vLyBtb3N0IGxpa2UgdGhhdCBvZiB1bnNpZ25lZCBpbnRlZ2VycywgYW5kIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgYXMgc3VjaC4KLS8vLyBJZiB5b3Ugd2VyZSB1c2luZyBiZWdpbigpIGFuZCBlbmQoKSBmdW5jdGlvbnMgaW4gU1RMJ3MgYml0c2V0LCB5b3Ugd291bGQKLS8vLyBub3QgYmUgYWJsZSB0byBkbyB0aGUgc2FtZSB0aGluZyBoZXJlLCBiZWNhdXNlIHRob3NlIGZ1bmN0aW9ucyByZXR1cm4KLS8vLyBob3N0IHR5cGUgaXRlcmF0b3JzLCBub3QgYml0cy4KLS8vLwotdGVtcGxhdGUgPHNpemVfdCBTaXplPgotY2xhc3MgYml0c2V0IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIGJpdHNldF92YWx1ZV90eXBlCXZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiB2YWx1ZV90eXBlKgkJcG9pbnRlcjsKLSAgICB0eXBlZGVmIGNvbnN0IHZhbHVlX3R5cGUqCWNvbnN0X3BvaW50ZXI7Ci0gICAgdHlwZWRlZiBwb2ludGVyCQlpdGVyYXRvcjsKLSAgICB0eXBlZGVmIGNvbnN0X3BvaW50ZXIJY29uc3RfaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiBzaXplX3QJCWRpZmZlcmVuY2VfdHlwZTsKLSAgICB0eXBlZGVmIHNpemVfdAkJc2l6ZV90eXBlOwotcHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IHNfV29yZEJpdHMJPSBCaXRzSW5UeXBlICh2YWx1ZV90eXBlKTsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90CXNfbldvcmRzCT0gU2l6ZSAvIHNfV29yZEJpdHMgKyAoKFNpemUgJSBzX1dvcmRCaXRzKSAhPSAwKTsKLSAgICBzdGF0aWMgY29uc3Qgc2l6ZV90CXNfbkJpdHMJCT0gc19uV29yZHMgKiBzX1dvcmRCaXRzOwotcHJpdmF0ZToKLSAgICBpbmxpbmUgdmFsdWVfdHlwZSYJCUJpdFJlZiAodW9mZl90IG4pCXsgYXNzZXJ0IChuIDwgU2l6ZSk7IHJldHVybiAobV9CaXRzIFtuIC8gc19Xb3JkQml0c10pOyB9Ci0gICAgaW5saW5lIGNvbnN0IHZhbHVlX3R5cGUJQml0UmVmICh1b2ZmX3QgbikgY29uc3QJeyBhc3NlcnQgKG4gPCBTaXplKTsgcmV0dXJuIChtX0JpdHMgW24gLyBzX1dvcmRCaXRzXSk7IH0KLSAgICBpbmxpbmUgY29uc3QgdmFsdWVfdHlwZQlNYXNrICh1b2ZmX3QgbikgY29uc3QJeyBhc3NlcnQgKG4gPCBTaXplKTsgcmV0dXJuICgxIDw8IChuICUgc19Xb3JkQml0cykpOyB9Ci1wdWJsaWM6Ci0gICAgaW5saW5lCQliaXRzZXQgKHZhbHVlX3R5cGUgdiA9IDApCXsgZmlsbF9uIChtX0JpdHMsIHNfbldvcmRzLCAwKTsgbV9CaXRzWzBdID0gdjsgfQotICAgIGlubGluZQkJYml0c2V0IChjb25zdCBzdHJpbmcmIGJ1ZikJeyBjb252ZXJ0X2Zyb21fYml0c3RyaW5nIChidWYsIG1fQml0cywgc19uV29yZHMpOyB9Ci0gICAgaW5saW5lIHZvaWQJCWZsaXAgKHVvZmZfdCBuKQkJCXsgQml0UmVmKG4pIF49IE1hc2sobik7IH0KLSAgICBpbmxpbmUgdm9pZAkJcmVzZXQgKHZvaWQpCQkJeyBmaWxsX24gKG1fQml0cywgc19uV29yZHMsIDApOyB9Ci0gICAgaW5saW5lIHZvaWQJCWNsZWFyICh2b2lkKQkJCXsgZmlsbF9uIChtX0JpdHMsIHNfbldvcmRzLCAwKTsgfQotICAgIGlubGluZSB2b2lkCQlzZXQgKHZvaWQpCQkJeyBmaWxsX24gKG1fQml0cywgc19uV29yZHMsIC0xKTsgfQotICAgIGlubGluZSBiaXRzZXQJb3BlcmF0b3J+ICh2b2lkKSBjb25zdAkJeyBiaXRzZXQgcnYgKCp0aGlzKTsgcnYuZmxpcCgpOyByZXR1cm4gKHJ2KTsgfQotICAgIGlubGluZSBzaXplX3R5cGUJc2l6ZSAodm9pZCkgY29uc3QJCXsgcmV0dXJuIChTaXplKTsgfQotICAgIGlubGluZSBzaXplX3R5cGUJY2FwYWNpdHkgKHZvaWQpIGNvbnN0CQl7IHJldHVybiAoc19uQml0cyk7IH0KLSAgICBpbmxpbmUgY29uc3QgYm9vbAl0ZXN0ICh1b2ZmX3QgbikgY29uc3QJCXsgcmV0dXJuIChCaXRSZWYobikgJiBNYXNrKG4pKTsgfQotICAgIGlubGluZSBjb25zdCBib29sCW9wZXJhdG9yW10gKHVvZmZfdCBuKSBjb25zdAl7IHJldHVybiAodGVzdChuKSk7IH0KLSAgaW5saW5lIGNvbnN0X2l0ZXJhdG9yCWJlZ2luICh2b2lkKSBjb25zdAkJeyByZXR1cm4gKG1fQml0cyk7IH0KLSAgICBpbmxpbmUgaXRlcmF0b3IJYmVnaW4gKHZvaWQpCQkJeyByZXR1cm4gKG1fQml0cyk7IH0KLSAgaW5saW5lIGNvbnN0X2l0ZXJhdG9yCWVuZCAodm9pZCkgY29uc3QJCXsgcmV0dXJuIChtX0JpdHMgKyBzX25Xb3Jkcyk7IH0KLSAgICBpbmxpbmUgaXRlcmF0b3IJZW5kICh2b2lkKQkJCXsgcmV0dXJuIChtX0JpdHMgKyBzX25Xb3Jkcyk7IH0KLSAJCQkvLy8gUmV0dXJucyB0aGUgdmFsdWVfdHlwZSB3aXRoIHRoZSBlcXVpdmFsZW50IGJpdHMuIElmIHNpemUoKSA+IDEsIHlvdSdsbCBnZXQgb25seSB0aGUgZmlyc3QgQml0c0luVHlwZSh2YWx1ZV90eXBlKSBiaXRzLgotICAgIGlubGluZSBjb25zdCB2YWx1ZV90eXBlCXRvX3ZhbHVlICh2b2lkKSBjb25zdAkJeyByZXR1cm4gKG1fQml0c1swXSk7IH0KLSAgICAJCQkvLy8gRmxpcHMgYWxsIHRoZSBiaXRzIGluIHRoZSBzZXQuCi0gICAgaW5saW5lIHZvaWQJCWZsaXAgKHZvaWQpIHsgdHJhbnNmb3JtIChiZWdpbigpLCBlbmQoKSwgYmVnaW4oKSwgYml0d2lzZV9ub3Q8dmFsdWVfdHlwZT4oKSk7IH0KLQkJCS8vLyBTZXRzIG9yIGNsZWFycyBiaXQgXHAgbi4KLSAgICBpbmxpbmUgdm9pZAkJc2V0ICh1b2ZmX3QgbiwgYm9vbCB2YWwgPSB0cnVlKQotCQkJewotCQkJICAgIHZhbHVlX3R5cGUmIGJyIChCaXRSZWYgKG4pKTsKLQkJCSAgICBjb25zdCB2YWx1ZV90eXBlIG1hc2sgKE1hc2sgKG4pKTsKLQkJCSAgICBjb25zdCB2YWx1ZV90eXBlIGJPbiAoYnIgfCBtYXNrKSwgYk9mZiAoYnIgJiB+bWFzayk7Ci0JCQkgICAgYnIgPSB2YWwgPyBiT24gOiBiT2ZmOwotCQkJfQotCQkJLy8gU2V0cyB0aGUgdmFsdWUgb2YgdGhlIGJpdHJhbmdlIFxwIGZpcnN0IHRocm91Z2ggXHAgbGFzdCB0byB0aGUgZXF1aXZhbGVudCBudW1iZXIgb2YgYml0cyBmcm9tIFxwIHYuCi0gICAgaW5saW5lIHZvaWQJCXNldCAodW9mZl90IGZpcnN0LCB1b2ZmX3QgRGVidWdBcmcobGFzdCksIHZhbHVlX3R5cGUgdikKLQkJCXsKLSNpZiAhUExBVEZPUk1fQU5EUk9JRAotCQkJICAgIGFzc2VydCAoc2l6ZV90IChkaXN0YW5jZSAoZmlyc3QsIGxhc3QpKSA8PSBzX1dvcmRCaXRzICYmICJCaXQgcmFuZ2VzIG11c3QgYmUgMzIgYml0cyBvciBzbWFsbGVyIik7Ci0JCQkgICAgYXNzZXJ0IChmaXJzdCAvIHNfV29yZEJpdHMgPT0gbGFzdCAvIHNfV29yZEJpdHMgJiYgIkJpdCByYW5nZXMgY2FuIG5vdCBjcm9zcyBkd29yZCAoNCBieXRlKSBib3VuZGFyeSIpOwotCQkJICAgIGFzc2VydCAoKHYgJiBCaXRNYXNrKHZhbHVlX3R5cGUsZGlzdGFuY2UoZmlyc3QsbGFzdCkpKSA9PSB2ICYmICJUaGUgdmFsdWUgaXMgdG9vIGxhcmdlIHRvIGZpdCBpbiB0aGUgZ2l2ZW4gYml0IHJhbmdlIik7Ci0jZW5kaWYKLQkJCSAgICBCaXRSZWYoZmlyc3QpIHw9IHYgPDwgKGZpcnN0ICUgc19Xb3JkQml0cyk7Ci0JCQl9Ci0gICAgCQkJLy8vIENsZWFycyB0aGUgYml0IFxwIG4uCi0gICAgaW5saW5lIHZvaWQJCXJlc2V0ICh1b2ZmX3QgbikJCXsgc2V0IChuLCBmYWxzZSk7IH0KLQkJCS8vLyBSZXR1cm5zIGEgc3RyaW5nIHdpdGggYml0cyBNU0IgIjAwMTEwMTAwMS4uLiIgTFNCLgotICAgIGlubGluZSBzdHJpbmcJdG9fc3RyaW5nICh2b2lkKSBjb25zdAotCQkJewotCQkJICAgIHN0cmluZyBydiAoU2l6ZSwgJzAnKTsKLQkJCSAgICBjb252ZXJ0X3RvX2JpdHN0cmluZyAobV9CaXRzLCBzX25Xb3JkcywgcnYpOwotCQkJICAgIHJldHVybiAocnYpOwotCQkJfQotICAgIGlubGluZSB2YWx1ZV90eXBlCWF0ICh1b2ZmX3QgbikgY29uc3QJCXsgcmV0dXJuICh0ZXN0KG4pKTsgfQotCQkJLy8vIFJldHVybnMgdGhlIHZhbHVlIGluIGJpdHMgXHAgZmlyc3QgdGhyb3VnaCBccCBsYXN0LgotICAgIGlubGluZSB2YWx1ZV90eXBlCWF0ICh1b2ZmX3QgZmlyc3QsIHVvZmZfdCBsYXN0KSBjb25zdAotCQkJewotCQkJICAgIGFzc2VydCAoc2l6ZV90IChkaXN0YW5jZSAoZmlyc3QsIGxhc3QpKSA8PSBzX1dvcmRCaXRzICYmICJCaXQgcmFuZ2VzIG11c3QgYmUgMzIgYml0cyBvciBzbWFsbGVyIik7Ci0JCQkgICAgYXNzZXJ0IChmaXJzdCAvIHNfV29yZEJpdHMgPT0gbGFzdCAvIHNfV29yZEJpdHMgJiYgIkJpdCByYW5nZXMgY2FuIG5vdCBjcm9zcyBkd29yZCAoNCBieXRlKSBib3VuZGFyeSIpOwotCQkJICAgIHJldHVybiAoKEJpdFJlZihmaXJzdCkgPj4gKGZpcnN0ICUgc19Xb3JkQml0cykpICYgQml0TWFzayh2YWx1ZV90eXBlLGRpc3RhbmNlKGZpcnN0LCBsYXN0KSkpOwotCQkJfQotICAgIGlubGluZSBib29sCQlhbnkgKHZvaWQpIGNvbnN0CXsgdmFsdWVfdHlwZSBzdW0gPSAwOyBmb3JlYWNoIChjb25zdF9pdGVyYXRvciwgaSwgKnRoaXMpIHN1bSB8PSAqaTsgcmV0dXJuIChzdW0pOyB9Ci0gICAgaW5saW5lIGJvb2wJCW5vbmUgKHZvaWQpIGNvbnN0CXsgcmV0dXJuICghYW55KCkpOyB9Ci0gICAgaW5saW5lIHNpemVfdAljb3VudCAodm9pZCkgY29uc3QJeyBzaXplX3Qgc3VtID0gMDsgZm9yZWFjaCAoY29uc3RfaXRlcmF0b3IsIGksICp0aGlzKSBzdW0gKz0gcG9wY291bnQoKmkpOyByZXR1cm4gKHN1bSk7IH0KLSAgICBpbmxpbmUgYm9vbAkJb3BlcmF0b3I9PSAoY29uc3QgYml0c2V0PFNpemU+JiB2KSBjb25zdAotCQkJICAgIHsgcmV0dXJuIChzX25Xb3JkcyA9PSAxID8gKG1fQml0c1swXSA9PSB2Lm1fQml0c1swXSkgOiBlcXVhbCAoYmVnaW4oKSwgZW5kKCksIHYuYmVnaW4oKSkpOyB9Ci0gICAgaW5saW5lIGNvbnN0IGJpdHNldAlvcGVyYXRvciYgKGNvbnN0IGJpdHNldDxTaXplPiYgdikKLQkJCSAgICB7IGJpdHNldDxTaXplPiByZXN1bHQ7IHRyYW5zZm9ybSAoYmVnaW4oKSwgZW5kKCksIHYuYmVnaW4oKSwgcmVzdWx0LmJlZ2luKCksIGJpdHdpc2VfYW5kPHZhbHVlX3R5cGU+KCkpOyByZXR1cm4gKHJlc3VsdCk7IH0KLSAgICBpbmxpbmUgY29uc3QgYml0c2V0CW9wZXJhdG9yfCAoY29uc3QgYml0c2V0PFNpemU+JiB2KQotCQkJICAgIHsgYml0c2V0PFNpemU+IHJlc3VsdDsgdHJhbnNmb3JtIChiZWdpbigpLCBlbmQoKSwgdi5iZWdpbigpLCByZXN1bHQuYmVnaW4oKSwgYml0d2lzZV9vcjx2YWx1ZV90eXBlPigpKTsgcmV0dXJuIChyZXN1bHQpOyB9Ci0gICAgaW5saW5lIGNvbnN0IGJpdHNldAlvcGVyYXRvcl4gKGNvbnN0IGJpdHNldDxTaXplPiYgdikKLQkJCSAgICB7IGJpdHNldDxTaXplPiByZXN1bHQ7IHRyYW5zZm9ybSAoYmVnaW4oKSwgZW5kKCksIHYuYmVnaW4oKSwgcmVzdWx0LmJlZ2luKCksIGJpdHdpc2VfeG9yPHZhbHVlX3R5cGU+KCkpOyByZXR1cm4gKHJlc3VsdCk7IH0KLSAgIGlubGluZSBjb25zdCBiaXRzZXQmCW9wZXJhdG9yJj0gKGNvbnN0IGJpdHNldDxTaXplPiYgdikKLQkJCSAgICB7IHRyYW5zZm9ybSAoYmVnaW4oKSwgZW5kKCksIHYuYmVnaW4oKSwgYmVnaW4oKSwgYml0d2lzZV9hbmQ8dmFsdWVfdHlwZT4oKSk7IHJldHVybiAoKnRoaXMpOyB9Ci0gICBpbmxpbmUgY29uc3QgYml0c2V0JglvcGVyYXRvcnw9IChjb25zdCBiaXRzZXQ8U2l6ZT4mIHYpCi0JCQkgICAgeyB0cmFuc2Zvcm0gKGJlZ2luKCksIGVuZCgpLCB2LmJlZ2luKCksIGJlZ2luKCksIGJpdHdpc2Vfb3I8dmFsdWVfdHlwZT4oKSk7IHJldHVybiAoKnRoaXMpOyB9Ci0gICBpbmxpbmUgY29uc3QgYml0c2V0JglvcGVyYXRvcl49IChjb25zdCBiaXRzZXQ8U2l6ZT4mIHYpCi0JCQkgICAgeyB0cmFuc2Zvcm0gKGJlZ2luKCksIGVuZCgpLCB2LmJlZ2luKCksIGJlZ2luKCksIGJpdHdpc2VfeG9yPHZhbHVlX3R5cGU+KCkpOyByZXR1cm4gKCp0aGlzKTsgfQotcHJpdmF0ZToKLSAgICB2YWx1ZV90eXBlCQltX0JpdHMgW3NfbldvcmRzXTsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIHVzdGwKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VjdHJhbGdvLmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91Y3RyYWxnby5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1N2Y2MzdkLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VjdHJhbGdvLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0ODIgKzAsMCBAQAotLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHVzdGwgbGlicmFyeSwgYW4gU1RMIGltcGxlbWVudGF0aW9uLgotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwNSBieSBNaWtlIFNoYXJvdiA8bXNoYXJvdkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0vLyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgotLy8KLS8vIFxmaWxlIHVjdHJhbGdvLmgKLS8vCi0vLyBcYnJpZWYgSW1wbGVtZW50YXRpb24gb2YgU1RMIGFsZ29yaXRobXMgd2l0aCBjb250YWluZXIgc2hvcnRjdXRzLgotLy8KLS8vIFRoZSBmdW5jdGlvbiBwcm90b3R5cGVzIGFyZSBjb3BpZWQKLS8vIGV4YWN0bHkgZnJvbSB0aGUgU0dJIHZlcnNpb24gb2YgU1RMIGRvY3VtZW50YXRpb24gYWxvbmcgd2l0aCBjb21tZW50cyBhYm91dAotLy8gdGhlaXIgdXNlLiBUaGUgY29kZSBpcyBOT1QgdGhlIHNhbWUsIHRob3VnaCB0aGUgZnVuY3Rpb25hbGl0eSB1c3VhbGx5IGlzLgotLy8KLQotI2lmbmRlZiBVQ1RSQUxHT19IXzBEMUFFREZBNzRCMDk3OTE0ODlGRTI1QjFFQzY0NEIwCi0jZGVmaW5lIFVDVFJBTEdPX0hfMEQxQUVERkE3NEIwOTc5MTQ4OUZFMjVCMUVDNjQ0QjAKLQotI2luY2x1ZGUgInVhc3NlcnQuaCIKLQotbmFtZXNwYWNlIHVzdGwgewotCi0vLy8gQ29weSBjb3BpZXMgZWxlbWVudHMgZnJvbSB0aGUgcmFuZ2UgW2ZpcnN0LCBsYXN0KSB0byB0aGUgcmFuZ2UKLS8vLyBbcmVzdWx0LCByZXN1bHQgKyAobGFzdCAtIGZpcnN0KSkuIFRoYXQgaXMsIGl0IHBlcmZvcm1zIHRoZSBhc3NpZ25tZW50cwotLy8vICpyZXN1bHQgPSAqZmlyc3QsICoocmVzdWx0ICsgMSkgPSAqKGZpcnN0ICsgMSksIGFuZCBzbyBvbi4gWzFdIEdlbmVyYWxseSwKLS8vLyBmb3IgZXZlcnkgaW50ZWdlciBuIGZyb20gMCB0byBsYXN0IC0gZmlyc3QsIGNvcHkgcGVyZm9ybXMgdGhlIGFzc2lnbm1lbnQKLS8vLyAqKHJlc3VsdCArIG4pID0gKihmaXJzdCArIG4pLiBBc3NpZ25tZW50cyBhcmUgcGVyZm9ybWVkIGluIGZvcndhcmQgb3JkZXIsCi0vLy8gaS5lLiBpbiBvcmRlciBvZiBpbmNyZWFzaW5nIG4uIAotLy8vIFxpbmdyb3VwIE11dGF0aW5nQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyLCB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvcj4KLWlubGluZSBPdXRwdXRJdGVyYXRvciBjb3B5IChjb25zdCBDb250YWluZXImIGN0ciwgT3V0cHV0SXRlcmF0b3IgcmVzdWx0KQotewotICAgIHJldHVybiAoY29weSAoY3RyLmJlZ2luKCksIGN0ci5lbmQoKSwgcmVzdWx0KSk7Ci19Ci0KLS8vLyBDb3B5X2lmIGNvcGllcyBlbGVtZW50cyBmcm9tIHRoZSByYW5nZSBbZmlyc3QsIGxhc3QpIHRvIHRoZSByYW5nZQotLy8vIFtyZXN1bHQsIHJlc3VsdCArIChsYXN0IC0gZmlyc3QpKSBpZiBwcmVkKCppKSByZXR1cm5zIHRydWUuCi0vLy8gXGluZ3JvdXAgTXV0YXRpbmdBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXIsIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBQcmVkaWNhdGU+Ci1pbmxpbmUgT3V0cHV0SXRlcmF0b3IgY29weV9pZiAoQ29udGFpbmVyJiBjdHIsIE91dHB1dEl0ZXJhdG9yIHJlc3VsdCwgUHJlZGljYXRlIHByZWQpCi17Ci0gICAgcmV0dXJuIChjb3B5X2lmIChjdHIuYmVnaW4oKSwgY3RyLmVuZCgpLCByZXN1bHQsIHByZWQpKTsKLX0KLQotLy8vIEZvcl9lYWNoIGFwcGxpZXMgdGhlIGZ1bmN0aW9uIG9iamVjdCBmIHRvIGVhY2ggZWxlbWVudCBpbiB0aGUgcmFuZ2UKLS8vLyBbZmlyc3QsIGxhc3QpOyBmJ3MgcmV0dXJuIHZhbHVlLCBpZiBhbnksIGlzIGlnbm9yZWQuIEFwcGxpY2F0aW9ucyBhcmUKLS8vLyBwZXJmb3JtZWQgaW4gZm9yd2FyZCBvcmRlciwgaS5lLiBmcm9tIGZpcnN0IHRvIGxhc3QuIEZvcl9lYWNoIHJldHVybnMKLS8vLyB0aGUgZnVuY3Rpb24gb2JqZWN0IGFmdGVyIGl0IGhhcyBiZWVuIGFwcGxpZWQgdG8gZWFjaCBlbGVtZW50LgotLy8vIFxpbmdyb3VwIE11dGF0aW5nQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyLCB0eXBlbmFtZSBVbmFyeUZ1bmN0aW9uPgotaW5saW5lIFVuYXJ5RnVuY3Rpb24gZm9yX2VhY2ggKENvbnRhaW5lciYgY3RyLCBVbmFyeUZ1bmN0aW9uIGYpCi17Ci0gICAgcmV0dXJuIChmb3JfZWFjaCAoY3RyLmJlZ2luKCksIGN0ci5lbmQoKSwgZikpOwotfQotCi0vLy8gRm9yX2VhY2ggYXBwbGllcyB0aGUgZnVuY3Rpb24gb2JqZWN0IGYgdG8gZWFjaCBlbGVtZW50IGluIHRoZSByYW5nZQotLy8vIFtmaXJzdCwgbGFzdCk7IGYncyByZXR1cm4gdmFsdWUsIGlmIGFueSwgaXMgaWdub3JlZC4gQXBwbGljYXRpb25zIGFyZQotLy8vIHBlcmZvcm1lZCBpbiBmb3J3YXJkIG9yZGVyLCBpLmUuIGZyb20gZmlyc3QgdG8gbGFzdC4gRm9yX2VhY2ggcmV0dXJucwotLy8vIHRoZSBmdW5jdGlvbiBvYmplY3QgYWZ0ZXIgaXQgaGFzIGJlZW4gYXBwbGllZCB0byBlYWNoIGVsZW1lbnQuCi0vLy8gXGluZ3JvdXAgTXV0YXRpbmdBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXIsIHR5cGVuYW1lIFVuYXJ5RnVuY3Rpb24+Ci1pbmxpbmUgVW5hcnlGdW5jdGlvbiBmb3JfZWFjaCAoY29uc3QgQ29udGFpbmVyJiBjdHIsIFVuYXJ5RnVuY3Rpb24gZikKLXsKLSAgICByZXR1cm4gKGZvcl9lYWNoIChjdHIuYmVnaW4oKSwgY3RyLmVuZCgpLCBmKSk7Ci19Ci0KLS8vLyBSZXR1cm5zIHRoZSBmaXJzdCBpdGVyYXRvciBpIGluIHRoZSByYW5nZSBbZmlyc3QsIGxhc3QpIHN1Y2ggdGhhdAotLy8vICppID09IHZhbHVlLiBSZXR1cm5zIGxhc3QgaWYgbm8gc3VjaCBpdGVyYXRvciBleGlzdHMuIAotLy8vIFxpbmdyb3VwIFNlYXJjaGluZ0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lciwgdHlwZW5hbWUgRXF1YWxpdHlDb21wYXJhYmxlPgotaW5saW5lIHR5cGVuYW1lIENvbnRhaW5lcjo6Y29uc3RfaXRlcmF0b3IgZmluZCAoY29uc3QgQ29udGFpbmVyJiBjdHIsIGNvbnN0IEVxdWFsaXR5Q29tcGFyYWJsZSYgdmFsdWUpCi17Ci0gICAgcmV0dXJuIChmaW5kIChjdHIuYmVnaW4oKSwgY3RyLmVuZCgpLCB2YWx1ZSkpOwotfQotdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lciwgdHlwZW5hbWUgRXF1YWxpdHlDb21wYXJhYmxlPgotaW5saW5lIHR5cGVuYW1lIENvbnRhaW5lcjo6aXRlcmF0b3IgZmluZCAoQ29udGFpbmVyJiBjdHIsIGNvbnN0IEVxdWFsaXR5Q29tcGFyYWJsZSYgdmFsdWUpCi17Ci0gICAgcmV0dXJuIChmaW5kIChjdHIuYmVnaW4oKSwgY3RyLmVuZCgpLCB2YWx1ZSkpOwotfQotCi0vLy8gUmV0dXJucyB0aGUgZmlyc3QgaXRlcmF0b3IgaSBpbiB0aGUgcmFuZ2UgW2ZpcnN0LCBsYXN0KSBzdWNoIHRoYXQKLS8vLyBwcmVkKCppKSBpcyB0cnVlLiBSZXR1cm5zIGxhc3QgaWYgbm8gc3VjaCBpdGVyYXRvciBleGlzdHMuCi0vLy8gXGluZ3JvdXAgU2VhcmNoaW5nQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyLCB0eXBlbmFtZSBQcmVkaWNhdGU+Ci1pbmxpbmUgdHlwZW5hbWUgQ29udGFpbmVyOjpjb25zdF9pdGVyYXRvciBmaW5kX2lmIChjb25zdCBDb250YWluZXImIGN0ciwgUHJlZGljYXRlIHByZWQpCi17Ci0gICAgcmV0dXJuIChmaW5kX2lmIChjdHIuYmVnaW4oKSwgY3RyLmVuZCgpLCBwcmVkKSk7Ci19Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyLCB0eXBlbmFtZSBQcmVkaWNhdGU+Ci1pbmxpbmUgdHlwZW5hbWUgQ29udGFpbmVyOjppdGVyYXRvciBmaW5kX2lmIChDb250YWluZXImIGN0ciwgUHJlZGljYXRlIHByZWQpCi17Ci0gICAgcmV0dXJuIChmaW5kX2lmIChjdHIuYmVnaW4oKSwgY3RyLmVuZCgpLCBwcmVkKSk7Ci19Ci0KLS8vLyBDb3VudCBmaW5kcyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIFtmaXJzdCwgbGFzdCkgdGhhdCBhcmUgZXF1YWwKLS8vLyB0byB2YWx1ZS4gTW9yZSBwcmVjaXNlbHksIHRoZSBmaXJzdCB2ZXJzaW9uIG9mIGNvdW50IHJldHVybnMgdGhlCi0vLy8gbnVtYmVyIG9mIGl0ZXJhdG9ycyBpIGluIFtmaXJzdCwgbGFzdCkgc3VjaCB0aGF0ICppID09IHZhbHVlLgotLy8vIFxpbmdyb3VwIENvbmRpdGlvbkFsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lciwgdHlwZW5hbWUgRXF1YWxpdHlDb21wYXJhYmxlPgotaW5saW5lIHNpemVfdCBjb3VudCAoY29uc3QgQ29udGFpbmVyJiBjdHIsIGNvbnN0IEVxdWFsaXR5Q29tcGFyYWJsZSYgdmFsdWUpCi17Ci0gICAgcmV0dXJuIChjb3VudCAoY3RyLmJlZ2luKCksIGN0ci5lbmQoKSwgdmFsdWUpKTsKLX0KLQotLy8vIENvdW50X2lmIGZpbmRzIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gW2ZpcnN0LCBsYXN0KSB0aGF0IHNhdGlzZnkgdGhlCi0vLy8gcHJlZGljYXRlIHByZWQuIE1vcmUgcHJlY2lzZWx5LCB0aGUgZmlyc3QgdmVyc2lvbiBvZiBjb3VudF9pZiByZXR1cm5zIHRoZQotLy8vIG51bWJlciBvZiBpdGVyYXRvcnMgaSBpbiBbZmlyc3QsIGxhc3QpIHN1Y2ggdGhhdCBwcmVkKCppKSBpcyB0cnVlLgotLy8vIFxpbmdyb3VwIENvbmRpdGlvbkFsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lciwgdHlwZW5hbWUgUHJlZGljYXRlPgotaW5saW5lIHNpemVfdCBjb3VudF9pZiAoY29uc3QgQ29udGFpbmVyJiBjdHIsIFByZWRpY2F0ZSBwcmVkKQotewotICAgIHJldHVybiAoY291bnRfaWYgKGN0ci5iZWdpbigpLCBjdHIuZW5kKCksIHByZWQpKTsKLX0KLQotLy8vIFRoZSBmaXJzdCB2ZXJzaW9uIG9mIHRyYW5zZm9ybSBwZXJmb3JtcyB0aGUgb3BlcmF0aW9uIG9wKCppKSBmb3IgZWFjaAotLy8vIGl0ZXJhdG9yIGkgaW4gdGhlIHJhbmdlIFtmaXJzdCwgbGFzdCksIGFuZCBhc3NpZ25zIHRoZSByZXN1bHQgb2YgdGhhdAotLy8vIG9wZXJhdGlvbiB0byAqbywgd2hlcmUgbyBpcyB0aGUgY29ycmVzcG9uZGluZyBvdXRwdXQgaXRlcmF0b3IuIFRoYXQgaXMsCi0vLy8gZm9yIGVhY2ggbiBzdWNoIHRoYXQgMCA8PSBuIDwgbGFzdCAtIGZpcnN0LCBpdCBwZXJmb3JtcyB0aGUgYXNzaWdubWVudAotLy8vICoocmVzdWx0ICsgbikgPSBvcCgqKGZpcnN0ICsgbikpLgotLy8vIFRoZSByZXR1cm4gdmFsdWUgaXMgcmVzdWx0ICsgKGxhc3QgLSBmaXJzdCkuCi0vLy8gXGluZ3JvdXAgTXV0YXRpbmdBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXIsIHR5cGVuYW1lIFVuYXJ5RnVuY3Rpb24+Ci1pbmxpbmUgdm9pZCB0cmFuc2Zvcm0gKENvbnRhaW5lciYgY3RyLCBVbmFyeUZ1bmN0aW9uIG9wKQotewotICAgIHRyYW5zZm9ybSAoY3RyLmJlZ2luKCksIGN0ci5lbmQoKSwgY3RyLmJlZ2luKCksIG9wKTsKLX0KLQotLy8vIFRoZSBmaXJzdCB2ZXJzaW9uIG9mIHRyYW5zZm9ybSBwZXJmb3JtcyB0aGUgb3BlcmF0aW9uIG9wKCppKSBmb3IgZWFjaAotLy8vIGl0ZXJhdG9yIGkgaW4gdGhlIHJhbmdlIFtmaXJzdCwgbGFzdCksIGFuZCBhc3NpZ25zIHRoZSByZXN1bHQgb2YgdGhhdAotLy8vIG9wZXJhdGlvbiB0byAqbywgd2hlcmUgbyBpcyB0aGUgY29ycmVzcG9uZGluZyBvdXRwdXQgaXRlcmF0b3IuIFRoYXQgaXMsCi0vLy8gZm9yIGVhY2ggbiBzdWNoIHRoYXQgMCA8PSBuIDwgbGFzdCAtIGZpcnN0LCBpdCBwZXJmb3JtcyB0aGUgYXNzaWdubWVudAotLy8vICoocmVzdWx0ICsgbikgPSBvcCgqKGZpcnN0ICsgbikpLgotLy8vIFRoZSByZXR1cm4gdmFsdWUgaXMgcmVzdWx0ICsgKGxhc3QgLSBmaXJzdCkuCi0vLy8gXGluZ3JvdXAgTXV0YXRpbmdBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXIsIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBVbmFyeUZ1bmN0aW9uPgotaW5saW5lIE91dHB1dEl0ZXJhdG9yIHRyYW5zZm9ybSAoQ29udGFpbmVyJiBjdHIsIE91dHB1dEl0ZXJhdG9yIHJlc3VsdCwgVW5hcnlGdW5jdGlvbiBvcCkKLXsKLSAgICByZXR1cm4gKHRyYW5zZm9ybSAoY3RyLmJlZ2luKCksIGN0ci5lbmQoKSwgcmVzdWx0LCBvcCkpOwotfQotCi0vLy8gVGhlIHNlY29uZCB2ZXJzaW9uIG9mIHRyYW5zZm9ybSBpcyB2ZXJ5IHNpbWlsYXIsIGV4Y2VwdCB0aGF0IGl0IHVzZXMgYQotLy8vIEJpbmFyeSBGdW5jdGlvbiBpbnN0ZWFkIG9mIGEgVW5hcnkgRnVuY3Rpb246IGl0IHBlcmZvcm1zIHRoZSBvcGVyYXRpb24KLS8vLyBvcCgqaTEsICppMikgZm9yIGVhY2ggaXRlcmF0b3IgaTEgaW4gdGhlIHJhbmdlIFtmaXJzdDEsIGxhc3QxKSBhbmQgYXNzaWducwotLy8vIHRoZSByZXN1bHQgdG8gKm8sIHdoZXJlIGkyIGlzIHRoZSBjb3JyZXNwb25kaW5nIGl0ZXJhdG9yIGluIHRoZSBzZWNvbmQKLS8vLyBpbnB1dCByYW5nZSBhbmQgd2hlcmUgbyBpcyB0aGUgY29ycmVzcG9uZGluZyBvdXRwdXQgaXRlcmF0b3IuIFRoYXQgaXMsCi0vLy8gZm9yIGVhY2ggbiBzdWNoIHRoYXQgMCA8PSBuIDwgbGFzdDEgLSBmaXJzdDEsIGl0IHBlcmZvcm1zIHRoZSBhc3NpZ25tZW50Ci0vLy8gKihyZXN1bHQgKyBuKSA9IG9wKCooZmlyc3QxICsgbiksICooZmlyc3QyICsgbikuCi0vLy8gVGhlIHJldHVybiB2YWx1ZSBpcyByZXN1bHQgKyAobGFzdDEgLSBmaXJzdDEpLgotLy8vIFxpbmdyb3VwIE11dGF0aW5nQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyLCB0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvciwgdHlwZW5hbWUgQmluYXJ5RnVuY3Rpb24+Ci1pbmxpbmUgT3V0cHV0SXRlcmF0b3IgdHJhbnNmb3JtIChDb250YWluZXImIGN0ciwgSW5wdXRJdGVyYXRvciBmaXJzdCwgT3V0cHV0SXRlcmF0b3IgcmVzdWx0LCBCaW5hcnlGdW5jdGlvbiBvcCkKLXsKLSAgICByZXR1cm4gKHRyYW5zZm9ybSAoY3RyLmJlZ2luKCksIGN0ci5lbmQoKSwgZmlyc3QsIHJlc3VsdCwgb3ApKTsKLX0KLQotLy8vIFJlcGxhY2UgcmVwbGFjZXMgZXZlcnkgZWxlbWVudCBpbiB0aGUgcmFuZ2UgW2ZpcnN0LCBsYXN0KSBlcXVhbCB0bwotLy8vIG9sZF92YWx1ZSB3aXRoIG5ld192YWx1ZS4gVGhhdCBpczogZm9yIGV2ZXJ5IGl0ZXJhdG9yIGksCi0vLy8gaWYgKmkgPT0gb2xkX3ZhbHVlIHRoZW4gaXQgcGVyZm9ybXMgdGhlIGFzc2lnbm1lbnQgKmkgPSBuZXdfdmFsdWUuCi0vLy8gXGluZ3JvdXAgTXV0YXRpbmdBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXIsIHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdm9pZCByZXBsYWNlIChDb250YWluZXImIGN0ciwgY29uc3QgVCYgb2xkX3ZhbHVlLCBjb25zdCBUJiBuZXdfdmFsdWUpCi17Ci0gICAgcmVwbGFjZSAoY3RyLmJlZ2luKCksIGN0ci5lbmQoKSwgb2xkX3ZhbHVlLCBuZXdfdmFsdWUpOwotfQotCi0vLy8gUmVwbGFjZV9pZiByZXBsYWNlcyBldmVyeSBlbGVtZW50IGluIHRoZSByYW5nZSBbZmlyc3QsIGxhc3QpIGZvciB3aGljaAotLy8vIHByZWQgcmV0dXJucyB0cnVlIHdpdGggbmV3X3ZhbHVlLiBUaGF0IGlzOiBmb3IgZXZlcnkgaXRlcmF0b3IgaSwgaWYKLS8vLyBwcmVkKCppKSBpcyB0cnVlIHRoZW4gaXQgcGVyZm9ybXMgdGhlIGFzc2lnbm1lbnQgKmkgPSBuZXdfdmFsdWUuCi0vLy8gXGluZ3JvdXAgTXV0YXRpbmdBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXIsIHR5cGVuYW1lIFByZWRpY2F0ZSwgdHlwZW5hbWUgVD4KLWlubGluZSB2b2lkIHJlcGxhY2VfaWYgKENvbnRhaW5lciYgY3RyLCBQcmVkaWNhdGUgcHJlZCwgY29uc3QgVCYgbmV3X3ZhbHVlKQotewotICAgIHJlcGxhY2VfaWYgKGN0ci5iZWdpbigpLCBjdHIuZW5kKCksIHByZWQsIG5ld192YWx1ZSk7Ci19Ci0KLS8vLyBSZXBsYWNlX2NvcHkgY29waWVzIGVsZW1lbnRzIGZyb20gdGhlIHJhbmdlIFtmaXJzdCwgbGFzdCkgdG8gdGhlIHJhbmdlCi0vLy8gW3Jlc3VsdCwgcmVzdWx0ICsgKGxhc3QtZmlyc3QpKSwgZXhjZXB0IHRoYXQgYW55IGVsZW1lbnQgZXF1YWwgdG8gb2xkX3ZhbHVlCi0vLy8gaXMgbm90IGNvcGllZDsgbmV3X3ZhbHVlIGlzIGNvcGllZCBpbnN0ZWFkLiBNb3JlIHByZWNpc2VseSwgZm9yIGV2ZXJ5Ci0vLy8gaW50ZWdlciBuIHN1Y2ggdGhhdCAwIDw9IG4gPCBsYXN0LWZpcnN0LCByZXBsYWNlX2NvcHkgcGVyZm9ybXMgdGhlCi0vLy8gYXNzaWdubWVudCAqKHJlc3VsdCtuKSA9IG5ld192YWx1ZSBpZiAqKGZpcnN0K24pID09IG9sZF92YWx1ZSwgYW5kCi0vLy8gKihyZXN1bHQrbikgPSAqKGZpcnN0K24pIG90aGVyd2lzZS4KLS8vLyBcaW5ncm91cCBNdXRhdGluZ0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lciwgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3IsIHR5cGVuYW1lIFQ+Ci1pbmxpbmUgT3V0cHV0SXRlcmF0b3IgcmVwbGFjZV9jb3B5IChjb25zdCBDb250YWluZXImIGN0ciwgT3V0cHV0SXRlcmF0b3IgcmVzdWx0LCBjb25zdCBUJiBvbGRfdmFsdWUsIGNvbnN0IFQmIG5ld192YWx1ZSkKLXsKLSAgICByZXR1cm4gKHJlcGxhY2VfY29weSAoY3RyLmJlZ2luKCksIGN0ci5lbmQoKSwgcmVzdWx0LCBvbGRfdmFsdWUsIG5ld192YWx1ZSkpOwotfQotCi0vLy8gUmVwbGFjZV9jb3B5X2lmIGNvcGllcyBlbGVtZW50cyBmcm9tIHRoZSByYW5nZSBbZmlyc3QsIGxhc3QpIHRvIHRoZSByYW5nZQotLy8vIFtyZXN1bHQsIHJlc3VsdCArIChsYXN0LWZpcnN0KSksIGV4Y2VwdCB0aGF0IGFueSBlbGVtZW50IGZvciB3aGljaCBwcmVkIGlzCi0vLy8gdHJ1ZSBpcyBub3QgY29waWVkOyBuZXdfdmFsdWUgaXMgY29waWVkIGluc3RlYWQuIE1vcmUgcHJlY2lzZWx5LCBmb3IgZXZlcnkKLS8vLyBpbnRlZ2VyIG4gc3VjaCB0aGF0IDAgPD0gbiA8IGxhc3QtZmlyc3QsIHJlcGxhY2VfY29weV9pZiBwZXJmb3JtcyB0aGUKLS8vLyBhc3NpZ25tZW50ICoocmVzdWx0K24pID0gbmV3X3ZhbHVlIGlmIHByZWQoKihmaXJzdCtuKSksCi0vLy8gYW5kICoocmVzdWx0K24pID0gKihmaXJzdCtuKSBvdGhlcndpc2UuCi0vLy8gXGluZ3JvdXAgTXV0YXRpbmdBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXIsIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBQcmVkaWNhdGUsIHR5cGVuYW1lIFQ+Ci1pbmxpbmUgT3V0cHV0SXRlcmF0b3IgcmVwbGFjZV9jb3B5X2lmIChjb25zdCBDb250YWluZXImIGN0ciwgT3V0cHV0SXRlcmF0b3IgcmVzdWx0LCBQcmVkaWNhdGUgcHJlZCwgY29uc3QgVCYgbmV3X3ZhbHVlKSAKLXsKLSAgICByZXR1cm4gKHJlcGxhY2VfY29weV9pZiAoY3RyLmJlZ2luKCksIGN0ci5lbmQoKSwgcmVzdWx0LCBwcmVkLCBuZXdfdmFsdWUpKTsKLX0KLQotLy8vIEZpbGwgYXNzaWducyB0aGUgdmFsdWUgdmFsdWUgdG8gZXZlcnkgZWxlbWVudCBpbiB0aGUgcmFuZ2UgW2ZpcnN0LCBsYXN0KS4KLS8vLyBUaGF0IGlzLCBmb3IgZXZlcnkgaXRlcmF0b3IgaSBpbiBbZmlyc3QsIGxhc3QpLAotLy8vIGl0IHBlcmZvcm1zIHRoZSBhc3NpZ25tZW50ICppID0gdmFsdWUuCi0vLy8gXGluZ3JvdXAgR2VuZXJhdG9yQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyLCB0eXBlbmFtZSBUPgotaW5saW5lIHZvaWQgZmlsbCAoQ29udGFpbmVyJiBjdHIsIGNvbnN0IFQmIHZhbHVlKQotewotICAgIGZpbGwgKGN0ci5iZWdpbigpLCBjdHIuZW5kKCksIHZhbHVlKTsKLX0KLQotLy8vIEdlbmVyYXRlIGFzc2lnbnMgdGhlIHJlc3VsdCBvZiBpbnZva2luZyBnZW4sIGEgZnVuY3Rpb24gb2JqZWN0IHRoYXQKLS8vLyB0YWtlcyBubyBhcmd1bWVudHMsIHRvIGVhY2ggZWxlbWVudCBpbiB0aGUgcmFuZ2UgW2ZpcnN0LCBsYXN0KS4KLS8vLyBcaW5ncm91cCBHZW5lcmF0b3JBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXIsIHR5cGVuYW1lIEdlbmVyYXRvcj4KLWlubGluZSB2b2lkIGdlbmVyYXRlIChDb250YWluZXImIGN0ciwgR2VuZXJhdG9yIGdlbikKLXsKLSAgICBnZW5lcmF0ZSAoY3RyLmJlZ2luKCksIGN0ci5lbmQoKSwgZ2VuKTsKLX0KLQotLy8vIFJhbmRvbWx5IHBlcm11dGUgdGhlIGVsZW1lbnRzIG9mIHRoZSBjb250YWluZXIuCi0vLy8gXGluZ3JvdXAgR2VuZXJhdG9yQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyPgotaW5saW5lIHZvaWQgcmFuZG9tX3NodWZmbGUgKENvbnRhaW5lciYgY3RyKQotewotICAgIHJhbmRvbV9zaHVmZmxlIChjdHIuYmVnaW4oKSwgY3RyLmVuZCgpKTsKLX0KLQotLy8vIFJlbW92ZV9jb3B5IGNvcGllcyBlbGVtZW50cyB0aGF0IGFyZSBub3QgZXF1YWwgdG8gdmFsdWUgZnJvbSB0aGUgcmFuZ2UKLS8vLyBbZmlyc3QsIGxhc3QpIHRvIGEgcmFuZ2UgYmVnaW5uaW5nIGF0IHJlc3VsdC4gVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUKLS8vLyBlbmQgb2YgdGhlIHJlc3VsdGluZyByYW5nZS4gVGhpcyBvcGVyYXRpb24gaXMgc3RhYmxlLCBtZWFuaW5nIHRoYXQgdGhlCi0vLy8gcmVsYXRpdmUgb3JkZXIgb2YgdGhlIGVsZW1lbnRzIHRoYXQgYXJlIGNvcGllZCBpcyB0aGUgc2FtZSBhcyBpbiB0aGUKLS8vLyByYW5nZSBbZmlyc3QsIGxhc3QpLgotLy8vIFxpbmdyb3VwIE11dGF0aW5nQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyLCB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvciwgdHlwZW5hbWUgVD4KLWlubGluZSBPdXRwdXRJdGVyYXRvciByZW1vdmVfY29weSAoY29uc3QgQ29udGFpbmVyJiBjdHIsIE91dHB1dEl0ZXJhdG9yIHJlc3VsdCwgY29uc3QgVCYgdmFsdWUpCi17Ci0gICAgcmV0dXJuIChyZW1vdmVfY29weSAoY3RyLmJlZ2luKCksIGN0ci5lbmQoKSwgcmVzdWx0LCB2YWx1ZSkpOwotfQotCi0vLy8gUmVtb3ZlX2NvcHlfaWYgY29waWVzIGVsZW1lbnRzIGZyb20gdGhlIHJhbmdlIFtmaXJzdCwgbGFzdCkgdG8gYSByYW5nZQotLy8vIGJlZ2lubmluZyBhdCByZXN1bHQsIGV4Y2VwdCB0aGF0IGVsZW1lbnRzIGZvciB3aGljaCBwcmVkIGlzIHRydWUgYXJlIG5vdAotLy8vIGNvcGllZC4gVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgZW5kIG9mIHRoZSByZXN1bHRpbmcgcmFuZ2UuIFRoaXMgb3BlcmF0aW9uCi0vLy8gaXMgc3RhYmxlLCBtZWFuaW5nIHRoYXQgdGhlIHJlbGF0aXZlIG9yZGVyIG9mIHRoZSBlbGVtZW50cyB0aGF0IGFyZSBjb3BpZWQKLS8vLyBpcyB0aGUgc2FtZSBhcyBpbiB0aGUgcmFuZ2UgW2ZpcnN0LCBsYXN0KS4KLS8vLyBcaW5ncm91cCBNdXRhdGluZ0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lciwgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3IsIHR5cGVuYW1lIFByZWRpY2F0ZT4KLWlubGluZSBPdXRwdXRJdGVyYXRvciByZW1vdmVfY29weV9pZiAoY29uc3QgQ29udGFpbmVyJiBjdHIsIE91dHB1dEl0ZXJhdG9yIHJlc3VsdCwgUHJlZGljYXRlIHByZWQpCi17Ci0gICAgcmV0dXJuIChyZW1vdmVfY29weV9pZiAoY3RyLmJlZ2luKCksIGN0ci5lbmQoKSwgcmVzdWx0LCBwcmVkKSk7Ci19Ci0KLS8vLyBSZW1vdmUgcmVtb3ZlcyBmcm9tIHRoZSByYW5nZSBbZmlyc3QsIGxhc3QpIGFsbCBlbGVtZW50cyB0aGF0IGFyZSBlcXVhbCB0bwotLy8vIHZhbHVlLiBUaGF0IGlzLCByZW1vdmUgcmV0dXJucyBhbiBpdGVyYXRvciBuZXdfbGFzdCBzdWNoIHRoYXQgdGhlIHJhbmdlCi0vLy8gW2ZpcnN0LCBuZXdfbGFzdCkgY29udGFpbnMgbm8gZWxlbWVudHMgZXF1YWwgdG8gdmFsdWUuIFJlbW92ZSBpcyBzdGFibGUsCi0vLy8gbWVhbmluZyB0aGF0IHRoZSByZWxhdGl2ZSBvcmRlciBvZiBlbGVtZW50cyB0aGF0IGFyZSBub3QgZXF1YWwgdG8gdmFsdWUgaXMKLS8vLyB1bmNoYW5nZWQuCi0vLy8gXGluZ3JvdXAgTXV0YXRpbmdBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXIsIHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdm9pZCByZW1vdmUgKENvbnRhaW5lciYgY3RyLCBjb25zdCBUJiB2YWx1ZSkKLXsKLSAgICBjdHIuZXJhc2UgKHJlbW92ZV9jb3B5IChjdHIuYmVnaW4oKSwgY3RyLmVuZCgpLCBjdHIuYmVnaW4oKSwgdmFsdWUpLCBjdHIuZW5kKCkpOwotfQotCi0vLy8gUmVtb3ZlIHJlbW92ZXMgZnJvbSB0aGUgcmFuZ2UgW2ZpcnN0LCBsYXN0KSBhbGwgZWxlbWVudHMgdGhhdCBoYXZlIGFuIGl0ZXJhdG9yCi0vLy8gaW4gcmFuZ2UgW3JmaXJzdCwgcmxhc3QpLiBUaGUgcmFuZ2UgaXMgYXNzdW1lZCB0byBiZSBzb3J0ZWQuIFRoYXQgaXMsIHJlbW92ZQotLy8vIHJldHVybnMgYW4gaXRlcmF0b3IgbmV3X2xhc3Qgc3VjaCB0aGF0IHRoZSByYW5nZSBbZmlyc3QsIG5ld19sYXN0KSBjb250YWlucwotLy8vIG5vIGVsZW1lbnRzIHdob3NlIGl0ZXJhdG9ycyBhcmUgaW4gW3JmaXJzdCwgcmxhc3QpLiBSZW1vdmUgaXMgc3RhYmxlLAotLy8vIG1lYW5pbmcgdGhhdCB0aGUgcmVsYXRpdmUgb3JkZXIgb2YgZWxlbWVudHMgdGhhdCBhcmUgbm90IGVxdWFsIHRvIHZhbHVlIGlzCi0vLy8gdW5jaGFuZ2VkLiBUaGlzIHZlcnNpb24gb2YgdGhlIGFsZ29yaXRobSBpcyBhIHVTVEwgZXh0ZW5zaW9uLgotLy8vIFxpbmdyb3VwIE11dGF0aW5nQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyLCB0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3I+Ci1pbmxpbmUgdm9pZCByZW1vdmUgKENvbnRhaW5lciYgY3RyLCBGb3J3YXJkSXRlcmF0b3IgcmZpcnN0LCBGb3J3YXJkSXRlcmF0b3Igcmxhc3QpCi17Ci0gICAgY3RyLmVyYXNlIChyZW1vdmVfY29weSAoY3RyLmJlZ2luKCksIGN0ci5lbmQoKSwgY3RyLmJlZ2luKCksIHJmaXJzdCwgcmxhc3QpLCBjdHIuZW5kKCkpOwotfQotCi0vLy8gUmVtb3ZlX2lmIHJlbW92ZXMgZnJvbSB0aGUgcmFuZ2UgW2ZpcnN0LCBsYXN0KSBldmVyeSBlbGVtZW50IHggc3VjaCB0aGF0Ci0vLy8gcHJlZCh4KSBpcyB0cnVlLiBUaGF0IGlzLCByZW1vdmVfaWYgcmV0dXJucyBhbiBpdGVyYXRvciBuZXdfbGFzdCBzdWNoIHRoYXQKLS8vLyB0aGUgcmFuZ2UgW2ZpcnN0LCBuZXdfbGFzdCkgY29udGFpbnMgbm8gZWxlbWVudHMgZm9yIHdoaWNoIHByZWQgaXMgdHJ1ZS4KLS8vLyBUaGUgaXRlcmF0b3JzIGluIHRoZSByYW5nZSBbbmV3X2xhc3QsIGxhc3QpIGFyZSBhbGwgc3RpbGwgZGVyZWZlcmVuY2VhYmxlLAotLy8vIGJ1dCB0aGUgZWxlbWVudHMgdGhhdCB0aGV5IHBvaW50IHRvIGFyZSB1bnNwZWNpZmllZC4gUmVtb3ZlX2lmIGlzIHN0YWJsZSwKLS8vLyBtZWFuaW5nIHRoYXQgdGhlIHJlbGF0aXZlIG9yZGVyIG9mIGVsZW1lbnRzIHRoYXQgYXJlIG5vdCByZW1vdmVkIGlzCi0vLy8gdW5jaGFuZ2VkLgotLy8vIFxpbmdyb3VwIE11dGF0aW5nQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyLCB0eXBlbmFtZSBQcmVkaWNhdGU+Ci1pbmxpbmUgdm9pZCByZW1vdmVfaWYgKENvbnRhaW5lciYgY3RyLCBQcmVkaWNhdGUgcHJlZCkKLXsKLSAgICBjdHIuZXJhc2UgKHJlbW92ZV9jb3B5X2lmIChjdHIuYmVnaW4oKSwgY3RyLmVuZCgpLCBjdHIuYmVnaW4oKSwgcHJlZCksIGN0ci5lbmQoKSk7Ci19Ci0KLS8vLyBVbmlxdWVfY29weSBjb3BpZXMgZWxlbWVudHMgZnJvbSB0aGUgcmFuZ2UgW2ZpcnN0LCBsYXN0KSB0byBhIHJhbmdlCi0vLy8gYmVnaW5uaW5nIHdpdGggcmVzdWx0LCBleGNlcHQgdGhhdCBpbiBhIGNvbnNlY3V0aXZlIGdyb3VwIG9mIGR1cGxpY2F0ZQotLy8vIGVsZW1lbnRzIG9ubHkgdGhlIGZpcnN0IG9uZSBpcyBjb3BpZWQuIFRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIGVuZCBvZgotLy8vIHRoZSByYW5nZSB0byB3aGljaCB0aGUgZWxlbWVudHMgYXJlIGNvcGllZC4gVGhpcyBiZWhhdmlvciBpcyBzaW1pbGFyCi0vLy8gdG8gdGhlIFVuaXggZmlsdGVyIHVuaXEuCi0vLy8gXGluZ3JvdXAgTXV0YXRpbmdBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXIsIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yPgotaW5saW5lIE91dHB1dEl0ZXJhdG9yIHVuaXF1ZV9jb3B5IChjb25zdCBDb250YWluZXImIGN0ciwgT3V0cHV0SXRlcmF0b3IgcmVzdWx0KQotewotICAgIHJldHVybiAodW5pcXVlX2NvcHkgKGN0ci5iZWdpbigpLCBjdHIuZW5kKCksIHJlc3VsdCkpOwotfQotCi0vLy8gRXZlcnkgdGltZSBhIGNvbnNlY3V0aXZlIGdyb3VwIG9mIGR1cGxpY2F0ZSBlbGVtZW50cyBhcHBlYXJzIGluIHRoZSByYW5nZQotLy8vIFtmaXJzdCwgbGFzdCksIHRoZSBhbGdvcml0aG0gdW5pcXVlIHJlbW92ZXMgYWxsIGJ1dCB0aGUgZmlyc3QgZWxlbWVudC4KLS8vLyBUaGF0IGlzLCB1bmlxdWUgcmV0dXJucyBhbiBpdGVyYXRvciBuZXdfbGFzdCBzdWNoIHRoYXQgdGhlIHJhbmdlIFtmaXJzdCwKLS8vLyBuZXdfbGFzdCkgY29udGFpbnMgbm8gdHdvIGNvbnNlY3V0aXZlIGVsZW1lbnRzIHRoYXQgYXJlIGR1cGxpY2F0ZXMuCi0vLy8gVGhlIGl0ZXJhdG9ycyBpbiB0aGUgcmFuZ2UgW25ld19sYXN0LCBsYXN0KSBhcmUgYWxsIHN0aWxsIGRlcmVmZXJlbmNlYWJsZSwKLS8vLyBidXQgdGhlIGVsZW1lbnRzIHRoYXQgdGhleSBwb2ludCB0byBhcmUgdW5zcGVjaWZpZWQuIFVuaXF1ZSBpcyBzdGFibGUsCi0vLy8gbWVhbmluZyB0aGF0IHRoZSByZWxhdGl2ZSBvcmRlciBvZiBlbGVtZW50cyB0aGF0IGFyZSBub3QgcmVtb3ZlZCBpcwotLy8vIHVuY2hhbmdlZC4KLS8vLyBcaW5ncm91cCBNdXRhdGluZ0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lcj4KLWlubGluZSB2b2lkIHVuaXF1ZSAoQ29udGFpbmVyJiBjdHIpCi17Ci0gICAgY3RyLmVyYXNlICh1bmlxdWVfY29weSAoY3RyLmJlZ2luKCksIGN0ci5lbmQoKSwgY3RyLmJlZ2luKCkpLCBjdHIuZW5kKCkpOwotfQotCi0vLy8gRXZlcnkgdGltZSBhIGNvbnNlY3V0aXZlIGdyb3VwIG9mIGR1cGxpY2F0ZSBlbGVtZW50cyBhcHBlYXJzIGluIHRoZSByYW5nZQotLy8vIFtmaXJzdCwgbGFzdCksIHRoZSBhbGdvcml0aG0gdW5pcXVlIHJlbW92ZXMgYWxsIGJ1dCB0aGUgZmlyc3QgZWxlbWVudC4KLS8vLyBUaGF0IGlzLCB1bmlxdWUgcmV0dXJucyBhbiBpdGVyYXRvciBuZXdfbGFzdCBzdWNoIHRoYXQgdGhlIHJhbmdlIFtmaXJzdCwKLS8vLyBuZXdfbGFzdCkgY29udGFpbnMgbm8gdHdvIGNvbnNlY3V0aXZlIGVsZW1lbnRzIHRoYXQgYXJlIGR1cGxpY2F0ZXMuCi0vLy8gVGhlIGl0ZXJhdG9ycyBpbiB0aGUgcmFuZ2UgW25ld19sYXN0LCBsYXN0KSBhcmUgYWxsIHN0aWxsIGRlcmVmZXJlbmNlYWJsZSwKLS8vLyBidXQgdGhlIGVsZW1lbnRzIHRoYXQgdGhleSBwb2ludCB0byBhcmUgdW5zcGVjaWZpZWQuIFVuaXF1ZSBpcyBzdGFibGUsCi0vLy8gbWVhbmluZyB0aGF0IHRoZSByZWxhdGl2ZSBvcmRlciBvZiBlbGVtZW50cyB0aGF0IGFyZSBub3QgcmVtb3ZlZCBpcwotLy8vIHVuY2hhbmdlZC4KLS8vLyBcaW5ncm91cCBNdXRhdGluZ0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lciwgdHlwZW5hbWUgQmluYXJ5UHJlZGljYXRlPgotaW5saW5lIHZvaWQgdW5pcXVlIChDb250YWluZXImIGN0ciwgQmluYXJ5UHJlZGljYXRlIGJpbmFyeV9wcmVkKQotewotICAgIGN0ci5lcmFzZSAodW5pcXVlX2NvcHkgKGN0ci5iZWdpbigpLCBjdHIuZW5kKCksIGN0ci5iZWdpbigpLCBiaW5hcnlfcHJlZCksIGN0ci5lbmQoKSk7Ci19Ci0KLS8vLyBSZXZlcnNlIHJldmVyc2VzIGEgcmFuZ2UuCi0vLy8gVGhhdCBpczogZm9yIGV2ZXJ5IGkgc3VjaCB0aGF0IDAgPD0gaSA8PSAobGFzdCAtIGZpcnN0KSAvIDIpLAotLy8vIGl0IGV4Y2hhbmdlcyAqKGZpcnN0ICsgaSkgYW5kICoobGFzdCAtIChpICsgMSkpLgotLy8vIFxpbmdyb3VwIE11dGF0aW5nQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyPgotaW5saW5lIHZvaWQgcmV2ZXJzZSAoQ29udGFpbmVyJiBjdHIpCi17Ci0gICAgcmV2ZXJzZSAoY3RyLmJlZ2luKCksIGN0ci5lbmQoKSk7Ci19Ci0KLS8vLyBFeGNoYW5nZXMgcmFuZ2VzIFtmaXJzdCwgbWlkZGxlKSBhbmQgW21pZGRsZSwgbGFzdCkKLS8vLyBcaW5ncm91cCBNdXRhdGluZ0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lcj4KLWlubGluZSB2b2lkIHJvdGF0ZSAoQ29udGFpbmVyJiBjdHIsIG9mZl90IG9mZnNldCkKLXsKLSAgICBhc3NlcnQgKHNpemVfdChvZmZzZXQgPiAwID8gb2Zmc2V0IDogLW9mZnNldCkgPCBjdHIuc2l6ZSgpKTsKLSAgICBpZiAob2Zmc2V0ID4gMCkKLQlyb3RhdGUgKGN0ci5iZWdpbigpLCBjdHIuZW5kKCkgLSBvZmZzZXQsIGN0ci5lbmQoKSk7Ci0gICAgZWxzZQotCXJvdGF0ZSAoY3RyLmJlZ2luKCksIGN0ci5iZWdpbigpIC0gb2Zmc2V0LCBjdHIuZW5kKCkpOwotfQotCi0vLy8gUmV0dXJucyB0aGUgZnVydGhlcm1vc3QgaXRlcmF0b3IgaSBpbiBbZmlyc3QsIGxhc3QpIHN1Y2ggdGhhdCwKLS8vLyBmb3IgZXZlcnkgaXRlcmF0b3IgaiBpbiBbZmlyc3QsIGkpLCAqaiA8IHZhbHVlCi0vLy8gQXNzdW1lcyB0aGUgcmFuZ2UgaXMgc29ydGVkLgotLy8vIFxpbmdyb3VwIFNlYXJjaGluZ0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lciwgdHlwZW5hbWUgTGVzc1RoYW5Db21wYXJhYmxlPgotaW5saW5lIHR5cGVuYW1lIENvbnRhaW5lcjo6Y29uc3RfaXRlcmF0b3IgbG93ZXJfYm91bmQgKGNvbnN0IENvbnRhaW5lciYgY3RyLCBjb25zdCBMZXNzVGhhbkNvbXBhcmFibGUmIHZhbHVlKQotewotICAgIHJldHVybiAobG93ZXJfYm91bmQgKGN0ci5iZWdpbigpLCBjdHIuZW5kKCksIHZhbHVlKSk7Ci19Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyLCB0eXBlbmFtZSBMZXNzVGhhbkNvbXBhcmFibGU+Ci1pbmxpbmUgdHlwZW5hbWUgQ29udGFpbmVyOjppdGVyYXRvciBsb3dlcl9ib3VuZCAoQ29udGFpbmVyJiBjdHIsIGNvbnN0IExlc3NUaGFuQ29tcGFyYWJsZSYgdmFsdWUpCi17Ci0gICAgcmV0dXJuIChsb3dlcl9ib3VuZCAoY3RyLmJlZ2luKCksIGN0ci5lbmQoKSwgdmFsdWUpKTsKLX0KLQotLy8vIFJldHVybnMgdGhlIGZ1cnRoZXJtb3N0IGl0ZXJhdG9yIGkgaW4gW2ZpcnN0LGxhc3QpIHN1Y2ggdGhhdCBmb3IKLS8vLyBldmVyeSBpdGVyYXRvciBqIGluIFtmaXJzdCxpKSwgdmFsdWUgPCAqaiBpcyBmYWxzZS4KLS8vLyBcaW5ncm91cCBTZWFyY2hpbmdBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXIsIHR5cGVuYW1lIExlc3NUaGFuQ29tcGFyYWJsZT4KLWlubGluZSB0eXBlbmFtZSBDb250YWluZXI6OmNvbnN0X2l0ZXJhdG9yIHVwcGVyX2JvdW5kIChjb25zdCBDb250YWluZXImIGN0ciwgY29uc3QgTGVzc1RoYW5Db21wYXJhYmxlJiB2YWx1ZSkKLXsKLSAgICByZXR1cm4gKHVwcGVyX2JvdW5kIChjdHIuYmVnaW4oKSwgY3RyLmVuZCgpLCB2YWx1ZSkpOwotfQotdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lciwgdHlwZW5hbWUgTGVzc1RoYW5Db21wYXJhYmxlPgotaW5saW5lIHR5cGVuYW1lIENvbnRhaW5lcjo6aXRlcmF0b3IgdXBwZXJfYm91bmQgKENvbnRhaW5lciYgY3RyLCBjb25zdCBMZXNzVGhhbkNvbXBhcmFibGUmIHZhbHVlKQotewotICAgIHJldHVybiAodXBwZXJfYm91bmQgKGN0ci5iZWdpbigpLCBjdHIuZW5kKCksIHZhbHVlKSk7Ci19Ci0KLS8vLyBQZXJmb3JtcyBhIGJpbmFyeSBzZWFyY2ggZm9yIFxwIHZhbHVlLgotLy8vIEFzc3VtZXMgdGhlIHJhbmdlIGlzIHNvcnRlZC4KLS8vLyBcaW5ncm91cCBTZWFyY2hpbmdBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXI+Ci1pbmxpbmUgdHlwZW5hbWUgQ29udGFpbmVyOjpjb25zdF9pdGVyYXRvciBiaW5hcnlfc2VhcmNoIChjb25zdCBDb250YWluZXImIGN0ciwgY29uc3QgdHlwZW5hbWUgQ29udGFpbmVyOjp2YWx1ZV90eXBlJiB2YWx1ZSkKLXsKLSAgICByZXR1cm4gKGJpbmFyeV9zZWFyY2ggKGN0ci5iZWdpbigpLCBjdHIuZW5kKCksIHZhbHVlKSk7Ci19Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyPgotaW5saW5lIHR5cGVuYW1lIENvbnRhaW5lcjo6aXRlcmF0b3IgYmluYXJ5X3NlYXJjaCAoQ29udGFpbmVyJiBjdHIsIGNvbnN0IHR5cGVuYW1lIENvbnRhaW5lcjo6dmFsdWVfdHlwZSYgdmFsdWUpCi17Ci0gICAgcmV0dXJuIChiaW5hcnlfc2VhcmNoIChjdHIuYmVnaW4oKSwgY3RyLmVuZCgpLCB2YWx1ZSkpOwotfQotCi0vLy8gUmV0dXJucyBwYWlyPGxvd2VyX2JvdW5kLHVwcGVyX2JvdW5kPgotLy8vIFxpbmdyb3VwIFNlYXJjaGluZ0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lciwgdHlwZW5hbWUgTGVzc1RoYW5Db21wYXJhYmxlPgotaW5saW5lIHBhaXI8dHlwZW5hbWUgQ29udGFpbmVyOjpjb25zdF9pdGVyYXRvcix0eXBlbmFtZSBDb250YWluZXI6OmNvbnN0X2l0ZXJhdG9yPiBlcXVhbF9yYW5nZSAoY29uc3QgQ29udGFpbmVyJiBjdHIsIGNvbnN0IExlc3NUaGFuQ29tcGFyYWJsZSYgdmFsdWUpCi17Ci0gICAgcmV0dXJuIChlcXVhbF9yYW5nZSAoY3RyLmJlZ2luKCksIGN0ci5lbmQoKSwgdmFsdWUpKTsKLX0KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXIsIHR5cGVuYW1lIExlc3NUaGFuQ29tcGFyYWJsZT4KLWlubGluZSBwYWlyPHR5cGVuYW1lIENvbnRhaW5lcjo6aXRlcmF0b3IsdHlwZW5hbWUgQ29udGFpbmVyOjppdGVyYXRvcj4gZXF1YWxfcmFuZ2UgKENvbnRhaW5lciYgY3RyLCBjb25zdCBMZXNzVGhhbkNvbXBhcmFibGUmIHZhbHVlKQotewotICAgIHJldHVybiAoZXF1YWxfcmFuZ2UgKGN0ci5iZWdpbigpLCBjdHIuZW5kKCksIHZhbHVlKSk7Ci19Ci0KLS8vLyBTb3J0cyB0aGUgY29udGFpbmVyCi0vLy8gXGluZ3JvdXAgU29ydGluZ0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lcj4KLWlubGluZSB2b2lkIHNvcnQgKENvbnRhaW5lciYgY3RyKQotewotICAgIHNvcnQgKGN0ci5iZWdpbigpLCBjdHIuZW5kKCkpOwotfQotCi0vLy8gU29ydHMgdGhlIGNvbnRhaW5lcgotLy8vIFxpbmdyb3VwIFNvcnRpbmdBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXIsIHR5cGVuYW1lIENvbXBhcmU+Ci1pbmxpbmUgdm9pZCBzb3J0IChDb250YWluZXImIGN0ciwgQ29tcGFyZSBjb21wKQotewotICAgIHNvcnQgKGN0ci5iZWdpbigpLCBjdHIuZW5kKCksIGNvbXApOwotfQotCi0vLy8gU29ydHMgdGhlIGNvbnRhaW5lcgotLy8vIFxpbmdyb3VwIFNvcnRpbmdBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXI+Ci1pbmxpbmUgdm9pZCBzdGFibGVfc29ydCAoQ29udGFpbmVyJiBjdHIpCi17Ci0gICAgc3RhYmxlX3NvcnQgKGN0ci5iZWdpbigpLCBjdHIuZW5kKCkpOwotfQotCi0vLy8gU29ydHMgdGhlIGNvbnRhaW5lcgotLy8vIFxpbmdyb3VwIFNvcnRpbmdBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXIsIHR5cGVuYW1lIENvbXBhcmU+Ci1pbmxpbmUgdm9pZCBzdGFibGVfc29ydCAoQ29udGFpbmVyJiBjdHIsIENvbXBhcmUgY29tcCkKLXsKLSAgICBzdGFibGVfc29ydCAoY3RyLmJlZ2luKCksIGN0ci5lbmQoKSwgY29tcCk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIHVzdGwKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VjdHJzdHJtLmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91Y3Ryc3RybS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOWRkY2RkLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VjdHJzdHJtLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNzcgKzAsMCBAQAotLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHVzdGwgbGlicmFyeSwgYW4gU1RMIGltcGxlbWVudGF0aW9uLgotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwNSBieSBNaWtlIFNoYXJvdiA8bXNoYXJvdkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0vLyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgotLy8KLS8vLyBcZmlsZSB1Y3Ryc3RybS5oCi0vLy8KLS8vLyBcYnJpZWYgU2VyaWFsaXphdGlvbiB0ZW1wbGF0ZXMgZm9yIHN0YW5kYXJkIGNvbnRhaW5lcnMuCi0vLy8gQmVjYXVzZSBjb250YWluZXJzIGFyZSB0ZW1wbGF0ZXMsIGEgc2luZ2xlIG9wZXJhdG9yPj4gaXMgaW1wb3NzaWJsZS4KLS8vLyBNYWtpbmcgdmlydHVhbCByZWFkL3dyaXRlIGlzIGFsc28gaW1wb3NzaWJsZSBiZWNhdXNlIG5vdCBhbGwgY29udGFpbmVycwotLy8vIGNvbnRhaW4gc2VyaWFsaXphYmxlIGVsZW1lbnRzLiBUaGVyZWZvcmUsIHVzZSB0aGUgbWFjcm9zIGluIHRoaXMgZmlsZS4KLS8vLwotCi0jaWZuZGVmIFVDVFJTVFJNX0hfNzVCMkMzRUE0OTgwREREQzZCNkRGRkY3NjdBM0I3QUMKLSNkZWZpbmUgVUNUUlNUUk1fSF83NUIyQzNFQTQ5ODBERERDNkI2REZGRjc2N0EzQjdBQwotCi0jaW5jbHVkZSAibWlzdHJlYW0uaCIKLSNpbmNsdWRlICJzb3N0cmVhbS5oIgotI2luY2x1ZGUgInVpb3NmdW5jLmgiCi0KLW5hbWVzcGFjZSB1c3RsIHsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBNYWNyb3MgZm9yIGVhc2lseSBkZWNsYXJpbmcgYSBjb250YWluZXIgc3RyZWFtYWJsZS4KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLy8gXGJyaWVmIERlY2xhcmVzIGNvbnRhaW5lciB0ZW1wbGF0ZSBccCB0eXBlIHN0cmVhbWFibGUuCi0vLy8KLS8vLyBVc2UgVEVNUExBVEVfVFlQRSBhbmQgVEVNUExBVEVfREVDTCBtYWNyb3MgdG8gcGFzcyBpbiB0ZW1wbGF0ZWQKLS8vLyB0eXBlIHdpdGggY29tbWFzIGFuZCB0aGUgdGVtcGxhdGUgZGVjbGFyYXRpb24uCi0vLy8KLSNkZWZpbmUgU1REX1RFTVBMQVRFX0NUUl9TVFJFQU1BQkxFKHR5cGUsIHRlbXBsYXRlX2RlY2wpCVwKLSAgICB0ZW1wbGF0ZV9kZWNsCQkJCQkJXAotICAgIGlubGluZSBpc3RyZWFtJiBvcGVyYXRvcj4+IChpc3RyZWFtJiBpcywgdHlwZSYgdikJCVwKLSAgICB7IHJldHVybiAoY29udGFpbmVyX3JlYWQgKGlzLCB2KSk7IH0gCQkJXAotICAgIHRlbXBsYXRlX2RlY2wJCQkJCQlcCi0gICAgaW5saW5lIG9zdHJlYW0mIG9wZXJhdG9yPDwgKG9zdHJlYW0mIG9zLCBjb25zdCB0eXBlJiB2KQlcCi0gICAgeyByZXR1cm4gKGNvbnRhaW5lcl93cml0ZSAob3MsIHYpKTsgfSAJCQlcCi0gICAgdGVtcGxhdGVfZGVjbAkJCQkJCVwKLSAgICBpbmxpbmUgb3N0cmluZ3N0cmVhbSYgb3BlcmF0b3I8PCAob3N0cmluZ3N0cmVhbSYgb3MsIGNvbnN0IHR5cGUmIHYpCVwKLSAgICB7IHJldHVybiAoY29udGFpbmVyX3RleHRfd3JpdGUgKG9zLCB2KSk7IH0JCQlcCi0gICAgdGVtcGxhdGVfZGVjbAkJCQkJCVwKLSAgICBpbmxpbmUgc2l6ZV90IHN0cmVhbV9zaXplX29mIChjb25zdCB0eXBlJiB2KQkJXAotICAgIHsgcmV0dXJuIChjb250YWluZXJfc3RyZWFtX3NpemUgKHYpKTsgfQotCi0vLy8gXGJyaWVmIERlY2xhcmVzIG5vbi1yZXNpemFibGUgY29udGFpbmVyIHRlbXBsYXRlIFxwIHR5cGUgc3RyZWFtYWJsZS4KLSNkZWZpbmUgU1REX1RFTVBMQVRFX05SX0NUUl9TVFJFQU1BQkxFKHR5cGUsIHRlbXBsYXRlX2RlY2wpCVwKLSAgICB0ZW1wbGF0ZV9kZWNsCQkJCQkJXAotICAgIGlubGluZSBpc3RyZWFtJiBvcGVyYXRvcj4+IChpc3RyZWFtJiBpcywgdHlwZSYgdikJCVwKLSAgICB7IHJldHVybiAobnJfY29udGFpbmVyX3JlYWQgKGlzLCB2KSk7IH0gCQkJXAotICAgIHRlbXBsYXRlX2RlY2wJCQkJCQlcCi0gICAgaW5saW5lIG9zdHJlYW0mIG9wZXJhdG9yPDwgKG9zdHJlYW0mIG9zLCBjb25zdCB0eXBlJiB2KQlcCi0gICAgeyByZXR1cm4gKG5yX2NvbnRhaW5lcl93cml0ZSAob3MsIHYpKTsgfSAJCQlcCi0gICAgdGVtcGxhdGVfZGVjbAkJCQkJCVwKLSAgICBpbmxpbmUgb3N0cmluZ3N0cmVhbSYgb3BlcmF0b3I8PCAob3N0cmluZ3N0cmVhbSYgb3MsIGNvbnN0IHR5cGUmIHYpCVwKLSAgICB7IHJldHVybiAoY29udGFpbmVyX3RleHRfd3JpdGUgKG9zLCB2KSk7IH0JCQlcCi0gICAgdGVtcGxhdGVfZGVjbAkJCQkJCVwKLSAgICBpbmxpbmUgc2l6ZV90IHN0cmVhbV9zaXplX29mIChjb25zdCB0eXBlJiB2KQkJXAotICAgIHsgcmV0dXJuIChucl9jb250YWluZXJfc3RyZWFtX3NpemUgKHYpKTsgfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIEZpeGVkIHNpemUgY29udGFpbmVyIHNlcmlhbGl6YXRpb24uCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8vIFJlYWRzIGZpeGVkIHNpemUgY29udGFpbmVyIFxwIHYgZnJvbSBzdHJlYW0gXHAgaXMuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyPgotaW5saW5lIGlzdHJlYW0mIG5yX2NvbnRhaW5lcl9yZWFkIChpc3RyZWFtJiBpcywgQ29udGFpbmVyJiB2KQotewotICAgIGZvcmVhY2ggKHR5cGVuYW1lIENvbnRhaW5lcjo6aXRlcmF0b3IsIGksIHYpCi0JaXMgPj4gKmk7Ci0gICAgcmV0dXJuIChpcyk7Ci19Ci0KLS8vLyBXcml0ZXMgZml4ZWQgc2l6ZSBjb250YWluZXIgXHAgdiBpbnRvIHN0cmVhbSBccCBvcy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXI+Ci1pbmxpbmUgb3N0cmVhbSYgbnJfY29udGFpbmVyX3dyaXRlIChvc3RyZWFtJiBvcywgY29uc3QgQ29udGFpbmVyJiB2KQotewotICAgIGZvcmVhY2ggKHR5cGVuYW1lIENvbnRhaW5lcjo6Y29uc3RfaXRlcmF0b3IsIGksIHYpCi0Jb3MgPDwgKmk7Ci0gICAgcmV0dXJuIChvcyk7Ci19Ci0KLS8vLyBDb21wdXRlcyB0aGUgc3RyZWFtIHNpemUgb2YgYSBmaXhlZCBzaXplIHN0YW5kYXJkIGNvbnRhaW5lci4KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXI+Ci1zaXplX3QgbnJfY29udGFpbmVyX3N0cmVhbV9zaXplIChjb25zdCBDb250YWluZXImIHYpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBDb250YWluZXI6OmNvbnN0X2l0ZXJhdG9yIHZjaXRlcl90OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPHZjaXRlcl90Pjo6dmFsdWVfdHlwZSB2YWx1ZV90eXBlOwotICAgIHNpemVfdCBzID0gMDsKLSAgICBpZiAobnVtZXJpY19saW1pdHM8dmFsdWVfdHlwZT46OmlzX2ludGVncmFsKQotCXMgKz0gdi5zaXplKCkgKiBzdHJlYW1fc2l6ZV9vZih2YWx1ZV90eXBlKCkpOwotICAgIGVsc2UKLQlmb3JlYWNoICh2Y2l0ZXJfdCwgaSwgdikKLQkgICAgcyArPSBzdHJlYW1fc2l6ZV9vZigqaSk7Ci0gICAgcmV0dXJuIChzKTsKLX0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBSZXNpemFibGUgY29udGFpbmVyIHNlcmlhbGl6YXRpb24uCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8vIFJlYWRzIGNvbnRhaW5lciBccCB2IGZyb20gc3RyZWFtIFxwIGlzLgotdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lcj4KLWlzdHJlYW0mIGNvbnRhaW5lcl9yZWFkIChpc3RyZWFtJiBpcywgQ29udGFpbmVyJiB2KQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgQ29udGFpbmVyOjp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBDb250YWluZXI6Oml0ZXJhdG9yIGl0ZXJhdG9yOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgQ29udGFpbmVyOjp3cml0dGVuX3NpemVfdHlwZSB3cml0dGVuX3NpemVfdHlwZTsKLSAgICB3cml0dGVuX3NpemVfdHlwZSBuOwotICAgIGlzID4+IG47Ci0gICAgY29uc3Qgc2l6ZV90IGV4cGVjdGVkU2l6ZSA9IG4gKiBzdHJlYW1fc2l6ZV9vZih2YWx1ZV90eXBlKCkpOwotI2lmICFQTEFURk9STV9BTkRST0lECi0gICAgaXMudmVyaWZ5X3JlbWFpbmluZyAoInJlYWQiLCB0eXBlaWQodikubmFtZSgpLCBleHBlY3RlZFNpemUpOwotI2VuZGlmCi0gICAgaWYgKGFsaWdub2YodmFsdWVfdHlwZSgpKSA+IGFsaWdub2YobikpCi0JaXMgPj4gaW9zOjp0YWxpZ248dmFsdWVfdHlwZT4oKTsKLSAgICB2LnJlc2l6ZSAobik7Ci0gICAgbnJfY29udGFpbmVyX3JlYWQgKGlzLCB2KTsKLSAgICBpcyA+PiBpb3M6OnRhbGlnbjx3cml0dGVuX3NpemVfdHlwZT4oKTsKLSAgICByZXR1cm4gKGlzKTsKLX0KLQotLy8vIFdyaXRlcyB0aGUgdmVjdG9yIHRvIHN0cmVhbSBccCBvcy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXI+Ci1vc3RyZWFtJiBjb250YWluZXJfd3JpdGUgKG9zdHJlYW0mIG9zLCBjb25zdCBDb250YWluZXImIHYpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBDb250YWluZXI6OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIENvbnRhaW5lcjo6d3JpdHRlbl9zaXplX3R5cGUgd3JpdHRlbl9zaXplX3R5cGU7Ci0gICAgY29uc3Qgd3JpdHRlbl9zaXplX3R5cGUgc3ogKHYuc2l6ZSgpKTsKLSAgICBvcyA8PCBzejsKLSAgICBpZiAoYWxpZ25vZih2YWx1ZV90eXBlKCkpID4gYWxpZ25vZihzeikpCi0Jb3MgPDwgaW9zOjp0YWxpZ248dmFsdWVfdHlwZT4oKTsKLSAgICBucl9jb250YWluZXJfd3JpdGUgKG9zLCB2KTsKLSAgICBvcyA8PCBpb3M6OnRhbGlnbjx3cml0dGVuX3NpemVfdHlwZT4oKTsKLSAgICByZXR1cm4gKG9zKTsKLX0KLQotLy8vIENvbXB1dGVzIHRoZSBzdHJlYW0gc2l6ZSBvZiBhIHN0YW5kYXJkIGNvbnRhaW5lci4KLXRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXI+Ci1zaXplX3QgY29udGFpbmVyX3N0cmVhbV9zaXplIChjb25zdCBDb250YWluZXImIHYpCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBDb250YWluZXI6OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIENvbnRhaW5lcjo6d3JpdHRlbl9zaXplX3R5cGUgd3JpdHRlbl9zaXplX3R5cGU7Ci0gICAgY29uc3Qgd3JpdHRlbl9zaXplX3R5cGUgc3ogKHYuc2l6ZSgpKTsKLSAgICBzaXplX3Qgc2l6ZVNpemUgPSBzdHJlYW1fc2l6ZV9vZiAoc3opOwotICAgIGlmIChhbGlnbm9mKHZhbHVlX3R5cGUoKSkgPiBhbGlnbm9mKHN6KSkKLQlzaXplU2l6ZSA9IEFsaWduIChzaXplU2l6ZSwgYWxpZ25vZih2YWx1ZV90eXBlKCkpKTsKLSAgICByZXR1cm4gKEFsaWduIChzaXplU2l6ZSArIG5yX2NvbnRhaW5lcl9zdHJlYW1fc2l6ZSAodiksIGFsaWdub2Yoc3opKSk7Ci19Ci0KLS8vLyBcYnJpZWYgV3JpdGVzIGVsZW1lbnQgXHAgdiBpbnRvIHN0cmVhbSBccCBvcyBhcyB0ZXh0LgotLy8vIFNwZWNpYWxpemUgdG8gY3VzdG9tIHByaW50IGVsZW1lbnRzLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgb3N0cmluZ3N0cmVhbSYgY29udGFpbmVyX2VsZW1lbnRfdGV4dF93cml0ZSAob3N0cmluZ3N0cmVhbSYgb3MsIGNvbnN0IFQmIHYpCi17IHJldHVybiAob3MgPDwgdik7IH0KLQotLy8vIFdyaXRlcyBjb250YWluZXIgXHAgdiBpbnRvIHN0cmVhbSBccCBvcyBhcyB0ZXh0LgotdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lcj4KLW9zdHJpbmdzdHJlYW0mIGNvbnRhaW5lcl90ZXh0X3dyaXRlIChvc3RyaW5nc3RyZWFtJiBvcywgY29uc3QgQ29udGFpbmVyJiB2KQotewotICAgIHR5cGVuYW1lIENvbnRhaW5lcjo6Y29uc3RfaXRlcmF0b3IgaSA9IHYuYmVnaW4oKTsKLSAgICBvcyA8PCAnKCc7Ci0gICAgd2hpbGUgKGkgPCB2LmVuZCgpKSB7Ci0JY29udGFpbmVyX2VsZW1lbnRfdGV4dF93cml0ZSAob3MsICppKTsKLQlpZiAoKytpID49IHYuZW5kKCkpIGJyZWFrOwotCW9zIDw8ICcsJzsKLSAgICB9Ci0gICAgb3MgPDwgJyknOwotICAgIHJldHVybiAob3MpOwotfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotfSAvLyBuYW1lc3BhY2UgdXN0bAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdWV4Y2VwdGlvbi5jcHAgYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91ZXhjZXB0aW9uLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDAwZjIxOS4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91ZXhjZXB0aW9uLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDMwNSArMCwwIEBACi0vLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdXN0bCBsaWJyYXJ5LCBhbiBTVEwgaW1wbGVtZW50YXRpb24uCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDA1IGJ5IE1pa2UgU2hhcm92IDxtc2hhcm92QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLS8vIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCi0vLwotLy8gdWV4Y2VwdGlvbi5jYwotLy8KLQotI2luY2x1ZGUgInVhc3NlcnQuaCIKLSNpbmNsdWRlICJ1ZXhjZXB0aW9uLmgiCi0jaW5jbHVkZSAidXN0cmluZy5oIgotI2luY2x1ZGUgIm1pc3RyZWFtLmgiCi0jaW5jbHVkZSAic29zdHJlYW0uaCIKLSNpbmNsdWRlICJzdHJtc2l6ZS5oIgotI2luY2x1ZGUgInVzcGVjaWFsLmgiCi0jaW5jbHVkZSA8ZXJybm8uaD4KLSNpZiBfX0dOVUNfXyA+PSAzICYmICFQTEFURk9STV9BTkRST0lECi0gICAgI2luY2x1ZGUgPGN4eGFiaS5oPgotI2VuZGlmCi0KLW5hbWVzcGFjZSB1c3RsIHsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vLyBcYnJpZWYgUmV0dXJucyBhIGRlc2NyaXB0aXZlIGVycm9yIG1lc3NhZ2UuIGZtdD0iJXMiCi0vLy8gT3ZlcmxvYWRzIG9mIHRoaXMgZnVuY3Rpb25zIG11c3Qgc2V0IE5VTEwgYXMgdGhlIGRlZmF1bHQgZm10Ci0vLy8gYXJndW1lbnQgYW5kIGhhbmRsZSB0aGF0IGNhc2UgdG8gcHJvdmlkZSBhIGRlZmF1bHQgZm9ybWF0IHN0cmluZwotLy8vIGluIGNhc2UgdGhlIHVzZXIgZG9lcyBub3QgaGF2ZSBhIGxvY2FsaXplZCBvbmUuIFRoZSBmb3JtYXQKLS8vLyBzdHJpbmcgc2hvdWxkIGJlIHNob3duIGluIHRoZSBkb2N1bWVudGF0aW9uIHRvIG5vdCByZXF1aXJlCi0vLy8gdHJhbnNsYXRvcnMgdG8gbG9vayB0aHJvdWdoIGNvZGUuIEFsc28sIHRoaXMgZnVuY3Rpb24gbXVzdAotLy8vIG5vdCB0aHJvdyBhbnl0aGluZywgc28geW91IG11c3Qgd3JhcCBtZW1vcnkgYWxsb2NhdGlvbiByb3V0aW5lcwotLy8vIChsaWtlIHN0cmluZzo6Zm9ybWF0LCBmb3IgaW5zdGFuY2UpIGluIGEgdHJ5e31jYXRjaCguLi4pe30gYmxvY2suCi0vLy8KLXZvaWQgZXhjZXB0aW9uOjppbmZvIChzdHJpbmcmIG1zZ2J1ZiwgY29uc3QgY2hhciopIGNvbnN0IHRocm93KCkKLXsKLSNpZiBQTEFURk9STV9BTkRST0lECi0gICAgbXNnYnVmLmZvcm1hdCAoIiVzIiwgd2hhdCgpKTsKLSNlbHNlIC8qICFQTEFURk9STV9BTkRST0lEICovCi0gICAgdHJ5IHsgbXNnYnVmLmZvcm1hdCAoIiVzIiwgd2hhdCgpKTsgfSBjYXRjaCAoLi4uKSB7IC8qIElnbm9yZSBhbGwgZXhjZXB0aW9ucyAqLyB9Ci0jZW5kaWYKLX0KLQotLy8vIFJlYWRzIHRoZSBleGNlcHRpb24gZnJvbSBzdHJlYW0gXHAgaXMuCi12b2lkIGV4Y2VwdGlvbjo6cmVhZCAoaXN0cmVhbSYgaXMpCi17Ci0gICAgdWludDMyX3Qgc3RtU2l6ZTsKLSAgICB4Zm10X3QgZm10OwotICAgIGlzID4+IGZtdCA+PiBzdG1TaXplID4+IG1fQmFja3RyYWNlOwotICAgIGFzc2VydCAoZm10ID09IG1fRm9ybWF0ICYmICJUaGUgc2F2ZWQgZXhjZXB0aW9uIGlzIG9mIGEgZGlmZmVyZW50IHR5cGUuIik7Ci0gICAgYXNzZXJ0IChzdG1TaXplIC0gZXhjZXB0aW9uOjpzdHJlYW1fc2l6ZSgpIDw9IGlzLnJlbWFpbmluZygpICYmICJUaGUgc2F2ZWQgZXhjZXB0aW9uIGRhdGEgaXMgY29ycnVwdC4iKTsKLSAgICBtX0Zvcm1hdCA9IGZtdDsKLX0KLQotLy8vIFdyaXRlcyB0aGUgZXhjZXB0aW9uIGludG8gc3RyZWFtIFxwIG9zIGFzIGFuIElGRiBjaHVuay4KLXZvaWQgZXhjZXB0aW9uOjp3cml0ZSAob3N0cmVhbSYgb3MpIGNvbnN0Ci17Ci0gICAgb3MgPDwgbV9Gb3JtYXQgPDwgdWludDMyX3Qoc3RyZWFtX3NpemUoKSkgPDwgbV9CYWNrdHJhY2U7Ci19Ci0KLS8vLyBXcml0ZXMgdGhlIGV4Y2VwdGlvbiBhcyB0ZXh0IGludG8gc3RyZWFtIFxwIG9zLgotdm9pZCBleGNlcHRpb246OnRleHRfd3JpdGUgKG9zdHJpbmdzdHJlYW0mIG9zKSBjb25zdAotewotI2lmICFQTEFURk9STV9BTkRST0lECi0gICAgdHJ5IHsKLSNlbmRpZgotCXN0cmluZyBidWY7Ci0JaW5mbyAoYnVmKTsKLQlvcyA8PCBidWY7Ci0jaWYgIVBMQVRGT1JNX0FORFJPSUQKLSAgICB9IGNhdGNoICguLi4pIHt9Ci0jZW5kaWYKLX0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vLyBJbml0aWFsaXplcyB0aGUgZW1wdHkgb2JqZWN0LiBccCBuQnl0ZXMgaXMgdGhlIHNpemUgb2YgdGhlIGF0dGVtcHRlZCBhbGxvY2F0aW9uLgotYmFkX2FsbG9jOjpiYWRfYWxsb2MgKHNpemVfdCBuQnl0ZXMpIHRocm93KCkKLTogdXN0bDo6ZXhjZXB0aW9uKCksCi0gIG1fbkJ5dGVzUmVxdWVzdGVkIChuQnl0ZXMpCi17Ci0gICAgc2V0X2Zvcm1hdCAoeGZtdF9CYWRBbGxvYyk7Ci19Ci0KLS8vLyBSZXR1cm5zIGEgZGVzY3JpcHRpdmUgZXJyb3IgbWVzc2FnZS4gZm10PSJmYWlsZWQgdG8gYWxsb2NhdGUgJWQgYnl0ZXMiCi12b2lkIGJhZF9hbGxvYzo6aW5mbyAoc3RyaW5nJiBtc2didWYsIGNvbnN0IGNoYXIqIGZtdCkgY29uc3QgdGhyb3coKQotewotICAgIGlmICghZm10KSBmbXQgPSAiZmFpbGVkIHRvIGFsbG9jYXRlICVkIGJ5dGVzIjsKLSNpZiBQTEFURk9STV9BTkRST0lECi0gICAgbXNnYnVmLmZvcm1hdCAoZm10LCBtX25CeXRlc1JlcXVlc3RlZCk7Ci0jZWxzZSAvKiAhUExBVEZPUk1fQU5EUk9JRCAqLwotICAgIHRyeSB7IG1zZ2J1Zi5mb3JtYXQgKGZtdCwgbV9uQnl0ZXNSZXF1ZXN0ZWQpOyB9IGNhdGNoICguLi4pIHt9Ci0jZW5kaWYKLX0KLQotLy8vIFJlYWRzIHRoZSBleGNlcHRpb24gZnJvbSBzdHJlYW0gXHAgaXMuCi12b2lkIGJhZF9hbGxvYzo6cmVhZCAoaXN0cmVhbSYgaXMpCi17Ci0gICAgdXN0bDo6ZXhjZXB0aW9uOjpyZWFkIChpcyk7Ci0gICAgaXMgPj4gbV9uQnl0ZXNSZXF1ZXN0ZWQ7Ci19Ci0KLS8vLyBXcml0ZXMgdGhlIGV4Y2VwdGlvbiBpbnRvIHN0cmVhbSBccCBvcy4KLXZvaWQgYmFkX2FsbG9jOjp3cml0ZSAob3N0cmVhbSYgb3MpIGNvbnN0Ci17Ci0gICAgdXN0bDo6ZXhjZXB0aW9uOjp3cml0ZSAob3MpOwotICAgIG9zIDw8IG1fbkJ5dGVzUmVxdWVzdGVkOwotfQotCi0vLy8gUmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgd3JpdHRlbiBleGNlcHRpb24uCi1zaXplX3QgYmFkX2FsbG9jOjpzdHJlYW1fc2l6ZSAodm9pZCkgY29uc3QKLXsKLSAgICByZXR1cm4gKHVzdGw6OmV4Y2VwdGlvbjo6c3RyZWFtX3NpemUoKSArIHN0cmVhbV9zaXplX29mKG1fbkJ5dGVzUmVxdWVzdGVkKSk7Ci19Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLy8gSW5pdGlhbGl6ZXMgdGhlIGVtcHR5IG9iamVjdC4gXHAgb3BlcmF0aW9uIGlzIHRoZSBmdW5jdGlvbiB0aGF0IHJldHVybmVkIHRoZSBlcnJvciBjb2RlLgotbGliY19leGNlcHRpb246OmxpYmNfZXhjZXB0aW9uIChjb25zdCBjaGFyKiBvcGVyYXRpb24pIHRocm93KCkKLTogZXhjZXB0aW9uKCksCi0gIG1fRXJybm8gKGVycm5vKSwKLSAgbV9PcGVyYXRpb24gKG9wZXJhdGlvbikKLXsKLSAgICBzZXRfZm9ybWF0ICh4Zm10X0xpYmNFeGNlcHRpb24pOwotfQotCi0vLy8gQ29waWVzIG9iamVjdCBccCB2LgotbGliY19leGNlcHRpb246OmxpYmNfZXhjZXB0aW9uIChjb25zdCBsaWJjX2V4Y2VwdGlvbiYgdikgdGhyb3coKQotOiBleGNlcHRpb24gKHYpLAotICBtX0Vycm5vICh2Lm1fRXJybm8pLAotICBtX09wZXJhdGlvbiAodi5tX09wZXJhdGlvbikKLXsKLX0KLQotLy8vIENvcGllcyBvYmplY3QgXHAgdi4KLWNvbnN0IGxpYmNfZXhjZXB0aW9uJiBsaWJjX2V4Y2VwdGlvbjo6b3BlcmF0b3I9IChjb25zdCBsaWJjX2V4Y2VwdGlvbiYgdikKLXsKLSAgICBtX0Vycm5vID0gdi5tX0Vycm5vOwotICAgIG1fT3BlcmF0aW9uID0gdi5tX09wZXJhdGlvbjsKLSAgICByZXR1cm4gKCp0aGlzKTsKLX0KLQotLy8vIFJldHVybnMgYSBkZXNjcmlwdGl2ZSBlcnJvciBtZXNzYWdlLiBmbXQ9IiVzOiAlbSIKLXZvaWQgbGliY19leGNlcHRpb246OmluZm8gKHN0cmluZyYgbXNnYnVmLCBjb25zdCBjaGFyKiBmbXQpIGNvbnN0IHRocm93KCkKLXsKLSAgICBpZiAoIWZtdCkgZm10ID0gIiVzOiAlbSI7Ci0jaWYgUExBVEZPUk1fQU5EUk9JRAotICAgIG1zZ2J1Zi5mb3JtYXQgKGZtdCwgbV9PcGVyYXRpb24sIG1fRXJybm8sIG1fRXJybm8pOwotI2Vsc2UgLyogIVBMQVRGT1JNX0FORFJPSUQgKi8KLSAgICB0cnkgeyBtc2didWYuZm9ybWF0IChmbXQsIG1fT3BlcmF0aW9uLCBtX0Vycm5vLCBtX0Vycm5vKTsgfSBjYXRjaCAoLi4uKSB7fQotI2VuZGlmCi19Ci0KLS8vLyBSZWFkcyB0aGUgZXhjZXB0aW9uIGZyb20gc3RyZWFtIFxwIGlzLgotdm9pZCBsaWJjX2V4Y2VwdGlvbjo6cmVhZCAoaXN0cmVhbSYgaXMpCi17Ci0gICAgZXhjZXB0aW9uOjpyZWFkIChpcyk7Ci0gICAgaXMgPj4gbV9FcnJubyA+PiBtX09wZXJhdGlvbjsKLX0KLQotLy8vIFdyaXRlcyB0aGUgZXhjZXB0aW9uIGludG8gc3RyZWFtIFxwIG9zLgotdm9pZCBsaWJjX2V4Y2VwdGlvbjo6d3JpdGUgKG9zdHJlYW0mIG9zKSBjb25zdAotewotICAgIGV4Y2VwdGlvbjo6d3JpdGUgKG9zKTsKLSAgICBvcyA8PCBtX0Vycm5vIDw8IG1fT3BlcmF0aW9uOwotfQotCi0vLy8gUmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgd3JpdHRlbiBleGNlcHRpb24uCi1zaXplX3QgbGliY19leGNlcHRpb246OnN0cmVhbV9zaXplICh2b2lkKSBjb25zdAotewotICAgIHJldHVybiAoZXhjZXB0aW9uOjpzdHJlYW1fc2l6ZSgpICsKLQkgICAgc3RyZWFtX3NpemVfb2YobV9FcnJubykgKwotCSAgICBzdHJlYW1fc2l6ZV9vZihtX09wZXJhdGlvbikpOwotfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8vIEluaXRpYWxpemVzIHRoZSBlbXB0eSBvYmplY3QuIFxwIG9wZXJhdGlvbiBpcyB0aGUgZnVuY3Rpb24gdGhhdCByZXR1cm5lZCB0aGUgZXJyb3IgY29kZS4KLWZpbGVfZXhjZXB0aW9uOjpmaWxlX2V4Y2VwdGlvbiAoY29uc3QgY2hhciogb3BlcmF0aW9uLCBjb25zdCBjaGFyKiBmaWxlbmFtZSkgdGhyb3coKQotOiBsaWJjX2V4Y2VwdGlvbiAob3BlcmF0aW9uKQotewotICAgIG1lbXNldCAobV9GaWxlbmFtZSwgMCwgVmVjdG9yU2l6ZShtX0ZpbGVuYW1lKSk7Ci0gICAgc2V0X2Zvcm1hdCAoeGZtdF9GaWxlRXhjZXB0aW9uKTsKLSAgICBpZiAoZmlsZW5hbWUpIHsKLQlzdHJuY3B5IChtX0ZpbGVuYW1lLCBmaWxlbmFtZSwgVmVjdG9yU2l6ZShtX0ZpbGVuYW1lKSk7Ci0JbV9GaWxlbmFtZSBbVmVjdG9yU2l6ZShtX0ZpbGVuYW1lKSAtIDFdID0gMDsKLSAgICB9Ci19Ci0KLS8vLyBSZXR1cm5zIGEgZGVzY3JpcHRpdmUgZXJyb3IgbWVzc2FnZS4gZm10PSIlcyAlczogJW0iCi12b2lkIGZpbGVfZXhjZXB0aW9uOjppbmZvIChzdHJpbmcmIG1zZ2J1ZiwgY29uc3QgY2hhciogZm10KSBjb25zdCB0aHJvdygpCi17Ci0gICAgaWYgKCFmbXQpIGZtdCA9ICIlcyAlczogJW0iOwotI2lmIFBMQVRGT1JNX0FORFJPSUQKLSAgICBtc2didWYuZm9ybWF0IChmbXQsIG1fT3BlcmF0aW9uLCBtX0ZpbGVuYW1lLCBtX0Vycm5vLCBtX0Vycm5vKTsKLSNlbHNlIC8qICFQTEFURk9STV9BTkRST0lEICovCi0gICAgdHJ5IHsgbXNnYnVmLmZvcm1hdCAoZm10LCBtX09wZXJhdGlvbiwgbV9GaWxlbmFtZSwgbV9FcnJubywgbV9FcnJubyk7IH0gY2F0Y2ggKC4uLikge30KLSNlbmRpZgotfQotCi0vLy8gUmVhZHMgdGhlIGV4Y2VwdGlvbiBmcm9tIHN0cmVhbSBccCBpcy4KLXZvaWQgZmlsZV9leGNlcHRpb246OnJlYWQgKGlzdHJlYW0mIGlzKQotewotICAgIGxpYmNfZXhjZXB0aW9uOjpyZWFkIChpcyk7Ci0gICAgc3RyaW5nIGZpbGVuYW1lOwotICAgIGlzID4+IGZpbGVuYW1lOwotICAgIGlzLmFsaWduICg4KTsKLSAgICBmaWxlbmFtZS5jb3B5dG8gKGZpbGVuYW1lLCBWZWN0b3JTaXplKG1fRmlsZW5hbWUpKTsKLX0KLQotLy8vIFdyaXRlcyB0aGUgZXhjZXB0aW9uIGludG8gc3RyZWFtIFxwIG9zLgotdm9pZCBmaWxlX2V4Y2VwdGlvbjo6d3JpdGUgKG9zdHJlYW0mIG9zKSBjb25zdAotewotICAgIGxpYmNfZXhjZXB0aW9uOjp3cml0ZSAob3MpOwotICAgIG9zIDw8IHN0cmluZyAobV9GaWxlbmFtZSk7Ci0gICAgb3MuYWxpZ24gKDgpOwotfQotCi0vLy8gUmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgd3JpdHRlbiBleGNlcHRpb24uCi1zaXplX3QgZmlsZV9leGNlcHRpb246OnN0cmVhbV9zaXplICh2b2lkKSBjb25zdAotewotICAgIHJldHVybiAobGliY19leGNlcHRpb246OnN0cmVhbV9zaXplKCkgKwotCSAgICBBbGlnbiAoc3RyZWFtX3NpemVfb2YgKHN0cmluZyAobV9GaWxlbmFtZSkpLCA4KSk7Ci19Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLy8gXGJyaWVmIFVzZXMgQysrIEFCSSBjYWxsLCBpZiBhdmFpbGFibGUgdG8gZGVtYW5nbGUgdGhlIGNvbnRlbnRzIG9mIFxwIGJ1Zi4KLS8vLwotLy8vIFRoZSByZXN1bHQgaXMgd3JpdHRlbiB0byBccCBidWYsIHdpdGggdGhlIG1heGltdW0gc2l6ZSBvZiBccCBidWZTaXplLCBhbmQKLS8vLyBpcyB6ZXJvLXRlcm1pbmF0ZWQuIFRoZSByZXR1cm4gdmFsdWUgaXMgXHAgYnVmLgotLy8vCi1jb25zdCBjaGFyKiBkZW1hbmdsZV90eXBlX25hbWUgKGNoYXIqIGJ1Ziwgc2l6ZV90IGJ1ZlNpemUsIHNpemVfdCogcGRtU2l6ZSkKLXsKLSAgICBzaXplX3QgYmwgPSBzdHJsZW4gKGJ1Zik7Ci0jaWYgX19HTlVDX18gPj0gMyAmJiAhUExBVEZPUk1fQU5EUk9JRAotICAgIGNoYXIgZG1uYW1lIFsyNTZdOwotICAgIHNpemVfdCBzeiA9IFZlY3RvclNpemUoZG1uYW1lKTsKLSAgICBpbnQgYkZhaWxlZDsKLSAgICBhYmk6Ol9fY3hhX2RlbWFuZ2xlIChidWYsIGRtbmFtZSwgJnN6LCAmYkZhaWxlZCk7Ci0gICAgaWYgKCFiRmFpbGVkKSB7Ci0JYmwgPSBtaW4gKHN0cmxlbiAoZG1uYW1lKSwgYnVmU2l6ZSAtIDEpOwotCW1lbWNweSAoYnVmLCBkbW5hbWUsIGJsKTsKLQlidWZbYmxdID0gMDsKLSAgICB9Ci0jZWxzZQotICAgIGJsID0gbWluIChibCwgYnVmU2l6ZSk7Ci0jZW5kaWYKLSAgICBpZiAocGRtU2l6ZSkKLQkqcGRtU2l6ZSA9IGJsOwotICAgIHJldHVybiAoYnVmKTsKLX0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vLyBJbml0aWFsaXplcyB0aGUgZW1wdHkgb2JqZWN0LiBccCBvcGVyYXRpb24gaXMgdGhlIGZ1bmN0aW9uIHRoYXQgcmV0dXJuZWQgdGhlIGVycm9yIGNvZGUuCi1zdHJlYW1fYm91bmRzX2V4Y2VwdGlvbjo6c3RyZWFtX2JvdW5kc19leGNlcHRpb24gKGNvbnN0IGNoYXIqIG9wZXJhdGlvbiwgY29uc3QgY2hhciogdHlwZSwgdW9mZl90IG9mZnNldCwgc2l6ZV90IGV4cGVjdGVkLCBzaXplX3QgcmVtYWluaW5nKSB0aHJvdygpCi06IGxpYmNfZXhjZXB0aW9uIChvcGVyYXRpb24pLAotICBtX1R5cGVOYW1lICh0eXBlKSwKLSAgbV9PZmZzZXQgKG9mZnNldCksCi0gIG1fRXhwZWN0ZWQgKGV4cGVjdGVkKSwKLSAgbV9SZW1haW5pbmcgKHJlbWFpbmluZykKLXsKLSAgICBzZXRfZm9ybWF0ICh4Zm10X1N0cmVhbUJvdW5kc0V4Y2VwdGlvbik7Ci19Ci0KLS8vLyBSZXR1cm5zIGEgZGVzY3JpcHRpdmUgZXJyb3IgbWVzc2FnZS4gZm10PSIlcyBzdHJlYW0gJXM6IEAldTogZXhwZWN0ZWQgJXUsIGF2YWlsYWJsZSAldSI7Ci12b2lkIHN0cmVhbV9ib3VuZHNfZXhjZXB0aW9uOjppbmZvIChzdHJpbmcmIG1zZ2J1ZiwgY29uc3QgY2hhciogZm10KSBjb25zdCB0aHJvdygpCi17Ci0gICAgY2hhciB0eXBlTmFtZSBbMjU2XTsKLSAgICBzdHJuY3B5ICh0eXBlTmFtZSwgbV9UeXBlTmFtZSwgVmVjdG9yU2l6ZSh0eXBlTmFtZSkpOwotICAgIHR5cGVOYW1lW1ZlY3RvclNpemUodHlwZU5hbWUpLTFdID0gMDsKLSAgICBpZiAoIWZtdCkgZm10ID0gIiVzIHN0cmVhbSAlczogQDB4JVg6IG5lZWQgJXUgYnl0ZXMsIGhhdmUgJXUiOwotI2lmIFBMQVRGT1JNX0FORFJPSUQKLSAgICBtc2didWYuZm9ybWF0IChmbXQsIGRlbWFuZ2xlX3R5cGVfbmFtZSAoVmVjdG9yQmxvY2sodHlwZU5hbWUpKSwgbV9PcGVyYXRpb24sIG1fT2Zmc2V0LCBtX0V4cGVjdGVkLCBtX1JlbWFpbmluZyk7Ci0jZWxzZSAvKiAhUExBVEZPUk1fQU5EUk9JRCAqLwotICAgIHRyeSB7IG1zZ2J1Zi5mb3JtYXQgKGZtdCwgZGVtYW5nbGVfdHlwZV9uYW1lIChWZWN0b3JCbG9jayh0eXBlTmFtZSkpLCBtX09wZXJhdGlvbiwgbV9PZmZzZXQsIG1fRXhwZWN0ZWQsIG1fUmVtYWluaW5nKTsgfSBjYXRjaCAoLi4uKSB7fQotI2VuZGlmCi19Ci0KLS8vLyBSZWFkcyB0aGUgZXhjZXB0aW9uIGZyb20gc3RyZWFtIFxwIGlzLgotdm9pZCBzdHJlYW1fYm91bmRzX2V4Y2VwdGlvbjo6cmVhZCAoaXN0cmVhbSYgaXMpCi17Ci0gICAgbGliY19leGNlcHRpb246OnJlYWQgKGlzKTsKLSAgICBpcyA+PiBtX1R5cGVOYW1lID4+IG1fT2Zmc2V0ID4+IG1fRXhwZWN0ZWQgPj4gbV9SZW1haW5pbmc7Ci19Ci0KLS8vLyBXcml0ZXMgdGhlIGV4Y2VwdGlvbiBpbnRvIHN0cmVhbSBccCBvcy4KLXZvaWQgc3RyZWFtX2JvdW5kc19leGNlcHRpb246OndyaXRlIChvc3RyZWFtJiBvcykgY29uc3QKLXsKLSAgICBsaWJjX2V4Y2VwdGlvbjo6d3JpdGUgKG9zKTsKLSAgICBvcyA8PCBtX1R5cGVOYW1lIDw8IG1fT2Zmc2V0IDw8IG1fRXhwZWN0ZWQgPDwgbV9SZW1haW5pbmc7Ci19Ci0KLS8vLyBSZXR1cm5zIHRoZSBzaXplIG9mIHRoZSB3cml0dGVuIGV4Y2VwdGlvbi4KLXNpemVfdCBzdHJlYW1fYm91bmRzX2V4Y2VwdGlvbjo6c3RyZWFtX3NpemUgKHZvaWQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIChsaWJjX2V4Y2VwdGlvbjo6c3RyZWFtX3NpemUoKSArCi0JICAgIHN0cmVhbV9zaXplX29mKG1fVHlwZU5hbWUpICsKLQkgICAgc3RyZWFtX3NpemVfb2YobV9PZmZzZXQpICsKLQkgICAgc3RyZWFtX3NpemVfb2YobV9FeHBlY3RlZCkgKwotCSAgICBzdHJlYW1fc2l6ZV9vZihtX1JlbWFpbmluZykpOwotfQotCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VleGNlcHRpb24uaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VleGNlcHRpb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2U5YTE3OS4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91ZXhjZXB0aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxOTQgKzAsMCBAQAotLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHVzdGwgbGlicmFyeSwgYW4gU1RMIGltcGxlbWVudGF0aW9uLgotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwNSBieSBNaWtlIFNoYXJvdiA8bXNoYXJvdkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0vLyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgotLy8KLS8vIHVleGNlcHRpb24uaAotLy8KLS8vIFRoaXMgZmlsZSBjb250YWlucyBzdHVmZiBmcm9tIFw8ZXhjZXB0aW9uXD4uCi0vLyBUaGUgc3RhbmRhcmQgQysrIGhlYWRlcnMgYXJlIGR1cGxpY2F0ZWQgYmVjYXVzZSB1U1RMIGlzIGludGVuZGVkCi0vLyB0byBjb21wbGV0ZWx5IHJlcGxhY2UgYWxsIEMrKyBzdGFuZGFyZCBsaWJyYXJ5IGZ1bmN0aW9ucy4KLS8vCi0KLSNpZm5kZWYgVUVYQ0VQVElPTl9IXzE4REUzRUY1NUM0RjAwNjczMjY4RjBENjY1NDZBRjVECi0jZGVmaW5lIFVFWENFUFRJT05fSF8xOERFM0VGNTVDNEYwMDY3MzI2OEYwRDY2NTQ2QUY1RAotCi0jaW5jbHVkZSAidXR5cGVzLmgiCi0jaWZuZGVmIFdJVEhPVVRfTElCU1REQ1BQCi0gICAgI2luY2x1ZGUgPGV4Y2VwdGlvbj4KLSAgICAjaW5jbHVkZSA8bmV3PgotI2VuZGlmCi0jaW5jbHVkZSAiYmt0cmFjZS5oIgotCi0jaWZkZWYgV0lUSE9VVF9MSUJTVERDUFAJLy8gVGhpcyBjb2RlIGlzIGNvcGllZCBmcm9tIDxleGNlcHRpb24+Ci1uYW1lc3BhY2Ugc3RkIHsKLS8vLyBJZiB5b3Ugd3JpdGUgYSByZXBsYWNlbWVudCB0ZXJtaW5hdGUgaGFuZGxlciwgaXQgbXVzdCBiZSBvZiB0aGlzIHR5cGUuCi10eXBlZGVmIHZvaWQgKCp0ZXJtaW5hdGVfaGFuZGxlcikgKHZvaWQpOwotLy8vIElmIHlvdSB3cml0ZSBhIHJlcGxhY2VtZW50IHVuZXhwZWN0ZWQgaGFuZGxlciwgaXQgbXVzdCBiZSBvZiB0aGlzIHR5cGUuCi10eXBlZGVmIHZvaWQgKCp1bmV4cGVjdGVkX2hhbmRsZXIpICh2b2lkKTsKLS8vLyBUYWtlcyBhIG5ldyBoYW5kbGVyIGZ1bmN0aW9uIGFzIGFuIGFyZ3VtZW50LCByZXR1cm5zIHRoZSBvbGQgZnVuY3Rpb24uCi10ZXJtaW5hdGVfaGFuZGxlciBzZXRfdGVybWluYXRlICh0ZXJtaW5hdGVfaGFuZGxlciBwSGFuZGxlcikgdGhyb3coKTsKLS8vLyBUaGUgcnVudGltZSB3aWxsIGNhbGwgdGhpcyBmdW5jdGlvbiBpZiBleGNlcHRpb24gaGFuZGxpbmcgbXVzdCBiZQotLy8vIGFiYW5kb25lZCBmb3IgYW55IHJlYXNvbi4gIEl0IGNhbiBhbHNvIGJlIGNhbGxlZCBieSB0aGUgdXNlci4KLXZvaWQgdGVybWluYXRlICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7Ci0vLy8gVGFrZXMgYSBuZXcgaGFuZGxlciBmdW5jdGlvbiBhcyBhbiBhcmd1bWVudCwgcmV0dXJucyB0aGUgb2xkIGZ1bmN0aW9uLgotdW5leHBlY3RlZF9oYW5kbGVyIHNldF91bmV4cGVjdGVkICh1bmV4cGVjdGVkX2hhbmRsZXIgcEhhbmRsZXIpIHRocm93KCk7Ci0vLy8gVGhlIHJ1bnRpbWUgd2lsbCBjYWxsIHRoaXMgZnVuY3Rpb24gaWYgYW4gZXhjZXB0aW9uIGlzIHRocm93biB3aGljaAotLy8vIHZpb2xhdGVzIHRoZSBmdW5jdGlvbidzIGV4Y2VwdGlvbiBzcGVjaWZpY2F0aW9uLgotdm9pZCB1bmV4cGVjdGVkICh2b2lkKSBfX2F0dHJpYnV0ZV9fICgoX19ub3JldHVybl9fKSk7Ci0vLy8gUmV0dXJucyB0cnVlIHdoZW4gdGhlIGNhdWdodCBleGNlcHRpb24gdmlvbGF0ZXMgdGhlIHRocm93IHNwZWNpZmljYXRpb24uCi1ib29sIHVuY2F1Z2h0X2V4Y2VwdGlvbigpIHRocm93KCk7Ci19IC8vIG5hbWVzcGFjZSBzdGQKLSNlbmRpZgotCi1uYW1lc3BhY2UgdXN0bCB7Ci0KLWNsYXNzIHN0cmluZzsKLQotdHlwZWRlZiB1aW50MzJfdAl4Zm10X3Q7Ci0KLWVudW0gewotICAgIHhmbXRfRXhjZXB0aW9uLAotICAgIHhmbXRfQmFkQWxsb2MsCi0gICAgeGZtdF9MaWJjRXhjZXB0aW9uCQk9IDEyLAotICAgIHhmbXRfRmlsZUV4Y2VwdGlvbgkJPSAxMywKLSAgICB4Zm10X1N0cmVhbUJvdW5kc0V4Y2VwdGlvbgk9IDE0Ci19OwotCi0vLy8gXGNsYXNzIGV4Y2VwdGlvbiB1ZXhjZXB0aW9uLmggdXN0bC5oCi0vLy8gXGluZ3JvdXAgRXhjZXB0aW9ucwotLy8vCi0vLy8gXGJyaWVmIEJhc2UgY2xhc3MgZm9yIGV4Y2VwdGlvbnMsIGVxdWl2YWxlbnQgdG8gc3RkOjpleGNlcHRpb24uCi0vLy8KLSNpZmRlZiBXSVRIT1VUX0xJQlNURENQUAotY2xhc3MgZXhjZXB0aW9uIHsKLSNlbHNlCi1jbGFzcyBleGNlcHRpb24gOiBwdWJsaWMgc3RkOjpleGNlcHRpb24gewotI2VuZGlmCi1wdWJsaWM6Ci0gICAgdHlwZWRlZiBjb25zdCBDQmFja3RyYWNlJiByY2JrdHJhY2VfdDsKLXB1YmxpYzoKLSAgICBpbmxpbmUJCWV4Y2VwdGlvbiAodm9pZCkgdGhyb3coKSA6IG1fRm9ybWF0ICh4Zm10X0V4Y2VwdGlvbikge30KLSAgICBpbmxpbmUgdmlydHVhbCAgICAgfmV4Y2VwdGlvbiAodm9pZCkgdGhyb3coKSB7fQotICAgIGlubGluZSB2aXJ0dWFsIGNvbnN0IGNoYXIqIHdoYXQgKHZvaWQpIGNvbnN0IHRocm93KCkgeyByZXR1cm4gKCJlcnJvciIpOyB9Ci0gICAgdmlydHVhbCB2b2lkCWluZm8gKHN0cmluZyYgbXNnYnVmLCBjb25zdCBjaGFyKiBmbXQgPSBOVUxMKSBjb25zdCB0aHJvdygpOwotICAgIHZpcnR1YWwgdm9pZAlyZWFkIChpc3RyZWFtJiBpcyk7Ci0gICAgdmlydHVhbCB2b2lkCXdyaXRlIChvc3RyZWFtJiBvcykgY29uc3Q7Ci0gICAgdm9pZAkJdGV4dF93cml0ZSAob3N0cmluZ3N0cmVhbSYgb3MpIGNvbnN0OwotICAgIGlubGluZSB2aXJ0dWFsIHNpemVfdCBzdHJlYW1fc2l6ZSAodm9pZCkgY29uc3QgeyByZXR1cm4gKHNpemVvZihtX0Zvcm1hdCkgKyBzaXplb2YodWludDMyX3QpICsgbV9CYWNrdHJhY2Uuc3RyZWFtX3NpemUoKSk7IH0KLSAgICAvLy8gRm9ybWF0IG9mIHRoZSBleGNlcHRpb24gaXMgdXNlZCB0byBsb29rdXAgZXhjZXB0aW9uOjppbmZvIGZvcm1hdCBzdHJpbmcuCi0gICAgLy8vIEFub3RoZXIgY29tbW9uIHVzZSBpcyB0aGUgaW5zdGFudGlhdGlvbiBvZiBzZXJpYWxpemVkIGV4Y2VwdGlvbnMsIHVzZWQKLSAgICAvLy8gYnkgdGhlIGVycm9yIGhhbmRsZXIgbm9kZSBjaGFpbiB0byB0cm91Ymxlc2hvb3Qgc3BlY2lmaWMgZXJyb3JzLgotICAgIGlubGluZSB4Zm10X3QJZm9ybWF0ICh2b2lkKSBjb25zdAl7IHJldHVybiAobV9Gb3JtYXQpOyB9Ci0gICAgaW5saW5lIHJjYmt0cmFjZV90CWJhY2t0cmFjZSAodm9pZCkgY29uc3QJeyByZXR1cm4gKG1fQmFja3RyYWNlKTsgfQotcHJvdGVjdGVkOgotICAgIGlubGluZSB2b2lkCQlzZXRfZm9ybWF0ICh4Zm10X3QgZm10KSB7IG1fRm9ybWF0ID0gZm10OyB9Ci1wcml2YXRlOgotICAgIENCYWNrdHJhY2UJCW1fQmFja3RyYWNlOwkvLy88IEJhY2t0cmFjZSBvZiB0aGUgdGhyb3cgcG9pbnQuCi0gICAgeGZtdF90CQltX0Zvcm1hdDsJLy8vPCBGb3JtYXQgb2YgdGhlIGV4Y2VwdGlvbidzIGRhdGEuCi19OwotCi0vLy8gXGNsYXNzIGJhZF9jYXN0IHVleGNlcHRpb24uaCB1c3RsLmgKLS8vLyBcaW5ncm91cCBFeGNlcHRpb25zCi0vLy8KLS8vLyBcYnJpZWYgVGhyb3duIHRvIGluZGljYXRlIGEgYmFkIGR5bmFtaWNfY2FzdCB1c2FnZS4KLS8vLwotY2xhc3MgYmFkX2Nhc3QgOiBwdWJsaWMgZXhjZXB0aW9uIHsKLXB1YmxpYzoKLSAgICBpbmxpbmUgZXhwbGljaXQJCWJhZF9jYXN0ICh2b2lkKSB0aHJvdygpIDogZXhjZXB0aW9uKCkge30KLSAgICBpbmxpbmUgdmlydHVhbCBjb25zdCBjaGFyKgl3aGF0ICh2b2lkKSBjb25zdCB0aHJvdygpIHsgcmV0dXJuICgiYmFkIGNhc3QiKTsgfQotfTsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vLyBcY2xhc3MgYmFkX2FsbG9jIHVleGNlcHRpb24uaCB1c3RsLmgKLS8vLyBcaW5ncm91cCBFeGNlcHRpb25zCi0vLy8KLS8vLyBcYnJpZWYgRXhjZXB0aW9uIHRocm93biBvbiBtZW1vcnkgYWxsb2NhdGlvbiBmYWlsdXJlIGJ5IG1lbWJsb2NrOjpyZXNlcnZlLgotLy8vCi0jaWZkZWYgV0lUSE9VVF9MSUJTVERDUFAKLWNsYXNzIGJhZF9hbGxvYyA6IHB1YmxpYyBleGNlcHRpb24gewotI2Vsc2UKLWNsYXNzIGJhZF9hbGxvYyA6IHB1YmxpYyBzdGQ6OmJhZF9hbGxvYywgcHVibGljIGV4Y2VwdGlvbiB7Ci0jZW5kaWYKLXB1YmxpYzoKLSAgICBleHBsaWNpdAkJYmFkX2FsbG9jIChzaXplX3QgbkJ5dGVzID0gMCkgdGhyb3coKTsKLSAgICBpbmxpbmUgdmlydHVhbCBjb25zdCBjaGFyKgl3aGF0ICh2b2lkKSBjb25zdCB0aHJvdygpIHsgcmV0dXJuICgibWVtb3J5IGFsbG9jYXRpb24gZmFpbGVkIik7IH0KLSAgICB2aXJ0dWFsIHZvaWQJaW5mbyAoc3RyaW5nJiBtc2didWYsIGNvbnN0IGNoYXIqIGZtdCA9IE5VTEwpIGNvbnN0IHRocm93KCk7Ci0gICAgdmlydHVhbCB2b2lkCXJlYWQgKGlzdHJlYW0mIGlzKTsKLSAgICB2aXJ0dWFsIHZvaWQJd3JpdGUgKG9zdHJlYW0mIG9zKSBjb25zdDsKLSAgICB2aXJ0dWFsIHNpemVfdAlzdHJlYW1fc2l6ZSAodm9pZCkgY29uc3Q7Ci1wcm90ZWN0ZWQ6Ci0gICAgc2l6ZV90CQltX25CeXRlc1JlcXVlc3RlZDsJLy8vPCBOdW1iZXIgb2YgYnl0ZXMgcmVxdWVzdGVkIGJ5IHRoZSBmYWlsZWQgYWxsb2NhdGlvbi4KLX07Ci0KLS8vLyBcY2xhc3MgbGliY19leGNlcHRpb24gdWV4Y2VwdGlvbi5oIHVzdGwuaAotLy8vIFxpbmdyb3VwIEV4Y2VwdGlvbnMKLS8vLwotLy8vIFxicmllZiBUaHJvd24gd2hlbiBhIGxpYmMgZnVuY3Rpb24gcmV0dXJucyBhbiBlcnJvci4KLS8vLwotLy8vIENvbnRhaW5zIGFuIGVycm5vIGFuZCBkZXNjcmlwdGlvbi4gVGhpcyBpcyBhIHVTVEwgZXh0ZW5zaW9uLgotLy8vCi1jbGFzcyBsaWJjX2V4Y2VwdGlvbiA6IHB1YmxpYyBleGNlcHRpb24gewotcHVibGljOgotICAgIGV4cGxpY2l0CQlsaWJjX2V4Y2VwdGlvbiAoY29uc3QgY2hhciogb3BlcmF0aW9uKSB0aHJvdygpOwotCQkJbGliY19leGNlcHRpb24gKGNvbnN0IGxpYmNfZXhjZXB0aW9uJiB2KSB0aHJvdygpOwotICAgIGNvbnN0IGxpYmNfZXhjZXB0aW9uJiBvcGVyYXRvcj0gKGNvbnN0IGxpYmNfZXhjZXB0aW9uJiB2KTsKLSAgICBpbmxpbmUgdmlydHVhbCBjb25zdCBjaGFyKgl3aGF0ICh2b2lkKSBjb25zdCB0aHJvdygpIHsgcmV0dXJuICgibGliYyBmdW5jdGlvbiBmYWlsZWQiKTsgfQotICAgIHZpcnR1YWwgdm9pZAlpbmZvIChzdHJpbmcmIG1zZ2J1ZiwgY29uc3QgY2hhciogZm10ID0gTlVMTCkgY29uc3QgdGhyb3coKTsKLSAgICB2aXJ0dWFsIHZvaWQJcmVhZCAoaXN0cmVhbSYgaXMpOwotICAgIHZpcnR1YWwgdm9pZAl3cml0ZSAob3N0cmVhbSYgb3MpIGNvbnN0OwotICAgIHZpcnR1YWwgc2l6ZV90CXN0cmVhbV9zaXplICh2b2lkKSBjb25zdDsKLXByb3RlY3RlZDoKLSAgICBpbnRwdHJfdAkJbV9FcnJubzsJCS8vLzwgRXJyb3IgY29kZSByZXR1cm5lZCBieSB0aGUgZmFpbGVkIG9wZXJhdGlvbi4KLSAgICBjb25zdCBjaGFyKgkJbV9PcGVyYXRpb247CQkvLy88IE5hbWUgb2YgdGhlIGZhaWxlZCBvcGVyYXRpb24uCi19OwotCi0vLy8gXGNsYXNzIGZpbGVfZXhjZXB0aW9uIHVleGNlcHRpb24uaCB1c3RsLmgKLS8vLyBcaW5ncm91cCBFeGNlcHRpb25zCi0vLy8KLS8vLyBcYnJpZWYgRmlsZS1yZWxhdGVkIGV4Y2VwdGlvbnMuCi0vLy8KLS8vLyBDb250YWlucyB0aGUgZmlsZSBuYW1lLiBUaGlzIGlzIGEgdVNUTCBleHRlbnNpb24uCi0vLy8KLWNsYXNzIGZpbGVfZXhjZXB0aW9uIDogcHVibGljIGxpYmNfZXhjZXB0aW9uIHsKLXB1YmxpYzoKLQkJCWZpbGVfZXhjZXB0aW9uIChjb25zdCBjaGFyKiBvcGVyYXRpb24sIGNvbnN0IGNoYXIqIGZpbGVuYW1lKSB0aHJvdygpOwotICAgIGlubGluZSB2aXJ0dWFsIGNvbnN0IGNoYXIqIHdoYXQgKHZvaWQpIGNvbnN0IHRocm93KCkgeyByZXR1cm4gKCJmaWxlIGVycm9yIik7IH0KLSAgICB2aXJ0dWFsIHZvaWQJaW5mbyAoc3RyaW5nJiBtc2didWYsIGNvbnN0IGNoYXIqIGZtdCA9IE5VTEwpIGNvbnN0IHRocm93KCk7Ci0gICAgdmlydHVhbCB2b2lkCXJlYWQgKGlzdHJlYW0mIGlzKTsKLSAgICB2aXJ0dWFsIHZvaWQJd3JpdGUgKG9zdHJlYW0mIG9zKSBjb25zdDsKLSAgICB2aXJ0dWFsIHNpemVfdAlzdHJlYW1fc2l6ZSAodm9pZCkgY29uc3Q7Ci1wcm90ZWN0ZWQ6Ci0gICAgY2hhcgkJbV9GaWxlbmFtZSBbUEFUSF9NQVhdOwkvLy88IE5hbWUgb2YgdGhlIGZpbGUgY2F1c2luZyB0aGUgZXJyb3IuCi19OwotCi0vLy8gXGNsYXNzIHN0cmVhbV9ib3VuZHNfZXhjZXB0aW9uIHVleGNlcHRpb24uaCB1c3RsLmgKLS8vLyBcaW5ncm91cCBFeGNlcHRpb25zCi0vLy8KLS8vLyBcYnJpZWYgU3RyZWFtIGJvdW5kcyBjaGVja2luZy4KLS8vLwotLy8vIE9ubHkgdGhyb3duIGluIGRlYnVnIGJ1aWxkcyB1bmxlc3MgeW91IHNheSBvdGhlcndpc2UgaW4gY29uZmlnLmgKLS8vLyBUaGlzIGlzIGEgdVNUTCBleHRlbnNpb24uCi0vLy8KLWNsYXNzIHN0cmVhbV9ib3VuZHNfZXhjZXB0aW9uIDogcHVibGljIGxpYmNfZXhjZXB0aW9uIHsKLXB1YmxpYzoKLQkJCXN0cmVhbV9ib3VuZHNfZXhjZXB0aW9uIChjb25zdCBjaGFyKiBvcGVyYXRpb24sIGNvbnN0IGNoYXIqIHR5cGUsIHVvZmZfdCBvZmZzZXQsIHNpemVfdCBleHBlY3RlZCwgc2l6ZV90IHJlbWFpbmluZykgdGhyb3coKTsKLSAgICBpbmxpbmUgdmlydHVhbCBjb25zdCBjaGFyKgl3aGF0ICh2b2lkKSBjb25zdCB0aHJvdygpIHsgcmV0dXJuICgic3RyZWFtIGJvdW5kcyBleGNlcHRpb24iKTsgfQotICAgIHZpcnR1YWwgdm9pZAlpbmZvIChzdHJpbmcmIG1zZ2J1ZiwgY29uc3QgY2hhciogZm10ID0gTlVMTCkgY29uc3QgdGhyb3coKTsKLSAgICB2aXJ0dWFsIHZvaWQJcmVhZCAoaXN0cmVhbSYgaXMpOwotICAgIHZpcnR1YWwgdm9pZAl3cml0ZSAob3N0cmVhbSYgb3MpIGNvbnN0OwotICAgIHZpcnR1YWwgc2l6ZV90CXN0cmVhbV9zaXplICh2b2lkKSBjb25zdDsKLXByb3RlY3RlZDoKLSAgICBjb25zdCBjaGFyKgkJbV9UeXBlTmFtZTsKLSAgICB1b2ZmX3QJCW1fT2Zmc2V0OwotICAgIHNpemVfdAkJbV9FeHBlY3RlZDsKLSAgICBzaXplX3QJCW1fUmVtYWluaW5nOwotfTsKLQotY29uc3QgY2hhciogZGVtYW5nbGVfdHlwZV9uYW1lIChjaGFyKiBidWYsIHNpemVfdCBidWZTaXplLCBzaXplX3QqIHBkbVNpemUgPSBOVUxMKTsKLQotfSAvLyBuYW1lc3BhY2UgdXN0bAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdWZ1bmN0aW9uLmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91ZnVuY3Rpb24uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTNkYzVlMi4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91ZnVuY3Rpb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4MCArMCwwIEBACi0vLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdXN0bCBsaWJyYXJ5LCBhbiBTVEwgaW1wbGVtZW50YXRpb24uCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDA1IGJ5IE1pa2UgU2hhcm92IDxtc2hhcm92QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLS8vIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCi0vLwotLy8gXGZpbGUgdWZ1bmN0aW9uLmgKLS8vCi0vLyBcYnJpZWYgSW1wbGVtZW50cyBTVEwgc3RhbmRhcmQgZnVuY3RvcnMuCi0vLwotLy8gU2VlIFNUTCBzcGVjaWZpY2F0aW9uIGFuZCBidnRzIGZvciB1c2FnZSBvZiB0aGVzZS4gVGhlIG9ubHkKLS8vIGV4dGVuc2lvbiBpcyB0aGUgbWVtX3ZhciBmdW5jdG9ycyBmb3IgbWVtYmVyIHZhcmlhYmxlIGFjY2VzczoKLS8vIFxjb2RlCi0vLwlmID0gZmluZF9pZiAoY3RyLCBtZW1fdmFyX2VxdWFsX3RvKCZNeUNsYXNzOjptX1ZhciwgbWF0Y2hWYXIpKTsKLS8vCWYgPSBmaW5kX2lmIChjdHIsIG1lbV92YXJfbGVzcygmTXlDbGFzczo6bV9WYXIsIG1hdGNoVmFyKSk7Ci0vLyBcZW5kY29kZQotLy8gVGhlcmUgYXJlIGEgY291cGxlIG9mIG90aGVycyBidXQgdGhlIHN5bnRheCBpcyBtdWNoIGhhcmRlciB0byBncmFzcC4KLS8vIFNlZSBidnQxMC5jYyBmb3IgbW9yZSBleGFtcGxlcy4KLS8vCi0KLSNpZm5kZWYgVUZVTkNUSU9OX0hfMjIxQUJBODU1MTgwMTc5OTI2M0M5MjcyMzRDMDg1RjMKLSNkZWZpbmUgVUZVTkNUSU9OX0hfMjIxQUJBODU1MTgwMTc5OTI2M0M5MjcyMzRDMDg1RjMKLQotbmFtZXNwYWNlIHVzdGwgewotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIFN0YW5kYXJkIGZ1bmN0b3JzCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8vIFxicmllZiB2b2lkLXJldHVybmluZyBmdW5jdGlvbiBhYnN0cmFjdCBpbnRlcmZhY2UuCi0vLy8gXGluZ3JvdXAgRnVuY3Rvck9iamVjdHMKLXRlbXBsYXRlIDx0eXBlbmFtZSBSZXN1bHQ+Ci1zdHJ1Y3Qgdm9pZF9mdW5jdGlvbiB7Ci0gICAgdHlwZWRlZiBSZXN1bHQJcmVzdWx0X3R5cGU7Ci19OwotCi0vLy8gXGJyaWVmIFxwIFJlc3VsdCBmIChccCBBcmcpIGZ1bmN0aW9uIGFic3RyYWN0IGludGVyZmFjZS4KLS8vLyBcaW5ncm91cCBGdW5jdG9yT2JqZWN0cwotdGVtcGxhdGUgPHR5cGVuYW1lIEFyZywgdHlwZW5hbWUgUmVzdWx0Pgotc3RydWN0IHVuYXJ5X2Z1bmN0aW9uIHsKLSAgICB0eXBlZGVmIEFyZwkJYXJndW1lbnRfdHlwZTsKLSAgICB0eXBlZGVmIFJlc3VsdAlyZXN1bHRfdHlwZTsKLX07Ci0KLS8vLyBcYnJpZWYgXHAgUmVzdWx0IGYgKFxwIEFyZzEsIFxwIEFyZzIpIGZ1bmN0aW9uIGFic3RyYWN0IGludGVyZmFjZS4KLS8vLyBcaW5ncm91cCBGdW5jdG9yT2JqZWN0cwotdGVtcGxhdGUgPHR5cGVuYW1lIEFyZzEsIHR5cGVuYW1lIEFyZzIsIHR5cGVuYW1lIFJlc3VsdD4KLXN0cnVjdCBiaW5hcnlfZnVuY3Rpb24gewotICAgIHR5cGVkZWYgQXJnMQlmaXJzdF9hcmd1bWVudF90eXBlOwotICAgIHR5cGVkZWYgQXJnMglzZWNvbmRfYXJndW1lbnRfdHlwZTsKLSAgICB0eXBlZGVmIFJlc3VsdAlyZXN1bHRfdHlwZTsKLX07Ci0KLSNpZm5kZWYgRE9YWUdFTl9TSE9VTERfU0tJUF9USElTCi0KLSNkZWZpbmUgU1REX0JJTkFSWV9GVU5DVE9SKG5hbWUsIHJ2LCBmdW5jKQlcCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IG5hbWUgOiBwdWJsaWMgYmluYXJ5X2Z1bmN0aW9uPFQsVCxydj4gXAoteyBpbmxpbmUgcnYgb3BlcmF0b3IoKShjb25zdCBUJiBhLCBjb25zdCBUJiBiKSBjb25zdCB7IHJldHVybiBmdW5jOyB9IH07Ci0jZGVmaW5lIFNURF9VTkFSWV9GVU5DVE9SKG5hbWUsIHJ2LCBmdW5jKQlcCi10ZW1wbGF0ZSA8Y2xhc3MgVD4gc3RydWN0IG5hbWUgOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248VCxydj4gXAoteyBpbmxpbmUgcnYgb3BlcmF0b3IoKShjb25zdCBUJiBhKSBjb25zdCB7IHJldHVybiBmdW5jOyB9IH07Ci0jZGVmaW5lIFNURF9DT05WRVJTSU9OX0ZVTkNUT1IobmFtZSwgZnVuYykJXAotdGVtcGxhdGUgPGNsYXNzIFMsIGNsYXNzIEQ+IHN0cnVjdCBuYW1lIDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPFMsRD4gXAoteyBpbmxpbmUgRCBvcGVyYXRvcigpKGNvbnN0IFMmIGEpIGNvbnN0IHsgcmV0dXJuIGZ1bmM7IH0gfTsKLQotU1REX0JJTkFSWV9GVU5DVE9SIChwbHVzLAkJVCwJKGEgKyBiKSkKLVNURF9CSU5BUllfRlVOQ1RPUiAobWludXMsCQlULAkoYSAtIGIpKQotU1REX0JJTkFSWV9GVU5DVE9SIChkaXZpZGVzLAkJVCwJKGEgLyBiKSkKLVNURF9CSU5BUllfRlVOQ1RPUiAobW9kdWx1cywJCVQsCShhICUgYikpCi1TVERfQklOQVJZX0ZVTkNUT1IgKG11bHRpcGxpZXMsCQlULAkoYSAqIGIpKQotU1REX0JJTkFSWV9GVU5DVE9SIChsb2dpY2FsX2FuZCwJVCwJKGEgJiYgYikpCi1TVERfQklOQVJZX0ZVTkNUT1IgKGxvZ2ljYWxfb3IsCQlULAkoYSB8fCBiKSkKLVNURF9VTkFSWV9GVU5DVE9SICAobG9naWNhbF9ub3QsCVQsCSghYSkpCi1TVERfQklOQVJZX0ZVTkNUT1IgKGJpdHdpc2Vfb3IsCQlULAkoYSB8IGIpKQotU1REX0JJTkFSWV9GVU5DVE9SIChiaXR3aXNlX2FuZCwJVCwJKGEgJiBiKSkKLVNURF9CSU5BUllfRlVOQ1RPUiAoYml0d2lzZV94b3IsCVQsCShhIF4gYikpCi1TVERfVU5BUllfRlVOQ1RPUiAgKGJpdHdpc2Vfbm90LAlULAkofmEpKQotU1REX1VOQVJZX0ZVTkNUT1IgIChuZWdhdGUsCQlULAkoLWEpKQotU1REX0JJTkFSWV9GVU5DVE9SIChlcXVhbF90bywJCWJvb2wsCShhID09IGIpKQotU1REX0JJTkFSWV9GVU5DVE9SIChub3RfZXF1YWxfdG8sCWJvb2wsCSghKGEgPT0gYikpKQotU1REX0JJTkFSWV9GVU5DVE9SIChncmVhdGVyLAkJYm9vbCwJKGIgPCBhKSkKLVNURF9CSU5BUllfRlVOQ1RPUiAobGVzcywJCWJvb2wsCShhIDwgYikpCi1TVERfQklOQVJZX0ZVTkNUT1IgKGdyZWF0ZXJfZXF1YWwsCWJvb2wsCSghKGEgPCBiKSkpCi1TVERfQklOQVJZX0ZVTkNUT1IgKGxlc3NfZXF1YWwsCQlib29sLAkoIShiIDwgYSkpKQotU1REX0JJTkFSWV9GVU5DVE9SIChjb21wYXJlLAkJaW50LAkoYSA8IGIgPyAtMSA6IChiIDwgYSkpKQotU1REX1VOQVJZX0ZVTkNUT1IgIChpZGVudGl0eSwJCVQsCShhKSkKLQotI2VuZGlmIC8vIERPWFlHRU5fU0hPVUxEX1NLSVBfVEhJUwotCi0vLy8gXGJyaWVmIFNlbGVjdHMgYW5kIHJldHVybnMgdGhlIGZpcnN0IGFyZ3VtZW50LgotLy8vIFxpbmdyb3VwIEZ1bmN0b3JPYmplY3RzCi10ZW1wbGF0ZSA8Y2xhc3MgVDEsIGNsYXNzIFQyPiBzdHJ1Y3QgcHJvamVjdDFzdAk6IHB1YmxpYyBiaW5hcnlfZnVuY3Rpb248VDEsVDIsVDE+ICAgIHsgaW5saW5lIGNvbnN0IFQxJiBvcGVyYXRvcigpKGNvbnN0IFQxJiBhLCBjb25zdCBUMiYpIGNvbnN0IHsgcmV0dXJuIChhKTsgfSB9OwotLy8vIFxicmllZiBTZWxlY3RzIGFuZCByZXR1cm5zIHRoZSBzZWNvbmQgYXJndW1lbnQuCi0vLy8gXGluZ3JvdXAgRnVuY3Rvck9iamVjdHMKLXRlbXBsYXRlIDxjbGFzcyBUMSwgY2xhc3MgVDI+IHN0cnVjdCBwcm9qZWN0Mm5kCTogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxUMSxUMixUMj4gICAgeyBpbmxpbmUgY29uc3QgVDImIG9wZXJhdG9yKCkoY29uc3QgVDEmLCBjb25zdCBUMiYgYSkgY29uc3QgeyByZXR1cm4gKGEpOyB9IH07Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLy8gR2VuZXJpYyBmdW5jdGlvbiB0byBmdW5jdG9yIGNvbnZlcnRlcnMuCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8vIFxicmllZiBXcmFwcGVyIG9iamVjdCBmb3IgdW5hcnkgZnVuY3Rpb24gcG9pbnRlcnMuCi0vLy8gVXNlIHRoZSBccmVmIHB0cl9mdW4gYWNjZXNzb3IgdG8gY3JlYXRlIHRoaXMgb2JqZWN0LgotLy8vIFxpbmdyb3VwIEZ1bmN0b3JPYmplY3RzCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQXJnLCB0eXBlbmFtZSBSZXN1bHQ+Ci1jbGFzcyBwb2ludGVyX3RvX3VuYXJ5X2Z1bmN0aW9uIDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPEFyZyxSZXN1bHQ+IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIEFyZwkJYXJndW1lbnRfdHlwZTsKLSAgICB0eXBlZGVmIFJlc3VsdAlyZXN1bHRfdHlwZTsKLSAgICB0eXBlZGVmIFJlc3VsdAkoKnBmdW5jX3QpKEFyZyk7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgaW5saW5lCXBvaW50ZXJfdG9fdW5hcnlfZnVuY3Rpb24gKHBmdW5jX3QgcGZuKSA6IG1fcGZuIChwZm4pIHt9Ci0gICAgaW5saW5lIHJlc3VsdF90eXBlCW9wZXJhdG9yKCkgKGFyZ3VtZW50X3R5cGUgdikgY29uc3QgeyByZXR1cm4gKG1fcGZuKHYpKTsgfQotcHJpdmF0ZToKLSAgICBwZnVuY190CQltX3BmbjsJLy8vPCBQb2ludGVyIHRvIHRoZSB3cmFwcGVkIGZ1bmN0aW9uLgotfTsKLQotLy8vIFxicmllZiBXcmFwcGVyIG9iamVjdCBmb3IgYmluYXJ5IGZ1bmN0aW9uIHBvaW50ZXJzLgotLy8vIFVzZSB0aGUgXHJlZiBwdHJfZnVuIGFjY2Vzc29yIHRvIGNyZWF0ZSB0aGlzIG9iamVjdC4KLS8vLyBcaW5ncm91cCBGdW5jdG9yT2JqZWN0cwotdGVtcGxhdGUgPHR5cGVuYW1lIEFyZzEsIHR5cGVuYW1lIEFyZzIsIHR5cGVuYW1lIFJlc3VsdD4KLWNsYXNzIHBvaW50ZXJfdG9fYmluYXJ5X2Z1bmN0aW9uIDogcHVibGljIGJpbmFyeV9mdW5jdGlvbjxBcmcxLEFyZzIsUmVzdWx0PiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBBcmcxCWZpcnN0X2FyZ3VtZW50X3R5cGU7Ci0gICAgdHlwZWRlZiBBcmcyCXNlY29uZF9hcmd1bWVudF90eXBlOwotICAgIHR5cGVkZWYgUmVzdWx0CXJlc3VsdF90eXBlOwotICAgIHR5cGVkZWYgUmVzdWx0CSgqcGZ1bmNfdCkoQXJnMSwgQXJnMik7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQgaW5saW5lCXBvaW50ZXJfdG9fYmluYXJ5X2Z1bmN0aW9uIChwZnVuY190IHBmbikgOiBtX3BmbiAocGZuKSB7fQotICAgIGlubGluZSByZXN1bHRfdHlwZQlvcGVyYXRvcigpIChmaXJzdF9hcmd1bWVudF90eXBlIHYxLCBzZWNvbmRfYXJndW1lbnRfdHlwZSB2MikgY29uc3QgeyByZXR1cm4gKG1fcGZuKHYxLCB2MikpOyB9Ci1wcml2YXRlOgotICAgIHBmdW5jX3QJCW1fcGZuOwkvLy88IFBvaW50ZXIgdG8gdGhlIHdyYXBwZWQgZnVuY3Rpb24uCi19OwotCi0vLy8gcHRyX2Z1bihwZm4pIHdyYXBzIGZ1bmN0aW9uIHBvaW50ZXIgcGZuIGludG8gYSBmdW5jdG9yIGNsYXNzIHRoYXQgY2FsbHMgaXQuCi0vLy8gXGluZ3JvdXAgRnVuY3RvckFjY2Vzc29ycwotdGVtcGxhdGUgPHR5cGVuYW1lIEFyZywgdHlwZW5hbWUgUmVzdWx0PgotaW5saW5lIHBvaW50ZXJfdG9fdW5hcnlfZnVuY3Rpb248QXJnLFJlc3VsdD4gcHRyX2Z1biAoUmVzdWx0ICgqcGZuKShBcmcpKQotewotICAgIHJldHVybiAocG9pbnRlcl90b191bmFyeV9mdW5jdGlvbjxBcmcsUmVzdWx0PiAocGZuKSk7Ci19Ci0KLS8vLyBwdHJfZnVuKHBmbikgd3JhcHMgZnVuY3Rpb24gcG9pbnRlciBwZm4gaW50byBhIGZ1bmN0b3IgY2xhc3MgdGhhdCBjYWxscyBpdC4KLS8vLyBcaW5ncm91cCBGdW5jdG9yQWNjZXNzb3JzCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQXJnMSwgdHlwZW5hbWUgQXJnMiwgdHlwZW5hbWUgUmVzdWx0PgotaW5saW5lIHBvaW50ZXJfdG9fYmluYXJ5X2Z1bmN0aW9uPEFyZzEsQXJnMixSZXN1bHQ+IHB0cl9mdW4gKFJlc3VsdCAoKnBmbikoQXJnMSxBcmcyKSkKLXsKLSAgICByZXR1cm4gKHBvaW50ZXJfdG9fYmluYXJ5X2Z1bmN0aW9uPEFyZzEsQXJnMixSZXN1bHQ+IChwZm4pKTsKLX0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBOZWdhdG9ycy4KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLy8gXGJyaWVmIFdyYXBzIGEgdW5hcnkgZnVuY3Rpb24gdG8gcmV0dXJuIGl0cyBsb2dpY2FsIG5lZ2F0aXZlLgotLy8vIFVzZSB0aGUgXHJlZiB1bmFyeV9uZWdhdG9yIGFjY2Vzc29yIHRvIGNyZWF0ZSB0aGlzIG9iamVjdC4KLS8vLyBcaW5ncm91cCBGdW5jdG9yT2JqZWN0cwotdGVtcGxhdGUgPGNsYXNzIFVuYXJ5RnVuY3Rpb24+Ci1jbGFzcyB1bmFyeV9uZWdhdGUgOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248dHlwZW5hbWUgVW5hcnlGdW5jdGlvbjo6YXJndW1lbnRfdHlwZSwKLQkJCQkJICAgdHlwZW5hbWUgVW5hcnlGdW5jdGlvbjo6cmVzdWx0X3R5cGU+IHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFVuYXJ5RnVuY3Rpb246OmFyZ3VtZW50X3R5cGUJYXJndW1lbnRfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFVuYXJ5RnVuY3Rpb246OnJlc3VsdF90eXBlCQlyZXN1bHRfdHlwZTsKLXB1YmxpYzoKLSAgICBleHBsaWNpdCBpbmxpbmUgdW5hcnlfbmVnYXRlIChVbmFyeUZ1bmN0aW9uIHBmbikgOiBtX3BmbiAocGZuKSB7fQotICAgIGlubGluZSByZXN1bHRfdHlwZSBvcGVyYXRvcigpIChhcmd1bWVudF90eXBlIHYpIGNvbnN0IHsgcmV0dXJuICghbV9wZm4odikpOyB9Ci1wcml2YXRlOgotICAgIFVuYXJ5RnVuY3Rpb24JbV9wZm47Ci19OwotCi0vLy8gUmV0dXJucyB0aGUgZnVuY3RvciB0aGF0IG5lZ2F0ZXMgdGhlIHJlc3VsdCBvZiAqcGZuKCkuCi0vLy8gXGluZ3JvdXAgRnVuY3RvckFjY2Vzc29ycwotdGVtcGxhdGUgPGNsYXNzIFVuYXJ5RnVuY3Rpb24+Ci1pbmxpbmUgdW5hcnlfbmVnYXRlPFVuYXJ5RnVuY3Rpb24+IHVuYXJ5X25lZ2F0b3IgKFVuYXJ5RnVuY3Rpb24gcGZuKQotewotICAgIHJldHVybiAodW5hcnlfbmVnYXRlPFVuYXJ5RnVuY3Rpb24+KHBmbikpOwotfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIEFyZ3VtZW50IGJpbmRlcnMKLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLy8gXGJyaWVmIENvbnZlcnRzIGEgYmluYXJ5IGZ1bmN0aW9uIHRvIGEgdW5hcnkgZnVuY3Rpb24KLS8vLyBieSBiaW5kaW5nIGEgY29uc3RhbnQgdmFsdWUgdG8gdGhlIGZpcnN0IGFyZ3VtZW50LgotLy8vIFVzZSB0aGUgXHJlZiBiaW5kMXN0IGFjY2Vzc29yIHRvIGNyZWF0ZSB0aGlzIG9iamVjdC4KLS8vLyBcaW5ncm91cCBGdW5jdG9yT2JqZWN0cwotdGVtcGxhdGUgPGNsYXNzIEJpbmFyeUZ1bmN0aW9uPiAKLWNsYXNzIGJpbmRlcjFzdCA6IHB1YmxpYyB1bmFyeV9mdW5jdGlvbjx0eXBlbmFtZSBCaW5hcnlGdW5jdGlvbjo6c2Vjb25kX2FyZ3VtZW50X3R5cGUsCi0JCQkJCXR5cGVuYW1lIEJpbmFyeUZ1bmN0aW9uOjpyZXN1bHRfdHlwZT4gewotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgQmluYXJ5RnVuY3Rpb246OmZpcnN0X2FyZ3VtZW50X3R5cGUJYXJnMV90OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgQmluYXJ5RnVuY3Rpb246OnNlY29uZF9hcmd1bWVudF90eXBlCWFyZzJfdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEJpbmFyeUZ1bmN0aW9uOjpyZXN1bHRfdHlwZQkJcmVzdWx0X3Q7Ci1wdWJsaWM6Ci0gICAgaW5saW5lIGJpbmRlcjFzdCAoY29uc3QgQmluYXJ5RnVuY3Rpb24mIHBmbiwgY29uc3QgYXJnMV90JiB2KSA6IG1fcGZuIChwZm4pLCBtX1ZhbHVlKHYpIHt9Ci0gICAgaW5saW5lIHJlc3VsdF90IG9wZXJhdG9yKCkoYXJnMl90IHYyKSBjb25zdCB7IHJldHVybiAobV9wZm4gKG1fVmFsdWUsIHYyKSk7IH0KLXByb3RlY3RlZDoKLSAgICBCaW5hcnlGdW5jdGlvbgltX3BmbjsKLSAgICBhcmcxX3QJCW1fVmFsdWU7Ci19OwotCi0vLy8gXGJyaWVmIENvbnZlcnRzIGEgYmluYXJ5IGZ1bmN0aW9uIHRvIGEgdW5hcnkgZnVuY3Rpb24KLS8vLyBieSBiaW5kaW5nIGEgY29uc3RhbnQgdmFsdWUgdG8gdGhlIHNlY29uZCBhcmd1bWVudC4KLS8vLyBVc2UgdGhlIFxyZWYgYmluZDJuZCBhY2Nlc3NvciB0byBjcmVhdGUgdGhpcyBvYmplY3QuCi0vLy8gXGluZ3JvdXAgRnVuY3Rvck9iamVjdHMKLXRlbXBsYXRlIDxjbGFzcyBCaW5hcnlGdW5jdGlvbj4gCi1jbGFzcyBiaW5kZXIybmQgOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248dHlwZW5hbWUgQmluYXJ5RnVuY3Rpb246OmZpcnN0X2FyZ3VtZW50X3R5cGUsCi0JCQkJCXR5cGVuYW1lIEJpbmFyeUZ1bmN0aW9uOjpyZXN1bHRfdHlwZT4gewotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgQmluYXJ5RnVuY3Rpb246OmZpcnN0X2FyZ3VtZW50X3R5cGUJYXJnMV90OwotICAgIHR5cGVkZWYgdHlwZW5hbWUgQmluYXJ5RnVuY3Rpb246OnNlY29uZF9hcmd1bWVudF90eXBlCWFyZzJfdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEJpbmFyeUZ1bmN0aW9uOjpyZXN1bHRfdHlwZQkJcmVzdWx0X3Q7Ci1wdWJsaWM6Ci0gICAgaW5saW5lIGJpbmRlcjJuZCAoY29uc3QgQmluYXJ5RnVuY3Rpb24mIHBmbiwgY29uc3QgYXJnMl90JiB2KSA6IG1fcGZuIChwZm4pLCBtX1ZhbHVlKHYpIHt9Ci0gICAgaW5saW5lIHJlc3VsdF90IG9wZXJhdG9yKCkoYXJnMV90IHYxKSBjb25zdCB7IHJldHVybiAobV9wZm4gKHYxLCBtX1ZhbHVlKSk7IH0KLXByb3RlY3RlZDoKLSAgICBCaW5hcnlGdW5jdGlvbgltX3BmbjsKLSAgICBhcmcyX3QJCW1fVmFsdWU7Ci19OwotCi0vLy8gQ29udmVydHMgXHAgcGZuIGludG8gYSB1bmFyeSBmdW5jdGlvbiBieSBiaW5kaW5nIHRoZSBmaXJzdCBhcmd1bWVudCB0byBccCB2LgotLy8vIFxpbmdyb3VwIEZ1bmN0b3JBY2Nlc3NvcnMKLXRlbXBsYXRlIDx0eXBlbmFtZSBCaW5hcnlGdW5jdGlvbj4KLWlubGluZSBiaW5kZXIxc3Q8QmluYXJ5RnVuY3Rpb24+Ci1iaW5kMXN0IChCaW5hcnlGdW5jdGlvbiBwZm4sIHR5cGVuYW1lIEJpbmFyeUZ1bmN0aW9uOjpmaXJzdF9hcmd1bWVudF90eXBlIHYpIAotewotICAgIHJldHVybiAoYmluZGVyMXN0PEJpbmFyeUZ1bmN0aW9uPiAocGZuLCB2KSk7Ci19Ci0KLS8vLyBDb252ZXJ0cyBccCBwZm4gaW50byBhIHVuYXJ5IGZ1bmN0aW9uIGJ5IGJpbmRpbmcgdGhlIHNlY29uZCBhcmd1bWVudCB0byBccCB2LgotLy8vIFxpbmdyb3VwIEZ1bmN0b3JBY2Nlc3NvcnMKLXRlbXBsYXRlIDx0eXBlbmFtZSBCaW5hcnlGdW5jdGlvbj4KLWlubGluZSBiaW5kZXIybmQ8QmluYXJ5RnVuY3Rpb24+Ci1iaW5kMm5kIChCaW5hcnlGdW5jdGlvbiBwZm4sIHR5cGVuYW1lIEJpbmFyeUZ1bmN0aW9uOjpzZWNvbmRfYXJndW1lbnRfdHlwZSB2KSAKLXsKLSAgICByZXR1cm4gKGJpbmRlcjJuZDxCaW5hcnlGdW5jdGlvbj4gKHBmbiwgdikpOwotfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIENvbXBvc2l0aW9uIGFkYXB0ZXJzCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8vIFxicmllZiBDaGFpbnMgdHdvIHVuYXJ5IGZ1bmN0aW9ucyB0b2dldGhlci4KLS8vLwotLy8vIFdoZW4gZih4KSBhbmQgZyh4KSBhcmUgY29tcG9zZWQsIHRoZSByZXN1bHQgaXMgZnVuY3Rpb24gYyh4KT1mKGcoeCkpLgotLy8vIFVzZSB0aGUgXHJlZiBjb21wb3NlMSBhY2Nlc3NvciB0byBjcmVhdGUgdGhpcyBvYmplY3QuCi0vLy8gVGhpcyB0ZW1wbGF0ZSBpcyBhbiBleHRlbnNpb24sIGltcGxlbWVudGVkIGJ5IFNHSSBTVEwgYW5kIHVTVEwuCi0vLy8gXGluZ3JvdXAgRnVuY3Rvck9iamVjdHMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIE9wZXJhdGlvbjEsIHR5cGVuYW1lIE9wZXJhdGlvbjI+Ci1jbGFzcyB1bmFyeV9jb21wb3NlIDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPHR5cGVuYW1lIE9wZXJhdGlvbjI6OmFyZ3VtZW50X3R5cGUsCi0JCQkJCSAgICB0eXBlbmFtZSBPcGVyYXRpb24xOjpyZXN1bHRfdHlwZT4gewotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgT3BlcmF0aW9uMjo6YXJndW1lbnRfdHlwZQlhcmdfdDsKLSAgICB0eXBlZGVmIGNvbnN0IGFyZ190JgkJCXJjYXJnX3Q7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBPcGVyYXRpb24xOjpyZXN1bHRfdHlwZQlyZXN1bHRfdDsKLXB1YmxpYzoKLSAgICBpbmxpbmUgdW5hcnlfY29tcG9zZSAoY29uc3QgT3BlcmF0aW9uMSYgZiwgY29uc3QgT3BlcmF0aW9uMiYgZykgOiBtX2YoZiksIG1fZyhnKSB7fQotICAgIGlubGluZSByZXN1bHRfdCBvcGVyYXRvcigpIChyY2FyZ190IHgpIGNvbnN0IHsgcmV0dXJuIG1fZihtX2coeCkpOyB9Ci1wcm90ZWN0ZWQ6Ci0gICAgT3BlcmF0aW9uMQltX2Y7CS8vLzwgZih4KSwgaWYgYyh4KSA9IGYoZyh4KSkKLSAgICBPcGVyYXRpb24yCW1fZzsJLy8vPCBnKHgpLCBpZiBjKHgpID0gZihnKHgpKQotfTsKLQotLy8vIENyZWF0ZXMgYSBccmVmIHVuYXJ5X2NvbXBvc2Ugb2JqZWN0IHdob3NlIGZ1bmN0aW9uIGMoeCk9ZihnKHgpKQotLy8vIFxpbmdyb3VwIEZ1bmN0b3JBY2Nlc3NvcnMKLXRlbXBsYXRlIDx0eXBlbmFtZSBPcGVyYXRpb24xLCB0eXBlbmFtZSBPcGVyYXRpb24yPgotaW5saW5lIHVuYXJ5X2NvbXBvc2U8T3BlcmF0aW9uMSwgT3BlcmF0aW9uMj4KLWNvbXBvc2UxIChjb25zdCBPcGVyYXRpb24xJiBmLCBjb25zdCBPcGVyYXRpb24yJiBnKQoteyByZXR1cm4gdW5hcnlfY29tcG9zZTxPcGVyYXRpb24xLE9wZXJhdGlvbjI+KGYsIGcpOyB9Ci0KLS8vLyBcYnJpZWYgQ2hhaW5zIHR3byB1bmFyeSBmdW5jdGlvbnMgdGhyb3VnaCBhIGJpbmFyeSBmdW5jdGlvbi4KLS8vLwotLy8vIFdoZW4gZih4LHkpLCBnKHgpLCBhbmQgaCh4KSBhcmUgY29tcG9zZWQsIHRoZSByZXN1bHQgaXMgZnVuY3Rpb24KLS8vLyBjKHgpPWYoZyh4KSxoKHgpKS4gVXNlIHRoZSBccmVmIGNvbXBvc2UyIGFjY2Vzc29yIHRvIGNyZWF0ZSB0aGlzCi0vLy8gb2JqZWN0LiBUaGlzIHRlbXBsYXRlIGlzIGFuIGV4dGVuc2lvbiwgaW1wbGVtZW50ZWQgYnkgU0dJIFNUTCBhbmQgdVNUTC4KLS8vLyBcaW5ncm91cCBGdW5jdG9yT2JqZWN0cwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgT3BlcmF0aW9uMSwgdHlwZW5hbWUgT3BlcmF0aW9uMiwgdHlwZW5hbWUgT3BlcmF0aW9uMz4KLWNsYXNzIGJpbmFyeV9jb21wb3NlIDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPHR5cGVuYW1lIE9wZXJhdGlvbjI6OmFyZ3VtZW50X3R5cGUsCi0JCQkJCSAgICB0eXBlbmFtZSBPcGVyYXRpb24xOjpyZXN1bHRfdHlwZT4gewotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgT3BlcmF0aW9uMjo6YXJndW1lbnRfdHlwZQlhcmdfdDsKLSAgICB0eXBlZGVmIGNvbnN0IGFyZ190JgkJCXJjYXJnX3Q7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBPcGVyYXRpb24xOjpyZXN1bHRfdHlwZQlyZXN1bHRfdDsKLXB1YmxpYzoKLSAgICBpbmxpbmUgYmluYXJ5X2NvbXBvc2UgKGNvbnN0IE9wZXJhdGlvbjEmIGYsIGNvbnN0IE9wZXJhdGlvbjImIGcsIGNvbnN0IE9wZXJhdGlvbjMmIGgpIDogbV9mKGYpLCBtX2coZyksIG1faChoKSB7fQotICAgIGlubGluZSByZXN1bHRfdCBvcGVyYXRvcigpIChyY2FyZ190IHgpIGNvbnN0IHsgcmV0dXJuIG1fZihtX2coeCksIG1faCh4KSk7IH0KLXByb3RlY3RlZDoKLSAgICBPcGVyYXRpb24xCW1fZjsJLy8vPCBmKHgseSksIGlmIGMoeCkgPSBmKGcoeCksaCh4KSkKLSAgICBPcGVyYXRpb24yCW1fZzsJLy8vPCBnKHgpLCBpZiBjKHgpID0gZihnKHgpLGgoeCkpCi0gICAgT3BlcmF0aW9uMwltX2g7CS8vLzwgaCh4KSwgaWYgYyh4KSA9IGYoZyh4KSxoKHgpKQotfTsKLQotLy8vIENyZWF0ZXMgYSBccmVmIGJpbmFyeV9jb21wb3NlIG9iamVjdCB3aG9zZSBmdW5jdGlvbiBjKHgpPWYoZyh4KSxoKHgpKQotLy8vIFxpbmdyb3VwIEZ1bmN0b3JBY2Nlc3NvcnMKLXRlbXBsYXRlIDx0eXBlbmFtZSBPcGVyYXRpb24xLCB0eXBlbmFtZSBPcGVyYXRpb24yLCB0eXBlbmFtZSBPcGVyYXRpb24zPgotaW5saW5lIGJpbmFyeV9jb21wb3NlPE9wZXJhdGlvbjEsIE9wZXJhdGlvbjIsIE9wZXJhdGlvbjM+Ci1jb21wb3NlMiAoY29uc3QgT3BlcmF0aW9uMSYgZiwgY29uc3QgT3BlcmF0aW9uMiYgZywgY29uc3QgT3BlcmF0aW9uMyYgaCkKLXsgcmV0dXJuIGJpbmFyeV9jb21wb3NlPE9wZXJhdGlvbjEsIE9wZXJhdGlvbjIsIE9wZXJhdGlvbjM+IChmLCBnLCBoKTsgfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIE1lbWJlciBmdW5jdGlvbiBhZGFwdG9ycwotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZm5kZWYgRE9YWUdFTl9TSE9VTERfU0tJUF9USElTCi0KLSNkZWZpbmUgTUVNX0ZVTl9UKFdyYXBwZXJOYW1lLCBDbGFzc05hbWUsIEFyZ1R5cGUsIEZ1bmNUeXBlLCBDYWxsVHlwZSkJCQkJXAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBSZXQsIGNsYXNzIFQ+CQkJCQkJCQlcCi0gICAgY2xhc3MgQ2xhc3NOYW1lIDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPEFyZ1R5cGUsUmV0PiB7CQkJCQlcCi0gICAgcHVibGljOgkJCQkJCQkJCQkJXAotCXR5cGVkZWYgUmV0IChUOjoqZnVuY190KSBGdW5jVHlwZTsJCQkJCQkJXAotICAgIHB1YmxpYzoJCQkJCQkJCQkJCVwKLQlleHBsaWNpdCBpbmxpbmUJQ2xhc3NOYW1lIChmdW5jX3QgcGYpIDogbV9wZiAocGYpIHt9CQkJCQlcCi0JaW5saW5lIFJldAlvcGVyYXRvcigpIChBcmdUeXBlIHApIGNvbnN0IHsgcmV0dXJuICgocCBDYWxsVHlwZSBtX3BmKSgpKTsgfQkJXAotICAgIHByaXZhdGU6CQkJCQkJCQkJCQlcCi0JZnVuY190CW1fcGY7CQkJCQkJCQkJCVwKLSAgICB9OwlcCi0JXAotICAgIHRlbXBsYXRlIDxjbGFzcyBSZXQsIHR5cGVuYW1lIFQ+CQlcCi0gICAgaW5saW5lIENsYXNzTmFtZTxSZXQsVD4gV3JhcHBlck5hbWUgKFJldCAoVDo6KnBmKSBGdW5jVHlwZSkJXAotICAgIHsJCQkJCQlcCi0JcmV0dXJuIChDbGFzc05hbWU8UmV0LFQ+IChwZikpOwkJXAotICAgIH0KLQotTUVNX0ZVTl9UKG1lbV9mdW4sCW1lbV9mdW5fdCwgCQlUKiwJCSh2b2lkKSwJCS0+KikKLU1FTV9GVU5fVChtZW1fZnVuLAljb25zdF9tZW1fZnVuX3QsIAljb25zdCBUKiwJKHZvaWQpIGNvbnN0LAktPiopCi1NRU1fRlVOX1QobWVtX2Z1bl9yZWYsCW1lbV9mdW5fcmVmX3QsCQlUJiwJCSh2b2lkKSwJCS4qKQotTUVNX0ZVTl9UKG1lbV9mdW5fcmVmLAljb25zdF9tZW1fZnVuX3JlZl90LCAJY29uc3QgVCYsCSh2b2lkKSBjb25zdCwJLiopCi0KLSNkZWZpbmUgRVhUX01FTV9GVU5fVChDbGFzc05hbWUsIEhvc3RUeXBlLCBGdW5jVHlwZSkgXAotICAgIHRlbXBsYXRlIDxjbGFzcyBULCB0eXBlbmFtZSBSZXQsIHR5cGVuYW1lIFY+IFwKLSAgICBjbGFzcyBDbGFzc05hbWUgOiBwdWJsaWMgdW5hcnlfZnVuY3Rpb248Vix2b2lkPiB7IFwKLSAgICBwdWJsaWM6IFwKLQl0eXBlZGVmIFJldCAoVDo6KmZ1bmNfdCkoVikgRnVuY1R5cGU7IFwKLSAgICBwdWJsaWM6IFwKLQlpbmxpbmUJCUNsYXNzTmFtZSAoSG9zdFR5cGUgdCwgZnVuY190IHBmKSA6IG1fdCAodCksIG1fcGYgKHBmKSB7fSBcCi0JaW5saW5lIFJldAlvcGVyYXRvcigpIChWIHYpIGNvbnN0IHsgcmV0dXJuICgobV90LT4qbV9wZikodikpOyB9IFwKLSAgICBwcml2YXRlOiBcCi0JSG9zdFR5cGUJbV90OyBcCi0JZnVuY190CQltX3BmOyBcCi0gICAgfTsJXAotCVwKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVCwgdHlwZW5hbWUgUmV0LCB0eXBlbmFtZSBWPgkJCQkJXAotICAgIGlubGluZSBDbGFzc05hbWU8VCxSZXQsVj4gbWVtX2Z1biAoSG9zdFR5cGUgcCwgUmV0IChUOjoqcGYpKFYpIEZ1bmNUeXBlKQlcCi0gICAgewkJCQkJCQkJCQkJXAotCXJldHVybiAoQ2xhc3NOYW1lPFQsUmV0LFY+IChwLCBwZikpOwkJCQkJCVwKLSAgICB9Ci0KLUVYVF9NRU1fRlVOX1QoZXh0X21lbV9mdW5fdCwJCVQqLAkJKQotRVhUX01FTV9GVU5fVChjb25zdF9leHRfbWVtX2Z1bl90LAljb25zdCBUKiwJY29uc3QpCi0KLSNlbmRpZiAvLyBET1hZR0VOX1NIT1VMRF9TS0lQX1RISVMKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBNZW1iZXIgdmFyaWFibGUgYWRhcHRvcnMgKHVTVEwgZXh0ZW5zaW9uKQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZm5kZWYgRE9YWUdFTl9TSE9VTERfU0tJUF9USElTCi0KLSNkZWZpbmUgTUVNX1ZBUl9UKEZ1bmN0b3JOYW1lLCBBcmdUeXBlLCBWYXJUeXBlLCBCYXNlQ2xhc3MsIENhbGxJbXBsKQkJCVwKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRnVuY3Rpb24sIGNsYXNzIFQsIHR5cGVuYW1lIFZUPgkJCQkJXAotICAgIGNsYXNzIEZ1bmN0b3JOYW1lIyNfdCA6IHB1YmxpYyBCYXNlQ2xhc3MgewkJCQkJCVwKLSAgICBwdWJsaWM6CQkJCQkJCQkJCVwKLQl0eXBlZGVmIEFyZ1R5cGUJCQkJYXJndW1lbnRfdHlwZTsJCQkJXAotCXR5cGVkZWYgdHlwZW5hbWUgRnVuY3Rpb246OnJlc3VsdF90eXBlCXJlc3VsdF90eXBlOwkJCQlcCi0JdHlwZWRlZiBWYXJUeXBlCQkJCW1lbV92YXJfcHRyX3Q7CQkJCVwKLSAgICBwdWJsaWM6CQkJCQkJCQkJCVwKLQlpbmxpbmUgRnVuY3Rvck5hbWUjI190IChtZW1fdmFyX3B0cl90IHB2LCBGdW5jdGlvbiBwZm4pIDogbV9wdihwdiksIG1fcGZuKHBmbikge30JXAotCWlubGluZSByZXN1bHRfdHlwZSBvcGVyYXRvcigpIENhbGxJbXBsCQkJCQkJXAotICAgIHByaXZhdGU6CQkJCQkJCQkJCVwKLQltZW1fdmFyX3B0cl90CW1fcHY7CQkJCQkJCQlcCi0JRnVuY3Rpb24JbV9wZm47CQkJCQkJCQlcCi0gICAgfTsJCQkJCQkJCQkJCVwKLQkJCQkJCQkJCQkJXAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdGlvbiwgY2xhc3MgVCwgdHlwZW5hbWUgVlQ+CQkJCQlcCi0gICAgaW5saW5lIEZ1bmN0b3JOYW1lIyNfdDxGdW5jdGlvbiwgVCwgVlQ+CQkJCQkJXAotICAgIEZ1bmN0b3JOYW1lIChWVCBUOjoqbXZwLCBGdW5jdGlvbiBwZm4pCQkJCQkJXAotICAgIHsJCQkJCQkJCQkJCVwKLQlyZXR1cm4gKEZ1bmN0b3JOYW1lIyNfdDxGdW5jdGlvbixULFZUPiAobXZwLCBwZm4pKTsJCQkJXAotICAgIH0KLQotI2RlZmluZSBGVU5DVE9SX1VOQVJZX0JBU0UoQXJnVHlwZSkJdW5hcnlfZnVuY3Rpb248QXJnVHlwZSwgdHlwZW5hbWUgRnVuY3Rpb246OnJlc3VsdF90eXBlPgotI2RlZmluZSBGVU5DVE9SX0JJTkFSWV9CQVNFKEFyZ1R5cGUpCWJpbmFyeV9mdW5jdGlvbjxBcmdUeXBlLCBBcmdUeXBlLCB0eXBlbmFtZSBGdW5jdGlvbjo6cmVzdWx0X3R5cGU+Ci0KLSNkZWZpbmUgTUVNX1ZBUl9VTkFSWV9BUkdTCQkoYXJndW1lbnRfdHlwZSBwKSBjb25zdCBcCi0JCQkJCXsgcmV0dXJuIChtX3BmbihwLiptX3B2KSk7IH0KLSNkZWZpbmUgTUVNX1ZBUl9CSU5BUllfQVJHUwkJKGFyZ3VtZW50X3R5cGUgcDEsIGFyZ3VtZW50X3R5cGUgcDIpIGNvbnN0IFwKLQkJCQkJeyByZXR1cm4gKG1fcGZuKHAxLiptX3B2LCBwMi4qbV9wdikpOyB9Ci0KLU1FTV9WQVJfVChtZW1fdmFyMSwJCVQmLCBWVCBUOjoqLAkJRlVOQ1RPUl9VTkFSWV9CQVNFKFQmKSwgIE1FTV9WQVJfVU5BUllfQVJHUykKLU1FTV9WQVJfVChjb25zdF9tZW1fdmFyMSwgY29uc3QgVCYsIGNvbnN0IFZUIFQ6OiosCUZVTkNUT1JfVU5BUllfQkFTRShUJiksICBNRU1fVkFSX1VOQVJZX0FSR1MpCi1NRU1fVkFSX1QobWVtX3ZhcjIsCQlUJiwgVlQgVDo6KiwJCUZVTkNUT1JfQklOQVJZX0JBU0UoVCYpLCBNRU1fVkFSX0JJTkFSWV9BUkdTKQotTUVNX1ZBUl9UKGNvbnN0X21lbV92YXIyLCBjb25zdCBUJiwgY29uc3QgVlQgVDo6KiwJRlVOQ1RPUl9CSU5BUllfQkFTRShUJiksIE1FTV9WQVJfQklOQVJZX0FSR1MpCi0KLSN1bmRlZiBNRU1fVkFSX1VOQVJZX0FSR1MKLSN1bmRlZiBNRU1fVkFSX0JJTkFSWV9BUkdTCi0KLSNlbmRpZiAvLyBET1hZR0VOX1NIT1VMRF9TS0lQX1RISVMKLQotLy8vIFJldHVybmVkIGZ1bmN0b3IgcGFzc2VzIG1lbWJlciB2YXJpYWJsZSBccCBtdnAgcmVmZXJlbmNlIG9mIGdpdmVuIG9iamVjdCB0byBlcXVhbFw8VlRcPi4KLS8vLyBcaW5ncm91cCBGdW5jdG9yQWNjZXNzb3JzCi10ZW1wbGF0ZSA8Y2xhc3MgVCwgdHlwZW5hbWUgVlQ+Ci1pbmxpbmUgY29uc3RfbWVtX3ZhcjFfdDxiaW5kZXIybmQ8ZXF1YWxfdG88VlQ+ID4sIFQsIFZUPgotbWVtX3Zhcl9lcXVhbF90byAoY29uc3QgVlQgVDo6Km12cCwgY29uc3QgVlQmIHYpCi17Ci0gICAgcmV0dXJuIChjb25zdF9tZW1fdmFyMV90PGJpbmRlcjJuZDxlcXVhbF90bzxWVD4gPixULFZUPiAobXZwLCBiaW5kMm5kKGVxdWFsX3RvPFZUPigpLCB2KSkpOwotfQotCi0vLy8gUmV0dXJuZWQgZnVuY3RvciBwYXNzZXMgbWVtYmVyIHZhcmlhYmxlIFxwIG12cCByZWZlcmVuY2Ugb2YgZ2l2ZW4gb2JqZWN0IHRvIGxlc3NcPFZUXD4uCi0vLy8gXGluZ3JvdXAgRnVuY3RvckFjY2Vzc29ycwotdGVtcGxhdGUgPGNsYXNzIFQsIHR5cGVuYW1lIFZUPgotaW5saW5lIGNvbnN0X21lbV92YXIxX3Q8YmluZGVyMm5kPGxlc3M8VlQ+ID4sIFQsIFZUPgotbWVtX3Zhcl9sZXNzIChjb25zdCBWVCBUOjoqbXZwLCBjb25zdCBWVCYgdikKLXsKLSAgICByZXR1cm4gKGNvbnN0X21lbV92YXIxX3Q8YmluZGVyMm5kPGxlc3M8VlQ+ID4sVCxWVD4gKG12cCwgYmluZDJuZChsZXNzPFZUPigpLCB2KSkpOwotfQotCi0vLy8gUmV0dXJuZWQgZnVuY3RvciBwYXNzZXMgbWVtYmVyIHZhcmlhYmxlIFxwIG12cCByZWZlcmVuY2Ugb2YgZ2l2ZW4gb2JqZWN0IHRvIGVxdWFsXDxWVFw+LgotLy8vIFxpbmdyb3VwIEZ1bmN0b3JBY2Nlc3NvcnMKLXRlbXBsYXRlIDxjbGFzcyBULCB0eXBlbmFtZSBWVD4KLWlubGluZSBjb25zdF9tZW1fdmFyMl90PGVxdWFsX3RvPFZUPiwgVCwgVlQ+Ci1tZW1fdmFyX2VxdWFsX3RvIChjb25zdCBWVCBUOjoqbXZwKQotewotICAgIHJldHVybiAoY29uc3RfbWVtX3ZhcjJfdDxlcXVhbF90bzxWVD4sVCxWVD4gKG12cCwgZXF1YWxfdG88VlQ+KCkpKTsKLX0KLQotLy8vIFJldHVybmVkIGZ1bmN0b3IgcGFzc2VzIG1lbWJlciB2YXJpYWJsZSBccCBtdnAgcmVmZXJlbmNlIG9mIGdpdmVuIG9iamVjdCB0byBsZXNzXDxWVFw+LgotLy8vIFxpbmdyb3VwIEZ1bmN0b3JBY2Nlc3NvcnMKLXRlbXBsYXRlIDxjbGFzcyBULCB0eXBlbmFtZSBWVD4KLWlubGluZSBjb25zdF9tZW1fdmFyMl90PGxlc3M8VlQ+LCBULCBWVD4KLW1lbV92YXJfbGVzcyAoY29uc3QgVlQgVDo6Km12cCkKLXsKLSAgICByZXR1cm4gKGNvbnN0X21lbV92YXIyX3Q8bGVzczxWVD4sVCxWVD4gKG12cCwgbGVzczxWVD4oKSkpOwotfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIERlcmVmZXJlbmNlIGFkYXB0b3JzICh1U1RMIGV4dGVuc2lvbikKLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jaWZuZGVmIERPWFlHRU5fU0hPVUxEX1NLSVBfVEhJUwotCi0jZGVmaW5lIERFUkVGRVJFTkNFUl9UKENsYXNzTmFtZSwgQXJnVHlwZSwgQmFzZUNsYXNzLCBDYWxsSW1wbCwgRnVuY3RvcktleSkJXAotICAgIHRlbXBsYXRlIDx0eXBlbmFtZSBULCB0eXBlbmFtZSBGdW5jdGlvbj4JCQkJCVwKLSAgICBjbGFzcyBDbGFzc05hbWUgOiBwdWJsaWMgQmFzZUNsYXNzIHsJCQkJCVwKLSAgICBwdWJsaWM6CQkJCQkJCQkJXAotCXR5cGVkZWYgQXJnVHlwZSoJCQlhcmd1bWVudF90eXBlOwkJCVwKLQl0eXBlZGVmIHR5cGVuYW1lIEZ1bmN0aW9uOjpyZXN1bHRfdHlwZQlyZXN1bHRfdHlwZTsJCQlcCi0gICAgcHVibGljOgkJCQkJCQkJCVwKLQlpbmxpbmUJCQlDbGFzc05hbWUgKEZ1bmN0aW9uIHBmbikgOiBtX3BmbiAocGZuKSB7fQlcCi0JaW5saW5lIHJlc3VsdF90eXBlCW9wZXJhdG9yKCkgQ2FsbEltcGwJCQkJXAotICAgIHByaXZhdGU6CQkJCQkJCQkJXAotCUZ1bmN0aW9uCQltX3BmbjsJCQkJCQlcCi0gICAgfTsJCQkJCQkJCQkJXAotCQkJCQkJCQkJCVwKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgdHlwZW5hbWUgRnVuY3Rpb24+CQkJCQlcCi0gICAgaW5saW5lIENsYXNzTmFtZTxULEZ1bmN0aW9uPiBfZGVyZWZlcmVuY2UgKEZ1bmN0aW9uIHBmbiwgRnVuY3RvcktleSkJXAotICAgIHsJCQkJCQkJCQkJXAotCXJldHVybiAoQ2xhc3NOYW1lPFQsRnVuY3Rpb24+IChwZm4pKTsJCQkJCVwKLSAgICB9Ci0KLSNkZWZpbmUgREVSRUZfVU5BUllfQVJHUwkJKGFyZ3VtZW50X3R5cGUgcCkgY29uc3QgXAotCQkJCQl7IHJldHVybiAobV9wZm4oKnApKTsgfQotI2RlZmluZSBERVJFRl9CSU5BUllfQVJHUwkJKGFyZ3VtZW50X3R5cGUgcDEsIGFyZ3VtZW50X3R5cGUgcDIpIGNvbnN0IFwKLQkJCQkJeyByZXR1cm4gKG1fcGZuKCpwMSwgKnAyKSk7IH0KLQotREVSRUZFUkVOQ0VSX1QoZGVyZWYxX3QsCVQsIAkJRlVOQ1RPUl9VTkFSWV9CQVNFKFQqKSwJCURFUkVGX1VOQVJZX0FSR1MsCUZVTkNUT1JfVU5BUllfQkFTRShUKSkKLURFUkVGRVJFTkNFUl9UKGNvbnN0X2RlcmVmMV90LAljb25zdCBULCAJRlVOQ1RPUl9VTkFSWV9CQVNFKGNvbnN0IFQqKSwJREVSRUZfVU5BUllfQVJHUywJRlVOQ1RPUl9VTkFSWV9CQVNFKGNvbnN0IFQpKQotREVSRUZFUkVOQ0VSX1QoZGVyZWYyX3QsCVQsIAkJRlVOQ1RPUl9CSU5BUllfQkFTRShUKiksCURFUkVGX0JJTkFSWV9BUkdTLAlGVU5DVE9SX0JJTkFSWV9CQVNFKFQpKQotREVSRUZFUkVOQ0VSX1QoY29uc3RfZGVyZWYyX3QsCWNvbnN0IFQsIAlGVU5DVE9SX0JJTkFSWV9CQVNFKGNvbnN0IFQqKSwJREVSRUZfQklOQVJZX0FSR1MsCUZVTkNUT1JfQklOQVJZX0JBU0UoY29uc3QgVCkpCi0KLSNkZWZpbmUgZGVyZWZlcmVuY2UoZikgX2RlcmVmZXJlbmNlKGYsZikKLQotI3VuZGVmIERFUkVGX1VOQVJZX0FSR1MKLSN1bmRlZiBERVJFRl9CSU5BUllfQVJHUwotCi0jZW5kaWYKLQotfSAvLyBuYW1lc3BhY2UgdXN0bAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdWhlYXAuaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VoZWFwLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkZmRkYWYuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdWhlYXAuaAorKysgL2Rldi9udWxsCkBAIC0xLDE1MyArMCwwIEBACi0vLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdXN0bCBsaWJyYXJ5LCBhbiBTVEwgaW1wbGVtZW50YXRpb24uCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDA1IGJ5IE1pa2UgU2hhcm92IDxtc2hhcm92QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLS8vIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCi0vLwotLy8gdWhlYXAuaAotLy8KLS8vIEltcGxlbWVudGF0aW9uIG9mIFNUTCBoZWFwIGFsZ29yaXRobXMuCi0vLwotLy8gVGhlIGZ1bmN0aW9uIHByb3RvdHlwZXMgYXJlIGNvcGllZAotLy8gZXhhY3RseSBmcm9tIHRoZSBTR0kgdmVyc2lvbiBvZiBTVEwgZG9jdW1lbnRhdGlvbiBhbG9uZyB3aXRoIGNvbW1lbnRzIGFib3V0Ci0vLyB0aGVpciB1c2UuIFRoZSBjb2RlIGlzIE5PVCB0aGUgc2FtZSwgdGhvdWdoIHRoZSBmdW5jdGlvbmFsaXR5IGlzLgotLy8KLQotI2lmbmRlZiBVSEVBUF9IXzU3NEI5RUFGMjcxQTFDMTA3MTkwQjRENTc1QTM1NkM1Ci0jZGVmaW5lIFVIRUFQX0hfNTc0QjlFQUYyNzFBMUMxMDcxOTBCNEQ1NzVBMzU2QzUKLQotI2luY2x1ZGUgInV2ZWN0b3IuaCIKLSNpbmNsdWRlICJ1YWxnb2Jhc2UuaCIKLQotbmFtZXNwYWNlIHVzdGwgewotCi0vLy8gXGJyaWVmIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gcmFuZ2UgaXMgYSBoZWFwIHVuZGVyIFxwIGNvbXAuCi0vLy8gQSBoZWFwIGlzIGEgc2VxdWVudGlhbGx5IGVuY29kZWQgYmluYXJ5IHRyZWUgd2hlcmUgZm9yIGV2ZXJ5IG5vZGUKLS8vLyBjb21wKG5vZGUsY2hpbGQxKSBpcyBmYWxzZSBhbmQgY29tcChub2RlLGNoaWxkMikgaXMgZmFsc2UuCi0vLy8gXGluZ3JvdXAgSGVhcEFsZ29yaXRobXMKLS8vLyBcaW5ncm91cCBDb25kaXRpb25BbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBSYW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgQ29tcGFyZT4KLWJvb2wgaXNfaGVhcCAoUmFuZG9tQWNjZXNzSXRlcmF0b3IgZmlyc3QsIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yIGxhc3QsIENvbXBhcmUgY29tcCkKLXsKLSAgICBSYW5kb21BY2Nlc3NJdGVyYXRvciBpQ2hpbGQgKGZpcnN0KTsKLSAgICBmb3IgKDsgKytpQ2hpbGQgPCBsYXN0OyArK2ZpcnN0KQotCWlmIChjb21wICgqZmlyc3QsICppQ2hpbGQpIHx8ICgrK2lDaGlsZCA8IGxhc3QgJiYgY29tcCAoKmZpcnN0LCAqaUNoaWxkKSkpCi0JICAgIHJldHVybiAoZmFsc2UpOwotICAgIHJldHVybiAodHJ1ZSk7Ci19Ci0KLS8vLyBcYnJpZWYgbWFrZV9oZWFwIHR1cm5zIHRoZSByYW5nZSBbZmlyc3QsIGxhc3QpIGludG8gYSBoZWFwCi0vLy8gQXQgY29tcGxldGlvbiwgaXNfaGVhcCAoZmlyc3QsIGxhc3QsIGNvbXApIGlzIHRydWUuCi0vLy8gVGhlIGFsZ29yaXRobSBpcyBhZGFwdGVkIGZyb20gIkNsYXNzaWMgRGF0YSBTdHJ1Y3R1cmVzIGluIEMrKyIgYnkgVGltb3RoeSBCdWRkLgotLy8vIFxpbmdyb3VwIEhlYXBBbGdvcml0aG1zCi0vLy8gXGluZ3JvdXAgU29ydGluZ0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBDb21wYXJlPgotdm9pZCBtYWtlX2hlYXAgKFJhbmRvbUFjY2Vzc0l0ZXJhdG9yIGZpcnN0LCBSYW5kb21BY2Nlc3NJdGVyYXRvciBsYXN0LCBDb21wYXJlIGNvbXApCi17Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0gICAgY29uc3QgdmFsdWVfdHlwZSB2ICgqZmlyc3QpOwotICAgIHVvZmZfdCBpQ2hpbGQsIGlIb2xlID0gMCwgaUVuZCAoZGlzdGFuY2UgKGZpcnN0LCBsYXN0KSk7Ci0gICAgd2hpbGUgKChpQ2hpbGQgPSAyICogaUhvbGUgKyAxKSA8IGlFbmQpIHsKLQlpZiAoaUNoaWxkICsgMSA8IGlFbmQpCS8vIFBpY2sgdGhlIGdyZWF0ZXIgY2hpbGQKLQkgICAgaUNoaWxkICs9IGNvbXAgKGZpcnN0W2lDaGlsZF0sIGZpcnN0W2lDaGlsZCArIDFdKTsKLQlpZiAoY29tcCAoZmlyc3RbaUNoaWxkXSwgdikpCi0JICAgIGJyZWFrOwkJLy8gRG9uZSB3aGVuIHBhcmVudCBpcyBncmVhdGVyIHRoYW4gYm90aCBjaGlsZHJlbi4KLQlmaXJzdFtpSG9sZV0gPSBmaXJzdFtpQ2hpbGRdOwotCWlIb2xlID0gaUNoaWxkOwotICAgIH0KLSAgICBpZiAoaUhvbGUgPCBpRW5kKQotCWZpcnN0W2lIb2xlXSA9IHY7Ci19Ci0KLS8vLyBcYnJpZWYgSW5zZXJ0cyB0aGUgKi0tbGFzdCBpbnRvIHRoZSBwcmVjZWVkaW5nIHJhbmdlIGFzc3VtZWQgdG8gYmUgYSBoZWFwLgotLy8vIFxpbmdyb3VwIEhlYXBBbGdvcml0aG1zCi0vLy8gXGluZ3JvdXAgTXV0YXRpbmdBbGdvcml0aG1zCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIENvbXBhcmU+Ci12b2lkIHB1c2hfaGVhcCAoUmFuZG9tQWNjZXNzSXRlcmF0b3IgZmlyc3QsIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yIGxhc3QsIENvbXBhcmUgY29tcCkKLXsKLSAgICBpZiAobGFzdCA8PSBmaXJzdCkKLQlyZXR1cm47Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8UmFuZG9tQWNjZXNzSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0gICAgY29uc3QgdmFsdWVfdHlwZSB2ICgqLS1sYXN0KTsKLSAgICB3aGlsZSAoZmlyc3QgPCBsYXN0KSB7Ci0JUmFuZG9tQWNjZXNzSXRlcmF0b3IgaVBhcmVudCA9IGZpcnN0ICsgKGRpc3RhbmNlKGZpcnN0LCBsYXN0KSAtIDEpIC8gMjsKLQlpZiAoY29tcCAodiwgKmlQYXJlbnQpKQotCSAgICBicmVhazsKLQkqbGFzdCA9ICppUGFyZW50OwotCWxhc3QgPSBpUGFyZW50OwotICAgIH0KLSAgICAqbGFzdCA9IHY7Ci19Ci0KLS8vLyBSZW1vdmVzIHRoZSBsYXJnZXN0IGVsZW1lbnQgZnJvbSB0aGUgaGVhcCAoKmZpcnN0KSBhbmQgcGxhY2VzIGl0IGF0ICoobGFzdC0xKQotLy8vIFtmaXJzdCwgbGFzdC0xKSBpcyBhIGhlYXAgYWZ0ZXIgdGhpcyBvcGVyYXRpb24uCi0vLy8gXGluZ3JvdXAgSGVhcEFsZ29yaXRobXMKLS8vLyBcaW5ncm91cCBNdXRhdGluZ0FsZ29yaXRobXMKLXRlbXBsYXRlIDx0eXBlbmFtZSBSYW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgQ29tcGFyZT4KLXZvaWQgcG9wX2hlYXAgKFJhbmRvbUFjY2Vzc0l0ZXJhdG9yIGZpcnN0LCBSYW5kb21BY2Nlc3NJdGVyYXRvciBsYXN0LCBDb21wYXJlIGNvbXApCi17Ci0gICAgaWYgKC0tbGFzdCA8PSBmaXJzdCkKLQlyZXR1cm47Ci0gICAgaXRlcl9zd2FwIChmaXJzdCwgbGFzdCk7Ci0gICAgbWFrZV9oZWFwIChmaXJzdCwgbGFzdCwgY29tcCk7Ci19Ci0KLS8vLyBTb3J0cyBoZWFwIFtmaXJzdCwgbGFzdCkgaW4gZGVzY2VuZGluZyBvcmRlciBhY2NvcmRpbmcgdG8gY29tcC4KLS8vLyBcaW5ncm91cCBIZWFwQWxnb3JpdGhtcwotLy8vIFxpbmdyb3VwIFNvcnRpbmdBbGdvcml0aG1zCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIENvbXBhcmU+Ci12b2lkIHNvcnRfaGVhcCAoUmFuZG9tQWNjZXNzSXRlcmF0b3IgZmlyc3QsIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yIGxhc3QsIENvbXBhcmUgY29tcCkKLXsKLSAgICBmb3IgKDsgZmlyc3QgPCBsYXN0OyAtLWxhc3QpCi0JcG9wX2hlYXAgKGZpcnN0LCBsYXN0LCBjb21wKTsKLX0KLQotI2RlZmluZSBIRUFQX0ZOX1dJVEhfTEVTUyhydHlwZSwgbmFtZSkJXAotdGVtcGxhdGUgPHR5cGVuYW1lIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yPlwKLWlubGluZSBydHlwZSBuYW1lIChSYW5kb21BY2Nlc3NJdGVyYXRvciBmaXJzdCwgUmFuZG9tQWNjZXNzSXRlcmF0b3IgbGFzdCkJCVwKLXsJCQkJCQkJCQkJCVwKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxSYW5kb21BY2Nlc3NJdGVyYXRvcj46OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsJXAotICAgIHJldHVybiAobmFtZSAoZmlyc3QsIGxhc3QsIGxlc3M8dmFsdWVfdHlwZT4oKSkpOwkJCQkJXAotfQotSEVBUF9GTl9XSVRIX0xFU1MgKGJvb2wsIGlzX2hlYXApCi1IRUFQX0ZOX1dJVEhfTEVTUyAodm9pZCwgbWFrZV9oZWFwKQotSEVBUF9GTl9XSVRIX0xFU1MgKHZvaWQsIHB1c2hfaGVhcCkKLUhFQVBfRk5fV0lUSF9MRVNTICh2b2lkLCBwb3BfaGVhcCkKLUhFQVBfRk5fV0lUSF9MRVNTICh2b2lkLCBzb3J0X2hlYXApCi0jdW5kZWYgSEVBUF9GTl9XSVRIX0xFU1MKLQotLy8vIFxjbGFzcyBwcmlvcml0eV9xdWV1ZSB1aGVhcC5oIHVzdGwuaAotLy8vIFxpbmdyb3VwIFNlcXVlbmNlcwotLy8vCi0vLy8gXGJyaWVmIFNvcnRlZCBxdWV1ZSBhZGFwdGVyIHRvIHVTVEwgY29udGFpbmVycy4KLS8vLwotLy8vIEFjdHMganVzdCBsaWtlIHRoZSBxdWV1ZSBhZGFwdGVyLCBidXQga2VlcHMgdGhlIGVsZW1lbnRzIHNvcnRlZCBieSBwcmlvcml0eQotLy8vIHNwZWNpZmllZCBieSB0aGUgZ2l2ZW4gY29tcGFyaXNvbiBvcGVyYXRvci4KLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEN0ciA9IHZlY3RvcjxUPiwgdHlwZW5hbWUgQ29tcCA9IGxlc3M8dHlwZW5hbWUgQ3RyOjp2YWx1ZV90eXBlPiA+Ci1jbGFzcyBwcmlvcml0eV9xdWV1ZSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBDdHIJCQkJCWJhc2VfY3RyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV9jdHI6OnZhbHVlX3R5cGUJdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfY3RyOjpzaXplX3R5cGUJc2l6ZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV9jdHI6OmNvbnN0X3BvaW50ZXIJY29uc3RfcG9pbnRlcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfY3RyOjpjb25zdF9yZWZlcmVuY2UJcmVmZXJlbmNlOwotcHVibGljOgotCQkJcHJpb3JpdHlfcXVldWUgKGNvbnN0IENvbXAmIGMgPSBDb21wKCkpIDogbV92KCksIG1fYyAoYykge30KLQkJCXByaW9yaXR5X3F1ZXVlIChjb25zdF9wb2ludGVyIGYsIGNvbnN0X3BvaW50ZXIgbCwgY29uc3QgQ29tcCYgYyA9IENvbXAoKSkKLQkJCSAgICA6IG1fdiAoZiwgbCksIG1fYyAoYykgeyBtYWtlX2hlYXAgKG1fdi5iZWdpbigpLCBtX3YuZW5kKCksIG1fYyk7IH0KLSAgICBpbmxpbmUgc2l6ZV90eXBlCXNpemUgKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChtX3Yuc2l6ZSgpKTsgfQotICAgIGlubGluZSBib29sCQllbXB0eSAodm9pZCkgY29uc3QJeyByZXR1cm4gKG1fdi5lbXB0eSgpKTsgfQotICAgIGlubGluZSByZWZlcmVuY2UJdG9wICh2b2lkKSBjb25zdAl7IHJldHVybiAobV92LmF0KDApKTsgfQotICAgIGlubGluZSB2b2lkCQlwdXNoIChyZWZlcmVuY2UgdikJeyBtX3YucHVzaF9iYWNrICh2KTsgbWFrZV9oZWFwIChtX3YuYmVnaW4oKSwgbV92LmVuZCgpLCBtX2MpOyB9Ci0gICAgaW5saW5lIHZvaWQJCXBvcCAodm9pZCkJCXsgcG9wX2hlYXAgKG1fdi5iZWdpbigpLCBtX3YuZW5kKCkpOyBtX3YucG9wX2JhY2soKTsgfQotcHJpdmF0ZToKLSAgICBiYXNlX2N0cgkJbV92OwkvLy88IEVsZW1lbnQgY29udGFpbmVyLgotICAgIENvbXAJCW1fYzsJLy8vPCBDb21wYXJpc29uIGZ1bmN0b3IgYnkgdmFsdWUuCi19OwotCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91aW9zLmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91aW9zLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxNTNiZTUuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdWlvcy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTA3ICswLDAgQEAKLS8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB1c3RsIGxpYnJhcnksIGFuIFNUTCBpbXBsZW1lbnRhdGlvbi4KLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgYnkgTWlrZSBTaGFyb3YgPG1zaGFyb3ZAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotLy8gVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KLS8vCi0vLyB1aW9zLmgKLS8vCi0vLyBUeXBlcyB1c2VkIGJ5IHRoZSBzdHJlYW1zIGZvciBvcHRpb24gc2V0dGluZy4KLS8vCi0KLSNpZm5kZWYgVUlPU19IXzYzMEMxNkUzMTZGNzY1MEUzQTAyRTFDNjYxMUI3ODlBCi0jZGVmaW5lIFVJT1NfSF82MzBDMTZFMzE2Rjc2NTBFM0EwMkUxQzY2MTFCNzg5QQotCi0jaW5jbHVkZSAidXR5cGVzLmgiCi0KLW5hbWVzcGFjZSB1c3RsIHsKLQotY2xhc3MgZmlsZV9leGNlcHRpb247Ci0KLWNvbnN0IGNoYXIgZW5kbCA9ICdcbic7CQkvLy88IEVuZCBvZiBsaW5lIGNoYXJhY3Rlci4KLWNvbnN0IGNoYXIgZW5kcyA9ICdcMCc7CQkvLy88IEVuZCBvZiBzdHJpbmcgY2hhcmFjdGVyLgotCi0vLy8gRGVmaW5lcyB0eXBlcyBhbmQgY29uc3RhbnRzIHVzZWQgYnkgYWxsIHN0cmVhbSBjbGFzc2VzLgotY2xhc3MgaW9zX2Jhc2UgewotcHVibGljOgotICAgIC8vLyBVc2VkIHRvIHNldCBwYXJhbWV0ZXJzIGZvciBzdHJpbmdzdHJlYW1zCi0gICAgZW51bSBmbXRmbGFncyB7Ci0JYm9vbGFscGhhCT0gKDEgPDwgMCksCS8vLzwgQm9vbGVhbiB2YWx1ZXMgcHJpbnRlZCBhcyB0ZXh0LgotCWRlYwkJPSAoMSA8PCAxKSwJLy8vPCBEZWNpbWFsIG51bWJlciBvdXRwdXQuCi0JZml4ZWQJCT0gKDEgPDwgMiksCS8vLzwgRml4ZWQtcG9pbnQgZmxvYXQgb3V0cHV0LgotCWhleAkJPSAoMSA8PCAzKSwJLy8vPCBIZXhhZGVjaW1hbCBudW1iZXIgb3V0cHV0LgotCWludGVybmFsCT0gKDEgPDwgNCksCi0JbGVmdAkJPSAoMSA8PCA1KSwJLy8vPCBMZWZ0IGFsaWdubWVudC4KLQlvY3QJCT0gKDEgPDwgNiksCS8vLzwgT2N0YWwgbnVtYmVyIG91dHB1dC4KLQlyaWdodAkJPSAoMSA8PCA3KSwJLy8vPCBSaWdodCBhbGlnbm1lbnQuCi0Jc2NpZW50aWZpYwk9ICgxIDw8IDgpLAkvLy88IFNjaWVudGlmaWMgZmxvYXQgZm9ybWF0LgotCXNob3diYXNlCT0gKDEgPDwgOSksCS8vLzwgQWRkIDB4IG9yIDAgcHJlZml4ZXMgb24gaGV4IGFuZCBvY3RhbCBudW1iZXJzLgotCXNob3dwb2ludAk9ICgxIDw8IDEwKSwJLy8vPCBQcmludCBkZWNpbWFsIHBvaW50LgotCXNob3dwb3MJCT0gKDEgPDwgMTEpLAotCXNraXB3cwkJPSAoMSA8PCAxMiksCS8vLzwgU2tpcCB3aGl0ZXNwYWNlIHdoZW4gcmVhZGluZy4KLQl1bml0YnVmCQk9ICgxIDw8IDEzKSwKLQl1cHBlcmNhc2UJPSAoMSA8PCAxNCksCi0JYWRqdXN0ZmllbGQJPSAoMSA8PCAxNSksCi0JYmFzZWZpZWxkCT0gKDEgPDwgMTYpLAotCWZsb2F0ZmllbGQJPSAoMSA8PCAxNykKLSAgICB9OwotICAgIC8vLyBGb3IgZmlsZS1iYXNlZCBzdHJlYW1zLCBzcGVjaWZpZXMgZmQgbW9kZS4KLSAgICBlbnVtIG9wZW5tb2RlX2JpdHMgewotCWluCT0gKDEgPDwgMCksCi0Jb3V0CT0gKDEgPDwgMSksCi0JYXBwCT0gKDEgPDwgMiksCi0JYXRlCT0gKDEgPDwgMyksCi0JYmluYXJ5CT0gKDEgPDwgNCksCi0JdHJ1bmMJPSAoMSA8PCA1KSwKLQkjaWZuZGVmIERPWFlHRU5fU0hPVUxEX1NLSVBfVEhJUwotCW5vbmJsb2NrPSAoMSA8PCA2KSwKLQlub2NyZWF0ZT0gKDEgPDwgNyksCi0Jbm9jdHR5CT0gKDEgPDwgOCksCi0Jbm9tYml0cwk9IDkKLQkjZW5kaWYKLSAgICB9OwotICAgIC8vLyBTZWVrIGRpcmVjdGlvbnMsIGVxdWl2YWxlbnQgdG8gU0VFS19TRVQsIFNFRUtfQ1VSLCBhbmQgU0VFS19FTkQuCi0gICAgZW51bSBzZWVrZGlyIHsKLQliZWcsCi0JY3VyLAotCWVuZAotICAgIH07Ci0gICAgLy8vIEkvTyBzdGF0ZSBiaXRtYXNrcy4KLSAgICBlbnVtIGlvc3RhdGVfYml0cyB7Ci0JZ29vZGJpdAk9IDAsCi0JYmFkYml0CT0gKDEgPDwgMCksCi0JZW9mYml0CT0gKDEgPDwgMSksCi0JZmFpbGJpdAk9ICgxIDw8IDIpLAotCSNpZm5kZWYgRE9YWUdFTl9TSE9VTERfU0tJUF9USElTCi0JbmJhZGJpdHMgPSAzLAotCWFsbGJhZGJpdHMgPSAweDcKLQkjZW5kaWYKLSAgICB9OwotCi0gICAgdHlwZWRlZiB1aW50MzJfdAkJb3Blbm1vZGU7CS8vLzwgSG9sZHMgb3Blbm1vZGVfYml0cy4KLSAgICB0eXBlZGVmIHVpbnQzMl90CQlpb3N0YXRlOwkvLy88IEhvbGRzIGlvc3RhdGVfYml0cyBmb3IgYSBmaWxlIHN0cmVhbS4KLSAgICB0eXBlZGVmIGZpbGVfZXhjZXB0aW9uCWZhaWx1cmU7CS8vLzwgVGhyb3duIGJ5IGZzdHJlYW0gb24gZXJyb3JzLgotCi0gICAgc3RhdGljIGNvbnN0IGNoYXIgY19EZWZhdWx0RGVsaW1pdGVycyBbMTZdOwkvLy88IERlZmF1bHQgd29yZCBkZWxpbWl0ZXJzIGZvciBzdHJpbmdzdHJlYW1zLgotcHVibGljOgotICAgIGlubGluZQkJaW9zX2Jhc2UgKHZvaWQpCQkJOiBtX1N0YXRlIChnb29kYml0KSwgbV9FeGNlcHRpb25zIChnb29kYml0KSB7fQotICAgIGlubGluZSBpb3N0YXRlCXJkc3RhdGUgKHZvaWQpIGNvbnN0CQl7IHJldHVybiAobV9TdGF0ZSk7IH0KLSAgICBpbmxpbmUgYm9vbAkJYmFkICh2b2lkKSBjb25zdAkJeyByZXR1cm4gKHJkc3RhdGUoKSAmIGJhZGJpdCk7IH0KLSAgICBpbmxpbmUgYm9vbAkJZ29vZCAodm9pZCkgY29uc3QJCXsgcmV0dXJuIChyZHN0YXRlKCkgPT0gZ29vZGJpdCk7IH0KLSAgICBpbmxpbmUgYm9vbAkJZmFpbCAodm9pZCkgY29uc3QJCXsgcmV0dXJuIChyZHN0YXRlKCkgJiAoYmFkYml0IHwgZmFpbGJpdCkpOyB9Ci0gICAgaW5saW5lIGJvb2wJCWVvZiAodm9pZCkgY29uc3QJCXsgcmV0dXJuIChyZHN0YXRlKCkgJiBlb2ZiaXQpOyB9Ci0gICAgaW5saW5lIGJvb2wJCW9wZXJhdG9yISAodm9pZCkgY29uc3QJCXsgcmV0dXJuIChmYWlsKCkpOyB9Ci0gICAgaW5saW5lIHZvaWQJCWNsZWFyIChpb3N0YXRlIHYgPSBnb29kYml0KQl7IG1fU3RhdGUgPSB2OyB9Ci0gICAgaW5saW5lIHZvaWQJCXNldHN0YXRlIChpb3N0YXRlIHYpCQl7IG1fU3RhdGUgfD0gdjsgfQotICAgIGlubGluZSBpb3N0YXRlCWV4Y2VwdGlvbnMgKHZvaWQpIGNvbnN0CQl7IHJldHVybiAobV9FeGNlcHRpb25zKTsgfQotICAgIGlubGluZSBpb3N0YXRlCWV4Y2VwdGlvbnMgKGlvc3RhdGUgdikJCXsgcmV0dXJuIChtX0V4Y2VwdGlvbnMgPSB2KTsgfQotcHJvdGVjdGVkOgotICAgIGlubGluZSBib29sCQlzZXRfYW5kX3Rocm93IChpb3N0YXRlIHYpCXsgc2V0c3RhdGUodik7IHJldHVybiAoZXhjZXB0aW9ucygpICYgdik7IH0KLXByaXZhdGU6Ci0gICAgdWludDE2X3QJCW1fU3RhdGU7CS8vLzwgT3BlbiBzdGF0ZSwgdXNpbmcgaW9zOjppb3N0YXRlX2JpdHMuCi0gICAgdWludDE2X3QJCW1fRXhjZXB0aW9uczsJLy8vPCBFeGNlcHRpb24gZmxhZ3MsIHVzaW5nIGlvczo6aW9zdGF0ZV9iaXRzLgotfTsKLQotfSAvLyBuYW1lc3BhY2UgdXN0bAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdWlvc2Z1bmMuaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3Vpb3NmdW5jLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlMjZlZDEuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdWlvc2Z1bmMuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMyArMCwwIEBACi0vLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdXN0bCBsaWJyYXJ5LCBhbiBTVEwgaW1wbGVtZW50YXRpb24uCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDA1IGJ5IE1pa2UgU2hhcm92IDxtc2hhcm92QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLS8vIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCi0vLwotLy8gdWlvc2Z1bmMuaAotLy8KLQotI2lmbmRlZiBVSU9TRlVOQ19IXzczMEMxNkUzMTZGNzY1MEUzQTAyRTFDNjYxMUI3ODlBCi0jZGVmaW5lIFVJT1NGVU5DX0hfNzMwQzE2RTMxNkY3NjUwRTNBMDJFMUM2NjExQjc4OUEKLQotI2luY2x1ZGUgInNvc3RyZWFtLmgiCi0KLW5hbWVzcGFjZSB1c3RsIHsKLQotY2xhc3MgaW9zIDogcHVibGljIGlvc19iYXNlIHsKLXB1YmxpYzoKLSAgICAvLy8gXGNsYXNzIGFsaWduIHVpb3NmdW5jLmggdXN0bC5oCi0gICAgLy8vIFxpbmdyb3VwIFN0cmVhbUZ1bmN0b3JzCi0gICAgLy8vIFxicmllZiBTdHJlYW0gZnVuY3RvciB0byBhbGxvdyBpbmxpbmUgYWxpZ24oKSBjYWxscy4KLSAgICAvLy8KLSAgICAvLy8gRXhhbXBsZTogb3MgPDwgaW9zOjphbGlnbihzaXplb2YodWludDE2X3QpKTsKLSAgICAvLy8KLSAgICBjbGFzcyBhbGlnbiB7Ci0gICAgcHVibGljOgotCWlubGluZSBleHBsaWNpdAkJYWxpZ24gKHNpemVfdCBncmFpbiA9IGNfRGVmYXVsdEFsaWdubWVudCkgOiBtX0dyYWluKGdyYWluKSB7fQotCWlubGluZSBpc3RyZWFtJgkJYXBwbHkgKGlzdHJlYW0mIGlzKSBjb25zdCB7IGlzLmFsaWduIChtX0dyYWluKTsgcmV0dXJuIChpcyk7IH0KLQlpbmxpbmUgb3N0cmVhbSYJCWFwcGx5IChvc3RyZWFtJiBvcykgY29uc3QgeyBvcy5hbGlnbiAobV9HcmFpbik7IHJldHVybiAob3MpOyB9Ci0JaW5saW5lIHNpemVfdAkJc3RyZWFtX3NpemUgKHZvaWQpIGNvbnN0ICB7IHJldHVybiAobV9HcmFpbiAtIDEpOyB9Ci0gICAgcHJpdmF0ZToKLQljb25zdCBzaXplX3QJCW1fR3JhaW47Ci0gICAgfTsKLQotICAgIC8vLyBcY2xhc3MgdGFsaWduIHVpb3NmdW5jLmggdXN0bC5oCi0gICAgLy8vIFxpbmdyb3VwIFN0cmVhbUZ1bmN0b3JzCi0gICAgLy8vIFxicmllZiBTdHJlYW0gZnVuY3RvciB0byBhbGxvdyB0eXBlLWJhc2VkIGFsaWdubWVudC4KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLSAgICBjbGFzcyB0YWxpZ24gOiBwdWJsaWMgYWxpZ24gewotICAgIHB1YmxpYzoKLQlpbmxpbmUgZXhwbGljaXQJCXRhbGlnbiAodm9pZCkgOiBhbGlnbiAoYWxpZ25vZiAoVCgpKSkge30KLSAgICB9OwotCi0gICAgLy8vIFxjbGFzcyBza2lwIHVpb3NmdW5jLmggdXN0bC5oCi0gICAgLy8vIFxpbmdyb3VwIFN0cmVhbUZ1bmN0b3JzCi0gICAgLy8vIFxicmllZiBTdHJlYW0gZnVuY3RvciB0byBhbGxvdyBpbmxpbmUgc2tpcCgpIGNhbGxzLgotICAgIC8vLwotICAgIC8vLyBFeGFtcGxlOiBvcyA8PCBpb3M6OnNraXAoc2l6ZW9mKHVpbnQxNl90KSk7Ci0gICAgLy8vCi0gICAgY2xhc3Mgc2tpcCB7Ci0gICAgcHVibGljOgotCWlubGluZSBleHBsaWNpdCAJc2tpcCAoc2l6ZV90IG5CeXRlcykgOiBtX25CeXRlcyhuQnl0ZXMpIHt9Ci0JaW5saW5lIGlzdHJlYW0mCQlhcHBseSAoaXN0cmVhbSYgaXMpIGNvbnN0IHsgaXMuc2tpcCAobV9uQnl0ZXMpOyByZXR1cm4gKGlzKTsgfQotCWlubGluZSBvc3RyZWFtJgkJYXBwbHkgKG9zdHJlYW0mIG9zKSBjb25zdCB7IG9zLnNraXAgKG1fbkJ5dGVzKTsgcmV0dXJuIChvcyk7IH0KLQlpbmxpbmUgc2l6ZV90CQlzdHJlYW1fc2l6ZSAodm9pZCkgY29uc3QgIHsgcmV0dXJuIChtX25CeXRlcyk7IH0KLSAgICBwcml2YXRlOgotCWNvbnN0IHNpemVfdAkJbV9uQnl0ZXM7Ci0gICAgfTsKLQotICAgIC8vLyBcY2xhc3Mgd2lkdGggdWlvc2Z1bmMuaCB1c3RsLmgKLSAgICAvLy8gXGluZ3JvdXAgU3RyZWFtRnVuY3RvcnMKLSAgICAvLy8gXGJyaWVmIFN0cmVhbSBmdW5jdG9yIHRvIGFsbG93IGlubGluZSBzZXRfd2lkdGgoKSBjYWxscy4KLSAgICAvLy8KLSAgICAvLy8gRXhhbXBsZTogb3MgPDwgaW9zOjp3aWR0aCgxNSk7Ci0gICAgLy8vCi0gICAgY2xhc3Mgd2lkdGggewotICAgIHB1YmxpYzoKLQlpbmxpbmUgZXhwbGljaXQJCXdpZHRoIChzaXplX3QgbkJ5dGVzKSA6IG1fbkJ5dGVzKG5CeXRlcykge30KLQlpbmxpbmUgb3N0cmluZ3N0cmVhbSYJYXBwbHkgKG9zdHJpbmdzdHJlYW0mIG9zKSBjb25zdCB7IG9zLnNldF93aWR0aCAobV9uQnl0ZXMpOyByZXR1cm4gKG9zKTsgfQotICAgIHByaXZhdGU6Ci0JY29uc3Qgc2l6ZV90CQltX25CeXRlczsKLSAgICB9OwotCi0gICAgLy8vIFxjbGFzcyBiYXNlIHVpb3NmdW5jLmggdXN0bC5oCi0gICAgLy8vIFxpbmdyb3VwIFN0cmVhbUZ1bmN0b3JzCi0gICAgLy8vIFxicmllZiBTdHJlYW0gZnVuY3RvciB0byBhbGxvdyBpbmxpbmUgc2V0X2Jhc2UoKSBjYWxscy4KLSAgICAvLy8KLSAgICAvLy8gRXhhbXBsZTogb3MgPDwgaW9zOjpiYXNlKDE1KTsKLSAgICAvLy8KLSAgICBjbGFzcyBiYXNlIHsKLSAgICBwdWJsaWM6Ci0JaW5saW5lIGV4cGxpY2l0CQliYXNlIChzaXplX3QgbikgOiBtX0Jhc2Uobikge30KLQlpbmxpbmUgb3N0cmluZ3N0cmVhbSYJYXBwbHkgKG9zdHJpbmdzdHJlYW0mIG9zKSBjb25zdCB7IG9zLnNldF9iYXNlIChtX0Jhc2UpOyByZXR1cm4gKG9zKTsgfQotICAgIHByaXZhdGU6Ci0JY29uc3Qgc2l6ZV90CQltX0Jhc2U7Ci0gICAgfTsKLX07Ci0KLWlubGluZSBpc3RyZWFtJiBvcGVyYXRvcj4+IChpc3RyZWFtJiBpcywgY29uc3QgaW9zOjpza2lwJiBvcCkJeyByZXR1cm4gKG9wLmFwcGx5IChpcykpOyB9Ci1pbmxpbmUgb3N0cmVhbSYgb3BlcmF0b3I8PCAob3N0cmVhbSYgb3MsIGNvbnN0IGlvczo6c2tpcCYgb3ApCXsgcmV0dXJuIChvcC5hcHBseSAob3MpKTsgfQotaW5saW5lIHNpemVfdCBzdHJlYW1fc2l6ZV9vZiAoY29uc3QgaW9zOjpza2lwJiBvcCkJCXsgcmV0dXJuIChvcC5zdHJlYW1fc2l6ZSgpKTsgfQotaW5saW5lIGlzdHJlYW0mIG9wZXJhdG9yPj4gKGlzdHJlYW0mIGlzLCBjb25zdCBpb3M6OmFsaWduJiBvcCkJeyByZXR1cm4gKG9wLmFwcGx5IChpcykpOyB9Ci1pbmxpbmUgb3N0cmVhbSYgb3BlcmF0b3I8PCAob3N0cmVhbSYgb3MsIGNvbnN0IGlvczo6YWxpZ24mIG9wKQl7IHJldHVybiAob3AuYXBwbHkgKG9zKSk7IH0KLWlubGluZSBzaXplX3Qgc3RyZWFtX3NpemVfb2YgKGNvbnN0IGlvczo6YWxpZ24mIG9wKQkJeyByZXR1cm4gKG9wLnN0cmVhbV9zaXplKCkpOyB9Ci1pbmxpbmUgb3N0cmluZ3N0cmVhbSYgb3BlcmF0b3I8PCAob3N0cmluZ3N0cmVhbSYgb3MsIGNvbnN0IGlvczo6d2lkdGgmIG9wKQl7IHJldHVybiAob3AuYXBwbHkgKG9zKSk7IH0KLWlubGluZSBvc3RyaW5nc3RyZWFtJiBvcGVyYXRvcjw8IChvc3RyaW5nc3RyZWFtJiBvcywgY29uc3QgaW9zOjpiYXNlJiBvcCkJeyByZXR1cm4gKG9wLmFwcGx5IChvcykpOyB9Ci0KLX0gLy8gbmFtZXNwYWNlIHVzdGwKLQotQ0FTVF9TVFJFQU1BQkxFKHVzdGw6Omlvczo6Zm10ZmxhZ3MsIHVpbnQzMl90KQotQ0FTVF9TVFJFQU1BQkxFKHVzdGw6Omlvczo6c2Vla2RpciwgdWludDMyX3QpCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91aXRlcmF0b3IuaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VpdGVyYXRvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OGMwZDJkLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VpdGVyYXRvci5oCisrKyAvZGV2L251bGwKQEAgLTEsMjY4ICswLDAgQEAKLS8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB1c3RsIGxpYnJhcnksIGFuIFNUTCBpbXBsZW1lbnRhdGlvbi4KLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgYnkgTWlrZSBTaGFyb3YgPG1zaGFyb3ZAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotLy8gVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KLS8vCi0vLy8gXGZpbGUgdWl0ZXJhdG9yLmgKLS8vLyBcYnJpZWYgQ29udGFpbnMgdmFyaW91cyBpdGVyYXRvciBhZGFwdGVycy4KLS8vCi0KLSNpZm5kZWYgVUlURVJBVE9SX0hfNUJDQTE3NkM3MjE0QTMwRjIwNjlFMjYxNEQyREMyMjYKLSNkZWZpbmUgVUlURVJBVE9SX0hfNUJDQTE3NkM3MjE0QTMwRjIwNjlFMjYxNEQyREMyMjYKLQotI2luY2x1ZGUgInVhc3NlcnQuaCIKLSNpbmNsdWRlICJ1dHlwZXMuaCIKLQotbmFtZXNwYWNlIHVzdGwgewotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8vIFxzdHJ1Y3QgaXRlcmF0b3JfdHJhaXRzIHVpdGVyYXRvci5oIHVzdGwuaAotLy8vIFxicmllZiBDb250YWlucyB0aGUgdHlwZSB0cmFpdHMgb2YgXHAgSXRlcmF0b3IKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIEl0ZXJhdG9yPgotc3RydWN0IGl0ZXJhdG9yX3RyYWl0cyB7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBJdGVyYXRvcjo6dmFsdWVfdHlwZSAgICAgICAgdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEl0ZXJhdG9yOjpkaWZmZXJlbmNlX3R5cGUgICBkaWZmZXJlbmNlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBJdGVyYXRvcjo6cG9pbnRlciAgICAgICAgICAgcG9pbnRlcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIEl0ZXJhdG9yOjpyZWZlcmVuY2UgICAgICAgICByZWZlcmVuY2U7Ci19OwotCi0jaWZuZGVmIERPWFlHRU5fU0hPVUxEX1NLSVBfVEhJUwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBpdGVyYXRvcl90cmFpdHM8VCo+IHsKLSAgICB0eXBlZGVmIFQJCXZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiBwdHJkaWZmX3QJZGlmZmVyZW5jZV90eXBlOwotICAgIHR5cGVkZWYgY29uc3QgVCoJY29uc3RfcG9pbnRlcjsKLSAgICB0eXBlZGVmIFQqCQlwb2ludGVyOwotICAgIHR5cGVkZWYgVCYJCXJlZmVyZW5jZTsKLX07Ci0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotc3RydWN0IGl0ZXJhdG9yX3RyYWl0czxjb25zdCBUKj4gewotICAgIHR5cGVkZWYgVAkJdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIHB0cmRpZmZfdAlkaWZmZXJlbmNlX3R5cGU7Ci0gICAgdHlwZWRlZiBjb25zdCBUKgljb25zdF9wb2ludGVyOwotICAgIHR5cGVkZWYgY29uc3QgVCoJcG9pbnRlcjsKLSAgICB0eXBlZGVmIGNvbnN0IFQmCXJlZmVyZW5jZTsKLX07Ci0KLXRlbXBsYXRlIDw+Ci1zdHJ1Y3QgaXRlcmF0b3JfdHJhaXRzPHZvaWQqPiB7Ci0gICAgdHlwZWRlZiB1aW50OF90CXZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiBwdHJkaWZmX3QJZGlmZmVyZW5jZV90eXBlOwotICAgIHR5cGVkZWYgY29uc3Qgdm9pZCoJY29uc3RfcG9pbnRlcjsKLSAgICB0eXBlZGVmIHZvaWQqCXBvaW50ZXI7Ci0gICAgdHlwZWRlZiB2YWx1ZV90eXBlJglyZWZlcmVuY2U7Ci19OwotCi10ZW1wbGF0ZSA8Pgotc3RydWN0IGl0ZXJhdG9yX3RyYWl0czxjb25zdCB2b2lkKj4gewotICAgIHR5cGVkZWYgdWludDhfdAkJdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIHB0cmRpZmZfdAkJZGlmZmVyZW5jZV90eXBlOwotICAgIHR5cGVkZWYgY29uc3Qgdm9pZCoJCWNvbnN0X3BvaW50ZXI7Ci0gICAgdHlwZWRlZiBjb25zdCB2b2lkKgkJcG9pbnRlcjsKLSAgICB0eXBlZGVmIGNvbnN0IHZhbHVlX3R5cGUmCXJlZmVyZW5jZTsKLX07Ci0KLSNlbmRpZgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8vIFxjbGFzcyByZXZlcnNlX2l0ZXJhdG9yIHVpdGVyYXRvci5oIHVzdGwuaAotLy8vIFxpbmdyb3VwIEl0ZXJhdG9yQWRhcHRvcnMKLS8vLyBcYnJpZWYgV3JhcHMgXHAgSXRlcmF0b3IgdG8gYmVoYXZlIGluIGFuIGV4YWN0bHkgb3Bwb3NpdGUgbWFubmVyLgotLy8vCi10ZW1wbGF0ZSA8Y2xhc3MgSXRlcmF0b3I+Ci1jbGFzcyByZXZlcnNlX2l0ZXJhdG9yIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj46OnZhbHVlX3R5cGUJdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj46OmRpZmZlcmVuY2VfdHlwZQlkaWZmZXJlbmNlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+Ojpwb2ludGVyCQlwb2ludGVyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPjo6cmVmZXJlbmNlCXJlZmVyZW5jZTsKLXB1YmxpYzoKLSAgICAJCQkJcmV2ZXJzZV9pdGVyYXRvciAodm9pZCkgOiBtX2koKSB7fQotICAgIGV4cGxpY2l0CQkJcmV2ZXJzZV9pdGVyYXRvciAoSXRlcmF0b3IgaXRlcikgOiBtX2kgKGl0ZXIpIHt9Ci0gICAgaW5saW5lIGJvb2wJCQlvcGVyYXRvcj09IChjb25zdCByZXZlcnNlX2l0ZXJhdG9yJiBpdGVyKSBjb25zdCB7IHJldHVybiAobV9pID09IGl0ZXIubV9pKTsgfQotICAgIGlubGluZSBib29sCQkJb3BlcmF0b3I8IChjb25zdCByZXZlcnNlX2l0ZXJhdG9yJiBpdGVyKSBjb25zdCB7IHJldHVybiAoaXRlci5tX2kgPCBtX2kpOyB9Ci0gICAgaW5saW5lIEl0ZXJhdG9yCQliYXNlICh2b2lkKSBjb25zdCB7IHJldHVybiAobV9pKTsgfQotICAgIGlubGluZSByZWZlcmVuY2UJCW9wZXJhdG9yKiAodm9pZCkgY29uc3QgeyBJdGVyYXRvciBwcmV2IChtX2kpOyAtLXByZXY7IHJldHVybiAoKnByZXYpOyB9Ci0gICAgaW5saW5lIHBvaW50ZXIJCW9wZXJhdG9yLT4gKHZvaWQpIGNvbnN0IHsgcmV0dXJuICgmKG9wZXJhdG9yKigpKSk7IH0KLSAgICBpbmxpbmUgcmV2ZXJzZV9pdGVyYXRvciYJb3BlcmF0b3IrKyAodm9pZCkgeyAtLSBtX2k7IHJldHVybiAoKnRoaXMpOyB9Ci0gICAgaW5saW5lIHJldmVyc2VfaXRlcmF0b3ImCW9wZXJhdG9yLS0gKHZvaWQpIHsgKysgbV9pOyByZXR1cm4gKCp0aGlzKTsgfQotICAgIGlubGluZSByZXZlcnNlX2l0ZXJhdG9yCW9wZXJhdG9yKysgKGludCkgeyByZXZlcnNlX2l0ZXJhdG9yIHByZXYgKCp0aGlzKTsgLS0gbV9pOyByZXR1cm4gKHByZXYpOyB9Ci0gICAgaW5saW5lIHJldmVyc2VfaXRlcmF0b3IJb3BlcmF0b3ItLSAoaW50KSB7IHJldmVyc2VfaXRlcmF0b3IgcHJldiAoKnRoaXMpOyArKyBtX2k7IHJldHVybiAocHJldik7IH0KLSAgICBpbmxpbmUgcmV2ZXJzZV9pdGVyYXRvciYJb3BlcmF0b3IrPSAoc2l6ZV90IG4pIHsgbV9pIC09IG47IHJldHVybiAoKnRoaXMpOyB9Ci0gICAgaW5saW5lIHJldmVyc2VfaXRlcmF0b3ImCW9wZXJhdG9yLT0gKHNpemVfdCBuKSB7IG1faSArPSBuOyByZXR1cm4gKCp0aGlzKTsgfQotICAgIGlubGluZSByZXZlcnNlX2l0ZXJhdG9yCW9wZXJhdG9yKyAoc2l6ZV90IG4pIGNvbnN0IHsgcmV0dXJuIChyZXZlcnNlX2l0ZXJhdG9yIChtX2kgLSBuKSk7IH0KLSAgICBpbmxpbmUgcmV2ZXJzZV9pdGVyYXRvcglvcGVyYXRvci0gKHNpemVfdCBuKSBjb25zdCB7IHJldHVybiAocmV2ZXJzZV9pdGVyYXRvciAobV9pICsgbikpOyB9Ci0gICAgaW5saW5lIHJlZmVyZW5jZQkJb3BlcmF0b3JbXSAodW9mZl90IG4pIGNvbnN0IHsgcmV0dXJuICgqKCp0aGlzICsgbikpOyB9Ci0gICAgaW5saW5lIGRpZmZlcmVuY2VfdHlwZQlvcGVyYXRvci0gKGNvbnN0IHJldmVyc2VfaXRlcmF0b3ImIGkpIGNvbnN0IHsgcmV0dXJuIChkaXN0YW5jZSAobV9pLCBpLm1faSkpOyB9Ci1wcm90ZWN0ZWQ6Ci0gICAgSXRlcmF0b3IJCW1faTsKLX07Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLy8gXGNsYXNzIGluc2VydF9pdGVyYXRvciB1aXRlcmF0b3IuaCB1c3RsLmgKLS8vLyBcaW5ncm91cCBJdGVyYXRvckFkYXB0b3JzCi0vLy8gXGJyaWVmIENhbGxzIGluc2VydCBvbiBib3VuZCBjb250YWluZXIgZm9yIGVhY2ggYXNzaWdubWVudC4KLS8vLwotdGVtcGxhdGUgPGNsYXNzIENvbnRhaW5lcj4KLWNsYXNzIGluc2VydF9pdGVyYXRvciB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBDb250YWluZXI6OnZhbHVlX3R5cGUJdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIENvbnRhaW5lcjo6ZGlmZmVyZW5jZV90eXBlCWRpZmZlcmVuY2VfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIENvbnRhaW5lcjo6cG9pbnRlcgkJcG9pbnRlcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIENvbnRhaW5lcjo6cmVmZXJlbmNlCXJlZmVyZW5jZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIENvbnRhaW5lcjo6aXRlcmF0b3IJaXRlcmF0b3I7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQJCQlpbnNlcnRfaXRlcmF0b3IgKENvbnRhaW5lciYgY3RyLCBpdGVyYXRvciBpcCkgOiBtX3JDdHIgKGN0ciksIG1faXAgKGlwKSB7fQotICAgIGlubGluZSBpbnNlcnRfaXRlcmF0b3ImCW9wZXJhdG9yPSAodHlwZW5hbWUgQ29udGFpbmVyOjpjb25zdF9yZWZlcmVuY2UgdikKLSAgICAJCQkJICAgIHsgbV9pcCA9IG1fckN0ci5pbnNlcnQgKG1faXAsIHYpOyByZXR1cm4gKCp0aGlzKTsgfQotICAgIGlubGluZSBpbnNlcnRfaXRlcmF0b3ImCW9wZXJhdG9yKiAodm9pZCkgIHsgcmV0dXJuICgqdGhpcyk7IH0KLSAgICBpbmxpbmUgaW5zZXJ0X2l0ZXJhdG9yJglvcGVyYXRvcisrICh2b2lkKSB7ICsrIG1faXA7IHJldHVybiAoKnRoaXMpOyB9Ci0gICAgaW5saW5lIGluc2VydF9pdGVyYXRvcglvcGVyYXRvcisrIChpbnQpICB7IGluc2VydF9pdGVyYXRvciBwcmV2ICgqdGhpcyk7ICsrIG1faXA7IHJldHVybiAoKnRoaXMpOyB9Ci1wcm90ZWN0ZWQ6Ci0gICAgQ29udGFpbmVyJgkJCW1fckN0cjsKLSAgICBpdGVyYXRvcgkJCW1faXA7Ci19OwotCi0vLy8gUmV0dXJucyB0aGUgaW5zZXJ0X2l0ZXJhdG9yIGZvciBccCBjdHIuCi10ZW1wbGF0ZSA8Y2xhc3MgQ29udGFpbmVyPgotaW5saW5lIGluc2VydF9pdGVyYXRvcjxDb250YWluZXI+IGluc2VydGVyIChDb250YWluZXImIGN0ciwgdHlwZW5hbWUgQ29udGFpbmVyOjppdGVyYXRvciBpcCkKLXsKLSAgICByZXR1cm4gKGluc2VydF9pdGVyYXRvcjxDb250YWluZXI+IChjdHIsIGlwKSk7Ci19Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLy8gXGNsYXNzIGJhY2tfaW5zZXJ0X2l0ZXJhdG9yIHVpdGVyYXRvci5oIHVzdGwuaAotLy8vIFxpbmdyb3VwIEl0ZXJhdG9yQWRhcHRvcnMKLS8vLyBcYnJpZWYgQ2FsbHMgcHVzaF9iYWNrIG9uIGJvdW5kIGNvbnRhaW5lciBmb3IgZWFjaCBhc3NpZ25tZW50LgotLy8vCi10ZW1wbGF0ZSA8Y2xhc3MgQ29udGFpbmVyPgotY2xhc3MgYmFja19pbnNlcnRfaXRlcmF0b3IgewotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgQ29udGFpbmVyOjp2YWx1ZV90eXBlCXZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBDb250YWluZXI6OmRpZmZlcmVuY2VfdHlwZQlkaWZmZXJlbmNlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBDb250YWluZXI6OnBvaW50ZXIJCXBvaW50ZXI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBDb250YWluZXI6OnJlZmVyZW5jZQlyZWZlcmVuY2U7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQJCQkJYmFja19pbnNlcnRfaXRlcmF0b3IgKENvbnRhaW5lciYgY3RyKSA6IG1fckN0ciAoY3RyKSB7fQotICAgIGlubGluZSBiYWNrX2luc2VydF9pdGVyYXRvciYJb3BlcmF0b3I9ICh0eXBlbmFtZSBDb250YWluZXI6OmNvbnN0X3JlZmVyZW5jZSB2KQotICAgIAkJCQkJICAgIHsgbV9yQ3RyLnB1c2hfYmFjayAodik7IHJldHVybiAoKnRoaXMpOyB9Ci0gICAgaW5saW5lIGJhY2tfaW5zZXJ0X2l0ZXJhdG9yJglvcGVyYXRvciogKHZvaWQpICB7IHJldHVybiAoKnRoaXMpOyB9Ci0gICAgaW5saW5lIGJhY2tfaW5zZXJ0X2l0ZXJhdG9yJglvcGVyYXRvcisrICh2b2lkKSB7IHJldHVybiAoKnRoaXMpOyB9Ci0gICAgaW5saW5lIGJhY2tfaW5zZXJ0X2l0ZXJhdG9yCQlvcGVyYXRvcisrIChpbnQpICB7IHJldHVybiAoKnRoaXMpOyB9Ci1wcm90ZWN0ZWQ6Ci0gICAgQ29udGFpbmVyJgkJbV9yQ3RyOwotfTsKLQotLy8vIFJldHVybnMgdGhlIGJhY2tfaW5zZXJ0X2l0ZXJhdG9yIGZvciBccCBjdHIuCi10ZW1wbGF0ZSA8Y2xhc3MgQ29udGFpbmVyPgotaW5saW5lIGJhY2tfaW5zZXJ0X2l0ZXJhdG9yPENvbnRhaW5lcj4gYmFja19pbnNlcnRlciAoQ29udGFpbmVyJiBjdHIpCi17Ci0gICAgcmV0dXJuIChiYWNrX2luc2VydF9pdGVyYXRvcjxDb250YWluZXI+IChjdHIpKTsKLX0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vLyBcY2xhc3MgaW5kZXhfaXRlcmF0ZSB1aXRlcmF0b3IuaCB1c3RsLmgKLS8vLyBcaW5ncm91cCBJdGVyYXRvckFkYXB0b3JzCi0vLy8KLS8vLyBcYnJpZWYgQWxsb3dzIGl0ZXJhdGlvbiB0aHJvdWdoIGFuIGluZGV4IGNvbnRhaW5lci4KLS8vLwotLy8vIENvbnZlcnRzIGFuIGl0ZXJhdG9yIGludG8gYSBjb250YWluZXIgb2YgdW9mZl90IGluZGV4ZXMgdG8gYW4KLS8vLyBpdGVyYXRvciBvZiBpdGVyYXRvcnMgaW50byBhbm90aGVyIGNvbnRhaW5lci4KLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBJbmRleEl0ZXJhdG9yPgotY2xhc3MgaW5kZXhfaXRlcmF0ZSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBSYW5kb21BY2Nlc3NJdGVyYXRvcgl2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgcHRyZGlmZl90CQkJZGlmZmVyZW5jZV90eXBlOwotICAgIHR5cGVkZWYgUmFuZG9tQWNjZXNzSXRlcmF0b3IqCXBvaW50ZXI7Ci0gICAgdHlwZWRlZiBSYW5kb21BY2Nlc3NJdGVyYXRvcglyZWZlcmVuY2U7Ci1wdWJsaWM6Ci0gICAgCQkJCWluZGV4X2l0ZXJhdGUgKHZvaWQpIDogbV9CYXNlKCksIG1faSgpIHt9Ci0JCQkJaW5kZXhfaXRlcmF0ZSAoUmFuZG9tQWNjZXNzSXRlcmF0b3IgaWJhc2UsIEluZGV4SXRlcmF0b3IgaWluZGV4KSA6IG1fQmFzZSAoaWJhc2UpLCBtX2kgKGlpbmRleCkge30KLSAgICBpbmxpbmUgYm9vbAkJCW9wZXJhdG9yPT0gKGNvbnN0IGluZGV4X2l0ZXJhdGUmIGkpIGNvbnN0IHsgcmV0dXJuIChtX2kgPT0gaS5tX2kpOyB9Ci0gICAgaW5saW5lIGJvb2wJCQlvcGVyYXRvcjwgKGNvbnN0IGluZGV4X2l0ZXJhdGUmIGkpIGNvbnN0IHsgcmV0dXJuIChtX2kgPCBpLm1faSk7IH0KLSAgICBpbmxpbmUgYm9vbAkJCW9wZXJhdG9yPT0gKGNvbnN0IFJhbmRvbUFjY2Vzc0l0ZXJhdG9yJiBpKSBjb25zdCB7IHJldHVybiAobV9CYXNlID09IGkpOyB9Ci0gICAgaW5saW5lIGJvb2wJCQlvcGVyYXRvcjwgKGNvbnN0IFJhbmRvbUFjY2Vzc0l0ZXJhdG9yJiBpKSBjb25zdCB7IHJldHVybiAobV9CYXNlIDwgaSk7IH0KLSAgICBpbmxpbmUgSW5kZXhJdGVyYXRvcgliYXNlICh2b2lkKSBjb25zdCB7IHJldHVybiAobV9pKTsgfQotICAgIGlubGluZSByZWZlcmVuY2UJCW9wZXJhdG9yKiAodm9pZCkgY29uc3QgeyByZXR1cm4gKGFkdmFuY2UobV9CYXNlLCAqbV9pKSk7IH0KLSAgICBpbmxpbmUgcG9pbnRlcgkJb3BlcmF0b3ItPiAodm9pZCkgY29uc3QgeyByZXR1cm4gKCYob3BlcmF0b3IqKCkpKTsgfQotICAgIGlubGluZSBpbmRleF9pdGVyYXRlJglvcGVyYXRvcisrICh2b2lkKSB7ICsrIG1faTsgcmV0dXJuICgqdGhpcyk7IH0KLSAgICBpbmxpbmUgaW5kZXhfaXRlcmF0ZSYJb3BlcmF0b3ItLSAodm9pZCkgeyAtLSBtX2k7IHJldHVybiAoKnRoaXMpOyB9Ci0gICAgaW5saW5lIGluZGV4X2l0ZXJhdGUJb3BlcmF0b3IrKyAoaW50KSB7IGluZGV4X2l0ZXJhdGUgcHJldiAoKnRoaXMpOyArKyBtX2k7IHJldHVybiAocHJldik7IH0KLSAgICBpbmxpbmUgaW5kZXhfaXRlcmF0ZQlvcGVyYXRvci0tIChpbnQpIHsgaW5kZXhfaXRlcmF0ZSBwcmV2ICgqdGhpcyk7IC0tIG1faTsgcmV0dXJuIChwcmV2KTsgfQotICAgIGlubGluZSBpbmRleF9pdGVyYXRlJglvcGVyYXRvcis9IChzaXplX3QgbikgeyBtX2kgKz0gbjsgcmV0dXJuICgqdGhpcyk7IH0KLSAgICBpbmxpbmUgaW5kZXhfaXRlcmF0ZSYJb3BlcmF0b3ItPSAoc2l6ZV90IG4pIHsgbV9pIC09IG47IHJldHVybiAoKnRoaXMpOyB9Ci0gICAgaW5saW5lIGluZGV4X2l0ZXJhdGUJb3BlcmF0b3IrIChzaXplX3QgbikgY29uc3QgeyByZXR1cm4gKGluZGV4X2l0ZXJhdGUgKG1fQmFzZSwgbV9pICsgbikpOyB9Ci0gICAgaW5saW5lIGluZGV4X2l0ZXJhdGUJb3BlcmF0b3ItIChzaXplX3QgbikgY29uc3QgeyByZXR1cm4gKGluZGV4X2l0ZXJhdGUgKG1fQmFzZSwgbV9pIC0gbikpOyB9Ci0gICAgaW5saW5lIHJlZmVyZW5jZQkJb3BlcmF0b3JbXSAodW9mZl90IG4pIGNvbnN0IHsgcmV0dXJuICgqKCp0aGlzICsgbikpOyB9Ci0gICAgaW5saW5lIGRpZmZlcmVuY2VfdHlwZQlvcGVyYXRvci0gKGNvbnN0IGluZGV4X2l0ZXJhdGUmIGkpIGNvbnN0IHsgcmV0dXJuIChkaXN0YW5jZSAobV9pLCBpLm1faSkpOyB9Ci1wcml2YXRlOgotICAgIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yCW1fQmFzZTsKLSAgICBJbmRleEl0ZXJhdG9yCQltX2k7Ci19OwotCi0vLy8gUmV0dXJucyBhbiBpbmRleF9pdGVyYXRlIGZvciBccCBpYmFzZSBvdmVyIFxwIGlpbmRleC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBSYW5kb21BY2Nlc3NJdGVyYXRvciwgdHlwZW5hbWUgSW5kZXhJdGVyYXRvcj4KLWlubGluZSBpbmRleF9pdGVyYXRlPFJhbmRvbUFjY2Vzc0l0ZXJhdG9yLCBJbmRleEl0ZXJhdG9yPiBpbmRleF9pdGVyYXRvciAoUmFuZG9tQWNjZXNzSXRlcmF0b3IgaWJhc2UsIEluZGV4SXRlcmF0b3IgaWluZGV4KQotewotICAgIHJldHVybiAoaW5kZXhfaXRlcmF0ZTxSYW5kb21BY2Nlc3NJdGVyYXRvciwgSW5kZXhJdGVyYXRvcj4gKGliYXNlLCBpaW5kZXgpKTsKLX0KLQotLy8vIENvbnZlcnRzIHRoZSBpbmRleGVzIGluIFxwIHhjIHRvIGl0ZXJhdG9ycyBpbiBccCBpYyBvZiBiYXNlIFxwIGliYXNlLgotdGVtcGxhdGUgPHR5cGVuYW1lIEluZGV4Q29udGFpbmVyLCB0eXBlbmFtZSBJdGVyYXRvckNvbnRhaW5lcj4KLWlubGluZSB2b2lkIGluZGV4dl90b19pdGVyYXRvcnYgKHR5cGVuYW1lIEl0ZXJhdG9yQ29udGFpbmVyOjp2YWx1ZV90eXBlIGliYXNlLCBjb25zdCBJbmRleENvbnRhaW5lciYgeGMsIEl0ZXJhdG9yQ29udGFpbmVyJiBpYykKLXsKLSAgICBpYy5yZXNpemUgKHhjLnNpemUoKSk7Ci0gICAgY29weV9uIChpbmRleF9pdGVyYXRvciAoaWJhc2UsIHhjLmJlZ2luKCkpLCB4Yy5zaXplKCksIGljLmJlZ2luKCkpOwotfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8vIENvbnZlcnRzIHRoZSBnaXZlbiBjb25zdF9pdGVyYXRvciBpbnRvIGFuIGl0ZXJhdG9yLgotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyPgotaW5saW5lIHR5cGVuYW1lIENvbnRhaW5lcjo6aXRlcmF0b3IgdW5jb25zdCAodHlwZW5hbWUgQ29udGFpbmVyOjpjb25zdF9pdGVyYXRvciBpLCBDb250YWluZXImIGN0cikKLXsKLSAgICBjb25zdCBDb250YWluZXImIGNjdHIgPSBjdHI7Ci0gICAgcmV0dXJuIChjdHIuYmVnaW4oKSArIChpIC0gY2N0ci5iZWdpbigpKSk7Ci19Ci0KLSNpZm5kZWYgRE9YWUdFTl9TSE9VTERfU0tJUF9USElTCi0KLSNkZWZpbmUgSUJZSShJdGVyMSwgSXRlcjIsIEN0cjEsIEN0cjIpCVwKLXRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXIxLCB0eXBlbmFtZSBDb250YWluZXIyPglcCi1pbmxpbmUgdHlwZW5hbWUgQ29udGFpbmVyMjo6SXRlcjIgaWJ5aSAodHlwZW5hbWUgQ29udGFpbmVyMTo6SXRlcjEgaWR4LCBDdHIxJiBjdHIxLCBDdHIyJiBjdHIyKQlcCi17CQkJCQkJCVwKLSAgICBhc3NlcnQgKGN0cjEuc2l6ZSgpID09IGN0cjIuc2l6ZSgpKTsJCVwKLSAgICByZXR1cm4gKGN0cjIuYmVnaW4oKSArIChpZHggLSBjdHIxLmJlZ2luKCkpKTsJXAotfQotCi1JQllJKGNvbnN0X2l0ZXJhdG9yLCBjb25zdF9pdGVyYXRvciwgY29uc3QgQ29udGFpbmVyMSwgY29uc3QgQ29udGFpbmVyMikKLUlCWUkoaXRlcmF0b3IsIGl0ZXJhdG9yLCBDb250YWluZXIxLCBDb250YWluZXIyKQotSUJZSShjb25zdF9pdGVyYXRvciwgaXRlcmF0b3IsIGNvbnN0IENvbnRhaW5lcjEsIENvbnRhaW5lcjIpCi1JQllJKGl0ZXJhdG9yLCBjb25zdF9pdGVyYXRvciwgQ29udGFpbmVyMSwgY29uc3QgQ29udGFpbmVyMikKLQotI2Vsc2UgLy8gRE9YWUdFTgotCi0jZXJyb3IgVGhpcyBkZWNsYXJhdGlvbiBpcyBmb3IgZG94eWdlbiBvbmx5OyBpdCBpcyBub3QgY29tcGlsZWQuCi0KLS8vLyBDb252ZXJ0cyBhIGNvbnN0X2l0ZXJhdG9yIGluIG9uZSBjb250YWluZXIgaW50byBhIGNvbnN0X2l0ZXJhdG9yIGluIGFub3RoZXIgY29udGFpbmVyLgotdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5lcjEsIHR5cGVuYW1lIENvbnRhaW5lcjI+Ci1pbmxpbmUgdHlwZW5hbWUgQ29udGFpbmVyMjo6aXRlcmF0b3IgaWJ5aSAodHlwZW5hbWUgQ29udGFpbmVyMTo6aXRlcmF0b3IgaWR4LCBDb250YWluZXIxJiBjdHIxLCBDb250YWluZXIyJiBjdHIyKSB7fQotCi0jZW5kaWYgLy8gRE9YWUdFTgotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotfSAvLyBuYW1lc3BhY2UgdXN0bAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdWxhYWxnby5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdWxhYWxnby5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZWZjOTc3Li4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VsYWFsZ28uaAorKysgL2Rldi9udWxsCkBAIC0xLDIyMyArMCwwIEBACi0vLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdXN0bCBsaWJyYXJ5LCBhbiBTVEwgaW1wbGVtZW50YXRpb24uCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDA1IGJ5IE1pa2UgU2hhcm92IDxtc2hhcm92QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLS8vIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCi0vLwotLy8gdWxhYWxnby5oCi0vLwotCi0jaWZuZGVmIFVMQUFMR09fSF8yRTQwM0QxODJFODNGQjU5NkFGQjgwMEU2OEIyNTVBMQotI2RlZmluZSBVTEFBTEdPX0hfMkU0MDNEMTgyRTgzRkI1OTZBRkI4MDBFNjhCMjU1QTEKLQotI2luY2x1ZGUgInVtYXRyaXguaCIKLSNpbmNsdWRlICJzaW1kLmgiCi0KLW5hbWVzcGFjZSB1c3RsIHsKLQotLy8vIFxicmllZiBDcmVhdGVzIGFuIGlkZW50aXR5IG1hdHJpeCBpbiBccCBtCi0vLy8gXGluZ3JvdXAgTnVtZXJpY0FsZ29yaXRobXMKLXRlbXBsYXRlIDxzaXplX3QgTlgsIHNpemVfdCBOWSwgdHlwZW5hbWUgVD4KLXZvaWQgbG9hZF9pZGVudGl0eSAobWF0cml4PE5YLE5ZLFQ+JiBtKQotewotICAgIGZpbGxfbiAobS5iZWdpbigpLCBOWCAqIE5ZLCAwKTsKLSAgICBmb3IgKHR5cGVuYW1lIG1hdHJpeDxOWCxOWSxUPjo6aXRlcmF0b3IgaSA9IG0uYmVnaW4oKTsgaSA8IG0uZW5kKCk7IGkgKz0gTlggKyAxKQotCSppID0gMTsKLX0KLQotLy8vIFxicmllZiBNdWx0aXBsaWVzIHR3byBtYXRyaWNlcwotLy8vIFxpbmdyb3VwIE51bWVyaWNBbGdvcml0aG1zCi10ZW1wbGF0ZSA8c2l6ZV90IE5YLCBzaXplX3QgTlksIHR5cGVuYW1lIFQ+Ci1tYXRyaXg8TlksTlksVD4gb3BlcmF0b3IqIChjb25zdCBtYXRyaXg8TlgsTlksVD4mIG0xLCBjb25zdCBtYXRyaXg8TlksTlgsVD4mIG0yKQotewotICAgIG1hdHJpeDxOWSxOWSxUPiBtcjsKLSAgICBmb3IgKHVvZmZfdCByeSA9IDA7IHJ5IDwgTlk7ICsrIHJ5KSB7Ci0JZm9yICh1b2ZmX3QgcnggPSAwOyByeCA8IE5ZOyArKyByeCkgewotCSAgICBUIGRwdiAoMCk7Ci0JICAgIGZvciAodW9mZl90IHggPSAwOyB4IDwgTlg7ICsrIHgpCi0JCWRwdiArPSBtMVtyeV1beF0gKiBtMlt4XVtyeF07Ci0JICAgIG1yW3J5XVtyeF0gPSBkcHY7Ci0JfQotICAgIH0KLSAgICByZXR1cm4gKG1yKTsKLX0KLQotLy8vIFxicmllZiBUcmFuc2Zvcm1zIHZlY3RvciBccCB0IHdpdGggbWF0cml4IFxwIG0KLS8vLyBcaW5ncm91cCBOdW1lcmljQWxnb3JpdGhtcwotdGVtcGxhdGUgPHNpemVfdCBOWCwgc2l6ZV90IE5ZLCB0eXBlbmFtZSBUPgotdHVwbGU8TlgsVD4gb3BlcmF0b3IqIChjb25zdCB0dXBsZTxOWSxUPiYgdCwgY29uc3QgbWF0cml4PE5YLE5ZLFQ+JiBtKQotewotICAgIHR1cGxlPE5YLFQ+IHRyOwotICAgIGZvciAodW9mZl90IHggPSAwOyB4IDwgTlg7ICsrIHgpIHsKLQlUIGRwdiAoMCk7Ci0JZm9yICh1b2ZmX3QgeSA9IDA7IHkgPCBOWTsgKysgeSkKLQkgICAgZHB2ICs9IHRbeV0gKiBtW3ldW3hdOwotCXRyW3hdID0gZHB2OwotICAgIH0KLSAgICByZXR1cm4gKHRyKTsKLX0KLQotLy8vIFxicmllZiBUcmFuc3Bvc2VzIChleGNoYW5nZXMgcm93cyBhbmQgY29sdW1ucykgbWF0cml4IFxwIG0uCi0vLy8gXGluZ3JvdXAgTnVtZXJpY0FsZ29yaXRobXMKLXRlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgVD4KLXZvaWQgdHJhbnNwb3NlIChtYXRyaXg8TixOLFQ+JiBtKQotewotICAgIGZvciAodW9mZl90IHggPSAwOyB4IDwgTjsgKysgeCkKLQlmb3IgKHVvZmZfdCB5ID0geDsgeSA8IE47ICsrIHkpCi0JICAgIHN3YXAgKG1beF1beV0sIG1beV1beF0pOwotfQotCi0jaWYgV0FOVF9VTlJPTExFRF9DT1BZCi0KLSNpZiBDUFVfSEFTX1NTRQotCi0jaWYgbGludXggLy8gTm9uLWxpbnV4IGdjYyB2ZXJzaW9ucyAoQlNELCBTb2xhcmlzKSBjYW4ndCBoYW5kbGUgIngiIGNvbnN0cmFpbnQgYW5kIHByb3ZpZGUgbm8gYWx0ZXJuYXRpdmUuCi10ZW1wbGF0ZSA8PgotaW5saW5lIHZvaWQgbG9hZF9pZGVudGl0eSAobWF0cml4PDQsNCxmbG9hdD4mIG0pCi17Ci0gICAgYXNtICgKLQkibW92YXBzICU0LCAlJXhtbTEJCVxuXHQiCS8vIDEgMCAwIDAKLQkibW92dXBzICU0LCAlMAkJCVxuXHQiCS8vIDEgMCAwIDAKLQkic2h1ZnBzICQweEIxLCUleG1tMSwlJXhtbTEJXG5cdCIJLy8gMCAxIDAgMAotCSJtb3Z1cHMgJSV4bW0xLCAlMQkJXG5cdCIJLy8gMCAxIDAgMAotCSJzaHVmcHMgJDB4NEYsJTQsJSV4bW0xCQlcblx0IgkvLyAwIDAgMSAwCi0JInNodWZwcyAkMHgxQiwlNCwlNAkJXG5cdCIJLy8gMCAwIDAgMQotCSJtb3Z1cHMgJSV4bW0xLCAlMgkJXG5cdCIJLy8gMCAwIDEgMAotCSJtb3Z1cHMgJTQsICUzIgkJCQkvLyAwIDAgMCAxCi0JOiAiPW0iKG1bMF1bMF0pLCAiPW0iKG1bMV1bMF0pLCAiPW0iKG1bMl1bMF0pLCAiPW0iKG1bM11bMF0pCi0JOiAieCIoMS4wZikKLQk6ICJ4bW0xIgotICAgICk7Ci19Ci0jZW5kaWYKLQotaW5saW5lIHZvaWQgX3NzZV9sb2FkX21hdHJpeCAoY29uc3QgZmxvYXQqIG0pCi17Ci0gICAgYXNtICgKLQkibW92dXBzICUwLCAlJXhtbTQJXG5cdCIJLy8geG1tNCA9IG1bMSAyIDMgNF0KLQkibW92dXBzICUxLCAlJXhtbTUJXG5cdCIJLy8geG1tNSA9IG1bMSAyIDMgNF0KLQkibW92dXBzICUyLCAlJXhtbTYJXG5cdCIJLy8geG1tNiA9IG1bMSAyIDMgNF0KLQkibW92dXBzICUzLCAlJXhtbTciCQkvLyB4bW03ID0gbVsxIDIgMyA0XQotCTogOiAibSIobVswXSksICJtIihtWzRdKSwgIm0iKG1bOF0pLCAibSIobVsxMl0pCi0JOiAieG1tNCIsICJ4bW01IiwgInhtbTYiLCAieG1tNyIKLSAgICApOwotfQotCi1pbmxpbmUgdm9pZCBfc3NlX3RyYW5zZm9ybV90b192ZWN0b3IgKGZsb2F0KiByZXN1bHQpCi17Ci0gICAgYXNtICgKLQkibW92YXBzICUleG1tMCwgJSV4bW0xCQlcblx0IiAvLyB4bW0xID0gdFswIDEgMiAzXQotCSJtb3ZhcHMgJSV4bW0wLCAlJXhtbTIJCVxuXHQiIC8vIHhtbTEgPSB0WzAgMSAyIDNdCi0JIm1vdmFwcyAlJXhtbTAsICUleG1tMwkJXG5cdCIgLy8geG1tMSA9IHRbMCAxIDIgM10KLQkic2h1ZnBzICQweDAwLCAlJXhtbTAsICUleG1tMAlcblx0IiAvLyB4bW0wID0gdFswIDAgMCAwXQotCSJzaHVmcHMgJDB4NjYsICUleG1tMSwgJSV4bW0xCVxuXHQiIC8vIHhtbTEgPSB0WzEgMSAxIDFdCi0JInNodWZwcyAkMHhBQSwgJSV4bW0yLCAlJXhtbTIJXG5cdCIgLy8geG1tMiA9IHRbMiAyIDIgMl0KLQkic2h1ZnBzICQweEZGLCAlJXhtbTMsICUleG1tMwlcblx0IiAvLyB4bW0zID0gdFszIDMgMyAzXQotCSJtdWxwcyAgJSV4bW00LCAlJXhtbTAJCVxuXHQiIC8vIHhtbTAgPSB0WzAgMCAwIDBdICogbVswIDEgMiAzXQotCSJtdWxwcyAgJSV4bW01LCAlJXhtbTEJCVxuXHQiIC8vIHhtbTEgPSB0WzEgMSAxIDFdICogbVswIDEgMiAzXQotCSJhZGRwcyAgJSV4bW0xLCAlJXhtbTAJCVxuXHQiIC8vIHhtbTAgPSB4bW0wICsgeG1tMQotCSJtdWxwcyAgJSV4bW02LCAlJXhtbTIJCVxuXHQiIC8vIHhtbTIgPSB0WzIgMiAyIDJdICogbVswIDEgMiAzXQotCSJtdWxwcyAgJSV4bW03LCAlJXhtbTMJCVxuXHQiIC8vIHhtbTMgPSB0WzMgMyAzIDNdICogbVswIDEgMiAzXQotCSJhZGRwcyAgJSV4bW0zLCAlJXhtbTIJCVxuXHQiIC8vIHhtbTIgPSB4bW0yICsgeG1tMwotCSJhZGRwcyAgJSV4bW0yLCAlJXhtbTAJCVxuXHQiIC8vIHhtbTAgPSByZXN1bHQKLQkibW92dXBzICUleG1tMCwgJTAiCi0JOiAiPW0iKHJlc3VsdFswXSkgOgotCTogInhtbTAiLCAieG1tMSIsICJ4bW0yIiwgInhtbTMiLCAieG1tNCIsICJ4bW01IiwgInhtbTYiLCAieG1tNyIKLSAgICApOwotfQotCi10ZW1wbGF0ZSA8PgotdHVwbGU8NCxmbG9hdD4gb3BlcmF0b3IqIChjb25zdCB0dXBsZTw0LGZsb2F0PiYgdCwgY29uc3QgbWF0cml4PDQsNCxmbG9hdD4mIG0pCi17Ci0gICAgdHVwbGU8NCxmbG9hdD4gcmVzdWx0OwotICAgIF9zc2VfbG9hZF9tYXRyaXggKG0uYmVnaW4oKSk7Ci0gICAgYXNtICgibW92dXBzICUwLCAlJXhtbTAiIDogOiAibSIodFswXSkgOiAieG1tMCIpOwotICAgIF9zc2VfdHJhbnNmb3JtX3RvX3ZlY3RvciAocmVzdWx0LmJlZ2luKCkpOwotICAgIHJldHVybiAocmVzdWx0KTsKLX0KLQotdGVtcGxhdGUgPD4KLW1hdHJpeDw0LDQsZmxvYXQ+IG9wZXJhdG9yKiAoY29uc3QgbWF0cml4PDQsNCxmbG9hdD4mIG0xLCBjb25zdCBtYXRyaXg8NCw0LGZsb2F0PiYgbTIpCi17Ci0gICAgbWF0cml4PDQsNCxmbG9hdD4gcmVzdWx0OwotICAgIF9zc2VfbG9hZF9tYXRyaXggKG0yLmJlZ2luKCkpOwotICAgIGZvciAodW9mZl90IHIgPSAwOyByIDwgNDsgKysgcikgeyAKLQlhc20gKCJtb3Z1cHMgJTAsICUleG1tMCIgOiA6ICJtIihtMVtyXVswXSkgOiAieG1tMCIpOwotCV9zc2VfdHJhbnNmb3JtX3RvX3ZlY3RvciAocmVzdWx0W3JdKTsKLSAgICB9Ci0gICAgcmV0dXJuIChyZXN1bHQpOwotfQotCi0jZWxpZiBDUFVfSEFTXzNETk9XCi0KLS8vLyBTcGVjaWFsaXphdGlvbiBmb3IgNC1jb21wb25lbnQgdmVjdG9yIHRyYW5zZm9ybSwgdGhlIHNsb3cgcGFydCBvZiAzRCBncmFwaGljcy4KLXRlbXBsYXRlIDw+Ci10dXBsZTw0LGZsb2F0PiBvcGVyYXRvciogKGNvbnN0IHR1cGxlPDQsZmxvYXQ+JiB0LCBjb25zdCBtYXRyaXg8NCw0LGZsb2F0PiYgbSkKLXsKLSAgICB0dXBsZTw0LGZsb2F0PiByZXN1bHQ7Ci0gICAgLy8gVGhpcyBpcyB0YWtlbiBmcm9tICJBTUQgQXRobG9uIENvZGUgT3B0aW1pemF0aW9uIEd1aWRlIiBmcm9tIEFNRC4gMTggY3ljbGVzIQotICAgIC8vIElmIHlvdSBhcmUgd3JpdGluZyBhIDNEIGVuZ2luZSwgeW91IG1heSB3YW50IHRvIGNvcHkgaXQgaW5zdGVhZCBvZiBjYWxsaW5nIGl0Ci0gICAgLy8gYmVjYXVzZSBvZiB0aGUgZmVtbXMgaW5zdHJ1Y3Rpb24gYXQgdGhlIGVuZCwgd2hpY2ggdGFrZXMgMiBjeWNsZXMuCi0gICAgYXNtICgKLQkibW92cQkgICAlMiwgJSVtbTAJCVxuXHQiCS8vICAgICAgICAgICAgeSB8IHgKLQkibW92cQkgICAlMywgJSVtbTEJCVxuXHQiCS8vICAgICAgICAgICAgdyB8IHoKLQkibW92cQkgICAlJW1tMCwgJSVtbTIJCVxuXHQiCS8vICAgICAgICAgICAgeSB8IHgKLQkibW92cQkgICAlNCwgJSVtbTMJCVxuXHQiCS8vICAgICAgbVswXVsxXSB8IG1bMF1bMF0KLQkicHVucGNrbGRxICAlJW1tMCwgJSVtbTAJXG5cdCIJLy8gICAgICAgICAgICB4IHwgeAotCSJtb3ZxCSAgICU2LCAlJW1tNAkJXG5cdCIJLy8gICAgICBtWzFdWzFdIHwgbVsxXVswXQotCSJwZm11bAkgICAlJW1tMCwgJSVtbTMJCVxuXHQiCS8vICAgIHgqbVswXVsxXSB8IHgqbVswXVswXQotCSJwdW5wY2toZHEgICUlbW0yLCAlJW1tMglcblx0IgkvLyAgICAgICAgICAgIHkgfCB5Ci0JInBmbXVsCSAgICUlbW0yLCAlJW1tNAkJXG5cdCIJLy8gICAgeSptWzFdWzFdIHwgeSptWzFdWzBdCi0JIm1vdnEJICAgJTUsICUlbW01CQlcblx0IgkvLyAgICAgIG1bMF1bM10gfCBtWzBdWzJdCi0JIm1vdnEJICAgJTcsICUlbW03CQlcblx0IgkvLyAgICAgIG1bMV1bM10gfCBtWzFdWzJdCi0JIm1vdnEJICAgJSVtbTEsICUlbW02CQlcblx0IgkvLyAgICAgICAgICAgIHcgfCB6Ci0JInBmbXVsCSAgICUlbW0wLCAlJW1tNQkJXG5cdCIJLy8gICAgeCptWzBdWzNdIHwgdjA+eCptWzBdWzJdCi0JIm1vdnEJICAgJTgsICUlbW0wCQlcblx0IgkvLyAgICAgIG1bMl1bMV0gfCBtWzJdWzBdCi0JInB1bnBja2xkcSAgJSVtbTEsICUlbW0xCVxuXHQiCS8vICAgICAgICAgICAgeiB8IHoKLQkicGZtdWwJICAgJSVtbTIsICUlbW03CQlcblx0IgkvLyAgICB5Km1bMV1bM10gfCB5Km1bMV1bMl0KLQkibW92cQkgICAlOSwgJSVtbTIJCVxuXHQiCS8vICAgICAgbVsyXVszXSB8IG1bMl1bMl0KLQkicGZtdWwJICAgJSVtbTEsICUlbW0wCQlcblx0IgkvLyAgICB6Km1bMl1bMV0gfCB6Km1bMl1bMF0KLQkicGZhZGQJICAgJSVtbTQsICUlbW0zCQlcblx0IgkvLyB4Km1bMF1bMV0reSptWzFdWzFdIHwgeCptWzBdWzBdK3kqbVsxXVswXQotCSJtb3ZxCSAgICUxMCwgJSVtbTQJCVxuXHQiCS8vICAgICAgbVszXVsxXSB8IG1bM11bMF0KLQkicGZtdWwJICAgJSVtbTEsICUlbW0yCQlcblx0IgkvLyAgICB6Km1bMl1bM10gfCB6Km1bMl1bMl0KLQkicGZhZGQJICAgJSVtbTcsICUlbW01CQlcblx0IgkvLyB4Km1bMF1bM10reSptWzFdWzNdIHwgeCptWzBdWzJdK3kqbVsxXVsyXQotCSJtb3ZxCSAgICUxMSwgJSVtbTEJCVxuXHQiCS8vICAgICAgbVszXVszXSB8IG1bM11bMl0KLQkicHVucGNraGRxICAlJW1tNiwgJSVtbTYJXG5cdCIJLy8gICAgICAgICAgICB3IHwgdwotCSJwZmFkZAkgICAlJW1tMCwgJSVtbTMJCVxuXHQiCS8vIHgqbVswXVsxXSt5Km1bMV1bMV0reiptWzJdWzFdIHwgeCptWzBdWzBdK3kqbVsxXVswXSt6Km1bMl1bMF0KLQkicGZtdWwJICAgJSVtbTYsICUlbW00CQlcblx0IgkvLyAgICB3Km1bM11bMV0gfCB3Km1bM11bMF0KLQkicGZtdWwJICAgJSVtbTYsICUlbW0xCQlcblx0IgkvLyAgICB3Km1bM11bM10gfCB3Km1bM11bMl0KLQkicGZhZGQJICAgJSVtbTIsICUlbW01CQlcblx0IgkvLyB4Km1bMF1bM10reSptWzFdWzNdK3oqbVsyXVszXSB8IHgqbVswXVsyXSt5Km1bMV1bMl0reiptWzJdWzJdCi0JInBmYWRkCSAgICUlbW00LCAlJW1tMwkJXG5cdCIJLy8geCptWzBdWzFdK3kqbVsxXVsxXSt6Km1bMl1bMV0rdyptWzNdWzFdIHwgeCptWzBdWzBdK3kqbVsxXVswXSt6Km1bMl1bMF0rdyptWzNdWzBdCi0JIm1vdnEJICAgJSVtbTMsICUwCQlcblx0IgkvLyBzdG9yZSByZXN1bHQtPnkgfCByZXN1bHQtPngKLQkicGZhZGQJICAgJSVtbTEsICUlbW01CQlcblx0IgkvLyB4Km1bMF1bM10reSptWzFdWzNdK3oqbVsyXVszXSt3Km1bM11bM10gfCB4Km1bMF1bMl0reSptWzFdWzJdK3oqbVsyXVsyXSt3Km1bM11bMl0KLQkibW92cQkgICAlJW1tNSwgJTEiCQkJLy8gc3RvcmUgcmVzdWx0LT53IHwgcmVzdWx0LT56Ci0JOiAiPW0iKHJlc3VsdFswXSksICI9bSIocmVzdWx0WzJdKQotCTogIm0iKHRbMF0pLCAibSIodFsyXSksCi0JICAibSIobVswXVswXSksICJtIihtWzBdWzJdKSwKLQkgICJtIihtWzFdWzBdKSwgIm0iKG1bMV1bMl0pLAotCSAgIm0iKG1bMl1bMF0pLCAibSIobVsyXVsyXSksCi0JICAibSIobVszXVswXSksICJtIihtWzNdWzJdKQotCTogIm1tMCIsIm1tMSIsIm1tMiIsIm1tMyIsIm1tNCIsIm1tNSIsIm1tNiIsIm1tNyIKLSAgICApOwotICAgIHNpbWQ6OnJlc2V0X21teCgpOwotICAgIHJldHVybiAocmVzdWx0KTsKLX0KLQotI2Vsc2UJLy8gSWYgbm8gcHJvY2Vzc29yIGV4dGVuc2lvbnMsIGp1c3QgdW5yb2xsIHRoZSBtdWx0aXBsaWNhdGlvbgotCi0vLy8gU3BlY2lhbGl6YXRpb24gZm9yIDQtY29tcG9uZW50IHZlY3RvciB0cmFuc2Zvcm0sIHRoZSBzbG93IHBhcnQgb2YgM0QgZ3JhcGhpY3MuCi10ZW1wbGF0ZSA8PgotdHVwbGU8NCxmbG9hdD4gb3BlcmF0b3IqIChjb25zdCB0dXBsZTw0LGZsb2F0PiYgdCwgY29uc3QgbWF0cml4PDQsNCxmbG9hdD4mIG0pCi17Ci0gICAgdHVwbGU8NCxmbG9hdD4gdHI7Ci0gICAgZm9yICh1b2ZmX3QgaSA9IDA7IGkgPCA0OyArKyBpKQotCXRyW2ldID0gdFswXSAqIG1bMF1baV0gKyB0WzFdICogbVsxXVtpXSArIHRbMl0gKiBtWzJdW2ldICsgdFszXSAqIG1bM11baV07Ci0gICAgcmV0dXJuICh0cik7Ci19Ci0KLSNlbmRpZgkvLyBDUFVfSEFTXzNETk9XCi0jZW5kaWYJLy8gV0FOVF9VTlJPTExFRF9DT1BZCi0KLX0gLy8gbmFtZXNwYWNlIHVzdGwKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VsaW1pdHMuaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VsaW1pdHMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODVmMWRiMS4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91bGltaXRzLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDggKzAsMCBAQAotLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHVzdGwgbGlicmFyeSwgYW4gU1RMIGltcGxlbWVudGF0aW9uLgotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwNSBieSBNaWtlIFNoYXJvdiA8bXNoYXJvdkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0vLyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgotLy8KLS8vIHVsaW1pdHMuaAotLy8KLQotI2lmbmRlZiBVTElNSVRTX0hfMUMyMTkyRUEzODIxRTA4MTFCQkFGODZCMEYwNDgzNjQKLSNkZWZpbmUgVUxJTUlUU19IXzFDMjE5MkVBMzgyMUUwODExQkJBRjg2QjBGMDQ4MzY0Ci0KLSNpbmNsdWRlICJ1dHlwZXMuaCIKLSNpbmNsdWRlIDxzdGRpbnQuaD4KLQotbmFtZXNwYWNlIHVzdGwgewotCi0vLyBBbmRyb2lkCi0jaWZuZGVmIFVJTlRQVFJfTUFYCi0jZGVmaW5lIFVJTlRQVFJfTUFYCVVJTlQzMl9NQVgKLSNlbmRpZgotCi0jaWZuZGVmIFVJTlQzMl9NQVgKLSNkZWZpbmUgVUlOVDMyX01BWCAgICAoMHhmZmZmZmZmZikKLSNlbmRpZgotCQotLy8vIFxjbGFzcyBudW1lcmljX2xpbWl0cyB1bGltaXRzLmggdXN0bC5oCi0vLy8gXGJyaWVmIERlZmluZXMgbnVtZXJpYyBsaW1pdHMgZm9yIGEgdHlwZS4KLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IAotc3RydWN0IG51bWVyaWNfbGltaXRzIHsKLSAgICAvLy8gUmV0dXJucyB0aGUgbWluaW11bSB2YWx1ZSBmb3IgdHlwZSBULgotICAgIHN0YXRpYyBpbmxpbmUgVCBtaW4gKHZvaWQpCQl7IHJldHVybiAoVCgwKSk7IH0KLSAgICAvLy8gUmV0dXJucyB0aGUgbWluaW11bSB2YWx1ZSBmb3IgdHlwZSBULgotICAgIHN0YXRpYyBpbmxpbmUgVCBtYXggKHZvaWQpCQl7IHJldHVybiAoVCgwKSk7IH0KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19zaWduZWQgPSBmYWxzZTsJLy8vPCBUcnVlIGlmIHRoZSB0eXBlIGlzIHNpZ25lZC4KLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19pbnRlZ2VyID0gZmFsc2U7CS8vLzwgVHJ1ZSBpZiBzdG9yZXMgYW4gZXhhY3QgdmFsdWUuCi0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfaW50ZWdyYWwgPSBmYWxzZTsJLy8vPCBUcnVlIGlmIGZpeGVkIHNpemUgYW5kIGNhc3QtY29weWFibGUuCi19OwotCi0jaWZuZGVmIERPWFlHRU5fU0hPVUxEX1NLSVBfVEhJUwotCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXN0cnVjdCBudW1lcmljX2xpbWl0czxUKj4gewotICAgIHN0YXRpYyBpbmxpbmUgVCogbWluICh2b2lkKQl7IHJldHVybiAoTlVMTCk7IH0KLSAgICBzdGF0aWMgaW5saW5lIFQqIG1heCAodm9pZCkJeyByZXR1cm4gKFVJTlRQVFJfTUFYKTsgfQotICAgIHN0YXRpYyBjb25zdCBib29sIGlzX3NpZ25lZCA9IGZhbHNlOwotICAgIHN0YXRpYyBjb25zdCBib29sIGlzX2ludGVnZXIgPSB0cnVlOwotICAgIHN0YXRpYyBjb25zdCBib29sIGlzX2ludGVncmFsID0gdHJ1ZTsKLX07Ci0KLSNkZWZpbmUgX05VTUVSSUNfTElNSVRTKHR5cGUsIG1pblZhbCwgbWF4VmFsLCBiU2lnbmVkLCBiSW50ZWdlciwgYkludGVncmFsKQlcCi10ZW1wbGF0ZSA8PgkJCQkJCQlcCi1zdHJ1Y3QgbnVtZXJpY19saW1pdHM8dHlwZT4gewkJCQkJXAotICAgIHN0YXRpYyBpbmxpbmUgdHlwZSBtaW4gKHZvaWQpCXsgcmV0dXJuIChtaW5WYWwpOyB9CVwKLSAgICBzdGF0aWMgaW5saW5lIHR5cGUgbWF4ICh2b2lkKQl7IHJldHVybiAobWF4VmFsKTsgfQlcCi0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfc2lnbmVkID0gYlNpZ25lZDsJCQlcCi0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfaW50ZWdlciA9IGJJbnRlZ2VyOwkJCVwKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19pbnRlZ3JhbCA9IGJJbnRlZ3JhbDsJCQlcCi19Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vCQl0eXBlCQltaW4JCW1heAkJc2lnbmVkCWludGVnZXIJaW50ZWdyYWwKLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLV9OVU1FUklDX0xJTUlUUyAoYm9vbCwJCWZhbHNlLAkJdHJ1ZSwJCWZhbHNlLAl0cnVlLAl0cnVlKTsKLV9OVU1FUklDX0xJTUlUUyAoY2hhciwJCVNDSEFSX01JTiwJU0NIQVJfTUFYLAl0cnVlLAl0cnVlLAl0cnVlKTsKLV9OVU1FUklDX0xJTUlUUyAoaW50LAkJSU5UX01JTiwJSU5UX01BWCwJdHJ1ZSwJdHJ1ZSwJdHJ1ZSk7Ci1fTlVNRVJJQ19MSU1JVFMgKHNob3J0LAkJU0hSVF9NSU4sCVNIUlRfTUFYLAl0cnVlLAl0cnVlLAl0cnVlKTsKLV9OVU1FUklDX0xJTUlUUyAobG9uZywJCUxPTkdfTUlOLAlMT05HX01BWCwJdHJ1ZSwJdHJ1ZSwJdHJ1ZSk7Ci0jaWYgSEFWRV9USFJFRV9DSEFSX1RZUEVTCi1fTlVNRVJJQ19MSU1JVFMgKHNpZ25lZCBjaGFyLAlTQ0hBUl9NSU4sCVNDSEFSX01BWCwJdHJ1ZSwJdHJ1ZSwJdHJ1ZSk7Ci0jZW5kaWYKLV9OVU1FUklDX0xJTUlUUyAodW5zaWduZWQgY2hhciwJMCwJCVVDSEFSX01BWCwJZmFsc2UsCXRydWUsCXRydWUpOwotX05VTUVSSUNfTElNSVRTICh1bnNpZ25lZCBpbnQsCTAsCQlVSU5UX01BWCwJZmFsc2UsCXRydWUsCXRydWUpOwotX05VTUVSSUNfTElNSVRTICh1bnNpZ25lZCBzaG9ydCwwLAkJVVNIUlRfTUFYLAlmYWxzZSwJdHJ1ZSwJdHJ1ZSk7Ci1fTlVNRVJJQ19MSU1JVFMgKHVuc2lnbmVkIGxvbmcsCTAsCQlVTE9OR19NQVgsCWZhbHNlLAl0cnVlLAl0cnVlKTsKLV9OVU1FUklDX0xJTUlUUyAod2NoYXJfdCwJMCwJCVdDSEFSX01BWCwJZmFsc2UsCXRydWUsCXRydWUpOwotX05VTUVSSUNfTElNSVRTIChmbG9hdCwJCUZMVF9NSU4sCUZMVF9NQVgsCXRydWUsCWZhbHNlLAl0cnVlKTsKLV9OVU1FUklDX0xJTUlUUyAoZG91YmxlLAlEQkxfTUlOLAlEQkxfTUFYLAl0cnVlLAlmYWxzZSwJdHJ1ZSk7Ci1fTlVNRVJJQ19MSU1JVFMgKGxvbmcgZG91YmxlLAlMREJMX01JTiwJTERCTF9NQVgsCXRydWUsCWZhbHNlLAl0cnVlKTsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotX05VTUVSSUNfTElNSVRTIChsb25nIGxvbmcsCUxMT05HX01JTiwJTExPTkdfTUFYLAl0cnVlLAl0cnVlLAl0cnVlKTsKLV9OVU1FUklDX0xJTUlUUyAodW5zaWduZWQgbG9uZyBsb25nLAkwLAlVTExPTkdfTUFYLAlmYWxzZSwJdHJ1ZSwJdHJ1ZSk7Ci0jZW5kaWYKLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotI2VuZGlmIC8vIERPWFlHRU5fU0hPVUxEX1NLSVBfVEhJUwotCi0vLy8gTWFjcm8gZm9yIGRlZmluaW5nIG51bWVyaWNfbGltaXRzIHNwZWNpYWxpemF0aW9ucwotI2RlZmluZSBOVU1FUklDX0xJTUlUUyh0eXBlLCBtaW5WYWwsIG1heFZhbCwgYlNpZ25lZCwgYkludGVnZXIsIGJJbnRlZ3JhbCkJXAotbmFtZXNwYWNlIHVzdGwgeyBfTlVNRVJJQ19MSU1JVFMgKHR5cGUsIG1pblZhbCwgbWF4VmFsLCBiU2lnbmVkLCBiSW50ZWdlciwgYkludGVncmFsKTsgfQotCi0vLy8gUmV0dXJucyB0aGUgcmVjb21tZW5kZWQgc3RyZWFtIGFsaWdubWVudCBmb3IgdHlwZSBccCBULiBPdmVycmlkZSB3aXRoIEFMSUdOT0YuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSBzaXplX3QgYWxpZ25vZiAoY29uc3QgVCYpCi17Ci0gICAgaWYgKG51bWVyaWNfbGltaXRzPFQ+Ojppc19pbnRlZ3JhbCkKLQlyZXR1cm4gKF9fYWxpZ25vZl9fKFQpKTsKLSAgICByZXR1cm4gKDQpOwotfQotCi0jZGVmaW5lIEFMSUdOT0YodHlwZSxncmFpbikJXAotbmFtZXNwYWNlIHVzdGwgewkJXAotICAgIHRlbXBsYXRlIDw+IGlubGluZSBzaXplX3QgYWxpZ25vZiAoY29uc3QgdHlwZSYpIHsgcmV0dXJuIChncmFpbik7IH0gfQotCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91bGlzdC5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdWxpc3QuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODQyYmJkZS4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91bGlzdC5oCisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHVzdGwgbGlicmFyeSwgYW4gU1RMIGltcGxlbWVudGF0aW9uLgotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwNSBieSBNaWtlIFNoYXJvdiA8bXNoYXJvdkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0vLyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgotLy8KLS8vIHVsaXN0LmgKLS8vCi0KLSNpZm5kZWYgVUxJU1RfSF81NEUzQjUxMDQ5ODk4MkM4N0EwQTFFMTkzMkU2NzI5RAotI2RlZmluZSBVTElTVF9IXzU0RTNCNTEwNDk4OTgyQzg3QTBBMUUxOTMyRTY3MjlECi0KLSNpbmNsdWRlICJ1dmVjdG9yLmgiCi0jaW5jbHVkZSAidWN0cmFsZ28uaCIKLQotbmFtZXNwYWNlIHVzdGwgewotCi0vLy8gXGNsYXNzIGxpc3QgdWxpc3QuaCB1c3RsLmgKLS8vLyBcaW5ncm91cCBTZXF1ZW5jZXMKLS8vLwotLy8vIFxicmllZiBMaW5rZWQgbGlzdCwgZGVmaW5lZCBhcyBhbiBhbGlhcyB0byBccmVmIHZlY3Rvci4KLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1jbGFzcyBsaXN0IDogcHVibGljIHZlY3RvcjxUPiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I8VD46OnNpemVfdHlwZQlzaXplX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB2ZWN0b3I8VD46Oml0ZXJhdG9yCWl0ZXJhdG9yOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yPFQ+Ojpjb25zdF9pdGVyYXRvcgljb25zdF9pdGVyYXRvcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjxUPjo6cmVmZXJlbmNlCXJlZmVyZW5jZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHZlY3RvcjxUPjo6Y29uc3RfcmVmZXJlbmNlCWNvbnN0X3JlZmVyZW5jZTsKLXB1YmxpYzoKLSAgICBpbmxpbmUJCQlsaXN0ICh2b2lkKQkJCTogdmVjdG9yPFQ+ICgpIHt9Ci0gICAgaW5saW5lIGV4cGxpY2l0CQlsaXN0IChzaXplX3R5cGUgbikJCTogdmVjdG9yPFQ+IChuKSB7fQotICAgIGlubGluZQkJCWxpc3QgKHNpemVfdHlwZSBuLCBjb25zdCBUJiB2KQk6IHZlY3RvcjxUPiAobiwgdikge30KLSAgICBpbmxpbmUJCQlsaXN0IChjb25zdCBsaXN0PFQ+JiB2KQkJOiB2ZWN0b3I8VD4gKHYpIHt9Ci0gICAgaW5saW5lCQkJbGlzdCAoY29uc3RfaXRlcmF0b3IgaTEsIGNvbnN0X2l0ZXJhdG9yIGkyKQk6IHZlY3RvcjxUPiAoaTEsIGkyKSB7fQotICAgIGlubGluZSBzaXplX3R5cGUJCXNpemUgKHZvaWQpIGNvbnN0CQl7IHJldHVybiAodmVjdG9yPFQ+OjpzaXplKCkpOyB9Ci0gICAgaW5saW5lIGl0ZXJhdG9yCQliZWdpbiAodm9pZCkJCQl7IHJldHVybiAodmVjdG9yPFQ+OjpiZWdpbigpKTsgfQotICAgIGlubGluZSBjb25zdF9pdGVyYXRvcgliZWdpbiAodm9pZCkgY29uc3QJCXsgcmV0dXJuICh2ZWN0b3I8VD46OmJlZ2luKCkpOyB9Ci0gICAgaW5saW5lIGl0ZXJhdG9yCQllbmQgKHZvaWQpCQkJeyByZXR1cm4gKHZlY3RvcjxUPjo6ZW5kKCkpOyB9Ci0gICAgaW5saW5lIGNvbnN0X2l0ZXJhdG9yCWVuZCAodm9pZCkgY29uc3QJCXsgcmV0dXJuICh2ZWN0b3I8VD46OmVuZCgpKTsgfQotICAgIGlubGluZSB2b2lkCQkJcHVzaF9mcm9udCAoY29uc3QgVCYgdikJCXsgaW5zZXJ0IChiZWdpbigpLCB2KTsgfQotICAgIGlubGluZSB2b2lkCQkJcG9wX2Zyb250ICh2b2lkKQkJeyBlcmFzZSAoYmVnaW4oKSk7IH0KLSAgICBpbmxpbmUgY29uc3RfcmVmZXJlbmNlCWZyb250ICh2b2lkKSBjb25zdAkJeyByZXR1cm4gKCpiZWdpbigpKTsgfQotICAgIGlubGluZSByZWZlcmVuY2UJCWZyb250ICh2b2lkKQkJCXsgcmV0dXJuICgqYmVnaW4oKSk7IH0KLSAgICBpbmxpbmUgdm9pZAkJCXJlbW92ZSAoY29uc3QgVCYgdikJCXsgOjp1c3RsOjpyZW1vdmUgKCp0aGlzLCB2KTsgfQotICAgIGlubGluZSB2b2lkCQkJdW5pcXVlICh2b2lkKQkJCXsgOjp1c3RsOjp1bmlxdWUgKCp0aGlzKTsgfQotICAgIGlubGluZSB2b2lkCQkJc29ydCAodm9pZCkJCQl7IDo6dXN0bDo6c29ydCAoKnRoaXMpOyB9Ci0gICAgdm9pZAkJCW1lcmdlIChsaXN0PFQ+JiBsKTsKLSAgICB2b2lkCQkJc3BsaWNlIChpdGVyYXRvciBpcCwgbGlzdDxUPiYgbCwgaXRlcmF0b3IgZmlyc3QgPSBOVUxMLCBpdGVyYXRvciBsYXN0ID0gTlVMTCk7Ci19OwotCi0vLy8gTWVyZ2VzIHRoZSBjb250ZW50cyB3aXRoIFxwIGwuIEFzc3VtZXMgYm90aCBsaXN0cyBhcmUgc29ydGVkLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci12b2lkIGxpc3Q8VD46Om1lcmdlIChsaXN0JiBsKQotewotICAgIGxpc3Q8VD46OnJlc2l6ZSAoc2l6ZSgpICsgbC5zaXplKCkpOwotICAgIGl0ZXJhdG9yIG1lID0gbWVyZ2UgKGJlZ2luKCksIGVuZCgpLCBsLmJlZ2luKCksIGwuZW5kKCksIGJlZ2luKCkpOwotICAgIGxpc3Q8VD46OnJlc2l6ZSAoZGlzdGFuY2UgKGJlZ2luKCksIG1lKSk7Ci19Ci0KLS8vLyBNb3ZlcyB0aGUgcmFuZ2UgW2ZpcnN0LCBsYXN0KSBmcm9tIFxwIGwgdG8gdGhpcyBsaXN0IGF0IFxwIGlwLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci12b2lkIGxpc3Q8VD46OnNwbGljZSAoaXRlcmF0b3IgaXAsIGxpc3Q8VD4mIGwsIGl0ZXJhdG9yIGZpcnN0LCBpdGVyYXRvciBsYXN0KQotewotICAgIGlmICghZmlyc3QpCi0JZmlyc3QgPSBsLmJlZ2luKCk7Ci0gICAgaWYgKCFsYXN0KQotCWxhc3QgPSBsLmVuZCgpOwotICAgIGluc2VydCAoaXAsIGZpcnN0LCBsYXN0KTsKLSAgICBsLmVyYXNlIChmaXJzdCwgbGFzdCk7Ci19Ci0KLSNkZWZpbmUgZGVxdWUgbGlzdCAvLy88IGxpc3QgaGFzIGFsbCB0aGUgZnVuY3Rpb25hbGl0eSBwcm92aWRlZCBieSBkZXF1ZQotCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91bWFwLmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91bWFwLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzOGM1MDcuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdW1hcC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTY1ICswLDAgQEAKLS8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB1c3RsIGxpYnJhcnksIGFuIFNUTCBpbXBsZW1lbnRhdGlvbi4KLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgYnkgTWlrZSBTaGFyb3YgPG1zaGFyb3ZAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotLy8gVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KLS8vCi0vLyB1bWFwLmgKLS8vCi0KLSNpZm5kZWYgVU1BUF9IXzQ1NjQzRjUxNkUwMkE4N0EzRENFQTUwMjQwNTJBNkY1Ci0jZGVmaW5lIFVNQVBfSF80NTY0M0Y1MTZFMDJBODdBM0RDRUE1MDI0MDUyQTZGNQotCi0jaW5jbHVkZSAidWFzc2VydC5oIgotI2luY2x1ZGUgInVmdW5jdGlvbi5oIgotI2luY2x1ZGUgInV2ZWN0b3IuaCIKLQotbmFtZXNwYWNlIHVzdGwgewotCi0vLy8gXGNsYXNzIG1hcCB1bWFwLmggdXN0bC5oCi0vLy8gXGluZ3JvdXAgQXNzb2NpYXRpdmVDb250YWluZXJzCi0vLy8KLS8vLyBcYnJpZWYgQSBzb3J0ZWQgYXNzb2NpYXRpdmUgY29udGFpbmVyIG9mIHBhaXI8SyxWPgotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSywgdHlwZW5hbWUgVj4KLWNsYXNzIG1hcCA6IHB1YmxpYyB2ZWN0b3I8cGFpcjxLLFY+ID4gewotcHVibGljOgotICAgIHR5cGVkZWYgSwkJCQkJCWtleV90eXBlOwotICAgIHR5cGVkZWYgVgkJCQkJCWRhdGFfdHlwZTsKLSAgICB0eXBlZGVmIGNvbnN0IEsmCQkJCQljb25zdF9rZXlfcmVmOwotICAgIHR5cGVkZWYgY29uc3QgViYJCQkJCWNvbnN0X2RhdGFfcmVmOwotICAgIHR5cGVkZWYgY29uc3QgbWFwPEssVj4mCQkJCXJjc2VsZl90OwotICAgIHR5cGVkZWYgdmVjdG9yPHBhaXI8SyxWPiA+CQkJCWJhc2VfY2xhc3M7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX2NsYXNzOjp2YWx1ZV90eXBlCQl2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV9jbGFzczo6c2l6ZV90eXBlCQlzaXplX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX2NsYXNzOjpwb2ludGVyCQlwb2ludGVyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV9jbGFzczo6Y29uc3RfcG9pbnRlcgkJY29uc3RfcG9pbnRlcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfY2xhc3M6OnJlZmVyZW5jZQkJcmVmZXJlbmNlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV9jbGFzczo6Y29uc3RfcmVmZXJlbmNlCWNvbnN0X3JlZmVyZW5jZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfY2xhc3M6OmNvbnN0X2l0ZXJhdG9yCQljb25zdF9pdGVyYXRvcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfY2xhc3M6Oml0ZXJhdG9yCQlpdGVyYXRvcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfY2xhc3M6OnJldmVyc2VfaXRlcmF0b3IJcmV2ZXJzZV9pdGVyYXRvcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfY2xhc3M6OmNvbnN0X3JldmVyc2VfaXRlcmF0b3IJY29uc3RfcmV2ZXJzZV9pdGVyYXRvcjsKLSAgICB0eXBlZGVmIHBhaXI8Y29uc3RfaXRlcmF0b3IsY29uc3RfaXRlcmF0b3I+CQljb25zdF9yYW5nZV90OwotICAgIHR5cGVkZWYgcGFpcjxpdGVyYXRvcixpdGVyYXRvcj4JCQlyYW5nZV90OwotcHVibGljOgotICAgIGlubGluZQkJCW1hcCAodm9pZCkJCQk6IHZlY3RvcjxwYWlyPEssVj4gPiAoKSB7fQotICAgIGV4cGxpY2l0IGlubGluZQkJbWFwIChzaXplX3R5cGUgbikJCTogdmVjdG9yPHBhaXI8SyxWPiA+IChuKSB7fQotICAgIGlubGluZQkJCW1hcCAocmNzZWxmX3QgdikJCTogdmVjdG9yPHBhaXI8SyxWPiA+ICh2KSB7fQotICAgIGlubGluZQkJCW1hcCAoY29uc3RfaXRlcmF0b3IgaTEsIGNvbnN0X2l0ZXJhdG9yIGkyKSA6IHZlY3RvcjxwYWlyPEssVj4gPigpIHsgaW5zZXJ0IChpMSwgaTIpOyB9Ci0gICAgaW5saW5lIHJjc2VsZl90CQlvcGVyYXRvcj0gKHJjc2VsZl90IHYpCQl7IGJhc2VfY2xhc3M6Om9wZXJhdG9yPSAodik7IHJldHVybiAoKnRoaXMpOyB9Ci0gICAgaW5saW5lIGNvbnN0X2RhdGFfcmVmCW9wZXJhdG9yW10gKGNvbnN0X2tleV9yZWYgaSkgY29uc3Q7Ci0gICAgZGF0YV90eXBlJgkJCW9wZXJhdG9yW10gKGNvbnN0X2tleV9yZWYgaSk7Ci0gICAgaW5saW5lIHNpemVfdHlwZQkJc2l6ZSAodm9pZCkgY29uc3QJCXsgcmV0dXJuIChiYXNlX2NsYXNzOjpzaXplKCkpOyB9Ci0gICAgaW5saW5lIGl0ZXJhdG9yCQliZWdpbiAodm9pZCkJCQl7IHJldHVybiAoYmFzZV9jbGFzczo6YmVnaW4oKSk7IH0KLSAgICBpbmxpbmUgY29uc3RfaXRlcmF0b3IJYmVnaW4gKHZvaWQpIGNvbnN0CQl7IHJldHVybiAoYmFzZV9jbGFzczo6YmVnaW4oKSk7IH0KLSAgICBpbmxpbmUgaXRlcmF0b3IJCWVuZCAodm9pZCkJCQl7IHJldHVybiAoYmFzZV9jbGFzczo6ZW5kKCkpOyB9Ci0gICAgaW5saW5lIGNvbnN0X2l0ZXJhdG9yCWVuZCAodm9pZCkgY29uc3QJCXsgcmV0dXJuIChiYXNlX2NsYXNzOjplbmQoKSk7IH0KLSAgICBpbmxpbmUgdm9pZAkJCWFzc2lnbiAoY29uc3RfaXRlcmF0b3IgaTEsIGNvbnN0X2l0ZXJhdG9yIGkyKQl7IGNsZWFyKCk7IGluc2VydCAoaTEsIGkyKTsgfQotICAgIGlubGluZSB2b2lkCQkJcHVzaF9iYWNrIChjb25zdF9yZWZlcmVuY2UgdikJCQl7IGluc2VydCAodik7IH0KLSAgICBpbmxpbmUgY29uc3RfaXRlcmF0b3IJZmluZCAoY29uc3Rfa2V5X3JlZiBrKSBjb25zdDsKLSAgICBpbmxpbmUgaXRlcmF0b3IJCWZpbmQgKGNvbnN0X2tleV9yZWYgaykJeyByZXR1cm4gKGNvbnN0X2Nhc3Q8aXRlcmF0b3I+IChjb25zdF9jYXN0PHJjc2VsZl90PigqdGhpcykuZmluZCAoaykpKTsgfQotICAgIGlubGluZSBjb25zdF9pdGVyYXRvcglmaW5kX2RhdGEgKGNvbnN0X2RhdGFfcmVmIHYsIGNvbnN0X2l0ZXJhdG9yIGZpcnN0ID0gTlVMTCwgY29uc3RfaXRlcmF0b3IgbGFzdCA9IE5VTEwpIGNvbnN0OwotICAgIGlubGluZSBpdGVyYXRvcgkJZmluZF9kYXRhIChjb25zdF9kYXRhX3JlZiB2LCBpdGVyYXRvciBmaXJzdCA9IE5VTEwsIGl0ZXJhdG9yIGxhc3QgPSBOVUxMKTsKLSAgICBpdGVyYXRvcgkJCWluc2VydCAoY29uc3RfcmVmZXJlbmNlIHYpOwotICAgIHZvaWQJCQlpbnNlcnQgKGNvbnN0X2l0ZXJhdG9yIGkxLCBjb25zdF9pdGVyYXRvciBpMik7Ci0gICAgaW5saW5lIHZvaWQJCQllcmFzZSAoY29uc3Rfa2V5X3JlZiBrKTsKLSAgICBpbmxpbmUgaXRlcmF0b3IJCWVyYXNlIChpdGVyYXRvciBlcCkJeyByZXR1cm4gKGJhc2VfY2xhc3M6OmVyYXNlIChlcCkpOyB9Ci0gICAgaW5saW5lIGl0ZXJhdG9yCQllcmFzZSAoaXRlcmF0b3IgZXAxLCBpdGVyYXRvciBlcDIpIHsgcmV0dXJuIChiYXNlX2NsYXNzOjplcmFzZSAoZXAxLCBlcDIpKTsgfQotICAgIGlubGluZSB2b2lkCQkJY2xlYXIgKHZvaWQpCQl7IGJhc2VfY2xhc3M6OmNsZWFyKCk7IH0KLXByaXZhdGU6Ci0gICAgY29uc3RfaXRlcmF0b3IJCWxvd2VyX2JvdW5kIChjb25zdF9rZXlfcmVmIGspIGNvbnN0OwotICAgIGlubGluZSBpdGVyYXRvcgkJbG93ZXJfYm91bmQgKGNvbnN0X2tleV9yZWYgaykgeyByZXR1cm4gKGNvbnN0X2Nhc3Q8aXRlcmF0b3I+KGNvbnN0X2Nhc3Q8cmNzZWxmX3Q+KCp0aGlzKS5sb3dlcl9ib3VuZCAoaykpKTsgfQotfTsKLQotdGVtcGxhdGUgPHR5cGVuYW1lIEssIHR5cGVuYW1lIFY+Ci10eXBlbmFtZSBtYXA8SyxWPjo6Y29uc3RfaXRlcmF0b3IgbWFwPEssVj46Omxvd2VyX2JvdW5kIChjb25zdF9rZXlfcmVmIGspIGNvbnN0Ci17Ci0gICAgY29uc3RfaXRlcmF0b3IgZmlyc3QgKGJlZ2luKCkpLCBsYXN0IChlbmQoKSk7Ci0gICAgd2hpbGUgKGZpcnN0ICE9IGxhc3QpIHsKLQljb25zdF9pdGVyYXRvciBtaWQgPSBhZHZhbmNlIChmaXJzdCwgZGlzdGFuY2UgKGZpcnN0LGxhc3QpIC8gMik7Ci0JaWYgKG1pZC0+Zmlyc3QgPCBrKQotCSAgICBmaXJzdCA9IGFkdmFuY2UgKG1pZCwgMSk7Ci0JZWxzZQotCSAgICBsYXN0ID0gbWlkOwotICAgIH0KLSAgICByZXR1cm4gKGZpcnN0KTsKLX0KLQotLy8vIFJldHVybnMgdGhlIHBhaXI8SyxWPiB3aGVyZSBLID0gXHAgay4KLXRlbXBsYXRlIDx0eXBlbmFtZSBLLCB0eXBlbmFtZSBWPgotaW5saW5lIHR5cGVuYW1lIG1hcDxLLFY+Ojpjb25zdF9pdGVyYXRvciBtYXA8SyxWPjo6ZmluZCAoY29uc3Rfa2V5X3JlZiBrKSBjb25zdAotewotICAgIGNvbnN0X2l0ZXJhdG9yIGkgPSBsb3dlcl9ib3VuZCAoayk7Ci0gICAgcmV0dXJuICgoaSA8IGVuZCgpICYmIGsgPCBpLT5maXJzdCkgPyBlbmQoKSA6IGkpOwotfQotCi0vLy8gUmV0dXJucyB0aGUgcGFpcjxLLFY+IHdoZXJlIFYgPSBccCB2LCBvY2N1cmluZyBpbiByYW5nZSBbZmlyc3QsbGFzdCkuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSywgdHlwZW5hbWUgVj4KLWlubGluZSB0eXBlbmFtZSBtYXA8SyxWPjo6Y29uc3RfaXRlcmF0b3IgbWFwPEssVj46OmZpbmRfZGF0YSAoY29uc3RfZGF0YV9yZWYgdiwgY29uc3RfaXRlcmF0b3IgZmlyc3QsIGNvbnN0X2l0ZXJhdG9yIGxhc3QpIGNvbnN0Ci17Ci0gICAgaWYgKCFmaXJzdCkgZmlyc3QgPSBiZWdpbigpOwotICAgIGlmICghbGFzdCkgbGFzdCA9IGVuZCgpOwotICAgIGZvciAoOyBmaXJzdCAhPSBsYXN0ICYmIGZpcnN0LT5zZWNvbmQgIT0gdjsgKytmaXJzdCk7Ci0gICAgcmV0dXJuIChmaXJzdCk7Ci19Ci0KLS8vLyBSZXR1cm5zIHRoZSBwYWlyPEssVj4gd2hlcmUgViA9IFxwIHYsIG9jY3VyaW5nIGluIHJhbmdlIFtmaXJzdCxsYXN0KS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBLLCB0eXBlbmFtZSBWPgotaW5saW5lIHR5cGVuYW1lIG1hcDxLLFY+OjppdGVyYXRvciBtYXA8SyxWPjo6ZmluZF9kYXRhIChjb25zdF9kYXRhX3JlZiB2LCBpdGVyYXRvciBmaXJzdCwgaXRlcmF0b3IgbGFzdCkKLXsKLSAgICByZXR1cm4gKGNvbnN0X2Nhc3Q8aXRlcmF0b3I+IChmaW5kX2RhdGEgKHYsIGNvbnN0X2Nhc3Q8Y29uc3RfaXRlcmF0b3I+KGZpcnN0KSwgY29uc3RfY2FzdDxjb25zdF9pdGVyYXRvcj4obGFzdCkpKSk7Ci19Ci0KLS8vLyBSZXR1cm5zIGRhdGEgYXNzb2NpYXRlZCB3aXRoIGtleSBccCBrLgotdGVtcGxhdGUgPHR5cGVuYW1lIEssIHR5cGVuYW1lIFY+Ci1pbmxpbmUgY29uc3QgdHlwZW5hbWUgbWFwPEssVj46OmRhdGFfdHlwZSYgbWFwPEssVj46Om9wZXJhdG9yW10gKGNvbnN0X2tleV9yZWYgaykgY29uc3QKLXsKLSAgICBhc3NlcnQgKGZpbmQoaykgIT0gZW5kKCkgJiYgIm9wZXJhdG9yW10gY29uc3QgY2FuIG5vdCBpbnNlcnQgbm9uLWV4aXN0ZW50IGtleXMiKTsKLSAgICByZXR1cm4gKGZpbmQoayktPnNlY29uZCk7Ci19Ci0KLS8vLyBSZXR1cm5zIGRhdGEgYXNzb2NpYXRlZCB3aXRoIGtleSBccCBrLgotdGVtcGxhdGUgPHR5cGVuYW1lIEssIHR5cGVuYW1lIFY+Ci10eXBlbmFtZSBtYXA8SyxWPjo6ZGF0YV90eXBlJiBtYXA8SyxWPjo6b3BlcmF0b3JbXSAoY29uc3Rfa2V5X3JlZiBrKQotewotICAgIGl0ZXJhdG9yIGlwID0gbG93ZXJfYm91bmQgKGspOwotICAgIGlmIChpcCA9PSBlbmQoKSB8fCBrIDwgaXAtPmZpcnN0KQotCWlwID0gYmFzZV9jbGFzczo6aW5zZXJ0IChpcCwgbWFrZV9wYWlyIChrLCBWKCkpKTsKLSAgICByZXR1cm4gKGlwLT5zZWNvbmQpOwotfQotCi0vLy8gSW5zZXJ0cyB0aGUgcGFpciBpbnRvIHRoZSBjb250YWluZXIuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSywgdHlwZW5hbWUgVj4KLXR5cGVuYW1lIG1hcDxLLFY+OjppdGVyYXRvciBtYXA8SyxWPjo6aW5zZXJ0IChjb25zdF9yZWZlcmVuY2UgdikKLXsKLSAgICBpdGVyYXRvciBpcCA9IGxvd2VyX2JvdW5kICh2LmZpcnN0KTsKLSAgICBpZiAoaXAgPT0gZW5kKCkgfHwgdi5maXJzdCA8IGlwLT5maXJzdCkKLQlpcCA9IGJhc2VfY2xhc3M6Omluc2VydCAoaXAsIHYpOwotICAgIGVsc2UKLQkqaXAgPSB2OwotICAgIHJldHVybiAoaXApOwotfQotCi0vLy8gSW5zZXJ0cyBlbGVtZW50cyBmcm9tIHJhbmdlIFtpMSxpMikgaW50byB0aGUgY29udGFpbmVyLgotdGVtcGxhdGUgPHR5cGVuYW1lIEssIHR5cGVuYW1lIFY+Ci12b2lkIG1hcDxLLFY+OjppbnNlcnQgKGNvbnN0X2l0ZXJhdG9yIGkxLCBjb25zdF9pdGVyYXRvciBpMikKLXsKLSAgICBhc3NlcnQgKGkxIDw9IGkyKTsKLSAgICByZXNlcnZlIChzaXplKCkgKyBkaXN0YW5jZSAoaTEsIGkyKSk7Ci0gICAgZm9yICg7IGkxICE9IGkyOyArK2kxKQotCWluc2VydCAoKmkxKTsKLX0KLQotLy8vIEVyYXNlcyB0aGUgZWxlbWVudCB3aXRoIGtleSB2YWx1ZSBccCBrLgotdGVtcGxhdGUgPHR5cGVuYW1lIEssIHR5cGVuYW1lIFY+Ci1pbmxpbmUgdm9pZCBtYXA8SyxWPjo6ZXJhc2UgKGNvbnN0X2tleV9yZWYgaykKLXsKLSAgICBpdGVyYXRvciBpcCA9IGZpbmQgKGspOwotICAgIGlmIChpcCAhPSBlbmQoKSkKLQllcmFzZSAoaXApOwotfQotCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91bWF0cml4LmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91bWF0cml4LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2ODEwZjEuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdW1hdHJpeC5oCisrKyAvZGV2L251bGwKQEAgLTEsODAgKzAsMCBAQAotLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHVzdGwgbGlicmFyeSwgYW4gU1RMIGltcGxlbWVudGF0aW9uLgotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwNSBieSBNaWtlIFNoYXJvdiA8bXNoYXJvdkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0vLyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgotLy8KLS8vIHVtYXRyaXguaAotLy8KLQotI2lmbmRlZiBVTUFUUklYX0hfNzQwRUJGRUY1NTRFODMzNjQ1RTBGRDcyNDE5QTgxODUKLSNkZWZpbmUgVU1BVFJJWF9IXzc0MEVCRkVGNTU0RTgzMzY0NUUwRkQ3MjQxOUE4MTg1Ci0KLSNpbmNsdWRlICJ1dHVwbGUuaCIKLQotbmFtZXNwYWNlIHVzdGwgewotCi0vLy8gXGNsYXNzIG1hdHJpeCB1bWF0cml4LmggdXN0bC5oCi0vLy8gXGluZ3JvdXAgU2VxdWVuY2VzCi0vLy8KLS8vLyBcYnJpZWYgQSB0d28tZGltZW5zaW9uYWwgYXJyYXkgb2YgTlgqTlkgZWxlbWVudHMgb2YgdHlwZSBULgotLy8vCi10ZW1wbGF0ZSA8c2l6ZV90IE5YLCBzaXplX3QgTlksIHR5cGVuYW1lIFQ+Ci1jbGFzcyBtYXRyaXggOiBwdWJsaWMgdHVwbGU8TlgqTlksVD4gewotcHVibGljOgotICAgIHR5cGVkZWYgdHVwbGU8TlgsVD4JCQkJCXJvd190eXBlOwotICAgIHR5cGVkZWYgdHVwbGU8TlksVD4JCQkJCWNvbHVtbl90eXBlOwotICAgIHR5cGVkZWYgdHVwbGU8TlgqTlksVD4JCQkJdHVwbGVfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHR1cGxlX3R5cGU6OnZhbHVlX3R5cGUJCXZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB0dXBsZV90eXBlOjpzaXplX3R5cGUJCXNpemVfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHR1cGxlX3R5cGU6OnBvaW50ZXIJCXBvaW50ZXI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB0dXBsZV90eXBlOjpjb25zdF9wb2ludGVyCQljb25zdF9wb2ludGVyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgdHVwbGVfdHlwZTo6cmVmZXJlbmNlCQlyZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB0dXBsZV90eXBlOjpjb25zdF9yZWZlcmVuY2UJY29uc3RfcmVmZXJlbmNlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgdHVwbGVfdHlwZTo6aXRlcmF0b3IJCWl0ZXJhdG9yOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgdHVwbGVfdHlwZTo6Y29uc3RfaXRlcmF0b3IJCWNvbnN0X2l0ZXJhdG9yOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgdHVwbGVfdHlwZTo6cmFuZ2VfdAkJcmFuZ2VfdDsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIHR1cGxlX3R5cGU6OmNvbnN0X3JhbmdlX3QJCWNvbnN0X3JhbmdlX3Q7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB0dXBsZV90eXBlOjpyZXZlcnNlX2l0ZXJhdG9yCXJldmVyc2VfaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSB0dXBsZV90eXBlOjpjb25zdF9yZXZlcnNlX2l0ZXJhdG9yCWNvbnN0X3JldmVyc2VfaXRlcmF0b3I7Ci1wdWJsaWM6Ci0gICAgaW5saW5lCQkJbWF0cml4ICh2b2lkKQkJCXsgZmlsbF9uIChtYXRyaXg6OmJlZ2luKCksIE5YKk5ZLCBUKCkpOyB9Ci0gICAgaW5saW5lIHNpemVfdHlwZQkJY29sdW1ucyAodm9pZCkgY29uc3QJCXsgcmV0dXJuIChOWCk7IH0KLSAgICBpbmxpbmUgc2l6ZV90eXBlCQlyb3dzICh2b2lkKSBjb25zdAkJeyByZXR1cm4gKE5ZKTsgfQotICAgIGlubGluZSBjb25zdF9pdGVyYXRvcglhdCAoc2l6ZV90eXBlIGkpIGNvbnN0CQl7IHJldHVybiAobWF0cml4OjpiZWdpbigpICsgaSAqIE5YKTsgfQotICAgIGlubGluZSBpdGVyYXRvcgkJYXQgKHNpemVfdHlwZSBpKQkJeyByZXR1cm4gKG1hdHJpeDo6YmVnaW4oKSArIGkgKiBOWCk7IH0KLSAgICBpbmxpbmUgY29uc3RfaXRlcmF0b3IJb3BlcmF0b3JbXSAoc2l6ZV90eXBlIGkpIGNvbnN0CXsgcmV0dXJuIChhdCAoaSkpOyB9Ci0gICAgaW5saW5lIGl0ZXJhdG9yCQlvcGVyYXRvcltdIChzaXplX3R5cGUgaSkJeyByZXR1cm4gKGF0IChpKSk7IH0KLSAgICBpbmxpbmUgcm93X3R5cGUJCXJvdyAoc2l6ZV90eXBlIHIpIGNvbnN0CQl7IHJldHVybiAocm93X3R5cGUgKGF0IChyKSkpOyB9Ci0gICAgaW5saW5lIGNvbHVtbl90eXBlCQljb2x1bW4gKHNpemVfdHlwZSBjKSBjb25zdDsKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDI+Ci0gICAgaW5saW5lIGNvbnN0IG1hdHJpeCYJb3BlcmF0b3I9IChjb25zdCBtYXRyaXg8TlgsTlksVDI+JiBzcmMpCXsgdHVwbGVfdHlwZTo6b3BlcmF0b3I9IChzcmMpOyByZXR1cm4gKCp0aGlzKTsgfQotICAgIGlubGluZSBjb25zdCBtYXRyaXgmCW9wZXJhdG9yPSAoY29uc3QgbWF0cml4PE5YLE5ZLFQ+JiBzcmMpCXsgdHVwbGVfdHlwZTo6b3BlcmF0b3I9IChzcmMpOyByZXR1cm4gKCp0aGlzKTsgfQotICAgIGlubGluZSBjb25zdCBtYXRyaXgmCW9wZXJhdG9yKz0gKGNvbnN0X3JlZmVyZW5jZSB2KQkJeyB0dXBsZV90eXBlOjpvcGVyYXRvcis9ICh2KTsgcmV0dXJuICgqdGhpcyk7IH0KLSAgICBpbmxpbmUgY29uc3QgbWF0cml4JglvcGVyYXRvci09IChjb25zdF9yZWZlcmVuY2UgdikJCXsgdHVwbGVfdHlwZTo6b3BlcmF0b3ItPSAodik7IHJldHVybiAoKnRoaXMpOyB9Ci0gICAgaW5saW5lIGNvbnN0IG1hdHJpeCYJb3BlcmF0b3IqPSAoY29uc3RfcmVmZXJlbmNlIHYpCQl7IHR1cGxlX3R5cGU6Om9wZXJhdG9yKj0gKHYpOyByZXR1cm4gKCp0aGlzKTsgfQotICAgIGlubGluZSBjb25zdCBtYXRyaXgmCW9wZXJhdG9yLz0gKGNvbnN0X3JlZmVyZW5jZSB2KQkJeyB0dXBsZV90eXBlOjpvcGVyYXRvci89ICh2KTsgcmV0dXJuICgqdGhpcyk7IH0KLSAgICBpbmxpbmUgY29uc3QgbWF0cml4CQlvcGVyYXRvcisgKGNvbnN0X3JlZmVyZW5jZSB2KSBjb25zdAotCQkJCSAgICB7IG1hdHJpeCByZXN1bHQgKCp0aGlzKTsgcmVzdWx0ICs9IHY7IHJldHVybiAocmVzdWx0KTsgfQotICAgIGlubGluZSBjb25zdCBtYXRyaXgJCW9wZXJhdG9yLSAoY29uc3RfcmVmZXJlbmNlIHYpIGNvbnN0Ci0JCQkJICAgIHsgbWF0cml4IHJlc3VsdCAoKnRoaXMpOyByZXN1bHQgLT0gdjsgcmV0dXJuIChyZXN1bHQpOyB9Ci0gICAgaW5saW5lIGNvbnN0IG1hdHJpeAkJb3BlcmF0b3IqIChjb25zdF9yZWZlcmVuY2UgdikgY29uc3QKLQkJCQkgICAgeyBtYXRyaXggcmVzdWx0ICgqdGhpcyk7IHJlc3VsdCAqPSB2OyByZXR1cm4gKHJlc3VsdCk7IH0KLSAgICBpbmxpbmUgY29uc3QgbWF0cml4CQlvcGVyYXRvci8gKGNvbnN0X3JlZmVyZW5jZSB2KSBjb25zdAotCQkJCSAgICB7IG1hdHJpeCByZXN1bHQgKCp0aGlzKTsgcmVzdWx0IC89IHY7IHJldHVybiAocmVzdWx0KTsgfQotfTsKLQotdGVtcGxhdGUgPHNpemVfdCBOWCwgc2l6ZV90IE5ZLCB0eXBlbmFtZSBUPgotaW5saW5lIHR5cGVuYW1lIG1hdHJpeDxOWCxOWSxUPjo6Y29sdW1uX3R5cGUgbWF0cml4PE5YLE5ZLFQ+Ojpjb2x1bW4gKHNpemVfdHlwZSBjKSBjb25zdAotewotICAgIGNvbHVtbl90eXBlIHJlc3VsdDsKLSAgICBjb25zdF9pdGVyYXRvciBzcmMgKG1hdHJpeDo6YmVnaW4oKSArIGMpOwotICAgIGl0ZXJhdG9yIGRlc3QgKHJlc3VsdC5iZWdpbigpKTsKLSAgICBmb3IgKHVvZmZfdCBpID0gMDsgaSA8IE5ZOyArKyBpLCArKyBkZXN0LCBzcmMgKz0gTlgpCi0JKmRlc3QgPSAqc3JjOwotICAgIHJldHVybiAocmVzdWx0KTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgdXN0bAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdW1lbW9yeS5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdW1lbW9yeS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NWE5MDA1Li4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VtZW1vcnkuaAorKysgL2Rldi9udWxsCkBAIC0xLDE5OSArMCwwIEBACi0vLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdXN0bCBsaWJyYXJ5LCBhbiBTVEwgaW1wbGVtZW50YXRpb24uCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDA1IGJ5IE1pa2UgU2hhcm92IDxtc2hhcm92QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLS8vIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCi0vLwotLy8gdW1lbW9yeS5oCi0vLwotCi0jaWZuZGVmIFVNRU1PUllfSF80QUI1QjBEQjVCRjA5MTQwNTQxNDA5Q0M0N0JDRDE3QQotI2RlZmluZSBVTUVNT1JZX0hfNEFCNUIwREI1QkYwOTE0MDU0MTQwOUNDNDdCQ0QxN0EKLQotI2luY2x1ZGUgInVuZXcuaCIKLSNpZmRlZiBIQVZFX0FMTE9DQV9ICi0gICAgI2luY2x1ZGUgPGFsbG9jYS5oPgotI2Vsc2UKLSAgICAjaW5jbHVkZSA8c3RkbGliLmg+Ci0jZW5kaWYKLSNpbmNsdWRlICJ1cGFpci5oIgotI2luY2x1ZGUgInVpdGVyYXRvci5oIgotI2luY2x1ZGUgInVsaW1pdHMuaCIKLQotbmFtZXNwYWNlIHVzdGwgewotCi0vLy8gXGNsYXNzIGF1dG9fcHRyIHVtZW1vcnkuaCB1c3RsLmgKLS8vLyBcaW5ncm91cCBNZW1vcnlNYW5hZ2VtZW50Ci0vLy8KLS8vLyBcYnJpZWYgQSBzbWFydCBwb2ludGVyLgotLy8vCi0vLy8gQ2FsbHMgZGVsZXRlIGluIHRoZSBkZXN0cnVjdG9yOyBhc3NpZ25tZW50IHRyYW5zZmVycyBvd25lcnNoaXAuCi0vLy8gVGhpcyBjbGFzcyBkb2VzIG5vdCB3b3JrIHdpdGggdm9pZCBwb2ludGVycyBkdWUgdG8gdGhlIGFic2VuY2UKLS8vLyBvZiB0aGUgcmVxdWlyZWQgZGVyZWZlcmVuY2Ugb3BlcmF0b3IuCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgYXV0b19wdHIgewotcHVibGljOgotICAgIHR5cGVkZWYgVAkJdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIFQqCQlwb2ludGVyOwotICAgIHR5cGVkZWYgVCYJCXJlZmVyZW5jZTsKLXB1YmxpYzoKLSAgICAvLy8gVGFrZXMgb3duZXJzaGlwIG9mIFxwIHAuCi0gICAgaW5saW5lIGV4cGxpY2l0CWF1dG9fcHRyIChwb2ludGVyIHAgPSBOVUxMKQk6IG1fcCAocCkge30KLSAgICAvLy8gVGFrZXMgb3duZXJzaGlwIG9mIHBvaW50ZXIgaW4gXHAgcC4gXHAgcCByZWxpbnF1aXNoZXMgb3duZXJzaGlwLgotICAgIGlubGluZQkJYXV0b19wdHIgKGF1dG9fcHRyPFQ+JiBwKQk6IG1fcCAocC5yZWxlYXNlKCkpIHt9Ci0gICAgLy8vIERlbGV0ZXMgdGhlIG93bmVkIHBvaW50ZXIuCi0gICAgaW5saW5lCSAgICAgICB+YXV0b19wdHIgKHZvaWQpCQkJeyBkZWxldGUgbV9wOyB9Ci0gICAgLy8vIFJldHVybnMgdGhlIHBvaW50ZXIgd2l0aG91dCByZWxpbnF1aXNoaW5nIG93bmVyc2hpcC4KLSAgICBpbmxpbmUgcG9pbnRlcglnZXQgKHZvaWQpIGNvbnN0CQl7IHJldHVybiAobV9wKTsgfQotICAgIC8vLyBSZXR1cm5zIHRoZSBwb2ludGVyIGFuZCBnaXZlcyB1cCBvd25lcnNoaXAuCi0gICAgaW5saW5lIHBvaW50ZXIJcmVsZWFzZSAodm9pZCkJCQl7IHBvaW50ZXIgcnYgKG1fcCk7IG1fcCA9IE5VTEw7IHJldHVybiAocnYpOyB9Ci0gICAgLy8vIERlbGV0ZXMgdGhlIHBvaW50ZXIgYW5kIHNldHMgaXQgZXF1YWwgdG8gXHAgcC4KLSAgICBpbmxpbmUgdm9pZAkJcmVzZXQgKHBvaW50ZXIgcCkJCXsgaWYgKHAgIT0gbV9wKSB7IGRlbGV0ZSBtX3A7IG1fcCA9IHA7IH0gfQotICAgIC8vLyBUYWtlcyBvd25lcnNoaXAgb2YgXHAgcC4KLSAgICBpbmxpbmUgYXV0b19wdHI8VD4mCW9wZXJhdG9yPSAocG9pbnRlciBwKQkJeyByZXNldCAocCk7IHJldHVybiAoKnRoaXMpOyB9Ci0gICAgLy8vIFRha2VzIG93bmVyc2hpcCBvZiBwb2ludGVyIGluIFxwIHAuIFxwIHAgcmVsaW5xdWlzaGVzIG93bmVyc2hpcC4KLSAgICBpbmxpbmUgYXV0b19wdHI8VD4mCW9wZXJhdG9yPSAoYXV0b19wdHI8VD4mIHApCXsgcmVzZXQgKHAucmVsZWFzZSgpKTsgcmV0dXJuICgqdGhpcyk7IH0KLSAgICBpbmxpbmUgcmVmZXJlbmNlCW9wZXJhdG9yKiAodm9pZCkgY29uc3QJCXsgcmV0dXJuICgqbV9wKTsgfQotICAgIGlubGluZSBwb2ludGVyCW9wZXJhdG9yLT4gKHZvaWQpIGNvbnN0CQl7IHJldHVybiAobV9wKTsgfQotICAgIGlubGluZSBib29sCQlvcGVyYXRvcj09IChjb25zdCBwb2ludGVyIHApIGNvbnN0CXsgcmV0dXJuIChtX3AgPT0gcCk7IH0KLSAgICBpbmxpbmUgYm9vbAkJb3BlcmF0b3I9PSAoY29uc3QgYXV0b19wdHI8VD4mIHApIGNvbnN0CXsgcmV0dXJuIChtX3AgPT0gcC5tX3ApOyB9Ci0gICAgaW5saW5lIGJvb2wJCW9wZXJhdG9yPCAoY29uc3QgYXV0b19wdHI8VD4mIHApIGNvbnN0CXsgcmV0dXJuIChwLm1fcCA8IG1fcCk7IH0KLXByaXZhdGU6Ci0gICAgcG9pbnRlcgkJbV9wOwotfTsKLQotLy8vIENhbGxzIHRoZSBwbGFjZW1lbnQgbmV3IG9uIFxwIHAuCi0vLy8gXGluZ3JvdXAgUmF3U3RvcmFnZUFsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdm9pZCBjb25zdHJ1Y3QgKFQqIHApCi17Ci0gICAgbmV3IChwKSBUOwotfQotCi0vLy8gQ2FsbHMgdGhlIHBsYWNlbWVudCBuZXcgb24gXHAgcC4KLS8vLyBcaW5ncm91cCBSYXdTdG9yYWdlQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yPgotaW5saW5lIHZvaWQgY29uc3RydWN0IChGb3J3YXJkSXRlcmF0b3IgZmlyc3QsIEZvcndhcmRJdGVyYXRvciBsYXN0KQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPEZvcndhcmRJdGVyYXRvcj46OnZhbHVlX3R5cGUgdmFsdWVfdHlwZTsKLSAgICBpZiAoIW51bWVyaWNfbGltaXRzPHZhbHVlX3R5cGU+Ojppc19pbnRlZ3JhbCkgewotCXdoaWxlIChmaXJzdCA8IGxhc3QpIHsKLQkgICAgY29uc3RydWN0ICgmKmZpcnN0KTsKLQkgICAgKysgZmlyc3Q7Ci0JfQotICAgIH0KLX0KLQotLy8vIENhbGxzIHRoZSBwbGFjZW1lbnQgbmV3IG9uIFxwIHAuCi0vLy8gXGluZ3JvdXAgUmF3U3RvcmFnZUFsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdm9pZCBjb25zdHJ1Y3QgKFQqIHAsIGNvbnN0IFQmIHZhbHVlKQotewotICAgIG5ldyAocCkgVCAodmFsdWUpOwotfQotCi0vLy8gQ2FsbHMgdGhlIGRlc3RydWN0b3Igb2YgXHAgcCB3aXRob3V0IGNhbGxpbmcgZGVsZXRlLgotLy8vIFxpbmdyb3VwIFJhd1N0b3JhZ2VBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIHZvaWQgZGVzdHJveSAoVCogcCkgdGhyb3coKQotewotICAgIHAtPn5UKCk7Ci19Ci0KLS8vLyBDYWxscyB0aGUgZGVzdHJ1Y3RvciBvbiBlbGVtZW50cyBpbiByYW5nZSBbZmlyc3QsIGxhc3QpIHdpdGhvdXQgY2FsbGluZyBkZWxldGUuCi0vLy8gXGluZ3JvdXAgUmF3U3RvcmFnZUFsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvcj4KLWlubGluZSB2b2lkIGRlc3Ryb3kgKEZvcndhcmRJdGVyYXRvciBmaXJzdCwgRm9yd2FyZEl0ZXJhdG9yIGxhc3QpIHRocm93KCkKLXsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxGb3J3YXJkSXRlcmF0b3I+Ojp2YWx1ZV90eXBlIHZhbHVlX3R5cGU7Ci0gICAgaWYgKCFudW1lcmljX2xpbWl0czx2YWx1ZV90eXBlPjo6aXNfaW50ZWdyYWwpCi0JZm9yICg7IGZpcnN0IDwgbGFzdDsgKysgZmlyc3QpCi0JICAgIGRlc3Ryb3kgKCYqZmlyc3QpOwotfQotCi0vLy8gQ2FzdHMgXHAgcCB0byB0aGUgdHlwZSBvZiB0aGUgc2Vjb25kIHBvaW50ZXIgYXJndW1lbnQuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIFQqIGNhc3RfdG9fdHlwZSAodm9pZCogcCwgY29uc3QgVCopIHsgcmV0dXJuICgoVCopIHApOyB9Ci0KLS8vLyBcYnJpZWYgQ3JlYXRlcyBhIHRlbXBvcmFyeSBidWZmZXIgcGFpciBmcm9tIFxwIHAgYW5kIFxwIG4KLS8vLyBUaGlzIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgd2l0aCBhbGxvY2EgdG8gY3JlYXRlIHRlbXBvcmFyeSBidWZmZXJzLgotLy8vIFRoZSBzaXplIGluIHRoZSByZXR1cm5lZCBwYWlyIGlzIHNldCB0byAwIGlmIHRoZSBhbGxvY2F0aW9uIGlzIHVuc3VjY2Vzc2Z1bC4KLS8vLyBcaW5ncm91cCBSYXdTdG9yYWdlQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSBwYWlyPFQqLCBwdHJkaWZmX3Q+IG1ha2VfdGVtcG9yYXJ5X2J1ZmZlciAodm9pZCogcCwgc2l6ZV90IG4sIGNvbnN0IFQqIHB0eXBlKQotewotICAgIHJldHVybiAobWFrZV9wYWlyIChjYXN0X3RvX3R5cGUocCxwdHlwZSksIHB0cmRpZmZfdChwID8gbiA6IDApKSk7Ci19Ci0KLSNpZmRlZiBIQVZFX0FMTE9DQV9ICi0gICAgLy8vIFxicmllZiBBbGxvY2F0ZXMgYSB0ZW1wb3JhcnkgYnVmZmVyLCBpZiBwb3NzaWJsZS4KLSAgICAvLy8gXGluZ3JvdXAgUmF3U3RvcmFnZUFsZ29yaXRobXMKLSAgICAjZGVmaW5lIGdldF90ZW1wb3JhcnlfYnVmZmVyKHNpemUsIHB0eXBlKQltYWtlX3RlbXBvcmFyeV9idWZmZXIgKGFsbG9jYShzaXplX29mX2VsZW1lbnRzKHNpemUsIHB0eXBlKSksIHNpemUsIHB0eXBlKQotICAgICNkZWZpbmUgcmV0dXJuX3RlbXBvcmFyeV9idWZmZXIocCkKLSNlbHNlCi0gICAgI2RlZmluZSBnZXRfdGVtcG9yYXJ5X2J1ZmZlcihzaXplLCBwdHlwZSkJbWFrZV90ZW1wb3JhcnlfYnVmZmVyIChtYWxsb2Moc2l6ZV9vZl9lbGVtZW50cyhzaXplLCBwdHlwZSkpLCBzaXplLCBwdHlwZSkKLSAgICAjZGVmaW5lIHJldHVybl90ZW1wb3JhcnlfYnVmZmVyKHApCQlpZiAocCkgZnJlZSAocCksIHAgPSBOVUxMCi0jZW5kaWYKLQotLy8vIENvcGllcyBbZmlyc3QsIGxhc3QpIGludG8gcmVzdWx0IGJ5IGNhbGxpbmcgY29weSBjb25zdHJ1Y3RvcnMgaW4gcmVzdWx0LgotLy8vIFxpbmdyb3VwIFJhd1N0b3JhZ2VBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3I+Ci1Gb3J3YXJkSXRlcmF0b3IgdW5pbml0aWFsaXplZF9jb3B5IChJbnB1dEl0ZXJhdG9yIGZpcnN0LCBJbnB1dEl0ZXJhdG9yIGxhc3QsIEZvcndhcmRJdGVyYXRvciByZXN1bHQpCi17Ci0gICAgd2hpbGUgKGZpcnN0IDwgbGFzdCkgewotCWNvbnN0cnVjdCAoJipyZXN1bHQsICpmaXJzdCk7Ci0JKysgcmVzdWx0OwotCSsrIGZpcnN0OwotICAgIH0KLSAgICByZXR1cm4gKHJlc3VsdCk7Ci19Ci0KLS8vLyBDb3BpZXMgW2ZpcnN0LCBmaXJzdCArIG4pIGludG8gcmVzdWx0IGJ5IGNhbGxpbmcgY29weSBjb25zdHJ1Y3RvcnMgaW4gcmVzdWx0LgotLy8vIFxpbmdyb3VwIFJhd1N0b3JhZ2VBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3I+Ci1Gb3J3YXJkSXRlcmF0b3IgdW5pbml0aWFsaXplZF9jb3B5X24gKElucHV0SXRlcmF0b3IgZmlyc3QsIHNpemVfdCBuLCBGb3J3YXJkSXRlcmF0b3IgcmVzdWx0KQotewotICAgIHdoaWxlIChuLS0pIHsKLQljb25zdHJ1Y3QgKCYqcmVzdWx0LCAqZmlyc3QpOwotCSsrIHJlc3VsdDsKLQkrKyBmaXJzdDsKLSAgICB9Ci0gICAgcmV0dXJuIChyZXN1bHQpOwotfQotCi0vLy8gQ2FsbHMgY29uc3RydWN0IG9uIGFsbCBlbGVtZW50cyBpbiBbZmlyc3QsIGxhc3QpIHdpdGggdmFsdWUgXHAgdi4KLS8vLyBcaW5ncm91cCBSYXdTdG9yYWdlQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBUPgotdm9pZCB1bmluaXRpYWxpemVkX2ZpbGwgKEZvcndhcmRJdGVyYXRvciBmaXJzdCwgRm9yd2FyZEl0ZXJhdG9yIGxhc3QsIGNvbnN0IFQmIHYpCi17Ci0gICAgd2hpbGUgKGZpcnN0IDwgbGFzdCkgewotCWNvbnN0cnVjdCAoJipmaXJzdCwgdik7Ci0JKysgZmlyc3Q7Ci0gICAgfQotfQotCi0vLy8gQ2FsbHMgY29uc3RydWN0IG9uIGFsbCBlbGVtZW50cyBpbiBbZmlyc3QsIGZpcnN0ICsgbikgd2l0aCB2YWx1ZSBccCB2LgotLy8vIFxpbmdyb3VwIFJhd1N0b3JhZ2VBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIFQ+Ci1Gb3J3YXJkSXRlcmF0b3IgdW5pbml0aWFsaXplZF9maWxsX24gKEZvcndhcmRJdGVyYXRvciBmaXJzdCwgc2l6ZV90IG4sIGNvbnN0IFQmIHYpCi17Ci0gICAgd2hpbGUgKG4tLSkgewotCWNvbnN0cnVjdCAoJipmaXJzdCwgdik7Ci0JKysgZmlyc3Q7Ci0gICAgfQotICAgIHJldHVybiAoZmlyc3QpOwotfQotICAgIAotfSAvLyBuYW1lc3BhY2UgdXN0bAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdW11bHRpbWFwLmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91bXVsdGltYXAuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGQ2Y2E0OC4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91bXVsdGltYXAuaAorKysgL2Rldi9udWxsCkBAIC0xLDEyMSArMCwwIEBACi0vLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdXN0bCBsaWJyYXJ5LCBhbiBTVEwgaW1wbGVtZW50YXRpb24uCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDA1IGJ5IE1pa2UgU2hhcm92IDxtc2hhcm92QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLS8vIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCi0vLwotLy8gdW11bHRpbWFwLmgKLS8vCi0KLSNpZm5kZWYgVU1VTFRJTUFQX0hfNDU3NDNGNTE2RTAyQTg3QTNGQ0VBNTAyNDA1MkE2RjUKLSNkZWZpbmUgVU1VTFRJTUFQX0hfNDU3NDNGNTE2RTAyQTg3QTNGQ0VBNTAyNDA1MkE2RjUKLQotI2luY2x1ZGUgInVhc3NlcnQuaCIKLSNpbmNsdWRlICJ1ZnVuY3Rpb24uaCIKLSNpbmNsdWRlICJ1dmVjdG9yLmgiCi0KLW5hbWVzcGFjZSB1c3RsIHsKLQotLy8vIFxjbGFzcyBtdWx0aW1hcCB1bXVsdGltYXAuaCB1c3RsLmgKLS8vLyBcaW5ncm91cCBBc3NvY2lhdGl2ZUNvbnRhaW5lcnMKLS8vLwotLy8vIFxicmllZiBBIHNvcnRlZCBhc3NvY2lhdGl2ZSBjb250YWluZXIgdGhhdCBtYXkgY29udGFpbmVyIG11bHRpcGxlIGVudHJpZXMgZm9yIGVhY2gga2V5LgotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSywgdHlwZW5hbWUgVj4KLWNsYXNzIG11bHRpbWFwIDogcHVibGljIHZlY3RvcjxwYWlyPEssVj4gPiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBLCQkJCQkJa2V5X3R5cGU7Ci0gICAgdHlwZWRlZiBWCQkJCQkJZGF0YV90eXBlOwotICAgIHR5cGVkZWYgY29uc3QgSyYJCQkJCWNvbnN0X2tleV9yZWY7Ci0gICAgdHlwZWRlZiBjb25zdCBWJgkJCQkJY29uc3RfZGF0YV9yZWY7Ci0gICAgdHlwZWRlZiBjb25zdCBtdWx0aW1hcDxLLFY+JgkJCXJjc2VsZl90OwotICAgIHR5cGVkZWYgdmVjdG9yPHBhaXI8SyxWPiA+CQkJCWJhc2VfY2xhc3M7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX2NsYXNzOjp2YWx1ZV90eXBlCXZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX2NsYXNzOjpzaXplX3R5cGUJc2l6ZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV9jbGFzczo6cG9pbnRlcglwb2ludGVyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV9jbGFzczo6Y29uc3RfcG9pbnRlcgljb25zdF9wb2ludGVyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV9jbGFzczo6cmVmZXJlbmNlCXJlZmVyZW5jZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfY2xhc3M6OmNvbnN0X3JlZmVyZW5jZQljb25zdF9yZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX2NsYXNzOjpjb25zdF9pdGVyYXRvcgkJY29uc3RfaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX2NsYXNzOjppdGVyYXRvcgkJaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX2NsYXNzOjpyZXZlcnNlX2l0ZXJhdG9yCXJldmVyc2VfaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX2NsYXNzOjpjb25zdF9yZXZlcnNlX2l0ZXJhdG9yCWNvbnN0X3JldmVyc2VfaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiBwYWlyPGNvbnN0X2l0ZXJhdG9yLGNvbnN0X2l0ZXJhdG9yPgkJY29uc3RfcmFuZ2VfdDsKLSAgICB0eXBlZGVmIHBhaXI8aXRlcmF0b3IsaXRlcmF0b3I+CQkJcmFuZ2VfdDsKLXB1YmxpYzoKLSAgICBpbmxpbmUJCQltdWx0aW1hcCAodm9pZCkJCTogdmVjdG9yPHBhaXI8SyxWPiA+ICgpIHt9IAotICAgIGV4cGxpY2l0IGlubGluZQkJbXVsdGltYXAgKHNpemVfdHlwZSBuKQk6IHZlY3RvcjxwYWlyPEssVj4gPiAobikge30gCi0gICAgaW5saW5lCQkJbXVsdGltYXAgKHJjc2VsZl90IHYpCTogdmVjdG9yPHBhaXI8SyxWPiA+ICh2KSB7fSAKLSAgICBpbmxpbmUJCQltdWx0aW1hcCAoY29uc3RfaXRlcmF0b3IgaTEsIGNvbnN0X2l0ZXJhdG9yIGkyKQk6IHZlY3RvcjxwYWlyPEssVj4gPiAoKSB7IGluc2VydCAoaTEsIGkyKTsgfSAKLSAgICBpbmxpbmUgcmNzZWxmX3QJCW9wZXJhdG9yPSAocmNzZWxmX3QgdikJeyBiYXNlX2NsYXNzOjpvcGVyYXRvcj0gKHYpOyByZXR1cm4gKCp0aGlzKTsgfQotICAgIGlubGluZSBzaXplX3R5cGUJCXNpemUgKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChiYXNlX2NsYXNzOjpzaXplKCkpOyB9Ci0gICAgaW5saW5lIGl0ZXJhdG9yCQliZWdpbiAodm9pZCkJCXsgcmV0dXJuIChiYXNlX2NsYXNzOjpiZWdpbigpKTsgfQotICAgIGlubGluZSBjb25zdF9pdGVyYXRvcgliZWdpbiAodm9pZCkgY29uc3QJeyByZXR1cm4gKGJhc2VfY2xhc3M6OmJlZ2luKCkpOyB9Ci0gICAgaW5saW5lIGl0ZXJhdG9yCQllbmQgKHZvaWQpCQl7IHJldHVybiAoYmFzZV9jbGFzczo6ZW5kKCkpOyB9Ci0gICAgaW5saW5lIGNvbnN0X2l0ZXJhdG9yCWVuZCAodm9pZCkgY29uc3QJeyByZXR1cm4gKGJhc2VfY2xhc3M6OmVuZCgpKTsgfQotICAgIGlubGluZSB2b2lkCQkJYXNzaWduIChjb25zdF9pdGVyYXRvciBpMSwgY29uc3RfaXRlcmF0b3IgaTIpIHsgY2xlYXIoKTsgaW5zZXJ0IChpMSwgaTIpOyB9Ci0gICAgaW5saW5lIHNpemVfdHlwZQkJY291bnQgKGNvbnN0X2tleV9yZWYgaykgY29uc3QJCXsgcmV0dXJuICh1cHBlcl9ib3VuZChrKSAtIGxvd2VyX2JvdW5kKGspKTsgfQotICAgIGlubGluZSB2b2lkCQkJcHVzaF9iYWNrIChjb25zdF9yZWZlcmVuY2UgdikJCXsgaW5zZXJ0ICh2KTsgfQotICAgIGlubGluZSBjb25zdF9yYW5nZV90CWVxdWFsX3JhbmdlIChjb25zdF9rZXlfcmVmIGspIGNvbnN0CXsgcmV0dXJuIChtYWtlX3BhaXIgKGxvd2VyX2JvdW5kKGspLCB1cHBlcl9ib3VuZChrKSkpOyB9Ci0gICAgaW5saW5lIHJhbmdlX3QJCWVxdWFsX3JhbmdlIChjb25zdF9rZXlfcmVmIGspCQl7IHJldHVybiAobWFrZV9wYWlyIChjb25zdF9jYXN0PGl0ZXJhdG9yPihsb3dlcl9ib3VuZChrKSksIGNvbnN0X2Nhc3Q8aXRlcmF0b3I+KHVwcGVyX2JvdW5kKGspKSkpOyB9Ci0gICAgY29uc3RfaXRlcmF0b3IJCWxvd2VyX2JvdW5kIChjb25zdF9rZXlfcmVmIGspIGNvbnN0OwotICAgIGNvbnN0X2l0ZXJhdG9yCQl1cHBlcl9ib3VuZCAoY29uc3Rfa2V5X3JlZiBrKSBjb25zdDsKLSAgICBpbmxpbmUgaXRlcmF0b3IJCWluc2VydCAoY29uc3RfcmVmZXJlbmNlIHYpOwotICAgIHZvaWQJCQlpbnNlcnQgKGNvbnN0X2l0ZXJhdG9yIGkxLCBjb25zdF9pdGVyYXRvciBpMik7Ci0gICAgaW5saW5lIHZvaWQJCQllcmFzZSAoY29uc3Rfa2V5X3JlZiBrKQkJCXsgZXJhc2UgKGNvbnN0X2Nhc3Q8aXRlcmF0b3I+KGxvd2VyX2JvdW5kKGspKSwgY29uc3RfY2FzdDxpdGVyYXRvcj4odXBwZXJfYm91bmQoaykpKTsgfQotICAgIGlubGluZSBpdGVyYXRvcgkJZXJhc2UgKGl0ZXJhdG9yIGVwKQkJCXsgcmV0dXJuIChiYXNlX2NsYXNzOjplcmFzZSAoZXApKTsgfSAKLSAgICBpbmxpbmUgaXRlcmF0b3IJCWVyYXNlIChpdGVyYXRvciBlcDEsIGl0ZXJhdG9yIGVwMikJeyByZXR1cm4gKGJhc2VfY2xhc3M6OmVyYXNlIChlcDEsIGVwMikpOyB9IAotICAgIGlubGluZSB2b2lkCQkJY2xlYXIgKHZvaWQpCQkJCXsgYmFzZV9jbGFzczo6Y2xlYXIoKTsgfQotfTsKLQotLy8vIFJldHVybnMgYW4gaXRlcmF0b3IgdG8gdGhlIGZpcnN0IGVsZW1lbnQgd2l0aCBrZXkgdmFsdWUgXHAgay4KLXRlbXBsYXRlIDx0eXBlbmFtZSBLLCB0eXBlbmFtZSBWPgotdHlwZW5hbWUgbXVsdGltYXA8SyxWPjo6Y29uc3RfaXRlcmF0b3IgbXVsdGltYXA8SyxWPjo6bG93ZXJfYm91bmQgKGNvbnN0X2tleV9yZWYgaykgY29uc3QKLXsKLSAgICBjb25zdF9pdGVyYXRvciBmaXJzdCAoYmVnaW4oKSksIGxhc3QgKGVuZCgpKTsKLSAgICB3aGlsZSAoZmlyc3QgIT0gbGFzdCkgewotCWNvbnN0X2l0ZXJhdG9yIG1pZCA9IGFkdmFuY2UgKGZpcnN0LCBkaXN0YW5jZSAoZmlyc3QsbGFzdCkgLyAyKTsKLQlpZiAobWlkLT5maXJzdCA8IGspCi0JICAgIGZpcnN0ID0gYWR2YW5jZSAobWlkLCAxKTsKLQllbHNlCi0JICAgIGxhc3QgPSBtaWQ7Ci0gICAgfQotICAgIHJldHVybiAoZmlyc3QpOwotfQotCi0vLy8gUmV0dXJucyBhbiBpdGVyYXRvciB0byB0aGUgZmlyc3QgZWxlbWVudCB3aXRoIGtleSB2YWx1ZSBccCBrLgotdGVtcGxhdGUgPHR5cGVuYW1lIEssIHR5cGVuYW1lIFY+Ci10eXBlbmFtZSBtdWx0aW1hcDxLLFY+Ojpjb25zdF9pdGVyYXRvciBtdWx0aW1hcDxLLFY+Ojp1cHBlcl9ib3VuZCAoY29uc3Rfa2V5X3JlZiBrKSBjb25zdAotewotICAgIGNvbnN0X2l0ZXJhdG9yIGZpcnN0IChiZWdpbigpKSwgbGFzdCAoZW5kKCkpOwotICAgIHdoaWxlIChmaXJzdCAhPSBsYXN0KSB7Ci0JY29uc3RfaXRlcmF0b3IgbWlkID0gYWR2YW5jZSAoZmlyc3QsIGRpc3RhbmNlIChmaXJzdCxsYXN0KSAvIDIpOwotCWlmIChrIDwgbWlkLT5maXJzdCkKLQkgICAgbGFzdCA9IG1pZDsKLQllbHNlCi0JICAgIGZpcnN0ID0gYWR2YW5jZSAobWlkLCAxKTsKLSAgICB9Ci0gICAgcmV0dXJuIChsYXN0KTsKLX0KLQotLy8vIEluc2VydHMgdGhlIHBhaXIgaW50byB0aGUgY29udGFpbmVyLgotdGVtcGxhdGUgPHR5cGVuYW1lIEssIHR5cGVuYW1lIFY+Ci1pbmxpbmUgdHlwZW5hbWUgbXVsdGltYXA8SyxWPjo6aXRlcmF0b3IgbXVsdGltYXA8SyxWPjo6aW5zZXJ0IChjb25zdF9yZWZlcmVuY2UgdikKLXsKLSAgICBpdGVyYXRvciBpcCA9IGNvbnN0X2Nhc3Q8aXRlcmF0b3I+ICh1cHBlcl9ib3VuZCAodi5maXJzdCkpOwotICAgIHJldHVybiAoYmFzZV9jbGFzczo6aW5zZXJ0IChpcCwgdikpOwotfQotCi0vLy8gSW5zZXJ0cyBlbGVtZW50cyBmcm9tIHJhbmdlIFtpMSxpMikgaW50byB0aGUgY29udGFpbmVyLgotdGVtcGxhdGUgPHR5cGVuYW1lIEssIHR5cGVuYW1lIFY+Ci12b2lkIG11bHRpbWFwPEssVj46Omluc2VydCAoY29uc3RfaXRlcmF0b3IgaTEsIGNvbnN0X2l0ZXJhdG9yIGkyKQotewotICAgIGFzc2VydCAoaTEgPD0gaTIpOwotICAgIHJlc2VydmUgKHNpemUoKSArIGRpc3RhbmNlIChpMSwgaTIpKTsKLSAgICBmb3IgKDsgaTEgIT0gaTI7ICsraTEpCi0JaW5zZXJ0ICgqaTEpOwotfQotCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91bXVsdGlzZXQuaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VtdWx0aXNldC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MDRiODc3Li4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VtdWx0aXNldC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTA2ICswLDAgQEAKLS8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB1c3RsIGxpYnJhcnksIGFuIFNUTCBpbXBsZW1lbnRhdGlvbi4KLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgYnkgTWlrZSBTaGFyb3YgPG1zaGFyb3ZAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotLy8gVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KLS8vCi0vLyB1bXVsdGlzZXQuaAotLy8KLQotI2lmbmRlZiBVTVVMVElTRVRfSF80NDZBRURCQjdGNjFDNjk5NERDMjI4QzI1RDVGQTNBMQotI2RlZmluZSBVTVVMVElTRVRfSF80NDZBRURCQjdGNjFDNjk5NERDMjI4QzI1RDVGQTNBMQotCi0jaW5jbHVkZSAidWFzc2VydC5oIgotI2luY2x1ZGUgInVhbGdvLmgiCi0jaW5jbHVkZSAidXZlY3Rvci5oIgotCi1uYW1lc3BhY2UgdXN0bCB7Ci0KLS8vLyBcY2xhc3MgbXVsdGlzZXQgdW11bHRpc2V0LmggdXN0bC5oCi0vLy8gXGluZ3JvdXAgQXNzb2NpYXRpdmVDb250YWluZXJzCi0vLy8KLS8vLyBcYnJpZWYgTXVsdGlwbGUgc29ydGVkIGNvbnRhaW5lci4KLS8vLyBVbmxpa2Ugc2V0LCBpdCBtYXkgY29udGFpbiBtdWx0aXBsZSBjb3BpZXMgb2YgZWFjaCBlbGVtZW50LgotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIG11bHRpc2V0IDogcHVibGljIHZlY3RvcjxUPiB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBjb25zdCBtdWx0aXNldDxUPiYJCQkJcmNzZWxmX3Q7Ci0gICAgdHlwZWRlZiB2ZWN0b3I8VD4JCQkJCWJhc2VfY2xhc3M7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX2NsYXNzOjp2YWx1ZV90eXBlCQl2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV9jbGFzczo6c2l6ZV90eXBlCQlzaXplX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX2NsYXNzOjpwb2ludGVyCQlwb2ludGVyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV9jbGFzczo6Y29uc3RfcG9pbnRlcgkJY29uc3RfcG9pbnRlcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfY2xhc3M6OnJlZmVyZW5jZQkJcmVmZXJlbmNlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV9jbGFzczo6Y29uc3RfcmVmZXJlbmNlCWNvbnN0X3JlZmVyZW5jZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfY2xhc3M6OmNvbnN0X2l0ZXJhdG9yCQljb25zdF9pdGVyYXRvcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfY2xhc3M6Oml0ZXJhdG9yCQlpdGVyYXRvcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfY2xhc3M6OnJldmVyc2VfaXRlcmF0b3IJcmV2ZXJzZV9pdGVyYXRvcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfY2xhc3M6OmNvbnN0X3JldmVyc2VfaXRlcmF0b3IJY29uc3RfcmV2ZXJzZV9pdGVyYXRvcjsKLXB1YmxpYzoKLSAgICBpbmxpbmUJCQltdWx0aXNldCAodm9pZCkJCTogdmVjdG9yPFQ+ICgpIHt9Ci0gICAgZXhwbGljaXQgaW5saW5lCQltdWx0aXNldCAoc2l6ZV90eXBlIG4pCTogdmVjdG9yPFQ+IChuKSB7fQotICAgIGlubGluZQkJCW11bHRpc2V0IChyY3NlbGZfdCB2KQk6IHZlY3RvcjxUPiAodikge30gCi0gICAgaW5saW5lCQkJbXVsdGlzZXQgKGNvbnN0X2l0ZXJhdG9yIGkxLCBjb25zdF9pdGVyYXRvciBpMikgOiB2ZWN0b3I8VD4gKCkgeyBpbnNlcnQgKGkxLCBpMik7IH0KLSAgICBpbmxpbmUgcmNzZWxmX3QJCW9wZXJhdG9yPSAocmNzZWxmX3QgdikJeyBiYXNlX2NsYXNzOjpvcGVyYXRvcj0gKHYpOyByZXR1cm4gKCp0aGlzKTsgfQotICAgIGlubGluZSBzaXplX3R5cGUJCXNpemUgKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChiYXNlX2NsYXNzOjpzaXplKCkpOyB9Ci0gICAgaW5saW5lIGl0ZXJhdG9yCQliZWdpbiAodm9pZCkJCXsgcmV0dXJuIChiYXNlX2NsYXNzOjpiZWdpbigpKTsgfQotICAgIGlubGluZSBjb25zdF9pdGVyYXRvcgliZWdpbiAodm9pZCkgY29uc3QJeyByZXR1cm4gKGJhc2VfY2xhc3M6OmJlZ2luKCkpOyB9Ci0gICAgaW5saW5lIGl0ZXJhdG9yCQllbmQgKHZvaWQpCQl7IHJldHVybiAoYmFzZV9jbGFzczo6ZW5kKCkpOyB9Ci0gICAgaW5saW5lIGNvbnN0X2l0ZXJhdG9yCWVuZCAodm9pZCkgY29uc3QJeyByZXR1cm4gKGJhc2VfY2xhc3M6OmVuZCgpKTsgfQotICAgIGlubGluZSB2b2lkCQkJYXNzaWduIChjb25zdF9pdGVyYXRvciBpMSwgY29uc3RfaXRlcmF0b3IgaTIpOwotICAgIHNpemVfdHlwZQkJCWNvdW50IChjb25zdF9yZWZlcmVuY2UgdikgY29uc3Q7Ci0gICAgaW5saW5lIHZvaWQJCQlwdXNoX2JhY2sgKGNvbnN0X3JlZmVyZW5jZSB2KQl7IGluc2VydCAodik7IH0KLSAgICBpbmxpbmUgaXRlcmF0b3IJCWluc2VydCAoY29uc3RfcmVmZXJlbmNlIHYpOwotICAgIHZvaWQJCQlpbnNlcnQgKGNvbnN0X2l0ZXJhdG9yIGkxLCBjb25zdF9pdGVyYXRvciBpMik7Ci0gICAgdm9pZAkJCWVyYXNlIChjb25zdF9yZWZlcmVuY2Ugdik7Ci0gICAgaW5saW5lIGl0ZXJhdG9yCQllcmFzZSAoaXRlcmF0b3IgZXApCXsgcmV0dXJuIChiYXNlX2NsYXNzOjplcmFzZSAoZXApKTsgfQotICAgIGlubGluZSBpdGVyYXRvcgkJZXJhc2UgKGl0ZXJhdG9yIGVwMSwgaXRlcmF0b3IgZXAyKSB7IHJldHVybiAoYmFzZV9jbGFzczo6ZXJhc2UgKGVwMSwgZXAyKSk7IH0KLSAgICBpbmxpbmUgdm9pZAkJCWNsZWFyICh2b2lkKQkJeyBiYXNlX2NsYXNzOjpjbGVhcigpOyB9Ci19OwotCi0vLy8gQ29waWVzIGNvbnRlbnRzIG9mIHJhbmdlIFtpMSxpMikKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIHZvaWQgbXVsdGlzZXQ8VD46OmFzc2lnbiAoY29uc3RfaXRlcmF0b3IgaTEsIGNvbnN0X2l0ZXJhdG9yIGkyKQotewotICAgIGJhc2VfY2xhc3M6OmNsZWFyKCk7Ci0gICAgaW5zZXJ0IChpMSwgaTIpOwotfQotCi0vLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIG9mIHZhbHVlIFxwIHYuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXR5cGVuYW1lIG11bHRpc2V0PFQ+OjpzaXplX3R5cGUgbXVsdGlzZXQ8VD46OmNvdW50IChjb25zdF9yZWZlcmVuY2UgdikgY29uc3QKLXsKLSAgICBjb25zdCBwYWlyPGNvbnN0X2l0ZXJhdG9yLGNvbnN0X2l0ZXJhdG9yPiBmciA9IGVxdWFsX3JhbmdlIChiZWdpbigpLCBlbmQoKSwgdik7Ci0gICAgcmV0dXJuIChkaXN0YW5jZSAoZnIuZmlyc3QsIGZyLnNlY29uZCkpOwotfQotCi0vLy8gSW5zZXJ0cyBccCB2LgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdHlwZW5hbWUgbXVsdGlzZXQ8VD46Oml0ZXJhdG9yIG11bHRpc2V0PFQ+OjppbnNlcnQgKGNvbnN0X3JlZmVyZW5jZSB2KQotewotICAgIGl0ZXJhdG9yIGlwID0gdXBwZXJfYm91bmQgKGJlZ2luKCksIGVuZCgpLCB2KTsKLSAgICByZXR1cm4gKGJhc2VfY2xhc3M6Omluc2VydCAoaXAsIHYpKTsKLX0KLQotLy8vIEluc2VydHMgYWxsIGVsZW1lbnRzIGZyb20gcmFuZ2UgW2kxLGkyKS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdm9pZCBtdWx0aXNldDxUPjo6aW5zZXJ0IChjb25zdF9pdGVyYXRvciBpMSwgY29uc3RfaXRlcmF0b3IgaTIpCi17Ci0gICAgYXNzZXJ0IChpMSA8PSBpMik7Ci0gICAgcmVzZXJ2ZSAoc2l6ZSgpICsgZGlzdGFuY2UgKGkxLCBpMikpOwotICAgIGZvciAoOyBpMSA8IGkyOyArK2kxKQotCXB1c2hfYmFjayAoKmkxKTsKLX0KLQotLy8vIEVyYXNlcyBhbGwgZWxlbWVudHMgd2l0aCB2YWx1ZSBccCB2LgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci12b2lkIG11bHRpc2V0PFQ+OjplcmFzZSAoY29uc3RfcmVmZXJlbmNlIHYpCi17Ci0gICAgcGFpcjxpdGVyYXRvcixpdGVyYXRvcj4gZXByID0gZXF1YWxfcmFuZ2UgKGJlZ2luKCksIGVuZCgpLCB2KTsKLSAgICBlcmFzZSAoZXByLmZpcnN0LCBlcHIuc2Vjb25kKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgdXN0bAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdW5ldy5jcHAgYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91bmV3LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDg0ZTA1My4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91bmV3LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLS8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB1c3RsIGxpYnJhcnksIGFuIFNUTCBpbXBsZW1lbnRhdGlvbi4KLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgYnkgTWlrZSBTaGFyb3YgPG1zaGFyb3ZAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotLy8gVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KLS8vCi0vLyB1bmV3LmNjCi0vLwotCi0jaW5jbHVkZSAidW5ldy5oIgotI2luY2x1ZGUgPHN0ZGxpYi5oPgotCi0jaWYgUExBVEZPUk1fQU5EUk9JRAotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jZW5kaWYKLQotdm9pZCogdGhyb3dpbmdfbWFsbG9jIChzaXplX3QgbikgdGhyb3cgKHVzdGw6OmJhZF9hbGxvYykKLXsKLSAgICB2b2lkKiBwID0gbWFsbG9jIChuKTsKLSAgICBpZiAoIXApCi0jaWYgUExBVEZPUk1fQU5EUk9JRAotICAgICAgICBwcmludGYoImJhZCBhbGxvY1xuIik7Ci0jZWxzZQotCXRocm93IHVzdGw6OmJhZF9hbGxvYyAobik7Ci0jZW5kaWYKLSAgICByZXR1cm4gKHApOwotfQotCi12b2lkIGZyZWVfbnVsbG9rICh2b2lkKiBwKSB0aHJvdygpCi17Ci0gICAgaWYgKHApCi0JZnJlZSAocCk7Ci19Ci0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VuZXcuaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VuZXcuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzRmZmI2Mi4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91bmV3LmgKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0vLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdXN0bCBsaWJyYXJ5LCBhbiBTVEwgaW1wbGVtZW50YXRpb24uCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDA1IGJ5IE1pa2UgU2hhcm92IDxtc2hhcm92QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLS8vIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCi0vLwotLy8vIFxmaWxlIHVuZXcuaAotLy8vCi0vLy8gXGJyaWVmIFNhbWUgYXMgXDxuZXdcPiwgYnV0IHRocm93cyB1c3RsOjogZXhjZXB0aW9ucy4KLS8vCi0KLSNpZm5kZWYgVU5FV19IXzExRDIzNzUxMkIzMjRDOUMwNUE1NURBRjFCRjA4NkYxCi0jZGVmaW5lIFVORVdfSF8xMUQyMzc1MTJCMzI0QzlDMDVBNTVEQUYxQkYwODZGMQotCi0jaW5jbHVkZSAidWV4Y2VwdGlvbi5oIgotCi0vLy8gSnVzdCBsaWtlIG1hbGxvYywgYnV0IHRocm93cyBvbiBmYWlsdXJlLgotdm9pZCogdGhyb3dpbmdfbWFsbG9jIChzaXplX3QgbikgdGhyb3cgKHVzdGw6OmJhZF9hbGxvYyk7Ci0vLy8gSnVzdCBsaWtlIGZyZWUsIGJ1dCBkb2Vzbid0IGNyYXNoIHdoZW4gZ2l2ZW4gYSBOVUxMLgotdm9pZCBmcmVlX251bGxvayAodm9pZCogcCkgdGhyb3coKTsKLQotI2lmZGVmIFdJVEhPVVRfTElCU1REQ1BQCi0KLS8vCi0vLyBUaGVzZSBhcmUgcmVwbGFjZWFibGUgc2lnbmF0dXJlczoKLS8vICAtIG5vcm1hbCBzaW5nbGUgbmV3IGFuZCBkZWxldGUgKG5vIGFyZ3VtZW50cywgdGhyb3cgQGMgYmFkX2FsbG9jIG9uIGVycm9yKQotLy8gIC0gbm9ybWFsIGFycmF5IG5ldyBhbmQgZGVsZXRlIChzYW1lKQotLy8gIC0gQGMgbm90aHJvdyBzaW5nbGUgbmV3IGFuZCBkZWxldGUgKHRha2UgYSBAYyBub3Rocm93IGFyZ3VtZW50LCByZXR1cm4KLS8vICAgIEBjIE5VTEwgb24gZXJyb3IpCi0vLyAgLSBAYyBub3Rocm93IGFycmF5IG5ldyBhbmQgZGVsZXRlIChzYW1lKQotLy8KLS8vICBQbGFjZW1lbnQgbmV3IGFuZCBkZWxldGUgc2lnbmF0dXJlcyAodGFrZSBhIG1lbW9yeSBhZGRyZXNzIGFyZ3VtZW50LAotLy8gIGRvZXMgbm90aGluZykgbWF5IG5vdCBiZSByZXBsYWNlZCBieSBhIHVzZXIncyBwcm9ncmFtLgotLy8KLWlubGluZSB2b2lkKiBvcGVyYXRvciBuZXcgKHNpemVfdCBuKSB0aHJvdyAodXN0bDo6YmFkX2FsbG9jKQl7IHJldHVybiAodGhyb3dpbmdfbWFsbG9jIChuKSk7IH0KLWlubGluZSB2b2lkKiBvcGVyYXRvciBuZXdbXSAoc2l6ZV90IG4pIHRocm93ICh1c3RsOjpiYWRfYWxsb2MpCXsgcmV0dXJuICh0aHJvd2luZ19tYWxsb2MgKG4pKTsgfQotaW5saW5lIHZvaWQgIG9wZXJhdG9yIGRlbGV0ZSAodm9pZCogcCkgdGhyb3coKQkJCXsgZnJlZV9udWxsb2sgKHApOyB9Ci1pbmxpbmUgdm9pZCAgb3BlcmF0b3IgZGVsZXRlW10gKHZvaWQqIHApIHRocm93KCkJCXsgZnJlZV9udWxsb2sgKHApOyB9Ci0KLS8vIERlZmF1bHQgcGxhY2VtZW50IHZlcnNpb25zIG9mIG9wZXJhdG9yIG5ldy4KLWlubGluZSB2b2lkKiBvcGVyYXRvciBuZXcgKHNpemVfdCwgdm9pZCogcCkgdGhyb3coKSB7IHJldHVybiAocCk7IH0KLWlubGluZSB2b2lkKiBvcGVyYXRvciBuZXdbXSAoc2l6ZV90LCB2b2lkKiBwKSB0aHJvdygpIHsgcmV0dXJuIChwKTsgfQotCi0vLyBEZWZhdWx0IHBsYWNlbWVudCB2ZXJzaW9ucyBvZiBvcGVyYXRvciBkZWxldGUuCi1pbmxpbmUgdm9pZCAgb3BlcmF0b3IgZGVsZXRlICAodm9pZCosIHZvaWQqKSB0aHJvdygpIHsgfQotaW5saW5lIHZvaWQgIG9wZXJhdG9yIGRlbGV0ZVtdKHZvaWQqLCB2b2lkKikgdGhyb3coKSB7IH0KLQotI2Vsc2UKLSNpbmNsdWRlIDxuZXc+Ci0jZW5kaWYJLy8gV0lUSE9VVF9MSUJTVERDUFAKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VudW1lcmljLmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91bnVtZXJpYy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ODgzZWI0Li4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VudW1lcmljLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNjAgKzAsMCBAQAotLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHVzdGwgbGlicmFyeSwgYW4gU1RMIGltcGxlbWVudGF0aW9uLgotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwNSBieSBNaWtlIFNoYXJvdiA8bXNoYXJvdkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0vLyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgotLy8KLS8vIHVudW1lcmljLmgKLS8vCi0vLwlUaGlzIGZpbGUgY29udGFpbnMgbnVtZXJpYyBhbGdvcml0aG0gdGVtcGxhdGVzLgotLy8KLQotI2lmbmRlZiBVTlVNRVJJQ19IXzZDOTlENkY2MzYzODMyQzY0NEE2RkZGMzM2RTg0RTE4Ci0jZGVmaW5lIFVOVU1FUklDX0hfNkM5OUQ2RjYzNjM4MzJDNjQ0QTZGRkYzMzZFODRFMTgKLQotbmFtZXNwYWNlIHVzdGwgewotCi0vLy8gUmV0dXJucyB0aGUgc3VtIG9mIGFsbCBlbGVtZW50cyBpbiBbZmlyc3QsIGxhc3QpIGFkZGVkIHRvIFxwIGluaXQuCi0vLy8gXGluZ3JvdXAgTnVtZXJpY0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcmF0b3IsIHR5cGVuYW1lIFQ+Ci1pbmxpbmUgVCBhY2N1bXVsYXRlIChJbnB1dEl0ZXJhdG9yIGZpcnN0LCBJbnB1dEl0ZXJhdG9yIGxhc3QsIFQgaW5pdCkKLXsKLSAgICB3aGlsZSAoZmlyc3QgPCBsYXN0KQotCWluaXQgKz0gKmZpcnN0Kys7Ci0gICAgcmV0dXJuIChpbml0KTsKLX0KLQotLy8vIFJldHVybnMgdGhlIHN1bSBvZiBhbGwgZWxlbWVudHMgaW4gW2ZpcnN0LCBsYXN0KSB2aWEgXHAgb3AsIGFkZGVkIHRvIFxwIGluaXQuCi0vLy8gXGluZ3JvdXAgTnVtZXJpY0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcmF0b3IsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIEJpbmFyeUZ1bmN0aW9uPgotaW5saW5lIFQgYWNjdW11bGF0ZSAoSW5wdXRJdGVyYXRvciBmaXJzdCwgSW5wdXRJdGVyYXRvciBsYXN0LCBUIGluaXQsIEJpbmFyeUZ1bmN0aW9uIGJpbmFyeV9vcCkKLXsKLSAgICB3aGlsZSAoZmlyc3QgPCBsYXN0KQotCWluaXQgPSBiaW5hcnlfb3AgKGluaXQsICpmaXJzdCsrKTsKLSAgICByZXR1cm4gKGluaXQpOwotfQotCi0vLy8gQXNzaWducyByYW5nZSBbdmFsdWUsIHZhbHVlICsgKGxhc3QgLSBmaXJzdCkpIHRvIFtmaXJzdCwgbGFzdCkKLS8vLyBcaW5ncm91cCBOdW1lcmljQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBUPgotaW5saW5lIHZvaWQgaW90YSAoRm9yd2FyZEl0ZXJhdG9yIGZpcnN0LCBGb3J3YXJkSXRlcmF0b3IgbGFzdCwgVCB2YWx1ZSkKLXsKLSAgICB3aGlsZSAoZmlyc3QgPCBsYXN0KQotCSpmaXJzdCsrID0gdmFsdWUrKzsKLX0KLQotLy8vIFJldHVybnMgdGhlIHN1bSBvZiBwcm9kdWN0cyBvZiByZXNwZWN0aXZlIGVsZW1lbnRzIGluIHRoZSBnaXZlbiByYW5nZXMuCi0vLy8gXGluZ3JvdXAgTnVtZXJpY0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcmF0b3IxLCB0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yMiwgdHlwZW5hbWUgVD4KLWlubGluZSBUIGlubmVyX3Byb2R1Y3QgKElucHV0SXRlcmF0b3IxIGZpcnN0MSwgSW5wdXRJdGVyYXRvcjEgbGFzdDEsIElucHV0SXRlcmF0b3IyIGZpcnN0MiwgVCBpbml0KQotewotICAgIHdoaWxlIChmaXJzdDEgPCBsYXN0MSkKLQlpbml0ICs9ICpmaXJzdDErKyAqICpmaXJzdDIrKzsKLSAgICByZXR1cm4gKGluaXQpOwotfQotCi0vLy8gUmV0dXJucyB0aGUgc3VtIG9mIHByb2R1Y3RzIG9mIHJlc3BlY3RpdmUgZWxlbWVudHMgaW4gdGhlIGdpdmVuIHJhbmdlcy4KLS8vLyBcaW5ncm91cCBOdW1lcmljQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyYXRvcjEsIHR5cGVuYW1lIElucHV0SXRlcmF0b3IyLCB0eXBlbmFtZSBULAotICAgIAkgIHR5cGVuYW1lIEJpbmFyeU9wZXJhdGlvbjEsIHR5cGVuYW1lIEJpbmFyeU9wZXJhdGlvbjI+Ci1pbmxpbmUgVCBpbm5lcl9wcm9kdWN0Ci0oSW5wdXRJdGVyYXRvcjEgZmlyc3QxLCBJbnB1dEl0ZXJhdG9yMSBsYXN0MSwgSW5wdXRJdGVyYXRvcjIgZmlyc3QyLCBUIGluaXQsCi0gQmluYXJ5T3BlcmF0aW9uMSBzdW1PcCwgQmluYXJ5T3BlcmF0aW9uMiBwcm9kdWN0T3ApCi17Ci0gICAgd2hpbGUgKGZpcnN0MSA8IGxhc3QxKQotCWluaXQgPSBzdW1PcCAoaW5pdCwgcHJvZHVjdE9wICgqZmlyc3QxKyssICpmaXJzdDIrKykpOwotICAgIHJldHVybiAoaW5pdCk7Ci19Ci0KLS8vLyBXcml0ZXMgcmVzdWx0IHN1Y2ggdGhhdCByZXN1bHRbaV0gPSBzdW0gKGZpcnN0Li4uZmlyc3QraSkKLS8vLyBcaW5ncm91cCBOdW1lcmljQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3I+Ci1pbmxpbmUgT3V0cHV0SXRlcmF0b3IgcGFydGlhbF9zdW0gKElucHV0SXRlcmF0b3IgZmlyc3QsIElucHV0SXRlcmF0b3IgbGFzdCwgT3V0cHV0SXRlcmF0b3IgcmVzdWx0KQotewotICAgIGlmIChmaXJzdCA8IGxhc3QpCi0JKnJlc3VsdCA9ICpmaXJzdCsrOwotICAgIHdoaWxlIChmaXJzdCA8IGxhc3QpCi0JKisrcmVzdWx0ID0gKmZpcnN0KysgKyAqcmVzdWx0OwotICAgIHJldHVybiAocmVzdWx0KTsKLX0KLQotLy8vIFdyaXRlcyByZXN1bHQgc3VjaCB0aGF0IHJlc3VsdFtpXSA9IHN1bU9wIChmaXJzdC4uLmZpcnN0K2kpCi0vLy8gXGluZ3JvdXAgTnVtZXJpY0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcmF0b3IsIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBCaW5hcnlPcGVyYXRpb24+Ci1pbmxpbmUgT3V0cHV0SXRlcmF0b3IgcGFydGlhbF9zdW0gKElucHV0SXRlcmF0b3IgZmlyc3QsIElucHV0SXRlcmF0b3IgbGFzdCwgT3V0cHV0SXRlcmF0b3IgcmVzdWx0LCBCaW5hcnlPcGVyYXRpb24gc3VtT3ApCi17Ci0gICAgaWYgKGZpcnN0IDwgbGFzdCkKLQkqcmVzdWx0ID0gKmZpcnN0Kys7Ci0gICAgd2hpbGUgKGZpcnN0IDwgbGFzdCkKLQkqKytyZXN1bHQgPSBzdW1PcCAoKmZpcnN0KyssICpyZXN1bHQpOwotICAgIHJldHVybiAocmVzdWx0KTsKLX0KLQotLy8vIFdyaXRlcyByZXN1bHQgc3VjaCB0aGF0IHJlc3VsdFtpXSA9IGZpcnN0W2ldIC0gZmlyc3RbaSAtIDFdCi0vLy8gXGluZ3JvdXAgTnVtZXJpY0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcmF0b3IsIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yPgotaW5saW5lIE91dHB1dEl0ZXJhdG9yIGFkamFjZW50X2RpZmZlcmVuY2UgKElucHV0SXRlcmF0b3IgZmlyc3QsIElucHV0SXRlcmF0b3IgbGFzdCwgT3V0cHV0SXRlcmF0b3IgcmVzdWx0KQotewotICAgIGlmIChmaXJzdCA8IGxhc3QpCi0JKnJlc3VsdCsrID0gKmZpcnN0Kys7Ci0gICAgd2hpbGUgKGZpcnN0IDwgbGFzdCkKLQkqcmVzdWx0KysgPSAqZmlyc3QgLSAqKGZpcnN0IC0gMSk7Ci0gICAgcmV0dXJuIChyZXN1bHQpOwotfQotCi0vLy8gV3JpdGVzIHJlc3VsdCBzdWNoIHRoYXQgcmVzdWx0W2ldID0gZGlmZmVyZW5jZU9wIChmaXJzdFtpXSwgZmlyc3RbaSAtIDFdKQotLy8vIFxpbmdyb3VwIE51bWVyaWNBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvciwgdHlwZW5hbWUgQmluYXJ5T3BlcmF0aW9uPgotaW5saW5lIE91dHB1dEl0ZXJhdG9yIGFkamFjZW50X2RpZmZlcmVuY2UgKElucHV0SXRlcmF0b3IgZmlyc3QsIElucHV0SXRlcmF0b3IgbGFzdCwgT3V0cHV0SXRlcmF0b3IgcmVzdWx0LCBCaW5hcnlPcGVyYXRpb24gZGlmZmVyZW5jZU9wKQotewotICAgIGlmIChmaXJzdCA8IGxhc3QpCi0JKnJlc3VsdCsrID0gKmZpcnN0Kys7Ci0gICAgd2hpbGUgKGZpcnN0IDwgbGFzdCkKLQkqcmVzdWx0KysgPSBkaWZmZXJlbmNlT3AgKCpmaXJzdCwgKihmaXJzdCAtIDEpKTsKLSAgICByZXR1cm4gKHJlc3VsdCk7Ci19Ci0KLS8vLyBcYnJpZWYgUmV0dXJucyB4Xm4uCi0vLy8gRG9uYWxkIEtudXRoJ3MgUnVzc2lhbiBQZWFzYW50IGFsZ29yaXRobS4KLS8vLyBcaW5ncm91cCBOdW1lcmljQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSBUIHBvd2VyIChUIHgsIHVuc2lnbmVkIG4pCi17Ci0gICAgVCByZXN1bHQgKG4gJSAyID8geCA6IDEpOwotICAgIHdoaWxlIChuIC89IDIpIHsKLQl4ICo9IHg7Ci0JaWYgKG4gJSAyKQotCSAgICByZXN1bHQgKj0geDsKLSAgICB9Ci0gICAgcmV0dXJuIChyZXN1bHQpOwotfQotCi0vLy8gXGJyaWVmIFJldHVybnMgeF5uLCB1c2luZyBccCBvcCBpbnN0ZWFkIG9mIG11bHRpcGxpY2F0aW9uLgotLy8vIERvbmFsZCBLbnV0aCdzIFJ1c3NpYW4gUGVhc2FudCBhbGdvcml0aG0uCi0vLy8gXGluZ3JvdXAgTnVtZXJpY0FsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEJpbmFyeU9wZXJhdGlvbj4KLWlubGluZSBUIHBvd2VyIChUIHgsIHVuc2lnbmVkIG4sIEJpbmFyeU9wZXJhdGlvbiBvcCkKLXsKLSAgICBUIHJlc3VsdCAobiAlIDIgPyB4IDogMSk7Ci0gICAgd2hpbGUgKG4gLz0gMikgewotCXggPSBvcCAoeCwgeCk7Ci0JaWYgKG4gJSAyKQotCSAgICByZXN1bHQgPSBvcCAocmVzdWx0LCB4KTsKLSAgICB9Ci0gICAgcmV0dXJuIChyZXN1bHQpOwotfQotCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91cGFpci5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdXBhaXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjRjYzNiNy4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91cGFpci5oCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHVzdGwgbGlicmFyeSwgYW4gU1RMIGltcGxlbWVudGF0aW9uLgotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwNSBieSBNaWtlIFNoYXJvdiA8bXNoYXJvdkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0vLyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgotLy8KLS8vLyBcZmlsZSB1cGFpci5oCi0vLy8gXGJyaWVmIFBhaXItcmVsYXRlZCBmdW5jdGlvbmFsaXR5LgotCi0jaWZuZGVmIFVQQUlSX0hfN0RDMDhGMUI3RkVDRjhBRTY4NTZEODRDM0I2MTdBNzUKLSNkZWZpbmUgVVBBSVJfSF83REMwOEYxQjdGRUNGOEFFNjg1NkQ4NEMzQjYxN0E3NQotCi0jaW5jbHVkZSAidXR5cGVzLmgiCi0KLW5hbWVzcGFjZSB1c3RsIHsKLQotLy8vIFxjbGFzcyBwYWlyIHVwYWlyLmggdXN0bC5oCi0vLy8gXGluZ3JvdXAgQXNzb2NpYXRpdmVDb250YWluZXJzCi0vLy8KLS8vLyBcYnJpZWYgQ29udGFpbmVyIGZvciB0d28gdmFsdWVzLgotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotY2xhc3MgcGFpciB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBUMQkJZmlyc3RfdHlwZTsKLSAgICB0eXBlZGVmIFQyCQlzZWNvbmRfdHlwZTsKLXB1YmxpYzoKLSAgICAvLy8gRGVmYXVsdCBjb25zdHJ1Y3Rvci4KLSAgICBpbmxpbmUgcGFpciAodm9pZCkJCQkJOiBmaXJzdCAoVDEoKSksIHNlY29uZCAoVDIoKSkge30KLSAgICAvLy8gSW5pdGlhbGl6ZXMgbWVtYmVycyB3aXRoIFxwIGEsIGFuZCBccCBiLgotICAgIGlubGluZSBwYWlyIChjb25zdCBUMSYgYSwgY29uc3QgVDImIGIpCTogZmlyc3QgKGEpLCBzZWNvbmQgKGIpIHt9Ci0gICAgaW5saW5lIHBhaXImCW9wZXJhdG9yPSAoY29uc3QgcGFpcjxUMSwgVDI+JiBwMikgeyBmaXJzdCA9IHAyLmZpcnN0OyBzZWNvbmQgPSBwMi5zZWNvbmQ7IHJldHVybiAoKnRoaXMpOyB9Ci0gICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQzLCB0eXBlbmFtZSBUND4KLSAgICBpbmxpbmUgcGFpciYJb3BlcmF0b3I9IChjb25zdCBwYWlyPFQzLCBUND4mIHAyKSB7IGZpcnN0ID0gcDIuZmlyc3Q7IHNlY29uZCA9IHAyLnNlY29uZDsgcmV0dXJuICgqdGhpcyk7IH0KLXB1YmxpYzoKLSAgICBmaXJzdF90eXBlCQlmaXJzdDsKLSAgICBzZWNvbmRfdHlwZQkJc2Vjb25kOwotfTsKLQotLy8vIENvbXBhcmVzIGJvdGggdmFsdWVzIG9mIFxwIHAxIHRvIHRob3NlIG9mIFxwIHAyLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLWlubGluZSBib29sIG9wZXJhdG9yPT0gKGNvbnN0IHBhaXI8VDEsVDI+JiBwMSwgY29uc3QgcGFpcjxUMSxUMj4mIHAyKQotewotICAgIHJldHVybiAocDEuZmlyc3QgPT0gcDIuZmlyc3QgJiYgcDEuc2Vjb25kID09IHAyLnNlY29uZCk7Ci19Ci0KLS8vLyBDb21wYXJlcyBib3RoIHZhbHVlcyBvZiBccCBwMSB0byB0aG9zZSBvZiBccCBwMi4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci1ib29sIG9wZXJhdG9yPCAoY29uc3QgcGFpcjxUMSxUMj4mIHAxLCBjb25zdCBwYWlyPFQxLFQyPiYgcDIpCi17Ci0gICAgcmV0dXJuIChwMS5maXJzdCA8IHAyLmZpcnN0IHx8IChwMS5maXJzdCA9PSBwMi5maXJzdCAmJiBwMS5zZWNvbmQgPCBwMi5zZWNvbmQpKTsKLX0KLQotLy8vIFJldHVybnMgYSBwYWlyIG9iamVjdCB3aXRoIChhLGIpCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotaW5saW5lIHBhaXI8VDEsVDI+IG1ha2VfcGFpciAoY29uc3QgVDEmIGEsIGNvbnN0IFQyJiBiKQotewotICAgIHJldHVybiAocGFpcjxUMSxUMj4gKGEsIGIpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgdXN0bAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdXByZWRhbGdvLmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91cHJlZGFsZ28uaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTYyYTNkNi4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91cHJlZGFsZ28uaAorKysgL2Rldi9udWxsCkBAIC0xLDU5NyArMCwwIEBACi0vLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdXN0bCBsaWJyYXJ5LCBhbiBTVEwgaW1wbGVtZW50YXRpb24uCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDA1IGJ5IE1pa2UgU2hhcm92IDxtc2hhcm92QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLS8vIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCi0vLwotLy8gdWFsZ28uaAotLy8KLS8vIEltcGxlbWVudGF0aW9uIG9mIFNUTCBhbGdvcml0aG1zIHdpdGggY3VzdG9tIHByZWRpY2F0ZXMuCi0vLwotLy8gVGhlIGZ1bmN0aW9uIHByb3RvdHlwZXMgYXJlIGNvcGllZAotLy8gZXhhY3RseSBmcm9tIHRoZSBTR0kgdmVyc2lvbiBvZiBTVEwgZG9jdW1lbnRhdGlvbiBhbG9uZyB3aXRoIGNvbW1lbnRzIGFib3V0Ci0vLyB0aGVpciB1c2UuIFRoZSBjb2RlIGlzIE5PVCB0aGUgc2FtZSwgdGhvdWdoIHRoZSBmdW5jdGlvbmFsaXR5IHVzdWFsbHkgaXMuCi0vLwotCi0jaWZuZGVmIFVQUkVEQUxHT19IXzJDQjA1OEFFMDgwN0EwMUEyRjZBNTFCQTVENTgyMEE1Ci0jZGVmaW5lIFVQUkVEQUxHT19IXzJDQjA1OEFFMDgwN0EwMUEyRjZBNTFCQTVENTgyMEE1Ci0KLW5hbWVzcGFjZSB1c3RsIHsKLQotLy8vIENvcHlfaWYgY29waWVzIGVsZW1lbnRzIGZyb20gdGhlIHJhbmdlIFtmaXJzdCwgbGFzdCkgdG8gdGhlIHJhbmdlCi0vLy8gW3Jlc3VsdCwgcmVzdWx0ICsgKGxhc3QgLSBmaXJzdCkpIGlmIHByZWQoKmkpIHJldHVybnMgdHJ1ZS4KLS8vLyBcaW5ncm91cCBNdXRhdGluZ0FsZ29yaXRobXMKLS8vLyBcaW5ncm91cCBQcmVkaWNhdGVBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvciwgdHlwZW5hbWUgUHJlZGljYXRlPgotaW5saW5lIE91dHB1dEl0ZXJhdG9yIGNvcHlfaWYgKElucHV0SXRlcmF0b3IgZmlyc3QsIElucHV0SXRlcmF0b3IgbGFzdCwgT3V0cHV0SXRlcmF0b3IgcmVzdWx0LCBQcmVkaWNhdGUgcHJlZCkKLXsKLSAgICBmb3IgKDsgZmlyc3QgIT0gbGFzdDsgKytmaXJzdCkgewotCWlmIChwcmVkKCpmaXJzdCkpIHsKLQkgICAgKnJlc3VsdCA9ICpmaXJzdDsKLQkgICAgKysgcmVzdWx0OwotCX0KLSAgICB9Ci0gICAgcmV0dXJuIChyZXN1bHQpOwotfQotCi0vLy8gUmV0dXJucyB0aGUgZmlyc3QgaXRlcmF0b3IgaSBpbiB0aGUgcmFuZ2UgW2ZpcnN0LCBsYXN0KSBzdWNoIHRoYXQKLS8vLyBwcmVkKCppKSBpcyB0cnVlLiBSZXR1cm5zIGxhc3QgaWYgbm8gc3VjaCBpdGVyYXRvciBleGlzdHMuCi0vLy8gXGluZ3JvdXAgU2VhcmNoaW5nQWxnb3JpdGhtcwotLy8vIFxpbmdyb3VwIFByZWRpY2F0ZUFsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcmF0b3IsIHR5cGVuYW1lIFByZWRpY2F0ZT4KLWlubGluZSBJbnB1dEl0ZXJhdG9yIGZpbmRfaWYgKElucHV0SXRlcmF0b3IgZmlyc3QsIElucHV0SXRlcmF0b3IgbGFzdCwgUHJlZGljYXRlIHByZWQpCi17Ci0gICAgd2hpbGUgKGZpcnN0ICE9IGxhc3QgJiYgIXByZWQgKCpmaXJzdCkpCi0JKysgZmlyc3Q7Ci0gICAgcmV0dXJuIChmaXJzdCk7Ci19Ci0KLS8vLyBSZXR1cm5zIHRoZSBmaXJzdCBpdGVyYXRvciBzdWNoIHRoYXQgcCgqaSwgKihpICsgMSkpID09IHRydWUuCi0vLy8gXGluZ3JvdXAgU2VhcmNoaW5nQWxnb3JpdGhtcwotLy8vIFxpbmdyb3VwIFByZWRpY2F0ZUFsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgQmluYXJ5UHJlZGljYXRlPgotaW5saW5lIEZvcndhcmRJdGVyYXRvciBhZGphY2VudF9maW5kIChGb3J3YXJkSXRlcmF0b3IgZmlyc3QsIEZvcndhcmRJdGVyYXRvciBsYXN0LCBCaW5hcnlQcmVkaWNhdGUgcCkKLXsKLSAgICBpZiAoZmlyc3QgIT0gbGFzdCkKLQlmb3IgKEZvcndhcmRJdGVyYXRvciBwcmV2ID0gZmlyc3Q7ICsrZmlyc3QgIT0gbGFzdDsgKysgcHJldikKLQkgICAgaWYgKHAgKCpwcmV2LCAqZmlyc3QpKQotCQlyZXR1cm4gKHByZXYpOwotICAgIHJldHVybiAobGFzdCk7Ci19Ci0KLS8vLyBSZXR1cm5zIHRoZSBwb2ludGVyIHRvIHRoZSBmaXJzdCBwYWlyIG9mIHVuZXF1YWwgZWxlbWVudHMuCi0vLy8gXGluZ3JvdXAgU2VhcmNoaW5nQWxnb3JpdGhtcwotLy8vIFxpbmdyb3VwIFByZWRpY2F0ZUFsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcmF0b3IsIHR5cGVuYW1lIEJpbmFyeVByZWRpY2F0ZT4KLWlubGluZSBwYWlyPElucHV0SXRlcmF0b3IsSW5wdXRJdGVyYXRvcj4KLW1pc21hdGNoIChJbnB1dEl0ZXJhdG9yIGZpcnN0MSwgSW5wdXRJdGVyYXRvciBsYXN0MSwgSW5wdXRJdGVyYXRvciBmaXJzdDIsIEJpbmFyeVByZWRpY2F0ZSBjb21wKQotewotICAgIHdoaWxlIChmaXJzdDEgIT0gbGFzdDEgJiYgY29tcCgqZmlyc3QxLCAqZmlyc3QyKSkKLQkrKyBmaXJzdDEsICsrIGZpcnN0MjsKLSAgICByZXR1cm4gKG1ha2VfcGFpciAoZmlyc3QxLCBmaXJzdDIpKTsKLX0KLQotLy8vIFJldHVybnMgdHJ1ZSBpZiB0d28gcmFuZ2VzIGFyZSBlcXVhbC4KLS8vLyBUaGlzIGlzIGFuIGV4dGVuc2lvbiwgcHJlc2VudCBpbiB1U1RMIGFuZCBTR0kgU1RMLgotLy8vIFxpbmdyb3VwIENvbmRpdGlvbkFsZ29yaXRobXMKLS8vLyBcaW5ncm91cCBQcmVkaWNhdGVBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBCaW5hcnlQcmVkaWNhdGU+Ci1pbmxpbmUgYm9vbCBlcXVhbCAoSW5wdXRJdGVyYXRvciBmaXJzdDEsIElucHV0SXRlcmF0b3IgbGFzdDEsIElucHV0SXRlcmF0b3IgZmlyc3QyLCBCaW5hcnlQcmVkaWNhdGUgY29tcCkKLXsKLSAgICByZXR1cm4gKG1pc21hdGNoIChmaXJzdDEsIGxhc3QxLCBmaXJzdDIsIGNvbXApLmZpcnN0ID09IGxhc3QxKTsKLX0KLQotLy8vIENvdW50X2lmIGZpbmRzIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gW2ZpcnN0LCBsYXN0KSB0aGF0IHNhdGlzZnkgdGhlCi0vLy8gcHJlZGljYXRlIHByZWQuIE1vcmUgcHJlY2lzZWx5LCB0aGUgZmlyc3QgdmVyc2lvbiBvZiBjb3VudF9pZiByZXR1cm5zIHRoZQotLy8vIG51bWJlciBvZiBpdGVyYXRvcnMgaSBpbiBbZmlyc3QsIGxhc3QpIHN1Y2ggdGhhdCBwcmVkKCppKSBpcyB0cnVlLgotLy8vIFxpbmdyb3VwIENvbmRpdGlvbkFsZ29yaXRobXMKLS8vLyBcaW5ncm91cCBQcmVkaWNhdGVBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBQcmVkaWNhdGU+Ci1pbmxpbmUgc2l6ZV90IGNvdW50X2lmIChJbnB1dEl0ZXJhdG9yIGZpcnN0LCBJbnB1dEl0ZXJhdG9yIGxhc3QsIFByZWRpY2F0ZSBwcmVkKQotewotICAgIHNpemVfdCB0b3RhbCA9IDA7Ci0gICAgZm9yICg7IGZpcnN0ICE9IGxhc3Q7ICsrZmlyc3QpCi0JaWYgKHByZWQgKCpmaXJzdCkpCi0JICAgICsrIHRvdGFsOwotICAgIHJldHVybiAodG90YWwpOwotfQotCi0vLy8gUmVwbGFjZV9pZiByZXBsYWNlcyBldmVyeSBlbGVtZW50IGluIHRoZSByYW5nZSBbZmlyc3QsIGxhc3QpIGZvciB3aGljaAotLy8vIHByZWQgcmV0dXJucyB0cnVlIHdpdGggbmV3X3ZhbHVlLiBUaGF0IGlzOiBmb3IgZXZlcnkgaXRlcmF0b3IgaSwgaWYKLS8vLyBwcmVkKCppKSBpcyB0cnVlIHRoZW4gaXQgcGVyZm9ybXMgdGhlIGFzc2lnbm1lbnQgKmkgPSBuZXdfdmFsdWUuCi0vLy8gXGluZ3JvdXAgTXV0YXRpbmdBbGdvcml0aG1zCi0vLy8gXGluZ3JvdXAgUHJlZGljYXRlQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBQcmVkaWNhdGUsIHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdm9pZCByZXBsYWNlX2lmIChGb3J3YXJkSXRlcmF0b3IgZmlyc3QsIEZvcndhcmRJdGVyYXRvciBsYXN0LCBQcmVkaWNhdGUgcHJlZCwgY29uc3QgVCYgbmV3X3ZhbHVlKQotewotICAgIGZvciAoOyBmaXJzdCAhPSBsYXN0OyArK2ZpcnN0KQotCWlmIChwcmVkICgqZmlyc3QpKQotCSAgICAqZmlyc3QgPSBuZXdfdmFsdWU7Ci19Ci0KLS8vLyBSZXBsYWNlX2NvcHlfaWYgY29waWVzIGVsZW1lbnRzIGZyb20gdGhlIHJhbmdlIFtmaXJzdCwgbGFzdCkgdG8gdGhlIHJhbmdlCi0vLy8gW3Jlc3VsdCwgcmVzdWx0ICsgKGxhc3QtZmlyc3QpKSwgZXhjZXB0IHRoYXQgYW55IGVsZW1lbnQgZm9yIHdoaWNoIHByZWQgaXMKLS8vLyB0cnVlIGlzIG5vdCBjb3BpZWQ7IG5ld192YWx1ZSBpcyBjb3BpZWQgaW5zdGVhZC4gTW9yZSBwcmVjaXNlbHksIGZvciBldmVyeQotLy8vIGludGVnZXIgbiBzdWNoIHRoYXQgMCA8PSBuIDwgbGFzdC1maXJzdCwgcmVwbGFjZV9jb3B5X2lmIHBlcmZvcm1zIHRoZQotLy8vIGFzc2lnbm1lbnQgKihyZXN1bHQrbikgPSBuZXdfdmFsdWUgaWYgcHJlZCgqKGZpcnN0K24pKSwKLS8vLyBhbmQgKihyZXN1bHQrbikgPSAqKGZpcnN0K24pIG90aGVyd2lzZS4KLS8vLyBcaW5ncm91cCBNdXRhdGluZ0FsZ29yaXRobXMKLS8vLyBcaW5ncm91cCBQcmVkaWNhdGVBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvciwgdHlwZW5hbWUgUHJlZGljYXRlLCB0eXBlbmFtZSBUPgotaW5saW5lIE91dHB1dEl0ZXJhdG9yIHJlcGxhY2VfY29weV9pZiAoSW5wdXRJdGVyYXRvciBmaXJzdCwgSW5wdXRJdGVyYXRvciBsYXN0LCBPdXRwdXRJdGVyYXRvciByZXN1bHQsIFByZWRpY2F0ZSBwcmVkLCBjb25zdCBUJiBuZXdfdmFsdWUpIAotewotICAgIGZvciAoOyBmaXJzdCAhPSBsYXN0OyArK3Jlc3VsdCwgKytmaXJzdCkKLSAgICAgICAgKnJlc3VsdCA9IHByZWQoKmZpcnN0KSA/IG5ld192YWx1ZSA6ICpmaXJzdDsKLX0KLQotLy8vIFJlbW92ZV9jb3B5X2lmIGNvcGllcyBlbGVtZW50cyBmcm9tIHRoZSByYW5nZSBbZmlyc3QsIGxhc3QpIHRvIGEgcmFuZ2UKLS8vLyBiZWdpbm5pbmcgYXQgcmVzdWx0LCBleGNlcHQgdGhhdCBlbGVtZW50cyBmb3Igd2hpY2ggcHJlZCBpcyB0cnVlIGFyZSBub3QKLS8vLyBjb3BpZWQuIFRoZSByZXR1cm4gdmFsdWUgaXMgdGhlIGVuZCBvZiB0aGUgcmVzdWx0aW5nIHJhbmdlLiBUaGlzIG9wZXJhdGlvbgotLy8vIGlzIHN0YWJsZSwgbWVhbmluZyB0aGF0IHRoZSByZWxhdGl2ZSBvcmRlciBvZiB0aGUgZWxlbWVudHMgdGhhdCBhcmUgY29waWVkCi0vLy8gaXMgdGhlIHNhbWUgYXMgaW4gdGhlIHJhbmdlIFtmaXJzdCwgbGFzdCkuCi0vLy8gXGluZ3JvdXAgTXV0YXRpbmdBbGdvcml0aG1zCi0vLy8gXGluZ3JvdXAgUHJlZGljYXRlQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3IsIHR5cGVuYW1lIFByZWRpY2F0ZT4KLWlubGluZSBPdXRwdXRJdGVyYXRvciByZW1vdmVfY29weV9pZiAoSW5wdXRJdGVyYXRvciBmaXJzdCwgSW5wdXRJdGVyYXRvciBsYXN0LCBPdXRwdXRJdGVyYXRvciByZXN1bHQsIFByZWRpY2F0ZSBwcmVkKQotewotICAgIGZvciAoOyBmaXJzdCAhPSBsYXN0OyArK2ZpcnN0KQotCWlmIChwcmVkICgqZmlyc3QpKQotCSAgICAqcmVzdWx0KysgPSAqZmlyc3Q7Ci0gICAgcmV0dXJuIChyZXN1bHQpOwotfQotCi0vLy8gUmVtb3ZlX2lmIHJlbW92ZXMgZnJvbSB0aGUgcmFuZ2UgW2ZpcnN0LCBsYXN0KSBldmVyeSBlbGVtZW50IHggc3VjaCB0aGF0Ci0vLy8gcHJlZCh4KSBpcyB0cnVlLiBUaGF0IGlzLCByZW1vdmVfaWYgcmV0dXJucyBhbiBpdGVyYXRvciBuZXdfbGFzdCBzdWNoIHRoYXQKLS8vLyB0aGUgcmFuZ2UgW2ZpcnN0LCBuZXdfbGFzdCkgY29udGFpbnMgbm8gZWxlbWVudHMgZm9yIHdoaWNoIHByZWQgaXMgdHJ1ZS4KLS8vLyBUaGUgaXRlcmF0b3JzIGluIHRoZSByYW5nZSBbbmV3X2xhc3QsIGxhc3QpIGFyZSBhbGwgc3RpbGwgZGVyZWZlcmVuY2VhYmxlLAotLy8vIGJ1dCB0aGUgZWxlbWVudHMgdGhhdCB0aGV5IHBvaW50IHRvIGFyZSB1bnNwZWNpZmllZC4gUmVtb3ZlX2lmIGlzIHN0YWJsZSwKLS8vLyBtZWFuaW5nIHRoYXQgdGhlIHJlbGF0aXZlIG9yZGVyIG9mIGVsZW1lbnRzIHRoYXQgYXJlIG5vdCByZW1vdmVkIGlzCi0vLy8gdW5jaGFuZ2VkLgotLy8vIFxpbmdyb3VwIE11dGF0aW5nQWxnb3JpdGhtcwotLy8vIFxpbmdyb3VwIFByZWRpY2F0ZUFsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgUHJlZGljYXRlPgotaW5saW5lIEZvcndhcmRJdGVyYXRvciByZW1vdmVfaWYgKEZvcndhcmRJdGVyYXRvciBmaXJzdCwgRm9yd2FyZEl0ZXJhdG9yIGxhc3QsIFByZWRpY2F0ZSBwcmVkKQotewotICAgIHJldHVybiAocmVtb3ZlX2NvcHlfaWYgKGZpcnN0LCBsYXN0LCBmaXJzdCwgcHJlZCkpOwotfQotCi0vLy8gVGhlIHJlYXNvbiB0aGVyZSBhcmUgdHdvIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiB1bmlxdWVfY29weSBpcyB0aGF0IHRoZXJlCi0vLy8gYXJlIHR3byBkaWZmZXJlbnQgZGVmaW5pdGlvbnMgb2Ygd2hhdCBpdCBtZWFucyBmb3IgYSBjb25zZWN1dGl2ZSBncm91cCBvZgotLy8vIGVsZW1lbnRzIHRvIGJlIGR1cGxpY2F0ZXMuIEluIHRoZSBmaXJzdCB2ZXJzaW9uLCB0aGUgdGVzdCBpcyBzaW1wbGUKLS8vLyBlcXVhbGl0eTogdGhlIGVsZW1lbnRzIGluIGEgcmFuZ2UgW2YsIGwpIGFyZSBkdXBsaWNhdGVzIGlmLCBmb3IgZXZlcnkKLS8vLyBpdGVyYXRvciBpIGluIHRoZSByYW5nZSwgZWl0aGVyIGkgPT0gZiBvciBlbHNlICppID09ICooaS0xKS4gSW4gdGhlIHNlY29uZCwKLS8vLyB0aGUgdGVzdCBpcyBhbiBhcmJpdHJhcnkgQmluYXJ5IFByZWRpY2F0ZSBiaW5hcnlfcHJlZDogdGhlIGVsZW1lbnRzIGluCi0vLy8gW2YsIGwpIGFyZSBkdXBsaWNhdGVzIGlmLCBmb3IgZXZlcnkgaXRlcmF0b3IgaSBpbiB0aGUgcmFuZ2UsIGVpdGhlcgotLy8vIGkgPT0gZiBvciBlbHNlIGJpbmFyeV9wcmVkKCppLCAqKGktMSkpIGlzIHRydWUuCi0vLy8gXGluZ3JvdXAgTXV0YXRpbmdBbGdvcml0aG1zCi0vLy8gXGluZ3JvdXAgUHJlZGljYXRlQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3IsIHR5cGVuYW1lIEJpbmFyeVByZWRpY2F0ZT4KLU91dHB1dEl0ZXJhdG9yIHVuaXF1ZV9jb3B5IChJbnB1dEl0ZXJhdG9yIGZpcnN0LCBJbnB1dEl0ZXJhdG9yIGxhc3QsIE91dHB1dEl0ZXJhdG9yIHJlc3VsdCwgQmluYXJ5UHJlZGljYXRlIGJpbmFyeV9wcmVkKQotewotICAgIGlmIChmaXJzdCAhPSBsYXN0KSB7Ci0JKnJlc3VsdCA9ICpmaXJzdDsKLQl3aGlsZSAoKytmaXJzdCAhPSBsYXN0KQotCSAgICBpZiAoIWJpbmFyeV9wcmVkICgqZmlyc3QsICpyZXN1bHQpKQotCQkqKytyZXN1bHQgPSAqZmlyc3Q7Ci0JKysgcmVzdWx0OwotICAgIH0KLSAgICByZXR1cm4gKHJlc3VsdCk7Ci19Ci0KLS8vLyBFdmVyeSB0aW1lIGEgY29uc2VjdXRpdmUgZ3JvdXAgb2YgZHVwbGljYXRlIGVsZW1lbnRzIGFwcGVhcnMgaW4gdGhlIHJhbmdlCi0vLy8gW2ZpcnN0LCBsYXN0KSwgdGhlIGFsZ29yaXRobSB1bmlxdWUgcmVtb3ZlcyBhbGwgYnV0IHRoZSBmaXJzdCBlbGVtZW50LgotLy8vIFRoYXQgaXMsIHVuaXF1ZSByZXR1cm5zIGFuIGl0ZXJhdG9yIG5ld19sYXN0IHN1Y2ggdGhhdCB0aGUgcmFuZ2UgW2ZpcnN0LAotLy8vIG5ld19sYXN0KSBjb250YWlucyBubyB0d28gY29uc2VjdXRpdmUgZWxlbWVudHMgdGhhdCBhcmUgZHVwbGljYXRlcy4KLS8vLyBUaGUgaXRlcmF0b3JzIGluIHRoZSByYW5nZSBbbmV3X2xhc3QsIGxhc3QpIGFyZSBhbGwgc3RpbGwgZGVyZWZlcmVuY2VhYmxlLAotLy8vIGJ1dCB0aGUgZWxlbWVudHMgdGhhdCB0aGV5IHBvaW50IHRvIGFyZSB1bnNwZWNpZmllZC4gVW5pcXVlIGlzIHN0YWJsZSwKLS8vLyBtZWFuaW5nIHRoYXQgdGhlIHJlbGF0aXZlIG9yZGVyIG9mIGVsZW1lbnRzIHRoYXQgYXJlIG5vdCByZW1vdmVkIGlzCi0vLy8gdW5jaGFuZ2VkLgotLy8vIFxpbmdyb3VwIE11dGF0aW5nQWxnb3JpdGhtcwotLy8vIFxpbmdyb3VwIFByZWRpY2F0ZUFsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgQmluYXJ5UHJlZGljYXRlPgotaW5saW5lIEZvcndhcmRJdGVyYXRvciB1bmlxdWUgKEZvcndhcmRJdGVyYXRvciBmaXJzdCwgRm9yd2FyZEl0ZXJhdG9yIGxhc3QsIEJpbmFyeVByZWRpY2F0ZSBiaW5hcnlfcHJlZCkKLXsKLSAgICByZXR1cm4gKHVuaXF1ZV9jb3B5IChmaXJzdCwgbGFzdCwgZmlyc3QsIGJpbmFyeV9wcmVkKSk7Ci19Ci0KLS8vLyBSZXR1cm5zIHRoZSBmdXJ0aGVybW9zdCBpdGVyYXRvciBpIGluIFtmaXJzdCwgbGFzdCkgc3VjaCB0aGF0LAotLy8vIGZvciBldmVyeSBpdGVyYXRvciBqIGluIFtmaXJzdCwgaSksIGNvbXAoKmosIHZhbHVlKSBpcyB0cnVlLgotLy8vIEFzc3VtZXMgdGhlIHJhbmdlIGlzIHNvcnRlZC4KLS8vLyBcaW5ncm91cCBTZWFyY2hpbmdBbGdvcml0aG1zCi0vLy8gXGluZ3JvdXAgUHJlZGljYXRlQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBTdHJpY3RXZWFrT3JkZXJpbmc+Ci1Gb3J3YXJkSXRlcmF0b3IgbG93ZXJfYm91bmQgKEZvcndhcmRJdGVyYXRvciBmaXJzdCwgRm9yd2FyZEl0ZXJhdG9yIGxhc3QsIGNvbnN0IFQmIHZhbHVlLCBTdHJpY3RXZWFrT3JkZXJpbmcgY29tcCkKLXsKLSAgICBGb3J3YXJkSXRlcmF0b3IgbWlkOwotICAgIHdoaWxlIChmaXJzdCAhPSBsYXN0KSB7Ci0JbWlkID0gYWR2YW5jZSAoZmlyc3QsIGRpc3RhbmNlIChmaXJzdCxsYXN0KSAvIDIpOwotCWlmIChjb21wICgqbWlkLCB2YWx1ZSkpCi0JICAgIGZpcnN0ID0gbWlkICsgMTsKLQllbHNlCi0JICAgIGxhc3QgPSBtaWQ7Ci0gICAgfQotICAgIHJldHVybiAoZmlyc3QpOwotfQotCi0vLy8gUGVyZm9ybXMgYSBiaW5hcnkgc2VhcmNoIGluc2lkZSB0aGUgc29ydGVkIHJhbmdlLgotLy8vIFxpbmdyb3VwIFNlYXJjaGluZ0FsZ29yaXRobXMKLS8vLyBcaW5ncm91cCBQcmVkaWNhdGVBbGdvcml0aG1zCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIFQsIHR5cGVuYW1lIFN0cmljdFdlYWtPcmRlcmluZz4KLWlubGluZSBGb3J3YXJkSXRlcmF0b3IgYmluYXJ5X3NlYXJjaCAoRm9yd2FyZEl0ZXJhdG9yIGZpcnN0LCBGb3J3YXJkSXRlcmF0b3IgbGFzdCwgY29uc3QgVCYgdmFsdWUsIFN0cmljdFdlYWtPcmRlcmluZyBjb21wKQotewotICAgIEZvcndhcmRJdGVyYXRvciBmb3VuZCA9IGxvd2VyX2JvdW5kIChmaXJzdCwgbGFzdCwgdmFsdWUsIGNvbXApOwotICAgIHJldHVybiAoKGZvdW5kID09IGxhc3QgfHwgY29tcCh2YWx1ZSwgKmZvdW5kKSkgPyBsYXN0IDogZm91bmQpOwotfQotCi0vLy8gUmV0dXJucyB0aGUgZnVydGhlcm1vc3QgaXRlcmF0b3IgaSBpbiBbZmlyc3QsbGFzdCkgc3VjaCB0aGF0IGZvcgotLy8vIGV2ZXJ5IGl0ZXJhdG9yIGogaW4gW2ZpcnN0LGkpLCBjb21wKHZhbHVlLCpqKSBpcyBmYWxzZS4KLS8vLyBcaW5ncm91cCBTZWFyY2hpbmdBbGdvcml0aG1zCi0vLy8gXGluZ3JvdXAgUHJlZGljYXRlQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBTdHJpY3RXZWFrT3JkZXJpbmc+Ci1Gb3J3YXJkSXRlcmF0b3IgdXBwZXJfYm91bmQgKEZvcndhcmRJdGVyYXRvciBmaXJzdCwgRm9yd2FyZEl0ZXJhdG9yIGxhc3QsIGNvbnN0IFQmIHZhbHVlLCBTdHJpY3RXZWFrT3JkZXJpbmcgY29tcCkKLXsKLSAgICBGb3J3YXJkSXRlcmF0b3IgbWlkOwotICAgIHdoaWxlIChmaXJzdCAhPSBsYXN0KSB7Ci0JbWlkID0gYWR2YW5jZSAoZmlyc3QsIGRpc3RhbmNlIChmaXJzdCxsYXN0KSAvIDIpOwotCWlmIChjb21wICh2YWx1ZSwgKm1pZCkpCi0JICAgIGxhc3QgPSBtaWQ7Ci0JZWxzZQotCSAgICBmaXJzdCA9IG1pZCArIDE7Ci0gICAgfQotICAgIHJldHVybiAobGFzdCk7Ci19Ci0KLS8vLyBSZXR1cm5zIHBhaXI8bG93ZXJfYm91bmQsdXBwZXJfYm91bmQ+Ci0vLy8gXGluZ3JvdXAgU2VhcmNoaW5nQWxnb3JpdGhtcwotLy8vIFxpbmdyb3VwIFByZWRpY2F0ZUFsZ29yaXRobXMKLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgVCwgdHlwZW5hbWUgU3RyaWN0V2Vha09yZGVyaW5nPgotaW5saW5lIHBhaXI8Rm9yd2FyZEl0ZXJhdG9yLEZvcndhcmRJdGVyYXRvcj4gZXF1YWxfcmFuZ2UgKEZvcndhcmRJdGVyYXRvciBmaXJzdCwgRm9yd2FyZEl0ZXJhdG9yIGxhc3QsIGNvbnN0IFQmIHZhbHVlLCBTdHJpY3RXZWFrT3JkZXJpbmcgY29tcCkKLXsKLSAgICBwYWlyPEZvcndhcmRJdGVyYXRvcixGb3J3YXJkSXRlcmF0b3I+IHJ2OwotICAgIHJ2LnNlY29uZCA9IHJ2LmZpcnN0ID0gbG93ZXJfYm91bmQgKGZpcnN0LCBsYXN0LCB2YWx1ZSwgY29tcCk7Ci0gICAgd2hpbGUgKHJ2LnNlY29uZCAhPSBsYXN0ICYmICFjb21wKHZhbHVlLCAqKHJ2LnNlY29uZCkpKQotCSsrIHJ2LnNlY29uZDsKLSAgICByZXR1cm4gKHJ2KTsKLX0KLQotLy8vIFxicmllZiBQdXRzIFxwIG50aCBlbGVtZW50IGludG8gaXRzIHNvcnRlZCBwb3NpdGlvbi4KLS8vLyBJbiB0aGlzIGltcGxlbWVudGF0aW9uLCB0aGUgZW50aXJlIGFycmF5IGlzIHNvcnRlZC4gVGhlIHBlcmZvcm1hbmNlIGRpZmZlcmVuY2UgaXMKLS8vLyBzbyBzbWFsbCBhbmQgdGhlIGZ1bmN0aW9uIHVzZSBpcyBzbyByYXJlLCB0aGVyZSBpcyBubyBuZWVkIHRvIGhhdmUgY29kZSBmb3IgaXQuCi0vLy8gXGluZ3JvdXAgU29ydGluZ0FsZ29yaXRobXMKLS8vLyBcaW5ncm91cCBTZWFyY2hpbmdBbGdvcml0aG1zCi0vLy8gXGluZ3JvdXAgUHJlZGljYXRlQWxnb3JpdGhtcwotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIENvbXBhcmU+Ci1pbmxpbmUgdm9pZCBudGhfZWxlbWVudCAoUmFuZG9tQWNjZXNzSXRlcmF0b3IgZmlyc3QsIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yLCBSYW5kb21BY2Nlc3NJdGVyYXRvciBsYXN0LCBDb21wYXJlIGNvbXApCi17Ci0gICAgc29ydCAoZmlyc3QsIGxhc3QsIGNvbXApOwotfQotCi0vLy8gXGJyaWVmIFNlYXJjaGVzIGZvciB0aGUgZmlyc3Qgc3Vic2VxdWVuY2UgW2ZpcnN0MixsYXN0MikgaW4gW2ZpcnN0MSxsYXN0MSkKLS8vLyBcaW5ncm91cCBTZWFyY2hpbmdBbGdvcml0aG1zCi0vLy8gXGluZ3JvdXAgUHJlZGljYXRlQWxnb3JpdGhtcwotdGVtcGxhdGUgPHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvcjEsIHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvcjIsIHR5cGVuYW1lIEJpbmFyeVByZWRpY2F0ZT4KLUZvcndhcmRJdGVyYXRvcjEgc2VhcmNoIChGb3J3YXJkSXRlcmF0b3IxIGZpcnN0MSwgRm9yd2FyZEl0ZXJhdG9yMSBsYXN0MSwgRm9yd2FyZEl0ZXJhdG9yMiBmaXJzdDIsIEZvcndhcmRJdGVyYXRvcjIgbGFzdDIsIEJpbmFyeVByZWRpY2F0ZSBjb21wKQotewotICAgIGNvbnN0IEZvcndhcmRJdGVyYXRvcjEgc2xhc3QgPSBsYXN0MSAtIGRpc3RhbmNlKGZpcnN0MiwgbGFzdDIpICsgMTsKLSAgICBmb3IgKDsgZmlyc3QxIDwgc2xhc3Q7ICsrZmlyc3QxKSB7Ci0JRm9yd2FyZEl0ZXJhdG9yMiBpID0gZmlyc3QyOwotCUZvcndhcmRJdGVyYXRvcjEgaiA9IGZpcnN0MTsKLQlmb3IgKDsgaSAhPSBsYXN0MiAmJiBjb21wKCpqLCAqaSk7ICsraSwgKytqKTsKLQlpZiAoaSA9PSBsYXN0MikKLQkgICAgcmV0dXJuIChmaXJzdDEpOwotICAgIH0KLSAgICByZXR1cm4gKGxhc3QxKTsKLX0KLQotLy8vIFxicmllZiBTZWFyY2hlcyBmb3IgdGhlIGxhc3Qgc3Vic2VxdWVuY2UgW2ZpcnN0MixsYXN0MikgaW4gW2ZpcnN0MSxsYXN0MSkKLS8vLyBcaW5ncm91cCBTZWFyY2hpbmdBbGdvcml0aG1zCi0vLy8gXGluZ3JvdXAgUHJlZGljYXRlQWxnb3JpdGhtcwotdGVtcGxhdGUgPHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvcjEsIHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvcjIsIHR5cGVuYW1lIEJpbmFyeVByZWRpY2F0ZT4KLUZvcndhcmRJdGVyYXRvcjEgZmluZF9lbmQgKEZvcndhcmRJdGVyYXRvcjEgZmlyc3QxLCBGb3J3YXJkSXRlcmF0b3IxIGxhc3QxLCBGb3J3YXJkSXRlcmF0b3IyIGZpcnN0MiwgRm9yd2FyZEl0ZXJhdG9yMiBsYXN0MiwgQmluYXJ5UHJlZGljYXRlIGNvbXApCi17Ci0gICAgRm9yd2FyZEl0ZXJhdG9yMSBzID0gbGFzdDEgLSBkaXN0YW5jZShmaXJzdDIsIGxhc3QyKTsKLSAgICBmb3IgKDsgZmlyc3QxIDwgczsgLS1zKSB7Ci0JRm9yd2FyZEl0ZXJhdG9yMiBpID0gZmlyc3QyLCBqID0gczsKLQlmb3IgKDsgaSAhPSBsYXN0MiAmJiBjb21wKCpqLCAqaSk7ICsraSwgKytqKTsKLQlpZiAoaSA9PSBsYXN0MikKLQkgICAgcmV0dXJuIChzKTsKLSAgICB9Ci0gICAgcmV0dXJuIChsYXN0MSk7Ci19Ci0KLS8vLyBcYnJpZWYgU2VhcmNoZXMgZm9yIHRoZSBmaXJzdCBvY2N1cmVuY2Ugb2YgXHAgY291bnQgXHAgdmFsdWVzIGluIFtmaXJzdCwgbGFzdCkKLS8vLyBcaW5ncm91cCBTZWFyY2hpbmdBbGdvcml0aG1zCi0vLy8gXGluZ3JvdXAgUHJlZGljYXRlQWxnb3JpdGhtcwotdGVtcGxhdGUgPHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFtZSBULCB0eXBlbmFtZSBCaW5hcnlQcmVkaWNhdGU+Ci1JdGVyYXRvciBzZWFyY2hfbiAoSXRlcmF0b3IgZmlyc3QsIEl0ZXJhdG9yIGxhc3QsIHNpemVfdCBjb3VudCwgY29uc3QgVCYgdmFsdWUsIEJpbmFyeVByZWRpY2F0ZSBjb21wKQotewotICAgIHNpemVfdCBuID0gMDsKLSAgICBmb3IgKDsgZmlyc3QgIT0gbGFzdDsgKytmaXJzdCkgewotCWlmICghY29tcCAoKmZpcnN0LCB2YWx1ZSkpCi0JICAgIG4gPSAwOwotCWVsc2UgaWYgKCsrbiA9PSBjb3VudCkKLQkgICAgcmV0dXJuIChmaXJzdCAtIC0tbik7Ci0gICAgfQotICAgIHJldHVybiAobGFzdCk7Ci19Ci0KLS8vLyBcYnJpZWYgU2VhcmNoZXMgW2ZpcnN0MSxsYXN0MSkgZm9yIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIGFuIGVsZW1lbnQgZnJvbSBbZmlyc3QyLGxhc3QyKQotLy8vIFxpbmdyb3VwIFNlYXJjaGluZ0FsZ29yaXRobXMKLS8vLyBcaW5ncm91cCBQcmVkaWNhdGVBbGdvcml0aG1zCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyYXRvciwgdHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBCaW5hcnlQcmVkaWNhdGU+Ci1JbnB1dEl0ZXJhdG9yIGZpbmRfZmlyc3Rfb2YgKElucHV0SXRlcmF0b3IgZmlyc3QxLCBJbnB1dEl0ZXJhdG9yIGxhc3QxLCBGb3J3YXJkSXRlcmF0b3IgZmlyc3QyLCBGb3J3YXJkSXRlcmF0b3IgbGFzdDIsIEJpbmFyeVByZWRpY2F0ZSBjb21wKQotewotICAgIGZvciAoOyBmaXJzdDEgIT0gbGFzdDE7ICsrZmlyc3QxKQotCWZvciAoRm9yd2FyZEl0ZXJhdG9yIGkgPSBmaXJzdDI7IGkgIT0gbGFzdDI7ICsraSkKLQkgICAgaWYgKGNvbXAgKCpmaXJzdDEsICppKSkKLQkJcmV0dXJuIChmaXJzdDEpOwotICAgIHJldHVybiAoZmlyc3QxKTsKLX0KLQotLy8vIFxicmllZiBSZXR1cm5zIHRydWUgaWYgW2ZpcnN0MixsYXN0MikgaXMgYSBzdWJzZXQgb2YgW2ZpcnN0MSxsYXN0MSkKLS8vLyBcaW5ncm91cCBDb25kaXRpb25BbGdvcml0aG1zCi0vLy8gXGluZ3JvdXAgU2V0QWxnb3JpdGhtcwotLy8vIFxpbmdyb3VwIFByZWRpY2F0ZUFsZ29yaXRobXMKLXRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yMSwgdHlwZW5hbWUgSW5wdXRJdGVyYXRvcjIsIHR5cGVuYW1lIFN0cmljdFdlYWtPcmRlcmluZz4KLWJvb2wgaW5jbHVkZXMgKElucHV0SXRlcmF0b3IxIGZpcnN0MSwgSW5wdXRJdGVyYXRvcjEgbGFzdDEsIElucHV0SXRlcmF0b3IyIGZpcnN0MiwgSW5wdXRJdGVyYXRvcjIgbGFzdDIsIFN0cmljdFdlYWtPcmRlcmluZyBjb21wKQotewotICAgIGZvciAoOyAoZmlyc3QxICE9IGxhc3QxKSAmIChmaXJzdDIgIT0gbGFzdDIpOyArK2ZpcnN0MSkgewotCWlmIChjb21wICgqZmlyc3QyLCAqZmlyc3QxKSkKLQkgICAgcmV0dXJuIChmYWxzZSk7Ci0JZmlyc3QyICs9ICFjb21wICgqZmlyc3QxLCAqZmlyc3QyKTsKLSAgICB9Ci0gICAgcmV0dXJuIChmaXJzdDIgPT0gbGFzdDIpOwotfQotCi0vLy8gXGJyaWVmIE1lcmdlcyBbZmlyc3QxLGxhc3QxKSB3aXRoIFtmaXJzdDIsbGFzdDIpCi0vLy8KLS8vLyBSZXN1bHQgd2lsbCBjb250YWluIGV2ZXJ5IGVsZW1lbnQgdGhhdCBpcyBpbiBlaXRoZXIgc2V0LiBJZiBkdXBsaWNhdGUKLS8vLyBlbGVtZW50cyBhcmUgcHJlc2VudCwgbWF4KG4sbSkgaXMgcGxhY2VkIGluIHRoZSByZXN1bHQuCi0vLy8KLS8vLyBcaW5ncm91cCBTZXRBbGdvcml0aG1zCi0vLy8gXGluZ3JvdXAgUHJlZGljYXRlQWxnb3JpdGhtcwotdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcmF0b3IxLCB0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yMiwgdHlwZW5hbWUgT3V0cHV0SXRlcmF0b3IsIHR5cGVuYW1lIFN0cmljdFdlYWtPcmRlcmluZz4KLU91dHB1dEl0ZXJhdG9yIHNldF91bmlvbiAoSW5wdXRJdGVyYXRvcjEgZmlyc3QxLCBJbnB1dEl0ZXJhdG9yMSBsYXN0MSwgSW5wdXRJdGVyYXRvcjIgZmlyc3QyLCBJbnB1dEl0ZXJhdG9yMiBsYXN0MiwgT3V0cHV0SXRlcmF0b3IgcmVzdWx0LCBTdHJpY3RXZWFrT3JkZXJpbmcgY29tcCkKLXsKLSAgICBmb3IgKDsgKGZpcnN0MSAhPSBsYXN0MSkgJiAoZmlyc3QyICE9IGxhc3QyKTsgKytyZXN1bHQpIHsKLQlpZiAoY29tcCAoKmZpcnN0MiwgKmZpcnN0MSkpCi0JICAgICpyZXN1bHQgPSAqZmlyc3QyKys7Ci0JZWxzZSB7Ci0JICAgIGZpcnN0MiArPSAhY29tcCAoKmZpcnN0MSwgKmZpcnN0Mik7Ci0JICAgICpyZXN1bHQgPSAqZmlyc3QxKys7Ci0JfQotICAgIH0KLSAgICByZXR1cm4gKGNvcHkgKGZpcnN0MiwgbGFzdDIsIGNvcHkgKGZpcnN0MSwgbGFzdDEsIHJlc3VsdCkpKTsKLX0KLQotLy8vIFxicmllZiBDcmVhdGVzIGEgc2V0IGNvbnRhaW5pbmcgZWxlbWVudHMgc2hhcmVkIGJ5IHRoZSBnaXZlbiByYW5nZXMuCi0vLy8gXGluZ3JvdXAgU2V0QWxnb3JpdGhtcwotLy8vIFxpbmdyb3VwIFByZWRpY2F0ZUFsZ29yaXRobXMKLXRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yMSwgdHlwZW5hbWUgSW5wdXRJdGVyYXRvcjIsIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBTdHJpY3RXZWFrT3JkZXJpbmc+Ci1PdXRwdXRJdGVyYXRvciBzZXRfaW50ZXJzZWN0aW9uIChJbnB1dEl0ZXJhdG9yMSBmaXJzdDEsIElucHV0SXRlcmF0b3IxIGxhc3QxLCBJbnB1dEl0ZXJhdG9yMiBmaXJzdDIsIElucHV0SXRlcmF0b3IyIGxhc3QyLCBPdXRwdXRJdGVyYXRvciByZXN1bHQsIFN0cmljdFdlYWtPcmRlcmluZyBjb21wKQotewotICAgIHdoaWxlICgoZmlyc3QxICE9IGxhc3QxKSAmIChmaXJzdDIgIT0gbGFzdDIpKSB7Ci0JYm9vbCBiMWdlMiA9ICFjb21wICgqZmlyc3QxLCAqZmlyc3QyKSwgYjJnZTEgPSAhY29tcCAoKmZpcnN0MiwgKmZpcnN0MSk7Ci0JaWYgKGIxZ2UyICYgYjJnZTEpCi0JICAgICpyZXN1bHQrKyA9ICpmaXJzdDE7Ci0JZmlyc3QxICs9IGIyZ2UxOwotCWZpcnN0MiArPSBiMWdlMjsKLSAgICB9Ci0gICAgcmV0dXJuIChyZXN1bHQpOwotfQotCi0vLy8gXGJyaWVmIFJlbW92ZXMgZnJvbSBbZmlyc3QxLGxhc3QxKSBlbGVtZW50cyBwcmVzZW50IGluIFtmaXJzdDIsbGFzdDIpCi0vLy8gXGluZ3JvdXAgU2V0QWxnb3JpdGhtcwotLy8vIFxpbmdyb3VwIFByZWRpY2F0ZUFsZ29yaXRobXMKLXRlbXBsYXRlIDx0eXBlbmFtZSBJbnB1dEl0ZXJhdG9yMSwgdHlwZW5hbWUgSW5wdXRJdGVyYXRvcjIsIHR5cGVuYW1lIE91dHB1dEl0ZXJhdG9yLCB0eXBlbmFtZSBTdHJpY3RXZWFrT3JkZXJpbmc+Ci1PdXRwdXRJdGVyYXRvciBzZXRfZGlmZmVyZW5jZSAoSW5wdXRJdGVyYXRvcjEgZmlyc3QxLCBJbnB1dEl0ZXJhdG9yMSBsYXN0MSwgSW5wdXRJdGVyYXRvcjIgZmlyc3QyLCBJbnB1dEl0ZXJhdG9yMiBsYXN0MiwgT3V0cHV0SXRlcmF0b3IgcmVzdWx0LCBTdHJpY3RXZWFrT3JkZXJpbmcgY29tcCkKLXsKLSAgICB3aGlsZSAoKGZpcnN0MSAhPSBsYXN0MSkgJiAoZmlyc3QyICE9IGxhc3QyKSkgewotCWJvb2wgYjFnZTIgPSAhY29tcCAoKmZpcnN0MSwgKmZpcnN0MiksIGIyZ2UxID0gIWNvbXAgKCpmaXJzdDIsICpmaXJzdDEpOwotCWlmICghYjFnZTIpCi0JICAgICpyZXN1bHQrKyA9ICpmaXJzdDE7Ci0JZmlyc3QxICs9IGIyZ2UxOwotCWZpcnN0MiArPSBiMWdlMjsKLSAgICB9Ci0gICAgcmV0dXJuIChjb3B5IChmaXJzdDEsIGxhc3QxLCByZXN1bHQpKTsKLX0KLQotLy8vIFxicmllZiBQZXJmb3JtcyB1bmlvbiBvZiBzZXRzIEEtQiBhbmQgQi1BLgotLy8vIFxpbmdyb3VwIFNldEFsZ29yaXRobXMKLS8vLyBcaW5ncm91cCBQcmVkaWNhdGVBbGdvcml0aG1zCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyYXRvcjEsIHR5cGVuYW1lIElucHV0SXRlcmF0b3IyLCB0eXBlbmFtZSBPdXRwdXRJdGVyYXRvciwgdHlwZW5hbWUgU3RyaWN0V2Vha09yZGVyaW5nPgotT3V0cHV0SXRlcmF0b3Igc2V0X3N5bW1ldHJpY19kaWZmZXJlbmNlIChJbnB1dEl0ZXJhdG9yMSBmaXJzdDEsIElucHV0SXRlcmF0b3IxIGxhc3QxLCBJbnB1dEl0ZXJhdG9yMiBmaXJzdDIsIElucHV0SXRlcmF0b3IyIGxhc3QyLCBPdXRwdXRJdGVyYXRvciByZXN1bHQsIFN0cmljdFdlYWtPcmRlcmluZyBjb21wKQotewotICAgIHdoaWxlICgoZmlyc3QxICE9IGxhc3QxKSAmIChmaXJzdDIgIT0gbGFzdDIpKSB7Ci0JYm9vbCBiMWwyID0gY29tcCAoKmZpcnN0MSwgKmZpcnN0MiksIGIybDEgPSBjb21wICgqZmlyc3QyLCAqZmlyc3QxKTsKLQlpZiAoYjFsMikKLQkgICAgKnJlc3VsdCsrID0gKmZpcnN0MTsKLQllbHNlIGlmIChiMmwxKQotCSAgICAqcmVzdWx0KysgPSAqZmlyc3QyOwotCWZpcnN0MSArPSAhYjJsMTsKLQlmaXJzdDIgKz0gIWIxbDI7Ci0gICAgfQotICAgIHJldHVybiAoY29weSAoZmlyc3QyLCBsYXN0MiwgY29weSAoZmlyc3QxLCBsYXN0MSwgcmVzdWx0KSkpOwotfQotCi0vLy8gXGJyaWVmIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gcmFuZ2UgaXMgc29ydGVkLgotLy8vIFxpbmdyb3VwIENvbmRpdGlvbkFsZ29yaXRobXMKLS8vLyBcaW5ncm91cCBQcmVkaWNhdGVBbGdvcml0aG1zCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBTdHJpY3RXZWFrT3JkZXJpbmc+Ci1ib29sIGlzX3NvcnRlZCAoRm9yd2FyZEl0ZXJhdG9yIGZpcnN0LCBGb3J3YXJkSXRlcmF0b3IgbGFzdCwgU3RyaWN0V2Vha09yZGVyaW5nIGNvbXApCi17Ci0gICAgZm9yIChGb3J3YXJkSXRlcmF0b3IgaSA9IGZpcnN0OyArK2kgPCBsYXN0OyArK2ZpcnN0KQotCWlmIChjb21wICgqaSwgKmZpcnN0KSkKLQkgICAgcmV0dXJuIChmYWxzZSk7Ci0gICAgcmV0dXJuICh0cnVlKTsKLX0KLQotLy8vIFxicmllZiBDb21wYXJlcyB0d28gZ2l2ZW4gY29udGFpbmVycyBsaWtlIHN0cmNtcCBjb21wYXJlcyBzdHJpbmdzLgotLy8vIFxpbmdyb3VwIENvbmRpdGlvbkFsZ29yaXRobXMKLS8vLyBcaW5ncm91cCBQcmVkaWNhdGVBbGdvcml0aG1zCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSW5wdXRJdGVyYXRvcjEsIHR5cGVuYW1lIElucHV0SXRlcmF0b3IyLCB0eXBlbmFtZSBCaW5hcnlQcmVkaWNhdGU+Ci1ib29sIGxleGljb2dyYXBoaWNhbF9jb21wYXJlIChJbnB1dEl0ZXJhdG9yMSBmaXJzdDEsIElucHV0SXRlcmF0b3IxIGxhc3QxLCBJbnB1dEl0ZXJhdG9yMiBmaXJzdDIsIElucHV0SXRlcmF0b3IyIGxhc3QyLCBCaW5hcnlQcmVkaWNhdGUgY29tcCkKLXsKLSAgICBmb3IgKDsgKGZpcnN0MSAhPSBsYXN0MSkgJiAoZmlyc3QyICE9IGxhc3QyKTsgKytmaXJzdDEsICsrZmlyc3QyKSB7Ci0JaWYgKGNvbXAgKCpmaXJzdDEsICpmaXJzdDIpKQotCSAgICByZXR1cm4gKHRydWUpOwotCWlmIChjb21wICgqZmlyc3QyLCAqZmlyc3QxKSkKLQkgICAgcmV0dXJuIChmYWxzZSk7Ci0gICAgfQotICAgIHJldHVybiAoKGZpcnN0MSA9PSBsYXN0MSkgJiAoZmlyc3QyICE9IGxhc3QyKSk7Ci19Ci0KLS8vLyBcYnJpZWYgQ3JlYXRlcyB0aGUgbmV4dCBsZXhpY29ncmFwaGljYWwgcGVybXV0YXRpb24gb2YgW2ZpcnN0LGxhc3QpLgotLy8vIFJldHVybnMgZmFsc2UgaWYgbm8gZnVydGhlciBwZXJtdXRhdGlvbnMgY2FuIGJlIGNyZWF0ZWQuCi0vLy8gXGluZ3JvdXAgR2VuZXJhdG9yQWxnb3JpdGhtcwotLy8vIFxpbmdyb3VwIFByZWRpY2F0ZUFsZ29yaXRobXMKLXRlbXBsYXRlIDx0eXBlbmFtZSBCaWRpcmVjdGlvbmFsSXRlcmF0b3IsIHR5cGVuYW1lIFN0cmljdFdlYWtPcmRlcmluZz4KLWJvb2wgbmV4dF9wZXJtdXRhdGlvbiAoQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGZpcnN0LCBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgbGFzdCwgU3RyaWN0V2Vha09yZGVyaW5nIGNvbXApCi17Ci0gICAgaWYgKGRpc3RhbmNlIChmaXJzdCwgbGFzdCkgPCAyKQotCXJldHVybiAoZmFsc2UpOwotICAgIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBpID0gbGFzdDsKLSAgICBmb3IgKC0taTsgaSAhPSBmaXJzdDsgKSB7Ci0JLS1pOwotCWlmIChjb21wIChpWzBdLCBpWzFdKSkgewotCSAgICBCaWRpcmVjdGlvbmFsSXRlcmF0b3IgaiA9IGxhc3Q7Ci0JICAgIHdoaWxlICghY29tcCAoKmksICotLWopKTsKLQkgICAgaXRlcl9zd2FwIChpLCBqKTsKLQkgICAgcmV2ZXJzZSAoaSArIDEsIGxhc3QpOwotCSAgICByZXR1cm4gKHRydWUpOwotCX0KLSAgICB9Ci0gICAgcmV2ZXJzZSAoZmlyc3QsIGxhc3QpOwotICAgIHJldHVybiAoZmFsc2UpOwotfQotCi0vLy8gXGJyaWVmIENyZWF0ZXMgdGhlIHByZXZpb3VzIGxleGljb2dyYXBoaWNhbCBwZXJtdXRhdGlvbiBvZiBbZmlyc3QsbGFzdCkuCi0vLy8gUmV0dXJucyBmYWxzZSBpZiBubyBmdXJ0aGVyIHBlcm11dGF0aW9ucyBjYW4gYmUgY3JlYXRlZC4KLS8vLyBcaW5ncm91cCBHZW5lcmF0b3JBbGdvcml0aG1zCi0vLy8gXGluZ3JvdXAgUHJlZGljYXRlQWxnb3JpdGhtcwotdGVtcGxhdGUgPHR5cGVuYW1lIEJpZGlyZWN0aW9uYWxJdGVyYXRvciwgdHlwZW5hbWUgU3RyaWN0V2Vha09yZGVyaW5nPgotYm9vbCBwcmV2X3Blcm11dGF0aW9uIChCaWRpcmVjdGlvbmFsSXRlcmF0b3IgZmlyc3QsIEJpZGlyZWN0aW9uYWxJdGVyYXRvciBsYXN0LCBTdHJpY3RXZWFrT3JkZXJpbmcgY29tcCkKLXsKLSAgICBpZiAoZGlzdGFuY2UgKGZpcnN0LCBsYXN0KSA8IDIpCi0JcmV0dXJuIChmYWxzZSk7Ci0gICAgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGkgPSBsYXN0OwotICAgIGZvciAoLS1pOyBpICE9IGZpcnN0OyApIHsKLQktLWk7Ci0JaWYgKGNvbXAoaVsxXSwgaVswXSkpIHsKLQkgICAgQmlkaXJlY3Rpb25hbEl0ZXJhdG9yIGogPSBsYXN0OwotCSAgICB3aGlsZSAoIWNvbXAgKCotLWosICppKSk7Ci0JICAgIGl0ZXJfc3dhcCAoaSwgaik7Ci0JICAgIHJldmVyc2UgKGkgKyAxLCBsYXN0KTsKLQkgICAgcmV0dXJuICh0cnVlKTsKLQl9Ci0gICAgfQotICAgIHJldmVyc2UgKGZpcnN0LCBsYXN0KTsKLSAgICByZXR1cm4gKGZhbHNlKTsKLX0KLQotLy8vIFxicmllZiBSZXR1cm5zIGl0ZXJhdG9yIHRvIHRoZSBtYXggZWxlbWVudCBpbiBbZmlyc3QsbGFzdCkKLS8vLyBcaW5ncm91cCBTZWFyY2hpbmdBbGdvcml0aG1zCi0vLy8gXGluZ3JvdXAgUHJlZGljYXRlQWxnb3JpdGhtcwotdGVtcGxhdGUgPHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgQmluYXJ5UHJlZGljYXRlPgotaW5saW5lIEZvcndhcmRJdGVyYXRvciBtYXhfZWxlbWVudCAoRm9yd2FyZEl0ZXJhdG9yIGZpcnN0LCBGb3J3YXJkSXRlcmF0b3IgbGFzdCwgQmluYXJ5UHJlZGljYXRlIGNvbXApCi17Ci0gICAgRm9yd2FyZEl0ZXJhdG9yIHJlc3VsdCA9IGZpcnN0OwotICAgIGZvciAoOyBmaXJzdCAhPSBsYXN0OyArK2ZpcnN0KQotCWlmIChjb21wICgqcmVzdWx0LCAqZmlyc3QpKQotCSAgICByZXN1bHQgPSBmaXJzdDsKLSAgICByZXR1cm4gKHJlc3VsdCk7Ci19Ci0KLS8vLyBcYnJpZWYgUmV0dXJucyBpdGVyYXRvciB0byB0aGUgbWluIGVsZW1lbnQgaW4gW2ZpcnN0LGxhc3QpCi0vLy8gXGluZ3JvdXAgU2VhcmNoaW5nQWxnb3JpdGhtcwotLy8vIFxpbmdyb3VwIFByZWRpY2F0ZUFsZ29yaXRobXMKLXRlbXBsYXRlIDx0eXBlbmFtZSBGb3J3YXJkSXRlcmF0b3IsIHR5cGVuYW1lIEJpbmFyeVByZWRpY2F0ZT4KLWlubGluZSBGb3J3YXJkSXRlcmF0b3IgbWluX2VsZW1lbnQgKEZvcndhcmRJdGVyYXRvciBmaXJzdCwgRm9yd2FyZEl0ZXJhdG9yIGxhc3QsIEJpbmFyeVByZWRpY2F0ZSBjb21wKQotewotICAgIEZvcndhcmRJdGVyYXRvciByZXN1bHQgPSBmaXJzdDsKLSAgICBmb3IgKDsgZmlyc3QgIT0gbGFzdDsgKytmaXJzdCkKLQlpZiAoY29tcCAoKmZpcnN0LCAqcmVzdWx0KSkKLQkgICAgcmVzdWx0ID0gZmlyc3Q7Ci0gICAgcmV0dXJuIChyZXN1bHQpOwotfQotCi0vLy8gXGJyaWVmIE1ha2VzIFtmaXJzdCxtaWRkbGUpIGEgcGFydCBvZiB0aGUgc29ydGVkIGFycmF5LgotLy8vIENvbnRlbnRzIG9mIFttaWRkbGUsbGFzdCkgaXMgdW5kZWZpbmVkLiBUaGlzIGltcGxlbWVudGF0aW9uIGp1c3QgY2FsbHMgc3RhYmxlX3NvcnQuCi0vLy8gXGluZ3JvdXAgU29ydGluZ0FsZ29yaXRobXMKLS8vLyBcaW5ncm91cCBQcmVkaWNhdGVBbGdvcml0aG1zCi10ZW1wbGF0ZSA8dHlwZW5hbWUgUmFuZG9tQWNjZXNzSXRlcmF0b3IsIHR5cGVuYW1lIFN0cmljdFdlYWtPcmRlcmluZz4KLWlubGluZSB2b2lkIHBhcnRpYWxfc29ydCAoUmFuZG9tQWNjZXNzSXRlcmF0b3IgZmlyc3QsIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yLCBSYW5kb21BY2Nlc3NJdGVyYXRvciBsYXN0LCBTdHJpY3RXZWFrT3JkZXJpbmcgY29tcCkKLXsKLSAgICBzdGFibGVfc29ydCAoZmlyc3QsIGxhc3QsIGNvbXApOwotfQotCi0vLy8gXGJyaWVmIExpa2UgcGFydGlhbF9zb3J0LCBidXQgb3V0cHV0cyB0byBbcmVzdWx0X2ZpcnN0LHJlc3VsdF9sYXN0KQotLy8vIFxpbmdyb3VwIFNvcnRpbmdBbGdvcml0aG1zCi0vLy8gXGluZ3JvdXAgUHJlZGljYXRlQWxnb3JpdGhtcwotdGVtcGxhdGUgPHR5cGVuYW1lIElucHV0SXRlcmF0b3IsIHR5cGVuYW1lIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yLCB0eXBlbmFtZSBTdHJpY3RXZWFrT3JkZXJpbmc+Ci1SYW5kb21BY2Nlc3NJdGVyYXRvciBwYXJ0aWFsX3NvcnRfY29weSAoSW5wdXRJdGVyYXRvciBmaXJzdCwgSW5wdXRJdGVyYXRvciBsYXN0LCBSYW5kb21BY2Nlc3NJdGVyYXRvciByZXN1bHRfZmlyc3QsIFJhbmRvbUFjY2Vzc0l0ZXJhdG9yIHJlc3VsdF9sYXN0LCBTdHJpY3RXZWFrT3JkZXJpbmcgY29tcCkKLXsKLSAgICBSYW5kb21BY2Nlc3NJdGVyYXRvciByZW5kID0gcmVzdWx0X2ZpcnN0OwotICAgIGZvciAoOyBmaXJzdCAhPSBsYXN0OyArK2ZpcnN0KSB7Ci0JUmFuZG9tQWNjZXNzSXRlcmF0b3IgaSA9IHJlc3VsdF9maXJzdDsKLQlmb3IgKDsgaSAhPSByZW5kICYmIGNvbXAgKCppLCAqZmlyc3QpOyArK2kpOwotCWlmIChpID09IHJlc3VsdF9sYXN0KQotCSAgICBjb250aW51ZTsKLQlyZW5kICs9IChyZW5kIDwgcmVzdWx0X2xhc3QpOwotCWNvcHlfYmFja3dhcmQgKGksIHJlbmQgLSAxLCByZW5kKTsKLQkqaSA9ICpmaXJzdDsKLSAgICB9Ci0gICAgcmV0dXJuIChyZW5kKTsKLX0KLQotLy8vIFxicmllZiBMaWtlIFxyZWYgcGFydGl0aW9uLCBidXQgcHJlc2VydmVzIGVxdWFsIGVsZW1lbnQgb3JkZXIuCi0vLy8gXGluZ3JvdXAgU29ydGluZ0FsZ29yaXRobXMKLS8vLyBcaW5ncm91cCBQcmVkaWNhdGVBbGdvcml0aG1zCi10ZW1wbGF0ZSA8dHlwZW5hbWUgRm9yd2FyZEl0ZXJhdG9yLCB0eXBlbmFtZSBQcmVkaWNhdGU+Ci1Gb3J3YXJkSXRlcmF0b3Igc3RhYmxlX3BhcnRpdGlvbiAoRm9yd2FyZEl0ZXJhdG9yIGZpcnN0LCBGb3J3YXJkSXRlcmF0b3IgbGFzdCwgUHJlZGljYXRlIHByZWQpCi17Ci0gICAgaWYgKGZpcnN0ID09IGxhc3QpCi0JcmV0dXJuIChmaXJzdCk7Ci0gICAgRm9yd2FyZEl0ZXJhdG9yIGwsIHIsIG0gPSBhZHZhbmNlIChmaXJzdCwgZGlzdGFuY2UgKGZpcnN0LCBsYXN0KSAvIDIpOwotICAgIGlmIChmaXJzdCA9PSBtKQotCXJldHVybiAocHJlZCgqZmlyc3QpID8gbGFzdCA6IGZpcnN0KTsKLSAgICBsID0gc3RhYmxlX3BhcnRpdGlvbiAoZmlyc3QsIG0sIHByZWQpOwotICAgIHIgPSBzdGFibGVfcGFydGl0aW9uIChtLCBsYXN0LCBwcmVkKTsKLSAgICByb3RhdGUgKGwsIG0sIHIpOwotICAgIHJldHVybiAoYWR2YW5jZSAobCwgZGlzdGFuY2UgKG0sIHIpKSk7Ci19Ci0KLS8vLyBcYnJpZWYgU3BsaXRzIFtmaXJzdCxsYXN0KSBpbiB0d28gYnkgXHAgcHJlZC4KLS8vLwotLy8vIENyZWF0ZXMgdHdvIHJhbmdlcyBbZmlyc3QsbWlkZGxlKSBhbmQgW21pZGRsZSxsYXN0KSwgd2hlcmUgZXZlcnkgZWxlbWVudAotLy8vIGluIHRoZSBmb3JtZXIgaXMgbGVzcyB0aGFuIGV2ZXJ5IGVsZW1lbnQgaW4gdGhlIGxhdHRlci4KLS8vLyBUaGUgcmV0dXJuIHZhbHVlIGlzIG1pZGRsZS4KLS8vLwotLy8vIFxpbmdyb3VwIFNvcnRpbmdBbGdvcml0aG1zCi0vLy8gXGluZ3JvdXAgUHJlZGljYXRlQWxnb3JpdGhtcwotdGVtcGxhdGUgPHR5cGVuYW1lIEZvcndhcmRJdGVyYXRvciwgdHlwZW5hbWUgUHJlZGljYXRlPgotaW5saW5lIEZvcndhcmRJdGVyYXRvciBwYXJ0aXRpb24gKEZvcndhcmRJdGVyYXRvciBmaXJzdCwgRm9yd2FyZEl0ZXJhdG9yIGxhc3QsIFByZWRpY2F0ZSBwcmVkKQotewotICAgIHJldHVybiAoc3RhYmxlX3BhcnRpdGlvbiAoZmlyc3QsIGxhc3QsIHByZWQpKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgdXN0bAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdXF1ZXVlLmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91cXVldWUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTllZWY4MC4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91cXVldWUuaAorKysgL2Rldi9udWxsCkBAIC0xLDcxICswLDAgQEAKLS8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB1c3RsIGxpYnJhcnksIGFuIFNUTCBpbXBsZW1lbnRhdGlvbi4KLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgYnkgTWlrZSBTaGFyb3YgPG1zaGFyb3ZAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotLy8gVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KLS8vCi0vLyB1cXVldWUuaAotLy8KLQotI2lmbmRlZiBVUVVFVUVfSF8yN0YwMUZEQjBENTlCNzUyNzdFMEU1QzQxQUJDNkI1QgotI2RlZmluZSBVUVVFVUVfSF8yN0YwMUZEQjBENTlCNzUyNzdFMEU1QzQxQUJDNkI1QgotCi1uYW1lc3BhY2UgdXN0bCB7Ci0KLS8vLyBcY2xhc3MgcXVldWUgdXF1ZXVlLmggdXN0bC5oCi0vLy8gXGluZ3JvdXAgU2VxdWVuY2VzCi0vLy8KLS8vLyBcYnJpZWYgUXVldWUgYWRhcHRlciB0byB1U1RMIGNvbnRhaW5lcnMuCi0vLy8KLS8vLyBUaGUgbW9zdCBlZmZpY2llbnQgd2F5IHRvIHVzZSB0aGlzIGltcGxlbWVudGF0aW9uIGlzIHRvIGZpbGwgdGhlIHF1ZXVlCi0vLy8gYW5kIHRoZSBjb21wbGV0ZWx5IGVtcHR5IGl0IGJlZm9yZSBmaWxsaW5nIGFnYWluLgotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgU2VxdWVuY2U+Ci1jbGFzcyBxdWV1ZSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBTZXF1ZW5jZTo6dmFsdWVfdHlwZQl2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgU2VxdWVuY2U6OnNpemVfdHlwZQlzaXplX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBTZXF1ZW5jZTo6ZGlmZmVyZW5jZV90eXBlCWRpZmZlcmVuY2VfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFNlcXVlbmNlOjpyZWZlcmVuY2UJcmVmZXJlbmNlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgU2VxdWVuY2U6OmNvbnN0X3JlZmVyZW5jZQljb25zdF9yZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBTZXF1ZW5jZTo6cG9pbnRlcgkJcG9pbnRlcjsKLXB1YmxpYzoKLSAgICBpbmxpbmUJCQlxdWV1ZSAodm9pZCkJCQk6IG1fU3RvcmFnZSAoKSwgbV9Gcm9udCAoMCkgeyB9Ci0gICAgZXhwbGljaXQgaW5saW5lCQlxdWV1ZSAoY29uc3QgU2VxdWVuY2UmIHMpCTogbV9TdG9yYWdlIChzKSwgbV9Gcm9udCAoMCkgeyB9Ci0gICAgaW5saW5lIHNpemVfdHlwZQkJc2l6ZSAodm9pZCkgY29uc3QJCXsgcmV0dXJuIChtX1N0b3JhZ2Uuc2l6ZSgpIC0gbV9Gcm9udCk7IH0KLSAgICBpbmxpbmUgYm9vbAkJCWVtcHR5ICh2b2lkKSBjb25zdAkJeyByZXR1cm4gKCFzaXplKCkpOyB9Ci0gICAgaW5saW5lIHJlZmVyZW5jZQkJZnJvbnQgKHZvaWQpCQkJeyByZXR1cm4gKG1fU3RvcmFnZSBbbV9Gcm9udF0pOyB9Ci0gICAgaW5saW5lIGNvbnN0X3JlZmVyZW5jZQlmcm9udCAodm9pZCkgY29uc3QJCXsgcmV0dXJuIChtX1N0b3JhZ2UgW21fRnJvbnRdKTsgfQotICAgIGlubGluZSByZWZlcmVuY2UJCWJhY2sgKHZvaWQpCQkJeyByZXR1cm4gKG1fU3RvcmFnZS5iYWNrKCkpOyB9Ci0gICAgaW5saW5lIGNvbnN0X3JlZmVyZW5jZQliYWNrICh2b2lkKSBjb25zdAkJeyByZXR1cm4gKG1fU3RvcmFnZS5iYWNrKCkpOyB9Ci0gICAgaW5saW5lIHZvaWQJCQlwdXNoIChjb25zdCB2YWx1ZV90eXBlJiB2KTsKLSAgICBpbmxpbmUgdm9pZAkJCXBvcCAodm9pZCk7Ci0gICAgaW5saW5lIGJvb2wJCQlvcGVyYXRvcj09IChjb25zdCBxdWV1ZSYgcykJeyByZXR1cm4gKG1fU3RvcmFnZSA9PSBzLm1fU3RvcmFnZSAmJiBtX0Zyb250ID09IHMubV9Gcm9udCk7IH0KLSAgICBpbmxpbmUgYm9vbAkJCW9wZXJhdG9yPCAoY29uc3QgcXVldWUmIHMpCXsgcmV0dXJuIChzaXplKCkgPCBzLnNpemUoKSk7IH0KLXByaXZhdGU6Ci0gICAgU2VxdWVuY2UJCQltX1N0b3JhZ2U7CS8vLzwgV2hlcmUgdGhlIGRhdGEgYWN0dWFsbHkgaXMuCi0gICAgc2l6ZV90eXBlCQkJbV9Gcm9udDsJLy8vPCBJbmRleCBvZiB0aGUgZWxlbWVudCByZXR1cm5lZCBieSBuZXh0IHBvcC4KLX07Ci0KLS8vLyBQdXNoZXMgXHAgdiBvbiB0aGUgcXVldWUuCi10ZW1wbGF0ZSA8Y2xhc3MgU2VxdWVuY2U+Ci1pbmxpbmUgdm9pZCBxdWV1ZTxTZXF1ZW5jZT46OnB1c2ggKGNvbnN0IHZhbHVlX3R5cGUmIHYpCi17Ci0gICAgaWYgKG1fRnJvbnQpIHsKLQltX1N0b3JhZ2UuZXJhc2UgKG1fU3RvcmFnZS5iZWdpbigpLCBtX0Zyb250KTsKLQltX0Zyb250ID0gMDsKLSAgICB9Ci0gICAgbV9TdG9yYWdlLnB1c2hfYmFjayAodik7Ci19Ci0KLS8vLyBQb3BzIHRoZSB0b3Btb3N0IGVsZW1lbnQgZnJvbSB0aGUgcXVldWUuCi10ZW1wbGF0ZSA8Y2xhc3MgU2VxdWVuY2U+Ci1pbmxpbmUgdm9pZCBxdWV1ZTxTZXF1ZW5jZT46OnBvcCAodm9pZCkKLXsKLSAgICBpZiAoKyttX0Zyb250ID49IG1fU3RvcmFnZS5zaXplKCkpCi0JbV9TdG9yYWdlLnJlc2l6ZSAobV9Gcm9udCA9IDApOwotfQotCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91c2V0LmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91c2V0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1OGQ0YjAuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdXNldC5oCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHVzdGwgbGlicmFyeSwgYW4gU1RMIGltcGxlbWVudGF0aW9uLgotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwNSBieSBNaWtlIFNoYXJvdiA8bXNoYXJvdkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0vLyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgotLy8KLS8vIHVzZXQuaAotLy8KLQotI2lmbmRlZiBVU0VUX0hfNDU1NDNGNTE2RTAyQTg3QTNGQ0VBNTAyNDA1MkE2RjUKLSNkZWZpbmUgVVNFVF9IXzQ1NTQzRjUxNkUwMkE4N0EzRkNFQTUwMjQwNTJBNkY1Ci0KLSNpbmNsdWRlICJ1YXNzZXJ0LmgiCi0jaW5jbHVkZSAidXZlY3Rvci5oIgotCi1uYW1lc3BhY2UgdXN0bCB7Ci0KLS8vLyBcY2xhc3Mgc2V0IHVzZXQuaCB1c3RsLmgKLS8vLyBcaW5ncm91cCBTZXF1ZW5jZXMKLS8vLwotLy8vIFxicmllZiBVbmlxdWUgc29ydGVkIGNvbnRhaW5lci4gU29ydGVkIHZlY3RvciB3aXRoIGFsbCB2YWx1ZXMgdW5pcXVlLgotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWNsYXNzIHNldCA6IHB1YmxpYyB2ZWN0b3I8VD4gewotcHVibGljOgotICAgIHR5cGVkZWYgY29uc3Qgc2V0PFQ+JgkJCXJjc2VsZl90OwotICAgIHR5cGVkZWYgdmVjdG9yPFQ+CQkJCWJhc2VfY2xhc3M7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX2NsYXNzOjp2YWx1ZV90eXBlCQlrZXlfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfY2xhc3M6OnZhbHVlX3R5cGUJCWRhdGFfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfY2xhc3M6OnZhbHVlX3R5cGUJCXZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX2NsYXNzOjpzaXplX3R5cGUJCXNpemVfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfY2xhc3M6OnBvaW50ZXIJCQlwb2ludGVyOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV9jbGFzczo6Y29uc3RfcG9pbnRlcgkJY29uc3RfcG9pbnRlcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGJhc2VfY2xhc3M6OnJlZmVyZW5jZQkJcmVmZXJlbmNlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgYmFzZV9jbGFzczo6Y29uc3RfcmVmZXJlbmNlCQljb25zdF9yZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX2NsYXNzOjpjb25zdF9pdGVyYXRvcgkJY29uc3RfaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX2NsYXNzOjppdGVyYXRvcgkJaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX2NsYXNzOjpyZXZlcnNlX2l0ZXJhdG9yCXJldmVyc2VfaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBiYXNlX2NsYXNzOjpjb25zdF9yZXZlcnNlX2l0ZXJhdG9yCWNvbnN0X3JldmVyc2VfaXRlcmF0b3I7Ci1wdWJsaWM6Ci0gICAgaW5saW5lCQkJc2V0ICh2b2lkKQkJOiB2ZWN0b3I8VD4gKCkgeyB9Ci0gICAgZXhwbGljaXQgaW5saW5lCQlzZXQgKHNpemVfdHlwZSBuKQk6IHZlY3RvcjxUPiAobikgeyB9Ci0gICAgaW5saW5lCQkJc2V0IChyY3NlbGZfdCB2KQk6IHZlY3RvcjxUPiAodikgeyB9IAotICAgIGlubGluZQkJCXNldCAoY29uc3RfaXRlcmF0b3IgaTEsIGNvbnN0X2l0ZXJhdG9yIGkyKSA6IHZlY3RvcjxUPiAoKSB7IGluc2VydCAoaTEsIGkyKTsgfQotICAgIGlubGluZSByY3NlbGZfdAkJb3BlcmF0b3I9IChyY3NlbGZfdCB2KQl7IGJhc2VfY2xhc3M6Om9wZXJhdG9yPSAodik7IHJldHVybiAoKnRoaXMpOyB9Ci0gICAgaW5saW5lIHNpemVfdHlwZQkJc2l6ZSAodm9pZCkgY29uc3QJeyByZXR1cm4gKGJhc2VfY2xhc3M6OnNpemUoKSk7IH0KLSAgICBpbmxpbmUgaXRlcmF0b3IJCWJlZ2luICh2b2lkKQkJeyByZXR1cm4gKGJhc2VfY2xhc3M6OmJlZ2luKCkpOyB9Ci0gICAgaW5saW5lIGNvbnN0X2l0ZXJhdG9yCWJlZ2luICh2b2lkKSBjb25zdAl7IHJldHVybiAoYmFzZV9jbGFzczo6YmVnaW4oKSk7IH0KLSAgICBpbmxpbmUgaXRlcmF0b3IJCWVuZCAodm9pZCkJCXsgcmV0dXJuIChiYXNlX2NsYXNzOjplbmQoKSk7IH0KLSAgICBpbmxpbmUgY29uc3RfaXRlcmF0b3IJZW5kICh2b2lkKSBjb25zdAl7IHJldHVybiAoYmFzZV9jbGFzczo6ZW5kKCkpOyB9Ci0gICAgaW5saW5lIHZvaWQJCQlhc3NpZ24gKGNvbnN0X2l0ZXJhdG9yIGkxLCBjb25zdF9pdGVyYXRvciBpMikJeyBjbGVhcigpOyBpbnNlcnQgKGkxLCBpMik7IH0KLSAgICBpbmxpbmUgdm9pZAkJCXB1c2hfYmFjayAoY29uc3RfcmVmZXJlbmNlIHYpCXsgaW5zZXJ0ICh2KTsgfQotICAgIGlubGluZSBjb25zdF9pdGVyYXRvcglmaW5kIChjb25zdF9yZWZlcmVuY2UgdikgY29uc3QJeyByZXR1cm4gKGJpbmFyeV9zZWFyY2ggKGJlZ2luKCksIGVuZCgpLCB2KSk7IH0KLSAgICBpbmxpbmUgaXRlcmF0b3IJCWZpbmQgKGNvbnN0X3JlZmVyZW5jZSB2KQl7IHJldHVybiAoY29uc3RfY2FzdDxpdGVyYXRvcj4oY29uc3RfY2FzdDxyY3NlbGZfdD4oKnRoaXMpLmZpbmQgKHYpKSk7IH0KLSAgICBpdGVyYXRvcgkJCWluc2VydCAoY29uc3RfcmVmZXJlbmNlIHYpOwotICAgIGlubGluZSB2b2lkCQkJaW5zZXJ0IChjb25zdF9pdGVyYXRvciBpMSwgY29uc3RfaXRlcmF0b3IgaTIpOwotICAgIGlubGluZSB2b2lkCQkJZXJhc2UgKGNvbnN0X3JlZmVyZW5jZSB2KTsKLSAgICBpbmxpbmUgaXRlcmF0b3IJCWVyYXNlIChpdGVyYXRvciBlcCkJeyByZXR1cm4gKGJhc2VfY2xhc3M6OmVyYXNlIChlcCkpOyB9Ci0gICAgaW5saW5lIGl0ZXJhdG9yCQllcmFzZSAoaXRlcmF0b3IgZXAxLCBpdGVyYXRvciBlcDIpIHsgcmV0dXJuIChiYXNlX2NsYXNzOjplcmFzZSAoZXAxLCBlcDIpKTsgfQotICAgIGlubGluZSB2b2lkCQkJY2xlYXIgKHZvaWQpCQl7IGJhc2VfY2xhc3M6OmNsZWFyKCk7IH0KLX07Ci0KLS8vLyBJbnNlcnRzIFxwIHYgaW50byB0aGUgY29udGFpbmVyLCBtYWludGFpbmluZyB0aGUgc29ydCBvcmRlci4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdHlwZW5hbWUgc2V0PFQ+OjppdGVyYXRvciBzZXQ8VD46Omluc2VydCAoY29uc3RfcmVmZXJlbmNlIHYpCi17Ci0gICAgaXRlcmF0b3IgaXAgPSBsb3dlcl9ib3VuZCAoYmVnaW4oKSwgZW5kKCksIHYpOwotICAgIGlmIChpcCA9PSBlbmQoKSB8fCB2IDwgKmlwKQotCWlwID0gYmFzZV9jbGFzczo6aW5zZXJ0IChpcCwgdik7Ci0gICAgZWxzZQotCSppcCA9IHY7Ci0gICAgcmV0dXJuIChpcCk7Ci19Ci0KLS8vLyBJbnNlcnRzIHRoZSBjb250ZW50cyBvZiByYW5nZSBbaTEsaTIpCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXZvaWQgc2V0PFQ+OjppbnNlcnQgKGNvbnN0X2l0ZXJhdG9yIGkxLCBjb25zdF9pdGVyYXRvciBpMikKLXsKLSAgICBhc3NlcnQgKGkxIDw9IGkyKTsKLSAgICByZXNlcnZlIChzaXplKCkgKyBkaXN0YW5jZSAoaTEsIGkyKSk7Ci0gICAgZm9yICg7IGkxIDwgaTI7ICsraTEpCi0JcHVzaF9iYWNrICgqaTEpOwotfQotCi0vLy8gRXJhc2VzIHRoZSBlbGVtZW50IHdpdGggdmFsdWUgXHAgdi4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIHZvaWQgc2V0PFQ+OjplcmFzZSAoY29uc3RfcmVmZXJlbmNlIHYpCi17Ci0gICAgaXRlcmF0b3IgaXAgPSBmaW5kICh2KTsKLSAgICBpZiAoaXAgIT0gZW5kKCkpCi0JZXJhc2UgKGlwKTsKLX0KLQotCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91c3BlY2lhbC5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdXNwZWNpYWwuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGI4N2E1NC4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91c3BlY2lhbC5oCisrKyAvZGV2L251bGwKQEAgLTEsMjY3ICswLDAgQEAKLS8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB1c3RsIGxpYnJhcnksIGFuIFNUTCBpbXBsZW1lbnRhdGlvbi4KLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgYnkgTWlrZSBTaGFyb3YgPG1zaGFyb3ZAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotLy8gVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KLS8vCi0vLyB1c3BlY2lhbC5oCi0vLwotLy8gVGVtcGxhdGUgc3BlY2lhbGl6YXRpb25zIGZvciB1U1RMIGNsYXNzZXMuCi0vLwotCi0jaWZuZGVmIFVTUEVDSUFMX0hfOTQ3QURZT1UwQVJFM1lPVTJSRUFMTFk4QVJFNDRDRTAKLSNkZWZpbmUgVVNQRUNJQUxfSF85NDdBRFlPVTBBUkUzWU9VMlJFQUxMWThBUkU0NENFMAotCi0jaW5jbHVkZSAidWFzc2VydC5oIgotI2luY2x1ZGUgInV2ZWN0b3IuaCIKLSNpbmNsdWRlICJ1c3RyaW5nLmgiCi0jaW5jbHVkZSAidXNldC5oIgotI2luY2x1ZGUgInVtdWx0aXNldC5oIgotI2luY2x1ZGUgInViaXRzZXQuaCIKLSNpbmNsdWRlICJ1bGFhbGdvLmgiCi0jaW5jbHVkZSAidWN0cmFsZ28uaCIKLSNpbmNsdWRlICJ1ZnVuY3Rpb24uaCIKLSNpbmNsdWRlICJ1Y3Ryc3RybS5oIgotI2luY2x1ZGUgInNpc3RyZWFtLmgiCi0jaW5jbHVkZSA8Y3R5cGUuaD4KLQotbmFtZXNwYWNlIHVzdGwgewotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIEFsb2dyaXRobSBzcGVjaWFsaXphdGlvbnMgbm90IGluIHVzZSBieSB0aGUgbGlicmFyeSBjb2RlLgotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLXRlbXBsYXRlIDw+IGlubGluZSB2b2lkIHN3YXAgKGNtZW1saW5rJiBhLCBjbWVtbGluayYgYikJCQl7IGEuc3dhcCAoYik7IH0KLXRlbXBsYXRlIDw+IGlubGluZSB2b2lkIHN3YXAgKG1lbWxpbmsmIGEsIG1lbWxpbmsmIGIpCQkJeyBhLnN3YXAgKGIpOyB9Ci10ZW1wbGF0ZSA8PiBpbmxpbmUgdm9pZCBzd2FwIChtZW1ibG9jayYgYSwgbWVtYmxvY2smIGIpCQkJeyBhLnN3YXAgKGIpOyB9Ci10ZW1wbGF0ZSA8PiBpbmxpbmUgdm9pZCBzd2FwIChzdHJpbmcmIGEsIHN0cmluZyYgYikJCQl7IGEuc3dhcCAoYik7IH0KLSNkZWZpbmUgVEVNUExBVEVfU1dBUF9QU1BFQyh0eXBlLCB0ZW1wbGF0ZV9kZWNsKQlcCi10ZW1wbGF0ZV9kZWNsIGlubGluZSB2b2lkIHN3YXAgKHR5cGUmIGEsIHR5cGUmIGIpIHsgYS5zd2FwIChiKTsgfQotVEVNUExBVEVfU1dBUF9QU1BFQyAoVEVNUExBVEVfVFlQRTEgKHZlY3RvcixUKSwJCVRFTVBMQVRFX0RFQ0wxIChUKSkKLVRFTVBMQVRFX1NXQVBfUFNQRUMgKFRFTVBMQVRFX1RZUEUxIChzZXQsVCksCQlURU1QTEFURV9ERUNMMSAoVCkpCi1URU1QTEFURV9TV0FQX1BTUEVDIChURU1QTEFURV9UWVBFMSAobXVsdGlzZXQsVCksCVRFTVBMQVRFX0RFQ0wxIChUKSkKLVRFTVBMQVRFX1NXQVBfUFNQRUMgKFRFTVBMQVRFX1RZUEUyICh0dXBsZSxOLFQpLAlURU1QTEFURV9GVUxMX0RFQ0wyIChzaXplX3QsTix0eXBlbmFtZSxUKSkKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0vLyBTdHJlYW1hYmxlIGRlZmluaXRpb25zLiBOb3QgdXNlZCBpbiB0aGUgbGlicmFyeSBhbmQgcmVxdWlyZSBzdHJlYW1zLgotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vLS0tLXsgcGFpciB9LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLy8gXGJyaWVmIFJlYWRzIHBhaXIgXHAgcCBmcm9tIHN0cmVhbSBccCBpcy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci1pc3RyZWFtJiBvcGVyYXRvcj4+IChpc3RyZWFtJiBpcywgcGFpcjxUMSxUMj4mIHApCi17Ci0gICAgaXMgPj4gcC5maXJzdDsKLSAgICBpcy5hbGlnbiAoYWxpZ25vZihUMigpKSk7Ci0gICAgaXMgPj4gcC5zZWNvbmQ7Ci0gICAgaXMuYWxpZ24gKGFsaWdub2YoVDEoKSkpOwotICAgIHJldHVybiAoaXMpOwotfQotCi0vLy8gV3JpdGVzIHBhaXIgXHAgcCB0byBzdHJlYW0gXHAgb3MuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotb3N0cmVhbSYgb3BlcmF0b3I8PCAob3N0cmVhbSYgb3MsIGNvbnN0IHBhaXI8VDEsVDI+JiBwKQotewotICAgIG9zIDw8IHAuZmlyc3Q7Ci0gICAgb3MuYWxpZ24gKGFsaWdub2YoVDIoKSkpOwotICAgIG9zIDw8IHAuc2Vjb25kOwotICAgIG9zLmFsaWduIChhbGlnbm9mKFQxKCkpKTsKLSAgICByZXR1cm4gKG9zKTsKLX0KLQotLy8vIFdyaXRlcyBwYWlyIFxwIHAgdG8gc3RyZWFtIFxwIG9zLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLW9zdHJpbmdzdHJlYW0mIG9wZXJhdG9yPDwgKG9zdHJpbmdzdHJlYW0mIG9zLCBjb25zdCBwYWlyPFQxLFQyPiYgcCkKLXsKLSAgICBvcyA8PCAnKCcgPDwgcC5maXJzdCA8PCAnLCcgPDwgcC5zZWNvbmQgPDwgJyknOwotICAgIHJldHVybiAob3MpOwotfQotCi0vLy8gUmV0dXJucyB0aGUgd3JpdHRlbiBzaXplIG9mIHRoZSBvYmplY3QuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotaW5saW5lIHNpemVfdCBzdHJlYW1fc2l6ZV9vZiAoY29uc3QgcGFpcjxUMSxUMj4mIHYpCi17Ci0gICAgcmV0dXJuIChBbGlnbiAoc3RyZWFtX3NpemVfb2Yodi5maXJzdCksIGFsaWdub2YoVDIoKSkpICsKLQkgICAgQWxpZ24gKHN0cmVhbV9zaXplX29mKHYuc2Vjb25kKSwgYWxpZ25vZihUMSgpKSkpOwotfQotCi0vLy8gXGJyaWVmIFRha2VzIGEgcGFpciBhbmQgcmV0dXJucyBwYWlyLmZpcnN0Ci0vLy8gVGhpcyBpcyBhbiBleHRlbnNpb24sIGF2YWlsYWJsZSBpbiB1U1RMIGFuZCB0aGUgU0dJIFNUTC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBQYWlyPiBzdHJ1Y3Qgc2VsZWN0MXN0IDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPFBhaXIsdHlwZW5hbWUgUGFpcjo6Zmlyc3RfdHlwZT4gewotICAgIHR5cGVkZWYgdHlwZW5hbWUgUGFpcjo6Zmlyc3RfdHlwZSByZXN1bHRfdHlwZTsKLSAgICBpbmxpbmUgY29uc3QgcmVzdWx0X3R5cGUmCW9wZXJhdG9yKCkoY29uc3QgUGFpciYgYSkgY29uc3QgeyByZXR1cm4gKGEuZmlyc3QpOyB9Ci0gICAgaW5saW5lIHJlc3VsdF90eXBlJgkJb3BlcmF0b3IoKShQYWlyJiBhKSBjb25zdCB7IHJldHVybiAoYS5maXJzdCk7IH0KLX07Ci0KLS8vLyBcYnJpZWYgVGFrZXMgYSBwYWlyIGFuZCByZXR1cm5zIHBhaXIuc2Vjb25kCi0vLy8gVGhpcyBpcyBhbiBleHRlbnNpb24sIGF2YWlsYWJsZSBpbiB1U1RMIGFuZCB0aGUgU0dJIFNUTC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBQYWlyPiBzdHJ1Y3Qgc2VsZWN0Mm5kIDogcHVibGljIHVuYXJ5X2Z1bmN0aW9uPFBhaXIsdHlwZW5hbWUgUGFpcjo6c2Vjb25kX3R5cGU+IHsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFBhaXI6OnNlY29uZF90eXBlIHJlc3VsdF90eXBlOwotICAgIGlubGluZSBjb25zdCByZXN1bHRfdHlwZSYJb3BlcmF0b3IoKShjb25zdCBQYWlyJiBhKSBjb25zdCB7IHJldHVybiAoYS5zZWNvbmQpOyB9Ci0gICAgaW5saW5lIHJlc3VsdF90eXBlJgkJb3BlcmF0b3IoKShQYWlyJiBhKSBjb25zdCB7IHJldHVybiAoYS5zZWNvbmQpOyB9Ci19OwotCi0vLy8gXGJyaWVmIENvbnZlcnRzIGEgY29uc3RfaXRlcmF0b3IgcGFpciBpbnRvIGFuIGl0ZXJhdG9yIHBhaXIKLS8vLyBVc2VmdWwgZm9yIGNvbnZlcnRpbmcgcGFpciByYW5nZXMgcmV0dXJuZWQgYnkgZXF1YWxfcmFuZ2UsIGZvciBpbnN0YW5jZS4KLS8vLyBUaGlzIGlzIGFuIGV4dGVuc2lvbiwgYXZhaWxhYmxlIGluIHVTVEwuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyPgotaW5saW5lIHBhaXI8dHlwZW5hbWUgQ29udGFpbmVyOjppdGVyYXRvciwgdHlwZW5hbWUgQ29udGFpbmVyOjppdGVyYXRvcj4KLXVuY29uc3QgKGNvbnN0IHBhaXI8dHlwZW5hbWUgQ29udGFpbmVyOjpjb25zdF9pdGVyYXRvciwgdHlwZW5hbWUgQ29udGFpbmVyOjpjb25zdF9pdGVyYXRvcj4mIGksIENvbnRhaW5lciYgY3RyKQotewotICAgIGFzc2VydCAoaS5maXJzdCA+PSBjdHIuYmVnaW4oKSAmJiBpLmZpcnN0IDw9IGN0ci5lbmQoKSAmJiAidW5jb25zdCBhbGdvcml0aG0gbXVzdCBiZSBnaXZlbiBpdGVyYXRvcnMgZnJvbSB0aGUgYXJndW1lbnQgY29udGFpbmVyIik7Ci0gICAgcGFpcjx0eXBlbmFtZSBDb250YWluZXI6Oml0ZXJhdG9yLCB0eXBlbmFtZSBDb250YWluZXI6Oml0ZXJhdG9yPiByZXN1bHQ7Ci0gICAgcmVzdWx0LmZpcnN0ID0gY3RyLmJlZ2luKCkgKyAoaS5maXJzdCAtIGN0ci5iZWdpbigpKTsKLSAgICByZXN1bHQuc2Vjb25kID0gY3RyLmJlZ2luKCkgKyAoaS5zZWNvbmQgLSBjdHIuYmVnaW4oKSk7Ci0gICAgcmV0dXJuIChyZXN1bHQpOwotfQotCi0vLy0tLS17IHZlY3RvciB9LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotU1REX1RFTVBMQVRFX0NUUl9TVFJFQU1BQkxFIChURU1QTEFURV9UWVBFMSAodmVjdG9yLFQpLCBURU1QTEFURV9ERUNMMSAoVCkpCi0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIHNpemVfdCBhbGlnbm9mIChjb25zdCB2ZWN0b3I8VD4mKQotewotICAgIHR5cGVkZWYgdHlwZW5hbWUgdmVjdG9yPFQ+Ojp3cml0dGVuX3NpemVfdHlwZSB3cml0dGVuX3NpemVfdHlwZTsKLSAgICByZXR1cm4gKGFsaWdub2YgKHdyaXR0ZW5fc2l6ZV90eXBlKCkpKTsKLX0KLQotLy8tLS0teyBiaXRzZXQgfS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vLyBSZWFkcyBiaXRzZXQgXHAgdiBmcm9tIHN0cmVhbSBccCBpcy4KLXRlbXBsYXRlIDxzaXplX3QgU2l6ZT4KLWlubGluZSBpc3RyZWFtJiBvcGVyYXRvcj4+IChpc3RyZWFtJiBpcywgYml0c2V0PFNpemU+JiB2KQotewotICAgIHJldHVybiAobnJfY29udGFpbmVyX3JlYWQgKGlzLCB2KSk7Ci19Ci0KLS8vLyBXcml0ZXMgYml0c2V0IFxwIHYgaW50byBzdHJlYW0gXHAgb3MuCi10ZW1wbGF0ZSA8c2l6ZV90IFNpemU+Ci1pbmxpbmUgb3N0cmVhbSYgb3BlcmF0b3I8PCAob3N0cmVhbSYgb3MsIGNvbnN0IGJpdHNldDxTaXplPiYgdikKLXsKLSAgICByZXR1cm4gKG5yX2NvbnRhaW5lcl93cml0ZSAob3MsIHYpKTsKLX0KLQotLy8vIFdyaXRlcyBiaXRzZXQgXHAgdiBpbnRvIHN0cmVhbSBccCBvcy4KLXRlbXBsYXRlIDxzaXplX3QgU2l6ZT4KLWlubGluZSBvc3RyaW5nc3RyZWFtJiBvcGVyYXRvcjw8IChvc3RyaW5nc3RyZWFtJiBvcywgY29uc3QgYml0c2V0PFNpemU+JiB2KQotewotICAgIHJldHVybiAob3MgPDwgdi50b19zdHJpbmcoKSk7Ci19Ci0KLS8vLyBXcml0ZXMgYml0c2V0IFxwIHYgaW50byBzdHJlYW0gXHAgb3MuCi10ZW1wbGF0ZSA8c2l6ZV90IFNpemU+Ci1pc3RyaW5nc3RyZWFtJiBvcGVyYXRvcj4+IChpc3RyaW5nc3RyZWFtJiBpcywgYml0c2V0PFNpemU+JiB2KQotewotICAgIGNoYXIgYzsKLSAgICBmb3IgKGludCBpID0gU2l6ZTsgLS1pID49IDAgJiYgKGlzID4+IGMpLmdvb2QoKTspCi0Jdi5zZXQgKGksIGMgPT0gJzEnKTsKLSAgICByZXR1cm4gKGlzKTsKLX0KLQotLy8vIFJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyBuZWNlc3NhcnkgdG8gd3JpdGUgdGhpcyBvYmplY3QgdG8gYSBzdHJlYW0KLXRlbXBsYXRlIDxzaXplX3QgU2l6ZT4KLWlubGluZSBzaXplX3Qgc3RyZWFtX3NpemVfb2YgKGNvbnN0IGJpdHNldDxTaXplPiYgdikKLXsKLSAgICByZXR1cm4gKHYuY2FwYWNpdHkoKSAvIENIQVJfQklUKTsKLX0KLQotLy8tLS0teyB0dXBsZSB9LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVNURF9URU1QTEFURV9OUl9DVFJfU1RSRUFNQUJMRSAoCi0gICAgVEVNUExBVEVfVFlQRTIgKHR1cGxlLE4sVCksCi0gICAgVEVNUExBVEVfRlVMTF9ERUNMMiAoc2l6ZV90LE4sdHlwZW5hbWUsVCkKLSkKLQotdGVtcGxhdGUgPHNpemVfdCBOLCB0eXBlbmFtZSBUPgotc3RydWN0IG51bWVyaWNfbGltaXRzPHR1cGxlPE4sVD4gPiB7Ci0gICAgdHlwZWRlZiBudW1lcmljX2xpbWl0czxUPiB2YWx1ZV9saW1pdHM7Ci0gICAgc3RhdGljIGlubGluZSB0dXBsZTxOLFQ+IG1pbiAodm9pZCkJeyB0dXBsZTxOLFQ+IHY7IGZpbGwgKHYsIHZhbHVlX2xpbWl0czo6bWluKCkpOyByZXR1cm4gKHYpOyB9Ci0gICAgc3RhdGljIGlubGluZSB0dXBsZTxOLFQ+IG1heCAodm9pZCkJeyB0dXBsZTxOLFQ+IHY7IGZpbGwgKHYsIHZhbHVlX2xpbWl0czo6bWF4KCkpOyByZXR1cm4gKHYpOyB9Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfc2lnbmVkID0gdmFsdWVfbGltaXRzOjppc19zaWduZWQ7Ci0gICAgc3RhdGljIGNvbnN0IGJvb2wgaXNfaW50ZWdlciA9IHZhbHVlX2xpbWl0czo6aXNfaW50ZWdlcjsKLSAgICBzdGF0aWMgY29uc3QgYm9vbCBpc19pbnRlZ3JhbCA9IHZhbHVlX2xpbWl0czo6aXNfaW50ZWdyYWw7Ci19OwotCi10ZW1wbGF0ZSA8c2l6ZV90IE4sIHR5cGVuYW1lIFQ+Ci1pbmxpbmUgc2l6ZV90IGFsaWdub2YgKGNvbnN0IHR1cGxlPE4sVD4mKSB7IHJldHVybiAoYWxpZ25vZiAoVCgpKSk7IH0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQsIHR5cGVuYW1lIEludFQ+Ci1pbmxpbmUgb3N0cmluZ3N0cmVhbSYgY2hhcnR5cGVfdGV4dF93cml0ZSAob3N0cmluZ3N0cmVhbSYgb3MsIGNvbnN0IFQmIHYpCi17Ci0gICAgaWYgKGlzcHJpbnQodikpCi0Jb3MgPDwgJ1wnJyA8PCB2IDw8ICdcJyc7Ci0gICAgZWxzZQotCW9zIDw8IChJbnRUKSh2KTsKLSAgICByZXR1cm4gKG9zKTsKLX0KLQotdGVtcGxhdGUgPD4KLWlubGluZSBvc3RyaW5nc3RyZWFtJiBjb250YWluZXJfZWxlbWVudF90ZXh0X3dyaXRlIChvc3RyaW5nc3RyZWFtJiBvcywgY29uc3QgdWludDhfdCYgdikKLXsgcmV0dXJuIChjaGFydHlwZV90ZXh0X3dyaXRlPHVpbnQ4X3QsIHVuc2lnbmVkIGludD4gKG9zLCB2KSk7IH0KLXRlbXBsYXRlIDw+Ci1pbmxpbmUgb3N0cmluZ3N0cmVhbSYgY29udGFpbmVyX2VsZW1lbnRfdGV4dF93cml0ZSAob3N0cmluZ3N0cmVhbSYgb3MsIGNvbnN0IGludDhfdCYgdikKLXsgcmV0dXJuIChjaGFydHlwZV90ZXh0X3dyaXRlPGludDhfdCwgaW50PiAob3MsIHYpKTsgfQotCi0vLy0tLS17IG1hdHJpeCB9LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8vIFdyaXRlcyB0dXBsZSBccCB2IGludG8gc3RyZWFtIFxwIG9zLgotdGVtcGxhdGUgPHNpemVfdCBOWCwgc2l6ZV90IE5ZLCB0eXBlbmFtZSBUPgotb3N0cmluZ3N0cmVhbSYgb3BlcmF0b3I8PCAob3N0cmluZ3N0cmVhbSYgb3MsIGNvbnN0IG1hdHJpeDxOWCxOWSxUPiYgdikKLXsKLSAgICBvcyA8PCAnKCc7Ci0gICAgZm9yICh1b2ZmX3Qgcm93ID0gMDsgcm93IDwgTlk7ICsrIHJvdykgewotCW9zIDw8ICcoJzsKLSAgICAgICAgZm9yICh1b2ZmX3QgY29sdW1uID0gMDsgY29sdW1uIDwgTlg7ICsrIGNvbHVtbikgewotCSAgICBvcyA8PCB2W3Jvd11bY29sdW1uXTsKLQkgICAgaWYgKGNvbHVtbiA8IE5YIC0gMSkKLQkJb3MgPDwgJywnOwotCX0KLQlvcyA8PCAnKSc7Ci0gICAgfQotICAgIG9zIDw8ICcpJzsKLSAgICByZXR1cm4gKG9zKTsKLX0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSNpZm5kZWYgRE9YWUdFTl9TSE9VTERfU0tJUF9USElTCi0jaWZuZGVmIFdJVEhPVVRfTElCU1REQ1BQCi0KLS8vLyBcdG9kbyBOZWVkIGEgYmV0dGVyIHNvbHV0aW9uIHRvIGdldHRpbmcgdGhlIGhhc2ggdmFsdWUuCi1pbmxpbmUgaGFzaHZhbHVlX3QgaGFzaF92YWx1ZSAoY29uc3Qgc3RyaW5nOjpjb25zdF9wb2ludGVyJiB2KQotewotICAgIHN0cmluZzo6Y29uc3RfcG9pbnRlciBmaXJzdCAodiksIGxhc3QgKHYgKyBzdHJsZW4odikpOwotICAgIGhhc2h2YWx1ZV90IGggPSAwOwotICAgIC8vIFRoaXMgaGFzIHRoZSBiaXRzIGZsb3dpbmcgaW50byBlYWNoIG90aGVyIGZyb20gYm90aCBzaWRlcyBvZiB0aGUgbnVtYmVyCi0gICAgZm9yICg7IGZpcnN0IDwgbGFzdDsgKysgZmlyc3QpCi0JaCA9ICpmaXJzdCArICgoaCA8PCA3KSB8IChoID4+IEJpdHNJblR5cGUoaGFzaHZhbHVlX3QpIC0gNykpOwotICAgIHJldHVybiAoaCk7Ci19Ci0KLSNlbmRpZgotI2VuZGlmCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KLS8vIFRoaXMgaXMgaGVyZSBiZWNhdXNlIHRoZXJlIHJlYWxseSBpcyBubyBvdGhlciBwbGFjZSB0byBwdXQgaXQuCi0jaWYgU0laRV9PRl9CT09MICE9IFNJWkVfT0ZfQ0hBUgotLy8gYm9vbCBpcyBhIGJpZyB0eXBlIG9uIHNvbWUgbWFjaGluZXMgKGxpa2UgREVDIEFscGhhKSwgc28gaXQncyB3cml0dGVuIGFzIGEgYnl0ZS4KLUFMSUdOT0YoYm9vbCwgc2l6ZW9mKHVpbnQ4X3QpKQotI2VuZGlmCi1TVERfU1RSRUFNQUJMRShjbWVtbGluaykKLVNURF9TVFJFQU1BQkxFKGlzdHJlYW0pCi1TVERfU1RSRUFNQUJMRShvc3RyZWFtKQotU1REX1NUUkVBTUFCTEUoc3RyaW5nKQotU1REX1NUUkVBTUFCTEUoZXhjZXB0aW9uKQotU1REX1NUUkVBTUFCTEUoQ0JhY2t0cmFjZSkKLVRFWFRfU1RSRUFNQUJMRShjbWVtbGluaykKLVRFWFRfU1RSRUFNQUJMRShpc3RyZWFtKQotVEVYVF9TVFJFQU1BQkxFKG9zdHJlYW0pCi1URVhUX1NUUkVBTUFCTEUoZXhjZXB0aW9uKQotVEVYVF9TVFJFQU1BQkxFKENCYWNrdHJhY2UpCi0KLSNlbmRpZgotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91c3RhY2suaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VzdGFjay5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDhlM2IzLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VzdGFjay5oCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHVzdGwgbGlicmFyeSwgYW4gU1RMIGltcGxlbWVudGF0aW9uLgotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwNSBieSBNaWtlIFNoYXJvdiA8bXNoYXJvdkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0vLyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgotLy8KLS8vIHVzdGFjay5oCi0vLwotCi0jaWZuZGVmIFVTVEFDS19IXzUyNDJGNTYzNTMyMkIyRUM0NEE5QUVFNzMwMjJDNkU5Ci0jZGVmaW5lIFVTVEFDS19IXzUyNDJGNTYzNTMyMkIyRUM0NEE5QUVFNzMwMjJDNkU5Ci0KLW5hbWVzcGFjZSB1c3RsIHsKLQotLy8vIFxjbGFzcyBzdGFjayB1c3RhY2suaCB1c3RsLmgKLS8vLyBcaW5ncm91cCBTZXF1ZW5jZXMKLS8vLwotLy8vIFxicmllZiBTdGFjayBhZGFwdGVyIHRvIHVTVEwgY29udGFpbmVycy4KLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIFNlcXVlbmNlPgotY2xhc3Mgc3RhY2sgewotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgU2VxdWVuY2U6OnZhbHVlX3R5cGUJdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFNlcXVlbmNlOjpzaXplX3R5cGUJc2l6ZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgU2VxdWVuY2U6OmRpZmZlcmVuY2VfdHlwZQlkaWZmZXJlbmNlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBTZXF1ZW5jZTo6cmVmZXJlbmNlCXJlZmVyZW5jZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIFNlcXVlbmNlOjpjb25zdF9yZWZlcmVuY2UJY29uc3RfcmVmZXJlbmNlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgU2VxdWVuY2U6OnBvaW50ZXIJCXBvaW50ZXI7Ci1wdWJsaWM6Ci0gICAgaW5saW5lCQkJc3RhY2sgKHZvaWQpCQkJOiBtX1N0b3JhZ2UgKCkgeyB9Ci0gICAgZXhwbGljaXQgaW5saW5lCQlzdGFjayAoY29uc3QgU2VxdWVuY2UmIHMpCTogbV9TdG9yYWdlIChzKSB7IH0KLSAgICBpbmxpbmUgYm9vbAkJCWVtcHR5ICh2b2lkKSBjb25zdAkJeyByZXR1cm4gKG1fU3RvcmFnZS5lbXB0eSgpKTsgfQotICAgIGlubGluZSBzaXplX3R5cGUJCXNpemUgKHZvaWQpIGNvbnN0CQl7IHJldHVybiAobV9TdG9yYWdlLnNpemUoKSk7IH0KLSAgICBpbmxpbmUgcmVmZXJlbmNlCQl0b3AgKHZvaWQpCQkJeyByZXR1cm4gKG1fU3RvcmFnZS5iYWNrKCkpOyB9Ci0gICAgaW5saW5lIGNvbnN0X3JlZmVyZW5jZQl0b3AgKHZvaWQpIGNvbnN0CQl7IHJldHVybiAobV9TdG9yYWdlLmJhY2soKSk7IH0KLSAgICBpbmxpbmUgdm9pZAkJCXB1c2ggKGNvbnN0IHZhbHVlX3R5cGUmIHYpCXsgbV9TdG9yYWdlLnB1c2hfYmFjayAodik7IH0KLSAgICBpbmxpbmUgdm9pZAkJCXBvcCAodm9pZCkJCQl7IG1fU3RvcmFnZS5wb3BfYmFjaygpOyB9Ci0gICAgaW5saW5lIGJvb2wJCQlvcGVyYXRvcj09IChjb25zdCBzdGFjayYgcykJeyByZXR1cm4gKG1fU3RvcmFnZSA9PSBzLm1fU3RvcmFnZSk7IH0KLSAgICBpbmxpbmUgYm9vbAkJCW9wZXJhdG9yPCAoY29uc3Qgc3RhY2smIHMpCXsgcmV0dXJuIChtX1N0b3JhZ2Uuc2l6ZSgpIDwgcy5tX1N0b3JhZ2Uuc2l6ZSgpKTsgfQotcHJpdmF0ZToKLSAgICBTZXF1ZW5jZQkJCW1fU3RvcmFnZTsJLy8vPCBXaGVyZSB0aGUgZGF0YSBhY3R1YWxseSBpcy4KLX07Ci0KLX0gLy8gbmFtZXNwYWNlIHVzdGwKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VzdGR4ZXB0LmNwcCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VzdGR4ZXB0LmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2U3MzFmNy4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91c3RkeGVwdC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3MiArMCwwIEBACi0vLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdXN0bCBsaWJyYXJ5LCBhbiBTVEwgaW1wbGVtZW50YXRpb24uCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDA1IGJ5IE1pa2UgU2hhcm92IDxtc2hhcm92QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLS8vIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCi0vLwotLy8gdXN0ZHhlcHQuY2MKLS8vCi0KLSNpbmNsdWRlICJ1c3RkeGVwdC5oIgotI2luY2x1ZGUgIm1pc3RyZWFtLmgiCi0jaW5jbHVkZSAibW9zdHJlYW0uaCIKLSNpbmNsdWRlICJzdHJtc2l6ZS5oIgotI2luY2x1ZGUgInVpb3NmdW5jLmgiCi0jaW5jbHVkZSAidXNwZWNpYWwuaCIKLQotbmFtZXNwYWNlIHVzdGwgewotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8vIFxwIGFyZyBjb250YWlucyBhIGRlc2NyaXB0aW9uIG9mIHRoZSBlcnJvci4KLWVycm9yX21lc3NhZ2U6OmVycm9yX21lc3NhZ2UgKGNvbnN0IGNoYXIqIGFyZykgdGhyb3coKQotOiBtX0FyZyAoKQotewotI2lmIFBMQVRGT1JNX0FORFJPSUQKLSAgICBtX0FyZyA9IGFyZzsKLSNlbHNlIC8qICFQTEFURk9STV9BTkRST0lEICovCi0gICAgdHJ5IHsgbV9BcmcgPSBhcmc7IH0gY2F0Y2ggKC4uLikge30KLSNlbmRpZgotICAgIHNldF9mb3JtYXQgKHhmbXRfRXJyb3JNZXNzYWdlKTsKLX0KLQotLy8vIFZpcnR1YWwgZGVzdHJ1Y3RvcgotZXJyb3JfbWVzc2FnZTo6fmVycm9yX21lc3NhZ2UgKHZvaWQpIHRocm93KCkKLXsKLX0KLQotLy8vIFJldHVybnMgYSBkZXNjcmlwdGl2ZSBlcnJvciBtZXNzYWdlLiBmbXQ9IiVzOiAlcyIKLXZvaWQgZXJyb3JfbWVzc2FnZTo6aW5mbyAoc3RyaW5nJiBtc2didWYsIGNvbnN0IGNoYXIqIGZtdCkgY29uc3QgdGhyb3coKQotewotICAgIGlmICghZm10KSBmbXQgPSAiJXM6ICVzIjsKLSNpZiBQTEFURk9STV9BTkRST0lECi0gICAgbXNnYnVmLmZvcm1hdCAoZm10LCB3aGF0KCksIG1fQXJnLmNkYXRhKCkpOwotI2Vsc2UgLyogIVBMQVRGT1JNX0FORFJPSUQgKi8KLSAgICB0cnkgeyBtc2didWYuZm9ybWF0IChmbXQsIHdoYXQoKSwgbV9BcmcuY2RhdGEoKSk7IH0gY2F0Y2ggKC4uLikge30KLSNlbmRpZgotfQotCi0vLy8gUmVhZHMgdGhlIG9iamVjdCBmcm9tIHN0cmVhbSBccCBpcy4KLXZvaWQgZXJyb3JfbWVzc2FnZTo6cmVhZCAoaXN0cmVhbSYgaXMpCi17Ci0gICAgZXhjZXB0aW9uOjpyZWFkIChpcyk7Ci0gICAgaXMgPj4gbV9BcmcgPj4gaW9zOjphbGlnbigpOwotfQotCi0vLy8gV3JpdGVzIHRoZSBvYmplY3QgdG8gc3RyZWFtIFxwIG9zLgotdm9pZCBlcnJvcl9tZXNzYWdlOjp3cml0ZSAob3N0cmVhbSYgb3MpIGNvbnN0Ci17Ci0gICAgZXhjZXB0aW9uOjp3cml0ZSAob3MpOwotICAgIG9zIDw8IG1fQXJnIDw8IGlvczo6YWxpZ24oKTsKLX0KLQotLy8vIFJldHVybnMgdGhlIHNpemUgb2YgdGhlIHdyaXR0ZW4gb2JqZWN0Lgotc2l6ZV90IGVycm9yX21lc3NhZ2U6OnN0cmVhbV9zaXplICh2b2lkKSBjb25zdAotewotICAgIHJldHVybiAoZXhjZXB0aW9uOjpzdHJlYW1fc2l6ZSgpICsgQWxpZ24gKHN0cmVhbV9zaXplX29mIChtX0FyZykpKTsKLX0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLX0gLy8gbmFtZXNwYWNlIHVzdGwKLQotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91c3RkeGVwdC5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdXN0ZHhlcHQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGY1MDk1My4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91c3RkeGVwdC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTQzICswLDAgQEAKLS8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB1c3RsIGxpYnJhcnksIGFuIFNUTCBpbXBsZW1lbnRhdGlvbi4KLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgYnkgTWlrZSBTaGFyb3YgPG1zaGFyb3ZAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotLy8gVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KLS8vCi0vLyB1c3RkeGVwdC5oCi0vLwotCi0jaWZuZGVmIFVTVERYRVBUX0hfNDZGN0FFOTY3NzM4QjU4ODAzOEY5NUU0MTE1OEQ3RkYKLSNkZWZpbmUgVVNURFhFUFRfSF80NkY3QUU5Njc3MzhCNTg4MDM4Rjk1RTQxMTU4RDdGRgotCi0jaW5jbHVkZSAidWV4Y2VwdGlvbi5oIgotI2luY2x1ZGUgInVzdHJpbmcuaCIKLQotbmFtZXNwYWNlIHVzdGwgewotCi1lbnVtIHsgCi0gICAgeGZtdF9FcnJvck1lc3NhZ2UgPSAyLAotICAgIHhmbXRfTG9naWNFcnJvciA9IHhmbXRfRXJyb3JNZXNzYWdlLAotICAgIHhmbXRfUnVudGltZUVycm9yID0geGZtdF9FcnJvck1lc3NhZ2UKLX07Ci0KLS8vLyBcY2xhc3MgbG9naWNfZXJyb3IgdXN0ZHhlcHQuaCB1c3RsLmgKLS8vLyBcaW5ncm91cCBFeGNlcHRpb25zCi0vLy8KLS8vLyBcYnJpZWYgTG9naWMgZXJyb3JzIHJlcHJlc2VudCBwcm9ibGVtcyBpbiB0aGUgaW50ZXJuYWwgbG9naWMgb2YgdGhlIHByb2dyYW0uCi0vLy8KLWNsYXNzIGVycm9yX21lc3NhZ2UgOiBwdWJsaWMgZXhjZXB0aW9uIHsKLXB1YmxpYzoKLSAgICBleHBsaWNpdAkJZXJyb3JfbWVzc2FnZSAoY29uc3QgY2hhciogYXJnKSB0aHJvdygpOwotICAgIHZpcnR1YWwJICAgICAgIH5lcnJvcl9tZXNzYWdlICh2b2lkKSB0aHJvdygpOwotICAgIGlubGluZSB2aXJ0dWFsIGNvbnN0IGNoYXIqCXdoYXQgKHZvaWQpIGNvbnN0IHRocm93KCkgeyByZXR1cm4gKCJlcnJvciIpOyB9Ci0gICAgdmlydHVhbCB2b2lkCWluZm8gKHN0cmluZyYgbXNnYnVmLCBjb25zdCBjaGFyKiBmbXQgPSBOVUxMKSBjb25zdCB0aHJvdygpOwotICAgIHZpcnR1YWwgdm9pZAlyZWFkIChpc3RyZWFtJiBpcyk7Ci0gICAgdmlydHVhbCB2b2lkCXdyaXRlIChvc3RyZWFtJiBvcykgY29uc3Q7Ci0gICAgdmlydHVhbCBzaXplX3QJc3RyZWFtX3NpemUgKHZvaWQpIGNvbnN0OwotcHJvdGVjdGVkOgotICAgIHN0cmluZwkJbV9Bcmc7Ci19OwotCi0vLy8gXGNsYXNzIGxvZ2ljX2Vycm9yIHVzdGR4ZXB0LmggdXN0bC5oCi0vLy8gXGluZ3JvdXAgRXhjZXB0aW9ucwotLy8vCi0vLy8gXGJyaWVmIExvZ2ljIGVycm9ycyByZXByZXNlbnQgcHJvYmxlbXMgaW4gdGhlIGludGVybmFsIGxvZ2ljIG9mIHRoZSBwcm9ncmFtLgotLy8vCi1jbGFzcyBsb2dpY19lcnJvciA6IHB1YmxpYyBlcnJvcl9tZXNzYWdlIHsKLXB1YmxpYzoKLSAgICBpbmxpbmUgZXhwbGljaXQJCWxvZ2ljX2Vycm9yIChjb25zdCBjaGFyKiBhcmcpIHRocm93KCkgOiBlcnJvcl9tZXNzYWdlIChhcmcpIHt9Ci0gICAgaW5saW5lIHZpcnR1YWwgY29uc3QgY2hhcioJd2hhdCAodm9pZCkgY29uc3QgdGhyb3coKSB7IHJldHVybiAoImxvZ2ljIGVycm9yIik7IH0KLX07Ci0KLS8vLyBcY2xhc3MgZG9tYWluX2Vycm9yIHVzdGR4ZXB0LmggdXN0bC5oCi0vLy8gXGluZ3JvdXAgRXhjZXB0aW9ucwotLy8vCi0vLy8gXGJyaWVmIFJlcG9ydHMgZG9tYWluIGVycm9ycyAoImRvbWFpbiIgaXMgaW4gdGhlIG1hdGhlbWF0aWNhbCBzZW5zZSkKLS8vLwotY2xhc3MgZG9tYWluX2Vycm9yIDogcHVibGljIGxvZ2ljX2Vycm9yIHsKLXB1YmxpYzoKLSAgICBpbmxpbmUgZXhwbGljaXQJCWRvbWFpbl9lcnJvciAoY29uc3QgY2hhciogYXJnKSB0aHJvdygpIDogbG9naWNfZXJyb3IgKGFyZykge30KLSAgICBpbmxpbmUgdmlydHVhbCBjb25zdCBjaGFyKgl3aGF0ICh2b2lkKSBjb25zdCB0aHJvdygpIHsgcmV0dXJuICgiZG9tYWluIGVycm9yIik7IH0KLX07Ci0KLS8vLyBcY2xhc3MgaW52YWxpZF9hcmd1bWVudCB1c3RkeGVwdC5oIHVzdGwuaAotLy8vIFxpbmdyb3VwIEV4Y2VwdGlvbnMKLS8vLwotLy8vIFxicmllZiBSZXBvcnRzIGFuIGludmFsaWQgYXJndW1lbnQgdG8gYSBmdW5jdGlvbi4KLS8vLwotY2xhc3MgaW52YWxpZF9hcmd1bWVudCA6IHB1YmxpYyBsb2dpY19lcnJvciB7Ci1wdWJsaWM6Ci0gICAgaW5saW5lIGV4cGxpY2l0CQlpbnZhbGlkX2FyZ3VtZW50IChjb25zdCBjaGFyKiBhcmcpIHRocm93KCkgOiBsb2dpY19lcnJvciAoYXJnKSB7fQotICAgIGlubGluZSB2aXJ0dWFsIGNvbnN0IGNoYXIqCXdoYXQgKHZvaWQpIGNvbnN0IHRocm93KCkgeyByZXR1cm4gKCJpbnZhbGlkIGFyZ3VtZW50Iik7IH0KLX07Ci0KLS8vLyBcY2xhc3MgbGVuZ3RoX2Vycm9yIHVzdGR4ZXB0LmggdXN0bC5oCi0vLy8gXGluZ3JvdXAgRXhjZXB0aW9ucwotLy8vCi0vLy8gXGJyaWVmIFJlcG9ydHMgd2hlbiBhbiBvYmplY3QgZXhjZWVkcyBpdHMgYWxsb3dlZCBzaXplLgotLy8vCi1jbGFzcyBsZW5ndGhfZXJyb3IgOiBwdWJsaWMgbG9naWNfZXJyb3IgewotcHVibGljOgotICAgIGlubGluZSBleHBsaWNpdAkJbGVuZ3RoX2Vycm9yIChjb25zdCBjaGFyKiBhcmcpIHRocm93KCkgOiBsb2dpY19lcnJvciAoYXJnKSB7fSAKLSAgICBpbmxpbmUgdmlydHVhbCBjb25zdCBjaGFyKgl3aGF0ICh2b2lkKSBjb25zdCB0aHJvdygpIHsgcmV0dXJuICgibGVuZ3RoIGVycm9yIik7IH0KLX07Ci0KLS8vLyBcY2xhc3Mgb3V0X29mX3JhbmdlIHVzdGR4ZXB0LmggdXN0bC5oCi0vLy8gXGluZ3JvdXAgRXhjZXB0aW9ucwotLy8vCi0vLy8gXGJyaWVmIFJlcG9ydHMgYXJndW1lbnRzIHdpdGggdmFsdWVzIG91dCBvZiBhbGxvd2VkIHJhbmdlLgotLy8vCi1jbGFzcyBvdXRfb2ZfcmFuZ2UgOiBwdWJsaWMgbG9naWNfZXJyb3IgewotcHVibGljOgotICAgIGlubGluZSBleHBsaWNpdAkJb3V0X29mX3JhbmdlIChjb25zdCBjaGFyKiBhcmcpIHRocm93KCkgOiBsb2dpY19lcnJvciAoYXJnKSB7fQotICAgIGlubGluZSB2aXJ0dWFsIGNvbnN0IGNoYXIqCXdoYXQgKHZvaWQpIGNvbnN0IHRocm93KCkgeyByZXR1cm4gKCJvdXQgb2YgcmFuZ2UiKTsgfQotfTsKLQotLy8vIFxjbGFzcyBydW50aW1lX2Vycm9yIHVzdGR4ZXB0LmggdXN0bC5oCi0vLy8gXGluZ3JvdXAgRXhjZXB0aW9ucwotLy8vCi0vLy8gXGJyaWVmIFJlcG9ydHMgZXJyb3JzIHRoYXQgYXJlIGRlcGVuZGVudCBvbiB0aGUgZGF0YSBiZWluZyBwcm9jZXNzZWQuCi0vLy8KLWNsYXNzIHJ1bnRpbWVfZXJyb3IgOiBwdWJsaWMgZXJyb3JfbWVzc2FnZSB7Ci1wdWJsaWM6Ci0gICAgaW5saW5lIGV4cGxpY2l0CQlydW50aW1lX2Vycm9yIChjb25zdCBjaGFyKiBhcmcpIHRocm93KCkgOiBlcnJvcl9tZXNzYWdlIChhcmcpIHt9Ci0gICAgaW5saW5lIHZpcnR1YWwgY29uc3QgY2hhcioJd2hhdCAodm9pZCkgY29uc3QgdGhyb3coKSB7IHJldHVybiAoInJ1bnRpbWUgZXJyb3IiKTsgfQotfTsKLQotLy8vIFxjbGFzcyByYW5nZV9lcnJvciB1c3RkeGVwdC5oIHVzdGwuaAotLy8vIFxpbmdyb3VwIEV4Y2VwdGlvbnMKLS8vLwotLy8vIFxicmllZiBSZXBvcnRzIGRhdGEgdGhhdCBkb2VzIG5vdCBmYWxsIHdpdGhpbiB0aGUgcGVybWl0dGVkIHJhbmdlLgotLy8vCi1jbGFzcyByYW5nZV9lcnJvciA6IHB1YmxpYyBydW50aW1lX2Vycm9yIHsKLXB1YmxpYzoKLSAgICBpbmxpbmUgZXhwbGljaXQJCXJhbmdlX2Vycm9yIChjb25zdCBjaGFyKiBhcmcpIHRocm93KCkgOiBydW50aW1lX2Vycm9yIChhcmcpIHt9Ci0gICAgaW5saW5lIHZpcnR1YWwgY29uc3QgY2hhcioJd2hhdCAodm9pZCkgY29uc3QgdGhyb3coKSB7IHJldHVybiAoInJhbmdlIGVycm9yIik7IH0KLX07Ci0KLS8vLyBcY2xhc3Mgb3ZlcmZsb3dfZXJyb3IgdXN0ZHhlcHQuaCB1c3RsLmgKLS8vLyBcaW5ncm91cCBFeGNlcHRpb25zCi0vLy8KLS8vLyBcYnJpZWYgUmVwb3J0cyBhcml0aG1ldGljIG92ZXJmbG93LgotLy8vCi1jbGFzcyBvdmVyZmxvd19lcnJvciA6IHB1YmxpYyBydW50aW1lX2Vycm9yIHsKLXB1YmxpYzoKLSAgICBpbmxpbmUgZXhwbGljaXQJCW92ZXJmbG93X2Vycm9yIChjb25zdCBjaGFyKiBhcmcpIHRocm93KCkgOiBydW50aW1lX2Vycm9yIChhcmcpIHt9Ci0gICAgaW5saW5lIHZpcnR1YWwgY29uc3QgY2hhcioJd2hhdCAodm9pZCkgY29uc3QgdGhyb3coKSB7IHJldHVybiAoIm92ZXJmbG93IGVycm9yIik7IH0KLX07Ci0KLS8vLyBcY2xhc3MgdW5kZXJmbG93X2Vycm9yIHVzdGR4ZXB0LmggdXN0bC5oCi0vLy8gXGluZ3JvdXAgRXhjZXB0aW9ucwotLy8vCi0vLy8gXGJyaWVmIFJlcG9ydHMgYXJpdGhtZXRpYyB1bmRlcmZsb3cuCi0vLy8KLWNsYXNzIHVuZGVyZmxvd19lcnJvciA6IHB1YmxpYyBydW50aW1lX2Vycm9yIHsKLXB1YmxpYzoKLSAgICBpbmxpbmUgZXhwbGljaXQJCXVuZGVyZmxvd19lcnJvciAoY29uc3QgY2hhciogYXJnKSB0aHJvdygpIDogcnVudGltZV9lcnJvciAoYXJnKSB7fQotICAgIGlubGluZSB2aXJ0dWFsIGNvbnN0IGNoYXIqCXdoYXQgKHZvaWQpIGNvbnN0IHRocm93KCkgeyByZXR1cm4gKCJ1bmRlcmZsb3cgZXJyb3IiKTsgfQotfTsKLQotfSAvLyBuYW1lc3BhY2UgdXN0bAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdXN0bC50YmZmIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdXN0bC50YmZmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOGFkMzc0Li4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VzdGwudGJmZgorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLTwhLS0gQU5TSSBTdGFuZGFyZCBmaXhlZCBzaXplIHR5cGVzIC0tPgotPHR5cGUgbmFtZT1pbnQ4X3QgZm9ybWF0PXNpZ25lZEludGVncmFsIHNpemU9aW50OF90Lz4KLTx0eXBlIG5hbWU9aW50MTZfdCBmb3JtYXQ9c2lnbmVkSW50ZWdyYWwgc2l6ZT1pbnQxNl90Lz4KLTx0eXBlIG5hbWU9aW50MzJfdCBmb3JtYXQ9c2lnbmVkSW50ZWdyYWwgc2l6ZT1pbnQzMl90Lz4KLTx0eXBlIG5hbWU9aW50NjRfdCBmb3JtYXQ9c2lnbmVkSW50ZWdyYWwgc2l6ZT1pbnQ2NF90Lz4KLTx0eXBlIG5hbWU9dWludDhfdCBmb3JtYXQ9aW50ZWdyYWwgc2l6ZT1pbnQ4X3QvPgotPHR5cGUgbmFtZT11aW50MTZfdCBmb3JtYXQ9aW50ZWdyYWwgc2l6ZT1pbnQxNl90Lz4KLTx0eXBlIG5hbWU9dWludDMyX3QgZm9ybWF0PWludGVncmFsIHNpemU9aW50MzJfdC8+Ci08dHlwZSBuYW1lPXVpbnQ2NF90IGZvcm1hdD1pbnRlZ3JhbCBzaXplPWludDY0X3QvPgotPHR5cGUgbmFtZT1mbG9hdCBmb3JtYXQ9ZmxvYXQgc2l6ZT1mbG9hdC8+Ci08dHlwZSBuYW1lPWRvdWJsZSBmb3JtYXQ9ZmxvYXQgc2l6ZT1kb3VibGUvPgotCi08IS0tIFN0YW5kYXJkIHR5cGVzIG9mIHZhcmlhYmxlIHNpemUsIHRoZXNlIGFyZSBtYWNoaW5lIHNwZWNpZmljIC0tPgotPHR5cGUgbmFtZT1pbnRfbGVhc3Q4X3QgZm9ybWF0PXNpZ25lZEludGVncmFsIHNpemU9aW50OF90Lz4KLTx0eXBlIG5hbWU9aW50X2xlYXN0MTZfdCBmb3JtYXQ9c2lnbmVkSW50ZWdyYWwgc2l6ZT1pbnQxNl90Lz4KLTx0eXBlIG5hbWU9aW50X2xlYXN0MzJfdCBmb3JtYXQ9c2lnbmVkSW50ZWdyYWwgc2l6ZT1pbnQzMl90Lz4KLTx0eXBlIG5hbWU9aW50X2xlYXN0NjRfdCBmb3JtYXQ9c2lnbmVkSW50ZWdyYWwgc2l6ZT1pbnQ2NF90Lz4KLTx0eXBlIG5hbWU9dWludF9sZWFzdDhfdCBmb3JtYXQ9aW50ZWdyYWwgc2l6ZT1pbnQ4X3QvPgotPHR5cGUgbmFtZT11aW50X2xlYXN0MTZfdCBmb3JtYXQ9aW50ZWdyYWwgc2l6ZT1pbnQxNl90Lz4KLTx0eXBlIG5hbWU9dWludF9sZWFzdDMyX3QgZm9ybWF0PWludGVncmFsIHNpemU9aW50MzJfdC8+Ci08dHlwZSBuYW1lPXVpbnRfbGVhc3Q2NF90IGZvcm1hdD1pbnRlZ3JhbCBzaXplPWludDY0X3QvPgotPHR5cGUgbmFtZT1pbnRfZmFzdDhfdCBmb3JtYXQ9c2lnbmVkSW50ZWdyYWwgc2l6ZT1pbnQ4X3QvPgotPHR5cGUgbmFtZT1pbnRfZmFzdDE2X3QgZm9ybWF0PXNpZ25lZEludGVncmFsIHNpemU9aW50MTZfdC8+Ci08dHlwZSBuYW1lPWludF9mYXN0MzJfdCBmb3JtYXQ9c2lnbmVkSW50ZWdyYWwgc2l6ZT1pbnQzMl90Lz4KLTx0eXBlIG5hbWU9aW50X2Zhc3Q2NF90IGZvcm1hdD1zaWduZWRJbnRlZ3JhbCBzaXplPWludDY0X3QvPgotPHR5cGUgbmFtZT11aW50X2Zhc3Q4X3QgZm9ybWF0PWludGVncmFsIHNpemU9aW50OF90Lz4KLTx0eXBlIG5hbWU9dWludF9mYXN0MTZfdCBmb3JtYXQ9aW50ZWdyYWwgc2l6ZT1pbnQxNl90Lz4KLTx0eXBlIG5hbWU9dWludF9mYXN0MzJfdCBmb3JtYXQ9aW50ZWdyYWwgc2l6ZT1pbnQzMl90Lz4KLTx0eXBlIG5hbWU9dWludF9mYXN0NjRfdCBmb3JtYXQ9aW50ZWdyYWwgc2l6ZT1pbnQ2NF90Lz4KLTx0eXBlIG5hbWU9aW50cHRyX3QgZm9ybWF0PWludGVncmFsIHNpemU9aW50cHRyX3QvPgotPHR5cGUgbmFtZT11aW50cHRyX3QgZm9ybWF0PWludGVncmFsIHNpemU9aW50cHRyX3QvPgotPHR5cGUgbmFtZT1pbnRtYXhfdCBmb3JtYXQ9aW50ZWdyYWwgc2l6ZT1pbnRtYXhfdC8+Ci08dHlwZSBuYW1lPXVpbnRtYXhfdCBmb3JtYXQ9aW50ZWdyYWwgc2l6ZT1pbnRtYXhfdC8+Ci0KLTwhLS0gU3RhbmRhcmQgQysrIHZhcmlhYmxlIHNpemUgdHlwZXMsIGFsc28gbWFjaGluZSBzcGVjaWZpYyAtLT4KLTx0eXBlIG5hbWU9d2NoYXJfdCBmb3JtYXQ9c2lnbmVkSW50ZWdyYWwgc2l6ZT13Y2hhcl90Lz4KLTx0eXBlIG5hbWU9c2l6ZV90IGZvcm1hdD1pbnRlZ3JhbCBzaXplPXNpemVfdC8+Ci08dHlwZSBuYW1lPWNoYXIgZm9ybWF0PXNpZ25lZEludGVncmFsIHNpemU9Y2hhci8+Ci08dHlwZSBuYW1lPXNob3J0IGZvcm1hdD1zaWduZWRJbnRlZ3JhbCBzaXplPXNob3J0Lz4KLTx0eXBlIG5hbWU9aW50IGZvcm1hdD1zaWduZWRJbnRlZ3JhbCBzaXplPWludC8+Ci08dHlwZSBuYW1lPWxvbmcgZm9ybWF0PXNpZ25lZEludGVncmFsIHNpemU9bG9uZy8+Ci08dHlwZSBuYW1lPWxvbmdsb25nIGZvcm1hdD1zaWduZWRJbnRlZ3JhbCBzaXplPWxvbmdsb25nLz4KLTx0eXBlIG5hbWU9dV9jaGFyIGZvcm1hdD1zaWduZWRJbnRlZ3JhbCBzaXplPWNoYXIvPgotPHR5cGUgbmFtZT11X3Nob3J0IGZvcm1hdD1zaWduZWRJbnRlZ3JhbCBzaXplPXNob3J0Lz4KLTx0eXBlIG5hbWU9dV9pbnQgZm9ybWF0PXNpZ25lZEludGVncmFsIHNpemU9aW50Lz4KLTx0eXBlIG5hbWU9dV9sb25nIGZvcm1hdD1zaWduZWRJbnRlZ3JhbCBzaXplPWxvbmcvPgotPHR5cGUgbmFtZT11X2xvbmdsb25nIGZvcm1hdD1zaWduZWRJbnRlZ3JhbCBzaXplPWxvbmdsb25nLz4KLQotPCEtLSBsaWJjIHR5cGVzIC0tPgotPHR5cGUgbmFtZT10aW1lX3QgZm9ybWF0PXNpZ25lZEludGVncmFsIHNpemU9dGltZV90Lz4KLTx0eXBlIG5hbWU9b2ZmX3QgZm9ybWF0PXNpZ25lZEludGVncmFsIHNpemU9b2ZmX3QvPgotPHR5cGUgbmFtZT1wdHJkaWZmX3QgZm9ybWF0PXNpZ25lZEludGVncmFsIHNpemU9cHRyZGlmZl90Lz4KLTx0eXBlIG5hbWU9ZGV2X3QgZm9ybWF0PWludGVncmFsIHNpemU9ZGV2X3QvPgotPHR5cGUgbmFtZT11aWRfdCBmb3JtYXQ9aW50ZWdyYWwgc2l6ZT11aWRfdC8+Ci08dHlwZSBuYW1lPWdpZF90IGZvcm1hdD1pbnRlZ3JhbCBzaXplPWdpZF90Lz4KLTx0eXBlIG5hbWU9bW9kZV90IGZvcm1hdD1pbnRlZ3JhbCBzaXplPW1vZGVfdC8+Ci08dHlwZSBuYW1lPW5saW5rX3QgZm9ybWF0PWludGVncmFsIHNpemU9bmxpbmtfdC8+Ci08dHlwZSBuYW1lPXBpZF90IGZvcm1hdD1pbnRlZ3JhbCBzaXplPXBpZF90Lz4KLTx0eXBlIG5hbWU9ZnNpZF90IGZvcm1hdD1pbnRlZ3JhbCBzaXplPWZzaWRfdC8+Ci08dHlwZSBuYW1lPWNsb2NrX3QgZm9ybWF0PWludGVncmFsIHNpemU9Y2xvY2tfdC8+Ci08dHlwZSBuYW1lPWlkX3QgZm9ybWF0PWludGVncmFsIHNpemU9aWRfdC8+Ci08dHlwZSBuYW1lPWtleV90IGZvcm1hdD1pbnRlZ3JhbCBzaXplPWtleV90Lz4KLTx0eXBlIG5hbWU9Ymxrc2l6ZV90IGZvcm1hdD1pbnRlZ3JhbCBzaXplPWJsa3NpemVfdC8+Ci0KLTwhLS0gVHlwZXMgd2l0aGluIHRoZSB1c3RsIGxpYnJhcnkgLS0+Ci08dHlwZSBuYW1lPXV0ZjggZm9ybWF0PWludGVncmFsIG1pblNpemU9IjEiIG1heFNpemU9IjgiLz4KLTx0eXBlIG5hbWU9YXV0byBmb3JtYXQ9dW5zdHJ1Y3R1cmVkIGlkPSJBVVRPIi8+Ci08bmFtZXNwYWNlIG5hbWU9dXN0bD4KLSAgICA8dHlwZSBuYW1lPXVvZmZfdCBleHRlbmRzPXNpemVfdC8+Ci0gICAgPHR5cGUgbmFtZT1jbWVtbGlua19wdHJfdCBmb3JtYXQ9cG9pbnRlci8+Ci0gICAgPHR5cGUgbmFtZT1tZW1saW5rX3B0cl90IGV4dGVuZHM9Y21lbWxpbmtfcHRyX3QvPgotICAgIDx0eXBlIG5hbWU9bWVtYmxvY2tfcHRyX3QgZXh0ZW5kcz1tZW1saW5rX3B0cl90Lz4KLSAgICA8dHlwZSBuYW1lPWNtZW1saW5rIGZvcm1hdD1zdHJ1Y3Q+Ci0JPHZhciBuYW1lPWRhdGFfc2l6ZSB0eXBlPXNpemVfdCAvPgotCTx2YXIgbmFtZT1kYXRhIGZvcm1hdD11bnN0cnVjdHVyZWQgc2l6ZT1kYXRhX3NpemUgLz4KLSAgICA8L3R5cGU+Ci0gICAgPHR5cGUgbmFtZT1tZW1saW5rIGV4dGVuZHM9Y21lbWxpbmsgLz4KLSAgICA8dHlwZSBuYW1lPW1lbWJsb2NrIGV4dGVuZHM9Y21lbWxpbmsgLz4KLSAgICA8dHlwZSBuYW1lPXN0cmluZyBleHRlbmRzPW1lbWJsb2NrPgotCTx2YXIgbmFtZT1kYXRhX3NpemUgdHlwZT11dGY4IC8+Ci0JPHZhciBuYW1lPWRhdGEgZm9ybWF0PWFycmF5IHR5cGU9dXRmOCBzaXplPWRhdGFfc2l6ZSAvPgotICAgIDwvdHlwZT4KLTwvbmFtZXNwYWNlPgotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91c3RyaW5nLmNwcCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VzdHJpbmcuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjg3ZDM0Li4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3VzdHJpbmcuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDI1ICswLDAgQEAKLS8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB1c3RsIGxpYnJhcnksIGFuIFNUTCBpbXBsZW1lbnRhdGlvbi4KLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgYnkgTWlrZSBTaGFyb3YgPG1zaGFyb3ZAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotLy8gVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KLS8vCi0vLyB1c3RyaW5nLmNwcAotLy8KLS8vCVNUTCBiYXNpY19zdHJpbmcgZXF1aXZhbGVudCBmdW5jdGlvbmFsaXR5LgotLy8KLQotI2luY2x1ZGUgInVhc3NlcnQuaCIKLSNpbmNsdWRlICJ1c3RyaW5nLmgiCi0jaW5jbHVkZSAibWlzdHJlYW0uaCIKLSNpbmNsdWRlICJtb3N0cmVhbS5oIgotI2luY2x1ZGUgInVhbGdvLmgiCi0jaW5jbHVkZSA8c3RkaW8uaD4JLy8gZm9yIHZzbnByaW50ZiAoaW4gc3RyaW5nOjpmb3JtYXQpCi0KLSNpbmNsdWRlICJ1YXNzZXJ0LmgiCi0KLW5hbWVzcGFjZSB1c3RsIHsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWNvbnN0IHVvZmZfdCBzdHJpbmc6Om5wb3M7Ci1jb25zdCBzdHJpbmc6OnNpemVfdHlwZSBzdHJpbmc6OnNpemVfVGVybWluYXRvcjsKLWNvbnN0IHN0cmluZzo6dmFsdWVfdHlwZSBzdHJpbmc6OmNfVGVybWluYXRvcjsKLWNvbnN0IGNoYXIgc3RyaW5nOjplbXB0eV9zdHJpbmdbc3RyaW5nOjpzaXplX1Rlcm1pbmF0b3JdID0gIiI7Ci0KLXR5cGVkZWYgdXRmOGluX2l0ZXJhdG9yPHN0cmluZzo6Y29uc3RfaXRlcmF0b3I+IHV0ZjhpY3N0cmluZ19pdGVyYXRvcjsKLXR5cGVkZWYgdXRmOGluX2l0ZXJhdG9yPHN0cmluZzo6aXRlcmF0b3I+IHV0Zjhpc3RyaW5nX2l0ZXJhdG9yOwotdHlwZWRlZiB1dGY4b3V0X2l0ZXJhdG9yPHN0cmluZzo6aXRlcmF0b3I+IHV0Zjhvc3RyaW5nX2l0ZXJhdG9yOwotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8vIENyZWF0ZXMgYW4gZW1wdHkgc3RyaW5nLgotc3RyaW5nOjpzdHJpbmcgKHZvaWQpCi06IG1lbWJsb2NrICgpCi17Ci0gICAgbGluayAoZW1wdHlfc3RyaW5nLCAwVSk7Ci19Ci0KLS8vLyBBc3NpZ25zIGl0c2VsZiB0aGUgdmFsdWUgb2Ygc3RyaW5nIFxwIHMKLXN0cmluZzo6c3RyaW5nIChjb25zdCBzdHJpbmcmIHMpCi06IG1lbWJsb2NrKCkKLXsKLSAgICBpZiAocy5pc19saW5rZWQoKSkKLQlsaW5rIChzLmNfc3RyKCksIHMuc2l6ZSgpKTsKLSAgICBlbHNlCi0JYXNzaWduIChzKTsKLX0KLQotLy8vIExpbmtzIHRvIFxwIHMKLXN0cmluZzo6c3RyaW5nIChjb25zdF9wb2ludGVyIHMpCi06IG1lbWJsb2NrICgpCi17Ci0gICAgaWYgKCFzKQotCXMgPSBlbXB0eV9zdHJpbmc7Ci0gICAgbGluayAocywgc3RybGVuKHMpKTsKLX0KLQotLy8vIENyZWF0ZXMgYSBzdHJpbmcgb2YgbGVuZ3RoIFxwIG4gZmlsbGVkIHdpdGggY2hhcmFjdGVyIFxwIGMuCi1zdHJpbmc6OnN0cmluZyAoc2l6ZV90eXBlIG4sIHZhbHVlX3R5cGUgYykKLTogbWVtYmxvY2sgKCkKLXsKLSAgICByZXNpemUgKG4pOwotICAgIGZpbGxfbiAoYmVnaW4oKSwgbiwgYyk7Ci19Ci0KLS8vLyBSZXNpemUgdGhlIHN0cmluZyB0byBccCBuIGNoYXJhY3RlcnMuIE5ldyBzcGFjZSBjb250ZW50cyBpcyB1bmRlZmluZWQuCi12b2lkIHN0cmluZzo6cmVzaXplIChzaXplX3R5cGUgbikKLXsKLSAgICBtZW1ibG9jazo6cmVzaXplIChuKTsKLSAgICBhdChuKSA9IGNfVGVybWluYXRvcjsKLX0KLQotLy8vIEFzc2lnbnMgaXRzZWxmIHRoZSB2YWx1ZSBvZiBzdHJpbmcgXHAgcwotdm9pZCBzdHJpbmc6OmFzc2lnbiAoY29uc3RfcG9pbnRlciBzKQotewotICAgIGlmICghcykKLQlzID0gZW1wdHlfc3RyaW5nOwotICAgIGFzc2lnbiAocywgc3RybGVuIChzKSk7Ci19Ci0KLS8vLyBBc3NpZ25zIGl0c2VsZiB0aGUgdmFsdWUgb2Ygc3RyaW5nIFxwIHMgb2YgbGVuZ3RoIFxwIGxlbi4KLXZvaWQgc3RyaW5nOjphc3NpZ24gKGNvbnN0X3BvaW50ZXIgcywgc2l6ZV90eXBlIGxlbikKLXsKLSAgICB3aGlsZSAobGVuICYmIHNbbGVuIC0gMV0gPT0gY19UZXJtaW5hdG9yKQotCS0tIGxlbjsKLSAgICByZXNpemUgKGxlbik7Ci0gICAgY29weSAocywgbGVuKTsKLX0KLQotLy8vIEFwcGVuZHMgdG8gaXRzZWxmIHRoZSB2YWx1ZSBvZiBzdHJpbmcgXHAgcyBvZiBsZW5ndGggXHAgbGVuLgotdm9pZCBzdHJpbmc6OmFwcGVuZCAoY29uc3RfcG9pbnRlciBzKQotewotICAgIGlmICghcykKLQlzID0gZW1wdHlfc3RyaW5nOwotICAgIGFwcGVuZCAocywgc3RybGVuIChzKSk7Ci19Ci0KLS8vLyBBcHBlbmRzIHRvIGl0c2VsZiB0aGUgdmFsdWUgb2Ygc3RyaW5nIFxwIHMgb2YgbGVuZ3RoIFxwIGxlbi4KLXZvaWQgc3RyaW5nOjphcHBlbmQgKGNvbnN0X3BvaW50ZXIgcywgc2l6ZV90eXBlIGxlbikKLXsKLSAgICB3aGlsZSAobGVuICYmIHNbbGVuIC0gMV0gPT0gY19UZXJtaW5hdG9yKQotCS0tIGxlbjsKLSAgICByZXNpemUgKHNpemUoKSArIGxlbik7Ci0gICAgY29weV9uIChzLCBsZW4sIGVuZCgpIC0gbGVuKTsKLX0KLQotLy8vIEFwcGVuZHMgdG8gaXRzZWxmIFxwIG4gY2hhcmFjdGVycyBvZiB2YWx1ZSBccCBjLgotdm9pZCBzdHJpbmc6OmFwcGVuZCAoc2l6ZV90eXBlIG4sIHZhbHVlX3R5cGUgYykKLXsKLSAgICByZXNpemUgKHNpemUoKSArIG4pOwotICAgIGZpbGxfbiAoZW5kKCkgLSBuLCBuLCBjKTsKLX0KLQotLy8vIENvcGllcyBpbnRvIGl0c2VsZiBhdCBvZmZzZXQgXHAgc3RhcnQsIHRoZSB2YWx1ZSBvZiBzdHJpbmcgXHAgcCBvZiBsZW5ndGggXHAgbi4KLXN0cmluZzo6c2l6ZV90eXBlIHN0cmluZzo6Y29weXRvIChwb2ludGVyIHAsIHNpemVfdHlwZSBuLCBjb25zdF9pdGVyYXRvciBzdGFydCkgY29uc3QKLXsKLSAgICBhc3NlcnQgKHAgJiYgbik7Ci0gICAgaWYgKCFzdGFydCkKLQlzdGFydCA9IGJlZ2luKCk7Ci0gICAgY29uc3Qgc2l6ZV90eXBlIGJ0YyA9IG1pbihuIC0gc2l6ZV9UZXJtaW5hdG9yLCBzaXplKCkpOwotICAgIGNvcHlfbiAoc3RhcnQsIGJ0YywgcCk7Ci0gICAgcFtidGNdID0gY19UZXJtaW5hdG9yOwotICAgIHJldHVybiAoYnRjICsgc2l6ZV9UZXJtaW5hdG9yKTsKLX0KLQotLy8vIFJldHVybnMgY29tcGFyaXNvbiB2YWx1ZSByZWdhcmRpbmcgc3RyaW5nIFxwIHMuCi0vLy8gVGhlIHJldHVybiB2YWx1ZSBpczoKLS8vLyBcbGkgMSBpZiB0aGlzIHN0cmluZyBpcyBncmVhdGVyIChieSB2YWx1ZSwgbm90IGxlbmd0aCkgdGhhbiBzdHJpbmcgXHAgcwotLy8vIFxsaSAwIGlmIHRoaXMgc3RyaW5nIGlzIGVxdWFsIHRvIHN0cmluZyBccCBzCi0vLy8gXGxpIC0xIGlmIHRoaXMgc3RyaW5nIGlzIGxlc3MgdGhhbiBzdHJpbmcgXHAgcwotLy8vCi0vKnN0YXRpYyovIGludCBzdHJpbmc6OmNvbXBhcmUgKGNvbnN0X2l0ZXJhdG9yIGZpcnN0MSwgY29uc3RfaXRlcmF0b3IgbGFzdDEsIGNvbnN0X2l0ZXJhdG9yIGZpcnN0MiwgY29uc3RfaXRlcmF0b3IgbGFzdDIpCi17Ci0gICAgYXNzZXJ0IChmaXJzdDEgPD0gbGFzdDEgJiYgKGZpcnN0MiA8PSBsYXN0MiB8fCAhbGFzdDIpICYmICJOZWdhdGl2ZSByYW5nZXMgcmVzdWx0IGluIG1lbW9yeSBhbGxvY2F0aW9uIGVycm9ycy4iKTsKLSAgICBjb25zdCBzaXplX3R5cGUgbGVuMSA9IGRpc3RhbmNlIChmaXJzdDEsIGxhc3QxKSwgbGVuMiA9IGRpc3RhbmNlIChmaXJzdDIsIGxhc3QyKTsKLSAgICBjb25zdCBpbnQgcnZieWxlbiA9IHNpZ24gKGludChsZW4xIC0gbGVuMikpOwotICAgIGludCBydiA9IG1lbWNtcCAoZmlyc3QxLCBmaXJzdDIsIG1pbiAobGVuMSwgbGVuMikpOwotICAgIHJldHVybiAocnYgPyBydiA6IHJ2YnlsZW4pOwotfQotCi0vLy8gUmV0dXJucyB0cnVlIGlmIHRoaXMgc3RyaW5nIGlzIGVxdWFsIHRvIHN0cmluZyBccCBzLgotYm9vbCBzdHJpbmc6Om9wZXJhdG9yPT0gKGNvbnN0X3BvaW50ZXIgcykgY29uc3QKLXsKLSAgICBpZiAoIXMpCi0JcyA9IGVtcHR5X3N0cmluZzsKLSAgICByZXR1cm4gKHNpemUoKSA9PSBzdHJsZW4ocykgJiYgMCA9PSBtZW1jbXAgKGNfc3RyKCksIHMsIHNpemUoKSkpOwotfQotCi0vLy8gUmV0dXJucyB0aGUgYmVnaW5uaW5nIG9mIGNoYXJhY3RlciBccCBpLgotc3RyaW5nOjppdGVyYXRvciBzdHJpbmc6OnV0ZjhfaWF0ICh1b2ZmX3QgaSkKLXsKLSAgICB1dGY4aXN0cmluZ19pdGVyYXRvciBjZmluZGVyIChiZWdpbigpKTsKLSAgICBjZmluZGVyICs9IGk7Ci0gICAgcmV0dXJuIChjZmluZGVyLmJhc2UoKSk7Ci19Ci0KLS8vLyBJbnNlcnRzIHdpZGUgY2hhcmFjdGVyIFxwIGMgYXQgXHAgaXAgXHAgbiB0aW1lcyBhcyBhIFVURi04IHN0cmluZy4KLS8vLwotLy8vIFxwIGlwIGlzIGEgY2hhcmFjdGVyIHBvc2l0aW9uLCBub3QgYSBieXRlIHBvc2l0aW9uLCBhbmQgbXVzdCBmYWxsIGluCi0vLy8gdGhlIDAgdGhyb3VnaCBsZW5ndGgoKSByYW5nZS4KLS8vLyBUaGUgZmlyc3QgYXJndW1lbnQgaXMgbm90IGFuIGl0ZXJhdG9yIGJlY2F1c2UgaXQgaXMgcmF0aGVyIGRpZmZpY3VsdAotLy8vIHRvIGdldCBvbmUuIFlvdSdkIGhhdmUgdG8gdXNlICgodXRmOGJlZ2luKCkgKyBuKS5iYXNlKCkpIGFzIHRoZSBmaXJzdAotLy8vIGFyZ3VtZW50LCB3aGljaCBpcyByYXRoZXIgdWdseS4gQmVzaWRlcywgdGhlbiB0aGlzIGluc2VydCB3b3VsZCBiZQotLy8vIGFtYmlndW91cyB3aXRoIHRoZSByZWd1bGFyIGNoYXJhY3RlciBpbnNlcnQuCi0vLy8KLXZvaWQgc3RyaW5nOjppbnNlcnQgKGNvbnN0IHVvZmZfdCBpcCwgd2NoYXJfdCBjLCBzaXplX3R5cGUgbikKLXsKLSAgICBpdGVyYXRvciBpcHAgKHV0ZjhfaWF0IChpcCkpOwotICAgIGlwcCA9IGl0ZXJhdG9yIChtZW1ibG9jazo6aW5zZXJ0IChtZW1ibG9jazo6aXRlcmF0b3IoaXBwKSwgbiAqIFV0ZjhCeXRlcyhjKSkpOwotICAgIGZpbGxfbiAodXRmOG91dCAoaXBwKSwgbiwgYyk7Ci0gICAgKmVuZCgpID0gY19UZXJtaW5hdG9yOwotfQotCi0vLy8gSW5zZXJ0cyBzZXF1ZW5jZSBvZiB3aWRlIGNoYXJhY3RlcnMgYXQgXHAgaXAuCi12b2lkIHN0cmluZzo6aW5zZXJ0IChjb25zdCB1b2ZmX3QgaXAsIGNvbnN0IHdjaGFyX3QqIGZpcnN0LCBjb25zdCB3Y2hhcl90KiBsYXN0LCBjb25zdCBzaXplX3R5cGUgbikKLXsKLSAgICBpdGVyYXRvciBpcHAgKHV0ZjhfaWF0IChpcCkpOwotICAgIHNpemVfdHlwZSBudGkgPSBkaXN0YW5jZSAoZmlyc3QsIGxhc3QpLCBidGkgPSAwOwotICAgIGZvciAodW9mZl90IGkgPSAwOyBpIDwgbnRpOyArKyBpKQotCWJ0aSArPSBVdGY4Qnl0ZXMoZmlyc3RbaV0pOwotICAgIGlwcCA9IGl0ZXJhdG9yIChtZW1ibG9jazo6aW5zZXJ0IChtZW1ibG9jazo6aXRlcmF0b3IoaXBwKSwgbiAqIGJ0aSkpOwotICAgIHV0Zjhvc3RyaW5nX2l0ZXJhdG9yIHVvdXQgKHV0ZjhvdXQgKGlwcCkpOwotICAgIGZvciAodW9mZl90IGogPSAwOyBqIDwgbjsgKysgaikKLQlmb3IgKHVvZmZfdCBrID0gMDsgayA8IG50aTsgKysgaywgKysgdW91dCkKLQkgICAgKnVvdXQgPSBmaXJzdFtrXTsKLSAgICAqZW5kKCkgPSBjX1Rlcm1pbmF0b3I7Ci19Ci0KLS8vLyBJbnNlcnRzIGNoYXJhY3RlciBccCBjIGludG8gdGhpcyBzdHJpbmcgYXQgXHAgc3RhcnQuCi1zdHJpbmc6Oml0ZXJhdG9yIHN0cmluZzo6aW5zZXJ0IChpdGVyYXRvciBzdGFydCwgY29uc3RfcmVmZXJlbmNlIGMsIHNpemVfdHlwZSBuKQotewotICAgIHN0YXJ0ID0gaXRlcmF0b3IgKG1lbWJsb2NrOjppbnNlcnQgKG1lbWJsb2NrOjppdGVyYXRvcihzdGFydCksIG4pKTsKLSAgICBmaWxsX24gKHN0YXJ0LCBuLCBjKTsKLSAgICAqZW5kKCkgPSBjX1Rlcm1pbmF0b3I7Ci0gICAgcmV0dXJuIChzdGFydCk7Ci19Ci0KLS8vLyBJbnNlcnRzIFxwIGNvdW50IGluc3RhbmNlcyBvZiBzdHJpbmcgXHAgcyBhdCBvZmZzZXQgXHAgc3RhcnQuCi1zdHJpbmc6Oml0ZXJhdG9yIHN0cmluZzo6aW5zZXJ0IChpdGVyYXRvciBzdGFydCwgY29uc3RfcG9pbnRlciBzLCBzaXplX3R5cGUgbikKLXsKLSAgICBpZiAoIXMpCi0JcyA9IGVtcHR5X3N0cmluZzsKLSAgICByZXR1cm4gKGluc2VydCAoc3RhcnQsIHMsIHMgKyBzdHJsZW4ocyksIG4pKTsKLX0KLQotLy8vIEluc2VydHMgW2ZpcnN0LGxhc3RdIFxwIG4gdGltZXMuCi1zdHJpbmc6Oml0ZXJhdG9yIHN0cmluZzo6aW5zZXJ0IChpdGVyYXRvciBzdGFydCwgY29uc3RfcG9pbnRlciBmaXJzdCwgY29uc3RfcG9pbnRlciBsYXN0LCBzaXplX3R5cGUgbikKLXsKLSAgICBhc3NlcnQgKGZpcnN0IDw9IGxhc3QpOwotICAgIGFzc2VydCAoYmVnaW4oKSA8PSBzdGFydCAmJiBlbmQoKSA+PSBzdGFydCk7Ci0gICAgYXNzZXJ0ICgoZmlyc3QgPCBiZWdpbigpIHx8IGZpcnN0ID49IGVuZCgpIHx8IHNpemUoKSArIGFic19kaXN0YW5jZShmaXJzdCxsYXN0KSA8IGNhcGFjaXR5KCkpICYmICJJbnNlcnRpb24gb2Ygc2VsZiB3aXRoIGF1dG9yZXNpemUgaXMgbm90IHN1cHBvcnRlZCIpOwotICAgIHN0YXJ0ID0gaXRlcmF0b3IgKG1lbWJsb2NrOjppbnNlcnQgKG1lbWJsb2NrOjppdGVyYXRvcihzdGFydCksIGRpc3RhbmNlKGZpcnN0LCBsYXN0KSAqIG4pKTsKLSAgICBmaWxsIChtZW1ibG9jazo6aXRlcmF0b3Ioc3RhcnQpLCBmaXJzdCwgZGlzdGFuY2UoZmlyc3QsIGxhc3QpLCBuKTsKLSAgICAqZW5kKCkgPSBjX1Rlcm1pbmF0b3I7Ci0gICAgcmV0dXJuIChzdGFydCk7Ci19Ci0KLS8vLyBFcmFzZXMgXHAgc2l6ZSBieXRlcyBhdCBccCBzdGFydC4KLXN0cmluZzo6aXRlcmF0b3Igc3RyaW5nOjplcmFzZSAoaXRlcmF0b3IgZXAsIHNpemVfdHlwZSBuKQotewotICAgIHN0cmluZzo6aXRlcmF0b3IgcnYgPSBtZW1ibG9jazo6ZXJhc2UgKG1lbWJsb2NrOjppdGVyYXRvcihlcCksIG4pOwotICAgICplbmQoKSA9IGNfVGVybWluYXRvcjsKLSAgICByZXR1cm4gKHJ2KTsKLX0KLQotLy8vIEVyYXNlcyBccCBzaXplIGNoYXJhY3RlcnMgYXQgXHAgc3RhcnQuCi0vLy8gXHAgc3RhcnQgaXMgYSBjaGFyYWN0ZXIgcG9zaXRpb24sIG5vdCBhIGJ5dGUgcG9zaXRpb24sIGFuZCBtdXN0IGJlCi0vLy8gaW4gdGhlIDAuLmxlbmd0aCgpIHJhbmdlLgotLy8vCi12b2lkIHN0cmluZzo6ZXJhc2UgKHVvZmZfdCBlcCwgc2l6ZV90eXBlIG4pCi17Ci0gICAgaXRlcmF0b3IgZmlyc3QgKHV0ZjhfaWF0KGVwKSk7Ci0gICAgc2l6ZV90IG5ieXRlcyAodXRmOF9pYXQoZXAgKyBuKSAtIGZpcnN0KTsKLSAgICBtZW1ibG9jazo6ZXJhc2UgKGZpcnN0LCBuYnl0ZXMpOwotICAgICplbmQoKSA9IGNfVGVybWluYXRvcjsKLX0KLQotLy8vIFJlcGxhY2VzIHJhbmdlIFtccCBzdGFydCwgXHAgc3RhcnQgKyBccCBsZW5dIHdpdGggc3RyaW5nIFxwIHMuCi12b2lkIHN0cmluZzo6cmVwbGFjZSAoaXRlcmF0b3IgZmlyc3QsIGl0ZXJhdG9yIGxhc3QsIGNvbnN0X3BvaW50ZXIgcykKLXsKLSAgICBpZiAoIXMpCi0JcyA9IGVtcHR5X3N0cmluZzsKLSAgICByZXBsYWNlIChmaXJzdCwgbGFzdCwgcywgcyArIHN0cmxlbihzKSk7Ci19Ci0KLS8vLyBSZXBsYWNlcyByYW5nZSBbXHAgc3RhcnQsIFxwIHN0YXJ0ICsgXHAgbGVuXSB3aXRoIFxwIGNvdW50IGluc3RhbmNlcyBvZiBzdHJpbmcgXHAgcy4KLXZvaWQgc3RyaW5nOjpyZXBsYWNlIChpdGVyYXRvciBmaXJzdCwgaXRlcmF0b3IgbGFzdCwgY29uc3RfcG9pbnRlciBpMSwgY29uc3RfcG9pbnRlciBpMiwgc2l6ZV90eXBlIG4pCi17Ci0gICAgYXNzZXJ0IChmaXJzdCA8PSBsYXN0KTsKLSAgICBhc3NlcnQgKG4gfHwgZGlzdGFuY2UoZmlyc3QsIGxhc3QpKTsKLSAgICBhc3NlcnQgKGZpcnN0ID49IGJlZ2luKCkgJiYgZmlyc3QgPD0gZW5kKCkgJiYgbGFzdCA+PSBmaXJzdCAmJiBsYXN0IDw9IGVuZCgpKTsKLSAgICBhc3NlcnQgKChpMSA8IGJlZ2luKCkgfHwgaTEgPj0gZW5kKCkgfHwgYWJzX2Rpc3RhbmNlKGkxLGkyKSAqIG4gKyBzaXplKCkgPCBjYXBhY2l0eSgpKSAmJiAiUmVwbGFjZW1lbnQgYnkgc2VsZiBjYW4gbm90IGF1dG9yZXNpemUiKTsKLSAgICBjb25zdCBzaXplX3R5cGUgYnRlID0gZGlzdGFuY2UoZmlyc3QsIGxhc3QpLCBidGkgPSBkaXN0YW5jZShpMSwgaTIpICogbjsKLSAgICBpZiAoYnRpIDwgYnRlKQotCWZpcnN0ID0gaXRlcmF0b3IgKG1lbWJsb2NrOjplcmFzZSAobWVtYmxvY2s6Oml0ZXJhdG9yKGZpcnN0KSwgYnRlIC0gYnRpKSk7Ci0gICAgZWxzZSBpZiAoYnRlIDwgYnRpKQotCWZpcnN0ID0gaXRlcmF0b3IgKG1lbWJsb2NrOjppbnNlcnQgKG1lbWJsb2NrOjppdGVyYXRvcihmaXJzdCksIGJ0aSAtIGJ0ZSkpOwotICAgIGZpbGwgKG1lbWJsb2NrOjppdGVyYXRvcihmaXJzdCksIGkxLCBkaXN0YW5jZShpMSwgaTIpLCBuKTsKLSAgICAqZW5kKCkgPSBjX1Rlcm1pbmF0b3I7Ci19Ci0KLS8vLyBSZXR1cm5zIHRoZSBvZmZzZXQgb2YgdGhlIGZpcnN0IG9jY3VyZW5jZSBvZiBccCBjIGFmdGVyIFxwIHBvcy4KLXVvZmZfdCBzdHJpbmc6OmZpbmQgKGNvbnN0X3JlZmVyZW5jZSBjLCB1b2ZmX3QgcG9zKSBjb25zdAotewotICAgIGNvbnN0X2l0ZXJhdG9yIGZvdW5kID0gOjp1c3RsOjpmaW5kIChpYXQocG9zKSwgZW5kKCksIGMpOwotICAgIHJldHVybiAoZm91bmQgPCBlbmQoKSA/IGRpc3RhbmNlKGJlZ2luKCksZm91bmQpIDogbnBvcyk7Ci19Ci0KLS8vLyBSZXR1cm5zIHRoZSBvZmZzZXQgb2YgdGhlIGZpcnN0IG9jY3VyZW5jZSBvZiBzdWJzdHJpbmcgXHAgcyBvZiBsZW5ndGggXHAgbiBhZnRlciBccCBwb3MuCi11b2ZmX3Qgc3RyaW5nOjpmaW5kIChjb25zdCBzdHJpbmcmIHMsIHVvZmZfdCBwb3MpIGNvbnN0Ci17Ci0gICAgaWYgKHMuZW1wdHkoKSB8fCBzLnNpemUoKSA+IHNpemUoKSAtIHBvcykKLQlyZXR1cm4gKG5wb3MpOwotICAgIGNvbnN0IHVvZmZfdCBlbmRpID0gcy5zaXplKCkgLSAxOwotICAgIGNvbnN0X3JlZmVyZW5jZSBlbmRjaGFyID0gc1tlbmRpXTsKLSAgICB1b2ZmX3QgbGFzdFBvcyA9IGVuZGk7Ci0gICAgd2hpbGUgKGxhc3RQb3MtLSAmJiBzW2xhc3RQb3NdICE9IGVuZGNoYXIpOwotICAgIGNvbnN0IHNpemVfdHlwZSBza2lwID0gZW5kaSAtIGxhc3RQb3M7Ci0gICAgY29uc3RfaXRlcmF0b3IgaSA9IGlhdChwb3MpICsgZW5kaTsKLSAgICBmb3IgKDsgaSA8IGVuZCgpICYmIChpID0gOjp1c3RsOjpmaW5kIChpLCBlbmQoKSwgZW5kY2hhcikpIDwgZW5kKCk7IGkgKz0gc2tpcCkKLQlpZiAobWVtY21wIChpIC0gZW5kaSwgcy5jX3N0cigpLCBzLnNpemUoKSkgPT0gMCkKLQkgICAgcmV0dXJuIChkaXN0YW5jZSAoYmVnaW4oKSwgaSkgLSBlbmRpKTsKLSAgICByZXR1cm4gKG5wb3MpOwotfQotCi0vLy8gUmV0dXJucyB0aGUgb2Zmc2V0IG9mIHRoZSBsYXN0IG9jY3VyZW5jZSBvZiBjaGFyYWN0ZXIgXHAgYyBiZWZvcmUgXHAgcG9zLgotdW9mZl90IHN0cmluZzo6cmZpbmQgKGNvbnN0X3JlZmVyZW5jZSBjLCB1b2ZmX3QgcG9zKSBjb25zdAotewotICAgIGZvciAoaW50IGkgPSBtaW4ocG9zLHNpemUoKS0xKTsgaSA+PSAwOyAtLWkpCi0JaWYgKGF0KGkpID09IGMpCi0JICAgIHJldHVybiAoaSk7Ci0gICAgcmV0dXJuIChucG9zKTsKLX0KLQotLy8vIFJldHVybnMgdGhlIG9mZnNldCBvZiB0aGUgbGFzdCBvY2N1cmVuY2Ugb2Ygc3Vic3RyaW5nIFxwIHMgb2Ygc2l6ZSBccCBuIGJlZm9yZSBccCBwb3MuCi11b2ZmX3Qgc3RyaW5nOjpyZmluZCAoY29uc3Qgc3RyaW5nJiBzLCB1b2ZmX3QgcG9zKSBjb25zdAotewotICAgIGNvbnN0X2l0ZXJhdG9yIGQgPSBpYXQocG9zKSAtIDE7Ci0gICAgY29uc3RfaXRlcmF0b3Igc3AgPSBiZWdpbigpICsgcy5zaXplKCkgLSAxOwotICAgIGNvbnN0X2l0ZXJhdG9yIG0gPSBzLmVuZCgpIC0gMTsKLSAgICBmb3IgKHVvZmZfdCBpID0gMDsgZCA+IHNwICYmIGkgPCBzLnNpemUoKTsgLS0gZCkKLQlmb3IgKGkgPSAwOyBpIDwgcy5zaXplKCk7ICsrIGkpCi0JICAgIGlmIChtWy1pXSAhPSBkWy1pXSkKLQkJYnJlYWs7Ci0gICAgcmV0dXJuIChkID4gc3AgPyBkaXN0YW5jZSAoYmVnaW4oKSwgZCArIDIgLSBzLnNpemUoKSkgOiBucG9zKTsKLX0KLQotLy8vIFJldHVybnMgdGhlIG9mZnNldCBvZiB0aGUgZmlyc3Qgb2NjdXJlbmNlIG9mIG9uZSBvZiBjaGFyYWN0ZXJzIGluIFxwIHMgb2Ygc2l6ZSBccCBuIGFmdGVyIFxwIHBvcy4KLXVvZmZfdCBzdHJpbmc6OmZpbmRfZmlyc3Rfb2YgKGNvbnN0IHN0cmluZyYgcywgdW9mZl90IHBvcykgY29uc3QKLXsKLSAgICBmb3IgKHVvZmZfdCBpID0gbWluKHBvcyxzaXplKCkpOyBpIDwgc2l6ZSgpOyArKyBpKQotCWlmIChzLmZpbmQgKGF0KGkpKSAhPSBucG9zKQotCSAgICByZXR1cm4gKGkpOwotICAgIHJldHVybiAobnBvcyk7Ci19Ci0KLS8vLyBSZXR1cm5zIHRoZSBvZmZzZXQgb2YgdGhlIGZpcnN0IG9jY3VyZW5jZSBvZiBvbmUgb2YgY2hhcmFjdGVycyBub3QgaW4gXHAgcyBvZiBzaXplIFxwIG4gYWZ0ZXIgXHAgcG9zLgotdW9mZl90IHN0cmluZzo6ZmluZF9maXJzdF9ub3Rfb2YgKGNvbnN0IHN0cmluZyYgcywgdW9mZl90IHBvcykgY29uc3QKLXsKLSAgICBmb3IgKHVvZmZfdCBpID0gbWluKHBvcyxzaXplKCkpOyBpIDwgc2l6ZSgpOyArKyBpKQotCWlmIChzLmZpbmQgKGF0KGkpKSA9PSBucG9zKQotCSAgICByZXR1cm4gKGkpOwotICAgIHJldHVybiAobnBvcyk7Ci19Ci0KLS8vLyBSZXR1cm5zIHRoZSBvZmZzZXQgb2YgdGhlIGxhc3Qgb2NjdXJlbmNlIG9mIG9uZSBvZiBjaGFyYWN0ZXJzIGluIFxwIHMgb2Ygc2l6ZSBccCBuIGJlZm9yZSBccCBwb3MuCi11b2ZmX3Qgc3RyaW5nOjpmaW5kX2xhc3Rfb2YgKGNvbnN0IHN0cmluZyYgcywgdW9mZl90IHBvcykgY29uc3QKLXsKLSAgICBmb3IgKGludCBpID0gbWluKHBvcyxzaXplKCktMSk7IGkgPj0gMDsgLS0gaSkKLQlpZiAocy5maW5kIChhdChpKSkgIT0gbnBvcykKLQkgICAgcmV0dXJuIChpKTsKLSAgICByZXR1cm4gKG5wb3MpOwotfQotCi0vLy8gUmV0dXJucyB0aGUgb2Zmc2V0IG9mIHRoZSBsYXN0IG9jY3VyZW5jZSBvZiBvbmUgb2YgY2hhcmFjdGVycyBub3QgaW4gXHAgcyBvZiBzaXplIFxwIG4gYmVmb3JlIFxwIHBvcy4KLXVvZmZfdCBzdHJpbmc6OmZpbmRfbGFzdF9ub3Rfb2YgKGNvbnN0IHN0cmluZyYgcywgdW9mZl90IHBvcykgY29uc3QKLXsKLSAgICBmb3IgKGludCBpID0gbWluKHBvcyxzaXplKCktMSk7IGkgPj0gMDsgLS0gaSkKLQlpZiAocy5maW5kIChhdChpKSkgPT0gbnBvcykKLQkgICAgcmV0dXJuIChpKTsKLSAgICByZXR1cm4gKG5wb3MpOwotfQotCi0vLy8gRXF1aXZhbGVudCB0byBhIHZzcHJpbnRmIG9uIHRoZSBzdHJpbmcuCi1pbnQgc3RyaW5nOjp2Zm9ybWF0IChjb25zdCBjaGFyKiBmbXQsIHZhX2xpc3QgYXJncykKLXsKLSNpZiBIQVZFX1ZBX0NPUFkKLSAgICB2YV9saXN0IGFyZ3MyOwotI2Vsc2UKLSAgICAjZGVmaW5lIGFyZ3MyIGFyZ3MKLSAgICAjdW5kZWYgX192YV9jb3B5Ci0gICAgI2RlZmluZSBfX3ZhX2NvcHkoeCx5KQotI2VuZGlmCi0gICAgc2l6ZV90IHJ2ID0gc2l6ZSgpOwotICAgIGRvIHsKLQlyZXNlcnZlIChydik7Ci0JX192YV9jb3B5IChhcmdzMiwgYXJncyk7Ci0JcnYgPSB2c25wcmludGYgKGRhdGEoKSwgbWVtYmxvY2s6OmNhcGFjaXR5KCksIGZtdCwgYXJnczIpOwotCXJ2ID0gbWluIChydiwgbWVtYmxvY2s6OmNhcGFjaXR5KCkpOwotICAgIH0gd2hpbGUgKHJ2ID4gY2FwYWNpdHkoKSk7Ci0gICAgcmVzaXplIChtaW4gKHJ2LCBjYXBhY2l0eSgpKSk7Ci0gICAgcmV0dXJuIChydik7Ci19Ci0KLS8vLyBFcXVpdmFsZW50IHRvIGEgc3ByaW50ZiBvbiB0aGUgc3RyaW5nLgotaW50IHN0cmluZzo6Zm9ybWF0IChjb25zdCBjaGFyKiBmbXQsIC4uLikKLXsKLSAgICB2YV9saXN0IGFyZ3M7Ci0gICAgdmFfc3RhcnQgKGFyZ3MsIGZtdCk7Ci0gICAgY29uc3QgaW50IHJ2ID0gdmZvcm1hdCAoZm10LCBhcmdzKTsKLSAgICB2YV9lbmQgKGFyZ3MpOwotICAgIHJldHVybiAocnYpOwotfQotCi0vLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlcXVpcmVkIHRvIHdyaXRlIHRoaXMgb2JqZWN0IHRvIGEgc3RyZWFtLgotc2l6ZV90IHN0cmluZzo6c3RyZWFtX3NpemUgKHZvaWQpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIChVdGY4Qnl0ZXMoc2l6ZSgpKSArIHNpemUoKSk7Ci19Ci0KLS8vLyBSZWFkcyB0aGUgb2JqZWN0IGZyb20gc3RyZWFtIFxwIG9zCi12b2lkIHN0cmluZzo6cmVhZCAoaXN0cmVhbSYgaXMpCi17Ci0gICAgY2hhciBzemJ1ZiBbOF07Ci0gICAgaXMgPj4gc3pidWZbMF07Ci0gICAgc2l6ZV90IHN6c3ogKFV0ZjhTZXF1ZW5jZUJ5dGVzIChzemJ1ZlswXSkgLSAxKSwgbiA9IDA7Ci0gICAgaXMudmVyaWZ5X3JlbWFpbmluZyAoInJlYWQiLCAidXN0bDo6c3RyaW5nIiwgc3pzeik7Ci0gICAgaXMucmVhZCAoc3pidWYgKyAxLCBzenN6KTsKLSAgICBuID0gKnV0ZjhpbihzemJ1Zik7Ci0gICAgaXMudmVyaWZ5X3JlbWFpbmluZyAoInJlYWQiLCAidXN0bDo6c3RyaW5nIiwgbik7Ci0gICAgcmVzaXplIChuKTsKLSAgICBpcy5yZWFkIChkYXRhKCksIHNpemUoKSk7Ci19Ci0KLS8vLyBXcml0ZXMgdGhlIG9iamVjdCB0byBzdHJlYW0gXHAgb3MKLXZvaWQgc3RyaW5nOjp3cml0ZSAob3N0cmVhbSYgb3MpIGNvbnN0Ci17Ci0gICAgY29uc3Qgd3JpdHRlbl9zaXplX3R5cGUgc3ogKHNpemUoKSk7Ci0gICAgYXNzZXJ0IChzeiA9PSBzaXplKCkgJiYgIk5vIHN1cHBvcnQgZm9yIHdyaXRpbmcgc3RyaW5ncyBsYXJnZXIgdGhhbiA0RyIpOwotCi0gICAgY2hhciBzemJ1ZiBbOF07Ci0gICAgdXRmOG91dF9pdGVyYXRvcjxjaGFyKj4gc3pvdXQgKHN6YnVmKTsKLSAgICAqc3pvdXQgPSBzejsKLSAgICBzaXplX3Qgc3pzeiA9IGRpc3RhbmNlIChzemJ1Ziwgc3pvdXQuYmFzZSgpKTsKLQotICAgIG9zLnZlcmlmeV9yZW1haW5pbmcgKCJ3cml0ZSIsICJ1c3RsOjpzdHJpbmciLCBzenN6ICsgc3opOwotICAgIG9zLndyaXRlIChzemJ1Ziwgc3pzeik7Ci0gICAgb3Mud3JpdGUgKGNkYXRhKCksIHN6KTsKLX0KLQotLy8vIFJldHVybnMgYSBoYXNoIHZhbHVlIGZvciBbZmlyc3QsIGxhc3QpCi0vKnN0YXRpYyovIGhhc2h2YWx1ZV90IHN0cmluZzo6aGFzaCAoY29uc3QgY2hhciogZmlyc3QsIGNvbnN0IGNoYXIqIGxhc3QpCi17Ci0gICAgaGFzaHZhbHVlX3QgaCA9IDA7Ci0gICAgLy8gVGhpcyBoYXMgdGhlIGJpdHMgZmxvd2luZyBpbnRvIGVhY2ggb3RoZXIgZnJvbSBib3RoIHNpZGVzIG9mIHRoZSBudW1iZXIKLSAgICBmb3IgKDsgZmlyc3QgPCBsYXN0OyArKyBmaXJzdCkKLQloID0gKmZpcnN0ICsgKChoIDw8IDcpIHwgKGggPj4gQml0c0luVHlwZShoYXNodmFsdWVfdCkgLSA3KSk7Ci0gICAgcmV0dXJuIChoKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgdXN0bAotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91c3RyaW5nLmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91c3RyaW5nLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllY2Y2ZTcuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdXN0cmluZy5oCisrKyAvZGV2L251bGwKQEAgLTEsMjYzICswLDAgQEAKLS8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB1c3RsIGxpYnJhcnksIGFuIFNUTCBpbXBsZW1lbnRhdGlvbi4KLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgYnkgTWlrZSBTaGFyb3YgPG1zaGFyb3ZAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotLy8gVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KLS8vCi0vLyB1c3RyaW5nLmgKLS8vCi0KLSNpZm5kZWYgVVNUUklOR19IXzEyNDlDQjdBMDk4QTkwMTA3NjNBQUM2RDM3QjEzM0NGCi0jZGVmaW5lIFVTVFJJTkdfSF8xMjQ5Q0I3QTA5OEE5MDEwNzYzQUFDNkQzN0IxMzNDRgotCi0jaW5jbHVkZSAibWVtYmxvY2suaCIKLSNpbmNsdWRlICJ1dGY4LmgiCi0jaW5jbHVkZSA8c3RkYXJnLmg+CS8vIGZvciB2YV9saXN0LCB2YV9zdGFydCwgYW5kIHZhX2VuZCAoaW4gc3RyaW5nOjpmb3JtYXQpCi0KLW5hbWVzcGFjZSB1c3RsIHsKLQotLy8vIFxjbGFzcyBzdHJpbmcgdXN0cmluZy5oIHVzdGwuaAotLy8vIFxpbmdyb3VwIFNlcXVlbmNlcwotLy8vCi0vLy8gXGJyaWVmIFNUTCBiYXNpY19zdHJpbmcmbHQ7Y2hhciZndDsgZXF1aXZhbGVudC4KLS8vLwotLy8vIEFuIFNUTCBjb250YWluZXIgZm9yIHRleHQgc3RyaW5nIG1hbmlwdWxhdGlvbi4KLS8vLyBEaWZmZXJlbmNlcyBmcm9tIEMrKyBzdGFuZGFyZDoKLS8vLwktIHN0cmluZyBpcyBhIGNsYXNzLCBub3QgYSB0ZW1wbGF0ZS4gV2lkZSBjaGFyYWN0ZXJzIGFyZSBhc3N1bWVkIHRvIGJlCi0vLy8JCWVuY29kZWQgd2l0aCB1dGY4IGF0IGFsbCB0aW1lcyBleGNlcHQgd2hlbiByZW5kZXJpbmcgb3IgZWRpdGluZywKLS8vLwkJd2hlcmUgeW91IHdvdWxkIHVzZSBhIHV0ZjggaXRlcmF0b3IuCi0vLy8gCS0gZm9ybWF0IG1lbWJlciBmdW5jdGlvbiAtIHlvdSBjYW4sIG9mIGNvdXJzZSB1c2UgYW4gXHJlZiBvc3RyaW5nc3RyZWFtLAotLy8vCQl3aGljaCBhbHNvIGhhdmUgZm9ybWF0IGZ1bmN0aW9ucywgYnV0IG1vc3Qgb2YgdGhlIHRpbWUgdGhpcyB3YXkKLS8vLwkJaXMgbW9yZSBjb252ZW5pZW50LiBCZWNhdXNlIHVTVEwgZG9lcyBub3QgaW1wbGVtZW50IGxvY2FsZXMsCi0vLy8JCWZvcm1hdCBpcyB0aGUgb25seSB3YXkgdG8gY3JlYXRlIGxvY2FsaXplZCBzdHJpbmdzLgotLy8vIAktIGNvbnN0IGNoYXIqIGNhc3Qgb3BlcmF0b3IuIEl0IGlzIG11Y2ggY2xlYXJlciB0byB1c2UgdGhpcyB0aGFuIGhhdmluZwotLy8vIAkJdG8gdHlwZSAuY19zdHIoKSBldmVyeSB0aW1lLgotLy8vIAktIGxlbmd0aCByZXR1cm5zIHRoZSBudW1iZXIgb2YgX2NoYXJhY3RlcnNfLCBub3QgYnl0ZXMuCi0vLy8JCVRoaXMgZnVuY3Rpb24gaXMgTyhOKSwgc28gdXNlIHdpc2VseS4KLS8vLwotY2xhc3Mgc3RyaW5nIDogcHVibGljIG1lbWJsb2NrIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIGNoYXIJCXZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiB2YWx1ZV90eXBlKgkJcG9pbnRlcjsKLSAgICB0eXBlZGVmIGNvbnN0IHZhbHVlX3R5cGUqCWNvbnN0X3BvaW50ZXI7Ci0gICAgdHlwZWRlZiB3Y2hhcl90CQl3dmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIHd2YWx1ZV90eXBlKgl3cG9pbnRlcjsKLSAgICB0eXBlZGVmIGNvbnN0IHd2YWx1ZV90eXBlKgljb25zdF93cG9pbnRlcjsKLSAgICB0eXBlZGVmIHBvaW50ZXIJCWl0ZXJhdG9yOwotICAgIHR5cGVkZWYgY29uc3RfcG9pbnRlcgljb25zdF9pdGVyYXRvcjsKLSAgICB0eXBlZGVmIHZhbHVlX3R5cGUmCQlyZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiB2YWx1ZV90eXBlCQljb25zdF9yZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiA6OnVzdGw6OnJldmVyc2VfaXRlcmF0b3I8aXRlcmF0b3I+CQlyZXZlcnNlX2l0ZXJhdG9yOwotICAgIHR5cGVkZWYgOjp1c3RsOjpyZXZlcnNlX2l0ZXJhdG9yPGNvbnN0X2l0ZXJhdG9yPgljb25zdF9yZXZlcnNlX2l0ZXJhdG9yOwotICAgIHR5cGVkZWYgdXRmOGluX2l0ZXJhdG9yPGNvbnN0X2l0ZXJhdG9yPgkJdXRmOF9pdGVyYXRvcjsKLXB1YmxpYzoKLSAgICBzdGF0aWMgY29uc3QgdW9mZl90IG5wb3MgPSBzdGF0aWNfY2FzdDx1b2ZmX3Q+KC0xKTsJCQkvLy88IFZhbHVlIHRoYXQgbWVhbnMgdGhlIGVuZCBvZiBzdHJpbmcuCi0gICAgc3RhdGljIGNvbnN0IHZhbHVlX3R5cGUgY19UZXJtaW5hdG9yID0gMDsJCQkJLy8vPCBTdHJpbmcgdGVybWluYXRvcgotICAgIHN0YXRpYyBjb25zdCBzaXplX3R5cGUgc2l6ZV9UZXJtaW5hdG9yID0gc2l6ZW9mKGNfVGVybWluYXRvcik7CS8vLzwgTW9zdCBzeXN0ZW1zIHRlcm1pbmF0ZSBzdHJpbmdzIHdpdGggJ1xcMCcKLSAgICBzdGF0aWMgY29uc3QgY2hhciBlbXB0eV9zdHJpbmcgW3NpemVfVGVybWluYXRvcl07CQkJLy8vPCBBbiBlbXB0eSBzdHJpbmcuCi1wdWJsaWM6Ci0JCQkJc3RyaW5nICh2b2lkKTsKLQkJCQlzdHJpbmcgKGNvbnN0IHN0cmluZyYgcyk7Ci0gICAgaW5saW5lCQkJc3RyaW5nIChjb25zdCBzdHJpbmcmIHMsIHVvZmZfdCBvLCBzaXplX3R5cGUgbik7Ci0gICAgaW5saW5lIGV4cGxpY2l0CQlzdHJpbmcgKGNvbnN0IGNtZW1saW5rJiBsKTsKLQkJCQlzdHJpbmcgKGNvbnN0X3BvaW50ZXIgcyk7Ci0gICAgaW5saW5lCQkJc3RyaW5nIChjb25zdF9wb2ludGVyIHMsIHNpemVfdHlwZSBsZW4pOwotICAgIGlubGluZQkJCXN0cmluZyAoY29uc3RfcG9pbnRlciBzMSwgY29uc3RfcG9pbnRlciBzMik7Ci0gICAgZXhwbGljaXQJCQlzdHJpbmcgKHNpemVfdHlwZSBuLCB2YWx1ZV90eXBlIGMgPSBjX1Rlcm1pbmF0b3IpOwotICAgIGlubGluZSBwb2ludGVyCQlkYXRhICh2b2lkKQkJeyByZXR1cm4gKHN0cmluZzo6cG9pbnRlciAobWVtYmxvY2s6OmRhdGEoKSkpOyB9Ci0gICAgaW5saW5lIGNvbnN0X3BvaW50ZXIJY19zdHIgKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChzdHJpbmc6OmNvbnN0X3BvaW50ZXIgKG1lbWJsb2NrOjpjZGF0YSgpKSk7IH0KLSAgICBpbmxpbmUgc2l6ZV90eXBlCQltYXhfc2l6ZSAodm9pZCkgY29uc3QJeyBzaXplX3R5cGUgcyAobWVtYmxvY2s6Om1heF9zaXplKCkpOyByZXR1cm4gKHMgLSAhIXMpOyB9Ci0gICAgaW5saW5lIHNpemVfdHlwZQkJY2FwYWNpdHkgKHZvaWQpIGNvbnN0CXsgc2l6ZV90eXBlIGMgKG1lbWJsb2NrOjpjYXBhY2l0eSgpKTsgcmV0dXJuIChjIC0gISFjKTsgfQotICAgIHZvaWQJCQlyZXNpemUgKHNpemVfdHlwZSBuKTsKLSAgICBpbmxpbmUgdm9pZAkJCWNsZWFyICh2b2lkKQkJeyByZXNpemUgKDApOyB9Ci0gICAgaW5saW5lIGNvbnN0X2l0ZXJhdG9yCWJlZ2luICh2b2lkKSBjb25zdAl7IHJldHVybiAoY29uc3RfaXRlcmF0b3IgKG1lbWJsb2NrOjpiZWdpbigpKSk7IH0KLSAgICBpbmxpbmUgaXRlcmF0b3IJCWJlZ2luICh2b2lkKQkJeyByZXR1cm4gKGl0ZXJhdG9yIChtZW1ibG9jazo6YmVnaW4oKSkpOyB9Ci0gICAgaW5saW5lIGNvbnN0X2l0ZXJhdG9yCWVuZCAodm9pZCkgY29uc3QJeyByZXR1cm4gKGNvbnN0X2l0ZXJhdG9yIChtZW1ibG9jazo6ZW5kKCkpKTsgfQotICAgIGlubGluZSBpdGVyYXRvcgkJZW5kICh2b2lkKQkJeyByZXR1cm4gKGl0ZXJhdG9yIChtZW1ibG9jazo6ZW5kKCkpKTsgfQotICBpbmxpbmUgY29uc3RfcmV2ZXJzZV9pdGVyYXRvcglyYmVnaW4gKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIChlbmQoKSkpOyB9Ci0gICAgaW5saW5lIHJldmVyc2VfaXRlcmF0b3IJcmJlZ2luICh2b2lkKQkJeyByZXR1cm4gKHJldmVyc2VfaXRlcmF0b3IgKGVuZCgpKSk7IH0KLSAgaW5saW5lIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IJcmVuZCAodm9pZCkgY29uc3QJeyByZXR1cm4gKGNvbnN0X3JldmVyc2VfaXRlcmF0b3IgKGJlZ2luKCkpKTsgfQotICAgIGlubGluZSByZXZlcnNlX2l0ZXJhdG9yCXJlbmQgKHZvaWQpCQl7IHJldHVybiAocmV2ZXJzZV9pdGVyYXRvciAoYmVnaW4oKSkpOyB9Ci0gICAgaW5saW5lIHV0ZjhfaXRlcmF0b3IJdXRmOF9iZWdpbiAodm9pZCkgY29uc3QJeyByZXR1cm4gKHV0ZjhfaXRlcmF0b3IgKGJlZ2luKCkpKTsgfQotICAgIGlubGluZSB1dGY4X2l0ZXJhdG9yCXV0ZjhfZW5kICh2b2lkKSBjb25zdAl7IHJldHVybiAodXRmOF9pdGVyYXRvciAoZW5kKCkpKTsgfQotICAgIGlubGluZSBjb25zdF9yZWZlcmVuY2UJYXQgKHVvZmZfdCBwb3MpIGNvbnN0CXsgYXNzZXJ0IChwb3MgPD0gc2l6ZSgpICYmIGJlZ2luKCkpOyByZXR1cm4gKGJlZ2luKClbcG9zXSk7IH0KLSAgICBpbmxpbmUgcmVmZXJlbmNlCQlhdCAodW9mZl90IHBvcykJCXsgYXNzZXJ0IChwb3MgPD0gc2l6ZSgpICYmIGJlZ2luKCkpOyByZXR1cm4gKGJlZ2luKClbcG9zXSk7IH0KLSAgICBpbmxpbmUgY29uc3RfaXRlcmF0b3IJaWF0ICh1b2ZmX3QgcG9zKSBjb25zdAl7IHJldHVybiAoYmVnaW4oKSArIG1pbiAocG9zLCBzaXplKCkpKTsgfQotICAgIGlubGluZSBpdGVyYXRvcgkJaWF0ICh1b2ZmX3QgcG9zKQl7IHJldHVybiAoYmVnaW4oKSArIG1pbiAocG9zLCBzaXplKCkpKTsgfQotICAgIGlubGluZSBzaXplX3R5cGUJCWxlbmd0aCAodm9pZCkgY29uc3QJeyByZXR1cm4gKGRpc3RhbmNlICh1dGY4X2JlZ2luKCksIHV0ZjhfZW5kKCkpKTsgfQotICAgIGlubGluZSB2b2lkCQkJYXBwZW5kIChjb25zdF9pdGVyYXRvciBpMSwgY29uc3RfaXRlcmF0b3IgaTIpCXsgYXBwZW5kIChpMSwgZGlzdGFuY2UgKGkxLCBpMikpOyB9Ci0gICAgdm9pZAkgICAJCWFwcGVuZCAoY29uc3RfcG9pbnRlciBzLCBzaXplX3R5cGUgbGVuKTsKLSAgICB2b2lkCSAgIAkJYXBwZW5kIChjb25zdF9wb2ludGVyIHMpOwotICAgIHZvaWQJCQlhcHBlbmQgKHNpemVfdHlwZSBuLCBjb25zdF9yZWZlcmVuY2UgYyk7Ci0gICAgaW5saW5lIHZvaWQJCQlhcHBlbmQgKHNpemVfdHlwZSBuLCB3dmFsdWVfdHlwZSBjKQkJeyBpbnNlcnQgKHNpemUoKSwgYywgbik7IH0KLSAgICBpbmxpbmUgdm9pZAkJCWFwcGVuZCAoY29uc3Rfd3BvaW50ZXIgczEsIGNvbnN0X3dwb2ludGVyIHMyKQl7IGluc2VydCAoc2l6ZSgpLCBzMSwgczIpOyB9Ci0gICAgaW5saW5lIHZvaWQJCQlhcHBlbmQgKGNvbnN0X3dwb2ludGVyIHMpCQkJeyBjb25zdF93cG9pbnRlciBzZSAocyk7IGZvciAoO3NlJiYqc2U7KytzZSk7IGFwcGVuZCAocywgc2UpOyB9Ci0gICAgaW5saW5lIHZvaWQJCQlhcHBlbmQgKGNvbnN0IHN0cmluZyYgcykJCQl7IGFwcGVuZCAocy5iZWdpbigpLCBzLmVuZCgpKTsgfQotICAgIGlubGluZSB2b2lkCQkJYXBwZW5kIChjb25zdCBzdHJpbmcmIHMsIHVvZmZfdCBvLCBzaXplX3R5cGUgbikJeyBhcHBlbmQgKHMuaWF0KG8pLCBzLmlhdChvK24pKTsgfQotICAgIGlubGluZSB2b2lkCQkJYXNzaWduIChjb25zdF9pdGVyYXRvciBpMSwgY29uc3RfaXRlcmF0b3IgaTIpCXsgYXNzaWduIChpMSwgZGlzdGFuY2UgKGkxLCBpMikpOyB9Ci0gICAgdm9pZAkgICAgCQlhc3NpZ24gKGNvbnN0X3BvaW50ZXIgcywgc2l6ZV90eXBlIGxlbik7Ci0gICAgdm9pZAkgICAgCQlhc3NpZ24gKGNvbnN0X3BvaW50ZXIgcyk7Ci0gICAgaW5saW5lIHZvaWQJCQlhc3NpZ24gKGNvbnN0X3dwb2ludGVyIHMxLCBjb25zdF93cG9pbnRlciBzMikJeyBjbGVhcigpOyBhcHBlbmQgKHMxLCBzMik7IH0KLSAgICBpbmxpbmUgdm9pZAkJCWFzc2lnbiAoY29uc3Rfd3BvaW50ZXIgczEpCQkJeyBjbGVhcigpOyBhcHBlbmQgKHMxKTsgfQotICAgIGlubGluZSB2b2lkCQkJYXNzaWduIChjb25zdCBzdHJpbmcmIHMpCQkJeyBhc3NpZ24gKHMuYmVnaW4oKSwgcy5lbmQoKSk7IH0KLSAgICBpbmxpbmUgdm9pZAkJCWFzc2lnbiAoY29uc3Qgc3RyaW5nJiBzLCB1b2ZmX3Qgbywgc2l6ZV90eXBlIG4pCXsgYXNzaWduIChzLmlhdChvKSwgcy5pYXQobytuKSk7IH0KLSAgICBzaXplX3R5cGUJCQljb3B5dG8gKHBvaW50ZXIgcCwgc2l6ZV90eXBlIG4sIGNvbnN0X2l0ZXJhdG9yIHN0YXJ0ID0gTlVMTCkgY29uc3Q7Ci0gICAgaW5saW5lIGludAkJCWNvbXBhcmUgKGNvbnN0IHN0cmluZyYgcykgY29uc3QJeyByZXR1cm4gKGNvbXBhcmUgKGJlZ2luKCksIGVuZCgpLCBzLmJlZ2luKCksIHMuZW5kKCkpKTsgfQotICAgIGlubGluZSBpbnQJCQljb21wYXJlIChjb25zdF9wb2ludGVyIHMpIGNvbnN0CXsgcmV0dXJuIChjb21wYXJlIChiZWdpbigpLCBlbmQoKSwgcywgcyArIHN0cmxlbihzKSkpOyB9Ci0gICAgc3RhdGljIGludAkJCWNvbXBhcmUgKGNvbnN0X2l0ZXJhdG9yIGZpcnN0MSwgY29uc3RfaXRlcmF0b3IgbGFzdDEsIGNvbnN0X2l0ZXJhdG9yIGZpcnN0MiwgY29uc3RfaXRlcmF0b3IgbGFzdDIpOwotICAgIGlubGluZQkJCW9wZXJhdG9yIGNvbnN0IHZhbHVlX3R5cGUqICh2b2lkKSBjb25zdDsKLSAgICBpbmxpbmUJCQlvcGVyYXRvciB2YWx1ZV90eXBlKiAodm9pZCk7Ci0gICAgaW5saW5lIGNvbnN0IHN0cmluZyYJb3BlcmF0b3I9IChjb25zdCBzdHJpbmcmIHMpCXsgYXNzaWduIChzLmJlZ2luKCksIHMuZW5kKCkpOyByZXR1cm4gKCp0aGlzKTsgfQotICAgIGlubGluZSBjb25zdCBzdHJpbmcmCW9wZXJhdG9yPSAoY29uc3RfcmVmZXJlbmNlIGMpCXsgYXNzaWduICgmYywgMSk7IHJldHVybiAoKnRoaXMpOyB9Ci0gICAgaW5saW5lIGNvbnN0IHN0cmluZyYJb3BlcmF0b3I9IChjb25zdF9wb2ludGVyIHMpCXsgYXNzaWduIChzKTsgcmV0dXJuICgqdGhpcyk7IH0KLSAgICBpbmxpbmUgY29uc3Qgc3RyaW5nJglvcGVyYXRvcj0gKGNvbnN0X3dwb2ludGVyIHMpCXsgYXNzaWduIChzKTsgcmV0dXJuICgqdGhpcyk7IH0KLSAgICBpbmxpbmUgY29uc3Qgc3RyaW5nJglvcGVyYXRvcis9IChjb25zdCBzdHJpbmcmIHMpCXsgYXBwZW5kIChzLmJlZ2luKCksIHMuc2l6ZSgpKTsgcmV0dXJuICgqdGhpcyk7IH0KLSAgICBpbmxpbmUgY29uc3Qgc3RyaW5nJglvcGVyYXRvcis9IChjb25zdF9yZWZlcmVuY2UgYykJeyBhcHBlbmQgKDEsIGMpOyByZXR1cm4gKCp0aGlzKTsgfQotICAgIGlubGluZSBjb25zdCBzdHJpbmcmCW9wZXJhdG9yKz0gKGNvbnN0X3BvaW50ZXIgcykJeyBhcHBlbmQgKHMpOyByZXR1cm4gKCp0aGlzKTsgfQotICAgIGlubGluZSBjb25zdCBzdHJpbmcmCW9wZXJhdG9yKz0gKHd2YWx1ZV90eXBlIGMpCXsgYXBwZW5kICgxLCBjKTsgcmV0dXJuICgqdGhpcyk7IH0KLSAgICBpbmxpbmUgY29uc3Qgc3RyaW5nJglvcGVyYXRvcis9IChjb25zdF93cG9pbnRlciBzKQl7IGFwcGVuZCAocyk7IHJldHVybiAoKnRoaXMpOyB9Ci0gICAgaW5saW5lIHN0cmluZwkJb3BlcmF0b3IrIChjb25zdCBzdHJpbmcmIHMpIGNvbnN0OwotICAgIGlubGluZSBib29sCQkJb3BlcmF0b3I9PSAoY29uc3Qgc3RyaW5nJiBzKSBjb25zdAl7IHJldHVybiAobWVtYmxvY2s6Om9wZXJhdG9yPT0gKHMpKTsgfQotICAgIGJvb2wJCQlvcGVyYXRvcj09IChjb25zdF9wb2ludGVyIHMpIGNvbnN0OwotICAgIGlubGluZSBib29sCQkJb3BlcmF0b3I9PSAoY29uc3RfcmVmZXJlbmNlIGMpIGNvbnN0CXsgcmV0dXJuIChzaXplKCkgPT0gMSAmJiBjID09IGF0KDApKTsgfQotICAgIGlubGluZSBib29sCQkJb3BlcmF0b3IhPSAoY29uc3Qgc3RyaW5nJiBzKSBjb25zdAl7IHJldHVybiAoIW9wZXJhdG9yPT0gKHMpKTsgfQotICAgIGlubGluZSBib29sCQkJb3BlcmF0b3IhPSAoY29uc3RfcG9pbnRlciBzKSBjb25zdAl7IHJldHVybiAoIW9wZXJhdG9yPT0gKHMpKTsgfQotICAgIGlubGluZSBib29sCQkJb3BlcmF0b3IhPSAoY29uc3RfcmVmZXJlbmNlIGMpIGNvbnN0CXsgcmV0dXJuICghb3BlcmF0b3I9PSAoYykpOyB9Ci0gICAgaW5saW5lIGJvb2wJCQlvcGVyYXRvcjwgKGNvbnN0IHN0cmluZyYgcykgY29uc3QJeyByZXR1cm4gKDAgPiBjb21wYXJlIChzKSk7IH0KLSAgICBpbmxpbmUgYm9vbAkJCW9wZXJhdG9yPCAoY29uc3RfcG9pbnRlciBzKSBjb25zdAl7IHJldHVybiAoMCA+IGNvbXBhcmUgKHMpKTsgfQotICAgIGlubGluZSBib29sCQkJb3BlcmF0b3I8IChjb25zdF9yZWZlcmVuY2UgYykgY29uc3QJeyByZXR1cm4gKDAgPiBjb21wYXJlIChiZWdpbigpLCBlbmQoKSwgJmMsICZjICsgMSkpOyB9Ci0gICAgaW5saW5lIGJvb2wJCQlvcGVyYXRvcj4gKGNvbnN0X3BvaW50ZXIgcykgY29uc3QJeyByZXR1cm4gKDAgPCBjb21wYXJlIChzKSk7IH0KLSAgICB2b2lkCQkJaW5zZXJ0IChjb25zdCB1b2ZmX3QgaXAsIHd2YWx1ZV90eXBlIGMsIHNpemVfdHlwZSBuID0gMSk7Ci0gICAgdm9pZAkJCWluc2VydCAoY29uc3QgdW9mZl90IGlwLCBjb25zdF93cG9pbnRlciBmaXJzdCwgY29uc3Rfd3BvaW50ZXIgbGFzdCwgY29uc3Qgc2l6ZV90eXBlIG4gPSAxKTsKLSAgICBpdGVyYXRvcgkJCWluc2VydCAoaXRlcmF0b3Igc3RhcnQsIGNvbnN0X3JlZmVyZW5jZSBjLCBzaXplX3R5cGUgbiA9IDEpOwotICAgIGl0ZXJhdG9yCQkJaW5zZXJ0IChpdGVyYXRvciBzdGFydCwgY29uc3RfcG9pbnRlciBzLCBzaXplX3R5cGUgbiA9IDEpOwotICAgIGl0ZXJhdG9yCQkJaW5zZXJ0IChpdGVyYXRvciBzdGFydCwgY29uc3RfcG9pbnRlciBmaXJzdCwgY29uc3RfaXRlcmF0b3IgbGFzdCwgc2l6ZV90eXBlIG4gPSAxKTsKLSAgICBpbmxpbmUgdm9pZAkJCWluc2VydCAodW9mZl90IGlwLCBjb25zdF9wb2ludGVyIHMsIHNpemVfdHlwZSBubGVuKQkJeyBpbnNlcnQgKGlhdChpcCksIHMsIHMgKyBubGVuKTsgfQotICAgIGlubGluZSB2b2lkCQkJaW5zZXJ0ICh1b2ZmX3QgaXAsIHNpemVfdHlwZSBuLCB2YWx1ZV90eXBlIGMpCQkJeyBpbnNlcnQgKGlhdChpcCksIGMsIG4pOyB9Ci0gICAgaW5saW5lIHZvaWQJCQlpbnNlcnQgKHVvZmZfdCBpcCwgY29uc3Qgc3RyaW5nJiBzLCB1b2ZmX3Qgc3AsIHNpemVfdHlwZSBzbGVuKQl7IGluc2VydCAoaWF0KGlwKSwgcy5pYXQoc3ApLCBzLmlhdChzcCArIHNsZW4pKTsgfQotICAgIGl0ZXJhdG9yCQkJZXJhc2UgKGl0ZXJhdG9yIHN0YXJ0LCBzaXplX3R5cGUgc2l6ZSA9IDEpOwotICAgIHZvaWQJCQllcmFzZSAodW9mZl90IHN0YXJ0LCBzaXplX3R5cGUgc2l6ZSA9IDEpOwotICAgIGlubGluZSBpdGVyYXRvcgkJZXJhc2UgKGl0ZXJhdG9yIGZpcnN0LCBjb25zdF9pdGVyYXRvciBsYXN0KQl7IHJldHVybiAoZXJhc2UgKGZpcnN0LCBzaXplX3R5cGUoZGlzdGFuY2UoZmlyc3QsbGFzdCkpKSk7IH0KLQkJCQlPVkVSTE9BRF9QT0lOVEVSX0FORF9TSVpFX1RfVjIoZXJhc2UsIGl0ZXJhdG9yKQotICAgIGlubGluZSB2b2lkCQkJcHVzaF9iYWNrIChjb25zdF9yZWZlcmVuY2UgYykJeyBhcHBlbmQgKDEsIGMpOyB9Ci0gICAgaW5saW5lIHZvaWQJCQlwdXNoX2JhY2sgKHd2YWx1ZV90eXBlIGMpCXsgYXBwZW5kICgxLCBjKTsgfQotICAgIGlubGluZSB2b2lkCQkJcG9wX2JhY2sgKHZvaWQpCQkJeyByZXNpemUgKHNpemUoKSAtIDEpOyB9Ci0gICAgdm9pZAkJCXJlcGxhY2UgKGl0ZXJhdG9yIGZpcnN0LCBpdGVyYXRvciBsYXN0LCBjb25zdF9wb2ludGVyIHMpOwotICAgIHZvaWQJCQlyZXBsYWNlIChpdGVyYXRvciBmaXJzdCwgaXRlcmF0b3IgbGFzdCwgY29uc3RfcG9pbnRlciBpMSwgY29uc3RfcG9pbnRlciBpMiwgc2l6ZV90eXBlIG4gPSAxKTsKLSAgICBpbmxpbmUgdm9pZAkJCXJlcGxhY2UgKGl0ZXJhdG9yIGZpcnN0LCBpdGVyYXRvciBsYXN0LCBjb25zdCBzdHJpbmcmIHMpCQkJeyByZXBsYWNlIChmaXJzdCwgbGFzdCwgcy5iZWdpbigpLCBzLmVuZCgpKTsgfQotICAgIGlubGluZSB2b2lkCQkJcmVwbGFjZSAoaXRlcmF0b3IgZmlyc3QsIGl0ZXJhdG9yIGxhc3QsIGNvbnN0X3BvaW50ZXIgcywgc2l6ZV90eXBlIHNsZW4pCXsgcmVwbGFjZSAoZmlyc3QsIGxhc3QsIHMsIHMgKyBzbGVuKTsgfQotICAgIGlubGluZSB2b2lkCQkJcmVwbGFjZSAoaXRlcmF0b3IgZmlyc3QsIGl0ZXJhdG9yIGxhc3QsIHNpemVfdHlwZSBuLCB2YWx1ZV90eXBlIGMpCQl7IHJlcGxhY2UgKGZpcnN0LCBsYXN0LCAmYywgJmMgKyAxLCBuKTsgfQotICAgIGlubGluZSB2b2lkCQkJcmVwbGFjZSAodW9mZl90IHJwLCBzaXplX3R5cGUgbiwgY29uc3Qgc3RyaW5nJiBzKQkJCQl7IHJlcGxhY2UgKGlhdChycCksIGlhdChycCArIG4pLCBzKTsgfQotICAgIGlubGluZSB2b2lkCQkJcmVwbGFjZSAodW9mZl90IHJwLCBzaXplX3R5cGUgbiwgY29uc3Qgc3RyaW5nJiBzLCB1b2ZmX3Qgc3AsIHNpemVfdHlwZSBzbGVuKQl7IHJlcGxhY2UgKGlhdChycCksIGlhdChycCArIG4pLCBzLmlhdChzcCksIHMuaWF0KHNwICsgc2xlbikpOyB9Ci0gICAgaW5saW5lIHZvaWQJCQlyZXBsYWNlICh1b2ZmX3QgcnAsIHNpemVfdHlwZSBuLCBjb25zdF9wb2ludGVyIHMsIHNpemVfdHlwZSBzbGVuKQkJeyByZXBsYWNlIChpYXQocnApLCBpYXQocnAgKyBuKSwgcywgcyArIHNsZW4pOyB9Ci0gICAgaW5saW5lIHZvaWQJCQlyZXBsYWNlICh1b2ZmX3QgcnAsIHNpemVfdHlwZSBuLCBjb25zdF9wb2ludGVyIHMpCQkJCXsgcmVwbGFjZSAoaWF0KHJwKSwgaWF0KHJwICsgbiksIHN0cmluZyhzKSk7IH0KLSAgICBpbmxpbmUgdm9pZAkJCXJlcGxhY2UgKHVvZmZfdCBycCwgc2l6ZV90eXBlIG4sIHNpemVfdHlwZSBjb3VudCwgdmFsdWVfdHlwZSBjKQkJCXsgcmVwbGFjZSAoaWF0KHJwKSwgaWF0KHJwICsgbiksIGNvdW50LCBjKTsgfQotICAgIGlubGluZSBzdHJpbmcJCXN1YnN0ciAodW9mZl90IG8sIHNpemVfdHlwZSBuKSBjb25zdAl7IHJldHVybiAoc3RyaW5nICgqdGhpcywgbywgbikpOyB9Ci0gICAgdW9mZl90CQkJZmluZCAoY29uc3RfcmVmZXJlbmNlIGMsIHVvZmZfdCBwb3MgPSAwKSBjb25zdDsKLSAgICB1b2ZmX3QJCQlmaW5kIChjb25zdCBzdHJpbmcmIHMsIHVvZmZfdCBwb3MgPSAwKSBjb25zdDsKLSAgICB1b2ZmX3QJCQlyZmluZCAoY29uc3RfcmVmZXJlbmNlIGMsIHVvZmZfdCBwb3MgPSBucG9zKSBjb25zdDsKLSAgICB1b2ZmX3QJCQlyZmluZCAoY29uc3Qgc3RyaW5nJiBzLCB1b2ZmX3QgcG9zID0gbnBvcykgY29uc3Q7Ci0gICAgdW9mZl90CQkJZmluZF9maXJzdF9vZiAoY29uc3Qgc3RyaW5nJiBzLCB1b2ZmX3QgcG9zID0gMCkgY29uc3Q7Ci0gICAgdW9mZl90CQkJZmluZF9maXJzdF9ub3Rfb2YgKGNvbnN0IHN0cmluZyYgcywgdW9mZl90IHBvcyA9IDApIGNvbnN0OwotICAgIHVvZmZfdAkJCWZpbmRfbGFzdF9vZiAoY29uc3Qgc3RyaW5nJiBzLCB1b2ZmX3QgcG9zID0gbnBvcykgY29uc3Q7Ci0gICAgdW9mZl90CQkJZmluZF9sYXN0X25vdF9vZiAoY29uc3Qgc3RyaW5nJiBzLCB1b2ZmX3QgcG9zID0gbnBvcykgY29uc3Q7Ci0gICAgaW50CQkJCXZmb3JtYXQgKGNvbnN0IGNoYXIqIGZtdCwgdmFfbGlzdCBhcmdzKTsKLSAgICBpbnQJCQkJZm9ybWF0IChjb25zdCBjaGFyKiBmbXQsIC4uLikgX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfXyhfX3ByaW50Zl9fLCAyLCAzKSkpOwotICAgIHZvaWQJCQlyZWFkIChpc3RyZWFtJik7Ci0gICAgdm9pZAkJCXdyaXRlIChvc3RyZWFtJiBvcykgY29uc3Q7Ci0gICAgc2l6ZV90CQkJc3RyZWFtX3NpemUgKHZvaWQpIGNvbnN0OwotICAgIHN0YXRpYyBoYXNodmFsdWVfdAkJaGFzaCAoY29uc3QgY2hhciogZjEsIGNvbnN0IGNoYXIqIGwxKTsKLXByaXZhdGU6Ci0gICAgRExMX0xPQ0FMIGl0ZXJhdG9yCQl1dGY4X2lhdCAodW9mZl90IGkpOwotcHJvdGVjdGVkOgotICAgIGlubGluZSB2aXJ0dWFsIHNpemVfdHlwZQltaW5pbXVtRnJlZUNhcGFjaXR5ICh2b2lkKSBjb25zdCB7IHJldHVybiAoc2l6ZV9UZXJtaW5hdG9yKTsgfQotfTsKLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vLyBBc3NpZ25zIGl0c2VsZiB0aGUgdmFsdWUgb2Ygc3RyaW5nIFxwIHMKLWlubGluZSBzdHJpbmc6OnN0cmluZyAoY29uc3QgY21lbWxpbmsmIHMpCi06IG1lbWJsb2NrICgpCi17Ci0gICAgYXNzaWduIChjb25zdF9pdGVyYXRvciAocy5iZWdpbigpKSwgcy5zaXplKCkpOwotfQotCi0vLy8gQXNzaWducyBpdHNlbGYgYSBbbyxvK24pIHN1YnN0cmluZyBvZiBccCBzLgotaW5saW5lIHN0cmluZzo6c3RyaW5nIChjb25zdCBzdHJpbmcmIHMsIHVvZmZfdCBvLCBzaXplX3R5cGUgbikKLTogbWVtYmxvY2soKQotewotICAgIGFzc2lnbiAocywgbywgbik7Ci19Ci0KLS8vLyBDb3BpZXMgdGhlIHZhbHVlIG9mIFxwIHMgb2YgbGVuZ3RoIFxwIGxlbiBpbnRvIGl0c2VsZi4KLWlubGluZSBzdHJpbmc6OnN0cmluZyAoY29uc3RfcG9pbnRlciBzLCBzaXplX3R5cGUgbGVuKQotOiBtZW1ibG9jayAoKQotewotICAgIGFzc2lnbiAocywgbGVuKTsKLX0KLQotLy8vIENvcGllcyBpbnRvIGl0c2VsZiB0aGUgc3RyaW5nIGRhdGEgYmV0d2VlbiBccCBzMSBhbmQgXHAgczIKLWlubGluZSBzdHJpbmc6OnN0cmluZyAoY29uc3RfcG9pbnRlciBzMSwgY29uc3RfcG9pbnRlciBzMikKLTogbWVtYmxvY2sgKCkKLXsKLSAgICBhc3NlcnQgKHMxIDw9IHMyICYmICJOZWdhdGl2ZSByYW5nZXMgcmVzdWx0IGluIG1lbW9yeSBhbGxvY2F0aW9uIGVycm9ycy4iKTsKLSAgICBhc3NpZ24gKHMxLCBzMik7Ci19Ci0KLS8vLyBSZXR1cm5zIHRoZSBwb2ludGVyIHRvIHRoZSBmaXJzdCBjaGFyYWN0ZXIuCi1pbmxpbmUgc3RyaW5nOjpvcGVyYXRvciBjb25zdCBzdHJpbmc6OnZhbHVlX3R5cGUqICh2b2lkKSBjb25zdAotewotICAgIGFzc2VydCAoKCFlbmQoKSB8fCAqZW5kKCkgPT0gY19UZXJtaW5hdG9yKSAmJiAiVGhpcyBzdHJpbmcgaXMgbGlua2VkIHRvIGRhdGEgdGhhdCBpcyBub3QgMC10ZXJtaW5hdGVkLiBUaGlzIG1heSBjYXVzZSBzZXJpb3VzIHNlY3VyaXR5IHByb2JsZW1zLiBQbGVhc2UgYXNzaWduIHRoZSBkYXRhIGluc3RlYWQgb2YgbGlua2luZy4iKTsKLSAgICByZXR1cm4gKGJlZ2luKCkpOwotfQotCi0vLy8gUmV0dXJucyB0aGUgcG9pbnRlciB0byB0aGUgZmlyc3QgY2hhcmFjdGVyLgotaW5saW5lIHN0cmluZzo6b3BlcmF0b3Igc3RyaW5nOjp2YWx1ZV90eXBlKiAodm9pZCkKLXsKLSAgICBhc3NlcnQgKChlbmQoKSAmJiAqZW5kKCkgPT0gY19UZXJtaW5hdG9yKSAmJiAiVGhpcyBzdHJpbmcgaXMgbGlua2VkIHRvIGRhdGEgdGhhdCBpcyBub3QgMC10ZXJtaW5hdGVkLiBUaGlzIG1heSBjYXVzZSBzZXJpb3VzIHNlY3VyaXR5IHByb2JsZW1zLiBQbGVhc2UgYXNzaWduIHRoZSBkYXRhIGluc3RlYWQgb2YgbGlua2luZy4iKTsKLSAgICByZXR1cm4gKGJlZ2luKCkpOwotfQotCi0vLy8gQ29uY2F0ZW5hdGVzIGl0c2VsZiB3aXRoIFxwIHMKLWlubGluZSBzdHJpbmcgc3RyaW5nOjpvcGVyYXRvcisgKGNvbnN0IHN0cmluZyYgcykgY29uc3QKLXsKLSAgICBzdHJpbmcgcmVzdWx0ICgqdGhpcyk7Ci0gICAgcmVzdWx0ICs9IHM7Ci0gICAgcmV0dXJuIChyZXN1bHQpOwotfQotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS8vIE9wZXJhdG9ycyBuZWVkZWQgdG8gYXZvaWQgY29tcGFyaW5nIHBvaW50ZXIgdG8gcG9pbnRlcgotCi0jZGVmaW5lIFBUUl9TVFJJTkdfQ01QKG9wLCBpbXBsKQlcCi1pbmxpbmUgYm9vbCBvcCAoY29uc3QgY2hhciogczEsIGNvbnN0IHN0cmluZyYgczIpIHsgcmV0dXJuIGltcGw7IH0KLVBUUl9TVFJJTkdfQ01QIChvcGVyYXRvcj09LCAoczIgPT0gczEpKQotUFRSX1NUUklOR19DTVAgKG9wZXJhdG9yIT0sIChzMiAhPSBzMSkpCi1QVFJfU1RSSU5HX0NNUCAob3BlcmF0b3I8LCAgKHMyID4gIHMxKSkKLVBUUl9TVFJJTkdfQ01QIChvcGVyYXRvcjw9LCAoczIgPj0gczEpKQotUFRSX1NUUklOR19DTVAgKG9wZXJhdG9yPiwgIChzMiA8ICBzMSkpCi1QVFJfU1RSSU5HX0NNUCAob3BlcmF0b3I+PSwgKHMyIDw9IHMxKSkKLSN1bmRlZiBQVFJfU1RSSU5HX0NNUAotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgaGFzaHZhbHVlX3QgaGFzaF92YWx1ZSAoY29uc3QgVCYgdikKLXsgcmV0dXJuIChzdHJpbmc6Omhhc2ggKHYuYmVnaW4oKSwgdi5lbmQoKSkpOyB9Ci0KLXRlbXBsYXRlIDw+Ci1pbmxpbmUgaGFzaHZhbHVlX3QgaGFzaF92YWx1ZSAoY29uc3Qgc3RyaW5nOjpjb25zdF9wb2ludGVyJiB2KQoteyByZXR1cm4gKHN0cmluZzo6aGFzaCAodiwgdiArIHN0cmxlbih2KSkpOyB9Ci0KLXRlbXBsYXRlIDw+Ci1pbmxpbmUgaGFzaHZhbHVlX3QgaGFzaF92YWx1ZSAoY29uc3Qgc3RyaW5nOjpwb2ludGVyJiB2KQoteyByZXR1cm4gKHN0cmluZzo6aGFzaCAodiwgdiArIHN0cmxlbih2KSkpOyB9Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi19IC8vIG5hbWVzcGFjZSB1c3RsCi0KLS8vIFNwZWNpYWxpemF0aW9uIGZvciBzdHJlYW0gYWxpZ25tZW50Ci1BTElHTk9GICh1c3RsOjpzdHJpbmcsIGFsaWdub2YgKHN0cmluZzo6dmFsdWVfdHlwZSgpKSkKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3V0ZjguaCBiL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3V0ZjguaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjgyOWU3ZC4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91dGY4LmgKKysrIC9kZXYvbnVsbApAQCAtMSwyMDAgKzAsMCBAQAotLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHVzdGwgbGlicmFyeSwgYW4gU1RMIGltcGxlbWVudGF0aW9uLgotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwNSBieSBNaWtlIFNoYXJvdiA8bXNoYXJvdkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0vLyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgotLy8KLS8vIHV0ZjguaAotLy8KLS8vIFRoaXMgZmlsZSBjb250YWlucyBzdHJlYW0gaXRlcmF0b3JzIHRoYXQgcmVhZCBhbmQgd3JpdGUgVVRGLTggZW5jb2RlZAotLy8gY2hhcmFjdGVycy4gVGhlIGVuY29kaW5nIGlzIGRlZmluZWQgYXMgZm9sbG93czoKLS8vCi0vLyBVLTAwMDAwMDAwIC0gVS0wMDAwMDA3RjogMHh4eHh4eHgKLS8vIFUtMDAwMDAwODAgLSBVLTAwMDAwN0ZGOiAxMTB4eHh4eCAxMHh4eHh4eAotLy8gVS0wMDAwMDgwMCAtIFUtMDAwMEZGRkY6IDExMTB4eHh4IDEweHh4eHh4IDEweHh4eHh4Ci0vLyBVLTAwMDEwMDAwIC0gVS0wMDFGRkZGRjogMTExMTB4eHggMTB4eHh4eHggMTB4eHh4eHggMTB4eHh4eHgKLS8vIFUtMDAyMDAwMDAgLSBVLTAzRkZGRkZGOiAxMTExMTB4eCAxMHh4eHh4eCAxMHh4eHh4eCAxMHh4eHh4eCAxMHh4eHh4eAotLy8gVS0wNDAwMDAwMCAtIFUtN0ZGRkZGRkY6IDExMTExMTB4IDEweHh4eHh4IDEweHh4eHh4IDEweHh4eHh4IDEweHh4eHh4IDEweHh4eHh4Ci0vLyBVLTgwMDAwMDAwIC0gVS1GRkZGRkZGRjogMTExMTExMTAgMTAwMDAweHggMTB4eHh4eHggMTB4eHh4eHggMTB4eHh4eHggMTB4eHh4eHggMTB4eHh4eHgKLS8vCi0vLyBUaGUgbGFzdCByYW5nZSBpbiBub3QgaW4gdGhlIFVURi04IHN0YW5kYXJkIGJlY2F1c2UgVW5pY29kZSBmb3JiaWRzCi0vLyBjaGFyYWN0ZXJzIG9mIHRob3NlIHZhbHVlcy4gSG93ZXZlciwgc2luY2UgdXN0bDo6c3RyaW5nIHVzZXMgdGhpcyBjb2RlCi0vLyB0byB3cml0ZSBpdHMgbGVuZ3RoLCB0aGUgc3VwcG9ydCBpcyBoZXJlLiBUaGUgcmVhc29uIGl0IHdhcyBwdXQgaGVyZQotLy8gaW4gdGhlIGZpcnN0IHBsYWNlLCBpcyB0aGF0IGV4dHJhIGNvZGUgd291bGQgaGF2ZSBiZWVuIG5lY2Vzc2FyeSB0bwotLy8gZmxhZyB0aGF0IHJhbmdlIGFzIGludmFsaWQuCi0vLwotI2lmbmRlZiBVVEY4X0hfM0Q3QUVFRUIzQTg4OTI4RDREMjgwQjc4NUY3OEI2RjQKLSNkZWZpbmUgVVRGOF9IXzNEN0FFRUVCM0E4ODkyOEQ0RDI4MEI3ODVGNzhCNkY0Ci0KLSNpbmNsdWRlICJ1aXRlcmF0b3IuaCIKLQotbmFtZXNwYWNlIHVzdGwgewotCi0vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotdHlwZWRlZiB1aW50OF90IHV0ZjhzdWJjaGFyX3Q7CS8vLzwgVHlwZSBmb3IgdGhlIGVuY29kaW5nIHN1YmNoYXJhY3RlcnMuCi0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLy8gUmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHJlcXVpcmVkIHRvIFVURi04IGVuY29kZSBccCB2LgotaW5saW5lIHNpemVfdCBVdGY4Qnl0ZXMgKHdjaGFyX3QgdikKLXsKLSAgICBzdGF0aWMgY29uc3QgdWludDMyX3QgY19Cb3VuZHNbXSA9IHsgMHgwMDAwMDA3RiwgMHgwMDAwMDdGRiwgMHgwMDAwRkZGRiwgMHgwMDFGRkZGRiwgMHgwM0ZGRkZGRiwgMHg3RkZGRkZGRiwgMHhGRkZGRkZGRiwgfTsKLSAgICBzaXplX3QgYmkgPSAwOwotICAgIHdoaWxlIChjX0JvdW5kc1tiaSsrXSA8IHVpbnQzMl90KHYpKTsKLSAgICByZXR1cm4gKGJpKTsKLX0KLQotLy8vIFJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyBpbiBhIFVURi04IHNlcXVlbmNlIHRoYXQgc3RhcnRzIHdpdGggXHAgYy4KLWlubGluZSBzaXplX3QgVXRmOFNlcXVlbmNlQnl0ZXMgKHdjaGFyX3QgYykJLy8gYSB3Y2hhcl90IHRvIGtlZXAgYyBpbiBhIGZ1bGwgcmVnaXN0ZXIKLXsKLSAgICAvLyBDb3VudCB0aGUgbGVhZGluZyBiaXRzLiBIZWFkZXIgYml0cyBhcmUgMSAqIG5CeXRlcyBmb2xsb3dlZCBieSBhIDAuCi0gICAgLy8JMCAtIHNpbmdsZSBieXRlIGNoYXJhY3Rlci4gVGFrZSA3IGJpdHMgKDB4RkYgPj4gMSkKLSAgICAvLwkxIC0gZXJyb3IsIGluIHRoZSBtaWRkbGUgb2YgdGhlIGNoYXJhY3Rlci4gVGFrZSA2IGJpdHMgKDB4RkYgPj4gMikKLSAgICAvLwkgICAgc28geW91IHdpbGwga2VlcCByZWFkaW5nIGludmFsaWQgZW50cmllcyB1bnRpbCB5b3UgaGl0IHRoZSBuZXh0IGNoYXJhY3Rlci4KLSAgICAvLwk+MiAtIG11bHRpYnl0ZSBjaGFyYWN0ZXIuIFRha2UgcmVtYWluaW5nIGJpdHMsIGFuZCBnZXQgdGhlIG5leHQgYnl0ZXMuCi0gICAgLy8gQWxsIGVycm9ycyBhcmUgaWdub3JlZCwgc2luY2UgdGhlIHVzZXIgY2FuIG5vdCBjb3JyZWN0IHRoZW0uCi0gICAgLy8KLSAgICB3Y2hhcl90IG1hc2sgPSAweDgwOwotICAgIHNpemVfdCBuQnl0ZXMgPSAwOwotICAgIGZvciAoOyBjICYgbWFzazsgKytuQnl0ZXMpCi0JbWFzayA+Pj0gMTsKLSAgICByZXR1cm4gKG5CeXRlcyA/IG5CeXRlcyA6IDEpOyAvLyBBIHNlcXVlbmNlIGlzIGFsd2F5cyBhdCBsZWFzdCAxIGJ5dGUuCi19Ci0KLS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLy8gXGNsYXNzIHV0Zjhpbl9pdGVyYXRvciB1dGY4LmggdXN0bC5oCi0vLy8gXGluZ3JvdXAgSXRlcmF0b3JBZGFwdG9ycwotLy8vCi0vLy8gXGJyaWVmIEFuIGl0ZXJhdG9yIGFkYXB0b3IgdG8gY2hhcmFjdGVyIGNvbnRhaW5lcnMgZm9yIHJlYWRpbmcgVVRGLTggZW5jb2RlZCB0ZXh0LgotLy8vCi0vLy8gRm9yIGV4YW1wbGUsIHlvdSBjYW4gY29weSBmcm9tIHVzdGw6OnN0cmluZyB0byB1c3RsOjp2ZWN0b3I8d2NoYXJfdD4gd2l0aAotLy8vIGNvcHkgKHV0ZjhpbiAoc3RyLmJlZ2luKCkpLCB1dGY4aW4gKHN0ci5lbmQoKSksIGJhY2tfaW5zZXJ0ZXIod3ZlY3QpKTsKLS8vLyBUaGVyZSBpcyBubyBlcnJvciBoYW5kbGluZzsgaWYgdGhlIHJlYWRpbmcgZnJhbWUgc2xpcHMgeW91J2xsIGdldCBleHRyYQotLy8vIGNoYXJhY3RlcnMsIG9uZSBmb3IgZXZlcnkgbWlzYWxpZ25lZCBieXRlLiBBbHRob3VnaCBpdCBpcyBwb3NzaWJsZSB0byBza2lwCi0vLy8gdG8gdGhlIHN0YXJ0IG9mIHRoZSBuZXh0IGNoYXJhY3RlciwgdGhhdCB3b3VsZCByZXN1bHQgaW4gb21pdHRpbmcgdGhlCi0vLy8gbWlzZm9ybWF0dGVkIGNoYXJhY3RlciBhbmQgdGhlIG9uZSBhZnRlciBpdCwgbWFraW5nIGl0IHZlcnkgZGlmZmljdWx0IHRvCi0vLy8gZGV0ZWN0IGJ5IHRoZSB1c2VyLiBJdCBpcyBiZXR0ZXIgdG8gd3JpdGUgc29tZSBzdHJhbmdlIGNoYXJhY3RlcnMgYW5kIGxldAotLy8vIHRoZSB1c2VyIGtub3cgaGlzIGZpbGUgaXMgY29ycnVwdGVkLiBBbm90aGVyIHByb2JsZW0gaXMgb3ZlcmZsb3cgb24gYmFkCi0vLy8gZW5jb2RpbmdzIChsaWtlIGEgMHhGRiBvbiB0aGUgZW5kIG9mIGEgc3RyaW5nKS4gVGhpcyBpcyBjaGVja2VkIHRocm91Z2gKLS8vLyB0aGUgZW5kLW9mLXN0cmluZyBudWwgY2hhcmFjdGVyLCB3aGljaCB3aWxsIGFsd2F5cyBiZSB0aGVyZSBhcyBsb25nIGFzCi0vLy8geW91IGFyZSB1c2luZyB0aGUgc3RyaW5nIGNsYXNzLgotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lIFdDaGFyID0gd2NoYXJfdD4KLWNsYXNzIHV0Zjhpbl9pdGVyYXRvciB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+Ojp2YWx1ZV90eXBlCXZhbHVlX3R5cGU7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+OjpkaWZmZXJlbmNlX3R5cGUJZGlmZmVyZW5jZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPjo6cG9pbnRlcgkJcG9pbnRlcjsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj46OnJlZmVyZW5jZQlyZWZlcmVuY2U7Ci1wdWJsaWM6Ci0gICAgZXhwbGljaXQJCQl1dGY4aW5faXRlcmF0b3IgKGNvbnN0IEl0ZXJhdG9yJiBpcykJCTogbV9pIChpcyksIG1fdiAoMCkgeyBSZWFkKCk7IH0KLQkJCQl1dGY4aW5faXRlcmF0b3IgKGNvbnN0IHV0Zjhpbl9pdGVyYXRvciYgaSkJOiBtX2kgKGkubV9pKSwgbV92IChpLm1fdikge30gCi0gICAgaW5saW5lIGNvbnN0IHV0Zjhpbl9pdGVyYXRvciYgb3BlcmF0b3I9IChjb25zdCB1dGY4aW5faXRlcmF0b3ImIGkpCQl7IG1faSA9IGkubV9pOyBtX3YgPSBpLm1fdjsgcmV0dXJuICgqdGhpcyk7IH0KLSAgICBpbmxpbmUgSXRlcmF0b3IJCWJhc2UgKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChtX2kgLSAoVXRmOEJ5dGVzKG1fdikgLSAxKSk7IH0KLSAgICAvLy8gUmVhZHMgYW5kIHJldHVybnMgdGhlIG5leHQgdmFsdWUuCi0gICAgaW5saW5lIFdDaGFyCQlvcGVyYXRvciogKHZvaWQpIGNvbnN0CXsgcmV0dXJuIChtX3YpOyB9Ci0gICAgaW5saW5lIHV0Zjhpbl9pdGVyYXRvciYJb3BlcmF0b3IrKyAodm9pZCkJeyArK21faTsgUmVhZCgpOyByZXR1cm4gKCp0aGlzKTsgfQotICAgIGlubGluZSB1dGY4aW5faXRlcmF0b3IJb3BlcmF0b3IrKyAoaW50KQl7IHV0Zjhpbl9pdGVyYXRvciBvbGQgKCp0aGlzKTsgb3BlcmF0b3IrKygpOyByZXR1cm4gKG9sZCk7IH0KLSAgICBpbmxpbmUgdXRmOGluX2l0ZXJhdG9yJglvcGVyYXRvcis9ICh1b2ZmX3QgbikJeyB3aGlsZSAobi0tKSBvcGVyYXRvcisrKCk7IHJldHVybiAoKnRoaXMpOyB9Ci0gICAgaW5saW5lIHV0Zjhpbl9pdGVyYXRvcglvcGVyYXRvcisgKHVvZmZfdCBuKQl7IHV0Zjhpbl9pdGVyYXRvciB2ICgqdGhpcyk7IHJldHVybiAodiArPSBuKTsgfQotICAgIGlubGluZSBib29sCQkJb3BlcmF0b3I9PSAoY29uc3QgdXRmOGluX2l0ZXJhdG9yJiBpKSBjb25zdAl7IHJldHVybiAobV9pID09IGkubV9pKTsgfQotICAgIGlubGluZSBib29sCQkJb3BlcmF0b3I8IChjb25zdCB1dGY4aW5faXRlcmF0b3ImIGkpIGNvbnN0CXsgcmV0dXJuIChtX2kgPCBpLm1faSk7IH0KLSAgICBkaWZmZXJlbmNlX3R5cGUJCW9wZXJhdG9yLSAoY29uc3QgdXRmOGluX2l0ZXJhdG9yJiBpKSBjb25zdDsKLXByaXZhdGU6Ci0gICAgdm9pZAkJCVJlYWQgKHZvaWQpOwotcHJpdmF0ZToKLSAgICBJdGVyYXRvcgkJCW1faTsKLSAgICBXQ2hhcgkJCW1fdjsKLX07Ci0KLS8vLyBTdGVwcyB0byB0aGUgbmV4dCBjaGFyYWN0ZXIgYW5kIHVwZGF0ZXMgY3VycmVudCByZXR1cm5hYmxlIHZhbHVlLgotdGVtcGxhdGUgPHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFtZSBXQ2hhcj4KLXZvaWQgdXRmOGluX2l0ZXJhdG9yPEl0ZXJhdG9yLFdDaGFyPjo6UmVhZCAodm9pZCkKLXsKLSAgICBjb25zdCB1dGY4c3ViY2hhcl90IGMgPSAqbV9pOwotICAgIHNpemVfdCBuQnl0ZXMgPSBVdGY4U2VxdWVuY2VCeXRlcyAoYyk7Ci0gICAgbV92ID0gYyAmICgweEZGID4+IG5CeXRlcyk7CS8vIEZpcnN0IGJ5dGUgY29udGFpbnMgYml0cyBhZnRlciB0aGUgaGVhZGVyLgotICAgIHdoaWxlICgtLW5CeXRlcyAmJiAqKyttX2kpCS8vIEVhY2ggc3Vic2VxdWVudCBieXRlIGhhcyA2IGJpdHMuCi0JbV92ID0gKG1fdiA8PCA2KSB8ICgqbV9pICYgMHgzRik7Ci19Ci0KLS8vLyBSZXR1cm5zIHRoZSBkaXN0YW5jZSBpbiBjaGFyYWN0ZXJzIChhcyBvcHBvc2VkIHRvIHRoZSBkaXN0YW5jZSBpbiBieXRlcykuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lIFdDaGFyPgotdHlwZW5hbWUgdXRmOGluX2l0ZXJhdG9yPEl0ZXJhdG9yLFdDaGFyPjo6ZGlmZmVyZW5jZV90eXBlCi11dGY4aW5faXRlcmF0b3I8SXRlcmF0b3IsV0NoYXI+OjpvcGVyYXRvci0gKGNvbnN0IHV0Zjhpbl9pdGVyYXRvcjxJdGVyYXRvcixXQ2hhcj4mIGxhc3QpIGNvbnN0Ci17Ci0gICAgZGlmZmVyZW5jZV90eXBlIGRpc3QgPSAwOwotICAgIGZvciAoSXRlcmF0b3IgZmlyc3QgKGxhc3QubV9pKTsgZmlyc3QgPCBtX2k7ICsrZGlzdCkKLQlmaXJzdCA9IGFkdmFuY2UgKGZpcnN0LCBVdGY4U2VxdWVuY2VCeXRlcyAoKmZpcnN0KSk7Ci0gICAgcmV0dXJuIChkaXN0KTsKLX0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vLyBcY2xhc3MgdXRmOG91dF9pdGVyYXRvciB1dGY4LmggdXN0bC5oCi0vLy8gXGluZ3JvdXAgSXRlcmF0b3JBZGFwdG9ycwotLy8vCi0vLy8gXGJyaWVmIEFuIGl0ZXJhdG9yIGFkYXB0b3IgdG8gY2hhcmFjdGVyIGNvbnRhaW5lcnMgZm9yIHdyaXRpbmcgVVRGLTggZW5jb2RlZCB0ZXh0LgotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcmF0b3IsIHR5cGVuYW1lIFdDaGFyID0gd2NoYXJfdD4KLWNsYXNzIHV0ZjhvdXRfaXRlcmF0b3IgewotcHVibGljOgotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPjo6dmFsdWVfdHlwZQl2YWx1ZV90eXBlOwotICAgIHR5cGVkZWYgdHlwZW5hbWUgaXRlcmF0b3JfdHJhaXRzPEl0ZXJhdG9yPjo6ZGlmZmVyZW5jZV90eXBlCWRpZmZlcmVuY2VfdHlwZTsKLSAgICB0eXBlZGVmIHR5cGVuYW1lIGl0ZXJhdG9yX3RyYWl0czxJdGVyYXRvcj46OnBvaW50ZXIJCXBvaW50ZXI7Ci0gICAgdHlwZWRlZiB0eXBlbmFtZSBpdGVyYXRvcl90cmFpdHM8SXRlcmF0b3I+OjpyZWZlcmVuY2UJcmVmZXJlbmNlOwotcHVibGljOgotICAgIGV4cGxpY2l0CQkJdXRmOG91dF9pdGVyYXRvciAoY29uc3QgSXRlcmF0b3ImIG9zKSA6IG1faSAob3MpIHt9Ci0JCQkJdXRmOG91dF9pdGVyYXRvciAoY29uc3QgdXRmOG91dF9pdGVyYXRvciYgaSkgOiBtX2kgKGkubV9pKSB7fSAKLSAgICBpbmxpbmUgY29uc3QgSXRlcmF0b3ImCWJhc2UgKHZvaWQpIGNvbnN0IHsgcmV0dXJuIChtX2kpOyB9Ci0gICAgLy8vIFdyaXRlcyBccCB2IGludG8gdGhlIHN0cmVhbS4KLSAgICB1dGY4b3V0X2l0ZXJhdG9yJgkJb3BlcmF0b3I9IChXQ2hhciB2KTsKLSAgICBpbmxpbmUgdXRmOG91dF9pdGVyYXRvciYJb3BlcmF0b3IqICh2b2lkKSB7IHJldHVybiAoKnRoaXMpOyB9Ci0gICAgaW5saW5lIHV0ZjhvdXRfaXRlcmF0b3ImCW9wZXJhdG9yKysgKHZvaWQpIHsgcmV0dXJuICgqdGhpcyk7IH0KLSAgICBpbmxpbmUgdXRmOG91dF9pdGVyYXRvcglvcGVyYXRvcisrIChpbnQpIHsgcmV0dXJuICgqdGhpcyk7IH0KLSAgICBpbmxpbmUgYm9vbAkJCW9wZXJhdG9yPT0gKGNvbnN0IHV0ZjhvdXRfaXRlcmF0b3ImIGkpIGNvbnN0IHsgcmV0dXJuIChtX2kgPT0gaS5tX2kpOyB9Ci0gICAgaW5saW5lIGJvb2wJCQlvcGVyYXRvcjwgKGNvbnN0IHV0ZjhvdXRfaXRlcmF0b3ImIGkpIGNvbnN0IHsgcmV0dXJuIChtX2kgPCBpLm1faSk7IH0KLXByaXZhdGU6Ci0gICAgSXRlcmF0b3IJCQltX2k7Ci19OwotCi0vLy8gV3JpdGVzIFxwIHYgaW50byB0aGUgc3RyZWFtLgotdGVtcGxhdGUgPHR5cGVuYW1lIEl0ZXJhdG9yLCB0eXBlbmFtZSBXQ2hhcj4KLXV0ZjhvdXRfaXRlcmF0b3I8SXRlcmF0b3IsV0NoYXI+JiB1dGY4b3V0X2l0ZXJhdG9yPEl0ZXJhdG9yLFdDaGFyPjo6b3BlcmF0b3I9IChXQ2hhciB2KQotewotICAgIGNvbnN0IHNpemVfdCBuQnl0ZXMgPSBVdGY4Qnl0ZXMgKHYpOwotICAgIGlmIChuQnl0ZXMgPiAxKSB7Ci0JLy8gV3JpdGUgdGhlIGJpdHMgNiBiaXRzIGF0IGEgdGltZSwgZXhjZXB0IGZvciB0aGUgZmlyc3Qgb25lLAotCS8vIHdoaWNoIG1heSBiZSBsZXNzIHRoYW4gNiBiaXRzLgotCXJlZ2lzdGVyIHdjaGFyX3Qgc2hpZnQgPSBuQnl0ZXMgKiA2OwotCSptX2krKyA9ICgodiA+PiAoc2hpZnQgLT0gNikpICYgMHgzRikgfCAoMHhGRiA8PCAoOCAtIG5CeXRlcykpOwotCXdoaWxlIChzaGlmdCkKLQkgICAgKm1faSsrID0gKCh2ID4+IChzaGlmdCAtPSA2KSkgJiAweDNGKSB8IDB4ODA7Ci0gICAgfSBlbHNlCS8vIElmIG9ubHkgb25lIGJ5dGUsIHRoZXJlIGlzIG5vIGhlYWRlci4KLSAgICAJKm1faSsrID0gdjsKLSAgICByZXR1cm4gKCp0aGlzKTsKLX0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS8vLyBSZXR1cm5zIGEgVVRGLTggYWRhcHRvciB3cml0aW5nIHRvIFxwIGkuIFVzZWZ1bCBpbiBjb25qdWN0aW9uIHdpdGggYmFja19pbnNlcnRfaXRlcmF0b3IuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlcmF0b3I+Ci1pbmxpbmUgdXRmOG91dF9pdGVyYXRvcjxJdGVyYXRvcj4gdXRmOG91dCAoSXRlcmF0b3IgaSkKLXsKLSAgICByZXR1cm4gKHV0ZjhvdXRfaXRlcmF0b3I8SXRlcmF0b3I+IChpKSk7Ci19Ci0KLS8vLyBSZXR1cm5zIGEgVVRGLTggYWRhcHRvciByZWFkaW5nIGZyb20gXHAgaS4KLXRlbXBsYXRlIDx0eXBlbmFtZSBJdGVyYXRvcj4KLWlubGluZSB1dGY4aW5faXRlcmF0b3I8SXRlcmF0b3I+IHV0ZjhpbiAoSXRlcmF0b3IgaSkKLXsKLSAgICByZXR1cm4gKHV0Zjhpbl9pdGVyYXRvcjxJdGVyYXRvcj4gKGkpKTsKLX0KLQotLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLX0gLy8gbmFtZXNwYWNlIHVzdGwKLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3V0dXBsZS5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdXR1cGxlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhMDAzYWIuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdXR1cGxlLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyNDcgKzAsMCBAQAotLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHVzdGwgbGlicmFyeSwgYW4gU1RMIGltcGxlbWVudGF0aW9uLgotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwNSBieSBNaWtlIFNoYXJvdiA8bXNoYXJvdkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0vLyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgotLy8KLS8vIHV0dXBsZS5oCi0vLwotCi0jaWZuZGVmIFVUVVBMRV9IXzczMjRBREVDNDlCMzk3Q0E3NEE1NkY2MDUwRkQ1QTZCCi0jZGVmaW5lIFVUVVBMRV9IXzczMjRBREVDNDlCMzk3Q0E3NEE1NkY2MDUwRkQ1QTZCCi0KLSNpbmNsdWRlICJ1YWxnby5oIgotCi0jaWYgUExBVEZPUk1fQU5EUk9JRAotI3VuZGVmIENQVV9IQVNfTU1YCi0jZW5kaWYKLQotbmFtZXNwYWNlIHVzdGwgewotCi0vLy8gXGNsYXNzIHR1cGxlIHV0dXBsZS5oIHVzdGwuaAotLy8vIFxpbmdyb3VwIFNlcXVlbmNlcwotLy8vCi0vLy8gXGJyaWVmIEEgZml4ZWQtc2l6ZSBhcnJheSBvZiBccCBOIFxwIFRzLgotLy8vCi10ZW1wbGF0ZSA8c2l6ZV90IE4sIHR5cGVuYW1lIFQ+Ci1jbGFzcyB0dXBsZSB7Ci1wdWJsaWM6Ci0gICAgdHlwZWRlZiBUCQkJCQkJdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIHNpemVfdAkJCQkJc2l6ZV90eXBlOwotICAgIHR5cGVkZWYgdmFsdWVfdHlwZSoJCQkJCXBvaW50ZXI7Ci0gICAgdHlwZWRlZiBjb25zdCB2YWx1ZV90eXBlKgkJCQljb25zdF9wb2ludGVyOwotICAgIHR5cGVkZWYgdmFsdWVfdHlwZSYJCQkJCXJlZmVyZW5jZTsKLSAgICB0eXBlZGVmIGNvbnN0IHZhbHVlX3R5cGUmCQkJCWNvbnN0X3JlZmVyZW5jZTsKLSAgICB0eXBlZGVmIHBvaW50ZXIJCQkJCWl0ZXJhdG9yOwotICAgIHR5cGVkZWYgY29uc3RfcG9pbnRlcgkJCQljb25zdF9pdGVyYXRvcjsKLSAgICB0eXBlZGVmIDo6dXN0bDo6cmV2ZXJzZV9pdGVyYXRvcjxpdGVyYXRvcj4JCXJldmVyc2VfaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiA6OnVzdGw6OnJldmVyc2VfaXRlcmF0b3I8Y29uc3RfaXRlcmF0b3I+CWNvbnN0X3JldmVyc2VfaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiBwYWlyPGl0ZXJhdG9yLGl0ZXJhdG9yPgkJCXJhbmdlX3Q7Ci0gICAgdHlwZWRlZiBwYWlyPGNvbnN0X2l0ZXJhdG9yLGNvbnN0X2l0ZXJhdG9yPgkJY29uc3RfcmFuZ2VfdDsKLXB1YmxpYzoKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDI+Ci0gICAgaW5saW5lCQkJdHVwbGUgKGNvbnN0IHR1cGxlPE4sVDI+JiB0KTsKLSAgICBpbmxpbmUJCQl0dXBsZSAoY29uc3QgdHVwbGU8TixUPiYgdCk7Ci0gICAgaW5saW5lCQkJdHVwbGUgKGNvbnN0X3BvaW50ZXIgdik7Ci0gICAgaW5saW5lCQkJdHVwbGUgKHZvaWQpCQkJeyBmb3IgKHVvZmZfdCBpID0gMDsgaSA8IE47ICsrIGkpIG1fdltpXSA9IFQoKTsgfQotICAgIGV4cGxpY2l0IGlubGluZQkJdHVwbGUgKGNvbnN0X3JlZmVyZW5jZSB2MCwgY29uc3RfcmVmZXJlbmNlIHYxID0gVCgpLCBjb25zdF9yZWZlcmVuY2UgdjIgPSBUKCksIGNvbnN0X3JlZmVyZW5jZSB2MyA9IFQoKSk7Ci0gICAgaW5saW5lIGl0ZXJhdG9yCQliZWdpbiAodm9pZCkJCQl7IHJldHVybiAobV92KTsgfQotICAgIGlubGluZSBjb25zdF9pdGVyYXRvcgliZWdpbiAodm9pZCkgY29uc3QJCXsgcmV0dXJuIChtX3YpOyB9Ci0gICAgaW5saW5lIGl0ZXJhdG9yCQllbmQgKHZvaWQpCQkJeyByZXR1cm4gKGJlZ2luKCkgKyBOKTsgfQotICAgIGlubGluZSBjb25zdF9pdGVyYXRvcgllbmQgKHZvaWQpIGNvbnN0CQl7IHJldHVybiAoYmVnaW4oKSArIE4pOyB9Ci0gICAgaW5saW5lIHNpemVfdHlwZQkJc2l6ZSAodm9pZCkgY29uc3QJCXsgcmV0dXJuIChOKTsgfQotICAgIGlubGluZSBzaXplX3R5cGUJCW1heF9zaXplICh2b2lkKSBjb25zdAkJeyByZXR1cm4gKE4pOyB9Ci0gICAgaW5saW5lIGJvb2wJCQllbXB0eSAodm9pZCkgY29uc3QJCXsgcmV0dXJuIChOID09IDApOyB9Ci0gICAgaW5saW5lIGNvbnN0X3JlZmVyZW5jZQlhdCAoc2l6ZV90eXBlIGkpIGNvbnN0CQl7IHJldHVybiAobV92W2ldKTsgfQotICAgIGlubGluZSByZWZlcmVuY2UJCWF0IChzaXplX3R5cGUgaSkJCXsgcmV0dXJuIChtX3ZbaV0pOyB9Ci0gICAgaW5saW5lIGNvbnN0X3JlZmVyZW5jZQlvcGVyYXRvcltdIChzaXplX3R5cGUgaSkgY29uc3QJeyByZXR1cm4gKG1fdltpXSk7IH0KLSAgICBpbmxpbmUgcmVmZXJlbmNlCQlvcGVyYXRvcltdIChzaXplX3R5cGUgaSkJeyByZXR1cm4gKG1fdltpXSk7IH0KLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVDI+Ci0gICAgaW5saW5lIGNvbnN0IHR1cGxlJgkJb3BlcmF0b3I9IChjb25zdCB0dXBsZTxOLFQyPiYgc3JjKTsKLSAgICBpbmxpbmUgY29uc3QgdHVwbGUmCQlvcGVyYXRvcj0gKGNvbnN0IHR1cGxlPE4sVD4mIHNyYyk7Ci0gICAgaW5saW5lIGNvbnN0IHR1cGxlJgkJb3BlcmF0b3IrPSAoY29uc3RfcmVmZXJlbmNlIHYpCi0JCQkJICAgIHsgZm9yICh1b2ZmX3QgaSA9IDA7IGkgPCBOOyArKyBpKSBtX3ZbaV0gKz0gdjsgcmV0dXJuICgqdGhpcyk7IH0KLSAgICBpbmxpbmUgY29uc3QgdHVwbGUmCQlvcGVyYXRvci09IChjb25zdF9yZWZlcmVuY2UgdikKLQkJCQkgICAgeyBmb3IgKHVvZmZfdCBpID0gMDsgaSA8IE47ICsrIGkpIG1fdltpXSAtPSB2OyByZXR1cm4gKCp0aGlzKTsgfQotICAgIGlubGluZSBjb25zdCB0dXBsZSYJCW9wZXJhdG9yKj0gKGNvbnN0X3JlZmVyZW5jZSB2KQotCQkJCSAgICB7IGZvciAodW9mZl90IGkgPSAwOyBpIDwgTjsgKysgaSkgbV92W2ldICo9IHY7IHJldHVybiAoKnRoaXMpOyB9Ci0gICAgaW5saW5lIGNvbnN0IHR1cGxlJgkJb3BlcmF0b3IvPSAoY29uc3RfcmVmZXJlbmNlIHYpCi0JCQkJICAgIHsgZm9yICh1b2ZmX3QgaSA9IDA7IGkgPCBOOyArKyBpKSBtX3ZbaV0gLz0gdjsgcmV0dXJuICgqdGhpcyk7IH0KLSAgICBpbmxpbmUgY29uc3QgdHVwbGUJCW9wZXJhdG9yKyAoY29uc3RfcmVmZXJlbmNlIHYpIGNvbnN0Ci0JCQkJICAgIHsgdHVwbGUgcmVzdWx0OyBmb3IgKHVvZmZfdCBpID0gMDsgaSA8IE47ICsrIGkpIHJlc3VsdFtpXSA9IG1fdltpXSArIHY7IHJldHVybiAocmVzdWx0KTsgfQotICAgIGlubGluZSBjb25zdCB0dXBsZQkJb3BlcmF0b3ItIChjb25zdF9yZWZlcmVuY2UgdikgY29uc3QKLQkJCQkgICAgeyB0dXBsZSByZXN1bHQ7IGZvciAodW9mZl90IGkgPSAwOyBpIDwgTjsgKysgaSkgcmVzdWx0W2ldID0gbV92W2ldIC0gdjsgcmV0dXJuIChyZXN1bHQpOyB9Ci0gICAgaW5saW5lIGNvbnN0IHR1cGxlCQlvcGVyYXRvciogKGNvbnN0X3JlZmVyZW5jZSB2KSBjb25zdAotCQkJCSAgICB7IHR1cGxlIHJlc3VsdDsgZm9yICh1b2ZmX3QgaSA9IDA7IGkgPCBOOyArKyBpKSByZXN1bHRbaV0gPSBtX3ZbaV0gKiB2OyByZXR1cm4gKHJlc3VsdCk7IH0KLSAgICBpbmxpbmUgY29uc3QgdHVwbGUJCW9wZXJhdG9yLyAoY29uc3RfcmVmZXJlbmNlIHYpIGNvbnN0Ci0JCQkJICAgIHsgdHVwbGUgcmVzdWx0OyBmb3IgKHVvZmZfdCBpID0gMDsgaSA8IE47ICsrIGkpIHJlc3VsdFtpXSA9IG1fdltpXSAvIHY7IHJldHVybiAocmVzdWx0KTsgfQotICAgIGlubGluZSB2b2lkCQkJc3dhcCAodHVwbGU8TixUPiYgdikKLQkJCQkgICAgeyBmb3IgKHVvZmZfdCBpID0gMDsgaSA8IE47ICsrIGkpIDo6dXN0bDo6c3dhcCAobV92W2ldLCB2Lm1fdltpXSk7IH0KLXByaXZhdGU6Ci0gICAgVAkJCQltX3YgW05dOwotfTsKLQotfSAvLyBuYW1lc3BhY2UgdXN0bAotCi0jaW5jbHVkZSAic2ltZC5oIgotCi1uYW1lc3BhY2UgdXN0bCB7Ci0KLXRlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgVD4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUMj4KLWlubGluZSB0dXBsZTxOLFQ+Ojp0dXBsZSAoY29uc3QgdHVwbGU8TixUMj4mIHQpCi17IHNpbWQ6OnBjb252ZXJ0ICh0LCAqdGhpcywgc2ltZDo6ZmNhc3Q8VDIsVD4oKSk7IH0KLQotdGVtcGxhdGUgPHNpemVfdCBOLCB0eXBlbmFtZSBUPgotaW5saW5lIHR1cGxlPE4sVD46OnR1cGxlIChjb25zdCB0dXBsZTxOLFQ+JiB0KQoteyBzaW1kOjpwYXNzaWduICh0LCAqdGhpcyk7IH0KLQotdGVtcGxhdGUgPHNpemVfdCBOLCB0eXBlbmFtZSBUPgotaW5saW5lIHR1cGxlPE4sVD46OnR1cGxlIChjb25zdF9wb2ludGVyIHYpCi17IHNpbWQ6OmlwYXNzaWduICh2LCAqdGhpcyk7IH0KLQotdGVtcGxhdGUgPHNpemVfdCBOLCB0eXBlbmFtZSBUPgotaW5saW5lIHR1cGxlPE4sVD46OnR1cGxlIChjb25zdF9yZWZlcmVuY2UgdjAsIGNvbnN0X3JlZmVyZW5jZSB2MSwgY29uc3RfcmVmZXJlbmNlIHYyLCBjb25zdF9yZWZlcmVuY2UgdjMpCi17Ci0gICAgbV92WzBdID0gdjA7Ci0gICAgaWYgKE4gPiAxKSBtX3ZbMV0gPSB2MTsKLSAgICBpZiAoTiA+IDIpIG1fdlsyXSA9IHYyOwotICAgIGlmIChOID4gMykgbV92WzNdID0gdjM7Ci0gICAgaWYgKE4gPiA0KSBmaWxsX24gKG1fdiArIDQsIE4gLSA0LCBUKCkpOwotfQotCi10ZW1wbGF0ZSA8c2l6ZV90IE4sIHR5cGVuYW1lIFQ+Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVDI+Ci1pbmxpbmUgY29uc3QgdHVwbGU8TixUPiYgdHVwbGU8TixUPjo6b3BlcmF0b3I9IChjb25zdCB0dXBsZTxOLFQyPiYgc3JjKQoteyBzaW1kOjpwY29udmVydCAoc3JjLCAqdGhpcywgc2ltZDo6ZmNhc3Q8VDIsVD4oKSk7IHJldHVybiAoKnRoaXMpOyB9Ci0KLXRlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgVD4KLWlubGluZSBjb25zdCB0dXBsZTxOLFQ+JiB0dXBsZTxOLFQ+OjpvcGVyYXRvcj0gKGNvbnN0IHR1cGxlPE4sVD4mIHNyYykKLXsgc2ltZDo6cGFzc2lnbiAoc3JjLCAqdGhpcyk7IHJldHVybiAoKnRoaXMpOyB9Ci0KLXRlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotaW5saW5lIGJvb2wgb3BlcmF0b3I9PSAoY29uc3QgdHVwbGU8TixUMT4mIHQxLCBjb25zdCB0dXBsZTxOLFQyPiYgdDIpCi17Ci0gICAgZm9yICh1b2ZmX3QgaSA9IDA7IGkgPCBOOyArKyBpKQotCWlmICh0MVtpXSAhPSB0MltpXSkKLQkgICAgcmV0dXJuIChmYWxzZSk7Ci0gICAgcmV0dXJuICh0cnVlKTsKLX0KLQotdGVtcGxhdGUgPHNpemVfdCBOLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvcjwgKGNvbnN0IHR1cGxlPE4sVDE+JiB0MSwgY29uc3QgdHVwbGU8TixUMj4mIHQyKQotewotICAgIGZvciAodW9mZl90IGkgPSAwOyBpIDwgTiAmJiB0MVtpXSA8PSB0MltpXTsgKysgaSkKLQlpZiAodDFbaV0gPCB0MltpXSkKLQkgICAgcmV0dXJuICh0cnVlKTsKLSAgICByZXR1cm4gKGZhbHNlKTsKLX0KLQotdGVtcGxhdGUgPHNpemVfdCBOLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci1pbmxpbmUgY29uc3QgdHVwbGU8TixUMT4mIG9wZXJhdG9yKz0gKHR1cGxlPE4sVDE+JiB0MSwgY29uc3QgdHVwbGU8TixUMj4mIHQyKQotICAgIHsgZm9yICh1b2ZmX3QgaSA9IDA7IGkgPCBOOyArKyBpKSB0MVtpXSA9IFQxKHQxW2ldICsgdDJbaV0pOyByZXR1cm4gKHQxKTsgfQotCi10ZW1wbGF0ZSA8c2l6ZV90IE4sIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLWlubGluZSBjb25zdCB0dXBsZTxOLFQxPiYgb3BlcmF0b3ItPSAodHVwbGU8TixUMT4mIHQxLCBjb25zdCB0dXBsZTxOLFQyPiYgdDIpCi0gICAgeyBmb3IgKHVvZmZfdCBpID0gMDsgaSA8IE47ICsrIGkpIHQxW2ldID0gVDEodDFbaV0gLSB0MltpXSk7IHJldHVybiAodDEpOyB9Ci0KLXRlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotaW5saW5lIGNvbnN0IHR1cGxlPE4sVDE+JiBvcGVyYXRvcio9ICh0dXBsZTxOLFQxPiYgdDEsIGNvbnN0IHR1cGxlPE4sVDI+JiB0MikKLSAgICB7IGZvciAodW9mZl90IGkgPSAwOyBpIDwgTjsgKysgaSkgdDFbaV0gPSBUMSh0MVtpXSAqIHQyW2ldKTsgcmV0dXJuICh0MSk7IH0KLQotdGVtcGxhdGUgPHNpemVfdCBOLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci1pbmxpbmUgY29uc3QgdHVwbGU8TixUMT4mIG9wZXJhdG9yLz0gKHR1cGxlPE4sVDE+JiB0MSwgY29uc3QgdHVwbGU8TixUMj4mIHQyKQotICAgIHsgZm9yICh1b2ZmX3QgaSA9IDA7IGkgPCBOOyArKyBpKSB0MVtpXSA9IFQxKHQxW2ldIC8gdDJbaV0pOyByZXR1cm4gKHQxKTsgfQotCi10ZW1wbGF0ZSA8c2l6ZV90IE4sIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLWlubGluZSBjb25zdCB0dXBsZTxOLFQxPiBvcGVyYXRvcisgKGNvbnN0IHR1cGxlPE4sVDE+JiB0MSwgY29uc3QgdHVwbGU8TixUMj4mIHQyKQotewotICAgIHR1cGxlPE4sVDE+IHJlc3VsdDsKLSAgICBmb3IgKHVvZmZfdCBpID0gMDsgaSA8IE47ICsrIGkpIHJlc3VsdFtpXSA9IFQxKHQxW2ldICsgdDJbaV0pOwotICAgIHJldHVybiAocmVzdWx0KTsKLX0KLQotdGVtcGxhdGUgPHNpemVfdCBOLCB0eXBlbmFtZSBUMSwgdHlwZW5hbWUgVDI+Ci1pbmxpbmUgY29uc3QgdHVwbGU8TixUMT4gb3BlcmF0b3ItIChjb25zdCB0dXBsZTxOLFQxPiYgdDEsIGNvbnN0IHR1cGxlPE4sVDI+JiB0MikKLXsKLSAgICB0dXBsZTxOLFQxPiByZXN1bHQ7Ci0gICAgZm9yICh1b2ZmX3QgaSA9IDA7IGkgPCBOOyArKyBpKSByZXN1bHRbaV0gPSBUMSh0MVtpXSAtIHQyW2ldKTsKLSAgICByZXR1cm4gKHJlc3VsdCk7Ci19Ci0KLXRlbXBsYXRlIDxzaXplX3QgTiwgdHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotaW5saW5lIGNvbnN0IHR1cGxlPE4sVDE+IG9wZXJhdG9yKiAoY29uc3QgdHVwbGU8TixUMT4mIHQxLCBjb25zdCB0dXBsZTxOLFQyPiYgdDIpCi17Ci0gICAgdHVwbGU8TixUMT4gcmVzdWx0OwotICAgIGZvciAodW9mZl90IGkgPSAwOyBpIDwgTjsgKysgaSkgcmVzdWx0W2ldID0gVDEodDFbaV0gKiB0MltpXSk7Ci0gICAgcmV0dXJuIChyZXN1bHQpOwotfQotCi10ZW1wbGF0ZSA8c2l6ZV90IE4sIHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLWlubGluZSBjb25zdCB0dXBsZTxOLFQxPiBvcGVyYXRvci8gKGNvbnN0IHR1cGxlPE4sVDE+JiB0MSwgY29uc3QgdHVwbGU8TixUMj4mIHQyKQotewotICAgIHR1cGxlPE4sVDE+IHJlc3VsdDsKLSAgICBmb3IgKHVvZmZfdCBpID0gMDsgaSA8IE47ICsrIGkpIHJlc3VsdFtpXSA9IFQxKHQxW2ldIC8gdDJbaV0pOwotICAgIHJldHVybiAocmVzdWx0KTsKLX0KLQotI2lmIENQVV9IQVNfU1NFCi0jZGVmaW5lIFNTRV9UVVBMRV9TUEVDUyhuLHR5cGUpCQlcCi10ZW1wbGF0ZSA8PiBpbmxpbmUgdHVwbGU8bix0eXBlPjo6dHVwbGUgKHZvaWQpCVwKLXsgYXNtICgieG9ycHMgJSV4bW0wLCAlJXhtbTBcblx0bW92dXBzICUleG1tMCwgJTAiOjoibSIobV92WzBdKToieG1tMCIsIm1lbW9yeSIpOyB9CVwKLXRlbXBsYXRlPD4gaW5saW5lIHZvaWQgdHVwbGU8bix0eXBlPjo6c3dhcCAodHVwbGU8bix0eXBlPiYgdikJXAoteyBhc20gKCJtb3Z1cHMgJTAsJSV4bW0wXG5cdG1vdnVwcyAlMSwlJXhtbTFcblx0bW92dXBzICUleG1tMCwlMVxuXHRtb3Z1cHMgJSV4bW0xLCUwIjo6Im0iKG1fdlswXSksIm0iKHYubV92WzBdKToieG1tMCIsInhtbTEiLCJtZW1vcnkiKTsgfQotU1NFX1RVUExFX1NQRUNTKDQsZmxvYXQpCi1TU0VfVFVQTEVfU1BFQ1MoNCxpbnQzMl90KQotU1NFX1RVUExFX1NQRUNTKDQsdWludDMyX3QpCi0jdW5kZWYgU1NFX1RVUExFX1NQRUNTCi0jZW5kaWYKLSNpZiBDUFVfSEFTX01NWAotI2RlZmluZSBNTVhfVFVQTEVfU1BFQ1Mobix0eXBlKQkJXAotdGVtcGxhdGUgPD4gaW5saW5lIHR1cGxlPG4sdHlwZT46OnR1cGxlICh2b2lkKQlcCi17IGFzbSAoInB4b3IgJSVtbTAsICUlbW0wXG5cdG1vdnEgJSVtbTAsICUwIjo6Im0iKG1fdlswXSk6Im1tMCIsIm1lbW9yeSIpOyBzaW1kOjpyZXNldF9tbXgoKTsgfQlcCi10ZW1wbGF0ZTw+IGlubGluZSB2b2lkIHR1cGxlPG4sdHlwZT46OnN3YXAgKHR1cGxlPG4sdHlwZT4mIHYpCVwKLXsgYXNtICgibW92cSAlMCwlJW1tMFxuXHRtb3ZxICUxLCUlbW0xXG5cdG1vdnEgJSVtbTAsJTFcblx0bW92cSAlJW1tMSwlMCI6OiJtIihtX3ZbMF0pLCJtIih2Lm1fdlswXSk6Im1tMCIsIm1tMSIsIm1lbW9yeSIpOyBzaW1kOjpyZXNldF9tbXgoKTsgfQotTU1YX1RVUExFX1NQRUNTKDIsZmxvYXQpCi1NTVhfVFVQTEVfU1BFQ1MoNCxpbnQxNl90KQotTU1YX1RVUExFX1NQRUNTKDQsdWludDE2X3QpCi1NTVhfVFVQTEVfU1BFQ1MoMixpbnQzMl90KQotTU1YX1RVUExFX1NQRUNTKDIsdWludDMyX3QpCi1NTVhfVFVQTEVfU1BFQ1MoOCxpbnQ4X3QpCi1NTVhfVFVQTEVfU1BFQ1MoOCx1aW50OF90KQotI3VuZGVmIE1NWF9UVVBMRV9TUEVDUwotI2VuZGlmCi0KLSNkZWZpbmUgU0lNRF9UVVBMRV9QQUNLT1AoTixUKQlcCi10ZW1wbGF0ZSA8PiBpbmxpbmUgY29uc3QgdHVwbGU8TixUPiYgb3BlcmF0b3IrPSAodHVwbGU8TixUPiYgdDEsIGNvbnN0IHR1cGxlPE4sVD4mIHQyKQlcCi0gICAgeyBzaW1kOjpwYWRkICh0MiwgdDEpOyByZXR1cm4gKHQxKTsgfQkJCQkJCVwKLXRlbXBsYXRlIDw+IGlubGluZSBjb25zdCB0dXBsZTxOLFQ+JiBvcGVyYXRvci09ICh0dXBsZTxOLFQ+JiB0MSwgY29uc3QgdHVwbGU8TixUPiYgdDIpCVwKLSAgICB7IHNpbWQ6OnBzdWIgKHQyLCB0MSk7IHJldHVybiAodDEpOyB9CQkJCQkJXAotdGVtcGxhdGUgPD4gaW5saW5lIGNvbnN0IHR1cGxlPE4sVD4mIG9wZXJhdG9yKj0gKHR1cGxlPE4sVD4mIHQxLCBjb25zdCB0dXBsZTxOLFQ+JiB0MikJXAotICAgIHsgc2ltZDo6cG11bCAodDIsIHQxKTsgcmV0dXJuICh0MSk7IH0JCQkJCQlcCi10ZW1wbGF0ZSA8PiBpbmxpbmUgY29uc3QgdHVwbGU8TixUPiYgb3BlcmF0b3IvPSAodHVwbGU8TixUPiYgdDEsIGNvbnN0IHR1cGxlPE4sVD4mIHQyKQlcCi0gICAgeyBzaW1kOjpwZGl2ICh0MiwgdDEpOyByZXR1cm4gKHQxKTsgfQkJCQkJCVwKLXRlbXBsYXRlIDw+IGlubGluZSBjb25zdCB0dXBsZTxOLFQ+IG9wZXJhdG9yKyAoY29uc3QgdHVwbGU8TixUPiYgdDEsIGNvbnN0IHR1cGxlPE4sVD4mIHQyKSBcCi0gICAgeyB0dXBsZTxOLFQ+IHJlc3VsdCAodDEpOyBzaW1kOjpwYWRkICh0MiwgcmVzdWx0KTsgcmV0dXJuIChyZXN1bHQpOyB9CQlcCi10ZW1wbGF0ZSA8PiBpbmxpbmUgY29uc3QgdHVwbGU8TixUPiBvcGVyYXRvci0gKGNvbnN0IHR1cGxlPE4sVD4mIHQxLCBjb25zdCB0dXBsZTxOLFQ+JiB0MikgXAotICAgIHsgdHVwbGU8TixUPiByZXN1bHQgKHQxKTsgc2ltZDo6cHN1YiAodDIsIHJlc3VsdCk7IHJldHVybiAocmVzdWx0KTsgfQkJXAotdGVtcGxhdGUgPD4gaW5saW5lIGNvbnN0IHR1cGxlPE4sVD4gb3BlcmF0b3IqIChjb25zdCB0dXBsZTxOLFQ+JiB0MSwgY29uc3QgdHVwbGU8TixUPiYgdDIpIFwKLSAgICB7IHR1cGxlPE4sVD4gcmVzdWx0ICh0MSk7IHNpbWQ6OnBtdWwgKHQyLCByZXN1bHQpOyByZXR1cm4gKHJlc3VsdCk7IH0JCVwKLXRlbXBsYXRlIDw+IGlubGluZSBjb25zdCB0dXBsZTxOLFQ+IG9wZXJhdG9yLyAoY29uc3QgdHVwbGU8TixUPiYgdDEsIGNvbnN0IHR1cGxlPE4sVD4mIHQyKSBcCi0gICAgeyB0dXBsZTxOLFQ+IHJlc3VsdCAodDEpOyBzaW1kOjpwZGl2ICh0MiwgcmVzdWx0KTsgcmV0dXJuIChyZXN1bHQpOyB9Ci1TSU1EX1RVUExFX1BBQ0tPUCg0LGZsb2F0KQotU0lNRF9UVVBMRV9QQUNLT1AoMixmbG9hdCkKLVNJTURfVFVQTEVfUEFDS09QKDIsZG91YmxlKQotU0lNRF9UVVBMRV9QQUNLT1AoNCxpbnQzMl90KQotU0lNRF9UVVBMRV9QQUNLT1AoNCx1aW50MzJfdCkKLVNJTURfVFVQTEVfUEFDS09QKDQsaW50MTZfdCkKLVNJTURfVFVQTEVfUEFDS09QKDQsdWludDE2X3QpCi1TSU1EX1RVUExFX1BBQ0tPUCgyLGludDMyX3QpCi1TSU1EX1RVUExFX1BBQ0tPUCgyLHVpbnQzMl90KQotU0lNRF9UVVBMRV9QQUNLT1AoOCxpbnQ4X3QpCi1TSU1EX1RVUExFX1BBQ0tPUCg4LHVpbnQ4X3QpCi0jdW5kZWYgU0lNRF9UVVBMRV9QQUNLT1AKLQotfSAvLyBuYW1lc3BhY2UgdXN0bAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdXR5cGVzLmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91dHlwZXMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjBiMDI2NS4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91dHlwZXMuaAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLS8vIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSB1c3RsIGxpYnJhcnksIGFuIFNUTCBpbXBsZW1lbnRhdGlvbi4KLS8vCi0vLyBDb3B5cmlnaHQgKEMpIDIwMDUgYnkgTWlrZSBTaGFyb3YgPG1zaGFyb3ZAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotLy8gVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBNSVQgTGljZW5zZS4KLS8vCi0vLyB1dHlwZXMuaAotLy8KLS8vIFR5cGVzIHVzZWQgYnkgdGhpcyBsaWJyYXJ5LgotLy8KLQotI2lmbmRlZiBVVFlQRVNfSF8xMThCQkIzQjUwQjdEQkYyMkY1NDYwQzUyRTUxNUM4MwotI2RlZmluZSBVVFlQRVNfSF8xMThCQkIzQjUwQjdEQkYyMkY1NDYwQzUyRTUxNUM4MwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaWZuZGVmIFNURENfSEVBREVSUwotICAgICNlcnJvciBUaGlzIGxpYnJhcnkgcmVxdWlyZXMgc3RhbmRhcmQgQyBhbmQgQysrIGhlYWRlcnMgdG8gY29tcGlsZS4KLSNlbmRpZgotI2lmbmRlZiBTVERVTklYX0hFQURFUlMKLSAgICAjZXJyb3IgVGhpcyBsaWJyYXJ5IGNvbXBpbGVzIG9ubHkgb24gVU5JWCBzeXN0ZW1zLgotI2VuZGlmCi0jZGVmaW5lIF9fU1REQ19MSU1JVF9NQUNST1MJLy8gRm9yIFdDSEFSX01JTiBhbmQgV0NIQVJfTUFYIGluIHN0ZGludC4KLSNkZWZpbmUgX19TVERDX0NPTlNUQU5UX01BQ1JPUwkvLyBGb3IgVUlOVD8/X0MgbWFjcm9zIHRvIGF2b2lkIHVzaW5nIEwgYW5kIFVMIHN1ZmZpeGVzIG9uIGNvbnN0YW50cy4KLSNpZmRlZiBIQVZFX1NURElOVF9ICi0gICAgI2luY2x1ZGUgPHN0ZGludC5oPgotI2VsaWYgSEFWRV9JTlRUWVBFU19ICi0gICAgI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0jZWxzZQotICAgICNlcnJvciBOZWVkIHN0YW5kYXJkIGludGVnZXIgdHlwZXMgZGVmaW5pdGlvbnMsIHVzdWFsbHkgaW4gc3RkaW50LmgKLSNlbmRpZgotI2luY2x1ZGUgPHN0ZGRlZi5oPgkJLy8gRm9yIHB0cmRpZmZfdCwgc2l6ZV90Ci0jaW5jbHVkZSA8bGltaXRzLmg+Ci0jaW5jbHVkZSA8ZmxvYXQuaD4KLSNpZmRlZiBIQVZFX1NZU19UWVBFU19ICi0gICAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2VuZGlmCi0jaWZuZGVmIFNJWkVfTUFYCi0gICAgI2RlZmluZSBTSVpFX01BWAkJVUlOVF9NQVgKLSNlbmRpZgotI2lmIHN1biB8fCBfX3N1bgkJLy8gU29sYXJpcyBkZWZpbmVzIFVJTlRQVFJfTUFYIGFzIGVtcHR5LgotICAgICN1bmRlZiBVSU5UUFRSX01BWAotICAgICNkZWZpbmUgVUlOVFBUUl9NQVgJCVVMT05HX01BWAotI2VuZGlmCi0jaWZuZGVmIFdDSEFSX01BWAotICAgICNpZmRlZiBfX1dDSEFSX01BWF9fCi0JI2RlZmluZSBXQ0hBUl9NQVgJX19XQ0hBUl9NQVhfXwotICAgICNlbHNlCi0JI2RlZmluZSBXQ0hBUl9NQVgJQ0hBUl9NQVgKLSAgICAjZW5kaWYKLSNlbmRpZgotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0gICAgI2lmbmRlZiBMTE9OR19NQVgKLQkjZGVmaW5lIFVMTE9OR19NQVgJVUlOVDY0X0MoMHhGRkZGRkZGRkZGRkZGRkZGKQotCSNkZWZpbmUgTExPTkdfTUFYCUlOVDY0X0MoMHg3RkZGRkZGRkZGRkZGRkZGKQotCSNkZWZpbmUgTExPTkdfTUlOCVVMTE9OR19NQVgKLSAgICAjZW5kaWYKLSNlbmRpZgotI2lmICFQTEFURk9STV9BTkRST0lECi0jaWZuZGVmIEJZVEVfT1JERVIKLSAgICAjZGVmaW5lIExJVFRMRV9FTkRJQU4JVVNUTF9MSVRUTEVfRU5ESUFOCi0gICAgI2RlZmluZSBCSUdfRU5ESUFOCQlVU1RMX0JJR19FTkRJQU4KLSAgICAjZGVmaW5lIEJZVEVfT1JERVIJCVVTVExfQllURV9PUkRFUgotI2VuZGlmCi0jZW5kaWYKLQotdHlwZWRlZiBzaXplX3QJCXVvZmZfdDsJCS8vLzwgQSB0eXBlIGZvciBzdG9yaW5nIG9mZnNldHMgaW50byBibG9ja3MgbWVhc3VyZWQgYnkgc2l6ZV90LgotdHlwZWRlZiB1aW50MzJfdAloYXNodmFsdWVfdDsJLy8vPCBWYWx1ZSB0eXBlIHJldHVybmVkIGJ5IHRoZSBoYXNoIGZ1bmN0aW9ucy4KLQotI2VuZGlmCi0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3V1dGlsaXR5LmggYi9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC91c3RsLTEuMC91dXRpbGl0eS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjVhZTY0Li4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3V1dGlsaXR5LmgKKysrIC9kZXYvbnVsbApAQCAtMSwzODcgKzAsMCBAQAotLy8gVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIHVzdGwgbGlicmFyeSwgYW4gU1RMIGltcGxlbWVudGF0aW9uLgotLy8KLS8vIENvcHlyaWdodCAoQykgMjAwNSBieSBNaWtlIFNoYXJvdiA8bXNoYXJvdkB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0vLyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlLgotLy8KLS8vLyBcZmlsZSB1dXRpbGl0eS5oCi0vLy8KLS8vLyBcYnJpZWYgVXRpbGl0eSB0ZW1wbGF0ZXMuCi0vLy8KLS8vLyBFdmVyeXRoaW5nIGluIGhlcmUgZXhjZXB0IG1pbigpLCBtYXgoKSwgZGlzdGFuY2UoKSwgYW5kIGFkdmFuY2UoKQotLy8vIGFyZSB1U1RMIGV4dGVuc2lvbnMgYW5kIGFyZSBhYnNlbnQgZnJvbSBvdGhlciBTVEwgaW1wbGVtZW50YXRpb25zLgotLy8vCi0KLSNpZm5kZWYgVVVUSUxJVFlfSF82QTU4QkQyOTYyNjlBODJBNEFBQUE0RkQxOUZEQjNBQwotI2RlZmluZSBVVVRJTElUWV9IXzZBNThCRDI5NjI2OUE4MkE0QUFBQTRGRDE5RkRCM0FDCi0KLSNpbmNsdWRlICJ1YXNzZXJ0LmgiCi0jaW5jbHVkZSAidXR5cGVzLmgiCi0KLSNpZiBQTEFURk9STV9BTkRST0lECi0jaW5jbHVkZSA8c3RkaW8uaD4KLSN1bmRlZiBDUFVfSEFTX01NWAotI2VuZGlmCi0KLW5hbWVzcGFjZSB1c3RsIHsKLQotI2lmZGVmIF9fR05VQ19fCi0gICAgLy8vIFJldHVybnMgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiBhIHN0YXRpYyB2ZWN0b3IKLSAgICAjZGVmaW5lIFZlY3RvclNpemUodikJKHNpemVvZih2KSAvIHNpemVvZigqdikpCi0jZWxzZQotICAgIC8vIE9sZCBjb21waWxlcnMgd2lsbCBub3QgYmUgYWJsZSB0byBldmFsdWF0ZSAqdiBvbiBhbiBlbXB0eSB2ZWN0b3IuCi0gICAgLy8gVGhlIHRyYWRlb2ZmIGhlcmUgaXMgdGhhdCBWZWN0b3JTaXplIHdpbGwgbm90IGJlIGFibGUgdG8gbWVhc3VyZSBhcnJheXMgb2YgbG9jYWwgc3RydWN0cy4KLSAgICAjZGVmaW5lIFZlY3RvclNpemUodikJKHNpemVvZih2KSAvIHVzdGw6OnNpemVfb2ZfZWxlbWVudHMoMSwgdikpCi0jZW5kaWYKLQotLy8vIEV4cGFuZHMgaW50byBhIHB0cixzaXplIGV4cHJlc3Npb24gZm9yIHRoZSBnaXZlbiBzdGF0aWMgdmVjdG9yOyB1c2VmdWwgYXMgbGluayBhcmd1bWVudHMuCi0jZGVmaW5lIFZlY3RvckJsb2NrKHYpCSh2KSswLCBWZWN0b3JTaXplKHYpCS8vICswIG1ha2VzIGl0IHdvcmsgdW5kZXIgZ2NjIDIuOTUKLS8vLyBFeHBhbmRzIGludG8gYSBiZWdpbixlbmQgZXhwcmVzc2lvbiBmb3IgdGhlIGdpdmVuIHN0YXRpYyB2ZWN0b3I7IHVzZWZ1bCBmb3IgYWxnb3JpdGhtIGFyZ3VtZW50cy4KLSNkZWZpbmUgVmVjdG9yUmFuZ2UodikJVmVjdG9yQmxvY2sodikrKHYpCi0KLS8vLyBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYml0cyBpbiB0aGUgZ2l2ZW4gdHlwZQotI2RlZmluZSBCaXRzSW5UeXBlKHQpCShzaXplb2YodCkgKiBDSEFSX0JJVCkKLQotLy8vIFJldHVybnMgdGhlIG1hc2sgb2YgdHlwZSBccCB0IHdpdGggdGhlIGxvd2VzdCBccCBuIGJpdHMgc2V0LgotI2RlZmluZSBCaXRNYXNrKHQsbikJKHQofnQoMCkpID4+ICgoc2l6ZW9mKHQpICogQ0hBUl9CSVQpIC0gKG4pKSkKLQotLy8vIEFyZ3VtZW50IHRoYXQgaXMgdXNlZCBvbmx5IGluIGRlYnVnIGJ1aWxkcyAoYXMgaW4gYW4gYXNzZXJ0KQotI2lmbmRlZiBOREVCVUcKLSAgICAjZGVmaW5lIERlYnVnQXJnKHgpCXgKLSNlbHNlCi0gICAgI2RlZmluZSBEZWJ1Z0FyZyh4KQotI2VuZGlmCi0KLS8vLyBTaG9ydGhhbmQgZm9yIGNvbnRhaW5lciBpdGVyYXRpb24uCi0jZGVmaW5lIGZvcmVhY2godHlwZSxpLGN0cikJZm9yICh0eXBlIGkgPSAoY3RyKS5iZWdpbigpOyBpICE9IChjdHIpLmVuZCgpOyArKyBpKQotLy8vIFNob3J0aGFuZCBmb3IgY29udGFpbmVyIHJldmVyc2UgaXRlcmF0aW9uLgotI2RlZmluZSBlYWNoZm9yKHR5cGUsaSxjdHIpCWZvciAodHlwZSBpID0gKGN0cikucmJlZ2luKCk7IGkgIT0gKGN0cikucmVuZCgpOyArKyBpKQotCi0vLy8gTWFjcm8gZm9yIHBhc3NpbmcgdGVtcGxhdGUgdHlwZXMgYXMgbWFjcm8gYXJndW1lbnRzLgotLy8vIFxAewotI2RlZmluZSBURU1QTEFURV9GVUxMX0RFQ0wxKGQxLHQxKQkJdGVtcGxhdGUgPGQxIHQxPgotI2RlZmluZSBURU1QTEFURV9GVUxMX0RFQ0wyKGQxLHQxLGQyLHQyKQl0ZW1wbGF0ZSA8ZDEgdDEsIGQyIHQyPgotI2RlZmluZSBURU1QTEFURV9GVUxMX0RFQ0wzKGQxLHQxLGQyLHQyLGQzLHQzKQl0ZW1wbGF0ZSA8ZDEgdDEsIGQyIHQyLCBkMyB0Mz4KLSNkZWZpbmUgVEVNUExBVEVfREVDTDEodDEpCQlURU1QTEFURV9GVUxMX0RFQ0wxKHR5cGVuYW1lLHQxKQotI2RlZmluZSBURU1QTEFURV9ERUNMMih0MSx0MikJCVRFTVBMQVRFX0ZVTExfREVDTDIodHlwZW5hbWUsdDEsdHlwZW5hbWUsdDIpCi0jZGVmaW5lIFRFTVBMQVRFX0RFQ0wzKHQxLHQyLHQzKQlURU1QTEFURV9GVUxMX0RFQ0wzKHR5cGVuYW1lLHQxLHR5cGVuYW1lLHQyLHR5cGVuYW1lLHQzKQotI2RlZmluZSBURU1QTEFURV9UWVBFMSh0eXBlLGExKQkJdHlwZTxhMT4KLSNkZWZpbmUgVEVNUExBVEVfVFlQRTIodHlwZSxhMSxhMikJdHlwZTxhMSxhMj4KLSNkZWZpbmUgVEVNUExBVEVfVFlQRTModHlwZSxhMSxhMixhMykJdHlwZTxhMSxhMixhMz4KLS8vLyBcQH0KLQotLy8vIFJldHVybnMgdGhlIG1pbmltdW0gb2YgXHAgYSBhbmQgXHAgYgotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLWlubGluZSBjb25zdCBUMSBtaW4gKGNvbnN0IFQxJiBhLCBjb25zdCBUMiYgYikKLXsKLSAgICByZXR1cm4gKGEgPCBiID8gYSA6IGIpOwotfQotCi0vLy8gUmV0dXJucyB0aGUgbWF4aW11bSBvZiBccCBhIGFuZCBccCBiCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotaW5saW5lIGNvbnN0IFQxIG1heCAoY29uc3QgVDEmIGEsIGNvbnN0IFQyJiBiKQotewotICAgIHJldHVybiAoYiA8IGEgPyBhIDogYik7Ci19Ci0KLS8vLyBcYnJpZWYgRGl2aWRlcyBccCBuMSBieSBccCBuMiBhbmQgcm91bmRzIHRoZSByZXN1bHQgdXAuCi0vLy8gVGhpcyBpcyBpbiBjb250cmFzdCB0byByZWd1bGFyIGRpdmlzaW9uLCB3aGljaCByb3VuZHMgZG93bi4KLS8vLyBOZWdhdGl2ZSBudW1iZXJzIGFyZSByb3VuZGVkIGRvd24gYmVjYXVzZSB0aGV5IGFyZSBhbiB1bnVzdWFsIGNhc2UsIHN1cHBvcnRpbmcKLS8vLyB3aGljaCB3b3VsZCByZXF1aXJlIGEgYnJhbmNoLiBTaW5jZSB0aGlzIGlzIGZyZXF1ZW50bHkgdXNlZCBpbiBncmFwaGljcywgdGhlCi0vLy8gc3BlZWQgaXMgaW1wb3J0YW50LgotLy8vCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVDEsIHR5cGVuYW1lIFQyPgotaW5saW5lIFQxIERpdlJVIChUMSBuMSwgVDIgbjIpCi17Ci0gICAgcmV0dXJuIChuMSAvIG4yICsgKG4xICUgbjIgPiAwKSk7Ci19Ci0KLS8vLyBUaGUgYWxpZ25tZW50IHBlcmZvcm1lZCBieSBkZWZhdWx0LgotY29uc3Qgc2l6ZV90IGNfRGVmYXVsdEFsaWdubWVudCA9IF9fYWxpZ25vZl9fKHZvaWQqKTsKLQotLy8vIFxicmllZiBSb3VuZHMgXHAgbiB1cCB0byBiZSBkaXZpc2libGUgYnkgXHAgZ3JhaW4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIFQgQWxpZ24gKFQgbiwgc2l6ZV90IGdyYWluID0gY19EZWZhdWx0QWxpZ25tZW50KQotewotICAgIFQgYSwgciA9IG4gJSBncmFpbjsKLSAgICBpZiAoZ3JhaW4gPT0gMikgcmV0dXJuIChuICsgcik7Ci0gICAgc3dpdGNoIChncmFpbikgewotCWNhc2UgNDogY2FzZSA4OiBjYXNlIDE2OiBhID0gKG4gJiB+KGdyYWluIC0gMSkpICsgZ3JhaW47IGJyZWFrOwotCWRlZmF1bHQ6CQkgYSA9IG4gKyAoZ3JhaW4gLSByKTsKLSAgICB9OwotICAgIHJldHVybiAociA/IGEgOiBuKTsKLX0KLQotLy8vIE9mZnNldHMgYW4gaXRlcmF0b3IKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIFQgYWR2YW5jZSAoVCBpLCBzc2l6ZV90IG9mZnNldCkKLXsKLSAgICByZXR1cm4gKGkgKyBvZmZzZXQpOwotfQotCi0jaWZuZGVmIERPWFlHRU5fU0hPVUxEX1NLSVBfVEhJUwotLy8vIE9mZnNldHMgYSB2b2lkIHBvaW50ZXIKLXRlbXBsYXRlIDw+Ci1pbmxpbmUgY29uc3Qgdm9pZCogYWR2YW5jZSAoY29uc3Qgdm9pZCogcCwgc3NpemVfdCBvZmZzZXQpCi17Ci0gICAgYXNzZXJ0IChwIHx8ICFvZmZzZXQpOwotICAgIHJldHVybiAocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4ocCkgKyBvZmZzZXQpOwotfQotCi0vLy8gT2Zmc2V0cyBhIHZvaWQgcG9pbnRlcgotdGVtcGxhdGUgPD4KLWlubGluZSB2b2lkKiBhZHZhbmNlICh2b2lkKiBwLCBzc2l6ZV90IG9mZnNldCkKLXsKLSAgICBhc3NlcnQgKHAgfHwgIW9mZnNldCk7Ci0gICAgcmV0dXJuIChyZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihwKSArIG9mZnNldCk7Ci19Ci0jZW5kaWYKLQotLy8vIFJldHVybnMgdGhlIGRpZmZlcmVuY2UgXHAgcDEgLSBccCBwMgotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLWlubGluZSBwdHJkaWZmX3QgZGlzdGFuY2UgKFQxIGkxLCBUMiBpMikKLXsKLSAgICByZXR1cm4gKGkyIC0gaTEpOwotfQotCi0jaWZuZGVmIERPWFlHRU5fU0hPVUxEX1NLSVBfVEhJUwotI2RlZmluZSBVTlZPSURfRElTVEFOQ0UoVDFjb25zdCxUMmNvbnN0KQkJCQkgICBcCi10ZW1wbGF0ZSA8PiBpbmxpbmUgcHRyZGlmZl90IGRpc3RhbmNlIChUMWNvbnN0IHZvaWQqIHAxLCBUMmNvbnN0IHZvaWQqIHAyKSBcCi17IHJldHVybiAoKFQyY29uc3QgdWludDhfdCopKHAyKSAtIChUMWNvbnN0IHVpbnQ4X3QqKShwMSkpOyB9Ci1VTlZPSURfRElTVEFOQ0UoLCkKLVVOVk9JRF9ESVNUQU5DRShjb25zdCxjb25zdCkKLVVOVk9JRF9ESVNUQU5DRSgsY29uc3QpCi1VTlZPSURfRElTVEFOQ0UoY29uc3QsKQotI3VuZGVmIFVOVk9JRF9ESVNUQU5DRQotI2VuZGlmCi0KLS8vLyBcYnJpZWYgUmV0dXJucyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgXHAgdgotLy8vIFVubGlrZSB0aGUgc3RkbGliIGZ1bmN0aW9ucywgdGhpcyBpcyBpbmxpbmUgYW5kIHdvcmtzIHdpdGggYWxsIHR5cGVzLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgVCBhYnN2IChUIHYpCi17Ci0gICAgcmV0dXJuICh2IDwgMCA/IC12IDogdik7Ci19Ci0KLS8vLyBcYnJpZWYgUmV0dXJucyAtMSBmb3IgbmVnYXRpdmUgdmFsdWVzLCAxIGZvciBwb3NpdGl2ZSwgYW5kIDAgZm9yIDAKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIFQgc2lnbiAoVCB2KQotewotICAgIHJldHVybiAoKDAgPCB2KSAtICh2IDwgMCkpOwotfQotCi0vLy8gUmV0dXJucyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIGRpc3RhbmNlIGkxIGFuZCBpMgotdGVtcGxhdGUgPHR5cGVuYW1lIFQxLCB0eXBlbmFtZSBUMj4KLWlubGluZSBzaXplX3QgYWJzX2Rpc3RhbmNlIChUMSBpMSwgVDIgaTIpCi17Ci0gICAgcmV0dXJuIChhYnN2IChkaXN0YW5jZShpMSwgaTIpKSk7Ci19Ci0KLS8vLyBSZXR1cm5zIHRoZSBzaXplIG9mIFxwIG4gZWxlbWVudHMgb2Ygc2l6ZSBccCBUCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSBzaXplX3Qgc2l6ZV9vZl9lbGVtZW50cyAoc2l6ZV90IG4sIGNvbnN0IFQqKQotewotICAgIHJldHVybiAobiAqIHNpemVvZihUKSk7Ci19Ci0KLS8vIERlZmluZWQgaW4gYnl0ZXN3YXAuaCwgd2hpY2ggaXMgdXN1YWxseSB1bnVzYWJsZS4KLSN1bmRlZiBic3dhcF8xNgotI3VuZGVmIGJzd2FwXzMyCi0jdW5kZWYgYnN3YXBfNjQKLQotI2lmIENQVV9IQVNfQ01QWENIRzgJLy8gSWYgaXQgaGFzIHRoYXQsIGl0IGhhcyBic3dhcC4KLWlubGluZSB1aW50MTZfdCBic3dhcF8xNiAodWludDE2X3QgdikJeyBhc20gKCJyb3J3ICQ4LCAldzAiIDogIj1yIih2KSA6ICIwIih2KSA6ICJjYyIpOyByZXR1cm4gKHYpOyB9Ci1pbmxpbmUgdWludDMyX3QgYnN3YXBfMzIgKHVpbnQzMl90IHYpCXsgYXNtICgiYnN3YXAgJTAiIDogIj1yIih2KSA6ICIwIih2KSk7IHJldHVybiAodik7IH0KLSNlbHNlCi1pbmxpbmUgdWludDE2X3QgYnN3YXBfMTYgKHVpbnQxNl90IHYpCXsgcmV0dXJuICh2IDw8IDggfCB2ID4+IDgpOyB9Ci1pbmxpbmUgdWludDMyX3QgYnN3YXBfMzIgKHVpbnQzMl90IHYpCXsgcmV0dXJuICh2IDw8IDI0IHwgKHYgJiAweEZGMDApIDw8IDggfCAodiA+PiA4KSAmIDB4RkYwMCB8IHYgPj4gMjQpOyB9Ci0jZW5kaWYKLSNpZiBIQVZFX0lOVDY0X1QKLWlubGluZSB1aW50NjRfdCBic3dhcF82NCAodWludDY0X3QgdikJeyByZXR1cm4gKCh1aW50NjRfdChic3dhcF8zMih2KSkgPDwgMzIpIHwgYnN3YXBfMzIodiA+PiAzMikpOyB9Ci0jZW5kaWYKLQotLy8vIFxicmllZiBTd2FwcyB0aGUgYnl0ZW9yZGVyIG9mIFxwIHYuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSBUIGJzd2FwIChjb25zdCBUJiB2KQotewotICAgIHN3aXRjaCAoQml0c0luVHlwZShUKSkgewotCWRlZmF1bHQ6CXJldHVybiAodik7Ci0JY2FzZSAxNjoJcmV0dXJuIChUIChic3dhcF8xNiAodWludDE2X3QgKHYpKSkpOwotCWNhc2UgMzI6CXJldHVybiAoVCAoYnN3YXBfMzIgKHVpbnQzMl90ICh2KSkpKTsKLSNpZiBIQVZFX0lOVDY0X1QKLQljYXNlIDY0OglyZXR1cm4gKFQgKGJzd2FwXzY0ICh1aW50NjRfdCAodikpKSk7Ci0jZW5kaWYKLSAgICB9OwotfQotCi0jaWYgVVNUTF9CWVRFX09SREVSID09IFVTVExfQklHX0VORElBTgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBUIGxlX3RvX25hdGl2ZSAoY29uc3QgVCYgdikgeyByZXR1cm4gKGJzd2FwICh2KSk7IH0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgVCBiZV90b19uYXRpdmUgKGNvbnN0IFQmIHYpIHsgcmV0dXJuICh2KTsgfQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBUIG5hdGl2ZV90b19sZSAoY29uc3QgVCYgdikgeyByZXR1cm4gKGJzd2FwICh2KSk7IH0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPiBpbmxpbmUgVCBuYXRpdmVfdG9fYmUgKGNvbnN0IFQmIHYpIHsgcmV0dXJuICh2KTsgfQotI2VsaWYgVVNUTF9CWVRFX09SREVSID09IFVTVExfTElUVExFX0VORElBTgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBUIGxlX3RvX25hdGl2ZSAoY29uc3QgVCYgdikgeyByZXR1cm4gKHYpOyB9Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIFQgYmVfdG9fbmF0aXZlIChjb25zdCBUJiB2KSB7IHJldHVybiAoYnN3YXAgKHYpKTsgfQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+IGlubGluZSBUIG5hdGl2ZV90b19sZSAoY29uc3QgVCYgdikgeyByZXR1cm4gKHYpOyB9Ci10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gaW5saW5lIFQgbmF0aXZlX3RvX2JlIChjb25zdCBUJiB2KSB7IHJldHVybiAoYnN3YXAgKHYpKTsgfQotI2VuZGlmIC8vIFVTVExfQllURV9PUkRFUgotCi0vLy8gRGVsZXRlcyBccCBwIGFuZCBzZXRzIGl0IHRvIE5VTEwKLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIHZvaWQgRGVsZXRlIChUKiYgcCkKLXsKLSAgICBkZWxldGUgcDsKLSAgICBwID0gTlVMTDsKLX0KLQotLy8vIERlbGV0ZXMgXHAgcCBhcyBhbiBhcnJheSBhbmQgc2V0cyBpdCB0byBOVUxMCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSB2b2lkIERlbGV0ZVZlY3RvciAoVComIHApCi17Ci0gICAgZGVsZXRlIFtdIHA7Ci0gICAgcCA9IE5VTEw7Ci19Ci0KLS8vLyBUZW1wbGF0ZSBvZiBtYWtpbmcgIT0gZnJvbSAhIGFuZCA9PQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvciE9IChjb25zdCBUJiB4LCBjb25zdCBUJiB5KQotewotICAgIHJldHVybiAoISh4ID09IHkpKTsKLX0KLQotLy8vIFRlbXBsYXRlIG9mIG1ha2luZyA+IGZyb20gPAotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvcj4gKGNvbnN0IFQmIHgsIGNvbnN0IFQmIHkpCi17Ci0gICAgcmV0dXJuICh5IDwgeCk7Ci19Ci0KLS8vLyBUZW1wbGF0ZSBvZiBtYWtpbmcgPD0gZnJvbSA8IGFuZCA9PQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgYm9vbCBvcGVyYXRvcjw9IChjb25zdCBUJiB4LCBjb25zdCBUJiB5KQotewotICAgIHJldHVybiAoISh5IDwgeCkpOwotfQotCi0vLy8gVGVtcGxhdGUgb2YgbWFraW5nID49IGZyb20gPCBhbmQgPT0KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIGJvb2wgb3BlcmF0b3I+PSAoY29uc3QgVCYgeCwgY29uc3QgVCYgeSkKLXsKLSAgICByZXR1cm4gKCEoeCA8IHkpKTsKLX0KLQotLy8vIFBhY2tzIFxwIHMgbXVsdGlwbGUgdGltZXMgaW50byBccCBiLiBVc2VmdWwgZm9yIGxvb3AgdW5yb2xsaW5nLgotdGVtcGxhdGUgPHR5cGVuYW1lIFRTbWFsbCwgdHlwZW5hbWUgVEJpZz4KLWlubGluZSB2b2lkIHBhY2tfdHlwZSAoVFNtYWxsIHMsIFRCaWcmIGIpCi17Ci0gICAgY29uc3Qgc2l6ZV90IG4gPSBzaXplb2YoVEJpZykgLyBzaXplb2YoVFNtYWxsKTsKLSAgICBiID0gczsKLSAgICAvLyBDYWxscyB0byBtaW4gYXJlIGhlcmUgdG8gYXZvaWQgd2FybmluZ3MgZm9yIHNoaWZ0cyBiaWdnZXIgdGhhbiB0aGUgdHlwZS4gbWluIHdpbGwgYmUgZ29uZSB3aGVuIG9wdGltaXplZC4KLSAgICBpZiAobiA8IDIpIHJldHVybjsKLSAgICBiID0gKGIgPDwgbWluIChCaXRzSW5UeXBlKFRTbWFsbCksIEJpdHNJblR5cGUoVEJpZykpKSB8IGI7Ci0gICAgaWYgKG4gPCA0KSByZXR1cm47Ci0gICAgYiA9IChiIDw8IG1pbiAoQml0c0luVHlwZShUU21hbGwpICogMiwgQml0c0luVHlwZShUQmlnKSkpIHwgYjsKLSAgICBpZiAobiA8IDgpIHJldHVybjsKLSAgICBiID0gKGIgPDwgbWluIChCaXRzSW5UeXBlKFRTbWFsbCkgKiA0LCBCaXRzSW5UeXBlKFRCaWcpKSkgfCBiOwotfQotCi0jaWYgX19HTlVDX18gPj0gMwotaW5saW5lIGJvb2wgVGVzdEFuZFNldCAoaW50KiBwbSkgX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpOwotI2VuZGlmCi0vLy8gU2V0cyB0aGUgY29udGVudHMgb2YgXHAgcG0gdG8gMSBhbmQgcmV0dXJucyB0cnVlIGlmIHRoZSBwcmV2aW91cyB2YWx1ZSB3YXMgMC4KLWlubGluZSBib29sIFRlc3RBbmRTZXQgKGludCogcG0pCi17Ci0jaWYgQ1BVX0hBU19DTVBYQ0hHOAotICAgIGJvb2wgcnY7Ci0gICAgaW50IG9sZFZhbCAoMSk7Ci0gICAgYXNtIHZvbGF0aWxlICggLy8gY21weGNoZyBjb21wYXJlcyB0byAlZWF4IGFuZCBzd2FwcyBpZiBlcXVhbAotCSJjbXB4Y2hnbCAlMywgJTFcblx0IgotCSJzZXRlICUwIgotCTogIj1hIiAocnYpLCAiPW0iICgqcG0pLCAiPXIiIChvbGRWYWwpCi0JOiAiMiIgKG9sZFZhbCksICJhIiAoMCkKLQk6ICJtZW1vcnkiKTsKLSAgICByZXR1cm4gKHJ2KTsKLSNlbGlmIF9faTM4Nl9fIHx8IF9feDg2XzY0X18KLSAgICBpbnQgb2xkVmFsICgxKTsKLSAgICBhc20gdm9sYXRpbGUgKCJ4Y2hnbCAlMCwgJTEiIDogIj1yIihvbGRWYWwpLCAiPW0iKCpwbSkgOiAiMCIob2xkVmFsKSwgIm0iKCpwbSkgOiAibWVtb3J5Iik7Ci0gICAgcmV0dXJuICghb2xkVmFsKTsKLSNlbGlmIF9fc3BhcmMzMl9fCS8vIFRoaXMgaGFzIG5vdCBiZWVuIHRlc3RlZAotICAgIGludCBydjsKLSAgICBhc20gdm9sYXRpbGUgKCJsZHN0dWIgJTEsICUwIiA6ICI9ciIocnYpLCAiPW0iKCpwbSkgOiAibSIocG0pKTsKLSAgICByZXR1cm4gKCFydik7Ci0jZWxzZQotICAgIGNvbnN0IGludCBvbGRWYWwgKCpwbSk7Ci0gICAgKnBtID0gMTsKLSAgICByZXR1cm4gKCFvbGRWYWwpOwotI2VuZGlmCi19Ci0KLS8vLyBcYnJpZWYgVGhpcyB0ZW1wbGF0ZSBpcyB0byBiZSB1c2VkIGZvciBkZXJlZmVyZW5jaW5nIGEgdHlwZS1wdW5uZWQgcG9pbnRlciB3aXRob3V0IGEgd2FybmluZy4KLS8vLwotLy8vIFdoZW4gY2FzdGluZyBhIGxvY2FsIHZhcmlhYmxlIHRvIGFuIHVucmVsYXRlZCB0eXBlIHRocm91Z2ggYSBwb2ludGVyIChmb3IKLS8vLyBleGFtcGxlLCBjYXN0aW5nIGEgZmxvYXQgdG8gYSB1aW50MzJfdCB3aXRob3V0IGNvbnZlcnNpb24pLCB0aGUgcmVzdWx0aW5nCi0vLy8gbWVtb3J5IGxvY2F0aW9uIGNhbiBiZSBhY2Nlc3NlZCB0aHJvdWdoIGVpdGhlciBwb2ludGVyLCB3aGljaCB2aW9sYXRlcyB0aGUKLS8vLyBzdHJpY3QgYWxpYXNpbmcgcnVsZS4gV2hpbGUgLWZuby1zdHJpY3QtYWxpYXNpbmcgb3B0aW9uIGNhbiBiZSBnaXZlbiB0bwotLy8vIHRoZSBjb21waWxlciwgZWxpbWluYXRpbmcgdGhpcyB3YXJuaW5nLCBpbmVmZmljaWVudCBjb2RlIG1heSByZXN1bHQgaW4KLS8vLyBzb21lIGluc3RhbmNlcywgYmVjYXVzZSBhbGlhc2luZyBpbmhpYml0cyBzb21lIG9wdGltaXphdGlvbnMuIEJ5IHVzaW5nCi0vLy8gdGhpcyB0ZW1wbGF0ZSwgYW5kIGJ5IGVuc3VyaW5nIHRoZSBtZW1vcnkgaXMgYWNjZXNzZWQgaW4gb25lIHdheSBvbmx5LAotLy8vIGVmZmljaWVudCBjb2RlIGNhbiBiZSBwcm9kdWNlZCB3aXRob3V0IHRoZSB3YXJuaW5nLiBGb3IgZ2NjIDQuMS4wKy4KLS8vLwotdGVtcGxhdGUgPHR5cGVuYW1lIERFU1QsIHR5cGVuYW1lIFNSQz4KLWlubGluZSBERVNUIG5vYWxpYXMgKERFU1QsIFNSQyogcykKLXsKLSAgICB1bmlvbiBVUHVuIHsgU1JDIHM7IERFU1QgZDsgfTsKLSAgICByZXR1cm4gKCgoVVB1biopKHMpKS0+ZCk7Ci19Ci0KLW5hbWVzcGFjZSBzaW1kIHsKLSAgICAvLy8gQ2FsbCBhZnRlciB5b3UgYXJlIGRvbmUgdXNpbmcgU0lNRCBhbGdvcml0aG1zIGZvciA2NCBiaXQgdHVwbGVzLgotI2lmIENQVV9IQVNfTU1YCi0gICAgaW5saW5lIHZvaWQgcmVzZXRfbW14ICh2b2lkKSBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSk7Ci0gICAgI2RlZmluZSBBTExfTU1YX1JFR1NfQ0hBTkdFTElTVCAibW0wIiwibW0xIiwibW0yIiwibW0zIiwibW00IiwibW01IiwibW02IiwibW03Iiwic3QiLCJzdCgxKSIsInN0KDIpIiwic3QoMykiLCJzdCg0KSIsInN0KDUpIiwic3QoNikiLCJzdCg3KSIKLSAgICAjaWYgQ1BVX0hBU18zRE5PVwotCWlubGluZSB2b2lkIHJlc2V0X21teCAodm9pZCkgeyBhc20gKCJmZW1tcyI6OjpBTExfTU1YX1JFR1NfQ0hBTkdFTElTVCk7IH0KLSAgICAjZWxzZQotCWlubGluZSB2b2lkIHJlc2V0X21teCAodm9pZCkgeyBhc20gKCJlbW1zIjo6OkFMTF9NTVhfUkVHU19DSEFOR0VMSVNUKTsgfQotICAgICNlbmRpZgotI2Vsc2UKLSAgICBpbmxpbmUgdm9pZCByZXNldF9tbXggKHZvaWQpIHt9Ci0jZW5kaWYKLX0gLy8gbmFtZXNwYWNlIHNpbWQKLQotLy8vIFxicmllZiBUeXBlIHRoYXQgaXMgbm90IHNpemVfdAotLy8vCi0vLy8gQmVjYXVzZSBzaXplX3QgbWF5IGJlIGRlY2xhcmVkIGFzIHVuc2lnbmVkIGxvbmcgb3IgdW5zaWduZWQgaW50IG9uCi0vLy8gZGlmZmVyZW50IG1hY2hpbmVzLCB0aGlzIG1hY3JvIGlzIGNvbnZlbmllbnQgd2hlbiBkZWZpbmluZyBvdmVybG9hZHMKLS8vLyBvZiBzaXplX3QgdG8gdXNlIG90aGVyIHR5cGVzLgotLy8vCi0jaWYgZGVmaW5lZChTSVpFX1RfSVNfTE9ORykgJiYgIWRlZmluZWQoX19BUk1fRUFCSV9fKQotICAgICAjZGVmaW5lIE5PVF9TSVpFX1RfSV9PUl9MCXVuc2lnbmVkIGludAotI2Vsc2UKLSAgICAjZGVmaW5lIE5PVF9TSVpFX1RfSV9PUl9MCXVuc2lnbmVkIGxvbmcKLSNlbmRpZgotCi0vLy8gXGJyaWVmIFJlcXVpcmVkIHdoZW4geW91IHdhbnQgdG8gb3ZlcmxvYWQgc2l6ZV90IGFuZCBhIHBvaW50ZXIuCi0vLy8KLS8vLyBUaGUgY29tcGlsZXIgd2lsbCBoYXBwaWx5IGNhc3QgYSBudW1iZXIgdG8gYSBwb2ludGVyIGFuZCBkZWNsYXJlCi0vLy8gdGhhdCB0aGUgb3ZlcmxvYWQgaXMgYW1iaWd1b3VzIHVubGVzcyB5b3UgZGVmaW5lIG92ZXJsb2FkcyBmb3IgYWxsCi0vLy8gcG9zc2libGUgaW50ZWdyYWwgdHlwZXMgdGhhdCBhIG51bWJlciBtYXkgcmVwcmVzZW50LiBUaGlzIGJlaGF2aW91ciwKLS8vLyBhbHRob3VnaCBicmFpbmRlYWQsIGlzIGluIHRoZSBBTlNJIHN0YW5kYXJkLCBhbmQgdGh1cyBub3QgYSBidWcuIElmCi0vLy8geW91IHdhbnQgdG8gY2hhbmdlIHRoZSBzdGFuZGFyZCwgdGhlIGJlc3Qgc29sdXRpb24gaXMgdG8gZGlzYWxsb3cgYW55Ci0vLy8gaW1wbGljaXQgY2FzdHMgdG8gcG9pbnRlciBmcm9tIGFuIGludGVncmFsIHR5cGUuIElyb25pY2FsbHksIHN1Y2ggYW4KLS8vLyBpbXBsaWNpdCBjYXN0IGlzIGFscmVhZHkgZGV0ZWN0ZWQgYnkgZ2NjLgotLy8vCi0jaWYgZGVmaW5lZChVU1RMX0FORFJPSURfWDg2KQotI2RlZmluZSBPVkVSTE9BRF9QT0lOVEVSX0FORF9TSVpFX1RfVjIobmFtZSwgYXJnMXR5cGUpCi0jZWxzZQotI2RlZmluZSBPVkVSTE9BRF9QT0lOVEVSX0FORF9TSVpFX1RfVjIobmFtZSwgYXJnMXR5cGUpCQkJCQkJXAotICAgIGlubGluZSB2b2lkCW5hbWUgKGFyZzF0eXBlIGExLCBzaG9ydCBhMikJCQl7IG5hbWUgKGExLCBzaXplX3QoYTIpKTsgfQlcCi0gICAgaW5saW5lIHZvaWQJbmFtZSAoYXJnMXR5cGUgYTEsIHVuc2lnbmVkIHNob3J0IGEyKQkJeyBuYW1lIChhMSwgc2l6ZV90KGEyKSk7IH0JXAotICAgIGlubGluZSB2b2lkCW5hbWUgKGFyZzF0eXBlIGExLCBpbnQgYTIpCQkJeyBuYW1lIChhMSwgc2l6ZV90KGEyKSk7IH0JXAotICAgIGlubGluZSB2b2lkCW5hbWUgKGFyZzF0eXBlIGExLCBsb25nIGEyKQkJCXsgbmFtZSAoYTEsIHNpemVfdChhMikpOyB9CVwKLSAgICBpbmxpbmUgdm9pZAluYW1lIChhcmcxdHlwZSBhMSwgTk9UX1NJWkVfVF9JX09SX0wgYTIpCXsgbmFtZSAoYTEsIHNpemVfdChhMikpOyB9Ci0jZW5kaWYKLX0gLy8gbmFtZXNwYWNlIHVzdGwKLQotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdXZlY3Rvci5oIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwvdXN0bC0xLjAvdXZlY3Rvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjY2JjNDViLi4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3VzdGwtMS4wL3V2ZWN0b3IuaAorKysgL2Rldi9udWxsCkBAIC0xLDI3NyArMCwwIEBACi0vLyBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgdXN0bCBsaWJyYXJ5LCBhbiBTVEwgaW1wbGVtZW50YXRpb24uCi0vLwotLy8gQ29weXJpZ2h0IChDKSAyMDA1IGJ5IE1pa2UgU2hhcm92IDxtc2hhcm92QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLS8vIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UuCi0vLwotLy8gdXZlY3Rvci5oCi0vLwotCi0jaWZuZGVmIFVWRUNUT1JfSF8wMEJCMTNBRjA4MkJFQjc4MjlDMDMxQjI2NTUxODE2OQotI2RlZmluZSBVVkVDVE9SX0hfMDBCQjEzQUYwODJCRUI3ODI5QzAzMUIyNjU1MTgxNjkKLQotI2luY2x1ZGUgInVhc3NlcnQuaCIKLSNpbmNsdWRlICJtZW1ibG9jay5oIgotI2luY2x1ZGUgInVtZW1vcnkuaCIKLQotbmFtZXNwYWNlIHVzdGwgewotCi0vLy8gXGNsYXNzIHZlY3RvciB1dmVjdG9yLmggdXN0bC5oCi0vLy8gXGluZ3JvdXAgU2VxdWVuY2VzCi0vLy8KLS8vLyBcYnJpZWYgU1RMIHZlY3RvciBlcXVpdmFsZW50LgotLy8vCi0vLy8gUHJvdmlkZXMgYSB0eXBlZCBhcnJheS1saWtlIGludGVyZmFjZSB0byBhIG1hbmFnZWQgbWVtb3J5IGJsb2NrLCBpbmNsdWRpbmcKLS8vLyBlbGVtZW50IGFjY2VzcywgaXRlcmF0aW9uLCBtb2RpZmljYXRpb24sIHJlc2l6aW5nLCBhbmQgc2VyaWFsaXphdGlvbi4gSW4KLS8vLyB0aGlzIGRlc2lnbiBlbGVtZW50cyBmcmVxdWVudGx5IHVuZGVyZ28gYml0d2lzZSBtb3ZlLCBzbyBkb24ndCBwdXQgaXQgaW4KLS8vLyBoZXJlIGlmIGl0IGRvZXNuJ3Qgc3VwcG9ydCBpdC4gVGhpcyBtb3N0bHkgbWVhbnMgaGF2aW5nIG5vIHNlbGYtcG9pbnRlcnMuCi0vLy8KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotY2xhc3MgdmVjdG9yIHsKLXB1YmxpYzoKLSAgICB0eXBlZGVmIFQJCQkJdmFsdWVfdHlwZTsKLSAgICB0eXBlZGVmIHZhbHVlX3R5cGUqCQkJcG9pbnRlcjsKLSAgICB0eXBlZGVmIGNvbnN0IHZhbHVlX3R5cGUqCQljb25zdF9wb2ludGVyOwotICAgIHR5cGVkZWYgdmFsdWVfdHlwZSYJCQlyZWZlcmVuY2U7Ci0gICAgdHlwZWRlZiBjb25zdCB2YWx1ZV90eXBlJgkJY29uc3RfcmVmZXJlbmNlOwotICAgIHR5cGVkZWYgcG9pbnRlcgkJCWl0ZXJhdG9yOwotICAgIHR5cGVkZWYgY29uc3RfcG9pbnRlcgkJY29uc3RfaXRlcmF0b3I7Ci0gICAgdHlwZWRlZiBtZW1ibG9jazo6c2l6ZV90eXBlCQlzaXplX3R5cGU7Ci0gICAgdHlwZWRlZiBtZW1ibG9jazo6d3JpdHRlbl9zaXplX3R5cGUJd3JpdHRlbl9zaXplX3R5cGU7Ci0gICAgdHlwZWRlZiBtZW1ibG9jazo6ZGlmZmVyZW5jZV90eXBlCWRpZmZlcmVuY2VfdHlwZTsKLSAgICB0eXBlZGVmIDo6dXN0bDo6cmV2ZXJzZV9pdGVyYXRvcjxpdGVyYXRvcj4JcmV2ZXJzZV9pdGVyYXRvcjsKLSAgICB0eXBlZGVmIDo6dXN0bDo6cmV2ZXJzZV9pdGVyYXRvcjxjb25zdF9pdGVyYXRvcj4JY29uc3RfcmV2ZXJzZV9pdGVyYXRvcjsKLXB1YmxpYzoKLSAgICBpbmxpbmUJCQl2ZWN0b3IgKHZvaWQpOwotICAgIGlubGluZSBleHBsaWNpdAkJdmVjdG9yIChzaXplX3R5cGUgbik7Ci0JCQkJdmVjdG9yIChzaXplX3R5cGUgbiwgY29uc3QgVCYgdik7Ci0JCQkJdmVjdG9yIChjb25zdCB2ZWN0b3I8VD4mIHYpOwotCQkJCXZlY3RvciAoY29uc3RfaXRlcmF0b3IgaTEsIGNvbnN0X2l0ZXJhdG9yIGkyKTsKLQkJCSAgICAgICB+dmVjdG9yICh2b2lkKSB0aHJvdygpOwotICAgIGlubGluZSBjb25zdCB2ZWN0b3I8VD4mCW9wZXJhdG9yPSAoY29uc3QgdmVjdG9yPFQ+JiB2KTsKLSAgICBpbmxpbmUgYm9vbAkJCW9wZXJhdG9yPT0gKGNvbnN0IHZlY3RvcjxUPiYgdikJeyByZXR1cm4gKG1fRGF0YSA9PSB2Lm1fRGF0YSk7IH0KLSAgICBpbmxpbmUJCQlvcGVyYXRvciBjbWVtbGluayAodm9pZCkgY29uc3QJeyByZXR1cm4gKGNtZW1saW5rIChtX0RhdGEpKTsgfQotICAgIGlubGluZQkJCW9wZXJhdG9yIGNtZW1saW5rICh2b2lkKQl7IHJldHVybiAoY21lbWxpbmsgKG1fRGF0YSkpOyB9Ci0gICAgaW5saW5lCQkJb3BlcmF0b3IgbWVtbGluayAodm9pZCkJCXsgcmV0dXJuIChtZW1saW5rIChtX0RhdGEpKTsgfQotICAgIGlubGluZSB2b2lkCQkJcmVzZXJ2ZSAoc2l6ZV90eXBlIG4sIGJvb2wgYkV4YWN0ID0gdHJ1ZSk7Ci0gICAgaW5saW5lIHZvaWQJCQlyZXNpemUgKHNpemVfdHlwZSBuLCBib29sIGJFeGFjdCA9IHRydWUpOwotICAgIGlubGluZSBzaXplX3R5cGUJCWNhcGFjaXR5ICh2b2lkKSBjb25zdAkJeyByZXR1cm4gKG1fRGF0YS5jYXBhY2l0eSgpIC8gc2l6ZW9mKFQpKTsJfQotICAgIGlubGluZSBzaXplX3R5cGUJCXNpemUgKHZvaWQpIGNvbnN0CQl7IHJldHVybiAobV9EYXRhLnNpemUoKSAvIHNpemVvZihUKSk7CQl9Ci0gICAgaW5saW5lIHNpemVfdHlwZQkJbWF4X3NpemUgKHZvaWQpIGNvbnN0CQl7IHJldHVybiAobV9EYXRhLm1heF9zaXplKCkgLyBzaXplb2YoVCkpOwl9Ci0gICAgaW5saW5lIGJvb2wJCQllbXB0eSAodm9pZCkgY29uc3QJCXsgcmV0dXJuIChtX0RhdGEuZW1wdHkoKSk7CQkJfQotICAgIGlubGluZSBpdGVyYXRvcgkJYmVnaW4gKHZvaWQpCQkJeyByZXR1cm4gKGl0ZXJhdG9yIChtX0RhdGEuYmVnaW4oKSkpOwkJfQotICAgIGlubGluZSBjb25zdF9pdGVyYXRvcgliZWdpbiAodm9pZCkgY29uc3QJCXsgcmV0dXJuIChjb25zdF9pdGVyYXRvciAobV9EYXRhLmJlZ2luKCkpKTsJfQotICAgIGlubGluZSBpdGVyYXRvcgkJZW5kICh2b2lkKQkJCXsgcmV0dXJuIChpdGVyYXRvciAobV9EYXRhLmVuZCgpKSk7CQl9Ci0gICAgaW5saW5lIGNvbnN0X2l0ZXJhdG9yCWVuZCAodm9pZCkgY29uc3QJCXsgcmV0dXJuIChjb25zdF9pdGVyYXRvciAobV9EYXRhLmVuZCgpKSk7CX0KLSAgICBpbmxpbmUgcmV2ZXJzZV9pdGVyYXRvcgkJcmJlZ2luICh2b2lkKQkJeyByZXR1cm4gKHJldmVyc2VfaXRlcmF0b3IgKGVuZCgpKSk7CQl9Ci0gICAgaW5saW5lIGNvbnN0X3JldmVyc2VfaXRlcmF0b3IJcmJlZ2luICh2b2lkKSBjb25zdAl7IHJldHVybiAoY29uc3RfcmV2ZXJzZV9pdGVyYXRvciAoZW5kKCkpKTsJfQotICAgIGlubGluZSByZXZlcnNlX2l0ZXJhdG9yCQlyZW5kICh2b2lkKQkJeyByZXR1cm4gKHJldmVyc2VfaXRlcmF0b3IgKGJlZ2luKCkpKTsJCX0KLSAgICBpbmxpbmUgY29uc3RfcmV2ZXJzZV9pdGVyYXRvcglyZW5kICh2b2lkKSBjb25zdAl7IHJldHVybiAoY29uc3RfcmV2ZXJzZV9pdGVyYXRvciAoYmVnaW4oKSkpOwl9Ci0gICAgaW5saW5lIGl0ZXJhdG9yCQlpYXQgKHNpemVfdHlwZSBpKQkJeyBhc3NlcnQgKGkgPD0gc2l6ZSgpKTsgcmV0dXJuIChiZWdpbigpICsgaSk7IH0KLSAgICBpbmxpbmUgY29uc3RfaXRlcmF0b3IJaWF0IChzaXplX3R5cGUgaSkgY29uc3QJCXsgYXNzZXJ0IChpIDw9IHNpemUoKSk7IHJldHVybiAoYmVnaW4oKSArIGkpOyB9Ci0gICAgaW5saW5lIHJlZmVyZW5jZQkJYXQgKHNpemVfdHlwZSBpKQkJeyBhc3NlcnQgKGkgPCBzaXplKCkpOyByZXR1cm4gKGJlZ2luKClbaV0pOyB9Ci0gICAgaW5saW5lIGNvbnN0X3JlZmVyZW5jZQlhdCAoc2l6ZV90eXBlIGkpIGNvbnN0CQl7IGFzc2VydCAoaSA8IHNpemUoKSk7IHJldHVybiAoYmVnaW4oKVtpXSk7IH0KLSAgICBpbmxpbmUgcmVmZXJlbmNlCQlvcGVyYXRvcltdIChzaXplX3R5cGUgaSkJeyByZXR1cm4gKGF0IChpKSk7IH0KLSAgICBpbmxpbmUgY29uc3RfcmVmZXJlbmNlCW9wZXJhdG9yW10gKHNpemVfdHlwZSBpKSBjb25zdAl7IHJldHVybiAoYXQgKGkpKTsgfQotICAgIGlubGluZSByZWZlcmVuY2UJCWZyb250ICh2b2lkKQkJCXsgcmV0dXJuIChhdCgwKSk7IH0KLSAgICBpbmxpbmUgY29uc3RfcmVmZXJlbmNlCWZyb250ICh2b2lkKSBjb25zdAkJeyByZXR1cm4gKGF0KDApKTsgfQotICAgIGlubGluZSByZWZlcmVuY2UJCWJhY2sgKHZvaWQpCQkJeyBhc3NlcnQgKCFlbXB0eSgpKTsgcmV0dXJuIChlbmQoKVstMV0pOyB9Ci0gICAgaW5saW5lIGNvbnN0X3JlZmVyZW5jZQliYWNrICh2b2lkKSBjb25zdAkJeyBhc3NlcnQgKCFlbXB0eSgpKTsgcmV0dXJuIChlbmQoKVstMV0pOyB9Ci0gICAgaW5saW5lIHZvaWQJCQlwdXNoX2JhY2sgKGNvbnN0IFQmIHYgPSBUKCkpOwotICAgIGlubGluZSB2b2lkCQkJcG9wX2JhY2sgKHZvaWQpCQkJeyBtX0RhdGEubWVtbGluazo6cmVzaXplIChtX0RhdGEuc2l6ZSgpIC0gc2l6ZW9mKFQpKTsgfQotICAgIGlubGluZSB2b2lkCQkJY2xlYXIgKHZvaWQpCQkJeyBtX0RhdGEuY2xlYXIoKTsgfQotICAgIHZvaWQJCQlkZWFsbG9jYXRlICh2b2lkKSB0aHJvdygpOwotICAgIGlubGluZSB2b2lkCQkJYXNzaWduIChjb25zdF9pdGVyYXRvciBpMSwgY29uc3RfaXRlcmF0b3IgaTIpOwotICAgIGlubGluZSB2b2lkCQkJYXNzaWduIChzaXplX3R5cGUgbiwgY29uc3QgVCYgdik7Ci0gICAgaW5saW5lIHZvaWQJCQlzd2FwICh2ZWN0b3I8VD4mIHYpCQl7IG1fRGF0YS5zd2FwICh2Lm1fRGF0YSk7IH0KLSAgICBpbmxpbmUgaXRlcmF0b3IJCWluc2VydCAoaXRlcmF0b3IgaXAsIGNvbnN0IFQmIHYgPSBUKCkpOwotICAgIGlubGluZSBpdGVyYXRvcgkJaW5zZXJ0IChpdGVyYXRvciBpcCwgc2l6ZV90eXBlIG4sIGNvbnN0IFQmIHYpOwotICAgIGlubGluZSBpdGVyYXRvcgkJaW5zZXJ0IChpdGVyYXRvciBpcCwgY29uc3RfaXRlcmF0b3IgaTEsIGNvbnN0X2l0ZXJhdG9yIGkyKTsKLSAgICBpbmxpbmUgaXRlcmF0b3IJCWVyYXNlIChpdGVyYXRvciBlcCwgc2l6ZV90eXBlIG4gPSAxKTsKLSAgICBpbmxpbmUgaXRlcmF0b3IJCWVyYXNlIChpdGVyYXRvciBlcDEsIGl0ZXJhdG9yIGVwMik7Ci0gICAgaW5saW5lIHZvaWQJCQltYW5hZ2UgKHBvaW50ZXIgcCwgc2l6ZV90eXBlIG4pCQl7IG1fRGF0YS5tYW5hZ2UgKHAsIG4gKiBzaXplb2YoVCkpOyB9Ci0gICAgaW5saW5lIGJvb2wJCQlpc19saW5rZWQgKHZvaWQpIGNvbnN0CQkJeyByZXR1cm4gKG1fRGF0YS5pc19saW5rZWQoKSk7IH0KLSAgICBpbmxpbmUgdm9pZAkJCXVubGluayAodm9pZCkJCQkJeyBtX0RhdGEudW5saW5rKCk7IH0KLSAgICBpbmxpbmUgdm9pZAkJCWNvcHlfbGluayAodm9pZCkJCQl7IG1fRGF0YS5jb3B5X2xpbmsoKTsgfQotICAgIGlubGluZSB2b2lkCQkJbGluayAoY29uc3RfcG9pbnRlciBwLCBzaXplX3R5cGUgbikJeyBtX0RhdGEubGluayAocCwgbiAqIHNpemVvZihUKSk7IH0KLSAgICBpbmxpbmUgdm9pZAkJCWxpbmsgKHBvaW50ZXIgcCwgc2l6ZV90eXBlIG4pCQl7IG1fRGF0YS5saW5rIChwLCBuICogc2l6ZW9mKFQpKTsgfQotICAgIGlubGluZSB2b2lkCQkJbGluayAoY29uc3QgdmVjdG9yPFQ+JiB2KQkJeyBtX0RhdGEubGluayAodik7IH0KLSAgICBpbmxpbmUgdm9pZAkJCWxpbmsgKHZlY3RvcjxUPiYgdikJCQl7IG1fRGF0YS5saW5rICh2KTsgfQotICAgIGlubGluZSB2b2lkCQkJbGluayAoY29uc3RfcG9pbnRlciBmaXJzdCwgY29uc3RfcG9pbnRlciBsYXN0KQl7IG1fRGF0YS5saW5rIChmaXJzdCwgbGFzdCk7IH0KLSAgICBpbmxpbmUgdm9pZAkJCWxpbmsgKHBvaW50ZXIgZmlyc3QsIHBvaW50ZXIgbGFzdCkJCXsgbV9EYXRhLmxpbmsgKGZpcnN0LCBsYXN0KTsgfQotCQkJCU9WRVJMT0FEX1BPSU5URVJfQU5EX1NJWkVfVF9WMihsaW5rLCBwb2ludGVyKQotCQkJCU9WRVJMT0FEX1BPSU5URVJfQU5EX1NJWkVfVF9WMihsaW5rLCBjb25zdF9wb2ludGVyKQotcHJpdmF0ZToKLSAgICBpbmxpbmUgaXRlcmF0b3IJCWluc2VydF9zcGFjZSAoaXRlcmF0b3IgaXAsIHNpemVfdHlwZSBuKTsKLXByaXZhdGU6Ci0gICAgbWVtYmxvY2sJCQltX0RhdGE7CS8vLzwgUmF3IGVsZW1lbnQgZGF0YSwgY29uc2VjdXRpdmVseSBzdG9yZWQuCi19OwotCi0vLy8gQWxsb2NhdGVzIHNwYWNlIGZvciBhdCBsZWFzdCBccCBuIGVsZW1lbnRzLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci12b2lkIHZlY3RvcjxUPjo6cmVzZXJ2ZSAoc2l6ZV90eXBlIG4sIGJvb2wgYkV4YWN0KQotewotICAgIGNvbnN0IHNpemVfdHlwZSBvbGRDYXBhY2l0eSA9IGNhcGFjaXR5KCk7Ci0gICAgbV9EYXRhLnJlc2VydmUgKG4gKiBzaXplb2YoVCksIGJFeGFjdCk7Ci0gICAgaWYgKGNhcGFjaXR5KCkgPiBvbGRDYXBhY2l0eSkKLQljb25zdHJ1Y3QgKGJlZ2luKCkgKyBvbGRDYXBhY2l0eSwgYmVnaW4oKSArIGNhcGFjaXR5KCkpOwotfQotCi0vLy8gUmVzaXplcyB0aGUgdmVjdG9yIHRvIGNvbnRhaW4gXHAgbiBlbGVtZW50cy4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdm9pZCB2ZWN0b3I8VD46OnJlc2l6ZSAoc2l6ZV90eXBlIG4sIGJvb2wgYkV4YWN0KQotewotICAgIGlmIChtX0RhdGEuY2FwYWNpdHkoKSA8IG4gKiBzaXplb2YoVCkpCi0JcmVzZXJ2ZSAobiwgYkV4YWN0KTsKLSAgICBtX0RhdGEubWVtbGluazo6cmVzaXplIChuICogc2l6ZW9mKFQpKTsKLX0KLQotLy8vIENhbGxzIGVsZW1lbnQgZGVzdHJ1Y3RvcnMgYW5kIGZyZWVzIHN0b3JhZ2UuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXZvaWQgdmVjdG9yPFQ+OjpkZWFsbG9jYXRlICh2b2lkKSB0aHJvdygpCi17Ci0gICAgaWYgKCFpc19saW5rZWQoKSkKLQlkZXN0cm95IChiZWdpbigpLCBiZWdpbigpICsgY2FwYWNpdHkoKSk7Ci0gICAgbV9EYXRhLmRlYWxsb2NhdGUoKTsKLX0KLQotLy8vIEluaXRpYWxpemVzIGVtcHR5IHZlY3Rvci4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIHZlY3RvcjxUPjo6dmVjdG9yICh2b2lkKQotOiBtX0RhdGEgKCkKLXsKLX0KLQotLy8vIEluaXRpYWxpemVzIGEgdmVjdG9yIG9mIHNpemUgXHAgbi4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIHZlY3RvcjxUPjo6dmVjdG9yIChzaXplX3R5cGUgbikKLTogbV9EYXRhICgpCi17Ci0gICAgcmVzaXplIChuKTsKLX0KLQotLy8vIENvcGllcyBccCBuIGVsZW1lbnRzIGZyb20gXHAgdi4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdmVjdG9yPFQ+Ojp2ZWN0b3IgKHNpemVfdHlwZSBuLCBjb25zdCBUJiB2KQotOiBtX0RhdGEgKCkKLXsKLSAgICByZXNpemUgKG4pOwotICAgIDo6dXN0bDo6ZmlsbCAoYmVnaW4oKSwgZW5kKCksIHYpOwotfQotCi0vLy8gQ29waWVzIFxwIHYuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLXZlY3RvcjxUPjo6dmVjdG9yIChjb25zdCB2ZWN0b3I8VD4mIHYpCi06IG1fRGF0YSAoKQotewotICAgIHJlc2l6ZSAodi5zaXplKCkpOwotICAgIDo6dXN0bDo6Y29weSAodi5iZWdpbigpLCB2LmVuZCgpLCBiZWdpbigpKTsKLX0KLQotLy8vIENvcGllcyByYW5nZSBbXHAgaTEsIFxwIGkyXQotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci12ZWN0b3I8VD46OnZlY3RvciAoY29uc3RfaXRlcmF0b3IgaTEsIGNvbnN0X2l0ZXJhdG9yIGkyKQotOiBtX0RhdGEgKCkKLXsKLSAgICByZXNpemUgKGRpc3RhbmNlIChpMSwgaTIpKTsKLSAgICA6OnVzdGw6OmNvcHkgKGkxLCBpMiwgYmVnaW4oKSk7Ci19Ci0KLS8vLyBEZXN0cnVjdG9yCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSB2ZWN0b3I8VD46On52ZWN0b3IgKHZvaWQpIHRocm93KCkKLXsKLSAgICBpZiAoIW51bWVyaWNfbGltaXRzPHZhbHVlX3R5cGU+Ojppc19pbnRlZ3JhbCkKLQlkZWFsbG9jYXRlKCk7Ci19Ci0KLS8vLyBDb3BpZXMgdGhlIHJhbmdlIFtccCBpMSwgXHAgaTJdCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSB2b2lkIHZlY3RvcjxUPjo6YXNzaWduIChjb25zdF9pdGVyYXRvciBpMSwgY29uc3RfaXRlcmF0b3IgaTIpCi17Ci0gICAgYXNzZXJ0IChpMSA8PSBpMik7Ci0gICAgcmVzaXplIChkaXN0YW5jZSAoaTEsIGkyKSk7Ci0gICAgOjp1c3RsOjpjb3B5IChpMSwgaTIsIGJlZ2luKCkpOwotfQotCi0vLy8gQ29waWVzIFxwIG4gZWxlbWVudHMgd2l0aCB2YWx1ZSBccCB2LgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgdm9pZCB2ZWN0b3I8VD46OmFzc2lnbiAoc2l6ZV90eXBlIG4sIGNvbnN0IFQmIHYpCi17Ci0gICAgcmVzaXplIChuKTsKLSAgICA6OnVzdGw6OmZpbGwgKGJlZ2luKCksIGVuZCgpLCB2KTsKLX0KLQotLy8vIENvcGllcyBjb250ZW50cyBvZiBccCB2LgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci1pbmxpbmUgY29uc3QgdmVjdG9yPFQ+JiB2ZWN0b3I8VD46Om9wZXJhdG9yPSAoY29uc3QgdmVjdG9yPFQ+JiB2KQotewotICAgIGFzc2lnbiAodi5iZWdpbigpLCB2LmVuZCgpKTsKLSAgICByZXR1cm4gKCp0aGlzKTsKLX0KLQotLy8vIEluc2VydHMgXHAgbiB1bmluaXRpYWxpemVkIGVsZW1lbnRzIGF0IFxwIGlwLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci10eXBlbmFtZSB2ZWN0b3I8VD46Oml0ZXJhdG9yIHZlY3RvcjxUPjo6aW5zZXJ0X3NwYWNlIChpdGVyYXRvciBpcCwgc2l6ZV90eXBlIG4pCi17Ci0gICAgY29uc3QgdW9mZl90IGlwbWkgPSBkaXN0YW5jZSAobV9EYXRhLmJlZ2luKCksIG1lbWJsb2NrOjppdGVyYXRvcihpcCkpOwotICAgIHJlc2VydmUgKHNpemUoKSArIG4sIGZhbHNlKTsKLSAgICByZXR1cm4gKGl0ZXJhdG9yIChtX0RhdGEuaW5zZXJ0IChtX0RhdGEuaWF0KGlwbWkpLCBuICogc2l6ZW9mKFQpKSkpOwotfQotCi0vLy8gSW5zZXJ0cyBccCBuIGVsZW1lbnRzIHdpdGggdmFsdWUgXHAgdiBhdCBvZmZzZXRzIFxwIGlwLgotdGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci10eXBlbmFtZSB2ZWN0b3I8VD46Oml0ZXJhdG9yIHZlY3RvcjxUPjo6aW5zZXJ0IChpdGVyYXRvciBpcCwgc2l6ZV90eXBlIG4sIGNvbnN0IFQmIHYpCi17Ci0gICAgaXAgPSBpbnNlcnRfc3BhY2UgKGlwLCBuKTsKLSAgICA6OnVzdGw6OmZpbGwgKGlwLCBpcCArIG4sIHYpOwotICAgIHJldHVybiAoaXApOwotfQotCi0vLy8gSW5zZXJ0cyB2YWx1ZSBccCB2IGF0IG9mZnNldCBccCBpcC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdHlwZW5hbWUgdmVjdG9yPFQ+OjppdGVyYXRvciB2ZWN0b3I8VD46Omluc2VydCAoaXRlcmF0b3IgaXAsIGNvbnN0IFQmIHYpCi17Ci0gICAgKihpcCA9IGluc2VydF9zcGFjZSAoaXAsIDEpKSA9IHY7Ci0gICAgcmV0dXJuIChpcCk7Ci19Ci0KLS8vLyBJbnNlcnRzIHJhbmdlIFtccCBpMSwgXHAgaTJdIGF0IG9mZnNldCBccCBpcC4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdHlwZW5hbWUgdmVjdG9yPFQ+OjppdGVyYXRvciB2ZWN0b3I8VD46Omluc2VydCAoaXRlcmF0b3IgaXAsIGNvbnN0X2l0ZXJhdG9yIGkxLCBjb25zdF9pdGVyYXRvciBpMikKLXsKLSAgICBhc3NlcnQgKGkxIDw9IGkyKTsKLSAgICBpcCA9IGluc2VydF9zcGFjZSAoaXAsIGRpc3RhbmNlIChpMSwgaTIpKTsKLSAgICA6OnVzdGw6OmNvcHkgKGkxLCBpMiwgaXApOwotICAgIHJldHVybiAoaXApOwotfQotCi0vLy8gUmVtb3ZlcyBccCBjb3VudCBlbGVtZW50cyBhdCBvZmZzZXQgXHAgZXAuCi10ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLWlubGluZSB0eXBlbmFtZSB2ZWN0b3I8VD46Oml0ZXJhdG9yIHZlY3RvcjxUPjo6ZXJhc2UgKGl0ZXJhdG9yIGVwLCBzaXplX3R5cGUgbikKLXsKLSAgICByZXR1cm4gKGl0ZXJhdG9yIChtX0RhdGEuZXJhc2UgKG1lbWJsb2NrOjppdGVyYXRvcihlcCksIG4gKiBzaXplb2YoVCkpKSk7Ci19Ci0KLS8vLyBSZW1vdmVzIGVsZW1lbnRzIGZyb20gXHAgZXAxIHRvIFxwIGVwMi4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotaW5saW5lIHR5cGVuYW1lIHZlY3RvcjxUPjo6aXRlcmF0b3IgdmVjdG9yPFQ+OjplcmFzZSAoaXRlcmF0b3IgZXAxLCBpdGVyYXRvciBlcDIpCi17Ci0gICAgYXNzZXJ0IChlcDEgPD0gZXAyKTsKLSAgICByZXR1cm4gKGVyYXNlIChlcDEsIGRpc3RhbmNlKGVwMSwgZXAyKSkpOwotfQotCi0vLy8gSW5zZXJ0cyB2YWx1ZSBccCB2IGF0IHRoZSBlbmQgb2YgdGhlIHZlY3Rvci4KLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotdm9pZCB2ZWN0b3I8VD46OnB1c2hfYmFjayAoY29uc3QgVCYgdikKLXsKLSAgICByZXNpemUgKHNpemUoKSArIDEsIGZhbHNlKTsKLSAgICBiYWNrKCkgPSB2OwotfQotCi0vLy8gVXNlIHdpdGggdmVjdG9yIGNsYXNzZXMgdG8gYWxsb2NhdGUgYW5kIGxpbmsgdG8gc3RhY2sgc3BhY2UuIFxwIG4gaXMgaW4gZWxlbWVudHMuCi0jZGVmaW5lIHR5cGVkX2FsbG9jYV9saW5rKG0sVCxuKQkobSkubGluayAoKFQqKSBhbGxvY2EgKChuKSAqIHNpemVvZihUKSksIChuKSkKLQotfSAvLyBuYW1lc3BhY2UgdXN0bAotCi0jZW5kaWYKLQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwveG1sL0RvbUV4cGF0QWdlbnQuY3BwIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwveG1sL0RvbUV4cGF0QWdlbnQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0Y2RlNzA2Li4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3htbC9Eb21FeHBhdEFnZW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDIyOCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8NCi0jaW5jbHVkZSA8dXRpbC94bWwvRG9tRXhwYXRBZ2VudC5oPgotI2luY2x1ZGUgPHV0aWwveG1sL1hNTEVsZW1lbnRJbXBsLmg+Ci0jaW5jbHVkZSA8dXN0cmluZy5oPgotI2luY2x1ZGUgPHVpb3MuaD4KLXVzaW5nIG5hbWVzcGFjZSB1c3RsOwotCi0vKiogc2VlIERvbUV4cGF0QWdlbnQuaCAqLwotRG9tRXhwYXRBZ2VudDo6RG9tRXhwYXRBZ2VudChYTUxEb2N1bWVudEltcGwqIHhtbERvY1B0cikKLXsKLSAgICBtWE1MRG9jdW1lbnRQdHIgPSB4bWxEb2NQdHI7Ci0gICAgbVRvcEVsZW1lbnRQdHIgPSBOVUxMOwotfQotCi0vKiogc2VlIERvbUV4cGF0QWdlbnQuaCAqLwotRG9tRXhwYXRBZ2VudDo6fkRvbUV4cGF0QWdlbnQoKQotewotCi19Ci0KLS8qKiBzZWUgRG9tRXhwYXRBZ2VudC5oICovCi1ib29sIERvbUV4cGF0QWdlbnQ6OmdlbmVyYXRlRG9jdW1lbnRGcm9tWE1MKGlzdHJpbmdzdHJlYW0gKnhtbFN0cmVhbSkKLXsKLSAgICBjaGFyIGNoOwotICAgIHN0cmluZyBjb250ZW50OwotCi0gICAgaWYgKE5VTEwgPT0gbVhNTERvY3VtZW50UHRyIHx8IE5VTEwgPT0geG1sU3RyZWFtKQotICAgIHsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHdoaWxlICgoY2ggPSB4bWxTdHJlYW0tPmdldCgpKSAhPSAnXDAnKQotICAgIHsKLSAgICAgICAgY29udGVudCArPSBjaDsKLSAgICB9Ci0KLSAgICBpZiAoRXhwYXRXcmFwcGVyOjpkZWNvZGUoY29udGVudC5jX3N0cigpLCBjb250ZW50Lmxlbmd0aCgpLCAxKSA9PSAwKQotCi0gICAgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotICAgIHJldHVybiB0cnVlOwotfQotCi0vKiogc2VlIERvbUV4cGF0QWdlbnQuaCAqLwotdm9pZCBEb21FeHBhdEFnZW50OjpwdXNoVGFnKGNvbnN0IERPTVN0cmluZyAqbmFtZSwgY29uc3QgWE1MX0NoYXIgKiphdHRzKQotewotICAgIEVsZW1lbnRJbXBsICplbGVtZW50Tm9kZSA9IG1YTUxEb2N1bWVudFB0ci0+Y3JlYXRlRWxlbWVudChuYW1lKTsKLQotICAgIGlmIChOVUxMID09IGVsZW1lbnROb2RlKQotICAgIHsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChOVUxMICE9IGF0dHMpCi0gICAgewotICAgICAgICB3aGlsZSAoTlVMTCAhPSAqYXR0cykKLSAgICAgICAgewotICAgICAgICAgICAgLy9zZXQgYXR0cmlidXRlcyBpbnRvIGVsZW1lbnQgbm9kZS4KLSAgICAgICAgICAgIERPTVN0cmluZyBrZXkoYXR0c1swXSksIHZhbHVlKGF0dHNbMV0pOwotICAgICAgICAgICAgZWxlbWVudE5vZGUtPnNldEF0dHJpYnV0ZSgma2V5LCAmdmFsdWUpOwotICAgICAgICAgICAgYXR0cyArPSAyOwotICAgICAgICB9Ci0gICAgfQotCi0gICBpZiAoIW1TdGFjay5lbXB0eSgpKQotICAgewotICAgICAgIG1Ub3BFbGVtZW50UHRyLT5hcHBlbmRDaGlsZChlbGVtZW50Tm9kZSk7Ci0gICB9Ci0gICBlbHNlCi0gICB7Ci0gICAgICAgbVhNTERvY3VtZW50UHRyLT5zZXRGaXJzdENoaWxkKGVsZW1lbnROb2RlKTsKLSAgIH0KLQotICAgbVRvcEVsZW1lbnRQdHIgPSAoWE1MRWxlbWVudEltcGwgKillbGVtZW50Tm9kZTsKLSAgIG1TdGFjay5wdXNoX2JhY2soZWxlbWVudE5vZGUpOwotfQotCi0vKiogc2VlIERvbUV4cGF0QWdlbnQuaCAqLwotdm9pZCBEb21FeHBhdEFnZW50Ojpwb3BUYWcoY29uc3QgRE9NU3RyaW5nICpuYW1lKQotewotICAgIGlmIChOVUxMID09IG5hbWUpCi0gICAgewotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKG1Ub3BFbGVtZW50UHRyICE9IE5VTEwpCi0gICAgewotICAgICAgICBpZiAoIW5hbWUtPmNvbXBhcmUobVRvcEVsZW1lbnRQdHItPmdldFRhZ05hbWUoKS0+Y19zdHIoKSkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1TdGFjay5wb3BfYmFjaygpOwotICAgICAgICAgICAgaWYgKCFtU3RhY2suZW1wdHkoKSkKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBtVG9wRWxlbWVudFB0ciA9KFhNTEVsZW1lbnRJbXBsICopIG1TdGFjay5iYWNrKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgbVRvcEVsZW1lbnRQdHIgPSBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCi0vKiogc2VlIERvbUV4cGF0QWdlbnQuaCAqLwotdm9pZCBEb21FeHBhdEFnZW50OjphcHBlbmRUZXh0KGNvbnN0IERPTVN0cmluZyAqdGV4dCkKLXsKLSAgICBpZiAoKG1Ub3BFbGVtZW50UHRyICE9IE5VTEwpICYmICh0ZXh0ICE9IE5VTEwpKQotICAgIHsKLSAgICAgICAgVGV4dEltcGwgKnRleHROb2RlID0gbVhNTERvY3VtZW50UHRyLT5jcmVhdGVUZXh0Tm9kZSh0ZXh0KTsKLQotICAgICAgICBpZiAoTlVMTCA9PSB0ZXh0Tm9kZSkKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICBtVG9wRWxlbWVudFB0ci0+YXBwZW5kQ2hpbGQodGV4dE5vZGUpOwotICAgIH0KLX0KLQotLyoqIHNlZSBEb21FeHBhdEFnZW50LmggKi8KLXZvaWQgRG9tRXhwYXRBZ2VudDo6c3RhcnRFbGVtZW50KGNvbnN0IFhNTF9DaGFyICpuYW1lLCBjb25zdCBYTUxfQ2hhciAqKmF0dHMpCi17Ci0gICAgaWYgKG5hbWUpCi0gICAgewotICAgICAgICBET01TdHJpbmcgdGFnTmFtZShuYW1lKTsKLQotICAgICAgICBwdXNoVGFnKCZ0YWdOYW1lLCBhdHRzKTsKLSAgICB9Ci19Ci0KLS8qKiBzZWUgRG9tRXhwYXRBZ2VudC5oICovCi12b2lkIERvbUV4cGF0QWdlbnQ6OmRhdGFIYW5kbGVyKGNvbnN0IFhNTF9DaGFyICpzLCBpbnQgbGVuKQotewotICAgIGlmIChzICE9IE5VTEwgJiYgbGVuID49IDEgJiYgKnMgIT0gJ1xuJykKLSAgICB7Ci0gICAgICAgIERPTVN0cmluZyB0ZXh0OwotICAgICAgICB0ZXh0LmFzc2lnbigoY2hhciopcywgbGVuKTsKLSAgICAgICAgYXBwZW5kVGV4dCgmdGV4dCk7Ci0gICAgfQotfQotCi0vKiogc2VlIERvbUV4cGF0QWdlbnQuaCAqLwotdm9pZCBEb21FeHBhdEFnZW50OjplbmRFbGVtZW50KGNvbnN0IFhNTF9DaGFyICpuYW1lKQotewotICAgaWYgKG5hbWUpCi0gICB7Ci0gICAgICAgRE9NU3RyaW5nIHRhZ05hbWUobmFtZSk7Ci0gICAgICAgcG9wVGFnKCZ0YWdOYW1lKTsKLSAgIH0KLX0KLQotLyoqIHNlZSBEb21FeHBhdEFnZW50LmggKi8KLW9zdHJpbmdzdHJlYW0qIERvbUV4cGF0QWdlbnQ6OmdlbmVyYXRlWE1MRnJvbURvY3VtZW50KCkKLXsKLSAgICBpZiAoTlVMTCA9PSBtWE1MRG9jdW1lbnRQdHIpCi0gICAgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBFbGVtZW50SW1wbCAqcm9vdCA9IG1YTUxEb2N1bWVudFB0ci0+Z2V0RG9jdW1lbnRFbGVtZW50KCk7Ci0KLSAgICB0cmF2ZXJzZShyb290KTsKLQotICAgIHJldHVybiAmbVhNTG9zdHJlYW07Ci19Ci0KLS8qKiBzZWUgRG9tRXhwYXRBZ2VudC5oICovCi12b2lkIERvbUV4cGF0QWdlbnQ6OnRyYXZlcnNlKEVsZW1lbnRJbXBsICpyb290KQotewotICAgIGlmIChOVUxMID09IHJvb3QpCi0gICAgewotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgbVhNTG9zdHJlYW0gPDwgIjwiIDw8ICoocm9vdC0+Z2V0Tm9kZU5hbWUoKSk7Ci0KLSAgICBpZiAocm9vdC0+aGFzQXR0cmlidXRlcygpKQotICAgIHsKLSAgICAgICAgbVhNTG9zdHJlYW0gPDwgZW5kbDsKLSAgICAgICAgY29uc3QgRE9NU3RyaW5nTWFwKiBhdHRyTWFwUHRyID0gKHN0YXRpY19jYXN0PFhNTEVsZW1lbnRJbXBsKj4ocm9vdCkpLT5nZXRBdHRyaWJ1dGVNYXAoKTsKLSAgICAgICAgRE9NU3RyaW5nTWFwOjpjb25zdF9yZXZlcnNlX2l0ZXJhdG9yIHBvczsKLQotICAgICAgICBmb3IgKHBvcz1hdHRyTWFwUHRyLT5yYmVnaW4oKTsgcG9zICE9IGF0dHJNYXBQdHItPnJlbmQoKTsgcG9zKyspCi0gICAgICAgIHsKLSAgICAgICAgICAgIG1YTUxvc3RyZWFtIDw8IHBvcy0+Zmlyc3QgPDwgIj0iIDw8ICJcIiIgPDwgcG9zLT5zZWNvbmQgPDwgIlwiIjsKLQotICAgICAgICAgICAgaWYgKHBvcyArIDEgIT0gYXR0ck1hcFB0ci0+cmVuZCgpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIG1YTUxvc3RyZWFtIDw8IGVuZGw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBtWE1Mb3N0cmVhbSA8PCAiPiIgPDwgZW5kbDsKLQotICAgIE5vZGVJbXBsICpjaGlsZCA9IHJvb3QtPmdldEZpcnN0Q2hpbGQoKTsKLQotICAgIHdoaWxlIChjaGlsZCAhPSBOVUxMKQotICAgIHsKLSAgICAgICAgTm9kZVR5cGUgd2hhdCA9IGNoaWxkLT5nZXROb2RlVHlwZSgpOwotCi0gICAgICAgIGlmICh3aGF0ID09IEVMRU1FTlRfTk9ERSkKLSAgICAgICAgewotICAgICAgICAgICAgdHJhdmVyc2Uoc3RhdGljX2Nhc3Q8RWxlbWVudEltcGwqPihjaGlsZCkpOwotICAgICAgICB9IGVsc2UgaWYgKHdoYXQgPT0gVEVYVF9OT0RFKQotICAgICAgICB7Ci0gICAgICAgICAgICBtWE1Mb3N0cmVhbSA8PCAqKHN0YXRpY19jYXN0PFRleHRJbXBsKj4oY2hpbGQpLT5nZXREYXRhKCkpIDw8IGVuZGw7Ci0gICAgICAgIH0KLQotICAgICAgICBjaGlsZCA9IGNoaWxkLT5nZXROZXh0U2libGluZygpOwotICAgIH0KLQotICAgIG1YTUxvc3RyZWFtIDw8ICI8LyIgPDwgKihyb290LT5nZXROb2RlTmFtZSgpKSA8PCAiPiIgPDwgZW5kbDsKLX0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3htbC9FeHBhdFdyYXBwZXIuY3BwIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwveG1sL0V4cGF0V3JhcHBlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlOTlhODguLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwveG1sL0V4cGF0V3JhcHBlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8NCi0jaW5jbHVkZSA8dXRpbC94bWwvRXhwYXRXcmFwcGVyLmg+Ci0jaW5jbHVkZSA8dXN0cmluZy5oPgotdXNpbmcgbmFtZXNwYWNlIHVzdGw7Ci0KLS8qKiBzZWUgRXhwYXRXcmFwcGVyLmggKi8KLUV4cGF0V3JhcHBlcjo6RXhwYXRXcmFwcGVyKCkKLXsKLSAgICBtUGFyc2VyID0gWE1MX1BhcnNlckNyZWF0ZShOVUxMKTsKLSAgICA6OlhNTF9TZXRVc2VyRGF0YShtUGFyc2VyLCB0aGlzKTsKLSAgICA6OlhNTF9TZXRFbGVtZW50SGFuZGxlcihtUGFyc2VyLCBzdGFydEVsZW1lbnRDYWxsYmFjaywgZW5kRWxlbWVudENhbGxiYWNrKTsKLSAgICA6OlhNTF9TZXRDaGFyYWN0ZXJEYXRhSGFuZGxlcihtUGFyc2VyLCBkYXRhSGFuZGxlckNhbGxiYWNrKTsKLQotfQotCi0vKiogc2VlIEV4cGF0V3JhcHBlci5oICovCi1FeHBhdFdyYXBwZXI6On5FeHBhdFdyYXBwZXIoKQotewotICAgIGlmIChtUGFyc2VyKQotICAgIHsKLSAgICAgICAgOjpYTUxfUGFyc2VyRnJlZShtUGFyc2VyKTsKLSAgICB9Ci19Ci0KLS8qKiBzZWUgRXhwYXRXcmFwcGVyLmggKi8KLWludCBFeHBhdFdyYXBwZXI6OmRlY29kZShjb25zdCBjaGFyKiBidWYsIGludCBsZW4sIGludCBpc0ZpbmFsKQotewotICAgIHJldHVybiA6OlhNTF9QYXJzZShtUGFyc2VyLCBidWYsIGxlbiwgaXNGaW5hbCk7Ci19Ci0KLS8qKiBzZWUgRXhwYXRXcmFwcGVyLmggKi8KLXZvaWQgRXhwYXRXcmFwcGVyOjpzdGFydEVsZW1lbnRDYWxsYmFjayh2b2lkICp1c2VyRGF0YSwgY29uc3QgWE1MX0NoYXIgKm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgWE1MX0NoYXIgKiphdHRzKQotewotICAgICgoRXhwYXRXcmFwcGVyICopdXNlckRhdGEpLT5zdGFydEVsZW1lbnQobmFtZSwgYXR0cyk7Ci19Ci0KLS8qKiBzZWUgRXhwYXRXcmFwcGVyLmggKi8KLXZvaWQgRXhwYXRXcmFwcGVyOjplbmRFbGVtZW50Q2FsbGJhY2sodm9pZCAqdXNlckRhdGEsIGNvbnN0IFhNTF9DaGFyICpuYW1lKQotewotICAgICgoRXhwYXRXcmFwcGVyICopdXNlckRhdGEpLT5lbmRFbGVtZW50KG5hbWUpOwotfQotCi0vKiogc2VlIEV4cGF0V3JhcHBlci5oICovCi12b2lkIEV4cGF0V3JhcHBlcjo6ZGF0YUhhbmRsZXJDYWxsYmFjayh2b2lkICp1c2VyRGF0YSwgY29uc3QgWE1MX0NoYXIgKnMsIGludCBsZW4pCi17Ci0gICAgKChFeHBhdFdyYXBwZXIgKil1c2VyRGF0YSktPmRhdGFIYW5kbGVyKHMsIGxlbik7Ci19Ci0KLS8qKiBzZWUgRXhwYXRXcmFwcGVyLmggKi8KLXZvaWQgRXhwYXRXcmFwcGVyOjpzdGFydEVsZW1lbnQoY29uc3QgWE1MX0NoYXIgKm5hbWUsIGNvbnN0IFhNTF9DaGFyICoqYXR0cykKLXsKLX0KLQotLyoqIHNlZSBFeHBhdFdyYXBwZXIuaCAqLwotdm9pZCBFeHBhdFdyYXBwZXI6OmVuZEVsZW1lbnQoY29uc3QgWE1MX0NoYXIgKm5hbWUpCi17Ci19Ci0KLS8qKiBzZWUgRXhwYXRXcmFwcGVyLmggKi8KLXZvaWQgRXhwYXRXcmFwcGVyOjpkYXRhSGFuZGxlcihjb25zdCBYTUxfQ2hhciAqcywgaW50IGxlbikKLXsKLX0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmRybS9tb2JpbGUyL3NyYy91dGlsL3htbC9YTUxEb2N1bWVudEltcGwuY3BwIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwveG1sL1hNTERvY3VtZW50SW1wbC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxZmJjNzkuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwveG1sL1hNTERvY3VtZW50SW1wbC5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8NCi0jaW5jbHVkZSA8dXRpbC94bWwvWE1MRG9jdW1lbnRJbXBsLmg+Ci0jaW5jbHVkZSA8dXRpbC94bWwvWE1MRWxlbWVudEltcGwuaD4KLQotLyoqIHNlZSBYTUxEb2N1bWVudEltcGwuaCAqLwotWE1MRG9jdW1lbnRJbXBsOjpYTUxEb2N1bWVudEltcGwoKQote30KLQotLyoqIHNlZSBYTUxEb2N1bWVudEltcGwuaCAqLwotWE1MRG9jdW1lbnRJbXBsOjp+WE1MRG9jdW1lbnRJbXBsKCkKLXt9Ci0KLS8qKiBzZWUgWE1MRG9jdW1lbnRJbXBsLmggKi8KLUVsZW1lbnRJbXBsKiBYTUxEb2N1bWVudEltcGw6OmdldERvY3VtZW50RWxlbWVudCgpIGNvbnN0Ci17Ci0gICAgWE1MRWxlbWVudEltcGwgKmVsZW1lbnQgPSAoWE1MRWxlbWVudEltcGwgKikodGhpcy0+Z2V0Rmlyc3RDaGlsZCgpKTsKLSAgICByZXR1cm4gZWxlbWVudDsKLX0KLQotLyoqIHNlZSBYTUxEb2N1bWVudEltcGwuaCAqLwotRWxlbWVudEltcGwqIFhNTERvY3VtZW50SW1wbDo6Y3JlYXRlRWxlbWVudChjb25zdCBET01TdHJpbmcqIHRhZ05hbWUpIGNvbnN0IHRocm93IChET01FeGNlcHRpb24pCi17Ci0gICAgaWYgKHRhZ05hbWUpCi0gICAgewotICAgICAgICBYTUxFbGVtZW50SW1wbCAqZWxlbWVudCA9IG5ldyBYTUxFbGVtZW50SW1wbCh0YWdOYW1lKTsKLSAgICAgICAgcmV0dXJuIGVsZW1lbnQ7Ci0gICAgfQotICAgIHJldHVybiBOVUxMOwotfQotCi0vKiogc2VlIFhNTERvY3VtZW50SW1wbC5oICovCi1UZXh0SW1wbCogWE1MRG9jdW1lbnRJbXBsOjpjcmVhdGVUZXh0Tm9kZShjb25zdCBET01TdHJpbmcqIGRhdGEpIGNvbnN0Ci17Ci0gICAgaWYgKGRhdGEpCi0gICAgewotICAgICAgICBUZXh0SW1wbCAqdGV4dCA9IG5ldyBUZXh0SW1wbChkYXRhKTsKLSAgICAgICAgcmV0dXJuIHRleHQ7Ci0gICAgfQotICAgIHJldHVybiBOVUxMOwotfQotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC94bWwvWE1MRWxlbWVudEltcGwuY3BwIGIvbWVkaWEvbGliZHJtL21vYmlsZTIvc3JjL3V0aWwveG1sL1hNTEVsZW1lbnRJbXBsLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTQ1MzkwMi4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJkcm0vbW9iaWxlMi9zcmMvdXRpbC94bWwvWE1MRWxlbWVudEltcGwuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTM2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLw0KLSNpbmNsdWRlIDx1dGlsL3htbC9YTUxFbGVtZW50SW1wbC5oPgotI2luY2x1ZGUgPHV0aWwvZG9tY29yZS9UZXh0SW1wbC5oPgotCi0vKiogc2VlIFhNTEVsZW1lbnRJbXBsLmggKi8KLVhNTEVsZW1lbnRJbXBsOjpYTUxFbGVtZW50SW1wbChjb25zdCBET01TdHJpbmcgKnRhZykKLXsKLSAgICBpZiAodGFnKQotICAgIHsKLSAgICAgICAgbVRhZ05hbWUgPSAqdGFnOwotICAgIH0KLX0KLQotLyoqIHNlZSBYTUxFbGVtZW50SW1wbC5oICovCi1YTUxFbGVtZW50SW1wbDo6flhNTEVsZW1lbnRJbXBsKCkKLXsKLX0KLQotLyoqIHNlZSBYTUxFbGVtZW50SW1wbC5oICovCi1jb25zdCBET01TdHJpbmcqIFhNTEVsZW1lbnRJbXBsOjpnZXRUYWdOYW1lKCkgY29uc3QKLXsKLSAgICByZXR1cm4gJm1UYWdOYW1lOwotfQotCi0vKiogc2VlIFhNTEVsZW1lbnRJbXBsLmggKi8KLXZvaWQgWE1MRWxlbWVudEltcGw6OnNldEF0dHJpYnV0ZShjb25zdCBET01TdHJpbmcqIG5hbWUsIGNvbnN0IERPTVN0cmluZyogdmFsdWUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgKERPTUV4Y2VwdGlvbikKLXsKLSAgICBpZiAobmFtZSAmJiB2YWx1ZSkKLSAgICB7Ci0gICAgICAgIG1BdHRyaWJ1dGVNYXBbKm5hbWVdID0gKnZhbHVlOwotICAgIH0KLX0KLQotLyoqIHNlZSBYTUxFbGVtZW50SW1wbC5oICovCi12b2lkIFhNTEVsZW1lbnRJbXBsOjpyZW1vdmVBdHRyaWJ1dGUoY29uc3QgRE9NU3RyaW5nKiBuYW1lKSB0aHJvdyAoRE9NRXhjZXB0aW9uKQotewotICAgIGlmIChuYW1lKQotICAgIHsKLSAgICAgICBtQXR0cmlidXRlTWFwLmVyYXNlKCpuYW1lKTsKLSAgICB9Ci19Ci0KLS8qKiBzZWUgWE1MRWxlbWVudEltcGwuaCAqLwotY29uc3QgRE9NU3RyaW5nKiBYTUxFbGVtZW50SW1wbDo6Z2V0QXR0cmlidXRlKGNvbnN0IERPTVN0cmluZyogbmFtZSkgY29uc3QKLXsKLSAgICBpZiAobmFtZSkKLSAgICB7Ci0gICAgICAgIERPTVN0cmluZ01hcDo6Y29uc3RfaXRlcmF0b3IgcG9zID0gbUF0dHJpYnV0ZU1hcC5maW5kKCpuYW1lKTsKLQotICAgICAgICBpZiAocG9zICE9IG1BdHRyaWJ1dGVNYXAuZW5kKCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgcmV0dXJuICYocG9zLT5zZWNvbmQpOwotICAgICAgICB9Ci0KLSAgICB9Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLS8qKiBzZWUgWE1MRWxlbWVudEltcGwuaCAqLwotYm9vbCBYTUxFbGVtZW50SW1wbDo6aGFzQXR0cmlidXRlcygpIGNvbnN0Ci17Ci0gICAgcmV0dXJuICFtQXR0cmlidXRlTWFwLmVtcHR5KCk7Ci19Ci0KLS8qKiBzZWUgWE1MRWxlbWVudEltcGwuaCAqLwotY29uc3QgRE9NU3RyaW5nTWFwKiBYTUxFbGVtZW50SW1wbDo6Z2V0QXR0cmlidXRlTWFwKCkgY29uc3QKLXsKLSAgICByZXR1cm4gJm1BdHRyaWJ1dGVNYXA7Ci19Ci0KLS8qKiBzZWUgWE1MRWxlbWVudEltcGwuaCAqLwotY29uc3QgTm9kZUltcGwqIFhNTEVsZW1lbnRJbXBsOjpmaW5kU29sb0NoaWxkTm9kZShjb25zdCBjaGFyKiB0YWcpIGNvbnN0Ci17Ci0gICAgaWYgKE5VTEwgPT0gdGFnKQotICAgIHsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgc3RyaW5nIHRva2VuOwotICAgIE5vZGVMaXN0SW1wbCAqbm9kZUxpc3QgPSBOVUxMOwotICAgIGNvbnN0IE5vZGVJbXBsICpjaGlsZE5vZGUgPSBOVUxMOwotCi0gICAgdG9rZW4uYXNzaWduKHRhZyk7Ci0gICAgbm9kZUxpc3QgPSBnZXRFbGVtZW50c0J5VGFnTmFtZSgmdG9rZW4pOwotCi0gICAgaWYgKG5vZGVMaXN0LT5nZXRMZW5ndGgoKSA+IDApCi0gICAgewotICAgICAgICAgY2hpbGROb2RlID0gbm9kZUxpc3QtPml0ZW0oMCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIGNoaWxkTm9kZTsKLX0KLQotLyoqIHNlZSBYTUxFbGVtZW50SW1wbC5oICovCi1jb25zdCBzdHJpbmcqIFhNTEVsZW1lbnRJbXBsOjpnZXRTb2xvVGV4dChjb25zdCBjaGFyKiB0YWcpIGNvbnN0Ci17Ci0gICAgY29uc3QgTm9kZUltcGwgKnRleHROb2RlID0gdGhpcy0+ZmluZFNvbG9DaGlsZE5vZGUodGFnKTsKLQotICAgIGlmICh0ZXh0Tm9kZSkKLSAgICB7Ci0gICAgICAgIHRleHROb2RlID0gdGV4dE5vZGUtPmdldEZpcnN0Q2hpbGQoKTsKLSAgICAgICAgaWYgKHRleHROb2RlKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgVGV4dEltcGwqPih0ZXh0Tm9kZSktPmdldERhdGEoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHJldHVybiBOVUxMOwotfQotCi0vKiogc2VlIFhNTEVsZW1lbnRJbXBsLmggKi8KLWNvbnN0IFhNTEVsZW1lbnRJbXBsKiBYTUxFbGVtZW50SW1wbDo6Z2V0U29sb0VsZW1lbnQoY29uc3QgY2hhciogdGFnKSBjb25zdAotewotICAgIGNvbnN0IE5vZGVJbXBsICpub2RlID0gZmluZFNvbG9DaGlsZE5vZGUodGFnKTsKLSAgICBpZiAobm9kZSkKLSAgICB7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBYTUxFbGVtZW50SW1wbCo+KG5vZGUpOwotICAgIH0KLQotICAgIHJldHVybiBOVUxMOwotfQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZWZmZWN0cy9BbmRyb2lkLm1rIGIvbWVkaWEvbGliZWZmZWN0cy9BbmRyb2lkLm1rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0ZTg3ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJlZmZlY3RzL0FuZHJvaWQubWsKQEAgLTAsMCArMSwxMjYgQEAKK0xPQ0FMX1BBVEg6PSAkKGNhbGwgbXktZGlyKQorCisjCitURVNUX0VGRkVDVF9MSUJSQVJJRVMgOj0gdHJ1ZQorCisjIEVmZmVjdCBmYWN0b3J5IGxpYnJhcnkKK2luY2x1ZGUgJChDTEVBUl9WQVJTKQorCitMT0NBTF9TUkNfRklMRVM6PSBcCisJRWZmZWN0c0ZhY3RvcnkuYworCitMT0NBTF9TSEFSRURfTElCUkFSSUVTIDo9IFwKKwlsaWJjdXRpbHMKKworTE9DQUxfTU9EVUxFX1BBVEggOj0gJChUQVJHRVRfT1VUX1NIQVJFRF9MSUJSQVJJRVMpCitMT0NBTF9NT0RVTEU6PSBsaWJlZmZlY3RzCisKK2lmZXEgKCQoVEFSR0VUX09TKS0kKFRBUkdFVF9TSU1VTEFUT1IpLGxpbnV4LXRydWUpCitMT0NBTF9MRExJQlMgKz0gLWxkbAorZW5kaWYKKworaWZuZXEgKCQoVEFSR0VUX1NJTVVMQVRPUiksdHJ1ZSkKK0xPQ0FMX1NIQVJFRF9MSUJSQVJJRVMgKz0gbGliZGwKK2VuZGlmCisKK0xPQ0FMX0NfSU5DTFVERVMgOj0gXAorCitpbmNsdWRlICQoQlVJTERfU0hBUkVEX0xJQlJBUlkpCisKKworaWZlcSAoJChURVNUX0VGRkVDVF9MSUJSQVJJRVMpLHRydWUpCisjIFRlc3QgUmV2ZXJiIGxpYnJhcnkKK2luY2x1ZGUgJChDTEVBUl9WQVJTKQorCitMT0NBTF9TUkNfRklMRVM6PSBcCisJRWZmZWN0UmV2ZXJiLmMuYXJtIFwKKwlFZmZlY3RzTWF0aC5jLmFybQorTE9DQUxfQ0ZMQUdTKz0gLU8yCisKK0xPQ0FMX1NIQVJFRF9MSUJSQVJJRVMgOj0gXAorCWxpYmN1dGlscworCitMT0NBTF9NT0RVTEVfUEFUSCA6PSAkKFRBUkdFVF9PVVRfU0hBUkVEX0xJQlJBUklFUykvc291bmRmeAorTE9DQUxfTU9EVUxFOj0gbGlicmV2ZXJiCisKK2lmZXEgKCQoVEFSR0VUX09TKS0kKFRBUkdFVF9TSU1VTEFUT1IpLGxpbnV4LXRydWUpCitMT0NBTF9MRExJQlMgKz0gLWxkbAorZW5kaWYKKworaWZuZXEgKCQoVEFSR0VUX1NJTVVMQVRPUiksdHJ1ZSkKK0xPQ0FMX1NIQVJFRF9MSUJSQVJJRVMgKz0gbGliZGwKK2VuZGlmCisKK0xPQ0FMX0NfSU5DTFVERVMgOj0gXAorCSQoY2FsbCBpbmNsdWRlLXBhdGgtZm9yLCBncmFwaGljcyBjb3JlY2cpCisKK0xPQ0FMX1BSRUxJTktfTU9EVUxFIDo9IGZhbHNlCisKK2luY2x1ZGUgJChCVUlMRF9TSEFSRURfTElCUkFSWSkKKworIyBUZXN0IEVxdWFsaXplciBsaWJyYXJ5CitpbmNsdWRlICQoQ0xFQVJfVkFSUykKKworTE9DQUxfU1JDX0ZJTEVTOj0gXAorCUVmZmVjdHNNYXRoLmMuYXJtIFwKKwlFZmZlY3RFcXVhbGl6ZXIuY3BwIFwKKwlBdWRpb0JpcXVhZEZpbHRlci5jcHAuYXJtIFwKKwlBdWRpb0NvZWZJbnRlcnBvbGF0b3IuY3BwLmFybSBcCisJQXVkaW9QZWFraW5nRmlsdGVyLmNwcC5hcm0gXAorCUF1ZGlvU2hlbHZpbmdGaWx0ZXIuY3BwLmFybSBcCisJQXVkaW9FcXVhbGl6ZXIuY3BwLmFybQorCitMT0NBTF9DRkxBR1MrPSAtTzIKKworTE9DQUxfU0hBUkVEX0xJQlJBUklFUyA6PSBcCisJbGliY3V0aWxzCisKK0xPQ0FMX01PRFVMRV9QQVRIIDo9ICQoVEFSR0VUX09VVF9TSEFSRURfTElCUkFSSUVTKS9zb3VuZGZ4CitMT0NBTF9NT0RVTEU6PSBsaWJlcXVhbGl6ZXIKKworaWZlcSAoJChUQVJHRVRfT1MpLSQoVEFSR0VUX1NJTVVMQVRPUiksbGludXgtdHJ1ZSkKK0xPQ0FMX0xETElCUyArPSAtbGRsCitlbmRpZgorCitpZm5lcSAoJChUQVJHRVRfU0lNVUxBVE9SKSx0cnVlKQorTE9DQUxfU0hBUkVEX0xJQlJBUklFUyArPSBsaWJkbAorZW5kaWYKKworTE9DQUxfQ19JTkNMVURFUyA6PSBcCisJJChjYWxsIGluY2x1ZGUtcGF0aC1mb3IsIGdyYXBoaWNzIGNvcmVjZykKKworTE9DQUxfUFJFTElOS19NT0RVTEUgOj0gZmFsc2UKKworaW5jbHVkZSAkKEJVSUxEX1NIQVJFRF9MSUJSQVJZKQorCitlbmRpZgorCisKKyMgVmlzdWFsaXplciBsaWJyYXJ5CitpbmNsdWRlICQoQ0xFQVJfVkFSUykKKworTE9DQUxfU1JDX0ZJTEVTOj0gXAorCUVmZmVjdFZpc3VhbGl6ZXIuY3BwCisKK0xPQ0FMX0NGTEFHUys9IC1PMgorCitMT0NBTF9TSEFSRURfTElCUkFSSUVTIDo9IFwKKwlsaWJjdXRpbHMKKworTE9DQUxfTU9EVUxFX1BBVEggOj0gJChUQVJHRVRfT1VUX1NIQVJFRF9MSUJSQVJJRVMpL3NvdW5kZngKK0xPQ0FMX01PRFVMRTo9IGxpYnZpc3VhbGl6ZXIKKworaWZlcSAoJChUQVJHRVRfT1MpLSQoVEFSR0VUX1NJTVVMQVRPUiksbGludXgtdHJ1ZSkKK0xPQ0FMX0xETElCUyArPSAtbGRsCitlbmRpZgorCitpZm5lcSAoJChUQVJHRVRfU0lNVUxBVE9SKSx0cnVlKQorTE9DQUxfU0hBUkVEX0xJQlJBUklFUyArPSBsaWJkbAorZW5kaWYKKworTE9DQUxfQ19JTkNMVURFUyA6PSBcCisJJChjYWxsIGluY2x1ZGUtcGF0aC1mb3IsIGdyYXBoaWNzIGNvcmVjZykKKworTE9DQUxfUFJFTElOS19NT0RVTEUgOj0gZmFsc2UKKworaW5jbHVkZSAkKEJVSUxEX1NIQVJFRF9MSUJSQVJZKQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZWZmZWN0cy9BdWRpb0JpcXVhZEZpbHRlci5jcHAgYi9tZWRpYS9saWJlZmZlY3RzL0F1ZGlvQmlxdWFkRmlsdGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MjkxN2EzCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGliZWZmZWN0cy9BdWRpb0JpcXVhZEZpbHRlci5jcHAKQEAgLTAsMCArMSwyNjAgQEAKKy8qIC8vZGV2aWNlL3NlcnZlcnMvQXVkaW9GbGluZ2VyL0F1ZGlvQmlxdWFkRmlsdGVyLmNwcAorKioKKyoqIENvcHlyaWdodCAyMDA5LCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisqKgorKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyoqCisqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisqKgorKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisqLworCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisKKyNpbmNsdWRlICJBdWRpb0JpcXVhZEZpbHRlci5oIgorCisjZGVmaW5lIExJS0VMWSggZXhwICkgICAgICAgKF9fYnVpbHRpbl9leHBlY3QoIChleHApICE9IDAsIHRydWUgICkpCisjZGVmaW5lIFVOTElLRUxZKCBleHAgKSAgICAgKF9fYnVpbHRpbl9leHBlY3QoIChleHApICE9IDAsIGZhbHNlICkpCisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworY29uc3QgYXVkaW9fY29lZl90IEF1ZGlvQmlxdWFkRmlsdGVyOjpJREVOVElUWV9DT0VGU1tBdWRpb0JpcXVhZEZpbHRlcjo6TlVNX0NPRUZTXSA9IHsgQVVESU9fQ09FRl9PTkUsIDAsIDAsIDAsIDAgfTsKKworQXVkaW9CaXF1YWRGaWx0ZXI6OkF1ZGlvQmlxdWFkRmlsdGVyKGludCBuQ2hhbm5lbHMsIGludCBzYW1wbGVSYXRlKSB7CisgICAgY29uZmlndXJlKG5DaGFubmVscywgc2FtcGxlUmF0ZSk7CisgICAgcmVzZXQoKTsKK30KKwordm9pZCBBdWRpb0JpcXVhZEZpbHRlcjo6Y29uZmlndXJlKGludCBuQ2hhbm5lbHMsIGludCBzYW1wbGVSYXRlKSB7CisgICAgYXNzZXJ0KG5DaGFubmVscyA+IDAgJiYgbkNoYW5uZWxzIDw9IE1BWF9DSEFOTkVMUyk7CisgICAgYXNzZXJ0KHNhbXBsZVJhdGUgPiAwKTsKKyAgICBtTnVtQ2hhbm5lbHMgID0gbkNoYW5uZWxzOworICAgIG1NYXhEZWx0YSA9IHN0YXRpY19jYXN0PGludDY0X3Q+KE1BWF9ERUxUQV9QRVJfU0VDKQorICAgICAgICAgICAgICAgICogQVVESU9fQ09FRl9PTkUKKyAgICAgICAgICAgICAgICAvIHNhbXBsZVJhdGU7CisgICAgY2xlYXIoKTsKK30KKwordm9pZCBBdWRpb0JpcXVhZEZpbHRlcjo6cmVzZXQoKSB7CisgICAgbWVtY3B5KG1Db2VmcywgSURFTlRJVFlfQ09FRlMsIHNpemVvZihtQ29lZnMpKTsKKyAgICBtQ29lZkRpcnR5Qml0cyA9IDA7CisgICAgc2V0U3RhdGUoU1RBVEVfQllQQVNTKTsKK30KKwordm9pZCBBdWRpb0JpcXVhZEZpbHRlcjo6Y2xlYXIoKSB7CisgICAgbWVtc2V0KG1EZWxheXMsIDAsIHNpemVvZihtRGVsYXlzKSk7Cit9CisKK3ZvaWQgQXVkaW9CaXF1YWRGaWx0ZXI6OnNldENvZWZzKGNvbnN0IGF1ZGlvX2NvZWZfdCBjb2Vmc1tOVU1fQ09FRlNdLCBib29sIGltbWVkaWF0ZSkgeworICAgIG1lbWNweShtVGFyZ2V0Q29lZnMsIGNvZWZzLCBzaXplb2YobVRhcmdldENvZWZzKSk7CisgICAgaWYgKG1TdGF0ZSAmIFNUQVRFX0VOQUJMRURfTUFTSykgeworICAgICAgICBpZiAoVU5MSUtFTFkoaW1tZWRpYXRlKSkgeworICAgICAgICAgICAgbWVtY3B5KG1Db2VmcywgY29lZnMsIHNpemVvZihtQ29lZnMpKTsKKyAgICAgICAgICAgIHNldFN0YXRlKFNUQVRFX05PUk1BTCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzZXRTdGF0ZShTVEFURV9UUkFOU0lUSU9OX1RPX05PUk1BTCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgQXVkaW9CaXF1YWRGaWx0ZXI6OnByb2Nlc3MoY29uc3QgYXVkaW9fc2FtcGxlX3QgaW5bXSwgYXVkaW9fc2FtcGxlX3Qgb3V0W10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmcmFtZUNvdW50KSB7CisgICAgKHRoaXMtPiptQ3VyUHJvY2Vzc0Z1bmMpKGluLCBvdXQsIGZyYW1lQ291bnQpOworfQorCit2b2lkIEF1ZGlvQmlxdWFkRmlsdGVyOjplbmFibGUoYm9vbCBpbW1lZGlhdGUpIHsKKyAgICBpZiAoVU5MSUtFTFkoaW1tZWRpYXRlKSkgeworICAgICAgICBtZW1jcHkobUNvZWZzLCBtVGFyZ2V0Q29lZnMsIHNpemVvZihtQ29lZnMpKTsKKyAgICAgICAgc2V0U3RhdGUoU1RBVEVfTk9STUFMKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzZXRTdGF0ZShTVEFURV9UUkFOU0lUSU9OX1RPX05PUk1BTCk7CisgICAgfQorfQorCit2b2lkIEF1ZGlvQmlxdWFkRmlsdGVyOjpkaXNhYmxlKGJvb2wgaW1tZWRpYXRlKSB7CisgICAgaWYgKFVOTElLRUxZKGltbWVkaWF0ZSkpIHsKKyAgICAgICAgbWVtY3B5KG1Db2VmcywgSURFTlRJVFlfQ09FRlMsIHNpemVvZihtQ29lZnMpKTsKKyAgICAgICAgc2V0U3RhdGUoU1RBVEVfQllQQVNTKTsKKyAgICB9IGVsc2UgeworICAgICAgICBzZXRTdGF0ZShTVEFURV9UUkFOU0lUSU9OX1RPX0JZUEFTUyk7CisgICAgfQorfQorCit2b2lkIEF1ZGlvQmlxdWFkRmlsdGVyOjpzZXRTdGF0ZShzdGF0ZV90IHN0YXRlKSB7CisgICAgc3dpdGNoIChzdGF0ZSkgeworICAgIGNhc2UgU1RBVEVfQllQQVNTOgorICAgICAgbUN1clByb2Nlc3NGdW5jID0gJkF1ZGlvQmlxdWFkRmlsdGVyOjpwcm9jZXNzX2J5cGFzczsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgU1RBVEVfVFJBTlNJVElPTl9UT19CWVBBU1M6CisgICAgICBpZiAobU51bUNoYW5uZWxzID09IDEpIHsKKyAgICAgICAgbUN1clByb2Nlc3NGdW5jID0gJkF1ZGlvQmlxdWFkRmlsdGVyOjpwcm9jZXNzX3RyYW5zaXRpb25fYnlwYXNzX21vbm87CisgICAgICB9IGVsc2UgeworICAgICAgICBtQ3VyUHJvY2Vzc0Z1bmMgPSAmQXVkaW9CaXF1YWRGaWx0ZXI6OnByb2Nlc3NfdHJhbnNpdGlvbl9ieXBhc3NfbXVsdGk7CisgICAgICB9CisgICAgICBtQ29lZkRpcnR5Qml0cyA9ICgxIDw8IE5VTV9DT0VGUykgLSAxOworICAgICAgYnJlYWs7CisgICAgY2FzZSBTVEFURV9UUkFOU0lUSU9OX1RPX05PUk1BTDoKKyAgICAgIGlmIChtTnVtQ2hhbm5lbHMgPT0gMSkgeworICAgICAgICBtQ3VyUHJvY2Vzc0Z1bmMgPSAmQXVkaW9CaXF1YWRGaWx0ZXI6OnByb2Nlc3NfdHJhbnNpdGlvbl9ub3JtYWxfbW9ubzsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIG1DdXJQcm9jZXNzRnVuYyA9ICZBdWRpb0JpcXVhZEZpbHRlcjo6cHJvY2Vzc190cmFuc2l0aW9uX25vcm1hbF9tdWx0aTsKKyAgICAgIH0KKyAgICAgIG1Db2VmRGlydHlCaXRzID0gKDEgPDwgTlVNX0NPRUZTKSAtIDE7CisgICAgICBicmVhazsKKyAgICBjYXNlIFNUQVRFX05PUk1BTDoKKyAgICAgIGlmIChtTnVtQ2hhbm5lbHMgPT0gMSkgeworICAgICAgICBtQ3VyUHJvY2Vzc0Z1bmMgPSAmQXVkaW9CaXF1YWRGaWx0ZXI6OnByb2Nlc3Nfbm9ybWFsX21vbm87CisgICAgICB9IGVsc2UgeworICAgICAgICBtQ3VyUHJvY2Vzc0Z1bmMgPSAmQXVkaW9CaXF1YWRGaWx0ZXI6OnByb2Nlc3Nfbm9ybWFsX211bHRpOworICAgICAgfQorICAgICAgYnJlYWs7CisgICAgfQorICAgIG1TdGF0ZSA9IHN0YXRlOworfQorCitib29sIEF1ZGlvQmlxdWFkRmlsdGVyOjp1cGRhdGVDb2Vmcyhjb25zdCBhdWRpb19jb2VmX3QgY29lZnNbTlVNX0NPRUZTXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmcmFtZUNvdW50KSB7CisgICAgaW50NjRfdCBtYXhEZWx0YSA9IG1NYXhEZWx0YSAqIGZyYW1lQ291bnQ7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOVU1fQ09FRlM7ICsraSkgeworICAgICAgICBpZiAobUNvZWZEaXJ0eUJpdHMgJiAoMTw8aSkpIHsKKyAgICAgICAgICAgIGF1ZGlvX2NvZWZfdCBkaWZmID0gY29lZnNbaV0gLSBtQ29lZnNbaV07CisgICAgICAgICAgICBpZiAoZGlmZiA+IG1heERlbHRhKSB7CisgICAgICAgICAgICAgICAgbUNvZWZzW2ldICs9IG1heERlbHRhOworICAgICAgICAgICAgfSBlbHNlIGlmIChkaWZmIDwgLW1heERlbHRhKSB7CisgICAgICAgICAgICAgICAgbUNvZWZzW2ldIC09IG1heERlbHRhOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtQ29lZnNbaV0gPSBjb2Vmc1tpXTsKKyAgICAgICAgICAgICAgICBtQ29lZkRpcnR5Qml0cyBePSAoMTw8aSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIG1Db2VmRGlydHlCaXRzID09IDA7Cit9CisKK3ZvaWQgQXVkaW9CaXF1YWRGaWx0ZXI6OnByb2Nlc3NfYnlwYXNzKGNvbnN0IGF1ZGlvX3NhbXBsZV90ICogaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19zYW1wbGVfdCAqIG91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmcmFtZUNvdW50KSB7CisgICAgLy8gVGhlIGNvbW1vbiBjYXNlIGlzIGluLXBsYWNlIHByb2Nlc3NpbmcsIGJlY2F1c2UgdGhpcyBpcyB3aGF0IHRoZSBFUSBkb2VzLgorICAgIGlmIChVTkxJS0VMWShpbiAhPSBvdXQpKSB7CisgICAgICAgIG1lbWNweShvdXQsIGluLCBmcmFtZUNvdW50ICogbU51bUNoYW5uZWxzICogc2l6ZW9mKGF1ZGlvX3NhbXBsZV90KSk7CisgICAgfQorfQorCit2b2lkIEF1ZGlvQmlxdWFkRmlsdGVyOjpwcm9jZXNzX25vcm1hbF9tb25vKGNvbnN0IGF1ZGlvX3NhbXBsZV90ICogaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX3NhbXBsZV90ICogb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZnJhbWVDb3VudCkgeworICAgIHNpemVfdCBuRnJhbWVzID0gZnJhbWVDb3VudDsKKyAgICBhdWRpb19zYW1wbGVfdCB4MSA9IG1EZWxheXNbMF1bMF07CisgICAgYXVkaW9fc2FtcGxlX3QgeDIgPSBtRGVsYXlzWzBdWzFdOworICAgIGF1ZGlvX3NhbXBsZV90IHkxID0gbURlbGF5c1swXVsyXTsKKyAgICBhdWRpb19zYW1wbGVfdCB5MiA9IG1EZWxheXNbMF1bM107CisgICAgY29uc3QgYXVkaW9fY29lZl90IGIwID0gbUNvZWZzWzBdOworICAgIGNvbnN0IGF1ZGlvX2NvZWZfdCBiMSA9IG1Db2Vmc1sxXTsKKyAgICBjb25zdCBhdWRpb19jb2VmX3QgYjIgPSBtQ29lZnNbMl07CisgICAgY29uc3QgYXVkaW9fY29lZl90IGExID0gbUNvZWZzWzNdOworICAgIGNvbnN0IGF1ZGlvX2NvZWZfdCBhMiA9IG1Db2Vmc1s0XTsKKyAgICB3aGlsZSAobkZyYW1lcy0tID4gMCkgeworICAgICAgICBhdWRpb19zYW1wbGVfdCB4MCA9ICooaW4rKyk7CisgICAgICAgIGF1ZGlvX2NvZWZfc2FtcGxlX2FjY190IGFjYzsKKyAgICAgICAgYWNjID0gbXVsX2NvZWZfc2FtcGxlKGIwLCB4MCk7CisgICAgICAgIGFjYyA9IG1hY19jb2VmX3NhbXBsZShiMSwgeDEsIGFjYyk7CisgICAgICAgIGFjYyA9IG1hY19jb2VmX3NhbXBsZShiMiwgeDIsIGFjYyk7CisgICAgICAgIGFjYyA9IG1hY19jb2VmX3NhbXBsZShhMSwgeTEsIGFjYyk7CisgICAgICAgIGFjYyA9IG1hY19jb2VmX3NhbXBsZShhMiwgeTIsIGFjYyk7CisgICAgICAgIGF1ZGlvX3NhbXBsZV90IHkwID0gY29lZl9zYW1wbGVfYWNjX3RvX3NhbXBsZShhY2MpOworICAgICAgICB5MiA9IHkxOworICAgICAgICB5MSA9IHkwOworICAgICAgICB4MiA9IHgxOworICAgICAgICB4MSA9IHgwOworICAgICAgICAoKm91dCsrKSA9IHkwOworICAgIH0KKyAgICBtRGVsYXlzWzBdWzBdID0geDE7CisgICAgbURlbGF5c1swXVsxXSA9IHgyOworICAgIG1EZWxheXNbMF1bMl0gPSB5MTsKKyAgICBtRGVsYXlzWzBdWzNdID0geTI7Cit9CisKK3ZvaWQgQXVkaW9CaXF1YWRGaWx0ZXI6OnByb2Nlc3NfdHJhbnNpdGlvbl9ub3JtYWxfbW9ubyhjb25zdCBhdWRpb19zYW1wbGVfdCAqIGluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX3NhbXBsZV90ICogb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmcmFtZUNvdW50KSB7CisgICAgaWYgKHVwZGF0ZUNvZWZzKG1UYXJnZXRDb2VmcywgZnJhbWVDb3VudCkpIHsKKyAgICAgICAgc2V0U3RhdGUoU1RBVEVfTk9STUFMKTsKKyAgICB9CisgICAgcHJvY2Vzc19ub3JtYWxfbW9ubyhpbiwgb3V0LCBmcmFtZUNvdW50KTsKK30KKwordm9pZCBBdWRpb0JpcXVhZEZpbHRlcjo6cHJvY2Vzc190cmFuc2l0aW9uX2J5cGFzc19tb25vKGNvbnN0IGF1ZGlvX3NhbXBsZV90ICogaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9fc2FtcGxlX3QgKiBvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZyYW1lQ291bnQpICB7CisgIGlmICh1cGRhdGVDb2VmcyhJREVOVElUWV9DT0VGUywgZnJhbWVDb3VudCkpIHsKKyAgICAgIHNldFN0YXRlKFNUQVRFX05PUk1BTCk7CisgIH0KKyAgcHJvY2Vzc19ub3JtYWxfbW9ubyhpbiwgb3V0LCBmcmFtZUNvdW50KTsKK30KKwordm9pZCBBdWRpb0JpcXVhZEZpbHRlcjo6cHJvY2Vzc19ub3JtYWxfbXVsdGkoY29uc3QgYXVkaW9fc2FtcGxlX3QgKiBpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX3NhbXBsZV90ICogb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZyYW1lQ291bnQpIHsKKyAgICBjb25zdCBhdWRpb19jb2VmX3QgYjAgPSBtQ29lZnNbMF07CisgICAgY29uc3QgYXVkaW9fY29lZl90IGIxID0gbUNvZWZzWzFdOworICAgIGNvbnN0IGF1ZGlvX2NvZWZfdCBiMiA9IG1Db2Vmc1syXTsKKyAgICBjb25zdCBhdWRpb19jb2VmX3QgYTEgPSBtQ29lZnNbM107CisgICAgY29uc3QgYXVkaW9fY29lZl90IGEyID0gbUNvZWZzWzRdOworICAgIGZvciAoaW50IGNoID0gMDsgY2ggPCBtTnVtQ2hhbm5lbHM7ICsrY2gpIHsKKyAgICAgICAgc2l6ZV90IG5GcmFtZXMgPSBmcmFtZUNvdW50OworICAgICAgICBhdWRpb19zYW1wbGVfdCB4MSA9IG1EZWxheXNbY2hdWzBdOworICAgICAgICBhdWRpb19zYW1wbGVfdCB4MiA9IG1EZWxheXNbY2hdWzFdOworICAgICAgICBhdWRpb19zYW1wbGVfdCB5MSA9IG1EZWxheXNbY2hdWzJdOworICAgICAgICBhdWRpb19zYW1wbGVfdCB5MiA9IG1EZWxheXNbY2hdWzNdOworICAgICAgICB3aGlsZSAobkZyYW1lcy0tID4gMCkgeworICAgICAgICAgICAgYXVkaW9fc2FtcGxlX3QgeDAgPSAqaW47CisgICAgICAgICAgICBhdWRpb19jb2VmX3NhbXBsZV9hY2NfdCBhY2M7CisgICAgICAgICAgICBhY2MgPSBtdWxfY29lZl9zYW1wbGUoYjAsIHgwKTsKKyAgICAgICAgICAgIGFjYyA9IG1hY19jb2VmX3NhbXBsZShiMSwgeDEsIGFjYyk7CisgICAgICAgICAgICBhY2MgPSBtYWNfY29lZl9zYW1wbGUoYjIsIHgyLCBhY2MpOworICAgICAgICAgICAgYWNjID0gbWFjX2NvZWZfc2FtcGxlKGExLCB5MSwgYWNjKTsKKyAgICAgICAgICAgIGFjYyA9IG1hY19jb2VmX3NhbXBsZShhMiwgeTIsIGFjYyk7CisgICAgICAgICAgICBhdWRpb19zYW1wbGVfdCB5MCA9IGNvZWZfc2FtcGxlX2FjY190b19zYW1wbGUoYWNjKTsKKyAgICAgICAgICAgIHkyID0geTE7CisgICAgICAgICAgICB5MSA9IHkwOworICAgICAgICAgICAgeDIgPSB4MTsKKyAgICAgICAgICAgIHgxID0geDA7CisgICAgICAgICAgICAqb3V0ID0geTA7CisgICAgICAgICAgICBpbiArPSBtTnVtQ2hhbm5lbHM7CisgICAgICAgICAgICBvdXQgKz0gbU51bUNoYW5uZWxzOworICAgICAgICB9CisgICAgICAgIG1EZWxheXNbY2hdWzBdID0geDE7CisgICAgICAgIG1EZWxheXNbY2hdWzFdID0geDI7CisgICAgICAgIG1EZWxheXNbY2hdWzJdID0geTE7CisgICAgICAgIG1EZWxheXNbY2hdWzNdID0geTI7CisgICAgICAgIGluIC09IGZyYW1lQ291bnQgKiBtTnVtQ2hhbm5lbHMgLSAxOworICAgICAgICBvdXQgLT0gZnJhbWVDb3VudCAqIG1OdW1DaGFubmVscyAtIDE7CisgICAgfQorfQorCit2b2lkIEF1ZGlvQmlxdWFkRmlsdGVyOjpwcm9jZXNzX3RyYW5zaXRpb25fbm9ybWFsX211bHRpKGNvbnN0IGF1ZGlvX3NhbXBsZV90ICogaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX3NhbXBsZV90ICogb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZnJhbWVDb3VudCkgeworICAgIGlmICh1cGRhdGVDb2VmcyhtVGFyZ2V0Q29lZnMsIGZyYW1lQ291bnQpKSB7CisgICAgICAgIHNldFN0YXRlKFNUQVRFX05PUk1BTCk7CisgICAgfQorICAgIHByb2Nlc3Nfbm9ybWFsX211bHRpKGluLCBvdXQsIGZyYW1lQ291bnQpOworfQorCit2b2lkIEF1ZGlvQmlxdWFkRmlsdGVyOjpwcm9jZXNzX3RyYW5zaXRpb25fYnlwYXNzX211bHRpKGNvbnN0IGF1ZGlvX3NhbXBsZV90ICogaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX3NhbXBsZV90ICogb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZnJhbWVDb3VudCkgIHsKKyAgICBpZiAodXBkYXRlQ29lZnMoSURFTlRJVFlfQ09FRlMsIGZyYW1lQ291bnQpKSB7CisgICAgICAgIHNldFN0YXRlKFNUQVRFX05PUk1BTCk7CisgICAgfQorICAgIHByb2Nlc3Nfbm9ybWFsX211bHRpKGluLCBvdXQsIGZyYW1lQ291bnQpOworfQorCit9CmRpZmYgLS1naXQgYS9tZWRpYS9saWJlZmZlY3RzL0F1ZGlvQmlxdWFkRmlsdGVyLmggYi9tZWRpYS9saWJlZmZlY3RzL0F1ZGlvQmlxdWFkRmlsdGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmIwZTJkNgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYmVmZmVjdHMvQXVkaW9CaXF1YWRGaWx0ZXIuaApAQCAtMCwwICsxLDE4MCBAQAorLyogLy9kZXZpY2UvaW5jbHVkZS9zZXJ2ZXIvQXVkaW9GbGluZ2VyL0F1ZGlvQmlxdWFkRmlsdGVyLmgKKyoqCisqKiBDb3B5cmlnaHQgMjAwNywgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorKioKKyoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisqKgorKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorKioKKyoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorKi8KKworI2lmbmRlZiBBTkRST0lEX0FVRElPX0JJUVVBRF9GSUxURVJfSAorI2RlZmluZSBBTkRST0lEX0FVRElPX0JJUVVBRF9GSUxURVJfSAorCisjaW5jbHVkZSAiQXVkaW9Db21tb24uaCIKKworbmFtZXNwYWNlIGFuZHJvaWQgeworLy8gQSBiaXF1YWQgZmlsdGVyLgorLy8gSW1wbGVtZW50cyB0aGUgcmVjdXJzaW9uIHlbbl09YTAqeVtuLTFdK2ExKnlbbi0yXStiMCp4W25dK2IxKnhbbi0xXStiMip4W24tMl0KKy8vICh0aGUgYTAgYW5kIGExIGNvZWZmaWNpZW50cyBoYXZlIGFuIG9wcG9zaXRlIHNpZ24gdG8gdGhlIGNvbW1vbiBjb252ZW50aW9uKQorLy8gVGhlIGZpbHRlciB3b3JrcyBvbiBmaXhlZCBzaXplZCBibG9ja3Mgb2YgZGF0YSAoZnJhbWVDb3VudCBtdWx0aS1jaGFubmVsCisvLyBzYW1wbGVzLCBhcyBkZWZpbmVkIGR1cmluZyBjb25zdHJ1Y3Rpb24pLiBBbiBhcmJpdHJhcnkgbnVtYmVyIG9mIGludGVybGFjZWQKKy8vIGNoYW5uZWxzIGlzIHN1cHBvcnRlZC4KKy8vIEZpbHRlciBjYW4gb3BlcmF0ZSBpbiBhbiBlbmFibGVkIChhY3RpdmUpIG9yIGRpc2FibGVkIChieXBhc3NlZCkgc3RhdGVzLgorLy8gQSBtZWNoYW5pc20gZm9yIHN1cHByZXNzaW9uIG9mIGFydGlmYWN0cyBjYXVzZWQgYnkgYWJydXB0IGNvZWZmaWNpZW50IGNoYW5nZXMKKy8vIGlzIGltcGxlbWVudGVkOiBub3JtYWxseSwgd2hlbiB0aGUgZW5hYmxlKCksIGRpc2FibGUoKSBhbmQgc2V0Q29lZnMoKSBtZXRob2RzCisvLyBhcmUgY2FsbGVkIHdpdGhvdXQgdGhlIGltbWVkaWF0ZSBmbGFnIHNldCwgdGhlIGZpbHRlciBzbW9vdGhseSB0cmFuc2l0aW9ucworLy8gZnJvbSBpdHMgY3VycmVudCBzdGF0ZSB0byB0aGUgZGVzaXJlZCBzdGF0ZS4KK2NsYXNzIEF1ZGlvQmlxdWFkRmlsdGVyIHsKK3B1YmxpYzoKKyAgICAvLyBNYXggbnVtYmVyIG9mIGNoYW5uZWxzIChjYW4gYmUgY2hhbmdlZCBoZXJlLCBhbmQgZXZlcnl0aGluZyBzaG91bGQgd29yaykuCisgICAgc3RhdGljIGNvbnN0IGludCBNQVhfQ0hBTk5FTFMgPSAyOworICAgIC8vIE51bWJlciBvZiBjb2VmZmljaWVudHMuCisgICAgc3RhdGljIGNvbnN0IGludCBOVU1fQ09FRlMgPSA1OworCisgICAgLy8gQ29uc3RydWN0b3IuCisgICAgLy8gbkNoYW5uZWxzICAgIE51bWJlciBvZiBpbnB1dC9vdXRwdXQgY2hhbm5lbHMuCisgICAgLy8gc2FtcGxlUmF0ZSAgIFNhbXBsZSByYXRlLCBpbiBIei4KKyAgICBBdWRpb0JpcXVhZEZpbHRlcihpbnQgbkNoYW5uZWxzLCBpbnQgc2FtcGxlUmF0ZSk7CisKKyAgICAvLyBSZWNvbmZpZ3VyYXRpb24gb2YgdGhlIGZpbHRlci4gSW1wbGllcyBjbGVhcigpLgorICAgIC8vIG5DaGFubmVscyAgICBOdW1iZXIgb2YgaW5wdXQvb3V0cHV0IGNoYW5uZWxzLgorICAgIC8vIHNhbXBsZVJhdGUgICBTYW1wbGUgcmF0ZSwgaW4gSHouCisgICAgdm9pZCBjb25maWd1cmUoaW50IG5DaGFubmVscywgaW50IHNhbXBsZVJhdGUpOworCisgICAgLy8gUmVzZXRzIHRoZSBpbnRlcm5hbCBzdGF0ZSBvZiB0aGUgZmlsdGVyLgorICAgIC8vIENvZWZmaWNpZW50cyBhcmUgcmVzZXQgdG8gaWRlbnRpdHksIHN0YXRlIGJlY29tZXMgZGlzYWJsZWQuIFRoaXMgY2hhbmdlCisgICAgLy8gaGFwcGVucyBpbW1lZGlhdGVseSBhbmQgbWlnaHQgY2F1c2UgZGlzY29udGludWl0aWVzIGluIHRoZSBvdXRwdXQuCisgICAgLy8gRGVsYXkgbGluZXMgYXJlIG5vdCBjbGVhcmVkLgorICAgIHZvaWQgcmVzZXQoKTsKKworICAgIC8vIENsZWFycyB0aGUgZGVsYXkgbGluZXMuCisgICAgLy8gVGhpcyBjaGFuZ2UgaGFwcGVucyBpbW1lZGlhdGVseSBhbmQgbWlnaHQgY2F1c2UgZGlzY29udGludWl0aWVzIGluIHRoZQorICAgIC8vIG91dHB1dC4KKyAgICB2b2lkIGNsZWFyKCk7CisKKyAgICAvLyBTZXRzIHRoZSBjb2VmZmljaWVudHMuCisgICAgLy8gSWYgY2FsbGVkIHdoZW4gZmlsdGVyIGlzIGRpc2FibGVkLCB3aWxsIGhhdmUgbm8gaW1tZWRpYXRlIGVmZmVjdCwgYnV0IHRoZQorICAgIC8vIG5ldyBjb2VmZmljaWVudHMgd2lsbCBiZSBzZXQgYW5kIHVzZWQgbmV4dCB0aW1lIHRoZSBmaWx0ZXIgaXMgZW5hYmxlZC4KKyAgICAvLyBjb2VmcyAgICAgICAgVGhlIG5ldyBjb2VmZmljaWVudHMuCisgICAgLy8gaW1tZWRpYXRlICAgIElmIHRydWUsIHRyYW5zaXRpb25zIHRvIG5ldyBjb2VmZmljaWVudHMgc21vb3RobHksIHdpdGhvdXQKKyAgICAvLyAgICAgICAgICAgICAgaW50cm9kdWNpbmcgZGlzY29udGludWl0aWVzIGluIHRoZSBvdXRwdXQuIE90aGVyd2lzZSwKKyAgICAvLyAgICAgICAgICAgICAgdHJhbnNpdGlvbnMgaW1tZWRpYXRlbHkuCisgICAgdm9pZCBzZXRDb2Vmcyhjb25zdCBhdWRpb19jb2VmX3QgY29lZnNbTlVNX0NPRUZTXSwgYm9vbCBpbW1lZGlhdGUgPSBmYWxzZSk7CisKKyAgICAvLyBQcm9jZXNzIGEgYnVmZmVyIG9mIGRhdGEuIEFsd2F5cyBwcm9jZXNzZXMgZnJhbWVDb3VudCBtdWx0aS1jaGFubmVsCisgICAgLy8gc2FtcGxlcy4gUHJvY2Vzc2luZyBjYW4gYmUgZG9uZSBpbi1wbGFjZSwgYnkgcGFzc2luZyB0aGUgc2FtZSBidWZmZXIgYXMKKyAgICAvLyBib3RoIGFyZ3VtZW50cy4KKyAgICAvLyBpbiAgICAgICAgICAgVGhlIGlucHV0IGJ1ZmZlci4gU2hvdWxkIGJlIG9mIHNpemUgZnJhbWVDb3VudCAqIG5DaGFubmVscy4KKyAgICAvLyBvdXQgICAgICAgICAgVGhlIG91dHB1dCBidWZmZXIuIFNob3VsZCBiZSBvZiBzaXplIGZyYW1lQ291bnQgKiBuQ2hhbm5lbHMuCisgICAgLy8gZnJhbWVDb3VudCAgIE51bWJlciBvZiBtdWx0aS1jaGFubmVsIHNhbXBsZXMgdG8gcHJvY2Vzcy4KKyAgICB2b2lkIHByb2Nlc3MoY29uc3QgYXVkaW9fc2FtcGxlX3QgaW5bXSwgYXVkaW9fc2FtcGxlX3Qgb3V0W10sCisgICAgICAgICAgICAgICAgIGludCBmcmFtZUNvdW50KTsKKworICAgIC8vIEVuYWJsZXMgKGFjdGl2YXRlcykgdGhlIGZpbHRlci4KKyAgICAvLyBpbW1lZGlhdGUgICAgSWYgdHJ1ZSwgdHJhbnNpdGlvbnMgdG8gbmV3IHN0YXRlIHNtb290aGx5LCB3aXRob3V0CisgICAgLy8gICAgICAgICAgICAgIGludHJvZHVjaW5nIGRpc2NvbnRpbnVpdGllcyBpbiB0aGUgb3V0cHV0LiBPdGhlcndpc2UsCisgICAgLy8gICAgICAgICAgICAgIHRyYW5zaXRpb25zIGltbWVkaWF0ZWx5LgorICAgIHZvaWQgZW5hYmxlKGJvb2wgaW1tZWRpYXRlID0gZmFsc2UpOworCisgICAgLy8gRGlzYWJsZXMgKGJ5cGFzc2VzKSB0aGUgZmlsdGVyLgorICAgIC8vIGltbWVkaWF0ZSAgICBJZiB0cnVlLCB0cmFuc2l0aW9ucyB0byBuZXcgc3RhdGUgc21vb3RobHksIHdpdGhvdXQKKyAgICAvLyAgICAgICAgICAgICAgaW50cm9kdWNpbmcgZGlzY29udGludWl0aWVzIGluIHRoZSBvdXRwdXQuIE90aGVyd2lzZSwKKyAgICAvLyAgICAgICAgICAgICAgdHJhbnNpdGlvbnMgaW1tZWRpYXRlbHkuCisgICAgdm9pZCBkaXNhYmxlKGJvb2wgaW1tZWRpYXRlID0gZmFsc2UpOworCitwcml2YXRlOgorICAgIC8vIEEgcHJvdG90eXBlIG9mIHRoZSBhY3R1YWwgcHJvY2Vzc2luZyBmdW5jdGlvbi4gSGFzIHRoZSBzYW1lIHNlbWFudGljcyBhcworICAgIC8vIHRoZSBwcm9jZXNzKCkgbWV0aG9kLgorICAgIHR5cGVkZWYgdm9pZCAoQXVkaW9CaXF1YWRGaWx0ZXI6Oipwcm9jZXNzX2Z1bmMpKGNvbnN0IGF1ZGlvX3NhbXBsZV90W10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9fc2FtcGxlX3RbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZnJhbWVDb3VudCk7CisKKyAgICAvLyBUaGUgbWF4aW11bSByYXRlIG9mIGNvZWZmaWNpZW50IGNoYW5nZSwgbWVhc3VyZWQgaW4gY29lZmZpY2llbnQgdW5pdHMgcGVyCisgICAgLy8gc2Vjb25kLgorICAgIHN0YXRpYyBjb25zdCBhdWRpb19jb2VmX3QgTUFYX0RFTFRBX1BFUl9TRUMgPSAyMDAwOworCisgICAgLy8gQ29lZmZpY2llbnRzIG9mIGlkZW50aXR5IHRyYW5zZm9ybWF0aW9uLgorICAgIHN0YXRpYyBjb25zdCBhdWRpb19jb2VmX3QgSURFTlRJVFlfQ09FRlNbTlVNX0NPRUZTXTsKKworICAgIC8vIEZpbHRlciBzdGF0ZS4KKyAgICBlbnVtIHN0YXRlX3QgeworICAgICAgICAvLyBCeXBhc3MuCisgICAgICAgIFNUQVRFX0JZUEFTUyA9IDB4MDEsCisgICAgICAgIC8vIEluIHRoZSBwcm9jZXNzIG9mIHNtb290aCB0cmFuc2l0aW9uIHRvIGJ5cGFzcyBzdGF0ZS4KKyAgICAgICAgU1RBVEVfVFJBTlNJVElPTl9UT19CWVBBU1MgPSAweDAyLAorICAgICAgICAvLyBJbiB0aGUgcHJvY2VzcyBvZiBzbW9vdGggdHJhbnNpdGlvbiB0byBub3JtYWwgKGVuYWJsZWQpIHN0YXRlLgorICAgICAgICBTVEFURV9UUkFOU0lUSU9OX1RPX05PUk1BTCA9IDB4MDQsCisgICAgICAgIC8vIEluIG5vcm1hbCAoZW5hYmxlZCkgc3RhdGUuCisgICAgICAgIFNUQVRFX05PUk1BTCA9IDB4MDUsCisgICAgICAgIC8vIEEgYml0LW1hc2sgZm9yIGRldGVybWluaW5nIHdoZXRoZXIgdGhlIGZpbHRlciBpcyBlbmFibGVkIG9yIGRpc2FibGVkCisgICAgICAgIC8vIGluIHRoZSBleWVzIG9mIHRoZSBjbGllbnQuCisgICAgICAgIFNUQVRFX0VOQUJMRURfTUFTSyA9IDB4MDQKKyAgICB9OworCisgICAgLy8gTnVtYmVyIG9mIGNoYW5uZWxzLgorICAgIGludCBtTnVtQ2hhbm5lbHM7CisgICAgLy8gQ3VycmVudCBzdGF0ZS4KKyAgICBzdGF0ZV90IG1TdGF0ZTsKKyAgICAvLyBNYXhpbXVtIGNvZWZmaWNpZW50IGRlbHRhIHBlciBzYW1wbGUuCisgICAgYXVkaW9fY29lZl90IG1NYXhEZWx0YTsKKworICAgIC8vIEEgYml0LW1hc2sgZGVzaWduYXRpbmcgZm9yIHdoaWNoIGNvZWZmaWNpZW50cyB0aGUgY3VycmVudCB2YWx1ZSBpcyBub3QKKyAgICAvLyBuZWNlc3NhcmlseSBpZGVudGljYWwgdG8gdGhlIHRhcmdldCB2YWx1ZSAoc2luY2Ugd2UncmUgaW4gdHJhbnNpdGlvbgorICAgIC8vIHN0YXRlKS4KKyAgICB1aW50MzJfdCBtQ29lZkRpcnR5Qml0czsKKyAgICAvLyBUaGUgY3VycmVudCBjb2VmZmljaWVudHMuCisgICAgYXVkaW9fY29lZl90IG1Db2Vmc1tOVU1fQ09FRlNdOworICAgIC8vIFRoZSB0YXJnZXQgY29lZmZpY2llbnRzLiBXaWxsIG5vdCBiZSBpZGVudGljYWwgdG8gbUNvZWZzIGlmIHdlIGFyZSBpbiBhCisgICAgLy8gdHJhbnNpdGlvbiBzdGF0ZS4KKyAgICBhdWRpb19jb2VmX3QgbVRhcmdldENvZWZzW05VTV9DT0VGU107CisKKyAgICAvLyBUaGUgZGVsYXkgbGluZXMuCisgICAgYXVkaW9fc2FtcGxlX3QgbURlbGF5c1tNQVhfQ0hBTk5FTFNdWzRdOworCisgICAgLy8gQ3VycmVudCBwcm9jZXNzaW5nIGZ1bmN0aW9uIChkZXRlcm1pbmVzIGFjY29yZGluZyB0byBjdXJyZW50IHN0YXRlIGFuZAorICAgIC8vIG51bWJlciBvZiBjaGFubmVscykuCisgICAgcHJvY2Vzc19mdW5jIG1DdXJQcm9jZXNzRnVuYzsKKworICAgIC8vIFNldHMgYSBuZXcgc3RhdGUuIFVwZGF0ZXMgdGhlIHByb2Nlc3NpbmcgZnVuY3Rpb24gYWNjb3JkaW5nbHksIGFuZCBzZXRzCisgICAgLy8gdGhlIGRpcnR5IGJpdHMgaWYgY2hhbmdpbmcgdG8gYSB0cmFuc2l0aW9uIHN0YXRlLgorICAgIHZvaWQgc2V0U3RhdGUoc3RhdGVfdCBzdGF0ZSk7CisKKyAgICAvLyBJbiBhIHRyYW5zaXRpb24gc3RhdGUsIG1vZGlmaWVzIHRoZSBjdXJyZW50IGNvZWZzIHRvd2FyZHMgdGhlIHBhc3NlZAorICAgIC8vIGNvZWZzLCB3aGlsZSBrZWVwaW5nIGEgc21vb3RoIGNoYW5nZSByYXRlLiBXaGVuZXZlciBhIGNvZWYgcmVhY2hlcyBpdHMKKyAgICAvLyB0YXJnZXQgdmFsdWUsIHRoZSBkaXJ0eSBiaXQgaXMgY2xlYXJlZC4gSWYgYWxsIGFyZSBjbGVhciwgdGhlIGZ1bmN0aW9uCisgICAgLy8gcmV0dXJucyB0cnVlLCBhbmQgd2UgY2FuIHRoZW4gY2hhbmdlIHRvIG91ciB0YXJnZXQgc3RhdGUuCisgICAgYm9vbCB1cGRhdGVDb2Vmcyhjb25zdCBhdWRpb19jb2VmX3QgY29lZnNbTlVNX0NPRUZTXSwgaW50IGZyYW1lQ291bnQpOworCisgICAgLy8gUHJvY2Vzc2luZyBmdW5jdGlvbiB3aGVuIGluIGRpc2FibGVkIHN0YXRlLgorICAgIHZvaWQgcHJvY2Vzc19ieXBhc3MoY29uc3QgYXVkaW9fc2FtcGxlX3QgKiBpbiwgYXVkaW9fc2FtcGxlX3QgKiBvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZnJhbWVDb3VudCk7CisgICAgLy8gUHJvY2Vzc2luZyBmdW5jdGlvbiB3aGVuIGluIG5vcm1hbCBzdGF0ZSwgbW9uby4KKyAgICB2b2lkIHByb2Nlc3Nfbm9ybWFsX21vbm8oY29uc3QgYXVkaW9fc2FtcGxlX3QgKiBpbiwgYXVkaW9fc2FtcGxlX3QgKiBvdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmcmFtZUNvdW50KTsKKyAgICAvLyBQcm9jZXNzaW5nIGZ1bmN0aW9uIHdoZW4gdHJhbnNpdGlvbmluZyB0byBub3JtYWwgc3RhdGUsIG1vbm8uCisgICAgdm9pZCBwcm9jZXNzX3RyYW5zaXRpb25fbm9ybWFsX21vbm8oY29uc3QgYXVkaW9fc2FtcGxlX3QgKiBpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19zYW1wbGVfdCAqIG91dCwgaW50IGZyYW1lQ291bnQpOworICAgIC8vIFByb2Nlc3NpbmcgZnVuY3Rpb24gd2hlbiB0cmFuc2l0aW9uaW5nIHRvIGJ5cGFzcyBzdGF0ZSwgbW9uby4KKyAgICB2b2lkIHByb2Nlc3NfdHJhbnNpdGlvbl9ieXBhc3NfbW9ubyhjb25zdCBhdWRpb19zYW1wbGVfdCAqIGluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX3NhbXBsZV90ICogb3V0LCBpbnQgZnJhbWVDb3VudCk7CisgICAgLy8gUHJvY2Vzc2luZyBmdW5jdGlvbiB3aGVuIGluIG5vcm1hbCBzdGF0ZSwgbXVsdGktY2hhbm5lbC4KKyAgICB2b2lkIHByb2Nlc3Nfbm9ybWFsX211bHRpKGNvbnN0IGF1ZGlvX3NhbXBsZV90ICogaW4sIGF1ZGlvX3NhbXBsZV90ICogb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZyYW1lQ291bnQpOworICAgIC8vIFByb2Nlc3NpbmcgZnVuY3Rpb24gd2hlbiB0cmFuc2l0aW9uaW5nIHRvIG5vcm1hbCBzdGF0ZSwgbXVsdGktY2hhbm5lbC4KKyAgICB2b2lkIHByb2Nlc3NfdHJhbnNpdGlvbl9ub3JtYWxfbXVsdGkoY29uc3QgYXVkaW9fc2FtcGxlX3QgKiBpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9fc2FtcGxlX3QgKiBvdXQsIGludCBmcmFtZUNvdW50KTsKKyAgICAvLyBQcm9jZXNzaW5nIGZ1bmN0aW9uIHdoZW4gdHJhbnNpdGlvbmluZyB0byBieXBhc3Mgc3RhdGUsIG11bHRpLWNoYW5uZWwuCisgICAgdm9pZCBwcm9jZXNzX3RyYW5zaXRpb25fYnlwYXNzX211bHRpKGNvbnN0IGF1ZGlvX3NhbXBsZV90ICogaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX3NhbXBsZV90ICogb3V0LCBpbnQgZnJhbWVDb3VudCk7Cit9OworfQorCisjZW5kaWYgLy8gQU5EUk9JRF9BVURJT19CSVFVQURfRklMVEVSX0gKZGlmZiAtLWdpdCBhL21lZGlhL2xpYmVmZmVjdHMvQXVkaW9Db2VmSW50ZXJwb2xhdG9yLmNwcCBiL21lZGlhL2xpYmVmZmVjdHMvQXVkaW9Db2VmSW50ZXJwb2xhdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzlhYjlmCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGliZWZmZWN0cy9BdWRpb0NvZWZJbnRlcnBvbGF0b3IuY3BwCkBAIC0wLDAgKzEsODQgQEAKKy8qIC8vZGV2aWNlL3NlcnZlcnMvQXVkaW9GbGluZ2VyL0F1ZGlvQ29lZkludGVycG9sYXRvci5jcHAKKyAqKgorICoqIENvcHlyaWdodCAyMDA4LCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKioKKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKioKKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKioKKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgIkF1ZGlvQ29lZkludGVycG9sYXRvci5oIgorCisjZGVmaW5lIExJS0VMWSggZXhwICkgICAgICAgKF9fYnVpbHRpbl9leHBlY3QoIChleHApICE9IDAsIHRydWUgICkpCisjZGVmaW5lIFVOTElLRUxZKCBleHAgKSAgICAgKF9fYnVpbHRpbl9leHBlY3QoIChleHApICE9IDAsIGZhbHNlICkpCisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworQXVkaW9Db2VmSW50ZXJwb2xhdG9yOjpBdWRpb0NvZWZJbnRlcnBvbGF0b3Ioc2l6ZV90IG5JbkRpbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzaXplX3QgaW5EaW1zW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3Qgbk91dERpbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBhdWRpb19jb2VmX3QgKiB0YWJsZSkgeworICAgIG1OdW1JbkRpbXMgPSBuSW5EaW1zOworICAgIG1lbWNweShtSW5EaW1zLCBpbkRpbXMsIG5JbkRpbXMgKiBzaXplb2Yoc2l6ZV90KSk7CisgICAgbU51bU91dERpbXMgPSBuT3V0RGltczsKKyAgICBtVGFibGUgPSB0YWJsZTsKKyAgICAvLyBJbml0aWFsaXplIG9mZnNldHMgYXJyYXkKKyAgICBzaXplX3QgZGltID0gbkluRGltcyAtIDE7CisgICAgbUluRGltT2Zmc2V0c1tuSW5EaW1zIC0gMV0gPSBuT3V0RGltczsKKyAgICB3aGlsZSAoZGltLS0gPiAwKSB7CisgICAgICAgIG1JbkRpbU9mZnNldHNbZGltXSA9IG1JbkRpbU9mZnNldHNbZGltICsgMV0gKiBtSW5EaW1zW2RpbSArIDFdOworICAgIH0KK30KKwordm9pZCBBdWRpb0NvZWZJbnRlcnBvbGF0b3I6OmdldENvZWYoY29uc3QgaW50IGludENvb3JkW10sIHVpbnQzMl90IGZyYWNDb29yZFtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXVkaW9fY29lZl90IG91dFtdKSB7CisgICAgc2l6ZV90IGluZGV4ID0gMDsKKyAgICBzaXplX3QgZGltID0gbU51bUluRGltczsKKyAgICB3aGlsZSAoZGltLS0gPiAwKSB7CisgICAgICAgIGlmIChVTkxJS0VMWShpbnRDb29yZFtkaW1dIDwgMCkpIHsKKyAgICAgICAgICAgIGZyYWNDb29yZFtkaW1dID0gMDsKKyAgICAgICAgfSBlbHNlIGlmIChVTkxJS0VMWShpbnRDb29yZFtkaW1dID49IChpbnQpbUluRGltc1tkaW1dIC0gMSkpIHsKKyAgICAgICAgICAgIGZyYWNDb29yZFtkaW1dID0gMDsKKyAgICAgICAgICAgIGluZGV4ICs9IG1JbkRpbU9mZnNldHNbZGltXSAqIChtSW5EaW1zW2RpbV0gLSAxKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGluZGV4ICs9IG1JbkRpbU9mZnNldHNbZGltXSAqIGludENvb3JkW2RpbV07CisgICAgICAgIH0KKyAgICB9CisgICAgZ2V0Q29lZlJlY3Vyc2UoaW5kZXgsIGZyYWNDb29yZCwgb3V0LCAwKTsKK30KKwordm9pZCBBdWRpb0NvZWZJbnRlcnBvbGF0b3I6OmdldENvZWZSZWN1cnNlKHNpemVfdCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB1aW50MzJfdCBmcmFjQ29vcmRbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19jb2VmX3Qgb3V0W10sIHNpemVfdCBkaW0pIHsKKyAgICBpZiAoZGltID09IG1OdW1JbkRpbXMpIHsKKyAgICAgICAgbWVtY3B5KG91dCwgbVRhYmxlICsgaW5kZXgsIG1OdW1PdXREaW1zICogc2l6ZW9mKGF1ZGlvX2NvZWZfdCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIGdldENvZWZSZWN1cnNlKGluZGV4LCBmcmFjQ29vcmQsIG91dCwgZGltICsgMSk7CisgICAgICAgIGlmIChMSUtFTFkoZnJhY0Nvb3JkICE9IDApKSB7CisgICAgICAgICAgIGF1ZGlvX2NvZWZfdCB0ZW1wQ29lZltNQVhfT1VUX0RJTVNdOworICAgICAgICAgICBnZXRDb2VmUmVjdXJzZShpbmRleCArIG1JbkRpbU9mZnNldHNbZGltXSwgZnJhY0Nvb3JkLCB0ZW1wQ29lZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpbSArIDEpOworICAgICAgICAgICAgc2l6ZV90IGQgPSBtTnVtT3V0RGltczsKKyAgICAgICAgICAgIHdoaWxlIChkLS0gPiAwKSB7CisgICAgICAgICAgICAgICAgb3V0W2RdID0gaW50ZXJwKG91dFtkXSwgdGVtcENvZWZbZF0sIGZyYWNDb29yZFtkaW1dKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKworYXVkaW9fY29lZl90IEF1ZGlvQ29lZkludGVycG9sYXRvcjo6aW50ZXJwKGF1ZGlvX2NvZWZfdCBsbywgYXVkaW9fY29lZl90IGhpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZyYWMpIHsKKyAgICBpbnQ2NF90IGRlbHRhID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4oaGktbG8pICogZnJhYzsKKyAgICByZXR1cm4gbG8gKyBzdGF0aWNfY2FzdDxhdWRpb19jb2VmX3Q+IChkZWx0YSA+PiAzMik7Cit9CisKK30KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmVmZmVjdHMvQXVkaW9Db2VmSW50ZXJwb2xhdG9yLmggYi9tZWRpYS9saWJlZmZlY3RzL0F1ZGlvQ29lZkludGVycG9sYXRvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzZTU2OTcKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJlZmZlY3RzL0F1ZGlvQ29lZkludGVycG9sYXRvci5oCkBAIC0wLDAgKzEsOTggQEAKKy8qIC8vZGV2aWNlL2luY2x1ZGUvc2VydmVyL0F1ZGlvRmxpbmdlci9BdWRpb0NvZWZJbnRlcnBvbGF0b3IuaAorICoqCisgKiogQ29weXJpZ2h0IDIwMDcsIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqKgorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqKgorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqKgorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIEFORFJPSURfQVVESU9fQ09FRl9JTlRFUlBPTEFUT1JfSAorI2RlZmluZSBBTkRST0lEX0FVRElPX0NPRUZfSU5URVJQT0xBVE9SX0gKKworI2luY2x1ZGUgIkF1ZGlvQ29tbW9uLmgiCisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworLy8gQSBoZWxwZXIgY2xhc3MgZm9yIGxpbmVhciBpbnRlcnBvbGF0aW9uIG9mIE4tRCAtPiBNLUQgY29lZmZpY2llbnQgdGFibGVzLgorLy8gVGhpcyBjbGFzcyBwcm92aWRlcyBzdXBwb3J0IGZvciBvdXQtb2YtcmFuZ2UgaW5kZXhlcy4KKy8vIERldGFpbHM6CisvLyBUaGUgcHVycG9zZSBpcyBlZmZpY2llbnQgYXBwcm94aW1hdGlvbiBvZiBhIE4tZGltZW5zaW9uYWwgdmVjdG9yIHRvCisvLyBNLWRpbWVuc2lvbmFsIGZ1bmN0aW9uLiBUaGUgYXBwcm94aW1hdGlvbiBpcyBiYXNlZCBvbiBhIHRhYmxlIG9mIG91dHB1dAorLy8gdmFsdWVzIG9uIGEgdW5pZm9ybSBncmlkIG9mIHRoZSBpbnB1dCB2YWx1ZXMuIFZhbHVlcyBub3Qgb24gdGhlIGdyaWQgYXJlCisvLyBsaW5lYXJseSBpbnRlcnBvbGF0ZWQuCisvLyBBY2Nlc3MgdG8gdmFsdWVzIGFyZSBkb25lIGJ5IHNwZWNpZnlpbmcgaW5wdXQgdmFsdWVzIGluIHRhYmxlIGluZGV4IHVuaXRzLAorLy8gaGF2aW5nIGFuIGludGVnZXIgYW5kIGEgZnJhY3Rpb25hbCBwYXJ0LCBlLmcuIHJldHJpZXZpbmcgYSB2YWx1ZSBmcm9tIGluZGV4CisvLyAxLjQgd2lsbCByZXN1bHQgaW4gbGluZWFyIGludGVycG9sYXRpb24gYmV0d2VlbiBpbmRleCAxIGFuZCBpbmRleCAyLgorY2xhc3MgQXVkaW9Db2VmSW50ZXJwb2xhdG9yIHsKK3B1YmxpYzoKKyAgICAvLyBDb25zdHJ1Y3Rvci4KKyAgICAvLyBuSW5EaW1zICAgICAgTnVtYmVyIG9mIGlucHV0IGRpbWVuc2lvbnMgKGxpbWl0ZWQgdG8gTUFYX0lOX0RJTVMpLgorICAgIC8vIGluRGltcyAgICAgICBBbiBhcnJheSBvZiBzaXplIG5JbkRpbXMgd2l0aCB0aGUgc2l6ZSBvZiB0aGUgdGFibGUgb24gZWFjaAorICAgIC8vICAgICAgICAgICAgICByZXNwZWN0aXZlIGRpbWVuc2lvbi4KKyAgICAvLyBuT3V0RGltcyAgICAgTnVtYmVyIG9mIG91dHB1dCBkaW1lbnNpb25zIChsaW1pdGVkIHRvIE1BWF9PVVRfRElNUykuCisgICAgLy8gdGFibGUgICAgICAgIFRoZSBjb2VmZmljaWVudCB0YWJsZS4gU2hvdWxkIGJlIG9mIHNpemU6CisgICAgLy8gICAgICAgICAgICAgIGluRGltc1swXSppbkRpbXNbMV0qLi4uKmluRGltc1tuSW5EaW1zLTFdKm5PdXREaW1zLCB3aGVyZQorICAgIC8vICAgICAgICAgICAgICBmdW5jKFtpLGosa10pID0gdGFibGUoaSxqLGssOikKKyAgICBBdWRpb0NvZWZJbnRlcnBvbGF0b3Ioc2l6ZV90IG5JbkRpbXMsIGNvbnN0IHNpemVfdCBpbkRpbXNbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG5PdXREaW1zLCBjb25zdCBhdWRpb19jb2VmX3QgKiB0YWJsZSk7CisKKyAgICAvLyBHZXQgdGhlIHZhbHVlIG9mIHRoZSBhcHByb3hpbWF0ZWQgZnVuY3Rpb24gYXQgYSBnaXZlbiBwb2ludC4KKyAgICAvLyBpbnRDb29yZCAgICAgVGhlIGludGVnZXIgcGFydCBvZiB0aGUgaW5wdXQgdmFsdWUuIFNob3VsZCBiZSBhbiBhcnJheSBvZgorICAgIC8vICAgICAgICAgICAgICBzaXplIG5JbkRpbXMuCisgICAgLy8gZnJhY0Nvb3JkICAgIFRoZSBmcmFjdGlvbmFsIHBhcnQgb2YgdGhlIGlucHV0IHZhbHVlLiBTaG91bGQgYmUgYW4gYXJyYXkKKyAgICAvLyAgICAgICAgICAgICAgb2Ygc2l6ZSBuSW5EaW1zLiBUaGlzIHZhbHVlIGlzIGluIDMyLWJpdCBwcmVjaXNpb24uCisgICAgLy8gb3V0ICAgICAgICAgIEFuIGFycmF5IGZvciB0aGUgb3V0cHV0IHZhbHVlLiBTaG91bGQgYmUgb2Ygc2l6ZSBuT3V0RGltcy4KKyAgICB2b2lkIGdldENvZWYoY29uc3QgaW50IGludENvb3JkW10sIHVpbnQzMl90IGZyYWNDb29yZFtdLCBhdWRpb19jb2VmX3Qgb3V0W10pOworCitwcml2YXRlOgorICAgIC8vIE1heGltdW0gYWxsb3dlZCBudW1iZXIgb2YgaW5wdXQgZGltZW5zaW9ucy4KKyAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IE1BWF9JTl9ESU1TID0gODsKKyAgICAvLyBNYXhpbXVtIGFsbG93ZWQgbnVtYmVyIG9mIG91dHB1dCBkaW1lbnNpb25zLgorICAgIHN0YXRpYyBjb25zdCBzaXplX3QgTUFYX09VVF9ESU1TID0gODsKKworICAgIC8vIE51bWJlciBvZiBpbnB1dCBkaW1lbnNpb25zLgorICAgIHNpemVfdCBtTnVtSW5EaW1zOworICAgIC8vIE51bWJlciBvZiBpbnB1dCBkaW1lbnNpb25zLgorICAgIHNpemVfdCBtSW5EaW1zW01BWF9JTl9ESU1TXTsKKyAgICAvLyBUaGUgb2Zmc2V0IGJldHdlZW4gdHdvIGNvbnNlY3V0aXZlIGluZGV4ZXMgb2YgZWFjaCBkaW1lbnNpb24uIFRoaXMgaXMgaW4KKyAgICAvLyBmYWN0IGEgY3VtdWxhdGl2ZSBwcm9kdWN0IG9mIG1JbkRpbXMgKGRvbmUgaW4gcmV2ZXJzZSkuCisgICAgc2l6ZV90IG1JbkRpbU9mZnNldHNbTUFYX0lOX0RJTVNdOworICAgIC8vIE51bWJlciBvZiBvdXRwdXQgZGltZW5zaW9ucy4KKyAgICBzaXplX3QgbU51bU91dERpbXM7CisgICAgLy8gVGhlIGNvZWZmaWNpZW50IHRhYmxlLgorICAgIGNvbnN0IGF1ZGlvX2NvZWZfdCAqIG1UYWJsZTsKKworICAgIC8vIEEgcmVjdXJzaXZlIGZ1bmN0aW9uIGZvciBnZXR0aW5nIGFuIGludGVycG9sYXRlZCBjb2VmZmljaWVudCB2YWx1ZS4KKyAgICAvLyBUaGUgcmVjdXJzaW9uIGRlcHRoIGlzIHRoZSBudW1iZXIgb2YgaW5wdXQgZGltZW5zaW9ucy4KKyAgICAvLyBBdCBlYWNoIHN0ZXAsIHdlIGZldGNoIHR3byBpbnRlcnBvbGF0ZWQgdmFsdWVzIG9mIHRoZSBjdXJyZW50IGRpbWVuc2lvbiwKKyAgICAvLyBieSB0d28gcmVjdXJzaXZlIGNhbGxzIHRvIHRoaXMgbWV0aG9kIGZvciB0aGUgbmV4dCBkaW1lbnNpb25zLiBXZSB0aGVuCisgICAgLy8gbGluZWFybHkgaW50ZXJwb2xhdGUgdGhlc2UgdmFsdWVzIG92ZXIgdGhlIGN1cnJlbnQgZGltZW5zaW9uLgorICAgIC8vIGluZGV4ICAgICAgVGhlIGxpbmVhciBpbnRlZ2VyIGluZGV4IG9mIHRoZSB2YWx1ZSB3ZSBuZWVkIHRvIGludGVycG9sYXRlLgorICAgIC8vIGZyYWNDb29yZCAgQSB2ZWN0b3Igb2YgZnJhY3Rpb25hbCBjb29yZGluYXRlcyBmb3IgZWFjaCBvZiB0aGUgaW5wdXQKKyAgICAvLyAgICAgICAgICAgIGRpbWVuc2lvbnMuCisgICAgLy8gb3V0ICAgICAgICBXaGVyZSB0aGUgb3V0cHV0IHNob3VsZCBiZSB3cml0dGVuLiBOZWVkcyB0byBiZSBvZiBzaXplCisgICAgLy8gICAgICAgICAgICBtTnVtT3V0RGltcy4KKyAgICAvLyBkaW0gICAgICAgIFRoZSBpbnB1dCBkaW1lbnNpb25zIHdlIGFyZSBjdXJyZW50bHkgaW50ZXJwb2xhdGluZy4gVGhpcworICAgIC8vICAgICAgICAgICAgdmFsdWUgd2lsbCBiZSBpbmNyZWFzZWQgb24gcmVjdXJzaXZlIGNhbGxzLgorICAgIHZvaWQgZ2V0Q29lZlJlY3Vyc2Uoc2l6ZV90IGluZGV4LCBjb25zdCB1aW50MzJfdCBmcmFjQ29vcmRbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvX2NvZWZfdCBvdXRbXSwgc2l6ZV90IGRpbSk7CisKKyAgICAvLyBTY2FsYXIgaW50ZXJwb2xhdGlvbiBvZiB0d28gZGF0YSBwb2ludHMuCisgICAgLy8gbG8gICAgICAgVGhlIGZpcnN0IGRhdGEgcG9pbnQuCisgICAgLy8gaGkgICAgICAgVGhlIHNlY29uZCBkYXRhIHBvaW50LgorICAgIC8vIGZyYWMgICAgIEEgMzItYml0IGZyYWN0aW9uIGRlc2lnbmF0aW5nIHRoZSB3ZWlnaHQgb2YgdGhlIHNlY29uZCBwb2ludC4KKyAgICBzdGF0aWMgYXVkaW9fY29lZl90IGludGVycChhdWRpb19jb2VmX3QgbG8sIGF1ZGlvX2NvZWZfdCBoaSwgdWludDMyX3QgZnJhYyk7Cit9OworCit9CisKKyNlbmRpZiAvLyBBTkRST0lEX0FVRElPX0NPRUZfSU5URVJQT0xBVE9SX0gKZGlmZiAtLWdpdCBhL21lZGlhL2xpYmVmZmVjdHMvQXVkaW9Db21tb24uaCBiL21lZGlhL2xpYmVmZmVjdHMvQXVkaW9Db21tb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDRmOTNhCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGliZWZmZWN0cy9BdWRpb0NvbW1vbi5oCkBAIC0wLDAgKzEsOTIgQEAKKy8qCisqKgorKiogQ29weXJpZ2h0IDIwMDksIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyoqCisqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorKioKKyoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyoqCisqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyovCisKKyNpZm5kZWYgQU5EUk9JRF9BVURJT19DT01NT05fSAorI2RlZmluZSBBTkRST0lEX0FVRElPX0NPTU1PTl9ICisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzdGRkZWYuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCisvLyBBdWRpbyBjb2VmZmljaWVudCB0eXBlLgordHlwZWRlZiBpbnQzMl90IGF1ZGlvX2NvZWZfdDsKKy8vIEF1ZGlvIHNhbXBsZSB0eXBlLgordHlwZWRlZiBpbnQzMl90IGF1ZGlvX3NhbXBsZV90OworLy8gQWNjdW11bGF0b3IgdHlwZSBmb3IgY29lZiB4IHNhbXBsZS4KK3R5cGVkZWYgaW50NjRfdCBhdWRpb19jb2VmX3NhbXBsZV9hY2NfdDsKKworLy8gTnVtYmVyIG9mIGZyYWN0aW9uIGJpdHMgZm9yIGF1ZGlvIGNvZWZmaWNpZW50Lgorc3RhdGljIGNvbnN0IGludCBBVURJT19DT0VGX1BSRUNJU0lPTiA9IDI0OworLy8gQXVkaW8gY29lZmZpY2llbnQgd2l0aCB0aGUgdmFsdWUgb2YgMS4wCitzdGF0aWMgY29uc3QgYXVkaW9fY29lZl90IEFVRElPX0NPRUZfT05FID0gMSA8PCBBVURJT19DT0VGX1BSRUNJU0lPTjsKKy8vIEF1ZGlvIGNvZWZmaWNpZW50IHdpdGggdGhlIHZhbHVlIG9mIDAuNQorc3RhdGljIGNvbnN0IGF1ZGlvX2NvZWZfdCBBVURJT19DT0VGX0hBTEYgPSAxIDw8IChBVURJT19DT0VGX1BSRUNJU0lPTiAtIDEpOworLy8gTnVtYmVyIG9mIGZyYWN0aW9uIGJpdHMgZm9yIGF1ZGlvIHNhbXBsZS4KK3N0YXRpYyBjb25zdCBpbnQgQVVESU9fU0FNUExFX1BSRUNJU0lPTiA9IDI0OworLy8gQXVkaW8gc2FtcGxlIHdpdGggdGhlIHZhbHVlIG9mIDEuMAorc3RhdGljIGNvbnN0IGF1ZGlvX3NhbXBsZV90IEFVRElPX1NBTVBMRV9PTkUgPSAxIDw8IEFVRElPX1NBTVBMRV9QUkVDSVNJT047CisKKy8vIFRPRE86IFRoZXNlIGFyZSBqdXN0IHRlbXBvcmFyeSBuYWl2ZSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIG5lY2Vzc2FyeQorLy8gYXJpdGhtZXRpYyBvcGVyYXRpb25zIG5lZWRlZCBmb3IgdGhlIGZpbHRlci4gVGhleSBzaG91bGQgYmUgbW92ZWQgdG8gYSBtb3JlCisvLyBnZW5lcmljIGxvY2F0aW9uIGFuZCBpbXBsZW1lbnRlZCBtb3JlIGVmZmljaWVudGx5LgorCisvLyBNdWx0aXBseSBhIHNhbXBsZSBieSBhIGNvZWZmaWNpZW50IHRvIHJldHVybiBhbiBhY2N1bXVsYXRvci4KK2lubGluZSBhdWRpb19jb2VmX3NhbXBsZV9hY2NfdCBtdWxfY29lZl9zYW1wbGUoYXVkaW9fY29lZl90IHgsIGF1ZGlvX3NhbXBsZV90IHkpIHsKKyAgICByZXR1cm4gKChhdWRpb19jb2VmX3NhbXBsZV9hY2NfdCkgKHgpKSAqIHk7Cit9CisKKy8vIE11bHRpcGx5IGFuZCBhY2N1bXVsYXRlIHNhbXBsZSBieSBhIGNvZWZmaWNpZW50IHRvIHJldHVybiBhbiBhY2N1bXVsYXRvci4KK2lubGluZSBhdWRpb19jb2VmX3NhbXBsZV9hY2NfdCBtYWNfY29lZl9zYW1wbGUoYXVkaW9fY29lZl90IHgsIGF1ZGlvX3NhbXBsZV90IHksIGF1ZGlvX2NvZWZfc2FtcGxlX2FjY190IGFjYykgeworICAgIHJldHVybiBhY2MgKyAoKGF1ZGlvX2NvZWZfc2FtcGxlX2FjY190KSAoeCkpICogeTsKK30KKworLy8gQ29udmVydCBhIHNhbXBsZS1jb2VmZmljaWVudCBhY2N1bXVsYXRvciB0byBhIHNhbXBsZS4KK2lubGluZSBhdWRpb19zYW1wbGVfdCBjb2VmX3NhbXBsZV9hY2NfdG9fc2FtcGxlKGF1ZGlvX2NvZWZfc2FtcGxlX2FjY190IGFjYykgeworICAgIGlmIChhY2MgPCAwKSB7CisgICAgICAgIGFjYyArPSBBVURJT19DT0VGX09ORSAtIDE7CisgICAgfQorICAgIHJldHVybiAoYXVkaW9fc2FtcGxlX3QpIChhY2MgPj4gQVVESU9fQ09FRl9QUkVDSVNJT04pOworfQorCisvLyBDb252ZXJ0IGEgUzE1IHNhbXBsZSB0byBhdWRpb19zYW1wbGVfdAoraW5saW5lIGF1ZGlvX3NhbXBsZV90IHMxNV90b19hdWRpb19zYW1wbGVfdChpbnQxNl90IHMxNSkgeworICAgIHJldHVybiBhdWRpb19zYW1wbGVfdChzMTUpIDw8IDk7Cit9CisKKy8vIENvbnZlcnQgYSBhdWRpb19zYW1wbGVfdCBzYW1wbGUgdG8gUzE1IChubyBjbGlwcGluZykKK2lubGluZSBpbnQxNl90IGF1ZGlvX3NhbXBsZV90X3RvX3MxNShhdWRpb19zYW1wbGVfdCBzYW1wbGUpIHsKKyAgICByZXR1cm4gaW50MTZfdCgoc2FtcGxlICsgKDEgPDwgOCkpID4+IDkpOworfQorCisvLyBDb252ZXJ0IGEgYXVkaW9fc2FtcGxlX3Qgc2FtcGxlIHRvIFMxNSAod2l0aCBjbGlwcGluZykKK2lubGluZSBpbnQxNl90IGF1ZGlvX3NhbXBsZV90X3RvX3MxNV9jbGlwKGF1ZGlvX3NhbXBsZV90IHNhbXBsZSkgeworICAgIC8vIFRPRE86IG9wdGltaXplIGZvciB0YXJnZXRzIHN1cHBvcnRpbmcgdGhpcyBhcyBhbiBhdG9taWMgb3BlcmF0aW9uLgorICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0KHNhbXBsZSA+PSAoMHg3RkZGIDw8IDkpLCAwKSkgeworICAgICAgICByZXR1cm4gMHg3RkZGOworICAgIH0gZWxzZSBpZiAoX19idWlsdGluX2V4cGVjdChzYW1wbGUgPD0gLSgweDgwMDAgPDwgOSksIDApKSB7CisgICAgICAgIHJldHVybiAweDgwMDA7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIGF1ZGlvX3NhbXBsZV90X3RvX3MxNShzYW1wbGUpOworICAgIH0KK30KKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworfQorCisjZW5kaWYgLy8gQU5EUk9JRF9BVURJT19DT01NT05fSApkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZWZmZWN0cy9BdWRpb0VxdWFsaXplci5jcHAgYi9tZWRpYS9saWJlZmZlY3RzL0F1ZGlvRXF1YWxpemVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NGM5NDc2Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGliZWZmZWN0cy9BdWRpb0VxdWFsaXplci5jcHAKQEAgLTAsMCArMSwzMTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwOSwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNkZWZpbmUgTE9HX1RBRyAiQXVkaW9FcXVhbGl6ZXIiCisKKyNpbmNsdWRlIDxhc3NlcnQuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxuZXc+CisjaW5jbHVkZSA8dXRpbHMvTG9nLmg+CisKKyNpbmNsdWRlICJBdWRpb0VxdWFsaXplci5oIgorI2luY2x1ZGUgIkF1ZGlvUGVha2luZ0ZpbHRlci5oIgorI2luY2x1ZGUgIkF1ZGlvU2hlbHZpbmdGaWx0ZXIuaCIKKyNpbmNsdWRlICJFZmZlY3RzTWF0aC5oIgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK3NpemVfdCBBdWRpb0VxdWFsaXplcjo6R2V0SW5zdGFuY2VTaXplKGludCBuQmFuZHMpIHsKKyAgICBhc3NlcnQobkJhbmRzID49IDIpOworICAgIHJldHVybiBzaXplb2YoQXVkaW9FcXVhbGl6ZXIpICsKKyAgICAgICAgICAgc2l6ZW9mKEF1ZGlvU2hlbHZpbmdGaWx0ZXIpICogMiArCisgICAgICAgICAgIHNpemVvZihBdWRpb1BlYWtpbmdGaWx0ZXIpICogKG5CYW5kcyAtIDIpOworfQorCitBdWRpb0VxdWFsaXplciAqIEF1ZGlvRXF1YWxpemVyOjpDcmVhdGVJbnN0YW5jZSh2b2lkICogcE1lbSwgaW50IG5CYW5kcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBuQ2hhbm5lbHMsIGludCBzYW1wbGVSYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUHJlc2V0Q29uZmlnICogcHJlc2V0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBuUHJlc2V0cykgeworICAgIExPR1YoIkF1ZGlvRXF1YWxpemVyOjpDcmVhdGVJbnN0YW5jZShwTWVtPSVwLCBuQmFuZHM9JWQsIG5DaGFubmVscz0lZCwgIgorICAgICAgICAgInNhbXBsZVJhdGU9JWQsIG5QcmVzZXRzPSVkKSIsCisgICAgICAgICBwTWVtLCBuQmFuZHMsIG5DaGFubmVscywgc2FtcGxlUmF0ZSwgblByZXNldHMpOworICAgIGFzc2VydChuQmFuZHMgPj0gMik7CisgICAgYm9vbCBvd25NZW0gPSBmYWxzZTsKKyAgICBpZiAocE1lbSA9PSBOVUxMKSB7CisgICAgICAgIHBNZW0gPSBtYWxsb2MoR2V0SW5zdGFuY2VTaXplKG5CYW5kcykpOworICAgICAgICBpZiAocE1lbSA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBvd25NZW0gPSB0cnVlOworICAgIH0KKyAgICByZXR1cm4gbmV3IChwTWVtKSBBdWRpb0VxdWFsaXplcihwTWVtLCBuQmFuZHMsIG5DaGFubmVscywgc2FtcGxlUmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvd25NZW0sIHByZXNldHMsIG5QcmVzZXRzKTsKK30KKwordm9pZCBBdWRpb0VxdWFsaXplcjo6Y29uZmlndXJlKGludCBuQ2hhbm5lbHMsIGludCBzYW1wbGVSYXRlKSB7CisgICAgTE9HVigiQXVkaW9FcXVhbGl6ZXI6OmNvbmZpZ3VyZShuQ2hhbm5lbHM9JWQsIHNhbXBsZVJhdGU9JWQpIiwgbkNoYW5uZWxzLAorICAgICAgICAgc2FtcGxlUmF0ZSk7CisgICAgbXBMb3dTaGVsZi0+Y29uZmlndXJlKG5DaGFubmVscywgc2FtcGxlUmF0ZSk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtTnVtUGVha2luZzsgKytpKSB7CisgICAgICAgIG1wUGVha2luZ0ZpbHRlcnNbaV0uY29uZmlndXJlKG5DaGFubmVscywgc2FtcGxlUmF0ZSk7CisgICAgfQorICAgIG1wSGlnaFNoZWxmLT5jb25maWd1cmUobkNoYW5uZWxzLCBzYW1wbGVSYXRlKTsKK30KKwordm9pZCBBdWRpb0VxdWFsaXplcjo6Y2xlYXIoKSB7CisgICAgTE9HVigiQXVkaW9FcXVhbGl6ZXI6OmNsZWFyKCkiKTsKKyAgICBtcExvd1NoZWxmLT5jbGVhcigpOworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbU51bVBlYWtpbmc7ICsraSkgeworICAgICAgICBtcFBlYWtpbmdGaWx0ZXJzW2ldLmNsZWFyKCk7CisgICAgfQorICAgIG1wSGlnaFNoZWxmLT5jbGVhcigpOworfQorCit2b2lkIEF1ZGlvRXF1YWxpemVyOjpmcmVlKCkgeworICAgIExPR1YoIkF1ZGlvRXF1YWxpemVyOjpmcmVlKCkiKTsKKyAgICBpZiAobXBNZW0gIT0gTlVMTCkgeworICAgICAgICA6OmZyZWUobXBNZW0pOworICAgIH0KK30KKwordm9pZCBBdWRpb0VxdWFsaXplcjo6cmVzZXQoKSB7CisgICAgTE9HVigiQXVkaW9FcXVhbGl6ZXI6OnJlc2V0KCkiKTsKKyAgICBjb25zdCBpbnQzMl90IGJvdHRvbSA9IEVmZmVjdHNfbG9nMihrTWluRnJlcSk7CisgICAgY29uc3QgaW50MzJfdCB0b3AgPSBFZmZlY3RzX2xvZzIobVNhbXBsZVJhdGUgKiA1MDApOworICAgIGNvbnN0IGludDMyX3QganVtcCA9ICh0b3AgLSBib3R0b20pIC8gKG1OdW1QZWFraW5nICsgMik7CisgICAgaW50MzJfdCBjZW50ZXJGcmVxID0gYm90dG9tICsganVtcC8yOworCisgICAgbXBMb3dTaGVsZi0+cmVzZXQoKTsKKyAgICBtcExvd1NoZWxmLT5zZXRGcmVxdWVuY3koRWZmZWN0c19leHAyKGNlbnRlckZyZXEpKTsKKyAgICBjZW50ZXJGcmVxICs9IGp1bXA7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtTnVtUGVha2luZzsgKytpKSB7CisgICAgICAgIG1wUGVha2luZ0ZpbHRlcnNbaV0ucmVzZXQoKTsKKyAgICAgICAgbXBQZWFraW5nRmlsdGVyc1tpXS5zZXRGcmVxdWVuY3koRWZmZWN0c19leHAyKGNlbnRlckZyZXEpKTsKKyAgICAgICAgY2VudGVyRnJlcSArPSBqdW1wOworICAgIH0KKyAgICBtcEhpZ2hTaGVsZi0+cmVzZXQoKTsKKyAgICBtcEhpZ2hTaGVsZi0+c2V0RnJlcXVlbmN5KEVmZmVjdHNfZXhwMihjZW50ZXJGcmVxKSk7CisgICAgY29tbWl0KHRydWUpOworICAgIG1DdXJQcmVzZXQgPSBQUkVTRVRfQ1VTVE9NOworfQorCit2b2lkIEF1ZGlvRXF1YWxpemVyOjpzZXRHYWluKGludCBiYW5kLCBpbnQzMl90IG1pbGxpYmVsKSB7CisgICAgTE9HVigiQXVkaW9FcXVhbGl6ZXI6OnNldEdhaW4oYmFuZD0lZCwgbWlsbGliZWw9JWQpIiwgYmFuZCwgbWlsbGliZWwpOworICAgIGFzc2VydChiYW5kID49IDAgJiYgYmFuZCA8IG1OdW1QZWFraW5nICsgMik7CisgICAgaWYgKGJhbmQgPT0gMCkgeworICAgICAgICBtcExvd1NoZWxmLT5zZXRHYWluKG1pbGxpYmVsKTsKKyAgICB9IGVsc2UgaWYgKGJhbmQgPT0gbU51bVBlYWtpbmcgKyAxKSB7CisgICAgICAgIG1wSGlnaFNoZWxmLT5zZXRHYWluKG1pbGxpYmVsKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtcFBlYWtpbmdGaWx0ZXJzW2JhbmQgLSAxXS5zZXRHYWluKG1pbGxpYmVsKTsKKyAgICB9CisgICAgbUN1clByZXNldCA9IFBSRVNFVF9DVVNUT007Cit9CisKK3ZvaWQgQXVkaW9FcXVhbGl6ZXI6OnNldEZyZXF1ZW5jeShpbnQgYmFuZCwgdWludDMyX3QgbWlsbGloZXJ0eikgeworICAgIExPR1YoIkF1ZGlvRXF1YWxpemVyOjpzZXRGcmVxdWVuY3koYmFuZD0lZCwgbWlsbGloZXJ0ej0lZCkiLCBiYW5kLAorICAgICAgICAgbWlsbGloZXJ0eik7CisgICAgYXNzZXJ0KGJhbmQgPj0gMCAmJiBiYW5kIDwgbU51bVBlYWtpbmcgKyAyKTsKKyAgICBpZiAoYmFuZCA9PSAwKSB7CisgICAgICAgIG1wTG93U2hlbGYtPnNldEZyZXF1ZW5jeShtaWxsaWhlcnR6KTsKKyAgICB9IGVsc2UgaWYgKGJhbmQgPT0gbU51bVBlYWtpbmcgKyAxKSB7CisgICAgICAgIG1wSGlnaFNoZWxmLT5zZXRGcmVxdWVuY3kobWlsbGloZXJ0eik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbXBQZWFraW5nRmlsdGVyc1tiYW5kIC0gMV0uc2V0RnJlcXVlbmN5KG1pbGxpaGVydHopOworICAgIH0KKyAgICBtQ3VyUHJlc2V0ID0gUFJFU0VUX0NVU1RPTTsKK30KKwordm9pZCBBdWRpb0VxdWFsaXplcjo6c2V0QmFuZHdpZHRoKGludCBiYW5kLCB1aW50MzJfdCBjZW50cykgeworICAgIExPR1YoIkF1ZGlvRXF1YWxpemVyOjpzZXRCYW5kd2lkdGgoYmFuZD0lZCwgY2VudHM9JWQpIiwgYmFuZCwgY2VudHMpOworICAgIGFzc2VydChiYW5kID49IDAgJiYgYmFuZCA8IG1OdW1QZWFraW5nICsgMik7CisgICAgaWYgKGJhbmQgPiAwICYmIGJhbmQgPCBtTnVtUGVha2luZyArIDEpIHsKKyAgICAgICAgbXBQZWFraW5nRmlsdGVyc1tiYW5kIC0gMV0uc2V0QmFuZHdpZHRoKGNlbnRzKTsKKyAgICAgICAgbUN1clByZXNldCA9IFBSRVNFVF9DVVNUT007CisgICAgfQorfQorCitpbnQzMl90IEF1ZGlvRXF1YWxpemVyOjpnZXRHYWluKGludCBiYW5kKSBjb25zdCB7CisgICAgYXNzZXJ0KGJhbmQgPj0gMCAmJiBiYW5kIDwgbU51bVBlYWtpbmcgKyAyKTsKKyAgICBpZiAoYmFuZCA9PSAwKSB7CisgICAgICAgIHJldHVybiBtcExvd1NoZWxmLT5nZXRHYWluKCk7CisgICAgfSBlbHNlIGlmIChiYW5kID09IG1OdW1QZWFraW5nICsgMSkgeworICAgICAgICByZXR1cm4gbXBIaWdoU2hlbGYtPmdldEdhaW4oKTsKKyAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gbXBQZWFraW5nRmlsdGVyc1tiYW5kIC0gMV0uZ2V0R2FpbigpOworICAgIH0KK30KKwordWludDMyX3QgQXVkaW9FcXVhbGl6ZXI6OmdldEZyZXF1ZW5jeShpbnQgYmFuZCkgY29uc3QgeworICAgIGFzc2VydChiYW5kID49IDAgJiYgYmFuZCA8IG1OdW1QZWFraW5nICsgMik7CisgICAgaWYgKGJhbmQgPT0gMCkgeworICAgICAgICByZXR1cm4gbXBMb3dTaGVsZi0+Z2V0RnJlcXVlbmN5KCk7CisgICAgfSBlbHNlIGlmIChiYW5kID09IG1OdW1QZWFraW5nICsgMSkgeworICAgICAgICByZXR1cm4gbXBIaWdoU2hlbGYtPmdldEZyZXF1ZW5jeSgpOworICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiBtcFBlYWtpbmdGaWx0ZXJzW2JhbmQgLSAxXS5nZXRGcmVxdWVuY3koKTsKKyAgICB9Cit9CisKK3VpbnQzMl90IEF1ZGlvRXF1YWxpemVyOjpnZXRCYW5kd2lkdGgoaW50IGJhbmQpIGNvbnN0IHsKKyAgICBhc3NlcnQoYmFuZCA+PSAwICYmIGJhbmQgPCBtTnVtUGVha2luZyArIDIpOworICAgIGlmIChiYW5kID09IDAgfHwgYmFuZCA9PSBtTnVtUGVha2luZyArIDEpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIG1wUGVha2luZ0ZpbHRlcnNbYmFuZCAtIDFdLmdldEJhbmR3aWR0aCgpOworICAgIH0KK30KKwordm9pZCBBdWRpb0VxdWFsaXplcjo6Z2V0QmFuZFJhbmdlKGludCBiYW5kLCB1aW50MzJfdCAmIGxvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAmIGhpZ2gpIGNvbnN0IHsKKyAgICBhc3NlcnQoYmFuZCA+PSAwICYmIGJhbmQgPCBtTnVtUGVha2luZyArIDIpOworICAgIGlmIChiYW5kID09IDApIHsKKyAgICAgICAgbG93ID0gMDsKKyAgICAgICAgaGlnaCA9IG1wTG93U2hlbGYtPmdldEZyZXF1ZW5jeSgpOworICAgIH0gZWxzZSBpZiAoYmFuZCA9PSBtTnVtUGVha2luZyArIDEpIHsKKyAgICAgICAgbG93ID0gbXBIaWdoU2hlbGYtPmdldEZyZXF1ZW5jeSgpOworICAgICAgICBoaWdoID0gbVNhbXBsZVJhdGUgKiA1MDA7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbXBQZWFraW5nRmlsdGVyc1tiYW5kIC0gMV0uZ2V0QmFuZFJhbmdlKGxvdywgaGlnaCk7CisgICAgfQorfQorCitjb25zdCBjaGFyICogQXVkaW9FcXVhbGl6ZXI6OmdldFByZXNldE5hbWUoaW50IHByZXNldCkgY29uc3QgeworICAgIGFzc2VydChwcmVzZXQgPCBtTnVtUHJlc2V0cyAmJiBwcmVzZXQgPj0gUFJFU0VUX0NVU1RPTSk7CisgICAgaWYgKHByZXNldCA9PSBQUkVTRVRfQ1VTVE9NKSB7CisgICAgICAgIHJldHVybiAiQ3VzdG9tIjsKKyAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gbXBQcmVzZXRzW3ByZXNldF0ubmFtZTsKKyAgICB9Cit9CisKK2ludCBBdWRpb0VxdWFsaXplcjo6Z2V0TnVtUHJlc2V0cygpIGNvbnN0IHsKKyAgICByZXR1cm4gbU51bVByZXNldHM7Cit9CisKK2ludCBBdWRpb0VxdWFsaXplcjo6Z2V0UHJlc2V0KCkgY29uc3QgeworICAgIHJldHVybiBtQ3VyUHJlc2V0OworfQorCit2b2lkIEF1ZGlvRXF1YWxpemVyOjpzZXRQcmVzZXQoaW50IHByZXNldCkgeworICAgIExPR1YoIkF1ZGlvRXF1YWxpemVyOjpzZXRQcmVzZXQocHJlc2V0PSVkKSIsIHByZXNldCk7CisgICAgYXNzZXJ0KHByZXNldCA8IG1OdW1QcmVzZXRzICYmIHByZXNldCA+PSAwKTsKKyAgICBjb25zdCBQcmVzZXRDb25maWcgJnByZXNldENmZyA9IG1wUHJlc2V0c1twcmVzZXRdOworICAgIGZvciAoaW50IGJhbmQgPSAwOyBiYW5kIDwgKG1OdW1QZWFraW5nICsgMik7ICsrYmFuZCkgeworICAgICAgICBjb25zdCBCYW5kQ29uZmlnICYgYmFuZENmZyA9IHByZXNldENmZy5iYW5kQ29uZmlnc1tiYW5kXTsKKyAgICAgICAgc2V0R2FpbihiYW5kLCBiYW5kQ2ZnLmdhaW4pOworICAgICAgICBzZXRGcmVxdWVuY3koYmFuZCwgYmFuZENmZy5mcmVxKTsKKyAgICAgICAgc2V0QmFuZHdpZHRoKGJhbmQsIGJhbmRDZmcuYmFuZHdpZHRoKTsKKyAgICB9CisgICAgbUN1clByZXNldCA9IHByZXNldDsKK30KKwordm9pZCBBdWRpb0VxdWFsaXplcjo6Y29tbWl0KGJvb2wgaW1tZWRpYXRlKSB7CisgICAgTE9HVigiQXVkaW9FcXVhbGl6ZXI6OmNvbW1pdChpbW1lZGlhdGU9JWQpIiwgaW1tZWRpYXRlKTsKKyAgICBtcExvd1NoZWxmLT5jb21taXQoaW1tZWRpYXRlKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1OdW1QZWFraW5nOyArK2kpIHsKKyAgICAgICAgbXBQZWFraW5nRmlsdGVyc1tpXS5jb21taXQoaW1tZWRpYXRlKTsKKyAgICB9CisgICAgbXBIaWdoU2hlbGYtPmNvbW1pdChpbW1lZGlhdGUpOworfQorCit2b2lkIEF1ZGlvRXF1YWxpemVyOjpwcm9jZXNzKGNvbnN0IGF1ZGlvX3NhbXBsZV90ICogcEluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdWRpb19zYW1wbGVfdCAqIHBPdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmcmFtZUNvdW50KSB7CisvLyAgICBMT0dWKCJBdWRpb0VxdWFsaXplcjo6cHJvY2VzcyhmcmFtZUNvdW50PSVkKSIsIGZyYW1lQ291bnQpOworICAgIG1wTG93U2hlbGYtPnByb2Nlc3MocEluLCBwT3V0LCBmcmFtZUNvdW50KTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1OdW1QZWFraW5nOyArK2kpIHsKKyAgICAgICAgbXBQZWFraW5nRmlsdGVyc1tpXS5wcm9jZXNzKHBJbiwgcE91dCwgZnJhbWVDb3VudCk7CisgICAgfQorICAgIG1wSGlnaFNoZWxmLT5wcm9jZXNzKHBJbiwgcE91dCwgZnJhbWVDb3VudCk7Cit9CisKK3ZvaWQgQXVkaW9FcXVhbGl6ZXI6OmVuYWJsZShib29sIGltbWVkaWF0ZSkgeworICAgIExPR1YoIkF1ZGlvRXF1YWxpemVyOjplbmFibGUoaW1tZWRpYXRlPSVkKSIsIGltbWVkaWF0ZSk7CisgICAgbXBMb3dTaGVsZi0+ZW5hYmxlKGltbWVkaWF0ZSk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtTnVtUGVha2luZzsgKytpKSB7CisgICAgICAgIG1wUGVha2luZ0ZpbHRlcnNbaV0uZW5hYmxlKGltbWVkaWF0ZSk7CisgICAgfQorICAgIG1wSGlnaFNoZWxmLT5lbmFibGUoaW1tZWRpYXRlKTsKK30KKwordm9pZCBBdWRpb0VxdWFsaXplcjo6ZGlzYWJsZShib29sIGltbWVkaWF0ZSkgeworICAgIExPR1YoIkF1ZGlvRXF1YWxpemVyOjpkaXNhYmxlKGltbWVkaWF0ZT0lZCkiLCBpbW1lZGlhdGUpOworICAgIG1wTG93U2hlbGYtPmRpc2FibGUoaW1tZWRpYXRlKTsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1OdW1QZWFraW5nOyArK2kpIHsKKyAgICAgICAgbXBQZWFraW5nRmlsdGVyc1tpXS5kaXNhYmxlKGltbWVkaWF0ZSk7CisgICAgfQorICAgIG1wSGlnaFNoZWxmLT5kaXNhYmxlKGltbWVkaWF0ZSk7Cit9CisKK2ludCBBdWRpb0VxdWFsaXplcjo6Z2V0TW9zdFJlbGV2YW50QmFuZCh1aW50MzJfdCB0YXJnZXRGcmVxKSBjb25zdCB7CisgICAgLy8gRmlyc3QsIGZpbmQgdGhlIHR3byBiYW5kcyB0aGF0IHRoZSB0YXJnZXQgZnJlcXVlbmN5IGlzIGJldHdlZW4uCisgICAgdWludDMyX3QgbG93ID0gbXBMb3dTaGVsZi0+Z2V0RnJlcXVlbmN5KCk7CisgICAgaWYgKHRhcmdldEZyZXEgPD0gbG93KSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICB1aW50MzJfdCBoaWdoID0gbXBIaWdoU2hlbGYtPmdldEZyZXF1ZW5jeSgpOworICAgIGlmICh0YXJnZXRGcmVxID49IGhpZ2gpIHsKKyAgICAgICAgcmV0dXJuIG1OdW1QZWFraW5nICsgMTsKKyAgICB9CisgICAgaW50IGJhbmQgPSBtTnVtUGVha2luZzsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG1OdW1QZWFraW5nOyArK2kpIHsKKyAgICAgICAgdWludDMyX3QgZnJlcSA9IG1wUGVha2luZ0ZpbHRlcnNbaV0uZ2V0RnJlcXVlbmN5KCk7CisgICAgICAgIGlmIChmcmVxID49IHRhcmdldEZyZXEpIHsKKyAgICAgICAgICAgIGhpZ2ggPSBmcmVxOworICAgICAgICAgICAgYmFuZCA9IGk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBsb3cgPSBmcmVxOworICAgIH0KKyAgICAvLyBOb3csIGxvdyBpcyByaWdodCBiZWxvdyB0aGUgdGFyZ2V0IGFuZCBoaWdoIGlzIHJpZ2h0IGFib3ZlLiBTZWUgd2hpY2ggb25lCisgICAgLy8gaXMgY2xvc2VyIG9uIGEgbG9nIHNjYWxlLgorICAgIGxvdyA9IEVmZmVjdHNfbG9nMihsb3cpOworICAgIGhpZ2ggPSBFZmZlY3RzX2xvZzIoaGlnaCk7CisgICAgdGFyZ2V0RnJlcSA9IEVmZmVjdHNfbG9nMih0YXJnZXRGcmVxKTsKKyAgICBpZiAoaGlnaCAtIHRhcmdldEZyZXEgPCB0YXJnZXRGcmVxIC0gbG93KSB7CisgICAgICAgIHJldHVybiBiYW5kICsgMTsKKyAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gYmFuZDsKKyAgICB9Cit9CisKKworQXVkaW9FcXVhbGl6ZXI6OkF1ZGlvRXF1YWxpemVyKHZvaWQgKiBwTWVtLCBpbnQgbkJhbmRzLCBpbnQgbkNoYW5uZWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzYW1wbGVSYXRlLCBib29sIG93bk1lbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQcmVzZXRDb25maWcgKiBwcmVzZXRzLCBpbnQgblByZXNldHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBtU2FtcGxlUmF0ZShzYW1wbGVSYXRlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgbXBQcmVzZXRzKHByZXNldHMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBtTnVtUHJlc2V0cyhuUHJlc2V0cykgeworICAgIGFzc2VydChwTWVtICE9IE5VTEwpOworICAgIGFzc2VydChuUHJlc2V0cyA9PSAwIHx8IG5QcmVzZXRzID4gMCAmJiBwcmVzZXRzICE9IE5VTEwpOworICAgIG1wTWVtID0gb3duTWVtID8gcE1lbSA6IE5VTEw7CisKKyAgICBwTWVtID0gKGNoYXIgKikgcE1lbSArIHNpemVvZihBdWRpb0VxdWFsaXplcik7CisgICAgbXBMb3dTaGVsZiA9IG5ldyAocE1lbSkgQXVkaW9TaGVsdmluZ0ZpbHRlcihBdWRpb1NoZWx2aW5nRmlsdGVyOjprTG93U2hlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuQ2hhbm5lbHMsIHNhbXBsZVJhdGUpOworICAgIHBNZW0gPSAoY2hhciAqKSBwTWVtICsgc2l6ZW9mKEF1ZGlvU2hlbHZpbmdGaWx0ZXIpOworICAgIG1wSGlnaFNoZWxmID0gbmV3IChwTWVtKSBBdWRpb1NoZWx2aW5nRmlsdGVyKEF1ZGlvU2hlbHZpbmdGaWx0ZXI6OmtIaWdoU2hlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbkNoYW5uZWxzLCBzYW1wbGVSYXRlKTsKKyAgICBwTWVtID0gKGNoYXIgKikgcE1lbSArIHNpemVvZihBdWRpb1NoZWx2aW5nRmlsdGVyKTsKKyAgICBtTnVtUGVha2luZyA9IG5CYW5kcyAtIDI7CisgICAgaWYgKG1OdW1QZWFraW5nID4gMCkgeworICAgICAgICBtcFBlYWtpbmdGaWx0ZXJzID0gcmVpbnRlcnByZXRfY2FzdDxBdWRpb1BlYWtpbmdGaWx0ZXIgKj4ocE1lbSk7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbU51bVBlYWtpbmc7ICsraSkgeworICAgICAgICAgICAgbmV3ICgmbXBQZWFraW5nRmlsdGVyc1tpXSkgQXVkaW9QZWFraW5nRmlsdGVyKG5DaGFubmVscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVSYXRlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXNldCgpOworfQorCit9CmRpZmYgLS1naXQgYS9tZWRpYS9saWJlZmZlY3RzL0F1ZGlvRXF1YWxpemVyLmggYi9tZWRpYS9saWJlZmZlY3RzL0F1ZGlvRXF1YWxpemVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDAyODQ2MgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYmVmZmVjdHMvQXVkaW9FcXVhbGl6ZXIuaApAQCAtMCwwICsxLDI0NiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA5LCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2lmbmRlZiBBVURJT0VRVUFMSVpFUl9IXworI2RlZmluZSBBVURJT0VRVUFMSVpFUl9IXworCisjaW5jbHVkZSAiQXVkaW9Db21tb24uaCIKKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitjbGFzcyBBdWRpb1NoZWx2aW5nRmlsdGVyOworY2xhc3MgQXVkaW9QZWFraW5nRmlsdGVyOworCisvLyBBIHBhcmFtZXRyaWMgYXVkaW8gZXF1YWxpemVyLiBTdXBwb3J0cyBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mIGJhbmRzIGFuZAorLy8gcHJlc2V0cy4KKy8vIFRoZSBFUSBpcyBjb21wb3NlZCBvZiBhIGxvdy1zaGVsZiwgemVybyBvciBtb3JlIHBlYWtpbmcgZmlsdGVycyBhbmQgYSBoaWdoCisvLyBzaGVsZiwgd2hlcmUgZWFjaCBiYW5kIGhhcyBmcmVxdWVuY3kgYW5kIGdhaW4gY29udHJvbHMsIGFuZCB0aGUgcGVha2luZworLy8gZmlsdGVycyBoYXZlIGFuIGFkZGl0aW9uYWwgYmFuZHdpZHRoIGNvbnRyb2wuCitjbGFzcyBBdWRpb0VxdWFsaXplciB7CitwdWJsaWM6CisgICAgLy8gQ29uZmlndXJhdGlvbiBvZiBhIHNpbmdsZSBiYW5kLgorICAgIHN0cnVjdCBCYW5kQ29uZmlnIHsKKyAgICAgICAgLy8gR2FpbiBpbiBtaWxsaWJlbC4KKyAgICAgICAgaW50MzJfdCBnYWluOworICAgICAgICAvLyBGcmVxdWVuY3kgaW4gbWlsbGloZXJ0ei4KKyAgICAgICAgdWludDMyX3QgZnJlcTsKKyAgICAgICAgLy8gQmFuZHdpZHRoIGluIGNlbnRzIChpZ25vcmVkIG9uIHNoZWx2aW5nIGZpbHRlcnMpLgorICAgICAgICB1aW50MzJfdCBiYW5kd2lkdGg7CisgICAgfTsKKworICAgIC8vIFByZXNldCBjb25maWd1cmF0aW9uLgorICAgIHN0cnVjdCBQcmVzZXRDb25maWcgeworICAgICAgICAvLyBIdW1hbi1yZWFkYWJsZSBuYW1lLgorICAgICAgICBjb25zdCBjaGFyICogbmFtZTsKKyAgICAgICAgLy8gQW4gYXJyYXkgb2Ygc2l6ZSBuQmFuZHMgd2hlcmUgZWFjaCBlbGVtZW50IGlzIGEgY29uZmlndXJhdGlvbiBmb3IgdGhlCisgICAgICAgIC8vIGNvcnJlc3BvbmRpbmcgYmFuZC4KKyAgICAgICAgY29uc3QgQmFuZENvbmZpZyAqIGJhbmRDb25maWdzOworICAgIH07CisKKyAgICAvLyBUaGlzIHZhbHVlIGlzIHVzZWQgd2hlbiByZXF1ZXN0aW5nIGN1cnJlbnQgcHJlc2V0LCBhbmQgRVEgaXMgbm90IHVzaW5nIGEKKyAgICAvLyBwcmVzZXQuCisgICAgc3RhdGljIGNvbnN0IGludCBQUkVTRVRfQ1VTVE9NID0gLTE7CisKKyAgICAvLyBHZXQgdGhlIHJlcXVpcmVkIG1lbW9yeSBzaXplIGZvciBhbiBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzLgorICAgIC8vIG5CYW5kcyAgIE51bWJlciBvZiBiYW5kcyByZXF1aXJlZCBpbiB0aGUgaW5zdGFuY2UuCisgICAgc3RhdGljIHNpemVfdCBHZXRJbnN0YW5jZVNpemUoaW50IG5CYW5kcyk7CisKKyAgICAvLyBDcmVhdGUgYW4gaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcy4KKyAgICAvLyBJZiBzdWNjZWVkcywgYSByZXNwZWN0aXZlIGNhbGwgaXMgZXhwZWN0ZWQgdG8gZnJlZUluc3RhbmNlKCksIHJlZ2FyZGxlc3MKKyAgICAvLyBvZiB3aG8gb3ducyB0aGUgY29udGV4dCBtZW1vcnkuCisgICAgLy8gcE1lbSAgICAgICAgIEEgbWVtb3J5IGJ1ZmZlciBvZiBhdCBsZWFzdCB0aGUgc2l6ZSByZXR1cm5lZCBieQorICAgIC8vICAgICAgICAgICAgICBHZXRJbnN0YW5jZVNpemUoKSwgd2hlcmUgdGhlIGluc3RhbmNlIGNvbnRleHQgaXMgdG8gYmUKKyAgICAvLyAgICAgICAgICAgICAgc3RvcmVkLiBJZiBOVUxMLCBpdCB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgYWxsb2NhdGVkICh1c2luZworICAgIC8vICAgICAgICAgICAgICBtYWxsb2MpLgorICAgIC8vIG5CYW5kcyAgICAgICBOdW1iZXIgb2YgYmFuZHMuIE11c3QgYmUgPj0gMi4KKyAgICAvLyBuQ2hhbm5lbHMgICAgTnVtYmVyIG9mIGlucHV0L291dHB1dCBjaGFubmVscyAoaW50ZXJsYWNlZCkuCisgICAgLy8gc2FtcGxlUmF0ZSAgIFRoZSBpbnB1dC9vdXRwdXQgc2FtcGxlIHJhdGUsIGluIEh6LgorICAgIC8vIHByZXNldHMgICAgICBUaGUgcHJlc2V0cyBjb25maWd1cmF0aW9uLiBNYXkgYmUgTlVMTCwgYnV0IGluIHRoYXQgY2FzZSB0aGUKKyAgICAvLyAgICAgICAgICAgICAgY2xpZW50IGlzIHJlcXVpcmVkIG5vdCB0byBjYWxsIHByZXNldC1yZWxhdGVkIGZ1bmN0aW9ucy4KKyAgICAvLyAgICAgICAgICAgICAgVGhpcyBhcnJheSBpcyBvd25lZCBieSB0aGUgY2xpZW50IGFuZCBpcyBub3QgY29waWVkLiBJdAorICAgIC8vICAgICAgICAgICAgICBtdXN0IGJlIGtlcHQgdmFsaWQgYnkgdGhlIGNsaWVudCBhcyBsb25nIGFzIHRoZSBpbnN0YW5jZSBpcworICAgIC8vICAgICAgICAgICAgICBhbGl2ZS4KKyAgICAvLyBuUHJlc2V0cyAgICAgTnVtYmVyIG9mIGVsZW1lbnRzIGluIHRoZSBwcmVzZXRzIGFycmF5LgorICAgIC8vIHJldHVybnMgICAgICBUaGUgaW5zdGFuY2UgaWYgc3VjY2Vzcy4gTlVMTCBpZiBwTWVtIGlzIE5VTEwgYW5kIGFsbG9jYXRpb24KKyAgICAvLyAgICAgICAgICAgICAgZmFpbGVkLgorICAgIHN0YXRpYyBBdWRpb0VxdWFsaXplciAqIENyZWF0ZUluc3RhbmNlKHZvaWQgKiBwTWVtLCBpbnQgbkJhbmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBuQ2hhbm5lbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHNhbXBsZVJhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUHJlc2V0Q29uZmlnICogcHJlc2V0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgblByZXNldHMpOworCisgICAgLy8gUmVjb25maWd1cmF0aW9uIG9mIHRoZSBmaWx0ZXIuIENoYW5nZXMgaW5wdXQvb3V0cHV0IGZvcm1hdCwgYnV0IGRvZXMgbm90CisgICAgLy8gYWx0ZXIgY3VycmVudCBwYXJhbWV0ZXIgdmFsdWVzLiBDYXVzZXMgcmVzZXQgb2YgdGhlIGRlbGF5IGxpbmVzLgorICAgIC8vIG5DaGFubmVscyAgTnVtYmVyIG9mIGlucHV0L291dHB1dCBjaGFubmVscyAoaW50ZXJsYWNlZCkuCisgICAgLy8gc2FtcGxlUmF0ZSBUaGUgaW5wdXQvb3V0cHV0IHNhbXBsZSByYXRlLCBpbiBIei4KKyAgICB2b2lkIGNvbmZpZ3VyZShpbnQgbkNoYW5uZWxzLCBpbnQgc2FtcGxlUmF0ZSk7CisKKyAgICAvLyBSZXNldHMgdGhlIGZpbHRlciBwYXJhbWV0ZXJzIHRvIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAgIC8vIGZyZXF1ZW5jeTogMAorICAgIC8vIGdhaW46IDAKKyAgICAvLyBiYW5kd2lkdGg6IDEyMDAgY2VudHMuCisgICAgLy8gSXQgYWxzbyBkaXNhYmxlcyB0aGUgZmlsdGVyLiBEb2VzIG5vdCBjbGVhciB0aGUgZGVsYXkgbGluZXMuCisgICAgdm9pZCByZXNldCgpOworCisgICAgLy8gQ2xlYXJzIGRlbGF5IGxpbmVzLiBEb2VzIG5vdCBhbHRlciBwYXJhbWV0ZXIgdmFsdWVzLgorICAgIHZvaWQgY2xlYXIoKTsKKworICAgIC8vIEZyZWVzIHRoZSBvYmplY3QuIFdpbGwgZnJlZSB0aGUgbWVtb3J5IGlmIHRoZSBvYmplY3Qgb3duZWQgaXQsIGkuZS4gaWYKKyAgICAvLyBhIE5VTEwgcG9pbnRlciB3YXMgcGFzc2VkIHRvIENyZWF0ZUluc3RhbmNlIGFzIHBNZW0uCisgICAgdm9pZCBmcmVlKCk7CisKKyAgICAvLyBTZXRzIGdhaW4gdmFsdWUuIEFjdHVhbCBjaGFuZ2Ugd2lsbCBvbmx5IHRha2UgcGxhY2UgdXBvbiBjb21taXQoKS4KKyAgICAvLyBUaGlzIHZhbHVlIHdpbGwgYmUgcmVtZW1iZXJlZCBldmVuIGlmIHRoZSBmaWx0ZXIgaXMgaW4gZGlzYWJsZWQoKSBzdGF0ZS4KKyAgICAvLyBiYW5kICAgICBUaGUgYmFuZCB0byBzZXQgdGhlIGdhaW4gZm9yLgorICAgIC8vIG1pbGxpYmVsIEdhaW4gdmFsdWUgaW4gbWlsbGliZWwgKDEvMTAwIG9mIGRlY2liZWwpLgorICAgIHZvaWQgc2V0R2FpbihpbnQgYmFuZCwgaW50MzJfdCBtaWxsaWJlbCk7CisKKyAgICAvLyBHZXRzIGdhaW4gb2YgYSBjZXJ0YWluIGJhbmQuIFRoaXMgaXMgYWx3YXlzIHRoZSBsYXN0IHZhbHVlIHNldCAob3IKKyAgICAvLyBkZWZhdWx0IHZhbHVlIGFmdGVyIHJlc2V0KS4KKyAgICAvLyBiYW5kICAgICBUaGUgYmFuZCB0byBnZXQgdGhlIGdhaW4gZm9yLgorICAgIC8vIHJldHVybnMgIEdhaW4gdmFsdWUgaW4gbWlsbGliZWwgKDEvMTAwIG9mIGRlY2liZWwpLgorICAgIGludDMyX3QgZ2V0R2FpbihpbnQgYmFuZCkgY29uc3Q7CisKKyAgICAvLyBTZXRzIGN1dG9mZiBmcmVxdWVuY3kgdmFsdWUuIEFjdHVhbCBjaGFuZ2Ugd2lsbCBvbmx5IHRha2UgcGxhY2UgdXBvbgorICAgIC8vIGNvbW1pdCgpLgorICAgIC8vIFRoaXMgdmFsdWUgd2lsbCBiZSByZW1lbWJlcmVkIGV2ZW4gaWYgdGhlIGZpbHRlciBpcyBpbiBkaXNhYmxlZCgpIHN0YXRlLgorICAgIC8vIGJhbmQgICAgICAgVGhlIGJhbmQgdG8gc2V0IHRoZSBmcmVxdWVuY3kgZm9yLgorICAgIC8vIG1pbGxpaGVydHogRnJlcXVlbmN5IHZhbHVlIGluIG1Iei4KKyAgICB2b2lkIHNldEZyZXF1ZW5jeShpbnQgYmFuZCwgdWludDMyX3QgbWlsbGloZXJ0eik7CisKKyAgICAvLyBHZXRzIGZyZXF1ZW5jeSBvZiBhIGNlcnRhaW4gYmFuZC4gVGhpcyBpcyBhbHdheXMgdGhlIGxhc3QgdmFsdWUgc2V0IChvcgorICAgIC8vIGRlZmF1bHQgdmFsdWUgYWZ0ZXIgcmVzZXQpLgorICAgIC8vIGJhbmQgICAgIFRoZSBiYW5kIHRvIGdldCB0aGUgZnJlcXVlbmN5IGZvci4KKyAgICAvLyByZXR1cm5zICBGcmVxdWVuY3kgdmFsdWUgaW4gbUh6LgorICAgIHVpbnQzMl90IGdldEZyZXF1ZW5jeShpbnQgYmFuZCkgY29uc3Q7CisKKyAgICAvLyBTZXRzIGJhbmR3aWR0aCB2YWx1ZS4gQWN0dWFsIGNoYW5nZSB3aWxsIG9ubHkgdGFrZSBwbGFjZSB1cG9uIGNvbW1pdCgpLgorICAgIC8vIFRoaXMgdmFsdWUgd2lsbCBiZSByZW1lbWJlcmVkIGV2ZW4gaWYgdGhlIGZpbHRlciBpcyBpbiBkaXNhYmxlZCgpIHN0YXRlLgorICAgIC8vIElmIGNhbGxlZCBvbiB0aGUgZmlyc3Qgb3IgbGFzdCBiYW5kLCB0aGlzIGNhbGwgaXMgaWdub3JlZC4KKyAgICAvLyBiYW5kICBUaGUgYmFuZCB0byBzZXQgdGhlIGZyZXF1ZW5jeSBmb3IuCisgICAgLy8gY2VudHMgQmFuZHdpZHRoIHZhbHVlIGluIGNlbnRzICgxLzEyMDAgb2N0YXZlKS4KKyAgICB2b2lkIHNldEJhbmR3aWR0aChpbnQgYmFuZCwgdWludDMyX3QgY2VudHMpOworCisgICAgLy8gR2V0cyBiYW5kd2lkdGggb2YgYSBjZXJ0YWluIGJhbmQuIFRoaXMgaXMgYWx3YXlzIHRoZSBsYXN0IHZhbHVlIHNldCAob3IKKyAgICAvLyBkZWZhdWx0IHZhbHVlIGFmdGVyIHJlc2V0KS4gRm9yIHRoZSBmaXJzdCBhbmQgbGFzdCBiYW5kcywgMCBpcyBhbHdheXMKKyAgICAvLyByZXR1cm5lZC4KKyAgICAvLyBiYW5kICAgICBUaGUgYmFuZCB0byBnZXQgdGhlIGJhbmR3aWR0aCBmb3IuCisgICAgLy8gcmV0dXJucyAgQmFuZHdpZHRoIHZhbHVlIGluIGNlbnRzICgxLzEyMDAgb2N0YXZlKS4KKyAgICB1aW50MzJfdCBnZXRCYW5kd2lkdGgoaW50IGJhbmQpIGNvbnN0OworCisgICAgLy8gR2V0cyBsb3dlciBhbmQgdXBwZXIgYm91bmRhcmllcyBvZiBhIGJhbmQuCisgICAgLy8gRm9yIHRoZSBsb3cgc2hlbGYsIHRoZSBsb3cgYm91bmQgaXMgMCBhbmQgdGhlIGhpZ2ggYm91bmQgaXMgdGhlIGJhbmQKKyAgICAvLyBmcmVxdWVuY3kuCisgICAgLy8gRm9yIHRoZSBoaWdoIHNoZWxmLCB0aGUgbG93IGJvdW5kIGlzIHRoZSBiYW5kIGZyZXF1ZW5jeSBhbmQgdGhlIGhpZ2gKKyAgICAvLyBib3VuZCBpcyBOeXF1aXN0LgorICAgIC8vIEZvciB0aGUgcGVha2luZyBmaWx0ZXJzLCB0aGV5IGFyZSB0aGUgZ2FpbltkQl0vMiBwb2ludHMuCisgICAgdm9pZCBnZXRCYW5kUmFuZ2UoaW50IGJhbmQsIHVpbnQzMl90ICYgbG93LCB1aW50MzJfdCAmIGhpZ2gpIGNvbnN0OworCisgICAgLy8gR2V0cyBhIGh1bWFuLXJlYWRhYmxlIG5hbWUgZm9yIGEgcHJlc2V0IElELiBXaWxsIHJldHVybiAiQ3VzdG9tIiBpZgorICAgIC8vIFBSRVNFVF9DVVNUT00gaXMgcGFzc2VkLgorICAgIC8vIHByZXNldCAgICAgICBUaGUgcHJlc2V0IElELiBNdXN0IGJlIGxlc3MgdGhhbiBudW1iZXIgb2YgcHJlc2V0cy4KKyAgICBjb25zdCBjaGFyICogZ2V0UHJlc2V0TmFtZShpbnQgcHJlc2V0KSBjb25zdDsKKworICAgIC8vIEdldHMgdGhlIG51bWJlciBvZiBwcmVzZXRzLgorICAgIGludCBnZXROdW1QcmVzZXRzKCkgY29uc3Q7CisKKyAgICAvLyBHZXRzIHRoZSBjdXJyZW50bHkgc2V0IHByZXNldCBJRC4KKyAgICAvLyBXaWxsIHJldHVybiBQUkVTRVRfQ1VTVE9NIGluIGNhc2UgdGhlIEVRIHBhcmFtZXRlcnMgaGF2ZSBiZWVuIG1vZGlmaWVkCisgICAgLy8gbWFudWFsbHkgc2luY2UgYSBwcmVzZXQgd2FzIHNldC4KKyAgICBpbnQgZ2V0UHJlc2V0KCkgY29uc3Q7CisKKyAgICAvLyBTZXRzIHRoZSBjdXJyZW50IHByZXNldCBieSBJRC4KKyAgICAvLyBBbGwgdGhlIGJhbmQgcGFyYW1ldGVycyB3aWxsIGJlIG92ZXJyaWRkZW4uCisgICAgLy8gQ2hhbmdlIHdpbGwgbm90IGJlIGFwcGxpZWQgdW50aWwgY29tbWl0KCkgaXMgY2FsbGVkLgorICAgIC8vIHByZXNldCAgICAgICBUaGUgcHJlc2V0IElELiBNdXN0IGJlIGxlc3MgdGhhbiBudW1iZXIgb2YgcHJlc2V0cy4KKyAgICAvLyAgICAgICAgICAgICAgUFJFU0VUX0NVU1RPTSBpcyBOT1QgYSB2YWxpZCB2YWx1ZSBoZXJlLgorICAgIHZvaWQgc2V0UHJlc2V0KGludCBwcmVzZXQpOworCisgICAgLy8gQXBwbGllcyBhbGwgcGFyYW1ldGVyIGNoYW5nZXMgZG9uZSB0byB0aGlzIHBvaW50IGluIHRpbWUuCisgICAgLy8gSWYgdGhlIGZpbHRlciBpcyBkaXNhYmxlZCwgdGhlIG5ldyBwYXJhbWV0ZXJzIHdpbGwgdGFrZSBwbGFjZSB3aGVuIGl0IGlzCisgICAgLy8gZW5hYmxlZCBhZ2Fpbi4gRG9lcyBub3QgaW50cm9kdWNlIGFydGlmYWN0cywgdW5sZXNzIGltbWVkaWF0ZSBpcyBzZXQuCisgICAgLy8gaW1tZWRpYXRlICAgIFdoZXRoZXIgdG8gYXBwbHkgY2hhbmdlIGFicnVwdGx5IChpZ25vcmVkIGlmIGZpbHRlciBpcworICAgIC8vIGRpc2FibGVkKS4KKyAgIHZvaWQgY29tbWl0KGJvb2wgaW1tZWRpYXRlID0gZmFsc2UpOworCisgICAgLy8gUHJvY2VzcyBhIGJ1ZmZlciBvZiBpbnB1dCBkYXRhLiBUaGUgaW5wdXQgYW5kIG91dHB1dCBzaG91bGQgY29udGFpbgorICAgIC8vIGZyYW1lQ291bnQgKiBuQ2hhbm5lbHMgaW50ZXJsYWNlZCBzYW1wbGVzLiBQcm9jZXNzaW5nIGNhbiBiZSBkb25lCisgICAgLy8gaW4tcGxhY2UsIGJ5IHBhc3NpbmcgdGhlIHNhbWUgYnVmZmVyIGFzIGJvdGggYXJndW1lbnRzLgorICAgIC8vIHBJbiAgICAgICAgICBJbnB1dCBidWZmZXIuCisgICAgLy8gcE91dCAgICAgICAgIE91dHB1dCBidWZmZXIuCisgICAgLy8gZnJhbWVDb3VudCAgIE51bWJlciBvZiBmcmFtZXMgdG8gcHJvZHVjZSBvbiBlYWNoIGNhbGwgdG8gcHJvY2VzcygpLgorICAgIHZvaWQgcHJvY2Vzcyhjb25zdCBhdWRpb19zYW1wbGVfdCAqIHBJbiwgYXVkaW9fc2FtcGxlX3QgKiBwT3V0LAorICAgICAgICAgICAgICAgICBpbnQgZnJhbWVDb3VudCk7CisKKyAgICAvLyBFbmFibGVzIHRoZSBmaWx0ZXIsIHNvIGl0IHdvdWxkIHN0YXJ0IHByb2Nlc3NpbmcgaW5wdXQuIERvZXMgbm90CisgICAgLy8gaW50cm9kdWNlIGFydGlmYWN0cywgdW5sZXNzIGltbWVkaWF0ZSBpcyBzZXQuCisgICAgLy8gaW1tZWRpYXRlICAgIFdoZXRoZXIgdG8gYXBwbHkgY2hhbmdlIGFicnVwdGx5LgorICAgIHZvaWQgZW5hYmxlKGJvb2wgaW1tZWRpYXRlID0gZmFsc2UpOworCisgICAgLy8gRGlzYWJsZWQgKGJ5cGFzc2VzKSB0aGUgZmlsdGVyLiBEb2VzIG5vdCBpbnRyb2R1Y2UgYXJ0aWZhY3RzLCB1bmxlc3MKKyAgICAvLyBpbW1lZGlhdGUgaXMgc2V0LgorICAgIC8vIGltbWVkaWF0ZSAgICBXaGV0aGVyIHRvIGFwcGx5IGNoYW5nZSBhYnJ1cHRseS4KKyAgICB2b2lkIGRpc2FibGUoYm9vbCBpbW1lZGlhdGUgPSBmYWxzZSk7CisKKyAgICAvLyBSZXR1cm5zIHRoZSBiYW5kIHdpdGggdGhlIG1heGltdW0gaW5mbHVlbmNlIG9uIGEgZ2l2ZW4gZnJlcXVlbmN5LgorICAgIC8vIFJlc3VsdCBpcyB1bmFmZmVjdGVkIGJ5IHdoZXRoZXIgRVEgaXMgZW5hYmxlZCBvciBub3QsIG9yIGJ5IHdoZXRoZXIKKyAgICAvLyBjaGFuZ2VzIGhhdmUgYmVlbiBjb21taXR0ZWQgb3Igbm90LgorICAgIC8vIHRhcmdldEZyZXEgICBUaGUgdGFyZ2V0IGZyZXF1ZW5jeSwgaW4gbWlsbGloZXJ0ei4KKyAgICBpbnQgZ2V0TW9zdFJlbGV2YW50QmFuZCh1aW50MzJfdCB0YXJnZXRGcmVxKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICAvLyBCb3R0b20gZnJlcXVlbmN5LCBpbiBtSHouCisgICAgc3RhdGljIGNvbnN0IGludCBrTWluRnJlcSA9IDIwMDAwOworICAgIC8vIFNhbXBsZSByYXRlLCBpbiBIei4KKyAgICBpbnQgbVNhbXBsZVJhdGU7CisgICAgLy8gTnVtYmVyIG9mIHBlYWtpbmcgZmlsdGVycy4gVG90YWwgbnVtYmVyIG9mIGJhbmRzIGlzICsyLgorICAgIGludCBtTnVtUGVha2luZzsKKyAgICAvLyBQcmVzZXQgY29uZmlndXJhdGlvbnMuCisgICAgY29uc3QgUHJlc2V0Q29uZmlnICogbXBQcmVzZXRzOworICAgIC8vIE51bWJlciBvZiBlbGVtZW50cyBpbiBtcFByZXNldHM7CisgICAgaW50IG1OdW1QcmVzZXRzOworICAgIC8vIEN1cnJlbnQgcHJlc2V0LgorICAgIGludCBtQ3VyUHJlc2V0OworCisgICAgLy8gTWVtb3J5IHNwYWNlIHRvIGZyZWUgd2hlbiBpbnN0YW5jZSBpcyBkZWxldGVkLCBvciBOVUxMIGlmIG5vIG1lbW9yeSBpcworICAgIC8vIG93bmVkLgorICAgIHZvaWQgKiBtcE1lbTsKKyAgICAvLyBUaGUgbG93LXNoZWx2aW5nIGZpbHRlci4KKyAgICBBdWRpb1NoZWx2aW5nRmlsdGVyICogbXBMb3dTaGVsZjsKKyAgICAvLyBUaGUgaGlnaC1zaGVsdmluZyBmaWx0ZXIuCisgICAgQXVkaW9TaGVsdmluZ0ZpbHRlciAqIG1wSGlnaFNoZWxmOworICAgIC8vIEFuIGFycmF5IG9mIHNpemUgbU51bVBlYWtpbmcgb2YgcGVha2luZyBmaWx0ZXJzLgorICAgIEF1ZGlvUGVha2luZ0ZpbHRlciAqIG1wUGVha2luZ0ZpbHRlcnM7CisKKyAgICAvLyBDb25zdHJ1Y3Rvci4gUmVzZXRzIHRoZSBmaWx0ZXIgKHNlZSByZXNldCgpKS4gTXVzdCBjYWxsIGluaXQoKSBkb2luZworICAgIC8vIGFueXRoaW5nIGVsc2UuCisgICAgLy8gcE1lbSAgICAgICBNZW1vcnkgYnVmZmVyIGZvciBiYW5kcy4KKyAgICAvLyBuQ2hhbm5lbHMgIE51bWJlciBvZiBpbnB1dC9vdXRwdXQgY2hhbm5lbHMgKGludGVybGFjZWQpLgorICAgIC8vIHNhbXBsZVJhdGUgVGhlIGlucHV0L291dHB1dCBzYW1wbGUgcmF0ZSwgaW4gSHouCisgICAgLy8gb3duTWVtICAgICBXaGV0aGVyIHBNZW0gaXMgb3duZWQgYnkgbWUuCisgICAgLy8gcHJlc2V0cyAgICAgIFRoZSBwcmVzZXRzIGNvbmZpZ3VyYXRpb24uIE1heSBiZSBOVUxMLCBidXQgaW4gdGhhdCBjYXNlIHRoZQorICAgIC8vICAgICAgICAgICAgICBjbGllbnQgaXMgcmVxdWlyZWQgbm90IHRvIGNhbGwgcHJlc2V0LXJlbGF0ZWQgZnVuY3Rpb25zLgorICAgIC8vICAgICAgICAgICAgICBUaGlzIGFycmF5IGlzIG93bmVkIGJ5IHRoZSBjbGllbnQgYW5kIGlzIG5vdCBjb3BpZWQuIEl0CisgICAgLy8gICAgICAgICAgICAgIG11c3QgYmUga2VwdCB2YWxpZCBieSB0aGUgY2xpZW50IGFzIGxvbmcgYXMgdGhlIGluc3RhbmNlIGlzCisgICAgLy8gICAgICAgICAgICAgIGFsaXZlLgorICAgIC8vIG5QcmVzZXRzICAgICBOdW1iZXIgb2YgZWxlbWVudHMgaW4gdGhlIHByZXNldHMgYXJyYXkuCisgICAgQXVkaW9FcXVhbGl6ZXIodm9pZCAqIHBNZW0sIGludCBuQmFuZHMsIGludCBuQ2hhbm5lbHMsIGludCBzYW1wbGVSYXRlLAorICAgICAgICAgICAgICAgICAgIGJvb2wgb3duTWVtLCBjb25zdCBQcmVzZXRDb25maWcgKiBwcmVzZXRzLCBpbnQgblByZXNldHMpOworfTsKKworfQorCisjZW5kaWYgLy8gQVVESU9FUVVBTElaRVJfSF8KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmVmZmVjdHMvQXVkaW9Gb3JtYXRBZGFwdGVyLmggYi9tZWRpYS9saWJlZmZlY3RzL0F1ZGlvRm9ybWF0QWRhcHRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5M2ViZTkKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJlZmZlY3RzL0F1ZGlvRm9ybWF0QWRhcHRlci5oCkBAIC0wLDAgKzEsMTg0IEBACisvKiAvYW5kcm9pZC9zcmMvZnJhbWV3b3Jrcy9iYXNlL21lZGlhL2xpYmVmZmVjdHMvQXVkaW9Gb3JtYXRBZGFwdGVyLmgKKyoqCisqKiBDb3B5cmlnaHQgMjAwOSwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorKioKKyoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisqKgorKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorKioKKyoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorKi8KKworI2lmbmRlZiBBVURJT0ZPUk1BVEFEQVBURVJfSF8KKyNkZWZpbmUgQVVESU9GT1JNQVRBREFQVEVSX0hfCisKKyNpbmNsdWRlIDxtZWRpYS9FZmZlY3RBcGkuaD4KKworCisjZGVmaW5lIG1pbih4LHkpICgoKHgpIDwgKHkpKSA/ICh4KSA6ICh5KSkKKworbmFtZXNwYWNlIGFuZHJvaWQgeworCisvLyBBbiBhZGFwdGVyIGZvciBhbiBhdWRpbyBwcm9jZXNzb3Igd29ya2luZyBvbiBhdWRpb19zYW1wbGVfdCBzYW1wbGVzIHdpdGggYQorLy8gYnVmZmVyIG92ZXJyaWRlIGJlaGF2aW9yIHRvIGFyYml0cmFyeSBzYW1wbGUgZm9ybWF0cyBhbmQgYnVmZmVyIGJlaGF2aW9ycy4KKy8vIFRoZSBhZGFwdGVyIG1heSB3b3JrIG9uIGFueSBwcm9jZXNzaW5nIGNsYXNzIHdoaWNoIGhhcyBhIHByb2Nlc3NpbmcgZnVuY3Rpb24KKy8vIHdpdGggdGhlIGZvbGxvd2luZyBzaWduYXR1cmU6CisvLyB2b2lkIHByb2Nlc3MoY29uc3QgYXVkaW9fc2FtcGxlX3QgKiBwSW4sCisvLyAgICAgICAgICAgICAgYXVkaW9fc2FtcGxlX3QgKiBwT3V0LAorLy8gICAgICAgICAgICAgIGludCBmcmFtZUNvdW50KTsKKy8vIEl0IGlzIGFzc3VtZWQgdGhhdCB0aGUgdW5kZXJseWluZyBwcm9jZXNzb3Igd29ya3MgaW4gUzcuMjQgZm9ybWF0IGFuZCBhbgorLy8gb3ZlcndyaXRlIGJlaGF2aW9yLgorLy8KKy8vIFVzYWdlIGlzIHNpbXBsZToganVzdCB3b3JrIHdpdGggdGhlIHByb2Nlc3NvciBub3JtYWxseSwgYnV0IGluc3RlYWQgb2YKKy8vIGNhbGxpbmcgaXRzIHByb2Nlc3MoKSBmdW5jdGlvbiBkaXJlY3RseSwgd29yayB3aXRoIHRoZSBwcm9jZXNzKCkgZnVuY3Rpb24gb2YKKy8vIHRoZSBhZGFwdGVyLgorLy8gVGhlIGFkYXB0ZXIgc3VwcG9ydHMgcmUtY29uZmlndXJhdGlvbiB0byBhIGRpZmZlcmVudCBmb3JtYXQgb24gdGhlIGZseS4KKy8vCisvLyBUICAgICAgICBUaGUgcHJvY2Vzc29yIGNsYXNzLgorLy8gYnVmU2l6ZSAgVGhlIG1heGltdW0gbnVtYmVyIG9mIHNhbXBsZXMgKHNpbmdsZSBjaGFubmVsKSB0byBwcm9jZXNzIG9uIGEKKy8vICAgICAgICAgIHNpbmdsZSBjYWxsIHRvIHRoZSB1bmRlcmx5aW5nIHByb2Nlc3Nvci4gU2V0dGluZyB0aGlzIHRvIGEgc21hbGwKKy8vICAgICAgICAgIG51bWJlciB3aWxsIHNhdmUgYSBsaXR0bGUgbWVtb3J5LCBidXQgd2lsbCBjb3N0IGZ1bmN0aW9uIGNhbGwKKy8vICAgICAgICAgIG92ZXJoZWFkLCByZXN1bHRpbmcgZnJvbSBtdWx0aXBsZSBjYWxscyB0byB0aGUgdW5kZXJseWluZyBwcm9jZXNzKCkKKy8vICAgICAgICAgIHBlciBhIHNpbmdsZSBjYWxsIHRvIHRoaXMgY2xhc3MncyBwcm9jZXNzKCkuCit0ZW1wbGF0ZTxjbGFzcyBULCBzaXplX3QgYnVmU2l6ZT4KK2NsYXNzIEF1ZGlvRm9ybWF0QWRhcHRlciB7CitwdWJsaWM6CisgICAgLy8gQ29uZmlndXJlIHRoZSBhZGFwdGVyLgorICAgIC8vIHByb2Nlc3NvciAgICBUaGUgdW5kZXJseWluZyBhdWRpbyBwcm9jZXNzb3IuCisgICAgLy8gbkNoYW5uZWxzICAgIE51bWJlciBvZiBpbnB1dCBhbmQgb3V0cHV0IGNoYW5uZWxzLiBUaGUgYWRhcHRlciBkb2VzIG5vdCBkbworICAgIC8vICAgICAgICAgICAgICBjaGFubmVsIGNvbnZlcnNpb24gLSB0aGlzIHBhcmFtZXRlciBtdXN0IGJlIGluIHN5bmMgd2l0aCB0aGUKKyAgICAvLyAgICAgICAgICAgICAgYWN0dWFsIHByb2Nlc3Nvci4KKyAgICAvLyBwY21Gb3JtYXQgICAgVGhlIGRlc2lyZWQgaW5wdXQvb3V0cHV0IHNhbXBsZSBmb3JtYXQuCisgICAgLy8gYmVoYXZpb3IgICAgIFRoZSBkZXNpcmVkIGJlaGF2aW9yIChvdmVyd3JpdGUgb3IgYWNjdW11bGF0ZSkuCisgICAgdm9pZCBjb25maWd1cmUoVCAmIHByb2Nlc3NvciwgaW50IG5DaGFubmVscywgdWludDhfdCBwY21Gb3JtYXQsCisgICAgICAgICAgICAgICAgICAgdWludDMyX3QgYmVoYXZpb3IpIHsKKyAgICAgICAgbXBQcm9jZXNzb3IgPSAmcHJvY2Vzc29yOworICAgICAgICBtTnVtQ2hhbm5lbHMgPSBuQ2hhbm5lbHM7CisgICAgICAgIG1QY21Gb3JtYXQgPSBwY21Gb3JtYXQ7CisgICAgICAgIG1CZWhhdmlvciA9IGJlaGF2aW9yOworICAgICAgICBtTWF4U2FtcGxlc1BlckNhbGwgPSBidWZTaXplIC8gbkNoYW5uZWxzOworICAgIH0KKworICAgIC8vIFByb2Nlc3MgYSBibG9jayBvZiBzYW1wbGVzLgorICAgIC8vIHBJbiAgICAgICAgICBBIGJ1ZmZlciBvZiBzYW1wbGVzIHdpdGggdGhlIGZvcm1hdCBzcGVjaWZpZWQgb24KKyAgICAvLyAgICAgICAgICAgICAgY29uZmlndXJlKCkuCisgICAgLy8gcE91dCAgICAgICAgIEEgYnVmZmVyIG9mIHNhbXBsZXMgd2l0aCB0aGUgZm9ybWF0IHNwZWNpZmllZCBvbgorICAgIC8vICAgICAgICAgICAgICBjb25maWd1cmUoKS4gTWF5IGJlIHRoZSBzYW1lIGFzIHBJbi4KKyAgICAvLyBudW1TYW1wbGVzICAgVGhlIG51bWJlciBvZiBtdWx0aS1jaGFubmVsIHNhbXBsZXMgdG8gcHJvY2Vzcy4KKyAgICB2b2lkIHByb2Nlc3MoY29uc3Qgdm9pZCAqIHBJbiwgdm9pZCAqIHBPdXQsIHVpbnQzMl90IG51bVNhbXBsZXMpIHsKKyAgICAgICAgd2hpbGUgKG51bVNhbXBsZXMgPiAwKSB7CisgICAgICAgICAgICB1aW50MzJfdCBudW1TYW1wbGVzSXRlciA9IG1pbihudW1TYW1wbGVzLCBtTWF4U2FtcGxlc1BlckNhbGwpOworICAgICAgICAgICAgdWludDMyX3QgblNhbXBsZXNDaGFubmVscyA9IG51bVNhbXBsZXNJdGVyICogbU51bUNoYW5uZWxzOworICAgICAgICAgICAgaWYgKG1QY21Gb3JtYXQgPT0gU0FNUExFX0ZPUk1BVF9QQ01fUzdfMjQpIHsKKyAgICAgICAgICAgICAgICBpZiAobUJlaGF2aW9yID09IEVGRkVDVF9CVUZGRVJfQUNDRVNTX1dSSVRFKSB7CisgICAgICAgICAgICAgICAgICAgIG1wUHJvY2Vzc29yLT5wcm9jZXNzKAorICAgICAgICAgICAgICAgICAgICAgICAgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBhdWRpb19zYW1wbGVfdCAqPiAocEluKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8YXVkaW9fc2FtcGxlX3QgKj4gKHBPdXQpLAorICAgICAgICAgICAgICAgICAgICAgICAgbnVtU2FtcGxlc0l0ZXIpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobUJlaGF2aW9yID09IEVGRkVDVF9CVUZGRVJfQUNDRVNTX0FDQ1VNVUxBVEUpIHsKKyAgICAgICAgICAgICAgICAgICAgbXBQcm9jZXNzb3ItPnByb2Nlc3MoCisgICAgICAgICAgICAgICAgICAgICAgICByZWludGVycHJldF9jYXN0PGNvbnN0IGF1ZGlvX3NhbXBsZV90ICo+IChwSW4pLAorICAgICAgICAgICAgICAgICAgICAgICAgbUJ1ZmZlciwgbnVtU2FtcGxlc0l0ZXIpOworICAgICAgICAgICAgICAgICAgICBNaXhPdXRwdXQocE91dCwgbnVtU2FtcGxlc0l0ZXIpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydChmYWxzZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHBJbiA9IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgYXVkaW9fc2FtcGxlX3QgKj4gKHBJbikKKyAgICAgICAgICAgICAgICAgICAgICAgICsgblNhbXBsZXNDaGFubmVsczsKKyAgICAgICAgICAgICAgICBwT3V0ID0gcmVpbnRlcnByZXRfY2FzdDxhdWRpb19zYW1wbGVfdCAqPiAocE91dCkKKyAgICAgICAgICAgICAgICAgICAgICAgICsgblNhbXBsZXNDaGFubmVsczsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgQ29udmVydElucHV0KHBJbiwgblNhbXBsZXNDaGFubmVscyk7CisgICAgICAgICAgICAgICAgbXBQcm9jZXNzb3ItPnByb2Nlc3MobUJ1ZmZlciwgbUJ1ZmZlciwgbnVtU2FtcGxlc0l0ZXIpOworICAgICAgICAgICAgICAgIENvbnZlcnRPdXRwdXQocE91dCwgblNhbXBsZXNDaGFubmVscyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBudW1TYW1wbGVzIC09IG51bVNhbXBsZXNJdGVyOworICAgICAgICB9CisgICAgfQorCitwcml2YXRlOgorICAgIC8vIFRoZSB1bmRlcmx5aW5nIHByb2Nlc3Nvci4KKyAgICBUICogbXBQcm9jZXNzb3I7CisgICAgLy8gVGhlIG51bWJlciBvZiBpbnB1dC9vdXRwdXQgY2hhbm5lbHMuCisgICAgaW50IG1OdW1DaGFubmVsczsKKyAgICAvLyBUaGUgZGVzaXJlZCBQQ00gZm9ybWF0LgorICAgIHVpbnQ4X3QgbVBjbUZvcm1hdDsKKyAgICAvLyBUaGUgZGVzaXJlZCBidWZmZXIgYmVoYXZpb3IuCisgICAgdWludDMyX3QgbUJlaGF2aW9yOworICAgIC8vIEFuIGludGVybWVkaWF0ZSBidWZmZXIgZm9yIHByb2Nlc3NpbmcuCisgICAgYXVkaW9fc2FtcGxlX3QgbUJ1ZmZlcltidWZTaXplXTsKKyAgICAvLyBUaGUgYnVmZmVyIHNpemUsIGRpdmlkZWQgYnkgdGhlIG51bWJlciBvZiBjaGFubmVscyAtIHJlcHJlc2VudHMgdGhlCisgICAgLy8gbWF4aW11bSBudW1iZXIgb2YgbXVsdGktY2hhbm5lbCBzYW1wbGVzIHRoYXQgY2FuIGJlIHN0b3JlZCBpbiB0aGUKKyAgICAvLyBpbnRlcm1lZGlhdGUgYnVmZmVyLgorICAgIHNpemVfdCBtTWF4U2FtcGxlc1BlckNhbGw7CisKKyAgICAvLyBDb252ZXJ0cyBhIGJ1ZmZlciBvZiBpbnB1dCBzYW1wbGVzIHRvIGF1ZGlvX3NhbXBsZV90IGZvcm1hdC4KKyAgICAvLyBPdXRwdXQgaXMgd3JpdHRlbiB0byB0aGUgaW50ZXJtZWRpYXRlIGJ1ZmZlci4KKyAgICAvLyBwSW4gICAgICAgICAgVGhlIGlucHV0IGJ1ZmZlciB3aXRoIHRoZSBmb3JtYXQgZGVzaWduYXRlZCBpbiBjb25maWd1cmUoKS4KKyAgICAvLyAgICAgICAgICAgICAgV2hlbiBmdW5jdGlvbiBleGlzdCB3aWxsIHBvaW50IHRvIHRoZSBuZXh0IHVucmVhZCBpbnB1dAorICAgIC8vICAgICAgICAgICAgICBzYW1wbGUuCisgICAgLy8gbnVtU2FtcGxlcyAgIFRoZSBudW1iZXIgb2Ygc2luZ2xlLWNoYW5uZWwgc2FtcGxlcyB0byBwcm9jZXNzLgorICAgIHZvaWQgQ29udmVydElucHV0KGNvbnN0IHZvaWQgKiYgcEluLCB1aW50MzJfdCBudW1TYW1wbGVzKSB7CisgICAgICAgIGlmIChtUGNtRm9ybWF0ID09IFNBTVBMRV9GT1JNQVRfUENNX1MxNSkgeworICAgICAgICAgICAgY29uc3QgaW50MTZfdCAqIHBJbjE2ID0gcmVpbnRlcnByZXRfY2FzdDxjb25zdCBpbnQxNl90ICo+KHBJbik7CisgICAgICAgICAgICBhdWRpb19zYW1wbGVfdCAqIHBPdXQgPSBtQnVmZmVyOworICAgICAgICAgICAgd2hpbGUgKG51bVNhbXBsZXMtLSA+IDApIHsKKyAgICAgICAgICAgICAgICAqKHBPdXQrKykgPSBzMTVfdG9fYXVkaW9fc2FtcGxlX3QoKihwSW4xNisrKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwSW4gPSBwSW4xNjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGFzc2VydChmYWxzZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBDb252ZXJ0cyBhdWRpb19zYW1wbGVfdCBzYW1wbGVzIGZyb20gdGhlIGludGVybWVkaWF0ZSBidWZmZXIgdG8gdGhlCisgICAgLy8gb3V0cHV0IGJ1ZmZlciwgY29udmVydGluZyB0byB0aGUgZGVzaXJlZCBmb3JtYXQgYW5kIGJ1ZmZlciBiZWhhdmlvci4KKyAgICAvLyBwT3V0ICAgICAgICAgVGhlIGJ1ZmZlciB0byB3cml0ZSB0aGUgb3V0cHV0IHRvLgorICAgIC8vICAgICAgICAgICAgICBXaGVuIGZ1bmN0aW9uIGV4aXN0IHdpbGwgcG9pbnQgdG8gdGhlIG5leHQgb3V0cHV0IHNhbXBsZS4KKyAgICAvLyBudW1TYW1wbGVzICAgVGhlIG51bWJlciBvZiBzaW5nbGUtY2hhbm5lbCBzYW1wbGVzIHRvIHByb2Nlc3MuCisgICAgdm9pZCBDb252ZXJ0T3V0cHV0KHZvaWQgKiYgcE91dCwgdWludDMyX3QgbnVtU2FtcGxlcykgeworICAgICAgICBpZiAobVBjbUZvcm1hdCA9PSBTQU1QTEVfRk9STUFUX1BDTV9TMTUpIHsKKyAgICAgICAgICAgIGNvbnN0IGF1ZGlvX3NhbXBsZV90ICogcEluID0gbUJ1ZmZlcjsKKyAgICAgICAgICAgIGludDE2X3QgKiBwT3V0MTYgPSByZWludGVycHJldF9jYXN0PGludDE2X3QgKj4ocE91dCk7CisgICAgICAgICAgICBpZiAobUJlaGF2aW9yID09IEVGRkVDVF9CVUZGRVJfQUNDRVNTX1dSSVRFKSB7CisgICAgICAgICAgICAgICAgd2hpbGUgKG51bVNhbXBsZXMtLSA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgKihwT3V0MTYrKykgPSBhdWRpb19zYW1wbGVfdF90b19zMTVfY2xpcCgqKHBJbisrKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChtQmVoYXZpb3IgPT0gRUZGRUNUX0JVRkZFUl9BQ0NFU1NfQUNDVU1VTEFURSkgeworICAgICAgICAgICAgICAgIHdoaWxlIChudW1TYW1wbGVzLS0gPiAwKSB7CisgICAgICAgICAgICAgICAgICAgICoocE91dDE2KyspICs9IGF1ZGlvX3NhbXBsZV90X3RvX3MxNV9jbGlwKCoocEluKyspKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGFzc2VydChmYWxzZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwT3V0ID0gcE91dDE2OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYXNzZXJ0KGZhbHNlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIEFjY3VtdWxhdGUgZGF0YSBmcm9tIHRoZSBpbnRlcm1lZGlhdGUgYnVmZmVyIHRvIHRoZSBvdXRwdXQuIE91dHB1dCBpcworICAgIC8vIGFzc3VtZWQgdG8gYmUgb2YgYXVkaW9fc2FtcGxlX3QgdHlwZS4KKyAgICAvLyBwT3V0ICAgICAgICAgVGhlIGJ1ZmZlciB0byBtaXggdGhlIG91dHB1dCB0by4KKyAgICAvLyAgICAgICAgICAgICAgV2hlbiBmdW5jdGlvbiBleGlzdCB3aWxsIHBvaW50IHRvIHRoZSBuZXh0IG91dHB1dCBzYW1wbGUuCisgICAgLy8gbnVtU2FtcGxlcyAgIFRoZSBudW1iZXIgb2Ygc2luZ2xlLWNoYW5uZWwgc2FtcGxlcyB0byBwcm9jZXNzLgorICAgIHZvaWQgTWl4T3V0cHV0KHZvaWQgKiYgcE91dCwgdWludDMyX3QgbnVtU2FtcGxlcykgeworICAgICAgICBjb25zdCBhdWRpb19zYW1wbGVfdCAqIHBJbiA9IG1CdWZmZXI7CisgICAgICAgIGF1ZGlvX3NhbXBsZV90ICogcE91dDI0ID0gcmVpbnRlcnByZXRfY2FzdDxhdWRpb19zYW1wbGVfdCAqPihwT3V0KTsKKyAgICAgICAgbnVtU2FtcGxlcyAqPSBtTnVtQ2hhbm5lbHM7CisgICAgICAgIHdoaWxlIChudW1TYW1wbGVzLS0gPiAwKSB7CisgICAgICAgICAgICAqKHBPdXQyNCsrKSArPSAqKHBJbisrKTsKKyAgICAgICAgfQorICAgICAgICBwT3V0ID0gcE91dDI0OworICAgIH0KK307CisKK30KKworI2VuZGlmIC8vIEFVRElPRk9STUFUQURBUFRFUl9IXwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZWZmZWN0cy9BdWRpb0hpZ2hTaGVsZkZpbHRlckNvZWYuaW5sIGIvbWVkaWEvbGliZWZmZWN0cy9BdWRpb0hpZ2hTaGVsZkZpbHRlckNvZWYuaW5sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViYmExMzkKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJlZmZlY3RzL0F1ZGlvSGlnaFNoZWxmRmlsdGVyQ29lZi5pbmwKQEAgLTAsMCArMSwyMjUgQEAKKzEzNjc5LAorMjE1NzUsCis4OTIxLAorMzIzMTUwNTYsCistMTU1ODIwMTUsCisyNjE3MiwKKzM3Njc4LAorMTQ3OTcsCiszMTg5MTA5NiwKKy0xNTE5MjUyNywKKzUxMDIwLAorNjQ0NDksCisyMzk0NSwKKzMxMzIyOTg4LAorLTE0Njg1MTg2LAorMTAxODE3LAorMTA2MTQ0LAorMzc3NDQsCiszMDU2Mjg4MiwKKy0xNDAzMTM3MiwKKzIwODk5NiwKKzE2MjE2MywKKzU4NTM2LAorMjk1NDg1MzgsCistMTMyMDEwMTcsCis0NDI5OTYsCisyMDc0NTksCis5MzMwMCwKKzI4MjAwNzkyLAorLTEyMTY3MzMxLAorOTcxNDIzLAorMTI4Nzg2LAorMTY5NjkwLAorMjY0MjI3NDQsCistMTA5MTU0MjgsCisyMjAwNDYxLAorLTQ2NTY4NiwKKzM5NDk4NiwKKzI0MTAzMzE3LAorLTk0NTU4NjIsCis1MTE5OTkxLAorLTI3NzcxOTksCisxMTQ3MjQ1LAorMjExMjk0NzMsCistNzg0MjI5NCwKKzEyMTIwMzc5LAorLTEwMTk4MTYwLAorMzYzMTU0NCwKKzE3NDExODM3LAorLTYxODgzODQsCisyODgzNDIzNCwKKy0zMTY0NzEzNSwKKzExMzM3Nzk1LAorMTI5MjQ5NjAsCistNDY3MjYzOCwKKzY4MDM3NzY2LAorLTg4OTc0Mzg4LAorMzM0NzcyNTUsCis3NzUyNjgwLAorLTM1MTYwOTgsCisxNTczNjk5NDQsCistMjMyMDYzMTYwLAorOTIyODIxMjksCisyMTEzOTI2LAorLTI5MjU2MjQsCiszNTM3MjAxMTIsCistNTY3NDI3MTQ0LAorMjM3MTY0MTEyLAorLTM2NTk5OTMsCistMzAxOTg3MSwKKzc2OTA5MTE1MSwKKy0xMzA5ODcxOTQ5LAorNTcwNTM5NDMwLAorLTkyMDIxMTQsCistMzc3OTMwMiwKKzY2NzkxLAorMTIxNzA2LAorNTU4ODgsCiszMDU3MTI0NSwKKy0xNDAzODQxNSwKKzEyMDQyNiwKKzIxMjE3OCwKKzk0ODIwLAorMjk1NTk2NzksCistMTMyMDk4ODYsCisyMTcxMzAsCiszNjUxNjUsCisxNTc2MTAsCisyODIxNTU1NCwKKy0xMjE3ODI0MywKKzM5MTQ4OSwKKzYxNzAxNiwKKzI1NTAxMCwKKzI2NDQyMTMxLAorLTEwOTI4NDMxLAorNzA1ODYyLAorMTAxNTE0NywKKzM5ODQ1NywKKzI0MTI4NDMwLAorLTk0NzA2ODAsCisxMjcyNjgyLAorMTYwNTI1MSwKKzU5NjEwMiwKKzIxMTYxMzM0LAorLTc4NTgxNTMsCisyMjk0NjY4LAorMjM4NjgzMywKKzg0ODUyMywKKzE3NDUxMDcyLAorLTYyMDM4ODAsCis0MTM3MzI3LAorMzE5ODc4OSwKKzExNTU1MzYsCisxMjk3MTM2MiwKKy00Njg1Nzk4LAorNzQ1OTY3NSwKKzM0NzAyNjYsCisxNTY3MjE5LAorNzgwNDgxOCwKKy0zNTI0NzYxLAorMTM0NDk5MjYsCisxNzM4OTExLAorMjM0NzQwNiwKKzIxNjkwODksCistMjkyODExNiwKKzI0MjUwNDU1LAorLTUyMTEyNDEsCis0MzU4OTcxLAorLTM2MDUyOTgsCistMzAxNTY3MSwKKzQzNzI0MDAxLAorLTIzODQ5NTcwLAorOTgyMzMxNSwKKy05MTUxMjUzLAorLTM3NjkyNzcsCis3ODgzNTE1MCwKKy02NjU0MjM3NSwKKzIzNjg2MzczLAorLTE0MTYxMTQzLAorLTUwNDA3OTAsCisxNDIxNDExNzMsCistMTU2MzI0MjYxLAorNTYwMjQyMzQsCistMTg0NTEyNzUsCistNjYxMjY1NiwKKzI1NjI4MzA1NywKKy0zMzU2MDYzMjYsCisxMjYzNDEyNDQsCistMjE5NzAwMDQsCistODI3MDc1NSwKKzE2Nzc3MjE2LAorMzM1NTQ0MzIsCisxNjc3NzIxNiwKKy0zMzU1NDQzMiwKKy0xNjc3NzIxNiwKKzE2Nzc3MjE2LAorMzM1NTQ0MzIsCisxNjc3NzIxNiwKKy0zMzU1NDQzMiwKKy0xNjc3NzIxNiwKKzE2Nzc3MjE2LAorMzM1NTQ0MzIsCisxNjc3NzIxNiwKKy0zMzU1NDQzMiwKKy0xNjc3NzIxNiwKKzE2Nzc3MjE2LAorMzM1NTQ0MzIsCisxNjc3NzIxNiwKKy0zMzU1NDQzMiwKKy0xNjc3NzIxNiwKKzE2Nzc3MjE2LAorMzM1NTQ0MzIsCisxNjc3NzIxNiwKKy0zMzU1NDQzMiwKKy0xNjc3NzIxNiwKKzE2Nzc3MjE2LAorMzM1NTQ0MzIsCisxNjc3NzIxNiwKKy0zMzU1NDQzMiwKKy0xNjc3NzIxNiwKKzE2Nzc3MjE2LAorMzM1NTQ0MzIsCisxNjc3NzIxNiwKKy0zMzU1NDQzMiwKKy0xNjc3NzIxNiwKKzE2Nzc3MjE2LAorMzM1NTQ0MzIsCisxNjc3NzIxNiwKKy0zMzU1NDQzMiwKKy0xNjc3NzIxNiwKKzE2Nzc3MjE2LAorMzM1NTQ0MzIsCisxNjc3NzIxNiwKKy0zMzU1NDQzMiwKKy0xNjc3NzIxNiwKKzE2Nzc3MjE2LAorMzM1NTQ0MzIsCisxNjc3NzIxNiwKKy0zMzU1NDQzMiwKKy0xNjc3NzIxNiwKKzE2Nzc3MjE2LAorMzM1NTQ0MzIsCisxNjc3NzIxNiwKKy0zMzU1NDQzMiwKKy0xNjc3NzIxNiwKKzE2Nzc3MjE2LAorMzM1NTQ0MzIsCisxNjc3NzIxNiwKKy0zMzU1NDQzMiwKKy0xNjc3NzIxNiwKKzE2Nzc3MjE2LAorMzM1NTQ0MzIsCisxNjc3NzIxNiwKKy0zMzU1NDQzMiwKKy0xNjc3NzIxNiwKKzE2Nzc3MjE2LAorMzM1NTQ0MzIsCisxNjc3NzIxNiwKKy0zMzU1NDQzMiwKKy0xNjc3NzIxNiwKKzE2Nzc3MjE2LAorMzM1NTQ0MzIsCisxNjc3NzIxNiwKKy0zMzU1NDQzMiwKKy0xNjc3NzIxNiwKZGlmZiAtLWdpdCBhL21lZGlhL2xpYmVmZmVjdHMvQXVkaW9Mb3dTaGVsZkZpbHRlckNvZWYuaW5sIGIvbWVkaWEvbGliZWZmZWN0cy9BdWRpb0xvd1NoZWxmRmlsdGVyQ29lZi5pbmwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjU3ZGViNAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYmVmZmVjdHMvQXVkaW9Mb3dTaGVsZkZpbHRlckNvZWYuaW5sCkBAIC0wLDAgKzEsMzc1IEBACisxNjIxMjUwNiwKKy0zMjQyMDU3NCwKKzE2MjA4MDY4LAorMzI0MDE0MTEsCistMTU2NjI1MjEsCisxNjM1NjEyOSwKKy0zMjcwNjI0NiwKKzE2MzUwMTE4LAorMzI2OTU1MjUsCistMTU5Mzk3NTIsCisxNjQ2NDM5OSwKKy0zMjkyMDY3MCwKKzE2NDU2Mjc0LAorMzI5MTQ2ODYsCistMTYxNDk0NDEsCisxNjU0NjEyOCwKKy0zMzA4MTI4OSwKKzE2NTM1MTY1LAorMzMwNzc5NTUsCistMTYzMDc0MTEsCisxNjYwODEwMSwKKy0zMzIwMTQyMiwKKzE2NTkzMzI4LAorMzMxOTk1NjksCistMTY0MjYwNjcsCisxNjY1NTUzOSwKKy0zMzI5MTE3NCwKKzE2NjM1NjQ3LAorMzMyOTAxNDcsCistMTY1MTQ5OTcsCisxNjY5MjQ3OCwKKy0zMzM1ODE3MSwKKzE2NjY1NzE1LAorMzMzNTc2MDgsCistMTY1ODE1NDAsCisxNjcyMjA4OSwKKy0zMzQwODE0OSwKKzE2Njg2MDk5LAorMzM0MDc4NTAsCistMTY2MzEyNzEsCisxNjc0NjkzMCwKKy0zMzQ0NTQwOSwKKzE2Njk4NTQ5LAorMzM0NDUyNjcsCistMTY2Njg0MDUsCisxNjc2OTE1NiwKKy0zMzQ3MzE2OCwKKzE2NzA0MTM4LAorMzM0NzMxMzMsCistMTY2OTYxMTQsCisxNjc5MDcwNiwKKy0zMzQ5MzgyNywKKzE2NzAzMzQ4LAorMzM0OTM4ODYsCistMTY3MTY3NzksCisxNjgxMzQ2NiwKKy0zMzUwOTE2NiwKKzE2Njk2MTExLAorMzM1MDkzNDIsCistMTY3MzIxODYsCisxNjgzOTQzNywKKy0zMzUyMDQ5OCwKKzE2NjgxODAyLAorMzM1MjA4NTIsCistMTY3NDM2NjksCisxNjg3MDkxMSwKKy0zMzUyODc2NSwKKzE2NjU5MTkxLAorMzM1Mjk0MjQsCistMTY3NTIyMjYsCisxNjkxMDY4MSwKKy0zMzUzNDYwNywKKzE2NjI2MzM3LAorMzM1MzU4MDcsCistMTY3NTg2MDIsCisxNTY2NzQwMSwKKy0zMTMyNjIyNCwKKzE1NjU4ODI1LAorMzEyNTIxNjEsCistMTQ2MjMwNzQsCisxNTk0NTg2NSwKKy0zMTg4MDAwNywKKzE1OTM0MTQ2LAorMzE4MzgyMDUsCistMTUxNDQ1OTcsCisxNjE1NzUyMSwKKy0zMjI5OTA5MSwKKzE2MTQxNTc4LAorMzIyNzU2MDQsCistMTU1NDUzNjksCisxNjMxODI2NywKKy0zMjYxNDkwMywKKzE2Mjk2NjUxLAorMzI2MDE3NTUsCistMTU4NTA4NTAsCisxNjQ0MDcxMCwKKy0zMjg1MjE1NywKKzE2NDExNDczLAorMzI4NDQ4MjAsCistMTYwODIzMDMsCisxNjUzNDc1MSwKKy0zMzAyOTk4NSwKKzE2NDk1MjgxLAorMzMwMjU5MTAsCistMTYyNTY4OTEsCisxNjYwODE3MSwKKy0zMzE2MzA0MywKKzE2NTU0OTU3LAorMzMxNjA4MDMsCistMTYzODgxNTIsCisxNjY2NzE0NSwKKy0zMzI2MjQ2OCwKKzE2NTk1NDc3LAorMzMyNjEyNzUsCistMTY0ODY1OTksCisxNjcxNjY5OSwKKy0zMzMzNjY3MSwKKzE2NjIwMjUyLAorMzMzMzYxMDUsCistMTY1NjAzMDEsCisxNjc2MTEwMCwKKy0zMzM5MTk3NiwKKzE2NjMxMzc5LAorMzMzOTE4MzYsCistMTY2MTU0MDQsCisxNjgwNDIwNywKKy0zMzQzMzEwMywKKzE2NjI5ODA2LAorMzM0MzMzNDEsCistMTY2NTY1NjAsCisxNjg0OTc5NCwKKy0zMzQ2MzU1MSwKKzE2NjE1Mzk5LAorMzM0NjQyNTEsCistMTY2ODcyNzcsCisxNjkwMTg4NywKKy0zMzQ4NTg1NywKKzE2NTg2OTMzLAorMzM0ODcyNzEsCistMTY3MTAxODksCisxNjk2NTEyNSwKKy0zMzUwMTc4MSwKKzE2NTQyMDAwLAorMzM1MDQ0MTUsCistMTY3MjcyNzQsCisxNzA0NTE5OCwKKy0zMzUxMjM4NCwKKzE2NDc2ODI0LAorMzM1MTcxODMsCistMTY3NDAwMDgsCisxNDYzNTIwMSwKKy0yOTI1NDM3NiwKKzE0NjE5MTg0LAorMjg5Nzc3MTEsCistMTI3NTM4MzQsCisxNTE1NzU1NiwKKy0zMDI5MjgyNSwKKzE1MTM1Mjg1LAorMzAxMzM5MzgsCistMTM2NzQ1MTMsCisxNTU2MTUxMSwKKy0zMTA5MjI5OCwKKzE1NTMwODE3LAorMzEwMDE4NjAsCistMTQ0MDU1NTEsCisxNTg3MjIxMSwKKy0zMTcwMjM0MiwKKzE1ODMwMTg3LAorMzE2NTEyMTgsCistMTQ5NzYzMDYsCisxNjExMTA5NCwKKy0zMjE2NDgzNCwKKzE2MDUzODQzLAorMzIxMzYxMDEsCistMTU0MTY0NTMsCisxNjI5NTg0OCwKKy0zMjUxMzgwMiwKKzE2MjE4MTQwLAorMzI0OTc3NTcsCistMTU3NTI4MTcsCisxNjQ0MDg1MiwKKy0zMjc3NjE3OSwKKzE2MzM1NjY1LAorMzI3NjczMjYsCistMTYwMDgxNTUsCisxNjU1NzgwNCwKKy0zMjk3MjkwNywKKzE2NDE1NzE1LAorMzI5NjgxNzksCistMTYyMDEwMzEsCisxNjY1NjQwMywKKy0zMzEyMDA1MiwKKzE2NDY0NzU4LAorMzMxMTc4MDIsCistMTYzNDYxOTUsCisxNjc0NTAwMSwKKy0zMzIyOTgwNSwKKzE2NDg2ODEwLAorMzMyMjkyNDcsCistMTY0NTUxNTMsCisxNjgzMTI0MCwKKy0zMzMxMTMwNiwKKzE2NDgzNjkyLAorMzMzMTIyNTIsCistMTY1MzY3NzEsCisxNjkyMjY4MiwKKy0zMzM3MTI3OCwKKzE2NDU1MTQ1LAorMzMzNzQwNzAsCistMTY1OTc4MTksCisxNzAyNzQ3MiwKKy0zMzQxNDQ2NSwKKzE2Mzk4ODE4LAorMzM0MjAxMTAsCistMTY2NDM0MzAsCisxNzE1NTEwOCwKKy0zMzQ0Mzg3NSwKKzE2MzEwMTEwLAorMzM0NTQzOTgsCistMTY2Nzc0NzksCisxNzMxNzM4NCwKKy0zMzQ2MDc2MCwKKzE2MTgxODg3LAorMzM0Nzk5MzMsCistMTY3MDI4ODIsCisxMjc5MjcwMywKKy0yNTU1NzM4OCwKKzEyNzY0NzE2LAorMjQ1OTA1MDcsCistOTc0NzA4NSwKKzEzNzA2NDY1LAorLTI3MzcyNjIxLAorMTM2NjYyMTUsCisyNjc5ODI5NiwKKy0xMTE2OTc5MCwKKzE0NDM5NDI1LAorLTI4ODIxODMwLAorMTQzODI1MTgsCisyODQ4NjQ2OSwKKy0xMjM4MDA4OCwKKzE1MDE4NDUzLAorLTI5OTU3MjczLAorMTQ5MzkwMzAsCisyOTc2NDAxOCwKKy0xMzM3MzUyMiwKKzE1NDcyNDYwLAorLTMwODM0NzU3LAorMTUzNjI2ODgsCiszMDcyNDU2OCwKKy0xNDE2ODEyMCwKKzE1ODI4NzI1LAorLTMxNTA2MTIzLAorMTU2NzgxMTgsCiszMTQ0MzkyOCwKKy0xNDc5MTgyMiwKKzE2MTExNDA2LAorLTMyMDE1OTg4LAorMTU5MDU5MDEsCiszMTk4MTM5MSwKKy0xNTI3NDY4OCwKKzE2MzQxMzI5LAorLTMyNDAwOTg0LAorMTYwNjIwNjEsCiszMjM4MjM5OCwKKy0xNTY0NDc2MSwKKzE2NTM2NDg0LAorLTMyNjkwMjM4LAorMTYxNTgxMzMsCiszMjY4MTM1NCwKKy0xNTkyNjI4NiwKKzE2NzEyODUzLAorLTMyOTA2MzM3LAorMTYyMDE0MzIsCiszMjkwNDEyOCwKKy0xNjEzOTI3OCwKKzE2ODg1NDMwLAorLTMzMDY2MzM2LAorMTYxOTUzMDYsCiszMzA3MDA5MCwKKy0xNjI5OTc2NywKKzE3MDY5Mzc3LAorLTMzMTgyNTk5LAorMTYxMzkyODIsCiszMzE5MzcxMSwKKy0xNjQyMDMzMiwKKzE3MjgxMzcxLAorLTMzMjYzMjk0LAorMTYwMjkwMzksCiszMzI4NTc4NSwKKy0xNjUxMDcwMiwKKzE3NTQxMjcxLAorLTMzMzEyMzkwLAorMTU4NTYyNDMsCiszMzM1NDM1OSwKKy0xNjU3ODMyOSwKKzE3ODc0MzMwLAorLTMzMzI4OTAyLAorMTU2MDgyODcsCiszMzQwNTQzMCwKKy0xNjYyODg3MywKKzk4ODEyNzksCistMTk3MTkyNjgsCis5ODM4MDg0LAorMTY3MzQzMDMsCistNTkyNzExMSwKKzExMjY0ODU3LAorLTIyNDYzNDQ3LAorMTExOTg3ODQsCisyMDU3NzU4NCwKKy03NTcyMjg4LAorMTI0NjA3MzYsCistMjQ4MjMwNDYsCisxMjM2MjY5NywKKzIzNjY3MzU5LAorLTkyMDE5MDMsCisxMzQ1OTgwNSwKKy0yNjc3Njg1MSwKKzEzMzE3Nzk5LAorMjYwODU2ODMsCistMTA2OTE1NTUsCisxNDI3NjI4NywKKy0yODM0OTI1NiwKKzE0MDc0NDA2LAorMjc5NDM4OTksCistMTE5Nzg4MzQsCisxNDkzNjk0MywKKy0yOTU4ODI0OCwKKzE0NjU0MDExLAorMjkzNTQ1MzMsCistMTMwNDc0NTMsCisxNTQ3MzMwMCwKKy0zMDU0OTI5OSwKKzE1MDgxMDM2LAorMzA0MTcyMDMsCistMTM5MDkyMTYsCisxNTkxNzI3MSwKKy0zMTI4NTc4OCwKKzE1Mzc3ODE3LAorMzEyMTM5NzIsCistMTQ1ODk2ODcsCisxNjI5OTM4NCwKKy0zMTg0NDMyMCwKKzE1NTYyMDA2LAorMzE4MDk2ODMsCistMTUxMTg4MTEsCisxNjY0ODc3NCwKKy0zMjI2Mjk5OSwKKzE1NjQ1NDE0LAorMzIyNTQzMjksCistMTU1MjU2NDEsCisxNjk5NDI3NywKKy0zMjU3MTA5MCwKKzE1NjMzNjA3LAorMzI1ODU4OTUsCistMTU4MzU4NjIsCisxNzM2NjM3NCwKKy0zMjc4OTAxOSwKKzE1NTI1ODAxLAorMzI4MzMwMDMsCistMTYwNzA5NzUsCisxNzc5OTk1NSwKKy0zMjkyNzgzNCwKKzE1MzE0ODk1LAorMzMwMTcxMDcsCistMTYyNDgzNjEsCisxODMzODIwNiwKKy0zMjk4NzMxOCwKKzE0OTg3Njg2LAorMzMxNTQyNDYsCistMTYzODE3NDcsCisxOTAzODI3MCwKKy0zMjk1MTU0NSwKKzE0NTI1NTkyLAorMzMyNTYzOTIsCistMTY0ODE4MDAsCmRpZmYgLS1naXQgYS9tZWRpYS9saWJlZmZlY3RzL0F1ZGlvUGVha2luZ0ZpbHRlci5jcHAgYi9tZWRpYS9saWJlZmZlY3RzL0F1ZGlvUGVha2luZ0ZpbHRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjBmZWZlNgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYmVmZmVjdHMvQXVkaW9QZWFraW5nRmlsdGVyLmNwcApAQCAtMCwwICsxLDEyMSBAQAorLyogLy9kZXZpY2UvaW5jbHVkZS9zZXJ2ZXIvQXVkaW9GbGluZ2VyL0F1ZGlvUGVha2luZ0ZpbHRlci5jcHAKKyAqKgorICoqIENvcHlyaWdodCAyMDA3LCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKioKKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKioKKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKioKKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2luY2x1ZGUgIkF1ZGlvUGVha2luZ0ZpbHRlci5oIgorI2luY2x1ZGUgIkF1ZGlvQ29tbW9uLmgiCisjaW5jbHVkZSAiRWZmZWN0c01hdGguaCIKKworI2luY2x1ZGUgPG5ldz4KKyNpbmNsdWRlIDxhc3NlcnQuaD4KKworI2RlZmluZSBMSUtFTFkoIGV4cCApICAgICAgIChfX2J1aWx0aW5fZXhwZWN0KCAoZXhwKSAhPSAwLCB0cnVlICApKQorI2RlZmluZSBVTkxJS0VMWSggZXhwICkgICAgIChfX2J1aWx0aW5fZXhwZWN0KCAoZXhwKSAhPSAwLCBmYWxzZSApKQorCituYW1lc3BhY2UgYW5kcm9pZCB7CisvLyBGb3JtYXQgb2YgdGhlIGNvZWZmaWNpZW50IHRhYmxlOgorLy8ga0NvZWZUYWJsZVtmcmVxXVtnYWluXVtid11bY29lZl0KKy8vIGZyZXEgLSBwZWFrIGZyZXF1ZW5jeSwgaW4gb2N0YXZlcyBiZWxvdyBOeXF1aXN0LGZyb20gLTkgdG8gLTEuCisvLyBnYWluIC0gZ2FpbiwgaW4gbWlsbGliZWwsIHN0YXJ0aW5nIGF0IC05NjAwLCBqdW1wcyBvZiAxMDI0LCB0byA0NzM2IG1pbGxpYmVsLgorLy8gYncgICAtIGJhbmR3aWR0aCwgc3RhcnRpbmcgYXQgMSBjZW50LCBqdW1wcyBvZiAxMDI0LCB0byAzMDczIGNlbnRzLgorLy8gY29lZiAtIDA6IGIwCisvLyAgICAgICAgMTogYjEKKy8vICAgICAgICAyOiBiMgorLy8gICAgICAgIDM6IC1hMQorLy8gICAgICAgIDQ6IC1hMgorc3RhdGljIGNvbnN0IHNpemVfdCBrSW5EaW1zWzNdID0gezksIDE1LCA0fTsKK3N0YXRpYyBjb25zdCBhdWRpb19jb2VmX3Qga0NvZWZUYWJsZVs5KjE1KjQqNV0gPSB7CisjaW5jbHVkZSAiQXVkaW9QZWFraW5nRmlsdGVyQ29lZi5pbmwiCit9OworCitBdWRpb0NvZWZJbnRlcnBvbGF0b3IgQXVkaW9QZWFraW5nRmlsdGVyOjptQ29lZkludGVycCgzLCBrSW5EaW1zLCA1LCAoY29uc3QgYXVkaW9fY29lZl90Kikga0NvZWZUYWJsZSk7CisKK0F1ZGlvUGVha2luZ0ZpbHRlcjo6QXVkaW9QZWFraW5nRmlsdGVyKGludCBuQ2hhbm5lbHMsIGludCBzYW1wbGVSYXRlKQorICAgICAgICA6IG1CaXF1YWQobkNoYW5uZWxzLCBzYW1wbGVSYXRlKSB7CisgICAgY29uZmlndXJlKG5DaGFubmVscywgc2FtcGxlUmF0ZSk7CisgICAgcmVzZXQoKTsKK30KKwordm9pZCBBdWRpb1BlYWtpbmdGaWx0ZXI6OmNvbmZpZ3VyZShpbnQgbkNoYW5uZWxzLCBpbnQgc2FtcGxlUmF0ZSkgeworICAgIG1OaXF1aXN0RnJlcSA9IHNhbXBsZVJhdGUgKiA1MDA7CisgICAgbUZyZXF1ZW5jeUZhY3RvciA9ICgoMXVsbCkgPDwgNDIpIC8gbU5pcXVpc3RGcmVxOworICAgIG1CaXF1YWQuY29uZmlndXJlKG5DaGFubmVscywgc2FtcGxlUmF0ZSk7CisgICAgc2V0RnJlcXVlbmN5KG1Ob21pbmFsRnJlcXVlbmN5KTsKKyAgICBjb21taXQodHJ1ZSk7Cit9CisKK3ZvaWQgQXVkaW9QZWFraW5nRmlsdGVyOjpyZXNldCgpIHsKKyAgICBzZXRHYWluKDApOworICAgIHNldEZyZXF1ZW5jeSgwKTsKKyAgICBzZXRCYW5kd2lkdGgoMjQwMCk7CisgICAgY29tbWl0KHRydWUpOworfQorCit2b2lkIEF1ZGlvUGVha2luZ0ZpbHRlcjo6c2V0RnJlcXVlbmN5KHVpbnQzMl90IG1pbGxpaGVydHopIHsKKyAgICBtTm9taW5hbEZyZXF1ZW5jeSA9IG1pbGxpaGVydHo7CisgICAgaWYgKFVOTElLRUxZKG1pbGxpaGVydHogPiBtTmlxdWlzdEZyZXEgLyAyKSkgeworICAgICAgICBtaWxsaWhlcnR6ID0gbU5pcXVpc3RGcmVxIC8gMjsKKyAgICB9CisgICAgdWludDMyX3Qgbm9ybUZyZXEgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oCisgICAgICAgICAgICAoc3RhdGljX2Nhc3Q8dWludDY0X3Q+KG1pbGxpaGVydHopICogbUZyZXF1ZW5jeUZhY3RvcikgPj4gMTApOworICAgIGlmIChMSUtFTFkobm9ybUZyZXEgPiAoMSA8PCAyMykpKSB7CisgICAgICAgIG1GcmVxdWVuY3kgPSAoRWZmZWN0c19sb2cyKG5vcm1GcmVxKSAtICgoMzItOSkgPDwgMTUpKSA8PCAoRlJFUV9QUkVDSVNJT05fQklUUyAtIDE1KTsKKyAgICB9IGVsc2UgeworICAgICAgICBtRnJlcXVlbmN5ID0gMDsKKyAgICB9Cit9CisKK3ZvaWQgQXVkaW9QZWFraW5nRmlsdGVyOjpzZXRHYWluKGludDMyX3QgbWlsbGliZWwpIHsKKyAgICBtR2FpbiA9IG1pbGxpYmVsICsgOTYwMDsKK30KKwordm9pZCBBdWRpb1BlYWtpbmdGaWx0ZXI6OnNldEJhbmR3aWR0aCh1aW50MzJfdCBjZW50cykgeworICAgIG1CYW5kd2lkdGggPSBjZW50cyAtIDE7Cit9CisKK3ZvaWQgQXVkaW9QZWFraW5nRmlsdGVyOjpjb21taXQoYm9vbCBpbW1lZGlhdGUpIHsKKyAgICBhdWRpb19jb2VmX3QgY29lZnNbNV07CisgICAgaW50IGludENvb3JkWzNdID0geworICAgICAgICBtRnJlcXVlbmN5ID4+IEZSRVFfUFJFQ0lTSU9OX0JJVFMsCisgICAgICAgIG1HYWluID4+IEdBSU5fUFJFQ0lTSU9OX0JJVFMsCisgICAgICAgIG1CYW5kd2lkdGggPj4gQkFORFdJRFRIX1BSRUNJU0lPTl9CSVRTCisgICAgfTsKKyAgICB1aW50MzJfdCBmcmFjQ29vcmRbM10gPSB7CisgICAgICAgIG1GcmVxdWVuY3kgPDwgKDMyIC0gRlJFUV9QUkVDSVNJT05fQklUUyksCisgICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90PihtR2FpbikgPDwgKDMyIC0gR0FJTl9QUkVDSVNJT05fQklUUyksCisgICAgICAgIG1CYW5kd2lkdGggPDwgKDMyIC0gQkFORFdJRFRIX1BSRUNJU0lPTl9CSVRTKQorICAgIH07CisgICAgbUNvZWZJbnRlcnAuZ2V0Q29lZihpbnRDb29yZCwgZnJhY0Nvb3JkLCBjb2Vmcyk7CisgICAgbUJpcXVhZC5zZXRDb2Vmcyhjb2VmcywgaW1tZWRpYXRlKTsKK30KKwordm9pZCBBdWRpb1BlYWtpbmdGaWx0ZXI6OmdldEJhbmRSYW5nZSh1aW50MzJfdCAmIGxvdywgdWludDMyX3QgJiBoaWdoKSBjb25zdCB7CisgICAgLy8gSGFsZiBiYW5kd2lkdGgsIGluIG9jdGF2ZXMsIDE1LWJpdCBwcmVjaXNpb24KKyAgICBpbnQzMl90IGhhbGZCVyA9ICgoKG1CYW5kd2lkdGggKyAxKSAvIDIpIDw8IDE1KSAvIDEyMDA7CisKKyAgICBsb3cgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oKHN0YXRpY19jYXN0PHVpbnQ2NF90PihtTm9taW5hbEZyZXF1ZW5jeSkgKiBFZmZlY3RzX2V4cDIoLWhhbGZCVyArICgxNiA8PCAxNSkpKSA+PiAxNik7CisgICAgaWYgKFVOTElLRUxZKGhhbGZCVyA+PSAoMTYgPDwgMTUpKSkgeworICAgICAgICBoaWdoID0gbU5pcXVpc3RGcmVxOworICAgIH0gZWxzZSB7CisgICAgICAgIGhpZ2ggPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4oKHN0YXRpY19jYXN0PHVpbnQ2NF90PihtTm9taW5hbEZyZXF1ZW5jeSkgKiBFZmZlY3RzX2V4cDIoaGFsZkJXICsgKDE2IDw8IDE1KSkpID4+IDE2KTsKKyAgICAgICAgaWYgKFVOTElLRUxZKGhpZ2ggPiBtTmlxdWlzdEZyZXEpKSB7CisgICAgICAgICAgICBoaWdoID0gbU5pcXVpc3RGcmVxOworICAgICAgICB9CisgICAgfQorfQorCit9CisKZGlmZiAtLWdpdCBhL21lZGlhL2xpYmVmZmVjdHMvQXVkaW9QZWFraW5nRmlsdGVyLmggYi9tZWRpYS9saWJlZmZlY3RzL0F1ZGlvUGVha2luZ0ZpbHRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwZjQ5YzkKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJlZmZlY3RzL0F1ZGlvUGVha2luZ0ZpbHRlci5oCkBAIC0wLDAgKzEsMTUxIEBACisvKiAvL2RldmljZS9pbmNsdWRlL3NlcnZlci9BdWRpb0ZsaW5nZXIvQXVkaW9QZWFraW5nRmlsdGVyLmgKKyoqCisqKiBDb3B5cmlnaHQgMjAwOSwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorKioKKyoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisqKgorKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorKioKKyoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorKi8KKworI2lmbmRlZiBBTkRST0lEX0FVRElPX1BFQUtJTkdfRklMVEVSX0gKKyNkZWZpbmUgQU5EUk9JRF9BVURJT19QRUFLSU5HX0ZJTFRFUl9ICisKKyNpbmNsdWRlICJBdWRpb0JpcXVhZEZpbHRlci5oIgorI2luY2x1ZGUgIkF1ZGlvQ29lZkludGVycG9sYXRvci5oIgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKKy8vIEEgcGVha2luZyBhdWRpbyBmaWx0ZXIsIHdpdGggdW5pdHkgc2tpcnQgZ2FpbiwgYW5kIGNvbnRyb2xsYWJsZSBwZWFrCisvLyBmcmVxdWVuY3ksIGdhaW4gYW5kIGJhbmR3aWR0aC4KKy8vIFRoaXMgZmlsdGVyIGlzIGFibGUgdG8gc3VwcHJlc3MgaW50cm9kdWNlIGRpc2NvbnRpbnVpdGllcyBhbmQgb3RoZXIgYXJ0aWZhY3RzCisvLyBpbiB0aGUgb3V0cHV0LCBldmVuIHdoZW4gY2hhbmdpbmcgcGFyYW1ldGVycyBhYnJ1cHRseS4KKy8vIFBhcmFtZXRlcnMgY2FuIGJlIHNldCB0byBhbnkgdmFsdWUgLSB0aGlzIGNsYXNzIHdpbGwgbWFrZSBzdXJlIHRvIGNsaXAgdGhlbQorLy8gd2hlbiB0aGV5IGFyZSBvdXQgb2Ygc3VwcG9ydGVkIHJhbmdlLgorLy8KKy8vIEltcGxlbWVudGF0aW9uIG5vdGVzOgorLy8gVGhpcyBjbGFzcyB1c2VzIGFuIHVuZGVybHlpbmcgYmlxdWFkIGZpbHRlciB3aG9zZSBwYXJhbWV0ZXJzIGFyZSBkZXRlcm1pbmVkCisvLyB1c2luZyBhIGxpbmVhciBpbnRlcnBvbGF0aW9uIGZyb20gYSBjb2VmZmljaWVudCB0YWJsZSwgdXNpbmcgYQorLy8gQXVkaW9Db2VmSW50ZXJwb2xhdG9yLgorLy8gQWxsIGlzIGxlZnQgZm9yIHRoaXMgY2xhc3MgdG8gZG8gaXMgbWFwcGluZyBiZXR3ZWVuIGhpZ2gtbGV2ZWwgcGFyYW1ldGVycyB0bworLy8gZnJhY3Rpb25hbCBpbmRpY2VzIGludG8gdGhlIGNvZWZmaWNpZW50IHRhYmxlLgorY2xhc3MgQXVkaW9QZWFraW5nRmlsdGVyIHsKK3B1YmxpYzoKKyAgICAvLyBDb25zdHJ1Y3Rvci4gUmVzZXRzIHRoZSBmaWx0ZXIgKHNlZSByZXNldCgpKS4KKyAgICAvLyBuQ2hhbm5lbHMgIE51bWJlciBvZiBpbnB1dC9vdXRwdXQgY2hhbm5lbHMgKGludGVybGFjZWQpLgorICAgIC8vIHNhbXBsZVJhdGUgVGhlIGlucHV0L291dHB1dCBzYW1wbGUgcmF0ZSwgaW4gSHouCisgICAgQXVkaW9QZWFraW5nRmlsdGVyKGludCBuQ2hhbm5lbHMsIGludCBzYW1wbGVSYXRlKTsKKworICAgIC8vIFJlY29uZmlndXJhdGlvbiBvZiB0aGUgZmlsdGVyLiBDaGFuZ2VzIGlucHV0L291dHB1dCBmb3JtYXQsIGJ1dCBkb2VzIG5vdAorICAgIC8vIGFsdGVyIGN1cnJlbnQgcGFyYW1ldGVyIHZhbHVlcy4gQ2xlYXJzIGRlbGF5IGxpbmVzLgorICAgIC8vIG5DaGFubmVscyAgTnVtYmVyIG9mIGlucHV0L291dHB1dCBjaGFubmVscyAoaW50ZXJsYWNlZCkuCisgICAgLy8gc2FtcGxlUmF0ZSBUaGUgaW5wdXQvb3V0cHV0IHNhbXBsZSByYXRlLCBpbiBIei4KKyAgICB2b2lkIGNvbmZpZ3VyZShpbnQgbkNoYW5uZWxzLCBpbnQgc2FtcGxlUmF0ZSk7CisKKyAgICAvLyBSZXNldHMgdGhlIGZpbHRlciBwYXJhbWV0ZXJzIHRvIHRoZSBmb2xsb3dpbmcgdmFsdWVzOgorICAgIC8vIGZyZXF1ZW5jeTogMAorICAgIC8vIGdhaW46IDAKKyAgICAvLyBiYW5kd2lkdGg6IDEyMDAgY2VudHMuCisgICAgLy8gSXQgYWxzbyBkaXNhYmxlcyB0aGUgZmlsdGVyLiBEb2VzIG5vdCBjbGVhciB0aGUgZGVsYXkgbGluZXMuCisgICAgdm9pZCByZXNldCgpOworCisgICAgLy8gQ2xlYXJzIGRlbGF5IGxpbmVzLiBEb2VzIG5vdCBhbHRlciBwYXJhbWV0ZXIgdmFsdWVzLgorICAgIHZvaWQgY2xlYXIoKSB7IG1CaXF1YWQuY2xlYXIoKTsgfQorCisgICAgLy8gU2V0cyBnYWluIHZhbHVlLiBBY3R1YWwgY2hhbmdlIHdpbGwgb25seSB0YWtlIHBsYWNlIHVwb24gY29tbWl0KCkuCisgICAgLy8gVGhpcyB2YWx1ZSB3aWxsIGJlIHJlbWVtYmVyZWQgZXZlbiBpZiB0aGUgZmlsdGVyIGlzIGluIGRpc2FibGVkKCkgc3RhdGUuCisgICAgLy8gbWlsbGliZWwgR2FpbiB2YWx1ZSBpbiBtaWxsaWJlbCAoMS8xMDAgb2YgZGVjaWJlbCkuCisgICAgdm9pZCBzZXRHYWluKGludDMyX3QgbWlsbGliZWwpOworCisgICAgLy8gR2V0cyB0aGUgZ2FpbiwgaW4gbWlsbGliZWwsIGFzIHNldC4KKyAgICBpbnQzMl90IGdldEdhaW4oKSBjb25zdCB7IHJldHVybiBtR2FpbiAtIDk2MDA7IH0KKworICAgIC8vIFNldHMgYmFuZHdpZHRoIHZhbHVlLiBBY3R1YWwgY2hhbmdlIHdpbGwgb25seSB0YWtlIHBsYWNlIHVwb24gY29tbWl0KCkuCisgICAgLy8gVGhpcyB2YWx1ZSB3aWxsIGJlIHJlbWVtYmVyZWQgZXZlbiBpZiB0aGUgZmlsdGVyIGlzIGluIGRpc2FibGVkKCkgc3RhdGUuCisgICAgLy8gY2VudHMgQmFuZHdpZHRoIHZhbHVlIGluIGNlbnRzICgxLzEyMDAgb2N0YXZlKS4KKyAgICB2b2lkIHNldEJhbmR3aWR0aCh1aW50MzJfdCBjZW50cyk7CisKKyAgICAvLyBHZXRzIHRoZSBnYWluLCBpbiBjZW50cywgYXMgc2V0LgorICAgIHVpbnQzMl90IGdldEJhbmR3aWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1CYW5kd2lkdGggKyAxOyB9CisKKyAgICAvLyBTZXRzIGZyZXF1ZW5jeSB2YWx1ZS4gQWN0dWFsIGNoYW5nZSB3aWxsIG9ubHkgdGFrZSBwbGFjZSB1cG9uIGNvbW1pdCgpLgorICAgIC8vIFRoaXMgdmFsdWUgd2lsbCBiZSByZW1lbWJlcmVkIGV2ZW4gaWYgdGhlIGZpbHRlciBpcyBpbiBkaXNhYmxlZCgpIHN0YXRlLgorICAgIC8vIG1pbGxpaGVydHogRnJlcXVlbmN5IHZhbHVlIGluIG1Iei4KKyAgICB2b2lkIHNldEZyZXF1ZW5jeSh1aW50MzJfdCBtaWxsaWhlcnR6KTsKKworICAgIC8vIEdldHMgdGhlIGZyZXF1ZW5jeSwgaW4gbUh6LCBhcyBzZXQuCisgICAgdWludDMyX3QgZ2V0RnJlcXVlbmN5KCkgY29uc3QgeyByZXR1cm4gbU5vbWluYWxGcmVxdWVuY3k7IH0KKworICAgIC8vIEdldHMgZ2FpbltkQl0vMiBwb2ludHMuCisgICAgLy8gUmVzdWx0cyBpbiBtSHosIGFuZCBhcmUgY29tcHV0ZWQgYmFzZWQgb24gdGhlIG5vbWluYWwgdmFsdWVzIHNldCwgbm90IG9uCisgICAgLy8gcG9zc2libHkgcm91bmRlZCBvciB0cnVuY2F0ZWQgYWN0dWFsIHZhbHVlcy4KKyAgICB2b2lkIGdldEJhbmRSYW5nZSh1aW50MzJfdCAmIGxvdywgdWludDMyX3QgJiBoaWdoKSBjb25zdDsKKworICAgIC8vIEFwcGxpZXMgYWxsIHBhcmFtZXRlciBjaGFuZ2VzIGRvbmUgdG8gdGhpcyBwb2ludCBpbiB0aW1lLgorICAgIC8vIElmIHRoZSBmaWx0ZXIgaXMgZGlzYWJsZWQsIHRoZSBuZXcgcGFyYW1ldGVycyB3aWxsIHRha2UgcGxhY2Ugd2hlbiBpdCBpcworICAgIC8vIGVuYWJsZWQgYWdhaW4uIERvZXMgbm90IGludHJvZHVjZSBhcnRpZmFjdHMsIHVubGVzcyBpbW1lZGlhdGUgaXMgc2V0LgorICAgIC8vIGltbWVkaWF0ZSAgICBXaGV0aGVyIHRvIGFwcGx5IGNoYW5nZSBhYnJ1cHRseSAoaWdub3JlZCBpZiBmaWx0ZXIgaXMKKyAgICAvLyBkaXNhYmxlZCkuCisgICB2b2lkIGNvbW1pdChib29sIGltbWVkaWF0ZSA9IGZhbHNlKTsKKworICAgIC8vIFByb2Nlc3MgYSBidWZmZXIgb2YgaW5wdXQgZGF0YS4gVGhlIGlucHV0IGFuZCBvdXRwdXQgc2hvdWxkIGNvbnRhaW4KKyAgICAvLyBmcmFtZUNvdW50ICogbkNoYW5uZWxzIGludGVybGFjZWQgc2FtcGxlcy4gUHJvY2Vzc2luZyBjYW4gYmUgZG9uZQorICAgIC8vIGluLXBsYWNlLCBieSBwYXNzaW5nIHRoZSBzYW1lIGJ1ZmZlciBhcyBib3RoIGFyZ3VtZW50cy4KKyAgICAvLyBpbiAgICAgICAgICAgSW5wdXQgYnVmZmVyLgorICAgIC8vIG91dCAgICAgICAgICBPdXRwdXQgYnVmZmVyLgorICAgIC8vIGZyYW1lQ291bnQgICBOdW1iZXIgb2YgZnJhbWVzIHRvIHByb2R1Y2UuCisgICAgdm9pZCBwcm9jZXNzKGNvbnN0IGF1ZGlvX3NhbXBsZV90IGluW10sIGF1ZGlvX3NhbXBsZV90IG91dFtdLAorICAgICAgICAgICAgICAgICBpbnQgZnJhbWVDb3VudCkgeyBtQmlxdWFkLnByb2Nlc3MoaW4sIG91dCwgZnJhbWVDb3VudCk7IH0KKworICAgIC8vIEVuYWJsZXMgdGhlIGZpbHRlciwgc28gaXQgd291bGQgc3RhcnQgcHJvY2Vzc2luZyBpbnB1dC4gRG9lcyBub3QKKyAgICAvLyBpbnRyb2R1Y2UgYXJ0aWZhY3RzLCB1bmxlc3MgaW1tZWRpYXRlIGlzIHNldC4KKyAgICAvLyBpbW1lZGlhdGUgICAgV2hldGhlciB0byBhcHBseSBjaGFuZ2UgYWJydXB0bHkuCisgICAgdm9pZCBlbmFibGUoYm9vbCBpbW1lZGlhdGUgPSBmYWxzZSkgeyBtQmlxdWFkLmVuYWJsZShpbW1lZGlhdGUpOyB9CisKKyAgICAvLyBEaXNhYmxlZCAoYnlwYXNzZXMpIHRoZSBmaWx0ZXIuIERvZXMgbm90IGludHJvZHVjZSBhcnRpZmFjdHMsIHVubGVzcworICAgIC8vIGltbWVkaWF0ZSBpcyBzZXQuCisgICAgLy8gaW1tZWRpYXRlICAgIFdoZXRoZXIgdG8gYXBwbHkgY2hhbmdlIGFicnVwdGx5LgorICAgIHZvaWQgZGlzYWJsZShib29sIGltbWVkaWF0ZSA9IGZhbHNlKSB7IG1CaXF1YWQuZGlzYWJsZShpbW1lZGlhdGUpOyB9CisKK3ByaXZhdGU6CisgICAgLy8gUHJlY2lzaW9uIGZvciB0aGUgbUZyZXF1ZW5jeSBtZW1iZXIuCisgICAgc3RhdGljIGNvbnN0IGludCBGUkVRX1BSRUNJU0lPTl9CSVRTID0gMjY7CisgICAgLy8gUHJlY2lzaW9uIGZvciB0aGUgbUdhaW4gbWVtYmVyLgorICAgIHN0YXRpYyBjb25zdCBpbnQgR0FJTl9QUkVDSVNJT05fQklUUyA9IDEwOworICAgIC8vIFByZWNpc2lvbiBmb3IgdGhlIG1CYW5kd2lkdGggbWVtYmVyLgorICAgIHN0YXRpYyBjb25zdCBpbnQgQkFORFdJRFRIX1BSRUNJU0lPTl9CSVRTID0gMTA7CisKKyAgICAvLyBOeXF1aXN0LCBpbiBtSHouCisgICAgdWludDMyX3QgbU5pcXVpc3RGcmVxOworICAgIC8vIEZyYWN0aW9uYWwgaW5kZXggaW50byB0aGUgZ2FpbiBkaW1lbnNpb24gb2YgdGhlIGNvZWYgdGFibGUgaW4KKyAgICAvLyBHQUlOX1BSRUNJU0lPTl9CSVRTIHByZWNpc2lvbi4KKyAgICBpbnQzMl90IG1HYWluOworICAgIC8vIEZyYWN0aW9uYWwgaW5kZXggaW50byB0aGUgYmFuZHdpZHRoIGRpbWVuc2lvbiBvZiB0aGUgY29lZiB0YWJsZSBpbgorICAgIC8vIEJBTkRXSURUSF9QUkVDSVNJT05fQklUUyBwcmVjaXNpb24uCisgICAgdWludDMyX3QgbUJhbmR3aWR0aDsKKyAgICAvLyBGcmFjdGlvbmFsIGluZGV4IGludG8gdGhlIGZyZXF1ZW5jeSBkaW1lbnNpb24gb2YgdGhlIGNvZWYgdGFibGUgaW4KKyAgICAvLyBGUkVRX1BSRUNJU0lPTl9CSVRTIHByZWNpc2lvbi4KKyAgICB1aW50MzJfdCBtRnJlcXVlbmN5OworICAgIC8vIE5vbWluYWwgdmFsdWUgb2YgZnJlcXVlbmN5LCBhcyBzZXQuCisgICAgdWludDMyX3QgbU5vbWluYWxGcmVxdWVuY3k7CisgICAgLy8gMS9OeXF1aXN0W21Iel0sIGluIDQyLWJpdCBwcmVjaXNpb24gKHZlcnkgc21hbGwpLgorICAgIC8vIFVzZWQgZm9yIHNjYWxpbmcgdGhlIGZyZXF1ZW5jeS4KKyAgICB1aW50MzJfdCBtRnJlcXVlbmN5RmFjdG9yOworCisgICAgLy8gQSBiaXF1YWQgZmlsdGVyLCB1c2VkIGZvciB0aGUgYWN0dWFsIHByb2Nlc3NpbmcuCisgICAgQXVkaW9CaXF1YWRGaWx0ZXIgbUJpcXVhZDsKKyAgICAvLyBBIGNvZWZmaWNpZW50IGludGVycG9sYXRvciwgdXNlZCBmb3IgbWFwcGluZyB0aGUgaGlnaCBsZXZlbCBwYXJhbWV0ZXJzIHRvCisgICAgLy8gdGhlIGxvdy1sZXZlbCBiaXF1YWQgY29lZmZpY2llbnRzLgorICAgIHN0YXRpYyBBdWRpb0NvZWZJbnRlcnBvbGF0b3IgbUNvZWZJbnRlcnA7Cit9OworCit9CisKKyNlbmRpZiAvLyBBTkRST0lEX0FVRElPX1BFQUtJTkdfRklMVEVSX0gKZGlmZiAtLWdpdCBhL21lZGlhL2xpYmVmZmVjdHMvQXVkaW9QZWFraW5nRmlsdGVyQ29lZi5pbmwgYi9tZWRpYS9saWJlZmZlY3RzL0F1ZGlvUGVha2luZ0ZpbHRlckNvZWYuaW5sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3NGM2ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJlZmZlY3RzL0F1ZGlvUGVha2luZ0ZpbHRlckNvZWYuaW5sCkBAIC0wLDAgKzEsMjcwMCBAQAorMTY3Njk3NTEsCistMzM1Mzg4NzEsCisxNjc2OTc1MSwKKzMzNTM4ODcxLAorLTE2NzYyMjg2LAorMTE0NjgwODMsCistMjI5MzU1NjYsCisxMTQ2NzkxNSwKKzIyOTM1NTY2LAorLTYxNTg3ODEsCis4NTMyNjczLAorLTE3MDY0NzYzLAorODUzMjQxMiwKKzE3MDY0NzYzLAorLTI4Nzg2OSwKKzY1NjczNjYsCistMTMxMzQxNjAsCis2NTY3MDQyLAorMTMxMzQxNjAsCiszNjQyODA4LAorMTY3NzMwNzUsCistMzM1NDU1MTgsCisxNjc3MzA3NSwKKzMzNTQ1NTE4LAorLTE2NzY4OTM0LAorMTMzNDk2NTgsCistMjY2OTg0NTksCisxMzM0OTMwNCwKKzI2Njk4NDU5LAorLTk5MjE3NDYsCisxMDkyMzU4MSwKKy0yMTg0NjE0NywKKzEwOTIyOTc3LAorMjE4NDYxNDcsCistNTA2OTM0MiwKKzkwMDkzOTAsCistMTgwMTc2NDEsCis5MDA4NTkwLAorMTgwMTc2NDEsCistMTI0MDc2NCwKKzE2Nzc0OTE5LAorLTMzNTQ5MjA3LAorMTY3NzQ5MTksCiszMzU0OTIwNywKKy0xNjc3MjYyMiwKKzE0Njg2MTUwLAorLTI5MzcxMDQ3LAorMTQ2ODU0NTAsCisyOTM3MTA0NywKKy0xMjU5NDM4NCwKKzEyOTMzNzM2LAorLTI1ODY1Njk3LAorMTI5MzI0NDgsCisyNTg2NTY5NywKKy05MDg4OTY4LAorMTEzNTAzNjQsCistMjI2OTg0ODIsCisxMTM0ODU0NSwKKzIyNjk4NDgyLAorLTU5MjE2OTMsCisxNjc3NTk0MywKKy0zMzU1MTI1MiwKKzE2Nzc1OTQxLAorMzM1NTEyNTIsCistMTY3NzQ2NjgsCisxNTU0OTc0NiwKKy0zMTA5NzU2OSwKKzE1NTQ4NDA4LAorMzEwOTc1NjksCistMTQzMjA5MzgsCisxNDQwNDE2MywKKy0yODgwNTE5NywKKzE0NDAxNTc3LAorMjg4MDUxOTcsCistMTIwMjg1MjQsCisxMzI2MTk3OCwKKy0yNjUxOTYyNiwKKzEzMjU4MTQ3LAorMjY1MTk2MjYsCistOTc0MjkwOSwKKzE2Nzc2NTExLAorLTMzNTUyMzg3LAorMTY3NzY1MDgsCiszMzU1MjM4NywKKy0xNjc3NTgwMywKKzE2MDc0MzQ5LAorLTMyMTQ1NjAwLAorMTYwNzE4NTYsCiszMjE0NTYwMCwKKy0xNTM2ODk4OSwKKzE1Mzc0MjQ0LAorLTMwNzQyOTMzLAorMTUzNjkyNjgsCiszMDc0MjkzMywKKy0xMzk2NjI5NiwKKzE0NjI5NDMxLAorLTI5MjUwNjk1LAorMTQ2MjE4MTQsCisyOTI1MDY5NSwKKy0xMjQ3NDAzMCwKKzE2Nzc2ODI2LAorLTMzNTUzMDE3LAorMTY3NzY4MjIsCiszMzU1MzAxNywKKy0xNjc3NjQzMiwKKzE2MzgxNTQ4LAorLTMyNzU3OTAwLAorMTYzNzY5NjgsCiszMjc1NzkwMCwKKy0xNTk4MTMwMCwKKzE1OTcyMTYxLAorLTMxOTM0NDAyLAorMTU5NjI4NDIsCiszMTkzNDQwMiwKKy0xNTE1Nzc4NywKKzE1NTE4ODgyLAorLTMxMDIyNjE0LAorMTU1MDQzMTYsCiszMTAyMjYxNCwKKy0xNDI0NTk4MiwKKzE2Nzc3MDAzLAorLTMzNTUzMzY2LAorMTY3NzY5OTUsCiszMzU1MzM2NiwKKy0xNjc3Njc4MSwKKzE2NTU4MzE1LAorLTMzMTA3NjYwLAorMTY1NDk5NjksCiszMzEwNzY2MCwKKy0xNjMzMTA2NywKKzE2MzI2ODQ4LAorLTMyNjM1OTEwLAorMTYzMDk2NzcsCiszMjYzNTkxMCwKKy0xNTg1OTMwOCwKKzE2MDY0NDU2LAorLTMyMTAxMTMzLAorMTYwMzcyODEsCiszMjEwMTEzMywKKy0xNTMyNDUyMSwKKzE2Nzc3MTAzLAorLTMzNTUzNTU5LAorMTY3NzcwODgsCiszMzU1MzU1OSwKKy0xNjc3Njk3NSwKKzE2NjYwMzI1LAorLTMzMzA0ODg1LAorMTY2NDUxODcsCiszMzMwNDg4NSwKKy0xNjUyODI5NiwKKzE2NTM1MjAwLAorLTMzMDM4NDM2LAorMTY1MDM4NTgsCiszMzAzODQzNiwKKy0xNjI2MTg0MiwKKzE2MzkxNDI1LAorLTMyNzMyMjczLAorMTYzNDE0NjQsCiszMjczMjI3MywKKy0xNTk1NTY3MywKKzE2Nzc3MTYyLAorLTMzNTUzNjY3LAorMTY3NzcxMzYsCiszMzU1MzY2NywKKy0xNjc3NzA4MiwKKzE2NzIxNjUxLAorLTMzNDE1Mjg4LAorMTY2OTQyNjcsCiszMzQxNTI4OCwKKy0xNjYzODcwMSwKKzE2NjYxNzYxLAorLTMzMjY1OTk3LAorMTY2MDQ4NjIsCiszMzI2NTk5NywKKy0xNjQ4OTQwNywKKzE2NTkyNDE3LAorLTMzMDkzMTM3LAorMTY1MDEzNDMsCiszMzA5MzEzNywKKy0xNjMxNjU0NCwKKzE2Nzc3MjAzLAorLTMzNTUzNzI2LAorMTY3NzcxNTUsCiszMzU1MzcyNiwKKy0xNjc3NzE0MiwKKzE2NzYzNDY2LAorLTMzNDc2ODM2LAorMTY3MTQwMDEsCiszMzQ3NjgzNiwKKy0xNjcwMDI1MSwKKzE2NzQ4NTg4LAorLTMzMzkzNTY1LAorMTY2NDU2MDUsCiszMzM5MzU2NSwKKy0xNjYxNjk3OCwKKzE2NzMxMjg4LAorLTMzMjk2NzMzLAorMTY1NjYwNzEsCiszMzI5NjczMywKKy0xNjUyMDE0NCwKKzE2Nzc3MjM4LAorLTMzNTUzNzU5LAorMTY3NzcxNTIsCiszMzU1Mzc1OSwKKy0xNjc3NzE3NSwKKzE2ODAwNDg5LAorLTMzNTExMDcxLAorMTY3MTEyMTIsCiszMzUxMTA3MSwKKy0xNjczNDQ4NSwKKzE2ODI1NzIzLAorLTMzNDY0NzQwLAorMTY2Mzk2NDcsCiszMzQ2NDc0MCwKKy0xNjY4ODE1NCwKKzE2ODU1MTM3LAorLTMzNDEwNzM2LAorMTY1NTYyMjgsCiszMzQxMDczNiwKKy0xNjYzNDE0OSwKKzE2Nzc3MjgyLAorLTMzNTUzNzc4LAorMTY3NzcxMjcsCiszMzU1Mzc3OCwKKy0xNjc3NzE5MywKKzE2ODQ1ODg5LAorLTMzNTMwMDg4LAorMTY2ODQ4MzAsCiszMzUzMDA4OCwKKy0xNjc1MzUwMywKKzE2OTIwNDM3LAorLTMzNTA0MzQ3LAorMTY1ODQ1NDEsCiszMzUwNDM0NywKKy0xNjcyNzc2MiwKKzE3MDA3NDQ5LAorLTMzNDc0MzAyLAorMTY0Njc0ODQsCiszMzQ3NDMwMiwKKy0xNjY5NzcxNiwKKzE2Nzc3MzQ5LAorLTMzNTUzNzg4LAorMTY3NzcwNzAsCiszMzU1Mzc4OCwKKy0xNjc3NzIwMywKKzE2OTE1ODgwLAorLTMzNTQwNjQ1LAorMTY2MjUzOTYsCiszMzU0MDY0NSwKKy0xNjc2NDA2MCwKKzE3MDY2NTA0LAorLTMzNTI2MzU0LAorMTY0NjA0ODEsCiszMzUyNjM1NCwKKy0xNjc0OTc2OSwKKzE3MjQyNDQ0LAorLTMzNTA5NjYyLAorMTYyNjc4NDksCiszMzUwOTY2MiwKKy0xNjczMzA3NywKKzE2Nzc3NDY0LAorLTMzNTUzNzkzLAorMTY3NzY5NjEsCiszMzU1Mzc5MywKKy0xNjc3NzIwOSwKKzE3MDM1NDg3LAorLTMzNTQ2NTAzLAorMTY1MTE2NDcsCiszMzU0NjUwMywKKy0xNjc2OTkxOCwKKzE3MzE2MTM3LAorLTMzNTM4NTcyLAorMTYyMjMwNjcsCiszMzUzODU3MiwKKy0xNjc2MTk4OCwKKzE3NjQ0MDg5LAorLTMzNTI5MzA2LAorMTU4ODU4NDgsCiszMzUyOTMwNiwKKy0xNjc1MjcyMSwKKzE2Nzc3NjY4LAorLTMzNTUzNzk2LAorMTY3NzY3NjAsCiszMzU1Mzc5NiwKKy0xNjc3NzIxMiwKKzE3MjQ3NDg0LAorLTMzNTQ5NzUyLAorMTYzMDI5MDAsCiszMzU0OTc1MiwKKy0xNjc3MzE2OCwKKzE3NzU4NjAzLAorLTMzNTQ1MzUzLAorMTU3ODczODEsCiszMzU0NTM1MywKKy0xNjc2ODc2OCwKKzE4MzU2MDA3LAorLTMzNTQwMjExLAorMTUxODQ4MzUsCiszMzU0MDIxMSwKKy0xNjc2MzYyNiwKKzE2NzYyMjkzLAorLTMzNTIyMDYyLAorMTY3NjIyOTMsCiszMzUyMjA2MiwKKy0xNjc0NzM3MCwKKzg3MTE0MDUsCistMTc0MjEyNDIsCis4NzExMTQ5LAorMTc0MjEyNDIsCistNjQ1MzM4LAorNTcyMTI1MCwKKy0xMTQ0MTI4OCwKKzU3MjA5MDAsCisxMTQ0MTI4OCwKKzUzMzUwNjYsCis0MDgyODM2LAorLTgxNjQ2NTUsCis0MDgyNDM0LAorODE2NDY1NSwKKzg2MTE5NDYsCisxNjc2ODkzNiwKKy0zMzUzNTM0NywKKzE2NzY4OTM2LAorMzM1MzUzNDcsCistMTY3NjA2NTYsCisxMTA4NTA1NiwKKy0yMjE2Nzg1NiwKKzExMDg0NDY5LAorMjIxNjc4NTYsCistNTM5MjMwOSwKKzgwOTgyMjMsCistMTYxOTQzMzMsCis4MDk3MzI5LAorMTYxOTQzMzMsCis1ODE2NjQsCis2MTU4MzIzLAorLTEyMzE0NjIzLAorNjE1NzIyOCwKKzEyMzE0NjIzLAorNDQ2MTY2NSwKKzE2NzcyNjIzLAorLTMzNTQyNzE5LAorMTY3NzI2MjIsCiszMzU0MjcxOSwKKy0xNjc2ODAyOSwKKzEzMDU4NjM0LAorLTI2MTE0MDU1LAorMTMwNTczODgsCisyNjExNDA1NSwKKy05MzM4ODA2LAorMTA1MjMyMTEsCistMjEwNDI3NDIsCisxMDUyMTExNiwKKzIxMDQyNzQyLAorLTQyNjcxMTAsCis4NTc2NTYwLAorLTE3MTQ5MDgxLAorODU3MzgxMiwKKzE3MTQ5MDgxLAorLTM3MzE1NiwKKzE2Nzc0NjcwLAorLTMzNTQ2ODEwLAorMTY3NzQ2NjcsCiszMzU0NjgxMCwKKy0xNjc3MjEyMCwKKzE0NDg5NzI1LAorLTI4OTc0Nzc2LAorMTQ0ODcyMzMsCisyODk3NDc3NiwKKy0xMjE5OTc0MiwKKzEyNjE5NTA5LAorLTI1MjMyNTg3LAorMTI2MTQ5NzksCisyNTIzMjU4NywKKy04NDU3MjcxLAorMTA5NjUxNTEsCistMjE5MjIzMTksCisxMDk1ODgxOCwKKzIxOTIyMzE5LAorLTUxNDY3NTMsCisxNjc3NTgwNSwKKy0zMzU0OTA3OSwKKzE2Nzc1ODAwLAorMzM1NDkwNzksCistMTY3NzQzOTAsCisxNTQyODEwMiwKKy0zMDg0OTA5NSwKKzE1NDIzMzE3LAorMzA4NDkwOTUsCistMTQwNzQyMDIsCisxNDE4ODE1NywKKy0yODM2NDk5NiwKKzE0MTc4OTc1LAorMjgzNjQ5OTYsCistMTE1ODk5MTYsCisxMjk2OTkwMCwKKy0yNTkyNDM0NiwKKzEyOTU2Mzk4LAorMjU5MjQzNDYsCistOTE0OTA4MiwKKzE2Nzc2NDM3LAorLTMzNTUwMzM4LAorMTY3NzY0MjgsCiszMzU1MDMzOCwKKy0xNjc3NTY0OCwKKzE2MDA0MjE2LAorLTMxOTk3MDc0LAorMTU5OTUyNjgsCiszMTk5NzA3NCwKKy0xNTIyMjI2NywKKzE1MjQxMjMzLAorLTMwNDYyMzkzLAorMTUyMjM0NTQsCiszMDQ2MjM5MywKKy0xMzY4NzQ3MSwKKzE0NDM3MDcwLAorLTI4ODQ0ODgwLAorMTQ0MDk5ODIsCisyODg0NDg4MCwKKy0xMjA2OTgzNiwKKzE2Nzc2Nzg5LAorLTMzNTUxMDM2LAorMTY3NzY3NzMsCiszMzU1MTAzNiwKKy0xNjc3NjM0NywKKzE2MzQ1MTU4LAorLTMyNjcxMzgzLAorMTYzMjg2ODUsCiszMjY3MTM4MywKKy0xNTg5NjYyNywKKzE1OTAwNDYyLAorLTMxNzY1MTA0LAorMTU4NjcwMzQsCiszMTc2NTEwNCwKKy0xNDk5MDI4MCwKKzE1NDEwODQ2LAorLTMwNzY3Mjc5LAorMTUzNTg3NTAsCiszMDc2NzI3OSwKKy0xMzk5MjM4MCwKKzE2Nzc2OTkwLAorLTMzNTUxNDIzLAorMTY3NzY5NjAsCiszMzU1MTQyMywKKy0xNjc3NjczNCwKKzE2NTQ1MTU2LAorLTMzMDU3NzY5LAorMTY1MTUxMDMsCiszMzA1Nzc2OSwKKy0xNjI4MzA0MywKKzE2MzAwNTA0LAorLTMyNTM2ODIzLAorMTYyMzg3NjksCiszMjUzNjgyMywKKy0xNTc2MjA1OCwKKzE2MDI0MDcxLAorLTMxOTQ4MjAxLAorMTU5MjY1MzcsCiszMTk0ODIwMSwKKy0xNTE3MzM5MSwKKzE2Nzc3MTA5LAorLTMzNTUxNjM4LAorMTY3NzcwNTYsCiszMzU1MTYzOCwKKy0xNjc3Njk0OSwKKzE2NjY2NTQyLAorLTMzMjc2MDM1LAorMTY2MTE5OTksCiszMzI3NjAzNSwKKy0xNjUwMTMyNSwKKzE2NTQ4MjcwLAorLTMyOTgxMjI1LAorMTY0MzU0MzksCiszMjk4MTIyNSwKKy0xNjIwNjQ5MywKKzE2NDEyNjIxLAorLTMyNjQzMTAzLAorMTYyMzI5NDAsCiszMjY0MzEwMywKKy0xNTg2ODM0NiwKKzE2Nzc3MTg5LAorLTMzNTUxNzU3LAorMTY3NzcwOTQsCiszMzU1MTc1NywKKy0xNjc3NzA2OCwKKzE2NzQ5Nzc4LAorLTMzMzk4MzM4LAorMTY2NTEwNzUsCiszMzM5ODMzOCwKKy0xNjYyMzYzNywKKzE2NzIwMjMzLAorLTMzMjMyOTc2LAorMTY1MTUyNDUsCiszMzIzMjk3NiwKKy0xNjQ1ODI2MiwKKzE2Njg2MDU5LAorLTMzMDQxNzA2LAorMTYzNTgxMzUsCiszMzA0MTcwNiwKKy0xNjI2Njk3OCwKKzE2Nzc3MjYxLAorLTMzNTUxODIzLAorMTY3NzcwODksCiszMzU1MTgyMywKKy0xNjc3NzEzNCwKKzE2ODIzNzAzLAorLTMzNDY2NTU5LAorMTY2NDUzNzYsCiszMzQ2NjU1OSwKKy0xNjY5MTg2MywKKzE2ODczOTc0LAorLTMzMzc0MjY3LAorMTY1MDI4MDYsCiszMzM3NDI2NywKKy0xNjU5OTU2NCwKKzE2OTMyMzk4LAorLTMzMjY3MDA2LAorMTYzMzcxMTQsCiszMzI2NzAwNiwKKy0xNjQ5MjI5NSwKKzE2Nzc3MzQ4LAorLTMzNTUxODYwLAorMTY3NzcwMzgsCiszMzU1MTg2MCwKKy0xNjc3NzE3MCwKKzE2OTE0NDY1LAorLTMzNTA0NTE3LAorMTY1OTI1NzQsCiszMzUwNDUxNywKKy0xNjcyOTgyNCwKKzE3MDYzMjM2LAorLTMzNDUzMTUwLAorMTYzOTI0MzIsCiszMzQ1MzE1MCwKKy0xNjY3ODQ1MywKKzE3MjM2NTk1LAorLTMzMzkzMjkzLAorMTYxNTkyMTMsCiszMzM5MzI5MywKKy0xNjYxODU5MiwKKzE2Nzc3NDgzLAorLTMzNTUxODgwLAorMTY3NzY5MjQsCiszMzU1MTg4MCwKKy0xNjc3NzE5MSwKKzE3MDU0NDM2LAorLTMzNTI1NjA2LAorMTY0NzM2OTUsCiszMzUyNTYwNiwKKy0xNjc1MDkxNCwKKzE3MzU1MzIxLAorLTMzNDk3MDYxLAorMTYxNDQyNjIsCiszMzQ5NzA2MSwKKy0xNjcyMjM2NywKKzE3NzA2NDUzLAorLTMzNDYzNzQ5LAorMTU3NTk4MTYsCiszMzQ2Mzc0OSwKKy0xNjY4OTA1MywKKzE2Nzc3NzEzLAorLTMzNTUxODkxLAorMTY3NzY3MDUsCiszMzU1MTg5MSwKKy0xNjc3NzIwMiwKKzE3MjkzNjQ2LAorLTMzNTM3MzE0LAorMTYyNDYxOTQsCiszMzUzNzMxNCwKKy0xNjc2MjYyMywKKzE3ODU0NTcxLAorLTMzNTIxNDY1LAorMTU2Njk0MTksCiszMzUyMTQ2NSwKKy0xNjc0Njc3MywKKzE4NTA5NzA2LAorLTMzNTAyOTU0LAorMTQ5OTU3NzIsCiszMzUwMjk1NCwKKy0xNjcyODI2MSwKKzE2Nzc4MTIwLAorLTMzNTUxODk4LAorMTY3NzYzMDQsCiszMzU1MTg5OCwKKy0xNjc3NzIwOCwKKzE3NzE3NjM5LAorLTMzNTQzODExLAorMTU4Mjg2OTgsCiszMzU0MzgxMSwKKy0xNjc2OTEyMSwKKzE4NzM5NTAxLAorLTMzNTM1MDE2LAorMTQ3OTgwNDAsCiszMzUzNTAxNiwKKy0xNjc2MDMyNSwKKzE5OTMzNTM0LAorLTMzNTI0NzM4LAorMTM1OTM3MjksCiszMzUyNDczOCwKKy0xNjc1MDA0NywKKzE2NzQ3Mzk3LAorLTMzNDg0NzA1LAorMTY3NDczOTYsCiszMzQ4NDcwNSwKKy0xNjcxNzU3NywKKzU4ODMxMTIsCistMTE3NjIzMzUsCis1ODgyNzY3LAorMTE3NjIzMzUsCis1MDExMzM3LAorMzQ0ODcwMSwKKy02ODk0OTAzLAorMzQ0ODI3OSwKKzY4OTQ5MDMsCis5ODgwMjM2LAorMjMyNDI4NiwKKy00NjQ2NzE0LAorMjMyMzgyOCwKKzQ2NDY3MTQsCisxMjEyOTEwMiwKKzE2NzYwNjY1LAorLTMzNTExMjMyLAorMTY3NjA2NjMsCiszMzUxMTIzMiwKKy0xNjc0NDExMiwKKzgyNzY5ODQsCistMTY1NDgxMDYsCis4Mjc2MTA4LAorMTY1NDgxMDYsCisyMjQxMjQsCis1MzM3NDAwLAorLTEwNjcwNDA2LAorNTMzNjIyMSwKKzEwNjcwNDA2LAorNjEwMzU5NiwKKzM3NzE1MjUsCistNzUzOTQzOSwKKzM3NzAxODUsCis3NTM5NDM5LAorOTIzNTUwNiwKKzE2NzY4MDMzLAorLTMzNTI1OTYzLAorMTY3NjgwMzAsCiszMzUyNTk2MywKKy0xNjc1ODg0OCwKKzEwNjg5NTY0LAorLTIxMzcwNjQ5LAorMTA2ODc1MjQsCisyMTM3MDY0OSwKKy00NTk5ODcyLAorNzY2NjA2OCwKKy0xNTMyNDQ2NiwKKzc2NjMwMTUsCisxNTMyNDQ2NiwKKzE0NDgxMzMsCis1NzYxMjY2LAorLTExNTE1MzcxLAorNTc1NzU3NSwKKzExNTE1MzcxLAorNTI1ODM3NiwKKzE2NzcyMTI0LAorLTMzNTM0MTM5LAorMTY3NzIxMTgsCiszMzUzNDEzOSwKKy0xNjc2NzAyNiwKKzEyNzUxNDIzLAorLTI1NDkwNzgwLAorMTI3NDcwMzYsCisyNTQ5MDc4MCwKKy04NzIxMjQzLAorMTAxMTM5NDIsCistMjAyMTQ1MzMsCisxMDEwNjY4MiwKKzIwMjE0NTMzLAorLTM0NDM0MDcsCis4MTQ1MDI1LAorLTE2Mjc1NzQxLAorODEzNTYyMCwKKzE2Mjc1NzQxLAorNDk2NTcxLAorMTY3NzQzOTUsCistMzM1Mzg2NzUsCisxNjc3NDM4NSwKKzMzNTM4Njc1LAorLTE2NzcxNTY0LAorMTQyODAxMzcsCistMjg1NDI4MTksCisxNDI3MTI4MSwKKzI4NTQyODE5LAorLTExNzc0MjAyLAorMTIyOTIzOTEsCistMjQ1NjE0NzYsCisxMjI3NjQ4NSwKKzI0NTYxNDc2LAorLTc3OTE2NjAsCisxMDU3Mjk0OSwKKy0yMTExNzUzMiwKKzEwNTUwOTQ1LAorMjExMTc1MzIsCistNDM0NjY3OCwKKzE2Nzc1NjU3LAorLTMzNTQxMTkyLAorMTY3NzU2MzksCiszMzU0MTE5MiwKKy0xNjc3NDA4MSwKKzE1Mjk5NjgzLAorLTMwNTczMDUxLAorMTUyODI1NzksCiszMDU3MzA1MSwKKy0xMzgwNTA0NiwKKzEzOTY0MjUxLAorLTI3ODg3NTM5LAorMTM5MzE2OTAsCisyNzg4NzUzOSwKKy0xMTExODcyNCwKKzEyNjcyNjg2LAorLTI1MjkwMjQxLAorMTI2MjUxNzQsCisyNTI5MDI0MSwKKy04NTIwNjQ0LAorMTY3NzYzNjMsCistMzM1NDI1ODgsCisxNjc3NjMzMCwKKzMzNTQyNTg4LAorLTE2Nzc1NDc3LAorMTU5MzUxOTYsCistMzE4Mjg2OTksCisxNTkwMzA5MiwKKzMxODI4Njk5LAorLTE1MDYxMDcyLAorMTUxMTIzNTYsCistMzAxNTIxNTMsCisxNTA0ODg4MSwKKzMwMTUyMTUzLAorLTEzMzg0MDIxLAorMTQyNTM4NTcsCistMjg0MDI5NTAsCisxNDE1NzY0OSwKKzI4NDAyOTUwLAorLTExNjM0MjkxLAorMTY3NzY3NjMsCistMzM1NDMzNjIsCisxNjc3NjcwNCwKKzMzNTQzMzYyLAorLTE2Nzc2MjUyLAorMTYzMTk4MzAsCistMzI1NzA2MTUsCisxNjI2MDU5OCwKKzMyNTcwNjE1LAorLTE1ODAzMjEyLAorMTU4NTE3ODMsCistMzE1NzQyMDgsCisxNTczMTkzOCwKKzMxNTc0MjA4LAorLTE0ODA2NTA1LAorMTUzMzk2MTQsCistMzA0ODM4NzEsCisxNTE1MzQ0MSwKKzMwNDgzODcxLAorLTEzNzE1ODM4LAorMTY3NzcwMDEsCistMzM1NDM3OTEsCisxNjc3Njg5NiwKKzMzNTQzNzkxLAorLTE2Nzc2NjgxLAorMTY1NTc2NzMsCistMzI5OTcyMDgsCisxNjQ0OTQ3NiwKKzMyOTk3MjA4LAorLTE2MjI5OTMzLAorMTYzMjY5NzcsCistMzI0MjIyOTksCisxNjEwNTA4OSwKKzMyNDIyMjk5LAorLTE1NjU0ODUxLAorMTYwNjcyNDQsCistMzE3NzUwMjQsCisxNTcxNzM1MywKKzMxNzc1MDI0LAorLTE1MDA3MzgxLAorMTY3NzcxNjMsCistMzM1NDQwMjksCisxNjc3Njk3MiwKKzMzNTQ0MDI5LAorLTE2Nzc2OTE5LAorMTY3MjI1OTAsCistMzMyMzg2NjAsCisxNjUyNjA4MywKKzMzMjM4NjYwLAorLTE2NDcxNDU4LAorMTY2NjQzMjIsCistMzI5MTI2MTAsCisxNjI1ODIwMywKKzMyOTEyNjEwLAorLTE2MTQ1MzEwLAorMTY1OTc2MjksCistMzI1Mzk0MTksCisxNTk1MTU5MywKKzMyNTM5NDE5LAorLTE1NzcyMDA3LAorMTY3NzczMDYsCistMzM1NDQxNjIsCisxNjc3Njk2MiwKKzMzNTQ0MTYyLAorLTE2Nzc3MDUxLAorMTY4Njk5NTUsCistMzMzNzQxMDUsCisxNjUxNDIwNSwKKzMzMzc0MTA1LAorLTE2NjA2OTQ0LAorMTY5Njk3MTQsCistMzMxOTA5OTYsCisxNjIzMTI4MiwKKzMzMTkwOTk2LAorLTE2NDIzNzgwLAorMTcwODQ5NzIsCistMzI5Nzk0NDIsCisxNTkwNDQwNiwKKzMyOTc5NDQyLAorLTE2MjEyMTYyLAorMTY3Nzc0ODAsCistMzM1NDQyMzUsCisxNjc3Njg2MCwKKzMzNTQ0MjM1LAorLTE2Nzc3MTI1LAorMTcwNTEzMjgsCistMzM0NDk3MDMsCisxNjQwODQ1MiwKKzMzNDQ5NzAzLAorLTE2NjgyNTY1LAorMTczNDc1ODMsCistMzMzNDc0MzcsCisxNjAwOTkwMSwKKzMzMzQ3NDM3LAorLTE2NTgwMjY3LAorMTc2OTE2NjgsCistMzMyMjg2NTksCisxNTU0NzAwMiwKKzMzMjI4NjU5LAorLTE2NDYxNDU0LAorMTY3Nzc3NTAsCistMzM1NDQyNzUsCisxNjc3NjYzMiwKKzMzNTQ0Mjc1LAorLTE2Nzc3MTY1LAorMTczMzEyMjIsCistMzM0OTE3ODAsCisxNjE3MDY0OCwKKzMzNDkxNzgwLAorLTE2NzI0NjU0LAorMTc5MzE1NTAsCistMzM0MzQ4NDAsCisxNTUxMzM2MywKKzMzNDM0ODQwLAorLTE2NjY3Njk3LAorMTg2MzA4NTUsCistMzMzNjg1MTIsCisxNDc0NzcxMCwKKzMzMzY4NTEyLAorLTE2NjAxMzQ5LAorMTY3NzgyMTAsCistMzM1NDQyOTgsCisxNjc3NjE5NCwKKzMzNTQ0Mjk4LAorLTE2Nzc3MTg4LAorMTc4MDk2MjgsCistMzM1MTUxNjIsCisxNTcxNTYzMSwKKzMzNTE1MTYyLAorLTE2NzQ4MDQzLAorMTg5Mjk5OTEsCistMzM0ODM1MTQsCisxNDU2MzYxMSwKKzMzNDgzNTE0LAorLTE2NzE2Mzg1LAorMjAyMzcyMTIsCistMzM0NDY1ODcsCisxMzIxOTQ1MSwKKzMzNDQ2NTg3LAorLTE2Njc5NDQ4LAorMTY3NzkwMjUsCistMzM1NDQzMTAsCisxNjc3NTM5MiwKKzMzNTQ0MzEwLAorLTE2Nzc3MjAwLAorMTg2NTc2MTIsCistMzM1MjgxNDUsCisxNDg4MDYzNCwKKzMzNTI4MTQ1LAorLTE2NzYxMDMwLAorMjA2OTk4NDQsCistMzM1MTA1NzEsCisxMjgyMDgyMiwKKzMzNTEwNTcxLAorLTE2NzQzNDUxLAorMjMwODQ4NjMsCistMzM0OTAwNDcsCisxMDQxNTI3NCwKKzMzNDkwMDQ3LAorLTE2NzIyOTIxLAorMTY3MTc2ODQsCistMzMzOTUwOTEsCisxNjcxNzY4MiwKKzMzMzk1MDkxLAorLTE2NjU4MTQ5LAorMzU2NzAwOSwKKy03MTI1MDA2LAorMzU2NjU5MCwKKzcxMjUwMDYsCis5NjQzNjE3LAorMTkyMTkyNiwKKy0zODM4NzUxLAorMTkyMTQ1NSwKKzM4Mzg3NTEsCisxMjkzMzgzNSwKKzEyNDg2NjIsCistMjQ5MzgyNCwKKzEyNDgxNzAsCisyNDkzODI0LAorMTQyODAzODQsCisxNjc0NDE0NywKKy0zMzQ0Nzk1MiwKKzE2NzQ0MTQzLAorMzM0NDc5NTIsCistMTY3MTEwNzQsCis1NDkzNzg1LAorLTEwOTczMTc0LAorNTQ5MjYyMiwKKzEwOTczMTc0LAorNTc5MDgwOCwKKzMxNzM2OTQsCistNjMzODM0MiwKKzMxNzIyOTIsCis2MzM4MzQyLAorMTA0MzEyMzAsCisyMTI0NzU0LAorLTQyNDI4ODEsCisyMTIzMjQ0LAorNDI0Mjg4MSwKKzEyNTI5MjE4LAorMTY3NTg4NjEsCistMzM0NzczNDIsCisxNjc1ODg1NSwKKzMzNDc3MzQyLAorLTE2NzQwNTAwLAorNzg0Mzg4NSwKKy0xNTY2NTg4NCwKKzc4NDA4OTIsCisxNTY2NTg4NCwKKzEwOTI0MzksCis0OTY4NjQ5LAorLTk5MjEzNzYsCis0OTY0NjkyLAorOTkyMTM3NiwKKzY4NDM4NzUsCiszNDc4NDM3LAorLTY5NDQwNDMsCiszNDczOTgxLAorNjk0NDA0MywKKzk4MjQ3OTgsCisxNjc2NzAzNSwKKy0zMzQ5MzY2NSwKKzE2NzY3MDI0LAorMzM0OTM2NjUsCistMTY3NTY4NDIsCisxMDI4NDQyMSwKKy0yMDUzNjk5OSwKKzEwMjc3MzQ2LAorMjA1MzY5OTksCistMzc4NDU1MCwKKzcyNDAyNTQsCistMTQ0NTI2ODYsCis3MjI5ODYyLAorMTQ0NTI2ODYsCisyMzA3MTAwLAorNTM3OTc5OCwKKy0xMDczNDIzMSwKKzUzNjczNzksCisxMDczNDIzMSwKKzYwMzAwMzksCisxNjc3MTU3NSwKKy0zMzUwMjcyNSwKKzE2NzcxNTU1LAorMzM1MDI3MjUsCistMTY3NjU5MTMsCisxMjQzMTA0NiwKKy0yNDgxNjc0OSwKKzEyNDE1NjMyLAorMjQ4MTY3NDksCistODA2OTQ2MiwKKzk3MDIwNDksCistMTkzNTU2NjQsCis5Njc2OTU3LAorMTkzNTU2NjQsCistMjYwMTc5MCwKKzc3MjI2MTEsCistMTUzOTQ1NDQsCis3NjkwNDk5LAorMTUzOTQ1NDQsCisxMzY0MTA2LAorMTY3NzQwOTksCistMzM1MDc3NTIsCisxNjc3NDA2MywKKzMzNTA3NzUyLAorLTE2NzcwOTQ2LAorMTQwNjI1ODMsCistMjgwNTk5MDMsCisxNDAzMTE2MCwKKzI4MDU5OTAzLAorLTExMzE2NTI3LAorMTE5NjI5OTksCistMjM4NDE1MTksCisxMTkwNzI3MywKKzIzODQxNTE5LAorLTcwOTMwNTYsCisxMDE4ODkyOSwKKy0yMDI3NzE0MiwKKzEwMTEyNjY3LAorMjAyNzcxNDIsCistMzUyNDM4MCwKKzE2Nzc1NTEwLAorLTMzNTEwNTQxLAorMTY3NzU0NDUsCiszMzUxMDU0MSwKKy0xNjc3MzczOCwKKzE1MTc1MTAyLAorLTMwMjUyNjM3LAorMTUxMTQwMTksCiszMDI1MjYzNywKKy0xMzUxMTkwNSwKKzEzNzUzMjA3LAorLTI3MzU4MTIzLAorMTM2Mzc5MTEsCisyNzM1ODEyMywKKy0xMDYxMzkwMSwKKzEyNDAwOTcxLAorLTI0NjA1NDE2LAorMTIyMzQxMTksCisyNDYwNTQxNiwKKy03ODU3ODc0LAorMTY3NzYzMTAsCistMzM1MTIwODgsCisxNjc3NjE5MywKKzMzNTEyMDg4LAorLTE2Nzc1Mjg3LAorMTU4ODgyNDIsCistMzE2MjMyMjEsCisxNTc3MzExNywKKzMxNjIzMjIxLAorLTE0ODg0MTQzLAorMTUwMjg5NzIsCistMjk3OTU2MDgsCisxNDgwMjU3MCwKKzI5Nzk1NjA4LAorLTEzMDU0MzI1LAorMTQxNDIyMzcsCistMjc5MDk1NzgsCisxMzgwMTAwMCwKKzI3OTA5NTc4LAorLTExMTY2MDIxLAorMTY3NzY3ODcsCistMzM1MTI5NDYsCisxNjc3NjU3NSwKKzMzNTEyOTQ2LAorLTE2Nzc2MTQ2LAorMTYzNDUxNzIsCistMzI0MzgzMDIsCisxNjEzMjI1MSwKKzMyNDM4MzAyLAorLTE1NzAwMjA3LAorMTU5MDU4NTYsCistMzEzNDQ0ODQsCisxNTQ3NjQyOSwKKzMxMzQ0NDg0LAorLTE0NjA1MDY5LAorMTU0MjgzMjQsCistMzAxNTU1MTQsCisxNDc2MzU1OCwKKzMwMTU1NTE0LAorLTEzNDE0NjY1LAorMTY3NzcxMTAsCistMzM1MTM0MjIsCisxNjc3NjcyOSwKKzMzNTEzNDIyLAorLTE2Nzc2NjIzLAorMTY2Njg5NTAsCistMzI5MDg3NDQsCisxNjI3OTQ4MiwKKzMyOTA4NzQ0LAorLTE2MTcxMjE2LAorMTY1NTU1OTQsCistMzIyNzUwMTUsCisxNTc1ODM0NCwKKzMyMjc1MDE1LAorLTE1NTM2NzIyLAorMTY0Mjg0NjUsCistMzE1NjQyODQsCisxNTE3Mzg4NiwKKzMxNTY0Mjg0LAorLTE0ODI1MTM0LAorMTY3NzczOTUsCistMzM1MTM2ODYsCisxNjc3NjcwOCwKKzMzNTEzNjg2LAorLTE2Nzc2ODg3LAorMTY5NjE3NTgsCistMzMxNzU1OTQsCisxNjI1Mzg0NSwKKzMzMTc1NTk0LAorLTE2NDM4Mzg3LAorMTcxNTgyMTIsCistMzI4MTUzMjksCisxNTY5NjY5MiwKKzMyODE1MzI5LAorLTE2MDc3Njg4LAorMTczODI1NzgsCistMzI0MDM4ODAsCisxNTA2MDM4MSwKKzMyNDAzODgwLAorLTE1NjY1NzQzLAorMTY3Nzc3NDUsCistMzM1MTM4MzIsCisxNjc3NjUwNSwKKzMzNTEzODMyLAorLTE2Nzc3MDMzLAorMTczMjM5MDMsCistMzMzMjU0NzAsCisxNjA0MTc1NywKKzMzMzI1NDcwLAorLTE2NTg4NDQ0LAorMTc5MTEzMzIsCistMzMxMjI4NzQsCisxNTI1MTQ4OCwKKzMzMTIyODc0LAorLTE2Mzg1NjA0LAorMTg1ODkyMDMsCistMzI4ODkwODYsCisxNDMzOTU0NiwKKzMyODg5MDg2LAorLTE2MTUxNTM0LAorMTY3NzgyODMsCistMzM1MTM5MTMsCisxNjc3NjA0OCwKKzMzNTEzOTEzLAorLTE2Nzc3MTE1LAorMTc4ODM1MDUsCistMzM0MDkxODAsCisxNTU2NTk2NiwKKzMzNDA5MTgwLAorLTE2NjcyMjU1LAorMTkwNzg0NTEsCistMzMyOTU5NDQsCisxNDI1NzY0OCwKKzMzMjk1OTQ0LAorLTE2NTU4ODgzLAorMjA0NjU0NDAsCistMzMxNjQ1MTAsCisxMjczOTA2NywKKzMzMTY0NTEwLAorLTE2NDI3MjkwLAorMTY3NzkyMDMsCistMzM1MTM5NTgsCisxNjc3NTE3MywKKzMzNTEzOTU4LAorLTE2Nzc3MTYwLAorMTg4NDAyNjUsCistMzM0NTU3ODksCisxNDY1NTg3MSwKKzMzNDU1Nzg5LAorLTE2NzE4OTIxLAorMjEwNzUxMjEsCistMzMzOTI3MTUsCisxMjM1Nzg2NiwKKzMzMzkyNzE1LAorLTE2NjU1NzcxLAorMjM2Nzc2MjEsCistMzMzMTkyNjYsCis5NjgxODI4LAorMzMzMTkyNjYsCistMTY1ODIyMzMsCisxNjc4MDgzNCwKKy0zMzUxMzk4MywKKzE2NzczNTY3LAorMzM1MTM5ODMsCistMTY3NzcxODUsCisyMDUzNjIyNywKKy0zMzQ4MTY5NiwKKzEyOTg1ODQ4LAorMzM0ODE2OTYsCistMTY3NDQ4NTksCisyNDYxNDg1NSwKKy0zMzQ0NjYzMCwKKzg4NzIxMTIsCiszMzQ0NjYzMCwKKy0xNjcwOTc1MSwKKzI5MzczMDc1LAorLTMzNDA1NzIxLAorNDA3MjkzNCwKKzMzNDA1NzIxLAorLTE2NjY4NzkzLAorMTY2NTg1NzIsCistMzMxNTY3MTAsCisxNjY1ODU2OCwKKzMzMTU2NzEwLAorLTE2NTM5OTI1LAorMTk5NTY5NCwKKy0zOTcxNzAyLAorMTk5NTIyNSwKKzM5NzE3MDIsCisxMjc4NjI5NiwKKzEwMTkzMzQsCistMjAyODM1NSwKKzEwMTg4MzUsCisyMDI4MzU1LAorMTQ3MzkwNDcsCis2NDgzOTcsCistMTI5MDA0MSwKKzY0Nzg4NiwKKzEyOTAwNDEsCisxNTQ4MDkzMywKKzE2NzExMjA4LAorLTMzMjYxNDcwLAorMTY3MTEyMDEsCiszMzI2MTQ3MCwKKy0xNjY0NTE5MiwKKzMyODQ4NzMsCistNjUzNjcyNywKKzMyODM0ODMsCis2NTM2NzI3LAorMTAyMDg4NjAsCisxNzUyNzQ2LAorLTM0ODcwNzEsCisxNzUxMTk4LAorMzQ4NzA3MSwKKzEzMjczMjcyLAorMTEzNDI1NCwKKy0yMjU1OTgxLAorMTEzMjY0MiwKKzIyNTU5ODEsCisxNDUxMDMxOSwKKzE2NzQwNTQ2LAorLTMzMzE5ODU5LAorMTY3NDA1MzQsCiszMzMxOTg1OSwKKy0xNjcwMzg2NCwKKzUxMTkwMTksCistMTAxODQ4NTMsCis1MTE1MTEzLAorMTAxODQ4NTMsCis2NTQzMDgzLAorMjkxNjc2NiwKKy01ODAwODIwLAorMjkxMjEyMiwKKzU4MDA4MjAsCisxMDk0ODMyOSwKKzE5NDA5NTAsCistMzg1ODI2MCwKKzE5MzU5NzksCiszODU4MjYwLAorMTI5MDAyODgsCisxNjc1Njg2NiwKKy0zMzM1MjMzMiwKKzE2NzU2ODQ0LAorMzMzNTIzMzIsCistMTY3MzY0OTMsCis3NDE2MTQxLAorLTE0NzUwNzA5LAorNzQwNTk0MSwKKzE0NzUwNzA5LAorMTk1NTEzNCwKKzQ2MTgxMzIsCistOTE3ODYwNCwKKzQ2MDQ4ODQsCis5MTc4NjA0LAorNzU1NDIwMCwKKzMyMDU3MzEsCistNjM2NTg3MywKKzMxOTA5NDQsCis2MzY1ODczLAorMTAzODA1NDEsCisxNjc2NTkzNywKKy0zMzM3MDM2OSwKKzE2NzY1ODk3LAorMzMzNzAzNjksCistMTY3NTQ2MTgsCis5ODc1NzE0LAorLTE5NjMxOTYxLAorOTg1MTIzOCwKKzE5NjMxOTYxLAorLTI5NDk3MzYsCis2ODI4ODc0LAorLTEzNTU2ODcwLAorNjc5MzU5MiwKKzEzNTU2ODcwLAorMzE1NDc1MSwKKzUwMjE5MjAsCistOTk1Mzk4NywKKzQ5ODAyMzAsCis5OTUzOTg3LAorNjc3NTA2NiwKKzE2NzcwOTgzLAorLTMzMzgwMzgxLAorMTY3NzA5MTEsCiszMzM4MDM4MSwKKy0xNjc2NDY3OSwKKzEyMTA3NzMxLAorLTI0MDQ1MDY2LAorMTIwNTM2NzksCisyNDA0NTA2NiwKKy03Mzg0MTk0LAorOTMwNDY5NywKKy0xODQzMzcwNCwKKzkyMTgyMDAsCisxODQzMzcwNCwKKy0xNzQ1NjgxLAorNzMzMDE3MywKKy0xNDQ4MDkyNSwKKzcyMjA4MTksCisxNDQ4MDkyNSwKKzIyMjYyMjQsCisxNjc3MzgwNCwKKy0zMzM4NTkzNywKKzE2NzczNjc0LAorMzMzODU5MzcsCistMTY3NzAyNjEsCisxMzg1NzA2NywKKy0yNzQ2OTg4MywKKzEzNzQ1NzMxLAorMjc0Njk4ODMsCistMTA4MjU1ODMsCisxMTY2NzIzMCwKKy0yMzAyODIwOSwKKzExNDcyNDAzLAorMjMwMjgyMDksCistNjM2MjQxNywKKzk4NjE1MDksCistMTkzNjU2NDIsCis5NTk3ODM1LAorMTkzNjU2NDIsCistMjY4MjEyOCwKKzE2Nzc1NDA1LAorLTMzMzg5MDE5LAorMTY3NzUxNzAsCiszMzM4OTAxOSwKKy0xNjc3MzM1OCwKKzE1MDk0MTY2LAorLTI5ODI2MDU3LAorMTQ4NzYyMDcsCisyOTgyNjA1NywKKy0xMzE5MzE1NywKKzEzNjI5NTc1LAorLTI2NzIyMjI1LAorMTMyMjE5NDgsCisyNjcyMjIyNSwKKy0xMDA3NDMwNywKKzEyMjYxMzA0LAorLTIzODIyNTIwLAorMTE2NzY0ODIsCisyMzgyMjUyMCwKKy03MTYwNTcxLAorMTY3NzYzNTgsCistMzMzOTA3MjksCisxNjc3NTkzNSwKKzMzMzkwNzI5LAorLTE2Nzc1MDc2LAorMTU5Mzk5NzMsCistMzEzMTU4MDksCisxNTUyNzM2MCwKKzMxMzE1ODA5LAorLTE0NjkwMTE3LAorMTUxNDAyNTQsCistMjkzMzE4NTAsCisxNDMzMzUyMCwKKzI5MzMxODUwLAorLTEyNjk2NTU4LAorMTQzMjQ1NTIsCistMjczMDgyNDAsCisxMzExNTgyMSwKKzI3MzA4MjQwLAorLTEwNjYzMTU3LAorMTY3NzcwMDQsCistMzMzOTE2NzcsCisxNjc3NjI0MSwKKzMzMzkxNjc3LAorLTE2Nzc2MDI5LAorMTY1NjQ1MTksCistMzIyMDgwNTEsCisxNTc5OTM3NCwKKzMyMjA4MDUxLAorLTE1NTg2Njc2LAorMTYzNDk3MjAsCistMzEwMTE1MzgsCisxNDgxMTg3MCwKKzMxMDExNTM4LAorLTE0Mzg0Mzc0LAorMTYxMTc4ODQsCistMjk3MjAxMTksCisxMzc0NjAzOCwKKzI5NzIwMTE5LAorLTEzMDg2NzA1LAorMTY3Nzc1NzQsCistMzMzOTIyMDMsCisxNjc3NjE5OSwKKzMzMzkyMjAzLAorLTE2Nzc2NTU4LAorMTcxNDI2MjMsCistMzI3MjUxODMsCisxNTc0MDkwMywKKzMyNzI1MTgzLAorLTE2MTA2MzEwLAorMTc1MjM3NDYsCistMzIwMjg3OTMsCisxNDY2MDAyMSwKKzMyMDI4NzkzLAorLTE1NDA2NTUxLAorMTc5NDk0NTIsCistMzEyNTA5NDEsCisxMzQ1MjY5OSwKKzMxMjUwOTQxLAorLTE0NjI0OTM1LAorMTY3NzgyNzMsCistMzMzOTI0OTUsCisxNjc3NTc5NCwKKzMzMzkyNDk1LAorLTE2Nzc2ODUxLAorMTc4NjQ1MTEsCistMzMwMTkyMjEsCisxNTMxNDQ3NiwKKzMzMDE5MjIxLAorLTE2NDAxNzcxLAorMTkwMTk1ODIsCistMzI2MjIyOTQsCisxMzc2MDU1NywKKzMyNjIyMjk0LAorLTE2MDAyOTIzLAorMjAzMzU4ODYsCistMzIxNjk5NjEsCisxMTk4OTczMSwKKzMyMTY5OTYxLAorLTE1NTQ4NDAxLAorMTY3NzkzNTAsCistMzMzOTI2NTcsCisxNjc3NDg3OSwKKzMzMzkyNjU3LAorLTE2Nzc3MDE0LAorMTg5ODI5NzIsCistMzMxODQ1OTIsCisxNDM2MjE4NiwKKzMzMTg0NTkyLAorLTE2NTY3OTQyLAorMjEzNTA1NTQsCistMzI5NjEwNDYsCisxMTc2OTk3NiwKKzMyOTYxMDQ2LAorLTE2MzQzMzE0LAorMjQwNzk2ODgsCistMzI3MDMzNjIsCis4NzgxOTEyLAorMzI3MDMzNjIsCistMTYwODQzODMsCisxNjc4MTE5MCwKKy0zMzM5Mjc0NiwKKzE2NzczMTMwLAorMzMzOTI3NDYsCistMTY3NzcxMDQsCisyMDg5NjMwMywKKy0zMzI3NzAyNiwKKzEyNTQxNzM3LAorMzMyNzcwMjYsCistMTY2NjA4MjQsCisyNTM0MzE5OSwKKy0zMzE1MTk3NywKKzc5NjkxODUsCiszMzE1MTk3NywKKy0xNjUzNTE2OSwKKzMwNTAyMzg0LAorLTMzMDA2ODk2LAorMjY2NDIxOSwKKzMzMDA2ODk2LAorLTE2Mzg5Mzg3LAorMTY3ODQ0NTEsCistMzMzOTI3OTYsCisxNjc2OTkxOCwKKzMzMzkyNzk2LAorLTE2Nzc3MTU0LAorMjQyODgyNTgsCistMzMzMjg1MTYsCis5MjAxNTIwLAorMzMzMjg1MTYsCistMTY3MTI1NjIsCiszMjQyMzE4NywKKy0zMzI1ODgyOCwKKzk5NjU2NywKKzMzMjU4ODI4LAorLTE2NjQyNTM4LAorNDE4OTUzMjAsCistMzMxNzc2ODYsCistODU1NzEwMSwKKzMzMTc3Njg2LAorLTE2NTYxMDAzLAorMTY1NDE1OTUsCistMzI0NDc0OTgsCisxNjU0MTU4NywKKzMyNDQ3NDk4LAorLTE2MzA1OTY2LAorMTA2MDkyNSwKKy0yMDgwNTkwLAorMTA2MDQyNiwKKzIwODA1OTAsCisxNDY1NTg2NSwKKzUyNTQ3OCwKKy0xMDMwMjU2LAorNTI0OTYyLAorMTAzMDI1NiwKKzE1NzI2Nzc2LAorMzMwMzIxLAorLTY0NzQzNywKKzMyOTgwMCwKKzY0NzQzNywKKzE2MTE3MDk1LAorMTY2NDU3MTcsCistMzI2NTE3MzQsCisxNjY0NTcwMywKKzMyNjUxNzM0LAorLTE2NTE0MjAzLAorMTgyMDc4OSwKKy0zNTcwMDk1LAorMTgxOTI0OCwKKzM1NzAwOTUsCisxMzEzNzE3OSwKKzkyNDU3NSwKKy0xODEyMDE4LAorOTIyOTQyLAorMTgxMjAxOCwKKzE0OTI5Njk5LAorNTg2Njg0LAorLTExNDkxODYsCis1ODUwMTYsCisxMTQ5MTg2LAorMTU2MDU1MTYsCisxNjcwNDAzNiwKKy0zMjc2NjEyMSwKKzE2NzA0MDExLAorMzI3NjYxMjEsCistMTY2MzA4MzEsCiszMDIwODc1LAorLTU5MjExMzgsCiszMDE2MjY2LAorNTkyMTEzOCwKKzEwNzQwMDc2LAorMTU5NzU3MywKKy0zMTI4NzY0LAorMTU5MjQ4NywKKzMxMjg3NjQsCisxMzU4NzE1NiwKKzEwMzAxMjQsCistMjAxNTQ4NywKKzEwMjQ4NDgsCisyMDE1NDg3LAorMTQ3MjIyNDQsCisxNjczNjU2NSwKKy0zMjgyOTkwOSwKKzE2NzM2NTIxLAorMzI4Mjk5MDksCistMTY2OTU4NjksCis0NzYyMDEzLAorLTkzMjgxODUsCis0NzQ4OTIyLAorOTMyODE4NSwKKzcyNjYyODEsCisyNjc5NTY2LAorLTUyNDEwOTEsCisyNjY0MjA1LAorNTI0MTA5MSwKKzExNDMzNDQ2LAorMTc3MzkxMiwKKy0zNDYzNjIwLAorMTc1NzU2NCwKKzM0NjM2MjAsCisxMzI0NTc0MCwKKzE2NzU0NjczLAorLTMyODY1Mzk1LAorMTY3NTQ1OTMsCiszMjg2NTM5NSwKKy0xNjczMjA1MCwKKzcwMDE3NzIsCistMTM3MDA0NjgsCis2OTY3MTA0LAorMTM3MDA0NjgsCisyODA4MzQwLAorNDI5MzM2MywKKy04Mzc4MzEyLAorNDI0OTA4OSwKKzgzNzgzMTIsCis4MjM0NzY0LAorMjk2MDA2MSwKKy01NzU4MzA3LAorMjkxMTA1OCwKKzU3NTgzMDcsCisxMDkwNjA5NywKKzE2NzY0NzU2LAorLTMyODg1MTEwLAorMTY3NjQ2MTEsCiszMjg4NTExMCwKKy0xNjc1MjE1MSwKKzk0ODAxODgsCistMTg1MTMyMTUsCis5Mzk1NzIyLAorMTg1MTMyMTUsCistMjA5ODY5NCwKKzY0NTM2OTMsCistMTI1NDIxNzEsCis2MzM0MTk0LAorMTI1NDIxNzEsCiszOTg5MzMwLAorNDcxMDY0MSwKKy05MTAzMjY0LAorNDU3MDk2NiwKKzkxMDMyNjQsCis3NDk1NjA5LAorMTY3NzAzOTMsCistMzI4OTYwNTQsCisxNjc3MDEzMywKKzMyODk2MDU0LAorLTE2NzYzMzEwLAorMTE4MTYyNzYsCistMjI5OTI5NDksCisxMTYyNzEzMSwKKzIyOTkyOTQ5LAorLTY2NjYxOTEsCis4OTc1NzI2LAorLTE3MzE0Nzg5LAorODY3ODI4MCwKKzE3MzE0Nzg5LAorLTg3Njc5MCwKKzcwMzI0MDgsCistMTM0MzAxNjQsCis2NjYwODY5LAorMTM0MzAxNjQsCiszMDgzOTQwLAorMTY3NzM1OTMsCistMzI5MDIxMjcsCisxNjc3MzEyNCwKKzMyOTAyMTI3LAorLTE2NzY5NTAyLAorMTM3MzU2MTUsCistMjY1NTcwNTIsCisxMzM0MTcyMCwKKzI2NTU3MDUyLAorLTEwMzAwMTIwLAorMTE1MjgxNjUsCistMjE5NDY2MDYsCisxMDg0ODQwMCwKKzIxOTQ2NjA2LAorLTU1OTkzNDksCis5NzUyNTYzLAorLTE4MjM4MTEwLAorODg0Mjg1MywKKzE4MjM4MTEwLAorLTE4MTgyMDAsCisxNjc3NTQ5OSwKKy0zMjkwNTQ5NiwKKzE2Nzc0NjU0LAorMzI5MDU0OTYsCistMTY3NzI5MzcsCisxNTIwMDU4OCwKKy0yOTA1NDk1NywKKzE0NDIzNTg5LAorMjkwNTQ5NTcsCistMTI4NDY5NjEsCisxMzg1NzAwNCwKKy0yNTc2OTk5NSwKKzEyNDE3ODU1LAorMjU3Njk5OTUsCistOTQ5NzY0MywKKzEyNjI0NDUzLAorLTIyNzU2NTAwLAorMTA1Nzc4NzMsCisyMjc1NjUwMCwKKy02NDI1MTExLAorMTY3NzY3OTIsCistMzI5MDczNjUsCisxNjc3NTI2NywKKzMyOTA3MzY1LAorLTE2Nzc0ODQzLAorMTYzNjYzNDQsCistMzA2NTQwODksCisxNDg4ODI5NCwKKzMwNjU0MDg5LAorLTE0NDc3NDIyLAorMTU5Nzg3NTMsCistMjg1MjYyOTUsCisxMzEwNjQwNiwKKzI4NTI2Mjk1LAorLTEyMzA3OTQyLAorMTU1ODgwNTcsCistMjYzODE0NTYsCisxMTMxMDI0MiwKKzI2MzgxNDU2LAorLTEwMTIxMDgzLAorMTY3Nzc5MzMsCistMzI5MDg0MDIsCisxNjc3NTE4MywKKzMyOTA4NDAyLAorLTE2Nzc1OTAwLAorMTc0OTM4MDIsCistMzE2MTkyODcsCisxNDc0NDk0MywKKzMxNjE5Mjg3LAorLTE1NDYxNTI5LAorMTgyMTI0MTQsCistMzAzMjUyMzQsCisxMjcwNjkyNywKKzMwMzI1MjM0LAorLTE0MTQyMTI0LAorMTg5ODI3MjUsCistMjg5MzgwODEsCisxMDUyMjI4NiwKKzI4OTM4MDgxLAorLTEyNzI3Nzk1LAorMTY3NzkzMzAsCistMzI5MDg5NzcsCisxNjc3NDM3MiwKKzMyOTA4OTc3LAorLTE2Nzc2NDg2LAorMTg5MjgwNDEsCistMzIxODEyODAsCisxMzg4MzcwNywKKzMyMTgxMjgwLAorLTE2MDM0NTMyLAorMjExNjMxMTgsCistMzE0MjQzMzQsCisxMDg3Njg1NSwKKzMxNDI0MzM0LAorLTE1MjYyNzU3LAorMjM2NTA4NzEsCistMzA1ODE4MTQsCis3NTMwMDc2LAorMzA1ODE4MTQsCistMTQ0MDM3MzEsCisxNjc4MTQ4NCwKKy0zMjkwOTI5NiwKKzE2NzcyNTQzLAorMzI5MDkyOTYsCistMTY3NzY4MTEsCisyMTE2MTk5NiwKKy0zMjUwMTY3NCwKKzExOTc2NDI0LAorMzI1MDE2NzQsCistMTYzNjEyMDQsCisyNTgxMjAwOSwKKy0zMjA2ODk3NSwKKzY4ODUyMzQsCiszMjA2ODk3NSwKKy0xNTkyMDAyNywKKzMxMTAzMzg1LAorLTMxNTc2NTk0LAorMTA5MTgzMSwKKzMxNTc2NTk0LAorLTE1NDE4MDAwLAorMTY3ODUxNjQsCistMzI5MDk0NzMsCisxNjc2OTA0MywKKzMyOTA5NDczLAorLTE2Nzc2OTkxLAorMjQ5ODgwNjQsCistMzI2ODIxMzksCis4MzM0MzU2LAorMzI2ODIxMzksCistMTY1NDUyMDQsCiszMzc5NTc5NCwKKy0zMjQzODA0MywKKy03MjIyNTIsCiszMjQzODA0MywKKy0xNjI5NjMyNSwKKzQzOTQ2MTI4LAorLTMyMTU2NzM4LAorLTExMTU5NDAzLAorMzIxNTY3MzgsCistMTYwMDk1MTAsCisxNjc5MTY4NywKKy0zMjkwOTU3MSwKKzE2NzYyNjIwLAorMzI5MDk1NzEsCistMTY3NzcwOTEsCiszMTc3MjUyMSwKKy0zMjc4MzA5NiwKKzE2NTI4MzQsCiszMjc4MzA5NiwKKy0xNjY0ODEzOSwKKzQ3OTYxMjI5LAorLTMyNjQ2NDIzLAorLTE0Njc1MjI1LAorMzI2NDY0MjMsCistMTY1MDg3ODgsCis2Njc1MTY4MiwKKy0zMjQ4Nzc4NSwKKy0zMzYyNzQyMywKKzMyNDg3Nzg1LAorLTE2MzQ3MDQzLAorMTYzMTI1MDAsCistMzAxNDE1NTYsCisxNjMxMjQ4NSwKKzMwMTQxNTU2LAorLTE1ODQ3NzY5LAorNTQ3NTk4LAorLTEwMTEzNTQsCis1NDcwODQsCisxMDExMzU0LAorMTU2ODI1MzQsCisyNjY0NDgsCistNDkxODQ5LAorMjY1OTI1LAorNDkxODQ5LAorMTYyNDQ4NDMsCisxNjYxMTEsCistMzA2NDQ2LAorMTY1NTg0LAorMzA2NDQ2LAorMTY0NDU1MjEsCisxNjUxNjI2MiwKKy0zMDUxODA0OSwKKzE2NTE2MjM2LAorMzA1MTgwNDksCistMTYyNTUyODIsCis5NjI0ODcsCistMTc3NjkzOCwKKzk2MDg1NywKKzE3NzY5MzgsCisxNDg1Mzg3MiwKKzQ3NDc0MiwKKy04NzU2NTYsCis0NzMwNjIsCis4NzU2NTYsCisxNTgyOTQxMywKKzI5NzUyMCwKKy01NDgxNzYsCisyOTU4MjEsCis1NDgxNzYsCisxNjE4Mzg3NSwKKzE2NjMxNDkyLAorLTMwNzMwOTQ0LAorMTY2MzE0NDMsCiszMDczMDk0NCwKKy0xNjQ4NTcxOSwKKzE2NjAxNDYsCistMzA2Mjg3MCwKKzE2NTUwODEsCiszMDYyODcwLAorMTM0NjE5ODksCis4MzgxNzIsCistMTU0MzgwNiwKKzgzMjgzMSwKKzE1NDM4MDYsCisxNTEwNjIxMywKKzUzMDEzNSwKKy05NzQ1MzIsCis1MjQ2OTEsCis5NzQ1MzIsCisxNTcyMjM5MCwKKzE2Njk2MTEwLAorLTMwODUwMzA3LAorMTY2OTYwMjIsCiszMDg1MDMwNywKKy0xNjYxNDkxNiwKKzI3NzY2NDIsCistNTExNjQ3MiwKKzI3NjEzODcsCis1MTE2NDcyLAorMTEyMzkxODcsCisxNDU2ODQ1LAorLTI2NzY0NzcsCisxNDQwMTUyLAorMjY3NjQ3NywKKzEzODgwMjE5LAorOTM2MTUxLAorLTE3MTM4MzUsCis5MTg4OTEsCisxNzEzODM1LAorMTQ5MjIxNzQsCisxNjczMjE5MSwKKy0zMDkxNjkxMCwKKzE2NzMyMDMxLAorMzA5MTY5MTAsCistMTY2ODcwMDYsCis0NDMwMjE5LAorLTgxNDU1MjMsCis0Mzg2NDMxLAorODE0NTUyMywKKzc5NjA1NjYsCisyNDY3NzE1LAorLTQ1MTI4NTcsCisyNDE2OTY2LAorNDUxMjg1NywKKzExODkyNTM1LAorMTYyODExMywKKy0yOTU4NzI1LAorMTU3NDM4NywKKzI5NTg3MjUsCisxMzU3NDcxNiwKKzE2NzUyMzE0LAorLTMwOTUzOTczLAorMTY3NTIwMjUsCiszMDk1Mzk3MywKKy0xNjcyNzEyMywKKzY2MjIxOTMsCistMTIxMjc2MTYsCis2NTA0NjQ0LAorMTIxMjc2MTYsCiszNjUwMzc5LAorNDAxNjU0MSwKKy03Mjg1MTM1LAorMzg2ODgzMSwKKzcyODUxMzUsCis4ODkxODQzLAorMjc2MjY3NSwKKy00OTU0ODgzLAorMjYwMDQ1MSwKKzQ5NTQ4ODMsCisxMTQxNDA4OSwKKzE2NzYzNTc1LAorLTMwOTc0NTY4LAorMTY3NjMwNTUsCiszMDk3NDU2OCwKKy0xNjc0OTQxNSwKKzkxNTA0MzEsCistMTY2MzkxNDIsCis4ODU5NjQ2LAorMTY2MzkxNDIsCistMTIzMjg2MSwKKzYxODIxODEsCistMTEwNDk5NzQsCis1Nzc4MjI1LAorMTEwNDk5NzQsCis0ODE2ODEwLAorNDUxODYyOSwKKy03OTE3NTMyLAorNDA1MTI0NywKKzc5MTc1MzIsCis4MjA3MzQxLAorMTY3Njk5NzMsCistMzA5ODYwMDIsCisxNjc2OTAzNCwKKzMwOTg2MDAyLAorLTE2NzYxNzkxLAorMTE2NzYyNjksCistMjA5NjQ2MzAsCisxMTAxNTY4MywKKzIwOTY0NjMwLAorLTU5MTQ3MzYsCis4ODkzNDE4LAorLTE1NDg5NjM4LAorNzg3MjQ0NiwKKzE1NDg5NjM4LAorMTEzNTIsCis3MDQxMzgzLAorLTExODQ1OTM5LAorNTc4MDU2OCwKKzExODQ1OTM5LAorMzk1NTI2NSwKKzE2NzczNzgzLAorLTMwOTkyMzQ3LAorMTY3NzIwOTIsCiszMDk5MjM0NywKKy0xNjc2ODY1OSwKKzEzOTUzMjgwLAorLTI0NDk2NTM0LAorMTI1NjE1NzcsCisyNDQ5NjUzNCwKKy05NzM3NjQxLAorMTE5NzA5MjEsCistMTk5MzEwMjUsCis5NjAyMjY1LAorMTk5MzEwMjUsCistNDc5NTk3MCwKKzEwNDEzMTcyLAorLTE2MzQzNDIxLAorNzI3NjgyMCwKKzE2MzQzNDIxLAorLTkxMjc3NSwKKzE2Nzc2MzY4LAorLTMwOTk1ODY4LAorMTY3NzMzMTgsCiszMDk5NTg2OCwKKy0xNjc3MjQ3MCwKKzE2MDA3NzkwLAorLTI3MDIxMzQzLAorMTMyMzk5MDEsCisyNzAyMTM0MywKKy0xMjQ3MDQ3NSwKKzE1MzY1NTI3LAorLTIzNzAwMDI0LAorMTAyODcxOTQsCisyMzcwMDAyNCwKKy04ODc1NTA1LAorMTQ3ODU5NDcsCistMjA3MDI4NTcsCis3NjIyNjY0LAorMjA3MDI4NTcsCistNTYzMTM5NSwKKzE2Nzc4NjUwLAorLTMwOTk3ODIxLAorMTY3NzMxNTAsCiszMDk5NzgyMSwKKy0xNjc3NDU4MywKKzE4MTU3MDU2LAorLTI4NjU5NjQ5LAorMTI4NjM5MjUsCisyODY1OTY0OSwKKy0xNDI0Mzc2NCwKKzE5NDQzODA2LAorLTI2NDc2OTUwLAorOTIxNDYzOCwKKzI2NDc2OTUwLAorLTExODgxMjI4LAorMjA3Mjg2ODEsCistMjQyOTc0MzMsCis1NTcwNjcxLAorMjQyOTc0MzMsCistOTUyMjEzNiwKKzE2NzgxNDQ1LAorLTMwOTk4OTA0LAorMTY3NzE1MjcsCiszMDk5ODkwNCwKKy0xNjc3NTc1NiwKKzIwOTg4MDYwLAorLTI5NjU2OTIxLAorMTExMTIzNjEsCisyOTY1NjkyMSwKKy0xNTMyMzIwNCwKKzI1MTg3NzQzLAorLTI4MzE3MTUwLAorNTQ2MjUyMCwKKzI4MzE3MTUwLAorLTEzODczMDQ3LAorMjk2NzIxMjQsCistMjY4ODY1NTYsCistNTcwMzI2LAorMjY4ODY1NTYsCistMTIzMjQ1ODIsCisxNjc4NTc1MiwKKy0zMDk5OTUwNSwKKzE2NzY3ODcwLAorMzA5OTk1MDUsCistMTY3NzY0MDYsCisyNTQ0NDMwMCwKKy0zMDI0MDU0NSwKKzcyODc4MzAsCiszMDI0MDU0NSwKKy0xNTk1NDkxNCwKKzM0NDM0OTgwLAorLTI5NDUyNDcyLAorLTI1NTU4NTQsCisyOTQ1MjQ3MiwKKy0xNTEwMTkxMCwKKzQ0NDQxMjQyLAorLTI4NTc1Mzc5LAorLTEzNTExNDc0LAorMjg1NzUzNzksCistMTQxNTI1NTIsCisxNjc5MzExMiwKKy0zMDk5OTgzOCwKKzE2NzYwODcxLAorMzA5OTk4MzgsCistMTY3NzY3NjcsCiszMzA5NTUwNiwKKy0zMDU3NDI1MCwKKy0yMTc3LAorMzA1NzQyNTAsCistMTYzMTYxMTMsCis1MDQwODAzNCwKKy0zMDEyMjI5MSwKKy0xNzgwMzkwMiwKKzMwMTIyMjkxLAorLTE1ODI2OTE3LAorNzAxNTM3NjUsCistMjk2MDY4MTEsCistMzgxMDc1ODMsCisyOTYwNjgxMSwKKy0xNTI2ODk2NiwKKzE2ODA2MTU4LAorLTMxMDAwMDIzLAorMTY3NDgwMjUsCiszMTAwMDAyMywKKy0xNjc3Njk2NywKKzQ2NjcwMTU1LAorLTMwNzYyNTI2LAorLTEzMzczMDM3LAorMzA3NjI1MjYsCistMTY1MTk5MDIsCis3ODc4OTU0NCwKKy0zMDUwNzA5MiwKKy00NTc2ODkwNSwKKzMwNTA3MDkyLAorLTE2MjQzNDIzLAorMTE1OTQyNzQ3LAorLTMwMjExNjI3LAorLTgzMjQxOTE4LAorMzAyMTE2MjcsCistMTU5MjM2MTMsCisxNTg3MjgzNSwKKy0yMjQ0NzU1OSwKKzE1ODcyODA3LAorMjI0NDc1NTksCistMTQ5Njg0MjYsCisyNzc3NTQsCistMzkyNDM0LAorMjc3MjMxLAorMzkyNDM0LAorMTYyMjIyMzEsCisxMzMwNjEsCistMTg3ODA0LAorMTMyNTMzLAorMTg3ODA0LAorMTY1MTE2MjIsCis4MTc2MywKKy0xMTUyNTYsCis4MTIzMywKKzExNTI1NiwKKzE2NjE0MjIwLAorMTYyNjMzMDMsCistMjI5OTk3NDYsCisxNjI2MzI1MCwKKzIyOTk5NzQ2LAorLTE1NzQ5MzM3LAorNDk0NjA1LAorLTY5ODI5MCwKKzQ5MjkyNywKKzY5ODI5MCwKKzE1Nzg5Njg1LAorMjM4Nzc2LAorLTMzNjQ3NSwKKzIzNzA3MSwKKzMzNjQ3NSwKKzE2MzAxMzY5LAorMTQ3MjI4LAorLTIwNzAwMCwKKzE0NTUxNCwKKzIwNzAwMCwKKzE2NDg0NDczLAorMTY0ODgyNzgsCistMjMzMTc4NzcsCisxNjQ4ODE4MSwKKzIzMzE3ODc3LAorLTE2MTk5MjQyLAorODcyMzc4LAorLTEyMjk5NjEsCis4NjcwNDksCisxMjI5OTYxLAorMTUwMzc3ODgsCis0MjY4ODksCistNTk5ODM5LAorNDIxNDExLAorNTk5ODM5LAorMTU5Mjg5MTYsCisyNjQ4NDAsCistMzcwNjI5LAorMjU5MzA4LAorMzcwNjI5LAorMTYyNTMwNjgsCisxNjYxNTc4NSwKKy0yMzQ5ODE0NSwKKzE2NjE1NjA5LAorMjM0OTgxNDUsCistMTY0NTQxNzksCisxNTEzNzU3LAorLTIxMjkwMTYsCisxNDk3MTI2LAorMjEyOTAxNiwKKzEzNzY2MzMzLAorNzU4MjYxLAorLTEwNjAwMDEsCis3NDA4MDYsCisxMDYwMDAxLAorMTUyNzgxNDksCis0NzU1NTEsCistNjU5OTcxLAorNDU3Nzg5LAorNjU5OTcxLAorMTU4NDM4NzUsCisxNjY4NzQwNywKKy0yMzU5OTMzMiwKKzE2Njg3MDg5LAorMjM1OTkzMzIsCistMTY1OTcyODAsCisyNTU3MTE2LAorLTM1ODA2NDcsCisyNTA2Njg0LAorMzU4MDY0NywKKzExNzEzNDE2LAorMTMzMjAwNywKKy0xODQ1MDA5LAorMTI3NzIzMCwKKzE4NDUwMDksCisxNDE2Nzk3OSwKKzg1MTI3MiwKKy0xMTYzOTQyLAorNzk0NzkxLAorMTE2Mzk0MiwKKzE1MTMxMTU0LAorMTY3Mjc0ODYsCistMjM2NTU4MzAsCisxNjcyNjkxMCwKKzIzNjU1ODMwLAorLTE2Njc3MTgwLAorNDE0NDc0OSwKKy01NzU4MTYzLAorMzk5ODUyMywKKzU3NTgxNjMsCis4NjMzOTQ0LAorMjI5NzgwMywKKy0zMTMxMDY5LAorMjEzMDE5OCwKKzMxMzEwNjksCisxMjM0OTIxNiwKKzE1MTYwMjUsCistMjAxOTA3MCwKKzEzMzkzNzEsCisyMDE5MDcwLAorMTM5MjE4MjAsCisxNjc0OTk1NywKKy0yMzY4NzI4MiwKKzE2NzQ4OTE4LAorMjM2ODcyODIsCistMTY3MjE2NjAsCis2MzQyODA3LAorLTg2ODg3NzQsCis1OTQ0OTc1LAorODY4ODc3NCwKKzQ0ODk0MzQsCiszODU1NzIyLAorLTUxMDQ0NTQsCiszMzYzMDY2LAorNTEwNDQ1NCwKKzk1NTg0MjgsCisyNjc4Mjg2LAorLTM0MDc1NjQsCisyMTQwNzM4LAorMzQwNzU2NCwKKzExOTU4MTkyLAorMTY3NjI3MzYsCistMjM3MDQ3NjIsCisxNjc2MDg2MSwKKzIzNzA0NzYyLAorLTE2NzQ2MzgwLAorOTA1OTk0OCwKKy0xMjEwNjAxNCwKKzgwNjA1NDIsCisxMjEwNjAxNCwKKy0zNDMyNzQsCis2MjMxOTU5LAorLTc4NDc2NjksCis0ODY2MzIyLAorNzg0NzY2OSwKKzU2Nzg5MzYsCis0Njc4NTczLAorLTU1MDg2MDMsCiszMTExNzY4LAorNTUwODYwMywKKzg5ODY4NzUsCisxNjc3MDM1MywKKy0yMzcxNDQ2OCwKKzE2NzY2OTcwLAorMjM3MTQ0NjgsCistMTY3NjAxMDcsCisxMjEwMDc2OCwKKy0xNTQ4MzQyNywKKzk3OTYxMDQsCisxNTQ4MzQyNywKKy01MTE5NjU2LAorOTY1OTQwMSwKKy0xMTE4MDA0NywKKzYxNTE1NzMsCisxMTE4MDA0NywKKzk2NjI0MiwKKzgwNjYwMDMsCistODM3MTM3NiwKKzM3NzI5MTEsCis4MzcxMzc2LAorNDkzODMwMiwKKzE2Nzc1NTIwLAorLTIzNzE5ODU1LAorMTY3Njk0MjAsCisyMzcxOTg1NSwKKy0xNjc2NzcyNSwKKzE1NDEwNjQ3LAorLTE4MzE3Nzk0LAorMTA0OTQ2MjYsCisxODMxNzc5NCwKKy05MTI4MDU2LAorMTQ0Nzc0MzksCistMTQ2MjQyMzMsCis2MjA0MzUwLAorMTQ2MjQyMzMsCistMzkwNDU3MywKKzEzNzU0MTI3LAorLTExNzYxNDE5LAorMjg3OTAzMiwKKzExNzYxNDE5LAorMTQ0MDU4LAorMTY3ODAwODMsCistMjM3MjI4NDQsCisxNjc2OTA4NCwKKzIzNzIyODQ0LAorLTE2NzcxOTUxLAorMTkzNDg5NDcsCistMjAzODc3MzUsCis5NDgzNjY0LAorMjAzODc3MzUsCistMTIwNTUzOTUsCisyMTQ2NzAzOCwKKy0xNzYzNzg1NSwKKzM0NzY2NTYsCisxNzYzNzg1NSwKKy04MTY2NDc4LAorMjMzNjkzMDEsCistMTUxNjgxODEsCistMTkxODI1MywKKzE1MTY4MTgxLAorLTQ2NzM4MzIsCisxNjc4NTY3MywKKy0yMzcyNDUwMSwKKzE2NzY1ODM5LAorMjM3MjQ1MDEsCistMTY3NzQyOTYsCisyNDg2ODU0NywKKy0yMTc1MDk0NSwKKzU4OTE5MzQsCisyMTc1MDk0NSwKKy0xMzk4MzI2NSwKKzMyMzkyNTQzLAorLTE5OTEzODQ3LAorLTQyMzAxMTAsCisxOTkxMzg0NywKKy0xMTM4NTIxNywKKzM5OTM4NjQxLAorLTE4MDcxMzUzLAorLTE0MzgxODg4LAorMTgwNzEzNTMsCistODc3OTUzNywKKzE2Nzk0Mjg4LAorLTIzNzI1NDIxLAorMTY3NTg1MjUsCisyMzcyNTQyMSwKKy0xNjc3NTU5NiwKKzMzNzM5MDI1LAorLTIyNTg4NjM2LAorLTE3OTM4NzAsCisyMjU4ODYzNiwKKy0xNTE2Nzk0MCwKKzUwNzI3MzcxLAorLTIxNDQ4OTI2LAorLTIwMzk0MDEwLAorMjE0NDg5MjYsCistMTM1NTYxNDYsCis2OTA4MjIxOCwKKy0yMDIxNzU0MCwKKy00MDQ5MDI5OCwKKzIwMjE3NTQwLAorLTExODE0NzAzLAorMTY4MDkwMDgsCistMjM3MjU5MzEsCisxNjc0NDUyNiwKKzIzNzI1OTMxLAorLTE2Nzc2MzE4LAorNDkwNTM1OTQsCistMjMwODE2NjYsCistMTY0MTExODksCisyMzA4MTY2NiwKKy0xNTg2NTE4OSwKKzgyODI0Mjk2LAorLTIyNDA2OTA4LAorLTUxMTM2MTQzLAorMjI0MDY5MDgsCistMTQ5MTA5MzcsCisxMjEwNDk5MTUsCistMjE2NDMxMzgsCistOTA0NDE4OTUsCisyMTY0MzEzOCwKKy0xMzgzMDgwMywKKzE2ODM1MDk5LAorLTIzNzI2MjE0LAorMTY3MTg4MzUsCisyMzcyNjIxNCwKKy0xNjc3NjcxOCwKKzc2MjYxNDY4LAorLTIzMzY0NTA1LAorLTQzMjE5MDY4LAorMjMzNjQ1MDUsCistMTYyNjUxODQsCisxNDAwODA2MDMsCistMjI5NzYwNTksCistMTA3NTg3NTQ5LAorMjI5NzYwNTksCistMTU3MTU4MzgsCisyMTQzNDg1NTcsCistMjI1MjQwMTQsCistMTgyNDk0NzkxLAorMjI1MjQwMTQsCistMTUwNzY1NTAsCisxNTA2MDk3MSwKKzAsCisxNTA2MDkxNiwKKzAsCistMTMzNDQ2NzEsCisxMzc3MTUsCiswLAorMTM3MTg4LAorMCwKKzE2NTAyMzEzLAorNjI0OTQsCiswLAorNjE5NjQsCiswLAorMTY2NTI3NTcsCiszNTQ5OSwKKzAsCiszNDk2OSwKKzAsCisxNjcwNjc0OCwKKzE1Nzc5OTM5LAorMCwKKzE1Nzc5ODM3LAorMCwKKy0xNDc4MjU2MCwKKzI0NzA1OSwKKzAsCisyNDUzNTYsCiswLAorMTYyODQ4MDEsCisxMTI3MjYsCiswLAorMTExMDA5LAorMCwKKzE2NTUzNDgxLAorNjQyODIsCiswLAorNjI1NjAsCiswLAorMTY2NTAzNzUsCisxNjIwOTEyNCwKKzAsCisxNjIwODkzNCwKKzAsCistMTU2NDA4NDIsCis0NDE0ODMsCiswLAorNDM2MDEwLAorMCwKKzE1ODk5NzIzLAorMjAzNDAxLAorMCwKKzE5Nzg0OCwKKzAsCisxNjM3NTk2NywKKzExNjc5NCwKKzAsCisxMTEyMTIsCiswLAorMTY1NDkyMTEsCisxNjQ1NzQzMywKKzAsCisxNjQ1NzA4NSwKKzAsCistMTYxMzczMDIsCis3ODM1MTAsCiswLAorNzY2MDgzLAorMCwKKzE1MjI3NjIzLAorMzY3MjI5LAorMCwKKzM0OTM0OSwKKzAsCisxNjA2MDYzOCwKKzIxMzQ1NywKKzAsCisxOTU0MDksCiswLAorMTYzNjgzNDksCisxNjU5ODU1NiwKKzAsCisxNjU5NzkyMywKKzAsCistMTY0MTkyNjMsCisxMzc0MzMyLAorMCwKKzEzMTk3MDUsCiswLAorMTQwODMxNzksCis2NjM2ODMsCiswLAorNjA2NTM2LAorMCwKKzE1NTA2OTk2LAorMzk0MDc3LAorMCwKKzMzNTk3NCwKKzAsCisxNjA0NzE2NiwKKzE2Njc4MDUxLAorMCwKKzE2Njc2OTAzLAorMCwKKy0xNjU3NzczOCwKKzIzNjUwMTAsCiswLAorMjE5ODE4MywKKzAsCisxMjIxNDAyMywKKzEyMDE0NzksCiswLAorMTAyMTE4MywKKzAsCisxNDU1NDU1NCwKKzczOTY2NiwKKzAsCis1NTQwMjUsCiswLAorMTU0ODM1MjUsCisxNjcyMjc4OSwKKzAsCisxNjcyMDcxNCwKKzAsCistMTY2NjYyODcsCiszOTUzMjE0LAorMCwKKzM0NjQyNzUsCiswLAorOTM1OTcyOCwKKzIxODA4MDcsCiswLAorMTYyNDI5MSwKKzAsCisxMjk3MjExOCwKKzE0MjM5MzYsCiswLAorODM4NTY0LAorMCwKKzE0NTE0NzE2LAorMTY3NDgyODIsCiswLAorMTY3NDQ1MzUsCiswLAorLTE2NzE1NjAxLAorNjM1Mzc4NiwKKzAsCis1MDAzOTI2LAorMCwKKzU0MTk1MDQsCiszOTczMTA4LAorMCwKKzIzMTQ5NDQsCiswLAorMTA0ODkxNjUsCisyODM3NTExLAorMCwKKzEwMzIyODQsCiswLAorMTI5MDc0MjEsCisxNjc2MzQ5NiwKKzAsCisxNjc1NjczNSwKKzAsCistMTY3NDMwMTUsCis5Nzc1OTc4LAorMCwKKzYzMjU2MDIsCiswLAorNjc1NjM2LAorNzI2OTk1OSwKKzAsCisyNTg0NTU4LAorMCwKKzY5MjI2OTgsCis1ODc4NTIwLAorMCwKKzUwNzM4NCwKKzAsCisxMDM5MTMxMywKKzE2NzczODI2LAorMCwKKzE2NzYxNjI5LAorMCwKKy0xNjc1ODIzOSwKKzE0NTI2NDYyLAorMCwKKzY0Mjk3MjMsCiswLAorLTQxNzg5NjgsCisxMzM1MTA4NiwKKzAsCisxMDI2MTE3LAorMCwKKzI0MDAwMTIsCisxMjU2Njg0NiwKKzAsCistMjU3OTMwNiwKKzAsCis2Nzg5Njc2LAorMTY3ODI5NTAsCiswLAorMTY3NjA5NTQsCiswLAorLTE2NzY2Njg4LAorMjEzNDY5OTYsCiswLAorMzgxNzEwMiwKKzAsCistODM4Njg4MSwKKzI0NTQ4MjU3LAorMCwKKy01MjYxODI4LAorMCwKKy0yNTA5MjEyLAorMjcxMzY3NDYsCiswLAorLTEyNjAyOTA4LAorMCwKKzIyNDMzNzgsCisxNjc5NDEyOSwKKzAsCisxNjc1NDQ2MywKKzAsCistMTY3NzEzNzYsCiszMTk0Mjc1NiwKKzAsCistMzYyNTAxMSwKKzAsCistMTE1NDA1MjksCis0NTA0ODY3MywKKzAsCistMjEyNTY0MjMsCiswLAorLTcwMTUwMzQsCis1NzY0NjE0MCwKKzAsCistMzgyMDM4MTcsCiswLAorLTI2NjUxMDcsCisxNjgxMTM1OCwKKzAsCisxNjczOTgzNSwKKzAsCistMTY3NzM5NzcsCis0OTY3NjQxNSwKKzAsCistMTkyNDMzNDIsCiswLAorLTEzNjU1ODU3LAorODIzMzk5ODQsCiswLAorLTU1MDA1OTE1LAorMCwKKy0xMDU1Njg1MywKKzExODI4NzQ5NiwKKzAsCistOTQzNjM5OTksCiswLAorLTcxNDYyODEsCisxNjg0MDc5OSwKKzAsCisxNjcxMTgzNywKKzAsCistMTY3NzU0MTksCis4MDY5MTM4MywKKzAsCistNDg5NDI5NjEsCiswLAorLTE0OTcxMjA2LAorMTQ5ODU4NTA1LAorMCwKKy0xMjAwNjQ1MjQsCiswLAorLTEzMDE2NzY1LAorMjMzNTIwNjUyLAorMCwKKy0yMDYwOTA2OTUsCiswLAorLTEwNjUyNzQxLAorMTY4OTI5ODEsCiswLAorMTY2NjA0NTUsCiswLAorLTE2Nzc2MjIwLAorMTM2MDAwODY4LAorMCwKKy0xMDM0NzI2OTYsCiswLAorLTE1NzUwOTU2LAorMjcxODAxNDY5LAorMCwKKy0yNDA0NDIyNTAsCiswLAorLTE0NTgyMDAzLAorNDQ2MzA5NjAxLAorMCwKKy00MTY0NTI1MjQsCiswLAorLTEzMDc5ODYyLApkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZWZmZWN0cy9BdWRpb1NoZWx2aW5nRmlsdGVyLmNwcCBiL21lZGlhL2xpYmVmZmVjdHMvQXVkaW9TaGVsdmluZ0ZpbHRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjg2NTBiYQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYmVmZmVjdHMvQXVkaW9TaGVsdmluZ0ZpbHRlci5jcHAKQEAgLTAsMCArMSwxMDkgQEAKKy8qIC9hbmRyb2lkL3NyYy9mcmFtZXdvcmtzL2Jhc2UvbGlicy9hdWRpb2ZsaW5nZXIvQXVkaW9TaGVsdmluZ0ZpbHRlci5jcHAKKyoqCisqKiBDb3B5cmlnaHQgMjAwOSwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorKioKKyoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisqKgorKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorKioKKyoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorKi8KKworI2luY2x1ZGUgIkF1ZGlvU2hlbHZpbmdGaWx0ZXIuaCIKKyNpbmNsdWRlICJBdWRpb0NvbW1vbi5oIgorI2luY2x1ZGUgIkVmZmVjdHNNYXRoLmgiCisKKyNpbmNsdWRlIDxuZXc+CisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisKKyNkZWZpbmUgTElLRUxZKCBleHAgKSAgICAgICAoX19idWlsdGluX2V4cGVjdCggKGV4cCkgIT0gMCwgdHJ1ZSAgKSkKKyNkZWZpbmUgVU5MSUtFTFkoIGV4cCApICAgICAoX19idWlsdGluX2V4cGVjdCggKGV4cCkgIT0gMCwgZmFsc2UgKSkKKworbmFtZXNwYWNlIGFuZHJvaWQgeworLy8gRm9ybWF0IG9mIHRoZSBjb2VmZmljaWVudCB0YWJsZXM6CisvLyBrQ29lZlRhYmxlW2ZyZXFdW2dhaW5dW2NvZWZdCisvLyBmcmVxICAtIGN1dG9mZiBmcmVxdWVuY3ksIGluIG9jdGF2ZXMgYmVsb3cgTnlxdWlzdCxmcm9tIC0xMCB0byAtNiBpbiBsb3cKKy8vICAgICAgICAgc2hlbGYsIC0yIHRvIDAgaW4gaGlnaCBzaGVsZi4KKy8vIGdhaW4gIC0gZ2FpbiwgaW4gbWlsbGliZWwsIHN0YXJ0aW5nIGF0IC05NjAwLCBqdW1wcyBvZiAxMDI0LCB0byA0NzM2IG1pbGxpYmVsLgorLy8gY29lZiAtIDA6IGIwCisvLyAgICAgICAgMTogYjEKKy8vICAgICAgICAyOiBiMgorLy8gICAgICAgIDM6IC1hMQorLy8gICAgICAgIDQ6IC1hMgorc3RhdGljIGNvbnN0IHNpemVfdCBrSGlJbkRpbXNbMl0gPSB7MywgMTV9Oworc3RhdGljIGNvbnN0IGF1ZGlvX2NvZWZfdCBrSGlDb2VmVGFibGVbMyoxNSo1XSA9IHsKKyNpbmNsdWRlICJBdWRpb0hpZ2hTaGVsZkZpbHRlckNvZWYuaW5sIgorfTsKK3N0YXRpYyBjb25zdCBzaXplX3Qga0xvSW5EaW1zWzJdID0gezUsIDE1fTsKK3N0YXRpYyBjb25zdCBhdWRpb19jb2VmX3Qga0xvQ29lZlRhYmxlWzUqMTUqNV0gPSB7CisjaW5jbHVkZSAiQXVkaW9Mb3dTaGVsZkZpbHRlckNvZWYuaW5sIgorfTsKKworQXVkaW9Db2VmSW50ZXJwb2xhdG9yIEF1ZGlvU2hlbHZpbmdGaWx0ZXI6Om1IaUNvZWZJbnRlcnAoMiwga0hpSW5EaW1zLCA1LCAoY29uc3QgYXVkaW9fY29lZl90Kikga0hpQ29lZlRhYmxlKTsKK0F1ZGlvQ29lZkludGVycG9sYXRvciBBdWRpb1NoZWx2aW5nRmlsdGVyOjptTG9Db2VmSW50ZXJwKDIsIGtMb0luRGltcywgNSwgKGNvbnN0IGF1ZGlvX2NvZWZfdCopIGtMb0NvZWZUYWJsZSk7CisKK0F1ZGlvU2hlbHZpbmdGaWx0ZXI6OkF1ZGlvU2hlbHZpbmdGaWx0ZXIoU2hlbGZUeXBlIHR5cGUsIGludCBuQ2hhbm5lbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzYW1wbGVSYXRlKQorICAgICAgICA6IG1UeXBlKHR5cGUpLAorICAgICAgICAgIG1CaXF1YWQobkNoYW5uZWxzLCBzYW1wbGVSYXRlKSAgeworICAgIGNvbmZpZ3VyZShuQ2hhbm5lbHMsIHNhbXBsZVJhdGUpOworfQorCit2b2lkIEF1ZGlvU2hlbHZpbmdGaWx0ZXI6OmNvbmZpZ3VyZShpbnQgbkNoYW5uZWxzLCBpbnQgc2FtcGxlUmF0ZSkgeworICAgIG1OaXF1aXN0RnJlcSA9IHNhbXBsZVJhdGUgKiA1MDA7CisgICAgbUZyZXF1ZW5jeUZhY3RvciA9ICgoMXVsbCkgPDwgNDIpIC8gbU5pcXVpc3RGcmVxOworICAgIG1CaXF1YWQuY29uZmlndXJlKG5DaGFubmVscywgc2FtcGxlUmF0ZSk7CisgICAgc2V0RnJlcXVlbmN5KG1Ob21pbmFsRnJlcXVlbmN5KTsKKyAgICBjb21taXQodHJ1ZSk7Cit9CisKK3ZvaWQgQXVkaW9TaGVsdmluZ0ZpbHRlcjo6cmVzZXQoKSB7CisgICAgc2V0R2FpbigwKTsKKyAgICBzZXRGcmVxdWVuY3kobVR5cGUgPT0ga0xvd1NoZWxmID8gMCA6IG1OaXF1aXN0RnJlcSk7CisgICAgY29tbWl0KHRydWUpOworfQorCit2b2lkIEF1ZGlvU2hlbHZpbmdGaWx0ZXI6OnNldEZyZXF1ZW5jeSh1aW50MzJfdCBtaWxsaWhlcnR6KSB7CisgICAgbU5vbWluYWxGcmVxdWVuY3kgPSBtaWxsaWhlcnR6OworICAgIGlmIChVTkxJS0VMWShtaWxsaWhlcnR6ID4gbU5pcXVpc3RGcmVxIC8gMikpIHsKKyAgICAgICAgbWlsbGloZXJ0eiA9IG1OaXF1aXN0RnJlcSAvIDI7CisgICAgfQorICAgIHVpbnQzMl90IG5vcm1GcmVxID0gc3RhdGljX2Nhc3Q8dWludDMyX3Q+KAorICAgICAgICAgICAgKHN0YXRpY19jYXN0PHVpbnQ2NF90PihtaWxsaWhlcnR6KSAqIG1GcmVxdWVuY3lGYWN0b3IpID4+IDEwKTsKKyAgICB1aW50MzJfdCBsb2cybWluRnJlcSA9IChtVHlwZSA9PSBrTG93U2hlbGYgPyAoMzItMTApIDogKDMyLTIpKTsKKyAgICBpZiAoTElLRUxZKG5vcm1GcmVxID4gKDFVIDw8IGxvZzJtaW5GcmVxKSkpIHsKKyAgICAgICAgbUZyZXF1ZW5jeSA9IChFZmZlY3RzX2xvZzIobm9ybUZyZXEpIC0gKGxvZzJtaW5GcmVxIDw8IDE1KSkgPDwgKEZSRVFfUFJFQ0lTSU9OX0JJVFMgLSAxNSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbUZyZXF1ZW5jeSA9IDA7CisgICAgfQorfQorCit2b2lkIEF1ZGlvU2hlbHZpbmdGaWx0ZXI6OnNldEdhaW4oaW50MzJfdCBtaWxsaWJlbCkgeworICAgIG1HYWluID0gbWlsbGliZWwgKyA5NjAwOworfQorCit2b2lkIEF1ZGlvU2hlbHZpbmdGaWx0ZXI6OmNvbW1pdChib29sIGltbWVkaWF0ZSkgeworICAgIGF1ZGlvX2NvZWZfdCBjb2Vmc1s1XTsKKyAgICBpbnQgaW50Q29vcmRbMl0gPSB7CisgICAgICAgIG1GcmVxdWVuY3kgPj4gRlJFUV9QUkVDSVNJT05fQklUUywKKyAgICAgICAgbUdhaW4gPj4gR0FJTl9QUkVDSVNJT05fQklUUworICAgIH07CisgICAgdWludDMyX3QgZnJhY0Nvb3JkWzJdID0geworICAgICAgICBtRnJlcXVlbmN5IDw8ICgzMiAtIEZSRVFfUFJFQ0lTSU9OX0JJVFMpLAorICAgICAgICBzdGF0aWNfY2FzdDx1aW50MzJfdD4obUdhaW4pIDw8ICgzMiAtIEdBSU5fUFJFQ0lTSU9OX0JJVFMpCisgICAgfTsKKyAgICBpZiAobVR5cGUgPT0ga0hpZ2hTaGVsZikgeworICAgICAgICBtSGlDb2VmSW50ZXJwLmdldENvZWYoaW50Q29vcmQsIGZyYWNDb29yZCwgY29lZnMpOworICAgIH0gZWxzZSB7CisgICAgICAgIG1Mb0NvZWZJbnRlcnAuZ2V0Q29lZihpbnRDb29yZCwgZnJhY0Nvb3JkLCBjb2Vmcyk7CisgICAgfQorICAgIG1CaXF1YWQuc2V0Q29lZnMoY29lZnMsIGltbWVkaWF0ZSk7Cit9CisKK30KZGlmZiAtLWdpdCBhL21lZGlhL2xpYmVmZmVjdHMvQXVkaW9TaGVsdmluZ0ZpbHRlci5oIGIvbWVkaWEvbGliZWZmZWN0cy9BdWRpb1NoZWx2aW5nRmlsdGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjcyZDc5MwotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYmVmZmVjdHMvQXVkaW9TaGVsdmluZ0ZpbHRlci5oCkBAIC0wLDAgKzEsMTQ2IEBACisvKiAvYW5kcm9pZC9zcmMvZnJhbWV3b3Jrcy9iYXNlL2xpYnMvYXVkaW9mbGluZ2VyL0F1ZGlvU2hlbHZpbmdGaWx0ZXIuaAorKioKKyoqIENvcHlyaWdodCAyMDA5LCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisqKgorKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyoqCisqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisqKgorKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisqLworCisjaWZuZGVmIEFVRElPX1NIRUxWSU5HX0ZJTFRFUl9ICisjZGVmaW5lIEFVRElPX1NIRUxWSU5HX0ZJTFRFUl9ICisKKyNpbmNsdWRlICJBdWRpb0JpcXVhZEZpbHRlci5oIgorI2luY2x1ZGUgIkF1ZGlvQ29lZkludGVycG9sYXRvci5oIgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKKy8vIEEgc2hlbHZpbmcgYXVkaW8gZmlsdGVyLCB3aXRoIHVuaXR5IHNraXJ0IGdhaW4sIGFuZCBjb250cm9sbGFibGUgY3V0b2ZmCisvLyBmcmVxdWVuY3kgYW5kIGdhaW4uCisvLyBUaGlzIGZpbHRlciBpcyBhYmxlIHRvIHN1cHByZXNzIGludHJvZHVjZSBkaXNjb250aW51aXRpZXMgYW5kIG90aGVyIGFydGlmYWN0cworLy8gaW4gdGhlIG91dHB1dCwgZXZlbiB3aGVuIGNoYW5naW5nIHBhcmFtZXRlcnMgYWJydXB0bHkuCisvLyBQYXJhbWV0ZXJzIGNhbiBiZSBzZXQgdG8gYW55IHZhbHVlIC0gdGhpcyBjbGFzcyB3aWxsIG1ha2Ugc3VyZSB0byBjbGlwIHRoZW0KKy8vIHdoZW4gdGhleSBhcmUgb3V0IG9mIHN1cHBvcnRlZCByYW5nZS4KKy8vCisvLyBJbXBsZW1lbnRhdGlvbiBub3RlczoKKy8vIFRoaXMgY2xhc3MgdXNlcyBhbiB1bmRlcmx5aW5nIGJpcXVhZCBmaWx0ZXIgd2hvc2UgcGFyYW1ldGVycyBhcmUgZGV0ZXJtaW5lZAorLy8gdXNpbmcgYSBsaW5lYXIgaW50ZXJwb2xhdGlvbiBmcm9tIGEgY29lZmZpY2llbnQgdGFibGUsIHVzaW5nIGEKKy8vIEF1ZGlvQ29lZkludGVycG9sYXRvci4KKy8vIEFsbCBpcyBsZWZ0IGZvciB0aGlzIGNsYXNzIHRvIGRvIGlzIG1hcHBpbmcgYmV0d2VlbiBoaWdoLWxldmVsIHBhcmFtZXRlcnMgdG8KKy8vIGZyYWN0aW9uYWwgaW5kaWNlcyBpbnRvIHRoZSBjb2VmZmljaWVudCB0YWJsZS4KK2NsYXNzIEF1ZGlvU2hlbHZpbmdGaWx0ZXIgeworcHVibGljOgorICAgIC8vIFNoZWxmIHR5cGUKKyAgICBlbnVtIFNoZWxmVHlwZSB7CisgICAgICAgIGtMb3dTaGVsZiwKKyAgICAgICAga0hpZ2hTaGVsZgorICAgIH07CisKKyAgICAvLyBDb25zdHJ1Y3Rvci4gUmVzZXRzIHRoZSBmaWx0ZXIgKHNlZSByZXNldCgpKS4KKyAgICAvLyB0eXBlICAgICAgIFR5cGUgb2YgdGhlIGZpbHRlciAoaGlnaCBzaGVsZiBvciBsb3cgc2hlbGYpLgorICAgIC8vIG5DaGFubmVscyAgTnVtYmVyIG9mIGlucHV0L291dHB1dCBjaGFubmVscyAoaW50ZXJsYWNlZCkuCisgICAgLy8gc2FtcGxlUmF0ZSBUaGUgaW5wdXQvb3V0cHV0IHNhbXBsZSByYXRlLCBpbiBIei4KKyAgICBBdWRpb1NoZWx2aW5nRmlsdGVyKFNoZWxmVHlwZSB0eXBlLCBpbnQgbkNoYW5uZWxzLCBpbnQgc2FtcGxlUmF0ZSk7CisKKyAgICAvLyBSZWNvbmZpZ3VyYXRpb24gb2YgdGhlIGZpbHRlci4gQ2hhbmdlcyBpbnB1dC9vdXRwdXQgZm9ybWF0LCBidXQgZG9lcyBub3QKKyAgICAvLyBhbHRlciBjdXJyZW50IHBhcmFtZXRlciB2YWx1ZXMuIENsZWFycyBkZWxheSBsaW5lcy4KKyAgICAvLyBuQ2hhbm5lbHMgIE51bWJlciBvZiBpbnB1dC9vdXRwdXQgY2hhbm5lbHMgKGludGVybGFjZWQpLgorICAgIC8vIHNhbXBsZVJhdGUgVGhlIGlucHV0L291dHB1dCBzYW1wbGUgcmF0ZSwgaW4gSHouCisgICAgdm9pZCBjb25maWd1cmUoaW50IG5DaGFubmVscywgaW50IHNhbXBsZVJhdGUpOworCisgICAgLy8gUmVzZXRzIHRoZSBmaWx0ZXIgcGFyYW1ldGVycyB0byB0aGUgZm9sbG93aW5nIHZhbHVlczoKKyAgICAvLyBmcmVxdWVuY3k6IDAKKyAgICAvLyBnYWluOiAwCisgICAgLy8gSXQgYWxzbyBkaXNhYmxlcyB0aGUgZmlsdGVyLiBEb2VzIG5vdCBjbGVhciB0aGUgZGVsYXkgbGluZXMuCisgICAgdm9pZCByZXNldCgpOworCisgICAgLy8gQ2xlYXJzIGRlbGF5IGxpbmVzLiBEb2VzIG5vdCBhbHRlciBwYXJhbWV0ZXIgdmFsdWVzLgorICAgIHZvaWQgY2xlYXIoKSB7IG1CaXF1YWQuY2xlYXIoKTsgfQorCisgICAgLy8gU2V0cyBnYWluIHZhbHVlLiBBY3R1YWwgY2hhbmdlIHdpbGwgb25seSB0YWtlIHBsYWNlIHVwb24gY29tbWl0KCkuCisgICAgLy8gVGhpcyB2YWx1ZSB3aWxsIGJlIHJlbWVtYmVyZWQgZXZlbiBpZiB0aGUgZmlsdGVyIGlzIGluIGRpc2FibGVkKCkgc3RhdGUuCisgICAgLy8gbWlsbGliZWwgR2FpbiB2YWx1ZSBpbiBtaWxsaWJlbCAoMS8xMDAgb2YgZGVjaWJlbCkuCisgICAgdm9pZCBzZXRHYWluKGludDMyX3QgbWlsbGliZWwpOworCisgICAgLy8gR2V0cyB0aGUgZ2FpbiwgaW4gbWlsbGliZWwsIGFzIHNldC4KKyAgICBpbnQzMl90IGdldEdhaW4oKSBjb25zdCB7IHJldHVybiBtR2FpbiAtIDk2MDA7IH0KKworICAgIC8vIFNldHMgY3V0b2ZmIGZyZXF1ZW5jeSB2YWx1ZS4gQWN0dWFsIGNoYW5nZSB3aWxsIG9ubHkgdGFrZSBwbGFjZSB1cG9uCisgICAgLy8gY29tbWl0KCkuCisgICAgLy8gVGhpcyB2YWx1ZSB3aWxsIGJlIHJlbWVtYmVyZWQgZXZlbiBpZiB0aGUgZmlsdGVyIGlzIGluIGRpc2FibGVkKCkgc3RhdGUuCisgICAgLy8gbWlsbGloZXJ0eiBGcmVxdWVuY3kgdmFsdWUgaW4gbUh6LgorICAgIHZvaWQgc2V0RnJlcXVlbmN5KHVpbnQzMl90IG1pbGxpaGVydHopOworCisgICAgLy8gR2V0cyB0aGUgZnJlcXVlbmN5LCBpbiBtSHosIGFzIHNldC4KKyAgICB1aW50MzJfdCBnZXRGcmVxdWVuY3koKSBjb25zdCB7IHJldHVybiBtTm9taW5hbEZyZXF1ZW5jeTsgfQorCisgICAgLy8gQXBwbGllcyBhbGwgcGFyYW1ldGVyIGNoYW5nZXMgZG9uZSB0byB0aGlzIHBvaW50IGluIHRpbWUuCisgICAgLy8gSWYgdGhlIGZpbHRlciBpcyBkaXNhYmxlZCwgdGhlIG5ldyBwYXJhbWV0ZXJzIHdpbGwgdGFrZSBwbGFjZSB3aGVuIGl0IGlzCisgICAgLy8gZW5hYmxlZCBhZ2Fpbi4gRG9lcyBub3QgaW50cm9kdWNlIGFydGlmYWN0cywgdW5sZXNzIGltbWVkaWF0ZSBpcyBzZXQuCisgICAgLy8gaW1tZWRpYXRlICAgIFdoZXRoZXIgdG8gYXBwbHkgY2hhbmdlIGFicnVwdGx5IChpZ25vcmVkIGlmIGZpbHRlciBpcworICAgIC8vIGRpc2FibGVkKS4KKyAgIHZvaWQgY29tbWl0KGJvb2wgaW1tZWRpYXRlID0gZmFsc2UpOworCisgICAgLy8gUHJvY2VzcyBhIGJ1ZmZlciBvZiBpbnB1dCBkYXRhLiBUaGUgaW5wdXQgYW5kIG91dHB1dCBzaG91bGQgY29udGFpbgorICAgIC8vIGZyYW1lQ291bnQgKiBuQ2hhbm5lbHMgaW50ZXJsYWNlZCBzYW1wbGVzLiBQcm9jZXNzaW5nIGNhbiBiZSBkb25lCisgICAgLy8gaW4tcGxhY2UsIGJ5IHBhc3NpbmcgdGhlIHNhbWUgYnVmZmVyIGFzIGJvdGggYXJndW1lbnRzLgorICAgIC8vIGluICAgSW5wdXQgYnVmZmVyLgorICAgIC8vIG91dCAgT3V0cHV0IGJ1ZmZlci4KKyAgIC8vIGZyYW1lQ291bnQgICBOdW1iZXIgb2YgZnJhbWVzIHRvIHByb2R1Y2UuCisgICB2b2lkIHByb2Nlc3MoY29uc3QgYXVkaW9fc2FtcGxlX3QgaW5bXSwgYXVkaW9fc2FtcGxlX3Qgb3V0W10sCisgICAgICAgICAgICAgICAgIGludCBmcmFtZUNvdW50KSB7IG1CaXF1YWQucHJvY2Vzcyhpbiwgb3V0LCBmcmFtZUNvdW50KTsgfQorCisgICAgLy8gRW5hYmxlcyB0aGUgZmlsdGVyLCBzbyBpdCB3b3VsZCBzdGFydCBwcm9jZXNzaW5nIGlucHV0LiBEb2VzIG5vdAorICAgIC8vIGludHJvZHVjZSBhcnRpZmFjdHMsIHVubGVzcyBpbW1lZGlhdGUgaXMgc2V0LgorICAgIC8vIGltbWVkaWF0ZSAgICBXaGV0aGVyIHRvIGFwcGx5IGNoYW5nZSBhYnJ1cHRseS4KKyAgICB2b2lkIGVuYWJsZShib29sIGltbWVkaWF0ZSA9IGZhbHNlKSB7IG1CaXF1YWQuZW5hYmxlKGltbWVkaWF0ZSk7IH0KKworICAgIC8vIERpc2FibGVkIChieXBhc3NlcykgdGhlIGZpbHRlci4gRG9lcyBub3QgaW50cm9kdWNlIGFydGlmYWN0cywgdW5sZXNzCisgICAgLy8gaW1tZWRpYXRlIGlzIHNldC4KKyAgICAvLyBpbW1lZGlhdGUgICAgV2hldGhlciB0byBhcHBseSBjaGFuZ2UgYWJydXB0bHkuCisgICAgdm9pZCBkaXNhYmxlKGJvb2wgaW1tZWRpYXRlID0gZmFsc2UpIHsgbUJpcXVhZC5kaXNhYmxlKGltbWVkaWF0ZSk7IH0KKworcHJpdmF0ZToKKyAgICAvLyBQcmVjaXNpb24gZm9yIHRoZSBtRnJlcXVlbmN5IG1lbWJlci4KKyAgICBzdGF0aWMgY29uc3QgaW50IEZSRVFfUFJFQ0lTSU9OX0JJVFMgPSAyNjsKKyAgICAvLyBQcmVjaXNpb24gZm9yIHRoZSBtR2FpbiBtZW1iZXIuCisgICAgc3RhdGljIGNvbnN0IGludCBHQUlOX1BSRUNJU0lPTl9CSVRTID0gMTA7CisKKyAgICAvLyBTaGVsZiB0eXBlLgorICAgIFNoZWxmVHlwZSBtVHlwZTsKKyAgICAvLyBOeXF1aXN0LCBpbiBtSHouCisgICAgdWludDMyX3QgbU5pcXVpc3RGcmVxOworICAgIC8vIEZyYWN0aW9uYWwgaW5kZXggaW50byB0aGUgZ2FpbiBkaW1lbnNpb24gb2YgdGhlIGNvZWYgdGFibGUgaW4KKyAgICAvLyBHQUlOX1BSRUNJU0lPTl9CSVRTIHByZWNpc2lvbi4KKyAgICBpbnQzMl90IG1HYWluOworICAgIC8vIEZyYWN0aW9uYWwgaW5kZXggaW50byB0aGUgZnJlcXVlbmN5IGRpbWVuc2lvbiBvZiB0aGUgY29lZiB0YWJsZSBpbgorICAgIC8vIEZSRVFfUFJFQ0lTSU9OX0JJVFMgcHJlY2lzaW9uLgorICAgIHVpbnQzMl90IG1GcmVxdWVuY3k7CisgICAgLy8gTm9taW5hbCB2YWx1ZSBvZiBmcmVxdWVuY3ksIGFzIHNldC4KKyAgICB1aW50MzJfdCBtTm9taW5hbEZyZXF1ZW5jeTsKKyAgIC8vIDEvTnlxdWlzdFttSHpdLCBpbiA0Mi1iaXQgcHJlY2lzaW9uICh2ZXJ5IHNtYWxsKS4KKyAgICAvLyBVc2VkIGZvciBzY2FsaW5nIHRoZSBmcmVxdWVuY3kuCisgICAgdWludDMyX3QgbUZyZXF1ZW5jeUZhY3RvcjsKKworICAgIC8vIEEgYmlxdWFkIGZpbHRlciwgdXNlZCBmb3IgdGhlIGFjdHVhbCBwcm9jZXNzaW5nLgorICAgIEF1ZGlvQmlxdWFkRmlsdGVyIG1CaXF1YWQ7CisgICAgLy8gQSBjb2VmZmljaWVudCBpbnRlcnBvbGF0b3IsIHVzZWQgZm9yIG1hcHBpbmcgdGhlIGhpZ2ggbGV2ZWwgcGFyYW1ldGVycyB0bworICAgIC8vIHRoZSBsb3ctbGV2ZWwgYmlxdWFkIGNvZWZmaWNpZW50cy4gVGhpcyBvbmUgaXMgdXNlZCBmb3IgdGhlIGhpZ2ggc2hlbGYuCisgICAgc3RhdGljIEF1ZGlvQ29lZkludGVycG9sYXRvciBtSGlDb2VmSW50ZXJwOworICAgIC8vIEEgY29lZmZpY2llbnQgaW50ZXJwb2xhdG9yLCB1c2VkIGZvciBtYXBwaW5nIHRoZSBoaWdoIGxldmVsIHBhcmFtZXRlcnMgdG8KKyAgICAvLyB0aGUgbG93LWxldmVsIGJpcXVhZCBjb2VmZmljaWVudHMuIFRoaXMgb25lIGlzIHVzZWQgZm9yIHRoZSBsb3cgc2hlbGYuCisgICAgc3RhdGljIEF1ZGlvQ29lZkludGVycG9sYXRvciBtTG9Db2VmSW50ZXJwOworfTsKKworfQorCisKKyNlbmRpZiAvLyBBVURJT19TSEVMVklOR19GSUxURVJfSApkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZWZmZWN0cy9FZmZlY3RFcXVhbGl6ZXIuY3BwIGIvbWVkaWEvbGliZWZmZWN0cy9FZmZlY3RFcXVhbGl6ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxOWM2YjkKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJlZmZlY3RzL0VmZmVjdEVxdWFsaXplci5jcHAKQEAgLTAsMCArMSw2MjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjZGVmaW5lIExPR19UQUcgIkVxdWFsaXplciIKKyNkZWZpbmUgQVJSQVlfU0laRShhcnJheSkgKHNpemVvZiBhcnJheSAvIHNpemVvZiBhcnJheVswXSkKKy8vI2RlZmluZSBMT0dfTkRFQlVHIDAKKyNpbmNsdWRlIDxjdXRpbHMvbG9nLmg+CisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8bmV3PgorI2luY2x1ZGUgIkF1ZGlvRXF1YWxpemVyLmgiCisjaW5jbHVkZSAiQXVkaW9CaXF1YWRGaWx0ZXIuaCIKKyNpbmNsdWRlICJBdWRpb0Zvcm1hdEFkYXB0ZXIuaCIKKyNpbmNsdWRlIDxtZWRpYS9FZmZlY3RFcXVhbGl6ZXJBcGkuaD4KKworLy8gZWZmZWN0X2ludGVyZmFjZV90IGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbiBmb3IgZXF1YWxpemVyIGVmZmVjdAorZXh0ZXJuICJDIiBjb25zdCBzdHJ1Y3QgZWZmZWN0X2ludGVyZmFjZV9zIGdFcXVhbGl6ZXJJbnRlcmZhY2U7CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKK25hbWVzcGFjZSB7CisKKy8vIEdvb2dsZSBHcmFwaGljIEVxdWFsaXplciBVVUlEOiBlMjVhYTg0MC01NDNiLTExZGYtOThhNS0wMDAyYTVkNWM1MWIKK2NvbnN0IGVmZmVjdF9kZXNjcmlwdG9yX3QgZ0VxdWFsaXplckRlc2NyaXB0b3IgPSB7CisgICAgICAgIHsweDBiZWQ0MzAwLCAweGRkZDYsIDB4MTFkYiwgMHg4ZjM0LCB7MHgwMCwgMHgwMiwgMHhhNSwgMHhkNSwgMHhjNSwgMHgxYn19LCAvLyB0eXBlCisgICAgICAgIHsweGUyNWFhODQwLCAweDU0M2IsIDB4MTFkZiwgMHg5OGE1LCB7MHgwMCwgMHgwMiwgMHhhNSwgMHhkNSwgMHhjNSwgMHgxYn19LCAvLyB1dWlkCisgICAgICAgIEVGRkVDVF9BUElfVkVSU0lPTiwKKyAgICAgICAgKEVGRkVDVF9GTEFHX1RZUEVfSU5TRVJUIHwgRUZGRUNUX0ZMQUdfSU5TRVJUX0xBU1QpLAorICAgICAgICAwLCAvLyBUT0RPCisgICAgICAgIDEsCisgICAgICAgICJHcmFwaGljIEVxdWFsaXplciIsCisgICAgICAgICJHb29nbGUgSW5jLiIsCit9OworCisvLy8vLy8vLy8vLy8vLy8vLy8vIEJFR0lOIEVRIFBSRVNFVFMgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworY29uc3QgaW50IGtOdW1CYW5kcyA9IDU7Citjb25zdCB1aW50MzJfdCBnRnJlcXNba051bUJhbmRzXSA9ICAgICAgeyA1MDAwMCwgMTI1MDAwLCA5MDAwMDAsIDMyMDAwMDAsIDYzMDAwMDAgfTsKK2NvbnN0IHVpbnQzMl90IGdCYW5kd2lkdGhzW2tOdW1CYW5kc10gPSB7IDAsICAgICAzNjAwLCAgIDM2MDAsICAgMjQwMCwgICAgMCAgICAgICB9OworCitjb25zdCBBdWRpb0VxdWFsaXplcjo6QmFuZENvbmZpZyBnQmFuZHNDbGFzc2ljW2tOdW1CYW5kc10gPSB7CisgICAgeyAzMDAsICBnRnJlcXNbMF0sIGdCYW5kd2lkdGhzWzBdIH0sCisgICAgeyA0MDAsICBnRnJlcXNbMV0sIGdCYW5kd2lkdGhzWzFdIH0sCisgICAgeyAwLCAgICBnRnJlcXNbMl0sIGdCYW5kd2lkdGhzWzJdIH0sCisgICAgeyAyMDAsICBnRnJlcXNbM10sIGdCYW5kd2lkdGhzWzNdIH0sCisgICAgeyAtMzAwLCBnRnJlcXNbNF0sIGdCYW5kd2lkdGhzWzRdIH0KK307CisKK2NvbnN0IEF1ZGlvRXF1YWxpemVyOjpCYW5kQ29uZmlnIGdCYW5kc0phenpba051bUJhbmRzXSA9IHsKKyAgICB7IC02MDAsIGdGcmVxc1swXSwgZ0JhbmR3aWR0aHNbMF0gfSwKKyAgICB7IDIwMCwgIGdGcmVxc1sxXSwgZ0JhbmR3aWR0aHNbMV0gfSwKKyAgICB7IDQwMCwgIGdGcmVxc1syXSwgZ0JhbmR3aWR0aHNbMl0gfSwKKyAgICB7IC00MDAsIGdGcmVxc1szXSwgZ0JhbmR3aWR0aHNbM10gfSwKKyAgICB7IC02MDAsIGdGcmVxc1s0XSwgZ0JhbmR3aWR0aHNbNF0gfQorfTsKKworY29uc3QgQXVkaW9FcXVhbGl6ZXI6OkJhbmRDb25maWcgZ0JhbmRzUG9wW2tOdW1CYW5kc10gPSB7CisgICAgeyA0MDAsICBnRnJlcXNbMF0sIGdCYW5kd2lkdGhzWzBdIH0sCisgICAgeyAtNDAwLCBnRnJlcXNbMV0sIGdCYW5kd2lkdGhzWzFdIH0sCisgICAgeyAzMDAsICBnRnJlcXNbMl0sIGdCYW5kd2lkdGhzWzJdIH0sCisgICAgeyAtNDAwLCBnRnJlcXNbM10sIGdCYW5kd2lkdGhzWzNdIH0sCisgICAgeyA2MDAsICBnRnJlcXNbNF0sIGdCYW5kd2lkdGhzWzRdIH0KK307CisKK2NvbnN0IEF1ZGlvRXF1YWxpemVyOjpCYW5kQ29uZmlnIGdCYW5kc1JvY2tba051bUJhbmRzXSA9IHsKKyAgICB7IDcwMCwgIGdGcmVxc1swXSwgZ0JhbmR3aWR0aHNbMF0gfSwKKyAgICB7IDQwMCwgIGdGcmVxc1sxXSwgZ0JhbmR3aWR0aHNbMV0gfSwKKyAgICB7IC00MDAsIGdGcmVxc1syXSwgZ0JhbmR3aWR0aHNbMl0gfSwKKyAgICB7IDQwMCwgIGdGcmVxc1szXSwgZ0JhbmR3aWR0aHNbM10gfSwKKyAgICB7IDIwMCwgIGdGcmVxc1s0XSwgZ0JhbmR3aWR0aHNbNF0gfQorfTsKKworY29uc3QgQXVkaW9FcXVhbGl6ZXI6OlByZXNldENvbmZpZyBnRXF1YWxpemVyUHJlc2V0c1tdID0geworICAgIHsgIkNsYXNzaWMiLCBnQmFuZHNDbGFzc2ljIH0sCisgICAgeyAiSmF6eiIsICAgIGdCYW5kc0phenogICAgfSwKKyAgICB7ICJQb3AiLCAgICAgZ0JhbmRzUG9wICAgICB9LAorICAgIHsgIlJvY2siLCAgICBnQmFuZHNSb2NrICAgIH0KK307CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8gRU5EIEVRIFBSRVNFVFMgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK3N0YXRpYyBjb25zdCBzaXplX3Qga0J1ZmZlclNpemUgPSAzMjsKKwordHlwZWRlZiBBdWRpb0Zvcm1hdEFkYXB0ZXI8QXVkaW9FcXVhbGl6ZXIsIGtCdWZmZXJTaXplPiBGb3JtYXRBZGFwdGVyOworCitzdHJ1Y3QgRXF1YWxpemVyQ29udGV4dCB7CisgICAgY29uc3Qgc3RydWN0IGVmZmVjdF9pbnRlcmZhY2VfcyAqaXRmZTsKKyAgICBlZmZlY3RfY29uZmlnX3QgY29uZmlnOworICAgIEZvcm1hdEFkYXB0ZXIgYWRhcHRlcjsKKyAgICBBdWRpb0VxdWFsaXplciAqIHBFcXVhbGl6ZXI7Cit9OworCisvLy0tLSBsb2NhbCBmdW5jdGlvbiBwcm90b3R5cGVzCisKK2ludCBFcXVhbGl6ZXJfaW5pdChFcXVhbGl6ZXJDb250ZXh0ICpwQ29udGV4dCk7CitpbnQgRXF1YWxpemVyX2NvbmZpZ3VyZShFcXVhbGl6ZXJDb250ZXh0ICpwQ29udGV4dCwgZWZmZWN0X2NvbmZpZ190ICpwQ29uZmlnKTsKK2ludCBFcXVhbGl6ZXJfZ2V0UGFyYW1ldGVyKEF1ZGlvRXF1YWxpemVyICogcEVxdWFsaXplciwgaW50MzJfdCAqcFBhcmFtLCBzaXplX3QgKnBWYWx1ZVNpemUsIHZvaWQgKnBWYWx1ZSk7CitpbnQgRXF1YWxpemVyX3NldFBhcmFtZXRlcihBdWRpb0VxdWFsaXplciAqIHBFcXVhbGl6ZXIsIGludDMyX3QgKnBQYXJhbSwgdm9pZCAqcFZhbHVlKTsKKworCisvLworLy8tLS0gRWZmZWN0IExpYnJhcnkgSW50ZXJmYWNlIEltcGxlbWVudGF0aW9uCisvLworCitleHRlcm4gIkMiIGludCBFZmZlY3RRdWVyeU51bWJlckVmZmVjdHModWludDMyX3QgKnBOdW1FZmZlY3RzKSB7CisgICAgKnBOdW1FZmZlY3RzID0gMTsKKyAgICByZXR1cm4gMDsKK30gLyogZW5kIEVmZmVjdFF1ZXJ5TnVtYmVyRWZmZWN0cyAqLworCitleHRlcm4gIkMiIGludCBFZmZlY3RRdWVyeUVmZmVjdCh1aW50MzJfdCBpbmRleCwgZWZmZWN0X2Rlc2NyaXB0b3JfdCAqcERlc2NyaXB0b3IpIHsKKyAgICBpZiAocERlc2NyaXB0b3IgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisgICAgaWYgKGluZGV4ID4gMCkgeworICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisgICAgbWVtY3B5KHBEZXNjcmlwdG9yLCAmZ0VxdWFsaXplckRlc2NyaXB0b3IsIHNpemVvZihlZmZlY3RfZGVzY3JpcHRvcl90KSk7CisgICAgcmV0dXJuIDA7Cit9IC8qIGVuZCBFZmZlY3RRdWVyeU5leHQgKi8KKworZXh0ZXJuICJDIiBpbnQgRWZmZWN0Q3JlYXRlKGVmZmVjdF91dWlkX3QgKnV1aWQsCisgICAgICAgIGludDMyX3Qgc2Vzc2lvbklkLAorICAgICAgICBpbnQzMl90IGlvSWQsCisgICAgICAgIGVmZmVjdF9pbnRlcmZhY2VfdCAqcEludGVyZmFjZSkgeworICAgIGludCByZXQ7CisgICAgaW50IGk7CisKKyAgICBMT0dWKCJFZmZlY3RMaWJDcmVhdGVFZmZlY3Qgc3RhcnQiKTsKKworICAgIGlmIChwSW50ZXJmYWNlID09IE5VTEwgfHwgdXVpZCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKworICAgIGlmIChtZW1jbXAodXVpZCwgJmdFcXVhbGl6ZXJEZXNjcmlwdG9yLnV1aWQsIHNpemVvZihlZmZlY3RfdXVpZF90KSkgIT0gMCkgeworICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisKKyAgICBFcXVhbGl6ZXJDb250ZXh0ICpwQ29udGV4dCA9IG5ldyBFcXVhbGl6ZXJDb250ZXh0OworCisgICAgcENvbnRleHQtPml0ZmUgPSAmZ0VxdWFsaXplckludGVyZmFjZTsKKyAgICBwQ29udGV4dC0+cEVxdWFsaXplciA9IE5VTEw7CisKKyAgICByZXQgPSBFcXVhbGl6ZXJfaW5pdChwQ29udGV4dCk7CisgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgTE9HVygiRWZmZWN0TGliQ3JlYXRlRWZmZWN0KCkgaW5pdCBmYWlsZWQiKTsKKyAgICAgICAgZGVsZXRlIHBDb250ZXh0OworICAgICAgICByZXR1cm4gcmV0OworICAgIH0KKworICAgICpwSW50ZXJmYWNlID0gKGVmZmVjdF9pbnRlcmZhY2VfdClwQ29udGV4dDsKKworICAgIExPR1YoIkVmZmVjdExpYkNyZWF0ZUVmZmVjdCAlcCwgc2l6ZSAlZCIsIHBDb250ZXh0LCBBdWRpb0VxdWFsaXplcjo6R2V0SW5zdGFuY2VTaXplKGtOdW1CYW5kcykrc2l6ZW9mKEVxdWFsaXplckNvbnRleHQpKTsKKworICAgIHJldHVybiAwOworCit9IC8qIGVuZCBFZmZlY3RDcmVhdGUgKi8KKworZXh0ZXJuICJDIiBpbnQgRWZmZWN0UmVsZWFzZShlZmZlY3RfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKSB7CisgICAgRXF1YWxpemVyQ29udGV4dCAqIHBDb250ZXh0ID0gKEVxdWFsaXplckNvbnRleHQgKilpbnRlcmZhY2U7CisKKyAgICBMT0dWKCJFZmZlY3RMaWJSZWxlYXNlRWZmZWN0ICVwIiwgaW50ZXJmYWNlKTsKKyAgICBpZiAocENvbnRleHQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisKKyAgICBwQ29udGV4dC0+cEVxdWFsaXplci0+ZnJlZSgpOworICAgIGRlbGV0ZSBwQ29udGV4dDsKKworICAgIHJldHVybiAwOworfSAvKiBlbmQgRWZmZWN0UmVsZWFzZSAqLworCisKKy8vCisvLy0tLSBsb2NhbCBmdW5jdGlvbnMKKy8vCisKKyNkZWZpbmUgQ0hFQ0tfQVJHKGNvbmQpIHsgICAgICAgICAgICAgICAgICAgICBcCisgICAgaWYgKCEoY29uZCkpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBMT0dWKCJJbnZhbGlkIGFyZ3VtZW50OiAiI2NvbmQpOyAgICAgIFwKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEVxdWFsaXplcl9jb25maWd1cmUoKQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBQdXJwb3NlOiBTZXQgaW5wdXQgYW5kIG91dHB1dCBhdWRpbyBjb25maWd1cmF0aW9uLgorLy8KKy8vIElucHV0czoKKy8vICBwQ29udGV4dDogICBlZmZlY3QgZW5naW5lIGNvbnRleHQKKy8vICBwQ29uZmlnOiAgICBwb2ludGVyIHRvIGVmZmVjdF9jb25maWdfdCBzdHJ1Y3R1cmUgaG9sZGluZyBpbnB1dCBhbmQgb3V0cHV0CisvLyAgICAgIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycworLy8KKy8vIE91dHB1dHM6CisvLworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2ludCBFcXVhbGl6ZXJfY29uZmlndXJlKEVxdWFsaXplckNvbnRleHQgKnBDb250ZXh0LCBlZmZlY3RfY29uZmlnX3QgKnBDb25maWcpCit7CisgICAgTE9HVigiRXF1YWxpemVyX2NvbmZpZ3VyZSBzdGFydCIpOworCisgICAgQ0hFQ0tfQVJHKHBDb250ZXh0ICE9IE5VTEwpOworICAgIENIRUNLX0FSRyhwQ29uZmlnICE9IE5VTEwpOworCisgICAgQ0hFQ0tfQVJHKHBDb25maWctPmlucHV0Q2ZnLnNhbXBsaW5nUmF0ZSA9PSBwQ29uZmlnLT5vdXRwdXRDZmcuc2FtcGxpbmdSYXRlKTsKKyAgICBDSEVDS19BUkcocENvbmZpZy0+aW5wdXRDZmcuY2hhbm5lbHMgPT0gcENvbmZpZy0+b3V0cHV0Q2ZnLmNoYW5uZWxzKTsKKyAgICBDSEVDS19BUkcocENvbmZpZy0+aW5wdXRDZmcuZm9ybWF0ID09IHBDb25maWctPm91dHB1dENmZy5mb3JtYXQpOworICAgIENIRUNLX0FSRygocENvbmZpZy0+aW5wdXRDZmcuY2hhbm5lbHMgPT0gQ0hBTk5FTF9NT05PKSB8fCAocENvbmZpZy0+aW5wdXRDZmcuY2hhbm5lbHMgPT0gQ0hBTk5FTF9TVEVSRU8pKTsKKyAgICBDSEVDS19BUkcocENvbmZpZy0+b3V0cHV0Q2ZnLmFjY2Vzc01vZGUgPT0gRUZGRUNUX0JVRkZFUl9BQ0NFU1NfV1JJVEUKKyAgICAgICAgICAgICAgfHwgcENvbmZpZy0+b3V0cHV0Q2ZnLmFjY2Vzc01vZGUgPT0gRUZGRUNUX0JVRkZFUl9BQ0NFU1NfQUNDVU1VTEFURSk7CisgICAgQ0hFQ0tfQVJHKHBDb25maWctPmlucHV0Q2ZnLmZvcm1hdCA9PSBTQU1QTEVfRk9STUFUX1BDTV9TN18yNAorICAgICAgICAgICAgICB8fCBwQ29uZmlnLT5pbnB1dENmZy5mb3JtYXQgPT0gU0FNUExFX0ZPUk1BVF9QQ01fUzE1KTsKKworICAgIGludCBjaGFubmVsQ291bnQ7CisgICAgaWYgKHBDb25maWctPmlucHV0Q2ZnLmNoYW5uZWxzID09IENIQU5ORUxfTU9OTykgeworICAgICAgICBjaGFubmVsQ291bnQgPSAxOworICAgIH0gZWxzZSB7CisgICAgICAgIGNoYW5uZWxDb3VudCA9IDI7CisgICAgfQorICAgIENIRUNLX0FSRyhjaGFubmVsQ291bnQgPD0gQXVkaW9CaXF1YWRGaWx0ZXI6Ok1BWF9DSEFOTkVMUyk7CisKKyAgICBtZW1jcHkoJnBDb250ZXh0LT5jb25maWcsIHBDb25maWcsIHNpemVvZihlZmZlY3RfY29uZmlnX3QpKTsKKworICAgIHBDb250ZXh0LT5wRXF1YWxpemVyLT5jb25maWd1cmUoY2hhbm5lbENvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICBwQ29uZmlnLT5pbnB1dENmZy5zYW1wbGluZ1JhdGUpOworCisgICAgcENvbnRleHQtPmFkYXB0ZXIuY29uZmlndXJlKCpwQ29udGV4dC0+cEVxdWFsaXplciwgY2hhbm5lbENvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgcENvbmZpZy0+aW5wdXRDZmcuZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgcENvbmZpZy0+b3V0cHV0Q2ZnLmFjY2Vzc01vZGUpOworCisgICAgcmV0dXJuIDA7Cit9ICAgLy8gZW5kIEVxdWFsaXplcl9jb25maWd1cmUKKworCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEVxdWFsaXplcl9pbml0KCkKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gUHVycG9zZTogSW5pdGlhbGl6ZSBlbmdpbmUgd2l0aCBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gYW5kIGNyZWF0ZXMKKy8vICAgICBBdWRpb0VxdWFsaXplciBpbnN0YW5jZS4KKy8vCisvLyBJbnB1dHM6CisvLyAgcENvbnRleHQ6ICAgZWZmZWN0IGVuZ2luZSBjb250ZXh0CisvLworLy8gT3V0cHV0czoKKy8vCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworaW50IEVxdWFsaXplcl9pbml0KEVxdWFsaXplckNvbnRleHQgKnBDb250ZXh0KQoreworICAgIGludCBzdGF0dXM7CisKKyAgICBMT0dWKCJFcXVhbGl6ZXJfaW5pdCBzdGFydCIpOworCisgICAgQ0hFQ0tfQVJHKHBDb250ZXh0ICE9IE5VTEwpOworCisgICAgaWYgKHBDb250ZXh0LT5wRXF1YWxpemVyICE9IE5VTEwpIHsKKyAgICAgICAgcENvbnRleHQtPnBFcXVhbGl6ZXItPmZyZWUoKTsKKyAgICB9CisKKyAgICBwQ29udGV4dC0+Y29uZmlnLmlucHV0Q2ZnLmFjY2Vzc01vZGUgPSBFRkZFQ1RfQlVGRkVSX0FDQ0VTU19SRUFEOworICAgIHBDb250ZXh0LT5jb25maWcuaW5wdXRDZmcuY2hhbm5lbHMgPSBDSEFOTkVMX1NURVJFTzsKKyAgICBwQ29udGV4dC0+Y29uZmlnLmlucHV0Q2ZnLmZvcm1hdCA9IFNBTVBMRV9GT1JNQVRfUENNX1MxNTsKKyAgICBwQ29udGV4dC0+Y29uZmlnLmlucHV0Q2ZnLnNhbXBsaW5nUmF0ZSA9IDQ0MTAwOworICAgIHBDb250ZXh0LT5jb25maWcuaW5wdXRDZmcuYnVmZmVyUHJvdmlkZXIuZ2V0QnVmZmVyID0gTlVMTDsKKyAgICBwQ29udGV4dC0+Y29uZmlnLmlucHV0Q2ZnLmJ1ZmZlclByb3ZpZGVyLnJlbGVhc2VCdWZmZXIgPSBOVUxMOworICAgIHBDb250ZXh0LT5jb25maWcuaW5wdXRDZmcuYnVmZmVyUHJvdmlkZXIuY29va2llID0gTlVMTDsKKyAgICBwQ29udGV4dC0+Y29uZmlnLmlucHV0Q2ZnLm1hc2sgPSBFRkZFQ1RfQ09ORklHX0FMTDsKKyAgICBwQ29udGV4dC0+Y29uZmlnLm91dHB1dENmZy5hY2Nlc3NNb2RlID0gRUZGRUNUX0JVRkZFUl9BQ0NFU1NfQUNDVU1VTEFURTsKKyAgICBwQ29udGV4dC0+Y29uZmlnLm91dHB1dENmZy5jaGFubmVscyA9IENIQU5ORUxfU1RFUkVPOworICAgIHBDb250ZXh0LT5jb25maWcub3V0cHV0Q2ZnLmZvcm1hdCA9IFNBTVBMRV9GT1JNQVRfUENNX1MxNTsKKyAgICBwQ29udGV4dC0+Y29uZmlnLm91dHB1dENmZy5zYW1wbGluZ1JhdGUgPSA0NDEwMDsKKyAgICBwQ29udGV4dC0+Y29uZmlnLm91dHB1dENmZy5idWZmZXJQcm92aWRlci5nZXRCdWZmZXIgPSBOVUxMOworICAgIHBDb250ZXh0LT5jb25maWcub3V0cHV0Q2ZnLmJ1ZmZlclByb3ZpZGVyLnJlbGVhc2VCdWZmZXIgPSBOVUxMOworICAgIHBDb250ZXh0LT5jb25maWcub3V0cHV0Q2ZnLmJ1ZmZlclByb3ZpZGVyLmNvb2tpZSA9IE5VTEw7CisgICAgcENvbnRleHQtPmNvbmZpZy5vdXRwdXRDZmcubWFzayA9IEVGRkVDVF9DT05GSUdfQUxMOworCisgICAgcENvbnRleHQtPnBFcXVhbGl6ZXIgPSBBdWRpb0VxdWFsaXplcjo6Q3JlYXRlSW5zdGFuY2UoCisgICAgICAgIE5VTEwsCisgICAgICAgIGtOdW1CYW5kcywKKyAgICAgICAgQXVkaW9CaXF1YWRGaWx0ZXI6Ok1BWF9DSEFOTkVMUywKKyAgICAgICAgNDQxMDAsCisgICAgICAgIGdFcXVhbGl6ZXJQcmVzZXRzLAorICAgICAgICBBUlJBWV9TSVpFKGdFcXVhbGl6ZXJQcmVzZXRzKSk7CisKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IGtOdW1CYW5kczsgKytpKSB7CisgICAgICAgIHBDb250ZXh0LT5wRXF1YWxpemVyLT5zZXRGcmVxdWVuY3koaSwgZ0ZyZXFzW2ldKTsKKyAgICAgICAgcENvbnRleHQtPnBFcXVhbGl6ZXItPnNldEJhbmR3aWR0aChpLCBnQmFuZHdpZHRoc1tpXSk7CisgICAgfQorCisgICAgcENvbnRleHQtPnBFcXVhbGl6ZXItPmVuYWJsZSh0cnVlKTsKKworICAgIEVxdWFsaXplcl9jb25maWd1cmUocENvbnRleHQsICZwQ29udGV4dC0+Y29uZmlnKTsKKworICAgIHJldHVybiAwOworfSAgIC8vIGVuZCBFcXVhbGl6ZXJfaW5pdAorCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gRXF1YWxpemVyX2dldFBhcmFtZXRlcigpCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIFB1cnBvc2U6CisvLyBHZXQgYSBFcXVhbGl6ZXIgcGFyYW1ldGVyCisvLworLy8gSW5wdXRzOgorLy8gIHBFcXVhbGl6ZXIgICAgICAgLSBoYW5kbGUgdG8gaW5zdGFuY2UgZGF0YQorLy8gIHBQYXJhbSAgICAgICAgICAgLSBwb2ludGVyIHRvIHBhcmFtZXRlcgorLy8gIHBWYWx1ZSAgICAgICAgICAgLSBwb2ludGVyIHRvIHZhcmlhYmxlIHRvIGhvbGQgcmV0cmlldmVkIHZhbHVlCisvLyAgcFZhbHVlU2l6ZSAgICAgICAtIHBvaW50ZXIgdG8gdmFsdWUgc2l6ZTogbWF4aW11bSBzaXplIGFzIGlucHV0CisvLworLy8gT3V0cHV0czoKKy8vICAqcFZhbHVlIHVwZGF0ZWQgd2l0aCBwYXJhbWV0ZXIgdmFsdWUKKy8vICAqcFZhbHVlU2l6ZSB1cGRhdGVkIHdpdGggYWN0dWFsIHZhbHVlIHNpemUKKy8vCisvLworLy8gU2lkZSBFZmZlY3RzOgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitpbnQgRXF1YWxpemVyX2dldFBhcmFtZXRlcihBdWRpb0VxdWFsaXplciAqIHBFcXVhbGl6ZXIsIGludDMyX3QgKnBQYXJhbSwgc2l6ZV90ICpwVmFsdWVTaXplLCB2b2lkICpwVmFsdWUpCit7CisgICAgaW50IHN0YXR1cyA9IDA7CisgICAgaW50MzJfdCBwYXJhbSA9ICpwUGFyYW0rKzsKKyAgICBpbnQzMl90IHBhcmFtMjsKKyAgICBjaGFyICpuYW1lOworCisgICAgc3dpdGNoIChwYXJhbSkgeworICAgIGNhc2UgRVFfUEFSQU1fTlVNX0JBTkRTOgorICAgIGNhc2UgRVFfUEFSQU1fQ1VSX1BSRVNFVDoKKyAgICBjYXNlIEVRX1BBUkFNX0dFVF9OVU1fT0ZfUFJFU0VUUzoKKyAgICAgICAgaWYgKCpwVmFsdWVTaXplIDwgc2l6ZW9mKGludDE2X3QpKSB7CisgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICAgICAgfQorICAgICAgICAqcFZhbHVlU2l6ZSA9IHNpemVvZihpbnQxNl90KTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEVRX1BBUkFNX0xFVkVMX1JBTkdFOgorICAgIGNhc2UgRVFfUEFSQU1fQkFORF9GUkVRX1JBTkdFOgorICAgICAgICBpZiAoKnBWYWx1ZVNpemUgPCAyICogc2l6ZW9mKGludDMyX3QpKSB7CisgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICAgICAgfQorICAgICAgICAqcFZhbHVlU2l6ZSA9IDIgKiBzaXplb2YoaW50MzJfdCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRVFfUEFSQU1fQkFORF9MRVZFTDoKKyAgICBjYXNlIEVRX1BBUkFNX0dFVF9CQU5EOgorICAgIGNhc2UgRVFfUEFSQU1fQ0VOVEVSX0ZSRVE6CisgICAgICAgIGlmICgqcFZhbHVlU2l6ZSA8IHNpemVvZihpbnQzMl90KSkgeworICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgICAgIH0KKyAgICAgICAgKnBWYWx1ZVNpemUgPSBzaXplb2YoaW50MzJfdCk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBFUV9QQVJBTV9HRVRfUFJFU0VUX05BTUU6CisgICAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQorCisgICAgc3dpdGNoIChwYXJhbSkgeworICAgIGNhc2UgRVFfUEFSQU1fTlVNX0JBTkRTOgorICAgICAgICAqKGludDE2X3QgKilwVmFsdWUgPSBrTnVtQmFuZHM7CisgICAgICAgIExPR1YoIkVxdWFsaXplcl9nZXRQYXJhbWV0ZXIoKSBFUV9QQVJBTV9OVU1fQkFORFMgJWQiLCAqKGludDE2X3QgKilwVmFsdWUpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgRVFfUEFSQU1fTEVWRUxfUkFOR0U6CisgICAgICAgICooaW50MzJfdCAqKXBWYWx1ZSA9IC05NjAwOworICAgICAgICAqKChpbnQzMl90ICopcFZhbHVlICsgMSkgPSA0ODAwOworICAgICAgICBMT0dWKCJFcXVhbGl6ZXJfZ2V0UGFyYW1ldGVyKCkgRVFfUEFSQU1fTEVWRUxfUkFOR0UgbWluICVkLCBtYXggJWQiLCAqKGludDMyX3QgKilwVmFsdWUsICooKGludDMyX3QgKilwVmFsdWUgKyAxKSk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBFUV9QQVJBTV9CQU5EX0xFVkVMOgorICAgICAgICBwYXJhbTIgPSAqcFBhcmFtOworICAgICAgICBpZiAocGFyYW0yID49IGtOdW1CYW5kcykgeworICAgICAgICAgICAgc3RhdHVzID0gLUVJTlZBTDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgICooaW50MzJfdCAqKXBWYWx1ZSA9IHBFcXVhbGl6ZXItPmdldEdhaW4ocGFyYW0yKTsKKyAgICAgICAgTE9HVigiRXF1YWxpemVyX2dldFBhcmFtZXRlcigpIEVRX1BBUkFNX0JBTkRfTEVWRUwgYmFuZCAlZCwgbGV2ZWwgJWQiLCBwYXJhbTIsICooaW50MzJfdCAqKXBWYWx1ZSk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBFUV9QQVJBTV9DRU5URVJfRlJFUToKKyAgICAgICAgcGFyYW0yID0gKnBQYXJhbTsKKyAgICAgICAgaWYgKHBhcmFtMiA+PSBrTnVtQmFuZHMpIHsKKyAgICAgICAgICAgIHN0YXR1cyA9IC1FSU5WQUw7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAqKGludDMyX3QgKilwVmFsdWUgPSBwRXF1YWxpemVyLT5nZXRGcmVxdWVuY3kocGFyYW0yKTsKKyAgICAgICAgTE9HVigiRXF1YWxpemVyX2dldFBhcmFtZXRlcigpIEVRX1BBUkFNX0NFTlRFUl9GUkVRIGJhbmQgJWQsIGZyZXF1ZW5jeSAlZCIsIHBhcmFtMiwgKihpbnQzMl90ICopcFZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEVRX1BBUkFNX0JBTkRfRlJFUV9SQU5HRToKKyAgICAgICAgcGFyYW0yID0gKnBQYXJhbTsKKyAgICAgICAgaWYgKHBhcmFtMiA+PSBrTnVtQmFuZHMpIHsKKyAgICAgICAgICAgIHN0YXR1cyA9IC1FSU5WQUw7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBwRXF1YWxpemVyLT5nZXRCYW5kUmFuZ2UocGFyYW0yLCAqKHVpbnQzMl90ICopcFZhbHVlLCAqKCh1aW50MzJfdCAqKXBWYWx1ZSArIDEpKTsKKyAgICAgICAgTE9HVigiRXF1YWxpemVyX2dldFBhcmFtZXRlcigpIEVRX1BBUkFNX0JBTkRfRlJFUV9SQU5HRSBiYW5kICVkLCBtaW4gJWQsIG1heCAlZCIsIHBhcmFtMiwgKihpbnQzMl90ICopcFZhbHVlLCAqKChpbnQzMl90ICopcFZhbHVlICsgMSkpOworICAgICAgICBicmVhazsKKworICAgIGNhc2UgRVFfUEFSQU1fR0VUX0JBTkQ6CisgICAgICAgIHBhcmFtMiA9ICpwUGFyYW07CisgICAgICAgICooaW50MzJfdCAqKXBWYWx1ZSA9IHBFcXVhbGl6ZXItPmdldE1vc3RSZWxldmFudEJhbmQocGFyYW0yKTsKKyAgICAgICAgTE9HVigiRXF1YWxpemVyX2dldFBhcmFtZXRlcigpIEVRX1BBUkFNX0dFVF9CQU5EIGZyZXF1ZW5jeSAlZCwgYmFuZCAlZCIsIHBhcmFtMiwgKihpbnQzMl90ICopcFZhbHVlKTsKKyAgICAgICAgYnJlYWs7CisKKyAgICBjYXNlIEVRX1BBUkFNX0NVUl9QUkVTRVQ6CisgICAgICAgICooaW50MTZfdCAqKXBWYWx1ZSA9IHBFcXVhbGl6ZXItPmdldFByZXNldCgpOworICAgICAgICBMT0dWKCJFcXVhbGl6ZXJfZ2V0UGFyYW1ldGVyKCkgRVFfUEFSQU1fQ1VSX1BSRVNFVCAlZCIsICooaW50MzJfdCAqKXBWYWx1ZSk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBFUV9QQVJBTV9HRVRfTlVNX09GX1BSRVNFVFM6CisgICAgICAgICooaW50MTZfdCAqKXBWYWx1ZSA9IHBFcXVhbGl6ZXItPmdldE51bVByZXNldHMoKTsKKyAgICAgICAgTE9HVigiRXF1YWxpemVyX2dldFBhcmFtZXRlcigpIEVRX1BBUkFNX0dFVF9OVU1fT0ZfUFJFU0VUUyAlZCIsICooaW50MTZfdCAqKXBWYWx1ZSk7CisgICAgICAgIGJyZWFrOworCisgICAgY2FzZSBFUV9QQVJBTV9HRVRfUFJFU0VUX05BTUU6CisgICAgICAgIHBhcmFtMiA9ICpwUGFyYW07CisgICAgICAgIGlmIChwYXJhbTIgPj0gcEVxdWFsaXplci0+Z2V0TnVtUHJlc2V0cygpKSB7CisgICAgICAgICAgICBzdGF0dXMgPSAtRUlOVkFMOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgbmFtZSA9IChjaGFyICopcFZhbHVlOworICAgICAgICBzdHJuY3B5KG5hbWUsIHBFcXVhbGl6ZXItPmdldFByZXNldE5hbWUocGFyYW0yKSwgKnBWYWx1ZVNpemUgLSAxKTsKKyAgICAgICAgbmFtZVsqcFZhbHVlU2l6ZSAtIDFdID0gMDsKKyAgICAgICAgKnBWYWx1ZVNpemUgPSBzdHJsZW4obmFtZSkgKyAxOworICAgICAgICBMT0dWKCJFcXVhbGl6ZXJfZ2V0UGFyYW1ldGVyKCkgRVFfUEFSQU1fR0VUX1BSRVNFVF9OQU1FIHByZXNldCAlZCwgbmFtZSAlcyBsZW4gJWQiLCBwYXJhbTIsIGdFcXVhbGl6ZXJQcmVzZXRzW3BhcmFtMl0ubmFtZSwgKnBWYWx1ZVNpemUpOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAgIExPR1YoIkVxdWFsaXplcl9nZXRQYXJhbWV0ZXIoKSBpbnZhbGlkIHBhcmFtICVkIiwgcGFyYW0pOworICAgICAgICBzdGF0dXMgPSAtRUlOVkFMOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gc3RhdHVzOworfSAvLyBlbmQgRXF1YWxpemVyX2dldFBhcmFtZXRlcgorCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gRXF1YWxpemVyX3NldFBhcmFtZXRlcigpCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIFB1cnBvc2U6CisvLyBTZXQgYSBFcXVhbGl6ZXIgcGFyYW1ldGVyCisvLworLy8gSW5wdXRzOgorLy8gIHBFcXVhbGl6ZXIgICAgICAgLSBoYW5kbGUgdG8gaW5zdGFuY2UgZGF0YQorLy8gIHBQYXJhbSAgICAgICAgICAgLSBwb2ludGVyIHRvIHBhcmFtZXRlcgorLy8gIHBWYWx1ZSAgICAgICAgICAgLSBwb2ludGVyIHRvIHZhbHVlCisvLworLy8gT3V0cHV0czoKKy8vCisvLworLy8gU2lkZSBFZmZlY3RzOgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitpbnQgRXF1YWxpemVyX3NldFBhcmFtZXRlciAoQXVkaW9FcXVhbGl6ZXIgKiBwRXF1YWxpemVyLCBpbnQzMl90ICpwUGFyYW0sIHZvaWQgKnBWYWx1ZSkKK3sKKyAgICBpbnQgc3RhdHVzID0gMDsKKyAgICBpbnQzMl90IHByZXNldDsKKyAgICBpbnQzMl90IGJhbmQ7CisgICAgaW50MzJfdCBsZXZlbDsKKyAgICBpbnQzMl90IHBhcmFtID0gKnBQYXJhbSsrOworCisKKyAgICBzd2l0Y2ggKHBhcmFtKSB7CisgICAgY2FzZSBFUV9QQVJBTV9DVVJfUFJFU0VUOgorICAgICAgICBwcmVzZXQgPSAqKGludDE2X3QgKilwVmFsdWU7CisKKyAgICAgICAgTE9HVigic2V0UGFyYW1ldGVyKCkgRVFfUEFSQU1fQ1VSX1BSRVNFVCAlZCIsIHByZXNldCk7CisgICAgICAgIGlmIChwcmVzZXQgPj0gcEVxdWFsaXplci0+Z2V0TnVtUHJlc2V0cygpKSB7CisgICAgICAgICAgICBzdGF0dXMgPSAtRUlOVkFMOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgcEVxdWFsaXplci0+c2V0UHJlc2V0KHByZXNldCk7CisgICAgICAgIHBFcXVhbGl6ZXItPmNvbW1pdCh0cnVlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFUV9QQVJBTV9CQU5EX0xFVkVMOgorICAgICAgICBiYW5kID0gICpwUGFyYW07CisgICAgICAgIGxldmVsID0gKihpbnQzMl90ICopcFZhbHVlOworICAgICAgICBMT0dWKCJzZXRQYXJhbWV0ZXIoKSBFUV9QQVJBTV9CQU5EX0xFVkVMIGJhbmQgJWQsIGxldmVsICVkIiwgYmFuZCwgbGV2ZWwpOworICAgICAgICBpZiAoYmFuZCA+PSBrTnVtQmFuZHMpIHsKKyAgICAgICAgICAgIHN0YXR1cyA9IC1FSU5WQUw7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBwRXF1YWxpemVyLT5zZXRHYWluKGJhbmQsIGxldmVsKTsKKyAgICAgICAgcEVxdWFsaXplci0+Y29tbWl0KHRydWUpOworICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIExPR1YoInNldFBhcmFtZXRlcigpIGludmFsaWQgcGFyYW0gJWQiLCBwYXJhbSk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiBzdGF0dXM7Cit9IC8vIGVuZCBFcXVhbGl6ZXJfc2V0UGFyYW1ldGVyCisKK30gLy8gbmFtZXNwYWNlCit9IC8vIG5hbWVzcGFjZQorCisKKy8vCisvLy0tLSBFZmZlY3QgQ29udHJvbCBJbnRlcmZhY2UgSW1wbGVtZW50YXRpb24KKy8vCisKK2V4dGVybiAiQyIgaW50IEVxdWFsaXplcl9wcm9jZXNzKGVmZmVjdF9pbnRlcmZhY2VfdCBzZWxmLCBhdWRpb19idWZmZXJfdCAqaW5CdWZmZXIsIGF1ZGlvX2J1ZmZlcl90ICpvdXRCdWZmZXIpCit7CisgICAgYW5kcm9pZDo6RXF1YWxpemVyQ29udGV4dCAqIHBDb250ZXh0ID0gKGFuZHJvaWQ6OkVxdWFsaXplckNvbnRleHQgKikgc2VsZjsKKworICAgIGlmIChwQ29udGV4dCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKyAgICBpZiAoaW5CdWZmZXIgPT0gTlVMTCB8fCBpbkJ1ZmZlci0+cmF3ID09IE5VTEwgfHwKKyAgICAgICAgb3V0QnVmZmVyID09IE5VTEwgfHwgb3V0QnVmZmVyLT5yYXcgPT0gTlVMTCB8fAorICAgICAgICBpbkJ1ZmZlci0+ZnJhbWVDb3VudCAhPSBvdXRCdWZmZXItPmZyYW1lQ291bnQpIHsKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQorCisgICAgcENvbnRleHQtPmFkYXB0ZXIucHJvY2VzcyhpbkJ1ZmZlci0+cmF3LCBvdXRCdWZmZXItPnJhdywgb3V0QnVmZmVyLT5mcmFtZUNvdW50KTsKKworICAgIHJldHVybiAwOworfSAgIC8vIGVuZCBFcXVhbGl6ZXJfcHJvY2VzcworCitleHRlcm4gIkMiIGludCBFcXVhbGl6ZXJfY29tbWFuZChlZmZlY3RfaW50ZXJmYWNlX3Qgc2VsZiwgaW50IGNtZENvZGUsIGludCBjbWRTaXplLAorICAgICAgICB2b2lkICpwQ21kRGF0YSwgaW50ICpyZXBseVNpemUsIHZvaWQgKnBSZXBseURhdGEpIHsKKworICAgIGFuZHJvaWQ6OkVxdWFsaXplckNvbnRleHQgKiBwQ29udGV4dCA9IChhbmRyb2lkOjpFcXVhbGl6ZXJDb250ZXh0ICopIHNlbGY7CisgICAgaW50IHJldHNpemU7CisKKyAgICBpZiAocENvbnRleHQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisKKyAgICBhbmRyb2lkOjpBdWRpb0VxdWFsaXplciAqIHBFcXVhbGl6ZXIgPSBwQ29udGV4dC0+cEVxdWFsaXplcjsKKworICAgIExPR1YoIkVxdWFsaXplcl9jb21tYW5kIGNvbW1hbmQgJWQgY21kU2l6ZSAlZCIsY21kQ29kZSwgY21kU2l6ZSk7CisKKyAgICBzd2l0Y2ggKGNtZENvZGUpIHsKKyAgICBjYXNlIEVGRkVDVF9DTURfSU5JVDoKKyAgICAgICAgaWYgKHBSZXBseURhdGEgPT0gTlVMTCB8fCAqcmVwbHlTaXplICE9IHNpemVvZihpbnQpKSB7CisgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICAgICAgfQorICAgICAgICAqKGludCAqKSBwUmVwbHlEYXRhID0gRXF1YWxpemVyX2luaXQocENvbnRleHQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEVGRkVDVF9DTURfQ09ORklHVVJFOgorICAgICAgICBpZiAocENtZERhdGEgPT0gTlVMTCB8fCBjbWRTaXplICE9IHNpemVvZihlZmZlY3RfY29uZmlnX3QpCisgICAgICAgICAgICAgICAgfHwgcFJlcGx5RGF0YSA9PSBOVUxMIHx8ICpyZXBseVNpemUgIT0gc2l6ZW9mKGludCkpIHsKKyAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgICAgICB9CisgICAgICAgICooaW50ICopIHBSZXBseURhdGEgPSBFcXVhbGl6ZXJfY29uZmlndXJlKHBDb250ZXh0LAorICAgICAgICAgICAgICAgIChlZmZlY3RfY29uZmlnX3QgKikgcENtZERhdGEpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEVGRkVDVF9DTURfUkVTRVQ6CisgICAgICAgIEVxdWFsaXplcl9jb25maWd1cmUocENvbnRleHQsICZwQ29udGV4dC0+Y29uZmlnKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFRkZFQ1RfQ01EX0dFVF9QQVJBTTogeworICAgICAgICBpZiAocENtZERhdGEgPT0gTlVMTCB8fCBjbWRTaXplIDwgKGludCkoc2l6ZW9mKGVmZmVjdF9wYXJhbV90KSArIHNpemVvZihpbnQzMl90KSkgfHwKKyAgICAgICAgICAgIHBSZXBseURhdGEgPT0gTlVMTCB8fCAqcmVwbHlTaXplIDwgKGludCkgKHNpemVvZihlZmZlY3RfcGFyYW1fdCkgKyBzaXplb2YoaW50MzJfdCkpKSB7CisgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICAgICAgfQorICAgICAgICBlZmZlY3RfcGFyYW1fdCAqcCA9IChlZmZlY3RfcGFyYW1fdCAqKXBDbWREYXRhOworICAgICAgICBtZW1jcHkocFJlcGx5RGF0YSwgcENtZERhdGEsIHNpemVvZihlZmZlY3RfcGFyYW1fdCkgKyBwLT5wc2l6ZSk7CisgICAgICAgIHAgPSAoZWZmZWN0X3BhcmFtX3QgKilwUmVwbHlEYXRhOworICAgICAgICBpbnQgdm9mZnNldCA9ICgocC0+cHNpemUgLSAxKSAvIHNpemVvZihpbnQzMl90KSArIDEpICogc2l6ZW9mKGludDMyX3QpOworICAgICAgICBwLT5zdGF0dXMgPSBhbmRyb2lkOjpFcXVhbGl6ZXJfZ2V0UGFyYW1ldGVyKHBFcXVhbGl6ZXIsIChpbnQzMl90ICopcC0+ZGF0YSwgJnAtPnZzaXplLAorICAgICAgICAgICAgICAgIHAtPmRhdGEgKyB2b2Zmc2V0KTsKKyAgICAgICAgKnJlcGx5U2l6ZSA9IHNpemVvZihlZmZlY3RfcGFyYW1fdCkgKyB2b2Zmc2V0ICsgcC0+dnNpemU7CisgICAgICAgIExPR1YoIkVxdWFsaXplcl9jb21tYW5kIEVGRkVDVF9DTURfR0VUX1BBUkFNICpwQ21kRGF0YSAlZCwgKnJlcGx5U2l6ZSAlZCwgKnBSZXBseURhdGEgJTA4eCAlMDh4IiwKKyAgICAgICAgICAgICAgICAqKGludDMyX3QgKikoKGNoYXIgKilwQ21kRGF0YSArIHNpemVvZihlZmZlY3RfcGFyYW1fdCkpLCAqcmVwbHlTaXplLAorICAgICAgICAgICAgICAgICooaW50MzJfdCAqKSgoY2hhciAqKXBSZXBseURhdGEgKyBzaXplb2YoZWZmZWN0X3BhcmFtX3QpICsgdm9mZnNldCksCisgICAgICAgICAgICAgICAgKihpbnQzMl90ICopKChjaGFyICopcFJlcGx5RGF0YSArIHNpemVvZihlZmZlY3RfcGFyYW1fdCkgKyB2b2Zmc2V0ICsgc2l6ZW9mKGludDMyX3QpKSk7CisKKyAgICAgICAgfSBicmVhazsKKyAgICBjYXNlIEVGRkVDVF9DTURfU0VUX1BBUkFNOiB7CisgICAgICAgIExPR1YoIkVxdWFsaXplcl9jb21tYW5kIEVGRkVDVF9DTURfU0VUX1BBUkFNIGNtZFNpemUgJWQgcENtZERhdGEgJXAsICpyZXBseVNpemUgJWQsIHBSZXBseURhdGEgJXAiLCBjbWRTaXplLCBwQ21kRGF0YSwgKnJlcGx5U2l6ZSwgcFJlcGx5RGF0YSk7CisgICAgICAgIGlmIChwQ21kRGF0YSA9PSBOVUxMIHx8IGNtZFNpemUgPCAoaW50KShzaXplb2YoZWZmZWN0X3BhcmFtX3QpICsgc2l6ZW9mKGludDMyX3QpKSB8fAorICAgICAgICAgICAgcFJlcGx5RGF0YSA9PSBOVUxMIHx8ICpyZXBseVNpemUgIT0gc2l6ZW9mKGludDMyX3QpKSB7CisgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICAgICAgfQorICAgICAgICBlZmZlY3RfcGFyYW1fdCAqcCA9IChlZmZlY3RfcGFyYW1fdCAqKSBwQ21kRGF0YTsKKyAgICAgICAgKihpbnQgKilwUmVwbHlEYXRhID0gYW5kcm9pZDo6RXF1YWxpemVyX3NldFBhcmFtZXRlcihwRXF1YWxpemVyLCAoaW50MzJfdCAqKXAtPmRhdGEsCisgICAgICAgICAgICAgICAgcC0+ZGF0YSArIHAtPnBzaXplKTsKKyAgICAgICAgfSBicmVhazsKKyAgICBjYXNlIEVGRkVDVF9DTURfRU5BQkxFOgorICAgIGNhc2UgRUZGRUNUX0NNRF9ESVNBQkxFOgorICAgICAgICBpZiAocFJlcGx5RGF0YSA9PSBOVUxMIHx8ICpyZXBseVNpemUgIT0gc2l6ZW9mKGludCkpIHsKKyAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgICAgICB9CisgICAgICAgICooaW50ICopcFJlcGx5RGF0YSA9IDA7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRUZGRUNUX0NNRF9TRVRfREVWSUNFOgorICAgIGNhc2UgRUZGRUNUX0NNRF9TRVRfVk9MVU1FOgorICAgIGNhc2UgRUZGRUNUX0NNRF9TRVRfQVVESU9fTU9ERToKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgTE9HVygiRXF1YWxpemVyX2NvbW1hbmQgaW52YWxpZCBjb21tYW5kICVkIixjbWRDb2RlKTsKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKKy8vIGVmZmVjdF9pbnRlcmZhY2VfdCBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb24gZm9yIGVxdWFsaXplciBlZmZlY3QKK2NvbnN0IHN0cnVjdCBlZmZlY3RfaW50ZXJmYWNlX3MgZ0VxdWFsaXplckludGVyZmFjZSA9IHsKKyAgICAgICAgRXF1YWxpemVyX3Byb2Nlc3MsCisgICAgICAgIEVxdWFsaXplcl9jb21tYW5kCit9OworCisKZGlmZiAtLWdpdCBhL21lZGlhL2xpYmVmZmVjdHMvRWZmZWN0UmV2ZXJiLmMgYi9tZWRpYS9saWJlZmZlY3RzL0VmZmVjdFJldmVyYi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjODdmMjMKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJlZmZlY3RzL0VmZmVjdFJldmVyYi5jCkBAIC0wLDAgKzEsMjEwMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNkZWZpbmUgTE9HX1RBRyAiRWZmZWN0UmV2ZXJiIgorLy8KKyNkZWZpbmUgTE9HX05ERUJVRyAwCisjaW5jbHVkZSA8Y3V0aWxzL2xvZy5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmluZy5oPgorI2luY2x1ZGUgPHN0ZGJvb2wuaD4KKyNpbmNsdWRlICJFZmZlY3RSZXZlcmIuaCIKKyNpbmNsdWRlICJFZmZlY3RzTWF0aC5oIgorCisvLyBlZmZlY3RfaW50ZXJmYWNlX3QgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uIGZvciByZXZlcmIgZWZmZWN0Citjb25zdCBzdHJ1Y3QgZWZmZWN0X2ludGVyZmFjZV9zIGdSZXZlcmJJbnRlcmZhY2UgPSB7CisgICAgICAgIFJldmVyYl9Qcm9jZXNzLAorICAgICAgICBSZXZlcmJfQ29tbWFuZAorfTsKKworLy8gR29vZ2xlIGF1eGlsaWFyeSBlbnZpcm9ubWVudGFsIHJldmVyYiBVVUlEOiAxZjBhZTJlMC00ZWY3LTExZGYtYmMwOS0wMDAyYTVkNWM1MWIKK3N0YXRpYyBjb25zdCBlZmZlY3RfZGVzY3JpcHRvcl90IGdBdXhFbnZSZXZlcmJEZXNjcmlwdG9yID0geworICAgICAgICB7MHhjMmU1ZDVmMCwgMHg5NGJkLCAweDQ3NjMsIDB4OWNhYywgezB4NGUsIDB4MjMsIDB4NGQsIDB4MDYsIDB4ODMsIDB4OWV9fSwKKyAgICAgICAgezB4MWYwYWUyZTAsIDB4NGVmNywgMHgxMWRmLCAweGJjMDksIHsweDAwLCAweDAyLCAweGE1LCAweGQ1LCAweGM1LCAweDFifX0sCisgICAgICAgIEVGRkVDVF9BUElfVkVSU0lPTiwKKyAgICAgICAgLy8gZmxhZ3Mgb3RoZXIgdGhhbiBFRkZFQ1RfRkxBR19UWVBFX0FVWElMSUFSWSBzZXQgZm9yIHRlc3QgcHVycG9zZQorICAgICAgICBFRkZFQ1RfRkxBR19UWVBFX0FVWElMSUFSWSB8IEVGRkVDVF9GTEFHX0RFVklDRV9JTkQgfCBFRkZFQ1RfRkxBR19BVURJT19NT0RFX0lORCwKKyAgICAgICAgMCwgLy8gVE9ETworICAgICAgICAzMywKKyAgICAgICAgIkF1eCBFbnZpcm9ubWVudGFsIFJldmVyYiIsCisgICAgICAgICJHb29nbGUgSW5jLiIKK307CisKKy8vIEdvb2dsZSBpbnNlcnQgZW52aXJvbm1lbnRhbCByZXZlcmIgVVVJRDogYWE0NzYwNDAtNjM0Mi0xMWRmLTkxYTQtMDAwMmE1ZDVjNTFiCitzdGF0aWMgY29uc3QgZWZmZWN0X2Rlc2NyaXB0b3JfdCBnSW5zZXJ0RW52UmV2ZXJiRGVzY3JpcHRvciA9IHsKKyAgICAgICAgezB4YzJlNWQ1ZjAsIDB4OTRiZCwgMHg0NzYzLCAweDljYWMsIHsweDRlLCAweDIzLCAweDRkLCAweDA2LCAweDgzLCAweDllfX0sCisgICAgICAgIHsweGFhNDc2MDQwLCAweDYzNDIsIDB4MTFkZiwgMHg5MWE0LCB7MHgwMCwgMHgwMiwgMHhhNSwgMHhkNSwgMHhjNSwgMHgxYn19LAorICAgICAgICBFRkZFQ1RfQVBJX1ZFUlNJT04sCisgICAgICAgIEVGRkVDVF9GTEFHX1RZUEVfSU5TRVJUIHwgRUZGRUNUX0ZMQUdfSU5TRVJUX0ZJUlNULAorICAgICAgICAwLCAvLyBUT0RPCisgICAgICAgIDMzLAorICAgICAgICAiSW5zZXJ0IEVudmlyb25tZW50YWwgcmV2ZXJiIiwKKyAgICAgICAgIkdvb2dsZSBJbmMuIgorfTsKKworLy8gR29vZ2xlIGF1eGlsaWFyeSBwcmVzZXQgcmV2ZXJiIFVVSUQ6IDYzOTA5MzIwLTUzYTYtMTFkZi1iZGJkLTAwMDJhNWQ1YzUxYgorc3RhdGljIGNvbnN0IGVmZmVjdF9kZXNjcmlwdG9yX3QgZ0F1eFByZXNldFJldmVyYkRlc2NyaXB0b3IgPSB7CisgICAgICAgIHsweDQ3MzgyZDYwLCAweGRkZDgsIDB4MTFkYiwgMHhiZjNhLCB7MHgwMCwgMHgwMiwgMHhhNSwgMHhkNSwgMHhjNSwgMHgxYn19LAorICAgICAgICB7MHg2MzkwOTMyMCwgMHg1M2E2LCAweDExZGYsIDB4YmRiZCwgezB4MDAsIDB4MDIsIDB4YTUsIDB4ZDUsIDB4YzUsIDB4MWJ9fSwKKyAgICAgICAgRUZGRUNUX0FQSV9WRVJTSU9OLAorICAgICAgICBFRkZFQ1RfRkxBR19UWVBFX0FVWElMSUFSWSwKKyAgICAgICAgMCwgLy8gVE9ETworICAgICAgICAzMywKKyAgICAgICAgIkF1eCBQcmVzZXQgUmV2ZXJiIiwKKyAgICAgICAgIkdvb2dsZSBJbmMuIgorfTsKKworLy8gR29vZ2xlIGluc2VydCBwcmVzZXQgcmV2ZXJiIFVVSUQ6IGQ5M2RjNmEwLTYzNDItMTFkZi1iMTI4LTAwMDJhNWQ1YzUxYgorc3RhdGljIGNvbnN0IGVmZmVjdF9kZXNjcmlwdG9yX3QgZ0luc2VydFByZXNldFJldmVyYkRlc2NyaXB0b3IgPSB7CisgICAgICAgIHsweDQ3MzgyZDYwLCAweGRkZDgsIDB4MTFkYiwgMHhiZjNhLCB7MHgwMCwgMHgwMiwgMHhhNSwgMHhkNSwgMHhjNSwgMHgxYn19LAorICAgICAgICB7MHhkOTNkYzZhMCwgMHg2MzQyLCAweDExZGYsIDB4YjEyOCwgezB4MDAsIDB4MDIsIDB4YTUsIDB4ZDUsIDB4YzUsIDB4MWJ9fSwKKyAgICAgICAgRUZGRUNUX0FQSV9WRVJTSU9OLAorICAgICAgICBFRkZFQ1RfRkxBR19UWVBFX0lOU0VSVCB8IEVGRkVDVF9GTEFHX0lOU0VSVF9GSVJTVCwKKyAgICAgICAgMCwgLy8gVE9ETworICAgICAgICAzMywKKyAgICAgICAgIkluc2VydCBQcmVzZXQgUmV2ZXJiIiwKKyAgICAgICAgIkdvb2dsZSBJbmMuIgorfTsKKworLy8gZ0Rlc2NyaXB0b3JzIGNvbnRhaW5zIHBvaW50ZXJzIHRvIGFsbCBkZWZpbmVkIGVmZmVjdCBkZXNjcmlwdG9yIGluIHRoaXMgbGlicmFyeQorc3RhdGljIGNvbnN0IGVmZmVjdF9kZXNjcmlwdG9yX3QgKiBjb25zdCBnRGVzY3JpcHRvcnNbXSA9IHsKKyAgICAgICAgJmdBdXhFbnZSZXZlcmJEZXNjcmlwdG9yLAorICAgICAgICAmZ0luc2VydEVudlJldmVyYkRlc2NyaXB0b3IsCisgICAgICAgICZnQXV4UHJlc2V0UmV2ZXJiRGVzY3JpcHRvciwKKyAgICAgICAgJmdJbnNlcnRQcmVzZXRSZXZlcmJEZXNjcmlwdG9yCit9OworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIEVmZmVjdCBBUEkgaW1wbGVtZW50YXRpb24KKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisvKi0tLSBFZmZlY3QgTGlicmFyeSBJbnRlcmZhY2UgSW1wbGVtZW50YXRpb24gLS0tKi8KKworaW50IEVmZmVjdFF1ZXJ5TnVtYmVyRWZmZWN0cyh1aW50MzJfdCAqcE51bUVmZmVjdHMpIHsKKyAgICAqcE51bUVmZmVjdHMgPSBzaXplb2YoZ0Rlc2NyaXB0b3JzKSAvIHNpemVvZihjb25zdCBlZmZlY3RfZGVzY3JpcHRvcl90ICopOworICAgIHJldHVybiAwOworfQorCitpbnQgRWZmZWN0UXVlcnlFZmZlY3QodWludDMyX3QgaW5kZXgsIGVmZmVjdF9kZXNjcmlwdG9yX3QgKnBEZXNjcmlwdG9yKSB7CisgICAgaWYgKHBEZXNjcmlwdG9yID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQorICAgIGlmIChpbmRleCA+PSBzaXplb2YoZ0Rlc2NyaXB0b3JzKSAvIHNpemVvZihjb25zdCBlZmZlY3RfZGVzY3JpcHRvcl90ICopKSB7CisgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKyAgICBtZW1jcHkocERlc2NyaXB0b3IsIGdEZXNjcmlwdG9yc1tpbmRleF0sCisgICAgICAgICAgICBzaXplb2YoZWZmZWN0X2Rlc2NyaXB0b3JfdCkpOworICAgIHJldHVybiAwOworfQorCitpbnQgRWZmZWN0Q3JlYXRlKGVmZmVjdF91dWlkX3QgKnV1aWQsCisgICAgICAgIGludDMyX3Qgc2Vzc2lvbklkLAorICAgICAgICBpbnQzMl90IGlvSWQsCisgICAgICAgIGVmZmVjdF9pbnRlcmZhY2VfdCAqcEludGVyZmFjZSkgeworICAgIGludCByZXQ7CisgICAgaW50IGk7CisgICAgcmV2ZXJiX21vZHVsZV90ICptb2R1bGU7CisgICAgY29uc3QgZWZmZWN0X2Rlc2NyaXB0b3JfdCAqZGVzYzsKKyAgICBpbnQgYXV4ID0gMDsKKyAgICBpbnQgcHJlc2V0ID0gMDsKKworICAgIExPR1YoIkVmZmVjdExpYkNyZWF0ZUVmZmVjdCBzdGFydCIpOworCisgICAgaWYgKHBJbnRlcmZhY2UgPT0gTlVMTCB8fCB1dWlkID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQorCisgICAgZm9yIChpID0gMDsgZ0Rlc2NyaXB0b3JzW2ldICE9IE5VTEw7IGkrKykgeworICAgICAgICBkZXNjID0gZ0Rlc2NyaXB0b3JzW2ldOworICAgICAgICBpZiAobWVtY21wKHV1aWQsICZkZXNjLT51dWlkLCBzaXplb2YoZWZmZWN0X3V1aWRfdCkpCisgICAgICAgICAgICAgICAgPT0gMCkgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoZ0Rlc2NyaXB0b3JzW2ldID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC1FTk9FTlQ7CisgICAgfQorCisgICAgbW9kdWxlID0gbWFsbG9jKHNpemVvZihyZXZlcmJfbW9kdWxlX3QpKTsKKworICAgIG1vZHVsZS0+aXRmZSA9ICZnUmV2ZXJiSW50ZXJmYWNlOworCisgICAgaWYgKG1lbWNtcCgmZGVzYy0+dHlwZSwgU0xfSUlEX1BSRVNFVFJFVkVSQiwgc2l6ZW9mKGVmZmVjdF91dWlkX3QpKSA9PSAwKSB7CisgICAgICAgIHByZXNldCA9IDE7CisgICAgfQorICAgIGlmICgoZGVzYy0+ZmxhZ3MgJiBFRkZFQ1RfRkxBR19UWVBFX01BU0spID09IEVGRkVDVF9GTEFHX1RZUEVfQVVYSUxJQVJZKSB7CisgICAgICAgIGF1eCA9IDE7CisgICAgfQorICAgIHJldCA9IFJldmVyYl9Jbml0KG1vZHVsZSwgYXV4LCBwcmVzZXQpOworICAgIGlmIChyZXQgPCAwKSB7CisgICAgICAgIExPR1coIkVmZmVjdExpYkNyZWF0ZUVmZmVjdCgpIGluaXQgZmFpbGVkIik7CisgICAgICAgIGZyZWUobW9kdWxlKTsKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisKKyAgICAqcEludGVyZmFjZSA9IChlZmZlY3RfaW50ZXJmYWNlX3QpIG1vZHVsZTsKKworICAgIExPR1YoIkVmZmVjdExpYkNyZWF0ZUVmZmVjdCAlcCAsc2l6ZSAlZCIsIG1vZHVsZSwgc2l6ZW9mKHJldmVyYl9tb2R1bGVfdCkpOworCisgICAgcmV0dXJuIDA7Cit9CisKK2ludCBFZmZlY3RSZWxlYXNlKGVmZmVjdF9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpIHsKKyAgICByZXZlcmJfbW9kdWxlX3QgKnBSdmJNb2R1bGUgPSAocmV2ZXJiX21vZHVsZV90ICopaW50ZXJmYWNlOworCisgICAgTE9HVigiRWZmZWN0TGliUmVsZWFzZUVmZmVjdCAlcCIsIGludGVyZmFjZSk7CisgICAgaWYgKGludGVyZmFjZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKworICAgIGZyZWUocFJ2Yk1vZHVsZSk7CisgICAgcmV0dXJuIDA7Cit9CisKKworLyotLS0gRWZmZWN0IENvbnRyb2wgSW50ZXJmYWNlIEltcGxlbWVudGF0aW9uIC0tLSovCisKK3N0YXRpYyBpbnQgUmV2ZXJiX1Byb2Nlc3MoZWZmZWN0X2ludGVyZmFjZV90IHNlbGYsIGF1ZGlvX2J1ZmZlcl90ICppbkJ1ZmZlciwgYXVkaW9fYnVmZmVyX3QgKm91dEJ1ZmZlcikgeworICAgIHJldmVyYl9vYmplY3RfdCAqcFJldmVyYjsKKyAgICBpbnQxNl90ICpwU3JjLCAqcERzdDsKKyAgICByZXZlcmJfbW9kdWxlX3QgKnBSdmJNb2R1bGUgPSAocmV2ZXJiX21vZHVsZV90ICopc2VsZjsKKworICAgIGlmIChwUnZiTW9kdWxlID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQorCisgICAgaWYgKGluQnVmZmVyID09IE5VTEwgfHwgaW5CdWZmZXItPnJhdyA9PSBOVUxMIHx8CisgICAgICAgIG91dEJ1ZmZlciA9PSBOVUxMIHx8IG91dEJ1ZmZlci0+cmF3ID09IE5VTEwgfHwKKyAgICAgICAgaW5CdWZmZXItPmZyYW1lQ291bnQgIT0gb3V0QnVmZmVyLT5mcmFtZUNvdW50KSB7CisgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKworICAgIHBSZXZlcmIgPSAocmV2ZXJiX29iamVjdF90KikgJnBSdmJNb2R1bGUtPmNvbnRleHQ7CisKKyAgICAvL2lmIGJ5cGFzc2VkIG9yIHRoZSBwcmVzZXQgZm9yY2VzIHRoZSBzaWduYWwgdG8gYmUgY29tcGxldGVseSBkcnkKKyAgICBpZiAocFJldmVyYi0+bV9iQnlwYXNzICE9IDApIHsKKyAgICAgICAgaWYgKGluQnVmZmVyLT5yYXcgIT0gb3V0QnVmZmVyLT5yYXcpIHsKKyAgICAgICAgICAgIGludDE2X3Qgc21wOworICAgICAgICAgICAgcFNyYyA9IGluQnVmZmVyLT5zMTY7CisgICAgICAgICAgICBwRHN0ID0gb3V0QnVmZmVyLT5zMTY7CisgICAgICAgICAgICBzaXplX3QgY291bnQgPSBpbkJ1ZmZlci0+ZnJhbWVDb3VudDsKKyAgICAgICAgICAgIGlmIChwUnZiTW9kdWxlLT5jb25maWcuaW5wdXRDZmcuY2hhbm5lbHMgPT0gcFJ2Yk1vZHVsZS0+Y29uZmlnLm91dHB1dENmZy5jaGFubmVscykgeworICAgICAgICAgICAgICAgIGNvdW50ICo9IDI7CisgICAgICAgICAgICAgICAgd2hpbGUgKGNvdW50LS0pIHsKKyAgICAgICAgICAgICAgICAgICAgKnBEc3QrKyA9ICpwU3JjKys7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB3aGlsZSAoY291bnQtLSkgeworICAgICAgICAgICAgICAgICAgICBzbXAgPSAqcFNyYysrOworICAgICAgICAgICAgICAgICAgICAqcERzdCsrID0gc21wOworICAgICAgICAgICAgICAgICAgICAqcERzdCsrID0gc21wOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAocFJldmVyYi0+bV9uTmV4dFJvb20gIT0gcFJldmVyYi0+bV9uQ3VycmVudFJvb20pIHsKKyAgICAgICAgUmV2ZXJiVXBkYXRlUm9vbShwUmV2ZXJiLCB0cnVlKTsKKyAgICB9CisKKyAgICBwU3JjID0gaW5CdWZmZXItPnMxNjsKKyAgICBwRHN0ID0gb3V0QnVmZmVyLT5zMTY7CisgICAgc2l6ZV90IG51bVNhbXBsZXMgPSBvdXRCdWZmZXItPmZyYW1lQ291bnQ7CisgICAgd2hpbGUgKG51bVNhbXBsZXMpIHsKKyAgICAgICAgdWludDMyX3QgcHJvY2Vzc2VkU2FtcGxlczsKKyAgICAgICAgaWYgKG51bVNhbXBsZXMgPiAodWludDMyX3QpIHBSZXZlcmItPm1fblVwZGF0ZVBlcmlvZEluU2FtcGxlcykgeworICAgICAgICAgICAgcHJvY2Vzc2VkU2FtcGxlcyA9ICh1aW50MzJfdCkgcFJldmVyYi0+bV9uVXBkYXRlUGVyaW9kSW5TYW1wbGVzOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcHJvY2Vzc2VkU2FtcGxlcyA9IG51bVNhbXBsZXM7CisgICAgICAgIH0KKworICAgICAgICAvKiBpbmNyZW1lbnQgdXBkYXRlIGNvdW50ZXIgKi8KKyAgICAgICAgcFJldmVyYi0+bV9uVXBkYXRlQ291bnRlciArPSAoaW50MTZfdCkgcHJvY2Vzc2VkU2FtcGxlczsKKyAgICAgICAgLyogY2hlY2sgaWYgdXBkYXRlIGNvdW50ZXIgbmVlZHMgdG8gYmUgcmVzZXQgKi8KKyAgICAgICAgaWYgKHBSZXZlcmItPm1fblVwZGF0ZUNvdW50ZXIgPj0gcFJldmVyYi0+bV9uVXBkYXRlUGVyaW9kSW5TYW1wbGVzKSB7CisgICAgICAgICAgICAvKiB1cGRhdGUgaW50ZXJ2YWwgaGFzIGVsYXBzZWQsIHNvIHJlc2V0IGNvdW50ZXIgKi8KKyAgICAgICAgICAgIHBSZXZlcmItPm1fblVwZGF0ZUNvdW50ZXIgLT0gcFJldmVyYi0+bV9uVXBkYXRlUGVyaW9kSW5TYW1wbGVzOworICAgICAgICAgICAgUmV2ZXJiVXBkYXRlWGZhZGUocFJldmVyYiwgcFJldmVyYi0+bV9uVXBkYXRlUGVyaW9kSW5TYW1wbGVzKTsKKworICAgICAgICB9IC8qIGVuZCBpZiBtX25VcGRhdGVDb3VudGVyID49IHVwZGF0ZSBpbnRlcnZhbCAqLworCisgICAgICAgIFJldmVyYihwUmV2ZXJiLCBwcm9jZXNzZWRTYW1wbGVzLCBwRHN0LCBwU3JjKTsKKworICAgICAgICBudW1TYW1wbGVzIC09IHByb2Nlc3NlZFNhbXBsZXM7CisgICAgICAgIGlmIChwUmV2ZXJiLT5tX0F1eCkgeworICAgICAgICAgICAgcFNyYyArPSBwcm9jZXNzZWRTYW1wbGVzOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcFNyYyArPSBwcm9jZXNzZWRTYW1wbGVzICogTlVNX09VVFBVVF9DSEFOTkVMUzsKKyAgICAgICAgfQorICAgICAgICBwRHN0ICs9IHByb2Nlc3NlZFNhbXBsZXMgKiBOVU1fT1VUUFVUX0NIQU5ORUxTOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50IFJldmVyYl9Db21tYW5kKGVmZmVjdF9pbnRlcmZhY2VfdCBzZWxmLCBpbnQgY21kQ29kZSwgaW50IGNtZFNpemUsCisgICAgICAgIHZvaWQgKnBDbWREYXRhLCBpbnQgKnJlcGx5U2l6ZSwgdm9pZCAqcFJlcGx5RGF0YSkgeworICAgIHJldmVyYl9tb2R1bGVfdCAqcFJ2Yk1vZHVsZSA9IChyZXZlcmJfbW9kdWxlX3QgKikgc2VsZjsKKyAgICByZXZlcmJfb2JqZWN0X3QgKnBSZXZlcmI7CisgICAgaW50IHJldHNpemU7CisKKyAgICBpZiAocFJ2Yk1vZHVsZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKworICAgIHBSZXZlcmIgPSAocmV2ZXJiX29iamVjdF90KikgJnBSdmJNb2R1bGUtPmNvbnRleHQ7CisKKyAgICBMT0dWKCJSZXZlcmJfQ29tbWFuZCBjb21tYW5kICVkIGNtZFNpemUgJWQiLGNtZENvZGUsIGNtZFNpemUpOworCisgICAgc3dpdGNoIChjbWRDb2RlKSB7CisgICAgY2FzZSBFRkZFQ1RfQ01EX0lOSVQ6CisgICAgICAgIGlmIChwUmVwbHlEYXRhID09IE5VTEwgfHwgKnJlcGx5U2l6ZSAhPSBzaXplb2YoaW50KSkgeworICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgICAgIH0KKyAgICAgICAgKihpbnQgKikgcFJlcGx5RGF0YSA9IFJldmVyYl9Jbml0KHBSdmJNb2R1bGUsIHBSZXZlcmItPm1fQXV4LCBwUmV2ZXJiLT5tX1ByZXNldCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRUZGRUNUX0NNRF9DT05GSUdVUkU6CisgICAgICAgIGlmIChwQ21kRGF0YSA9PSBOVUxMIHx8IGNtZFNpemUgIT0gc2l6ZW9mKGVmZmVjdF9jb25maWdfdCkKKyAgICAgICAgICAgICAgICB8fCBwUmVwbHlEYXRhID09IE5VTEwgfHwgKnJlcGx5U2l6ZSAhPSBzaXplb2YoaW50KSkgeworICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgICAgIH0KKyAgICAgICAgKihpbnQgKikgcFJlcGx5RGF0YSA9IFJldmVyYl9Db25maWd1cmUocFJ2Yk1vZHVsZSwKKyAgICAgICAgICAgICAgICAoZWZmZWN0X2NvbmZpZ190ICopcENtZERhdGEsIGZhbHNlKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFRkZFQ1RfQ01EX1JFU0VUOgorICAgICAgICBSZXZlcmJfUmVzZXQocFJldmVyYiwgZmFsc2UpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEVGRkVDVF9DTURfR0VUX1BBUkFNOgorICAgICAgICBMT0dWKCJSZXZlcmJfQ29tbWFuZCBFRkZFQ1RfQ01EX0dFVF9QQVJBTSBwQ21kRGF0YSAlcCwgKnJlcGx5U2l6ZSAlZCwgcFJlcGx5RGF0YTogJXAiLHBDbWREYXRhLCAqcmVwbHlTaXplLCBwUmVwbHlEYXRhKTsKKworICAgICAgICBpZiAocENtZERhdGEgPT0gTlVMTCB8fCBjbWRTaXplIDwgKGludCkoc2l6ZW9mKGVmZmVjdF9wYXJhbV90KSArIHNpemVvZihpbnQzMl90KSkgfHwKKyAgICAgICAgICAgIHBSZXBseURhdGEgPT0gTlVMTCB8fCAqcmVwbHlTaXplIDwgKGludCkgc2l6ZW9mKGVmZmVjdF9wYXJhbV90KSkgeworICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgICAgIH0KKyAgICAgICAgZWZmZWN0X3BhcmFtX3QgKnJlcCA9IChlZmZlY3RfcGFyYW1fdCAqKSBwUmVwbHlEYXRhOworICAgICAgICBtZW1jcHkocFJlcGx5RGF0YSwgcENtZERhdGEsIHNpemVvZihlZmZlY3RfcGFyYW1fdCkgKyBzaXplb2YoaW50MzJfdCkpOworICAgICAgICBMT0dWKCJSZXZlcmJfQ29tbWFuZCBFRkZFQ1RfQ01EX0dFVF9QQVJBTSBwYXJhbSAlZCwgcmVwbHlTaXplICVkIiwqKGludDMyX3QgKilyZXAtPmRhdGEsIHJlcC0+dnNpemUpOworICAgICAgICByZXAtPnN0YXR1cyA9IFJldmVyYl9nZXRQYXJhbWV0ZXIocFJldmVyYiwgKihpbnQzMl90ICopcmVwLT5kYXRhLCAmcmVwLT52c2l6ZSwKKyAgICAgICAgICAgICAgICByZXAtPmRhdGEgKyBzaXplb2YoaW50MzJfdCkpOworICAgICAgICAqcmVwbHlTaXplID0gc2l6ZW9mKGVmZmVjdF9wYXJhbV90KSArIHNpemVvZihpbnQzMl90KSArIHJlcC0+dnNpemU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRUZGRUNUX0NNRF9TRVRfUEFSQU06CisgICAgICAgIExPR1YoIlJldmVyYl9Db21tYW5kIEVGRkVDVF9DTURfU0VUX1BBUkFNIGNtZFNpemUgJWQgcENtZERhdGEgJXAsICpyZXBseVNpemUgJWQsIHBSZXBseURhdGEgJXAiLAorICAgICAgICAgICAgICAgIGNtZFNpemUsIHBDbWREYXRhLCAqcmVwbHlTaXplLCBwUmVwbHlEYXRhKTsKKyAgICAgICAgaWYgKHBDbWREYXRhID09IE5VTEwgfHwgKGNtZFNpemUgPCAoaW50KShzaXplb2YoZWZmZWN0X3BhcmFtX3QpICsgc2l6ZW9mKGludDMyX3QpKSkKKyAgICAgICAgICAgICAgICB8fCBwUmVwbHlEYXRhID09IE5VTEwgfHwgKnJlcGx5U2l6ZSAhPSAoaW50KXNpemVvZihpbnQzMl90KSkgeworICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgICAgIH0KKyAgICAgICAgZWZmZWN0X3BhcmFtX3QgKmNtZCA9IChlZmZlY3RfcGFyYW1fdCAqKSBwQ21kRGF0YTsKKyAgICAgICAgKihpbnQgKilwUmVwbHlEYXRhID0gUmV2ZXJiX3NldFBhcmFtZXRlcihwUmV2ZXJiLCAqKGludDMyX3QgKiljbWQtPmRhdGEsCisgICAgICAgICAgICAgICAgY21kLT52c2l6ZSwgY21kLT5kYXRhICsgc2l6ZW9mKGludDMyX3QpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFRkZFQ1RfQ01EX0VOQUJMRToKKyAgICBjYXNlIEVGRkVDVF9DTURfRElTQUJMRToKKyAgICAgICAgaWYgKHBSZXBseURhdGEgPT0gTlVMTCB8fCAqcmVwbHlTaXplICE9IHNpemVvZihpbnQpKSB7CisgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICAgICAgfQorICAgICAgICAqKGludCAqKXBSZXBseURhdGEgPSAwOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEVGRkVDVF9DTURfU0VUX0RFVklDRToKKyAgICAgICAgaWYgKHBDbWREYXRhID09IE5VTEwgfHwgY21kU2l6ZSAhPSAoaW50KXNpemVvZih1aW50MzJfdCkpIHsKKyAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgICAgICB9CisgICAgICAgIExPR1YoIlJldmVyYl9Db21tYW5kIEVGRkVDVF9DTURfU0VUX0RFVklDRTogMHglMDh4IiwgKih1aW50MzJfdCAqKXBDbWREYXRhKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFRkZFQ1RfQ01EX1NFVF9WT0xVTUU6IHsKKyAgICAgICAgLy8gYXVkaW8gb3V0cHV0IGlzIGFsd2F5cyBzdGVyZW8gPT4gMiBjaGFubmVsIHZvbHVtZXMKKyAgICAgICAgaWYgKHBDbWREYXRhID09IE5VTEwgfHwgY21kU2l6ZSAhPSAoaW50KXNpemVvZih1aW50MzJfdCkgKiAyKSB7CisgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICAgICAgfQorICAgICAgICBmbG9hdCBsZWZ0ID0gKGZsb2F0KSgqKHVpbnQzMl90ICopcENtZERhdGEpIC8gKDEgPDwgMjQpOworICAgICAgICBmbG9hdCByaWdodCA9IChmbG9hdCkoKigodWludDMyX3QgKilwQ21kRGF0YSArIDEpKSAvICgxIDw8IDI0KTsKKyAgICAgICAgTE9HVigiUmV2ZXJiX0NvbW1hbmQgRUZGRUNUX0NNRF9TRVRfVk9MVU1FOiBsZWZ0ICVmLCByaWdodCAlZiAiLCBsZWZ0LCByaWdodCk7CisgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgY2FzZSBFRkZFQ1RfQ01EX1NFVF9BVURJT19NT0RFOgorICAgICAgICBpZiAocENtZERhdGEgPT0gTlVMTCB8fCBjbWRTaXplICE9IChpbnQpc2l6ZW9mKHVpbnQzMl90KSkgeworICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgICAgIH0KKyAgICAgICAgTE9HVigiUmV2ZXJiX0NvbW1hbmQgRUZGRUNUX0NNRF9TRVRfQVVESU9fTU9ERTogJWQiLCAqKHVpbnQzMl90ICopcENtZERhdGEpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBMT0dXKCJSZXZlcmJfQ29tbWFuZCBpbnZhbGlkIGNvbW1hbmQgJWQiLGNtZENvZGUpOworICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisKKyAgICByZXR1cm4gMDsKK30KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFJldmVyYiBpbnRlcm5hbCBmdW5jdGlvbnMKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFJldmVyYl9Jbml0KCkKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUHVycG9zZToKKyAqIEluaXRpYWxpemUgcmV2ZXJiIGNvbnRleHQgYW5kIGFwcGx5IGRlZmF1bHQgcGFyYW1ldGVycworICoKKyAqIElucHV0czoKKyAqICBwUnZiTW9kdWxlICAgIC0gcG9pbnRlciB0byByZXZlcmIgZWZmZWN0IG1vZHVsZQorICogIGF1eCAgICAgICAgICAgLSBpbmRpY2F0ZXMgaWYgdGhlIHJldmVyYiBpcyB1c2VkIGFzIGF1eGlsaWFyeSAoMSkgb3IgaW5zZXJ0ICgwKQorICogIHByZXNldCAgICAgICAgLSBpbmRpY2F0ZXMgaWYgdGhlIHJldmVyYiBpcyB1c2VkIGluIHByZXNldCAoMSkgb3IgZW52aXJvbm1lbnRhbCAoMCkgbW9kZQorICoKKyAqIE91dHB1dHM6CisgKgorICogU2lkZSBFZmZlY3RzOgorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKK2ludCBSZXZlcmJfSW5pdChyZXZlcmJfbW9kdWxlX3QgKnBSdmJNb2R1bGUsIGludCBhdXgsIGludCBwcmVzZXQpIHsKKyAgICBpbnQgcmV0OworCisgICAgTE9HVigiUmV2ZXJiX0luaXQgbW9kdWxlICVwLCBhdXg6ICVkLCBwcmVzZXQ6ICVkIiwgcFJ2Yk1vZHVsZSxhdXgsIHByZXNldCk7CisKKyAgICBtZW1zZXQoJnBSdmJNb2R1bGUtPmNvbnRleHQsIDAsIHNpemVvZihyZXZlcmJfb2JqZWN0X3QpKTsKKworICAgIHBSdmJNb2R1bGUtPmNvbnRleHQubV9BdXggPSAodWludDE2X3QpYXV4OworICAgIHBSdmJNb2R1bGUtPmNvbnRleHQubV9QcmVzZXQgPSAodWludDE2X3QpcHJlc2V0OworCisgICAgcFJ2Yk1vZHVsZS0+Y29uZmlnLmlucHV0Q2ZnLnNhbXBsaW5nUmF0ZSA9IDQ0MTAwOworICAgIGlmIChhdXgpIHsKKyAgICAgICAgcFJ2Yk1vZHVsZS0+Y29uZmlnLmlucHV0Q2ZnLmNoYW5uZWxzID0gQ0hBTk5FTF9NT05POworICAgIH0gZWxzZSB7CisgICAgICAgIHBSdmJNb2R1bGUtPmNvbmZpZy5pbnB1dENmZy5jaGFubmVscyA9IENIQU5ORUxfU1RFUkVPOworICAgIH0KKyAgICBwUnZiTW9kdWxlLT5jb25maWcuaW5wdXRDZmcuZm9ybWF0ID0gU0FNUExFX0ZPUk1BVF9QQ01fUzE1OworICAgIHBSdmJNb2R1bGUtPmNvbmZpZy5pbnB1dENmZy5idWZmZXJQcm92aWRlci5nZXRCdWZmZXIgPSBOVUxMOworICAgIHBSdmJNb2R1bGUtPmNvbmZpZy5pbnB1dENmZy5idWZmZXJQcm92aWRlci5yZWxlYXNlQnVmZmVyID0gTlVMTDsKKyAgICBwUnZiTW9kdWxlLT5jb25maWcuaW5wdXRDZmcuYnVmZmVyUHJvdmlkZXIuY29va2llID0gTlVMTDsKKyAgICBwUnZiTW9kdWxlLT5jb25maWcuaW5wdXRDZmcuYWNjZXNzTW9kZSA9IEVGRkVDVF9CVUZGRVJfQUNDRVNTX1JFQUQ7CisgICAgcFJ2Yk1vZHVsZS0+Y29uZmlnLmlucHV0Q2ZnLm1hc2sgPSBFRkZFQ1RfQ09ORklHX0FMTDsKKyAgICBwUnZiTW9kdWxlLT5jb25maWcub3V0cHV0Q2ZnLnNhbXBsaW5nUmF0ZSA9IDQ0MTAwOworICAgIHBSdmJNb2R1bGUtPmNvbmZpZy5vdXRwdXRDZmcuY2hhbm5lbHMgPSBDSEFOTkVMX1NURVJFTzsKKyAgICBwUnZiTW9kdWxlLT5jb25maWcub3V0cHV0Q2ZnLmZvcm1hdCA9IFNBTVBMRV9GT1JNQVRfUENNX1MxNTsKKyAgICBwUnZiTW9kdWxlLT5jb25maWcub3V0cHV0Q2ZnLmJ1ZmZlclByb3ZpZGVyLmdldEJ1ZmZlciA9IE5VTEw7CisgICAgcFJ2Yk1vZHVsZS0+Y29uZmlnLm91dHB1dENmZy5idWZmZXJQcm92aWRlci5yZWxlYXNlQnVmZmVyID0gTlVMTDsKKyAgICBwUnZiTW9kdWxlLT5jb25maWcub3V0cHV0Q2ZnLmJ1ZmZlclByb3ZpZGVyLmNvb2tpZSA9IE5VTEw7CisgICAgcFJ2Yk1vZHVsZS0+Y29uZmlnLm91dHB1dENmZy5hY2Nlc3NNb2RlID0gRUZGRUNUX0JVRkZFUl9BQ0NFU1NfQUNDVU1VTEFURTsKKyAgICBwUnZiTW9kdWxlLT5jb25maWcub3V0cHV0Q2ZnLm1hc2sgPSBFRkZFQ1RfQ09ORklHX0FMTDsKKworICAgIHJldCA9IFJldmVyYl9Db25maWd1cmUocFJ2Yk1vZHVsZSwgJnBSdmJNb2R1bGUtPmNvbmZpZywgdHJ1ZSk7CisgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgTE9HVigiUmV2ZXJiX0luaXQgZXJyb3IgJWQgb24gbW9kdWxlICVwIiwgcmV0LCBwUnZiTW9kdWxlKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmV0OworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFJldmVyYl9Jbml0KCkKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUHVycG9zZToKKyAqICBTZXQgaW5wdXQgYW5kIG91dHB1dCBhdWRpbyBjb25maWd1cmF0aW9uLgorICoKKyAqIElucHV0czoKKyAqICBwUnZiTW9kdWxlICAgIC0gcG9pbnRlciB0byByZXZlcmIgZWZmZWN0IG1vZHVsZQorICogIHBDb25maWcgICAgICAgLSBwb2ludGVyIHRvIGVmZmVjdF9jb25maWdfdCBzdHJ1Y3R1cmUgY29udGFpbmluZyBpbnB1dAorICogICAgICAgICAgICAgIGFuZCBvdXRwdXQgYXVkaW8gcGFyYW1ldGVycyBjb25maWd1cmF0aW9uCisgKiAgaW5pdCAgICAgICAgICAtIHRydWUgaWYgY2FsbGVkIGZyb20gaW5pdCBmdW5jdGlvbgorICogT3V0cHV0czoKKyAqCisgKiBTaWRlIEVmZmVjdHM6CisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworaW50IFJldmVyYl9Db25maWd1cmUocmV2ZXJiX21vZHVsZV90ICpwUnZiTW9kdWxlLCBlZmZlY3RfY29uZmlnX3QgKnBDb25maWcsCisgICAgICAgIGJvb2wgaW5pdCkgeworICAgIHJldmVyYl9vYmplY3RfdCAqcFJldmVyYiA9ICZwUnZiTW9kdWxlLT5jb250ZXh0OworICAgIGludCBidWZmZXJTaXplSW5TYW1wbGVzOworICAgIGludCB1cGRhdGVQZXJpb2RJblNhbXBsZXM7CisgICAgaW50IHhmYWRlUGVyaW9kSW5TYW1wbGVzOworCisgICAgLy8gQ2hlY2sgY29uZmlndXJhdGlvbiBjb21wYXRpYmlsaXR5IHdpdGggYnVpbGQgb3B0aW9ucworICAgIGlmIChwQ29uZmlnLT5pbnB1dENmZy5zYW1wbGluZ1JhdGUKKyAgICAgICAgIT0gcENvbmZpZy0+b3V0cHV0Q2ZnLnNhbXBsaW5nUmF0ZQorICAgICAgICB8fCBwQ29uZmlnLT5vdXRwdXRDZmcuY2hhbm5lbHMgIT0gT1VUUFVUX0NIQU5ORUxTCisgICAgICAgIHx8IHBDb25maWctPmlucHV0Q2ZnLmZvcm1hdCAhPSBTQU1QTEVfRk9STUFUX1BDTV9TMTUKKyAgICAgICAgfHwgcENvbmZpZy0+b3V0cHV0Q2ZnLmZvcm1hdCAhPSBTQU1QTEVfRk9STUFUX1BDTV9TMTUpIHsKKyAgICAgICAgTE9HVigiUmV2ZXJiX0NvbmZpZ3VyZSBpbnZhbGlkIGNvbmZpZyIpOworICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisgICAgaWYgKChwUmV2ZXJiLT5tX0F1eCAmJiAocENvbmZpZy0+aW5wdXRDZmcuY2hhbm5lbHMgIT0gQ0hBTk5FTF9NT05PKSkgfHwKKyAgICAgICAgKCFwUmV2ZXJiLT5tX0F1eCAmJiAocENvbmZpZy0+aW5wdXRDZmcuY2hhbm5lbHMgIT0gQ0hBTk5FTF9TVEVSRU8pKSkgeworICAgICAgICBMT0dWKCJSZXZlcmJfQ29uZmlndXJlIGludmFsaWQgY29uZmlnIik7CisgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKworICAgIG1lbWNweSgmcFJ2Yk1vZHVsZS0+Y29uZmlnLCBwQ29uZmlnLCBzaXplb2YoZWZmZWN0X2NvbmZpZ190KSk7CisKKyAgICBwUmV2ZXJiLT5tX25TYW1wbGluZ1JhdGUgPSBwUnZiTW9kdWxlLT5jb25maWcub3V0cHV0Q2ZnLnNhbXBsaW5nUmF0ZTsKKworICAgIHN3aXRjaCAocFJldmVyYi0+bV9uU2FtcGxpbmdSYXRlKSB7CisgICAgY2FzZSA4MDAwOgorICAgICAgICBwUmV2ZXJiLT5tX25VcGRhdGVQZXJpb2RJbkJpdHMgPSA1OworICAgICAgICBidWZmZXJTaXplSW5TYW1wbGVzID0gNDA5NjsKKyAgICAgICAgcFJldmVyYi0+bV9uQ29zV1RfNUtIeiA9IC0yMzE3MDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAxNjAwMDoKKyAgICAgICAgcFJldmVyYi0+bV9uVXBkYXRlUGVyaW9kSW5CaXRzID0gNjsKKyAgICAgICAgYnVmZmVyU2l6ZUluU2FtcGxlcyA9IDgxOTI7CisgICAgICAgIHBSZXZlcmItPm1fbkNvc1dUXzVLSHogPSAtMTI1NDA7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgMjIwNTA6CisgICAgICAgIHBSZXZlcmItPm1fblVwZGF0ZVBlcmlvZEluQml0cyA9IDc7CisgICAgICAgIGJ1ZmZlclNpemVJblNhbXBsZXMgPSA4MTkyOworICAgICAgICBwUmV2ZXJiLT5tX25Db3NXVF81S0h6ID0gNDc2ODsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSAzMjAwMDoKKyAgICAgICAgcFJldmVyYi0+bV9uVXBkYXRlUGVyaW9kSW5CaXRzID0gNzsKKyAgICAgICAgYnVmZmVyU2l6ZUluU2FtcGxlcyA9IDE2Mzg0OworICAgICAgICBwUmV2ZXJiLT5tX25Db3NXVF81S0h6ID0gMTgyMDU7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgNDQxMDA6CisgICAgICAgIHBSZXZlcmItPm1fblVwZGF0ZVBlcmlvZEluQml0cyA9IDg7CisgICAgICAgIGJ1ZmZlclNpemVJblNhbXBsZXMgPSAxNjM4NDsKKyAgICAgICAgcFJldmVyYi0+bV9uQ29zV1RfNUtIeiA9IDI0Nzk5OworICAgICAgICBicmVhazsKKyAgICBjYXNlIDQ4MDAwOgorICAgICAgICBwUmV2ZXJiLT5tX25VcGRhdGVQZXJpb2RJbkJpdHMgPSA4OworICAgICAgICBidWZmZXJTaXplSW5TYW1wbGVzID0gMTYzODQ7CisgICAgICAgIHBSZXZlcmItPm1fbkNvc1dUXzVLSHogPSAyNTk5NzsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgTE9HVigiUmV2ZXJiX0NvbmZpZ3VyZSBpbnZhbGlkIHNhbXBsaW5nIHJhdGUgJWQiLCBwUmV2ZXJiLT5tX25TYW1wbGluZ1JhdGUpOworICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisKKyAgICAvLyBEZWZpbmUgYSBtYXNrIGZvciBjaXJjdWxhciBhZGRyZXNzaW5nLCBzbyB0aGF0IGFycmF5IGluZGV4CisgICAgLy8gY2FuIHdyYXBhcm91bmQgYW5kIHN0YXkgaW4gYXJyYXkgYm91bmRhcnkgb2YgMCwgMSwgLi4uLCAoYnVmZmVyIHNpemUgLTEpCisgICAgLy8gVGhlIGJ1ZmZlciBzaXplIE1VU1QgYmUgYSBwb3dlciBvZiB0d28KKyAgICBwUmV2ZXJiLT5tX25CdWZmZXJNYXNrID0gKGludDMyX3QpIChidWZmZXJTaXplSW5TYW1wbGVzIC0gMSk7CisgICAgLyogcmV2ZXJiIHBhcmFtZXRlcnMgYXJlIHVwZGF0ZWQgZXZlcnkgMl4ocFJldmVyYi0+bV9uVXBkYXRlUGVyaW9kSW5CaXRzKSBzYW1wbGVzICovCisgICAgdXBkYXRlUGVyaW9kSW5TYW1wbGVzID0gKGludDMyX3QpICgweDFMIDw8IHBSZXZlcmItPm1fblVwZGF0ZVBlcmlvZEluQml0cyk7CisgICAgLyoKKyAgICAgY2FsY3VsYXRlIHRoZSB1cGRhdGUgY291bnRlciBieSBiaXR3aXNlIEFORElORyB3aXRoIHRoaXMgdmFsdWUgdG8KKyAgICAgZ2VuZXJhdGUgYSAyXm4gbW9kdWxvIHZhbHVlCisgICAgICovCisgICAgcFJldmVyYi0+bV9uVXBkYXRlUGVyaW9kSW5TYW1wbGVzID0gKGludDMyX3QpIHVwZGF0ZVBlcmlvZEluU2FtcGxlczsKKworICAgIHhmYWRlUGVyaW9kSW5TYW1wbGVzID0gKGludDMyX3QpIChSRVZFUkJfWEZBREVfUEVSSU9EX0lOX1NFQ09ORFMKKyAgICAgICAgICAgICogKGRvdWJsZSkgcFJldmVyYi0+bV9uU2FtcGxpbmdSYXRlKTsKKworICAgIC8vIHNldCB4ZmFkZSBwYXJhbWV0ZXJzCisgICAgcFJldmVyYi0+bV9uUGhhc2VJbmNyZW1lbnQKKyAgICAgICAgICAgID0gKGludDE2X3QpICg2NTUzNiAvICgoaW50MTZfdCkgeGZhZGVQZXJpb2RJblNhbXBsZXMKKyAgICAgICAgICAgICAgICAgICAgLyAoaW50MTZfdCkgdXBkYXRlUGVyaW9kSW5TYW1wbGVzKSk7CisKKyAgICBpZiAoaW5pdCkgeworICAgICAgICBSZXZlcmJSZWFkSW5QcmVzZXRzKHBSZXZlcmIpOworCisgICAgICAgIC8vIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMsIGFsbG93IG5vaXNlIGdlbmVyYXRvcgorICAgICAgICBwUmV2ZXJiLT5tX2JVc2VOb2lzZSA9IHRydWU7CisKKyAgICAgICAgLy8gZm9yIGRlYnVnZ2luZyBwdXJwb3NlcywgYWxsb3cgYnlwYXNzCisgICAgICAgIHBSZXZlcmItPm1fYkJ5cGFzcyA9IDA7CisKKyAgICAgICAgcFJldmVyYi0+bV9uTmV4dFJvb20gPSAxOworCisgICAgICAgIHBSZXZlcmItPm1fbk5vaXNlID0gKGludDE2X3QpIDB4QUJDRDsKKyAgICB9CisKKyAgICBSZXZlcmJfUmVzZXQocFJldmVyYiwgaW5pdCk7CisKKyAgICByZXR1cm4gMDsKK30KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBSZXZlcmJfUmVzZXQoKQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBQdXJwb3NlOgorICogIFJlc2V0IGludGVybmFsIHN0YXRlcyBhbmQgY2xlYXIgZGVsYXkgbGluZXMuCisgKgorICogSW5wdXRzOgorICogIHBSZXZlcmIgICAgLSBwb2ludGVyIHRvIHJldmVyYiBjb250ZXh0CisgKiAgaW5pdCAgICAgICAtIHRydWUgaWYgY2FsbGVkIGZyb20gaW5pdCBmdW5jdGlvbgorICoKKyAqIE91dHB1dHM6CisgKgorICogU2lkZSBFZmZlY3RzOgorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKK3ZvaWQgUmV2ZXJiX1Jlc2V0KHJldmVyYl9vYmplY3RfdCAqcFJldmVyYiwgYm9vbCBpbml0KSB7CisgICAgaW50IGJ1ZmZlclNpemVJblNhbXBsZXMgPSAoaW50MzJfdCkgKHBSZXZlcmItPm1fbkJ1ZmZlck1hc2sgKyAxKTsKKyAgICBpbnQgbWF4QXBTYW1wbGVzOworICAgIGludCBtYXhEZWxheVNhbXBsZXM7CisgICAgaW50IG1heEVhcmx5U2FtcGxlczsKKyAgICBpbnQgYXAxSW47CisgICAgaW50IGRlbGF5MEluOworICAgIGludCBkZWxheTFJbjsKKyAgICBpbnQzMl90IGk7CisgICAgdWludDE2X3Qgbk9mZnNldDsKKworICAgIG1heEFwU2FtcGxlcyA9ICgoaW50MzJfdCkgKE1BWF9BUF9USU1FICogcFJldmVyYi0+bV9uU2FtcGxpbmdSYXRlKSA+PiAxNik7CisgICAgbWF4RGVsYXlTYW1wbGVzID0gKChpbnQzMl90KSAoTUFYX0RFTEFZX1RJTUUgKiBwUmV2ZXJiLT5tX25TYW1wbGluZ1JhdGUpCisgICAgICAgICAgICA+PiAxNik7CisgICAgbWF4RWFybHlTYW1wbGVzID0gKChpbnQzMl90KSAoTUFYX0VBUkxZX1RJTUUgKiBwUmV2ZXJiLT5tX25TYW1wbGluZ1JhdGUpCisgICAgICAgICAgICA+PiAxNik7CisKKyAgICBhcDFJbiA9IChBUDBfSU4gKyBtYXhBcFNhbXBsZXMgKyBHVUFSRCk7CisgICAgZGVsYXkwSW4gPSAoYXAxSW4gKyBtYXhBcFNhbXBsZXMgKyBHVUFSRCk7CisgICAgZGVsYXkxSW4gPSAoZGVsYXkwSW4gKyBtYXhEZWxheVNhbXBsZXMgKyBHVUFSRCk7CisgICAgLy8gRGVmaW5lIHRoZSBtYXggb2Zmc2V0cyBmb3IgdGhlIGVuZCBwb2ludHMgb2YgZWFjaCBzZWN0aW9uCisgICAgLy8gaS5lLiwgd2UgZG9uJ3QgZXhwZWN0IGEgZ2l2ZW4gc2VjdGlvbidzIHRhcHMgdG8gZ28gYmV5b25kCisgICAgLy8gdGhlIGZvbGxvd2luZyBsaW1pdHMKKworICAgIHBSZXZlcmItPm1fbkVhcmx5MGluID0gKGRlbGF5MUluICsgbWF4RGVsYXlTYW1wbGVzICsgR1VBUkQpOworICAgIHBSZXZlcmItPm1fbkVhcmx5MWluID0gKHBSZXZlcmItPm1fbkVhcmx5MGluICsgbWF4RWFybHlTYW1wbGVzICsgR1VBUkQpOworCisgICAgcFJldmVyYi0+bV9zQXAwLm1fekFwSW4gPSBBUDBfSU47CisKKyAgICBwUmV2ZXJiLT5tX3pEMEluID0gZGVsYXkwSW47CisKKyAgICBwUmV2ZXJiLT5tX3NBcDEubV96QXBJbiA9IGFwMUluOworCisgICAgcFJldmVyYi0+bV96RDFJbiA9IGRlbGF5MUluOworCisgICAgcFJldmVyYi0+bV96T3V0THBmTCA9IDA7CisgICAgcFJldmVyYi0+bV96T3V0THBmUiA9IDA7CisKKyAgICBwUmV2ZXJiLT5tX25SZXZGYmtSID0gMDsKKyAgICBwUmV2ZXJiLT5tX25SZXZGYmtMID0gMDsKKworICAgIC8vIHNldCBiYXNlIGluZGV4IGludG8gY2lyY3VsYXIgYnVmZmVyCisgICAgcFJldmVyYi0+bV9uQmFzZUluZGV4ID0gMDsKKworICAgIC8vIGNsZWFyIHRoZSByZXZlcmIgZGVsYXkgbGluZQorICAgIGZvciAoaSA9IDA7IGkgPCBidWZmZXJTaXplSW5TYW1wbGVzOyBpKyspIHsKKyAgICAgICAgcFJldmVyYi0+bV9uRGVsYXlMaW5lW2ldID0gMDsKKyAgICB9CisKKyAgICBSZXZlcmJVcGRhdGVSb29tKHBSZXZlcmIsIGluaXQpOworCisgICAgcFJldmVyYi0+bV9uVXBkYXRlQ291bnRlciA9IDA7CisKKyAgICBwUmV2ZXJiLT5tX25QaGFzZSA9IC0zMjc2ODsKKworICAgIHBSZXZlcmItPm1fblNpbiA9IDA7CisgICAgcFJldmVyYi0+bV9uQ29zID0gMDsKKyAgICBwUmV2ZXJiLT5tX25TaW5JbmNyZW1lbnQgPSAwOworICAgIHBSZXZlcmItPm1fbkNvc0luY3JlbWVudCA9IDA7CisKKyAgICAvLyBzZXQgZGVsYXkgdGFwIGxlbmd0aHMKKyAgICBuT2Zmc2V0ID0gUmV2ZXJiQ2FsY3VsYXRlTm9pc2UocFJldmVyYik7CisKKyAgICBwUmV2ZXJiLT5tX3pEMUNyb3NzID0gcFJldmVyYi0+bV9uRGVsYXkxT3V0IC0gcFJldmVyYi0+bV9uTWF4RXhjdXJzaW9uCisgICAgICAgICAgICArIG5PZmZzZXQ7CisKKyAgICBuT2Zmc2V0ID0gUmV2ZXJiQ2FsY3VsYXRlTm9pc2UocFJldmVyYik7CisKKyAgICBwUmV2ZXJiLT5tX3pEMENyb3NzID0gcFJldmVyYi0+bV9uRGVsYXkwT3V0IC0gcFJldmVyYi0+bV9uTWF4RXhjdXJzaW9uCisgICAgICAgICAgICAtIG5PZmZzZXQ7CisKKyAgICBuT2Zmc2V0ID0gUmV2ZXJiQ2FsY3VsYXRlTm9pc2UocFJldmVyYik7CisKKyAgICBwUmV2ZXJiLT5tX3pEMFNlbGYgPSBwUmV2ZXJiLT5tX25EZWxheTBPdXQgLSBwUmV2ZXJiLT5tX25NYXhFeGN1cnNpb24KKyAgICAgICAgICAgIC0gbk9mZnNldDsKKworICAgIG5PZmZzZXQgPSBSZXZlcmJDYWxjdWxhdGVOb2lzZShwUmV2ZXJiKTsKKworICAgIHBSZXZlcmItPm1fekQxU2VsZiA9IHBSZXZlcmItPm1fbkRlbGF5MU91dCAtIHBSZXZlcmItPm1fbk1heEV4Y3Vyc2lvbgorICAgICAgICAgICAgKyBuT2Zmc2V0OworfQorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFJldmVyYl9nZXRQYXJhbWV0ZXIoKQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBQdXJwb3NlOgorICogR2V0IGEgUmV2ZXJiIHBhcmFtZXRlcgorICoKKyAqIElucHV0czoKKyAqICBwUmV2ZXJiICAgICAgIC0gaGFuZGxlIHRvIGluc3RhbmNlIGRhdGEKKyAqICBwYXJhbSAgICAgICAgIC0gcGFyYW1ldGVyCisgKiAgcFZhbHVlICAgICAgICAtIHBvaW50ZXIgdG8gdmFyaWFibGUgdG8gaG9sZCByZXRyaWV2ZWQgdmFsdWUKKyAqICBwU2l6ZSAgICAgICAgIC0gcG9pbnRlciB0byB2YWx1ZSBzaXplOiBtYXhpbXVtIHNpemUgYXMgaW5wdXQKKyAqCisgKiBPdXRwdXRzOgorICogICpwVmFsdWUgdXBkYXRlZCB3aXRoIHBhcmFtZXRlciB2YWx1ZQorICogICpwU2l6ZSB1cGRhdGVkIHdpdGggYWN0dWFsIHZhbHVlIHNpemUKKyAqCisgKgorICogU2lkZSBFZmZlY3RzOgorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCitpbnQgUmV2ZXJiX2dldFBhcmFtZXRlcihyZXZlcmJfb2JqZWN0X3QgKnBSZXZlcmIsIGludDMyX3QgcGFyYW0sIHNpemVfdCAqcFNpemUsCisgICAgICAgIHZvaWQgKnBWYWx1ZSkgeworICAgIGludDMyX3QgKnBWYWx1ZTMyOworICAgIGludDE2X3QgKnBWYWx1ZTE2OworICAgIHRfcmV2ZXJiX3Byb3BlcnRpZXMgKnBQcm9wZXJ0aWVzOworICAgIGludDMyX3QgaTsKKyAgICBpbnQzMl90IHRlbXA7CisgICAgaW50MzJfdCB0ZW1wMjsKKyAgICBzaXplX3Qgc2l6ZTsKKworICAgIGlmIChwUmV2ZXJiLT5tX1ByZXNldCkgeworICAgICAgICBpZiAocGFyYW0gIT0gUkVWRVJCX1BBUkFNX1BSRVNFVCB8fCAqcFNpemUgPCBzaXplb2YoaW50MTZfdCkpIHsKKyAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgICAgICB9CisgICAgICAgIHNpemUgPSBzaXplb2YoaW50MTZfdCk7CisgICAgICAgIHBWYWx1ZTE2ID0gKGludDE2X3QgKilwVmFsdWU7CisgICAgICAgIC8vIFJFVkVSQl9QUkVTRVRfTk9ORSBpcyBtYXBwZWQgdG8gYnlwYXNzCisgICAgICAgIGlmIChwUmV2ZXJiLT5tX2JCeXBhc3MgIT0gMCkgeworICAgICAgICAgICAgKnBWYWx1ZTE2ID0gKGludDE2X3QpUkVWRVJCX1BSRVNFVF9OT05FOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgKnBWYWx1ZTE2ID0gKGludDE2X3QpKHBSZXZlcmItPm1fbk5leHRSb29tICsgMSk7CisgICAgICAgIH0KKyAgICAgICAgTE9HVigiZ2V0IFJFVkVSQl9QQVJBTV9QUkVTRVQsIHByZXNldCAlZCIsICpwVmFsdWUxNik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc3dpdGNoIChwYXJhbSkgeworICAgICAgICBjYXNlIFJFVkVSQl9QQVJBTV9ST09NX0xFVkVMOgorICAgICAgICBjYXNlIFJFVkVSQl9QQVJBTV9ST09NX0hGX0xFVkVMOgorICAgICAgICBjYXNlIFJFVkVSQl9QQVJBTV9ERUNBWV9IRl9SQVRJTzoKKyAgICAgICAgY2FzZSBSRVZFUkJfUEFSQU1fUkVGTEVDVElPTlNfTEVWRUw6CisgICAgICAgIGNhc2UgUkVWRVJCX1BBUkFNX1JFVkVSQl9MRVZFTDoKKyAgICAgICAgY2FzZSBSRVZFUkJfUEFSQU1fRElGRlVTSU9OOgorICAgICAgICBjYXNlIFJFVkVSQl9QQVJBTV9ERU5TSVRZOgorICAgICAgICAgICAgc2l6ZSA9IHNpemVvZihpbnQxNl90KTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgUkVWRVJCX1BBUkFNX0JZUEFTUzoKKyAgICAgICAgY2FzZSBSRVZFUkJfUEFSQU1fREVDQVlfVElNRToKKyAgICAgICAgY2FzZSBSRVZFUkJfUEFSQU1fUkVGTEVDVElPTlNfREVMQVk6CisgICAgICAgIGNhc2UgUkVWRVJCX1BBUkFNX1JFVkVSQl9ERUxBWToKKyAgICAgICAgICAgIHNpemUgPSBzaXplb2YoaW50MzJfdCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFJFVkVSQl9QQVJBTV9QUk9QRVJUSUVTOgorICAgICAgICAgICAgc2l6ZSA9IHNpemVvZih0X3JldmVyYl9wcm9wZXJ0aWVzKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgqcFNpemUgPCBzaXplKSB7CisgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICAgICAgfQorCisgICAgICAgIHBWYWx1ZTMyID0gKGludDMyX3QgKikgcFZhbHVlOworICAgICAgICBwVmFsdWUxNiA9IChpbnQxNl90ICopIHBWYWx1ZTsKKyAgICAgICAgcFByb3BlcnRpZXMgPSAodF9yZXZlcmJfcHJvcGVydGllcyAqKSBwVmFsdWU7CisKKyAgICAgICAgc3dpdGNoIChwYXJhbSkgeworICAgICAgICBjYXNlIFJFVkVSQl9QQVJBTV9CWVBBU1M6CisgICAgICAgICAgICAqcFZhbHVlMzIgPSAoaW50MzJfdCkgcFJldmVyYi0+bV9iQnlwYXNzOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBSRVZFUkJfUEFSQU1fUFJPUEVSVElFUzoKKyAgICAgICAgICAgIHBWYWx1ZTE2ID0gJnBQcm9wZXJ0aWVzLT5yb29tTGV2ZWw7CisgICAgICAgICAgICAvKiBGQUxMIFRIUk9VR0ggKi8KKworICAgICAgICBjYXNlIFJFVkVSQl9QQVJBTV9ST09NX0xFVkVMOgorICAgICAgICAgICAgLy8gQ29udmVydCBtX25Sb29tTHBmRndkIHRvIG1pbGxpYmVscworICAgICAgICAgICAgdGVtcCA9IChwUmV2ZXJiLT5tX25Sb29tTHBmRndkIDw8IDE1KQorICAgICAgICAgICAgICAgICAgICAvICgzMjc2NyAtIHBSZXZlcmItPm1fblJvb21McGZGYmspOworICAgICAgICAgICAgKnBWYWx1ZTE2ID0gRWZmZWN0c19MaW5lYXIxNlRvTWlsbGliZWxzKHRlbXApOworCisgICAgICAgICAgICBMT0dWKCJnZXQgUkVWRVJCX1BBUkFNX1JPT01fTEVWRUwgJWQsIGdhaW4gJWQsIG1fblJvb21McGZGd2QgJWQsIG1fblJvb21McGZGYmsgJWQiLCAqcFZhbHVlMTYsIHRlbXAsIHBSZXZlcmItPm1fblJvb21McGZGd2QsIHBSZXZlcmItPm1fblJvb21McGZGYmspOworCisgICAgICAgICAgICBpZiAocGFyYW0gPT0gUkVWRVJCX1BBUkFNX1JPT01fTEVWRUwpIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHBWYWx1ZTE2ID0gJnBQcm9wZXJ0aWVzLT5yb29tSEZMZXZlbDsKKyAgICAgICAgICAgIC8qIEZBTEwgVEhST1VHSCAqLworCisgICAgICAgIGNhc2UgUkVWRVJCX1BBUkFNX1JPT01fSEZfTEVWRUw6CisgICAgICAgICAgICAvLyBUaGUgcmF0aW8gYmV0d2VlbiBsaW5lYXIgZ2FpbiBhdCAwSHogYW5kIGF0IDUwMDBIeiBmb3IgdGhlIHJvb20gbG93IHBhc3MgaXM6CisgICAgICAgICAgICAvLyAoMSArIGExKSAvIHNxcnQoYTFeMiArIDIqQyphMSArIDEpIHdoZXJlOgorICAgICAgICAgICAgLy8gLSBhMSBpcyBtaW51cyB0aGUgTFAgZmVlZGJhY2sgZ2FpbjogLXBSZXZlcmItPm1fblJvb21McGZGYmsKKyAgICAgICAgICAgIC8vIC0gQyBpcyBjb3MoMnBpV1QpIEAgNTAwMEh6OiBwUmV2ZXJiLT5tX25Db3NXVF81S0h6CisKKyAgICAgICAgICAgIHRlbXAgPSBNVUxUX0VHMV9FRzEocFJldmVyYi0+bV9uUm9vbUxwZkZiaywgcFJldmVyYi0+bV9uUm9vbUxwZkZiayk7CisgICAgICAgICAgICBMT0dWKCJnZXQgUkVWRVJCX1BBUkFNX1JPT01fSEZfTEVWRUwsIGExXjIgJWQiLCB0ZW1wKTsKKyAgICAgICAgICAgIHRlbXAyID0gTVVMVF9FRzFfRUcxKHBSZXZlcmItPm1fblJvb21McGZGYmssIHBSZXZlcmItPm1fbkNvc1dUXzVLSHopCisgICAgICAgICAgICAgICAgICAgIDw8IDE7CisgICAgICAgICAgICBMT0dWKCJnZXQgUkVWRVJCX1BBUkFNX1JPT01fSEZfTEVWRUwsIDIgQ29zIGExICVkIiwgdGVtcDIpOworICAgICAgICAgICAgdGVtcCA9IDMyNzY3ICsgdGVtcCAtIHRlbXAyOworICAgICAgICAgICAgTE9HVigiZ2V0IFJFVkVSQl9QQVJBTV9ST09NX0hGX0xFVkVMLCBhMV4yICsgMiBDb3MgYTEgKyAxICVkIiwgdGVtcCk7CisgICAgICAgICAgICB0ZW1wID0gRWZmZWN0c19TcXJ0KHRlbXApICogMTgxOworICAgICAgICAgICAgTE9HVigiZ2V0IFJFVkVSQl9QQVJBTV9ST09NX0hGX0xFVkVMLCBTUVJUKGExXjIgKyAyIENvcyBhMSArIDEpICVkIiwgdGVtcCk7CisgICAgICAgICAgICB0ZW1wID0gKCgzMjc2NyAtIHBSZXZlcmItPm1fblJvb21McGZGYmspIDw8IDE1KSAvIHRlbXA7CisKKyAgICAgICAgICAgIExPR1YoImdldCBSRVZFUkJfUEFSQU1fUk9PTV9IRl9MRVZFTCwgZ2FpbiAlZCwgbV9uUm9vbUxwZkZ3ZCAlZCwgbV9uUm9vbUxwZkZiayAlZCIsIHRlbXAsIHBSZXZlcmItPm1fblJvb21McGZGd2QsIHBSZXZlcmItPm1fblJvb21McGZGYmspOworCisgICAgICAgICAgICAqcFZhbHVlMTYgPSBFZmZlY3RzX0xpbmVhcjE2VG9NaWxsaWJlbHModGVtcCk7CisKKyAgICAgICAgICAgIGlmIChwYXJhbSA9PSBSRVZFUkJfUEFSQU1fUk9PTV9IRl9MRVZFTCkgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcFZhbHVlMzIgPSAmcFByb3BlcnRpZXMtPmRlY2F5VGltZTsKKyAgICAgICAgICAgIC8qIEZBTEwgVEhST1VHSCAqLworCisgICAgICAgIGNhc2UgUkVWRVJCX1BBUkFNX0RFQ0FZX1RJTUU6CisgICAgICAgICAgICAvLyBDYWxjdWxhdGUgcmV2ZXJiIGZlZWRiYWNrIHBhdGggZ2FpbgorICAgICAgICAgICAgdGVtcCA9IChwUmV2ZXJiLT5tX25SdmJMcGZGd2QgPDwgMTUpIC8gKDMyNzY3IC0gcFJldmVyYi0+bV9uUnZiTHBmRmJrKTsKKyAgICAgICAgICAgIHRlbXAgPSBFZmZlY3RzX0xpbmVhcjE2VG9NaWxsaWJlbHModGVtcCk7CisKKyAgICAgICAgICAgIC8vIENhbGN1bGF0ZSBkZWNheSB0aW1lOiBnID0gLTYwMDAgZC9EVCAsIGcgZ2FpbiBpbiBtaWxsaWJlbHMsIGQgcmV2ZXJiIGRlbGF5LCBEVCBkZWNheSB0aW1lCisgICAgICAgICAgICB0ZW1wID0gKC02MDAwICogcFJldmVyYi0+bV9uTGF0ZURlbGF5KSAvIHRlbXA7CisKKyAgICAgICAgICAgIC8vIENvbnZlcnQgc2FtcGxlcyB0byBtcworICAgICAgICAgICAgKnBWYWx1ZTMyID0gKHRlbXAgKiAxMDAwKSAvIHBSZXZlcmItPm1fblNhbXBsaW5nUmF0ZTsKKworICAgICAgICAgICAgTE9HVigiZ2V0IFJFVkVSQl9QQVJBTV9ERUNBWV9USU1FLCBzYW1wbGVzICVkLCBtcyAlZCIsIHRlbXAsICpwVmFsdWUzMik7CisKKyAgICAgICAgICAgIGlmIChwYXJhbSA9PSBSRVZFUkJfUEFSQU1fREVDQVlfVElNRSkgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcFZhbHVlMTYgPSAmcFByb3BlcnRpZXMtPmRlY2F5SEZSYXRpbzsKKyAgICAgICAgICAgIC8qIEZBTEwgVEhST1VHSCAqLworCisgICAgICAgIGNhc2UgUkVWRVJCX1BBUkFNX0RFQ0FZX0hGX1JBVElPOgorICAgICAgICAgICAgLy8gSWYgciBpcyB0aGUgZGVjYXkgSEYgcmF0aW8gIChyID0gUkVWRVJCX1BBUkFNX0RFQ0FZX0hGX1JBVElPLzEwMDApIHdlIGhhdmU6CisgICAgICAgICAgICAvLyAgICAgICBEVF81MDAwSHogPSBEVF8wSHogKiByCisgICAgICAgICAgICAvLyAgYW5kICBHXzUwMDBIeiA9IC02MDAwICogZCAvIERUXzUwMDBIeiBhbmQgR18wSHogPSAtNjAwMCAqIGQgLyBEVF8wSHogaW4gbWlsbGliZWxzIHNvIDoKKyAgICAgICAgICAgIC8vIHIgPSBHXzBIei9HXzUwMDBIeiBpbiBtaWxsaWJlbHMKKyAgICAgICAgICAgIC8vIFRoZSBsaW5lYXIgZ2FpbiBhdCA1MDAwSHogaXMgYjAgLyBzcXJ0KGExXjIgKyAyKkMqYTEgKyAxKSB3aGVyZToKKyAgICAgICAgICAgIC8vIC0gYTEgaXMgbWludXMgdGhlIExQIGZlZWRiYWNrIGdhaW46IC1wUmV2ZXJiLT5tX25SdmJMcGZGYmsKKyAgICAgICAgICAgIC8vIC0gYjAgaXMgdGhlIExQIGZvcndhcmQgZ2FpbjogcFJldmVyYi0+bV9uUnZiTHBmRndkCisgICAgICAgICAgICAvLyAtIEMgaXMgY29zKDJwaVdUKSBAIDUwMDBIejogcFJldmVyYi0+bV9uQ29zV1RfNUtIegorICAgICAgICAgICAgaWYgKHBSZXZlcmItPm1fblJ2YkxwZkZiayA9PSAwKSB7CisgICAgICAgICAgICAgICAgKnBWYWx1ZTE2ID0gMTAwMDsKKyAgICAgICAgICAgICAgICBMT0dWKCJnZXQgUkVWRVJCX1BBUkFNX0RFQ0FZX0hGX1JBVElPLCBwUmV2ZXJiLT5tX25SdmJMcGZGYmsgPT0gMCwgcmF0aW8gJWQiLCAqcFZhbHVlMTYpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0ZW1wID0gTVVMVF9FRzFfRUcxKHBSZXZlcmItPm1fblJ2YkxwZkZiaywgcFJldmVyYi0+bV9uUnZiTHBmRmJrKTsKKyAgICAgICAgICAgICAgICB0ZW1wMiA9IE1VTFRfRUcxX0VHMShwUmV2ZXJiLT5tX25SdmJMcGZGYmssIHBSZXZlcmItPm1fbkNvc1dUXzVLSHopCisgICAgICAgICAgICAgICAgICAgICAgICA8PCAxOworICAgICAgICAgICAgICAgIHRlbXAgPSAzMjc2NyArIHRlbXAgLSB0ZW1wMjsKKyAgICAgICAgICAgICAgICB0ZW1wID0gRWZmZWN0c19TcXJ0KHRlbXApICogMTgxOworICAgICAgICAgICAgICAgIHRlbXAgPSAocFJldmVyYi0+bV9uUnZiTHBmRndkIDw8IDE1KSAvIHRlbXA7CisgICAgICAgICAgICAgICAgLy8gVGhlIGxpbmVhciBnYWluIGF0IDBIeiBpcyBiMCAvIChhMSArIDEpCisgICAgICAgICAgICAgICAgdGVtcDIgPSAocFJldmVyYi0+bV9uUnZiTHBmRndkIDw8IDE1KSAvICgzMjc2NworICAgICAgICAgICAgICAgICAgICAgICAgLSBwUmV2ZXJiLT5tX25SdmJMcGZGYmspOworCisgICAgICAgICAgICAgICAgdGVtcCA9IEVmZmVjdHNfTGluZWFyMTZUb01pbGxpYmVscyh0ZW1wKTsKKyAgICAgICAgICAgICAgICB0ZW1wMiA9IEVmZmVjdHNfTGluZWFyMTZUb01pbGxpYmVscyh0ZW1wMik7CisgICAgICAgICAgICAgICAgTE9HVigiZ2V0IFJFVkVSQl9QQVJBTV9ERUNBWV9IRl9SQVRJTywgZ2FpbiA1S0h6ICVkIG1CLCBnYWluIERDICVkIG1CIiwgdGVtcCwgdGVtcDIpOworCisgICAgICAgICAgICAgICAgaWYgKHRlbXAgPT0gMCkKKyAgICAgICAgICAgICAgICAgICAgdGVtcCA9IDE7CisgICAgICAgICAgICAgICAgdGVtcCA9IChpbnQxNl90KSAoKDEwMDAgKiB0ZW1wMikgLyB0ZW1wKTsKKyAgICAgICAgICAgICAgICBpZiAodGVtcCA+IDEwMDApCisgICAgICAgICAgICAgICAgICAgIHRlbXAgPSAxMDAwOworCisgICAgICAgICAgICAgICAgKnBWYWx1ZTE2ID0gdGVtcDsKKyAgICAgICAgICAgICAgICBMT0dWKCJnZXQgUkVWRVJCX1BBUkFNX0RFQ0FZX0hGX1JBVElPLCByYXRpbyAlZCIsICpwVmFsdWUxNik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChwYXJhbSA9PSBSRVZFUkJfUEFSQU1fREVDQVlfSEZfUkFUSU8pIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHBWYWx1ZTE2ID0gJnBQcm9wZXJ0aWVzLT5yZWZsZWN0aW9uc0xldmVsOworICAgICAgICAgICAgLyogRkFMTCBUSFJPVUdIICovCisKKyAgICAgICAgY2FzZSBSRVZFUkJfUEFSQU1fUkVGTEVDVElPTlNfTEVWRUw6CisgICAgICAgICAgICAqcFZhbHVlMTYgPSBFZmZlY3RzX0xpbmVhcjE2VG9NaWxsaWJlbHMocFJldmVyYi0+bV9uRWFybHlHYWluKTsKKworICAgICAgICAgICAgTE9HVigiZ2V0IFJFVkVSQl9QQVJBTV9SRUZMRUNUSU9OU19MRVZFTCwgJWQiLCAqcFZhbHVlMTYpOworICAgICAgICAgICAgaWYgKHBhcmFtID09IFJFVkVSQl9QQVJBTV9SRUZMRUNUSU9OU19MRVZFTCkgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcFZhbHVlMzIgPSAmcFByb3BlcnRpZXMtPnJlZmxlY3Rpb25zRGVsYXk7CisgICAgICAgICAgICAvKiBGQUxMIFRIUk9VR0ggKi8KKworICAgICAgICBjYXNlIFJFVkVSQl9QQVJBTV9SRUZMRUNUSU9OU19ERUxBWToKKyAgICAgICAgICAgIC8vIGNvbnZlcnQgc2FtcGxlcyB0byBtcworICAgICAgICAgICAgKnBWYWx1ZTMyID0gKHBSZXZlcmItPm1fbkVhcmx5RGVsYXkgKiAxMDAwKSAvIHBSZXZlcmItPm1fblNhbXBsaW5nUmF0ZTsKKworICAgICAgICAgICAgTE9HVigiZ2V0IFJFVkVSQl9QQVJBTV9SRUZMRUNUSU9OU19ERUxBWSwgc2FtcGxlcyAlZCwgbXMgJWQiLCBwUmV2ZXJiLT5tX25FYXJseURlbGF5LCAqcFZhbHVlMzIpOworCisgICAgICAgICAgICBpZiAocGFyYW0gPT0gUkVWRVJCX1BBUkFNX1JFRkxFQ1RJT05TX0RFTEFZKSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwVmFsdWUxNiA9ICZwUHJvcGVydGllcy0+cmV2ZXJiTGV2ZWw7CisgICAgICAgICAgICAvKiBGQUxMIFRIUk9VR0ggKi8KKworICAgICAgICBjYXNlIFJFVkVSQl9QQVJBTV9SRVZFUkJfTEVWRUw6CisgICAgICAgICAgICAvLyBDb252ZXJ0IGxpbmVhciBnYWluIHRvIG1pbGxpYmVscworICAgICAgICAgICAgKnBWYWx1ZTE2ID0gRWZmZWN0c19MaW5lYXIxNlRvTWlsbGliZWxzKHBSZXZlcmItPm1fbkxhdGVHYWluIDw8IDIpOworCisgICAgICAgICAgICBMT0dWKCJnZXQgUkVWRVJCX1BBUkFNX1JFVkVSQl9MRVZFTCAlZCIsICpwVmFsdWUxNik7CisKKyAgICAgICAgICAgIGlmIChwYXJhbSA9PSBSRVZFUkJfUEFSQU1fUkVWRVJCX0xFVkVMKSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwVmFsdWUzMiA9ICZwUHJvcGVydGllcy0+cmV2ZXJiRGVsYXk7CisgICAgICAgICAgICAvKiBGQUxMIFRIUk9VR0ggKi8KKworICAgICAgICBjYXNlIFJFVkVSQl9QQVJBTV9SRVZFUkJfREVMQVk6CisgICAgICAgICAgICAvLyBjb252ZXJ0IHNhbXBsZXMgdG8gbXMKKyAgICAgICAgICAgICpwVmFsdWUzMiA9IChwUmV2ZXJiLT5tX25MYXRlRGVsYXkgKiAxMDAwKSAvIHBSZXZlcmItPm1fblNhbXBsaW5nUmF0ZTsKKworICAgICAgICAgICAgTE9HVigiZ2V0IFJFVkVSQl9QQVJBTV9SRVZFUkJfREVMQVksIHNhbXBsZXMgJWQsIG1zICVkIiwgcFJldmVyYi0+bV9uTGF0ZURlbGF5LCAqcFZhbHVlMzIpOworCisgICAgICAgICAgICBpZiAocGFyYW0gPT0gUkVWRVJCX1BBUkFNX1JFVkVSQl9ERUxBWSkgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcFZhbHVlMTYgPSAmcFByb3BlcnRpZXMtPmRpZmZ1c2lvbjsKKyAgICAgICAgICAgIC8qIEZBTEwgVEhST1VHSCAqLworCisgICAgICAgIGNhc2UgUkVWRVJCX1BBUkFNX0RJRkZVU0lPTjoKKyAgICAgICAgICAgIHRlbXAgPSAoaW50MTZfdCkgKCgxMDAwICogKHBSZXZlcmItPm1fc0FwMC5tX25BcEdhaW4gLSBBUDBfR0FJTl9CQVNFKSkKKyAgICAgICAgICAgICAgICAgICAgLyBBUDBfR0FJTl9SQU5HRSk7CisKKyAgICAgICAgICAgIGlmICh0ZW1wIDwgMCkKKyAgICAgICAgICAgICAgICB0ZW1wID0gMDsKKyAgICAgICAgICAgIGlmICh0ZW1wID4gMTAwMCkKKyAgICAgICAgICAgICAgICB0ZW1wID0gMTAwMDsKKworICAgICAgICAgICAgKnBWYWx1ZTE2ID0gdGVtcDsKKyAgICAgICAgICAgIExPR1YoImdldCBSRVZFUkJfUEFSQU1fRElGRlVTSU9OLCAlZCwgQVAwIGdhaW4gJWQiLCAqcFZhbHVlMTYsIHBSZXZlcmItPm1fc0FwMC5tX25BcEdhaW4pOworCisgICAgICAgICAgICBpZiAocGFyYW0gPT0gUkVWRVJCX1BBUkFNX0RJRkZVU0lPTikgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcFZhbHVlMTYgPSAmcFByb3BlcnRpZXMtPmRlbnNpdHk7CisgICAgICAgICAgICAvKiBGQUxMIFRIUk9VR0ggKi8KKworICAgICAgICBjYXNlIFJFVkVSQl9QQVJBTV9ERU5TSVRZOgorICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIEFQIGRlbGF5IGluIHRpbWUgdW5pdHMKKyAgICAgICAgICAgIHRlbXAgPSAoKHBSZXZlcmItPm1fc0FwMC5tX3pBcE91dCAtIHBSZXZlcmItPm1fc0FwMC5tX3pBcEluKSA8PCAxNikKKyAgICAgICAgICAgICAgICAgICAgLyBwUmV2ZXJiLT5tX25TYW1wbGluZ1JhdGU7CisKKyAgICAgICAgICAgIHRlbXAgPSAoaW50MTZfdCkgKCgxMDAwICogKHRlbXAgLSBBUDBfVElNRV9CQVNFKSkgLyBBUDBfVElNRV9SQU5HRSk7CisKKyAgICAgICAgICAgIGlmICh0ZW1wIDwgMCkKKyAgICAgICAgICAgICAgICB0ZW1wID0gMDsKKyAgICAgICAgICAgIGlmICh0ZW1wID4gMTAwMCkKKyAgICAgICAgICAgICAgICB0ZW1wID0gMTAwMDsKKworICAgICAgICAgICAgKnBWYWx1ZTE2ID0gdGVtcDsKKworICAgICAgICAgICAgTE9HVigiZ2V0IFJFVkVSQl9QQVJBTV9ERU5TSVRZLCAlZCwgQVAwIGRlbGF5IHNtcHMgJWQiLCAqcFZhbHVlMTYsIHBSZXZlcmItPm1fc0FwMC5tX3pBcE91dCAtIHBSZXZlcmItPm1fc0FwMC5tX3pBcEluKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgICpwU2l6ZSA9IHNpemU7CisKKyAgICBMT0dWKCJSZXZlcmJfZ2V0UGFyYW1ldGVyLCBjb250ZXh0ICVwLCBwYXJhbSAlZCwgdmFsdWUgJWQiLAorICAgICAgICAgICAgcFJldmVyYiwgcGFyYW0sICooaW50ICopcFZhbHVlKTsKKworICAgIHJldHVybiAwOworfSAvKiBlbmQgUmV2ZXJiX2dldFBhcmFtZXRlciAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFJldmVyYl9zZXRQYXJhbWV0ZXIoKQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBQdXJwb3NlOgorICogU2V0IGEgUmV2ZXJiIHBhcmFtZXRlcgorICoKKyAqIElucHV0czoKKyAqICBwUmV2ZXJiICAgICAgIC0gaGFuZGxlIHRvIGluc3RhbmNlIGRhdGEKKyAqICBwYXJhbSAgICAgICAgIC0gcGFyYW1ldGVyCisgKiAgcFZhbHVlICAgICAgICAtIHBvaW50ZXIgdG8gcGFyYW1ldGVyIHZhbHVlCisgKiAgc2l6ZSAgICAgICAgICAtIHZhbHVlIHNpemUKKyAqCisgKiBPdXRwdXRzOgorICoKKyAqCisgKiBTaWRlIEVmZmVjdHM6CisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK2ludCBSZXZlcmJfc2V0UGFyYW1ldGVyKHJldmVyYl9vYmplY3RfdCAqcFJldmVyYiwgaW50MzJfdCBwYXJhbSwgc2l6ZV90IHNpemUsCisgICAgICAgIHZvaWQgKnBWYWx1ZSkgeworICAgIGludDMyX3QgdmFsdWUzMjsKKyAgICBpbnQxNl90IHZhbHVlMTY7CisgICAgdF9yZXZlcmJfcHJvcGVydGllcyAqcFByb3BlcnRpZXM7CisgICAgaW50MzJfdCBpOworICAgIGludDMyX3QgdGVtcDsKKyAgICBpbnQzMl90IHRlbXAyOworICAgIHJldmVyYl9wcmVzZXRfdCAqcFByZXNldDsKKyAgICBpbnQgbWF4U2FtcGxlczsKKyAgICBpbnQzMl90IGF2ZXJhZ2VEZWxheTsKKyAgICBzaXplX3QgcGFyYW1TaXplOworCisgICAgTE9HVigiUmV2ZXJiX3NldFBhcmFtZXRlciwgY29udGV4dCAlcCwgcGFyYW0gJWQsIHZhbHVlMTYgJWQsIHZhbHVlMzIgJWQiLAorICAgICAgICAgICAgcFJldmVyYiwgcGFyYW0sICooaW50MTZfdCAqKXBWYWx1ZSwgKihpbnQzMl90ICopcFZhbHVlKTsKKworICAgIGlmIChwUmV2ZXJiLT5tX1ByZXNldCkgeworICAgICAgICBpZiAocGFyYW0gIT0gUkVWRVJCX1BBUkFNX1BSRVNFVCB8fCBzaXplICE9IHNpemVvZihpbnQxNl90KSkgeworICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgICAgIH0KKyAgICAgICAgdmFsdWUxNiA9ICooaW50MTZfdCAqKXBWYWx1ZTsKKyAgICAgICAgTE9HVigic2V0IFJFVkVSQl9QQVJBTV9QUkVTRVQsIHByZXNldCAlZCIsIHZhbHVlMTYpOworICAgICAgICBpZiAodmFsdWUxNiA8IFJFVkVSQl9QUkVTRVRfTk9ORSB8fCB2YWx1ZTE2ID4gUkVWRVJCX1BSRVNFVF9QTEFURSkgeworICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgICAgIH0KKyAgICAgICAgLy8gUkVWRVJCX1BSRVNFVF9OT05FIGlzIG1hcHBlZCB0byBieXBhc3MKKyAgICAgICAgaWYgKHZhbHVlMTYgPT0gUkVWRVJCX1BSRVNFVF9OT05FKSB7CisgICAgICAgICAgICBwUmV2ZXJiLT5tX2JCeXBhc3MgPSAxOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcFJldmVyYi0+bV9iQnlwYXNzID0gMDsKKyAgICAgICAgICAgIHBSZXZlcmItPm1fbk5leHRSb29tID0gdmFsdWUxNiAtIDE7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBzd2l0Y2ggKHBhcmFtKSB7CisgICAgICAgIGNhc2UgUkVWRVJCX1BBUkFNX1JPT01fTEVWRUw6CisgICAgICAgIGNhc2UgUkVWRVJCX1BBUkFNX1JPT01fSEZfTEVWRUw6CisgICAgICAgIGNhc2UgUkVWRVJCX1BBUkFNX0RFQ0FZX0hGX1JBVElPOgorICAgICAgICBjYXNlIFJFVkVSQl9QQVJBTV9SRUZMRUNUSU9OU19MRVZFTDoKKyAgICAgICAgY2FzZSBSRVZFUkJfUEFSQU1fUkVWRVJCX0xFVkVMOgorICAgICAgICBjYXNlIFJFVkVSQl9QQVJBTV9ESUZGVVNJT046CisgICAgICAgIGNhc2UgUkVWRVJCX1BBUkFNX0RFTlNJVFk6CisgICAgICAgICAgICBwYXJhbVNpemUgPSBzaXplb2YoaW50MTZfdCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFJFVkVSQl9QQVJBTV9CWVBBU1M6CisgICAgICAgIGNhc2UgUkVWRVJCX1BBUkFNX0RFQ0FZX1RJTUU6CisgICAgICAgIGNhc2UgUkVWRVJCX1BBUkFNX1JFRkxFQ1RJT05TX0RFTEFZOgorICAgICAgICBjYXNlIFJFVkVSQl9QQVJBTV9SRVZFUkJfREVMQVk6CisgICAgICAgICAgICBwYXJhbVNpemUgPSBzaXplb2YoaW50MzJfdCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFJFVkVSQl9QQVJBTV9QUk9QRVJUSUVTOgorICAgICAgICAgICAgcGFyYW1TaXplID0gc2l6ZW9mKHRfcmV2ZXJiX3Byb3BlcnRpZXMpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHNpemUgIT0gcGFyYW1TaXplKSB7CisgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChwYXJhbVNpemUgPT0gc2l6ZW9mKGludDE2X3QpKSB7CisgICAgICAgICAgICB2YWx1ZTE2ID0gKihpbnQxNl90ICopIHBWYWx1ZTsKKyAgICAgICAgfSBlbHNlIGlmIChwYXJhbVNpemUgPT0gc2l6ZW9mKGludDMyX3QpKSB7CisgICAgICAgICAgICB2YWx1ZTMyID0gKihpbnQzMl90ICopIHBWYWx1ZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHBQcm9wZXJ0aWVzID0gKHRfcmV2ZXJiX3Byb3BlcnRpZXMgKikgcFZhbHVlOworICAgICAgICB9CisKKyAgICAgICAgcFByZXNldCA9ICZwUmV2ZXJiLT5tX3NQcmVzZXQubV9zUHJlc2V0W3BSZXZlcmItPm1fbk5leHRSb29tXTsKKworICAgICAgICBzd2l0Y2ggKHBhcmFtKSB7CisgICAgICAgIGNhc2UgUkVWRVJCX1BBUkFNX0JZUEFTUzoKKyAgICAgICAgICAgIHBSZXZlcmItPm1fYkJ5cGFzcyA9ICh1aW50MTZfdCl2YWx1ZTMyOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBSRVZFUkJfUEFSQU1fUFJPUEVSVElFUzoKKyAgICAgICAgICAgIHZhbHVlMTYgPSBwUHJvcGVydGllcy0+cm9vbUxldmVsOworICAgICAgICAgICAgLyogRkFMTCBUSFJPVUdIICovCisKKyAgICAgICAgY2FzZSBSRVZFUkJfUEFSQU1fUk9PTV9MRVZFTDoKKyAgICAgICAgICAgIC8vIENvbnZlcnQgbWlsbGliZWxzIHRvIGxpbmVhciAxNiBiaXQgc2lnbmVkID0+IG1fblJvb21McGZGd2QKKyAgICAgICAgICAgIGlmICh2YWx1ZTE2ID4gMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgICAgICAgICAgdGVtcCA9IEVmZmVjdHNfTWlsbGliZWxzVG9MaW5lYXIxNih2YWx1ZTE2KTsKKworICAgICAgICAgICAgcFJldmVyYi0+bV9uUm9vbUxwZkZ3ZAorICAgICAgICAgICAgICAgICAgICA9IE1VTFRfRUcxX0VHMSh0ZW1wLCAoMzI3NjcgLSBwUmV2ZXJiLT5tX25Sb29tTHBmRmJrKSk7CisKKyAgICAgICAgICAgIExPR1YoIlJFVkVSQl9QQVJBTV9ST09NX0xFVkVMLCBnYWluICVkLCBuZXcgbV9uUm9vbUxwZkZ3ZCAlZCwgbV9uUm9vbUxwZkZiayAlZCIsIHRlbXAsIHBSZXZlcmItPm1fblJvb21McGZGd2QsIHBSZXZlcmItPm1fblJvb21McGZGYmspOworICAgICAgICAgICAgaWYgKHBhcmFtID09IFJFVkVSQl9QQVJBTV9ST09NX0xFVkVMKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgdmFsdWUxNiA9IHBQcm9wZXJ0aWVzLT5yb29tSEZMZXZlbDsKKyAgICAgICAgICAgIC8qIEZBTEwgVEhST1VHSCAqLworCisgICAgICAgIGNhc2UgUkVWRVJCX1BBUkFNX1JPT01fSEZfTEVWRUw6CisKKyAgICAgICAgICAgIC8vIExpbWl0IHRvIDAgLCAtNDBkQiByYW5nZSBiZWNhdXNlIG9mIGxvdyBwYXNzIGltcGxlbWVudGF0aW9uCisgICAgICAgICAgICBpZiAodmFsdWUxNiA+IDAgfHwgdmFsdWUxNiA8IC00MDAwKQorICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgICAgICAgICAgLy8gQ29udmVydCBhdHRlbnVhdGlvbiBAIDUwMDBIIGV4cHJlc3NlZCBpbiBtaWxsaWJlbHMgdG8gPT4gbV9uUm9vbUxwZkZiaworICAgICAgICAgICAgLy8gbV9uUm9vbUxwZkZiayBpcyAtYTEgd2hlcmUgYTEgaXMgdGhlIHNvbHV0aW9uIG9mOgorICAgICAgICAgICAgLy8gYTFeMiArIDIqKEMtZEdeMikvKDEtZEdeMikqYTEgKyAxID0gMCB3aGVyZToKKyAgICAgICAgICAgIC8vIC0gQyBpcyBjb3MoMipwaSo1MDAwL0ZzKSAocFJldmVyYi0+bV9uQ29zV1RfNUtIeikKKyAgICAgICAgICAgIC8vIC0gZEcgaXMgRzAvR2YgKEcwIGlzIHRoZSBsaW5lYXIgZ2FpbiBhdCBEQyBhbmQgR2YgaXMgdGhlIHdhbnRlZCBnYWluIGF0IDUwMDBIeikKKworICAgICAgICAgICAgLy8gU2F2ZSBjdXJyZW50IERDIGdhaW4gbV9uUm9vbUxwZkZ3ZCAvICgzMjc2NyAtIG1fblJvb21McGZGYmspIHRvIGtlZXAgaXQgdW5jaGFuZ2VkCisgICAgICAgICAgICAvLyB3aGlsZSBjaGFuZ2luZyBIRiBsZXZlbAorICAgICAgICAgICAgdGVtcDIgPSAocFJldmVyYi0+bV9uUm9vbUxwZkZ3ZCA8PCAxNSkgLyAoMzI3NjcKKyAgICAgICAgICAgICAgICAgICAgLSBwUmV2ZXJiLT5tX25Sb29tTHBmRmJrKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZTE2ID09IDApIHsKKyAgICAgICAgICAgICAgICBwUmV2ZXJiLT5tX25Sb29tTHBmRmJrID0gMDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaW50MzJfdCBkRzIsIGIsIGRlbHRhOworCisgICAgICAgICAgICAgICAgLy8gZEdeMgorICAgICAgICAgICAgICAgIHRlbXAgPSBFZmZlY3RzX01pbGxpYmVsc1RvTGluZWFyMTYodmFsdWUxNik7CisgICAgICAgICAgICAgICAgTE9HVigiUkVWRVJCX1BBUkFNX1JPT01fSEZfTEVWRUwsIEhGIGdhaW4gJWQiLCB0ZW1wKTsKKyAgICAgICAgICAgICAgICB0ZW1wID0gKDEgPDwgMzApIC8gdGVtcDsKKyAgICAgICAgICAgICAgICBMT0dWKCJSRVZFUkJfUEFSQU1fUk9PTV9IRl9MRVZFTCwgMS8gSEYgZ2FpbiAlZCIsIHRlbXApOworICAgICAgICAgICAgICAgIGRHMiA9IChpbnQzMl90KSAoKChpbnQ2NF90KSB0ZW1wICogKGludDY0X3QpIHRlbXApID4+IDE1KTsKKyAgICAgICAgICAgICAgICBMT0dWKCJSRVZFUkJfUEFSQU1fUk9PTV9IRl9MRVZFTCwgMS8gSEYgZ2FpbiBeIDIgJWQiLCBkRzIpOworICAgICAgICAgICAgICAgIC8vIGIgPSAyKihDLWRHXjIpLygxLWRHXjIpCisgICAgICAgICAgICAgICAgYiA9IChpbnQzMl90KSAoKCgoaW50NjRfdCkgMSA8PCAoMTUgKyAxKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICogKChpbnQ2NF90KSBwUmV2ZXJiLT5tX25Db3NXVF81S0h6IC0gKGludDY0X3QpIGRHMikpCisgICAgICAgICAgICAgICAgICAgICAgICAvICgoaW50NjRfdCkgMzI3NjcgLSAoaW50NjRfdCkgZEcyKSk7CisKKyAgICAgICAgICAgICAgICAvLyBkZWx0YSA9IGJeMiAtIDQKKyAgICAgICAgICAgICAgICBkZWx0YSA9IChpbnQzMl90KSAoKCgoaW50NjRfdCkgYiAqIChpbnQ2NF90KSBiKSA+PiAxNSkgLSAoMSA8PCAoMTUKKyAgICAgICAgICAgICAgICAgICAgICAgICsgMikpKTsKKworICAgICAgICAgICAgICAgIExPR1ZfSUYoZGVsdGEgPiAoMTw8MzApLCAiIGRlbHRhIG92ZXJmbG93ICVkIiwgZGVsdGEpOworCisgICAgICAgICAgICAgICAgTE9HVigiUkVWRVJCX1BBUkFNX1JPT01fSEZfTEVWRUwsIGRHMiAlZCwgYiAlZCwgZGVsdGEgJWQsIG1fbkNvc1dUXzVLSHogJWQiLCBkRzIsIGIsIGRlbHRhLCBwUmV2ZXJiLT5tX25Db3NXVF81S0h6KTsKKyAgICAgICAgICAgICAgICAvLyBtX25Sb29tTHBmRmJrID0gLWExID0gLSAoLSBiICsgc3FydChkZWx0YSkpIC8gMgorICAgICAgICAgICAgICAgIHBSZXZlcmItPm1fblJvb21McGZGYmsgPSAoYiAtIEVmZmVjdHNfU3FydChkZWx0YSkgKiAxODEpID4+IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBMT0dWKCJSRVZFUkJfUEFSQU1fUk9PTV9IRl9MRVZFTCwgb2xnIERDIGdhaW4gJWQgbmV3IG1fblJvb21McGZGYmsgJWQsIG9sZCBtX25Sb29tTHBmRndkICVkIiwKKyAgICAgICAgICAgICAgICAgICAgdGVtcDIsIHBSZXZlcmItPm1fblJvb21McGZGYmssIHBSZXZlcmItPm1fblJvb21McGZGd2QpOworCisgICAgICAgICAgICBwUmV2ZXJiLT5tX25Sb29tTHBmRndkCisgICAgICAgICAgICAgICAgICAgID0gTVVMVF9FRzFfRUcxKHRlbXAyLCAoMzI3NjcgLSBwUmV2ZXJiLT5tX25Sb29tTHBmRmJrKSk7CisgICAgICAgICAgICBMT0dWKCJSRVZFUkJfUEFSQU1fUk9PTV9IRl9MRVZFTCwgbmV3IG1fblJvb21McGZGd2QgJWQiLCBwUmV2ZXJiLT5tX25Sb29tTHBmRndkKTsKKworICAgICAgICAgICAgaWYgKHBhcmFtID09IFJFVkVSQl9QQVJBTV9ST09NX0hGX0xFVkVMKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgdmFsdWUzMiA9IHBQcm9wZXJ0aWVzLT5kZWNheVRpbWU7CisgICAgICAgICAgICAvKiBGQUxMIFRIUk9VR0ggKi8KKworICAgICAgICBjYXNlIFJFVkVSQl9QQVJBTV9ERUNBWV9USU1FOgorCisgICAgICAgICAgICAvLyBDb252ZXJ0IG1pbGxpc2Vjb25kcyB0byA9PiBtX25SdmJMcGZGd2QgKGZ1bmN0aW9uIG9mIG1fblJ2YkxwZkZiaykKKyAgICAgICAgICAgIC8vIGNvbnZlcnQgbXMgdG8gc2FtcGxlcworICAgICAgICAgICAgdmFsdWUzMiA9ICh2YWx1ZTMyICogcFJldmVyYi0+bV9uU2FtcGxpbmdSYXRlKSAvIDEwMDA7CisKKyAgICAgICAgICAgIC8vIGNhbGN1bGF0ZSB2YWxpZCBkZWNheSB0aW1lIHJhbmdlIGFzIGEgZnVuY3Rpb24gb2YgY3VycmVudCByZXZlcmIgZGVsYXkgYW5kCisgICAgICAgICAgICAvLyBtYXggZmVlZCBiYWNrIGdhaW4uIE1pbiB2YWx1ZSA8PT4gLTQwZEIgaW4gb25lIHBhc3MsIE1heCB2YWx1ZSA8PT4gZmVlZGJhY2sgZ2FpbiA9IC0xIGRCCisgICAgICAgICAgICAvLyBDYWxjdWxhdGUgYXR0ZW51YXRpb24gZm9yIGVhY2ggcm91bmQgaW4gbGF0ZSByZXZlcmIgZ2l2ZW4gYSB0b3RhbCBhdHRlbnVhdGlvbiBvZiAtNjAwMCBtaWxsaWJlbHMuCisgICAgICAgICAgICAvLyBnID0gLTYwMDAgZC9EVCAsIGcgZ2FpbiBpbiBtaWxsaWJlbHMsIGQgcmV2ZXJiIGRlbGF5LCBEVCBkZWNheSB0aW1lCisgICAgICAgICAgICBhdmVyYWdlRGVsYXkgPSBwUmV2ZXJiLT5tX25MYXRlRGVsYXkgLSBwUmV2ZXJiLT5tX25NYXhFeGN1cnNpb247CisgICAgICAgICAgICBhdmVyYWdlRGVsYXkgKz0gKChwUmV2ZXJiLT5tX3NBcDAubV96QXBPdXQgLSBwUmV2ZXJiLT5tX3NBcDAubV96QXBJbikKKyAgICAgICAgICAgICAgICAgICAgKyAocFJldmVyYi0+bV9zQXAxLm1fekFwT3V0IC0gcFJldmVyYi0+bV9zQXAxLm1fekFwSW4pKSA+PiAxOworCisgICAgICAgICAgICB0ZW1wID0gKC02MDAwICogYXZlcmFnZURlbGF5KSAvIHZhbHVlMzI7CisgICAgICAgICAgICBMT0dWKCJSRVZFUkJfUEFSQU1fREVDQVlfVElNRSwgZGVsYXkgc21wcyAlZCwgRFQgc21wcyAlZCwgZ2FpbiBtQiAlZCIsYXZlcmFnZURlbGF5LCB2YWx1ZTMyLCB0ZW1wKTsKKyAgICAgICAgICAgIGlmICh0ZW1wIDwgLTQwMDAgfHwgdGVtcCA+IC0xMDApCisgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICAgICAgICAgIC8vIGNhbGN1bGF0ZSBsb3cgcGFzcyBnYWluIGJ5IGFkZGluZyByZXZlcmIgaW5wdXQgYXR0ZW51YXRpb24gKHBSZXZlcmItPm1fbkxhdGVHYWluKSBhbmQgc3Vic3RyYXRpbmcgb3V0cHV0CisgICAgICAgICAgICAvLyB4ZmFkZSBhbmQgc3VtIGdhaW4gKG1heCArOWRCKQorICAgICAgICAgICAgdGVtcCAtPSBFZmZlY3RzX0xpbmVhcjE2VG9NaWxsaWJlbHMocFJldmVyYi0+bV9uTGF0ZUdhaW4pICsgOTAwOworICAgICAgICAgICAgdGVtcCA9IEVmZmVjdHNfTWlsbGliZWxzVG9MaW5lYXIxNih0ZW1wKTsKKworICAgICAgICAgICAgLy8gREMgZ2FpbiAodGVtcCkgPSBiMCAvICgxICsgYTEpID0gcFJldmVyYi0+bV9uUnZiTHBmRndkIC8gKDMyNzY3IC0gcFJldmVyYi0+bV9uUnZiTHBmRmJrKQorICAgICAgICAgICAgcFJldmVyYi0+bV9uUnZiTHBmRndkCisgICAgICAgICAgICAgICAgICAgID0gTVVMVF9FRzFfRUcxKHRlbXAsICgzMjc2NyAtIHBSZXZlcmItPm1fblJ2YkxwZkZiaykpOworCisgICAgICAgICAgICBMT0dWKCJSRVZFUkJfUEFSQU1fREVDQVlfVElNRSwgZ2FpbiAlZCwgbmV3IG1fblJ2YkxwZkZ3ZCAlZCwgb2xkIG1fblJ2YkxwZkZiayAlZCwgcmV2ZXJiIGdhaW4gJWQiLCB0ZW1wLCBwUmV2ZXJiLT5tX25SdmJMcGZGd2QsIHBSZXZlcmItPm1fblJ2YkxwZkZiaywgRWZmZWN0c19MaW5lYXIxNlRvTWlsbGliZWxzKHBSZXZlcmItPm1fbkxhdGVHYWluKSk7CisKKyAgICAgICAgICAgIGlmIChwYXJhbSA9PSBSRVZFUkJfUEFSQU1fREVDQVlfVElNRSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHZhbHVlMTYgPSBwUHJvcGVydGllcy0+ZGVjYXlIRlJhdGlvOworICAgICAgICAgICAgLyogRkFMTCBUSFJPVUdIICovCisKKyAgICAgICAgY2FzZSBSRVZFUkJfUEFSQU1fREVDQVlfSEZfUkFUSU86CisKKyAgICAgICAgICAgIC8vIFdlIGxpbWl0IG1heCB2YWx1ZSB0byAxMDAwIGJlY2F1c2UgcmV2ZXJiIGZpbHRlciBpcyBsb3dwYXNzIG9ubHkKKyAgICAgICAgICAgIGlmICh2YWx1ZTE2IDwgMTAwIHx8IHZhbHVlMTYgPiAxMDAwKQorICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgICAgICAgICAgLy8gQ29udmVydCBwZXIgbWlsbGUgdG8gPT4gbV9uTHBmRndkLCBtX25McGZGYmsKKworICAgICAgICAgICAgLy8gU2F2ZSBjdXJyZW50IERDIGdhaW4gbV9uUm9vbUxwZkZ3ZCAvICgzMjc2NyAtIG1fblJvb21McGZGYmspIHRvIGtlZXAgaXQgdW5jaGFuZ2VkCisgICAgICAgICAgICAvLyB3aGlsZSBjaGFuZ2luZyBIRiBsZXZlbAorICAgICAgICAgICAgdGVtcDIgPSAocFJldmVyYi0+bV9uUnZiTHBmRndkIDw8IDE1KSAvICgzMjc2NyAtIHBSZXZlcmItPm1fblJ2YkxwZkZiayk7CisKKyAgICAgICAgICAgIGlmICh2YWx1ZTE2ID09IDEwMDApIHsKKyAgICAgICAgICAgICAgICBwUmV2ZXJiLT5tX25SdmJMcGZGYmsgPSAwOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpbnQzMl90IGRHMiwgYiwgZGVsdGE7CisKKyAgICAgICAgICAgICAgICB0ZW1wID0gRWZmZWN0c19MaW5lYXIxNlRvTWlsbGliZWxzKHRlbXAyKTsKKyAgICAgICAgICAgICAgICAvLyBHXzUwMDBIeiA9IEdfREMgKiAoMTAwMC9SRVZFUkJfUEFSQU1fREVDQVlfSEZfUkFUSU8pIGluIG1pbGxpYmVscworCisgICAgICAgICAgICAgICAgdmFsdWUzMiA9ICgoaW50MzJfdCkgMTAwMCA8PCAxNSkgLyAoaW50MzJfdCkgdmFsdWUxNjsKKyAgICAgICAgICAgICAgICBMT0dWKCJSRVZFUkJfUEFSQU1fREVDQVlfSEZfUkFUSU8sIERDIGdhaW4gJWQsIERDIGdhaW4gbUIgJWQsIDEwMDAvUiAlZCIsIHRlbXAyLCB0ZW1wLCB2YWx1ZTMyKTsKKworICAgICAgICAgICAgICAgIHRlbXAgPSAoaW50MzJfdCkgKCgoaW50NjRfdCkgdGVtcCAqIChpbnQ2NF90KSB2YWx1ZTMyKSA+PiAxNSk7CisKKyAgICAgICAgICAgICAgICBpZiAodGVtcCA8IC00MDAwKSB7CisgICAgICAgICAgICAgICAgICAgIExPR1YoIlJFVkVSQl9QQVJBTV9ERUNBWV9IRl9SQVRJTyBIRiBnYWluIG92ZXJmbG93ICVkIG1CIiwgdGVtcCk7CisgICAgICAgICAgICAgICAgICAgIHRlbXAgPSAtNDAwMDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB0ZW1wID0gRWZmZWN0c19NaWxsaWJlbHNUb0xpbmVhcjE2KHRlbXApOworICAgICAgICAgICAgICAgIExPR1YoIlJFVkVSQl9QQVJBTV9ERUNBWV9IRl9SQVRJTywgSEYgZ2FpbiAlZCIsIHRlbXApOworICAgICAgICAgICAgICAgIC8vIGRHXjIKKyAgICAgICAgICAgICAgICB0ZW1wID0gKHRlbXAyIDw8IDE1KSAvIHRlbXA7CisgICAgICAgICAgICAgICAgZEcyID0gKGludDMyX3QpICgoKGludDY0X3QpIHRlbXAgKiAoaW50NjRfdCkgdGVtcCkgPj4gMTUpOworCisgICAgICAgICAgICAgICAgLy8gYiA9IDIqKEMtZEdeMikvKDEtZEdeMikKKyAgICAgICAgICAgICAgICBiID0gKGludDMyX3QpICgoKChpbnQ2NF90KSAxIDw8ICgxNSArIDEpKQorICAgICAgICAgICAgICAgICAgICAgICAgKiAoKGludDY0X3QpIHBSZXZlcmItPm1fbkNvc1dUXzVLSHogLSAoaW50NjRfdCkgZEcyKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIC8gKChpbnQ2NF90KSAzMjc2NyAtIChpbnQ2NF90KSBkRzIpKTsKKworICAgICAgICAgICAgICAgIC8vIGRlbHRhID0gYl4yIC0gNAorICAgICAgICAgICAgICAgIGRlbHRhID0gKGludDMyX3QpICgoKChpbnQ2NF90KSBiICogKGludDY0X3QpIGIpID4+IDE1KSAtICgxIDw8ICgxNQorICAgICAgICAgICAgICAgICAgICAgICAgKyAyKSkpOworCisgICAgICAgICAgICAgICAgLy8gbV9uUm9vbUxwZkZiayA9IC1hMSA9IC0gKC0gYiArIHNxcnQoZGVsdGEpKSAvIDIKKyAgICAgICAgICAgICAgICBwUmV2ZXJiLT5tX25SdmJMcGZGYmsgPSAoYiAtIEVmZmVjdHNfU3FydChkZWx0YSkgKiAxODEpID4+IDE7CisKKyAgICAgICAgICAgICAgICBMT0dWKCJSRVZFUkJfUEFSQU1fREVDQVlfSEZfUkFUSU8sIGRHMiAlZCwgYiAlZCwgZGVsdGEgJWQiLCBkRzIsIGIsIGRlbHRhKTsKKworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBMT0dWKCJSRVZFUkJfUEFSQU1fREVDQVlfSEZfUkFUSU8sIGdhaW4gJWQsIG1fblJ2YkxwZkZiayAlZCwgbV9uUnZiTHBmRndkICVkIiwgdGVtcDIsIHBSZXZlcmItPm1fblJ2YkxwZkZiaywgcFJldmVyYi0+bV9uUnZiTHBmRndkKTsKKworICAgICAgICAgICAgcFJldmVyYi0+bV9uUnZiTHBmRndkCisgICAgICAgICAgICAgICAgICAgID0gTVVMVF9FRzFfRUcxKHRlbXAyLCAoMzI3NjcgLSBwUmV2ZXJiLT5tX25SdmJMcGZGYmspKTsKKworICAgICAgICAgICAgaWYgKHBhcmFtID09IFJFVkVSQl9QQVJBTV9ERUNBWV9IRl9SQVRJTykKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHZhbHVlMTYgPSBwUHJvcGVydGllcy0+cmVmbGVjdGlvbnNMZXZlbDsKKyAgICAgICAgICAgIC8qIEZBTEwgVEhST1VHSCAqLworCisgICAgICAgIGNhc2UgUkVWRVJCX1BBUkFNX1JFRkxFQ1RJT05TX0xFVkVMOgorICAgICAgICAgICAgLy8gV2UgbGltaXQgbWF4IHZhbHVlIHRvIDAgYmVjYXVzZSBnYWluIGlzIGxpbWl0ZWQgdG8gMGRCCisgICAgICAgICAgICBpZiAodmFsdWUxNiA+IDAgfHwgdmFsdWUxNiA8IC02MDAwKQorICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworCisgICAgICAgICAgICAvLyBDb252ZXJ0IG1pbGxpYmVscyB0byBsaW5lYXIgMTYgYml0IHNpZ25lZCBhbmQgcmVjb21wdXRlIG1fc0Vhcmx5TC5tX25HYWluW2ldIGFuZCBtX3NFYXJseVIubV9uR2FpbltpXS4KKyAgICAgICAgICAgIHZhbHVlMTYgPSBFZmZlY3RzX01pbGxpYmVsc1RvTGluZWFyMTYodmFsdWUxNik7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUkVWRVJCX01BWF9OVU1fUkVGTEVDVElPTlM7IGkrKykgeworICAgICAgICAgICAgICAgIHBSZXZlcmItPm1fc0Vhcmx5TC5tX25HYWluW2ldCisgICAgICAgICAgICAgICAgICAgICAgICA9IE1VTFRfRUcxX0VHMShwUHJlc2V0LT5tX3NFYXJseUwubV9uR2FpbltpXSx2YWx1ZTE2KTsKKyAgICAgICAgICAgICAgICBwUmV2ZXJiLT5tX3NFYXJseVIubV9uR2FpbltpXQorICAgICAgICAgICAgICAgICAgICAgICAgPSBNVUxUX0VHMV9FRzEocFByZXNldC0+bV9zRWFybHlSLm1fbkdhaW5baV0sdmFsdWUxNik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwUmV2ZXJiLT5tX25FYXJseUdhaW4gPSB2YWx1ZTE2OworICAgICAgICAgICAgTE9HVigiUkVWRVJCX1BBUkFNX1JFRkxFQ1RJT05TX0xFVkVMLCBtX25FYXJseUdhaW4gJWQiLCBwUmV2ZXJiLT5tX25FYXJseUdhaW4pOworCisgICAgICAgICAgICBpZiAocGFyYW0gPT0gUkVWRVJCX1BBUkFNX1JFRkxFQ1RJT05TX0xFVkVMKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgdmFsdWUzMiA9IHBQcm9wZXJ0aWVzLT5yZWZsZWN0aW9uc0RlbGF5OworICAgICAgICAgICAgLyogRkFMTCBUSFJPVUdIICovCisKKyAgICAgICAgY2FzZSBSRVZFUkJfUEFSQU1fUkVGTEVDVElPTlNfREVMQVk6CisgICAgICAgICAgICAvLyBXZSBsaW1pdCBtYXggdmFsdWUgTUFYX0VBUkxZX1RJTUUKKyAgICAgICAgICAgIC8vIGNvbnZlcnQgbXMgdG8gdGltZSB1bml0cworICAgICAgICAgICAgdGVtcCA9ICh2YWx1ZTMyICogNjU1MzYpIC8gMTAwMDsKKyAgICAgICAgICAgIGlmICh0ZW1wIDwgMCB8fCB0ZW1wID4gTUFYX0VBUkxZX1RJTUUpCisgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisKKyAgICAgICAgICAgIG1heFNhbXBsZXMgPSAoaW50MzJfdCkgKE1BWF9FQVJMWV9USU1FICogcFJldmVyYi0+bV9uU2FtcGxpbmdSYXRlKQorICAgICAgICAgICAgICAgICAgICA+PiAxNjsKKyAgICAgICAgICAgIHRlbXAgPSAodGVtcCAqIHBSZXZlcmItPm1fblNhbXBsaW5nUmF0ZSkgPj4gMTY7CisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUkVWRVJCX01BWF9OVU1fUkVGTEVDVElPTlM7IGkrKykgeworICAgICAgICAgICAgICAgIHRlbXAyID0gdGVtcCArICgoKGludDMyX3QpIHBQcmVzZXQtPm1fc0Vhcmx5TC5tX3pEZWxheVtpXQorICAgICAgICAgICAgICAgICAgICAgICAgKiBwUmV2ZXJiLT5tX25TYW1wbGluZ1JhdGUpID4+IDE2KTsKKyAgICAgICAgICAgICAgICBpZiAodGVtcDIgPiBtYXhTYW1wbGVzKQorICAgICAgICAgICAgICAgICAgICB0ZW1wMiA9IG1heFNhbXBsZXM7CisgICAgICAgICAgICAgICAgcFJldmVyYi0+bV9zRWFybHlMLm1fekRlbGF5W2ldID0gcFJldmVyYi0+bV9uRWFybHkwaW4gKyB0ZW1wMjsKKyAgICAgICAgICAgICAgICB0ZW1wMiA9IHRlbXAgKyAoKChpbnQzMl90KSBwUHJlc2V0LT5tX3NFYXJseVIubV96RGVsYXlbaV0KKyAgICAgICAgICAgICAgICAgICAgICAgICogcFJldmVyYi0+bV9uU2FtcGxpbmdSYXRlKSA+PiAxNik7CisgICAgICAgICAgICAgICAgaWYgKHRlbXAyID4gbWF4U2FtcGxlcykKKyAgICAgICAgICAgICAgICAgICAgdGVtcDIgPSBtYXhTYW1wbGVzOworICAgICAgICAgICAgICAgIHBSZXZlcmItPm1fc0Vhcmx5Ui5tX3pEZWxheVtpXSA9IHBSZXZlcmItPm1fbkVhcmx5MWluICsgdGVtcDI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwUmV2ZXJiLT5tX25FYXJseURlbGF5ID0gdGVtcDsKKworICAgICAgICAgICAgTE9HVigiUkVWRVJCX1BBUkFNX1JFRkxFQ1RJT05TX0RFTEFZLCBtX25FYXJseURlbGF5IHNtcHMgJWQgbWF4IHNtcCBkZWxheSAlZCIsIHBSZXZlcmItPm1fbkVhcmx5RGVsYXksIG1heFNhbXBsZXMpOworCisgICAgICAgICAgICAvLyBDb252ZXJ0IG1pbGxpc2Vjb25kcyB0byBzYW1wbGUgY291bnQgPT4gbV9uRWFybHlEZWxheQorICAgICAgICAgICAgaWYgKHBhcmFtID09IFJFVkVSQl9QQVJBTV9SRUZMRUNUSU9OU19ERUxBWSkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIHZhbHVlMTYgPSBwUHJvcGVydGllcy0+cmV2ZXJiTGV2ZWw7CisgICAgICAgICAgICAvKiBGQUxMIFRIUk9VR0ggKi8KKworICAgICAgICBjYXNlIFJFVkVSQl9QQVJBTV9SRVZFUkJfTEVWRUw6CisgICAgICAgICAgICAvLyBXZSBsaW1pdCBtYXggdmFsdWUgdG8gMCBiZWNhdXNlIGdhaW4gaXMgbGltaXRlZCB0byAwZEIKKyAgICAgICAgICAgIGlmICh2YWx1ZTE2ID4gMCB8fCB2YWx1ZTE2IDwgLTYwMDApCisgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgICAgICAgICAvLyBDb252ZXJ0IG1pbGxpYmVscyB0byBsaW5lYXIgMTYgYml0cyAoZ2FuZ2UgMCAtIDgxOTEpID0+IG1fbkxhdGVHYWluLgorICAgICAgICAgICAgcFJldmVyYi0+bV9uTGF0ZUdhaW4gPSBFZmZlY3RzX01pbGxpYmVsc1RvTGluZWFyMTYodmFsdWUxNikgPj4gMjsKKworICAgICAgICAgICAgTE9HVigiUkVWRVJCX1BBUkFNX1JFVkVSQl9MRVZFTCwgbV9uTGF0ZUdhaW4gJWQiLCBwUmV2ZXJiLT5tX25MYXRlR2Fpbik7CisKKyAgICAgICAgICAgIGlmIChwYXJhbSA9PSBSRVZFUkJfUEFSQU1fUkVWRVJCX0xFVkVMKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgdmFsdWUzMiA9IHBQcm9wZXJ0aWVzLT5yZXZlcmJEZWxheTsKKyAgICAgICAgICAgIC8qIEZBTEwgVEhST1VHSCAqLworCisgICAgICAgIGNhc2UgUkVWRVJCX1BBUkFNX1JFVkVSQl9ERUxBWToKKyAgICAgICAgICAgIC8vIFdlIGxpbWl0IG1heCB2YWx1ZSB0byBNQVhfREVMQVlfVElNRQorICAgICAgICAgICAgLy8gY29udmVydCBtcyB0byB0aW1lIHVuaXRzCisgICAgICAgICAgICB0ZW1wID0gKHZhbHVlMzIgKiA2NTUzNikgLyAxMDAwOworICAgICAgICAgICAgaWYgKHRlbXAgPCAwIHx8IHRlbXAgPiBNQVhfREVMQVlfVElNRSkKKyAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgICAgICAgICAgbWF4U2FtcGxlcyA9IChpbnQzMl90KSAoTUFYX0RFTEFZX1RJTUUgKiBwUmV2ZXJiLT5tX25TYW1wbGluZ1JhdGUpCisgICAgICAgICAgICAgICAgICAgID4+IDE2OworICAgICAgICAgICAgdGVtcCA9ICh0ZW1wICogcFJldmVyYi0+bV9uU2FtcGxpbmdSYXRlKSA+PiAxNjsKKyAgICAgICAgICAgIGlmICgodGVtcCArIHBSZXZlcmItPm1fbk1heEV4Y3Vyc2lvbikgPiBtYXhTYW1wbGVzKSB7CisgICAgICAgICAgICAgICAgdGVtcCA9IG1heFNhbXBsZXMgLSBwUmV2ZXJiLT5tX25NYXhFeGN1cnNpb247CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodGVtcCA8IHBSZXZlcmItPm1fbk1heEV4Y3Vyc2lvbikgeworICAgICAgICAgICAgICAgIHRlbXAgPSBwUmV2ZXJiLT5tX25NYXhFeGN1cnNpb247CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRlbXAgLT0gcFJldmVyYi0+bV9uTGF0ZURlbGF5OworICAgICAgICAgICAgcFJldmVyYi0+bV9uRGVsYXkwT3V0ICs9IHRlbXA7CisgICAgICAgICAgICBwUmV2ZXJiLT5tX25EZWxheTFPdXQgKz0gdGVtcDsKKyAgICAgICAgICAgIHBSZXZlcmItPm1fbkxhdGVEZWxheSArPSB0ZW1wOworCisgICAgICAgICAgICBMT0dWKCJSRVZFUkJfUEFSQU1fUkVWRVJCX0RFTEFZLCBtX25MYXRlRGVsYXkgc21wcyAlZCBtYXggc21wIGRlbGF5ICVkIiwgcFJldmVyYi0+bV9uTGF0ZURlbGF5LCBtYXhTYW1wbGVzKTsKKworICAgICAgICAgICAgLy8gQ29udmVydCBtaWxsaXNlY29uZHMgdG8gc2FtcGxlIGNvdW50ID0+IG1fbkRlbGF5MU91dCArIG1fbk1heEV4Y3Vyc2lvbgorICAgICAgICAgICAgaWYgKHBhcmFtID09IFJFVkVSQl9QQVJBTV9SRVZFUkJfREVMQVkpCisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIHZhbHVlMTYgPSBwUHJvcGVydGllcy0+ZGlmZnVzaW9uOworICAgICAgICAgICAgLyogRkFMTCBUSFJPVUdIICovCisKKyAgICAgICAgY2FzZSBSRVZFUkJfUEFSQU1fRElGRlVTSU9OOgorICAgICAgICAgICAgaWYgKHZhbHVlMTYgPCAwIHx8IHZhbHVlMTYgPiAxMDAwKQorICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworCisgICAgICAgICAgICAvLyBDb252ZXJ0IHBlciBtaWxsZSB0byBtX3NBcDAubV9uQXBHYWluLCBtX3NBcDEubV9uQXBHYWluCisgICAgICAgICAgICBwUmV2ZXJiLT5tX3NBcDAubV9uQXBHYWluID0gQVAwX0dBSU5fQkFTRSArICgoaW50MzJfdCkgdmFsdWUxNgorICAgICAgICAgICAgICAgICAgICAqIEFQMF9HQUlOX1JBTkdFKSAvIDEwMDA7CisgICAgICAgICAgICBwUmV2ZXJiLT5tX3NBcDEubV9uQXBHYWluID0gQVAxX0dBSU5fQkFTRSArICgoaW50MzJfdCkgdmFsdWUxNgorICAgICAgICAgICAgICAgICAgICAqIEFQMV9HQUlOX1JBTkdFKSAvIDEwMDA7CisKKyAgICAgICAgICAgIExPR1YoIlJFVkVSQl9QQVJBTV9ESUZGVVNJT04sIG1fc0FwMC5tX25BcEdhaW4gJWQgbV9zQXAxLm1fbkFwR2FpbiAlZCIsIHBSZXZlcmItPm1fc0FwMC5tX25BcEdhaW4sIHBSZXZlcmItPm1fc0FwMS5tX25BcEdhaW4pOworCisgICAgICAgICAgICBpZiAocGFyYW0gPT0gUkVWRVJCX1BBUkFNX0RJRkZVU0lPTikKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgdmFsdWUxNiA9IHBQcm9wZXJ0aWVzLT5kZW5zaXR5OworICAgICAgICAgICAgLyogRkFMTCBUSFJPVUdIICovCisKKyAgICAgICAgY2FzZSBSRVZFUkJfUEFSQU1fREVOU0lUWToKKyAgICAgICAgICAgIGlmICh2YWx1ZTE2IDwgMCB8fCB2YWx1ZTE2ID4gMTAwMCkKKyAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKKworICAgICAgICAgICAgLy8gQ29udmVydCBwZXIgbWlsbGUgdG8gbV9zQXAwLm1fekFwT3V0LCBtX3NBcDEubV96QXBPdXQKKyAgICAgICAgICAgIG1heFNhbXBsZXMgPSAoaW50MzJfdCkgKE1BWF9BUF9USU1FICogcFJldmVyYi0+bV9uU2FtcGxpbmdSYXRlKSA+PiAxNjsKKworICAgICAgICAgICAgdGVtcCA9IEFQMF9USU1FX0JBU0UgKyAoKGludDMyX3QpIHZhbHVlMTYgKiBBUDBfVElNRV9SQU5HRSkgLyAxMDAwOworICAgICAgICAgICAgLypsaW50IC1lezcwMn0gc2hpZnQgZm9yIHBlcmZvcm1hbmNlICovCisgICAgICAgICAgICB0ZW1wID0gKHRlbXAgKiBwUmV2ZXJiLT5tX25TYW1wbGluZ1JhdGUpID4+IDE2OworICAgICAgICAgICAgaWYgKHRlbXAgPiBtYXhTYW1wbGVzKQorICAgICAgICAgICAgICAgIHRlbXAgPSBtYXhTYW1wbGVzOworICAgICAgICAgICAgcFJldmVyYi0+bV9zQXAwLm1fekFwT3V0ID0gKHVpbnQxNl90KSAocFJldmVyYi0+bV9zQXAwLm1fekFwSW4gKyB0ZW1wKTsKKworICAgICAgICAgICAgTE9HVigiUkVWRVJCX1BBUkFNX0RFTlNJVFksIEFwMCBkZWxheSBzbXBzICVkIiwgdGVtcCk7CisKKyAgICAgICAgICAgIHRlbXAgPSBBUDFfVElNRV9CQVNFICsgKChpbnQzMl90KSB2YWx1ZTE2ICogQVAxX1RJTUVfUkFOR0UpIC8gMTAwMDsKKyAgICAgICAgICAgIC8qbGludCAtZXs3MDJ9IHNoaWZ0IGZvciBwZXJmb3JtYW5jZSAqLworICAgICAgICAgICAgdGVtcCA9ICh0ZW1wICogcFJldmVyYi0+bV9uU2FtcGxpbmdSYXRlKSA+PiAxNjsKKyAgICAgICAgICAgIGlmICh0ZW1wID4gbWF4U2FtcGxlcykKKyAgICAgICAgICAgICAgICB0ZW1wID0gbWF4U2FtcGxlczsKKyAgICAgICAgICAgIHBSZXZlcmItPm1fc0FwMS5tX3pBcE91dCA9ICh1aW50MTZfdCkgKHBSZXZlcmItPm1fc0FwMS5tX3pBcEluICsgdGVtcCk7CisKKyAgICAgICAgICAgIExPR1YoIkFwMSBkZWxheSBzbXBzICVkIiwgdGVtcCk7CisKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiAwOworfSAvKiBlbmQgUmV2ZXJiX3NldFBhcmFtZXRlciAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFJldmVyYlVwZGF0ZVhmYWRlCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFB1cnBvc2U6CisgKiBVcGRhdGUgdGhlIHhmYWRlIHBhcmFtZXRlcnMgYXMgcmVxdWlyZWQKKyAqCisgKiBJbnB1dHM6CisgKiBuTnVtU2FtcGxlc1RvQWRkIC0gbnVtYmVyIG9mIHNhbXBsZXMgdG8gd3JpdGUgdG8gYnVmZmVyCisgKgorICogT3V0cHV0czoKKyAqCisgKgorICogU2lkZSBFZmZlY3RzOgorICogLSB4ZmFkZSBwYXJhbWV0ZXJzIHdpbGwgYmUgY2hhbmdlZAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCitzdGF0aWMgaW50IFJldmVyYlVwZGF0ZVhmYWRlKHJldmVyYl9vYmplY3RfdCAqcFJldmVyYiwgaW50IG5OdW1TYW1wbGVzVG9BZGQpIHsKKyAgICB1aW50MTZfdCBuT2Zmc2V0OworICAgIGludDE2X3QgdGVtcENvczsKKyAgICBpbnQxNl90IHRlbXBTaW47CisKKyAgICBpZiAocFJldmVyYi0+bV9uWGZhZGVDb3VudGVyID49IHBSZXZlcmItPm1fblhmYWRlSW50ZXJ2YWwpIHsKKyAgICAgICAgLyogdXBkYXRlIGludGVydmFsIGhhcyBlbGFwc2VkLCBzbyByZXNldCBjb3VudGVyICovCisgICAgICAgIHBSZXZlcmItPm1fblhmYWRlQ291bnRlciA9IDA7CisKKyAgICAgICAgLy8gUGluIHRoZSBzaW4sY29zIHZhbHVlcyB0byBtaW4gLyBtYXggdmFsdWVzIHRvIGVuc3VyZSB0aGF0IHRoZQorICAgICAgICAvLyBtb2R1bGF0ZWQgdGFwcycgY29lZnMgYXJlIHplcm8gKHRodXMgbm8gY2xpY2tzKQorICAgICAgICBpZiAocFJldmVyYi0+bV9uUGhhc2VJbmNyZW1lbnQgPiAwKSB7CisgICAgICAgICAgICAvLyBpZiBwaGFzZSBpbmNyZW1lbnQgPiAwLCB0aGVuIHNpbiAtPiAxLCBjb3MgLT4gMAorICAgICAgICAgICAgcFJldmVyYi0+bV9uU2luID0gMzI3Njc7CisgICAgICAgICAgICBwUmV2ZXJiLT5tX25Db3MgPSAwOworCisgICAgICAgICAgICAvLyByZXNldCB0aGUgcGhhc2UgdG8gbWF0Y2ggdGhlIHNpbiwgY29zIHZhbHVlcworICAgICAgICAgICAgcFJldmVyYi0+bV9uUGhhc2UgPSAzMjc2NzsKKworICAgICAgICAgICAgLy8gbW9kdWxhdGUgdGhlIGNyb3NzIHRhcHMgYmVjYXVzZSB0aGVpciB0YXAgY29lZnMgYXJlIHplcm8KKyAgICAgICAgICAgIG5PZmZzZXQgPSBSZXZlcmJDYWxjdWxhdGVOb2lzZShwUmV2ZXJiKTsKKworICAgICAgICAgICAgcFJldmVyYi0+bV96RDFDcm9zcyA9IHBSZXZlcmItPm1fbkRlbGF5MU91dAorICAgICAgICAgICAgICAgICAgICAtIHBSZXZlcmItPm1fbk1heEV4Y3Vyc2lvbiArIG5PZmZzZXQ7CisKKyAgICAgICAgICAgIG5PZmZzZXQgPSBSZXZlcmJDYWxjdWxhdGVOb2lzZShwUmV2ZXJiKTsKKworICAgICAgICAgICAgcFJldmVyYi0+bV96RDBDcm9zcyA9IHBSZXZlcmItPm1fbkRlbGF5ME91dAorICAgICAgICAgICAgICAgICAgICAtIHBSZXZlcmItPm1fbk1heEV4Y3Vyc2lvbiAtIG5PZmZzZXQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBpZiBwaGFzZSBpbmNyZW1lbnQgPCAwLCB0aGVuIHNpbiAtPiAwLCBjb3MgLT4gMQorICAgICAgICAgICAgcFJldmVyYi0+bV9uU2luID0gMDsKKyAgICAgICAgICAgIHBSZXZlcmItPm1fbkNvcyA9IDMyNzY3OworCisgICAgICAgICAgICAvLyByZXNldCB0aGUgcGhhc2UgdG8gbWF0Y2ggdGhlIHNpbiwgY29zIHZhbHVlcworICAgICAgICAgICAgcFJldmVyYi0+bV9uUGhhc2UgPSAtMzI3Njg7CisKKyAgICAgICAgICAgIC8vIG1vZHVsYXRlIHRoZSBzZWxmIHRhcHMgYmVjYXVzZSB0aGVpciB0YXAgY29lZnMgYXJlIHplcm8KKyAgICAgICAgICAgIG5PZmZzZXQgPSBSZXZlcmJDYWxjdWxhdGVOb2lzZShwUmV2ZXJiKTsKKworICAgICAgICAgICAgcFJldmVyYi0+bV96RDBTZWxmID0gcFJldmVyYi0+bV9uRGVsYXkwT3V0CisgICAgICAgICAgICAgICAgICAgIC0gcFJldmVyYi0+bV9uTWF4RXhjdXJzaW9uIC0gbk9mZnNldDsKKworICAgICAgICAgICAgbk9mZnNldCA9IFJldmVyYkNhbGN1bGF0ZU5vaXNlKHBSZXZlcmIpOworCisgICAgICAgICAgICBwUmV2ZXJiLT5tX3pEMVNlbGYgPSBwUmV2ZXJiLT5tX25EZWxheTFPdXQKKyAgICAgICAgICAgICAgICAgICAgLSBwUmV2ZXJiLT5tX25NYXhFeGN1cnNpb24gKyBuT2Zmc2V0OworCisgICAgICAgIH0gLy8gZW5kIGlmLWVsc2UgKHBSZXZlcmItPm1fblBoYXNlSW5jcmVtZW50ID4gMCkKKworICAgICAgICAvLyBSZXZlcnNlIHRoZSBkaXJlY3Rpb24gb2YgdGhlIHNpbixjb3Mgc28gdGhhdCB0aGUKKyAgICAgICAgLy8gdGFwIHdob3NlIGNvZWYgd2FzIHByZXZpb3VzbHkgaW5jcmVhc2luZyBub3cgZGVjcmVhc2VzCisgICAgICAgIC8vIGFuZCB2aWNlIHZlcnNhCisgICAgICAgIHBSZXZlcmItPm1fblBoYXNlSW5jcmVtZW50ID0gLXBSZXZlcmItPm1fblBoYXNlSW5jcmVtZW50OworCisgICAgfSAvLyBlbmQgaWYgY291bnRlciA+PSB1cGRhdGUgaW50ZXJ2YWwKKworICAgIC8vY29tcHV0ZSB3aGF0IHBoYXNlIHdpbGwgYmUgbmV4dCB0aW1lCisgICAgcFJldmVyYi0+bV9uUGhhc2UgKz0gcFJldmVyYi0+bV9uUGhhc2VJbmNyZW1lbnQ7CisKKyAgICAvL2NhbGN1bGF0ZSB3aGF0IHRoZSBuZXcgc2luIGFuZCBjb3MgbmVlZCB0byByZWFjaCBieSB0aGUgbmV4dCB1cGRhdGUKKyAgICBSZXZlcmJDYWxjdWxhdGVTaW5Db3MocFJldmVyYi0+bV9uUGhhc2UsICZ0ZW1wU2luLCAmdGVtcENvcyk7CisKKyAgICAvL2NhbGN1bGF0ZSB0aGUgcGVyLXNhbXBsZSBpbmNyZW1lbnQgcmVxdWlyZWQgdG8gZ2V0IHRoZXJlIGJ5IHRoZSBuZXh0IHVwZGF0ZQorICAgIC8qbGludCAtZXs3MDJ9IHNoaWZ0IGZvciBwZXJmb3JtYW5jZSAqLworICAgIHBSZXZlcmItPm1fblNpbkluY3JlbWVudCA9ICh0ZW1wU2luIC0gcFJldmVyYi0+bV9uU2luKQorICAgICAgICAgICAgPj4gcFJldmVyYi0+bV9uVXBkYXRlUGVyaW9kSW5CaXRzOworCisgICAgLypsaW50IC1lezcwMn0gc2hpZnQgZm9yIHBlcmZvcm1hbmNlICovCisgICAgcFJldmVyYi0+bV9uQ29zSW5jcmVtZW50ID0gKHRlbXBDb3MgLSBwUmV2ZXJiLT5tX25Db3MpCisgICAgICAgICAgICA+PiBwUmV2ZXJiLT5tX25VcGRhdGVQZXJpb2RJbkJpdHM7CisKKyAgICAvKiBpbmNyZW1lbnQgdXBkYXRlIGNvdW50ZXIgKi8KKyAgICBwUmV2ZXJiLT5tX25YZmFkZUNvdW50ZXIgKz0gKHVpbnQxNl90KSBuTnVtU2FtcGxlc1RvQWRkOworCisgICAgcmV0dXJuIDA7CisKK30gLyogZW5kIFJldmVyYlVwZGF0ZVhmYWRlICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUmV2ZXJiQ2FsY3VsYXRlTm9pc2UKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUHVycG9zZToKKyAqIENhbGN1bGF0ZSBhIG5vaXNlIHNhbXBsZSBhbmQgbGltaXQgaXRzIHZhbHVlCisgKgorICogSW5wdXRzOgorICogbk1heEV4Y3Vyc2lvbiAtIG5vaXNlIHZhbHVlIGlzIGxpbWl0ZWQgdG8gdGhpcyB2YWx1ZQorICogcG5Ob2lzZSAtIHJldHVybiBuZXcgbm9pc2Ugc2FtcGxlIGluIHRoaXMgKG5vdCBsaW1pdGVkKQorICoKKyAqIE91dHB1dHM6CisgKiBuZXcgbGltaXRlZCBub2lzZSB2YWx1ZQorICoKKyAqIFNpZGUgRWZmZWN0czoKKyAqIC0gKnBuTm9pc2Ugbm9pc2UgdmFsdWUgaXMgdXBkYXRlZAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCitzdGF0aWMgdWludDE2X3QgUmV2ZXJiQ2FsY3VsYXRlTm9pc2UocmV2ZXJiX29iamVjdF90ICpwUmV2ZXJiKSB7CisgICAgaW50MTZfdCBuTm9pc2UgPSBwUmV2ZXJiLT5tX25Ob2lzZTsKKworICAgIC8vIGNhbGN1bGF0ZSBuZXcgbm9pc2UgdmFsdWUKKyAgICBpZiAocFJldmVyYi0+bV9iVXNlTm9pc2UpIHsKKyAgICAgICAgbk5vaXNlID0gKGludDE2X3QpIChuTm9pc2UgKiA1ICsgMSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbk5vaXNlID0gMDsKKyAgICB9CisKKyAgICBwUmV2ZXJiLT5tX25Ob2lzZSA9IG5Ob2lzZTsKKyAgICAvLyByZXR1cm4gdGhlIGxpbWl0ZWQgbm9pc2UgdmFsdWUKKyAgICByZXR1cm4gKHBSZXZlcmItPm1fbk1heEV4Y3Vyc2lvbiAmIG5Ob2lzZSk7CisKK30gLyogZW5kIFJldmVyYkNhbGN1bGF0ZU5vaXNlICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUmV2ZXJiQ2FsY3VsYXRlU2luQ29zCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFB1cnBvc2U6CisgKiBDYWxjdWxhdGUgYSBuZXcgc2luIGFuZCBjb3NpbmUgdmFsdWUgYmFzZWQgb24gdGhlIGdpdmVuIHBoYXNlCisgKgorICogSW5wdXRzOgorICogblBoYXNlICAgLSBwaGFzZSBhbmdsZQorICogcG5TaW4gICAgLSBpbnB1dCBvbGQgdmFsdWUsIG91dHB1dCBuZXcgdmFsdWUKKyAqIHBuQ29zICAgIC0gaW5wdXQgb2xkIHZhbHVlLCBvdXRwdXQgbmV3IHZhbHVlCisgKgorICogT3V0cHV0czoKKyAqCisgKiBTaWRlIEVmZmVjdHM6CisgKiAtICpwblNpbiwgKnBuQ29zIGFyZSB1cGRhdGVkCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK3N0YXRpYyBpbnQgUmV2ZXJiQ2FsY3VsYXRlU2luQ29zKGludDE2X3QgblBoYXNlLCBpbnQxNl90ICpwblNpbiwgaW50MTZfdCAqcG5Db3MpIHsKKyAgICBpbnQzMl90IG5UZW1wOworICAgIGludDMyX3Qgbk5ldEFuZ2xlOworCisgICAgLy8gIC0xIDw9ICBuUGhhc2UgIDwgMQorICAgIC8vIEhvd2V2ZXIsIGZvciB0aGUgY2FsY3VsYXRpb24sIHdlIG5lZWQgYSB2YWx1ZQorICAgIC8vIHRoYXQgcmFuZ2VzIGZyb20gLTEvMiB0byArMS8yLCBzbyBkaXZpZGUgdGhlIHBoYXNlIGJ5IDIKKyAgICAvKmxpbnQgLWV7NzAyfSBzaGlmdCBmb3IgcGVyZm9ybWFuY2UgKi8KKyAgICBuTmV0QW5nbGUgPSBuUGhhc2UgPj4gMTsKKworICAgIC8qCisgICAgIEltcGxlbWVudCB0aGUgZm9sbG93aW5nCisgICAgIHNpbih4KSA9ICgyLTQqYykqeF4yICsgYyArIHgKKyAgICAgY29zKHgpID0gKDItNCpjKSp4XjIgKyBjIC0geAorCisgICAgIHdoZXJlICBjID0gMS9zcXJ0KDIpCisgICAgIHVzaW5nIHRoZSBhMCArIHgqKGExICsgeCphMikgYXBwcm9hY2gKKyAgICAgKi8KKworICAgIC8qIGxpbWl0IHRoZSBpbnB1dCAiYW5nbGUiIHRvIGJlIGJldHdlZW4gLTAuNSBhbmQgKzAuNSAqLworICAgIGlmIChuTmV0QW5nbGUgPiBFRzFfSEFMRikgeworICAgICAgICBuTmV0QW5nbGUgPSBFRzFfSEFMRjsKKyAgICB9IGVsc2UgaWYgKG5OZXRBbmdsZSA8IEVHMV9NSU5VU19IQUxGKSB7CisgICAgICAgIG5OZXRBbmdsZSA9IEVHMV9NSU5VU19IQUxGOworICAgIH0KKworICAgIC8qIGNhbGN1bGF0ZSBzaW4gKi8KKyAgICBuVGVtcCA9IEVHMV9PTkUgKyBNVUxUX0VHMV9FRzEoUkVWRVJCX1BBTl9HMiwgbk5ldEFuZ2xlKTsKKyAgICBuVGVtcCA9IFJFVkVSQl9QQU5fRzAgKyBNVUxUX0VHMV9FRzEoblRlbXAsIG5OZXRBbmdsZSk7CisgICAgKnBuU2luID0gKGludDE2X3QpIFNBVFVSQVRFX0VHMShuVGVtcCk7CisKKyAgICAvKiBjYWxjdWxhdGUgY29zICovCisgICAgblRlbXAgPSAtRUcxX09ORSArIE1VTFRfRUcxX0VHMShSRVZFUkJfUEFOX0cyLCBuTmV0QW5nbGUpOworICAgIG5UZW1wID0gUkVWRVJCX1BBTl9HMCArIE1VTFRfRUcxX0VHMShuVGVtcCwgbk5ldEFuZ2xlKTsKKyAgICAqcG5Db3MgPSAoaW50MTZfdCkgU0FUVVJBVEVfRUcxKG5UZW1wKTsKKworICAgIHJldHVybiAwOworfSAvKiBlbmQgUmV2ZXJiQ2FsY3VsYXRlU2luQ29zICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUmV2ZXJiCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFB1cnBvc2U6CisgKiBhcHBseSByZXZlcmIgdG8gdGhlIGdpdmVuIHNpZ25hbAorICoKKyAqIElucHV0czoKKyAqIG5OdQorICogcG5TaW4gICAgLSBpbnB1dCBvbGQgdmFsdWUsIG91dHB1dCBuZXcgdmFsdWUKKyAqIHBuQ29zICAgIC0gaW5wdXQgb2xkIHZhbHVlLCBvdXRwdXQgbmV3IHZhbHVlCisgKgorICogT3V0cHV0czoKKyAqIG51bWJlciBvZiBzYW1wbGVzIGFjdHVhbGx5IHJldmVyYmVyYXRlZAorICoKKyAqIFNpZGUgRWZmZWN0czoKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworc3RhdGljIGludCBSZXZlcmIocmV2ZXJiX29iamVjdF90ICpwUmV2ZXJiLCBpbnQgbk51bVNhbXBsZXNUb0FkZCwKKyAgICAgICAgc2hvcnQgKnBPdXRwdXRCdWZmZXIsIHNob3J0ICpwSW5wdXRCdWZmZXIpIHsKKyAgICBpbnQzMl90IGk7CisgICAgaW50MzJfdCBuRGVsYXlPdXQwOworICAgIGludDMyX3QgbkRlbGF5T3V0MTsKKyAgICB1aW50MTZfdCBuQmFzZTsKKworICAgIHVpbnQzMl90IG5BZGRyOworICAgIGludDMyX3QgblRlbXAxOworICAgIGludDMyX3QgblRlbXAyOworICAgIGludDMyX3QgbkFwSW47CisgICAgaW50MzJfdCBuQXBPdXQ7CisKKyAgICBpbnQzMl90IGo7CisgICAgaW50MzJfdCBuRWFybHlPdXQ7CisKKyAgICBpbnQzMl90IHRlbXBWYWx1ZTsKKworICAgIC8vIGdldCB0aGUgYmFzZSBhZGRyZXNzCisgICAgbkJhc2UgPSBwUmV2ZXJiLT5tX25CYXNlSW5kZXg7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbk51bVNhbXBsZXNUb0FkZDsgaSsrKSB7CisgICAgICAgIC8vICoqKioqKioqKiogTGVmdCBBbGxwYXNzIC0gc3RhcnQKKyAgICAgICAgbkFwSW4gPSAqcElucHV0QnVmZmVyOworICAgICAgICBpZiAoIXBSZXZlcmItPm1fQXV4KSB7CisgICAgICAgICAgICBwSW5wdXRCdWZmZXIrKzsKKyAgICAgICAgfQorICAgICAgICAvLyBzdG9yZSB0byBlYXJseSBkZWxheSBsaW5lCisgICAgICAgIG5BZGRyID0gQ0lSQ1VMQVIobkJhc2UsIHBSZXZlcmItPm1fbkVhcmx5MGluLCBwUmV2ZXJiLT5tX25CdWZmZXJNYXNrKTsKKyAgICAgICAgcFJldmVyYi0+bV9uRGVsYXlMaW5lW25BZGRyXSA9IChzaG9ydCkgbkFwSW47CisKKyAgICAgICAgLy8gbGVmdCBpbnB1dCA9IChsZWZ0IGRyeSAqIG1fbkxhdGVHYWluKSArIHJpZ2h0IGZlZWRiYWNrIGZyb20gcHJldmlvdXMgcGVyaW9kCisKKyAgICAgICAgbkFwSW4gPSBTQVRVUkFURShuQXBJbiArIHBSZXZlcmItPm1fblJldkZia1IpOworICAgICAgICBuQXBJbiA9IE1VTFRfRUcxX0VHMShuQXBJbiwgcFJldmVyYi0+bV9uTGF0ZUdhaW4pOworCisgICAgICAgIC8vIGZldGNoIGFsbHBhc3MgZGVsYXkgbGluZSBvdXQKKyAgICAgICAgLy9uQWRkciA9IENJUkNVTEFSKG5CYXNlLCBwc0FwMC0+bV96QXBPdXQsIHBSZXZlcmItPm1fbkJ1ZmZlck1hc2spOworICAgICAgICBuQWRkcgorICAgICAgICAgICAgICAgID0gQ0lSQ1VMQVIobkJhc2UsIHBSZXZlcmItPm1fc0FwMC5tX3pBcE91dCwgcFJldmVyYi0+bV9uQnVmZmVyTWFzayk7CisgICAgICAgIG5EZWxheU91dDAgPSBwUmV2ZXJiLT5tX25EZWxheUxpbmVbbkFkZHJdOworCisgICAgICAgIC8vIGNhbGN1bGF0ZSBhbGxwYXNzIGZlZWRmb3J3YXJkOyBzdWJ0cmFjdCB0aGUgZmVlZGZvcndhcmQgcmVzdWx0CisgICAgICAgIG5UZW1wMSA9IE1VTFRfRUcxX0VHMShuQXBJbiwgcFJldmVyYi0+bV9zQXAwLm1fbkFwR2Fpbik7CisgICAgICAgIG5BcE91dCA9IFNBVFVSQVRFKG5EZWxheU91dDAgLSBuVGVtcDEpOyAvLyBhbGxwYXNzIG91dHB1dAorCisgICAgICAgIC8vIGNhbGN1bGF0ZSBhbGxwYXNzIGZlZWRiYWNrOyBhZGQgdGhlIGZlZWRiYWNrIHJlc3VsdAorICAgICAgICBuVGVtcDEgPSBNVUxUX0VHMV9FRzEobkFwT3V0LCBwUmV2ZXJiLT5tX3NBcDAubV9uQXBHYWluKTsKKyAgICAgICAgblRlbXAxID0gU0FUVVJBVEUobkFwSW4gKyBuVGVtcDEpOworCisgICAgICAgIC8vIGluamVjdCBpbnRvIGFsbHBhc3MgZGVsYXkKKyAgICAgICAgbkFkZHIKKyAgICAgICAgICAgICAgICA9IENJUkNVTEFSKG5CYXNlLCBwUmV2ZXJiLT5tX3NBcDAubV96QXBJbiwgcFJldmVyYi0+bV9uQnVmZmVyTWFzayk7CisgICAgICAgIHBSZXZlcmItPm1fbkRlbGF5TGluZVtuQWRkcl0gPSAoc2hvcnQpIG5UZW1wMTsKKworICAgICAgICAvLyBpbmplY3QgYWxscGFzcyBvdXRwdXQgaW50byBkZWxheSBsaW5lCisgICAgICAgIG5BZGRyID0gQ0lSQ1VMQVIobkJhc2UsIHBSZXZlcmItPm1fekQwSW4sIHBSZXZlcmItPm1fbkJ1ZmZlck1hc2spOworICAgICAgICBwUmV2ZXJiLT5tX25EZWxheUxpbmVbbkFkZHJdID0gKHNob3J0KSBuQXBPdXQ7CisKKyAgICAgICAgLy8gKioqKioqKioqKiBMZWZ0IEFsbHBhc3MgLSBlbmQKKworICAgICAgICAvLyAqKioqKioqKioqIFJpZ2h0IEFsbHBhc3MgLSBzdGFydAorICAgICAgICBuQXBJbiA9ICgqcElucHV0QnVmZmVyKyspOworICAgICAgICAvLyBzdG9yZSB0byBlYXJseSBkZWxheSBsaW5lCisgICAgICAgIG5BZGRyID0gQ0lSQ1VMQVIobkJhc2UsIHBSZXZlcmItPm1fbkVhcmx5MWluLCBwUmV2ZXJiLT5tX25CdWZmZXJNYXNrKTsKKyAgICAgICAgcFJldmVyYi0+bV9uRGVsYXlMaW5lW25BZGRyXSA9IChzaG9ydCkgbkFwSW47CisKKyAgICAgICAgLy8gcmlnaHQgaW5wdXQgPSAocmlnaHQgZHJ5ICogbV9uTGF0ZUdhaW4pICsgbGVmdCBmZWVkYmFjayBmcm9tIHByZXZpb3VzIHBlcmlvZAorICAgICAgICAvKmxpbnQgLWV7NzAyfSB1c2Ugc2hpZnQgZm9yIHBlcmZvcm1hbmNlICovCisgICAgICAgIG5BcEluID0gU0FUVVJBVEUobkFwSW4gKyBwUmV2ZXJiLT5tX25SZXZGYmtMKTsKKyAgICAgICAgbkFwSW4gPSBNVUxUX0VHMV9FRzEobkFwSW4sIHBSZXZlcmItPm1fbkxhdGVHYWluKTsKKworICAgICAgICAvLyBmZXRjaCBhbGxwYXNzIGRlbGF5IGxpbmUgb3V0CisgICAgICAgIG5BZGRyCisgICAgICAgICAgICAgICAgPSBDSVJDVUxBUihuQmFzZSwgcFJldmVyYi0+bV9zQXAxLm1fekFwT3V0LCBwUmV2ZXJiLT5tX25CdWZmZXJNYXNrKTsKKyAgICAgICAgbkRlbGF5T3V0MSA9IHBSZXZlcmItPm1fbkRlbGF5TGluZVtuQWRkcl07CisKKyAgICAgICAgLy8gY2FsY3VsYXRlIGFsbHBhc3MgZmVlZGZvcndhcmQ7IHN1YnRyYWN0IHRoZSBmZWVkZm9yd2FyZCByZXN1bHQKKyAgICAgICAgblRlbXAxID0gTVVMVF9FRzFfRUcxKG5BcEluLCBwUmV2ZXJiLT5tX3NBcDEubV9uQXBHYWluKTsKKyAgICAgICAgbkFwT3V0ID0gU0FUVVJBVEUobkRlbGF5T3V0MSAtIG5UZW1wMSk7IC8vIGFsbHBhc3Mgb3V0cHV0CisKKyAgICAgICAgLy8gY2FsY3VsYXRlIGFsbHBhc3MgZmVlZGJhY2s7IGFkZCB0aGUgZmVlZGJhY2sgcmVzdWx0CisgICAgICAgIG5UZW1wMSA9IE1VTFRfRUcxX0VHMShuQXBPdXQsIHBSZXZlcmItPm1fc0FwMS5tX25BcEdhaW4pOworICAgICAgICBuVGVtcDEgPSBTQVRVUkFURShuQXBJbiArIG5UZW1wMSk7CisKKyAgICAgICAgLy8gaW5qZWN0IGludG8gYWxscGFzcyBkZWxheQorICAgICAgICBuQWRkcgorICAgICAgICAgICAgICAgID0gQ0lSQ1VMQVIobkJhc2UsIHBSZXZlcmItPm1fc0FwMS5tX3pBcEluLCBwUmV2ZXJiLT5tX25CdWZmZXJNYXNrKTsKKyAgICAgICAgcFJldmVyYi0+bV9uRGVsYXlMaW5lW25BZGRyXSA9IChzaG9ydCkgblRlbXAxOworCisgICAgICAgIC8vIGluamVjdCBhbGxwYXNzIG91dHB1dCBpbnRvIGRlbGF5IGxpbmUKKyAgICAgICAgbkFkZHIgPSBDSVJDVUxBUihuQmFzZSwgcFJldmVyYi0+bV96RDFJbiwgcFJldmVyYi0+bV9uQnVmZmVyTWFzayk7CisgICAgICAgIHBSZXZlcmItPm1fbkRlbGF5TGluZVtuQWRkcl0gPSAoc2hvcnQpIG5BcE91dDsKKworICAgICAgICAvLyAqKioqKioqKioqIFJpZ2h0IEFsbHBhc3MgLSBlbmQKKworICAgICAgICAvLyAqKioqKioqKioqIEQwIG91dHB1dCAtIHN0YXJ0CisgICAgICAgIC8vIGZldGNoIGRlbGF5IGxpbmUgc2VsZiBvdXQKKyAgICAgICAgbkFkZHIgPSBDSVJDVUxBUihuQmFzZSwgcFJldmVyYi0+bV96RDBTZWxmLCBwUmV2ZXJiLT5tX25CdWZmZXJNYXNrKTsKKyAgICAgICAgbkRlbGF5T3V0MCA9IHBSZXZlcmItPm1fbkRlbGF5TGluZVtuQWRkcl07CisKKyAgICAgICAgLy8gY2FsY3VsYXRlIGRlbGF5IGxpbmUgc2VsZiBvdXQKKyAgICAgICAgblRlbXAxID0gTVVMVF9FRzFfRUcxKG5EZWxheU91dDAsIHBSZXZlcmItPm1fblNpbik7CisKKyAgICAgICAgLy8gZmV0Y2ggZGVsYXkgbGluZSBjcm9zcyBvdXQKKyAgICAgICAgbkFkZHIgPSBDSVJDVUxBUihuQmFzZSwgcFJldmVyYi0+bV96RDFDcm9zcywgcFJldmVyYi0+bV9uQnVmZmVyTWFzayk7CisgICAgICAgIG5EZWxheU91dDAgPSBwUmV2ZXJiLT5tX25EZWxheUxpbmVbbkFkZHJdOworCisgICAgICAgIC8vIGNhbGN1bGF0ZSBkZWxheSBsaW5lIHNlbGYgb3V0CisgICAgICAgIG5UZW1wMiA9IE1VTFRfRUcxX0VHMShuRGVsYXlPdXQwLCBwUmV2ZXJiLT5tX25Db3MpOworCisgICAgICAgIC8vIGNhbGN1bGF0ZSB1bmZpbHRlcmVkIGRlbGF5IG91dAorICAgICAgICBuRGVsYXlPdXQwID0gU0FUVVJBVEUoblRlbXAxICsgblRlbXAyKTsKKworICAgICAgICAvLyAqKioqKioqKioqIEQwIG91dHB1dCAtIGVuZAorCisgICAgICAgIC8vICoqKioqKioqKiogRDEgb3V0cHV0IC0gc3RhcnQKKyAgICAgICAgLy8gZmV0Y2ggZGVsYXkgbGluZSBzZWxmIG91dAorICAgICAgICBuQWRkciA9IENJUkNVTEFSKG5CYXNlLCBwUmV2ZXJiLT5tX3pEMVNlbGYsIHBSZXZlcmItPm1fbkJ1ZmZlck1hc2spOworICAgICAgICBuRGVsYXlPdXQxID0gcFJldmVyYi0+bV9uRGVsYXlMaW5lW25BZGRyXTsKKworICAgICAgICAvLyBjYWxjdWxhdGUgZGVsYXkgbGluZSBzZWxmIG91dAorICAgICAgICBuVGVtcDEgPSBNVUxUX0VHMV9FRzEobkRlbGF5T3V0MSwgcFJldmVyYi0+bV9uU2luKTsKKworICAgICAgICAvLyBmZXRjaCBkZWxheSBsaW5lIGNyb3NzIG91dAorICAgICAgICBuQWRkciA9IENJUkNVTEFSKG5CYXNlLCBwUmV2ZXJiLT5tX3pEMENyb3NzLCBwUmV2ZXJiLT5tX25CdWZmZXJNYXNrKTsKKyAgICAgICAgbkRlbGF5T3V0MSA9IHBSZXZlcmItPm1fbkRlbGF5TGluZVtuQWRkcl07CisKKyAgICAgICAgLy8gY2FsY3VsYXRlIGRlbGF5IGxpbmUgc2VsZiBvdXQKKyAgICAgICAgblRlbXAyID0gTVVMVF9FRzFfRUcxKG5EZWxheU91dDEsIHBSZXZlcmItPm1fbkNvcyk7CisKKyAgICAgICAgLy8gY2FsY3VsYXRlIHVuZmlsdGVyZWQgZGVsYXkgb3V0CisgICAgICAgIG5EZWxheU91dDEgPSBTQVRVUkFURShuVGVtcDEgKyBuVGVtcDIpOworCisgICAgICAgIC8vICoqKioqKioqKiogRDEgb3V0cHV0IC0gZW5kCisKKyAgICAgICAgLy8gKioqKioqKioqKiBtaXhlciBhbmQgZmVlZGJhY2sgLSBzdGFydAorICAgICAgICAvLyBzdW0gaXMgZmVkYmFjayB0byByaWdodCBpbnB1dCAoUiArIEwpCisgICAgICAgIG5EZWxheU91dDAgPSAoc2hvcnQpIFNBVFVSQVRFKG5EZWxheU91dDAgKyBuRGVsYXlPdXQxKTsKKworICAgICAgICAvLyBkaWZmZXJlbmNlIGlzIGZlZWRiYWNrIHRvIGxlZnQgaW5wdXQgKFIgLSBMKQorICAgICAgICAvKmxpbnQgLWV7Njg1fSBsaW50IGNvbXBsYWlucyB0aGF0IGl0IGNhbid0IHNhdHVyYXRlIG5lZ2F0aXZlICovCisgICAgICAgIG5EZWxheU91dDEgPSAoc2hvcnQpIFNBVFVSQVRFKG5EZWxheU91dDEgLSBuRGVsYXlPdXQwKTsKKworICAgICAgICAvLyAqKioqKioqKioqIG1peGVyIGFuZCBmZWVkYmFjayAtIGVuZAorCisgICAgICAgIC8vIGNhbGN1bGF0ZSBsb3dwYXNzIGZpbHRlciAobWl4ZXIgc2NhbGUgZmFjdG9yIGluY2x1ZGVkIGluIExQRiBmZWVkZm9yd2FyZCkKKyAgICAgICAgblRlbXAxID0gTVVMVF9FRzFfRUcxKG5EZWxheU91dDAsIHBSZXZlcmItPm1fblJ2YkxwZkZ3ZCk7CisKKyAgICAgICAgblRlbXAyID0gTVVMVF9FRzFfRUcxKHBSZXZlcmItPm1fblJldkZia0wsIHBSZXZlcmItPm1fblJ2YkxwZkZiayk7CisKKyAgICAgICAgLy8gY2FsY3VsYXRlIGZpbHRlcmVkIGRlbGF5IG91dCBhbmQgc2ltdWx0YW5lb3VzbHkgdXBkYXRlIExQRiBzdGF0ZSB2YXJpYWJsZQorICAgICAgICAvLyBmaWx0ZXJlZCBkZWxheSBvdXRwdXQgaXMgc3RvcmVkIGluIG1fblJldkZia0wKKyAgICAgICAgcFJldmVyYi0+bV9uUmV2RmJrTCA9IChzaG9ydCkgU0FUVVJBVEUoblRlbXAxICsgblRlbXAyKTsKKworICAgICAgICAvLyBjYWxjdWxhdGUgbG93cGFzcyBmaWx0ZXIgKG1peGVyIHNjYWxlIGZhY3RvciBpbmNsdWRlZCBpbiBMUEYgZmVlZGZvcndhcmQpCisgICAgICAgIG5UZW1wMSA9IE1VTFRfRUcxX0VHMShuRGVsYXlPdXQxLCBwUmV2ZXJiLT5tX25SdmJMcGZGd2QpOworCisgICAgICAgIG5UZW1wMiA9IE1VTFRfRUcxX0VHMShwUmV2ZXJiLT5tX25SZXZGYmtSLCBwUmV2ZXJiLT5tX25SdmJMcGZGYmspOworCisgICAgICAgIC8vIGNhbGN1bGF0ZSBmaWx0ZXJlZCBkZWxheSBvdXQgYW5kIHNpbXVsdGFuZW91c2x5IHVwZGF0ZSBMUEYgc3RhdGUgdmFyaWFibGUKKyAgICAgICAgLy8gZmlsdGVyZWQgZGVsYXkgb3V0cHV0IGlzIHN0b3JlZCBpbiBtX25SZXZGYmtSCisgICAgICAgIHBSZXZlcmItPm1fblJldkZia1IgPSAoc2hvcnQpIFNBVFVSQVRFKG5UZW1wMSArIG5UZW1wMik7CisKKyAgICAgICAgLy8gKioqKioqKioqKiBzdGFydCBlYXJseSByZWZsZWN0aW9uIGdlbmVyYXRvciwgbGVmdAorICAgICAgICAvL3BzRWFybHkgPSAmKHBSZXZlcmItPm1fc0Vhcmx5TCk7CisKKworICAgICAgICBmb3IgKGogPSAwOyBqIDwgUkVWRVJCX01BWF9OVU1fUkVGTEVDVElPTlM7IGorKykgeworICAgICAgICAgICAgLy8gZmV0Y2ggZGVsYXkgbGluZSBvdXQKKyAgICAgICAgICAgIC8vbkFkZHIgPSBDSVJDVUxBUihuQmFzZSwgcHNFYXJseS0+bV96RGVsYXlbal0sIHBSZXZlcmItPm1fbkJ1ZmZlck1hc2spOworICAgICAgICAgICAgbkFkZHIKKyAgICAgICAgICAgICAgICAgICAgPSBDSVJDVUxBUihuQmFzZSwgcFJldmVyYi0+bV9zRWFybHlMLm1fekRlbGF5W2pdLCBwUmV2ZXJiLT5tX25CdWZmZXJNYXNrKTsKKworICAgICAgICAgICAgblRlbXAxID0gcFJldmVyYi0+bV9uRGVsYXlMaW5lW25BZGRyXTsKKworICAgICAgICAgICAgLy8gY2FsY3VsYXRlIHJlZmxlY3Rpb24KKyAgICAgICAgICAgIC8vblRlbXAxID0gTVVMVF9FRzFfRUcxKG5EZWxheU91dDAsIHBzRWFybHktPm1fbkdhaW5bal0pOworICAgICAgICAgICAgblRlbXAxID0gTVVMVF9FRzFfRUcxKG5UZW1wMSwgcFJldmVyYi0+bV9zRWFybHlMLm1fbkdhaW5bal0pOworCisgICAgICAgICAgICBuRGVsYXlPdXQwID0gU0FUVVJBVEUobkRlbGF5T3V0MCArIG5UZW1wMSk7CisKKyAgICAgICAgfSAvLyBlbmQgZm9yIChqPTA7IGogPCBSRVZFUkJfTUFYX05VTV9SRUZMRUNUSU9OUzsgaisrKQorCisgICAgICAgIC8vIGFwcGx5IGxvd3Bhc3MgdG8gZWFybHkgcmVmbGVjdGlvbnMgYW5kIHJldmVyYiBvdXRwdXQKKyAgICAgICAgLy9uVGVtcDEgPSBNVUxUX0VHMV9FRzEobkVhcmx5T3V0LCBwc0Vhcmx5LT5tX25SdmJMcGZGd2QpOworICAgICAgICBuVGVtcDEgPSBNVUxUX0VHMV9FRzEobkRlbGF5T3V0MCwgcFJldmVyYi0+bV9uUm9vbUxwZkZ3ZCk7CisKKyAgICAgICAgLy9uVGVtcDIgPSBNVUxUX0VHMV9FRzEocHNFYXJseS0+bV96THBmLCBwc0Vhcmx5LT5tX25McGZGYmspOworICAgICAgICBuVGVtcDIgPSBNVUxUX0VHMV9FRzEocFJldmVyYi0+bV96T3V0THBmTCwgcFJldmVyYi0+bV9uUm9vbUxwZkZiayk7CisKKyAgICAgICAgLy8gY2FsY3VsYXRlIGZpbHRlcmVkIG91dCBhbmQgc2ltdWx0YW5lb3VzbHkgdXBkYXRlIExQRiBzdGF0ZSB2YXJpYWJsZQorICAgICAgICAvLyBmaWx0ZXJlZCBvdXRwdXQgaXMgc3RvcmVkIGluIG1fek91dExwZkwKKyAgICAgICAgcFJldmVyYi0+bV96T3V0THBmTCA9IChzaG9ydCkgU0FUVVJBVEUoblRlbXAxICsgblRlbXAyKTsKKworICAgICAgICAvL3N1bSB3aXRoIG91dHB1dCBidWZmZXIKKyAgICAgICAgdGVtcFZhbHVlID0gKnBPdXRwdXRCdWZmZXI7CisgICAgICAgICpwT3V0cHV0QnVmZmVyKysgPSAoc2hvcnQpIFNBVFVSQVRFKHRlbXBWYWx1ZStwUmV2ZXJiLT5tX3pPdXRMcGZMKTsKKworICAgICAgICAvLyAqKioqKioqKioqIGVuZCBlYXJseSByZWZsZWN0aW9uIGdlbmVyYXRvciwgbGVmdAorCisgICAgICAgIC8vICoqKioqKioqKiogc3RhcnQgZWFybHkgcmVmbGVjdGlvbiBnZW5lcmF0b3IsIHJpZ2h0CisgICAgICAgIC8vcHNFYXJseSA9ICYocFJldmVyYi0+bV9zRWFybHlSKTsKKworICAgICAgICBmb3IgKGogPSAwOyBqIDwgUkVWRVJCX01BWF9OVU1fUkVGTEVDVElPTlM7IGorKykgeworICAgICAgICAgICAgLy8gZmV0Y2ggZGVsYXkgbGluZSBvdXQKKyAgICAgICAgICAgIG5BZGRyCisgICAgICAgICAgICAgICAgICAgID0gQ0lSQ1VMQVIobkJhc2UsIHBSZXZlcmItPm1fc0Vhcmx5Ui5tX3pEZWxheVtqXSwgcFJldmVyYi0+bV9uQnVmZmVyTWFzayk7CisgICAgICAgICAgICBuVGVtcDEgPSBwUmV2ZXJiLT5tX25EZWxheUxpbmVbbkFkZHJdOworCisgICAgICAgICAgICAvLyBjYWxjdWxhdGUgcmVmbGVjdGlvbgorICAgICAgICAgICAgblRlbXAxID0gTVVMVF9FRzFfRUcxKG5UZW1wMSwgcFJldmVyYi0+bV9zRWFybHlSLm1fbkdhaW5bal0pOworCisgICAgICAgICAgICBuRGVsYXlPdXQxID0gU0FUVVJBVEUobkRlbGF5T3V0MSArIG5UZW1wMSk7CisKKyAgICAgICAgfSAvLyBlbmQgZm9yIChqPTA7IGogPCBSRVZFUkJfTUFYX05VTV9SRUZMRUNUSU9OUzsgaisrKQorCisgICAgICAgIC8vIGFwcGx5IGxvd3Bhc3MgdG8gZWFybHkgcmVmbGVjdGlvbnMKKyAgICAgICAgblRlbXAxID0gTVVMVF9FRzFfRUcxKG5EZWxheU91dDEsIHBSZXZlcmItPm1fblJvb21McGZGd2QpOworCisgICAgICAgIG5UZW1wMiA9IE1VTFRfRUcxX0VHMShwUmV2ZXJiLT5tX3pPdXRMcGZSLCBwUmV2ZXJiLT5tX25Sb29tTHBmRmJrKTsKKworICAgICAgICAvLyBjYWxjdWxhdGUgZmlsdGVyZWQgb3V0IGFuZCBzaW11bHRhbmVvdXNseSB1cGRhdGUgTFBGIHN0YXRlIHZhcmlhYmxlCisgICAgICAgIC8vIGZpbHRlcmVkIG91dHB1dCBpcyBzdG9yZWQgaW4gbV96T3V0THBmUgorICAgICAgICBwUmV2ZXJiLT5tX3pPdXRMcGZSID0gKHNob3J0KSBTQVRVUkFURShuVGVtcDEgKyBuVGVtcDIpOworCisgICAgICAgIC8vc3VtIHdpdGggb3V0cHV0IGJ1ZmZlcgorICAgICAgICB0ZW1wVmFsdWUgPSAqcE91dHB1dEJ1ZmZlcjsKKyAgICAgICAgKnBPdXRwdXRCdWZmZXIrKyA9IChzaG9ydCkgU0FUVVJBVEUodGVtcFZhbHVlICsgcFJldmVyYi0+bV96T3V0THBmUik7CisKKyAgICAgICAgLy8gKioqKioqKioqKiBlbmQgZWFybHkgcmVmbGVjdGlvbiBnZW5lcmF0b3IsIHJpZ2h0CisKKyAgICAgICAgLy8gZGVjcmVtZW50IGJhc2UgYWRkciBmb3IgbmV4dCBzYW1wbGUgcGVyaW9kCisgICAgICAgIG5CYXNlLS07CisKKyAgICAgICAgcFJldmVyYi0+bV9uU2luICs9IHBSZXZlcmItPm1fblNpbkluY3JlbWVudDsKKyAgICAgICAgcFJldmVyYi0+bV9uQ29zICs9IHBSZXZlcmItPm1fbkNvc0luY3JlbWVudDsKKworICAgIH0gLy8gZW5kIGZvciAoaT0wOyBpIDwgbk51bVNhbXBsZXNUb0FkZDsgaSsrKQorCisgICAgLy8gc3RvcmUgdGhlIG1vc3QgdXAgdG8gZGF0ZSB2ZXJzaW9uCisgICAgcFJldmVyYi0+bV9uQmFzZUluZGV4ID0gbkJhc2U7CisKKyAgICByZXR1cm4gMDsKK30gLyogZW5kIFJldmVyYiAqLworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFJldmVyYlVwZGF0ZVJvb20KKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUHVycG9zZToKKyAqIFVwZGF0ZSB0aGUgcm9vbSdzIHByZXNldCBwYXJhbWV0ZXJzIGFzIHJlcXVpcmVkCisgKgorICogSW5wdXRzOgorICoKKyAqIE91dHB1dHM6CisgKgorICoKKyAqIFNpZGUgRWZmZWN0czoKKyAqIC0gcmV2ZXJiIHBhcmFtdGVycyAoZmJrLCBmd2QsIGV0Yykgd2lsbCBiZSBjaGFuZ2VkCisgKiAtIG1fbkN1cnJlbnRSb29tIDo9IG1fbk5leHRSb29tCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworc3RhdGljIGludCBSZXZlcmJVcGRhdGVSb29tKHJldmVyYl9vYmplY3RfdCAqcFJldmVyYiwgYm9vbCBmdWxsVXBkYXRlKSB7CisgICAgaW50IHRlbXA7CisgICAgaW50IGk7CisgICAgaW50IG1heFNhbXBsZXM7CisgICAgaW50IGVhcmx5RGVsYXk7CisgICAgaW50IGVhcmx5R2FpbjsKKworICAgIHJldmVyYl9wcmVzZXRfdCAqcFByZXNldCA9CisgICAgICAgICAgICAmcFJldmVyYi0+bV9zUHJlc2V0Lm1fc1ByZXNldFtwUmV2ZXJiLT5tX25OZXh0Um9vbV07CisKKyAgICBpZiAoZnVsbFVwZGF0ZSkgeworICAgICAgICBwUmV2ZXJiLT5tX25SdmJMcGZGd2QgPSBwUHJlc2V0LT5tX25SdmJMcGZGd2Q7CisgICAgICAgIHBSZXZlcmItPm1fblJ2YkxwZkZiayA9IHBQcmVzZXQtPm1fblJ2YkxwZkZiazsKKworICAgICAgICBwUmV2ZXJiLT5tX25FYXJseUdhaW4gPSBwUHJlc2V0LT5tX25FYXJseUdhaW47CisgICAgICAgIC8vc3RvcmVkIGFzIHRpbWUgYmFzZWQsIGNvbnZlcnQgdG8gc2FtcGxlIGJhc2VkCisgICAgICAgIHBSZXZlcmItPm1fbkxhdGVHYWluID0gcFByZXNldC0+bV9uTGF0ZUdhaW47CisgICAgICAgIHBSZXZlcmItPm1fblJvb21McGZGYmsgPSBwUHJlc2V0LT5tX25Sb29tTHBmRmJrOworICAgICAgICBwUmV2ZXJiLT5tX25Sb29tTHBmRndkID0gcFByZXNldC0+bV9uUm9vbUxwZkZ3ZDsKKworICAgICAgICAvLyBzZXQgdGhlIGVhcmx5IHJlZmxlY3Rpb25zIGdhaW5zCisgICAgICAgIGVhcmx5R2FpbiA9IHBQcmVzZXQtPm1fbkVhcmx5R2FpbjsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IFJFVkVSQl9NQVhfTlVNX1JFRkxFQ1RJT05TOyBpKyspIHsKKyAgICAgICAgICAgIHBSZXZlcmItPm1fc0Vhcmx5TC5tX25HYWluW2ldCisgICAgICAgICAgICAgICAgICAgID0gTVVMVF9FRzFfRUcxKHBQcmVzZXQtPm1fc0Vhcmx5TC5tX25HYWluW2ldLGVhcmx5R2Fpbik7CisgICAgICAgICAgICBwUmV2ZXJiLT5tX3NFYXJseVIubV9uR2FpbltpXQorICAgICAgICAgICAgICAgICAgICA9IE1VTFRfRUcxX0VHMShwUHJlc2V0LT5tX3NFYXJseVIubV9uR2FpbltpXSxlYXJseUdhaW4pOworICAgICAgICB9CisKKyAgICAgICAgcFJldmVyYi0+bV9uTWF4RXhjdXJzaW9uID0gcFByZXNldC0+bV9uTWF4RXhjdXJzaW9uOworCisgICAgICAgIHBSZXZlcmItPm1fc0FwMC5tX25BcEdhaW4gPSBwUHJlc2V0LT5tX25BcDBfQXBHYWluOworICAgICAgICBwUmV2ZXJiLT5tX3NBcDEubV9uQXBHYWluID0gcFByZXNldC0+bV9uQXAxX0FwR2FpbjsKKworICAgICAgICAvLyBzZXQgdGhlIGVhcmx5IHJlZmxlY3Rpb25zIGRlbGF5CisgICAgICAgIGVhcmx5RGVsYXkgPSAoKGludCkgcFByZXNldC0+bV9uRWFybHlEZWxheSAqIHBSZXZlcmItPm1fblNhbXBsaW5nUmF0ZSkKKyAgICAgICAgICAgICAgICA+PiAxNjsKKyAgICAgICAgcFJldmVyYi0+bV9uRWFybHlEZWxheSA9IGVhcmx5RGVsYXk7CisgICAgICAgIG1heFNhbXBsZXMgPSAoaW50MzJfdCkgKE1BWF9FQVJMWV9USU1FICogcFJldmVyYi0+bV9uU2FtcGxpbmdSYXRlKQorICAgICAgICAgICAgICAgID4+IDE2OworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUkVWRVJCX01BWF9OVU1fUkVGTEVDVElPTlM7IGkrKykgeworICAgICAgICAgICAgLy9zdG9yZWQgYXMgdGltZSBiYXNlZCwgY29udmVydCB0byBzYW1wbGUgYmFzZWQKKyAgICAgICAgICAgIHRlbXAgPSBlYXJseURlbGF5ICsgKCgoaW50KSBwUHJlc2V0LT5tX3NFYXJseUwubV96RGVsYXlbaV0KKyAgICAgICAgICAgICAgICAgICAgKiBwUmV2ZXJiLT5tX25TYW1wbGluZ1JhdGUpID4+IDE2KTsKKyAgICAgICAgICAgIGlmICh0ZW1wID4gbWF4U2FtcGxlcykKKyAgICAgICAgICAgICAgICB0ZW1wID0gbWF4U2FtcGxlczsKKyAgICAgICAgICAgIHBSZXZlcmItPm1fc0Vhcmx5TC5tX3pEZWxheVtpXSA9IHBSZXZlcmItPm1fbkVhcmx5MGluICsgdGVtcDsKKyAgICAgICAgICAgIC8vc3RvcmVkIGFzIHRpbWUgYmFzZWQsIGNvbnZlcnQgdG8gc2FtcGxlIGJhc2VkCisgICAgICAgICAgICB0ZW1wID0gZWFybHlEZWxheSArICgoKGludCkgcFByZXNldC0+bV9zRWFybHlSLm1fekRlbGF5W2ldCisgICAgICAgICAgICAgICAgICAgICogcFJldmVyYi0+bV9uU2FtcGxpbmdSYXRlKSA+PiAxNik7CisgICAgICAgICAgICBpZiAodGVtcCA+IG1heFNhbXBsZXMpCisgICAgICAgICAgICAgICAgdGVtcCA9IG1heFNhbXBsZXM7CisgICAgICAgICAgICBwUmV2ZXJiLT5tX3NFYXJseVIubV96RGVsYXlbaV0gPSBwUmV2ZXJiLT5tX25FYXJseTFpbiArIHRlbXA7CisgICAgICAgIH0KKworICAgICAgICBtYXhTYW1wbGVzID0gKGludDMyX3QpIChNQVhfREVMQVlfVElNRSAqIHBSZXZlcmItPm1fblNhbXBsaW5nUmF0ZSkKKyAgICAgICAgICAgICAgICA+PiAxNjsKKyAgICAgICAgLy9zdG9yZWQgYXMgdGltZSBiYXNlZCwgY29udmVydCB0byBzYW1wbGUgYmFzZWQKKyAgICAgICAgLypsaW50IC1lezcwMn0gc2hpZnQgZm9yIHBlcmZvcm1hbmNlICovCisgICAgICAgIHRlbXAgPSAocFByZXNldC0+bV9uTGF0ZURlbGF5ICogcFJldmVyYi0+bV9uU2FtcGxpbmdSYXRlKSA+PiAxNjsKKyAgICAgICAgaWYgKCh0ZW1wICsgcFJldmVyYi0+bV9uTWF4RXhjdXJzaW9uKSA+IG1heFNhbXBsZXMpIHsKKyAgICAgICAgICAgIHRlbXAgPSBtYXhTYW1wbGVzIC0gcFJldmVyYi0+bV9uTWF4RXhjdXJzaW9uOworICAgICAgICB9CisgICAgICAgIHRlbXAgLT0gcFJldmVyYi0+bV9uTGF0ZURlbGF5OworICAgICAgICBwUmV2ZXJiLT5tX25EZWxheTBPdXQgKz0gdGVtcDsKKyAgICAgICAgcFJldmVyYi0+bV9uRGVsYXkxT3V0ICs9IHRlbXA7CisgICAgICAgIHBSZXZlcmItPm1fbkxhdGVEZWxheSArPSB0ZW1wOworCisgICAgICAgIG1heFNhbXBsZXMgPSAoaW50MzJfdCkgKE1BWF9BUF9USU1FICogcFJldmVyYi0+bV9uU2FtcGxpbmdSYXRlKSA+PiAxNjsKKyAgICAgICAgLy9zdG9yZWQgYXMgdGltZSBiYXNlZCwgY29udmVydCB0byBhYnNvbHV0ZSBzYW1wbGUgdmFsdWUKKyAgICAgICAgdGVtcCA9IHBQcmVzZXQtPm1fbkFwMF9BcE91dDsKKyAgICAgICAgLypsaW50IC1lezcwMn0gc2hpZnQgZm9yIHBlcmZvcm1hbmNlICovCisgICAgICAgIHRlbXAgPSAodGVtcCAqIHBSZXZlcmItPm1fblNhbXBsaW5nUmF0ZSkgPj4gMTY7CisgICAgICAgIGlmICh0ZW1wID4gbWF4U2FtcGxlcykKKyAgICAgICAgICAgIHRlbXAgPSBtYXhTYW1wbGVzOworICAgICAgICBwUmV2ZXJiLT5tX3NBcDAubV96QXBPdXQgPSAodWludDE2X3QpIChwUmV2ZXJiLT5tX3NBcDAubV96QXBJbiArIHRlbXApOworCisgICAgICAgIC8vc3RvcmVkIGFzIHRpbWUgYmFzZWQsIGNvbnZlcnQgdG8gYWJzb2x1dGUgc2FtcGxlIHZhbHVlCisgICAgICAgIHRlbXAgPSBwUHJlc2V0LT5tX25BcDFfQXBPdXQ7CisgICAgICAgIC8qbGludCAtZXs3MDJ9IHNoaWZ0IGZvciBwZXJmb3JtYW5jZSAqLworICAgICAgICB0ZW1wID0gKHRlbXAgKiBwUmV2ZXJiLT5tX25TYW1wbGluZ1JhdGUpID4+IDE2OworICAgICAgICBpZiAodGVtcCA+IG1heFNhbXBsZXMpCisgICAgICAgICAgICB0ZW1wID0gbWF4U2FtcGxlczsKKyAgICAgICAgcFJldmVyYi0+bV9zQXAxLm1fekFwT3V0ID0gKHVpbnQxNl90KSAocFJldmVyYi0+bV9zQXAxLm1fekFwSW4gKyB0ZW1wKTsKKyAgICAgICAgLy9ncHNSZXZlcmJPYmplY3QtPm1fc0FwMS5tX3pBcE91dCA9IHBQcmVzZXQtPm1fbkFwMV9BcE91dDsKKyAgICB9CisKKyAgICAvL3N0b3JlZCBhcyB0aW1lIGJhc2VkLCBjb252ZXJ0IHRvIHNhbXBsZSBiYXNlZAorICAgIHRlbXAgPSBwUHJlc2V0LT5tX25YZmFkZUludGVydmFsOworICAgIC8qbGludCAtZXs3MDJ9IHNoaWZ0IGZvciBwZXJmb3JtYW5jZSAqLworICAgIHRlbXAgPSAodGVtcCAqIHBSZXZlcmItPm1fblNhbXBsaW5nUmF0ZSkgPj4gMTY7CisgICAgcFJldmVyYi0+bV9uWGZhZGVJbnRlcnZhbCA9ICh1aW50MTZfdCkgdGVtcDsKKyAgICAvL2dzUmV2ZXJiT2JqZWN0Lm1fblhmYWRlSW50ZXJ2YWwgPSBwUHJlc2V0LT5tX25YZmFkZUludGVydmFsOworICAgIHBSZXZlcmItPm1fblhmYWRlQ291bnRlciA9IHBSZXZlcmItPm1fblhmYWRlSW50ZXJ2YWwgKyAxOyAvLyBmb3JjZSB1cGRhdGUgb24gZmlyc3QgaXRlcmF0aW9uCisKKyAgICBwUmV2ZXJiLT5tX25DdXJyZW50Um9vbSA9IHBSZXZlcmItPm1fbk5leHRSb29tOworCisgICAgcmV0dXJuIDA7CisKK30gLyogZW5kIFJldmVyYlVwZGF0ZVJvb20gKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBSZXZlcmJSZWFkSW5QcmVzZXRzKCkKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUHVycG9zZTogc2V0cyBnbG9iYWwgcmV2ZXJiIHByZXNldCBiYW5rIHRvIGRlZmF1bHRzCisgKgorICogSW5wdXRzOgorICoKKyAqIE91dHB1dHM6CisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KK3N0YXRpYyBpbnQgUmV2ZXJiUmVhZEluUHJlc2V0cyhyZXZlcmJfb2JqZWN0X3QgKnBSZXZlcmIpIHsKKworICAgIGludCBwcmVzZXQ7CisKKyAgICAvLyB0aGlzIGlzIGZvciB0ZXN0IG9ubHkuIE9wZW5TTCBFUyBwcmVzZXRzIGFyZSBtYXBwZWQgdG8gNCBwcmVzZXRzLgorICAgIC8vIFJFVkVSQl9QUkVTRVRfTk9ORSBpcyBtYXBwZWQgdG8gYnlwYXNzCisgICAgZm9yIChwcmVzZXQgPSAwOyBwcmVzZXQgPCBSRVZFUkJfTlVNX1BSRVNFVFM7IHByZXNldCsrKSB7CisgICAgICAgIHJldmVyYl9wcmVzZXRfdCAqcFByZXNldCA9ICZwUmV2ZXJiLT5tX3NQcmVzZXQubV9zUHJlc2V0W3ByZXNldF07CisgICAgICAgIHN3aXRjaCAocHJlc2V0ICsgMSkgeworICAgICAgICBjYXNlIFJFVkVSQl9QUkVTRVRfUExBVEU6CisgICAgICAgIGNhc2UgUkVWRVJCX1BSRVNFVF9TTUFMTFJPT006CisgICAgICAgICAgICBwUHJlc2V0LT5tX25SdmJMcGZGYmsgPSA1MDc3OworICAgICAgICAgICAgcFByZXNldC0+bV9uUnZiTHBmRndkID0gMTEwNzY7CisgICAgICAgICAgICBwUHJlc2V0LT5tX25FYXJseUdhaW4gPSAyNzY5MDsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fbkVhcmx5RGVsYXkgPSAxMzExOworICAgICAgICAgICAgcFByZXNldC0+bV9uTGF0ZUdhaW4gPSA4MTkxOworICAgICAgICAgICAgcFByZXNldC0+bV9uTGF0ZURlbGF5ID0gMzkzMjsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fblJvb21McGZGYmsgPSAzNjkyOworICAgICAgICAgICAgcFByZXNldC0+bV9uUm9vbUxwZkZ3ZCA9IDIwNDc0OworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlMLm1fekRlbGF5WzBdID0gMTM3NjsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5TC5tX25HYWluWzBdID0gMjIxNTI7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseUwubV96RGVsYXlbMV0gPSAxNDYyOworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlMLm1fbkdhaW5bMV0gPSAxNzUzNzsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5TC5tX3pEZWxheVsyXSA9IDA7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseUwubV9uR2FpblsyXSA9IDE0NzY4OworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlMLm1fekRlbGF5WzNdID0gMTgzNTsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5TC5tX25HYWluWzNdID0gMTQzMDc7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseUwubV96RGVsYXlbNF0gPSAwOworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlMLm1fbkdhaW5bNF0gPSAxMzM4NDsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5Ui5tX3pEZWxheVswXSA9IDcyMTsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5Ui5tX25HYWluWzBdID0gMjAzMDY7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseVIubV96RGVsYXlbMV0gPSAyNjIxOworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlSLm1fbkdhaW5bMV0gPSAxNzUzNzsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5Ui5tX3pEZWxheVsyXSA9IDA7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseVIubV9uR2FpblsyXSA9IDE0NzY4OworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlSLm1fekRlbGF5WzNdID0gMDsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5Ui5tX25HYWluWzNdID0gMTYxNTM7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseVIubV96RGVsYXlbNF0gPSAwOworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlSLm1fbkdhaW5bNF0gPSAxMzM4NDsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fbk1heEV4Y3Vyc2lvbiA9IDEyNzsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fblhmYWRlSW50ZXJ2YWwgPSA2NDcwOyAvLzY0ODM7CisgICAgICAgICAgICBwUHJlc2V0LT5tX25BcDBfQXBHYWluID0gMTQ3Njg7CisgICAgICAgICAgICBwUHJlc2V0LT5tX25BcDBfQXBPdXQgPSA3OTI7CisgICAgICAgICAgICBwUHJlc2V0LT5tX25BcDFfQXBHYWluID0gMTQ3Nzc7CisgICAgICAgICAgICBwUHJlc2V0LT5tX25BcDFfQXBPdXQgPSAxMTkxOworICAgICAgICAgICAgcFByZXNldC0+bV9yZnU0ID0gMDsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fcmZ1NSA9IDA7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3JmdTYgPSAwOworICAgICAgICAgICAgcFByZXNldC0+bV9yZnU3ID0gMDsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fcmZ1OCA9IDA7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3JmdTkgPSAwOworICAgICAgICAgICAgcFByZXNldC0+bV9yZnUxMCA9IDA7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBSRVZFUkJfUFJFU0VUX01FRElVTVJPT006CisgICAgICAgIGNhc2UgUkVWRVJCX1BSRVNFVF9MQVJHRVJPT006CisgICAgICAgICAgICBwUHJlc2V0LT5tX25SdmJMcGZGYmsgPSA1MDc3OworICAgICAgICAgICAgcFByZXNldC0+bV9uUnZiTHBmRndkID0gMTI5MjI7CisgICAgICAgICAgICBwUHJlc2V0LT5tX25FYXJseUdhaW4gPSAyNzY5MDsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fbkVhcmx5RGVsYXkgPSAxMzExOworICAgICAgICAgICAgcFByZXNldC0+bV9uTGF0ZUdhaW4gPSA4MTkxOworICAgICAgICAgICAgcFByZXNldC0+bV9uTGF0ZURlbGF5ID0gMzkzMjsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fblJvb21McGZGYmsgPSAzNjkyOworICAgICAgICAgICAgcFByZXNldC0+bV9uUm9vbUxwZkZ3ZCA9IDIxNzAzOworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlMLm1fekRlbGF5WzBdID0gMTM3NjsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5TC5tX25HYWluWzBdID0gMjIxNTI7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseUwubV96RGVsYXlbMV0gPSAxNDYyOworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlMLm1fbkdhaW5bMV0gPSAxNzUzNzsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5TC5tX3pEZWxheVsyXSA9IDA7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseUwubV9uR2FpblsyXSA9IDE0NzY4OworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlMLm1fekRlbGF5WzNdID0gMTgzNTsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5TC5tX25HYWluWzNdID0gMTQzMDc7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseUwubV96RGVsYXlbNF0gPSAwOworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlMLm1fbkdhaW5bNF0gPSAxMzM4NDsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5Ui5tX3pEZWxheVswXSA9IDcyMTsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5Ui5tX25HYWluWzBdID0gMjAzMDY7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseVIubV96RGVsYXlbMV0gPSAyNjIxOworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlSLm1fbkdhaW5bMV0gPSAxNzUzNzsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5Ui5tX3pEZWxheVsyXSA9IDA7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseVIubV9uR2FpblsyXSA9IDE0NzY4OworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlSLm1fekRlbGF5WzNdID0gMDsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5Ui5tX25HYWluWzNdID0gMTYxNTM7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseVIubV96RGVsYXlbNF0gPSAwOworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlSLm1fbkdhaW5bNF0gPSAxMzM4NDsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fbk1heEV4Y3Vyc2lvbiA9IDEyNzsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fblhmYWRlSW50ZXJ2YWwgPSA2NDQ5OworICAgICAgICAgICAgcFByZXNldC0+bV9uQXAwX0FwR2FpbiA9IDE1NjkxOworICAgICAgICAgICAgcFByZXNldC0+bV9uQXAwX0FwT3V0ID0gNzc0OworICAgICAgICAgICAgcFByZXNldC0+bV9uQXAxX0FwR2FpbiA9IDE2MzE3OworICAgICAgICAgICAgcFByZXNldC0+bV9uQXAxX0FwT3V0ID0gMTE1NTsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fcmZ1NCA9IDA7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3JmdTUgPSAwOworICAgICAgICAgICAgcFByZXNldC0+bV9yZnU2ID0gMDsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fcmZ1NyA9IDA7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3JmdTggPSAwOworICAgICAgICAgICAgcFByZXNldC0+bV9yZnU5ID0gMDsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fcmZ1MTAgPSAwOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgUkVWRVJCX1BSRVNFVF9NRURJVU1IQUxMOgorICAgICAgICAgICAgcFByZXNldC0+bV9uUnZiTHBmRmJrID0gNjQ2MTsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fblJ2YkxwZkZ3ZCA9IDE0MzA3OworICAgICAgICAgICAgcFByZXNldC0+bV9uRWFybHlHYWluID0gMjc2OTA7CisgICAgICAgICAgICBwUHJlc2V0LT5tX25FYXJseURlbGF5ID0gMTMxMTsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fbkxhdGVHYWluID0gODE5MTsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fbkxhdGVEZWxheSA9IDM5MzI7CisgICAgICAgICAgICBwUHJlc2V0LT5tX25Sb29tTHBmRmJrID0gMzY5MjsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fblJvb21McGZGd2QgPSAyNDU2OTsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5TC5tX3pEZWxheVswXSA9IDEzNzY7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseUwubV9uR2FpblswXSA9IDIyMTUyOworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlMLm1fekRlbGF5WzFdID0gMTQ2MjsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5TC5tX25HYWluWzFdID0gMTc1Mzc7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseUwubV96RGVsYXlbMl0gPSAwOworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlMLm1fbkdhaW5bMl0gPSAxNDc2ODsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5TC5tX3pEZWxheVszXSA9IDE4MzU7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseUwubV9uR2FpblszXSA9IDE0MzA3OworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlMLm1fekRlbGF5WzRdID0gMDsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5TC5tX25HYWluWzRdID0gMTMzODQ7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseVIubV96RGVsYXlbMF0gPSA3MjE7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseVIubV9uR2FpblswXSA9IDIwMzA2OworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlSLm1fekRlbGF5WzFdID0gMjYyMTsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5Ui5tX25HYWluWzFdID0gMTc1Mzc7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseVIubV96RGVsYXlbMl0gPSAwOworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlSLm1fbkdhaW5bMl0gPSAxNDc2ODsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5Ui5tX3pEZWxheVszXSA9IDA7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseVIubV9uR2FpblszXSA9IDE2MTUzOworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlSLm1fekRlbGF5WzRdID0gMDsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5Ui5tX25HYWluWzRdID0gMTMzODQ7CisgICAgICAgICAgICBwUHJlc2V0LT5tX25NYXhFeGN1cnNpb24gPSAxMjc7CisgICAgICAgICAgICBwUHJlc2V0LT5tX25YZmFkZUludGVydmFsID0gNjM5MTsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fbkFwMF9BcEdhaW4gPSAxNTIzMDsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fbkFwMF9BcE91dCA9IDcwODsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fbkFwMV9BcEdhaW4gPSAxNTU0NzsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fbkFwMV9BcE91dCA9IDEwMjM7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3JmdTQgPSAwOworICAgICAgICAgICAgcFByZXNldC0+bV9yZnU1ID0gMDsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fcmZ1NiA9IDA7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3JmdTcgPSAwOworICAgICAgICAgICAgcFByZXNldC0+bV9yZnU4ID0gMDsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fcmZ1OSA9IDA7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3JmdTEwID0gMDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFJFVkVSQl9QUkVTRVRfTEFSR0VIQUxMOgorICAgICAgICAgICAgcFByZXNldC0+bV9uUnZiTHBmRmJrID0gODMwNzsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fblJ2YkxwZkZ3ZCA9IDE0NzY4OworICAgICAgICAgICAgcFByZXNldC0+bV9uRWFybHlHYWluID0gMjc2OTA7CisgICAgICAgICAgICBwUHJlc2V0LT5tX25FYXJseURlbGF5ID0gMTMxMTsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fbkxhdGVHYWluID0gODE5MTsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fbkxhdGVEZWxheSA9IDM5MzI7CisgICAgICAgICAgICBwUHJlc2V0LT5tX25Sb29tTHBmRmJrID0gMzY5MjsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fblJvb21McGZGd2QgPSAyNDU2OTsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5TC5tX3pEZWxheVswXSA9IDEzNzY7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseUwubV9uR2FpblswXSA9IDIyMTUyOworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlMLm1fekRlbGF5WzFdID0gMjE2MzsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5TC5tX25HYWluWzFdID0gMTc1Mzc7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseUwubV96RGVsYXlbMl0gPSAwOworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlMLm1fbkdhaW5bMl0gPSAxNDc2ODsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5TC5tX3pEZWxheVszXSA9IDE4MzU7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseUwubV9uR2FpblszXSA9IDE0MzA3OworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlMLm1fekRlbGF5WzRdID0gMDsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5TC5tX25HYWluWzRdID0gMTMzODQ7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseVIubV96RGVsYXlbMF0gPSA3MjE7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseVIubV9uR2FpblswXSA9IDIwMzA2OworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlSLm1fekRlbGF5WzFdID0gMjYyMTsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5Ui5tX25HYWluWzFdID0gMTc1Mzc7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseVIubV96RGVsYXlbMl0gPSAwOworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlSLm1fbkdhaW5bMl0gPSAxNDc2ODsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5Ui5tX3pEZWxheVszXSA9IDA7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3NFYXJseVIubV9uR2FpblszXSA9IDE2MTUzOworICAgICAgICAgICAgcFByZXNldC0+bV9zRWFybHlSLm1fekRlbGF5WzRdID0gMDsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fc0Vhcmx5Ui5tX25HYWluWzRdID0gMTMzODQ7CisgICAgICAgICAgICBwUHJlc2V0LT5tX25NYXhFeGN1cnNpb24gPSAxMjc7CisgICAgICAgICAgICBwUHJlc2V0LT5tX25YZmFkZUludGVydmFsID0gNjM4ODsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fbkFwMF9BcEdhaW4gPSAxNTY5MTsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fbkFwMF9BcE91dCA9IDcxMTsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fbkFwMV9BcEdhaW4gPSAxNjMxNzsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fbkFwMV9BcE91dCA9IDEwMjk7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3JmdTQgPSAwOworICAgICAgICAgICAgcFByZXNldC0+bV9yZnU1ID0gMDsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fcmZ1NiA9IDA7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3JmdTcgPSAwOworICAgICAgICAgICAgcFByZXNldC0+bV9yZnU4ID0gMDsKKyAgICAgICAgICAgIHBQcmVzZXQtPm1fcmZ1OSA9IDA7CisgICAgICAgICAgICBwUHJlc2V0LT5tX3JmdTEwID0gMDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9tZWRpYS9saWJlZmZlY3RzL0VmZmVjdFJldmVyYi5oIGIvbWVkaWEvbGliZWZmZWN0cy9FZmZlY3RSZXZlcmIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YWYzMTZkCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGliZWZmZWN0cy9FZmZlY3RSZXZlcmIuaApAQCAtMCwwICsxLDQzMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgQU5EUk9JRF9FRkZFQ1RSRVZFUkJfSF8KKyNkZWZpbmUgQU5EUk9JRF9FRkZFQ1RSRVZFUkJfSF8KKworI2luY2x1ZGUgPG1lZGlhL0VmZmVjdEVudmlyb25tZW50YWxSZXZlcmJBcGkuaD4KKyNpbmNsdWRlIDxtZWRpYS9FZmZlY3RQcmVzZXRSZXZlcmJBcGkuaD4KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogZGVmaW5lcworICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyovCisKKy8qCitDSVJDVUxBUigpIGNhbGN1bGF0ZXMgdGhlIGFycmF5IGluZGV4IHVzaW5nIG1vZHVsbyBhcml0aG1ldGljLgorVGhlICJ0cmljayIgaXMgdGhhdCBtb2R1bG8gYXJpdGhtZXRpYyBpcyBzaW1wbGlmaWVkIGJ5IG1hc2tpbmcKK3RoZSBlZmZlY3RpdmUgYWRkcmVzcyB3aGVyZSB0aGUgbWFzayBpcyAoMl5uKS0xLiBUaGlzIG9ubHkgd29ya3MKK2lmIHRoZSBidWZmZXIgc2l6ZSBpcyBhIHBvd2VyIG9mIHR3by4KKyovCisjZGVmaW5lIENJUkNVTEFSKGJhc2Usb2Zmc2V0LHNpemUpICh1aW50MzJfdCkoICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICgoaW50MzJfdCkoYmFzZSkpICsgKChpbnQzMl90KShvZmZzZXQpKSAgICAgXAorICAgICAgICAgICAgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgJiBzaXplICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisKKyNkZWZpbmUgTlVNX09VVFBVVF9DSEFOTkVMUyAyCisjZGVmaW5lIE9VVFBVVF9DSEFOTkVMUyBDSEFOTkVMX1NURVJFTworCisjZGVmaW5lIFJFVkVSQl9CVUZGRVJfU0laRV9JTl9TQU1QTEVTX01BWCAgIDE2Mzg0CisKKyNkZWZpbmUgUkVWRVJCX05VTV9QUkVTRVRTICBSRVZFUkJfUFJFU0VUX1BMQVRFICAgLy8gUkVWRVJCX1BSRVNFVF9OT05FIGlzIG5vdCBpbmNsdWRlZAorI2RlZmluZSBSRVZFUkJfTUFYX05VTV9SRUZMRUNUSU9OUyAgICAgIDUgICAvLyBtYXggbnVtIHJlZmxlY3Rpb25zIHBlciBjaGFubmVsCisKKworLy8geGZhZGUgcGFyYW1ldGVycworI2RlZmluZSBSRVZFUkJfWEZBREVfUEVSSU9EX0lOX1NFQ09ORFMgICAgICAoZG91YmxlKSAoMTAwLjAgLyAxMDAwLjApICAgICAgICAvLyB4ZmFkZSBvbmNlIGV2ZXJ5IHRoaXMgbWFueSBzZWNvbmRzCisKKworLyoqKioqKioqKiovCisvKiB0aGUgZW50aXJlIHN5bnRoIHVzZXMgdmFyaW91cyBmbGFncyBpbiBhIGJpdCBmaWVsZCAqLworCisvKiBpZiBmbGFnIGlzIHNldCwgc3ludGggcmVzZXQgaGFzIGJlZW4gcmVxdWVzdGVkICovCisjZGVmaW5lIFJFVkVSQl9GTEFHX1JFU0VUX0lTX1JFUVVFU1RFRCAgICAgICAgICAweDAxICAgIC8qIGJpdCAwICovCisjZGVmaW5lIE1BU0tfUkVWRVJCX1JFU0VUX0lTX1JFUVVFU1RFRCAgICAgICAgICAweDAxCisjZGVmaW5lIE1BU0tfUkVWRVJCX1JFU0VUX0lTX05PVF9SRVFVRVNURUQgICAgICAodWludDMyX3QpKH5NQVNLX1JFVkVSQl9SRVNFVF9JU19SRVFVRVNURUQpCisKKy8qCitieSBkZWZhdWx0LCB3ZSBhbHdheXMgd2FudCB0byB1cGRhdGUgQUxMIGNoYW5uZWwgcGFyYW1ldGVycword2hlbiB3ZSByZXNldCB0aGUgc3ludGggKGUuZy4sIGR1cmluZyBHTSBPTikKKyovCisjZGVmaW5lIERFRkFVTFRfUkVWRVJCX0ZMQUdTICAgICAgICAgICAgICAgICAgICAweDAKKworLyogY29lZmZpY2llbnRzIGZvciBnZW5lcmF0aW5nIHNpbiwgY29zICovCisjZGVmaW5lIFJFVkVSQl9QQU5fRzIgICA0Mjk0OTQwMTUxICAgICAgICAgIC8qIC0wLjgyODQyNzEyNDc0NjE5ID0gMiAtIDQvc3FydCgyKSAqLworLyoKK2ludDMyX3QgblBhbkcxID0gKzEuMCBmb3Igc2luCitpbnQzMl90IG5QYW5HMSA9IC0xLjAgZm9yIGNvcworKi8KKyNkZWZpbmUgUkVWRVJCX1BBTl9HMCAgIDIzMTcwICAgICAgICAgICAgICAgLyogMC43MDcxMDY3ODExODY1NDcgPSAxL3NxcnQoMikgKi8KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisvLyBkZWZpbmUgdGhlIGlucHV0IGluamVjdGlvbiBwb2ludHMKKyNkZWZpbmUgR1VBUkQgICAgICAgICAgICAgICA1ICAgICAgICAgICAgICAgICAgICAgICAvLyBzYWZldHkgZ3VhcmQgb2YgdGhpcyBtYW55IHNhbXBsZXMKKworI2RlZmluZSBNQVhfQVBfVElNRSAgICAgICAgIChpbnQpICgoMjAqNjU1MzYpLzEwMDApICAvLyBkZWxheSB0aW1lIGluIHRpbWUgdW5pdHMgKDY1NTM2dGggb2Ygc2VjKQorI2RlZmluZSBNQVhfREVMQVlfVElNRSAgICAgIChpbnQpICgoNjUqNjU1MzYpLzEwMDApICAvLyBkZWxheSB0aW1lIGluIHRpbWUgdW5pdHMKKyNkZWZpbmUgTUFYX0VBUkxZX1RJTUUgICAgICAoaW50KSAoKDY1KjY1NTM2KS8xMDAwKSAgLy8gZGVsYXkgdGltZSBpbiB0aW1lIHVuaXRzCisKKyNkZWZpbmUgQVAwX0lOICAgICAgICAgICAgICAwCisKKworI2RlZmluZSBSRVZFUkJfREVGQVVMVF9ST09NX05VTUJFUiAgICAgIDEgICAgICAgLy8gZGVmYXVsdCBwcmVzZXQgbnVtYmVyCisjZGVmaW5lIERFRkFVTFRfQVAwX0dBSU4gICAgICAgICAgICAgICAgMTk0MDAKKyNkZWZpbmUgREVGQVVMVF9BUDFfR0FJTiAgICAgICAgICAgICAgICAtMTk0MDAKKworI2RlZmluZSBSRVZFUkJfREVGQVVMVF9XRVQgICAgICAgICAgICAgIDMyNzY3CisjZGVmaW5lIFJFVkVSQl9ERUZBVUxUX0RSWSAgICAgICAgICAgICAgMAorCisjZGVmaW5lIFJFVkVSQl9XRVRfTUFYICAgICAgICAgICAgICAzMjc2NworI2RlZmluZSBSRVZFUkJfV0VUX01JTiAgICAgICAgICAgICAgMAorI2RlZmluZSBSRVZFUkJfRFJZX01BWCAgICAgICAgICAgICAgMzI3NjcKKyNkZWZpbmUgUkVWRVJCX0RSWV9NSU4gICAgICAgICAgICAgIDAKKworLy8gY29uc3RhbnRzIGZvciByZXZlcmIgZGVuc2l0eQorLy8gVGhlIGRlbnNpdHkgZXhwcmVzc2VkIGluIHBlcm1pbGxlcyBjaGFuZ2VzIHRoZSBBbGxwYXNzIGRlbGF5IGluIGEgbGluZWFyIG1hbm5lciBpbiB0aGUgcmFuZ2UgZGVmaW5lZCBieQorLy8gQVAwX1RJTUVfQkFTRSB0byBBUDBfVElNRV9CQVNFICsgQVAwX1RJTUVfUkFOR0UKKyNkZWZpbmUgQVAwX1RJTUVfQkFTRSAoaW50KSgoOSo2NTUzNikvMTAwMCkKKyNkZWZpbmUgQVAwX1RJTUVfUkFOR0UgKGludCkoKDQqNjU1MzYpLzEwMDApCisjZGVmaW5lIEFQMV9USU1FX0JBU0UgKGludCkoKDEyKjY1NTM2KS8xMDAwKQorI2RlZmluZSBBUDFfVElNRV9SQU5HRSAoaW50KSgoOCo2NTUzNikvMTAwMCkKKworLy8gY29uc3RhbnRzIGZvciByZXZlcmIgZGlmZnVzaW9uCisvLyBUaGUgZGlmZnVzaW9uIGV4cHJlc3NlZCBpbiBwZXJtaWxsZXMgY2hhbmdlcyB0aGUgQWxscGFzcyBnYWluIGluIGEgbGluZWFyIG1hbm5lciBpbiB0aGUgcmFuZ2UgZGVmaW5lZCBieQorLy8gQVAwX0dBSU5fQkFTRSB0byBBUDBfR0FJTl9CQVNFICsgQVAwX0dBSU5fUkFOR0UKKyNkZWZpbmUgQVAwX0dBSU5fQkFTRSAoaW50KSg5ODMwKQorI2RlZmluZSBBUDBfR0FJTl9SQU5HRSAoaW50KSgxOTY2MC05ODMwKQorI2RlZmluZSBBUDFfR0FJTl9CQVNFIChpbnQpKDY1NTMpCisjZGVmaW5lIEFQMV9HQUlOX1JBTkdFIChpbnQpKDIyOTM2LTY1NTMpCisKKworLyogcGFyYW1ldGVycyBmb3IgZWFjaCBhbGxwYXNzICovCit0eXBlZGVmIHN0cnVjdAoreworICAgIHVpbnQxNl90ICAgICAgICAgICAgIG1fekFwT3V0OyAgICAgICAvLyBkZWxheSBvZmZzZXQgZm9yIGFwIG91dAorCisgICAgaW50MTZfdCAgICAgICAgICAgICBtX25BcEdhaW47ICAgICAgLy8gZ2FpbiBmb3IgYXAKKworICAgIHVpbnQxNl90ICAgICAgICAgICAgIG1fekFwSW47ICAgICAgICAvLyBkZWxheSBvZmZzZXQgZm9yIGFwIGluCisKK30gYWxscGFzc19vYmplY3RfdDsKKworCisvKiBwYXJhbWV0ZXJzIGZvciBlYXJseSByZWZsZWN0aW9ucyAqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICB1aW50MTZfdCAgICAgICAgICAgIG1fekRlbGF5W1JFVkVSQl9NQVhfTlVNX1JFRkxFQ1RJT05TXTsgICAvLyBkZWxheSBvZmZzZXQgZm9yIGFwIG91dAorCisgICAgaW50MTZfdCAgICAgICAgICAgICBtX25HYWluW1JFVkVSQl9NQVhfTlVNX1JFRkxFQ1RJT05TXTsgICAgLy8gZ2FpbiBmb3IgYXAKKworfSBlYXJseV9yZWZsZWN0aW9uX29iamVjdF90OworCisvL2RlbW8KK3R5cGVkZWYgc3RydWN0Cit7CisgICAgaW50MTZfdCAgICAgICAgICAgICBtX25SdmJMcGZGYms7CisgICAgaW50MTZfdCAgICAgICAgICAgICBtX25SdmJMcGZGd2Q7CisgICAgaW50MTZfdCAgICAgICAgICAgICBtX25Sb29tTHBmRmJrOworICAgIGludDE2X3QgICAgICAgICAgICAgbV9uUm9vbUxwZkZ3ZDsKKworICAgIGludDE2X3QgICAgICAgICAgICAgbV9uRWFybHlHYWluOworICAgIGludDE2X3QgICAgICAgICAgICAgbV9uRWFybHlEZWxheTsKKyAgICBpbnQxNl90ICAgICAgICAgICAgIG1fbkxhdGVHYWluOworICAgIGludDE2X3QgICAgICAgICAgICAgbV9uTGF0ZURlbGF5OworCisgICAgZWFybHlfcmVmbGVjdGlvbl9vYmplY3RfdCBtX3NFYXJseUw7CisgICAgZWFybHlfcmVmbGVjdGlvbl9vYmplY3RfdCBtX3NFYXJseVI7CisKKyAgICB1aW50MTZfdCAgICAgICAgICAgIG1fbk1heEV4Y3Vyc2lvbjsgLy8yOAorICAgIGludDE2X3QgICAgICAgICAgICAgbV9uWGZhZGVJbnRlcnZhbDsKKworICAgIGludDE2X3QgICAgICAgICAgICAgbV9uQXAwX0FwR2FpbjsgLy8zMAorICAgIGludDE2X3QgICAgICAgICAgICAgbV9uQXAwX0FwT3V0OworICAgIGludDE2X3QgICAgICAgICAgICAgbV9uQXAxX0FwR2FpbjsKKyAgICBpbnQxNl90ICAgICAgICAgICAgIG1fbkFwMV9BcE91dDsKKyAgICBpbnQxNl90ICAgICAgICAgICAgIG1fbkRpZmZ1c2lvbjsKKworICAgIGludDE2X3QgICAgICAgICAgICAgbV9yZnU0OworICAgIGludDE2X3QgICAgICAgICAgICAgbV9yZnU1OworICAgIGludDE2X3QgICAgICAgICAgICAgbV9yZnU2OworICAgIGludDE2X3QgICAgICAgICAgICAgbV9yZnU3OworICAgIGludDE2X3QgICAgICAgICAgICAgbV9yZnU4OworICAgIGludDE2X3QgICAgICAgICAgICAgbV9yZnU5OworICAgIGludDE2X3QgICAgICAgICAgICAgbV9yZnUxMDsgLy80MworCit9IHJldmVyYl9wcmVzZXRfdDsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgICByZXZlcmJfcHJlc2V0X3QgICAgIG1fc1ByZXNldFtSRVZFUkJfTlVNX1BSRVNFVFNdOyAvLyBhcnJheSBvZiBwcmVzZXRzKGRvZXMgbm90IGluY2x1ZGUgUkVWRVJCX1BSRVNFVF9OT05FKQorCit9IHJldmVyYl9wcmVzZXRfYmFua190OworCisKKy8qIHBhcmFtZXRlcnMgZm9yIGVhY2ggcmV2ZXJiICovCit0eXBlZGVmIHN0cnVjdAoreworICAgIC8qIHVwZGF0ZSBjb3VudGVyIGtlZXBzIHRyYWNrIG9mIHdoZW4gc3ludGggcGFyYW1zIG5lZWQgdXBkYXRpbmcgKi8KKyAgICAvKiBvbmx5IG5lZWRzIHRvIGJlIGFzIGxhcmdlIGFzIFJFVkVSQl9VUERBVEVfUEVSSU9EX0lOX1NBTVBMRVMgKi8KKyAgICBpbnQxNl90ICAgICAgICAgICAgIG1fblVwZGF0ZUNvdW50ZXI7CisKKyAgICB1aW50MTZfdCAgICAgICAgICAgICBtX25CYXNlSW5kZXg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiYXNlIGluZGV4IGZvciBjaXJjdWxhciBidWZmZXIKKworICAgIC8vIHJldmVyYiBkZWxheSBsaW5lIG9mZnNldHMsIGFsbHBhc3MgcGFyYW1ldGVycywgZXRjOgorCisgICAgc2hvcnQgICAgICAgICAgICAgbV9uUmV2RmJrUjsgICAgICAgICAgICAgIC8vIGNvbWJpbmUgZmVlZGJhY2sgcmV2ZXJiIHJpZ2h0IG91dCB3aXRoIGRyeSBsZWZ0IGluCisgICAgc2hvcnQgICAgICAgICAgICAgbV96T3V0THBmTDsgICAgICAgICAgICAgIC8vIGxlZnQgcmV2ZXJiIG91dHB1dAorCisgICAgYWxscGFzc19vYmplY3RfdCAgICBtX3NBcDA7ICAgICAgICAgICAgICAgICAgICAgLy8gYWxscGFzcyAwIChsZWZ0IGNoYW5uZWwpCisKKyAgICB1aW50MTZfdCAgICAgICAgICAgICBtX3pEMEluOyAgICAgICAgICAgICAgICAgICAgLy8gZGVsYXkgb2Zmc2V0IGZvciBkZWxheSBsaW5lIEQwIGluCisKKyAgICBzaG9ydCAgICAgICAgICAgICBtX25SZXZGYmtMOyAgICAgICAgICAgICAgLy8gY29tYmluZSBmZWVkYmFjayByZXZlcmIgbGVmdCBvdXQgd2l0aCBkcnkgcmlnaHQgaW4KKyAgICBzaG9ydCAgICAgICAgICAgICBtX3pPdXRMcGZSOyAgICAgICAgICAgICAgLy8gcmlnaHQgcmV2ZXJiIG91dHB1dAorCisgICAgYWxscGFzc19vYmplY3RfdCAgICBtX3NBcDE7ICAgICAgICAgICAgICAgICAgICAgLy8gYWxscGFzcyAxIChyaWdodCBjaGFubmVsKQorCisgICAgdWludDE2X3QgICAgICAgICAgICAgbV96RDFJbjsgICAgICAgICAgICAgICAgICAgIC8vIGRlbGF5IG9mZnNldCBmb3IgZGVsYXkgbGluZSBEMSBpbgorCisgICAgLy8gZGVsYXkgb3V0cHV0IHRhcHMsIG5vdGljZSBjcmlzcyBjcm9zcyBvcmRlcgorICAgIHVpbnQxNl90ICAgICAgICAgICAgIG1fekQwU2VsZjsgICAgICAgICAgICAgICAgICAvLyBzZWxmIGZlZWRzIGZvcndhcmQgZDAgLS0+IGQwCisKKyAgICB1aW50MTZfdCAgICAgICAgICAgICBtX3pEMUNyb3NzOyAgICAgICAgICAgICAgICAgLy8gY3Jvc3MgZmVlZHMgYWNyb3NzIGQxIC0tPiBkMAorCisgICAgdWludDE2X3QgICAgICAgICAgICAgbV96RDFTZWxmOyAgICAgICAgICAgICAgICAgIC8vIHNlbGYgZmVlZHMgZm9yd2FyZCBkMSAtLT4gZDEKKworICAgIHVpbnQxNl90ICAgICAgICAgICAgIG1fekQwQ3Jvc3M7ICAgICAgICAgICAgICAgICAvLyBjcm9zcyBmZWVkcyBhY3Jvc3MgZDAgLS0+IGQxCisKKyAgICBpbnQxNl90ICAgICAgICAgICAgIG1fblNpbjsgICAgICAgICAgICAgICAgICAgICAvLyBnYWluIGZvciBzZWxmIHRhcHMKKworICAgIGludDE2X3QgICAgICAgICAgICAgbV9uQ29zOyAgICAgICAgICAgICAgICAgICAgIC8vIGdhaW4gZm9yIGNyb3NzIHRhcHMKKworICAgIGludDE2X3QgICAgICAgICAgICAgbV9uU2luSW5jcmVtZW50OyAgICAgICAgICAgIC8vIGluY3JlbWVudCBmb3IgZ2FpbgorCisgICAgaW50MTZfdCAgICAgICAgICAgICBtX25Db3NJbmNyZW1lbnQ7ICAgICAgICAgICAgLy8gaW5jcmVtZW50IGZvciBnYWluCisKKyAgICBpbnQxNl90ICAgICAgICAgICAgIG1fblJ2YkxwZkZ3ZDsgICAgICAgICAgICAgICAgICAvLyByZXZlcmIgZmVlZGJhY2sgbHBmIGZvcndhcmQgZ2FpbiAoaW5jbHVkZXMgc2NhbGluZyBmb3IgbWl4ZXIpCisKKyAgICBpbnQxNl90ICAgICAgICAgICAgIG1fblJ2YkxwZkZiazsgICAgICAgICAgICAgICAgICAvLyByZXZlcmIgZmVlZGJhY2sgbHBmIGZlZWRiYWNrIGdhaW4KKworICAgIGludDE2X3QgICAgICAgICAgICAgbV9uUm9vbUxwZkZ3ZDsgICAgICAgICAgICAgICAgICAvLyByb29tIGxwZiBmb3J3YXJkIGdhaW4gKGluY2x1ZGVzIHNjYWxpbmcgZm9yIG1peGVyKQorCisgICAgaW50MTZfdCAgICAgICAgICAgICBtX25Sb29tTHBmRmJrOyAgICAgICAgICAgICAgICAgIC8vIHJvb20gbHBmIGZlZWRiYWNrIGdhaW4KKworICAgIHVpbnQxNl90ICAgICAgICAgICAgbV9uWGZhZGVJbnRlcnZhbDsgICAgICAgICAgIC8vIHVwZGF0ZS94ZmFkZSBhZnRlciB0aGlzIG1hbnkgc2FtcGxlcworCisgICAgdWludDE2X3QgICAgICAgICAgICBtX25YZmFkZUNvdW50ZXI7ICAgICAgICAgICAgLy8ga2VlcCB0cmFjayBvZiB3aGVuIHRvIHhmYWRlCisKKyAgICBpbnQxNl90ICAgICAgICAgICAgIG1fblBoYXNlOyAgICAgICAgICAgICAgICAgICAvLyAtMSA8PSBtX25QaGFzZSA8IDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBidXQgZHVyaW5nIHNpbixjb3MgY2FsY3VsYXRpb25zCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdXNlIG1fblBoYXNlLzIKKworICAgIGludDE2X3QgICAgICAgICAgICAgbV9uUGhhc2VJbmNyZW1lbnQ7ICAgICAgICAgIC8vIGFkZCB0aGlzIHRvIG1fblBoYXNlIGVhY2ggZnJhbWUKKworICAgIGludDE2X3QgICAgICAgICAgICAgbV9uTm9pc2U7ICAgICAgICAgICAgICAgICAgIC8vIHJhbmRvbSBub2lzZSBzYW1wbGUKKworICAgIHVpbnQxNl90ICAgICAgICAgICAgbV9uTWF4RXhjdXJzaW9uOyAgICAgICAgICAgIC8vIHRoZSB0YXBzIGNhbiBleGN1cnNlICsvLSB0aGlzIGFtb3VudAorCisgICAgdWludDE2X3QgICAgICAgICAgICBtX2JVc2VOb2lzZTsgICAgICAgICAgICAgICAgLy8gaWYgVFJVRSwgdXNlIG5vaXNlIGFzIGlucHV0IHNpZ25hbAorCisgICAgdWludDE2X3QgICAgICAgICAgICBtX2JCeXBhc3M7ICAgICAgICAgICAgICAgICAgLy8gaWYgVFJVRSwgdGhlbiBieXBhc3MgcmV2ZXJiIGFuZCBjb3B5IGlucHV0IHRvIG91dHB1dAorCisgICAgaW50MTZfdCAgICAgICAgICAgICBtX25DdXJyZW50Um9vbTsgICAgICAgICAgICAgLy8gcHJlc2V0IG51bWJlciBmb3IgY3VycmVudCByb29tCisKKyAgICBpbnQxNl90ICAgICAgICAgICAgIG1fbk5leHRSb29tOyAgICAgICAgICAgICAgICAvLyBwcmVzZXQgbnVtYmVyIGZvciBuZXh0IHJvb20KKworICAgIGludDE2X3QgICAgICAgICAgICAgbV9uRWFybHlHYWluOyAgICAgICAgICAgICAgIC8vIGdhaW4gZm9yIGVhcmx5ICh3aWRlbikgc2lnbmFsCisgICAgaW50MTZfdCAgICAgICAgICAgICBtX25FYXJseURlbGF5OyAgICAgICAgICAgICAgLy8gaW5pdGlhbCBkZWFseSBmb3IgZWFybHkgKHdpZGVuKSBzaWduYWwKKyAgICBpbnQxNl90ICAgICAgICAgICAgIG1fbkVhcmx5MGluOworICAgIGludDE2X3QgICAgICAgICAgICAgbV9uRWFybHkxaW47CisgICAgaW50MTZfdCAgICAgICAgICAgICBtX25MYXRlR2FpbjsgICAgICAgICAgICAgICAvLyBnYWluIGZvciBsYXRlIHJldmVyYgorICAgIGludDE2X3QgICAgICAgICAgICAgbV9uTGF0ZURlbGF5OworCisgICAgaW50MTZfdCAgICAgICAgICAgICBtX25EaWZmdXNpb247CisKKyAgICBlYXJseV9yZWZsZWN0aW9uX29iamVjdF90ICAgbV9zRWFybHlMOyAgICAgICAgICAvLyBsZWZ0IGNoYW5uZWwgZWFybHkgcmVmbGVjdGlvbnMKKyAgICBlYXJseV9yZWZsZWN0aW9uX29iamVjdF90ICAgbV9zRWFybHlSOyAgICAgICAgICAvLyByaWdodCBjaGFubmVsIGVhcmx5IHJlZmxlY3Rpb25zCisKKyAgICBzaG9ydCAgICAgICAgICAgICBtX25EZWxheUxpbmVbUkVWRVJCX0JVRkZFUl9TSVpFX0lOX1NBTVBMRVNfTUFYXTsgICAgLy8gb25lIGxhcmdlIGRlbGF5IGxpbmUgZm9yIGFsbCByZXZlcmIgZWxlbWVudHMKKworICAgIHJldmVyYl9wcmVzZXRfdCAgICAgcFByZXNldDsKKworICAgIHJldmVyYl9wcmVzZXRfYmFua190ICBtX3NQcmVzZXQ7CisKKyAgICAvL2ludDhfdCAgICAgICAgICAgIHByZXNldDsKKyAgICB1aW50MzJfdCAgICAgICAgICAgIG1fblNhbXBsaW5nUmF0ZTsKKyAgICBpbnQzMl90ICAgICAgICAgICAgIG1fblVwZGF0ZVBlcmlvZEluQml0czsKKyAgICBpbnQzMl90ICAgICAgICAgICAgIG1fbkJ1ZmZlck1hc2s7CisgICAgaW50MzJfdCAgICAgICAgICAgICBtX25VcGRhdGVQZXJpb2RJblNhbXBsZXM7CisgICAgaW50MzJfdCAgICAgICAgICAgICBtX25EZWxheTBPdXQ7CisgICAgaW50MzJfdCAgICAgICAgICAgICBtX25EZWxheTFPdXQ7CisgICAgaW50MTZfdCAgICAgICAgICAgICBtX25Db3NXVF81S0h6OworCisgICAgdWludDE2X3QgICAgICAgICAgICBtX0F1eDsgICAgICAgICAgICAgICAgLy8gaWYgVFJVRSwgaXMgY29ubmVjdGVkIGFzIGF1eGlsaWFyeSBlZmZlY3QKKyAgICB1aW50MTZfdCAgICAgICAgICAgIG1fUHJlc2V0OyAgICAgICAgICAgICAvLyBpZiBUUlVFLCBleHBvc2UgcHJlc2V0IHJldmVydCBpbnRlcmZhY2UKKworfSByZXZlcmJfb2JqZWN0X3Q7CisKKworCit0eXBlZGVmIHN0cnVjdCByZXZlcmJfbW9kdWxlX3MgeworICAgIGNvbnN0IHN0cnVjdCBlZmZlY3RfaW50ZXJmYWNlX3MgKml0ZmU7CisgICAgZWZmZWN0X2NvbmZpZ190IGNvbmZpZzsKKyAgICByZXZlcmJfb2JqZWN0X3QgY29udGV4dDsKK30gcmV2ZXJiX21vZHVsZV90OworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogRWZmZWN0IEFQSQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyovCitpbnQgRWZmZWN0UXVlcnlOdW1iZXJFZmZlY3RzKHVpbnQzMl90ICpwTnVtRWZmZWN0cyk7CitpbnQgRWZmZWN0UXVlcnlFZmZlY3QodWludDMyX3QgaW5kZXgsIGVmZmVjdF9kZXNjcmlwdG9yX3QgKnBEZXNjcmlwdG9yKTsKK2ludCBFZmZlY3RDcmVhdGUoZWZmZWN0X3V1aWRfdCAqZWZmZWN0VUlELCBpbnQzMl90IHNlc3Npb25JZCwgaW50MzJfdCBpb0lkLCBlZmZlY3RfaW50ZXJmYWNlX3QgKnBJbnRlcmZhY2UpOworaW50IEVmZmVjdFJlbGVhc2UoZWZmZWN0X2ludGVyZmFjZV90IGludGVyZmFjZSk7CisKK3N0YXRpYyBpbnQgUmV2ZXJiX1Byb2Nlc3MoZWZmZWN0X2ludGVyZmFjZV90IHNlbGYsIGF1ZGlvX2J1ZmZlcl90ICppbkJ1ZmZlciwgYXVkaW9fYnVmZmVyX3QgKm91dEJ1ZmZlcik7CitzdGF0aWMgaW50IFJldmVyYl9Db21tYW5kKGVmZmVjdF9pbnRlcmZhY2VfdCBzZWxmLCBpbnQgY21kQ29kZSwgaW50IGNtZFNpemUsIHZvaWQgKnBDbWREYXRhLCBpbnQgKnJlcGx5U2l6ZSwgdm9pZCAqcFJlcGx5RGF0YSk7CisKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIGludGVybmFsIGZ1bmN0aW9ucworICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyovCisKK2ludCBSZXZlcmJfSW5pdChyZXZlcmJfbW9kdWxlX3QgKnBSdmJNb2R1bGUsIGludCBhdXgsIGludCBwcmVzZXQpOworaW50IFJldmVyYl9Db25maWd1cmUocmV2ZXJiX21vZHVsZV90ICpwUnZiTW9kdWxlLCBlZmZlY3RfY29uZmlnX3QgKnBDb25maWcsIGJvb2wgaW5pdCk7Cit2b2lkIFJldmVyYl9SZXNldChyZXZlcmJfb2JqZWN0X3QgKnBSZXZlcmIsIGJvb2wgaW5pdCk7CisKK2ludCBSZXZlcmJfc2V0UGFyYW1ldGVyIChyZXZlcmJfb2JqZWN0X3QgKnBSZXZlcmIsIGludDMyX3QgcGFyYW0sIHNpemVfdCBzaXplLCB2b2lkICpwVmFsdWUpOworaW50IFJldmVyYl9nZXRQYXJhbWV0ZXIocmV2ZXJiX29iamVjdF90ICpwUmV2ZXJiLCBpbnQzMl90IHBhcmFtLCBzaXplX3QgKnBTaXplLCB2b2lkICpwVmFsdWUpOworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFJldmVyYlVwZGF0ZVhmYWRlCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFB1cnBvc2U6CisgKiBVcGRhdGUgdGhlIHhmYWRlIHBhcmFtZXRlcnMgYXMgcmVxdWlyZWQKKyAqCisgKiBJbnB1dHM6CisgKiBuTnVtU2FtcGxlc1RvQWRkIC0gbnVtYmVyIG9mIHNhbXBsZXMgdG8gd3JpdGUgdG8gYnVmZmVyCisgKgorICogT3V0cHV0czoKKyAqCisgKgorICogU2lkZSBFZmZlY3RzOgorICogLSB4ZmFkZSBwYXJhbWV0ZXJzIHdpbGwgYmUgY2hhbmdlZAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKi8KK3N0YXRpYyBpbnQgUmV2ZXJiVXBkYXRlWGZhZGUocmV2ZXJiX29iamVjdF90KiBwUmV2ZXJiRGF0YSwgaW50IG5OdW1TYW1wbGVzVG9BZGQpOworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFJldmVyYkNhbGN1bGF0ZU5vaXNlCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFB1cnBvc2U6CisgKiBDYWxjdWxhdGUgYSBub2lzZSBzYW1wbGUgYW5kIGxpbWl0IGl0cyB2YWx1ZQorICoKKyAqIElucHV0czoKKyAqIFBvaW50ZXIgdG8gcmV2ZXJiIGNvbnRleHQKKyAqCisgKiBPdXRwdXRzOgorICogbmV3IGxpbWl0ZWQgbm9pc2UgdmFsdWUKKyAqCisgKiBTaWRlIEVmZmVjdHM6CisgKiAtIHBSZXZlcmJEYXRhLT5tX25Ob2lzZSB2YWx1ZSBpcyB1cGRhdGVkCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqLworc3RhdGljIHVpbnQxNl90IFJldmVyYkNhbGN1bGF0ZU5vaXNlKHJldmVyYl9vYmplY3RfdCAqcFJldmVyYkRhdGEpOworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFJldmVyYkNhbGN1bGF0ZVNpbkNvcworICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBQdXJwb3NlOgorICogQ2FsY3VsYXRlIGEgbmV3IHNpbiBhbmQgY29zaW5lIHZhbHVlIGJhc2VkIG9uIHRoZSBnaXZlbiBwaGFzZQorICoKKyAqIElucHV0czoKKyAqIG5QaGFzZSAgIC0gcGhhc2UgYW5nbGUKKyAqIHBuU2luICAgIC0gaW5wdXQgb2xkIHZhbHVlLCBvdXRwdXQgbmV3IHZhbHVlCisgKiBwbkNvcyAgICAtIGlucHV0IG9sZCB2YWx1ZSwgb3V0cHV0IG5ldyB2YWx1ZQorICoKKyAqIE91dHB1dHM6CisgKgorICogU2lkZSBFZmZlY3RzOgorICogLSAqcG5TaW4sICpwbkNvcyBhcmUgdXBkYXRlZAorICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKi8KK3N0YXRpYyBpbnQgUmV2ZXJiQ2FsY3VsYXRlU2luQ29zKGludDE2X3QgblBoYXNlLCBpbnQxNl90ICpwblNpbiwgaW50MTZfdCAqcG5Db3MpOworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFJldmVyYgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBQdXJwb3NlOgorICogYXBwbHkgcmV2ZXJiIHRvIHRoZSBnaXZlbiBzaWduYWwKKyAqCisgKiBJbnB1dHM6CisgKiBuTnUKKyAqIHBuU2luICAgIC0gaW5wdXQgb2xkIHZhbHVlLCBvdXRwdXQgbmV3IHZhbHVlCisgKiBwbkNvcyAgICAtIGlucHV0IG9sZCB2YWx1ZSwgb3V0cHV0IG5ldyB2YWx1ZQorICoKKyAqIE91dHB1dHM6CisgKiBudW1iZXIgb2Ygc2FtcGxlcyBhY3R1YWxseSByZXZlcmJlcmF0ZWQKKyAqCisgKiBTaWRlIEVmZmVjdHM6CisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqLworc3RhdGljIGludCBSZXZlcmIocmV2ZXJiX29iamVjdF90KiBwUmV2ZXJiRGF0YSwgaW50IG5OdW1TYW1wbGVzVG9BZGQsIHNob3J0ICpwT3V0cHV0QnVmZmVyLCBzaG9ydCAqcElucHV0QnVmZmVyKTsKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBSZXZlcmJSZWFkSW5QcmVzZXRzKCkKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUHVycG9zZTogc2V0cyBnbG9iYWwgcmV2ZXJiIHByZXNldCBiYW5rIHRvIGRlZmF1bHRzCisgKgorICogSW5wdXRzOgorICoKKyAqIE91dHB1dHM6CisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqLworc3RhdGljIGludCBSZXZlcmJSZWFkSW5QcmVzZXRzKHJldmVyYl9vYmplY3RfdCogcFJldmVyYkRhdGEpOworCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUmV2ZXJiVXBkYXRlUm9vbQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBQdXJwb3NlOgorICogVXBkYXRlIHRoZSByb29tJ3MgcHJlc2V0IHBhcmFtZXRlcnMgYXMgcmVxdWlyZWQKKyAqCisgKiBJbnB1dHM6CisgKgorICogT3V0cHV0czoKKyAqCisgKgorICogU2lkZSBFZmZlY3RzOgorICogLSByZXZlcmIgcGFyYW10ZXJzIChmYmssIGZ3ZCwgZXRjKSB3aWxsIGJlIGNoYW5nZWQKKyAqIC0gbV9uQ3VycmVudFJvb20gOj0gbV9uTmV4dFJvb20KKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKi8KK3N0YXRpYyBpbnQgUmV2ZXJiVXBkYXRlUm9vbShyZXZlcmJfb2JqZWN0X3QqIHBSZXZlcmJEYXRhLCBib29sIGZ1bGxVcGRhdGUpOworCisKK3N0YXRpYyBpbnQgUmV2ZXJiQ29tcHV0ZUNvbnN0YW50cyhyZXZlcmJfb2JqZWN0X3QgKnBSZXZlcmJEYXRhLCB1aW50MzJfdCBzYW1wbGluZ1JhdGUpOworCisjZW5kaWYgLypBTkRST0lEX0VGRkVDVFJFVkVSQl9IXyovCmRpZmYgLS1naXQgYS9tZWRpYS9saWJlZmZlY3RzL0VmZmVjdFZpc3VhbGl6ZXIuY3BwIGIvbWVkaWEvbGliZWZmZWN0cy9FZmZlY3RWaXN1YWxpemVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjdlMjk2Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGliZWZmZWN0cy9FZmZlY3RWaXN1YWxpemVyLmNwcApAQCAtMCwwICsxLDQwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNkZWZpbmUgTE9HX1RBRyAiVmlzdWFsaXplciIKKy8vI2RlZmluZSBMT0dfTkRFQlVHIDAKKyNpbmNsdWRlIDxjdXRpbHMvbG9nLmg+CisjaW5jbHVkZSA8YXNzZXJ0Lmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8bmV3PgorI2luY2x1ZGUgPG1lZGlhL0VmZmVjdFZpc3VhbGl6ZXJBcGkuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCisvLyBlZmZlY3RfaW50ZXJmYWNlX3QgaW50ZXJmYWNlIGltcGxlbWVudGF0aW9uIGZvciB2aXN1YWxpemVyIGVmZmVjdAorZXh0ZXJuICJDIiBjb25zdCBzdHJ1Y3QgZWZmZWN0X2ludGVyZmFjZV9zIGdWaXN1YWxpemVySW50ZXJmYWNlOworCisvLyBHb29nbGUgVmlzdWFsaXplciBVVUlEOiBkMDY5ZDllMC04MzI5LTExZGYtOTE2OC0wMDAyYTVkNWM1MWIKK2NvbnN0IGVmZmVjdF9kZXNjcmlwdG9yX3QgZ1Zpc3VhbGl6ZXJEZXNjcmlwdG9yID0geworICAgICAgICB7MHhlNDZiMjZhMCwgMHhkZGRkLCAweDExZGIsIDB4OGFmZCwgezB4MDAsIDB4MDIsIDB4YTUsIDB4ZDUsIDB4YzUsIDB4MWJ9fSwgLy8gdHlwZQorICAgICAgICB7MHhkMDY5ZDllMCwgMHg4MzI5LCAweDExZGYsIDB4OTE2OCwgezB4MDAsIDB4MDIsIDB4YTUsIDB4ZDUsIDB4YzUsIDB4MWJ9fSwgLy8gdXVpZAorICAgICAgICBFRkZFQ1RfQVBJX1ZFUlNJT04sCisgICAgICAgIChFRkZFQ1RfRkxBR19UWVBFX0lOU0VSVCB8IEVGRkVDVF9GTEFHX0lOU0VSVF9GSVJTVCksCisgICAgICAgIDAsIC8vIFRPRE8KKyAgICAgICAgMSwKKyAgICAgICAgIlZpc3VhbGl6ZXIiLAorICAgICAgICAiR29vZ2xlIEluYy4iLAorfTsKKworZW51bSB2aXN1YWxpemVyX3N0YXRlX2UgeworICAgIFZJU1VBTElaRVJfU1RBVEVfVU5JTklUSUFMSVpFRCwKKyAgICBWSVNVQUxJWkVSX1NUQVRFX0lOSVRJQUxJWkVELAorICAgIFZJU1VBTElaRVJfU1RBVEVfQUNUSVZFLAorfTsKKworc3RydWN0IFZpc3VhbGl6ZXJDb250ZXh0IHsKKyAgICBjb25zdCBzdHJ1Y3QgZWZmZWN0X2ludGVyZmFjZV9zICptSXRmZTsKKyAgICBlZmZlY3RfY29uZmlnX3QgbUNvbmZpZzsKKyAgICB1aW50MzJfdCBtU3RhdGU7CisgICAgdWludDMyX3QgbUNhcHR1cmVJZHg7CisgICAgdWludDMyX3QgbUNhcHR1cmVTaXplOworICAgIHVpbnQzMl90IG1DdXJyZW50QnVmOworICAgIHVpbnQ4X3QgbUNhcHR1cmVCdWZbMl1bVklTVUFMSVpFUl9DQVBUVVJFX1NJWkVfTUFYXTsKK307CisKKworLy8KKy8vLS0tIExvY2FsIGZ1bmN0aW9ucworLy8KKwordm9pZCBWaXN1YWxpemVyX3Jlc2V0KFZpc3VhbGl6ZXJDb250ZXh0ICpwQ29udGV4dCkKK3sKKyAgICBwQ29udGV4dC0+bUNhcHR1cmVJZHggPSAwOworICAgIHBDb250ZXh0LT5tQ3VycmVudEJ1ZiA9IDA7CisgICAgbWVtc2V0KHBDb250ZXh0LT5tQ2FwdHVyZUJ1ZlswXSwgMCwgVklTVUFMSVpFUl9DQVBUVVJFX1NJWkVfTUFYKTsKKyAgICBtZW1zZXQocENvbnRleHQtPm1DYXB0dXJlQnVmWzFdLCAwLCBWSVNVQUxJWkVSX0NBUFRVUkVfU0laRV9NQVgpOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIFZpc3VhbGl6ZXJfY29uZmlndXJlKCkKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gUHVycG9zZTogU2V0IGlucHV0IGFuZCBvdXRwdXQgYXVkaW8gY29uZmlndXJhdGlvbi4KKy8vCisvLyBJbnB1dHM6CisvLyAgcENvbnRleHQ6ICAgZWZmZWN0IGVuZ2luZSBjb250ZXh0CisvLyAgcENvbmZpZzogICAgcG9pbnRlciB0byBlZmZlY3RfY29uZmlnX3Qgc3RydWN0dXJlIGhvbGRpbmcgaW5wdXQgYW5kIG91dHB1dAorLy8gICAgICBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMKKy8vCisvLyBPdXRwdXRzOgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitpbnQgVmlzdWFsaXplcl9jb25maWd1cmUoVmlzdWFsaXplckNvbnRleHQgKnBDb250ZXh0LCBlZmZlY3RfY29uZmlnX3QgKnBDb25maWcpCit7CisgICAgTE9HVigiVmlzdWFsaXplcl9jb25maWd1cmUgc3RhcnQiKTsKKworICAgIGlmIChwQ29uZmlnLT5pbnB1dENmZy5zYW1wbGluZ1JhdGUgIT0gcENvbmZpZy0+b3V0cHV0Q2ZnLnNhbXBsaW5nUmF0ZSkgcmV0dXJuIC1FSU5WQUw7CisgICAgaWYgKHBDb25maWctPmlucHV0Q2ZnLmNoYW5uZWxzICE9IHBDb25maWctPm91dHB1dENmZy5jaGFubmVscykgcmV0dXJuIC1FSU5WQUw7CisgICAgaWYgKHBDb25maWctPmlucHV0Q2ZnLmZvcm1hdCAhPSBwQ29uZmlnLT5vdXRwdXRDZmcuZm9ybWF0KSByZXR1cm4gLUVJTlZBTDsKKyAgICBpZiAocENvbmZpZy0+aW5wdXRDZmcuY2hhbm5lbHMgIT0gQ0hBTk5FTF9TVEVSRU8pIHJldHVybiAtRUlOVkFMOworICAgIGlmIChwQ29uZmlnLT5vdXRwdXRDZmcuYWNjZXNzTW9kZSAhPSBFRkZFQ1RfQlVGRkVSX0FDQ0VTU19XUklURSAmJgorICAgICAgICAgICAgcENvbmZpZy0+b3V0cHV0Q2ZnLmFjY2Vzc01vZGUgIT0gRUZGRUNUX0JVRkZFUl9BQ0NFU1NfQUNDVU1VTEFURSkgcmV0dXJuIC1FSU5WQUw7CisgICAgaWYgKHBDb25maWctPmlucHV0Q2ZnLmZvcm1hdCAhPSBTQU1QTEVfRk9STUFUX1BDTV9TMTUpIHJldHVybiAtRUlOVkFMOworCisgICAgbWVtY3B5KCZwQ29udGV4dC0+bUNvbmZpZywgcENvbmZpZywgc2l6ZW9mKGVmZmVjdF9jb25maWdfdCkpOworCisgICAgVmlzdWFsaXplcl9yZXNldChwQ29udGV4dCk7CisKKyAgICByZXR1cm4gMDsKK30KKworCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIFZpc3VhbGl6ZXJfaW5pdCgpCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIFB1cnBvc2U6IEluaXRpYWxpemUgZW5naW5lIHdpdGggZGVmYXVsdCBjb25maWd1cmF0aW9uLgorLy8KKy8vIElucHV0czoKKy8vICBwQ29udGV4dDogICBlZmZlY3QgZW5naW5lIGNvbnRleHQKKy8vCisvLyBPdXRwdXRzOgorLy8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitpbnQgVmlzdWFsaXplcl9pbml0KFZpc3VhbGl6ZXJDb250ZXh0ICpwQ29udGV4dCkKK3sKKyAgICBwQ29udGV4dC0+bUNvbmZpZy5pbnB1dENmZy5hY2Nlc3NNb2RlID0gRUZGRUNUX0JVRkZFUl9BQ0NFU1NfUkVBRDsKKyAgICBwQ29udGV4dC0+bUNvbmZpZy5pbnB1dENmZy5jaGFubmVscyA9IENIQU5ORUxfU1RFUkVPOworICAgIHBDb250ZXh0LT5tQ29uZmlnLmlucHV0Q2ZnLmZvcm1hdCA9IFNBTVBMRV9GT1JNQVRfUENNX1MxNTsKKyAgICBwQ29udGV4dC0+bUNvbmZpZy5pbnB1dENmZy5zYW1wbGluZ1JhdGUgPSA0NDEwMDsKKyAgICBwQ29udGV4dC0+bUNvbmZpZy5pbnB1dENmZy5idWZmZXJQcm92aWRlci5nZXRCdWZmZXIgPSBOVUxMOworICAgIHBDb250ZXh0LT5tQ29uZmlnLmlucHV0Q2ZnLmJ1ZmZlclByb3ZpZGVyLnJlbGVhc2VCdWZmZXIgPSBOVUxMOworICAgIHBDb250ZXh0LT5tQ29uZmlnLmlucHV0Q2ZnLmJ1ZmZlclByb3ZpZGVyLmNvb2tpZSA9IE5VTEw7CisgICAgcENvbnRleHQtPm1Db25maWcuaW5wdXRDZmcubWFzayA9IEVGRkVDVF9DT05GSUdfQUxMOworICAgIHBDb250ZXh0LT5tQ29uZmlnLm91dHB1dENmZy5hY2Nlc3NNb2RlID0gRUZGRUNUX0JVRkZFUl9BQ0NFU1NfQUNDVU1VTEFURTsKKyAgICBwQ29udGV4dC0+bUNvbmZpZy5vdXRwdXRDZmcuY2hhbm5lbHMgPSBDSEFOTkVMX1NURVJFTzsKKyAgICBwQ29udGV4dC0+bUNvbmZpZy5vdXRwdXRDZmcuZm9ybWF0ID0gU0FNUExFX0ZPUk1BVF9QQ01fUzE1OworICAgIHBDb250ZXh0LT5tQ29uZmlnLm91dHB1dENmZy5zYW1wbGluZ1JhdGUgPSA0NDEwMDsKKyAgICBwQ29udGV4dC0+bUNvbmZpZy5vdXRwdXRDZmcuYnVmZmVyUHJvdmlkZXIuZ2V0QnVmZmVyID0gTlVMTDsKKyAgICBwQ29udGV4dC0+bUNvbmZpZy5vdXRwdXRDZmcuYnVmZmVyUHJvdmlkZXIucmVsZWFzZUJ1ZmZlciA9IE5VTEw7CisgICAgcENvbnRleHQtPm1Db25maWcub3V0cHV0Q2ZnLmJ1ZmZlclByb3ZpZGVyLmNvb2tpZSA9IE5VTEw7CisgICAgcENvbnRleHQtPm1Db25maWcub3V0cHV0Q2ZnLm1hc2sgPSBFRkZFQ1RfQ09ORklHX0FMTDsKKworICAgIHBDb250ZXh0LT5tQ2FwdHVyZVNpemUgPSBWSVNVQUxJWkVSX0NBUFRVUkVfU0laRV9NQVg7CisKKyAgICBWaXN1YWxpemVyX2NvbmZpZ3VyZShwQ29udGV4dCwgJnBDb250ZXh0LT5tQ29uZmlnKTsKKworICAgIHJldHVybiAwOworfQorCisvLworLy8tLS0gRWZmZWN0IExpYnJhcnkgSW50ZXJmYWNlIEltcGxlbWVudGF0aW9uCisvLworCitleHRlcm4gIkMiIGludCBFZmZlY3RRdWVyeU51bWJlckVmZmVjdHModWludDMyX3QgKnBOdW1FZmZlY3RzKSB7CisgICAgKnBOdW1FZmZlY3RzID0gMTsKKyAgICByZXR1cm4gMDsKK30KKworZXh0ZXJuICJDIiBpbnQgRWZmZWN0UXVlcnlFZmZlY3QodWludDMyX3QgaW5kZXgsIGVmZmVjdF9kZXNjcmlwdG9yX3QgKnBEZXNjcmlwdG9yKSB7CisgICAgaWYgKHBEZXNjcmlwdG9yID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQorICAgIGlmIChpbmRleCA+IDApIHsKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQorICAgIG1lbWNweShwRGVzY3JpcHRvciwgJmdWaXN1YWxpemVyRGVzY3JpcHRvciwgc2l6ZW9mKGVmZmVjdF9kZXNjcmlwdG9yX3QpKTsKKyAgICByZXR1cm4gMDsKK30KKworZXh0ZXJuICJDIiBpbnQgRWZmZWN0Q3JlYXRlKGVmZmVjdF91dWlkX3QgKnV1aWQsCisgICAgICAgIGludDMyX3Qgc2Vzc2lvbklkLAorICAgICAgICBpbnQzMl90IGlvSWQsCisgICAgICAgIGVmZmVjdF9pbnRlcmZhY2VfdCAqcEludGVyZmFjZSkgeworICAgIGludCByZXQ7CisgICAgaW50IGk7CisKKyAgICBpZiAocEludGVyZmFjZSA9PSBOVUxMIHx8IHV1aWQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisKKyAgICBpZiAobWVtY21wKHV1aWQsICZnVmlzdWFsaXplckRlc2NyaXB0b3IudXVpZCwgc2l6ZW9mKGVmZmVjdF91dWlkX3QpKSAhPSAwKSB7CisgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKworICAgIFZpc3VhbGl6ZXJDb250ZXh0ICpwQ29udGV4dCA9IG5ldyBWaXN1YWxpemVyQ29udGV4dDsKKworICAgIHBDb250ZXh0LT5tSXRmZSA9ICZnVmlzdWFsaXplckludGVyZmFjZTsKKyAgICBwQ29udGV4dC0+bVN0YXRlID0gVklTVUFMSVpFUl9TVEFURV9VTklOSVRJQUxJWkVEOworCisgICAgcmV0ID0gVmlzdWFsaXplcl9pbml0KHBDb250ZXh0KTsKKyAgICBpZiAocmV0IDwgMCkgeworICAgICAgICBMT0dXKCJFZmZlY3RDcmVhdGUoKSBpbml0IGZhaWxlZCIpOworICAgICAgICBkZWxldGUgcENvbnRleHQ7CisgICAgICAgIHJldHVybiByZXQ7CisgICAgfQorCisgICAgKnBJbnRlcmZhY2UgPSAoZWZmZWN0X2ludGVyZmFjZV90KXBDb250ZXh0OworCisgICAgcENvbnRleHQtPm1TdGF0ZSA9IFZJU1VBTElaRVJfU1RBVEVfSU5JVElBTElaRUQ7CisKKyAgICBMT0dWKCJFZmZlY3RDcmVhdGUgJXAiLCBwQ29udGV4dCk7CisKKyAgICByZXR1cm4gMDsKKworfQorCitleHRlcm4gIkMiIGludCBFZmZlY3RSZWxlYXNlKGVmZmVjdF9pbnRlcmZhY2VfdCBpbnRlcmZhY2UpIHsKKyAgICBWaXN1YWxpemVyQ29udGV4dCAqIHBDb250ZXh0ID0gKFZpc3VhbGl6ZXJDb250ZXh0ICopaW50ZXJmYWNlOworCisgICAgTE9HVigiRWZmZWN0UmVsZWFzZSAlcCIsIGludGVyZmFjZSk7CisgICAgaWYgKHBDb250ZXh0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQorICAgIHBDb250ZXh0LT5tU3RhdGUgPSBWSVNVQUxJWkVSX1NUQVRFX1VOSU5JVElBTElaRUQ7CisgICAgZGVsZXRlIHBDb250ZXh0OworCisgICAgcmV0dXJuIDA7Cit9CisKKy8vCisvLy0tLSBFZmZlY3QgQ29udHJvbCBJbnRlcmZhY2UgSW1wbGVtZW50YXRpb24KKy8vCisKK3N0YXRpYyBpbmxpbmUgaW50MTZfdCBjbGFtcDE2KGludDMyX3Qgc2FtcGxlKQoreworICAgIGlmICgoc2FtcGxlPj4xNSkgXiAoc2FtcGxlPj4zMSkpCisgICAgICAgIHNhbXBsZSA9IDB4N0ZGRiBeIChzYW1wbGU+PjMxKTsKKyAgICByZXR1cm4gc2FtcGxlOworfQorCitleHRlcm4gIkMiIGludCBWaXN1YWxpemVyX3Byb2Nlc3MoCisgICAgICAgIGVmZmVjdF9pbnRlcmZhY2VfdCBzZWxmLGF1ZGlvX2J1ZmZlcl90ICppbkJ1ZmZlciwgYXVkaW9fYnVmZmVyX3QgKm91dEJ1ZmZlcikKK3sKKyAgICBhbmRyb2lkOjpWaXN1YWxpemVyQ29udGV4dCAqIHBDb250ZXh0ID0gKGFuZHJvaWQ6OlZpc3VhbGl6ZXJDb250ZXh0ICopc2VsZjsKKworICAgIGlmIChwQ29udGV4dCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKyAgICBpZiAocENvbnRleHQtPm1TdGF0ZSAhPSBWSVNVQUxJWkVSX1NUQVRFX0FDVElWRSkgeworICAgICAgICByZXR1cm4gLUVOT1NZUzsKKyAgICB9CisKKyAgICBpZiAoaW5CdWZmZXIgPT0gTlVMTCB8fCBpbkJ1ZmZlci0+cmF3ID09IE5VTEwgfHwKKyAgICAgICAgb3V0QnVmZmVyID09IE5VTEwgfHwgb3V0QnVmZmVyLT5yYXcgPT0gTlVMTCB8fAorICAgICAgICBpbkJ1ZmZlci0+ZnJhbWVDb3VudCAhPSBvdXRCdWZmZXItPmZyYW1lQ291bnQgfHwKKyAgICAgICAgaW5CdWZmZXItPmZyYW1lQ291bnQgPT0gMCkgeworICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisKKyAgICAvLyBhbGwgY29kZSBiZWxvdyBhc3N1bWVzIHN0ZXJlbyAxNiBiaXQgUENNIG91dHB1dCBhbmQgaW5wdXQKKyAgICB1aW50MzJfdCBjYXB0SWR4OworICAgIHVpbnQzMl90IGluSWR4OworICAgIHVpbnQ4X3QgKmJ1ZiA9IHBDb250ZXh0LT5tQ2FwdHVyZUJ1ZltwQ29udGV4dC0+bUN1cnJlbnRCdWZdOworICAgIGZvciAoaW5JZHggPSAwLCBjYXB0SWR4ID0gcENvbnRleHQtPm1DYXB0dXJlSWR4OworICAgICAgICAgaW5JZHggPCBpbkJ1ZmZlci0+ZnJhbWVDb3VudCAmJiBjYXB0SWR4IDwgcENvbnRleHQtPm1DYXB0dXJlU2l6ZTsKKyAgICAgICAgIGluSWR4KyssIGNhcHRJZHgrKykgeworICAgICAgICBpbnQzMl90IHNtcCA9IGluQnVmZmVyLT5zMTZbMiAqIGluSWR4XSArIGluQnVmZmVyLT5zMTZbMiAqIGluSWR4ICsgMV07CisgICAgICAgIHNtcCA9IChzbXAgKyAoMSA8PCA4KSkgPj4gOTsKKyAgICAgICAgYnVmW2NhcHRJZHhdID0gKCh1aW50OF90KXNtcCleMHg4MDsKKyAgICB9CisgICAgcENvbnRleHQtPm1DYXB0dXJlSWR4ID0gY2FwdElkeDsKKworICAgIC8vIGdvIHRvIG5leHQgYnVmZmVyIHdoZW4gYnVmZmVyIGZ1bGwKKyAgICBpZiAocENvbnRleHQtPm1DYXB0dXJlSWR4ID09IHBDb250ZXh0LT5tQ2FwdHVyZVNpemUpIHsKKyAgICAgICAgcENvbnRleHQtPm1DdXJyZW50QnVmIF49IDE7CisgICAgICAgIHBDb250ZXh0LT5tQ2FwdHVyZUlkeCA9IDA7CisgICAgfQorCisgICAgaWYgKGluQnVmZmVyLT5yYXcgIT0gb3V0QnVmZmVyLT5yYXcpIHsKKyAgICAgICAgaWYgKHBDb250ZXh0LT5tQ29uZmlnLm91dHB1dENmZy5hY2Nlc3NNb2RlID09IEVGRkVDVF9CVUZGRVJfQUNDRVNTX0FDQ1VNVUxBVEUpIHsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb3V0QnVmZmVyLT5mcmFtZUNvdW50KjI7IGkrKykgeworICAgICAgICAgICAgICAgIG91dEJ1ZmZlci0+czE2W2ldID0gY2xhbXAxNihvdXRCdWZmZXItPnMxNltpXSArIGluQnVmZmVyLT5zMTZbaV0pOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbWVtY3B5KG91dEJ1ZmZlci0+cmF3LCBpbkJ1ZmZlci0+cmF3LCBvdXRCdWZmZXItPmZyYW1lQ291bnQgKiAyICogc2l6ZW9mKGludDE2X3QpKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gMDsKK30gICAvLyBlbmQgVmlzdWFsaXplcl9wcm9jZXNzCisKK2V4dGVybiAiQyIgaW50IFZpc3VhbGl6ZXJfY29tbWFuZChlZmZlY3RfaW50ZXJmYWNlX3Qgc2VsZiwgaW50IGNtZENvZGUsIGludCBjbWRTaXplLAorICAgICAgICB2b2lkICpwQ21kRGF0YSwgaW50ICpyZXBseVNpemUsIHZvaWQgKnBSZXBseURhdGEpIHsKKworICAgIGFuZHJvaWQ6OlZpc3VhbGl6ZXJDb250ZXh0ICogcENvbnRleHQgPSAoYW5kcm9pZDo6VmlzdWFsaXplckNvbnRleHQgKilzZWxmOworICAgIGludCByZXRzaXplOworCisgICAgaWYgKHBDb250ZXh0ID09IE5VTEwgfHwgcENvbnRleHQtPm1TdGF0ZSA9PSBWSVNVQUxJWkVSX1NUQVRFX1VOSU5JVElBTElaRUQpIHsKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQorCisvLyAgICBMT0dWKCJWaXN1YWxpemVyX2NvbW1hbmQgY29tbWFuZCAlZCBjbWRTaXplICVkIixjbWRDb2RlLCBjbWRTaXplKTsKKworICAgIHN3aXRjaCAoY21kQ29kZSkgeworICAgIGNhc2UgRUZGRUNUX0NNRF9JTklUOgorICAgICAgICBpZiAocFJlcGx5RGF0YSA9PSBOVUxMIHx8ICpyZXBseVNpemUgIT0gc2l6ZW9mKGludCkpIHsKKyAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgICAgICB9CisgICAgICAgICooaW50ICopIHBSZXBseURhdGEgPSBWaXN1YWxpemVyX2luaXQocENvbnRleHQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEVGRkVDVF9DTURfQ09ORklHVVJFOgorICAgICAgICBpZiAocENtZERhdGEgPT0gTlVMTCB8fCBjbWRTaXplICE9IHNpemVvZihlZmZlY3RfY29uZmlnX3QpCisgICAgICAgICAgICAgICAgfHwgcFJlcGx5RGF0YSA9PSBOVUxMIHx8ICpyZXBseVNpemUgIT0gc2l6ZW9mKGludCkpIHsKKyAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgICAgICB9CisgICAgICAgICooaW50ICopIHBSZXBseURhdGEgPSBWaXN1YWxpemVyX2NvbmZpZ3VyZShwQ29udGV4dCwKKyAgICAgICAgICAgICAgICAoZWZmZWN0X2NvbmZpZ190ICopIHBDbWREYXRhKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFRkZFQ1RfQ01EX1JFU0VUOgorICAgICAgICBWaXN1YWxpemVyX3Jlc2V0KHBDb250ZXh0KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFRkZFQ1RfQ01EX0VOQUJMRToKKyAgICAgICAgaWYgKHBSZXBseURhdGEgPT0gTlVMTCB8fCAqcmVwbHlTaXplICE9IHNpemVvZihpbnQpKSB7CisgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICAgICAgfQorICAgICAgICBpZiAocENvbnRleHQtPm1TdGF0ZSAhPSBWSVNVQUxJWkVSX1NUQVRFX0lOSVRJQUxJWkVEKSB7CisgICAgICAgICAgICByZXR1cm4gLUVOT1NZUzsKKyAgICAgICAgfQorICAgICAgICBwQ29udGV4dC0+bVN0YXRlID0gVklTVUFMSVpFUl9TVEFURV9BQ1RJVkU7CisgICAgICAgIExPR1YoIkVGRkVDVF9DTURfRU5BQkxFKCkgT0siKTsKKyAgICAgICAgKihpbnQgKilwUmVwbHlEYXRhID0gMDsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBFRkZFQ1RfQ01EX0RJU0FCTEU6CisgICAgICAgIGlmIChwUmVwbHlEYXRhID09IE5VTEwgfHwgKnJlcGx5U2l6ZSAhPSBzaXplb2YoaW50KSkgeworICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHBDb250ZXh0LT5tU3RhdGUgIT0gVklTVUFMSVpFUl9TVEFURV9BQ1RJVkUpIHsKKyAgICAgICAgICAgIHJldHVybiAtRU5PU1lTOworICAgICAgICB9CisgICAgICAgIHBDb250ZXh0LT5tU3RhdGUgPSBWSVNVQUxJWkVSX1NUQVRFX0lOSVRJQUxJWkVEOworICAgICAgICBMT0dWKCJFRkZFQ1RfQ01EX0RJU0FCTEUoKSBPSyIpOworICAgICAgICAqKGludCAqKXBSZXBseURhdGEgPSAwOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEVGRkVDVF9DTURfR0VUX1BBUkFNOiB7CisgICAgICAgIGlmIChwQ21kRGF0YSA9PSBOVUxMIHx8CisgICAgICAgICAgICBjbWRTaXplICE9IChpbnQpKHNpemVvZihlZmZlY3RfcGFyYW1fdCkgKyBzaXplb2YodWludDMyX3QpKSB8fAorICAgICAgICAgICAgcFJlcGx5RGF0YSA9PSBOVUxMIHx8CisgICAgICAgICAgICAqcmVwbHlTaXplIDwgKGludCkoc2l6ZW9mKGVmZmVjdF9wYXJhbV90KSArIHNpemVvZih1aW50MzJfdCkgKyBzaXplb2YodWludDMyX3QpKSkgeworICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgICAgIH0KKyAgICAgICAgbWVtY3B5KHBSZXBseURhdGEsIHBDbWREYXRhLCBzaXplb2YoZWZmZWN0X3BhcmFtX3QpICsgc2l6ZW9mKHVpbnQzMl90KSk7CisgICAgICAgIGVmZmVjdF9wYXJhbV90ICpwID0gKGVmZmVjdF9wYXJhbV90ICopcFJlcGx5RGF0YTsKKyAgICAgICAgcC0+c3RhdHVzID0gMDsKKyAgICAgICAgKnJlcGx5U2l6ZSA9IHNpemVvZihlZmZlY3RfcGFyYW1fdCkgKyBzaXplb2YodWludDMyX3QpOworICAgICAgICBpZiAocC0+cHNpemUgIT0gc2l6ZW9mKHVpbnQzMl90KSB8fAorICAgICAgICAgICAgKih1aW50MzJfdCAqKXAtPmRhdGEgIT0gVklTVV9QQVJBTV9DQVBUVVJFX1NJWkUpIHsKKyAgICAgICAgICAgIHAtPnN0YXR1cyA9IC1FSU5WQUw7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBMT0dWKCJnZXQgbUNhcHR1cmVTaXplID0gJWQiLCBwQ29udGV4dC0+bUNhcHR1cmVTaXplKTsKKyAgICAgICAgKigodWludDMyX3QgKilwLT5kYXRhICsgMSkgPSBwQ29udGV4dC0+bUNhcHR1cmVTaXplOworICAgICAgICBwLT52c2l6ZSA9IHNpemVvZih1aW50MzJfdCk7CisgICAgICAgICpyZXBseVNpemUgKz0gc2l6ZW9mKHVpbnQzMl90KTsKKyAgICAgICAgfSBicmVhazsKKyAgICBjYXNlIEVGRkVDVF9DTURfU0VUX1BBUkFNOiB7CisgICAgICAgIGlmIChwQ21kRGF0YSA9PSBOVUxMIHx8CisgICAgICAgICAgICBjbWRTaXplICE9IChpbnQpKHNpemVvZihlZmZlY3RfcGFyYW1fdCkgKyBzaXplb2YodWludDMyX3QpICsgc2l6ZW9mKHVpbnQzMl90KSkgfHwKKyAgICAgICAgICAgIHBSZXBseURhdGEgPT0gTlVMTCB8fCAqcmVwbHlTaXplICE9IHNpemVvZihpbnQzMl90KSkgeworICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgICAgIH0KKyAgICAgICAgKihpbnQzMl90ICopcFJlcGx5RGF0YSA9IDA7CisgICAgICAgIGVmZmVjdF9wYXJhbV90ICpwID0gKGVmZmVjdF9wYXJhbV90ICopcENtZERhdGE7CisgICAgICAgIGlmIChwLT5wc2l6ZSAhPSBzaXplb2YodWludDMyX3QpIHx8CisgICAgICAgICAgICBwLT52c2l6ZSAhPSBzaXplb2YodWludDMyX3QpIHx8CisgICAgICAgICAgICAqKHVpbnQzMl90ICopcC0+ZGF0YSAhPSBWSVNVX1BBUkFNX0NBUFRVUkVfU0laRSkgeworICAgICAgICAgICAgKihpbnQzMl90ICopcFJlcGx5RGF0YSA9IC1FSU5WQUw7CisgICAgICAgICAgICBicmVhazs7CisgICAgICAgIH0KKyAgICAgICAgcENvbnRleHQtPm1DYXB0dXJlU2l6ZSA9ICooKHVpbnQzMl90ICopcC0+ZGF0YSArIDEpOworICAgICAgICBMT0dWKCJzZXQgbUNhcHR1cmVTaXplID0gJWQiLCBwQ29udGV4dC0+bUNhcHR1cmVTaXplKTsKKyAgICAgICAgfSBicmVhazsKKyAgICBjYXNlIEVGRkVDVF9DTURfU0VUX0RFVklDRToKKyAgICBjYXNlIEVGRkVDVF9DTURfU0VUX1ZPTFVNRToKKyAgICBjYXNlIEVGRkVDVF9DTURfU0VUX0FVRElPX01PREU6CisgICAgICAgIGJyZWFrOworCisKKyAgICBjYXNlIFZJU1VfQ01EX0NBUFRVUkU6CisgICAgICAgIGlmIChwUmVwbHlEYXRhID09IE5VTEwgfHwgKnJlcGx5U2l6ZSAhPSAoaW50KXBDb250ZXh0LT5tQ2FwdHVyZVNpemUpIHsKKyAgICAgICAgICAgIExPR1YoIlZJU1VfQ01EX0NBUFRVUkUoKSBlcnJvciAqcmVwbHlTaXplICVkIHBDb250ZXh0LT5tQ2FwdHVyZVNpemUgJWQiLAorICAgICAgICAgICAgICAgICAgICAqcmVwbHlTaXplLCBwQ29udGV4dC0+bUNhcHR1cmVTaXplKTsKKyAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgICAgICB9CisgICAgICAgIGlmIChwQ29udGV4dC0+bVN0YXRlID09IFZJU1VBTElaRVJfU1RBVEVfQUNUSVZFKSB7CisgICAgICAgICAgICBtZW1jcHkocFJlcGx5RGF0YSwKKyAgICAgICAgICAgICAgICAgICBwQ29udGV4dC0+bUNhcHR1cmVCdWZbcENvbnRleHQtPm1DdXJyZW50QnVmIF4gMV0sCisgICAgICAgICAgICAgICAgICAgcENvbnRleHQtPm1DYXB0dXJlU2l6ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtZW1zZXQocFJlcGx5RGF0YSwgMHg4MCwgcENvbnRleHQtPm1DYXB0dXJlU2l6ZSk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBMT0dXKCJWaXN1YWxpemVyX2NvbW1hbmQgaW52YWxpZCBjb21tYW5kICVkIixjbWRDb2RlKTsKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKKy8vIGVmZmVjdF9pbnRlcmZhY2VfdCBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb24gZm9yIHZpc3VhbGl6ZXIgZWZmZWN0Citjb25zdCBzdHJ1Y3QgZWZmZWN0X2ludGVyZmFjZV9zIGdWaXN1YWxpemVySW50ZXJmYWNlID0geworICAgICAgICBWaXN1YWxpemVyX3Byb2Nlc3MsCisgICAgICAgIFZpc3VhbGl6ZXJfY29tbWFuZAorfTsKKworfSAvLyBuYW1lc3BhY2UKKwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZWZmZWN0cy9FZmZlY3RzRmFjdG9yeS5jIGIvbWVkaWEvbGliZWZmZWN0cy9FZmZlY3RzRmFjdG9yeS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkZDYxODQKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJlZmZlY3RzL0VmZmVjdHNGYWN0b3J5LmMKQEAgLTAsMCArMSw2NDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjZGVmaW5lIExPR19UQUcgIkVmZmVjdHNGYWN0b3J5IgorLy8jZGVmaW5lIExPR19OREVCVUcgMAorCisjaW5jbHVkZSAiRWZmZWN0c0ZhY3RvcnkuaCIKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxkbGZjbi5oPgorCisKK3N0YXRpYyBsaXN0X2VsZW1fdCAqZ0VmZmVjdExpc3Q7IC8vIGxpc3Qgb2YgZWZmZWN0X2VudHJ5X3Q6IGFsbCBjdXJyZW50bHkgY3JlYXRlZCBlZmZlY3RzCitzdGF0aWMgbGlzdF9lbGVtX3QgKmdMaWJyYXJ5TGlzdDsgLy8gbGlzdCBvZiBsaWJfZW50cnlfdDogYWxsIGN1cnJlbnRseSBsb2FkZWQgbGlicmFyaWVzCitzdGF0aWMgcHRocmVhZF9tdXRleF90IGdMaWJMb2NrID0gUFRIUkVBRF9NVVRFWF9JTklUSUFMSVpFUjsgLy8gY29udHJvbHMgYWNjZXNzIHRvIGdMaWJyYXJ5TGlzdAorc3RhdGljIHVpbnQzMl90IGdOdW1FZmZlY3RzOyAgICAgICAgIC8vIHRvdGFsIG51bWJlciBudW1iZXIgb2YgZWZmZWN0cworc3RhdGljIGxpc3RfZWxlbV90ICpnQ3VyTGliOyAgICAvLyBjdXJyZW50IGxpYnJhcnkgaW4gZW51bWVyYXRpb24gcHJvY2Vzcworc3RhdGljIGxpc3RfZWxlbV90ICpnQ3VyRWZmZWN0OyAvLyBjdXJyZW50IGVmZmVjdCBpbiBlbnVtZXJhdGlvbiBwcm9jZXNzCitzdGF0aWMgdWludDMyX3QgZ0N1ckVmZmVjdElkeDsgICAgICAgLy8gY3VycmVudCBlZmZlY3QgaW5kZXggaW4gZW51bWVyYXRpb24gcHJvY2VzcworCitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGdFZmZlY3RMaWJQYXRoID0gIi9zeXN0ZW0vbGliL3NvdW5kZngiOyAvLyBwYXRoIHRvIGJ1aWx0LWluIGVmZmVjdCBsaWJyYXJpZXMKK3N0YXRpYyBpbnQgZ0luaXREb25lOyAvLyB0cnVlIGlzIGdsb2JhbCBpbml0aWFsaXphdGlvbiBoYXMgYmVlbiBwcmVmb3JtZWQKK3N0YXRpYyBpbnQgZ05leHRMaWJJZDsgLy8gdXNlZCBieSBsb2FkTGlicmFyeSgpIHRvIGFsbG9jYXRlIHVuaXF1ZSBsaWJyYXJ5IGhhbmRsZXMKK3N0YXRpYyBpbnQgZ0NhblF1ZXJ5RWZmZWN0OyAvLyBpbmRpY2F0ZXMgdGhhdCBjYWxsIHRvIEVmZmVjdFF1ZXJ5RWZmZWN0KCkgaXMgdmFsaWQsIGkuZS4gdGhhdCB0aGUgbGlzdCBvZiBlZmZlY3RzCisgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdhcyBub3QgbW9kaWZpZWQgc2luY2UgbGFzdCBjYWxsIHRvIEVmZmVjdFF1ZXJ5TnVtYmVyRWZmZWN0cygpCisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vICAgICAgTG9jYWwgZnVuY3Rpb25zIHByb3RvdHlwZXMKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworc3RhdGljIGludCBpbml0KCk7CitzdGF0aWMgaW50IGxvYWRMaWJyYXJ5KGNvbnN0IGNoYXIgKmxpYlBhdGgsIGludCAqaGFuZGxlKTsKK3N0YXRpYyBpbnQgdW5sb2FkTGlicmFyeShpbnQgaGFuZGxlKTsKK3N0YXRpYyB2b2lkIHJlc2V0RWZmZWN0RW51bWVyYXRpb24oKTsKK3N0YXRpYyB1aW50MzJfdCB1cGRhdGVOdW1FZmZlY3RzKCk7CitzdGF0aWMgaW50IGZpbmRFZmZlY3QoZWZmZWN0X3V1aWRfdCAqdXVpZCwgbGliX2VudHJ5X3QgKipsaWIsIGVmZmVjdF9kZXNjcmlwdG9yX3QgKipkZXNjKTsKK3N0YXRpYyB2b2lkIGR1bXBFZmZlY3REZXNjcmlwdG9yKGVmZmVjdF9kZXNjcmlwdG9yX3QgKmRlc2MsIGNoYXIgKnN0ciwgc2l6ZV90IGxlbik7CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vICAgICAgRWZmZWN0IENvbnRyb2wgSW50ZXJmYWNlIGZ1bmN0aW9ucworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCitpbnQgRWZmZWN0X1Byb2Nlc3MoZWZmZWN0X2ludGVyZmFjZV90IHNlbGYsIGF1ZGlvX2J1ZmZlcl90ICppbkJ1ZmZlciwgYXVkaW9fYnVmZmVyX3QgKm91dEJ1ZmZlcikKK3sKKyAgICBpbnQgcmV0ID0gaW5pdCgpOworICAgIGlmIChyZXQgPCAwKSB7CisgICAgICAgIHJldHVybiByZXQ7CisgICAgfQorICAgIGVmZmVjdF9lbnRyeV90ICpmeCA9IChlZmZlY3RfZW50cnlfdCAqKXNlbGY7CisgICAgcHRocmVhZF9tdXRleF9sb2NrKCZnTGliTG9jayk7CisgICAgaWYgKGZ4LT5saWIgPT0gTlVMTCkgeworICAgICAgICBwdGhyZWFkX211dGV4X3VubG9jaygmZ0xpYkxvY2spOworICAgICAgICByZXR1cm4gLUVQSVBFOworICAgIH0KKyAgICBwdGhyZWFkX211dGV4X2xvY2soJmZ4LT5saWItPmxvY2spOworICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZnTGliTG9jayk7CisKKyAgICByZXQgPSAoKmZ4LT5zdWJJdGZlKS0+cHJvY2VzcyhmeC0+c3ViSXRmZSwgaW5CdWZmZXIsIG91dEJ1ZmZlcik7CisgICAgcHRocmVhZF9tdXRleF91bmxvY2soJmZ4LT5saWItPmxvY2spOworICAgIHJldHVybiByZXQ7Cit9CisKK2ludCBFZmZlY3RfQ29tbWFuZChlZmZlY3RfaW50ZXJmYWNlX3Qgc2VsZiwgaW50IGNtZENvZGUsIGludCBjbWRTaXplLCB2b2lkICpwQ21kRGF0YSwgaW50ICpyZXBseVNpemUsIHZvaWQgKnBSZXBseURhdGEpCit7CisgICAgaW50IHJldCA9IGluaXQoKTsKKyAgICBpZiAocmV0IDwgMCkgeworICAgICAgICByZXR1cm4gcmV0OworICAgIH0KKyAgICBlZmZlY3RfZW50cnlfdCAqZnggPSAoZWZmZWN0X2VudHJ5X3QgKilzZWxmOworICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmZ0xpYkxvY2spOworICAgIGlmIChmeC0+bGliID09IE5VTEwpIHsKKyAgICAgICAgcHRocmVhZF9tdXRleF91bmxvY2soJmdMaWJMb2NrKTsKKyAgICAgICAgcmV0dXJuIC1FUElQRTsKKyAgICB9CisgICAgcHRocmVhZF9tdXRleF9sb2NrKCZmeC0+bGliLT5sb2NrKTsKKyAgICBwdGhyZWFkX211dGV4X3VubG9jaygmZ0xpYkxvY2spOworCisgICAgcmV0ID0gKCpmeC0+c3ViSXRmZSktPmNvbW1hbmQoZngtPnN1Ykl0ZmUsIGNtZENvZGUsIGNtZFNpemUsIHBDbWREYXRhLCByZXBseVNpemUsIHBSZXBseURhdGEpOworICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZmeC0+bGliLT5sb2NrKTsKKyAgICByZXR1cm4gcmV0OworfQorCitjb25zdCBzdHJ1Y3QgZWZmZWN0X2ludGVyZmFjZV9zIGdJbnRlcmZhY2UgPSB7CisgICAgICAgIEVmZmVjdF9Qcm9jZXNzLAorICAgICAgICBFZmZlY3RfQ29tbWFuZAorfTsKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gICAgICBFZmZlY3QgRmFjdG9yeSBJbnRlcmZhY2UgZnVuY3Rpb25zCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2ludCBFZmZlY3RRdWVyeU51bWJlckVmZmVjdHModWludDMyX3QgKnBOdW1FZmZlY3RzKQoreworICAgIGludCByZXQgPSBpbml0KCk7CisgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisgICAgaWYgKHBOdW1FZmZlY3RzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisgICAgfQorCisgICAgcHRocmVhZF9tdXRleF9sb2NrKCZnTGliTG9jayk7CisgICAgKnBOdW1FZmZlY3RzID0gZ051bUVmZmVjdHM7CisgICAgZ0NhblF1ZXJ5RWZmZWN0ID0gMTsKKyAgICBwdGhyZWFkX211dGV4X3VubG9jaygmZ0xpYkxvY2spOworICAgIExPR1YoIkVmZmVjdFF1ZXJ5TnVtYmVyRWZmZWN0cygpOiAlZCIsICpwTnVtRWZmZWN0cyk7CisgICAgcmV0dXJuIHJldDsKK30KKworaW50IEVmZmVjdFF1ZXJ5RWZmZWN0KHVpbnQzMl90IGluZGV4LCBlZmZlY3RfZGVzY3JpcHRvcl90ICpwRGVzY3JpcHRvcikKK3sKKyAgICBpbnQgcmV0ID0gaW5pdCgpOworICAgIGlmIChyZXQgPCAwKSB7CisgICAgICAgIHJldHVybiByZXQ7CisgICAgfQorICAgIGlmIChwRGVzY3JpcHRvciA9PSBOVUxMIHx8CisgICAgICAgIGluZGV4ID49IGdOdW1FZmZlY3RzKSB7CisgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKyAgICBpZiAoZ0NhblF1ZXJ5RWZmZWN0ID09IDApIHsKKyAgICAgICAgcmV0dXJuIC1FTk9TWVM7CisgICAgfQorCisgICAgcHRocmVhZF9tdXRleF9sb2NrKCZnTGliTG9jayk7CisgICAgcmV0ID0gLUVOT0VOVDsKKyAgICBpZiAoaW5kZXggPCBnQ3VyRWZmZWN0SWR4KSB7CisgICAgICAgIHJlc2V0RWZmZWN0RW51bWVyYXRpb24oKTsKKyAgICB9CisgICAgd2hpbGUgKGdDdXJMaWIpIHsKKyAgICAgICAgaWYgKGdDdXJFZmZlY3QpIHsKKyAgICAgICAgICAgIGlmIChpbmRleCA9PSBnQ3VyRWZmZWN0SWR4KSB7CisgICAgICAgICAgICAgICAgbWVtY3B5KHBEZXNjcmlwdG9yLCBnQ3VyRWZmZWN0LT5vYmplY3QsIHNpemVvZihlZmZlY3RfZGVzY3JpcHRvcl90KSk7CisgICAgICAgICAgICAgICAgcmV0ID0gMDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZ0N1ckVmZmVjdCA9IGdDdXJFZmZlY3QtPm5leHQ7CisgICAgICAgICAgICAgICAgZ0N1ckVmZmVjdElkeCsrOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZ0N1ckxpYiA9IGdDdXJMaWItPm5leHQ7CisgICAgICAgICAgICBnQ3VyRWZmZWN0ID0gKChsaWJfZW50cnlfdCAqKWdDdXJMaWItPm9iamVjdCktPmVmZmVjdHM7CisgICAgICAgIH0KKyAgICB9CisKKyNpZiAoTE9HX05ERUJVRyA9PSAwKQorICAgIGNoYXIgc3RyWzI1Nl07CisgICAgZHVtcEVmZmVjdERlc2NyaXB0b3IocERlc2NyaXB0b3IsIHN0ciwgMjU2KTsKKyAgICBMT0dWKCJFZmZlY3RRdWVyeUVmZmVjdCgpIGRlc2M6JXMiLCBzdHIpOworI2VuZGlmCisgICAgcHRocmVhZF9tdXRleF91bmxvY2soJmdMaWJMb2NrKTsKKyAgICByZXR1cm4gcmV0OworfQorCitpbnQgRWZmZWN0R2V0RGVzY3JpcHRvcihlZmZlY3RfdXVpZF90ICp1dWlkLCBlZmZlY3RfZGVzY3JpcHRvcl90ICpwRGVzY3JpcHRvcikKK3sKKyAgICBsaWJfZW50cnlfdCAqbCA9IE5VTEw7CisgICAgZWZmZWN0X2Rlc2NyaXB0b3JfdCAqZCA9IE5VTEw7CisKKyAgICBpbnQgcmV0ID0gaW5pdCgpOworICAgIGlmIChyZXQgPCAwKSB7CisgICAgICAgIHJldHVybiByZXQ7CisgICAgfQorICAgIGlmIChwRGVzY3JpcHRvciA9PSBOVUxMIHx8IHV1aWQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisgICAgcHRocmVhZF9tdXRleF9sb2NrKCZnTGliTG9jayk7CisgICAgcmV0ID0gZmluZEVmZmVjdCh1dWlkLCAmbCwgJmQpOworICAgIGlmIChyZXQgPT0gMCkgeworICAgICAgICBtZW1jcHkocERlc2NyaXB0b3IsIGQsIHNpemVvZihlZmZlY3RfZGVzY3JpcHRvcl90KSk7CisgICAgfQorICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZnTGliTG9jayk7CisgICAgcmV0dXJuIHJldDsKK30KKworaW50IEVmZmVjdENyZWF0ZShlZmZlY3RfdXVpZF90ICp1dWlkLCBpbnQzMl90IHNlc3Npb25JZCwgaW50MzJfdCBpb0lkLCBlZmZlY3RfaW50ZXJmYWNlX3QgKnBJbnRlcmZhY2UpCit7CisgICAgbGlzdF9lbGVtX3QgKmUgPSBnTGlicmFyeUxpc3Q7CisgICAgbGliX2VudHJ5X3QgKmwgPSBOVUxMOworICAgIGVmZmVjdF9kZXNjcmlwdG9yX3QgKmQgPSBOVUxMOworICAgIGVmZmVjdF9pbnRlcmZhY2VfdCBpdGZlOworICAgIGVmZmVjdF9lbnRyeV90ICpmeDsKKyAgICBpbnQgZm91bmQgPSAwOworICAgIGludCByZXQ7CisKKyAgICBpZiAodXVpZCA9PSBOVUxMIHx8IHBJbnRlcmZhY2UgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisKKyAgICBMT0dWKCJFZmZlY3RDcmVhdGUoKSBVVUlEOiAlMDhYLSUwNFgtJTA0WC0lMDRYLSUwMlglMDJYJTAyWCUwMlglMDJYJTAyWFxuIiwKKyAgICAgICAgICAgIHV1aWQtPnRpbWVMb3csIHV1aWQtPnRpbWVNaWQsIHV1aWQtPnRpbWVIaUFuZFZlcnNpb24sCisgICAgICAgICAgICB1dWlkLT5jbG9ja1NlcSwgdXVpZC0+bm9kZVswXSwgdXVpZC0+bm9kZVsxXSx1dWlkLT5ub2RlWzJdLAorICAgICAgICAgICAgdXVpZC0+bm9kZVszXSx1dWlkLT5ub2RlWzRdLHV1aWQtPm5vZGVbNV0pOworCisgICAgcmV0ID0gaW5pdCgpOworCisgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgTE9HVygiRWZmZWN0Q3JlYXRlKCkgaW5pdCBlcnJvcjogJWQiLCByZXQpOworICAgICAgICByZXR1cm4gcmV0OworICAgIH0KKworICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmZ0xpYkxvY2spOworCisgICAgcmV0ID0gZmluZEVmZmVjdCh1dWlkLCAmbCwgJmQpOworICAgIGlmIChyZXQgPCAwKXsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworICAgIC8vIGNyZWF0ZSBlZmZlY3QgaW4gbGlicmFyeQorICAgIHJldCA9IGwtPmNyZWF0ZUZ4KHV1aWQsIHNlc3Npb25JZCwgaW9JZCwgJml0ZmUpOworICAgIGlmIChyZXQgIT0gMCkgeworICAgICAgICBMT0dXKCJFZmZlY3RDcmVhdGUoKSBsaWJyYXJ5ICVzOiBjb3VsZCBub3QgY3JlYXRlIGZ4ICVzLCBlcnJvciAlZCIsIGwtPnBhdGgsIGQtPm5hbWUsIHJldCk7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyAgICAvLyBhZGQgZW50cnkgdG8gZWZmZWN0IGxpc3QKKyAgICBmeCA9IChlZmZlY3RfZW50cnlfdCAqKW1hbGxvYyhzaXplb2YoZWZmZWN0X2VudHJ5X3QpKTsKKyAgICBmeC0+c3ViSXRmZSA9IGl0ZmU7CisgICAgZngtPml0ZmUgPSAoc3RydWN0IGVmZmVjdF9pbnRlcmZhY2VfcyAqKSZnSW50ZXJmYWNlOworICAgIGZ4LT5saWIgPSBsOworCisgICAgZSA9IChsaXN0X2VsZW1fdCAqKW1hbGxvYyhzaXplb2YobGlzdF9lbGVtX3QpKTsKKyAgICBlLT5vYmplY3QgPSBmeDsKKyAgICBlLT5uZXh0ID0gZ0VmZmVjdExpc3Q7CisgICAgZ0VmZmVjdExpc3QgPSBlOworCisgICAgKnBJbnRlcmZhY2UgPSAoZWZmZWN0X2ludGVyZmFjZV90KWZ4OworCisgICAgTE9HVigiRWZmZWN0Q3JlYXRlKCkgY3JlYXRlZCBlbnRyeSAlcCB3aXRoIHN1YiBpdGZlICVwIGluIGxpYnJhcnkgJXMiLCAqcEludGVyZmFjZSwgaXRmZSwgbC0+cGF0aCk7CisKK2V4aXQ6CisgICAgcHRocmVhZF9tdXRleF91bmxvY2soJmdMaWJMb2NrKTsKKyAgICByZXR1cm4gcmV0OworfQorCitpbnQgRWZmZWN0UmVsZWFzZShlZmZlY3RfaW50ZXJmYWNlX3QgaW50ZXJmYWNlKQoreworICAgIGVmZmVjdF9lbnRyeV90ICpmeDsKKyAgICBsaXN0X2VsZW1fdCAqZTE7CisgICAgbGlzdF9lbGVtX3QgKmUyOworCisgICAgaW50IHJldCA9IGluaXQoKTsKKyAgICBpZiAocmV0IDwgMCkgeworICAgICAgICByZXR1cm4gcmV0OworICAgIH0KKworICAgIC8vIHJlbW92ZSBlZmZlY3QgZnJvbSBlZmZlY3QgbGlzdAorICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmZ0xpYkxvY2spOworICAgIGUxID0gZ0VmZmVjdExpc3Q7CisgICAgZTIgPSBOVUxMOworICAgIHdoaWxlIChlMSkgeworICAgICAgICBpZiAoZTEtPm9iamVjdCA9PSBpbnRlcmZhY2UpIHsKKyAgICAgICAgICAgIGlmIChlMikgeworICAgICAgICAgICAgICAgIGUyLT5uZXh0ID0gZTEtPm5leHQ7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGdFZmZlY3RMaXN0ID0gZTEtPm5leHQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBmeCA9IChlZmZlY3RfZW50cnlfdCAqKWUxLT5vYmplY3Q7CisgICAgICAgICAgICBmcmVlKGUxKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGUyID0gZTE7CisgICAgICAgIGUxID0gZTEtPm5leHQ7CisgICAgfQorICAgIGlmIChlMSA9PSBOVUxMKSB7CisgICAgICAgIHJldCA9IC1FTk9FTlQ7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyAgICAvLyByZWxlYXNlIGVmZmVjdCBpbiBsaWJyYXJ5CisgICAgaWYgKGZ4LT5saWIgPT0gTlVMTCkgeworICAgICAgICBMT0dXKCJFZmZlY3RSZWxlYXNlKCkgZnggJXAgbGlicmFyeSBhbHJlYWR5IHVubG9hZGVkIiwgaW50ZXJmYWNlKTsKKyAgICB9IGVsc2UgeworICAgICAgICBwdGhyZWFkX211dGV4X2xvY2soJmZ4LT5saWItPmxvY2spOworICAgICAgICBmeC0+bGliLT5yZWxlYXNlRngoZngtPnN1Ykl0ZmUpOworICAgICAgICBwdGhyZWFkX211dGV4X3VubG9jaygmZngtPmxpYi0+bG9jayk7CisgICAgfQorICAgIGZyZWUoZngpOworCitleGl0OgorICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZnTGliTG9jayk7CisgICAgcmV0dXJuIHJldDsKK30KKworaW50IEVmZmVjdExvYWRMaWJyYXJ5KGNvbnN0IGNoYXIgKmxpYlBhdGgsIGludCAqaGFuZGxlKQoreworICAgIGludCByZXQgPSBpbml0KCk7CisgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisgICAgaWYgKGxpYlBhdGggPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICB9CisKKyAgICByZXQgPSBsb2FkTGlicmFyeShsaWJQYXRoLCBoYW5kbGUpOworICAgIHVwZGF0ZU51bUVmZmVjdHMoKTsKKyAgICByZXR1cm4gcmV0OworfQorCitpbnQgRWZmZWN0VW5sb2FkTGlicmFyeShpbnQgaGFuZGxlKQoreworICAgIGludCByZXQgPSBpbml0KCk7CisgICAgaWYgKHJldCA8IDApIHsKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisKKyAgICByZXQgPSB1bmxvYWRMaWJyYXJ5KGhhbmRsZSk7CisgICAgdXBkYXRlTnVtRWZmZWN0cygpOworICAgIHJldHVybiByZXQ7Cit9CisKK2ludCBFZmZlY3RJc051bGxVdWlkKGVmZmVjdF91dWlkX3QgKnV1aWQpCit7CisgICAgaWYgKG1lbWNtcCh1dWlkLCBFRkZFQ1RfVVVJRF9OVUxMLCBzaXplb2YoZWZmZWN0X3V1aWRfdCkpKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8gICAgICBMb2NhbCBmdW5jdGlvbnMKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworaW50IGluaXQoKSB7CisgICAgc3RydWN0IGRpcmVudCAqZW50OworICAgIERJUiAqZGlyID0gTlVMTDsKKyAgICBjaGFyIGxpYnBhdGhbUEFUSF9NQVhdOworICAgIGludCBoZGw7CisKKyAgICBpZiAoZ0luaXREb25lKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHB0aHJlYWRfbXV0ZXhfaW5pdCgmZ0xpYkxvY2ssIE5VTEwpOworCisgICAgLy8gbG9hZCBidWlsdC1pbiBsaWJyYXJpZXMKKyAgICBkaXIgPSBvcGVuZGlyKGdFZmZlY3RMaWJQYXRoKTsKKyAgICBpZiAoZGlyID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC1FTk9ERVY7CisgICAgfQorICAgIHdoaWxlICgoZW50ID0gcmVhZGRpcihkaXIpKSAhPSBOVUxMKSB7CisgICAgICAgIExPR1YoImluaXQoKSByZWFkaW5nIGZpbGUgJXMiLCBlbnQtPmRfbmFtZSk7CisgICAgICAgIGlmICgoc3RybGVuKGVudC0+ZF9uYW1lKSA8IDMpIHx8CisgICAgICAgICAgICBzdHJuY21wKGVudC0+ZF9uYW1lLCAibGliIiwgMykgIT0gMCB8fAorICAgICAgICAgICAgc3RybmNtcChlbnQtPmRfbmFtZSArIHN0cmxlbihlbnQtPmRfbmFtZSkgLSAzLCAiLnNvIiwgMykgIT0gMCkgeworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgc3RyY3B5KGxpYnBhdGgsIGdFZmZlY3RMaWJQYXRoKTsKKyAgICAgICAgc3RyY2F0KGxpYnBhdGgsICIvIik7CisgICAgICAgIHN0cmNhdChsaWJwYXRoLCBlbnQtPmRfbmFtZSk7CisgICAgICAgIGlmIChsb2FkTGlicmFyeShsaWJwYXRoLCAmaGRsKSA8IDApIHsKKyAgICAgICAgICAgIExPR1coImluaXQoKSBmYWlsZWQgdG8gbG9hZCBsaWJyYXJ5ICVzIixsaWJwYXRoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBjbG9zZWRpcihkaXIpOworICAgIHVwZGF0ZU51bUVmZmVjdHMoKTsKKyAgICBnSW5pdERvbmUgPSAxOworICAgIExPR1YoImluaXQoKSBkb25lIik7CisgICAgcmV0dXJuIDA7Cit9CisKKworaW50IGxvYWRMaWJyYXJ5KGNvbnN0IGNoYXIgKmxpYlBhdGgsIGludCAqaGFuZGxlKQoreworICAgIHZvaWQgKmhkbDsKKyAgICBlZmZlY3RfUXVlcnlOdW1iZXJFZmZlY3RzX3QgcXVlcnlOdW1GeDsKKyAgICBlZmZlY3RfUXVlcnlFZmZlY3RfdCBxdWVyeUZ4OworICAgIGVmZmVjdF9DcmVhdGVFZmZlY3RfdCBjcmVhdGVGeDsKKyAgICBlZmZlY3RfUmVsZWFzZUVmZmVjdF90IHJlbGVhc2VGeDsKKyAgICB1aW50MzJfdCBudW1GeDsKKyAgICB1aW50MzJfdCBmeDsKKyAgICBpbnQgcmV0OworICAgIGxpc3RfZWxlbV90ICplLCAqZGVzY0hlYWQgPSBOVUxMOworICAgIGxpYl9lbnRyeV90ICpsOworCisgICAgaWYgKGhhbmRsZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0KKworICAgICpoYW5kbGUgPSAwOworCisgICAgaGRsID0gZGxvcGVuKGxpYlBhdGgsIFJUTERfTk9XKTsKKyAgICBpZiAoaGRsID09IDApIHsKKyAgICAgICAgTE9HVygiY291bGQgb3BlbiBsaWIgJXMiLCBsaWJQYXRoKTsKKyAgICAgICAgcmV0dXJuIC1FTk9ERVY7CisgICAgfQorCisgICAgLy8gQ2hlY2sgZnVuY3Rpb25zIGF2YWlsYWJpbGl0eQorICAgIHF1ZXJ5TnVtRnggPSAoZWZmZWN0X1F1ZXJ5TnVtYmVyRWZmZWN0c190KWRsc3ltKGhkbCwgIkVmZmVjdFF1ZXJ5TnVtYmVyRWZmZWN0cyIpOworICAgIGlmIChxdWVyeU51bUZ4ID09IE5VTEwpIHsKKyAgICAgICAgTE9HVygiY291bGQgbm90IGdldCBFZmZlY3RRdWVyeU51bWJlckVmZmVjdHMgZnJvbSBsaWIgJXMiLCBsaWJQYXRoKTsKKyAgICAgICAgcmV0ID0gLUVOT0RFVjsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgcXVlcnlGeCA9IChlZmZlY3RfUXVlcnlFZmZlY3RfdClkbHN5bShoZGwsICJFZmZlY3RRdWVyeUVmZmVjdCIpOworICAgIGlmIChxdWVyeUZ4ID09IE5VTEwpIHsKKyAgICAgICAgTE9HVygiY291bGQgbm90IGdldCBFZmZlY3RRdWVyeUVmZmVjdCBmcm9tIGxpYiAlcyIsIGxpYlBhdGgpOworICAgICAgICByZXQgPSAtRU5PREVWOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgICBjcmVhdGVGeCA9IChlZmZlY3RfQ3JlYXRlRWZmZWN0X3QpZGxzeW0oaGRsLCAiRWZmZWN0Q3JlYXRlIik7CisgICAgaWYgKGNyZWF0ZUZ4ID09IE5VTEwpIHsKKyAgICAgICAgTE9HVygiY291bGQgbm90IGdldCBFZmZlY3RDcmVhdGUgZnJvbSBsaWIgJXMiLCBsaWJQYXRoKTsKKyAgICAgICAgcmV0ID0gLUVOT0RFVjsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgcmVsZWFzZUZ4ID0gKGVmZmVjdF9SZWxlYXNlRWZmZWN0X3QpZGxzeW0oaGRsLCAiRWZmZWN0UmVsZWFzZSIpOworICAgIGlmIChyZWxlYXNlRnggPT0gTlVMTCkgeworICAgICAgICBMT0dXKCJjb3VsZCBub3QgZ2V0IEVmZmVjdFJlbGVhc2UgZnJvbSBsaWIgJXMiLCBsaWJQYXRoKTsKKyAgICAgICAgcmV0ID0gLUVOT0RFVjsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICAvLyBsb2FkIGVmZmVjdCBkZXNjcmlwdG9ycworICAgIHJldCA9IHF1ZXJ5TnVtRngoJm51bUZ4KTsKKyAgICBpZiAocmV0KSB7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgZm9yIChmeCA9IDA7IGZ4IDwgbnVtRng7IGZ4KyspIHsKKyAgICAgICAgZWZmZWN0X2Rlc2NyaXB0b3JfdCAqZCA9IG1hbGxvYyhzaXplb2YoZWZmZWN0X2Rlc2NyaXB0b3JfdCkpOworICAgICAgICBpZiAoZCA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXQgPSAtRU5PTUVNOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICByZXQgPSBxdWVyeUZ4KGZ4LCBkKTsKKyAgICAgICAgaWYgKHJldCA9PSAwKSB7CisjaWYgKExPR19OREVCVUc9PTApCisgICAgICAgICAgICBjaGFyIHNbMjU2XTsKKyAgICAgICAgICAgIGR1bXBFZmZlY3REZXNjcmlwdG9yKGQsIHMsIDI1Nik7CisgICAgICAgICAgICBMT0dWKCJsb2FkTGlicmFyeSgpIHJlYWQgZGVzY3JpcHRvciAlcDolcyIsZCwgcyk7CisjZW5kaWYKKyAgICAgICAgICAgIGlmIChkLT5hcGlWZXJzaW9uICE9IEVGRkVDVF9BUElfVkVSU0lPTikgeworICAgICAgICAgICAgICAgIExPR1coIkJhZCBBUEkgdmVyc2lvbiAlMDR4IG9uIGxpYiAlcyIsIGQtPmFwaVZlcnNpb24sIGxpYlBhdGgpOworICAgICAgICAgICAgICAgIGZyZWUoZCk7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlID0gbWFsbG9jKHNpemVvZihsaXN0X2VsZW1fdCkpOworICAgICAgICAgICAgaWYgKGUgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGZyZWUoZCk7CisgICAgICAgICAgICAgICAgcmV0ID0gLUVOT01FTTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZS0+b2JqZWN0ID0gZDsKKyAgICAgICAgICAgIGUtPm5leHQgPSBkZXNjSGVhZDsKKyAgICAgICAgICAgIGRlc2NIZWFkID0gZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIExPR1coIkVycm9yIHF1ZXJ5aW5nIGVmZmVjdCAjICVkIG9uIGxpYiAlcyIsIGZ4LCBsaWJQYXRoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmZ0xpYkxvY2spOworCisgICAgLy8gYWRkIGVudHJ5IGZvciBsaWJyYXJ5IGluIGdMaWJyYXJ5TGlzdAorICAgIGwgPSBtYWxsb2Moc2l6ZW9mKGxpYl9lbnRyeV90KSk7CisgICAgbC0+aWQgPSArK2dOZXh0TGliSWQ7CisgICAgbC0+aGFuZGxlID0gaGRsOworICAgIHN0cm5jcHkobC0+cGF0aCwgbGliUGF0aCwgUEFUSF9NQVgpOworICAgIGwtPmNyZWF0ZUZ4ID0gY3JlYXRlRng7CisgICAgbC0+cmVsZWFzZUZ4ID0gcmVsZWFzZUZ4OworICAgIGwtPmVmZmVjdHMgPSBkZXNjSGVhZDsKKyAgICBwdGhyZWFkX211dGV4X2luaXQoJmwtPmxvY2ssIE5VTEwpOworCisgICAgZSA9IG1hbGxvYyhzaXplb2YobGlzdF9lbGVtX3QpKTsKKyAgICBlLT5uZXh0ID0gZ0xpYnJhcnlMaXN0OworICAgIGUtPm9iamVjdCA9IGw7CisgICAgZ0xpYnJhcnlMaXN0ID0gZTsKKyAgICBwdGhyZWFkX211dGV4X3VubG9jaygmZ0xpYkxvY2spOworICAgIExPR1YoImxvYWRMaWJyYXJ5KCkgbGlua2VkIGxpYnJhcnkgJXAiLCBsKTsKKworICAgICpoYW5kbGUgPSBsLT5pZDsKKworICAgIHJldHVybiAwOworCitlcnJvcjoKKyAgICBMT0dXKCJsb2FkTGlicmFyeSgpIGVycm9yOiAlZCBvbiBsaWI6ICVzIiwgcmV0LCBsaWJQYXRoKTsKKyAgICB3aGlsZSAoZGVzY0hlYWQpIHsKKyAgICAgICAgZnJlZShkZXNjSGVhZC0+b2JqZWN0KTsKKyAgICAgICAgZSA9IGRlc2NIZWFkLT5uZXh0OworICAgICAgICBmcmVlKGRlc2NIZWFkKTsKKyAgICAgICAgZGVzY0hlYWQgPSBlOzsKKyAgICB9CisgICAgZGxjbG9zZShoZGwpOworICAgIHJldHVybiByZXQ7Cit9CisKK2ludCB1bmxvYWRMaWJyYXJ5KGludCBoYW5kbGUpCit7CisgICAgdm9pZCAqaGRsOworICAgIGludCByZXQ7CisgICAgbGlzdF9lbGVtX3QgKmVsMSwgKmVsMjsKKyAgICBsaWJfZW50cnlfdCAqbDsKKyAgICBlZmZlY3RfZW50cnlfdCAqZng7CisKKyAgICBwdGhyZWFkX211dGV4X2xvY2soJmdMaWJMb2NrKTsKKyAgICBlbDEgPSBnTGlicmFyeUxpc3Q7CisgICAgZWwyID0gTlVMTDsKKyAgICB3aGlsZSAoZWwxKSB7CisgICAgICAgIGwgPSAobGliX2VudHJ5X3QgKillbDEtPm9iamVjdDsKKyAgICAgICAgaWYgKGhhbmRsZSA9PSBsLT5pZCkgeworICAgICAgICAgICAgaWYgKGVsMikgeworICAgICAgICAgICAgICAgIGVsMi0+bmV4dCA9IGVsMS0+bmV4dDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZ0xpYnJhcnlMaXN0ID0gZWwxLT5uZXh0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgZnJlZShlbDEpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgZWwyID0gZWwxOworICAgICAgICBlbDEgPSBlbDEtPm5leHQ7CisgICAgfQorICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZnTGliTG9jayk7CisgICAgaWYgKGVsMSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtRU5PRU5UOworICAgIH0KKworICAgIC8vIGNsZWFyIGVmZmVjdCBkZXNjcmlwdG9yIGxpc3QKKyAgICBlbDEgPSBsLT5lZmZlY3RzOworICAgIHdoaWxlIChlbDEpIHsKKyAgICAgICAgZnJlZShlbDEtPm9iamVjdCk7CisgICAgICAgIGVsMiA9IGVsMS0+bmV4dDsKKyAgICAgICAgZnJlZShlbDEpOworICAgICAgICBlbDEgPSBlbDI7CisgICAgfQorCisgICAgLy8gZGlzYWJsZSBhbGwgZWZmZWN0cyBmcm9tIHRoaXMgbGlicmFyeQorICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmbC0+bG9jayk7CisKKyAgICBlbDEgPSBnRWZmZWN0TGlzdDsKKyAgICB3aGlsZSAoZWwxKSB7CisgICAgICAgIGZ4ID0gKGVmZmVjdF9lbnRyeV90ICopZWwxLT5vYmplY3Q7CisgICAgICAgIGlmIChmeC0+bGliID09IGwpIHsKKyAgICAgICAgICAgIGZ4LT5saWIgPSBOVUxMOworICAgICAgICB9CisgICAgICAgIGVsMSA9IGVsMS0+bmV4dDsKKyAgICB9CisgICAgcHRocmVhZF9tdXRleF91bmxvY2soJmwtPmxvY2spOworCisgICAgZGxjbG9zZShsLT5oYW5kbGUpOworICAgIGZyZWUobCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgcmVzZXRFZmZlY3RFbnVtZXJhdGlvbigpCit7CisgICAgZ0N1ckxpYiA9IGdMaWJyYXJ5TGlzdDsKKyAgICBnQ3VyRWZmZWN0ID0gTlVMTDsKKyAgICBpZiAoZ0N1ckxpYikgeworICAgICAgICBnQ3VyRWZmZWN0ID0gKChsaWJfZW50cnlfdCAqKWdDdXJMaWItPm9iamVjdCktPmVmZmVjdHM7CisgICAgfQorICAgIGdDdXJFZmZlY3RJZHggPSAwOworfQorCit1aW50MzJfdCB1cGRhdGVOdW1FZmZlY3RzKCkgeworICAgIGxpc3RfZWxlbV90ICplOworICAgIHVpbnQzMl90IGNudCA9IDA7CisKKyAgICByZXNldEVmZmVjdEVudW1lcmF0aW9uKCk7CisKKyAgICBlID0gZ0xpYnJhcnlMaXN0OworICAgIHdoaWxlIChlKSB7CisgICAgICAgIGxpYl9lbnRyeV90ICpsID0gKGxpYl9lbnRyeV90ICopZS0+b2JqZWN0OworICAgICAgICBsaXN0X2VsZW1fdCAqZWZ4ID0gbC0+ZWZmZWN0czsKKyAgICAgICAgd2hpbGUgKGVmeCkgeworICAgICAgICAgICAgY250Kys7CisgICAgICAgICAgICBlZnggPSBlZngtPm5leHQ7CisgICAgICAgIH0KKyAgICAgICAgZSA9IGUtPm5leHQ7CisgICAgfQorICAgIGdOdW1FZmZlY3RzID0gY250OworICAgIGdDYW5RdWVyeUVmZmVjdCA9IDA7CisgICAgcmV0dXJuIGNudDsKK30KKworaW50IGZpbmRFZmZlY3QoZWZmZWN0X3V1aWRfdCAqdXVpZCwgbGliX2VudHJ5X3QgKipsaWIsIGVmZmVjdF9kZXNjcmlwdG9yX3QgKipkZXNjKQoreworICAgIGxpc3RfZWxlbV90ICplID0gZ0xpYnJhcnlMaXN0OworICAgIGxpYl9lbnRyeV90ICpsID0gTlVMTDsKKyAgICBlZmZlY3RfZGVzY3JpcHRvcl90ICpkID0gTlVMTDsKKyAgICBpbnQgZm91bmQgPSAwOworICAgIGludCByZXQgPSAwOworCisgICAgd2hpbGUgKGUgJiYgIWZvdW5kKSB7CisgICAgICAgIGwgPSAobGliX2VudHJ5X3QgKillLT5vYmplY3Q7CisgICAgICAgIGxpc3RfZWxlbV90ICplZnggPSBsLT5lZmZlY3RzOworICAgICAgICB3aGlsZSAoZWZ4KSB7CisgICAgICAgICAgICBkID0gKGVmZmVjdF9kZXNjcmlwdG9yX3QgKillZngtPm9iamVjdDsKKyAgICAgICAgICAgIGlmIChtZW1jbXAoJmQtPnV1aWQsIHV1aWQsIHNpemVvZihlZmZlY3RfdXVpZF90KSkgPT0gMCkgeworICAgICAgICAgICAgICAgIGZvdW5kID0gMTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVmeCA9IGVmeC0+bmV4dDsKKyAgICAgICAgfQorICAgICAgICBlID0gZS0+bmV4dDsKKyAgICB9CisgICAgaWYgKCFmb3VuZCkgeworICAgICAgICBMT0dWKCJmaW5kRWZmZWN0KCkgZWZmZWN0IG5vdCBmb3VuZCIpOworICAgICAgICByZXQgPSAtRU5PRU5UOworICAgIH0gZWxzZSB7CisgICAgICAgIExPR1YoImZpbmRFZmZlY3QoKSBmb3VuZCBlZmZlY3Q6ICVzIGluIGxpYiAlcyIsIGQtPm5hbWUsIGwtPnBhdGgpOworICAgICAgICAqbGliID0gbDsKKyAgICAgICAgKmRlc2MgPSBkOworICAgIH0KKworICAgIHJldHVybiByZXQ7Cit9CisKK3ZvaWQgZHVtcEVmZmVjdERlc2NyaXB0b3IoZWZmZWN0X2Rlc2NyaXB0b3JfdCAqZGVzYywgY2hhciAqc3RyLCBzaXplX3QgbGVuKSB7CisgICAgY2hhciBzWzI1Nl07CisKKyAgICBzbnByaW50ZihzdHIsIGxlbiwgIlxuRWZmZWN0IERlc2NyaXB0b3IgJXA6XG4iLCBkZXNjKTsKKyAgICBzcHJpbnRmKHMsICItIFVVSUQ6ICUwOFgtJTA0WC0lMDRYLSUwNFgtJTAyWCUwMlglMDJYJTAyWCUwMlglMDJYXG4iLAorICAgICAgICAgICAgZGVzYy0+dXVpZC50aW1lTG93LCBkZXNjLT51dWlkLnRpbWVNaWQsIGRlc2MtPnV1aWQudGltZUhpQW5kVmVyc2lvbiwKKyAgICAgICAgICAgIGRlc2MtPnV1aWQuY2xvY2tTZXEsIGRlc2MtPnV1aWQubm9kZVswXSwgZGVzYy0+dXVpZC5ub2RlWzFdLGRlc2MtPnV1aWQubm9kZVsyXSwKKyAgICAgICAgICAgIGRlc2MtPnV1aWQubm9kZVszXSxkZXNjLT51dWlkLm5vZGVbNF0sZGVzYy0+dXVpZC5ub2RlWzVdKTsKKyAgICBzdHJuY2F0KHN0ciwgcywgbGVuKTsKKyAgICBzcHJpbnRmKHMsICItIFRZUEU6ICUwOFgtJTA0WC0lMDRYLSUwNFgtJTAyWCUwMlglMDJYJTAyWCUwMlglMDJYXG4iLAorICAgICAgICAgICAgICAgIGRlc2MtPnR5cGUudGltZUxvdywgZGVzYy0+dHlwZS50aW1lTWlkLCBkZXNjLT50eXBlLnRpbWVIaUFuZFZlcnNpb24sCisgICAgICAgICAgICAgICAgZGVzYy0+dHlwZS5jbG9ja1NlcSwgZGVzYy0+dHlwZS5ub2RlWzBdLCBkZXNjLT50eXBlLm5vZGVbMV0sZGVzYy0+dHlwZS5ub2RlWzJdLAorICAgICAgICAgICAgICAgIGRlc2MtPnR5cGUubm9kZVszXSxkZXNjLT50eXBlLm5vZGVbNF0sZGVzYy0+dHlwZS5ub2RlWzVdKTsKKyAgICBzdHJuY2F0KHN0ciwgcywgbGVuKTsKKyAgICBzcHJpbnRmKHMsICItIGFwaVZlcnNpb246ICUwNFhcbi0gZmxhZ3M6ICUwOFhcbiIsCisgICAgICAgICAgICBkZXNjLT5hcGlWZXJzaW9uLCBkZXNjLT5mbGFncyk7CisgICAgc3RybmNhdChzdHIsIHMsIGxlbik7CisgICAgc3ByaW50ZihzLCAiLSBuYW1lOiAlc1xuIiwgZGVzYy0+bmFtZSk7CisgICAgc3RybmNhdChzdHIsIHMsIGxlbik7CisgICAgc3ByaW50ZihzLCAiLSBpbXBsZW1lbnRvcjogJXNcbiIsIGRlc2MtPmltcGxlbWVudG9yKTsKKyAgICBzdHJuY2F0KHN0ciwgcywgbGVuKTsKK30KKwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZWZmZWN0cy9FZmZlY3RzRmFjdG9yeS5oIGIvbWVkaWEvbGliZWZmZWN0cy9FZmZlY3RzRmFjdG9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmNTQzY2EKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJlZmZlY3RzL0VmZmVjdHNGYWN0b3J5LmgKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgQU5EUk9JRF9FRkZFQ1RTRkFDVE9SWV9IXworI2RlZmluZSBBTkRST0lEX0VGRkVDVFNGQUNUT1JZX0hfCisKKyNpbmNsdWRlIDxjdXRpbHMvbG9nLmg+CisjaW5jbHVkZSA8cHRocmVhZC5oPgorI2luY2x1ZGUgPGRpcmVudC5oPgorI2luY2x1ZGUgPG1lZGlhL0VmZmVjdHNGYWN0b3J5QXBpLmg+CisKKworI2lmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCit0eXBlZGVmIHN0cnVjdCBsaXN0X2VsZW1fcyB7CisgICAgdm9pZCAqb2JqZWN0OworICAgIHN0cnVjdCBsaXN0X2VsZW1fcyAqbmV4dDsKK30gbGlzdF9lbGVtX3Q7CisKK3R5cGVkZWYgc3RydWN0IGxpYl9lbnRyeV9zIHsKKyAgICBjaGFyIHBhdGhbUEFUSF9NQVhdOworICAgIHZvaWQgKmhhbmRsZTsKKyAgICBpbnQgaWQ7CisgICAgZWZmZWN0X0NyZWF0ZUVmZmVjdF90IGNyZWF0ZUZ4OworICAgIGVmZmVjdF9SZWxlYXNlRWZmZWN0X3QgcmVsZWFzZUZ4OworICAgIGxpc3RfZWxlbV90ICplZmZlY3RzOyAvL2xpc3Qgb2YgZWZmZWN0X2Rlc2NyaXB0b3JfdAorICAgIHB0aHJlYWRfbXV0ZXhfdCBsb2NrOworfSBsaWJfZW50cnlfdDsKKwordHlwZWRlZiBzdHJ1Y3QgZWZmZWN0X2VudHJ5X3MgeworICAgIHN0cnVjdCBlZmZlY3RfaW50ZXJmYWNlX3MgKml0ZmU7CisgICAgZWZmZWN0X2ludGVyZmFjZV90IHN1Ykl0ZmU7CisgICAgbGliX2VudHJ5X3QgKmxpYjsKK30gZWZmZWN0X2VudHJ5X3Q7CisKKyNpZiBfX2NwbHVzcGx1cworfSAgLy8gZXh0ZXJuICJDIgorI2VuZGlmCisKKworI2VuZGlmIC8qQU5EUk9JRF9FRkZFQ1RTRkFDVE9SWV9IXyovCmRpZmYgLS1naXQgYS9tZWRpYS9saWJlZmZlY3RzL0VmZmVjdHNNYXRoLmMgYi9tZWRpYS9saWJlZmZlY3RzL0VmZmVjdHNNYXRoLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDFlYzY2MgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYmVmZmVjdHMvRWZmZWN0c01hdGguYwpAQCAtMCwwICsxLDE0MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisjZGVmaW5lIExPR19UQUcgIkVGRkVDVFNNQVRIIgorLy8jZGVmaW5lIExPR19OREVCVUcgMAorI2luY2x1ZGUgPGN1dGlscy9sb2cuaD4KKyNpbmNsdWRlIDxhc3NlcnQuaD4KKworI2luY2x1ZGUgIkVmZmVjdHNNYXRoLmgiCisKKy8vIGdMb2dUYWIgY29udGFpbnMgcHJlLWNhbGN1bGF0ZWQgdmFsdWVzIG9mIGxvZzIoMSArIGFpNSoyXi0xICsgYWk0KjJeLTIgKyBhaTMqMl4tMyArIGFpMioyXi00ICsgYWkxKjJeLTUgKyBhaTAqMl4tNikKKy8vIGZvciBpbnRlZ2VycyBpbiB0aGUgcmFuZ2UgMCB0byA2MyAoaSA9IGFpNSoyXjUgKyBhaTQqMl40ICsgYWkzKjJeMyArIGFpMioyXjIgKyBhaTEqMl4xICsgYWkwKjJeMCkKKy8vIEl0IGlzIHVzZWQgZm9yIGEgYmV0dGVyIHRoYW4gcGllY2Ugd2lzZSBhcHByb3hpbWF0aW9uIG9mIGxpbiB0byBsb2cyIGNvbnZlcnNpb24KKworc3RhdGljIGNvbnN0IHVpbnQxNl90IGdMb2dUYWJbXSA9Cit7CisgICAgMCwgNzMzLCAxNDU1LCAyMTY2LAorICAgIDI4NjYsIDM1NTYsIDQyMzYsIDQ5MDcsCisgICAgNTU2OCwgNjIyMCwgNjg2MywgNzQ5OCwKKyAgICA4MTI0LCA4NzQyLCA5MzUyLCA5OTU0LAorICAgIDEwNTQ5LCAxMTEzNiwgMTE3MTYsIDEyMjg5LAorICAgIDEyODU1LCAxMzQxNSwgMTM5NjgsIDE0NTE0LAorICAgIDE1MDU1LCAxNTU4OSwgMTYxMTcsIDE2NjM5LAorICAgIDE3MTU2LCAxNzY2NywgMTgxNzMsIDE4NjczLAorICAgIDE5MTY4LCAxOTY1OCwgMjAxNDMsIDIwNjIzLAorICAgIDIxMDk4LCAyMTU2OCwgMjIwMzQsIDIyNDk1LAorICAgIDIyOTUyLCAyMzQwNCwgMjM4NTIsIDI0Mjk2LAorICAgIDI0NzM2LCAyNTE3MiwgMjU2MDQsIDI2MDMxLAorICAgIDI2NDU1LCAyNjg3NiwgMjcyOTIsIDI3NzA1LAorICAgIDI4MTE0LCAyODUyMCwgMjg5MjIsIDI5MzIxLAorICAgIDI5NzE3LCAzMDEwOSwgMzA0OTgsIDMwODg0LAorICAgIDMxMjY3LCAzMTY0NywgMzIwMjQsIDMyMzk3LAorICAgIDMyNzY4Cit9OworCitpbnQzMl90IEVmZmVjdHNfbG9nMih1aW50MzJfdCB4KSB7CisgICAgaW50MzJfdCBleHAgPSAzMSAtIF9fYnVpbHRpbl9jbHooeCk7CisgICAgdWludDMyX3Qgc2VnU3RhcnQgPSB4ID4+IChleHAgLSA2KTsKKyAgICB1aW50MzJfdCBpID0gc2VnU3RhcnQgJiAweDNGOworICAgIGludDMyX3QgbG9nID0gKGludDMyX3QpZ0xvZ1RhYltpXTsKKyAgICBpbnQzMl90IGxvZ0VuZCA9IChpbnQzMl90KWdMb2dUYWJbaSsxXTsKKyAgICBzZWdTdGFydCA8PD0gZXhwIC0gNjsKKworICAgIHJldHVybiAoZXhwIDw8IDE1KSArIGxvZyArICgoKHggLSBzZWdTdGFydCkgKiAobG9nRW5kIC0gbG9nKSkgPj4gKGV4cCAtIDYpKTsKK30KKworLy8gZ0V4cFRhYltpXSA9ICgyXihpPj42KSkgPDwgMjIKK3N0YXRpYyBjb25zdCB1aW50MzJfdCBnRXhwVGFiW10gPSB7CisgICAgICAgICAgICA0MTk0MzA0LCA0MjM5OTc3LCA0Mjg2MTQ3LCA0MzMyODIwLAorICAgICAgICAgICAgNDM4MDAwMiwgNDQyNzY5NywgNDQ3NTkxMSwgNDUyNDY1MSwKKyAgICAgICAgICAgIDQ1NzM5MjEsIDQ2MjM3MjgsIDQ2NzQwNzcsIDQ3MjQ5NzQsCisgICAgICAgICAgICA0Nzc2NDI2LCA0ODI4NDM4LCA0ODgxMDE2LCA0OTM0MTY3LAorICAgICAgICAgICAgNDk4Nzg5NiwgNTA0MjIxMSwgNTA5NzExNywgNTE1MjYyMSwKKyAgICAgICAgICAgIDUyMDg3MjksIDUyNjU0NDksIDUzMjI3ODYsIDUzODA3NDcsCisgICAgICAgICAgICA1NDM5MzM5LCA1NDk4NTcwLCA1NTU4NDQ1LCA1NjE4OTczLAorICAgICAgICAgICAgNTY4MDE1OSwgNTc0MjAxMiwgNTgwNDUzOSwgNTg2Nzc0NiwKKyAgICAgICAgICAgIDU5MzE2NDIsIDU5OTYyMzMsIDYwNjE1MjgsIDYxMjc1MzMsCisgICAgICAgICAgICA2MTk0MjU4LCA2MjYxNzA5LCA2MzI5ODk0LCA2Mzk4ODIyLAorICAgICAgICAgICAgNjQ2ODUwMSwgNjUzODkzOCwgNjYxMDE0MywgNjY4MjEyMiwKKyAgICAgICAgICAgIDY3NTQ4ODYsIDY4Mjg0NDIsIDY5MDI3OTksIDY5Nzc5NjUsCisgICAgICAgICAgICA3MDUzOTUwLCA3MTMwNzYzLCA3MjA4NDEyLCA3Mjg2OTA2LAorICAgICAgICAgICAgNzM2NjI1NSwgNzQ0NjQ2OSwgNzUyNzU1NSwgNzYwOTUyNSwKKyAgICAgICAgICAgIDc2OTIzODcsIDc3NzYxNTIsIDc4NjA4MjksIDc5NDY0MjgsCisgICAgICAgICAgICA4MDMyOTU5LCA4MTIwNDMyLCA4MjA4ODU3LCA4Mjk4MjQ2LAorICAgICAgICAgICAgODM4ODYwOAorfTsKKworCit1aW50MzJfdCBFZmZlY3RzX2V4cDIoaW50MzJfdCB4KSB7CisgICAgaW50MzJfdCBpID0geCA+PiAxNTsKKyAgICBhc3NlcnQoaSA8IDMyKTsKKyAgICB4ICY9ICgxIDw8IDE1KSAtIDE7CisgICAgaW50MzJfdCBqID0geCA+PiA5OworICAgIHggJj0gKDEgPDwgOSkgLSAxOworICAgIHVpbnQzMl90IGV4cCA9IGdFeHBUYWJbal07CisgICAgdWludDMyX3QgZXhwRW5kID0gZ0V4cFRhYltqKzFdOworCisgICAgcmV0dXJuICgoZXhwIDw8IDkpICsgKGV4cEVuZCAtIGV4cCkgKiB4KSA+PiAoMzEgLSBpKTsKK30KKworCitpbnQxNl90IEVmZmVjdHNfTWlsbGliZWxzVG9MaW5lYXIxNiAoaW50MzJfdCBuR2FpbikKK3sKKyAgICBuR2FpbiA9ICgobkdhaW4gKyBNQl9UT19MSU5fSzEpIDw8IDE1ICkgLyBNQl9UT19MSU5fSzI7CisgICAgdWludDMyX3QgZXhwMiA9IEVmZmVjdHNfZXhwMihuR2Fpbik7CisKKyAgICBpZiAoZXhwMiA+IDMyNzY3KSBleHAyID0gMzI3Njc7CisKKyAgICByZXR1cm4gKGludDE2X3QpZXhwMjsKK30KKworCitpbnQxNl90IEVmZmVjdHNfTGluZWFyMTZUb01pbGxpYmVscyAoaW50MzJfdCBuR2FpbikKK3sKKyAgICByZXR1cm4gKGludDE2X3QpKCgoTUJfVE9fTElOX0syKkVmZmVjdHNfbG9nMihuR2FpbikpPj4xNSktTUJfVE9fTElOX0sxKTsKK30KKworCitpbnQzMl90IEVmZmVjdHNfU3FydChpbnQzMl90IGluKQoreworICAgIGludDMyX3QgdG1wOworICAgIGludDMyX3Qgb3V0ID0gMDsKKyAgICBpbnQzMl90IGk7CisgICAgaW50MzJfdCBqOworCisKKyAgICBpZiAoaW4gPT0gMCkgcmV0dXJuIDA7CisKKyAgICBpZiAoaW4gPj0gMHgxMDAwMDAwMCkKKyAgICB7CisgICAgICAgIG91dCA9IDB4NDAwMDsKKyAgICAgICAgaW4gLT0gMHgxMDAwMDAwMDsKKyAgICB9CisKKyAgICBqID0gMzIgLSBfX2J1aWx0aW5fY2x6KGluKTsKKworICAgIGlmIChqICYgMSkgaisrOworICAgIGogPj49IDE7CisKKyAgICBmb3IgKGkgPSBqOyBpID4gMDsgaS0tKSB7CisgICAgICAgIHRtcCA9IChvdXQgPDwgaSkgKyAoMSA8PCAoKGkgLSAxKSoyKSk7CisgICAgICAgIGlmIChpbiA+PSB0bXApCisgICAgICAgIHsKKyAgICAgICAgICAgIG91dCArPSAxIDw8IChpLTEpOworICAgICAgICAgICAgaW4gLT0gdG1wOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIG91dDsKK30KKwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGliZWZmZWN0cy9FZmZlY3RzTWF0aC5oIGIvbWVkaWEvbGliZWZmZWN0cy9FZmZlY3RzTWF0aC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhNDQzOTkKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJlZmZlY3RzL0VmZmVjdHNNYXRoLmgKQEAgLTAsMCArMSw0MjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIEFORFJPSURfRUZGRUNUU01BVEhfSF8KKyNkZWZpbmUgQU5EUk9JRF9FRkZFQ1RTTUFUSF9IXworCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKKyNpZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyoqIGNvZWZzIGZvciBwYW4sIGdlbmVyYXRlcyBzaW4sIGNvcyAqLworI2RlZmluZSBDT0VGRl9QQU5fRzIgICAgLTI3MTQ2ICAgIC8qIC0wLjgyODQyNzEyNDc0NjE5ID0gMiAtIDQvc3FydCgyKSAqLworI2RlZmluZSBDT0VGRl9QQU5fRzAgICAgMjMxNzAgICAgIC8qIDAuNzA3MTA2NzgxMTg2NTQ3ID0gMS9zcXJ0KDIpICovCisKKy8qCitjb2VmZmljaWVudHMgZm9yIGFwcHJveGltYXRpbmcKKzJeeCA9IGduMnRvWDAgKyBnbjJ0b1gxKnggKyBnbjJ0b1gyKnheMiArIGduMnRvWDMqeF4zCit3aGVyZSB4IGlzIGEgaW50LmZyYWMgbnVtYmVyIHJlcHJlc2VudGluZyBudW1iZXIgb2Ygb2N0YXZlcy4KK0FjdHVhbGx5LCB3ZSBhcHByb3hpbWF0ZSBvbmx5IHRoZSAyXihmcmFjKSB1c2luZyB0aGUgcG93ZXIgc2VyaWVzCithbmQgaW1wbGVtZW50IHRoZSAyXihpbnQpIGFzIGEgc2hpZnQsIHNvIHRoYXQKKzJeeCA9PSAyXihpbnQuZnJhYykgPT0gMl4oaW50KSAqIDJeKGZyYWN0KQorICAgID09IChnbjJ0b1gwICsgZ24ydG9YMSp4ICsgZ24ydG9YMip4XjIgKyBnbjJ0b1gzKnheMykgPDwgKGludCkKKworVGhlIGduMnRvWC4uIHdlcmUgZ2VuZXJhdGVkIHVzaW5nIGEgYmVzdCBmaXQgZm9yIGEgM3JkCitvcmRlciBwb2x5bm9taWFsLCBpbnN0ZWFkIG9mIHRha2luZyB0aGUgY29lZmZpY2llbnRzIGZyb20KK2EgdHJ1bmNhdGVkIFRheWxvciAob3IgTWFjbGF1cmluPykgc2VyaWVzLgorKi8KKworI2RlZmluZSBHTjJfVE9fWDAgICAgMzI3NjggICAgLyogICAgMSAgICAgICAgICAgICAgICAgICAgKi8KKyNkZWZpbmUgR04yX1RPX1gxICAgIDIyODMzICAgIC8qICAgIDAuNjk2ODA3ODYxMzI4MTI1ICAgICovCisjZGVmaW5lIEdOMl9UT19YMiAgICA3MzQ0ICAgIC8qICAgIDAuMjI0MTIxMDkzNzUgICAgICAgICovCisjZGVmaW5lIEdOMl9UT19YMyAgICAyNTg4ICAgIC8qICAgIDAuMDc4OTc5NDkyMTg3NSAgICAgICAgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBGaXhlZCBQb2ludCBNYXRoCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFRoZXNlIG1hY3JvcyBhcmUgdXNlZCBmb3IgZml4ZWQgcG9pbnQgbXVsdGlwbGllcy4gSWYgdGhlIHByb2Nlc3NvcgorICogc3VwcG9ydHMgZml4ZWQgcG9pbnQgbXVsdGlwbGllcywgcmVwbGFjZSB0aGVzZSBtYWNyb3Mgd2l0aCBpbmxpbmUKKyAqIGFzc2VtYmx5IGNvZGUgdG8gaW1wcm92ZSBwZXJmb3JtYW5jZS4KKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKi8KKworLyogRml4ZWQgcG9pbnQgbXVsdGlwbHkgMC4xNSB4IDAuMTUgPSAwLjE1IHJldHVybmVkIGFzIDMyLWJpdHMgKi8KKyNkZWZpbmUgRk1VTF8xNXgxNShhLGIpIFwKKyAgICAvKmxpbnQgLWUoNzA0KSA8YXZvaWQgbXVsdGlwbHkgZm9yIHBlcmZvcm1hbmNlPiovIFwKKyAgICAoKChpbnQzMl90KShhKSAqIChpbnQzMl90KShiKSkgPj4gMTUpCisKKy8qIEZpeGVkIHBvaW50IG11bHRpcGx5IDAuNyB4IDAuNyA9IDAuMTUgcmV0dXJuZWQgYXMgMzItYml0cyAqLworI2RlZmluZSBGTVVMXzd4NyhhLGIpIFwKKyAgICAvKmxpbnQgLWUoNzA0KSA8YXZvaWQgbXVsdGlwbHkgZm9yIHBlcmZvcm1hbmNlPiovIFwKKyAgICAoKChpbnQzMl90KShhKSAqIChpbnQzMl90KShiKSApIDw8IDEpCisKKy8qIEZpeGVkIHBvaW50IG11bHRpcGx5IDAuOCB4IDAuOCA9IDAuMTUgcmV0dXJuZWQgYXMgMzItYml0cyAqLworI2RlZmluZSBGTVVMXzh4OChhLGIpIFwKKyAgICAvKmxpbnQgLWUoNzA0KSA8YXZvaWQgbXVsdGlwbHkgZm9yIHBlcmZvcm1hbmNlPiovIFwKKyAgICAoKChpbnQzMl90KShhKSAqIChpbnQzMl90KShiKSApID4+IDEpCisKKy8qIEZpeGVkIHBvaW50IG11bHRpcGx5IDAuOCB4IDEuMTUgPSAwLjE1IHJldHVybmVkIGFzIDMyLWJpdHMgKi8KKyNkZWZpbmUgRk1VTF84eDE1KGEsYikgXAorICAgIC8qbGludCAtZSg3MDQpIDxhdm9pZCBkaXZpZGUgZm9yIHBlcmZvcm1hbmNlPiovIFwKKyAgICAoKChpbnQzMl90KSgoYSkgPDwgNykgKiAoaW50MzJfdCkoYikpID4+IDE1KQorCisvKiBtYWNyb3MgZm9yIGZyYWN0aW9uYWwgcGhhc2UgYWNjdW11bGF0b3IgKi8KKy8qCitOb3RlOiBjaGFuZ2VkIHRoZSBfVTMyIHRvIF9JMzIgb24gMDMvMTQvMDIuIFRoaXMgc2hvdWxkIG5vdAorYWZmZWN0IHRoZSBwaGFzZSBjYWxjdWxhdGlvbnMsIGFuZCBzaG91bGQgYWxsb3cgdXMgdG8gcmV1c2UgdGhlc2UKK21hY3JvcyBmb3Igb3RoZXIgYXVkaW8gc2FtcGxlIHJlbGF0ZWQgbWF0aC4KKyovCisjZGVmaW5lIEhBUkRXQVJFX0JJVF9XSURUSCAgICAgICAgMzIKKworI2RlZmluZSBOVU1fUEhBU0VfSU5UX0JJVFMgICAgICAgIDEKKyNkZWZpbmUgTlVNX1BIQVNFX0ZSQUNfQklUUyAgICAgICAxNQorCisjZGVmaW5lIFBIQVNFX0ZSQUNfTUFTSyAgICAgICAgICAgKHVpbnQzMl90KSAoKDB4MUwgPDwgTlVNX1BIQVNFX0ZSQUNfQklUUykgLTEpCisKKyNkZWZpbmUgR0VUX1BIQVNFX0lOVF9QQVJUKHgpICAgICAodWludDMyX3QpKCh1aW50MzJfdCkoeCkgPj4gTlVNX1BIQVNFX0ZSQUNfQklUUykKKyNkZWZpbmUgR0VUX1BIQVNFX0ZSQUNfUEFSVCh4KSAgICAodWludDMyX3QpKCh1aW50MzJfdCkoeCkgJiBQSEFTRV9GUkFDX01BU0spCisKKyNkZWZpbmUgREVGQVVMVF9QSEFTRV9GUkFDICAgICAgICAwCisjZGVmaW5lIERFRkFVTFRfUEhBU0VfSU5UICAgICAgICAgMAorCisvKgorTGluZWFyIGludGVycG9sYXRpb24gY2FsY3VsYXRlczoKK291dHB1dCA9ICgxLWZyYWMpICogc2FtcGxlW25dICsgKGZyYWMpICogc2FtcGxlW24rMV0KKword2hlcmUgY29uY2VwdHVhbGx5ICAgIDAgPD0gZnJhYyA8IDEKKworRm9yIGEgZml4ZWQgcG9pbnQgaW1wbGVtZW50YXRpb24sIGZyYWMgaXMgYWN0dWFsbHkgYW4gaW50ZWdlciB2YWx1ZQord2l0aCBhbiBpbXBsaWVkIGJpbmFyeSBwb2ludCBvbmUgcG9zaXRpb24gdG8gdGhlIGxlZnQuIFRoZSB2YWx1ZSBvZgorb25lICh1bml0eSkgaXMgZ2l2ZW4gYnkgUEhBU0VfT05FCitvbmUgaGFsZiBhbmQgb25lIHF1YXJ0ZXIgYXJlIHVzZWZ1bCBmb3IgNC1wb2ludCBsaW5lYXIgaW50ZXJwLgorKi8KKyNkZWZpbmUgUEhBU0VfT05FICAgICAgICAgICAgICAgIChpbnQzMl90KSAoMHgxTCA8PCBOVU1fUEhBU0VfRlJBQ19CSVRTKQorCisvKgorIE11bHRpcGx5IHRoZSBzaWduZWQgYXVkaW8gc2FtcGxlIGJ5IHRoZSB1bnNpZ25lZCBmcmFjdGlvbi4KKy0gIGEgaXMgdGhlIHNpZ25lZCBhdWRpbyBzYW1wbGUKKy0gIGIgaXMgdGhlIHVuc2lnbmVkIGZyYWN0aW9uIChjYXN0IHRvIHNpZ25lZCBpbnQgYXMgbG9uZyBhcyBjb2VmCisgICAgdXNlcyAobi0xKSBvciBsZXNzIGJpdHMsIHdoZXJlIG4gPT0gaGFyZHdhcmUgYml0IHdpZHRoKQorKi8KKyNkZWZpbmUgTVVMVF9BVURJT19DT0VGKGF1ZGlvLGNvZWYpICAgICAgICAgLypsaW50IC1lNzA0IDxhdm9pZCBkaXZpZGUgZm9yIHBlcmZvcm1hbmNlPiovIFwKKyAgICAgICAgICAgIChpbnQzMl90KSggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgKChpbnQzMl90KShhdWRpbykpICogKChpbnQzMl90KShjb2VmKSkgICAgXAorICAgICAgICAgICAgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgPj4gTlVNX1BIQVNFX0ZSQUNfQklUUyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBsaW50ICs3MDQgPHJlc3RvcmUgY2hlY2tpbmc+Ki8KKworLyogd2V0IC8gZHJ5IGNhbGN1bGF0aW9uIG1hY3JvcyAqLworI2RlZmluZSBOVU1fV0VUX0RSWV9GUkFDX0JJVFMgICAgICAgNyAgICAvLyAxNQorI2RlZmluZSBOVU1fV0VUX0RSWV9JTlRfQklUUyAgICAgICAgOSAgICAvLyAxCisKKy8qIGRlZmluZSBhIDEuMCAqLworI2RlZmluZSBXRVRfRFJZX09ORSAgICAgICAgICAgICAgICAgKGludDMyX3QpICgoMHgxTCA8PCBOVU1fV0VUX0RSWV9GUkFDX0JJVFMpKQorI2RlZmluZSBXRVRfRFJZX01JTlVTX09ORSAgICAgICAgICAgKGludDMyX3QpICh+V0VUX0RSWV9PTkUpCisjZGVmaW5lIFdFVF9EUllfRlVMTF9TQ0FMRSAgICAgICAgICAoaW50MzJfdCkgKFdFVF9EUllfT05FIC0gMSkKKworI2RlZmluZSBNVUxUX0FVRElPX1dFVF9EUllfQ09FRihhdWRpbyxjb2VmKSAvKmxpbnQgLWUoNzAyKSA8YXZvaWQgZGl2aWRlIGZvciBwZXJmb3JtYW5jZT4qLyBcCisgICAgICAgICAgICAoaW50MzJfdCkoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgKChpbnQzMl90KShhdWRpbykpICogKChpbnQzMl90KShjb2VmKSkgICAgICAgIFwKKyAgICAgICAgICAgICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICA+PiBOVU1fV0VUX0RSWV9GUkFDX0JJVFMgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKKworLyogRW52ZWxvcGUgMSAoRUcxKSBjYWxjdWxhdGlvbiBtYWNyb3MgKi8KKyNkZWZpbmUgICAgTlVNX0VHMV9JTlRfQklUUyAgICAgICAgICAxCisjZGVmaW5lIE5VTV9FRzFfRlJBQ19CSVRTICAgICAgICAgICAgMTUKKworLyogdGhlIG1heCBwb3NpdGl2ZSBnYWluIHVzZWQgaW4gdGhlIHN5bnRoIGZvciBFRzEgKi8KKy8qIFNZTlRIX0ZVTExfU0NBTEVfRUcxX0dBSU4gbXVzdCBtYXRjaCB0aGUgdmFsdWUgaW4gdGhlIGRsczJlYXMKK2NvbnZlcnRlciwgb3RoZXJ3aXNlLCB0aGUgdmFsdWVzIHdlIHJlYWQgZnJvbSB0aGUgLmVhcyBmaWxlIGFyZSBib2d1cy4gKi8KKyNkZWZpbmUgU1lOVEhfRlVMTF9TQ0FMRV9FRzFfR0FJTiAgICAoaW50MzJfdCkgKCgweDFMIDw8IE5VTV9FRzFfRlJBQ19CSVRTKSAtMSkKKworLyogZGVmaW5lIGEgMS4wICovCisjZGVmaW5lIEVHMV9PTkUgICAgICAgICAgICAgICAgICAgICAgKGludDMyX3QpICgoMHgxTCA8PCBOVU1fRUcxX0ZSQUNfQklUUykpCisjZGVmaW5lIEVHMV9NSU5VU19PTkUgICAgICAgICAgICAgICAgKGludDMyX3QpICh+U1lOVEhfRlVMTF9TQ0FMRV9FRzFfR0FJTikKKworI2RlZmluZSBFRzFfSEFMRiAgICAgICAgICAgICAgICAgICAgIChpbnQzMl90KSAoRUcxX09ORS8yKQorI2RlZmluZSBFRzFfTUlOVVNfSEFMRiAgICAgICAgICAgICAgIChpbnQzMl90KSAoRUcxX01JTlVTX09ORS8yKQorCisvKgorV2UgaW1wbGVtZW50IHRoZSBFRzEgdXNpbmcgYSBsaW5lYXIgZ2FpbiB2YWx1ZSwgd2hpY2ggbWVhbnMgdGhhdCB0aGUKK2F0dGFjayBzZWdtZW50IGlzIGhhbmRsZWQgYnkgaW5jcmVtZW50aW5nIChhZGRpbmcpIHRoZSBsaW5lYXIgZ2Fpbi4KK0hvd2V2ZXIsIEVHMSB0cmVhdHMgdGhlIERlY2F5LCBTdXN0YWluLCBhbmQgUmVsZWFzZSBkaWZmZXJlbnRseSB0aGFuCit0aGUgQXR0YWNrIHBvcnRpb24uIEZvciBEZWNheSwgU3VzdGFpbiwgYW5kIFJlbGVhc2UsIHRoZSBnYWluIGlzCitsaW5lYXIgb24gZEIgc2NhbGUsIHdoaWNoIGlzIGVxdWl2YWxlbnQgdG8gZXhwb25lbnRpYWwgZGFtcGluZyBvbgorYSBsaW5lYXIgc2NhbGUuIEJlY2F1c2Ugd2UgdXNlIGEgbGluZWFyIGdhaW4gZm9yIEVHMSwgd2UgaW1wbGVtZW50Cit0aGUgRGVjYXkgYW5kIFJlbGVhc2UgYXMgbXVsdGlwbGljYXRpb24gKGluc3RlYWQgb2YgaW5jcmVtZW50aW5nCithcyB3ZSBkaWQgZm9yIHRoZSBhdHRhY2sgc2VnbWVudCkuCitUaGVyZWZvcmUsIHdlIG5lZWQgdGhlIGZvbGxvd2luZyBtYWNybyB0byBpbXBsZW1lbnQgdGhlIG11bHRpcGxpY2F0aW9uCisoaS5lLiwgZXhwb25lbnRpYWwgZGFtcGluZykgZHVyaW5nIHRoZSBEZWNheSBhbmQgUmVsZWFzZSBzZWdtZW50cyBvZgordGhlIEVHMQorKi8KKyNkZWZpbmUgTVVMVF9FRzFfRUcxKGdhaW4sZGFtcGluZykgICAgICAgIC8qbGludCAtZSg3MDQpIDxhdm9pZCBkaXZpZGUgZm9yIHBlcmZvcm1hbmNlPiovIFwKKyAgICAgICAgICAgIChpbnQzMl90KSggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAoKGludDMyX3QpKGdhaW4pKSAqICgoaW50MzJfdCkoZGFtcGluZykpICAgIFwKKyAgICAgICAgICAgICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICA+PiBOVU1fRUcxX0ZSQUNfQklUUyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorCisvLyBVc2UgdGhlIGZvbGxvd2luZyBtYWNybyBzcGVjaWZpY2FsbHkgZm9yIHRoZSBmaWx0ZXIsIHdoZW4gbXVsdGlwbHlpbmcKKy8vIHRoZSBiMSBjb2VmZmljaWVudC4gVGhlIDAgPD0gfGIxfCA8IDIsIHdoaWNoIHRoZXJlZm9yZSBtaWdodCBvdmVyZmxvdworLy8gaW4gY2VydGFpbiBjb25kaXRpb25zIGJlY2F1c2Ugd2Ugc3RvcmUgYjEgYXMgYSAxLjE1IHZhbHVlLgorLy8gSW5zdGVhZCwgd2UgY291bGQgc3RvcmUgYjEgYXMgYjFwIChiMScgPT0gYjEgInByaW1lIikgd2hlcmUKKy8vIGIxcCA9PSBiMS8yLCB0aHVzIGVuc3VyaW5nIG5vIHBvdGVudGlhbCBvdmVyZmxvdyBmb3IgYjFwIGJlY2F1c2UKKy8vIDAgPD0gfGIxcHwgPCAxCisvLyBIb3dldmVyLCBkdXJpbmcgdGhlIGZpbHRlciBjYWxjdWxhdGlvbiwgd2UgbXVzdCBhY2NvdW50IGZvciB0aGUgZmFjdAorLy8gdGhhdCB3ZSBhcmUgdXNpbmcgYjFwIGluc3RlYWQgb2YgYjEsIGFuZCB0aGVyZWJ5IG11bHRpcGx5IGJ5CisvLyBhbiBleHRyYSBmYWN0b3Igb2YgMi4gUmF0aGVyIHRoYW4gbXVsdGlwbHkgYnkgYW4gZXh0cmEgZmFjdG9yIG9mIDIsCisvLyB3ZSBjYW4gaW5zdGVhZCBzaGlmdCB0aGUgcmVzdWx0IHJpZ2h0IGJ5IG9uZSBsZXNzLCBoZW5jZSB0aGUKKy8vIG1vZGlmaWVkIHNoaWZ0IHJpZ2h0IHZhbHVlIG9mIChOVU1fRUcxX0ZSQUNfQklUUyAtMSkKKyNkZWZpbmUgTVVMVF9FRzFfRUcxX1gyKGdhaW4sZGFtcGluZykgICAgICAgICAvKmxpbnQgLWUoNzAyKSA8YXZvaWQgZGl2aWRlIGZvciBwZXJmb3JtYW5jZT4qLyBcCisgICAgICAgICAgICAoaW50MzJfdCkoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgKChpbnQzMl90KShnYWluKSkgKiAoKGludDMyX3QpKGRhbXBpbmcpKSAgICBcCisgICAgICAgICAgICApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgPj4gKE5VTV9FRzFfRlJBQ19CSVRTIC0xKSAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisKKyNkZWZpbmUgU0FUVVJBVEVfRUcxKHgpICAgICAgICAvKmxpbnQgLWV7NzM0fSBzYXR1cmF0aW9uIG9wZXJhdGlvbiAqLyAgICAgICAgICAgICAgICBcCisgICAgKChpbnQzMl90KSh4KSA+IFNZTlRIX0ZVTExfU0NBTEVfRUcxX0dBSU4pICAgID8gKFNZTlRIX0ZVTExfU0NBTEVfRUcxX0dBSU4pIDogICAgXAorICAgICgoaW50MzJfdCkoeCkgPCBFRzFfTUlOVVNfT05FKSAgICAgICAgICAgICAgICA/IChFRzFfTUlOVVNfT05FKSA6ICAgICh4KTsKKworCisvKiB1c2UgImRpZ2l0YWwgY2VudHMiID09ICJkZW50cyIgaW5zdGVhZCBvZiBjZW50cyAqLworLyogd2UgY291ZGwgcmUtdXNlIHRoZSBwaGFzZSBmcmFjIG1hY3JvcywgYnV0IGlmIHdlIGRvLAord2UgbXVzdCBjaGFuZ2UgdGhlIHBoYXNlIG1hY3JvcyB0byBjYXN0IHRvIF9JMzIgaW5zdGVhZCBvZiBfVTMyLAorYmVjYXVzZSB1c2luZyBhIF9VMzIgY2FzdCBjYXVzZXMgcHJvYmxlbXMgd2hlbiBzaGlmdGluZyB0aGUgZXhwb25lbnQKK2ZvciB0aGUgMl54IGNhbGN1bGF0aW9uLCBiZWNhdXNlIHJpZ2h0IHNoaWZ0IGEgbmVnYXRpdmUgdmFsdWVzIE1VU1QKK2JlIHNpZ24gZXh0ZW5kZWQsIG9yIGVsc2UgdGhlIDJeeCBjYWxjdWxhdGlvbiBpcyB3cm9uZyAqLworCisvKiB1c2UgImRpZ2l0YWwgY2VudHMiID09ICJkZW50cyIgaW5zdGVhZCBvZiBjZW50cyAqLworI2RlZmluZSBOVU1fREVOVFNfRlJBQ19CSVRTICAgICAgICAxMgorI2RlZmluZSBOVU1fREVOVFNfSU5UX0JJVFMgICAgICAgICAoSEFSRFdBUkVfQklUX1dJRFRIIC0gTlVNX0RFTlRTX0ZSQUNfQklUUykKKworI2RlZmluZSBERU5UU19GUkFDX01BU0sgICAgICAgICAgICAoaW50MzJfdCkgKCgweDFMIDw8IE5VTV9ERU5UU19GUkFDX0JJVFMpIC0xKQorCisjZGVmaW5lIEdFVF9ERU5UU19JTlRfUEFSVCh4KSAgICAgICAgLypsaW50IC1lKDcwNCkgPGF2b2lkIGRpdmlkZSBmb3IgcGVyZm9ybWFuY2U+Ki8gICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpbnQzMl90KSgoaW50MzJfdCkoeCkgPj4gTlVNX0RFTlRTX0ZSQUNfQklUUykKKworI2RlZmluZSBHRVRfREVOVFNfRlJBQ19QQVJUKHgpICAgICAoaW50MzJfdCkoKGludDMyX3QpKHgpICYgREVOVFNfRlJBQ19NQVNLKQorCisjZGVmaW5lIERFTlRTX09ORSAgICAgICAgICAgICAgICAgIChpbnQzMl90KSAoMHgxTCA8PCBOVU1fREVOVFNfRlJBQ19CSVRTKQorCisvKiB1c2UgQ0VOVFNfVE9fREVOVFMgdG8gY29udmVydCBhIHZhbHVlIGluIGNlbnRzIHRvIGRlbnRzICovCisjZGVmaW5lIENFTlRTX1RPX0RFTlRTIChpbnQzMl90KSAoREVOVFNfT05FICogKDB4MUwgPDwgTlVNX0VHMV9GUkFDX0JJVFMpIC8gMTIwMEwpICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKworCisvKgorRm9yIGdhaW4sIHRoZSBMRk8gZ2VuZXJhdGVzIGEgdmFsdWUgdGhhdCBtb2R1bGF0ZXMgaW4gdGVybXMKK29mIGRCLiBIb3dldmVyLCB3ZSB1c2UgYSBsaW5lYXIgZ2FpbiB2YWx1ZSwgc28gd2UgbXVzdCBjb252ZXJ0Cit0aGUgTEZPIHZhbHVlIGluIGRCIHRvIGEgbGluZWFyIGdhaW4uIE5vcm1hbGx5LCB3ZSB3b3VsZCB1c2UKK2xpbmVhciBnYWluID0gMTBeeCwgd2hlcmUgeCA9IExGTyB2YWx1ZSBpbiBkQiAvIDIwLgorSW5zdGVhZCwgd2UgaW1wbGVtZW50IDEwXnggdXNpbmcgb3VyIDJeeCBhcHByb3hpbWF0aW9uLgorYmVjYXVzZQorCisgIDEwXnggPSAyXihsb2cyKDEwXngpKSA9IDJeKHggKiBsb2cyKDEwKSkKKworc28gd2UgbmVlZCB0byBtdWx0aXBseSBieSBsb2cyKDEwKSB3aGljaCBpcyBqdXN0IGEgY29uc3RhbnQuCitBaCwgYnV0IGp1c3Qgd2FpdCAtLSBvdXIgMl54IGFjdHVhbGx5IGRvZXNuJ3QgZXhhY3RseSBpbXBsZW1lbnQKKzJeeCwgYnV0IGl0IGFjdHVhbGx5IGFzc3VtZXMgdGhhdCB0aGUgaW5wdXQgaXMgaW4gY2VudHMsIGFuZCB3aXRoaW4KK3RoZSAyXnggYXBwcm94aW1hdGlvbiBjb252ZXJ0cyBpdHMgaW5wdXQgZnJvbSBjZW50cyB0byBvY3RhdmVzCitieSBkaXZpZGluZyBpdHMgaW5wdXQgYnkgMTIwMC4KKworU28sIGluIG9yZGVyIHRvIGNvbnZlcnQgdGhlIExGTyBnYWluIHZhbHVlIGluIGRCIHRvIHNvbWV0aGluZwordGhhdCBvdXIgZXhpc3RpbmcgMl54IGFwcHJveGltYXRpb24gY2FuIHVzZSwgbXVsdGlwbHkgdGhlIExGTyBnYWluCitieSBsb2cyKDEwKSAqIDEyMDAgLyAyMAorCitUaGUgZGl2aWRlIGJ5IDIwIGhlbHBzIGNvbnZlcnQgZEIgdG8gbGluZWFyIGdhaW4sIGFuZCB3ZSBtaWdodAorYXMgd2VsbCBpbmNvcnBvcmF0ZSB0aGF0IG9wZXJhdGlvbiBpbnRvIHRoaXMgY29udmVyc2lvbi4KK09mIGNvdXJzZSwgd2UgbmVlZCB0byBrZWVwIHNvbWUgZnJhY3Rpb25hbCBiaXRzLCBzbyBtdWx0aXBseQordGhlIGNvbnN0YW50IGJ5IE5VTV9FRzFfRlJBQ19CSVRTCisqLworCisvKiB1c2UgTEZPX0dBSU5fVE9fQ0VOVFMgdG8gY29udmVydCB0aGUgTEZPIGdhaW4gdmFsdWUgdG8gY2VudHMgKi8KKyNpZiAwCisjZGVmaW5lICAgIERPVUJMRV9MT0cyXzEwICAgIChkb3VibGUpICgzLjMyMTkyODA5NDg4NzM2KSAgICAvKiBsb2cyKDEwKSAqLworCisjZGVmaW5lICAgIERPVUJMRV9MRk9fR0FJTl9UT19DRU5UUyAgICAoZG91YmxlKSAgICAgICAgICAgICAgICBcCisgICAgKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIChET1VCTEVfTE9HMl8xMCkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgMTIwMC4wICAgIC8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgMjAuMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKQorCisjZGVmaW5lICAgIExGT19HQUlOX1RPX0NFTlRTICAgIChpbnQzMl90KSAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgRE9VQkxFX0xGT19HQUlOX1RPX0NFTlRTICogICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAoMHgxTCA8PCBOVU1fRUcxX0ZSQUNfQklUUykgICAgICAgICAgICAgICAgICAgIFwKKyAgICApCisjZW5kaWYKKworI2RlZmluZSBMRk9fR0FJTl9UT19DRU5UUyAoaW50MzJfdCkgKDE2NzE5ODExNTZMID4+ICgyMyAtIE5VTV9FRzFfRlJBQ19CSVRTKSkKKworCisjZGVmaW5lIE1VTFRfREVOVFNfQ09FRihkZW50cyxjb2VmKSAgICAgLypsaW50IC1lNzA0IDxhdm9pZCBkaXZpZGUgZm9yIHBlcmZvcm1hbmNlPiovICAgIFwKKyAgICAgICAgICAgIChpbnQzMl90KSggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgKChpbnQzMl90KShkZW50cykpICogKChpbnQzMl90KShjb2VmKSkgICAgXAorICAgICAgICAgICAgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgPj4gTlVNX0RFTlRTX0ZSQUNfQklUUyAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBsaW50ICtlNzA0IDxyZXN0b3JlIGNoZWNraW5nPiovCisKKworLyogd2UgdXNlIDE2LWJpdHMgaW4gdGhlIFBDIHBlciBhdWRpbyBzYW1wbGUgKi8KKyNkZWZpbmUgQklUU19QRVJfQVVESU9fU0FNUExFICAgIDE2CisKKy8qIHdlIGRlZmluZSAxIGFzIDEuMCAtIDEgTFNiaXQgKi8KKyNkZWZpbmUgRElTVE9SVElPTl9PTkUgICAgICAgICAgIChpbnQzMl90KSgoMHgxTCA8PCAoQklUU19QRVJfQVVESU9fU0FNUExFLTEpKSAtMSkKKyNkZWZpbmUgRElTVE9SVElPTl9NSU5VU19PTkUgICAgIChpbnQzMl90KSh+RElTVE9SVElPTl9PTkUpCisKKy8qIGRyaXZlIGNvZWYgaXMgZ2l2ZW4gYXMgaW50LmZyYWMgKi8KKyNkZWZpbmUgTlVNX0RSSVZFX0NPRUZfSU5UX0JJVFMgIDEKKyNkZWZpbmUgTlVNX0RSSVZFX0NPRUZfRlJBQ19CSVRTIDQKKworI2RlZmluZSBNVUxUX0FVRElPX0RSSVZFKGF1ZGlvLGRyaXZlKSAgICAgICAgIC8qbGludCAtZSg3MDIpIDxhdm9pZCBkaXZpZGUgZm9yIHBlcmZvcm1hbmNlPiovIFwKKyAgICAgICAgICAgIChpbnQzMl90KSAgICAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgKChpbnQzMl90KShhdWRpbykpICogKChpbnQzMl90KShkcml2ZSkpICAgIFwKKyAgICAgICAgICAgICkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgID4+IE5VTV9EUklWRV9DT0VGX0ZSQUNfQklUUyAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorCisjZGVmaW5lIE1VTFRfQVVESU9fQVVESU8oYXVkaW8xLGF1ZGlvMikgICAgICAgICAvKmxpbnQgLWUoNzAyKSA8YXZvaWQgZGl2aWRlIGZvciBwZXJmb3JtYW5jZT4qLyBcCisgICAgICAgICAgICAoaW50MzJfdCkgICAgKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgKChpbnQzMl90KShhdWRpbzEpKSAqICgoaW50MzJfdCkoYXVkaW8yKSkgICAgXAorICAgICAgICAgICAgKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgID4+IChCSVRTX1BFUl9BVURJT19TQU1QTEUtMSkgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisKKyNkZWZpbmUgU0FUVVJBVEUoeCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKCgoKGludDMyX3QpKHgpKSA+IERJU1RPUlRJT05fT05FKSAgICAgICAgPyAoRElTVE9SVElPTl9PTkUpIDogICAgICAgICAgICBcCisgICAgKCgoaW50MzJfdCkoeCkpIDwgRElTVE9SVElPTl9NSU5VU19PTkUpICAgID8gKERJU1RPUlRJT05fTUlOVVNfT05FKSA6ICAgICgoaW50MzJfdCkoeCkpKTsKKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIEVmZmVjdHNfbG9nMigpCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFB1cnBvc2U6CisgKiBGaXhlZC1wb2ludCBsb2cyIGZ1bmN0aW9uLgorICoKKyAqIElucHV0czoKKyAqIElucHV0IGlzIGludGVycHJldGVkIGFzIGFuIGludGVnZXIgKHNob3VsZCBub3QgYmUgMCkuCisgKgorICogT3V0cHV0czoKKyAqIE91dHB1dCBpcyBpbiAxNS1iaXQgcHJlY2lzaW9uLgorICoKKyAqIFNpZGUgRWZmZWN0czoKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyovCitpbnQzMl90IEVmZmVjdHNfbG9nMih1aW50MzJfdCB4KTsKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBFZmZlY3RzX2V4cDIoKQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBQdXJwb3NlOgorICogRml4ZWQtcG9pbnQgcmFkaXgtMiBleHBvbmVudC4KKyAqCisgKiBJbnB1dHM6CisgKiBJbnB1dCBpcyBpbiAxNS1iaXQgcHJlY2lzaW9uLiBNdXN0IGJlIG5vbi1uZWdhdGl2ZSBhbmQgbGVzcyB0aGFuIDMyLgorICoKKyAqIE91dHB1dHM6CisgKiBPdXRwdXQgaXMgYW4gaW50ZWdlci4KKyAqCisgKiBTaWRlIEVmZmVjdHM6CisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqLwordWludDMyX3QgRWZmZWN0c19leHAyKGludDMyX3QgeCk7CisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogRWZmZWN0c19NaWxsaWJlbHNUb0xpbmVhcjE2KCkKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogUHVycG9zZToKKyAqIFRyYW5zZm9ybSBnYWluIGluIG1pbGxpYmVscyB0byBsaW5lYXIgZ2FpbiBtdWx0aXBsaWVyOgorICoKKyAqIG1CID0gMjAwMCpsb2cobGluLzMyNzY3KQorICogICAgPT4gbGluID0gMl4oKG1CKzIwMDAqbG9nKDMyNzY3KSkvMjAwMCpsb2coMikpCisgKiAgICA9PiBsaW4gPSBFZmZlY3RzX2V4cDIoKChtQiArIEsxKSA8PCAxNSkgLyBLMikKKyAqIHdpdGg6CisgKiAgICBLMSA9IDIwMDAqbG9nKDMyNzY3KSBhbmQgSzIgPSAyMDAwKmxvZygyKQorICoKKyAqIElucHV0czoKKyAqIG5HYWluIC0gbG9nIHNjYWxlIHZhbHVlIGluIG1pbGxpYmVscy4KKyAqCisgKiBPdXRwdXRzOgorICogUmV0dXJucyBhIDE2LWJpdCBsaW5lYXIgdmFsdWUgYXBwcm94aW1hdGVseSBlcXVhbCB0byAyXihuR2Fpbi8xMDI0KQorICoKKyAqIFNpZGUgRWZmZWN0czoKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyovCisjZGVmaW5lIE1CX1RPX0xJTl9LMSA5MDMxCisjZGVmaW5lIE1CX1RPX0xJTl9LMiA2MDIKK2ludDE2X3QgRWZmZWN0c19NaWxsaWJlbHNUb0xpbmVhcjE2IChpbnQzMl90IG5HYWluKTsKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBFZmZlY3RzX0xpbmVhcjE2VG9NaWxsaWJlbHMoKQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKiBQdXJwb3NlOgorICogVHJhbnNmb3JtIGxpbmVhciBnYWluIG11bHRpcGxpZXIgdG8gbWlsbGliZWxzCisgKiAgbUIgPSAyMDAwKmxvZyhsaW4vMzI3NjcpCisgKiAgICAgPSAyMDAwKmxvZygyKSpsb2cyKGxpbiktMjAwMCpsb2coMzI3NjcpCisgKiAgICA9PiBtQiA9IEsxKkVmZmVjdHNfbG9nMihsaW4pICsgSzIKKyAqIHdpdGg6CisgKiAgICBLMSA9IDIwMDAqbG9nKDIpIGFuZCBLMiA9IC0yMDAwKmxvZygzMjc2NykKKyAqCisgKiBJbnB1dHM6CisgKiBuR2FpbiAtIGxpbmVhciBtdWx0aXBsaWVyIHJhbmdpbmcgZm9ybSAwIHRvIDMyNzY3IChjb3JyZXNwb25kaW5nIHRvIFswIDFdIGdhaW4gcmFuZ2UpLgorICoKKyAqIE91dHB1dHM6CisgKiBSZXR1cm5zIGEgMTYtYml0IGxvZyB2YWx1ZSBleHByZXNzZWQgaW4gbWlsbGxpYmVscy4KKyAqCisgKiBTaWRlIEVmZmVjdHM6CisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqLworaW50MTZfdCBFZmZlY3RzX0xpbmVhcjE2VG9NaWxsaWJlbHMgKGludDMyX3QgbkdhaW4pOworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIEVmZmVjdHNfU3FydCgpCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIFB1cnBvc2U6CisgKiBSZXR1cm5zIHRoZSBzcXVhcmUgcm9vdCBvZiB0aGUgYXJndW1lbnQgZ2l2ZW4uCisgKgorICogSW5wdXRzOgorICogaW4gLSBwb3NpdGl2ZSBudW1iZXIgaW4gdGhlIHJhbmdlIDAgLSAyXjI4CisgKgorICogT3V0cHV0czoKKyAqIFJldHVybmVkIHZhbHVlOiBzcXVhcmUgcm9vdCBvZiBpbi4KKyAqCisgKiBTaWRlIEVmZmVjdHM6CisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisqLworaW50MzJfdCBFZmZlY3RzX1NxcnQoaW50MzJfdCBpbik7CisKKyNpZiBfX2NwbHVzcGx1cworfSAgLy8gZXh0ZXJuICJDIgorI2VuZGlmCisKKyNlbmRpZiAvKkFORFJPSURfRUZGRUNUU01BVEhfSF8qLworCmRpZmYgLS1naXQgYS9tZWRpYS9saWJtZWRpYS9BbmRyb2lkLm1rIGIvbWVkaWEvbGlibWVkaWEvQW5kcm9pZC5tawppbmRleCAzYWRhYmNjLi45NzdlNmJlIDEwMDY0NAotLS0gYS9tZWRpYS9saWJtZWRpYS9BbmRyb2lkLm1rCisrKyBiL21lZGlhL2xpYm1lZGlhL0FuZHJvaWQubWsKQEAgLTEyLDYgKzEyLDcgQEAKICAgICBtZWRpYXBsYXllci5jcHAgXAogICAgIElNZWRpYVBsYXllclNlcnZpY2UuY3BwIFwKICAgICBJTWVkaWFQbGF5ZXJDbGllbnQuY3BwIFwKKyAgICBJTWVkaWFSZWNvcmRlckNsaWVudC5jcHAgXAogICAgIElNZWRpYVBsYXllci5jcHAgXAogICAgIElNZWRpYVJlY29yZGVyLmNwcCBcCiAgICAgTWV0YWRhdGEuY3BwIFwKQEAgLTI2LDcgKzI3LDExIEBACiAgICAgTWVkaWFTY2FubmVyQ2xpZW50LmNwcCBcCiAgICAgYXV0b2RldGVjdC5jcHAgXAogICAgIElNZWRpYURlYXRoTm90aWZpZXIuY3BwIFwKLSAgICBNZWRpYVByb2ZpbGVzLmNwcAorICAgIE1lZGlhUHJvZmlsZXMuY3BwIFwKKyAgICBJRWZmZWN0LmNwcCBcCisgICAgSUVmZmVjdENsaWVudC5jcHAgXAorICAgIEF1ZGlvRWZmZWN0LmNwcCBcCisgICAgVmlzdWFsaXplci5jcHAKIAogTE9DQUxfU0hBUkVEX0xJQlJBUklFUyA6PSBcCiAJbGlidWkgbGliY3V0aWxzIGxpYnV0aWxzIGxpYmJpbmRlciBsaWJzb25pdm94IGxpYmljdXVjIGxpYmV4cGF0IGxpYnN1cmZhY2VmbGluZ2VyX2NsaWVudCBsaWJjYW1lcmFfY2xpZW50CmRpZmYgLS1naXQgYS9tZWRpYS9saWJtZWRpYS9BdWRpb0VmZmVjdC5jcHAgYi9tZWRpYS9saWJtZWRpYS9BdWRpb0VmZmVjdC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGYwZjczYgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYm1lZGlhL0F1ZGlvRWZmZWN0LmNwcApAQCAtMCwwICsxLDQ1NCBAQAorLyoKKyoqCisqKiBDb3B5cmlnaHQgMjAxMCwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorKioKKyoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisqKgorKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorKioKKyoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorKi8KKworCisvLyNkZWZpbmUgTE9HX05ERUJVRyAwCisjZGVmaW5lIExPR19UQUcgIkF1ZGlvRWZmZWN0IgorCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8bGltaXRzLmg+CisKKyNpbmNsdWRlIDxwcml2YXRlL21lZGlhL0F1ZGlvRWZmZWN0U2hhcmVkLmg+CisjaW5jbHVkZSA8bWVkaWEvQXVkaW9FZmZlY3QuaD4KKworI2luY2x1ZGUgPHV0aWxzL0xvZy5oPgorI2luY2x1ZGUgPGN1dGlscy9hdG9taWMuaD4KKyNpbmNsdWRlIDxiaW5kZXIvSVBDVGhyZWFkU3RhdGUuaD4KKworCisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK0F1ZGlvRWZmZWN0OjpBdWRpb0VmZmVjdCgpCisgICAgOiBtU3RhdHVzKE5PX0lOSVQpCit7Cit9CisKKworQXVkaW9FZmZlY3Q6OkF1ZGlvRWZmZWN0KGNvbnN0IGVmZmVjdF91dWlkX3QgKnR5cGUsCisgICAgICAgICAgICAgICAgY29uc3QgZWZmZWN0X3V1aWRfdCAqdXVpZCwKKyAgICAgICAgICAgICAgICBpbnQzMl90IHByaW9yaXR5LAorICAgICAgICAgICAgICAgIGVmZmVjdF9jYWxsYmFja190IGNiZiwKKyAgICAgICAgICAgICAgICB2b2lkKiB1c2VyLAorICAgICAgICAgICAgICAgIGludCBzZXNzaW9uSWQsCisgICAgICAgICAgICAgICAgYXVkaW9faW9faGFuZGxlX3Qgb3V0cHV0CisgICAgICAgICAgICAgICAgKQorICAgIDogbVN0YXR1cyhOT19JTklUKQoreworICAgIG1TdGF0dXMgPSBzZXQodHlwZSwgdXVpZCwgcHJpb3JpdHksIGNiZiwgdXNlciwgc2Vzc2lvbklkLCBvdXRwdXQpOworfQorCitBdWRpb0VmZmVjdDo6QXVkaW9FZmZlY3QoY29uc3QgY2hhciAqdHlwZVN0ciwKKyAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp1dWlkU3RyLAorICAgICAgICAgICAgICAgIGludDMyX3QgcHJpb3JpdHksCisgICAgICAgICAgICAgICAgZWZmZWN0X2NhbGxiYWNrX3QgY2JmLAorICAgICAgICAgICAgICAgIHZvaWQqIHVzZXIsCisgICAgICAgICAgICAgICAgaW50IHNlc3Npb25JZCwKKyAgICAgICAgICAgICAgICBhdWRpb19pb19oYW5kbGVfdCBvdXRwdXQKKyAgICAgICAgICAgICAgICApCisgICAgOiBtU3RhdHVzKE5PX0lOSVQpCit7CisgICAgZWZmZWN0X3V1aWRfdCB0eXBlOworICAgIGVmZmVjdF91dWlkX3QgKnBUeXBlID0gTlVMTDsKKyAgICBlZmZlY3RfdXVpZF90IHV1aWQ7CisgICAgZWZmZWN0X3V1aWRfdCAqcFV1aWQgPSBOVUxMOworCisgICAgTE9HVigiQ29uc3RydWN0b3Igc3RyaW5nXG4gLSB0eXBlOiAlc1xuIC0gdXVpZDogJXMiLCB0eXBlU3RyLCB1dWlkU3RyKTsKKworICAgIGlmICh0eXBlU3RyICE9IE5VTEwpIHsKKyAgICAgICAgaWYgKHN0cmluZ1RvR3VpZCh0eXBlU3RyLCAmdHlwZSkgPT0gTk9fRVJST1IpIHsKKyAgICAgICAgICAgIHBUeXBlID0gJnR5cGU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAodXVpZFN0ciAhPSBOVUxMKSB7CisgICAgICAgIGlmIChzdHJpbmdUb0d1aWQodXVpZFN0ciwgJnV1aWQpID09IE5PX0VSUk9SKSB7CisgICAgICAgICAgICBwVXVpZCA9ICZ1dWlkOworICAgICAgICB9CisgICAgfQorCisgICAgbVN0YXR1cyA9IHNldChwVHlwZSwgcFV1aWQsIHByaW9yaXR5LCBjYmYsIHVzZXIsIHNlc3Npb25JZCwgb3V0cHV0KTsKK30KKworc3RhdHVzX3QgQXVkaW9FZmZlY3Q6OnNldChjb25zdCBlZmZlY3RfdXVpZF90ICp0eXBlLAorICAgICAgICAgICAgICAgIGNvbnN0IGVmZmVjdF91dWlkX3QgKnV1aWQsCisgICAgICAgICAgICAgICAgaW50MzJfdCBwcmlvcml0eSwKKyAgICAgICAgICAgICAgICBlZmZlY3RfY2FsbGJhY2tfdCBjYmYsCisgICAgICAgICAgICAgICAgdm9pZCogdXNlciwKKyAgICAgICAgICAgICAgICBpbnQgc2Vzc2lvbklkLAorICAgICAgICAgICAgICAgIGF1ZGlvX2lvX2hhbmRsZV90IG91dHB1dCkKK3sKKyAgICBzcDxJRWZmZWN0PiBpRWZmZWN0OworICAgIHNwPElNZW1vcnk+IGNibGs7CisgICAgaW50IGVuYWJsZWQ7CisKKyAgICBMT0dWKCJzZXQgJXAgbVVzZXJEYXRhOiAlcCIsIHRoaXMsIHVzZXIpOworCisgICAgaWYgKG1JRWZmZWN0ICE9IDApIHsKKyAgICAgICAgTE9HVygiRWZmZWN0IGFscmVhZHkgaW4gdXNlIik7CisgICAgICAgIHJldHVybiBJTlZBTElEX09QRVJBVElPTjsKKyAgICB9CisKKyAgICBjb25zdCBzcDxJQXVkaW9GbGluZ2VyPiYgYXVkaW9GbGluZ2VyID0gQXVkaW9TeXN0ZW06OmdldF9hdWRpb19mbGluZ2VyKCk7CisgICAgaWYgKGF1ZGlvRmxpbmdlciA9PSAwKSB7CisgICAgICAgIExPR0UoInNldCgpOiBDb3VsZCBub3QgZ2V0IGF1ZGlvZmxpbmdlciIpOworICAgICAgICByZXR1cm4gTk9fSU5JVDsKKyAgICB9CisKKyAgICBpZiAodHlwZSA9PSBOVUxMICYmIHV1aWQgPT0gTlVMTCkgeworICAgICAgICBMT0dXKCJNdXN0IHNwZWNpZnkgYXQgbGVhc3QgdHlwZSBvciB1dWlkIik7CisgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisgICAgfQorCisgICAgbVByaW9yaXR5ID0gcHJpb3JpdHk7CisgICAgbUNiZiA9IGNiZjsKKyAgICBtVXNlckRhdGEgPSB1c2VyOworICAgIG1TZXNzaW9uSWQgPSBzZXNzaW9uSWQ7CisKKyAgICBtZW1zZXQoJm1EZXNjcmlwdG9yLCAwLCBzaXplb2YoZWZmZWN0X2Rlc2NyaXB0b3JfdCkpOworICAgIG1lbWNweSgmbURlc2NyaXB0b3IudHlwZSwgRUZGRUNUX1VVSURfTlVMTCwgc2l6ZW9mKGVmZmVjdF91dWlkX3QpKTsKKyAgICBtZW1jcHkoJm1EZXNjcmlwdG9yLnV1aWQsIEVGRkVDVF9VVUlEX05VTEwsIHNpemVvZihlZmZlY3RfdXVpZF90KSk7CisKKyAgICBpZiAodHlwZSAhPSBOVUxMKSB7CisgICAgICAgIG1lbWNweSgmbURlc2NyaXB0b3IudHlwZSwgdHlwZSwgc2l6ZW9mKGVmZmVjdF91dWlkX3QpKTsKKyAgICB9CisgICAgaWYgKHV1aWQgIT0gTlVMTCkgeworICAgICAgICBtZW1jcHkoJm1EZXNjcmlwdG9yLnV1aWQsIHV1aWQsIHNpemVvZihlZmZlY3RfdXVpZF90KSk7CisgICAgfQorCisgICAgbUlFZmZlY3RDbGllbnQgPSBuZXcgRWZmZWN0Q2xpZW50KHRoaXMpOworCisgICAgaUVmZmVjdCA9IGF1ZGlvRmxpbmdlci0+Y3JlYXRlRWZmZWN0KGdldHBpZCgpLCAoZWZmZWN0X2Rlc2NyaXB0b3JfdCAqKSZtRGVzY3JpcHRvciwKKyAgICAgICAgICAgIG1JRWZmZWN0Q2xpZW50LCBwcmlvcml0eSwgb3V0cHV0LCBtU2Vzc2lvbklkLCAmbVN0YXR1cywgJm1JZCwgJmVuYWJsZWQpOworCisgICAgaWYgKGlFZmZlY3QgPT0gMCB8fCAobVN0YXR1cyAhPSBOT19FUlJPUiAmJiBtU3RhdHVzICE9IEFMUkVBRFlfRVhJU1RTKSkgeworICAgICAgICBMT0dFKCJzZXQoKTogQXVkaW9GbGluZ2VyIGNvdWxkIG5vdCBjcmVhdGUgZWZmZWN0LCBzdGF0dXM6ICVkIiwgbVN0YXR1cyk7CisgICAgICAgIHJldHVybiBtU3RhdHVzOworICAgIH0KKworICAgIG1FbmFibGVkID0gKHZvbGF0aWxlIGludDMyX3QpZW5hYmxlZDsKKworICAgIG1JRWZmZWN0ID0gaUVmZmVjdDsKKyAgICBjYmxrID0gaUVmZmVjdC0+Z2V0Q2JsaygpOworICAgIGlmIChjYmxrID09IDApIHsKKyAgICAgICAgbVN0YXR1cyA9IE5PX0lOSVQ7CisgICAgICAgIExPR0UoIkNvdWxkIG5vdCBnZXQgY29udHJvbCBibG9jayIpOworICAgICAgICByZXR1cm4gbVN0YXR1czsKKyAgICB9CisKKyAgICBtSUVmZmVjdCA9IGlFZmZlY3Q7CisgICAgbUNibGtNZW1vcnkgPSBjYmxrOworICAgIG1DYmxrID0gc3RhdGljX2Nhc3Q8ZWZmZWN0X3BhcmFtX2NibGtfdCo+KGNibGstPnBvaW50ZXIoKSk7CisgICAgaW50IGJ1Zk9mZnNldCA9ICgoc2l6ZW9mKGVmZmVjdF9wYXJhbV9jYmxrX3QpIC0gMSkgLyBzaXplb2YoaW50KSArIDEpICogc2l6ZW9mKGludCk7CisgICAgbUNibGstPmJ1ZmZlciA9ICh1aW50OF90ICopbUNibGsgKyBidWZPZmZzZXQ7CisKKyAgICBpRWZmZWN0LT5hc0JpbmRlcigpLT5saW5rVG9EZWF0aChtSUVmZmVjdENsaWVudCk7CisgICAgTE9HVigic2V0KCkgJXAgT0sgZWZmZWN0OiAlcyBpZDogJWQgc3RhdHVzICVkIGVuYWJsZWQgJWQsICIsIHRoaXMsIG1EZXNjcmlwdG9yLm5hbWUsIG1JZCwgbVN0YXR1cywgbUVuYWJsZWQpOworCisgICAgcmV0dXJuIG1TdGF0dXM7Cit9CisKKworQXVkaW9FZmZlY3Q6On5BdWRpb0VmZmVjdCgpCit7CisgICAgTE9HVigiRGVzdHJ1Y3RvciAlcCIsIHRoaXMpOworCisgICAgaWYgKG1TdGF0dXMgPT0gTk9fRVJST1IgfHwgbVN0YXR1cyA9PSBBTFJFQURZX0VYSVNUUykgeworICAgICAgICBzZXRFbmFibGVkKGZhbHNlKTsKKyAgICAgICAgaWYgKG1JRWZmZWN0ICE9IE5VTEwpIHsKKyAgICAgICAgICAgIG1JRWZmZWN0LT5kaXNjb25uZWN0KCk7CisgICAgICAgICAgICBtSUVmZmVjdC0+YXNCaW5kZXIoKS0+dW5saW5rVG9EZWF0aChtSUVmZmVjdENsaWVudCk7CisgICAgICAgIH0KKyAgICAgICAgIElQQ1RocmVhZFN0YXRlOjpzZWxmKCktPmZsdXNoQ29tbWFuZHMoKTsKKyAgICB9CisgICAgbUlFZmZlY3QuY2xlYXIoKTsKKyAgICBtSUVmZmVjdENsaWVudC5jbGVhcigpOworICAgIG1DYmxrTWVtb3J5LmNsZWFyKCk7Cit9CisKKworc3RhdHVzX3QgQXVkaW9FZmZlY3Q6OmluaXRDaGVjaygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1TdGF0dXM7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworZWZmZWN0X2Rlc2NyaXB0b3JfdCBBdWRpb0VmZmVjdDo6ZGVzY3JpcHRvcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1EZXNjcmlwdG9yOworfQorCitib29sIEF1ZGlvRWZmZWN0OjpnZXRFbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gKG1FbmFibGVkICE9IDApOworfQorCitzdGF0dXNfdCBBdWRpb0VmZmVjdDo6c2V0RW5hYmxlZChib29sIGVuYWJsZWQpCit7CisgICAgaWYgKG1TdGF0dXMgIT0gTk9fRVJST1IpIHsKKyAgICAgICAgcmV0dXJuIElOVkFMSURfT1BFUkFUSU9OOworICAgIH0KKworICAgIGlmIChlbmFibGVkKSB7CisgICAgICAgIExPR1YoImVuYWJsZSAlcCIsIHRoaXMpOworICAgICAgICBpZiAoYW5kcm9pZF9hdG9taWNfb3IoMSwgJm1FbmFibGVkKSA9PSAwKSB7CisgICAgICAgICAgIHJldHVybiBtSUVmZmVjdC0+ZW5hYmxlKCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBMT0dWKCJkaXNhYmxlICVwIiwgdGhpcyk7CisgICAgICAgIGlmIChhbmRyb2lkX2F0b21pY19hbmQofjEsICZtRW5hYmxlZCkgPT0gMSkgeworICAgICAgICAgICByZXR1cm4gbUlFZmZlY3QtPmRpc2FibGUoKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gSU5WQUxJRF9PUEVSQVRJT047Cit9CisKK3N0YXR1c190IEF1ZGlvRWZmZWN0Ojpjb21tYW5kKGludDMyX3QgY21kQ29kZSwgaW50MzJfdCBjbWRTaXplLCB2b2lkICpjbWREYXRhLCBpbnQzMl90ICpyZXBseVNpemUsIHZvaWQgKnJlcGx5RGF0YSkKK3sKKyAgICBpZiAobVN0YXR1cyAhPSBOT19FUlJPUiAmJiBtU3RhdHVzICE9IEFMUkVBRFlfRVhJU1RTKSB7CisgICAgICAgIHJldHVybiBJTlZBTElEX09QRVJBVElPTjsKKyAgICB9CisKKyAgICByZXR1cm4gbUlFZmZlY3QtPmNvbW1hbmQoY21kQ29kZSwgY21kU2l6ZSwgY21kRGF0YSwgcmVwbHlTaXplLCByZXBseURhdGEpOworfQorCisKK3N0YXR1c190IEF1ZGlvRWZmZWN0OjpzZXRQYXJhbWV0ZXIoZWZmZWN0X3BhcmFtX3QgKnBhcmFtKQoreworICAgIGlmIChtU3RhdHVzICE9IE5PX0VSUk9SKSB7CisgICAgICAgIHJldHVybiBJTlZBTElEX09QRVJBVElPTjsKKyAgICB9CisKKyAgICBpZiAocGFyYW0gPT0gTlVMTCB8fCBwYXJhbS0+cHNpemUgPT0gMCB8fCBwYXJhbS0+dnNpemUgPT0gMCkgeworICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOworICAgIH0KKworICAgIGludCBzaXplID0gc2l6ZW9mKGludCk7CisgICAgaW50IHBzaXplID0gKChwYXJhbS0+cHNpemUgLSAxKSAvIHNpemVvZihpbnQpICsgMSkgKiBzaXplb2YoaW50KSArIHBhcmFtLT52c2l6ZTsKKworICAgIExPR1YoInNldFBhcmFtZXRlcjogcGFyYW06ICVkLCBwYXJhbTI6ICVkIiwgKihpbnQgKilwYXJhbS0+ZGF0YSwgKHBhcmFtLT5wc2l6ZSA9PSA4KSA/ICooKGludCAqKXBhcmFtLT5kYXRhICsgMSk6IC0xKTsKKworICAgIHJldHVybiBtSUVmZmVjdC0+Y29tbWFuZChFRkZFQ1RfQ01EX1NFVF9QQVJBTSwgc2l6ZW9mIChlZmZlY3RfcGFyYW1fdCkgKyBwc2l6ZSwgcGFyYW0sICZzaXplLCAmcGFyYW0tPnN0YXR1cyk7Cit9CisKK3N0YXR1c190IEF1ZGlvRWZmZWN0OjpzZXRQYXJhbWV0ZXJEZWZlcnJlZChlZmZlY3RfcGFyYW1fdCAqcGFyYW0pCit7CisgICAgaWYgKG1TdGF0dXMgIT0gTk9fRVJST1IpIHsKKyAgICAgICAgcmV0dXJuIElOVkFMSURfT1BFUkFUSU9OOworICAgIH0KKworICAgIGlmIChwYXJhbSA9PSBOVUxMIHx8IHBhcmFtLT5wc2l6ZSA9PSAwIHx8IHBhcmFtLT52c2l6ZSA9PSAwKSB7CisgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisgICAgfQorCisgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1DYmxrLT5sb2NrKTsKKworICAgIGludCBwc2l6ZSA9ICgocGFyYW0tPnBzaXplIC0gMSkgLyBzaXplb2YoaW50KSArIDEpICogc2l6ZW9mKGludCkgKyBwYXJhbS0+dnNpemU7CisgICAgaW50IHNpemUgPSAoKHNpemVvZihlZmZlY3RfcGFyYW1fdCkgKyBwc2l6ZSAtIDEpIC8gc2l6ZW9mKGludCkgKyAxKSAqIHNpemVvZihpbnQpOworCisgICAgaWYgKG1DYmxrLT5jbGllbnRJbmRleCArIHNpemUgPiBFRkZFQ1RfUEFSQU1fQlVGRkVSX1NJWkUpIHsKKyAgICAgICAgcmV0dXJuIE5PX01FTU9SWTsKKyAgICB9CisgICAgaW50ICpwID0gKGludCAqKShtQ2Jsay0+YnVmZmVyICsgbUNibGstPmNsaWVudEluZGV4KTsKKyAgICAqcCsrID0gc2l6ZTsKKyAgICBtZW1jcHkocCwgcGFyYW0sIHNpemVvZihlZmZlY3RfcGFyYW1fdCkgKyBwc2l6ZSk7CisgICAgbUNibGstPmNsaWVudEluZGV4ICs9IHNpemU7CisKKyAgICByZXR1cm4gTk9fRVJST1I7Cit9CisKK3N0YXR1c190IEF1ZGlvRWZmZWN0OjpzZXRQYXJhbWV0ZXJDb21taXQoKQoreworICAgIGlmIChtU3RhdHVzICE9IE5PX0VSUk9SKSB7CisgICAgICAgIHJldHVybiBJTlZBTElEX09QRVJBVElPTjsKKyAgICB9CisKKyAgICBNdXRleDo6QXV0b2xvY2sgX2wobUNibGstPmxvY2spOworICAgIGlmIChtQ2Jsay0+Y2xpZW50SW5kZXggPT0gMCkgeworICAgICAgICByZXR1cm4gSU5WQUxJRF9PUEVSQVRJT047CisgICAgfQorICAgIGludCBzaXplID0gMDsKKyAgICByZXR1cm4gbUlFZmZlY3QtPmNvbW1hbmQoRUZGRUNUX0NNRF9TRVRfUEFSQU1fQ09NTUlULCAwLCBOVUxMLCAmc2l6ZSwgTlVMTCk7Cit9CisKK3N0YXR1c190IEF1ZGlvRWZmZWN0OjpnZXRQYXJhbWV0ZXIoZWZmZWN0X3BhcmFtX3QgKnBhcmFtKQoreworICAgIGlmIChtU3RhdHVzICE9IE5PX0VSUk9SICYmIG1TdGF0dXMgIT0gQUxSRUFEWV9FWElTVFMpIHsKKyAgICAgICAgcmV0dXJuIElOVkFMSURfT1BFUkFUSU9OOworICAgIH0KKworICAgIGlmIChwYXJhbSA9PSBOVUxMIHx8IHBhcmFtLT5wc2l6ZSA9PSAwIHx8IHBhcmFtLT52c2l6ZSA9PSAwKSB7CisgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisgICAgfQorCisgICAgTE9HVigiZ2V0UGFyYW1ldGVyOiBwYXJhbTogJWQsIHBhcmFtMjogJWQiLCAqKGludCAqKXBhcmFtLT5kYXRhLCAocGFyYW0tPnBzaXplID09IDgpID8gKigoaW50ICopcGFyYW0tPmRhdGEgKyAxKTogLTEpOworCisgICAgaW50IHBzaXplID0gc2l6ZW9mKGVmZmVjdF9wYXJhbV90KSArICgocGFyYW0tPnBzaXplIC0gMSkgLyBzaXplb2YoaW50KSArIDEpICogc2l6ZW9mKGludCkgKyBwYXJhbS0+dnNpemU7CisKKyAgICByZXR1cm4gbUlFZmZlY3QtPmNvbW1hbmQoRUZGRUNUX0NNRF9HRVRfUEFSQU0sIHNpemVvZihlZmZlY3RfcGFyYW1fdCkgKyBwYXJhbS0+cHNpemUsIHBhcmFtLCAmcHNpemUsIHBhcmFtKTsKK30KKworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgQXVkaW9FZmZlY3Q6OmJpbmRlckRpZWQoKQoreworICAgIExPR1coIklFZmZlY3QgZGllZCIpOworICAgIG1TdGF0dXMgPSBOT19JTklUOworICAgIGlmIChtQ2JmKSB7CisgICAgICAgIHN0YXR1c190IHN0YXR1cyA9IERFQURfT0JKRUNUOworICAgICAgICBtQ2JmKEVWRU5UX0VSUk9SLCBtVXNlckRhdGEsICZzdGF0dXMpOworICAgIH0KKyAgICBtSUVmZmVjdC5jbGVhcigpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgQXVkaW9FZmZlY3Q6OmNvbnRyb2xTdGF0dXNDaGFuZ2VkKGJvb2wgY29udHJvbEdyYW50ZWQpCit7CisgICAgTE9HVigiY29udHJvbFN0YXR1c0NoYW5nZWQgJXAgY29udHJvbCAlZCBjYWxsYmFjayAlcCBtVXNlckRhdGEgJXAiLCB0aGlzLCBjb250cm9sR3JhbnRlZCwgbUNiZiwgbVVzZXJEYXRhKTsKKyAgICBpZiAoY29udHJvbEdyYW50ZWQpIHsKKyAgICAgICAgaWYgKG1TdGF0dXMgPT0gQUxSRUFEWV9FWElTVFMpIHsKKyAgICAgICAgICAgIG1TdGF0dXMgPSBOT19FUlJPUjsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChtU3RhdHVzID09IE5PX0VSUk9SKSB7CisgICAgICAgICAgICBtU3RhdHVzID0gQUxSRUFEWV9FWElTVFM7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKG1DYmYpIHsKKyAgICAgICAgbUNiZihFVkVOVF9DT05UUk9MX1NUQVRVU19DSEFOR0VELCBtVXNlckRhdGEsICZjb250cm9sR3JhbnRlZCk7CisgICAgfQorfQorCit2b2lkIEF1ZGlvRWZmZWN0OjplbmFibGVTdGF0dXNDaGFuZ2VkKGJvb2wgZW5hYmxlZCkKK3sKKyAgICBMT0dWKCJlbmFibGVTdGF0dXNDaGFuZ2VkICVwIGVuYWJsZWQgJWQgbUNiZiAlcCIsIHRoaXMsIGVuYWJsZWQsIG1DYmYpOworICAgIGlmIChtU3RhdHVzID09IEFMUkVBRFlfRVhJU1RTKSB7CisgICAgICAgIG1FbmFibGVkID0gZW5hYmxlZDsKKyAgICAgICAgaWYgKG1DYmYpIHsKKyAgICAgICAgICAgIG1DYmYoRVZFTlRfRU5BQkxFX1NUQVRVU19DSEFOR0VELCBtVXNlckRhdGEsICZlbmFibGVkKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBBdWRpb0VmZmVjdDo6Y29tbWFuZEV4ZWN1dGVkKGludCBjbWRDb2RlLCBpbnQgY21kU2l6ZSwgdm9pZCAqY21kRGF0YSwgaW50IHJlcGx5U2l6ZSwgdm9pZCAqcmVwbHlEYXRhKQoreworICAgIGlmIChjbWREYXRhID09IE5VTEwgfHwgcmVwbHlEYXRhID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtQ2JmICYmIGNtZENvZGUgPT0gRUZGRUNUX0NNRF9TRVRfUEFSQU0pIHsKKyAgICAgICAgZWZmZWN0X3BhcmFtX3QgKmNtZCA9IChlZmZlY3RfcGFyYW1fdCAqKWNtZERhdGE7CisgICAgICAgIGNtZC0+c3RhdHVzID0gKihpbnQzMl90ICopcmVwbHlEYXRhOworICAgICAgICBtQ2JmKEVWRU5UX1BBUkFNRVRFUl9DSEFOR0VELCBtVXNlckRhdGEsIGNtZCk7CisgICAgfQorfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3N0YXR1c190IEF1ZGlvRWZmZWN0Ojpsb2FkRWZmZWN0TGlicmFyeShjb25zdCBjaGFyICpsaWJQYXRoLCBpbnQgKmhhbmRsZSkKK3sKKyAgICBjb25zdCBzcDxJQXVkaW9GbGluZ2VyPiYgYWYgPSBBdWRpb1N5c3RlbTo6Z2V0X2F1ZGlvX2ZsaW5nZXIoKTsKKyAgICBpZiAoYWYgPT0gMCkgcmV0dXJuIFBFUk1JU1NJT05fREVOSUVEOworICAgIHJldHVybiBhZi0+bG9hZEVmZmVjdExpYnJhcnkobGliUGF0aCwgaGFuZGxlKTsKK30KKworc3RhdHVzX3QgQXVkaW9FZmZlY3Q6OnVubG9hZEVmZmVjdExpYnJhcnkoaW50IGhhbmRsZSkKK3sKKyAgICBjb25zdCBzcDxJQXVkaW9GbGluZ2VyPiYgYWYgPSBBdWRpb1N5c3RlbTo6Z2V0X2F1ZGlvX2ZsaW5nZXIoKTsKKyAgICBpZiAoYWYgPT0gMCkgcmV0dXJuIFBFUk1JU1NJT05fREVOSUVEOworICAgIHJldHVybiBhZi0+dW5sb2FkRWZmZWN0TGlicmFyeShoYW5kbGUpOworfQorCitzdGF0dXNfdCBBdWRpb0VmZmVjdDo6cXVlcnlOdW1iZXJFZmZlY3RzKHVpbnQzMl90ICpudW1FZmZlY3RzKQoreworICAgIGNvbnN0IHNwPElBdWRpb0ZsaW5nZXI+JiBhZiA9IEF1ZGlvU3lzdGVtOjpnZXRfYXVkaW9fZmxpbmdlcigpOworICAgIGlmIChhZiA9PSAwKSByZXR1cm4gUEVSTUlTU0lPTl9ERU5JRUQ7CisgICAgcmV0dXJuIGFmLT5xdWVyeU51bWJlckVmZmVjdHMobnVtRWZmZWN0cyk7Cit9CisKK3N0YXR1c190IEF1ZGlvRWZmZWN0OjpxdWVyeUVmZmVjdCh1aW50MzJfdCBpbmRleCwgZWZmZWN0X2Rlc2NyaXB0b3JfdCAqZGVzY3JpcHRvcikKK3sKKyAgICBjb25zdCBzcDxJQXVkaW9GbGluZ2VyPiYgYWYgPSBBdWRpb1N5c3RlbTo6Z2V0X2F1ZGlvX2ZsaW5nZXIoKTsKKyAgICBpZiAoYWYgPT0gMCkgcmV0dXJuIFBFUk1JU1NJT05fREVOSUVEOworICAgIHJldHVybiBhZi0+cXVlcnlFZmZlY3QoaW5kZXgsIGRlc2NyaXB0b3IpOworfQorCitzdGF0dXNfdCBBdWRpb0VmZmVjdDo6Z2V0RWZmZWN0RGVzY3JpcHRvcihlZmZlY3RfdXVpZF90ICp1dWlkLCBlZmZlY3RfZGVzY3JpcHRvcl90ICpkZXNjcmlwdG9yKQoreworICAgIGNvbnN0IHNwPElBdWRpb0ZsaW5nZXI+JiBhZiA9IEF1ZGlvU3lzdGVtOjpnZXRfYXVkaW9fZmxpbmdlcigpOworICAgIGlmIChhZiA9PSAwKSByZXR1cm4gUEVSTUlTU0lPTl9ERU5JRUQ7CisgICAgcmV0dXJuIGFmLT5nZXRFZmZlY3REZXNjcmlwdG9yKHV1aWQsIGRlc2NyaXB0b3IpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3N0YXR1c190IEF1ZGlvRWZmZWN0OjpzdHJpbmdUb0d1aWQoY29uc3QgY2hhciAqc3RyLCBlZmZlY3RfdXVpZF90ICpndWlkKQoreworICAgIGlmIChzdHIgPT0gTlVMTCB8fCBndWlkID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKyAgICB9CisKKyAgICBpbnQgdG1wWzEwXTsKKworICAgIGlmIChzc2NhbmYoc3RyLCAiJTA4eC0lMDR4LSUwNHgtJTA0eC0lMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMngiLAorICAgICAgICAgICAgdG1wLCB0bXArMSwgdG1wKzIsIHRtcCszLCB0bXArNCwgdG1wKzUsIHRtcCs2LCB0bXArNywgdG1wKzgsIHRtcCs5KSA8IDEwKSB7CisgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisgICAgfQorICAgIGd1aWQtPnRpbWVMb3cgPSAodWludDMyX3QpdG1wWzBdOworICAgIGd1aWQtPnRpbWVNaWQgPSAodWludDE2X3QpdG1wWzFdOworICAgIGd1aWQtPnRpbWVIaUFuZFZlcnNpb24gPSAodWludDE2X3QpdG1wWzJdOworICAgIGd1aWQtPmNsb2NrU2VxID0gKHVpbnQxNl90KXRtcFszXTsKKyAgICBndWlkLT5ub2RlWzBdID0gKHVpbnQ4X3QpdG1wWzRdOworICAgIGd1aWQtPm5vZGVbMV0gPSAodWludDhfdCl0bXBbNV07CisgICAgZ3VpZC0+bm9kZVsyXSA9ICh1aW50OF90KXRtcFs2XTsKKyAgICBndWlkLT5ub2RlWzNdID0gKHVpbnQ4X3QpdG1wWzddOworICAgIGd1aWQtPm5vZGVbNF0gPSAodWludDhfdCl0bXBbOF07CisgICAgZ3VpZC0+bm9kZVs1XSA9ICh1aW50OF90KXRtcFs5XTsKKworICAgIHJldHVybiBOT19FUlJPUjsKK30KKworc3RhdHVzX3QgQXVkaW9FZmZlY3Q6Omd1aWRUb1N0cmluZyhjb25zdCBlZmZlY3RfdXVpZF90ICpndWlkLCBjaGFyICpzdHIsIHNpemVfdCBtYXhMZW4pCit7CisgICAgaWYgKGd1aWQgPT0gTlVMTCB8fCBzdHIgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOworICAgIH0KKworICAgIHNucHJpbnRmKHN0ciwgbWF4TGVuLCAiJTA4eC0lMDR4LSUwNHgtJTA0eC0lMDJ4JTAyeCUwMnglMDJ4JTAyeCUwMngiLAorICAgICAgICAgICAgZ3VpZC0+dGltZUxvdywKKyAgICAgICAgICAgIGd1aWQtPnRpbWVNaWQsCisgICAgICAgICAgICBndWlkLT50aW1lSGlBbmRWZXJzaW9uLAorICAgICAgICAgICAgZ3VpZC0+Y2xvY2tTZXEsCisgICAgICAgICAgICBndWlkLT5ub2RlWzBdLAorICAgICAgICAgICAgZ3VpZC0+bm9kZVsxXSwKKyAgICAgICAgICAgIGd1aWQtPm5vZGVbMl0sCisgICAgICAgICAgICBndWlkLT5ub2RlWzNdLAorICAgICAgICAgICAgZ3VpZC0+bm9kZVs0XSwKKyAgICAgICAgICAgIGd1aWQtPm5vZGVbNV0pOworCisgICAgcmV0dXJuIE5PX0VSUk9SOworfQorCisKK307IC8vIG5hbWVzcGFjZSBhbmRyb2lkCisKZGlmZiAtLWdpdCBhL21lZGlhL2xpYm1lZGlhL0F1ZGlvUmVjb3JkLmNwcCBiL21lZGlhL2xpYm1lZGlhL0F1ZGlvUmVjb3JkLmNwcAppbmRleCBhZDAzN2Q2Li5hNmM1MTVjIDEwMDY0NAotLS0gYS9tZWRpYS9saWJtZWRpYS9BdWRpb1JlY29yZC5jcHAKKysrIGIvbWVkaWEvbGlibWVkaWEvQXVkaW9SZWNvcmQuY3BwCkBAIC00MSwxMSArNDEsNDMgQEAKICNkZWZpbmUgVU5MSUtFTFkoIGV4cCApICAgICAoX19idWlsdGluX2V4cGVjdCggKGV4cCkgIT0gMCwgZmFsc2UgKSkKIAogbmFtZXNwYWNlIGFuZHJvaWQgeworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIHN0YXRpYworc3RhdHVzX3QgQXVkaW9SZWNvcmQ6OmdldE1pbkZyYW1lQ291bnQoCisgICAgICAgIGludCogZnJhbWVDb3VudCwKKyAgICAgICAgdWludDMyX3Qgc2FtcGxlUmF0ZSwKKyAgICAgICAgaW50IGZvcm1hdCwKKyAgICAgICAgaW50IGNoYW5uZWxDb3VudCkKK3sKKyAgICBzaXplX3Qgc2l6ZSA9IDA7CisgICAgaWYgKEF1ZGlvU3lzdGVtOjpnZXRJbnB1dEJ1ZmZlclNpemUoc2FtcGxlUmF0ZSwgZm9ybWF0LCBjaGFubmVsQ291bnQsICZzaXplKQorICAgICAgICAgICAgIT0gTk9fRVJST1IpIHsKKyAgICAgICAgTE9HRSgiQXVkaW9TeXN0ZW0gY291bGQgbm90IHF1ZXJ5IHRoZSBpbnB1dCBidWZmZXIgc2l6ZS4iKTsKKyAgICAgICAgcmV0dXJuIE5PX0lOSVQ7CisgICAgfQorCisgICAgaWYgKHNpemUgPT0gMCkgeworICAgICAgICBMT0dFKCJVbnN1cHBvcnRlZCBjb25maWd1cmF0aW9uOiBzYW1wbGVSYXRlICVkLCBmb3JtYXQgJWQsIGNoYW5uZWxDb3VudCAlZCIsCisgICAgICAgICAgICBzYW1wbGVSYXRlLCBmb3JtYXQsIGNoYW5uZWxDb3VudCk7CisgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisgICAgfQorCisgICAgLy8gV2UgZG91YmxlIHRoZSBzaXplIG9mIGlucHV0IGJ1ZmZlciBmb3IgcGluZyBwb25nIHVzZSBvZiByZWNvcmQgYnVmZmVyLgorICAgIHNpemUgPDw9IDE7CisKKyAgICBpZiAoQXVkaW9TeXN0ZW06OmlzTGluZWFyUENNKGZvcm1hdCkpIHsKKyAgICAgICAgc2l6ZSAvPSBjaGFubmVsQ291bnQgKiAoZm9ybWF0ID09IEF1ZGlvU3lzdGVtOjpQQ01fMTZfQklUID8gMiA6IDEpOworICAgIH0KKworICAgICpmcmFtZUNvdW50ID0gc2l6ZTsKKyAgICByZXR1cm4gTk9fRVJST1I7Cit9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBBdWRpb1JlY29yZDo6QXVkaW9SZWNvcmQoKQotICAgIDogbVN0YXR1cyhOT19JTklUKQorICAgIDogbVN0YXR1cyhOT19JTklUKSwgbVNlc3Npb25JZCgwKQogewogfQogCkBAIC01OCwxMSArOTAsMTIgQEAKICAgICAgICAgdWludDMyX3QgZmxhZ3MsCiAgICAgICAgIGNhbGxiYWNrX3QgY2JmLAogICAgICAgICB2b2lkKiB1c2VyLAotICAgICAgICBpbnQgbm90aWZpY2F0aW9uRnJhbWVzKQotICAgIDogbVN0YXR1cyhOT19JTklUKQorICAgICAgICBpbnQgbm90aWZpY2F0aW9uRnJhbWVzLAorICAgICAgICBpbnQgc2Vzc2lvbklkKQorICAgIDogbVN0YXR1cyhOT19JTklUKSwgbVNlc3Npb25JZCgwKQogewogICAgIG1TdGF0dXMgPSBzZXQoaW5wdXRTb3VyY2UsIHNhbXBsZVJhdGUsIGZvcm1hdCwgY2hhbm5lbHMsCi0gICAgICAgICAgICBmcmFtZUNvdW50LCBmbGFncywgY2JmLCB1c2VyLCBub3RpZmljYXRpb25GcmFtZXMpOworICAgICAgICAgICAgZnJhbWVDb3VudCwgZmxhZ3MsIGNiZiwgdXNlciwgbm90aWZpY2F0aW9uRnJhbWVzLCBzZXNzaW9uSWQpOwogfQogCiBBdWRpb1JlY29yZDo6fkF1ZGlvUmVjb3JkKCkKQEAgLTkxLDcgKzEyNCw4IEBACiAgICAgICAgIGNhbGxiYWNrX3QgY2JmLAogICAgICAgICB2b2lkKiB1c2VyLAogICAgICAgICBpbnQgbm90aWZpY2F0aW9uRnJhbWVzLAotICAgICAgICBib29sIHRocmVhZENhbkNhbGxKYXZhKQorICAgICAgICBib29sIHRocmVhZENhbkNhbGxKYXZhLAorICAgICAgICBpbnQgc2Vzc2lvbklkKQogewogCiAgICAgTE9HVigic2V0KCk6IHNhbXBsZVJhdGUgJWQsIGNoYW5uZWxzICVkLCBmcmFtZUNvdW50ICVkIixzYW1wbGVSYXRlLCBjaGFubmVscywgZnJhbWVDb3VudCk7CkBAIC0xMTksNiArMTUzLDcgQEAKICAgICBpZiAoIUF1ZGlvU3lzdGVtOjppc0lucHV0Q2hhbm5lbChjaGFubmVscykpIHsKICAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKICAgICB9CisKICAgICBpbnQgY2hhbm5lbENvdW50ID0gQXVkaW9TeXN0ZW06OnBvcENvdW50KGNoYW5uZWxzKTsKIAogICAgIGF1ZGlvX2lvX2hhbmRsZV90IGlucHV0ID0gQXVkaW9TeXN0ZW06OmdldElucHV0KGlucHV0U291cmNlLApAQCAtMTI5LDI5ICsxNjQsMTEgQEAKICAgICB9CiAKICAgICAvLyB2YWxpZGF0ZSBmcmFtZWNvdW50Ci0gICAgc2l6ZV90IGlucHV0QnVmZlNpemVJbkJ5dGVzID0gLTE7Ci0gICAgaWYgKEF1ZGlvU3lzdGVtOjpnZXRJbnB1dEJ1ZmZlclNpemUoc2FtcGxlUmF0ZSwgZm9ybWF0LCBjaGFubmVsQ291bnQsICZpbnB1dEJ1ZmZTaXplSW5CeXRlcykKLSAgICAgICAgICAgICE9IE5PX0VSUk9SKSB7Ci0gICAgICAgIExPR0UoIkF1ZGlvU3lzdGVtIGNvdWxkIG5vdCBxdWVyeSB0aGUgaW5wdXQgYnVmZmVyIHNpemUuIik7Ci0gICAgICAgIHJldHVybiBOT19JTklUOworICAgIGludCBtaW5GcmFtZUNvdW50ID0gMDsKKyAgICBzdGF0dXNfdCBzdGF0dXMgPSBnZXRNaW5GcmFtZUNvdW50KCZtaW5GcmFtZUNvdW50LCBzYW1wbGVSYXRlLCBmb3JtYXQsIGNoYW5uZWxDb3VudCk7CisgICAgaWYgKHN0YXR1cyAhPSBOT19FUlJPUikgeworICAgICAgICByZXR1cm4gc3RhdHVzOwogICAgIH0KLQotICAgIGlmIChpbnB1dEJ1ZmZTaXplSW5CeXRlcyA9PSAwKSB7Ci0gICAgICAgIExPR0UoIlJlY29yZGluZyBwYXJhbWV0ZXJzIGFyZSBub3Qgc3VwcG9ydGVkOiBzYW1wbGVSYXRlICVkLCBjaGFubmVsQ291bnQgJWQsIGZvcm1hdCAlZCIsCi0gICAgICAgICAgICBzYW1wbGVSYXRlLCBjaGFubmVsQ291bnQsIGZvcm1hdCk7Ci0gICAgICAgIHJldHVybiBCQURfVkFMVUU7Ci0gICAgfQotCi0gICAgaW50IGZyYW1lU2l6ZUluQnl0ZXMgPSBjaGFubmVsQ291bnQgKiAoZm9ybWF0ID09IEF1ZGlvU3lzdGVtOjpQQ01fMTZfQklUID8gMiA6IDEpOwotICAgIGlmIChBdWRpb1N5c3RlbTo6aXNMaW5lYXJQQ00oZm9ybWF0KSkgewotICAgICAgICBmcmFtZVNpemVJbkJ5dGVzID0gY2hhbm5lbENvdW50ICogKGZvcm1hdCA9PSBBdWRpb1N5c3RlbTo6UENNXzE2X0JJVCA/IHNpemVvZihpbnQxNl90KSA6IHNpemVvZihpbnQ4X3QpKTsKLSAgICB9IGVsc2UgewotICAgICAgICBmcmFtZVNpemVJbkJ5dGVzID0gc2l6ZW9mKGludDhfdCk7Ci0gICAgfQotCi0KLSAgICAvLyBXZSB1c2UgMiogc2l6ZSBvZiBpbnB1dCBidWZmZXIgZm9yIHBpbmcgcG9uZyB1c2Ugb2YgcmVjb3JkIGJ1ZmZlci4KLSAgICBpbnQgbWluRnJhbWVDb3VudCA9IDIgKiBpbnB1dEJ1ZmZTaXplSW5CeXRlcyAvIGZyYW1lU2l6ZUluQnl0ZXM7CiAgICAgTE9HVigiQXVkaW9SZWNvcmQ6OnNldCgpIG1pbkZyYW1lQ291bnQgPSAlZCIsIG1pbkZyYW1lQ291bnQpOwogCiAgICAgaWYgKGZyYW1lQ291bnQgPT0gMCkgewpAQCAtMTY0LDEwICsxODEsMTEgQEAKICAgICAgICAgbm90aWZpY2F0aW9uRnJhbWVzID0gZnJhbWVDb3VudC8yOwogICAgIH0KIAotICAgIC8vIGNyZWF0ZSB0aGUgSUF1ZGlvUmVjb3JkCi0gICAgc3RhdHVzX3Qgc3RhdHVzID0gb3BlblJlY29yZChzYW1wbGVSYXRlLCBmb3JtYXQsIGNoYW5uZWxDb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lQ291bnQsIGZsYWdzLCBpbnB1dCk7CisgICAgbVNlc3Npb25JZCA9IHNlc3Npb25JZDsKIAorICAgIC8vIGNyZWF0ZSB0aGUgSUF1ZGlvUmVjb3JkCisgICAgc3RhdHVzID0gb3BlblJlY29yZChzYW1wbGVSYXRlLCBmb3JtYXQsIGNoYW5uZWxDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lQ291bnQsIGZsYWdzLCBpbnB1dCk7CiAgICAgaWYgKHN0YXR1cyAhPSBOT19FUlJPUikgewogICAgICAgICByZXR1cm4gc3RhdHVzOwogICAgIH0KQEAgLTQxNCw2ICs0MzIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5uZWxDb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZUNvdW50LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgodWludDE2X3QpZmxhZ3MpIDw8IDE2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtU2Vzc2lvbklkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGF0dXMpOwogICAgIGlmIChyZWNvcmQgPT0gMCkgewogICAgICAgICBMT0dFKCJBdWRpb0ZsaW5nZXIgY291bGQgbm90IGNyZWF0ZSByZWNvcmQgdHJhY2ssIHN0YXR1czogJWQiLCBzdGF0dXMpOwpAQCAtNDMwLDcgKzQ0OSw3IEBACiAgICAgbUNibGtNZW1vcnkgPSBjYmxrOwogICAgIG1DYmxrID0gc3RhdGljX2Nhc3Q8YXVkaW9fdHJhY2tfY2Jsa190Kj4oY2Jsay0+cG9pbnRlcigpKTsKICAgICBtQ2Jsay0+YnVmZmVycyA9IChjaGFyKiltQ2JsayArIHNpemVvZihhdWRpb190cmFja19jYmxrX3QpOwotICAgIG1DYmxrLT5vdXQgPSAwOworICAgIG1DYmxrLT5mbGFncyAmPSB+Q0JMS19ESVJFQ1RJT05fTVNLOwogICAgIG1DYmxrLT5idWZmZXJUaW1lb3V0TXMgPSBNQVhfUlVOX1RJTUVPVVRfTVM7CiAgICAgbUNibGstPndhaXRUaW1lTXMgPSAwOwogICAgIHJldHVybiBOT19FUlJPUjsKQEAgLTUzMiw2ICs1NTEsMTEgQEAKICAgICByZXR1cm4gbUlucHV0OwogfQogCitpbnQgQXVkaW9SZWNvcmQ6OmdldFNlc3Npb25JZCgpCit7CisgICAgcmV0dXJuIG1TZXNzaW9uSWQ7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogc3NpemVfdCBBdWRpb1JlY29yZDo6cmVhZCh2b2lkKiBidWZmZXIsIHNpemVfdCB1c2VyU2l6ZSkKQEAgLTY0NCwxMCArNjY4LDEwIEBACiAKICAgICAvLyBNYW5hZ2Ugb3ZlcnJ1biBjYWxsYmFjawogICAgIGlmIChtQWN0aXZlICYmIChtQ2Jsay0+ZnJhbWVzQXZhaWxhYmxlX2woKSA9PSAwKSkgewotICAgICAgICBMT0dWKCJPdmVycnVuIHVzZXI6ICV4LCBzZXJ2ZXI6ICV4LCBmbG93Q29udHJvbEZsYWcgJWQiLCBtQ2Jsay0+dXNlciwgbUNibGstPnNlcnZlciwgbUNibGstPmZsb3dDb250cm9sRmxhZyk7Ci0gICAgICAgIGlmIChtQ2Jsay0+Zmxvd0NvbnRyb2xGbGFnID09IDApIHsKKyAgICAgICAgTE9HVigiT3ZlcnJ1biB1c2VyOiAleCwgc2VydmVyOiAleCwgZmxhZ3MgJTA0eCIsIG1DYmxrLT51c2VyLCBtQ2Jsay0+c2VydmVyLCBtQ2Jsay0+ZmxhZ3MpOworICAgICAgICBpZiAoKG1DYmxrLT5mbGFncyAmIENCTEtfVU5ERVJSVU5fTVNLKSA9PSBDQkxLX1VOREVSUlVOX09GRikgewogICAgICAgICAgICAgbUNiZihFVkVOVF9PVkVSUlVOLCBtVXNlckRhdGEsIDApOwotICAgICAgICAgICAgbUNibGstPmZsb3dDb250cm9sRmxhZyA9IDE7CisgICAgICAgICAgICBtQ2Jsay0+ZmxhZ3MgfD0gQ0JMS19VTkRFUlJVTl9PTjsKICAgICAgICAgfQogICAgIH0KIApkaWZmIC0tZ2l0IGEvbWVkaWEvbGlibWVkaWEvQXVkaW9TeXN0ZW0uY3BwIGIvbWVkaWEvbGlibWVkaWEvQXVkaW9TeXN0ZW0uY3BwCmluZGV4IDVlNmNlNDIuLmM3N2Y1NTEgMTAwNjQ0Ci0tLSBhL21lZGlhL2xpYm1lZGlhL0F1ZGlvU3lzdGVtLmNwcAorKysgYi9tZWRpYS9saWJtZWRpYS9BdWRpb1N5c3RlbS5jcHAKQEAgLTM2NCw2ICszNjQsMTIgQEAKICAgICByZXR1cm4gcmVzdWx0OwogfQogCitpbnQgQXVkaW9TeXN0ZW06Om5ld0F1ZGlvU2Vzc2lvbklkKCkgeworICAgIGNvbnN0IHNwPElBdWRpb0ZsaW5nZXI+JiBhZiA9IEF1ZGlvU3lzdGVtOjpnZXRfYXVkaW9fZmxpbmdlcigpOworICAgIGlmIChhZiA9PSAwKSByZXR1cm4gMDsKKyAgICByZXR1cm4gYWYtPm5ld0F1ZGlvU2Vzc2lvbklkKCk7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiB2b2lkIEF1ZGlvU3lzdGVtOjpBdWRpb0ZsaW5nZXJDbGllbnQ6OmJpbmRlckRpZWQoY29uc3Qgd3A8SUJpbmRlcj4mIHdobykgewpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlibWVkaWEvQXVkaW9UcmFjay5jcHAgYi9tZWRpYS9saWJtZWRpYS9BdWRpb1RyYWNrLmNwcAppbmRleCBjZDdiY2Q1Li4wZjIwOTNhIDEwMDY0NAotLS0gYS9tZWRpYS9saWJtZWRpYS9BdWRpb1RyYWNrLmNwcAorKysgYi9tZWRpYS9saWJtZWRpYS9BdWRpb1RyYWNrLmNwcApAQCAtNDEsNiArNDEsMzUgQEAKICNkZWZpbmUgVU5MSUtFTFkoIGV4cCApICAgICAoX19idWlsdGluX2V4cGVjdCggKGV4cCkgIT0gMCwgZmFsc2UgKSkKIAogbmFtZXNwYWNlIGFuZHJvaWQgeworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy8vIHN0YXRpYworc3RhdHVzX3QgQXVkaW9UcmFjazo6Z2V0TWluRnJhbWVDb3VudCgKKyAgICAgICAgaW50KiBmcmFtZUNvdW50LAorICAgICAgICBpbnQgc3RyZWFtVHlwZSwKKyAgICAgICAgdWludDMyX3Qgc2FtcGxlUmF0ZSkKK3sKKyAgICBpbnQgYWZTYW1wbGVSYXRlOworICAgIGlmIChBdWRpb1N5c3RlbTo6Z2V0T3V0cHV0U2FtcGxpbmdSYXRlKCZhZlNhbXBsZVJhdGUsIHN0cmVhbVR5cGUpICE9IE5PX0VSUk9SKSB7CisgICAgICAgIHJldHVybiBOT19JTklUOworICAgIH0KKyAgICBpbnQgYWZGcmFtZUNvdW50OworICAgIGlmIChBdWRpb1N5c3RlbTo6Z2V0T3V0cHV0RnJhbWVDb3VudCgmYWZGcmFtZUNvdW50LCBzdHJlYW1UeXBlKSAhPSBOT19FUlJPUikgeworICAgICAgICByZXR1cm4gTk9fSU5JVDsKKyAgICB9CisgICAgdWludDMyX3QgYWZMYXRlbmN5OworICAgIGlmIChBdWRpb1N5c3RlbTo6Z2V0T3V0cHV0TGF0ZW5jeSgmYWZMYXRlbmN5LCBzdHJlYW1UeXBlKSAhPSBOT19FUlJPUikgeworICAgICAgICByZXR1cm4gTk9fSU5JVDsKKyAgICB9CisKKyAgICAvLyBFbnN1cmUgdGhhdCBidWZmZXIgZGVwdGggY292ZXJzIGF0IGxlYXN0IGF1ZGlvIGhhcmR3YXJlIGxhdGVuY3kKKyAgICB1aW50MzJfdCBtaW5CdWZDb3VudCA9IGFmTGF0ZW5jeSAvICgoMTAwMCAqIGFmRnJhbWVDb3VudCkgLyBhZlNhbXBsZVJhdGUpOworICAgIGlmIChtaW5CdWZDb3VudCA8IDIpIG1pbkJ1ZkNvdW50ID0gMjsKKworICAgICpmcmFtZUNvdW50ID0gKHNhbXBsZVJhdGUgPT0gMCkgPyBhZkZyYW1lQ291bnQgKiBtaW5CdWZDb3VudCA6CisgICAgICAgICAgICAgIGFmRnJhbWVDb3VudCAqIG1pbkJ1ZkNvdW50ICogc2FtcGxlUmF0ZSAvIGFmU2FtcGxlUmF0ZTsKKyAgICByZXR1cm4gTk9fRVJST1I7Cit9CiAKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCkBAIC01OCwxMSArODcsMTMgQEAKICAgICAgICAgdWludDMyX3QgZmxhZ3MsCiAgICAgICAgIGNhbGxiYWNrX3QgY2JmLAogICAgICAgICB2b2lkKiB1c2VyLAotICAgICAgICBpbnQgbm90aWZpY2F0aW9uRnJhbWVzKQorICAgICAgICBpbnQgbm90aWZpY2F0aW9uRnJhbWVzLAorICAgICAgICBpbnQgc2Vzc2lvbklkKQogICAgIDogbVN0YXR1cyhOT19JTklUKQogewogICAgIG1TdGF0dXMgPSBzZXQoc3RyZWFtVHlwZSwgc2FtcGxlUmF0ZSwgZm9ybWF0LCBjaGFubmVscywKLSAgICAgICAgICAgIGZyYW1lQ291bnQsIGZsYWdzLCBjYmYsIHVzZXIsIG5vdGlmaWNhdGlvbkZyYW1lcywgMCk7CisgICAgICAgICAgICBmcmFtZUNvdW50LCBmbGFncywgY2JmLCB1c2VyLCBub3RpZmljYXRpb25GcmFtZXMsCisgICAgICAgICAgICAwLCBmYWxzZSwgc2Vzc2lvbklkKTsKIH0KIAogQXVkaW9UcmFjazo6QXVkaW9UcmFjaygKQEAgLTc0LDExICsxMDUsMTMgQEAKICAgICAgICAgdWludDMyX3QgZmxhZ3MsCiAgICAgICAgIGNhbGxiYWNrX3QgY2JmLAogICAgICAgICB2b2lkKiB1c2VyLAotICAgICAgICBpbnQgbm90aWZpY2F0aW9uRnJhbWVzKQorICAgICAgICBpbnQgbm90aWZpY2F0aW9uRnJhbWVzLAorICAgICAgICBpbnQgc2Vzc2lvbklkKQogICAgIDogbVN0YXR1cyhOT19JTklUKQogewogICAgIG1TdGF0dXMgPSBzZXQoc3RyZWFtVHlwZSwgc2FtcGxlUmF0ZSwgZm9ybWF0LCBjaGFubmVscywKLSAgICAgICAgICAgIDAsIGZsYWdzLCBjYmYsIHVzZXIsIG5vdGlmaWNhdGlvbkZyYW1lcywgc2hhcmVkQnVmZmVyKTsKKyAgICAgICAgICAgIDAsIGZsYWdzLCBjYmYsIHVzZXIsIG5vdGlmaWNhdGlvbkZyYW1lcywKKyAgICAgICAgICAgIHNoYXJlZEJ1ZmZlciwgZmFsc2UsIHNlc3Npb25JZCk7CiB9CiAKIEF1ZGlvVHJhY2s6On5BdWRpb1RyYWNrKCkKQEAgLTExMCw3ICsxNDMsOCBAQAogICAgICAgICB2b2lkKiB1c2VyLAogICAgICAgICBpbnQgbm90aWZpY2F0aW9uRnJhbWVzLAogICAgICAgICBjb25zdCBzcDxJTWVtb3J5PiYgc2hhcmVkQnVmZmVyLAotICAgICAgICBib29sIHRocmVhZENhbkNhbGxKYXZhKQorICAgICAgICBib29sIHRocmVhZENhbkNhbGxKYXZhLAorICAgICAgICBpbnQgc2Vzc2lvbklkKQogewogCiAgICAgTE9HVl9JRihzaGFyZWRCdWZmZXIgIT0gMCwgInNoYXJlZEJ1ZmZlcjogJXAsIHNpemU6ICVkIiwgc2hhcmVkQnVmZmVyLT5wb2ludGVyKCksIHNoYXJlZEJ1ZmZlci0+c2l6ZSgpKTsKQEAgLTEyNCwxMCArMTU4LDYgQEAKICAgICBpZiAoQXVkaW9TeXN0ZW06OmdldE91dHB1dFNhbXBsaW5nUmF0ZSgmYWZTYW1wbGVSYXRlLCBzdHJlYW1UeXBlKSAhPSBOT19FUlJPUikgewogICAgICAgICByZXR1cm4gTk9fSU5JVDsKICAgICB9Ci0gICAgaW50IGFmRnJhbWVDb3VudDsKLSAgICBpZiAoQXVkaW9TeXN0ZW06OmdldE91dHB1dEZyYW1lQ291bnQoJmFmRnJhbWVDb3VudCwgc3RyZWFtVHlwZSkgIT0gTk9fRVJST1IpIHsKLSAgICAgICAgcmV0dXJuIE5PX0lOSVQ7Ci0gICAgfQogICAgIHVpbnQzMl90IGFmTGF0ZW5jeTsKICAgICBpZiAoQXVkaW9TeXN0ZW06OmdldE91dHB1dExhdGVuY3koJmFmTGF0ZW5jeSwgc3RyZWFtVHlwZSkgIT0gTk9fRVJST1IpIHsKICAgICAgICAgcmV0dXJuIE5PX0lOSVQ7CkBAIC0xNzMsNDggKzIwMywxNiBAQAogICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOwogICAgIH0KIAotICAgIGlmICghQXVkaW9TeXN0ZW06OmlzTGluZWFyUENNKGZvcm1hdCkpIHsKLSAgICAgICAgaWYgKHNoYXJlZEJ1ZmZlciAhPSAwKSB7Ci0gICAgICAgICAgICBmcmFtZUNvdW50ID0gc2hhcmVkQnVmZmVyLT5zaXplKCk7Ci0gICAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgICAvLyBFbnN1cmUgdGhhdCBidWZmZXIgZGVwdGggY292ZXJzIGF0IGxlYXN0IGF1ZGlvIGhhcmR3YXJlIGxhdGVuY3kKLSAgICAgICAgdWludDMyX3QgbWluQnVmQ291bnQgPSBhZkxhdGVuY3kgLyAoKDEwMDAgKiBhZkZyYW1lQ291bnQpL2FmU2FtcGxlUmF0ZSk7Ci0gICAgICAgIGlmIChtaW5CdWZDb3VudCA8IDIpIG1pbkJ1ZkNvdW50ID0gMjsKLQotICAgICAgICBpbnQgbWluRnJhbWVDb3VudCA9IChhZkZyYW1lQ291bnQqc2FtcGxlUmF0ZSptaW5CdWZDb3VudCkvYWZTYW1wbGVSYXRlOwotCi0gICAgICAgIGlmIChzaGFyZWRCdWZmZXIgPT0gMCkgewotICAgICAgICAgICAgaWYgKGZyYW1lQ291bnQgPT0gMCkgewotICAgICAgICAgICAgICAgIGZyYW1lQ291bnQgPSBtaW5GcmFtZUNvdW50OwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG5vdGlmaWNhdGlvbkZyYW1lcyA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgbm90aWZpY2F0aW9uRnJhbWVzID0gZnJhbWVDb3VudC8yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHRoYXQgYXBwbGljYXRpb24gaXMgbm90aWZpZWQgd2l0aCBzdWZmaWNpZW50IG1hcmdpbgotICAgICAgICAgICAgLy8gYmVmb3JlIHVuZGVycnVuCi0gICAgICAgICAgICBpZiAobm90aWZpY2F0aW9uRnJhbWVzID4gZnJhbWVDb3VudC8yKSB7Ci0gICAgICAgICAgICAgICAgbm90aWZpY2F0aW9uRnJhbWVzID0gZnJhbWVDb3VudC8yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGZyYW1lQ291bnQgPCBtaW5GcmFtZUNvdW50KSB7Ci0gICAgICAgICAgICAgIExPR0UoIkludmFsaWQgYnVmZmVyIHNpemU6IG1pbkZyYW1lQ291bnQgJWQsIGZyYW1lQ291bnQgJWQiLCBtaW5GcmFtZUNvdW50LCBmcmFtZUNvdW50KTsKLSAgICAgICAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIEVuc3VyZSB0aGF0IGJ1ZmZlciBhbGlnbm1lbnQgbWF0Y2hlcyBjaGFubmVsY291bnQKLSAgICAgICAgICAgIGlmICgoKHVpbnQzMl90KXNoYXJlZEJ1ZmZlci0+cG9pbnRlcigpICYgKGNoYW5uZWxDb3VudCB8IDEpKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgTE9HRSgiSW52YWxpZCBidWZmZXIgYWxpZ25lbWVudDogYWRkcmVzcyAlcCwgY2hhbm5lbENvdW50ICVkIiwgc2hhcmVkQnVmZmVyLT5wb2ludGVyKCksIGNoYW5uZWxDb3VudCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZyYW1lQ291bnQgPSBzaGFyZWRCdWZmZXItPnNpemUoKS9jaGFubmVsQ291bnQvc2l6ZW9mKGludDE2X3QpOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgbVZvbHVtZVtMRUZUXSA9IDEuMGY7CiAgICAgbVZvbHVtZVtSSUdIVF0gPSAxLjBmOworICAgIG1TZW5kTGV2ZWwgPSAwOworICAgIG1GcmFtZUNvdW50ID0gZnJhbWVDb3VudDsKKyAgICBtTm90aWZpY2F0aW9uRnJhbWVzUmVxID0gbm90aWZpY2F0aW9uRnJhbWVzOworICAgIG1TZXNzaW9uSWQgPSBzZXNzaW9uSWQ7CisKICAgICAvLyBjcmVhdGUgdGhlIElBdWRpb1RyYWNrCiAgICAgc3RhdHVzX3Qgc3RhdHVzID0gY3JlYXRlVHJhY2soc3RyZWFtVHlwZSwgc2FtcGxlUmF0ZSwgZm9ybWF0LCBjaGFubmVsQ291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVDb3VudCwgZmxhZ3MsIHNoYXJlZEJ1ZmZlciwgb3V0cHV0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcmFtZUNvdW50LCBmbGFncywgc2hhcmVkQnVmZmVyLCBvdXRwdXQsIHRydWUpOwogCiAgICAgaWYgKHN0YXR1cyAhPSBOT19FUlJPUikgewogICAgICAgICByZXR1cm4gc3RhdHVzOwpAQCAtMjM4LDEwICsyMzYsNyBAQAogICAgIG1NdXRlZCA9IGZhbHNlOwogICAgIG1BY3RpdmUgPSAwOwogICAgIG1DYmYgPSBjYmY7Ci0gICAgbU5vdGlmaWNhdGlvbkZyYW1lcyA9IG5vdGlmaWNhdGlvbkZyYW1lczsKLSAgICBtUmVtYWluaW5nRnJhbWVzID0gbm90aWZpY2F0aW9uRnJhbWVzOwogICAgIG1Vc2VyRGF0YSA9IHVzZXI7Ci0gICAgbUxhdGVuY3kgPSBhZkxhdGVuY3kgKyAoMTAwMCptRnJhbWVDb3VudCkgLyBzYW1wbGVSYXRlOwogICAgIG1Mb29wQ291bnQgPSAwOwogICAgIG1NYXJrZXJQb3NpdGlvbiA9IDA7CiAgICAgbU1hcmtlclJlYWNoZWQgPSBmYWxzZTsKQEAgLTI4MSw3ICsyNzYsNyBAQAogCiB1aW50MzJfdCBBdWRpb1RyYWNrOjpmcmFtZUNvdW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbUZyYW1lQ291bnQ7CisgICAgcmV0dXJuIG1DYmxrLT5mcmFtZUNvdW50OwogfQogCiBpbnQgQXVkaW9UcmFjazo6ZnJhbWVTaXplKCkgY29uc3QKQEAgLTMwMyw2ICsyOTgsNyBAQAogdm9pZCBBdWRpb1RyYWNrOjpzdGFydCgpCiB7CiAgICAgc3A8QXVkaW9UcmFja1RocmVhZD4gdCA9IG1BdWRpb1RyYWNrVGhyZWFkOworICAgIHN0YXR1c190IHN0YXR1czsKIAogICAgIExPR1YoInN0YXJ0ICVwIiwgdGhpcyk7CiAgICAgaWYgKHQgIT0gMCkgewpAQCAtMzI1LDExICszMjEsMTggQEAKICAgICAgICAgICAgIHNldHByaW9yaXR5KFBSSU9fUFJPQ0VTUywgMCwgVEhSRUFEX1BSSU9SSVRZX0FVRElPX0NMSUVOVCk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0dXNfdCBzdGF0dXMgPSBtQXVkaW9UcmFjay0+c3RhcnQoKTsKKyAgICAgICAgaWYgKG1DYmxrLT5mbGFncyAmIENCTEtfSU5WQUxJRF9NU0spIHsKKyAgICAgICAgICAgIExPR1coInN0YXJ0KCkgdHJhY2sgJXAgaW52YWxpZGF0ZWQsIGNyZWF0aW5nIGEgbmV3IG9uZSIsIHRoaXMpOworICAgICAgICAgICAgLy8gbm8gbmVlZCB0byBjbGVhciB0aGUgaW52YWxpZCBmbGFnIGFzIHRoaXMgY2JsayB3aWxsIG5vdCBiZSB1c2VkIGFueW1vcmUKKyAgICAgICAgICAgIC8vIGZvcmNlIG5ldyB0cmFjayBjcmVhdGlvbgorICAgICAgICAgICAgc3RhdHVzID0gREVBRF9PQkpFQ1Q7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzdGF0dXMgPSBtQXVkaW9UcmFjay0+c3RhcnQoKTsKKyAgICAgICAgfQogICAgICAgICBpZiAoc3RhdHVzID09IERFQURfT0JKRUNUKSB7CiAgICAgICAgICAgICBMT0dWKCJzdGFydCgpIGRlYWQgSUF1ZGlvVHJhY2s6IGNyZWF0aW5nIGEgbmV3IG9uZSIpOwogICAgICAgICAgICAgc3RhdHVzID0gY3JlYXRlVHJhY2sobVN0cmVhbVR5cGUsIG1DYmxrLT5zYW1wbGVSYXRlLCBtRm9ybWF0LCBtQ2hhbm5lbENvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUZyYW1lQ291bnQsIG1GbGFncywgbVNoYXJlZEJ1ZmZlciwgZ2V0T3V0cHV0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUZyYW1lQ291bnQsIG1GbGFncywgbVNoYXJlZEJ1ZmZlciwgZ2V0T3V0cHV0KCksIGZhbHNlKTsKICAgICAgICAgICAgIGlmIChzdGF0dXMgPT0gTk9fRVJST1IpIHsKICAgICAgICAgICAgICAgICBzdGF0dXMgPSBtQXVkaW9UcmFjay0+c3RhcnQoKTsKICAgICAgICAgICAgICAgICBpZiAoc3RhdHVzID09IE5PX0VSUk9SKSB7CkBAIC00MzAsMTkgKzQzMyw0OSBAQAogICAgIHJldHVybiBtTXV0ZWQ7CiB9CiAKLXZvaWQgQXVkaW9UcmFjazo6c2V0Vm9sdW1lKGZsb2F0IGxlZnQsIGZsb2F0IHJpZ2h0KQorc3RhdHVzX3QgQXVkaW9UcmFjazo6c2V0Vm9sdW1lKGZsb2F0IGxlZnQsIGZsb2F0IHJpZ2h0KQogeworICAgIGlmIChsZWZ0ID4gMS4wZiB8fCByaWdodCA+IDEuMGYpIHsKKyAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKyAgICB9CisKICAgICBtVm9sdW1lW0xFRlRdID0gbGVmdDsKICAgICBtVm9sdW1lW1JJR0hUXSA9IHJpZ2h0OwogCiAgICAgLy8gd3JpdGUgbXVzdCBiZSBhdG9taWMKLSAgICBtQ2Jsay0+dm9sdW1lTFIgPSAoaW50MzJfdChpbnQxNl90KGxlZnQgKiAweDEwMDApKSA8PCAxNikgfCBpbnQxNl90KHJpZ2h0ICogMHgxMDAwKTsKKyAgICBtQ2Jsay0+dm9sdW1lTFIgPSAodWludDMyX3QodWludDE2X3QocmlnaHQgKiAweDEwMDApKSA8PCAxNikgfCB1aW50MTZfdChsZWZ0ICogMHgxMDAwKTsKKworICAgIHJldHVybiBOT19FUlJPUjsKIH0KIAogdm9pZCBBdWRpb1RyYWNrOjpnZXRWb2x1bWUoZmxvYXQqIGxlZnQsIGZsb2F0KiByaWdodCkKIHsKLSAgICAqbGVmdCAgPSBtVm9sdW1lW0xFRlRdOwotICAgICpyaWdodCA9IG1Wb2x1bWVbUklHSFRdOworICAgIGlmIChsZWZ0ICE9IE5VTEwpIHsKKyAgICAgICAgKmxlZnQgID0gbVZvbHVtZVtMRUZUXTsKKyAgICB9CisgICAgaWYgKHJpZ2h0ICE9IE5VTEwpIHsKKyAgICAgICAgKnJpZ2h0ID0gbVZvbHVtZVtSSUdIVF07CisgICAgfQorfQorCitzdGF0dXNfdCBBdWRpb1RyYWNrOjpzZXRTZW5kTGV2ZWwoZmxvYXQgbGV2ZWwpCit7CisgICAgaWYgKGxldmVsID4gMS4wZikgeworICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOworICAgIH0KKworICAgIG1TZW5kTGV2ZWwgPSBsZXZlbDsKKworICAgIG1DYmxrLT5zZW5kTGV2ZWwgPSB1aW50MTZfdChsZXZlbCAqIDB4MTAwMCk7CisKKyAgICByZXR1cm4gTk9fRVJST1I7Cit9CisKK3ZvaWQgQXVkaW9UcmFjazo6Z2V0U2VuZExldmVsKGZsb2F0KiBsZXZlbCkKK3sKKyAgICBpZiAobGV2ZWwgIT0gTlVMTCkgeworICAgICAgICAqbGV2ZWwgID0gbVNlbmRMZXZlbDsKKyAgICB9CiB9CiAKIHN0YXR1c190IEF1ZGlvVHJhY2s6OnNldFNhbXBsZVJhdGUoaW50IHJhdGUpCkBAIC00NzksMTQgKzUxMiwxNCBAQAogICAgIH0KIAogICAgIGlmIChsb29wU3RhcnQgPj0gbG9vcEVuZCB8fAotICAgICAgICBsb29wRW5kIC0gbG9vcFN0YXJ0ID4gbUZyYW1lQ291bnQpIHsKLSAgICAgICAgTE9HRSgic2V0TG9vcCBpbnZhbGlkIHZhbHVlOiBsb29wU3RhcnQgJWQsIGxvb3BFbmQgJWQsIGxvb3BDb3VudCAlZCwgZnJhbWVjb3VudCAlZCwgdXNlciAlZCIsIGxvb3BTdGFydCwgbG9vcEVuZCwgbG9vcENvdW50LCBtRnJhbWVDb3VudCwgY2Jsay0+dXNlcik7CisgICAgICAgIGxvb3BFbmQgLSBsb29wU3RhcnQgPiBjYmxrLT5mcmFtZUNvdW50KSB7CisgICAgICAgIExPR0UoInNldExvb3AgaW52YWxpZCB2YWx1ZTogbG9vcFN0YXJ0ICVkLCBsb29wRW5kICVkLCBsb29wQ291bnQgJWQsIGZyYW1lY291bnQgJWQsIHVzZXIgJWQiLCBsb29wU3RhcnQsIGxvb3BFbmQsIGxvb3BDb3VudCwgY2Jsay0+ZnJhbWVDb3VudCwgY2Jsay0+dXNlcik7CiAgICAgICAgIHJldHVybiBCQURfVkFMVUU7CiAgICAgfQogCi0gICAgaWYgKChtU2hhcmVkQnVmZmVyICE9IDApICYmIChsb29wRW5kICAgPiBtRnJhbWVDb3VudCkpIHsKKyAgICBpZiAoKG1TaGFyZWRCdWZmZXIgIT0gMCkgJiYgKGxvb3BFbmQgICA+IGNibGstPmZyYW1lQ291bnQpKSB7CiAgICAgICAgIExPR0UoInNldExvb3AgaW52YWxpZCB2YWx1ZTogbG9vcCBtYXJrZXJzIGJleW9uZCBkYXRhOiBsb29wU3RhcnQgJWQsIGxvb3BFbmQgJWQsIGZyYW1lY291bnQgJWQiLAotICAgICAgICAgICAgbG9vcFN0YXJ0LCBsb29wRW5kLCBtRnJhbWVDb3VudCk7CisgICAgICAgICAgICBsb29wU3RhcnQsIGxvb3BFbmQsIGNibGstPmZyYW1lQ291bnQpOwogICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOwogICAgIH0KIApAQCAtNTY2LDcgKzU5OSw3IEBACiAgICAgaWYgKHBvc2l0aW9uID4gbUNibGstPnVzZXIpIHJldHVybiBCQURfVkFMVUU7CiAKICAgICBtQ2Jsay0+c2VydmVyID0gcG9zaXRpb247Ci0gICAgbUNibGstPmZvcmNlUmVhZHkgPSAxOworICAgIG1DYmxrLT5mbGFncyB8PSBDQkxLX0ZPUkNFUkVBRFlfT047CiAKICAgICByZXR1cm4gTk9fRVJST1I7CiB9CkBAIC01ODYsNyArNjE5LDcgQEAKIAogICAgIGZsdXNoKCk7CiAKLSAgICBtQ2Jsay0+c3RlcFVzZXIobUZyYW1lQ291bnQpOworICAgIG1DYmxrLT5zdGVwVXNlcihtQ2Jsay0+ZnJhbWVDb3VudCk7CiAKICAgICByZXR1cm4gTk9fRVJST1I7CiB9CkBAIC01OTcsNiArNjMwLDE2IEBACiAgICAgICAgICAgICBtQ2Jsay0+c2FtcGxlUmF0ZSwgbUZvcm1hdCwgbUNoYW5uZWxzLCAoQXVkaW9TeXN0ZW06Om91dHB1dF9mbGFncyltRmxhZ3MpOwogfQogCitpbnQgQXVkaW9UcmFjazo6Z2V0U2Vzc2lvbklkKCkKK3sKKyAgICByZXR1cm4gbVNlc3Npb25JZDsKK30KKworc3RhdHVzX3QgQXVkaW9UcmFjazo6YXR0YWNoQXV4RWZmZWN0KGludCBlZmZlY3RJZCkKK3sKKyAgICByZXR1cm4gbUF1ZGlvVHJhY2stPmF0dGFjaEF1eEVmZmVjdChlZmZlY3RJZCk7Cit9CisKIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogc3RhdHVzX3QgQXVkaW9UcmFjazo6Y3JlYXRlVHJhY2soCkBAIC02MDcsNyArNjUwLDggQEAKICAgICAgICAgaW50IGZyYW1lQ291bnQsCiAgICAgICAgIHVpbnQzMl90IGZsYWdzLAogICAgICAgICBjb25zdCBzcDxJTWVtb3J5PiYgc2hhcmVkQnVmZmVyLAotICAgICAgICBhdWRpb19pb19oYW5kbGVfdCBvdXRwdXQpCisgICAgICAgIGF1ZGlvX2lvX2hhbmRsZV90IG91dHB1dCwKKyAgICAgICAgYm9vbCBlbmZvcmNlRnJhbWVDb3VudCkKIHsKICAgICBzdGF0dXNfdCBzdGF0dXM7CiAgICAgY29uc3Qgc3A8SUF1ZGlvRmxpbmdlcj4mIGF1ZGlvRmxpbmdlciA9IEF1ZGlvU3lzdGVtOjpnZXRfYXVkaW9fZmxpbmdlcigpOwpAQCAtNjE2LDYgKzY2MCw2MSBAQAogICAgICAgIHJldHVybiBOT19JTklUOwogICAgIH0KIAorICAgIGludCBhZlNhbXBsZVJhdGU7CisgICAgaWYgKEF1ZGlvU3lzdGVtOjpnZXRPdXRwdXRTYW1wbGluZ1JhdGUoJmFmU2FtcGxlUmF0ZSwgc3RyZWFtVHlwZSkgIT0gTk9fRVJST1IpIHsKKyAgICAgICAgcmV0dXJuIE5PX0lOSVQ7CisgICAgfQorICAgIGludCBhZkZyYW1lQ291bnQ7CisgICAgaWYgKEF1ZGlvU3lzdGVtOjpnZXRPdXRwdXRGcmFtZUNvdW50KCZhZkZyYW1lQ291bnQsIHN0cmVhbVR5cGUpICE9IE5PX0VSUk9SKSB7CisgICAgICAgIHJldHVybiBOT19JTklUOworICAgIH0KKyAgICB1aW50MzJfdCBhZkxhdGVuY3k7CisgICAgaWYgKEF1ZGlvU3lzdGVtOjpnZXRPdXRwdXRMYXRlbmN5KCZhZkxhdGVuY3ksIHN0cmVhbVR5cGUpICE9IE5PX0VSUk9SKSB7CisgICAgICAgIHJldHVybiBOT19JTklUOworICAgIH0KKworICAgIG1Ob3RpZmljYXRpb25GcmFtZXNBY3QgPSBtTm90aWZpY2F0aW9uRnJhbWVzUmVxOworICAgIGlmICghQXVkaW9TeXN0ZW06OmlzTGluZWFyUENNKGZvcm1hdCkpIHsKKyAgICAgICAgaWYgKHNoYXJlZEJ1ZmZlciAhPSAwKSB7CisgICAgICAgICAgICBmcmFtZUNvdW50ID0gc2hhcmVkQnVmZmVyLT5zaXplKCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICAvLyBFbnN1cmUgdGhhdCBidWZmZXIgZGVwdGggY292ZXJzIGF0IGxlYXN0IGF1ZGlvIGhhcmR3YXJlIGxhdGVuY3kKKyAgICAgICAgdWludDMyX3QgbWluQnVmQ291bnQgPSBhZkxhdGVuY3kgLyAoKDEwMDAgKiBhZkZyYW1lQ291bnQpL2FmU2FtcGxlUmF0ZSk7CisgICAgICAgIGlmIChtaW5CdWZDb3VudCA8IDIpIG1pbkJ1ZkNvdW50ID0gMjsKKworICAgICAgICBpbnQgbWluRnJhbWVDb3VudCA9IChhZkZyYW1lQ291bnQqc2FtcGxlUmF0ZSptaW5CdWZDb3VudCkvYWZTYW1wbGVSYXRlOworCisgICAgICAgIGlmIChzaGFyZWRCdWZmZXIgPT0gMCkgeworICAgICAgICAgICAgaWYgKGZyYW1lQ291bnQgPT0gMCkgeworICAgICAgICAgICAgICAgIGZyYW1lQ291bnQgPSBtaW5GcmFtZUNvdW50OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1Ob3RpZmljYXRpb25GcmFtZXNBY3QgPT0gMCkgeworICAgICAgICAgICAgICAgIG1Ob3RpZmljYXRpb25GcmFtZXNBY3QgPSBmcmFtZUNvdW50LzI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdGhhdCBhcHBsaWNhdGlvbiBpcyBub3RpZmllZCB3aXRoIHN1ZmZpY2llbnQgbWFyZ2luCisgICAgICAgICAgICAvLyBiZWZvcmUgdW5kZXJydW4KKyAgICAgICAgICAgIGlmIChtTm90aWZpY2F0aW9uRnJhbWVzQWN0ID4gKHVpbnQzMl90KWZyYW1lQ291bnQvMikgeworICAgICAgICAgICAgICAgIG1Ob3RpZmljYXRpb25GcmFtZXNBY3QgPSBmcmFtZUNvdW50LzI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZnJhbWVDb3VudCA8IG1pbkZyYW1lQ291bnQpIHsKKyAgICAgICAgICAgICAgICBpZiAoZW5mb3JjZUZyYW1lQ291bnQpIHsKKyAgICAgICAgICAgICAgICAgICAgTE9HRSgiSW52YWxpZCBidWZmZXIgc2l6ZTogbWluRnJhbWVDb3VudCAlZCwgZnJhbWVDb3VudCAlZCIsIG1pbkZyYW1lQ291bnQsIGZyYW1lQ291bnQpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGZyYW1lQ291bnQgPSBtaW5GcmFtZUNvdW50OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIEVuc3VyZSB0aGF0IGJ1ZmZlciBhbGlnbm1lbnQgbWF0Y2hlcyBjaGFubmVsY291bnQKKyAgICAgICAgICAgIGlmICgoKHVpbnQzMl90KXNoYXJlZEJ1ZmZlci0+cG9pbnRlcigpICYgKGNoYW5uZWxDb3VudCB8IDEpKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgTE9HRSgiSW52YWxpZCBidWZmZXIgYWxpZ25lbWVudDogYWRkcmVzcyAlcCwgY2hhbm5lbENvdW50ICVkIiwgc2hhcmVkQnVmZmVyLT5wb2ludGVyKCksIGNoYW5uZWxDb3VudCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZyYW1lQ291bnQgPSBzaGFyZWRCdWZmZXItPnNpemUoKS9jaGFubmVsQ291bnQvc2l6ZW9mKGludDE2X3QpOworICAgICAgICB9CisgICAgfQorCiAgICAgc3A8SUF1ZGlvVHJhY2s+IHRyYWNrID0gYXVkaW9GbGluZ2VyLT5jcmVhdGVUcmFjayhnZXRwaWQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbVR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVSYXRlLApAQCAtNjI1LDYgKzcyNCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQxNl90KWZsYWdzKSA8PCAxNiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlZEJ1ZmZlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZtU2Vzc2lvbklkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXR1cyk7CiAKICAgICBpZiAodHJhY2sgPT0gMCkgewpAQCAtNjQxLDIwICs3NDEsMjEgQEAKICAgICBtQ2Jsa01lbW9yeS5jbGVhcigpOwogICAgIG1DYmxrTWVtb3J5ID0gY2JsazsKICAgICBtQ2JsayA9IHN0YXRpY19jYXN0PGF1ZGlvX3RyYWNrX2NibGtfdCo+KGNibGstPnBvaW50ZXIoKSk7Ci0gICAgbUNibGstPm91dCA9IDE7Ci0gICAgLy8gVXBkYXRlIGJ1ZmZlciBzaXplIGluIGNhc2UgaXQgaGFzIGJlZW4gbGltaXRlZCBieSBBdWRpb0ZsaW5nZXIgZHVyaW5nIHRyYWNrIGNyZWF0aW9uCi0gICAgbUZyYW1lQ291bnQgPSBtQ2Jsay0+ZnJhbWVDb3VudDsKKyAgICBtQ2Jsay0+ZmxhZ3MgfD0gQ0JMS19ESVJFQ1RJT05fT1VUOwogICAgIGlmIChzaGFyZWRCdWZmZXIgPT0gMCkgewogICAgICAgICBtQ2Jsay0+YnVmZmVycyA9IChjaGFyKiltQ2JsayArIHNpemVvZihhdWRpb190cmFja19jYmxrX3QpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1DYmxrLT5idWZmZXJzID0gc2hhcmVkQnVmZmVyLT5wb2ludGVyKCk7CiAgICAgICAgICAvLyBGb3JjZSBidWZmZXIgZnVsbCBjb25kaXRpb24gYXMgZGF0YSBpcyBhbHJlYWR5IHByZXNlbnQgaW4gc2hhcmVkIG1lbW9yeQotICAgICAgICBtQ2Jsay0+c3RlcFVzZXIobUZyYW1lQ291bnQpOworICAgICAgICBtQ2Jsay0+c3RlcFVzZXIobUNibGstPmZyYW1lQ291bnQpOwogICAgIH0KIAotICAgIG1DYmxrLT52b2x1bWVMUiA9IChpbnQzMl90KGludDE2X3QobVZvbHVtZVtMRUZUXSAqIDB4MTAwMCkpIDw8IDE2KSB8IGludDE2X3QobVZvbHVtZVtSSUdIVF0gKiAweDEwMDApOworICAgIG1DYmxrLT52b2x1bWVMUiA9ICh1aW50MzJfdCh1aW50MTZfdChtVm9sdW1lW1JJR0hUXSAqIDB4MTAwMCkpIDw8IDE2KSB8IHVpbnQxNl90KG1Wb2x1bWVbTEVGVF0gKiAweDEwMDApOworICAgIG1DYmxrLT5zZW5kTGV2ZWwgPSB1aW50MTZfdChtU2VuZExldmVsICogMHgxMDAwKTsKICAgICBtQ2Jsay0+YnVmZmVyVGltZW91dE1zID0gTUFYX1NUQVJUVVBfVElNRU9VVF9NUzsKICAgICBtQ2Jsay0+d2FpdFRpbWVNcyA9IDA7CisgICAgbVJlbWFpbmluZ0ZyYW1lcyA9IG1Ob3RpZmljYXRpb25GcmFtZXNBY3Q7CisgICAgbUxhdGVuY3kgPSBhZkxhdGVuY3kgKyAoMTAwMCptQ2Jsay0+ZnJhbWVDb3VudCkgLyBzYW1wbGVSYXRlOwogICAgIHJldHVybiBOT19FUlJPUjsKIH0KIApAQCAtNjg1LDggKzc4NiwxNSBAQAogICAgICAgICAgICAgICAgIGNibGstPmxvY2sudW5sb2NrKCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIFdPVUxEX0JMT0NLOwogICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByZXN1bHQgPSBjYmxrLT5jdi53YWl0UmVsYXRpdmUoY2Jsay0+bG9jaywgbWlsbGlzZWNvbmRzKHdhaXRUaW1lTXMpKTsKKyAgICAgICAgICAgIGlmICghKGNibGstPmZsYWdzICYgQ0JMS19JTlZBTElEX01TSykpIHsKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBjYmxrLT5jdi53YWl0UmVsYXRpdmUoY2Jsay0+bG9jaywgbWlsbGlzZWNvbmRzKHdhaXRUaW1lTXMpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjYmxrLT5mbGFncyAmIENCTEtfSU5WQUxJRF9NU0spIHsKKyAgICAgICAgICAgICAgICBMT0dXKCJvYnRhaW5CdWZmZXIoKSB0cmFjayAlcCBpbnZhbGlkYXRlZCwgY3JlYXRpbmcgYSBuZXcgb25lIiwgdGhpcyk7CisgICAgICAgICAgICAgICAgLy8gbm8gbmVlZCB0byBjbGVhciB0aGUgaW52YWxpZCBmbGFnIGFzIHRoaXMgY2JsayB3aWxsIG5vdCBiZSB1c2VkIGFueW1vcmUKKyAgICAgICAgICAgICAgICBjYmxrLT5sb2NrLnVubG9jaygpOworICAgICAgICAgICAgICAgIGdvdG8gY3JlYXRlX25ld190cmFjazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0KHJlc3VsdCE9Tk9fRVJST1IsIGZhbHNlKSkgewogICAgICAgICAgICAgICAgIGNibGstPndhaXRUaW1lTXMgKz0gd2FpdFRpbWVNczsKICAgICAgICAgICAgICAgICBpZiAoY2Jsay0+d2FpdFRpbWVNcyA+PSBjYmxrLT5idWZmZXJUaW1lb3V0TXMpIHsKQEAgLTcwMCw4ICs4MDgsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gbUF1ZGlvVHJhY2stPnN0YXJ0KCk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IERFQURfT0JKRUNUKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTE9HVygib2J0YWluQnVmZmVyKCkgZGVhZCBJQXVkaW9UcmFjazogY3JlYXRpbmcgYSBuZXcgb25lIik7CitjcmVhdGVfbmV3X3RyYWNrOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IGNyZWF0ZVRyYWNrKG1TdHJlYW1UeXBlLCBjYmxrLT5zYW1wbGVSYXRlLCBtRm9ybWF0LCBtQ2hhbm5lbENvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1GcmFtZUNvdW50LCBtRmxhZ3MsIG1TaGFyZWRCdWZmZXIsIGdldE91dHB1dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtRnJhbWVDb3VudCwgbUZsYWdzLCBtU2hhcmVkQnVmZmVyLCBnZXRPdXRwdXQoKSwgZmFsc2UpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gTk9fRVJST1IpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2JsayA9IG1DYmxrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYmxrLT5idWZmZXJUaW1lb3V0TXMgPSBNQVhfUlVOX1RJTUVPVVRfTVM7CkBAIC04MjYsMTMgKzkzNSwxMyBAQAogCiAgICAgLy8gTWFuYWdlIHVuZGVycnVuIGNhbGxiYWNrCiAgICAgaWYgKG1BY3RpdmUgJiYgKG1DYmxrLT5mcmFtZXNSZWFkeSgpID09IDApKSB7Ci0gICAgICAgIExPR1YoIlVuZGVycnVuIHVzZXI6ICV4LCBzZXJ2ZXI6ICV4LCBmbG93Q29udHJvbEZsYWcgJWQiLCBtQ2Jsay0+dXNlciwgbUNibGstPnNlcnZlciwgbUNibGstPmZsb3dDb250cm9sRmxhZyk7Ci0gICAgICAgIGlmIChtQ2Jsay0+Zmxvd0NvbnRyb2xGbGFnID09IDApIHsKKyAgICAgICAgTE9HVigiVW5kZXJydW4gdXNlcjogJXgsIHNlcnZlcjogJXgsIGZsYWdzICUwNHgiLCBtQ2Jsay0+dXNlciwgbUNibGstPnNlcnZlciwgbUNibGstPmZsYWdzKTsKKyAgICAgICAgaWYgKChtQ2Jsay0+ZmxhZ3MgJiBDQkxLX1VOREVSUlVOX01TSykgPT0gQ0JMS19VTkRFUlJVTl9PRkYpIHsKICAgICAgICAgICAgIG1DYmYoRVZFTlRfVU5ERVJSVU4sIG1Vc2VyRGF0YSwgMCk7CiAgICAgICAgICAgICBpZiAobUNibGstPnNlcnZlciA9PSBtQ2Jsay0+ZnJhbWVDb3VudCkgewogICAgICAgICAgICAgICAgIG1DYmYoRVZFTlRfQlVGRkVSX0VORCwgbVVzZXJEYXRhLCAwKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1DYmxrLT5mbG93Q29udHJvbEZsYWcgPSAxOworICAgICAgICAgICAgbUNibGstPmZsYWdzIHw9IENCTEtfVU5ERVJSVU5fT047CiAgICAgICAgICAgICBpZiAobVNoYXJlZEJ1ZmZlciAhPSAwKSByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC05MzIsNyArMTA0MSw3IEBACiAgICAgd2hpbGUgKGZyYW1lcyk7CiAKICAgICBpZiAoZnJhbWVzID09IDApIHsKLSAgICAgICAgbVJlbWFpbmluZ0ZyYW1lcyA9IG1Ob3RpZmljYXRpb25GcmFtZXM7CisgICAgICAgIG1SZW1haW5pbmdGcmFtZXMgPSBtTm90aWZpY2F0aW9uRnJhbWVzQWN0OwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1SZW1haW5pbmdGcmFtZXMgPSBmcmFtZXM7CiAgICAgfQpAQCAtOTQ5LDcgKzEwNTgsNyBAQAogICAgIHJlc3VsdC5hcHBlbmQoIiBBdWRpb1RyYWNrOjpkdW1wXG4iKTsKICAgICBzbnByaW50ZihidWZmZXIsIDI1NSwgIiAgc3RyZWFtIHR5cGUoJWQpLCBsZWZ0IC0gcmlnaHQgdm9sdW1lKCVmLCAlZilcbiIsIG1TdHJlYW1UeXBlLCBtVm9sdW1lWzBdLCBtVm9sdW1lWzFdKTsKICAgICByZXN1bHQuYXBwZW5kKGJ1ZmZlcik7Ci0gICAgc25wcmludGYoYnVmZmVyLCAyNTUsICIgIGZvcm1hdCglZCksIGNoYW5uZWwgY291bnQoJWQpLCBmcmFtZSBjb3VudCglZClcbiIsIG1Gb3JtYXQsIG1DaGFubmVsQ291bnQsIG1GcmFtZUNvdW50KTsKKyAgICBzbnByaW50ZihidWZmZXIsIDI1NSwgIiAgZm9ybWF0KCVkKSwgY2hhbm5lbCBjb3VudCglZCksIGZyYW1lIGNvdW50KCVkKVxuIiwgbUZvcm1hdCwgbUNoYW5uZWxDb3VudCwgbUNibGstPmZyYW1lQ291bnQpOwogICAgIHJlc3VsdC5hcHBlbmQoYnVmZmVyKTsKICAgICBzbnByaW50ZihidWZmZXIsIDI1NSwgIiAgc2FtcGxlIHJhdGUoJWQpLCBzdGF0dXMoJWQpLCBtdXRlZCglZClcbiIsIChtQ2JsayA9PSAwKSA/IDAgOiBtQ2Jsay0+c2FtcGxlUmF0ZSwgbVN0YXR1cywgbU11dGVkKTsKICAgICByZXN1bHQuYXBwZW5kKGJ1ZmZlcik7CkBAIC05ODYsNyArMTA5NSw3IEBACiAgICAgOiBsb2NrKE11dGV4OjpTSEFSRUQpLCBjdihDb25kaXRpb246OlNIQVJFRCksIHVzZXIoMCksIHNlcnZlcigwKSwKICAgICB1c2VyQmFzZSgwKSwgc2VydmVyQmFzZSgwKSwgYnVmZmVycygwKSwgZnJhbWVDb3VudCgwKSwKICAgICBsb29wU3RhcnQoVUlOVF9NQVgpLCBsb29wRW5kKFVJTlRfTUFYKSwgbG9vcENvdW50KDApLCB2b2x1bWVMUigwKSwKLSAgICBmbG93Q29udHJvbEZsYWcoMSksIGZvcmNlUmVhZHkoMCkKKyAgICBmbGFncygwKSwgc2VuZExldmVsKDApCiB7CiB9CiAKQEAgLTk5Niw3ICsxMTA1LDcgQEAKIAogICAgIHUgKz0gZnJhbWVDb3VudDsKICAgICAvLyBFbnN1cmUgdGhhdCB1c2VyIGlzIG5ldmVyIGFoZWFkIG9mIHNlcnZlciBmb3IgQXVkaW9SZWNvcmQKLSAgICBpZiAob3V0KSB7CisgICAgaWYgKGZsYWdzICYgQ0JMS19ESVJFQ1RJT05fTVNLKSB7CiAgICAgICAgIC8vIElmIHN0ZXBTZXJ2ZXIoKSBoYXMgYmVlbiBjYWxsZWQgb25jZSwgc3dpdGNoIHRvIG5vcm1hbCBvYnRhaW5CdWZmZXIoKSB0aW1lb3V0IHBlcmlvZAogICAgICAgICBpZiAoYnVmZmVyVGltZW91dE1zID09IE1BWF9TVEFSVFVQX1RJTUVPVVRfTVMtMSkgewogICAgICAgICAgICAgYnVmZmVyVGltZW91dE1zID0gTUFYX1JVTl9USU1FT1VUX01TOwpAQCAtMTAxMyw3ICsxMTIyLDcgQEAKICAgICB0aGlzLT51c2VyID0gdTsKIAogICAgIC8vIENsZWFyIGZsb3cgY29udHJvbCBlcnJvciBjb25kaXRpb24gYXMgbmV3IGRhdGEgaGFzIGJlZW4gd3JpdHRlbi9yZWFkIHRvL2Zyb20gYnVmZmVyLgotICAgIGZsb3dDb250cm9sRmxhZyA9IDA7CisgICAgZmxhZ3MgJj0gfkNCTEtfVU5ERVJSVU5fTVNLOwogCiAgICAgcmV0dXJuIHU7CiB9CkBAIC0xMDM4LDcgKzExNDcsNyBAQAogICAgIHVpbnQzMl90IHMgPSB0aGlzLT5zZXJ2ZXI7CiAKICAgICBzICs9IGZyYW1lQ291bnQ7Ci0gICAgaWYgKG91dCkgeworICAgIGlmIChmbGFncyAmIENCTEtfRElSRUNUSU9OX01TSykgewogICAgICAgICAvLyBNYXJrIHRoYXQgd2UgaGF2ZSByZWFkIHRoZSBmaXJzdCBidWZmZXIgc28gdGhhdCBuZXh0IHRpbWUgc3RlcFVzZXIoKSBpcyBjYWxsZWQKICAgICAgICAgLy8gd2Ugc3dpdGNoIHRvIG5vcm1hbCBvYnRhaW5CdWZmZXIoKSB0aW1lb3V0IHBlcmlvZAogICAgICAgICBpZiAoYnVmZmVyVGltZW91dE1zID09IE1BWF9TVEFSVFVQX1RJTUVPVVRfTVMpIHsKQEAgLTEwODksNyArMTE5OCw3IEBACiAgICAgdWludDMyX3QgdSA9IHRoaXMtPnVzZXI7CiAgICAgdWludDMyX3QgcyA9IHRoaXMtPnNlcnZlcjsKIAotICAgIGlmIChvdXQpIHsKKyAgICBpZiAoZmxhZ3MgJiBDQkxLX0RJUkVDVElPTl9NU0spIHsKICAgICAgICAgdWludDMyX3QgbGltaXQgPSAocyA8IGxvb3BTdGFydCkgPyBzIDogbG9vcFN0YXJ0OwogICAgICAgICByZXR1cm4gbGltaXQgKyBmcmFtZUNvdW50IC0gdTsKICAgICB9IGVsc2UgewpAQCAtMTEwMiw3ICsxMjExLDcgQEAKICAgICB1aW50MzJfdCB1ID0gdGhpcy0+dXNlcjsKICAgICB1aW50MzJfdCBzID0gdGhpcy0+c2VydmVyOwogCi0gICAgaWYgKG91dCkgeworICAgIGlmIChmbGFncyAmIENCTEtfRElSRUNUSU9OX01TSykgewogICAgICAgICBpZiAodSA8IGxvb3BFbmQpIHsKICAgICAgICAgICAgIHJldHVybiB1IC0gczsKICAgICAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL21lZGlhL2xpYm1lZGlhL0lBdWRpb0ZsaW5nZXIuY3BwIGIvbWVkaWEvbGlibWVkaWEvSUF1ZGlvRmxpbmdlci5jcHAKaW5kZXggNDdiY2MxMi4uN2Q2YTVkMyAxMDA2NDQKLS0tIGEvbWVkaWEvbGlibWVkaWEvSUF1ZGlvRmxpbmdlci5jcHAKKysrIGIvbWVkaWEvbGlibWVkaWEvSUF1ZGlvRmxpbmdlci5jcHAKQEAgLTYyLDcgKzYyLDE0IEBACiAgICAgU0VUX1NUUkVBTV9PVVRQVVQsCiAgICAgU0VUX1ZPSUNFX1ZPTFVNRSwKICAgICBHRVRfUkVOREVSX1BPU0lUSU9OLAotICAgIEdFVF9JTlBVVF9GUkFNRVNfTE9TVAorICAgIEdFVF9JTlBVVF9GUkFNRVNfTE9TVCwKKyAgICBORVdfQVVESU9fU0VTU0lPTl9JRCwKKyAgICBMT0FEX0VGRkVDVF9MSUJSQVJZLAorICAgIFVOTE9BRF9FRkZFQ1RfTElCUkFSWSwKKyAgICBRVUVSWV9OVU1fRUZGRUNUUywKKyAgICBRVUVSWV9FRkZFQ1QsCisgICAgR0VUX0VGRkVDVF9ERVNDUklQVE9SLAorICAgIENSRUFURV9FRkZFQ1QKIH07CiAKIGNsYXNzIEJwQXVkaW9GbGluZ2VyIDogcHVibGljIEJwSW50ZXJmYWNlPElBdWRpb0ZsaW5nZXI+CkBAIC04Myw2ICs5MCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZsYWdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcDxJTWVtb3J5PiYgc2hhcmVkQnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgb3V0cHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnNlc3Npb25JZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzX3QgKnN0YXR1cykKICAgICB7CiAgICAgICAgIFBhcmNlbCBkYXRhLCByZXBseTsKQEAgLTk3LDEwICsxMDUsMTkgQEAKICAgICAgICAgZGF0YS53cml0ZUludDMyKGZsYWdzKTsKICAgICAgICAgZGF0YS53cml0ZVN0cm9uZ0JpbmRlcihzaGFyZWRCdWZmZXItPmFzQmluZGVyKCkpOwogICAgICAgICBkYXRhLndyaXRlSW50MzIob3V0cHV0KTsKKyAgICAgICAgaW50IGxTZXNzaW9uSWQgPSAwOworICAgICAgICBpZiAoc2Vzc2lvbklkICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGxTZXNzaW9uSWQgPSAqc2Vzc2lvbklkOworICAgICAgICB9CisgICAgICAgIGRhdGEud3JpdGVJbnQzMihsU2Vzc2lvbklkKTsKICAgICAgICAgc3RhdHVzX3QgbFN0YXR1cyA9IHJlbW90ZSgpLT50cmFuc2FjdChDUkVBVEVfVFJBQ0ssIGRhdGEsICZyZXBseSk7CiAgICAgICAgIGlmIChsU3RhdHVzICE9IE5PX0VSUk9SKSB7CiAgICAgICAgICAgICBMT0dFKCJjcmVhdGVUcmFjayBlcnJvcjogJXMiLCBzdHJlcnJvcigtbFN0YXR1cykpOwogICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbFNlc3Npb25JZCA9IHJlcGx5LnJlYWRJbnQzMigpOworICAgICAgICAgICAgaWYgKHNlc3Npb25JZCAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgKnNlc3Npb25JZCA9IGxTZXNzaW9uSWQ7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBsU3RhdHVzID0gcmVwbHkucmVhZEludDMyKCk7CiAgICAgICAgICAgICB0cmFjayA9IGludGVyZmFjZV9jYXN0PElBdWRpb1RyYWNrPihyZXBseS5yZWFkU3Ryb25nQmluZGVyKCkpOwogICAgICAgICB9CkBAIC0xMTgsNiArMTM1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNoYW5uZWxDb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZyYW1lQ291bnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IGZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKnNlc3Npb25JZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzX3QgKnN0YXR1cykKICAgICB7CiAgICAgICAgIFBhcmNlbCBkYXRhLCByZXBseTsKQEAgLTEzMCwxMCArMTQ4LDE5IEBACiAgICAgICAgIGRhdGEud3JpdGVJbnQzMihjaGFubmVsQ291bnQpOwogICAgICAgICBkYXRhLndyaXRlSW50MzIoZnJhbWVDb3VudCk7CiAgICAgICAgIGRhdGEud3JpdGVJbnQzMihmbGFncyk7CisgICAgICAgIGludCBsU2Vzc2lvbklkID0gMDsKKyAgICAgICAgaWYgKHNlc3Npb25JZCAhPSBOVUxMKSB7CisgICAgICAgICAgICBsU2Vzc2lvbklkID0gKnNlc3Npb25JZDsKKyAgICAgICAgfQorICAgICAgICBkYXRhLndyaXRlSW50MzIobFNlc3Npb25JZCk7CiAgICAgICAgIHN0YXR1c190IGxTdGF0dXMgPSByZW1vdGUoKS0+dHJhbnNhY3QoT1BFTl9SRUNPUkQsIGRhdGEsICZyZXBseSk7CiAgICAgICAgIGlmIChsU3RhdHVzICE9IE5PX0VSUk9SKSB7CiAgICAgICAgICAgICBMT0dFKCJvcGVuUmVjb3JkIGVycm9yOiAlcyIsIHN0cmVycm9yKC1sU3RhdHVzKSk7CiAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBsU2Vzc2lvbklkID0gcmVwbHkucmVhZEludDMyKCk7CisgICAgICAgICAgICBpZiAoc2Vzc2lvbklkICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAqc2Vzc2lvbklkID0gbFNlc3Npb25JZDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGxTdGF0dXMgPSByZXBseS5yZWFkSW50MzIoKTsKICAgICAgICAgICAgIHJlY29yZCA9IGludGVyZmFjZV9jYXN0PElBdWRpb1JlY29yZD4ocmVwbHkucmVhZFN0cm9uZ0JpbmRlcigpKTsKICAgICAgICAgfQpAQCAtNDk3LDYgKzUyNCwxNTggQEAKICAgICAgICAgcmVtb3RlKCktPnRyYW5zYWN0KEdFVF9JTlBVVF9GUkFNRVNfTE9TVCwgZGF0YSwgJnJlcGx5KTsKICAgICAgICAgcmV0dXJuIHJlcGx5LnJlYWRJbnQzMigpOwogICAgIH0KKworICAgIHZpcnR1YWwgaW50IG5ld0F1ZGlvU2Vzc2lvbklkKCkKKyAgICB7CisgICAgICAgIFBhcmNlbCBkYXRhLCByZXBseTsKKyAgICAgICAgZGF0YS53cml0ZUludGVyZmFjZVRva2VuKElBdWRpb0ZsaW5nZXI6OmdldEludGVyZmFjZURlc2NyaXB0b3IoKSk7CisgICAgICAgIHN0YXR1c190IHN0YXR1cyA9IHJlbW90ZSgpLT50cmFuc2FjdChORVdfQVVESU9fU0VTU0lPTl9JRCwgZGF0YSwgJnJlcGx5KTsKKyAgICAgICAgaW50IGlkID0gMDsKKyAgICAgICAgaWYgKHN0YXR1cyA9PSBOT19FUlJPUikgeworICAgICAgICAgICAgaWQgPSByZXBseS5yZWFkSW50MzIoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gaWQ7CisgICAgfQorCisgICAgdmlydHVhbCBzdGF0dXNfdCBsb2FkRWZmZWN0TGlicmFyeShjb25zdCBjaGFyICpsaWJQYXRoLCBpbnQgKmhhbmRsZSkKKyAgICB7CisgICAgICAgIGlmIChsaWJQYXRoID09IE5VTEwgfHwgaGFuZGxlID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisgICAgICAgIH0KKyAgICAgICAgKmhhbmRsZSA9IDA7CisgICAgICAgIFBhcmNlbCBkYXRhLCByZXBseTsKKyAgICAgICAgZGF0YS53cml0ZUludGVyZmFjZVRva2VuKElBdWRpb0ZsaW5nZXI6OmdldEludGVyZmFjZURlc2NyaXB0b3IoKSk7CisgICAgICAgIGRhdGEud3JpdGVDU3RyaW5nKGxpYlBhdGgpOworICAgICAgICBzdGF0dXNfdCBzdGF0dXMgPSByZW1vdGUoKS0+dHJhbnNhY3QoTE9BRF9FRkZFQ1RfTElCUkFSWSwgZGF0YSwgJnJlcGx5KTsKKyAgICAgICAgaWYgKHN0YXR1cyA9PSBOT19FUlJPUikgeworICAgICAgICAgICAgc3RhdHVzID0gcmVwbHkucmVhZEludDMyKCk7CisgICAgICAgICAgICBpZiAoc3RhdHVzID09IE5PX0VSUk9SKSB7CisgICAgICAgICAgICAgICAgKmhhbmRsZSA9IHJlcGx5LnJlYWRJbnQzMigpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBzdGF0dXM7CisgICAgfQorCisgICAgdmlydHVhbCBzdGF0dXNfdCB1bmxvYWRFZmZlY3RMaWJyYXJ5KGludCBoYW5kbGUpCisgICAgeworICAgICAgICBQYXJjZWwgZGF0YSwgcmVwbHk7CisgICAgICAgIGRhdGEud3JpdGVJbnRlcmZhY2VUb2tlbihJQXVkaW9GbGluZ2VyOjpnZXRJbnRlcmZhY2VEZXNjcmlwdG9yKCkpOworICAgICAgICBkYXRhLndyaXRlSW50MzIoaGFuZGxlKTsKKyAgICAgICAgc3RhdHVzX3Qgc3RhdHVzID0gcmVtb3RlKCktPnRyYW5zYWN0KFVOTE9BRF9FRkZFQ1RfTElCUkFSWSwgZGF0YSwgJnJlcGx5KTsKKyAgICAgICAgaWYgKHN0YXR1cyA9PSBOT19FUlJPUikgeworICAgICAgICAgICAgc3RhdHVzID0gcmVwbHkucmVhZEludDMyKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHN0YXR1czsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHN0YXR1c190IHF1ZXJ5TnVtYmVyRWZmZWN0cyh1aW50MzJfdCAqbnVtRWZmZWN0cykKKyAgICB7CisgICAgICAgIFBhcmNlbCBkYXRhLCByZXBseTsKKyAgICAgICAgZGF0YS53cml0ZUludGVyZmFjZVRva2VuKElBdWRpb0ZsaW5nZXI6OmdldEludGVyZmFjZURlc2NyaXB0b3IoKSk7CisgICAgICAgIHN0YXR1c190IHN0YXR1cyA9IHJlbW90ZSgpLT50cmFuc2FjdChRVUVSWV9OVU1fRUZGRUNUUywgZGF0YSwgJnJlcGx5KTsKKyAgICAgICAgaWYgKHN0YXR1cyAhPSBOT19FUlJPUikgeworICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKKyAgICAgICAgfQorICAgICAgICBzdGF0dXMgPSByZXBseS5yZWFkSW50MzIoKTsKKyAgICAgICAgaWYgKHN0YXR1cyAhPSBOT19FUlJPUikgeworICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKKyAgICAgICAgfQorICAgICAgICBpZiAobnVtRWZmZWN0cykgeworICAgICAgICAgICAgKm51bUVmZmVjdHMgPSAodWludDMyX3QpcmVwbHkucmVhZEludDMyKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIE5PX0VSUk9SOworICAgIH0KKworICAgIHZpcnR1YWwgc3RhdHVzX3QgcXVlcnlFZmZlY3QodWludDMyX3QgaW5kZXgsIGVmZmVjdF9kZXNjcmlwdG9yX3QgKnBEZXNjcmlwdG9yKQorICAgIHsKKyAgICAgICAgaWYgKHBEZXNjcmlwdG9yID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisgICAgICAgIH0KKyAgICAgICAgUGFyY2VsIGRhdGEsIHJlcGx5OworICAgICAgICBkYXRhLndyaXRlSW50ZXJmYWNlVG9rZW4oSUF1ZGlvRmxpbmdlcjo6Z2V0SW50ZXJmYWNlRGVzY3JpcHRvcigpKTsKKyAgICAgICAgZGF0YS53cml0ZUludDMyKGluZGV4KTsKKyAgICAgICAgc3RhdHVzX3Qgc3RhdHVzID0gcmVtb3RlKCktPnRyYW5zYWN0KFFVRVJZX0VGRkVDVCwgZGF0YSwgJnJlcGx5KTsKKyAgICAgICAgaWYgKHN0YXR1cyAhPSBOT19FUlJPUikgeworICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKKyAgICAgICAgfQorICAgICAgICBzdGF0dXMgPSByZXBseS5yZWFkSW50MzIoKTsKKyAgICAgICAgaWYgKHN0YXR1cyAhPSBOT19FUlJPUikgeworICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKKyAgICAgICAgfQorICAgICAgICByZXBseS5yZWFkKHBEZXNjcmlwdG9yLCBzaXplb2YoZWZmZWN0X2Rlc2NyaXB0b3JfdCkpOworICAgICAgICByZXR1cm4gTk9fRVJST1I7CisgICAgfQorCisgICAgdmlydHVhbCBzdGF0dXNfdCBnZXRFZmZlY3REZXNjcmlwdG9yKGVmZmVjdF91dWlkX3QgKnBVdWlkLCBlZmZlY3RfZGVzY3JpcHRvcl90ICpwRGVzY3JpcHRvcikKKyAgICB7CisgICAgICAgIGlmIChwVXVpZCA9PSBOVUxMIHx8IHBEZXNjcmlwdG9yID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisgICAgICAgIH0KKyAgICAgICAgUGFyY2VsIGRhdGEsIHJlcGx5OworICAgICAgICBkYXRhLndyaXRlSW50ZXJmYWNlVG9rZW4oSUF1ZGlvRmxpbmdlcjo6Z2V0SW50ZXJmYWNlRGVzY3JpcHRvcigpKTsKKyAgICAgICAgZGF0YS53cml0ZShwVXVpZCwgc2l6ZW9mKGVmZmVjdF91dWlkX3QpKTsKKyAgICAgICAgc3RhdHVzX3Qgc3RhdHVzID0gcmVtb3RlKCktPnRyYW5zYWN0KEdFVF9FRkZFQ1RfREVTQ1JJUFRPUiwgZGF0YSwgJnJlcGx5KTsKKyAgICAgICAgaWYgKHN0YXR1cyAhPSBOT19FUlJPUikgeworICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKKyAgICAgICAgfQorICAgICAgICBzdGF0dXMgPSByZXBseS5yZWFkSW50MzIoKTsKKyAgICAgICAgaWYgKHN0YXR1cyAhPSBOT19FUlJPUikgeworICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKKyAgICAgICAgfQorICAgICAgICByZXBseS5yZWFkKHBEZXNjcmlwdG9yLCBzaXplb2YoZWZmZWN0X2Rlc2NyaXB0b3JfdCkpOworICAgICAgICByZXR1cm4gTk9fRVJST1I7CisgICAgfQorCisgICAgdmlydHVhbCBzcDxJRWZmZWN0PiBjcmVhdGVFZmZlY3QocGlkX3QgcGlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWZmZWN0X2Rlc2NyaXB0b3JfdCAqcERlc2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcDxJRWZmZWN0Q2xpZW50PiYgY2xpZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCBwcmlvcml0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBvdXRwdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc2Vzc2lvbklkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzX3QgKnN0YXR1cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCAqaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKmVuYWJsZWQpCisgICAgeworICAgICAgICBQYXJjZWwgZGF0YSwgcmVwbHk7CisgICAgICAgIHNwPElFZmZlY3Q+IGVmZmVjdDsKKworICAgICAgICBpZiAocERlc2MgPT0gTlVMTCkgeworICAgICAgICAgICAgIHJldHVybiBlZmZlY3Q7CisgICAgICAgICAgICAgaWYgKHN0YXR1cykgeworICAgICAgICAgICAgICAgICAqc3RhdHVzID0gQkFEX1ZBTFVFOworICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKworICAgICAgICBkYXRhLndyaXRlSW50ZXJmYWNlVG9rZW4oSUF1ZGlvRmxpbmdlcjo6Z2V0SW50ZXJmYWNlRGVzY3JpcHRvcigpKTsKKyAgICAgICAgZGF0YS53cml0ZUludDMyKHBpZCk7CisgICAgICAgIGRhdGEud3JpdGUocERlc2MsIHNpemVvZihlZmZlY3RfZGVzY3JpcHRvcl90KSk7CisgICAgICAgIGRhdGEud3JpdGVTdHJvbmdCaW5kZXIoY2xpZW50LT5hc0JpbmRlcigpKTsKKyAgICAgICAgZGF0YS53cml0ZUludDMyKHByaW9yaXR5KTsKKyAgICAgICAgZGF0YS53cml0ZUludDMyKG91dHB1dCk7CisgICAgICAgIGRhdGEud3JpdGVJbnQzMihzZXNzaW9uSWQpOworCisgICAgICAgIHN0YXR1c190IGxTdGF0dXMgPSByZW1vdGUoKS0+dHJhbnNhY3QoQ1JFQVRFX0VGRkVDVCwgZGF0YSwgJnJlcGx5KTsKKyAgICAgICAgaWYgKGxTdGF0dXMgIT0gTk9fRVJST1IpIHsKKyAgICAgICAgICAgIExPR0UoImNyZWF0ZUVmZmVjdCBlcnJvcjogJXMiLCBzdHJlcnJvcigtbFN0YXR1cykpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbFN0YXR1cyA9IHJlcGx5LnJlYWRJbnQzMigpOworICAgICAgICAgICAgaW50IHRtcCA9IHJlcGx5LnJlYWRJbnQzMigpOworICAgICAgICAgICAgaWYgKGlkKSB7CisgICAgICAgICAgICAgICAgKmlkID0gdG1wOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdG1wID0gcmVwbHkucmVhZEludDMyKCk7CisgICAgICAgICAgICBpZiAoZW5hYmxlZCkgeworICAgICAgICAgICAgICAgICplbmFibGVkID0gdG1wOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWZmZWN0ID0gaW50ZXJmYWNlX2Nhc3Q8SUVmZmVjdD4ocmVwbHkucmVhZFN0cm9uZ0JpbmRlcigpKTsKKyAgICAgICAgICAgIHJlcGx5LnJlYWQocERlc2MsIHNpemVvZihlZmZlY3RfZGVzY3JpcHRvcl90KSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHN0YXR1cykgeworICAgICAgICAgICAgKnN0YXR1cyA9IGxTdGF0dXM7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZWZmZWN0OworICAgIH0KIH07CiAKIElNUExFTUVOVF9NRVRBX0lOVEVSRkFDRShBdWRpb0ZsaW5nZXIsICJhbmRyb2lkLm1lZGlhLklBdWRpb0ZsaW5nZXIiKTsKQEAgLTUxOCwxMCArNjk3LDEyIEBACiAgICAgICAgICAgICB1aW50MzJfdCBmbGFncyA9IGRhdGEucmVhZEludDMyKCk7CiAgICAgICAgICAgICBzcDxJTWVtb3J5PiBidWZmZXIgPSBpbnRlcmZhY2VfY2FzdDxJTWVtb3J5PihkYXRhLnJlYWRTdHJvbmdCaW5kZXIoKSk7CiAgICAgICAgICAgICBpbnQgb3V0cHV0ID0gZGF0YS5yZWFkSW50MzIoKTsKKyAgICAgICAgICAgIGludCBzZXNzaW9uSWQgPSBkYXRhLnJlYWRJbnQzMigpOwogICAgICAgICAgICAgc3RhdHVzX3Qgc3RhdHVzOwogICAgICAgICAgICAgc3A8SUF1ZGlvVHJhY2s+IHRyYWNrID0gY3JlYXRlVHJhY2socGlkLAogICAgICAgICAgICAgICAgICAgICBzdHJlYW1UeXBlLCBzYW1wbGVSYXRlLCBmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgIGNoYW5uZWxDb3VudCwgYnVmZmVyQ291bnQsIGZsYWdzLCBidWZmZXIsIG91dHB1dCwgJnN0YXR1cyk7CisgICAgICAgICAgICAgICAgICAgIGNoYW5uZWxDb3VudCwgYnVmZmVyQ291bnQsIGZsYWdzLCBidWZmZXIsIG91dHB1dCwgJnNlc3Npb25JZCwgJnN0YXR1cyk7CisgICAgICAgICAgICByZXBseS0+d3JpdGVJbnQzMihzZXNzaW9uSWQpOwogICAgICAgICAgICAgcmVwbHktPndyaXRlSW50MzIoc3RhdHVzKTsKICAgICAgICAgICAgIHJlcGx5LT53cml0ZVN0cm9uZ0JpbmRlcih0cmFjay0+YXNCaW5kZXIoKSk7CiAgICAgICAgICAgICByZXR1cm4gTk9fRVJST1I7CkBAIC01MzUsOSArNzE2LDExIEBACiAgICAgICAgICAgICBpbnQgY2hhbm5lbENvdW50ID0gZGF0YS5yZWFkSW50MzIoKTsKICAgICAgICAgICAgIHNpemVfdCBidWZmZXJDb3VudCA9IGRhdGEucmVhZEludDMyKCk7CiAgICAgICAgICAgICB1aW50MzJfdCBmbGFncyA9IGRhdGEucmVhZEludDMyKCk7CisgICAgICAgICAgICBpbnQgc2Vzc2lvbklkID0gZGF0YS5yZWFkSW50MzIoKTsKICAgICAgICAgICAgIHN0YXR1c190IHN0YXR1czsKICAgICAgICAgICAgIHNwPElBdWRpb1JlY29yZD4gcmVjb3JkID0gb3BlblJlY29yZChwaWQsIGlucHV0LAotICAgICAgICAgICAgICAgICAgICBzYW1wbGVSYXRlLCBmb3JtYXQsIGNoYW5uZWxDb3VudCwgYnVmZmVyQ291bnQsIGZsYWdzLCAmc3RhdHVzKTsKKyAgICAgICAgICAgICAgICAgICAgc2FtcGxlUmF0ZSwgZm9ybWF0LCBjaGFubmVsQ291bnQsIGJ1ZmZlckNvdW50LCBmbGFncywgJnNlc3Npb25JZCwgJnN0YXR1cyk7CisgICAgICAgICAgICByZXBseS0+d3JpdGVJbnQzMihzZXNzaW9uSWQpOwogICAgICAgICAgICAgcmVwbHktPndyaXRlSW50MzIoc3RhdHVzKTsKICAgICAgICAgICAgIHJlcGx5LT53cml0ZVN0cm9uZ0JpbmRlcihyZWNvcmQtPmFzQmluZGVyKCkpOwogICAgICAgICAgICAgcmV0dXJuIE5PX0VSUk9SOwpAQCAtNzY4LDcgKzk1MSw3OSBAQAogICAgICAgICAgICAgcmVwbHktPndyaXRlSW50MzIoZ2V0SW5wdXRGcmFtZXNMb3N0KGlvSGFuZGxlKSk7CiAgICAgICAgICAgICByZXR1cm4gTk9fRVJST1I7CiAgICAgICAgIH0gYnJlYWs7CisgICAgICAgIGNhc2UgTkVXX0FVRElPX1NFU1NJT05fSUQ6IHsKKyAgICAgICAgICAgIENIRUNLX0lOVEVSRkFDRShJQXVkaW9GbGluZ2VyLCBkYXRhLCByZXBseSk7CisgICAgICAgICAgICByZXBseS0+d3JpdGVJbnQzMihuZXdBdWRpb1Nlc3Npb25JZCgpKTsKKyAgICAgICAgICAgIHJldHVybiBOT19FUlJPUjsKKyAgICAgICAgfSBicmVhazsKKyAgICAgICAgY2FzZSBMT0FEX0VGRkVDVF9MSUJSQVJZOiB7CisgICAgICAgICAgICBDSEVDS19JTlRFUkZBQ0UoSUF1ZGlvRmxpbmdlciwgZGF0YSwgcmVwbHkpOworICAgICAgICAgICAgaW50IGhhbmRsZTsKKyAgICAgICAgICAgIHN0YXR1c190IHN0YXR1cyA9IGxvYWRFZmZlY3RMaWJyYXJ5KGRhdGEucmVhZENTdHJpbmcoKSwgJmhhbmRsZSk7CisgICAgICAgICAgICByZXBseS0+d3JpdGVJbnQzMihzdGF0dXMpOworICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSBOT19FUlJPUikgeworICAgICAgICAgICAgICAgIHJlcGx5LT53cml0ZUludDMyKGhhbmRsZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gTk9fRVJST1I7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBVTkxPQURfRUZGRUNUX0xJQlJBUlk6IHsKKyAgICAgICAgICAgIENIRUNLX0lOVEVSRkFDRShJQXVkaW9GbGluZ2VyLCBkYXRhLCByZXBseSk7CisgICAgICAgICAgICByZXBseS0+d3JpdGVJbnQzMih1bmxvYWRFZmZlY3RMaWJyYXJ5KGRhdGEucmVhZEludDMyKCkpKTsKKyAgICAgICAgICAgIHJldHVybiBOT19FUlJPUjsKKyAgICAgICAgfQorICAgICAgICBjYXNlIFFVRVJZX05VTV9FRkZFQ1RTOiB7CisgICAgICAgICAgICBDSEVDS19JTlRFUkZBQ0UoSUF1ZGlvRmxpbmdlciwgZGF0YSwgcmVwbHkpOworICAgICAgICAgICAgdWludDMyX3QgbnVtRWZmZWN0czsKKyAgICAgICAgICAgIHN0YXR1c190IHN0YXR1cyA9IHF1ZXJ5TnVtYmVyRWZmZWN0cygmbnVtRWZmZWN0cyk7CisgICAgICAgICAgICByZXBseS0+d3JpdGVJbnQzMihzdGF0dXMpOworICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSBOT19FUlJPUikgeworICAgICAgICAgICAgICAgIHJlcGx5LT53cml0ZUludDMyKChpbnQzMl90KW51bUVmZmVjdHMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIE5PX0VSUk9SOworICAgICAgICB9CisgICAgICAgIGNhc2UgUVVFUllfRUZGRUNUOiB7CisgICAgICAgICAgICBDSEVDS19JTlRFUkZBQ0UoSUF1ZGlvRmxpbmdlciwgZGF0YSwgcmVwbHkpOworICAgICAgICAgICAgZWZmZWN0X2Rlc2NyaXB0b3JfdCBkZXNjOworICAgICAgICAgICAgc3RhdHVzX3Qgc3RhdHVzID0gcXVlcnlFZmZlY3QoZGF0YS5yZWFkSW50MzIoKSwgJmRlc2MpOworICAgICAgICAgICAgcmVwbHktPndyaXRlSW50MzIoc3RhdHVzKTsKKyAgICAgICAgICAgIGlmIChzdGF0dXMgPT0gTk9fRVJST1IpIHsKKyAgICAgICAgICAgICAgICByZXBseS0+d3JpdGUoJmRlc2MsIHNpemVvZihlZmZlY3RfZGVzY3JpcHRvcl90KSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gTk9fRVJST1I7CisgICAgICAgIH0KKyAgICAgICAgY2FzZSBHRVRfRUZGRUNUX0RFU0NSSVBUT1I6IHsKKyAgICAgICAgICAgIENIRUNLX0lOVEVSRkFDRShJQXVkaW9GbGluZ2VyLCBkYXRhLCByZXBseSk7CisgICAgICAgICAgICBlZmZlY3RfdXVpZF90IHV1aWQ7CisgICAgICAgICAgICBkYXRhLnJlYWQoJnV1aWQsIHNpemVvZihlZmZlY3RfdXVpZF90KSk7CisgICAgICAgICAgICBlZmZlY3RfZGVzY3JpcHRvcl90IGRlc2M7CisgICAgICAgICAgICBzdGF0dXNfdCBzdGF0dXMgPSBnZXRFZmZlY3REZXNjcmlwdG9yKCZ1dWlkLCAmZGVzYyk7CisgICAgICAgICAgICByZXBseS0+d3JpdGVJbnQzMihzdGF0dXMpOworICAgICAgICAgICAgaWYgKHN0YXR1cyA9PSBOT19FUlJPUikgeworICAgICAgICAgICAgICAgIHJlcGx5LT53cml0ZSgmZGVzYywgc2l6ZW9mKGVmZmVjdF9kZXNjcmlwdG9yX3QpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBOT19FUlJPUjsKKyAgICAgICAgfQorICAgICAgICBjYXNlIENSRUFURV9FRkZFQ1Q6IHsKKyAgICAgICAgICAgIENIRUNLX0lOVEVSRkFDRShJQXVkaW9GbGluZ2VyLCBkYXRhLCByZXBseSk7CisgICAgICAgICAgICBwaWRfdCBwaWQgPSBkYXRhLnJlYWRJbnQzMigpOworICAgICAgICAgICAgZWZmZWN0X2Rlc2NyaXB0b3JfdCBkZXNjOworICAgICAgICAgICAgZGF0YS5yZWFkKCZkZXNjLCBzaXplb2YoZWZmZWN0X2Rlc2NyaXB0b3JfdCkpOworICAgICAgICAgICAgc3A8SUVmZmVjdENsaWVudD4gY2xpZW50ID0gaW50ZXJmYWNlX2Nhc3Q8SUVmZmVjdENsaWVudD4oZGF0YS5yZWFkU3Ryb25nQmluZGVyKCkpOworICAgICAgICAgICAgaW50MzJfdCBwcmlvcml0eSA9IGRhdGEucmVhZEludDMyKCk7CisgICAgICAgICAgICBpbnQgb3V0cHV0ID0gZGF0YS5yZWFkSW50MzIoKTsKKyAgICAgICAgICAgIGludCBzZXNzaW9uSWQgPSBkYXRhLnJlYWRJbnQzMigpOworICAgICAgICAgICAgc3RhdHVzX3Qgc3RhdHVzOworICAgICAgICAgICAgaW50IGlkOworICAgICAgICAgICAgaW50IGVuYWJsZWQ7CiAKKyAgICAgICAgICAgIHNwPElFZmZlY3Q+IGVmZmVjdCA9IGNyZWF0ZUVmZmVjdChwaWQsICZkZXNjLCBjbGllbnQsIHByaW9yaXR5LCBvdXRwdXQsIHNlc3Npb25JZCwgJnN0YXR1cywgJmlkLCAmZW5hYmxlZCk7CisgICAgICAgICAgICByZXBseS0+d3JpdGVJbnQzMihzdGF0dXMpOworICAgICAgICAgICAgcmVwbHktPndyaXRlSW50MzIoaWQpOworICAgICAgICAgICAgcmVwbHktPndyaXRlSW50MzIoZW5hYmxlZCk7CisgICAgICAgICAgICByZXBseS0+d3JpdGVTdHJvbmdCaW5kZXIoZWZmZWN0LT5hc0JpbmRlcigpKTsKKyAgICAgICAgICAgIHJlcGx5LT53cml0ZSgmZGVzYywgc2l6ZW9mKGVmZmVjdF9kZXNjcmlwdG9yX3QpKTsKKyAgICAgICAgICAgIHJldHVybiBOT19FUlJPUjsKKyAgICAgICAgfSBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIHJldHVybiBCQmluZGVyOjpvblRyYW5zYWN0KGNvZGUsIGRhdGEsIHJlcGx5LCBmbGFncyk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlibWVkaWEvSUF1ZGlvVHJhY2suY3BwIGIvbWVkaWEvbGlibWVkaWEvSUF1ZGlvVHJhY2suY3BwCmluZGV4IDAxZmZkNzUuLmJjOGZmMzQgMTAwNjQ0Ci0tLSBhL21lZGlhL2xpYm1lZGlhL0lBdWRpb1RyYWNrLmNwcAorKysgYi9tZWRpYS9saWJtZWRpYS9JQXVkaW9UcmFjay5jcHAKQEAgLTM0LDcgKzM0LDggQEAKICAgICBTVE9QLAogICAgIEZMVVNILAogICAgIE1VVEUsCi0gICAgUEFVU0UKKyAgICBQQVVTRSwKKyAgICBBVFRBQ0hfQVVYX0VGRkVDVAogfTsKIAogY2xhc3MgQnBBdWRpb1RyYWNrIDogcHVibGljIEJwSW50ZXJmYWNlPElBdWRpb1RyYWNrPgpAQCAtOTcsNyArOTgsMjEgQEAKICAgICAgICAgICAgIGNibGsgPSBpbnRlcmZhY2VfY2FzdDxJTWVtb3J5PihyZXBseS5yZWFkU3Ryb25nQmluZGVyKCkpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBjYmxrOwotICAgIH0gICAgCisgICAgfQorCisgICAgdmlydHVhbCBzdGF0dXNfdCBhdHRhY2hBdXhFZmZlY3QoaW50IGVmZmVjdElkKQorICAgIHsKKyAgICAgICAgUGFyY2VsIGRhdGEsIHJlcGx5OworICAgICAgICBkYXRhLndyaXRlSW50ZXJmYWNlVG9rZW4oSUF1ZGlvVHJhY2s6OmdldEludGVyZmFjZURlc2NyaXB0b3IoKSk7CisgICAgICAgIGRhdGEud3JpdGVJbnQzMihlZmZlY3RJZCk7CisgICAgICAgIHN0YXR1c190IHN0YXR1cyA9IHJlbW90ZSgpLT50cmFuc2FjdChBVFRBQ0hfQVVYX0VGRkVDVCwgZGF0YSwgJnJlcGx5KTsKKyAgICAgICAgaWYgKHN0YXR1cyA9PSBOT19FUlJPUikgeworICAgICAgICAgICAgc3RhdHVzID0gcmVwbHkucmVhZEludDMyKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBMT0dXKCJhdHRhY2hBdXhFZmZlY3QoKSBlcnJvcjogJXMiLCBzdHJlcnJvcigtc3RhdHVzKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHN0YXR1czsKKyAgICB9CiB9OwogCiBJTVBMRU1FTlRfTUVUQV9JTlRFUkZBQ0UoQXVkaW9UcmFjaywgImFuZHJvaWQubWVkaWEuSUF1ZGlvVHJhY2siKTsKQEAgLTEzOCw2ICsxNTMsMTEgQEAKICAgICAgICAgICAgIHBhdXNlKCk7CiAgICAgICAgICAgICByZXR1cm4gTk9fRVJST1I7CiAgICAgICAgIH0KKyAgICAgICAgY2FzZSBBVFRBQ0hfQVVYX0VGRkVDVDogeworICAgICAgICAgICAgQ0hFQ0tfSU5URVJGQUNFKElBdWRpb1RyYWNrLCBkYXRhLCByZXBseSk7CisgICAgICAgICAgICByZXBseS0+d3JpdGVJbnQzMihhdHRhY2hBdXhFZmZlY3QoZGF0YS5yZWFkSW50MzIoKSkpOworICAgICAgICAgICAgcmV0dXJuIE5PX0VSUk9SOworICAgICAgICB9IGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIEJCaW5kZXI6Om9uVHJhbnNhY3QoY29kZSwgZGF0YSwgcmVwbHksIGZsYWdzKTsKICAgICB9CmRpZmYgLS1naXQgYS9tZWRpYS9saWJtZWRpYS9JRWZmZWN0LmNwcCBiL21lZGlhL2xpYm1lZGlhL0lFZmZlY3QuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlM2FjNzEKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJtZWRpYS9JRWZmZWN0LmNwcApAQCAtMCwwICsxLDE5MSBAQAorLyoKKyoqCisqKiBDb3B5cmlnaHQgMjAxMCwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorKioKKyoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisqKgorKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorKioKKyoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorKi8KKworLy8jZGVmaW5lIExPR19OREVCVUcgMAorI2RlZmluZSBMT0dfVEFHICJJRWZmZWN0IgorI2luY2x1ZGUgPHV0aWxzL0xvZy5oPgorI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2luY2x1ZGUgPGJpbmRlci9QYXJjZWwuaD4KKyNpbmNsdWRlIDxtZWRpYS9JRWZmZWN0Lmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworZW51bSB7CisgICAgRU5BQkxFID0gSUJpbmRlcjo6RklSU1RfQ0FMTF9UUkFOU0FDVElPTiwKKyAgICBESVNBQkxFLAorICAgIENPTU1BTkQsCisgICAgRElTQ09OTkVDVCwKKyAgICBHRVRfQ0JMSworfTsKKworY2xhc3MgQnBFZmZlY3Q6IHB1YmxpYyBCcEludGVyZmFjZTxJRWZmZWN0PgoreworcHVibGljOgorICAgIEJwRWZmZWN0KGNvbnN0IHNwPElCaW5kZXI+JiBpbXBsKQorICAgICAgICA6IEJwSW50ZXJmYWNlPElFZmZlY3Q+KGltcGwpCisgICAgeworICAgIH0KKworICAgIHN0YXR1c190IGVuYWJsZSgpCisgICAgeworICAgICAgICBMT0dWKCJlbmFibGUiKTsKKyAgICAgICAgUGFyY2VsIGRhdGEsIHJlcGx5OworICAgICAgICBkYXRhLndyaXRlSW50ZXJmYWNlVG9rZW4oSUVmZmVjdDo6Z2V0SW50ZXJmYWNlRGVzY3JpcHRvcigpKTsKKyAgICAgICAgcmVtb3RlKCktPnRyYW5zYWN0KEVOQUJMRSwgZGF0YSwgJnJlcGx5KTsKKyAgICAgICAgcmV0dXJuIHJlcGx5LnJlYWRJbnQzMigpOworICAgIH0KKworICAgIHN0YXR1c190IGRpc2FibGUoKQorICAgIHsKKyAgICAgICAgTE9HVigiZGlzYWJsZSIpOworICAgICAgICBQYXJjZWwgZGF0YSwgcmVwbHk7CisgICAgICAgIGRhdGEud3JpdGVJbnRlcmZhY2VUb2tlbihJRWZmZWN0OjpnZXRJbnRlcmZhY2VEZXNjcmlwdG9yKCkpOworICAgICAgICByZW1vdGUoKS0+dHJhbnNhY3QoRElTQUJMRSwgZGF0YSwgJnJlcGx5KTsKKyAgICAgICAgcmV0dXJuIHJlcGx5LnJlYWRJbnQzMigpOworICAgIH0KKworICAgIHN0YXR1c190IGNvbW1hbmQoaW50IGNtZENvZGUsIGludCBjbWRTaXplLCB2b2lkICpwQ21kRGF0YSwgaW50ICpwUmVwbHlTaXplLCB2b2lkICpwUmVwbHlEYXRhKQorICAgIHsKKyAgICAgICAgTE9HVigiY29tbWFuZCIpOworICAgICAgICBQYXJjZWwgZGF0YSwgcmVwbHk7CisgICAgICAgIGRhdGEud3JpdGVJbnRlcmZhY2VUb2tlbihJRWZmZWN0OjpnZXRJbnRlcmZhY2VEZXNjcmlwdG9yKCkpOworICAgICAgICBkYXRhLndyaXRlSW50MzIoY21kQ29kZSk7CisgICAgICAgIGludCBzaXplID0gY21kU2l6ZTsKKyAgICAgICAgaWYgKHBDbWREYXRhID09IE5VTEwpIHsKKyAgICAgICAgICAgIHNpemUgPSAwOworICAgICAgICB9CisgICAgICAgIGRhdGEud3JpdGVJbnQzMihzaXplKTsKKyAgICAgICAgaWYgKHNpemUpIHsKKyAgICAgICAgICAgIGRhdGEud3JpdGUocENtZERhdGEsIHNpemUpOworICAgICAgICB9CisgICAgICAgIGlmIChwUmVwbHlTaXplID09IE5VTEwpIHsKKyAgICAgICAgICAgIHNpemUgPSAwOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2l6ZSA9ICpwUmVwbHlTaXplOworICAgICAgICB9CisgICAgICAgIGRhdGEud3JpdGVJbnQzMihzaXplKTsKKyAgICAgICAgcmVtb3RlKCktPnRyYW5zYWN0KENPTU1BTkQsIGRhdGEsICZyZXBseSk7CisgICAgICAgIHN0YXR1c190IHN0YXR1cyA9IHJlcGx5LnJlYWRJbnQzMigpOworICAgICAgICBzaXplID0gcmVwbHkucmVhZEludDMyKCk7CisgICAgICAgIGlmIChzaXplICE9IDAgJiYgcFJlcGx5RGF0YSAhPSBOVUxMICYmIHBSZXBseVNpemUgIT0gTlVMTCkgeworICAgICAgICAgICAgcmVwbHkucmVhZChwUmVwbHlEYXRhLCBzaXplKTsKKyAgICAgICAgICAgICpwUmVwbHlTaXplID0gc2l6ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc3RhdHVzOworICAgIH0KKworICAgIHZvaWQgZGlzY29ubmVjdCgpCisgICAgeworICAgICAgICBMT0dWKCJkaXNjb25uZWN0Iik7CisgICAgICAgIFBhcmNlbCBkYXRhLCByZXBseTsKKyAgICAgICAgZGF0YS53cml0ZUludGVyZmFjZVRva2VuKElFZmZlY3Q6OmdldEludGVyZmFjZURlc2NyaXB0b3IoKSk7CisgICAgICAgIHJlbW90ZSgpLT50cmFuc2FjdChESVNDT05ORUNULCBkYXRhLCAmcmVwbHkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgdmlydHVhbCBzcDxJTWVtb3J5PiBnZXRDYmxrKCkgY29uc3QKKyAgICB7CisgICAgICAgIFBhcmNlbCBkYXRhLCByZXBseTsKKyAgICAgICAgc3A8SU1lbW9yeT4gY2JsazsKKyAgICAgICAgZGF0YS53cml0ZUludGVyZmFjZVRva2VuKElFZmZlY3Q6OmdldEludGVyZmFjZURlc2NyaXB0b3IoKSk7CisgICAgICAgIHN0YXR1c190IHN0YXR1cyA9IHJlbW90ZSgpLT50cmFuc2FjdChHRVRfQ0JMSywgZGF0YSwgJnJlcGx5KTsKKyAgICAgICAgaWYgKHN0YXR1cyA9PSBOT19FUlJPUikgeworICAgICAgICAgICAgY2JsayA9IGludGVyZmFjZV9jYXN0PElNZW1vcnk+KHJlcGx5LnJlYWRTdHJvbmdCaW5kZXIoKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGNibGs7CisgICAgfQorIH07CisKK0lNUExFTUVOVF9NRVRBX0lOVEVSRkFDRShFZmZlY3QsICJhbmRyb2lkLm1lZGlhLklFZmZlY3QiKTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdGF0dXNfdCBCbkVmZmVjdDo6b25UcmFuc2FjdCgKKyAgICB1aW50MzJfdCBjb2RlLCBjb25zdCBQYXJjZWwmIGRhdGEsIFBhcmNlbCogcmVwbHksIHVpbnQzMl90IGZsYWdzKQoreworICAgIHN3aXRjaChjb2RlKSB7CisgICAgICAgIGNhc2UgRU5BQkxFOiB7CisgICAgICAgICAgICBMT0dWKCJFTkFCTEUiKTsKKyAgICAgICAgICAgIENIRUNLX0lOVEVSRkFDRShJRWZmZWN0LCBkYXRhLCByZXBseSk7CisgICAgICAgICAgICByZXBseS0+d3JpdGVJbnQzMihlbmFibGUoKSk7CisgICAgICAgICAgICByZXR1cm4gTk9fRVJST1I7CisgICAgICAgIH0gYnJlYWs7CisKKyAgICAgICAgY2FzZSBESVNBQkxFOiB7CisgICAgICAgICAgICBMT0dWKCJESVNBQkxFIik7CisgICAgICAgICAgICBDSEVDS19JTlRFUkZBQ0UoSUVmZmVjdCwgZGF0YSwgcmVwbHkpOworICAgICAgICAgICAgcmVwbHktPndyaXRlSW50MzIoZGlzYWJsZSgpKTsKKyAgICAgICAgICAgIHJldHVybiBOT19FUlJPUjsKKyAgICAgICAgfSBicmVhazsKKworICAgICAgICBjYXNlIENPTU1BTkQ6IHsKKyAgICAgICAgICAgIExPR1YoIkNPTU1BTkQiKTsKKyAgICAgICAgICAgIENIRUNLX0lOVEVSRkFDRShJRWZmZWN0LCBkYXRhLCByZXBseSk7CisgICAgICAgICAgICBpbnQgY21kQ29kZSA9IGRhdGEucmVhZEludDMyKCk7CisgICAgICAgICAgICBpbnQgY21kU2l6ZSA9IGRhdGEucmVhZEludDMyKCk7CisgICAgICAgICAgICBjaGFyICpjbWQgPSBOVUxMOworICAgICAgICAgICAgaWYgKGNtZFNpemUpIHsKKyAgICAgICAgICAgICAgICBjbWQgPSAoY2hhciAqKW1hbGxvYyhjbWRTaXplKTsKKyAgICAgICAgICAgICAgICBkYXRhLnJlYWQoY21kLCBjbWRTaXplKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGludCByZXBseVNpemUgPSBkYXRhLnJlYWRJbnQzMigpOworICAgICAgICAgICAgaW50IHJlcGx5U3ogPSByZXBseVNpemU7CisgICAgICAgICAgICBjaGFyICpyZXNwID0gTlVMTDsKKyAgICAgICAgICAgIGlmIChyZXBseVNpemUpIHsKKyAgICAgICAgICAgICAgICByZXNwID0gKGNoYXIgKiltYWxsb2MocmVwbHlTaXplKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0YXR1c190IHN0YXR1cyA9IGNvbW1hbmQoY21kQ29kZSwgY21kU2l6ZSwgY21kLCAmcmVwbHlTeiwgcmVzcCk7CisgICAgICAgICAgICByZXBseS0+d3JpdGVJbnQzMihzdGF0dXMpOworICAgICAgICAgICAgaWYgKHJlcGx5U3ogPCByZXBseVNpemUpIHsKKyAgICAgICAgICAgICAgICByZXBseVNpemUgPSByZXBseVN6OworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVwbHktPndyaXRlSW50MzIocmVwbHlTaXplKTsKKyAgICAgICAgICAgIGlmIChyZXBseVNpemUpIHsKKyAgICAgICAgICAgICAgICByZXBseS0+d3JpdGUocmVzcCwgcmVwbHlTaXplKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjbWQpIHsKKyAgICAgICAgICAgICAgICBmcmVlKGNtZCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocmVzcCkgeworICAgICAgICAgICAgICAgIGZyZWUocmVzcCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gTk9fRVJST1I7CisgICAgICAgIH0gYnJlYWs7CisKKyAgICAgICAgY2FzZSBESVNDT05ORUNUOiB7CisgICAgICAgICAgICBMT0dWKCJESVNDT05ORUNUIik7CisgICAgICAgICAgICBDSEVDS19JTlRFUkZBQ0UoSUVmZmVjdCwgZGF0YSwgcmVwbHkpOworICAgICAgICAgICAgZGlzY29ubmVjdCgpOworICAgICAgICAgICAgcmV0dXJuIE5PX0VSUk9SOworICAgICAgICB9IGJyZWFrOworCisgICAgICAgIGNhc2UgR0VUX0NCTEs6IHsKKyAgICAgICAgICAgICBDSEVDS19JTlRFUkZBQ0UoSUVmZmVjdCwgZGF0YSwgcmVwbHkpOworICAgICAgICAgICAgIHJlcGx5LT53cml0ZVN0cm9uZ0JpbmRlcihnZXRDYmxrKCktPmFzQmluZGVyKCkpOworICAgICAgICAgICAgIHJldHVybiBOT19FUlJPUjsKKyAgICAgICAgIH0gYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBCQmluZGVyOjpvblRyYW5zYWN0KGNvZGUsIGRhdGEsIHJlcGx5LCBmbGFncyk7CisgICAgfQorfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK307IC8vIG5hbWVzcGFjZSBhbmRyb2lkCisKZGlmZiAtLWdpdCBhL21lZGlhL2xpYm1lZGlhL0lFZmZlY3RDbGllbnQuY3BwIGIvbWVkaWEvbGlibWVkaWEvSUVmZmVjdENsaWVudC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTc2NTlhZQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYm1lZGlhL0lFZmZlY3RDbGllbnQuY3BwCkBAIC0wLDAgKzEsMTQxIEBACisvKgorKioKKyoqIENvcHlyaWdodCAyMDEwLCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisqKgorKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyoqCisqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisqKgorKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisqLworCisvLyNkZWZpbmUgTE9HX05ERUJVRyAwCisjZGVmaW5lIExPR19UQUcgIklFZmZlY3RDbGllbnQiCisjaW5jbHVkZSA8dXRpbHMvTG9nLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8bWVkaWEvSUVmZmVjdENsaWVudC5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK2VudW0geworICAgIENPTlRST0xfU1RBVFVTX0NIQU5HRUQgPSBJQmluZGVyOjpGSVJTVF9DQUxMX1RSQU5TQUNUSU9OLAorICAgIEVOQUJMRV9TVEFUVVNfQ0hBTkdFRCwKKyAgICBDT01NQU5EX0VYRUNVVEVECit9OworCitjbGFzcyBCcEVmZmVjdENsaWVudDogcHVibGljIEJwSW50ZXJmYWNlPElFZmZlY3RDbGllbnQ+Cit7CitwdWJsaWM6CisgICAgQnBFZmZlY3RDbGllbnQoY29uc3Qgc3A8SUJpbmRlcj4mIGltcGwpCisgICAgICAgIDogQnBJbnRlcmZhY2U8SUVmZmVjdENsaWVudD4oaW1wbCkKKyAgICB7CisgICAgfQorCisgICAgdm9pZCBjb250cm9sU3RhdHVzQ2hhbmdlZChib29sIGNvbnRyb2xHcmFudGVkKQorICAgIHsKKyAgICAgICAgTE9HVigiY29udHJvbFN0YXR1c0NoYW5nZWQiKTsKKyAgICAgICAgUGFyY2VsIGRhdGEsIHJlcGx5OworICAgICAgICBkYXRhLndyaXRlSW50ZXJmYWNlVG9rZW4oSUVmZmVjdENsaWVudDo6Z2V0SW50ZXJmYWNlRGVzY3JpcHRvcigpKTsKKyAgICAgICAgZGF0YS53cml0ZUludDMyKCh1aW50MzJfdCljb250cm9sR3JhbnRlZCk7CisgICAgICAgIHJlbW90ZSgpLT50cmFuc2FjdChDT05UUk9MX1NUQVRVU19DSEFOR0VELCBkYXRhLCAmcmVwbHksIElCaW5kZXI6OkZMQUdfT05FV0FZKTsKKyAgICB9CisKKyAgICB2b2lkIGVuYWJsZVN0YXR1c0NoYW5nZWQoYm9vbCBlbmFibGVkKQorICAgIHsKKyAgICAgICAgTE9HVigiZW5hYmxlU3RhdHVzQ2hhbmdlZCIpOworICAgICAgICBQYXJjZWwgZGF0YSwgcmVwbHk7CisgICAgICAgIGRhdGEud3JpdGVJbnRlcmZhY2VUb2tlbihJRWZmZWN0Q2xpZW50OjpnZXRJbnRlcmZhY2VEZXNjcmlwdG9yKCkpOworICAgICAgICBkYXRhLndyaXRlSW50MzIoKHVpbnQzMl90KWVuYWJsZWQpOworICAgICAgICByZW1vdGUoKS0+dHJhbnNhY3QoRU5BQkxFX1NUQVRVU19DSEFOR0VELCBkYXRhLCAmcmVwbHksIElCaW5kZXI6OkZMQUdfT05FV0FZKTsKKyAgICB9CisKKyAgICB2b2lkIGNvbW1hbmRFeGVjdXRlZChpbnQgY21kQ29kZSwgaW50IGNtZFNpemUsIHZvaWQgKnBDbWREYXRhLCBpbnQgcmVwbHlTaXplLCB2b2lkICpwUmVwbHlEYXRhKQorICAgIHsKKyAgICAgICAgTE9HVigiY29tbWFuZEV4ZWN1dGVkIik7CisgICAgICAgIFBhcmNlbCBkYXRhLCByZXBseTsKKyAgICAgICAgZGF0YS53cml0ZUludGVyZmFjZVRva2VuKElFZmZlY3RDbGllbnQ6OmdldEludGVyZmFjZURlc2NyaXB0b3IoKSk7CisgICAgICAgIGRhdGEud3JpdGVJbnQzMihjbWRDb2RlKTsKKyAgICAgICAgaW50IHNpemUgPSBjbWRTaXplOworICAgICAgICBpZiAocENtZERhdGEgPT0gTlVMTCkgeworICAgICAgICAgICAgc2l6ZSA9IDA7CisgICAgICAgIH0KKyAgICAgICAgZGF0YS53cml0ZUludDMyKHNpemUpOworICAgICAgICBpZiAoc2l6ZSkgeworICAgICAgICAgICAgZGF0YS53cml0ZShwQ21kRGF0YSwgc2l6ZSk7CisgICAgICAgIH0KKyAgICAgICAgc2l6ZSA9IHJlcGx5U2l6ZTsKKyAgICAgICAgaWYgKHBSZXBseURhdGEgPT0gTlVMTCkgeworICAgICAgICAgICAgc2l6ZSA9IDA7CisgICAgICAgIH0KKyAgICAgICAgZGF0YS53cml0ZUludDMyKHNpemUpOworICAgICAgICBpZiAoc2l6ZSkgeworICAgICAgICAgICAgZGF0YS53cml0ZShwUmVwbHlEYXRhLCBzaXplKTsKKyAgICAgICAgfQorICAgICAgICByZW1vdGUoKS0+dHJhbnNhY3QoQ09NTUFORF9FWEVDVVRFRCwgZGF0YSwgJnJlcGx5LCBJQmluZGVyOjpGTEFHX09ORVdBWSk7CisgICAgfQorCit9OworCitJTVBMRU1FTlRfTUVUQV9JTlRFUkZBQ0UoRWZmZWN0Q2xpZW50LCAiYW5kcm9pZC5tZWRpYS5JRWZmZWN0Q2xpZW50Iik7CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworc3RhdHVzX3QgQm5FZmZlY3RDbGllbnQ6Om9uVHJhbnNhY3QoCisgICAgdWludDMyX3QgY29kZSwgY29uc3QgUGFyY2VsJiBkYXRhLCBQYXJjZWwqIHJlcGx5LCB1aW50MzJfdCBmbGFncykKK3sKKyAgICBzd2l0Y2goY29kZSkgeworICAgICAgICBjYXNlIENPTlRST0xfU1RBVFVTX0NIQU5HRUQ6IHsKKyAgICAgICAgICAgIExPR1YoIkNPTlRST0xfU1RBVFVTX0NIQU5HRUQiKTsKKyAgICAgICAgICAgIENIRUNLX0lOVEVSRkFDRShJRWZmZWN0Q2xpZW50LCBkYXRhLCByZXBseSk7CisgICAgICAgICAgICBib29sIGhhc0NvbnRyb2wgPSAoYm9vbClkYXRhLnJlYWRJbnQzMigpOworICAgICAgICAgICAgY29udHJvbFN0YXR1c0NoYW5nZWQoaGFzQ29udHJvbCk7CisgICAgICAgICAgICByZXR1cm4gTk9fRVJST1I7CisgICAgICAgIH0gYnJlYWs7CisgICAgICAgIGNhc2UgRU5BQkxFX1NUQVRVU19DSEFOR0VEOiB7CisgICAgICAgICAgICBMT0dWKCJFTkFCTEVfU1RBVFVTX0NIQU5HRUQiKTsKKyAgICAgICAgICAgIENIRUNLX0lOVEVSRkFDRShJRWZmZWN0Q2xpZW50LCBkYXRhLCByZXBseSk7CisgICAgICAgICAgICBib29sIGVuYWJsZWQgPSAoYm9vbClkYXRhLnJlYWRJbnQzMigpOworICAgICAgICAgICAgZW5hYmxlU3RhdHVzQ2hhbmdlZChlbmFibGVkKTsKKyAgICAgICAgICAgIHJldHVybiBOT19FUlJPUjsKKyAgICAgICAgfSBicmVhazsKKyAgICAgICAgY2FzZSBDT01NQU5EX0VYRUNVVEVEOiB7CisgICAgICAgICAgICBMT0dWKCJDT01NQU5EX0VYRUNVVEVEIik7CisgICAgICAgICAgICBDSEVDS19JTlRFUkZBQ0UoSUVmZmVjdENsaWVudCwgZGF0YSwgcmVwbHkpOworICAgICAgICAgICAgaW50IGNtZENvZGUgPSBkYXRhLnJlYWRJbnQzMigpOworICAgICAgICAgICAgaW50IGNtZFNpemUgPSBkYXRhLnJlYWRJbnQzMigpOworICAgICAgICAgICAgY2hhciAqY21kID0gTlVMTDsKKyAgICAgICAgICAgIGlmIChjbWRTaXplKSB7CisgICAgICAgICAgICAgICAgY21kID0gKGNoYXIgKiltYWxsb2MoY21kU2l6ZSk7CisgICAgICAgICAgICAgICAgZGF0YS5yZWFkKGNtZCwgY21kU2l6ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbnQgcmVwbHlTaXplID0gZGF0YS5yZWFkSW50MzIoKTsKKyAgICAgICAgICAgIGNoYXIgKnJlc3AgPSBOVUxMOworICAgICAgICAgICAgaWYgKHJlcGx5U2l6ZSkgeworICAgICAgICAgICAgICAgIHJlc3AgPSAoY2hhciAqKW1hbGxvYyhyZXBseVNpemUpOworICAgICAgICAgICAgICAgIGRhdGEucmVhZChyZXNwLCByZXBseVNpemUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY29tbWFuZEV4ZWN1dGVkKGNtZENvZGUsIGNtZFNpemUsIGNtZCwgcmVwbHlTaXplLCByZXNwKTsKKyAgICAgICAgICAgIGlmIChjbWQpIHsKKyAgICAgICAgICAgICAgICBmcmVlKGNtZCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAocmVzcCkgeworICAgICAgICAgICAgICAgIGZyZWUocmVzcCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gTk9fRVJST1I7CisgICAgICAgIH0gYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gQkJpbmRlcjo6b25UcmFuc2FjdChjb2RlLCBkYXRhLCByZXBseSwgZmxhZ3MpOworICAgIH0KK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit9OyAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCmRpZmYgLS1naXQgYS9tZWRpYS9saWJtZWRpYS9JTWVkaWFQbGF5ZXJTZXJ2aWNlLmNwcCBiL21lZGlhL2xpYm1lZGlhL0lNZWRpYVBsYXllclNlcnZpY2UuY3BwCmluZGV4IDcxYzVmODYuLjRhYmZhNzUgMTAwNjQ0Ci0tLSBhL21lZGlhL2xpYm1lZGlhL0lNZWRpYVBsYXllclNlcnZpY2UuY3BwCisrKyBiL21lZGlhL2xpYm1lZGlhL0lNZWRpYVBsYXllclNlcnZpY2UuY3BwCkBAIC0zNSw4ICszNSw3IEBACiAgICAgREVDT0RFX0ZELAogICAgIENSRUFURV9NRURJQV9SRUNPUkRFUiwKICAgICBDUkVBVEVfTUVUQURBVEFfUkVUUklFVkVSLAotICAgIEdFVF9PTVgsCi0gICAgU05PT1AKKyAgICBHRVRfT01YCiB9OwogCiBjbGFzcyBCcE1lZGlhUGxheWVyU2VydmljZTogcHVibGljIEJwSW50ZXJmYWNlPElNZWRpYVBsYXllclNlcnZpY2U+CkBAIC01OCw3ICs1Nyw3IEBACiAKICAgICB2aXJ0dWFsIHNwPElNZWRpYVBsYXllcj4gY3JlYXRlKAogICAgICAgICAgICAgcGlkX3QgcGlkLCBjb25zdCBzcDxJTWVkaWFQbGF5ZXJDbGllbnQ+JiBjbGllbnQsCi0gICAgICAgICAgICBjb25zdCBjaGFyKiB1cmwsIGNvbnN0IEtleWVkVmVjdG9yPFN0cmluZzgsIFN0cmluZzg+ICpoZWFkZXJzKSB7CisgICAgICAgICAgICBjb25zdCBjaGFyKiB1cmwsIGNvbnN0IEtleWVkVmVjdG9yPFN0cmluZzgsIFN0cmluZzg+ICpoZWFkZXJzLCBpbnQgYXVkaW9TZXNzaW9uSWQpIHsKICAgICAgICAgUGFyY2VsIGRhdGEsIHJlcGx5OwogICAgICAgICBkYXRhLndyaXRlSW50ZXJmYWNlVG9rZW4oSU1lZGlhUGxheWVyU2VydmljZTo6Z2V0SW50ZXJmYWNlRGVzY3JpcHRvcigpKTsKICAgICAgICAgZGF0YS53cml0ZUludDMyKHBpZCk7CkBAIC03NSw4ICs3NCwxMCBAQAogICAgICAgICAgICAgICAgIGRhdGEud3JpdGVTdHJpbmc4KGhlYWRlcnMtPnZhbHVlQXQoaSkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIGRhdGEud3JpdGVJbnQzMihhdWRpb1Nlc3Npb25JZCk7CiAKICAgICAgICAgcmVtb3RlKCktPnRyYW5zYWN0KENSRUFURV9VUkwsIGRhdGEsICZyZXBseSk7CisKICAgICAgICAgcmV0dXJuIGludGVyZmFjZV9jYXN0PElNZWRpYVBsYXllcj4ocmVwbHkucmVhZFN0cm9uZ0JpbmRlcigpKTsKICAgICB9CiAKQEAgLTg5LDcgKzkwLDggQEAKICAgICAgICAgcmV0dXJuIGludGVyZmFjZV9jYXN0PElNZWRpYVJlY29yZGVyPihyZXBseS5yZWFkU3Ryb25nQmluZGVyKCkpOwogICAgIH0KIAotICAgIHZpcnR1YWwgc3A8SU1lZGlhUGxheWVyPiBjcmVhdGUocGlkX3QgcGlkLCBjb25zdCBzcDxJTWVkaWFQbGF5ZXJDbGllbnQ+JiBjbGllbnQsIGludCBmZCwgaW50NjRfdCBvZmZzZXQsIGludDY0X3QgbGVuZ3RoKQorICAgIHZpcnR1YWwgc3A8SU1lZGlhUGxheWVyPiBjcmVhdGUocGlkX3QgcGlkLCBjb25zdCBzcDxJTWVkaWFQbGF5ZXJDbGllbnQ+JiBjbGllbnQsIGludCBmZCwKKyAgICAgICAgICAgIGludDY0X3Qgb2Zmc2V0LCBpbnQ2NF90IGxlbmd0aCwgaW50IGF1ZGlvU2Vzc2lvbklkKQogICAgIHsKICAgICAgICAgUGFyY2VsIGRhdGEsIHJlcGx5OwogICAgICAgICBkYXRhLndyaXRlSW50ZXJmYWNlVG9rZW4oSU1lZGlhUGxheWVyU2VydmljZTo6Z2V0SW50ZXJmYWNlRGVzY3JpcHRvcigpKTsKQEAgLTk4LDggKzEwMCwxMSBAQAogICAgICAgICBkYXRhLndyaXRlRmlsZURlc2NyaXB0b3IoZmQpOwogICAgICAgICBkYXRhLndyaXRlSW50NjQob2Zmc2V0KTsKICAgICAgICAgZGF0YS53cml0ZUludDY0KGxlbmd0aCk7CisgICAgICAgIGRhdGEud3JpdGVJbnQzMihhdWRpb1Nlc3Npb25JZCk7CisKICAgICAgICAgcmVtb3RlKCktPnRyYW5zYWN0KENSRUFURV9GRCwgZGF0YSwgJnJlcGx5KTsKLSAgICAgICAgcmV0dXJuIGludGVyZmFjZV9jYXN0PElNZWRpYVBsYXllcj4ocmVwbHkucmVhZFN0cm9uZ0JpbmRlcigpKTsKKworICAgICAgICByZXR1cm4gaW50ZXJmYWNlX2Nhc3Q8SU1lZGlhUGxheWVyPihyZXBseS5yZWFkU3Ryb25nQmluZGVyKCkpOzsKICAgICB9CiAKICAgICB2aXJ0dWFsIHNwPElNZW1vcnk+IGRlY29kZShjb25zdCBjaGFyKiB1cmwsIHVpbnQzMl90ICpwU2FtcGxlUmF0ZSwgaW50KiBwTnVtQ2hhbm5lbHMsIGludCogcEZvcm1hdCkKQEAgLTEyOCwxNCArMTMzLDYgQEAKICAgICAgICAgcmV0dXJuIGludGVyZmFjZV9jYXN0PElNZW1vcnk+KHJlcGx5LnJlYWRTdHJvbmdCaW5kZXIoKSk7CiAgICAgfQogCi0gICAgdmlydHVhbCBzcDxJTWVtb3J5PiBzbm9vcCgpCi0gICAgewotICAgICAgICBQYXJjZWwgZGF0YSwgcmVwbHk7Ci0gICAgICAgIGRhdGEud3JpdGVJbnRlcmZhY2VUb2tlbihJTWVkaWFQbGF5ZXJTZXJ2aWNlOjpnZXRJbnRlcmZhY2VEZXNjcmlwdG9yKCkpOwotICAgICAgICByZW1vdGUoKS0+dHJhbnNhY3QoU05PT1AsIGRhdGEsICZyZXBseSk7Ci0gICAgICAgIHJldHVybiBpbnRlcmZhY2VfY2FzdDxJTWVtb3J5PihyZXBseS5yZWFkU3Ryb25nQmluZGVyKCkpOwotICAgIH0KLQogICAgIHZpcnR1YWwgc3A8SU9NWD4gZ2V0T01YKCkgewogICAgICAgICBQYXJjZWwgZGF0YSwgcmVwbHk7CiAgICAgICAgIGRhdGEud3JpdGVJbnRlcmZhY2VUb2tlbihJTWVkaWFQbGF5ZXJTZXJ2aWNlOjpnZXRJbnRlcmZhY2VEZXNjcmlwdG9yKCkpOwpAQCAtMTY2LDkgKzE2MywxMCBAQAogICAgICAgICAgICAgICAgIFN0cmluZzggdmFsdWUgPSBkYXRhLnJlYWRTdHJpbmc4KCk7CiAgICAgICAgICAgICAgICAgaGVhZGVycy5hZGQoa2V5LCB2YWx1ZSk7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpbnQgYXVkaW9TZXNzaW9uSWQgPSBkYXRhLnJlYWRJbnQzMigpOwogCiAgICAgICAgICAgICBzcDxJTWVkaWFQbGF5ZXI+IHBsYXllciA9IGNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgcGlkLCBjbGllbnQsIHVybCwgbnVtSGVhZGVycyA+IDAgPyAmaGVhZGVycyA6IE5VTEwpOworICAgICAgICAgICAgICAgICAgICBwaWQsIGNsaWVudCwgdXJsLCBudW1IZWFkZXJzID4gMCA/ICZoZWFkZXJzIDogTlVMTCwgYXVkaW9TZXNzaW9uSWQpOwogCiAgICAgICAgICAgICByZXBseS0+d3JpdGVTdHJvbmdCaW5kZXIocGxheWVyLT5hc0JpbmRlcigpKTsKICAgICAgICAgICAgIHJldHVybiBOT19FUlJPUjsKQEAgLTE4MCw3ICsxNzgsOSBAQAogICAgICAgICAgICAgaW50IGZkID0gZHVwKGRhdGEucmVhZEZpbGVEZXNjcmlwdG9yKCkpOwogICAgICAgICAgICAgaW50NjRfdCBvZmZzZXQgPSBkYXRhLnJlYWRJbnQ2NCgpOwogICAgICAgICAgICAgaW50NjRfdCBsZW5ndGggPSBkYXRhLnJlYWRJbnQ2NCgpOwotICAgICAgICAgICAgc3A8SU1lZGlhUGxheWVyPiBwbGF5ZXIgPSBjcmVhdGUocGlkLCBjbGllbnQsIGZkLCBvZmZzZXQsIGxlbmd0aCk7CisgICAgICAgICAgICBpbnQgYXVkaW9TZXNzaW9uSWQgPSBkYXRhLnJlYWRJbnQzMigpOworCisgICAgICAgICAgICBzcDxJTWVkaWFQbGF5ZXI+IHBsYXllciA9IGNyZWF0ZShwaWQsIGNsaWVudCwgZmQsIG9mZnNldCwgbGVuZ3RoLCBhdWRpb1Nlc3Npb25JZCk7CiAgICAgICAgICAgICByZXBseS0+d3JpdGVTdHJvbmdCaW5kZXIocGxheWVyLT5hc0JpbmRlcigpKTsKICAgICAgICAgICAgIHJldHVybiBOT19FUlJPUjsKICAgICAgICAgfSBicmVhazsKQEAgLTIxMiwxMiArMjEyLDYgQEAKICAgICAgICAgICAgIHJlcGx5LT53cml0ZVN0cm9uZ0JpbmRlcihwbGF5ZXItPmFzQmluZGVyKCkpOwogICAgICAgICAgICAgcmV0dXJuIE5PX0VSUk9SOwogICAgICAgICB9IGJyZWFrOwotICAgICAgICBjYXNlIFNOT09QOiB7Ci0gICAgICAgICAgICBDSEVDS19JTlRFUkZBQ0UoSU1lZGlhUGxheWVyU2VydmljZSwgZGF0YSwgcmVwbHkpOwotICAgICAgICAgICAgc3A8SU1lbW9yeT4gc25vb3BlZF9hdWRpbyA9IHNub29wKCk7Ci0gICAgICAgICAgICByZXBseS0+d3JpdGVTdHJvbmdCaW5kZXIoc25vb3BlZF9hdWRpby0+YXNCaW5kZXIoKSk7Ci0gICAgICAgICAgICByZXR1cm4gTk9fRVJST1I7Ci0gICAgICAgIH0gYnJlYWs7CiAgICAgICAgIGNhc2UgQ1JFQVRFX01FRElBX1JFQ09SREVSOiB7CiAgICAgICAgICAgICBDSEVDS19JTlRFUkZBQ0UoSU1lZGlhUGxheWVyU2VydmljZSwgZGF0YSwgcmVwbHkpOwogICAgICAgICAgICAgcGlkX3QgcGlkID0gZGF0YS5yZWFkSW50MzIoKTsKZGlmZiAtLWdpdCBhL21lZGlhL2xpYm1lZGlhL0lNZWRpYVJlY29yZGVyLmNwcCBiL21lZGlhL2xpYm1lZGlhL0lNZWRpYVJlY29yZGVyLmNwcAppbmRleCAyYmMyYTdlLi45ZmUyMDdjIDEwMDY0NAotLS0gYS9tZWRpYS9saWJtZWRpYS9JTWVkaWFSZWNvcmRlci5jcHAKKysrIGIvbWVkaWEvbGlibWVkaWEvSU1lZGlhUmVjb3JkZXIuY3BwCkBAIC0yMSw3ICsyMSw3IEBACiAjaW5jbHVkZSA8YmluZGVyL1BhcmNlbC5oPgogI2luY2x1ZGUgPHN1cmZhY2VmbGluZ2VyL0lTdXJmYWNlLmg+CiAjaW5jbHVkZSA8Y2FtZXJhL0lDYW1lcmEuaD4KLSNpbmNsdWRlIDxtZWRpYS9JTWVkaWFQbGF5ZXJDbGllbnQuaD4KKyNpbmNsdWRlIDxtZWRpYS9JTWVkaWFSZWNvcmRlckNsaWVudC5oPgogI2luY2x1ZGUgPG1lZGlhL0lNZWRpYVJlY29yZGVyLmg+CiAKIG5hbWVzcGFjZSBhbmRyb2lkIHsKQEAgLTE4OSw3ICsxODksNyBAQAogICAgICAgICByZXR1cm4gcmVwbHkucmVhZEludDMyKCk7CiAgICAgfQogCi0gICAgc3RhdHVzX3Qgc2V0TGlzdGVuZXIoY29uc3Qgc3A8SU1lZGlhUGxheWVyQ2xpZW50PiYgbGlzdGVuZXIpCisgICAgc3RhdHVzX3Qgc2V0TGlzdGVuZXIoY29uc3Qgc3A8SU1lZGlhUmVjb3JkZXJDbGllbnQ+JiBsaXN0ZW5lcikKICAgICB7CiAgICAgICAgIExPR1YoInNldExpc3RlbmVyKCVwKSIsIGxpc3RlbmVyLmdldCgpKTsKICAgICAgICAgUGFyY2VsIGRhdGEsIHJlcGx5OwpAQCAtMzk5LDggKzM5OSw4IEBACiAgICAgICAgIGNhc2UgU0VUX0xJU1RFTkVSOiB7CiAgICAgICAgICAgICBMT0dWKCJTRVRfTElTVEVORVIiKTsKICAgICAgICAgICAgIENIRUNLX0lOVEVSRkFDRShJTWVkaWFSZWNvcmRlciwgZGF0YSwgcmVwbHkpOwotICAgICAgICAgICAgc3A8SU1lZGlhUGxheWVyQ2xpZW50PiBsaXN0ZW5lciA9Ci0gICAgICAgICAgICAgICAgaW50ZXJmYWNlX2Nhc3Q8SU1lZGlhUGxheWVyQ2xpZW50PihkYXRhLnJlYWRTdHJvbmdCaW5kZXIoKSk7CisgICAgICAgICAgICBzcDxJTWVkaWFSZWNvcmRlckNsaWVudD4gbGlzdGVuZXIgPQorICAgICAgICAgICAgICAgIGludGVyZmFjZV9jYXN0PElNZWRpYVJlY29yZGVyQ2xpZW50PihkYXRhLnJlYWRTdHJvbmdCaW5kZXIoKSk7CiAgICAgICAgICAgICByZXBseS0+d3JpdGVJbnQzMihzZXRMaXN0ZW5lcihsaXN0ZW5lcikpOwogICAgICAgICAgICAgcmV0dXJuIE5PX0VSUk9SOwogICAgICAgICB9IGJyZWFrOwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlibWVkaWEvSU1lZGlhUmVjb3JkZXJDbGllbnQuY3BwIGIvbWVkaWEvbGlibWVkaWEvSU1lZGlhUmVjb3JkZXJDbGllbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmMjM1YzkKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJtZWRpYS9JTWVkaWFSZWNvcmRlckNsaWVudC5jcHAKQEAgLTAsMCArMSw3MCBAQAorLyoKKyoqCisqKiBDb3B5cmlnaHQgMjAxMCwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorKioKKyoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisqKgorKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorKioKKyoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorKi8KKworI2luY2x1ZGUgPHV0aWxzL1JlZkJhc2UuaD4KKyNpbmNsdWRlIDxiaW5kZXIvSUludGVyZmFjZS5oPgorI2luY2x1ZGUgPGJpbmRlci9QYXJjZWwuaD4KKworI2luY2x1ZGUgPG1lZGlhL0lNZWRpYVJlY29yZGVyQ2xpZW50Lmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworZW51bSB7CisgICAgTk9USUZZID0gSUJpbmRlcjo6RklSU1RfQ0FMTF9UUkFOU0FDVElPTiwKK307CisKK2NsYXNzIEJwTWVkaWFSZWNvcmRlckNsaWVudDogcHVibGljIEJwSW50ZXJmYWNlPElNZWRpYVJlY29yZGVyQ2xpZW50PgoreworcHVibGljOgorICAgIEJwTWVkaWFSZWNvcmRlckNsaWVudChjb25zdCBzcDxJQmluZGVyPiYgaW1wbCkKKyAgICAgICAgOiBCcEludGVyZmFjZTxJTWVkaWFSZWNvcmRlckNsaWVudD4oaW1wbCkKKyAgICB7CisgICAgfQorCisgICAgdmlydHVhbCB2b2lkIG5vdGlmeShpbnQgbXNnLCBpbnQgZXh0MSwgaW50IGV4dDIpCisgICAgeworICAgICAgICBQYXJjZWwgZGF0YSwgcmVwbHk7CisgICAgICAgIGRhdGEud3JpdGVJbnRlcmZhY2VUb2tlbihJTWVkaWFSZWNvcmRlckNsaWVudDo6Z2V0SW50ZXJmYWNlRGVzY3JpcHRvcigpKTsKKyAgICAgICAgZGF0YS53cml0ZUludDMyKG1zZyk7CisgICAgICAgIGRhdGEud3JpdGVJbnQzMihleHQxKTsKKyAgICAgICAgZGF0YS53cml0ZUludDMyKGV4dDIpOworICAgICAgICByZW1vdGUoKS0+dHJhbnNhY3QoTk9USUZZLCBkYXRhLCAmcmVwbHksIElCaW5kZXI6OkZMQUdfT05FV0FZKTsKKyAgICB9Cit9OworCitJTVBMRU1FTlRfTUVUQV9JTlRFUkZBQ0UoTWVkaWFSZWNvcmRlckNsaWVudCwgImFuZHJvaWQubWVkaWEuSU1lZGlhUmVjb3JkZXJDbGllbnQiKTsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdGF0dXNfdCBCbk1lZGlhUmVjb3JkZXJDbGllbnQ6Om9uVHJhbnNhY3QoCisgICAgdWludDMyX3QgY29kZSwgY29uc3QgUGFyY2VsJiBkYXRhLCBQYXJjZWwqIHJlcGx5LCB1aW50MzJfdCBmbGFncykKK3sKKyAgICBzd2l0Y2goY29kZSkgeworICAgICAgICBjYXNlIE5PVElGWTogeworICAgICAgICAgICAgQ0hFQ0tfSU5URVJGQUNFKElNZWRpYVJlY29yZGVyQ2xpZW50LCBkYXRhLCByZXBseSk7CisgICAgICAgICAgICBpbnQgbXNnID0gZGF0YS5yZWFkSW50MzIoKTsKKyAgICAgICAgICAgIGludCBleHQxID0gZGF0YS5yZWFkSW50MzIoKTsKKyAgICAgICAgICAgIGludCBleHQyID0gZGF0YS5yZWFkSW50MzIoKTsKKyAgICAgICAgICAgIG5vdGlmeShtc2csIGV4dDEsIGV4dDIpOworICAgICAgICAgICAgcmV0dXJuIE5PX0VSUk9SOworICAgICAgICB9IGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIEJCaW5kZXI6Om9uVHJhbnNhY3QoY29kZSwgZGF0YSwgcmVwbHksIGZsYWdzKTsKKyAgICB9Cit9CisKK307IC8vIG5hbWVzcGFjZSBhbmRyb2lkCmRpZmYgLS1naXQgYS9tZWRpYS9saWJtZWRpYS9JT01YLmNwcCBiL21lZGlhL2xpYm1lZGlhL0lPTVguY3BwCmluZGV4IDAxYjY3MzcuLmYzODA0YjggMTAwNjQ0Ci0tLSBhL21lZGlhL2xpYm1lZGlhL0lPTVguY3BwCisrKyBiL21lZGlhL2xpYm1lZGlhL0lPTVguY3BwCkBAIC01Nyw3ICs1Nyw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGpmaWVsZElEIHN1cmZhY2VJRCA9IGVudi0+R2V0RmllbGRJRChzdXJmYWNlQ2xhc3MsICJtU3VyZmFjZSIsICJJIik7CisgICAgamZpZWxkSUQgc3VyZmFjZUlEID0gZW52LT5HZXRGaWVsZElEKHN1cmZhY2VDbGFzcywgQU5EUk9JRF9WSUVXX1NVUkZBQ0VfSk5JX0lELCAiSSIpOwogICAgIGlmIChzdXJmYWNlSUQgPT0gTlVMTCkgewogICAgICAgICBMT0dFKCJDYW4ndCBmaW5kIFN1cmZhY2UubVN1cmZhY2UiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CmRpZmYgLS1naXQgYS9tZWRpYS9saWJtZWRpYS9NZWRpYVByb2ZpbGVzLmNwcCBiL21lZGlhL2xpYm1lZGlhL01lZGlhUHJvZmlsZXMuY3BwCmluZGV4IDEyNjMzNzMuLjM4NjkzODkgMTAwNjQ0Ci0tLSBhL21lZGlhL2xpYm1lZGlhL01lZGlhUHJvZmlsZXMuY3BwCisrKyBiL21lZGlhL2xpYm1lZGlhL01lZGlhUHJvZmlsZXMuY3BwCkBAIC0yNzIsNyArMjcyLDcgQEAKIH0KIAogLypzdGF0aWMqLyBNZWRpYVByb2ZpbGVzOjpDYW1jb3JkZXJQcm9maWxlKgotTWVkaWFQcm9maWxlczo6Y3JlYXRlQ2FtY29yZGVyUHJvZmlsZShjb25zdCBjaGFyICoqYXR0cykKK01lZGlhUHJvZmlsZXM6OmNyZWF0ZUNhbWNvcmRlclByb2ZpbGUoaW50IGNhbWVyYUlkLCBjb25zdCBjaGFyICoqYXR0cykKIHsKICAgICBDSEVDSyghc3RyY21wKCJxdWFsaXR5IiwgICAgYXR0c1swXSkgJiYKICAgICAgICAgICAhc3RyY21wKCJmaWxlRm9ybWF0IiwgYXR0c1syXSkgJiYKQEAgLTI4NywxNiArMjg3LDQ3IEBACiAgICAgQ0hFQ0soZmlsZUZvcm1hdCAhPSAtMSk7CiAKICAgICBNZWRpYVByb2ZpbGVzOjpDYW1jb3JkZXJQcm9maWxlICpwcm9maWxlID0gbmV3IE1lZGlhUHJvZmlsZXM6OkNhbWNvcmRlclByb2ZpbGU7CisgICAgcHJvZmlsZS0+bUNhbWVyYUlkID0gY2FtZXJhSWQ7CiAgICAgcHJvZmlsZS0+bUZpbGVGb3JtYXQgPSBzdGF0aWNfY2FzdDxvdXRwdXRfZm9ybWF0PihmaWxlRm9ybWF0KTsKICAgICBwcm9maWxlLT5tUXVhbGl0eSA9IHN0YXRpY19jYXN0PGNhbWNvcmRlcl9xdWFsaXR5PihxdWFsaXR5KTsKICAgICBwcm9maWxlLT5tRHVyYXRpb24gPSBhdG9pKGF0dHNbNV0pOwogICAgIHJldHVybiBwcm9maWxlOwogfQogCi0vKnN0YXRpYyovIGludAotTWVkaWFQcm9maWxlczo6Z2V0SW1hZ2VFbmNvZGluZ1F1YWxpdHlMZXZlbChjb25zdCBjaGFyKiogYXR0cykKK01lZGlhUHJvZmlsZXM6OkltYWdlRW5jb2RpbmdRdWFsaXR5TGV2ZWxzKgorTWVkaWFQcm9maWxlczo6ZmluZEltYWdlRW5jb2RpbmdRdWFsaXR5TGV2ZWxzKGludCBjYW1lcmFJZCkgY29uc3QKK3sKKyAgICBpbnQgbiA9IG1JbWFnZUVuY29kaW5nUXVhbGl0eUxldmVscy5zaXplKCk7CisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgSW1hZ2VFbmNvZGluZ1F1YWxpdHlMZXZlbHMgKmxldmVscyA9IG1JbWFnZUVuY29kaW5nUXVhbGl0eUxldmVsc1tpXTsKKyAgICAgICAgaWYgKGxldmVscy0+bUNhbWVyYUlkID09IGNhbWVyYUlkKSB7CisgICAgICAgICAgICByZXR1cm4gbGV2ZWxzOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBOVUxMOworfQorCit2b2lkIE1lZGlhUHJvZmlsZXM6OmFkZEltYWdlRW5jb2RpbmdRdWFsaXR5TGV2ZWwoaW50IGNhbWVyYUlkLCBjb25zdCBjaGFyKiogYXR0cykKIHsKICAgICBDSEVDSyghc3RyY21wKCJxdWFsaXR5IiwgYXR0c1swXSkpOworICAgIGludCBxdWFsaXR5ID0gYXRvaShhdHRzWzFdKTsKKyAgICBMT0dWKCIlczogY2FtZXJhSWQ9JWQsIHF1YWxpdHk9JWRcbiIsIF9fZnVuY19fLCBjYW1lcmFJZCwgcXVhbGl0eSk7CisgICAgSW1hZ2VFbmNvZGluZ1F1YWxpdHlMZXZlbHMgKmxldmVscyA9IGZpbmRJbWFnZUVuY29kaW5nUXVhbGl0eUxldmVscyhjYW1lcmFJZCk7CisKKyAgICBpZiAobGV2ZWxzID09IE5VTEwpIHsKKyAgICAgICAgbGV2ZWxzID0gbmV3IEltYWdlRW5jb2RpbmdRdWFsaXR5TGV2ZWxzKCk7CisgICAgICAgIGxldmVscy0+bUNhbWVyYUlkID0gY2FtZXJhSWQ7CisgICAgICAgIG1JbWFnZUVuY29kaW5nUXVhbGl0eUxldmVscy5hZGQobGV2ZWxzKTsKKyAgICB9CisKKyAgICBsZXZlbHMtPm1MZXZlbHMuYWRkKHF1YWxpdHkpOworfQorCisvKnN0YXRpYyovIGludAorTWVkaWFQcm9maWxlczo6Z2V0Q2FtZXJhSWQoY29uc3QgY2hhcioqIGF0dHMpCit7CisgICAgaWYgKCFhdHRzWzBdKSByZXR1cm4gMDsgIC8vIGRlZmF1bHQgY2FtZXJhSWQgPSAwCisgICAgQ0hFQ0soIXN0cmNtcCgiY2FtZXJhSWQiLCBhdHRzWzBdKSk7CiAgICAgcmV0dXJuIGF0b2koYXR0c1sxXSk7CiB9CiAKQEAgLTMyMiwxMCArMzUzLDEzIEBACiAgICAgICAgIHByb2ZpbGVzLT5tQXVkaW9EZWNvZGVycy5hZGQoY3JlYXRlQXVkaW9EZWNvZGVyQ2FwKGF0dHMpKTsKICAgICB9IGVsc2UgaWYgKHN0cmNtcCgiRW5jb2Rlck91dHB1dEZpbGVGb3JtYXQiLCBuYW1lKSA9PSAwKSB7CiAgICAgICAgIHByb2ZpbGVzLT5tRW5jb2Rlck91dHB1dEZpbGVGb3JtYXRzLmFkZChjcmVhdGVFbmNvZGVyT3V0cHV0RmlsZUZvcm1hdChhdHRzKSk7CisgICAgfSBlbHNlIGlmIChzdHJjbXAoIkNhbWNvcmRlclByb2ZpbGVzIiwgbmFtZSkgPT0gMCkgeworICAgICAgICBwcm9maWxlcy0+bUN1cnJlbnRDYW1lcmFJZCA9IGdldENhbWVyYUlkKGF0dHMpOwogICAgIH0gZWxzZSBpZiAoc3RyY21wKCJFbmNvZGVyUHJvZmlsZSIsIG5hbWUpID09IDApIHsKLSAgICAgICAgcHJvZmlsZXMtPm1DYW1jb3JkZXJQcm9maWxlcy5hZGQoY3JlYXRlQ2FtY29yZGVyUHJvZmlsZShhdHRzKSk7CisgICAgICAgIHByb2ZpbGVzLT5tQ2FtY29yZGVyUHJvZmlsZXMuYWRkKAorICAgICAgICAgICAgY3JlYXRlQ2FtY29yZGVyUHJvZmlsZShwcm9maWxlcy0+bUN1cnJlbnRDYW1lcmFJZCwgYXR0cykpOwogICAgIH0gZWxzZSBpZiAoc3RyY21wKCJJbWFnZUVuY29kaW5nIiwgbmFtZSkgPT0gMCkgewotICAgICAgICBwcm9maWxlcy0+bUltYWdlRW5jb2RpbmdRdWFsaXR5TGV2ZWxzLmFkZChnZXRJbWFnZUVuY29kaW5nUXVhbGl0eUxldmVsKGF0dHMpKTsKKyAgICAgICAgcHJvZmlsZXMtPmFkZEltYWdlRW5jb2RpbmdRdWFsaXR5TGV2ZWwocHJvZmlsZXMtPm1DdXJyZW50Q2FtZXJhSWQsIGF0dHMpOwogICAgIH0KIH0KIApAQCAtMzgzLDcgKzQxNyw4IEBACiAgICAgICAgIG5ldyBNZWRpYVByb2ZpbGVzOjpWaWRlb0NvZGVjKFZJREVPX0VOQ09ERVJfSDI2MywgMzYwMDAwLCAzNTIsIDI4OCwgMjApOwogCiAgICAgQXVkaW9Db2RlYyAqYXVkaW9Db2RlYyA9IG5ldyBBdWRpb0NvZGVjKEFVRElPX0VOQ09ERVJfQU1SX05CLCAxMjIwMCwgODAwMCwgMSk7Ci0gICAgQ2FtY29yZGVyUHJvZmlsZSAqcHJvZmlsZSA9IG5ldyBDYW1jb3JkZXJQcm9maWxlOworICAgIENhbWNvcmRlclByb2ZpbGUgKnByb2ZpbGUgPSBuZXcgTWVkaWFQcm9maWxlczo6Q2FtY29yZGVyUHJvZmlsZTsKKyAgICBwcm9maWxlLT5tQ2FtZXJhSWQgPSAwOwogICAgIHByb2ZpbGUtPm1GaWxlRm9ybWF0ID0gT1VUUFVUX0ZPUk1BVF9USFJFRV9HUFA7CiAgICAgcHJvZmlsZS0+bVF1YWxpdHkgPSBDQU1DT1JERVJfUVVBTElUWV9ISUdIOwogICAgIHByb2ZpbGUtPm1EdXJhdGlvbiA9IDYwOwpAQCAtNDAyLDYgKzQzNyw3IEBACiAgICAgICAgIG5ldyBNZWRpYVByb2ZpbGVzOjpBdWRpb0NvZGVjKEFVRElPX0VOQ09ERVJfQU1SX05CLCAxMjIwMCwgODAwMCwgMSk7CiAKICAgICBNZWRpYVByb2ZpbGVzOjpDYW1jb3JkZXJQcm9maWxlICpwcm9maWxlID0gbmV3IE1lZGlhUHJvZmlsZXM6OkNhbWNvcmRlclByb2ZpbGU7CisgICAgcHJvZmlsZS0+bUNhbWVyYUlkID0gMDsKICAgICBwcm9maWxlLT5tRmlsZUZvcm1hdCA9IE9VVFBVVF9GT1JNQVRfVEhSRUVfR1BQOwogICAgIHByb2ZpbGUtPm1RdWFsaXR5ID0gQ0FNQ09SREVSX1FVQUxJVFlfTE9XOwogICAgIHByb2ZpbGUtPm1EdXJhdGlvbiA9IDMwOwpAQCAtNDU4LDkgKzQ5NCwxMiBAQAogLypzdGF0aWMqLyB2b2lkCiBNZWRpYVByb2ZpbGVzOjpjcmVhdGVEZWZhdWx0SW1hZ2VFbmNvZGluZ1F1YWxpdHlMZXZlbHMoTWVkaWFQcm9maWxlcyAqcHJvZmlsZXMpCiB7Ci0gICAgcHJvZmlsZXMtPm1JbWFnZUVuY29kaW5nUXVhbGl0eUxldmVscy5hZGQoNzApOwotICAgIHByb2ZpbGVzLT5tSW1hZ2VFbmNvZGluZ1F1YWxpdHlMZXZlbHMuYWRkKDgwKTsKLSAgICBwcm9maWxlcy0+bUltYWdlRW5jb2RpbmdRdWFsaXR5TGV2ZWxzLmFkZCg5MCk7CisgICAgSW1hZ2VFbmNvZGluZ1F1YWxpdHlMZXZlbHMgKmxldmVscyA9IG5ldyBJbWFnZUVuY29kaW5nUXVhbGl0eUxldmVscygpOworICAgIGxldmVscy0+bUNhbWVyYUlkID0gMDsKKyAgICBsZXZlbHMtPm1MZXZlbHMuYWRkKDcwKTsKKyAgICBsZXZlbHMtPm1MZXZlbHMuYWRkKDgwKTsKKyAgICBsZXZlbHMtPm1MZXZlbHMuYWRkKDkwKTsKKyAgICBwcm9maWxlcy0+bUltYWdlRW5jb2RpbmdRdWFsaXR5TGV2ZWxzLmFkZChsZXZlbHMpOwogfQogCiAvKnN0YXRpYyovIE1lZGlhUHJvZmlsZXMqCkBAIC02MjksMTkgKzY2OCwyNCBAQAogICAgIHJldHVybiBkZWNvZGVyczsgIC8vIGNvcHkgb3V0CiB9CiAKLWludCBNZWRpYVByb2ZpbGVzOjpnZXRDYW1jb3JkZXJQcm9maWxlUGFyYW1CeU5hbWUoY29uc3QgY2hhciAqbmFtZSwgY2FtY29yZGVyX3F1YWxpdHkgcXVhbGl0eSkgY29uc3QKK2ludCBNZWRpYVByb2ZpbGVzOjpnZXRDYW1jb3JkZXJQcm9maWxlUGFyYW1CeU5hbWUoY29uc3QgY2hhciAqbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGNhbWVyYUlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW1jb3JkZXJfcXVhbGl0eSBxdWFsaXR5KSBjb25zdAogewotICAgIExPR1YoImdldENhbWNvcmRlclByb2ZpbGVQYXJhbUJ5TmFtZTogJXMgZm9yIHF1YWxpdHkgJWQiLCBuYW1lLCBxdWFsaXR5KTsKKyAgICBMT0dWKCJnZXRDYW1jb3JkZXJQcm9maWxlUGFyYW1CeU5hbWU6ICVzIGZvciBjYW1lcmEgJWQsIHF1YWxpdHkgJWQiLAorICAgICAgICAgbmFtZSwgY2FtZXJhSWQsIHF1YWxpdHkpOwogCiAgICAgaW50IGluZGV4ID0gLTE7CiAgICAgZm9yIChzaXplX3QgaSA9IDAsIG4gPSBtQ2FtY29yZGVyUHJvZmlsZXMuc2l6ZSgpOyBpIDwgbjsgKytpKSB7Ci0gICAgICAgIGlmIChtQ2FtY29yZGVyUHJvZmlsZXNbaV0tPm1RdWFsaXR5ID09IHF1YWxpdHkpIHsKKyAgICAgICAgaWYgKG1DYW1jb3JkZXJQcm9maWxlc1tpXS0+bUNhbWVyYUlkID09IGNhbWVyYUlkICYmCisgICAgICAgICAgICBtQ2FtY29yZGVyUHJvZmlsZXNbaV0tPm1RdWFsaXR5ID09IHF1YWxpdHkpIHsKICAgICAgICAgICAgIGluZGV4ID0gaTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQogICAgIGlmIChpbmRleCA9PSAtMSkgewotICAgICAgICBMT0dFKCJUaGUgZ2l2ZW4gY2FtY29yZGVyIHByb2ZpbGUgcXVhbGl0eSAlZCBpcyBub3QgZm91bmQiLCBxdWFsaXR5KTsKKyAgICAgICAgTE9HRSgiVGhlIGdpdmVuIGNhbWNvcmRlciBwcm9maWxlIGNhbWVyYSAlZCBxdWFsaXR5ICVkIGlzIG5vdCBmb3VuZCIsCisgICAgICAgICAgICAgY2FtZXJhSWQsIHF1YWxpdHkpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCkBAIC02NTcsMTMgKzcwMSwxOCBAQAogICAgIGlmICghc3RyY21wKCJhdWQuY2giLCBuYW1lKSkgcmV0dXJuIG1DYW1jb3JkZXJQcm9maWxlc1tpbmRleF0tPm1BdWRpb0NvZGVjLT5tQ2hhbm5lbHM7CiAgICAgaWYgKCFzdHJjbXAoImF1ZC5oeiIsIG5hbWUpKSByZXR1cm4gbUNhbWNvcmRlclByb2ZpbGVzW2luZGV4XS0+bUF1ZGlvQ29kZWMtPm1TYW1wbGVSYXRlOwogCi0gICAgTE9HRSgiVGhlIGdpdmVuIGNhbWNvcmRlciBwcm9maWxlIHBhcmFtIG5hbWUgJXMgaXMgbm90IGZvdW5kIiwgbmFtZSk7CisgICAgTE9HRSgiVGhlIGdpdmVuIGNhbWNvcmRlciBwcm9maWxlIHBhcmFtIGlkICVkIG5hbWUgJXMgaXMgbm90IGZvdW5kIiwgY2FtZXJhSWQsIG5hbWUpOwogICAgIHJldHVybiAtMTsKIH0KIAotVmVjdG9yPGludD4gTWVkaWFQcm9maWxlczo6Z2V0SW1hZ2VFbmNvZGluZ1F1YWxpdHlMZXZlbHMoKSBjb25zdAorVmVjdG9yPGludD4gTWVkaWFQcm9maWxlczo6Z2V0SW1hZ2VFbmNvZGluZ1F1YWxpdHlMZXZlbHMoaW50IGNhbWVyYUlkKSBjb25zdAogewotICAgIHJldHVybiBtSW1hZ2VFbmNvZGluZ1F1YWxpdHlMZXZlbHM7ICAvLyBjb3B5IG91dAorICAgIFZlY3RvcjxpbnQ+IHJlc3VsdDsKKyAgICBJbWFnZUVuY29kaW5nUXVhbGl0eUxldmVscyAqbGV2ZWxzID0gZmluZEltYWdlRW5jb2RpbmdRdWFsaXR5TGV2ZWxzKGNhbWVyYUlkKTsKKyAgICBpZiAobGV2ZWxzICE9IE5VTEwpIHsKKyAgICAgICAgcmVzdWx0ID0gbGV2ZWxzLT5tTGV2ZWxzOyAgLy8gY29weSBvdXQKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogTWVkaWFQcm9maWxlczo6fk1lZGlhUHJvZmlsZXMoKQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlibWVkaWEvTWVkaWFTY2FubmVyLmNwcCBiL21lZGlhL2xpYm1lZGlhL01lZGlhU2Nhbm5lci5jcHAKaW5kZXggODQzYThmZC4uNmY1ODFkMyAxMDA2NDQKLS0tIGEvbWVkaWEvbGlibWVkaWEvTWVkaWFTY2FubmVyLmNwcAorKysgYi9tZWRpYS9saWJtZWRpYS9NZWRpYVNjYW5uZXIuY3BwCkBAIC0xNCw2ICsxNCwxMCBAQAogICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAgKi8KIAorLy8jZGVmaW5lIExPR19OREVCVUcgMAorI2RlZmluZSBMT0dfVEFHICJNZWRpYVNjYW5uZXIiCisjaW5jbHVkZSA8dXRpbHMvTG9nLmg+CisKICNpbmNsdWRlIDxtZWRpYS9tZWRpYXNjYW5uZXIuaD4KIAogI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CmRpZmYgLS1naXQgYS9tZWRpYS9saWJtZWRpYS9WaXN1YWxpemVyLmNwcCBiL21lZGlhL2xpYm1lZGlhL1Zpc3VhbGl6ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ3ZTk2ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJtZWRpYS9WaXN1YWxpemVyLmNwcApAQCAtMCwwICsxLDMzMCBAQAorLyoKKyoqCisqKiBDb3B5cmlnaHQgMjAxMCwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorKioKKyoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisqKgorKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorKioKKyoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorKi8KKworCisvLyNkZWZpbmUgTE9HX05ERUJVRyAwCisjZGVmaW5lIExPR19UQUcgIlZpc3VhbGl6ZXIiCisjaW5jbHVkZSA8dXRpbHMvTG9nLmg+CisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxsaW1pdHMuaD4KKworI2luY2x1ZGUgPG1lZGlhL1Zpc3VhbGl6ZXIuaD4KKworZXh0ZXJuICJDIiB7CisjZGVmaW5lIEZMT0FUSU5HX1BPSU5UIDEKKyNpbmNsdWRlICJmZnR3cmFwLmgiCit9CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK1Zpc3VhbGl6ZXI6OlZpc3VhbGl6ZXIgKGludDMyX3QgcHJpb3JpdHksCisgICAgICAgICBlZmZlY3RfY2FsbGJhY2tfdCBjYmYsCisgICAgICAgICB2b2lkKiB1c2VyLAorICAgICAgICAgaW50IHNlc3Npb25JZCkKKyAgICA6ICAgQXVkaW9FZmZlY3QoU0xfSUlEX1ZJU1VBTElaQVRJT04sIE5VTEwsIHByaW9yaXR5LCBjYmYsIHVzZXIsIHNlc3Npb25JZCksCisgICAgICAgIG1DYXB0dXJlUmF0ZShDQVBUVVJFX1JBVEVfREVGKSwKKyAgICAgICAgbUNhcHR1cmVTaXplKENBUFRVUkVfU0laRV9ERUYpLAorICAgICAgICBtU2FtcGxlUmF0ZSg0NDEwMDAwMCksCisgICAgICAgIG1DYXB0dXJlQ2FsbEJhY2soTlVMTCksCisgICAgICAgIG1DYXB0dXJlQ2JrVXNlcihOVUxMKQoreworICAgIGluaXRDYXB0dXJlU2l6ZSgpOworICAgIGlmIChtQ2FwdHVyZVNpemUgIT0gMCkgeworICAgICAgICBtRmZ0VGFibGUgPSBzcHhfZmZ0X2luaXQobUNhcHR1cmVTaXplKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtRmZ0VGFibGUgPSBOVUxMOworICAgIH0KK30KKworVmlzdWFsaXplcjo6flZpc3VhbGl6ZXIoKQoreworICAgIGlmIChtRmZ0VGFibGUgIT0gTlVMTCkgeworICAgICAgICBzcHhfZmZ0X2Rlc3Ryb3kobUZmdFRhYmxlKTsKKyAgICB9Cit9CisKK3N0YXR1c190IFZpc3VhbGl6ZXI6OnNldEVuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAgIE11dGV4OjpBdXRvbG9jayBfbChtTG9jayk7CisKKyAgICBzcDxDYXB0dXJlVGhyZWFkPiB0ID0gbUNhcHR1cmVUaHJlYWQ7CisgICAgaWYgKHQgIT0gMCkgeworICAgICAgICBpZiAoZW5hYmxlZCkgeworICAgICAgICAgICAgaWYgKHQtPmV4aXRQZW5kaW5nKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAodC0+cmVxdWVzdEV4aXRBbmRXYWl0KCkgPT0gV09VTERfQkxPQ0spIHsKKyAgICAgICAgICAgICAgICAgICAgTE9HRSgiVmlzdWFsaXplcjo6ZW5hYmxlKCkgY2FsbGVkIGZyb20gdGhyZWFkIik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBJTlZBTElEX09QRVJBVElPTjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgdC0+bUxvY2subG9jaygpOworICAgICB9CisKKyAgICBzdGF0dXNfdCBzdGF0dXMgPSBBdWRpb0VmZmVjdDo6c2V0RW5hYmxlZChlbmFibGVkKTsKKworICAgIGlmIChzdGF0dXMgPT0gTk9fRVJST1IpIHsKKyAgICAgICAgaWYgKHQgIT0gMCkgeworICAgICAgICAgICAgaWYgKGVuYWJsZWQpIHsKKyAgICAgICAgICAgICAgICB0LT5ydW4oIkF1ZGlvVHJhY2tUaHJlYWQiKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdC0+cmVxdWVzdEV4aXQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICh0ICE9IDApIHsKKyAgICAgICAgdC0+bUxvY2sudW5sb2NrKCk7CisgICAgfQorCisgICAgcmV0dXJuIHN0YXR1czsKK30KKworc3RhdHVzX3QgVmlzdWFsaXplcjo6c2V0Q2FwdHVyZUNhbGxCYWNrKGNhcHR1cmVfY2JrX3QgY2JrLCB2b2lkKiB1c2VyLCB1aW50MzJfdCBmbGFncywgdWludDMyX3QgcmF0ZSkKK3sKKyAgICBpZiAocmF0ZSA+IENBUFRVUkVfUkFURV9NQVgpIHsKKyAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKyAgICB9CisgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1Mb2NrKTsKKworICAgIGlmIChtRW5hYmxlZCkgeworICAgICAgICByZXR1cm4gSU5WQUxJRF9PUEVSQVRJT047CisgICAgfQorCisgICAgc3A8Q2FwdHVyZVRocmVhZD4gdCA9IG1DYXB0dXJlVGhyZWFkOworICAgIGlmICh0ICE9IDApIHsKKyAgICAgICAgdC0+bUxvY2subG9jaygpOworICAgIH0KKyAgICBtQ2FwdHVyZVRocmVhZC5jbGVhcigpOworICAgIG1DYXB0dXJlQ2FsbEJhY2sgPSBjYms7CisgICAgbUNhcHR1cmVDYmtVc2VyID0gdXNlcjsKKyAgICBtQ2FwdHVyZUZsYWdzID0gZmxhZ3M7CisgICAgbUNhcHR1cmVSYXRlID0gcmF0ZTsKKworICAgIGlmICh0ICE9IDApIHsKKyAgICAgICAgdC0+bUxvY2sudW5sb2NrKCk7CisgICAgfQorCisgICAgaWYgKGNiayAhPSBOVUxMKSB7CisgICAgICAgIG1DYXB0dXJlVGhyZWFkID0gbmV3IENhcHR1cmVUaHJlYWQoKnRoaXMsIHJhdGUsICgoZmxhZ3MgJiBDQVBUVVJFX0NBTExfSkFWQSkgIT0gMCkpOworICAgICAgICBpZiAobUNhcHR1cmVUaHJlYWQgPT0gMCkgeworICAgICAgICAgICAgTE9HRSgiQ291bGQgbm90IGNyZWF0ZSBjYWxsYmFjayB0aHJlYWQiKTsKKyAgICAgICAgICAgIHJldHVybiBOT19JTklUOworICAgICAgICB9CisgICAgfQorICAgIExPR1YoInNldENhcHR1cmVDYWxsQmFjaygpIHJhdGU6ICVkIHRocmVhZCAlcCBmbGFncyAweCUwOHgiLAorICAgICAgICAgICAgcmF0ZSwgbUNhcHR1cmVUaHJlYWQuZ2V0KCksIG1DYXB0dXJlRmxhZ3MpOworICAgIHJldHVybiBOT19FUlJPUjsKK30KKworc3RhdHVzX3QgVmlzdWFsaXplcjo6c2V0Q2FwdHVyZVNpemUodWludDMyX3Qgc2l6ZSkKK3sKKyAgICBpZiAoc2l6ZSA+IFZJU1VBTElaRVJfQ0FQVFVSRV9TSVpFX01BWCB8fAorICAgICAgICBzaXplIDwgVklTVUFMSVpFUl9DQVBUVVJFX1NJWkVfTUlOIHx8CisgICAgICAgIEF1ZGlvU3lzdGVtOjpwb3BDb3VudChzaXplKSAhPSAxKSB7CisgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisgICAgfQorCisgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1Mb2NrKTsKKyAgICBpZiAobUVuYWJsZWQpIHsKKyAgICAgICAgcmV0dXJuIElOVkFMSURfT1BFUkFUSU9OOworICAgIH0KKworICAgIHVpbnQzMl90IGJ1ZjMyW3NpemVvZihlZmZlY3RfcGFyYW1fdCkgLyBzaXplb2YodWludDMyX3QpICsgMl07CisgICAgZWZmZWN0X3BhcmFtX3QgKnAgPSAoZWZmZWN0X3BhcmFtX3QgKilidWYzMjsKKworICAgIHAtPnBzaXplID0gc2l6ZW9mKHVpbnQzMl90KTsKKyAgICBwLT52c2l6ZSA9IHNpemVvZih1aW50MzJfdCk7CisgICAgKihpbnQzMl90ICopcC0+ZGF0YSA9IFZJU1VfUEFSQU1fQ0FQVFVSRV9TSVpFOworICAgICooKGludDMyX3QgKilwLT5kYXRhICsgMSk9IHNpemU7CisgICAgc3RhdHVzX3Qgc3RhdHVzID0gc2V0UGFyYW1ldGVyKHApOworCisgICAgTE9HVigic2V0Q2FwdHVyZVNpemUgc2l6ZSAlZCAgc3RhdHVzICVkIHAtPnN0YXR1cyAlZCIsIHNpemUsIHN0YXR1cywgcC0+c3RhdHVzKTsKKworICAgIGlmIChzdGF0dXMgPT0gTk9fRVJST1IpIHsKKyAgICAgICAgc3RhdHVzID0gcC0+c3RhdHVzOworICAgIH0KKyAgICBpZiAoc3RhdHVzID09IE5PX0VSUk9SKSB7CisgICAgICAgIG1DYXB0dXJlU2l6ZSA9IHNpemU7CisgICAgICAgIGlmIChtRmZ0VGFibGUgIT0gTlVMTCkgeworICAgICAgICAgICAgc3B4X2ZmdF9kZXN0cm95KG1GZnRUYWJsZSk7CisgICAgICAgIH0KKyAgICAgICAgbUZmdFRhYmxlID0gc3B4X2ZmdF9pbml0KG1DYXB0dXJlU2l6ZSk7CisgICAgICAgIExPR1YoInNldENhcHR1cmVTaXplIHNpemUgJWQgbUZmdFRhYmxlICVwIiwgbUNhcHR1cmVTaXplLCBtRmZ0VGFibGUpOworICAgIH0KKworICAgIHJldHVybiBzdGF0dXM7Cit9CisKK3N0YXR1c190IFZpc3VhbGl6ZXI6OmdldFdhdmVGb3JtKHVpbnQ4X3QgKndhdmVmb3JtKQoreworICAgIGlmICh3YXZlZm9ybSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisgICAgfQorICAgIGlmIChtQ2FwdHVyZVNpemUgPT0gMCkgeworICAgICAgICByZXR1cm4gTk9fSU5JVDsKKyAgICB9CisKKyAgICBzdGF0dXNfdCBzdGF0dXMgPSBOT19FUlJPUjsKKyAgICBpZiAobUVuYWJsZWQpIHsKKyAgICAgICAgaW50MzJfdCByZXBseVNpemUgPSBtQ2FwdHVyZVNpemU7CisgICAgICAgIHN0YXR1c190IHN0YXR1cyA9IGNvbW1hbmQoVklTVV9DTURfQ0FQVFVSRSwgMCwgTlVMTCwgJnJlcGx5U2l6ZSwgd2F2ZWZvcm0pOworICAgICAgICBpZiAocmVwbHlTaXplID09IDApIHsKKyAgICAgICAgICAgIHN0YXR1cyA9IE5PVF9FTk9VR0hfREFUQTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIG1lbXNldCh3YXZlZm9ybSwgMHg4MCwgbUNhcHR1cmVTaXplKTsKKyAgICB9CisgICAgcmV0dXJuIHN0YXR1czsKK30KKworc3RhdHVzX3QgVmlzdWFsaXplcjo6Z2V0RmZ0KHVpbnQ4X3QgKmZmdCkKK3sKKyAgICBpZiAoZmZ0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKyAgICB9CisgICAgaWYgKG1DYXB0dXJlU2l6ZSA9PSAwKSB7CisgICAgICAgIHJldHVybiBOT19JTklUOworICAgIH0KKworICAgIHN0YXR1c190IHN0YXR1cyA9IE5PX0VSUk9SOworICAgIGlmIChtRW5hYmxlZCkgeworICAgICAgICB1aW50OF90IGJ1ZlttQ2FwdHVyZVNpemVdOworICAgICAgICBzdGF0dXNfdCBzdGF0dXMgPSBnZXRXYXZlRm9ybShidWYpOworICAgICAgICBpZiAoc3RhdHVzID09IE5PX0VSUk9SKSB7CisgICAgICAgICAgICBzdGF0dXMgPSBkb0ZmdChmZnQsIGJ1Zik7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBtZW1zZXQoZmZ0LCAwLCBtQ2FwdHVyZVNpemUpOworICAgIH0KKyAgICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0dXNfdCBWaXN1YWxpemVyOjpkb0ZmdCh1aW50OF90ICpmZnQsIHVpbnQ4X3QgKndhdmVmb3JtKQoreworICAgIGlmIChtRmZ0VGFibGUgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTk9fSU5JVDsKKyAgICB9CisKKyAgICBmbG9hdCBmc3JjW21DYXB0dXJlU2l6ZV07CisgICAgZm9yICh1aW50MzJfdCBpID0gMDsgaSA8IG1DYXB0dXJlU2l6ZTsgaSsrKSB7CisgICAgICAgIGZzcmNbaV0gPSAoaW50MTZfdCkod2F2ZWZvcm1baV0gXiAweDgwKSA8PCA4OworICAgIH0KKyAgICBmbG9hdCBmZHN0W21DYXB0dXJlU2l6ZV07CisgICAgc3B4X2ZmdF9mbG9hdChtRmZ0VGFibGUsIGZzcmMsIGZkc3QpOworICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBtQ2FwdHVyZVNpemU7IGkrKykgeworICAgICAgICBmZnRbaV0gPSAodWludDhfdCkoKGludDMyX3QpZmRzdFtpXSA+PiA4KTsKKyAgICB9CisgICAgcmV0dXJuIE5PX0VSUk9SOworfQorCit2b2lkIFZpc3VhbGl6ZXI6OnBlcmlvZGljQ2FwdHVyZSgpCit7CisgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1Mb2NrKTsKKyAgICBMT0dWKCJwZXJpb2RpY0NhcHR1cmUoKSAlcCBtQ2FwdHVyZUNhbGxCYWNrICVwIG1DYXB0dXJlRmxhZ3MgMHglMDh4IiwKKyAgICAgICAgICAgIHRoaXMsIG1DYXB0dXJlQ2FsbEJhY2ssIG1DYXB0dXJlRmxhZ3MpOworICAgIGlmIChtQ2FwdHVyZUNhbGxCYWNrICE9IE5VTEwgJiYKKyAgICAgICAgKG1DYXB0dXJlRmxhZ3MgJiAoQ0FQVFVSRV9XQVZFRk9STXxDQVBUVVJFX0ZGVCkpICYmCisgICAgICAgIG1DYXB0dXJlU2l6ZSAhPSAwKSB7CisgICAgICAgIHVpbnQ4X3Qgd2F2ZWZvcm1bbUNhcHR1cmVTaXplXTsKKyAgICAgICAgc3RhdHVzX3Qgc3RhdHVzID0gZ2V0V2F2ZUZvcm0od2F2ZWZvcm0pOworICAgICAgICBpZiAoc3RhdHVzICE9IE5PX0VSUk9SKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgdWludDhfdCBmZnRbbUNhcHR1cmVTaXplXTsKKyAgICAgICAgaWYgKG1DYXB0dXJlRmxhZ3MgJiBDQVBUVVJFX0ZGVCkgeworICAgICAgICAgICAgc3RhdHVzID0gZG9GZnQoZmZ0LCB3YXZlZm9ybSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHN0YXR1cyAhPSBOT19FUlJPUikgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHVpbnQ4X3QgKndhdmVQdHIgPSBOVUxMOworICAgICAgICB1aW50OF90ICpmZnRQdHIgPSBOVUxMOworICAgICAgICB1aW50MzJfdCB3YXZlU2l6ZSA9IDA7CisgICAgICAgIHVpbnQzMl90IGZmdFNpemUgPSAwOworICAgICAgICBpZiAobUNhcHR1cmVGbGFncyAmIENBUFRVUkVfV0FWRUZPUk0pIHsKKyAgICAgICAgICAgIHdhdmVQdHIgPSB3YXZlZm9ybTsKKyAgICAgICAgICAgIHdhdmVTaXplID0gbUNhcHR1cmVTaXplOworICAgICAgICB9CisgICAgICAgIGlmIChtQ2FwdHVyZUZsYWdzICYgQ0FQVFVSRV9GRlQpIHsKKyAgICAgICAgICAgIGZmdFB0ciA9IGZmdDsKKyAgICAgICAgICAgIGZmdFNpemUgPSBtQ2FwdHVyZVNpemU7CisgICAgICAgIH0KKyAgICAgICAgbUNhcHR1cmVDYWxsQmFjayhtQ2FwdHVyZUNia1VzZXIsIHdhdmVTaXplLCB3YXZlUHRyLCBmZnRTaXplLCBmZnRQdHIsIG1TYW1wbGVSYXRlKTsKKyAgICB9Cit9CisKK3VpbnQzMl90IFZpc3VhbGl6ZXI6OmluaXRDYXB0dXJlU2l6ZSgpCit7CisgICAgdWludDMyX3QgYnVmMzJbc2l6ZW9mKGVmZmVjdF9wYXJhbV90KSAvIHNpemVvZih1aW50MzJfdCkgKyAyXTsKKyAgICBlZmZlY3RfcGFyYW1fdCAqcCA9IChlZmZlY3RfcGFyYW1fdCAqKWJ1ZjMyOworCisgICAgcC0+cHNpemUgPSBzaXplb2YodWludDMyX3QpOworICAgIHAtPnZzaXplID0gc2l6ZW9mKHVpbnQzMl90KTsKKyAgICAqKGludDMyX3QgKilwLT5kYXRhID0gVklTVV9QQVJBTV9DQVBUVVJFX1NJWkU7CisgICAgc3RhdHVzX3Qgc3RhdHVzID0gZ2V0UGFyYW1ldGVyKHApOworCisgICAgaWYgKHN0YXR1cyA9PSBOT19FUlJPUikgeworICAgICAgICBzdGF0dXMgPSBwLT5zdGF0dXM7CisgICAgfQorCisgICAgdWludDMyX3Qgc2l6ZSA9IDA7CisgICAgaWYgKHN0YXR1cyA9PSBOT19FUlJPUikgeworICAgICAgICBzaXplID0gKigoaW50MzJfdCAqKXAtPmRhdGEgKyAxKTsKKyAgICB9CisgICAgbUNhcHR1cmVTaXplID0gc2l6ZTsKKworICAgIExPR1YoImluaXRDYXB0dXJlU2l6ZSBzaXplICVkIHN0YXR1cyAlZCIsIG1DYXB0dXJlU2l6ZSwgc3RhdHVzKTsKKworICAgIHJldHVybiBzaXplOworfQorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVmlzdWFsaXplcjo6Q2FwdHVyZVRocmVhZDo6Q2FwdHVyZVRocmVhZChWaXN1YWxpemVyJiByZWNlaXZlciwgdWludDMyX3QgY2FwdHVyZVJhdGUsIGJvb2wgYkNhbkNhbGxKYXZhKQorICAgIDogVGhyZWFkKGJDYW5DYWxsSmF2YSksIG1SZWNlaXZlcihyZWNlaXZlcikKK3sKKyAgICBtU2xlZXBUaW1lVXMgPSAxMDAwMDAwMDAwIC8gY2FwdHVyZVJhdGU7CisgICAgTE9HVigiQ2FwdHVyZVRocmVhZCBjc3RvciAlcCBjYXB0dXJlUmF0ZSAlZCBtU2xlZXBUaW1lVXMgJWQiLCB0aGlzLCBjYXB0dXJlUmF0ZSwgbVNsZWVwVGltZVVzKTsKK30KKworYm9vbCBWaXN1YWxpemVyOjpDYXB0dXJlVGhyZWFkOjp0aHJlYWRMb29wKCkKK3sKKyAgICBMT0dWKCJDYXB0dXJlVGhyZWFkICVwIGVudGVyIiwgdGhpcyk7CisgICAgd2hpbGUgKCFleGl0UGVuZGluZygpKQorICAgIHsKKyAgICAgICAgdXNsZWVwKG1TbGVlcFRpbWVVcyk7CisgICAgICAgIG1SZWNlaXZlci5wZXJpb2RpY0NhcHR1cmUoKTsKKyAgICB9CisgICAgTE9HVigiQ2FwdHVyZVRocmVhZCAlcCBleGl0aW5nIiwgdGhpcyk7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0dXNfdCBWaXN1YWxpemVyOjpDYXB0dXJlVGhyZWFkOjpyZWFkeVRvUnVuKCkKK3sKKyAgICByZXR1cm4gTk9fRVJST1I7Cit9CisKK3ZvaWQgVmlzdWFsaXplcjo6Q2FwdHVyZVRocmVhZDo6b25GaXJzdFJlZigpCit7Cit9CisKK307IC8vIG5hbWVzcGFjZSBhbmRyb2lkCisKZGlmZiAtLWdpdCBhL21lZGlhL2xpYm1lZGlhL21lZGlhcGxheWVyLmNwcCBiL21lZGlhL2xpYm1lZGlhL21lZGlhcGxheWVyLmNwcAppbmRleCBjNmJiYmNjLi5iNDNmNzVmIDEwMDY0NAotLS0gYS9tZWRpYS9saWJtZWRpYS9tZWRpYXBsYXllci5jcHAKKysrIGIvbWVkaWEvbGlibWVkaWEvbWVkaWFwbGF5ZXIuY3BwCkBAIC01NSw2ICs1NSw3IEBACiAgICAgbUxlZnRWb2x1bWUgPSBtUmlnaHRWb2x1bWUgPSAxLjA7CiAgICAgbVZpZGVvV2lkdGggPSBtVmlkZW9IZWlnaHQgPSAwOwogICAgIG1Mb2NrVGhyZWFkSWQgPSAwOworICAgIG1BdWRpb1Nlc3Npb25JZCA9IEF1ZGlvU3lzdGVtOjpuZXdBdWRpb1Nlc3Npb25JZCgpOwogfQogCiBNZWRpYVBsYXllcjo6fk1lZGlhUGxheWVyKCkKQEAgLTEzNyw3ICsxMzgsNyBAQAogICAgICAgICBjb25zdCBzcDxJTWVkaWFQbGF5ZXJTZXJ2aWNlPiYgc2VydmljZShnZXRNZWRpYVBsYXllclNlcnZpY2UoKSk7CiAgICAgICAgIGlmIChzZXJ2aWNlICE9IDApIHsKICAgICAgICAgICAgIHNwPElNZWRpYVBsYXllcj4gcGxheWVyKAotICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlLT5jcmVhdGUoZ2V0cGlkKCksIHRoaXMsIHVybCwgaGVhZGVycykpOworICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlLT5jcmVhdGUoZ2V0cGlkKCksIHRoaXMsIHVybCwgaGVhZGVycywgbUF1ZGlvU2Vzc2lvbklkKSk7CiAgICAgICAgICAgICBlcnIgPSBzZXREYXRhU291cmNlKHBsYXllcik7CiAgICAgICAgIH0KICAgICB9CkBAIC0xNTAsNyArMTUxLDcgQEAKICAgICBzdGF0dXNfdCBlcnIgPSBVTktOT1dOX0VSUk9SOwogICAgIGNvbnN0IHNwPElNZWRpYVBsYXllclNlcnZpY2U+JiBzZXJ2aWNlKGdldE1lZGlhUGxheWVyU2VydmljZSgpKTsKICAgICBpZiAoc2VydmljZSAhPSAwKSB7Ci0gICAgICAgIHNwPElNZWRpYVBsYXllcj4gcGxheWVyKHNlcnZpY2UtPmNyZWF0ZShnZXRwaWQoKSwgdGhpcywgZmQsIG9mZnNldCwgbGVuZ3RoKSk7CisgICAgICAgIHNwPElNZWRpYVBsYXllcj4gcGxheWVyKHNlcnZpY2UtPmNyZWF0ZShnZXRwaWQoKSwgdGhpcywgZmQsIG9mZnNldCwgbGVuZ3RoLCBtQXVkaW9TZXNzaW9uSWQpKTsKICAgICAgICAgZXJyID0gc2V0RGF0YVNvdXJjZShwbGF5ZXIpOwogICAgIH0KICAgICByZXR1cm4gZXJyOwpAQCAtNTAxLDYgKzUwMiwyNyBAQAogICAgIHJldHVybiBPSzsKIH0KIAorc3RhdHVzX3QgTWVkaWFQbGF5ZXI6OnNldEF1ZGlvU2Vzc2lvbklkKGludCBzZXNzaW9uSWQpCit7CisgICAgTE9HVigiTWVkaWFQbGF5ZXI6OnNldEF1ZGlvU2Vzc2lvbklkKCVkKSIsIHNlc3Npb25JZCk7CisgICAgTXV0ZXg6OkF1dG9sb2NrIF9sKG1Mb2NrKTsKKyAgICBpZiAoIShtQ3VycmVudFN0YXRlICYgTUVESUFfUExBWUVSX0lETEUpKSB7CisgICAgICAgIExPR0UoInNldEF1ZGlvU2Vzc2lvbklkIGNhbGxlZCBpbiBzdGF0ZSAlZCIsIG1DdXJyZW50U3RhdGUpOworICAgICAgICByZXR1cm4gSU5WQUxJRF9PUEVSQVRJT047CisgICAgfQorICAgIGlmIChzZXNzaW9uSWQgPCAwKSB7CisgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisgICAgfQorICAgIG1BdWRpb1Nlc3Npb25JZCA9IHNlc3Npb25JZDsKKyAgICByZXR1cm4gTk9fRVJST1I7Cit9CisKK2ludCBNZWRpYVBsYXllcjo6Z2V0QXVkaW9TZXNzaW9uSWQoKQoreworICAgIE11dGV4OjpBdXRvbG9jayBfbChtTG9jayk7CisgICAgcmV0dXJuIG1BdWRpb1Nlc3Npb25JZDsKK30KKwogdm9pZCBNZWRpYVBsYXllcjo6bm90aWZ5KGludCBtc2csIGludCBleHQxLCBpbnQgZXh0MikKIHsKICAgICBMT0dWKCJtZXNzYWdlIHJlY2VpdmVkIG1zZz0lZCwgZXh0MT0lZCwgZXh0Mj0lZCIsIG1zZywgZXh0MSwgZXh0Mik7CkBAIC02MzYsNjEgKzY1OCw0IEBACiAKIH0KIAotZXh0ZXJuICJDIiB7Ci0jZGVmaW5lIEZMT0FUSU5HX1BPSU5UIDEKLSNpbmNsdWRlICJmZnR3cmFwLmgiCi19Ci0KLXN0YXRpYyB2b2lkICpmZnR0YWJsZSA9IE5VTEw7Ci0KLS8vIHBlZWtzIGF0IHRoZSBhdWRpbyBkYXRhIGFuZCBmaWxscyAnZGF0YScgd2l0aCB0aGUgcmVxdWVzdGVkIGtpbmQKLS8vIChjdXJyZW50bHkga2luZD0wIHJldHVybnMgbW9ubyAxNiBiaXQgUENNIGRhdGEsIGFuZCBraW5kPTEgcmV0dXJucwotLy8gMjU2IHBvaW50IEZGVCBkYXRhKS4gUmV0dXJuIHZhbHVlIGlzIG51bWJlciBvZiBzYW1wbGVzIHJldHVybmVkLAotLy8gd2hpY2ggbWF5IGJlIDAuCi0vKnN0YXRpYyovIGludCBNZWRpYVBsYXllcjo6c25vb3Aoc2hvcnQqIGRhdGEsIGludCBsZW4sIGludCBraW5kKSB7Ci0KLSAgICBzcDxJTWVtb3J5PiBwOwotICAgIGNvbnN0IHNwPElNZWRpYVBsYXllclNlcnZpY2U+JiBzZXJ2aWNlID0gZ2V0TWVkaWFQbGF5ZXJTZXJ2aWNlKCk7Ci0gICAgaWYgKHNlcnZpY2UgIT0gMCkgewotICAgICAgICAvLyBUYWtlIGEgcGVlayBhdCB0aGUgd2F2ZWZvcm0uIFRoZSByZXR1cm5lZCBkYXRhIGNvbnNpc3RzIG9mIDE2IGJpdCBtb25vIFBDTSBkYXRhLgotICAgICAgICBwID0gc2VydmljZS0+c25vb3AoKTsKLQotICAgICAgICBpZiAocCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChraW5kID09IDApIHsgLy8gcmV0dXJuIHdhdmVmb3JtIGRhdGEKLSAgICAgICAgICAgIGludCBwbGVuID0gcC0+c2l6ZSgpOwotICAgICAgICAgICAgbGVuICo9IDI7IC8vIG51bWJlciBvZiBzaG9ydHMgLT4gbnVtYmVyIG9mIGJ5dGVzCi0gICAgICAgICAgICBzaG9ydCAqc3JjID0gKHNob3J0KikgcC0+cG9pbnRlcigpOwotICAgICAgICAgICAgaWYgKHBsZW4gPiBsZW4pIHsKLSAgICAgICAgICAgICAgICBwbGVuID0gbGVuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbWVtY3B5KGRhdGEsIHNyYywgcGxlbik7Ci0gICAgICAgICAgICByZXR1cm4gcGxlbiAvIHNpemVvZihzaG9ydCk7IC8vIHJldHVybiBudW1iZXIgb2Ygc2FtcGxlcwotICAgICAgICB9IGVsc2UgaWYgKGtpbmQgPT0gMSkgewotICAgICAgICAgICAgLy8gVE9ETzogdXNlIGEgbW9yZSBlZmZpY2llbnQgRkZUCi0gICAgICAgICAgICAvLyBSaWdodCBub3cgdGhpcyB1c2VzIHRoZSBzcGVleCBsaWJyYXJ5LCB3aGljaCBpcyBjb21waWxlZCB0byBkbyBhIGZsb2F0IEZGVAotICAgICAgICAgICAgaWYgKCFmZnR0YWJsZSkgZmZ0dGFibGUgPSBzcHhfZmZ0X2luaXQoNTEyKTsKLSAgICAgICAgICAgIHNob3J0ICp1c3JjID0gKHNob3J0KikgcC0+cG9pbnRlcigpOwotICAgICAgICAgICAgZmxvYXQgZnNyY1s1MTJdOwotICAgICAgICAgICAgZm9yIChpbnQgaT0wO2k8NTEyO2krKykKLSAgICAgICAgICAgICAgICBmc3JjW2ldID0gdXNyY1tpXTsKLSAgICAgICAgICAgIGZsb2F0IGZkc3RbNTEyXTsKLSAgICAgICAgICAgIHNweF9mZnRfZmxvYXQoZmZ0dGFibGUsIGZzcmMsIGZkc3QpOwotICAgICAgICAgICAgaWYgKGxlbiA+IDUxMikgewotICAgICAgICAgICAgICAgIGxlbiA9IDUxMjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGxlbiAvPSAyOyAvLyBvbmx5IGhhbGYgdGhlIG91dHB1dCBkYXRhIGlzIHZhbGlkCi0gICAgICAgICAgICBmb3IgKGludCBpPTA7IGkgPCBsZW47IGkrKykKLSAgICAgICAgICAgICAgICBkYXRhW2ldID0gZmRzdFtpXTsKLSAgICAgICAgICAgIHJldHVybiBsZW47Ci0gICAgICAgIH0KLQotICAgIH0gZWxzZSB7Ci0gICAgICAgIExPR0UoIlVuYWJsZSB0byBsb2NhdGUgbWVkaWEgc2VydmljZSIpOwotICAgIH0KLSAgICByZXR1cm4gMDsKLX0KLQogfTsgLy8gbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL21lZGlhL2xpYm1lZGlhcGxheWVyc2VydmljZS9BbmRyb2lkLm1rIGIvbWVkaWEvbGlibWVkaWFwbGF5ZXJzZXJ2aWNlL0FuZHJvaWQubWsKaW5kZXggY2Y5N2IyMy4uOGYwMTBjOSAxMDA2NDQKLS0tIGEvbWVkaWEvbGlibWVkaWFwbGF5ZXJzZXJ2aWNlL0FuZHJvaWQubWsKKysrIGIvbWVkaWEvbGlibWVkaWFwbGF5ZXJzZXJ2aWNlL0FuZHJvaWQubWsKQEAgLTExLDIxICsxMSwxMSBAQAogICAgIE1lZGlhUGxheWVyU2VydmljZS5jcHAgICAgICBcCiAgICAgTWV0YWRhdGFSZXRyaWV2ZXJDbGllbnQuY3BwIFwKICAgICBUZXN0UGxheWVyU3R1Yi5jcHAgICAgICAgICAgXAotICAgIFZvcmJpc1BsYXllci5jcHAgICAgICAgICAgICBcCi0gICAgVm9yYmlzTWV0YWRhdGFSZXRyaWV2ZXIuY3BwIFwKLSAgICBNaWRpTWV0YWRhdGFSZXRyaWV2ZXIuY3BwIAlcCi0gICAgTWlkaUZpbGUuY3BwCi0KLWlmZXEgKCQoQlVJTERfV0lUSF9GVUxMX1NUQUdFRlJJR0hUKSx0cnVlKQotCi1MT0NBTF9TUkNfRklMRVMgKz0gICAgICAgICAgICAgICAgICAgICAgXAotICAgIFN0YWdlZnJpZ2h0UGxheWVyLmNwcCAgICAgICAgICAgICAgIFwKKyAgICBNaWRpTWV0YWRhdGFSZXRyaWV2ZXIuY3BwICAgXAorICAgIE1pZGlGaWxlLmNwcCAgICAgICAgICAgICAgICBcCisgICAgU3RhZ2VmcmlnaHRQbGF5ZXIuY3BwICAgICAgIFwKICAgICBTdGFnZWZyaWdodFJlY29yZGVyLmNwcAogCi1MT0NBTF9DRkxBR1MgKz0gLURCVUlMRF9XSVRIX0ZVTExfU1RBR0VGUklHSFQ9MQotCi1lbmRpZgotCiBpZmVxICgkKFRBUkdFVF9PUyktJChUQVJHRVRfU0lNVUxBVE9SKSxsaW51eC10cnVlKQogTE9DQUxfTERMSUJTICs9IC1sZGwgLWxwdGhyZWFkCiBlbmRpZgpAQCAtMzcsNiArMjcsNyBAQAogCWxpYnZvcmJpc2lkZWMgICAgICAgICAJCQlcCiAJbGlic29uaXZveCAgICAgICAgICAgIAkJCVwKIAlsaWJtZWRpYSAgICAgICAgICAgICAgCQkJXAorCWxpYmNhbWVyYV9jbGllbnQgICAgICAJCQlcCiAJbGliYW5kcm9pZF9ydW50aW1lICAgIAkJCVwKIAlsaWJzdGFnZWZyaWdodCAgICAgICAgCQkJXAogCWxpYnN0YWdlZnJpZ2h0X29teCAgICAJCQlcCmRpZmYgLS1naXQgYS9tZWRpYS9saWJtZWRpYXBsYXllcnNlcnZpY2UvTWVkaWFQbGF5ZXJTZXJ2aWNlLmNwcCBiL21lZGlhL2xpYm1lZGlhcGxheWVyc2VydmljZS9NZWRpYVBsYXllclNlcnZpY2UuY3BwCmluZGV4IDNlMWY0YTUuLjU0MDFlYzAgMTAwNjQ0Ci0tLSBhL21lZGlhL2xpYm1lZGlhcGxheWVyc2VydmljZS9NZWRpYVBsYXllclNlcnZpY2UuY3BwCisrKyBiL21lZGlhL2xpYm1lZGlhcGxheWVyc2VydmljZS9NZWRpYVBsYXllclNlcnZpY2UuY3BwCkBAIC01Niw3ICs1Niw2IEBACiAjaW5jbHVkZSAiTWV0YWRhdGFSZXRyaWV2ZXJDbGllbnQuaCIKIAogI2luY2x1ZGUgIk1pZGlGaWxlLmgiCi0jaW5jbHVkZSAiVm9yYmlzUGxheWVyLmgiCiAjaW5jbHVkZSA8bWVkaWEvUFZQbGF5ZXIuaD4KICNpbmNsdWRlICJUZXN0UGxheWVyU3R1Yi5oIgogI2luY2x1ZGUgIlN0YWdlZnJpZ2h0UGxheWVyLmgiCkBAIC0xOTcsOCArMTk2LDYgQEAKICAgICAgICAgeyIucnR0dGwiLCBTT05JVk9YX1BMQVlFUn0sCiAgICAgICAgIHsiLnJ0eCIsIFNPTklWT1hfUExBWUVSfSwKICAgICAgICAgeyIub3RhIiwgU09OSVZPWF9QTEFZRVJ9LAotICAgICAgICB7Ii5vZ2ciLCBWT1JCSVNfUExBWUVSfSwKLSAgICAgICAgeyIub2dhIiwgVk9SQklTX1BMQVlFUn0sCiAjaWZuZGVmIE5PX09QRU5DT1JFCiAgICAgICAgIHsiLndtYSIsIFBWX1BMQVlFUn0sCiAgICAgICAgIHsiLndtdiIsIFBWX1BMQVlFUn0sCkBAIC0yMjgsMTQgKzIyNSwxMCBAQAogCiBzcDxJTWVkaWFSZWNvcmRlcj4gTWVkaWFQbGF5ZXJTZXJ2aWNlOjpjcmVhdGVNZWRpYVJlY29yZGVyKHBpZF90IHBpZCkKIHsKLSNpZm5kZWYgTk9fT1BFTkNPUkUKICAgICBzcDxNZWRpYVJlY29yZGVyQ2xpZW50PiByZWNvcmRlciA9IG5ldyBNZWRpYVJlY29yZGVyQ2xpZW50KHRoaXMsIHBpZCk7CiAgICAgd3A8TWVkaWFSZWNvcmRlckNsaWVudD4gdyA9IHJlY29yZGVyOwogICAgIE11dGV4OjpBdXRvbG9jayBsb2NrKG1Mb2NrKTsKICAgICBtTWVkaWFSZWNvcmRlckNsaWVudHMuYWRkKHcpOwotI2Vsc2UKLSAgICBzcDxNZWRpYVJlY29yZGVyQ2xpZW50PiByZWNvcmRlciA9IE5VTEw7Ci0jZW5kaWYKICAgICBMT0dWKCJDcmVhdGUgbmV3IG1lZGlhIHJlY29yZGVyIGNsaWVudCBmcm9tIHBpZCAlZCIsIHBpZCk7CiAgICAgcmV0dXJuIHJlY29yZGVyOwogfQpAQCAtMjU2LDExICsyNDksMTIgQEAKIAogc3A8SU1lZGlhUGxheWVyPiBNZWRpYVBsYXllclNlcnZpY2U6OmNyZWF0ZSgKICAgICAgICAgcGlkX3QgcGlkLCBjb25zdCBzcDxJTWVkaWFQbGF5ZXJDbGllbnQ+JiBjbGllbnQsIGNvbnN0IGNoYXIqIHVybCwKLSAgICAgICAgY29uc3QgS2V5ZWRWZWN0b3I8U3RyaW5nOCwgU3RyaW5nOD4gKmhlYWRlcnMpCisgICAgICAgIGNvbnN0IEtleWVkVmVjdG9yPFN0cmluZzgsIFN0cmluZzg+ICpoZWFkZXJzLCBpbnQgYXVkaW9TZXNzaW9uSWQpCiB7CiAgICAgaW50MzJfdCBjb25uSWQgPSBhbmRyb2lkX2F0b21pY19pbmMoJm1OZXh0Q29ubklkKTsKLSAgICBzcDxDbGllbnQ+IGMgPSBuZXcgQ2xpZW50KHRoaXMsIHBpZCwgY29ubklkLCBjbGllbnQpOwotICAgIExPR1YoIkNyZWF0ZSBuZXcgY2xpZW50KCVkKSBmcm9tIHBpZCAlZCwgdXJsPSVzLCBjb25uSWQ9JWQiLCBjb25uSWQsIHBpZCwgdXJsLCBjb25uSWQpOworICAgIHNwPENsaWVudD4gYyA9IG5ldyBDbGllbnQodGhpcywgcGlkLCBjb25uSWQsIGNsaWVudCwgYXVkaW9TZXNzaW9uSWQpOworICAgIExPR1YoIkNyZWF0ZSBuZXcgY2xpZW50KCVkKSBmcm9tIHBpZCAlZCwgdXJsPSVzLCBjb25uSWQ9JWQsIGF1ZGlvU2Vzc2lvbklkPSVkIiwKKyAgICAgICAgICAgIGNvbm5JZCwgcGlkLCB1cmwsIGNvbm5JZCwgYXVkaW9TZXNzaW9uSWQpOwogICAgIGlmIChOT19FUlJPUiAhPSBjLT5zZXREYXRhU291cmNlKHVybCwgaGVhZGVycykpCiAgICAgewogICAgICAgICBjLmNsZWFyKCk7CkBAIC0yNzMsMTIgKzI2NywxMiBAQAogfQogCiBzcDxJTWVkaWFQbGF5ZXI+IE1lZGlhUGxheWVyU2VydmljZTo6Y3JlYXRlKHBpZF90IHBpZCwgY29uc3Qgc3A8SU1lZGlhUGxheWVyQ2xpZW50PiYgY2xpZW50LAotICAgICAgICBpbnQgZmQsIGludDY0X3Qgb2Zmc2V0LCBpbnQ2NF90IGxlbmd0aCkKKyAgICAgICAgaW50IGZkLCBpbnQ2NF90IG9mZnNldCwgaW50NjRfdCBsZW5ndGgsIGludCBhdWRpb1Nlc3Npb25JZCkKIHsKICAgICBpbnQzMl90IGNvbm5JZCA9IGFuZHJvaWRfYXRvbWljX2luYygmbU5leHRDb25uSWQpOwotICAgIHNwPENsaWVudD4gYyA9IG5ldyBDbGllbnQodGhpcywgcGlkLCBjb25uSWQsIGNsaWVudCk7Ci0gICAgTE9HVigiQ3JlYXRlIG5ldyBjbGllbnQoJWQpIGZyb20gcGlkICVkLCBmZD0lZCwgb2Zmc2V0PSVsbGQsIGxlbmd0aD0lbGxkIiwKLSAgICAgICAgICAgIGNvbm5JZCwgcGlkLCBmZCwgb2Zmc2V0LCBsZW5ndGgpOworICAgIHNwPENsaWVudD4gYyA9IG5ldyBDbGllbnQodGhpcywgcGlkLCBjb25uSWQsIGNsaWVudCwgYXVkaW9TZXNzaW9uSWQpOworICAgIExPR1YoIkNyZWF0ZSBuZXcgY2xpZW50KCVkKSBmcm9tIHBpZCAlZCwgZmQ9JWQsIG9mZnNldD0lbGxkLCBsZW5ndGg9JWxsZCwgYXVkaW9TZXNzaW9uSWQ9JWQiLAorICAgICAgICAgICAgY29ubklkLCBwaWQsIGZkLCBvZmZzZXQsIGxlbmd0aCwgYXVkaW9TZXNzaW9uSWQpOwogICAgIGlmIChOT19FUlJPUiAhPSBjLT5zZXREYXRhU291cmNlKGZkLCBvZmZzZXQsIGxlbmd0aCkpIHsKICAgICAgICAgYy5jbGVhcigpOwogICAgIH0gZWxzZSB7CkBAIC01MTcsMTEgKzUxMSwxNyBAQAogICAgICAgICAgICAgc3A8Q2xpZW50PiBjID0gbUNsaWVudHNbaV0ucHJvbW90ZSgpOwogICAgICAgICAgICAgaWYgKGMgIT0gMCkgYy0+ZHVtcChmZCwgYXJncyk7CiAgICAgICAgIH0KLSAgICAgICAgZm9yIChpbnQgaSA9IDAsIG4gPSBtTWVkaWFSZWNvcmRlckNsaWVudHMuc2l6ZSgpOyBpIDwgbjsgKytpKSB7Ci0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKCIgTWVkaWFSZWNvcmRlckNsaWVudFxuIik7Ci0gICAgICAgICAgICBzcDxNZWRpYVJlY29yZGVyQ2xpZW50PiBjID0gbU1lZGlhUmVjb3JkZXJDbGllbnRzW2ldLnByb21vdGUoKTsKLSAgICAgICAgICAgIHNucHJpbnRmKGJ1ZmZlciwgMjU1LCAiICBwaWQoJWQpXG5cbiIsIGMtPm1QaWQpOwotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChidWZmZXIpOworICAgICAgICBpZiAobU1lZGlhUmVjb3JkZXJDbGllbnRzLnNpemUoKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiIE5vIG1lZGlhIHJlY29yZGVyIGNsaWVudFxuXG4iKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwLCBuID0gbU1lZGlhUmVjb3JkZXJDbGllbnRzLnNpemUoKTsgaSA8IG47ICsraSkgeworICAgICAgICAgICAgICAgIHNwPE1lZGlhUmVjb3JkZXJDbGllbnQ+IGMgPSBtTWVkaWFSZWNvcmRlckNsaWVudHNbaV0ucHJvbW90ZSgpOworICAgICAgICAgICAgICAgIHNucHJpbnRmKGJ1ZmZlciwgMjU1LCAiIE1lZGlhUmVjb3JkZXJDbGllbnQgcGlkKCVkKVxuIiwgYy0+bVBpZCk7CisgICAgICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChidWZmZXIpOworICAgICAgICAgICAgICAgIHdyaXRlKGZkLCByZXN1bHQuc3RyaW5nKCksIHJlc3VsdC5zaXplKCkpOworICAgICAgICAgICAgICAgIHJlc3VsdCA9ICJcbiI7CisgICAgICAgICAgICAgICAgYy0+ZHVtcChmZCwgYXJncyk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAogICAgICAgICByZXN1bHQuYXBwZW5kKCIgRmlsZXMgb3BlbmVkIGFuZC9vciBtYXBwZWQ6XG4iKTsKQEAgLTYxMyw3ICs2MTMsNyBAQAogfQogCiBNZWRpYVBsYXllclNlcnZpY2U6OkNsaWVudDo6Q2xpZW50KGNvbnN0IHNwPE1lZGlhUGxheWVyU2VydmljZT4mIHNlcnZpY2UsIHBpZF90IHBpZCwKLSAgICAgICAgaW50MzJfdCBjb25uSWQsIGNvbnN0IHNwPElNZWRpYVBsYXllckNsaWVudD4mIGNsaWVudCkKKyAgICAgICAgaW50MzJfdCBjb25uSWQsIGNvbnN0IHNwPElNZWRpYVBsYXllckNsaWVudD4mIGNsaWVudCwgaW50IGF1ZGlvU2Vzc2lvbklkKQogewogICAgIExPR1YoIkNsaWVudCglZCkgY29uc3RydWN0b3IiLCBjb25uSWQpOwogICAgIG1QaWQgPSBwaWQ7CkBAIC02MjIsNiArNjIyLDggQEAKICAgICBtQ2xpZW50ID0gY2xpZW50OwogICAgIG1Mb29wID0gZmFsc2U7CiAgICAgbVN0YXR1cyA9IE5PX0lOSVQ7CisgICAgbUF1ZGlvU2Vzc2lvbklkID0gYXVkaW9TZXNzaW9uSWQ7CisKICNpZiBDQUxMQkFDS19BTlRBR09OSVpFUgogICAgIExPR0QoImNyZWF0ZSBBbnRhZ29uaXplciIpOwogICAgIG1BbnRhZ29uaXplciA9IG5ldyBBbnRhZ29uaXplcihub3RpZnksIHRoaXMpOwpAQCAtNjY3LDM3ICs2NjksOSBAQAogfQogCiBzdGF0aWMgcGxheWVyX3R5cGUgZ2V0RGVmYXVsdFBsYXllclR5cGUoKSB7Ci0jaWYgQlVJTERfV0lUSF9GVUxMX1NUQUdFRlJJR0hUCi0gICAgY2hhciB2YWx1ZVtQUk9QRVJUWV9WQUxVRV9NQVhdOwotICAgIGlmIChwcm9wZXJ0eV9nZXQoIm1lZGlhLnN0YWdlZnJpZ2h0LmVuYWJsZS1wbGF5ZXIiLCB2YWx1ZSwgTlVMTCkKLSAgICAgICAgJiYgKCFzdHJjbXAodmFsdWUsICIxIikgfHwgIXN0cmNhc2VjbXAodmFsdWUsICJ0cnVlIikpKSB7Ci0gICAgICAgIHJldHVybiBTVEFHRUZSSUdIVF9QTEFZRVI7Ci0gICAgfQotI2VuZGlmCi0KLSAgICByZXR1cm4gUFZfUExBWUVSOworICAgIHJldHVybiBTVEFHRUZSSUdIVF9QTEFZRVI7CiB9CiAKLS8vIEJ5IGRlZmF1bHQgd2UgdXNlIHRoZSBWT1JCSVNfUExBWUVSIGZvciB2b3JiaXMgcGxheWJhY2sgKGR1aCEpLAotLy8gYnV0IGlmIHRoZSBtYWdpYyBwcm9wZXJ0eSBpcyBzZXQgd2Ugd2lsbCB1c2Ugb3VyIG5ldyBleHBlcmltZW50YWwKLS8vIHN0YWdlZnJpZ2h0IGNvZGUgaW5zdGVhZC4KLXN0YXRpYyBwbGF5ZXJfdHlwZSBPdmVycmlkZVN0YWdlZnJpZ2h0Rm9yVm9yYmlzKHBsYXllcl90eXBlIHBsYXllcikgewotICAgIGlmIChwbGF5ZXIgIT0gVk9SQklTX1BMQVlFUikgewotICAgICAgICByZXR1cm4gcGxheWVyOwotICAgIH0KLQotI2lmIEJVSUxEX1dJVEhfRlVMTF9TVEFHRUZSSUdIVAotICAgIGNoYXIgdmFsdWVbUFJPUEVSVFlfVkFMVUVfTUFYXTsKLSAgICBpZiAocHJvcGVydHlfZ2V0KCJtZWRpYS5zdGFnZWZyaWdodC5lbmFibGUtdm9yYmlzIiwgdmFsdWUsIE5VTEwpCi0gICAgICAgICYmICghc3RyY21wKHZhbHVlLCAiMSIpIHx8ICFzdHJjbXAodmFsdWUsICJ0cnVlIikpKSB7Ci0gICAgICAgIHJldHVybiBTVEFHRUZSSUdIVF9QTEFZRVI7Ci0gICAgfQotI2VuZGlmCi0KLSAgICByZXR1cm4gVk9SQklTX1BMQVlFUjsKLX0KLQotCiBwbGF5ZXJfdHlwZSBnZXRQbGF5ZXJUeXBlKGludCBmZCwgaW50NjRfdCBvZmZzZXQsIGludDY0X3QgbGVuZ3RoKQogewogICAgIGNoYXIgYnVmWzIwXTsKQEAgLTcwOSw3ICs2ODMsNyBAQAogCiAgICAgLy8gT2dnIHZvcmJpcz8KICAgICBpZiAoaWRlbnQgPT0gMHg1MzY3Njc0ZikgLy8gJ09nZ1MnCi0gICAgICAgIHJldHVybiBPdmVycmlkZVN0YWdlZnJpZ2h0Rm9yVm9yYmlzKFZPUkJJU19QTEFZRVIpOworICAgICAgICByZXR1cm4gU1RBR0VGUklHSFRfUExBWUVSOwogCiAjaWZuZGVmIE5PX09QRU5DT1JFCiAgICAgaWYgKGlkZW50ID09IDB4NzViMjI2MzApIHsKQEAgLTc0NSw0MSArNzE5LDI4IEBACiAgICAgICAgIHJldHVybiBURVNUX1BMQVlFUjsKICAgICB9CiAKLSAgICBib29sIHVzZVN0YWdlZnJpZ2h0Rm9ySFRUUCA9IGZhbHNlOwotICAgIGNoYXIgdmFsdWVbUFJPUEVSVFlfVkFMVUVfTUFYXTsKLSAgICBpZiAocHJvcGVydHlfZ2V0KCJtZWRpYS5zdGFnZWZyaWdodC5lbmFibGUtaHR0cCIsIHZhbHVlLCBOVUxMKQotICAgICAgICAmJiAoIXN0cmNtcCh2YWx1ZSwgIjEiKSB8fCAhc3RyY2FzZWNtcCh2YWx1ZSwgInRydWUiKSkpIHsKLSAgICAgICAgdXNlU3RhZ2VmcmlnaHRGb3JIVFRQID0gdHJ1ZTsKLSAgICB9Ci0KICAgICAvLyB1c2UgTWlkaUZpbGUgZm9yIE1JREkgZXh0ZW5zaW9ucwogICAgIGludCBsZW5VUkwgPSBzdHJsZW4odXJsKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IE5FTEVNKEZJTEVfRVhUUyk7ICsraSkgewogICAgICAgICBpbnQgbGVuID0gc3RybGVuKEZJTEVfRVhUU1tpXS5leHRlbnNpb24pOwogICAgICAgICBpbnQgc3RhcnQgPSBsZW5VUkwgLSBsZW47CiAgICAgICAgIGlmIChzdGFydCA+IDApIHsKLSAgICAgICAgICAgIGlmICghc3RybmNtcCh1cmwgKyBzdGFydCwgRklMRV9FWFRTW2ldLmV4dGVuc2lvbiwgbGVuKSkgewotICAgICAgICAgICAgICAgIGlmIChGSUxFX0VYVFNbaV0ucGxheWVydHlwZSA9PSBWT1JCSVNfUExBWUVSCi0gICAgICAgICAgICAgICAgICAgICYmICFzdHJuY2FzZWNtcCh1cmwsICJodHRwOi8vIiwgNykKLSAgICAgICAgICAgICAgICAgICAgJiYgdXNlU3RhZ2VmcmlnaHRGb3JIVFRQKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBTVEFHRUZSSUdIVF9QTEFZRVI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiBPdmVycmlkZVN0YWdlZnJpZ2h0Rm9yVm9yYmlzKEZJTEVfRVhUU1tpXS5wbGF5ZXJ0eXBlKTsKKyAgICAgICAgICAgIGlmICghc3RybmNhc2VjbXAodXJsICsgc3RhcnQsIEZJTEVfRVhUU1tpXS5leHRlbnNpb24sIGxlbikpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gRklMRV9FWFRTW2ldLnBsYXllcnR5cGU7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoIXN0cm5jYXNlY21wKHVybCwgImh0dHA6Ly8iLCA3KSkgewotICAgICAgICBpZiAoIXVzZVN0YWdlZnJpZ2h0Rm9ySFRUUCkgeworICAgIGlmICghc3RybmNhc2VjbXAodXJsLCAicnRzcDovLyIsIDcpKSB7CisgICAgICAgIGNoYXIgdmFsdWVbUFJPUEVSVFlfVkFMVUVfTUFYXTsKKyAgICAgICAgaWYgKCFwcm9wZXJ0eV9nZXQoIm1lZGlhLnN0YWdlZnJpZ2h0LmVuYWJsZS1ydHNwIiwgdmFsdWUsIE5VTEwpCisgICAgICAgICAgICB8fCAoc3RyY21wKHZhbHVlLCAiMSIpICYmIHN0cmNhc2VjbXAodmFsdWUsICJ0cnVlIikpKSB7CisgICAgICAgICAgICAvLyBGb3Igbm93LCB3ZSdyZSBnb2luZyB0byB1c2UgUFYgZm9yIHJ0c3AtYmFzZWQgcGxheWJhY2sKKyAgICAgICAgICAgIC8vIGJ5IGRlZmF1bHQgdW50aWwgd2UgY2FuIGNsZWFyIHVwIGEgZmV3IG1vcmUgaXNzdWVzLgogICAgICAgICAgICAgcmV0dXJuIFBWX1BMQVlFUjsKICAgICAgICAgfQogICAgIH0KIAotICAgIC8vIFVzZSBQVl9QTEFZRVIgZm9yIHJ0c3AgZm9yIG5vdwotICAgIGlmICghc3RybmNhc2VjbXAodXJsLCAicnRzcDovLyIsIDcpKSB7Ci0gICAgICAgIHJldHVybiBQVl9QTEFZRVI7Ci0gICAgfQotCiAgICAgcmV0dXJuIGdldERlZmF1bHRQbGF5ZXJUeXBlKCk7CiB9CiAKQEAgLTc5OCwxNiArNzU5LDEwIEBACiAgICAgICAgICAgICBMT0dWKCIgY3JlYXRlIE1pZGlGaWxlIik7CiAgICAgICAgICAgICBwID0gbmV3IE1pZGlGaWxlKCk7CiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBWT1JCSVNfUExBWUVSOgotICAgICAgICAgICAgTE9HVigiIGNyZWF0ZSBWb3JiaXNQbGF5ZXIiKTsKLSAgICAgICAgICAgIHAgPSBuZXcgVm9yYmlzUGxheWVyKCk7Ci0gICAgICAgICAgICBicmVhazsKLSNpZiBCVUlMRF9XSVRIX0ZVTExfU1RBR0VGUklHSFQKICAgICAgICAgY2FzZSBTVEFHRUZSSUdIVF9QTEFZRVI6CiAgICAgICAgICAgICBMT0dWKCIgY3JlYXRlIFN0YWdlZnJpZ2h0UGxheWVyIik7CiAgICAgICAgICAgICBwID0gbmV3IFN0YWdlZnJpZ2h0UGxheWVyOwogICAgICAgICAgICAgYnJlYWs7Ci0jZW5kaWYKICAgICAgICAgY2FzZSBURVNUX1BMQVlFUjoKICAgICAgICAgICAgIExPR1YoIkNyZWF0ZSBUZXN0IFBsYXllciBzdHViIik7CiAgICAgICAgICAgICBwID0gbmV3IFRlc3RQbGF5ZXJTdHViKCk7CkBAIC04NzAsNyArODI1LDcgQEAKICAgICAgICAgaWYgKHAgPT0gTlVMTCkgcmV0dXJuIE5PX0lOSVQ7CiAKICAgICAgICAgaWYgKCFwLT5oYXJkd2FyZU91dHB1dCgpKSB7Ci0gICAgICAgICAgICBtQXVkaW9PdXRwdXQgPSBuZXcgQXVkaW9PdXRwdXQoKTsKKyAgICAgICAgICAgIG1BdWRpb091dHB1dCA9IG5ldyBBdWRpb091dHB1dChtQXVkaW9TZXNzaW9uSWQpOwogICAgICAgICAgICAgc3RhdGljX2Nhc3Q8TWVkaWFQbGF5ZXJJbnRlcmZhY2UqPihwLmdldCgpKS0+c2V0QXVkaW9TaW5rKG1BdWRpb091dHB1dCk7CiAgICAgICAgIH0KIApAQCAtOTIwLDcgKzg3NSw3IEBACiAgICAgaWYgKHAgPT0gTlVMTCkgcmV0dXJuIE5PX0lOSVQ7CiAKICAgICBpZiAoIXAtPmhhcmR3YXJlT3V0cHV0KCkpIHsKLSAgICAgICAgbUF1ZGlvT3V0cHV0ID0gbmV3IEF1ZGlvT3V0cHV0KCk7CisgICAgICAgIG1BdWRpb091dHB1dCA9IG5ldyBBdWRpb091dHB1dChtQXVkaW9TZXNzaW9uSWQpOwogICAgICAgICBzdGF0aWNfY2FzdDxNZWRpYVBsYXllckludGVyZmFjZSo+KHAuZ2V0KCkpLT5zZXRBdWRpb1NpbmsobUF1ZGlvT3V0cHV0KTsKICAgICB9CiAKQEAgLTEzMTYsMTExICsxMjcxLDIwIEBACiAgICAgcmV0dXJuIG1lbTsKIH0KIAotLyoKLSAqIEF2ZXJ0IHlvdXIgZXllcywgdWdseSBoYWNrIGFoZWFkLgotICogVGhlIGZvbGxvd2luZyBpcyB0byBzdXBwb3J0IG11c2ljIHZpc3VhbGl6YXRpb25zLgotICovCi0KLXN0YXRpYyBjb25zdCBpbnQgTlVNVklaQlVGID0gMzI7Ci1zdGF0aWMgY29uc3QgaW50IFZJWkJVRkZSQU1FUyA9IDEwMjQ7Ci1zdGF0aWMgY29uc3QgaW50IEJVRlRJTUVNU0VDID0gTlVNVklaQlVGICogVklaQlVGRlJBTUVTICogMTAwMCAvIDQ0MTAwOwotc3RhdGljIGNvbnN0IGludCBUT1RBTEJVRlRJTUVNU0VDID0gTlVNVklaQlVGICogQlVGVElNRU1TRUM7Ci0KLXN0YXRpYyBib29sIGdvdE1lbSA9IGZhbHNlOwotc3RhdGljIHNwPE1lbW9yeUhlYXBCYXNlPiBoZWFwOyAKLXN0YXRpYyBzcDxNZW1vcnlCYXNlPiBtZW1bTlVNVklaQlVGXTsKLXN0YXRpYyB1aW50NjRfdCBlbmRUaW1lOwotc3RhdGljIHVpbnQ2NF90IGxhc3RSZWFkVGltZTsKLXN0YXRpYyB1aW50NjRfdCBsYXN0V3JpdGVUaW1lOwotc3RhdGljIGludCB3cml0ZUlkeCA9IDA7Ci0KLXN0YXRpYyB2b2lkIGFsbG9jVml6QnVmcygpIHsKLSAgICBpZiAoIWdvdE1lbSkgewotICAgICAgICBoZWFwID0gbmV3IE1lbW9yeUhlYXBCYXNlKE5VTVZJWkJVRiAqIFZJWkJVRkZSQU1FUyAqIDIsIDAsICJzbm9vcGVyIik7Ci0gICAgICAgIGZvciAoaW50IGk9MDtpPE5VTVZJWkJVRjtpKyspIHsKLSAgICAgICAgICAgIG1lbVtpXSA9IG5ldyBNZW1vcnlCYXNlKGhlYXAsIFZJWkJVRkZSQU1FUyAqIDIgKiBpLCBWSVpCVUZGUkFNRVMgKiAyKTsKLSAgICAgICAgfQotICAgICAgICBlbmRUaW1lID0gMDsKLSAgICAgICAgZ290TWVtID0gdHJ1ZTsKLSAgICB9Ci19Ci0KLQotLyoKLSAqIEdldCBhIGJ1ZmZlciBvZiBhdWRpbyBkYXRhIHRoYXQgaXMgYWJvdXQgdG8gYmUgcGxheWVkLgotICogV2UgZG9uJ3Qgc3luY2hyb25pemUgdGhpcyBiZWNhdXNlIGluIHByYWN0aWNlIHRoZSB3cml0ZXIKLSAqIGlzIGFoZWFkIG9mIHRoZSByZWFkZXIsIGFuZCBldmVuIGlmIHdlIGRpZCBoYXBwZW4gdG8gY2F0Y2gKLSAqIGEgYnVmZmVyIHdoaWxlIGl0J3MgYmVpbmcgd3JpdHRlbiwgaXQncyBqdXN0IGEgdmlzdWFsaXphdGlvbiwKLSAqIHNvIG5vIGhhcm0gZG9uZS4KLSAqLwotc3RhdGljIHNwPE1lbW9yeUJhc2U+IGdldFZpekJ1ZmZlcigpIHsKLQotICAgIGFsbG9jVml6QnVmcygpOwotCi0gICAgbGFzdFJlYWRUaW1lID0gdXB0aW1lTWlsbGlzKCk7Ci0KLSAgICAvLyBpZiB0aGVyZSBpcyBubyByZWNlbnQgYnVmZmVyICh5ZXQpLCBqdXN0IHJldHVybiBlbXB0eSBoYW5kZWQKLSAgICBpZiAobGFzdFdyaXRlVGltZSArIFRPVEFMQlVGVElNRU1TRUMgPCBsYXN0UmVhZFRpbWUpIHsKLSAgICAgICAgLy9MT0dJKCJAQEBAICAgIG5vIGF1ZGlvIGRhdGEgdG8gbG9vayBhdCB5ZXQ6ICVkICsgJWQgPCAlZCIsIChpbnQpbGFzdFdyaXRlVGltZSwgVE9UQUxCVUZUSU1FTVNFQywgKGludClsYXN0UmVhZFRpbWUpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLSAgICBpbnQgdGltZWRlbHRhID0gZW5kVGltZSAtIGxhc3RSZWFkVGltZTsKLSAgICBpZiAodGltZWRlbHRhIDwgMCkgdGltZWRlbHRhID0gMDsKLSAgICBpbnQgZnJhbWVkZWx0YSA9IHRpbWVkZWx0YSAqIDQ0MTAwIC8gMTAwMDsKLSAgICBpbnQgaGVhZElkeCA9ICh3cml0ZUlkeCAtIGZyYW1lZGVsdGEpIC8gVklaQlVGRlJBTUVTIC0gMTsKLSAgICB3aGlsZSAoaGVhZElkeCA8IDApIHsKLSAgICAgICAgaGVhZElkeCArPSBOVU1WSVpCVUY7Ci0gICAgfQotICAgIHJldHVybiBtZW1baGVhZElkeF07Ci19Ci0KLS8vIEFwcGVuZCB0aGUgZGF0YSB0byB0aGUgdml6dWFsaXphdGlvbiBidWZmZXIKLXN0YXRpYyB2b2lkIG1ha2VWaXpCdWZmZXJzKGNvbnN0IGNoYXIgKmRhdGEsIGludCBsZW4sIHVpbnQ2NF90IHRpbWUpIHsKLQotICAgIGFsbG9jVml6QnVmcygpOwotCi0gICAgdWludDY0X3Qgc3RhcnRUaW1lID0gdGltZTsKLSAgICBjb25zdCBpbnQgZnJhbWVTaXplID0gNDsgLy8gMTYgYml0IHN0ZXJlbyBzYW1wbGUgaXMgNCBieXRlcwotICAgIGludCBvZmZzZXQgPSB3cml0ZUlkeDsKLSAgICBpbnQgbWF4b2ZmID0gaGVhcC0+Z2V0U2l6ZSgpIC8gMjsgLy8gaW4gc2hvcnRzCi0gICAgc2hvcnQgKmJhc2UgPSAoc2hvcnQqKWhlYXAtPmdldEJhc2UoKTsKLSAgICBzaG9ydCAqc3JjID0gKHNob3J0KilkYXRhOwotICAgIHdoaWxlIChsZW4gPiAwKSB7Ci0gICAgICAgIAotICAgICAgICAvLyBEZWdyYWRlIHF1YWxpdHkgYnkgbWl4aW5nIHRvIG1vbm8gYW5kIGNsZWFyaW5nIHRoZSBsb3dlc3QgMyBiaXRzLgotICAgICAgICAvLyBUaGlzIHNob3VsZCBzdGlsbCBiZSBnb29kIGVub3VnaCBmb3IgYSB2aXN1YWxpemF0aW9uCi0gICAgICAgIGJhc2Vbb2Zmc2V0KytdID0gKChpbnQoc3JjWzBdKSArIGludChzcmNbMV0pKSA+PiAxKSAmIH4weDc7Ci0gICAgICAgIHNyYyArPSAyOwotICAgICAgICBsZW4gLT0gZnJhbWVTaXplOwotICAgICAgICBpZiAob2Zmc2V0ID49IG1heG9mZikgewotICAgICAgICAgICAgb2Zmc2V0ID0gMDsKLSAgICAgICAgfQotICAgIH0KLSAgICB3cml0ZUlkeCA9IG9mZnNldDsKLSAgICBlbmRUaW1lID0gdGltZSArIChsZW4gLyBmcmFtZVNpemUpIC8gNDQ7Ci0gICAgLy9MT0dJKCJAQEAgc3RvcmVkIGJ1ZmZlcnMgZnJvbSAlZCB0byAlZCIsIHVpbnQzMl90KHN0YXJ0VGltZSksIHVpbnQzMl90KHRpbWUpKTsKLX0KLQotc3A8SU1lbW9yeT4gTWVkaWFQbGF5ZXJTZXJ2aWNlOjpzbm9vcCgpCi17Ci0gICAgc3A8TWVtb3J5QmFzZT4gbWVtID0gZ2V0Vml6QnVmZmVyKCk7Ci0gICAgcmV0dXJuIG1lbTsKLX0KLQogCiAjdW5kZWYgTE9HX1RBRwogI2RlZmluZSBMT0dfVEFHICJBdWRpb1NpbmsiCi1NZWRpYVBsYXllclNlcnZpY2U6OkF1ZGlvT3V0cHV0OjpBdWRpb091dHB1dCgpCitNZWRpYVBsYXllclNlcnZpY2U6OkF1ZGlvT3V0cHV0OjpBdWRpb091dHB1dChpbnQgc2Vzc2lvbklkKQogICAgIDogbUNhbGxiYWNrKE5VTEwpLAotICAgICAgbUNhbGxiYWNrQ29va2llKE5VTEwpIHsKKyAgICAgIG1DYWxsYmFja0Nvb2tpZShOVUxMKSwKKyAgICAgIG1TZXNzaW9uSWQoc2Vzc2lvbklkKSB7CisgICAgTE9HVigiQXVkaW9PdXRwdXQoJWQpIiwgc2Vzc2lvbklkKTsKICAgICBtVHJhY2sgPSAwOwogICAgIG1TdHJlYW1UeXBlID0gQXVkaW9TeXN0ZW06Ok1VU0lDOwogICAgIG1MZWZ0Vm9sdW1lID0gMS4wOwogICAgIG1SaWdodFZvbHVtZSA9IDEuMDsKICAgICBtTGF0ZW5jeSA9IDA7CiAgICAgbU1zZWNzUGVyRnJhbWUgPSAwOwotICAgIG1OdW1GcmFtZXNXcml0dGVuID0gMDsKICAgICBzZXRNaW5CdWZmZXJDb3VudCgpOwogfQogCkBAIC0xNTAzLDcgKzEzNjcsNyBAQAogICAgICAgICBidWZmZXJDb3VudCA9IG1NaW5CdWZmZXJDb3VudDsKIAogICAgIH0KLSAgICBMT0dWKCJvcGVuKCV1LCAlZCwgJWQsICVkKSIsIHNhbXBsZVJhdGUsIGNoYW5uZWxDb3VudCwgZm9ybWF0LCBidWZmZXJDb3VudCk7CisgICAgTE9HVigib3BlbigldSwgJWQsICVkLCAlZCwgJWQpIiwgc2FtcGxlUmF0ZSwgY2hhbm5lbENvdW50LCBmb3JtYXQsIGJ1ZmZlckNvdW50LG1TZXNzaW9uSWQpOwogICAgIGlmIChtVHJhY2spIGNsb3NlKCk7CiAgICAgaW50IGFmU2FtcGxlUmF0ZTsKICAgICBpbnQgYWZGcmFtZUNvdW50OwpAQCAtMTUyOCwxNCArMTM5MiwyMSBAQAogICAgICAgICAgICAgICAgIGZyYW1lQ291bnQsCiAgICAgICAgICAgICAgICAgMCAvKiBmbGFncyAqLywKICAgICAgICAgICAgICAgICBDYWxsYmFja1dyYXBwZXIsCi0gICAgICAgICAgICAgICAgdGhpcyk7CisgICAgICAgICAgICAgICAgdGhpcywKKyAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgIG1TZXNzaW9uSWQpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIHQgPSBuZXcgQXVkaW9UcmFjaygKICAgICAgICAgICAgICAgICBtU3RyZWFtVHlwZSwKICAgICAgICAgICAgICAgICBzYW1wbGVSYXRlLAogICAgICAgICAgICAgICAgIGZvcm1hdCwKICAgICAgICAgICAgICAgICAoY2hhbm5lbENvdW50ID09IDIpID8gQXVkaW9TeXN0ZW06OkNIQU5ORUxfT1VUX1NURVJFTyA6IEF1ZGlvU3lzdGVtOjpDSEFOTkVMX09VVF9NT05PLAotICAgICAgICAgICAgICAgIGZyYW1lQ291bnQpOworICAgICAgICAgICAgICAgIGZyYW1lQ291bnQsCisgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICBOVUxMLAorICAgICAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICBtU2Vzc2lvbklkKTsKICAgICB9CiAKICAgICBpZiAoKHQgPT0gMCkgfHwgKHQtPmluaXRDaGVjaygpICE9IE5PX0VSUk9SKSkgewpAQCAtMTU1OCwzMCArMTQyOSw5IEBACiAgICAgaWYgKG1UcmFjaykgewogICAgICAgICBtVHJhY2stPnNldFZvbHVtZShtTGVmdFZvbHVtZSwgbVJpZ2h0Vm9sdW1lKTsKICAgICAgICAgbVRyYWNrLT5zdGFydCgpOwotICAgICAgICBtVHJhY2stPmdldFBvc2l0aW9uKCZtTnVtRnJhbWVzV3JpdHRlbik7CiAgICAgfQogfQogCi12b2lkIE1lZGlhUGxheWVyU2VydmljZTo6QXVkaW9PdXRwdXQ6OnNub29wV3JpdGUoY29uc3Qgdm9pZCogYnVmZmVyLCBzaXplX3Qgc2l6ZSkgewotICAgIC8vIE9ubHkgbWFrZSB2aXN1YWxpemF0aW9uIGJ1ZmZlcnMgaWYgYW55b25lIHJlY2VudGx5IHJlcXVlc3RlZCB2aXN1YWxpemF0aW9uIGRhdGEKLSAgICB1aW50NjRfdCBub3cgPSB1cHRpbWVNaWxsaXMoKTsKLSAgICBpZiAobGFzdFJlYWRUaW1lICsgVE9UQUxCVUZUSU1FTVNFQyA+PSBub3cpIHsKLSAgICAgICAgLy8gQmFzZWQgb24gdGhlIGN1cnJlbnQgcGxheSBjb3VudGVyLCB0aGUgbnVtYmVyIG9mIGZyYW1lcyB3cml0dGVuIGFuZAotICAgICAgICAvLyB0aGUgY3VycmVudCByZWFsIHRpbWUgd2UgY2FuIGNhbGN1bGF0ZSB0aGUgYXBwcm94aW1hdGUgcmVhbCBzdGFydAotICAgICAgICAvLyB0aW1lIG9mIHRoZSBidWZmZXIgd2UncmUgYWJvdXQgdG8gd3JpdGUuCi0gICAgICAgIHVpbnQzMl90IHBvczsKLSAgICAgICAgbVRyYWNrLT5nZXRQb3NpdGlvbigmcG9zKTsKLQotICAgICAgICAvLyB3ZSdyZSB3cml0aW5nIGFoZWFkIGJ5IHRoaXMgbWFueSBmcmFtZXM6Ci0gICAgICAgIGludCBhaGVhZCA9IG1OdW1GcmFtZXNXcml0dGVuIC0gcG9zOwotICAgICAgICAvL0xPR0koIkBAQCB3cml0dGVuOiAlZCwgcGxheXBvczogJWQsIGxhdGVuY3k6ICVkIiwgbU51bUZyYW1lc1dyaXR0ZW4sIHBvcywgbVRyYWNrLT5sYXRlbmN5KCkpOwotICAgICAgICAvLyB3aGljaCBpcyB0aGlzIG1hbnkgbWlsbGlzZWNvbmRzLCBhc3N1bWluZyA0NDEwMCBIejoKLSAgICAgICAgYWhlYWQgLz0gNDQ7Ci0KLSAgICAgICAgbWFrZVZpekJ1ZmZlcnMoKGNvbnN0IGNoYXIqKWJ1ZmZlciwgc2l6ZSwgbm93ICsgYWhlYWQgKyBtVHJhY2stPmxhdGVuY3koKSk7Ci0gICAgICAgIGxhc3RXcml0ZVRpbWUgPSBub3c7Ci0gICAgfQotfQogCiAKIHNzaXplX3QgTWVkaWFQbGF5ZXJTZXJ2aWNlOjpBdWRpb091dHB1dDo6d3JpdGUoY29uc3Qgdm9pZCogYnVmZmVyLCBzaXplX3Qgc2l6ZSkKQEAgLTE1OTAsOSArMTQ0MCw3IEBACiAKICAgICAvL0xPR1YoIndyaXRlKCVwLCAldSkiLCBidWZmZXIsIHNpemUpOwogICAgIGlmIChtVHJhY2spIHsKLSAgICAgICAgc25vb3BXcml0ZShidWZmZXIsIHNpemUpOwogICAgICAgICBzc2l6ZV90IHJldCA9IG1UcmFjay0+d3JpdGUoYnVmZmVyLCBzaXplKTsKLSAgICAgICAgbU51bUZyYW1lc1dyaXR0ZW4gKz0gcmV0IC8gNDsgLy8gYXNzdW1lIDE2IGJpdCBzdGVyZW8KICAgICAgICAgcmV0dXJuIHJldDsKICAgICB9CiAgICAgcmV0dXJuIE5PX0lOSVQ7CkBAIC0xNjAyLDcgKzE0NTAsNiBAQAogewogICAgIExPR1YoInN0b3AiKTsKICAgICBpZiAobVRyYWNrKSBtVHJhY2stPnN0b3AoKTsKLSAgICBsYXN0V3JpdGVUaW1lID0gMDsKIH0KIAogdm9pZCBNZWRpYVBsYXllclNlcnZpY2U6OkF1ZGlvT3V0cHV0OjpmbHVzaCgpCkBAIC0xNjE1LDcgKzE0NjIsNiBAQAogewogICAgIExPR1YoInBhdXNlIik7CiAgICAgaWYgKG1UcmFjaykgbVRyYWNrLT5wYXVzZSgpOwotICAgIGxhc3RXcml0ZVRpbWUgPSAwOwogfQogCiB2b2lkIE1lZGlhUGxheWVyU2VydmljZTo6QXVkaW9PdXRwdXQ6OmNsb3NlKCkKQEAgLTE2NTEsOSArMTQ5Nyw2IEBACiAKICAgICBidWZmZXItPnNpemUgPSBhY3R1YWxTaXplOwogCi0gICAgaWYgKGFjdHVhbFNpemUgPiAwKSB7Ci0gICAgICAgIG1lLT5zbm9vcFdyaXRlKGJ1ZmZlci0+cmF3LCBhY3R1YWxTaXplKTsKLSAgICB9CiB9CiAKICN1bmRlZiBMT0dfVEFHCmRpZmYgLS1naXQgYS9tZWRpYS9saWJtZWRpYXBsYXllcnNlcnZpY2UvTWVkaWFQbGF5ZXJTZXJ2aWNlLmggYi9tZWRpYS9saWJtZWRpYXBsYXllcnNlcnZpY2UvTWVkaWFQbGF5ZXJTZXJ2aWNlLmgKaW5kZXggMjQwOGM2Mi4uMzlmNTI1ZSAxMDA2NDQKLS0tIGEvbWVkaWEvbGlibWVkaWFwbGF5ZXJzZXJ2aWNlL01lZGlhUGxheWVyU2VydmljZS5oCisrKyBiL21lZGlhL2xpYm1lZGlhcGxheWVyc2VydmljZS9NZWRpYVBsYXllclNlcnZpY2UuaApAQCAtNjUsNyArNjUsNyBAQAogICAgIGNsYXNzIEF1ZGlvT3V0cHV0IDogcHVibGljIE1lZGlhUGxheWVyQmFzZTo6QXVkaW9TaW5rCiAgICAgewogICAgIHB1YmxpYzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXVkaW9PdXRwdXQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXVkaW9PdXRwdXQoaW50IHNlc3Npb25JZCk7CiAgICAgICAgIHZpcnR1YWwgICAgICAgICAgICAgICAgIH5BdWRpb091dHB1dCgpOwogCiAgICAgICAgIHZpcnR1YWwgYm9vbCAgICAgICAgICAgIHJlYWR5KCkgY29uc3QgeyByZXR1cm4gbVRyYWNrICE9IE5VTEw7IH0KQEAgLTEwOCwxMyArMTA4LDExIEBACiAgICAgICAgIGZsb2F0ICAgICAgICAgICAgICAgICAgIG1SaWdodFZvbHVtZTsKICAgICAgICAgZmxvYXQgICAgICAgICAgICAgICAgICAgbU1zZWNzUGVyRnJhbWU7CiAgICAgICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgIG1MYXRlbmN5OworICAgICAgICBpbnQgICAgICAgICAgICAgICAgICAgICBtU2Vzc2lvbklkOwogCiAgICAgICAgIHN0YXRpYyBib29sICAgICAgICAgICAgIG1Jc09uRW11bGF0b3I7CiAgICAgICAgIHN0YXRpYyBpbnQgICAgICAgICAgICAgIG1NaW5CdWZmZXJDb3VudDsgIC8vIDEyIGZvciBlbXVsYXRvcjsgb3RoZXJ3aXNlIDQKIAotICAgICAgICBwdWJsaWM6IC8vIHZpc3VhbGl6YXRpb24gaGFjayBzdXBwb3J0Ci0gICAgICAgIHVpbnQzMl90ICAgICAgICAgICAgICAgIG1OdW1GcmFtZXNXcml0dGVuOwotICAgICAgICB2b2lkICAgICAgICAgICAgICAgICAgICBzbm9vcFdyaXRlKGNvbnN0IHZvaWQqLCBzaXplX3QpOwogICAgIH07CiAKICAgICBjbGFzcyBBdWRpb0NhY2hlIDogcHVibGljIE1lZGlhUGxheWVyQmFzZTo6QXVkaW9TaW5rCkBAIC0xODUsMTIgKzE4MywxMSBAQAogICAgIC8vIEhvdXNlIGtlZXBpbmcgZm9yIG1lZGlhIHBsYXllciBjbGllbnRzCiAgICAgdmlydHVhbCBzcDxJTWVkaWFQbGF5ZXI+ICAgIGNyZWF0ZSgKICAgICAgICAgICAgIHBpZF90IHBpZCwgY29uc3Qgc3A8SU1lZGlhUGxheWVyQ2xpZW50PiYgY2xpZW50LCBjb25zdCBjaGFyKiB1cmwsCi0gICAgICAgICAgICBjb25zdCBLZXllZFZlY3RvcjxTdHJpbmc4LCBTdHJpbmc4PiAqaGVhZGVycyk7CisgICAgICAgICAgICBjb25zdCBLZXllZFZlY3RvcjxTdHJpbmc4LCBTdHJpbmc4PiAqaGVhZGVycywgaW50IGF1ZGlvU2Vzc2lvbklkKTsKIAotICAgIHZpcnR1YWwgc3A8SU1lZGlhUGxheWVyPiAgICBjcmVhdGUocGlkX3QgcGlkLCBjb25zdCBzcDxJTWVkaWFQbGF5ZXJDbGllbnQ+JiBjbGllbnQsIGludCBmZCwgaW50NjRfdCBvZmZzZXQsIGludDY0X3QgbGVuZ3RoKTsKKyAgICB2aXJ0dWFsIHNwPElNZWRpYVBsYXllcj4gICAgY3JlYXRlKHBpZF90IHBpZCwgY29uc3Qgc3A8SU1lZGlhUGxheWVyQ2xpZW50PiYgY2xpZW50LCBpbnQgZmQsIGludDY0X3Qgb2Zmc2V0LCBpbnQ2NF90IGxlbmd0aCwgaW50IGF1ZGlvU2Vzc2lvbklkKTsKICAgICB2aXJ0dWFsIHNwPElNZW1vcnk+ICAgICAgICAgZGVjb2RlKGNvbnN0IGNoYXIqIHVybCwgdWludDMyX3QgKnBTYW1wbGVSYXRlLCBpbnQqIHBOdW1DaGFubmVscywgaW50KiBwRm9ybWF0KTsKICAgICB2aXJ0dWFsIHNwPElNZW1vcnk+ICAgICAgICAgZGVjb2RlKGludCBmZCwgaW50NjRfdCBvZmZzZXQsIGludDY0X3QgbGVuZ3RoLCB1aW50MzJfdCAqcFNhbXBsZVJhdGUsIGludCogcE51bUNoYW5uZWxzLCBpbnQqIHBGb3JtYXQpOwotICAgIHZpcnR1YWwgc3A8SU1lbW9yeT4gICAgICAgICBzbm9vcCgpOwogICAgIHZpcnR1YWwgc3A8SU9NWD4gICAgICAgICAgICBnZXRPTVgoKTsKIAogICAgIHZpcnR1YWwgc3RhdHVzX3QgICAgICAgICAgICBkdW1wKGludCBmZCwgY29uc3QgVmVjdG9yPFN0cmluZzE2PiYgYXJncyk7CkBAIC0yMzcsMTIgKzIzNCwxNSBAQAogICAgICAgICAgICAgICAgIHBpZF90ICAgICAgICAgICBwaWQoKSBjb25zdCB7IHJldHVybiBtUGlkOyB9CiAgICAgICAgIHZpcnR1YWwgc3RhdHVzX3QgICAgICAgIGR1bXAoaW50IGZkLCBjb25zdCBWZWN0b3I8U3RyaW5nMTY+JiBhcmdzKSBjb25zdDsKIAorICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgICBnZXRBdWRpb1Nlc3Npb25JZCgpIHsgcmV0dXJuIG1BdWRpb1Nlc3Npb25JZDsgfQorCiAgICAgcHJpdmF0ZToKICAgICAgICAgZnJpZW5kIGNsYXNzIE1lZGlhUGxheWVyU2VydmljZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2xpZW50KCBjb25zdCBzcDxNZWRpYVBsYXllclNlcnZpY2U+JiBzZXJ2aWNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpZF90IHBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90IGNvbm5JZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzcDxJTWVkaWFQbGF5ZXJDbGllbnQ+JiBjbGllbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHNwPElNZWRpYVBsYXllckNsaWVudD4mIGNsaWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgYXVkaW9TZXNzaW9uSWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDbGllbnQoKTsKICAgICAgICAgdmlydHVhbCAgICAgICAgICAgICAgICAgfkNsaWVudCgpOwogCkBAIC0yNzEsNiArMjcxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgc3RhdHVzX3QgICAgICAgICAgICAgICAgICAgIG1TdGF0dXM7CiAgICAgICAgICAgICAgICAgICAgIGJvb2wgICAgICAgICAgICAgICAgICAgICAgICBtTG9vcDsKICAgICAgICAgICAgICAgICAgICAgaW50MzJfdCAgICAgICAgICAgICAgICAgICAgIG1Db25uSWQ7CisgICAgICAgICAgICAgICAgICAgIGludCAgICAgICAgICAgICAgICAgICAgICAgICBtQXVkaW9TZXNzaW9uSWQ7CiAKICAgICAgICAgLy8gTWV0YWRhdGEgZmlsdGVycy4KICAgICAgICAgbWVkaWE6Ok1ldGFkYXRhOjpGaWx0ZXIgbU1ldGFkYXRhQWxsb3c7ICAvLyBwcm90ZWN0ZWQgYnkgbUxvY2sKZGlmZiAtLWdpdCBhL21lZGlhL2xpYm1lZGlhcGxheWVyc2VydmljZS9NZWRpYVJlY29yZGVyQ2xpZW50LmNwcCBiL21lZGlhL2xpYm1lZGlhcGxheWVyc2VydmljZS9NZWRpYVJlY29yZGVyQ2xpZW50LmNwcAppbmRleCBjNTA3NjY5Li5mZWYzZTZlIDEwMDY0NAotLS0gYS9tZWRpYS9saWJtZWRpYXBsYXllcnNlcnZpY2UvTWVkaWFSZWNvcmRlckNsaWVudC5jcHAKKysrIGIvbWVkaWEvbGlibWVkaWFwbGF5ZXJzZXJ2aWNlL01lZGlhUmVjb3JkZXJDbGllbnQuY3BwCkBAIC0yOTQsMTMgKzI5NCwxMSBAQAogICAgIExPR1YoIkNsaWVudCBjb25zdHJ1Y3RvciIpOwogICAgIG1QaWQgPSBwaWQ7CiAKLSNpZiBCVUlMRF9XSVRIX0ZVTExfU1RBR0VGUklHSFQKICAgICBjaGFyIHZhbHVlW1BST1BFUlRZX1ZBTFVFX01BWF07CiAgICAgaWYgKHByb3BlcnR5X2dldCgibWVkaWEuc3RhZ2VmcmlnaHQuZW5hYmxlLXJlY29yZCIsIHZhbHVlLCBOVUxMKQogICAgICAgICAmJiAoIXN0cmNtcCh2YWx1ZSwgIjEiKSB8fCAhc3RyY2FzZWNtcCh2YWx1ZSwgInRydWUiKSkpIHsKICAgICAgICAgbVJlY29yZGVyID0gbmV3IFN0YWdlZnJpZ2h0UmVjb3JkZXI7CiAgICAgfSBlbHNlCi0jZW5kaWYKICNpZm5kZWYgTk9fT1BFTkNPUkUKICAgICB7CiAgICAgICAgIG1SZWNvcmRlciA9IG5ldyBQVk1lZGlhUmVjb3JkZXIoKTsKQEAgLTMyMCw3ICszMTgsNyBAQAogICAgIHJlbGVhc2UoKTsKIH0KIAotc3RhdHVzX3QgTWVkaWFSZWNvcmRlckNsaWVudDo6c2V0TGlzdGVuZXIoY29uc3Qgc3A8SU1lZGlhUGxheWVyQ2xpZW50PiYgbGlzdGVuZXIpCitzdGF0dXNfdCBNZWRpYVJlY29yZGVyQ2xpZW50OjpzZXRMaXN0ZW5lcihjb25zdCBzcDxJTWVkaWFSZWNvcmRlckNsaWVudD4mIGxpc3RlbmVyKQogewogICAgIExPR1YoInNldExpc3RlbmVyIik7CiAgICAgTXV0ZXg6OkF1dG9sb2NrIGxvY2sobUxvY2spOwpAQCAtMzMxLDUgKzMyOSwxMiBAQAogICAgIHJldHVybiBtUmVjb3JkZXItPnNldExpc3RlbmVyKGxpc3RlbmVyKTsKIH0KIAorc3RhdHVzX3QgTWVkaWFSZWNvcmRlckNsaWVudDo6ZHVtcChpbnQgZmQsIGNvbnN0IFZlY3RvcjxTdHJpbmcxNj4mIGFyZ3MpIGNvbnN0IHsKKyAgICBpZiAobVJlY29yZGVyICE9IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIG1SZWNvcmRlci0+ZHVtcChmZCwgYXJncyk7CisgICAgfQorICAgIHJldHVybiBPSzsKK30KKwogfTsgLy8gbmFtZXNwYWNlIGFuZHJvaWQKIApkaWZmIC0tZ2l0IGEvbWVkaWEvbGlibWVkaWFwbGF5ZXJzZXJ2aWNlL01lZGlhUmVjb3JkZXJDbGllbnQuaCBiL21lZGlhL2xpYm1lZGlhcGxheWVyc2VydmljZS9NZWRpYVJlY29yZGVyQ2xpZW50LmgKaW5kZXggZTA3MzA2Yi4uZDEyZTU1OCAxMDA2NDQKLS0tIGEvbWVkaWEvbGlibWVkaWFwbGF5ZXJzZXJ2aWNlL01lZGlhUmVjb3JkZXJDbGllbnQuaAorKysgYi9tZWRpYS9saWJtZWRpYXBsYXllcnNlcnZpY2UvTWVkaWFSZWNvcmRlckNsaWVudC5oCkBAIC0yOCw3ICsyOCw3IEBACiBjbGFzcyBNZWRpYVJlY29yZGVyQ2xpZW50IDogcHVibGljIEJuTWVkaWFSZWNvcmRlcgogewogcHVibGljOgotICAgIHZpcnR1YWwJICAgIHN0YXR1c190CQlzZXRDYW1lcmEoY29uc3Qgc3A8SUNhbWVyYT4mIGNhbWVyYSk7CisgICAgdmlydHVhbCAgICAgc3RhdHVzX3QgICAgICAgIHNldENhbWVyYShjb25zdCBzcDxJQ2FtZXJhPiYgY2FtZXJhKTsKICAgICB2aXJ0dWFsICAgICBzdGF0dXNfdCAgICAgICAgc2V0UHJldmlld1N1cmZhY2UoY29uc3Qgc3A8SVN1cmZhY2U+JiBzdXJmYWNlKTsKICAgICB2aXJ0dWFsICAgICBzdGF0dXNfdCAgICAgICAgc2V0VmlkZW9Tb3VyY2UoaW50IHZzKTsKICAgICB2aXJ0dWFsICAgICBzdGF0dXNfdCAgICAgICAgc2V0QXVkaW9Tb3VyY2UoaW50IGFzKTsKQEAgLTQwLDI2ICs0MCwyNyBAQAogICAgIHZpcnR1YWwgICAgIHN0YXR1c190ICAgICAgICBzZXRWaWRlb1NpemUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0KTsKICAgICB2aXJ0dWFsICAgICBzdGF0dXNfdCAgICAgICAgc2V0VmlkZW9GcmFtZVJhdGUoaW50IGZyYW1lc19wZXJfc2Vjb25kKTsKICAgICB2aXJ0dWFsICAgICBzdGF0dXNfdCAgICAgICAgc2V0UGFyYW1ldGVycyhjb25zdCBTdHJpbmc4JiBwYXJhbXMpOwotICAgIHZpcnR1YWwgICAgIHN0YXR1c190ICAgICAgICBzZXRMaXN0ZW5lcihjb25zdCBzcDxJTWVkaWFQbGF5ZXJDbGllbnQ+JiBsaXN0ZW5lcik7CisgICAgdmlydHVhbCAgICAgc3RhdHVzX3QgICAgICAgIHNldExpc3RlbmVyKGNvbnN0IHNwPElNZWRpYVJlY29yZGVyQ2xpZW50PiYgbGlzdGVuZXIpOwogICAgIHZpcnR1YWwgICAgIHN0YXR1c190ICAgICAgICBwcmVwYXJlKCk7CiAgICAgdmlydHVhbCAgICAgc3RhdHVzX3QgICAgICAgIGdldE1heEFtcGxpdHVkZShpbnQqIG1heCk7CiAgICAgdmlydHVhbCAgICAgc3RhdHVzX3QgICAgICAgIHN0YXJ0KCk7CiAgICAgdmlydHVhbCAgICAgc3RhdHVzX3QgICAgICAgIHN0b3AoKTsKLSAgICB2aXJ0dWFsCSAgICBzdGF0dXNfdCAgICAgICAgcmVzZXQoKTsKKyAgICB2aXJ0dWFsICAgICBzdGF0dXNfdCAgICAgICAgcmVzZXQoKTsKICAgICB2aXJ0dWFsICAgICBzdGF0dXNfdCAgICAgICAgaW5pdCgpOwogICAgIHZpcnR1YWwgICAgIHN0YXR1c190ICAgICAgICBjbG9zZSgpOwogICAgIHZpcnR1YWwgICAgIHN0YXR1c190ICAgICAgICByZWxlYXNlKCk7CiAKKyAgICB2aXJ0dWFsICAgICBzdGF0dXNfdCAgICAgICAgZHVtcChpbnQgZmQsIGNvbnN0IFZlY3RvcjxTdHJpbmcxNj4mIGFyZ3MpIGNvbnN0OwogcHJpdmF0ZToKLSAgICBmcmllbmQgY2xhc3MgICAgICAgICAgICAgICAgIE1lZGlhUGxheWVyU2VydmljZTsgIC8vIGZvciBhY2Nlc3NpbmcgcHJpdmF0ZSBjb25zdHJ1Y3RvcgorICAgIGZyaWVuZCBjbGFzcyAgICAgICAgICAgICAgICBNZWRpYVBsYXllclNlcnZpY2U7ICAvLyBmb3IgYWNjZXNzaW5nIHByaXZhdGUgY29uc3RydWN0b3IKIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWVkaWFSZWNvcmRlckNsaWVudChjb25zdCBzcDxNZWRpYVBsYXllclNlcnZpY2U+JiBzZXJ2aWNlLCBwaWRfdCBwaWQpOwotICAgIHZpcnR1YWwgCQkgICAgICAgICB+TWVkaWFSZWNvcmRlckNsaWVudCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZWRpYVJlY29yZGVyQ2xpZW50KGNvbnN0IHNwPE1lZGlhUGxheWVyU2VydmljZT4mIHNlcnZpY2UsIHBpZF90IHBpZCk7CisgICAgdmlydHVhbCAgICAgICAgICAgICAgICAgICAgIH5NZWRpYVJlY29yZGVyQ2xpZW50KCk7CiAKLSAgICBwaWRfdAkJCSBtUGlkOwotICAgIE11dGV4CQkJIG1Mb2NrOwotICAgIE1lZGlhUmVjb3JkZXJCYXNlICAgICAgICAgICAgKm1SZWNvcmRlcjsKLSAgICBzcDxNZWRpYVBsYXllclNlcnZpY2U+ICAgICAgIG1NZWRpYVBsYXllclNlcnZpY2U7CisgICAgcGlkX3QgICAgICAgICAgICAgICAgICAgICAgIG1QaWQ7CisgICAgTXV0ZXggICAgICAgICAgICAgICAgICAgICAgIG1Mb2NrOworICAgIE1lZGlhUmVjb3JkZXJCYXNlICAgICAgICAgICAqbVJlY29yZGVyOworICAgIHNwPE1lZGlhUGxheWVyU2VydmljZT4gICAgICBtTWVkaWFQbGF5ZXJTZXJ2aWNlOwogfTsKIAogfTsgLy8gbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL21lZGlhL2xpYm1lZGlhcGxheWVyc2VydmljZS9NZXRhZGF0YVJldHJpZXZlckNsaWVudC5jcHAgYi9tZWRpYS9saWJtZWRpYXBsYXllcnNlcnZpY2UvTWV0YWRhdGFSZXRyaWV2ZXJDbGllbnQuY3BwCmluZGV4IDU1MGI4NGRmLi5jYTIyOWZhIDEwMDY0NAotLS0gYS9tZWRpYS9saWJtZWRpYXBsYXllcnNlcnZpY2UvTWV0YWRhdGFSZXRyaWV2ZXJDbGllbnQuY3BwCisrKyBiL21lZGlhL2xpYm1lZGlhcGxheWVyc2VydmljZS9NZXRhZGF0YVJldHJpZXZlckNsaWVudC5jcHAKQEAgLTM3LDcgKzM3LDYgQEAKICNpbmNsdWRlIDxtZWRpYS9NZWRpYVBsYXllckludGVyZmFjZS5oPgogI2luY2x1ZGUgPG1lZGlhL1BWTWV0YWRhdGFSZXRyaWV2ZXIuaD4KICNpbmNsdWRlIDxwcml2YXRlL21lZGlhL1ZpZGVvRnJhbWUuaD4KLSNpbmNsdWRlICJWb3JiaXNNZXRhZGF0YVJldHJpZXZlci5oIgogI2luY2x1ZGUgIk1pZGlNZXRhZGF0YVJldHJpZXZlci5oIgogI2luY2x1ZGUgIk1ldGFkYXRhUmV0cmlldmVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiU3RhZ2VmcmlnaHRNZXRhZGF0YVJldHJpZXZlci5oIgpAQCAtMTAzLDMwICsxMDIsMTcgQEAKIHsKICAgICBzcDxNZWRpYU1ldGFkYXRhUmV0cmlldmVyQmFzZT4gcDsKICAgICBzd2l0Y2ggKHBsYXllclR5cGUpIHsKLSNpZiBCVUlMRF9XSVRIX0ZVTExfU1RBR0VGUklHSFQKICAgICAgICAgY2FzZSBTVEFHRUZSSUdIVF9QTEFZRVI6CiAgICAgICAgIHsKLSAgICAgICAgICAgIGNoYXIgdmFsdWVbUFJPUEVSVFlfVkFMVUVfTUFYXTsKLSAgICAgICAgICAgIGlmIChwcm9wZXJ0eV9nZXQoIm1lZGlhLnN0YWdlZnJpZ2h0LmVuYWJsZS1tZXRhIiwgdmFsdWUsIE5VTEwpCi0gICAgICAgICAgICAgICAgJiYgKCFzdHJjbXAodmFsdWUsICIxIikgfHwgIXN0cmNhc2VjbXAodmFsdWUsICJ0cnVlIikpKSB7Ci0gICAgICAgICAgICAgICAgTE9HVigiY3JlYXRlIFN0YWdlZnJpZ2h0TWV0YWRhdGFSZXRyaWV2ZXIiKTsKLSAgICAgICAgICAgICAgICBwID0gbmV3IFN0YWdlZnJpZ2h0TWV0YWRhdGFSZXRyaWV2ZXI7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIGZhbGwgdGhyb3VnaAorICAgICAgICAgICAgcCA9IG5ldyBTdGFnZWZyaWdodE1ldGFkYXRhUmV0cmlldmVyOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSNlbmRpZgogI2lmbmRlZiBOT19PUEVOQ09SRQogICAgICAgICBjYXNlIFBWX1BMQVlFUjoKICAgICAgICAgICAgIExPR1YoImNyZWF0ZSBwdiBtZXRhZGF0YSByZXRyaWV2ZXIiKTsKICAgICAgICAgICAgIHAgPSBuZXcgUFZNZXRhZGF0YVJldHJpZXZlcigpOwogICAgICAgICAgICAgYnJlYWs7CiAjZW5kaWYKLSAgICAgICAgY2FzZSBWT1JCSVNfUExBWUVSOgotICAgICAgICAgICAgTE9HVigiY3JlYXRlIHZvcmJpcyBtZXRhZGF0YSByZXRyaWV2ZXIiKTsKLSAgICAgICAgICAgIHAgPSBuZXcgVm9yYmlzTWV0YWRhdGFSZXRyaWV2ZXIoKTsKLSAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFNPTklWT1hfUExBWUVSOgogICAgICAgICAgICAgTE9HVigiY3JlYXRlIG1pZGkgbWV0YWRhdGEgcmV0cmlldmVyIik7CiAgICAgICAgICAgICBwID0gbmV3IE1pZGlNZXRhZGF0YVJldHJpZXZlcigpOwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlibWVkaWFwbGF5ZXJzZXJ2aWNlL1N0YWdlZnJpZ2h0UmVjb3JkZXIuY3BwIGIvbWVkaWEvbGlibWVkaWFwbGF5ZXJzZXJ2aWNlL1N0YWdlZnJpZ2h0UmVjb3JkZXIuY3BwCmluZGV4IDUzMWZkMTEuLjcyMDYxYWQgMTAwNjQ0Ci0tLSBhL21lZGlhL2xpYm1lZGlhcGxheWVyc2VydmljZS9TdGFnZWZyaWdodFJlY29yZGVyLmNwcAorKysgYi9tZWRpYS9saWJtZWRpYXBsYXllcnNlcnZpY2UvU3RhZ2VmcmlnaHRSZWNvcmRlci5jcHAKQEAgLTIwLDYgKzIwLDcgQEAKIAogI2luY2x1ZGUgIlN0YWdlZnJpZ2h0UmVjb3JkZXIuaCIKIAorI2luY2x1ZGUgPGJpbmRlci9JUENUaHJlYWRTdGF0ZS5oPgogI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L0F1ZGlvU291cmNlLmg+CiAjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvQU1SV3JpdGVyLmg+CiAjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvQ2FtZXJhU291cmNlLmg+CkBAIC0yOSwxNyArMzAsMjggQEAKICNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZXRhRGF0YS5oPgogI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L09NWENsaWVudC5oPgogI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L09NWENvZGVjLmg+CisjaW5jbHVkZSA8bWVkaWEvTWVkaWFQcm9maWxlcy5oPgogI2luY2x1ZGUgPGNhbWVyYS9JQ2FtZXJhLmg+CisjaW5jbHVkZSA8Y2FtZXJhL0NhbWVyYS5oPgorI2luY2x1ZGUgPGNhbWVyYS9DYW1lcmFQYXJhbWV0ZXJzLmg+CiAjaW5jbHVkZSA8c3VyZmFjZWZsaW5nZXIvSVN1cmZhY2UuaD4KICNpbmNsdWRlIDx1dGlscy9FcnJvcnMuaD4KKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxjdHlwZS5oPgogCiBuYW1lc3BhY2UgYW5kcm9pZCB7CiAKLVN0YWdlZnJpZ2h0UmVjb3JkZXI6OlN0YWdlZnJpZ2h0UmVjb3JkZXIoKSB7CitTdGFnZWZyaWdodFJlY29yZGVyOjpTdGFnZWZyaWdodFJlY29yZGVyKCkKKyAgICA6IG1Xcml0ZXIoTlVMTCksCisgICAgICBtT3V0cHV0RmQoLTEpIHsKKworICAgIExPR1YoIkNvbnN0cnVjdG9yIik7CiAgICAgcmVzZXQoKTsKIH0KIAogU3RhZ2VmcmlnaHRSZWNvcmRlcjo6flN0YWdlZnJpZ2h0UmVjb3JkZXIoKSB7CisgICAgTE9HVigiRGVzdHJ1Y3RvciIpOwogICAgIHN0b3AoKTsKIAogICAgIGlmIChtT3V0cHV0RmQgPj0gMCkgewpAQCAtNDksNDAgKzYxLDEwMyBAQAogfQogCiBzdGF0dXNfdCBTdGFnZWZyaWdodFJlY29yZGVyOjppbml0KCkgeworICAgIExPR1YoImluaXQiKTsKICAgICByZXR1cm4gT0s7CiB9CiAKIHN0YXR1c190IFN0YWdlZnJpZ2h0UmVjb3JkZXI6OnNldEF1ZGlvU291cmNlKGF1ZGlvX3NvdXJjZSBhcykgewotICAgIG1BdWRpb1NvdXJjZSA9IGFzOworICAgIExPR1YoInNldEF1ZGlvU291cmNlOiAlZCIsIGFzKTsKKyAgICBpZiAoYXMgPCBBVURJT19TT1VSQ0VfREVGQVVMVCB8fAorICAgICAgICBhcyA+PSBBVURJT19TT1VSQ0VfTElTVF9FTkQpIHsKKyAgICAgICAgTE9HRSgiSW52YWxpZCBhdWRpbyBzb3VyY2U6ICVkIiwgYXMpOworICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOworICAgIH0KKworICAgIGlmIChhcyA9PSBBVURJT19TT1VSQ0VfREVGQVVMVCkgeworICAgICAgICBtQXVkaW9Tb3VyY2UgPSBBVURJT19TT1VSQ0VfTUlDOworICAgIH0gZWxzZSB7CisgICAgICAgIG1BdWRpb1NvdXJjZSA9IGFzOworICAgIH0KIAogICAgIHJldHVybiBPSzsKIH0KIAogc3RhdHVzX3QgU3RhZ2VmcmlnaHRSZWNvcmRlcjo6c2V0VmlkZW9Tb3VyY2UodmlkZW9fc291cmNlIHZzKSB7Ci0gICAgbVZpZGVvU291cmNlID0gdnM7CisgICAgTE9HVigic2V0VmlkZW9Tb3VyY2U6ICVkIiwgdnMpOworICAgIGlmICh2cyA8IFZJREVPX1NPVVJDRV9ERUZBVUxUIHx8CisgICAgICAgIHZzID49IFZJREVPX1NPVVJDRV9MSVNUX0VORCkgeworICAgICAgICBMT0dFKCJJbnZhbGlkIHZpZGVvIHNvdXJjZTogJWQiLCB2cyk7CisgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisgICAgfQorCisgICAgaWYgKHZzID09IFZJREVPX1NPVVJDRV9ERUZBVUxUKSB7CisgICAgICAgIG1WaWRlb1NvdXJjZSA9IFZJREVPX1NPVVJDRV9DQU1FUkE7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbVZpZGVvU291cmNlID0gdnM7CisgICAgfQogCiAgICAgcmV0dXJuIE9LOwogfQogCiBzdGF0dXNfdCBTdGFnZWZyaWdodFJlY29yZGVyOjpzZXRPdXRwdXRGb3JtYXQob3V0cHV0X2Zvcm1hdCBvZikgewotICAgIG1PdXRwdXRGb3JtYXQgPSBvZjsKKyAgICBMT0dWKCJzZXRPdXRwdXRGb3JtYXQ6ICVkIiwgb2YpOworICAgIGlmIChvZiA8IE9VVFBVVF9GT1JNQVRfREVGQVVMVCB8fAorICAgICAgICBvZiA+PSBPVVRQVVRfRk9STUFUX0xJU1RfRU5EKSB7CisgICAgICAgIExPR0UoIkludmFsaWQgb3V0cHV0IGZvcm1hdDogJWQiLCBvZik7CisgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisgICAgfQorCisgICAgaWYgKG9mID09IE9VVFBVVF9GT1JNQVRfREVGQVVMVCkgeworICAgICAgICBtT3V0cHV0Rm9ybWF0ID0gT1VUUFVUX0ZPUk1BVF9USFJFRV9HUFA7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbU91dHB1dEZvcm1hdCA9IG9mOworICAgIH0KIAogICAgIHJldHVybiBPSzsKIH0KIAogc3RhdHVzX3QgU3RhZ2VmcmlnaHRSZWNvcmRlcjo6c2V0QXVkaW9FbmNvZGVyKGF1ZGlvX2VuY29kZXIgYWUpIHsKLSAgICBtQXVkaW9FbmNvZGVyID0gYWU7CisgICAgTE9HVigic2V0QXVkaW9FbmNvZGVyOiAlZCIsIGFlKTsKKyAgICBpZiAoYWUgPCBBVURJT19FTkNPREVSX0RFRkFVTFQgfHwKKyAgICAgICAgYWUgPj0gQVVESU9fRU5DT0RFUl9MSVNUX0VORCkgeworICAgICAgICBMT0dFKCJJbnZhbGlkIGF1ZGlvIGVuY29kZXI6ICVkIiwgYWUpOworICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOworICAgIH0KKworICAgIGlmIChhZSA9PSBBVURJT19FTkNPREVSX0RFRkFVTFQpIHsKKyAgICAgICAgbUF1ZGlvRW5jb2RlciA9IEFVRElPX0VOQ09ERVJfQU1SX05COworICAgIH0gZWxzZSB7CisgICAgICAgIG1BdWRpb0VuY29kZXIgPSBhZTsKKyAgICB9CiAKICAgICByZXR1cm4gT0s7CiB9CiAKIHN0YXR1c190IFN0YWdlZnJpZ2h0UmVjb3JkZXI6OnNldFZpZGVvRW5jb2Rlcih2aWRlb19lbmNvZGVyIHZlKSB7Ci0gICAgbVZpZGVvRW5jb2RlciA9IHZlOworICAgIExPR1YoInNldFZpZGVvRW5jb2RlcjogJWQiLCB2ZSk7CisgICAgaWYgKHZlIDwgVklERU9fRU5DT0RFUl9ERUZBVUxUIHx8CisgICAgICAgIHZlID49IFZJREVPX0VOQ09ERVJfTElTVF9FTkQpIHsKKyAgICAgICAgTE9HRSgiSW52YWxpZCB2aWRlbyBlbmNvZGVyOiAlZCIsIHZlKTsKKyAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKyAgICB9CisKKyAgICBpZiAodmUgPT0gVklERU9fRU5DT0RFUl9ERUZBVUxUKSB7CisgICAgICAgIG1WaWRlb0VuY29kZXIgPSBWSURFT19FTkNPREVSX0gyNjM7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbVZpZGVvRW5jb2RlciA9IHZlOworICAgIH0KIAogICAgIHJldHVybiBPSzsKIH0KIAogc3RhdHVzX3QgU3RhZ2VmcmlnaHRSZWNvcmRlcjo6c2V0VmlkZW9TaXplKGludCB3aWR0aCwgaW50IGhlaWdodCkgeworICAgIExPR1YoInNldFZpZGVvU2l6ZTogJWR4JWQiLCB3aWR0aCwgaGVpZ2h0KTsKKyAgICBpZiAod2lkdGggPD0gMCB8fCBoZWlnaHQgPD0gMCkgeworICAgICAgICBMT0dFKCJJbnZhbGlkIHZpZGVvIHNpemU6ICVkeCVkIiwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisgICAgfQorCisgICAgLy8gQWRkaXRpb25hbCBjaGVjayBvbiB0aGUgZGltZW5zaW9uIHdpbGwgYmUgcGVyZm9ybWVkIGxhdGVyCiAgICAgbVZpZGVvV2lkdGggPSB3aWR0aDsKICAgICBtVmlkZW9IZWlnaHQgPSBoZWlnaHQ7CiAKQEAgLTkwLDM1ICsxNjUsNzAgQEAKIH0KIAogc3RhdHVzX3QgU3RhZ2VmcmlnaHRSZWNvcmRlcjo6c2V0VmlkZW9GcmFtZVJhdGUoaW50IGZyYW1lc19wZXJfc2Vjb25kKSB7CisgICAgTE9HVigic2V0VmlkZW9GcmFtZVJhdGU6ICVkIiwgZnJhbWVzX3Blcl9zZWNvbmQpOworICAgIGlmIChmcmFtZXNfcGVyX3NlY29uZCA8PSAwIHx8IGZyYW1lc19wZXJfc2Vjb25kID4gMzApIHsKKyAgICAgICAgTE9HRSgiSW52YWxpZCB2aWRlbyBmcmFtZSByYXRlOiAlZCIsIGZyYW1lc19wZXJfc2Vjb25kKTsKKyAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKyAgICB9CisKKyAgICAvLyBBZGRpdGlvbmFsIGNoZWNrIG9uIHRoZSBmcmFtZSByYXRlIHdpbGwgYmUgcGVyZm9ybWVkIGxhdGVyCiAgICAgbUZyYW1lUmF0ZSA9IGZyYW1lc19wZXJfc2Vjb25kOwogCiAgICAgcmV0dXJuIE9LOwogfQogCiBzdGF0dXNfdCBTdGFnZWZyaWdodFJlY29yZGVyOjpzZXRDYW1lcmEoY29uc3Qgc3A8SUNhbWVyYT4gJmNhbWVyYSkgewotICAgIG1DYW1lcmEgPSBjYW1lcmE7CisgICAgTE9HVigic2V0Q2FtZXJhIik7CisgICAgaWYgKGNhbWVyYSA9PSAwKSB7CisgICAgICAgIExPR0UoImNhbWVyYSBpcyBOVUxMIik7CisgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisgICAgfQorCisgICAgaW50NjRfdCB0b2tlbiA9IElQQ1RocmVhZFN0YXRlOjpzZWxmKCktPmNsZWFyQ2FsbGluZ0lkZW50aXR5KCk7CisgICAgbUZsYWdzICY9IH5GTEFHU19IT1RfQ0FNRVJBOworICAgIG1DYW1lcmEgPSBDYW1lcmE6OmNyZWF0ZShjYW1lcmEpOworICAgIGlmIChtQ2FtZXJhID09IDApIHsKKyAgICAgICAgTE9HRSgiVW5hYmxlIHRvIGNvbm5lY3QgdG8gY2FtZXJhIik7CisgICAgICAgIElQQ1RocmVhZFN0YXRlOjpzZWxmKCktPnJlc3RvcmVDYWxsaW5nSWRlbnRpdHkodG9rZW4pOworICAgICAgICByZXR1cm4gLUVCVVNZOworICAgIH0KKworICAgIExPR1YoIkNvbm5lY3RlZCB0byBjYW1lcmEiKTsKKyAgICBpZiAobUNhbWVyYS0+cHJldmlld0VuYWJsZWQoKSkgeworICAgICAgICBMT0dWKCJjYW1lcmEgaXMgaG90Iik7CisgICAgICAgIG1GbGFncyB8PSBGTEFHU19IT1RfQ0FNRVJBOworICAgIH0KKyAgICBJUENUaHJlYWRTdGF0ZTo6c2VsZigpLT5yZXN0b3JlQ2FsbGluZ0lkZW50aXR5KHRva2VuKTsKIAogICAgIHJldHVybiBPSzsKIH0KIAogc3RhdHVzX3QgU3RhZ2VmcmlnaHRSZWNvcmRlcjo6c2V0UHJldmlld1N1cmZhY2UoY29uc3Qgc3A8SVN1cmZhY2U+ICZzdXJmYWNlKSB7CisgICAgTE9HVigic2V0UHJldmlld1N1cmZhY2U6ICVwIiwgc3VyZmFjZS5nZXQoKSk7CiAgICAgbVByZXZpZXdTdXJmYWNlID0gc3VyZmFjZTsKIAogICAgIHJldHVybiBPSzsKIH0KIAogc3RhdHVzX3QgU3RhZ2VmcmlnaHRSZWNvcmRlcjo6c2V0T3V0cHV0RmlsZShjb25zdCBjaGFyICpwYXRoKSB7CisgICAgTE9HRSgic2V0T3V0cHV0RmlsZShjb25zdCBjaGFyKikgbXVzdCBub3QgYmUgY2FsbGVkIik7CiAgICAgLy8gV2UgZG9uJ3QgYWN0dWFsbHkgc3VwcG9ydCB0aGlzIGF0IGFsbCwgYXMgdGhlIG1lZGlhX3NlcnZlciBwcm9jZXNzCiAgICAgLy8gbm8gbG9uZ2VyIGhhcyBwZXJtaXNzaW9ucyB0byBjcmVhdGUgZmlsZXMuCiAKLSAgICByZXR1cm4gVU5LTk9XTl9FUlJPUjsKKyAgICByZXR1cm4gLUVQRVJNOwogfQogCiBzdGF0dXNfdCBTdGFnZWZyaWdodFJlY29yZGVyOjpzZXRPdXRwdXRGaWxlKGludCBmZCwgaW50NjRfdCBvZmZzZXQsIGludDY0X3QgbGVuZ3RoKSB7CisgICAgTE9HVigic2V0T3V0cHV0RmlsZTogJWQsICVsbGQsICVsbGQiLCBmZCwgb2Zmc2V0LCBsZW5ndGgpOwogICAgIC8vIFRoZXNlIGRvbid0IG1ha2UgYW55IHNlbnNlLCBkbyB0aGV5PwogICAgIENIRUNLX0VRKG9mZnNldCwgMCk7CiAgICAgQ0hFQ0tfRVEobGVuZ3RoLCAwKTsKIAorICAgIGlmIChmZCA8IDApIHsKKyAgICAgICAgTE9HRSgiSW52YWxpZCBmaWxlIGRlc2NyaXB0b3I6ICVkIiwgZmQpOworICAgICAgICByZXR1cm4gLUVCQURGOworICAgIH0KKwogICAgIGlmIChtT3V0cHV0RmQgPj0gMCkgewogICAgICAgICA6OmNsb3NlKG1PdXRwdXRGZCk7CiAgICAgfQpAQCAtMTI3LDEzICsyMzcsMzI4IEBACiAgICAgcmV0dXJuIE9LOwogfQogCi1zdGF0dXNfdCBTdGFnZWZyaWdodFJlY29yZGVyOjpzZXRQYXJhbWV0ZXJzKGNvbnN0IFN0cmluZzggJnBhcmFtcykgewotICAgIG1QYXJhbXMgPSBwYXJhbXM7CisvLyBBdHRlbXB0IHRvIHBhcnNlIGFuIGludDY0IGxpdGVyYWwgb3B0aW9uYWxseSBzdXJyb3VuZGVkIGJ5IHdoaXRlc3BhY2UsCisvLyByZXR1cm5zIHRydWUgb24gc3VjY2VzcywgZmFsc2Ugb3RoZXJ3aXNlLgorc3RhdGljIGJvb2wgc2FmZV9zdHJ0b2k2NChjb25zdCBjaGFyICpzLCBpbnQ2NF90ICp2YWwpIHsKKyAgICBjaGFyICplbmQ7CisgICAgKnZhbCA9IHN0cnRvbGwocywgJmVuZCwgMTApOwogCisgICAgaWYgKGVuZCA9PSBzIHx8IGVycm5vID09IEVSQU5HRSkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gU2tpcCB0cmFpbGluZyB3aGl0ZXNwYWNlCisgICAgd2hpbGUgKGlzc3BhY2UoKmVuZCkpIHsKKyAgICAgICAgKytlbmQ7CisgICAgfQorCisgICAgLy8gRm9yIGEgc3VjY2Vzc2Z1bCByZXR1cm4sIHRoZSBzdHJpbmcgbXVzdCBjb250YWluIG5vdGhpbmcgYnV0IGEgdmFsaWQKKyAgICAvLyBpbnQ2NCBsaXRlcmFsIG9wdGlvbmFsbHkgc3Vycm91bmRlZCBieSB3aGl0ZXNwYWNlLgorCisgICAgcmV0dXJuICplbmQgPT0gJ1wwJzsKK30KKworLy8gUmV0dXJuIHRydWUgaWYgdGhlIHZhbHVlIGlzIGluIFswLCAweDAwN0ZGRkZGRkZdCitzdGF0aWMgYm9vbCBzYWZlX3N0cnRvaTMyKGNvbnN0IGNoYXIgKnMsIGludDMyX3QgKnZhbCkgeworICAgIGludDY0X3QgdGVtcDsKKyAgICBpZiAoc2FmZV9zdHJ0b2k2NChzLCAmdGVtcCkpIHsKKyAgICAgICAgaWYgKHRlbXAgPj0gMCAmJiB0ZW1wIDw9IDB4MDA3RkZGRkZGRikgeworICAgICAgICAgICAgKnZhbCA9IHN0YXRpY19jYXN0PGludDMyX3Q+KHRlbXApOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCisvLyBUcmltIGJvdGggbGVhZGluZyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZSBmcm9tIHRoZSBnaXZlbiBzdHJpbmcuCitzdGF0aWMgdm9pZCBUcmltU3RyaW5nKFN0cmluZzggKnMpIHsKKyAgICBzaXplX3QgbnVtX2J5dGVzID0gcy0+Ynl0ZXMoKTsKKyAgICBjb25zdCBjaGFyICpkYXRhID0gcy0+c3RyaW5nKCk7CisKKyAgICBzaXplX3QgbGVhZGluZ19zcGFjZSA9IDA7CisgICAgd2hpbGUgKGxlYWRpbmdfc3BhY2UgPCBudW1fYnl0ZXMgJiYgaXNzcGFjZShkYXRhW2xlYWRpbmdfc3BhY2VdKSkgeworICAgICAgICArK2xlYWRpbmdfc3BhY2U7CisgICAgfQorCisgICAgc2l6ZV90IGkgPSBudW1fYnl0ZXM7CisgICAgd2hpbGUgKGkgPiBsZWFkaW5nX3NwYWNlICYmIGlzc3BhY2UoZGF0YVtpIC0gMV0pKSB7CisgICAgICAgIC0taTsKKyAgICB9CisKKyAgICBzLT5zZXRUbyhTdHJpbmc4KCZkYXRhW2xlYWRpbmdfc3BhY2VdLCBpIC0gbGVhZGluZ19zcGFjZSkpOworfQorCitzdGF0dXNfdCBTdGFnZWZyaWdodFJlY29yZGVyOjpzZXRQYXJhbUF1ZGlvU2FtcGxpbmdSYXRlKGludDMyX3Qgc2FtcGxlUmF0ZSkgeworICAgIExPR1YoInNldFBhcmFtQXVkaW9TYW1wbGluZ1JhdGU6ICVkIiwgc2FtcGxlUmF0ZSk7CisgICAgaWYgKHNhbXBsZVJhdGUgPD0gMCkgeworICAgICAgICBMT0dFKCJJbnZhbGlkIGF1ZGlvIHNhbXBsaW5nIHJhdGU6ICVkIiwgc2FtcGxlUmF0ZSk7CisgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisgICAgfQorCisgICAgLy8gQWRkaXRpb25hbCBjaGVjayBvbiB0aGUgc2FtcGxlIHJhdGUgd2lsbCBiZSBwZXJmb3JtZWQgbGF0ZXIuCisgICAgbVNhbXBsZVJhdGUgPSBzYW1wbGVSYXRlOwogICAgIHJldHVybiBPSzsKIH0KIAotc3RhdHVzX3QgU3RhZ2VmcmlnaHRSZWNvcmRlcjo6c2V0TGlzdGVuZXIoY29uc3Qgc3A8SU1lZGlhUGxheWVyQ2xpZW50PiAmbGlzdGVuZXIpIHsKK3N0YXR1c190IFN0YWdlZnJpZ2h0UmVjb3JkZXI6OnNldFBhcmFtQXVkaW9OdW1iZXJPZkNoYW5uZWxzKGludDMyX3QgY2hhbm5lbHMpIHsKKyAgICBMT0dWKCJzZXRQYXJhbUF1ZGlvTnVtYmVyT2ZDaGFubmVsczogJWQiLCBjaGFubmVscyk7CisgICAgaWYgKGNoYW5uZWxzIDw9IDAgfHwgY2hhbm5lbHMgPj0gMykgeworICAgICAgICBMT0dFKCJJbnZhbGlkIG51bWJlciBvZiBhdWRpbyBjaGFubmVsczogJWQiLCBjaGFubmVscyk7CisgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisgICAgfQorCisgICAgLy8gQWRkaXRpb25hbCBjaGVjayBvbiB0aGUgbnVtYmVyIG9mIGNoYW5uZWxzIHdpbGwgYmUgcGVyZm9ybWVkIGxhdGVyLgorICAgIG1BdWRpb0NoYW5uZWxzID0gY2hhbm5lbHM7CisgICAgcmV0dXJuIE9LOworfQorCitzdGF0dXNfdCBTdGFnZWZyaWdodFJlY29yZGVyOjpzZXRQYXJhbUF1ZGlvRW5jb2RpbmdCaXRSYXRlKGludDMyX3QgYml0UmF0ZSkgeworICAgIExPR1YoInNldFBhcmFtQXVkaW9FbmNvZGluZ0JpdFJhdGU6ICVkIiwgYml0UmF0ZSk7CisgICAgaWYgKGJpdFJhdGUgPD0gMCkgeworICAgICAgICBMT0dFKCJJbnZhbGlkIGF1ZGlvIGVuY29kaW5nIGJpdCByYXRlOiAlZCIsIGJpdFJhdGUpOworICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOworICAgIH0KKworICAgIC8vIFRoZSB0YXJnZXQgYml0IHJhdGUgbWF5IG5vdCBiZSBleGFjdGx5IHRoZSBzYW1lIGFzIHRoZSByZXF1ZXN0ZWQuCisgICAgLy8gSXQgZGVwZW5kcyBvbiBtYW55IGZhY3RvcnMsIHN1Y2ggYXMgcmF0ZSBjb250cm9sLCBhbmQgdGhlIGJpdCByYXRlCisgICAgLy8gcmFuZ2UgdGhhdCBhIHNwZWNpZmljIGVuY29kZXIgc3VwcG9ydHMuIFRoZSBtaXNtYXRjaCBiZXR3ZWVuIHRoZQorICAgIC8vIHRoZSB0YXJnZXQgYW5kIHJlcXVlc3RlZCBiaXQgcmF0ZSB3aWxsIE5PVCBiZSB0cmVhdGVkIGFzIGFuIGVycm9yLgorICAgIG1BdWRpb0JpdFJhdGUgPSBiaXRSYXRlOworICAgIHJldHVybiBPSzsKK30KKworc3RhdHVzX3QgU3RhZ2VmcmlnaHRSZWNvcmRlcjo6c2V0UGFyYW1WaWRlb0VuY29kaW5nQml0UmF0ZShpbnQzMl90IGJpdFJhdGUpIHsKKyAgICBMT0dWKCJzZXRQYXJhbVZpZGVvRW5jb2RpbmdCaXRSYXRlOiAlZCIsIGJpdFJhdGUpOworICAgIGlmIChiaXRSYXRlIDw9IDApIHsKKyAgICAgICAgTE9HRSgiSW52YWxpZCB2aWRlbyBlbmNvZGluZyBiaXQgcmF0ZTogJWQiLCBiaXRSYXRlKTsKKyAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKyAgICB9CisKKyAgICAvLyBUaGUgdGFyZ2V0IGJpdCByYXRlIG1heSBub3QgYmUgZXhhY3RseSB0aGUgc2FtZSBhcyB0aGUgcmVxdWVzdGVkLgorICAgIC8vIEl0IGRlcGVuZHMgb24gbWFueSBmYWN0b3JzLCBzdWNoIGFzIHJhdGUgY29udHJvbCwgYW5kIHRoZSBiaXQgcmF0ZQorICAgIC8vIHJhbmdlIHRoYXQgYSBzcGVjaWZpYyBlbmNvZGVyIHN1cHBvcnRzLiBUaGUgbWlzbWF0Y2ggYmV0d2VlbiB0aGUKKyAgICAvLyB0aGUgdGFyZ2V0IGFuZCByZXF1ZXN0ZWQgYml0IHJhdGUgd2lsbCBOT1QgYmUgdHJlYXRlZCBhcyBhbiBlcnJvci4KKyAgICBtVmlkZW9CaXRSYXRlID0gYml0UmF0ZTsKKyAgICByZXR1cm4gT0s7Cit9CisKK3N0YXR1c190IFN0YWdlZnJpZ2h0UmVjb3JkZXI6OnNldFBhcmFtTWF4RmlsZUR1cmF0aW9uVXMoaW50NjRfdCB0aW1lVXMpIHsKKyAgICBMT0dWKCJzZXRQYXJhbU1heEZpbGVEdXJhdGlvblVzOiAlbGxkIHVzIiwgdGltZVVzKTsKKyAgICBpZiAodGltZVVzIDw9IDEwMDAwMDBMTCkgeyAgLy8gWFhYOiAxIHNlY29uZAorICAgICAgICBMT0dFKCJNYXggZmlsZSBkdXJhdGlvbiBpcyB0b28gc2hvcnQ6ICVsbGQgdXMiLCB0aW1lVXMpOworICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOworICAgIH0KKyAgICBtTWF4RmlsZUR1cmF0aW9uVXMgPSB0aW1lVXM7CisgICAgcmV0dXJuIE9LOworfQorCitzdGF0dXNfdCBTdGFnZWZyaWdodFJlY29yZGVyOjpzZXRQYXJhbU1heEZpbGVTaXplQnl0ZXMoaW50NjRfdCBieXRlcykgeworICAgIExPR1YoInNldFBhcmFtTWF4RmlsZVNpemVCeXRlczogJWxsZCBieXRlcyIsIGJ5dGVzKTsKKyAgICBpZiAoYnl0ZXMgPD0gMTAyNCkgeyAgLy8gWFhYOiAxIGtCCisgICAgICAgIExPR0UoIk1heCBmaWxlIHNpemUgaXMgdG9vIHNtYWxsOiAlbGxkIGJ5dGVzIiwgYnl0ZXMpOworICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOworICAgIH0KKyAgICBtTWF4RmlsZVNpemVCeXRlcyA9IGJ5dGVzOworICAgIHJldHVybiBPSzsKK30KKworc3RhdHVzX3QgU3RhZ2VmcmlnaHRSZWNvcmRlcjo6c2V0UGFyYW1JbnRlcmxlYXZlRHVyYXRpb24oaW50MzJfdCBkdXJhdGlvblVzKSB7CisgICAgTE9HVigic2V0UGFyYW1JbnRlcmxlYXZlRHVyYXRpb246ICVkIiwgZHVyYXRpb25Vcyk7CisgICAgaWYgKGR1cmF0aW9uVXMgPD0gNTAwMDAwKSB7ICAgICAgICAgICAvLyAgNTAwIG1zCisgICAgICAgIC8vIElmIGludGVybGVhdmUgZHVyYXRpb24gaXMgdG9vIHNtYWxsLCBpdCBpcyB2ZXJ5IGluZWZmaWNpZW50IHRvIGRvCisgICAgICAgIC8vIGludGVybGVhdmluZyBzaW5jZSB0aGUgbWV0YWRhdGEgb3ZlcmhlYWQgd2lsbCBjb3VudCBmb3IgYSBzaWduaWZpY2FudAorICAgICAgICAvLyBwb3J0aW9uIG9mIHRoZSBzYXZlZCBjb250ZW50cworICAgICAgICBMT0dFKCJBdWRpby92aWRlbyBpbnRlcmxlYXZlIGR1cmF0aW9uIGlzIHRvbyBzbWFsbDogJWQgdXMiLCBkdXJhdGlvblVzKTsKKyAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKyAgICB9IGVsc2UgaWYgKGR1cmF0aW9uVXMgPj0gMTAwMDAwMDApIHsgIC8vIDEwIHNlY29uZHMKKyAgICAgICAgLy8gSWYgaW50ZXJsZWF2aW5nIGR1cmF0aW9uIGlzIHRvbyBsYXJnZSwgaXQgY2FuIGNhdXNlIHRoZSByZWNvcmRpbmcKKyAgICAgICAgLy8gc2Vzc2lvbiB0byB1c2UgdG9vIG11Y2ggbWVtb3J5IHNpbmNlIHdlIGhhdmUgdG8gc2F2ZSB0aGUgb3V0cHV0CisgICAgICAgIC8vIGRhdGEgYmVmb3JlIHdlIHdyaXRlIHRoZW0gb3V0CisgICAgICAgIExPR0UoIkF1ZGlvL3ZpZGVvIGludGVybGVhdmUgZHVyYXRpb24gaXMgdG9vIGxhcmdlOiAlZCB1cyIsIGR1cmF0aW9uVXMpOworICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOworICAgIH0KKyAgICBtSW50ZXJsZWF2ZUR1cmF0aW9uVXMgPSBkdXJhdGlvblVzOworICAgIHJldHVybiBPSzsKK30KKworLy8gSWYgaW50ZXJ2YWwgPCAgMCwgb25seSB0aGUgZmlyc3QgZnJhbWUgaXMgSSBmcmFtZSwgYW5kIHJlc3QgYXJlIGFsbCBQIGZyYW1lcworLy8gSWYgaW50ZXJ2YWwgPT0gMCwgYWxsIGZyYW1lcyBhcmUgZW5jb2RlZCBhcyBJIGZyYW1lcy4gTm8gUCBmcmFtZXMKKy8vIElmIGludGVydmFsID4gIDAsIGl0IGlzIHRoZSB0aW1lIHNwYWNpbmcgKHNlY29uZHMpIGJldHdlZW4gMiBuZWlnaGJvcmluZyBJIGZyYW1lcworc3RhdHVzX3QgU3RhZ2VmcmlnaHRSZWNvcmRlcjo6c2V0UGFyYW1WaWRlb0lGcmFtZXNJbnRlcnZhbChpbnQzMl90IGludGVydmFsKSB7CisgICAgTE9HVigic2V0UGFyYW1WaWRlb0lGcmFtZXNJbnRlcnZhbDogJWQgc2Vjb25kcyIsIGludGVydmFsKTsKKyAgICBtSUZyYW1lc0ludGVydmFsID0gaW50ZXJ2YWw7CisgICAgcmV0dXJuIE9LOworfQorCitzdGF0dXNfdCBTdGFnZWZyaWdodFJlY29yZGVyOjpzZXRQYXJhbTY0Qml0RmlsZU9mZnNldChib29sIHVzZTY0Qml0KSB7CisgICAgTE9HVigic2V0UGFyYW02NEJpdEZpbGVPZmZzZXQ6ICVzIiwKKyAgICAgICAgdXNlNjRCaXQ/ICJ1c2UgNjQgYml0IGZpbGUgb2Zmc2V0IjogInVzZSAzMiBiaXQgZmlsZSBvZmZzZXQiKTsKKyAgICBtVXNlNjRCaXRGaWxlT2Zmc2V0ID0gdXNlNjRCaXQ7CisgICAgcmV0dXJuIE9LOworfQorCitzdGF0dXNfdCBTdGFnZWZyaWdodFJlY29yZGVyOjpzZXRQYXJhbVZpZGVvQ2FtZXJhSWQoaW50MzJfdCBjYW1lcmFJZCkgeworICAgIExPR1YoInNldFBhcmFtVmlkZW9DYW1lcmFJZDogJWQiLCBjYW1lcmFJZCk7CisgICAgaWYgKGNhbWVyYUlkIDwgMCkgeworICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOworICAgIH0KKyAgICBtQ2FtZXJhSWQgPSBjYW1lcmFJZDsKKyAgICByZXR1cm4gT0s7Cit9CisKK3N0YXR1c190IFN0YWdlZnJpZ2h0UmVjb3JkZXI6OnNldFBhcmFtVHJhY2tGcmFtZVN0YXR1cyhpbnQzMl90IG5GcmFtZXMpIHsKKyAgICBMT0dWKCJzZXRQYXJhbVRyYWNrRnJhbWVTdGF0dXM6ICVkIiwgbkZyYW1lcyk7CisgICAgaWYgKG5GcmFtZXMgPD0gMCkgeworICAgICAgICBMT0dFKCJJbnZhbGlkIG51bWJlciBvZiBmcmFtZXMgdG8gdHJhY2s6ICVkIiwgbkZyYW1lcyk7CisgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisgICAgfQorICAgIG1UcmFja0V2ZXJ5TnVtYmVyT2ZGcmFtZXMgPSBuRnJhbWVzOworICAgIHJldHVybiBPSzsKK30KKworc3RhdHVzX3QgU3RhZ2VmcmlnaHRSZWNvcmRlcjo6c2V0UGFyYW1UcmFja1RpbWVTdGF0dXMoaW50NjRfdCB0aW1lRHVyYXRpb25VcykgeworICAgIExPR1YoInNldFBhcmFtVHJhY2tUaW1lU3RhdHVzOiAlbGxkIiwgdGltZUR1cmF0aW9uVXMpOworICAgIGlmICh0aW1lRHVyYXRpb25VcyA8IDIwMDAwKSB7ICAvLyBJbmZlYXNpYmxlIGlmIHNob3J0ZXIgdGhhbiAyMCBtcz8KKyAgICAgICAgTE9HRSgiVHJhY2tpbmcgdGltZSBkdXJhdGlvbiB0b28gc2hvcnQ6ICVsbGQgdXMiLCB0aW1lRHVyYXRpb25Vcyk7CisgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisgICAgfQorICAgIG1UcmFja0V2ZXJ5VGltZUR1cmF0aW9uVXMgPSB0aW1lRHVyYXRpb25VczsKKyAgICByZXR1cm4gT0s7Cit9CisKK3N0YXR1c190IFN0YWdlZnJpZ2h0UmVjb3JkZXI6OnNldFBhcmFtVmlkZW9FbmNvZGVyUHJvZmlsZShpbnQzMl90IHByb2ZpbGUpIHsKKyAgICBMT0dWKCJzZXRQYXJhbVZpZGVvRW5jb2RlclByb2ZpbGU6ICVkIiwgcHJvZmlsZSk7CisKKyAgICAvLyBBZGRpdGlvbmFsIGNoZWNrIHdpbGwgYmUgZG9uZSBsYXRlciB3aGVuIHdlIGxvYWQgdGhlIGVuY29kZXIuCisgICAgLy8gRm9yIG5vdywgd2UgYXJlIGFjY2VwdGluZyB2YWx1ZXMgZGVmaW5lZCBpbiBPcGVuTUFYIElMLgorICAgIG1WaWRlb0VuY29kZXJQcm9maWxlID0gcHJvZmlsZTsKKyAgICByZXR1cm4gT0s7Cit9CisKK3N0YXR1c190IFN0YWdlZnJpZ2h0UmVjb3JkZXI6OnNldFBhcmFtVmlkZW9FbmNvZGVyTGV2ZWwoaW50MzJfdCBsZXZlbCkgeworICAgIExPR1YoInNldFBhcmFtVmlkZW9FbmNvZGVyTGV2ZWw6ICVkIiwgbGV2ZWwpOworCisgICAgLy8gQWRkaXRpb25hbCBjaGVjayB3aWxsIGJlIGRvbmUgbGF0ZXIgd2hlbiB3ZSBsb2FkIHRoZSBlbmNvZGVyLgorICAgIC8vIEZvciBub3csIHdlIGFyZSBhY2NlcHRpbmcgdmFsdWVzIGRlZmluZWQgaW4gT3Blbk1BWCBJTC4KKyAgICBtVmlkZW9FbmNvZGVyTGV2ZWwgPSBsZXZlbDsKKyAgICByZXR1cm4gT0s7Cit9CisKK3N0YXR1c190IFN0YWdlZnJpZ2h0UmVjb3JkZXI6OnNldFBhcmFtZXRlcigKKyAgICAgICAgY29uc3QgU3RyaW5nOCAma2V5LCBjb25zdCBTdHJpbmc4ICZ2YWx1ZSkgeworICAgIExPR1YoInNldFBhcmFtZXRlcjoga2V5ICglcykgPT4gdmFsdWUgKCVzKSIsIGtleS5zdHJpbmcoKSwgdmFsdWUuc3RyaW5nKCkpOworICAgIGlmIChrZXkgPT0gIm1heC1kdXJhdGlvbiIpIHsKKyAgICAgICAgaW50NjRfdCBtYXhfZHVyYXRpb25fbXM7CisgICAgICAgIGlmIChzYWZlX3N0cnRvaTY0KHZhbHVlLnN0cmluZygpLCAmbWF4X2R1cmF0aW9uX21zKSkgeworICAgICAgICAgICAgcmV0dXJuIHNldFBhcmFtTWF4RmlsZUR1cmF0aW9uVXMoMTAwMExMICogbWF4X2R1cmF0aW9uX21zKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoa2V5ID09ICJtYXgtZmlsZXNpemUiKSB7CisgICAgICAgIGludDY0X3QgbWF4X2ZpbGVzaXplX2J5dGVzOworICAgICAgICBpZiAoc2FmZV9zdHJ0b2k2NCh2YWx1ZS5zdHJpbmcoKSwgJm1heF9maWxlc2l6ZV9ieXRlcykpIHsKKyAgICAgICAgICAgIHJldHVybiBzZXRQYXJhbU1heEZpbGVTaXplQnl0ZXMobWF4X2ZpbGVzaXplX2J5dGVzKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoa2V5ID09ICJpbnRlcmxlYXZlLWR1cmF0aW9uLXVzIikgeworICAgICAgICBpbnQzMl90IGR1cmF0aW9uVXM7CisgICAgICAgIGlmIChzYWZlX3N0cnRvaTMyKHZhbHVlLnN0cmluZygpLCAmZHVyYXRpb25VcykpIHsKKyAgICAgICAgICAgIHJldHVybiBzZXRQYXJhbUludGVybGVhdmVEdXJhdGlvbihkdXJhdGlvblVzKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoa2V5ID09ICJwYXJhbS11c2UtNjRiaXQtb2Zmc2V0IikgeworICAgICAgICBpbnQzMl90IHVzZTY0Qml0T2Zmc2V0OworICAgICAgICBpZiAoc2FmZV9zdHJ0b2kzMih2YWx1ZS5zdHJpbmcoKSwgJnVzZTY0Qml0T2Zmc2V0KSkgeworICAgICAgICAgICAgcmV0dXJuIHNldFBhcmFtNjRCaXRGaWxlT2Zmc2V0KHVzZTY0Qml0T2Zmc2V0ICE9IDApOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChrZXkgPT0gInBhcmFtLXRyYWNrLWZyYW1lLXN0YXR1cyIpIHsKKyAgICAgICAgaW50MzJfdCBuRnJhbWVzOworICAgICAgICBpZiAoc2FmZV9zdHJ0b2kzMih2YWx1ZS5zdHJpbmcoKSwgJm5GcmFtZXMpKSB7CisgICAgICAgICAgICByZXR1cm4gc2V0UGFyYW1UcmFja0ZyYW1lU3RhdHVzKG5GcmFtZXMpOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChrZXkgPT0gInBhcmFtLXRyYWNrLXRpbWUtc3RhdHVzIikgeworICAgICAgICBpbnQ2NF90IHRpbWVEdXJhdGlvblVzOworICAgICAgICBpZiAoc2FmZV9zdHJ0b2k2NCh2YWx1ZS5zdHJpbmcoKSwgJnRpbWVEdXJhdGlvblVzKSkgeworICAgICAgICAgICAgcmV0dXJuIHNldFBhcmFtVHJhY2tUaW1lU3RhdHVzKHRpbWVEdXJhdGlvblVzKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoa2V5ID09ICJhdWRpby1wYXJhbS1zYW1wbGluZy1yYXRlIikgeworICAgICAgICBpbnQzMl90IHNhbXBsaW5nX3JhdGU7CisgICAgICAgIGlmIChzYWZlX3N0cnRvaTMyKHZhbHVlLnN0cmluZygpLCAmc2FtcGxpbmdfcmF0ZSkpIHsKKyAgICAgICAgICAgIHJldHVybiBzZXRQYXJhbUF1ZGlvU2FtcGxpbmdSYXRlKHNhbXBsaW5nX3JhdGUpOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChrZXkgPT0gImF1ZGlvLXBhcmFtLW51bWJlci1vZi1jaGFubmVscyIpIHsKKyAgICAgICAgaW50MzJfdCBudW1iZXJfb2ZfY2hhbm5lbHM7CisgICAgICAgIGlmIChzYWZlX3N0cnRvaTMyKHZhbHVlLnN0cmluZygpLCAmbnVtYmVyX29mX2NoYW5uZWxzKSkgeworICAgICAgICAgICAgcmV0dXJuIHNldFBhcmFtQXVkaW9OdW1iZXJPZkNoYW5uZWxzKG51bWJlcl9vZl9jaGFubmVscyk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGtleSA9PSAiYXVkaW8tcGFyYW0tZW5jb2RpbmctYml0cmF0ZSIpIHsKKyAgICAgICAgaW50MzJfdCBhdWRpb19iaXRyYXRlOworICAgICAgICBpZiAoc2FmZV9zdHJ0b2kzMih2YWx1ZS5zdHJpbmcoKSwgJmF1ZGlvX2JpdHJhdGUpKSB7CisgICAgICAgICAgICByZXR1cm4gc2V0UGFyYW1BdWRpb0VuY29kaW5nQml0UmF0ZShhdWRpb19iaXRyYXRlKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoa2V5ID09ICJ2aWRlby1wYXJhbS1lbmNvZGluZy1iaXRyYXRlIikgeworICAgICAgICBpbnQzMl90IHZpZGVvX2JpdHJhdGU7CisgICAgICAgIGlmIChzYWZlX3N0cnRvaTMyKHZhbHVlLnN0cmluZygpLCAmdmlkZW9fYml0cmF0ZSkpIHsKKyAgICAgICAgICAgIHJldHVybiBzZXRQYXJhbVZpZGVvRW5jb2RpbmdCaXRSYXRlKHZpZGVvX2JpdHJhdGUpOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChrZXkgPT0gInZpZGVvLXBhcmFtLWktZnJhbWVzLWludGVydmFsIikgeworICAgICAgICBpbnQzMl90IGludGVydmFsOworICAgICAgICBpZiAoc2FmZV9zdHJ0b2kzMih2YWx1ZS5zdHJpbmcoKSwgJmludGVydmFsKSkgeworICAgICAgICAgICAgcmV0dXJuIHNldFBhcmFtVmlkZW9JRnJhbWVzSW50ZXJ2YWwoaW50ZXJ2YWwpOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChrZXkgPT0gInZpZGVvLXBhcmFtLWVuY29kZXItcHJvZmlsZSIpIHsKKyAgICAgICAgaW50MzJfdCBwcm9maWxlOworICAgICAgICBpZiAoc2FmZV9zdHJ0b2kzMih2YWx1ZS5zdHJpbmcoKSwgJnByb2ZpbGUpKSB7CisgICAgICAgICAgICByZXR1cm4gc2V0UGFyYW1WaWRlb0VuY29kZXJQcm9maWxlKHByb2ZpbGUpOworICAgICAgICB9CisgICAgfSBlbHNlIGlmIChrZXkgPT0gInZpZGVvLXBhcmFtLWVuY29kZXItbGV2ZWwiKSB7CisgICAgICAgIGludDMyX3QgbGV2ZWw7CisgICAgICAgIGlmIChzYWZlX3N0cnRvaTMyKHZhbHVlLnN0cmluZygpLCAmbGV2ZWwpKSB7CisgICAgICAgICAgICByZXR1cm4gc2V0UGFyYW1WaWRlb0VuY29kZXJMZXZlbChsZXZlbCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGtleSA9PSAidmlkZW8tcGFyYW0tY2FtZXJhLWlkIikgeworICAgICAgICBpbnQzMl90IGNhbWVyYUlkOworICAgICAgICBpZiAoc2FmZV9zdHJ0b2kzMih2YWx1ZS5zdHJpbmcoKSwgJmNhbWVyYUlkKSkgeworICAgICAgICAgICAgcmV0dXJuIHNldFBhcmFtVmlkZW9DYW1lcmFJZChjYW1lcmFJZCk7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBMT0dFKCJzZXRQYXJhbWV0ZXI6IGZhaWxlZCB0byBmaW5kIGtleSAlcyIsIGtleS5zdHJpbmcoKSk7CisgICAgfQorICAgIHJldHVybiBCQURfVkFMVUU7Cit9CisKK3N0YXR1c190IFN0YWdlZnJpZ2h0UmVjb3JkZXI6OnNldFBhcmFtZXRlcnMoY29uc3QgU3RyaW5nOCAmcGFyYW1zKSB7CisgICAgTE9HVigic2V0UGFyYW1ldGVyczogJXMiLCBwYXJhbXMuc3RyaW5nKCkpOworICAgIGNvbnN0IGNoYXIgKmNwYXJhbXMgPSBwYXJhbXMuc3RyaW5nKCk7CisgICAgY29uc3QgY2hhciAqa2V5X3N0YXJ0ID0gY3BhcmFtczsKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIGNvbnN0IGNoYXIgKmVxdWFsX3BvcyA9IHN0cmNocihrZXlfc3RhcnQsICc9Jyk7CisgICAgICAgIGlmIChlcXVhbF9wb3MgPT0gTlVMTCkgeworICAgICAgICAgICAgTE9HRSgiUGFyYW1ldGVycyAlcyBtaXNzIGEgdmFsdWUiLCBjcGFyYW1zKTsKKyAgICAgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisgICAgICAgIH0KKyAgICAgICAgU3RyaW5nOCBrZXkoa2V5X3N0YXJ0LCBlcXVhbF9wb3MgLSBrZXlfc3RhcnQpOworICAgICAgICBUcmltU3RyaW5nKCZrZXkpOworICAgICAgICBpZiAoa2V5Lmxlbmd0aCgpID09IDApIHsKKyAgICAgICAgICAgIExPR0UoIlBhcmFtZXRlcnMgJXMgY29udGFpbnMgYW4gZW1wdHkga2V5IiwgY3BhcmFtcyk7CisgICAgICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOworICAgICAgICB9CisgICAgICAgIGNvbnN0IGNoYXIgKnZhbHVlX3N0YXJ0ID0gZXF1YWxfcG9zICsgMTsKKyAgICAgICAgY29uc3QgY2hhciAqc2VtaWNvbG9uX3BvcyA9IHN0cmNocih2YWx1ZV9zdGFydCwgJzsnKTsKKyAgICAgICAgU3RyaW5nOCB2YWx1ZTsKKyAgICAgICAgaWYgKHNlbWljb2xvbl9wb3MgPT0gTlVMTCkgeworICAgICAgICAgICAgdmFsdWUuc2V0VG8odmFsdWVfc3RhcnQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdmFsdWUuc2V0VG8odmFsdWVfc3RhcnQsIHNlbWljb2xvbl9wb3MgLSB2YWx1ZV9zdGFydCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNldFBhcmFtZXRlcihrZXksIHZhbHVlKSAhPSBPSykgeworICAgICAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKyAgICAgICAgfQorICAgICAgICBpZiAoc2VtaWNvbG9uX3BvcyA9PSBOVUxMKSB7CisgICAgICAgICAgICBicmVhazsgIC8vIFJlYWNoZXMgdGhlIGVuZAorICAgICAgICB9CisgICAgICAgIGtleV9zdGFydCA9IHNlbWljb2xvbl9wb3MgKyAxOworICAgIH0KKyAgICByZXR1cm4gT0s7Cit9CisKK3N0YXR1c190IFN0YWdlZnJpZ2h0UmVjb3JkZXI6OnNldExpc3RlbmVyKGNvbnN0IHNwPElNZWRpYVJlY29yZGVyQ2xpZW50PiAmbGlzdGVuZXIpIHsKICAgICBtTGlzdGVuZXIgPSBsaXN0ZW5lcjsKIAogICAgIHJldHVybiBPSzsKQEAgLTE0NCw3ICs1NjksMTAgQEAKIH0KIAogc3RhdHVzX3QgU3RhZ2VmcmlnaHRSZWNvcmRlcjo6c3RhcnQoKSB7CisgICAgQ0hFQ0sobU91dHB1dEZkID49IDApOworCiAgICAgaWYgKG1Xcml0ZXIgIT0gTlVMTCkgeworICAgICAgICBMT0dFKCJGaWxlIHdyaXRlciBpcyBub3QgYXZhaWFsYmxlIik7CiAgICAgICAgIHJldHVybiBVTktOT1dOX0VSUk9SOwogICAgIH0KIApAQCAtMTU4LDQwICs1ODYsNTcgQEAKICAgICAgICAgY2FzZSBPVVRQVVRfRk9STUFUX0FNUl9XQjoKICAgICAgICAgICAgIHJldHVybiBzdGFydEFNUlJlY29yZGluZygpOwogCisgICAgICAgIGNhc2UgT1VUUFVUX0ZPUk1BVF9BQUNfQURJRjoKKyAgICAgICAgY2FzZSBPVVRQVVRfRk9STUFUX0FBQ19BRFRTOgorICAgICAgICAgICAgcmV0dXJuIHN0YXJ0QUFDUmVjb3JkaW5nKCk7CisKICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIExPR0UoIlVuc3VwcG9ydGVkIG91dHB1dCBmaWxlIGZvcm1hdDogJWQiLCBtT3V0cHV0Rm9ybWF0KTsKICAgICAgICAgICAgIHJldHVybiBVTktOT1dOX0VSUk9SOwogICAgIH0KIH0KIAotc3A8TWVkaWFTb3VyY2U+IFN0YWdlZnJpZ2h0UmVjb3JkZXI6OmNyZWF0ZUFNUkF1ZGlvU291cmNlKCkgewotICAgIHVpbnQzMl90IHNhbXBsZVJhdGUgPQotICAgICAgICBtQXVkaW9FbmNvZGVyID09IEFVRElPX0VOQ09ERVJfQU1SX05CID8gODAwMCA6IDE2MDAwOwotCitzcDxNZWRpYVNvdXJjZT4gU3RhZ2VmcmlnaHRSZWNvcmRlcjo6Y3JlYXRlQXVkaW9Tb3VyY2UoKSB7CiAgICAgc3A8QXVkaW9Tb3VyY2U+IGF1ZGlvU291cmNlID0KICAgICAgICAgbmV3IEF1ZGlvU291cmNlKAogICAgICAgICAgICAgICAgIG1BdWRpb1NvdXJjZSwKLSAgICAgICAgICAgICAgICBzYW1wbGVSYXRlLAotICAgICAgICAgICAgICAgIEF1ZGlvU3lzdGVtOjpDSEFOTkVMX0lOX01PTk8pOworICAgICAgICAgICAgICAgIG1TYW1wbGVSYXRlLAorICAgICAgICAgICAgICAgIG1BdWRpb0NoYW5uZWxzKTsKIAogICAgIHN0YXR1c190IGVyciA9IGF1ZGlvU291cmNlLT5pbml0Q2hlY2soKTsKIAogICAgIGlmIChlcnIgIT0gT0spIHsKKyAgICAgICAgTE9HRSgiYXVkaW8gc291cmNlIGlzIG5vdCBpbml0aWFsaXplZCIpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICBzcDxNZXRhRGF0YT4gZW5jTWV0YSA9IG5ldyBNZXRhRGF0YTsKLSAgICBlbmNNZXRhLT5zZXRDU3RyaW5nKAotICAgICAgICAgICAga0tleU1JTUVUeXBlLAotICAgICAgICAgICAgbUF1ZGlvRW5jb2RlciA9PSBBVURJT19FTkNPREVSX0FNUl9OQgotICAgICAgICAgICAgICAgID8gTUVESUFfTUlNRVRZUEVfQVVESU9fQU1SX05CIDogTUVESUFfTUlNRVRZUEVfQVVESU9fQU1SX1dCKTsKKyAgICBjb25zdCBjaGFyICptaW1lOworICAgIHN3aXRjaCAobUF1ZGlvRW5jb2RlcikgeworICAgICAgICBjYXNlIEFVRElPX0VOQ09ERVJfQU1SX05COgorICAgICAgICBjYXNlIEFVRElPX0VOQ09ERVJfREVGQVVMVDoKKyAgICAgICAgICAgIG1pbWUgPSBNRURJQV9NSU1FVFlQRV9BVURJT19BTVJfTkI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBVURJT19FTkNPREVSX0FNUl9XQjoKKyAgICAgICAgICAgIG1pbWUgPSBNRURJQV9NSU1FVFlQRV9BVURJT19BTVJfV0I7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBVURJT19FTkNPREVSX0FBQzoKKyAgICAgICAgICAgIG1pbWUgPSBNRURJQV9NSU1FVFlQRV9BVURJT19BQUM7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIExPR0UoIlVua25vd24gYXVkaW8gZW5jb2RlcjogJWQiLCBtQXVkaW9FbmNvZGVyKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBlbmNNZXRhLT5zZXRDU3RyaW5nKGtLZXlNSU1FVHlwZSwgbWltZSk7CiAKICAgICBpbnQzMl90IG1heElucHV0U2l6ZTsKICAgICBDSEVDSyhhdWRpb1NvdXJjZS0+Z2V0Rm9ybWF0KCktPmZpbmRJbnQzMigKICAgICAgICAgICAgICAgICBrS2V5TWF4SW5wdXRTaXplLCAmbWF4SW5wdXRTaXplKSk7CiAKICAgICBlbmNNZXRhLT5zZXRJbnQzMihrS2V5TWF4SW5wdXRTaXplLCBtYXhJbnB1dFNpemUpOwotICAgIGVuY01ldGEtPnNldEludDMyKGtLZXlDaGFubmVsQ291bnQsIDEpOwotICAgIGVuY01ldGEtPnNldEludDMyKGtLZXlTYW1wbGVSYXRlLCBzYW1wbGVSYXRlKTsKKyAgICBlbmNNZXRhLT5zZXRJbnQzMihrS2V5Q2hhbm5lbENvdW50LCBtQXVkaW9DaGFubmVscyk7CisgICAgZW5jTWV0YS0+c2V0SW50MzIoa0tleVNhbXBsZVJhdGUsIG1TYW1wbGVSYXRlKTsKKyAgICBlbmNNZXRhLT5zZXRJbnQzMihrS2V5Qml0UmF0ZSwgbUF1ZGlvQml0UmF0ZSk7CiAKICAgICBPTVhDbGllbnQgY2xpZW50OwogICAgIENIRUNLX0VRKGNsaWVudC5jb25uZWN0KCksIE9LKTsKQEAgLTE5OSwxNDQgKzY0NCw0NzcgQEAKICAgICBzcDxNZWRpYVNvdXJjZT4gYXVkaW9FbmNvZGVyID0KICAgICAgICAgT01YQ29kZWM6OkNyZWF0ZShjbGllbnQuaW50ZXJmYWNlKCksIGVuY01ldGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ1ZSAvKiBjcmVhdGVFbmNvZGVyICovLCBhdWRpb1NvdXJjZSk7CisgICAgbUF1ZGlvU291cmNlTm9kZSA9IGF1ZGlvU291cmNlOwogCiAgICAgcmV0dXJuIGF1ZGlvRW5jb2RlcjsKIH0KIAorc3RhdHVzX3QgU3RhZ2VmcmlnaHRSZWNvcmRlcjo6c3RhcnRBQUNSZWNvcmRpbmcoKSB7CisgICAgQ0hFQ0sobU91dHB1dEZvcm1hdCA9PSBPVVRQVVRfRk9STUFUX0FBQ19BRElGIHx8CisgICAgICAgICAgbU91dHB1dEZvcm1hdCA9PSBPVVRQVVRfRk9STUFUX0FBQ19BRFRTKTsKKworICAgIENIRUNLKG1BdWRpb0VuY29kZXIgPT0gQVVESU9fRU5DT0RFUl9BQUMpOworICAgIENIRUNLKG1BdWRpb1NvdXJjZSAhPSBBVURJT19TT1VSQ0VfTElTVF9FTkQpOworCisgICAgQ0hFQ0soMCA9PSAiQUFDV3JpdGVyIGlzIG5vdCBpbXBsZW1lbnRlZCB5ZXQiKTsKKworICAgIHJldHVybiBPSzsKK30KKwogc3RhdHVzX3QgU3RhZ2VmcmlnaHRSZWNvcmRlcjo6c3RhcnRBTVJSZWNvcmRpbmcoKSB7Ci0gICAgaWYgKG1BdWRpb1NvdXJjZSA9PSBBVURJT19TT1VSQ0VfTElTVF9FTkQKLSAgICAgICAgfHwgbVZpZGVvU291cmNlICE9IFZJREVPX1NPVVJDRV9MSVNUX0VORCkgewotICAgICAgICByZXR1cm4gVU5LTk9XTl9FUlJPUjsKKyAgICBDSEVDSyhtT3V0cHV0Rm9ybWF0ID09IE9VVFBVVF9GT1JNQVRfQU1SX05CIHx8CisgICAgICAgICAgbU91dHB1dEZvcm1hdCA9PSBPVVRQVVRfRk9STUFUX0FNUl9XQik7CisKKyAgICBpZiAobU91dHB1dEZvcm1hdCA9PSBPVVRQVVRfRk9STUFUX0FNUl9OQikgeworICAgICAgICBpZiAobUF1ZGlvRW5jb2RlciAhPSBBVURJT19FTkNPREVSX0RFRkFVTFQgJiYKKyAgICAgICAgICAgIG1BdWRpb0VuY29kZXIgIT0gQVVESU9fRU5DT0RFUl9BTVJfTkIpIHsKKyAgICAgICAgICAgIExPR0UoIkludmFsaWQgZW5jb2RlciAlZCB1c2VkIGZvciBBTVJOQiByZWNvcmRpbmciLAorICAgICAgICAgICAgICAgICAgICBtQXVkaW9FbmNvZGVyKTsKKyAgICAgICAgICAgIHJldHVybiBCQURfVkFMVUU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1TYW1wbGVSYXRlICE9IDgwMDApIHsKKyAgICAgICAgICAgIExPR0UoIkludmFsaWQgc2FtcGxpbmcgcmF0ZSAlZCB1c2VkIGZvciBBTVJOQiByZWNvcmRpbmciLAorICAgICAgICAgICAgICAgICAgICBtU2FtcGxlUmF0ZSk7CisgICAgICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOworICAgICAgICB9CisgICAgfSBlbHNlIHsgIC8vIG1PdXRwdXRGb3JtYXQgbXVzdCBiZSBPVVRQVVRfRk9STUFUX0FNUl9XQgorICAgICAgICBpZiAobUF1ZGlvRW5jb2RlciAhPSBBVURJT19FTkNPREVSX0FNUl9XQikgeworICAgICAgICAgICAgTE9HRSgiSW52bGFpZCBlbmNvZGVyICVkIHVzZWQgZm9yIEFNUldCIHJlY29yZGluZyIsCisgICAgICAgICAgICAgICAgICAgIG1BdWRpb0VuY29kZXIpOworICAgICAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKyAgICAgICAgfQorICAgICAgICBpZiAobVNhbXBsZVJhdGUgIT0gMTYwMDApIHsKKyAgICAgICAgICAgIExPR0UoIkludmFsaWQgc2FtcGxlIHJhdGUgJWQgdXNlZCBmb3IgQU1SV0IgcmVjb3JkaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgbVNhbXBsZVJhdGUpOworICAgICAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAobUF1ZGlvQ2hhbm5lbHMgIT0gMSkgeworICAgICAgICBMT0dFKCJJbnZhbGlkIG51bWJlciBvZiBhdWRpbyBjaGFubmVscyAlZCB1c2VkIGZvciBhbXIgcmVjb3JkaW5nIiwKKyAgICAgICAgICAgICAgICBtQXVkaW9DaGFubmVscyk7CisgICAgICAgIHJldHVybiBCQURfVkFMVUU7CiAgICAgfQogCi0gICAgaWYgKG1PdXRwdXRGb3JtYXQgPT0gT1VUUFVUX0ZPUk1BVF9BTVJfTkIKLSAgICAgICAgICAgICYmIG1BdWRpb0VuY29kZXIgIT0gQVVESU9fRU5DT0RFUl9ERUZBVUxUCi0gICAgICAgICAgICAmJiBtQXVkaW9FbmNvZGVyICE9IEFVRElPX0VOQ09ERVJfQU1SX05CKSB7Ci0gICAgICAgIHJldHVybiBVTktOT1dOX0VSUk9SOwotICAgIH0gZWxzZSBpZiAobU91dHB1dEZvcm1hdCA9PSBPVVRQVVRfRk9STUFUX0FNUl9XQgotICAgICAgICAgICAgJiYgbUF1ZGlvRW5jb2RlciAhPSBBVURJT19FTkNPREVSX0FNUl9XQikgewotICAgICAgICByZXR1cm4gVU5LTk9XTl9FUlJPUjsKKyAgICBpZiAobUF1ZGlvU291cmNlID49IEFVRElPX1NPVVJDRV9MSVNUX0VORCkgeworICAgICAgICBMT0dFKCJJbnZhbGlkIGF1ZGlvIHNvdXJjZTogJWQiLCBtQXVkaW9Tb3VyY2UpOworICAgICAgICByZXR1cm4gQkFEX1ZBTFVFOwogICAgIH0KIAotICAgIHNwPE1lZGlhU291cmNlPiBhdWRpb0VuY29kZXIgPSBjcmVhdGVBTVJBdWRpb1NvdXJjZSgpOworICAgIHNwPE1lZGlhU291cmNlPiBhdWRpb0VuY29kZXIgPSBjcmVhdGVBdWRpb1NvdXJjZSgpOwogCiAgICAgaWYgKGF1ZGlvRW5jb2RlciA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBVTktOT1dOX0VSUk9SOwogICAgIH0KIAotICAgIENIRUNLKG1PdXRwdXRGZCA+PSAwKTsKICAgICBtV3JpdGVyID0gbmV3IEFNUldyaXRlcihkdXAobU91dHB1dEZkKSk7CiAgICAgbVdyaXRlci0+YWRkU291cmNlKGF1ZGlvRW5jb2Rlcik7CisKKyAgICBpZiAobU1heEZpbGVEdXJhdGlvblVzICE9IDApIHsKKyAgICAgICAgbVdyaXRlci0+c2V0TWF4RmlsZUR1cmF0aW9uKG1NYXhGaWxlRHVyYXRpb25Vcyk7CisgICAgfQorICAgIGlmIChtTWF4RmlsZVNpemVCeXRlcyAhPSAwKSB7CisgICAgICAgIG1Xcml0ZXItPnNldE1heEZpbGVTaXplKG1NYXhGaWxlU2l6ZUJ5dGVzKTsKKyAgICB9CisgICAgbVdyaXRlci0+c2V0TGlzdGVuZXIobUxpc3RlbmVyKTsKICAgICBtV3JpdGVyLT5zdGFydCgpOwogCiAgICAgcmV0dXJuIE9LOwogfQogCit2b2lkIFN0YWdlZnJpZ2h0UmVjb3JkZXI6OmNsaXBWaWRlb0ZyYW1lUmF0ZSgpIHsKKyAgICBMT0dWKCJjbGlwVmlkZW9GcmFtZVJhdGU6IGVuY29kZXIgJWQiLCBtVmlkZW9FbmNvZGVyKTsKKyAgICBpbnQgbWluRnJhbWVSYXRlID0gbUVuY29kZXJQcm9maWxlcy0+Z2V0VmlkZW9FbmNvZGVyUGFyYW1CeU5hbWUoCisgICAgICAgICAgICAgICAgICAgICAgICAiZW5jLnZpZC5mcHMubWluIiwgbVZpZGVvRW5jb2Rlcik7CisgICAgaW50IG1heEZyYW1lUmF0ZSA9IG1FbmNvZGVyUHJvZmlsZXMtPmdldFZpZGVvRW5jb2RlclBhcmFtQnlOYW1lKAorICAgICAgICAgICAgICAgICAgICAgICAgImVuYy52aWQuZnBzLm1heCIsIG1WaWRlb0VuY29kZXIpOworICAgIGlmIChtRnJhbWVSYXRlIDwgbWluRnJhbWVSYXRlKSB7CisgICAgICAgIExPR1coIkludGVuZGVkIHZpZGVvIGVuY29kaW5nIGZyYW1lIHJhdGUgKCVkIGZwcykgaXMgdG9vIHNtYWxsIgorICAgICAgICAgICAgICIgYW5kIHdpbGwgYmUgc2V0IHRvICglZCBmcHMpIiwgbUZyYW1lUmF0ZSwgbWluRnJhbWVSYXRlKTsKKyAgICAgICAgbUZyYW1lUmF0ZSA9IG1pbkZyYW1lUmF0ZTsKKyAgICB9IGVsc2UgaWYgKG1GcmFtZVJhdGUgPiBtYXhGcmFtZVJhdGUpIHsKKyAgICAgICAgTE9HVygiSW50ZW5kZWQgdmlkZW8gZW5jb2RpbmcgZnJhbWUgcmF0ZSAoJWQgZnBzKSBpcyB0b28gbGFyZ2UiCisgICAgICAgICAgICAgIiBhbmQgd2lsbCBiZSBzZXQgdG8gKCVkIGZwcykiLCBtRnJhbWVSYXRlLCBtYXhGcmFtZVJhdGUpOworICAgICAgICBtRnJhbWVSYXRlID0gbWF4RnJhbWVSYXRlOworICAgIH0KK30KKwordm9pZCBTdGFnZWZyaWdodFJlY29yZGVyOjpjbGlwVmlkZW9CaXRSYXRlKCkgeworICAgIExPR1YoImNsaXBWaWRlb0JpdFJhdGU6IGVuY29kZXIgJWQiLCBtVmlkZW9FbmNvZGVyKTsKKyAgICBpbnQgbWluQml0UmF0ZSA9IG1FbmNvZGVyUHJvZmlsZXMtPmdldFZpZGVvRW5jb2RlclBhcmFtQnlOYW1lKAorICAgICAgICAgICAgICAgICAgICAgICAgImVuYy52aWQuYnBzLm1pbiIsIG1WaWRlb0VuY29kZXIpOworICAgIGludCBtYXhCaXRSYXRlID0gbUVuY29kZXJQcm9maWxlcy0+Z2V0VmlkZW9FbmNvZGVyUGFyYW1CeU5hbWUoCisgICAgICAgICAgICAgICAgICAgICAgICAiZW5jLnZpZC5icHMubWF4IiwgbVZpZGVvRW5jb2Rlcik7CisgICAgaWYgKG1WaWRlb0JpdFJhdGUgPCBtaW5CaXRSYXRlKSB7CisgICAgICAgIExPR1coIkludGVuZGVkIHZpZGVvIGVuY29kaW5nIGJpdCByYXRlICglZCBicHMpIGlzIHRvbyBzbWFsbCIKKyAgICAgICAgICAgICAiIGFuZCB3aWxsIGJlIHNldCB0byAoJWQgYnBzKSIsIG1WaWRlb0JpdFJhdGUsIG1pbkJpdFJhdGUpOworICAgICAgICBtVmlkZW9CaXRSYXRlID0gbWluQml0UmF0ZTsKKyAgICB9IGVsc2UgaWYgKG1WaWRlb0JpdFJhdGUgPiBtYXhCaXRSYXRlKSB7CisgICAgICAgIExPR1coIkludGVuZGVkIHZpZGVvIGVuY29kaW5nIGJpdCByYXRlICglZCBicHMpIGlzIHRvbyBsYXJnZSIKKyAgICAgICAgICAgICAiIGFuZCB3aWxsIGJlIHNldCB0byAoJWQgYnBzKSIsIG1WaWRlb0JpdFJhdGUsIG1heEJpdFJhdGUpOworICAgICAgICBtVmlkZW9CaXRSYXRlID0gbWF4Qml0UmF0ZTsKKyAgICB9Cit9CisKK3ZvaWQgU3RhZ2VmcmlnaHRSZWNvcmRlcjo6Y2xpcFZpZGVvRnJhbWVXaWR0aCgpIHsKKyAgICBMT0dWKCJjbGlwVmlkZW9GcmFtZVdpZHRoOiBlbmNvZGVyICVkIiwgbVZpZGVvRW5jb2Rlcik7CisgICAgaW50IG1pbkZyYW1lV2lkdGggPSBtRW5jb2RlclByb2ZpbGVzLT5nZXRWaWRlb0VuY29kZXJQYXJhbUJ5TmFtZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICJlbmMudmlkLndpZHRoLm1pbiIsIG1WaWRlb0VuY29kZXIpOworICAgIGludCBtYXhGcmFtZVdpZHRoID0gbUVuY29kZXJQcm9maWxlcy0+Z2V0VmlkZW9FbmNvZGVyUGFyYW1CeU5hbWUoCisgICAgICAgICAgICAgICAgICAgICAgICAiZW5jLnZpZC53aWR0aC5tYXgiLCBtVmlkZW9FbmNvZGVyKTsKKyAgICBpZiAobVZpZGVvV2lkdGggPCBtaW5GcmFtZVdpZHRoKSB7CisgICAgICAgIExPR1coIkludGVuZGVkIHZpZGVvIGVuY29kaW5nIGZyYW1lIHdpZHRoICglZCkgaXMgdG9vIHNtYWxsIgorICAgICAgICAgICAgICIgYW5kIHdpbGwgYmUgc2V0IHRvICglZCkiLCBtVmlkZW9XaWR0aCwgbWluRnJhbWVXaWR0aCk7CisgICAgICAgIG1WaWRlb1dpZHRoID0gbWluRnJhbWVXaWR0aDsKKyAgICB9IGVsc2UgaWYgKG1WaWRlb1dpZHRoID4gbWF4RnJhbWVXaWR0aCkgeworICAgICAgICBMT0dXKCJJbnRlbmRlZCB2aWRlbyBlbmNvZGluZyBmcmFtZSB3aWR0aCAoJWQpIGlzIHRvbyBsYXJnZSIKKyAgICAgICAgICAgICAiIGFuZCB3aWxsIGJlIHNldCB0byAoJWQpIiwgbVZpZGVvV2lkdGgsIG1heEZyYW1lV2lkdGgpOworICAgICAgICBtVmlkZW9XaWR0aCA9IG1heEZyYW1lV2lkdGg7CisgICAgfQorfQorCitzdGF0dXNfdCBTdGFnZWZyaWdodFJlY29yZGVyOjpzZXR1cENhbWVyYVNvdXJjZSgpIHsKKyAgICBjbGlwVmlkZW9CaXRSYXRlKCk7CisgICAgY2xpcFZpZGVvRnJhbWVSYXRlKCk7CisgICAgY2xpcFZpZGVvRnJhbWVXaWR0aCgpOworICAgIGNsaXBWaWRlb0ZyYW1lSGVpZ2h0KCk7CisKKyAgICBpbnQ2NF90IHRva2VuID0gSVBDVGhyZWFkU3RhdGU6OnNlbGYoKS0+Y2xlYXJDYWxsaW5nSWRlbnRpdHkoKTsKKyAgICBpZiAobUNhbWVyYSA9PSAwKSB7CisgICAgICAgIG1DYW1lcmEgPSBDYW1lcmE6OmNvbm5lY3QobUNhbWVyYUlkKTsKKyAgICAgICAgaWYgKG1DYW1lcmEgPT0gMCkgeworICAgICAgICAgICAgTE9HRSgiQ2FtZXJhIGNvbm5lY3Rpb24gY291bGQgbm90IGJlIGVzdGFibGlzaGVkLiIpOworICAgICAgICAgICAgcmV0dXJuIC1FQlVTWTsKKyAgICAgICAgfQorICAgICAgICBtRmxhZ3MgJj0gfkZMQUdTX0hPVF9DQU1FUkE7CisgICAgICAgIG1DYW1lcmEtPmxvY2soKTsKKyAgICB9CisKKyAgICAvLyBTZXQgdGhlIGFjdHVhbCB2aWRlbyByZWNvcmRpbmcgZnJhbWUgc2l6ZQorICAgIENhbWVyYVBhcmFtZXRlcnMgcGFyYW1zKG1DYW1lcmEtPmdldFBhcmFtZXRlcnMoKSk7CisgICAgcGFyYW1zLnNldFByZXZpZXdTaXplKG1WaWRlb1dpZHRoLCBtVmlkZW9IZWlnaHQpOworICAgIHBhcmFtcy5zZXRQcmV2aWV3RnJhbWVSYXRlKG1GcmFtZVJhdGUpOworICAgIFN0cmluZzggcyA9IHBhcmFtcy5mbGF0dGVuKCk7CisgICAgQ0hFQ0tfRVEoT0ssIG1DYW1lcmEtPnNldFBhcmFtZXRlcnMocykpOworICAgIENhbWVyYVBhcmFtZXRlcnMgbmV3Q2FtZXJhUGFyYW1zKG1DYW1lcmEtPmdldFBhcmFtZXRlcnMoKSk7CisKKyAgICAvLyBDaGVjayBvbiB2aWRlbyBmcmFtZSBzaXplCisgICAgaW50IGZyYW1lV2lkdGggPSAwLCBmcmFtZUhlaWdodCA9IDA7CisgICAgbmV3Q2FtZXJhUGFyYW1zLmdldFByZXZpZXdTaXplKCZmcmFtZVdpZHRoLCAmZnJhbWVIZWlnaHQpOworICAgIGlmIChmcmFtZVdpZHRoICA8IDAgfHwgZnJhbWVXaWR0aCAgIT0gbVZpZGVvV2lkdGggfHwKKyAgICAgICAgZnJhbWVIZWlnaHQgPCAwIHx8IGZyYW1lSGVpZ2h0ICE9IG1WaWRlb0hlaWdodCkgeworICAgICAgICBMT0dFKCJGYWlsZWQgdG8gc2V0IHRoZSB2aWRlbyBmcmFtZSBzaXplIHRvICVkeCVkIiwKKyAgICAgICAgICAgICAgICBtVmlkZW9XaWR0aCwgbVZpZGVvSGVpZ2h0KTsKKyAgICAgICAgSVBDVGhyZWFkU3RhdGU6OnNlbGYoKS0+cmVzdG9yZUNhbGxpbmdJZGVudGl0eSh0b2tlbik7CisgICAgICAgIHJldHVybiBVTktOT1dOX0VSUk9SOworICAgIH0KKworICAgIC8vIENoZWNrIG9uIHZpZGVvIGZyYW1lIHJhdGUKKyAgICBpbnQgZnJhbWVSYXRlID0gbmV3Q2FtZXJhUGFyYW1zLmdldFByZXZpZXdGcmFtZVJhdGUoKTsKKyAgICBpZiAoZnJhbWVSYXRlIDwgMCB8fCAoZnJhbWVSYXRlIC0gbUZyYW1lUmF0ZSkgIT0gMCkgeworICAgICAgICBMT0dFKCJGYWlsZWQgdG8gc2V0IGZyYW1lIHJhdGUgdG8gJWQgZnBzLiBUaGUgYWN0dWFsICIKKyAgICAgICAgICAgICAiZnJhbWUgcmF0ZSBpcyAlZCIsIG1GcmFtZVJhdGUsIGZyYW1lUmF0ZSk7CisgICAgfQorCisgICAgQ0hFQ0tfRVEoT0ssIG1DYW1lcmEtPnNldFByZXZpZXdEaXNwbGF5KG1QcmV2aWV3U3VyZmFjZSkpOworICAgIElQQ1RocmVhZFN0YXRlOjpzZWxmKCktPnJlc3RvcmVDYWxsaW5nSWRlbnRpdHkodG9rZW4pOworICAgIHJldHVybiBPSzsKK30KKwordm9pZCBTdGFnZWZyaWdodFJlY29yZGVyOjpjbGlwVmlkZW9GcmFtZUhlaWdodCgpIHsKKyAgICBMT0dWKCJjbGlwVmlkZW9GcmFtZUhlaWdodDogZW5jb2RlciAlZCIsIG1WaWRlb0VuY29kZXIpOworICAgIGludCBtaW5GcmFtZUhlaWdodCA9IG1FbmNvZGVyUHJvZmlsZXMtPmdldFZpZGVvRW5jb2RlclBhcmFtQnlOYW1lKAorICAgICAgICAgICAgICAgICAgICAgICAgImVuYy52aWQuaGVpZ2h0Lm1pbiIsIG1WaWRlb0VuY29kZXIpOworICAgIGludCBtYXhGcmFtZUhlaWdodCA9IG1FbmNvZGVyUHJvZmlsZXMtPmdldFZpZGVvRW5jb2RlclBhcmFtQnlOYW1lKAorICAgICAgICAgICAgICAgICAgICAgICAgImVuYy52aWQuaGVpZ2h0Lm1heCIsIG1WaWRlb0VuY29kZXIpOworICAgIGlmIChtVmlkZW9IZWlnaHQgPCBtaW5GcmFtZUhlaWdodCkgeworICAgICAgICBMT0dXKCJJbnRlbmRlZCB2aWRlbyBlbmNvZGluZyBmcmFtZSBoZWlnaHQgKCVkKSBpcyB0b28gc21hbGwiCisgICAgICAgICAgICAgIiBhbmQgd2lsbCBiZSBzZXQgdG8gKCVkKSIsIG1WaWRlb0hlaWdodCwgbWluRnJhbWVIZWlnaHQpOworICAgICAgICBtVmlkZW9IZWlnaHQgPSBtaW5GcmFtZUhlaWdodDsKKyAgICB9IGVsc2UgaWYgKG1WaWRlb0hlaWdodCA+IG1heEZyYW1lSGVpZ2h0KSB7CisgICAgICAgIExPR1coIkludGVuZGVkIHZpZGVvIGVuY29kaW5nIGZyYW1lIGhlaWdodCAoJWQpIGlzIHRvbyBsYXJnZSIKKyAgICAgICAgICAgICAiIGFuZCB3aWxsIGJlIHNldCB0byAoJWQpIiwgbVZpZGVvSGVpZ2h0LCBtYXhGcmFtZUhlaWdodCk7CisgICAgICAgIG1WaWRlb0hlaWdodCA9IG1heEZyYW1lSGVpZ2h0OworICAgIH0KK30KKworc3RhdHVzX3QgU3RhZ2VmcmlnaHRSZWNvcmRlcjo6c2V0dXBWaWRlb0VuY29kZXIoY29uc3Qgc3A8TWVkaWFXcml0ZXI+JiB3cml0ZXIpIHsKKyAgICBzdGF0dXNfdCBlcnIgPSBzZXR1cENhbWVyYVNvdXJjZSgpOworICAgIGlmIChlcnIgIT0gT0spIHJldHVybiBlcnI7CisKKyAgICBzcDxDYW1lcmFTb3VyY2U+IGNhbWVyYVNvdXJjZSA9IENhbWVyYVNvdXJjZTo6Q3JlYXRlRnJvbUNhbWVyYShtQ2FtZXJhKTsKKyAgICBDSEVDSyhjYW1lcmFTb3VyY2UgIT0gTlVMTCk7CisKKyAgICBzcDxNZXRhRGF0YT4gZW5jX21ldGEgPSBuZXcgTWV0YURhdGE7CisgICAgZW5jX21ldGEtPnNldEludDMyKGtLZXlCaXRSYXRlLCBtVmlkZW9CaXRSYXRlKTsKKyAgICBlbmNfbWV0YS0+c2V0SW50MzIoa0tleVNhbXBsZVJhdGUsIG1GcmFtZVJhdGUpOworCisgICAgc3dpdGNoIChtVmlkZW9FbmNvZGVyKSB7CisgICAgICAgIGNhc2UgVklERU9fRU5DT0RFUl9IMjYzOgorICAgICAgICAgICAgZW5jX21ldGEtPnNldENTdHJpbmcoa0tleU1JTUVUeXBlLCBNRURJQV9NSU1FVFlQRV9WSURFT19IMjYzKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgVklERU9fRU5DT0RFUl9NUEVHXzRfU1A6CisgICAgICAgICAgICBlbmNfbWV0YS0+c2V0Q1N0cmluZyhrS2V5TUlNRVR5cGUsIE1FRElBX01JTUVUWVBFX1ZJREVPX01QRUc0KTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgVklERU9fRU5DT0RFUl9IMjY0OgorICAgICAgICAgICAgZW5jX21ldGEtPnNldENTdHJpbmcoa0tleU1JTUVUeXBlLCBNRURJQV9NSU1FVFlQRV9WSURFT19BVkMpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIENIRUNLKCEiU2hvdWxkIG5vdCBiZSBoZXJlLCB1bnN1cHBvcnRlZCB2aWRlbyBlbmNvZGluZy4iKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHNwPE1ldGFEYXRhPiBtZXRhID0gY2FtZXJhU291cmNlLT5nZXRGb3JtYXQoKTsKKworICAgIGludDMyX3Qgd2lkdGgsIGhlaWdodCwgc3RyaWRlLCBzbGljZUhlaWdodDsKKyAgICBDSEVDSyhtZXRhLT5maW5kSW50MzIoa0tleVdpZHRoLCAmd2lkdGgpKTsKKyAgICBDSEVDSyhtZXRhLT5maW5kSW50MzIoa0tleUhlaWdodCwgJmhlaWdodCkpOworICAgIENIRUNLKG1ldGEtPmZpbmRJbnQzMihrS2V5U3RyaWRlLCAmc3RyaWRlKSk7CisgICAgQ0hFQ0sobWV0YS0+ZmluZEludDMyKGtLZXlTbGljZUhlaWdodCwgJnNsaWNlSGVpZ2h0KSk7CisKKyAgICBlbmNfbWV0YS0+c2V0SW50MzIoa0tleVdpZHRoLCB3aWR0aCk7CisgICAgZW5jX21ldGEtPnNldEludDMyKGtLZXlIZWlnaHQsIGhlaWdodCk7CisgICAgZW5jX21ldGEtPnNldEludDMyKGtLZXlJRnJhbWVzSW50ZXJ2YWwsIG1JRnJhbWVzSW50ZXJ2YWwpOworICAgIGVuY19tZXRhLT5zZXRJbnQzMihrS2V5U3RyaWRlLCBzdHJpZGUpOworICAgIGVuY19tZXRhLT5zZXRJbnQzMihrS2V5U2xpY2VIZWlnaHQsIHNsaWNlSGVpZ2h0KTsKKyAgICBpZiAobVZpZGVvRW5jb2RlclByb2ZpbGUgIT0gLTEpIHsKKyAgICAgICAgZW5jX21ldGEtPnNldEludDMyKGtLZXlWaWRlb1Byb2ZpbGUsIG1WaWRlb0VuY29kZXJQcm9maWxlKTsKKyAgICB9CisgICAgaWYgKG1WaWRlb0VuY29kZXJMZXZlbCAhPSAtMSkgeworICAgICAgICBlbmNfbWV0YS0+c2V0SW50MzIoa0tleVZpZGVvTGV2ZWwsIG1WaWRlb0VuY29kZXJMZXZlbCk7CisgICAgfQorCisgICAgT01YQ2xpZW50IGNsaWVudDsKKyAgICBDSEVDS19FUShjbGllbnQuY29ubmVjdCgpLCBPSyk7CisKKyAgICBzcDxNZWRpYVNvdXJjZT4gZW5jb2RlciA9IE9NWENvZGVjOjpDcmVhdGUoCisgICAgICAgICAgICBjbGllbnQuaW50ZXJmYWNlKCksIGVuY19tZXRhLAorICAgICAgICAgICAgdHJ1ZSAvKiBjcmVhdGVFbmNvZGVyICovLCBjYW1lcmFTb3VyY2UpOworICAgIGlmIChlbmNvZGVyID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIFVOS05PV05fRVJST1I7CisgICAgfQorCisgICAgd3JpdGVyLT5hZGRTb3VyY2UoZW5jb2Rlcik7CisgICAgcmV0dXJuIE9LOworfQorCitzdGF0dXNfdCBTdGFnZWZyaWdodFJlY29yZGVyOjpzZXR1cEF1ZGlvRW5jb2Rlcihjb25zdCBzcDxNZWRpYVdyaXRlcj4mIHdyaXRlcikgeworICAgIHNwPE1lZGlhU291cmNlPiBhdWRpb0VuY29kZXI7CisgICAgc3dpdGNoKG1BdWRpb0VuY29kZXIpIHsKKyAgICAgICAgY2FzZSBBVURJT19FTkNPREVSX0FNUl9OQjoKKyAgICAgICAgY2FzZSBBVURJT19FTkNPREVSX0FNUl9XQjoKKyAgICAgICAgY2FzZSBBVURJT19FTkNPREVSX0FBQzoKKyAgICAgICAgICAgIGF1ZGlvRW5jb2RlciA9IGNyZWF0ZUF1ZGlvU291cmNlKCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIExPR0UoIlVuc3VwcG9ydGVkIGF1ZGlvIGVuY29kZXI6ICVkIiwgbUF1ZGlvRW5jb2Rlcik7CisgICAgICAgICAgICByZXR1cm4gVU5LTk9XTl9FUlJPUjsKKyAgICB9CisKKyAgICBpZiAoYXVkaW9FbmNvZGVyID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIFVOS05PV05fRVJST1I7CisgICAgfQorICAgIHdyaXRlci0+YWRkU291cmNlKGF1ZGlvRW5jb2Rlcik7CisgICAgcmV0dXJuIE9LOworfQorCiBzdGF0dXNfdCBTdGFnZWZyaWdodFJlY29yZGVyOjpzdGFydE1QRUc0UmVjb3JkaW5nKCkgewotICAgIG1Xcml0ZXIgPSBuZXcgTVBFRzRXcml0ZXIoZHVwKG1PdXRwdXRGZCkpOworICAgIGludDMyX3QgdG90YWxCaXRSYXRlID0gMDsKKyAgICBzdGF0dXNfdCBlcnIgPSBPSzsKKyAgICBzcDxNZWRpYVdyaXRlcj4gd3JpdGVyID0gbmV3IE1QRUc0V3JpdGVyKGR1cChtT3V0cHV0RmQpKTsKIAorICAgIC8vIEFkZCBhdWRpbyBzb3VyY2UgZmlyc3QgaWYgaXQgZXhpc3RzCisgICAgaWYgKG1BdWRpb1NvdXJjZSAhPSBBVURJT19TT1VSQ0VfTElTVF9FTkQpIHsKKyAgICAgICAgZXJyID0gc2V0dXBBdWRpb0VuY29kZXIod3JpdGVyKTsKKyAgICAgICAgaWYgKGVyciAhPSBPSykgcmV0dXJuIGVycjsKKyAgICAgICAgdG90YWxCaXRSYXRlICs9IG1BdWRpb0JpdFJhdGU7CisgICAgfQogICAgIGlmIChtVmlkZW9Tb3VyY2UgPT0gVklERU9fU09VUkNFX0RFRkFVTFQKICAgICAgICAgICAgIHx8IG1WaWRlb1NvdXJjZSA9PSBWSURFT19TT1VSQ0VfQ0FNRVJBKSB7Ci0gICAgICAgIENIRUNLKG1DYW1lcmEgIT0gTlVMTCk7Ci0KLSAgICAgICAgc3A8Q2FtZXJhU291cmNlPiBjYW1lcmFTb3VyY2UgPQotICAgICAgICAgICAgQ2FtZXJhU291cmNlOjpDcmVhdGVGcm9tSUNhbWVyYShtQ2FtZXJhKTsKLQotICAgICAgICBDSEVDSyhjYW1lcmFTb3VyY2UgIT0gTlVMTCk7Ci0KLSAgICAgICAgY2FtZXJhU291cmNlLT5zZXRQcmV2aWV3U3VyZmFjZShtUHJldmlld1N1cmZhY2UpOwotCi0gICAgICAgIHNwPE1ldGFEYXRhPiBlbmNfbWV0YSA9IG5ldyBNZXRhRGF0YTsKLSAgICAgICAgc3dpdGNoIChtVmlkZW9FbmNvZGVyKSB7Ci0gICAgICAgICAgICBjYXNlIFZJREVPX0VOQ09ERVJfSDI2MzoKLSAgICAgICAgICAgICAgICBlbmNfbWV0YS0+c2V0Q1N0cmluZyhrS2V5TUlNRVR5cGUsIE1FRElBX01JTUVUWVBFX1ZJREVPX0gyNjMpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICBjYXNlIFZJREVPX0VOQ09ERVJfTVBFR180X1NQOgotICAgICAgICAgICAgICAgIGVuY19tZXRhLT5zZXRDU3RyaW5nKGtLZXlNSU1FVHlwZSwgTUVESUFfTUlNRVRZUEVfVklERU9fTVBFRzQpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgICAgICBjYXNlIFZJREVPX0VOQ09ERVJfSDI2NDoKLSAgICAgICAgICAgICAgICBlbmNfbWV0YS0+c2V0Q1N0cmluZyhrS2V5TUlNRVR5cGUsIE1FRElBX01JTUVUWVBFX1ZJREVPX0FWQyk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgICAgQ0hFQ0soISJTaG91bGQgbm90IGJlIGhlcmUsIHVuc3VwcG9ydGVkIHZpZGVvIGVuY29kaW5nLiIpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgc3A8TWV0YURhdGE+IG1ldGEgPSBjYW1lcmFTb3VyY2UtPmdldEZvcm1hdCgpOwotCi0gICAgICAgIGludDMyX3Qgd2lkdGgsIGhlaWdodDsKLSAgICAgICAgQ0hFQ0sobWV0YS0+ZmluZEludDMyKGtLZXlXaWR0aCwgJndpZHRoKSk7Ci0gICAgICAgIENIRUNLKG1ldGEtPmZpbmRJbnQzMihrS2V5SGVpZ2h0LCAmaGVpZ2h0KSk7Ci0KLSAgICAgICAgZW5jX21ldGEtPnNldEludDMyKGtLZXlXaWR0aCwgd2lkdGgpOwotICAgICAgICBlbmNfbWV0YS0+c2V0SW50MzIoa0tleUhlaWdodCwgaGVpZ2h0KTsKLQotICAgICAgICBPTVhDbGllbnQgY2xpZW50OwotICAgICAgICBDSEVDS19FUShjbGllbnQuY29ubmVjdCgpLCBPSyk7Ci0KLSAgICAgICAgc3A8TWVkaWFTb3VyY2U+IGVuY29kZXIgPQotICAgICAgICAgICAgT01YQ29kZWM6OkNyZWF0ZSgKLSAgICAgICAgICAgICAgICAgICAgY2xpZW50LmludGVyZmFjZSgpLCBlbmNfbWV0YSwKLSAgICAgICAgICAgICAgICAgICAgdHJ1ZSAvKiBjcmVhdGVFbmNvZGVyICovLCBjYW1lcmFTb3VyY2UpOwotCi0gICAgICAgIENIRUNLKG1PdXRwdXRGZCA+PSAwKTsKLSAgICAgICAgbVdyaXRlci0+YWRkU291cmNlKGVuY29kZXIpOworICAgICAgICBlcnIgPSBzZXR1cFZpZGVvRW5jb2Rlcih3cml0ZXIpOworICAgICAgICBpZiAoZXJyICE9IE9LKSByZXR1cm4gZXJyOworICAgICAgICB0b3RhbEJpdFJhdGUgKz0gbVZpZGVvQml0UmF0ZTsKICAgICB9CiAKLSAgICBpZiAobUF1ZGlvU291cmNlICE9IEFVRElPX1NPVVJDRV9MSVNUX0VORCkgewotICAgICAgICBzcDxNZWRpYVNvdXJjZT4gYXVkaW9FbmNvZGVyID0gY3JlYXRlQU1SQXVkaW9Tb3VyY2UoKTsKKyAgICByZWludGVycHJldF9jYXN0PE1QRUc0V3JpdGVyICo+KHdyaXRlci5nZXQoKSktPgorICAgICAgICBzZXRJbnRlcmxlYXZlRHVyYXRpb24obUludGVybGVhdmVEdXJhdGlvblVzKTsKIAotICAgICAgICBpZiAoYXVkaW9FbmNvZGVyID09IE5VTEwpIHsKLSAgICAgICAgICAgIHJldHVybiBVTktOT1dOX0VSUk9SOwotICAgICAgICB9Ci0KLSAgICAgICAgbVdyaXRlci0+YWRkU291cmNlKGF1ZGlvRW5jb2Rlcik7CisgICAgaWYgKG1NYXhGaWxlRHVyYXRpb25VcyAhPSAwKSB7CisgICAgICAgIHdyaXRlci0+c2V0TWF4RmlsZUR1cmF0aW9uKG1NYXhGaWxlRHVyYXRpb25Vcyk7CiAgICAgfQorICAgIGlmIChtTWF4RmlsZVNpemVCeXRlcyAhPSAwKSB7CisgICAgICAgIHdyaXRlci0+c2V0TWF4RmlsZVNpemUobU1heEZpbGVTaXplQnl0ZXMpOworICAgIH0KKyAgICBzcDxNZXRhRGF0YT4gbWV0YSA9IG5ldyBNZXRhRGF0YTsKKyAgICBtZXRhLT5zZXRJbnQ2NChrS2V5VGltZSwgc3lzdGVtVGltZSgpIC8gMTAwMCk7CisgICAgbWV0YS0+c2V0SW50MzIoa0tleUZpbGVUeXBlLCBtT3V0cHV0Rm9ybWF0KTsKKyAgICBtZXRhLT5zZXRJbnQzMihrS2V5Qml0UmF0ZSwgdG90YWxCaXRSYXRlKTsKKyAgICBtZXRhLT5zZXRJbnQzMihrS2V5NjRCaXRGaWxlT2Zmc2V0LCBtVXNlNjRCaXRGaWxlT2Zmc2V0KTsKKyAgICBpZiAobVRyYWNrRXZlcnlOdW1iZXJPZkZyYW1lcyA+IDApIHsKKyAgICAgICAgbWV0YS0+c2V0SW50MzIoa0tleVRyYWNrRnJhbWVTdGF0dXMsIG1UcmFja0V2ZXJ5TnVtYmVyT2ZGcmFtZXMpOworICAgIH0KKyAgICBpZiAobVRyYWNrRXZlcnlUaW1lRHVyYXRpb25VcyA+IDApIHsKKyAgICAgICAgbWV0YS0+c2V0SW50NjQoa0tleVRyYWNrVGltZVN0YXR1cywgbVRyYWNrRXZlcnlUaW1lRHVyYXRpb25Vcyk7CisgICAgfQorICAgIHdyaXRlci0+c2V0TGlzdGVuZXIobUxpc3RlbmVyKTsKKyAgICBtV3JpdGVyID0gd3JpdGVyOworICAgIHJldHVybiBtV3JpdGVyLT5zdGFydChtZXRhLmdldCgpKTsKK30KIAotICAgIG1Xcml0ZXItPnN0YXJ0KCk7CitzdGF0dXNfdCBTdGFnZWZyaWdodFJlY29yZGVyOjpwYXVzZSgpIHsKKyAgICBMT0dWKCJwYXVzZSIpOworICAgIGlmIChtV3JpdGVyID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIFVOS05PV05fRVJST1I7CisgICAgfQorICAgIG1Xcml0ZXItPnBhdXNlKCk7CiAgICAgcmV0dXJuIE9LOwogfQogCiBzdGF0dXNfdCBTdGFnZWZyaWdodFJlY29yZGVyOjpzdG9wKCkgewotICAgIGlmIChtV3JpdGVyID09IE5VTEwpIHsKLSAgICAgICAgcmV0dXJuIFVOS05PV05fRVJST1I7CisgICAgTE9HVigic3RvcCIpOworICAgIGlmIChtV3JpdGVyICE9IE5VTEwpIHsKKyAgICAgICAgbVdyaXRlci0+c3RvcCgpOworICAgICAgICBtV3JpdGVyLmNsZWFyKCk7CiAgICAgfQogCi0gICAgbVdyaXRlci0+c3RvcCgpOwotICAgIG1Xcml0ZXIgPSBOVUxMOworICAgIGlmIChtQ2FtZXJhICE9IDApIHsKKyAgICAgICAgTE9HVigiRGlzY29ubmVjdCBjYW1lcmEiKTsKKyAgICAgICAgaW50NjRfdCB0b2tlbiA9IElQQ1RocmVhZFN0YXRlOjpzZWxmKCktPmNsZWFyQ2FsbGluZ0lkZW50aXR5KCk7CisgICAgICAgIGlmICgobUZsYWdzICYgRkxBR1NfSE9UX0NBTUVSQSkgPT0gMCkgeworICAgICAgICAgICAgTE9HVigiQ2FtZXJhIHdhcyBjb2xkIHdoZW4gd2Ugc3RhcnRlZCwgc3RvcHBpbmcgcHJldmlldyIpOworICAgICAgICAgICAgbUNhbWVyYS0+c3RvcFByZXZpZXcoKTsKKyAgICAgICAgfQorICAgICAgICBtQ2FtZXJhLT51bmxvY2soKTsKKyAgICAgICAgbUNhbWVyYS5jbGVhcigpOworICAgICAgICBJUENUaHJlYWRTdGF0ZTo6c2VsZigpLT5yZXN0b3JlQ2FsbGluZ0lkZW50aXR5KHRva2VuKTsKKyAgICAgICAgbUZsYWdzID0gMDsKKyAgICB9CiAKICAgICByZXR1cm4gT0s7CiB9CiAKIHN0YXR1c190IFN0YWdlZnJpZ2h0UmVjb3JkZXI6OmNsb3NlKCkgeworICAgIExPR1YoImNsb3NlIik7CiAgICAgc3RvcCgpOwogCiAgICAgcmV0dXJuIE9LOwogfQogCiBzdGF0dXNfdCBTdGFnZWZyaWdodFJlY29yZGVyOjpyZXNldCgpIHsKKyAgICBMT0dWKCJyZXNldCIpOwogICAgIHN0b3AoKTsKIAorICAgIC8vIE5vIGF1ZGlvIG9yIHZpZGVvIHNvdXJjZSBieSBkZWZhdWx0CiAgICAgbUF1ZGlvU291cmNlID0gQVVESU9fU09VUkNFX0xJU1RfRU5EOwogICAgIG1WaWRlb1NvdXJjZSA9IFZJREVPX1NPVVJDRV9MSVNUX0VORDsKLSAgICBtT3V0cHV0Rm9ybWF0ID0gT1VUUFVUX0ZPUk1BVF9MSVNUX0VORDsKLSAgICBtQXVkaW9FbmNvZGVyID0gQVVESU9fRU5DT0RFUl9MSVNUX0VORDsKLSAgICBtVmlkZW9FbmNvZGVyID0gVklERU9fRU5DT0RFUl9MSVNUX0VORDsKLSAgICBtVmlkZW9XaWR0aCA9IC0xOwotICAgIG1WaWRlb0hlaWdodCA9IC0xOwotICAgIG1GcmFtZVJhdGUgPSAtMTsKKworICAgIC8vIERlZmF1bHQgcGFyYW1ldGVycworICAgIG1PdXRwdXRGb3JtYXQgID0gT1VUUFVUX0ZPUk1BVF9USFJFRV9HUFA7CisgICAgbUF1ZGlvRW5jb2RlciAgPSBBVURJT19FTkNPREVSX0FNUl9OQjsKKyAgICBtVmlkZW9FbmNvZGVyICA9IFZJREVPX0VOQ09ERVJfSDI2MzsKKyAgICBtVmlkZW9XaWR0aCAgICA9IDE3NjsKKyAgICBtVmlkZW9IZWlnaHQgICA9IDE0NDsKKyAgICBtRnJhbWVSYXRlICAgICA9IDIwOworICAgIG1WaWRlb0JpdFJhdGUgID0gMTkyMDAwOworICAgIG1TYW1wbGVSYXRlICAgID0gODAwMDsKKyAgICBtQXVkaW9DaGFubmVscyA9IDE7CisgICAgbUF1ZGlvQml0UmF0ZSAgPSAxMjIwMDsKKyAgICBtSW50ZXJsZWF2ZUR1cmF0aW9uVXMgPSAwOworICAgIG1JRnJhbWVzSW50ZXJ2YWwgPSAxOworICAgIG1BdWRpb1NvdXJjZU5vZGUgPSAwOworICAgIG1Vc2U2NEJpdEZpbGVPZmZzZXQgPSBmYWxzZTsKKyAgICBtQ2FtZXJhSWQgICAgICAgID0gMDsKKyAgICBtVmlkZW9FbmNvZGVyUHJvZmlsZSA9IC0xOworICAgIG1WaWRlb0VuY29kZXJMZXZlbCAgID0gLTE7CisgICAgbU1heEZpbGVEdXJhdGlvblVzID0gMDsKKyAgICBtTWF4RmlsZVNpemVCeXRlcyA9IDA7CisgICAgbVRyYWNrRXZlcnlOdW1iZXJPZkZyYW1lcyA9IDA7CisgICAgbVRyYWNrRXZlcnlUaW1lRHVyYXRpb25VcyA9IDA7CisgICAgbUVuY29kZXJQcm9maWxlcyA9IE1lZGlhUHJvZmlsZXM6OmdldEluc3RhbmNlKCk7CisKICAgICBtT3V0cHV0RmQgPSAtMTsKKyAgICBtRmxhZ3MgPSAwOwogCiAgICAgcmV0dXJuIE9LOwogfQogCiBzdGF0dXNfdCBTdGFnZWZyaWdodFJlY29yZGVyOjpnZXRNYXhBbXBsaXR1ZGUoaW50ICptYXgpIHsKLSAgICAqbWF4ID0gMDsKKyAgICBMT0dWKCJnZXRNYXhBbXBsaXR1ZGUiKTsKKworICAgIGlmIChtYXggPT0gTlVMTCkgeworICAgICAgICBMT0dFKCJOdWxsIHBvaW50ZXIgYXJndW1lbnQiKTsKKyAgICAgICAgcmV0dXJuIEJBRF9WQUxVRTsKKyAgICB9CisKKyAgICBpZiAobUF1ZGlvU291cmNlTm9kZSAhPSAwKSB7CisgICAgICAgICptYXggPSBtQXVkaW9Tb3VyY2VOb2RlLT5nZXRNYXhBbXBsaXR1ZGUoKTsKKyAgICB9IGVsc2UgeworICAgICAgICAqbWF4ID0gMDsKKyAgICB9CiAKICAgICByZXR1cm4gT0s7CiB9CiAKK3N0YXR1c190IFN0YWdlZnJpZ2h0UmVjb3JkZXI6OmR1bXAoaW50IGZkLCBjb25zdCBWZWN0b3I8U3RyaW5nMTY+JiBhcmdzKSBjb25zdCB7CisgICAgY29uc3Qgc2l6ZV90IFNJWkUgPSAyNTY7CisgICAgY2hhciBidWZmZXJbU0laRV07CisgICAgU3RyaW5nOCByZXN1bHQ7CisgICAgc25wcmludGYoYnVmZmVyLCBTSVpFLCAiICAgUmVjb3JkZXI6ICVwIiwgdGhpcyk7CisgICAgc25wcmludGYoYnVmZmVyLCBTSVpFLCAiICAgT3V0cHV0IGZpbGUgKGZkICVkKTpcbiIsIG1PdXRwdXRGZCk7CisgICAgcmVzdWx0LmFwcGVuZChidWZmZXIpOworICAgIHNucHJpbnRmKGJ1ZmZlciwgU0laRSwgIiAgICAgRmlsZSBmb3JtYXQ6ICVkXG4iLCBtT3V0cHV0Rm9ybWF0KTsKKyAgICByZXN1bHQuYXBwZW5kKGJ1ZmZlcik7CisgICAgc25wcmludGYoYnVmZmVyLCBTSVpFLCAiICAgICBNYXggZmlsZSBzaXplIChieXRlcyk6ICVsbGRcbiIsIG1NYXhGaWxlU2l6ZUJ5dGVzKTsKKyAgICByZXN1bHQuYXBwZW5kKGJ1ZmZlcik7CisgICAgc25wcmludGYoYnVmZmVyLCBTSVpFLCAiICAgICBNYXggZmlsZSBkdXJhdGlvbiAodXMpOiAlbGxkXG4iLCBtTWF4RmlsZUR1cmF0aW9uVXMpOworICAgIHJlc3VsdC5hcHBlbmQoYnVmZmVyKTsKKyAgICBzbnByaW50ZihidWZmZXIsIFNJWkUsICIgICAgIEZpbGUgb2Zmc2V0IGxlbmd0aCAoYml0cyk6ICVkXG4iLCBtVXNlNjRCaXRGaWxlT2Zmc2V0PyA2NDogMzIpOworICAgIHJlc3VsdC5hcHBlbmQoYnVmZmVyKTsKKyAgICBzbnByaW50ZihidWZmZXIsIFNJWkUsICIgICAgIEludGVybGVhdmUgZHVyYXRpb24gKHVzKTogJWRcbiIsIG1JbnRlcmxlYXZlRHVyYXRpb25Vcyk7CisgICAgcmVzdWx0LmFwcGVuZChidWZmZXIpOworICAgIHNucHJpbnRmKGJ1ZmZlciwgU0laRSwgIiAgICAgUHJvZ3Jlc3Mgbm90aWZpY2F0aW9uOiAlZCBmcmFtZXNcbiIsIG1UcmFja0V2ZXJ5TnVtYmVyT2ZGcmFtZXMpOworICAgIHJlc3VsdC5hcHBlbmQoYnVmZmVyKTsKKyAgICBzbnByaW50ZihidWZmZXIsIFNJWkUsICIgICAgIFByb2dyZXNzIG5vdGlmaWNhdGlvbjogJWxsZCB1c1xuIiwgbVRyYWNrRXZlcnlUaW1lRHVyYXRpb25Vcyk7CisgICAgcmVzdWx0LmFwcGVuZChidWZmZXIpOworICAgIHNucHJpbnRmKGJ1ZmZlciwgU0laRSwgIiAgIEF1ZGlvXG4iKTsKKyAgICByZXN1bHQuYXBwZW5kKGJ1ZmZlcik7CisgICAgc25wcmludGYoYnVmZmVyLCBTSVpFLCAiICAgICBTb3VyY2U6ICVkXG4iLCBtQXVkaW9Tb3VyY2UpOworICAgIHJlc3VsdC5hcHBlbmQoYnVmZmVyKTsKKyAgICBzbnByaW50ZihidWZmZXIsIFNJWkUsICIgICAgIEVuY29kZXI6ICVkXG4iLCBtQXVkaW9FbmNvZGVyKTsKKyAgICByZXN1bHQuYXBwZW5kKGJ1ZmZlcik7CisgICAgc25wcmludGYoYnVmZmVyLCBTSVpFLCAiICAgICBCaXQgcmF0ZSAoYnBzKTogJWRcbiIsIG1BdWRpb0JpdFJhdGUpOworICAgIHJlc3VsdC5hcHBlbmQoYnVmZmVyKTsKKyAgICBzbnByaW50ZihidWZmZXIsIFNJWkUsICIgICAgIFNhbXBsaW5nIHJhdGUgKGh6KTogJWRcbiIsIG1TYW1wbGVSYXRlKTsKKyAgICByZXN1bHQuYXBwZW5kKGJ1ZmZlcik7CisgICAgc25wcmludGYoYnVmZmVyLCBTSVpFLCAiICAgICBOdW1iZXIgb2YgY2hhbm5lbHM6ICVkXG4iLCBtQXVkaW9DaGFubmVscyk7CisgICAgcmVzdWx0LmFwcGVuZChidWZmZXIpOworICAgIHNucHJpbnRmKGJ1ZmZlciwgU0laRSwgIiAgICAgTWF4IGFtcGxpdHVkZTogJWRcbiIsIG1BdWRpb1NvdXJjZU5vZGUgPT0gMD8gMDogbUF1ZGlvU291cmNlTm9kZS0+Z2V0TWF4QW1wbGl0dWRlKCkpOworICAgIHJlc3VsdC5hcHBlbmQoYnVmZmVyKTsKKyAgICBzbnByaW50ZihidWZmZXIsIFNJWkUsICIgICBWaWRlb1xuIik7CisgICAgcmVzdWx0LmFwcGVuZChidWZmZXIpOworICAgIHNucHJpbnRmKGJ1ZmZlciwgU0laRSwgIiAgICAgU291cmNlOiAlZFxuIiwgbVZpZGVvU291cmNlKTsKKyAgICByZXN1bHQuYXBwZW5kKGJ1ZmZlcik7CisgICAgc25wcmludGYoYnVmZmVyLCBTSVpFLCAiICAgICBDYW1lcmEgSWQ6ICVkXG4iLCBtQ2FtZXJhSWQpOworICAgIHJlc3VsdC5hcHBlbmQoYnVmZmVyKTsKKyAgICBzbnByaW50ZihidWZmZXIsIFNJWkUsICIgICAgIENhbWVyYSBmbGFnczogJWRcbiIsIG1GbGFncyk7CisgICAgcmVzdWx0LmFwcGVuZChidWZmZXIpOworICAgIHNucHJpbnRmKGJ1ZmZlciwgU0laRSwgIiAgICAgRW5jb2RlcjogJWRcbiIsIG1WaWRlb0VuY29kZXIpOworICAgIHJlc3VsdC5hcHBlbmQoYnVmZmVyKTsKKyAgICBzbnByaW50ZihidWZmZXIsIFNJWkUsICIgICAgIEVuY29kZXIgcHJvZmlsZTogJWRcbiIsIG1WaWRlb0VuY29kZXJQcm9maWxlKTsKKyAgICByZXN1bHQuYXBwZW5kKGJ1ZmZlcik7CisgICAgc25wcmludGYoYnVmZmVyLCBTSVpFLCAiICAgICBFbmNvZGVyIGxldmVsOiAlZFxuIiwgbVZpZGVvRW5jb2RlckxldmVsKTsKKyAgICByZXN1bHQuYXBwZW5kKGJ1ZmZlcik7CisgICAgc25wcmludGYoYnVmZmVyLCBTSVpFLCAiICAgICBJIGZyYW1lcyBpbnRlcnZhbCAocyk6ICVkXG4iLCBtSUZyYW1lc0ludGVydmFsKTsKKyAgICByZXN1bHQuYXBwZW5kKGJ1ZmZlcik7CisgICAgc25wcmludGYoYnVmZmVyLCBTSVpFLCAiICAgICBGcmFtZSBzaXplIChwaXhlbHMpOiAlZHglZFxuIiwgbVZpZGVvV2lkdGgsIG1WaWRlb0hlaWdodCk7CisgICAgcmVzdWx0LmFwcGVuZChidWZmZXIpOworICAgIHNucHJpbnRmKGJ1ZmZlciwgU0laRSwgIiAgICAgRnJhbWUgcmF0ZSAoZnBzKTogJWRcbiIsIG1GcmFtZVJhdGUpOworICAgIHJlc3VsdC5hcHBlbmQoYnVmZmVyKTsKKyAgICBzbnByaW50ZihidWZmZXIsIFNJWkUsICIgICAgIEJpdCByYXRlIChicHMpOiAlZFxuIiwgbVZpZGVvQml0UmF0ZSk7CisgICAgcmVzdWx0LmFwcGVuZChidWZmZXIpOworICAgIDo6d3JpdGUoZmQsIHJlc3VsdC5zdHJpbmcoKSwgcmVzdWx0LnNpemUoKSk7CisgICAgcmV0dXJuIE9LOworfQogfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL21lZGlhL2xpYm1lZGlhcGxheWVyc2VydmljZS9TdGFnZWZyaWdodFJlY29yZGVyLmggYi9tZWRpYS9saWJtZWRpYXBsYXllcnNlcnZpY2UvU3RhZ2VmcmlnaHRSZWNvcmRlci5oCmluZGV4IDdlYzQxMmQuLjcwNDUyM2YgMTAwNjQ0Ci0tLSBhL21lZGlhL2xpYm1lZGlhcGxheWVyc2VydmljZS9TdGFnZWZyaWdodFJlY29yZGVyLmgKKysrIGIvbWVkaWEvbGlibWVkaWFwbGF5ZXJzZXJ2aWNlL1N0YWdlZnJpZ2h0UmVjb3JkZXIuaApAQCAtMjMsOCArMjMsMTEgQEAKIAogbmFtZXNwYWNlIGFuZHJvaWQgewogCitjbGFzcyBDYW1lcmE7CiBzdHJ1Y3QgTWVkaWFTb3VyY2U7CiBzdHJ1Y3QgTWVkaWFXcml0ZXI7CitzdHJ1Y3QgQXVkaW9Tb3VyY2U7CitjbGFzcyBNZWRpYVByb2ZpbGVzOwogCiBzdHJ1Y3QgU3RhZ2VmcmlnaHRSZWNvcmRlciA6IHB1YmxpYyBNZWRpYVJlY29yZGVyQmFzZSB7CiAgICAgU3RhZ2VmcmlnaHRSZWNvcmRlcigpOwpAQCAtNDMsMzMgKzQ2LDg0IEBACiAgICAgdmlydHVhbCBzdGF0dXNfdCBzZXRPdXRwdXRGaWxlKGNvbnN0IGNoYXIgKnBhdGgpOwogICAgIHZpcnR1YWwgc3RhdHVzX3Qgc2V0T3V0cHV0RmlsZShpbnQgZmQsIGludDY0X3Qgb2Zmc2V0LCBpbnQ2NF90IGxlbmd0aCk7CiAgICAgdmlydHVhbCBzdGF0dXNfdCBzZXRQYXJhbWV0ZXJzKGNvbnN0IFN0cmluZzgmIHBhcmFtcyk7Ci0gICAgdmlydHVhbCBzdGF0dXNfdCBzZXRMaXN0ZW5lcihjb25zdCBzcDxJTWVkaWFQbGF5ZXJDbGllbnQ+JiBsaXN0ZW5lcik7CisgICAgdmlydHVhbCBzdGF0dXNfdCBzZXRMaXN0ZW5lcihjb25zdCBzcDxJTWVkaWFSZWNvcmRlckNsaWVudD4mIGxpc3RlbmVyKTsKICAgICB2aXJ0dWFsIHN0YXR1c190IHByZXBhcmUoKTsKICAgICB2aXJ0dWFsIHN0YXR1c190IHN0YXJ0KCk7CisgICAgdmlydHVhbCBzdGF0dXNfdCBwYXVzZSgpOwogICAgIHZpcnR1YWwgc3RhdHVzX3Qgc3RvcCgpOwogICAgIHZpcnR1YWwgc3RhdHVzX3QgY2xvc2UoKTsKICAgICB2aXJ0dWFsIHN0YXR1c190IHJlc2V0KCk7CiAgICAgdmlydHVhbCBzdGF0dXNfdCBnZXRNYXhBbXBsaXR1ZGUoaW50ICptYXgpOworICAgIHZpcnR1YWwgc3RhdHVzX3QgZHVtcChpbnQgZmQsIGNvbnN0IFZlY3RvcjxTdHJpbmcxNj4mIGFyZ3MpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIHNwPElDYW1lcmE+IG1DYW1lcmE7CisgICAgZW51bSBDYW1lcmFGbGFncyB7CisgICAgICAgIEZMQUdTX1NFVF9DQU1FUkEgPSAxTCA8PCAwLAorICAgICAgICBGTEFHU19IT1RfQ0FNRVJBID0gMUwgPDwgMSwKKyAgICB9OworCisgICAgc3A8Q2FtZXJhPiBtQ2FtZXJhOwogICAgIHNwPElTdXJmYWNlPiBtUHJldmlld1N1cmZhY2U7Ci0gICAgc3A8SU1lZGlhUGxheWVyQ2xpZW50PiBtTGlzdGVuZXI7CisgICAgc3A8SU1lZGlhUmVjb3JkZXJDbGllbnQ+IG1MaXN0ZW5lcjsKICAgICBzcDxNZWRpYVdyaXRlcj4gbVdyaXRlcjsKKyAgICBzcDxBdWRpb1NvdXJjZT4gbUF1ZGlvU291cmNlTm9kZTsKIAogICAgIGF1ZGlvX3NvdXJjZSBtQXVkaW9Tb3VyY2U7CiAgICAgdmlkZW9fc291cmNlIG1WaWRlb1NvdXJjZTsKICAgICBvdXRwdXRfZm9ybWF0IG1PdXRwdXRGb3JtYXQ7CiAgICAgYXVkaW9fZW5jb2RlciBtQXVkaW9FbmNvZGVyOwogICAgIHZpZGVvX2VuY29kZXIgbVZpZGVvRW5jb2RlcjsKLSAgICBpbnQgbVZpZGVvV2lkdGgsIG1WaWRlb0hlaWdodDsKLSAgICBpbnQgbUZyYW1lUmF0ZTsKKyAgICBib29sIG1Vc2U2NEJpdEZpbGVPZmZzZXQ7CisgICAgaW50MzJfdCBtVmlkZW9XaWR0aCwgbVZpZGVvSGVpZ2h0OworICAgIGludDMyX3QgbUZyYW1lUmF0ZTsKKyAgICBpbnQzMl90IG1WaWRlb0JpdFJhdGU7CisgICAgaW50MzJfdCBtQXVkaW9CaXRSYXRlOworICAgIGludDMyX3QgbUF1ZGlvQ2hhbm5lbHM7CisgICAgaW50MzJfdCBtU2FtcGxlUmF0ZTsKKyAgICBpbnQzMl90IG1JbnRlcmxlYXZlRHVyYXRpb25VczsKKyAgICBpbnQzMl90IG1JRnJhbWVzSW50ZXJ2YWw7CisgICAgaW50MzJfdCBtQ2FtZXJhSWQ7CisgICAgaW50MzJfdCBtVmlkZW9FbmNvZGVyUHJvZmlsZTsKKyAgICBpbnQzMl90IG1WaWRlb0VuY29kZXJMZXZlbDsKKyAgICBpbnQ2NF90IG1NYXhGaWxlU2l6ZUJ5dGVzOworICAgIGludDY0X3QgbU1heEZpbGVEdXJhdGlvblVzOworICAgIGludDMyX3QgbVRyYWNrRXZlcnlOdW1iZXJPZkZyYW1lczsKKyAgICBpbnQ2NF90IG1UcmFja0V2ZXJ5VGltZUR1cmF0aW9uVXM7CisKICAgICBTdHJpbmc4IG1QYXJhbXM7CiAgICAgaW50IG1PdXRwdXRGZDsKKyAgICBpbnQzMl90IG1GbGFnczsKKworICAgIE1lZGlhUHJvZmlsZXMgKm1FbmNvZGVyUHJvZmlsZXM7CiAKICAgICBzdGF0dXNfdCBzdGFydE1QRUc0UmVjb3JkaW5nKCk7CiAgICAgc3RhdHVzX3Qgc3RhcnRBTVJSZWNvcmRpbmcoKTsKLSAgICBzcDxNZWRpYVNvdXJjZT4gY3JlYXRlQU1SQXVkaW9Tb3VyY2UoKTsKKyAgICBzdGF0dXNfdCBzdGFydEFBQ1JlY29yZGluZygpOworICAgIHNwPE1lZGlhU291cmNlPiBjcmVhdGVBdWRpb1NvdXJjZSgpOworICAgIHN0YXR1c190IHNldHVwQ2FtZXJhU291cmNlKCk7CisgICAgc3RhdHVzX3Qgc2V0dXBBdWRpb0VuY29kZXIoY29uc3Qgc3A8TWVkaWFXcml0ZXI+JiB3cml0ZXIpOworICAgIHN0YXR1c190IHNldHVwVmlkZW9FbmNvZGVyKGNvbnN0IHNwPE1lZGlhV3JpdGVyPiYgd3JpdGVyKTsKKworICAgIC8vIEVuY29kaW5nIHBhcmFtZXRlciBoYW5kbGluZyB1dGlsaXRpZXMKKyAgICBzdGF0dXNfdCBzZXRQYXJhbWV0ZXIoY29uc3QgU3RyaW5nOCAma2V5LCBjb25zdCBTdHJpbmc4ICZ2YWx1ZSk7CisgICAgc3RhdHVzX3Qgc2V0UGFyYW1BdWRpb0VuY29kaW5nQml0UmF0ZShpbnQzMl90IGJpdFJhdGUpOworICAgIHN0YXR1c190IHNldFBhcmFtQXVkaW9OdW1iZXJPZkNoYW5uZWxzKGludDMyX3QgY2hhbm5sZXMpOworICAgIHN0YXR1c190IHNldFBhcmFtQXVkaW9TYW1wbGluZ1JhdGUoaW50MzJfdCBzYW1wbGVSYXRlKTsKKyAgICBzdGF0dXNfdCBzZXRQYXJhbVZpZGVvRW5jb2RpbmdCaXRSYXRlKGludDMyX3QgYml0UmF0ZSk7CisgICAgc3RhdHVzX3Qgc2V0UGFyYW1WaWRlb0lGcmFtZXNJbnRlcnZhbChpbnQzMl90IGludGVydmFsKTsKKyAgICBzdGF0dXNfdCBzZXRQYXJhbVZpZGVvRW5jb2RlclByb2ZpbGUoaW50MzJfdCBwcm9maWxlKTsKKyAgICBzdGF0dXNfdCBzZXRQYXJhbVZpZGVvRW5jb2RlckxldmVsKGludDMyX3QgbGV2ZWwpOworICAgIHN0YXR1c190IHNldFBhcmFtVmlkZW9DYW1lcmFJZChpbnQzMl90IGNhbWVyYUlkKTsKKyAgICBzdGF0dXNfdCBzZXRQYXJhbVRyYWNrVGltZVN0YXR1cyhpbnQ2NF90IHRpbWVEdXJhdGlvblVzKTsKKyAgICBzdGF0dXNfdCBzZXRQYXJhbVRyYWNrRnJhbWVTdGF0dXMoaW50MzJfdCBuRnJhbWVzKTsKKyAgICBzdGF0dXNfdCBzZXRQYXJhbUludGVybGVhdmVEdXJhdGlvbihpbnQzMl90IGR1cmF0aW9uVXMpOworICAgIHN0YXR1c190IHNldFBhcmFtNjRCaXRGaWxlT2Zmc2V0KGJvb2wgdXNlNjRCaXRGaWxlT2Zmc2V0KTsKKyAgICBzdGF0dXNfdCBzZXRQYXJhbU1heEZpbGVEdXJhdGlvblVzKGludDY0X3QgdGltZVVzKTsKKyAgICBzdGF0dXNfdCBzZXRQYXJhbU1heEZpbGVTaXplQnl0ZXMoaW50NjRfdCBieXRlcyk7CisgICAgdm9pZCBjbGlwVmlkZW9CaXRSYXRlKCk7CisgICAgdm9pZCBjbGlwVmlkZW9GcmFtZVJhdGUoKTsKKyAgICB2b2lkIGNsaXBWaWRlb0ZyYW1lV2lkdGgoKTsKKyAgICB2b2lkIGNsaXBWaWRlb0ZyYW1lSGVpZ2h0KCk7CiAKICAgICBTdGFnZWZyaWdodFJlY29yZGVyKGNvbnN0IFN0YWdlZnJpZ2h0UmVjb3JkZXIgJik7CiAgICAgU3RhZ2VmcmlnaHRSZWNvcmRlciAmb3BlcmF0b3I9KGNvbnN0IFN0YWdlZnJpZ2h0UmVjb3JkZXIgJik7CmRpZmYgLS1naXQgYS9tZWRpYS9saWJtZWRpYXBsYXllcnNlcnZpY2UvVm9yYmlzTWV0YWRhdGFSZXRyaWV2ZXIuY3BwIGIvbWVkaWEvbGlibWVkaWFwbGF5ZXJzZXJ2aWNlL1ZvcmJpc01ldGFkYXRhUmV0cmlldmVyLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWFjNzRmYy4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJtZWRpYXBsYXllcnNlcnZpY2UvVm9yYmlzTWV0YWRhdGFSZXRyaWV2ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotLyoKLSoqCi0qKiBDb3B5cmlnaHQgMjAwOSwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotKioKLSoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0qKgotKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotKioKLSoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0qKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotKi8KLQotLy8jZGVmaW5lIExPR19OREVCVUcgMAotI2RlZmluZSBMT0dfVEFHICJWb3JiaXNNZXRhZGF0YVJldHJpZXZlciIKLSNpbmNsdWRlIDx1dGlscy9Mb2cuaD4KLQotI2luY2x1ZGUgIlZvcmJpc01ldGFkYXRhUmV0cmlldmVyLmgiCi0jaW5jbHVkZSA8bWVkaWEvbWVkaWFtZXRhZGF0YXJldHJpZXZlci5oPgotIwotCi1uYW1lc3BhY2UgYW5kcm9pZCB7Ci0KLXZvaWQgVm9yYmlzTWV0YWRhdGFSZXRyaWV2ZXI6OmNsZWFyTWV0YWRhdGFWYWx1ZXMoKQotewotICAgIExPR1YoImNsZWVhck1ldGFkYXRhVmFsdWVzIik7Ci0gICAgbU1ldGFkYXRhVmFsdWVzWzBdWzBdID0gJ1wwJzsKLX0KLQotc3RhdHVzX3QgVm9yYmlzTWV0YWRhdGFSZXRyaWV2ZXI6OnNldERhdGFTb3VyY2UoY29uc3QgY2hhciAqdXJsKQotewotICAgIExPR1YoInNldERhdGFTb3VyY2U6IHVybCglcykiLCB1cmw/IHVybDogIk5VTEwgcG9pbnRlciIpOwotICAgIE11dGV4OjpBdXRvbG9jayBsb2NrKG1Mb2NrKTsKLSAgICBjbGVhck1ldGFkYXRhVmFsdWVzKCk7Ci0gICAgaWYgKG1Wb3JiaXNQbGF5ZXIgPT0gMCkgewotICAgICAgICBtVm9yYmlzUGxheWVyID0gbmV3IFZvcmJpc1BsYXllcigpOwotICAgIH0KLSAgICAvLyBUT0RPOiBzdXBwb3J0IGhlYWRlcnMgaW4gTWV0YWRhdGFSZXRyaWV2ZXIgaW50ZXJmYWNlIQotICAgIHJldHVybiBtVm9yYmlzUGxheWVyLT5zZXREYXRhU291cmNlKHVybCwgTlVMTCAvKiBoZWFkZXJzICovKTsKLX0KLQotc3RhdHVzX3QgVm9yYmlzTWV0YWRhdGFSZXRyaWV2ZXI6OnNldERhdGFTb3VyY2UoaW50IGZkLCBpbnQ2NF90IG9mZnNldCwgaW50NjRfdCBsZW5ndGgpCi17Ci0gICAgTE9HVigic2V0RGF0YVNvdXJjZTogZmQoJWQpLCBvZmZzZXQoJWxsZCksIGFuZCBsZW5ndGgoJWxsZCkiLCBmZCwgb2Zmc2V0LCBsZW5ndGgpOwotICAgIE11dGV4OjpBdXRvbG9jayBsb2NrKG1Mb2NrKTsKLSAgICBjbGVhck1ldGFkYXRhVmFsdWVzKCk7Ci0gICAgaWYgKG1Wb3JiaXNQbGF5ZXIgPT0gMCkgewotICAgICAgICBtVm9yYmlzUGxheWVyID0gbmV3IFZvcmJpc1BsYXllcigpOwotICAgIH0KLSAgICByZXR1cm4gbVZvcmJpc1BsYXllci0+c2V0RGF0YVNvdXJjZShmZCwgb2Zmc2V0LCBsZW5ndGgpOwotfQotCi1jb25zdCBjaGFyKiBWb3JiaXNNZXRhZGF0YVJldHJpZXZlcjo6ZXh0cmFjdE1ldGFkYXRhKGludCBrZXlDb2RlKQotewotICAgIExPR1YoImV4dHJhY3RNZXRhZGF0YToga2V5KCVkKSIsIGtleUNvZGUpOwotICAgIE11dGV4OjpBdXRvbG9jayBsb2NrKG1Mb2NrKTsKLSAgICBpZiAobVZvcmJpc1BsYXllciA9PSAwIHx8IG1Wb3JiaXNQbGF5ZXItPmluaXRDaGVjaygpICE9IE5PX0VSUk9SKSB7Ci0gICAgICAgIExPR0UoIm5vIHZvcmJpcyBwbGF5ZXIgaXMgaW5pdGlhbGl6ZWQgeWV0Iik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBzd2l0Y2ggKGtleUNvZGUpIHsKLSAgICBjYXNlIE1FVEFEQVRBX0tFWV9EVVJBVElPTjoKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG1NZXRhZGF0YVZhbHVlc1swXVswXSA9PSAnXDAnKSB7Ci0gICAgICAgICAgICAgICAgaW50IGR1cmF0aW9uID0gLTE7Ci0gICAgICAgICAgICAgICAgaWYgKG1Wb3JiaXNQbGF5ZXItPmdldER1cmF0aW9uKCZkdXJhdGlvbikgIT0gTk9fRVJST1IpIHsKLSAgICAgICAgICAgICAgICAgICAgTE9HRSgiZmFpbGVkIHRvIGdldCBkdXJhdGlvbiIpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc25wcmludGYobU1ldGFkYXRhVmFsdWVzWzBdLCBNQVhfTUVUQURBVEFfU1RSSU5HX0xFTkdUSCwgIiVkIiwgZHVyYXRpb24pOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgTE9HVigiZHVyYXRpb246ICVzIG1zIiwgbU1ldGFkYXRhVmFsdWVzWzBdKTsKLSAgICAgICAgICAgIHJldHVybiBtTWV0YWRhdGFWYWx1ZXNbMF07Ci0gICAgICAgIH0KLSAgICBkZWZhdWx0OgotICAgICAgICBMT0dFKCJVbnN1cHBvcnRlZCBrZXkgY29kZSAoJWQpIiwga2V5Q29kZSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXR1cm4gTlVMTDsKLX0KLQotfTsKLQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlibWVkaWFwbGF5ZXJzZXJ2aWNlL1ZvcmJpc01ldGFkYXRhUmV0cmlldmVyLmggYi9tZWRpYS9saWJtZWRpYXBsYXllcnNlcnZpY2UvVm9yYmlzTWV0YWRhdGFSZXRyaWV2ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWM1N2ZlMy4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJtZWRpYXBsYXllcnNlcnZpY2UvVm9yYmlzTWV0YWRhdGFSZXRyaWV2ZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0qKgotKiogQ29weXJpZ2h0IDIwMDksIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSoqCi0qKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotKioKLSoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSoqCi0qKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0qKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0qKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0qKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSovCi0KLSNpZm5kZWYgQU5EUk9JRF9WT1JCSVNNRVRBREFUQVJFVFJJRVZFUl9ICi0jZGVmaW5lIEFORFJPSURfVk9SQklTTUVUQURBVEFSRVRSSUVWRVJfSAotCi0jaW5jbHVkZSA8dXRpbHMvdGhyZWFkcy5oPgotI2luY2x1ZGUgPHV0aWxzL0Vycm9ycy5oPgotI2luY2x1ZGUgPG1lZGlhL01lZGlhTWV0YWRhdGFSZXRyaWV2ZXJJbnRlcmZhY2UuaD4KLQotI2luY2x1ZGUgIlZvcmJpc1BsYXllci5oIgotCi1uYW1lc3BhY2UgYW5kcm9pZCB7Ci0KLWNsYXNzIFZvcmJpc01ldGFkYXRhUmV0cmlldmVyIDogcHVibGljIE1lZGlhTWV0YWRhdGFSZXRyaWV2ZXJJbnRlcmZhY2UgewotcHVibGljOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWb3JiaXNNZXRhZGF0YVJldHJpZXZlcigpIHt9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH5Wb3JiaXNNZXRhZGF0YVJldHJpZXZlcigpIHt9Ci0KLSAgICB2aXJ0dWFsIHN0YXR1c190ICAgICAgICAgICAgICAgIHNldERhdGFTb3VyY2UoY29uc3QgY2hhciAqdXJsKTsKLSAgICB2aXJ0dWFsIHN0YXR1c190ICAgICAgICAgICAgICAgIHNldERhdGFTb3VyY2UoaW50IGZkLCBpbnQ2NF90IG9mZnNldCwgaW50NjRfdCBsZW5ndGgpOwotICAgIHZpcnR1YWwgY29uc3QgY2hhciogICAgICAgICAgICAgZXh0cmFjdE1ldGFkYXRhKGludCBrZXlDb2RlKTsKLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3QgdWludDMyX3QgTUFYX01FVEFEQVRBX1NUUklOR19MRU5HVEggPSAxMjg7Ci0gICAgdm9pZCBjbGVhck1ldGFkYXRhVmFsdWVzKCk7Ci0KLSAgICBNdXRleCAgICAgICAgICAgICAgIG1Mb2NrOwotICAgIHNwPFZvcmJpc1BsYXllcj4gICAgbVZvcmJpc1BsYXllcjsKLSAgICBjaGFyICAgICAgICAgICAgICAgIG1NZXRhZGF0YVZhbHVlc1sxXVtNQVhfTUVUQURBVEFfU1RSSU5HX0xFTkdUSF07Ci19OwotCi19OyAvLyBuYW1lc3BhY2UgYW5kcm9pZAotCi0jZW5kaWYgLy8gQU5EUk9JRF9WT1JCSVNNRVRBREFUQVJFVFJJRVZFUl9ICmRpZmYgLS1naXQgYS9tZWRpYS9saWJtZWRpYXBsYXllcnNlcnZpY2UvVm9yYmlzUGxheWVyLmNwcCBiL21lZGlhL2xpYm1lZGlhcGxheWVyc2VydmljZS9Wb3JiaXNQbGF5ZXIuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MTgxOTk5Li4wMDAwMDAwCi0tLSBhL21lZGlhL2xpYm1lZGlhcGxheWVyc2VydmljZS9Wb3JiaXNQbGF5ZXIuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNTI5ICswLDAgQEAKLS8qCi0qKiBDb3B5cmlnaHQgMjAwNywgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotKioKLSoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0qKgotKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotKioKLSoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0qKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotKi8KLQotLy8jZGVmaW5lIExPR19OREVCVUcgMAotI2RlZmluZSBMT0dfVEFHICJWb3JiaXNQbGF5ZXIiCi0jaW5jbHVkZSAidXRpbHMvTG9nLmgiCi0KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPGFzc2VydC5oPgotI2luY2x1ZGUgPGxpbWl0cy5oPgotI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2luY2x1ZGUgPGZjbnRsLmg+Ci0jaW5jbHVkZSA8c2NoZWQuaD4KLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotCi0KLSNpbmNsdWRlICJWb3JiaXNQbGF5ZXIuaCIKLQotI2lmZGVmIEhBVkVfR0VUVElECi1zdGF0aWMgcGlkX3QgbXlUaWQoKSB7IHJldHVybiBnZXR0aWQoKTsgfQotI2Vsc2UKLXN0YXRpYyBwaWRfdCBteVRpZCgpIHsgcmV0dXJuIGdldHBpZCgpOyB9Ci0jZW5kaWYKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1uYW1lc3BhY2UgYW5kcm9pZCB7Ci0KLS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLy8gVE9ETzogRGV0ZXJtaW5lIGFwcHJvcHJpYXRlIHJldHVybiBjb2Rlcwotc3RhdGljIHN0YXR1c190IEVSUk9SX05PVF9PUEVOID0gLTE7Ci1zdGF0aWMgc3RhdHVzX3QgRVJST1JfT1BFTl9GQUlMRUQgPSAtMjsKLXN0YXRpYyBzdGF0dXNfdCBFUlJPUl9BTExPQ0FURV9GQUlMRUQgPSAtNDsKLXN0YXRpYyBzdGF0dXNfdCBFUlJPUl9OT1RfU1VQUE9SVEVEID0gLTg7Ci1zdGF0aWMgc3RhdHVzX3QgRVJST1JfTk9UX1JFQURZID0gLTE2Owotc3RhdGljIHN0YXR1c190IFNUQVRFX0lOSVQgPSAwOwotc3RhdGljIHN0YXR1c190IFNUQVRFX0VSUk9SID0gMTsKLXN0YXRpYyBzdGF0dXNfdCBTVEFURV9PUEVOID0gMjsKLQotCi1Wb3JiaXNQbGF5ZXI6OlZvcmJpc1BsYXllcigpIDoKLSAgICBtQXVkaW9CdWZmZXIoTlVMTCksIG1QbGF5VGltZSgtMSksIG1EdXJhdGlvbigtMSksIG1TdGF0ZShTVEFURV9FUlJPUiksCi0gICAgbVN0cmVhbVR5cGUoQXVkaW9TeXN0ZW06Ok1VU0lDKSwgbUxvb3AoZmFsc2UpLCBtQW5kcm9pZExvb3AoZmFsc2UpLAotICAgIG1FeGl0KGZhbHNlKSwgbVBhdXNlZChmYWxzZSksIG1SZW5kZXIoZmFsc2UpLCBtUmVuZGVyVGlkKC0xKQotewotICAgIExPR1YoImNvbnN0cnVjdG9yXG4iKTsKLSAgICBtZW1zZXQoJm1Wb3JiaXNGaWxlLCAwLCBzaXplb2YgbVZvcmJpc0ZpbGUpOwotfQotCi12b2lkIFZvcmJpc1BsYXllcjo6b25GaXJzdFJlZigpCi17Ci0gICAgTE9HVigib25GaXJzdFJlZiIpOwotICAgIC8vIGNyZWF0ZSBwbGF5YmFjayB0aHJlYWQKLSAgICBNdXRleDo6QXV0b2xvY2sgbChtTXV0ZXgpOwotICAgIGNyZWF0ZVRocmVhZEV0YyhyZW5kZXJUaHJlYWQsIHRoaXMsICJ2b3JiaXMgZGVjb2RlciIsIEFORFJPSURfUFJJT1JJVFlfQVVESU8pOwotICAgIG1Db25kaXRpb24ud2FpdChtTXV0ZXgpOwotICAgIGlmIChtUmVuZGVyVGlkID4gMCkgewotICAgICAgICBMT0dWKCJyZW5kZXIgdGhyZWFkKCVkKSBzdGFydGVkIiwgbVJlbmRlclRpZCk7Ci0gICAgICAgIG1TdGF0ZSA9IFNUQVRFX0lOSVQ7Ci0gICAgfQotfQotCi1zdGF0dXNfdCBWb3JiaXNQbGF5ZXI6OmluaXRDaGVjaygpCi17Ci0gICAgaWYgKG1TdGF0ZSAhPSBTVEFURV9FUlJPUikgcmV0dXJuIE5PX0VSUk9SOwotICAgIHJldHVybiBFUlJPUl9OT1RfUkVBRFk7Ci19Ci0KLVZvcmJpc1BsYXllcjo6flZvcmJpc1BsYXllcigpIHsKLSAgICBMT0dWKCJWb3JiaXNQbGF5ZXIgZGVzdHJ1Y3RvclxuIik7Ci0gICAgcmVsZWFzZSgpOwotfQotCi1zdGF0dXNfdCBWb3JiaXNQbGF5ZXI6OnNldERhdGFTb3VyY2UoCi0gICAgICAgIGNvbnN0IGNoYXIgKnVyaSwgY29uc3QgS2V5ZWRWZWN0b3I8U3RyaW5nOCwgU3RyaW5nOD4gKmhlYWRlcnMpIHsKLSAgICByZXR1cm4gc2V0ZGF0YXNvdXJjZSh1cmksIC0xLCAwLCAweDdmZmZmZmZmZmZmZmZmZkxMKTsgLy8gaW50ZW50aW9uYWxseSBsZXNzIHRoYW4gTE9OR19NQVgKLX0KLQotc3RhdHVzX3QgVm9yYmlzUGxheWVyOjpzZXREYXRhU291cmNlKGludCBmZCwgaW50NjRfdCBvZmZzZXQsIGludDY0X3QgbGVuZ3RoKQotewotICAgIHJldHVybiBzZXRkYXRhc291cmNlKE5VTEwsIGZkLCBvZmZzZXQsIGxlbmd0aCk7Ci19Ci0KLXNpemVfdCBWb3JiaXNQbGF5ZXI6OnZwX2ZyZWFkKHZvaWQgKmJ1Ziwgc2l6ZV90IHNpemUsIHNpemVfdCBubWVtYiwgdm9pZCAqbWUpIHsKLSAgICBWb3JiaXNQbGF5ZXIgKnNlbGYgPSAoVm9yYmlzUGxheWVyKikgbWU7Ci0KLSAgICBsb25nIGN1cnBvcyA9IHZwX2Z0ZWxsKG1lKTsKLSAgICB3aGlsZSAobm1lbWIgIT0gMCAmJiAoY3VycG9zICsgc2l6ZSAqIG5tZW1iKSA+IHNlbGYtPm1MZW5ndGgpIHsKLSAgICAgICAgbm1lbWItLTsKLSAgICB9Ci0gICAgcmV0dXJuIGZyZWFkKGJ1Ziwgc2l6ZSwgbm1lbWIsIHNlbGYtPm1GaWxlKTsKLX0KLQotaW50IFZvcmJpc1BsYXllcjo6dnBfZnNlZWsodm9pZCAqbWUsIG9nZ19pbnQ2NF90IG9mZiwgaW50IHdoZW5jZSkgewotICAgIFZvcmJpc1BsYXllciAqc2VsZiA9IChWb3JiaXNQbGF5ZXIqKSBtZTsKLSAgICBpZiAod2hlbmNlID09IFNFRUtfU0VUKQotICAgICAgICByZXR1cm4gZnNlZWsoc2VsZi0+bUZpbGUsIG9mZiArIHNlbGYtPm1PZmZzZXQsIHdoZW5jZSk7Ci0gICAgZWxzZSBpZiAod2hlbmNlID09IFNFRUtfQ1VSKQotICAgICAgICByZXR1cm4gZnNlZWsoc2VsZi0+bUZpbGUsIG9mZiwgd2hlbmNlKTsKLSAgICBlbHNlIGlmICh3aGVuY2UgPT0gU0VFS19FTkQpCi0gICAgICAgIHJldHVybiBmc2VlayhzZWxmLT5tRmlsZSwgc2VsZi0+bU9mZnNldCArIHNlbGYtPm1MZW5ndGggKyBvZmYsIFNFRUtfU0VUKTsKLSAgICByZXR1cm4gLTE7Ci19Ci0KLWludCBWb3JiaXNQbGF5ZXI6OnZwX2ZjbG9zZSh2b2lkICptZSkgewotICAgIExPR1YoInZwX2ZjbG9zZSIpOwotICAgIFZvcmJpc1BsYXllciAqc2VsZiA9IChWb3JiaXNQbGF5ZXIqKSBtZTsKLSAgICBpbnQgcmV0ID0gZmNsb3NlIChzZWxmLT5tRmlsZSk7Ci0gICAgc2VsZi0+bUZpbGUgPSBOVUxMOwotICAgIHJldHVybiByZXQ7Ci19Ci0KLWxvbmcgVm9yYmlzUGxheWVyOjp2cF9mdGVsbCh2b2lkICptZSkgewotICAgIFZvcmJpc1BsYXllciAqc2VsZiA9IChWb3JiaXNQbGF5ZXIqKSBtZTsKLSAgICByZXR1cm4gZnRlbGwoc2VsZi0+bUZpbGUpIC0gc2VsZi0+bU9mZnNldDsKLX0KLQotc3RhdHVzX3QgVm9yYmlzUGxheWVyOjpzZXRkYXRhc291cmNlKGNvbnN0IGNoYXIgKnBhdGgsIGludCBmZCwgaW50NjRfdCBvZmZzZXQsIGludDY0X3QgbGVuZ3RoKQotewotICAgIExPR1YoInNldERhdGFTb3VyY2UgdXJsPSVzLCBmZD0lZFxuIiwgcGF0aCwgZmQpOwotCi0gICAgLy8gZmlsZSBzdGlsbCBvcGVuPwotICAgIE11dGV4OjpBdXRvbG9jayBsKG1NdXRleCk7Ci0gICAgaWYgKG1TdGF0ZSA9PSBTVEFURV9PUEVOKSB7Ci0gICAgICAgIHJlc2V0X25vc3luYygpOwotICAgIH0KLQotICAgIC8vIG9wZW4gZmlsZSBhbmQgc2V0IHBhdXNlZCBzdGF0ZQotICAgIGlmIChwYXRoKSB7Ci0gICAgICAgIG1GaWxlID0gZm9wZW4ocGF0aCwgInIiKTsKLSAgICB9IGVsc2UgewotICAgICAgICBtRmlsZSA9IGZkb3BlbihkdXAoZmQpLCAiciIpOwotICAgIH0KLSAgICBpZiAobUZpbGUgPT0gTlVMTCkgewotICAgICAgICByZXR1cm4gRVJST1JfT1BFTl9GQUlMRUQ7Ci0gICAgfQotCi0gICAgc3RydWN0IHN0YXQgc2I7Ci0gICAgaW50IHJldDsKLSAgICBpZiAocGF0aCkgewotICAgICAgICByZXQgPSBzdGF0KHBhdGgsICZzYik7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgcmV0ID0gZnN0YXQoZmQsICZzYik7Ci0gICAgfQotICAgIGlmIChyZXQgIT0gMCkgewotICAgICAgICBtU3RhdGUgPSBTVEFURV9FUlJPUjsKLSAgICAgICAgZmNsb3NlKG1GaWxlKTsKLSAgICAgICAgcmV0dXJuIEVSUk9SX09QRU5fRkFJTEVEOwotICAgIH0KLSAgICBpZiAoc2Iuc3Rfc2l6ZSA+IChsZW5ndGggKyBvZmZzZXQpKSB7Ci0gICAgICAgIG1MZW5ndGggPSBsZW5ndGg7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbUxlbmd0aCA9IHNiLnN0X3NpemUgLSBvZmZzZXQ7Ci0gICAgfQotCi0gICAgb3ZfY2FsbGJhY2tzIGNhbGxiYWNrcyA9IHsKLSAgICAgICAgKHNpemVfdCAoKikodm9pZCAqLCBzaXplX3QsIHNpemVfdCwgdm9pZCAqKSkgIHZwX2ZyZWFkLAotICAgICAgICAoaW50ICgqKSh2b2lkICosIG9nZ19pbnQ2NF90LCBpbnQpKSAgICAgICAgICAgdnBfZnNlZWssCi0gICAgICAgIChpbnQgKCopKHZvaWQgKikpICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2cF9mY2xvc2UsCi0gICAgICAgIChsb25nICgqKSh2b2lkICopKSAgICAgICAgICAgICAgICAgICAgICAgICAgICB2cF9mdGVsbAotICAgIH07Ci0KLSAgICBtT2Zmc2V0ID0gb2Zmc2V0OwotICAgIGZzZWVrKG1GaWxlLCBvZmZzZXQsIFNFRUtfU0VUKTsKLQotICAgIGludCByZXN1bHQgPSBvdl9vcGVuX2NhbGxiYWNrcyh0aGlzLCAmbVZvcmJpc0ZpbGUsIE5VTEwsIDAsIGNhbGxiYWNrcyk7Ci0gICAgaWYgKHJlc3VsdCA8IDApIHsKLSAgICAgICAgTE9HRSgib3Zfb3BlbigpIGZhaWxlZDogWyVkXVxuIiwgKGludClyZXN1bHQpOwotICAgICAgICBtU3RhdGUgPSBTVEFURV9FUlJPUjsKLSAgICAgICAgZmNsb3NlKG1GaWxlKTsKLSAgICAgICAgcmV0dXJuIEVSUk9SX09QRU5fRkFJTEVEOwotICAgIH0KLQotICAgIC8vIGxvb2sgZm9yIHRoZSBhbmRyb2lkIGxvb3AgdGFnICAoZm9yIHJpbmd0b25lcykKLSAgICBjaGFyICoqcHRyID0gb3ZfY29tbWVudCgmbVZvcmJpc0ZpbGUsLTEpLT51c2VyX2NvbW1lbnRzOwotICAgIHdoaWxlKCpwdHIpIHsKLSAgICAgICAgLy8gZG9lcyB0aGUgY29tbWVudCBzdGFydCB3aXRoIEFORFJPSURfTE9PUF9UQUcKLSAgICAgICAgaWYoc3RybmNtcCgqcHRyLCBBTkRST0lEX0xPT1BfVEFHLCBzdHJsZW4oQU5EUk9JRF9MT09QX1RBRykpID09IDApIHsKLSAgICAgICAgICAgIC8vIHJlYWQgdGhlIHZhbHVlIG9mIHRoZSB0YWcKLSAgICAgICAgICAgIGNoYXIgKnZhbCA9ICpwdHIgKyBzdHJsZW4oQU5EUk9JRF9MT09QX1RBRykgKyAxOwotICAgICAgICAgICAgbUFuZHJvaWRMb29wID0gKHN0cm5jbXAodmFsLCAidHJ1ZSIsIDQpID09IDApOwotICAgICAgICB9Ci0gICAgICAgIC8vIHdlIGtlZXAgcGFyc2luZyBldmVuIGFmdGVyIGZpbmRpbmcgb25lIG9jY3VyZW5jZSBvZiBBTkRST0lEX0xPT1BfVEFHLAotICAgICAgICAvLyBhcyB3ZSBjb3VsZCBmaW5kIGFub3RoZXIgb25lICAodGhlIHRhZyBtaWdodCBoYXZlIGJlZW4gYXBwZW5kZWQgbW9yZSB0aGFuIG9uY2UpLgotICAgICAgICArK3B0cjsKLSAgICB9Ci0gICAgTE9HVl9JRihtQW5kcm9pZExvb3AsICJsb29wZWQgc291bmQiKTsKLQotICAgIG1TdGF0ZSA9IFNUQVRFX09QRU47Ci0gICAgcmV0dXJuIE5PX0VSUk9SOwotfQotCi1zdGF0dXNfdCBWb3JiaXNQbGF5ZXI6OnByZXBhcmUoKQotewotICAgIExPR1YoInByZXBhcmVcbiIpOwotICAgIGlmIChtU3RhdGUgIT0gU1RBVEVfT1BFTiApIHsKLSAgICAgICAgcmV0dXJuIEVSUk9SX05PVF9PUEVOOwotICAgIH0KLSAgICByZXR1cm4gTk9fRVJST1I7Ci19Ci0KLXN0YXR1c190IFZvcmJpc1BsYXllcjo6cHJlcGFyZUFzeW5jKCkgewotICAgIExPR1YoInByZXBhcmVBc3luY1xuIik7Ci0gICAgLy8gY2FuJ3QgaG9sZCB0aGUgbG9jayBoZXJlIGJlY2F1c2Ugb2YgdGhlIGNhbGxiYWNrCi0gICAgLy8gaXQncyBzYWZlIGJlY2F1c2Ugd2UgZG9uJ3QgY2hhbmdlIHN0YXRlCi0gICAgaWYgKG1TdGF0ZSAhPSBTVEFURV9PUEVOICkgewotICAgICAgICBzZW5kRXZlbnQoTUVESUFfRVJST1IpOwotICAgICAgICByZXR1cm4gTk9fRVJST1I7Ci0gICAgfQotICAgIHNlbmRFdmVudChNRURJQV9QUkVQQVJFRCk7Ci0gICAgcmV0dXJuIE5PX0VSUk9SOwotfQotCi1zdGF0dXNfdCBWb3JiaXNQbGF5ZXI6OnN0YXJ0KCkKLXsKLSAgICBMT0dWKCJzdGFydFxuIik7Ci0gICAgTXV0ZXg6OkF1dG9sb2NrIGwobU11dGV4KTsKLSAgICBpZiAobVN0YXRlICE9IFNUQVRFX09QRU4pIHsKLSAgICAgICAgcmV0dXJuIEVSUk9SX05PVF9PUEVOOwotICAgIH0KLQotICAgIG1QYXVzZWQgPSBmYWxzZTsKLSAgICBtUmVuZGVyID0gdHJ1ZTsKLQotICAgIC8vIHdha2UgdXAgcmVuZGVyIHRocmVhZAotICAgIExPR1YoIiAgd2FrZXVwIHJlbmRlciB0aHJlYWRcbiIpOwotICAgIG1Db25kaXRpb24uc2lnbmFsKCk7Ci0gICAgcmV0dXJuIE5PX0VSUk9SOwotfQotCi1zdGF0dXNfdCBWb3JiaXNQbGF5ZXI6OnN0b3AoKQotewotICAgIExPR1YoInN0b3BcbiIpOwotICAgIE11dGV4OjpBdXRvbG9jayBsKG1NdXRleCk7Ci0gICAgaWYgKG1TdGF0ZSAhPSBTVEFURV9PUEVOKSB7Ci0gICAgICAgIHJldHVybiBFUlJPUl9OT1RfT1BFTjsKLSAgICB9Ci0gICAgbVBhdXNlZCA9IHRydWU7Ci0gICAgbVJlbmRlciA9IGZhbHNlOwotICAgIHJldHVybiBOT19FUlJPUjsKLX0KLQotc3RhdHVzX3QgVm9yYmlzUGxheWVyOjpzZWVrVG8oaW50IHBvc2l0aW9uKQotewotICAgIExPR1YoInNlZWtUbyAlZFxuIiwgcG9zaXRpb24pOwotICAgIE11dGV4OjpBdXRvbG9jayBsKG1NdXRleCk7Ci0gICAgaWYgKG1TdGF0ZSAhPSBTVEFURV9PUEVOKSB7Ci0gICAgICAgIHJldHVybiBFUlJPUl9OT1RfT1BFTjsKLSAgICB9Ci0KLSAgICBpbnQgcmVzdWx0ID0gb3ZfdGltZV9zZWVrKCZtVm9yYmlzRmlsZSwgcG9zaXRpb24pOwotICAgIGlmIChyZXN1bHQgIT0gMCkgewotICAgICAgICBMT0dFKCJvdl90aW1lX3NlZWsoKSByZXR1cm5lZCAlZFxuIiwgcmVzdWx0KTsKLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0gICAgc2VuZEV2ZW50KE1FRElBX1NFRUtfQ09NUExFVEUpOwotICAgIHJldHVybiBOT19FUlJPUjsKLX0KLQotc3RhdHVzX3QgVm9yYmlzUGxheWVyOjpwYXVzZSgpCi17Ci0gICAgTE9HVigicGF1c2VcbiIpOwotICAgIE11dGV4OjpBdXRvbG9jayBsKG1NdXRleCk7Ci0gICAgaWYgKG1TdGF0ZSAhPSBTVEFURV9PUEVOKSB7Ci0gICAgICAgIHJldHVybiBFUlJPUl9OT1RfT1BFTjsKLSAgICB9Ci0gICAgbVBhdXNlZCA9IHRydWU7Ci0gICAgcmV0dXJuIE5PX0VSUk9SOwotfQotCi1ib29sIFZvcmJpc1BsYXllcjo6aXNQbGF5aW5nKCkKLXsKLSAgICBMT0dWKCJpc1BsYXlpbmdcbiIpOwotICAgIGlmIChtU3RhdGUgPT0gU1RBVEVfT1BFTikgewotICAgICAgICByZXR1cm4gbVJlbmRlcjsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotfQotCi1zdGF0dXNfdCBWb3JiaXNQbGF5ZXI6OmdldEN1cnJlbnRQb3NpdGlvbihpbnQqIHBvc2l0aW9uKQotewotICAgIExPR1YoImdldEN1cnJlbnRQb3NpdGlvblxuIik7Ci0gICAgTXV0ZXg6OkF1dG9sb2NrIGwobU11dGV4KTsKLSAgICBpZiAobVN0YXRlICE9IFNUQVRFX09QRU4pIHsKLSAgICAgICAgTE9HRSgiZ2V0Q3VycmVudFBvc2l0aW9uKCk6IGZpbGUgbm90IG9wZW4iKTsKLSAgICAgICAgcmV0dXJuIEVSUk9SX05PVF9PUEVOOwotICAgIH0KLSAgICAqcG9zaXRpb24gPSBvdl90aW1lX3RlbGwoJm1Wb3JiaXNGaWxlKTsKLSAgICBpZiAoKnBvc2l0aW9uIDwgMCkgewotICAgICAgICBMT0dFKCJnZXRDdXJyZW50UG9zaXRpb24oKTogb3ZfdGltZV90ZWxsIHJldHVybmVkICVkIiwgKnBvc2l0aW9uKTsKLSAgICAgICAgcmV0dXJuICpwb3NpdGlvbjsKLSAgICB9Ci0gICAgcmV0dXJuIE5PX0VSUk9SOwotfQotCi1zdGF0dXNfdCBWb3JiaXNQbGF5ZXI6OmdldER1cmF0aW9uKGludCogZHVyYXRpb24pCi17Ci0gICAgTE9HVigiZ2V0RHVyYXRpb25cbiIpOwotICAgIE11dGV4OjpBdXRvbG9jayBsKG1NdXRleCk7Ci0gICAgaWYgKG1TdGF0ZSAhPSBTVEFURV9PUEVOKSB7Ci0gICAgICAgIHJldHVybiBFUlJPUl9OT1RfT1BFTjsKLSAgICB9Ci0KLSAgICBpbnQgcmV0ID0gb3ZfdGltZV90b3RhbCgmbVZvcmJpc0ZpbGUsIC0xKTsKLSAgICBpZiAocmV0ID09IE9WX0VJTlZBTCkgewotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotCi0gICAgKmR1cmF0aW9uID0gcmV0OwotICAgIHJldHVybiBOT19FUlJPUjsKLX0KLQotc3RhdHVzX3QgVm9yYmlzUGxheWVyOjpyZWxlYXNlKCkKLXsKLSAgICBMT0dWKCJyZWxlYXNlXG4iKTsKLSAgICBNdXRleDo6QXV0b2xvY2sgbChtTXV0ZXgpOwotICAgIHJlc2V0X25vc3luYygpOwotCi0gICAgLy8gVE9ETzogdGltZW91dCB3aGVuIHRocmVhZCB3b24ndCBleGl0Ci0gICAgLy8gd2FpdCBmb3IgcmVuZGVyIHRocmVhZCB0byBleGl0Ci0gICAgaWYgKG1SZW5kZXJUaWQgPiAwKSB7Ci0gICAgICAgIG1FeGl0ID0gdHJ1ZTsKLSAgICAgICAgbUNvbmRpdGlvbi5zaWduYWwoKTsKLSAgICAgICAgbUNvbmRpdGlvbi53YWl0KG1NdXRleCk7Ci0gICAgfQotICAgIHJldHVybiBOT19FUlJPUjsKLX0KLQotc3RhdHVzX3QgVm9yYmlzUGxheWVyOjpyZXNldCgpCi17Ci0gICAgTE9HVigicmVzZXRcbiIpOwotICAgIE11dGV4OjpBdXRvbG9jayBsKG1NdXRleCk7Ci0gICAgcmV0dXJuIHJlc2V0X25vc3luYygpOwotfQotCi0vLyBhbHdheXMgY2FsbCB3aXRoIGxvY2sgaGVsZAotc3RhdHVzX3QgVm9yYmlzUGxheWVyOjpyZXNldF9ub3N5bmMoKQotewotICAgIC8vIGNsb3NlIGZpbGUKLSAgICBpZiAobUZpbGUgIT0gTlVMTCkgewotICAgICAgICBvdl9jbGVhcigmbVZvcmJpc0ZpbGUpOyAvLyB0aGlzIGFsc28gY2xvc2VzIHRoZSBGSUxFCi0gICAgICAgIGlmIChtRmlsZSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBMT0dWKCJPT1BTISBWb3JiaXMgZGlkbid0IGNsb3NlIHRoZSBmaWxlIik7Ci0gICAgICAgICAgICBmY2xvc2UobUZpbGUpOwotICAgICAgICAgICAgbUZpbGUgPSBOVUxMOwotICAgICAgICB9Ci0gICAgfQotICAgIG1TdGF0ZSA9IFNUQVRFX0VSUk9SOwotCi0gICAgbVBsYXlUaW1lID0gLTE7Ci0gICAgbUR1cmF0aW9uID0gLTE7Ci0gICAgbUxvb3AgPSBmYWxzZTsKLSAgICBtQW5kcm9pZExvb3AgPSBmYWxzZTsKLSAgICBtUGF1c2VkID0gZmFsc2U7Ci0gICAgbVJlbmRlciA9IGZhbHNlOwotICAgIHJldHVybiBOT19FUlJPUjsKLX0KLQotc3RhdHVzX3QgVm9yYmlzUGxheWVyOjpzZXRMb29waW5nKGludCBsb29wKQotewotICAgIExPR1YoInNldExvb3BpbmdcbiIpOwotICAgIE11dGV4OjpBdXRvbG9jayBsKG1NdXRleCk7Ci0gICAgbUxvb3AgPSAobG9vcCAhPSAwKTsKLSAgICByZXR1cm4gTk9fRVJST1I7Ci19Ci0KLXN0YXR1c190IFZvcmJpc1BsYXllcjo6Y3JlYXRlT3V0cHV0VHJhY2soKSB7Ci0gICAgLy8gb3BlbiBhdWRpbyB0cmFjawotICAgIHZvcmJpc19pbmZvICp2aSA9IG92X2luZm8oJm1Wb3JiaXNGaWxlLCAtMSk7Ci0KLSAgICBMT0dWKCJDcmVhdGUgQXVkaW9UcmFjayBvYmplY3Q6IHJhdGU9JWxkLCBjaGFubmVscz0lZFxuIiwKLSAgICAgICAgICAgIHZpLT5yYXRlLCB2aS0+Y2hhbm5lbHMpOwotICAgIGlmIChtQXVkaW9TaW5rLT5vcGVuKHZpLT5yYXRlLCB2aS0+Y2hhbm5lbHMsIEF1ZGlvU3lzdGVtOjpQQ01fMTZfQklULCBERUZBVUxUX0FVRElPU0lOS19CVUZGRVJDT1VOVCkgIT0gTk9fRVJST1IpIHsKLSAgICAgICAgTE9HRSgibUF1ZGlvU2luayBvcGVuIGZhaWxlZCIpOwotICAgICAgICByZXR1cm4gRVJST1JfT1BFTl9GQUlMRUQ7Ci0gICAgfQotICAgIHJldHVybiBOT19FUlJPUjsKLX0KLQotaW50IFZvcmJpc1BsYXllcjo6cmVuZGVyVGhyZWFkKHZvaWQqIHApIHsKLSAgICByZXR1cm4gKChWb3JiaXNQbGF5ZXIqKXApLT5yZW5kZXIoKTsKLX0KLQotI2RlZmluZSBBVURJT0JVRkZFUl9TSVpFIDQwOTYKLQotaW50IFZvcmJpc1BsYXllcjo6cmVuZGVyKCkgewotICAgIGludCByZXN1bHQgPSAtMTsKLSAgICBpbnQgdGVtcDsKLSAgICBpbnQgY3VycmVudF9zZWN0aW9uID0gMDsKLSAgICBib29sIGF1ZGlvU3RhcnRlZCA9IGZhbHNlOwotCi0gICAgTE9HVigicmVuZGVyXG4iKTsKLQotICAgIC8vIGFsbG9jYXRlIHJlbmRlciBidWZmZXIKLSAgICBtQXVkaW9CdWZmZXIgPSBuZXcgY2hhcltBVURJT0JVRkZFUl9TSVpFXTsKLSAgICBpZiAoIW1BdWRpb0J1ZmZlcikgewotICAgICAgICBMT0dFKCJtQXVkaW9CdWZmZXIgYWxsb2NhdGUgZmFpbGVkXG4iKTsKLSAgICAgICAgZ290byB0aHJlYWRFeGl0OwotICAgIH0KLQotICAgIC8vIGxldCBtYWluIHRocmVhZCBrbm93IHdlJ3JlIHJlYWR5Ci0gICAgewotICAgICAgICBNdXRleDo6QXV0b2xvY2sgbChtTXV0ZXgpOwotICAgICAgICBtUmVuZGVyVGlkID0gbXlUaWQoKTsKLSAgICAgICAgbUNvbmRpdGlvbi5zaWduYWwoKTsKLSAgICB9Ci0KLSAgICB3aGlsZSAoMSkgewotICAgICAgICBsb25nIG51bXJlYWQgPSAwOwotICAgICAgICB7Ci0gICAgICAgICAgICBNdXRleDo6QXV0b2xvY2sgbChtTXV0ZXgpOwotCi0gICAgICAgICAgICAvLyBwYXVzaW5nPwotICAgICAgICAgICAgaWYgKG1QYXVzZWQpIHsKLSAgICAgICAgICAgICAgICBpZiAobUF1ZGlvU2luay0+cmVhZHkoKSkgbUF1ZGlvU2luay0+cGF1c2UoKTsKLSAgICAgICAgICAgICAgICBtUmVuZGVyID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgYXVkaW9TdGFydGVkID0gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIG5vdGhpbmcgdG8gcmVuZGVyLCB3YWl0IGZvciBjbGllbnQgdGhyZWFkIHRvIHdha2UgdXMgdXAKLSAgICAgICAgICAgIGlmICghbUV4aXQgJiYgIW1SZW5kZXIpIHsKLSAgICAgICAgICAgICAgICBMT0dWKCJyZW5kZXIgLSBzaWduYWwgd2FpdFxuIik7Ci0gICAgICAgICAgICAgICAgbUNvbmRpdGlvbi53YWl0KG1NdXRleCk7Ci0gICAgICAgICAgICAgICAgTE9HVigicmVuZGVyIC0gc2lnbmFsIHJ4J2RcbiIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG1FeGl0KSBicmVhazsKLQotICAgICAgICAgICAgLy8gV2UgY291bGQgZW5kIHVwIGhlcmUgaWYgc3RhcnQoKSBpcyBjYWxsZWQsIGFuZCBiZWZvcmUgd2UgZ2V0IGEKLSAgICAgICAgICAgIC8vIGNoYW5jZSB0byBydW4sIHRoZSBhcHAgY2FsbHMgc3RvcCgpIG9yIHJlc2V0KCkuIFJlLWNoZWNrIHJlbmRlcgotICAgICAgICAgICAgLy8gZmxhZyBzbyB3ZSBkb24ndCB0cnkgdG8gcmVuZGVyIGluIHN0b3Agb3IgcmVzZXQgc3RhdGUuCi0gICAgICAgICAgICBpZiAoIW1SZW5kZXIpIGNvbnRpbnVlOwotCi0gICAgICAgICAgICAvLyByZW5kZXIgdm9yYmlzIGRhdGEgaW50byB0aGUgaW5wdXQgYnVmZmVyCi0gICAgICAgICAgICBudW1yZWFkID0gb3ZfcmVhZCgmbVZvcmJpc0ZpbGUsIG1BdWRpb0J1ZmZlciwgQVVESU9CVUZGRVJfU0laRSwgJmN1cnJlbnRfc2VjdGlvbik7Ci0gICAgICAgICAgICBpZiAobnVtcmVhZCA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgLy8gZW5kIG9mIGZpbGUsIGRvIHdlIG5lZWQgdG8gbG9vcD8KLSAgICAgICAgICAgICAgICAvLyAuLi4KLSAgICAgICAgICAgICAgICBpZiAobUxvb3AgfHwgbUFuZHJvaWRMb29wKSB7Ci0gICAgICAgICAgICAgICAgICAgIG92X3RpbWVfc2VlaygmbVZvcmJpc0ZpbGUsIDApOwotICAgICAgICAgICAgICAgICAgICBjdXJyZW50X3NlY3Rpb24gPSAwOwotICAgICAgICAgICAgICAgICAgICBudW1yZWFkID0gb3ZfcmVhZCgmbVZvcmJpc0ZpbGUsIG1BdWRpb0J1ZmZlciwgQVVESU9CVUZGRVJfU0laRSwgJmN1cnJlbnRfc2VjdGlvbik7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgbUF1ZGlvU2luay0+c3RvcCgpOwotICAgICAgICAgICAgICAgICAgICBhdWRpb1N0YXJ0ZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgbVJlbmRlciA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICBtUGF1c2VkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgaW50IGVuZHBvcyA9IG92X3RpbWVfdGVsbCgmbVZvcmJpc0ZpbGUpOwotCi0gICAgICAgICAgICAgICAgICAgIExPR1YoInNlbmQgTUVESUFfUExBWUJBQ0tfQ09NUExFVEUiKTsKLSAgICAgICAgICAgICAgICAgICAgc2VuZEV2ZW50KE1FRElBX1BMQVlCQUNLX0NPTVBMRVRFKTsKLQotICAgICAgICAgICAgICAgICAgICAvLyB3YWl0IHVudGlsIHdlJ3JlIHN0YXJ0ZWQgYWdhaW4KLSAgICAgICAgICAgICAgICAgICAgTE9HVigicGxheWJhY2sgY29tcGxldGUgLSB3YWl0IGZvciBzaWduYWwiKTsKLSAgICAgICAgICAgICAgICAgICAgbUNvbmRpdGlvbi53YWl0KG1NdXRleCk7Ci0gICAgICAgICAgICAgICAgICAgIExPR1YoInBsYXliYWNrIGNvbXBsZXRlIC0gc2lnbmFsIHJ4J2QiKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1FeGl0KSBicmVhazsKLQotICAgICAgICAgICAgICAgICAgICAvLyBpZiB3ZSdyZSBzdGlsbCBhdCB0aGUgZW5kLCByZXN0YXJ0IGZyb20gdGhlIGJlZ2lubmluZwotICAgICAgICAgICAgICAgICAgICBpZiAobVN0YXRlID09IFNUQVRFX09QRU4pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBjdXJwb3MgPSBvdl90aW1lX3RlbGwoJm1Wb3JiaXNGaWxlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJwb3MgPT0gZW5kcG9zKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZfdGltZV9zZWVrKCZtVm9yYmlzRmlsZSwgMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X3NlY3Rpb24gPSAwOwotICAgICAgICAgICAgICAgICAgICAgICAgbnVtcmVhZCA9IG92X3JlYWQoJm1Wb3JiaXNGaWxlLCBtQXVkaW9CdWZmZXIsIEFVRElPQlVGRkVSX1NJWkUsICZjdXJyZW50X3NlY3Rpb24pOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gY29kZWMgcmV0dXJucyBuZWdhdGl2ZSBudW1iZXIgb24gZXJyb3IKLSAgICAgICAgaWYgKG51bXJlYWQgPCAwKSB7Ci0gICAgICAgICAgICBMT0dFKCJFcnJvciBpbiBWb3JiaXMgZGVjb2RlciIpOwotICAgICAgICAgICAgc2VuZEV2ZW50KE1FRElBX0VSUk9SKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gY3JlYXRlIGF1ZGlvIG91dHB1dCB0cmFjayBpZiBuZWNlc3NhcnkKLSAgICAgICAgaWYgKCFtQXVkaW9TaW5rLT5yZWFkeSgpKSB7Ci0gICAgICAgICAgICBMT0dWKCJyZW5kZXIgLSBjcmVhdGUgb3V0cHV0IHRyYWNrXG4iKTsKLSAgICAgICAgICAgIGlmIChjcmVhdGVPdXRwdXRUcmFjaygpICE9IE5PX0VSUk9SKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gV3JpdGUgZGF0YSB0byB0aGUgYXVkaW8gaGFyZHdhcmUKLSAgICAgICAgaWYgKCh0ZW1wID0gbUF1ZGlvU2luay0+d3JpdGUobUF1ZGlvQnVmZmVyLCBudW1yZWFkKSkgPCAwKSB7Ci0gICAgICAgICAgICBMT0dFKCJFcnJvciBpbiB3cml0aW5nOiVkIix0ZW1wKTsKLSAgICAgICAgICAgIHJlc3VsdCA9IHRlbXA7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIHN0YXJ0IGF1ZGlvIG91dHB1dCBpZiBuZWNlc3NhcnkKLSAgICAgICAgaWYgKCFhdWRpb1N0YXJ0ZWQgJiYgIW1QYXVzZWQgJiYgIW1FeGl0KSB7Ci0gICAgICAgICAgICBMT0dWKCJyZW5kZXIgLSBzdGFydGluZyBhdWRpb1xuIik7Ci0gICAgICAgICAgICBtQXVkaW9TaW5rLT5zdGFydCgpOwotICAgICAgICAgICAgYXVkaW9TdGFydGVkID0gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLQotdGhyZWFkRXhpdDoKLSAgICBtQXVkaW9TaW5rLmNsZWFyKCk7Ci0gICAgaWYgKG1BdWRpb0J1ZmZlcikgewotICAgICAgICBkZWxldGUgW10gbUF1ZGlvQnVmZmVyOwotICAgICAgICBtQXVkaW9CdWZmZXIgPSBOVUxMOwotICAgIH0KLQotICAgIC8vIHRlbGwgbWFpbiB0aHJlYWQgZ29vZGJ5ZQotICAgIE11dGV4OjpBdXRvbG9jayBsKG1NdXRleCk7Ci0gICAgbVJlbmRlclRpZCA9IC0xOwotICAgIG1Db25kaXRpb24uc2lnbmFsKCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotfSAvLyBlbmQgbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL21lZGlhL2xpYm1lZGlhcGxheWVyc2VydmljZS9Wb3JiaXNQbGF5ZXIuaCBiL21lZGlhL2xpYm1lZGlhcGxheWVyc2VydmljZS9Wb3JiaXNQbGF5ZXIuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGE1MDgzNS4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJtZWRpYXBsYXllcnNlcnZpY2UvVm9yYmlzUGxheWVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw5NCArMCwwIEBACi0vKgotKioKLSoqIENvcHlyaWdodCAyMDA4LCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0qKgotKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0qKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0qKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSoqCi0qKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0qKgotKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0qLwotCi0jaWZuZGVmIEFORFJPSURfVk9SQklTUExBWUVSX0gKLSNkZWZpbmUgQU5EUk9JRF9WT1JCSVNQTEFZRVJfSAotCi0jaW5jbHVkZSA8dXRpbHMvdGhyZWFkcy5oPgotCi0jaW5jbHVkZSA8bWVkaWEvTWVkaWFQbGF5ZXJJbnRlcmZhY2UuaD4KLSNpbmNsdWRlIDxtZWRpYS9BdWRpb1RyYWNrLmg+Ci0KLSNpbmNsdWRlICJpdm9yYmlzY29kZWMuaCIKLSNpbmNsdWRlICJpdm9yYmlzZmlsZS5oIgotCi0jZGVmaW5lIEFORFJPSURfTE9PUF9UQUcgIkFORFJPSURfTE9PUCIKLQotbmFtZXNwYWNlIGFuZHJvaWQgewotCi1jbGFzcyBWb3JiaXNQbGF5ZXIgOiBwdWJsaWMgTWVkaWFQbGF5ZXJJbnRlcmZhY2UgewotcHVibGljOgotICAgICAgICAgICAgICAgICAgICAgICAgVm9yYmlzUGxheWVyKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB+Vm9yYmlzUGxheWVyKCk7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgICAgICAgIG9uRmlyc3RSZWYoKTsKLSAgICB2aXJ0dWFsIHN0YXR1c190ICAgIGluaXRDaGVjaygpOwotCi0gICAgdmlydHVhbCBzdGF0dXNfdCAgICBzZXREYXRhU291cmNlKAotICAgICAgICAgICAgY29uc3QgY2hhciAqdXJpLCBjb25zdCBLZXllZFZlY3RvcjxTdHJpbmc4LCBTdHJpbmc4PiAqaGVhZGVycyk7Ci0KLSAgICB2aXJ0dWFsIHN0YXR1c190ICAgIHNldERhdGFTb3VyY2UoaW50IGZkLCBpbnQ2NF90IG9mZnNldCwgaW50NjRfdCBsZW5ndGgpOwotICAgIHZpcnR1YWwgc3RhdHVzX3QgICAgc2V0VmlkZW9TdXJmYWNlKGNvbnN0IHNwPElTdXJmYWNlPiYgc3VyZmFjZSkgeyByZXR1cm4gVU5LTk9XTl9FUlJPUjsgfQotICAgIHZpcnR1YWwgc3RhdHVzX3QgICAgcHJlcGFyZSgpOwotICAgIHZpcnR1YWwgc3RhdHVzX3QgICAgcHJlcGFyZUFzeW5jKCk7Ci0gICAgdmlydHVhbCBzdGF0dXNfdCAgICBzdGFydCgpOwotICAgIHZpcnR1YWwgc3RhdHVzX3QgICAgc3RvcCgpOwotICAgIHZpcnR1YWwgc3RhdHVzX3QgICAgc2Vla1RvKGludCBtc2VjKTsKLSAgICB2aXJ0dWFsIHN0YXR1c190ICAgIHBhdXNlKCk7Ci0gICAgdmlydHVhbCBib29sICAgICAgICBpc1BsYXlpbmcoKTsKLSAgICB2aXJ0dWFsIHN0YXR1c190ICAgIGdldEN1cnJlbnRQb3NpdGlvbihpbnQqIG1zZWMpOwotICAgIHZpcnR1YWwgc3RhdHVzX3QgICAgZ2V0RHVyYXRpb24oaW50KiBtc2VjKTsKLSAgICB2aXJ0dWFsIHN0YXR1c190ICAgIHJlbGVhc2UoKTsKLSAgICB2aXJ0dWFsIHN0YXR1c190ICAgIHJlc2V0KCk7Ci0gICAgdmlydHVhbCBzdGF0dXNfdCAgICBzZXRMb29waW5nKGludCBsb29wKTsKLSAgICB2aXJ0dWFsIHBsYXllcl90eXBlIHBsYXllclR5cGUoKSB7IHJldHVybiBWT1JCSVNfUExBWUVSOyB9Ci0gICAgdmlydHVhbCBzdGF0dXNfdCAgICBpbnZva2UoY29uc3QgUGFyY2VsJiByZXF1ZXN0LCBQYXJjZWwgKnJlcGx5KSB7cmV0dXJuIElOVkFMSURfT1BFUkFUSU9OO30KLQotcHJpdmF0ZToKLSAgICAgICAgICAgIHN0YXR1c190ICAgIHNldGRhdGFzb3VyY2UoY29uc3QgY2hhciAqcGF0aCwgaW50IGZkLCBpbnQ2NF90IG9mZnNldCwgaW50NjRfdCBsZW5ndGgpOwotICAgICAgICAgICAgc3RhdHVzX3QgICAgcmVzZXRfbm9zeW5jKCk7Ci0gICAgICAgICAgICBzdGF0dXNfdCAgICBjcmVhdGVPdXRwdXRUcmFjaygpOwotICAgIHN0YXRpYyAgaW50ICAgICAgICAgcmVuZGVyVGhyZWFkKHZvaWQqKTsKLSAgICAgICAgICAgIGludCAgICAgICAgIHJlbmRlcigpOwotCi0gICAgc3RhdGljICBzaXplX3QgICAgICB2cF9mcmVhZCh2b2lkICosIHNpemVfdCwgc2l6ZV90LCB2b2lkICopOwotICAgIHN0YXRpYyAgaW50ICAgICAgICAgdnBfZnNlZWsodm9pZCAqLCBvZ2dfaW50NjRfdCwgaW50KTsKLSAgICBzdGF0aWMgIGludCAgICAgICAgIHZwX2ZjbG9zZSh2b2lkICopOwotICAgIHN0YXRpYyAgbG9uZyAgICAgICAgdnBfZnRlbGwodm9pZCAqKTsKLQotICAgIE11dGV4ICAgICAgICAgICAgICAgbU11dGV4OwotICAgIENvbmRpdGlvbiAgICAgICAgICAgbUNvbmRpdGlvbjsKLSAgICBGSUxFKiAgICAgICAgICAgICAgIG1GaWxlOwotICAgIGludDY0X3QgICAgICAgICAgICAgbU9mZnNldDsKLSAgICBpbnQ2NF90ICAgICAgICAgICAgIG1MZW5ndGg7Ci0gICAgT2dnVm9yYmlzX0ZpbGUgICAgICBtVm9yYmlzRmlsZTsKLSAgICBjaGFyKiAgICAgICAgICAgICAgIG1BdWRpb0J1ZmZlcjsKLSAgICBpbnQgICAgICAgICAgICAgICAgIG1QbGF5VGltZTsKLSAgICBpbnQgICAgICAgICAgICAgICAgIG1EdXJhdGlvbjsKLSAgICBzdGF0dXNfdCAgICAgICAgICAgIG1TdGF0ZTsKLSAgICBpbnQgICAgICAgICAgICAgICAgIG1TdHJlYW1UeXBlOwotICAgIGJvb2wgICAgICAgICAgICAgICAgbUxvb3A7Ci0gICAgYm9vbCAgICAgICAgICAgICAgICBtQW5kcm9pZExvb3A7Ci0gICAgdm9sYXRpbGUgYm9vbCAgICAgICBtRXhpdDsKLSAgICBib29sICAgICAgICAgICAgICAgIG1QYXVzZWQ7Ci0gICAgdm9sYXRpbGUgYm9vbCAgICAgICBtUmVuZGVyOwotICAgIHBpZF90ICAgICAgICAgICAgICAgbVJlbmRlclRpZDsKLX07Ci0KLX07IC8vIG5hbWVzcGFjZSBhbmRyb2lkCi0KLSNlbmRpZiAvLyBBTkRST0lEX1ZPUkJJU1BMQVlFUl9ICmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9BTVJXcml0ZXIuY3BwIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvQU1SV3JpdGVyLmNwcAppbmRleCBiZjQ0MjRiLi5jNzE3NDNlIDEwMDY0NAotLS0gYS9tZWRpYS9saWJzdGFnZWZyaWdodC9BTVJXcml0ZXIuY3BwCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L0FNUldyaXRlci5jcHAKQEAgLTIyLDE5ICsyMiwyNCBAQAogI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhRXJyb3JzLmg+CiAjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFTb3VyY2UuaD4KICNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZXRhRGF0YS5oPgorI2luY2x1ZGUgPG1lZGlhL21lZGlhcmVjb3JkZXIuaD4KIAogbmFtZXNwYWNlIGFuZHJvaWQgewogCiBBTVJXcml0ZXI6OkFNUldyaXRlcihjb25zdCBjaGFyICpmaWxlbmFtZSkKICAgICA6IG1GaWxlKGZvcGVuKGZpbGVuYW1lLCAid2IiKSksCiAgICAgICBtSW5pdENoZWNrKG1GaWxlICE9IE5VTEwgPyBPSyA6IE5PX0lOSVQpLAotICAgICAgbVN0YXJ0ZWQoZmFsc2UpIHsKKyAgICAgIG1TdGFydGVkKGZhbHNlKSwKKyAgICAgIG1QYXVzZWQoZmFsc2UpLAorICAgICAgbVJlc3VtZWQoZmFsc2UpIHsKIH0KIAogQU1SV3JpdGVyOjpBTVJXcml0ZXIoaW50IGZkKQogICAgIDogbUZpbGUoZmRvcGVuKGZkLCAid2IiKSksCiAgICAgICBtSW5pdENoZWNrKG1GaWxlICE9IE5VTEwgPyBPSyA6IE5PX0lOSVQpLAotICAgICAgbVN0YXJ0ZWQoZmFsc2UpIHsKKyAgICAgIG1TdGFydGVkKGZhbHNlKSwKKyAgICAgIG1QYXVzZWQoZmFsc2UpLAorICAgICAgbVJlc3VtZWQoZmFsc2UpIHsKIH0KIAogQU1SV3JpdGVyOjp+QU1SV3JpdGVyKCkgewpAQCAtNTMsOCArNTgsNiBAQAogfQogCiBzdGF0dXNfdCBBTVJXcml0ZXI6OmFkZFNvdXJjZShjb25zdCBzcDxNZWRpYVNvdXJjZT4gJnNvdXJjZSkgewotICAgIE11dGV4OjpBdXRvbG9jayBhdXRvTG9jayhtTG9jayk7Ci0KICAgICBpZiAobUluaXRDaGVjayAhPSBPSykgewogICAgICAgICByZXR1cm4gbUluaXRDaGVjazsKICAgICB9CkBAIC05NCwxNyArOTcsMjQgQEAKICAgICByZXR1cm4gT0s7CiB9CiAKLXN0YXR1c190IEFNUldyaXRlcjo6c3RhcnQoKSB7Ci0gICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKLQorc3RhdHVzX3QgQU1SV3JpdGVyOjpzdGFydChNZXRhRGF0YSAqcGFyYW1zKSB7CiAgICAgaWYgKG1Jbml0Q2hlY2sgIT0gT0spIHsKICAgICAgICAgcmV0dXJuIG1Jbml0Q2hlY2s7CiAgICAgfQogCi0gICAgaWYgKG1TdGFydGVkIHx8IG1Tb3VyY2UgPT0gTlVMTCkgeworICAgIGlmIChtU291cmNlID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIFVOS05PV05fRVJST1I7CiAgICAgfQogCisgICAgaWYgKG1TdGFydGVkICYmIG1QYXVzZWQpIHsKKyAgICAgICAgbVBhdXNlZCA9IGZhbHNlOworICAgICAgICBtUmVzdW1lZCA9IHRydWU7CisgICAgICAgIHJldHVybiBPSzsKKyAgICB9IGVsc2UgaWYgKG1TdGFydGVkKSB7CisgICAgICAgIC8vIEFscmVhZHkgc3RhcnRlZCwgZG9lcyBub3RoaW5nCisgICAgICAgIHJldHVybiBPSzsKKyAgICB9CisKICAgICBzdGF0dXNfdCBlcnIgPSBtU291cmNlLT5zdGFydCgpOwogCiAgICAgaWYgKGVyciAhPSBPSykgewpAQCAtMTI2LDE2ICsxMzYsMTkgQEAKICAgICByZXR1cm4gT0s7CiB9CiAKLXZvaWQgQU1SV3JpdGVyOjpzdG9wKCkgewotICAgIHsKLSAgICAgICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKLQotICAgICAgICBpZiAoIW1TdGFydGVkKSB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBtRG9uZSA9IHRydWU7Cit2b2lkIEFNUldyaXRlcjo6cGF1c2UoKSB7CisgICAgaWYgKCFtU3RhcnRlZCkgeworICAgICAgICByZXR1cm47CiAgICAgfQorICAgIG1QYXVzZWQgPSB0cnVlOworfQorCit2b2lkIEFNUldyaXRlcjo6c3RvcCgpIHsKKyAgICBpZiAoIW1TdGFydGVkKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtRG9uZSA9IHRydWU7CiAKICAgICB2b2lkICpkdW1teTsKICAgICBwdGhyZWFkX2pvaW4obVRocmVhZCwgJmR1bW15KTsKQEAgLTE0NSw2ICsxNTgsMjAgQEAKICAgICBtU3RhcnRlZCA9IGZhbHNlOwogfQogCitib29sIEFNUldyaXRlcjo6ZXhjZWVkc0ZpbGVTaXplTGltaXQoKSB7CisgICAgaWYgKG1NYXhGaWxlU2l6ZUxpbWl0Qnl0ZXMgPT0gMCkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiBtRXN0aW1hdGVkU2l6ZUJ5dGVzID49IG1NYXhGaWxlU2l6ZUxpbWl0Qnl0ZXM7Cit9CisKK2Jvb2wgQU1SV3JpdGVyOjpleGNlZWRzRmlsZUR1cmF0aW9uTGltaXQoKSB7CisgICAgaWYgKG1NYXhGaWxlRHVyYXRpb25MaW1pdFVzID09IDApIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKyAgICByZXR1cm4gbUVzdGltYXRlZER1cmF0aW9uVXMgPj0gbU1heEZpbGVEdXJhdGlvbkxpbWl0VXM7Cit9CisKIC8vIHN0YXRpYwogdm9pZCAqQU1SV3JpdGVyOjpUaHJlYWRXcmFwcGVyKHZvaWQgKm1lKSB7CiAgICAgc3RhdGljX2Nhc3Q8QU1SV3JpdGVyICo+KG1lKS0+dGhyZWFkRnVuYygpOwpAQCAtMTUzLDEzICsxODAsMTMgQEAKIH0KIAogdm9pZCBBTVJXcml0ZXI6OnRocmVhZEZ1bmMoKSB7Ci0gICAgZm9yICg7OykgewotICAgICAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobUxvY2spOworICAgIG1Fc3RpbWF0ZWREdXJhdGlvblVzID0gMDsKKyAgICBtRXN0aW1hdGVkU2l6ZUJ5dGVzID0gMDsKKyAgICBib29sIHN0b3BwZWRQcmVtYXR1cmVseSA9IHRydWU7CisgICAgaW50NjRfdCBwcmV2aW91c1BhdXNlZER1cmF0aW9uVXMgPSAwOworICAgIGludDY0X3QgbWF4VGltZXN0YW1wVXMgPSAwOwogCi0gICAgICAgIGlmIChtRG9uZSkgewotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQorICAgIHdoaWxlICghbURvbmUpIHsKICAgICAgICAgTWVkaWFCdWZmZXIgKmJ1ZmZlcjsKICAgICAgICAgc3RhdHVzX3QgZXJyID0gbVNvdXJjZS0+cmVhZCgmYnVmZmVyKTsKIApAQCAtMTY3LDYgKzE5NCw0MiBAQAogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAobVBhdXNlZCkgeworICAgICAgICAgICAgYnVmZmVyLT5yZWxlYXNlKCk7CisgICAgICAgICAgICBidWZmZXIgPSBOVUxMOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBtRXN0aW1hdGVkU2l6ZUJ5dGVzICs9IGJ1ZmZlci0+cmFuZ2VfbGVuZ3RoKCk7CisgICAgICAgIGlmIChleGNlZWRzRmlsZVNpemVMaW1pdCgpKSB7CisgICAgICAgICAgICBidWZmZXItPnJlbGVhc2UoKTsKKyAgICAgICAgICAgIGJ1ZmZlciA9IE5VTEw7CisgICAgICAgICAgICBub3RpZnkoTUVESUFfUkVDT1JERVJfRVZFTlRfSU5GTywgTUVESUFfUkVDT1JERVJfSU5GT19NQVhfRklMRVNJWkVfUkVBQ0hFRCwgMCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGludDY0X3QgdGltZXN0YW1wVXM7CisgICAgICAgIENIRUNLKGJ1ZmZlci0+bWV0YV9kYXRhKCktPmZpbmRJbnQ2NChrS2V5VGltZSwgJnRpbWVzdGFtcFVzKSk7CisgICAgICAgIGlmICh0aW1lc3RhbXBVcyA+IG1Fc3RpbWF0ZWREdXJhdGlvblVzKSB7CisgICAgICAgICAgICBtRXN0aW1hdGVkRHVyYXRpb25VcyA9IHRpbWVzdGFtcFVzOworICAgICAgICB9CisgICAgICAgIGlmIChtUmVzdW1lZCkgeworICAgICAgICAgICAgcHJldmlvdXNQYXVzZWREdXJhdGlvblVzICs9ICh0aW1lc3RhbXBVcyAtIG1heFRpbWVzdGFtcFVzIC0gMjAwMDApOworICAgICAgICAgICAgbVJlc3VtZWQgPSBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICB0aW1lc3RhbXBVcyAtPSBwcmV2aW91c1BhdXNlZER1cmF0aW9uVXM7CisgICAgICAgIExPR1YoInRpbWUgc3RhbXA6ICVsbGQsIHByZXZpb3VzIHBhdXNlZCBkdXJhdGlvbjogJWxsZCIsCisgICAgICAgICAgICAgICAgdGltZXN0YW1wVXMsIHByZXZpb3VzUGF1c2VkRHVyYXRpb25Vcyk7CisgICAgICAgIGlmICh0aW1lc3RhbXBVcyA+IG1heFRpbWVzdGFtcFVzKSB7CisgICAgICAgICAgICBtYXhUaW1lc3RhbXBVcyA9IHRpbWVzdGFtcFVzOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGV4Y2VlZHNGaWxlRHVyYXRpb25MaW1pdCgpKSB7CisgICAgICAgICAgICBidWZmZXItPnJlbGVhc2UoKTsKKyAgICAgICAgICAgIGJ1ZmZlciA9IE5VTEw7CisgICAgICAgICAgICBub3RpZnkoTUVESUFfUkVDT1JERVJfRVZFTlRfSU5GTywgTUVESUFfUkVDT1JERVJfSU5GT19NQVhfRFVSQVRJT05fUkVBQ0hFRCwgMCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQogICAgICAgICBzc2l6ZV90IG4gPSBmd3JpdGUoCiAgICAgICAgICAgICAgICAgKGNvbnN0IHVpbnQ4X3QgKilidWZmZXItPmRhdGEoKSArIGJ1ZmZlci0+cmFuZ2Vfb2Zmc2V0KCksCiAgICAgICAgICAgICAgICAgMSwKQEAgLTE4MCwxNiArMjQzLDI2IEBACiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCisgICAgICAgIC8vIFhYWDogSG93IHRvIHRlbGwgaXQgaXMgc3RvcHBlZCBwcmVtYXR1cmVseT8KKyAgICAgICAgaWYgKHN0b3BwZWRQcmVtYXR1cmVseSkgeworICAgICAgICAgICAgc3RvcHBlZFByZW1hdHVyZWx5ID0gZmFsc2U7CisgICAgICAgIH0KKwogICAgICAgICBidWZmZXItPnJlbGVhc2UoKTsKICAgICAgICAgYnVmZmVyID0gTlVMTDsKICAgICB9CiAKLSAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobUxvY2spOworICAgIGlmIChzdG9wcGVkUHJlbWF0dXJlbHkpIHsKKyAgICAgICAgbm90aWZ5KE1FRElBX1JFQ09SREVSX0VWRU5UX0lORk8sIE1FRElBX1JFQ09SREVSX0lORk9fQ09NUExFVElPTl9TVEFUVVMsIFVOS05PV05fRVJST1IpOworICAgIH0KKworICAgIGZmbHVzaChtRmlsZSk7CisgICAgZmNsb3NlKG1GaWxlKTsKKyAgICBtRmlsZSA9IE5VTEw7CiAgICAgbVJlYWNoZWRFT1MgPSB0cnVlOwogfQogCiBib29sIEFNUldyaXRlcjo6cmVhY2hlZEVPUygpIHsKLSAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobUxvY2spOwogICAgIHJldHVybiBtUmVhY2hlZEVPUzsKIH0KIApkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvQW5kcm9pZC5tayBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L0FuZHJvaWQubWsKaW5kZXggODFmOTk1Yi4uNjBkMDIzMyAxMDA2NDQKLS0tIGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvQW5kcm9pZC5taworKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9BbmRyb2lkLm1rCkBAIC0xLDUxICsxLDQ2IEBACiBMT0NBTF9QQVRIOj0gJChjYWxsIG15LWRpcikKIGluY2x1ZGUgJChDTEVBUl9WQVJTKQogCi1MT0NBTF9TUkNfRklMRVM6PSAgICAgICAgICAgICAgICAgXAotICAgICAgICBFU0RTLmNwcCAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgTWVkaWFCdWZmZXIuY3BwICAgICAgICAgICBcCi0gICAgICAgIE1lZGlhQnVmZmVyR3JvdXAuY3BwICAgICAgXAotICAgICAgICBNZWRpYURlZnMuY3BwICAgICAgICAgICAgIFwKLSAgICAgICAgTWVkaWFTb3VyY2UuY3BwICAgICAgICAgICBcCi0gICAgICAgIE1ldGFEYXRhLmNwcCAgICAgICAgICAgICAgXAotICAgICAgICBPTVhDb2RlYy5jcHAgICAgICAgICAgICAgIFwKLSAgICAgICAgVXRpbHMuY3BwICAgICAgICAgICAgICAgICBcCi0gICAgICAgIE9NWENsaWVudC5jcHAKK2luY2x1ZGUgZnJhbWV3b3Jrcy9iYXNlL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9jb21tb24vQ29uZmlnLm1rCiAKLWlmZXEgKCQoQlVJTERfV0lUSF9GVUxMX1NUQUdFRlJJR0hUKSx0cnVlKQotCi1MT0NBTF9TUkNfRklMRVMgKz0gICAgICAgICAgICAgICAgXAotICAgICAgICBBTVJFeHRyYWN0b3IuY3BwICAgICAgICAgIFwKLSAgICAgICAgQU1SV3JpdGVyLmNwcCAgICAgICAgICAgICBcCi0gICAgICAgIEF1ZGlvUGxheWVyLmNwcCAgICAgICAgICAgXAotICAgICAgICBBdWRpb1NvdXJjZS5jcHAgICAgICAgICAgIFwKLSAgICAgICAgQXdlc29tZVBsYXllci5jcHAgICAgICAgICBcCi0gICAgICAgIENhY2hpbmdEYXRhU291cmNlLmNwcCAgICAgXAotICAgICAgICBDYW1lcmFTb3VyY2UuY3BwICAgICAgICAgIFwKLSAgICAgICAgRGF0YVNvdXJjZS5jcHAgICAgICAgICAgICBcCi0gICAgICAgIEZpbGVTb3VyY2UuY3BwICAgICAgICAgICAgXAotICAgICAgICBIVFRQRGF0YVNvdXJjZS5jcHAgICAgICAgIFwKLSAgICAgICAgSFRUUFN0cmVhbS5jcHAgICAgICAgICAgICBcCi0gICAgICAgIEpQRUdTb3VyY2UuY3BwICAgICAgICAgICAgXAotICAgICAgICBNUDNFeHRyYWN0b3IuY3BwICAgICAgICAgIFwKLSAgICAgICAgTVBFRzRFeHRyYWN0b3IuY3BwICAgICAgICBcCi0gICAgICAgIE1QRUc0V3JpdGVyLmNwcCAgICAgICAgICAgXAotICAgICAgICBNZWRpYUV4dHJhY3Rvci5jcHAgICAgICAgIFwKLSAgICAgICAgT2dnRXh0cmFjdG9yLmNwcCAgICAgICAgICBcCi0gICAgICAgIFByZWZldGNoZXIuY3BwICAgICAgICAgICAgXAotICAgICAgICBTYW1wbGVJdGVyYXRvci5jcHAgICAgICAgIFwKLSAgICAgICAgU2FtcGxlVGFibGUuY3BwICAgICAgICAgICBcCi0gICAgICAgIFNob3V0Y2FzdFNvdXJjZS5jcHAgICAgICAgXAotICAgICAgICBTdGFnZWZyaWdodE1lZGlhU2Nhbm5lci5jcHAgXAotICAgICAgICBTdGFnZWZyaWdodE1ldGFkYXRhUmV0cmlldmVyLmNwcCBcCi0gICAgICAgIFRpbWVTb3VyY2UuY3BwICAgICAgICAgICAgXAotICAgICAgICBUaW1lZEV2ZW50UXVldWUuY3BwICAgICAgIFwKLSAgICAgICAgV0FWRXh0cmFjdG9yLmNwcCAgICAgICAgICBcCitMT0NBTF9TUkNfRklMRVM6PSAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEFNUkV4dHJhY3Rvci5jcHAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEFNUldyaXRlci5jcHAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEF1ZGlvUGxheWVyLmNwcCAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEF1ZGlvU291cmNlLmNwcCAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEF3ZXNvbWVQbGF5ZXIuY3BwICAgICAgICAgICAgICAgICBcCisgICAgICAgIENhbWVyYVNvdXJjZS5jcHAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIERhdGFTb3VyY2UuY3BwICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEVTRFMuY3BwICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEZpbGVTb3VyY2UuY3BwICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEhUVFBTdHJlYW0uY3BwICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIEpQRUdTb3VyY2UuY3BwICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIE1QM0V4dHJhY3Rvci5jcHAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIE1QRUc0RXh0cmFjdG9yLmNwcCAgICAgICAgICAgICAgICBcCisgICAgICAgIE1QRUc0V3JpdGVyLmNwcCAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIE1lZGlhQnVmZmVyLmNwcCAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIE1lZGlhQnVmZmVyR3JvdXAuY3BwICAgICAgICAgICAgICBcCisgICAgICAgIE1lZGlhRGVmcy5jcHAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIE1lZGlhRXh0cmFjdG9yLmNwcCAgICAgICAgICAgICAgICBcCisgICAgICAgIE1lZGlhU291cmNlLmNwcCAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIE1ldGFEYXRhLmNwcCAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIE51Q2FjaGVkU291cmNlMi5jcHAgICAgICAgICAgICAgICBcCisgICAgICAgIE51SFRUUERhdGFTb3VyY2UuY3BwICAgICAgICAgICAgICBcCisgICAgICAgIE9NWENsaWVudC5jcHAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIE9NWENvZGVjLmNwcCAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIE9nZ0V4dHJhY3Rvci5jcHAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFNhbXBsZUl0ZXJhdG9yLmNwcCAgICAgICAgICAgICAgICBcCisgICAgICAgIFNhbXBsZVRhYmxlLmNwcCAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFNob3V0Y2FzdFNvdXJjZS5jcHAgICAgICAgICAgICAgICBcCisgICAgICAgIFN0YWdlZnJpZ2h0TWVkaWFTY2FubmVyLmNwcCAgICAgICBcCisgICAgICAgIFN0YWdlZnJpZ2h0TWV0YWRhdGFSZXRyaWV2ZXIuY3BwICBcCisgICAgICAgIFRocm90dGxlZFNvdXJjZS5jcHAgICAgICAgICAgICAgICBcCisgICAgICAgIFRpbWVTb3VyY2UuY3BwICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFRpbWVkRXZlbnRRdWV1ZS5jcHAgICAgICAgICAgICAgICBcCisgICAgICAgIFV0aWxzLmNwcCAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFdBVkV4dHJhY3Rvci5jcHAgICAgICAgICAgICAgICAgICBcCiAgICAgICAgIHN0cmluZy5jcHAKIAotTE9DQUxfQ0ZMQUdTICs9IC1EQlVJTERfV0lUSF9GVUxMX1NUQUdFRlJJR0hUCi1lbmRpZgotCiBMT0NBTF9DX0lOQ0xVREVTOj0gXAogCSQoSk5JX0hfSU5DTFVERSkgXAogICAgICAgICAkKFRPUCkvZXh0ZXJuYWwvb3BlbmNvcmUvZXh0ZXJuX2xpYnNfdjIva2hyb25vcy9vcGVubWF4L2luY2x1ZGUgXApAQCAtNjUsMjQgKzYwLDI4IEBACiAKIExPQ0FMX1NUQVRJQ19MSUJSQVJJRVMgOj0gXAogICAgICAgICBsaWJzdGFnZWZyaWdodF9hYWNkZWMgXAorICAgICAgICBsaWJzdGFnZWZyaWdodF9hYWNlbmMgXAogICAgICAgICBsaWJzdGFnZWZyaWdodF9hbXJuYmRlYyBcCiAgICAgICAgIGxpYnN0YWdlZnJpZ2h0X2Ftcm5iZW5jIFwKICAgICAgICAgbGlic3RhZ2VmcmlnaHRfYW1yd2JkZWMgXAorICAgICAgICBsaWJzdGFnZWZyaWdodF9hbXJ3YmVuYyBcCiAgICAgICAgIGxpYnN0YWdlZnJpZ2h0X2F2Y2RlYyBcCiAgICAgICAgIGxpYnN0YWdlZnJpZ2h0X200dmgyNjNkZWMgXAogICAgICAgICBsaWJzdGFnZWZyaWdodF9tcDNkZWMgXAotICAgICAgICBsaWJzdGFnZWZyaWdodF92b3JiaXNkZWMKKyAgICAgICAgbGlic3RhZ2VmcmlnaHRfdm9yYmlzZGVjIFwKKyAgICAgICAgbGlic3RhZ2VmcmlnaHRfbWF0cm9za2EgXAorICAgICAgICBsaWJzdGFnZWZyaWdodF92cHhkZWMgXAorICAgICAgICBsaWJ2cHggXAorICAgICAgICBsaWJzdGFnZWZyaWdodF9tcGVnMnRzIFwKKyAgICAgICAgbGlic3RhZ2VmcmlnaHRfaHR0cGxpdmUgXAorICAgICAgICBsaWJzdGFnZWZyaWdodF9ydHNwIFwKKyAgICAgICAgbGlic3RhZ2VmcmlnaHRfaWQzIFwKIAogTE9DQUxfU0hBUkVEX0xJQlJBUklFUyArPSBcCiAgICAgICAgIGxpYnN0YWdlZnJpZ2h0X2Ftcm5iX2NvbW1vbiBcCi0gICAgICAgIGxpYnN0YWdlZnJpZ2h0X2F2Y19jb21tb24KLQotaWZlcSAoJChCVUlMRF9XSVRIX0ZVTExfU1RBR0VGUklHSFQpLHRydWUpCi0KLUxPQ0FMX1NUQVRJQ19MSUJSQVJJRVMgKz0gXAotICAgICAgICBsaWJzdGFnZWZyaWdodF9pZDMKLQotTE9DQUxfU0hBUkVEX0xJQlJBUklFUyArPSBcCisgICAgICAgIGxpYnN0YWdlZnJpZ2h0X2VuY19jb21tb24gXAorICAgICAgICBsaWJzdGFnZWZyaWdodF9hdmNfY29tbW9uIFwKKyAgICAgICAgbGlic3RhZ2VmcmlnaHRfZm91bmRhdGlvbiBcCiAgICAgICAgIGxpYnN0YWdlZnJpZ2h0X2NvbG9yX2NvbnZlcnNpb24KIAogaWZlcSAoJChUQVJHRVRfT1MpLSQoVEFSR0VUX1NJTVVMQVRPUiksbGludXgtdHJ1ZSkKQEAgLTk1LDggKzk0LDYgQEAKIExPQ0FMX1NIQVJFRF9MSUJSQVJJRVMgKz0gbGliZGwKIGVuZGlmCiAKLWVuZGlmCi0KIGlmZXEgKCQoVEFSR0VUX09TKS0kKFRBUkdFVF9TSU1VTEFUT1IpLGxpbnV4LXRydWUpCiAgICAgICAgIExPQ0FMX0xETElCUyArPSAtbHB0aHJlYWQKIGVuZGlmCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9BdWRpb1BsYXllci5jcHAgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9BdWRpb1BsYXllci5jcHAKaW5kZXggYmNmMjQ2My4uYjc5YmExMyAxMDA2NDQKLS0tIGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvQXVkaW9QbGF5ZXIuY3BwCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L0F1ZGlvUGxheWVyLmNwcApAQCAtODcsNyArODcsOSBAQAogICAgICAgICAgICAgICAgIERFRkFVTFRfQVVESU9TSU5LX0JVRkZFUkNPVU5ULAogICAgICAgICAgICAgICAgICZBdWRpb1BsYXllcjo6QXVkaW9TaW5rQ2FsbGJhY2ssIHRoaXMpOwogICAgICAgICBpZiAoZXJyICE9IE9LKSB7Ci0gICAgICAgICAgICBtU291cmNlLT5zdG9wKCk7CisgICAgICAgICAgICBpZiAoIXNvdXJjZUFscmVhZHlTdGFydGVkKSB7CisgICAgICAgICAgICAgICAgbVNvdXJjZS0+c3RvcCgpOworICAgICAgICAgICAgfQogCiAgICAgICAgICAgICByZXR1cm4gZXJyOwogICAgICAgICB9CkBAIC0xMDgsNyArMTEwLDkgQEAKICAgICAgICAgICAgIGRlbGV0ZSBtQXVkaW9UcmFjazsKICAgICAgICAgICAgIG1BdWRpb1RyYWNrID0gTlVMTDsKIAotICAgICAgICAgICAgbVNvdXJjZS0+c3RvcCgpOworICAgICAgICAgICAgaWYgKCFzb3VyY2VBbHJlYWR5U3RhcnRlZCkgeworICAgICAgICAgICAgICAgIG1Tb3VyY2UtPnN0b3AoKTsKKyAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgcmV0dXJuIGVycjsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvQXVkaW9Tb3VyY2UuY3BwIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvQXVkaW9Tb3VyY2UuY3BwCmluZGV4IGVkYWJhZjkuLjYwMzE3OTcgMTAwNjQ0Ci0tLSBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L0F1ZGlvU291cmNlLmNwcAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9BdWRpb1NvdXJjZS5jcHAKQEAgLTE0LDYgKzE0LDEwIEBACiAgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KICAqLwogCisvLyNkZWZpbmUgTE9HX05ERUJVRyAwCisjZGVmaW5lIExPR19UQUcgIkF1ZGlvU291cmNlIgorI2luY2x1ZGUgPHV0aWxzL0xvZy5oPgorCiAjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvQXVkaW9Tb3VyY2UuaD4KIAogI2luY2x1ZGUgPG1lZGlhL0F1ZGlvUmVjb3JkLmg+CkBAIC0yMSwxNiArMjUsMzMgQEAKICNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYURlYnVnLmg+CiAjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFEZWZzLmg+CiAjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWV0YURhdGEuaD4KKyNpbmNsdWRlIDxjdXRpbHMvcHJvcGVydGllcy5oPgorI2luY2x1ZGUgPHN5cy90aW1lLmg+CisjaW5jbHVkZSA8dGltZS5oPgogCiBuYW1lc3BhY2UgYW5kcm9pZCB7CiAKIEF1ZGlvU291cmNlOjpBdWRpb1NvdXJjZSgKICAgICAgICAgaW50IGlucHV0U291cmNlLCB1aW50MzJfdCBzYW1wbGVSYXRlLCB1aW50MzJfdCBjaGFubmVscykKLSAgICA6IG1SZWNvcmQobmV3IEF1ZGlvUmVjb3JkKAotICAgICAgICAgICAgICAgIGlucHV0U291cmNlLCBzYW1wbGVSYXRlLCBBdWRpb1N5c3RlbTo6UENNXzE2X0JJVCwgY2hhbm5lbHMpKSwKLSAgICAgIG1Jbml0Q2hlY2sobVJlY29yZC0+aW5pdENoZWNrKCkpLAotICAgICAgbVN0YXJ0ZWQoZmFsc2UpLAorICAgIDogbVN0YXJ0ZWQoZmFsc2UpLAorICAgICAgbUNvbGxlY3RTdGF0cyhmYWxzZSksCisgICAgICBtVG90YWxSZWFkVGltZVVzKDApLAorICAgICAgbVRvdGFsUmVhZEJ5dGVzKDApLAorICAgICAgbVRvdGFsUmVhZHMoMCksCiAgICAgICBtR3JvdXAoTlVMTCkgeworCisgICAgTE9HVigic2FtcGxlUmF0ZTogJWQsIGNoYW5uZWxzOiAlZCIsIHNhbXBsZVJhdGUsIGNoYW5uZWxzKTsKKyAgICB1aW50MzJfdCBmbGFncyA9IEF1ZGlvUmVjb3JkOjpSRUNPUkRfQUdDX0VOQUJMRSB8CisgICAgICAgICAgICAgICAgICAgICBBdWRpb1JlY29yZDo6UkVDT1JEX05TX0VOQUJMRSAgfAorICAgICAgICAgICAgICAgICAgICAgQXVkaW9SZWNvcmQ6OlJFQ09SRF9JSVJfRU5BQkxFOworCisgICAgbVJlY29yZCA9IG5ldyBBdWRpb1JlY29yZCgKKyAgICAgICAgICAgICAgICBpbnB1dFNvdXJjZSwgc2FtcGxlUmF0ZSwgQXVkaW9TeXN0ZW06OlBDTV8xNl9CSVQsCisgICAgICAgICAgICAgICAgY2hhbm5lbHMgPiAxPyBBdWRpb1N5c3RlbTo6Q0hBTk5FTF9JTl9TVEVSRU86IEF1ZGlvU3lzdGVtOjpDSEFOTkVMX0lOX01PTk8sCisgICAgICAgICAgICAgICAgNCAqIGtNYXhCdWZmZXJTaXplIC8gc2l6ZW9mKGludDE2X3QpLCAvKiBFbmFibGUgcGluZy1wb25nIGJ1ZmZlcnMgKi8KKyAgICAgICAgICAgICAgICBmbGFncyk7CisKKyAgICBtSW5pdENoZWNrID0gbVJlY29yZC0+aW5pdENoZWNrKCk7CiB9CiAKIEF1ZGlvU291cmNlOjp+QXVkaW9Tb3VyY2UoKSB7CkBAIC01MSw2ICs3MiwxOSBAQAogICAgICAgICByZXR1cm4gVU5LTk9XTl9FUlJPUjsKICAgICB9CiAKKyAgICBjaGFyIHZhbHVlW1BST1BFUlRZX1ZBTFVFX01BWF07CisgICAgaWYgKHByb3BlcnR5X2dldCgibWVkaWEuc3RhZ2VmcmlnaHQucmVjb3JkLXN0YXRzIiwgdmFsdWUsIE5VTEwpCisgICAgICAgICYmICghc3RyY21wKHZhbHVlLCAiMSIpIHx8ICFzdHJjYXNlY21wKHZhbHVlLCAidHJ1ZSIpKSkgeworICAgICAgICBtQ29sbGVjdFN0YXRzID0gdHJ1ZTsKKyAgICB9CisKKyAgICBtVHJhY2tNYXhBbXBsaXR1ZGUgPSBmYWxzZTsKKyAgICBtTWF4QW1wbGl0dWRlID0gMDsKKyAgICBtU3RhcnRUaW1lVXMgPSAwOworICAgIGludDY0X3Qgc3RhcnRUaW1lVXM7CisgICAgaWYgKHBhcmFtcyAmJiBwYXJhbXMtPmZpbmRJbnQ2NChrS2V5VGltZSwgJnN0YXJ0VGltZVVzKSkgeworICAgICAgICBtU3RhcnRUaW1lVXMgPSBzdGFydFRpbWVVczsKKyAgICB9CiAgICAgc3RhdHVzX3QgZXJyID0gbVJlY29yZC0+c3RhcnQoKTsKIAogICAgIGlmIChlcnIgPT0gT0spIHsKQEAgLTc1LDYgKzEwOSwxMyBAQAogCiAgICAgbVN0YXJ0ZWQgPSBmYWxzZTsKIAorICAgIGlmIChtQ29sbGVjdFN0YXRzKSB7CisgICAgICAgIExPR0koIiVsbGQgcmVhZHM6ICUuMmYgYnBzIGluICVsbGQgdXMiLAorICAgICAgICAgICAgICAgIG1Ub3RhbFJlYWRzLAorICAgICAgICAgICAgICAgIChtVG90YWxSZWFkQnl0ZXMgKiA4MDAwMDAwLjApIC8gbVRvdGFsUmVhZFRpbWVVcywKKyAgICAgICAgICAgICAgICBtVG90YWxSZWFkVGltZVVzKTsKKyAgICB9CisKICAgICByZXR1cm4gT0s7CiB9CiAKQEAgLTkxLDE5ICsxMzIsMzYgQEAKIHN0YXR1c190IEF1ZGlvU291cmNlOjpyZWFkKAogICAgICAgICBNZWRpYUJ1ZmZlciAqKm91dCwgY29uc3QgUmVhZE9wdGlvbnMgKm9wdGlvbnMpIHsKICAgICAqb3V0ID0gTlVMTDsKKyAgICArK21Ub3RhbFJlYWRzOwogCiAgICAgTWVkaWFCdWZmZXIgKmJ1ZmZlcjsKICAgICBDSEVDS19FUShtR3JvdXAtPmFjcXVpcmVfYnVmZmVyKCZidWZmZXIpLCBPSyk7CiAKICAgICB1aW50MzJfdCBudW1GcmFtZXNSZWNvcmRlZDsKICAgICBtUmVjb3JkLT5nZXRQb3NpdGlvbigmbnVtRnJhbWVzUmVjb3JkZWQpOworICAgIGludDY0X3QgbGF0ZW5jeSA9IG1SZWNvcmQtPmxhdGVuY3koKSAqIDEwMDA7CiAKLSAgICBidWZmZXItPm1ldGFfZGF0YSgpLT5zZXRJbnQ2NCgKLSAgICAgICAgICAgIGtLZXlUaW1lLAotICAgICAgICAgICAgKDEwMDAwMDBsbCAqIG51bUZyYW1lc1JlY29yZGVkKSAvIG1SZWNvcmQtPmdldFNhbXBsZVJhdGUoKQotICAgICAgICAgICAgLSBtUmVjb3JkLT5sYXRlbmN5KCkgKiAxMDAwKTsKKyAgICBpbnQ2NF90IHJlYWRUaW1lID0gc3lzdGVtVGltZSgpIC8gMTAwMDsKKyAgICBpZiAobnVtRnJhbWVzUmVjb3JkZWQgPT0gMCkgeworICAgICAgICAvLyBJbml0aWFsIGRlbGF5CisgICAgICAgIGlmIChtU3RhcnRUaW1lVXMgPiAwKSB7CisgICAgICAgICAgICBtU3RhcnRUaW1lVXMgPSByZWFkVGltZSAtIG1TdGFydFRpbWVVczsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1TdGFydFRpbWVVcyArPSBsYXRlbmN5OworICAgICAgICB9CisgICAgfQogCi0gICAgc3NpemVfdCBuID0gbVJlY29yZC0+cmVhZChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgIHNzaXplX3QgbiA9IDA7CisgICAgaWYgKG1Db2xsZWN0U3RhdHMpIHsKKyAgICAgICAgbiA9IG1SZWNvcmQtPnJlYWQoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgaW50NjRfdCBlbmRUaW1lID0gc3lzdGVtVGltZSgpIC8gMTAwMDsKKyAgICAgICAgbVRvdGFsUmVhZFRpbWVVcyArPSAoZW5kVGltZSAtIHJlYWRUaW1lKTsKKyAgICAgICAgaWYgKG4gPj0gMCkgeworICAgICAgICAgICAgbVRvdGFsUmVhZEJ5dGVzICs9IG47CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBuID0gbVJlY29yZC0+cmVhZChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgIH0KIAogICAgIGlmIChuIDwgMCkgewogICAgICAgICBidWZmZXItPnJlbGVhc2UoKTsKQEAgLTExMiw2ICsxNzAsMTYgQEAKICAgICAgICAgcmV0dXJuIChzdGF0dXNfdCluOwogICAgIH0KIAorICAgIGlmIChtVHJhY2tNYXhBbXBsaXR1ZGUpIHsKKyAgICAgICAgdHJhY2tNYXhBbXBsaXR1ZGUoKGludDE2X3QgKikgYnVmZmVyLT5kYXRhKCksIG4gPj4gMSk7CisgICAgfQorCisgICAgdWludDMyX3Qgc2FtcGxlUmF0ZSA9IG1SZWNvcmQtPmdldFNhbXBsZVJhdGUoKTsKKyAgICBpbnQ2NF90IHRpbWVzdGFtcFVzID0gKDEwMDAwMDBMTCAqIG51bUZyYW1lc1JlY29yZGVkKSAvIHNhbXBsZVJhdGUgKyBtU3RhcnRUaW1lVXM7CisgICAgYnVmZmVyLT5tZXRhX2RhdGEoKS0+c2V0SW50NjQoa0tleVRpbWUsIHRpbWVzdGFtcFVzKTsKKyAgICBMT0dWKCJpbml0aWFsIGRlbGF5OiAlbGxkLCBzYW1wbGUgcmF0ZTogJWQsIHRpbWVzdGFtcDogJWxsZCIsCisgICAgICAgICAgICBtU3RhcnRUaW1lVXMsIHNhbXBsZVJhdGUsIHRpbWVzdGFtcFVzKTsKKwogICAgIGJ1ZmZlci0+c2V0X3JhbmdlKDAsIG4pOwogCiAgICAgKm91dCA9IGJ1ZmZlcjsKQEAgLTExOSw0ICsxODcsMjcgQEAKICAgICByZXR1cm4gT0s7CiB9CiAKK3ZvaWQgQXVkaW9Tb3VyY2U6OnRyYWNrTWF4QW1wbGl0dWRlKGludDE2X3QgKmRhdGEsIGludCBuU2FtcGxlcykgeworICAgIGZvciAoaW50IGkgPSBuU2FtcGxlczsgaSA+IDA7IC0taSkgeworICAgICAgICBpbnQxNl90IHZhbHVlID0gKmRhdGErKzsKKyAgICAgICAgaWYgKHZhbHVlIDwgMCkgeworICAgICAgICAgICAgdmFsdWUgPSAtdmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1NYXhBbXBsaXR1ZGUgPCB2YWx1ZSkgeworICAgICAgICAgICAgbU1heEFtcGxpdHVkZSA9IHZhbHVlOworICAgICAgICB9CisgICAgfQorfQorCitpbnQxNl90IEF1ZGlvU291cmNlOjpnZXRNYXhBbXBsaXR1ZGUoKSB7CisgICAgLy8gRmlyc3QgY2FsbCBhY3RpdmF0ZXMgdGhlIHRyYWNraW5nLgorICAgIGlmICghbVRyYWNrTWF4QW1wbGl0dWRlKSB7CisgICAgICAgIG1UcmFja01heEFtcGxpdHVkZSA9IHRydWU7CisgICAgfQorICAgIGludDE2X3QgdmFsdWUgPSBtTWF4QW1wbGl0dWRlOworICAgIG1NYXhBbXBsaXR1ZGUgPSAwOworICAgIExPR1YoIm1heCBhbXBsaXR1ZGUgc2luY2UgbGFzdCBjYWxsOiAlZCIsIHZhbHVlKTsKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKIH0gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9Bd2Vzb21lUGxheWVyLmNwcCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L0F3ZXNvbWVQbGF5ZXIuY3BwCmluZGV4IDI3NGRhZDkuLmZmZWQ3NGYgMTAwNjQ0Ci0tLSBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L0F3ZXNvbWVQbGF5ZXIuY3BwCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L0F3ZXNvbWVQbGF5ZXIuY3BwCkBAIC0yMCwxMyArMjAsMTUgQEAKIAogI2luY2x1ZGUgPGRsZmNuLmg+CiAKKyNpbmNsdWRlICJpbmNsdWRlL0FSVFNQQ29udHJvbGxlci5oIgogI2luY2x1ZGUgImluY2x1ZGUvQXdlc29tZVBsYXllci5oIgotI2luY2x1ZGUgImluY2x1ZGUvUHJlZmV0Y2hlci5oIgorI2luY2x1ZGUgImluY2x1ZGUvTGl2ZVNvdXJjZS5oIgogI2luY2x1ZGUgImluY2x1ZGUvU29mdHdhcmVSZW5kZXJlci5oIgorI2luY2x1ZGUgImluY2x1ZGUvTnVDYWNoZWRTb3VyY2UyLmgiCisjaW5jbHVkZSAiaW5jbHVkZS9UaHJvdHRsZWRTb3VyY2UuaCIKIAogI2luY2x1ZGUgPGJpbmRlci9JUENUaHJlYWRTdGF0ZS5oPgogI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L0F1ZGlvUGxheWVyLmg+Ci0jaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvQ2FjaGluZ0RhdGFTb3VyY2UuaD4KICNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9EYXRhU291cmNlLmg+CiAjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvRmlsZVNvdXJjZS5oPgogI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhQnVmZmVyLmg+CkBAIC0zOSw2ICs0MSw4IEBACiAKICNpbmNsdWRlIDxzdXJmYWNlZmxpbmdlci9JU3VyZmFjZS5oPgogCisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BTG9vcGVyLmg+CisKIG5hbWVzcGFjZSBhbmRyb2lkIHsKIAogc3RydWN0IEF3ZXNvbWVFdmVudCA6IHB1YmxpYyBUaW1lZEV2ZW50UXVldWU6OkV2ZW50IHsKQEAgLTI2MSw2ICsyNjUsMTYgQEAKIAogc3RhdHVzX3QgQXdlc29tZVBsYXllcjo6c2V0RGF0YVNvdXJjZSgKICAgICAgICAgaW50IGZkLCBpbnQ2NF90IG9mZnNldCwgaW50NjRfdCBsZW5ndGgpIHsKKyNpZiAwCisgICAgLy8gcmV0dXJuIHNldERhdGFTb3VyY2UoImh0dHBsaXZlOi8vaXBob25lZDUuYWthbWFpLmNvbS5lZGdlc3VpdGUubmV0L21oYmFycm9uL25hc2F0di9uYXNhdHZfOTYubTN1OCIpOworICAgIC8vIHJldHVybiBzZXREYXRhU291cmNlKCJodHRwbGl2ZTovL2lwaG9uZWQ1LmFrYW1haS5jb20uZWRnZXN1aXRlLm5ldC9taGJhcnJvbi9uYXNhdHYvbmFzYXR2XzE1MDAubTN1OCIpOworICAgIHJldHVybiBzZXREYXRhU291cmNlKCJodHRwbGl2ZTovL2lwaG9uZS52aWRlby5oc24uY29tL2lQaG9uZV9oaWdoLm0zdTgiKTsKKyAgICAvLyByZXR1cm4gc2V0RGF0YVNvdXJjZSgiaHR0cGxpdmU6Ly9pcGhvbmVkNS5ha2FtYWkuY29tLmVkZ2VzdWl0ZS5uZXQvbWhiYXJyb24vaXBob25ld2ViY2FzdC93ZWJjYXN0MDkwMjA5X2FsbC93ZWJjYXN0MDkwMjA5X2FsbC5tM3U4Iik7CisgICAgLy8gcmV0dXJuIHNldERhdGFTb3VyY2UoImh0dHBsaXZlOi8vcXRodHRwLmFrYW1haS5jb20uZWRnZXN1aXRlLm5ldC9pcGhvbmVfZGVtby9WaWRlb19Db250ZW50L3VzYXQvdHRfMDYyMjA5X2lwaG9uZS9oaS9wcm9nX2luZGV4Lm0zdTgiKTsKKyAgICAvLyByZXR1cm4gc2V0RGF0YVNvdXJjZSgiaHR0cGxpdmU6Ly9xdGh0dHAuYWthbWFpLmNvbS5lZGdlc3VpdGUubmV0L2lwaG9uZV9kZW1vL1ZpZGVvX0NvbnRlbnQvdXNhdC90dF9nb29nbWFwcy9oaS9wcm9nX2luZGV4Lm0zdTgiKTsKKyAgICAvLyByZXR1cm4gc2V0RGF0YVNvdXJjZSgiaHR0cGxpdmU6Ly9xdGh0dHAuYWthbWFpLmNvbS5lZGdlc3VpdGUubmV0L2lwaG9uZV9kZW1vL1ZpZGVvX0NvbnRlbnQvbXR2L25pX3Nwb18yNWFfcnQ3NDEzN19jbGlwX3N5bi9oaS9wcm9nX2luZGV4Lm0zdTgiKTsKKyNlbmRpZgorCiAgICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKIAogICAgIHJlc2V0X2woKTsKQEAgLTM0MCwxMSArMzU0LDcgQEAKIAogICAgIGNhbmNlbFBsYXllckV2ZW50cygpOwogCi0gICAgaWYgKG1QcmVmZXRjaGVyICE9IE5VTEwpIHsKLSAgICAgICAgQ0hFQ0tfRVEobVByZWZldGNoZXItPmdldFN0cm9uZ0NvdW50KCksIDEpOwotICAgIH0KLSAgICBtUHJlZmV0Y2hlci5jbGVhcigpOwotCisgICAgbUNhY2hlZFNvdXJjZS5jbGVhcigpOwogICAgIG1BdWRpb1RyYWNrLmNsZWFyKCk7CiAgICAgbVZpZGVvVHJhY2suY2xlYXIoKTsKIApAQCAtMzYxLDkgKzM3MSw2IEBACiAgICAgfQogICAgIG1BdWRpb1NvdXJjZS5jbGVhcigpOwogCi0gICAgaWYgKG1UaW1lU291cmNlICE9IG1BdWRpb1BsYXllcikgewotICAgICAgICBkZWxldGUgbVRpbWVTb3VyY2U7Ci0gICAgfQogICAgIG1UaW1lU291cmNlID0gTlVMTDsKIAogICAgIGRlbGV0ZSBtQXVkaW9QbGF5ZXI7CkBAIC0zODEsNiArMzg4LDggQEAKICAgICAgICAgbVZpZGVvQnVmZmVyID0gTlVMTDsKICAgICB9CiAKKyAgICBtUlRTUENvbnRyb2xsZXIuY2xlYXIoKTsKKwogICAgIGlmIChtVmlkZW9Tb3VyY2UgIT0gTlVMTCkgewogICAgICAgICBtVmlkZW9Tb3VyY2UtPnN0b3AoKTsKIApAQCAtNDMyLDI5ICs0NDEsNDUgQEAKICAgICB9CiAgICAgbUJ1ZmZlcmluZ0V2ZW50UGVuZGluZyA9IGZhbHNlOwogCi0gICAgaW50NjRfdCBkdXJhdGlvblVzOwotICAgIHsKLSAgICAgICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1NaXNjU3RhdGVMb2NrKTsKLSAgICAgICAgZHVyYXRpb25VcyA9IG1EdXJhdGlvblVzOworICAgIGlmIChtQ2FjaGVkU291cmNlID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChkdXJhdGlvblVzID49IDApIHsKLSAgICAgICAgaW50NjRfdCBjYWNoZWREdXJhdGlvblVzID0gbVByZWZldGNoZXItPmdldENhY2hlZER1cmF0aW9uVXMoKTsKKyAgICBzaXplX3QgbG93V2F0ZXJtYXJrID0gNDAwMDAwOworICAgIHNpemVfdCBoaWdoV2F0ZXJtYXJrID0gMTAwMDAwMDsKIAotICAgICAgICBMT0dWKCJjYWNoZSBob2xkcyAlLjJmIHNlY3Mgd29ydGggb2YgZGF0YS4iLCBjYWNoZWREdXJhdGlvblVzIC8gMUU2KTsKKyAgICBvZmZfdCBzaXplOworICAgIGlmIChtRHVyYXRpb25VcyA+PSAwICYmIG1DYWNoZWRTb3VyY2UtPmdldFNpemUoJnNpemUpID09IE9LKSB7CisgICAgICAgIGludDY0X3QgYml0cmF0ZSA9IHNpemUgKiA4MDAwMDAwbGwgLyBtRHVyYXRpb25VczsgIC8vIGluIGJpdHMvc2VjCiAKLSAgICAgICAgaW50NjRfdCBwb3NpdGlvblVzOwotICAgICAgICBnZXRQb3NpdGlvbigmcG9zaXRpb25Vcyk7CisgICAgICAgIHNpemVfdCBjYWNoZWRTaXplID0gbUNhY2hlZFNvdXJjZS0+Y2FjaGVkU2l6ZSgpOworICAgICAgICBpbnQ2NF90IGNhY2hlZER1cmF0aW9uVXMgPSBjYWNoZWRTaXplICogODAwMDAwMGxsIC8gYml0cmF0ZTsKIAotICAgICAgICBjYWNoZWREdXJhdGlvblVzICs9IHBvc2l0aW9uVXM7CisgICAgICAgIGRvdWJsZSBwZXJjZW50YWdlID0gKGRvdWJsZSljYWNoZWREdXJhdGlvblVzIC8gbUR1cmF0aW9uVXM7CiAKLSAgICAgICAgZG91YmxlIHBlcmNlbnRhZ2UgPSAoZG91YmxlKWNhY2hlZER1cmF0aW9uVXMgLyBkdXJhdGlvblVzOwogICAgICAgICBub3RpZnlMaXN0ZW5lcl9sKE1FRElBX0JVRkZFUklOR19VUERBVEUsIHBlcmNlbnRhZ2UgKiAxMDAuMCk7CiAKLSAgICAgICAgcG9zdEJ1ZmZlcmluZ0V2ZW50X2woKTsKLSAgICB9IGVsc2UgewotICAgICAgICBMT0dFKCJOb3Qgc2VuZGluZyBidWZmZXJpbmcgc3RhdHVzIGJlY2F1c2UgZHVyYXRpb24gaXMgdW5rbm93bi4iKTsKKyAgICAgICAgbG93V2F0ZXJtYXJrID0gMiAqIGJpdHJhdGUgLyA4OyAgLy8gMiBzZWNzCisgICAgICAgIGhpZ2hXYXRlcm1hcmsgPSAxMCAqIGJpdHJhdGUgLyA4OyAgLy8gMTAgc2VjcwogICAgIH0KKworICAgIGJvb2wgZW9zOworICAgIHNpemVfdCBjYWNoZWREYXRhUmVtYWluaW5nID0gbUNhY2hlZFNvdXJjZS0+YXBwcm94RGF0YVJlbWFpbmluZygmZW9zKTsKKworICAgIGlmICgobUZsYWdzICYgUExBWUlORykgJiYgIWVvcyAmJiAoY2FjaGVkRGF0YVJlbWFpbmluZyA8IGxvd1dhdGVybWFyaykpIHsKKyAgICAgICAgTE9HSSgiY2FjaGUgaXMgcnVubmluZyBsb3cgKDwgJWQpICwgcGF1c2luZy4iLCBsb3dXYXRlcm1hcmspOworICAgICAgICBtRmxhZ3MgfD0gQ0FDSEVfVU5ERVJSVU47CisgICAgICAgIHBhdXNlX2woKTsKKyAgICAgICAgbm90aWZ5TGlzdGVuZXJfbChNRURJQV9JTkZPLCBNRURJQV9JTkZPX0JVRkZFUklOR19TVEFSVCk7CisgICAgfSBlbHNlIGlmICgobUZsYWdzICYgQ0FDSEVfVU5ERVJSVU4pCisgICAgICAgICAgICAmJiAoZW9zIHx8IGNhY2hlZERhdGFSZW1haW5pbmcgPiBoaWdoV2F0ZXJtYXJrKSkgeworICAgICAgICBMT0dJKCJjYWNoZSBoYXMgZmlsbGVkIHVwICg+ICVkKSwgcmVzdW1pbmcuIiwgaGlnaFdhdGVybWFyayk7CisgICAgICAgIG1GbGFncyAmPSB+Q0FDSEVfVU5ERVJSVU47CisgICAgICAgIHBsYXlfbCgpOworICAgICAgICBub3RpZnlMaXN0ZW5lcl9sKE1FRElBX0lORk8sIE1FRElBX0lORk9fQlVGRkVSSU5HX0VORCk7CisgICAgfQorCisgICAgcG9zdEJ1ZmZlcmluZ0V2ZW50X2woKTsKIH0KIAogdm9pZCBBd2Vzb21lUGxheWVyOjpvblN0cmVhbURvbmUoKSB7CkBAIC00NjYsMjIgKzQ5MSwzNSBAQAogICAgIH0KICAgICBtU3RyZWFtRG9uZUV2ZW50UGVuZGluZyA9IGZhbHNlOwogCi0gICAgaWYgKG1TdHJlYW1Eb25lU3RhdHVzID09IEVSUk9SX0VORF9PRl9TVFJFQU0gJiYgKG1GbGFncyAmIExPT1BJTkcpKSB7CisgICAgaWYgKG1TdHJlYW1Eb25lU3RhdHVzICE9IEVSUk9SX0VORF9PRl9TVFJFQU0pIHsKKyAgICAgICAgTE9HVigiTUVESUFfRVJST1IgJWQiLCBtU3RyZWFtRG9uZVN0YXR1cyk7CisKKyAgICAgICAgbm90aWZ5TGlzdGVuZXJfbCgKKyAgICAgICAgICAgICAgICBNRURJQV9FUlJPUiwgTUVESUFfRVJST1JfVU5LTk9XTiwgbVN0cmVhbURvbmVTdGF0dXMpOworCisgICAgICAgIHBhdXNlX2woKTsKKworICAgICAgICBtRmxhZ3MgfD0gQVRfRU9TOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgY29uc3QgYm9vbCBhbGxEb25lID0KKyAgICAgICAgKG1WaWRlb1NvdXJjZSA9PSBOVUxMIHx8IChtRmxhZ3MgJiBWSURFT19BVF9FT1MpKQorICAgICAgICAgICAgJiYgKG1BdWRpb1NvdXJjZSA9PSBOVUxMIHx8IChtRmxhZ3MgJiBBVURJT19BVF9FT1MpKTsKKworICAgIGlmICghYWxsRG9uZSkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKG1GbGFncyAmIExPT1BJTkcpIHsKICAgICAgICAgc2Vla1RvX2woMCk7CiAKICAgICAgICAgaWYgKG1WaWRlb1NvdXJjZSAhPSBOVUxMKSB7CiAgICAgICAgICAgICBwb3N0VmlkZW9FdmVudF9sKCk7CiAgICAgICAgIH0KICAgICB9IGVsc2UgewotICAgICAgICBpZiAobVN0cmVhbURvbmVTdGF0dXMgPT0gRVJST1JfRU5EX09GX1NUUkVBTSkgewotICAgICAgICAgICAgTE9HVigiTUVESUFfUExBWUJBQ0tfQ09NUExFVEUiKTsKLSAgICAgICAgICAgIG5vdGlmeUxpc3RlbmVyX2woTUVESUFfUExBWUJBQ0tfQ09NUExFVEUpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgTE9HVigiTUVESUFfRVJST1IgJWQiLCBtU3RyZWFtRG9uZVN0YXR1cyk7Ci0KLSAgICAgICAgICAgIG5vdGlmeUxpc3RlbmVyX2woCi0gICAgICAgICAgICAgICAgICAgIE1FRElBX0VSUk9SLCBNRURJQV9FUlJPUl9VTktOT1dOLCBtU3RyZWFtRG9uZVN0YXR1cyk7Ci0gICAgICAgIH0KKyAgICAgICAgTE9HVigiTUVESUFfUExBWUJBQ0tfQ09NUExFVEUiKTsKKyAgICAgICAgbm90aWZ5TGlzdGVuZXJfbChNRURJQV9QTEFZQkFDS19DT01QTEVURSk7CiAKICAgICAgICAgcGF1c2VfbCgpOwogCkBAIC00OTEsNiArNTI5LDkgQEAKIAogc3RhdHVzX3QgQXdlc29tZVBsYXllcjo6cGxheSgpIHsKICAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobUxvY2spOworCisgICAgbUZsYWdzICY9IH5DQUNIRV9VTkRFUlJVTjsKKwogICAgIHJldHVybiBwbGF5X2woKTsKIH0KIApAQCAtNTMyLDcgKzU3Myw2IEBACiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnI7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgZGVsZXRlIG1UaW1lU291cmNlOwogICAgICAgICAgICAgICAgIG1UaW1lU291cmNlID0gbUF1ZGlvUGxheWVyOwogCiAgICAgICAgICAgICAgICAgZGVmZXJyZWRBdWRpb1NlZWsgPSB0cnVlOwpAQCAtNTQ4LDcgKzU4OCw3IEBACiAgICAgfQogCiAgICAgaWYgKG1UaW1lU291cmNlID09IE5VTEwgJiYgbUF1ZGlvUGxheWVyID09IE5VTEwpIHsKLSAgICAgICAgbVRpbWVTb3VyY2UgPSBuZXcgU3lzdGVtVGltZVNvdXJjZTsKKyAgICAgICAgbVRpbWVTb3VyY2UgPSAmbVN5c3RlbVRpbWVTb3VyY2U7CiAgICAgfQogCiAgICAgaWYgKG1WaWRlb1NvdXJjZSAhPSBOVUxMKSB7CkBAIC02MTUsNiArNjU1LDkgQEAKIAogc3RhdHVzX3QgQXdlc29tZVBsYXllcjo6cGF1c2UoKSB7CiAgICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKKworICAgIG1GbGFncyAmPSB+Q0FDSEVfVU5ERVJSVU47CisKICAgICByZXR1cm4gcGF1c2VfbCgpOwogfQogCkBAIC02MzUsNyArNjc4LDcgQEAKIH0KIAogYm9vbCBBd2Vzb21lUGxheWVyOjppc1BsYXlpbmcoKSBjb25zdCB7Ci0gICAgcmV0dXJuIG1GbGFncyAmIFBMQVlJTkc7CisgICAgcmV0dXJuIChtRmxhZ3MgJiBQTEFZSU5HKSB8fCAobUZsYWdzICYgQ0FDSEVfVU5ERVJSVU4pOwogfQogCiB2b2lkIEF3ZXNvbWVQbGF5ZXI6OnNldElTdXJmYWNlKGNvbnN0IHNwPElTdXJmYWNlPiAmaXN1cmZhY2UpIHsKQEAgLTcwMiwxMCArNzQ1LDE1IEBACiB9CiAKIHN0YXR1c190IEF3ZXNvbWVQbGF5ZXI6OnNlZWtUb19sKGludDY0X3QgdGltZVVzKSB7CisgICAgaWYgKG1GbGFncyAmIENBQ0hFX1VOREVSUlVOKSB7CisgICAgICAgIG1GbGFncyAmPSB+Q0FDSEVfVU5ERVJSVU47CisgICAgICAgIHBsYXlfbCgpOworICAgIH0KKwogICAgIG1TZWVraW5nID0gdHJ1ZTsKICAgICBtU2Vla05vdGlmaWNhdGlvblNlbnQgPSBmYWxzZTsKICAgICBtU2Vla1RpbWVVcyA9IHRpbWVVczsKLSAgICBtRmxhZ3MgJj0gfkFUX0VPUzsKKyAgICBtRmxhZ3MgJj0gfihBVF9FT1MgfCBBVURJT19BVF9FT1MgfCBWSURFT19BVF9FT1MpOwogCiAgICAgc2Vla0F1ZGlvSWZOZWNlc3NhcnlfbCgpOwogCkBAIC03NDcsMTAgKzc5NSw2IEBACiB2b2lkIEF3ZXNvbWVQbGF5ZXI6OnNldEF1ZGlvU291cmNlKHNwPE1lZGlhU291cmNlPiBzb3VyY2UpIHsKICAgICBDSEVDSyhzb3VyY2UgIT0gTlVMTCk7CiAKLSAgICBpZiAobVByZWZldGNoZXIgIT0gTlVMTCkgewotICAgICAgICBzb3VyY2UgPSBtUHJlZmV0Y2hlci0+YWRkU291cmNlKHNvdXJjZSk7Ci0gICAgfQotCiAgICAgbUF1ZGlvVHJhY2sgPSBzb3VyY2U7CiB9CiAKQEAgLTc5NywxMCArODQxLDYgQEAKIHZvaWQgQXdlc29tZVBsYXllcjo6c2V0VmlkZW9Tb3VyY2Uoc3A8TWVkaWFTb3VyY2U+IHNvdXJjZSkgewogICAgIENIRUNLKHNvdXJjZSAhPSBOVUxMKTsKIAotICAgIGlmIChtUHJlZmV0Y2hlciAhPSBOVUxMKSB7Ci0gICAgICAgIHNvdXJjZSA9IG1QcmVmZXRjaGVyLT5hZGRTb3VyY2Uoc291cmNlKTsKLSAgICB9Ci0KICAgICBtVmlkZW9UcmFjayA9IHNvdXJjZTsKIH0KIApAQCAtODUyLDYgKzg5MiwyMSBAQAogICAgICAgICAgICAgbVZpZGVvQnVmZmVyLT5yZWxlYXNlKCk7CiAgICAgICAgICAgICBtVmlkZW9CdWZmZXIgPSBOVUxMOwogICAgICAgICB9CisKKyAgICAgICAgaWYgKG1DYWNoZWRTb3VyY2UgIT0gTlVMTCAmJiBtQXVkaW9Tb3VyY2UgIT0gTlVMTCkgeworICAgICAgICAgICAgLy8gV2UncmUgZ29pbmcgdG8gc2VlayB0aGUgdmlkZW8gc291cmNlIGZpcnN0LCBmb2xsb3dlZCBieQorICAgICAgICAgICAgLy8gdGhlIGF1ZGlvIHNvdXJjZS4KKyAgICAgICAgICAgIC8vIEluIG9yZGVyIHRvIGF2b2lkIGp1bXBzIGluIHRoZSBEYXRhU291cmNlIG9mZnNldCBjYXVzZWQgYnkKKyAgICAgICAgICAgIC8vIHRoZSBhdWRpbyBjb2RlYyBwcmVmZXRjaGluZyBkYXRhIGZyb20gdGhlIG9sZCBsb2NhdGlvbnMKKyAgICAgICAgICAgIC8vIHdoaWxlIHRoZSB2aWRlbyBjb2RlYyBpcyBhbHJlYWR5IHJlYWRpbmcgZGF0YSBmcm9tIHRoZSBuZXcKKyAgICAgICAgICAgIC8vIGxvY2F0aW9ucywgd2UnbGwgInBhdXNlIiB0aGUgYXVkaW8gc291cmNlLCBjYXVzaW5nIGl0IHRvCisgICAgICAgICAgICAvLyBzdG9wIHJlYWRpbmcgaW5wdXQgZGF0YSB1bnRpbCBhIHN1YnNlcXVlbnQgc2Vlay4KKworICAgICAgICAgICAgaWYgKG1BdWRpb1BsYXllciAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgbUF1ZGlvUGxheWVyLT5wYXVzZSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbUF1ZGlvU291cmNlLT5wYXVzZSgpOworICAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKCFtVmlkZW9CdWZmZXIpIHsKQEAgLTg3OCw2ICs5MzMsNyBAQAogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgICAgICBtRmxhZ3MgfD0gVklERU9fQVRfRU9TOwogICAgICAgICAgICAgICAgIHBvc3RTdHJlYW1Eb25lRXZlbnRfbChlcnIpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTkwOCw2ICs5NjQsNyBAQAogICAgICAgICAgICAgTE9HVigic2Vla2luZyBhdWRpbyB0byAlbGxkIHVzICglLjJmIHNlY3MpLiIsIHRpbWVVcywgdGltZVVzIC8gMUU2KTsKIAogICAgICAgICAgICAgbUF1ZGlvUGxheWVyLT5zZWVrVG8odGltZVVzKTsKKyAgICAgICAgICAgIG1BdWRpb1BsYXllci0+cmVzdW1lKCk7CiAgICAgICAgICAgICBtV2F0Y2hGb3JBdWRpb1NlZWtDb21wbGV0ZSA9IHRydWU7CiAgICAgICAgICAgICBtV2F0Y2hGb3JBdWRpb0VPUyA9IHRydWU7CiAgICAgICAgIH0gZWxzZSBpZiAoIW1TZWVrTm90aWZpY2F0aW9uU2VudCkgewpAQCAtOTIxLDE5ICs5NzgsMjEgQEAKICAgICAgICAgbVNlZWtOb3RpZmljYXRpb25TZW50ID0gZmFsc2U7CiAgICAgfQogCisgICAgVGltZVNvdXJjZSAqdHMgPSAobUZsYWdzICYgQVVESU9fQVRfRU9TKSA/ICZtU3lzdGVtVGltZVNvdXJjZSA6IG1UaW1lU291cmNlOworCiAgICAgaWYgKG1GbGFncyAmIEZJUlNUX0ZSQU1FKSB7CiAgICAgICAgIG1GbGFncyAmPSB+RklSU1RfRlJBTUU7CiAKLSAgICAgICAgbVRpbWVTb3VyY2VEZWx0YVVzID0gbVRpbWVTb3VyY2UtPmdldFJlYWxUaW1lVXMoKSAtIHRpbWVVczsKKyAgICAgICAgbVRpbWVTb3VyY2VEZWx0YVVzID0gdHMtPmdldFJlYWxUaW1lVXMoKSAtIHRpbWVVczsKICAgICB9CiAKICAgICBpbnQ2NF90IHJlYWxUaW1lVXMsIG1lZGlhVGltZVVzOwotICAgIGlmIChtQXVkaW9QbGF5ZXIgIT0gTlVMTAorICAgIGlmICghKG1GbGFncyAmIEFVRElPX0FUX0VPUykgJiYgbUF1ZGlvUGxheWVyICE9IE5VTEwKICAgICAgICAgJiYgbUF1ZGlvUGxheWVyLT5nZXRNZWRpYVRpbWVNYXBwaW5nKCZyZWFsVGltZVVzLCAmbWVkaWFUaW1lVXMpKSB7CiAgICAgICAgIG1UaW1lU291cmNlRGVsdGFVcyA9IHJlYWxUaW1lVXMgLSBtZWRpYVRpbWVVczsKICAgICB9CiAKLSAgICBpbnQ2NF90IG5vd1VzID0gbVRpbWVTb3VyY2UtPmdldFJlYWxUaW1lVXMoKSAtIG1UaW1lU291cmNlRGVsdGFVczsKKyAgICBpbnQ2NF90IG5vd1VzID0gdHMtPmdldFJlYWxUaW1lVXMoKSAtIG1UaW1lU291cmNlRGVsdGFVczsKIAogICAgIGludDY0X3QgbGF0ZW5lc3NVcyA9IG5vd1VzIC0gdGltZVVzOwogCkBAIC05OTUsMTAgKzEwNTQsNiBAQAogfQogCiB2b2lkIEF3ZXNvbWVQbGF5ZXI6OnBvc3RCdWZmZXJpbmdFdmVudF9sKCkgewotICAgIGlmIChtUHJlZmV0Y2hlciA9PSBOVUxMKSB7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KICAgICBpZiAobUJ1ZmZlcmluZ0V2ZW50UGVuZGluZykgewogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTAzOCw2ICsxMDkzLDggQEAKICAgICBzdGF0dXNfdCBmaW5hbFN0YXR1czsKICAgICBpZiAobVdhdGNoRm9yQXVkaW9FT1MgJiYgbUF1ZGlvUGxheWVyLT5yZWFjaGVkRU9TKCZmaW5hbFN0YXR1cykpIHsKICAgICAgICAgbVdhdGNoRm9yQXVkaW9FT1MgPSBmYWxzZTsKKyAgICAgICAgbUZsYWdzIHw9IEFVRElPX0FUX0VPUzsKKyAgICAgICAgbUZsYWdzIHw9IEZJUlNUX0ZSQU1FOwogICAgICAgICBwb3N0U3RyZWFtRG9uZUV2ZW50X2woZmluYWxTdGF0dXMpOwogICAgIH0KIApAQCAtMTEwNiwxMCArMTE2MywxMCBAQAogICAgIHNwPERhdGFTb3VyY2U+IGRhdGFTb3VyY2U7CiAKICAgICBpZiAoIXN0cm5jYXNlY21wKCJodHRwOi8vIiwgbVVyaS5zdHJpbmcoKSwgNykpIHsKLSAgICAgICAgbUNvbm5lY3RpbmdEYXRhU291cmNlID0gbmV3IEhUVFBEYXRhU291cmNlKG1VcmksICZtVXJpSGVhZGVycyk7CisgICAgICAgIG1Db25uZWN0aW5nRGF0YVNvdXJjZSA9IG5ldyBOdUhUVFBEYXRhU291cmNlOwogCiAgICAgICAgIG1Mb2NrLnVubG9jaygpOwotICAgICAgICBzdGF0dXNfdCBlcnIgPSBtQ29ubmVjdGluZ0RhdGFTb3VyY2UtPmNvbm5lY3QoKTsKKyAgICAgICAgc3RhdHVzX3QgZXJyID0gbUNvbm5lY3RpbmdEYXRhU291cmNlLT5jb25uZWN0KG1VcmksICZtVXJpSGVhZGVycyk7CiAgICAgICAgIG1Mb2NrLmxvY2soKTsKIAogICAgICAgICBpZiAoZXJyICE9IE9LKSB7CkBAIC0xMTE5LDEwICsxMTc2LDQ2IEBACiAgICAgICAgICAgICByZXR1cm4gZXJyOwogICAgICAgICB9CiAKLSAgICAgICAgZGF0YVNvdXJjZSA9IG5ldyBDYWNoaW5nRGF0YVNvdXJjZSgKLSAgICAgICAgICAgICAgICBtQ29ubmVjdGluZ0RhdGFTb3VyY2UsIDY0ICogMTAyNCwgMTApOwotCisjaWYgMAorICAgICAgICBtQ2FjaGVkU291cmNlID0gbmV3IE51Q2FjaGVkU291cmNlMigKKyAgICAgICAgICAgICAgICBuZXcgVGhyb3R0bGVkU291cmNlKAorICAgICAgICAgICAgICAgICAgICBtQ29ubmVjdGluZ0RhdGFTb3VyY2UsIDUwICogMTAyNCAvKiBieXRlcy9zZWMgKi8pKTsKKyNlbHNlCisgICAgICAgIG1DYWNoZWRTb3VyY2UgPSBuZXcgTnVDYWNoZWRTb3VyY2UyKG1Db25uZWN0aW5nRGF0YVNvdXJjZSk7CisjZW5kaWYKICAgICAgICAgbUNvbm5lY3RpbmdEYXRhU291cmNlLmNsZWFyKCk7CisKKyAgICAgICAgZGF0YVNvdXJjZSA9IG1DYWNoZWRTb3VyY2U7CisgICAgfSBlbHNlIGlmICghc3RybmNhc2VjbXAobVVyaS5zdHJpbmcoKSwgImh0dHBsaXZlOi8vIiwgMTEpKSB7CisgICAgICAgIFN0cmluZzggdXJpKCJodHRwOi8vIik7CisgICAgICAgIHVyaS5hcHBlbmQobVVyaS5zdHJpbmcoKSArIDExKTsKKworICAgICAgICBkYXRhU291cmNlID0gbmV3IExpdmVTb3VyY2UodXJpLnN0cmluZygpKTsKKworICAgICAgICBtQ2FjaGVkU291cmNlID0gbmV3IE51Q2FjaGVkU291cmNlMihkYXRhU291cmNlKTsKKyAgICAgICAgZGF0YVNvdXJjZSA9IG1DYWNoZWRTb3VyY2U7CisKKyAgICAgICAgc3A8TWVkaWFFeHRyYWN0b3I+IGV4dHJhY3RvciA9CisgICAgICAgICAgICBNZWRpYUV4dHJhY3Rvcjo6Q3JlYXRlKGRhdGFTb3VyY2UsIE1FRElBX01JTUVUWVBFX0NPTlRBSU5FUl9NUEVHMlRTKTsKKworICAgICAgICByZXR1cm4gc2V0RGF0YVNvdXJjZV9sKGV4dHJhY3Rvcik7CisgICAgfSBlbHNlIGlmICghc3RybmNhc2VjbXAoInJ0c3A6Ly8iLCBtVXJpLnN0cmluZygpLCA3KSkgeworICAgICAgICBpZiAobUxvb3BlciA9PSBOVUxMKSB7CisgICAgICAgICAgICBtTG9vcGVyID0gbmV3IEFMb29wZXI7CisgICAgICAgICAgICBtTG9vcGVyLT5zdGFydCgpOworICAgICAgICB9CisgICAgICAgIG1SVFNQQ29udHJvbGxlciA9IG5ldyBBUlRTUENvbnRyb2xsZXIobUxvb3Blcik7CisgICAgICAgIHN0YXR1c190IGVyciA9IG1SVFNQQ29udHJvbGxlci0+Y29ubmVjdChtVXJpLnN0cmluZygpKTsKKworICAgICAgICBMT0dJKCJBUlRTUENvbnRyb2xsZXI6OmNvbm5lY3QgcmV0dXJuZWQgJWQiLCBlcnIpOworCisgICAgICAgIGlmIChlcnIgIT0gT0spIHsKKyAgICAgICAgICAgIG1SVFNQQ29udHJvbGxlci5jbGVhcigpOworICAgICAgICAgICAgcmV0dXJuIGVycjsKKyAgICAgICAgfQorCisgICAgICAgIHNwPE1lZGlhRXh0cmFjdG9yPiBleHRyYWN0b3IgPSBtUlRTUENvbnRyb2xsZXIuZ2V0KCk7CisgICAgICAgIHJldHVybiBzZXREYXRhU291cmNlX2woZXh0cmFjdG9yKTsKICAgICB9IGVsc2UgewogICAgICAgICBkYXRhU291cmNlID0gRGF0YVNvdXJjZTo6Q3JlYXRlRnJvbVVSSShtVXJpLnN0cmluZygpLCAmbVVyaUhlYWRlcnMpOwogICAgIH0KQEAgLTExMzcsMTAgKzEyMzAsNiBAQAogICAgICAgICByZXR1cm4gVU5LTk9XTl9FUlJPUjsKICAgICB9CiAKLSAgICBpZiAoZGF0YVNvdXJjZS0+ZmxhZ3MoKSAmIERhdGFTb3VyY2U6OmtXYW50c1ByZWZldGNoaW5nKSB7Ci0gICAgICAgIG1QcmVmZXRjaGVyID0gbmV3IFByZWZldGNoZXI7Ci0gICAgfQotCiAgICAgcmV0dXJuIHNldERhdGFTb3VyY2VfbChleHRyYWN0b3IpOwogfQogCkBAIC0xMTY1LDggKzEyNTQsNiBAQAogfQogCiB2b2lkIEF3ZXNvbWVQbGF5ZXI6Om9uUHJlcGFyZUFzeW5jRXZlbnQoKSB7Ci0gICAgc3A8UHJlZmV0Y2hlcj4gcHJlZmV0Y2hlcjsKLQogICAgIHsKICAgICAgICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKIApAQCAtMTIwMiwzOSArMTI4OSw2IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0KLSAgICAgICAgcHJlZmV0Y2hlciA9IG1QcmVmZXRjaGVyOwotICAgIH0KLQotICAgIGlmIChwcmVmZXRjaGVyICE9IE5VTEwpIHsKLSAgICAgICAgewotICAgICAgICAgICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKLSAgICAgICAgICAgIGlmIChtRmxhZ3MgJiBQUkVQQVJFX0NBTkNFTExFRCkgewotICAgICAgICAgICAgICAgIExPR0koInByZXBhcmUgd2FzIGNhbmNlbGxlZCBiZWZvcmUgcHJlcGFyaW5nIHRoZSBwcmVmZXRjaGVyIik7Ci0KLSAgICAgICAgICAgICAgICBwcmVmZXRjaGVyLmNsZWFyKCk7Ci0gICAgICAgICAgICAgICAgYWJvcnRQcmVwYXJlKFVOS05PV05fRVJST1IpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIExPR0koImNhbGxpbmcgcHJlZmV0Y2hlci0+cHJlcGFyZSgpIik7Ci0gICAgICAgIHN0YXR1c190IHJlc3VsdCA9Ci0gICAgICAgICAgICBwcmVmZXRjaGVyLT5wcmVwYXJlKCZBd2Vzb21lUGxheWVyOjpDb250aW51ZVByZXBhcmF0aW9uLCB0aGlzKTsKLQotICAgICAgICBwcmVmZXRjaGVyLmNsZWFyKCk7Ci0KLSAgICAgICAgaWYgKHJlc3VsdCA9PSBPSykgewotICAgICAgICAgICAgTE9HSSgicHJlZmV0Y2hlciBpcyBkb25lIHByZXBhcmluZyIpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKLQotICAgICAgICAgICAgQ0hFQ0tfRVEocmVzdWx0LCAtRUlOVFIpOwotCi0gICAgICAgICAgICBMT0dJKCJwcmVmZXRjaGVyLT5wcmVwYXJlKCkgd2FzIGNhbmNlbGxlZCBlYXJseS4iKTsKLSAgICAgICAgICAgIGFib3J0UHJlcGFyZShVTktOT1dOX0VSUk9SKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQogICAgIH0KIAogICAgIE11dGV4OjpBdXRvbG9jayBhdXRvTG9jayhtTG9jayk7CmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9DYWNoaW5nRGF0YVNvdXJjZS5jcHAgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9DYWNoaW5nRGF0YVNvdXJjZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjYTQ2M2UuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvQ2FjaGluZ0RhdGFTb3VyY2UuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTY1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi0jaW5jbHVkZSA8c3RkbGliLmg+Ci0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0KLSNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9DYWNoaW5nRGF0YVNvdXJjZS5oPgotI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhRGVidWcuaD4KLQotbmFtZXNwYWNlIGFuZHJvaWQgewotCi1DYWNoaW5nRGF0YVNvdXJjZTo6Q2FjaGluZ0RhdGFTb3VyY2UoCi0gICAgICAgIGNvbnN0IHNwPERhdGFTb3VyY2U+ICZzb3VyY2UsIHNpemVfdCBwYWdlU2l6ZSwgaW50IG51bVBhZ2VzKQotICAgIDogbVNvdXJjZShzb3VyY2UpLAotICAgICAgbURhdGEobWFsbG9jKHBhZ2VTaXplICogbnVtUGFnZXMpKSwKLSAgICAgIG1QYWdlU2l6ZShwYWdlU2l6ZSksCi0gICAgICBtRmlyc3QoTlVMTCksCi0gICAgICBtTGFzdChOVUxMKSB7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1QYWdlczsgKytpKSB7Ci0gICAgICAgIFBhZ2UgKnBhZ2UgPSBuZXcgUGFnZTsKLSAgICAgICAgcGFnZS0+bVByZXYgPSBtTGFzdDsKLSAgICAgICAgcGFnZS0+bU5leHQgPSBOVUxMOwotCi0gICAgICAgIGlmIChtTGFzdCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBtRmlyc3QgPSBwYWdlOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbUxhc3QtPm1OZXh0ID0gcGFnZTsKLSAgICAgICAgfQotCi0gICAgICAgIG1MYXN0ID0gcGFnZTsKLQotICAgICAgICBwYWdlLT5tT2Zmc2V0ID0gLTE7Ci0gICAgICAgIHBhZ2UtPm1MZW5ndGggPSAwOwotICAgICAgICBwYWdlLT5tRGF0YSA9IChjaGFyICopbURhdGEgKyBtUGFnZVNpemUgKiBpOwotICAgIH0KLX0KLQotQ2FjaGluZ0RhdGFTb3VyY2U6On5DYWNoaW5nRGF0YVNvdXJjZSgpIHsKLSAgICBQYWdlICpwYWdlID0gbUZpcnN0OwotICAgIHdoaWxlIChwYWdlICE9IE5VTEwpIHsKLSAgICAgICAgUGFnZSAqbmV4dCA9IHBhZ2UtPm1OZXh0OwotICAgICAgICBkZWxldGUgcGFnZTsKLSAgICAgICAgcGFnZSA9IG5leHQ7Ci0gICAgfQotICAgIG1GaXJzdCA9IG1MYXN0ID0gTlVMTDsKLQotICAgIGZyZWUobURhdGEpOwotICAgIG1EYXRhID0gTlVMTDsKLX0KLQotc3RhdHVzX3QgQ2FjaGluZ0RhdGFTb3VyY2U6OmluaXRDaGVjaygpIGNvbnN0IHsKLSAgICByZXR1cm4gbVNvdXJjZS0+aW5pdENoZWNrKCk7Ci19Ci0KLXN0YXR1c190IENhY2hpbmdEYXRhU291cmNlOjpnZXRTaXplKG9mZl90ICpzaXplKSB7Ci0gICAgcmV0dXJuIG1Tb3VyY2UtPmdldFNpemUoc2l6ZSk7Ci19Ci0KLXVpbnQzMl90IENhY2hpbmdEYXRhU291cmNlOjpmbGFncygpIHsKLSAgICByZXR1cm4gbVNvdXJjZS0+ZmxhZ3MoKTsKLX0KLQotc3NpemVfdCBDYWNoaW5nRGF0YVNvdXJjZTo6cmVhZEF0KG9mZl90IG9mZnNldCwgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUpIHsKLSAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobUxvY2spOwotCi0gICAgc2l6ZV90IHRvdGFsID0gMDsKLSAgICB3aGlsZSAoc2l6ZSA+IDApIHsKLSAgICAgICAgUGFnZSAqcGFnZSA9IG1GaXJzdDsKLSAgICAgICAgd2hpbGUgKHBhZ2UgIT0gTlVMTCkgewotICAgICAgICAgICAgaWYgKHBhZ2UtPm1PZmZzZXQgPj0gMCAmJiBvZmZzZXQgPj0gcGFnZS0+bU9mZnNldAotICAgICAgICAgICAgICAgICYmIG9mZnNldCA8IHBhZ2UtPm1PZmZzZXQgKyAob2ZmX3QpcGFnZS0+bUxlbmd0aCkgewotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcGFnZSA9IHBhZ2UtPm1OZXh0OwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHBhZ2UgPT0gTlVMTCkgewotICAgICAgICAgICAgcGFnZSA9IGFsbG9jYXRlX3BhZ2UoKTsKLSAgICAgICAgICAgIHBhZ2UtPm1PZmZzZXQgPSBvZmZzZXQgLSBvZmZzZXQgJSBtUGFnZVNpemU7Ci0gICAgICAgICAgICBzc2l6ZV90IG4gPSBtU291cmNlLT5yZWFkQXQocGFnZS0+bU9mZnNldCwgcGFnZS0+bURhdGEsIG1QYWdlU2l6ZSk7Ci0gICAgICAgICAgICBpZiAobiA8IDApIHsKLSAgICAgICAgICAgICAgICBwYWdlLT5tTGVuZ3RoID0gMDsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcGFnZS0+bUxlbmd0aCA9IChzaXplX3QpbjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1GaXJzdC0+bVByZXYgPSBwYWdlOwotICAgICAgICAgICAgcGFnZS0+bU5leHQgPSBtRmlyc3Q7Ci0gICAgICAgICAgICBwYWdlLT5tUHJldiA9IE5VTEw7Ci0gICAgICAgICAgICBtRmlyc3QgPSBwYWdlOwotCi0gICAgICAgICAgICBpZiAobiA8IDApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKG9mZnNldCA+PSBwYWdlLT5tT2Zmc2V0ICsgKG9mZl90KXBhZ2UtPm1MZW5ndGgpIHsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIE1vdmUgInBhZ2UiIHRvIHRoZSBmcm9udCBpbiBMUlUgb3JkZXIuCi0gICAgICAgICAgICBpZiAocGFnZS0+bU5leHQgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIHBhZ2UtPm1OZXh0LT5tUHJldiA9IHBhZ2UtPm1QcmV2OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtTGFzdCA9IHBhZ2UtPm1QcmV2OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAocGFnZS0+bVByZXYgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIHBhZ2UtPm1QcmV2LT5tTmV4dCA9IHBhZ2UtPm1OZXh0OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtRmlyc3QgPSBwYWdlLT5tTmV4dDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbUZpcnN0LT5tUHJldiA9IHBhZ2U7Ci0gICAgICAgICAgICBwYWdlLT5tTmV4dCA9IG1GaXJzdDsKLSAgICAgICAgICAgIHBhZ2UtPm1QcmV2ID0gTlVMTDsKLSAgICAgICAgICAgIG1GaXJzdCA9IHBhZ2U7Ci0gICAgICAgIH0KLQotICAgICAgICBzaXplX3QgY29weSA9IHBhZ2UtPm1MZW5ndGggLSAob2Zmc2V0IC0gcGFnZS0+bU9mZnNldCk7Ci0gICAgICAgIGlmIChjb3B5ID4gc2l6ZSkgewotICAgICAgICAgICAgY29weSA9IHNpemU7Ci0gICAgICAgIH0KLSAgICAgICAgbWVtY3B5KGRhdGEsKGNvbnN0IGNoYXIgKilwYWdlLT5tRGF0YSArIChvZmZzZXQgLSBwYWdlLT5tT2Zmc2V0KSwKLSAgICAgICAgICAgICAgIGNvcHkpOwotCi0gICAgICAgIHRvdGFsICs9IGNvcHk7Ci0KLSAgICAgICAgaWYgKHBhZ2UtPm1MZW5ndGggPCBtUGFnZVNpemUpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgd2FzIHRoZSBmaW5hbCBwYWdlLiBUaGVyZSBpcyBubyBtb3JlIGRhdGEgYmV5b25kIGl0LgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLQotICAgICAgICBvZmZzZXQgKz0gY29weTsKLSAgICAgICAgc2l6ZSAtPSBjb3B5OwotICAgICAgICBkYXRhID0gKGNoYXIgKilkYXRhICsgY29weTsKLSAgICB9Ci0KLSAgICByZXR1cm4gdG90YWw7Ci19Ci0KLUNhY2hpbmdEYXRhU291cmNlOjpQYWdlICpDYWNoaW5nRGF0YVNvdXJjZTo6YWxsb2NhdGVfcGFnZSgpIHsKLSAgICAvLyBUaGUgbGFzdCBwYWdlIGlzIHRoZSBsZWFzdCByZWNlbnRseSB1c2VkLCBpLmUuIG9sZGVzdC4KLQotICAgIFBhZ2UgKnBhZ2UgPSBtTGFzdDsKLQotICAgIHBhZ2UtPm1QcmV2LT5tTmV4dCA9IE5VTEw7Ci0gICAgbUxhc3QgPSBwYWdlLT5tUHJldjsKLSAgICBwYWdlLT5tUHJldiA9IE5VTEw7Ci0KLSAgICByZXR1cm4gcGFnZTsKLX0KLQotfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L0NhbWVyYVNvdXJjZS5jcHAgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9DYW1lcmFTb3VyY2UuY3BwCmluZGV4IDA3NWIxZTMuLjZmNGM5ODAgMTAwNjQ0Ci0tLSBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L0NhbWVyYVNvdXJjZS5jcHAKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvQ2FtZXJhU291cmNlLmNwcApAQCAtMTQsMTIgKzE0LDEyIEBACiAgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KICAqLwogCi0jaW5jbHVkZSA8c3lzL3RpbWUuaD4KKy8vI2RlZmluZSBMT0dfTkRFQlVHIDAKKyNkZWZpbmUgTE9HX1RBRyAiQ2FtZXJhU291cmNlIgorI2luY2x1ZGUgPHV0aWxzL0xvZy5oPgogCiAjaW5jbHVkZSA8T01YX0NvbXBvbmVudC5oPgotCi0jaW5jbHVkZSA8YmluZGVyL0lTZXJ2aWNlTWFuYWdlci5oPgotI2luY2x1ZGUgPGN1dGlscy9wcm9wZXJ0aWVzLmg+IC8vIGZvciBwcm9wZXJ0eV9nZXQKKyNpbmNsdWRlIDxiaW5kZXIvSVBDVGhyZWFkU3RhdGUuaD4KICNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9DYW1lcmFTb3VyY2UuaD4KICNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYURlYnVnLmg+CiAjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFEZWZzLmg+CkBAIC0yNyw0NiArMjcsMTEgQEAKICNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZXRhRGF0YS5oPgogI2luY2x1ZGUgPGNhbWVyYS9DYW1lcmEuaD4KICNpbmNsdWRlIDxjYW1lcmEvQ2FtZXJhUGFyYW1ldGVycy5oPgotI2luY2x1ZGUgPHVpL0dyYXBoaWNCdWZmZXIuaD4KLSNpbmNsdWRlIDx1aS9PdmVybGF5Lmg+Ci0jaW5jbHVkZSA8c3VyZmFjZWZsaW5nZXIvSVN1cmZhY2UuaD4KICNpbmNsdWRlIDx1dGlscy9TdHJpbmc4Lmg+CisjaW5jbHVkZSA8Y3V0aWxzL3Byb3BlcnRpZXMuaD4KIAogbmFtZXNwYWNlIGFuZHJvaWQgewogCi1zdGF0aWMgaW50NjRfdCBnZXROb3dVcygpIHsKLSAgICBzdHJ1Y3QgdGltZXZhbCB0djsKLSAgICBnZXR0aW1lb2ZkYXkoJnR2LCBOVUxMKTsKLQotICAgIHJldHVybiAoaW50NjRfdCl0di50dl91c2VjICsgdHYudHZfc2VjICogMTAwMDAwMDsKLX0KLQotc3RydWN0IER1bW15U3VyZmFjZSA6IHB1YmxpYyBCblN1cmZhY2UgewotICAgIER1bW15U3VyZmFjZSgpIHt9Ci0KLSAgICB2aXJ0dWFsIHNwPEdyYXBoaWNCdWZmZXI+IHJlcXVlc3RCdWZmZXIoaW50IGJ1ZmZlcklkeCwgaW50IHVzYWdlKSB7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIHZpcnR1YWwgc3RhdHVzX3QgcmVnaXN0ZXJCdWZmZXJzKGNvbnN0IEJ1ZmZlckhlYXAgJmJ1ZmZlcnMpIHsKLSAgICAgICAgcmV0dXJuIE9LOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCBwb3N0QnVmZmVyKHNzaXplX3Qgb2Zmc2V0KSB7fQotICAgIHZpcnR1YWwgdm9pZCB1bnJlZ2lzdGVyQnVmZmVycygpIHt9Ci0KLSAgICB2aXJ0dWFsIHNwPE92ZXJsYXlSZWY+IGNyZWF0ZU92ZXJsYXkoCi0gICAgICAgICAgICB1aW50MzJfdCB3LCB1aW50MzJfdCBoLCBpbnQzMl90IGZvcm1hdCwgaW50MzJfdCBvcmllbnRhdGlvbikgewotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0KLXByb3RlY3RlZDoKLSAgICB2aXJ0dWFsIH5EdW1teVN1cmZhY2UoKSB7fQotCi0gICAgRHVtbXlTdXJmYWNlKGNvbnN0IER1bW15U3VyZmFjZSAmKTsKLSAgICBEdW1teVN1cmZhY2UgJm9wZXJhdG9yPShjb25zdCBEdW1teVN1cmZhY2UgJik7Ci19OwotCiBzdHJ1Y3QgQ2FtZXJhU291cmNlTGlzdGVuZXIgOiBwdWJsaWMgQ2FtZXJhTGlzdGVuZXIgewogICAgIENhbWVyYVNvdXJjZUxpc3RlbmVyKGNvbnN0IHNwPENhbWVyYVNvdXJjZT4gJnNvdXJjZSk7CiAKQEAgLTEwMCwyMiArNjUsNDAgQEAKIHZvaWQgQ2FtZXJhU291cmNlTGlzdGVuZXI6OnBvc3REYXRhKGludDMyX3QgbXNnVHlwZSwgY29uc3Qgc3A8SU1lbW9yeT4gJmRhdGFQdHIpIHsKICAgICBMT0dWKCJwb3N0RGF0YSglZCwgcHRyOiVwLCBzaXplOiVkKSIsCiAgICAgICAgICBtc2dUeXBlLCBkYXRhUHRyLT5wb2ludGVyKCksIGRhdGFQdHItPnNpemUoKSk7Ci0KLSAgICBzcDxDYW1lcmFTb3VyY2U+IHNvdXJjZSA9IG1Tb3VyY2UucHJvbW90ZSgpOwotICAgIGlmIChzb3VyY2UuZ2V0KCkgIT0gTlVMTCkgewotICAgICAgICBzb3VyY2UtPmRhdGFDYWxsYmFjayhtc2dUeXBlLCBkYXRhUHRyKTsKLSAgICB9CiB9CiAKIHZvaWQgQ2FtZXJhU291cmNlTGlzdGVuZXI6OnBvc3REYXRhVGltZXN0YW1wKAogICAgICAgICBuc2Vjc190IHRpbWVzdGFtcCwgaW50MzJfdCBtc2dUeXBlLCBjb25zdCBzcDxJTWVtb3J5PiYgZGF0YVB0cikgewotICAgIExPR1YoInBvc3REYXRhVGltZXN0YW1wKCVsbGQsICVkLCBwdHI6JXAsIHNpemU6JWQpIiwKLSAgICAgICAgIHRpbWVzdGFtcCwgbXNnVHlwZSwgZGF0YVB0ci0+cG9pbnRlcigpLCBkYXRhUHRyLT5zaXplKCkpOworCisgICAgc3A8Q2FtZXJhU291cmNlPiBzb3VyY2UgPSBtU291cmNlLnByb21vdGUoKTsKKyAgICBpZiAoc291cmNlLmdldCgpICE9IE5VTEwpIHsKKyAgICAgICAgc291cmNlLT5kYXRhQ2FsbGJhY2tUaW1lc3RhbXAodGltZXN0YW1wLzEwMDAsIG1zZ1R5cGUsIGRhdGFQdHIpOworICAgIH0KK30KKworc3RhdGljIGludDMyX3QgZ2V0Q29sb3JGb3JtYXQoY29uc3QgY2hhciogY29sb3JGb3JtYXQpIHsKKyAgICBpZiAoIXN0cmNtcChjb2xvckZvcm1hdCwgQ2FtZXJhUGFyYW1ldGVyczo6UElYRUxfRk9STUFUX1lVVjQyMlNQKSkgeworICAgICAgIHJldHVybiBPTVhfQ09MT1JfRm9ybWF0WVVWNDIyU2VtaVBsYW5hcjsKKyAgICB9CisKKyAgICBpZiAoIXN0cmNtcChjb2xvckZvcm1hdCwgQ2FtZXJhUGFyYW1ldGVyczo6UElYRUxfRk9STUFUX1lVVjQyMFNQKSkgeworICAgICAgICByZXR1cm4gT01YX0NPTE9SX0Zvcm1hdFlVVjQyMFNlbWlQbGFuYXI7CisgICAgfQorCisgICAgaWYgKCFzdHJjbXAoY29sb3JGb3JtYXQsIENhbWVyYVBhcmFtZXRlcnM6OlBJWEVMX0ZPUk1BVF9ZVVY0MjJJKSkgeworICAgICAgICByZXR1cm4gT01YX0NPTE9SX0Zvcm1hdFlDYllDcjsKKyAgICB9CisKKyAgICBpZiAoIXN0cmNtcChjb2xvckZvcm1hdCwgQ2FtZXJhUGFyYW1ldGVyczo6UElYRUxfRk9STUFUX1JHQjU2NSkpIHsKKyAgICAgICByZXR1cm4gT01YX0NPTE9SX0Zvcm1hdDE2Yml0UkdCNTY1OworICAgIH0KKworICAgIENIRUNLX0VRKDAsICJVbmtub3duIGNvbG9yIGZvcm1hdCIpOwogfQogCiAvLyBzdGF0aWMKIENhbWVyYVNvdXJjZSAqQ2FtZXJhU291cmNlOjpDcmVhdGUoKSB7Ci0gICAgc3A8Q2FtZXJhPiBjYW1lcmEgPSBDYW1lcmE6OmNvbm5lY3QoKTsKKyAgICBzcDxDYW1lcmE+IGNhbWVyYSA9IENhbWVyYTo6Y29ubmVjdCgwKTsKIAogICAgIGlmIChjYW1lcmEuZ2V0KCkgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEyNSw5ICsxMDgsNyBAQAogfQogCiAvLyBzdGF0aWMKLUNhbWVyYVNvdXJjZSAqQ2FtZXJhU291cmNlOjpDcmVhdGVGcm9tSUNhbWVyYShjb25zdCBzcDxJQ2FtZXJhPiAmaWNhbWVyYSkgewotICAgIHNwPENhbWVyYT4gY2FtZXJhID0gQ2FtZXJhOjpjcmVhdGUoaWNhbWVyYSk7Ci0KK0NhbWVyYVNvdXJjZSAqQ2FtZXJhU291cmNlOjpDcmVhdGVGcm9tQ2FtZXJhKGNvbnN0IHNwPENhbWVyYT4gJmNhbWVyYSkgewogICAgIGlmIChjYW1lcmEuZ2V0KCkgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0xMzcsMjMgKzExOCw1MCBAQAogCiBDYW1lcmFTb3VyY2U6OkNhbWVyYVNvdXJjZShjb25zdCBzcDxDYW1lcmE+ICZjYW1lcmEpCiAgICAgOiBtQ2FtZXJhKGNhbWVyYSksCi0gICAgICBtV2lkdGgoMCksCi0gICAgICBtSGVpZ2h0KDApLAogICAgICAgbUZpcnN0RnJhbWVUaW1lVXMoMCksCi0gICAgICBtTnVtRnJhbWVzKDApLAorICAgICAgbUxhc3RGcmFtZVRpbWVzdGFtcFVzKDApLAorICAgICAgbU51bUZyYW1lc1JlY2VpdmVkKDApLAorICAgICAgbU51bUZyYW1lc0VuY29kZWQoMCksCisgICAgICBtTnVtRnJhbWVzRHJvcHBlZCgwKSwKKyAgICAgIG1OdW1HbGl0Y2hlcygwKSwKKyAgICAgIG1HbGl0Y2hEdXJhdGlvblRocmVzaG9sZFVzKDIwMDAwMCksCisgICAgICBtQ29sbGVjdFN0YXRzKGZhbHNlKSwKICAgICAgIG1TdGFydGVkKGZhbHNlKSB7Ci0gICAgY2hhciB2YWx1ZVtQUk9QRVJUWV9WQUxVRV9NQVhdOwotICAgIGlmIChwcm9wZXJ0eV9nZXQoInJvLmhhcmR3YXJlIiwgdmFsdWUsIE5VTEwpICYmICFzdHJjbXAodmFsdWUsICJzaG9sZXMiKSkgewotICAgICAgICAvLyBUaGUgaGFyZHdhcmUgZW5jb2RlcihzKSBkbyBub3Qgc3VwcG9ydCB5dXY0MjAsIGJ1dCBvbmx5IFlDYllDciwKLSAgICAgICAgLy8gZm9ydHVuYXRlbHkgdGhlIGNhbWVyYSBhbHNvIHN1cHBvcnRzIHRoaXMsIHNvIHdlIG5lZWRuJ3QgdHJhbnNjb2RlLgotICAgICAgICBtQ2FtZXJhLT5zZXRQYXJhbWV0ZXJzKFN0cmluZzgoInByZXZpZXctZm9ybWF0PXl1djQyMmkteXV5diIpKTsKLSAgICB9CiAKKyAgICBpbnQ2NF90IHRva2VuID0gSVBDVGhyZWFkU3RhdGU6OnNlbGYoKS0+Y2xlYXJDYWxsaW5nSWRlbnRpdHkoKTsKICAgICBTdHJpbmc4IHMgPSBtQ2FtZXJhLT5nZXRQYXJhbWV0ZXJzKCk7CisgICAgSVBDVGhyZWFkU3RhdGU6OnNlbGYoKS0+cmVzdG9yZUNhbGxpbmdJZGVudGl0eSh0b2tlbik7CisKICAgICBwcmludGYoInBhcmFtczogXCIlc1wiXG4iLCBzLnN0cmluZygpKTsKIAorICAgIGludDMyX3Qgd2lkdGgsIGhlaWdodCwgc3RyaWRlLCBzbGljZUhlaWdodDsKICAgICBDYW1lcmFQYXJhbWV0ZXJzIHBhcmFtcyhzKTsKLSAgICBwYXJhbXMuZ2V0UHJldmlld1NpemUoJm1XaWR0aCwgJm1IZWlnaHQpOworICAgIHBhcmFtcy5nZXRQcmV2aWV3U2l6ZSgmd2lkdGgsICZoZWlnaHQpOworCisgICAgLy8gQ2FsY3VsYXRlIGdsaXRjaCBkdXJhdG9uIHRocmVzaG9sZCBiYXNlZCBvbiBmcmFtZSByYXRlCisgICAgaW50MzJfdCBmcmFtZVJhdGUgPSBwYXJhbXMuZ2V0UHJldmlld0ZyYW1lUmF0ZSgpOworICAgIGludDY0X3QgZ2xpdGNoRHVyYXRpb25VcyA9ICgxMDAwMDAwTEwgLyBmcmFtZVJhdGUpOworICAgIGlmIChnbGl0Y2hEdXJhdGlvblVzID4gbUdsaXRjaER1cmF0aW9uVGhyZXNob2xkVXMpIHsKKyAgICAgICAgbUdsaXRjaER1cmF0aW9uVGhyZXNob2xkVXMgPSBnbGl0Y2hEdXJhdGlvblVzOworICAgIH0KKworICAgIGNvbnN0IGNoYXIgKmNvbG9yRm9ybWF0U3RyID0gcGFyYW1zLmdldChDYW1lcmFQYXJhbWV0ZXJzOjpLRVlfVklERU9fRlJBTUVfRk9STUFUKTsKKyAgICBDSEVDSyhjb2xvckZvcm1hdFN0ciAhPSBOVUxMKTsKKyAgICBpbnQzMl90IGNvbG9yRm9ybWF0ID0gZ2V0Q29sb3JGb3JtYXQoY29sb3JGb3JtYXRTdHIpOworCisgICAgLy8gWFhYOiBxdWVyeSBjYW1lcmEgZm9yIHRoZSBzdHJpZGUgYW5kIHNsaWNlIGhlaWdodAorICAgIC8vIHdoZW4gdGhlIGNhcGFiaWxpdHkgYmVjb21lcyBhdmFpbGFibGUuCisgICAgc3RyaWRlID0gd2lkdGg7CisgICAgc2xpY2VIZWlnaHQgPSBoZWlnaHQ7CisKKyAgICBtTWV0YSA9IG5ldyBNZXRhRGF0YTsKKyAgICBtTWV0YS0+c2V0Q1N0cmluZyhrS2V5TUlNRVR5cGUsIE1FRElBX01JTUVUWVBFX1ZJREVPX1JBVyk7CisgICAgbU1ldGEtPnNldEludDMyKGtLZXlDb2xvckZvcm1hdCwgY29sb3JGb3JtYXQpOworICAgIG1NZXRhLT5zZXRJbnQzMihrS2V5V2lkdGgsIHdpZHRoKTsKKyAgICBtTWV0YS0+c2V0SW50MzIoa0tleUhlaWdodCwgaGVpZ2h0KTsKKyAgICBtTWV0YS0+c2V0SW50MzIoa0tleVN0cmlkZSwgc3RyaWRlKTsKKyAgICBtTWV0YS0+c2V0SW50MzIoa0tleVNsaWNlSGVpZ2h0LCBzbGljZUhlaWdodCk7CisKIH0KIAogQ2FtZXJhU291cmNlOjp+Q2FtZXJhU291cmNlKCkgewpAQCAtMTYyLDU1ICsxNzAsOTkgQEAKICAgICB9CiB9CiAKLXZvaWQgQ2FtZXJhU291cmNlOjpzZXRQcmV2aWV3U3VyZmFjZShjb25zdCBzcDxJU3VyZmFjZT4gJnN1cmZhY2UpIHsKLSAgICBtUHJldmlld1N1cmZhY2UgPSBzdXJmYWNlOwotfQotCi1zdGF0dXNfdCBDYW1lcmFTb3VyY2U6OnN0YXJ0KE1ldGFEYXRhICopIHsKK3N0YXR1c190IENhbWVyYVNvdXJjZTo6c3RhcnQoTWV0YURhdGEgKm1ldGEpIHsKICAgICBDSEVDSyghbVN0YXJ0ZWQpOwogCisgICAgY2hhciB2YWx1ZVtQUk9QRVJUWV9WQUxVRV9NQVhdOworICAgIGlmIChwcm9wZXJ0eV9nZXQoIm1lZGlhLnN0YWdlZnJpZ2h0LnJlY29yZC1zdGF0cyIsIHZhbHVlLCBOVUxMKQorICAgICAgICAmJiAoIXN0cmNtcCh2YWx1ZSwgIjEiKSB8fCAhc3RyY2FzZWNtcCh2YWx1ZSwgInRydWUiKSkpIHsKKyAgICAgICAgbUNvbGxlY3RTdGF0cyA9IHRydWU7CisgICAgfQorCisgICAgbVN0YXJ0VGltZVVzID0gMDsKKyAgICBpbnQ2NF90IHN0YXJ0VGltZVVzOworICAgIGlmIChtZXRhICYmIG1ldGEtPmZpbmRJbnQ2NChrS2V5VGltZSwgJnN0YXJ0VGltZVVzKSkgeworICAgICAgICBtU3RhcnRUaW1lVXMgPSBzdGFydFRpbWVVczsKKyAgICB9CisKKyAgICBpbnQ2NF90IHRva2VuID0gSVBDVGhyZWFkU3RhdGU6OnNlbGYoKS0+Y2xlYXJDYWxsaW5nSWRlbnRpdHkoKTsKICAgICBtQ2FtZXJhLT5zZXRMaXN0ZW5lcihuZXcgQ2FtZXJhU291cmNlTGlzdGVuZXIodGhpcykpOwotCi0gICAgc3RhdHVzX3QgZXJyID0KLSAgICAgICAgbUNhbWVyYS0+c2V0UHJldmlld0Rpc3BsYXkoCi0gICAgICAgICAgICAgICAgbVByZXZpZXdTdXJmYWNlICE9IE5VTEwgPyBtUHJldmlld1N1cmZhY2UgOiBuZXcgRHVtbXlTdXJmYWNlKTsKLSAgICBDSEVDS19FUShlcnIsIE9LKTsKLQotICAgIG1DYW1lcmEtPnNldFByZXZpZXdDYWxsYmFja0ZsYWdzKAotICAgICAgICAgICAgRlJBTUVfQ0FMTEJBQ0tfRkxBR19FTkFCTEVfTUFTSwotICAgICAgICAgICAgfCBGUkFNRV9DQUxMQkFDS19GTEFHX0NPUFlfT1VUX01BU0spOwotCi0gICAgZXJyID0gbUNhbWVyYS0+c3RhcnRQcmV2aWV3KCk7Ci0gICAgQ0hFQ0tfRVEoZXJyLCBPSyk7CisgICAgQ0hFQ0tfRVEoT0ssIG1DYW1lcmEtPnN0YXJ0UmVjb3JkaW5nKCkpOworICAgIElQQ1RocmVhZFN0YXRlOjpzZWxmKCktPnJlc3RvcmVDYWxsaW5nSWRlbnRpdHkodG9rZW4pOwogCiAgICAgbVN0YXJ0ZWQgPSB0cnVlOwotCiAgICAgcmV0dXJuIE9LOwogfQogCiBzdGF0dXNfdCBDYW1lcmFTb3VyY2U6OnN0b3AoKSB7Ci0gICAgQ0hFQ0sobVN0YXJ0ZWQpOwotCi0gICAgbUNhbWVyYS0+c3RvcFByZXZpZXcoKTsKLQorICAgIExPR1YoInN0b3AiKTsKKyAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobUxvY2spOwogICAgIG1TdGFydGVkID0gZmFsc2U7CisgICAgbUZyYW1lQXZhaWxhYmxlQ29uZGl0aW9uLnNpZ25hbCgpOwogCisgICAgaW50NjRfdCB0b2tlbiA9IElQQ1RocmVhZFN0YXRlOjpzZWxmKCktPmNsZWFyQ2FsbGluZ0lkZW50aXR5KCk7CisgICAgbUNhbWVyYS0+c2V0TGlzdGVuZXIoTlVMTCk7CisgICAgbUNhbWVyYS0+c3RvcFJlY29yZGluZygpOworICAgIHJlbGVhc2VRdWV1ZWRGcmFtZXMoKTsKKyAgICB3aGlsZSAoIW1GcmFtZXNCZWluZ0VuY29kZWQuZW1wdHkoKSkgeworICAgICAgICBMT0dJKCJXYWl0aW5nIGZvciBvdXRzdGFuZGluZyBmcmFtZXMgYmVpbmcgZW5jb2RlZDogJWQiLAorICAgICAgICAgICAgICAgIG1GcmFtZXNCZWluZ0VuY29kZWQuc2l6ZSgpKTsKKyAgICAgICAgbUZyYW1lQ29tcGxldGVDb25kaXRpb24ud2FpdChtTG9jayk7CisgICAgfQorICAgIG1DYW1lcmEgPSBOVUxMOworICAgIElQQ1RocmVhZFN0YXRlOjpzZWxmKCktPnJlc3RvcmVDYWxsaW5nSWRlbnRpdHkodG9rZW4pOworCisgICAgaWYgKG1Db2xsZWN0U3RhdHMpIHsKKyAgICAgICAgTE9HSSgiRnJhbWVzIHJlY2VpdmVkL2VuY29kZWQvZHJvcHBlZDogJWQvJWQvJWQgaW4gJWxsZCB1cyIsCisgICAgICAgICAgICAgICAgbU51bUZyYW1lc1JlY2VpdmVkLCBtTnVtRnJhbWVzRW5jb2RlZCwgbU51bUZyYW1lc0Ryb3BwZWQsCisgICAgICAgICAgICAgICAgbUxhc3RGcmFtZVRpbWVzdGFtcFVzIC0gbUZpcnN0RnJhbWVUaW1lVXMpOworICAgIH0KKworICAgIENIRUNLX0VRKG1OdW1GcmFtZXNSZWNlaXZlZCwgbU51bUZyYW1lc0VuY29kZWQgKyBtTnVtRnJhbWVzRHJvcHBlZCk7CiAgICAgcmV0dXJuIE9LOwogfQogCi1zcDxNZXRhRGF0YT4gQ2FtZXJhU291cmNlOjpnZXRGb3JtYXQoKSB7Ci0gICAgc3A8TWV0YURhdGE+IG1ldGEgPSBuZXcgTWV0YURhdGE7Ci0gICAgbWV0YS0+c2V0Q1N0cmluZyhrS2V5TUlNRVR5cGUsIE1FRElBX01JTUVUWVBFX1ZJREVPX1JBVyk7Ci0gICAgbWV0YS0+c2V0SW50MzIoa0tleUNvbG9yRm9ybWF0LCBPTVhfQ09MT1JfRm9ybWF0WVVWNDIwU2VtaVBsYW5hcik7Ci0gICAgbWV0YS0+c2V0SW50MzIoa0tleVdpZHRoLCBtV2lkdGgpOwotICAgIG1ldGEtPnNldEludDMyKGtLZXlIZWlnaHQsIG1IZWlnaHQpOwordm9pZCBDYW1lcmFTb3VyY2U6OnJlbGVhc2VRdWV1ZWRGcmFtZXMoKSB7CisgICAgTGlzdDxzcDxJTWVtb3J5PiA+OjppdGVyYXRvciBpdDsKKyAgICB3aGlsZSAoIW1GcmFtZXNSZWNlaXZlZC5lbXB0eSgpKSB7CisgICAgICAgIGl0ID0gbUZyYW1lc1JlY2VpdmVkLmJlZ2luKCk7CisgICAgICAgIG1DYW1lcmEtPnJlbGVhc2VSZWNvcmRpbmdGcmFtZSgqaXQpOworICAgICAgICBtRnJhbWVzUmVjZWl2ZWQuZXJhc2UoaXQpOworICAgICAgICArK21OdW1GcmFtZXNEcm9wcGVkOworICAgIH0KK30KIAotICAgIHJldHVybiBtZXRhOworc3A8TWV0YURhdGE+IENhbWVyYVNvdXJjZTo6Z2V0Rm9ybWF0KCkgeworICAgIHJldHVybiBtTWV0YTsKK30KKwordm9pZCBDYW1lcmFTb3VyY2U6OnJlbGVhc2VPbmVSZWNvcmRpbmdGcmFtZShjb25zdCBzcDxJTWVtb3J5PiYgZnJhbWUpIHsKKyAgICBpbnQ2NF90IHRva2VuID0gSVBDVGhyZWFkU3RhdGU6OnNlbGYoKS0+Y2xlYXJDYWxsaW5nSWRlbnRpdHkoKTsKKyAgICBtQ2FtZXJhLT5yZWxlYXNlUmVjb3JkaW5nRnJhbWUoZnJhbWUpOworICAgIElQQ1RocmVhZFN0YXRlOjpzZWxmKCktPnJlc3RvcmVDYWxsaW5nSWRlbnRpdHkodG9rZW4pOworfQorCit2b2lkIENhbWVyYVNvdXJjZTo6c2lnbmFsQnVmZmVyUmV0dXJuZWQoTWVkaWFCdWZmZXIgKmJ1ZmZlcikgeworICAgIExPR1YoInNpZ25hbEJ1ZmZlclJldHVybmVkOiAlcCIsIGJ1ZmZlci0+ZGF0YSgpKTsKKyAgICBmb3IgKExpc3Q8c3A8SU1lbW9yeT4gPjo6aXRlcmF0b3IgaXQgPSBtRnJhbWVzQmVpbmdFbmNvZGVkLmJlZ2luKCk7CisgICAgICAgICBpdCAhPSBtRnJhbWVzQmVpbmdFbmNvZGVkLmVuZCgpOyArK2l0KSB7CisgICAgICAgIGlmICgoKml0KS0+cG9pbnRlcigpID09ICBidWZmZXItPmRhdGEoKSkgeworCisgICAgICAgICAgICByZWxlYXNlT25lUmVjb3JkaW5nRnJhbWUoKCppdCkpOworICAgICAgICAgICAgbUZyYW1lc0JlaW5nRW5jb2RlZC5lcmFzZShpdCk7CisgICAgICAgICAgICArK21OdW1GcmFtZXNFbmNvZGVkOworICAgICAgICAgICAgYnVmZmVyLT5zZXRPYnNlcnZlcigwKTsKKyAgICAgICAgICAgIGJ1ZmZlci0+cmVsZWFzZSgpOworICAgICAgICAgICAgbUZyYW1lQ29tcGxldGVDb25kaXRpb24uc2lnbmFsKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisgICAgQ0hFQ0tfRVEoMCwgInNpZ25hbEJ1ZmZlclJldHVybmVkOiBib2d1cyBidWZmZXIiKTsKIH0KIAogc3RhdHVzX3QgQ2FtZXJhU291cmNlOjpyZWFkKAogICAgICAgICBNZWRpYUJ1ZmZlciAqKmJ1ZmZlciwgY29uc3QgUmVhZE9wdGlvbnMgKm9wdGlvbnMpIHsKLSAgICBDSEVDSyhtU3RhcnRlZCk7CisgICAgTE9HVigicmVhZCIpOwogCiAgICAgKmJ1ZmZlciA9IE5VTEw7CiAKQEAgLTIyNCwzOCArMjc2LDY3IEBACiAKICAgICB7CiAgICAgICAgIE11dGV4OjpBdXRvbG9jayBhdXRvTG9jayhtTG9jayk7Ci0gICAgICAgIHdoaWxlIChtRnJhbWVzLmVtcHR5KCkpIHsKKyAgICAgICAgd2hpbGUgKG1TdGFydGVkICYmIG1GcmFtZXNSZWNlaXZlZC5lbXB0eSgpKSB7CiAgICAgICAgICAgICBtRnJhbWVBdmFpbGFibGVDb25kaXRpb24ud2FpdChtTG9jayk7CiAgICAgICAgIH0KLQotICAgICAgICBmcmFtZSA9ICptRnJhbWVzLmJlZ2luKCk7Ci0gICAgICAgIG1GcmFtZXMuZXJhc2UobUZyYW1lcy5iZWdpbigpKTsKKyAgICAgICAgaWYgKCFtU3RhcnRlZCkgeworICAgICAgICAgICAgcmV0dXJuIE9LOworICAgICAgICB9CisgICAgICAgIGZyYW1lID0gKm1GcmFtZXNSZWNlaXZlZC5iZWdpbigpOworICAgICAgICBtRnJhbWVzUmVjZWl2ZWQuZXJhc2UobUZyYW1lc1JlY2VpdmVkLmJlZ2luKCkpOwogCiAgICAgICAgIGZyYW1lVGltZSA9ICptRnJhbWVUaW1lcy5iZWdpbigpOwogICAgICAgICBtRnJhbWVUaW1lcy5lcmFzZShtRnJhbWVUaW1lcy5iZWdpbigpKTsKKworICAgICAgICBtRnJhbWVzQmVpbmdFbmNvZGVkLnB1c2hfYmFjayhmcmFtZSk7CisgICAgICAgICpidWZmZXIgPSBuZXcgTWVkaWFCdWZmZXIoZnJhbWUtPnBvaW50ZXIoKSwgZnJhbWUtPnNpemUoKSk7CisgICAgICAgICgqYnVmZmVyKS0+c2V0T2JzZXJ2ZXIodGhpcyk7CisgICAgICAgICgqYnVmZmVyKS0+YWRkX3JlZigpOworICAgICAgICAoKmJ1ZmZlciktPm1ldGFfZGF0YSgpLT5zZXRJbnQ2NChrS2V5VGltZSwgZnJhbWVUaW1lKTsKICAgICB9Ci0KLSAgICAqYnVmZmVyID0gbmV3IE1lZGlhQnVmZmVyKGZyYW1lLT5zaXplKCkpOwotICAgIG1lbWNweSgoKmJ1ZmZlciktPmRhdGEoKSwgZnJhbWUtPnBvaW50ZXIoKSwgZnJhbWUtPnNpemUoKSk7Ci0gICAgKCpidWZmZXIpLT5zZXRfcmFuZ2UoMCwgZnJhbWUtPnNpemUoKSk7Ci0KLSAgICAoKmJ1ZmZlciktPm1ldGFfZGF0YSgpLT5jbGVhcigpOwotICAgICgqYnVmZmVyKS0+bWV0YV9kYXRhKCktPnNldEludDY0KGtLZXlUaW1lLCBmcmFtZVRpbWUpOwotCiAgICAgcmV0dXJuIE9LOwogfQogCi12b2lkIENhbWVyYVNvdXJjZTo6ZGF0YUNhbGxiYWNrKGludDMyX3QgbXNnVHlwZSwgY29uc3Qgc3A8SU1lbW9yeT4gJmRhdGEpIHsKK3ZvaWQgQ2FtZXJhU291cmNlOjpkYXRhQ2FsbGJhY2tUaW1lc3RhbXAoaW50NjRfdCB0aW1lc3RhbXBVcywKKyAgICAgICAgaW50MzJfdCBtc2dUeXBlLCBjb25zdCBzcDxJTWVtb3J5PiAmZGF0YSkgeworICAgIExPR1YoImRhdGFDYWxsYmFja1RpbWVzdGFtcDogdGltZXN0YW1wICVsbGQgdXMiLCB0aW1lc3RhbXBVcyk7CiAgICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKLQotICAgIGludDY0X3Qgbm93VXMgPSBnZXROb3dVcygpOwotICAgIGlmIChtTnVtRnJhbWVzID09IDApIHsKLSAgICAgICAgbUZpcnN0RnJhbWVUaW1lVXMgPSBub3dVczsKKyAgICBpZiAoIW1TdGFydGVkKSB7CisgICAgICAgIHJlbGVhc2VPbmVSZWNvcmRpbmdGcmFtZShkYXRhKTsKKyAgICAgICAgKyttTnVtRnJhbWVzUmVjZWl2ZWQ7CisgICAgICAgICsrbU51bUZyYW1lc0Ryb3BwZWQ7CisgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgKyttTnVtRnJhbWVzOwogCi0gICAgbUZyYW1lcy5wdXNoX2JhY2soZGF0YSk7Ci0gICAgbUZyYW1lVGltZXMucHVzaF9iYWNrKG5vd1VzIC0gbUZpcnN0RnJhbWVUaW1lVXMpOworICAgIGlmIChtTnVtRnJhbWVzUmVjZWl2ZWQgPiAwICYmCisgICAgICAgIHRpbWVzdGFtcFVzIC0gbUxhc3RGcmFtZVRpbWVzdGFtcFVzID4gbUdsaXRjaER1cmF0aW9uVGhyZXNob2xkVXMpIHsKKyAgICAgICAgaWYgKG1OdW1HbGl0Y2hlcyAlIDEwID09IDApIHsgIC8vIERvbid0IHNwYW0gdGhlIGxvZworICAgICAgICAgICAgTE9HVygiTG9uZyBkZWxheSBkZXRlY3RlZCBpbiB2aWRlbyByZWNvcmRpbmciKTsKKyAgICAgICAgfQorICAgICAgICArK21OdW1HbGl0Y2hlczsKKyAgICB9CisKKyAgICBtTGFzdEZyYW1lVGltZXN0YW1wVXMgPSB0aW1lc3RhbXBVczsKKyAgICBpZiAobU51bUZyYW1lc1JlY2VpdmVkID09IDApIHsKKyAgICAgICAgbUZpcnN0RnJhbWVUaW1lVXMgPSB0aW1lc3RhbXBVczsKKyAgICAgICAgLy8gSW5pdGlhbCBkZWxheQorICAgICAgICBpZiAobVN0YXJ0VGltZVVzID4gMCkgeworICAgICAgICAgICAgaWYgKHRpbWVzdGFtcFVzIDwgbVN0YXJ0VGltZVVzKSB7CisgICAgICAgICAgICAgICAgLy8gRnJhbWUgd2FzIGNhcHR1cmVkIGJlZm9yZSByZWNvcmRpbmcgd2FzIHN0YXJ0ZWQKKyAgICAgICAgICAgICAgICAvLyBEcm9wIGl0IHdpdGhvdXQgdXBkYXRpbmcgdGhlIHN0YXRpc3RpY2FsIGRhdGEuCisgICAgICAgICAgICAgICAgcmVsZWFzZU9uZVJlY29yZGluZ0ZyYW1lKGRhdGEpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1TdGFydFRpbWVVcyA9IHRpbWVzdGFtcFVzIC0gbVN0YXJ0VGltZVVzOworICAgICAgICB9CisgICAgfQorICAgICsrbU51bUZyYW1lc1JlY2VpdmVkOworCisgICAgbUZyYW1lc1JlY2VpdmVkLnB1c2hfYmFjayhkYXRhKTsKKyAgICBpbnQ2NF90IHRpbWVVcyA9IG1TdGFydFRpbWVVcyArICh0aW1lc3RhbXBVcyAtIG1GaXJzdEZyYW1lVGltZVVzKTsKKyAgICBtRnJhbWVUaW1lcy5wdXNoX2JhY2sodGltZVVzKTsKKyAgICBMT0dWKCJpbml0aWFsIGRlbGF5OiAlbGxkLCBjdXJyZW50IHRpbWUgc3RhbXA6ICVsbGQiLAorICAgICAgICBtU3RhcnRUaW1lVXMsIHRpbWVVcyk7CiAgICAgbUZyYW1lQXZhaWxhYmxlQ29uZGl0aW9uLnNpZ25hbCgpOwogfQogCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9EYXRhU291cmNlLmNwcCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L0RhdGFTb3VyY2UuY3BwCmluZGV4IGE2NmY4NmIuLjkwYTU5NmMgMTAwNjQ0Ci0tLSBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L0RhdGFTb3VyY2UuY3BwCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L0RhdGFTb3VyY2UuY3BwCkBAIC0xOSwxMSArMTksMTQgQEAKICNpbmNsdWRlICJpbmNsdWRlL01QRUc0RXh0cmFjdG9yLmgiCiAjaW5jbHVkZSAiaW5jbHVkZS9XQVZFeHRyYWN0b3IuaCIKICNpbmNsdWRlICJpbmNsdWRlL09nZ0V4dHJhY3Rvci5oIgorI2luY2x1ZGUgImluY2x1ZGUvTVBFRzJUU0V4dHJhY3Rvci5oIgorI2luY2x1ZGUgImluY2x1ZGUvTnVDYWNoZWRTb3VyY2UyLmgiCisjaW5jbHVkZSAiaW5jbHVkZS9OdUhUVFBEYXRhU291cmNlLmgiCiAKLSNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9DYWNoaW5nRGF0YVNvdXJjZS5oPgorI2luY2x1ZGUgIm1hdHJvc2thL01hdHJvc2thRXh0cmFjdG9yLmgiCisKICNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9EYXRhU291cmNlLmg+CiAjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvRmlsZVNvdXJjZS5oPgotI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L0hUVFBEYXRhU291cmNlLmg+CiAjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFFcnJvcnMuaD4KICNpbmNsdWRlIDx1dGlscy9TdHJpbmc4Lmg+CiAKQEAgLTk0LDYgKzk3LDggQEAKICAgICBSZWdpc3RlclNuaWZmZXIoU25pZmZBTVIpOwogICAgIFJlZ2lzdGVyU25pZmZlcihTbmlmZldBVik7CiAgICAgUmVnaXN0ZXJTbmlmZmVyKFNuaWZmT2dnKTsKKyAgICBSZWdpc3RlclNuaWZmZXIoU25pZmZNYXRyb3NrYSk7CisgICAgUmVnaXN0ZXJTbmlmZmVyKFNuaWZmTVBFRzJUUyk7CiB9CiAKIC8vIHN0YXRpYwpAQCAtMTAzLDExICsxMDgsMTEgQEAKICAgICBpZiAoIXN0cm5jYXNlY21wKCJmaWxlOi8vIiwgdXJpLCA3KSkgewogICAgICAgICBzb3VyY2UgPSBuZXcgRmlsZVNvdXJjZSh1cmkgKyA3KTsKICAgICB9IGVsc2UgaWYgKCFzdHJuY2FzZWNtcCgiaHR0cDovLyIsIHVyaSwgNykpIHsKLSAgICAgICAgc3A8SFRUUERhdGFTb3VyY2U+IGh0dHBTb3VyY2UgPSBuZXcgSFRUUERhdGFTb3VyY2UodXJpLCBoZWFkZXJzKTsKLSAgICAgICAgaWYgKGh0dHBTb3VyY2UtPmNvbm5lY3QoKSAhPSBPSykgeworICAgICAgICBzcDxOdUhUVFBEYXRhU291cmNlPiBodHRwU291cmNlID0gbmV3IE51SFRUUERhdGFTb3VyY2U7CisgICAgICAgIGlmIChodHRwU291cmNlLT5jb25uZWN0KHVyaSwgaGVhZGVycykgIT0gT0spIHsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIHNvdXJjZSA9IG5ldyBDYWNoaW5nRGF0YVNvdXJjZShodHRwU291cmNlLCA2NCAqIDEwMjQsIDEwKTsKKyAgICAgICAgc291cmNlID0gbmV3IE51Q2FjaGVkU291cmNlMihodHRwU291cmNlKTsKICAgICB9IGVsc2UgewogICAgICAgICAvLyBBc3N1bWUgaXQncyBhIGZpbGVuYW1lLgogICAgICAgICBzb3VyY2UgPSBuZXcgRmlsZVNvdXJjZSh1cmkpOwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvRmlsZVNvdXJjZS5jcHAgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9GaWxlU291cmNlLmNwcAppbmRleCBiNmYxYWYyLi5kZDI1NzliIDEwMDY0NAotLS0gYS9tZWRpYS9saWJzdGFnZWZyaWdodC9GaWxlU291cmNlLmNwcAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9GaWxlU291cmNlLmNwcApAQCAtNDUsNiArNDUsMTAgQEAKIH0KIAogc3NpemVfdCBGaWxlU291cmNlOjpyZWFkQXQob2ZmX3Qgb2Zmc2V0LCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSkgeworICAgIGlmIChtRmlsZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOT19JTklUOworICAgIH0KKwogICAgIE11dGV4OjpBdXRvbG9jayBhdXRvTG9jayhtTG9jayk7CiAKICAgICBpZiAobUxlbmd0aCA+PSAwKSB7CkBAIC02Nyw2ICs3MSwxMCBAQAogfQogCiBzdGF0dXNfdCBGaWxlU291cmNlOjpnZXRTaXplKG9mZl90ICpzaXplKSB7CisgICAgaWYgKG1GaWxlID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5PX0lOSVQ7CisgICAgfQorCiAgICAgaWYgKG1MZW5ndGggPj0gMCkgewogICAgICAgICAqc2l6ZSA9IG1MZW5ndGg7CiAKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L0hUVFBEYXRhU291cmNlLmNwcCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L0hUVFBEYXRhU291cmNlLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjcyYTZjYy4uMDAwMDAwMAotLS0gYS9tZWRpYS9saWJzdGFnZWZyaWdodC9IVFRQRGF0YVNvdXJjZS5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLS8vI2RlZmluZSBMT0dfTkRFQlVHIDAKLSNkZWZpbmUgTE9HX1RBRyAiSFRUUERhdGFTb3VyY2UiCi0jaW5jbHVkZSA8dXRpbHMvTG9nLmg+Ci0KLSNpbmNsdWRlICJpbmNsdWRlL3N0YWdlZnJpZ2h0X3N0cmluZy5oIgotI2luY2x1ZGUgImluY2x1ZGUvSFRUUFN0cmVhbS5oIgotCi0jaW5jbHVkZSA8c3RkbGliLmg+Ci0KLSNpbmNsdWRlIDxjdXRpbHMvcHJvcGVydGllcy5oPgotI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L0hUVFBEYXRhU291cmNlLmg+Ci0jaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFEZWJ1Zy5oPgotCi1uYW1lc3BhY2UgYW5kcm9pZCB7Ci0KLXN0YXR1c190IEhUVFBEYXRhU291cmNlOjpjb25uZWN0V2l0aFJlZGlyZWN0c0FuZFJhbmdlKG9mZl90IHJhbmdlU3RhcnQpIHsKLSAgICBzdHJpbmcgaG9zdCA9IG1TdGFydGluZ0hvc3Quc3RyaW5nKCk7Ci0gICAgc3RyaW5nIHBhdGggPSBtU3RhcnRpbmdQYXRoLnN0cmluZygpOwotICAgIGludCBwb3J0ID0gbVN0YXJ0aW5nUG9ydDsKLQotICAgIExPR1YoIkNvbm5lY3RpbmcgdG8gaG9zdCAnJXMnLCBwb3J0ICVkLCBwYXRoICclcyciLAotICAgICAgICAgaG9zdC5jX3N0cigpLCBwb3J0LCBwYXRoLmNfc3RyKCkpOwotCi0gICAgaW50IG51bVJlZGlyZWN0c1JlbWFpbmluZyA9IDU7Ci0gICAgd2hpbGUgKG51bVJlZGlyZWN0c1JlbWFpbmluZy0tID4gMCkgewotICAgICAgICB7Ci0gICAgICAgICAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobVN0YXRlTG9jayk7Ci0gICAgICAgICAgICBpZiAobVN0YXRlID09IERJU0NPTk5FQ1RFRCkgewotICAgICAgICAgICAgICAgIHJldHVybiBVTktOT1dOX0VSUk9SOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgc3RhdHVzX3QgZXJyID0gbUh0dHAtPmNvbm5lY3QoaG9zdC5jX3N0cigpLCBwb3J0KTsKLQotICAgICAgICBpZiAoZXJyICE9IE9LKSB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyOwotICAgICAgICB9Ci0KLSAgICAgICAgU3RyaW5nOCByZXF1ZXN0OwotICAgICAgICByZXF1ZXN0LmFwcGVuZCgiR0VUICIpOwotICAgICAgICByZXF1ZXN0LmFwcGVuZChwYXRoLmNfc3RyKCkpOwotICAgICAgICByZXF1ZXN0LmFwcGVuZCgiIEhUVFAvMS4xXHJcbiIpOwotICAgICAgICByZXF1ZXN0LmFwcGVuZChtSGVhZGVycyk7Ci0gICAgICAgIHJlcXVlc3QuYXBwZW5kKCJIb3N0OiAiKTsKLSAgICAgICAgcmVxdWVzdC5hcHBlbmQoaG9zdC5jX3N0cigpKTsKLSAgICAgICAgcmVxdWVzdC5hcHBlbmQoIlxyXG4iKTsKLQotICAgICAgICBpZiAocmFuZ2VTdGFydCA+IDApIHsKLSAgICAgICAgICAgIGNoYXIgcmFuZ2VbMTI4XTsKLSAgICAgICAgICAgIHNwcmludGYocmFuZ2UsICJSYW5nZTogYnl0ZXM9JWxkLVxyXG4iLCByYW5nZVN0YXJ0KTsKLQotICAgICAgICAgICAgcmVxdWVzdC5hcHBlbmQocmFuZ2UpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmVxdWVzdC5hcHBlbmQoIlxyXG4iKTsKLQotICAgICAgICBlcnIgPSBtSHR0cC0+c2VuZChyZXF1ZXN0LnN0cmluZygpKTsKLQotICAgICAgICBpZiAoZXJyICE9IE9LKSB7Ci0gICAgICAgICAgICByZXR1cm4gZXJyOwotICAgICAgICB9Ci0KLSAgICAgICAgaW50IGh0dHBTdGF0dXM7Ci0gICAgICAgIGVyciA9IG1IdHRwLT5yZWNlaXZlX2hlYWRlcigmaHR0cFN0YXR1cyk7Ci0KLSAgICAgICAgaWYgKGVyciAhPSBPSykgewotICAgICAgICAgICAgcmV0dXJuIGVycjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChodHRwU3RhdHVzID49IDIwMCAmJiBodHRwU3RhdHVzIDwgMzAwKSB7Ci0gICAgICAgICAgICBhcHBseVRpbWVvdXRSZXNwb25zZSgpOwotICAgICAgICAgICAgcmV0dXJuIE9LOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGh0dHBTdGF0dXMgIT0gMzAxICYmIGh0dHBTdGF0dXMgIT0gMzAyKSB7Ci0gICAgICAgICAgICBMT0dFKCJIVFRQIHJlcXVlc3QgZmFpbGVkIHcvIGh0dHAgc3RhdHVzICVkIiwgaHR0cFN0YXR1cyk7Ci0gICAgICAgICAgICByZXR1cm4gRVJST1JfSU87Ci0gICAgICAgIH0KLQotICAgICAgICBzdHJpbmcgbG9jYXRpb247Ci0gICAgICAgIENIRUNLKG1IdHRwLT5maW5kX2hlYWRlcl92YWx1ZSgiTG9jYXRpb24iLCAmbG9jYXRpb24pKTsKLQotICAgICAgICBDSEVDSyhzdHJpbmcobG9jYXRpb24sIDAsIDcpID09ICJodHRwOi8vIik7Ci0gICAgICAgIGxvY2F0aW9uLmVyYXNlKDAsIDcpOwotICAgICAgICBzdHJpbmc6OnNpemVfdHlwZSBzbGFzaFBvcyA9IGxvY2F0aW9uLmZpbmQoJy8nKTsKLSAgICAgICAgaWYgKHNsYXNoUG9zID09IHN0cmluZzo6bnBvcykgewotICAgICAgICAgICAgc2xhc2hQb3MgPSBsb2NhdGlvbi5zaXplKCk7Ci0gICAgICAgICAgICBsb2NhdGlvbiArPSAnLyc7Ci0gICAgICAgIH0KLQotICAgICAgICBtSHR0cC0+ZGlzY29ubmVjdCgpOwotCi0gICAgICAgIExPR1YoIlJlZGlyZWN0aW5nIHRvICVzXG4iLCBsb2NhdGlvbi5jX3N0cigpKTsKLQotICAgICAgICBob3N0ID0gc3RyaW5nKGxvY2F0aW9uLCAwLCBzbGFzaFBvcyk7Ci0KLSAgICAgICAgc3RyaW5nOjpzaXplX3R5cGUgY29sb25Qb3MgPSBob3N0LmZpbmQoJzonKTsKLSAgICAgICAgaWYgKGNvbG9uUG9zICE9IHN0cmluZzo6bnBvcykgewotICAgICAgICAgICAgY29uc3QgY2hhciAqc3RhcnQgPSBob3N0LmNfc3RyKCkgKyBjb2xvblBvcyArIDE7Ci0gICAgICAgICAgICBjaGFyICplbmQ7Ci0gICAgICAgICAgICBsb25nIHRtcCA9IHN0cnRvbChzdGFydCwgJmVuZCwgMTApOwotICAgICAgICAgICAgQ0hFQ0soZW5kID4gc3RhcnQgJiYgKCplbmQgPT0gJ1wwJykpOwotCi0gICAgICAgICAgICBwb3J0ID0gKHRtcCA+PSAwICYmIHRtcCA8IDY1NTM2KSA/IChpbnQpdG1wIDogODA7Ci0KLSAgICAgICAgICAgIGhvc3QuZXJhc2UoY29sb25Qb3MsIGhvc3Quc2l6ZSgpIC0gY29sb25Qb3MpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcG9ydCA9IDgwOwotICAgICAgICB9Ci0KLSAgICAgICAgcGF0aCA9IHN0cmluZyhsb2NhdGlvbiwgc2xhc2hQb3MpOwotCi0gICAgICAgIG1TdGFydGluZ0hvc3QgPSBob3N0LmNfc3RyKCk7Ci0gICAgICAgIG1TdGFydGluZ1BhdGggPSBwYXRoLmNfc3RyKCk7Ci0gICAgICAgIG1TdGFydGluZ1BvcnQgPSBwb3J0OwotICAgIH0KLQotICAgIHJldHVybiBFUlJPUl9JTzsKLX0KLQotdm9pZCBIVFRQRGF0YVNvdXJjZTo6YXBwbHlUaW1lb3V0UmVzcG9uc2UoKSB7Ci0gICAgc3RyaW5nIHRpbWVvdXQ7Ci0gICAgaWYgKG1IdHRwLT5maW5kX2hlYWRlcl92YWx1ZSgiWC1Tb2NrZXRUaW1lb3V0IiwgJnRpbWVvdXQpKSB7Ci0gICAgICAgIGNvbnN0IGNoYXIgKnMgPSB0aW1lb3V0LmNfc3RyKCk7Ci0gICAgICAgIGNoYXIgKmVuZDsKLSAgICAgICAgbG9uZyB0bXAgPSBzdHJ0b2wocywgJmVuZCwgMTApOwotICAgICAgICBpZiAoZW5kID09IHMgfHwgKmVuZCAhPSAnXDAnKSB7Ci0gICAgICAgICAgICBMT0dXKCJJbGxlZ2FsIFgtU29ja2V0VGltZW91dCB2YWx1ZSBnaXZlbi4iKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIExPR0koIm92ZXJyaWRpbmcgZGVmYXVsdCB0aW1lb3V0LCBuZXcgdGltZW91dCBpcyAlbGQgc2Vjb25kcyIsIHRtcCk7Ci0gICAgICAgIG1IdHRwLT5zZXRSZWNlaXZlVGltZW91dCh0bXApOwotICAgIH0KLX0KLQotSFRUUERhdGFTb3VyY2U6OkhUVFBEYXRhU291cmNlKAotICAgICAgICBjb25zdCBjaGFyICp1cmksIGNvbnN0IEtleWVkVmVjdG9yPFN0cmluZzgsIFN0cmluZzg+ICpoZWFkZXJzKSB7Ci0gICAgQ0hFQ0soIXN0cm5jYXNlY21wKCJodHRwOi8vIiwgdXJpLCA3KSk7Ci0KLSAgICBzdHJpbmcgaG9zdDsKLSAgICBzdHJpbmcgcGF0aDsKLSAgICBpbnQgcG9ydDsKLQotICAgIGNoYXIgKnNsYXNoID0gc3RyY2hyKHVyaSArIDcsICcvJyk7Ci0gICAgaWYgKHNsYXNoID09IE5VTEwpIHsKLSAgICAgICAgaG9zdCA9IHVyaSArIDc7Ci0gICAgICAgIHBhdGggPSAiLyI7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgaG9zdCA9IHN0cmluZyh1cmkgKyA3LCBzbGFzaCAtICh1cmkgKyA3KSk7Ci0gICAgICAgIHBhdGggPSBzbGFzaDsKLSAgICB9Ci0KLSAgICBjaGFyICpjb2xvbiA9IHN0cmNocihob3N0LmNfc3RyKCksICc6Jyk7Ci0gICAgaWYgKGNvbG9uID09IE5VTEwpIHsKLSAgICAgICAgcG9ydCA9IDgwOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIGNoYXIgKmVuZDsKLSAgICAgICAgbG9uZyB0bXAgPSBzdHJ0b2woY29sb24gKyAxLCAmZW5kLCAxMCk7Ci0gICAgICAgIENIRUNLKGVuZCA+IGNvbG9uICsgMSk7Ci0gICAgICAgIENIRUNLKHRtcCA+IDAgJiYgdG1wIDwgNjU1MzYpOwotICAgICAgICBwb3J0ID0gdG1wOwotCi0gICAgICAgIGhvc3QgPSBzdHJpbmcoaG9zdCwgMCwgY29sb24gLSBob3N0LmNfc3RyKCkpOwotICAgIH0KLQotICAgIG1TdGFydGluZ0hvc3QgPSBob3N0LmNfc3RyKCk7Ci0gICAgbVN0YXJ0aW5nUGF0aCA9IHBhdGguY19zdHIoKTsKLSAgICBtU3RhcnRpbmdQb3J0ID0gcG9ydDsKLQotICAgIGluaXQoaGVhZGVycyk7Ci19Ci0KLUhUVFBEYXRhU291cmNlOjpIVFRQRGF0YVNvdXJjZSgKLSAgICAgICAgY29uc3QgY2hhciAqX2hvc3QsIGludCBwb3J0LCBjb25zdCBjaGFyICpfcGF0aCwKLSAgICAgICAgY29uc3QgS2V5ZWRWZWN0b3I8U3RyaW5nOCwgU3RyaW5nOD4gKmhlYWRlcnMpIHsKLSAgICBtU3RhcnRpbmdIb3N0ID0gX2hvc3Q7Ci0gICAgbVN0YXJ0aW5nUGF0aCA9IF9wYXRoOwotICAgIG1TdGFydGluZ1BvcnQgPSBwb3J0OwotCi0gICAgaW5pdChoZWFkZXJzKTsKLX0KLQotdm9pZCBIVFRQRGF0YVNvdXJjZTo6aW5pdChjb25zdCBLZXllZFZlY3RvcjxTdHJpbmc4LCBTdHJpbmc4PiAqaGVhZGVycykgewotICAgIG1TdGF0ZSA9IERJU0NPTk5FQ1RFRDsKLSAgICBtSHR0cCA9IG5ldyBIVFRQU3RyZWFtOwotCi0gICAgaW5pdEhlYWRlcnMoaGVhZGVycyk7Ci0KLSAgICBtQnVmZmVyID0gbWFsbG9jKGtCdWZmZXJTaXplKTsKLQotICAgIG1OdW1SZXRyaWVzTGVmdCA9IGtNYXhOdW1SZXRyaWVzOwotfQotCi1zdGF0dXNfdCBIVFRQRGF0YVNvdXJjZTo6Y29ubmVjdCgpIHsKLSAgICB7Ci0gICAgICAgIE11dGV4OjpBdXRvbG9jayBhdXRvTG9jayhtU3RhdGVMb2NrKTsKLQotICAgICAgICBpZiAobVN0YXRlICE9IERJU0NPTk5FQ1RFRCkgewotICAgICAgICAgICAgcmV0dXJuIEVSUk9SX0FMUkVBRFlfQ09OTkVDVEVEOwotICAgICAgICB9Ci0KLSAgICAgICAgbVN0YXRlID0gQ09OTkVDVElORzsKLSAgICB9Ci0KLSAgICBtQnVmZmVyTGVuZ3RoID0gMDsKLSAgICBtQnVmZmVyT2Zmc2V0ID0gMDsKLSAgICBtQ29udGVudExlbmd0aFZhbGlkID0gZmFsc2U7Ci0KLSAgICBzdGF0dXNfdCBlcnIgPSBjb25uZWN0V2l0aFJlZGlyZWN0c0FuZFJhbmdlKDApOwotCi0gICAgaWYgKGVyciAhPSBPSykgewotICAgICAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobVN0YXRlTG9jayk7Ci0KLSAgICAgICAgaWYgKG1TdGF0ZSAhPSBDT05ORUNUSU5HKSB7Ci0gICAgICAgICAgICBMT0dWKCJjb25uZWN0KCkgY2FuY2VsbGVkIik7Ci0gICAgICAgIH0KLSAgICAgICAgbVN0YXRlID0gRElTQ09OTkVDVEVEOwotCi0gICAgICAgIHJldHVybiBlcnI7Ci0gICAgfQotCi0gICAgc3RyaW5nIHZhbHVlOwotICAgIGlmIChtSHR0cC0+ZmluZF9oZWFkZXJfdmFsdWUoIkNvbnRlbnQtTGVuZ3RoIiwgJnZhbHVlKSkgewotICAgICAgICBjaGFyICplbmQ7Ci0gICAgICAgIG1Db250ZW50TGVuZ3RoID0gc3RydG91bGwodmFsdWUuY19zdHIoKSwgJmVuZCwgMTApOwotICAgICAgICBtQ29udGVudExlbmd0aFZhbGlkID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobVN0YXRlTG9jayk7Ci0KLSAgICBpZiAobVN0YXRlICE9IENPTk5FQ1RJTkcpIHsKLSAgICAgICAgLy8gZGlzY29ubmVjdCB3YXMgY2FsbGVkIHdoZW4gd2UgaGFkIGp1c3Qgc3VjY2Vzc2Z1bGx5IGNvbm5lY3RlZC4KLSAgICAgICAgTE9HVigiY29ubmVjdCgpIGNhbmNlbGxlZCAod2UgaGFkIGp1c3Qgc3VjY2VlZGVkIGNvbm5lY3RpbmcpIik7Ci0KLSAgICAgICAgbUh0dHAtPmRpc2Nvbm5lY3QoKTsKLSAgICAgICAgcmV0dXJuIFVOS05PV05fRVJST1I7Ci0gICAgfQotCi0gICAgbVN0YXRlID0gQ09OTkVDVEVEOwotCi0gICAgcmV0dXJuIE9LOwotfQotCi12b2lkIEhUVFBEYXRhU291cmNlOjpkaXNjb25uZWN0KCkgewotICAgIE11dGV4OjpBdXRvbG9jayBhdXRvTG9jayhtU3RhdGVMb2NrKTsKLQotICAgIGlmIChtU3RhdGUgPT0gQ09OTkVDVElORyB8fCBtU3RhdGUgPT0gQ09OTkVDVEVEKSB7Ci0gICAgICAgIG1IdHRwLT5kaXNjb25uZWN0KCk7Ci0gICAgICAgIG1TdGF0ZSA9IERJU0NPTk5FQ1RFRDsKLSAgICB9Ci19Ci0KLXN0YXR1c190IEhUVFBEYXRhU291cmNlOjppbml0Q2hlY2soKSBjb25zdCB7Ci0gICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1TdGF0ZUxvY2spOwotCi0gICAgcmV0dXJuIChtU3RhdGUgPT0gQ09OTkVDVEVEKSA/IChzdGF0dXNfdClPSyA6IEVSUk9SX05PVF9DT05ORUNURUQ7Ci19Ci0KLXN0YXR1c190IEhUVFBEYXRhU291cmNlOjpnZXRTaXplKG9mZl90ICpzaXplKSB7Ci0gICAgKnNpemUgPSAwOwotCi0gICAgewotICAgICAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobVN0YXRlTG9jayk7Ci0gICAgICAgIGlmIChtU3RhdGUgIT0gQ09OTkVDVEVEKSB7Ci0gICAgICAgICAgICByZXR1cm4gRVJST1JfTk9UX0NPTk5FQ1RFRDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGlmICghbUNvbnRlbnRMZW5ndGhWYWxpZCkgewotICAgICAgICByZXR1cm4gRVJST1JfVU5TVVBQT1JURUQ7Ci0gICAgfQotCi0gICAgKnNpemUgPSBtQ29udGVudExlbmd0aDsKLQotICAgIHJldHVybiBPSzsKLX0KLQotSFRUUERhdGFTb3VyY2U6On5IVFRQRGF0YVNvdXJjZSgpIHsKLSAgICBkaXNjb25uZWN0KCk7Ci0KLSAgICBkZWxldGUgbUh0dHA7Ci0gICAgbUh0dHAgPSBOVUxMOwotCi0gICAgZnJlZShtQnVmZmVyKTsKLSAgICBtQnVmZmVyID0gTlVMTDsKLX0KLQotc3NpemVfdCBIVFRQRGF0YVNvdXJjZTo6c2VuZFJhbmdlUmVxdWVzdChzaXplX3Qgb2Zmc2V0KSB7Ci0gICAgc3RhdHVzX3QgZXJyID0gY29ubmVjdFdpdGhSZWRpcmVjdHNBbmRSYW5nZShvZmZzZXQpOwotCi0gICAgaWYgKGVyciAhPSBPSykgewotICAgICAgICByZXR1cm4gZXJyOwotICAgIH0KLQotICAgIHN0cmluZyB2YWx1ZTsKLSAgICBpZiAoIW1IdHRwLT5maW5kX2hlYWRlcl92YWx1ZSgiQ29udGVudC1MZW5ndGgiLCAmdmFsdWUpKSB7Ci0gICAgICAgIHJldHVybiBrQnVmZmVyU2l6ZTsKLSAgICB9Ci0KLSAgICBjaGFyICplbmQ7Ci0gICAgdW5zaWduZWQgbG9uZyBjb250ZW50TGVuZ3RoID0gc3RydG91bCh2YWx1ZS5jX3N0cigpLCAmZW5kLCAxMCk7Ci0KLSAgICByZXR1cm4gY29udGVudExlbmd0aDsKLX0KLQotc3NpemVfdCBIVFRQRGF0YVNvdXJjZTo6cmVhZEF0KG9mZl90IG9mZnNldCwgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUpIHsKLSAgICBMT0dWKCJyZWFkQXQgJWxkLCBzaXplICVkIiwgb2Zmc2V0LCBzaXplKTsKLQotcmluc2VfcmVwZWF0OgotICAgIHsKLSAgICAgICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1TdGF0ZUxvY2spOwotICAgICAgICBpZiAobVN0YXRlICE9IENPTk5FQ1RFRCkgewotICAgICAgICAgICAgcmV0dXJuIEVSUk9SX05PVF9DT05ORUNURUQ7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAob2Zmc2V0ID49IG1CdWZmZXJPZmZzZXQKLSAgICAgICAgICAgICYmIG9mZnNldCA8IChvZmZfdCkobUJ1ZmZlck9mZnNldCArIG1CdWZmZXJMZW5ndGgpKSB7Ci0gICAgICAgIHNpemVfdCBudW1fYnl0ZXNfYXZhaWxhYmxlID0gbUJ1ZmZlckxlbmd0aCAtIChvZmZzZXQgLSBtQnVmZmVyT2Zmc2V0KTsKLQotICAgICAgICBzaXplX3QgY29weSA9IG51bV9ieXRlc19hdmFpbGFibGU7Ci0gICAgICAgIGlmIChjb3B5ID4gc2l6ZSkgewotICAgICAgICAgICAgY29weSA9IHNpemU7Ci0gICAgICAgIH0KLQotICAgICAgICBtZW1jcHkoZGF0YSwgKGNvbnN0IGNoYXIgKiltQnVmZmVyICsgKG9mZnNldCAtIG1CdWZmZXJPZmZzZXQpLCBjb3B5KTsKLQotICAgICAgICBpZiAoY29weSA8IHNpemUpIHsKLSAgICAgICAgICAgIExPR1YoInNob3J0IHJlYWQgKDEpLCByZXR1cm5pbmcgJWQgdnMuICVkIHJlcXVlc3RlZCIsIGNvcHksIHNpemUpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGNvcHk7Ci0gICAgfQotCi0gICAgc3NpemVfdCBjb250ZW50TGVuZ3RoID0gMDsKLSAgICBpZiAob2Zmc2V0ICE9IChvZmZfdCkobUJ1ZmZlck9mZnNldCArIG1CdWZmZXJMZW5ndGgpKSB7Ci0gICAgICAgIExPR1YoIm5ldyByYW5nZSBvZmZzZXQ9JWxkIChvbGQ9JWxkKSIsCi0gICAgICAgICAgICAgb2Zmc2V0LCBtQnVmZmVyT2Zmc2V0ICsgbUJ1ZmZlckxlbmd0aCk7Ci0KLSAgICAgICAgbUh0dHAtPmRpc2Nvbm5lY3QoKTsKLQotICAgICAgICBjb250ZW50TGVuZ3RoID0gc2VuZFJhbmdlUmVxdWVzdChvZmZzZXQpOwotCi0gICAgICAgIGlmIChjb250ZW50TGVuZ3RoID4ga0J1ZmZlclNpemUpIHsKLSAgICAgICAgICAgIGNvbnRlbnRMZW5ndGggPSBrQnVmZmVyU2l6ZTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIGNvbnRlbnRMZW5ndGggPSBrQnVmZmVyU2l6ZTsKLSAgICB9Ci0KLSAgICBtQnVmZmVyT2Zmc2V0ID0gb2Zmc2V0OwotCi0gICAgaWYgKG1Db250ZW50TGVuZ3RoVmFsaWQKLSAgICAgICAgICAgICYmIG1CdWZmZXJPZmZzZXQgKyBjb250ZW50TGVuZ3RoID49IChvZmZfdCltQ29udGVudExlbmd0aCkgewotICAgICAgICAvLyBJZiB3ZSBuZXZlciB0cmlnZ2VyZWQgYSByYW5nZSByZXF1ZXN0IGJ1dCBrbm93IHRoZSBjb250ZW50IGxlbmd0aCwKLSAgICAgICAgLy8gbWFrZSBzdXJlIHRvIG5vdCByZWFkIG1vcmUgZGF0YSB0aGFuIHRoZXJlIGNvdWxkIGJlLCBvdGhlcndpc2UKLSAgICAgICAgLy8gd2UnZCBibG9jayBpbmRlZmluaXRlbHkgaWYgdGhlIHNlcnZlciBkb2Vzbid0IGNsb3NlIHRoZSBjb25uZWN0aW9uLgotCi0gICAgICAgIGNvbnRlbnRMZW5ndGggPSBtQ29udGVudExlbmd0aCAtIG1CdWZmZXJPZmZzZXQ7Ci0gICAgfQotCi0gICAgaWYgKGNvbnRlbnRMZW5ndGggPD0gMCkgewotICAgICAgICByZXR1cm4gY29udGVudExlbmd0aDsKLSAgICB9Ci0KLSAgICBzc2l6ZV90IG51bV9ieXRlc19yZWNlaXZlZCA9IG1IdHRwLT5yZWNlaXZlKG1CdWZmZXIsIGNvbnRlbnRMZW5ndGgpOwotCi0gICAgaWYgKG51bV9ieXRlc19yZWNlaXZlZCA8IDAKLSAgICAgICAgICAgIHx8IChtQ29udGVudExlbmd0aFZhbGlkICYmIG51bV9ieXRlc19yZWNlaXZlZCA8IGNvbnRlbnRMZW5ndGgpKSB7Ci0gICAgICAgIGlmIChtTnVtUmV0cmllc0xlZnQtLSA+IDApIHsKLSAgICAgICAgICAgIG1IdHRwLT5kaXNjb25uZWN0KCk7Ci0gICAgICAgICAgICBtQnVmZmVyTGVuZ3RoID0gMDsKLSAgICAgICAgICAgIG51bV9ieXRlc19yZWNlaXZlZCA9IGNvbm5lY3RXaXRoUmVkaXJlY3RzQW5kUmFuZ2UobUJ1ZmZlck9mZnNldCk7Ci0gICAgICAgICAgICBpZiAobnVtX2J5dGVzX3JlY2VpdmVkID09IE9LKSB7Ci0gICAgICAgICAgICAgICAgTE9HSSgicmV0cnlpbmcgY29ubmVjdGlvbiBzdWNjZWVkZWQuIik7Ci0gICAgICAgICAgICAgICAgZ290byByaW5zZV9yZXBlYXQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBMT0dFKCJyZXRyeWluZyBjb25uZWN0aW9uIGZhaWxlZCIpOwotICAgICAgICB9Ci0KLSAgICAgICAgbUJ1ZmZlckxlbmd0aCA9IDA7Ci0KLSAgICAgICAgcmV0dXJuIG51bV9ieXRlc19yZWNlaXZlZDsKLSAgICB9Ci0KLSAgICBtQnVmZmVyTGVuZ3RoID0gKHNpemVfdCludW1fYnl0ZXNfcmVjZWl2ZWQ7Ci0KLSAgICBzaXplX3QgY29weSA9IG1CdWZmZXJMZW5ndGg7Ci0gICAgaWYgKGNvcHkgPiBzaXplKSB7Ci0gICAgICAgIGNvcHkgPSBzaXplOwotICAgIH0KLQotICAgIG1lbWNweShkYXRhLCBtQnVmZmVyLCBjb3B5KTsKLQotICAgIHJldHVybiBjb3B5OwotfQotCi12b2lkIEhUVFBEYXRhU291cmNlOjppbml0SGVhZGVycygKLSAgICAgICAgY29uc3QgS2V5ZWRWZWN0b3I8U3RyaW5nOCwgU3RyaW5nOD4gKm92ZXJyaWRlcykgewotICAgIG1IZWFkZXJzID0gU3RyaW5nOCgpOwotCi0gICAgbUhlYWRlcnMuYXBwZW5kKCJVc2VyLUFnZW50OiBzdGFnZWZyaWdodC8xLjAgKExpbnV4O0FuZHJvaWQgIik7Ci0KLSNpZiAoUFJPUEVSVFlfVkFMVUVfTUFYIDwgOCkKLSNlcnJvciAiUFJPUEVSVFlfVkFMVUVfTUFYIG11c3QgYmUgYXQgbGVhc3QgOCIKLSNlbmRpZgotCi0gICAgY2hhciB2YWx1ZVtQUk9QRVJUWV9WQUxVRV9NQVhdOwotICAgIHByb3BlcnR5X2dldCgicm8uYnVpbGQudmVyc2lvbi5yZWxlYXNlIiwgdmFsdWUsICJVbmtub3duIik7Ci0gICAgbUhlYWRlcnMuYXBwZW5kKHZhbHVlKTsKLSAgICBtSGVhZGVycy5hcHBlbmQoIilcclxuIik7Ci0KLSAgICBpZiAob3ZlcnJpZGVzID09IE5VTEwpIHsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgb3ZlcnJpZGVzLT5zaXplKCk7ICsraSkgewotICAgICAgICBTdHJpbmc4IGxpbmU7Ci0gICAgICAgIGxpbmUuYXBwZW5kKG92ZXJyaWRlcy0+a2V5QXQoaSkpOwotICAgICAgICBsaW5lLmFwcGVuZCgiOiAiKTsKLSAgICAgICAgbGluZS5hcHBlbmQob3ZlcnJpZGVzLT52YWx1ZUF0KGkpKTsKLSAgICAgICAgbGluZS5hcHBlbmQoIlxyXG4iKTsKLQotICAgICAgICBtSGVhZGVycy5hcHBlbmQobGluZSk7Ci0gICAgfQotfQotCi11aW50MzJfdCBIVFRQRGF0YVNvdXJjZTo6ZmxhZ3MoKSB7Ci0gICAgdWludDMyX3QgZiA9IGtXYW50c1ByZWZldGNoaW5nOwotCi0gICAgaWYgKCFzdHJjYXNlY21wKG1TdGFydGluZ0hvc3Quc3RyaW5nKCksICJsb2NhbGhvc3QiKQotICAgICAgICAgICAgfHwgIXN0cmNtcChtU3RhcnRpbmdIb3N0LnN0cmluZygpLCAiMTI3LjAuMC4xIikpIHsKLSAgICAgICAgZiB8PSBrU3RyZWFtZWRGcm9tTG9jYWxIb3N0OwotICAgIH0KLQotICAgIHJldHVybiBmOwotfQotCi19ICAvLyBuYW1lc3BhY2UgYW5kcm9pZAotCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9NUDNFeHRyYWN0b3IuY3BwIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvTVAzRXh0cmFjdG9yLmNwcAppbmRleCBmOTI1MWUxLi42OWMzYTcyIDEwMDY0NAotLS0gYS9tZWRpYS9saWJzdGFnZWZyaWdodC9NUDNFeHRyYWN0b3IuY3BwCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L01QM0V4dHJhY3Rvci5jcHAKQEAgLTYzNCw2ICs2MzQsNyBAQAogICAgIH0KIAogICAgIHNpemVfdCBmcmFtZV9zaXplOworICAgIGludCBiaXRyYXRlOwogICAgIGZvciAoOzspIHsKICAgICAgICAgc3NpemVfdCBuID0gbURhdGFTb3VyY2UtPnJlYWRBdChtQ3VycmVudFBvcywgYnVmZmVyLT5kYXRhKCksIDQpOwogICAgICAgICBpZiAobiA8IDQpIHsKQEAgLTY0Niw3ICs2NDcsNyBAQAogICAgICAgICB1aW50MzJfdCBoZWFkZXIgPSBVMzJfQVQoKGNvbnN0IHVpbnQ4X3QgKilidWZmZXItPmRhdGEoKSk7CiAKICAgICAgICAgaWYgKChoZWFkZXIgJiBrTWFzaykgPT0gKG1GaXhlZEhlYWRlciAmIGtNYXNrKQotICAgICAgICAgICAgJiYgZ2V0X21wM19mcmFtZV9zaXplKGhlYWRlciwgJmZyYW1lX3NpemUpKSB7CisgICAgICAgICAgICAmJiBnZXRfbXAzX2ZyYW1lX3NpemUoaGVhZGVyLCAmZnJhbWVfc2l6ZSwgTlVMTCwgTlVMTCwgJmJpdHJhdGUpKSB7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCkBAIC02ODMsNyArNjg0LDcgQEAKICAgICBidWZmZXItPm1ldGFfZGF0YSgpLT5zZXRJbnQ2NChrS2V5VGltZSwgbUN1cnJlbnRUaW1lVXMpOwogCiAgICAgbUN1cnJlbnRQb3MgKz0gZnJhbWVfc2l6ZTsKLSAgICBtQ3VycmVudFRpbWVVcyArPSAxMTUyICogMTAwMDAwMCAvIDQ0MTAwOworICAgIG1DdXJyZW50VGltZVVzICs9IGZyYW1lX3NpemUgKiA4MDAwbGwgLyBiaXRyYXRlOwogCiAgICAgKm91dCA9IGJ1ZmZlcjsKIApkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvTVBFRzRFeHRyYWN0b3IuY3BwIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvTVBFRzRFeHRyYWN0b3IuY3BwCmluZGV4IGE0MWIyZjQuLjBjMmYxZTYgMTAwNjQ0Ci0tLSBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L01QRUc0RXh0cmFjdG9yLmNwcAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9NUEVHNEV4dHJhY3Rvci5jcHAKQEAgLTQyOCw2ICs0MjgsMTQgQEAKICAgICAgICAgfQogICAgICAgICBjaHVua19zaXplID0gbnRvaDY0KGNodW5rX3NpemUpOwogICAgICAgICBkYXRhX29mZnNldCArPSA4OworCisgICAgICAgIGlmIChjaHVua19zaXplIDwgMTYpIHsKKyAgICAgICAgICAgIC8vIFRoZSBzbWFsbGVzdCB2YWxpZCBjaHVuayBpcyAxNiBieXRlcyBsb25nIGluIHRoaXMgY2FzZS4KKyAgICAgICAgICAgIHJldHVybiBFUlJPUl9NQUxGT1JNRUQ7CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGNodW5rX3NpemUgPCA4KSB7CisgICAgICAgIC8vIFRoZSBzbWFsbGVzdCB2YWxpZCBjaHVuayBpcyA4IGJ5dGVzIGxvbmcuCisgICAgICAgIHJldHVybiBFUlJPUl9NQUxGT1JNRUQ7CiAgICAgfQogCiAgICAgY2hhciBjaHVua1s1XTsKQEAgLTE2MzMsNyArMTY0MSw3IEBACiAgICAgfQogfQogCi1ib29sIFNuaWZmTVBFRzQoCitzdGF0aWMgYm9vbCBMZWdhY3lTbmlmZk1QRUc0KAogICAgICAgICBjb25zdCBzcDxEYXRhU291cmNlPiAmc291cmNlLCBTdHJpbmc4ICptaW1lVHlwZSwgZmxvYXQgKmNvbmZpZGVuY2UpIHsKICAgICB1aW50OF90IGhlYWRlcls4XTsKIApAQCAtMTY1Nyw1ICsxNjY1LDgzIEBACiAgICAgcmV0dXJuIGZhbHNlOwogfQogCitzdGF0aWMgYm9vbCBpc0NvbXBhdGlibGVCcmFuZCh1aW50MzJfdCBmb3VyY2MpIHsKKyAgICBzdGF0aWMgY29uc3QgdWludDMyX3Qga0NvbXBhdGlibGVCcmFuZHNbXSA9IHsKKyAgICAgICAgRk9VUkNDKCdpJywgJ3MnLCAnbycsICdtJyksCisgICAgICAgIEZPVVJDQygnaScsICdzJywgJ28nLCAnMicpLAorICAgICAgICBGT1VSQ0MoJ2EnLCAndicsICdjJywgJzEnKSwKKyAgICAgICAgRk9VUkNDKCczJywgJ2cnLCAncCcsICc0JyksCisgICAgICAgIEZPVVJDQygnbScsICdwJywgJzQnLCAnMScpLAorICAgICAgICBGT1VSQ0MoJ20nLCAncCcsICc0JywgJzInKSwKKyAgICB9OworCisgICAgZm9yIChzaXplX3QgaSA9IDA7CisgICAgICAgICBpIDwgc2l6ZW9mKGtDb21wYXRpYmxlQnJhbmRzKSAvIHNpemVvZihrQ29tcGF0aWJsZUJyYW5kc1swXSk7CisgICAgICAgICArK2kpIHsKKyAgICAgICAgaWYgKGtDb21wYXRpYmxlQnJhbmRzW2ldID09IGZvdXJjYykgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKy8vIEF0dGVtcHQgdG8gYWN0dWFsbHkgcGFyc2UgdGhlICdmdHlwJyBhdG9tIGFuZCBkZXRlcm1pbmUgaWYgYSBzdWl0YWJsZQorLy8gY29tcGF0aWJsZSBicmFuZCBpcyBwcmVzZW50Lgorc3RhdGljIGJvb2wgQmV0dGVyU25pZmZNUEVHNCgKKyAgICAgICAgY29uc3Qgc3A8RGF0YVNvdXJjZT4gJnNvdXJjZSwgU3RyaW5nOCAqbWltZVR5cGUsIGZsb2F0ICpjb25maWRlbmNlKSB7CisgICAgdWludDhfdCBoZWFkZXJbMTJdOworICAgIGlmIChzb3VyY2UtPnJlYWRBdCgwLCBoZWFkZXIsIDEyKSAhPSAxMgorICAgICAgICAgICAgfHwgbWVtY21wKCJmdHlwIiwgJmhlYWRlcls0XSwgNCkpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHNpemVfdCBhdG9tU2l6ZSA9IFUzMl9BVCgmaGVhZGVyWzBdKTsKKyAgICBpZiAoYXRvbVNpemUgPCAxNiB8fCAoYXRvbVNpemUgJSA0KSAhPSAwKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBib29sIHN1Y2Nlc3MgPSBmYWxzZTsKKyAgICBpZiAoaXNDb21wYXRpYmxlQnJhbmQoVTMyX0FUKCZoZWFkZXJbOF0pKSkgeworICAgICAgICBzdWNjZXNzID0gdHJ1ZTsKKyAgICB9IGVsc2UgeworICAgICAgICBzaXplX3QgbnVtQ29tcGF0aWJsZUJyYW5kcyA9IChhdG9tU2l6ZSAtIDE2KSAvIDQ7CisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtQ29tcGF0aWJsZUJyYW5kczsgKytpKSB7CisgICAgICAgICAgICB1aW50OF90IHRtcFs0XTsKKyAgICAgICAgICAgIGlmIChzb3VyY2UtPnJlYWRBdCgxNiArIGkgKiA0LCB0bXAsIDQpICE9IDQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChpc0NvbXBhdGlibGVCcmFuZChVMzJfQVQoJnRtcFswXSkpKSB7CisgICAgICAgICAgICAgICAgc3VjY2VzcyA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoIXN1Y2Nlc3MpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgICptaW1lVHlwZSA9IE1FRElBX01JTUVUWVBFX0NPTlRBSU5FUl9NUEVHNDsKKyAgICAqY29uZmlkZW5jZSA9IDAuM2Y7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworYm9vbCBTbmlmZk1QRUc0KAorICAgICAgICBjb25zdCBzcDxEYXRhU291cmNlPiAmc291cmNlLCBTdHJpbmc4ICptaW1lVHlwZSwgZmxvYXQgKmNvbmZpZGVuY2UpIHsKKyAgICBpZiAoQmV0dGVyU25pZmZNUEVHNChzb3VyY2UsIG1pbWVUeXBlLCBjb25maWRlbmNlKSkgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBpZiAoTGVnYWN5U25pZmZNUEVHNChzb3VyY2UsIG1pbWVUeXBlLCBjb25maWRlbmNlKSkgeworICAgICAgICBMT0dXKCJJZGVudGlmaWVkIHN1cHBvcnRlZCBtcGVnNCB0aHJvdWdoIExlZ2FjeVNuaWZmTVBFRzQuIik7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHJldHVybiBmYWxzZTsKK30KKwogfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKIApkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvTVBFRzRXcml0ZXIuY3BwIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvTVBFRzRXcml0ZXIuY3BwCmluZGV4IDJjZjBkZGYuLjZhNGExMzEgMTAwNjQ0Ci0tLSBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L01QRUc0V3JpdGVyLmNwcAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9NUEVHNFdyaXRlci5jcHAKQEAgLTE0LDYgKzE0LDEwIEBACiAgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KICAqLwogCisvLyNkZWZpbmUgTE9HX05ERUJVRyAwCisjZGVmaW5lIExPR19UQUcgIk1QRUc0V3JpdGVyIgorI2luY2x1ZGUgPHV0aWxzL0xvZy5oPgorCiAjaW5jbHVkZSA8YXJwYS9pbmV0Lmg+CiAKICNpbmNsdWRlIDxjdHlwZS5oPgpAQCAtMjQsOCArMjgsMTMgQEAKICNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZXRhRGF0YS5oPgogI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhRGVidWcuaD4KICNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYURlZnMuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYUVycm9ycy5oPgogI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhU291cmNlLmg+CiAjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvVXRpbHMuaD4KKyNpbmNsdWRlIDxtZWRpYS9tZWRpYXJlY29yZGVyLmg+CisjaW5jbHVkZSA8Y3V0aWxzL3Byb3BlcnRpZXMuaD4KKworI2luY2x1ZGUgImluY2x1ZGUvRVNEUy5oIgogCiBuYW1lc3BhY2UgYW5kcm9pZCB7CiAKQEAgLTM0LDUyICs0MywxMjAgQEAKICAgICBUcmFjayhNUEVHNFdyaXRlciAqb3duZXIsIGNvbnN0IHNwPE1lZGlhU291cmNlPiAmc291cmNlKTsKICAgICB+VHJhY2soKTsKIAotICAgIHN0YXR1c190IHN0YXJ0KCk7CisgICAgc3RhdHVzX3Qgc3RhcnQoTWV0YURhdGEgKnBhcmFtcyk7CiAgICAgdm9pZCBzdG9wKCk7CisgICAgdm9pZCBwYXVzZSgpOwogICAgIGJvb2wgcmVhY2hlZEVPUygpOwogCiAgICAgaW50NjRfdCBnZXREdXJhdGlvblVzKCkgY29uc3Q7Ci0gICAgdm9pZCB3cml0ZVRyYWNrSGVhZGVyKGludDMyX3QgdHJhY2tJRCk7CisgICAgaW50NjRfdCBnZXRFc3RpbWF0ZWRUcmFja1NpemVCeXRlcygpIGNvbnN0OworICAgIHZvaWQgd3JpdGVUcmFja0hlYWRlcihpbnQzMl90IHRyYWNrSUQsIGJvb2wgdXNlMzJCaXRPZmZzZXQgPSB0cnVlKTsKIAogcHJpdmF0ZToKICAgICBNUEVHNFdyaXRlciAqbU93bmVyOwogICAgIHNwPE1ldGFEYXRhPiBtTWV0YTsKICAgICBzcDxNZWRpYVNvdXJjZT4gbVNvdXJjZTsKICAgICB2b2xhdGlsZSBib29sIG1Eb25lOworICAgIHZvbGF0aWxlIGJvb2wgbVBhdXNlZDsKKyAgICB2b2xhdGlsZSBib29sIG1SZXN1bWVkOwogICAgIGludDY0X3QgbU1heFRpbWVTdGFtcFVzOworICAgIGludDY0X3QgbUVzdGltYXRlZFRyYWNrU2l6ZUJ5dGVzOwogCiAgICAgcHRocmVhZF90IG1UaHJlYWQ7CiAKICAgICBzdHJ1Y3QgU2FtcGxlSW5mbyB7CiAgICAgICAgIHNpemVfdCBzaXplOwotICAgICAgICBvZmZfdCBvZmZzZXQ7CiAgICAgICAgIGludDY0X3QgdGltZXN0YW1wOwogICAgIH07Ci0gICAgTGlzdDxTYW1wbGVJbmZvPiBtU2FtcGxlSW5mb3M7CisgICAgTGlzdDxTYW1wbGVJbmZvPiAgICBtU2FtcGxlSW5mb3M7CisgICAgYm9vbCAgICAgICAgICAgICAgICBtU2FtcGxlc0hhdmVTYW1lU2l6ZTsKKworICAgIExpc3Q8TWVkaWFCdWZmZXIgKj4gbUNodW5rU2FtcGxlczsKKyAgICBMaXN0PG9mZl90PiAgICAgICAgIG1DaHVua09mZnNldHM7CisKKyAgICBzdHJ1Y3QgU3RzY1RhYmxlRW50cnkgeworCisgICAgICAgIFN0c2NUYWJsZUVudHJ5KHVpbnQzMl90IGNodW5rLCB1aW50MzJfdCBzYW1wbGVzLCB1aW50MzJfdCBpZCkKKyAgICAgICAgICAgIDogZmlyc3RDaHVuayhjaHVuayksCisgICAgICAgICAgICAgIHNhbXBsZXNQZXJDaHVuayhzYW1wbGVzKSwKKyAgICAgICAgICAgICAgc2FtcGxlRGVzY3JpcHRpb25JZChpZCkge30KKworICAgICAgICB1aW50MzJfdCBmaXJzdENodW5rOworICAgICAgICB1aW50MzJfdCBzYW1wbGVzUGVyQ2h1bms7CisgICAgICAgIHVpbnQzMl90IHNhbXBsZURlc2NyaXB0aW9uSWQ7CisgICAgfTsKKyAgICBMaXN0PFN0c2NUYWJsZUVudHJ5PiBtU3RzY1RhYmxlRW50cmllczsKKworICAgIExpc3Q8aW50MzJfdD4gbVN0c3NUYWJsZUVudHJpZXM7CisgICAgTGlzdDxpbnQ2NF90PiBtQ2h1bmtEdXJhdGlvbnM7CisKKyAgICBzdHJ1Y3QgU3R0c1RhYmxlRW50cnkgeworCisgICAgICAgIFN0dHNUYWJsZUVudHJ5KHVpbnQzMl90IGNvdW50LCB1aW50MzJfdCBkdXJhdGlvbikKKyAgICAgICAgICAgIDogc2FtcGxlQ291bnQoY291bnQpLCBzYW1wbGVEdXJhdGlvbihkdXJhdGlvbikge30KKworICAgICAgICB1aW50MzJfdCBzYW1wbGVDb3VudDsKKyAgICAgICAgdWludDMyX3Qgc2FtcGxlRHVyYXRpb247CisgICAgfTsKKyAgICBMaXN0PFN0dHNUYWJsZUVudHJ5PiBtU3R0c1RhYmxlRW50cmllczsKIAogICAgIHZvaWQgKm1Db2RlY1NwZWNpZmljRGF0YTsKICAgICBzaXplX3QgbUNvZGVjU3BlY2lmaWNEYXRhU2l6ZTsKKyAgICBib29sIG1Hb3RBbGxDb2RlY1NwZWNpZmljRGF0YTsKKyAgICBib29sIG1UcmFja2luZ1Byb2dyZXNzU3RhdHVzOwogCiAgICAgYm9vbCBtUmVhY2hlZEVPUzsKKyAgICBpbnQ2NF90IG1TdGFydFRpbWVzdGFtcFVzOworICAgIGludDY0X3QgbVByZXZpb3VzVHJhY2tUaW1lVXM7CisgICAgaW50NjRfdCBtVHJhY2tFdmVyeVRpbWVEdXJhdGlvblVzOworICAgIGludDMyX3QgbVRyYWNrRXZlcnlOdW1iZXJPZkZyYW1lczsKIAogICAgIHN0YXRpYyB2b2lkICpUaHJlYWRXcmFwcGVyKHZvaWQgKm1lKTsKICAgICB2b2lkIHRocmVhZEVudHJ5KCk7CiAKKyAgICBzdGF0dXNfdCBtYWtlQVZDQ29kZWNTcGVjaWZpY0RhdGEoCisgICAgICAgICAgICBjb25zdCB1aW50OF90ICpkYXRhLCBzaXplX3Qgc2l6ZSk7CisgICAgdm9pZCB3cml0ZU9uZUNodW5rKGJvb2wgaXNBdmMpOworCisgICAgLy8gVHJhY2sgYXV0aG9yaW5nIHByb2dyZXNzIHN0YXR1cworICAgIHZvaWQgdHJhY2tQcm9ncmVzc1N0YXR1cyhpbnQzMl90IG5GcmFtZXMsIGludDY0X3QgdGltZVVzKTsKKyAgICB2b2lkIGluaXRUcmFja2luZ1Byb2dyZXNzU3RhdHVzKE1ldGFEYXRhICpwYXJhbXMpOworCisgICAgLy8gVXRpbGl0aWVzIGZvciBjb2xsZWN0aW5nIHN0YXRpc3RpY2FsIGRhdGEKKyAgICB2b2lkIGxvZ1N0YXRpc3RpY2FsRGF0YShib29sIGlzQXVkaW8pOworICAgIHZvaWQgZmluZE1pbkF2Z01heFNhbXBsZUR1cmF0aW9uTXMoCisgICAgICAgICAgICBpbnQzMl90ICptaW4sIGludDMyX3QgKmF2ZywgaW50MzJfdCAqbWF4KTsKKyAgICB2b2lkIGZpbmRNaW5NYXhDaHVua0R1cmF0aW9ucyhpbnQ2NF90ICptaW4sIGludDY0X3QgKm1heCk7CisKKyAgICB2b2lkIGdldENvZGVjU3BlY2lmaWNEYXRhRnJvbUlucHV0Rm9ybWF0SWZQb3NzaWJsZSgpOworCiAgICAgVHJhY2soY29uc3QgVHJhY2sgJik7CiAgICAgVHJhY2sgJm9wZXJhdG9yPShjb25zdCBUcmFjayAmKTsKIH07CiAKKyNkZWZpbmUgVVNFX05BTExFTl9GT1VSICAgICAgICAgMQorCiBNUEVHNFdyaXRlcjo6TVBFRzRXcml0ZXIoY29uc3QgY2hhciAqZmlsZW5hbWUpCiAgICAgOiBtRmlsZShmb3BlbihmaWxlbmFtZSwgIndiIikpLAorICAgICAgbVVzZTMyQml0T2Zmc2V0KHRydWUpLAorICAgICAgbVBhdXNlZChmYWxzZSksCisgICAgICBtU3RhcnRlZChmYWxzZSksCiAgICAgICBtT2Zmc2V0KDApLAotICAgICAgbU1kYXRPZmZzZXQoMCkgeworICAgICAgbU1kYXRPZmZzZXQoMCksCisgICAgICBtRXN0aW1hdGVkTW9vdkJveFNpemUoMCksCisgICAgICBtSW50ZXJsZWF2ZUR1cmF0aW9uVXMoNTAwMDAwKSB7CiAgICAgQ0hFQ0sobUZpbGUgIT0gTlVMTCk7CiB9CiAKIE1QRUc0V3JpdGVyOjpNUEVHNFdyaXRlcihpbnQgZmQpCiAgICAgOiBtRmlsZShmZG9wZW4oZmQsICJ3YiIpKSwKKyAgICAgIG1Vc2UzMkJpdE9mZnNldCh0cnVlKSwKKyAgICAgIG1QYXVzZWQoZmFsc2UpLAorICAgICAgbVN0YXJ0ZWQoZmFsc2UpLAogICAgICAgbU9mZnNldCgwKSwKLSAgICAgIG1NZGF0T2Zmc2V0KDApIHsKKyAgICAgIG1NZGF0T2Zmc2V0KDApLAorICAgICAgbUVzdGltYXRlZE1vb3ZCb3hTaXplKDApLAorICAgICAgbUludGVybGVhdmVEdXJhdGlvblVzKDUwMDAwMCkgewogICAgIENIRUNLKG1GaWxlICE9IE5VTEwpOwogfQogCkBAIC0xMDAsMjMgKzE3NywxMCBAQAogICAgIHJldHVybiBPSzsKIH0KIAotc3RhdHVzX3QgTVBFRzRXcml0ZXI6OnN0YXJ0KCkgewotICAgIGlmIChtRmlsZSA9PSBOVUxMKSB7Ci0gICAgICAgIHJldHVybiBVTktOT1dOX0VSUk9SOwotICAgIH0KLQotICAgIGJlZ2luQm94KCJmdHlwIik7Ci0gICAgICB3cml0ZUZvdXJjYygiaXNvbSIpOwotICAgICAgd3JpdGVJbnQzMigwKTsKLSAgICAgIHdyaXRlRm91cmNjKCJpc29tIik7Ci0gICAgZW5kQm94KCk7Ci0KLSAgICBtTWRhdE9mZnNldCA9IG1PZmZzZXQ7Ci0gICAgd3JpdGUoIlx4MDBceDAwXHgwMFx4MDFtZGF0Pz8/Pz8/Pz8iLCAxNik7Ci0KK3N0YXR1c190IE1QRUc0V3JpdGVyOjpzdGFydFRyYWNrcyhNZXRhRGF0YSAqcGFyYW1zKSB7CiAgICAgZm9yIChMaXN0PFRyYWNrICo+OjppdGVyYXRvciBpdCA9IG1UcmFja3MuYmVnaW4oKTsKICAgICAgICAgIGl0ICE9IG1UcmFja3MuZW5kKCk7ICsraXQpIHsKLSAgICAgICAgc3RhdHVzX3QgZXJyID0gKCppdCktPnN0YXJ0KCk7CisgICAgICAgIHN0YXR1c190IGVyciA9ICgqaXQpLT5zdGFydChwYXJhbXMpOwogCiAgICAgICAgIGlmIChlcnIgIT0gT0spIHsKICAgICAgICAgICAgIGZvciAoTGlzdDxUcmFjayAqPjo6aXRlcmF0b3IgaXQyID0gbVRyYWNrcy5iZWdpbigpOwpAQCAtMTI3LDEwICsxOTEsMTQ2IEBACiAgICAgICAgICAgICByZXR1cm4gZXJyOwogICAgICAgICB9CiAgICAgfQotCiAgICAgcmV0dXJuIE9LOwogfQogCitpbnQ2NF90IE1QRUc0V3JpdGVyOjplc3RpbWF0ZU1vb3ZCb3hTaXplKGludDMyX3QgYml0UmF0ZSkgeworICAgIC8vIFRoaXMgaW1wbGVtZW50YXRpb24gaXMgaGlnaGx5IGV4cGVyaW1lbnRhbC9oZXVyaXNpdGljLgorICAgIC8vCisgICAgLy8gU3RhdGlzdGljYWwgYW5hbHlzaXMgc2hvd3MgdGhhdCBtZXRhZGF0YSB1c3VhbGx5IGFjY291bnRzCisgICAgLy8gZm9yIGEgc21hbGwgcG9ydGlvbiBvZiB0aGUgdG90YWwgZmlsZSBzaXplLCB1c3VhbGx5IDwgMC42JS4KKyAgICAvLyBDdXJyZW50bHksIGxldHMgc2V0IHRvIDAuNCUgZm9yIG5vdy4KKworICAgIC8vIFRoZSBkZWZhdWx0IE1JTl9NT09WX0JPWF9TSVpFIGlzIHNldCB0byAwLjQlIHggMU1CLAorICAgIC8vIHdoZXJlIDFNQiBpcyB0aGUgY29tbW9uIGZpbGUgc2l6ZSBsaW1pdCBmb3IgTU1TIGFwcGxpY2F0aW9uLgorICAgIC8vIFRoZSBkZWZhdWx0IE1BWCBfTU9PVl9CT1hfU0laRSB2YWx1ZSBpcyBiYXNlZCBvbiBhYm91dCA0CisgICAgLy8gbWludXRlIHZpZGVvIHJlY29yZGluZyB3aXRoIGEgYml0IHJhdGUgYWJvdXQgMyBNYnBzLCBiZWNhdXNlCisgICAgLy8gc3RhdGlzdGljcyBhbHNvIHNob3cgdGhhdCBtb3N0IG9mIHRoZSB2aWRlbyBjYXB0dXJlZCBhcmUgZ29pbmcKKyAgICAvLyB0byBiZSBsZXNzIHRoYW4gMyBtaW51dGVzLgorCisgICAgLy8gSWYgdGhlIGVzdGltYXRpb24gaXMgd3JvbmcsIHdlIHdpbGwgcGF5IHRoZSBwcmljZSBvZiB3YXN0aW5nCisgICAgLy8gc29tZSByZXNlcnZlZCBzcGFjZS4gVGhpcyBzaG91bGQgbm90IGhhcHBlbiBzbyBvZnRlbiBzdGF0aXN0aWNhbGx5LgorICAgIHN0YXRpYyBjb25zdCBpbnQzMl90IGZhY3RvciA9IG1Vc2UzMkJpdE9mZnNldD8gMTogMjsKKyAgICBzdGF0aWMgY29uc3QgaW50NjRfdCBNSU5fTU9PVl9CT1hfU0laRSA9IDQgKiAxMDI0OyAgLy8gNCBLQgorICAgIHN0YXRpYyBjb25zdCBpbnQ2NF90IE1BWF9NT09WX0JPWF9TSVpFID0gKDE4MCAqIDMwMDAwMDAgKiA2TEwgLyA4MDAwKTsKKyAgICBpbnQ2NF90IHNpemUgPSBNSU5fTU9PVl9CT1hfU0laRTsKKworICAgIGlmIChtTWF4RmlsZVNpemVMaW1pdEJ5dGVzICE9IDApIHsKKyAgICAgICAgc2l6ZSA9IG1NYXhGaWxlU2l6ZUxpbWl0Qnl0ZXMgKiA0IC8gMTAwMDsKKyAgICB9IGVsc2UgaWYgKG1NYXhGaWxlRHVyYXRpb25MaW1pdFVzICE9IDApIHsKKyAgICAgICAgaWYgKGJpdFJhdGUgPD0gMCkgeworICAgICAgICAgICAgLy8gV2UgY291bGQgbm90IGVzdGltYXRlIHRoZSBmaWxlIHNpemUgc2luY2UgYml0UmF0ZSBpcyBub3Qgc2V0LgorICAgICAgICAgICAgc2l6ZSA9IE1JTl9NT09WX0JPWF9TSVpFOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2l6ZSA9ICgobU1heEZpbGVEdXJhdGlvbkxpbWl0VXMgKiBiaXRSYXRlICogNCkgLyAxMDAwIC8gODAwMDAwMCk7CisgICAgICAgIH0KKyAgICB9CisgICAgaWYgKHNpemUgPCBNSU5fTU9PVl9CT1hfU0laRSkgeworICAgICAgICBzaXplID0gTUlOX01PT1ZfQk9YX1NJWkU7CisgICAgfQorCisgICAgLy8gQW55IGxvbmcgZHVyYXRpb24gcmVjb3JkaW5nIHdpbGwgYmUgcHJvYmFibHkgZW5kIHVwIHdpdGgKKyAgICAvLyBub24tc3RyZWFtYWJsZSBtcDQgZmlsZS4KKyAgICBpZiAoc2l6ZSA+IE1BWF9NT09WX0JPWF9TSVpFKSB7CisgICAgICAgIHNpemUgPSBNQVhfTU9PVl9CT1hfU0laRTsKKyAgICB9CisKKyAgICBMT0dJKCJsaW1pdHM6ICVsbGQvJWxsZCBieXRlcy91cywgYml0IHJhdGU6ICVkIGJwcyBhbmQgdGhlIGVzdGltYXRlZCIKKyAgICAgICAgICIgbW9vdiBzaXplICVsbGQgYnl0ZXMiLAorICAgICAgICAgbU1heEZpbGVTaXplTGltaXRCeXRlcywgbU1heEZpbGVEdXJhdGlvbkxpbWl0VXMsIGJpdFJhdGUsIHNpemUpOworICAgIHJldHVybiBmYWN0b3IgKiBzaXplOworfQorCitzdGF0dXNfdCBNUEVHNFdyaXRlcjo6c3RhcnQoTWV0YURhdGEgKnBhcmFtKSB7CisgICAgaWYgKG1GaWxlID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIFVOS05PV05fRVJST1I7CisgICAgfQorCisgICAgaW50MzJfdCB1c2U2NEJpdE9mZnNldDsKKyAgICBpZiAocGFyYW0gJiYKKyAgICAgICAgcGFyYW0tPmZpbmRJbnQzMihrS2V5NjRCaXRGaWxlT2Zmc2V0LCAmdXNlNjRCaXRPZmZzZXQpICYmCisgICAgICAgIHVzZTY0Qml0T2Zmc2V0KSB7CisgICAgICAgIG1Vc2UzMkJpdE9mZnNldCA9IGZhbHNlOworICAgIH0KKworICAgIC8vIFN5c3RlbSBwcm9wZXJ0eSBjYW4gb3ZlcndyaXRlIHRoZSBmaWxlIG9mZnNldCBiaXRzIHBhcmFtZXRlcgorICAgIGNoYXIgdmFsdWVbUFJPUEVSVFlfVkFMVUVfTUFYXTsKKyAgICBpZiAocHJvcGVydHlfZ2V0KCJtZWRpYS5zdGFnZWZyaWdodC5yZWNvcmQtNjRiaXRzIiwgdmFsdWUsIE5VTEwpCisgICAgICAgICYmICghc3RyY21wKHZhbHVlLCAiMSIpIHx8ICFzdHJjYXNlY21wKHZhbHVlLCAidHJ1ZSIpKSkgeworICAgICAgICBtVXNlMzJCaXRPZmZzZXQgPSBmYWxzZTsKKyAgICB9CisKKyAgICBtU3RhcnRUaW1lc3RhbXBVcyA9IC0xOworCisgICAgaWYgKG1TdGFydGVkKSB7CisgICAgICAgIGlmIChtUGF1c2VkKSB7CisgICAgICAgICAgICBtUGF1c2VkID0gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gc3RhcnRUcmFja3MocGFyYW0pOworICAgICAgICB9CisgICAgICAgIHJldHVybiBPSzsKKyAgICB9CisKKyAgICBtU3RyZWFtYWJsZUZpbGUgPSB0cnVlOworICAgIG1Xcml0ZU1vb3ZCb3hUb01lbW9yeSA9IGZhbHNlOworICAgIG1Nb292Qm94QnVmZmVyID0gTlVMTDsKKyAgICBtTW9vdkJveEJ1ZmZlck9mZnNldCA9IDA7CisKKyAgICBiZWdpbkJveCgiZnR5cCIpOworICAgICAgeworICAgICAgICBpbnQzMl90IGZpbGVUeXBlOworICAgICAgICBpZiAocGFyYW0gJiYgcGFyYW0tPmZpbmRJbnQzMihrS2V5RmlsZVR5cGUsICZmaWxlVHlwZSkgJiYKKyAgICAgICAgICAgIGZpbGVUeXBlICE9IE9VVFBVVF9GT1JNQVRfTVBFR180KSB7CisgICAgICAgICAgICB3cml0ZUZvdXJjYygiM2dwNCIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgd3JpdGVGb3VyY2MoImlzb20iKTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgd3JpdGVJbnQzMigwKTsKKyAgICAgIHdyaXRlRm91cmNjKCJpc29tIik7CisgICAgICB3cml0ZUZvdXJjYygiM2dwNCIpOworICAgIGVuZEJveCgpOworCisgICAgbUZyZWVCb3hPZmZzZXQgPSBtT2Zmc2V0OworCisgICAgaWYgKG1Fc3RpbWF0ZWRNb292Qm94U2l6ZSA9PSAwKSB7CisgICAgICAgIGludDMyX3QgYml0UmF0ZSA9IC0xOworICAgICAgICBpZiAocGFyYW0pIHsKKyAgICAgICAgICAgIHBhcmFtLT5maW5kSW50MzIoa0tleUJpdFJhdGUsICZiaXRSYXRlKTsKKyAgICAgICAgfQorICAgICAgICBtRXN0aW1hdGVkTW9vdkJveFNpemUgPSBlc3RpbWF0ZU1vb3ZCb3hTaXplKGJpdFJhdGUpOworICAgIH0KKyAgICBDSEVDSyhtRXN0aW1hdGVkTW9vdkJveFNpemUgPj0gOCk7CisgICAgZnNlZWtvKG1GaWxlLCBtRnJlZUJveE9mZnNldCwgU0VFS19TRVQpOworICAgIHdyaXRlSW50MzIobUVzdGltYXRlZE1vb3ZCb3hTaXplKTsKKyAgICB3cml0ZSgiZnJlZSIsIDQpOworCisgICAgbU1kYXRPZmZzZXQgPSBtRnJlZUJveE9mZnNldCArIG1Fc3RpbWF0ZWRNb292Qm94U2l6ZTsKKyAgICBtT2Zmc2V0ID0gbU1kYXRPZmZzZXQ7CisgICAgZnNlZWtvKG1GaWxlLCBtTWRhdE9mZnNldCwgU0VFS19TRVQpOworICAgIGlmIChtVXNlMzJCaXRPZmZzZXQpIHsKKyAgICAgICAgd3JpdGUoIj8/Pz9tZGF0IiwgOCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgd3JpdGUoIlx4MDBceDAwXHgwMFx4MDFtZGF0Pz8/Pz8/Pz8iLCAxNik7CisgICAgfQorICAgIHN0YXR1c190IGVyciA9IHN0YXJ0VHJhY2tzKHBhcmFtKTsKKyAgICBpZiAoZXJyICE9IE9LKSB7CisgICAgICAgIHJldHVybiBlcnI7CisgICAgfQorICAgIG1TdGFydGVkID0gdHJ1ZTsKKyAgICByZXR1cm4gT0s7Cit9CisKK3ZvaWQgTVBFRzRXcml0ZXI6OnBhdXNlKCkgeworICAgIGlmIChtRmlsZSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgbVBhdXNlZCA9IHRydWU7CisgICAgZm9yIChMaXN0PFRyYWNrICo+OjppdGVyYXRvciBpdCA9IG1UcmFja3MuYmVnaW4oKTsKKyAgICAgICAgIGl0ICE9IG1UcmFja3MuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgKCppdCktPnBhdXNlKCk7CisgICAgfQorfQorCiB2b2lkIE1QRUc0V3JpdGVyOjpzdG9wKCkgewogICAgIGlmIChtRmlsZSA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybjsKQEAgLTE0NywxNCArMzQ3LDI4IEBACiAgICAgICAgIH0KICAgICB9CiAKKwogICAgIC8vIEZpeCB1cCB0aGUgc2l6ZSBvZiB0aGUgJ21kYXQnIGNodW5rLgotICAgIGZzZWVrKG1GaWxlLCBtTWRhdE9mZnNldCArIDgsIFNFRUtfU0VUKTsKLSAgICBpbnQ2NF90IHNpemUgPSBtT2Zmc2V0IC0gbU1kYXRPZmZzZXQ7Ci0gICAgc2l6ZSA9IGh0b242NChzaXplKTsKLSAgICBmd3JpdGUoJnNpemUsIDEsIDgsIG1GaWxlKTsKLSAgICBmc2VlayhtRmlsZSwgbU9mZnNldCwgU0VFS19TRVQpOworICAgIGlmIChtVXNlMzJCaXRPZmZzZXQpIHsKKyAgICAgICAgZnNlZWtvKG1GaWxlLCBtTWRhdE9mZnNldCwgU0VFS19TRVQpOworICAgICAgICBpbnQzMl90IHNpemUgPSBodG9ubChzdGF0aWNfY2FzdDxpbnQzMl90PihtT2Zmc2V0IC0gbU1kYXRPZmZzZXQpKTsKKyAgICAgICAgZndyaXRlKCZzaXplLCAxLCA0LCBtRmlsZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZnNlZWtvKG1GaWxlLCBtTWRhdE9mZnNldCArIDgsIFNFRUtfU0VUKTsKKyAgICAgICAgaW50NjRfdCBzaXplID0gbU9mZnNldCAtIG1NZGF0T2Zmc2V0OworICAgICAgICBzaXplID0gaHRvbjY0KHNpemUpOworICAgICAgICBmd3JpdGUoJnNpemUsIDEsIDgsIG1GaWxlKTsKKyAgICB9CisgICAgZnNlZWtvKG1GaWxlLCBtT2Zmc2V0LCBTRUVLX1NFVCk7CiAKICAgICB0aW1lX3Qgbm93ID0gdGltZShOVUxMKTsKKyAgICBjb25zdCBvZmZfdCBtb292T2Zmc2V0ID0gbU9mZnNldDsKKyAgICBtV3JpdGVNb292Qm94VG9NZW1vcnkgPSB0cnVlOworICAgIG1Nb292Qm94QnVmZmVyID0gKHVpbnQ4X3QgKikgbWFsbG9jKG1Fc3RpbWF0ZWRNb292Qm94U2l6ZSk7CisgICAgbU1vb3ZCb3hCdWZmZXJPZmZzZXQgPSAwOworICAgIENIRUNLKG1Nb292Qm94QnVmZmVyICE9IE5VTEwpOworICAgIGludDMyX3QgdGltZVNjYWxlID0gMTAwMDsKKyAgICBpbnQzMl90IGR1cmF0aW9uID0gbWF4X2R1cmF0aW9uIC8gdGltZVNjYWxlOwogCiAgICAgYmVnaW5Cb3goIm1vb3YiKTsKIApAQCAtMTYyLDkgKzM3Niw5IEBACiAgICAgICAgIHdyaXRlSW50MzIoMCk7ICAgICAgICAgICAgIC8vIHZlcnNpb249MCwgZmxhZ3M9MAogICAgICAgICB3cml0ZUludDMyKG5vdyk7ICAgICAgICAgICAvLyBjcmVhdGlvbiB0aW1lCiAgICAgICAgIHdyaXRlSW50MzIobm93KTsgICAgICAgICAgIC8vIG1vZGlmaWNhdGlvbiB0aW1lCi0gICAgICAgIHdyaXRlSW50MzIoMTAwMCk7ICAgICAgICAgIC8vIHRpbWVzY2FsZQotICAgICAgICB3cml0ZUludDMyKG1heF9kdXJhdGlvbiAvIDEwMDApOwotICAgICAgICB3cml0ZUludDMyKDB4MTAwMDApOyAgICAgICAvLyByYXRlCisgICAgICAgIHdyaXRlSW50MzIodGltZVNjYWxlKTsgICAgICAgICAgLy8gdGltZXNjYWxlCisgICAgICAgIHdyaXRlSW50MzIoZHVyYXRpb24pOworICAgICAgICB3cml0ZUludDMyKDB4MTAwMDApOyAgICAgICAvLyByYXRlOiAxLjAKICAgICAgICAgd3JpdGVJbnQxNigweDEwMCk7ICAgICAgICAgLy8gdm9sdW1lCiAgICAgICAgIHdyaXRlSW50MTYoMCk7ICAgICAgICAgICAgIC8vIHJlc2VydmVkCiAgICAgICAgIHdyaXRlSW50MzIoMCk7ICAgICAgICAgICAgIC8vIHJlc2VydmVkCkBAIC0xOTAsMTkgKzQwNCw1NCBAQAogICAgICAgaW50MzJfdCBpZCA9IDE7CiAgICAgICBmb3IgKExpc3Q8VHJhY2sgKj46Oml0ZXJhdG9yIGl0ID0gbVRyYWNrcy5iZWdpbigpOwogICAgICAgICAgICBpdCAhPSBtVHJhY2tzLmVuZCgpOyArK2l0LCArK2lkKSB7Ci0gICAgICAgICAgKCppdCktPndyaXRlVHJhY2tIZWFkZXIoaWQpOworICAgICAgICAgICgqaXQpLT53cml0ZVRyYWNrSGVhZGVyKGlkLCBtVXNlMzJCaXRPZmZzZXQpOwogICAgICAgfQogICAgIGVuZEJveCgpOyAgLy8gbW9vdgogCisgICAgbVdyaXRlTW9vdkJveFRvTWVtb3J5ID0gZmFsc2U7CisgICAgaWYgKG1TdHJlYW1hYmxlRmlsZSkgeworICAgICAgICBDSEVDSyhtTW9vdkJveEJ1ZmZlck9mZnNldCArIDggPD0gbUVzdGltYXRlZE1vb3ZCb3hTaXplKTsKKworICAgICAgICAvLyBNb292IGJveAorICAgICAgICBmc2Vla28obUZpbGUsIG1GcmVlQm94T2Zmc2V0LCBTRUVLX1NFVCk7CisgICAgICAgIG1PZmZzZXQgPSBtRnJlZUJveE9mZnNldDsKKyAgICAgICAgd3JpdGUobU1vb3ZCb3hCdWZmZXIsIDEsIG1Nb292Qm94QnVmZmVyT2Zmc2V0LCBtRmlsZSk7CisKKyAgICAgICAgLy8gRnJlZSBib3gKKyAgICAgICAgZnNlZWtvKG1GaWxlLCBtT2Zmc2V0LCBTRUVLX1NFVCk7CisgICAgICAgIHdyaXRlSW50MzIobUVzdGltYXRlZE1vb3ZCb3hTaXplIC0gbU1vb3ZCb3hCdWZmZXJPZmZzZXQpOworICAgICAgICB3cml0ZSgiZnJlZSIsIDQpOworCisgICAgICAgIC8vIEZyZWUgdGVtcCBtZW1vcnkKKyAgICAgICAgZnJlZShtTW9vdkJveEJ1ZmZlcik7CisgICAgICAgIG1Nb292Qm94QnVmZmVyID0gTlVMTDsKKyAgICAgICAgbU1vb3ZCb3hCdWZmZXJPZmZzZXQgPSAwOworICAgIH0gZWxzZSB7CisgICAgICAgIExPR0koIlRoZSBtcDQgZmlsZSB3aWxsIG5vdCBiZSBzdHJlYW1hYmxlLiIpOworICAgIH0KKwogICAgIENIRUNLKG1Cb3hlcy5lbXB0eSgpKTsKIAorICAgIGZmbHVzaChtRmlsZSk7CiAgICAgZmNsb3NlKG1GaWxlKTsKICAgICBtRmlsZSA9IE5VTEw7CisgICAgbVN0YXJ0ZWQgPSBmYWxzZTsKIH0KIAotb2ZmX3QgTVBFRzRXcml0ZXI6OmFkZFNhbXBsZShNZWRpYUJ1ZmZlciAqYnVmZmVyKSB7Ci0gICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKK3N0YXR1c190IE1QRUc0V3JpdGVyOjpzZXRJbnRlcmxlYXZlRHVyYXRpb24odWludDMyX3QgZHVyYXRpb25VcykgeworICAgIG1JbnRlcmxlYXZlRHVyYXRpb25VcyA9IGR1cmF0aW9uVXM7CisgICAgcmV0dXJuIE9LOworfQogCit2b2lkIE1QRUc0V3JpdGVyOjpsb2NrKCkgeworICAgIG1Mb2NrLmxvY2soKTsKK30KKwordm9pZCBNUEVHNFdyaXRlcjo6dW5sb2NrKCkgeworICAgIG1Mb2NrLnVubG9jaygpOworfQorCitvZmZfdCBNUEVHNFdyaXRlcjo6YWRkU2FtcGxlX2woTWVkaWFCdWZmZXIgKmJ1ZmZlcikgewogICAgIG9mZl90IG9sZF9vZmZzZXQgPSBtT2Zmc2V0OwogCiAgICAgZndyaXRlKChjb25zdCB1aW50OF90ICopYnVmZmVyLT5kYXRhKCkgKyBidWZmZXItPnJhbmdlX29mZnNldCgpLApAQCAtMjEzLDMxICs0NjIsOTEgQEAKICAgICByZXR1cm4gb2xkX29mZnNldDsKIH0KIAotb2ZmX3QgTVBFRzRXcml0ZXI6OmFkZExlbmd0aFByZWZpeGVkU2FtcGxlKE1lZGlhQnVmZmVyICpidWZmZXIpIHsKLSAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobUxvY2spOworc3RhdGljIHZvaWQgU3RyaXBTdGFydGNvZGUoTWVkaWFCdWZmZXIgKmJ1ZmZlcikgeworICAgIGlmIChidWZmZXItPnJhbmdlX2xlbmd0aCgpIDwgNCkgeworICAgICAgICByZXR1cm47CisgICAgfQogCisgICAgY29uc3QgdWludDhfdCAqcHRyID0KKyAgICAgICAgKGNvbnN0IHVpbnQ4X3QgKilidWZmZXItPmRhdGEoKSArIGJ1ZmZlci0+cmFuZ2Vfb2Zmc2V0KCk7CisKKyAgICBpZiAoIW1lbWNtcChwdHIsICJceDAwXHgwMFx4MDBceDAxIiwgNCkpIHsKKyAgICAgICAgYnVmZmVyLT5zZXRfcmFuZ2UoCisgICAgICAgICAgICAgICAgYnVmZmVyLT5yYW5nZV9vZmZzZXQoKSArIDQsIGJ1ZmZlci0+cmFuZ2VfbGVuZ3RoKCkgLSA0KTsKKyAgICB9Cit9CisKK29mZl90IE1QRUc0V3JpdGVyOjphZGRMZW5ndGhQcmVmaXhlZFNhbXBsZV9sKE1lZGlhQnVmZmVyICpidWZmZXIpIHsKICAgICBvZmZfdCBvbGRfb2Zmc2V0ID0gbU9mZnNldDsKIAogICAgIHNpemVfdCBsZW5ndGggPSBidWZmZXItPnJhbmdlX2xlbmd0aCgpOworCisjaWYgVVNFX05BTExFTl9GT1VSCisgICAgdWludDhfdCB4ID0gbGVuZ3RoID4+IDI0OworICAgIGZ3cml0ZSgmeCwgMSwgMSwgbUZpbGUpOworICAgIHggPSAobGVuZ3RoID4+IDE2KSAmIDB4ZmY7CisgICAgZndyaXRlKCZ4LCAxLCAxLCBtRmlsZSk7CisgICAgeCA9IChsZW5ndGggPj4gOCkgJiAweGZmOworICAgIGZ3cml0ZSgmeCwgMSwgMSwgbUZpbGUpOworICAgIHggPSBsZW5ndGggJiAweGZmOworICAgIGZ3cml0ZSgmeCwgMSwgMSwgbUZpbGUpOworI2Vsc2UKICAgICBDSEVDSyhsZW5ndGggPCA2NTUzNik7CiAKICAgICB1aW50OF90IHggPSBsZW5ndGggPj4gODsKICAgICBmd3JpdGUoJngsIDEsIDEsIG1GaWxlKTsKICAgICB4ID0gbGVuZ3RoICYgMHhmZjsKICAgICBmd3JpdGUoJngsIDEsIDEsIG1GaWxlKTsKKyNlbmRpZgogCiAgICAgZndyaXRlKChjb25zdCB1aW50OF90ICopYnVmZmVyLT5kYXRhKCkgKyBidWZmZXItPnJhbmdlX29mZnNldCgpLAogICAgICAgICAgICAxLCBsZW5ndGgsIG1GaWxlKTsKIAorI2lmIFVTRV9OQUxMRU5fRk9VUgorICAgIG1PZmZzZXQgKz0gbGVuZ3RoICsgNDsKKyNlbHNlCiAgICAgbU9mZnNldCArPSBsZW5ndGggKyAyOworI2VuZGlmCiAKICAgICByZXR1cm4gb2xkX29mZnNldDsKIH0KIAorc2l6ZV90IE1QRUc0V3JpdGVyOjp3cml0ZSgKKyAgICAgICAgY29uc3Qgdm9pZCAqcHRyLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IG5tZW1iLCBGSUxFICpzdHJlYW0pIHsKKworICAgIGNvbnN0IHNpemVfdCBieXRlcyA9IHNpemUgKiBubWVtYjsKKyAgICBpZiAobVdyaXRlTW9vdkJveFRvTWVtb3J5KSB7CisgICAgICAgIG9mZl90IG1vb3ZCb3hTaXplID0gOCArIG1Nb292Qm94QnVmZmVyT2Zmc2V0ICsgYnl0ZXM7CisgICAgICAgIGlmIChtb292Qm94U2l6ZSA+IG1Fc3RpbWF0ZWRNb292Qm94U2l6ZSkgeworICAgICAgICAgICAgZm9yIChMaXN0PG9mZl90Pjo6aXRlcmF0b3IgaXQgPSBtQm94ZXMuYmVnaW4oKTsKKyAgICAgICAgICAgICAgICAgaXQgIT0gbUJveGVzLmVuZCgpOyArK2l0KSB7CisgICAgICAgICAgICAgICAgKCppdCkgKz0gbU9mZnNldDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZzZWVrbyhtRmlsZSwgbU9mZnNldCwgU0VFS19TRVQpOworICAgICAgICAgICAgZndyaXRlKG1Nb292Qm94QnVmZmVyLCAxLCBtTW9vdkJveEJ1ZmZlck9mZnNldCwgc3RyZWFtKTsKKyAgICAgICAgICAgIGZ3cml0ZShwdHIsIHNpemUsIG5tZW1iLCBzdHJlYW0pOworICAgICAgICAgICAgbU9mZnNldCArPSAoYnl0ZXMgKyBtTW9vdkJveEJ1ZmZlck9mZnNldCk7CisgICAgICAgICAgICBmcmVlKG1Nb292Qm94QnVmZmVyKTsKKyAgICAgICAgICAgIG1Nb292Qm94QnVmZmVyID0gTlVMTDsKKyAgICAgICAgICAgIG1Nb292Qm94QnVmZmVyT2Zmc2V0ID0gMDsKKyAgICAgICAgICAgIG1Xcml0ZU1vb3ZCb3hUb01lbW9yeSA9IGZhbHNlOworICAgICAgICAgICAgbVN0cmVhbWFibGVGaWxlID0gZmFsc2U7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtZW1jcHkobU1vb3ZCb3hCdWZmZXIgKyBtTW9vdkJveEJ1ZmZlck9mZnNldCwgcHRyLCBieXRlcyk7CisgICAgICAgICAgICBtTW9vdkJveEJ1ZmZlck9mZnNldCArPSBieXRlczsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIGZ3cml0ZShwdHIsIHNpemUsIG5tZW1iLCBzdHJlYW0pOworICAgICAgICBtT2Zmc2V0ICs9IGJ5dGVzOworICAgIH0KKyAgICByZXR1cm4gYnl0ZXM7Cit9CisKIHZvaWQgTVBFRzRXcml0ZXI6OmJlZ2luQm94KGNvbnN0IGNoYXIgKmZvdXJjYykgewogICAgIENIRUNLX0VRKHN0cmxlbihmb3VyY2MpLCA0KTsKIAotICAgIG1Cb3hlcy5wdXNoX2JhY2sobU9mZnNldCk7CisgICAgbUJveGVzLnB1c2hfYmFjayhtV3JpdGVNb292Qm94VG9NZW1vcnk/CisgICAgICAgICAgICBtTW9vdkJveEJ1ZmZlck9mZnNldDogbU9mZnNldCk7CiAKICAgICB3cml0ZUludDMyKDApOwogICAgIHdyaXRlRm91cmNjKGZvdXJjYyk7CkBAIC0yNDksNTEgKzU1OCw3NyBAQAogICAgIG9mZl90IG9mZnNldCA9ICotLW1Cb3hlcy5lbmQoKTsKICAgICBtQm94ZXMuZXJhc2UoLS1tQm94ZXMuZW5kKCkpOwogCi0gICAgZnNlZWsobUZpbGUsIG9mZnNldCwgU0VFS19TRVQpOwotICAgIHdyaXRlSW50MzIobU9mZnNldCAtIG9mZnNldCk7Ci0gICAgbU9mZnNldCAtPSA0OwotICAgIGZzZWVrKG1GaWxlLCBtT2Zmc2V0LCBTRUVLX1NFVCk7CisgICAgaWYgKG1Xcml0ZU1vb3ZCb3hUb01lbW9yeSkgeworICAgICAgIGludDMyX3QgeCA9IGh0b25sKG1Nb292Qm94QnVmZmVyT2Zmc2V0IC0gb2Zmc2V0KTsKKyAgICAgICBtZW1jcHkobU1vb3ZCb3hCdWZmZXIgKyBvZmZzZXQsICZ4LCA0KTsKKyAgICB9IGVsc2UgeworICAgICAgICBmc2Vla28obUZpbGUsIG9mZnNldCwgU0VFS19TRVQpOworICAgICAgICB3cml0ZUludDMyKG1PZmZzZXQgLSBvZmZzZXQpOworICAgICAgICBtT2Zmc2V0IC09IDQ7CisgICAgICAgIGZzZWVrbyhtRmlsZSwgbU9mZnNldCwgU0VFS19TRVQpOworICAgIH0KIH0KIAogdm9pZCBNUEVHNFdyaXRlcjo6d3JpdGVJbnQ4KGludDhfdCB4KSB7Ci0gICAgZndyaXRlKCZ4LCAxLCAxLCBtRmlsZSk7Ci0gICAgKyttT2Zmc2V0OworICAgIHdyaXRlKCZ4LCAxLCAxLCBtRmlsZSk7CiB9CiAKIHZvaWQgTVBFRzRXcml0ZXI6OndyaXRlSW50MTYoaW50MTZfdCB4KSB7CiAgICAgeCA9IGh0b25zKHgpOwotICAgIGZ3cml0ZSgmeCwgMSwgMiwgbUZpbGUpOwotICAgIG1PZmZzZXQgKz0gMjsKKyAgICB3cml0ZSgmeCwgMSwgMiwgbUZpbGUpOwogfQogCiB2b2lkIE1QRUc0V3JpdGVyOjp3cml0ZUludDMyKGludDMyX3QgeCkgewogICAgIHggPSBodG9ubCh4KTsKLSAgICBmd3JpdGUoJngsIDEsIDQsIG1GaWxlKTsKLSAgICBtT2Zmc2V0ICs9IDQ7CisgICAgd3JpdGUoJngsIDEsIDQsIG1GaWxlKTsKIH0KIAogdm9pZCBNUEVHNFdyaXRlcjo6d3JpdGVJbnQ2NChpbnQ2NF90IHgpIHsKICAgICB4ID0gaHRvbjY0KHgpOwotICAgIGZ3cml0ZSgmeCwgMSwgOCwgbUZpbGUpOwotICAgIG1PZmZzZXQgKz0gODsKKyAgICB3cml0ZSgmeCwgMSwgOCwgbUZpbGUpOwogfQogCiB2b2lkIE1QRUc0V3JpdGVyOjp3cml0ZUNTdHJpbmcoY29uc3QgY2hhciAqcykgewogICAgIHNpemVfdCBuID0gc3RybGVuKHMpOwotCi0gICAgZndyaXRlKHMsIDEsIG4gKyAxLCBtRmlsZSk7Ci0gICAgbU9mZnNldCArPSBuICsgMTsKKyAgICB3cml0ZShzLCAxLCBuICsgMSwgbUZpbGUpOwogfQogCiB2b2lkIE1QRUc0V3JpdGVyOjp3cml0ZUZvdXJjYyhjb25zdCBjaGFyICpzKSB7CiAgICAgQ0hFQ0tfRVEoc3RybGVuKHMpLCA0KTsKLSAgICBmd3JpdGUocywgMSwgNCwgbUZpbGUpOwotICAgIG1PZmZzZXQgKz0gNDsKKyAgICB3cml0ZShzLCAxLCA0LCBtRmlsZSk7CiB9CiAKIHZvaWQgTVBFRzRXcml0ZXI6OndyaXRlKGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBzaXplKSB7Ci0gICAgZndyaXRlKGRhdGEsIDEsIHNpemUsIG1GaWxlKTsKLSAgICBtT2Zmc2V0ICs9IHNpemU7CisgICAgd3JpdGUoZGF0YSwgMSwgc2l6ZSwgbUZpbGUpOworfQorCitib29sIE1QRUc0V3JpdGVyOjpleGNlZWRzRmlsZVNpemVMaW1pdCgpIHsKKyAgICAvLyBObyBsaW1pdAorICAgIGlmIChtTWF4RmlsZVNpemVMaW1pdEJ5dGVzID09IDApIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGludDY0X3QgblRvdGFsQnl0ZXNFc3RpbWF0ZSA9IHN0YXRpY19jYXN0PGludDY0X3Q+KG1Fc3RpbWF0ZWRNb292Qm94U2l6ZSk7CisgICAgZm9yIChMaXN0PFRyYWNrICo+OjppdGVyYXRvciBpdCA9IG1UcmFja3MuYmVnaW4oKTsKKyAgICAgICAgIGl0ICE9IG1UcmFja3MuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgblRvdGFsQnl0ZXNFc3RpbWF0ZSArPSAoKml0KS0+Z2V0RXN0aW1hdGVkVHJhY2tTaXplQnl0ZXMoKTsKKyAgICB9CisgICAgcmV0dXJuIChuVG90YWxCeXRlc0VzdGltYXRlID49IG1NYXhGaWxlU2l6ZUxpbWl0Qnl0ZXMpOworfQorCitib29sIE1QRUc0V3JpdGVyOjpleGNlZWRzRmlsZUR1cmF0aW9uTGltaXQoKSB7CisgICAgLy8gTm8gbGltaXQKKyAgICBpZiAobU1heEZpbGVEdXJhdGlvbkxpbWl0VXMgPT0gMCkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgZm9yIChMaXN0PFRyYWNrICo+OjppdGVyYXRvciBpdCA9IG1UcmFja3MuYmVnaW4oKTsKKyAgICAgICAgIGl0ICE9IG1UcmFja3MuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgaWYgKCgqaXQpLT5nZXREdXJhdGlvblVzKCkgPj0gbU1heEZpbGVEdXJhdGlvbkxpbWl0VXMpIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKIH0KIAogYm9vbCBNUEVHNFdyaXRlcjo6cmVhY2hlZEVPUygpIHsKQEAgLTMwOSw2ICs2NDQsMjcgQEAKICAgICByZXR1cm4gYWxsRG9uZTsKIH0KIAordm9pZCBNUEVHNFdyaXRlcjo6c2V0U3RhcnRUaW1lc3RhbXBVcyhpbnQ2NF90IHRpbWVVcykgeworICAgIExPR0koInNldFN0YXJ0VGltZXN0YW1wVXM6ICVsbGQiLCB0aW1lVXMpOworICAgIENIRUNLKHRpbWVVcyA+PSAwKTsKKyAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobUxvY2spOworICAgIGlmIChtU3RhcnRUaW1lc3RhbXBVcyA8IDAgfHwgbVN0YXJ0VGltZXN0YW1wVXMgPiB0aW1lVXMpIHsKKyAgICAgICAgbVN0YXJ0VGltZXN0YW1wVXMgPSB0aW1lVXM7CisgICAgICAgIExPR0koIkVhcmxpZXN0IHRyYWNrIHN0YXJ0aW5nIHRpbWU6ICVsbGQiLCBtU3RhcnRUaW1lc3RhbXBVcyk7CisgICAgfQorfQorCitpbnQ2NF90IE1QRUc0V3JpdGVyOjpnZXRTdGFydFRpbWVzdGFtcFVzKCkgeworICAgIExPR0koImdldFN0YXJ0VGltZXN0YW1wVXM6ICVsbGQiLCBtU3RhcnRUaW1lc3RhbXBVcyk7CisgICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKKyAgICByZXR1cm4gbVN0YXJ0VGltZXN0YW1wVXM7Cit9CisKK3NpemVfdCBNUEVHNFdyaXRlcjo6bnVtVHJhY2tzKCkgeworICAgIE11dGV4OjpBdXRvbG9jayBhdXRvbG9jayhtTG9jayk7CisgICAgcmV0dXJuIG1UcmFja3Muc2l6ZSgpOworfQorCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogCiBNUEVHNFdyaXRlcjo6VHJhY2s6OlRyYWNrKApAQCAtMzE3LDEwICs2NzMsNDcgQEAKICAgICAgIG1NZXRhKHNvdXJjZS0+Z2V0Rm9ybWF0KCkpLAogICAgICAgbVNvdXJjZShzb3VyY2UpLAogICAgICAgbURvbmUoZmFsc2UpLAorICAgICAgbVBhdXNlZChmYWxzZSksCisgICAgICBtUmVzdW1lZChmYWxzZSksCiAgICAgICBtTWF4VGltZVN0YW1wVXMoMCksCisgICAgICBtRXN0aW1hdGVkVHJhY2tTaXplQnl0ZXMoMCksCisgICAgICBtU2FtcGxlc0hhdmVTYW1lU2l6ZSh0cnVlKSwKICAgICAgIG1Db2RlY1NwZWNpZmljRGF0YShOVUxMKSwKICAgICAgIG1Db2RlY1NwZWNpZmljRGF0YVNpemUoMCksCisgICAgICBtR290QWxsQ29kZWNTcGVjaWZpY0RhdGEoZmFsc2UpLAogICAgICAgbVJlYWNoZWRFT1MoZmFsc2UpIHsKKyAgICBnZXRDb2RlY1NwZWNpZmljRGF0YUZyb21JbnB1dEZvcm1hdElmUG9zc2libGUoKTsKK30KKwordm9pZCBNUEVHNFdyaXRlcjo6VHJhY2s6OmdldENvZGVjU3BlY2lmaWNEYXRhRnJvbUlucHV0Rm9ybWF0SWZQb3NzaWJsZSgpIHsKKyAgICBjb25zdCBjaGFyICptaW1lOworICAgIENIRUNLKG1NZXRhLT5maW5kQ1N0cmluZyhrS2V5TUlNRVR5cGUsICZtaW1lKSk7CisKKyAgICBpZiAoIXN0cmNhc2VjbXAobWltZSwgTUVESUFfTUlNRVRZUEVfVklERU9fQVZDKSkgeworICAgICAgICB1aW50MzJfdCB0eXBlOworICAgICAgICBjb25zdCB2b2lkICpkYXRhOworICAgICAgICBzaXplX3Qgc2l6ZTsKKyAgICAgICAgaWYgKG1NZXRhLT5maW5kRGF0YShrS2V5QVZDQywgJnR5cGUsICZkYXRhLCAmc2l6ZSkpIHsKKyAgICAgICAgICAgIG1Db2RlY1NwZWNpZmljRGF0YSA9IG1hbGxvYyhzaXplKTsKKyAgICAgICAgICAgIG1Db2RlY1NwZWNpZmljRGF0YVNpemUgPSBzaXplOworICAgICAgICAgICAgbWVtY3B5KG1Db2RlY1NwZWNpZmljRGF0YSwgZGF0YSwgc2l6ZSk7CisgICAgICAgICAgICBtR290QWxsQ29kZWNTcGVjaWZpY0RhdGEgPSB0cnVlOworICAgICAgICB9CisgICAgfSBlbHNlIGlmICghc3RyY2FzZWNtcChtaW1lLCBNRURJQV9NSU1FVFlQRV9WSURFT19NUEVHNCkKKyAgICAgICAgICAgIHx8ICFzdHJjYXNlY21wKG1pbWUsIE1FRElBX01JTUVUWVBFX0FVRElPX0FBQykpIHsKKyAgICAgICAgdWludDMyX3QgdHlwZTsKKyAgICAgICAgY29uc3Qgdm9pZCAqZGF0YTsKKyAgICAgICAgc2l6ZV90IHNpemU7CisgICAgICAgIGlmIChtTWV0YS0+ZmluZERhdGEoa0tleUVTRFMsICZ0eXBlLCAmZGF0YSwgJnNpemUpKSB7CisgICAgICAgICAgICBFU0RTIGVzZHMoZGF0YSwgc2l6ZSk7CisgICAgICAgICAgICBpZiAoZXNkcy5nZXRDb2RlY1NwZWNpZmljSW5mbygmZGF0YSwgJnNpemUpID09IE9LKSB7CisgICAgICAgICAgICAgICAgbUNvZGVjU3BlY2lmaWNEYXRhID0gbWFsbG9jKHNpemUpOworICAgICAgICAgICAgICAgIG1Db2RlY1NwZWNpZmljRGF0YVNpemUgPSBzaXplOworICAgICAgICAgICAgICAgIG1lbWNweShtQ29kZWNTcGVjaWZpY0RhdGEsIGRhdGEsIHNpemUpOworICAgICAgICAgICAgICAgIG1Hb3RBbGxDb2RlY1NwZWNpZmljRGF0YSA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CiB9CiAKIE1QRUc0V3JpdGVyOjpUcmFjazo6flRyYWNrKCkgewpAQCAtMzMyLDkgKzcyNSw0NyBAQAogICAgIH0KIH0KIAotc3RhdHVzX3QgTVBFRzRXcml0ZXI6OlRyYWNrOjpzdGFydCgpIHsKLSAgICBzdGF0dXNfdCBlcnIgPSBtU291cmNlLT5zdGFydCgpOwordm9pZCBNUEVHNFdyaXRlcjo6VHJhY2s6OmluaXRUcmFja2luZ1Byb2dyZXNzU3RhdHVzKE1ldGFEYXRhICpwYXJhbXMpIHsKKyAgICBMT0dWKCJpbml0VHJhY2tpbmdQcm9ncmVzc1N0YXR1cyIpOworICAgIG1QcmV2aW91c1RyYWNrVGltZVVzID0gLTE7CisgICAgbVRyYWNraW5nUHJvZ3Jlc3NTdGF0dXMgPSBmYWxzZTsKKyAgICBtVHJhY2tFdmVyeVRpbWVEdXJhdGlvblVzID0gMDsKKyAgICBtVHJhY2tFdmVyeU51bWJlck9mRnJhbWVzID0gMDsKKyAgICB7CisgICAgICAgIGludDY0X3QgdGltZVVzOworICAgICAgICBpZiAocGFyYW1zICYmIHBhcmFtcy0+ZmluZEludDY0KGtLZXlUcmFja1RpbWVTdGF0dXMsICZ0aW1lVXMpKSB7CisgICAgICAgICAgICBMT0dWKCJSZWNlaXZlIHJlcXVlc3QgdG8gdHJhY2sgcHJvZ3Jlc3Mgc3RhdHVzIGZvciBldmVyeSAlbGxkIHVzIiwgdGltZVVzKTsKKyAgICAgICAgICAgIG1UcmFja0V2ZXJ5VGltZUR1cmF0aW9uVXMgPSB0aW1lVXM7CisgICAgICAgICAgICBtVHJhY2tpbmdQcm9ncmVzc1N0YXR1cyA9IHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgeworICAgICAgICBpbnQzMl90IG5GcmFtZXM7CisgICAgICAgIGlmIChwYXJhbXMgJiYgcGFyYW1zLT5maW5kSW50MzIoa0tleVRyYWNrRnJhbWVTdGF0dXMsICZuRnJhbWVzKSkgeworICAgICAgICAgICAgTE9HVigiUmVjZWl2ZSByZXF1ZXN0IHRvIHRyYWNrIHByb2dyZXNzIHN0YXR1cyBmb3IgZXZlcnkgJWQgZnJhbWVzIiwgbkZyYW1lcyk7CisgICAgICAgICAgICBtVHJhY2tFdmVyeU51bWJlck9mRnJhbWVzID0gbkZyYW1lczsKKyAgICAgICAgICAgIG1UcmFja2luZ1Byb2dyZXNzU3RhdHVzID0gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0KK30KIAorc3RhdHVzX3QgTVBFRzRXcml0ZXI6OlRyYWNrOjpzdGFydChNZXRhRGF0YSAqcGFyYW1zKSB7CisgICAgaWYgKCFtRG9uZSAmJiBtUGF1c2VkKSB7CisgICAgICAgIG1QYXVzZWQgPSBmYWxzZTsKKyAgICAgICAgbVJlc3VtZWQgPSB0cnVlOworICAgICAgICByZXR1cm4gT0s7CisgICAgfQorCisgICAgaW50NjRfdCBzdGFydFRpbWVVczsKKyAgICBpZiAocGFyYW1zID09IE5VTEwgfHwgIXBhcmFtcy0+ZmluZEludDY0KGtLZXlUaW1lLCAmc3RhcnRUaW1lVXMpKSB7CisgICAgICAgIHN0YXJ0VGltZVVzID0gMDsKKyAgICB9CisKKyAgICBpbml0VHJhY2tpbmdQcm9ncmVzc1N0YXR1cyhwYXJhbXMpOworCisgICAgc3A8TWV0YURhdGE+IG1ldGEgPSBuZXcgTWV0YURhdGE7CisgICAgbWV0YS0+c2V0SW50NjQoa0tleVRpbWUsIHN0YXJ0VGltZVVzKTsKKyAgICBzdGF0dXNfdCBlcnIgPSBtU291cmNlLT5zdGFydChtZXRhLmdldCgpKTsKICAgICBpZiAoZXJyICE9IE9LKSB7CiAgICAgICAgIG1Eb25lID0gbVJlYWNoZWRFT1MgPSB0cnVlOwogICAgICAgICByZXR1cm4gZXJyOwpAQCAtMzQ3LDYgKzc3OCw3IEBACiAgICAgbURvbmUgPSBmYWxzZTsKICAgICBtTWF4VGltZVN0YW1wVXMgPSAwOwogICAgIG1SZWFjaGVkRU9TID0gZmFsc2U7CisgICAgbUVzdGltYXRlZFRyYWNrU2l6ZUJ5dGVzID0gMDsKIAogICAgIHB0aHJlYWRfY3JlYXRlKCZtVGhyZWFkLCAmYXR0ciwgVGhyZWFkV3JhcHBlciwgdGhpcyk7CiAgICAgcHRocmVhZF9hdHRyX2Rlc3Ryb3koJmF0dHIpOwpAQCAtMzU0LDYgKzc4NiwxMCBAQAogICAgIHJldHVybiBPSzsKIH0KIAordm9pZCBNUEVHNFdyaXRlcjo6VHJhY2s6OnBhdXNlKCkgeworICAgIG1QYXVzZWQgPSB0cnVlOworfQorCiB2b2lkIE1QRUc0V3JpdGVyOjpUcmFjazo6c3RvcCgpIHsKICAgICBpZiAobURvbmUpIHsKICAgICAgICAgcmV0dXJuOwpAQCAtMzgwLDczICs4MTYsMTc1IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKKyNpbmNsdWRlIDxjdHlwZS5oPgorc3RhdGljIHZvaWQgaGV4ZHVtcChjb25zdCB2b2lkICpfZGF0YSwgc2l6ZV90IHNpemUpIHsKKyAgICBjb25zdCB1aW50OF90ICpkYXRhID0gKGNvbnN0IHVpbnQ4X3QgKilfZGF0YTsKKyAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKKyAgICB3aGlsZSAob2Zmc2V0IDwgc2l6ZSkgeworICAgICAgICBwcmludGYoIjB4JTA0eCAgIiwgb2Zmc2V0KTsKKworICAgICAgICBzaXplX3QgbiA9IHNpemUgLSBvZmZzZXQ7CisgICAgICAgIGlmIChuID4gMTYpIHsKKyAgICAgICAgICAgIG4gPSAxNjsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMTY7ICsraSkgeworICAgICAgICAgICAgaWYgKGkgPT0gOCkgeworICAgICAgICAgICAgICAgIHByaW50ZigiICIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAob2Zmc2V0ICsgaSA8IHNpemUpIHsKKyAgICAgICAgICAgICAgICBwcmludGYoIiUwMnggIiwgZGF0YVtvZmZzZXQgKyBpXSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHByaW50ZigiICAgIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBwcmludGYoIiAiKTsKKworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG47ICsraSkgeworICAgICAgICAgICAgaWYgKGlzcHJpbnQoZGF0YVtvZmZzZXQgKyBpXSkpIHsKKyAgICAgICAgICAgICAgICBwcmludGYoIiVjIiwgZGF0YVtvZmZzZXQgKyBpXSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHByaW50ZigiLiIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcHJpbnRmKCJcbiIpOworCisgICAgICAgIG9mZnNldCArPSAxNjsKKyAgICB9Cit9CisKKworc3RhdHVzX3QgTVBFRzRXcml0ZXI6OlRyYWNrOjptYWtlQVZDQ29kZWNTcGVjaWZpY0RhdGEoCisgICAgICAgIGNvbnN0IHVpbnQ4X3QgKmRhdGEsIHNpemVfdCBzaXplKSB7CisgICAgLy8gaGV4ZHVtcChkYXRhLCBzaXplKTsKKworICAgIGlmIChtQ29kZWNTcGVjaWZpY0RhdGEgIT0gTlVMTCkgeworICAgICAgICBMT0dFKCJBbHJlYWR5IGhhdmUgY29kZWMgc3BlY2lmaWMgZGF0YSIpOworICAgICAgICByZXR1cm4gRVJST1JfTUFMRk9STUVEOworICAgIH0KKworICAgIGlmIChzaXplIDwgNCB8fCBtZW1jbXAoIlx4MDBceDAwXHgwMFx4MDEiLCBkYXRhLCA0KSkgeworICAgICAgICBMT0dFKCJNdXN0IHN0YXJ0IHdpdGggYSBzdGFydCBjb2RlIik7CisgICAgICAgIHJldHVybiBFUlJPUl9NQUxGT1JNRUQ7CisgICAgfQorCisgICAgc2l6ZV90IHBpY1BhcmFtT2Zmc2V0ID0gNDsKKyAgICB3aGlsZSAocGljUGFyYW1PZmZzZXQgKyAzIDwgc2l6ZQorICAgICAgICAgICAgJiYgbWVtY21wKCJceDAwXHgwMFx4MDBceDAxIiwgJmRhdGFbcGljUGFyYW1PZmZzZXRdLCA0KSkgeworICAgICAgICArK3BpY1BhcmFtT2Zmc2V0OworICAgIH0KKworICAgIGlmIChwaWNQYXJhbU9mZnNldCArIDMgPj0gc2l6ZSkgeworICAgICAgICBMT0dFKCJDb3VsZCBub3QgZmluZCBzdGFydC1jb2RlIGZvciBwaWN0dXJlUGFyYW1ldGVyU2V0Iik7CisgICAgICAgIHJldHVybiBFUlJPUl9NQUxGT1JNRUQ7CisgICAgfQorCisgICAgc2l6ZV90IHNlcVBhcmFtU2V0TGVuZ3RoID0gcGljUGFyYW1PZmZzZXQgLSA0OworICAgIHNpemVfdCBwaWNQYXJhbVNldExlbmd0aCA9IHNpemUgLSBwaWNQYXJhbU9mZnNldCAtIDQ7CisKKyAgICBtQ29kZWNTcGVjaWZpY0RhdGFTaXplID0KKyAgICAgICAgNiArIDEgKyBzZXFQYXJhbVNldExlbmd0aCArIDIgKyBwaWNQYXJhbVNldExlbmd0aCArIDI7CisKKyAgICBtQ29kZWNTcGVjaWZpY0RhdGEgPSBtYWxsb2MobUNvZGVjU3BlY2lmaWNEYXRhU2l6ZSk7CisgICAgdWludDhfdCAqaGVhZGVyID0gKHVpbnQ4X3QgKiltQ29kZWNTcGVjaWZpY0RhdGE7CisgICAgaGVhZGVyWzBdID0gMTsKKyAgICBoZWFkZXJbMV0gPSAweDQyOyAgLy8gcHJvZmlsZQorICAgIGhlYWRlclsyXSA9IDB4ODA7CisgICAgaGVhZGVyWzNdID0gMHgxZTsgIC8vIGxldmVsCisKKyNpZiBVU0VfTkFMTEVOX0ZPVVIKKyAgICBoZWFkZXJbNF0gPSAweGZjIHwgMzsgIC8vIGxlbmd0aCBzaXplID09IDQgYnl0ZXMKKyNlbHNlCisgICAgaGVhZGVyWzRdID0gMHhmYyB8IDE7ICAvLyBsZW5ndGggc2l6ZSA9PSAyIGJ5dGVzCisjZW5kaWYKKworICAgIGhlYWRlcls1XSA9IDB4ZTAgfCAxOworICAgIGhlYWRlcls2XSA9IHNlcVBhcmFtU2V0TGVuZ3RoID4+IDg7CisgICAgaGVhZGVyWzddID0gc2VxUGFyYW1TZXRMZW5ndGggJiAweGZmOworICAgIG1lbWNweSgmaGVhZGVyWzhdLCAmZGF0YVs0XSwgc2VxUGFyYW1TZXRMZW5ndGgpOworICAgIGhlYWRlciArPSA4ICsgc2VxUGFyYW1TZXRMZW5ndGg7CisgICAgaGVhZGVyWzBdID0gMTsKKyAgICBoZWFkZXJbMV0gPSBwaWNQYXJhbVNldExlbmd0aCA+PiA4OworICAgIGhlYWRlclsyXSA9IHBpY1BhcmFtU2V0TGVuZ3RoICYgMHhmZjsKKyAgICBtZW1jcHkoJmhlYWRlclszXSwgJmRhdGFbcGljUGFyYW1PZmZzZXQgKyA0XSwgcGljUGFyYW1TZXRMZW5ndGgpOworCisgICAgcmV0dXJuIE9LOworfQorCiB2b2lkIE1QRUc0V3JpdGVyOjpUcmFjazo6dGhyZWFkRW50cnkoKSB7CiAgICAgc3A8TWV0YURhdGE+IG1ldGEgPSBtU291cmNlLT5nZXRGb3JtYXQoKTsKICAgICBjb25zdCBjaGFyICptaW1lOwogICAgIG1ldGEtPmZpbmRDU3RyaW5nKGtLZXlNSU1FVHlwZSwgJm1pbWUpOwotICAgIGJvb2wgaXNfbXBlZzQgPSAhc3RyY2FzZWNtcChtaW1lLCBNRURJQV9NSU1FVFlQRV9WSURFT19NUEVHNCk7CisgICAgYm9vbCBpc19tcGVnNCA9ICFzdHJjYXNlY21wKG1pbWUsIE1FRElBX01JTUVUWVBFX1ZJREVPX01QRUc0KSB8fAorICAgICAgICAgICAgICAgICAgICAhc3RyY2FzZWNtcChtaW1lLCBNRURJQV9NSU1FVFlQRV9BVURJT19BQUMpOwogICAgIGJvb2wgaXNfYXZjID0gIXN0cmNhc2VjbXAobWltZSwgTUVESUFfTUlNRVRZUEVfVklERU9fQVZDKTsKKyAgICBib29sIGlzX2F1ZGlvID0gIXN0cm5jYXNlY21wKG1pbWUsICJhdWRpby8iLCA2KTsKICAgICBpbnQzMl90IGNvdW50ID0gMDsKKyAgICBjb25zdCBpbnQ2NF90IGludGVybGVhdmVEdXJhdGlvblVzID0gbU93bmVyLT5pbnRlcmxlYXZlRHVyYXRpb24oKTsKKyAgICBpbnQ2NF90IGNodW5rVGltZXN0YW1wVXMgPSAwOworICAgIGludDMyX3QgbkNodW5rcyA9IDA7CisgICAgaW50MzJfdCBuWmVyb0xlbmd0aEZyYW1lcyA9IDA7CisgICAgaW50NjRfdCBsYXN0VGltZXN0YW1wID0gMDsgIC8vIFRpbWVzdGFtcCBvZiB0aGUgcHJldmlvdXMgc2FtcGxlCisgICAgaW50NjRfdCBsYXN0RHVyYXRpb24gPSAwOyAgIC8vIFRpbWUgc3BhY2luZyBiZXR3ZWVuIHRoZSBwcmV2aW91cyB0d28gc2FtcGxlcworICAgIGludDMyX3Qgc2FtcGxlQ291bnQgPSAxOyAgICAvLyBTYW1wbGUgY291bnQgaW4gdGhlIGN1cnJlbnQgc3R0cyB0YWJsZSBlbnRyeQorICAgIHVpbnQzMl90IHByZXZpb3VzU2FtcGxlU2l6ZSA9IDA7ICAvLyBTaXplIG9mIHRoZSBwcmV2aW91cyBzYW1wbGUKKyAgICBpbnQ2NF90IHByZXZpb3VzUGF1c2VkRHVyYXRpb25VcyA9IDA7CisgICAgc3A8TWV0YURhdGE+IG1ldGFfZGF0YTsKIAorICAgIHN0YXR1c190IGVyciA9IE9LOwogICAgIE1lZGlhQnVmZmVyICpidWZmZXI7Ci0gICAgd2hpbGUgKCFtRG9uZSAmJiBtU291cmNlLT5yZWFkKCZidWZmZXIpID09IE9LKSB7CisgICAgd2hpbGUgKCFtRG9uZSAmJiAoZXJyID0gbVNvdXJjZS0+cmVhZCgmYnVmZmVyKSkgPT0gT0spIHsKICAgICAgICAgaWYgKGJ1ZmZlci0+cmFuZ2VfbGVuZ3RoKCkgPT0gMCkgewogICAgICAgICAgICAgYnVmZmVyLT5yZWxlYXNlKCk7CiAgICAgICAgICAgICBidWZmZXIgPSBOVUxMOworICAgICAgICAgICAgKytuWmVyb0xlbmd0aEZyYW1lczsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CiAKKyAgICAgICAgLy8gSWYgdGhlIGNvZGVjIHNwZWNpZmljIGRhdGEgaGFzIG5vdCBiZWVuIHJlY2VpdmVkIHlldCwgZGVsYXkgcGF1c2UuCisgICAgICAgIC8vIEFmdGVyIHRoZSBjb2RlYyBzcGVjaWZpYyBkYXRhIGlzIHJlY2VpdmVkLCBkaXNjYXJkIHdoYXQgd2UgcmVjZWl2ZWQKKyAgICAgICAgLy8gd2hlbiB0aGUgdHJhY2sgaXMgdG8gYmUgcGF1c2VkLgorICAgICAgICBpZiAobVBhdXNlZCAmJiAhbVJlc3VtZWQpIHsKKyAgICAgICAgICAgIGJ1ZmZlci0+cmVsZWFzZSgpOworICAgICAgICAgICAgYnVmZmVyID0gTlVMTDsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKICAgICAgICAgKytjb3VudDsKIAotICAgICAgICBpZiAoaXNfYXZjICYmIGNvdW50IDwgMykgewotICAgICAgICAgICAgc2l6ZV90IHNpemUgPSBidWZmZXItPnJhbmdlX2xlbmd0aCgpOworICAgICAgICBpbnQzMl90IGlzQ29kZWNDb25maWc7CisgICAgICAgIGlmIChidWZmZXItPm1ldGFfZGF0YSgpLT5maW5kSW50MzIoa0tleUlzQ29kZWNDb25maWcsICZpc0NvZGVjQ29uZmlnKQorICAgICAgICAgICAgICAgICYmIGlzQ29kZWNDb25maWcpIHsKKyAgICAgICAgICAgIENIRUNLKCFtR290QWxsQ29kZWNTcGVjaWZpY0RhdGEpOwogCi0gICAgICAgICAgICBzd2l0Y2ggKGNvdW50KSB7Ci0gICAgICAgICAgICAgICAgY2FzZSAxOgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgQ0hFQ0tfRVEobUNvZGVjU3BlY2lmaWNEYXRhLCBOVUxMKTsKLSAgICAgICAgICAgICAgICAgICAgbUNvZGVjU3BlY2lmaWNEYXRhID0gbWFsbG9jKHNpemUgKyA4KTsKLSAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqaGVhZGVyID0gKHVpbnQ4X3QgKiltQ29kZWNTcGVjaWZpY0RhdGE7Ci0gICAgICAgICAgICAgICAgICAgIGhlYWRlclswXSA9IDE7Ci0gICAgICAgICAgICAgICAgICAgIGhlYWRlclsxXSA9IDB4NDI7ICAvLyBwcm9maWxlCi0gICAgICAgICAgICAgICAgICAgIGhlYWRlclsyXSA9IDB4ODA7Ci0gICAgICAgICAgICAgICAgICAgIGhlYWRlclszXSA9IDB4MWU7ICAvLyBsZXZlbAotICAgICAgICAgICAgICAgICAgICBoZWFkZXJbNF0gPSAweGZjIHwgMzsKLSAgICAgICAgICAgICAgICAgICAgaGVhZGVyWzVdID0gMHhlMCB8IDE7Ci0gICAgICAgICAgICAgICAgICAgIGhlYWRlcls2XSA9IHNpemUgPj4gODsKLSAgICAgICAgICAgICAgICAgICAgaGVhZGVyWzddID0gc2l6ZSAmIDB4ZmY7Ci0gICAgICAgICAgICAgICAgICAgIG1lbWNweSgmaGVhZGVyWzhdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCB1aW50OF90ICopYnVmZmVyLT5kYXRhKCkgKyBidWZmZXItPnJhbmdlX29mZnNldCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUpOwotCi0gICAgICAgICAgICAgICAgICAgIG1Db2RlY1NwZWNpZmljRGF0YVNpemUgPSBzaXplICsgODsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgY2FzZSAyOgotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgc2l6ZV90IG9mZnNldCA9IG1Db2RlY1NwZWNpZmljRGF0YVNpemU7Ci0gICAgICAgICAgICAgICAgICAgIG1Db2RlY1NwZWNpZmljRGF0YVNpemUgKz0gc2l6ZSArIDM7Ci0gICAgICAgICAgICAgICAgICAgIG1Db2RlY1NwZWNpZmljRGF0YSA9IHJlYWxsb2MobUNvZGVjU3BlY2lmaWNEYXRhLCBtQ29kZWNTcGVjaWZpY0RhdGFTaXplKTsKLSAgICAgICAgICAgICAgICAgICAgdWludDhfdCAqaGVhZGVyID0gKHVpbnQ4X3QgKiltQ29kZWNTcGVjaWZpY0RhdGE7Ci0gICAgICAgICAgICAgICAgICAgIGhlYWRlcltvZmZzZXRdID0gMTsKLSAgICAgICAgICAgICAgICAgICAgaGVhZGVyW29mZnNldCArIDFdID0gc2l6ZSA+PiA4OwotICAgICAgICAgICAgICAgICAgICBoZWFkZXJbb2Zmc2V0ICsgMl0gPSBzaXplICYgMHhmZjsKLSAgICAgICAgICAgICAgICAgICAgbWVtY3B5KCZoZWFkZXJbb2Zmc2V0ICsgM10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IHVpbnQ4X3QgKilidWZmZXItPmRhdGEoKSArIGJ1ZmZlci0+cmFuZ2Vfb2Zmc2V0KCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZSk7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpc19hdmMpIHsKKyAgICAgICAgICAgICAgICBzdGF0dXNfdCBlcnIgPSBtYWtlQVZDQ29kZWNTcGVjaWZpY0RhdGEoCisgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgdWludDhfdCAqKWJ1ZmZlci0+ZGF0YSgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBidWZmZXItPnJhbmdlX29mZnNldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLT5yYW5nZV9sZW5ndGgoKSk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEoT0ssIGVycik7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGlzX21wZWc0KSB7CisgICAgICAgICAgICAgICAgbUNvZGVjU3BlY2lmaWNEYXRhU2l6ZSA9IGJ1ZmZlci0+cmFuZ2VfbGVuZ3RoKCk7CisgICAgICAgICAgICAgICAgbUNvZGVjU3BlY2lmaWNEYXRhID0gbWFsbG9jKG1Db2RlY1NwZWNpZmljRGF0YVNpemUpOworICAgICAgICAgICAgICAgIG1lbWNweShtQ29kZWNTcGVjaWZpY0RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgdWludDhfdCAqKWJ1ZmZlci0+ZGF0YSgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBidWZmZXItPnJhbmdlX29mZnNldCgpLAorICAgICAgICAgICAgICAgICAgICAgICBidWZmZXItPnJhbmdlX2xlbmd0aCgpKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgYnVmZmVyLT5yZWxlYXNlKCk7CiAgICAgICAgICAgICBidWZmZXIgPSBOVUxMOwogCisgICAgICAgICAgICBtR290QWxsQ29kZWNTcGVjaWZpY0RhdGEgPSB0cnVlOwogICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmICghbUdvdEFsbENvZGVjU3BlY2lmaWNEYXRhICYmCisgICAgICAgICAgICAgICAgY291bnQgPT0gMSAmJiBpc19tcGVnNCAmJiBtQ29kZWNTcGVjaWZpY0RhdGEgPT0gTlVMTCkgeworICAgICAgICAgICAgLy8gVGhlIFRJIG1wZWc0IGVuY29kZXIgZG9lcyBub3QgcHJvcGVybHkgc2V0IHRoZQorICAgICAgICAgICAgLy8gY29kZWMtc3BlY2lmaWMtZGF0YSBmbGFnLgogCi0gICAgICAgIGlmIChtQ29kZWNTcGVjaWZpY0RhdGEgPT0gTlVMTCAmJiBpc19tcGVnNCkgewogICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZGF0YSA9CiAgICAgICAgICAgICAgICAgKGNvbnN0IHVpbnQ4X3QgKilidWZmZXItPmRhdGEoKSArIGJ1ZmZlci0+cmFuZ2Vfb2Zmc2V0KCk7CiAKQEAgLTQ3NCw1NiArMTAxMiwzODAgQEAKICAgICAgICAgICAgIG1lbWNweShtQ29kZWNTcGVjaWZpY0RhdGEsIGRhdGEsIG9mZnNldCk7CiAKICAgICAgICAgICAgIGJ1ZmZlci0+c2V0X3JhbmdlKGJ1ZmZlci0+cmFuZ2Vfb2Zmc2V0KCkgKyBvZmZzZXQsIHNpemUgLSBvZmZzZXQpOworCisgICAgICAgICAgICBpZiAoc2l6ZSA9PSBvZmZzZXQpIHsKKyAgICAgICAgICAgICAgICBidWZmZXItPnJlbGVhc2UoKTsKKyAgICAgICAgICAgICAgICBidWZmZXIgPSBOVUxMOworCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1Hb3RBbGxDb2RlY1NwZWNpZmljRGF0YSA9IHRydWU7CisgICAgICAgIH0gZWxzZSBpZiAoIW1Hb3RBbGxDb2RlY1NwZWNpZmljRGF0YSAmJiBpc19hdmMgJiYgY291bnQgPCAzKSB7CisgICAgICAgICAgICAvLyBUaGUgVEkgdmlkZW8gZW5jb2RlciBkb2VzIG5vdCBmbGFnIGNvZGVjIHNwZWNpZmljIGRhdGEKKyAgICAgICAgICAgIC8vIGFzIHN1Y2ggYW5kIGFsc28gc3BsaXRzIHVwIFNQUyBhbmQgUFBTIGFjcm9zcyB0d28gYnVmZmVycy4KKworICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZGF0YSA9CisgICAgICAgICAgICAgICAgKGNvbnN0IHVpbnQ4X3QgKilidWZmZXItPmRhdGEoKSArIGJ1ZmZlci0+cmFuZ2Vfb2Zmc2V0KCk7CisKKyAgICAgICAgICAgIHNpemVfdCBzaXplID0gYnVmZmVyLT5yYW5nZV9sZW5ndGgoKTsKKworICAgICAgICAgICAgQ0hFQ0soY291bnQgPT0gMiB8fCBtQ29kZWNTcGVjaWZpY0RhdGEgPT0gTlVMTCk7CisKKyAgICAgICAgICAgIHNpemVfdCBvZmZzZXQgPSBtQ29kZWNTcGVjaWZpY0RhdGFTaXplOworICAgICAgICAgICAgbUNvZGVjU3BlY2lmaWNEYXRhU2l6ZSArPSBzaXplICsgNDsKKyAgICAgICAgICAgIG1Db2RlY1NwZWNpZmljRGF0YSA9CisgICAgICAgICAgICAgICAgcmVhbGxvYyhtQ29kZWNTcGVjaWZpY0RhdGEsIG1Db2RlY1NwZWNpZmljRGF0YVNpemUpOworCisgICAgICAgICAgICBtZW1jcHkoKHVpbnQ4X3QgKiltQ29kZWNTcGVjaWZpY0RhdGEgKyBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgIlx4MDBceDAwXHgwMFx4MDEiLCA0KTsKKworICAgICAgICAgICAgbWVtY3B5KCh1aW50OF90ICopbUNvZGVjU3BlY2lmaWNEYXRhICsgb2Zmc2V0ICsgNCwgZGF0YSwgc2l6ZSk7CisKKyAgICAgICAgICAgIGJ1ZmZlci0+cmVsZWFzZSgpOworICAgICAgICAgICAgYnVmZmVyID0gTlVMTDsKKworICAgICAgICAgICAgaWYgKGNvdW50ID09IDIpIHsKKyAgICAgICAgICAgICAgICB2b2lkICp0bXAgPSBtQ29kZWNTcGVjaWZpY0RhdGE7CisgICAgICAgICAgICAgICAgc2l6ZSA9IG1Db2RlY1NwZWNpZmljRGF0YVNpemU7CisgICAgICAgICAgICAgICAgbUNvZGVjU3BlY2lmaWNEYXRhID0gTlVMTDsKKyAgICAgICAgICAgICAgICBtQ29kZWNTcGVjaWZpY0RhdGFTaXplID0gMDsKKworICAgICAgICAgICAgICAgIHN0YXR1c190IGVyciA9IG1ha2VBVkNDb2RlY1NwZWNpZmljRGF0YSgKKyAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCB1aW50OF90ICopdG1wLCBzaXplKTsKKyAgICAgICAgICAgICAgICBmcmVlKHRtcCk7CisgICAgICAgICAgICAgICAgdG1wID0gTlVMTDsKKyAgICAgICAgICAgICAgICBDSEVDS19FUShPSywgZXJyKTsKKworICAgICAgICAgICAgICAgIG1Hb3RBbGxDb2RlY1NwZWNpZmljRGF0YSA9IHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgb2ZmX3Qgb2Zmc2V0ID0gaXNfYXZjID8gbU93bmVyLT5hZGRMZW5ndGhQcmVmaXhlZFNhbXBsZShidWZmZXIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG1Pd25lci0+YWRkU2FtcGxlKGJ1ZmZlcik7CisgICAgICAgIGlmICghbUdvdEFsbENvZGVjU3BlY2lmaWNEYXRhKSB7CisgICAgICAgICAgICBtR290QWxsQ29kZWNTcGVjaWZpY0RhdGEgPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgLy8gTWFrZSBhIGRlZXAgY29weSBvZiB0aGUgTWVkaWFCdWZmZXIgYW5kIE1ldGFkYXRhIGFuZCByZWxlYXNlCisgICAgICAgIC8vIHRoZSBvcmlnaW5hbCBhcyBzb29uIGFzIHdlIGNhbgorICAgICAgICBNZWRpYUJ1ZmZlciAqY29weSA9IG5ldyBNZWRpYUJ1ZmZlcihidWZmZXItPnJhbmdlX2xlbmd0aCgpKTsKKyAgICAgICAgbWVtY3B5KGNvcHktPmRhdGEoKSwgKHVpbnQ4X3QgKilidWZmZXItPmRhdGEoKSArIGJ1ZmZlci0+cmFuZ2Vfb2Zmc2V0KCksCisgICAgICAgICAgICAgICAgYnVmZmVyLT5yYW5nZV9sZW5ndGgoKSk7CisgICAgICAgIGNvcHktPnNldF9yYW5nZSgwLCBidWZmZXItPnJhbmdlX2xlbmd0aCgpKTsKKyAgICAgICAgbWV0YV9kYXRhID0gbmV3IE1ldGFEYXRhKCpidWZmZXItPm1ldGFfZGF0YSgpLmdldCgpKTsKKyAgICAgICAgYnVmZmVyLT5yZWxlYXNlKCk7CisgICAgICAgIGJ1ZmZlciA9IE5VTEw7CisKKyAgICAgICAgaWYgKGlzX2F2YykgU3RyaXBTdGFydGNvZGUoY29weSk7CiAKICAgICAgICAgU2FtcGxlSW5mbyBpbmZvOwotICAgICAgICBpbmZvLnNpemUgPSBpc19hdmMgPyBidWZmZXItPnJhbmdlX2xlbmd0aCgpICsgMiA6IGJ1ZmZlci0+cmFuZ2VfbGVuZ3RoKCk7Ci0gICAgICAgIGluZm8ub2Zmc2V0ID0gb2Zmc2V0OworICAgICAgICBpbmZvLnNpemUgPSBpc19hdmMKKyNpZiBVU0VfTkFMTEVOX0ZPVVIKKyAgICAgICAgICAgICAgICA/IGNvcHktPnJhbmdlX2xlbmd0aCgpICsgNAorI2Vsc2UKKyAgICAgICAgICAgICAgICA/IGNvcHktPnJhbmdlX2xlbmd0aCgpICsgMgorI2VuZGlmCisgICAgICAgICAgICAgICAgOiBjb3B5LT5yYW5nZV9sZW5ndGgoKTsKKworICAgICAgICAvLyBNYXggZmlsZSBzaXplIG9yIGR1cmF0aW9uIGhhbmRsaW5nCisgICAgICAgIG1Fc3RpbWF0ZWRUcmFja1NpemVCeXRlcyArPSBpbmZvLnNpemU7CisgICAgICAgIGlmIChtT3duZXItPmV4Y2VlZHNGaWxlU2l6ZUxpbWl0KCkpIHsKKyAgICAgICAgICAgIG1Pd25lci0+bm90aWZ5KE1FRElBX1JFQ09SREVSX0VWRU5UX0lORk8sIE1FRElBX1JFQ09SREVSX0lORk9fTUFYX0ZJTEVTSVpFX1JFQUNIRUQsIDApOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1Pd25lci0+ZXhjZWVkc0ZpbGVEdXJhdGlvbkxpbWl0KCkpIHsKKyAgICAgICAgICAgIG1Pd25lci0+bm90aWZ5KE1FRElBX1JFQ09SREVSX0VWRU5UX0lORk8sIE1FRElBX1JFQ09SREVSX0lORk9fTUFYX0RVUkFUSU9OX1JFQUNIRUQsIDApOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworCisgICAgICAgIGludDMyX3QgaXNTeW5jID0gZmFsc2U7CisgICAgICAgIG1ldGFfZGF0YS0+ZmluZEludDMyKGtLZXlJc1N5bmNGcmFtZSwgJmlzU3luYyk7CiAKICAgICAgICAgaW50NjRfdCB0aW1lc3RhbXBVczsKLSAgICAgICAgQ0hFQ0soYnVmZmVyLT5tZXRhX2RhdGEoKS0+ZmluZEludDY0KGtLZXlUaW1lLCAmdGltZXN0YW1wVXMpKTsKKyAgICAgICAgQ0hFQ0sobWV0YV9kYXRhLT5maW5kSW50NjQoa0tleVRpbWUsICZ0aW1lc3RhbXBVcykpOwogCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworICAgICAgICBpZiAobVNhbXBsZUluZm9zLmVtcHR5KCkpIHsKKyAgICAgICAgICAgIG1TdGFydFRpbWVzdGFtcFVzID0gdGltZXN0YW1wVXM7CisgICAgICAgICAgICBtT3duZXItPnNldFN0YXJ0VGltZXN0YW1wVXMobVN0YXJ0VGltZXN0YW1wVXMpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1SZXN1bWVkKSB7CisgICAgICAgICAgICBwcmV2aW91c1BhdXNlZER1cmF0aW9uVXMgKz0gKHRpbWVzdGFtcFVzIC0gbU1heFRpbWVTdGFtcFVzIC0gMTAwMCAqIGxhc3REdXJhdGlvbik7CisgICAgICAgICAgICBtUmVzdW1lZCA9IGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgdGltZXN0YW1wVXMgLT0gcHJldmlvdXNQYXVzZWREdXJhdGlvblVzOworICAgICAgICBMT0dWKCJ0aW1lIHN0YW1wOiAlbGxkIGFuZCBwcmV2aW91cyBwYXVzZWQgZHVyYXRpb24gJWxsZCIsCisgICAgICAgICAgICAgICAgdGltZXN0YW1wVXMsIHByZXZpb3VzUGF1c2VkRHVyYXRpb25Vcyk7CiAgICAgICAgIGlmICh0aW1lc3RhbXBVcyA+IG1NYXhUaW1lU3RhbXBVcykgewogICAgICAgICAgICAgbU1heFRpbWVTdGFtcFVzID0gdGltZXN0YW1wVXM7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBPdXIgdGltZXN0YW1wIGlzIGluIG1zLgogICAgICAgICBpbmZvLnRpbWVzdGFtcCA9ICh0aW1lc3RhbXBVcyArIDUwMCkgLyAxMDAwOwotCiAgICAgICAgIG1TYW1wbGVJbmZvcy5wdXNoX2JhY2soaW5mbyk7CisgICAgICAgIGlmIChtU2FtcGxlSW5mb3Muc2l6ZSgpID4gMikgeworICAgICAgICAgICAgaWYgKGxhc3REdXJhdGlvbiAhPSBpbmZvLnRpbWVzdGFtcCAtIGxhc3RUaW1lc3RhbXApIHsKKyAgICAgICAgICAgICAgICBTdHRzVGFibGVFbnRyeSBzdHRzRW50cnkoc2FtcGxlQ291bnQsIGxhc3REdXJhdGlvbik7CisgICAgICAgICAgICAgICAgbVN0dHNUYWJsZUVudHJpZXMucHVzaF9iYWNrKHN0dHNFbnRyeSk7CisgICAgICAgICAgICAgICAgc2FtcGxlQ291bnQgPSAxOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICArK3NhbXBsZUNvdW50OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChtU2FtcGxlc0hhdmVTYW1lU2l6ZSkgeworICAgICAgICAgICAgaWYgKG1TYW1wbGVJbmZvcy5zaXplKCkgPj0gMiAmJiBwcmV2aW91c1NhbXBsZVNpemUgIT0gaW5mby5zaXplKSB7CisgICAgICAgICAgICAgICAgbVNhbXBsZXNIYXZlU2FtZVNpemUgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHByZXZpb3VzU2FtcGxlU2l6ZSA9IGluZm8uc2l6ZTsKKyAgICAgICAgfQorICAgICAgICBsYXN0RHVyYXRpb24gPSBpbmZvLnRpbWVzdGFtcCAtIGxhc3RUaW1lc3RhbXA7CisgICAgICAgIGxhc3RUaW1lc3RhbXAgPSBpbmZvLnRpbWVzdGFtcDsKIAotICAgICAgICBidWZmZXItPnJlbGVhc2UoKTsKLSAgICAgICAgYnVmZmVyID0gTlVMTDsKKyAgICAgICAgaWYgKGlzU3luYyAhPSAwKSB7CisgICAgICAgICAgICBtU3Rzc1RhYmxlRW50cmllcy5wdXNoX2JhY2sobVNhbXBsZUluZm9zLnNpemUoKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobVRyYWNraW5nUHJvZ3Jlc3NTdGF0dXMpIHsKKyAgICAgICAgICAgIGlmIChtUHJldmlvdXNUcmFja1RpbWVVcyA8PSAwKSB7CisgICAgICAgICAgICAgICAgbVByZXZpb3VzVHJhY2tUaW1lVXMgPSBtU3RhcnRUaW1lc3RhbXBVczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRyYWNrUHJvZ3Jlc3NTdGF0dXMobVNhbXBsZUluZm9zLnNpemUoKSwgdGltZXN0YW1wVXMpOworICAgICAgICB9CisgICAgICAgIGlmIChtT3duZXItPm51bVRyYWNrcygpID09IDEpIHsKKyAgICAgICAgICAgIG9mZl90IG9mZnNldCA9IGlzX2F2Yz8gbU93bmVyLT5hZGRMZW5ndGhQcmVmaXhlZFNhbXBsZV9sKGNvcHkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IG1Pd25lci0+YWRkU2FtcGxlX2woY29weSk7CisgICAgICAgICAgICBpZiAobUNodW5rT2Zmc2V0cy5lbXB0eSgpKSB7CisgICAgICAgICAgICAgICAgbUNodW5rT2Zmc2V0cy5wdXNoX2JhY2sob2Zmc2V0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNvcHktPnJlbGVhc2UoKTsKKyAgICAgICAgICAgIGNvcHkgPSBOVUxMOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBtQ2h1bmtTYW1wbGVzLnB1c2hfYmFjayhjb3B5KTsKKyAgICAgICAgaWYgKGludGVybGVhdmVEdXJhdGlvblVzID09IDApIHsKKyAgICAgICAgICAgIFN0c2NUYWJsZUVudHJ5IHN0c2NFbnRyeSgrK25DaHVua3MsIDEsIDEpOworICAgICAgICAgICAgbVN0c2NUYWJsZUVudHJpZXMucHVzaF9iYWNrKHN0c2NFbnRyeSk7CisgICAgICAgICAgICB3cml0ZU9uZUNodW5rKGlzX2F2Yyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoY2h1bmtUaW1lc3RhbXBVcyA9PSAwKSB7CisgICAgICAgICAgICAgICAgY2h1bmtUaW1lc3RhbXBVcyA9IHRpbWVzdGFtcFVzOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAodGltZXN0YW1wVXMgLSBjaHVua1RpbWVzdGFtcFVzID4gaW50ZXJsZWF2ZUR1cmF0aW9uVXMpIHsKKyAgICAgICAgICAgICAgICAgICAgKytuQ2h1bmtzOworICAgICAgICAgICAgICAgICAgICBtQ2h1bmtEdXJhdGlvbnMucHVzaF9iYWNrKHRpbWVzdGFtcFVzIC0gY2h1bmtUaW1lc3RhbXBVcyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChuQ2h1bmtzID09IDEgfHwgIC8vIEZpcnN0IGNodW5rCisgICAgICAgICAgICAgICAgICAgICAgICAoLS0obVN0c2NUYWJsZUVudHJpZXMuZW5kKCkpKS0+c2FtcGxlc1BlckNodW5rICE9CisgICAgICAgICAgICAgICAgICAgICAgICAgbUNodW5rU2FtcGxlcy5zaXplKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0c2NUYWJsZUVudHJ5IHN0c2NFbnRyeShuQ2h1bmtzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQ2h1bmtTYW1wbGVzLnNpemUoKSwgMSk7CisgICAgICAgICAgICAgICAgICAgICAgICBtU3RzY1RhYmxlRW50cmllcy5wdXNoX2JhY2soc3RzY0VudHJ5KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB3cml0ZU9uZUNodW5rKGlzX2F2Yyk7CisgICAgICAgICAgICAgICAgICAgIGNodW5rVGltZXN0YW1wVXMgPSB0aW1lc3RhbXBVczsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwogICAgIH0KIAorICAgIGlmIChtU2FtcGxlSW5mb3MuZW1wdHkoKSkgeworICAgICAgICBlcnIgPSBVTktOT1dOX0VSUk9SOworICAgIH0KKyAgICBtT3duZXItPm5vdGlmeShNRURJQV9SRUNPUkRFUl9FVkVOVF9JTkZPLCBNRURJQV9SRUNPUkRFUl9JTkZPX0NPTVBMRVRJT05fU1RBVFVTLCBlcnIpOworCisgICAgLy8gTGFzdCBjaHVuaworICAgIGlmIChtT3duZXItPm51bVRyYWNrcygpID09IDEpIHsKKyAgICAgICAgU3RzY1RhYmxlRW50cnkgc3RzY0VudHJ5KDEsIG1TYW1wbGVJbmZvcy5zaXplKCksIDEpOworICAgICAgICBtU3RzY1RhYmxlRW50cmllcy5wdXNoX2JhY2soc3RzY0VudHJ5KTsKKyAgICB9IGVsc2UgaWYgKCFtQ2h1bmtTYW1wbGVzLmVtcHR5KCkpIHsKKyAgICAgICAgKytuQ2h1bmtzOworICAgICAgICBTdHNjVGFibGVFbnRyeSBzdHNjRW50cnkobkNodW5rcywgbUNodW5rU2FtcGxlcy5zaXplKCksIDEpOworICAgICAgICBtU3RzY1RhYmxlRW50cmllcy5wdXNoX2JhY2soc3RzY0VudHJ5KTsKKyAgICAgICAgd3JpdGVPbmVDaHVuayhpc19hdmMpOworICAgIH0KKworICAgIC8vIFdlIGRvbid0IHJlYWxseSBrbm93IGhvdyBsb25nIHRoZSBsYXN0IGZyYW1lIGxhc3RzLCBzaW5jZQorICAgIC8vIHRoZXJlIGlzIG5vIGZyYW1lIHRpbWUgYWZ0ZXIgaXQsIGp1c3QgcmVwZWF0IHRoZSBwcmV2aW91cworICAgIC8vIGZyYW1lJ3MgZHVyYXRpb24uCisgICAgaWYgKG1TYW1wbGVJbmZvcy5zaXplKCkgPT0gMSkgeworICAgICAgICBsYXN0RHVyYXRpb24gPSAwOyAgLy8gQSBzaW5nbGUgc2FtcGxlJ3MgZHVyYXRpb24KKyAgICB9IGVsc2UgeworICAgICAgICArK3NhbXBsZUNvdW50OyAgLy8gQ291bnQgZm9yIHRoZSBsYXN0IHNhbXBsZQorICAgIH0KKyAgICBTdHRzVGFibGVFbnRyeSBzdHRzRW50cnkoc2FtcGxlQ291bnQsIGxhc3REdXJhdGlvbik7CisgICAgbVN0dHNUYWJsZUVudHJpZXMucHVzaF9iYWNrKHN0dHNFbnRyeSk7CiAgICAgbVJlYWNoZWRFT1MgPSB0cnVlOworICAgIExPR0koIlJlY2VpdmVkIHRvdGFsLzAtbGVuZ3RoICglZC8lZCkgYnVmZmVycyBhbmQgZW5jb2RlZCAlZCBmcmFtZXMgLSAlcyIsCisgICAgICAgICAgICBjb3VudCwgblplcm9MZW5ndGhGcmFtZXMsIG1TYW1wbGVJbmZvcy5zaXplKCksIGlzX2F1ZGlvPyAiYXVkaW8iOiAidmlkZW8iKTsKKworICAgIGxvZ1N0YXRpc3RpY2FsRGF0YShpc19hdWRpbyk7Cit9CisKK3ZvaWQgTVBFRzRXcml0ZXI6OlRyYWNrOjp0cmFja1Byb2dyZXNzU3RhdHVzKGludDMyX3QgbkZyYW1lcywgaW50NjRfdCB0aW1lVXMpIHsKKyAgICBMT0dWKCJ0cmFja1Byb2dyZXNzU3RhdHVzOiAlZCBmcmFtZXMgYW5kICVsbGQgdXMiLCBuRnJhbWVzLCB0aW1lVXMpOworICAgIGlmIChtVHJhY2tFdmVyeU51bWJlck9mRnJhbWVzID4gMCAmJgorICAgICAgICBuRnJhbWVzICUgbVRyYWNrRXZlcnlOdW1iZXJPZkZyYW1lcyA9PSAwKSB7CisgICAgICAgIExPR1YoIkZpcmUgZnJhbWUgdHJhY2tpbmcgcHJvZ3Jlc3Mgc3RhdHVzIGF0IGZyYW1lICVkIiwgbkZyYW1lcyk7CisgICAgICAgIG1Pd25lci0+bm90aWZ5KE1FRElBX1JFQ09SREVSX0VWRU5UX0lORk8sCisgICAgICAgICAgICAgICAgICAgICAgIE1FRElBX1JFQ09SREVSX0lORk9fUFJPR1JFU1NfRlJBTUVfU1RBVFVTLAorICAgICAgICAgICAgICAgICAgICAgICBuRnJhbWVzKTsKKyAgICB9CisKKyAgICBpZiAobVRyYWNrRXZlcnlUaW1lRHVyYXRpb25VcyA+IDAgJiYKKyAgICAgICAgdGltZVVzIC0gbVByZXZpb3VzVHJhY2tUaW1lVXMgPj0gbVRyYWNrRXZlcnlUaW1lRHVyYXRpb25VcykgeworICAgICAgICBMT0dWKCJGaXJlIHRpbWUgdHJhY2tpbmcgcHJvZ3Jlc3Mgc3RhdHVzIGF0ICVsbGQgdXMiLCB0aW1lVXMpOworICAgICAgICBtT3duZXItPm5vdGlmeShNRURJQV9SRUNPUkRFUl9FVkVOVF9JTkZPLAorICAgICAgICAgICAgICAgICAgICAgICBNRURJQV9SRUNPUkRFUl9JTkZPX1BST0dSRVNTX1RJTUVfU1RBVFVTLAorICAgICAgICAgICAgICAgICAgICAgICB0aW1lVXMgLyAxMDAwKTsKKyAgICAgICAgbVByZXZpb3VzVHJhY2tUaW1lVXMgPSB0aW1lVXM7CisgICAgfQorfQorCit2b2lkIE1QRUc0V3JpdGVyOjpUcmFjazo6ZmluZE1pbkF2Z01heFNhbXBsZUR1cmF0aW9uTXMoCisgICAgICAgIGludDMyX3QgKm1pbiwgaW50MzJfdCAqYXZnLCBpbnQzMl90ICptYXgpIHsKKyAgICBDSEVDSyghbVNhbXBsZUluZm9zLmVtcHR5KCkpOworICAgIGludDMyX3QgYXZnU2FtcGxlRHVyYXRpb25NcyA9IG1NYXhUaW1lU3RhbXBVcyAvIDEwMDAvIG1TYW1wbGVJbmZvcy5zaXplKCk7CisgICAgaW50MzJfdCBtaW5TYW1wbGVEdXJhdGlvbk1zID0gMHg3RkZGRkZGRjsKKyAgICBpbnQzMl90IG1heFNhbXBsZUR1cmF0aW9uTXMgPSAwOworICAgIGZvciAoTGlzdDxTdHRzVGFibGVFbnRyeT46Oml0ZXJhdG9yIGl0ID0gbVN0dHNUYWJsZUVudHJpZXMuYmVnaW4oKTsKKyAgICAgICAgaXQgIT0gbVN0dHNUYWJsZUVudHJpZXMuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgaW50MzJfdCBzYW1wbGVEdXJhdGlvbk1zID0gc3RhdGljX2Nhc3Q8aW50MzJfdD4oaXQtPnNhbXBsZUR1cmF0aW9uKTsKKyAgICAgICAgaWYgKHNhbXBsZUR1cmF0aW9uTXMgPiBtYXhTYW1wbGVEdXJhdGlvbk1zKSB7CisgICAgICAgICAgICBtYXhTYW1wbGVEdXJhdGlvbk1zID0gc2FtcGxlRHVyYXRpb25NczsKKyAgICAgICAgfSBlbHNlIGlmIChzYW1wbGVEdXJhdGlvbk1zIDwgbWluU2FtcGxlRHVyYXRpb25NcykgeworICAgICAgICAgICAgbWluU2FtcGxlRHVyYXRpb25NcyA9IHNhbXBsZUR1cmF0aW9uTXM7CisgICAgICAgIH0KKyAgICAgICAgTE9HSSgic2FtcGxlIGR1cmF0aW9uOiAlZCBtcyIsIHNhbXBsZUR1cmF0aW9uTXMpOworICAgIH0KKyAgICBDSEVDSyhtaW5TYW1wbGVEdXJhdGlvbk1zICE9IDApOworICAgIENIRUNLKGF2Z1NhbXBsZUR1cmF0aW9uTXMgIT0gMCk7CisgICAgQ0hFQ0sobWF4U2FtcGxlRHVyYXRpb25NcyAhPSAwKTsKKyAgICAqbWluID0gbWluU2FtcGxlRHVyYXRpb25NczsKKyAgICAqYXZnID0gYXZnU2FtcGxlRHVyYXRpb25NczsKKyAgICAqbWF4ID0gbWF4U2FtcGxlRHVyYXRpb25NczsKK30KKworLy8gRG9uJ3QgY291bnQgdGhlIGxhc3QgZHVyYXRpb24KK3ZvaWQgTVBFRzRXcml0ZXI6OlRyYWNrOjpmaW5kTWluTWF4Q2h1bmtEdXJhdGlvbnMoaW50NjRfdCAqbWluLCBpbnQ2NF90ICptYXgpIHsKKyAgICBpbnQ2NF90IGR1cmF0aW9uID0gbU93bmVyLT5pbnRlcmxlYXZlRHVyYXRpb24oKTsKKyAgICBpbnQ2NF90IG1pbkNodW5rRHVyYXRpb24gPSBkdXJhdGlvbjsKKyAgICBpbnQ2NF90IG1heENodW5rRHVyYXRpb24gPSBkdXJhdGlvbjsKKyAgICBpZiAobUNodW5rRHVyYXRpb25zLnNpemUoKSA+IDEpIHsKKyAgICAgICAgZm9yIChMaXN0PGludDY0X3Q+OjppdGVyYXRvciBpdCA9IG1DaHVua0R1cmF0aW9ucy5iZWdpbigpOworICAgICAgICAgICAgaXQgIT0gLS1tQ2h1bmtEdXJhdGlvbnMuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgICAgIGlmIChtaW5DaHVua0R1cmF0aW9uID4gKCppdCkpIHsKKyAgICAgICAgICAgICAgICBtaW5DaHVua0R1cmF0aW9uID0gKCppdCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKG1heENodW5rRHVyYXRpb24gPCAoKml0KSkgeworICAgICAgICAgICAgICAgIG1heENodW5rRHVyYXRpb24gPSAoKml0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAqbWluID0gbWluQ2h1bmtEdXJhdGlvbjsKKyAgICAqbWF4ID0gbWF4Q2h1bmtEdXJhdGlvbjsKK30KKwordm9pZCBNUEVHNFdyaXRlcjo6VHJhY2s6OmxvZ1N0YXRpc3RpY2FsRGF0YShib29sIGlzQXVkaW8pIHsKKyAgICBpZiAobU1heFRpbWVTdGFtcFVzIDw9IDAgfHwgbVNhbXBsZUluZm9zLmVtcHR5KCkpIHsKKyAgICAgICAgTE9HSSgibm90aGluZyBpcyByZWNvcmRlZCIpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYm9vbCBjb2xsZWN0U3RhdHMgPSBmYWxzZTsKKyAgICBjaGFyIHZhbHVlW1BST1BFUlRZX1ZBTFVFX01BWF07CisgICAgaWYgKHByb3BlcnR5X2dldCgibWVkaWEuc3RhZ2VmcmlnaHQucmVjb3JkLXN0YXRzIiwgdmFsdWUsIE5VTEwpCisgICAgICAgICYmICghc3RyY21wKHZhbHVlLCAiMSIpIHx8ICFzdHJjYXNlY21wKHZhbHVlLCAidHJ1ZSIpKSkgeworICAgICAgICBjb2xsZWN0U3RhdHMgPSB0cnVlOworICAgIH0KKworICAgIGlmIChjb2xsZWN0U3RhdHMpIHsKKyAgICAgICAgTE9HSSgiJXMgdHJhY2sgLSBkdXJhdGlvbiAlbGxkIHVzLCB0b3RhbCAlZCBmcmFtZXMiLAorICAgICAgICAgICAgICAgIGlzQXVkaW8/ICJhdWRpbyI6ICJ2aWRlbyIsIG1NYXhUaW1lU3RhbXBVcywKKyAgICAgICAgICAgICAgICBtU2FtcGxlSW5mb3Muc2l6ZSgpKTsKKyAgICAgICAgaW50MzJfdCBtaW4sIGF2ZywgbWF4OworICAgICAgICBmaW5kTWluQXZnTWF4U2FtcGxlRHVyYXRpb25NcygmbWluLCAmYXZnLCAmbWF4KTsKKyAgICAgICAgTE9HSSgibWluL2F2Zy9tYXggc2FtcGxlIGR1cmF0aW9uIChtcyk6ICVkLyVkLyVkIiwgbWluLCBhdmcsIG1heCk7CisgICAgICAgIGlmICghaXNBdWRpbykgeworICAgICAgICAgICAgZmxvYXQgYXZnRnBzID0gMTAwMC4wIC8gYXZnOworICAgICAgICAgICAgZmxvYXQgbWluRnBzID0gMTAwMC4wIC8gbWF4OworICAgICAgICAgICAgZmxvYXQgbWF4RnBzID0gMTAwMC4wIC8gbWluOworICAgICAgICAgICAgTE9HSSgibWluL2F2Zy9tYXggZnJhbWUgcmF0ZSAoZnBzKTogJS4yZi8lLjJmLyUuMmYiLAorICAgICAgICAgICAgICAgIG1pbkZwcywgYXZnRnBzLCBtYXhGcHMpOworICAgICAgICB9CisKKyAgICAgICAgaW50NjRfdCB0b3RhbEJ5dGVzID0gMDsKKyAgICAgICAgZm9yIChMaXN0PFNhbXBsZUluZm8+OjppdGVyYXRvciBpdCA9IG1TYW1wbGVJbmZvcy5iZWdpbigpOworICAgICAgICAgICAgaXQgIT0gbVNhbXBsZUluZm9zLmVuZCgpOyArK2l0KSB7CisgICAgICAgICAgICB0b3RhbEJ5dGVzICs9IGl0LT5zaXplOworICAgICAgICB9CisgICAgICAgIGZsb2F0IGJpdFJhdGUgPSAodG90YWxCeXRlcyAqIDgwMDAwMDAuMCkgLyBtTWF4VGltZVN0YW1wVXM7CisgICAgICAgIExPR0koImF2ZyBiaXQgcmF0ZSAoYnBzKTogJS4yZiIsIGJpdFJhdGUpOworCisgICAgICAgIGludDY0X3QgZHVyYXRpb24gPSBtT3duZXItPmludGVybGVhdmVEdXJhdGlvbigpOworICAgICAgICBpZiAoZHVyYXRpb24gIT0gMCkgeyAgLy8gSWYgaW50ZXJsZWF2aW5nIGlzIGVuYWJsZWQKKyAgICAgICAgICAgIGludDY0X3QgbWluQ2h1bmssIG1heENodW5rOworICAgICAgICAgICAgZmluZE1pbk1heENodW5rRHVyYXRpb25zKCZtaW5DaHVuaywgJm1heENodW5rKTsKKyAgICAgICAgICAgIExPR0koIm1pbi9hdmcvbWF4IGNodW5rIGR1cmF0aW9uIChtcyk6ICVsbGQvJWxsZC8lbGxkIiwKKyAgICAgICAgICAgICAgICBtaW5DaHVuaywgZHVyYXRpb24sIG1heENodW5rKTsKKyAgICAgICAgfQorICAgIH0KK30KKwordm9pZCBNUEVHNFdyaXRlcjo6VHJhY2s6OndyaXRlT25lQ2h1bmsoYm9vbCBpc0F2YykgeworICAgIG1Pd25lci0+bG9jaygpOworICAgIGZvciAoTGlzdDxNZWRpYUJ1ZmZlciAqPjo6aXRlcmF0b3IgaXQgPSBtQ2h1bmtTYW1wbGVzLmJlZ2luKCk7CisgICAgICAgICBpdCAhPSBtQ2h1bmtTYW1wbGVzLmVuZCgpOyArK2l0KSB7CisgICAgICAgIG9mZl90IG9mZnNldCA9IGlzQXZjPyBtT3duZXItPmFkZExlbmd0aFByZWZpeGVkU2FtcGxlX2woKml0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogbU93bmVyLT5hZGRTYW1wbGVfbCgqaXQpOworICAgICAgICBpZiAoaXQgPT0gbUNodW5rU2FtcGxlcy5iZWdpbigpKSB7CisgICAgICAgICAgICBtQ2h1bmtPZmZzZXRzLnB1c2hfYmFjayhvZmZzZXQpOworICAgICAgICB9CisgICAgfQorICAgIG1Pd25lci0+dW5sb2NrKCk7CisgICAgd2hpbGUgKCFtQ2h1bmtTYW1wbGVzLmVtcHR5KCkpIHsKKyAgICAgICAgTGlzdDxNZWRpYUJ1ZmZlciAqPjo6aXRlcmF0b3IgaXQgPSBtQ2h1bmtTYW1wbGVzLmJlZ2luKCk7CisgICAgICAgICgqaXQpLT5yZWxlYXNlKCk7CisgICAgICAgICgqaXQpID0gTlVMTDsKKyAgICAgICAgbUNodW5rU2FtcGxlcy5lcmFzZShpdCk7CisgICAgfQorICAgIG1DaHVua1NhbXBsZXMuY2xlYXIoKTsKIH0KIAogaW50NjRfdCBNUEVHNFdyaXRlcjo6VHJhY2s6OmdldER1cmF0aW9uVXMoKSBjb25zdCB7CiAgICAgcmV0dXJuIG1NYXhUaW1lU3RhbXBVczsKIH0KIAotdm9pZCBNUEVHNFdyaXRlcjo6VHJhY2s6OndyaXRlVHJhY2tIZWFkZXIoaW50MzJfdCB0cmFja0lEKSB7CitpbnQ2NF90IE1QRUc0V3JpdGVyOjpUcmFjazo6Z2V0RXN0aW1hdGVkVHJhY2tTaXplQnl0ZXMoKSBjb25zdCB7CisgICAgcmV0dXJuIG1Fc3RpbWF0ZWRUcmFja1NpemVCeXRlczsKK30KKwordm9pZCBNUEVHNFdyaXRlcjo6VHJhY2s6OndyaXRlVHJhY2tIZWFkZXIoCisgICAgICAgIGludDMyX3QgdHJhY2tJRCwgYm9vbCB1c2UzMkJpdE9mZnNldCkgewogICAgIGNvbnN0IGNoYXIgKm1pbWU7CiAgICAgYm9vbCBzdWNjZXNzID0gbU1ldGEtPmZpbmRDU3RyaW5nKGtLZXlNSU1FVHlwZSwgJm1pbWUpOwogICAgIENIRUNLKHN1Y2Nlc3MpOwogCiAgICAgYm9vbCBpc19hdWRpbyA9ICFzdHJuY2FzZWNtcChtaW1lLCAiYXVkaW8vIiwgNik7CisgICAgaW50MzJfdCB0aW1lU2NhbGUgPSAxMDAwOworICAgIGludDMyX3QgZHVyYXRpb24gPSBnZXREdXJhdGlvblVzKCkgLyB0aW1lU2NhbGU7CiAKICAgICB0aW1lX3Qgbm93ID0gdGltZShOVUxMKTsKIAogICAgIG1Pd25lci0+YmVnaW5Cb3goInRyYWsiKTsKIAogICAgICAgbU93bmVyLT5iZWdpbkJveCgidGtoZCIpOwotICAgICAgICBtT3duZXItPndyaXRlSW50MzIoMCk7ICAgICAgICAgICAgIC8vIHZlcnNpb249MCwgZmxhZ3M9MAorICAgICAgICAvLyBGbGFncyA9IDcgdG8gaW5kaWNhdGUgdGhhdCB0aGUgdHJhY2sgaXMgZW5hYmxlZCwgYW5kCisgICAgICAgIC8vIHBhcnQgb2YgdGhlIHByZXNlbnRhdGlvbgorICAgICAgICBtT3duZXItPndyaXRlSW50MzIoMHgwNyk7ICAgICAgICAgIC8vIHZlcnNpb249MCwgZmxhZ3M9NwogICAgICAgICBtT3duZXItPndyaXRlSW50MzIobm93KTsgICAgICAgICAgIC8vIGNyZWF0aW9uIHRpbWUKICAgICAgICAgbU93bmVyLT53cml0ZUludDMyKG5vdyk7ICAgICAgICAgICAvLyBtb2RpZmljYXRpb24gdGltZQogICAgICAgICBtT3duZXItPndyaXRlSW50MzIodHJhY2tJRCk7CiAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMigwKTsgICAgICAgICAgICAgLy8gcmVzZXJ2ZWQKLSAgICAgICAgbU93bmVyLT53cml0ZUludDMyKGdldER1cmF0aW9uVXMoKSAvIDEwMDApOworICAgICAgICBtT3duZXItPndyaXRlSW50MzIoZHVyYXRpb24pOwogICAgICAgICBtT3duZXItPndyaXRlSW50MzIoMCk7ICAgICAgICAgICAgIC8vIHJlc2VydmVkCiAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMigwKTsgICAgICAgICAgICAgLy8gcmVzZXJ2ZWQKICAgICAgICAgbU93bmVyLT53cml0ZUludDE2KDApOyAgICAgICAgICAgICAvLyBsYXllcgpAQCAtNTUwLDQ1ICsxNDEyLDU4IEBACiAgICAgICAgICAgICBzdWNjZXNzID0gc3VjY2VzcyAmJiBtTWV0YS0+ZmluZEludDMyKGtLZXlIZWlnaHQsICZoZWlnaHQpOwogICAgICAgICAgICAgQ0hFQ0soc3VjY2Vzcyk7CiAKLSAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMih3aWR0aCk7Ci0gICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoaGVpZ2h0KTsKKyAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMih3aWR0aCA8PCAxNik7ICAgLy8gMzItYml0IGZpeGVkLXBvaW50IHZhbHVlCisgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoaGVpZ2h0IDw8IDE2KTsgIC8vIDMyLWJpdCBmaXhlZC1wb2ludCB2YWx1ZQogICAgICAgICB9CiAgICAgICBtT3duZXItPmVuZEJveCgpOyAgLy8gdGtoZAogCisgICAgICBpbnQ2NF90IG1vb3ZTdGFydFRpbWVVcyA9IG1Pd25lci0+Z2V0U3RhcnRUaW1lc3RhbXBVcygpOworICAgICAgaWYgKG1TdGFydFRpbWVzdGFtcFVzICE9IG1vb3ZTdGFydFRpbWVVcykgeworICAgICAgICBtT3duZXItPmJlZ2luQm94KCJlZHRzIik7CisgICAgICAgICAgbU93bmVyLT5iZWdpbkJveCgiZWxzdCIpOworICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDMyKDApOyAgICAgICAgICAgLy8gdmVyc2lvbj0wLCBmbGFncz0wOiAzMi1iaXQgdGltZQorICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDMyKDIpOyAgICAgICAgICAgLy8gbmV2ZXIgZW5kcyB3aXRoIGFuIGVtcHR5IGxpc3QKKyAgICAgICAgICAgIGludDY0X3QgZHVyYXRpb25NcyA9CisgICAgICAgICAgICAgICAgKG1TdGFydFRpbWVzdGFtcFVzIC0gbW9vdlN0YXJ0VGltZVVzKSAvIDEwMDA7CisgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoZHVyYXRpb25Ncyk7ICAvLyBlZGl0IGR1cmF0aW9uCisgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoLTEpOyAgICAgICAgICAvLyBlbXB0eSBlZGl0IGJveCB0byBzaWduYWwgc3RhcnRpbmcgdGltZSBvZmZzZXQKKyAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMigxIDw8IDE2KTsgICAgIC8vIHgxIHJhdGUKKyAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMihkdXJhdGlvbik7CisgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoMCk7CisgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoMSA8PCAxNik7CisgICAgICAgICAgbU93bmVyLT5lbmRCb3goKTsKKyAgICAgICAgbU93bmVyLT5lbmRCb3goKTsKKyAgICAgIH0KKwogICAgICAgbU93bmVyLT5iZWdpbkJveCgibWRpYSIpOwogCiAgICAgICAgIG1Pd25lci0+YmVnaW5Cb3goIm1kaGQiKTsKICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoMCk7ICAgICAgICAgICAgIC8vIHZlcnNpb249MCwgZmxhZ3M9MAogICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMihub3cpOyAgICAgICAgICAgLy8gY3JlYXRpb24gdGltZQogICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMihub3cpOyAgICAgICAgICAgLy8gbW9kaWZpY2F0aW9uIHRpbWUKLSAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoMTAwMCk7ICAgICAgICAgIC8vIHRpbWVzY2FsZQotICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMihnZXREdXJhdGlvblVzKCkgLyAxMDAwKTsKLSAgICAgICAgICBtT3duZXItPndyaXRlSW50MTYoMCk7ICAgICAgICAgICAgIC8vIGxhbmd1YWdlIGNvZGUgWFhYCisgICAgICAgICAgbU93bmVyLT53cml0ZUludDMyKHRpbWVTY2FsZSk7ICAgICAvLyB0aW1lc2NhbGUKKyAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoZHVyYXRpb24pOyAgICAgIC8vIGR1cmF0aW9uCisgICAgICAgICAgLy8gTGFuZ3VhZ2UgZm9sbG93cyB0aGUgdGhyZWUgbGV0dGVyIHN0YW5kYXJkIElTTy02MzktMi9UCisgICAgICAgICAgLy8gJ2UnLCAnbicsICdnJyBmb3IgIkVuZ2xpc2giLCBmb3IgaW5zdGFuY2UuCisgICAgICAgICAgLy8gRWFjaCBjaGFyYWN0ZXIgaXMgcGFja2VkIGFzIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gaXRzIEFTQ0lJIHZhbHVlIGFuZCAweDYwLgorICAgICAgICAgIC8vIEZvciAiRW5nbGlzaCIsIHRoZXNlIGFyZSAwMDEwMSwgMDExMTAsIDAwMTExLgorICAgICAgICAgIC8vIFhYWDogV2hlcmUgaXMgdGhlIHBhZGRpbmcgYml0IGxvY2F0ZWQ6IDB4MTVDNz8KKyAgICAgICAgICBtT3duZXItPndyaXRlSW50MTYoMCk7ICAgICAgICAgICAgIC8vIGxhbmd1YWdlIGNvZGUKICAgICAgICAgICBtT3duZXItPndyaXRlSW50MTYoMCk7ICAgICAgICAgICAgIC8vIHByZWRlZmluZWQKICAgICAgICAgbU93bmVyLT5lbmRCb3goKTsKIAogICAgICAgICBtT3duZXItPmJlZ2luQm94KCJoZGxyIik7CiAgICAgICAgICAgbU93bmVyLT53cml0ZUludDMyKDApOyAgICAgICAgICAgICAvLyB2ZXJzaW9uPTAsIGZsYWdzPTAKLSAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoMCk7ICAgICAgICAgICAgIC8vIHByZWRlZmluZWQKLSAgICAgICAgICBtT3duZXItPndyaXRlRm91cmNjKGlzX2F1ZGlvID8gInNvdW4iIDogInZpZGUiKTsKKyAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoMCk7ICAgICAgICAgICAgIC8vIGNvbXBvbmVudCB0eXBlOiBzaG91bGQgYmUgbWhscgorICAgICAgICAgIG1Pd25lci0+d3JpdGVGb3VyY2MoaXNfYXVkaW8gPyAic291biIgOiAidmlkZSIpOyAgLy8gY29tcG9uZW50IHN1YnR5cGUKICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoMCk7ICAgICAgICAgICAgIC8vIHJlc2VydmVkCiAgICAgICAgICAgbU93bmVyLT53cml0ZUludDMyKDApOyAgICAgICAgICAgICAvLyByZXNlcnZlZAogICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMigwKTsgICAgICAgICAgICAgLy8gcmVzZXJ2ZWQKLSAgICAgICAgICBtT3duZXItPndyaXRlQ1N0cmluZygiIik7ICAgICAgICAgIC8vIG5hbWUKKyAgICAgICAgICAvLyBSZW1vdmluZyAiciIgZm9yIHRoZSBuYW1lIHN0cmluZyBqdXN0IG1ha2VzIHRoZSBzdHJpbmcgNCBieXRlIGFsaWduZWQKKyAgICAgICAgICBtT3duZXItPndyaXRlQ1N0cmluZyhpc19hdWRpbyA/ICJTb3VuZEhhbmRsZSI6ICJWaWRlb0hhbmRsZSIpOyAgLy8gbmFtZQogICAgICAgICBtT3duZXItPmVuZEJveCgpOwogCiAgICAgICAgIG1Pd25lci0+YmVnaW5Cb3goIm1pbmYiKTsKLQotICAgICAgICAgIG1Pd25lci0+YmVnaW5Cb3goImRpbmYiKTsKLSAgICAgICAgICAgIG1Pd25lci0+YmVnaW5Cb3goImRyZWYiKTsKLSAgICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDMyKDApOyAgLy8gdmVyc2lvbj0wLCBmbGFncz0wCi0gICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMigxKTsKLSAgICAgICAgICAgICAgbU93bmVyLT5iZWdpbkJveCgidXJsICIpOwotICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMigxKTsgIC8vIHZlcnNpb249MCwgZmxhZ3M9MQotICAgICAgICAgICAgICBtT3duZXItPmVuZEJveCgpOyAgLy8gdXJsCi0gICAgICAgICAgICBtT3duZXItPmVuZEJveCgpOyAgLy8gZHJlZgotICAgICAgICAgIG1Pd25lci0+ZW5kQm94KCk7ICAvLyBkaW5mCi0KICAgICAgICAgICBpZiAoaXNfYXVkaW8pIHsKICAgICAgICAgICAgICAgbU93bmVyLT5iZWdpbkJveCgic21oZCIpOwogICAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoMCk7ICAgICAgICAgICAvLyB2ZXJzaW9uPTAsIGZsYWdzPTAKQEAgLTU5NywxNCArMTQ3MiwyNSBAQAogICAgICAgICAgICAgICBtT3duZXItPmVuZEJveCgpOwogICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgIG1Pd25lci0+YmVnaW5Cb3goInZtaGQiKTsKLSAgICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDMyKDB4MDAwMDAwMDEpOyAgLy8gdmVyc2lvbj0wLCBmbGFncz0xCisgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMigweDAxKTsgICAgICAgIC8vIHZlcnNpb249MCwgZmxhZ3M9MQogICAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MTYoMCk7ICAgICAgICAgICAvLyBncmFwaGljcyBtb2RlCiAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQxNigwKTsgICAgICAgICAgIC8vIG9wY29sb3IKICAgICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDE2KDApOwogICAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MTYoMCk7CiAgICAgICAgICAgICAgIG1Pd25lci0+ZW5kQm94KCk7CiAgICAgICAgICAgfQotICAgICAgICBtT3duZXItPmVuZEJveCgpOyAgLy8gbWluZgorCisgICAgICAgICAgbU93bmVyLT5iZWdpbkJveCgiZGluZiIpOworICAgICAgICAgICAgbU93bmVyLT5iZWdpbkJveCgiZHJlZiIpOworICAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoMCk7ICAvLyB2ZXJzaW9uPTAsIGZsYWdzPTAKKyAgICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDMyKDEpOyAgLy8gZW50cnkgY291bnQgKGVpdGhlciB1cmwgb3IgdXJuKQorICAgICAgICAgICAgICAvLyBUaGUgdGFibGUgaW5kZXggaGVyZSByZWZlcnMgdG8gdGhlIHNhbXBsZSBkZXNjcmlwdGlvbiBpbmRleAorICAgICAgICAgICAgICAvLyBpbiB0aGUgc2FtcGxlIHRhYmxlIGVudHJpZXMuCisgICAgICAgICAgICAgIG1Pd25lci0+YmVnaW5Cb3goInVybCAiKTsKKyAgICAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoMSk7ICAvLyB2ZXJzaW9uPTAsIGZsYWdzPTEgKHNlbGYtY29udGFpbmVkKQorICAgICAgICAgICAgICBtT3duZXItPmVuZEJveCgpOyAgLy8gdXJsCisgICAgICAgICAgICBtT3duZXItPmVuZEJveCgpOyAgLy8gZHJlZgorICAgICAgICAgIG1Pd25lci0+ZW5kQm94KCk7ICAvLyBkaW5mCiAKICAgICAgICAgbU93bmVyLT5iZWdpbkJveCgic3RibCIpOwogCkBAIC02MTcsNiArMTUwMyw4IEBACiAgICAgICAgICAgICAgICAgICAgIGZvdXJjYyA9ICJzYW1yIjsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFzdHJjYXNlY21wKE1FRElBX01JTUVUWVBFX0FVRElPX0FNUl9XQiwgbWltZSkpIHsKICAgICAgICAgICAgICAgICAgICAgZm91cmNjID0gInNhd2IiOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXN0cmNhc2VjbXAoTUVESUFfTUlNRVRZUEVfQVVESU9fQUFDLCBtaW1lKSkgeworICAgICAgICAgICAgICAgICAgICBmb3VyY2MgPSAibXA0YSI7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgTE9HRSgiVW5rbm93biBtaW1lIHR5cGUgJyVzJy4iLCBtaW1lKTsKICAgICAgICAgICAgICAgICAgICAgQ0hFQ0soISJzaG91bGQgbm90IGJlIGhlcmUsIHVua25vd24gbWltZSB0eXBlLiIpOwpAQCAtNjI1LDEwICsxNTEzLDEyIEBACiAgICAgICAgICAgICAgICAgbU93bmVyLT5iZWdpbkJveChmb3VyY2MpOyAgICAgICAgICAvLyBhdWRpbyBmb3JtYXQKICAgICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMigwKTsgICAgICAgICAgIC8vIHJlc2VydmVkCiAgICAgICAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MTYoMCk7ICAgICAgICAgICAvLyByZXNlcnZlZAotICAgICAgICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDE2KDApOyAgICAgICAgICAgLy8gZGF0YSByZWYgaW5kZXgKKyAgICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQxNigweDEpOyAgICAgICAgIC8vIGRhdGEgcmVmIGluZGV4CiAgICAgICAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoMCk7ICAgICAgICAgICAvLyByZXNlcnZlZAogICAgICAgICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDMyKDApOyAgICAgICAgICAgLy8gcmVzZXJ2ZWQKLSAgICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQxNigyKTsgICAgICAgICAgIC8vIGNoYW5uZWwgY291bnQKKyAgICAgICAgICAgICAgICAgIGludDMyX3QgbkNoYW5uZWxzOworICAgICAgICAgICAgICAgICAgQ0hFQ0tfRVEodHJ1ZSwgbU1ldGEtPmZpbmRJbnQzMihrS2V5Q2hhbm5lbENvdW50LCAmbkNoYW5uZWxzKSk7CisgICAgICAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MTYobkNoYW5uZWxzKTsgICAvLyBjaGFubmVsIGNvdW50CiAgICAgICAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MTYoMTYpOyAgICAgICAgICAvLyBzYW1wbGUgc2l6ZQogICAgICAgICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDE2KDApOyAgICAgICAgICAgLy8gcHJlZGVmaW5lZAogICAgICAgICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDE2KDApOyAgICAgICAgICAgLy8gcmVzZXJ2ZWQKQEAgLTYzOCw2ICsxNTI4LDM4IEBACiAgICAgICAgICAgICAgICAgICBDSEVDSyhzdWNjZXNzKTsKIAogICAgICAgICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDMyKHNhbXBsZXJhdGUgPDwgMTYpOworICAgICAgICAgICAgICAgICAgaWYgKCFzdHJjYXNlY21wKE1FRElBX01JTUVUWVBFX0FVRElPX0FBQywgbWltZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgbU93bmVyLT5iZWdpbkJveCgiZXNkcyIpOworCisgICAgICAgICAgICAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoMCk7ICAgICAvLyB2ZXJzaW9uPTAsIGZsYWdzPTAKKyAgICAgICAgICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQ4KDB4MDMpOyAgIC8vIEVTX0Rlc2NyVGFnCisgICAgICAgICAgICAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50OCgyMyArIG1Db2RlY1NwZWNpZmljRGF0YVNpemUpOworICAgICAgICAgICAgICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDE2KDB4MDAwMCk7Ly8gRVNfSUQKKyAgICAgICAgICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQ4KDB4MDApOworCisgICAgICAgICAgICAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50OCgweDA0KTsgICAvLyBEZWNvZGVyQ29uZmlnRGVzY3JUYWcKKyAgICAgICAgICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQ4KDE1ICsgbUNvZGVjU3BlY2lmaWNEYXRhU2l6ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50OCgweDQwKTsgICAvLyBvYmplY3RUeXBlSW5kaWNhdGlvbiBJU08vSUVDIDE0NDkyLTIKKyAgICAgICAgICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQ4KDB4MTUpOyAgIC8vIHN0cmVhbVR5cGUgQXVkaW9TdHJlYW0KKworICAgICAgICAgICAgICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDE2KDB4MDMpOyAgLy8gWFhYCisgICAgICAgICAgICAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50OCgweDAwKTsgICAvLyBidWZmZXIgc2l6ZSAyNC1iaXQKKyAgICAgICAgICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMig5NjAwMCk7IC8vIG1heCBiaXQgcmF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDMyKDk2MDAwKTsgLy8gYXZnIGJpdCByYXRlCisKKyAgICAgICAgICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQ4KDB4MDUpOyAgIC8vIERlY29kZXJTcGVjaWZpY0luZm9UYWcKKyAgICAgICAgICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQ4KG1Db2RlY1NwZWNpZmljRGF0YVNpemUpOworICAgICAgICAgICAgICAgICAgICAgICAgbU93bmVyLT53cml0ZShtQ29kZWNTcGVjaWZpY0RhdGEsIG1Db2RlY1NwZWNpZmljRGF0YVNpemUpOworCisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWMgY29uc3QgdWludDhfdCBrRGF0YTJbXSA9IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDA2LCAgLy8gU0xDb25maWdEZXNjcmlwdG9yVGFnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAyCisgICAgICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICAgICAgbU93bmVyLT53cml0ZShrRGF0YTIsIHNpemVvZihrRGF0YTIpKTsKKworICAgICAgICAgICAgICAgICAgICBtT3duZXItPmVuZEJveCgpOyAgLy8gZXNkcworICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG1Pd25lci0+ZW5kQm94KCk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIGlmICghc3RyY2FzZWNtcChNRURJQV9NSU1FVFlQRV9WSURFT19NUEVHNCwgbWltZSkpIHsKQEAgLTY1Myw3ICsxNTc1LDcgQEAKIAogICAgICAgICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDMyKDApOyAgICAgICAgICAgLy8gcmVzZXJ2ZWQKICAgICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQxNigwKTsgICAgICAgICAgIC8vIHJlc2VydmVkCi0gICAgICAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MTYoMCk7ICAgICAgICAgICAvLyBkYXRhIHJlZiBpbmRleAorICAgICAgICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDE2KDEpOyAgICAgICAgICAgLy8gZGF0YSByZWYgaW5kZXgKICAgICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQxNigwKTsgICAgICAgICAgIC8vIHByZWRlZmluZWQKICAgICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQxNigwKTsgICAgICAgICAgIC8vIHJlc2VydmVkCiAgICAgICAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoMCk7ICAgICAgICAgICAvLyBwcmVkZWZpbmVkCkBAIC02OTgsNyArMTYyMCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMCwgMHgwMywgMHhlOCwgMHgwMAogICAgICAgICAgICAgICAgICAgICAgICAgfTsKICAgICAgICAgICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGUoa0RhdGEsIHNpemVvZihrRGF0YSkpOwotICAgICAgICAgICAgICAgICAgICAgICAgCisKICAgICAgICAgICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQ4KDB4MDUpOyAgLy8gRGVjb2RlclNwZWNpZmljSW5mb1RhZwogCiAgICAgICAgICAgICAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50OChtQ29kZWNTcGVjaWZpY0RhdGFTaXplKTsKQEAgLTcyNyw1OSArMTY0OSw3OCBAQAogICAgICAgICAgICAgICAgICAgICAgIG1Pd25lci0+ZW5kQm94KCk7ICAvLyBhdmNDCiAgICAgICAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgICAgICAgIG1Pd25lci0+YmVnaW5Cb3goInBhc3AiKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB1c2VmdWwgaWYgdGhlIHBpeGVsIGlzIG5vdCBzcXVhcmUKKyAgICAgICAgICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDMyKDEgPDwgMTYpOyAgLy8gaHNwYWNpbmcKKyAgICAgICAgICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDMyKDEgPDwgMTYpOyAgLy8gdnNwYWNpbmcKKyAgICAgICAgICAgICAgICAgIG1Pd25lci0+ZW5kQm94KCk7ICAvLyBwYXNwCiAgICAgICAgICAgICAgICAgbU93bmVyLT5lbmRCb3goKTsgIC8vIG1wNHYsIHMyNjMgb3IgYXZjMQogICAgICAgICAgICAgfQogICAgICAgICAgIG1Pd25lci0+ZW5kQm94KCk7ICAvLyBzdHNkCiAKICAgICAgICAgICBtT3duZXItPmJlZ2luQm94KCJzdHRzIik7CiAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoMCk7ICAvLyB2ZXJzaW9uPTAsIGZsYWdzPTAKLSAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMihtU2FtcGxlSW5mb3Muc2l6ZSgpIC0gMSk7Ci0KLSAgICAgICAgICAgIExpc3Q8U2FtcGxlSW5mbz46Oml0ZXJhdG9yIGl0ID0gbVNhbXBsZUluZm9zLmJlZ2luKCk7Ci0gICAgICAgICAgICBpbnQ2NF90IGxhc3QgPSAoKml0KS50aW1lc3RhbXA7Ci0gICAgICAgICAgICArK2l0OwotICAgICAgICAgICAgd2hpbGUgKGl0ICE9IG1TYW1wbGVJbmZvcy5lbmQoKSkgewotICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMigxKTsKLSAgICAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoKCppdCkudGltZXN0YW1wIC0gbGFzdCk7Ci0KLSAgICAgICAgICAgICAgICBsYXN0ID0gKCppdCkudGltZXN0YW1wOwotCi0gICAgICAgICAgICAgICAgKytpdDsKKyAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMihtU3R0c1RhYmxlRW50cmllcy5zaXplKCkpOworICAgICAgICAgICAgZm9yIChMaXN0PFN0dHNUYWJsZUVudHJ5Pjo6aXRlcmF0b3IgaXQgPSBtU3R0c1RhYmxlRW50cmllcy5iZWdpbigpOworICAgICAgICAgICAgICAgICBpdCAhPSBtU3R0c1RhYmxlRW50cmllcy5lbmQoKTsgKytpdCkgeworICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMihpdC0+c2FtcGxlQ291bnQpOworICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMihpdC0+c2FtcGxlRHVyYXRpb24pOwogICAgICAgICAgICAgfQogICAgICAgICAgIG1Pd25lci0+ZW5kQm94KCk7ICAvLyBzdHRzCiAKKyAgICAgICAgICBpZiAoIWlzX2F1ZGlvKSB7CisgICAgICAgICAgICBtT3duZXItPmJlZ2luQm94KCJzdHNzIik7CisgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMigwKTsgIC8vIHZlcnNpb249MCwgZmxhZ3M9MAorICAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIobVN0c3NUYWJsZUVudHJpZXMuc2l6ZSgpKTsgIC8vIG51bWJlciBvZiBzeW5jIGZyYW1lcworICAgICAgICAgICAgICBmb3IgKExpc3Q8aW50MzJfdD46Oml0ZXJhdG9yIGl0ID0gbVN0c3NUYWJsZUVudHJpZXMuYmVnaW4oKTsKKyAgICAgICAgICAgICAgICAgICBpdCAhPSBtU3Rzc1RhYmxlRW50cmllcy5lbmQoKTsgKytpdCkgeworICAgICAgICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDMyKCppdCk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1Pd25lci0+ZW5kQm94KCk7ICAvLyBzdHNzCisgICAgICAgICAgfQorCiAgICAgICAgICAgbU93bmVyLT5iZWdpbkJveCgic3RzeiIpOwogICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDMyKDApOyAgLy8gdmVyc2lvbj0wLCBmbGFncz0wCi0gICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoMCk7ICAvLyBkZWZhdWx0IHNhbXBsZSBzaXplCisgICAgICAgICAgICBpZiAobVNhbXBsZXNIYXZlU2FtZVNpemUpIHsKKyAgICAgICAgICAgICAgICBMaXN0PFNhbXBsZUluZm8+OjppdGVyYXRvciBpdCA9IG1TYW1wbGVJbmZvcy5iZWdpbigpOworICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMihpdC0+c2l6ZSk7ICAvLyBkZWZhdWx0IHNhbXBsZSBzaXplCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMigwKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMihtU2FtcGxlSW5mb3Muc2l6ZSgpKTsKLSAgICAgICAgICAgIGZvciAoTGlzdDxTYW1wbGVJbmZvPjo6aXRlcmF0b3IgaXQgPSBtU2FtcGxlSW5mb3MuYmVnaW4oKTsKLSAgICAgICAgICAgICAgICAgaXQgIT0gbVNhbXBsZUluZm9zLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDMyKCgqaXQpLnNpemUpOworICAgICAgICAgICAgaWYgKCFtU2FtcGxlc0hhdmVTYW1lU2l6ZSkgeworICAgICAgICAgICAgICAgIGZvciAoTGlzdDxTYW1wbGVJbmZvPjo6aXRlcmF0b3IgaXQgPSBtU2FtcGxlSW5mb3MuYmVnaW4oKTsKKyAgICAgICAgICAgICAgICAgICAgIGl0ICE9IG1TYW1wbGVJbmZvcy5lbmQoKTsgKytpdCkgeworICAgICAgICAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoKCppdCkuc2l6ZSk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgIG1Pd25lci0+ZW5kQm94KCk7ICAvLyBzdHN6CiAKICAgICAgICAgICBtT3duZXItPmJlZ2luQm94KCJzdHNjIik7CiAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoMCk7ICAvLyB2ZXJzaW9uPTAsIGZsYWdzPTAKLSAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMihtU2FtcGxlSW5mb3Muc2l6ZSgpKTsKLSAgICAgICAgICAgIGludDMyX3QgbiA9IDE7Ci0gICAgICAgICAgICBmb3IgKExpc3Q8U2FtcGxlSW5mbz46Oml0ZXJhdG9yIGl0ID0gbVNhbXBsZUluZm9zLmJlZ2luKCk7Ci0gICAgICAgICAgICAgICAgIGl0ICE9IG1TYW1wbGVJbmZvcy5lbmQoKTsgKytpdCwgKytuKSB7Ci0gICAgICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDMyKG4pOwotICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMigxKTsKLSAgICAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoMSk7CisgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIobVN0c2NUYWJsZUVudHJpZXMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAoTGlzdDxTdHNjVGFibGVFbnRyeT46Oml0ZXJhdG9yIGl0ID0gbVN0c2NUYWJsZUVudHJpZXMuYmVnaW4oKTsKKyAgICAgICAgICAgICAgICAgaXQgIT0gbVN0c2NUYWJsZUVudHJpZXMuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoaXQtPmZpcnN0Q2h1bmspOworICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQzMihpdC0+c2FtcGxlc1BlckNodW5rKTsKKyAgICAgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIoaXQtPnNhbXBsZURlc2NyaXB0aW9uSWQpOwogICAgICAgICAgICAgfQogICAgICAgICAgIG1Pd25lci0+ZW5kQm94KCk7ICAvLyBzdHNjCi0KLSAgICAgICAgICBtT3duZXItPmJlZ2luQm94KCJjbzY0Iik7CisgICAgICAgICAgbU93bmVyLT5iZWdpbkJveCh1c2UzMkJpdE9mZnNldD8gInN0Y28iOiAiY282NCIpOwogICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDMyKDApOyAgLy8gdmVyc2lvbj0wLCBmbGFncz0wCi0gICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIobVNhbXBsZUluZm9zLnNpemUoKSk7Ci0gICAgICAgICAgICBmb3IgKExpc3Q8U2FtcGxlSW5mbz46Oml0ZXJhdG9yIGl0ID0gbVNhbXBsZUluZm9zLmJlZ2luKCk7Ci0gICAgICAgICAgICAgICAgIGl0ICE9IG1TYW1wbGVJbmZvcy5lbmQoKTsgKytpdCwgKytuKSB7Ci0gICAgICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDY0KCgqaXQpLm9mZnNldCk7CisgICAgICAgICAgICBtT3duZXItPndyaXRlSW50MzIobUNodW5rT2Zmc2V0cy5zaXplKCkpOworICAgICAgICAgICAgZm9yIChMaXN0PG9mZl90Pjo6aXRlcmF0b3IgaXQgPSBtQ2h1bmtPZmZzZXRzLmJlZ2luKCk7CisgICAgICAgICAgICAgICAgIGl0ICE9IG1DaHVua09mZnNldHMuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgICAgICAgICBpZiAodXNlMzJCaXRPZmZzZXQpIHsKKyAgICAgICAgICAgICAgICAgICAgbU93bmVyLT53cml0ZUludDMyKHN0YXRpY19jYXN0PGludDMyX3Q+KCppdCkpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIG1Pd25lci0+d3JpdGVJbnQ2NCgoKml0KSk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgIG1Pd25lci0+ZW5kQm94KCk7ICAvLyBjbzY0CiAKICAgICAgICAgbU93bmVyLT5lbmRCb3goKTsgIC8vIHN0YmwKKyAgICAgICBtT3duZXItPmVuZEJveCgpOyAgLy8gbWluZgogICAgICAgbU93bmVyLT5lbmRCb3goKTsgIC8vIG1kaWEKICAgICBtT3duZXItPmVuZEJveCgpOyAgLy8gdHJhawogfQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvTWVkaWFEZWZzLmNwcCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L01lZGlhRGVmcy5jcHAKaW5kZXggNGIzODEzYi4uMzlkMjY0YyAxMDA2NDQKLS0tIGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvTWVkaWFEZWZzLmNwcAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9NZWRpYURlZnMuY3BwCkBAIC0yMCw2ICsyMCw3IEBACiAKIGNvbnN0IGNoYXIgKk1FRElBX01JTUVUWVBFX0lNQUdFX0pQRUcgPSAiaW1hZ2UvanBlZyI7CiAKK2NvbnN0IGNoYXIgKk1FRElBX01JTUVUWVBFX1ZJREVPX1ZQWCA9ICJ2aWRlby94LXZuZC5vbjIudnA4IjsKIGNvbnN0IGNoYXIgKk1FRElBX01JTUVUWVBFX1ZJREVPX0FWQyA9ICJ2aWRlby9hdmMiOwogY29uc3QgY2hhciAqTUVESUFfTUlNRVRZUEVfVklERU9fTVBFRzQgPSAidmlkZW8vbXA0di1lcyI7CiBjb25zdCBjaGFyICpNRURJQV9NSU1FVFlQRV9WSURFT19IMjYzID0gInZpZGVvLzNncHAiOwpAQCAtMzYsNSArMzcsNyBAQAogY29uc3QgY2hhciAqTUVESUFfTUlNRVRZUEVfQ09OVEFJTkVSX01QRUc0ID0gInZpZGVvL21wZWc0IjsKIGNvbnN0IGNoYXIgKk1FRElBX01JTUVUWVBFX0NPTlRBSU5FUl9XQVYgPSAiYXVkaW8vd2F2IjsKIGNvbnN0IGNoYXIgKk1FRElBX01JTUVUWVBFX0NPTlRBSU5FUl9PR0cgPSAiYXBwbGljYXRpb24vb2dnIjsKK2NvbnN0IGNoYXIgKk1FRElBX01JTUVUWVBFX0NPTlRBSU5FUl9NQVRST1NLQSA9ICJ2aWRlby94LW1hdHJvc2thIjsKK2NvbnN0IGNoYXIgKk1FRElBX01JTUVUWVBFX0NPTlRBSU5FUl9NUEVHMlRTID0gInZpZGVvL21wMnRzIjsKIAogfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L01lZGlhRXh0cmFjdG9yLmNwcCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L01lZGlhRXh0cmFjdG9yLmNwcAppbmRleCA1MTNmNDljLi41NmU2MTM2IDEwMDY0NAotLS0gYS9tZWRpYS9saWJzdGFnZWZyaWdodC9NZWRpYUV4dHJhY3Rvci5jcHAKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvTWVkaWFFeHRyYWN0b3IuY3BwCkBAIC0yMyw2ICsyMyw5IEBACiAjaW5jbHVkZSAiaW5jbHVkZS9NUEVHNEV4dHJhY3Rvci5oIgogI2luY2x1ZGUgImluY2x1ZGUvV0FWRXh0cmFjdG9yLmgiCiAjaW5jbHVkZSAiaW5jbHVkZS9PZ2dFeHRyYWN0b3IuaCIKKyNpbmNsdWRlICJpbmNsdWRlL01QRUcyVFNFeHRyYWN0b3IuaCIKKworI2luY2x1ZGUgIm1hdHJvc2thL01hdHJvc2thRXh0cmFjdG9yLmgiCiAKICNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9EYXRhU291cmNlLmg+CiAjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFEZWZzLmg+CkBAIC02OSw2ICs3MiwxMCBAQAogICAgICAgICByZXR1cm4gbmV3IFdBVkV4dHJhY3Rvcihzb3VyY2UpOwogICAgIH0gZWxzZSBpZiAoIXN0cmNhc2VjbXAobWltZSwgTUVESUFfTUlNRVRZUEVfQ09OVEFJTkVSX09HRykpIHsKICAgICAgICAgcmV0dXJuIG5ldyBPZ2dFeHRyYWN0b3Ioc291cmNlKTsKKyAgICB9IGVsc2UgaWYgKCFzdHJjYXNlY21wKG1pbWUsIE1FRElBX01JTUVUWVBFX0NPTlRBSU5FUl9NQVRST1NLQSkpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBNYXRyb3NrYUV4dHJhY3Rvcihzb3VyY2UpOworICAgIH0gZWxzZSBpZiAoIXN0cmNhc2VjbXAobWltZSwgTUVESUFfTUlNRVRZUEVfQ09OVEFJTkVSX01QRUcyVFMpKSB7CisgICAgICAgIHJldHVybiBuZXcgTVBFRzJUU0V4dHJhY3Rvcihzb3VyY2UpOwogICAgIH0KIAogICAgIHJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvTnVDYWNoZWRTb3VyY2UyLmNwcCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L051Q2FjaGVkU291cmNlMi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzAyYjdmMwotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L051Q2FjaGVkU291cmNlMi5jcHAKQEAgLTAsMCArMSw0NzEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjZGVmaW5lIExPR19UQUcgIk51Q2FjaGVkU291cmNlMiIKKyNpbmNsdWRlIDx1dGlscy9Mb2cuaD4KKworI2luY2x1ZGUgImluY2x1ZGUvTnVDYWNoZWRTb3VyY2UyLmgiCisKKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FEZWJ1Zy5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQU1lc3NhZ2UuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYUVycm9ycy5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK3N0cnVjdCBQYWdlQ2FjaGUgeworICAgIFBhZ2VDYWNoZShzaXplX3QgcGFnZVNpemUpOworICAgIH5QYWdlQ2FjaGUoKTsKKworICAgIHN0cnVjdCBQYWdlIHsKKyAgICAgICAgdm9pZCAqbURhdGE7CisgICAgICAgIHNpemVfdCBtU2l6ZTsKKyAgICB9OworCisgICAgUGFnZSAqYWNxdWlyZVBhZ2UoKTsKKyAgICB2b2lkIHJlbGVhc2VQYWdlKFBhZ2UgKnBhZ2UpOworCisgICAgdm9pZCBhcHBlbmRQYWdlKFBhZ2UgKnBhZ2UpOworICAgIHNpemVfdCByZWxlYXNlRnJvbVN0YXJ0KHNpemVfdCBtYXhCeXRlcyk7CisKKyAgICBzaXplX3QgdG90YWxTaXplKCkgY29uc3QgeworICAgICAgICByZXR1cm4gbVRvdGFsU2l6ZTsKKyAgICB9CisKKyAgICB2b2lkIGNvcHkoc2l6ZV90IGZyb20sIHZvaWQgKmRhdGEsIHNpemVfdCBzaXplKTsKKworcHJpdmF0ZToKKyAgICBzaXplX3QgbVBhZ2VTaXplOworICAgIHNpemVfdCBtVG90YWxTaXplOworCisgICAgTGlzdDxQYWdlICo+IG1BY3RpdmVQYWdlczsKKyAgICBMaXN0PFBhZ2UgKj4gbUZyZWVQYWdlczsKKworICAgIHZvaWQgZnJlZVBhZ2VzKExpc3Q8UGFnZSAqPiAqbGlzdCk7CisKKyAgICBESVNBTExPV19FVklMX0NPTlNUUlVDVE9SUyhQYWdlQ2FjaGUpOworfTsKKworUGFnZUNhY2hlOjpQYWdlQ2FjaGUoc2l6ZV90IHBhZ2VTaXplKQorICAgIDogbVBhZ2VTaXplKHBhZ2VTaXplKSwKKyAgICAgIG1Ub3RhbFNpemUoMCkgeworfQorCitQYWdlQ2FjaGU6On5QYWdlQ2FjaGUoKSB7CisgICAgZnJlZVBhZ2VzKCZtQWN0aXZlUGFnZXMpOworICAgIGZyZWVQYWdlcygmbUZyZWVQYWdlcyk7Cit9CisKK3ZvaWQgUGFnZUNhY2hlOjpmcmVlUGFnZXMoTGlzdDxQYWdlICo+ICpsaXN0KSB7CisgICAgTGlzdDxQYWdlICo+OjppdGVyYXRvciBpdCA9IGxpc3QtPmJlZ2luKCk7CisgICAgd2hpbGUgKGl0ICE9IGxpc3QtPmVuZCgpKSB7CisgICAgICAgIFBhZ2UgKnBhZ2UgPSAqaXQ7CisKKyAgICAgICAgZnJlZShwYWdlLT5tRGF0YSk7CisgICAgICAgIGRlbGV0ZSBwYWdlOworICAgICAgICBwYWdlID0gTlVMTDsKKworICAgICAgICArK2l0OworICAgIH0KK30KKworUGFnZUNhY2hlOjpQYWdlICpQYWdlQ2FjaGU6OmFjcXVpcmVQYWdlKCkgeworICAgIGlmICghbUZyZWVQYWdlcy5lbXB0eSgpKSB7CisgICAgICAgIExpc3Q8UGFnZSAqPjo6aXRlcmF0b3IgaXQgPSBtRnJlZVBhZ2VzLmJlZ2luKCk7CisgICAgICAgIFBhZ2UgKnBhZ2UgPSAqaXQ7CisgICAgICAgIG1GcmVlUGFnZXMuZXJhc2UoaXQpOworCisgICAgICAgIHJldHVybiBwYWdlOworICAgIH0KKworICAgIFBhZ2UgKnBhZ2UgPSBuZXcgUGFnZTsKKyAgICBwYWdlLT5tRGF0YSA9IG1hbGxvYyhtUGFnZVNpemUpOworICAgIHBhZ2UtPm1TaXplID0gMDsKKworICAgIHJldHVybiBwYWdlOworfQorCit2b2lkIFBhZ2VDYWNoZTo6cmVsZWFzZVBhZ2UoUGFnZSAqcGFnZSkgeworICAgIHBhZ2UtPm1TaXplID0gMDsKKyAgICBtRnJlZVBhZ2VzLnB1c2hfYmFjayhwYWdlKTsKK30KKwordm9pZCBQYWdlQ2FjaGU6OmFwcGVuZFBhZ2UoUGFnZSAqcGFnZSkgeworICAgIG1Ub3RhbFNpemUgKz0gcGFnZS0+bVNpemU7CisgICAgbUFjdGl2ZVBhZ2VzLnB1c2hfYmFjayhwYWdlKTsKK30KKworc2l6ZV90IFBhZ2VDYWNoZTo6cmVsZWFzZUZyb21TdGFydChzaXplX3QgbWF4Qnl0ZXMpIHsKKyAgICBzaXplX3QgYnl0ZXNSZWxlYXNlZCA9IDA7CisKKyAgICB3aGlsZSAobWF4Qnl0ZXMgPiAwICYmICFtQWN0aXZlUGFnZXMuZW1wdHkoKSkgeworICAgICAgICBMaXN0PFBhZ2UgKj46Oml0ZXJhdG9yIGl0ID0gbUFjdGl2ZVBhZ2VzLmJlZ2luKCk7CisKKyAgICAgICAgUGFnZSAqcGFnZSA9ICppdDsKKworICAgICAgICBpZiAobWF4Qnl0ZXMgPCBwYWdlLT5tU2l6ZSkgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBtQWN0aXZlUGFnZXMuZXJhc2UoaXQpOworCisgICAgICAgIG1heEJ5dGVzIC09IHBhZ2UtPm1TaXplOworICAgICAgICBieXRlc1JlbGVhc2VkICs9IHBhZ2UtPm1TaXplOworCisgICAgICAgIHJlbGVhc2VQYWdlKHBhZ2UpOworICAgIH0KKworICAgIG1Ub3RhbFNpemUgLT0gYnl0ZXNSZWxlYXNlZDsKKyAgICByZXR1cm4gYnl0ZXNSZWxlYXNlZDsKK30KKwordm9pZCBQYWdlQ2FjaGU6OmNvcHkoc2l6ZV90IGZyb20sIHZvaWQgKmRhdGEsIHNpemVfdCBzaXplKSB7CisgICAgTE9HKFZFUkJPU0UpIDw8ICJjb3B5IGZyb20gIiA8PCBmcm9tIDw8ICIgc2l6ZSAiIDw8IHNpemU7CisKKyAgICBDSEVDS19MRShmcm9tICsgc2l6ZSwgbVRvdGFsU2l6ZSk7CisKKyAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKKyAgICBMaXN0PFBhZ2UgKj46Oml0ZXJhdG9yIGl0ID0gbUFjdGl2ZVBhZ2VzLmJlZ2luKCk7CisgICAgd2hpbGUgKGZyb20gPj0gb2Zmc2V0ICsgKCppdCktPm1TaXplKSB7CisgICAgICAgIG9mZnNldCArPSAoKml0KS0+bVNpemU7CisgICAgICAgICsraXQ7CisgICAgfQorCisgICAgc2l6ZV90IGRlbHRhID0gZnJvbSAtIG9mZnNldDsKKyAgICBzaXplX3QgYXZhaWwgPSAoKml0KS0+bVNpemUgLSBkZWx0YTsKKworICAgIGlmIChhdmFpbCA+PSBzaXplKSB7CisgICAgICAgIG1lbWNweShkYXRhLCAoY29uc3QgdWludDhfdCAqKSgqaXQpLT5tRGF0YSArIGRlbHRhLCBzaXplKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1lbWNweShkYXRhLCAoY29uc3QgdWludDhfdCAqKSgqaXQpLT5tRGF0YSArIGRlbHRhLCBhdmFpbCk7CisgICAgKytpdDsKKyAgICBkYXRhID0gKHVpbnQ4X3QgKilkYXRhICsgYXZhaWw7CisgICAgc2l6ZSAtPSBhdmFpbDsKKworICAgIHdoaWxlIChzaXplID4gMCkgeworICAgICAgICBzaXplX3QgY29weSA9ICgqaXQpLT5tU2l6ZTsKKyAgICAgICAgaWYgKGNvcHkgPiBzaXplKSB7CisgICAgICAgICAgICBjb3B5ID0gc2l6ZTsKKyAgICAgICAgfQorICAgICAgICBtZW1jcHkoZGF0YSwgKCppdCktPm1EYXRhLCBjb3B5KTsKKyAgICAgICAgZGF0YSA9ICh1aW50OF90ICopZGF0YSArIGNvcHk7CisgICAgICAgIHNpemUgLT0gY29weTsKKyAgICAgICAgKytpdDsKKyAgICB9Cit9CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK051Q2FjaGVkU291cmNlMjo6TnVDYWNoZWRTb3VyY2UyKGNvbnN0IHNwPERhdGFTb3VyY2U+ICZzb3VyY2UpCisgICAgOiBtU291cmNlKHNvdXJjZSksCisgICAgICBtUmVmbGVjdG9yKG5ldyBBSGFuZGxlclJlZmxlY3RvcjxOdUNhY2hlZFNvdXJjZTI+KHRoaXMpKSwKKyAgICAgIG1Mb29wZXIobmV3IEFMb29wZXIpLAorICAgICAgbUNhY2hlKG5ldyBQYWdlQ2FjaGUoa1BhZ2VTaXplKSksCisgICAgICBtQ2FjaGVPZmZzZXQoMCksCisgICAgICBtRmluYWxTdGF0dXMoT0spLAorICAgICAgbUxhc3RBY2Nlc3NQb3MoMCksCisgICAgICBtRmV0Y2hpbmcodHJ1ZSksCisgICAgICBtTGFzdEZldGNoVGltZVVzKC0xKSB7CisgICAgbUxvb3Blci0+cmVnaXN0ZXJIYW5kbGVyKG1SZWZsZWN0b3IpOworICAgIG1Mb29wZXItPnN0YXJ0KCk7CisKKyAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobUxvY2spOworICAgIChuZXcgQU1lc3NhZ2Uoa1doYXRGZXRjaE1vcmUsIG1SZWZsZWN0b3ItPmlkKCkpKS0+cG9zdCgpOworfQorCitOdUNhY2hlZFNvdXJjZTI6On5OdUNhY2hlZFNvdXJjZTIoKSB7CisgICAgbUxvb3Blci0+c3RvcCgpOworICAgIG1Mb29wZXItPnVucmVnaXN0ZXJIYW5kbGVyKG1SZWZsZWN0b3ItPmlkKCkpOworCisgICAgZGVsZXRlIG1DYWNoZTsKKyAgICBtQ2FjaGUgPSBOVUxMOworfQorCitzdGF0dXNfdCBOdUNhY2hlZFNvdXJjZTI6OmluaXRDaGVjaygpIGNvbnN0IHsKKyAgICByZXR1cm4gbVNvdXJjZS0+aW5pdENoZWNrKCk7Cit9CisKK3N0YXR1c190IE51Q2FjaGVkU291cmNlMjo6Z2V0U2l6ZShvZmZfdCAqc2l6ZSkgeworICAgIHJldHVybiBtU291cmNlLT5nZXRTaXplKHNpemUpOworfQorCit1aW50MzJfdCBOdUNhY2hlZFNvdXJjZTI6OmZsYWdzKCkgeworICAgIHJldHVybiBtU291cmNlLT5mbGFncygpOworfQorCit2b2lkIE51Q2FjaGVkU291cmNlMjo6b25NZXNzYWdlUmVjZWl2ZWQoY29uc3Qgc3A8QU1lc3NhZ2U+ICZtc2cpIHsKKyAgICBzd2l0Y2ggKG1zZy0+d2hhdCgpKSB7CisgICAgICAgIGNhc2Uga1doYXRGZXRjaE1vcmU6CisgICAgICAgIHsKKyAgICAgICAgICAgIG9uRmV0Y2goKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgY2FzZSBrV2hhdFJlYWQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIG9uUmVhZChtc2cpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVFJFU1BBU1MoKTsKKyAgICB9Cit9CisKK3ZvaWQgTnVDYWNoZWRTb3VyY2UyOjpmZXRjaEludGVybmFsKCkgeworICAgIExPRyhWRVJCT1NFKSA8PCAiZmV0Y2hJbnRlcm5hbCI7CisKKyAgICBDSEVDS19FUShtRmluYWxTdGF0dXMsIChzdGF0dXNfdClPSyk7CisKKyAgICBQYWdlQ2FjaGU6OlBhZ2UgKnBhZ2UgPSBtQ2FjaGUtPmFjcXVpcmVQYWdlKCk7CisKKyAgICBzc2l6ZV90IG4gPSBtU291cmNlLT5yZWFkQXQoCisgICAgICAgICAgICBtQ2FjaGVPZmZzZXQgKyBtQ2FjaGUtPnRvdGFsU2l6ZSgpLCBwYWdlLT5tRGF0YSwga1BhZ2VTaXplKTsKKworICAgIE11dGV4OjpBdXRvbG9jayBhdXRvTG9jayhtTG9jayk7CisKKyAgICBpZiAobiA8IDApIHsKKyAgICAgICAgTE9HKEVSUk9SKSA8PCAic291cmNlIHJldHVybmVkIGVycm9yICIgPDwgbjsKKyAgICAgICAgbUZpbmFsU3RhdHVzID0gbjsKKyAgICAgICAgbUNhY2hlLT5yZWxlYXNlUGFnZShwYWdlKTsKKyAgICB9IGVsc2UgaWYgKG4gPT0gMCkgeworICAgICAgICBMT0coSU5GTykgPDwgIkVSUk9SX0VORF9PRl9TVFJFQU0iOworICAgICAgICBtRmluYWxTdGF0dXMgPSBFUlJPUl9FTkRfT0ZfU1RSRUFNOworICAgICAgICBtQ2FjaGUtPnJlbGVhc2VQYWdlKHBhZ2UpOworICAgIH0gZWxzZSB7CisgICAgICAgIHBhZ2UtPm1TaXplID0gbjsKKyAgICAgICAgbUNhY2hlLT5hcHBlbmRQYWdlKHBhZ2UpOworICAgIH0KK30KKwordm9pZCBOdUNhY2hlZFNvdXJjZTI6Om9uRmV0Y2goKSB7CisgICAgTE9HKFZFUkJPU0UpIDw8ICJvbkZldGNoIjsKKworICAgIGlmIChtRmluYWxTdGF0dXMgIT0gT0spIHsKKyAgICAgICAgTE9HKFZFUkJPU0UpIDw8ICJFT1MgcmVhY2hlZCwgZG9uZSBwcmVmZXRjaGluZyBmb3Igbm93IjsKKyAgICAgICAgbUZldGNoaW5nID0gZmFsc2U7CisgICAgfQorCisgICAgYm9vbCBrZWVwQWxpdmUgPQorICAgICAgICAhbUZldGNoaW5nCisgICAgICAgICAgICAmJiBtRmluYWxTdGF0dXMgPT0gT0sKKyAgICAgICAgICAgICYmIEFMb29wZXI6OkdldE5vd1VzKCkgPj0gbUxhc3RGZXRjaFRpbWVVcyArIGtLZWVwQWxpdmVJbnRlcnZhbFVzOworCisgICAgaWYgKG1GZXRjaGluZyB8fCBrZWVwQWxpdmUpIHsKKyAgICAgICAgaWYgKGtlZXBBbGl2ZSkgeworICAgICAgICAgICAgTE9HKElORk8pIDw8ICJLZWVwIGFsaXZlIjsKKyAgICAgICAgfQorCisgICAgICAgIGZldGNoSW50ZXJuYWwoKTsKKworICAgICAgICBtTGFzdEZldGNoVGltZVVzID0gQUxvb3Blcjo6R2V0Tm93VXMoKTsKKworICAgICAgICBpZiAobUZldGNoaW5nICYmIG1DYWNoZS0+dG90YWxTaXplKCkgPj0ga0hpZ2hXYXRlclRocmVzaG9sZCkgeworICAgICAgICAgICAgTE9HKElORk8pIDw8ICJDYWNoZSBmdWxsLCBkb25lIHByZWZldGNoaW5nIGZvciBub3ciOworICAgICAgICAgICAgbUZldGNoaW5nID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobUxvY2spOworICAgICAgICByZXN0YXJ0UHJlZmV0Y2hlcklmTmVjZXNzYXJ5X2woKTsKKyAgICB9CisKKyAgICAobmV3IEFNZXNzYWdlKGtXaGF0RmV0Y2hNb3JlLCBtUmVmbGVjdG9yLT5pZCgpKSktPnBvc3QoCisgICAgICAgICAgICBtRmV0Y2hpbmcgPyAwIDogMTAwMDAwbGwpOworfQorCit2b2lkIE51Q2FjaGVkU291cmNlMjo6b25SZWFkKGNvbnN0IHNwPEFNZXNzYWdlPiAmbXNnKSB7CisgICAgTE9HKFZFUkJPU0UpIDw8ICJvblJlYWQiOworCisgICAgaW50NjRfdCBvZmZzZXQ7CisgICAgQ0hFQ0sobXNnLT5maW5kSW50NjQoIm9mZnNldCIsICZvZmZzZXQpKTsKKworICAgIHZvaWQgKmRhdGE7CisgICAgQ0hFQ0sobXNnLT5maW5kUG9pbnRlcigiZGF0YSIsICZkYXRhKSk7CisKKyAgICBzaXplX3Qgc2l6ZTsKKyAgICBDSEVDSyhtc2ctPmZpbmRTaXplKCJzaXplIiwgJnNpemUpKTsKKworICAgIHNzaXplX3QgcmVzdWx0ID0gcmVhZEludGVybmFsKG9mZnNldCwgZGF0YSwgc2l6ZSk7CisKKyAgICBpZiAocmVzdWx0ID09IC1FQUdBSU4pIHsKKyAgICAgICAgbXNnLT5wb3N0KDUwMDAwKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE11dGV4OjpBdXRvbG9jayBhdXRvTG9jayhtTG9jayk7CisKKyAgICBDSEVDSyhtQXN5bmNSZXN1bHQgPT0gTlVMTCk7CisKKyAgICBtQXN5bmNSZXN1bHQgPSBuZXcgQU1lc3NhZ2U7CisgICAgbUFzeW5jUmVzdWx0LT5zZXRJbnQzMigicmVzdWx0IiwgcmVzdWx0KTsKKworICAgIG1Db25kaXRpb24uc2lnbmFsKCk7Cit9CisKK3ZvaWQgTnVDYWNoZWRTb3VyY2UyOjpyZXN0YXJ0UHJlZmV0Y2hlcklmTmVjZXNzYXJ5X2woKSB7CisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBrR3JheUFyZWEgPSAyNTYgKiAxMDI0OworCisgICAgaWYgKG1GZXRjaGluZyB8fCBtRmluYWxTdGF0dXMgIT0gT0spIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmIChtQ2FjaGVPZmZzZXQgKyBtQ2FjaGUtPnRvdGFsU2l6ZSgpIC0gbUxhc3RBY2Nlc3NQb3MKKyAgICAgICAgICAgID49IGtMb3dXYXRlclRocmVzaG9sZCkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2l6ZV90IG1heEJ5dGVzID0gbUxhc3RBY2Nlc3NQb3MgLSBtQ2FjaGVPZmZzZXQ7CisgICAgaWYgKG1heEJ5dGVzIDwga0dyYXlBcmVhKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtYXhCeXRlcyAtPSBrR3JheUFyZWE7CisKKyAgICBzaXplX3QgYWN0dWFsQnl0ZXMgPSBtQ2FjaGUtPnJlbGVhc2VGcm9tU3RhcnQobWF4Qnl0ZXMpOworICAgIG1DYWNoZU9mZnNldCArPSBhY3R1YWxCeXRlczsKKworICAgIExPRyhJTkZPKSA8PCAicmVzdGFydGluZyBwcmVmZXRjaGVyLCB0b3RhbFNpemUgPSAiIDw8IG1DYWNoZS0+dG90YWxTaXplKCk7CisgICAgbUZldGNoaW5nID0gdHJ1ZTsKK30KKworc3NpemVfdCBOdUNhY2hlZFNvdXJjZTI6OnJlYWRBdChvZmZfdCBvZmZzZXQsIHZvaWQgKmRhdGEsIHNpemVfdCBzaXplKSB7CisgICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9TZXJpYWxpemVyKG1TZXJpYWxpemVyKTsKKworICAgIExPRyhWRVJCT1NFKSA8PCAicmVhZEF0IG9mZnNldCAiIDw8IG9mZnNldCA8PCAiIHNpemUgIiA8PCBzaXplOworCisgICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKKworICAgIC8vIElmIHRoZSByZXF1ZXN0IGNhbiBiZSBjb21wbGV0ZWx5IHNhdGlzZmllZCBmcm9tIHRoZSBjYWNoZSwgZG8gc28uCisKKyAgICBpZiAob2Zmc2V0ID49IG1DYWNoZU9mZnNldAorICAgICAgICAgICAgJiYgb2Zmc2V0ICsgc2l6ZSA8PSBtQ2FjaGVPZmZzZXQgKyBtQ2FjaGUtPnRvdGFsU2l6ZSgpKSB7CisgICAgICAgIHNpemVfdCBkZWx0YSA9IG9mZnNldCAtIG1DYWNoZU9mZnNldDsKKyAgICAgICAgbUNhY2hlLT5jb3B5KGRlbHRhLCBkYXRhLCBzaXplKTsKKworICAgICAgICBtTGFzdEFjY2Vzc1BvcyA9IG9mZnNldCArIHNpemU7CisKKyAgICAgICAgcmV0dXJuIHNpemU7CisgICAgfQorCisgICAgc3A8QU1lc3NhZ2U+IG1zZyA9IG5ldyBBTWVzc2FnZShrV2hhdFJlYWQsIG1SZWZsZWN0b3ItPmlkKCkpOworICAgIG1zZy0+c2V0SW50NjQoIm9mZnNldCIsIG9mZnNldCk7CisgICAgbXNnLT5zZXRQb2ludGVyKCJkYXRhIiwgZGF0YSk7CisgICAgbXNnLT5zZXRTaXplKCJzaXplIiwgc2l6ZSk7CisKKyAgICBDSEVDSyhtQXN5bmNSZXN1bHQgPT0gTlVMTCk7CisgICAgbXNnLT5wb3N0KCk7CisKKyAgICB3aGlsZSAobUFzeW5jUmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgbUNvbmRpdGlvbi53YWl0KG1Mb2NrKTsKKyAgICB9CisKKyAgICBpbnQzMl90IHJlc3VsdDsKKyAgICBDSEVDSyhtQXN5bmNSZXN1bHQtPmZpbmRJbnQzMigicmVzdWx0IiwgJnJlc3VsdCkpOworCisgICAgbUFzeW5jUmVzdWx0LmNsZWFyKCk7CisKKyAgICBpZiAocmVzdWx0ID4gMCkgeworICAgICAgICBtTGFzdEFjY2Vzc1BvcyA9IG9mZnNldCArIHJlc3VsdDsKKyAgICB9CisKKyAgICByZXR1cm4gKHNzaXplX3QpcmVzdWx0OworfQorCitzaXplX3QgTnVDYWNoZWRTb3VyY2UyOjpjYWNoZWRTaXplKCkgeworICAgIE11dGV4OjpBdXRvbG9jayBhdXRvTG9jayhtTG9jayk7CisgICAgcmV0dXJuIG1DYWNoZU9mZnNldCArIG1DYWNoZS0+dG90YWxTaXplKCk7Cit9CisKK3NpemVfdCBOdUNhY2hlZFNvdXJjZTI6OmFwcHJveERhdGFSZW1haW5pbmcoYm9vbCAqZW9zKSB7CisgICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKKyAgICByZXR1cm4gYXBwcm94RGF0YVJlbWFpbmluZ19sKGVvcyk7Cit9CisKK3NpemVfdCBOdUNhY2hlZFNvdXJjZTI6OmFwcHJveERhdGFSZW1haW5pbmdfbChib29sICplb3MpIHsKKyAgICAqZW9zID0gKG1GaW5hbFN0YXR1cyAhPSBPSyk7CisgICAgb2ZmX3QgbGFzdEJ5dGVQb3NDYWNoZWQgPSBtQ2FjaGVPZmZzZXQgKyBtQ2FjaGUtPnRvdGFsU2l6ZSgpOworICAgIGlmIChtTGFzdEFjY2Vzc1BvcyA8IGxhc3RCeXRlUG9zQ2FjaGVkKSB7CisgICAgICAgIHJldHVybiBsYXN0Qnl0ZVBvc0NhY2hlZCAtIG1MYXN0QWNjZXNzUG9zOworICAgIH0KKyAgICByZXR1cm4gMDsKK30KKworc3NpemVfdCBOdUNhY2hlZFNvdXJjZTI6OnJlYWRJbnRlcm5hbChvZmZfdCBvZmZzZXQsIHZvaWQgKmRhdGEsIHNpemVfdCBzaXplKSB7CisgICAgTE9HKFZFUkJPU0UpIDw8ICJyZWFkSW50ZXJuYWwgb2Zmc2V0ICIgPDwgb2Zmc2V0IDw8ICIgc2l6ZSAiIDw8IHNpemU7CisKKyAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobUxvY2spOworCisgICAgaWYgKG9mZnNldCA8IG1DYWNoZU9mZnNldAorICAgICAgICAgICAgfHwgb2Zmc2V0ID49IChvZmZfdCkobUNhY2hlT2Zmc2V0ICsgbUNhY2hlLT50b3RhbFNpemUoKSkpIHsKKyAgICAgICAgc3RhdGljIGNvbnN0IG9mZl90IGtQYWRkaW5nID0gMzI3Njg7CisKKyAgICAgICAgLy8gSW4gdGhlIHByZXNlbmNlIG9mIG11bHRpcGxlIGRlY29kZWQgc3RyZWFtcywgb25jZSBvZiB0aGVtIHdpbGwKKyAgICAgICAgLy8gdHJpZ2dlciB0aGlzIHNlZWsgcmVxdWVzdCwgdGhlIG90aGVyIG9uZSB3aWxsIHJlcXVlc3QgZGF0YSAibmVhcmJ5IgorICAgICAgICAvLyBzb29uLCBhZGp1c3QgdGhlIHNlZWsgcG9zaXRpb24gc28gdGhhdCB0aGF0IHN1YnNlcXVlbnQgcmVxdWVzdAorICAgICAgICAvLyBkb2VzIG5vdCB0cmlnZ2VyIGFub3RoZXIgc2Vlay4KKyAgICAgICAgb2ZmX3Qgc2Vla09mZnNldCA9IChvZmZzZXQgPiBrUGFkZGluZykgPyBvZmZzZXQgLSBrUGFkZGluZyA6IDA7CisKKyAgICAgICAgc2Vla0ludGVybmFsX2woc2Vla09mZnNldCk7CisgICAgfQorCisgICAgc2l6ZV90IGRlbHRhID0gb2Zmc2V0IC0gbUNhY2hlT2Zmc2V0OworCisgICAgaWYgKG1GaW5hbFN0YXR1cyAhPSBPSykgeworICAgICAgICBpZiAoZGVsdGEgPj0gbUNhY2hlLT50b3RhbFNpemUoKSkgeworICAgICAgICAgICAgcmV0dXJuIG1GaW5hbFN0YXR1czsKKyAgICAgICAgfQorCisgICAgICAgIHNpemVfdCBhdmFpbCA9IG1DYWNoZS0+dG90YWxTaXplKCkgLSBkZWx0YTsKKyAgICAgICAgbUNhY2hlLT5jb3B5KGRlbHRhLCBkYXRhLCBhdmFpbCk7CisKKyAgICAgICAgcmV0dXJuIGF2YWlsOworICAgIH0KKworICAgIGlmIChvZmZzZXQgKyBzaXplIDw9IG1DYWNoZU9mZnNldCArIG1DYWNoZS0+dG90YWxTaXplKCkpIHsKKyAgICAgICAgbUNhY2hlLT5jb3B5KGRlbHRhLCBkYXRhLCBzaXplKTsKKworICAgICAgICByZXR1cm4gc2l6ZTsKKyAgICB9CisKKyAgICBMT0coVkVSQk9TRSkgPDwgImRlZmVycmluZyByZWFkIjsKKworICAgIHJldHVybiAtRUFHQUlOOworfQorCitzdGF0dXNfdCBOdUNhY2hlZFNvdXJjZTI6OnNlZWtJbnRlcm5hbF9sKG9mZl90IG9mZnNldCkgeworICAgIG1MYXN0QWNjZXNzUG9zID0gb2Zmc2V0OworCisgICAgaWYgKG9mZnNldCA+PSBtQ2FjaGVPZmZzZXQKKyAgICAgICAgICAgICYmIG9mZnNldCA8PSAob2ZmX3QpKG1DYWNoZU9mZnNldCArIG1DYWNoZS0+dG90YWxTaXplKCkpKSB7CisgICAgICAgIHJldHVybiBPSzsKKyAgICB9CisKKyAgICBMT0coSU5GTykgPDwgIm5ldyByYW5nZTogb2Zmc2V0PSAiIDw8IG9mZnNldDsKKworICAgIG1DYWNoZU9mZnNldCA9IG9mZnNldDsKKworICAgIHNpemVfdCB0b3RhbFNpemUgPSBtQ2FjaGUtPnRvdGFsU2l6ZSgpOworICAgIENIRUNLX0VRKG1DYWNoZS0+cmVsZWFzZUZyb21TdGFydCh0b3RhbFNpemUpLCB0b3RhbFNpemUpOworCisgICAgbUZpbmFsU3RhdHVzID0gT0s7CisgICAgbUZldGNoaW5nID0gdHJ1ZTsKKworICAgIHJldHVybiBPSzsKK30KKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKKwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvTnVIVFRQRGF0YVNvdXJjZS5jcHAgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9OdUhUVFBEYXRhU291cmNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYjkyODVkCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvTnVIVFRQRGF0YVNvdXJjZS5jcHAKQEAgLTAsMCArMSwzMzggQEAKKy8vI2RlZmluZSBMT0dfTkRFQlVHIDAKKyNkZWZpbmUgTE9HX1RBRyAiTnVIVFRQRGF0YVNvdXJjZSIKKyNpbmNsdWRlIDx1dGlscy9Mb2cuaD4KKworI2luY2x1ZGUgImluY2x1ZGUvTnVIVFRQRGF0YVNvdXJjZS5oIgorCisjaW5jbHVkZSA8Y3V0aWxzL3Byb3BlcnRpZXMuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYURlYnVnLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFFcnJvcnMuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitzdGF0aWMgYm9vbCBQYXJzZVNpbmdsZVVuc2lnbmVkTG9uZygKKyAgICAgICAgY29uc3QgY2hhciAqZnJvbSwgdW5zaWduZWQgbG9uZyAqeCkgeworICAgIGNoYXIgKmVuZDsKKyAgICAqeCA9IHN0cnRvdWwoZnJvbSwgJmVuZCwgMTApOworCisgICAgaWYgKGVuZCA9PSBmcm9tIHx8ICplbmQgIT0gJ1wwJykgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3N0YXRpYyBib29sIFBhcnNlVVJMKAorICAgICAgICBjb25zdCBjaGFyICp1cmwsIFN0cmluZzggKmhvc3QsIHVuc2lnbmVkICpwb3J0LCBTdHJpbmc4ICpwYXRoKSB7CisgICAgaG9zdC0+c2V0VG8oIiIpOworICAgICpwb3J0ID0gMDsKKyAgICBwYXRoLT5zZXRUbygiIik7CisKKyAgICBpZiAoc3RybmNhc2VjbXAoImh0dHA6Ly8iLCB1cmwsIDcpKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBjb25zdCBjaGFyICpzbGFzaFBvcyA9IHN0cmNocigmdXJsWzddLCAnLycpOworCisgICAgaWYgKHNsYXNoUG9zID09IE5VTEwpIHsKKyAgICAgICAgaG9zdC0+c2V0VG8oJnVybFs3XSk7CisgICAgICAgIHBhdGgtPnNldFRvKCIvIik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaG9zdC0+c2V0VG8oJnVybFs3XSwgc2xhc2hQb3MgLSAmdXJsWzddKTsKKyAgICAgICAgcGF0aC0+c2V0VG8oc2xhc2hQb3MpOworICAgIH0KKworICAgIGNoYXIgKmNvbG9uUG9zID0gc3RyY2hyKGhvc3QtPnN0cmluZygpLCAnOicpOworCisgICAgaWYgKGNvbG9uUG9zICE9IE5VTEwpIHsKKyAgICAgICAgdW5zaWduZWQgbG9uZyB4OworICAgICAgICBpZiAoIVBhcnNlU2luZ2xlVW5zaWduZWRMb25nKGNvbG9uUG9zICsgMSwgJngpIHx8IHggPj0gNjU1MzYpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgICpwb3J0ID0geDsKKworICAgICAgICBzaXplX3QgY29sb25PZmZzZXQgPSBjb2xvblBvcyAtIGhvc3QtPnN0cmluZygpOworICAgICAgICBTdHJpbmc4IHRtcChob3N0LT5zdHJpbmcoKSwgY29sb25PZmZzZXQpOworICAgICAgICAqaG9zdCA9IHRtcDsKKyAgICB9IGVsc2UgeworICAgICAgICAqcG9ydCA9IDgwOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitOdUhUVFBEYXRhU291cmNlOjpOdUhUVFBEYXRhU291cmNlKCkKKyAgICA6IG1TdGF0ZShESVNDT05ORUNURUQpLAorICAgICAgbVBvcnQoMCksCisgICAgICBtT2Zmc2V0KDApLAorICAgICAgbUNvbnRlbnRMZW5ndGgoMCksCisgICAgICBtQ29udGVudExlbmd0aFZhbGlkKGZhbHNlKSB7Cit9CisKK051SFRUUERhdGFTb3VyY2U6On5OdUhUVFBEYXRhU291cmNlKCkgeworfQorCitzdGF0dXNfdCBOdUhUVFBEYXRhU291cmNlOjpjb25uZWN0KAorICAgICAgICBjb25zdCBjaGFyICp1cmksCisgICAgICAgIGNvbnN0IEtleWVkVmVjdG9yPFN0cmluZzgsIFN0cmluZzg+ICpvdmVycmlkZXMsCisgICAgICAgIG9mZl90IG9mZnNldCkgeworICAgIFN0cmluZzggaGVhZGVyczsKKyAgICBNYWtlRnVsbEhlYWRlcnMob3ZlcnJpZGVzLCAmaGVhZGVycyk7CisKKyAgICByZXR1cm4gY29ubmVjdCh1cmksIGhlYWRlcnMsIG9mZnNldCk7Cit9CisKK3N0YXR1c190IE51SFRUUERhdGFTb3VyY2U6OmNvbm5lY3QoCisgICAgICAgIGNvbnN0IGNoYXIgKnVyaSwKKyAgICAgICAgY29uc3QgU3RyaW5nOCAmaGVhZGVycywKKyAgICAgICAgb2ZmX3Qgb2Zmc2V0KSB7CisgICAgU3RyaW5nOCBob3N0LCBwYXRoOworICAgIHVuc2lnbmVkIHBvcnQ7CisgICAgaWYgKCFQYXJzZVVSTCh1cmksICZob3N0LCAmcG9ydCwgJnBhdGgpKSB7CisgICAgICAgIHJldHVybiBFUlJPUl9NQUxGT1JNRUQ7CisgICAgfQorCisgICAgcmV0dXJuIGNvbm5lY3QoaG9zdCwgcG9ydCwgcGF0aCwgaGVhZGVycywgb2Zmc2V0KTsKK30KKworc3RhdHVzX3QgTnVIVFRQRGF0YVNvdXJjZTo6Y29ubmVjdCgKKyAgICAgICAgY29uc3QgY2hhciAqaG9zdCwgdW5zaWduZWQgcG9ydCwgY29uc3QgY2hhciAqcGF0aCwKKyAgICAgICAgY29uc3QgU3RyaW5nOCAmaGVhZGVycywKKyAgICAgICAgb2ZmX3Qgb2Zmc2V0KSB7CisgICAgTE9HSSgiY29ubmVjdCB0byAlczoldSVzIEAlbGQiLCBob3N0LCBwb3J0LCBwYXRoLCBvZmZzZXQpOworCisgICAgYm9vbCBuZWVkc1RvUmVjb25uZWN0ID0gdHJ1ZTsKKworICAgIGlmIChtU3RhdGUgPT0gQ09OTkVDVEVEICYmIGhvc3QgPT0gbUhvc3QgJiYgcG9ydCA9PSBtUG9ydAorICAgICAgICAgICAgJiYgb2Zmc2V0ID09IG1PZmZzZXQpIHsKKyAgICAgICAgaWYgKG1Db250ZW50TGVuZ3RoVmFsaWQgJiYgbU9mZnNldCA9PSBtQ29udGVudExlbmd0aCkgeworICAgICAgICAgICAgTE9HSSgiRGlkbid0IGhhdmUgdG8gcmVjb25uZWN0LCBvbGQgb25lJ3Mgc3RpbGwgZ29vZC4iKTsKKyAgICAgICAgICAgIG5lZWRzVG9SZWNvbm5lY3QgPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIG1Ib3N0ID0gaG9zdDsKKyAgICBtUG9ydCA9IHBvcnQ7CisgICAgbVBhdGggPSBwYXRoOworICAgIG1IZWFkZXJzID0gaGVhZGVyczsKKworICAgIHN0YXR1c190IGVyciA9IE9LOworCisgICAgbVN0YXRlID0gQ09OTkVDVElORzsKKworICAgIGlmIChuZWVkc1RvUmVjb25uZWN0KSB7CisgICAgICAgIG1IVFRQLmRpc2Nvbm5lY3QoKTsKKyAgICAgICAgZXJyID0gbUhUVFAuY29ubmVjdChob3N0LCBwb3J0KTsKKyAgICB9CisKKyAgICBpZiAoZXJyICE9IE9LKSB7CisgICAgICAgIG1TdGF0ZSA9IERJU0NPTk5FQ1RFRDsKKyAgICB9IGVsc2UgaWYgKG1TdGF0ZSAhPSBDT05ORUNUSU5HKSB7CisgICAgICAgIGVyciA9IFVOS05PV05fRVJST1I7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbVN0YXRlID0gQ09OTkVDVEVEOworCisgICAgICAgIG1PZmZzZXQgPSBvZmZzZXQ7CisgICAgICAgIG1Db250ZW50TGVuZ3RoID0gMDsKKyAgICAgICAgbUNvbnRlbnRMZW5ndGhWYWxpZCA9IGZhbHNlOworCisgICAgICAgIFN0cmluZzggcmVxdWVzdCgiR0VUICIpOworICAgICAgICByZXF1ZXN0LmFwcGVuZChtUGF0aCk7CisgICAgICAgIHJlcXVlc3QuYXBwZW5kKCIgSFRUUC8xLjFcclxuIik7CisgICAgICAgIHJlcXVlc3QuYXBwZW5kKCJIb3N0OiAiKTsKKyAgICAgICAgcmVxdWVzdC5hcHBlbmQobUhvc3QpOworICAgICAgICByZXF1ZXN0LmFwcGVuZCgiXHJcbiIpOworCisgICAgICAgIGlmIChvZmZzZXQgIT0gMCkgeworICAgICAgICAgICAgY2hhciByYW5nZUhlYWRlclsxMjhdOworICAgICAgICAgICAgc3ByaW50ZihyYW5nZUhlYWRlciwgIlJhbmdlOiBieXRlcz0lbGQtXHJcbiIsIG9mZnNldCk7CisgICAgICAgICAgICByZXF1ZXN0LmFwcGVuZChyYW5nZUhlYWRlcik7CisgICAgICAgIH0KKworICAgICAgICByZXF1ZXN0LmFwcGVuZChtSGVhZGVycyk7CisgICAgICAgIHJlcXVlc3QuYXBwZW5kKCJcclxuIik7CisKKyAgICAgICAgaW50IGh0dHBTdGF0dXM7CisgICAgICAgIGlmICgoZXJyID0gbUhUVFAuc2VuZChyZXF1ZXN0LnN0cmluZygpLCByZXF1ZXN0LnNpemUoKSkpICE9IE9LCisgICAgICAgICAgICAgICAgfHwgKGVyciA9IG1IVFRQLnJlY2VpdmVfaGVhZGVyKCZodHRwU3RhdHVzKSkgIT0gT0spIHsKKyAgICAgICAgICAgIG1IVFRQLmRpc2Nvbm5lY3QoKTsKKyAgICAgICAgICAgIG1TdGF0ZSA9IERJU0NPTk5FQ1RFRDsKKyAgICAgICAgICAgIHJldHVybiBlcnI7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaHR0cFN0YXR1cyA9PSAzMDIpIHsKKyAgICAgICAgICAgIHN0cmluZyB2YWx1ZTsKKyAgICAgICAgICAgIENIRUNLKG1IVFRQLmZpbmRfaGVhZGVyX3ZhbHVlKCJMb2NhdGlvbiIsICZ2YWx1ZSkpOworCisgICAgICAgICAgICBtU3RhdGUgPSBESVNDT05ORUNURUQ7CisKKyAgICAgICAgICAgIG1IVFRQLmRpc2Nvbm5lY3QoKTsKKworICAgICAgICAgICAgcmV0dXJuIGNvbm5lY3QodmFsdWUuY19zdHIoKSwgaGVhZGVycywgb2Zmc2V0KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChodHRwU3RhdHVzIDwgMjAwIHx8IGh0dHBTdGF0dXMgPj0gMzAwKSB7CisgICAgICAgICAgICBtU3RhdGUgPSBESVNDT05ORUNURUQ7CisgICAgICAgICAgICBtSFRUUC5kaXNjb25uZWN0KCk7CisKKyAgICAgICAgICAgIHJldHVybiBFUlJPUl9JTzsKKyAgICAgICAgfQorCisgICAgICAgIGFwcGx5VGltZW91dFJlc3BvbnNlKCk7CisKKyAgICAgICAgaWYgKG9mZnNldCA9PSAwKSB7CisgICAgICAgICAgICBzdHJpbmcgdmFsdWU7CisgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHg7CisgICAgICAgICAgICBpZiAobUhUVFAuZmluZF9oZWFkZXJfdmFsdWUoc3RyaW5nKCJDb250ZW50LUxlbmd0aCIpLCAmdmFsdWUpCisgICAgICAgICAgICAgICAgICAgICYmIFBhcnNlU2luZ2xlVW5zaWduZWRMb25nKHZhbHVlLmNfc3RyKCksICZ4KSkgeworICAgICAgICAgICAgICAgIG1Db250ZW50TGVuZ3RoID0gKG9mZl90KXg7CisgICAgICAgICAgICAgICAgbUNvbnRlbnRMZW5ndGhWYWxpZCA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzdHJpbmcgdmFsdWU7CisgICAgICAgICAgICB1bnNpZ25lZCBsb25nIHg7CisgICAgICAgICAgICBpZiAobUhUVFAuZmluZF9oZWFkZXJfdmFsdWUoc3RyaW5nKCJDb250ZW50LVJhbmdlIiksICZ2YWx1ZSkpIHsKKyAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzbGFzaFBvcyA9IHN0cmNocih2YWx1ZS5jX3N0cigpLCAnLycpOworICAgICAgICAgICAgICAgIGlmIChzbGFzaFBvcyAhPSBOVUxMCisgICAgICAgICAgICAgICAgICAgICAgICAmJiBQYXJzZVNpbmdsZVVuc2lnbmVkTG9uZyhzbGFzaFBvcyArIDEsICZ4KSkgeworICAgICAgICAgICAgICAgICAgICBtQ29udGVudExlbmd0aCA9IHg7CisgICAgICAgICAgICAgICAgICAgIG1Db250ZW50TGVuZ3RoVmFsaWQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBlcnI7Cit9CisKK3ZvaWQgTnVIVFRQRGF0YVNvdXJjZTo6ZGlzY29ubmVjdCgpIHsKKyAgICBpZiAobVN0YXRlID09IENPTk5FQ1RJTkcgfHwgbVN0YXRlID09IENPTk5FQ1RFRCkgeworICAgICAgICBtSFRUUC5kaXNjb25uZWN0KCk7CisgICAgfQorICAgIG1TdGF0ZSA9IERJU0NPTk5FQ1RFRDsKK30KKworc3RhdHVzX3QgTnVIVFRQRGF0YVNvdXJjZTo6aW5pdENoZWNrKCkgY29uc3QgeworICAgIHJldHVybiBtU3RhdGUgPT0gQ09OTkVDVEVEID8gT0sgOiBOT19JTklUOworfQorCitzc2l6ZV90IE51SFRUUERhdGFTb3VyY2U6OnJlYWRBdChvZmZfdCBvZmZzZXQsIHZvaWQgKmRhdGEsIHNpemVfdCBzaXplKSB7CisgICAgTE9HVigicmVhZEF0IG9mZnNldCAlbGQsIHNpemUgJWQiLCBvZmZzZXQsIHNpemUpOworCisgICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKKworICAgIGlmIChvZmZzZXQgIT0gbU9mZnNldCkgeworICAgICAgICBTdHJpbmc4IGhvc3QgPSBtSG9zdDsKKyAgICAgICAgU3RyaW5nOCBwYXRoID0gbVBhdGg7CisgICAgICAgIFN0cmluZzggaGVhZGVycyA9IG1IZWFkZXJzOworICAgICAgICBzdGF0dXNfdCBlcnIgPSBjb25uZWN0KGhvc3QsIG1Qb3J0LCBwYXRoLCBoZWFkZXJzLCBvZmZzZXQpOworCisgICAgICAgIGlmIChlcnIgIT0gT0spIHsKKyAgICAgICAgICAgIHJldHVybiBlcnI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobUNvbnRlbnRMZW5ndGhWYWxpZCkgeworICAgICAgICBzaXplX3QgYXZhaWwgPQorICAgICAgICAgICAgKG9mZnNldCA+PSBtQ29udGVudExlbmd0aCkgPyAwIDogbUNvbnRlbnRMZW5ndGggLSBvZmZzZXQ7CisKKyAgICAgICAgaWYgKHNpemUgPiBhdmFpbCkgeworICAgICAgICAgICAgc2l6ZSA9IGF2YWlsOworICAgICAgICB9CisgICAgfQorCisgICAgc2l6ZV90IG51bUJ5dGVzUmVhZCA9IDA7CisgICAgd2hpbGUgKG51bUJ5dGVzUmVhZCA8IHNpemUpIHsKKyAgICAgICAgc3NpemVfdCBuID0KKyAgICAgICAgICAgIG1IVFRQLnJlY2VpdmUoKHVpbnQ4X3QgKilkYXRhICsgbnVtQnl0ZXNSZWFkLCBzaXplIC0gbnVtQnl0ZXNSZWFkKTsKKworICAgICAgICBpZiAobiA8IDApIHsKKyAgICAgICAgICAgIHJldHVybiBuOworICAgICAgICB9CisKKyAgICAgICAgbnVtQnl0ZXNSZWFkICs9IChzaXplX3QpbjsKKworICAgICAgICBpZiAobiA9PSAwKSB7CisgICAgICAgICAgICBpZiAobUNvbnRlbnRMZW5ndGhWYWxpZCkgeworICAgICAgICAgICAgICAgIC8vIFdlIGtub3cgdGhlIGNvbnRlbnQgbGVuZ3RoIGFuZCBtYWRlIHN1cmUgbm90IHRvIHJlYWQgYmV5b25kCisgICAgICAgICAgICAgICAgLy8gaXQgYW5kIHlldCB0aGUgc2VydmVyIGNsb3NlZCB0aGUgY29ubmVjdGlvbiBvbiB1cy4KKyAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JfSU87CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgbU9mZnNldCArPSBudW1CeXRlc1JlYWQ7CisKKyAgICByZXR1cm4gbnVtQnl0ZXNSZWFkOworfQorCitzdGF0dXNfdCBOdUhUVFBEYXRhU291cmNlOjpnZXRTaXplKG9mZl90ICpzaXplKSB7CisgICAgKnNpemUgPSAwOworCisgICAgaWYgKG1TdGF0ZSAhPSBDT05ORUNURUQpIHsKKyAgICAgICAgcmV0dXJuIEVSUk9SX0lPOworICAgIH0KKworICAgIGlmIChtQ29udGVudExlbmd0aFZhbGlkKSB7CisgICAgICAgICpzaXplID0gbUNvbnRlbnRMZW5ndGg7CisgICAgICAgIHJldHVybiBPSzsKKyAgICB9CisKKyAgICByZXR1cm4gRVJST1JfVU5TVVBQT1JURUQ7Cit9CisKK3VpbnQzMl90IE51SFRUUERhdGFTb3VyY2U6OmZsYWdzKCkgeworICAgIHJldHVybiBrV2FudHNQcmVmZXRjaGluZzsKK30KKworLy8gc3RhdGljCit2b2lkIE51SFRUUERhdGFTb3VyY2U6Ok1ha2VGdWxsSGVhZGVycygKKyAgICAgICAgY29uc3QgS2V5ZWRWZWN0b3I8U3RyaW5nOCwgU3RyaW5nOD4gKm92ZXJyaWRlcywgU3RyaW5nOCAqaGVhZGVycykgeworICAgIGhlYWRlcnMtPnNldFRvKCIiKTsKKworICAgIGhlYWRlcnMtPmFwcGVuZCgiVXNlci1BZ2VudDogc3RhZ2VmcmlnaHQvMS4xIChMaW51eDtBbmRyb2lkICIpOworCisjaWYgKFBST1BFUlRZX1ZBTFVFX01BWCA8IDgpCisjZXJyb3IgIlBST1BFUlRZX1ZBTFVFX01BWCBtdXN0IGJlIGF0IGxlYXN0IDgiCisjZW5kaWYKKworICAgIGNoYXIgdmFsdWVbUFJPUEVSVFlfVkFMVUVfTUFYXTsKKyAgICBwcm9wZXJ0eV9nZXQoInJvLmJ1aWxkLnZlcnNpb24ucmVsZWFzZSIsIHZhbHVlLCAiVW5rbm93biIpOworICAgIGhlYWRlcnMtPmFwcGVuZCh2YWx1ZSk7CisgICAgaGVhZGVycy0+YXBwZW5kKCIpXHJcbiIpOworCisgICAgaWYgKG92ZXJyaWRlcyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG92ZXJyaWRlcy0+c2l6ZSgpOyArK2kpIHsKKyAgICAgICAgU3RyaW5nOCBsaW5lOworICAgICAgICBsaW5lLmFwcGVuZChvdmVycmlkZXMtPmtleUF0KGkpKTsKKyAgICAgICAgbGluZS5hcHBlbmQoIjogIik7CisgICAgICAgIGxpbmUuYXBwZW5kKG92ZXJyaWRlcy0+dmFsdWVBdChpKSk7CisgICAgICAgIGxpbmUuYXBwZW5kKCJcclxuIik7CisKKyAgICAgICAgaGVhZGVycy0+YXBwZW5kKGxpbmUpOworICAgIH0KK30KKwordm9pZCBOdUhUVFBEYXRhU291cmNlOjphcHBseVRpbWVvdXRSZXNwb25zZSgpIHsKKyAgICBzdHJpbmcgdGltZW91dDsKKyAgICBpZiAobUhUVFAuZmluZF9oZWFkZXJfdmFsdWUoIlgtU29ja2V0VGltZW91dCIsICZ0aW1lb3V0KSkgeworICAgICAgICBjb25zdCBjaGFyICpzID0gdGltZW91dC5jX3N0cigpOworICAgICAgICBjaGFyICplbmQ7CisgICAgICAgIGxvbmcgdG1wID0gc3RydG9sKHMsICZlbmQsIDEwKTsKKyAgICAgICAgaWYgKGVuZCA9PSBzIHx8ICplbmQgIT0gJ1wwJykgeworICAgICAgICAgICAgTE9HVygiSWxsZWdhbCBYLVNvY2tldFRpbWVvdXQgdmFsdWUgZ2l2ZW4uIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBMT0dJKCJvdmVycmlkaW5nIGRlZmF1bHQgdGltZW91dCwgbmV3IHRpbWVvdXQgaXMgJWxkIHNlY29uZHMiLCB0bXApOworICAgICAgICBtSFRUUC5zZXRSZWNlaXZlVGltZW91dCh0bXApOworICAgIH0KK30KKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L09NWENvZGVjLmNwcCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L09NWENvZGVjLmNwcAppbmRleCA2OWRhN2VmLi5lZmFhYjViIDEwMDY0NAotLS0gYS9tZWRpYS9saWJzdGFnZWZyaWdodC9PTVhDb2RlYy5jcHAKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvT01YQ29kZWMuY3BwCkBAIC0xOSwxMyArMTksMTYgQEAKICNpbmNsdWRlIDx1dGlscy9Mb2cuaD4KIAogI2luY2x1ZGUgImluY2x1ZGUvQUFDRGVjb2Rlci5oIgorI2luY2x1ZGUgImluY2x1ZGUvQUFDRW5jb2Rlci5oIgogI2luY2x1ZGUgImluY2x1ZGUvQU1STkJEZWNvZGVyLmgiCiAjaW5jbHVkZSAiaW5jbHVkZS9BTVJOQkVuY29kZXIuaCIKICNpbmNsdWRlICJpbmNsdWRlL0FNUldCRGVjb2Rlci5oIgorI2luY2x1ZGUgImluY2x1ZGUvQU1SV0JFbmNvZGVyLmgiCiAjaW5jbHVkZSAiaW5jbHVkZS9BVkNEZWNvZGVyLmgiCiAjaW5jbHVkZSAiaW5jbHVkZS9NNHZIMjYzRGVjb2Rlci5oIgogI2luY2x1ZGUgImluY2x1ZGUvTVAzRGVjb2Rlci5oIgogI2luY2x1ZGUgImluY2x1ZGUvVm9yYmlzRGVjb2Rlci5oIgorI2luY2x1ZGUgImluY2x1ZGUvVlBYRGVjb2Rlci5oIgogCiAjaW5jbHVkZSAiaW5jbHVkZS9FU0RTLmgiCiAKQEAgLTYwLDYgKzYzLDExIEBACiAgICAgcmV0dXJuIG5ldyBuYW1lKHNvdXJjZSk7IFwKIH0KIAorI2RlZmluZSBGQUNUT1JZX0NSRUFURV9FTkNPREVSKG5hbWUpIFwKK3N0YXRpYyBzcDxNZWRpYVNvdXJjZT4gTWFrZSMjbmFtZShjb25zdCBzcDxNZWRpYVNvdXJjZT4gJnNvdXJjZSwgY29uc3Qgc3A8TWV0YURhdGE+ICZtZXRhKSB7IFwKKyAgICByZXR1cm4gbmV3IG5hbWUoc291cmNlLCBtZXRhKTsgXAorfQorCiAjZGVmaW5lIEZBQ1RPUllfUkVGKG5hbWUpIHsgI25hbWUsIE1ha2UjI25hbWUgfSwKIAogRkFDVE9SWV9DUkVBVEUoTVAzRGVjb2RlcikKQEAgLTY5LDcgKzc3LDMzIEBACiBGQUNUT1JZX0NSRUFURShBVkNEZWNvZGVyKQogRkFDVE9SWV9DUkVBVEUoTTR2SDI2M0RlY29kZXIpCiBGQUNUT1JZX0NSRUFURShWb3JiaXNEZWNvZGVyKQotRkFDVE9SWV9DUkVBVEUoQU1STkJFbmNvZGVyKQorRkFDVE9SWV9DUkVBVEUoVlBYRGVjb2RlcikKK0ZBQ1RPUllfQ1JFQVRFX0VOQ09ERVIoQU1STkJFbmNvZGVyKQorRkFDVE9SWV9DUkVBVEVfRU5DT0RFUihBTVJXQkVuY29kZXIpCitGQUNUT1JZX0NSRUFURV9FTkNPREVSKEFBQ0VuY29kZXIpCisKK3N0YXRpYyBzcDxNZWRpYVNvdXJjZT4gSW5zdGFudGlhdGVTb2Z0d2FyZUVuY29kZXIoCisgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IHNwPE1lZGlhU291cmNlPiAmc291cmNlLAorICAgICAgICBjb25zdCBzcDxNZXRhRGF0YT4gJm1ldGEpIHsKKyAgICBzdHJ1Y3QgRmFjdG9yeUluZm8geworICAgICAgICBjb25zdCBjaGFyICpuYW1lOworICAgICAgICBzcDxNZWRpYVNvdXJjZT4gKCpDcmVhdGVGdW5jKShjb25zdCBzcDxNZWRpYVNvdXJjZT4gJiwgY29uc3Qgc3A8TWV0YURhdGE+ICYpOworICAgIH07CisKKyAgICBzdGF0aWMgY29uc3QgRmFjdG9yeUluZm8ga0ZhY3RvcnlJbmZvW10gPSB7CisgICAgICAgIEZBQ1RPUllfUkVGKEFNUk5CRW5jb2RlcikKKyAgICAgICAgRkFDVE9SWV9SRUYoQU1SV0JFbmNvZGVyKQorICAgICAgICBGQUNUT1JZX1JFRihBQUNFbmNvZGVyKQorICAgIH07CisgICAgZm9yIChzaXplX3QgaSA9IDA7CisgICAgICAgICBpIDwgc2l6ZW9mKGtGYWN0b3J5SW5mbykgLyBzaXplb2Yoa0ZhY3RvcnlJbmZvWzBdKTsgKytpKSB7CisgICAgICAgIGlmICghc3RyY21wKG5hbWUsIGtGYWN0b3J5SW5mb1tpXS5uYW1lKSkgeworICAgICAgICAgICAgcmV0dXJuICgqa0ZhY3RvcnlJbmZvW2ldLkNyZWF0ZUZ1bmMpKHNvdXJjZSwgbWV0YSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gTlVMTDsKK30KIAogc3RhdGljIHNwPE1lZGlhU291cmNlPiBJbnN0YW50aWF0ZVNvZnR3YXJlQ29kZWMoCiAgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IHNwPE1lZGlhU291cmNlPiAmc291cmNlKSB7CkBAIC04Niw3ICsxMjAsNyBAQAogICAgICAgICBGQUNUT1JZX1JFRihBVkNEZWNvZGVyKQogICAgICAgICBGQUNUT1JZX1JFRihNNHZIMjYzRGVjb2RlcikKICAgICAgICAgRkFDVE9SWV9SRUYoVm9yYmlzRGVjb2RlcikKLSAgICAgICAgRkFDVE9SWV9SRUYoQU1STkJFbmNvZGVyKQorICAgICAgICBGQUNUT1JZX1JFRihWUFhEZWNvZGVyKQogICAgIH07CiAgICAgZm9yIChzaXplX3QgaSA9IDA7CiAgICAgICAgICBpIDwgc2l6ZW9mKGtGYWN0b3J5SW5mbykgLyBzaXplb2Yoa0ZhY3RvcnlJbmZvWzBdKTsgKytpKSB7CkBAIC0xMTUsMzQgKzE0OSw0NCBAQAogICAgIHsgTUVESUFfTUlNRVRZUEVfQVVESU9fQUFDLCAiT01YLlRJLkFBQy5kZWNvZGUiIH0sCiAgICAgeyBNRURJQV9NSU1FVFlQRV9BVURJT19BQUMsICJBQUNEZWNvZGVyIiB9LAogLy8gICAgeyBNRURJQV9NSU1FVFlQRV9BVURJT19BQUMsICJPTVguUFYuYWFjZGVjIiB9LAorICAgIHsgTUVESUFfTUlNRVRZUEVfVklERU9fTVBFRzQsICJPTVgucWNvbS43eDMwLnZpZGVvLmRlY29kZXIubXBlZzQiIH0sCiAgICAgeyBNRURJQV9NSU1FVFlQRV9WSURFT19NUEVHNCwgIk9NWC5xY29tLnZpZGVvLmRlY29kZXIubXBlZzQiIH0sCiAgICAgeyBNRURJQV9NSU1FVFlQRV9WSURFT19NUEVHNCwgIk9NWC5USS5WaWRlby5EZWNvZGVyIiB9LAogICAgIHsgTUVESUFfTUlNRVRZUEVfVklERU9fTVBFRzQsICJNNHZIMjYzRGVjb2RlciIgfSwKIC8vICAgIHsgTUVESUFfTUlNRVRZUEVfVklERU9fTVBFRzQsICJPTVguUFYubXBlZzRkZWMiIH0sCisgICAgeyBNRURJQV9NSU1FVFlQRV9WSURFT19IMjYzLCAiT01YLnFjb20uN3gzMC52aWRlby5kZWNvZGVyLmgyNjMiIH0sCiAgICAgeyBNRURJQV9NSU1FVFlQRV9WSURFT19IMjYzLCAiT01YLnFjb20udmlkZW8uZGVjb2Rlci5oMjYzIiB9LAogICAgIHsgTUVESUFfTUlNRVRZUEVfVklERU9fSDI2MywgIk00dkgyNjNEZWNvZGVyIiB9LAogLy8gICAgeyBNRURJQV9NSU1FVFlQRV9WSURFT19IMjYzLCAiT01YLlBWLmgyNjNkZWMiIH0sCisgICAgeyBNRURJQV9NSU1FVFlQRV9WSURFT19BVkMsICJPTVgucWNvbS43eDMwLnZpZGVvLmRlY29kZXIuYXZjIiB9LAogICAgIHsgTUVESUFfTUlNRVRZUEVfVklERU9fQVZDLCAiT01YLnFjb20udmlkZW8uZGVjb2Rlci5hdmMiIH0sCiAgICAgeyBNRURJQV9NSU1FVFlQRV9WSURFT19BVkMsICJPTVguVEkuVmlkZW8uRGVjb2RlciIgfSwKICAgICB7IE1FRElBX01JTUVUWVBFX1ZJREVPX0FWQywgIkFWQ0RlY29kZXIiIH0sCiAvLyAgICB7IE1FRElBX01JTUVUWVBFX1ZJREVPX0FWQywgIk9NWC5QVi5hdmNkZWMiIH0sCiAgICAgeyBNRURJQV9NSU1FVFlQRV9BVURJT19WT1JCSVMsICJWb3JiaXNEZWNvZGVyIiB9LAorICAgIHsgTUVESUFfTUlNRVRZUEVfVklERU9fVlBYLCAiVlBYRGVjb2RlciIgfSwKIH07CiAKIHN0YXRpYyBjb25zdCBDb2RlY0luZm8ga0VuY29kZXJJbmZvW10gPSB7CiAgICAgeyBNRURJQV9NSU1FVFlQRV9BVURJT19BTVJfTkIsICJPTVguVEkuQU1SLmVuY29kZSIgfSwKICAgICB7IE1FRElBX01JTUVUWVBFX0FVRElPX0FNUl9OQiwgIkFNUk5CRW5jb2RlciIgfSwKICAgICB7IE1FRElBX01JTUVUWVBFX0FVRElPX0FNUl9XQiwgIk9NWC5USS5XQkFNUi5lbmNvZGUiIH0sCisgICAgeyBNRURJQV9NSU1FVFlQRV9BVURJT19BTVJfV0IsICJBTVJXQkVuY29kZXIiIH0sCiAgICAgeyBNRURJQV9NSU1FVFlQRV9BVURJT19BQUMsICJPTVguVEkuQUFDLmVuY29kZSIgfSwKLSAgICB7IE1FRElBX01JTUVUWVBFX0FVRElPX0FBQywgIk9NWC5QVi5hYWNlbmMiIH0sCisgICAgeyBNRURJQV9NSU1FVFlQRV9BVURJT19BQUMsICJBQUNFbmNvZGVyIiB9LAorLy8gICAgeyBNRURJQV9NSU1FVFlQRV9BVURJT19BQUMsICJPTVguUFYuYWFjZW5jIiB9LAorICAgIHsgTUVESUFfTUlNRVRZUEVfVklERU9fTVBFRzQsICJPTVgucWNvbS43eDMwLnZpZGVvLmVuY29kZXIubXBlZzQiIH0sCiAgICAgeyBNRURJQV9NSU1FVFlQRV9WSURFT19NUEVHNCwgIk9NWC5xY29tLnZpZGVvLmVuY29kZXIubXBlZzQiIH0sCiAgICAgeyBNRURJQV9NSU1FVFlQRV9WSURFT19NUEVHNCwgIk9NWC5USS5WaWRlby5lbmNvZGVyIiB9LAotICAgIHsgTUVESUFfTUlNRVRZUEVfVklERU9fTVBFRzQsICJPTVguUFYubXBlZzRlbmMiIH0sCisvLyAgICB7IE1FRElBX01JTUVUWVBFX1ZJREVPX01QRUc0LCAiT01YLlBWLm1wZWc0ZW5jIiB9LAorICAgIHsgTUVESUFfTUlNRVRZUEVfVklERU9fSDI2MywgIk9NWC5xY29tLjd4MzAudmlkZW8uZW5jb2Rlci5oMjYzIiB9LAogICAgIHsgTUVESUFfTUlNRVRZUEVfVklERU9fSDI2MywgIk9NWC5xY29tLnZpZGVvLmVuY29kZXIuaDI2MyIgfSwKICAgICB7IE1FRElBX01JTUVUWVBFX1ZJREVPX0gyNjMsICJPTVguVEkuVmlkZW8uZW5jb2RlciIgfSwKLSAgICB7IE1FRElBX01JTUVUWVBFX1ZJREVPX0gyNjMsICJPTVguUFYuaDI2M2VuYyIgfSwKKy8vICAgIHsgTUVESUFfTUlNRVRZUEVfVklERU9fSDI2MywgIk9NWC5QVi5oMjYzZW5jIiB9LAorICAgIHsgTUVESUFfTUlNRVRZUEVfVklERU9fQVZDLCAiT01YLnFjb20uN3gzMC52aWRlby5lbmNvZGVyLmF2YyIgfSwKKyAgICB7IE1FRElBX01JTUVUWVBFX1ZJREVPX0FWQywgIk9NWC5xY29tLnZpZGVvLmVuY29kZXIuYXZjIiB9LAogICAgIHsgTUVESUFfTUlNRVRZUEVfVklERU9fQVZDLCAiT01YLlRJLlZpZGVvLmVuY29kZXIiIH0sCi0gICAgeyBNRURJQV9NSU1FVFlQRV9WSURFT19BVkMsICJPTVguUFYuYXZjZW5jIiB9LAorLy8gICAgeyBNRURJQV9NSU1FVFlQRV9WSURFT19BVkMsICJPTVguUFYuYXZjZW5jIiB9LAogfTsKIAogI3VuZGVmIE9QVElPTkFMCkBAIC0yOTYsMTAgKzM0MCwxNyBAQAogICAgICAgICBxdWlya3MgfD0ga1JlcXVpcmVzQWxsb2NhdGVCdWZmZXJPbklucHV0UG9ydHM7CiAgICAgICAgIHF1aXJrcyB8PSBrUmVxdWlyZXNBbGxvY2F0ZUJ1ZmZlck9uT3V0cHV0UG9ydHM7CiAgICAgfQorICAgIGlmICghc3RybmNtcChjb21wb25lbnROYW1lLCAiT01YLnFjb20uN3gzMC52aWRlby5lbmNvZGVyLiIsIDI4KSkgeworICAgIH0KICAgICBpZiAoIXN0cm5jbXAoY29tcG9uZW50TmFtZSwgIk9NWC5xY29tLnZpZGVvLmRlY29kZXIuIiwgMjMpKSB7CiAgICAgICAgIHF1aXJrcyB8PSBrUmVxdWlyZXNBbGxvY2F0ZUJ1ZmZlck9uT3V0cHV0UG9ydHM7CiAgICAgICAgIHF1aXJrcyB8PSBrRGVmZXJzT3V0cHV0QnVmZmVyQWxsb2NhdGlvbjsKICAgICB9CisgICAgaWYgKCFzdHJuY21wKGNvbXBvbmVudE5hbWUsICJPTVgucWNvbS43eDMwLnZpZGVvLmRlY29kZXIuIiwgMjgpKSB7CisgICAgICAgIHF1aXJrcyB8PSBrUmVxdWlyZXNBbGxvY2F0ZUJ1ZmZlck9uSW5wdXRQb3J0czsKKyAgICAgICAgcXVpcmtzIHw9IGtSZXF1aXJlc0FsbG9jYXRlQnVmZmVyT25PdXRwdXRQb3J0czsKKyAgICAgICAgcXVpcmtzIHw9IGtEZWZlcnNPdXRwdXRCdWZmZXJBbGxvY2F0aW9uOworICAgIH0KIAogICAgIGlmICghc3RybmNtcChjb21wb25lbnROYW1lLCAiT01YLlRJLiIsIDcpKSB7CiAgICAgICAgIC8vIEFwcGFyZW50bHkgSSBtdXN0IG5vdCB1c2UgT01YX1VzZUJ1ZmZlciBvbiBlaXRoZXIgaW5wdXQgb3IKQEAgLTMwOSw2ICszNjAsOSBAQAogCiAgICAgICAgIHF1aXJrcyB8PSBrUmVxdWlyZXNBbGxvY2F0ZUJ1ZmZlck9uSW5wdXRQb3J0czsKICAgICAgICAgcXVpcmtzIHw9IGtSZXF1aXJlc0FsbG9jYXRlQnVmZmVyT25PdXRwdXRQb3J0czsKKyAgICAgICAgaWYgKCFzdHJuY21wKGNvbXBvbmVudE5hbWUsICJPTVguVEkuVmlkZW8uZW5jb2RlciIsIDIwKSkgeworICAgICAgICAgICAgcXVpcmtzIHw9IGtBdm9pZE1lbWNvcHlJbnB1dFJlY29yZGluZ0ZyYW1lczsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlmICghc3RyY21wKGNvbXBvbmVudE5hbWUsICJPTVguVEkuVmlkZW8uRGVjb2RlciIpKSB7CkBAIC0zODQsOCArNDM4LDggQEAKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1hdGNoaW5nQ29kZWNzLnNpemUoKTsgKytpKSB7CiAgICAgICAgIGNvbXBvbmVudE5hbWUgPSBtYXRjaGluZ0NvZGVjc1tpXS5zdHJpbmcoKTsKIAotI2lmIEJVSUxEX1dJVEhfRlVMTF9TVEFHRUZSSUdIVAotICAgICAgICBzcDxNZWRpYVNvdXJjZT4gc29mdHdhcmVDb2RlYyA9CisgICAgICAgIHNwPE1lZGlhU291cmNlPiBzb2Z0d2FyZUNvZGVjID0gY3JlYXRlRW5jb2Rlcj8KKyAgICAgICAgICAgIEluc3RhbnRpYXRlU29mdHdhcmVFbmNvZGVyKGNvbXBvbmVudE5hbWUsIHNvdXJjZSwgbWV0YSk6CiAgICAgICAgICAgICBJbnN0YW50aWF0ZVNvZnR3YXJlQ29kZWMoY29tcG9uZW50TmFtZSwgc291cmNlKTsKIAogICAgICAgICBpZiAoc29mdHdhcmVDb2RlYyAhPSBOVUxMKSB7CkBAIC0zOTMsNyArNDQ3LDYgQEAKIAogICAgICAgICAgICAgcmV0dXJuIHNvZnR3YXJlQ29kZWM7CiAgICAgICAgIH0KLSNlbmRpZgogCiAgICAgICAgIExPR1YoIkF0dGVtcHRpbmcgdG8gYWxsb2NhdGUgT01YIG5vZGUgJyVzJyIsIGNvbXBvbmVudE5hbWUpOwogCkBAIC00OTYsMTEgKzU0OSwxMiBAQAogICAgICAgICAgICAgc2l6ZSAtPSBsZW5ndGg7CiAgICAgICAgIH0KIAotICAgICAgICBMT0dWKCJBVkMgcHJvZmlsZSA9ICVkICglcyksIGxldmVsID0gJWQiLAotICAgICAgICAgICAgIChpbnQpcHJvZmlsZSwgQVZDUHJvZmlsZVRvU3RyaW5nKHByb2ZpbGUpLCAoaW50KWxldmVsIC8gMTApOworICAgICAgICBDT0RFQ19MT0dWKAorICAgICAgICAgICAgICAgICJBVkMgcHJvZmlsZSA9ICVkICglcyksIGxldmVsID0gJWQiLAorICAgICAgICAgICAgICAgIChpbnQpcHJvZmlsZSwgQVZDUHJvZmlsZVRvU3RyaW5nKHByb2ZpbGUpLCBsZXZlbCk7CiAKICAgICAgICAgaWYgKCFzdHJjbXAobUNvbXBvbmVudE5hbWUsICJPTVguVEkuVmlkZW8uRGVjb2RlciIpCi0gICAgICAgICAgICAmJiAocHJvZmlsZSAhPSBrQVZDUHJvZmlsZUJhc2VsaW5lIHx8IGxldmVsID4gMzkpKSB7CisgICAgICAgICAgICAmJiAocHJvZmlsZSAhPSBrQVZDUHJvZmlsZUJhc2VsaW5lIHx8IGxldmVsID4gMzApKSB7CiAgICAgICAgICAgICAvLyBUaGlzIHN0cmVhbSBleGNlZWRzIHRoZSBkZWNvZGVyJ3MgY2FwYWJpbGl0aWVzLiBUaGUgZGVjb2RlcgogICAgICAgICAgICAgLy8gZG9lcyBub3QgaGFuZGxlIHRoaXMgZ3JhY2VmdWxseSBhbmQgd291bGQgY2xvYmJlciB0aGUgaGVhcAogICAgICAgICAgICAgLy8gYW5kIHdyZWFrIGhhdm9jIGluc3RlYWQuLi4KQEAgLTUxMCwyOCArNTY0LDMzIEBACiAgICAgICAgIH0KICAgICB9CiAKKyAgICBpbnQzMl90IGJpdFJhdGUgPSAwOworICAgIGlmIChtSXNFbmNvZGVyKSB7CisgICAgICAgIENIRUNLKG1ldGEtPmZpbmRJbnQzMihrS2V5Qml0UmF0ZSwgJmJpdFJhdGUpKTsKKyAgICB9CiAgICAgaWYgKCFzdHJjYXNlY21wKE1FRElBX01JTUVUWVBFX0FVRElPX0FNUl9OQiwgbU1JTUUpKSB7Ci0gICAgICAgIHNldEFNUkZvcm1hdChmYWxzZSAvKiBpc1dBTVIgKi8pOworICAgICAgICBzZXRBTVJGb3JtYXQoZmFsc2UgLyogaXNXQU1SICovLCBiaXRSYXRlKTsKICAgICB9CiAgICAgaWYgKCFzdHJjYXNlY21wKE1FRElBX01JTUVUWVBFX0FVRElPX0FNUl9XQiwgbU1JTUUpKSB7Ci0gICAgICAgIHNldEFNUkZvcm1hdCh0cnVlIC8qIGlzV0FNUiAqLyk7CisgICAgICAgIHNldEFNUkZvcm1hdCh0cnVlIC8qIGlzV0FNUiAqLywgYml0UmF0ZSk7CiAgICAgfQogICAgIGlmICghc3RyY2FzZWNtcChNRURJQV9NSU1FVFlQRV9BVURJT19BQUMsIG1NSU1FKSkgewogICAgICAgICBpbnQzMl90IG51bUNoYW5uZWxzLCBzYW1wbGVSYXRlOwogICAgICAgICBDSEVDSyhtZXRhLT5maW5kSW50MzIoa0tleUNoYW5uZWxDb3VudCwgJm51bUNoYW5uZWxzKSk7CiAgICAgICAgIENIRUNLKG1ldGEtPmZpbmRJbnQzMihrS2V5U2FtcGxlUmF0ZSwgJnNhbXBsZVJhdGUpKTsKIAotICAgICAgICBzZXRBQUNGb3JtYXQobnVtQ2hhbm5lbHMsIHNhbXBsZVJhdGUpOworICAgICAgICBzZXRBQUNGb3JtYXQobnVtQ2hhbm5lbHMsIHNhbXBsZVJhdGUsIGJpdFJhdGUpOwogICAgIH0KKwogICAgIGlmICghc3RybmNhc2VjbXAobU1JTUUsICJ2aWRlby8iLCA2KSkgewotICAgICAgICBpbnQzMl90IHdpZHRoLCBoZWlnaHQ7Ci0gICAgICAgIGJvb2wgc3VjY2VzcyA9IG1ldGEtPmZpbmRJbnQzMihrS2V5V2lkdGgsICZ3aWR0aCk7Ci0gICAgICAgIHN1Y2Nlc3MgPSBzdWNjZXNzICYmIG1ldGEtPmZpbmRJbnQzMihrS2V5SGVpZ2h0LCAmaGVpZ2h0KTsKLSAgICAgICAgQ0hFQ0soc3VjY2Vzcyk7CiAKICAgICAgICAgaWYgKG1Jc0VuY29kZXIpIHsKLSAgICAgICAgICAgIHNldFZpZGVvSW5wdXRGb3JtYXQobU1JTUUsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICAgICAgc2V0VmlkZW9JbnB1dEZvcm1hdChtTUlNRSwgbWV0YSk7CiAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpbnQzMl90IHdpZHRoLCBoZWlnaHQ7CisgICAgICAgICAgICBib29sIHN1Y2Nlc3MgPSBtZXRhLT5maW5kSW50MzIoa0tleVdpZHRoLCAmd2lkdGgpOworICAgICAgICAgICAgc3VjY2VzcyA9IHN1Y2Nlc3MgJiYgbWV0YS0+ZmluZEludDMyKGtLZXlIZWlnaHQsICZoZWlnaHQpOworICAgICAgICAgICAgQ0hFQ0soc3VjY2Vzcyk7CiAgICAgICAgICAgICBzdGF0dXNfdCBlcnIgPSBzZXRWaWRlb091dHB1dEZvcm1hdCgKICAgICAgICAgICAgICAgICAgICAgbU1JTUUsIHdpZHRoLCBoZWlnaHQpOwogCkBAIC01NzAsNyArNjI5LDggQEAKICAgICB9CiAKICAgICBpZiAoIXN0cmNtcChtQ29tcG9uZW50TmFtZSwgIk9NWC5USS5BTVIuZW5jb2RlIikKLSAgICAgICAgfHwgIXN0cmNtcChtQ29tcG9uZW50TmFtZSwgIk9NWC5USS5XQkFNUi5lbmNvZGUiKSkgeworICAgICAgICB8fCAhc3RyY21wKG1Db21wb25lbnROYW1lLCAiT01YLlRJLldCQU1SLmVuY29kZSIpCisgICAgICAgIHx8ICFzdHJjbXAobUNvbXBvbmVudE5hbWUsICJPTVguVEkuQUFDLmVuY29kZSIpKSB7CiAgICAgICAgIHNldE1pbkJ1ZmZlclNpemUoa1BvcnRJbmRleE91dHB1dCwgODE5Mik7ICAvLyBYWFgKICAgICB9CiAKQEAgLTY4Myw2ICs3NDMsNyBAQAogICAgICAgICBjYXNlIE9NWF9DT0xPUl9Gb3JtYXRDYllDclk6CiAgICAgICAgICAgICByZXR1cm4gd2lkdGggKiBoZWlnaHQgKiAyOwogCisgICAgICAgIGNhc2UgT01YX0NPTE9SX0Zvcm1hdFlVVjQyMFBsYW5hcjoKICAgICAgICAgY2FzZSBPTVhfQ09MT1JfRm9ybWF0WVVWNDIwU2VtaVBsYW5hcjoKICAgICAgICAgICAgIHJldHVybiAod2lkdGggKiBoZWlnaHQgKiAzKSAvIDI7CiAKQEAgLTY5Myw4ICs3NTQsMTcgQEAKIH0KIAogdm9pZCBPTVhDb2RlYzo6c2V0VmlkZW9JbnB1dEZvcm1hdCgKLSAgICAgICAgY29uc3QgY2hhciAqbWltZSwgT01YX1UzMiB3aWR0aCwgT01YX1UzMiBoZWlnaHQpIHsKLSAgICBDT0RFQ19MT0dWKCJzZXRWaWRlb0lucHV0Rm9ybWF0IHdpZHRoPSVsZCwgaGVpZ2h0PSVsZCIsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICBjb25zdCBjaGFyICptaW1lLCBjb25zdCBzcDxNZXRhRGF0YT4mIG1ldGEpIHsKKworICAgIGludDMyX3Qgd2lkdGgsIGhlaWdodCwgZnJhbWVSYXRlLCBiaXRSYXRlLCBzdHJpZGUsIHNsaWNlSGVpZ2h0OworICAgIGJvb2wgc3VjY2VzcyA9IG1ldGEtPmZpbmRJbnQzMihrS2V5V2lkdGgsICZ3aWR0aCk7CisgICAgc3VjY2VzcyA9IHN1Y2Nlc3MgJiYgbWV0YS0+ZmluZEludDMyKGtLZXlIZWlnaHQsICZoZWlnaHQpOworICAgIHN1Y2Nlc3MgPSBzdWNjZXNzICYmIG1ldGEtPmZpbmRJbnQzMihrS2V5U2FtcGxlUmF0ZSwgJmZyYW1lUmF0ZSk7CisgICAgc3VjY2VzcyA9IHN1Y2Nlc3MgJiYgbWV0YS0+ZmluZEludDMyKGtLZXlCaXRSYXRlLCAmYml0UmF0ZSk7CisgICAgc3VjY2VzcyA9IHN1Y2Nlc3MgJiYgbWV0YS0+ZmluZEludDMyKGtLZXlTdHJpZGUsICZzdHJpZGUpOworICAgIHN1Y2Nlc3MgPSBzdWNjZXNzICYmIG1ldGEtPmZpbmRJbnQzMihrS2V5U2xpY2VIZWlnaHQsICZzbGljZUhlaWdodCk7CisgICAgQ0hFQ0soc3VjY2Vzcyk7CisgICAgQ0hFQ0soc3RyaWRlICE9IDApOwogCiAgICAgT01YX1ZJREVPX0NPRElOR1RZUEUgY29tcHJlc3Npb25Gb3JtYXQgPSBPTVhfVklERU9fQ29kaW5nVW51c2VkOwogICAgIGlmICghc3RyY2FzZWNtcChNRURJQV9NSU1FVFlQRV9WSURFT19BVkMsIG1pbWUpKSB7CkBAIC03MTMsMzggKzc4MywxNSBAQAogICAgICAgICBjb2xvckZvcm1hdCA9IE9NWF9DT0xPUl9Gb3JtYXRZQ2JZQ3I7CiAgICAgfQogCisgICAgc3RhdHVzX3QgZXJyOworICAgIE9NWF9QQVJBTV9QT1JUREVGSU5JVElPTlRZUEUgZGVmOworICAgIE9NWF9WSURFT19QT1JUREVGSU5JVElPTlRZUEUgKnZpZGVvX2RlZiA9ICZkZWYuZm9ybWF0LnZpZGVvOworCisgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vIElucHV0IHBvcnQgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwogICAgIENIRUNLX0VRKHNldFZpZGVvUG9ydEZvcm1hdFR5cGUoCiAgICAgICAgICAgICBrUG9ydEluZGV4SW5wdXQsIE9NWF9WSURFT19Db2RpbmdVbnVzZWQsCiAgICAgICAgICAgICBjb2xvckZvcm1hdCksIE9LKTsKIAotICAgIENIRUNLX0VRKHNldFZpZGVvUG9ydEZvcm1hdFR5cGUoCi0gICAgICAgICAgICBrUG9ydEluZGV4T3V0cHV0LCBjb21wcmVzc2lvbkZvcm1hdCwgT01YX0NPTE9SX0Zvcm1hdFVudXNlZCksCi0gICAgICAgICAgICBPSyk7Ci0KLSAgICBPTVhfUEFSQU1fUE9SVERFRklOSVRJT05UWVBFIGRlZjsKLSAgICBJbml0T01YUGFyYW1zKCZkZWYpOwotICAgIGRlZi5uUG9ydEluZGV4ID0ga1BvcnRJbmRleE91dHB1dDsKLQotICAgIE9NWF9WSURFT19QT1JUREVGSU5JVElPTlRZUEUgKnZpZGVvX2RlZiA9ICZkZWYuZm9ybWF0LnZpZGVvOwotCi0gICAgc3RhdHVzX3QgZXJyID0gbU9NWC0+Z2V0UGFyYW1ldGVyKAotICAgICAgICAgICAgbU5vZGUsIE9NWF9JbmRleFBhcmFtUG9ydERlZmluaXRpb24sICZkZWYsIHNpemVvZihkZWYpKTsKLQotICAgIENIRUNLX0VRKGVyciwgT0spOwotICAgIENIRUNLX0VRKGRlZi5lRG9tYWluLCBPTVhfUG9ydERvbWFpblZpZGVvKTsKLQotICAgIHZpZGVvX2RlZi0+bkZyYW1lV2lkdGggPSB3aWR0aDsKLSAgICB2aWRlb19kZWYtPm5GcmFtZUhlaWdodCA9IGhlaWdodDsKLQotICAgIHZpZGVvX2RlZi0+ZUNvbXByZXNzaW9uRm9ybWF0ID0gY29tcHJlc3Npb25Gb3JtYXQ7Ci0gICAgdmlkZW9fZGVmLT5lQ29sb3JGb3JtYXQgPSBPTVhfQ09MT1JfRm9ybWF0VW51c2VkOwotCi0gICAgZXJyID0gbU9NWC0+c2V0UGFyYW1ldGVyKAotICAgICAgICAgICAgbU5vZGUsIE9NWF9JbmRleFBhcmFtUG9ydERlZmluaXRpb24sICZkZWYsIHNpemVvZihkZWYpKTsKLSAgICBDSEVDS19FUShlcnIsIE9LKTsKLQotICAgIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLQogICAgIEluaXRPTVhQYXJhbXMoJmRlZik7CiAgICAgZGVmLm5Qb3J0SW5kZXggPSBrUG9ydEluZGV4SW5wdXQ7CiAKQEAgLTc1MiwzNSArNzk5LDYyIEBACiAgICAgICAgICAgICBtTm9kZSwgT01YX0luZGV4UGFyYW1Qb3J0RGVmaW5pdGlvbiwgJmRlZiwgc2l6ZW9mKGRlZikpOwogICAgIENIRUNLX0VRKGVyciwgT0spOwogCi0gICAgZGVmLm5CdWZmZXJTaXplID0gZ2V0RnJhbWVTaXplKGNvbG9yRm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKLSAgICBDT0RFQ19MT0dWKCJTZXR0aW5nIG5CdWZmZXJTaXplID0gJWxkIiwgZGVmLm5CdWZmZXJTaXplKTsKKyAgICBkZWYubkJ1ZmZlclNpemUgPSBnZXRGcmFtZVNpemUoY29sb3JGb3JtYXQsCisgICAgICAgICAgICBzdHJpZGUgPiAwPyBzdHJpZGU6IC1zdHJpZGUsIHNsaWNlSGVpZ2h0KTsKIAogICAgIENIRUNLX0VRKGRlZi5lRG9tYWluLCBPTVhfUG9ydERvbWFpblZpZGVvKTsKIAogICAgIHZpZGVvX2RlZi0+bkZyYW1lV2lkdGggPSB3aWR0aDsKICAgICB2aWRlb19kZWYtPm5GcmFtZUhlaWdodCA9IGhlaWdodDsKKyAgICB2aWRlb19kZWYtPm5TdHJpZGUgPSBzdHJpZGU7CisgICAgdmlkZW9fZGVmLT5uU2xpY2VIZWlnaHQgPSBzbGljZUhlaWdodDsKKyAgICB2aWRlb19kZWYtPnhGcmFtZXJhdGUgPSAoZnJhbWVSYXRlIDw8IDE2KTsgIC8vIFExNiBmb3JtYXQKICAgICB2aWRlb19kZWYtPmVDb21wcmVzc2lvbkZvcm1hdCA9IE9NWF9WSURFT19Db2RpbmdVbnVzZWQ7CiAgICAgdmlkZW9fZGVmLT5lQ29sb3JGb3JtYXQgPSBjb2xvckZvcm1hdDsKIAotICAgIHZpZGVvX2RlZi0+eEZyYW1lcmF0ZSA9IDI0IDw8IDE2OyAgLy8gWFhYIGNydWNpYWwhCi0KICAgICBlcnIgPSBtT01YLT5zZXRQYXJhbWV0ZXIoCiAgICAgICAgICAgICBtTm9kZSwgT01YX0luZGV4UGFyYW1Qb3J0RGVmaW5pdGlvbiwgJmRlZiwgc2l6ZW9mKGRlZikpOwogICAgIENIRUNLX0VRKGVyciwgT0spOwogCisgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vIE91dHB1dCBwb3J0IC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKyAgICBDSEVDS19FUShzZXRWaWRlb1BvcnRGb3JtYXRUeXBlKAorICAgICAgICAgICAga1BvcnRJbmRleE91dHB1dCwgY29tcHJlc3Npb25Gb3JtYXQsIE9NWF9DT0xPUl9Gb3JtYXRVbnVzZWQpLAorICAgICAgICAgICAgT0spOworICAgIEluaXRPTVhQYXJhbXMoJmRlZik7CisgICAgZGVmLm5Qb3J0SW5kZXggPSBrUG9ydEluZGV4T3V0cHV0OworCisgICAgZXJyID0gbU9NWC0+Z2V0UGFyYW1ldGVyKAorICAgICAgICAgICAgbU5vZGUsIE9NWF9JbmRleFBhcmFtUG9ydERlZmluaXRpb24sICZkZWYsIHNpemVvZihkZWYpKTsKKworICAgIENIRUNLX0VRKGVyciwgT0spOworICAgIENIRUNLX0VRKGRlZi5lRG9tYWluLCBPTVhfUG9ydERvbWFpblZpZGVvKTsKKworICAgIHZpZGVvX2RlZi0+bkZyYW1lV2lkdGggPSB3aWR0aDsKKyAgICB2aWRlb19kZWYtPm5GcmFtZUhlaWdodCA9IGhlaWdodDsKKyAgICB2aWRlb19kZWYtPnhGcmFtZXJhdGUgPSAwOyAgICAgIC8vIE5vIG5lZWQgZm9yIG91dHB1dCBwb3J0CisgICAgdmlkZW9fZGVmLT5uQml0cmF0ZSA9IGJpdFJhdGU7ICAvLyBRMTYgZm9ybWF0CisgICAgdmlkZW9fZGVmLT5lQ29tcHJlc3Npb25Gb3JtYXQgPSBjb21wcmVzc2lvbkZvcm1hdDsKKyAgICB2aWRlb19kZWYtPmVDb2xvckZvcm1hdCA9IE9NWF9DT0xPUl9Gb3JtYXRVbnVzZWQ7CisKKyAgICBlcnIgPSBtT01YLT5zZXRQYXJhbWV0ZXIoCisgICAgICAgICAgICBtTm9kZSwgT01YX0luZGV4UGFyYW1Qb3J0RGVmaW5pdGlvbiwgJmRlZiwgc2l6ZW9mKGRlZikpOworICAgIENIRUNLX0VRKGVyciwgT0spOworCisgICAgLy8vLy8vLy8vLy8vLy8vLy8vLyBDb2RlYy1zcGVjaWZpYyAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAgICBzd2l0Y2ggKGNvbXByZXNzaW9uRm9ybWF0KSB7CiAgICAgICAgIGNhc2UgT01YX1ZJREVPX0NvZGluZ01QRUc0OgogICAgICAgICB7Ci0gICAgICAgICAgICBDSEVDS19FUShzZXR1cE1QRUc0RW5jb2RlclBhcmFtZXRlcnMoKSwgT0spOworICAgICAgICAgICAgQ0hFQ0tfRVEoc2V0dXBNUEVHNEVuY29kZXJQYXJhbWV0ZXJzKG1ldGEpLCBPSyk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgT01YX1ZJREVPX0NvZGluZ0gyNjM6CisgICAgICAgICAgICBDSEVDS19FUShzZXR1cEgyNjNFbmNvZGVyUGFyYW1ldGVycyhtZXRhKSwgT0spOwogICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgY2FzZSBPTVhfVklERU9fQ29kaW5nQVZDOgogICAgICAgICB7Ci0gICAgICAgICAgICBDSEVDS19FUShzZXR1cEFWQ0VuY29kZXJQYXJhbWV0ZXJzKCksIE9LKTsKKyAgICAgICAgICAgIENIRUNLX0VRKHNldHVwQVZDRW5jb2RlclBhcmFtZXRlcnMobWV0YSksIE9LKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKQEAgLTc5MCw3ICs4NjQsMTU5IEBACiAgICAgfQogfQogCi1zdGF0dXNfdCBPTVhDb2RlYzo6c2V0dXBNUEVHNEVuY29kZXJQYXJhbWV0ZXJzKCkgeworc3RhdGljIE9NWF9VMzIgc2V0UEZyYW1lc1NwYWNpbmcoaW50MzJfdCBpRnJhbWVzSW50ZXJ2YWwsIGludDMyX3QgZnJhbWVSYXRlKSB7CisgICAgaWYgKGlGcmFtZXNJbnRlcnZhbCA8IDApIHsKKyAgICAgICAgcmV0dXJuIDB4RkZGRkZGRkY7CisgICAgfSBlbHNlIGlmIChpRnJhbWVzSW50ZXJ2YWwgPT0gMCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgT01YX1UzMiByZXQgPSBmcmFtZVJhdGUgKiBpRnJhbWVzSW50ZXJ2YWw7CisgICAgQ0hFQ0socmV0ID4gMSk7CisgICAgcmV0dXJuIHJldDsKK30KKworc3RhdHVzX3QgT01YQ29kZWM6OnNldHVwRXJyb3JDb3JyZWN0aW9uUGFyYW1ldGVycygpIHsKKyAgICBPTVhfVklERU9fUEFSQU1fRVJST1JDT1JSRUNUSU9OVFlQRSBlcnJvckNvcnJlY3Rpb25UeXBlOworICAgIEluaXRPTVhQYXJhbXMoJmVycm9yQ29ycmVjdGlvblR5cGUpOworICAgIGVycm9yQ29ycmVjdGlvblR5cGUublBvcnRJbmRleCA9IGtQb3J0SW5kZXhPdXRwdXQ7CisKKyAgICBzdGF0dXNfdCBlcnIgPSBtT01YLT5nZXRQYXJhbWV0ZXIoCisgICAgICAgICAgICBtTm9kZSwgT01YX0luZGV4UGFyYW1WaWRlb0Vycm9yQ29ycmVjdGlvbiwKKyAgICAgICAgICAgICZlcnJvckNvcnJlY3Rpb25UeXBlLCBzaXplb2YoZXJyb3JDb3JyZWN0aW9uVHlwZSkpOworICAgIENIRUNLX0VRKGVyciwgT0spOworCisgICAgZXJyb3JDb3JyZWN0aW9uVHlwZS5iRW5hYmxlSEVDID0gT01YX0ZBTFNFOworICAgIGVycm9yQ29ycmVjdGlvblR5cGUuYkVuYWJsZVJlc3luYyA9IE9NWF9UUlVFOworICAgIGVycm9yQ29ycmVjdGlvblR5cGUublJlc3luY2hNYXJrZXJTcGFjaW5nID0gMjU2OworICAgIGVycm9yQ29ycmVjdGlvblR5cGUuYkVuYWJsZURhdGFQYXJ0aXRpb25pbmcgPSBPTVhfRkFMU0U7CisgICAgZXJyb3JDb3JyZWN0aW9uVHlwZS5iRW5hYmxlUlZMQyA9IE9NWF9GQUxTRTsKKworICAgIGVyciA9IG1PTVgtPnNldFBhcmFtZXRlcigKKyAgICAgICAgICAgIG1Ob2RlLCBPTVhfSW5kZXhQYXJhbVZpZGVvRXJyb3JDb3JyZWN0aW9uLAorICAgICAgICAgICAgJmVycm9yQ29ycmVjdGlvblR5cGUsIHNpemVvZihlcnJvckNvcnJlY3Rpb25UeXBlKSk7CisgICAgQ0hFQ0tfRVEoZXJyLCBPSyk7CisgICAgcmV0dXJuIE9LOworfQorCitzdGF0dXNfdCBPTVhDb2RlYzo6c2V0dXBCaXRSYXRlKGludDMyX3QgYml0UmF0ZSkgeworICAgIE9NWF9WSURFT19QQVJBTV9CSVRSQVRFVFlQRSBiaXRyYXRlVHlwZTsKKyAgICBJbml0T01YUGFyYW1zKCZiaXRyYXRlVHlwZSk7CisgICAgYml0cmF0ZVR5cGUublBvcnRJbmRleCA9IGtQb3J0SW5kZXhPdXRwdXQ7CisKKyAgICBzdGF0dXNfdCBlcnIgPSBtT01YLT5nZXRQYXJhbWV0ZXIoCisgICAgICAgICAgICBtTm9kZSwgT01YX0luZGV4UGFyYW1WaWRlb0JpdHJhdGUsCisgICAgICAgICAgICAmYml0cmF0ZVR5cGUsIHNpemVvZihiaXRyYXRlVHlwZSkpOworICAgIENIRUNLX0VRKGVyciwgT0spOworCisgICAgYml0cmF0ZVR5cGUuZUNvbnRyb2xSYXRlID0gT01YX1ZpZGVvX0NvbnRyb2xSYXRlVmFyaWFibGU7CisgICAgYml0cmF0ZVR5cGUublRhcmdldEJpdHJhdGUgPSBiaXRSYXRlOworCisgICAgZXJyID0gbU9NWC0+c2V0UGFyYW1ldGVyKAorICAgICAgICAgICAgbU5vZGUsIE9NWF9JbmRleFBhcmFtVmlkZW9CaXRyYXRlLAorICAgICAgICAgICAgJmJpdHJhdGVUeXBlLCBzaXplb2YoYml0cmF0ZVR5cGUpKTsKKyAgICBDSEVDS19FUShlcnIsIE9LKTsKKyAgICByZXR1cm4gT0s7Cit9CisKK3N0YXR1c190IE9NWENvZGVjOjpnZXRWaWRlb1Byb2ZpbGVMZXZlbCgKKyAgICAgICAgY29uc3Qgc3A8TWV0YURhdGE+JiBtZXRhLAorICAgICAgICBjb25zdCBDb2RlY1Byb2ZpbGVMZXZlbCYgZGVmYXVsdFByb2ZpbGVMZXZlbCwKKyAgICAgICAgQ29kZWNQcm9maWxlTGV2ZWwgJnByb2ZpbGVMZXZlbCkgeworICAgIENPREVDX0xPR1YoIkRlZmF1bHQgcHJvZmlsZTogJWxkLCBsZXZlbCAlbGQiLAorICAgICAgICAgICAgZGVmYXVsdFByb2ZpbGVMZXZlbC5tUHJvZmlsZSwgZGVmYXVsdFByb2ZpbGVMZXZlbC5tTGV2ZWwpOworCisgICAgLy8gQXJlIHRoZSBkZWZhdWx0IHByb2ZpbGUgYW5kIGxldmVsIG92ZXJ3cml0ZW4/CisgICAgaW50MzJfdCBwcm9maWxlLCBsZXZlbDsKKyAgICBpZiAoIW1ldGEtPmZpbmRJbnQzMihrS2V5VmlkZW9Qcm9maWxlLCAmcHJvZmlsZSkpIHsKKyAgICAgICAgcHJvZmlsZSA9IGRlZmF1bHRQcm9maWxlTGV2ZWwubVByb2ZpbGU7CisgICAgfQorICAgIGlmICghbWV0YS0+ZmluZEludDMyKGtLZXlWaWRlb0xldmVsLCAmbGV2ZWwpKSB7CisgICAgICAgIGxldmVsID0gZGVmYXVsdFByb2ZpbGVMZXZlbC5tTGV2ZWw7CisgICAgfQorICAgIENPREVDX0xPR1YoIlRhcmdldCBwcm9maWxlOiAlZCwgbGV2ZWw6ICVkIiwgcHJvZmlsZSwgbGV2ZWwpOworCisgICAgLy8gQXJlIHRoZSB0YXJnZXQgcHJvZmlsZSBhbmQgbGV2ZWwgc3VwcG9ydGVkIGJ5IHRoZSBlbmNvZGVyPworICAgIE9NWF9WSURFT19QQVJBTV9QUk9GSUxFTEVWRUxUWVBFIHBhcmFtOworICAgIEluaXRPTVhQYXJhbXMoJnBhcmFtKTsKKyAgICBwYXJhbS5uUG9ydEluZGV4ID0ga1BvcnRJbmRleE91dHB1dDsKKyAgICBmb3IgKHBhcmFtLm5Qcm9maWxlSW5kZXggPSAwOzsgKytwYXJhbS5uUHJvZmlsZUluZGV4KSB7CisgICAgICAgIHN0YXR1c190IGVyciA9IG1PTVgtPmdldFBhcmFtZXRlcigKKyAgICAgICAgICAgICAgICBtTm9kZSwgT01YX0luZGV4UGFyYW1WaWRlb1Byb2ZpbGVMZXZlbFF1ZXJ5U3VwcG9ydGVkLAorICAgICAgICAgICAgICAgICZwYXJhbSwgc2l6ZW9mKHBhcmFtKSk7CisKKyAgICAgICAgaWYgKGVyciAhPSBPSykgcmV0dXJuIGVycjsKKworICAgICAgICBpbnQzMl90IHN1cHBvcnRlZFByb2ZpbGUgPSBzdGF0aWNfY2FzdDxpbnQzMl90PihwYXJhbS5lUHJvZmlsZSk7CisgICAgICAgIGludDMyX3Qgc3VwcG9ydGVkTGV2ZWwgPSBzdGF0aWNfY2FzdDxpbnQzMl90PihwYXJhbS5lTGV2ZWwpOworICAgICAgICBDT0RFQ19MT0dWKCJTdXBwb3J0ZWQgcHJvZmlsZTogJWQsIGxldmVsICVkIiwKKyAgICAgICAgICAgIHN1cHBvcnRlZFByb2ZpbGUsIHN1cHBvcnRlZExldmVsKTsKKworICAgICAgICBpZiAocHJvZmlsZSA9PSBzdXBwb3J0ZWRQcm9maWxlICYmCisgICAgICAgICAgICBsZXZlbCA9PSBzdXBwb3J0ZWRMZXZlbCkgeworICAgICAgICAgICAgcHJvZmlsZUxldmVsLm1Qcm9maWxlID0gcHJvZmlsZTsKKyAgICAgICAgICAgIHByb2ZpbGVMZXZlbC5tTGV2ZWwgPSBsZXZlbDsKKyAgICAgICAgICAgIHJldHVybiBPSzsKKyAgICAgICAgfQorICAgIH0KKworICAgIENPREVDX0xPR0UoIlRhcmdldCBwcm9maWxlICglZCkgYW5kIGxldmVsICglZCkgaXMgbm90IHN1cHBvcnRlZCIsCisgICAgICAgICAgICBwcm9maWxlLCBsZXZlbCk7CisgICAgcmV0dXJuIEJBRF9WQUxVRTsKK30KKworc3RhdHVzX3QgT01YQ29kZWM6OnNldHVwSDI2M0VuY29kZXJQYXJhbWV0ZXJzKGNvbnN0IHNwPE1ldGFEYXRhPiYgbWV0YSkgeworICAgIGludDMyX3QgaUZyYW1lc0ludGVydmFsLCBmcmFtZVJhdGUsIGJpdFJhdGU7CisgICAgYm9vbCBzdWNjZXNzID0gbWV0YS0+ZmluZEludDMyKGtLZXlCaXRSYXRlLCAmYml0UmF0ZSk7CisgICAgc3VjY2VzcyA9IHN1Y2Nlc3MgJiYgbWV0YS0+ZmluZEludDMyKGtLZXlTYW1wbGVSYXRlLCAmZnJhbWVSYXRlKTsKKyAgICBzdWNjZXNzID0gc3VjY2VzcyAmJiBtZXRhLT5maW5kSW50MzIoa0tleUlGcmFtZXNJbnRlcnZhbCwgJmlGcmFtZXNJbnRlcnZhbCk7CisgICAgQ0hFQ0soc3VjY2Vzcyk7CisgICAgT01YX1ZJREVPX1BBUkFNX0gyNjNUWVBFIGgyNjN0eXBlOworICAgIEluaXRPTVhQYXJhbXMoJmgyNjN0eXBlKTsKKyAgICBoMjYzdHlwZS5uUG9ydEluZGV4ID0ga1BvcnRJbmRleE91dHB1dDsKKworICAgIHN0YXR1c190IGVyciA9IG1PTVgtPmdldFBhcmFtZXRlcigKKyAgICAgICAgICAgIG1Ob2RlLCBPTVhfSW5kZXhQYXJhbVZpZGVvSDI2MywgJmgyNjN0eXBlLCBzaXplb2YoaDI2M3R5cGUpKTsKKyAgICBDSEVDS19FUShlcnIsIE9LKTsKKworICAgIGgyNjN0eXBlLm5BbGxvd2VkUGljdHVyZVR5cGVzID0KKyAgICAgICAgT01YX1ZJREVPX1BpY3R1cmVUeXBlSSB8IE9NWF9WSURFT19QaWN0dXJlVHlwZVA7CisKKyAgICBoMjYzdHlwZS5uUEZyYW1lcyA9IHNldFBGcmFtZXNTcGFjaW5nKGlGcmFtZXNJbnRlcnZhbCwgZnJhbWVSYXRlKTsKKyAgICBpZiAoaDI2M3R5cGUublBGcmFtZXMgPT0gMCkgeworICAgICAgICBoMjYzdHlwZS5uQWxsb3dlZFBpY3R1cmVUeXBlcyA9IE9NWF9WSURFT19QaWN0dXJlVHlwZUk7CisgICAgfQorICAgIGgyNjN0eXBlLm5CRnJhbWVzID0gMDsKKworICAgIC8vIENoZWNrIHByb2ZpbGUgYW5kIGxldmVsIHBhcmFtZXRlcnMKKyAgICBDb2RlY1Byb2ZpbGVMZXZlbCBkZWZhdWx0UHJvZmlsZUxldmVsLCBwcm9maWxlTGV2ZWw7CisgICAgZGVmYXVsdFByb2ZpbGVMZXZlbC5tUHJvZmlsZSA9IE9NWF9WSURFT19IMjYzUHJvZmlsZUJhc2VsaW5lOworICAgIGRlZmF1bHRQcm9maWxlTGV2ZWwubUxldmVsID0gT01YX1ZJREVPX0gyNjNMZXZlbDQ1OworICAgIGVyciA9IGdldFZpZGVvUHJvZmlsZUxldmVsKG1ldGEsIGRlZmF1bHRQcm9maWxlTGV2ZWwsIHByb2ZpbGVMZXZlbCk7CisgICAgaWYgKGVyciAhPSBPSykgcmV0dXJuIGVycjsKKyAgICBoMjYzdHlwZS5lUHJvZmlsZSA9IHN0YXRpY19jYXN0PE9NWF9WSURFT19IMjYzUFJPRklMRVRZUEU+KHByb2ZpbGVMZXZlbC5tUHJvZmlsZSk7CisgICAgaDI2M3R5cGUuZUxldmVsID0gc3RhdGljX2Nhc3Q8T01YX1ZJREVPX0gyNjNMRVZFTFRZUEU+KHByb2ZpbGVMZXZlbC5tTGV2ZWwpOworCisgICAgaDI2M3R5cGUuYlBMVVNQVFlQRUFsbG93ZWQgPSBPTVhfRkFMU0U7CisgICAgaDI2M3R5cGUuYkZvcmNlUm91bmRpbmdUeXBlVG9aZXJvID0gT01YX0ZBTFNFOworICAgIGgyNjN0eXBlLm5QaWN0dXJlSGVhZGVyUmVwZXRpdGlvbiA9IDA7CisgICAgaDI2M3R5cGUubkdPQkhlYWRlckludGVydmFsID0gMDsKKworICAgIGVyciA9IG1PTVgtPnNldFBhcmFtZXRlcigKKyAgICAgICAgICAgIG1Ob2RlLCBPTVhfSW5kZXhQYXJhbVZpZGVvSDI2MywgJmgyNjN0eXBlLCBzaXplb2YoaDI2M3R5cGUpKTsKKyAgICBDSEVDS19FUShlcnIsIE9LKTsKKworICAgIENIRUNLX0VRKHNldHVwQml0UmF0ZShiaXRSYXRlKSwgT0spOworICAgIENIRUNLX0VRKHNldHVwRXJyb3JDb3JyZWN0aW9uUGFyYW1ldGVycygpLCBPSyk7CisKKyAgICByZXR1cm4gT0s7Cit9CisKK3N0YXR1c190IE9NWENvZGVjOjpzZXR1cE1QRUc0RW5jb2RlclBhcmFtZXRlcnMoY29uc3Qgc3A8TWV0YURhdGE+JiBtZXRhKSB7CisgICAgaW50MzJfdCBpRnJhbWVzSW50ZXJ2YWwsIGZyYW1lUmF0ZSwgYml0UmF0ZTsKKyAgICBib29sIHN1Y2Nlc3MgPSBtZXRhLT5maW5kSW50MzIoa0tleUJpdFJhdGUsICZiaXRSYXRlKTsKKyAgICBzdWNjZXNzID0gc3VjY2VzcyAmJiBtZXRhLT5maW5kSW50MzIoa0tleVNhbXBsZVJhdGUsICZmcmFtZVJhdGUpOworICAgIHN1Y2Nlc3MgPSBzdWNjZXNzICYmIG1ldGEtPmZpbmRJbnQzMihrS2V5SUZyYW1lc0ludGVydmFsLCAmaUZyYW1lc0ludGVydmFsKTsKKyAgICBDSEVDSyhzdWNjZXNzKTsKICAgICBPTVhfVklERU9fUEFSQU1fTVBFRzRUWVBFIG1wZWc0dHlwZTsKICAgICBJbml0T01YUGFyYW1zKCZtcGVnNHR5cGUpOwogICAgIG1wZWc0dHlwZS5uUG9ydEluZGV4ID0ga1BvcnRJbmRleE91dHB1dDsKQEAgLTgwNiw5ICsxMDMyLDExIEBACiAgICAgbXBlZzR0eXBlLm5BbGxvd2VkUGljdHVyZVR5cGVzID0KICAgICAgICAgT01YX1ZJREVPX1BpY3R1cmVUeXBlSSB8IE9NWF9WSURFT19QaWN0dXJlVHlwZVA7CiAKLSAgICBtcGVnNHR5cGUublBGcmFtZXMgPSAyMzsKKyAgICBtcGVnNHR5cGUublBGcmFtZXMgPSBzZXRQRnJhbWVzU3BhY2luZyhpRnJhbWVzSW50ZXJ2YWwsIGZyYW1lUmF0ZSk7CisgICAgaWYgKG1wZWc0dHlwZS5uUEZyYW1lcyA9PSAwKSB7CisgICAgICAgIG1wZWc0dHlwZS5uQWxsb3dlZFBpY3R1cmVUeXBlcyA9IE9NWF9WSURFT19QaWN0dXJlVHlwZUk7CisgICAgfQogICAgIG1wZWc0dHlwZS5uQkZyYW1lcyA9IDA7Ci0KICAgICBtcGVnNHR5cGUubklEQ1ZMQ1RocmVzaG9sZCA9IDA7CiAgICAgbXBlZzR0eXBlLmJBQ1ByZWQgPSBPTVhfVFJVRTsKICAgICBtcGVnNHR5cGUubk1heFBhY2tldFNpemUgPSAyNTY7CkBAIC04MTYsNTggKzEwNDQsMzIgQEAKICAgICBtcGVnNHR5cGUubkhlYWRlckV4dGVuc2lvbiA9IDA7CiAgICAgbXBlZzR0eXBlLmJSZXZlcnNpYmxlVkxDID0gT01YX0ZBTFNFOwogCi0gICAgbXBlZzR0eXBlLmVQcm9maWxlID0gT01YX1ZJREVPX01QRUc0UHJvZmlsZUNvcmU7Ci0gICAgbXBlZzR0eXBlLmVMZXZlbCA9IE9NWF9WSURFT19NUEVHNExldmVsMjsKKyAgICAvLyBDaGVjayBwcm9maWxlIGFuZCBsZXZlbCBwYXJhbWV0ZXJzCisgICAgQ29kZWNQcm9maWxlTGV2ZWwgZGVmYXVsdFByb2ZpbGVMZXZlbCwgcHJvZmlsZUxldmVsOworICAgIGRlZmF1bHRQcm9maWxlTGV2ZWwubVByb2ZpbGUgPSBPTVhfVklERU9fTVBFRzRQcm9maWxlU2ltcGxlOworICAgIGRlZmF1bHRQcm9maWxlTGV2ZWwubUxldmVsID0gT01YX1ZJREVPX01QRUc0TGV2ZWwyOworICAgIGVyciA9IGdldFZpZGVvUHJvZmlsZUxldmVsKG1ldGEsIGRlZmF1bHRQcm9maWxlTGV2ZWwsIHByb2ZpbGVMZXZlbCk7CisgICAgaWYgKGVyciAhPSBPSykgcmV0dXJuIGVycjsKKyAgICBtcGVnNHR5cGUuZVByb2ZpbGUgPSBzdGF0aWNfY2FzdDxPTVhfVklERU9fTVBFRzRQUk9GSUxFVFlQRT4ocHJvZmlsZUxldmVsLm1Qcm9maWxlKTsKKyAgICBtcGVnNHR5cGUuZUxldmVsID0gc3RhdGljX2Nhc3Q8T01YX1ZJREVPX01QRUc0TEVWRUxUWVBFPihwcm9maWxlTGV2ZWwubUxldmVsKTsKIAogICAgIGVyciA9IG1PTVgtPnNldFBhcmFtZXRlcigKICAgICAgICAgICAgIG1Ob2RlLCBPTVhfSW5kZXhQYXJhbVZpZGVvTXBlZzQsICZtcGVnNHR5cGUsIHNpemVvZihtcGVnNHR5cGUpKTsKICAgICBDSEVDS19FUShlcnIsIE9LKTsKIAotICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0KLQotICAgIE9NWF9WSURFT19QQVJBTV9CSVRSQVRFVFlQRSBiaXRyYXRlVHlwZTsKLSAgICBJbml0T01YUGFyYW1zKCZiaXRyYXRlVHlwZSk7Ci0gICAgYml0cmF0ZVR5cGUublBvcnRJbmRleCA9IGtQb3J0SW5kZXhPdXRwdXQ7Ci0KLSAgICBlcnIgPSBtT01YLT5nZXRQYXJhbWV0ZXIoCi0gICAgICAgICAgICBtTm9kZSwgT01YX0luZGV4UGFyYW1WaWRlb0JpdHJhdGUsCi0gICAgICAgICAgICAmYml0cmF0ZVR5cGUsIHNpemVvZihiaXRyYXRlVHlwZSkpOwotICAgIENIRUNLX0VRKGVyciwgT0spOwotCi0gICAgYml0cmF0ZVR5cGUuZUNvbnRyb2xSYXRlID0gT01YX1ZpZGVvX0NvbnRyb2xSYXRlVmFyaWFibGU7Ci0gICAgYml0cmF0ZVR5cGUublRhcmdldEJpdHJhdGUgPSAxMDAwMDAwOwotCi0gICAgZXJyID0gbU9NWC0+c2V0UGFyYW1ldGVyKAotICAgICAgICAgICAgbU5vZGUsIE9NWF9JbmRleFBhcmFtVmlkZW9CaXRyYXRlLAotICAgICAgICAgICAgJmJpdHJhdGVUeXBlLCBzaXplb2YoYml0cmF0ZVR5cGUpKTsKLSAgICBDSEVDS19FUShlcnIsIE9LKTsKLQotICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0KLQotICAgIE9NWF9WSURFT19QQVJBTV9FUlJPUkNPUlJFQ1RJT05UWVBFIGVycm9yQ29ycmVjdGlvblR5cGU7Ci0gICAgSW5pdE9NWFBhcmFtcygmZXJyb3JDb3JyZWN0aW9uVHlwZSk7Ci0gICAgZXJyb3JDb3JyZWN0aW9uVHlwZS5uUG9ydEluZGV4ID0ga1BvcnRJbmRleE91dHB1dDsKLQotICAgIGVyciA9IG1PTVgtPmdldFBhcmFtZXRlcigKLSAgICAgICAgICAgIG1Ob2RlLCBPTVhfSW5kZXhQYXJhbVZpZGVvRXJyb3JDb3JyZWN0aW9uLAotICAgICAgICAgICAgJmVycm9yQ29ycmVjdGlvblR5cGUsIHNpemVvZihlcnJvckNvcnJlY3Rpb25UeXBlKSk7Ci0gICAgQ0hFQ0tfRVEoZXJyLCBPSyk7Ci0KLSAgICBlcnJvckNvcnJlY3Rpb25UeXBlLmJFbmFibGVIRUMgPSBPTVhfRkFMU0U7Ci0gICAgZXJyb3JDb3JyZWN0aW9uVHlwZS5iRW5hYmxlUmVzeW5jID0gT01YX1RSVUU7Ci0gICAgZXJyb3JDb3JyZWN0aW9uVHlwZS5uUmVzeW5jaE1hcmtlclNwYWNpbmcgPSAyNTY7Ci0gICAgZXJyb3JDb3JyZWN0aW9uVHlwZS5iRW5hYmxlRGF0YVBhcnRpdGlvbmluZyA9IE9NWF9GQUxTRTsKLSAgICBlcnJvckNvcnJlY3Rpb25UeXBlLmJFbmFibGVSVkxDID0gT01YX0ZBTFNFOwotCi0gICAgZXJyID0gbU9NWC0+c2V0UGFyYW1ldGVyKAotICAgICAgICAgICAgbU5vZGUsIE9NWF9JbmRleFBhcmFtVmlkZW9FcnJvckNvcnJlY3Rpb24sCi0gICAgICAgICAgICAmZXJyb3JDb3JyZWN0aW9uVHlwZSwgc2l6ZW9mKGVycm9yQ29ycmVjdGlvblR5cGUpKTsKLSAgICBDSEVDS19FUShlcnIsIE9LKTsKKyAgICBDSEVDS19FUShzZXR1cEJpdFJhdGUoYml0UmF0ZSksIE9LKTsKKyAgICBDSEVDS19FUShzZXR1cEVycm9yQ29ycmVjdGlvblBhcmFtZXRlcnMoKSwgT0spOwogCiAgICAgcmV0dXJuIE9LOwogfQogCi1zdGF0dXNfdCBPTVhDb2RlYzo6c2V0dXBBVkNFbmNvZGVyUGFyYW1ldGVycygpIHsKK3N0YXR1c190IE9NWENvZGVjOjpzZXR1cEFWQ0VuY29kZXJQYXJhbWV0ZXJzKGNvbnN0IHNwPE1ldGFEYXRhPiYgbWV0YSkgeworICAgIGludDMyX3QgaUZyYW1lc0ludGVydmFsLCBmcmFtZVJhdGUsIGJpdFJhdGU7CisgICAgYm9vbCBzdWNjZXNzID0gbWV0YS0+ZmluZEludDMyKGtLZXlCaXRSYXRlLCAmYml0UmF0ZSk7CisgICAgc3VjY2VzcyA9IHN1Y2Nlc3MgJiYgbWV0YS0+ZmluZEludDMyKGtLZXlTYW1wbGVSYXRlLCAmZnJhbWVSYXRlKTsKKyAgICBzdWNjZXNzID0gc3VjY2VzcyAmJiBtZXRhLT5maW5kSW50MzIoa0tleUlGcmFtZXNJbnRlcnZhbCwgJmlGcmFtZXNJbnRlcnZhbCk7CisgICAgQ0hFQ0soc3VjY2Vzcyk7CisKICAgICBPTVhfVklERU9fUEFSQU1fQVZDVFlQRSBoMjY0dHlwZTsKICAgICBJbml0T01YUGFyYW1zKCZoMjY0dHlwZSk7CiAgICAgaDI2NHR5cGUublBvcnRJbmRleCA9IGtQb3J0SW5kZXhPdXRwdXQ7CkBAIC04ODAsNDcgKzEwODIsNTEgQEAKICAgICAgICAgT01YX1ZJREVPX1BpY3R1cmVUeXBlSSB8IE9NWF9WSURFT19QaWN0dXJlVHlwZVA7CiAKICAgICBoMjY0dHlwZS5uU2xpY2VIZWFkZXJTcGFjaW5nID0gMDsKLSAgICBoMjY0dHlwZS5uQkZyYW1lcyA9IDA7Ci0gICAgaDI2NHR5cGUuYlVzZUhhZGFtYXJkID0gT01YX1RSVUU7Ci0gICAgaDI2NHR5cGUublJlZkZyYW1lcyA9IDE7Ci0gICAgaDI2NHR5cGUublJlZklkeDEwQWN0aXZlTWludXMxID0gMDsKLSAgICBoMjY0dHlwZS5uUmVmSWR4MTFBY3RpdmVNaW51czEgPSAwOworICAgIGgyNjR0eXBlLm5CRnJhbWVzID0gMDsgICAvLyBObyBCIGZyYW1lcyBzdXBwb3J0IHlldAorICAgIGgyNjR0eXBlLm5QRnJhbWVzID0gc2V0UEZyYW1lc1NwYWNpbmcoaUZyYW1lc0ludGVydmFsLCBmcmFtZVJhdGUpOworICAgIGlmIChoMjY0dHlwZS5uUEZyYW1lcyA9PSAwKSB7CisgICAgICAgIGgyNjR0eXBlLm5BbGxvd2VkUGljdHVyZVR5cGVzID0gT01YX1ZJREVPX1BpY3R1cmVUeXBlSTsKKyAgICB9CisKKyAgICAvLyBDaGVjayBwcm9maWxlIGFuZCBsZXZlbCBwYXJhbWV0ZXJzCisgICAgQ29kZWNQcm9maWxlTGV2ZWwgZGVmYXVsdFByb2ZpbGVMZXZlbCwgcHJvZmlsZUxldmVsOworICAgIGRlZmF1bHRQcm9maWxlTGV2ZWwubVByb2ZpbGUgPSBoMjY0dHlwZS5lUHJvZmlsZTsKKyAgICBkZWZhdWx0UHJvZmlsZUxldmVsLm1MZXZlbCA9IGgyNjR0eXBlLmVMZXZlbDsKKyAgICBlcnIgPSBnZXRWaWRlb1Byb2ZpbGVMZXZlbChtZXRhLCBkZWZhdWx0UHJvZmlsZUxldmVsLCBwcm9maWxlTGV2ZWwpOworICAgIGlmIChlcnIgIT0gT0spIHJldHVybiBlcnI7CisgICAgaDI2NHR5cGUuZVByb2ZpbGUgPSBzdGF0aWNfY2FzdDxPTVhfVklERU9fQVZDUFJPRklMRVRZUEU+KHByb2ZpbGVMZXZlbC5tUHJvZmlsZSk7CisgICAgaDI2NHR5cGUuZUxldmVsID0gc3RhdGljX2Nhc3Q8T01YX1ZJREVPX0FWQ0xFVkVMVFlQRT4ocHJvZmlsZUxldmVsLm1MZXZlbCk7CisKKyAgICBpZiAoaDI2NHR5cGUuZVByb2ZpbGUgPT0gT01YX1ZJREVPX0FWQ1Byb2ZpbGVCYXNlbGluZSkgeworICAgICAgICBoMjY0dHlwZS5iVXNlSGFkYW1hcmQgPSBPTVhfVFJVRTsKKyAgICAgICAgaDI2NHR5cGUublJlZkZyYW1lcyA9IDE7CisgICAgICAgIGgyNjR0eXBlLm5SZWZJZHgxMEFjdGl2ZU1pbnVzMSA9IDA7CisgICAgICAgIGgyNjR0eXBlLm5SZWZJZHgxMUFjdGl2ZU1pbnVzMSA9IDA7CisgICAgICAgIGgyNjR0eXBlLmJFbnRyb3B5Q29kaW5nQ0FCQUMgPSBPTVhfRkFMU0U7CisgICAgICAgIGgyNjR0eXBlLmJXZWlnaHRlZFBQcmVkaWN0aW9uID0gT01YX0ZBTFNFOworICAgICAgICBoMjY0dHlwZS5iY29uc3RJcHJlZCA9IE9NWF9GQUxTRTsKKyAgICAgICAgaDI2NHR5cGUuYkRpcmVjdDh4OEluZmVyZW5jZSA9IE9NWF9GQUxTRTsKKyAgICAgICAgaDI2NHR5cGUuYkRpcmVjdFNwYXRpYWxUZW1wb3JhbCA9IE9NWF9GQUxTRTsKKyAgICAgICAgaDI2NHR5cGUubkNhYmFjSW5pdElkYyA9IDA7CisgICAgfQorCisgICAgaWYgKGgyNjR0eXBlLm5CRnJhbWVzICE9IDApIHsKKyAgICAgICAgaDI2NHR5cGUubkFsbG93ZWRQaWN0dXJlVHlwZXMgfD0gT01YX1ZJREVPX1BpY3R1cmVUeXBlQjsKKyAgICB9CisKICAgICBoMjY0dHlwZS5iRW5hYmxlVUVQID0gT01YX0ZBTFNFOwogICAgIGgyNjR0eXBlLmJFbmFibGVGTU8gPSBPTVhfRkFMU0U7CiAgICAgaDI2NHR5cGUuYkVuYWJsZUFTTyA9IE9NWF9GQUxTRTsKICAgICBoMjY0dHlwZS5iRW5hYmxlUlMgPSBPTVhfRkFMU0U7Ci0gICAgaDI2NHR5cGUuZVByb2ZpbGUgPSBPTVhfVklERU9fQVZDUHJvZmlsZUJhc2VsaW5lOwotICAgIGgyNjR0eXBlLmVMZXZlbCA9IE9NWF9WSURFT19BVkNMZXZlbDFiOwogICAgIGgyNjR0eXBlLmJGcmFtZU1Cc09ubHkgPSBPTVhfVFJVRTsKICAgICBoMjY0dHlwZS5iTUJBRkYgPSBPTVhfRkFMU0U7Ci0gICAgaDI2NHR5cGUuYkVudHJvcHlDb2RpbmdDQUJBQyA9IE9NWF9GQUxTRTsKLSAgICBoMjY0dHlwZS5iV2VpZ2h0ZWRQUHJlZGljdGlvbiA9IE9NWF9GQUxTRTsKLSAgICBoMjY0dHlwZS5iY29uc3RJcHJlZCA9IE9NWF9GQUxTRTsKLSAgICBoMjY0dHlwZS5iRGlyZWN0OHg4SW5mZXJlbmNlID0gT01YX0ZBTFNFOwotICAgIGgyNjR0eXBlLmJEaXJlY3RTcGF0aWFsVGVtcG9yYWwgPSBPTVhfRkFMU0U7Ci0gICAgaDI2NHR5cGUubkNhYmFjSW5pdElkYyA9IDA7CiAgICAgaDI2NHR5cGUuZUxvb3BGaWx0ZXJNb2RlID0gT01YX1ZJREVPX0FWQ0xvb3BGaWx0ZXJFbmFibGU7CiAKICAgICBlcnIgPSBtT01YLT5zZXRQYXJhbWV0ZXIoCiAgICAgICAgICAgICBtTm9kZSwgT01YX0luZGV4UGFyYW1WaWRlb0F2YywgJmgyNjR0eXBlLCBzaXplb2YoaDI2NHR5cGUpKTsKICAgICBDSEVDS19FUShlcnIsIE9LKTsKIAotICAgIE9NWF9WSURFT19QQVJBTV9CSVRSQVRFVFlQRSBiaXRyYXRlVHlwZTsKLSAgICBJbml0T01YUGFyYW1zKCZiaXRyYXRlVHlwZSk7Ci0gICAgYml0cmF0ZVR5cGUublBvcnRJbmRleCA9IGtQb3J0SW5kZXhPdXRwdXQ7Ci0KLSAgICBlcnIgPSBtT01YLT5nZXRQYXJhbWV0ZXIoCi0gICAgICAgICAgICBtTm9kZSwgT01YX0luZGV4UGFyYW1WaWRlb0JpdHJhdGUsCi0gICAgICAgICAgICAmYml0cmF0ZVR5cGUsIHNpemVvZihiaXRyYXRlVHlwZSkpOwotICAgIENIRUNLX0VRKGVyciwgT0spOwotCi0gICAgYml0cmF0ZVR5cGUuZUNvbnRyb2xSYXRlID0gT01YX1ZpZGVvX0NvbnRyb2xSYXRlVmFyaWFibGU7Ci0gICAgYml0cmF0ZVR5cGUublRhcmdldEJpdHJhdGUgPSAxMDAwMDAwOwotCi0gICAgZXJyID0gbU9NWC0+c2V0UGFyYW1ldGVyKAotICAgICAgICAgICAgbU5vZGUsIE9NWF9JbmRleFBhcmFtVmlkZW9CaXRyYXRlLAotICAgICAgICAgICAgJmJpdHJhdGVUeXBlLCBzaXplb2YoYml0cmF0ZVR5cGUpKTsKLSAgICBDSEVDS19FUShlcnIsIE9LKTsKKyAgICBDSEVDS19FUShzZXR1cEJpdFJhdGUoYml0UmF0ZSksIE9LKTsKIAogICAgIHJldHVybiBPSzsKIH0KQEAgLTEwNTcsNyArMTI2Myw4IEBACiAgICAgICBtTm9Nb3JlT3V0cHV0RGF0YShmYWxzZSksCiAgICAgICBtT3V0cHV0UG9ydFNldHRpbmdzSGF2ZUNoYW5nZWQoZmFsc2UpLAogICAgICAgbVNlZWtUaW1lVXMoLTEpLAotICAgICAgbUxlZnRPdmVyQnVmZmVyKE5VTEwpIHsKKyAgICAgIG1MZWZ0T3ZlckJ1ZmZlcihOVUxMKSwKKyAgICAgIG1QYXVzZWQoZmFsc2UpIHsKICAgICBtUG9ydFN0YXR1c1trUG9ydEluZGV4SW5wdXRdID0gRU5BQkxFRDsKICAgICBtUG9ydFN0YXR1c1trUG9ydEluZGV4T3V0cHV0XSA9IEVOQUJMRUQ7CiAKQEAgLTE2NDcsNiArMTg1NCw5IEBACiAgICAgICAgICAgICAgICAgICAgIENPREVDX0xPR1YoIkZpbmlzaGVkIGZsdXNoaW5nIGJvdGggcG9ydHMsIG5vdyBjb250aW51aW5nIGZyb20iCiAgICAgICAgICAgICAgICAgICAgICAgICAgIiBzZWVrLXRpbWUuIik7CiAKKyAgICAgICAgICAgICAgICAgICAgLy8gV2UgaW1wbGljaXRseSByZXN1bWUgcHVsbGluZyBvbiBvdXIgdXBzdHJlYW0gc291cmNlLgorICAgICAgICAgICAgICAgICAgICBtUGF1c2VkID0gZmFsc2U7CisKICAgICAgICAgICAgICAgICAgICAgZHJhaW5JbnB1dEJ1ZmZlcnMoKTsKICAgICAgICAgICAgICAgICAgICAgZmlsbE91dHB1dEJ1ZmZlcnMoKTsKICAgICAgICAgICAgICAgICB9CkBAIC0xOTQ2LDYgKzIxNTYsMTAgQEAKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAorICAgIGlmIChtUGF1c2VkKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBzdGF0dXNfdCBlcnI7CiAKICAgICBib29sIHNpZ25hbEVPUyA9IGZhbHNlOwpAQCAtMjAwNCw5ICsyMjE4LDE1IEBACiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCi0gICAgICAgIG1lbWNweSgodWludDhfdCAqKWluZm8tPm1EYXRhICsgb2Zmc2V0LAotICAgICAgICAgICAgICAgKGNvbnN0IHVpbnQ4X3QgKilzcmNCdWZmZXItPmRhdGEoKSArIHNyY0J1ZmZlci0+cmFuZ2Vfb2Zmc2V0KCksCi0gICAgICAgICAgICAgICBzcmNCdWZmZXItPnJhbmdlX2xlbmd0aCgpKTsKKyAgICAgICAgaWYgKG1Jc0VuY29kZXIgJiYgKG1RdWlya3MgJiBrQXZvaWRNZW1jb3B5SW5wdXRSZWNvcmRpbmdGcmFtZXMpKSB7CisgICAgICAgICAgICBDSEVDSyhtT01YTGl2ZXNMb2NhbGx5ICYmIG9mZnNldCA9PSAwKTsKKyAgICAgICAgICAgIE9NWF9CVUZGRVJIRUFERVJUWVBFICpoZWFkZXIgPSAoT01YX0JVRkZFUkhFQURFUlRZUEUgKikgaW5mby0+bUJ1ZmZlcjsKKyAgICAgICAgICAgIGhlYWRlci0+cEJ1ZmZlciA9IChPTVhfVTggKikgc3JjQnVmZmVyLT5kYXRhKCkgKyBzcmNCdWZmZXItPnJhbmdlX29mZnNldCgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbWVtY3B5KCh1aW50OF90ICopaW5mby0+bURhdGEgKyBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgIChjb25zdCB1aW50OF90ICopc3JjQnVmZmVyLT5kYXRhKCkgKyBzcmNCdWZmZXItPnJhbmdlX29mZnNldCgpLAorICAgICAgICAgICAgICAgICAgICBzcmNCdWZmZXItPnJhbmdlX2xlbmd0aCgpKTsKKyAgICAgICAgfQogCiAgICAgICAgIGludDY0X3QgbGFzdEJ1ZmZlclRpbWVVczsKICAgICAgICAgQ0hFQ0soc3JjQnVmZmVyLT5tZXRhX2RhdGEoKS0+ZmluZEludDY0KGtLZXlUaW1lLCAmbGFzdEJ1ZmZlclRpbWVVcykpOwpAQCAtMjEyOCwxMSArMjM0OCwyNCBAQAogCiB2b2lkIE9NWENvZGVjOjpzZXRSYXdBdWRpb0Zvcm1hdCgKICAgICAgICAgT01YX1UzMiBwb3J0SW5kZXgsIGludDMyX3Qgc2FtcGxlUmF0ZSwgaW50MzJfdCBudW1DaGFubmVscykgeworCisgICAgLy8gcG9ydCBkZWZpbml0aW9uCisgICAgT01YX1BBUkFNX1BPUlRERUZJTklUSU9OVFlQRSBkZWY7CisgICAgSW5pdE9NWFBhcmFtcygmZGVmKTsKKyAgICBkZWYublBvcnRJbmRleCA9IHBvcnRJbmRleDsKKyAgICBzdGF0dXNfdCBlcnIgPSBtT01YLT5nZXRQYXJhbWV0ZXIoCisgICAgICAgICAgICBtTm9kZSwgT01YX0luZGV4UGFyYW1Qb3J0RGVmaW5pdGlvbiwgJmRlZiwgc2l6ZW9mKGRlZikpOworICAgIENIRUNLX0VRKGVyciwgT0spOworICAgIGRlZi5mb3JtYXQuYXVkaW8uZUVuY29kaW5nID0gT01YX0FVRElPX0NvZGluZ1BDTTsKKyAgICBDSEVDS19FUShtT01YLT5zZXRQYXJhbWV0ZXIobU5vZGUsIE9NWF9JbmRleFBhcmFtUG9ydERlZmluaXRpb24sCisgICAgICAgICAgICAmZGVmLCBzaXplb2YoZGVmKSksIE9LKTsKKworICAgIC8vIHBjbSBwYXJhbQogICAgIE9NWF9BVURJT19QQVJBTV9QQ01NT0RFVFlQRSBwY21QYXJhbXM7CiAgICAgSW5pdE9NWFBhcmFtcygmcGNtUGFyYW1zKTsKICAgICBwY21QYXJhbXMublBvcnRJbmRleCA9IHBvcnRJbmRleDsKIAotICAgIHN0YXR1c190IGVyciA9IG1PTVgtPmdldFBhcmFtZXRlcigKKyAgICBlcnIgPSBtT01YLT5nZXRQYXJhbWV0ZXIoCiAgICAgICAgICAgICBtTm9kZSwgT01YX0luZGV4UGFyYW1BdWRpb1BjbSwgJnBjbVBhcmFtcywgc2l6ZW9mKHBjbVBhcmFtcykpOwogCiAgICAgQ0hFQ0tfRVEoZXJyLCBPSyk7CkBAIC0yMTU5LDcgKzIzOTIsNTEgQEAKICAgICBDSEVDS19FUShlcnIsIE9LKTsKIH0KIAotdm9pZCBPTVhDb2RlYzo6c2V0QU1SRm9ybWF0KGJvb2wgaXNXQU1SKSB7CitzdGF0aWMgT01YX0FVRElPX0FNUkJBTkRNT0RFVFlQRSBwaWNrTW9kZUZyb21CaXRSYXRlKGJvb2wgaXNBTVJXQiwgaW50MzJfdCBicHMpIHsKKyAgICBpZiAoaXNBTVJXQikgeworICAgICAgICBpZiAoYnBzIDw9IDY2MDApIHsKKyAgICAgICAgICAgIHJldHVybiBPTVhfQVVESU9fQU1SQmFuZE1vZGVXQjA7CisgICAgICAgIH0gZWxzZSBpZiAoYnBzIDw9IDg4NTApIHsKKyAgICAgICAgICAgIHJldHVybiBPTVhfQVVESU9fQU1SQmFuZE1vZGVXQjE7CisgICAgICAgIH0gZWxzZSBpZiAoYnBzIDw9IDEyNjUwKSB7CisgICAgICAgICAgICByZXR1cm4gT01YX0FVRElPX0FNUkJhbmRNb2RlV0IyOworICAgICAgICB9IGVsc2UgaWYgKGJwcyA8PSAxNDI1MCkgeworICAgICAgICAgICAgcmV0dXJuIE9NWF9BVURJT19BTVJCYW5kTW9kZVdCMzsKKyAgICAgICAgfSBlbHNlIGlmIChicHMgPD0gMTU4NTApIHsKKyAgICAgICAgICAgIHJldHVybiBPTVhfQVVESU9fQU1SQmFuZE1vZGVXQjQ7CisgICAgICAgIH0gZWxzZSBpZiAoYnBzIDw9IDE4MjUwKSB7CisgICAgICAgICAgICByZXR1cm4gT01YX0FVRElPX0FNUkJhbmRNb2RlV0I1OworICAgICAgICB9IGVsc2UgaWYgKGJwcyA8PSAxOTg1MCkgeworICAgICAgICAgICAgcmV0dXJuIE9NWF9BVURJT19BTVJCYW5kTW9kZVdCNjsKKyAgICAgICAgfSBlbHNlIGlmIChicHMgPD0gMjMwNTApIHsKKyAgICAgICAgICAgIHJldHVybiBPTVhfQVVESU9fQU1SQmFuZE1vZGVXQjc7CisgICAgICAgIH0KKworICAgICAgICAvLyAyMzg1MCBicHMKKyAgICAgICAgcmV0dXJuIE9NWF9BVURJT19BTVJCYW5kTW9kZVdCODsKKyAgICB9IGVsc2UgeyAgLy8gQU1STkIKKyAgICAgICAgaWYgKGJwcyA8PSA0NzUwKSB7CisgICAgICAgICAgICByZXR1cm4gT01YX0FVRElPX0FNUkJhbmRNb2RlTkIwOworICAgICAgICB9IGVsc2UgaWYgKGJwcyA8PSA1MTUwKSB7CisgICAgICAgICAgICByZXR1cm4gT01YX0FVRElPX0FNUkJhbmRNb2RlTkIxOworICAgICAgICB9IGVsc2UgaWYgKGJwcyA8PSA1OTAwKSB7CisgICAgICAgICAgICByZXR1cm4gT01YX0FVRElPX0FNUkJhbmRNb2RlTkIyOworICAgICAgICB9IGVsc2UgaWYgKGJwcyA8PSA2NzAwKSB7CisgICAgICAgICAgICByZXR1cm4gT01YX0FVRElPX0FNUkJhbmRNb2RlTkIzOworICAgICAgICB9IGVsc2UgaWYgKGJwcyA8PSA3NDAwKSB7CisgICAgICAgICAgICByZXR1cm4gT01YX0FVRElPX0FNUkJhbmRNb2RlTkI0OworICAgICAgICB9IGVsc2UgaWYgKGJwcyA8PSA3OTUwKSB7CisgICAgICAgICAgICByZXR1cm4gT01YX0FVRElPX0FNUkJhbmRNb2RlTkI1OworICAgICAgICB9IGVsc2UgaWYgKGJwcyA8PSAxMDIwMCkgeworICAgICAgICAgICAgcmV0dXJuIE9NWF9BVURJT19BTVJCYW5kTW9kZU5CNjsKKyAgICAgICAgfQorCisgICAgICAgIC8vIDEyMjAwIGJwcworICAgICAgICByZXR1cm4gT01YX0FVRElPX0FNUkJhbmRNb2RlTkI3OworICAgIH0KK30KKwordm9pZCBPTVhDb2RlYzo6c2V0QU1SRm9ybWF0KGJvb2wgaXNXQU1SLCBpbnQzMl90IGJpdFJhdGUpIHsKICAgICBPTVhfVTMyIHBvcnRJbmRleCA9IG1Jc0VuY29kZXIgPyBrUG9ydEluZGV4T3V0cHV0IDoga1BvcnRJbmRleElucHV0OwogCiAgICAgT01YX0FVRElPX1BBUkFNX0FNUlRZUEUgZGVmOwpAQCAtMjE3Miw5ICsyNDQ5LDggQEAKICAgICBDSEVDS19FUShlcnIsIE9LKTsKIAogICAgIGRlZi5lQU1SRnJhbWVGb3JtYXQgPSBPTVhfQVVESU9fQU1SRnJhbWVGb3JtYXRGU0Y7Ci0gICAgZGVmLmVBTVJCYW5kTW9kZSA9Ci0gICAgICAgIGlzV0FNUiA/IE9NWF9BVURJT19BTVJCYW5kTW9kZVdCMCA6IE9NWF9BVURJT19BTVJCYW5kTW9kZU5CMDsKIAorICAgIGRlZi5lQU1SQmFuZE1vZGUgPSBwaWNrTW9kZUZyb21CaXRSYXRlKGlzV0FNUiwgYml0UmF0ZSk7CiAgICAgZXJyID0gbU9NWC0+c2V0UGFyYW1ldGVyKG1Ob2RlLCBPTVhfSW5kZXhQYXJhbUF1ZGlvQW1yLCAmZGVmLCBzaXplb2YoZGVmKSk7CiAgICAgQ0hFQ0tfRVEoZXJyLCBPSyk7CiAKQEAgLTIxOTEsOSArMjQ2Nyw2MSBAQAogICAgIH0KIH0KIAotdm9pZCBPTVhDb2RlYzo6c2V0QUFDRm9ybWF0KGludDMyX3QgbnVtQ2hhbm5lbHMsIGludDMyX3Qgc2FtcGxlUmF0ZSkgewordm9pZCBPTVhDb2RlYzo6c2V0QUFDRm9ybWF0KGludDMyX3QgbnVtQ2hhbm5lbHMsIGludDMyX3Qgc2FtcGxlUmF0ZSwgaW50MzJfdCBiaXRSYXRlKSB7CisgICAgQ0hFQ0sobnVtQ2hhbm5lbHMgPT0gMSB8fCBudW1DaGFubmVscyA9PSAyKTsKICAgICBpZiAobUlzRW5jb2RlcikgeworICAgICAgICAvLy8vLy8vLy8vLy8vLy8vIGlucHV0IHBvcnQgLy8vLy8vLy8vLy8vLy8vLy8vLy8KICAgICAgICAgc2V0UmF3QXVkaW9Gb3JtYXQoa1BvcnRJbmRleElucHV0LCBzYW1wbGVSYXRlLCBudW1DaGFubmVscyk7CisKKyAgICAgICAgLy8vLy8vLy8vLy8vLy8vLyBvdXRwdXQgcG9ydCAvLy8vLy8vLy8vLy8vLy8vLy8vLworICAgICAgICAvLyBmb3JtYXQKKyAgICAgICAgT01YX0FVRElPX1BBUkFNX1BPUlRGT1JNQVRUWVBFIGZvcm1hdDsKKyAgICAgICAgZm9ybWF0Lm5Qb3J0SW5kZXggPSBrUG9ydEluZGV4T3V0cHV0OworICAgICAgICBmb3JtYXQubkluZGV4ID0gMDsKKyAgICAgICAgc3RhdHVzX3QgZXJyID0gT01YX0Vycm9yTm9uZTsKKyAgICAgICAgd2hpbGUgKE9NWF9FcnJvck5vbmUgPT0gZXJyKSB7CisgICAgICAgICAgICBDSEVDS19FUShtT01YLT5nZXRQYXJhbWV0ZXIobU5vZGUsIE9NWF9JbmRleFBhcmFtQXVkaW9Qb3J0Rm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAmZm9ybWF0LCBzaXplb2YoZm9ybWF0KSksIE9LKTsKKyAgICAgICAgICAgIGlmIChmb3JtYXQuZUVuY29kaW5nID09IE9NWF9BVURJT19Db2RpbmdBQUMpIHsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZvcm1hdC5uSW5kZXgrKzsKKyAgICAgICAgfQorICAgICAgICBDSEVDS19FUShPSywgZXJyKTsKKyAgICAgICAgQ0hFQ0tfRVEobU9NWC0+c2V0UGFyYW1ldGVyKG1Ob2RlLCBPTVhfSW5kZXhQYXJhbUF1ZGlvUG9ydEZvcm1hdCwKKyAgICAgICAgICAgICAgICAmZm9ybWF0LCBzaXplb2YoZm9ybWF0KSksIE9LKTsKKworICAgICAgICAvLyBwb3J0IGRlZmluaXRpb24KKyAgICAgICAgT01YX1BBUkFNX1BPUlRERUZJTklUSU9OVFlQRSBkZWY7CisgICAgICAgIEluaXRPTVhQYXJhbXMoJmRlZik7CisgICAgICAgIGRlZi5uUG9ydEluZGV4ID0ga1BvcnRJbmRleE91dHB1dDsKKyAgICAgICAgQ0hFQ0tfRVEobU9NWC0+Z2V0UGFyYW1ldGVyKG1Ob2RlLCBPTVhfSW5kZXhQYXJhbVBvcnREZWZpbml0aW9uLAorICAgICAgICAgICAgICAgICZkZWYsIHNpemVvZihkZWYpKSwgT0spOworICAgICAgICBkZWYuZm9ybWF0LmF1ZGlvLmJGbGFnRXJyb3JDb25jZWFsbWVudCA9IE9NWF9UUlVFOworICAgICAgICBkZWYuZm9ybWF0LmF1ZGlvLmVFbmNvZGluZyA9IE9NWF9BVURJT19Db2RpbmdBQUM7CisgICAgICAgIENIRUNLX0VRKG1PTVgtPnNldFBhcmFtZXRlcihtTm9kZSwgT01YX0luZGV4UGFyYW1Qb3J0RGVmaW5pdGlvbiwKKyAgICAgICAgICAgICAgICAmZGVmLCBzaXplb2YoZGVmKSksIE9LKTsKKworICAgICAgICAvLyBwcm9maWxlCisgICAgICAgIE9NWF9BVURJT19QQVJBTV9BQUNQUk9GSUxFVFlQRSBwcm9maWxlOworICAgICAgICBJbml0T01YUGFyYW1zKCZwcm9maWxlKTsKKyAgICAgICAgcHJvZmlsZS5uUG9ydEluZGV4ID0ga1BvcnRJbmRleE91dHB1dDsKKyAgICAgICAgQ0hFQ0tfRVEobU9NWC0+Z2V0UGFyYW1ldGVyKG1Ob2RlLCBPTVhfSW5kZXhQYXJhbUF1ZGlvQWFjLAorICAgICAgICAgICAgICAgICZwcm9maWxlLCBzaXplb2YocHJvZmlsZSkpLCBPSyk7CisgICAgICAgIHByb2ZpbGUubkNoYW5uZWxzID0gbnVtQ2hhbm5lbHM7CisgICAgICAgIHByb2ZpbGUuZUNoYW5uZWxNb2RlID0gKG51bUNoYW5uZWxzID09IDE/CisgICAgICAgICAgICAgICAgT01YX0FVRElPX0NoYW5uZWxNb2RlTW9ubzogT01YX0FVRElPX0NoYW5uZWxNb2RlU3RlcmVvKTsKKyAgICAgICAgcHJvZmlsZS5uU2FtcGxlUmF0ZSA9IHNhbXBsZVJhdGU7CisgICAgICAgIHByb2ZpbGUubkJpdFJhdGUgPSBiaXRSYXRlOworICAgICAgICBwcm9maWxlLm5BdWRpb0JhbmRXaWR0aCA9IDA7CisgICAgICAgIHByb2ZpbGUubkZyYW1lTGVuZ3RoID0gMDsKKyAgICAgICAgcHJvZmlsZS5uQUFDdG9vbHMgPSBPTVhfQVVESU9fQUFDVG9vbEFsbDsKKyAgICAgICAgcHJvZmlsZS5uQUFDRVJ0b29scyA9IE9NWF9BVURJT19BQUNFUk5vbmU7CisgICAgICAgIHByb2ZpbGUuZUFBQ1Byb2ZpbGUgPSBPTVhfQVVESU9fQUFDT2JqZWN0TEM7CisgICAgICAgIHByb2ZpbGUuZUFBQ1N0cmVhbUZvcm1hdCA9IE9NWF9BVURJT19BQUNTdHJlYW1Gb3JtYXRNUDRGRjsKKyAgICAgICAgQ0hFQ0tfRVEobU9NWC0+c2V0UGFyYW1ldGVyKG1Ob2RlLCBPTVhfSW5kZXhQYXJhbUF1ZGlvQWFjLAorICAgICAgICAgICAgICAgICZwcm9maWxlLCBzaXplb2YocHJvZmlsZSkpLCBPSyk7CisKICAgICB9IGVsc2UgewogICAgICAgICBPTVhfQVVESU9fUEFSQU1fQUFDUFJPRklMRVRZUEUgcHJvZmlsZTsKICAgICAgICAgSW5pdE9NWFBhcmFtcygmcHJvZmlsZSk7CkBAIC0yMzI4LDcgKzI2NTYsNyBAQAogICAgIG1Db2RlY1NwZWNpZmljRGF0YUluZGV4ID0gMDsKIH0KIAotc3RhdHVzX3QgT01YQ29kZWM6OnN0YXJ0KE1ldGFEYXRhICopIHsKK3N0YXR1c190IE9NWENvZGVjOjpzdGFydChNZXRhRGF0YSAqbWV0YSkgewogICAgIE11dGV4OjpBdXRvbG9jayBhdXRvTG9jayhtTG9jayk7CiAKICAgICBpZiAobVN0YXRlICE9IExPQURFRCkgewpAQCAtMjMzOSw2ICsyNjY3LDE0IEBACiAgICAgaWYgKG1RdWlya3MgJiBrV2FudHNOQUxGcmFnbWVudHMpIHsKICAgICAgICAgcGFyYW1zLT5zZXRJbnQzMihrS2V5V2FudHNOQUxGcmFnbWVudHMsIHRydWUpOwogICAgIH0KKyAgICBpZiAobWV0YSkgeworICAgICAgICBpbnQ2NF90IHN0YXJ0VGltZVVzID0gMDsKKyAgICAgICAgaW50NjRfdCB0aW1lVXM7CisgICAgICAgIGlmIChtZXRhLT5maW5kSW50NjQoa0tleVRpbWUsICZ0aW1lVXMpKSB7CisgICAgICAgICAgICBzdGFydFRpbWVVcyA9IHRpbWVVczsKKyAgICAgICAgfQorICAgICAgICBwYXJhbXMtPnNldEludDY0KGtLZXlUaW1lLCBzdGFydFRpbWVVcyk7CisgICAgfQogICAgIHN0YXR1c190IGVyciA9IG1Tb3VyY2UtPnN0YXJ0KHBhcmFtcy5nZXQoKSk7CiAKICAgICBpZiAoZXJyICE9IE9LKSB7CkBAIC0yMzUyLDYgKzI2ODgsNyBAQAogICAgIG1PdXRwdXRQb3J0U2V0dGluZ3NIYXZlQ2hhbmdlZCA9IGZhbHNlOwogICAgIG1TZWVrVGltZVVzID0gLTE7CiAgICAgbUZpbGxlZEJ1ZmZlcnMuY2xlYXIoKTsKKyAgICBtUGF1c2VkID0gZmFsc2U7CiAKICAgICByZXR1cm4gaW5pdCgpOwogfQpAQCAtMjQ1OCw2ICsyNzk1LDcgQEAKICAgICAgICAgICAgIC8vIFRoZXJlJ3Mgbm8gcmVhc29uIHRvIHRyaWdnZXIgdGhlIGNvZGUgYmVsb3csIHRoZXJlJ3MKICAgICAgICAgICAgIC8vIG5vdGhpbmcgdG8gZmx1c2ggeWV0LgogICAgICAgICAgICAgc2Vla2luZyA9IGZhbHNlOworICAgICAgICAgICAgbVBhdXNlZCA9IGZhbHNlOwogICAgICAgICB9CiAKICAgICAgICAgZHJhaW5JbnB1dEJ1ZmZlcnMoKTsKQEAgLTI5NjIsNiArMzMwMCwxMyBAQAogICAgICAgICAgICAgfSBlbHNlIGlmIChhdWRpb19kZWYtPmVFbmNvZGluZyA9PSBPTVhfQVVESU9fQ29kaW5nQUFDKSB7CiAgICAgICAgICAgICAgICAgbU91dHB1dEZvcm1hdC0+c2V0Q1N0cmluZygKICAgICAgICAgICAgICAgICAgICAgICAgIGtLZXlNSU1FVHlwZSwgTUVESUFfTUlNRVRZUEVfQVVESU9fQUFDKTsKKyAgICAgICAgICAgICAgICBpbnQzMl90IG51bUNoYW5uZWxzLCBzYW1wbGVSYXRlLCBiaXRSYXRlOworICAgICAgICAgICAgICAgIGlucHV0Rm9ybWF0LT5maW5kSW50MzIoa0tleUNoYW5uZWxDb3VudCwgJm51bUNoYW5uZWxzKTsKKyAgICAgICAgICAgICAgICBpbnB1dEZvcm1hdC0+ZmluZEludDMyKGtLZXlTYW1wbGVSYXRlLCAmc2FtcGxlUmF0ZSk7CisgICAgICAgICAgICAgICAgaW5wdXRGb3JtYXQtPmZpbmRJbnQzMihrS2V5Qml0UmF0ZSwgJmJpdFJhdGUpOworICAgICAgICAgICAgICAgIG1PdXRwdXRGb3JtYXQtPnNldEludDMyKGtLZXlDaGFubmVsQ291bnQsIG51bUNoYW5uZWxzKTsKKyAgICAgICAgICAgICAgICBtT3V0cHV0Rm9ybWF0LT5zZXRJbnQzMihrS2V5U2FtcGxlUmF0ZSwgc2FtcGxlUmF0ZSk7CisgICAgICAgICAgICAgICAgbU91dHB1dEZvcm1hdC0+c2V0SW50MzIoa0tleUJpdFJhdGUsIGJpdFJhdGUpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBDSEVDSyghIlNob3VsZCBub3QgYmUgaGVyZS4gVW5rbm93biBhdWRpbyBlbmNvZGluZy4iKTsKICAgICAgICAgICAgIH0KQEAgLTMwMTEsNiArMzM1NiwxNCBAQAogICAgIH0KIH0KIAorc3RhdHVzX3QgT01YQ29kZWM6OnBhdXNlKCkgeworICAgIE11dGV4OjpBdXRvbG9jayBhdXRvTG9jayhtTG9jayk7CisKKyAgICBtUGF1c2VkID0gdHJ1ZTsKKworICAgIHJldHVybiBPSzsKK30KKwogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIAogc3RhdHVzX3QgUXVlcnlDb2RlY3MoCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9PZ2dFeHRyYWN0b3IuY3BwIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvT2dnRXh0cmFjdG9yLmNwcAppbmRleCBkMGQxYjE0Li42MDEzYjZmIDEwMDY0NAotLS0gYS9tZWRpYS9saWJzdGFnZWZyaWdodC9PZ2dFeHRyYWN0b3IuY3BwCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L09nZ0V4dHJhY3Rvci5jcHAKQEAgLTc2LDcgKzc2LDkgQEAKICAgICBzdGF0dXNfdCBzZWVrVG9PZmZzZXQob2ZmX3Qgb2Zmc2V0KTsKICAgICBzdGF0dXNfdCByZWFkTmV4dFBhY2tldChNZWRpYUJ1ZmZlciAqKmJ1ZmZlcik7CiAKLSAgICB2b2lkIGluaXQoKTsKKyAgICBzdGF0dXNfdCBpbml0KCk7CisKKyAgICBzcDxNZXRhRGF0YT4gZ2V0RmlsZU1ldGFEYXRhKCkgeyByZXR1cm4gbUZpbGVNZXRhOyB9CiAKIHByaXZhdGU6CiAgICAgc3RydWN0IFBhZ2UgewpAQCAtMTAwLDEzICsxMDIsMTcgQEAKICAgICB2b3JiaXNfY29tbWVudCBtVmM7CiAKICAgICBzcDxNZXRhRGF0YT4gbU1ldGE7CisgICAgc3A8TWV0YURhdGE+IG1GaWxlTWV0YTsKIAogICAgIHNzaXplX3QgcmVhZFBhZ2Uob2ZmX3Qgb2Zmc2V0LCBQYWdlICpwYWdlKTsKICAgICBzdGF0dXNfdCBmaW5kTmV4dFBhZ2Uob2ZmX3Qgc3RhcnRPZmZzZXQsIG9mZl90ICpwYWdlT2Zmc2V0KTsKIAotICAgIHZvaWQgdmVyaWZ5SGVhZGVyKAorICAgIHN0YXR1c190IHZlcmlmeUhlYWRlcigKICAgICAgICAgICAgIE1lZGlhQnVmZmVyICpidWZmZXIsIHVpbnQ4X3QgdHlwZSk7CiAKKyAgICB2b2lkIHBhcnNlRmlsZU1ldGFEYXRhKCk7CisgICAgdm9pZCBleHRyYWN0QWxidW1BcnQoY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUpOworCiAgICAgTXlWb3JiaXNFeHRyYWN0b3IoY29uc3QgTXlWb3JiaXNFeHRyYWN0b3IgJik7CiAgICAgTXlWb3JiaXNFeHRyYWN0b3IgJm9wZXJhdG9yPShjb25zdCBNeVZvcmJpc0V4dHJhY3RvciAmKTsKIH07CkBAIC0xODgsOSArMTk0LDE0IEBACiAgICAgICBtTmV4dExhY2VJbmRleCgwKSwKICAgICAgIG1GaXJzdERhdGFPZmZzZXQoLTEpIHsKICAgICBtQ3VycmVudFBhZ2UubU51bVNlZ21lbnRzID0gMDsKKworICAgIHZvcmJpc19pbmZvX2luaXQoJm1WaSk7CisgICAgdm9yYmlzX2NvbW1lbnRfaW5pdCgmbVZjKTsKIH0KIAogTXlWb3JiaXNFeHRyYWN0b3I6On5NeVZvcmJpc0V4dHJhY3RvcigpIHsKKyAgICB2b3JiaXNfY29tbWVudF9jbGVhcigmbVZjKTsKKyAgICB2b3JiaXNfaW5mb19jbGVhcigmbVZpKTsKIH0KIAogc3A8TWV0YURhdGE+IE15Vm9yYmlzRXh0cmFjdG9yOjpnZXRGb3JtYXQoKSBjb25zdCB7CkBAIC0yOTcsNiArMzA4LDcgQEAKICAgICAgICAgdG90YWxTaXplICs9IHBhZ2UtPm1MYWNlW2ldOwogICAgIH0KIAorI2lmIDAKICAgICBTdHJpbmc4IHRtcDsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhZ2UtPm1OdW1TZWdtZW50czsgKytpKSB7CiAgICAgICAgIGNoYXIgeFszMl07CkBAIC0zMDYsNiArMzE4LDcgQEAKICAgICB9CiAKICAgICBMT0dWKCIlYyAlcyIsIHBhZ2UtPm1GbGFncyAmIDEgPyAnKycgOiAnICcsIHRtcC5zdHJpbmcoKSk7CisjZW5kaWYKIAogICAgIHJldHVybiBzaXplb2YoaGVhZGVyKSArIHBhZ2UtPm1OdW1TZWdtZW50cyArIHRvdGFsU2l6ZTsKIH0KQEAgLTQyMSw0NyArNDM0LDYwIEBACiAgICAgfQogfQogCi12b2lkIE15Vm9yYmlzRXh0cmFjdG9yOjppbml0KCkgewotICAgIHZvcmJpc19pbmZvX2luaXQoJm1WaSk7Ci0KLSAgICB2b3JiaXNfY29tbWVudCBtVmM7Ci0KK3N0YXR1c190IE15Vm9yYmlzRXh0cmFjdG9yOjppbml0KCkgewogICAgIG1NZXRhID0gbmV3IE1ldGFEYXRhOwogICAgIG1NZXRhLT5zZXRDU3RyaW5nKGtLZXlNSU1FVHlwZSwgTUVESUFfTUlNRVRZUEVfQVVESU9fVk9SQklTKTsKIAogICAgIE1lZGlhQnVmZmVyICpwYWNrZXQ7Ci0gICAgQ0hFQ0tfRVEocmVhZE5leHRQYWNrZXQoJnBhY2tldCksIE9LKTsKKyAgICBzdGF0dXNfdCBlcnI7CisgICAgaWYgKChlcnIgPSByZWFkTmV4dFBhY2tldCgmcGFja2V0KSkgIT0gT0spIHsKKyAgICAgICAgcmV0dXJuIGVycjsKKyAgICB9CiAgICAgTE9HVigicmVhZCBwYWNrZXQgb2Ygc2l6ZSAlZFxuIiwgcGFja2V0LT5yYW5nZV9sZW5ndGgoKSk7Ci0gICAgdmVyaWZ5SGVhZGVyKHBhY2tldCwgMSk7CisgICAgZXJyID0gdmVyaWZ5SGVhZGVyKHBhY2tldCwgMSk7CiAgICAgcGFja2V0LT5yZWxlYXNlKCk7CiAgICAgcGFja2V0ID0gTlVMTDsKKyAgICBpZiAoZXJyICE9IE9LKSB7CisgICAgICAgIHJldHVybiBlcnI7CisgICAgfQogCi0gICAgQ0hFQ0tfRVEocmVhZE5leHRQYWNrZXQoJnBhY2tldCksIE9LKTsKKyAgICBpZiAoKGVyciA9IHJlYWROZXh0UGFja2V0KCZwYWNrZXQpKSAhPSBPSykgeworICAgICAgICByZXR1cm4gZXJyOworICAgIH0KICAgICBMT0dWKCJyZWFkIHBhY2tldCBvZiBzaXplICVkXG4iLCBwYWNrZXQtPnJhbmdlX2xlbmd0aCgpKTsKLSAgICB2ZXJpZnlIZWFkZXIocGFja2V0LCAzKTsKKyAgICBlcnIgPSB2ZXJpZnlIZWFkZXIocGFja2V0LCAzKTsKICAgICBwYWNrZXQtPnJlbGVhc2UoKTsKICAgICBwYWNrZXQgPSBOVUxMOworICAgIGlmIChlcnIgIT0gT0spIHsKKyAgICAgICAgcmV0dXJuIGVycjsKKyAgICB9CiAKLSAgICBDSEVDS19FUShyZWFkTmV4dFBhY2tldCgmcGFja2V0KSwgT0spOworICAgIGlmICgoZXJyID0gcmVhZE5leHRQYWNrZXQoJnBhY2tldCkpICE9IE9LKSB7CisgICAgICAgIHJldHVybiBlcnI7CisgICAgfQogICAgIExPR1YoInJlYWQgcGFja2V0IG9mIHNpemUgJWRcbiIsIHBhY2tldC0+cmFuZ2VfbGVuZ3RoKCkpOwotICAgIHZlcmlmeUhlYWRlcihwYWNrZXQsIDUpOworICAgIGVyciA9IHZlcmlmeUhlYWRlcihwYWNrZXQsIDUpOwogICAgIHBhY2tldC0+cmVsZWFzZSgpOwogICAgIHBhY2tldCA9IE5VTEw7CisgICAgaWYgKGVyciAhPSBPSykgeworICAgICAgICByZXR1cm4gZXJyOworICAgIH0KIAogICAgIG1GaXJzdERhdGFPZmZzZXQgPSBtT2Zmc2V0ICsgbUN1cnJlbnRQYWdlU2l6ZTsKKworICAgIHJldHVybiBPSzsKIH0KIAotdm9pZCBNeVZvcmJpc0V4dHJhY3Rvcjo6dmVyaWZ5SGVhZGVyKAorc3RhdHVzX3QgTXlWb3JiaXNFeHRyYWN0b3I6OnZlcmlmeUhlYWRlcigKICAgICAgICAgTWVkaWFCdWZmZXIgKmJ1ZmZlciwgdWludDhfdCB0eXBlKSB7CiAgICAgY29uc3QgdWludDhfdCAqZGF0YSA9CiAgICAgICAgIChjb25zdCB1aW50OF90ICopYnVmZmVyLT5kYXRhKCkgKyBidWZmZXItPnJhbmdlX29mZnNldCgpOwogCiAgICAgc2l6ZV90IHNpemUgPSBidWZmZXItPnJhbmdlX2xlbmd0aCgpOwogCi0gICAgQ0hFQ0soc2l6ZSA+PSA3KTsKLQotICAgIENIRUNLX0VRKGRhdGFbMF0sIHR5cGUpOwotICAgIENIRUNLKCFtZW1jbXAoJmRhdGFbMV0sICJ2b3JiaXMiLCA2KSk7CisgICAgaWYgKHNpemUgPCA3IHx8IGRhdGFbMF0gIT0gdHlwZSB8fCBtZW1jbXAoJmRhdGFbMV0sICJ2b3JiaXMiLCA2KSkgeworICAgICAgICByZXR1cm4gRVJST1JfTUFMRk9STUVEOworICAgIH0KIAogICAgIG9nZ19idWZmZXIgYnVmOwogICAgIGJ1Zi5kYXRhID0gKHVpbnQ4X3QgKilkYXRhOwpAQCAtNTA4LDE4ICs1MzQsMjYgQEAKIAogICAgICAgICBjYXNlIDM6CiAgICAgICAgIHsKLSAgICAgICAgICAgIENIRUNLX0VRKDAsIF92b3JiaXNfdW5wYWNrX2NvbW1lbnQoJm1WYywgJmJpdHMpKTsKKyAgICAgICAgICAgIGlmICgwICE9IF92b3JiaXNfdW5wYWNrX2NvbW1lbnQoJm1WYywgJmJpdHMpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SX01BTEZPUk1FRDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcGFyc2VGaWxlTWV0YURhdGEoKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKICAgICAgICAgY2FzZSA1OgogICAgICAgICB7Ci0gICAgICAgICAgICBDSEVDS19FUSgwLCBfdm9yYmlzX3VucGFja19ib29rcygmbVZpLCAmYml0cykpOworICAgICAgICAgICAgaWYgKDAgIT0gX3ZvcmJpc191bnBhY2tfYm9va3MoJm1WaSwgJmJpdHMpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SX01BTEZPUk1FRDsKKyAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgbU1ldGEtPnNldERhdGEoa0tleVZvcmJpc0Jvb2tzLCAwLCBkYXRhLCBzaXplKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQorCisgICAgcmV0dXJuIE9LOwogfQogCiB1aW50NjRfdCBNeVZvcmJpc0V4dHJhY3Rvcjo6YXBwcm94Qml0cmF0ZSgpIHsKQEAgLTUzMCw2ICs1NjQsMTkyIEBACiAgICAgcmV0dXJuIChtVmkuYml0cmF0ZV9sb3dlciArIG1WaS5iaXRyYXRlX3VwcGVyKSAvIDI7CiB9CiAKK3ZvaWQgTXlWb3JiaXNFeHRyYWN0b3I6OnBhcnNlRmlsZU1ldGFEYXRhKCkgeworICAgIG1GaWxlTWV0YSA9IG5ldyBNZXRhRGF0YTsKKyAgICBtRmlsZU1ldGEtPnNldENTdHJpbmcoa0tleU1JTUVUeXBlLCBNRURJQV9NSU1FVFlQRV9DT05UQUlORVJfT0dHKTsKKworICAgIHN0cnVjdCB7CisgICAgICAgIGNvbnN0IGNoYXIgKmNvbnN0IG1UYWc7CisgICAgICAgIHVpbnQzMl90IG1LZXk7CisgICAgfSBrTWFwW10gPSB7CisgICAgICAgIHsgIlRJVExFIiwga0tleVRpdGxlIH0sCisgICAgICAgIHsgIkFSVElTVCIsIGtLZXlBcnRpc3QgfSwKKyAgICAgICAgeyAiQUxCVU0iLCBrS2V5QWxidW0gfSwKKyAgICAgICAgeyAiQ09NUE9TRVIiLCBrS2V5Q29tcG9zZXIgfSwKKyAgICAgICAgeyAiR0VOUkUiLCBrS2V5R2VucmUgfSwKKyAgICAgICAgeyAiQVVUSE9SIiwga0tleUF1dGhvciB9LAorICAgICAgICB7ICJUUkFDS05VTUJFUiIsIGtLZXlDRFRyYWNrTnVtYmVyIH0sCisgICAgICAgIHsgIkRJU0NOVU1CRVIiLCBrS2V5RGlzY051bWJlciB9LAorICAgICAgICB7ICJEQVRFIiwga0tleURhdGUgfSwKKyAgICAgICAgeyAiTFlSSUNJU1QiLCBrS2V5V3JpdGVyIH0sCisgICAgICAgIHsgIk1FVEFEQVRBX0JMT0NLX1BJQ1RVUkUiLCBrS2V5QWxidW1BcnQgfSwKKyAgICB9OworCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtVmMuY29tbWVudHM7ICsraSkgeworICAgICAgICBjb25zdCBjaGFyICpjb21tZW50ID0gbVZjLnVzZXJfY29tbWVudHNbaV07CisKKyAgICAgICAgZm9yIChzaXplX3QgaiA9IDA7IGogPCBzaXplb2Yoa01hcCkgLyBzaXplb2Yoa01hcFswXSk7ICsraikgeworICAgICAgICAgICAgc2l6ZV90IHRhZ0xlbiA9IHN0cmxlbihrTWFwW2pdLm1UYWcpOworICAgICAgICAgICAgaWYgKCFzdHJuY2FzZWNtcChrTWFwW2pdLm1UYWcsIGNvbW1lbnQsIHRhZ0xlbikKKyAgICAgICAgICAgICAgICAgICAgJiYgY29tbWVudFt0YWdMZW5dID09ICc9JykgeworICAgICAgICAgICAgICAgIGlmIChrTWFwW2pdLm1LZXkgPT0ga0tleUFsYnVtQXJ0KSB7CisgICAgICAgICAgICAgICAgICAgIGV4dHJhY3RBbGJ1bUFydCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY29tbWVudFt0YWdMZW4gKyAxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVmMuY29tbWVudF9sZW5ndGhzW2ldIC0gdGFnTGVuIC0gMSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbUZpbGVNZXRhLT5zZXRDU3RyaW5nKGtNYXBbal0ubUtleSwgJmNvbW1lbnRbdGFnTGVuICsgMV0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgfQorCisjaWYgMAorICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbVZjLmNvbW1lbnRzOyArK2kpIHsKKyAgICAgICAgTE9HSSgiY29tbWVudCAjJWQ6ICclcyciLCBpICsgMSwgbVZjLnVzZXJfY29tbWVudHNbaV0pOworICAgIH0KKyNlbmRpZgorfQorCisvLyBUaGUgcmV0dXJuZWQgYnVmZmVyIHNob3VsZCBiZSBmcmVlKClkLgorc3RhdGljIHVpbnQ4X3QgKkRlY29kZUJhc2U2NChjb25zdCBjaGFyICpzLCBzaXplX3Qgc2l6ZSwgc2l6ZV90ICpvdXRTaXplKSB7CisgICAgKm91dFNpemUgPSAwOworCisgICAgaWYgKChzaXplICUgNCkgIT0gMCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBzaXplX3QgbiA9IHNpemU7CisgICAgc2l6ZV90IHBhZGRpbmcgPSAwOworICAgIGlmIChuID49IDEgJiYgc1tuIC0gMV0gPT0gJz0nKSB7CisgICAgICAgIHBhZGRpbmcgPSAxOworCisgICAgICAgIGlmIChuID49IDIgJiYgc1tuIC0gMl0gPT0gJz0nKSB7CisgICAgICAgICAgICBwYWRkaW5nID0gMjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHNpemVfdCBvdXRMZW4gPSAzICogc2l6ZSAvIDQgLSBwYWRkaW5nOworCisgICAgKm91dFNpemUgPSBvdXRMZW47CisKKyAgICB2b2lkICpidWZmZXIgPSBtYWxsb2Mob3V0TGVuKTsKKworICAgIHVpbnQ4X3QgKm91dCA9ICh1aW50OF90ICopYnVmZmVyOworICAgIHNpemVfdCBqID0gMDsKKyAgICB1aW50MzJfdCBhY2N1bSA9IDA7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBuOyArK2kpIHsKKyAgICAgICAgY2hhciBjID0gc1tpXTsKKyAgICAgICAgdW5zaWduZWQgdmFsdWU7CisgICAgICAgIGlmIChjID49ICdBJyAmJiBjIDw9ICdaJykgeworICAgICAgICAgICAgdmFsdWUgPSBjIC0gJ0EnOworICAgICAgICB9IGVsc2UgaWYgKGMgPj0gJ2EnICYmIGMgPD0gJ3onKSB7CisgICAgICAgICAgICB2YWx1ZSA9IDI2ICsgYyAtICdhJzsKKyAgICAgICAgfSBlbHNlIGlmIChjID49ICcwJyAmJiBjIDw9ICc5JykgeworICAgICAgICAgICAgdmFsdWUgPSA1MiArIGMgLSAnMCc7CisgICAgICAgIH0gZWxzZSBpZiAoYyA9PSAnKycpIHsKKyAgICAgICAgICAgIHZhbHVlID0gNjI7CisgICAgICAgIH0gZWxzZSBpZiAoYyA9PSAnLycpIHsKKyAgICAgICAgICAgIHZhbHVlID0gNjM7CisgICAgICAgIH0gZWxzZSBpZiAoYyAhPSAnPScpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKGkgPCBuIC0gcGFkZGluZykgeworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YWx1ZSA9IDA7CisgICAgICAgIH0KKworICAgICAgICBhY2N1bSA9IChhY2N1bSA8PCA2KSB8IHZhbHVlOworCisgICAgICAgIGlmICgoKGkgKyAxKSAlIDQpID09IDApIHsKKyAgICAgICAgICAgIG91dFtqKytdID0gKGFjY3VtID4+IDE2KTsKKworICAgICAgICAgICAgaWYgKGogPCBvdXRMZW4pIHsgb3V0W2orK10gPSAoYWNjdW0gPj4gOCkgJiAweGZmOyB9CisgICAgICAgICAgICBpZiAoaiA8IG91dExlbikgeyBvdXRbaisrXSA9IGFjY3VtICYgMHhmZjsgfQorCisgICAgICAgICAgICBhY2N1bSA9IDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gKHVpbnQ4X3QgKilidWZmZXI7Cit9CisKK3ZvaWQgTXlWb3JiaXNFeHRyYWN0b3I6OmV4dHJhY3RBbGJ1bUFydChjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSkgeworICAgIExPR1YoImV4dHJhY3RBbGJ1bUFydCBmcm9tICclcyciLCAoY29uc3QgY2hhciAqKWRhdGEpOworCisgICAgc2l6ZV90IGZsYWNTaXplOworICAgIHVpbnQ4X3QgKmZsYWMgPSBEZWNvZGVCYXNlNjQoKGNvbnN0IGNoYXIgKilkYXRhLCBzaXplLCAmZmxhY1NpemUpOworCisgICAgaWYgKGZsYWMgPT0gTlVMTCkgeworICAgICAgICBMT0dFKCJtYWxmb3JtZWQgYmFzZTY0IGVuY29kZWQgZGF0YS4iKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIExPR1YoImdvdCBmbGFjIG9mIHNpemUgJWQiLCBmbGFjU2l6ZSk7CisKKyAgICB1aW50MzJfdCBwaWNUeXBlOworICAgIHVpbnQzMl90IHR5cGVMZW47CisgICAgdWludDMyX3QgZGVzY0xlbjsKKyAgICB1aW50MzJfdCBkYXRhTGVuOworICAgIGNoYXIgdHlwZVsxMjhdOworCisgICAgaWYgKGZsYWNTaXplIDwgOCkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisgICAgcGljVHlwZSA9IFUzMl9BVChmbGFjKTsKKworICAgIGlmIChwaWNUeXBlICE9IDMpIHsKKyAgICAgICAgLy8gVGhpcyBpcyBub3QgYSBmcm9udCBjb3Zlci4KKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworICAgIHR5cGVMZW4gPSBVMzJfQVQoJmZsYWNbNF0pOworICAgIGlmICh0eXBlTGVuICsgMSA+IHNpemVvZih0eXBlKSkgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisgICAgaWYgKGZsYWNTaXplIDwgOCArIHR5cGVMZW4pIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKworICAgIG1lbWNweSh0eXBlLCAmZmxhY1s4XSwgdHlwZUxlbik7CisgICAgdHlwZVt0eXBlTGVuXSA9ICdcMCc7CisKKyAgICBMT0dWKCJwaWNUeXBlID0gJWQsIHR5cGUgPSAnJXMnIiwgcGljVHlwZSwgdHlwZSk7CisKKyAgICBpZiAoIXN0cmNtcCh0eXBlLCAiLS0+IikpIHsKKyAgICAgICAgLy8gVGhpcyBpcyBub3QgaW5saW5lIGNvdmVyIGFydCwgYnV0IGFuIGV4dGVybmFsIHVybCBpbnN0ZWFkLgorICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisgICAgZGVzY0xlbiA9IFUzMl9BVCgmZmxhY1s4ICsgdHlwZUxlbl0pOworCisgICAgaWYgKGZsYWNTaXplIDwgMzIgKyB0eXBlTGVuICsgZGVzY0xlbikgeworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisgICAgZGF0YUxlbiA9IFUzMl9BVCgmZmxhY1s4ICsgdHlwZUxlbiArIDQgKyBkZXNjTGVuICsgMTZdKTsKKworICAgIGlmIChmbGFjU2l6ZSA8IDMyICsgdHlwZUxlbiArIGRlc2NMZW4gKyBkYXRhTGVuKSB7CisgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CisKKyAgICBMT0dWKCJnb3QgaW1hZ2UgZGF0YSwgJWQgdHJhaWxpbmcgYnl0ZXMiLAorICAgICAgICAgZmxhY1NpemUgLSAzMiAtIHR5cGVMZW4gLSBkZXNjTGVuIC0gZGF0YUxlbik7CisKKyAgICBtRmlsZU1ldGEtPnNldERhdGEoCisgICAgICAgICAgICBrS2V5QWxidW1BcnQsIDAsICZmbGFjWzggKyB0eXBlTGVuICsgNCArIGRlc2NMZW4gKyAyMF0sIGRhdGFMZW4pOworCisgICAgbUZpbGVNZXRhLT5zZXRDU3RyaW5nKGtLZXlBbGJ1bUFydE1JTUUsIHR5cGUpOworCitleGl0OgorICAgIGZyZWUoZmxhYyk7CisgICAgZmxhYyA9IE5VTEw7Cit9CisKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKIE9nZ0V4dHJhY3Rvcjo6T2dnRXh0cmFjdG9yKGNvbnN0IHNwPERhdGFTb3VyY2U+ICZzb3VyY2UpCkBAIC01MzcsMTAgKzc1NywxMSBAQAogICAgICAgbUluaXRDaGVjayhOT19JTklUKSwKICAgICAgIG1JbXBsKE5VTEwpIHsKICAgICBtSW1wbCA9IG5ldyBNeVZvcmJpc0V4dHJhY3RvcihtRGF0YVNvdXJjZSk7Ci0gICAgQ0hFQ0tfRVEobUltcGwtPnNlZWtUb09mZnNldCgwKSwgT0spOwotICAgIG1JbXBsLT5pbml0KCk7CisgICAgbUluaXRDaGVjayA9IG1JbXBsLT5zZWVrVG9PZmZzZXQoMCk7CiAKLSAgICBtSW5pdENoZWNrID0gT0s7CisgICAgaWYgKG1Jbml0Q2hlY2sgPT0gT0spIHsKKyAgICAgICAgbUluaXRDaGVjayA9IG1JbXBsLT5pbml0KCk7CisgICAgfQogfQogCiBPZ2dFeHRyYWN0b3I6On5PZ2dFeHRyYWN0b3IoKSB7CkBAIC01NzAsMTUgKzc5MSw3IEBACiB9CiAKIHNwPE1ldGFEYXRhPiBPZ2dFeHRyYWN0b3I6OmdldE1ldGFEYXRhKCkgewotICAgIHNwPE1ldGFEYXRhPiBtZXRhID0gbmV3IE1ldGFEYXRhOwotCi0gICAgaWYgKG1Jbml0Q2hlY2sgIT0gT0spIHsKLSAgICAgICAgcmV0dXJuIG1ldGE7Ci0gICAgfQotCi0gICAgbWV0YS0+c2V0Q1N0cmluZyhrS2V5TUlNRVR5cGUsIE1FRElBX01JTUVUWVBFX0NPTlRBSU5FUl9PR0cpOwotCi0gICAgcmV0dXJuIG1ldGE7CisgICAgcmV0dXJuIG1JbXBsLT5nZXRGaWxlTWV0YURhdGEoKTsKIH0KIAogYm9vbCBTbmlmZk9nZygKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L1ByZWZldGNoZXIuY3BwIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvUHJlZmV0Y2hlci5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1MGE5ZjkuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvUHJlZmV0Y2hlci5jcHAKKysrIC9kZXYvbnVsbApAQCAtMSw0NzYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLSNkZWZpbmUgTE9HX1RBRyAiUHJlZmV0Y2hlciIKLS8vI2RlZmluZSBMT0dfTkRFQlVHIDAKLSNpbmNsdWRlIDx1dGlscy9Mb2cuaD4KLQotI2luY2x1ZGUgImluY2x1ZGUvUHJlZmV0Y2hlci5oIgotCi0jaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFCdWZmZXIuaD4KLSNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYURlYnVnLmg+Ci0jaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFFcnJvcnMuaD4KLSNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYVNvdXJjZS5oPgotI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01ldGFEYXRhLmg+Ci0jaW5jbHVkZSA8dXRpbHMvTGlzdC5oPgotCi1uYW1lc3BhY2UgYW5kcm9pZCB7Ci0KLXN0cnVjdCBQcmVmZXRjaGVkU291cmNlIDogcHVibGljIE1lZGlhU291cmNlIHsKLSAgICBQcmVmZXRjaGVkU291cmNlKAotICAgICAgICAgICAgc2l6ZV90IGluZGV4LAotICAgICAgICAgICAgY29uc3Qgc3A8TWVkaWFTb3VyY2U+ICZzb3VyY2UpOwotCi0gICAgdmlydHVhbCBzdGF0dXNfdCBzdGFydChNZXRhRGF0YSAqcGFyYW1zKTsKLSAgICB2aXJ0dWFsIHN0YXR1c190IHN0b3AoKTsKLQotICAgIHZpcnR1YWwgc3RhdHVzX3QgcmVhZCgKLSAgICAgICAgICAgIE1lZGlhQnVmZmVyICoqYnVmZmVyLCBjb25zdCBSZWFkT3B0aW9ucyAqb3B0aW9ucyk7Ci0KLSAgICB2aXJ0dWFsIHNwPE1ldGFEYXRhPiBnZXRGb3JtYXQoKTsKLQotcHJvdGVjdGVkOgotICAgIHZpcnR1YWwgflByZWZldGNoZWRTb3VyY2UoKTsKLQotcHJpdmF0ZToKLSAgICBmcmllbmQgc3RydWN0IFByZWZldGNoZXI7Ci0KLSAgICBNdXRleCBtTG9jazsKLSAgICBDb25kaXRpb24gbUNvbmRpdGlvbjsKLQotICAgIHNwPE1lZGlhU291cmNlPiBtU291cmNlOwotICAgIHNpemVfdCBtSW5kZXg7Ci0gICAgYm9vbCBtU3RhcnRlZDsKLSAgICBib29sIG1SZWFjaGVkRU9TOwotICAgIHN0YXR1c190IG1GaW5hbFN0YXR1czsKLSAgICBpbnQ2NF90IG1TZWVrVGltZVVzOwotICAgIGludDY0X3QgbUNhY2hlRHVyYXRpb25VczsKLSAgICBzaXplX3QgbUNhY2hlU2l6ZUJ5dGVzOwotICAgIGJvb2wgbVByZWZldGNoZXJTdG9wcGVkOwotICAgIGJvb2wgbUN1cnJlbnRseVByZWZldGNoaW5nOwotCi0gICAgTGlzdDxNZWRpYUJ1ZmZlciAqPiBtQ2FjaGVkQnVmZmVyczsKLQotICAgIC8vIFJldHVybnMgdHJ1ZSBpZmYgc291cmNlIGlzIGN1cnJlbnRseSBjYWNoaW5nLgotICAgIGJvb2wgZ2V0Q2FjaGVEdXJhdGlvblVzKGludDY0X3QgKmR1cmF0aW9uVXMsIHNpemVfdCAqdG90YWxTaXplID0gTlVMTCk7Ci0KLSAgICB2b2lkIHVwZGF0ZUNhY2hlRHVyYXRpb25fbCgpOwotICAgIHZvaWQgY2xlYXJDYWNoZV9sKCk7Ci0KLSAgICB2b2lkIGNhY2hlTW9yZSgpOwotICAgIHZvaWQgb25QcmVmZXRjaGVyU3RvcHBlZCgpOwotCi0gICAgUHJlZmV0Y2hlZFNvdXJjZShjb25zdCBQcmVmZXRjaGVkU291cmNlICYpOwotICAgIFByZWZldGNoZWRTb3VyY2UgJm9wZXJhdG9yPShjb25zdCBQcmVmZXRjaGVkU291cmNlICYpOwotfTsKLQotUHJlZmV0Y2hlcjo6UHJlZmV0Y2hlcigpCi0gICAgOiBtRG9uZShmYWxzZSksCi0gICAgICBtVGhyZWFkRXhpdGVkKGZhbHNlKSB7Ci0gICAgc3RhcnRUaHJlYWQoKTsKLX0KLQotUHJlZmV0Y2hlcjo6flByZWZldGNoZXIoKSB7Ci0gICAgc3RvcFRocmVhZCgpOwotfQotCi1zcDxNZWRpYVNvdXJjZT4gUHJlZmV0Y2hlcjo6YWRkU291cmNlKGNvbnN0IHNwPE1lZGlhU291cmNlPiAmc291cmNlKSB7Ci0gICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKLQotICAgIHNwPFByZWZldGNoZWRTb3VyY2U+IHBzb3VyY2UgPQotICAgICAgICBuZXcgUHJlZmV0Y2hlZFNvdXJjZShtU291cmNlcy5zaXplKCksIHNvdXJjZSk7Ci0KLSAgICBtU291cmNlcy5hZGQocHNvdXJjZSk7Ci0KLSAgICByZXR1cm4gcHNvdXJjZTsKLX0KLQotdm9pZCBQcmVmZXRjaGVyOjpzdGFydFRocmVhZCgpIHsKLSAgICBtVGhyZWFkRXhpdGVkID0gZmFsc2U7Ci0gICAgbURvbmUgPSBmYWxzZTsKLQotICAgIGludCByZXMgPSBhbmRyb2lkQ3JlYXRlVGhyZWFkRXRjKAotICAgICAgICAgICAgVGhyZWFkV3JhcHBlciwgdGhpcywgIlByZWZldGNoZXIiLAotICAgICAgICAgICAgQU5EUk9JRF9QUklPUklUWV9ERUZBVUxULCAwLCAmbVRocmVhZCk7Ci0KLSAgICBDSEVDS19FUShyZXMsIDEpOwotfQotCi12b2lkIFByZWZldGNoZXI6OnN0b3BUaHJlYWQoKSB7Ci0gICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKLQotICAgIHdoaWxlICghbVRocmVhZEV4aXRlZCkgewotICAgICAgICBtRG9uZSA9IHRydWU7Ci0gICAgICAgIG1Db25kaXRpb24uc2lnbmFsKCk7Ci0gICAgICAgIG1Db25kaXRpb24ud2FpdChtTG9jayk7Ci0gICAgfQotfQotCi0vLyBzdGF0aWMKLWludCBQcmVmZXRjaGVyOjpUaHJlYWRXcmFwcGVyKHZvaWQgKm1lKSB7Ci0gICAgc3RhdGljX2Nhc3Q8UHJlZmV0Y2hlciAqPihtZSktPnRocmVhZEZ1bmMoKTsKLQotICAgIHJldHVybiAwOwotfQotCi0vLyBDYWNoZSBhdCBtb3N0IDEgbWluIGZvciBlYWNoIHNvdXJjZS4KLXN0YXRpYyBpbnQ2NF90IGtNYXhDYWNoZUR1cmF0aW9uVXMgPSA2MCAqIDEwMDAwMDBsbDsKLQotLy8gQXQgdGhlIHNhbWUgdGltZSBjYWNoZSBhdCBtb3N0IDVNQiBwZXIgc291cmNlLgotc3RhdGljIHNpemVfdCBrTWF4Q2FjaGVTaXplQnl0ZXMgPSA1ICogMTAyNCAqIDEwMjQ7Ci0KLS8vIElmIHRoZSBhbW91bnQgb2YgY2FjaGVkIGRhdGEgZHJvcHMgYmVsb3cgdGhpcywKLS8vIGZpbGwgdGhlIGNhY2hlIHVwIHRvIHRoZSBtYXggZHVyYXRpb24gYWdhaW4uCi1zdGF0aWMgaW50NjRfdCBrTG93V2F0ZXJEdXJhdGlvblVzID0gNTAwMDAwMGxsOwotCi12b2lkIFByZWZldGNoZXI6OnRocmVhZEZ1bmMoKSB7Ci0gICAgYm9vbCBmaWxsaW5nQ2FjaGUgPSBmYWxzZTsKLQotICAgIGZvciAoOzspIHsKLSAgICAgICAgc3A8UHJlZmV0Y2hlZFNvdXJjZT4gbWluU291cmNlOwotICAgICAgICBpbnQ2NF90IG1pbkNhY2hlRHVyYXRpb25VcyA9IC0xOwotCi0gICAgICAgIHsKLSAgICAgICAgICAgIE11dGV4OjpBdXRvbG9jayBhdXRvTG9jayhtTG9jayk7Ci0gICAgICAgICAgICBpZiAobURvbmUpIHsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbUNvbmRpdGlvbi53YWl0UmVsYXRpdmUoCi0gICAgICAgICAgICAgICAgICAgIG1Mb2NrLCBmaWxsaW5nQ2FjaGUgPyAxbGwgOiAxMDAwMDAwMDAwbGwpOwotCi0KLSAgICAgICAgICAgIHNzaXplX3QgbWluSW5kZXggPSAtMTsKLSAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbVNvdXJjZXMuc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgICAgICBzcDxQcmVmZXRjaGVkU291cmNlPiBzb3VyY2UgPSBtU291cmNlc1tpXS5wcm9tb3RlKCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoc291cmNlID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaW50NjRfdCBjYWNoZUR1cmF0aW9uVXM7Ci0gICAgICAgICAgICAgICAgc2l6ZV90IGNhY2hlU2l6ZUJ5dGVzOwotICAgICAgICAgICAgICAgIGlmICghc291cmNlLT5nZXRDYWNoZUR1cmF0aW9uVXMoJmNhY2hlRHVyYXRpb25VcywgJmNhY2hlU2l6ZUJ5dGVzKSkgewotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAoY2FjaGVTaXplQnl0ZXMgPiBrTWF4Q2FjaGVTaXplQnl0ZXMpIHsKLSAgICAgICAgICAgICAgICAgICAgTE9HSSgibWF4IGNhY2hlIHNpemUgcmVhY2hlZCIpOwotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAobVNvdXJjZXMuc2l6ZSgpID4gMSAmJiBjYWNoZUR1cmF0aW9uVXMgPj0ga01heENhY2hlRHVyYXRpb25VcykgewotICAgICAgICAgICAgICAgICAgICBMT0dJKCJtYXggZHVyYXRpb24gcmVhY2hlZCwgc2l6ZSA9ICVkIGJ5dGVzIiwgY2FjaGVTaXplQnl0ZXMpOwotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAobWluSW5kZXggPCAwIHx8IGNhY2hlRHVyYXRpb25VcyA8IG1pbkNhY2hlRHVyYXRpb25VcykgewotICAgICAgICAgICAgICAgICAgICBtaW5DYWNoZUR1cmF0aW9uVXMgPSBjYWNoZUR1cmF0aW9uVXM7Ci0gICAgICAgICAgICAgICAgICAgIG1pbkluZGV4ID0gaTsKLSAgICAgICAgICAgICAgICAgICAgbWluU291cmNlID0gc291cmNlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKG1pbkluZGV4IDwgMCkgewotICAgICAgICAgICAgICAgIGlmIChmaWxsaW5nQ2FjaGUpIHsKLSAgICAgICAgICAgICAgICAgICAgTE9HVigiWyVwXSBkb25lIGZpbGxpbmcgdGhlIGNhY2hlLCBhYm92ZSBoaWdoIHdhdGVyIG1hcmsuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzKTsKLSAgICAgICAgICAgICAgICAgICAgZmlsbGluZ0NhY2hlID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFmaWxsaW5nQ2FjaGUgJiYgbWluQ2FjaGVEdXJhdGlvblVzIDwga0xvd1dhdGVyRHVyYXRpb25VcykgewotICAgICAgICAgICAgTE9HSSgiWyVwXSBjYWNoZSBiZWxvdyBsb3cgd2F0ZXIgbWFyaywgZmlsbGluZyBjYWNoZS4iLCB0aGlzKTsKLSAgICAgICAgICAgIGZpbGxpbmdDYWNoZSA9IHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZmlsbGluZ0NhY2hlKSB7Ci0gICAgICAgICAgICAvLyBNYWtlIHN1cmUgbm90IHRvIGhvbGQgdGhlIGxvY2sgd2hpbGUgY2FsbGluZyBpbnRvIHRoZSBzb3VyY2UuCi0gICAgICAgICAgICAvLyBUaGUgbG9jayBndWFyZHMgdGhlIGxpc3Qgb2Ygc291cmNlcywgbm90IHRoZSBpbmRpdmlkdWFsIHNvdXJjZXMKLSAgICAgICAgICAgIC8vIHRoZW1zZWx2ZXMuCi0gICAgICAgICAgICBtaW5Tb3VyY2UtPmNhY2hlTW9yZSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1Tb3VyY2VzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIHNwPFByZWZldGNoZWRTb3VyY2U+IHNvdXJjZSA9IG1Tb3VyY2VzW2ldLnByb21vdGUoKTsKLQotICAgICAgICBpZiAoc291cmNlID09IE5VTEwpIHsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgc291cmNlLT5vblByZWZldGNoZXJTdG9wcGVkKCk7Ci0gICAgfQotCi0gICAgbVRocmVhZEV4aXRlZCA9IHRydWU7Ci0gICAgbUNvbmRpdGlvbi5zaWduYWwoKTsKLX0KLQotaW50NjRfdCBQcmVmZXRjaGVyOjpnZXRDYWNoZWREdXJhdGlvblVzKGJvb2wgKm5vTW9yZURhdGEpIHsKLSAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobUxvY2spOwotCi0gICAgaW50NjRfdCBtaW5DYWNoZUR1cmF0aW9uVXMgPSAtMTsKLSAgICBzc2l6ZV90IG1pbkluZGV4ID0gLTE7Ci0gICAgYm9vbCBhbnlTb3VyY2VBY3RpdmUgPSBmYWxzZTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1Tb3VyY2VzLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGludDY0X3QgY2FjaGVEdXJhdGlvblVzOwotICAgICAgICBzcDxQcmVmZXRjaGVkU291cmNlPiBzb3VyY2UgPSBtU291cmNlc1tpXS5wcm9tb3RlKCk7Ci0gICAgICAgIGlmIChzb3VyY2UgPT0gTlVMTCkgewotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoc291cmNlLT5nZXRDYWNoZUR1cmF0aW9uVXMoJmNhY2hlRHVyYXRpb25VcykpIHsKLSAgICAgICAgICAgIGFueVNvdXJjZUFjdGl2ZSA9IHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobWluSW5kZXggPCAwIHx8IGNhY2hlRHVyYXRpb25VcyA8IG1pbkNhY2hlRHVyYXRpb25VcykgewotICAgICAgICAgICAgbWluQ2FjaGVEdXJhdGlvblVzID0gY2FjaGVEdXJhdGlvblVzOwotICAgICAgICAgICAgbWluSW5kZXggPSBpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKG5vTW9yZURhdGEpIHsKLSAgICAgICAgKm5vTW9yZURhdGEgPSAhYW55U291cmNlQWN0aXZlOwotICAgIH0KLQotICAgIHJldHVybiBtaW5DYWNoZUR1cmF0aW9uVXMgPCAwID8gMCA6IG1pbkNhY2hlRHVyYXRpb25VczsKLX0KLQotc3RhdHVzX3QgUHJlZmV0Y2hlcjo6cHJlcGFyZSgKLSAgICAgICAgYm9vbCAoKmNvbnRpbnVlRnVuYykodm9pZCAqY29va2llKSwgdm9pZCAqY29va2llKSB7Ci0gICAgLy8gRmlsbCB0aGUgY2FjaGUuCi0KLSAgICBpbnQ2NF90IGR1cmF0aW9uOwotICAgIGJvb2wgbm9Nb3JlRGF0YTsKLSAgICBkbyB7Ci0gICAgICAgIHVzbGVlcCgxMDAwMDApOwotCi0gICAgICAgIGlmIChjb250aW51ZUZ1bmMgJiYgISgqY29udGludWVGdW5jKShjb29raWUpKSB7Ci0gICAgICAgICAgICByZXR1cm4gLUVJTlRSOwotICAgICAgICB9Ci0KLSAgICAgICAgZHVyYXRpb24gPSBnZXRDYWNoZWREdXJhdGlvblVzKCZub01vcmVEYXRhKTsKLSAgICB9IHdoaWxlICghbm9Nb3JlRGF0YSAmJiBkdXJhdGlvbiA8IDIwMDAwMDBsbCk7Ci0KLSAgICByZXR1cm4gT0s7Ci19Ci0KLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0KLVByZWZldGNoZWRTb3VyY2U6OlByZWZldGNoZWRTb3VyY2UoCi0gICAgICAgIHNpemVfdCBpbmRleCwKLSAgICAgICAgY29uc3Qgc3A8TWVkaWFTb3VyY2U+ICZzb3VyY2UpCi0gICAgOiBtU291cmNlKHNvdXJjZSksCi0gICAgICBtSW5kZXgoaW5kZXgpLAotICAgICAgbVN0YXJ0ZWQoZmFsc2UpLAotICAgICAgbVJlYWNoZWRFT1MoZmFsc2UpLAotICAgICAgbVNlZWtUaW1lVXMoMCksCi0gICAgICBtQ2FjaGVEdXJhdGlvblVzKDApLAotICAgICAgbUNhY2hlU2l6ZUJ5dGVzKDApLAotICAgICAgbVByZWZldGNoZXJTdG9wcGVkKGZhbHNlKSwKLSAgICAgIG1DdXJyZW50bHlQcmVmZXRjaGluZyhmYWxzZSkgewotfQotCi1QcmVmZXRjaGVkU291cmNlOjp+UHJlZmV0Y2hlZFNvdXJjZSgpIHsKLSAgICBpZiAobVN0YXJ0ZWQpIHsKLSAgICAgICAgc3RvcCgpOwotICAgIH0KLX0KLQotc3RhdHVzX3QgUHJlZmV0Y2hlZFNvdXJjZTo6c3RhcnQoTWV0YURhdGEgKnBhcmFtcykgewotICAgIENIRUNLKCFtU3RhcnRlZCk7Ci0KLSAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobUxvY2spOwotCi0gICAgc3RhdHVzX3QgZXJyID0gbVNvdXJjZS0+c3RhcnQocGFyYW1zKTsKLQotICAgIGlmIChlcnIgIT0gT0spIHsKLSAgICAgICAgcmV0dXJuIGVycjsKLSAgICB9Ci0KLSAgICBtU3RhcnRlZCA9IHRydWU7Ci0KLSAgICByZXR1cm4gT0s7Ci19Ci0KLXN0YXR1c190IFByZWZldGNoZWRTb3VyY2U6OnN0b3AoKSB7Ci0gICAgQ0hFQ0sobVN0YXJ0ZWQpOwotCi0gICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKLQotICAgIHdoaWxlIChtQ3VycmVudGx5UHJlZmV0Y2hpbmcpIHsKLSAgICAgICAgbUNvbmRpdGlvbi53YWl0KG1Mb2NrKTsKLSAgICB9Ci0KLSAgICBjbGVhckNhY2hlX2woKTsKLQotICAgIHN0YXR1c190IGVyciA9IG1Tb3VyY2UtPnN0b3AoKTsKLQotICAgIG1TdGFydGVkID0gZmFsc2U7Ci0KLSAgICByZXR1cm4gZXJyOwotfQotCi1zdGF0dXNfdCBQcmVmZXRjaGVkU291cmNlOjpyZWFkKAotICAgICAgICBNZWRpYUJ1ZmZlciAqKm91dCwgY29uc3QgUmVhZE9wdGlvbnMgKm9wdGlvbnMpIHsKLSAgICAqb3V0ID0gTlVMTDsKLQotICAgIE11dGV4OjpBdXRvbG9jayBhdXRvTG9jayhtTG9jayk7Ci0KLSAgICBDSEVDSyhtU3RhcnRlZCk7Ci0KLSAgICBpbnQ2NF90IHNlZWtUaW1lVXM7Ci0gICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy0+Z2V0U2Vla1RvKCZzZWVrVGltZVVzKSkgewotICAgICAgICBDSEVDSyhzZWVrVGltZVVzID49IDApOwotCi0gICAgICAgIGNsZWFyQ2FjaGVfbCgpOwotCi0gICAgICAgIG1SZWFjaGVkRU9TID0gZmFsc2U7Ci0gICAgICAgIG1TZWVrVGltZVVzID0gc2Vla1RpbWVVczsKLSAgICB9Ci0KLSAgICB3aGlsZSAoIW1QcmVmZXRjaGVyU3RvcHBlZCAmJiAhbVJlYWNoZWRFT1MgJiYgbUNhY2hlZEJ1ZmZlcnMuZW1wdHkoKSkgewotICAgICAgICBtQ29uZGl0aW9uLndhaXQobUxvY2spOwotICAgIH0KLQotICAgIGlmIChtQ2FjaGVkQnVmZmVycy5lbXB0eSgpKSB7Ci0gICAgICAgIHJldHVybiBtUmVhY2hlZEVPUyA/IG1GaW5hbFN0YXR1cyA6IEVSUk9SX0VORF9PRl9TVFJFQU07Ci0gICAgfQotCi0gICAgKm91dCA9ICptQ2FjaGVkQnVmZmVycy5iZWdpbigpOwotICAgIG1DYWNoZWRCdWZmZXJzLmVyYXNlKG1DYWNoZWRCdWZmZXJzLmJlZ2luKCkpOwotICAgIHVwZGF0ZUNhY2hlRHVyYXRpb25fbCgpOwotICAgIG1DYWNoZVNpemVCeXRlcyAtPSAoKm91dCktPnNpemUoKTsKLQotICAgIHJldHVybiBPSzsKLX0KLQotc3A8TWV0YURhdGE+IFByZWZldGNoZWRTb3VyY2U6OmdldEZvcm1hdCgpIHsKLSAgICByZXR1cm4gbVNvdXJjZS0+Z2V0Rm9ybWF0KCk7Ci19Ci0KLWJvb2wgUHJlZmV0Y2hlZFNvdXJjZTo6Z2V0Q2FjaGVEdXJhdGlvblVzKAotICAgICAgICBpbnQ2NF90ICpkdXJhdGlvblVzLCBzaXplX3QgKnRvdGFsU2l6ZSkgewotICAgIE11dGV4OjpBdXRvbG9jayBhdXRvTG9jayhtTG9jayk7Ci0KLSAgICAqZHVyYXRpb25VcyA9IG1DYWNoZUR1cmF0aW9uVXM7Ci0gICAgaWYgKHRvdGFsU2l6ZSAhPSBOVUxMKSB7Ci0gICAgICAgICp0b3RhbFNpemUgPSBtQ2FjaGVTaXplQnl0ZXM7Ci0gICAgfQotCi0gICAgaWYgKCFtU3RhcnRlZCB8fCBtUmVhY2hlZEVPUykgewotICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLXZvaWQgUHJlZmV0Y2hlZFNvdXJjZTo6Y2FjaGVNb3JlKCkgewotICAgIE1lZGlhU291cmNlOjpSZWFkT3B0aW9ucyBvcHRpb25zOwotCi0gICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKLQotICAgIGlmICghbVN0YXJ0ZWQpIHsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIG1DdXJyZW50bHlQcmVmZXRjaGluZyA9IHRydWU7Ci0KLSAgICBpZiAobVNlZWtUaW1lVXMgPj0gMCkgewotICAgICAgICBvcHRpb25zLnNldFNlZWtUbyhtU2Vla1RpbWVVcyk7Ci0gICAgICAgIG1TZWVrVGltZVVzID0gLTE7Ci0gICAgfQotCi0gICAgLy8gRW5zdXJlIG91ciBvYmplY3QgZG9lcyBub3QgZ28gYXdheSB3aGlsZSB3ZSdyZSBub3QgaG9sZGluZwotICAgIC8vIHRoZSBsb2NrLgotICAgIHNwPFByZWZldGNoZWRTb3VyY2U+IG1lID0gdGhpczsKLQotICAgIG1Mb2NrLnVubG9jaygpOwotICAgIE1lZGlhQnVmZmVyICpidWZmZXI7Ci0gICAgc3RhdHVzX3QgZXJyID0gbVNvdXJjZS0+cmVhZCgmYnVmZmVyLCAmb3B0aW9ucyk7Ci0gICAgbUxvY2subG9jaygpOwotCi0gICAgaWYgKGVyciAhPSBPSykgewotICAgICAgICBtQ3VycmVudGx5UHJlZmV0Y2hpbmcgPSBmYWxzZTsKLSAgICAgICAgbVJlYWNoZWRFT1MgPSB0cnVlOwotICAgICAgICBtRmluYWxTdGF0dXMgPSBlcnI7Ci0gICAgICAgIG1Db25kaXRpb24uc2lnbmFsKCk7Ci0KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIENIRUNLKGJ1ZmZlciAhPSBOVUxMKTsKLQotICAgIE1lZGlhQnVmZmVyICpjb3B5ID0gbmV3IE1lZGlhQnVmZmVyKGJ1ZmZlci0+cmFuZ2VfbGVuZ3RoKCkpOwotICAgIG1lbWNweShjb3B5LT5kYXRhKCksCi0gICAgICAgICAgIChjb25zdCB1aW50OF90ICopYnVmZmVyLT5kYXRhKCkgKyBidWZmZXItPnJhbmdlX29mZnNldCgpLAotICAgICAgICAgICBidWZmZXItPnJhbmdlX2xlbmd0aCgpKTsKLQotICAgIHNwPE1ldGFEYXRhPiBmcm9tID0gYnVmZmVyLT5tZXRhX2RhdGEoKTsKLSAgICBzcDxNZXRhRGF0YT4gdG8gPSBjb3B5LT5tZXRhX2RhdGEoKTsKLQotICAgIGludDY0X3QgdGltZVVzOwotICAgIGlmIChmcm9tLT5maW5kSW50NjQoa0tleVRpbWUsICZ0aW1lVXMpKSB7Ci0gICAgICAgIHRvLT5zZXRJbnQ2NChrS2V5VGltZSwgdGltZVVzKTsKLSAgICB9Ci0KLSAgICBidWZmZXItPnJlbGVhc2UoKTsKLSAgICBidWZmZXIgPSBOVUxMOwotCi0gICAgbUNhY2hlZEJ1ZmZlcnMucHVzaF9iYWNrKGNvcHkpOwotICAgIHVwZGF0ZUNhY2hlRHVyYXRpb25fbCgpOwotICAgIG1DYWNoZVNpemVCeXRlcyArPSBjb3B5LT5zaXplKCk7Ci0KLSAgICBtQ3VycmVudGx5UHJlZmV0Y2hpbmcgPSBmYWxzZTsKLSAgICBtQ29uZGl0aW9uLnNpZ25hbCgpOwotfQotCi12b2lkIFByZWZldGNoZWRTb3VyY2U6OnVwZGF0ZUNhY2hlRHVyYXRpb25fbCgpIHsKLSAgICBpZiAobUNhY2hlZEJ1ZmZlcnMuc2l6ZSgpIDwgMikgewotICAgICAgICBtQ2FjaGVEdXJhdGlvblVzID0gMDsKLSAgICB9IGVsc2UgewotICAgICAgICBpbnQ2NF90IGZpcnN0VGltZVVzLCBsYXN0VGltZVVzOwotICAgICAgICBDSEVDSygoKm1DYWNoZWRCdWZmZXJzLmJlZ2luKCkpLT5tZXRhX2RhdGEoKS0+ZmluZEludDY0KAotICAgICAgICAgICAgICAgICAgICBrS2V5VGltZSwgJmZpcnN0VGltZVVzKSk7Ci0gICAgICAgIENIRUNLKCgqLS1tQ2FjaGVkQnVmZmVycy5lbmQoKSktPm1ldGFfZGF0YSgpLT5maW5kSW50NjQoCi0gICAgICAgICAgICAgICAgICAgIGtLZXlUaW1lLCAmbGFzdFRpbWVVcykpOwotCi0gICAgICAgIG1DYWNoZUR1cmF0aW9uVXMgPSBsYXN0VGltZVVzIC0gZmlyc3RUaW1lVXM7Ci0gICAgfQotfQotCi12b2lkIFByZWZldGNoZWRTb3VyY2U6OmNsZWFyQ2FjaGVfbCgpIHsKLSAgICBMaXN0PE1lZGlhQnVmZmVyICo+OjppdGVyYXRvciBpdCA9IG1DYWNoZWRCdWZmZXJzLmJlZ2luKCk7Ci0gICAgd2hpbGUgKGl0ICE9IG1DYWNoZWRCdWZmZXJzLmVuZCgpKSB7Ci0gICAgICAgICgqaXQpLT5yZWxlYXNlKCk7Ci0KLSAgICAgICAgaXQgPSBtQ2FjaGVkQnVmZmVycy5lcmFzZShpdCk7Ci0gICAgfQotCi0gICAgdXBkYXRlQ2FjaGVEdXJhdGlvbl9sKCk7Ci0gICAgbUNhY2hlU2l6ZUJ5dGVzID0gMDsKLX0KLQotdm9pZCBQcmVmZXRjaGVkU291cmNlOjpvblByZWZldGNoZXJTdG9wcGVkKCkgewotICAgIE11dGV4OjpBdXRvbG9jayBhdXRvTG9jayhtTG9jayk7Ci0gICAgbVByZWZldGNoZXJTdG9wcGVkID0gdHJ1ZTsKLSAgICBtQ29uZGl0aW9uLnNpZ25hbCgpOwotfQotCi19ICAvLyBuYW1lc3BhY2UgYW5kcm9pZApkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvU3RhZ2VmcmlnaHRNZWRpYVNjYW5uZXIuY3BwIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvU3RhZ2VmcmlnaHRNZWRpYVNjYW5uZXIuY3BwCmluZGV4IDAzMjg3ZGQxLi4xNjI5ZTlmIDEwMDY0NAotLS0gYS9tZWRpYS9saWJzdGFnZWZyaWdodC9TdGFnZWZyaWdodE1lZGlhU2Nhbm5lci5jcHAKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvU3RhZ2VmcmlnaHRNZWRpYVNjYW5uZXIuY3BwCkBAIC0yNiwxMCArMjYsNiBAQAogLy8gU29uaXZveCBpbmNsdWRlcwogI2luY2x1ZGUgPGxpYnNvbml2b3gvZWFzLmg+CiAKLS8vIE9nZyBWb3JiaXMgaW5jbHVkZXMKLSNpbmNsdWRlIDxUcmVtb2xvL2l2b3JiaXNjb2RlYy5oPgotI2luY2x1ZGUgPFRyZW1vbG8vaXZvcmJpc2ZpbGUuaD4KLQogbmFtZXNwYWNlIGFuZHJvaWQgewogCiBTdGFnZWZyaWdodE1lZGlhU2Nhbm5lcjo6U3RhZ2VmcmlnaHRNZWRpYVNjYW5uZXIoKQpAQCAtNDIsNyArMzgsOCBAQAogICAgIHN0YXRpYyBjb25zdCBjaGFyICprVmFsaWRFeHRlbnNpb25zW10gPSB7CiAgICAgICAgICIubXAzIiwgIi5tcDQiLCAiLm00YSIsICIuM2dwIiwgIi4zZ3BwIiwgIi4zZzIiLCAiLjNncHAyIiwKICAgICAgICAgIi5tcGVnIiwgIi5vZ2ciLCAiLm1pZCIsICIuc21mIiwgIi5pbXkiLCAiLndtYSIsICIuYWFjIiwKLSAgICAgICAgIi53YXYiLCAiLmFtciIsICIubWlkaSIsICIueG1mIiwgIi5ydHR0bCIsICIucnR4IiwgIi5vdGEiCisgICAgICAgICIud2F2IiwgIi5hbXIiLCAiLm1pZGkiLCAiLnhtZiIsICIucnR0dGwiLCAiLnJ0eCIsICIub3RhIiwKKyAgICAgICAgIi5ta3YiLCAiLm1rYSIsICIud2VibSIsICIudHMiCiAgICAgfTsKICAgICBzdGF0aWMgY29uc3Qgc2l6ZV90IGtOdW1WYWxpZEV4dGVuc2lvbnMgPQogICAgICAgICBzaXplb2Yoa1ZhbGlkRXh0ZW5zaW9ucykgLyBzaXplb2Yoa1ZhbGlkRXh0ZW5zaW9uc1swXSk7CkBAIC0xMDIsNDggKzk5LDYgQEAKICAgICByZXR1cm4gT0s7CiB9CiAKLXN0YXRpYyBzdGF0dXNfdCBIYW5kbGVPR0coCi0gICAgICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBNZWRpYVNjYW5uZXJDbGllbnQgKmNsaWVudCkgewotICAgIGludCBkdXJhdGlvbjsKLQotICAgIEZJTEUgKmZpbGUgPSBmb3BlbihmaWxlbmFtZSwiciIpOwotICAgIGlmICghZmlsZSkKLSAgICAgICAgcmV0dXJuIFVOS05PV05fRVJST1I7Ci0KLSAgICBPZ2dWb3JiaXNfRmlsZSB2ZjsKLSAgICBpZiAob3Zfb3BlbihmaWxlLCAmdmYsIE5VTEwsIDApIDwgMCkgewotICAgICAgICByZXR1cm4gVU5LTk9XTl9FUlJPUjsKLSAgICB9Ci0KLSAgICBjaGFyICoqcHRyPW92X2NvbW1lbnQoJnZmLC0xKS0+dXNlcl9jb21tZW50czsKLSAgICB3aGlsZSgqcHRyKXsKLSAgICAgICAgY2hhciAqdmFsID0gc3Ryc3RyKCpwdHIsICI9Iik7Ci0gICAgICAgIGlmICh2YWwpIHsKLSAgICAgICAgICAgIGludCBrZXlsZW4gPSB2YWwrKyAtICpwdHI7Ci0gICAgICAgICAgICBjaGFyIGtleVtrZXlsZW4gKyAxXTsKLSAgICAgICAgICAgIHN0cm5jcHkoa2V5LCAqcHRyLCBrZXlsZW4pOwotICAgICAgICAgICAga2V5W2tleWxlbl0gPSAwOwotICAgICAgICAgICAgaWYgKCFjbGllbnQtPmFkZFN0cmluZ1RhZyhrZXksIHZhbCkpIGdvdG8gZmFpbHVyZTsKLSAgICAgICAgfQotICAgICAgICArK3B0cjsKLSAgICB9Ci0KLSAgICAvLyBEdXJhdGlvbgotICAgIGR1cmF0aW9uID0gb3ZfdGltZV90b3RhbCgmdmYsIC0xKTsKLSAgICBpZiAoZHVyYXRpb24gPiAwKSB7Ci0gICAgICAgIGNoYXIgYnVmZmVyWzIwXTsKLSAgICAgICAgc3ByaW50ZihidWZmZXIsICIlZCIsIGR1cmF0aW9uKTsKLSAgICAgICAgaWYgKCFjbGllbnQtPmFkZFN0cmluZ1RhZygiZHVyYXRpb24iLCBidWZmZXIpKSBnb3RvIGZhaWx1cmU7Ci0gICAgfQotCi0gICAgb3ZfY2xlYXIoJnZmKTsgLy8gdGhpcyBhbHNvIGNsb3NlcyB0aGUgRklMRQotICAgIHJldHVybiBPSzsKLQotZmFpbHVyZToKLSAgICBvdl9jbGVhcigmdmYpOyAvLyB0aGlzIGFsc28gY2xvc2VzIHRoZSBGSUxFCi0gICAgcmV0dXJuIFVOS05PV05fRVJST1I7Ci19Ci0KIHN0YXR1c190IFN0YWdlZnJpZ2h0TWVkaWFTY2FubmVyOjpwcm9jZXNzRmlsZSgKICAgICAgICAgY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqbWltZVR5cGUsCiAgICAgICAgIE1lZGlhU2Nhbm5lckNsaWVudCAmY2xpZW50KSB7CkBAIC0xNzUsMTAgKzEzMCw2IEBACiAgICAgICAgIHJldHVybiBIYW5kbGVNSURJKHBhdGgsICZjbGllbnQpOwogICAgIH0KIAotICAgIGlmICghc3RyY2FzZWNtcChleHRlbnNpb24sICIub2dnIikpIHsKLSAgICAgICAgcmV0dXJuIEhhbmRsZU9HRyhwYXRoLCAmY2xpZW50KTsKLSAgICB9Ci0KICAgICBpZiAobVJldHJpZXZlci0+c2V0RGF0YVNvdXJjZShwYXRoKSA9PSBPSwogICAgICAgICAgICAgJiYgbVJldHJpZXZlci0+c2V0TW9kZSgKICAgICAgICAgICAgICAgICBNRVRBREFUQV9NT0RFX01FVEFEQVRBX1JFVFJJRVZBTF9PTkxZKSA9PSBPSykgewpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvU3RhZ2VmcmlnaHRNZXRhZGF0YVJldHJpZXZlci5jcHAgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9TdGFnZWZyaWdodE1ldGFkYXRhUmV0cmlldmVyLmNwcAppbmRleCAyNThiZTc0Li45ZDg5YzIwIDEwMDY0NAotLS0gYS9tZWRpYS9saWJzdGFnZWZyaWdodC9TdGFnZWZyaWdodE1ldGFkYXRhUmV0cmlldmVyLmNwcAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9TdGFnZWZyaWdodE1ldGFkYXRhUmV0cmlldmVyLmNwcApAQCAtMzc4LDYgKzM3OCwyNCBAQAogICAgIC8vIFRoZSBkdXJhdGlvbiB2YWx1ZSBpcyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGR1cmF0aW9uIGluIG1zLgogICAgIHNwcmludGYodG1wLCAiJWxsZCIsIChtYXhEdXJhdGlvblVzICsgNTAwKSAvIDEwMDApOwogICAgIG1NZXRhRGF0YS5hZGQoTUVUQURBVEFfS0VZX0RVUkFUSU9OLCBTdHJpbmc4KHRtcCkpOworCisgICAgaWYgKG51bVRyYWNrcyA9PSAxKSB7CisgICAgICAgIGNvbnN0IGNoYXIgKmZpbGVNSU1FOworICAgICAgICBDSEVDSyhtZXRhLT5maW5kQ1N0cmluZyhrS2V5TUlNRVR5cGUsICZmaWxlTUlNRSkpOworCisgICAgICAgIGlmICghc3RyY2FzZWNtcChmaWxlTUlNRSwgInZpZGVvL3gtbWF0cm9za2EiKSkgeworICAgICAgICAgICAgc3A8TWV0YURhdGE+IHRyYWNrTWV0YSA9IG1FeHRyYWN0b3ItPmdldFRyYWNrTWV0YURhdGEoMCk7CisgICAgICAgICAgICBjb25zdCBjaGFyICp0cmFja01JTUU7CisgICAgICAgICAgICBDSEVDSyh0cmFja01ldGEtPmZpbmRDU3RyaW5nKGtLZXlNSU1FVHlwZSwgJnRyYWNrTUlNRSkpOworCisgICAgICAgICAgICBpZiAoIXN0cm5jYXNlY21wKCJhdWRpby8iLCB0cmFja01JTUUsIDYpKSB7CisgICAgICAgICAgICAgICAgLy8gVGhlIG1hdHJvc2thIGZpbGUgb25seSBjb250YWlucyBhIHNpbmdsZSBhdWRpbyB0cmFjaywKKyAgICAgICAgICAgICAgICAvLyByZXdyaXRlIGl0cyBtaW1lIHR5cGUuCisgICAgICAgICAgICAgICAgbU1ldGFEYXRhLmFkZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIE1FVEFEQVRBX0tFWV9NSU1FVFlQRSwgU3RyaW5nOCgiYXVkaW8veC1tYXRyb3NrYSIpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KIH0KIAogCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9UaHJvdHRsZWRTb3VyY2UuY3BwIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvVGhyb3R0bGVkU291cmNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzExZjdjNgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L1Rocm90dGxlZFNvdXJjZS5jcHAKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpbmNsdWRlICJpbmNsdWRlL1Rocm90dGxlZFNvdXJjZS5oIgorCisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFEZWJ1Zy5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK3N0YXRpYyBpbnQ2NF90IGdldE5vd1VzKCkgeworICAgIHN0cnVjdCB0aW1ldmFsIHR2OworICAgIGdldHRpbWVvZmRheSgmdHYsIE5VTEwpOworCisgICAgcmV0dXJuIChpbnQ2NF90KXR2LnR2X3VzZWMgKyB0di50dl9zZWMgKiAxMDAwMDAwbGw7Cit9CisKK1Rocm90dGxlZFNvdXJjZTo6VGhyb3R0bGVkU291cmNlKAorICAgICAgICBjb25zdCBzcDxEYXRhU291cmNlPiAmc291cmNlLAorICAgICAgICBpbnQzMl90IGJhbmR3aWR0aExpbWl0Qnl0ZXNQZXJTZWNvbmQpCisgICAgOiBtU291cmNlKHNvdXJjZSksCisgICAgICBtQmFuZHdpZHRoTGltaXRCeXRlc1BlclNlY29uZChiYW5kd2lkdGhMaW1pdEJ5dGVzUGVyU2Vjb25kKSwKKyAgICAgIG1TdGFydFRpbWVVcygtMSksCisgICAgICBtVG90YWxUcmFuc2ZlcnJlZCgwKSB7CisgICAgQ0hFQ0sobUJhbmR3aWR0aExpbWl0Qnl0ZXNQZXJTZWNvbmQgPiAwKTsKK30KKworc3RhdHVzX3QgVGhyb3R0bGVkU291cmNlOjppbml0Q2hlY2soKSBjb25zdCB7CisgICAgcmV0dXJuIG1Tb3VyY2UtPmluaXRDaGVjaygpOworfQorCitzc2l6ZV90IFRocm90dGxlZFNvdXJjZTo6cmVhZEF0KG9mZl90IG9mZnNldCwgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUpIHsKKyAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobUxvY2spOworCisgICAgc3NpemVfdCBuID0gbVNvdXJjZS0+cmVhZEF0KG9mZnNldCwgZGF0YSwgc2l6ZSk7CisKKyAgICBpZiAobiA8PSAwKSB7CisgICAgICAgIHJldHVybiBuOworICAgIH0KKworICAgIG1Ub3RhbFRyYW5zZmVycmVkICs9IG47CisKKyAgICBpbnQ2NF90IG5vd1VzID0gZ2V0Tm93VXMoKTsKKworICAgIGlmIChtU3RhcnRUaW1lVXMgPCAwKSB7CisgICAgICAgIG1TdGFydFRpbWVVcyA9IG5vd1VzOworICAgIH0KKworICAgIC8vIEhvdyBsb25nIHdvdWxkIGl0IGhhdmUgdGFrZW4gdG8gdHJhbnNmZXIgZXZlcnl0aGluZyB3ZSBldmVyCisgICAgLy8gdHJhbnNmZXJyZWQgZ2l2ZW4gdGhlIGxpbWl0ZWQgYmFuZHdpZHRoLgorICAgIGludDY0X3QgZHVyYXRpb25VcyA9CisgICAgICAgIG1Ub3RhbFRyYW5zZmVycmVkICogMTAwMDAwMGxsIC8gbUJhbmR3aWR0aExpbWl0Qnl0ZXNQZXJTZWNvbmQ7CisKKyAgICBpbnQ2NF90IHdoZW5VcyA9IG1TdGFydFRpbWVVcyArIGR1cmF0aW9uVXM7CisKKyAgICBpZiAod2hlblVzID4gbm93VXMpIHsKKyAgICAgICAgdXNsZWVwKHdoZW5VcyAtIG5vd1VzKTsKKyAgICB9CisKKyAgICByZXR1cm4gbjsKK30KKworc3RhdHVzX3QgVGhyb3R0bGVkU291cmNlOjpnZXRTaXplKG9mZl90ICpzaXplKSB7CisgICAgcmV0dXJuIG1Tb3VyY2UtPmdldFNpemUoc2l6ZSk7Cit9CisKK3VpbnQzMl90IFRocm90dGxlZFNvdXJjZTo6ZmxhZ3MoKSB7CisgICAgcmV0dXJuIG1Tb3VyY2UtPmZsYWdzKCk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCisKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNkZWMvQUFDRGVjb2Rlci5jcHAgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZGVjL0FBQ0RlY29kZXIuY3BwCmluZGV4IDJiYzQ0NDguLmYzYjI4MWYgMTAwNjQ0Ci0tLSBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNkZWMvQUFDRGVjb2Rlci5jcHAKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2RlYy9BQUNEZWNvZGVyLmNwcApAQCAtMTUsNiArMTUsNyBAQAogICovCiAKICNpbmNsdWRlICJBQUNEZWNvZGVyLmgiCisjZGVmaW5lIExPR19UQUcgIkFBQ0RlY29kZXIiCiAKICNpbmNsdWRlICIuLi8uLi9pbmNsdWRlL0VTRFMuaCIKIApAQCAtMzYsMjYgKzM3LDMzIEBACiAgICAgICBtQW5jaG9yVGltZVVzKDApLAogICAgICAgbU51bVNhbXBsZXNPdXRwdXQoMCksCiAgICAgICBtSW5wdXRCdWZmZXIoTlVMTCkgewotfQogCi1BQUNEZWNvZGVyOjp+QUFDRGVjb2RlcigpIHsKLSAgICBpZiAobVN0YXJ0ZWQpIHsKLSAgICAgICAgc3RvcCgpOworICAgIHNwPE1ldGFEYXRhPiBzcmNGb3JtYXQgPSBtU291cmNlLT5nZXRGb3JtYXQoKTsKKworICAgIGludDMyX3Qgc2FtcGxlUmF0ZTsKKyAgICBDSEVDSyhzcmNGb3JtYXQtPmZpbmRJbnQzMihrS2V5U2FtcGxlUmF0ZSwgJnNhbXBsZVJhdGUpKTsKKworICAgIG1NZXRhID0gbmV3IE1ldGFEYXRhOworICAgIG1NZXRhLT5zZXRDU3RyaW5nKGtLZXlNSU1FVHlwZSwgTUVESUFfTUlNRVRZUEVfQVVESU9fUkFXKTsKKworICAgIC8vIFdlJ2xsIGFsd2F5cyBvdXRwdXQgc3RlcmVvLCByZWdhcmRsZXNzIG9mIGhvdyBtYW55IGNoYW5uZWxzIGFyZQorICAgIC8vIHByZXNlbnQgaW4gdGhlIGlucHV0IGR1ZSB0byBkZWNvZGVyIGxpbWl0YXRpb25zLgorICAgIG1NZXRhLT5zZXRJbnQzMihrS2V5Q2hhbm5lbENvdW50LCAyKTsKKyAgICBtTWV0YS0+c2V0SW50MzIoa0tleVNhbXBsZVJhdGUsIHNhbXBsZVJhdGUpOworCisgICAgaW50NjRfdCBkdXJhdGlvblVzOworICAgIGlmIChzcmNGb3JtYXQtPmZpbmRJbnQ2NChrS2V5RHVyYXRpb24sICZkdXJhdGlvblVzKSkgeworICAgICAgICBtTWV0YS0+c2V0SW50NjQoa0tleUR1cmF0aW9uLCBkdXJhdGlvblVzKTsKICAgICB9CisgICAgbU1ldGEtPnNldENTdHJpbmcoa0tleURlY29kZXJDb21wb25lbnQsICJBQUNEZWNvZGVyIik7CiAKLSAgICBkZWxldGUgbUNvbmZpZzsKLSAgICBtQ29uZmlnID0gTlVMTDsKKyAgICBtSW5pdENoZWNrID0gaW5pdENoZWNrKCk7CiB9CiAKLXN0YXR1c190IEFBQ0RlY29kZXI6OnN0YXJ0KE1ldGFEYXRhICpwYXJhbXMpIHsKLSAgICBDSEVDSyghbVN0YXJ0ZWQpOwotCi0gICAgbUJ1ZmZlckdyb3VwID0gbmV3IE1lZGlhQnVmZmVyR3JvdXA7Ci0gICAgbUJ1ZmZlckdyb3VwLT5hZGRfYnVmZmVyKG5ldyBNZWRpYUJ1ZmZlcigyMDQ4ICogMikpOwotCitzdGF0dXNfdCBBQUNEZWNvZGVyOjppbml0Q2hlY2soKSB7CisgICAgbWVtc2V0KG1Db25maWcsIDAsIHNpemVvZih0UFZNUDRBdWRpb0RlY29kZXJFeHRlcm5hbCkpOwogICAgIG1Db25maWctPm91dHB1dEZvcm1hdCA9IE9VVFBVVEZPUk1BVF8xNlBDTV9JTlRFUkxFQVZFRDsKLSAgICBtQ29uZmlnLT5hYWNQbHVzVXBzYW1wbGluZ0ZhY3RvciA9IDA7Ci0gICAgbUNvbmZpZy0+YWFjUGx1c0VuYWJsZWQgPSBmYWxzZTsKKyAgICBtQ29uZmlnLT5hYWNQbHVzRW5hYmxlZCA9IDE7CiAKICAgICAvLyBUaGUgc29mdHdhcmUgZGVjb2RlciBkb2Vzbid0IHByb3Blcmx5IHN1cHBvcnQgbW9ubyBvdXRwdXQgb24KICAgICAvLyBBQUNwbHVzIGZpbGVzLiBBbHdheXMgb3V0cHV0IHN0ZXJlby4KQEAgLTY0LDggKzcyLDExIEBACiAgICAgVUludDMyIG1lbVJlcXVpcmVtZW50cyA9IFBWTVA0QXVkaW9EZWNvZGVyR2V0TWVtUmVxdWlyZW1lbnRzKCk7CiAgICAgbURlY29kZXJCdWYgPSBtYWxsb2MobWVtUmVxdWlyZW1lbnRzKTsKIAotICAgIENIRUNLX0VRKFBWTVA0QXVkaW9EZWNvZGVySW5pdExpYnJhcnkobUNvbmZpZywgbURlY29kZXJCdWYpLAotICAgICAgICAgICAgIE1QNEFVREVDX1NVQ0NFU1MpOworICAgIHN0YXR1c190IGVyciA9IFBWTVA0QXVkaW9EZWNvZGVySW5pdExpYnJhcnkobUNvbmZpZywgbURlY29kZXJCdWYpOworICAgIGlmIChlcnIgIT0gTVA0QVVERUNfU1VDQ0VTUykgeworICAgICAgICBMT0dFKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBNUDQgYXVkaW8gZGVjb2RlciIpOworICAgICAgICByZXR1cm4gVU5LTk9XTl9FUlJPUjsKKyAgICB9CiAKICAgICB1aW50MzJfdCB0eXBlOwogICAgIGNvbnN0IHZvaWQgKmRhdGE7CkBAIC04MywxOCArOTQsMzggQEAKICAgICAgICAgbUNvbmZpZy0+cElucHV0QnVmZmVyID0gKFVDaGFyICopY29kZWNfc3BlY2lmaWNfZGF0YTsKICAgICAgICAgbUNvbmZpZy0+aW5wdXRCdWZmZXJDdXJyZW50TGVuZ3RoID0gY29kZWNfc3BlY2lmaWNfZGF0YV9zaXplOwogICAgICAgICBtQ29uZmlnLT5pbnB1dEJ1ZmZlck1heExlbmd0aCA9IDA7Ci0gICAgICAgIG1Db25maWctPmlucHV0QnVmZmVyVXNlZExlbmd0aCA9IDA7Ci0gICAgICAgIG1Db25maWctPnJlbWFpbmRlckJpdHMgPSAwOwotCi0gICAgICAgIG1Db25maWctPnBPdXRwdXRCdWZmZXIgPSBOVUxMOwotICAgICAgICBtQ29uZmlnLT5wT3V0cHV0QnVmZmVyX3BsdXMgPSBOVUxMOwotICAgICAgICBtQ29uZmlnLT5yZXBvc2l0aW9uRmxhZyA9IGZhbHNlOwogCiAgICAgICAgIGlmIChQVk1QNEF1ZGlvRGVjb2RlckNvbmZpZyhtQ29uZmlnLCBtRGVjb2RlckJ1ZikKICAgICAgICAgICAgICAgICAhPSBNUDRBVURFQ19TVUNDRVNTKSB7CiAgICAgICAgICAgICByZXR1cm4gRVJST1JfVU5TVVBQT1JURUQ7CiAgICAgICAgIH0KKworICAgICAgICAvLyBDaGVjayBvbiB0aGUgc2FtcGxpbmcgcmF0ZSB0byBzZWUgd2hldGhlciBpdCBpcyBjaGFuZ2VkLgorICAgICAgICBpbnQzMl90IHNhbXBsZVJhdGU7CisgICAgICAgIENIRUNLKG1NZXRhLT5maW5kSW50MzIoa0tleVNhbXBsZVJhdGUsICZzYW1wbGVSYXRlKSk7CisgICAgICAgIGlmIChtQ29uZmlnLT5zYW1wbGluZ1JhdGUgIT0gc2FtcGxlUmF0ZSkgeworICAgICAgICAgICAgbU1ldGEtPnNldEludDMyKGtLZXlTYW1wbGVSYXRlLCBtQ29uZmlnLT5zYW1wbGluZ1JhdGUpOworICAgICAgICAgICAgTE9HVygiU2FtcGxlIHJhdGUgd2FzICVkLCBidXQgbm93IGlzICVkIiwKKyAgICAgICAgICAgICAgICAgICAgc2FtcGxlUmF0ZSwgbUNvbmZpZy0+c2FtcGxpbmdSYXRlKTsKKyAgICAgICAgfQogICAgIH0KKyAgICByZXR1cm4gT0s7Cit9CisKK0FBQ0RlY29kZXI6On5BQUNEZWNvZGVyKCkgeworICAgIGlmIChtU3RhcnRlZCkgeworICAgICAgICBzdG9wKCk7CisgICAgfQorCisgICAgZGVsZXRlIG1Db25maWc7CisgICAgbUNvbmZpZyA9IE5VTEw7Cit9CisKK3N0YXR1c190IEFBQ0RlY29kZXI6OnN0YXJ0KE1ldGFEYXRhICpwYXJhbXMpIHsKKyAgICBDSEVDSyghbVN0YXJ0ZWQpOworCisgICAgbUJ1ZmZlckdyb3VwID0gbmV3IE1lZGlhQnVmZmVyR3JvdXA7CisgICAgbUJ1ZmZlckdyb3VwLT5hZGRfYnVmZmVyKG5ldyBNZWRpYUJ1ZmZlcig0MDk2ICogMikpOwogCiAgICAgbVNvdXJjZS0+c3RhcnQoKTsKIApAQCAtMTI3LDI4ICsxNTgsNyBAQAogfQogCiBzcDxNZXRhRGF0YT4gQUFDRGVjb2Rlcjo6Z2V0Rm9ybWF0KCkgewotICAgIHNwPE1ldGFEYXRhPiBzcmNGb3JtYXQgPSBtU291cmNlLT5nZXRGb3JtYXQoKTsKLQotICAgIGludDMyX3Qgc2FtcGxlUmF0ZTsKLSAgICBDSEVDSyhzcmNGb3JtYXQtPmZpbmRJbnQzMihrS2V5U2FtcGxlUmF0ZSwgJnNhbXBsZVJhdGUpKTsKLQotICAgIHNwPE1ldGFEYXRhPiBtZXRhID0gbmV3IE1ldGFEYXRhOwotICAgIG1ldGEtPnNldENTdHJpbmcoa0tleU1JTUVUeXBlLCBNRURJQV9NSU1FVFlQRV9BVURJT19SQVcpOwotCi0gICAgLy8gV2UnbGwgYWx3YXlzIG91dHB1dCBzdGVyZW8sIHJlZ2FyZGxlc3Mgb2YgaG93IG1hbnkgY2hhbm5lbHMgYXJlCi0gICAgLy8gcHJlc2VudCBpbiB0aGUgaW5wdXQgZHVlIHRvIGRlY29kZXIgbGltaXRhdGlvbnMuCi0gICAgbWV0YS0+c2V0SW50MzIoa0tleUNoYW5uZWxDb3VudCwgMik7Ci0KLSAgICBtZXRhLT5zZXRJbnQzMihrS2V5U2FtcGxlUmF0ZSwgc2FtcGxlUmF0ZSk7Ci0KLSAgICBpbnQ2NF90IGR1cmF0aW9uVXM7Ci0gICAgaWYgKHNyY0Zvcm1hdC0+ZmluZEludDY0KGtLZXlEdXJhdGlvbiwgJmR1cmF0aW9uVXMpKSB7Ci0gICAgICAgIG1ldGEtPnNldEludDY0KGtLZXlEdXJhdGlvbiwgZHVyYXRpb25Vcyk7Ci0gICAgfQotCi0gICAgbWV0YS0+c2V0Q1N0cmluZyhrS2V5RGVjb2RlckNvbXBvbmVudCwgIkFBQ0RlY29kZXIiKTsKLQotICAgIHJldHVybiBtZXRhOworICAgIHJldHVybiBtTWV0YTsKIH0KIAogc3RhdHVzX3QgQUFDRGVjb2Rlcjo6cmVhZCgKQEAgLTIwMCwxMyArMjEwLDE5IEBACiAgICAgbUNvbmZpZy0+cmVtYWluZGVyQml0cyA9IDA7CiAKICAgICBtQ29uZmlnLT5wT3V0cHV0QnVmZmVyID0gc3RhdGljX2Nhc3Q8SW50MTYgKj4oYnVmZmVyLT5kYXRhKCkpOwotICAgIG1Db25maWctPnBPdXRwdXRCdWZmZXJfcGx1cyA9IE5VTEw7CisgICAgbUNvbmZpZy0+cE91dHB1dEJ1ZmZlcl9wbHVzID0gJm1Db25maWctPnBPdXRwdXRCdWZmZXJbMjA0OF07CiAgICAgbUNvbmZpZy0+cmVwb3NpdGlvbkZsYWcgPSBmYWxzZTsKIAogICAgIEludCBkZWNvZGVyRXJyID0gUFZNUDRBdWRpb0RlY29kZUZyYW1lKG1Db25maWcsIG1EZWNvZGVyQnVmKTsKIAogICAgIHNpemVfdCBudW1PdXRCeXRlcyA9CiAgICAgICAgIG1Db25maWctPmZyYW1lTGVuZ3RoICogc2l6ZW9mKGludDE2X3QpICogbUNvbmZpZy0+ZGVzaXJlZENoYW5uZWxzOworICAgIGlmIChtQ29uZmlnLT5hYWNQbHVzVXBzYW1wbGluZ0ZhY3RvciA9PSAyKSB7CisgICAgICAgIGlmIChtQ29uZmlnLT5kZXNpcmVkQ2hhbm5lbHMgPT0gMSkgeworICAgICAgICAgICAgbWVtY3B5KCZtQ29uZmlnLT5wT3V0cHV0QnVmZmVyWzEwMjRdLCAmbUNvbmZpZy0+cE91dHB1dEJ1ZmZlclsyMDQ4XSwgbnVtT3V0Qnl0ZXMgKiAyKTsKKyAgICAgICAgfQorICAgICAgICBudW1PdXRCeXRlcyAqPSAyOworICAgIH0KIAogICAgIGlmIChkZWNvZGVyRXJyICE9IE1QNEFVREVDX1NVQ0NFU1MpIHsKICAgICAgICAgTE9HVygiQUFDIGRlY29kZXIgcmV0dXJuZWQgZXJyb3IgJWQsIHN1YnN0aXR1dGluZyBzaWxlbmNlIiwgZGVjb2RlckVycik7CmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL0FBQ0VuY29kZXIuY3BwIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9BQUNFbmNvZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzE3ZGU2Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9BQUNFbmNvZGVyLmNwcApAQCAtMCwwICsxLDI5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8vI2RlZmluZSBMT0dfTkRFQlVHIDAKKyNkZWZpbmUgTE9HX1RBRyAiQUFDRW5jb2RlciIKKyNpbmNsdWRlIDx1dGlscy9Mb2cuaD4KKworI2luY2x1ZGUgIkFBQ0VuY29kZXIuaCIKKyNpbmNsdWRlICJ2b0FBQy5oIgorI2luY2x1ZGUgImNtbk1lbW9yeS5oIgorCisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFCdWZmZXJHcm91cC5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhRGVidWcuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYURlZnMuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYUVycm9ycy5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01ldGFEYXRhLmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworQUFDRW5jb2Rlcjo6QUFDRW5jb2Rlcihjb25zdCBzcDxNZWRpYVNvdXJjZT4gJnNvdXJjZSwgY29uc3Qgc3A8TWV0YURhdGE+ICZtZXRhKQorICAgIDogbVNvdXJjZShzb3VyY2UpLAorICAgICAgbU1ldGEobWV0YSksCisgICAgICBtU3RhcnRlZChmYWxzZSksCisgICAgICBtQnVmZmVyR3JvdXAoTlVMTCksCisgICAgICBtSW5wdXRCdWZmZXIoTlVMTCksCisgICAgICBtRW5jb2RlckhhbmRsZShOVUxMKSwKKyAgICAgIG1BcGlIYW5kbGUoTlVMTCksCisgICAgICBtTWVtT3BlcmF0b3IoTlVMTCkgeworfQorCitzdGF0dXNfdCBBQUNFbmNvZGVyOjppbml0Q2hlY2soKSB7CisgICAgQ0hFQ0sobUFwaUhhbmRsZSA9PSBOVUxMICYmIG1FbmNvZGVySGFuZGxlID09IE5VTEwpOworICAgIENIRUNLKG1NZXRhLT5maW5kSW50MzIoa0tleVNhbXBsZVJhdGUsICZtU2FtcGxlUmF0ZSkpOworICAgIENIRUNLKG1NZXRhLT5maW5kSW50MzIoa0tleUNoYW5uZWxDb3VudCwgJm1DaGFubmVscykpOworICAgIENIRUNLKG1NZXRhLT5maW5kSW50MzIoa0tleUJpdFJhdGUsICZtQml0UmF0ZSkpOworCisgICAgbUFwaUhhbmRsZSA9IG5ldyBWT19BVURJT19DT0RFQ0FQSTsKKyAgICBDSEVDSyhtQXBpSGFuZGxlKTsKKworICAgIGlmIChWT19FUlJfTk9ORSAhPSB2b0dldEFBQ0VuY0FQSShtQXBpSGFuZGxlKSkgeworICAgICAgICBMT0dFKCJGYWlsZWQgdG8gZ2V0IGFwaSBoYW5kbGUiKTsKKyAgICAgICAgcmV0dXJuIFVOS05PV05fRVJST1I7CisgICAgfQorCisgICAgbU1lbU9wZXJhdG9yID0gbmV3IFZPX01FTV9PUEVSQVRPUjsKKyAgICBDSEVDSyhtTWVtT3BlcmF0b3IgIT0gTlVMTCk7CisgICAgbU1lbU9wZXJhdG9yLT5BbGxvYyA9IGNtbk1lbUFsbG9jOworICAgIG1NZW1PcGVyYXRvci0+Q29weSA9IGNtbk1lbUNvcHk7CisgICAgbU1lbU9wZXJhdG9yLT5GcmVlID0gY21uTWVtRnJlZTsKKyAgICBtTWVtT3BlcmF0b3ItPlNldCA9IGNtbk1lbVNldDsKKyAgICBtTWVtT3BlcmF0b3ItPkNoZWNrID0gY21uTWVtQ2hlY2s7CisKKyAgICBWT19DT0RFQ19JTklUX1VTRVJEQVRBIHVzZXJEYXRhOworICAgIG1lbXNldCgmdXNlckRhdGEsIDAsIHNpemVvZih1c2VyRGF0YSkpOworICAgIHVzZXJEYXRhLm1lbWZsYWcgPSBWT19JTUZfVVNFUk1FTU9QRVJBVE9SOworICAgIHVzZXJEYXRhLm1lbURhdGEgPSAoVk9fUFRSKSBtTWVtT3BlcmF0b3I7CisgICAgaWYgKFZPX0VSUl9OT05FICE9IG1BcGlIYW5kbGUtPkluaXQoJm1FbmNvZGVySGFuZGxlLCBWT19BVURJT19Db2RpbmdBQUMsICZ1c2VyRGF0YSkpIHsKKyAgICAgICAgTE9HRSgiRmFpbGVkIHRvIGluaXQgQUFDIGVuY29kZXIiKTsKKyAgICAgICAgcmV0dXJuIFVOS05PV05fRVJST1I7CisgICAgfQorICAgIGlmIChPSyAhPSBzZXRBdWRpb1NwZWNpZmljQ29uZmlnRGF0YSgpKSB7CisgICAgICAgIExPR0UoIkZhaWxlZCB0byBjb25maWd1cmUgQUFDIGVuY29kZXIiKTsKKyAgICAgICAgcmV0dXJuIFVOS05PV05fRVJST1I7CisgICAgfQorCisgICAgLy8gQ29uZmlndXJlIEFBQyBlbmNvZGVyJAorICAgIEFBQ0VOQ19QQVJBTSBwYXJhbXM7CisgICAgbWVtc2V0KCZwYXJhbXMsIDAsIHNpemVvZihwYXJhbXMpKTsKKyAgICBwYXJhbXMuc2FtcGxlUmF0ZSA9IG1TYW1wbGVSYXRlOworICAgIHBhcmFtcy5iaXRSYXRlID0gbUJpdFJhdGU7CisgICAgcGFyYW1zLm5DaGFubmVscyA9IG1DaGFubmVsczsKKyAgICBwYXJhbXMuYWR0c1VzZWQgPSAwOyAgLy8gRm9yIE1QNCBmaWxlLCBkb24ndCB1c2UgYWR0cyBmb3JtYXQkCisgICAgaWYgKFZPX0VSUl9OT05FICE9IG1BcGlIYW5kbGUtPlNldFBhcmFtKG1FbmNvZGVySGFuZGxlLCBWT19QSURfQUFDX0VOQ1BBUkFNLCAgJnBhcmFtcykpIHsKKyAgICAgICAgTE9HRSgiRmFpbGVkIHRvIHNldCBBQUMgZW5jb2RlciBwYXJhbWV0ZXJzIik7CisgICAgICAgIHJldHVybiBVTktOT1dOX0VSUk9SOworICAgIH0KKworICAgIHJldHVybiBPSzsKK30KKworc3RhdGljIHN0YXR1c190IGdldFNhbXBsZVJhdGVUYWJsZUluZGV4KGludDMyX3Qgc2FtcGxlUmF0ZSwgaW50MzJfdCAmaW5kZXgpIHsKKyAgICBzdGF0aWMgY29uc3QgaW50MzJfdCBrU2FtcGxlUmF0ZVRhYmxlW10gPSB7CisgICAgICAgIDk2MDAwLCA4ODIwMCwgNjQwMDAsIDQ4MDAwLCA0NDEwMCwgMzIwMDAsCisgICAgICAgIDI0MDAwLCAyMjA1MCwgMTYwMDAsIDEyMDAwLCAxMTAyNSwgODAwMAorICAgIH07CisgICAgY29uc3QgaW50MzJfdCB0YWJsZVNpemUgPSBzaXplb2Yoa1NhbXBsZVJhdGVUYWJsZSkgLyBzaXplb2Yoa1NhbXBsZVJhdGVUYWJsZVswXSk7CisgICAgZm9yIChpbnQzMl90IGkgPSAwOyBpIDwgdGFibGVTaXplOyArK2kpIHsKKyAgICAgICAgaWYgKHNhbXBsZVJhdGUgPT0ga1NhbXBsZVJhdGVUYWJsZVtpXSkgeworICAgICAgICAgICAgaW5kZXggPSBpOworICAgICAgICAgICAgcmV0dXJuIE9LOworICAgICAgICB9CisgICAgfQorCisgICAgTE9HRSgiU2FtcGxpbmcgcmF0ZSAlZCBicHMgaXMgbm90IHN1cHBvcnRlZCIsIHNhbXBsZVJhdGUpOworICAgIHJldHVybiBVTktOT1dOX0VSUk9SOworfQorCitzdGF0dXNfdCBBQUNFbmNvZGVyOjpzZXRBdWRpb1NwZWNpZmljQ29uZmlnRGF0YSgpIHsKKyAgICBMT0dWKCJzZXRBdWRpb1NwZWNpZmljQ29uZmlnRGF0YTogJWQgaHosICVkIGJwcywgYW5kICVkIGNoYW5uZWxzIiwKKyAgICAgICAgIG1TYW1wbGVSYXRlLCBtQml0UmF0ZSwgbUNoYW5uZWxzKTsKKworICAgIGludDMyX3QgaW5kZXg7CisgICAgQ0hFQ0tfRVEoT0ssIGdldFNhbXBsZVJhdGVUYWJsZUluZGV4KG1TYW1wbGVSYXRlLCBpbmRleCkpOworICAgIGlmIChtQ2hhbm5lbHMgPiAyIHx8IG1DaGFubmVscyA8PSAwKSB7CisgICAgICAgIExPR0UoIlVuc3VwcG9ydGVkIG51bWJlciBvZiBjaGFubmVscyglZCkiLCBtQ2hhbm5lbHMpOworICAgICAgICByZXR1cm4gVU5LTk9XTl9FUlJPUjsKKyAgICB9CisKKyAgICAvLyBPTVhfQVVESU9fQUFDT2JqZWN0TEMKKyAgICBtQXVkaW9TcGVjaWZpY0NvbmZpZ0RhdGFbMF0gPSAoKDB4MDIgPDwgMykgfCAoaW5kZXggPj4gMSkpOworICAgIG1BdWRpb1NwZWNpZmljQ29uZmlnRGF0YVsxXSA9ICgoaW5kZXggJiAweDAxKSA8PCA3KSB8IChtQ2hhbm5lbHMgPDwgMyk7CisgICAgcmV0dXJuIE9LOworfQorCitBQUNFbmNvZGVyOjp+QUFDRW5jb2RlcigpIHsKKyAgICBpZiAobVN0YXJ0ZWQpIHsKKyAgICAgICAgc3RvcCgpOworICAgIH0KK30KKworc3RhdHVzX3QgQUFDRW5jb2Rlcjo6c3RhcnQoTWV0YURhdGEgKnBhcmFtcykgeworICAgIGlmIChtU3RhcnRlZCkgeworICAgICAgICBMT0dXKCJDYWxsIHN0YXJ0KCkgd2hlbiBlbmNvZGVyIGFscmVhZHkgc3RhcnRlZCIpOworICAgICAgICByZXR1cm4gT0s7CisgICAgfQorCisgICAgbUJ1ZmZlckdyb3VwID0gbmV3IE1lZGlhQnVmZmVyR3JvdXA7CisgICAgbUJ1ZmZlckdyb3VwLT5hZGRfYnVmZmVyKG5ldyBNZWRpYUJ1ZmZlcigyMDQ4KSk7CisKKyAgICBDSEVDS19FUShPSywgaW5pdENoZWNrKCkpOworCisgICAgbU51bUlucHV0U2FtcGxlcyA9IDA7CisgICAgbUFuY2hvclRpbWVVcyA9IDA7CisgICAgbUZyYW1lQ291bnQgPSAwOworICAgIG1Tb3VyY2UtPnN0YXJ0KHBhcmFtcyk7CisKKyAgICBtU3RhcnRlZCA9IHRydWU7CisKKyAgICByZXR1cm4gT0s7Cit9CisKK3N0YXR1c190IEFBQ0VuY29kZXI6OnN0b3AoKSB7CisgICAgaWYgKCFtU3RhcnRlZCkgeworICAgICAgICBMT0dXKCJDYWxsIHN0b3AoKSB3aGVuIGVuY29kZXIgaGFzIG5vdCBzdGFydGVkIik7CisgICAgICAgIHJldHVybiBPSzsKKyAgICB9CisKKyAgICBpZiAobUlucHV0QnVmZmVyKSB7CisgICAgICAgIG1JbnB1dEJ1ZmZlci0+cmVsZWFzZSgpOworICAgICAgICBtSW5wdXRCdWZmZXIgPSBOVUxMOworICAgIH0KKworICAgIGRlbGV0ZSBtQnVmZmVyR3JvdXA7CisgICAgbUJ1ZmZlckdyb3VwID0gTlVMTDsKKworICAgIG1Tb3VyY2UtPnN0b3AoKTsKKworICAgIGlmIChtRW5jb2RlckhhbmRsZSkgeworICAgICAgICBDSEVDS19FUShWT19FUlJfTk9ORSwgbUFwaUhhbmRsZS0+VW5pbml0KG1FbmNvZGVySGFuZGxlKSk7CisgICAgICAgIG1FbmNvZGVySGFuZGxlID0gTlVMTDsKKyAgICB9CisgICAgZGVsZXRlIG1BcGlIYW5kbGU7CisgICAgbUFwaUhhbmRsZSA9IE5VTEw7CisKKyAgICBtU3RhcnRlZCA9IGZhbHNlOworCisgICAgcmV0dXJuIE9LOworfQorCitzcDxNZXRhRGF0YT4gQUFDRW5jb2Rlcjo6Z2V0Rm9ybWF0KCkgeworICAgIHNwPE1ldGFEYXRhPiBzcmNGb3JtYXQgPSBtU291cmNlLT5nZXRGb3JtYXQoKTsKKworICAgIG1NZXRhLT5zZXRDU3RyaW5nKGtLZXlNSU1FVHlwZSwgTUVESUFfTUlNRVRZUEVfQVVESU9fQUFDKTsKKworICAgIGludDY0X3QgZHVyYXRpb25VczsKKyAgICBpZiAoc3JjRm9ybWF0LT5maW5kSW50NjQoa0tleUR1cmF0aW9uLCAmZHVyYXRpb25VcykpIHsKKyAgICAgICAgbU1ldGEtPnNldEludDY0KGtLZXlEdXJhdGlvbiwgZHVyYXRpb25Vcyk7CisgICAgfQorCisgICAgbU1ldGEtPnNldENTdHJpbmcoa0tleURlY29kZXJDb21wb25lbnQsICJBQUNFbmNvZGVyIik7CisKKyAgICByZXR1cm4gbU1ldGE7Cit9CisKK3N0YXR1c190IEFBQ0VuY29kZXI6OnJlYWQoCisgICAgICAgIE1lZGlhQnVmZmVyICoqb3V0LCBjb25zdCBSZWFkT3B0aW9ucyAqb3B0aW9ucykgeworICAgIHN0YXR1c190IGVycjsKKworICAgICpvdXQgPSBOVUxMOworCisgICAgaW50NjRfdCBzZWVrVGltZVVzOworICAgIENIRUNLKG9wdGlvbnMgPT0gTlVMTCB8fCAhb3B0aW9ucy0+Z2V0U2Vla1RvKCZzZWVrVGltZVVzKSk7CisKKyAgICBNZWRpYUJ1ZmZlciAqYnVmZmVyOworICAgIENIRUNLX0VRKG1CdWZmZXJHcm91cC0+YWNxdWlyZV9idWZmZXIoJmJ1ZmZlciksIE9LKTsKKyAgICB1aW50OF90ICpvdXRQdHIgPSAodWludDhfdCAqKWJ1ZmZlci0+ZGF0YSgpOworCisgICAgaWYgKG1GcmFtZUNvdW50ID09IDApIHsKKyAgICAgICAgbWVtY3B5KG91dFB0ciwgbUF1ZGlvU3BlY2lmaWNDb25maWdEYXRhLCAyKTsKKyAgICAgICAgYnVmZmVyLT5zZXRfcmFuZ2UoMCwgMik7CisgICAgICAgIGJ1ZmZlci0+bWV0YV9kYXRhKCktPnNldEludDMyKGtLZXlJc0NvZGVjQ29uZmlnLCB0cnVlKTsKKyAgICAgICAgKm91dCA9IGJ1ZmZlcjsKKyAgICAgICAgKyttRnJhbWVDb3VudDsKKyAgICAgICAgcmV0dXJuIE9LOworICAgIH0gZWxzZSBpZiAobUZyYW1lQ291bnQgPT0gMSkgeworICAgICAgICBidWZmZXItPm1ldGFfZGF0YSgpLT5zZXRJbnQzMihrS2V5SXNDb2RlY0NvbmZpZywgZmFsc2UpOworICAgIH0KKworICAgIHdoaWxlIChtTnVtSW5wdXRTYW1wbGVzIDwga051bVNhbXBsZXNQZXJGcmFtZSkgeworICAgICAgICBpZiAobUlucHV0QnVmZmVyID09IE5VTEwpIHsKKyAgICAgICAgICAgIGlmIChtU291cmNlLT5yZWFkKCZtSW5wdXRCdWZmZXIsIG9wdGlvbnMpICE9IE9LKSB7CisgICAgICAgICAgICAgICAgaWYgKG1OdW1JbnB1dFNhbXBsZXMgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JfRU5EX09GX1NUUkVBTTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbWVtc2V0KCZtSW5wdXRGcmFtZVttTnVtSW5wdXRTYW1wbGVzXSwKKyAgICAgICAgICAgICAgICAgICAgICAgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGludDE2X3QpICogKGtOdW1TYW1wbGVzUGVyRnJhbWUgLSBtTnVtSW5wdXRTYW1wbGVzKSk7CisgICAgICAgICAgICAgICAgbU51bUlucHV0U2FtcGxlcyA9IDA7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNpemVfdCBhbGlnbiA9IG1JbnB1dEJ1ZmZlci0+cmFuZ2VfbGVuZ3RoKCkgJSBzaXplb2YoaW50MTZfdCk7CisgICAgICAgICAgICBDSEVDS19FUShhbGlnbiwgMCk7CisKKyAgICAgICAgICAgIGludDY0X3QgdGltZVVzOworICAgICAgICAgICAgaWYgKG1JbnB1dEJ1ZmZlci0+bWV0YV9kYXRhKCktPmZpbmRJbnQ2NChrS2V5VGltZSwgJnRpbWVVcykpIHsKKyAgICAgICAgICAgICAgICBtQW5jaG9yVGltZVVzID0gdGltZVVzOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHNpemVfdCBjb3B5ID0KKyAgICAgICAgICAgIChrTnVtU2FtcGxlc1BlckZyYW1lIC0gbU51bUlucHV0U2FtcGxlcykgKiBzaXplb2YoaW50MTZfdCk7CisKKyAgICAgICAgaWYgKGNvcHkgPiBtSW5wdXRCdWZmZXItPnJhbmdlX2xlbmd0aCgpKSB7CisgICAgICAgICAgICBjb3B5ID0gbUlucHV0QnVmZmVyLT5yYW5nZV9sZW5ndGgoKTsKKyAgICAgICAgfQorCisgICAgICAgIG1lbWNweSgmbUlucHV0RnJhbWVbbU51bUlucHV0U2FtcGxlc10sCisgICAgICAgICAgICAgICAoY29uc3QgdWludDhfdCAqKSBtSW5wdXRCdWZmZXItPmRhdGEoKQorICAgICAgICAgICAgICAgICAgICArIG1JbnB1dEJ1ZmZlci0+cmFuZ2Vfb2Zmc2V0KCksCisgICAgICAgICAgICAgICBjb3B5KTsKKworICAgICAgICBtSW5wdXRCdWZmZXItPnNldF9yYW5nZSgKKyAgICAgICAgICAgICAgIG1JbnB1dEJ1ZmZlci0+cmFuZ2Vfb2Zmc2V0KCkgKyBjb3B5LAorICAgICAgICAgICAgICAgbUlucHV0QnVmZmVyLT5yYW5nZV9sZW5ndGgoKSAtIGNvcHkpOworCisgICAgICAgIGlmIChtSW5wdXRCdWZmZXItPnJhbmdlX2xlbmd0aCgpID09IDApIHsKKyAgICAgICAgICAgIG1JbnB1dEJ1ZmZlci0+cmVsZWFzZSgpOworICAgICAgICAgICAgbUlucHV0QnVmZmVyID0gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBtTnVtSW5wdXRTYW1wbGVzICs9IGNvcHkgLyBzaXplb2YoaW50MTZfdCk7CisgICAgICAgIGlmIChtTnVtSW5wdXRTYW1wbGVzID49IGtOdW1TYW1wbGVzUGVyRnJhbWUpIHsKKyAgICAgICAgICAgIG1OdW1JbnB1dFNhbXBsZXMgJT0ga051bVNhbXBsZXNQZXJGcmFtZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgVk9fQ09ERUNCVUZGRVIgaW5wdXREYXRhOworICAgIG1lbXNldCgmaW5wdXREYXRhLCAwLCBzaXplb2YoaW5wdXREYXRhKSk7CisgICAgaW5wdXREYXRhLkJ1ZmZlciA9ICh1bnNpZ25lZCBjaGFyKikgbUlucHV0RnJhbWU7CisgICAgaW5wdXREYXRhLkxlbmd0aCA9IGtOdW1TYW1wbGVzUGVyRnJhbWUgKiBzaXplb2YoaW50MTZfdCk7CisgICAgQ0hFQ0soVk9fRVJSX05PTkUgPT0gbUFwaUhhbmRsZS0+U2V0SW5wdXREYXRhKG1FbmNvZGVySGFuZGxlLCZpbnB1dERhdGEpKTsKKworICAgIFZPX0NPREVDQlVGRkVSIG91dHB1dERhdGE7CisgICAgbWVtc2V0KCZvdXRwdXREYXRhLCAwLCBzaXplb2Yob3V0cHV0RGF0YSkpOworICAgIFZPX0FVRElPX09VVFBVVElORk8gb3V0cHV0SW5mbzsKKyAgICBtZW1zZXQoJm91dHB1dEluZm8sIDAsIHNpemVvZihvdXRwdXRJbmZvKSk7CisKKyAgICBWT19VMzIgcmV0ID0gVk9fRVJSX05PTkU7CisgICAgb3V0cHV0RGF0YS5CdWZmZXIgPSBvdXRQdHI7CisgICAgb3V0cHV0RGF0YS5MZW5ndGggPSBidWZmZXItPnNpemUoKTsKKyAgICByZXQgPSBtQXBpSGFuZGxlLT5HZXRPdXRwdXREYXRhKG1FbmNvZGVySGFuZGxlLCAmb3V0cHV0RGF0YSwgJm91dHB1dEluZm8pOworICAgIENIRUNLKHJldCA9PSBWT19FUlJfTk9ORSB8fCByZXQgPT0gVk9fRVJSX0lOUFVUX0JVRkZFUl9TTUFMTCk7CisgICAgQ0hFQ0sob3V0cHV0RGF0YS5MZW5ndGggIT0gMCk7CisgICAgYnVmZmVyLT5zZXRfcmFuZ2UoMCwgb3V0cHV0RGF0YS5MZW5ndGgpOworCisgICAgaW50NjRfdCB0aW1lc3RhbXBVcyA9ICgobUZyYW1lQ291bnQgLSAxKSAqIDEwMDAwMDBMTCAqIGtOdW1TYW1wbGVzUGVyRnJhbWUpIC8gbVNhbXBsZVJhdGU7CisgICAgKyttRnJhbWVDb3VudDsKKyAgICBidWZmZXItPm1ldGFfZGF0YSgpLT5zZXRJbnQ2NChrS2V5VGltZSwgdGltZXN0YW1wVXMpOworCisgICAgKm91dCA9IGJ1ZmZlcjsKKyAgICByZXR1cm4gT0s7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL0FuZHJvaWQubWsgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL0FuZHJvaWQubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2RhNGY5ZAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvQW5kcm9pZC5tawpAQCAtMCwwICsxLDg3IEBACitMT0NBTF9QQVRIIDo9ICQoY2FsbCBteS1kaXIpCitpbmNsdWRlICQoQ0xFQVJfVkFSUykKK2luY2x1ZGUgZnJhbWV3b3Jrcy9iYXNlL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9jb21tb24vQ29uZmlnLm1rCisKK0xPQ0FMX1BSRUxJTktfTU9EVUxFIDo9IGZhbHNlCisKK0xPQ0FMX1NSQ19GSUxFUyA6PSBiYXNpY19vcC9iYXNpY29wMi5jIGJhc2ljX29wL29wZXJfMzJiLmMKKworTE9DQUxfU1JDX0ZJTEVTICs9IFwKKwlBQUNFbmNvZGVyLmNwcCBcCisJc3JjL2FhY19yb20uYyBcCisJc3JjL2FhY2VuYy5jIFwKKwlzcmMvYWFjZW5jX2NvcmUuYyBcCisJc3JjL2Fkal90aHIuYyBcCisJc3JjL2JhbmRfbnJnLmMgXAorCXNyYy9iaXRfY250LmMgXAorCXNyYy9iaXRidWZmZXIuYyBcCisJc3JjL2JpdGVuYy5jIFwKKwlzcmMvYmxvY2tfc3dpdGNoLmMgXAorCXNyYy9jaGFubmVsX21hcC5jIFwKKwlzcmMvZHluX2JpdHMuYyBcCisJc3JjL2dycF9kYXRhLmMgXAorCXNyYy9pbnRlcmZhY2UuYyBcCisJc3JjL2xpbmVfcGUuYyBcCisJc3JjL21zX3N0ZXJlby5jIFwKKwlzcmMvcHJlX2VjaG9fY29udHJvbC5jIFwKKwlzcmMvcHN5X2NvbmZpZ3VyYXRpb24uYyBcCisJc3JjL3BzeV9tYWluLmMgXAorCXNyYy9xY19tYWluLmMgXAorCXNyYy9xdWFudGl6ZS5jIFwKKwlzcmMvc2ZfZXN0aW0uYyBcCisJc3JjL3NwcmVhZGluZy5jIFwKKwlzcmMvc3RhdF9iaXRzLmMgXAorCXNyYy90bnMuYyBcCisJc3JjL3RyYW5zZm9ybS5jIFwKKwlzcmMvbWVtYWxpZ24uYworCitpZmVxICgkKFZPVFQpLCB2NSkKK0xPQ0FMX1NSQ19GSUxFUyArPSBcCisJc3JjL2FzbS9BUk1WNUUvQXV0b0NvcnJlbGF0aW9uX3Y1LnMgXAorCXNyYy9hc20vQVJNVjVFL2JhbmRfbnJnX3Y1LnMgXAorCXNyYy9hc20vQVJNVjVFL0NhbGNXaW5kb3dFbmVyZ3lfdjUucyBcCisJc3JjL2FzbS9BUk1WNUUvUHJlUG9zdE1EQ1RfdjUucyBcCisJc3JjL2FzbS9BUk1WNUUvUjRSOEZpcnN0X3Y1LnMgXAorCXNyYy9hc20vQVJNVjVFL1JhZGl4NEZGVF92NS5zCitlbmRpZgorCitpZmVxICgkKFZPVFQpLCB2NykKK0xPQ0FMX1NSQ19GSUxFUyArPSBcCisJc3JjL2FzbS9BUk1WNUUvQXV0b0NvcnJlbGF0aW9uX3Y1LnMgXAorCXNyYy9hc20vQVJNVjVFL2JhbmRfbnJnX3Y1LnMgXAorCXNyYy9hc20vQVJNVjVFL0NhbGNXaW5kb3dFbmVyZ3lfdjUucyBcCisJc3JjL2FzbS9BUk1WNy9QcmVQb3N0TURDVF92Ny5zIFwKKwlzcmMvYXNtL0FSTVY3L1I0UjhGaXJzdF92Ny5zIFwKKwlzcmMvYXNtL0FSTVY3L1JhZGl4NEZGVF92Ny5zCitlbmRpZgorCitMT0NBTF9NT0RVTEUgOj0gbGlic3RhZ2VmcmlnaHRfYWFjZW5jCisKK0xPQ0FMX0FSTV9NT0RFIDo9IGFybQorCitMT0NBTF9TVEFUSUNfTElCUkFSSUVTIDo9IAorCitMT0NBTF9TSEFSRURfTElCUkFSSUVTIDo9CisKK0xPQ0FMX0NfSU5DTFVERVMgOj0gXAorCWZyYW1ld29ya3MvYmFzZS9tZWRpYS9saWJzdGFnZWZyaWdodC9pbmNsdWRlIFwKKwlmcmFtZXdvcmtzL2Jhc2UvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2NvbW1vbi9pbmNsdWRlIFwKKwlmcmFtZXdvcmtzL2Jhc2UvaW5jbHVkZSBcCisJJChMT0NBTF9QQVRIKS9zcmMgXAorCSQoTE9DQUxfUEFUSCkvaW5jIFwKKwkkKExPQ0FMX1BBVEgpL2Jhc2ljX29wCisKK0xPQ0FMX0NGTEFHUyA6PSAkKFZPX0NGTEFHUykKKworaWZlcSAoJChWT1RUKSwgdjUpCitMT0NBTF9DRkxBR1MgKz0gLURBUk1WNUUgLURBUk1fSU5BU00gLURBUk1WNV9JTkFTTQorTE9DQUxfQ19JTkNMVURFUyArPSAkKExPQ0FMX1BBVEgpL3NyYy9hc20vQVJNVjVFCitlbmRpZgorCitpZmVxICgkKFZPVFQpLCB2NykKK0xPQ0FMX0NGTEFHUyArPSAtREFSTVY1RSAtREFSTVY3TmVvbiAtREFSTV9JTkFTTSAtREFSTVY1X0lOQVNNCitMT0NBTF9DX0lOQ0xVREVTICs9ICQoTE9DQUxfUEFUSCkvc3JjL2FzbS9BUk1WNUUKK0xPQ0FMX0NfSU5DTFVERVMgKz0gJChMT0NBTF9QQVRIKS9zcmMvYXNtL0FSTVY3CitlbmRpZgorCitpbmNsdWRlICQoQlVJTERfU1RBVElDX0xJQlJBUlkpCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL1NhbXBsZUNvZGUvQUFDX0VfU0FNUExFUy5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9TYW1wbGVDb2RlL0FBQ19FX1NBTVBMRVMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NGQwMTJkCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9TYW1wbGVDb2RlL0FBQ19FX1NBTVBMRVMuYwpAQCAtMCwwICsxLDI4MyBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJQUFDX0VfU0FNUExFUy5oDQorDQorCUNvbnRlbnQ6CXNhbXBsZSBjb2RlIGZvciBBQUMgZW5jb2Rlcg0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2luY2x1ZGUJCTxkbGZjbi5oPg0KKyNpbmNsdWRlCQk8c3RkaW8uaD4NCisjaW5jbHVkZQkJPHN0ZGxpYi5oPg0KKyNpbmNsdWRlCQk8c3RyaW5nLmg+DQorI2luY2x1ZGUJCTx0aW1lLmg+DQorI2luY2x1ZGUJCSJ2b0FBQy5oIg0KKyNpbmNsdWRlCQkiY21uTWVtb3J5LmgiDQorDQorI2RlZmluZSAgVk9fQUFDX0VfT1VUUFVUCSAgMQ0KKyNkZWZpbmUgUkVBRF9TSVpFCSgxMDI0KjgpCQ0KK3Vuc2lnbmVkIGNoYXIgb3V0QnVmWzEwMjQqOF07DQordW5zaWduZWQgY2hhciBpbkJ1ZltSRUFEX1NJWkVdOw0KKw0KK2NvbnN0IGNoYXIqIEhlbHBTdHJpbmcgPSANCisiVmlzdWFsT24gQUFDIGVuY29kZXIgVXNhZ2U6XG4iDQorInZvQUFDRW5jVGVzdCAtaWYgPGlucHV0ZmlsZS5wY20+IC1vZiA8b3V0cHV0ZmlsZS5hYWM+IC1zciA8c2FtcGxlcmF0ZT4gLWNoIDxjaGFubmVsPiAtYnIgPGJpdHJhdGU+IC1hZHRzIDxhZHRzPiBcbiINCisiLWlmIGlucHV0IGZpbGUgbmFtZSBcbiINCisiLW9mIG91dHB1dCBmaWxlIG5hbWUgXG4iDQorIi1zciBpbnB1dCBwY20gc2FtcGxlcmF0ZSwgZGVmYXVsdCA0NDEwMCBcbiINCisiLWNoIGlucHV0IHBjbSBjaGFubmVsLCBkZWZhdWx0IDIgY2hhbm5lbCBcbiINCisiLWJyIGVuY29kZWQgYWFjIGJpdHJhdGUsIGRlZmF1bHQgNjQwMDAgKiAoc2FtcGxlcmF0ZS8xMDApKmNoYW5uZWwvNDQxKDQ4MClcbiINCisiLWFkdHMgYWRkIG9yIG5vIGFkdHMgaGVhZGVyLCBkZWZhdWx0IGFkZCBhZHRzIGhlYWRlclxuIg0KKyJGb3IgZXhhbXBsZTogXG4iDQorIi4vdm9BQUNFbmNUZXN0IC1pZiByYXcucGNtIC1vZiByYXcuYWFjIC1zciA0NDEwMCAtY2ggMiAtYnIgMTI4MDAwXG4iOw0KKw0KK3N0YXRpYyBpbnQgcGFyc2VjbWRsaW5lKGludCBhcmdjLCBjaGFyICoqYXJndixjaGFyICAqKmlucHV0X2ZpbGVuYW1lLCBjaGFyICAqKm91dHB1dF9maWxlbmFtZSwgQUFDRU5DX1BBUkFNICpwYXJhbSkNCit7DQorCS8vIG5vdGljZSB0aGF0Og0KKwkvLyBiaXRSYXRlL25DaGFubmVscyA+IDgwMDANCisJLy8gYml0UmF0ZS9uQ2hhbm5lbHMgPCAxNjAwMDAgDQorCS8vIGJpdFJhdGUvbkNoYW5uZWxzIDwgc2FtcGxlUmF0ZSo2DQorCXBhcmFtLT5hZHRzVXNlZCA9IDE7DQorCXBhcmFtLT5iaXRSYXRlID0gMDsNCisJcGFyYW0tPm5DaGFubmVscyA9IDI7DQorCXBhcmFtLT5zYW1wbGVSYXRlID0gNDQxMDA7DQorDQorCWlmKGFyZ2MgPCA1IHx8IGFyZ2MgPiAxMykNCisJew0KKwkJcmV0dXJuIC0xOw0KKwl9DQorDQorCWFyZ2MtLTsNCisJYXJndisrOw0KKwl3aGlsZSAoYXJnYyA+IDApDQorCXsNCisJCWlmICghc3RyY21wKCphcmd2LCAiLWlmIikpDQorCQl7DQorCQkJYXJndisrOw0KKwkJCWFyZ2MtLTsNCisJCQkqaW5wdXRfZmlsZW5hbWUgPSAqYXJndjsgDQorCQl9DQorCQllbHNlIGlmICghc3RyY21wKCphcmd2LCAiLW9mIikpDQorCQl7DQorCQkJYXJndisrOw0KKwkJCWFyZ2MtLTsNCisJCQkqb3V0cHV0X2ZpbGVuYW1lID0gKmFyZ3Y7DQorCQl9DQorCQllbHNlIGlmICghc3RyY21wKCphcmd2LCAiLXNyIikpDQorCQl7DQorCQkJYXJndisrOw0KKwkJCWFyZ2MtLTsNCisJCQlwYXJhbS0+c2FtcGxlUmF0ZSA9IGF0b2koKmFyZ3YpOw0KKwkJfQ0KKwkJZWxzZSBpZiAoIXN0cmNtcCgqYXJndiwgIi1jaCIpKQ0KKwkJew0KKwkJCWFyZ3YrKzsNCisJCQlhcmdjLS07DQorCQkJcGFyYW0tPm5DaGFubmVscyA9IGF0b2koKmFyZ3YpOw0KKwkJfQ0KKwkJZWxzZSBpZiAoIXN0cmNtcCgqYXJndiwgIi1iciIpKQ0KKwkJew0KKwkJCWFyZ3YrKzsNCisJCQlhcmdjLS07DQorCQkJcGFyYW0tPmJpdFJhdGUgPSBhdG9pKCphcmd2KTsNCisJCX0NCisJCWVsc2UgaWYoIXN0cmNtcCgqYXJndiwgIi1hZHRzIikpDQorCQl7DQorCQkJYXJndisrOw0KKwkJCWFyZ2MtLTsNCisJCQlwYXJhbS0+YWR0c1VzZWQgPSBhdG9pKCphcmd2KTsNCisJCX0NCisJCWVsc2UNCisJCXsNCisJCQlyZXR1cm4gLTE7DQorCQl9DQorDQorCQlhcmd2Kys7DQorCQlhcmdjLS07DQorCX0NCisNCisJaWYocGFyYW0tPmJpdFJhdGUgPT0gMCkNCisJew0KKwkJaW50IHNjYWxlID0gNDQxOw0KKwkJaWYocGFyYW0tPnNhbXBsZVJhdGUlODAwMCA9PSAwKQ0KKwkJCXNjYWxlID0gNDgwOw0KKwkJcGFyYW0tPmJpdFJhdGUgPSA2NDAqcGFyYW0tPm5DaGFubmVscypwYXJhbS0+c2FtcGxlUmF0ZS9zY2FsZTsNCisJfQ0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQoraW50IFJlYWRGaWxlMkJ1ZihGSUxFKiBpbmZpbGUsdW5zaWduZWQgY2hhciogZGVzdCxpbnQgcmVhZFNpemUpDQorew0KKwlpbnQgcmVhZEJ5dGVzID0gMDsNCisJcmVhZEJ5dGVzID0gZnJlYWQoZGVzdCwgMSwgcmVhZFNpemUsIGluZmlsZSk7DQorCXJldHVybiByZWFkQnl0ZXM7DQorfQ0KKw0KK3R5cGVkZWYgaW50IChWT19BUEkgKiBWT0dFVEFVRElPREVDQVBJKSAoVk9fQVVESU9fQ09ERUNBUEkgKiBwRGVjSGFuZGxlKTsNCisNCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpDQorew0KKwlGSUxFCQkJCQkJKmluZmlsZSwgKm91dGZpbGU7DQorCWludAkJCQkJCQl0MSwgdDI7DQorCVZPX0FVRElPX0NPREVDQVBJCQkJQXVkaW9BUEk7DQorCVZPX01FTV9PUEVSQVRPUgkJCQltb3BlcjsNCisJVk9fQ09ERUNfSU5JVF9VU0VSREFUQQkJdXNlRGF0YTsNCisJVk9fSEFORExFCQkJCQloQ29kZWM7DQorCVZPX0NPREVDQlVGRkVSCQkJCWluRGF0YTsNCisJVk9fQ09ERUNCVUZGRVIJCQkJb3V0RGF0YTsNCisJVk9fQVVESU9fT1VUUFVUSU5GTwkJCW91dEluZm87DQorICAgIGludAkJCQkJCQlmaXJzdFdyaXRlID0gMTsNCisJaW50CQkJCQkJCWVvZkZpbGUgPSAwOw0KKwlpbnQJCQkJCQkJKmluZm89KGludCopaW5CdWY7DQorCWludAkJCQkJCQlieXRlc0xlZnQsIG5SZWFkOw0KKwlpbnQJCQkJCQkJRW5jb2RlcmRGcmFtZSA9IDA7DQorCWludAkJCQkJCQl0b3RhbCA9IDA7DQorCWludAkJCQkJCQlpc091dHB1dCA9IDE7DQorCWludAkJCQkJCQlyZXR1cm5Db2RlOw0KKwlBQUNFTkNfUEFSQU0JCQkJYWFjcGFyYTsNCisJdm9pZAkJCQkJCSpoYW5kbGU7DQorCXZvaWQJCQkJCQkqcGZ1bmM7DQorCVZPR0VUQVVESU9ERUNBUEkJCQlwR2V0QVBJOw0KKwljb25zdCBjaGFyCQkJCQkqaW5maWxlTmFtZSA9IE5VTEw7DQorICAgIGNvbnN0IGNoYXIJCQkJCSpvdXRmaWxlTmFtZSA9IE5VTEw7DQorDQorCXJldHVybkNvZGUgPSBwYXJzZWNtZGxpbmUoYXJnYyxhcmd2LCAmaW5maWxlTmFtZSwgJm91dGZpbGVOYW1lLCAmYWFjcGFyYSk7DQorCWlmKHJldHVybkNvZGUpDQorCXsNCisJCXByaW50ZigiJXMiLCBIZWxwU3RyaW5nKTsNCisJCXJldHVybiAwOw0KKwl9DQorDQorCS8qIG9wZW4gaW5wdXQgZmlsZSAqLw0KKwlpbmZpbGUgPSBmb3BlbihpbmZpbGVOYW1lLCAicmIiKTsNCisJaWYgKCFpbmZpbGUpIHsNCisJCXByaW50ZigiT3BlbiBpbnB1dCBmaWxlIGZhaWwuLi4iKTsNCisJCXJldHVybiAtMTsNCisJfQ0KKw0KKwkvKiBvcGVuIG91dHB1dCBmaWxlICovDQorCWlmKGlzT3V0cHV0KQ0KKwl7DQorCQlvdXRmaWxlID0gZm9wZW4ob3V0ZmlsZU5hbWUsICJ3YiIpOyANCisJCWlmICghb3V0ZmlsZSkgew0KKwkJCXByaW50ZigiT3BlbiBvdXRwdXQgZmlsZSBmYWlsLi4uIik7DQorCQkJcmV0dXJuIC0xOw0KKwkJfQ0KKwl9DQorCS8vIHNldCBtZW1vcnkgb3BlcmF0b3JzOw0KKwltb3Blci5BbGxvYyA9IGNtbk1lbUFsbG9jOw0KKwltb3Blci5Db3B5ID0gY21uTWVtQ29weTsNCisJbW9wZXIuRnJlZSA9IGNtbk1lbUZyZWU7DQorCW1vcGVyLlNldCA9IGNtbk1lbVNldDsNCisJbW9wZXIuQ2hlY2sgPSBjbW5NZW1DaGVjazsNCisJdXNlRGF0YS5tZW1mbGFnID0gVk9fSU1GX1VTRVJNRU1PUEVSQVRPUjsNCisJdXNlRGF0YS5tZW1EYXRhID0gKFZPX1BUUikoJm1vcGVyKTsNCisJLy8gb3BlbiBlbmNvZGVyIGRsbDsNCisJaGFuZGxlID0gZGxvcGVuKCIvZGF0YS9sb2NhbC90bXAvbGlidm9BQUNFbmN2Ny5zbyIsIFJUTERfTk9XKTsNCisJaWYoaGFuZGxlID09IDApDQorCXsNCisJCXByaW50Zigib3BlbiBkbGwgZXJyb3IuLi4uLi4iKTsNCisJCXJldHVybiAtMTsNCisJfQ0KKwkvLyBHZXQgQVBJOw0KKwlwZnVuYyA9IGRsc3ltKGhhbmRsZSwgInZvR2V0QUFDRW5jQVBJIik7CQ0KKwlpZihwZnVuYyA9PSAwKQ0KKwl7DQorCQlwcmludGYoIm9wZW4gZnVuY3Rpb24gZXJyb3IuLi4uLi4iKTsNCisJCXJldHVybiAtMTsNCisJfQ0KKwlwR2V0QVBJID0gKFZPR0VUQVVESU9ERUNBUEkpcGZ1bmM7DQorCXJldHVybkNvZGUgID0gcEdldEFQSSgmQXVkaW9BUEkpOw0KKwlpZihyZXR1cm5Db2RlKQ0KKwkJcmV0dXJuIC0xOw0KKw0KKw0KKy8vIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICAgSW5pdCBFbmNvZGluZyBTZWN0aW9uICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCisJcmV0dXJuQ29kZSA9IEF1ZGlvQVBJLkluaXQoJmhDb2RlYywgVk9fQVVESU9fQ29kaW5nQUFDLCAmdXNlRGF0YSk7DQorCWlmKHJldHVybkNvZGUgPCAwKQ0KKwl7DQorCQlwcmludGYoIiMjIyMgVk9JX0Vycm9yMjpmYWlsIHRvIGluaXRpYWxpemUgdGhlIEVuY29kZXJyIyMjXG4iKTsNCisJCXJldHVybiAtMTsNCisJfQ0KKw0KKwlyZXR1cm5Db2RlID0gQXVkaW9BUEkuU2V0UGFyYW0oaENvZGVjLCBWT19QSURfQUFDX0VOQ1BBUkFNLCAmYWFjcGFyYSk7CQ0KKwkNCisJaW5EYXRhLkJ1ZmZlciA9IGluQnVmOw0KKwlieXRlc0xlZnQgPSBSZWFkRmlsZTJCdWYoaW5maWxlLGluRGF0YS5CdWZmZXIsUkVBRF9TSVpFKTsNCisNCisvLyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAgICBFbmNvZGluZyBTZWN0aW9uICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCisJDQorCWRvIHsNCisNCisJCWluRGF0YS5MZW5ndGggICAgPSBieXRlc0xlZnQ7DQorCQlvdXREYXRhLkJ1ZmZlciAgID0gb3V0QnVmOw0KKwkJb3V0RGF0YS5MZW5ndGggPSAxMDI0Kjg7DQorDQorCQl0MSA9IGNsb2NrKCk7DQorCQkNCisJCXJldHVybkNvZGUgPSBBdWRpb0FQSS5TZXRJbnB1dERhdGEoaENvZGVjLCZpbkRhdGEpOw0KKwkJDQorCQlkbyB7DQorCQkJb3V0RGF0YS5CdWZmZXIgICA9IG91dEJ1ZjsNCisJCQlvdXREYXRhLkxlbmd0aCA9IDEwMjQqODsNCisNCisJCQlyZXR1cm5Db2RlID0gQXVkaW9BUEkuR2V0T3V0cHV0RGF0YShoQ29kZWMsJm91dERhdGEsICZvdXRJbmZvKTsNCisNCisJCQlpZihyZXR1cm5Db2RlID09IDApDQorCQkJCUVuY29kZXJkRnJhbWUrKzsNCisJCQlpZihyZXR1cm5Db2RlID09IFZPX0VSUl9MSUNFTlNFX0VSUk9SKQ0KKwkJCQlicmVhazsNCisNCisjaWYgVk9fQUFDX0VfT1VUUFVUDQorCQkJaWYgKGlzT3V0cHV0ICYmIHJldHVybkNvZGUgPT0gMCkNCisJCQl7DQorCQkJCWZ3cml0ZShvdXREYXRhLkJ1ZmZlciwgMSwgb3V0RGF0YS5MZW5ndGgsIG91dGZpbGUpOw0KKwkJCX0NCisjZW5kaWYNCisJCX0gd2hpbGUocmV0dXJuQ29kZSAhPSAoVk9fRVJSX0lOUFVUX0JVRkZFUl9TTUFMTCkpOw0KKw0KKwkJaWYocmV0dXJuQ29kZSA9PSBWT19FUlJfTElDRU5TRV9FUlJPUikNCisJCQlicmVhazsNCisNCisJCXQyID0gY2xvY2soKTsNCisJCXRvdGFsICs9IHQyIC0gdDE7DQorDQorCQlpZiAoIWVvZkZpbGUpIHsNCisJCQluUmVhZCA9IFJlYWRGaWxlMkJ1ZihpbmZpbGUsIGluQnVmLFJFQURfU0laRSk7DQorCQkJYnl0ZXNMZWZ0ID0gblJlYWQ7DQorCQkJaW5EYXRhLkJ1ZmZlciA9IGluQnVmOw0KKwkJCWlmIChmZW9mKGluZmlsZSkpDQorCQkJCWVvZkZpbGUgPSAxOw0KKwkJfQ0KKw0KKwl9IHdoaWxlICghZW9mRmlsZSAmJiByZXR1cm5Db2RlKTsNCisNCisNCisvLyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAgRW5kIEVuY29kaW5nIFNlY3Rpb24gICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCisJcmV0dXJuQ29kZSA9IEF1ZGlvQVBJLlVuaW5pdChoQ29kZWMpOw0KKw0KKwlmY2xvc2UoaW5maWxlKTsNCisJaWYgKG91dGZpbGUpDQorICAgIHsNCisgICAgICAgIGZjbG9zZShvdXRmaWxlKTsNCisgICAgfQ0KKwlkbGNsb3NlKGhhbmRsZSk7DQorCXJldHVybiAwOw0KK30NCisNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL1NhbXBsZUNvZGUvQW5kcm9pZC5tayBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvU2FtcGxlQ29kZS9BbmRyb2lkLm1rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyYzljMDcKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL1NhbXBsZUNvZGUvQW5kcm9pZC5tawpAQCAtMCwwICsxLDI0IEBACitMT0NBTF9QQVRIIDo9ICQoY2FsbCBteS1kaXIpCitpbmNsdWRlICQoQ0xFQVJfVkFSUykKKworTE9DQUxfU1JDX0ZJTEVTIDo9IAlBQUNfRV9TQU1QTEVTLmMKKwkKK0xPQ0FMX1NSQ19GSUxFUyArPSAJXAorCS4uLy4uLy4uL0NvbW1vbi9jbW5NZW1vcnkuYyAKKworTE9DQUxfTU9EVUxFIDo9IFRlc3R2b0FBQ0VuYworCitMT0NBTF9BUk1fTU9ERSA6PSBhcm0KKworTE9DQUxfU1RBVElDX0xJQlJBUklFUyA6PSAKKworTE9DQUxfU0hBUkVEX0xJQlJBUklFUyA6PSBsaWJ2b0FBQ0VuYworCitMT0NBTF9DX0lOQ0xVREVTIDo9IFwKKwkkKExPQ0FMX1BBVEgpLyBcCisJJChMT0NBTF9QQVRIKS8uLi8uLi8uLi9Db21tb24gXAorCSQoTE9DQUxfUEFUSCkvLi4vLi4vLi4vSW5jbHVkZSBcCisKK0xPQ0FMX0NGTEFHUyA6PSAkKFZPX0NGTEFHUykKKwkKK2luY2x1ZGUgJChCVUlMRF9FWEVDVVRBQkxFKQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9TYW1wbGVDb2RlL2VjbGFpci9NYWtlZmlsZSBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvU2FtcGxlQ29kZS9lY2xhaXIvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjJjNWRjMQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvU2FtcGxlQ29kZS9lY2xhaXIvTWFrZWZpbGUKQEAgLTAsMCArMSw1NSBAQAorIy8qDQorIyoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorIyoqDQorIyoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyMqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorIyoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyMqKg0KKyMqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorIyoqDQorIyoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisjKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisjKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorIyoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisjKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorIyovDQorDQorIyB0YXJnZXQ2DQorIyBhdmFpbGFibGU6IHBjLCB2NChhcm12NCksIHY1KGFybXY1KSwgdjV4KGFybXY1IHhzY2FsZSksIHY2KGFybXY2KSwgdjcoY29ydGV4LWE4IG5lb24pDQorVk9UVDo9IHY3DQorDQorDQorIyBtb2R1bGUgdHlwZQ0KKyMgcGxlYXNlIHNwZWNpZnkgdGhlIHR5cGUgb2YgeW91ciBtb2R1bGU6IGxpYiBvciBleGUNCitWT01UOj0gZXhlDQorDQorDQorIyBtb2R1bGUgbWFjcm9zDQorIyBwbGVhc2UgYXBwZW5kIHRoZSBhZGRpdGlvbmFsIG1hY3JvIGRlZmluaXRpb25zIGhlcmUgZm9yIHlvdXIgbW9kdWxlIGlmIG5lY2Vzc2FyeS4gDQorIyBlLmcuIC1EVklTVUFMT04sIG1hY3JvIFZJU1VBTE9OIGRlZmluZWQgZm9yIHlvdXIgbW9kdWxlIA0KK1ZPTU06PSAjQVJNVjVFDQorDQorDQorDQorIyBwbGVhc2Ugc3BlY2lmeSB0aGUgbmFtZSBvZiB5b3VyIG1vZHVsZQ0KK1ZPVEFSR0VUOj0gdm9BQUNFbmNUZXN0djcNCisNCisNCisjIHBsZWFzZSBtb2RpZnkgaGVyZSB0byBiZSBzdXJlIHRvIHNlZSB0aGUgZzEubWsNCitpbmNsdWRlIC4uLy4uLy4uLy4uL1Rvb2xzL2VjbGFpci5tayANCisNCisjIGRlcGVuZGVudCBsaWJyYXJpZXMuDQorVk9ERVBMSUJTOj0tbGRsDQorDQorIyBtb2R1bGUgc291cmNlDQorIyBwbGVhc2UgbW9kaWZ5IGhlcmUgdG8gYmUgc3VyZSB0byBzZWUgdGhlIG1zLm1rIHdoaWNoIHNwZWNpZmllcyBhbGwgc291cmNlIGluZm8gb2YgeW91ciBtb2R1bGUNCitpbmNsdWRlIC4uL21zLm1rDQorDQorDQorIyBwbGVhc2Ugc3BlY2lmeSB3aGVyZSBpcyB0aGUgdm9SZWxlYXNlIG9uIHlvdXIgUEMsIHJlbGF0aXZlIHBhdGggaXMgc3VnZ2VzdGVkDQorVk9SRUxESVI6PS4uLy4uLy4uLy4uLy4uL1JlbGVhc2UvDQorDQorDQorIyBwbGVhc2UgbW9kaWZ5IGhlcmUgdG8gYmUgc3VyZSB0byBzZWUgdGhlIGRvaXQubWsNCitpbmNsdWRlIC4uLy4uLy4uLy4uL1Rvb2xzL2RvaXQubWsgDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9TYW1wbGVDb2RlL21zLm1rIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9TYW1wbGVDb2RlL21zLm1rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3MWE1NjkKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL1NhbXBsZUNvZGUvbXMubWsKQEAgLTAsMCArMSwyMyBAQAorIy8qDQorIyoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorIyoqDQorIyoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyMqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorIyoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyMqKg0KKyMqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorIyoqDQorIyoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisjKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisjKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorIyoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisjKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorIyovDQorDQorIyBwbGVhc2UgbGlzdCBhbGwgb2JqZWN0cyBuZWVkZWQgYnkgeW91ciB0YXJnZXQgaGVyZQ0KK09CSlM6PUFBQ19FX1NBTVBMRVMubwljbW5NZW1vcnkubw0KKwkJCQ0KKyMgcGxlYXNlIGxpc3QgYWxsIGRpcmVjdG9yaWVzIHRoYXQgYWxsIHNvdXJjZSBmaWxlcyByZWxhdGl2ZSB3aXRoIHlvdXIgbW9kdWxlKC5oIC5jIC5jcHApIGxvY2F0ZSANCitWT1NSQ0RJUjo9Li4vIC4uLy4uLy4uLy4uL2luY2x1ZGUgIC4uLy4uLy4uLy4uL0NvbW1vbg0KKwkJCQkJDQorCQkJCQ0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvVG9vbHMvZG9pdC5tayBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvVG9vbHMvZG9pdC5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWEwYjBhCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9Ub29scy9kb2l0Lm1rCkBAIC0wLDAgKzEsMTMzIEBACisjLyoKKyMgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4KKyMgKioKKyMgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisjICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyMgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisjICoqCisjICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyMgKioKKyMgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorIyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorIyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyMgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorIyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyMgKi8KKworVkVSQk9TRTo9QAorCisKK1ZPTVQgPz0gbGliCisKK2lmZXEgKCQoVk9NVCksIGxpYikKK0xJQl9TVEFUSUM9JChWT1RBUkdFVCkuYQorTElCX0RZTkFNSUM9JChWT1RBUkdFVCkuc28KK2VuZGlmCisKK2lmZXEgKCQoVk9NVCksIGV4ZSkKK1RBUkdFVD0kKFZPVEFSR0VUKQorZW5kaWYKKworQ0ZMQUdTPSQoVk9DRkxBR1MpICQoYWRkcHJlZml4IC1JLCAkKFZPU1JDRElSKSkgCitDUFBGTEFHUz0kKFZPQ1BQRkxBR1MpICQoYWRkcHJlZml4IC1JLCAkKFZPU1JDRElSKSkgCitpZm5lcSAoJChWT1RUKSwgcGMpCitBU0ZMQUdTPSQoVk9BU0ZMQUdTKSAkKGFkZHByZWZpeCAtSSwgJChWT1NSQ0RJUikpIAorZW5kaWYKKworTERGTEFHUzo9JChWT0xERkxBR1MpCitWT1RFREVQUys9JChWT0RFUExJQlMpCitWT1RMREVQUys9JChWT0RFUExJQlMpCitWT1NUQ0xJQlMgPz0KKwordnBhdGggJS5jICQoVk9TUkNESVIpCit2cGF0aCAlLmNwcCAkKFZPU1JDRElSKQoraWZuZXEgKCQoVk9UVCksIHBjKQordnBhdGggJS5zICQoVk9TUkNESVIpCitlbmRpZgorCitpZmVxICgkKFZPVFQpLCBwYykKK0JMVERJUlM9JChWT1JFTERJUikvTGludXgvc3RhdGljCitCTFRESVJEPSQoVk9SRUxESVIpL0xpbnV4L3NoYXJlZAorZWxzZQorQkxURElSUz0kKFZPUkVMRElSKS9Hb29nbGUvJChWT05KKS9saWIvJChWT1RUKQorQkxURElSRD0kKFZPUkVMRElSKS9Hb29nbGUvJChWT05KKS9zby8kKFZPVFQpCitlbmRpZgorCisKKy5QUkVDSU9VUzogJChPQkpESVIpLyUubworCitpZmVxICgkKFZPTVQpLCBsaWIpCithbGw6IG1rZGlycyAkKExJQl9TVEFUSUMpICQoTElCX0RZTkFNSUMpCitta2RpcnM6ICQoT0JKRElSKSAkKEJMVERJUlMpICQoQkxURElSRCkKK2Vsc2UKK2FsbDogbWtkaXJzICQoVEFSR0VUKQorbWtkaXJzOiAkKE9CSkRJUikKK2VuZGlmCisKKyQoT0JKRElSKToKKwlAaWYgdGVzdCAhIC1kICRAOyB0aGVuIFwKKwkJbWtkaXIgLXAgJEA7IFwKKwlmaTsKKworaWZlcSAoJChWT01UKSwgbGliKQorJChCTFRESVJTKToKKwlAaWYgdGVzdCAhIC1kICRAOyB0aGVuIFwKKwkJbWtkaXIgLXAgJEA7IFwKKwlmaTsKKyQoQkxURElSRCk6CisJQGlmIHRlc3QgISAtZCAkQDsgdGhlbiBcCisJCW1rZGlyIC1wICRAOyBcCisJZmk7CitlbmRpZgorCisKK2lmZXEgKCQoVk9NVCksIGxpYikKKyQoTElCX1NUQVRJQyk6JChPQkpTKQorCSQoQVIpIGNyICRAICQoT0JKRElSKS8qLm8gJChWT1NUQ0xJQlMpCisJJChSQU5MSUIpICRACitpZm5lcSAoJChWT0RCRyksIHllcykKKwkjJChTVFJJUCkgJEAKK2VuZGlmCisKKyQoTElCX0RZTkFNSUMpOiQoT0JKUykKKwkkKEdHKSAkKExERkxBR1MpIC1vICRAICQoT0JKRElSKS8qLm8gLVdsLC0td2hvbGUtYXJjaGl2ZSAkKFZPU1RDTElCUykgLVdsLC0tbm8td2hvbGUtYXJjaGl2ZSAkKFZPVExERVBTKSAKK2lmbmVxICgkKFZPREJHKSwgeWVzKQorCQkkKFNUUklQKSAkQAorZW5kaWYKKworZWxzZQorCiskKFRBUkdFVCk6JChPQkpTKQorCSQoR0cpICQoTERGTEFHUykgLW8gJEAgJChPQkpESVIpLyoubyAtV2wsLS13aG9sZS1hcmNoaXZlICQoVk9TVENMSUJTKSAtV2wsLS1uby13aG9sZS1hcmNoaXZlICQoVk9URURFUFMpCitpZm5lcSAoJChWT0RCRyksIHllcykKKwkkKFNUUklQKSAkQAorZW5kaWYKKworZW5kaWYKKworCisuU1VGRklYRVM6IC5jIC5jcHAgLnMgLm8KKy5jLm86CisJJChWRVJCT1NFKSAkKENDKSAkKENGTEFHUykgLW8gJChPQkpESVIpLyRAIC1jICQ8CisjJS5jOiQoT0JKRElSKS8lLm8KKyMJJChWRVJCT1NFKSAkKENDKSAkKENGTEFHUykgLW8gJEAgLWMgJDwKKy5jcHAubzoKKwkkKFZFUkJPU0UpICQoR0cpICQoQ1BQRkxBR1MpIC1vICQoT0JKRElSKS8kQCAtYyAkPAoraWZuZXEgKCQoVk9UVCksIHBjKQorLnMubzoKKwkkKFZFUkJPU0UpICQoQVMpICQoQVNGTEFHUykgLW8gJChPQkpESVIpLyRAICQ8CitlbmRpZgorCisKKy5QSE9OWTogY2xlYW4gZGV2ZWwKK2NsZWFuOgoraWZlcSAoJChWT01UKSwgbGliKQorCS1ybSAtZnIgJChPQkpESVIpIC4qLnN3KiAkKFZPVEFSR0VUKS4qCitlbHNlCisJLXJtIC1mciAkKE9CSkRJUikgLiouc3cqICQoVk9UQVJHRVQpCitlbmRpZgorCitkZXZlbDoKKwljcCAtYSAkKExJQl9TVEFUSUMpICQoQkxURElSUykKKwljcCAtYSAkKExJQl9EWU5BTUlDKSAkKEJMVERJUkQpCisKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvVG9vbHMvZWNsYWlyLm1rIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9Ub29scy9lY2xhaXIubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTY4ODM2MQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvVG9vbHMvZWNsYWlyLm1rCkBAIC0wLDAgKzEsMTcyIEBACisjLyoKKyMgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4KKyMgKioKKyMgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisjICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyMgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisjICoqCisjICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyMgKioKKyMgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorIyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorIyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyMgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorIyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyMgKi8KKworIyBzcGVjaWFsIG1hY3JvIGRlZmluaXRpb25zIGZvciBidWlsZGluZyAKK1ZPUFJFREVGPS1ETElOVVggLURfTElOVVggCisKK1ZPUFJKID89IAorVk9OSiA/PSBlY2xhaXIKK1ZPVFQgPz0gdjYKKyMgY29udHJvbCB0aGUgdmVyc2lvbiB0byByZWxlYXNlIG91dAorIyBhdmFpbGFibGU6IGV2YShldmFsdWF0aW9uKSwgcmVsKHJlbGVhc2UpCitWT1ZFUj0KK2lmZXEgKCQoVk9WRVIpLCBldmEpCitWT1BSRURFRis9LURfX1ZPVkVSX0VWQV9fCitlbmRpZgorCisjIGZvciBkZWJ1ZyBvciBub3Q6IHllcyBmb3IgZGVidWcsIGFueSBvdGhlciBmb3IgcmVsZWFzZQorVk9EQkc/PXllCisKKyMgZm9yIGRldGVjdGluZyBtZW1vcnkgbGVhaworVk9ETUw9CitpZmVxICgkKFZPRE1MKSwgeWVzKQorVk9QUkVERUYrPS1ERE1FTUxFQUsKK2VuZGlmCisKK1ZPUFJFREVGKz0tRF9fVk9UVF9BUk1fXyAtRF9fVk9OSl9FQ0xBSVJfXworVENST09UUEFUSDo9L29wdC9lY2xhaXIKK0dDQ1ZFUjo9NC40LjAKK1RDUEFUSDo9JChUQ1JPT1RQQVRIKS9wcmVidWlsdC9saW51eC14ODYvdG9vbGNoYWluL2FybS1lYWJpLSQoR0NDVkVSKQorQ0NUUFJFOj0kKFRDUEFUSCkvYmluL2FybS1lYWJpLQorQVM6PSQoQ0NUUFJFKWFzCitBUjo9JChDQ1RQUkUpYXIKK05NOj0kKENDVFBSRSlubQorQ0M6PSQoQ0NUUFJFKWdjYworR0c6PSQoQ0NUUFJFKWcrKworTEQ6PSQoQ0NUUFJFKWxkCitTSVpFOj0kKENDVFBSRSlzaXplCitTVFJJUDo9JChDQ1RQUkUpc3RyaXAKK1JBTkxJQjo9JChDQ1RQUkUpcmFubGliCitPQkpDT1BZOj0kKENDVFBSRSlvYmpjb3B5CitPQkpEVU1QOj0kKENDVFBSRSlvYmpkdW1wCitSRUFERUxGOj0kKENDVFBSRSlyZWFkZWxmCitTVFJJTkdTOj0kKENDVFBSRSlzdHJpbmdzCisKKyMgdGFyZ2V0IHByb2R1Y3QgZGVwZW5kY3kKKyMgYXZhaWxhYmxlOiBkcmVhbSwgZ2VuZXJpYworVk9UUDo9c2FwcGhpcmUtb3BlbgorQ0NUTElCOj0kKFRDUk9PVFBBVEgpL291dC90YXJnZXQvcHJvZHVjdC8kKFZPVFApL29iai9saWIKK0NDVElOQzo9LUkkKFRDUk9PVFBBVEgpL3N5c3RlbS9jb3JlL2luY2x1ZGUgXAorCS1JJChUQ1JPT1RQQVRIKS9oYXJkd2FyZS9saWJoYXJkd2FyZS9pbmNsdWRlIFwKKwktSSQoVENST09UUEFUSCkvaGFyZHdhcmUvcmlsL2luY2x1ZGUgXAorCS1JJChUQ1JPT1RQQVRIKS9oYXJkd2FyZS9saWJoYXJkd2FyZV9sZWdhY3kvaW5jbHVkZSBcCisJLUkkKFRDUk9PVFBBVEgpL2RhbHZpay9saWJuYXRpdmVoZWxwZXIvaW5jbHVkZSBcCisJLUkkKFRDUk9PVFBBVEgpL2RhbHZpay9saWJuYXRpdmVoZWxwZXIvaW5jbHVkZS9uYXRpdmVoZWxwZXIgXAorCS1JJChUQ1JPT1RQQVRIKS9mcmFtZXdvcmtzL2Jhc2UvaW5jbHVkZSBcCisJLUkkKFRDUk9PVFBBVEgpL2ZyYW1ld29ya3MvYmFzZS9jb3JlL2puaSBcCisJLUkkKFRDUk9PVFBBVEgpL2ZyYW1ld29ya3MvYmFzZS9saWJzL2F1ZGlvZmxpbmdlciBcCisJLUkkKFRDUk9PVFBBVEgpL2V4dGVybmFsL3NraWEvaW5jbHVkZSBcCisJLUkkKFRDUk9PVFBBVEgpL291dC90YXJnZXQvcHJvZHVjdC8kKFZPVFApL29iai9pbmNsdWRlIFwKKwktSSQoVENST09UUEFUSCkvYmlvbmljL2xpYmMvYXJjaC1hcm0vaW5jbHVkZSBcCisJLUkkKFRDUk9PVFBBVEgpL2Jpb25pYy9saWJjL2luY2x1ZGUgXAorCS1JJChUQ1JPT1RQQVRIKS9iaW9uaWMvbGlic3RkYysrL2luY2x1ZGUgXAorCS1JJChUQ1JPT1RQQVRIKS9iaW9uaWMvbGliYy9rZXJuZWwvY29tbW9uIFwKKwktSSQoVENST09UUEFUSCkvYmlvbmljL2xpYmMva2VybmVsL2FyY2gtYXJtIFwKKwktSSQoVENST09UUEFUSCkvYmlvbmljL2xpYm0vaW5jbHVkZSBcCisJLUkkKFRDUk9PVFBBVEgpL2Jpb25pYy9saWJtL2luY2x1ZGUvYXJtIFwKKwktSSQoVENST09UUEFUSCkvYmlvbmljL2xpYnRocmVhZF9kYi9pbmNsdWRlIFwKKwktSSQoVENST09UUEFUSCkvYmlvbmljL2xpYm0vYXJtIFwKKwktSSQoVENST09UUEFUSCkvYmlvbmljL2xpYm0gXAorCS1JJChUQ1JPT1RQQVRIKS9mcmFtZXdvcmtzL2Jhc2UvaW5jbHVkZS9hbmRyb2lkX3J1bnRpbWUgCisJIy1JJChUQ1JPT1RQQVRIKS9vdXQvdGFyZ2V0L3Byb2R1Y3QvJChWT1RQKS9vYmovU0hBUkVEX0xJQlJBUklFUy9saWJtX2ludGVybWVkaWF0ZXMKKworQ0NUQ0ZMQUdTOj0tbXNvZnQtZmxvYXQgLW10aHVtYi1pbnRlcndvcmsgLWZuby1leGNlcHRpb25zIC1mZnVuY3Rpb24tc2VjdGlvbnMgLWZ1bndpbmQtdGFibGVzIC1mc3RhY2stcHJvdGVjdG9yIC1mbm8tc2hvcnQtZW51bXMgLWZtZXNzYWdlLWxlbmd0aD0wIC1maW5saW5lLWZ1bmN0aW9ucyAtZmlubGluZS1saW1pdD02MDAgLWZuby1pbmxpbmUtZnVuY3Rpb25zLWNhbGxlZC1vbmNlIC1mZ2NzZS1hZnRlci1yZWxvYWQgLWZyZXJ1bi1jc2UtYWZ0ZXItbG9vcCAtZnJlbmFtZS1yZWdpc3RlcnMgLWZzdHJpY3QtYWxpYXNpbmcgLWZ1bnN3aXRjaC1sb29wcworIy1md2lkZS1leGVjLWNoYXJzZXQ9Y2hhcnNldD1VVEYtMzIgCisKKyMgZm9yIHRhcmdldCBleGUKK1RFTERGTEFHUzo9LW5vc3RkbGliIC1CZHluYW1pYyAtV2wsLVQsJChUQ1JPT1RQQVRIKS9idWlsZC9jb3JlL2FybWVsZi54IC1XbCwtZHluYW1pYy1saW5rZXIsL3N5c3RlbS9iaW4vbGlua2VyIC1XbCwtLWdjLXNlY3Rpb25zIC1XbCwteixub2NvcHlyZWxvYyAtV2wsLS1uby11bmRlZmluZWQgLVdsLC1ycGF0aC1saW5rPSQoQ0NUTElCKSAtTCQoQ0NUTElCKSAKKworVk9URURFUFM6PSQoQ0NUTElCKS9jcnRiZWdpbl9keW5hbWljLm8gJChDQ1RMSUIpL2NydGVuZF9hbmRyb2lkLm8gJChUQ1BBVEgpL2xpYi9nY2MvYXJtLWVhYmkvJChHQ0NWRVIpL2ludGVyd29yay9saWJnY2MuYSAtbGMgLWxtCisKKyMgZm9yIHRhcmdldCBsaWIKK1RMTERGTEFHUzo9LW5vc3RkbGliIC1XbCwtVCwkKFRDUk9PVFBBVEgpL2J1aWxkL2NvcmUvYXJtZWxmLnhzYyAtV2wsLS1nYy1zZWN0aW9ucyAtV2wsLXNoYXJlZCwtQnN5bWJvbGljIC1MJChDQ1RMSUIpIC1XbCwtLW5vLXdob2xlLWFyY2hpdmUgLVdsLC0tbm8tdW5kZWZpbmVkICQoVENQQVRIKS9saWIvZ2NjL2FybS1lYWJpLyQoR0NDVkVSKS9pbnRlcndvcmsvbGliZ2NjLmEgCisKK1ZPVExERVBTOj0tbG0gLWxjCisKKworaWZlcSAoJChWT1RUKSwgdjQpCitWT0NGTEFHUzo9LW10dW5lPWFybTl0ZG1pIC1tYXJjaD1hcm12NHQKK1ZPQVNGTEFHUzo9LW1hcmNoPWFybXY0dCAtbWZwdT1zb2Z0ZnBhCitlbmRpZgorCitpZmVxICgkKFZPVFQpLCB2NSkKK1ZPQ0ZMQUdTOj0tbWFyY2g9YXJtdjV0ZQorVk9BU0ZMQUdTOj0tbWFyY2g9YXJtdjV0ZSAtbWZwdT12ZnAKK2VuZGlmCisKK2lmZXEgKCQoVk9UVCksIHY1eCkKK1ZPQ0ZMQUdTOj0tbWFyY2g9YXJtdjV0ZSAtbXR1bmU9eHNjYWxlCitWT0FTRkxBR1M6PS1tYXJjaD1hcm12NXRlIC1tZnB1PXZmcAorZW5kaWYKKworaWZlcSAoJChWT1RUKSwgdjYpCisjVk9DRkxBR1M6PS1tYXJjaD1hcm12NiAtbXR1bmU9YXJtMTEzNmpmLXMgCisjVk9BU0ZMQUdTOj0tbWFyY2g9YXJtdjYKK1ZPQ0ZMQUdTOj0tbWFyY2g9YXJtdjZqIC1tdHVuZT1hcm0xMTM2amYtcyAtbWZwdT12ZnAgLW1mbG9hdC1hYmk9c29mdGZwIC1tYXBjcyAtbXRwY3MtbGVhZi1mcmFtZSAtbWxvbmctY2FsbHMKK1ZPQVNGTEFHUzo9LW1hcmNoPWFybXY2aiAtbWNwdT1hcm0xMTM2amYtcyAtbWZwdT1hcm0xMTM2amYtcyAtbWZsb2F0LWFiaT1zb2Z0ZnAgLW1hcGNzLWZsb2F0IC1tYXBjcy1yZWVudHJhbnQKK2VuZGlmCisKKyMKKyMgZ2xvYmFsIGxpbmsgb3B0aW9ucworVk9MREZMQUdTOj0tV2wsLXgsLVgsLS1hcy1uZWVkZWQKKworCitpZmVxICgkKFZPVFQpLCB2NykKK1ZPQ0ZMQUdTKz0tbWFyY2g9YXJtdjctYSAtbXR1bmU9Y29ydGV4LWE4IC1tZnB1PW5lb24gLW1mbG9hdC1hYmk9c29mdGZwCitWT0FTRkxBR1MrPS1tYXJjaD1hcm12Ny1hIC1tY3B1PWNvcnRleC1hOCAtbWZwdT1uZW9uIC1tZmxvYXQtYWJpPXNvZnRmcAorVk9MREZMQUdTKz0tV2wsLS1maXgtY29ydGV4LWE4CitlbmRpZgorCisjZ2xvYmFsIGNvbXBpbGluZyBvcHRpb25zIGZvciBBUk0gdGFyZ2V0CitpZm5lcSAoJChWT1RUKSwgcGMpCitWT0FTRkxBR1MrPS0tc3RyaXAtbG9jYWwtYWJzb2x1dGUgLVIKK2VuZGlmIAorCisKK2lmZXEgKCQoVk9EQkcpLCB5ZXMpCitWT0NGTEFHUys9LURfREVCVUcgLWcKK2Vsc2UKK1ZPQ0ZMQUdTKz0tRE5ERUJVRyAtTzMKK2VuZGlmCisKK1ZPQ0ZMQUdTKz0kKFZPUFJFREVGKSAkKFZPTU0pIC1XYWxsIC1mc2lnbmVkLWNoYXIgLWZvbWl0LWZyYW1lLXBvaW50ZXIgLWZuby1sZWFkaW5nLXVuZGVyc2NvcmUgLWZwaWMgLWZQSUMgLXBpcGUgLWZ0cmFjZXIgLWZmb3JjZS1hZGRyIC1mbm8tYm91bmRzLWNoZWNrICMtZnZpc2liaWxpdHk9aGlkZGVuICMtZnZpc2liaWxpdHktaW5saW5lcy1oaWRkZW4gIyMtZnRyZWUtbG9vcC1saW5lYXIgIC1tdGh1bWIgLW5vc3RkaW5jICAtZEQgLWZwcmVmZXRjaC1sb29wLWFycmF5cworCisKK2lmbmVxICgkKFZPVFQpLCBwYykKK1ZPQ0ZMQUdTKz0kKENDVENGTEFHUykgJChDQ1RJTkMpCitWT0NQUEZMQUdTOj0tZm5vLXJ0dGkgJChWT0NGTEFHUykKKworaWZlcSAoJChWT01UKSwgZXhlKQorVk9MREZMQUdTKz0kKFRFTERGTEFHUykKK2VuZGlmCisKK2lmZXEgKCQoVk9NVCksIGxpYikKK1ZPTERGTEFHUys9JChUTExERkxBR1MpCitlbmRpZgorZWxzZQorVk9DUFBGTEFHUzo9JChWT0NGTEFHUykKK2lmZXEgKCQoVk9NVCksIGxpYikKK1ZPTERGTEFHUys9LXNoYXJlZAorZW5kaWYKK2VuZGlmCisKK2lmZXEgKCQoVk9EQkcpLCB5ZXMpCisjVk9MREZMQUdTOj0KK2VuZGlmCisKKyMgd2hlcmUgdG8gcGxhY2Ugb2JqZWN0IGZpbGVzIAorT0JKRElSPW9iagorCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2Jhc2ljX29wL2Jhc2ljX29wLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2Jhc2ljX29wL2Jhc2ljX29wLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQ1N2YzMwotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvYmFzaWNfb3AvYmFzaWNfb3AuaApAQCAtMCwwICsxLDExNjYgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCWJhc2ljb3AyLmgNCisNCisJQ29udGVudDoJQ29uc3RhbnRzICwgR2xvYmFscyBhbmQgQmFzaWMgYXJpdGhtZXRpYyBvcGVyYXRvcnMuDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfX0JBU0lDX09QX0gKKyNkZWZpbmUgX19CQVNJQ19PUF9IDQorCisjaW5jbHVkZSAidHlwZWRlZi5oIgorCisjZGVmaW5lIE1BWF8zMiAoV29yZDMyKTB4N2ZmZmZmZmZMCisjZGVmaW5lIE1JTl8zMiAoV29yZDMyKTB4ODAwMDAwMDBMCisKKyNkZWZpbmUgTUFYXzE2IChXb3JkMTYpMHg3ZmZmCisjZGVmaW5lIE1JTl8xNiAoV29yZDE2KTB4ODAwMAorI2RlZmluZSBBQlMoYSkJKChhKSA+PSAwKSA/IChhKSA6ICgtKGEpKQ0KKw0KKy8qIFNob3J0IGFicywgICAgICAgICAgIDEgICAqLw0KKyNkZWZpbmUgYWJzX3MoeCkgICAgICAgKChXb3JkMTYpKCgoeCkgIT0gTUlOXzE2KSA/ICgoKHgpID49IDApID8gKHgpIDogKC0oeCkpKSA6IE1BWF8xNikpDQorDQorLyogMTYgYml0IHZhcjEgLT4gTVNCLCAgICAgMiAqLw0KKyNkZWZpbmUgTF9kZXBvc2l0X2goeCkgKCgoV29yZDMyKSh4KSkgPDwgMTYpDQorDQorDQorLyogMTYgYml0IHZhcjEgLT4gTFNCLCAgICAgMiAqLw0KKyNkZWZpbmUgTF9kZXBvc2l0X2woeCkgKChXb3JkMzIpKHgpKQ0KKw0KKw0KKy8qIExvbmcgYWJzLCAgICAgICAgICAgICAgMyAgKi8NCisjZGVmaW5lIExfYWJzKHgpICgoKHgpICE9IE1JTl8zMikgPyAoKCh4KSA+PSAwKSA/ICh4KSA6ICgtKHgpKSkgOiBNQVhfMzIpDQorDQorDQorLyogU2hvcnQgbmVnYXRlLCAgICAgICAgMSAgICovDQorI2RlZmluZSBuZWdhdGUodmFyMSkgKChXb3JkMTYpKCgodmFyMSkgPT0gTUlOXzE2KSA/IE1BWF8xNiA6ICgtKHZhcjEpKSkpDQorDQorDQorLyogTG9uZyBuZWdhdGUsICAgICAyICovDQorI2RlZmluZSBMX25lZ2F0ZShMX3ZhcjEpICgoKExfdmFyMSkgPT0gKE1JTl8zMikpID8gKE1BWF8zMikgOiAoLShMX3ZhcjEpKSkNCisNCisNCisjZGVmaW5lIE1VTEhJR0goQSxCKSAoaW50KSgoKFdvcmQ2NCkoQSkqKFdvcmQ2NCkoQikpID4+IDMyKQ0KKyNkZWZpbmUgZml4bXVsKGEsIGIpIChpbnQpKCgoKFdvcmQ2NCkoYSkqKFdvcmQ2NCkoYikpID4+IDMyKSA8PCAxKQ0KKw0KKw0KKyNpZiAgKFNBVFJVQVRFX0lTX0lOTElORSkNCitfX2lubGluZSBXb3JkMTYgc2F0dXJhdGUoV29yZDMyIExfdmFyMSk7DQorI2Vsc2UNCitXb3JkMTYgc2F0dXJhdGUoV29yZDMyIExfdmFyMSk7DQorI2VuZGlmDQorDQorLyogU2hvcnQgc2hpZnQgbGVmdCwgICAgMSAgICovDQorI2lmIChTSExfSVNfSU5MSU5FKQ0KK19faW5saW5lIFdvcmQxNiBzaGwgKFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMik7DQorI2Vsc2UNCitXb3JkMTYgc2hsIChXb3JkMTYgdmFyMSwgV29yZDE2IHZhcjIpOw0KKyNlbmRpZg0KKw0KKy8qIFNob3J0IHNoaWZ0IHJpZ2h0LCAgIDEgICAqLw0KKyNpZiAoU0hSX0lTX0lOTElORSkNCitfX2lubGluZSBXb3JkMTYgc2hyIChXb3JkMTYgdmFyMSwgV29yZDE2IHZhcjIpOw0KKyNlbHNlDQorV29yZDE2IHNociAoV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKTsNCisjZW5kaWYNCisNCisjaWYgKExfTVVMVF9JU19JTkxJTkUpDQorX19pbmxpbmUgV29yZDMyIExfbXVsdChXb3JkMTYgdmFyMSwgV29yZDE2IHZhcjIpOw0KKyNlbHNlDQorV29yZDMyIExfbXVsdChXb3JkMTYgdmFyMSwgV29yZDE2IHZhcjIpOw0KKyNlbmRpZg0KKw0KKy8qIE1zdSwgIDEgICovDQorI2lmIChMX01TVV9JU19JTkxJTkUpDQorX19pbmxpbmUgV29yZDMyIExfbXN1IChXb3JkMzIgTF92YXIzLCBXb3JkMTYgdmFyMSwgV29yZDE2IHZhcjIpOw0KKyNlbHNlDQorV29yZDMyIExfbXN1IChXb3JkMzIgTF92YXIzLCBXb3JkMTYgdmFyMSwgV29yZDE2IHZhcjIpOw0KKyNlbmRpZg0KKyAgICANCisvKiBMb25nIHN1YiwgICAgICAgIDIgKi8NCisjaWYgKExfU1VCX0lTX0lOTElORSkNCitfX2lubGluZSBXb3JkMzIgTF9zdWIoV29yZDMyIExfdmFyMSwgV29yZDMyIExfdmFyMik7DQorI2Vsc2UNCitXb3JkMzIgTF9zdWIoV29yZDMyIExfdmFyMSwgV29yZDMyIExfdmFyMik7DQorI2VuZGlmDQorDQorLyogTG9uZyBzaGlmdCBsZWZ0LCAyICovDQorI2lmIChMX1NITF9JU19JTkxJTkUpDQorX19pbmxpbmUgV29yZDMyIExfc2hsIChXb3JkMzIgTF92YXIxLCBXb3JkMTYgdmFyMik7DQorI2Vsc2UNCitXb3JkMzIgTF9zaGwgKFdvcmQzMiBMX3ZhcjEsIFdvcmQxNiB2YXIyKTsNCisjZW5kaWYNCisNCisvKiBMb25nIHNoaWZ0IHJpZ2h0LCAyKi8NCisjaWYgKExfU0hSX0lTX0lOTElORSkNCitfX2lubGluZSBXb3JkMzIgTF9zaHIgKFdvcmQzMiBMX3ZhcjEsIFdvcmQxNiB2YXIyKTsNCisjZWxzZQ0KK1dvcmQzMiBMX3NociAoV29yZDMyIExfdmFyMSwgV29yZDE2IHZhcjIpOw0KKyNlbmRpZg0KKw0KKy8qIFNob3J0IGFkZCwgICAgICAgICAgIDEgICAqLw0KKyNpZiAoQUREX0lTX0lOTElORSkNCitfX2lubGluZSBXb3JkMTYgYWRkIChXb3JkMTYgdmFyMSwgV29yZDE2IHZhcjIpOw0KKyNlbHNlDQorV29yZDE2IGFkZCAoV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKTsNCisjZW5kaWYNCisgICAgDQorLyogU2hvcnQgc3ViLCAgICAgICAgICAgMSAgICovDQorI2lmIChTVUJfSVNfSU5MSU5FKQ0KK19faW5saW5lIFdvcmQxNiBzdWIoV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKTsNCisjZWxzZQ0KK1dvcmQxNiBzdWIoV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKTsNCisjZW5kaWYNCisNCisvKiBTaG9ydCBkaXZpc2lvbiwgICAgICAgMTggICovDQorI2lmIChESVZfU19JU19JTkxJTkUpDQorX19pbmxpbmUgV29yZDE2IGRpdl9zIChXb3JkMTYgdmFyMSwgV29yZDE2IHZhcjIpOw0KKyNlbHNlDQorV29yZDE2IGRpdl9zIChXb3JkMTYgdmFyMSwgV29yZDE2IHZhcjIpOw0KKyNlbmRpZg0KKw0KKy8qIFNob3J0IG11bHQsICAgICAgICAgIDEgICAqLw0KKyNpZiAoTVVMVF9JU19JTkxJTkUpDQorX19pbmxpbmUgV29yZDE2IG11bHQgKFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMik7DQorI2Vsc2UNCitXb3JkMTYgbXVsdCAoV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKTsNCisjZW5kaWYNCisNCisvKiBTaG9ydCBub3JtLCAgICAgICAgICAgMTUgICovDQorI2lmIChOT1JNX1NfSVNfSU5MSU5FKQ0KK19faW5saW5lIFdvcmQxNiBub3JtX3MgKFdvcmQxNiB2YXIxKTsNCisjZWxzZQ0KK1dvcmQxNiBub3JtX3MgKFdvcmQxNiB2YXIxKTsNCisjZW5kaWYNCisNCisvKiBMb25nIG5vcm0sICAgICAgICAgICAgMzAgICovDQorI2lmIChOT1JNX0xfSVNfSU5MSU5FKQ0KK19faW5saW5lIFdvcmQxNiBub3JtX2wgKFdvcmQzMiBMX3ZhcjEpOw0KKyNlbHNlDQorV29yZDE2IG5vcm1fbCAoV29yZDMyIExfdmFyMSk7DQorI2VuZGlmDQorDQorLyogUm91bmQsICAgICAgICAgICAgICAgMSAgICovDQorI2lmIChST1VORF9JU19JTkxJTkUpDQorX19pbmxpbmUgV29yZDE2IHJvdW5kMTYoV29yZDMyIExfdmFyMSk7DQorI2Vsc2UNCitXb3JkMTYgcm91bmQxNihXb3JkMzIgTF92YXIxKTsNCisjZW5kaWYNCisNCisvKiBNYWMsICAxICAqLw0KKyNpZiAoTF9NQUNfSVNfSU5MSU5FKQ0KK19faW5saW5lIFdvcmQzMiBMX21hYyAoV29yZDMyIExfdmFyMywgV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKTsNCisjZWxzZQ0KK1dvcmQzMiBMX21hYyAoV29yZDMyIExfdmFyMywgV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKTsNCisjZW5kaWYNCisNCisjaWYgKExfQUREX0lTX0lOTElORSkNCitfX2lubGluZSBXb3JkMzIgTF9hZGQgKFdvcmQzMiBMX3ZhcjEsIFdvcmQzMiBMX3ZhcjIpOw0KKyNlbHNlDQorV29yZDMyIExfYWRkIChXb3JkMzIgTF92YXIxLCBXb3JkMzIgTF92YXIyKTsNCisjZW5kaWYNCisNCisvKiBFeHRyYWN0IGhpZ2gsICAgICAgICAxICAgKi8NCisjaWYgKEVYVFJBQ1RfSF9JU19JTkxJTkUpDQorX19pbmxpbmUgV29yZDE2IGV4dHJhY3RfaCAoV29yZDMyIExfdmFyMSk7DQorI2Vsc2UNCitXb3JkMTYgZXh0cmFjdF9oIChXb3JkMzIgTF92YXIxKTsNCisjZW5kaWYNCisNCisvKiBFeHRyYWN0IGxvdywgICAgICAgICAxICAgKi8NCisjaWYgKEVYVFJBQ1RfTF9JU19JTkxJTkUpDQorX19pbmxpbmUgV29yZDE2IGV4dHJhY3RfbChXb3JkMzIgTF92YXIxKTsNCisjZWxzZQ0KK1dvcmQxNiBleHRyYWN0X2woV29yZDMyIExfdmFyMSk7DQorI2VuZGlmDQorDQorLyogTXVsdCB3aXRoIHJvdW5kLCAyICovDQorI2lmIChNVUxUX1JfSVNfSU5MSU5FKQ0KK19faW5saW5lIFdvcmQxNiBtdWx0X3IoV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKTsNCisjZWxzZQ0KK1dvcmQxNiBtdWx0X3IoV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKTsNCisjZW5kaWYNCisNCisvKiBTaGlmdCByaWdodCB3aXRoIHJvdW5kLCAyICAgICAgICAgICAqLw0KKyNpZiAoU0hSX1JfSVNfSU5MSU5FKQ0KK19faW5saW5lIFdvcmQxNiBzaHJfciAoV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKTsNCisjZWxzZQ0KK1dvcmQxNiBzaHJfciAoV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKTsNCisjZW5kaWYNCisNCisvKiBNYWMgd2l0aCByb3VuZGluZywyICovDQorI2lmIChNQUNfUl9JU19JTkxJTkUpDQorX19pbmxpbmUgV29yZDE2IG1hY19yIChXb3JkMzIgTF92YXIzLCBXb3JkMTYgdmFyMSwgV29yZDE2IHZhcjIpOw0KKyNlbHNlDQorV29yZDE2IG1hY19yIChXb3JkMzIgTF92YXIzLCBXb3JkMTYgdmFyMSwgV29yZDE2IHZhcjIpOw0KKyNlbmRpZg0KKw0KKy8qIE1zdSB3aXRoIHJvdW5kaW5nLDIgKi8NCisjaWYgKE1TVV9SX0lTX0lOTElORSkNCitfX2lubGluZSBXb3JkMTYgbXN1X3IgKFdvcmQzMiBMX3ZhcjMsIFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMik7DQorI2Vsc2UNCitXb3JkMTYgbXN1X3IgKFdvcmQzMiBMX3ZhcjMsIFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMik7DQorI2VuZGlmDQorDQorLyogTG9uZyBzaGlmdCByaWdodCB3aXRoIHJvdW5kLCAgMyAgICAgICAgICAgICAqLw0KKyNpZiAoTF9TSFJfUl9JU19JTkxJTkUpDQorX19pbmxpbmUgV29yZDMyIExfc2hyX3IgKFdvcmQzMiBMX3ZhcjEsIFdvcmQxNiB2YXIyKTsNCisjZWxzZQ0KK1dvcmQzMiBMX3Nocl9yIChXb3JkMzIgTF92YXIxLCBXb3JkMTYgdmFyMik7DQorI2VuZGlmDQorDQorI2lmIEFSTVY0X0lOQVNNDQorX19pbmxpbmUgV29yZDMyIEFTTV9MX3NocihXb3JkMzIgTF92YXIxLCBXb3JkMTYgdmFyMikNCit7DQorCVdvcmQzMiByZXN1bHQ7IA0KKwlhc20gdm9sYXRpbGUoIA0KKwkJIk1PViAlW3Jlc3VsdF0sICVbTF92YXIxXSwgQVNSICVbdmFyMl0gXG4iIA0KKwkJOltyZXN1bHRdIj1yIihyZXN1bHQpDQorCQk6W0xfdmFyMV0iciIoTF92YXIxKSwgW3ZhcjJdInIiKHZhcjIpDQorCQkpOyANCisJcmV0dXJuIHJlc3VsdDsJDQorfQ0KKyANCitfX2lubGluZSBXb3JkMzIgQVNNX0xfc2hsKFdvcmQzMiBMX3ZhcjEsIFdvcmQxNiB2YXIyKQ0KK3sNCisJV29yZDMyIHJlc3VsdDsgDQorCWFzbSB2b2xhdGlsZSggDQorCQkiTU9WCXIyLCAlW0xfdmFyMV0gXG4iDQorCQkiTU9WCXIzLCAjMHg3ZmZmZmZmZlxuIg0KKwkJIk1PVgklW3Jlc3VsdF0sICVbTF92YXIxXSwgQVNMICVbdmFyMl0gXG4iIA0KKwkJIlRFUQlyMiwgJVtyZXN1bHRdLCBBU1IgJVt2YXIyXVxuIg0KKwkJIkVPUk5FICAlW3Jlc3VsdF0scjMscjIsQVNSIzMxXG4iDQorCQk6W3Jlc3VsdF0iK3IiKHJlc3VsdCkNCisJCTpbTF92YXIxXSJyIihMX3ZhcjEpLCBbdmFyMl0iciIodmFyMikNCisJCToicjIiLCAicjMiDQorCQkpOyANCisJcmV0dXJuIHJlc3VsdDsJDQorfQ0KKw0KK19faW5saW5lIFdvcmQzMiBBU01fc2hyKFdvcmQzMiBMX3ZhcjEsIFdvcmQxNiB2YXIyKQ0KK3sNCisJV29yZDMyIHJlc3VsdDsgDQorCWFzbSB2b2xhdGlsZSggDQorCQkiQ01QCSVbdmFyMl0sICMxNVxuIg0KKwkJIk1PVkdFICAlW3ZhcjJdLCAjMTVcbiINCisJCSJNT1YJJVtyZXN1bHRdLCAlW0xfdmFyMV0sIEFTUiAlW3ZhcjJdXG4iDQorCQk6W3Jlc3VsdF0iPXIiKHJlc3VsdCkNCisJCTpbTF92YXIxXSJyIihMX3ZhcjEpLCBbdmFyMl0iciIodmFyMikgDQorCQkpOyANCisJcmV0dXJuIHJlc3VsdDsJDQorfSANCisNCitfX2lubGluZSBXb3JkMzIgQVNNX3NobChXb3JkMzIgTF92YXIxLCBXb3JkMTYgdmFyMikNCit7DQorCVdvcmQzMiByZXN1bHQ7IA0KKwlhc20gdm9sYXRpbGUoIA0KKwkJIkNNUAklW3ZhcjJdLCAjMTZcbiINCisJCSJNT1ZHRSAgJVt2YXIyXSwgIzE2XG4iDQorCQkiTU9WICAgICVbcmVzdWx0XSwgJVtMX3ZhcjFdLCBBU0wgJVt2YXIyXVxuIg0KKwkJIk1PViAgICByMywgIzFcbiINCisgICAgICAgICJNT1YgICAgcjIsICVbcmVzdWx0XSwgQVNSICMxNVxuIg0KKyAgICAgICAgIlJTQiAgICByMyxyMyxyMyxMU0wgIzE1IFxuIg0KKyAgICAgICAgIlRFUSAgICByMiwgJVtyZXN1bHRdLCBBU1IgIzMxIFxuIg0KKyAgICAgICAgIkVPUk5FICAlW3Jlc3VsdF0sIHIzLCAlW3Jlc3VsdF0sQVNSICMzMSINCisJCTpbcmVzdWx0XSIrciIocmVzdWx0KQ0KKwkJOltMX3ZhcjFdInIiKExfdmFyMSksIFt2YXIyXSJyIih2YXIyKQ0KKwkJOiJyMiIsICJyMyINCisJCSk7IA0KKwlyZXR1cm4gcmVzdWx0OwkNCit9IA0KKyNlbmRpZg0KKw0KKy8qX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBkZWZpbml0aW9ucyBmb3IgaW5saW5lIGJhc2ljIGFyaXRobWV0aWMgb3BlcmF0b3JzICAgICAgICAgICAgICAgICAgICAgICB8DQorIHxfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX198DQorKi8NCisjaWYgKFNBVFJVQVRFX0lTX0lOTElORSkNCitfX2lubGluZSBXb3JkMTYgc2F0dXJhdGUoV29yZDMyIExfdmFyMSkNCit7DQorI2lmIEFSTVY1VEVfU0FUDQorCVdvcmQxNiByZXN1bHQ7DQorCWFzbSB2b2xhdGlsZSAoDQorCQkiTU9WCSVbcmVzdWx0XSwgJVtMX3ZhcjFdXG4iDQorCQkiTU9WCXIzLCAjMVxuIg0KKwkJIk1PVglyMiwlW0xfdmFyMV0sQVNSIzE1XG4iDQorCQkiUlNCCXIzLCByMywgcjMsIExTTCAjMTVcbiINCisJCSJURVEJcjIsJVtMX3ZhcjFdLEFTUiMzMVxuIgkNCisJCSJFT1JORQklW3Jlc3VsdF0scjMsJVtMX3ZhcjFdLEFTUiMzMVxuIg0KKwkJOltyZXN1bHRdIityIihyZXN1bHQpDQorCQk6W0xfdmFyMV0iciIoTF92YXIxKQ0KKwkJOiJyMiIsICJyMyIJCQkNCisJKTsNCisNCisJcmV0dXJuIHJlc3VsdDsNCisjZWxzZQ0KKyAgICBXb3JkMTYgdmFyX291dDsNCisgICAgDQorICAgIC8vdmFyX291dCA9IChMX3ZhcjEgPiAoV29yZDMyKTBYMDAwMDdmZmZMKSA/IChNQVhfMTYpIDogKChMX3ZhcjEgPCAoV29yZDMyKTB4ZmZmZjgwMDBMKSA/IChNSU5fMTYpIDogKChXb3JkMTYpTF92YXIxKSk7DQorDQorICAgIGlmIChMX3ZhcjEgPiAwWDAwMDA3ZmZmTCkNCisgICAgew0KKyAgICAgICAgdmFyX291dCA9IE1BWF8xNjsNCisgICAgfQ0KKyAgICBlbHNlIGlmIChMX3ZhcjEgPCAoV29yZDMyKSAweGZmZmY4MDAwTCkNCisgICAgew0KKyAgICAgICAgdmFyX291dCA9IE1JTl8xNjsNCisgICAgfQ0KKyAgICBlbHNlDQorICAgIHsNCisgICAgICAgIHZhcl9vdXQgPSBleHRyYWN0X2woTF92YXIxKTsNCisgICAgfQ0KKw0KKyAgICByZXR1cm4gKHZhcl9vdXQpOw0KKyNlbmRpZg0KK30NCisjZW5kaWYNCisNCisvKiBTaG9ydCBzaGlmdCBsZWZ0LCAgICAxICAgKi8NCisjaWYgKFNITF9JU19JTkxJTkUpDQorX19pbmxpbmUgV29yZDE2IHNobCAoV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKQ0KK3sNCisjaWYgQVJNVjVURV9TSEwNCisJaWYodmFyMj49MCkNCisJew0KKwkJcmV0dXJuIEFTTV9zaGwoIHZhcjEsIHZhcjIpOw0KKwl9DQorCWVsc2UNCisJew0KKwkJcmV0dXJuIEFTTV9zaHIoIHZhcjEsIC12YXIyKTsNCisJfQ0KKyNlbHNlDQorICAgIFdvcmQxNiB2YXJfb3V0Ow0KKyAgICBXb3JkMzIgcmVzdWx0Ow0KKw0KKyAgICBpZiAodmFyMiA8IDApDQorICAgIHsNCisgICAgICAgIHZhcl9vdXQgPSBzaHIgKHZhcjEsIChXb3JkMTYpLXZhcjIpOw0KKyAgICB9DQorICAgIGVsc2UNCisgICAgew0KKyAgICAgICAgcmVzdWx0ID0gKFdvcmQzMikgdmFyMSAqKChXb3JkMzIpIDEgPDwgdmFyMik7DQorDQorICAgICAgICBpZiAoKHZhcjIgPiAxNSAmJiB2YXIxICE9IDApIHx8IChyZXN1bHQgIT0gKFdvcmQzMikgKChXb3JkMTYpIHJlc3VsdCkpKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIHZhcl9vdXQgPSAoV29yZDE2KSgodmFyMSA+IDApID8gTUFYXzE2IDogTUlOXzE2KTsNCisgICAgICAgIH0NCisgICAgICAgIGVsc2UNCisgICAgICAgIHsNCisgICAgICAgICAgICB2YXJfb3V0ID0gZXh0cmFjdF9sKHJlc3VsdCk7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuICh2YXJfb3V0KTsNCisjZW5kaWYNCit9DQorI2VuZGlmDQorDQorLyogU2hvcnQgc2hpZnQgcmlnaHQsICAgMSAgICovDQorI2lmIChTSFJfSVNfSU5MSU5FKQ0KK19faW5saW5lIFdvcmQxNiBzaHIgKFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMikNCit7DQorI2lmIEFSTVY1VEVfU0hSDQorCWlmKHZhcjI+PTApDQorCXsNCisJCXJldHVybiAgQVNNX3NociggdmFyMSwgdmFyMik7DQorCX0NCisJZWxzZQ0KKwl7DQorCQlyZXR1cm4gIEFTTV9zaGwoIHZhcjEsIC12YXIyKTsNCisJfQ0KKyNlbHNlDQorICAgIFdvcmQxNiB2YXJfb3V0Ow0KKw0KKyAgICBpZiAodmFyMiA8IDApDQorICAgIHsNCisgICAgICAgIHZhcl9vdXQgPSBzaGwgKHZhcjEsIChXb3JkMTYpLXZhcjIpOw0KKyAgICB9DQorICAgIGVsc2UNCisgICAgew0KKyAgICAgICAgaWYgKHZhcjIgPj0gMTUpDQorICAgICAgICB7DQorICAgICAgICAgICAgdmFyX291dCA9IChXb3JkMTYpKCh2YXIxIDwgMCkgPyAtMSA6IDApOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZWxzZQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIGlmICh2YXIxIDwgMCkNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgIHZhcl9vdXQgPSAoV29yZDE2KSh+KCh+dmFyMSkgPj4gdmFyMikpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBlbHNlDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICB2YXJfb3V0ID0gKFdvcmQxNikodmFyMSA+PiB2YXIyKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisNCisgICAgcmV0dXJuICh2YXJfb3V0KTsNCisjZW5kaWYNCit9DQorI2VuZGlmDQorDQorDQorI2lmIChMX01VTFRfSVNfSU5MSU5FKQ0KK19faW5saW5lIFdvcmQzMiBMX211bHQoV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKQ0KK3sNCisjaWYgQVJNVjVURV9MX01VTFQNCisJV29yZDMyIHJlc3VsdDsgDQorCWFzbSB2b2xhdGlsZSggDQorCQkiU01VTEJCICVbcmVzdWx0XSwgJVt2YXIxXSwgJVt2YXIyXSBcbiIgDQorCQkiUUFERCAlW3Jlc3VsdF0sICVbcmVzdWx0XSwgJVtyZXN1bHRdIFxuIiANCisJCTpbcmVzdWx0XSIrciIocmVzdWx0KQ0KKwkJOlt2YXIxXSJyIih2YXIxKSwgW3ZhcjJdInIiKHZhcjIpDQorCQkpOyANCisJcmV0dXJuIHJlc3VsdDsNCisjZWxzZQ0KKyAgICBXb3JkMzIgTF92YXJfb3V0Ow0KKw0KKyAgICBMX3Zhcl9vdXQgPSAoV29yZDMyKSB2YXIxICooV29yZDMyKSB2YXIyOw0KKw0KKyAgICBpZiAoTF92YXJfb3V0ICE9IChXb3JkMzIpIDB4NDAwMDAwMDBMKQ0KKyAgICB7DQorICAgICAgICBMX3Zhcl9vdXQgPDw9IDE7DQorICAgIH0NCisgICAgZWxzZQ0KKyAgICB7DQorICAgICAgICBMX3Zhcl9vdXQgPSBNQVhfMzI7DQorICAgIH0NCisgICAgcmV0dXJuIChMX3Zhcl9vdXQpOw0KKyNlbmRpZg0KK30NCisjZW5kaWYNCisNCisjaWYgKExfTVNVX0lTX0lOTElORSkNCitfX2lubGluZSBXb3JkMzIgTF9tc3UgKFdvcmQzMiBMX3ZhcjMsIFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMikNCit7DQorI2lmIEFSTVY1VEVfTF9NU1UNCisJV29yZDMyIHJlc3VsdDsgDQorCWFzbSB2b2xhdGlsZSggDQorCQkiU01VTEJCICVbcmVzdWx0XSwgJVt2YXIxXSwgJVt2YXIyXSBcbiIgDQorCQkiUUFERCAlW3Jlc3VsdF0sICVbcmVzdWx0XSwgJVtyZXN1bHRdIFxuIg0KKwkJIlFTVUIgJVtyZXN1bHRdLCAlW0xfdmFyM10sICVbcmVzdWx0XVxuIg0KKwkJOltyZXN1bHRdIityIihyZXN1bHQpDQorCQk6W0xfdmFyM10iciIoTF92YXIzKSwgW3ZhcjFdInIiKHZhcjEpLCBbdmFyMl0iciIodmFyMikNCisJCSk7IA0KKwlyZXR1cm4gcmVzdWx0Ow0KKyNlbHNlDQorICAgIFdvcmQzMiBMX3Zhcl9vdXQ7DQorICAgIFdvcmQzMiBMX3Byb2R1Y3Q7DQorDQorICAgIExfcHJvZHVjdCA9IExfbXVsdCh2YXIxLCB2YXIyKTsNCisgICAgTF92YXJfb3V0ID0gTF9zdWIoTF92YXIzLCBMX3Byb2R1Y3QpOw0KKyAgICByZXR1cm4gKExfdmFyX291dCk7DQorI2VuZGlmDQorfQ0KKyNlbmRpZg0KKw0KKyNpZiAoTF9TVUJfSVNfSU5MSU5FKQ0KK19faW5saW5lIFdvcmQzMiBMX3N1YihXb3JkMzIgTF92YXIxLCBXb3JkMzIgTF92YXIyKQ0KK3sNCisjaWYgQVJNVjVURV9MX1NVQg0KKwlXb3JkMzIgcmVzdWx0OyANCisJYXNtIHZvbGF0aWxlKCANCisJCSJRU1VCICVbcmVzdWx0XSwgJVtMX3ZhcjFdLCAlW0xfdmFyMl1cbiINCisJCTpbcmVzdWx0XSIrciIocmVzdWx0KQ0KKwkJOltMX3ZhcjFdInIiKExfdmFyMSksIFtMX3ZhcjJdInIiKExfdmFyMikNCisJCSk7IA0KKwlyZXR1cm4gcmVzdWx0Ow0KKyNlbHNlDQorICAgIFdvcmQzMiBMX3Zhcl9vdXQ7DQorDQorICAgIExfdmFyX291dCA9IExfdmFyMSAtIExfdmFyMjsNCisNCisgICAgaWYgKCgoTF92YXIxIF4gTF92YXIyKSAmIE1JTl8zMikgIT0gMCkNCisgICAgew0KKyAgICAgICAgaWYgKChMX3Zhcl9vdXQgXiBMX3ZhcjEpICYgTUlOXzMyKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIExfdmFyX291dCA9IChMX3ZhcjEgPCAwTCkgPyBNSU5fMzIgOiBNQVhfMzI7DQorICAgICAgICB9DQorICAgIH0NCisNCisgICAgcmV0dXJuIChMX3Zhcl9vdXQpOw0KKyNlbmRpZg0KK30NCisjZW5kaWYNCisNCisjaWYgKExfU0hMX0lTX0lOTElORSkNCitfX2lubGluZSBXb3JkMzIgTF9zaGwoV29yZDMyIExfdmFyMSwgV29yZDE2IHZhcjIpDQorew0KKyNpZiBBUk1WNVRFX0xfU0hMDQorICAgIGlmKHZhcjI+PTApDQorICAgIHsNCisgICAgICAgIHJldHVybiAgQVNNX0xfc2hsKCBMX3ZhcjEsIHZhcjIpOw0KKyAgICB9DQorICAgIGVsc2UNCisgICAgew0KKyAgICAgICAgcmV0dXJuICBBU01fTF9zaHIoIExfdmFyMSwgLXZhcjIpOw0KKyAgICB9DQorI2Vsc2UNCisgICAgV29yZDMyIExfdmFyX291dCA9IDBMOw0KKw0KKyAgICBpZiAodmFyMiA8PSAwKQ0KKyAgICB7DQorICAgICAgICBMX3ZhcjEgPSBMX3NocihMX3ZhcjEsIChXb3JkMTYpLXZhcjIpOw0KKyAgICB9DQorICAgIGVsc2UNCisgICAgew0KKyAgICAgICAgZm9yICg7IHZhcjIgPiAwOyB2YXIyLS0pDQorICAgICAgICB7DQorICAgICAgICAgICAgaWYgKExfdmFyMSA+IChXb3JkMzIpIDBYM2ZmZmZmZmZMKQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIE1BWF8zMjsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgZWxzZQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgaWYgKExfdmFyMSA8IChXb3JkMzIpIDB4YzAwMDAwMDBMKQ0KKyAgICAgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTUlOXzMyOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIExfdmFyMSA8PD0gMTsNCisgICAgICAgICAgICBMX3Zhcl9vdXQgPSBMX3ZhcjE7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIChMX3ZhcjEpOw0KKyNlbmRpZg0KK30NCisjZW5kaWYNCisNCisjaWYgKExfU0hSX0lTX0lOTElORSkNCitfX2lubGluZSBXb3JkMzIgTF9zaHIgKFdvcmQzMiBMX3ZhcjEsIFdvcmQxNiB2YXIyKQ0KK3sNCisjaWYgQVJNVjVURV9MX1NIUg0KKwlpZih2YXIyPj0wKQ0KKwl7DQorCQlyZXR1cm4gQVNNX0xfc2hyKCBMX3ZhcjEsIHZhcjIpOw0KKwl9DQorCWVsc2UNCisJew0KKwkJcmV0dXJuIEFTTV9MX3NobCggTF92YXIxLCAtdmFyMik7DQorCX0NCisjZWxzZQ0KKyAgICBXb3JkMzIgTF92YXJfb3V0Ow0KKw0KKyAgICBpZiAodmFyMiA8IDApDQorICAgIHsNCisgICAgICAgIExfdmFyX291dCA9IExfc2hsIChMX3ZhcjEsIChXb3JkMTYpLXZhcjIpOw0KKyAgICB9DQorICAgIGVsc2UNCisgICAgew0KKyAgICAgICAgaWYgKHZhcjIgPj0gMzEpDQorICAgICAgICB7DQorICAgICAgICAgICAgTF92YXJfb3V0ID0gKExfdmFyMSA8IDBMKSA/IC0xIDogMDsNCisgICAgICAgIH0NCisgICAgICAgIGVsc2UNCisgICAgICAgIHsNCisgICAgICAgICAgICBpZiAoTF92YXIxIDwgMCkNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgIExfdmFyX291dCA9IH4oKH5MX3ZhcjEpID4+IHZhcjIpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBlbHNlDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICBMX3Zhcl9vdXQgPSBMX3ZhcjEgPj4gdmFyMjsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIChMX3Zhcl9vdXQpOw0KKyNlbmRpZg0KK30NCisjZW5kaWYNCisNCisvKiBTaG9ydCBhZGQsICAgICAgICAgICAxICAgKi8NCisjaWYgKEFERF9JU19JTkxJTkUpDQorX19pbmxpbmUgV29yZDE2IGFkZCAoV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKQ0KK3sNCisjaWYgQVJNVjVURV9BREQNCisJV29yZDMyIHJlc3VsdDsgDQorCWFzbSB2b2xhdGlsZSggDQorCQkiQUREICAlW3Jlc3VsdF0sICVbdmFyMV0sICVbdmFyMl0gXG4iIA0KKwkJIk1PViAgcjMsICMweDFcbiINCisJCSJNT1YgIHIyLCAlW3Jlc3VsdF0sIEFTUiAjMTVcbiINCisJCSJSU0IgIHIzLCByMywgcjMsIExTTCwgIzE1XG4iDQorCQkiVEVRICByMiwgJVtyZXN1bHRdLCBBU1IgIzMxXG4iDQorCQkiRU9STkUgJVtyZXN1bHRdLCByMywgJVtyZXN1bHRdLCBBU1IgIzMxIg0KKwkJOltyZXN1bHRdIityIihyZXN1bHQpDQorCQk6W3ZhcjFdInIiKHZhcjEpLCBbdmFyMl0iciIodmFyMikNCisJCToicjIiLCAicjMiDQorCQkpOyANCisJcmV0dXJuIHJlc3VsdDsNCisjZWxzZQ0KKyAgICBXb3JkMTYgdmFyX291dDsNCisgICAgV29yZDMyIExfc3VtOw0KKw0KKyAgICBMX3N1bSA9IChXb3JkMzIpIHZhcjEgKyB2YXIyOw0KKyAgICB2YXJfb3V0ID0gc2F0dXJhdGUoTF9zdW0pOw0KKw0KKyAgICByZXR1cm4gKHZhcl9vdXQpOw0KKyNlbmRpZg0KK30NCisjZW5kaWYNCisNCisvKiBTaG9ydCBzdWIsICAgICAgICAgICAxICAgKi8NCisjaWYgKFNVQl9JU19JTkxJTkUpDQorX19pbmxpbmUgV29yZDE2IHN1YihXb3JkMTYgdmFyMSwgV29yZDE2IHZhcjIpDQorew0KKyNpZiBBUk1WNVRFX1NVQg0KKwlXb3JkMzIgcmVzdWx0OyANCisJYXNtIHZvbGF0aWxlKCANCisJCSJNT1YgICByMywgIzFcbiINCisJCSJTVUIgICAlW3Jlc3VsdF0sICVbdmFyMV0sICVbdmFyMl0gXG4iCQkNCisJCSJSU0IgICByMyxyMyxyMyxMU0wjMTVcbiINCisJCSJNT1YgICByMiwgJVt2YXIxXSwgQVNSICMxNSBcbiIgDQorCQkiVEVRICAgcjIsICVbdmFyMV0sIEFTUiAjMzEgXG4iDQorCQkiRU9STkUgJVtyZXN1bHRdLCByMywgJVtyZXN1bHRdLCBBU1IgIzMxIFxuIg0KKwkJOltyZXN1bHRdIityIihyZXN1bHQpDQorCQk6W3ZhcjFdInIiKHZhcjEpLCBbdmFyMl0iciIodmFyMikNCisJCToicjIiLCAicjMiDQorCQkpOyANCisJcmV0dXJuIHJlc3VsdDsNCisjZWxzZQ0KKyAgICBXb3JkMTYgdmFyX291dDsNCisgICAgV29yZDMyIExfZGlmZjsNCisNCisgICAgTF9kaWZmID0gKFdvcmQzMikgdmFyMSAtIHZhcjI7DQorICAgIHZhcl9vdXQgPSBzYXR1cmF0ZShMX2RpZmYpOw0KKyAgIA0KKyAgICByZXR1cm4gKHZhcl9vdXQpOw0KKyNlbmRpZg0KK30NCisjZW5kaWYNCisNCisvKiBTaG9ydCBkaXZpc2lvbiwgICAgICAgMTggICovDQorI2lmIChESVZfU19JU19JTkxJTkUpDQorX19pbmxpbmUgV29yZDE2IGRpdl9zIChXb3JkMTYgdmFyMSwgV29yZDE2IHZhcjIpDQorew0KKyAgICBXb3JkMTYgdmFyX291dCA9IDA7DQorICAgIFdvcmQxNiBpdGVyYXRpb247DQorICAgIFdvcmQzMiBMX251bTsNCisgICAgV29yZDMyIExfZGVub207DQorDQorICAgIHZhcl9vdXQgPSBNQVhfMTY7DQorICAgIGlmICh2YXIxIT0gdmFyMikvL3ZhcjEhPSB2YXIyDQorICAgIHsNCisgICAgCXZhcl9vdXQgPSAwOw0KKyAgICAJTF9udW0gPSAoV29yZDMyKSB2YXIxOw0KKyAgICANCisgICAgCUxfZGVub20gPSAoV29yZDMyKSB2YXIyOw0KKyAgICAJDQorCQkvL3JldHVybiAoTF9udW08PDE1KS92YXIyOw0KKw0KKyAgICAJZm9yIChpdGVyYXRpb24gPSAwOyBpdGVyYXRpb24gPCAxNTsgaXRlcmF0aW9uKyspDQorICAgIAl7DQorICAgIAkJdmFyX291dCA8PD0gMTsNCisgICAgCQlMX251bSA8PD0gMTsNCisgICAgCQkNCisgICAgCQlpZiAoTF9udW0gPj0gTF9kZW5vbSkNCisgICAgCQl7DQorICAgIAkJCUxfbnVtIC09IExfZGVub207DQorICAgIAkJCXZhcl9vdXQrKzsNCisgICAgCQl9DQorICAgIAl9DQorICAgIH0NCisgICAgcmV0dXJuICh2YXJfb3V0KTsNCit9DQorI2VuZGlmDQorDQorLyogU2hvcnQgbXVsdCwgICAgICAgICAgMSAgICovDQorI2lmIChNVUxUX0lTX0lOTElORSkNCitfX2lubGluZSBXb3JkMTYgbXVsdCAoV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKQ0KK3sNCisjaWYgQVJNVjVURV9NVUxUDQorCVdvcmQzMiByZXN1bHQ7IA0KKwlhc20gdm9sYXRpbGUoIA0KKwkJIlNNVUxCQiByMiwgJVt2YXIxXSwgJVt2YXIyXSBcbiINCisJCSJNT1YJcjMsICMxXG4iDQorCQkiTU9WCSVbcmVzdWx0XSwgcjIsIEFTUiAjMTVcbiINCisJCSJSU0IJcjMsIHIzLCByMywgTFNMICMxNVxuIg0KKwkJIk1PVglyMiwgJVtyZXN1bHRdLCBBU1IgIzE1XG4iDQorCQkiVEVRCXIyLCAlW3Jlc3VsdF0sIEFTUiAjMzFcbiINCisJCSJFT1JORSAgJVtyZXN1bHRdLCByMywgJVtyZXN1bHRdLCBBU1IgIzMxIFxuIg0KKwkJOltyZXN1bHRdIityIihyZXN1bHQpDQorCQk6W3ZhcjFdInIiKHZhcjEpLCBbdmFyMl0iciIodmFyMikNCisJCToicjIiLCAicjMiDQorCQkpOyANCisJcmV0dXJuIHJlc3VsdDsNCisjZWxzZQ0KKyAgICBXb3JkMTYgdmFyX291dDsNCisgICAgV29yZDMyIExfcHJvZHVjdDsNCisNCisgICAgTF9wcm9kdWN0ID0gKFdvcmQzMikgdmFyMSAqKFdvcmQzMikgdmFyMjsNCisgICAgTF9wcm9kdWN0ID0gKExfcHJvZHVjdCAmIChXb3JkMzIpIDB4ZmZmZjgwMDBMKSA+PiAxNTsNCisgICAgaWYgKExfcHJvZHVjdCAmIChXb3JkMzIpIDB4MDAwMTAwMDBMKQ0KKyAgICAgICAgTF9wcm9kdWN0ID0gTF9wcm9kdWN0IHwgKFdvcmQzMikgMHhmZmZmMDAwMEw7DQorICAgIHZhcl9vdXQgPSBzYXR1cmF0ZShMX3Byb2R1Y3QpOw0KKw0KKyAgICByZXR1cm4gKHZhcl9vdXQpOw0KKyNlbmRpZg0KK30NCisjZW5kaWYNCisNCisNCisvKiBTaG9ydCBub3JtLCAgICAgICAgICAgMTUgICovDQorI2lmIChOT1JNX1NfSVNfSU5MSU5FKQ0KK19faW5saW5lIFdvcmQxNiBub3JtX3MgKFdvcmQxNiB2YXIxKQ0KK3sNCisjaWYgQVJNVjVURV9OT1JNX1MNCisJV29yZDE2IHJlc3VsdDsgDQorCWFzbSB2b2xhdGlsZSggDQorCQkiTU9WICAgcjIsJVt2YXIxXSBcbiINCisJCSJDTVAgICByMiwgIzBcbiINCisJCSJSU0JMVCAlW3ZhcjFdLCAlW3ZhcjFdLCAjMCBcbiINCisJCSJDTFpORSAlW3Jlc3VsdF0sICVbdmFyMV1cbiINCisJCSJTVUJORSAlW3Jlc3VsdF0sICVbcmVzdWx0XSwgIzE3XG4iDQorCQkiTU9WRVEgJVtyZXN1bHRdLCAjMFxuIg0KKwkJIkNNUCAgIHIyLCAjLTFcbiINCisJCSJNT1ZFUSAlW3Jlc3VsdF0sICMxNVxuIiANCisJCTpbcmVzdWx0XSIrciIocmVzdWx0KQ0KKwkJOlt2YXIxXSJyIih2YXIxKQ0KKwkJOiJyMiINCisJCSk7IA0KKwlyZXR1cm4gcmVzdWx0Ow0KKyNlbHNlDQorICAgIFdvcmQxNiB2YXJfb3V0Ow0KKw0KKyAgICBpZiAodmFyMSA9PSAwKQ0KKyAgICB7DQorICAgICAgICB2YXJfb3V0ID0gMDsNCisgICAgfQ0KKyAgICBlbHNlDQorICAgIHsNCisgICAgICAgIGlmICh2YXIxID09IC0xKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIHZhcl9vdXQgPSAxNTsNCisgICAgICAgIH0NCisgICAgICAgIGVsc2UNCisgICAgICAgIHsNCisgICAgICAgICAgICBpZiAodmFyMSA8IDApDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICB2YXIxID0gKFdvcmQxNil+dmFyMTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgZm9yICh2YXJfb3V0ID0gMDsgdmFyMSA8IDB4NDAwMDsgdmFyX291dCsrKQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgdmFyMSA8PD0gMTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuICh2YXJfb3V0KTsNCisjZW5kaWYNCit9DQorI2VuZGlmDQorDQorLyogTG9uZyBub3JtLCAgICAgICAgICAgIDMwICAqLw0KKyNpZiAoTk9STV9MX0lTX0lOTElORSkNCitfX2lubGluZSBXb3JkMTYgbm9ybV9sIChXb3JkMzIgTF92YXIxKQ0KK3sNCisjaWYgQVJNVjVURV9OT1JNX0wNCisJV29yZDE2IHJlc3VsdDsgDQorCWFzbSB2b2xhdGlsZSggDQorCQkiQ01QICAgICVbTF92YXIxXSwgIzBcbiINCisJCSJDTFpORSAgJVtyZXN1bHRdLCAlW0xfdmFyMV1cbiINCisJCSJTVUJORSAgJVtyZXN1bHRdLCAlW3Jlc3VsdF0sICMxXG4iIA0KKwkJIk1PVkVRICAlW3Jlc3VsdF0sICMwXG4iDQorCQk6W3Jlc3VsdF0iK3IiKHJlc3VsdCkNCisJCTpbTF92YXIxXSJyIihMX3ZhcjEpDQorCQkpOyANCisJcmV0dXJuIHJlc3VsdDsNCisjZWxzZQ0KKyAgICAvL1dvcmQxNiB2YXJfb3V0Ow0KKw0KKyAgICAvL2lmIChMX3ZhcjEgPT0gMCkNCisgICAgLy97DQorICAgIC8vICAgIHZhcl9vdXQgPSAwOw0KKyAgICAvL30NCisgICAgLy9lbHNlDQorICAgIC8vew0KKyAgICAvLyAgICBpZiAoTF92YXIxID09IChXb3JkMzIpIDB4ZmZmZmZmZmZMKQ0KKyAgICAvLyAgICB7DQorICAgIC8vICAgICAgICB2YXJfb3V0ID0gMzE7DQorICAgIC8vICAgIH0NCisgICAgLy8gICAgZWxzZQ0KKyAgICAvLyAgICB7DQorICAgIC8vICAgICAgICBpZiAoTF92YXIxIDwgMCkNCisgICAgLy8gICAgICAgIHsNCisgICAgLy8gICAgICAgICAgICBMX3ZhcjEgPSB+TF92YXIxOw0KKyAgICAvLyAgICAgICAgfQ0KKyAgICAvLyAgICAgICAgZm9yICh2YXJfb3V0ID0gMDsgTF92YXIxIDwgKFdvcmQzMikgMHg0MDAwMDAwMEw7IHZhcl9vdXQrKykNCisgICAgLy8gICAgICAgIHsNCisgICAgLy8gICAgICAgICAgICBMX3ZhcjEgPDw9IDE7DQorICAgIC8vICAgICAgICB9DQorICAgIC8vICAgIH0NCisgICAgLy99DQorICAgIC8vcmV0dXJuICh2YXJfb3V0KTsNCisgIFdvcmQxNiBhMTY7DQorICBXb3JkMTYgciA9IDAgOyAgICAgICANCisNCisgICANCisgIGlmICggTF92YXIxIDwgMCApIHsNCisgICAgTF92YXIxID0gfkxfdmFyMTsgDQorICB9DQorDQorICBpZiAoMCA9PSAoTF92YXIxICYgMHg3ZmZmODAwMCkpIHsNCisgICAgYTE2ID0gZXh0cmFjdF9sKExfdmFyMSk7DQorICAgIHIgKz0gMTY7DQorICAgICAgIA0KKyAgICBpZiAoMCA9PSAoYTE2ICYgMHg3ZjgwKSkgew0KKyAgICAgIHIgKz0gODsNCisgICAgICAgICANCisgICAgICBpZiAoMCA9PSAoYTE2ICYgMHgwMDc4KSkgew0KKyAgICAgICAgciArPSA0Ow0KKyAgICAgICAgICAgDQorICAgICAgICBpZiAoMCA9PSAoYTE2ICYgMHgwMDA2KSkgew0KKyAgICAgICAgICByICs9IDI7DQorICAgICAgICAgICAgIA0KKyAgICAgICAgICBpZiAoMCA9PSAoYTE2ICYgMHgwMDAxKSkgew0KKyAgICAgICAgICAgIHIgKz0gMTsNCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgZWxzZSB7DQorICAgICAgICAgICAgIA0KKyAgICAgICAgICBpZiAoMCA9PSAoYTE2ICYgMHgwMDA0KSkgew0KKyAgICAgICAgICAgIHIgKz0gMTsNCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAgICBlbHNlIHsNCisgICAgICAgICAgIA0KKyAgICAgICAgaWYgKDAgPT0gKGExNiAmIDB4MDA2MCkpIHsNCisgICAgICAgICAgciArPSAyOw0KKyAgICAgICAgICAgICANCisgICAgICAgICAgaWYgKDAgPT0gKGExNiAmIDB4MDAxMCkpIHsNCisgICAgICAgICAgICByICs9IDE7DQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIGVsc2Ugew0KKyAgICAgICAgICAgICANCisgICAgICAgICAgaWYgKDAgPT0gKGExNiAmIDB4MDA0MCkpIHsNCisgICAgICAgICAgICByICs9IDE7DQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICB9DQorICAgIH0gDQorICAgIGVsc2UgeyANCisgICAgICAgICANCisgICAgICBpZiAoMCA9PSAoYTE2ICYgMHg3ODAwKSkgew0KKyAgICAgICAgciArPSA0Ow0KKyAgICAgICAgICAgDQorICAgICAgICBpZiAoMCA9PSAoYTE2ICYgMHgwNjAwKSkgew0KKyAgICAgICAgICByICs9IDI7DQorICAgICAgICAgICAgIA0KKyAgICAgICAgICBpZiAoMCA9PSAoYTE2ICYgMHgwMTAwKSkgew0KKyAgICAgICAgICAgIHIgKz0gMTsNCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgZWxzZSB7DQorICAgICAgICAgICAgIA0KKyAgICAgICAgICBpZiAoMCA9PSAoYTE2ICYgMHgwNDAwKSkgew0KKyAgICAgICAgICAgIHIgKz0gMTsNCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAgICBlbHNlIHsNCisgICAgICAgICAgIA0KKyAgICAgICAgaWYgKDAgPT0gKGExNiAmIDB4NjAwMCkpIHsNCisgICAgICAgICAgciArPSAyOw0KKyAgICAgICAgICAgICANCisgICAgICAgICAgaWYgKDAgPT0gKGExNiAmIDB4MTAwMCkpIHsNCisgICAgICAgICAgICByICs9IDE7DQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIGVsc2Ugew0KKyAgICAgICAgICAgICANCisgICAgICAgICAgaWYgKDAgPT0gKGExNiAmIDB4NDAwMCkpIHsNCisgICAgICAgICAgICByICs9IDE7DQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICB9DQorICAgIH0NCisgIH0NCisgIGVsc2Ugew0KKyAgICBhMTYgPSBleHRyYWN0X2goTF92YXIxKTsNCisgICAgICAgDQorICAgIGlmICgwID09IChhMTYgJiAweDdmODApKSB7DQorICAgICAgciArPSA4Ow0KKyAgICAgICAgIA0KKyAgICAgIGlmICgwID09IChhMTYgJiAweDAwNzgpKSB7DQorICAgICAgICByICs9IDQgOw0KKyAgICAgICAgICAgDQorICAgICAgICBpZiAoMCA9PSAoYTE2ICYgMHgwMDA2KSkgew0KKyAgICAgICAgICByICs9IDI7DQorICAgICAgICAgICAgIA0KKyAgICAgICAgICBpZiAoMCA9PSAoYTE2ICYgMHgwMDAxKSkgew0KKyAgICAgICAgICAgIHIgKz0gMTsNCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgZWxzZSB7DQorICAgICAgICAgICAgIA0KKyAgICAgICAgICBpZiAoMCA9PSAoYTE2ICYgMHgwMDA0KSkgew0KKyAgICAgICAgICAgIHIgKz0gMTsNCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAgICBlbHNlIHsNCisgICAgICAgICAgIA0KKyAgICAgICAgaWYgKDAgPT0gKGExNiAmIDB4MDA2MCkpIHsNCisgICAgICAgICAgciArPSAyOw0KKyAgICAgICAgICAgICANCisgICAgICAgICAgaWYgKDAgPT0gKGExNiAmIDB4MDAxMCkpIHsNCisgICAgICAgICAgICByICs9IDE7DQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIGVsc2Ugew0KKyAgICAgICAgICAgICANCisgICAgICAgICAgaWYgKDAgPT0gKGExNiAmIDB4MDA0MCkpIHsNCisgICAgICAgICAgICByICs9IDE7DQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICB9DQorICAgIH0NCisgICAgZWxzZSB7DQorICAgICAgICAgDQorICAgICAgaWYgKDAgPT0gKGExNiAmIDB4NzgwMCkpIHsNCisgICAgICAgIHIgKz0gNDsNCisgICAgICAgICAgIA0KKyAgICAgICAgaWYgKDAgPT0gKGExNiAmIDB4MDYwMCkpIHsNCisgICAgICAgICAgciArPSAyOw0KKyAgICAgICAgICAgICANCisgICAgICAgICAgaWYgKDAgPT0gKGExNiAmIDB4MDEwMCkpIHsNCisgICAgICAgICAgICByICs9IDE7DQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIGVsc2Ugew0KKyAgICAgICAgICAgICANCisgICAgICAgICAgaWYgKDAgPT0gKGExNiAmIDB4MDQwMCkpIHsNCisgICAgICAgICAgICByICs9IDE7DQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICB9DQorICAgICAgZWxzZSB7DQorICAgICAgICAgICANCisgICAgICAgIGlmICgwID09IChhMTYgJiAweDYwMDApKSB7DQorICAgICAgICAgIHIgKz0gMjsNCisgICAgICAgICAgICAgDQorICAgICAgICAgIGlmICgwID09IChhMTYgJiAweDEwMDApKSB7DQorICAgICAgICAgICAgciArPSAxOw0KKyAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBlbHNlIHsNCisgICAgICAgICAgICAgDQorICAgICAgICAgIGlmICgwID09IChhMTYgJiAweDQwMDApKSB7DQorICAgICAgICAgICAgcmV0dXJuIDE7DQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICB9DQorICAgIH0NCisgIH0NCisgIA0KKyAgcmV0dXJuIHIgOw0KKyNlbmRpZg0KK30NCisjZW5kaWYNCisNCisvKiBSb3VuZCwgICAgICAgICAgICAgICAxICAgKi8NCisjaWYgKFJPVU5EX0lTX0lOTElORSkNCitfX2lubGluZSBXb3JkMTYgcm91bmQxNihXb3JkMzIgTF92YXIxKQ0KK3sNCisjaWYgQVJNVjVURV9ST1VORA0KKwlXb3JkMTYgcmVzdWx0OyANCisJYXNtIHZvbGF0aWxlKCANCisJCSJNT1YgICByMSwjMHgwMDAwODAwMFxuIg0KKwkJIlFBREQgICVbcmVzdWx0XSwgJVtMX3ZhcjFdLCByMVxuIg0KKwkJIk1PViAgICVbcmVzdWx0XSwgJVtyZXN1bHRdLCBBU1IgIzE2IFxuIiANCisJCTpbcmVzdWx0XSIrciIocmVzdWx0KQ0KKwkJOltMX3ZhcjFdInIiKExfdmFyMSkNCisJCToicjEiDQorCQkpOyANCisJcmV0dXJuIHJlc3VsdDsNCisjZWxzZSAgIA0KKyAgICBXb3JkMTYgdmFyX291dDsNCisgICAgV29yZDMyIExfcm91bmRlZDsNCisNCisgICAgTF9yb3VuZGVkID0gTF9hZGQgKExfdmFyMSwgKFdvcmQzMikgMHgwMDAwODAwMEwpOw0KKyAgICB2YXJfb3V0ID0gZXh0cmFjdF9oIChMX3JvdW5kZWQpOw0KKyAgICByZXR1cm4gKHZhcl9vdXQpOw0KKyNlbmRpZg0KK30NCisjZW5kaWYNCisNCisvKiBNYWMsICAxICAqLw0KKyNpZiAoTF9NQUNfSVNfSU5MSU5FKQ0KK19faW5saW5lIFdvcmQzMiBMX21hYyAoV29yZDMyIExfdmFyMywgV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKQ0KK3sNCisjaWYgQVJNVjVURV9MX01BQw0KKwlXb3JkMzIgcmVzdWx0OyANCisJYXNtIHZvbGF0aWxlKCANCisJCSJTTVVMQkIgJVtyZXN1bHRdLCAlW3ZhcjFdLCAlW3ZhcjJdXG4iDQorCQkiUUFERAklW3Jlc3VsdF0sICVbcmVzdWx0XSwgJVtyZXN1bHRdXG4iDQorCQkiUUFERCAgICVbcmVzdWx0XSwgJVtyZXN1bHRdLCAlW0xfdmFyM11cbiINCisJCTpbcmVzdWx0XSIrciIocmVzdWx0KQ0KKwkJOiBbTF92YXIzXSJyIihMX3ZhcjMpLCBbdmFyMV0iciIodmFyMSksIFt2YXIyXSJyIih2YXIyKQ0KKwkJKTsgDQorCXJldHVybiByZXN1bHQ7DQorI2Vsc2UNCisgICAgV29yZDMyIExfdmFyX291dDsNCisgICAgV29yZDMyIExfcHJvZHVjdDsNCisNCisgICAgTF9wcm9kdWN0ID0gTF9tdWx0KHZhcjEsIHZhcjIpOw0KKyAgICBMX3Zhcl9vdXQgPSBMX2FkZCAoTF92YXIzLCBMX3Byb2R1Y3QpOw0KKyAgICByZXR1cm4gKExfdmFyX291dCk7DQorI2VuZGlmDQorfQ0KKyNlbmRpZg0KKw0KKyNpZiAoTF9BRERfSVNfSU5MSU5FKQ0KK19faW5saW5lIFdvcmQzMiBMX2FkZCAoV29yZDMyIExfdmFyMSwgV29yZDMyIExfdmFyMikNCit7DQorI2lmIEFSTVY1VEVfTF9BREQNCisJV29yZDMyIHJlc3VsdDsgDQorCWFzbSB2b2xhdGlsZSggDQorCQkiUUFERCAlW3Jlc3VsdF0sICVbTF92YXIxXSwgJVtMX3ZhcjJdXG4iDQorCQk6W3Jlc3VsdF0iK3IiKHJlc3VsdCkNCisJCTpbTF92YXIxXSJyIihMX3ZhcjEpLCBbTF92YXIyXSJyIihMX3ZhcjIpDQorCQkpOyANCisJcmV0dXJuIHJlc3VsdDsNCisjZWxzZQ0KKyAgICBXb3JkMzIgTF92YXJfb3V0Ow0KKw0KKyAgICBMX3Zhcl9vdXQgPSBMX3ZhcjEgKyBMX3ZhcjI7DQorICAgIGlmICgoKExfdmFyMSBeIExfdmFyMikgJiBNSU5fMzIpID09IDApDQorICAgIHsNCisgICAgICAgIGlmICgoTF92YXJfb3V0IF4gTF92YXIxKSAmIE1JTl8zMikNCisgICAgICAgIHsNCisgICAgICAgICAgICBMX3Zhcl9vdXQgPSAoTF92YXIxIDwgMCkgPyBNSU5fMzIgOiBNQVhfMzI7DQorICAgICAgICB9DQorICAgIH0NCisgICAgcmV0dXJuIChMX3Zhcl9vdXQpOw0KKyNlbmRpZg0KK30NCisjZW5kaWYNCisNCisNCisNCisjaWYgKE1VTFRfUl9JU19JTkxJTkUpDQorX19pbmxpbmUgV29yZDE2IG11bHRfciAoV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKQ0KK3sNCisgICAgV29yZDE2IHZhcl9vdXQ7DQorICAgIFdvcmQzMiBMX3Byb2R1Y3RfYXJyOw0KKw0KKyAgICBMX3Byb2R1Y3RfYXJyID0gKFdvcmQzMil2YXIxICooV29yZDMyKXZhcjI7ICAgICAgIC8qIHByb2R1Y3QgKi8NCisgICAgTF9wcm9kdWN0X2FyciArPSAoV29yZDMyKTB4MDAwMDQwMDBMOyAgICAgIC8qIHJvdW5kICovDQorICAgIExfcHJvZHVjdF9hcnIgPj49IDE1OyAgICAgICAvKiBzaGlmdCAqLw0KKw0KKyAgICB2YXJfb3V0ID0gc2F0dXJhdGUoTF9wcm9kdWN0X2Fycik7DQorDQorICAgIHJldHVybiAodmFyX291dCk7DQorfQ0KKyNlbmRpZg0KKw0KKyNpZiAoU0hSX1JfSVNfSU5MSU5FKQ0KK19faW5saW5lIFdvcmQxNiBzaHJfciAoV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKQ0KK3sNCisgICAgV29yZDE2IHZhcl9vdXQ7DQorDQorICAgIGlmICh2YXIyID4gMTUpDQorICAgIHsNCisgICAgICAgIHZhcl9vdXQgPSAwOw0KKyAgICB9DQorICAgIGVsc2UNCisgICAgew0KKyAgICAgICAgdmFyX291dCA9IHNocih2YXIxLCB2YXIyKTsNCisNCisgICAgICAgIGlmICh2YXIyID4gMCkNCisgICAgICAgIHsNCisgICAgICAgICAgICBpZiAoKHZhcjEgJiAoKFdvcmQxNikgMSA8PCAodmFyMiAtIDEpKSkgIT0gMCkNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgIHZhcl9vdXQrKzsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisNCisgICAgcmV0dXJuICh2YXJfb3V0KTsNCit9DQorI2VuZGlmDQorDQorI2lmIChNQUNfUl9JU19JTkxJTkUpDQorX19pbmxpbmUgV29yZDE2IG1hY19yIChXb3JkMzIgTF92YXIzLCBXb3JkMTYgdmFyMSwgV29yZDE2IHZhcjIpDQorew0KKyAgICBXb3JkMTYgdmFyX291dDsNCisNCisgICAgTF92YXIzID0gTF9tYWMgKExfdmFyMywgdmFyMSwgdmFyMik7DQorICAgIHZhcl9vdXQgPSAoV29yZDE2KSgoTF92YXIzICsgMHg4MDAwTCkgPj4gMTYpOw0KKw0KKyAgICByZXR1cm4gKHZhcl9vdXQpOw0KK30NCisjZW5kaWYNCisNCisjaWYgKE1TVV9SX0lTX0lOTElORSkNCitfX2lubGluZSBXb3JkMTYgbXN1X3IgKFdvcmQzMiBMX3ZhcjMsIFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMikNCit7DQorICAgIFdvcmQxNiB2YXJfb3V0Ow0KKw0KKyAgICBMX3ZhcjMgPSBMX21zdSAoTF92YXIzLCB2YXIxLCB2YXIyKTsNCisgICAgdmFyX291dCA9IChXb3JkMTYpKChMX3ZhcjMgKyAweDgwMDBMKSA+PiAxNik7DQorICAgIA0KKyAgICByZXR1cm4gKHZhcl9vdXQpOw0KK30NCisjZW5kaWYNCisNCisjaWYgKExfU0hSX1JfSVNfSU5MSU5FKQ0KK19faW5saW5lIFdvcmQzMiBMX3Nocl9yIChXb3JkMzIgTF92YXIxLCBXb3JkMTYgdmFyMikNCit7DQorICAgIFdvcmQzMiBMX3Zhcl9vdXQ7DQorDQorICAgIGlmICh2YXIyID4gMzEpDQorICAgIHsNCisgICAgICAgIExfdmFyX291dCA9IDA7DQorICAgIH0NCisgICAgZWxzZQ0KKyAgICB7DQorICAgICAgICBMX3Zhcl9vdXQgPSBMX3NocihMX3ZhcjEsIHZhcjIpOw0KKw0KKyAgICAgICAgaWYgKHZhcjIgPiAwKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIGlmICgoTF92YXIxICYgKChXb3JkMzIpIDEgPDwgKHZhcjIgLSAxKSkpICE9IDApDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICBMX3Zhcl9vdXQrKzsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisNCisgICAgcmV0dXJuIChMX3Zhcl9vdXQpOw0KK30NCisjZW5kaWYNCisNCisjaWYgKEVYVFJBQ1RfSF9JU19JTkxJTkUpDQorX19pbmxpbmUgV29yZDE2IGV4dHJhY3RfaCAoV29yZDMyIExfdmFyMSkNCit7DQorICAgIFdvcmQxNiB2YXJfb3V0Ow0KKw0KKyAgICB2YXJfb3V0ID0gKFdvcmQxNikgKExfdmFyMSA+PiAxNik7DQorDQorICAgIHJldHVybiAodmFyX291dCk7DQorfQ0KKyNlbmRpZg0KKw0KKyNpZiAoRVhUUkFDVF9MX0lTX0lOTElORSkNCitfX2lubGluZSBXb3JkMTYgZXh0cmFjdF9sKFdvcmQzMiBMX3ZhcjEpDQorew0KKwlyZXR1cm4gKFdvcmQxNikgTF92YXIxOw0KK30NCisjZW5kaWYNCisNCisjZW5kaWYKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvYmFzaWNfb3AvYmFzaWNvcDIuYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvYmFzaWNfb3AvYmFzaWNvcDIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMGQ1ZGJhCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9iYXNpY19vcC9iYXNpY29wMi5jCkBAIC0wLDAgKzEsMTYyNCBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJYmFzaWNvcDIuYw0KKw0KKwlDb250ZW50OglCYXNpYyBhcml0aG1ldGljIG9wZXJhdG9ycy4gDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2luY2x1ZGUgInR5cGVkZWYuaCIKKyNpbmNsdWRlICJiYXNpY19vcC5oIg0KKw0KKw0KKy8qX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBGdW5jdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHxfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX198DQorKi8NCisNCisvKl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgRnVuY3Rpb24gTmFtZSA6IHNhdHVyYXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUHVycG9zZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIExpbWl0IHRoZSAzMiBiaXQgaW5wdXQgdG8gdGhlIHJhbmdlIG9mIGEgMTYgYml0IHdvcmQuICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgSW5wdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIExfdmFyMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDMyIGJpdCBsb25nIHNpZ25lZCBpbnRlZ2VyIChXb3JkMzIpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSAgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHg4MDAwIDAwMDAgPD0gTF92YXIxIDw9IDB4N2ZmZiBmZmZmLiAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgT3V0cHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIG5vbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUmV0dXJuIFZhbHVlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIHZhcl9vdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyX291dCA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgfA0KKyB8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffA0KKyovDQorDQorI2lmICghU0FUUlVBVEVfSVNfSU5MSU5FKQ0KK1dvcmQxNiBzYXR1cmF0ZShXb3JkMzIgTF92YXIxKQ0KK3sNCisgICAgV29yZDE2IHZhcl9vdXQ7DQorDQorICAgIGlmIChMX3ZhcjEgPiAwWDAwMDA3ZmZmTCkNCisgICAgew0KKyAgICAgICAgdmFyX291dCA9IE1BWF8xNjsNCisgICAgfQ0KKyAgICBlbHNlIGlmIChMX3ZhcjEgPCAoV29yZDMyKSAweGZmZmY4MDAwTCkNCisgICAgew0KKyAgICAgICAgdmFyX291dCA9IE1JTl8xNjsNCisgICAgfQ0KKyAgICBlbHNlDQorICAgIHsNCisgICAgICAgIHZhcl9vdXQgPSBleHRyYWN0X2woTF92YXIxKTsNCisgICAgfQ0KKw0KKyAgICByZXR1cm4gKHZhcl9vdXQpOw0KK30NCisjZW5kaWYNCisNCisvKl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgRnVuY3Rpb24gTmFtZSA6IGFkZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUHVycG9zZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIFBlcmZvcm1zIHRoZSBhZGRpdGlvbiAodmFyMSt2YXIyKSB3aXRoIG92ZXJmbG93IGNvbnRyb2wgYW5kIHNhdHVyYXRpb247fA0KKyB8ICAgIHRoZSAxNiBiaXQgcmVzdWx0IGlzIHNldCBhdCArMzI3Njcgd2hlbiBvdmVyZmxvdyBvY2N1cnMgb3IgYXQgLTMyNzY4ICAgfA0KKyB8ICAgIHdoZW4gdW5kZXJmbG93IG9jY3Vycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgQ29tcGxleGl0eSB3ZWlnaHQgOiAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgSW5wdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIHZhcjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyMSA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIHZhcjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyMSA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgT3V0cHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIG5vbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUmV0dXJuIFZhbHVlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIHZhcl9vdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyX291dCA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgfA0KKyB8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffA0KKyovDQorDQorI2lmICghQUREX0lTX0lOTElORSkNCitXb3JkMTYgYWRkIChXb3JkMTYgdmFyMSwgV29yZDE2IHZhcjIpDQorew0KKyAgICBXb3JkMTYgdmFyX291dDsNCisgICAgV29yZDMyIExfc3VtOw0KKw0KKyAgICBMX3N1bSA9IChXb3JkMzIpdmFyMSArIChXb3JkMzIpdmFyMjsNCisgICAgdmFyX291dCA9IHNhdHVyYXRlKExfc3VtKTsNCisNCisgICAgcmV0dXJuICh2YXJfb3V0KTsNCit9DQorI2VuZGlmDQorDQorLypfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIEZ1bmN0aW9uIE5hbWUgOiBzdWIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFB1cnBvc2UgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBQZXJmb3JtcyB0aGUgc3VidHJhY3Rpb24gKHZhcjErdmFyMikgd2l0aCBvdmVyZmxvdyBjb250cm9sIGFuZCBzYXR1LSAgIHwNCisgfCAgICByYXRpb247IHRoZSAxNiBiaXQgcmVzdWx0IGlzIHNldCBhdCArMzI3Njcgd2hlbiBvdmVyZmxvdyBvY2N1cnMgb3IgYXQgIHwNCisgfCAgICAtMzI3Njggd2hlbiB1bmRlcmZsb3cgb2NjdXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIENvbXBsZXhpdHkgd2VpZ2h0IDogMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIElucHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICB2YXIxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcjEgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICB2YXIyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcjEgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIE91dHB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBub25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFJldHVybiBWYWx1ZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICB2YXJfb3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcl9vdXQgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgIHwNCisgfF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX3wNCisqLw0KKyNpZiAoIVNVQl9JU19JTkxJTkUpDQorV29yZDE2IHN1YihXb3JkMTYgdmFyMSwgV29yZDE2IHZhcjIpDQorew0KKyAgICBXb3JkMTYgdmFyX291dDsNCisgICAgV29yZDMyIExfZGlmZjsNCisNCisgICAgTF9kaWZmID0gKFdvcmQzMikgdmFyMSAtIHZhcjI7DQorICAgIHZhcl9vdXQgPSBzYXR1cmF0ZShMX2RpZmYpOw0KKw0KKyAgICByZXR1cm4gKHZhcl9vdXQpOw0KK30NCisjZW5kaWYNCisNCisvKl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgRnVuY3Rpb24gTmFtZSA6IGFic19zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUHVycG9zZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIEFic29sdXRlIHZhbHVlIG9mIHZhcjE7IGFic19zKC0zMjc2OCkgPSAzMjc2Ny4gICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgQ29tcGxleGl0eSB3ZWlnaHQgOiAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgSW5wdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIHZhcjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyMSA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgT3V0cHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIG5vbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUmV0dXJuIFZhbHVlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIHZhcl9vdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHgwMDAwIDAwMDAgPD0gdmFyX291dCA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgfA0KKyB8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffA0KKyovDQorLy9Xb3JkMTYgYWJzX3MgKFdvcmQxNiB2YXIxKQ0KKy8vew0KKy8vICAgIFdvcmQxNiB2YXJfb3V0Ow0KKy8vDQorLy8gICAgaWYgKHZhcjEgPT0gTUlOXzE2KQ0KKy8vICAgIHsNCisvLyAgICAgICAgdmFyX291dCA9IE1BWF8xNjsNCisvLyAgICB9DQorLy8gICAgZWxzZQ0KKy8vICAgIHsNCisvLyAgICAgICAgaWYgKHZhcjEgPCAwKQ0KKy8vICAgICAgICB7DQorLy8gICAgICAgICAgICB2YXJfb3V0ID0gKFdvcmQxNiktdmFyMTsNCisvLyAgICAgICAgfQ0KKy8vICAgICAgICBlbHNlDQorLy8gICAgICAgIHsNCisvLyAgICAgICAgICAgIHZhcl9vdXQgPSB2YXIxOw0KKy8vICAgICAgICB9DQorLy8gICAgfQ0KKy8vDQorLy8gICAgcmV0dXJuICh2YXJfb3V0KTsNCisvL30NCisNCisNCisvKl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgRnVuY3Rpb24gTmFtZSA6IHNobCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUHVycG9zZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgQXJpdGhtZXRpY2FsbHkgc2hpZnQgdGhlIDE2IGJpdCBpbnB1dCB2YXIxIGxlZnQgdmFyMiBwb3NpdGlvbnMuWmVybyBmaWxsfA0KKyB8ICAgdGhlIHZhcjIgTFNCIG9mIHRoZSByZXN1bHQuIElmIHZhcjIgaXMgbmVnYXRpdmUsIGFyaXRobWV0aWNhbGx5IHNoaWZ0ICAgfA0KKyB8ICAgdmFyMSByaWdodCBieSAtdmFyMiB3aXRoIHNpZ24gZXh0ZW5zaW9uLiBTYXR1cmF0ZSB0aGUgcmVzdWx0IGluIGNhc2Ugb2YgfA0KKyB8ICAgdW5kZXJmbG93cyBvciBvdmVyZmxvd3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgQ29tcGxleGl0eSB3ZWlnaHQgOiAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgSW5wdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIHZhcjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyMSA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIHZhcjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyMSA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgT3V0cHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIG5vbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUmV0dXJuIFZhbHVlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIHZhcl9vdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyX291dCA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgfA0KKyB8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffA0KKyovDQorDQorI2lmICghU0hMX0lTX0lOTElORSkNCitXb3JkMTYgc2hsIChXb3JkMTYgdmFyMSwgV29yZDE2IHZhcjIpDQorew0KKyAgICBXb3JkMTYgdmFyX291dDsNCisgICAgV29yZDMyIHJlc3VsdDsNCisNCisgICAgaWYgKHZhcjIgPCAwKQ0KKyAgICB7DQorICAgICAgICBpZiAodmFyMiA8IC0xNikNCisgICAgICAgICAgICB2YXIyID0gLTE2Ow0KKyAgICAgICAgdmFyX291dCA9IHNociAodmFyMSwgKFdvcmQxNiktdmFyMik7DQorICAgIH0NCisgICAgZWxzZQ0KKyAgICB7DQorICAgICAgICByZXN1bHQgPSAoV29yZDMyKSB2YXIxICooKFdvcmQzMikgMSA8PCB2YXIyKTsNCisNCisgICAgICAgIGlmICgodmFyMiA+IDE1ICYmIHZhcjEgIT0gMCkgfHwgKHJlc3VsdCAhPSAoV29yZDMyKSAoKFdvcmQxNikgcmVzdWx0KSkpDQorICAgICAgICB7DQorICAgICAgICAgICAgLy9PdmVyZmxvdyA9IDE7DQorICAgICAgICAgICAgdmFyX291dCA9IChXb3JkMTYpKCh2YXIxID4gMCkgPyBNQVhfMTYgOiBNSU5fMTYpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZWxzZQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIHZhcl9vdXQgPSBleHRyYWN0X2wocmVzdWx0KTsNCisgICAgICAgIH0NCisgICAgfQ0KKw0KKyAgICByZXR1cm4gKHZhcl9vdXQpOw0KK30NCisjZW5kaWYNCisvLyBlbmQNCisNCisvKl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgRnVuY3Rpb24gTmFtZSA6IHNociAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUHVycG9zZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgQXJpdGhtZXRpY2FsbHkgc2hpZnQgdGhlIDE2IGJpdCBpbnB1dCB2YXIxIHJpZ2h0IHZhcjIgcG9zaXRpb25zIHdpdGggICAgfA0KKyB8ICAgc2lnbiBleHRlbnNpb24uIElmIHZhcjIgaXMgbmVnYXRpdmUsIGFyaXRobWV0aWNhbGx5IHNoaWZ0IHZhcjEgbGVmdCBieSAgfA0KKyB8ICAgLXZhcjIgd2l0aCBzaWduIGV4dGVuc2lvbi4gU2F0dXJhdGUgdGhlIHJlc3VsdCBpbiBjYXNlIG9mIHVuZGVyZmxvd3Mgb3IgfA0KKyB8ICAgb3ZlcmZsb3dzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgQ29tcGxleGl0eSB3ZWlnaHQgOiAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgSW5wdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIHZhcjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyMSA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIHZhcjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyMSA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgT3V0cHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIG5vbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUmV0dXJuIFZhbHVlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIHZhcl9vdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyX291dCA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgfA0KKyB8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffA0KKyovDQorDQorI2lmICghU0hSX0lTX0lOTElORSkNCitXb3JkMTYgc2hyIChXb3JkMTYgdmFyMSwgV29yZDE2IHZhcjIpDQorew0KKyAgICBXb3JkMTYgdmFyX291dDsNCisNCisgICAgaWYgKHZhcjIgPCAwKQ0KKyAgICB7DQorICAgICAgICBpZiAodmFyMiA8IC0xNikNCisgICAgICAgICAgICB2YXIyID0gLTE2Ow0KKyAgICAgICAgdmFyX291dCA9IHNobCAodmFyMSwgKFdvcmQxNiktdmFyMik7DQorICAgIH0NCisgICAgZWxzZQ0KKyAgICB7DQorICAgICAgICBpZiAodmFyMiA+PSAxNSkNCisgICAgICAgIHsNCisgICAgICAgICAgICB2YXJfb3V0ID0gKFdvcmQxNikoKHZhcjEgPCAwKSA/IC0xIDogMCk7DQorICAgICAgICB9DQorICAgICAgICBlbHNlDQorICAgICAgICB7DQorICAgICAgICAgICAgaWYgKHZhcjEgPCAwKQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgdmFyX291dCA9IChXb3JkMTYpKH4oKH52YXIxKSA+PiB2YXIyKSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGVsc2UNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgIHZhcl9vdXQgPSAoV29yZDE2KSh2YXIxID4+IHZhcjIpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKw0KKyAgICByZXR1cm4gKHZhcl9vdXQpOw0KK30NCisjZW5kaWYNCisNCisNCisvKl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgRnVuY3Rpb24gTmFtZSA6IG11bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUHVycG9zZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIFBlcmZvcm1zIHRoZSBtdWx0aXBsaWNhdGlvbiBvZiB2YXIxIGJ5IHZhcjIgYW5kIGdpdmVzIGEgMTYgYml0IHJlc3VsdCAgfA0KKyB8ICAgIHdoaWNoIGlzIHNjYWxlZCBpLmUuOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIG11bHQodmFyMSx2YXIyKSA9IGV4dHJhY3RfbChMX3NocigodmFyMSB0aW1lcyB2YXIyKSwxNSkpIGFuZCAgfA0KKyB8ICAgICAgICAgICAgIG11bHQoLTMyNzY4LC0zMjc2OCkgPSAzMjc2Ny4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgQ29tcGxleGl0eSB3ZWlnaHQgOiAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgSW5wdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIHZhcjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyMSA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIHZhcjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyMSA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgT3V0cHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIG5vbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUmV0dXJuIFZhbHVlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIHZhcl9vdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyX291dCA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgfA0KKyB8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffA0KKyovDQorI2lmICghTVVMVF9JU19JTkxJTkUpDQorV29yZDE2IG11bHQgKFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMikNCit7DQorICAgIFdvcmQxNiB2YXJfb3V0Ow0KKyAgICBXb3JkMzIgTF9wcm9kdWN0Ow0KKw0KKyAgICBMX3Byb2R1Y3QgPSAoV29yZDMyKSB2YXIxICooV29yZDMyKSB2YXIyOw0KKw0KKyAgICBMX3Byb2R1Y3QgPSAoTF9wcm9kdWN0ICYgKFdvcmQzMikgMHhmZmZmODAwMEwpID4+IDE1Ow0KKw0KKyAgICBpZiAoTF9wcm9kdWN0ICYgKFdvcmQzMikgMHgwMDAxMDAwMEwpDQorICAgICAgICBMX3Byb2R1Y3QgPSBMX3Byb2R1Y3QgfCAoV29yZDMyKSAweGZmZmYwMDAwTDsNCisNCisgICAgdmFyX291dCA9IHNhdHVyYXRlKExfcHJvZHVjdCk7DQorDQorICAgIHJldHVybiAodmFyX291dCk7DQorfQ0KKyNlbmRpZg0KKw0KKy8qX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBGdW5jdGlvbiBOYW1lIDogTF9tdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBQdXJwb3NlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBMX211bHQgaXMgdGhlIDMyIGJpdCByZXN1bHQgb2YgdGhlIG11bHRpcGxpY2F0aW9uIG9mIHZhcjEgdGltZXMgdmFyMiAgICB8DQorIHwgICB3aXRoIG9uZSBzaGlmdCBsZWZ0IGkuZS46ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgIExfbXVsdCh2YXIxLHZhcjIpID0gTF9zaGwoKHZhcjEgdGltZXMgdmFyMiksMSkgYW5kICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgIExfbXVsdCgtMzI3NjgsLTMyNzY4KSA9IDIxNDc0ODM2NDcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBDb21wbGV4aXR5IHdlaWdodCA6IDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBJbnB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgdmFyMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorIHwgICAgICAgICAgICAgcmFuZ2UgOiAweGZmZmYgODAwMCA8PSB2YXIxIDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgdmFyMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorIHwgICAgICAgICAgICAgcmFuZ2UgOiAweGZmZmYgODAwMCA8PSB2YXIxIDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBPdXRwdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgbm9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBSZXR1cm4gVmFsdWUgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgTF92YXJfb3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgMzIgYml0IGxvbmcgc2lnbmVkIGludGVnZXIgKFdvcmQzMikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlICB8DQorIHwgICAgICAgICAgICAgcmFuZ2UgOiAweDgwMDAgMDAwMCA8PSBMX3Zhcl9vdXQgPD0gMHg3ZmZmIGZmZmYuICAgICAgICAgICAgICB8DQorIHxfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX198DQorKi8NCisNCisjaWYgKCFMX01VTFRfSVNfSU5MSU5FKQ0KK1dvcmQzMiBMX211bHQoV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKQ0KK3sNCisgICAgV29yZDMyIExfdmFyX291dDsNCisNCisgICAgTF92YXJfb3V0ID0gKFdvcmQzMikgdmFyMSAqKFdvcmQzMikgdmFyMjsNCisNCisgICAgaWYgKExfdmFyX291dCAhPSAoV29yZDMyKSAweDQwMDAwMDAwTCkNCisgICAgew0KKyAgICAgICAgTF92YXJfb3V0IDw8PSAxOw0KKyAgICB9DQorICAgIGVsc2UNCisgICAgew0KKyAgICAgICAgTF92YXJfb3V0ID0gTUFYXzMyOw0KKyAgICB9DQorICAgICAgICANCisgICAgcmV0dXJuIChMX3Zhcl9vdXQpOw0KK30NCisjZW5kaWYNCisvLyBlbmQNCisNCisvKl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgRnVuY3Rpb24gTmFtZSA6IG5lZ2F0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUHVycG9zZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgTmVnYXRlIHZhcjEgd2l0aCBzYXR1cmF0aW9uLCBzYXR1cmF0ZSBpbiB0aGUgY2FzZSB3aGVyZSBpbnB1dCBpcyAtMzI3Njg6fA0KKyB8ICAgICAgICAgICAgICAgIG5lZ2F0ZSh2YXIxKSA9IHN1YigwLHZhcjEpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgQ29tcGxleGl0eSB3ZWlnaHQgOiAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgSW5wdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIHZhcjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyMSA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgT3V0cHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIG5vbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUmV0dXJuIFZhbHVlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIHZhcl9vdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyX291dCA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgfA0KKyB8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffA0KKyovDQorLy9Xb3JkMTYgbmVnYXRlIChXb3JkMTYgdmFyMSkNCisvL3sNCisvLyAgICBXb3JkMTYgdmFyX291dDsNCisvLw0KKy8vICAgIHZhcl9vdXQgPSAoV29yZDE2KSgodmFyMSA9PSBNSU5fMTYpID8gTUFYXzE2IDogLXZhcjEpOw0KKy8vDQorLy8gICAgcmV0dXJuICh2YXJfb3V0KTsNCisvL30NCisNCisNCisvKl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgRnVuY3Rpb24gTmFtZSA6IGV4dHJhY3RfaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUHVycG9zZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUmV0dXJuIHRoZSAxNiBNU0Igb2YgTF92YXIxLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgQ29tcGxleGl0eSB3ZWlnaHQgOiAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgSW5wdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIExfdmFyMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDMyIGJpdCBsb25nIHNpZ25lZCBpbnRlZ2VyIChXb3JkMzIgKSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHg4MDAwIDAwMDAgPD0gTF92YXIxIDw9IDB4N2ZmZiBmZmZmLiAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgT3V0cHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIG5vbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUmV0dXJuIFZhbHVlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIHZhcl9vdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyX291dCA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgfA0KKyB8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffA0KKyovDQorI2lmICghRVhUUkFDVF9IX0lTX0lOTElORSkNCitXb3JkMTYgZXh0cmFjdF9oIChXb3JkMzIgTF92YXIxKQ0KK3sNCisgICAgV29yZDE2IHZhcl9vdXQ7DQorDQorICAgIHZhcl9vdXQgPSAoV29yZDE2KSAoTF92YXIxID4+IDE2KTsNCisNCisgICAgcmV0dXJuICh2YXJfb3V0KTsNCit9DQorI2VuZGlmDQorDQorLypfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIEZ1bmN0aW9uIE5hbWUgOiBleHRyYWN0X2wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFB1cnBvc2UgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFJldHVybiB0aGUgMTYgTFNCIG9mIExfdmFyMS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIENvbXBsZXhpdHkgd2VpZ2h0IDogMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIElucHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBMX3ZhcjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAzMiBiaXQgbG9uZyBzaWduZWQgaW50ZWdlciAoV29yZDMyICkgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ODAwMCAwMDAwIDw9IExfdmFyMSA8PSAweDdmZmYgZmZmZi4gICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIE91dHB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBub25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFJldHVybiBWYWx1ZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICB2YXJfb3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcl9vdXQgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgIHwNCisgfF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX3wNCisqLw0KKyNpZiAoIUVYVFJBQ1RfTF9JU19JTkxJTkUpDQorV29yZDE2IGV4dHJhY3RfbChXb3JkMzIgTF92YXIxKQ0KK3sNCisgICAgV29yZDE2IHZhcl9vdXQ7DQorDQorICAgIHZhcl9vdXQgPSAoV29yZDE2KSBMX3ZhcjE7DQorDQorICAgIHJldHVybiAodmFyX291dCk7DQorfQ0KKyNlbmRpZg0KKw0KKy8qX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBGdW5jdGlvbiBOYW1lIDogcm91bmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBQdXJwb3NlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBSb3VuZCB0aGUgbG93ZXIgMTYgYml0cyBvZiB0aGUgMzIgYml0IGlucHV0IG51bWJlciBpbnRvIHRoZSBNUyAxNiBiaXRzICB8DQorIHwgICB3aXRoIHNhdHVyYXRpb24uIFNoaWZ0IHRoZSByZXN1bHRpbmcgYml0cyByaWdodCBieSAxNiBhbmQgcmV0dXJuIHRoZSAxNiB8DQorIHwgICBiaXQgbnVtYmVyOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICByb3VuZChMX3ZhcjEpID0gZXh0cmFjdF9oKExfYWRkKExfdmFyMSwzMjc2OCkpICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBDb21wbGV4aXR5IHdlaWdodCA6IDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBJbnB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgTF92YXIxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgMzIgYml0IGxvbmcgc2lnbmVkIGludGVnZXIgKFdvcmQzMiApIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorIHwgICAgICAgICAgICAgcmFuZ2UgOiAweDgwMDAgMDAwMCA8PSBMX3ZhcjEgPD0gMHg3ZmZmIGZmZmYuICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBPdXRwdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgbm9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBSZXR1cm4gVmFsdWUgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgdmFyX291dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorIHwgICAgICAgICAgICAgcmFuZ2UgOiAweGZmZmYgODAwMCA8PSB2YXJfb3V0IDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICB8DQorIHxfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX198DQorKi8NCisNCisjaWYgKCFST1VORF9JU19JTkxJTkUpDQorV29yZDE2IHJvdW5kMTYoV29yZDMyIExfdmFyMSkNCit7DQorICAgIFdvcmQxNiB2YXJfb3V0Ow0KKyAgICBXb3JkMzIgTF9yb3VuZGVkOw0KKw0KKyAgICBMX3JvdW5kZWQgPSBMX2FkZCAoTF92YXIxLCAoV29yZDMyKSAweDAwMDA4MDAwTCk7DQorICAgIHZhcl9vdXQgPSBleHRyYWN0X2ggKExfcm91bmRlZCk7DQorDQorICAgIHJldHVybiAodmFyX291dCk7DQorfQ0KKyNlbmRpZg0KKy8vIGVuZA0KKw0KKy8qX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBGdW5jdGlvbiBOYW1lIDogTF9tYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBQdXJwb3NlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBNdWx0aXBseSB2YXIxIGJ5IHZhcjIgYW5kIHNoaWZ0IHRoZSByZXN1bHQgbGVmdCBieSAxLiBBZGQgdGhlIDMyIGJpdCAgICB8DQorIHwgICByZXN1bHQgdG8gTF92YXIzIHdpdGggc2F0dXJhdGlvbiwgcmV0dXJuIGEgMzIgYml0IHJlc3VsdDogICAgICAgICAgICAgICB8DQorIHwgICAgICAgIExfbWFjKExfdmFyMyx2YXIxLHZhcjIpID0gTF9hZGQoTF92YXIzLExfbXVsdCh2YXIxLHZhcjIpKS4gICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBDb21wbGV4aXR5IHdlaWdodCA6IDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBJbnB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgTF92YXIzICAgMzIgYml0IGxvbmcgc2lnbmVkIGludGVnZXIgKFdvcmQzMikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlICB8DQorIHwgICAgICAgICAgICAgcmFuZ2UgOiAweDgwMDAgMDAwMCA8PSBMX3ZhcjMgPD0gMHg3ZmZmIGZmZmYuICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgdmFyMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorIHwgICAgICAgICAgICAgcmFuZ2UgOiAweGZmZmYgODAwMCA8PSB2YXIxIDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgdmFyMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorIHwgICAgICAgICAgICAgcmFuZ2UgOiAweGZmZmYgODAwMCA8PSB2YXIxIDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBPdXRwdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgbm9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBSZXR1cm4gVmFsdWUgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgTF92YXJfb3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgMzIgYml0IGxvbmcgc2lnbmVkIGludGVnZXIgKFdvcmQzMikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlICB8DQorIHwgICAgICAgICAgICAgcmFuZ2UgOiAweDgwMDAgMDAwMCA8PSBMX3Zhcl9vdXQgPD0gMHg3ZmZmIGZmZmYuICAgICAgICAgICAgICB8DQorIHxfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX198DQorKi8NCisjaWYgKCFMX01TVV9JU19JTkxJTkUpDQorV29yZDMyIExfbWFjIChXb3JkMzIgTF92YXIzLCBXb3JkMTYgdmFyMSwgV29yZDE2IHZhcjIpDQorew0KKyAgICBXb3JkMzIgTF92YXJfb3V0Ow0KKyAgICBXb3JkMzIgTF9wcm9kdWN0Ow0KKw0KKyAgICBMX3Byb2R1Y3QgPSBMX211bHQodmFyMSwgdmFyMik7DQorICAgIExfdmFyX291dCA9IExfYWRkIChMX3ZhcjMsIExfcHJvZHVjdCk7DQorDQorICAgIHJldHVybiAoTF92YXJfb3V0KTsNCit9DQorI2VuZGlmDQorDQorLypfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIEZ1bmN0aW9uIE5hbWUgOiBMX21zdSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFB1cnBvc2UgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIE11bHRpcGx5IHZhcjEgYnkgdmFyMiBhbmQgc2hpZnQgdGhlIHJlc3VsdCBsZWZ0IGJ5IDEuIFN1YnRyYWN0IHRoZSAzMiAgIHwNCisgfCAgIGJpdCByZXN1bHQgdG8gTF92YXIzIHdpdGggc2F0dXJhdGlvbiwgcmV0dXJuIGEgMzIgYml0IHJlc3VsdDogICAgICAgICAgIHwNCisgfCAgICAgICAgTF9tc3UoTF92YXIzLHZhcjEsdmFyMikgPSBMX3N1YihMX3ZhcjMsTF9tdWx0KHZhcjEsdmFyMikpLiAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIENvbXBsZXhpdHkgd2VpZ2h0IDogMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIElucHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBMX3ZhcjMgICAzMiBiaXQgbG9uZyBzaWduZWQgaW50ZWdlciAoV29yZDMyKSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ODAwMCAwMDAwIDw9IExfdmFyMyA8PSAweDdmZmYgZmZmZi4gICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICB2YXIxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcjEgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICB2YXIyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcjEgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIE91dHB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBub25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFJldHVybiBWYWx1ZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBMX3Zhcl9vdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAzMiBiaXQgbG9uZyBzaWduZWQgaW50ZWdlciAoV29yZDMyKSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ODAwMCAwMDAwIDw9IExfdmFyX291dCA8PSAweDdmZmYgZmZmZi4gICAgICAgICAgICAgIHwNCisgfF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX3wNCisqLw0KKw0KKyNpZiAoIUxfTVNVX0lTX0lOTElORSkNCitXb3JkMzIgTF9tc3UgKFdvcmQzMiBMX3ZhcjMsIFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMikNCit7DQorICAgIFdvcmQzMiBMX3Zhcl9vdXQ7DQorICAgIFdvcmQzMiBMX3Byb2R1Y3Q7DQorDQorICAgIExfcHJvZHVjdCA9IExfbXVsdCh2YXIxLCB2YXIyKTsNCisgICAgTF92YXJfb3V0ID0gTF9zdWIgKExfdmFyMywgTF9wcm9kdWN0KTsNCisNCisgICAgcmV0dXJuIChMX3Zhcl9vdXQpOw0KK30NCisjZW5kaWYNCisNCisNCisvKl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgRnVuY3Rpb24gTmFtZSA6IExfYWRkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUHVycG9zZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgMzIgYml0cyBhZGRpdGlvbiBvZiB0aGUgdHdvIDMyIGJpdHMgdmFyaWFibGVzIChMX3ZhcjErTF92YXIyKSB3aXRoICAgICAgfA0KKyB8ICAgb3ZlcmZsb3cgY29udHJvbCBhbmQgc2F0dXJhdGlvbjsgdGhlIHJlc3VsdCBpcyBzZXQgYXQgKzIxNDc0ODM2NDcgd2hlbiAgfA0KKyB8ICAgb3ZlcmZsb3cgb2NjdXJzIG9yIGF0IC0yMTQ3NDgzNjQ4IHdoZW4gdW5kZXJmbG93IG9jY3Vycy4gICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgQ29tcGxleGl0eSB3ZWlnaHQgOiAyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgSW5wdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIExfdmFyMSAgIDMyIGJpdCBsb25nIHNpZ25lZCBpbnRlZ2VyIChXb3JkMzIpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSAgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHg4MDAwIDAwMDAgPD0gTF92YXIzIDw9IDB4N2ZmZiBmZmZmLiAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIExfdmFyMiAgIDMyIGJpdCBsb25nIHNpZ25lZCBpbnRlZ2VyIChXb3JkMzIpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSAgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHg4MDAwIDAwMDAgPD0gTF92YXIzIDw9IDB4N2ZmZiBmZmZmLiAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgT3V0cHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIG5vbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUmV0dXJuIFZhbHVlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIExfdmFyX291dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDMyIGJpdCBsb25nIHNpZ25lZCBpbnRlZ2VyIChXb3JkMzIpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSAgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHg4MDAwIDAwMDAgPD0gTF92YXJfb3V0IDw9IDB4N2ZmZiBmZmZmLiAgICAgICAgICAgICAgfA0KKyB8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffA0KKyovDQorI2lmICghTF9BRERfSVNfSU5MSU5FKQ0KK1dvcmQzMiBMX2FkZCAoV29yZDMyIExfdmFyMSwgV29yZDMyIExfdmFyMikNCit7DQorICAgIFdvcmQzMiBMX3Zhcl9vdXQ7DQorDQorICAgIExfdmFyX291dCA9IExfdmFyMSArIExfdmFyMjsNCisNCisgICAgaWYgKCgoTF92YXIxIF4gTF92YXIyKSAmIE1JTl8zMikgPT0gMCkNCisgICAgew0KKyAgICAgICAgaWYgKChMX3Zhcl9vdXQgXiBMX3ZhcjEpICYgTUlOXzMyKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIExfdmFyX291dCA9IChMX3ZhcjEgPCAwKSA/IE1JTl8zMiA6IE1BWF8zMjsNCisgICAgICAgICAgICAvL092ZXJmbG93ID0gMTsNCisgICAgICAgIH0NCisgICAgfQ0KKw0KKyAgICByZXR1cm4gKExfdmFyX291dCk7DQorfQ0KKyNlbmRpZg0KKw0KKy8qX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBGdW5jdGlvbiBOYW1lIDogTF9zdWIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBQdXJwb3NlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAzMiBiaXRzIHN1YnRyYWN0aW9uIG9mIHRoZSB0d28gMzIgYml0cyB2YXJpYWJsZXMgKExfdmFyMS1MX3ZhcjIpIHdpdGggICB8DQorIHwgICBvdmVyZmxvdyBjb250cm9sIGFuZCBzYXR1cmF0aW9uOyB0aGUgcmVzdWx0IGlzIHNldCBhdCArMjE0NzQ4MzY0NyB3aGVuICB8DQorIHwgICBvdmVyZmxvdyBvY2N1cnMgb3IgYXQgLTIxNDc0ODM2NDggd2hlbiB1bmRlcmZsb3cgb2NjdXJzLiAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBDb21wbGV4aXR5IHdlaWdodCA6IDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBJbnB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgTF92YXIxICAgMzIgYml0IGxvbmcgc2lnbmVkIGludGVnZXIgKFdvcmQzMikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlICB8DQorIHwgICAgICAgICAgICAgcmFuZ2UgOiAweDgwMDAgMDAwMCA8PSBMX3ZhcjMgPD0gMHg3ZmZmIGZmZmYuICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgTF92YXIyICAgMzIgYml0IGxvbmcgc2lnbmVkIGludGVnZXIgKFdvcmQzMikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlICB8DQorIHwgICAgICAgICAgICAgcmFuZ2UgOiAweDgwMDAgMDAwMCA8PSBMX3ZhcjMgPD0gMHg3ZmZmIGZmZmYuICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBPdXRwdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgbm9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBSZXR1cm4gVmFsdWUgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgTF92YXJfb3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgMzIgYml0IGxvbmcgc2lnbmVkIGludGVnZXIgKFdvcmQzMikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlICB8DQorIHwgICAgICAgICAgICAgcmFuZ2UgOiAweDgwMDAgMDAwMCA8PSBMX3Zhcl9vdXQgPD0gMHg3ZmZmIGZmZmYuICAgICAgICAgICAgICB8DQorIHxfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX198DQorKi8NCisjaWYgKCFMX1NVQl9JU19JTkxJTkUpDQorV29yZDMyIExfc3ViKFdvcmQzMiBMX3ZhcjEsIFdvcmQzMiBMX3ZhcjIpDQorew0KKyAgICBXb3JkMzIgTF92YXJfb3V0Ow0KKw0KKyAgICBMX3Zhcl9vdXQgPSBMX3ZhcjEgLSBMX3ZhcjI7DQorDQorICAgIGlmICgoKExfdmFyMSBeIExfdmFyMikgJiBNSU5fMzIpICE9IDApDQorICAgIHsNCisgICAgICAgIGlmICgoTF92YXJfb3V0IF4gTF92YXIxKSAmIE1JTl8zMikNCisgICAgICAgIHsNCisgICAgICAgICAgICBMX3Zhcl9vdXQgPSAoTF92YXIxIDwgMEwpID8gTUlOXzMyIDogTUFYXzMyOw0KKyAgICAgICAgICAgIC8vT3ZlcmZsb3cgPSAxOw0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIHJldHVybiAoTF92YXJfb3V0KTsNCit9DQorI2VuZGlmDQorDQorDQorLypfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIEZ1bmN0aW9uIE5hbWUgOiBMX25lZ2F0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFB1cnBvc2UgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIE5lZ2F0ZSB0aGUgMzIgYml0IHZhcmlhYmxlIExfdmFyMSB3aXRoIHNhdHVyYXRpb247IHNhdHVyYXRlIGluIHRoZSBjYXNlIHwNCisgfCAgIHdoZXJlIGlucHV0IGlzIC0yMTQ3NDgzNjQ4ICgweDgwMDAgMDAwMCkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIENvbXBsZXhpdHkgd2VpZ2h0IDogMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIElucHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBMX3ZhcjEgICAzMiBiaXQgbG9uZyBzaWduZWQgaW50ZWdlciAoV29yZDMyKSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ODAwMCAwMDAwIDw9IExfdmFyMyA8PSAweDdmZmYgZmZmZi4gICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIE91dHB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBub25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFJldHVybiBWYWx1ZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBMX3Zhcl9vdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAzMiBiaXQgbG9uZyBzaWduZWQgaW50ZWdlciAoV29yZDMyKSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ODAwMCAwMDAwIDw9IExfdmFyX291dCA8PSAweDdmZmYgZmZmZi4gICAgICAgICAgICAgIHwNCisgfF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX3wNCisqLw0KKy8vV29yZDMyIExfbmVnYXRlIChXb3JkMzIgTF92YXIxKQ0KKy8vew0KKy8vICAgIFdvcmQzMiBMX3Zhcl9vdXQ7DQorLy8NCisvLyAgICBMX3Zhcl9vdXQgPSAoTF92YXIxID09IE1JTl8zMikgPyBNQVhfMzIgOiAtTF92YXIxOw0KKy8vDQorLy8gICAgcmV0dXJuIChMX3Zhcl9vdXQpOw0KKy8vfQ0KKw0KKw0KKy8qX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBGdW5jdGlvbiBOYW1lIDogbXVsdF9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBQdXJwb3NlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBTYW1lIGFzIG11bHQgd2l0aCByb3VuZGluZywgaS5lLjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgIG11bHRfcih2YXIxLHZhcjIpID0gZXh0cmFjdF9sKExfc2hyKCgodmFyMSAqIHZhcjIpICsgMTYzODQpLDE1KSkgYW5kICB8DQorIHwgICAgIG11bHRfcigtMzI3NjgsLTMyNzY4KSA9IDMyNzY3LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBDb21wbGV4aXR5IHdlaWdodCA6IDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBJbnB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgdmFyMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorIHwgICAgICAgICAgICAgcmFuZ2UgOiAweGZmZmYgODAwMCA8PSB2YXIxIDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgdmFyMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorIHwgICAgICAgICAgICAgcmFuZ2UgOiAweGZmZmYgODAwMCA8PSB2YXIxIDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBPdXRwdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgbm9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBSZXR1cm4gVmFsdWUgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgdmFyX291dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorIHwgICAgICAgICAgICAgcmFuZ2UgOiAweGZmZmYgODAwMCA8PSB2YXJfb3V0IDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICB8DQorIHxfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX198DQorKi8NCisjaWYgKCFNVUxUX1JfSVNfSU5MSU5FKQ0KK1dvcmQxNiBtdWx0X3IgKFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMikNCit7DQorICAgIFdvcmQxNiB2YXJfb3V0Ow0KKyAgICBXb3JkMzIgTF9wcm9kdWN0X2FycjsNCisNCisgICAgTF9wcm9kdWN0X2FyciA9IChXb3JkMzIpIHZhcjEgKihXb3JkMzIpIHZhcjI7ICAgICAgIC8qIHByb2R1Y3QgKi8NCisgICAgTF9wcm9kdWN0X2FyciArPSAoV29yZDMyKSAweDAwMDA0MDAwTDsgICAgICAvKiByb3VuZCAqLw0KKyAgICBMX3Byb2R1Y3RfYXJyICY9IChXb3JkMzIpIDB4ZmZmZjgwMDBMOw0KKyAgICBMX3Byb2R1Y3RfYXJyID4+PSAxNTsgICAgICAgLyogc2hpZnQgKi8NCisNCisgICAgaWYgKExfcHJvZHVjdF9hcnIgJiAoV29yZDMyKSAweDAwMDEwMDAwTCkgICAvKiBzaWduIGV4dGVuZCB3aGVuIG5lY2Vzc2FyeSAqLw0KKyAgICB7DQorICAgICAgICBMX3Byb2R1Y3RfYXJyIHw9IChXb3JkMzIpIDB4ZmZmZjAwMDBMOw0KKyAgICB9DQorICAgIHZhcl9vdXQgPSBzYXR1cmF0ZShMX3Byb2R1Y3RfYXJyKTsNCisNCisgICAgcmV0dXJuICh2YXJfb3V0KTsNCit9DQorI2VuZGlmDQorDQorLypfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIEZ1bmN0aW9uIE5hbWUgOiBMX3NobCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFB1cnBvc2UgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIEFyaXRobWV0aWNhbGx5IHNoaWZ0IHRoZSAzMiBiaXQgaW5wdXQgTF92YXIxIGxlZnQgdmFyMiBwb3NpdGlvbnMuIFplcm8gIHwNCisgfCAgIGZpbGwgdGhlIHZhcjIgTFNCIG9mIHRoZSByZXN1bHQuIElmIHZhcjIgaXMgbmVnYXRpdmUsIGFyaXRobWV0aWNhbGx5ICAgIHwNCisgfCAgIHNoaWZ0IExfdmFyMSByaWdodCBieSAtdmFyMiB3aXRoIHNpZ24gZXh0ZW5zaW9uLiBTYXR1cmF0ZSB0aGUgcmVzdWx0IGluIHwNCisgfCAgIGNhc2Ugb2YgdW5kZXJmbG93cyBvciBvdmVyZmxvd3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIENvbXBsZXhpdHkgd2VpZ2h0IDogMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIElucHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBMX3ZhcjEgICAzMiBiaXQgbG9uZyBzaWduZWQgaW50ZWdlciAoV29yZDMyKSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ODAwMCAwMDAwIDw9IExfdmFyMyA8PSAweDdmZmYgZmZmZi4gICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICB2YXIyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcjEgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIE91dHB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBub25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFJldHVybiBWYWx1ZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBMX3Zhcl9vdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAzMiBiaXQgbG9uZyBzaWduZWQgaW50ZWdlciAoV29yZDMyKSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ODAwMCAwMDAwIDw9IExfdmFyX291dCA8PSAweDdmZmYgZmZmZi4gICAgICAgICAgICAgIHwNCisgfF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX3wNCisqLw0KKw0KKyNpZiAoIUxfU0hMX0lTX0lOTElORSkNCitXb3JkMzIgTF9zaGwgKFdvcmQzMiBMX3ZhcjEsIFdvcmQxNiB2YXIyKQ0KK3sNCisgICAgV29yZDMyIExfdmFyX291dCA9IDBMOw0KKw0KKyAgICBpZiAodmFyMiA8PSAwKQ0KKyAgICB7DQorICAgICAgICBMX3ZhcjEgPSBMX3NocihMX3ZhcjEsIChXb3JkMTYpLXZhcjIpOw0KKyAgICB9DQorICAgIGVsc2UNCisgICAgew0KKyAgICAgICAgZm9yICg7IHZhcjIgPiAwOyB2YXIyLS0pDQorICAgICAgICB7DQorICAgICAgICAgICAgaWYgKExfdmFyMSA+IChXb3JkMzIpIDBYM2ZmZmZmZmZMKQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIE1BWF8zMjsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgZWxzZQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgaWYgKExfdmFyMSA8IChXb3JkMzIpIDB4YzAwMDAwMDBMKQ0KKyAgICAgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTUlOXzMyOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIExfdmFyMSA8PD0gMTsNCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gKExfdmFyMSk7DQorfQ0KKyNlbmRpZg0KKw0KKy8qX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBGdW5jdGlvbiBOYW1lIDogTF9zaHIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBQdXJwb3NlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBBcml0aG1ldGljYWxseSBzaGlmdCB0aGUgMzIgYml0IGlucHV0IExfdmFyMSByaWdodCB2YXIyIHBvc2l0aW9ucyB3aXRoICB8DQorIHwgICBzaWduIGV4dGVuc2lvbi4gSWYgdmFyMiBpcyBuZWdhdGl2ZSwgYXJpdGhtZXRpY2FsbHkgc2hpZnQgTF92YXIxIGxlZnQgICB8DQorIHwgICBieSAtdmFyMiBhbmQgemVybyBmaWxsIHRoZSAtdmFyMiBMU0Igb2YgdGhlIHJlc3VsdC4gU2F0dXJhdGUgdGhlIHJlc3VsdCB8DQorIHwgICBpbiBjYXNlIG9mIHVuZGVyZmxvd3Mgb3Igb3ZlcmZsb3dzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBDb21wbGV4aXR5IHdlaWdodCA6IDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBJbnB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgTF92YXIxICAgMzIgYml0IGxvbmcgc2lnbmVkIGludGVnZXIgKFdvcmQzMikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlICB8DQorIHwgICAgICAgICAgICAgcmFuZ2UgOiAweDgwMDAgMDAwMCA8PSBMX3ZhcjMgPD0gMHg3ZmZmIGZmZmYuICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgdmFyMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorIHwgICAgICAgICAgICAgcmFuZ2UgOiAweGZmZmYgODAwMCA8PSB2YXIxIDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBPdXRwdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgbm9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBSZXR1cm4gVmFsdWUgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgTF92YXJfb3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgMzIgYml0IGxvbmcgc2lnbmVkIGludGVnZXIgKFdvcmQzMikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlICB8DQorIHwgICAgICAgICAgICAgcmFuZ2UgOiAweDgwMDAgMDAwMCA8PSBMX3Zhcl9vdXQgPD0gMHg3ZmZmIGZmZmYuICAgICAgICAgICAgICB8DQorIHxfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX198DQorKi8NCisNCisjaWYgKCFMX1NIUl9JU19JTkxJTkUpDQorV29yZDMyIExfc2hyIChXb3JkMzIgTF92YXIxLCBXb3JkMTYgdmFyMikNCit7DQorICAgIFdvcmQzMiBMX3Zhcl9vdXQ7DQorDQorICAgIGlmICh2YXIyIDwgMCkNCisgICAgew0KKyAgICAgICAgTF92YXJfb3V0ID0gTF9zaGwgKExfdmFyMSwgKFdvcmQxNiktdmFyMik7DQorICAgIH0NCisgICAgZWxzZQ0KKyAgICB7DQorICAgICAgICBpZiAodmFyMiA+PSAzMSkNCisgICAgICAgIHsNCisgICAgICAgICAgICBMX3Zhcl9vdXQgPSAoTF92YXIxIDwgMEwpID8gLTEgOiAwOw0KKyAgICAgICAgfQ0KKyAgICAgICAgZWxzZQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIGlmIChMX3ZhcjEgPCAwKQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgTF92YXJfb3V0ID0gfigofkxfdmFyMSkgPj4gdmFyMik7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGVsc2UNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgIExfdmFyX291dCA9IExfdmFyMSA+PiB2YXIyOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKyAgICByZXR1cm4gKExfdmFyX291dCk7DQorfQ0KKyNlbmRpZg0KKw0KKy8qX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBGdW5jdGlvbiBOYW1lIDogc2hyX3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBQdXJwb3NlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBTYW1lIGFzIHNocih2YXIxLHZhcjIpIGJ1dCB3aXRoIHJvdW5kaW5nLiBTYXR1cmF0ZSB0aGUgcmVzdWx0IGluIGNhc2Ugb2Z8DQorIHwgICB1bmRlcmZsb3dzIG9yIG92ZXJmbG93cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgLSBJZiB2YXIyIGlzIGdyZWF0ZXIgdGhhbiB6ZXJvIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgaWYgKHN1YihzaGwoc2hyKHZhcjEsdmFyMiksMSksc2hyKHZhcjEsc3ViKHZhcjIsMSkpKSkgICAgICAgICAgICB8DQorIHwgICAgICAgICAgaXMgZXF1YWwgdG8gemVybyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICB0aGVuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICBzaHJfcih2YXIxLHZhcjIpID0gc2hyKHZhcjEsdmFyMikgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICBzaHJfcih2YXIxLHZhcjIpID0gYWRkKHNocih2YXIxLHZhcjIpLDEpICAgICAgICAgICAgICB8DQorIHwgICAgLSBJZiB2YXIyIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB6ZXJvIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICBzaHJfcih2YXIxLHZhcjIpID0gc2hyKHZhcjEsdmFyMikuICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBDb21wbGV4aXR5IHdlaWdodCA6IDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBJbnB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgdmFyMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorIHwgICAgICAgICAgICAgcmFuZ2UgOiAweGZmZmYgODAwMCA8PSB2YXIxIDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgdmFyMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorIHwgICAgICAgICAgICAgcmFuZ2UgOiAweGZmZmYgODAwMCA8PSB2YXIxIDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBPdXRwdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgbm9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBSZXR1cm4gVmFsdWUgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgdmFyX291dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorIHwgICAgICAgICAgICAgcmFuZ2UgOiAweGZmZmYgODAwMCA8PSB2YXJfb3V0IDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICB8DQorIHxfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX198DQorKi8NCisjaWYgKCFTSFJfUl9JU19JTkxJTkUpDQorV29yZDE2IHNocl9yIChXb3JkMTYgdmFyMSwgV29yZDE2IHZhcjIpDQorew0KKyAgICBXb3JkMTYgdmFyX291dDsNCisNCisgICAgaWYgKHZhcjIgPiAxNSkNCisgICAgew0KKyAgICAgICAgdmFyX291dCA9IDA7DQorICAgIH0NCisgICAgZWxzZQ0KKyAgICB7DQorICAgICAgICB2YXJfb3V0ID0gc2hyICh2YXIxLCB2YXIyKTsNCisNCisgICAgICAgIGlmICh2YXIyID4gMCkNCisgICAgICAgIHsNCisgICAgICAgICAgICBpZiAoKHZhcjEgJiAoKFdvcmQxNikgMSA8PCAodmFyMiAtIDEpKSkgIT0gMCkNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgIHZhcl9vdXQrKzsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisNCisgICAgcmV0dXJuICh2YXJfb3V0KTsNCit9DQorI2VuZGlmDQorDQorLypfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIEZ1bmN0aW9uIE5hbWUgOiBtYWNfciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFB1cnBvc2UgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIE11bHRpcGx5IHZhcjEgYnkgdmFyMiBhbmQgc2hpZnQgdGhlIHJlc3VsdCBsZWZ0IGJ5IDEuIEFkZCB0aGUgMzIgYml0ICAgIHwNCisgfCAgIHJlc3VsdCB0byBMX3ZhcjMgd2l0aCBzYXR1cmF0aW9uLiBSb3VuZCB0aGUgTFMgMTYgYml0cyBvZiB0aGUgcmVzdWx0ICAgIHwNCisgfCAgIGludG8gdGhlIE1TIDE2IGJpdHMgd2l0aCBzYXR1cmF0aW9uIGFuZCBzaGlmdCB0aGUgcmVzdWx0IHJpZ2h0IGJ5IDE2LiAgIHwNCisgfCAgIFJldHVybiBhIDE2IGJpdCByZXN1bHQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgIG1hY19yKExfdmFyMyx2YXIxLHZhcjIpID0gcm91bmQoTF9tYWMoTF92YXIzLHZhcjEsdmFyMikpICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIENvbXBsZXhpdHkgd2VpZ2h0IDogMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIElucHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBMX3ZhcjMgICAzMiBiaXQgbG9uZyBzaWduZWQgaW50ZWdlciAoV29yZDMyKSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ODAwMCAwMDAwIDw9IExfdmFyMyA8PSAweDdmZmYgZmZmZi4gICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICB2YXIxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcjEgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICB2YXIyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcjEgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIE91dHB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBub25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFJldHVybiBWYWx1ZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICB2YXJfb3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4MDAwMCA4MDAwIDw9IExfdmFyX291dCA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgIHwNCisgfF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX3wNCisqLw0KKyNpZiAoIU1BQ19SX0lTX0lOTElORSkNCitXb3JkMTYgbWFjX3IgKFdvcmQzMiBMX3ZhcjMsIFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMikNCit7DQorICAgIFdvcmQxNiB2YXJfb3V0Ow0KKw0KKyAgICBMX3ZhcjMgPSBMX21hYyAoTF92YXIzLCB2YXIxLCB2YXIyKTsNCisgICAgTF92YXIzID0gTF9hZGQgKExfdmFyMywgKFdvcmQzMikgMHgwMDAwODAwMEwpOw0KKyAgICB2YXJfb3V0ID0gZXh0cmFjdF9oIChMX3ZhcjMpOw0KKw0KKyAgICByZXR1cm4gKHZhcl9vdXQpOw0KK30NCisjZW5kaWYNCisNCisvKl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgRnVuY3Rpb24gTmFtZSA6IG1zdV9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUHVycG9zZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgTXVsdGlwbHkgdmFyMSBieSB2YXIyIGFuZCBzaGlmdCB0aGUgcmVzdWx0IGxlZnQgYnkgMS4gU3VidHJhY3QgdGhlIDMyICAgfA0KKyB8ICAgYml0IHJlc3VsdCB0byBMX3ZhcjMgd2l0aCBzYXR1cmF0aW9uLiBSb3VuZCB0aGUgTFMgMTYgYml0cyBvZiB0aGUgcmVzLSAgfA0KKyB8ICAgdWx0IGludG8gdGhlIE1TIDE2IGJpdHMgd2l0aCBzYXR1cmF0aW9uIGFuZCBzaGlmdCB0aGUgcmVzdWx0IHJpZ2h0IGJ5ICAgfA0KKyB8ICAgMTYuIFJldHVybiBhIDE2IGJpdCByZXN1bHQuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgbXN1X3IoTF92YXIzLHZhcjEsdmFyMikgPSByb3VuZChMX21zdShMX3ZhcjMsdmFyMSx2YXIyKSkgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgQ29tcGxleGl0eSB3ZWlnaHQgOiAyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgSW5wdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIExfdmFyMyAgIDMyIGJpdCBsb25nIHNpZ25lZCBpbnRlZ2VyIChXb3JkMzIpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSAgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHg4MDAwIDAwMDAgPD0gTF92YXIzIDw9IDB4N2ZmZiBmZmZmLiAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIHZhcjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyMSA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIHZhcjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyMSA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgT3V0cHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIG5vbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUmV0dXJuIFZhbHVlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIHZhcl9vdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHgwMDAwIDgwMDAgPD0gTF92YXJfb3V0IDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgfA0KKyB8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffA0KKyovDQorI2lmICghTVNVX1JfSVNfSU5MSU5FKQ0KK1dvcmQxNiBtc3VfciAoV29yZDMyIExfdmFyMywgV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKQ0KK3sNCisgICAgV29yZDE2IHZhcl9vdXQ7DQorDQorICAgIExfdmFyMyA9IExfbXN1IChMX3ZhcjMsIHZhcjEsIHZhcjIpOw0KKyAgICBMX3ZhcjMgPSBMX2FkZCAoTF92YXIzLCAoV29yZDMyKSAweDAwMDA4MDAwTCk7DQorICAgIHZhcl9vdXQgPSBleHRyYWN0X2ggKExfdmFyMyk7DQorDQorICAgIHJldHVybiAodmFyX291dCk7DQorfQ0KKyNlbmRpZg0KKw0KKy8qX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBGdW5jdGlvbiBOYW1lIDogTF9kZXBvc2l0X2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBQdXJwb3NlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBEZXBvc2l0IHRoZSAxNiBiaXQgdmFyMSBpbnRvIHRoZSAxNiBNUyBiaXRzIG9mIHRoZSAzMiBiaXQgb3V0cHV0LiBUaGUgICB8DQorIHwgICAxNiBMUyBiaXRzIG9mIHRoZSBvdXRwdXQgYXJlIHplcm9lZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBDb21wbGV4aXR5IHdlaWdodCA6IDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBJbnB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgdmFyMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorIHwgICAgICAgICAgICAgcmFuZ2UgOiAweGZmZmYgODAwMCA8PSB2YXIxIDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBPdXRwdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgbm9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICBSZXR1cm4gVmFsdWUgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgTF92YXJfb3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgICAgICAgICAgICAgMzIgYml0IGxvbmcgc2lnbmVkIGludGVnZXIgKFdvcmQzMikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlICB8DQorIHwgICAgICAgICAgICAgcmFuZ2UgOiAweDgwMDAgMDAwMCA8PSB2YXJfb3V0IDw9IDB4N2ZmZiAwMDAwLiAgICAgICAgICAgICAgICB8DQorIHxfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX198DQorKi8NCisvL1dvcmQzMiBMX2RlcG9zaXRfaCAoV29yZDE2IHZhcjEpDQorLy97DQorLy8gICAgV29yZDMyIExfdmFyX291dDsNCisvLw0KKy8vICAgIExfdmFyX291dCA9IChXb3JkMzIpIHZhcjEgPDwgMTY7DQorLy8NCisvLyAgICByZXR1cm4gKExfdmFyX291dCk7DQorLy99DQorDQorDQorLypfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIEZ1bmN0aW9uIE5hbWUgOiBMX2RlcG9zaXRfbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFB1cnBvc2UgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIERlcG9zaXQgdGhlIDE2IGJpdCB2YXIxIGludG8gdGhlIDE2IExTIGJpdHMgb2YgdGhlIDMyIGJpdCBvdXRwdXQuIFRoZSAgIHwNCisgfCAgIDE2IE1TIGJpdHMgb2YgdGhlIG91dHB1dCBhcmUgc2lnbiBleHRlbmRlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIENvbXBsZXhpdHkgd2VpZ2h0IDogMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIElucHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICB2YXIxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcjEgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIE91dHB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBub25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFJldHVybiBWYWx1ZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBMX3Zhcl9vdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAzMiBiaXQgbG9uZyBzaWduZWQgaW50ZWdlciAoV29yZDMyKSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4RkZGRiA4MDAwIDw9IHZhcl9vdXQgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgIHwNCisgfF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX3wNCisqLw0KKy8vV29yZDMyIExfZGVwb3NpdF9sIChXb3JkMTYgdmFyMSkNCisvL3sNCisvLyAgICBXb3JkMzIgTF92YXJfb3V0Ow0KKy8vDQorLy8gICAgTF92YXJfb3V0ID0gKFdvcmQzMikgdmFyMTsNCisvLw0KKy8vICAgIHJldHVybiAoTF92YXJfb3V0KTsNCisvL30NCisNCisNCisvKl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgRnVuY3Rpb24gTmFtZSA6IExfc2hyX3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUHVycG9zZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgU2FtZSBhcyBMX3NocihMX3ZhcjEsdmFyMikgYnV0IHdpdGggcm91bmRpbmcuIFNhdHVyYXRlIHRoZSByZXN1bHQgaW4gICAgfA0KKyB8ICAgY2FzZSBvZiB1bmRlcmZsb3dzIG9yIG92ZXJmbG93cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIC0gSWYgdmFyMiBpcyBncmVhdGVyIHRoYW4gemVybyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgIGlmIChMX3N1YihMX3NobChMX3NocihMX3ZhcjEsdmFyMiksMSksTF9zaHIoTF92YXIxLHN1Yih2YXIyLDEpKSkpfA0KKyB8ICAgICAgICAgIGlzIGVxdWFsIHRvIHplcm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgdGhlbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgTF9zaHJfcihMX3ZhcjEsdmFyMikgPSBMX3NocihMX3ZhcjEsdmFyMikgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgTF9zaHJfcihMX3ZhcjEsdmFyMikgPSBMX2FkZChMX3NocihMX3ZhcjEsdmFyMiksMSkgICAgfA0KKyB8ICAgIC0gSWYgdmFyMiBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gemVybyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgTF9zaHJfcihMX3ZhcjEsdmFyMikgPSBMX3NocihMX3ZhcjEsdmFyMikuICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgQ29tcGxleGl0eSB3ZWlnaHQgOiAzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgSW5wdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIExfdmFyMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDMyIGJpdCBsb25nIHNpZ25lZCBpbnRlZ2VyIChXb3JkMzIpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSAgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHg4MDAwIDAwMDAgPD0gdmFyMSA8PSAweDdmZmYgZmZmZi4gICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIHZhcjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyMSA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgT3V0cHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIG5vbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUmV0dXJuIFZhbHVlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIExfdmFyX291dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDMyIGJpdCBsb25nIHNpZ25lZCBpbnRlZ2VyIChXb3JkMzIpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSAgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHg4MDAwIDAwMDAgPD0gdmFyX291dCA8PSAweDdmZmYgZmZmZi4gICAgICAgICAgICAgICAgfA0KKyB8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffA0KKyovDQorI2lmICghTF9TSFJfUl9JU19JTkxJTkUpDQorV29yZDMyIExfc2hyX3IgKFdvcmQzMiBMX3ZhcjEsIFdvcmQxNiB2YXIyKQ0KK3sNCisgICAgV29yZDMyIExfdmFyX291dDsNCisNCisgICAgaWYgKHZhcjIgPiAzMSkNCisgICAgew0KKyAgICAgICAgTF92YXJfb3V0ID0gMDsNCisgICAgfQ0KKyAgICBlbHNlDQorICAgIHsNCisgICAgICAgIExfdmFyX291dCA9IExfc2hyIChMX3ZhcjEsIHZhcjIpOw0KKw0KKyAgICAgICAgaWYgKHZhcjIgPiAwKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIGlmICgoTF92YXIxICYgKChXb3JkMzIpIDEgPDwgKHZhcjIgLSAxKSkpICE9IDApDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICBMX3Zhcl9vdXQrKzsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisNCisgICAgcmV0dXJuIChMX3Zhcl9vdXQpOw0KK30NCisjZW5kaWYNCisNCisvKl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgRnVuY3Rpb24gTmFtZSA6IExfYWJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUHVycG9zZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIEFic29sdXRlIHZhbHVlIG9mIExfdmFyMTsgU2F0dXJhdGUgaW4gY2FzZSB3aGVyZSB0aGUgaW5wdXQgaXMgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTIxNDc4MzY0OCAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgQ29tcGxleGl0eSB3ZWlnaHQgOiAzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgSW5wdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIExfdmFyMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDMyIGJpdCBsb25nIHNpZ25lZCBpbnRlZ2VyIChXb3JkMzIpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSAgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHg4MDAwIDAwMDAgPD0gdmFyMSA8PSAweDdmZmYgZmZmZi4gICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgT3V0cHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIG5vbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUmV0dXJuIFZhbHVlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIExfdmFyX291dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDMyIGJpdCBsb25nIHNpZ25lZCBpbnRlZ2VyIChXb3JkMzIpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSAgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHgwMDAwIDAwMDAgPD0gdmFyX291dCA8PSAweDdmZmYgZmZmZi4gICAgICAgICAgICAgICAgfA0KKyB8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffA0KKyovDQorLy9Xb3JkMzIgTF9hYnMgKFdvcmQzMiBMX3ZhcjEpDQorLy97DQorLy8gICAgV29yZDMyIExfdmFyX291dDsNCisvLw0KKy8vICAgIGlmIChMX3ZhcjEgPT0gTUlOXzMyKQ0KKy8vICAgIHsNCisvLyAgICAgICAgTF92YXJfb3V0ID0gTUFYXzMyOw0KKy8vICAgIH0NCisvLyAgICBlbHNlDQorLy8gICAgew0KKy8vICAgICAgICBpZiAoTF92YXIxIDwgMCkNCisvLyAgICAgICAgew0KKy8vICAgICAgICAgICAgTF92YXJfb3V0ID0gLUxfdmFyMTsNCisvLyAgICAgICAgfQ0KKy8vICAgICAgICBlbHNlDQorLy8gICAgICAgIHsNCisvLyAgICAgICAgICAgIExfdmFyX291dCA9IExfdmFyMTsNCisvLyAgICAgICAgfQ0KKy8vICAgIH0NCisvLw0KKy8vICAgIHJldHVybiAoTF92YXJfb3V0KTsNCisvL30NCisNCisvKl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgRnVuY3Rpb24gTmFtZSA6IG5vcm1fcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUHVycG9zZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUHJvZHVjZXMgdGhlIG51bWJlciBvZiBsZWZ0IHNoaWZ0IG5lZWRlZCB0byBub3JtYWxpemUgdGhlIDE2IGJpdCB2YXJpYS0gfA0KKyB8ICAgYmxlIHZhcjEgZm9yIHBvc2l0aXZlIHZhbHVlcyBvbiB0aGUgaW50ZXJ2YWwgd2l0aCBtaW5pbXVtIG9mIDE2Mzg0IGFuZCAgfA0KKyB8ICAgbWF4aW11bSBvZiAzMjc2NywgYW5kIGZvciBuZWdhdGl2ZSB2YWx1ZXMgb24gdGhlIGludGVydmFsIHdpdGggbWluaW11bSAgfA0KKyB8ICAgb2YgLTMyNzY4IGFuZCBtYXhpbXVtIG9mIC0xNjM4NDsgaW4gb3JkZXIgdG8gbm9ybWFsaXplIHRoZSByZXN1bHQsIHRoZSAgfA0KKyB8ICAgZm9sbG93aW5nIG9wZXJhdGlvbiBtdXN0IGJlIGRvbmUgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICBub3JtX3ZhcjEgPSBzaGwodmFyMSxub3JtX3ModmFyMSkpLiAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgQ29tcGxleGl0eSB3ZWlnaHQgOiAxNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgSW5wdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIHZhcjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyMSA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgT3V0cHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIG5vbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUmV0dXJuIFZhbHVlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIHZhcl9vdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHgwMDAwIDAwMDAgPD0gdmFyX291dCA8PSAweDAwMDAgMDAwZi4gICAgICAgICAgICAgICAgfA0KKyB8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffA0KKyovDQorDQorI2lmICghTk9STV9TX0lTX0lOTElORSkNCitXb3JkMTYgbm9ybV9zIChXb3JkMTYgdmFyMSkNCit7DQorICAgIFdvcmQxNiB2YXJfb3V0Ow0KKw0KKyAgICBpZiAodmFyMSA9PSAwKQ0KKyAgICB7DQorICAgICAgICB2YXJfb3V0ID0gMDsNCisgICAgfQ0KKyAgICBlbHNlDQorICAgIHsNCisgICAgICAgIGlmICh2YXIxID09IC0xKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIHZhcl9vdXQgPSAxNTsNCisgICAgICAgIH0NCisgICAgICAgIGVsc2UNCisgICAgICAgIHsNCisgICAgICAgICAgICBpZiAodmFyMSA8IDApDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICB2YXIxID0gKFdvcmQxNil+dmFyMTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgZm9yICh2YXJfb3V0ID0gMDsgdmFyMSA8IDB4NDAwMDsgdmFyX291dCsrKQ0KKyAgICAgICAgICAgIHsNCisgICAgICAgICAgICAgICAgdmFyMSA8PD0gMTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgIH0NCisNCisgICAgcmV0dXJuICh2YXJfb3V0KTsNCit9DQorI2VuZGlmDQorDQorLypfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIEZ1bmN0aW9uIE5hbWUgOiBkaXZfcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFB1cnBvc2UgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFByb2R1Y2VzIGEgcmVzdWx0IHdoaWNoIGlzIHRoZSBmcmFjdGlvbmFsIGludGVnZXIgZGl2aXNpb24gb2YgdmFyMSAgYnkgIHwNCisgfCAgIHZhcjI7IHZhcjEgYW5kIHZhcjIgbXVzdCBiZSBwb3NpdGl2ZSBhbmQgdmFyMiBtdXN0IGJlIGdyZWF0ZXIgb3IgZXF1YWwgIHwNCisgfCAgIHRvIHZhcjE7IHRoZSByZXN1bHQgaXMgcG9zaXRpdmUgKGxlYWRpbmcgYml0IGVxdWFsIHRvIDApIGFuZCB0cnVuY2F0ZWQgIHwNCisgfCAgIHRvIDE2IGJpdHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIElmIHZhcjEgPSB2YXIyIHRoZW4gZGl2KHZhcjEsdmFyMikgPSAzMjc2Ny4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIENvbXBsZXhpdHkgd2VpZ2h0IDogMTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIElucHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICB2YXIxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4MDAwMCAwMDAwIDw9IHZhcjEgPD0gdmFyMiBhbmQgdmFyMiAhPSAwLiAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICB2YXIyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IHZhcjEgPD0gdmFyMiA8PSAweDAwMDAgN2ZmZiBhbmQgdmFyMiAhPSAwLiAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIE91dHB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICBub25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgIFJldHVybiBWYWx1ZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICB2YXJfb3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCisgfCAgICAgICAgICAgICByYW5nZSA6IDB4MDAwMCAwMDAwIDw9IHZhcl9vdXQgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICBJdCdzIGEgUTE1IHZhbHVlIChwb2ludCBiZXR3ZWVuIGIxNSBhbmQgYjE0KS4gICAgICAgICAgICAgICAgIHwNCisgfF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX3wNCisqLw0KKw0KKyNpZiAoIURJVl9TX0lTX0lOTElORSkNCitXb3JkMTYgZGl2X3MgKFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMikNCit7DQorICAgIFdvcmQxNiB2YXJfb3V0ID0gMDsNCisgICAgV29yZDE2IGl0ZXJhdGlvbjsNCisgICAgV29yZDMyIExfbnVtOw0KKyAgICBXb3JkMzIgTF9kZW5vbTsNCisNCisgICAgaWYgKHZhcjEgPT0gMCkNCisgICAgew0KKyAgICAgICAgdmFyX291dCA9IDA7DQorICAgIH0NCisgICAgZWxzZQ0KKyAgICB7DQorICAgICAgICBpZiAodmFyMSA9PSB2YXIyKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIHZhcl9vdXQgPSBNQVhfMTY7DQorICAgICAgICB9DQorICAgICAgICBlbHNlDQorICAgICAgICB7DQorICAgICAgICAgICAgTF9udW0gPSBMX2RlcG9zaXRfbCAodmFyMSk7DQorICAgICAgICAgICAgTF9kZW5vbSA9IExfZGVwb3NpdF9sICh2YXIyKTsNCisNCisgICAgICAgICAgICBmb3IgKGl0ZXJhdGlvbiA9IDA7IGl0ZXJhdGlvbiA8IDE1OyBpdGVyYXRpb24rKykNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgIHZhcl9vdXQgPDw9IDE7DQorICAgICAgICAgICAgICAgIExfbnVtIDw8PSAxOw0KKw0KKyAgICAgICAgICAgICAgICBpZiAoTF9udW0gPj0gTF9kZW5vbSkNCisgICAgICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICAgICAgTF9udW0gPSBMX3N1YihMX251bSwgTF9kZW5vbSk7DQorICAgICAgICAgICAgICAgICAgICB2YXJfb3V0ID0gYWRkICh2YXJfb3V0LCAxKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgfQ0KKw0KKyAgICByZXR1cm4gKHZhcl9vdXQpOw0KK30NCisjZW5kaWYNCisNCisvKl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgRnVuY3Rpb24gTmFtZSA6IG5vcm1fbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUHVycG9zZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUHJvZHVjZXMgdGhlIG51bWJlciBvZiBsZWZ0IHNoaWZ0cyBuZWVkZWQgdG8gbm9ybWFsaXplIHRoZSAzMiBiaXQgdmFyaWEtfA0KKyB8ICAgYmxlIExfdmFyMSBmb3IgcG9zaXRpdmUgdmFsdWVzIG9uIHRoZSBpbnRlcnZhbCB3aXRoIG1pbmltdW0gb2YgICAgICAgICAgfA0KKyB8ICAgMTA3Mzc0MTgyNCBhbmQgbWF4aW11bSBvZiAyMTQ3NDgzNjQ3LCBhbmQgZm9yIG5lZ2F0aXZlIHZhbHVlcyBvbiB0aGUgaW4tfA0KKyB8ICAgdGVydmFsIHdpdGggbWluaW11bSBvZiAtMjE0NzQ4MzY0OCBhbmQgbWF4aW11bSBvZiAtMTA3Mzc0MTgyNDsgaW4gb3JkZXIgfA0KKyB8ICAgdG8gbm9ybWFsaXplIHRoZSByZXN1bHQsIHRoZSBmb2xsb3dpbmcgb3BlcmF0aW9uIG11c3QgYmUgZG9uZSA6ICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgIG5vcm1fTF92YXIxID0gTF9zaGwoTF92YXIxLG5vcm1fbChMX3ZhcjEpKS4gICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgQ29tcGxleGl0eSB3ZWlnaHQgOiAzMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgSW5wdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIExfdmFyMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDMyIGJpdCBsb25nIHNpZ25lZCBpbnRlZ2VyIChXb3JkMzIpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSAgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHg4MDAwIDAwMDAgPD0gdmFyMSA8PSAweDdmZmYgZmZmZi4gICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgT3V0cHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIG5vbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgUmV0dXJuIFZhbHVlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgIHZhcl9vdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KKyB8ICAgICAgICAgICAgIHJhbmdlIDogMHgwMDAwIDAwMDAgPD0gdmFyX291dCA8PSAweDAwMDAgMDAxZi4gICAgICAgICAgICAgICAgfA0KKyB8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffA0KKyovDQorDQorI2lmICghTk9STV9MX0lTX0lOTElORSkNCitXb3JkMTYgbm9ybV9sIChXb3JkMzIgTF92YXIxKQ0KK3sNCisgICAgV29yZDE2IHZhcl9vdXQ7DQorDQorICAgIGlmIChMX3ZhcjEgPT0gMCkNCisgICAgew0KKyAgICAgICAgdmFyX291dCA9IDA7DQorICAgIH0NCisgICAgZWxzZQ0KKyAgICB7DQorICAgICAgICBpZiAoTF92YXIxID09IChXb3JkMzIpIDB4ZmZmZmZmZmZMKQ0KKyAgICAgICAgew0KKyAgICAgICAgICAgIHZhcl9vdXQgPSAzMTsNCisgICAgICAgIH0NCisgICAgICAgIGVsc2UNCisgICAgICAgIHsNCisgICAgICAgICAgICBpZiAoTF92YXIxIDwgMCkNCisgICAgICAgICAgICB7DQorICAgICAgICAgICAgICAgIExfdmFyMSA9IH5MX3ZhcjE7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGZvciAodmFyX291dCA9IDA7IExfdmFyMSA8IChXb3JkMzIpIDB4NDAwMDAwMDBMOyB2YXJfb3V0KyspDQorICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICBMX3ZhcjEgPDw9IDE7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICB9DQorDQorICAgIHJldHVybiAodmFyX291dCk7DQorfQ0KKyNlbmRpZg0KKwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9iYXNpY19vcC9vcGVyXzMyYi5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9iYXNpY19vcC9vcGVyXzMyYi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwNmE5ZGYKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2Jhc2ljX29wL29wZXJfMzJiLmMKQEAgLTAsMCArMSwzNjEgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCW9wZXJfMzJiLmMNCisNCisJQ29udGVudDoJICBUaGlzIGZpbGUgY29udGFpbnMgb3BlcmF0aW9ucyBpbiBkb3VibGUgcHJlY2lzaW9uLgorIA0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpbmNsdWRlICJ0eXBlZGVmLmgiCisjaW5jbHVkZSAiYmFzaWNfb3AuaCIKKyNpbmNsdWRlICJvcGVyXzMyYi5oIgorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogIEZ1bmN0aW9uIExfRXh0cmFjdCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICBFeHRyYWN0IGZyb20gYSAzMiBiaXQgaW50ZWdlciB0d28gMTYgYml0IERQRi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgQXJndW1lbnRzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICBMXzMyICAgICAgOiAzMiBiaXQgaW50ZWdlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgIDB4ODAwMCAwMDAwIDw9IExfMzIgPD0gMHg3ZmZmIGZmZmYuICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgaGkgICAgICAgIDogYjE2IHRvIGIzMSBvZiBMXzMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICBsbyAgICAgICAgOiAoTF8zMiAtIGhpPDwxNik+PjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyovCisKK3ZvaWQgTF9FeHRyYWN0IChXb3JkMzIgTF8zMiwgV29yZDE2ICpoaSwgV29yZDE2ICpsbykKK3sKKyAgICAqaGkgPSBleHRyYWN0X2ggKExfMzIpOworICAgICpsbyA9IGV4dHJhY3RfbCAoTF9tc3UgKExfc2hyIChMXzMyLCAxKSwgKmhpLCAxNjM4NCkpOworICAgIHJldHVybjsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICBGdW5jdGlvbiBMX0NvbXAoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgQ29tcG9zZSBmcm9tIHR3byAxNiBiaXQgRFBGIGEgMzIgYml0IGludGVnZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgIExfMzIgPSBoaTw8MTYgKyBsbzw8MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICBBcmd1bWVudHM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgIGhpICAgICAgICBtc2IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgbG8gICAgICAgIGxzZiAod2l0aCBzaWduKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgIFJldHVybiBWYWx1ZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgMzIgYml0IGxvbmcgc2lnbmVkIGludGVnZXIgKFdvcmQzMikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlICAqCisgKiAgICAgICAgICAgICByYW5nZSA6IDB4ODAwMCAwMDAwIDw9IExfMzIgPD0gMHg3ZmZmIGZmZjAuICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCitXb3JkMzIgTF9Db21wIChXb3JkMTYgaGksIFdvcmQxNiBsbykKK3sKKyAgICBXb3JkMzIgTF8zMjsKKworICAgIExfMzIgPSBMX2RlcG9zaXRfaCAoaGkpOworICAgIHJldHVybiAoTF9tYWMgKExfMzIsIGxvLCAxKSk7ICAgICAgIC8qID0gaGk8PDE2ICsgbG88PDEgKi8KK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBGdW5jdGlvbiBNcHlfMzIoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICBNdWx0aXBseSB0d28gMzIgYml0IGludGVnZXJzIChEUEYpLiBUaGUgcmVzdWx0IGlzIGRpdmlkZWQgYnkgMioqMzEgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgTF8zMiA9IChoaTEqaGkyKTw8MSArICggKGhpMSpsbzIpPj4xNSArIChsbzEqaGkyKT4+MTUgKTw8MSAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgIFRoaXMgb3BlcmF0aW9uIGNhbiBhbHNvIGJlIHZpZXdlZCBhcyB0aGUgbXVsdGlwbGljYXRpb24gb2YgdHdvIFEzMSAgICAgICoKKyAqICAgbnVtYmVyIGFuZCB0aGUgcmVzdWx0IGlzIGFsc28gaW4gUTMxLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiBBcmd1bWVudHM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogIGhpMSAgICAgICAgIGhpIHBhcnQgb2YgZmlyc3QgbnVtYmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgbG8xICAgICAgICAgbG8gcGFydCBvZiBmaXJzdCBudW1iZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICBoaTIgICAgICAgICBoaSBwYXJ0IG9mIHNlY29uZCBudW1iZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogIGxvMiAgICAgICAgIGxvIHBhcnQgb2Ygc2Vjb25kIG51bWJlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKi8KKworV29yZDMyIE1weV8zMiAoV29yZDE2IGhpMSwgV29yZDE2IGxvMSwgV29yZDE2IGhpMiwgV29yZDE2IGxvMikKK3sKKyAgICBXb3JkMzIgTF8zMjsKKworICAgIExfMzIgPSBMX211bHQgKGhpMSwgaGkyKTsKKyAgICBMXzMyID0gTF9tYWMgKExfMzIsIG11bHQgKGhpMSwgbG8yKSwgMSk7CisgICAgTF8zMiA9IExfbWFjIChMXzMyLCBtdWx0IChsbzEsIGhpMiksIDEpOworCisgICAgcmV0dXJuIChMXzMyKTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiBGdW5jdGlvbiBNcHlfMzJfMTYoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICBNdWx0aXBseSBhIDE2IGJpdCBpbnRlZ2VyIGJ5IGEgMzIgYml0IChEUEYpLiBUaGUgcmVzdWx0IGlzIGRpdmlkZWQgICAgICAqCisgKiAgIGJ5IDIqKjE1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgIExfMzIgPSAoaGkxKmxvMik8PDEgKyAoKGxvMSpsbzIpPj4xNSk8PDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogQXJndW1lbnRzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICBoaSAgICAgICAgICBoaSBwYXJ0IG9mIDMyIGJpdCBudW1iZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogIGxvICAgICAgICAgIGxvIHBhcnQgb2YgMzIgYml0IG51bWJlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgbiAgICAgICAgICAgMTYgYml0IG51bWJlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCitXb3JkMzIgTXB5XzMyXzE2IChXb3JkMTYgaGksIFdvcmQxNiBsbywgV29yZDE2IG4pCit7CisgICAgV29yZDMyIExfMzI7CisKKyAgICBMXzMyID0gTF9tdWx0IChoaSwgbik7CisgICAgTF8zMiA9IExfbWFjIChMXzMyLCBtdWx0IChsbywgbiksIDEpOworCisgICAgcmV0dXJuIChMXzMyKTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgRnVuY3Rpb24gTmFtZSA6IERpdl8zMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgIFB1cnBvc2UgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgIEZyYWN0aW9uYWwgaW50ZWdlciBkaXZpc2lvbiBvZiB0d28gMzIgYml0IG51bWJlcnMuICAgICAgICAgICAgKgorICogICAgICAgICAgICAgTF9udW0gLyBMX2Rlbm9tLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICBMX251bSBhbmQgTF9kZW5vbSBtdXN0IGJlIHBvc2l0aXZlIGFuZCBMX251bSA8IExfZGVub20uICAgICAgICoKKyAqICAgICAgICAgICAgIExfZGVub20gPSBkZW5vbV9oaTw8MTYgKyBkZW5vbV9sbzw8MSAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgZGVub21faGkgaXMgYSBub3JtYWxpemUgbnVtYmVyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgSW5wdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICBMX251bSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgIDMyIGJpdCBsb25nIHNpZ25lZCBpbnRlZ2VyIChXb3JkMzIpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSAgKgorICogICAgICAgICAgICAgcmFuZ2UgOiAweDAwMDAgMDAwMCA8IExfbnVtIDwgTF9kZW5vbSAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgIExfZGVub20gPSBkZW5vbV9oaTw8MTYgKyBkZW5vbV9sbzw8MSAgICAgIChEUEYpICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICBkZW5vbV9oaSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgIDE2IGJpdCBwb3NpdGl2ZSBub3JtYWxpemVkIGludGVnZXIgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlICAgKgorICogICAgICAgICAgICAgcmFuZ2UgOiAweDQwMDAgPCBoaSA8IDB4N2ZmZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICBkZW5vbV9sbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgIDE2IGJpdCBwb3NpdGl2ZSBpbnRlZ2VyIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgcmFuZ2UgOiAwIDwgbG8gPCAweDdmZmYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgUmV0dXJuIFZhbHVlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICBMX2RpdiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgICAgICAgIDMyIGJpdCBsb25nIHNpZ25lZCBpbnRlZ2VyIChXb3JkMzIpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSAgKgorICogICAgICAgICAgICAgcmFuZ2UgOiAweDAwMDAgMDAwMCA8PSBMX2RpdiA8PSAweDdmZmYgZmZmZi4gICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICBBbGdvcml0aG06ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgLSBmaW5kID0gMS9MX2Rlbm9tLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAgICAgRmlyc3QgYXBwcm94aW1hdGlvbjogYXBwcm94ID0gMSAvIGRlbm9tX2hpICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICogICAgICAxL0xfZGVub20gPSBhcHByb3ggKiAoMi4wIC0gTF9kZW5vbSAqIGFwcHJveCApICAgICAgICAgICAgICAgICAgICAgICAqCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyAqICAtICByZXN1bHQgPSBMX251bSAqICgxL0xfZGVub20pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworCitXb3JkMzIgRGl2XzMyIChXb3JkMzIgTF9udW0sIFdvcmQzMiBkZW5vbSkKK3sKKyAgICBXb3JkMTYgYXBwcm94OworICAgIFdvcmQzMiBMXzMyOworICAgIC8qIEZpcnN0IGFwcHJveGltYXRpb246IDEgLyBMX2Rlbm9tID0gMS9kZW5vbV9oaSAqLworCisgICAgYXBwcm94ID0gZGl2X3MgKChXb3JkMTYpIDB4M2ZmZiwgZGVub20gPj4gMTYpOworCisgICAgLyogMS9MX2Rlbm9tID0gYXBwcm94ICogKDIuMCAtIExfZGVub20gKiBhcHByb3gpICovCisKKyAgICBMXzMyID0gTF9tcHlfbHMgKGRlbm9tLCBhcHByb3gpOworCisgICAgTF8zMiA9IExfc3ViICgoV29yZDMyKSAweDdmZmZmZmZmTCwgTF8zMik7CisKKwlMXzMyID0gTF9tcHlfbHMgKExfMzIsIGFwcHJveCk7CisgICAgLyogTF9udW0gKiAoMS9MX2Rlbm9tKSAqLworCisJTF8zMiA9IE1VTEhJR0goTF8zMiwgTF9udW0pOworICAgIExfMzIgPSBMX3NobCAoTF8zMiwgMyk7CisKKyAgICByZXR1cm4gKExfMzIpOworfQorDQorLyohDQorIA0KKyAgXGJyaWVmICBjYWxjdWxhdGVzIHRoZSBsb2cgZHVhbGlzIHRpbWVzIDQgb2YgYXJndW1lbnQgDQorICAgICAgICAgIGlMb2c0KHgpID0gKFdvcmQzMikoNCAqIGxvZyh2YWx1ZSkvbG9nKDIuMCkpDQorDQorICBccmV0dXJuIGlsb2c0IHZhbHVlDQorIA0KKyovDQorV29yZDE2IGlMb2c0KFdvcmQzMiB2YWx1ZSkNCit7DQorICBXb3JkMTYgaUxvZzQ7DQorDQorICBpZih2YWx1ZSAhPSAwKXsNCisgICAgV29yZDMyIHRtcDsNCisgICAgV29yZDE2IHRtcDE2Ow0KKyAgICBpTG9nNCA9IG5vcm1fbCh2YWx1ZSk7DQorICAgIHRtcCA9ICh2YWx1ZSA8PCBpTG9nNCk7DQorICAgIHRtcDE2ID0gcm91bmQxNih0bXApOw0KKyAgICB0bXAgPSBMX211bHQodG1wMTYsIHRtcDE2KTsNCisgICAgdG1wMTYgPSByb3VuZDE2KHRtcCk7DQorICAgIHRtcCA9IExfbXVsdCh0bXAxNiwgdG1wMTYpOw0KKyAgICB0bXAxNiA9IHJvdW5kMTYodG1wKTsNCisNCisgICAgaUxvZzQgPSAoLShpTG9nNCA8PCAyKSAtIG5vcm1fcyh0bXAxNikpIC0gMTsNCisgIH0NCisgIGVsc2Ugew0KKyAgICBpTG9nNCA9IC0xMjg7IC8qIC0oSU5UX0JJVFMqNCk7ICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICB9DQorDQorICByZXR1cm4gaUxvZzQ7DQorfQ0KKw0KKyNkZWZpbmUgc3RlcChzaGlmdCkgXA0KKyAgICBpZiAoKDB4NDAwMDAwMDBsID4+IHNoaWZ0KSArIHJvb3QgPD0gdmFsdWUpICAgICAgIFwNCisgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICB2YWx1ZSAtPSAoMHg0MDAwMDAwMGwgPj4gc2hpZnQpICsgcm9vdDsgICAgICAgXA0KKyAgICAgICAgcm9vdCA9IChyb290ID4+IDEpIHwgKDB4NDAwMDAwMDBsID4+IHNoaWZ0KTsgIFwNCisgICAgfSBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQorICAgICAgICByb290ID0gcm9vdCA+PiAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KKyAgICB9DQorDQorV29yZDMyIHJzcXJ0KFdvcmQzMiB2YWx1ZSwgICAgIC8qITwgT3BlcmFuZCB0byBzcXVhcmUgcm9vdCAoMC4wIC4uLiAxKSAqLw0KKyAgICAgICAgICAgICBXb3JkMzIgYWNjdXJhY3kpICAvKiE8IE51bWJlciBvZiB2YWxpZCBiaXRzIHRoYXQgd2lsbCBiZSBjYWxjdWxhdGVkICovDQorew0KKyAgICBXb3JkMzIgcm9vdCA9IDA7DQorCVdvcmQzMiBzY2FsZTsNCisNCisJaWYodmFsdWUgPCAwKQ0KKwkJcmV0dXJuIDA7DQorDQorCXNjYWxlID0gbm9ybV9sKHZhbHVlKTsNCisJaWYoc2NhbGUgJiAxKSBzY2FsZS0tOw0KKw0KKwl2YWx1ZSA8PD0gc2NhbGU7DQorDQorCXN0ZXAoIDApOyBzdGVwKCAyKTsgc3RlcCggNCk7IHN0ZXAoIDYpOw0KKyAgICBzdGVwKCA4KTsgc3RlcCgxMCk7IHN0ZXAoMTIpOyBzdGVwKDE0KTsNCisgICAgc3RlcCgxNik7IHN0ZXAoMTgpOyBzdGVwKDIwKTsgc3RlcCgyMik7DQorICAgIHN0ZXAoMjQpOyBzdGVwKDI2KTsgc3RlcCgyOCk7IHN0ZXAoMzApOw0KKw0KKyAgICBzY2FsZSA+Pj0gMTsNCisJaWYgKHJvb3QgPCB2YWx1ZSkNCisgICAgICAgICsrcm9vdDsNCisNCisJcm9vdCA+Pj0gc2NhbGU7DQorICAgIHJldHVybiByb290KiA0NjMzNDsNCit9DQorDQorc3RhdGljIGNvbnN0IFdvcmQzMiBwb3cyVGFibGVbUE9XMl9UQUJMRV9TSVpFXSA9IHsNCisweDdmZmZmZmZmLCAweDdmYTc2NWFkLCAweDdmNGYwOGFlLCAweDdlZjZlOGRhLCANCisweDdlOWYwNjA2LCAweDdlNDc2MDA5LCAweDdkZWZmNmI2LCAweDdkOThjOWU2LCANCisweDdkNDFkOTZlLCAweDdjZWIyNTIzLCAweDdjOTRhY2RlLCAweDdjM2U3MDczLCANCisweDdiZTg2ZmI5LCAweDdiOTJhYTg4LCAweDdiM2QyMGI2LCAweDdhZTdkMjFhLCANCisweDdhOTJiZThiLCAweDdhM2RlNWRmLCAweDc5ZTk0N2VmLCAweDc5OTRlNDkyLCANCisweDc5NDBiYjllLCAweDc4ZWNjY2VjLCAweDc4OTkxODU0LCAweDc4NDU5ZGFjLCANCisweDc3ZjI1Y2NlLCAweDc3OWY1NTkxLCAweDc3NGM4N2NjLCAweDc2ZjlmMzU5LCANCisweDc2YTc5ODBmLCAweDc2NTU3NWM4LCAweDc2MDM4YzViLCAweDc1YjFkYmEyLCANCisweDc1NjA2Mzc0LCAweDc1MGYyM2FiLCAweDc0YmUxYzIwLCAweDc0NmQ0Y2FjLCANCisweDc0MWNiNTI4LCAweDczY2M1NTZkLCAweDczN2MyZDU1LCAweDczMmMzY2JhLCANCisweDcyZGM4Mzc0LCAweDcyOGQwMTVkLCAweDcyM2RiNjUwLCAweDcxZWVhMjI2LCANCisweDcxOWZjNGI5LCAweDcxNTExZGU0LCAweDcxMDJhZDgwLCAweDcwYjQ3MzY4LCANCisweDcwNjY2Zjc2LCAweDcwMThhMTg1LCAweDZmY2IwOTZmLCAweDZmN2RhNzEwLCANCisweDZmMzA3YTQxLCAweDZlZTM4MmRlLCAweDZlOTZjMGMzLCAweDZlNGEzM2M5LCANCisweDZkZmRkYmNjLCAweDZkYjFiOGE4LCAweDZkNjVjYTM4LCAweDZkMWExMDU3LCANCisweDZjY2U4YWUxLCAweDZjODMzOWIyLCAweDZjMzgxY2E2LCAweDZiZWQzMzk4LCANCisweDZiYTI3ZTY2LCAweDZiNTdmY2U5LCAweDZiMGRhZWZmLCAweDZhYzM5NDg1LCANCisweDZhNzlhZDU2LCAweDZhMmZmOTRmLCAweDY5ZTY3ODRkLCAweDY5OWQyYTJjLCANCisweDY5NTQwZWM5LCAweDY5MGIyNjAxLCAweDY4YzI2ZmIxLCAweDY4NzllYmI2LCANCisweDY4MzE5OWVkLCAweDY3ZTk3YTM0LCAweDY3YTE4YzY4LCAweDY3NTlkMDY1LCANCisweDY3MTI0NjBiLCAweDY2Y2FlZDM1LCAweDY2ODNjNWMzLCAweDY2M2NjZjkyLCANCisweDY1ZjYwYTgwLCAweDY1YWY3NjZhLCAweDY1NjkxMzJmLCAweDY1MjJlMGFkLCANCisweDY0ZGNkZWMzLCAweDY0OTcwZDRmLCAweDY0NTE2YzJlLCAweDY0MGJmYjQxLCANCisweDYzYzZiYTY0LCAweDYzODFhOTc4LCAweDYzM2NjODViLCAweDYyZjgxNmViLCANCisweDYyYjM5NTA5LCAweDYyNmY0MjkyLCAweDYyMmIxZjY2LCAweDYxZTcyYjY1LCANCisweDYxYTM2NjZkLCAweDYxNWZkMDVmLCAweDYxMWM2OTE5LCAweDYwZDkzMDdiLCANCisweDYwOTYyNjY1LCAweDYwNTM0YWI3LCAweDYwMTA5ZDUxLCAweDVmY2UxZTEyLCANCisweDVmOGJjY2RiLCAweDVmNDlhOThjLCAweDVmMDdiNDA1LCAweDVlYzVlYzI2LCANCisweDVlODQ1MWQwLCAweDVlNDJlNGUzLCAweDVlMDFhNTQwLCAweDVkYzA5MmM3LCANCisweDVkN2ZhZDU5LCAweDVkM2VmNGQ3LCAweDVjZmU2OTIzLCAweDVjYmUwYTFjLCANCisweDVjN2RkN2E0LCAweDVjM2RkMTljLCAweDViZmRmN2U1LCAweDViYmU0YTYxLCANCisweDViN2VjOGYyLCAweDViM2Y3Mzc3LCAweDViMDA0OWQ0LCAweDVhYzE0YmVhLCANCisweDVhODI3OTlhLCAweDVhNDNkMmM2LCAweDVhMDU1NzUxLCAweDU5YzcwNzFjLCANCisweDU5ODhlMjA5LCAweDU5NGFlN2ZiLCAweDU5MGQxOGQzLCAweDU4Y2Y3NDc0LCANCisweDU4OTFmYWMxLCAweDU4NTRhYjliLCAweDU4MTc4NmU2LCAweDU3ZGE4YzgzLCANCisweDU3OWRiYzU3LCAweDU3NjExNjQyLCAweDU3MjQ5YTI5LCAweDU2ZTg0N2VmLCANCisweDU2YWMxZjc1LCAweDU2NzAyMGEwLCAweDU2MzQ0YjUyLCAweDU1Zjg5ZjcwLCANCisweDU1YmQxY2RiLCAweDU1ODFjMzc4LCAweDU1NDY5MzI5LCAweDU1MGI4YmQ0LCANCisweDU0ZDBhZDViLCAweDU0OTVmN2ExLCAweDU0NWI2YThiLCAweDU0MjEwNWZkLCANCisweDUzZTZjOWRiLCAweDUzYWNiNjA3LCAweDUzNzJjYTY4LCAweDUzMzkwNmUwLCANCisweDUyZmY2YjU1LCAweDUyYzVmN2FhLCAweDUyOGNhYmMzLCAweDUyNTM4Nzg2LCANCisweDUyMWE4YWQ3LCAweDUxZTFiNTlhLCAweDUxYTkwN2I0LCAweDUxNzA4MTBiLCANCisweDUxMzgyMTgyLCAweDUwZmZlOGZlLCAweDUwYzdkNzY1LCAweDUwOGZlYzljLCANCisweDUwNTgyODg4LCAweDUwMjA4YjBlLCAweDRmZTkxNDEzLCAweDRmYjFjMzdjLCANCisweDRmN2E5OTMwLCAweDRmNDM5NTE0LCAweDRmMGNiNzBjLCAweDRlZDVmZjAwLCANCisweDRlOWY2Y2Q0LCAweDRlNjkwMDZlLCAweDRlMzJiOWI0LCAweDRkZmM5ODhjLCANCisweDRkYzY5Y2RkLCAweDRkOTBjNjhiLCAweDRkNWIxNTdlLCAweDRkMjU4OTljLCANCisweDRjZjAyMmNhLCAweDRjYmFlMGVmLCAweDRjODVjM2YxLCAweDRjNTBjYmI4LCANCisweDRjMWJmODI5LCAweDRiZTc0OTJiLCAweDRiYjJiZWE1LCAweDRiN2U1ODdkLCANCisweDRiNGExNjljLCAweDRiMTVmOGU2LCAweDRhZTFmZjQzLCAweDRhYWUyOTliLCANCisweDRhN2E3N2Q1LCAweDRhNDZlOWQ2LCAweDRhMTM3Zjg4LCAweDQ5ZTAzOGQwLCANCisweDQ5YWQxNTk4LCAweDQ5N2ExNWM0LCAweDQ5NDczOTNmLCAweDQ5MTQ3ZmVlLCANCisweDQ4ZTFlOWJhLCAweDQ4YWY3NjhhLCAweDQ4N2QyNjQ2LCAweDQ4NGFmOGQ2LCANCisweDQ4MThlZTIyLCAweDQ3ZTcwNjExLCAweDQ3YjU0MDhjLCAweDQ3ODM5ZDdiLCANCisweDQ3NTIxY2M2LCAweDQ3MjBiZTU1LCAweDQ2ZWY4MjEwLCAweDQ2YmU2N2UwLCANCisweDQ2OGQ2ZmFlLCAweDQ2NWM5OTYxLCAweDQ2MmJlNGUyLCAweDQ1ZmI1MjFhLCANCisweDQ1Y2FlMGYyLCAweDQ1OWE5MTUyLCAweDQ1NmE2MzIzLCAweDQ1M2E1NjRkLCANCisweDQ1MGE2YWJiLCAweDQ0ZGFhMDU0LCAweDQ0YWFmNzAyLCAweDQ0N2I2ZWFkLCANCisweDQ0NGMwNzQwLCAweDQ0MWNjMGEzLCAweDQzZWQ5YWMwLCAweDQzYmU5NTgwLCANCisweDQzOGZiMGNiLCAweDQzNjBlYzhkLCAweDQzMzI0OGFlLCAweDQzMDNjNTE3LCANCisweDQyZDU2MWI0LCAweDQyYTcxZTZjLCAweDQyNzhmYjJiLCAweDQyNGFmN2RhLCANCisweDQyMWQxNDYyLCAweDQxZWY1MGFlLCAweDQxYzFhY2E4LCAweDQxOTQyODM5LCANCisweDQxNjZjMzRjLCAweDQxMzk3ZGNjLCAweDQxMGM1N2EyLCAweDQwZGY1MGI4LCANCisweDQwYjI2OGZhLCAweDQwODVhMDUxLCAweDQwNThmNmE4LCAweDQwMmM2YmU5IA0KK307DQorDQorLyohDQorIA0KKyAgXGJyaWVmIGNhbGN1bGF0ZXMgMiBeICh4L3kpIGZvciB4PD0wLCB5ID4gMCwgeCA8PSAzMjc2OCAqIHkgDQorICANCisgIGF2b2lkcyBpbnRlZ2VyIGRpdmlzaW9uDQorICANCisgIFxyZXR1cm4gDQorKi8NCitXb3JkMzIgcG93Ml94eShXb3JkMzIgeCwgV29yZDMyIHkpDQorew0KKyAgV29yZDMyIGlQYXJ0Ow0KKyAgV29yZDMyIGZQYXJ0Ow0KKyAgV29yZDMyIHJlczsNCisgIFdvcmQzMiB0bXAsIHRtcDI7DQorICBXb3JkMzIgc2hpZnQsIHNoaWZ0MjsNCisNCisgIHRtcDIgPSAteDsNCisgIGlQYXJ0ID0gdG1wMiAvIHk7DQorICBmUGFydCA9IHRtcDIgLSBpUGFydCp5Ow0KKyAgaVBhcnQgPSBtaW4oaVBhcnQsSU5UX0JJVFMtMSk7DQorDQorICByZXMgPSBwb3cyVGFibGVbKFBPVzJfVEFCTEVfU0laRSpmUGFydCkveV0gPj4gaVBhcnQ7IA0KKyANCisgIHJldHVybihyZXMpOw0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2Jhc2ljX29wL29wZXJfMzJiLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2Jhc2ljX29wL29wZXJfMzJiLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDExOWJjMwotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvYmFzaWNfb3Avb3Blcl8zMmIuaApAQCAtMCwwICsxLDg5IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorCUZpbGU6CQlvcGVyXzMyYi5oDQorDQorCUNvbnRlbnQ6CURvdWJsZSBwcmVjaXNpb24gb3BlcmF0aW9ucw0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgX19PUEVSXzMyYl9ICisjZGVmaW5lIF9fT1BFUl8zMmJfSAorDQorI2luY2x1ZGUgInR5cGVkZWYuaCINCisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKw0KKyNkZWZpbmUgUE9XMl9UQUJMRV9CSVRTIDgNCisjZGVmaW5lIFBPVzJfVEFCTEVfU0laRSAoMTw8UE9XMl9UQUJMRV9CSVRTKQ0KKwordm9pZCBMX0V4dHJhY3QgKFdvcmQzMiBMXzMyLCBXb3JkMTYgKmhpLCBXb3JkMTYgKmxvKTsKK1dvcmQzMiBMX0NvbXAgKFdvcmQxNiBoaSwgV29yZDE2IGxvKTsKK1dvcmQzMiBNcHlfMzIgKFdvcmQxNiBoaTEsIFdvcmQxNiBsbzEsIFdvcmQxNiBoaTIsIFdvcmQxNiBsbzIpOworV29yZDMyIE1weV8zMl8xNiAoV29yZDE2IGhpLCBXb3JkMTYgbG8sIFdvcmQxNiBuKTsKK1dvcmQzMiBEaXZfMzIgKFdvcmQzMiBMX251bSwgV29yZDMyIGRlbm9tKTsKK1dvcmQxNiBpTG9nNChXb3JkMzIgdmFsdWUpOw0KK1dvcmQzMiByc3FydChXb3JkMzIgdmFsdWUsICBXb3JkMzIgYWNjdXJhY3kpOw0KK1dvcmQzMiBwb3cyX3h5KFdvcmQzMiB4LCBXb3JkMzIgeSk7DQorDQorX19pbmxpbmUgV29yZDMyIExfbXB5X2xzKFdvcmQzMiBMX3ZhcjIsIFdvcmQxNiB2YXIxKQ0KK3sNCisgICAgdW5zaWduZWQgc2hvcnQgc3dMb3cxOw0KKyAgICBXb3JkMTYgc3dIaWdoMTsNCisgICAgV29yZDMyIGxfdmFyX291dDsNCisNCisgICAgc3dMb3cxID0gKHVuc2lnbmVkIHNob3J0KShMX3ZhcjIpOw0KKyAgICBzd0hpZ2gxID0gKFdvcmQxNikoTF92YXIyID4+IDE2KTsNCisNCisgICAgbF92YXJfb3V0ID0gKGxvbmcpc3dMb3cxICogKGxvbmcpdmFyMSA+PiAxNTsNCisgICAgDQorICAgIGxfdmFyX291dCArPSBzd0hpZ2gxICogdmFyMSA8PCAxOw0KKyAgICANCisgICAgcmV0dXJuKGxfdmFyX291dCk7DQorfQ0KKw0KK19faW5saW5lIFdvcmQzMiBMX21weV93eChXb3JkMzIgTF92YXIyLCBXb3JkMTYgdmFyMSkNCit7DQorI2lmIEFSTVY1VEVfTF9NUFlfTFMNCisJV29yZDMyIHJlc3VsdDsgDQorCWFzbSB2b2xhdGlsZSggDQorCQkiU01VTFdCICAlW3Jlc3VsdF0sICVbTF92YXIyXSwgJVt2YXIxXSBcbiIgDQorCQk6W3Jlc3VsdF0iK3IiKHJlc3VsdCkNCisJCTpbTF92YXIyXSJyIihMX3ZhcjIpLCBbdmFyMV0iciIodmFyMSkNCisJCSk7IA0KKwlyZXR1cm4gcmVzdWx0Ow0KKyNlbHNlDQorICAgIHVuc2lnbmVkIHNob3J0IHN3TG93MTsNCisgICAgV29yZDE2IHN3SGlnaDE7DQorICAgIFdvcmQzMiBsX3Zhcl9vdXQ7DQorDQorICAgIHN3TG93MSA9ICh1bnNpZ25lZCBzaG9ydCkoTF92YXIyKTsNCisgICAgc3dIaWdoMSA9IChXb3JkMTYpKExfdmFyMiA+PiAxNik7DQorDQorICAgIGxfdmFyX291dCA9IChsb25nKXN3TG93MSAqIChsb25nKXZhcjEgPj4gMTY7ICAgIA0KKyAgICBsX3Zhcl9vdXQgKz0gc3dIaWdoMSAqIHZhcjE7DQorICAgIA0KKyAgICByZXR1cm4obF92YXJfb3V0KTsNCisjZW5kaWYNCit9DQorCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvYmFzaWNfb3AvdHlwZWRlZi5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9iYXNpY19vcC90eXBlZGVmLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNhNjI2YQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvYmFzaWNfb3AvdHlwZWRlZi5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCXR5cGVkZWYuaA0KKw0KKwlDb250ZW50Ogl0eXBlIGRlZmluZWQgZm9yIGRlZmZlcmVudCBwYWx0Zm9ybQ0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgdHlwZWRlZl9oCisjZGVmaW5lIHR5cGVkZWZfaCAiJElkICQiCisKKyN1bmRlZiBPUklHSU5BTF9UWVBFREVGX0ggLyogZGVmaW5lIHRvIGdldCAib3JpZ2luYWwiIEVUU0kgdmVyc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0eXBlZGVmLmggICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCisjaWZkZWYgT1JJR0lOQUxfVFlQRURFRl9ICisvKgorICogdGhpcyBpcyB0aGUgb3JpZ2luYWwgY29kZSBmcm9tIHRoZSBFVFNJIGZpbGUgdHlwZWRlZi5oCisgKi8KKyAgIAorI2lmIGRlZmluZWQoX19CT1JMQU5EQ19fKSB8fCBkZWZpbmVkKF9fV0FUQ09NQ19fKSB8fCBkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fWlRDX18pCit0eXBlZGVmIHNpZ25lZCBjaGFyIFdvcmQ4OwordHlwZWRlZiBzaG9ydCBXb3JkMTY7Cit0eXBlZGVmIGxvbmcgV29yZDMyOwordHlwZWRlZiBpbnQgRmxhZzsKKworI2VsaWYgZGVmaW5lZChfX3N1bikKK3R5cGVkZWYgc2lnbmVkIGNoYXIgV29yZDg7Cit0eXBlZGVmIHNob3J0IFdvcmQxNjsKK3R5cGVkZWYgbG9uZyBXb3JkMzI7Cit0eXBlZGVmIGludCBGbGFnOworCisjZWxpZiBkZWZpbmVkKF9fdW5peF9fKSB8fCBkZWZpbmVkKF9fdW5peCkKK3R5cGVkZWYgc2lnbmVkIGNoYXIgV29yZDg7Cit0eXBlZGVmIHNob3J0IFdvcmQxNjsKK3R5cGVkZWYgaW50IFdvcmQzMjsKK3R5cGVkZWYgaW50IEZsYWc7CisKKyNlbmRpZgorI2Vsc2UgLyogbm90IG9yaWdpbmFsIHR5cGVkZWYuaCAqLworCisvKgorICogdXNlIChpbXByb3ZlZCkgdHlwZSBkZWZpbml0aW9uIGZpbGUgdHlwZGVmcy5oIGFuZCBhZGQgYSAiRmxhZyIgdHlwZQorICovDQorI2luY2x1ZGUgInR5cGVkZWZzLmgiCit0eXBlZGVmIGludCBGbGFnOworCisjZW5kaWYKKworI2VuZGlmCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2Jhc2ljX29wL3R5cGVkZWZzLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2Jhc2ljX29wL3R5cGVkZWZzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2QxNmZjYQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvYmFzaWNfb3AvdHlwZWRlZnMuaApAQCAtMCwwICsxLDE3OSBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJdHlwZWRlZnMuaA0KKw0KKwlDb250ZW50Ogl0eXBlIGRlZmluZWQgb3IgY29uc3QgZGVmaW5lZA0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgdHlwZWRlZnNfaAorI2RlZmluZSB0eXBlZGVmc19oICIkSWQgJCIKKworI2lmbmRlZiBDSEFSX0JJVA0KKyNkZWZpbmUgQ0hBUl9CSVQgICAgICA4ICAgICAgICAgLyogbnVtYmVyIG9mIGJpdHMgaW4gYSBjaGFyICovDQorI2VuZGlmDQorDQorI2lmbmRlZiBWT0FBQ19TSFJUX01BWA0KKyNkZWZpbmUgVk9BQUNfU0hSVF9NQVggICAgKDMyNzY3KSAgICAgICAgLyogbWF4aW11bSAoc2lnbmVkKSBzaG9ydCB2YWx1ZSAqLw0KKyNlbmRpZg0KKworI2lmbmRlZiBWT0FBQ19TSFJUX01JTg0KKyNkZWZpbmUgVk9BQUNfU0hSVF9NSU4gICAgKC0zMjc2OCkgICAgICAgIC8qIG1pbmltdW0gKHNpZ25lZCkgc2hvcnQgdmFsdWUgKi8NCisjZW5kaWYNCisKKy8qIERlZmluZSBOVUxMIHBvaW50ZXIgdmFsdWUgKi8NCisjaWZuZGVmIE5VTEwNCisjaWZkZWYgX19jcGx1c3BsdXMNCisjZGVmaW5lIE5VTEwgICAgMA0KKyNlbHNlDQorI2RlZmluZSBOVUxMICAgICgodm9pZCAqKTApDQorI2VuZGlmDQorI2VuZGlmCisKKyNpZm5kZWYgYXNzZXJ0CisjZGVmaW5lIGFzc2VydChfRXhwcmVzc2lvbikgICAgICgodm9pZCkwKQorI2VuZGlmCisNCisjaWZkZWYgTElOVVgNCisjZGVmaW5lIF9faW5saW5lIHN0YXRpYyBfX2lubGluZV9fDQorI2VuZGlmDQorCisjZGVmaW5lIElOVF9CSVRTICAgMzIKKy8qCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAgICAgICAgICAgICAgICAgICAgICAgICBERUZJTklUSU9OIE9GIENPTlNUQU5UUyAKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqLworLyoKKyAqKioqKioqKiogZGVmaW5lIGNoYXIgdHlwZQorICovCit0eXBlZGVmIGNoYXIgQ2hhcjsKKworLyoKKyAqKioqKioqKiogZGVmaW5lIDggYml0IHNpZ25lZC91bnNpZ25lZCB0eXBlcyAmIGNvbnN0YW50cworICovCit0eXBlZGVmIHNpZ25lZCBjaGFyIFdvcmQ4OwordHlwZWRlZiB1bnNpZ25lZCBjaGFyIFVXb3JkODsKKy8qCisgKioqKioqKioqIGRlZmluZSAxNiBiaXQgc2lnbmVkL3Vuc2lnbmVkIHR5cGVzICYgY29uc3RhbnRzCisgKi8KK3R5cGVkZWYgc2hvcnQgV29yZDE2OwordHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBVV29yZDE2OworCisvKgorICoqKioqKioqKiBkZWZpbmUgMzIgYml0IHNpZ25lZC91bnNpZ25lZCB0eXBlcyAmIGNvbnN0YW50cworICovCit0eXBlZGVmIGxvbmcgV29yZDMyOwordHlwZWRlZiB1bnNpZ25lZCBsb25nIFVXb3JkMzI7CisKKw0KKw0KKyNpZmRlZiBMSU5VWAordHlwZWRlZiBsb25nIGxvbmcgV29yZDY0OwordHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgVVdvcmQ2NDsKKyNlbHNlCit0eXBlZGVmIF9faW50NjQgV29yZDY0Ow0KK3R5cGVkZWYgdW5zaWduZWQgX19pbnQ2NCBVV29yZDY0OworI2VuZGlmCisKKyNpZm5kZWYgbWluDQorI2RlZmluZSBtaW4oYSxiKSAoIGEgPCBiID8gYSA6IGIpDQorI2VuZGlmDQorDQorI2lmbmRlZiBtYXgNCisjZGVmaW5lIG1heChhLGIpICggYSA+IGIgPyBhIDogYikNCisjZW5kaWYNCisNCisjaWZkZWYgQVJNX0lOQVNNDQorI2lmZGVmIEFSTVY1X0lOQVNNDQorI2RlZmluZSBBUk1WNUVfSU5BU00JMQ0KKyNlbmRpZg0KKyNkZWZpbmUgQVJNVjRfSU5BU00JCTENCisjZW5kaWYNCisKKyNpZiBBUk1WNF9JTkFTTQ0KKwkjZGVmaW5lIEFSTVY1VEVfU0FUICAgICAgICAgICAxDQorICAgICNkZWZpbmUgQVJNVjVURV9BREQgICAgICAgICAgIDENCisgICAgI2RlZmluZSBBUk1WNVRFX1NVQiAgICAgICAgICAgMQ0KKwkjZGVmaW5lIEFSTVY1VEVfU0hMICAgICAgICAgICAxDQorICAgICNkZWZpbmUgQVJNVjVURV9TSFIgICAgICAgICAgIDENCisJI2RlZmluZSBBUk1WNVRFX0xfU0hMICAgICAgICAgMQ0KKyAgICAjZGVmaW5lIEFSTVY1VEVfTF9TSFIgICAgICAgICAxDQorI2VuZGlmLy9BUk1WNA0KKyNpZiBBUk1WNUVfSU5BU00NCisgICAgI2RlZmluZSBBUk1WNVRFX0xfQUREICAgICAgICAgMQ0KKyAgICAjZGVmaW5lIEFSTVY1VEVfTF9TVUIgICAgICAgICAxDQorICAgICNkZWZpbmUgQVJNVjVURV9MX01VTFQgICAgICAgIDENCisgICAgI2RlZmluZSBBUk1WNVRFX0xfTUFDICAgICAgICAgMQ0KKyAgICAjZGVmaW5lIEFSTVY1VEVfTF9NU1UgICAgICAgICAxDQorICAgDQorICAgIA0KKyAgICAjZGVmaW5lIEFSTVY1VEVfRElWX1MgICAgICAgICAxDQorICAgICNkZWZpbmUgQVJNVjVURV9ST1VORCAgICAgICAgIDENCisgICAgI2RlZmluZSBBUk1WNVRFX01VTFQgICAgICAgICAgMQ0KKyAgICANCisgICAgI2RlZmluZSBBUk1WNVRFX05PUk1fUyAgICAgICAgMQ0KKyAgICAjZGVmaW5lIEFSTVY1VEVfTk9STV9MICAgICAgICAxDQorCSNkZWZpbmUgQVJNVjVURV9MX01QWV9MUwkgIDENCisjZW5kaWYKKw0KKy8vYmFzaWMgb3BlcmF0aW9uIGZ1bmN0aW9ucyBvcHRpbWl6YXRpb24gZmxhZ3MNCisjZGVmaW5lIFNBVFJVQVRFX0lTX0lOTElORSAgICAgICAgICAgICAgMSAgIC8vZGVmaW5lIHNhdHVyYXRlIGFzIGlubGluZSBmdW5jdGlvbg0KKyNkZWZpbmUgU0hMX0lTX0lOTElORSAgICAgICAgICAgICAgICAgICAxICAvL2RlZmluZSBzaGwgYXMgaW5saW5lIGZ1bmN0aW9uDQorI2RlZmluZSBTSFJfSVNfSU5MSU5FICAgICAgICAgICAgICAgICAgIDEgICAvL2RlZmluZSBzaHIgYXMgaW5saW5lIGZ1bmN0aW9uDQorI2RlZmluZSBMX01VTFRfSVNfSU5MSU5FICAgICAgICAgICAgICAgIDEgICAvL2RlZmluZSBMX211bHQgYXMgaW5saW5lIGZ1bmN0aW9uDQorI2RlZmluZSBMX01TVV9JU19JTkxJTkUgICAgICAgICAgICAgICAgIDEgICAvL2RlZmluZSBMX21zdSBhcyBpbmxpbmUgZnVuY3Rpb24NCisjZGVmaW5lIExfU1VCX0lTX0lOTElORSAgICAgICAgICAgICAgICAgMSAgIC8vZGVmaW5lIExfc3ViIGFzIGlubGluZSBmdW5jdGlvbg0KKyNkZWZpbmUgTF9TSExfSVNfSU5MSU5FICAgICAgICAgICAgICAgICAxICAgLy9kZWZpbmUgTF9zaGwgYXMgaW5saW5lIGZ1bmN0aW9uDQorI2RlZmluZSBMX1NIUl9JU19JTkxJTkUgICAgICAgICAgICAgICAgIDEgICAvL2RlZmluZSBMX3NociBhcyBpbmxpbmUgZnVuY3Rpb24NCisjZGVmaW5lIEFERF9JU19JTkxJTkUgICAgICAgICAgICAgICAgICAgMSAgIC8vZGVmaW5lIGFkZCBhcyBpbmxpbmUgZnVuY3Rpb24gLy9hZGQsIGlubGluZSBpcyB0aGUgYmVzdA0KKyNkZWZpbmUgU1VCX0lTX0lOTElORSAgICAgICAgICAgICAgICAgICAxICAgLy9kZWZpbmUgc3ViIGFzIGlubGluZSBmdW5jdGlvbiAvL3N1YiwgaW5saW5lIGlzIHRoZSBiZXN0DQorI2RlZmluZSBESVZfU19JU19JTkxJTkUgICAgICAgICAgICAgICAgIDEgICAvL2RlZmluZSBkaXZfcyBhcyBpbmxpbmUgZnVuY3Rpb24NCisjZGVmaW5lIE1VTFRfSVNfSU5MSU5FICAgICAgICAgICAgICAgICAgMSAgIC8vZGVmaW5lIG11bHQgYXMgaW5saW5lIGZ1bmN0aW9uDQorI2RlZmluZSBOT1JNX1NfSVNfSU5MSU5FICAgICAgICAgICAgICAgIDEgICAvL2RlZmluZSBub3JtX3MgYXMgaW5saW5lIGZ1bmN0aW9uDQorI2RlZmluZSBOT1JNX0xfSVNfSU5MSU5FICAgICAgICAgICAgICAgIDEgICAvL2RlZmluZSBub3JtX2wgYXMgaW5saW5lIGZ1bmN0aW9uDQorI2RlZmluZSBST1VORF9JU19JTkxJTkUgICAgICAgICAgICAgICAgIDEgICAvL2RlZmluZSByb3VuZCBhcyBpbmxpbmUgZnVuY3Rpb24NCisjZGVmaW5lIExfTUFDX0lTX0lOTElORSAgICAgICAgICAgICAgICAgMSAgIC8vZGVmaW5lIExfbWFjIGFzIGlubGluZSBmdW5jdGlvbg0KKyNkZWZpbmUgTF9BRERfSVNfSU5MSU5FICAgICAgICAgICAgICAgICAxICAgLy9kZWZpbmUgTF9hZGQgYXMgaW5saW5lIGZ1bmN0aW9uDQorI2RlZmluZSBFWFRSQUNUX0hfSVNfSU5MSU5FICAgICAgICAgICAgIDEgICAvL2RlZmluZSBleHRyYWN0X2ggYXMgaW5saW5lIGZ1bmN0aW9uIA0KKyNkZWZpbmUgRVhUUkFDVF9MX0lTX0lOTElORSAgICAgICAgICAgICAxICAgLy9kZWZpbmUgZXh0cmFjdF9sIGFzIGlubGluZSBmdW5jdGlvbiAgICAgICAgLy8/Pz8NCisjZGVmaW5lIE1VTFRfUl9JU19JTkxJTkUgICAgICAgICAgICAgICAgMSAgIC8vZGVmaW5lIG11bHRfciBhcyBpbmxpbmUgZnVuY3Rpb24NCisjZGVmaW5lIFNIUl9SX0lTX0lOTElORSAgICAgICAgICAgICAgICAgMSAgIC8vZGVmaW5lIHNocl9yIGFzIGlubGluZSBmdW5jdGlvbg0KKyNkZWZpbmUgTUFDX1JfSVNfSU5MSU5FICAgICAgICAgICAgICAgICAxICAgLy9kZWZpbmUgbWFjX3IgYXMgaW5saW5lIGZ1bmN0aW9uDQorI2RlZmluZSBNU1VfUl9JU19JTkxJTkUgICAgICAgICAgICAgICAgIDEgICAvL2RlZmluZSBtc3VfciBhcyBpbmxpbmUgZnVuY3Rpb24NCisjZGVmaW5lIExfU0hSX1JfSVNfSU5MSU5FICAgICAgICAgICAgICAgMSAgIC8vZGVmaW5lIExfc2hyX3IgYXMgaW5saW5lIGZ1bmN0aW9uDQorDQorI2RlZmluZSBQUkVGSVgJCQkJdm9BQUNFbmMNCisjZGVmaW5lIExJTkswKHgsIHksIHopCQlMSU5LMSh4LHkseikNCisjZGVmaW5lIExJTksxKHgseSx6KQkJeCMjeSMjeg0KKyNkZWZpbmUgQUREX1BSRUZJWChmdW5jKQlMSU5LMChQUkVGSVgsIF8sIGZ1bmMpDQorDQorI2RlZmluZSAgTF9FeHRyYWN0CQlBRERfUFJFRklYKExfRXh0cmFjdCkNCisjZGVmaW5lICBMX0NvbXAJCQlBRERfUFJFRklYKExfQ29tcCkNCisjZGVmaW5lICBNcHlfMzIJCQlBRERfUFJFRklYKE1weV8zMikNCisjZGVmaW5lICBNcHlfMzJfMTYJCUFERF9QUkVGSVgoTXB5XzMyXzE2KQ0KKyNkZWZpbmUgIERpdl8zMgkJCUFERF9QUkVGSVgoRGl2XzMyKQ0KKyNkZWZpbmUgIGlMb2c0CQkJQUREX1BSRUZJWChpTG9nNCkNCisjZGVmaW5lICByc3FydAkJCUFERF9QUkVGSVgocnNxcnQpDQorI2RlZmluZSAgcG93Ml94eQkJQUREX1BSRUZJWChwb3cyX3h5KQ0KKyNkZWZpbmUgIExfbXB5X2xzCQlBRERfUFJFRklYKExfbXB5X2xzKQ0KKyNkZWZpbmUgIExfbXB5X3d4CQlBRERfUFJFRklYKExfbXB5X3d4KQ0KKw0KKyNkZWZpbmUgbWVtX21hbGxvYwkJQUREX1BSRUZJWChtZW1fbWFsbG9jKQ0KKyNkZWZpbmUgbWVtX2ZyZWUJCUFERF9QUkVGSVgobWVtX2ZyZWUpDQorDQorI2VuZGlmCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2J1aWxkL2VjbGFpci9BUk1WNUUvTWFrZWZpbGUgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2J1aWxkL2VjbGFpci9BUk1WNUUvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjRmNjNhZgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvYnVpbGQvZWNsYWlyL0FSTVY1RS9NYWtlZmlsZQpAQCAtMCwwICsxLDU1IEBACisjLyoNCisjKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisjKioNCisjKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorIyoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisjKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorIyoqDQorIyoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisjKioNCisjKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyMqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyMqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisjKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyMqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisjKi8NCisNCisjIHRhcmdldDYNCisjIGF2YWlsYWJsZTogcGMsIHY0KGFybXY0KSwgdjUoYXJtdjUpLCB2NXgoYXJtdjUgeHNjYWxlKSwgdjYoYXJtdjYpLCB2Nyhjb3J0ZXgtYTggbmVvbikNCitWT1RUOj0gdjUNCisNCisNCisjIG1vZHVsZSB0eXBlDQorIyBwbGVhc2Ugc3BlY2lmeSB0aGUgdHlwZSBvZiB5b3VyIG1vZHVsZTogbGliIG9yIGV4ZQ0KK1ZPTVQ6PSBsaWINCisNCisNCisjIG1vZHVsZSBtYWNyb3MNCisjIHBsZWFzZSBhcHBlbmQgdGhlIGFkZGl0aW9uYWwgbWFjcm8gZGVmaW5pdGlvbnMgaGVyZSBmb3IgeW91ciBtb2R1bGUgaWYgbmVjZXNzYXJ5LiANCisjIGUuZy4gLURWSVNVQUxPTiwgbWFjcm8gVklTVUFMT04gZGVmaW5lZCBmb3IgeW91ciBtb2R1bGUgDQorVk9NTTo9IC1EQVJNVjVFIC1EQVJNX0lOQVNNIC1EQVJNVjVfSU5BU00gDQorDQorDQorDQorIyBwbGVhc2Ugc3BlY2lmeSB0aGUgbmFtZSBvZiB5b3VyIG1vZHVsZQ0KK1ZPVEFSR0VUOj1saWJ2b0FBQ0VuY3Y1DQorDQorDQorIyBwbGVhc2UgbW9kaWZ5IGhlcmUgdG8gYmUgc3VyZSB0byBzZWUgdGhlIGcxLm1rDQoraW5jbHVkZSAuLi8uLi8uLi8uLi8uLi9Ub29scy9lY2xhaXIubWsgDQorDQorIyBkZXBlbmRlbnQgbGlicmFyaWVzLg0KK1ZPREVQTElCUzo9Iy1sZGwgLWxzdGRjKysgDQorDQorIyBtb2R1bGUgc291cmNlDQorIyBwbGVhc2UgbW9kaWZ5IGhlcmUgdG8gYmUgc3VyZSB0byBzZWUgdGhlIG1zLm1rIHdoaWNoIHNwZWNpZmllcyBhbGwgc291cmNlIGluZm8gb2YgeW91ciBtb2R1bGUNCitpbmNsdWRlIC4uLy4uL21zLm1rDQorDQorDQorIyBwbGVhc2Ugc3BlY2lmeSB3aGVyZSBpcyB0aGUgdm9SZWxlYXNlIG9uIHlvdXIgUEMsIHJlbGF0aXZlIHBhdGggaXMgc3VnZ2VzdGVkDQorVk9SRUxESVI6PS4uLy4uLy4uLy4uLy4uLy4uL1JlbGVhc2UNCisNCisNCisjIHBsZWFzZSBtb2RpZnkgaGVyZSB0byBiZSBzdXJlIHRvIHNlZSB0aGUgZG9pdC5taw0KK2luY2x1ZGUgLi4vLi4vLi4vLi4vLi4vVG9vbHMvZG9pdC5tayANCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2J1aWxkL2VjbGFpci9BUk1WNy9NYWtlZmlsZSBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvYnVpbGQvZWNsYWlyL0FSTVY3L01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkY2UyYzEKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2J1aWxkL2VjbGFpci9BUk1WNy9NYWtlZmlsZQpAQCAtMCwwICsxLDU1IEBACisjLyoNCisjKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisjKioNCisjKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorIyoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisjKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorIyoqDQorIyoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisjKioNCisjKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyMqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyMqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisjKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyMqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisjKi8NCisNCisjIHRhcmdldDYNCisjIGF2YWlsYWJsZTogcGMsIHY0KGFybXY0KSwgdjUoYXJtdjUpLCB2NXgoYXJtdjUgeHNjYWxlKSwgdjYoYXJtdjYpLCB2Nyhjb3J0ZXgtYTggbmVvbikNCitWT1RUOj0gdjcNCisNCisNCisjIG1vZHVsZSB0eXBlDQorIyBwbGVhc2Ugc3BlY2lmeSB0aGUgdHlwZSBvZiB5b3VyIG1vZHVsZTogbGliIG9yIGV4ZQ0KK1ZPTVQ6PSBsaWINCisNCisNCisjIG1vZHVsZSBtYWNyb3MNCisjIHBsZWFzZSBhcHBlbmQgdGhlIGFkZGl0aW9uYWwgbWFjcm8gZGVmaW5pdGlvbnMgaGVyZSBmb3IgeW91ciBtb2R1bGUgaWYgbmVjZXNzYXJ5LiANCisjIGUuZy4gLURWSVNVQUxPTiwgbWFjcm8gVklTVUFMT04gZGVmaW5lZCBmb3IgeW91ciBtb2R1bGUgDQorVk9NTTo9IC1EQVJNVjVFIC1EQVJNVjdOZW9uIC1EQVJNX0lOQVNNIC1EQVJNVjVfSU5BU00gDQorDQorDQorDQorIyBwbGVhc2Ugc3BlY2lmeSB0aGUgbmFtZSBvZiB5b3VyIG1vZHVsZQ0KK1ZPVEFSR0VUOj1saWJ2b0FBQ0VuY3Y3DQorDQorDQorIyBwbGVhc2UgbW9kaWZ5IGhlcmUgdG8gYmUgc3VyZSB0byBzZWUgdGhlIGcxLm1rDQoraW5jbHVkZSAuLi8uLi8uLi8uLi8uLi9Ub29scy9lY2xhaXIubWsgDQorDQorIyBkZXBlbmRlbnQgbGlicmFyaWVzLg0KK1ZPREVQTElCUzo9Iy1sZGwgLWxzdGRjKysgDQorDQorIyBtb2R1bGUgc291cmNlDQorIyBwbGVhc2UgbW9kaWZ5IGhlcmUgdG8gYmUgc3VyZSB0byBzZWUgdGhlIG1zLm1rIHdoaWNoIHNwZWNpZmllcyBhbGwgc291cmNlIGluZm8gb2YgeW91ciBtb2R1bGUNCitpbmNsdWRlIC4uLy4uL21zLm1rDQorDQorDQorIyBwbGVhc2Ugc3BlY2lmeSB3aGVyZSBpcyB0aGUgdm9SZWxlYXNlIG9uIHlvdXIgUEMsIHJlbGF0aXZlIHBhdGggaXMgc3VnZ2VzdGVkDQorVk9SRUxESVI6PS4uLy4uLy4uLy4uLy4uLy4uL1JlbGVhc2UNCisNCisNCisjIHBsZWFzZSBtb2RpZnkgaGVyZSB0byBiZSBzdXJlIHRvIHNlZSB0aGUgZG9pdC5taw0KK2luY2x1ZGUgLi4vLi4vLi4vLi4vLi4vVG9vbHMvZG9pdC5tayAgDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9idWlsZC9lY2xhaXIvbWFrZWZpbGUgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2J1aWxkL2VjbGFpci9tYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YmIzYzEzCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9idWlsZC9lY2xhaXIvbWFrZWZpbGUKQEAgLTAsMCArMSw0MCBAQAorIy8qCisjKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4KKyMqKgorIyoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworIyoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyMqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyMqKgorIyoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyMqKgorIyoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyMqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorIyoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorIyoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyMqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyMqLworCisjIEp1c3QgYWN0aW5nIGFzIEZhdGhlciBNYWtlZmlsZSBvZiBNb2R1bGVzCisjIHBsZWFzZSBrZWVwIHRoZSBuYW1lICdtYWtlZmlsZScgdW5jaGFuZ2VkCisgCisjIE1vZHVsZSBTdWJkaXJzCitWT01TRDo9JChkaXIgJChzaGVsbCBmaW5kIC4gLW5hbWUgJ01ha2VmaWxlJykpCisKK2FsbDoKKwlmb3IgZGlyIGluICQoVk9NU0QpOyBcCisJCWRvIFwKKwkJCSQoTUFLRSkgLUMgJCRkaXI7IFwKKwkJZG9uZQorCisuUEhPTlk6Y2xlYW4gZGV2ZWwKK2NsZWFuOgorCWZvciBkaXIgaW4gJChWT01TRCk7IFwKKwkJZG8gXAorCQkJJChNQUtFKSAtQyAkJGRpciBjbGVhbjsgXAorCQlkb25lCisKK2RldmVsOgorCWZvciBkaXIgaW4gJChWT01TRCk7IFwKKwkJZG8gXAorCQkJJChNQUtFKSAtQyAkJGRpciBkZXZlbDsgXAorCQlkb25lCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2J1aWxkL21zLm1rIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9idWlsZC9tcy5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjdlZmJjCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9idWlsZC9tcy5tawpAQCAtMCwwICsxLDQyIEBACisjLyoNCisjKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisjKioNCisjKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorIyoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisjKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorIyoqDQorIyoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisjKioNCisjKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyMqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyMqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisjKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyMqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisjKi8NCisNCisNCisjIHBsZWFzZSBsaXN0IGFsbCBvYmplY3RzIG5lZWRlZCBieSB5b3VyIHRhcmdldCBoZXJlDQorT0JKUzo9YmFzaWNvcDIubyBvcGVyXzMyYi5vIGFhY19yb20ubyBhYWNlbmMubyBhYWNlbmNfY29yZS5vIGFkal90aHIubyBcDQorCQkJYmFuZF9ucmcubyBiaXRfY250Lm8gYml0YnVmZmVyLm8gYml0ZW5jLm8gYmxvY2tfc3dpdGNoLm8gY2hhbm5lbF9tYXAubyBcDQorCQkJZHluX2JpdHMubyBncnBfZGF0YS5vIGludGVyZmFjZS5vIGxpbmVfcGUubyBtZW1hbGlnbi5vIG1zX3N0ZXJlby5vIFwNCisJCQlwcmVfZWNob19jb250cm9sLm8gcHN5X2NvbmZpZ3VyYXRpb24ubyBwc3lfbWFpbi5vIHFjX21haW4ubyBxdWFudGl6ZS5vIHNmX2VzdGltLm8gXA0KKwkJCXNwcmVhZGluZy5vIHN0YXRfYml0cy5vIHRucy5vIHRyYW5zZm9ybS5vDQorCQkJDQorIyBwbGVhc2UgbGlzdCBhbGwgZGlyZWN0b3JpZXMgdGhhdCBhbGwgc291cmNlIGZpbGVzIHJlbGF0aXZlIHdpdGggeW91ciBtb2R1bGUoLmggLmMgLmNwcCkgbG9jYXRlIA0KK1ZPU1JDRElSOj0uLi8uLi8uLi9zcmMgXA0KKwkJCQkJLi4vLi4vLi4vaW5jIFwNCisJCQkJCS4uLy4uLy4uL2Jhc2ljX29wXA0KKwkJCQkJLi4vLi4vLi4vLi4vLi4vSW5jbHVkZSANCisJCQkJCQ0KK2lmZXEgKCQoVk9UVCksIHY1KQ0KK09CSlMrPSBBdXRvQ29ycmVsYXRpb25fdjUubyBiYW5kX25yZ192NS5vIENhbGNXaW5kb3dFbmVyZ3lfdjUubyBcDQorCQkJCVByZVBvc3RNRENUX3Y1Lm8gUjRSOEZpcnN0X3Y1Lm8gUmFkaXg0RkZUX3Y1Lm8NCitWT1NSQ0RJUis9IC4uLy4uLy4uL3NyYy9hc20vQVJNVjVFLw0KK2VuZGlmCQ0KKw0KK2lmZXEgKCQoVk9UVCksIHY3KQ0KK09CSlMrPSBBdXRvQ29ycmVsYXRpb25fdjUubyBiYW5kX25yZ192NS5vIENhbGNXaW5kb3dFbmVyZ3lfdjUubyBcDQorCQkJIFByZVBvc3RNRENUX3Y3Lm8gUjRSOEZpcnN0X3Y3Lm8gUmFkaXg0RkZUX3Y3Lm8NCitWT1NSQ0RJUis9IC4uLy4uLy4uL3NyYy9hc20vQVJNVjVFLw0KK1ZPU1JDRElSKz0gLi4vLi4vLi4vc3JjL2FzbS9BUk1WNy8NCitlbmRpZgkJClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9kb2Mvdm9BQUNFbmNvZGVyU0RLLnBkZiBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvZG9jL3ZvQUFDRW5jb2RlclNESy5wZGYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODc0ZDBmNwotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvZG9jL3ZvQUFDRW5jb2RlclNESy5wZGYKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvYWFjX3JvbS5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvYWFjX3JvbS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwNDI5ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9hYWNfcm9tLmgKQEAgLTAsMCArMSwxMTcgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCWFhY19yb20uaA0KKw0KKwlDb250ZW50Ogljb25zdGFudCB0YWJsZXMgDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBST01fSAorI2RlZmluZSBST01fSAorDQorI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgInBzeV9jb25zdC5oIgorI2luY2x1ZGUgInRuc19wYXJhbS5oIgorCisvKgorICBtZGN0CisqLworZXh0ZXJuIGNvbnN0IGludCBTaG9ydFdpbmRvd1NpbmVbRlJBTUVfTEVOX1NIT1JULzJdOworZXh0ZXJuIGNvbnN0IGludCBMb25nV2luZG93S0JEW0ZSQU1FX0xFTl9MT05HLzJdOw0KKw0KK2V4dGVybiBjb25zdCB1bnNpZ25lZCBjaGFyIGJpdHJldlRhYlsxNyArIDEyOV07DQorZXh0ZXJuIGNvbnN0IGludCBjb3NzaW50YWJbMTI4ICsgMTAyNF07DQorDQorI2lmIGRlZmluZWQgKEFSTVY1RSkgJiYgIWRlZmluZWQgKEFSTVY3TmVvbikNCitleHRlcm4gY29uc3QgaW50IHR3aWRUYWI2NFsoNCo2ICsgMTYqNikvMl07DQorZXh0ZXJuIGNvbnN0IGludCB0d2lkVGFiNTEyWyg4KjYgKyAzMio2ICsgMTI4KjYpLzJdOw0KKyNlbHNlDQorZXh0ZXJuIGNvbnN0IGludCB0d2lkVGFiNjRbNCo2ICsgMTYqNl07DQorZXh0ZXJuIGNvbnN0IGludCB0d2lkVGFiNTEyWzgqNiArIDMyKjYgKyAxMjgqNl07CisjZW5kaWYKKworLyoKKyAgZm9ybSBmYWN0b3IKKyovCitleHRlcm4gY29uc3QgV29yZDMyIGZvcm1mYWNfc3FydHRhYmxlWzk2XTsKKworLyoKKyAgcXVhbnRpemVyCisqLworZXh0ZXJuIGNvbnN0IFdvcmQzMiBtVGFiXzNfNFs1MTJdOworZXh0ZXJuIGNvbnN0IFdvcmQzMiBtVGFiXzRfM1s1MTJdOworLyohICQyXnstXGZyYWN7bn17MTZ9fSQgdGFibGUgKi8KK2V4dGVybiBjb25zdCBXb3JkMTYgcG93MnRvbWludXNOb3ZlcjE2WzE3XSA7CisKK2V4dGVybiBXb3JkMzIgc3BlY0V4cE1hbnRUYWJsZUNvbWJfZW5jWzRdWzE0XTsKK2V4dGVybiBjb25zdCBVV29yZDggc3BlY0V4cFRhYmxlQ29tYl9lbmNbNF1bMTRdOworCitleHRlcm4gY29uc3QgV29yZDE2IHF1YW50Qm9yZGVyc1s0XVs0XTsKKy8vZXh0ZXJuIGNvbnN0IFdvcmQxNiBxdWFudFJlY29uWzNdWzRdOw0KK2V4dGVybiBjb25zdCBXb3JkMTYgcXVhbnRSZWNvbls0XVszXTsKKworLyoKKyAgaHVmZm1hbgorKi8KK2V4dGVybiBjb25zdCBVV29yZDE2IGh1ZmZfbHRhYjFfMlszXVszXVszXVszXTsKK2V4dGVybiBjb25zdCBVV29yZDE2IGh1ZmZfbHRhYjNfNFszXVszXVszXVszXTsKK2V4dGVybiBjb25zdCBVV29yZDE2IGh1ZmZfbHRhYjVfNls5XVs5XTsKK2V4dGVybiBjb25zdCBVV29yZDE2IGh1ZmZfbHRhYjdfOFs4XVs4XTsKK2V4dGVybiBjb25zdCBVV29yZDE2IGh1ZmZfbHRhYjlfMTBbMTNdWzEzXTsKK2V4dGVybiBjb25zdCBVV29yZDE2IGh1ZmZfbHRhYjExWzE3XVsxN107CitleHRlcm4gY29uc3QgVVdvcmQxNiBodWZmX2x0YWJzY2ZbMTIxXTsKK2V4dGVybiBjb25zdCBVV29yZDE2IGh1ZmZfY3RhYjFbM11bM11bM11bM107CitleHRlcm4gY29uc3QgVVdvcmQxNiBodWZmX2N0YWIyWzNdWzNdWzNdWzNdOworZXh0ZXJuIGNvbnN0IFVXb3JkMTYgaHVmZl9jdGFiM1szXVszXVszXVszXTsKK2V4dGVybiBjb25zdCBVV29yZDE2IGh1ZmZfY3RhYjRbM11bM11bM11bM107CitleHRlcm4gY29uc3QgVVdvcmQxNiBodWZmX2N0YWI1WzldWzldOworZXh0ZXJuIGNvbnN0IFVXb3JkMTYgaHVmZl9jdGFiNls5XVs5XTsKK2V4dGVybiBjb25zdCBVV29yZDE2IGh1ZmZfY3RhYjdbOF1bOF07CitleHRlcm4gY29uc3QgVVdvcmQxNiBodWZmX2N0YWI4WzhdWzhdOworZXh0ZXJuIGNvbnN0IFVXb3JkMTYgaHVmZl9jdGFiOVsxM11bMTNdOworZXh0ZXJuIGNvbnN0IFVXb3JkMTYgaHVmZl9jdGFiMTBbMTNdWzEzXTsKK2V4dGVybiBjb25zdCBVV29yZDE2IGh1ZmZfY3RhYjExWzE3XVsxN107CitleHRlcm4gY29uc3QgVVdvcmQzMiBodWZmX2N0YWJzY2ZbMTIxXTsKKworCisKKy8qCisgIG1pc2MKKyovCitleHRlcm4gY29uc3QgaW50IHNhbXBSYXRlVGFiW05VTV9TQU1QTEVfUkFURVNdOw0KK2V4dGVybiBjb25zdCBpbnQgQmFuZHdpdGhDb2VmVGFiWzhdW05VTV9TQU1QTEVfUkFURVNdOw0KK2V4dGVybiBjb25zdCBpbnQgcmF0ZXNbOF07DQorZXh0ZXJuIGNvbnN0IFVXb3JkOCBzZkJhbmRUb3RhbFNob3J0W05VTV9TQU1QTEVfUkFURVNdOw0KK2V4dGVybiBjb25zdCBVV29yZDggc2ZCYW5kVG90YWxMb25nW05VTV9TQU1QTEVfUkFURVNdOw0KK2V4dGVybiBjb25zdCBpbnQgc2ZCYW5kVGFiU2hvcnRPZmZzZXRbTlVNX1NBTVBMRV9SQVRFU107DQorZXh0ZXJuIGNvbnN0IHNob3J0IHNmQmFuZFRhYlNob3J0Wzc2XTsNCitleHRlcm4gY29uc3QgaW50IHNmQmFuZFRhYkxvbmdPZmZzZXRbTlVNX1NBTVBMRV9SQVRFU107DQorZXh0ZXJuIGNvbnN0IHNob3J0IHNmQmFuZFRhYkxvbmdbMzI1XTsNCisKK2V4dGVybiBjb25zdCBXb3JkMzIgbV9sb2cyX3RhYmxlW0lOVF9CSVRTXTsKKworLyoKKyAgVE5TCisqLworZXh0ZXJuIGNvbnN0IFdvcmQzMiB0bnNDb2VmZjNbOF07DQorZXh0ZXJuIGNvbnN0IFdvcmQzMiB0bnNDb2VmZjNCb3JkZXJzWzhdOw0KK2V4dGVybiBjb25zdCBXb3JkMzIgdG5zQ29lZmY0WzE2XTsNCitleHRlcm4gY29uc3QgV29yZDMyIHRuc0NvZWZmNEJvcmRlcnNbMTZdOw0KK2V4dGVybiBjb25zdCBXb3JkMzIgaW52U0JGWzI0XTsNCitleHRlcm4gY29uc3QgV29yZDE2IHNpZGVJbmZvVGFiTG9uZ1tNQVhfU0ZCX0xPTkcgKyAxXTsNCitleHRlcm4gY29uc3QgV29yZDE2IHNpZGVJbmZvVGFiU2hvcnRbTUFYX1NGQl9TSE9SVCArIDFdOworI2VuZGlmCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9hYWNlbmNfY29yZS5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvYWFjZW5jX2NvcmUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYWExZDIwCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvYWFjZW5jX2NvcmUuaApAQCAtMCwwICsxLDExNyBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJYWFjZW5jX2NvcmUuaA0KKw0KKwlDb250ZW50OglhYWMgZW5jb2RlciBpbnRlcmZhY2UgZnVuY3Rpb25zDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfYWFjZW5jX2NvcmVfaF8KKyNkZWZpbmUgX2FhY2VuY19jb3JlX2hfCisKKw0KKyNpbmNsdWRlICJ0eXBlZGVmLmgiCisjaW5jbHVkZSAiY29uZmlnLmgiDQorI2luY2x1ZGUgImJpdGVuYy5oIg0KKw0KKyNpbmNsdWRlICJwc3lfY29uZmlndXJhdGlvbi5oIg0KKyNpbmNsdWRlICJwc3lfbWFpbi5oIg0KKyNpbmNsdWRlICJxY19tYWluLmgiDQorI2luY2x1ZGUgInBzeV9tYWluLmgiDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBkZWZpbmVzIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tIHN0cnVjdHVyZSBkZWZpbml0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwordHlwZWRlZiAgc3RydWN0IHsKKyAgV29yZDMyICAgc2FtcGxlUmF0ZTsgICAgICAgICAgICAvKiBhdWRpbyBmaWxlIHNhbXBsZSByYXRlICovCisgIFdvcmQzMiAgIGJpdFJhdGU7ICAgICAgICAgICAgICAgLyogZW5jb2RlciBiaXQgcmF0ZSBpbiBiaXRzL3NlYyAqLworICBXb3JkMTYgICBuQ2hhbm5lbHNJbjsgICAgICAgICAgIC8qIG51bWJlciBvZiBjaGFubmVscyBvbiBpbnB1dCAoMSwyKSAqLworICBXb3JkMTYgICBuQ2hhbm5lbHNPdXQ7ICAgICAgICAgIC8qIG51bWJlciBvZiBjaGFubmVscyBvbiBvdXRwdXQgKDEsMikgKi8KKyAgV29yZDE2ICAgYmFuZFdpZHRoOyAgICAgICAgICAgICAvKiB0YXJnZXRlZCBhdWRpbyBiYW5kd2lkdGggaW4gSHogKi8NCisgIFdvcmQxNiAgIGFkdHNVc2VkOwkJCSAgLyogd2hldGhlciB3cml0ZSBhZHRzIGhlYWRlciAqLworfSBBQUNFTkNfQ09ORklHOworDQorDQordHlwZWRlZiBzdHJ1Y3Qgew0KKwkNCisgIEFBQ0VOQ19DT05GSUcgY29uZmlnOyAgICAgLyogV29yZDE2IHNpemU6IDggKi8NCisNCisgIEVMRU1FTlRfSU5GTyBlbEluZm87ICAgICAgLyogV29yZDE2IHNpemU6IDQgKi8NCisNCisgIFFDX1NUQVRFIHFjS2VybmVsOyAgICAgICAgLyogV29yZDE2IHNpemU6IDYgKyA1KFBBRERJTkcpICsgNyhFTEVNRU5UX0JJVFMpICsgNTQoQURKX1RIUl9TVEFURSkgPSA3MiAqLw0KKyAgUUNfT1VUICAgcWNPdXQ7ICAgICAgICAgICAvKiBXb3JkMTYgc2l6ZTogTUFYX0NIQU5ORUxTKjkyMChRQ19PVVRfQ0hBTk5FTCkgKyA1KFFDX09VVF9FTEVNRU5UKSArIDcgPSA5MzIgLyAxODUyICovDQorDQorICBQU1lfT1VUICAgIHBzeU91dDsgICAgICAgIC8qIFdvcmQxNiBzaXplOiBNQVhfQ0hBTk5FTFMqMTg2ICsgMiA9IDE4OCAvIDM3NCAqLw0KKyAgUFNZX0tFUk5FTCBwc3lLZXJuZWw7ICAgICAvKiBXb3JkMTYgc2l6ZTogIDI1ODcgLyA0NDkxICovDQorDQorICBzdHJ1Y3QgQklUU1RSRUFNRU5DT0RFUl9JTklUIGJzZUluaXQ7IC8qIFdvcmQxNiBzaXplOiA2ICovDQorICBzdHJ1Y3QgQklUX0JVRiAgYml0U3RyZWFtOyAgICAgICAgICAgIC8qIFdvcmQxNiBzaXplOiA4ICovDQorICBIQU5ETEVfQklUX0JVRiAgaEJpdFN0cmVhbTsNCisgIGludAkJCSAgaW5pdE9LOw0KKw0KKyAgc2hvcnQJCQkqaW50YnVmOw0KKyAgc2hvcnQJCQkqZW5jYnVmOw0KKyAgc2hvcnQJCQkqaW5idWY7DQorICBpbnQJCQllbmNsZW47DQorICBpbnQJCQlpbmxlbjsNCisgIGludAkJCWludGxlbjsNCisgIGludAkJCXVzZWxlbmd0aDsNCisNCisgIHZvaWQJCQkqaENoZWNrOw0KKyAgVk9fTUVNX09QRVJBVE9SICp2b01lbW9wOw0KKyAgVk9fTUVNX09QRVJBVE9SIHZvTWVtb3ByYXRvcjsNCisNCit9QUFDX0VOQ09ERVI7IC8qIFdvcmQxNiBzaXplOiAzODA5IC8gNjg1MSAqLw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworZnVuY3Rpb25uYW1lOiBBYWNJbml0RGVmYXVsdENvbmZpZworZGVzY3JpcHRpb246ICBnaXZlcyByZWFzb25hYmxlIGRlZmF1bHQgY29uZmlndXJhdGlvbgorcmV0dXJuczogICAgICAtLS0KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KK3ZvaWQgQWFjSW5pdERlZmF1bHRDb25maWcoQUFDRU5DX0NPTkZJRyAqY29uZmlnKTsKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworZnVuY3Rpb25uYW1lOkFhY0VuY09wZW4KK2Rlc2NyaXB0aW9uOiBhbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSBhIG5ldyBlbmNvZGVyIGluc3RhbmNlCityZXR1cm5zOiAgICAgQUFDRU5DX09LIGlmIHN1Y2Nlc3MKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworV29yZDE2ICBBYWNFbmNPcGVuIChBQUNfRU5DT0RFUgkJCQkqaEFhY0VuYywgICAgICAgLyogcG9pbnRlciB0byBhbiBlbmNvZGVyIGhhbmRsZSwgaW5pdGlhbGl6ZWQgb24gcmV0dXJuICovCisgICAgICAgICAgICAgICAgICAgIGNvbnN0ICBBQUNFTkNfQ09ORklHICAgICBjb25maWcpOyAgICAgICAgLyogcHJlLWluaXRpYWxpemVkIGNvbmZpZyBzdHJ1Y3QgKi8KKworV29yZDE2IEFhY0VuY0VuY29kZShBQUNfRU5DT0RFUgkJICAgKmhBYWNFbmMsCisgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgICAgICAgICAgICAqdGltZVNpZ25hbCwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgVVdvcmQ4ICAgICAgICphbmNCeXRlcywgICAgICAvKiE8IHBvaW50ZXIgdG8gYW5jaWxsYXJ5IGRhdGEgYnl0ZXMgKi8KKyAgICAgICAgICAgICAgICAgICAgV29yZDE2ICAgICAgICAgICAgICpudW1BbmNCeXRlcywgICAvKiE8IG51bWJlciBvZiBhbmNpbGxhcnkgRGF0YSBCeXRlcywgc2VuZCBhcyBmaWxsIGVsZW1lbnQgICovCisgICAgICAgICAgICAgICAgICAgIFVXb3JkOCAgICAgICAgICAgICAqb3V0Qnl0ZXMsICAgICAgLyohPCBwb2ludGVyIHRvIG91dHB1dCBidWZmZXIgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICBXb3JkMzIgICAgICAgICAgICAgKm51bU91dEJ5dGVzICAgIC8qITwgbnVtYmVyIG9mIGJ5dGVzIGluIG91dHB1dCBidWZmZXIgKi8KKyAgICAgICAgICAgICAgICAgICAgKTsKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworZnVuY3Rpb25uYW1lOkFhY0VuY0Nsb3NlCitkZXNjcmlwdGlvbjogZGVhbGxvY2F0ZSBhbiBlbmNvZGVyIGluc3RhbmNlCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKK3ZvaWQgQWFjRW5jQ2xvc2UgKEFBQ19FTkNPREVSKiBoQWFjRW5jLCBWT19NRU1fT1BFUkFUT1IgKnBNZW1PUCk7IC8qIGFuIGVuY29kZXIgaGFuZGxlICovCisKKyNlbmRpZiAvKiBfYWFjZW5jX2hfICovCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9hZGpfdGhyLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9hZGpfdGhyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDA1N2NiZQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL2Fkal90aHIuaApAQCAtMCwwICsxLDU3IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorCUZpbGU6CQlhZGpfdGhyLmgNCisNCisJQ29udGVudDoJVGhyZXNob2xkIGNvbXBlbnNhdGlvbiBmdW5jdGlvbiANCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIF9fQURKX1RIUl9ICisjZGVmaW5lIF9fQURKX1RIUl9ICisKKyNpbmNsdWRlICJhZGpfdGhyX2RhdGEuaCIKKyNpbmNsdWRlICJxY19kYXRhLmgiCisjaW5jbHVkZSAiaW50ZXJmYWNlLmgiCisKK1dvcmQxNiBiaXRzMnBlKGNvbnN0IFdvcmQxNiBiaXRzKTsKKworV29yZDMyIEFkalRock5ldyhBREpfVEhSX1NUQVRFKiogcGhBZGpUaHIsCisgICAgICAgICAgICAgICAgIFdvcmQzMiBuRWxlbWVudHMpOworCit2b2lkIEFkalRockRlbGV0ZShBREpfVEhSX1NUQVRFICpoQWRqVGhyKTsKKwordm9pZCBBZGpUaHJJbml0KEFESl9USFJfU1RBVEUgKmhBZGpUaHIsCisgICAgICAgICAgICAgICAgY29uc3QgV29yZDMyIHBlTWVhbiwKKyAgICAgICAgICAgICAgICBXb3JkMzIgY2hCaXRyYXRlKTsKKwordm9pZCBBZGp1c3RUaHJlc2hvbGRzKEFESl9USFJfU1RBVEUgKmFkalRoclN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgIEFUU19FTEVNRU5UKiBBZGpUaHJTdGF0ZUVsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgUFNZX09VVF9DSEFOTkVMIHBzeU91dENoYW5uZWxbTUFYX0NIQU5ORUxTXSwKKyAgICAgICAgICAgICAgICAgICAgICBQU1lfT1VUX0VMRU1FTlQgKnBzeU91dEVsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICpjaEJpdERpc3RyaWJ1dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgbG9nU2ZiRW5lcmd5W01BWF9DSEFOTkVMU11bTUFYX0dST1VQRURfU0ZCXSwKKyAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgc2ZiTlJlbGV2YW50TGluZXNbTUFYX0NIQU5ORUxTXVtNQVhfR1JPVVBFRF9TRkJdLCAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICBRQ19PVVRfRUxFTUVOVCogcWNPRSwKKwkJCQkJICBFTEVNRU5UX0JJVFMqIGVsQml0cywKKwkJCQkJICBjb25zdCBXb3JkMTYgbkNoYW5uZWxzLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiBtYXhCaXRGYWMpOworCit2b2lkIEFkalRoclVwZGF0ZShBVFNfRUxFTUVOVCAqQWRqVGhyU3RhdGVFbGVtZW50LAorICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2IGR5bkJpdHNVc2VkKTsKKworCisjZW5kaWYKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL2Fkal90aHJfZGF0YS5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvYWRqX3Rocl9kYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjVkZDQzNwotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL2Fkal90aHJfZGF0YS5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCWFkal90aHJfZGF0YS5oDQorDQorCUNvbnRlbnQ6CVRocmVzaG9sZCBjb21wZW5zYXRpb24gcGFyYW1ldGVyIA0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgX19BREpfVEhSX0RBVEFfSAorI2RlZmluZSBfX0FESl9USFJfREFUQV9ICisKKyNpbmNsdWRlICJ0eXBlZGVmLmgiDQorI2luY2x1ZGUgInBzeV9jb25zdC5oIgorI2luY2x1ZGUgImxpbmVfcGUuaCIKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgV29yZDE2IGNsaXBTYXZlTG93LCBjbGlwU2F2ZUhpZ2g7CisgICBXb3JkMTYgbWluQml0U2F2ZSwgbWF4Qml0U2F2ZTsKKyAgIFdvcmQxNiBjbGlwU3BlbmRMb3csIGNsaXBTcGVuZEhpZ2g7CisgICBXb3JkMTYgbWluQml0U3BlbmQsIG1heEJpdFNwZW5kOworfSBCUkVTX1BBUkFNOworCit0eXBlZGVmIHN0cnVjdCB7CisgICBVV29yZDggbW9kaWZ5TWluU25yOworICAgV29yZDE2IHN0YXJ0U2ZiTCwgc3RhcnRTZmJTOworfSBBSF9QQVJBTTsKKwordHlwZWRlZiBzdHJ1Y3QgeworICBXb3JkMzIgbWF4UmVkOworICBXb3JkMzIgc3RhcnRSYXRpbywgbWF4UmF0aW87CisgIFdvcmQzMiByZWRSYXRpb0ZhYzsKKyAgV29yZDMyIHJlZE9mZnM7Cit9IE1JTlNOUl9BREFQVF9QQVJBTTsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAvKiBwYXJhbWV0ZXJzIGZvciBiaXRyZXNlcnZvaXIgY29udHJvbCAqLworICBXb3JkMTYgcGVNaW4sIHBlTWF4OworICAvKiBjb25zdGFudCBvZmZzZXQgdG8gcGUgICAgICAgICAgICAgICAqLworICBXb3JkMTYgIHBlT2Zmc2V0OworICAvKiBhdm9pZCBob2xlIHBhcmFtZXRlcnMgICAgICAgICAgICAgICAqLworICBBSF9QQVJBTSBhaFBhcmFtOworICAvKiBwYXJhbXRlcnMgZm9yIGFkYXB0YXRpb24gb2YgbWluU25yICovCisgIE1JTlNOUl9BREFQVF9QQVJBTSBtaW5TbnJBZGFwdFBhcmFtOworICAvKiB2YWx1ZXMgZm9yIGNvcnJlY3Rpb24gb2YgcGUgKi8KKyAgV29yZDE2IHBlTGFzdDsKKyAgV29yZDE2IGR5bkJpdHNMYXN0OworICBXb3JkMTYgcGVDb3JyZWN0aW9uRmFjdG9yOworfSBBVFNfRUxFTUVOVDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICBCUkVTX1BBUkFNICAgYnJlc1BhcmFtTG9uZywgYnJlc1BhcmFtU2hvcnQ7IC8qIFdvcmQxNiBzaXplOiAyKjggKi8KKyAgQVRTX0VMRU1FTlQgIGFkalRoclN0YXRlRWxlbTsgICAgICAgICAgICAgICAvKiBXb3JkMTYgc2l6ZTogMTkgKi8KK30gQURKX1RIUl9TVEFURTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9iYW5kX25yZy5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvYmFuZF9ucmcuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODUwOWRhCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvYmFuZF9ucmcuaApAQCAtMCwwICsxLDQ2IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorCUZpbGU6CQliYW5kX25yZy5oDQorDQorCUNvbnRlbnQ6CUJhbmQvTGluZSBlbmVyZ3kgY2FsY3VsYXRpb25zIGZ1bmN0aW9ucw0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2lmbmRlZiBfQkFORF9OUkdfSAorI2RlZmluZSBfQkFORF9OUkdfSAorCisjaW5jbHVkZSAidHlwZWRlZi5oIgorCisKK3ZvaWQgQ2FsY0JhbmRFbmVyZ3koY29uc3QgV29yZDMyICptZGN0U3BlY3RydW0sCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAqYmFuZE9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICBudW1CYW5kcywKKyAgICAgICAgICAgICAgICAgICAgV29yZDMyICAgICAgICpiYW5kRW5lcmd5LAorICAgICAgICAgICAgICAgICAgICBXb3JkMzIgICAgICAgKmJhbmRFbmVyZ3lTdW0pOworCisKK3ZvaWQgQ2FsY0JhbmRFbmVyZ3lNUyhjb25zdCBXb3JkMzIgKm1kY3RTcGVjdHJ1bUxlZnQsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDMyICptZGN0U3BlY3RydW1SaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgKmJhbmRPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICBudW1CYW5kcywKKyAgICAgICAgICAgICAgICAgICAgICBXb3JkMzIgICAgICAgKmJhbmRFbmVyZ3lNaWQsCisgICAgICAgICAgICAgICAgICAgICAgV29yZDMyICAgICAgICpiYW5kRW5lcmd5TWlkU3VtLAorICAgICAgICAgICAgICAgICAgICAgIFdvcmQzMiAgICAgICAqYmFuZEVuZXJneVNpZGUsCisgICAgICAgICAgICAgICAgICAgICAgV29yZDMyICAgICAgICpiYW5kRW5lcmd5U2lkZVN1bSk7CisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvYml0X2NudC5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvYml0X2NudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwODMxOWUKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9iaXRfY250LmgKQEAgLTAsMCArMSwxMDYgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCWJpdF9jbnQuaA0KKw0KKwlDb250ZW50OglIdWZmbWFuIEJpdGNvdW50ZXIgJiBjb2RlciBzdHJ1Y3R1cmUgYW5kIGZ1bmN0aW9ucw0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgX19CSVRDT1VOVF9ICisjZGVmaW5lIF9fQklUQ09VTlRfSAorCisjaW5jbHVkZSAiYml0YnVmZmVyLmgiDQorI2luY2x1ZGUgImJhc2ljX29wLmgiCisjZGVmaW5lIElOVkFMSURfQklUQ09VTlQgKE1BWF8xNi80KQorCisvKgorICBjb2RlIGJvb2sgbnVtYmVyIHRhYmxlCisqLworCitlbnVtIGNvZGVCb29rTm97CisgIENPREVfQk9PS19aRVJPX05PPSAgICAgICAgICAgICAgIDAsCisgIENPREVfQk9PS18xX05PPSAgICAgICAgICAgICAgICAgIDEsCisgIENPREVfQk9PS18yX05PPSAgICAgICAgICAgICAgICAgIDIsCisgIENPREVfQk9PS18zX05PPSAgICAgICAgICAgICAgICAgIDMsCisgIENPREVfQk9PS180X05PPSAgICAgICAgICAgICAgICAgIDQsCisgIENPREVfQk9PS181X05PPSAgICAgICAgICAgICAgICAgIDUsCisgIENPREVfQk9PS182X05PPSAgICAgICAgICAgICAgICAgIDYsCisgIENPREVfQk9PS183X05PPSAgICAgICAgICAgICAgICAgIDcsCisgIENPREVfQk9PS184X05PPSAgICAgICAgICAgICAgICAgIDgsCisgIENPREVfQk9PS185X05PPSAgICAgICAgICAgICAgICAgIDksCisgIENPREVfQk9PS18xMF9OTz0gICAgICAgICAgICAgICAgMTAsCisgIENPREVfQk9PS19FU0NfTk89ICAgICAgICAgICAgICAgMTEsCisgIENPREVfQk9PS19SRVNfTk89ICAgICAgICAgICAgICAgMTIsCisgIENPREVfQk9PS19QTlNfTk89ICAgICAgICAgICAgICAgMTMKK307CisKKy8qCisgIGNvZGUgYm9vayBpbmRleCB0YWJsZQorKi8KKworZW51bSBjb2RlQm9va05keHsKKyAgQ09ERV9CT09LX1pFUk9fTkRYPTAsCisgIENPREVfQk9PS18xX05EWCwKKyAgQ09ERV9CT09LXzJfTkRYLAorICBDT0RFX0JPT0tfM19ORFgsCisgIENPREVfQk9PS180X05EWCwKKyAgQ09ERV9CT09LXzVfTkRYLAorICBDT0RFX0JPT0tfNl9ORFgsCisgIENPREVfQk9PS183X05EWCwKKyAgQ09ERV9CT09LXzhfTkRYLAorICBDT0RFX0JPT0tfOV9ORFgsCisgIENPREVfQk9PS18xMF9ORFgsCisgIENPREVfQk9PS19FU0NfTkRYLAorICBDT0RFX0JPT0tfUkVTX05EWCwKKyAgQ09ERV9CT09LX1BOU19ORFgsCisgIE5VTUJFUl9PRl9DT0RFX0JPT0tTCit9OworCisvKgorICBjb2RlIGJvb2sgbGF2IHRhYmxlCisqLworCitlbnVtIGNvZGVCb29rTGF2eworICBDT0RFX0JPT0tfWkVST19MQVY9MCwKKyAgQ09ERV9CT09LXzFfTEFWPTEsCisgIENPREVfQk9PS18yX0xBVj0xLAorICBDT0RFX0JPT0tfM19MQVY9MiwKKyAgQ09ERV9CT09LXzRfTEFWPTIsCisgIENPREVfQk9PS181X0xBVj00LAorICBDT0RFX0JPT0tfNl9MQVY9NCwKKyAgQ09ERV9CT09LXzdfTEFWPTcsCisgIENPREVfQk9PS184X0xBVj03LAorICBDT0RFX0JPT0tfOV9MQVY9MTIsCisgIENPREVfQk9PS18xMF9MQVY9MTIsCisgIENPREVfQk9PS19FU0NfTEFWPTE2LAorICBDT0RFX0JPT0tfU0NGX0xBVj02MCwKKyAgQ09ERV9CT09LX1BOU19MQVY9NjAKK307CisKK1dvcmQxNiBiaXRDb3VudChjb25zdCBXb3JkMTYgKmFRdWFudFNwZWN0cnVtLAorICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgbm9PZlNwZWNMaW5lcywKKyAgICAgICAgICAgICAgICBXb3JkMTYgICAgICAgIG1heFZhbCwKKyAgICAgICAgICAgICAgICBXb3JkMTYgICAgICAgKmJpdENvdW50THV0KTsKKworV29yZDE2IGNvZGVWYWx1ZXMoV29yZDE2ICp2YWx1ZXMsIFdvcmQxNiB3aWR0aCwgV29yZDE2IGNvZGVCb29rLCBIQU5ETEVfQklUX0JVRiBoQml0c3RyZWFtKTsKKworV29yZDE2IGJpdENvdW50U2NhbGVmYWN0b3JEZWx0YShXb3JkMTYgZGVsdGEpOworV29yZDE2IGNvZGVTY2FsZWZhY3RvckRlbHRhKFdvcmQxNiBzY2FsZWZhY3RvciwgSEFORExFX0JJVF9CVUYgaEJpdHN0cmVhbSk7CisKKworCisjZW5kaWYKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL2JpdGJ1ZmZlci5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvYml0YnVmZmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2I4NTBjOQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL2JpdGJ1ZmZlci5oCkBAIC0wLDAgKzEsODkgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCWJpdGJ1ZmZlci5oDQorDQorCUNvbnRlbnQ6CUJpdCBCdWZmZXIgTWFuYWdlbWVudCBzdHJ1Y3R1cmUgYW5kIGZ1bmN0aW9ucw0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgQklUQlVGRkVSX0gKKyNkZWZpbmUgQklUQlVGRkVSX0gKKworI2luY2x1ZGUgInR5cGVkZWYuaCIKKworCitlbnVtIGRpcmVjdGlvbgoreworICBmb3J3YXJkRGlyZWN0aW9uLAorICBiYWNrd2FyZERpcmVjdGlvbgorfTsKKworCisvKiEKKyAgIFRoZSBwb2ludGVyICdwUmVhZE5leHQnIHBvaW50cyB0byB0aGUgbmV4dCBhdmFpbGFibGUgd29yZCwgd2hlcmUgYml0cyBjYW4gYmUgcmVhZCBmcm9tLiBUaGUgcG9pbnRlcgorICAgJ3BXcml0ZU5leHQnIHBvaW50cyB0byB0aGUgbmV4dCBhdmFpbGFibGUgd29yZCwgd2hlcmUgYml0cyBjYW4gYmUgd3JpdHRlbiB0by4gVGhlIHBvaW50ZXIgcEJpdEJ1ZkJhc2UKKyAgIHBvaW50cyB0byB0aGUgc3RhcnQgb2YgdGhlIGJpdHN0cmVhbSBidWZmZXIgYW5kIHRoZSBwb2ludGVyIHBCaXRCdWZFbmQgcG9pbnRzIHRvIHRoZSBlbmQgb2YgdGhlIGJpdHN0cmVhbQorICAgYnVmZmVyLiBUaGUgdHdvIHBvaW50ZXJzIGFyZSB1c2VkIGFzIGxvd2VyLWJvdW5kIHJlc3BlY3RpdmVseSB1cHBlci1ib3VuZCBhZGRyZXNzIGZvciB0aGUgbW9kdWxvIGFkZHJlc3NpbmcKKyAgIG1vZGUuCisKKyAgIFRoZSBlbGVtZW50IGNudEJpdHMgY29udGFpbnMgdGhlIGN1cnJlbnRseSBhdmFpbGFibGUgYml0cyBpbiB0aGUgYml0IGJ1ZmZlci4gSXQgd2lsbCBiZSBpbmNyZW1lbnRlZCB3aGVuCisgICBiaXRzIGFyZSB3cml0dGVuIHRvIHRoZSBiaXRzdHJlYW0gYnVmZmVyIGFuZCBkZWNyZW1lbnRlZCB3aGVuIGJpdHMgYXJlIHJlYWQgZnJvbSB0aGUgYml0c3RyZWFtIGJ1ZmZlci4KKyovCitzdHJ1Y3QgQklUX0JVRgoreworICBVV29yZDggKnBCaXRCdWZCYXNlOyAgICAgICAgICAvKiE8IHBvaW50ZXIgcG9pbnRzIHRvIGZpcnN0IHBvc2l0aW9uIGluIGJpdHN0cmVhbSBidWZmZXIgKi8KKyAgVVdvcmQ4ICpwQml0QnVmRW5kOyAgICAgICAgICAgLyohPCBwb2ludGVyIHBvaW50cyB0byBsYXN0IHBvc2l0aW9uIGluIGJpdHN0cmVhbSBidWZmZXIgKi8KKworICBVV29yZDggKnBXcml0ZU5leHQ7ICAgICAgICAgICAvKiE8IHBvaW50ZXIgcG9pbnRzIHRvIG5leHQgYXZhaWxhYmxlIHdvcmQgaW4gYml0c3RyZWFtIGJ1ZmZlciB0byB3cml0ZSAqLworCisgIFVXb3JkMzIgY2FjaGU7CisKKyAgV29yZDE2ICB3Qml0UG9zOyAgICAgICAgICAgICAgLyohPCAzMTw9d0JpdFBvczw9MCovCisgIFdvcmQxNiAgY250Qml0czsgICAgICAgICAgICAgIC8qITwgbnVtYmVyIG9mIGF2YWlsYWJsZSBiaXRzIGluIHRoZSBiaXRzdHJlYW0gYnVmZmVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JpdGUgYml0cyB0byBiaXRzdHJlYW0gYnVmZmVyICA9PiBpbmNyZW1lbnQgY250Qml0cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWQgYml0cyBmcm9tIGJpdHN0cmVhbSBidWZmZXIgPT4gZGVjcmVtZW50IGNudEJpdHMgKi8KKyAgV29yZDE2ICBzaXplOyAgICAgICAgICAgICAgICAgLyohPCBzaXplIG9mIGJpdGJ1ZmZlciBpbiBiaXRzICovCisgIFdvcmQxNiAgaXNWYWxpZDsgICAgICAgICAgICAgIC8qITwgaW5kaWNhdGVzIHdoZXRoZXIgdGhlIGluc3RhbmNlIGhhcyBiZWVuIGluaXRpYWxpemVkICovCit9OyAvKiBzaXplIFdvcmQxNjogOCAqLworCisvKiEgRGVmaW5lIHBvaW50ZXIgdG8gYml0IGJ1ZmZlciBzdHJ1Y3R1cmUgKi8KK3R5cGVkZWYgc3RydWN0IEJJVF9CVUYgKkhBTkRMRV9CSVRfQlVGOworCisKK0hBTkRMRV9CSVRfQlVGIENyZWF0ZUJpdEJ1ZmZlcihIQU5ETEVfQklUX0JVRiBoQml0QnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVXb3JkOCAqcEJpdEJ1ZkJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICBiaXRCdWZTaXplKTsKKworCit2b2lkIERlbGV0ZUJpdEJ1ZmZlcihIQU5ETEVfQklUX0JVRiAqaEJpdEJ1Zik7CisKKworV29yZDE2IEdldEJpdHNBdmFpbChIQU5ETEVfQklUX0JVRiBoQml0QnVmKTsKKworCitXb3JkMTYgV3JpdGVCaXRzKEhBTkRMRV9CSVRfQlVGIGhCaXRCdWYsCisgICAgICAgICAgICAgICAgIFdvcmQzMiB3cml0ZVZhbHVlLAorICAgICAgICAgICAgICAgICBXb3JkMTYgbm9CaXRzVG9Xcml0ZSk7CisKK3ZvaWQgUmVzZXRCaXRCdWYoSEFORExFX0JJVF9CVUYgaEJpdEJ1ZiwKKyAgICAgICAgICAgICAgICAgVVdvcmQ4ICpwQml0QnVmQmFzZSwKKyAgICAgICAgICAgICAgICAgV29yZDE2ICBiaXRCdWZTaXplKTsKKworI2RlZmluZSBHZXROckJpdHNBdmFpbGFibGUoaEJpdEJ1ZikgKCAoaEJpdEJ1ZiktPmNudEJpdHMpCisjZGVmaW5lIEdldE5yQml0c1JlYWQoaEJpdEJ1ZikgICAgICAgKChoQml0QnVmKS0+c2l6ZS0oaEJpdEJ1ZiktPmNudEJpdHMpCisKKyNlbmRpZiAvKiBCSVRCVUZGRVJfSCAqLwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvYml0ZW5jLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9iaXRlbmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMTUxMDU3Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvYml0ZW5jLmgKQEAgLTAsMCArMSw1MCBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJYml0ZW5jLmgNCisNCisJQ29udGVudDoJQml0c3RyZWFtIGVuY29kZXIgc3RydWN0dXJlIGFuZCBmdW5jdGlvbnMNCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIF9CSVRFTkNfSAorI2RlZmluZSBfQklURU5DX0gKKworI2luY2x1ZGUgInFjX2RhdGEuaCIKKyNpbmNsdWRlICJ0bnMuaCIKKyNpbmNsdWRlICJjaGFubmVsX21hcC5oIgorI2luY2x1ZGUgImludGVyZmFjZS5oIiAgCisKK3N0cnVjdCBCSVRTVFJFQU1FTkNPREVSX0lOSVQKK3sKKyAgV29yZDE2IG5DaGFubmVsczsKKyAgV29yZDMyIGJpdHJhdGU7CisgIFdvcmQzMiBzYW1wbGVSYXRlOworICBXb3JkMTYgcHJvZmlsZTsKK307CisKKworCitXb3JkMTYgV3JpdGVCaXRzdHJlYW0gKEhBTkRMRV9CSVRfQlVGIGhCaXRzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgIEVMRU1FTlRfSU5GTyBlbEluZm8sCisgICAgICAgICAgICAgICAgICAgICAgIFFDX09VVCAqcWNPdXQsCisgICAgICAgICAgICAgICAgICAgICAgIFBTWV9PVVQgKnBzeU91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICpnbG9iVXNlZEJpdHMsDQorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBVV29yZDggKmFuY0J5dGVzLA0KKwkJCQkJICAgV29yZDE2IHNhbXBsZXJhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgKTsKKworI2VuZGlmIC8qIF9CSVRFTkNfSCAqLwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvYmxvY2tfc3dpdGNoLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9ibG9ja19zd2l0Y2guaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTM1ODE5Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvYmxvY2tfc3dpdGNoLmgKQEAgLTAsMCArMSw3MiBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJYmxvY2tfc3dpdGNoLmgNCisNCisJQ29udGVudDoJQmxvY2sgc3dpdGNoaW5nIHN0cnVjdHVyZSBhbmQgZnVuY3Rpb25zDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfQkxPQ0tfU1dJVENIX0gKKyNkZWZpbmUgX0JMT0NLX1NXSVRDSF9ICisKKyNpbmNsdWRlICJ0eXBlZGVmLmgiCisKKworLyoqKioqKioqKioqKioqKioqKiBEZWZpbmVzICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKyNkZWZpbmUgQkxPQ0tfU1dJVENISU5HX0lJUl9MRU4gMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBMZW5ndGggb2YgSGlnaFBhc3MtRklSLUZpbHRlciBmb3IgQXR0YWNrLURldGVjdGlvbiAqLworI2RlZmluZSBCTE9DS19TV0lUQ0hfV0lORE9XUyBUUkFOU19GQUMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG51bWJlciBvZiB3aW5kb3dzIGZvciBlbmVyZ3kgY2FsY3VsYXRpb24gKi8KKyNkZWZpbmUgQkxPQ0tfU1dJVENIX1dJTkRPV19MRU4gRlJBTUVfTEVOX1NIT1JUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtaW5pbWFsIGdyYW51bGFyaXR5IG9mIGVuZXJneSBjYWxjdWxhdGlvbiAqLworCisKKworLyoqKioqKioqKioqKioqKioqKiBTdHJ1Y3R1cmVzICoqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3R5cGVkZWYgc3RydWN0eworICBXb3JkMzIgaW52QXR0YWNrUmF0aW87CisgIFdvcmQxNiB3aW5kb3dTZXF1ZW5jZTsKKyAgV29yZDE2IG5leHR3aW5kb3dTZXF1ZW5jZTsKKyAgRmxhZyBhdHRhY2s7CisgIEZsYWcgbGFzdGF0dGFjazsKKyAgV29yZDE2IGF0dGFja0luZGV4OworICBXb3JkMTYgbGFzdEF0dGFja0luZGV4OworICBXb3JkMTYgbm9PZkdyb3VwczsKKyAgV29yZDE2IGdyb3VwTGVuW1RSQU5TX0ZBQ107CisgIFdvcmQzMiB3aW5kb3dOcmdbMl1bQkxPQ0tfU1dJVENIX1dJTkRPV1NdOyAgICAgLyogdGltZSBzaWduYWwgZW5lcmd5IGluIFN1YndpbmRvd3MgKGxhc3QgYW5kIGN1cnJlbnQpICovCisgIFdvcmQzMiB3aW5kb3dOcmdGWzJdW0JMT0NLX1NXSVRDSF9XSU5ET1dTXTsgICAgLyogZmlsdGVyZWQgdGltZSBzaWduYWwgZW5lcmd5IGluIHNlZ21lbnRzIChsYXN0IGFuZCBjdXJyZW50KSAqLworICBXb3JkMzIgaWlyU3RhdGVzW0JMT0NLX1NXSVRDSElOR19JSVJfTEVOXTsgICAgIC8qIGZpbHRlciBkZWxheS1saW5lICovCisgIFdvcmQzMiBtYXhXaW5kb3dOcmc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbWF4IGVuZXJneSBpbiBzdWJ3aW5kb3dzICovCisgIFdvcmQzMiBhY2NXaW5kb3dOcmc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogcmVjdXJzaXZlbHkgYWNjdW11bGF0ZWQgd2luZG93TnJnRiAqLworfUJMT0NLX1NXSVRDSElOR19DT05UUk9MOworCisKKworCisKK1dvcmQxNiBJbml0QmxvY2tTd2l0Y2hpbmcoQkxPQ0tfU1dJVENISU5HX0NPTlRST0wgKmJsb2NrU3dpdGNoaW5nQ29udHJvbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDMyIGJpdFJhdGUsIGNvbnN0IFdvcmQxNiBuQ2hhbm5lbHMpOworCitXb3JkMTYgQmxvY2tTd2l0Y2hpbmcoQkxPQ0tfU1dJVENISU5HX0NPTlRST0wgKmJsb2NrU3dpdGNoaW5nQ29udHJvbCwKKyAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgKnRpbWVTaWduYWwsCisJCQkJCSAgV29yZDMyICBzYW1wbGVSYXRlLAorICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiBjaEluY3JlbWVudCk7CisKK1dvcmQxNiBTeW5jQmxvY2tTd2l0Y2hpbmcoQkxPQ0tfU1dJVENISU5HX0NPTlRST0wgKmJsb2NrU3dpdGNoaW5nQ29udHJvbExlZnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEJMT0NLX1NXSVRDSElOR19DT05UUk9MICpibG9ja1N3aXRjaGluZ0NvbnRyb2xSaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2IG5vT2ZDaGFubmVscyk7CisKKworCisjZW5kaWYgIC8qICNpZm5kZWYgX0JMT0NLX1NXSVRDSF9IICovCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9jaGFubmVsX21hcC5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvY2hhbm5lbF9tYXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lM2FhOGRjCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvY2hhbm5lbF9tYXAuaApAQCAtMCwwICsxLDM3IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorCUZpbGU6CQljaGFubmVsX21hcC5oDQorDQorCUNvbnRlbnQ6CWNoYW5uZWwgbWFwcGluZyBmdW5jdGlvbnMNCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIF9DSEFOTkVMX01BUF9ICisjZGVmaW5lIF9DSEFOTkVMX01BUF9ICisKKyNpbmNsdWRlICJwc3lfY29uc3QuaCIKKyNpbmNsdWRlICJxY19kYXRhLmgiCisKK1dvcmQxNiBJbml0RWxlbWVudEluZm8gKFdvcmQxNiBuQ2hhbm5lbHMsIEVMRU1FTlRfSU5GTyogZWxJbmZvKTsKKworV29yZDE2IEluaXRFbGVtZW50Qml0cyhFTEVNRU5UX0JJVFMgKmVsZW1lbnRCaXRzLAorICAgICAgICAgICAgICAgICAgICAgICBFTEVNRU5UX0lORk8gZWxJbmZvLAorICAgICAgICAgICAgICAgICAgICAgICBXb3JkMzIgYml0cmF0ZVRvdCwKKyAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IGF2ZXJhZ2VCaXRzVG90LAorICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgc3RhdGljQml0c1RvdCk7CisKKyNlbmRpZiAvKiBDSEFOTkVMX01BUF9IICovCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9jb25maWcuaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL2NvbmZpZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyMTFjOGYKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9jb25maWcuaApAQCAtMCwwICsxLDM2IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorCUZpbGU6CQljb25maWcuaA0KKw0KKwlDb250ZW50OglhYWMgZW5jb2RlciBwYXJhbWV0ZXINCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKyNpZm5kZWYgX0FBQ0VOQ19DT05GSUdfSF8NCisjZGVmaW5lIF9BQUNFTkNfQ09ORklHX0hfDQorDQorI2RlZmluZSBNQVhfQ0hBTk5FTFMgICAgICAgIDINCisNCisjZGVmaW5lIEFBQ0VOQ19CTE9DS1NJWkUgICAgMTAyNCAgIC8qISBlbmNvZGVyIG9ubHkgdGFrZXMgQkxPQ0tTSVpFIHNhbXBsZXMgYXQgYSB0aW1lICovDQorI2RlZmluZSBBQUNFTkNfVFJBTlNfRkFDICAgIDggICAgICAvKiEgZW5jb2RlciBzaG9ydCBsb25nIHJhdGlvICovDQorDQorDQorI2RlZmluZSBNQVhCSVRTX0NPRUYJCTYxNDQKKyNkZWZpbmUgTUlOQklUU19DT0VGCQk3NDQNCisNCisNCisjZW5kaWYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9keW5fYml0cy5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvZHluX2JpdHMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDY4ZmEyCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvZHluX2JpdHMuaApAQCAtMCwwICsxLDgyIEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorCUZpbGU6CQlkeW5fYml0cy5oDQorDQorCUNvbnRlbnQ6CU5vaXNlbGVzcyBjb2RlciBtb2R1bGUgc3RydWN0dXJlIGFuZCBmdW5jdGlvbnMNCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIF9fRFlOX0JJVFNfSAorI2RlZmluZSBfX0RZTl9CSVRTX0gKKworI2luY2x1ZGUgInBzeV9jb25zdC5oIgorI2luY2x1ZGUgInRucy5oIgorI2luY2x1ZGUgImJpdF9jbnQuaCIKKworCisKKyNkZWZpbmUgTUFYX1NFQ1RJT05TICAgICAgICAgIE1BWF9HUk9VUEVEX1NGQgorI2RlZmluZSBTRUNUX0VTQ19WQUxfTE9ORyAgICAzMQorI2RlZmluZSBTRUNUX0VTQ19WQUxfU0hPUlQgICAgNworI2RlZmluZSBDT0RFX0JPT0tfQklUUyAgICAgICAgNAorI2RlZmluZSBTRUNUX0JJVFNfTE9ORyAgICAgICAgNQorI2RlZmluZSBTRUNUX0JJVFNfU0hPUlQgICAgICAgMworCit0eXBlZGVmIHN0cnVjdAoreworICBXb3JkMTYgY29kZUJvb2s7CisgIFdvcmQxNiBzZmJTdGFydDsKKyAgV29yZDE2IHNmYkNudDsKKyAgV29yZDE2IHNlY3Rpb25CaXRzOworfQorU0VDVElPTl9JTkZPOworCisKKworCit0eXBlZGVmIHN0cnVjdAoreworICBXb3JkMTYgYmxvY2tUeXBlOworICBXb3JkMTYgbm9PZkdyb3VwczsKKyAgV29yZDE2IHNmYkNudDsKKyAgV29yZDE2IG1heFNmYlBlckdyb3VwOworICBXb3JkMTYgc2ZiUGVyR3JvdXA7CisgIFdvcmQxNiBub09mU2VjdGlvbnM7CisgIFNFQ1RJT05fSU5GTyBzZWN0aW9uSW5mb1tNQVhfU0VDVElPTlNdOworICBXb3JkMTYgc2lkZUluZm9CaXRzOyAgICAgICAgICAgICAvKiBzZWN0aW9uaW5nIGJpdHMgICAgICAgKi8KKyAgV29yZDE2IGh1ZmZtYW5CaXRzOyAgICAgICAgICAgICAgLyogaHVmZm1hbiAgICBjb2RlZCBiaXRzICovCisgIFdvcmQxNiBzY2FsZWZhY0JpdHM7ICAgICAgICAgICAgIC8qIHNjYWxlZmFjICAgY29kZWQgYml0cyAqLworICBXb3JkMTYgZmlyc3RTY2Y7ICAgICAgICAgICAgICAgICAvKiBmaXJzdCBzY2YgdG8gYmUgY29kZWQgKi8KKyAgV29yZDE2IGJpdExvb2tVcFtNQVhfU0ZCX0xPTkcqKENPREVfQk9PS19FU0NfTkRYKzEpXTsKKyAgV29yZDE2IG1lcmdlR2Fpbkxvb2tVcFtNQVhfU0ZCX0xPTkddOworfQorU0VDVElPTl9EQVRBOyAvKiAgV29yZDE2IHNpemU6IDEwICsgNjAoTUFYX1NFQ1RJT05TKSo0KFNFQ1RJT05fSU5GTykgKyA1MShNQVhfU0ZCX0xPTkcpKjEyKENPREVfQk9PS19FU0NfTkRYKzEpICsgNTEoTUFYX1NGQl9MT05HKSA9IDkxMyAqLworCisKK1dvcmQxNiBCQ0luaXQodm9pZCk7CisKK1dvcmQxNiBkeW5CaXRDb3VudChjb25zdCBXb3JkMTYgKnF1YW50U3BlY3RydW0sCisgICAgICAgICAgICAgICAgICAgY29uc3QgVVdvcmQxNiAqbWF4VmFsdWVJblNmYiwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgKnNjYWxlZmFjLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiBibG9ja1R5cGUsCisgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2IHNmYkNudCwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgbWF4U2ZiUGVyR3JvdXAsCisgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2IHNmYlBlckdyb3VwLAorICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAqc2ZiT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgIFNFQ1RJT05fREFUQSAqc2VjdGlvbkRhdGEpOworCisjZW5kaWYKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL2dycF9kYXRhLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9ncnBfZGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2NjY1NzcKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9ncnBfZGF0YS5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCWdycF9kYXRhLmgNCisNCisJQ29udGVudDoJU2hvcnQgYmxvY2sgZ3JvdXBpbmcgZnVuY3Rpb24NCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIF9fR1JQX0RBVEFfSF9fCisjZGVmaW5lIF9fR1JQX0RBVEFfSF9fCisjaW5jbHVkZSAicHN5X2RhdGEuaCIKKyNpbmNsdWRlICJ0eXBlZGVmcy5oIgorCit2b2lkCitncm91cFNob3J0RGF0YShXb3JkMzIgICAgICAgICptZGN0U3BlY3RydW0sCisgICAgICAgICAgICAgICBXb3JkMzIgICAgICAgICp0bXBTcGVjdHJ1bSwKKyAgICAgICAgICAgICAgIFNGQl9USFJFU0hPTEQgKnNmYlRocmVzaG9sZCwKKyAgICAgICAgICAgICAgIFNGQl9FTkVSR1kgICAgKnNmYkVuZXJneSwKKyAgICAgICAgICAgICAgIFNGQl9FTkVSR1kgICAgKnNmYkVuZXJneU1TLAorICAgICAgICAgICAgICAgU0ZCX0VORVJHWSAgICAqc2ZiU3ByZWFkZWRFbmVyZ3ksCisgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgICBzZmJDbnQsCisgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgICpzZmJPZmZzZXQsCisgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgICpzZmJNaW5TbnIsCisgICAgICAgICAgICAgICBXb3JkMTYgICAgICAgICpncm91cGVkU2ZiT2Zmc2V0LAorICAgICAgICAgICAgICAgV29yZDE2ICAgICAgICAqbWF4U2ZiUGVyR3JvdXAsCisgICAgICAgICAgICAgICBXb3JkMTYgICAgICAgICpncm91cGVkU2ZiTWluU25yLAorICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICAgbm9PZkdyb3VwcywKKyAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgKmdyb3VwTGVuKTsKKworI2VuZGlmIC8qIF9JTlRFUkZBQ0VfSCAqLwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvaW50ZXJmYWNlLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9pbnRlcmZhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODQzMzRhCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvaW50ZXJmYWNlLmgKQEAgLTAsMCArMSwxMDYgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCWludGVyZmFjZS5oDQorDQorCUNvbnRlbnQ6CXBzeWNob2FjY291c3RpYy9xdWFudGl6ZXIgc3RydWN0dXJlcyBhbmQgaW50ZXJmYWNlDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfSU5URVJGQUNFX0gKKyNkZWZpbmUgX0lOVEVSRkFDRV9ICisKKyNpbmNsdWRlICJjb25maWcuaCINCisjaW5jbHVkZSAicHN5X2NvbnN0LmgiCisjaW5jbHVkZSAicHN5X2RhdGEuaCIKKyNpbmNsdWRlICJ0eXBlZGVmcy5oIgorCisKK2VudW0KK3sKKyAgTVNfTk9ORSA9IDAsCisgIE1TX1NPTUUgPSAxLAorICBNU19BTEwgID0gMgorfTsKKworZW51bQoreworICBNU19PTiA9IDEKK307CisKK3N0cnVjdCBUT09MU0lORk8geworICBXb3JkMTYgbXNEaWdlc3Q7CisgIFdvcmQxNiBtc01hc2tbTUFYX0dST1VQRURfU0ZCXTsKK307CisKKwordHlwZWRlZiBzdHJ1Y3QgeworICBXb3JkMTYgIHNmYkNudDsKKyAgV29yZDE2ICBzZmJQZXJHcm91cDsKKyAgV29yZDE2ICBtYXhTZmJQZXJHcm91cDsKKyAgV29yZDE2ICB3aW5kb3dTZXF1ZW5jZTsKKyAgV29yZDE2ICB3aW5kb3dTaGFwZTsKKyAgV29yZDE2ICBncm91cGluZ01hc2s7CisgIFdvcmQxNiAgc2ZiT2Zmc2V0c1tNQVhfR1JPVVBFRF9TRkIrMV07CisgIFdvcmQxNiAgbWRjdFNjYWxlOyAKKyAgV29yZDMyICpzZmJFbmVyZ3k7IAorICBXb3JkMzIgKnNmYlNwcmVhZGVkRW5lcmd5OworICBXb3JkMzIgKnNmYlRocmVzaG9sZDsgICAgICAgCisgIFdvcmQzMiAqbWRjdFNwZWN0cnVtOyAgICAgICAgCisgIFdvcmQzMiAgc2ZiRW5TdW1MUjsKKyAgV29yZDMyICBzZmJFblN1bU1TOworICBXb3JkMzIgc2ZiRGlzdFtNQVhfR1JPVVBFRF9TRkJdOworICBXb3JkMzIgc2ZiRGlzdE5ld1tNQVhfR1JPVVBFRF9TRkJdOworICBXb3JkMTYgIHNmYk1pblNucltNQVhfR1JPVVBFRF9TRkJdOworICBXb3JkMTYgbWluU2ZNYXhRdWFudFtNQVhfR1JPVVBFRF9TRkJdOworICBXb3JkMTYgbWluU2NmQ2FsY3VsYXRlZFtNQVhfR1JPVVBFRF9TRkJdOworICBXb3JkMTYgcHJldlNjZkxhc3RbTUFYX0dST1VQRURfU0ZCXTsKKyAgV29yZDE2IHByZXZTY2ZOZXh0W01BWF9HUk9VUEVEX1NGQl07CisgIFdvcmQxNiBkZWx0YVBlTGFzdFtNQVhfR1JPVVBFRF9TRkJdOworICBUTlNfSU5GTyB0bnNJbmZvOworfSBQU1lfT1VUX0NIQU5ORUw7IC8qIFdvcmQxNiBzaXplOiAxNCArIDYwKE1BWF9HUk9VUEVEX1NGQikgKyAxMTIoVE5TX0lORk8pID0gMTg2ICovCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgc3RydWN0IFRPT0xTSU5GTyB0b29sc0luZm87CisgIFdvcmQxNiBncm91cGVkU2ZiT2Zmc2V0W01BWF9DSEFOTkVMU11bTUFYX0dST1VQRURfU0ZCKzFdOyAgLyogcGx1cyBvbmUgZm9yIGxhc3QgZHVtbXkgb2Zmc2V0ICEgKi8KKyAgV29yZDE2IGdyb3VwZWRTZmJNaW5TbnJbTUFYX0NIQU5ORUxTXVtNQVhfR1JPVVBFRF9TRkJdOworfSBQU1lfT1VUX0VMRU1FTlQ7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgLyogaW5mb3JtYXRpb24gc2hhcmVkIGJ5IGJvdGggY2hhbm5lbHMgICovCisgIFBTWV9PVVRfRUxFTUVOVCAgcHN5T3V0RWxlbWVudDsKKyAgLyogaW5mb3JtYXRpb24gc3BlY2lmaWMgdG8gZWFjaCBjaGFubmVsICovCisgIFBTWV9PVVRfQ0hBTk5FTCAgcHN5T3V0Q2hhbm5lbFtNQVhfQ0hBTk5FTFNdOworfVBTWV9PVVQ7CisKK3ZvaWQgQnVpbGRJbnRlcmZhY2UoV29yZDMyICAgICAgICAgICAgICAgICAqbWRjdFNwZWN0cnVtLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgICAgICAgICAgICBtZGN0U2NhbGUsCisgICAgICAgICAgICAgICAgICAgIFNGQl9USFJFU0hPTEQgICAgICAgICAgKnNmYlRocmVzaG9sZCwKKyAgICAgICAgICAgICAgICAgICAgU0ZCX0VORVJHWSAgICAgICAgICAgICAqc2ZiRW5lcmd5LAorICAgICAgICAgICAgICAgICAgICBTRkJfRU5FUkdZICAgICAgICAgICAgICpzZmJTcHJlYWRlZEVuZXJneSwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgU0ZCX0VORVJHWV9TVU0gICAgc2ZiRW5lcmd5U3VtTFIsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNGQl9FTkVSR1lfU1VNICAgIHNmYkVuZXJneVN1bU1TLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgICAgICAgICAgICB3aW5kb3dTZXF1ZW5jZSwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICAgICAgICAgICAgd2luZG93U2hhcGUsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgICAgICAgICAgIHNmYkNudCwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICAgICAgICAgICAqc2ZiT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgICAgICAgICAgICBtYXhTZmJQZXJHcm91cCwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICAgICAgICAgICAqZ3JvdXBlZFNmYk1pblNuciwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICAgICAgICAgICAgbm9PZkdyb3VwcywKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICAgICAgICAgICAqZ3JvdXBMZW4sCisgICAgICAgICAgICAgICAgICAgIFBTWV9PVVRfQ0hBTk5FTCAgICAgICAgKnBzeU91dENoKTsKKworI2VuZGlmIC8qIF9JTlRFUkZBQ0VfSCAqLwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvbGluZV9wZS5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvbGluZV9wZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlZDkzOGIKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9saW5lX3BlLmgKQEAgLTAsMCArMSw3NSBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJbGluZV9wZS5oDQorDQorCUNvbnRlbnQ6CVBlcmNlcHR1YWwgZW50cm9waWUgbW9kdWxlIHN0cnVjdHVyZSBhbmQgZnVuY3Rpb25zDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfX0xJTkVfUEVfSAorI2RlZmluZSBfX0xJTkVfUEVfSAorCisKKyNpbmNsdWRlICJwc3lfY29uc3QuaCIgCisjaW5jbHVkZSAiaW50ZXJmYWNlLmgiIAorCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgIFdvcmQxNiBzZmJMZEVuZXJneVtNQVhfR1JPVVBFRF9TRkJdOyAgICAgLyogNCpsb2coc2ZiRW5lcmd5KS9sb2coMikgKi8KKyAgIFdvcmQxNiBzZmJOTGluZXM0W01BWF9HUk9VUEVEX1NGQl07ICAgICAgLyogNCpudW1iZXIgb2YgcmVsZXZhbnQgbGluZXMgaW4gc2ZiICovCisgICBXb3JkMTYgc2ZiUGVbTUFYX0dST1VQRURfU0ZCXTsgICAgICAgICAgIC8qIHBlIGZvciBlYWNoIHNmYiAqLworICAgV29yZDE2IHNmYkNvbnN0UGFydFtNQVhfR1JPVVBFRF9TRkJdOyAgICAvKiBjb25zdGFudCBwYXJ0IGZvciBlYWNoIHNmYiAqLworICAgV29yZDE2IHNmYk5BY3RpdmVMaW5lc1tNQVhfR1JPVVBFRF9TRkJdOyAvKiBudW1iZXIgb2YgYWN0aXZlIGxpbmVzIGluIHNmYiAqLworICAgV29yZDE2IHBlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdW0gb2Ygc2ZiUGUgKi8KKyAgIFdvcmQxNiBjb25zdFBhcnQ7ICAgICAgICAgICAgICAgICAgICAgICAgLyogc3VtIG9mIHNmYkNvbnN0UGFydCAqLworICAgV29yZDE2IG5BY3RpdmVMaW5lczsgICAgICAgICAgICAgICAgICAgICAvKiBzdW0gb2Ygc2ZiTkFjdGl2ZUxpbmVzICovCit9IFBFX0NIQU5ORUxfREFUQTsgLyogc2l6ZSBXb3JkMTY6IDMwMyAqLworCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgIFBFX0NIQU5ORUxfREFUQSBwZUNoYW5uZWxEYXRhW01BWF9DSEFOTkVMU107CisgICBXb3JkMTYgcGU7CisgICBXb3JkMTYgY29uc3RQYXJ0OworICAgV29yZDE2IG5BY3RpdmVMaW5lczsKKyAgIFdvcmQxNiBvZmZzZXQ7CisgICBXb3JkMTYgYWhGbGFnW01BWF9DSEFOTkVMU11bTUFYX0dST1VQRURfU0ZCXTsKKyAgIFdvcmQzMiB0aHJFeHBbTUFYX0NIQU5ORUxTXVtNQVhfR1JPVVBFRF9TRkJdOworICAgV29yZDMyIHNmYlBlRmFjdG9yc1tNQVhfQ0hBTk5FTFNdW01BWF9HUk9VUEVEX1NGQl07Cit9IFBFX0RBVEE7IC8qIHNpemUgV29yZDE2OiAzMDMgKyA0ICsgMTIwICsgMjQwID0gNjY3ICovCisKKworCisKK3ZvaWQgcHJlcGFyZVNmYlBlKFBFX0RBVEEgKnBlRGF0YSwKKyAgICAgICAgICAgICAgICAgIFBTWV9PVVRfQ0hBTk5FTCAgcHN5T3V0Q2hhbm5lbFtNQVhfQ0hBTk5FTFNdLAorICAgICAgICAgICAgICAgICAgV29yZDE2IGxvZ1NmYkVuZXJneVtNQVhfQ0hBTk5FTFNdW01BWF9HUk9VUEVEX1NGQl0sCisgICAgICAgICAgICAgICAgICBXb3JkMTYgc2ZiTlJlbGV2YW50TGluZXNbTUFYX0NIQU5ORUxTXVtNQVhfR1JPVVBFRF9TRkJdLAorICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2IG5DaGFubmVscywKKyAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiBwZU9mZnNldCk7CisKKworCisKKwordm9pZCBjYWxjU2ZiUGUoUEVfREFUQSAqcGVEYXRhLAorICAgICAgICAgICAgICAgUFNZX09VVF9DSEFOTkVMIHBzeU91dENoYW5uZWxbTUFYX0NIQU5ORUxTXSwKKyAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiBuQ2hhbm5lbHMpOworCisKKworCisjZW5kaWYgCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9tZW1hbGlnbi5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvbWVtYWxpZ24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjMwMmE3Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvbWVtYWxpZ24uaApAQCAtMCwwICsxLDM1IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorCUZpbGU6CQltZW1hbGlnbi5oDQorDQorCUNvbnRlbnQ6CU1lbW9yeSBhbGxvYyBhbGlnbm1lbnRzIGZ1bmN0aW9ucw0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2lmbmRlZiBfX1ZPX0FBQ0VOQ19NRU1fQUxJR05fSF9fDQorI2RlZmluZSBfX1ZPX0FBQ0VOQ19NRU1fQUxJR05fSF9fDQorDQorI2luY2x1ZGUgInZvTWVtLmgiDQorI2luY2x1ZGUgInR5cGVkZWYuaCINCisNCitleHRlcm4gdm9pZCAqbWVtX21hbGxvYyhWT19NRU1fT1BFUkFUT1IgKnBNZW1vcCwgdW5zaWduZWQgaW50IHNpemUsIHVuc2lnbmVkIGNoYXIgYWxpZ25tZW50LCB1bnNpZ25lZCBpbnQgQ29kZWNJRCk7DQorZXh0ZXJuIHZvaWQgbWVtX2ZyZWUoVk9fTUVNX09QRVJBVE9SICpwTWVtb3AsIHZvaWQgKm1lbV9wdHIsIHVuc2lnbmVkIGludCBDb2RlY0lEKTsNCisNCisjZW5kaWYJLyogX19WT19NRU1fQUxJR05fSF9fICovDQorDQorDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvbXNfc3RlcmVvLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9tc19zdGVyZW8uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZDQzZGVjOAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL21zX3N0ZXJlby5oCkBAIC0wLDAgKzEsNDUgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCW1zX3N0ZXJlby5oDQorDQorCUNvbnRlbnQ6CURlY2xhcmF0aW9uIE1TIHN0ZXJlbyBwcm9jZXNzaW5nIHN0cnVjdHVyZSBhbmQgZnVuY3Rpb25zDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfX01TX1NURVJFT19IX18KKyNkZWZpbmUgX19NU19TVEVSRU9fSF9fCisjaW5jbHVkZSAidHlwZWRlZi5oIgorCit2b2lkIE1zU3RlcmVvUHJvY2Vzc2luZyhXb3JkMzIgICAgICAgKnNmYkVuZXJneUxlZnQsCisgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMzIgICAgICAgKnNmYkVuZXJneVJpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDMyICpzZmJFbmVyZ3lNaWQsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMzIgKnNmYkVuZXJneVNpZGUsCisgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMzIgICAgICAgKm1kY3RTcGVjdHJ1bUxlZnQsCisgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMzIgICAgICAgKm1kY3RTcGVjdHJ1bVJpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgV29yZDMyICAgICAgICpzZmJUaHJlc2hvbGRMZWZ0LAorICAgICAgICAgICAgICAgICAgICAgICAgV29yZDMyICAgICAgICpzZmJUaHJlc2hvbGRSaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQzMiAgICAgICAqc2ZiU3ByZWFkZWRFbkxlZnQsCisgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMzIgICAgICAgKnNmYlNwcmVhZGVkRW5SaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgICAgICAqbXNEaWdlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgICAgICAgKm1zTWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgc2ZiQ250LAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICBzZmJQZXJHcm91cCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgbWF4U2ZiUGVyR3JvdXAsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgKnNmYk9mZnNldCk7CisKKworI2VuZGlmCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9wcmVfZWNob19jb250cm9sLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9wcmVfZWNob19jb250cm9sLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzVmMzZlOAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL3ByZV9lY2hvX2NvbnRyb2wuaApAQCAtMCwwICsxLDQyIEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorCUZpbGU6CQlwcmVfZWNob19jb250cm9sLmgNCisNCisJQ29udGVudDoJUHJlIGVjaG8gY29udHJvbCBmdW5jdGlvbnMNCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIF9fUFJFX0VDSE9fQ09OVFJPTF9ICisjZGVmaW5lIF9fUFJFX0VDSE9fQ09OVFJPTF9ICisKKyNpbmNsdWRlICJ0eXBlZGVmcy5oIgorCit2b2lkIEluaXRQcmVFY2hvQ29udHJvbChXb3JkMzIgKnBiVGhyZXNob2xkbm0xLAorICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICBudW1QYiwKKyAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQzMiAqcGJUaHJlc2hvbGRRdWlldCk7CisKKwordm9pZCBQcmVFY2hvQ29udHJvbChXb3JkMzIgKnBiVGhyZXNob2xkTm0xLAorICAgICAgICAgICAgICAgICAgICBXb3JkMTYgIG51bVBiLAorICAgICAgICAgICAgICAgICAgICBXb3JkMzIgIG1heEFsbG93ZWRJbmNyZWFzZUZhY3RvciwKKyAgICAgICAgICAgICAgICAgICAgV29yZDE2ICBtaW5SZW1haW5pbmdUaHJlc2hvbGRGYWN0b3IsCisgICAgICAgICAgICAgICAgICAgIFdvcmQzMiAqcGJUaHJlc2hvbGQsCisgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgbWRjdFNjYWxlLAorICAgICAgICAgICAgICAgICAgICBXb3JkMTYgIG1kY3RTY2FsZW5tMSk7CisKKyNlbmRpZgorCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9wc3lfY29uZmlndXJhdGlvbi5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvcHN5X2NvbmZpZ3VyYXRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41M2NmMjViCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvcHN5X2NvbmZpZ3VyYXRpb24uaApAQCAtMCwwICsxLDEwNyBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJcHN5X2NvbmZpZ3VyYXRpb24uaA0KKw0KKwlDb250ZW50OglQc3ljaG9hY2NvdXN0aWMgY29uZmlndXJhdGlvbiBzdHJ1Y3R1cmUgYW5kIGZ1bmN0aW9ucw0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgX1BTWV9DT05GSUdVUkFUSU9OX0gKKyNkZWZpbmUgX1BTWV9DT05GSUdVUkFUSU9OX0gKKw0KKyNpbmNsdWRlICJ0eXBlZGVmcy5oIgorI2luY2x1ZGUgInBzeV9jb25zdC5oIgorI2luY2x1ZGUgInRucy5oIgorCit0eXBlZGVmIHN0cnVjdHsKKworICBXb3JkMTYgc2ZiQ250OworICBXb3JkMTYgc2ZiQWN0aXZlOyAgIC8qIG51bWJlciBvZiBzZiBiYW5kcyBjb250YWluaW5nIGVuZXJneSBhZnRlciBsb3dwYXNzICovCisgIFdvcmQxNiAqc2ZiT2Zmc2V0OworCisgIFdvcmQzMiBzZmJUaHJlc2hvbGRRdWlldFtNQVhfU0ZCX0xPTkddOworCisgIFdvcmQxNiBtYXhBbGxvd2VkSW5jcmVhc2VGYWN0b3I7ICAgLyogcHJlZWNobyBjb250cm9sICovCisgIFdvcmQxNiBtaW5SZW1haW5pbmdUaHJlc2hvbGRGYWN0b3I7CisKKyAgV29yZDE2IGxvd3Bhc3NMaW5lOw0KKyAgV29yZDE2IHNhbXBSYXRlSWR4OworICBXb3JkMzIgY2xpcEVuZXJneTsgICAgICAgICAgICAgICAgIC8qIGZvciBsZXZlbCBkZXBlbmRlbmQgdG1uICovCisKKyAgV29yZDE2IHJhdGlvOworICBXb3JkMTYgc2ZiTWFza0xvd0ZhY3RvcltNQVhfU0ZCX0xPTkddOworICBXb3JkMTYgc2ZiTWFza0hpZ2hGYWN0b3JbTUFYX1NGQl9MT05HXTsKKworICBXb3JkMTYgc2ZiTWFza0xvd0ZhY3RvclNwckVuW01BWF9TRkJfTE9OR107CisgIFdvcmQxNiBzZmJNYXNrSGlnaEZhY3RvclNwckVuW01BWF9TRkJfTE9OR107CisKKworICBXb3JkMTYgc2ZiTWluU25yW01BWF9TRkJfTE9OR107ICAgICAgIC8qIG1pbmltdW0gc25yIChmb3JtZXJseSBrbm93biBhcyBibWF4KSAqLworCisgIFROU19DT05GSUcgdG5zQ29uZjsKKworfVBTWV9DT05GSUdVUkFUSU9OX0xPTkc7IC8qV29yZDE2IHNpemU6IDggKyA1MiArIDEwMiArIDUxICsgNTEgKyA1MSArIDUxICsgNDcgPSA1MTUgKi8KKworCit0eXBlZGVmIHN0cnVjdHsKKworICBXb3JkMTYgc2ZiQ250OworICBXb3JkMTYgc2ZiQWN0aXZlOyAgIC8qIG51bWJlciBvZiBzZiBiYW5kcyBjb250YWluaW5nIGVuZXJneSBhZnRlciBsb3dwYXNzICovCisgIFdvcmQxNiAqc2ZiT2Zmc2V0OworCisgIFdvcmQzMiBzZmJUaHJlc2hvbGRRdWlldFtNQVhfU0ZCX1NIT1JUXTsKKworICBXb3JkMTYgbWF4QWxsb3dlZEluY3JlYXNlRmFjdG9yOyAgIC8qIHByZWVjaG8gY29udHJvbCAqLworICBXb3JkMTYgbWluUmVtYWluaW5nVGhyZXNob2xkRmFjdG9yOworCisgIFdvcmQxNiBsb3dwYXNzTGluZTsNCisgIFdvcmQxNiBzYW1wUmF0ZUlkeDsKKyAgV29yZDMyIGNsaXBFbmVyZ3k7ICAgICAgICAgICAgICAgICAvKiBmb3IgbGV2ZWwgZGVwZW5kZW5kIHRtbiAqLworCisgIFdvcmQxNiByYXRpbzsKKyAgV29yZDE2IHNmYk1hc2tMb3dGYWN0b3JbTUFYX1NGQl9TSE9SVF07CisgIFdvcmQxNiBzZmJNYXNrSGlnaEZhY3RvcltNQVhfU0ZCX1NIT1JUXTsKKworICBXb3JkMTYgc2ZiTWFza0xvd0ZhY3RvclNwckVuW01BWF9TRkJfU0hPUlRdOworICBXb3JkMTYgc2ZiTWFza0hpZ2hGYWN0b3JTcHJFbltNQVhfU0ZCX1NIT1JUXTsKKworCisgIFdvcmQxNiBzZmJNaW5TbnJbTUFYX1NGQl9TSE9SVF07ICAgICAgIC8qIG1pbmltdW0gc25yIChmb3JtZXJseSBrbm93biBhcyBibWF4KSAqLworCisgIFROU19DT05GSUcgdG5zQ29uZjsKKworfVBTWV9DT05GSUdVUkFUSU9OX1NIT1JUOyAvKldvcmQxNiBzaXplOiA4ICsgMTYgKyAxNiArIDE2ICsgMTYgKyAxNiArIDE2ICsgMTYgKyA0NyA9IDE2NyAqLworDQorDQorLyogUmV0dXJucyB0aGUgc2FtcGxlIHJhdGUgaW5kZXggKi8NCitXb3JkMzIgR2V0U1JJbmRleChXb3JkMzIgc2FtcGxlUmF0ZSk7DQorCisKK1dvcmQxNiBJbml0UHN5Q29uZmlndXJhdGlvbkxvbmcoV29yZDMyIGJpdHJhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQzMiBzYW1wbGVyYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgYmFuZHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQU1lfQ09ORklHVVJBVElPTl9MT05HICpwc3lDb25mKTsKKworV29yZDE2IEluaXRQc3lDb25maWd1cmF0aW9uU2hvcnQoV29yZDMyIGJpdHJhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMzIgc2FtcGxlcmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiBiYW5kd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQU1lfQ09ORklHVVJBVElPTl9TSE9SVCAqcHN5Q29uZik7CisKKyNlbmRpZiAvKiBfUFNZX0NPTkZJR1VSQVRJT05fSCAqLworCisKKwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvcHN5X2NvbnN0LmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9wc3lfY29uc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDU1YWIxCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvcHN5X2NvbnN0LmgKQEAgLTAsMCArMSw4MCBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJcHN5X2NvbnN0LmgNCisNCisJQ29udGVudDoJR2xvYmFsIHBzeWNob2Fjb3VzdGljIGNvbnN0YW50cyBzdHJ1Y3R1cmVzDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfUFNZQ09OU1RfSAorI2RlZmluZSBfUFNZQ09OU1RfSAorCisjaW5jbHVkZSAiY29uZmlnLmgiDQorCisjZGVmaW5lIFRSVUUgIDEKKyNkZWZpbmUgRkFMU0UgMAorCisjZGVmaW5lIEZSQU1FX0xFTl9MT05HICAgIEFBQ0VOQ19CTE9DS1NJWkUKKyNkZWZpbmUgVFJBTlNfRkFDICAgICAgICAgOAorI2RlZmluZSBGUkFNRV9MRU5fU0hPUlQgICAoRlJBTUVfTEVOX0xPTkcvVFJBTlNfRkFDKQ0KKw0KKworCisvKiBCbG9jayB0eXBlcyAqLworZW51bQoreworICBMT05HX1dJTkRPVyA9IDAsCisgIFNUQVJUX1dJTkRPVywKKyAgU0hPUlRfV0lORE9XLAorICBTVE9QX1dJTkRPVworfTsKKworLyogV2luZG93IHNoYXBlcyAqLworZW51bQoreworICBTSU5FX1dJTkRPVyA9IDAsCisgIEtCRF9XSU5ET1cgID0gMQorfTsKKworLyoKKyAgTVMgc3R1ZmYKKyovCitlbnVtCit7CisgIFNJX01TX01BU0tfTk9ORSA9IDAsCisgIFNJX01TX01BU0tfU09NRSA9IDEsCisgIFNJX01TX01BU0tfQUxMICA9IDIKK307CisKKyNkZWZpbmUgTUFYX05PX09GX0dST1VQUyA0CisjZGVmaW5lIE1BWF9TRkJfU0hPUlQgICAxNSAgLyogMTUgZm9yIGEgbWVtb3J5IG9wdGltaXplZCBpbXBsZW1lbnRhdGlvbiwgbWF5YmUgMTYgZm9yIGNvbnZlbmllbnQgZGVidWdnaW5nICovCisjZGVmaW5lIE1BWF9TRkJfTE9ORyAgICA1MSAgLyogNTEgZm9yIGEgbWVtb3J5IG9wdGltaXplZCBpbXBsZW1lbnRhdGlvbiwgbWF5YmUgNjQgZm9yIGNvbnZlbmllbnQgZGVidWdnaW5nICovCisjZGVmaW5lIE1BWF9TRkIgICAgICAgICAoTUFYX1NGQl9TSE9SVCA+IE1BWF9TRkJfTE9ORyA/IE1BWF9TRkJfU0hPUlQgOiBNQVhfU0ZCX0xPTkcpICAgLyogPSBNQVhfU0ZCX0xPTkcgKi8KKyNkZWZpbmUgTUFYX0dST1VQRURfU0ZCIChNQVhfTk9fT0ZfR1JPVVBTKk1BWF9TRkJfU0hPUlQgPiBNQVhfU0ZCX0xPTkcgPyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgTUFYX05PX09GX0dST1VQUypNQVhfU0ZCX1NIT1JUIDogTUFYX1NGQl9MT05HKQorCisjZGVmaW5lIEJMT0NLX1NXSVRDSElOR19PRkZTRVQJCSAgICgxKjEwMjQrMyoxMjgrNjQrMTI4KQorI2RlZmluZSBCTE9DS19TV0lUQ0hJTkdfREFUQV9TSVpFICAgICAgICAgIEZSQU1FX0xFTl9MT05HCisJCQkJCQkJCQkJICAgIAorI2RlZmluZSBUUkFOU0ZPUk1fT0ZGU0VUX0xPTkcgICAgMAorI2RlZmluZSBUUkFOU0ZPUk1fT0ZGU0VUX1NIT1JUICAgNDQ4CisKKyNkZWZpbmUgTE9HX05PUk1fUENNICAgICAgICAgIC0xNQorDQorI2RlZmluZSBOVU1fU0FNUExFX1JBVEVTCTEyCisKKyNlbmRpZiAvKiBfUFNZQ09OU1RfSCAqLwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvcHN5X2RhdGEuaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL3BzeV9kYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQxMmQ1MwotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL3BzeV9kYXRhLmgKQEAgLTAsMCArMSw2NiBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJcHN5X2RhdGEuaA0KKw0KKwlDb250ZW50OglQc3ljaG9hY291c3RpYyBkYXRhIGFuZCBzdHJ1Y3R1cmVzDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfUFNZX0RBVEFfSAorI2RlZmluZSBfUFNZX0RBVEFfSAorCisjaW5jbHVkZSAiYmxvY2tfc3dpdGNoLmgiCisjaW5jbHVkZSAidG5zLmgiCisKKy8qCisgIHRoZSBzdHJ1Y3RzIGNhbiBiZSBpbXBsZW1lbnRlZCBhcyB1bmlvbnMKKyovCisKK3R5cGVkZWYgc3RydWN0eworICBXb3JkMzIgc2ZiTG9uZ1tNQVhfR1JPVVBFRF9TRkJdOworICBXb3JkMzIgc2ZiU2hvcnRbVFJBTlNfRkFDXVtNQVhfU0ZCX1NIT1JUXTsKK31TRkJfVEhSRVNIT0xEOyAvKiBXb3JkMTYgc2l6ZTogMjYwICovCisKK3R5cGVkZWYgc3RydWN0eworICBXb3JkMzIgc2ZiTG9uZ1tNQVhfR1JPVVBFRF9TRkJdOworICBXb3JkMzIgc2ZiU2hvcnRbVFJBTlNfRkFDXVtNQVhfU0ZCX1NIT1JUXTsKK31TRkJfRU5FUkdZOyAvKiBXb3JkMTYgc2l6ZTogMjYwICovCisKK3R5cGVkZWYgc3RydWN0eworICBXb3JkMzIgc2ZiTG9uZzsKKyAgV29yZDMyIHNmYlNob3J0W1RSQU5TX0ZBQ107Cit9U0ZCX0VORVJHWV9TVU07IC8qIFdvcmQxNiBzaXplOiAxOCAqLworCisKK3R5cGVkZWYgc3RydWN0eworICBCTE9DS19TV0lUQ0hJTkdfQ09OVFJPTCAgIGJsb2NrU3dpdGNoaW5nQ29udHJvbDsgICAgICAgICAgLyogYmxvY2sgc3dpdGNoaW5nICovCisgIFdvcmQxNiAgICAgICAgICAgICAgICAgICAgKm1kY3REZWxheUJ1ZmZlcjsgICAgICAgICAgICAgICAvKiBtZGN0IGRlbGF5IGJ1ZmZlciBbQkxPQ0tfU1dJVENISU5HX09GRlNFVF0qLworICBXb3JkMzIgICAgICAgICAgICAgICAgICAgIHNmYlRocmVzaG9sZG5tMVtNQVhfU0ZCXTsgICAgICAgLyogUHJlRWNob0NvbnRyb2wgKi8KKyAgV29yZDE2ICAgICAgICAgICAgICAgICAgICBtZGN0U2NhbGVubTE7ICAgICAgICAgICAgICAgICAgIC8qIHNjYWxlIG9mIGxhc3QgYmxvY2sncyBtZGN0IChQcmVFY2hvQ29udHJvbCkgKi8KKworICBTRkJfVEhSRVNIT0xEICAgICAgICAgICAgIHNmYlRocmVzaG9sZDsgICAgICAgICAgICAgICAgICAgLyogYWRhcHQgICAgICAgICAgICovCisgIFNGQl9FTkVSR1kgICAgICAgICAgICAgICAgc2ZiRW5lcmd5OyAgICAgICAgICAgICAgICAgICAgICAvKiBzZmIgRW5lcmd5ICAgICAgKi8KKyAgU0ZCX0VORVJHWSAgICAgICAgICAgICAgICBzZmJFbmVyZ3lNUzsKKyAgU0ZCX0VORVJHWV9TVU0gICAgICAgICAgICBzZmJFbmVyZ3lTdW07CisgIFNGQl9FTkVSR1lfU1VNICAgICAgICAgICAgc2ZiRW5lcmd5U3VtTVM7CisgIFNGQl9FTkVSR1kgICAgICAgICAgICAgICAgc2ZiU3ByZWFkZWRFbmVyZ3k7CisKKyAgV29yZDMyICAgICAgICAgICAgICAgICAgICAqbWRjdFNwZWN0cnVtOyAgICAgICAgICAgICAgICAgIC8qIG1kY3Qgc3BlY3RydW0gW0ZSQU1FX0xFTl9MT05HXSAqLworICBXb3JkMTYgICAgICAgICAgICAgICAgICAgIG1kY3RTY2FsZTsgICAgICAgICAgICAgICAgICAgICAgLyogc2NhbGUgb2YgbWRjdCAgICovCit9UFNZX0RBVEE7IC8qIFdvcmQxNiBzaXplOiA0ICsgODcgKyAxMDIgKyAzNjAgKyAzNjAgKyAzNjAgKyAxOCArIDE4ICsgMzYwID0gMTY2OSAqLworCisjZW5kaWYgLyogX1BTWV9EQVRBX0ggKi8KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL3BzeV9tYWluLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9wc3lfbWFpbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiMGI4YjEKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9wc3lfbWFpbi5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCXBzeV9tYWluLmgNCisNCisJQ29udGVudDoJUHN5Y2hvYWNvdXN0aWMgbWFqb3IgZnVuY3Rpb24gYmxvY2sNCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIF9QU1lNQUlOX0gKKyNkZWZpbmUgX1BTWU1BSU5fSAorCisjaW5jbHVkZSAicHN5X2NvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJxY19kYXRhLmgiCisjaW5jbHVkZSAibWVtYWxpZ24uaCIKKworLyoKKyAgcHN5IGtlcm5lbAorKi8KK3R5cGVkZWYgc3RydWN0ICB7CisgIFBTWV9DT05GSUdVUkFUSU9OX0xPTkcgIHBzeUNvbmZMb25nOyAgICAgICAgICAgLyogV29yZDE2IHNpemU6IDUxNSAqLworICBQU1lfQ09ORklHVVJBVElPTl9TSE9SVCBwc3lDb25mU2hvcnQ7ICAgICAgICAgIC8qIFdvcmQxNiBzaXplOiAxNjcgKi8KKyAgUFNZX0RBVEEgICAgICAgICAgICAgICAgcHN5RGF0YVtNQVhfQ0hBTk5FTFNdOyAvKiBXb3JkMTYgc2l6ZTogTUFYX0NIQU5ORUxTKjE2NjkqLworICBUTlNfREFUQSAgICAgICAgICAgICAgICB0bnNEYXRhW01BWF9DSEFOTkVMU107IC8qIFdvcmQxNiBzaXplOiBNQVhfQ0hBTk5FTFMqMjM1ICovCisgIFdvcmQzMiogICAgICAgICAgICAgICAgIHBTY3JhdGNoVG5zOw0KKyAgV29yZDE2CQkJCSAgc2FtcGxlUmF0ZUlkeDsKK31QU1lfS0VSTkVMOyAvKiBXb3JkMTYgc2l6ZTogMjU4NyAvIDQ0OTEgKi8KKworCitXb3JkMTYgUHN5TmV3KCBQU1lfS0VSTkVMICAqaFBzeSwgV29yZDMyIG5DaGFuLCBWT19NRU1fT1BFUkFUT1IgKnBNZW1PUCk7CitXb3JkMTYgUHN5RGVsZXRlKCBQU1lfS0VSTkVMICAqaFBzeSwgVk9fTUVNX09QRVJBVE9SICpwTWVtT1ApOworCitXb3JkMTYgUHN5T3V0TmV3KCBQU1lfT1VUICpoUHN5T3V0LCBWT19NRU1fT1BFUkFUT1IgKnBNZW1PUCk7CitXb3JkMTYgUHN5T3V0RGVsZXRlKCBQU1lfT1VUICpoUHN5T3V0LCBWT19NRU1fT1BFUkFUT1IgKnBNZW1PUCk7CisKK1dvcmQxNiBwc3lNYWluSW5pdCggUFNZX0tFUk5FTCAqaFBzeSwKKyAgICAgICAgICAgICAgICAgICAgV29yZDMyIHNhbXBsZVJhdGUsCisgICAgICAgICAgICAgICAgICAgIFdvcmQzMiBiaXRSYXRlLAorICAgICAgICAgICAgICAgICAgICBXb3JkMTYgY2hhbm5lbHMsCisgICAgICAgICAgICAgICAgICAgIFdvcmQxNiB0bnNNYXNrLAorICAgICAgICAgICAgICAgICAgICBXb3JkMTYgYmFuZHdpZHRoKTsKKworCitXb3JkMTYgcHN5TWFpbihXb3JkMTYgICAgICAgICAgICAgICAgICAgbkNoYW5uZWxzLCAgIC8qITwgdG90YWwgbnVtYmVyIG9mIGNoYW5uZWxzICovICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgIEVMRU1FTlRfSU5GTyAgICAgICAgICAgICAqZWxlbUluZm8sCisgICAgICAgICAgICAgICBXb3JkMTYgICAgICAgICAgICAgICAgICAgKnRpbWVTaWduYWwsIC8qITwgaW50ZXJsZWF2ZWQgdGltZSBzaWduYWwgKi8gCisgICAgICAgICAgICAgICBQU1lfREFUQSAgICAgICAgICAgICAgICAgcHN5RGF0YVtNQVhfQ0hBTk5FTFNdLAorICAgICAgICAgICAgICAgVE5TX0RBVEEgICAgICAgICAgICAgICAgIHRuc0RhdGFbTUFYX0NIQU5ORUxTXSwKKyAgICAgICAgICAgICAgIFBTWV9DT05GSUdVUkFUSU9OX0xPTkcqICBwc3lDb25mTG9uZywKKyAgICAgICAgICAgICAgIFBTWV9DT05GSUdVUkFUSU9OX1NIT1JUKiBwc3lDb25mU2hvcnQsCisgICAgICAgICAgICAgICBQU1lfT1VUX0NIQU5ORUwgICAgICAgICAgcHN5T3V0Q2hhbm5lbFtNQVhfQ0hBTk5FTFNdLAorICAgICAgICAgICAgICAgUFNZX09VVF9FTEVNRU5UICAgICAgICAgICpwc3lPdXRFbGVtZW50LAorICAgICAgICAgICAgICAgV29yZDMyICAgICAgICAgICAgICAgICAgICpwU2NyYXRjaFRucywKKwkJCSAgIFdvcmQzMgkJCQkJc2FtcGxlUmF0ZSk7CisKKyNlbmRpZiAvKiBfUFNZTUFJTl9IICovCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9xY19kYXRhLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9xY19kYXRhLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODFkNDA1MQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL3FjX2RhdGEuaApAQCAtMCwwICsxLDE0MyBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJcWNfZGF0YS5oDQorDQorCUNvbnRlbnQ6CVF1YW50aXppbmcgJiBjb2Rpbmcgc3RydWN0dXJlcw0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgX1FDX0RBVEFfSAorI2RlZmluZSBfUUNfREFUQV9ICisKKyNpbmNsdWRlICJwc3lfY29uc3QuaCIKKyNpbmNsdWRlICJkeW5fYml0cy5oIgorI2luY2x1ZGUgImFkal90aHJfZGF0YS5oIgorCisKKyNkZWZpbmUgTUFYX01PREVTIDEwCisKK3R5cGVkZWYgZW51bSB7CisgIE1PREVfSU5WQUxJRCA9IDAsCisgIE1PREVfMSwgICAgICAgIC8qIG1vbm8gICAgICAqLworICBNT0RFXzFfMSwgICAgICAvKiBkdWFsIG1vbm8gKi8KKyAgTU9ERV8yICAgICAgICAgLyogc3RlcmVvICAgICovCit9IEVOQ09ERVJfTU9ERTsKKwordHlwZWRlZiBlbnVtIHsKKyAgSURfU0NFPTAsICAgICAvKiBTaW5nbGUgQ2hhbm5lbCBFbGVtZW50ICAgKi8KKyAgSURfQ1BFPTEsICAgICAvKiBDaGFubmVsIFBhaXIgRWxlbWVudCAgICAgKi8KKyAgSURfQ0NFPTIsICAgICAvKiBDb3VwbGluZyBDaGFubmVsIEVsZW1lbnQgKi8KKyAgSURfTEZFPTMsICAgICAvKiBMRkUgQ2hhbm5lbCBFbGVtZW50ICAgICAgKi8KKyAgSURfRFNFPTQsICAgICAvKiBjdXJyZW50IG9uZSBEU0UgZWxlbWVudCBmb3IgYW5jaWxsYXJ5IGlzIHN1cHBvcnRlZCAqLworICBJRF9QQ0U9NSwKKyAgSURfRklMPTYsCisgIElEX0VORD03Cit9RUxFTUVOVF9UWVBFOworCit0eXBlZGVmIHN0cnVjdCB7CisgIEVMRU1FTlRfVFlQRSBlbFR5cGU7CisgIFdvcmQxNiBpbnN0YW5jZVRhZzsKKyAgV29yZDE2IG5DaGFubmVsc0luRWw7CisgIFdvcmQxNiBDaGFubmVsSW5kZXhbTUFYX0NIQU5ORUxTXTsKK30gRUxFTUVOVF9JTkZPOworCit0eXBlZGVmIHN0cnVjdCB7CisgIFdvcmQzMiBwYWRkaW5nUmVzdDsKK30gUEFERElORzsKKworCisvKiBRdWFudGl6aW5nICYgY29kaW5nIHN0YWdlICovCisKK3N0cnVjdCBRQ19JTklUeworICBFTEVNRU5UX0lORk8gKmVsSW5mbzsKKyAgV29yZDE2IG1heEJpdHM7ICAgICAvKiBtYXhpbXVtIG51bWJlciBvZiBiaXRzIGluIHJlc2Vydm9pciAgKi8KKyAgV29yZDE2IGF2ZXJhZ2VCaXRzOyAvKiBhdmVyYWdlIG51bWJlciBvZiBiaXRzIHdlIHNob3VsZCB1c2UgKi8KKyAgV29yZDE2IGJpdFJlczsKKyAgV29yZDE2IG1lYW5QZTsKKyAgV29yZDMyIGNoQml0cmF0ZTsKKyAgV29yZDE2IG1heEJpdEZhYzsKKyAgV29yZDMyIGJpdHJhdGU7CisKKyAgUEFERElORyBwYWRkaW5nOworfTsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgV29yZDE2ICAgICAgICAgICpxdWFudFNwZWM7ICAgICAgIC8qIFtGUkFNRV9MRU5fTE9OR107ICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisgIFVXb3JkMTYgICAgICAgICAqbWF4VmFsdWVJblNmYjsgICAvKiBbTUFYX0dST1VQRURfU0ZCXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworICBXb3JkMTYgICAgICAgICAgKnNjZjsgICAgICAgICAgICAgLyogW01BWF9HUk9VUEVEX1NGQl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgV29yZDE2ICAgICAgICAgIGdsb2JhbEdhaW47CisgIFdvcmQxNiAgICAgICAgICBtZGN0U2NhbGU7CisgIFdvcmQxNiAgICAgICAgICBncm91cGluZ01hc2s7CisgIFNFQ1RJT05fREFUQSAgICBzZWN0aW9uRGF0YTsKKyAgV29yZDE2ICAgICAgICAgIHdpbmRvd1NoYXBlOworfSBRQ19PVVRfQ0hBTk5FTDsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgV29yZDE2CQkgIGFkdHNVc2VkOw0KKyAgV29yZDE2ICAgICAgICAgIHN0YXRpY0JpdHNVc2VkOyAvKiBmb3IgdmVyaWZpY2F0aW9uIHB1cnBvc2VzICovCisgIFdvcmQxNiAgICAgICAgICBkeW5CaXRzVXNlZDsgICAgLyogZm9yIHZlcmlmaWNhdGlvbiBwdXJwb3NlcyAqLworICBXb3JkMTYgICAgICAgICAgcGU7CisgIFdvcmQxNiAgICAgICAgICBhbmNCaXRzVXNlZDsKKyAgV29yZDE2ICAgICAgICAgIGZpbGxCaXRzOworfSBRQ19PVVRfRUxFTUVOVDsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgUUNfT1VUX0NIQU5ORUwgIHFjQ2hhbm5lbFtNQVhfQ0hBTk5FTFNdOworICBRQ19PVVRfRUxFTUVOVCAgcWNFbGVtZW50OworICBXb3JkMTYgICAgICAgICAgdG90U3RhdGljQml0c1VzZWQ7IC8qIGZvciB2ZXJpZmljYXRpb24gcHVycG9zZXMgKi8KKyAgV29yZDE2ICAgICAgICAgIHRvdER5bkJpdHNVc2VkOyAgICAvKiBmb3IgdmVyaWZpY2F0aW9uIHB1cnBvc2VzICovCisgIFdvcmQxNiAgICAgICAgICB0b3RBbmNCaXRzVXNlZDsgICAgLyogZm9yIHZlcmlmaWNhdGlvbiBwdXJwb3NlcyAqLworICBXb3JkMTYgICAgICAgICAgdG90RmlsbEJpdHM7CisgIFdvcmQxNiAgICAgICAgICBhbGlnbkJpdHM7CisgIFdvcmQxNiAgICAgICAgICBiaXRSZXNUb3Q7CisgIFdvcmQxNiAgICAgICAgICBhdmVyYWdlQml0c1RvdDsKK30gUUNfT1VUOworCit0eXBlZGVmIHN0cnVjdCB7CisgIFdvcmQzMiBjaEJpdHJhdGU7CisgIFdvcmQxNiBhdmVyYWdlQml0czsgICAgICAgICAgICAgICAvKiBicnV0dG8gLT4gbG9vayBhbmNpbGxhcnkuaCAqLworICBXb3JkMTYgbWF4Qml0czsKKyAgV29yZDE2IGJpdFJlc0xldmVsOworICBXb3JkMTYgbWF4Qml0UmVzQml0czsKKyAgV29yZDE2IHJlbGF0aXZlQml0czsgICAgICAgICAgICAvKiBCaXRzIHJlbGF0aXZlIHRvIHRvdGFsIEJpdHMgc2NhbGVkIGRvd24gYnkgMiAqLworfSBFTEVNRU5UX0JJVFM7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgIC8qIHRoaXMgaXMgYmFzaWNhbGx5IHN0cnVjdCBRQ19JTklUICovCisgIFdvcmQxNiBhdmVyYWdlQml0c1RvdDsKKyAgV29yZDE2IG1heEJpdHNUb3Q7CisgIFdvcmQxNiBnbG9iU3RhdEJpdHM7CisgIFdvcmQxNiBuQ2hhbm5lbHM7CisgIFdvcmQxNiBiaXRSZXNUb3Q7CisKKyAgV29yZDE2IG1heEJpdEZhYzsKKworICBQQURESU5HICAgcGFkZGluZzsKKworICBFTEVNRU5UX0JJVFMgIGVsZW1lbnRCaXRzOworICBBREpfVEhSX1NUQVRFIGFkalRocjsKKworICBXb3JkMTYgbG9nU2ZiRm9ybUZhY3RvcltNQVhfQ0hBTk5FTFNdW01BWF9HUk9VUEVEX1NGQl07CisgIFdvcmQxNiBzZmJOUmVsZXZhbnRMaW5lc1tNQVhfQ0hBTk5FTFNdW01BWF9HUk9VUEVEX1NGQl07CisgIFdvcmQxNiBsb2dTZmJFbmVyZ3lbTUFYX0NIQU5ORUxTXVtNQVhfR1JPVVBFRF9TRkJdOworfSBRQ19TVEFURTsKKworI2VuZGlmIC8qIF9RQ19EQVRBX0ggKi8KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL3FjX21haW4uaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL3FjX21haW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTEzOGIyCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvcWNfbWFpbi5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCXFjX21haW4uaA0KKw0KKwlDb250ZW50OglRdWFudGl6aW5nICYgY29kaW5nIGZ1bmN0aW9ucw0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgX1FDX01BSU5fSAorI2RlZmluZSBfUUNfTUFJTl9ICisKKyNpbmNsdWRlICJxY19kYXRhLmgiCisjaW5jbHVkZSAiaW50ZXJmYWNlLmgiCisjaW5jbHVkZSAibWVtYWxpZ24uaCIKKworLyogUXVhbnRpemluZyAmIGNvZGluZyBzdGFnZSAqLworCitXb3JkMTYgUUNPdXROZXcoUUNfT1VUICpoUUMsIFdvcmQxNiBuQ2hhbm5lbHMsIFZPX01FTV9PUEVSQVRPUiAqcE1lbU9QKTsKKwordm9pZCBRQ091dERlbGV0ZShRQ19PVVQgKmhRQywgVk9fTUVNX09QRVJBVE9SICpwTWVtT1ApOworCitXb3JkMTYgUUNOZXcoUUNfU1RBVEUgKmhRQywgVk9fTUVNX09QRVJBVE9SICpwTWVtT1ApOworCitXb3JkMTYgUUNJbml0KFFDX1NUQVRFICpoUUMsIAorICAgICAgICAgICAgICBzdHJ1Y3QgUUNfSU5JVCAqaW5pdCk7CisKK3ZvaWQgUUNEZWxldGUoUUNfU1RBVEUgKmhRQywgVk9fTUVNX09QRVJBVE9SICpwTWVtT1ApOworCisKK1dvcmQxNiBRQ01haW4oUUNfU1RBVEUgKmhRQywKKyAgICAgICAgICAgICAgRUxFTUVOVF9CSVRTKiBlbEJpdHMsCisgICAgICAgICAgICAgIEFUU19FTEVNRU5UKiBhZGpUaHJTdGF0ZUVsZW1lbnQsCisgICAgICAgICAgICAgIFBTWV9PVVRfQ0hBTk5FTCBwc3lPdXRDaGFubmVsW01BWF9DSEFOTkVMU10sIC8qIG1heSBiZSBtb2RpZmllZCBpbi1wbGFjZSAqLworICAgICAgICAgICAgICBQU1lfT1VUX0VMRU1FTlQqIHBzeU91dEVsZW1lbnQsCisgICAgICAgICAgICAgIFFDX09VVF9DSEFOTkVMICBxY091dENoYW5uZWxbTUFYX0NIQU5ORUxTXSwgICAvKiBvdXQgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgUUNfT1VUX0VMRU1FTlQqIHFjT3V0RWxlbWVudCwKKyAgICAgICAgICAgICAgV29yZDE2IG5DaGFubmVscywKKwkJCSAgV29yZDE2IGFuY2lsbGFyeURhdGFCeXRlcyk7ICAgICAvKiByZXR1cm5zIGVycm9yIGNvZGUgICAgICAgKi8KKwordm9pZCB1cGRhdGVCaXRyZXMoUUNfU1RBVEUqIHFjS2VybmVsLAorICAgICAgICAgICAgICAgICAgUUNfT1VUKiBxY091dCk7CisKK1dvcmQxNiBGaW5hbGl6ZUJpdENvbnN1bXB0aW9uKFFDX1NUQVRFICpoUUMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRQ19PVVQqIHFjT3V0KTsKKworV29yZDE2IEFkanVzdEJpdHJhdGUoUUNfU1RBVEUgKmhRQywKKyAgICAgICAgICAgICAgICAgICAgIFdvcmQzMiBiaXRSYXRlLAorICAgICAgICAgICAgICAgICAgICAgV29yZDMyIHNhbXBsZVJhdGUpOworCisjZW5kaWYgLyogX1FDX01BSU5fSCAqLwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvcXVhbnRpemUuaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL3F1YW50aXplLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODhhOTVlMQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL3F1YW50aXplLmgKQEAgLTAsMCArMSw0MiBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJcXVhbnRpemUuaA0KKw0KKwlDb250ZW50OglRdWFudGl6YXRpb24gZnVuY3Rpb25zDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2lmbmRlZiBfUVVBTlRJWkVfSF8KKyNkZWZpbmUgX1FVQU5USVpFX0hfCisjaW5jbHVkZSAidHlwZWRlZnMuaCIKKworLyogcXVhbnRpemluZyAqLworCisjZGVmaW5lIE1BWF9RVUFOVCA4MTkxCisKK3ZvaWQgUXVhbnRpemVTcGVjdHJ1bShXb3JkMTYgc2ZiQ250LCAKKyAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgbWF4U2ZiUGVyR3JvdXAsCisgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IHNmYlBlckdyb3VwLAorICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAqc2ZiT2Zmc2V0LCBXb3JkMzIgKm1kY3RTcGVjdHJ1bSwKKyAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgZ2xvYmFsR2FpbiwgV29yZDE2ICpzY2FsZWZhY3RvcnMsCisgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICpxdWFudGl6ZWRTcGVjdHJ1bSk7CisKK1dvcmQzMiBjYWxjU2ZiRGlzdChjb25zdCBXb3JkMzIgKnNwZWMsCisgICAgICAgICAgICAgICAgICAgV29yZDE2ICBzZmJXaWR0aCwKKyAgICAgICAgICAgICAgICAgICBXb3JkMTYgIGdhaW4pOworCisjZW5kaWYgLyogX1FVQU5USVpFX0hfICovCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9zZl9lc3RpbS5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvc2ZfZXN0aW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjVlYzNjCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvc2ZfZXN0aW0uaApAQCAtMCwwICsxLDQ2IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorCUZpbGU6CQlzZl9lc3RpbS5oDQorDQorCUNvbnRlbnQ6CVNjYWxlIGZhY3RvciBlc3RpbWF0aW9uIGZ1bmN0aW9ucw0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgX19TRl9FU1RJTV9IX18KKyNkZWZpbmUgX19TRl9FU1RJTV9IX18KKy8qCisgICBTY2FsZSBmYWN0b3IgZXN0aW1hdGlvbiAKKyAqLworI2luY2x1ZGUgInBzeV9jb25zdC5oIgorI2luY2x1ZGUgImludGVyZmFjZS5oIgorI2luY2x1ZGUgInFjX2RhdGEuaCIKKwordm9pZAorQ2FsY0Zvcm1GYWN0b3IoV29yZDE2ICAgICAgICAgIGxvZ1NmYkZvcm1GYWN0b3JbTUFYX0NIQU5ORUxTXVtNQVhfR1JPVVBFRF9TRkJdLAorICAgICAgICAgICAgICAgV29yZDE2ICAgICAgICAgIHNmYk5SZWxldmFudExpbmVzW01BWF9DSEFOTkVMU11bTUFYX0dST1VQRURfU0ZCXSwKKyAgICAgICAgICAgICAgIFdvcmQxNiAgICAgICAgICBsb2dTZmJFbmVyZ3lbTUFYX0NIQU5ORUxTXVtNQVhfR1JPVVBFRF9TRkJdLAorICAgICAgICAgICAgICAgUFNZX09VVF9DSEFOTkVMIHBzeU91dENoYW5uZWxbTUFYX0NIQU5ORUxTXSwKKyAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgICBuQ2hhbm5lbHMpOworCit2b2lkCitFc3RpbWF0ZVNjYWxlRmFjdG9ycyhQU1lfT1VUX0NIQU5ORUwgcHN5T3V0Q2hhbm5lbFtNQVhfQ0hBTk5FTFNdLAorICAgICAgICAgICAgICAgICAgICAgUUNfT1VUX0NIQU5ORUwgIHFjT3V0Q2hhbm5lbFtNQVhfQ0hBTk5FTFNdLAorICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICAgICAgICAgIGxvZ1NmYkVuZXJneVtNQVhfQ0hBTk5FTFNdW01BWF9HUk9VUEVEX1NGQl0sCisgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgICAgICAgICAgbG9nU2ZiRm9ybUZhY3RvcltNQVhfQ0hBTk5FTFNdW01BWF9HUk9VUEVEX1NGQl0sCisgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgICAgICAgICAgc2ZiTlJlbGV2YW50TGluZXNbTUFYX0NIQU5ORUxTXVtNQVhfR1JPVVBFRF9TRkJdLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICAgIG5DaGFubmVscyk7CisjZW5kaWYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9zcHJlYWRpbmcuaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL3NwcmVhZGluZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5Y2Y2M2QKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy9zcHJlYWRpbmcuaApAQCAtMCwwICsxLDMzIEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorCUZpbGU6CQlzcHJlYWRpbmcuaA0KKw0KKwlDb250ZW50OglTcHJlYWRpbmcgb2YgZW5lcmd5IGZ1bmN0aW9ucw0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgX1NQUkVBRElOR19ICisjZGVmaW5lIF9TUFJFQURJTkdfSAorI2luY2x1ZGUgInR5cGVkZWZzLmgiCisNCisKK3ZvaWQgU3ByZWFkaW5nTWF4KGNvbnN0IFdvcmQxNiBwYkNudCwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAqbWFza0xvd0ZhY3RvciwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAqbWFza0hpZ2hGYWN0b3IsCisgICAgICAgICAgICAgICAgICBXb3JkMzIgICAgICAgKnBiU3ByZWFkZWRFbmVyZ3kpOworCisjZW5kaWYgLyogI2lmbmRlZiBfU1BSRUFESU5HX0ggKi8KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL3N0YXRfYml0cy5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvc3RhdF9iaXRzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmU5MGI5YwotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL3N0YXRfYml0cy5oCkBAIC0wLDAgKzEsMzQgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCXN0YXRfYml0cy5oDQorDQorCUNvbnRlbnQ6CVN0YXRpYyBiaXQgY291bnRlciBmdW5jdGlvbnMNCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmIF9fU1RBVF9CSVRTX0gKKyNkZWZpbmUgX19TVEFUX0JJVFNfSAorCisjaW5jbHVkZSAicHN5X2NvbnN0LmgiCisjaW5jbHVkZSAiaW50ZXJmYWNlLmgiCisKK1dvcmQxNiBjb3VudFN0YXRpY0JpdGRlbWFuZChQU1lfT1VUX0NIQU5ORUwgcHN5T3V0Q2hhbm5lbFtNQVhfQ0hBTk5FTFNdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBTWV9PVVRfRUxFTUVOVCAqcHN5T3V0RWxlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgbkNoYW5uZWxzLCANCisJCQkJCQkJV29yZDE2IGFkdHNVc2VkKTsKKworI2VuZGlmIC8qIF9fU1RBVF9CSVRTX0ggKi8KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL3Rucy5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvdG5zLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWZmY2NlOQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL3Rucy5oCkBAIC0wLDAgKzEsMTA4IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorCUZpbGU6CQl0bnMuaA0KKw0KKwlDb250ZW50OglUTlMgc3RydWN0dXJlcw0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgX1ROU19ICisjZGVmaW5lIF9UTlNfSAorDQorI2luY2x1ZGUgInR5cGVkZWYuaCIKKyNpbmNsdWRlICJwc3lfY29uc3QuaCIKKworCisKKyNkZWZpbmUgVE5TX01BWF9PUkRFUiAxMgorI2RlZmluZSBUTlNfTUFYX09SREVSX1NIT1JUIDUKKworI2RlZmluZSBGSUxURVJfRElSRUNUSU9OICAgIDAKKwordHlwZWRlZiBzdHJ1Y3R7IC8qc3R1ZmYgdGhhdCBpcyB0YWJ1bGF0ZWQgZGVwZW5kZW50IG9uIGJpdHJhdGUgZXRjLiAqLworICBXb3JkMTYgICAgIHRocmVzaE9uOyAgICAgICAgICAgICAgICAvKiBtaW4uIHByZWRpY3Rpb24gZ2FpbiBmb3IgdXNpbmcgdG5zIFRBQlVMICogMTAwKi8KKyAgV29yZDMyICAgICBscGNTdGFydEZyZXE7ICAgICAgICAgICAgLyogbG93ZXN0IGZyZXEgZm9yIGxwYyBUQUJVTCovCisgIFdvcmQzMiAgICAgbHBjU3RvcEZyZXE7ICAgICAgICAgICAgIC8qIFRBQlVMICovCisgIFdvcmQzMiAgICAgdG5zVGltZVJlc29sdXRpb247Cit9VE5TX0NPTkZJR19UQUJVTEFURUQ7CisKKwordHlwZWRlZiBzdHJ1Y3QgeyAgIC8qYXNzaWduZWQgYXQgSW5pdFRpbWUqLworICBXb3JkMTYgdG5zQWN0aXZlOworICBXb3JkMTYgdG5zTWF4U2ZiOworCisgIFdvcmQxNiBtYXhPcmRlcjsgICAgICAgICAgICAgICAgLyogbWF4LiBvcmRlciBvZiB0bnMgZmlsdGVyICovCisgIFdvcmQxNiB0bnNTdGFydEZyZXE7ICAgICAgICAgICAgLyogbG93ZXN0IGZyZXEuIGZvciB0bnMgZmlsdGVyaW5nICovCisgIFdvcmQxNiBjb2VmUmVzOworCisgIFROU19DT05GSUdfVEFCVUxBVEVEIGNvbmZUYWI7CisKKyAgV29yZDMyIGFjZldpbmRvd1tUTlNfTUFYX09SREVSKzFdOworCisgIFdvcmQxNiB0bnNTdGFydEJhbmQ7CisgIFdvcmQxNiB0bnNTdGFydExpbmU7CisKKyAgV29yZDE2IHRuc1N0b3BCYW5kOworICBXb3JkMTYgdG5zU3RvcExpbmU7CisKKyAgV29yZDE2IGxwY1N0YXJ0QmFuZDsKKyAgV29yZDE2IGxwY1N0YXJ0TGluZTsKKworICBXb3JkMTYgbHBjU3RvcEJhbmQ7CisgIFdvcmQxNiBscGNTdG9wTGluZTsKKworICBXb3JkMTYgdG5zUmF0aW9QYXRjaExvd2VzdENiOworICBXb3JkMTYgdG5zTW9kaWZ5QmVnaW5DYjsKKworICBXb3JkMTYgdGhyZXNob2xkOyAvKiBtaW4uIHByZWRpY3Rpb24gZ2FpbiBmb3IgdXNpbmcgdG5zIFRBQlVMICogMTAwICovCisKK31UTlNfQ09ORklHOworCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgV29yZDE2IHRuc0FjdGl2ZTsKKyAgV29yZDMyIHBhcmNvcltUTlNfTUFYX09SREVSXTsKKyAgV29yZDE2IHByZWRpY3Rpb25HYWluOworfSBUTlNfU1VCQkxPQ0tfSU5GTzsgLyogV29yZDE2IHNpemU6IDI2ICovCisKK3R5cGVkZWYgc3RydWN0eworICBUTlNfU1VCQkxPQ0tfSU5GTyBzdWJCbG9ja0luZm9bVFJBTlNfRkFDXTsKK30gVE5TX0RBVEFfU0hPUlQ7CisKK3R5cGVkZWYgc3RydWN0eworICBUTlNfU1VCQkxPQ0tfSU5GTyBzdWJCbG9ja0luZm87Cit9IFROU19EQVRBX0xPTkc7CisKK3R5cGVkZWYgc3RydWN0eworICBUTlNfREFUQV9MT05HIHRuc0xvbmc7CisgIFROU19EQVRBX1NIT1JUIHRuc1Nob3J0OworfVROU19EQVRBX1JBVzsKKwordHlwZWRlZiBzdHJ1Y3R7CisgIFdvcmQxNiBudW1PZlN1YmJsb2NrczsKKyAgVE5TX0RBVEFfUkFXIGRhdGFSYXc7Cit9VE5TX0RBVEE7IC8qIFdvcmQxNiBzaXplOiAxICsgOCoyNiArIDI2ID0gMjM1ICovCisKK3R5cGVkZWYgc3RydWN0eworICBXb3JkMTYgdG5zQWN0aXZlW1RSQU5TX0ZBQ107CisgIFdvcmQxNiBjb2VmUmVzW1RSQU5TX0ZBQ107CisgIFdvcmQxNiBsZW5ndGhbVFJBTlNfRkFDXTsKKyAgV29yZDE2IG9yZGVyW1RSQU5TX0ZBQ107CisgIFdvcmQxNiBjb2VmW1RSQU5TX0ZBQypUTlNfTUFYX09SREVSX1NIT1JUXTsKK31UTlNfSU5GTzsgLyogV29yZDE2IHNpemU6IDcyICovCisKKyNlbmRpZiAvKiBfVE5TX0ggKi8KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL3Ruc19mdW5jLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy90bnNfZnVuYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4Yjc1YjYKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy90bnNfZnVuYy5oCkBAIC0wLDAgKzEsNzUgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCXRuc19mdW5jLmgNCisNCisJQ29udGVudDoJVE5TIGZ1bmN0aW9ucw0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKy8qCisgICBUZW1wb3JhbCBub2lzZSBzaGFwaW5nCisgKi8KKyNpZm5kZWYgX1ROU19GVU5DX0gKKyNkZWZpbmUgX1ROU19GVU5DX0gNCisjaW5jbHVkZSAidHlwZWRlZi5oIgorI2luY2x1ZGUgInBzeV9jb25maWd1cmF0aW9uLmgiCisKK1dvcmQxNiBJbml0VG5zQ29uZmlndXJhdGlvbkxvbmcoV29yZDMyIGJpdHJhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQzMiBzYW1wbGVyYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgY2hhbm5lbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFROU19DT05GSUcgKnRuc0NvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFNZX0NPTkZJR1VSQVRJT05fTE9ORyAqcHN5Q29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgYWN0aXZlKTsKKworV29yZDE2IEluaXRUbnNDb25maWd1cmF0aW9uU2hvcnQoV29yZDMyIGJpdHJhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMzIgc2FtcGxlcmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiBjaGFubmVscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFROU19DT05GSUcgKnRuc0NvbmZpZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBTWV9DT05GSUdVUkFUSU9OX1NIT1JUICpwc3lDb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgYWN0aXZlKTsKKworV29yZDMyIFRuc0RldGVjdChUTlNfREFUQSogdG5zRGF0YSwKKyAgICAgICAgICAgICAgICAgVE5TX0NPTkZJRyB0QywKKyAgICAgICAgICAgICAgICAgV29yZDMyKiBwU2NyYXRjaFRucywKKyAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2IHNmYk9mZnNldFtdLAorICAgICAgICAgICAgICAgICBXb3JkMzIqIHNwZWN0cnVtLAorICAgICAgICAgICAgICAgICBXb3JkMTYgc3ViQmxvY2tOdW1iZXIsCisgICAgICAgICAgICAgICAgIFdvcmQxNiBibG9ja1R5cGUsCisgICAgICAgICAgICAgICAgIFdvcmQzMiAqIHNmYkVuZXJneSk7CisKK3ZvaWQgVG5zU3luYyhUTlNfREFUQSAqdG5zRGF0YURlc3QsCisgICAgICAgICAgICAgY29uc3QgVE5TX0RBVEEgKnRuc0RhdGFTcmMsCisgICAgICAgICAgICAgY29uc3QgVE5TX0NPTkZJRyB0QywKKyAgICAgICAgICAgICBjb25zdCBXb3JkMTYgc3ViQmxvY2tOdW1iZXIsCisgICAgICAgICAgICAgY29uc3QgV29yZDE2IGJsb2NrVHlwZSk7CisKK1dvcmQxNiBUbnNFbmNvZGUoVE5TX0lORk8qIHRuc0luZm8sCisgICAgICAgICAgICAgICAgIFROU19EQVRBKiB0bnNEYXRhLAorICAgICAgICAgICAgICAgICBXb3JkMTYgbnVtT2ZTZmIsCisgICAgICAgICAgICAgICAgIFROU19DT05GSUcgdEMsCisgICAgICAgICAgICAgICAgIFdvcmQxNiBsb3dQYXNzTGluZSwKKyAgICAgICAgICAgICAgICAgV29yZDMyKiBzcGVjdHJ1bSwKKyAgICAgICAgICAgICAgICAgV29yZDE2IHN1YkJsb2NrTnVtYmVyLAorICAgICAgICAgICAgICAgICBXb3JkMTYgYmxvY2tUeXBlKTsKKwordm9pZCBBcHBseVRuc011bHRUYWJsZVRvUmF0aW9zKFdvcmQxNiBzdGFydENiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiBzdG9wQ2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVE5TX1NVQkJMT0NLX0lORk8gc3ViSW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMzIgKnRocmVzaG9sZHMpOworCisKKyNlbmRpZiAvKiBfVE5TX0ZVTkNfSCAqLwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvdG5zX3BhcmFtLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy90bnNfcGFyYW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjI2NmFjCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9pbmMvdG5zX3BhcmFtLmgKQEAgLTAsMCArMSw1MiBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJdG5zX3BhcmFtLmgNCisNCisJQ29udGVudDoJVE5TIHBhcmFtZXRlcnMNCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorICAgVE5TIHBhcmFtZXRlcnMKKyAqLworI2lmbmRlZiBfVE5TX1BBUkFNX0gKKyNkZWZpbmUgX1ROU19QQVJBTV9ICisKKyNpbmNsdWRlICJ0bnMuaCIKKwordHlwZWRlZiBzdHJ1Y3R7CisgIFdvcmQzMiBzYW1wbGluZ1JhdGU7CisgIFdvcmQxNiBtYXhCYW5kTG9uZzsKKyAgV29yZDE2IG1heEJhbmRTaG9ydDsKK31UTlNfTUFYX1RBQl9FTlRSWTsKKwordHlwZWRlZiBzdHJ1Y3R7CisgICAgV29yZDMyIGJpdFJhdGVGcm9tOworICAgIFdvcmQzMiBiaXRSYXRlVG87CisgICAgY29uc3QgVE5TX0NPTkZJR19UQUJVTEFURUQgKnBhcmFtTW9ub19Mb25nOyAgLyogY29udGFpbnMgVE5TIHBhcmFtZXRlcnMgKi8KKyAgICBjb25zdCBUTlNfQ09ORklHX1RBQlVMQVRFRCAqcGFyYW1Nb25vX1Nob3J0OworICAgIGNvbnN0IFROU19DT05GSUdfVEFCVUxBVEVEICpwYXJhbVN0ZXJlb19Mb25nOworICAgIGNvbnN0IFROU19DT05GSUdfVEFCVUxBVEVEICpwYXJhbVN0ZXJlb19TaG9ydDsKK31UTlNfSU5GT19UQUI7CisKKwordm9pZCBHZXRUbnNQYXJhbShUTlNfQ09ORklHX1RBQlVMQVRFRCAqdG5zQ29uZmlnVGFiLCAKKyAgICAgICAgICAgICAgICAgV29yZDMyIGJpdFJhdGUsIFdvcmQxNiBjaGFubmVscywgV29yZDE2IGJsb2NrVHlwZSk7CisKK3ZvaWQgR2V0VG5zTWF4QmFuZHMoV29yZDMyIHNhbXBsaW5nUmF0ZSwgV29yZDE2IGJsb2NrVHlwZSwgV29yZDE2KiB0bnNNYXhTZmIpOworCisjZW5kaWYgLyogX1ROU19QQVJBTV9IICovCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy90cmFuc2Zvcm0uaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvaW5jL3RyYW5zZm9ybS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2NjY5MTQKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL2luYy90cmFuc2Zvcm0uaApAQCAtMCwwICsxLDM2IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorCUZpbGU6CQl0cmFuc2Zvcm0uaA0KKw0KKwlDb250ZW50OglNRENUIFRyYW5zZm9ybSBmdW5jdGlvbnMNCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaWZuZGVmICBfX1RSQU5TRk9STV9IX18KKyNkZWZpbmUgX19UUkFOU0ZPUk1fSF9fCisKKyNpbmNsdWRlICJ0eXBlZGVmLmgiCisgICAgICAgICAgICAgICAgICAKK3ZvaWQgVHJhbnNmb3JtX1JlYWwoV29yZDE2ICptZGN0RGVsYXlCdWZmZXIsCisgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAqdGltZVNpZ25hbCwKKyAgICAgICAgICAgICAgICAgICAgV29yZDE2IGNoSW5jcmVtZW50LCAgICAgLyohIGNoYW5uZWwgaW5jcmVtZW50ICovCisgICAgICAgICAgICAgICAgICAgIFdvcmQzMiAqcmVhbE91dCwKKyAgICAgICAgICAgICAgICAgICAgV29yZDE2ICptZGN0U2NhbGUsCisgICAgICAgICAgICAgICAgICAgIFdvcmQxNiB3aW5kb3dTZXF1ZW5jZQorICAgICAgICAgICAgICAgICAgICApOworCisjZW5kaWYKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3BhdGVudF9kaXNjbGFpbWVyLnR4dCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvcGF0ZW50X2Rpc2NsYWltZXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0YmYxMWQKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3BhdGVudF9kaXNjbGFpbWVyLnR4dApAQCAtMCwwICsxLDkgQEAKKworVEhJUyBJUyBOT1QgQSBHUkFOVCBPRiBQQVRFTlQgUklHSFRTLgorCitHb29nbGUgbWFrZXMgbm8gcmVwcmVzZW50YXRpb24gb3Igd2FycmFudHkgdGhhdCB0aGUgY29kZWNzIGZvciB3aGljaAorc291cmNlIGNvZGUgaXMgbWFkZSBhdmFpbGFibGUgaGVyZXVuZGVyIGFyZSB1bmVuY3VtYmVyZWQgYnkKK3RoaXJkLXBhcnR5IHBhdGVudHMuICBUaG9zZSBpbnRlbmRpbmcgdG8gdXNlIHRoaXMgc291cmNlIGNvZGUgaW4KK2hhcmR3YXJlIG9yIHNvZnR3YXJlIHByb2R1Y3RzIGFyZSBhZHZpc2VkIHRoYXQgaW1wbGVtZW50YXRpb25zIG9mCit0aGVzZSBjb2RlY3MsIGluY2x1ZGluZyBpbiBvcGVuIHNvdXJjZSBzb2Z0d2FyZSBvciBzaGFyZXdhcmUsIG1heQorcmVxdWlyZSBwYXRlbnQgbGljZW5zZXMgZnJvbSB0aGUgcmVsZXZhbnQgcGF0ZW50IGhvbGRlcnMuCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9hYWNfcm9tLmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9hYWNfcm9tLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmNlMDM1MgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL2FhY19yb20uYwpAQCAtMCwwICsxLDIzNjMgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCWFhY19yb20uYw0KKw0KKwlDb250ZW50Ogljb25zdGFudCB0YWJsZXMNCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaW5jbHVkZSAiYWFjX3JvbS5oIg0KKw0KKyNpZiBkZWZpbmVkIChBUk1WNUUpICYmICFkZWZpbmVkIChBUk1WN05lb24pDQorDQorLyogDQorICogIFEzMCBmb3IgMTI4IGFuZCAxMDI0IA0KKyAqDQorICogZm9yIChpID0gMDsgaSA8IG51bS80OyBpKyspIHsNCisgKiAgIGFuZ2xlID0gKGkgKyAwLjEyNSkgKiBNX1BJIC8gbnVtOw0KKyAqICAgeCA9IGNvcyhhbmdsZSkgKiAoMSA8PCAzMCk7DQorICogICB4ID0gc2luKGFuZ2xlKSAqICgxIDw8IDMwKTsNCisgKiANCisgKiAgIGFuZ2xlID0gKG51bS8yIC0gMSAtIGkgKyAwLjEyNSkgKiBNX1BJIC8gbnVtOw0KKyAqICAgeCA9IGNvcyhhbmdsZSkgKiAoMSA8PCAzMCk7DQorICogICB4ID0gc2luKGFuZ2xlKSAqICgxIDw8IDMwKTsNCisgKiB9DQorICovDQorY29uc3QgaW50IGNvc3NpbnRhYlsxMjggKyAxMDI0XSA9IHsNCisJLyogMTI4ICovDQorCTB4M2ZmZmVjNDMsIDB4MDAzMjQzZjEsIDB4MDE1ZmQ0ZDIsIDB4M2ZmYzM4ZDEsIDB4M2ZmOWMxM2EsIDB4MDFjNDU0ZjUsIDB4MDJmMWI3NTUsIDB4M2ZlZWE3NzYsIA0KKwkweDNmZTliOGE5LCAweDAzNTYyMDM4LCAweDA0ODMyNTlkLCAweDNmZDczYTRhLCAweDNmY2ZkNTBiLCAweDA0ZTc2N2M1LCAweDA2MTNlMWM1LCAweDNmYjVmNGVhLCANCisJMHgzZmFjMWE1YiwgMHgwNjc3ZWRiYiwgMHgwN2EzYWRmZiwgMHgzZjhhZGM3NywgMHgzZjdlOGUxZSwgMHgwODA3NzQ1NywgMHgwOTMyNGNhNywgMHgzZjU1Zjc5NiwgDQorCTB4M2Y0NzM3NTksIDB4MDk5NWJkZmQsIDB4MGFiZjgwNDMsIDB4M2YxNzRlNzAsIDB4M2YwNjFlOTUsIDB4MGIyMjhkNDIsIDB4MGM0YjBiOTQsIDB4M2VjZWVhYWQsIA0KKwkweDNlYmI0ZGRiLCAweDBjYWRhNGY1LCAweDBkZDRiMTlhLCAweDNlN2NkNzc4LCAweDNlNjZkMGI0LCAweDBlMzZjODJhLCAweDBmNWMzNWEzLCAweDNlMjEyMTc5LCANCisJMHgzZTA4YjQyYSwgMHgwZmJkYmE0MCwgMHgxMGUxNWI0ZSwgMHgzZGJiZDZkNCwgMHgzZGExMDZiZCwgMHgxMTQyM2VmMCwgMHgxMjYzZTY5OSwgMHgzZDRkMDcyOCwgDQorCTB4M2QyZmQ4NmMsIDB4MTJjNDFhNGYsIDB4MTNlMzliZTksIDB4M2NkNGMzOGIsIDB4M2NiNTNhYWEsIDB4MTQ0MzEwZGQsIDB4MTU2MDQwMTMsIDB4M2M1MzFlODgsIA0KKwkweDNjMzE0MDYwLCAweDE1YmVlNzhjLCAweDE2ZDk5ODY0LCAweDNiYzgyYzFmLCAweDNiYTNmZGU3LCAweDE3Mzc2M2M5LCAweDE4NGY2YWFiLCAweDNiMzQwMWJiLCANCisJMHgzYjBkODkwOSwgMHgxOGFjNGI4NywgMHgxOWMxN2Q0NCwgMHgzYTk2YjYzNiwgMHgzYTZkZjhmOCwgMHgxYTFkNjU0NCwgMHgxYjJmOTcxZSwgMHgzOWYwNjFkMiwgDQorCTB4MzljNTY2NGYsIDB4MWI4YTc4MTUsIDB4MWM5OTdmYzQsIDB4Mzk0MTFlMzMsIDB4MzkxM2ViMGUsIDB4MWNmMzRiYWYsIDB4MWRmZWZmNjcsIDB4Mzg4OTA2NjMsIA0KKwkweDM4NTlhMjkyLCAweDFlNTdhODZkLCAweDFmNWZkZWU2LCAweDM3YzgzNmMyLCAweDM3OTZhOTk2LCAweDFmYjc1NzVjLCAweDIwYmJlN2Q4LCAweDM2ZmVjZDBlLCANCisJMHgzNmNiMWUyYSwgMHgyMTEyMjI0MCwgMHgyMjEyZTQ5MiwgMHgzNjJjZTg1NSwgMHgzNWY3MWZiMSwgMHgyMjY3ZDNhMCwgMHgyMzY0YTAyZSwgMHgzNTUyYThmNCwgDQorCTB4MzUxYWNlZGQsIDB4MjNiODM2Y2EsIDB4MjRiMGU2OTksIDB4MzQ3MDMwOTUsIDB4MzQzNjRkYTYsIDB4MjUwMzE3ZGYsIDB4MjVmNzg0OTcsIDB4MzM4NWEyMjIsIA0KKwkweDMzNDliZjQ4LCAweDI2NDg0M2Q5LCAweDI3Mzg0N2M4LCAweDMyOTMyMWM3LCAweDMyNTU0ODQwLCAweDI3ODc4ODkzLCAweDI4NzJmZWI2LCAweDMxOThkNGVhLCANCisJMHgzMTU5MGUzZSwgMHgyOGMwYjRkMiwgMHgyOWE3NzhkYiwgMHgzMDk2ZTIyMywgMHgzMDU1MzgyOCwgMHgyOWYzOTg0YywgMHgyYWQ1ODZhMywgMHgyZjhkNzEzYSwgDQorCTB4MmY0OWVlMGYsIDB4MmIyMDAzYWMsIDB4MmJmY2Y5N2MsIDB4MmU3Y2FiMWMsIDB4MmUzNzU5MmMsIDB4MmM0NWM4YTAsIDB4MmQxZGEzZDUsIDB4MmQ2NGI5ZGEsIA0KKwkvKiAxMDI0ICovDQorCTB4M2ZmZmZmYjEsIDB4MDAwNjQ4N2YsIDB4MDAyYmZiNzQsIDB4M2ZmZmYwZTMsIDB4M2ZmZmU3MDUsIDB4MDAzODhjNmUsIDB4MDA1ZTNmNGMsIDB4M2ZmZmJhOWIsIA0KKwkweDNmZmZhNmRlLCAweDAwNmFkMDNiLCAweDAwOTA4MmVhLCAweDNmZmY1Y2Q4LCAweDNmZmYzZjNjLCAweDAwOWQxM2M1LCAweDAwYzJjNjJmLCAweDNmZmVkNzliLCANCisJMHgzZmZlYjAyMSwgMHgwMGNmNTZlZiwgMHgwMGY1MDhmYywgMHgzZmZlMmFlNSwgMHgzZmZkZjk4YywgMHgwMTAxOTk5OCwgMHgwMTI3NGIzMSwgMHgzZmZkNTZiNSwgDQorCTB4M2ZmZDFiN2UsIDB4MDEzM2RiYTMsIDB4MDE1OThjYjEsIDB4M2ZmYzViMGMsIDB4M2ZmYzE1ZjcsIDB4MDE2NjFjZjAsIDB4MDE4YmNkNWIsIDB4M2ZmYjM3ZWMsIA0KKwkweDNmZmFlOGY5LCAweDAxOTg1ZDYwLCAweDAxYmUwZDExLCAweDNmZjllZDUzLCAweDNmZjk5NDgzLCAweDAxY2E5Y2Q0LCAweDAxZjA0YmI0LCAweDNmZjg3YjQ0LCANCisJMHgzZmY4MTg5NiwgMHgwMWZjZGIyZSwgMHgwMjIyODkyNCwgMHgzZmY2ZTFiZiwgMHgzZmY2NzUzNCwgMHgwMjJmMTg0ZCwgMHgwMjU0YzU0NCwgMHgzZmY1MjBjNSwgDQorCTB4M2ZmNGFhNWQsIDB4MDI2MTU0MTQsIDB4MDI4NmZmZjMsIDB4M2ZmMzM4NTgsIDB4M2ZmMmI4MTMsIDB4MDI5MzhlNjIsIDB4MDJiOTM5MTQsIDB4M2ZmMTI4NzgsIA0KKwkweDNmZjA5ZTU2LCAweDAyYzVjNzFhLCAweDAyZWI3MDg2LCAweDNmZWVmMTI2LCAweDNmZWU1ZDI4LCAweDAyZjdmZTFjLCAweDAzMWRhNjJiLCAweDNmZWM5MjY1LCANCisJMHgzZmViZjQ4YiwgMHgwMzJhMzM0OSwgMHgwMzRmZDllNSwgMHgzZmVhMGMzNSwgMHgzZmU5NjQ4MCwgMHgwMzVjNjY4MiwgMHgwMzgyMGI5MywgMHgzZmU3NWU5OCwgDQorCTB4M2ZlNmFkMDgsIDB4MDM4ZTk3YTksIDB4MDNiNDNiMTcsIDB4M2ZlNDg5OTAsIDB4M2ZlM2NlMjYsIDB4MDNjMGM2OWUsIDB4MDNlNjY4NTIsIDB4M2ZlMThkMWYsIA0KKwkweDNmZTBjN2RhLCAweDAzZjJmMzQyLCAweDA0MTg5MzI2LCAweDNmZGU2OTQ1LCAweDNmZGQ5YTI3LCAweDA0MjUxZDc3LCAweDA0NGFiYjczLCAweDNmZGIxZTA2LCANCisJMHgzZmRhNDUwZiwgMHgwNDU3NDUxZCwgMHgwNDdjZTExYSwgMHgzZmQ3YWI2NCwgMHgzZmQ2Yzg5NCwgMHgwNDg5NmExNiwgMHgwNGFmMDNmYywgMHgzZmQ0MTE1ZiwgDQorCTB4M2ZkMzI0YjcsIDB4MDRiYjhjNDIsIDB4MDRlMTIzZmEsIDB4M2ZkMDRmZmMsIDB4M2ZjZjU5N2MsIDB4MDRlZGFiODMsIDB4MDUxMzQwZjYsIDB4M2ZjYzY3M2IsIA0KKwkweDNmY2I2NmU0LCAweDA1MWZjN2I5LCAweDA1NDU1YWQxLCAweDNmYzg1NzFmLCAweDNmYzc0Y2YzLCAweDA1NTFlMGM3LCAweDA1Nzc3MTZiLCAweDNmYzQxZmFjLCANCisJMHgzZmMzMGJhYSwgMHgwNTgzZjY4YywgMHgwNWE5ODRhNiwgMHgzZmJmYzBlMywgMHgzZmJlYTMwYywgMHgwNWI2MDhlYiwgMHgwNWRiOTQ2MywgMHgzZmJiM2FjNywgDQorCTB4M2ZiYTEzMWIsIDB4MDVlODE3YzMsIDB4MDYwZGEwODMsIDB4M2ZiNjhkNWIsIDB4M2ZiNTViZGMsIDB4MDYxYTIyZjcsIDB4MDYzZmE4ZTcsIDB4M2ZiMWI4YTIsIA0KKwkweDNmYjA3ZDUwLCAweDA2NGMyYTY3LCAweDA2NzFhZDcxLCAweDNmYWNiYzlmLCAweDNmYWI3NzdiLCAweDA2N2UyZGY1LCAweDA2YTNhZTAwLCAweDNmYTc5OTU0LCANCisJMHgzZmE2NGE1ZiwgMHgwNmIwMmQ4MSwgMHgwNmQ1YWE3NywgMHgzZmEyNGVjNiwgMHgzZmEwZjYwMCwgMHgwNmUyMjhlZSwgMHgwNzA3YTJiNywgMHgzZjljZGNmNywgDQorCTB4M2Y5YjdhNjIsIDB4MDcxNDIwMWIsIDB4MDczOTk2YTEsIDB4M2Y5NzQzZWIsIDB4M2Y5NWQ3ODcsIDB4MDc0NjEyZWIsIDB4MDc2Yjg2MTYsIDB4M2Y5MTgzYTUsIA0KKwkweDNmOTAwZDcyLCAweDA3NzgwMTNkLCAweDA3OWQ3MGY3LCAweDNmOGI5YzI4LCAweDNmOGExYzI5LCAweDA3YTllYWY1LCAweDA3Y2Y1NzI2LCAweDNmODU4ZDc5LCANCisJMHgzZjg0MDNhZSwgMHgwN2RiY2ZmMiwgMHgwODAxMzg4MywgMHgzZjdmNTc5YiwgMHgzZjdkYzQwNSwgMHgwODBkYjAxNiwgMHgwODMzMTRmMSwgMHgzZjc4ZmE5MiwgDQorCTB4M2Y3NzVkMzEsIDB4MDgzZjhiNDMsIDB4MDg2NGVjNGYsIDB4M2Y3Mjc2NjEsIDB4M2Y3MGNmMzgsIDB4MDg3MTYxNTksIDB4MDg5NmJlODAsIDB4M2Y2YmNiMGUsIA0KKwkweDNmNmExYTFjLCAweDA4YTMzMjNhLCAweDA4Yzg4YjY1LCAweDNmNjRmODliLCAweDNmNjMzZGUyLCAweDA4ZDRmZGM2LCAweDA4ZmE1MmRlLCAweDNmNWRmZjBlLCANCisJMHgzZjVjM2E4ZiwgMHgwOTA2YzNlMCwgMHgwOTJjMTRjZSwgMHgzZjU2ZGU2YSwgMHgzZjU1MTAyNiwgMHgwOTM4ODQ2OSwgMHgwOTVkZDExNiwgMHgzZjRmOTZiNCwgDQorCTB4M2Y0ZGJlYWMsIDB4MDk2YTNmNDIsIDB4MDk4Zjg3OTYsIDB4M2Y0ODI3ZjAsIDB4M2Y0NjQ2MjYsIDB4MDk5YmY0NGMsIDB4MDljMTM4MzEsIDB4M2Y0MDkyMjMsIA0KKwkweDNmM2VhNjk3LCAweDA5Y2RhMzY4LCAweDA5ZjJlMmM3LCAweDNmMzhkNTUyLCAweDNmMzZlMDA2LCAweDA5ZmY0Yzc4LCAweDBhMjQ4NzNhLCAweDNmMzBmMTgxLCANCisJMHgzZjJlZjI3NiwgMHgwYTMwZWY1ZSwgMHgwYTU2MjU2YywgMHgzZjI4ZTZiNiwgMHgzZjI2ZGRlYywgMHgwYTYyOGJmYSwgMHgwYTg3YmQzZCwgMHgzZjIwYjRmNSwgDQorCTB4M2YxZWEyNmUsIDB4MGE5NDIyMmYsIDB4MGFiOTRlOGYsIDB4M2YxODVjNDMsIDB4M2YxNjQwMDEsIDB4MGFjNWIxZGMsIDB4MGFlYWQ5NDQsIDB4M2YwZmRjYTUsIA0KKwkweDNmMGRiNmE5LCAweDBhZjczYWU1LCAweDBiMWM1ZDNkLCAweDNmMDczNjIxLCAweDNmMDUwNjZkLCAweDBiMjhiZDJhLCAweDBiNGRkYTVjLCAweDNlZmU2OGJjLCANCisJMHgzZWZjMmY1MCwgMHgwYjVhMzg4ZCwgMHgwYjdmNTA4MSwgMHgzZWY1NzQ3YiwgMHgzZWYzMzE1YSwgMHgwYjhiYWNmMCwgMHgwYmIwYmY4ZiwgMHgzZWVjNTk2NSwgDQorCTB4M2VlYTBjOGUsIDB4MGJiZDFhMzMsIDB4MGJlMjI3NjYsIDB4M2VlMzE3N2UsIDB4M2VlMGMwZjQsIDB4MGJlZTgwMzgsIDB4MGMxMzg3ZTksIDB4M2VkOWFlY2MsIA0KKwkweDNlZDc0ZTkxLCAweDBjMWZkZWUxLCAweDBjNDRlMGY5LCAweDNlZDAxZjU1LCAweDNlY2RiNTZhLCAweDBjNTEzNjEwLCAweDBjNzYzMjc4LCAweDNlYzY2OTIwLCANCisJMHgzZWMzZjU4NSwgMHgwYzgyODVhNSwgMHgwY2E3N2M0NywgMHgzZWJjOGMzMSwgMHgzZWJhMGVlOSwgMHgwY2IzY2Q4NCwgMHgwY2Q4YmU0NywgMHgzZWIyODg4ZiwgDQorCTB4M2ViMDAxOWMsIDB4MGNlNTBkOGMsIDB4MGQwOWY4NWIsIDB4M2VhODVlNDEsIDB4M2VhNWNkYTMsIDB4MGQxNjQ1YTAsIDB4MGQzYjJhNjQsIDB4M2U5ZTBkNGMsIA0KKwkweDNlOWI3MzA2LCAweDBkNDc3NWExLCAweDBkNmM1NDQzLCAweDNlOTM5NWI3LCAweDNlOTBmMWNhLCAweDBkNzg5ZDcxLCAweDBkOWQ3NWRiLCAweDNlODhmNzg4LCANCisJMHgzZTg2NDlmNSwgMHgwZGE5YmNmMiwgMHgwZGNlOGYwZCwgMHgzZTdlMzJjNiwgMHgzZTdiN2I5MCwgMHgwZGRhZDQwNiwgMHgwZGZmOWZiYSwgMHgzZTczNDc3OCwgDQorCTB4M2U3MDg2OWYsIDB4MGUwYmUyOGUsIDB4MGUzMGE3YzUsIDB4M2U2ODM1YTQsIDB4M2U2NTZiMmIsIDB4MGUzY2U4NmIsIDB4MGU2MWE3MGYsIDB4M2U1Y2ZkNTEsIA0KKwkweDNlNWEyOTM5LCAweDBlNmRlNTgwLCAweDBlOTI5ZDdhLCAweDNlNTE5ZTg2LCAweDNlNGVjMGQxLCAweDBlOWVkOWFmLCAweDBlYzM4YWU4LCAweDNlNDYxOTRhLCANCisJMHgzZTQzMzFmYSwgMHgwZWNmYzRkOSwgMHgwZWY0NmYzYiwgMHgzZTNhNmRhNCwgMHgzZTM3N2NiYiwgMHgwZjAwYTZkZiwgMHgwZjI1NGE1MywgMHgzZTJlOWI5YywgDQorCTB4M2UyYmExMWIsIDB4MGYzMTdmYTUsIDB4MGY1NjFjMTUsIDB4M2UyMmEzMzgsIDB4M2UxZjlmMjEsIDB4MGY2MjRmMGMsIDB4MGY4NmU0NjAsIDB4M2UxNjg0ODAsIA0KKwkweDNlMTM3NmQ1LCAweDBmOTMxNGY1LCAweDBmYjdhMzE3LCAweDNlMGEzZjdiLCAweDNlMDcyODNmLCAweDBmYzNkMTQzLCAweDBmZTg1ODFkLCAweDNkZmRkNDMyLCANCisJMHgzZGZhYjM2NSwgMHgwZmY0ODNkNywgMHgxMDE5MDM1MiwgMHgzZGYxNDJhYiwgMHgzZGVlMTg1MSwgMHgxMDI1MmM5NCwgMHgxMDQ5YTQ5YSwgMHgzZGU0OGFlZiwgDQorCTB4M2RlMTU3MDgsIDB4MTA1NWNiNWIsIDB4MTA3YTNiZDUsIDB4M2RkN2FkMDUsIDB4M2RkNDZmOTQsIDB4MTA4NjYwMGUsIDB4MTBhYWM4ZTYsIDB4M2RjYWE4ZjUsIA0KKwkweDNkYzc2MWZjLCAweDEwYjZlYTkwLCAweDEwZGI0YmFmLCAweDNkYmQ3ZWM3LCAweDNkYmEyZTQ4LCAweDEwZTc2YWMzLCAweDExMGJjNDEzLCAweDNkYjAyZTg0LCANCisJMHgzZGFjZDQ4MSwgMHgxMTE3ZTA4OCwgMHgxMTNjMzFmMywgMHgzZGEyYjgzNCwgMHgzZDlmNTRhZiwgMHgxMTQ4NGJjMiwgMHgxMTZjOTUzMSwgMHgzZDk1MWJkZSwgDQorCTB4M2Q5MWFlZDksIDB4MTE3OGFjNTMsIDB4MTE5Y2VkYWYsIDB4M2Q4NzU5OGMsIDB4M2Q4M2UzMDksIDB4MTFhOTAyMWQsIDB4MTFjZDNiNTAsIDB4M2Q3OTcxNDUsIA0KKwkweDNkNzVmMTQ3LCAweDExZDk0ZDAyLCAweDExZmQ3ZGY2LCAweDNkNmI2MzEzLCAweDNkNjdkOTliLCAweDEyMDk4Y2U1LCAweDEyMmRiNTgzLCAweDNkNWQyZWZlLCANCisJMHgzZDU5OWMwZSwgMHgxMjM5YzFhNywgMHgxMjVkZTFkYSwgMHgzZDRlZDUwZiwgMHgzZDRiMzhhYSwgMHgxMjY5ZWIyYiwgMHgxMjhlMDJkYywgMHgzZDQwNTU0ZSwgDQorCTB4M2QzY2FmNzYsIDB4MTI5YTA5NTQsIDB4MTJiZTE4NmMsIDB4M2QzMWFmYzUsIDB4M2QyZTAwN2MsIDB4MTJjYTFjMDMsIDB4MTJlZTIyNmMsIDB4M2QyMmU0N2MsIA0KKwkweDNkMWYyYmM1LCAweDEyZmEyMzFiLCAweDEzMWUyMGMwLCAweDNkMTNmMzdlLCAweDNkMTAzMTVhLCAweDEzMmExZTdlLCAweDEzNGUxMzQ4LCAweDNkMDRkY2QyLCANCisJMHgzZDAxMTE0NSwgMHgxMzVhMGUwZSwgMHgxMzdkZjllNywgMHgzY2Y1YTA4MiwgMHgzY2YxY2I4ZSwgMHgxMzg5ZjFhZiwgMHgxM2FkZDQ4MSwgMHgzY2U2M2U5OCwgDQorCTB4M2NlMjYwM2YsIDB4MTNiOWM5NDMsIDB4MTNkZGEyZjcsIDB4M2NkNmI3MWUsIDB4M2NkMmNmNjIsIDB4MTNlOTk0YWIsIDB4MTQwZDY1MmMsIDB4M2NjNzBhMWMsIA0KKwkweDNjYzMxOGZmLCAweDE0MTk1M2NiLCAweDE0M2QxYjAyLCAweDNjYjczNzljLCAweDNjYjMzZDIyLCAweDE0NDkwNjg1LCAweDE0NmNjNDVjLCAweDNjYTczZmE5LCANCisJMHgzY2EzM2JkMywgMHgxNDc4YWNiYywgMHgxNDljNjExZCwgMHgzYzk3MjI0YywgMHgzYzkzMTUxZCwgMHgxNGE4NDY1MiwgMHgxNGNiZjEyNywgMHgzYzg2ZGY4ZSwgDQorCTB4M2M4MmM5MDksIDB4MTRkN2QzMmEsIDB4MTRmYjc0NWUsIDB4M2M3Njc3N2IsIDB4M2M3MjU3YTIsIDB4MTUwNzUzMjcsIDB4MTUyYWVhYTMsIDB4M2M2NWVhMWMsIA0KKwkweDNjNjFjMGYxLCAweDE1MzZjNjJiLCAweDE1NWE1M2Q5LCAweDNjNTUzNzdiLCAweDNjNTEwNTAxLCAweDE1NjYyYzE4LCAweDE1ODlhZmUzLCAweDNjNDQ1ZmEyLCANCisJMHgzYzQwMjNkZCwgMHgxNTk1ODRkMywgMHgxNWI4ZmVhNCwgMHgzYzMzNjI5ZCwgMHgzYzJmMWQ4ZSwgMHgxNWM0ZDAzZSwgMHgxNWU4M2ZmZiwgMHgzYzIyNDA3NSwgDQorCTB4M2MxZGYyMWYsIDB4MTVmNDBlM2EsIDB4MTYxNzczZDYsIDB4M2MxMGY5MzUsIDB4M2MwY2ExOWIsIDB4MTYyMzNlYWMsIDB4MTY0NjlhMGQsIDB4M2JmZjhjZTgsIA0KKwkweDNiZmIyYzBjLCAweDE2NTI2MTc2LCAweDE2NzViMjg2LCAweDNiZWRmYjk5LCAweDNiZTk5MTdlLCAweDE2ODE3NjdjLCAweDE2YTRiZDI1LCAweDNiZGM0NTUyLCANCisJMHgzYmQ3ZDFmYSwgMHgxNmIwN2Q5ZiwgMHgxNmQzYjljYywgMHgzYmNhNmExZCwgMHgzYmM1ZWQ4ZCwgMHgxNmRmNzZjMywgMHgxNzAyYTg1ZSwgMHgzYmI4NmEwOCwgDQorCTB4M2JiM2U0NDAsIDB4MTcwZTYxY2MsIDB4MTczMTg4YmUsIDB4M2JhNjQ1MWIsIDB4M2JhMWI2MjAsIDB4MTczZDNlOWIsIDB4MTc2MDVhZDAsIDB4M2I5M2ZiNjMsIA0KKwkweDNiOGY2MzM3LCAweDE3NmMwZDE1LCAweDE3OGYxZTc2LCAweDNiODE4Y2ViLCAweDNiN2NlYjkwLCAweDE3OWFjZDFjLCAweDE3YmRkMzk0LCAweDNiNmVmOWJlLCANCisJMHgzYjZhNGYzOCwgMHgxN2M5N2U5MywgMHgxN2VjN2EwZCwgMHgzYjVjNDFlOCwgMHgzYjU3OGUzOSwgMHgxN2Y4MjE1ZSwgMHgxODFiMTFjNCwgMHgzYjQ5NjU3NCwgDQorCTB4M2I0NGE4YTAsIDB4MTgyNmI1NjEsIDB4MTg0OTlhOWQsIDB4M2IzNjY0NmUsIDB4M2IzMTllNzcsIDB4MTg1NTNhN2QsIDB4MTg3ODE0N2EsIDB4M2IyMzNlZTEsIA0KKwkweDNiMWU2ZmNhLCAweDE4ODNiMDk3LCAweDE4YTY3ZjNmLCAweDNiMGZmNGQ5LCAweDNiMGIxY2E2LCAweDE4YjIxNzkxLCAweDE4ZDRkYWQwLCAweDNhZmM4NjYzLCANCisJMHgzYWY3YTUxNiwgMHgxOGUwNmY1MCwgMHgxOTAzMjcwZiwgMHgzYWU4ZjM4YiwgMHgzYWU0MDkyNiwgMHgxOTBlYjdiNywgMHgxOTMxNjNlMSwgMHgzYWQ1M2M1YiwgDQorCTB4M2FkMDQ4ZTMsIDB4MTkzY2YwYTksIDB4MTk1ZjkxMjgsIDB4M2FjMTYwZTEsIDB4M2FiYzY0NTgsIDB4MTk2YjFhMDksIDB4MTk4ZGFlYzgsIDB4M2FhZDYxMjksIA0KKwkweDNhYTg1YjkyLCAweDE5OTkzM2JiLCAweDE5YmJiY2E2LCAweDNhOTkzZDNlLCAweDNhOTQyZTlkLCAweDE5YzczZGEzLCAweDE5ZTliYWEzLCAweDNhODRmNTJmLCANCisJMHgzYTdmZGQ4NiwgMHgxOWY1MzdhNCwgMHgxYTE3YThhNSwgMHgzYTcwODkwNiwgMHgzYTZiNjg1OSwgMHgxYTIzMjFhMiwgMHgxYTQ1ODY4ZSwgMHgzYTViZjhkMSwgDQorCTB4M2E1NmNmMjMsIDB4MWE1MGZiODEsIDB4MWE3MzU0NDIsIDB4M2E0NzQ0OWMsIDB4M2E0MjExZjAsIDB4MWE3ZWM1MjQsIDB4MWFhMTExYTYsIDB4M2EzMjZjNzQsIA0KKwkweDNhMmQzMGNkLCAweDFhYWM3ZTZmLCAweDFhY2ViZTlkLCAweDNhMWQ3MDY2LCAweDNhMTgyYmM4LCAweDFhZGEyNzQ2LCAweDFhZmM1YjBhLCAweDNhMDg1MDdmLCANCisJMHgzYTAzMDJlZCwgMHgxYjA3YmY4YywgMHgxYjI5ZTZkMiwgMHgzOWYzMGNjYywgMHgzOWVkYjY0OSwgMHgxYjM1NDcyNywgMHgxYjU3NjFkOCwgMHgzOWRkYTU1YSwgDQorCTB4MzlkODQ1ZTksIDB4MWI2MmJkZjgsIDB4MWI4NGNjMDEsIDB4MzljODFhMzYsIDB4MzljMmIxZGEsIDB4MWI5MDIzZTUsIDB4MWJiMjI1MzAsIDB4MzliMjZiNmQsIA0KKwkweDM5YWNmYTJiLCAweDFiYmQ3OGQyLCAweDFiZGY2ZDRhLCAweDM5OWM5OTBkLCAweDM5OTcxZWU3LCAweDFiZWFiY2ExLCAweDFjMGNhNDMyLCAweDM5ODZhMzI0LCANCisJMHgzOTgxMjAxZSwgMHgxYzE3ZWYzOSwgMHgxYzM5YzljZCwgMHgzOTcwODliZiwgMHgzOTZhZmRkYywgMHgxYzQ1MTA3YywgMHgxYzY2ZGRmZSwgMHgzOTVhNGNlYiwgDQorCTB4Mzk1NGI4MmUsIDB4MWM3MjIwNGYsIDB4MWM5M2UwYWIsIDB4Mzk0M2VjYjYsIDB4MzkzZTRmMjMsIDB4MWM5ZjFlOTYsIDB4MWNjMGQxYjYsIDB4MzkyZDY5MmYsIA0KKwkweDM5MjdjMmM5LCAweDFjY2MwYjM1LCAweDFjZWRiMTA2LCAweDM5MTZjMjYyLCAweDM5MTExMzJkLCAweDFjZjhlNjExLCAweDFkMWE3ZTdkLCAweDM4ZmZmODVlLCANCisJMHgzOGZhNDA1ZSwgMHgxZDI1YWYwZCwgMHgxZDQ3M2EwMCwgMHgzOGU5MGIzMSwgMHgzOGUzNGE2OSwgMHgxZDUyNjYwZiwgMHgxZDczZTM3NCwgMHgzOGQxZmFlOSwgDQorCTB4MzhjYzMxNWQsIDB4MWQ3ZjBhZmIsIDB4MWRhMDdhYmMsIDB4MzhiYWM3OTUsIDB4MzhiNGY1NDcsIDB4MWRhYjlkYjUsIDB4MWRjY2ZmYmYsIDB4MzhhMzcxNDIsIA0KKwkweDM4OWQ5NjM3LCAweDFkZDgxZTIxLCAweDFkZjk3MjVmLCAweDM4OGJmN2ZmLCAweDM4ODYxNDNiLCAweDFlMDQ4YzI0LCAweDFlMjVkMjgyLCAweDM4NzQ1YmRiLCANCisJMHgzODZlNmY2MCwgMHgxZTMwZTdhNCwgMHgxZTUyMjAwYywgMHgzODVjOWNlMywgMHgzODU2YTdiNiwgMHgxZTVkMzA4NCwgMHgxZTdlNWFlMiwgMHgzODQ0YmIyOCwgDQorCTB4MzgzZWJkNGMsIDB4MWU4OTY2YTgsIDB4MWVhYTgyZTksIDB4MzgyY2I2YjcsIDB4MzgyNmIwMzAsIDB4MWViNTg5ZjcsIDB4MWVkNjk4MDUsIDB4MzgxNDhmOWYsIA0KKwkweDM4MGU4MDcxLCAweDFlZTE5YTU0LCAweDFmMDI5YTFjLCAweDM3ZmM0NWVmLCAweDM3ZjYyZTFkLCAweDFmMGQ5N2E1LCAweDFmMmU4OTExLCAweDM3ZTNkOWI3LCANCisJMHgzN2RkYjk0NSwgMHgxZjM5ODFjZSwgMHgxZjVhNjRjYiwgMHgzN2NiNGIwNCwgMHgzN2M1MjFmNiwgMHgxZjY1NThiNSwgMHgxZjg2MmQyZCwgMHgzN2IyOTllNywgDQorCTB4MzdhYzY4NDEsIDB4MWY5MTFjM2QsIDB4MWZiMWUyMWQsIDB4Mzc5OWM2NmYsIDB4Mzc5MzhjMzQsIDB4MWZiY2NjNGQsIDB4MWZkZDgzODEsIDB4Mzc4MGQwYWEsIA0KKwkweDM3N2E4ZGRmLCAweDFmZTg2OGM4LCAweDIwMDkxMTNjLCAweDM3NjdiOGE5LCAweDM3NjE2ZDUxLCAweDIwMTNmMTk2LCAweDIwMzQ4YjM1LCAweDM3NGU3ZTdiLCANCisJMHgzNzQ4MmE5YSwgMHgyMDNmNjY5OSwgMHgyMDVmZjE0ZiwgMHgzNzM1MjIyZiwgMHgzNzJlYzVjOSwgMHgyMDZhYzdiOCwgMHgyMDhiNDM3MiwgMHgzNzFiYTNkNCwgDQorCTB4MzcxNTNlZWUsIDB4MjA5NjE0ZDksIDB4MjBiNjgxODEsIDB4MzcwMjAzN2MsIDB4MzZmYjk2MTgsIDB4MjBjMTRkZGYsIDB4MjBlMWFiNjMsIDB4MzZlODQxMzUsIA0KKwkweDM2ZTFjYjU4LCAweDIwZWM3MmIxLCAweDIxMGNjMGZjLCAweDM2Y2U1ZDEwLCAweDM2YzdkZWJkLCAweDIxMTc4MzM0LCAweDIxMzdjMjMyLCAweDM2YjQ1NzFiLCANCisJMHgzNmFkZDA1OCwgMHgyMTQyN2Y0ZCwgMHgyMTYyYWVlYSwgMHgzNjlhMmY2OSwgMHgzNjkzYTAzOCwgMHgyMTZkNjZlMiwgMHgyMThkODcwYiwgMHgzNjdmZTYwOCwgDQorCTB4MzY3OTRlNmUsIDB4MjE5ODM5ZDgsIDB4MjFiODRhNzksIDB4MzY2NTdiMDgsIDB4MzY1ZWRiMDksIDB4MjFjMmY4MTUsIDB4MjFlMmY5MWEsIDB4MzY0YWVlN2IsIA0KKwkweDM2NDQ0NjFiLCAweDIxZWRhMTdmLCAweDIyMGQ5MmQ0LCAweDM2MzA0MDcwLCAweDM2Mjk4ZmI0LCAweDIyMTgzNWZiLCAweDIyMzgxNzhkLCAweDM2MTU3MGY4LCANCisJMHgzNjBlYjdlMywgMHgyMjQyYjU2ZiwgMHgyMjYyODcyOSwgMHgzNWZhODAyMywgMHgzNWYzYmViYSwgMHgyMjZkMWZjMSwgMHgyMjhjZTE5MSwgMHgzNWRmNmUwMywgDQorCTB4MzVkOGE0NDksIDB4MjI5Nzc0ZDcsIDB4MjJiNzI2YTgsIDB4MzVjNDNhYTcsIDB4MzViZDY4YTEsIDB4MjJjMWI0OTYsIDB4MjJlMTU2NTUsIDB4MzVhOGU2MjEsIA0KKwkweDM1YTIwYmQzLCAweDIyZWJkZWU1LCAweDIzMGI3MDdlLCAweDM1OGQ3MDgxLCAweDM1ODY4ZGVmLCAweDIzMTVmM2E4LCAweDIzMzU3NTA5LCAweDM1NzFkOWQ5LCANCisJMHgzNTZhZWYwOCwgMHgyMzNmZjJjOCwgMHgyMzVmNjNkYywgMHgzNTU2MjIzOSwgMHgzNTRmMmYyYywgMHgyMzY5ZGMyOSwgMHgyMzg5M2NkZCwgMHgzNTNhNDliMiwgDQorCTB4MzUzMzRlNmYsIDB4MjM5M2FmYjIsIDB4MjNiMmZmZjMsIDB4MzUxZTUwNTYsIDB4MzUxNzRjZTAsIDB4MjNiZDZkNDgsIDB4MjNkY2FkMDMsIDB4MzUwMjM2MzYsIA0KKwkweDM0ZmIyYTkyLCAweDIzZTcxNGQzLCAweDI0MDY0M2Y0LCAweDM0ZTVmYjYzLCAweDM0ZGVlNzk1LCAweDI0MTBhNjM5LCAweDI0MmZjNGFkLCAweDM0Yzk5ZmVmLCANCisJMHgzNGMyODNmYiwgMHgyNDNhMjE1ZiwgMHgyNDU5MmYxMywgMHgzNGFkMjNlYiwgMHgzNGE1ZmZkNSwgMHgyNDYzODYyYywgMHgyNDgyODMwZCwgMHgzNDkwODc2OCwgDQorCTB4MzQ4OTViMzYsIDB4MjQ4Y2Q0ODcsIDB4MjRhYmMwODIsIDB4MzQ3M2NhNzksIDB4MzQ2Yzk2MmYsIDB4MjRiNjBjNTcsIDB4MjRkNGU3NTcsIDB4MzQ1NmVkMmYsIA0KKwkweDM0NGZiMGQxLCAweDI0ZGYyZDgxLCAweDI0ZmRmNzc1LCAweDM0MzllZjljLCAweDM0MzJhYjJlLCAweDI1MDgzN2VkLCAweDI1MjZmMGMxLCAweDM0MWNkMWQyLCANCisJMHgzNDE1ODU1OSwgMHgyNTMxMmI4MSwgMHgyNTRmZDMyMywgMHgzM2ZmOTNlMiwgMHgzM2Y4M2Y2MiwgMHgyNTVhMDgyMywgMHgyNTc4OWU4MCwgMHgzM2UyMzVkZiwgDQorCTB4MzNkYWQ5NWUsIDB4MjU4MmNkYmMsIDB4MjVhMTUyYzAsIDB4MzNjNGI3ZGIsIDB4MzNiZDUzNWMsIDB4MjVhYjdjMzAsIDB4MjVjOWVmY2EsIDB4MzNhNzE5ZTgsIA0KKwkweDMzOWZhZDcwLCAweDI1ZDQxMzY5LCAweDI1ZjI3NTg0LCAweDMzODk1YzE4LCAweDMzODFlN2FjLCAweDI1ZmM5MzRiLCAweDI2MWFlM2Q2LCAweDMzNmI3ZTdlLCANCisJMHgzMzY0MDIyMywgMHgyNjI0ZmJiZiwgMHgyNjQzM2FhNywgMHgzMzRkODEyZCwgMHgzMzQ1ZmNlNiwgMHgyNjRkNGNhYywgMHgyNjZiNzlkZCwgMHgzMzJmNjQzNSwgDQorCTB4MzMyN2Q4MDgsIDB4MjY3NTg1ZjgsIDB4MjY5M2ExNjEsIDB4MzMxMTI3YWIsIDB4MzMwOTkzOWMsIDB4MjY5ZGE3OGIsIDB4MjZiYmIxMTksIDB4MzJmMmNiYTEsIA0KKwkweDMyZWIyZmI1LCAweDI2YzViMTRjLCAweDI2ZTNhOGVjLCAweDMyZDQ1MDI5LCAweDMyY2NhYzY0LCAweDI2ZWRhMzIyLCAweDI3MGI4OGMyLCAweDMyYjViNTU3LCANCisJMHgzMmFlMDliZSwgMHgyNzE1N2NmNSwgMHgyNzMzNTA4MiwgMHgzMjk2ZmIzZCwgMHgzMjhmNDdkNSwgMHgyNzNkM2VhYywgMHgyNzViMDAxNCwgMHgzMjc4MjFlZSwgDQorCTB4MzI3MDY2YmMsIDB4Mjc2NGU4MmYsIDB4Mjc4Mjk3NjAsIDB4MzI1OTI5N2QsIDB4MzI1MTY2ODYsIDB4Mjc4Yzc5NjUsIDB4MjdhYTE2NGMsIDB4MzIzYTExZmUsIA0KKwkweDMyMzI0NzQ2LCAweDI3YjNmMjM1LCAweDI3ZDE3Y2MxLCAweDMyMWFkYjgzLCAweDMyMTMwOTBmLCAweDI3ZGI1Mjg4LCAweDI3ZjhjYWE1LCAweDMxZmI4NjIwLCANCisJMHgzMWYzYWJmNSwgMHgyODAyOWE0NSwgMHgyODFmZmZlMiwgMHgzMWRjMTFlOCwgMHgzMWQ0MzAwYiwgMHgyODI5Yzk1NCwgMHgyODQ3MWM1ZSwgMHgzMWJjN2VlZSwgDQorCTB4MzFiNDk1NjQsIDB4Mjg1MGRmOWQsIDB4Mjg2ZTIwMDIsIDB4MzE5Y2NkNDYsIDB4MzE5NGRjMTQsIDB4Mjg3N2RkMDcsIDB4Mjg5NTBhYjYsIDB4MzE3Y2ZkMDQsIA0KKwkweDMxNzUwNDJlLCAweDI4OWVjMTdhLCAweDI4YmJkYzYxLCAweDMxNWQwZTNiLCAweDMxNTUwZGM2LCAweDI4YzU4Y2RmLCAweDI4ZTI5NGViLCAweDMxM2QwMGZmLCANCisJMHgzMTM0ZjhmMSwgMHgyOGVjM2YxZSwgMHgyOTA5MzQzZSwgMHgzMTFjZDU2NCwgMHgzMTE0YzVjMCwgMHgyOTEyZDgxZiwgMHgyOTJmYmE0MCwgMHgzMGZjOGI3ZCwgDQorCTB4MzBmNDc0NDksIDB4MjkzOTU3YzksIDB4Mjk1NjI2ZGEsIDB4MzBkYzIzNWUsIDB4MzBkNDA0YTAsIDB4Mjk1ZmJlMDYsIDB4Mjk3Yzc5ZjUsIDB4MzBiYjlkMWMsIA0KKwkweDMwYjM3NmQ4LCAweDI5ODYwYWJkLCAweDI5YTJiMzc4LCAweDMwOWFmOGNhLCAweDMwOTJjYjA1LCAweDI5YWMzZGQ3LCAweDI5YzhkMzRkLCAweDMwN2EzNjdjLCANCisJMHgzMDcyMDEzYywgMHgyOWQyNTczYywgMHgyOWVlZDk1YiwgMHgzMDU5NTY0OCwgMHgzMDUxMTk5MSwgMHgyOWY4NTZkNSwgMHgyYTE0YzU4YiwgMHgzMDM4NTg0MCwgDQorCTB4MzAzMDE0MTgsIDB4MmExZTNjOGEsIDB4MmEzYTk3YzcsIDB4MzAxNzNjN2EsIDB4MzAwZWYwZTUsIDB4MmE0NDA4NDQsIDB4MmE2MDRmZjUsIDB4MmZmNjAzMGEsIA0KKwkweDJmZWRiMDBkLCAweDJhNjliOWVjLCAweDJhODVlZTAwLCAweDJmZDRhYzA0LCAweDJmY2M1MWE1LCAweDJhOGY1MTZiLCAweDJhYWI3MWQwLCAweDJmYjMzNzdjLCANCisJMHgyZmFhZDVjMSwgMHgyYWI0Y2VhOSwgMHgyYWQwZGI0ZSwgMHgyZjkxYTU4OSwgMHgyZjg5M2M3NSwgMHgyYWRhMzE4ZSwgMHgyYWY2MmE2MywgMHgyZjZmZjYzZCwgDQorCTB4MmY2Nzg1ZDcsIDB4MmFmZjdhMDUsIDB4MmIxYjVlZjgsIDB4MmY0ZTI5YWYsIDB4MmY0NWIxZmIsIDB4MmIyNGE3ZjYsIDB4MmI0MDc4ZjUsIDB4MmYyYzNmZjIsIA0KKwkweDJmMjNjMGY2LCAweDJiNDliYjRhLCAweDJiNjU3ODQ0LCAweDJmMGEzOTFkLCAweDJmMDFiMmRlLCAweDJiNmViM2VhLCAweDJiOGE1Y2NlLCAweDJlZTgxNTQzLCANCisJMHgyZWRmODdjNiwgMHgyYjkzOTFjMCwgMHgyYmFmMjY3ZCwgMHgyZWM1ZDQ3OSwgMHgyZWJkM2ZjNCwgMHgyYmI4NTRiNCwgMHgyYmQzZDUzYSwgMHgyZWEzNzZkNiwgDQorCTB4MmU5YWRhZWUsIDB4MmJkY2ZjYjAsIDB4MmJmODY4ZWQsIDB4MmU4MGZjNmUsIDB4MmU3ODU5NTgsIDB4MmMwMTg5OWUsIDB4MmMxY2UxODEsIDB4MmU1ZTY1NTYsIA0KKwkweDJlNTViYjE3LCAweDJjMjVmYjY2LCAweDJjNDEzZWRmLCAweDJlM2JiMWE0LCAweDJlMzMwMDQyLCAweDJjNGE1MWYzLCAweDJjNjU4MGYxLCAweDJlMThlMTZkLCANCisJMHgyZTEwMjhlZCwgMHgyYzZlOGQyZSwgMHgyYzg5YTc5ZiwgMHgyZGY1ZjRjNywgMHgyZGVkMzUyZiwgMHgyYzkyYWQwMSwgMHgyY2FkYjJkNSwgMHgyZGQyZWJjNywgDQorCTB4MmRjYTI1MWMsIDB4MmNiNmIxNTUsIDB4MmNkMWEyN2IsIDB4MmRhZmM2ODMsIDB4MmRhNmY4Y2EsIDB4MmNkYTlhMTQsIDB4MmNmNTc2N2MsIDB4MmQ4Yzg1MTAsIA0KKwkweDJkODNiMDRmLCAweDJjZmU2NzI4LCAweDJkMTkyZWMxLCAweDJkNjkyNzg0LCAweDJkNjA0YmMwLCAweDJkMjIxODdhLCAweDJkM2NjYjM0LCAweDJkNDVhZGY2DQorfTsNCisNCisNCitjb25zdCBpbnQgdHdpZFRhYjUxMlsoOCo2ICsgMzIqNiArIDEyOCo2KS8yXSA9IHsNCisJMHg0MDAwMDAwMCwgMHg0MDAwMDAwMCwgMHg0MDAwMDAwMCwgMHgzYjIwMTg3ZCwgDQorCTB4M2VjNTBjN2MsIDB4MzUzNjIzOGUsIDB4MmQ0MTJkNDEsIDB4M2IyMDE4N2QsIA0KKwkweDE4N2QzYjIwLCAweDE4N2QzYjIwLCAweDM1MzYyMzhlLCAweGYzODQzZWM1LCANCisJMHgwMDAwNDAwMCwgMHgyZDQxMmQ0MSwgMHhkMmJmMmQ0MSwgMHhlNzgzM2IyMCwgDQorCTB4MjM4ZTM1MzYsIDB4YzEzYjBjN2MsIDB4ZDJiZjJkNDEsIDB4MTg3ZDNiMjAsIA0KKwkweGM0ZTBlNzgzLCAweGM0ZTAxODdkLCAweDBjN2MzZWM1LCAweGRjNzJjYWNhLCANCisNCisJMHg0MDAwMDAwMCwgMHg0MDAwMDAwMCwgMHg0MDAwMDAwMCwgMHgzZmIxMDY0NSwgDQorCTB4M2ZlYzAzMjMsIDB4M2Y0ZTA5NjQsIDB4M2VjNTBjN2MsIDB4M2ZiMTA2NDUsIA0KKwkweDNkM2UxMjk0LCAweDNkM2UxMjk0LCAweDNmNGUwOTY0LCAweDM5ZGExYjVkLCANCisJMHgzYjIwMTg3ZCwgMHgzZWM1MGM3YywgMHgzNTM2MjM4ZSwgMHgzODcxMWUyYiwgDQorCTB4M2UxNDBmOGMsIDB4MmY2YjJhZmEsIDB4MzUzNjIzOGUsIDB4M2QzZTEyOTQsIA0KKwkweDI4OTkzMTc5LCAweDMxNzkyODk5LCAweDNjNDIxNThmLCAweDIwZTczNmU1LCANCisJMHgyZDQxMmQ0MSwgMHgzYjIwMTg3ZCwgMHgxODdkM2IyMCwgMHgyODk5MzE3OSwgDQorCTB4MzlkYTFiNWQsIDB4MGY4YzNlMTQsIDB4MjM4ZTM1MzYsIDB4Mzg3MTFlMmIsIA0KKwkweDA2NDUzZmIxLCAweDFlMmIzODcxLCAweDM2ZTUyMGU3LCAweGZjZGQzZmVjLCANCisJMHgxODdkM2IyMCwgMHgzNTM2MjM4ZSwgMHhmMzg0M2VjNSwgMHgxMjk0M2QzZSwgDQorCTB4MzM2NzI2MWYsIDB4ZWE3MTNjNDIsIDB4MGM3YzNlYzUsIDB4MzE3OTI4OTksIA0KKwkweGUxZDUzODcxLCAweDA2NDUzZmIxLCAweDJmNmIyYWZhLCAweGQ5ZTEzMzY3LCANCisJMHgwMDAwNDAwMCwgMHgyZDQxMmQ0MSwgMHhkMmJmMmQ0MSwgMHhmOWJiM2ZiMSwgDQorCTB4MmFmYTJmNmIsIDB4Y2M5OTI2MWYsIDB4ZjM4NDNlYzUsIDB4Mjg5OTMxNzksIA0KKwkweGM3OGYxZTJiLCAweGVkNmMzZDNlLCAweDI2MWYzMzY3LCAweGMzYmUxNThmLCANCisJMHhlNzgzM2IyMCwgMHgyMzhlMzUzNiwgMHhjMTNiMGM3YywgMHhlMWQ1Mzg3MSwgDQorCTB4MjBlNzM2ZTUsIDB4YzAxNDAzMjMsIDB4ZGM3MjM1MzYsIDB4MWUyYjM4NzEsIA0KKwkweGMwNGZmOWJiLCAweGQ3NjczMTc5LCAweDFiNWQzOWRhLCAweGMxZWNmMDc0LCANCisJMHhkMmJmMmQ0MSwgMHgxODdkM2IyMCwgMHhjNGUwZTc4MywgMHhjZTg3Mjg5OSwgDQorCTB4MTU4ZjNjNDIsIDB4YzkxYmRmMTksIDB4Y2FjYTIzOGUsIDB4MTI5NDNkM2UsIA0KKwkweGNlODdkNzY3LCAweGM3OGYxZTJiLCAweDBmOGMzZTE0LCAweGQ1MDZkMDk1LCANCisJMHhjNGUwMTg3ZCwgMHgwYzdjM2VjNSwgMHhkYzcyY2FjYSwgMHhjMmMyMTI5NCwgDQorCTB4MDk2NDNmNGUsIDB4ZTRhM2M2MjYsIDB4YzEzYjBjN2MsIDB4MDY0NTNmYjEsIA0KKwkweGVkNmNjMmMyLCAweGMwNGYwNjQ1LCAweDAzMjMzZmVjLCAweGY2OWNjMGIyLCANCisNCisJMHg0MDAwMDAwMCwgMHg0MDAwMDAwMCwgMHg0MDAwMDAwMCwgMHgzZmZiMDE5MiwgDQorCTB4M2ZmZTAwYzksIDB4M2ZmNDAyNWIsIDB4M2ZlYzAzMjMsIDB4M2ZmYjAxOTIsIA0KKwkweDNmZDMwNGI1LCAweDNmZDMwNGI1LCAweDNmZjQwMjViLCAweDNmOWMwNzBkLCANCisJMHgzZmIxMDY0NSwgMHgzZmVjMDMyMywgMHgzZjRlMDk2NCwgMHgzZjg0MDdkNSwgDQorCTB4M2ZlMTAzZWMsIDB4M2VlYjBiYjYsIDB4M2Y0ZTA5NjQsIDB4M2ZkMzA0YjUsIA0KKwkweDNlNzEwZTA1LCAweDNmMGUwYWYxLCAweDNmYzMwNTdkLCAweDNkZTIxMDRmLCANCisJMHgzZWM1MGM3YywgMHgzZmIxMDY0NSwgMHgzZDNlMTI5NCwgMHgzZTcxMGUwNSwgDQorCTB4M2Y5YzA3MGQsIDB4M2M4NDE0ZDEsIDB4M2UxNDBmOGMsIDB4M2Y4NDA3ZDUsIA0KKwkweDNiYjYxNzA4LCAweDNkYWUxMTExLCAweDNmNmEwODljLCAweDNhZDIxOTM3LCANCisJMHgzZDNlMTI5NCwgMHgzZjRlMDk2NCwgMHgzOWRhMWI1ZCwgMHgzY2M1MTQxMywgDQorCTB4M2YyZjBhMmEsIDB4MzhjZjFkNzksIDB4M2M0MjE1OGYsIDB4M2YwZTBhZjEsIA0KKwkweDM3YWYxZjhiLCAweDNiYjYxNzA4LCAweDNlZWIwYmI2LCAweDM2N2MyMTkyLCANCisJMHgzYjIwMTg3ZCwgMHgzZWM1MGM3YywgMHgzNTM2MjM4ZSwgMHgzYTgyMTllZiwgDQorCTB4M2U5YzBkNDEsIDB4MzNkZTI1N2QsIDB4MzlkYTFiNWQsIDB4M2U3MTBlMDUsIA0KKwkweDMyNzQyNzVmLCAweDM5MmExY2M2LCAweDNlNDQwZWM5LCAweDMwZjgyOTM0LCANCisJMHgzODcxMWUyYiwgMHgzZTE0MGY4YywgMHgyZjZiMmFmYSwgMHgzN2FmMWY4YiwgDQorCTB4M2RlMjEwNGYsIDB4MmRjZTJjYjIsIDB4MzZlNTIwZTcsIDB4M2RhZTExMTEsIA0KKwkweDJjMjEyZTVhLCAweDM2MTIyMjNkLCAweDNkNzcxMWQzLCAweDJhNjUyZmYxLCANCisJMHgzNTM2MjM4ZSwgMHgzZDNlMTI5NCwgMHgyODk5MzE3OSwgMHgzNDUzMjRkYSwgDQorCTB4M2QwMjEzNTQsIDB4MjZjMDMyZWUsIDB4MzM2NzI2MWYsIDB4M2NjNTE0MTMsIA0KKwkweDI0ZGEzNDUzLCAweDMyNzQyNzVmLCAweDNjODQxNGQxLCAweDIyZTYzNWE1LCANCisJMHgzMTc5Mjg5OSwgMHgzYzQyMTU4ZiwgMHgyMGU3MzZlNSwgMHgzMDc2MjljZCwgDQorCTB4M2JmZDE2NGMsIDB4MWVkYzM4MTEsIDB4MmY2YjJhZmEsIDB4M2JiNjE3MDgsIA0KKwkweDFjYzYzOTJhLCAweDJlNWEyYzIxLCAweDNiNmMxN2MzLCAweDFhYTYzYTJmLCANCisJMHgyZDQxMmQ0MSwgMHgzYjIwMTg3ZCwgMHgxODdkM2IyMCwgMHgyYzIxMmU1YSwgDQorCTB4M2FkMjE5MzcsIDB4MTY0YzNiZmQsIDB4MmFmYTJmNmIsIDB4M2E4MjE5ZWYsIA0KKwkweDE0MTMzY2M1LCAweDI5Y2QzMDc2LCAweDNhMmYxYWE2LCAweDExZDMzZDc3LCANCisJMHgyODk5MzE3OSwgMHgzOWRhMWI1ZCwgMHgwZjhjM2UxNCwgMHgyNzVmMzI3NCwgDQorCTB4Mzk4MzFjMTIsIDB4MGQ0MTNlOWMsIDB4MjYxZjMzNjcsIDB4MzkyYTFjYzYsIA0KKwkweDBhZjEzZjBlLCAweDI0ZGEzNDUzLCAweDM4Y2YxZDc5LCAweDA4OWMzZjZhLCANCisJMHgyMzhlMzUzNiwgMHgzODcxMWUyYiwgMHgwNjQ1M2ZiMSwgMHgyMjNkMzYxMiwgDQorCTB4MzgxMTFlZGMsIDB4MDNlYzNmZTEsIDB4MjBlNzM2ZTUsIDB4MzdhZjFmOGIsIA0KKwkweDAxOTIzZmZiLCAweDFmOGIzN2FmLCAweDM3NGIyMDM5LCAweGZmMzczZmZlLCANCisJMHgxZTJiMzg3MSwgMHgzNmU1MjBlNywgMHhmY2RkM2ZlYywgMHgxY2M2MzkyYSwgDQorCTB4MzY3YzIxOTIsIDB4ZmE4MzNmYzMsIDB4MWI1ZDM5ZGEsIDB4MzYxMjIyM2QsIA0KKwkweGY4MmIzZjg0LCAweDE5ZWYzYTgyLCAweDM1YTUyMmU2LCAweGY1ZDYzZjJmLCANCisJMHgxODdkM2IyMCwgMHgzNTM2MjM4ZSwgMHhmMzg0M2VjNSwgMHgxNzA4M2JiNiwgDQorCTB4MzRjNjI0MzQsIDB4ZjEzNzNlNDQsIDB4MTU4ZjNjNDIsIDB4MzQ1MzI0ZGEsIA0KKwkweGVlZWYzZGFlLCAweDE0MTMzY2M1LCAweDMzZGUyNTdkLCAweGVjYWMzZDAyLCANCisJMHgxMjk0M2QzZSwgMHgzMzY3MjYxZiwgMHhlYTcxM2M0MiwgMHgxMTExM2RhZSwgDQorCTB4MzJlZTI2YzAsIDB4ZTgzZDNiNmMsIDB4MGY4YzNlMTQsIDB4MzI3NDI3NWYsIA0KKwkweGU2MTEzYTgyLCAweDBlMDUzZTcxLCAweDMxZjcyN2ZkLCAweGUzZWUzOTgzLCANCisJMHgwYzdjM2VjNSwgMHgzMTc5Mjg5OSwgMHhlMWQ1Mzg3MSwgMHgwYWYxM2YwZSwgDQorCTB4MzBmODI5MzQsIDB4ZGZjNzM3NGIsIDB4MDk2NDNmNGUsIDB4MzA3NjI5Y2QsIA0KKwkweGRkYzMzNjEyLCAweDA3ZDUzZjg0LCAweDJmZjEyYTY1LCAweGRiY2MzNGM2LCANCisJMHgwNjQ1M2ZiMSwgMHgyZjZiMmFmYSwgMHhkOWUxMzM2NywgMHgwNGI1M2ZkMywgDQorCTB4MmVlMzJiOGUsIDB4ZDgwMzMxZjcsIDB4MDMyMzNmZWMsIDB4MmU1YTJjMjEsIA0KKwkweGQ2MzMzMDc2LCAweDAxOTIzZmZiLCAweDJkY2UyY2IyLCAweGQ0NzIyZWUzLCANCisJMHgwMDAwNDAwMCwgMHgyZDQxMmQ0MSwgMHhkMmJmMmQ0MSwgMHhmZTZlM2ZmYiwgDQorCTB4MmNiMjJkY2UsIDB4ZDExZDJiOGUsIDB4ZmNkZDNmZWMsIDB4MmMyMTJlNWEsIA0KKwkweGNmOGEyOWNkLCAweGZiNGIzZmQzLCAweDJiOGUyZWUzLCAweGNlMDkyN2ZkLCANCisJMHhmOWJiM2ZiMSwgMHgyYWZhMmY2YiwgMHhjYzk5MjYxZiwgMHhmODJiM2Y4NCwgDQorCTB4MmE2NTJmZjEsIDB4Y2IzYTI0MzQsIDB4ZjY5YzNmNGUsIDB4MjljZDMwNzYsIA0KKwkweGM5ZWUyMjNkLCAweGY1MGYzZjBlLCAweDI5MzQzMGY4LCAweGM4YjUyMDM5LCANCisJMHhmMzg0M2VjNSwgMHgyODk5MzE3OSwgMHhjNzhmMWUyYiwgMHhmMWZiM2U3MSwgDQorCTB4MjdmZDMxZjcsIDB4YzY3ZDFjMTIsIDB4ZjA3NDNlMTQsIDB4Mjc1ZjMyNzQsIA0KKwkweGM1N2UxOWVmLCAweGVlZWYzZGFlLCAweDI2YzAzMmVlLCAweGM0OTQxN2MzLCANCisJMHhlZDZjM2QzZSwgMHgyNjFmMzM2NywgMHhjM2JlMTU4ZiwgMHhlYmVkM2NjNSwgDQorCTB4MjU3ZDMzZGUsIDB4YzJmZTEzNTQsIDB4ZWE3MTNjNDIsIDB4MjRkYTM0NTMsIA0KKwkweGMyNTIxMTExLCAweGU4ZjgzYmI2LCAweDI0MzQzNGM2LCAweGMxYmMwZWM5LCANCisJMHhlNzgzM2IyMCwgMHgyMzhlMzUzNiwgMHhjMTNiMGM3YywgMHhlNjExM2E4MiwgDQorCTB4MjJlNjM1YTUsIDB4YzBkMTBhMmEsIDB4ZTRhMzM5ZGEsIDB4MjIzZDM2MTIsIA0KKwkweGMwN2MwN2Q1LCAweGUzM2EzOTJhLCAweDIxOTIzNjdjLCAweGMwM2QwNTdkLCANCisJMHhlMWQ1Mzg3MSwgMHgyMGU3MzZlNSwgMHhjMDE0MDMyMywgMHhlMDc1MzdhZiwgDQorCTB4MjAzOTM3NGIsIDB4YzAwMjAwYzksIDB4ZGYxOTM2ZTUsIDB4MWY4YjM3YWYsIA0KKwkweGMwMDVmZTZlLCAweGRkYzMzNjEyLCAweDFlZGMzODExLCAweGMwMWZmYzE0LCANCisJMHhkYzcyMzUzNiwgMHgxZTJiMzg3MSwgMHhjMDRmZjliYiwgMHhkYjI2MzQ1MywgDQorCTB4MWQ3OTM4Y2YsIDB4YzA5NmY3NjQsIDB4ZDllMTMzNjcsIDB4MWNjNjM5MmEsIA0KKwkweGMwZjJmNTBmLCAweGQ4YTEzMjc0LCAweDFjMTIzOTgzLCAweGMxNjRmMmJmLCANCisJMHhkNzY3MzE3OSwgMHgxYjVkMzlkYSwgMHhjMWVjZjA3NCwgMHhkNjMzMzA3NiwgDQorCTB4MWFhNjNhMmYsIDB4YzI4OWVlMmQsIDB4ZDUwNjJmNmIsIDB4MTllZjNhODIsIA0KKwkweGMzM2JlYmVkLCAweGQzZGYyZTVhLCAweDE5MzczYWQyLCAweGM0MDNlOWI0LCANCisJMHhkMmJmMmQ0MSwgMHgxODdkM2IyMCwgMHhjNGUwZTc4MywgMHhkMWE2MmMyMSwgDQorCTB4MTdjMzNiNmMsIDB4YzVkMWU1NWEsIDB4ZDA5NTJhZmEsIDB4MTcwODNiYjYsIA0KKwkweGM2ZDZlMzNhLCAweGNmOGEyOWNkLCAweDE2NGMzYmZkLCAweGM3ZWZlMTI0LCANCisJMHhjZTg3Mjg5OSwgMHgxNThmM2M0MiwgMHhjOTFiZGYxOSwgMHhjZDhjMjc1ZiwgDQorCTB4MTRkMTNjODQsIDB4Y2E1YmRkMWEsIDB4Y2M5OTI2MWYsIDB4MTQxMzNjYzUsIA0KKwkweGNiYWRkYjI2LCAweGNiYWQyNGRhLCAweDEzNTQzZDAyLCAweGNkMTJkOTQwLCANCisJMHhjYWNhMjM4ZSwgMHgxMjk0M2QzZSwgMHhjZTg3ZDc2NywgMHhjOWVlMjIzZCwgDQorCTB4MTFkMzNkNzcsIDB4ZDAwZmQ1OWIsIDB4YzkxYjIwZTcsIDB4MTExMTNkYWUsIA0KKwkweGQxYTZkM2RmLCAweGM4NTExZjhiLCAweDEwNGYzZGUyLCAweGQzNGVkMjMyLCANCisJMHhjNzhmMWUyYiwgMHgwZjhjM2UxNCwgMHhkNTA2ZDA5NSwgMHhjNmQ2MWNjNiwgDQorCTB4MGVjOTNlNDQsIDB4ZDZjY2NmMDgsIDB4YzYyNjFiNWQsIDB4MGUwNTNlNzEsIA0KKwkweGQ4YTFjZDhjLCAweGM1N2UxOWVmLCAweDBkNDEzZTljLCAweGRhODNjYzIyLCANCisJMHhjNGUwMTg3ZCwgMHgwYzdjM2VjNSwgMHhkYzcyY2FjYSwgMHhjNDRhMTcwOCwgDQorCTB4MGJiNjNlZWIsIDB4ZGU2ZWM5ODQsIDB4YzNiZTE1OGYsIDB4MGFmMTNmMGUsIA0KKwkweGUwNzVjODUxLCAweGMzM2IxNDEzLCAweDBhMmEzZjJmLCAweGUyODdjNzMxLCANCisJMHhjMmMyMTI5NCwgMHgwOTY0M2Y0ZSwgMHhlNGEzYzYyNiwgMHhjMjUyMTExMSwgDQorCTB4MDg5YzNmNmEsIDB4ZTZjOWM1MmUsIDB4YzFlYzBmOGMsIDB4MDdkNTNmODQsIA0KKwkweGU4ZjhjNDRhLCAweGMxOGYwZTA1LCAweDA3MGQzZjljLCAweGViMmZjMzdjLCANCisJMHhjMTNiMGM3YywgMHgwNjQ1M2ZiMSwgMHhlZDZjYzJjMiwgMHhjMGYyMGFmMSwgDQorCTB4MDU3ZDNmYzMsIDB4ZWZiMWMyMWUsIDB4YzBiMjA5NjQsIDB4MDRiNTNmZDMsIA0KKwkweGYxZmJjMThmLCAweGMwN2MwN2Q1LCAweDAzZWMzZmUxLCAweGY0NGFjMTE1LCANCisJMHhjMDRmMDY0NSwgMHgwMzIzM2ZlYywgMHhmNjljYzBiMiwgMHhjMDJkMDRiNSwgDQorCTB4MDI1YjNmZjQsIDB4ZjhmM2MwNjQsIDB4YzAxNDAzMjMsIDB4MDE5MjNmZmIsIA0KKwkweGZiNGJjMDJkLCAweGMwMDUwMTkyLCAweDAwYzkzZmZlLCAweGZkYTVjMDBjCQ0KK307DQorDQorY29uc3QgaW50IHR3aWRUYWI2NFsoNCo2ICsgMTYqNikvMl0gPSB7DQorCTB4NDAwMDAwMDAsIDB4NDAwMDAwMDAsIDB4NDAwMDAwMDAsIDB4MmQ0MTJkNDEsIA0KKwkweDNiMjAxODdkLCAweDE4N2QzYjIwLCAweDAwMDA0MDAwLCAweDJkNDEyZDQxLCANCisJMHhkMmJmMmQ0MSwgMHhkMmJmMmQ0MSwgMHgxODdkM2IyMCwgMHhjNGUwZTc4MywgDQorDQorCTB4NDAwMDAwMDAsIDB4NDAwMDAwMDAsIDB4NDAwMDAwMDAsIDB4M2VjNTBjN2MsIA0KKwkweDNmYjEwNjQ1LCAweDNkM2UxMjk0LCAweDNiMjAxODdkLCAweDNlYzUwYzdjLCANCisJMHgzNTM2MjM4ZSwgMHgzNTM2MjM4ZSwgMHgzZDNlMTI5NCwgMHgyODk5MzE3OSwgDQorCTB4MmQ0MTJkNDEsIDB4M2IyMDE4N2QsIDB4MTg3ZDNiMjAsIDB4MjM4ZTM1MzYsIA0KKwkweDM4NzExZTJiLCAweDA2NDUzZmIxLCAweDE4N2QzYjIwLCAweDM1MzYyMzhlLCANCisJMHhmMzg0M2VjNSwgMHgwYzdjM2VjNSwgMHgzMTc5Mjg5OSwgMHhlMWQ1Mzg3MSwgDQorCTB4MDAwMDQwMDAsIDB4MmQ0MTJkNDEsIDB4ZDJiZjJkNDEsIDB4ZjM4NDNlYzUsIA0KKwkweDI4OTkzMTc5LCAweGM3OGYxZTJiLCAweGU3ODMzYjIwLCAweDIzOGUzNTM2LCANCisJMHhjMTNiMGM3YywgMHhkYzcyMzUzNiwgMHgxZTJiMzg3MSwgMHhjMDRmZjliYiwgDQorCTB4ZDJiZjJkNDEsIDB4MTg3ZDNiMjAsIDB4YzRlMGU3ODMsIDB4Y2FjYTIzOGUsIA0KKwkweDEyOTQzZDNlLCAweGNlODdkNzY3LCAweGM0ZTAxODdkLCAweDBjN2MzZWM1LCANCisJMHhkYzcyY2FjYSwgMHhjMTNiMGM3YywgMHgwNjQ1M2ZiMSwgMHhlZDZjYzJjMiANCit9Ow0KKw0KKyNlbGlmIGRlZmluZWQgQVJNVjdOZW9uDQorLyogDQorICogIFEyOSBmb3IgMTI4IGFuZCAxMDI0IA0KKyAqDQorICogZm9yIChpID0gMDsgaSA8IG51bS80OyBpKyspIHsNCisgKiAgIGFuZ2xlID0gKGkgKyAwLjEyNSkgKiBNX1BJIC8gbnVtOw0KKyAqICAgeCA9IGNvcyhhbmdsZSkgKiAoMSA8PCAyOSk7DQorICogICB4ID0gc2luKGFuZ2xlKSAqICgxIDw8IDI5KTsNCisgKiANCisgKiAgIGFuZ2xlID0gKG51bS8yIC0gMSAtIGkgKyAwLjEyNSkgKiBNX1BJIC8gbnVtOw0KKyAqICAgeCA9IGNvcyhhbmdsZSkgKiAoMSA8PCAyOSk7DQorICogICB4ID0gc2luKGFuZ2xlKSAqICgxIDw8IDI5KTsNCisgKiB9DQorICovDQorY29uc3QgaW50IGNvc3NpbnRhYlsxMjggKyAxMDI0XSA9IHsNCisJLyogMTI4ICovDQorCTB4MWZmZmY2MjEsIDB4MDAxOTIxZjksIDB4MDBhZmVhNjksIDB4MWZmZTFjNjgsIDB4MWZmY2UwOWQsIDB4MDBlMjJhN2EsIDB4MDE3OGRiYWEsIDB4MWZmNzUzYmIsIAorCTB4MWZmNGRjNTUsIDB4MDFhYjEwMWMsIDB4MDI0MTkyY2YsIDB4MWZlYjlkMjUsIDB4MWZlN2VhODUsIDB4MDI3M2IzZTIsIDB4MDMwOWYwZTIsIDB4MWZkYWZhNzUsIAorCTB4MWZkNjBkMmUsIDB4MDMzYmY2ZGQsIDB4MDNkMWQ3MDAsIDB4MWZjNTZlM2IsIDB4MWZiZjQ3MGYsIDB4MDQwM2JhMmIsIDB4MDQ5OTI2NTMsIDB4MWZhYWZiY2IsIAorCTB4MWZhMzliYWMsIDB4MDRjYWRlZmUsIDB4MDU1ZmMwMjIsIDB4MWY4YmE3MzgsIDB4MWY4MzBmNGEsIDB4MDU5MTQ2YTEsIDB4MDYyNTg1Y2EsIDB4MWY2Nzc1NTcsIAorCTB4MWY1ZGE2ZWQsIDB4MDY1NmQyN2EsIDB4MDZlYTU4Y2QsIDB4MWYzZTZiYmMsIDB4MWYzMzY4NWEsIDB4MDcxYjY0MTUsIDB4MDdhZTFhZDIsIDB4MWYxMDkwYmQsIAorCTB4MWYwNDVhMTUsIDB4MDdkZWRkMjAsIDB4MDg3MGFkYTcsIDB4MWVkZGViNmEsIDB4MWVkMDgzNWYsIDB4MDhhMTFmNzgsIDB4MDkzMWYzNGQsIDB4MWVhNjgzOTQsIAorCTB4MWU5N2VjMzYsIDB4MDk2MjBkMjcsIDB4MDlmMWNkZjUsIDB4MWU2YTYxYzUsIDB4MWU1YTlkNTUsIDB4MGEyMTg4NmUsIDB4MGFiMDIwMDksIDB4MWUyOThmNDQsIAorCTB4MWUxOGEwMzAsIDB4MGFkZjczYzYsIDB4MGI2Y2NjMzIsIDB4MWRlNDE2MGYsIDB4MWRkMWZlZjQsIDB4MGI5YmIxZTUsIDB4MGMyN2I1NTUsIDB4MWQ5YTAwZGUsIAorCTB4MWQ4NmM0ODQsIDB4MGM1NjI1YzMsIDB4MGNlMGJlYTIsIDB4MWQ0YjViMWIsIDB4MWQzNmZjN2MsIDB4MGQwZWIyYTIsIDB4MGQ5N2NiOGYsIDB4MWNmODMwZTksIAorCTB4MWNlMmIzMjgsIDB4MGRjNTNjMGEsIDB4MGU0Y2JmZTIsIDB4MWNhMDhmMWEsIDB4MWM4OWY1ODcsIDB4MGU3OWE1ZDcsIDB4MGVmZjdmYjMsIDB4MWM0NDgzMzEsIAorCTB4MWMyY2QxNDksIDB4MGYyYmQ0MzcsIDB4MGZhZmVmNzMsIDB4MWJlNDFiNjEsIDB4MWJjYjU0Y2IsIDB4MGZkYmFiYWUsIDB4MTA1ZGYzZWMsIDB4MWI3ZjY2ODcsIAorCTB4MWI2NThmMTUsIDB4MTA4OTExMjAsIDB4MTEwOTcyNDksIDB4MWIxNjc0MmEsIDB4MWFmYjhmZDksIDB4MTEzM2U5ZDAsIDB4MTFiMjUwMTcsIDB4MWFhOTU0N2EsIAorCTB4MWE4ZDY3NmUsIDB4MTFkYzFiNjUsIDB4MTI1ODczNGQsIDB4MWEzODE4NGEsIDB4MWExYjI2ZDMsIDB4MTI4MThiZWYsIDB4MTJmYmMyNGIsIDB4MTljMmQxMTEsIAorCTB4MTlhNGRmYTQsIDB4MTMyNDIxZWMsIDB4MTM5YzIzZTQsIDB4MTk0OTkwZTQsIDB4MTkyYWE0MjAsIDB4MTNjM2M0NGEsIDB4MTQzOTdmNWIsIDB4MThjYzZhNzUsIAorCTB4MThhYzg3MWYsIDB4MTQ2MDVhNjksIDB4MTRkM2JjNmQsIDB4MTg0YjcxMTIsIDB4MTgyYTljMTQsIDB4MTRmOWNjMjYsIDB4MTU2YWMzNTIsIDB4MTdjNmI4OWQsIAorCTB4MTdhNGY3MDgsIDB4MTU5MDAxZDYsIDB4MTVmZTdjYmUsIDB4MTczZTU1OGUsIDB4MTcxYmFjOTYsIDB4MTYyMmU0NTAsIDB4MTY4ZWQxZWIsIDB4MTZiMjVjZWQsDQorCS8qIDEwMjQgKi8NCisJMHgxZmZmZmZkOSwgMHgwMDAzMjQzZiwgMHgwMDE1ZmRiYSwgMHgxZmZmZjg3MiwgMHgxZmZmZjM4MiwgMHgwMDFjNDYzNywgMHgwMDJmMWZhNiwgMHgxZmZmZGQ0ZCwgDQorCTB4MWZmZmQzNmYsIDB4MDAzNTY4MWQsIDB4MDA0ODQxNzUsIDB4MWZmZmFlNmMsIDB4MWZmZjlmOWUsIDB4MDA0ZTg5ZTMsIDB4MDA2MTYzMTgsIDB4MWZmZjZiY2UsIA0KKwkweDFmZmY1ODExLCAweDAwNjdhYjc3LCAweDAwN2E4NDdlLCAweDFmZmYxNTcyLCAweDFmZmVmY2M2LCAweDAwODBjY2NjLCAweDAwOTNhNTk5LCAweDFmZmVhYjViLCANCisJMHgxZmZlOGRiZiwgMHgwMDk5ZWRkMiwgMHgwMGFjYzY1OCwgMHgxZmZlMmQ4NiwgMHgxZmZlMGFmYywgMHgwMGIzMGU3OCwgMHgwMGM1ZTZhZCwgMHgxZmZkOWJmNiwgDQorCTB4MWZmZDc0N2MsIDB4MDBjYzJlYjAsIDB4MDBkZjA2ODgsIDB4MWZmY2Y2YWEsIDB4MWZmY2NhNDEsIDB4MDBlNTRlNmEsIDB4MDBmODI1ZGEsIDB4MWZmYzNkYTIsIA0KKwkweDFmZmMwYzRiLCAweDAwZmU2ZDk3LCAweDAxMTE0NDkyLCAweDFmZmI3MGUwLCAweDFmZmIzYTlhLCAweDAxMTc4YzI3LCAweDAxMmE2MmEyLCAweDFmZmE5MDYzLCANCisJMHgxZmZhNTUyZSwgMHgwMTMwYWEwYSwgMHgwMTQzN2ZmYSwgMHgxZmY5OWMyYywgMHgxZmY5NWMwOSwgMHgwMTQ5YzczMSwgMHgwMTVjOWM4YSwgMHgxZmY4OTQzYywgDQorCTB4MWZmODRmMmIsIDB4MDE2MmUzOGQsIDB4MDE3NWI4NDMsIDB4MWZmNzc4OTMsIDB4MWZmNzJlOTQsIDB4MDE3YmZmMGUsIDB4MDE4ZWQzMTYsIDB4MWZmNjQ5MzIsIA0KKwkweDFmZjVmYTQ2LCAweDAxOTUxOWE1LCAweDAxYTdlY2YyLCAweDFmZjUwNjFiLCAweDFmZjRiMjQwLCAweDAxYWUzMzQxLCAweDAxYzEwNWM5LCAweDFmZjNhZjRjLCANCisJMHgxZmYzNTY4NCwgMHgwMWM3NGJkNSwgMHgwMWRhMWQ4YywgMHgxZmYyNDRjOCwgMHgxZmYxZTcxMywgMHgwMWUwNjM0ZiwgMHgwMWYzMzQyOSwgMHgxZmYwYzY4ZiwgDQorCTB4MWZmMDYzZWQsIDB4MDFmOTc5YTEsIDB4MDIwYzQ5OTMsIDB4MWZlZjM0YTMsIDB4MWZlZWNkMTQsIDB4MDIxMjhlYmIsIDB4MDIyNTVkYjksIDB4MWZlZDhmMDMsIA0KKwkweDFmZWQyMjg3LCAweDAyMmJhMjhmLCAweDAyM2U3MDhkLCAweDFmZWJkNWIyLCAweDFmZWI2NDRhLCAweDAyNDRiNTBiLCAweDAyNTc4MWZlLCAweDFmZWEwOGIwLCANCisJMHgxZmU5OTI1YywgMHgwMjVkYzYyMSwgMHgwMjcwOTFmZCwgMHgxZmU4MjdmZSwgMHgxZmU3YWNiZSwgMHgwMjc2ZDVjMSwgMHgwMjg5YTA3YiwgMHgxZmU2MzM5ZCwgDQorCTB4MWZlNWIzNzIsIDB4MDI4ZmUzZGQsIDB4MDJhMmFkNjksIDB4MWZlNDJiOTAsIDB4MWZlM2E2NzksIDB4MDJhOGYwNjMsIDB4MDJiYmI4YjYsIDB4MWZlMjBmZDYsIA0KKwkweDFmZTE4NWQ1LCAweDAyYzFmYjQ2LCAweDAyZDRjMjUzLCAweDFmZGZlMDcxLCAweDFmZGY1MTg2LCAweDAyZGIwNDc1LCAweDAyZWRjYTMyLCAweDFmZGQ5ZDY0LCANCisJMHgxZmRkMDk4ZSwgMHgwMmY0MGJlMiwgMHgwMzA2ZDA0MiwgMHgxZmRiNDZhZSwgMHgxZmRhYWRlZSwgMHgwMzBkMTE3YywgMHgwMzFmZDQ3NCwgMHgxZmQ4ZGM1MSwgDQorCTB4MWZkODNlYTgsIDB4MDMyNjE1MzQsIDB4MDMzOGQ2YjgsIDB4MWZkNjVlNGYsIDB4MWZkNWJiYmQsIDB4MDMzZjE2ZmIsIDB4MDM1MWQ3MDAsIDB4MWZkM2NjYWEsIA0KKwkweDFmZDMyNTMwLCAweDAzNTgxNmMxLCAweDAzNmFkNTNjLCAweDFmZDEyNzYzLCAweDFmZDA3YjAwLCAweDAzNzExNDc3LCAweDAzODNkMTVjLCAweDFmY2U2ZTdjLCANCisJMHgxZmNkYmQzMSwgMHgwMzhhMTAwZSwgMHgwMzljY2I1MSwgMHgxZmNiYTFmNSwgMHgxZmNhZWJjMywgMHgwM2EzMDk3NSwgMHgwM2I1YzMwYiwgMHgxZmM4YzFkMiwgDQorCTB4MWZjODA2YjksIDB4MDNiYzAwOWYsIDB4MDNjZWI4N2MsIDB4MWZjNWNlMTQsIDB4MWZjNTBlMTQsIDB4MDNkNGY1N2EsIDB4MDNlN2FiOTMsIDB4MWZjMmM2YmQsIA0KKwkweDFmYzIwMWQ3LCAweDAzZWRlN2Y5LCAweDA0MDA5YzQyLCAweDFmYmZhYmNkLCAweDFmYmVlMjAyLCAweDA0MDZkODBiLCAweDA0MTk4YTc4LCAweDFmYmM3ZDQ5LCANCisJMHgxZmJiYWU5OSwgMHgwNDFmYzVhMSwgMHgwNDMyNzYyOCwgMHgxZmI5M2IzMSwgMHgxZmI4Njc5YywgMHgwNDM4YjBhYywgMHgwNDRiNWY0MCwgMHgxZmI1ZTU4NywgDQorCTB4MWZiNTBkMGUsIDB4MDQ1MTk5MWQsIDB4MDQ2NDQ1YjIsIDB4MWZiMjdjNGUsIDB4MWZiMTllZjEsIDB4MDQ2YTdlZTMsIDB4MDQ3ZDI5NmYsIDB4MWZhZWZmODcsIA0KKwkweDFmYWUxZDQ3LCAweDA0ODM2MWYwLCAweDA0OTYwYTY3LCAweDFmYWI2ZjM1LCAweDFmYWE4ODEzLCAweDA0OWM0MjM1LCAweDA0YWVlODhiLCAweDFmYTdjYjVhLCANCisJMHgxZmE2ZGY1NiwgMHgwNGI1MWZhMSwgMHgwNGM3YzNjYiwgMHgxZmE0MTNmOCwgMHgxZmEzMjMxMywgMHgwNGNkZmEyNiwgMHgwNGUwOWMxOCwgMHgxZmEwNDkxMiwgDQorCTB4MWY5ZjUzNGMsIDB4MDRlNmQxYjQsIDB4MDRmOTcxNjMsIDB4MWY5YzZhYTksIDB4MWY5YjcwMDMsIDB4MDRmZmE2M2MsIDB4MDUxMjQzOWQsIDB4MWY5ODc4YzEsIA0KKwkweDFmOTc3OTNiLCAweDA1MTg3N2FmLCAweDA1MmIxMmI2LCAweDFmOTQ3MzViLCAweDFmOTM2ZWY2LCAweDA1MzE0NWZkLCAweDA1NDNkZTllLCAweDFmOTA1YTdhLCANCisJMHgxZjhmNTEzNywgMHgwNTRhMTExNywgMHgwNTVjYTc0OCwgMHgxZjhjMmUyMSwgMHgxZjhiMjAwMCwgMHgwNTYyZDhlZSwgMHgwNTc1NmNhMiwgMHgxZjg3ZWU1MiwgDQorCTB4MWY4NmRiNTUsIDB4MDU3YjlkNzMsIDB4MDU4ZTJlOWYsIDB4MWY4MzliMTAsIDB4MWY4MjgzMzYsIDB4MDU5NDVlOTUsIDB4MDVhNmVkMmUsIDB4MWY3ZjM0NWUsIA0KKwkweDFmN2UxN2E4LCAweDA1YWQxYzQ3LCAweDA1YmZhODQwLCAweDFmN2FiYTNlLCAweDFmNzk5OGFkLCAweDA1YzVkNjc4LCAweDA1ZDg1ZmM3LCAweDFmNzYyY2IyLCANCisJMHgxZjc1MDY0NywgMHgwNWRlOGQxOSwgMHgwNWYxMTNiMywgMHgxZjcxOGJiZiwgMHgxZjcwNjA3YSwgMHgwNWY3NDAxYywgMHgwNjA5YzNmNSwgMHgxZjZjZDc2NiwgDQorCTB4MWY2YmE3NDgsIDB4MDYwZmVmNzEsIDB4MDYyMjcwN2QsIDB4MWY2ODBmYWIsIDB4MWY2NmRhYjUsIDB4MDYyODliMDgsIDB4MDYzYjE5M2MsIDB4MWY2MzM0OTAsIA0KKwkweDFmNjFmYWMzLCAweDA2NDE0MmQzLCAweDA2NTNiZTIzLCAweDFmNWU0NjE5LCAweDFmNWQwNzc1LCAweDA2NTllNmMyLCAweDA2NmM1ZjI0LCAweDFmNTk0NDQ4LCANCisJMHgxZjU4MDBjZSwgMHgwNjcyODZjNiwgMHgwNjg0ZmMyZSwgMHgxZjU0MmYyMSwgMHgxZjUyZTZkMiwgMHgwNjhiMjJkMCwgMHgwNjlkOTUzMiwgMHgxZjRmMDZhNiwgDQorCTB4MWY0ZGI5ODMsIDB4MDZhM2JhZDAsIDB4MDZiNjJhMjIsIDB4MWY0OWNhZGMsIDB4MWY0ODc4ZTUsIDB4MDZiYzRlYjksIDB4MDZjZWJhZWUsIDB4MWY0NDdiYzQsIA0KKwkweDFmNDMyNGZiLCAweDA2ZDRkZTc5LCAweDA2ZTc0Nzg2LCAweDFmM2YxOTYzLCAweDFmM2RiZGM4LCAweDA2ZWQ2YTAzLCAweDA2ZmZjZmRkLCAweDFmMzlhM2JjLCANCisJMHgxZjM4NDM1MCwgMHgwNzA1ZjE0NywgMHgwNzE4NTNlMywgMHgxZjM0MWFkMiwgMHgxZjMyYjU5NSwgMHgwNzFlNzQzNiwgMHgwNzMwZDM4OCwgMHgxZjJlN2VhOSwgDQorCTB4MWYyZDE0OWQsIDB4MDczNmYyYzAsIDB4MDc0OTRlYmQsIDB4MWYyOGNmNDMsIDB4MWYyNzYwNjksIDB4MDc0ZjZjZDcsIDB4MDc2MWM1NzQsIDB4MWYyMzBjYTUsIA0KKwkweDFmMjE5OGZkLCAweDA3NjdlMjZjLCAweDA3N2EzNzlkLCAweDFmMWQzNmQyLCAweDFmMWJiZTVkLCAweDA3ODA1MzcwLCAweDA3OTJhNTJhLCAweDFmMTc0ZGNlLCANCisJMHgxZjE1ZDA4ZCwgMHgwNzk4YmZkMywgMHgwN2FiMGUwYSwgMHgxZjExNTE5YywgMHgxZjBmY2Y5MSwgMHgwN2IxMjc4NiwgMHgwN2MzNzIzMCwgMHgxZjBiNDI0MCwgDQorCTB4MWYwOWJiNmIsIDB4MDdjOThhN2EsIDB4MDdkYmQxOGMsIDB4MWYwNTFmYmUsIDB4MWYwMzk0MWYsIDB4MDdlMWU4YTEsIDB4MDdmNDJjMGUsIDB4MWVmZWVhMTksIA0KKwkweDFlZmQ1OWIzLCAweDA3ZmE0MWViLCAweDA4MGM4MWE5LCAweDFlZjhhMTU1LCAweDFlZjcwYzI4LCAweDA4MTI5NjRhLCAweDA4MjRkMjRkLCAweDFlZjI0NTc3LCANCisJMHgxZWYwYWI4NCwgMHgwODJhZTVhZCwgMHgwODNkMWRlYSwgMHgxZWViZDY4MiwgMHgxZWVhMzdjYSwgMHgwODQzMzAwNywgMHgwODU1NjQ3MywgMHgxZWU1NTQ3YSwgDQorCTB4MWVlM2IwZmUsIDB4MDg1Yjc1NDgsIDB4MDg2ZGE1ZDgsIDB4MWVkZWJmNjQsIDB4MWVkZDE3MjQsIDB4MDg3M2I1NjIsIDB4MDg4NWUyMDksIDB4MWVkODE3NDIsIA0KKwkweDFlZDY2YTQxLCAweDA4OGJmMDQ0LCAweDA4OWUxOGY5LCAweDFlZDE1YzFhLCAweDFlY2ZhYTU3LCAweDA4YTQyNWUxLCAweDA4YjY0YTk4LCAweDFlY2E4ZGVmLCANCisJMHgxZWM4ZDc2YywgMHgwOGJjNTYyYSwgMHgwOGNlNzZkOCwgMHgxZWMzYWNjNiwgMHgxZWMxZjE4NCwgMHgwOGQ0ODEwZiwgMHgwOGU2OWRhOCwgMHgxZWJjYjhhMywgDQorCTB4MWViYWY4YTMsIDB4MDhlY2E2ODEsIDB4MDhmZWJlZmIsIDB4MWViNWIxOGEsIDB4MWViM2VjY2QsIDB4MDkwNGM2NzMsIDB4MDkxNmRhYzIsIDB4MWVhZTk3N2YsIA0KKwkweDFlYWNjZTA3LCAweDA5MWNlMGQ0LCAweDA5MmVmMGVkLCAweDFlYTc2YTg3LCAweDFlYTU5YzU1LCAweDA5MzRmNTk2LCAweDA5NDcwMTZlLCAweDFlYTAyYWE3LCANCisJMHgxZTllNTdiYiwgMHgwOTRkMDRhYSwgMHgwOTVmMGMzNiwgMHgxZTk4ZDdlMiwgMHgxZTk3MDAzZSwgMHgwOTY1MGUwMSwgMHgwOTc3MTEzNiwgMHgxZTkxNzIzZSwgDQorCTB4MWU4Zjk1ZTMsIDB4MDk3ZDExOGQsIDB4MDk4ZjEwNjAsIDB4MWU4OWY5YmYsIDB4MWU4ODE4YWQsIDB4MDk5NTBmM2YsIDB4MDlhNzA5YTQsIDB4MWU4MjZlNjksIA0KKwkweDFlODA4OGEyLCAweDA5YWQwNzA3LCAweDA5YmVmY2Y0LCAweDFlN2FkMDQxLCAweDFlNzhlNWM3LCAweDA5YzRmOGQ4LCAweDA5ZDZlYTQwLCAweDFlNzMxZjRjLCANCisJMHgxZTcxMzAxZiwgMHgwOWRjZTRhMSwgMHgwOWVlZDE3YiwgMHgxZTZiNWI4ZiwgMHgxZTY5NjdiMSwgMHgwOWY0Y2E1NiwgMHgwYTA2YjI5NiwgMHgxZTYzODUwZSwgDQorCTB4MWU2MThjODAsIDB4MGEwY2E5ZTYsIDB4MGExZThkODEsIDB4MWU1YjliY2UsIDB4MWU1OTllOTEsIDB4MGEyNDgzNDMsIDB4MGEzNjYyMmUsIDB4MWU1MzlmZDQsIA0KKwkweDFlNTE5ZGVhLCAweDBhM2M1NjVlLCAweDBhNGUzMDhmLCAweDFlNGI5MTI2LCAweDFlNDk4YThlLCAweDBhNTQyMzI5LCAweDBhNjVmODk0LCAweDFlNDM2ZmM3LCANCisJMHgxZTQxNjQ4NSwgMHgwYTZiZTk5NSwgMHgwYTdkYmEyZiwgMHgxZTNiM2JiZCwgMHgxZTM5MmJkMSwgMHgwYTgzYTk5MywgMHgwYTk1NzU1MSwgMHgxZTMyZjUwZSwgDQorCTB4MWUzMGUwNzksIDB4MGE5YjYzMTUsIDB4MGFhZDI5ZWMsIDB4MWUyYTliYmQsIDB4MWUyODgyODEsIDB4MGFiMzE2MGMsIDB4MGFjNGQ3ZjEsIDB4MWUyMjJmZDEsIA0KKwkweDFlMjAxMWVlLCAweDBhY2FjMjZhLCAweDBhZGM3ZjUyLCAweDFlMTliMTRmLCAweDFlMTc4ZWM3LCAweDBhZTI2ODFmLCAweDBhZjQxZmZmLCAweDFlMTEyMDNiLCANCisJMHgxZTBlZjkxMCwgMHgwYWZhMDcxZCwgMHgwYjBiYjllYiwgMHgxZTA4N2M5YiwgMHgxZTA2NTBjZSwgMHgwYjExOWY1NiwgMHgwYjIzNGQwNywgMHgxZGZmYzY3NCwgDQorCTB4MWRmZDk2MDYsIDB4MGIyOTMwYmIsIDB4MGIzYWQ5NDMsIDB4MWRmNmZkY2MsIDB4MWRmNGM4YmYsIDB4MGI0MGJiM2UsIDB4MGI1MjVlOTIsIDB4MWRlZTIyYTksIA0KKwkweDFkZWJlOGZkLCAweDBiNTgzZWNmLCAweDBiNjlkY2U2LCAweDFkZTUzNTBmLCAweDFkZTJmNmM2LCAweDBiNmZiYjYyLCAweDBiODE1NDJmLCAweDFkZGMzNTA0LCANCisJMHgxZGQ5ZjIyMCwgMHgwYjg3MzBlNiwgMHgwYjk4YzQ1ZiwgMHgxZGQzMjI4ZSwgMHgxZGQwZGIxMCwgMHgwYjllOWY0ZCwgMHgwYmIwMmQ2OCwgMHgxZGM5ZmRiMiwgDQorCTB4MWRjN2IxOWIsIDB4MGJiNjA2OGEsIDB4MGJjNzhmM2IsIDB4MWRjMGM2NzYsIDB4MWRiZTc1YzgsIDB4MGJjZDY2OGUsIDB4MGJkZWU5Y2EsIDB4MWRiNzdjZGYsIA0KKwkweDFkYjUyNzljLCAweDBiZTRiZjRhLCAweDBiZjYzZDA3LCAweDFkYWUyMGY0LCAweDFkYWJjNzFkLCAweDBiZmMxMGFmLCAweDBjMGQ4OGUyLCAweDFkYTRiMmJhLCANCisJMHgxZGEyNTQ1MCwgMHgwYzEzNWFiMCwgMHgwYzI0Y2Q0ZSwgMHgxZDliMzIzNywgMHgxZDk4Y2YzYiwgMHgwYzJhOWQzZSwgMHgwYzNjMGEzZCwgMHgxZDkxOWY3MCwgDQorCTB4MWQ4ZjM3ZTUsIDB4MGM0MWQ4NGIsIDB4MGM1MzNmYTAsIDB4MWQ4N2ZhNmQsIDB4MWQ4NThlNTMsIDB4MGM1OTBiYzksIDB4MGM2YTZkNjgsIDB4MWQ3ZTQzMzIsIA0KKwkweDFkN2JkMjhiLCAweDBjNzAzN2E4LCAweDBjODE5Mzg4LCAweDFkNzQ3OWM1LCAweDFkNzIwNDkzLCAweDBjODc1YmRiLCAweDBjOThiMWYwLCAweDFkNmE5ZTJlLCANCisJMHgxZDY4MjQ3MiwgMHgwYzllNzg1NCwgMHgwY2FmYzg5NCwgMHgxZDYwYjA3MCwgMHgxZDVlMzIyYywgMHgwY2I1OGQwNCwgMHgwY2M2ZDc2NCwgMHgxZDU2YjA5NCwgDQorCTB4MWQ1NDJkYzksIDB4MGNjYzk5ZGUsIDB4MGNkZGRlNTMsIDB4MWQ0YzllOWYsIDB4MWQ0YTE3NGYsIDB4MGNlMzllZDIsIDB4MGNmNGRkNTIsIDB4MWQ0MjdhOTcsIA0KKwkweDFkM2ZlZWMzLCAweDBjZmE5YmQyLCAweDBkMGJkNDUyLCAweDFkMzg0NDgzLCAweDFkMzViNDJkLCAweDBkMTE5MGQxLCAweDBkMjJjMzQ3LCAweDFkMmRmYzY4LCANCisJMHgxZDJiNjc5MSwgMHgwZDI4N2RjMSwgMHgwZDM5YWEyMSwgMHgxZDIzYTI0ZSwgMHgxZDIxMDhmOCwgMHgwZDNmNjI5MiwgMHgwZDUwODhkMywgMHgxZDE5MzYzYSwgDQorCTB4MWQxNjk4NjcsIDB4MGQ1NjNmMzgsIDB4MGQ2NzVmNGUsIDB4MWQwZWI4MzMsIDB4MWQwYzE1ZTQsIDB4MGQ2ZDEzYTMsIDB4MGQ3ZTJkODUsIDB4MWQwNDI4M2YsIA0KKwkweDFkMDE4MTc2LCAweDBkODNkZmM2LCAweDBkOTRmMzY5LCAweDFjZjk4NjY2LCAweDFjZjZkYjI0LCAweDBkOWFhMzkzLCAweDBkYWJiMGVjLCAweDFjZWVkMmFkLCANCisJMHgxY2VjMjJmNCwgMHgwZGIxNWVmYywgMHgwZGMyNjYwMCwgMHgxY2U0MGQxYiwgMHgxY2UxNThlZCwgMHgwZGM4MTFmMywgMHgwZGQ5MTI5OCwgMHgxY2Q5MzViNywgDQorCTB4MWNkNjdkMTUsIDB4MGRkZWJjNjksIDB4MGRlZmI2YTUsIDB4MWNjZTRjODcsIDB4MWNjYjhmNzQsIDB4MGRmNTVlNTEsIDB4MGUwNjUyMTksIDB4MWNjMzUxOTIsIA0KKwkweDFjYzA5MDBmLCAweDBlMGJmNzljLCAweDBlMWNlNGU2LCAweDFjYjg0NGRmLCAweDFjYjU3ZWVlLCAweDBlMjI4ODNlLCAweDBlMzM2ZWZmLCAweDFjYWQyNjc1LCANCisJMHgxY2FhNWMxNywgMHgwZTM5MTAyNywgMHgwZTQ5ZjA1NSwgMHgxY2ExZjY1YiwgMHgxYzlmMjc5MiwgMHgwZTRmOGY0YiwgMHgwZTYwNjhkYiwgMHgxYzk2YjQ5NywgDQorCTB4MWM5M2UxNjUsIDB4MGU2NjA1OWEsIDB4MGU3NmQ4ODMsIDB4MWM4YjYxMzEsIDB4MWM4ODg5OTcsIDB4MGU3YzczMDgsIDB4MGU4ZDNmM2UsIDB4MWM3ZmZjMmYsIA0KKwkweDFjN2QyMDJmLCAweDBlOTJkNzg3LCAweDBlYTM5ZDAwLCAweDFjNzQ4NTk5LCAweDFjNzFhNTM1LCAweDBlYTkzMzA4LCAweDBlYjlmMWJhLCAweDFjNjhmZDc1LCANCisJMHgxYzY2MThhZSwgMHgwZWJmODU3ZCwgMHgwZWQwM2Q1ZSwgMHgxYzVkNjNjYSwgMHgxYzVhN2FhNCwgMHgwZWQ1Y2VkYSwgMHgwZWU2N2ZkZiwgMHgxYzUxYjhhMSwgDQorCTB4MWM0ZWNiMWMsIDB4MGVlYzBmMTAsIDB4MGVmY2I5MmYsIDB4MWM0NWZjMDAsIDB4MWM0MzBhMWQsIDB4MGYwMjQ2MTIsIDB4MGYxMmU5NDEsIDB4MWMzYTJkZWQsIA0KKwkweDFjMzczN2IwLCAweDBmMTg3M2QyLCAweDBmMjkxMDA2LCAweDFjMmU0ZTcyLCAweDFjMmI1M2RiLCAweDBmMmU5ODQyLCAweDBmM2YyZDcxLCAweDFjMjI1ZDk0LCANCisJMHgxYzFmNWVhNiwgMHgwZjQ0YjM1NCwgMHgwZjU1NDE3NSwgMHgxYzE2NWI1YiwgMHgxYzEzNTgxOCwgMHgwZjVhYzRmYywgMHgwZjZiNGMwMywgMHgxYzBhNDdjZiwgDQorCTB4MWMwNzQwMzgsIDB4MGY3MGNkMmEsIDB4MGY4MTRkMGUsIDB4MWJmZTIyZjgsIDB4MWJmYjE3MGYsIDB4MGY4NmNiZDMsIDB4MGY5NzQ0ODksIDB4MWJmMWVjZGIsIA0KKwkweDFiZWVkY2EyLCAweDBmOWNjMGU3LCAweDBmYWQzMjY1LCAweDFiZTVhNTgyLCAweDFiZTI5MGZiLCAweDBmYjJhYzVhLCAweDBmYzMxNjk3LCAweDFiZDk0Y2Y0LCANCisJMHgxYmQ2MzQyMSwgMHgwZmM4OGUxZSwgMHgwZmQ4ZjEwZiwgMHgxYmNjZTMzNywgMHgxYmM5YzYxYSwgMHgwZmRlNjYyNiwgMHgwZmVlYzFjMCwgMHgxYmMwNjg1NSwgDQorCTB4MWJiZDQ2ZjAsIDB4MGZmNDM0NjQsIDB4MTAwNDg4OWUsIDB4MWJiM2RjNTUsIDB4MWJiMGI2YTksIDB4MTAwOWY4Y2IsIDB4MTAxYTQ1OWEsIDB4MWJhNzNmM2QsIA0KKwkweDFiYTQxNTRkLCAweDEwMWZiMzRkLCAweDEwMmZmOGE4LCAweDFiOWE5MTE3LCAweDFiOTc2MmU0LCAweDEwMzU2M2RjLCAweDEwNDVhMWI5LCAweDFiOGRkMWVhLCANCisJMHgxYjhhOWY3NywgMHgxMDRiMGE2YywgMHgxMDViNDBjMSwgMHgxYjgxMDFiZSwgMHgxYjdkY2IwYywgMHgxMDYwYTZlZiwgMHgxMDcwZDViMSwgMHgxYjc0MjA5YiwgDQorCTB4MWI3MGU1YWMsIDB4MTA3NjM5NTgsIDB4MTA4NjYwN2UsIDB4MWI2NzJlODgsIDB4MWI2M2VmNWYsIDB4MTA4YmMxOWEsIDB4MTA5YmUxMTksIDB4MWI1YTJiOGUsIA0KKwkweDFiNTZlODJjLCAweDEwYTEzZmE2LCAweDEwYjE1Nzc1LCAweDFiNGQxN2I0LCAweDFiNDlkMDFjLCAweDEwYjZiMzcxLCAweDEwYzZjMzg1LCAweDFiM2ZmMzA0LCANCisJMHgxYjNjYTczNywgMHgxMGNjMWNlYywgMHgxMGRjMjUzYywgMHgxYjMyYmQ4NCwgMHgxYjJmNmQ4NSwgMHgxMGUxN2MwYiwgMHgxMGYxN2M4ZCwgMHgxYjI1NzczZCwgDQorCTB4MWIyMjIzMGUsIDB4MTBmNmQwYzAsIDB4MTEwNmM5NmEsIDB4MWIxODIwMzgsIDB4MWIxNGM3ZGEsIDB4MTEwYzFhZmUsIDB4MTExYzBiYzYsIDB4MWIwYWI4N2MsIA0KKwkweDFiMDc1YmYxLCAweDExMjE1YWI4LCAweDExMzE0Mzk1LCAweDFhZmQ0MDEyLCAweDFhZjlkZjVkLCAweDExMzY4ZmUxLCAweDExNDY3MGM4LCAweDFhZWZiNzAyLCANCisJMHgxYWVjNTIyNSwgMHgxMTRiYmE2YiwgMHgxMTViOTM1NCwgMHgxYWUyMWQ1NCwgMHgxYWRlYjQ1MSwgMHgxMTYwZGE0YiwgMHgxMTcwYWIyYSwgMHgxYWQ0NzMxMSwgDQorCTB4MWFkMTA1ZTksIDB4MTE3NWVmNzIsIDB4MTE4NWI4M2YsIDB4MWFjNmI4NDEsIDB4MWFjMzQ2ZjgsIDB4MTE4YWY5ZDQsIDB4MTE5YWJhODQsIDB4MWFiOGVjZWMsIA0KKwkweDFhYjU3Nzg0LCAweDExOWZmOTY0LCAweDExYWZiMWVlLCAweDFhYWIxMTFjLCAweDFhYTc5Nzk2LCAweDExYjRlZTE0LCAweDExYzQ5ZTZmLCAweDFhOWQyNGQ5LCANCisJMHgxYTk5YTczNywgMHgxMWM5ZDdkOSwgMHgxMWQ5N2ZmOSwgMHgxYThmMjgyYiwgMHgxYThiYTY3MCwgMHgxMWRlYjZhNCwgMHgxMWVlNTY4MiwgMHgxYTgxMWIxYiwgDQorCTB4MWE3ZDk1NDksIDB4MTFmMzhhNmEsIDB4MTIwMzIxZmEsIDB4MWE3MmZkYjIsIDB4MWE2ZjczY2EsIDB4MTIwODUzMWMsIDB4MTIxN2UyNTYsIDB4MWE2NGNmZjgsIA0KKwkweDFhNjE0MWZkLCAweDEyMWQxMGFmLCAweDEyMmM5Nzg5LCAweDFhNTY5MWY1LCAweDFhNTJmZmViLCAweDEyMzFjMzE2LCAweDEyNDE0MTg2LCAweDFhNDg0M2I0LCANCisJMHgxYTQ0YWQ5YiwgMHgxMjQ2NmE0NCwgMHgxMjU1ZTA0MSwgMHgxYTM5ZTUzZCwgMHgxYTM2NGIxNywgMHgxMjViMDYyYiwgMHgxMjZhNzNhYywgMHgxYTJiNzY5OCwgDQorCTB4MWEyN2Q4NjgsIDB4MTI2Zjk2YzEsIDB4MTI3ZWZiYmIsIDB4MWExY2Y3Y2UsIDB4MWExOTU1OTcsIDB4MTI4NDFiZjYsIDB4MTI5Mzc4NjEsIDB4MWEwZTY4ZTksIA0KKwkweDFhMGFjMmFjLCAweDEyOTg5NWMwLCAweDEyYTdlOTkxLCAweDE5ZmZjOWYxLCAweDE5ZmMxZmIxLCAweDEyYWQwNDEyLCAweDEyYmM0ZjQwLCAweDE5ZjExYWYwLCANCisJMHgxOWVkNmNhZiwgMHgxMmMxNjZkZSwgMHgxMmQwYTk2MCwgMHgxOWUyNWJlZSwgMHgxOWRlYTlhZSwgMHgxMmQ1YmUxOCwgMHgxMmU0ZjdlNSwgMHgxOWQzOGNmNCwgDQorCTB4MTljZmQ2YjgsIDB4MTJlYTA5YjQsIDB4MTJmOTNhYzIsIDB4MTljNGFlMGMsIDB4MTljMGYzZDYsIDB4MTJmZTQ5YTYsIDB4MTMwZDcxZWIsIDB4MTliNWJmM2YsIA0KKwkweDE5YjIwMTExLCAweDEzMTI3ZGUwLCAweDEzMjE5ZDUzLCAweDE5YTZjMDk2LCAweDE5YTJmZTczLCAweDEzMjZhNjU2LCAweDEzMzViY2VmLCAweDE5OTdiMjFiLCANCisJMHgxOTkzZWMwNCwgMHgxMzNhYzJmYywgMHgxMzQ5ZDBiMCwgMHgxOTg4OTNkNiwgMHgxOTg0YzljZSwgMHgxMzRlZDNjNSwgMHgxMzVkZDg4YywgMHgxOTc5NjVkMCwgDQorCTB4MTk3NTk3ZGEsIDB4MTM2MmQ4YTYsIDB4MTM3MWQ0NzYsIDB4MTk2YTI4MTUsIDB4MTk2NjU2MzIsIDB4MTM3NmQxOTEsIDB4MTM4NWM0NjEsIDB4MTk1YWRhYWIsIA0KKwkweDE5NTcwNGRmLCAweDEzOGFiZTdiLCAweDEzOTlhODQxLCAweDE5NGI3ZDllLCAweDE5NDdhM2ViLCAweDEzOWU5ZjU2LCAweDEzYWQ4MDBhLCAweDE5M2MxMGY3LCANCisJMHgxOTM4MzM1ZSwgMHgxM2IyNzQxNywgMHgxM2MxNGJiMCwgMHgxOTJjOTRiZiwgMHgxOTI4YjM0MywgMHgxM2M2M2NiMiwgMHgxM2Q1MGIyNiwgMHgxOTFkMDhmZiwgDQorCTB4MTkxOTIzYTMsIDB4MTNkOWY5MWIsIDB4MTNlOGJlNjAsIDB4MTkwZDZkYzEsIDB4MTkwOTg0ODgsIDB4MTNlZGE5NDQsIDB4MTNmYzY1NTMsIDB4MThmZGMzMTAsIA0KKwkweDE4ZjlkNWZhLCAweDE0MDE0ZDIzLCAweDE0MGZmZmYxLCAweDE4ZWUwOGY0LCAweDE4ZWExODA1LCAweDE0MTRlNGFhLCAweDE0MjM4ZTJmLCAweDE4ZGUzZjc3LCANCisJMHgxOGRhNGFiMiwgMHgxNDI4NmZjZSwgMHgxNDM3MTAwMSwgMHgxOGNlNjZhMywgMHgxOGNhNmUwYSwgMHgxNDNiZWU4MywgMHgxNDRhODU1YiwgMHgxOGJlN2U4MiwgDQorCTB4MThiYTgyMTcsIDB4MTQ0ZjYwYmQsIDB4MTQ1ZGVlMzAsIDB4MThhZTg3MWUsIDB4MThhYTg2ZTMsIDB4MTQ2MmM2NzAsIDB4MTQ3MTRhNzYsIDB4MTg5ZTgwODAsIA0KKwkweDE4OWE3Yzc4LCAweDE0NzYxZjhmLCAweDE0ODQ5YTFmLCAweDE4OGU2YWIyLCAweDE4OGE2MmUwLCAweDE0ODk2YzBmLCAweDE0OTdkZDIwLCAweDE4N2U0NWJlLCANCisJMHgxODdhM2EyNSwgMHgxNDljYWJlNCwgMHgxNGFiMTM2ZCwgMHgxODZlMTFhZiwgMHgxODZhMDI1MCwgMHgxNGFmZGYwMywgMHgxNGJlM2NmYSwgMHgxODVkY2U4ZSwgDQorCTB4MTg1OWJiNmMsIDB4MTRjMzA1NWUsIDB4MTRkMTU5YmMsIDB4MTg0ZDdjNjUsIDB4MTg0OTY1ODMsIDB4MTRkNjFlZWIsIDB4MTRlNDY5YTYsIDB4MTgzZDFiM2UsIA0KKwkweDE4MzkwMDllLCAweDE0ZTkyYjllLCAweDE0Zjc2Y2FkLCAweDE4MmNhYjI0LCAweDE4Mjg4Y2M4LCAweDE0ZmMyYjZhLCAweDE1MGE2MmM2LCAweDE4MWMyYzIwLCANCisJMHgxODE4MGEwYywgMHgxNTBmMWU0NSwgMHgxNTFkNGJlMywgMHgxODBiOWUzZCwgMHgxODA3Nzg3MywgMHgxNTIyMDQyMiwgMHgxNTMwMjdmYiwgMHgxN2ZiMDE4NSwgDQorCTB4MTdmNmQ4MDcsIDB4MTUzNGRjZjYsIDB4MTU0MmY3MDAsIDB4MTdlYTU2MDIsIDB4MTdlNjI4ZDMsIDB4MTU0N2E4YjUsIDB4MTU1NWI4ZTgsIDB4MTdkOTliYmUsIA0KKwkweDE3ZDU2YWUwLCAweDE1NWE2NzU0LCAweDE1Njg2ZGE3LCAweDE3YzhkMmM0LCAweDE3YzQ5ZTNiLCAweDE1NmQxOGM3LCAweDE1N2IxNTMyLCAweDE3YjdmYjFmLCANCisJMHgxN2IzYzJlYywgMHgxNTdmYmQwMywgMHgxNThkYWY3YywgMHgxN2E3MTRkNywgMHgxN2EyZDhmZSwgMHgxNTkyNTNmYiwgMHgxNWEwM2M3YSwgMHgxNzk2MWZmOSwgDQorCTB4MTc5MWUwN2IsIDB4MTVhNGRkYTUsIDB4MTViMmJjMjIsIDB4MTc4NTFjOGUsIDB4MTc4MGQ5NmYsIDB4MTViNzU5ZjUsIDB4MTVjNTJlNjcsIDB4MTc3NDBhYTEsIA0KKwkweDE3NmZjM2UzLCAweDE1YzljOGUwLCAweDE1ZDc5MzNmLCAweDE3NjJlYTNkLCAweDE3NWU5ZmUyLCAweDE1ZGMyYTVhLCAweDE1ZTllYTlkLCAweDE3NTFiYjZiLCANCisJMHgxNzRkNmQ3NywgMHgxNWVlN2U1OCwgMHgxNWZjMzQ3NywgMHgxNzQwN2UzNywgMHgxNzNjMmNhYywgMHgxNjAwYzRjZiwgMHgxNjBlNzBjMSwgMHgxNzJmMzJhYiwgDQorCTB4MTcyYWRkOGMsIDB4MTYxMmZkYjMsIDB4MTYyMDlmNzAsIDB4MTcxZGQ4ZDIsIDB4MTcxOTgwMjEsIDB4MTYyNTI4ZmEsIDB4MTYzMmMwNzgsIDB4MTcwYzcwYjcsIA0KKwkweDE3MDgxNDc3LCAweDE2Mzc0Njk3LCAweDE2NDRkM2QwLCAweDE2ZmFmYTY0LCAweDE2ZjY5YTk3LCAweDE2NDk1NjgwLCAweDE2NTZkOTZhLCAweDE2ZTk3NWU0LCANCisJMHgxNmU1MTI4ZSwgMHgxNjViNThhYSwgMHgxNjY4ZDEzZSwgMHgxNmQ3ZTM0MSwgMHgxNmQzN2M2NSwgMHgxNjZkNGQwYSwgMHgxNjdhYmIzZSwgMHgxNmM2NDI4OCwgDQorCTB4MTZjMWQ4MjcsIDB4MTY3ZjMzOTQsIDB4MTY4Yzk3NjAsIDB4MTZiNDkzYzIsIDB4MTZiMDI1ZTAsIDB4MTY5MTBjM2QsIDB4MTY5ZTY1OWEsIDB4MTZhMmQ2ZmINCit9Ow0KKw0KK2NvbnN0IGludCB0d2lkVGFiNTEyWzgqNiArIDMyKjYgKyAxMjgqNl0gPSB7DQorCTB4MjAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MWQ5MDZiY2YsIDB4MGMzZWYxNTMsIDB4MTZhMDllNjYsIDB4MTZhMDllNjYsIDB4MGMzZWYxNTMsIDB4MWQ5MDZiY2YsIAorCTB4MjAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MWY2Mjk3ZDAsIDB4MDYzZTJlMGYsIDB4MWQ5MDZiY2YsIDB4MGMzZWYxNTMsIDB4MWE5YjY2MjksIDB4MTFjNzNiM2EsIAorCTB4MjAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MWE5YjY2MjksIDB4MTFjNzNiM2EsIDB4MGMzZWYxNTMsIDB4MWQ5MDZiY2YsIDB4ZjljMWQxZjEsIDB4MWY2Mjk3ZDAsIAorCTB4MDAwMDAwMDAsIDB4MjAwMDAwMDAsIDB4ZjNjMTBlYWQsIDB4MWQ5MDZiY2YsIDB4ZTk1ZjYxOWEsIDB4MTZhMDllNjYsIDB4ZTI2Zjk0MzEsIDB4MGMzZWYxNTMsIAorCTB4MTZhMDllNjYsIDB4MTZhMDllNjYsIDB4MTFjNzNiM2EsIDB4MWE5YjY2MjksIDB4MGMzZWYxNTMsIDB4MWQ5MDZiY2YsIDB4MDYzZTJlMGYsIDB4MWY2Mjk3ZDAsIAorCTB4ZTk1ZjYxOWEsIDB4MTZhMDllNjYsIDB4ZTA5ZDY4MzAsIDB4MDYzZTJlMGYsIDB4ZTI2Zjk0MzEsIDB4ZjNjMTBlYWQsIDB4ZWUzOGM0YzYsIDB4ZTU2NDk5ZDcsIAorCisJMHgyMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgxZmQ4OGRhNCwgMHgwMzIyZjRkOCwgMHgxZjYyOTdkMCwgMHgwNjNlMmUwZiwgMHgxZTlmNDE1NywgMHgwOTRhMDMxNywgCisJMHgyMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgxZmY2MjFlMywgMHgwMTkxZjY1ZiwgMHgxZmQ4OGRhNCwgMHgwMzIyZjRkOCwgMHgxZmE3NTU3ZiwgMHgwNGIyMDQxYywgCisJMHgyMDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgxZmE3NTU3ZiwgMHgwNGIyMDQxYywgMHgxZTlmNDE1NywgMHgwOTRhMDMxNywgMHgxY2VkN2FmNCwgMHgwZGFlODgwNSwgCisJMHgxZDkwNmJjZiwgMHgwYzNlZjE1MywgMHgxYzM4YjJmMiwgMHgwZjE1YWU5YywgMHgxYTliNjYyOSwgMHgxMWM3M2IzYSwgMHgxOGJjODA2YiwgMHgxNDRjZjMyNSwgCisJMHgxZjYyOTdkMCwgMHgwNjNlMmUwZiwgMHgxZjBhN2VmYywgMHgwN2M2N2U1ZiwgMHgxZTlmNDE1NywgMHgwOTRhMDMxNywgMHgxZTIxMjEwNSwgMHgwYWM3Y2QzYiwgCisJMHgxYTliNjYyOSwgMHgxMWM3M2IzYSwgMHgxN2I1ZGYyMiwgMHgxNTdkNjkzNSwgMHgxNDRjZjMyNSwgMHgxOGJjODA2YiwgMHgxMDczODc5OSwgMHgxYjcyODM0NSwgCisJMHgxNmEwOWU2NiwgMHgxNmEwOWU2NiwgMHgxNDRjZjMyNSwgMHgxOGJjODA2YiwgMHgxMWM3M2IzYSwgMHgxYTliNjYyOSwgMHgwZjE1YWU5YywgMHgxYzM4YjJmMiwgCisJMHgxZDkwNmJjZiwgMHgwYzNlZjE1MywgMHgxY2VkN2FmNCwgMHgwZGFlODgwNSwgMHgxYzM4YjJmMiwgMHgwZjE1YWU5YywgMHgxYjcyODM0NSwgMHgxMDczODc5OSwgCisJMHgwYzNlZjE1MywgMHgxZDkwNmJjZiwgMHgwN2M2N2U1ZiwgMHgxZjBhN2VmYywgMHgwMzIyZjRkOCwgMHgxZmQ4OGRhNCwgMHhmZTZlMDlhMSwgMHgxZmY2MjFlMywgCisJMHgwYzNlZjE1MywgMHgxZDkwNmJjZiwgMHgwOTRhMDMxNywgMHgxZTlmNDE1NywgMHgwNjNlMmUwZiwgMHgxZjYyOTdkMCwgMHgwMzIyZjRkOCwgMHgxZmQ4OGRhNCwgCisJMHgxYTliNjYyOSwgMHgxMWM3M2IzYSwgMHgxOWIzZTA0OCwgMHgxMzBmZjdmZCwgMHgxOGJjODA2YiwgMHgxNDRjZjMyNSwgMHgxN2I1ZGYyMiwgMHgxNTdkNjkzNSwgCisJMHhmOWMxZDFmMSwgMHgxZjYyOTdkMCwgMHhmNTM4MzJjNSwgMHgxZTIxMjEwNSwgMHhmMGVhNTE2NCwgMHgxYzM4YjJmMiwgMHhlY2YwMDgwMywgMHgxOWIzZTA0OCwgCisJMHgwMDAwMDAwMCwgMHgyMDAwMDAwMCwgMHhmY2RkMGIyOCwgMHgxZmQ4OGRhNCwgMHhmOWMxZDFmMSwgMHgxZjYyOTdkMCwgMHhmNmI1ZmNlOSwgMHgxZTlmNDE1NywgCisJMHgxNmEwOWU2NiwgMHgxNmEwOWU2NiwgMHgxNTdkNjkzNSwgMHgxN2I1ZGYyMiwgMHgxNDRjZjMyNSwgMHgxOGJjODA2YiwgMHgxMzBmZjdmZCwgMHgxOWIzZTA0OCwgCisJMHhlOTVmNjE5YSwgMHgxNmEwOWU2NiwgMHhlNjRjMWZiOCwgMHgxMzBmZjdmZCwgMHhlM2M3NGQwZSwgMHgwZjE1YWU5YywgMHhlMWRlZGVmYiwgMHgwYWM3Y2QzYiwgCisJMHhmM2MxMGVhZCwgMHgxZDkwNmJjZiwgMHhmMGVhNTE2NCwgMHgxYzM4YjJmMiwgMHhlZTM4YzRjNiwgMHgxYTliNjYyOSwgMHhlYmIzMGNkYiwgMHgxOGJjODA2YiwgCisJMHgxMWM3M2IzYSwgMHgxYTliNjYyOSwgMHgxMDczODc5OSwgMHgxYjcyODM0NSwgMHgwZjE1YWU5YywgMHgxYzM4YjJmMiwgMHgwZGFlODgwNSwgMHgxY2VkN2FmNCwgCisJMHhlMDlkNjgzMCwgMHgwNjNlMmUwZiwgMHhlMDA5ZGUxZCwgMHgwMTkxZjY1ZiwgMHhlMDI3NzI1YywgMHhmY2RkMGIyOCwgMHhlMGY1ODEwNCwgMHhmODM5ODFhMSwgCisJMHhlOTVmNjE5YSwgMHgxNmEwOWU2NiwgMHhlNzQzN2Y5NSwgMHgxNDRjZjMyNSwgMHhlNTY0OTlkNywgMHgxMWM3M2IzYSwgMHhlM2M3NGQwZSwgMHgwZjE1YWU5YywgCisJMHgwYzNlZjE1MywgMHgxZDkwNmJjZiwgMHgwYWM3Y2QzYiwgMHgxZTIxMjEwNSwgMHgwOTRhMDMxNywgMHgxZTlmNDE1NywgMHgwN2M2N2U1ZiwgMHgxZjBhN2VmYywgCisJMHhlMjZmOTQzMSwgMHhmM2MxMGVhZCwgMHhlNDhkN2NiYiwgMHhlZjhjNzg2NywgMHhlNzQzN2Y5NSwgMHhlYmIzMGNkYiwgMHhlYTgyOTZjYiwgMHhlODRhMjBkZSwgCisJMHhlMjZmOTQzMSwgMHgwYzNlZjE1MywgMHhlMTYwYmVhOSwgMHgwOTRhMDMxNywgMHhlMDlkNjgzMCwgMHgwNjNlMmUwZiwgMHhlMDI3NzI1YywgMHgwMzIyZjRkOCwgCisJMHgwNjNlMmUwZiwgMHgxZjYyOTdkMCwgMHgwNGIyMDQxYywgMHgxZmE3NTU3ZiwgMHgwMzIyZjRkOCwgMHgxZmQ4OGRhNCwgMHgwMTkxZjY1ZiwgMHgxZmY2MjFlMywgCisJMHhlZTM4YzRjNiwgMHhlNTY0OTlkNywgMHhmMjUxNzdmYiwgMHhlMzEyODUwYywgMHhmNmI1ZmNlOSwgMHhlMTYwYmVhOSwgMHhmYjRkZmJlNCwgMHhlMDU4YWE4MSwgCisKKwkweDIwMDAwMDAwLCAweDAwMDAwMDAwLCAweDFmZmQ4ODYxLCAweDAwYzkwYWIwLCAweDFmZjYyMWUzLCAweDAxOTFmNjVmLCAweDFmZTljZGFkLCAweDAyNWFhNDEyLCAKKwkweDIwMDAwMDAwLCAweDAwMDAwMDAwLCAweDFmZmY2MjE3LCAweDAwNjQ4NzQ4LCAweDFmZmQ4ODYxLCAweDAwYzkwYWIwLCAweDFmZmE3MmYwLCAweDAxMmQ4NjU3LCAKKwkweDIwMDAwMDAwLCAweDAwMDAwMDAwLCAweDFmZmE3MmYwLCAweDAxMmQ4NjU3LCAweDFmZTljZGFkLCAweDAyNWFhNDEyLCAweDFmY2UxNWZkLCAweDAzODZmMGI5LCAKKwkweDFmZDg4ZGE0LCAweDAzMjJmNGQ4LCAweDFmYzI2NDcxLCAweDAzZWFjOWNiLCAweDFmYTc1NTdmLCAweDA0YjIwNDFjLCAweDFmODc2NGZhLCAweDA1Nzg4NTExLCAKKwkweDFmZjYyMWUzLCAweDAxOTFmNjVmLCAweDFmZjA5NTY2LCAweDAxZjY1NmU4LCAweDFmZTljZGFkLCAweDAyNWFhNDEyLCAweDFmZTFjYWZkLCAweDAyYmVkYTAxLCAKKwkweDFmYTc1NTdmLCAweDA0YjIwNDFjLCAweDFmNzU5OWE0LCAweDA1ZGI3Njc4LCAweDFmMzhmM2FjLCAweDA3MDJlMDliLCAweDFlZjE3OGE0LCAweDA4MjdkYzA3LCAKKwkweDFmNjI5N2QwLCAweDA2M2UyZTBmLCAweDFmMzhmM2FjLCAweDA3MDJlMDliLCAweDFmMGE3ZWZjLCAweDA3YzY3ZTVmLCAweDFlZDc0MGU3LCAweDA4ODhlOTMxLCAKKwkweDFmZDg4ZGE0LCAweDAzMjJmNGQ4LCAweDFmY2UxNWZkLCAweDAzODZmMGI5LCAweDFmYzI2NDcxLCAweDAzZWFjOWNiLCAweDFmYjU3OTcyLCAweDA0NGU3YzM0LCAKKwkweDFlOWY0MTU3LCAweDA5NGEwMzE3LCAweDFlNDI2YTRiLCAweDBhNjhmMTIxLCAweDFkZGIxM2I3LCAweDBiODQ0Mjk4LCAweDFkNjk2MTc0LCAweDBjOWI5NTMyLCAKKwkweDFlOWY0MTU3LCAweDA5NGEwMzE3LCAweDFlNjI4OGVjLCAweDBhMDlhZTRhLCAweDFlMjEyMTA1LCAweDBhYzdjZDNiLCAweDFkZGIxM2I3LCAweDBiODQ0Mjk4LCAKKwkweDFmYTc1NTdmLCAweDA0YjIwNDFjLCAweDFmOTdmOTI1LCAweDA1MTU1ZGFjLCAweDFmODc2NGZhLCAweDA1Nzg4NTExLCAweDFmNzU5OWE0LCAweDA1ZGI3Njc4LCAKKwkweDFjZWQ3YWY0LCAweDBkYWU4ODA1LCAweDFjNjc4YjM1LCAweDBlYmNiYmFlLCAweDFiZDdjMGFjLCAweDBmYzVkMjZlLCAweDFiM2U0ZDNmLCAweDEwYzk3MDRkLCAKKwkweDFkOTA2YmNmLCAweDBjM2VmMTUzLCAweDFkNDEzNGQxLCAweDBjZjdiY2EyLCAweDFjZWQ3YWY0LCAweDBkYWU4ODA1LCAweDFjOTU0YjIxLCAweDBlNjMzNzRkLCAKKwkweDFmNjI5N2QwLCAweDA2M2UyZTBmLCAweDFmNGU2MDNiLCAweDA2YTBhODA5LCAweDFmMzhmM2FjLCAweDA3MDJlMDliLCAweDFmMjI1MmY3LCAweDA3NjRkM2Y5LCAKKwkweDFhOWI2NjI5LCAweDExYzczYjNhLCAweDE5ZWY0M2VmLCAweDEyYmVkYjI2LCAweDE5M2EyMjRhLCAweDEzYWZmYTI5LCAweDE4N2M0MDEwLCAweDE0OWE0NDljLCAKKwkweDFjMzhiMmYyLCAweDBmMTVhZTljLCAweDFiZDdjMGFjLCAweDBmYzVkMjZlLCAweDFiNzI4MzQ1LCAweDEwNzM4Nzk5LCAweDFiMDkwYTU4LCAweDExMWViMzU0LCAKKwkweDFmMGE3ZWZjLCAweDA3YzY3ZTVmLCAweDFlZjE3OGE0LCAweDA4MjdkYzA3LCAweDFlZDc0MGU3LCAweDA4ODhlOTMxLCAweDFlYmJkOGM5LCAweDA4ZTlhMjIwLCAKKwkweDE3YjVkZjIyLCAweDE1N2Q2OTM1LCAweDE2ZTc0NDU1LCAweDE2NTkxOTI2LCAweDE2MTBiNzU1LCAweDE3MmQwODM4LCAweDE1MzI4MjkzLCAweDE3ZjhlY2UzLCAKKwkweDFhOWI2NjI5LCAweDExYzczYjNhLCAweDFhMjlhN2EwLCAweDEyNmQwNTRkLCAweDE5YjNlMDQ4LCAweDEzMGZmN2ZkLCAweDE5M2EyMjRhLCAweDEzYWZmYTI5LCAKKwkweDFlOWY0MTU3LCAweDA5NGEwMzE3LCAweDFlODE3YmFiLCAweDA5YWEwODYxLCAweDFlNjI4OGVjLCAweDBhMDlhZTRhLCAweDFlNDI2YTRiLCAweDBhNjhmMTIxLCAKKwkweDE0NGNmMzI1LCAweDE4YmM4MDZiLCAweDEzNjA1OGIxLCAweDE5Nzc3ZWY1LCAweDEyNmQwNTRkLCAweDFhMjlhN2EwLCAweDExNzM0ZDY0LCAweDFhZDJiYzllLCAKKwkweDE4YmM4MDZiLCAweDE0NGNmMzI1LCAweDE4M2IwZTBjLCAweDE0ZTZjYWJjLCAweDE3YjVkZjIyLCAweDE1N2Q2OTM1LCAweDE3MmQwODM4LCAweDE2MTBiNzU1LCAKKwkweDFlMjEyMTA1LCAweDBhYzdjZDNiLCAweDFkZmVhZTYyLCAweDBiMjYzZWVmLCAweDFkZGIxM2I3LCAweDBiODQ0Mjk4LCAweDFkYjY1MjYyLCAweDBiZTFkNDk5LCAKKwkweDEwNzM4Nzk5LCAweDFiNzI4MzQ1LCAweDBmNmUwY2E5LCAweDFjMDhjNDI2LCAweDBlNjMzNzRkLCAweDFjOTU0YjIxLCAweDBkNTM2NDE2LCAweDFkMTdlNzc0LCAKKwkweDE2YTA5ZTY2LCAweDE2YTA5ZTY2LCAweDE2MTBiNzU1LCAweDE3MmQwODM4LCAweDE1N2Q2OTM1LCAweDE3YjVkZjIyLCAweDE0ZTZjYWJjLCAweDE4M2IwZTBjLCAKKwkweDFkOTA2YmNmLCAweDBjM2VmMTUzLCAweDFkNjk2MTc0LCAweDBjOWI5NTMyLCAweDFkNDEzNGQxLCAweDBjZjdiY2EyLCAweDFkMTdlNzc0LCAweDBkNTM2NDE2LCAKKwkweDBjM2VmMTUzLCAweDFkOTA2YmNmLCAweDBiMjYzZWVmLCAweDFkZmVhZTYyLCAweDBhMDlhZTRhLCAweDFlNjI4OGVjLCAweDA4ZTlhMjIwLCAweDFlYmJkOGM5LCAKKwkweDE0NGNmMzI1LCAweDE4YmM4MDZiLCAweDEzYWZmYTI5LCAweDE5M2EyMjRhLCAweDEzMGZmN2ZkLCAweDE5YjNlMDQ4LCAweDEyNmQwNTRkLCAweDFhMjlhN2EwLCAKKwkweDFjZWQ3YWY0LCAweDBkYWU4ODA1LCAweDFjYzFmMGY0LCAweDBlMDkyNGVjLCAweDFjOTU0YjIxLCAweDBlNjMzNzRkLCAweDFjNjc4YjM1LCAweDBlYmNiYmFlLCAKKwkweDA3YzY3ZTVmLCAweDFmMGE3ZWZjLCAweDA2YTBhODA5LCAweDFmNGU2MDNiLCAweDA1Nzg4NTExLCAweDFmODc2NGZhLCAweDA0NGU3YzM0LCAweDFmYjU3OTcyLCAKKwkweDExYzczYjNhLCAweDFhOWI2NjI5LCAweDExMWViMzU0LCAweDFiMDkwYTU4LCAweDEwNzM4Nzk5LCAweDFiNzI4MzQ1LCAweDBmYzVkMjZlLCAweDFiZDdjMGFjLCAKKwkweDFjMzhiMmYyLCAweDBmMTVhZTljLCAweDFjMDhjNDI2LCAweDBmNmUwY2E5LCAweDFiZDdjMGFjLCAweDBmYzVkMjZlLCAweDFiYTVhYTY3LCAweDEwMWNmYzg3LCAKKwkweDAzMjJmNGQ4LCAweDFmZDg4ZGE0LCAweDAxZjY1NmU4LCAweDFmZjA5NTY2LCAweDAwYzkwYWIwLCAweDFmZmQ4ODYxLCAweGZmOWI3OGI4LCAweDFmZmY2MjE3LCAKKwkweDBmMTVhZTljLCAweDFjMzhiMmYyLCAweDBlNjMzNzRkLCAweDFjOTU0YjIxLCAweDBkYWU4ODA1LCAweDFjZWQ3YWY0LCAweDBjZjdiY2EyLCAweDFkNDEzNGQxLCAKKwkweDFiNzI4MzQ1LCAweDEwNzM4Nzk5LCAweDFiM2U0ZDNmLCAweDEwYzk3MDRkLCAweDFiMDkwYTU4LCAweDExMWViMzU0LCAweDFhZDJiYzllLCAweDExNzM0ZDY0LCAKKwkweGZlNmUwOWExLCAweDFmZjYyMWUzLCAweGZkNDEyNWZmLCAweDFmZTFjYWZkLCAweGZjMTUzNjM1LCAweDFmYzI2NDcxLCAweGZhZWFhMjU0LCAweDFmOTdmOTI1LCAKKwkweDBjM2VmMTUzLCAweDFkOTA2YmNmLCAweDBiODQ0Mjk4LCAweDFkZGIxM2I3LCAweDBhYzdjZDNiLCAweDFlMjEyMTA1LCAweDBhMDlhZTRhLCAweDFlNjI4OGVjLCAKKwkweDFhOWI2NjI5LCAweDExYzczYjNhLCAweDFhNjMwOTFiLCAweDEyMWE3OTk5LCAweDFhMjlhN2EwLCAweDEyNmQwNTRkLCAweDE5ZWY0M2VmLCAweDEyYmVkYjI2LCAKKwkweGY5YzFkMWYxLCAweDFmNjI5N2QwLCAweGY4OWIyYzA3LCAweDFmMjI1MmY3LCAweGY3NzcxNmNmLCAweDFlZDc0MGU3LCAweGY2NTVmNzlmLCAweDFlODE3YmFiLCAKKwkweDA5NGEwMzE3LCAweDFlOWY0MTU3LCAweDA4ODhlOTMxLCAweDFlZDc0MGU3LCAweDA3YzY3ZTVmLCAweDFmMGE3ZWZjLCAweDA3MDJlMDliLCAweDFmMzhmM2FjLCAKKwkweDE5YjNlMDQ4LCAweDEzMGZmN2ZkLCAweDE5Nzc3ZWY1LCAweDEzNjA1OGIxLCAweDE5M2EyMjRhLCAweDEzYWZmYTI5LCAweDE4ZmJjY2E0LCAweDEzZmVkOTUzLCAKKwkweGY1MzgzMmM1LCAweDFlMjEyMTA1LCAweGY0MWUyYjY3LCAweDFkYjY1MjYyLCAweGYzMDg0MzVlLCAweDFkNDEzNGQxLCAweGYxZjZkYjE0LCAweDFjYzFmMGY0LCAKKwkweDA2M2UyZTBmLCAweDFmNjI5N2QwLCAweDA1Nzg4NTExLCAweDFmODc2NGZhLCAweDA0YjIwNDFjLCAweDFmYTc1NTdmLCAweDAzZWFjOWNiLCAweDFmYzI2NDcxLCAKKwkweDE4YmM4MDZiLCAweDE0NGNmMzI1LCAweDE4N2M0MDEwLCAweDE0OWE0NDljLCAweDE4M2IwZTBjLCAweDE0ZTZjYWJjLCAweDE3ZjhlY2UzLCAweDE1MzI4MjkzLCAKKwkweGYwZWE1MTY0LCAweDFjMzhiMmYyLCAweGVmZTMwMzc5LCAweDFiYTVhYTY3LCAweGVlZTE0Y2FjLCAweDFiMDkwYTU4LCAweGVkZTU4NjY3LCAweDFhNjMwOTFiLCAKKwkweDAzMjJmNGQ4LCAweDFmZDg4ZGE0LCAweDAyNWFhNDEyLCAweDFmZTljZGFkLCAweDAxOTFmNjVmLCAweDFmZjYyMWUzLCAweDAwYzkwYWIwLCAweDFmZmQ4ODYxLCAKKwkweDE3YjVkZjIyLCAweDE1N2Q2OTM1LCAweDE3NzFlNzVmLCAweDE1Yzc3YmJlLCAweDE3MmQwODM4LCAweDE2MTBiNzU1LCAweDE2ZTc0NDU1LCAweDE2NTkxOTI2LCAKKwkweGVjZjAwODAzLCAweDE5YjNlMDQ4LCAweGVjMDEyNmFkLCAweDE4ZmJjY2E0LCAweGViMTkzNTQ0LCAweDE4M2IwZTBjLCAweGVhMzg4NDQyLCAweDE3NzFlNzVmLCAKKwkweDAwMDAwMDAwLCAweDIwMDAwMDAwLCAweGZmMzZmNTUwLCAweDFmZmQ4ODYxLCAweGZlNmUwOWExLCAweDFmZjYyMWUzLCAweGZkYTU1YmVlLCAweDFmZTljZGFkLCAKKwkweDE2YTA5ZTY2LCAweDE2YTA5ZTY2LCAweDE2NTkxOTI2LCAweDE2ZTc0NDU1LCAweDE2MTBiNzU1LCAweDE3MmQwODM4LCAweDE1Yzc3YmJlLCAweDE3NzFlNzVmLCAKKwkweGU5NWY2MTlhLCAweDE2YTA5ZTY2LCAweGU4OGUxOGExLCAweDE1Yzc3YmJlLCAweGU3YzRmMWY0LCAweDE0ZTZjYWJjLCAweGU3MDQzMzVjLCAweDEzZmVkOTUzLCAKKwkweGZjZGQwYjI4LCAweDFmZDg4ZGE0LCAweGZjMTUzNjM1LCAweDFmYzI2NDcxLCAweGZiNGRmYmU0LCAweDFmYTc1NTdmLCAweGZhODc3YWVmLCAweDFmODc2NGZhLCAKKwkweDE1N2Q2OTM1LCAweDE3YjVkZjIyLCAweDE1MzI4MjkzLCAweDE3ZjhlY2UzLCAweDE0ZTZjYWJjLCAweDE4M2IwZTBjLCAweDE0OWE0NDljLCAweDE4N2M0MDEwLCAKKwkweGU2NGMxZmI4LCAweDEzMGZmN2ZkLCAweGU1OWNmNmU1LCAweDEyMWE3OTk5LCAweGU0ZjZmNWE4LCAweDExMWViMzU0LCAweGU0NWE1NTk5LCAweDEwMWNmYzg3LCAKKwkweGY5YzFkMWYxLCAweDFmNjI5N2QwLCAweGY4ZmQxZjY1LCAweDFmMzhmM2FjLCAweGY4Mzk4MWExLCAweDFmMGE3ZWZjLCAweGY3NzcxNmNmLCAweDFlZDc0MGU3LCAKKwkweDE0NGNmMzI1LCAweDE4YmM4MDZiLCAweDEzZmVkOTUzLCAweDE4ZmJjY2E0LCAweDEzYWZmYTI5LCAweDE5M2EyMjRhLCAweDEzNjA1OGIxLCAweDE5Nzc3ZWY1LCAKKwkweGUzYzc0ZDBlLCAweDBmMTVhZTljLCAweGUzM2UwZjBjLCAweDBlMDkyNGVjLCAweGUyYmVjYjJmLCAweDBjZjdiY2EyLCAweGUyNDlhZDllLCAweDBiZTFkNDk5LCAKKwkweGY2YjVmY2U5LCAweDFlOWY0MTU3LCAweGY1ZjY1MWI2LCAweDFlNjI4OGVjLCAweGY1MzgzMmM1LCAweDFlMjEyMTA1LCAweGY0N2JiZDY4LCAweDFkZGIxM2I3LCAKKwkweDEzMGZmN2ZkLCAweDE5YjNlMDQ4LCAweDEyYmVkYjI2LCAweDE5ZWY0M2VmLCAweDEyNmQwNTRkLCAweDFhMjlhN2EwLCAweDEyMWE3OTk5LCAweDFhNjMwOTFiLCAKKwkweGUxZGVkZWZiLCAweDBhYzdjZDNiLCAweGUxN2U4NDU1LCAweDA5YWEwODYxLCAweGUxMjhiZjE5LCAweDA4ODhlOTMxLCAweGUwZGRhZDA5LCAweDA3NjRkM2Y5LCAKKwkweGYzYzEwZWFkLCAweDFkOTA2YmNmLCAweGYzMDg0MzVlLCAweDFkNDEzNGQxLCAweGYyNTE3N2ZiLCAweDFjZWQ3YWY0LCAweGYxOWNjOGIzLCAweDFjOTU0YjIxLCAKKwkweDExYzczYjNhLCAweDFhOWI2NjI5LCAweDExNzM0ZDY0LCAweDFhZDJiYzllLCAweDExMWViMzU0LCAweDFiMDkwYTU4LCAweDEwYzk3MDRkLCAweDFiM2U0ZDNmLCAKKwkweGUwOWQ2ODMwLCAweDA2M2UyZTBmLCAweGUwNjgwNmRiLCAweDA1MTU1ZGFjLCAweGUwM2Q5YjhmLCAweDAzZWFjOWNiLCAweGUwMWUzNTAzLCAweDAyYmVkYTAxLCAKKwkweGYwZWE1MTY0LCAweDFjMzhiMmYyLCAweGYwM2EyZDkyLCAweDFiZDdjMGFjLCAweGVmOGM3ODY3LCAweDFiNzI4MzQ1LCAweGVlZTE0Y2FjLCAweDFiMDkwYTU4LCAKKwkweDEwNzM4Nzk5LCAweDFiNzI4MzQ1LCAweDEwMWNmYzg3LCAweDFiYTVhYTY3LCAweDBmYzVkMjZlLCAweDFiZDdjMGFjLCAweDBmNmUwY2E5LCAweDFjMDhjNDI2LCAKKwkweGUwMDlkZTFkLCAweDAxOTFmNjVmLCAweGUwMDA5ZGU5LCAweDAwNjQ4NzQ4LCAweGUwMDI3NzlmLCAweGZmMzZmNTUwLCAweGUwMGY2YTlhLCAweGZlMDlhOTE4LCAKKwkweGVlMzhjNGM2LCAweDFhOWI2NjI5LCAweGVkOTJmYWIzLCAweDFhMjlhN2EwLCAweGVjZjAwODAzLCAweDE5YjNlMDQ4LCAweGVjNTAwNWQ3LCAweDE5M2EyMjRhLCAKKwkweDBmMTVhZTljLCAweDFjMzhiMmYyLCAweDBlYmNiYmFlLCAweDFjNjc4YjM1LCAweDBlNjMzNzRkLCAweDFjOTU0YjIxLCAweDBlMDkyNGVjLCAweDFjYzFmMGY0LCAKKwkweGUwMjc3MjVjLCAweGZjZGQwYjI4LCAweGUwNGE4NjhlLCAweGZiYjE4M2NjLCAweGUwNzg5YjA2LCAweGZhODc3YWVmLCAweGUwYjE5ZmM1LCAweGY5NWY1N2Y3LCAKKwkweGViYjMwY2RiLCAweDE4YmM4MDZiLCAweGViMTkzNTQ0LCAweDE4M2IwZTBjLCAweGVhODI5NmNiLCAweDE3YjVkZjIyLCAweGU5ZWY0OGFiLCAweDE3MmQwODM4LCAKKwkweDBkYWU4ODA1LCAweDFjZWQ3YWY0LCAweDBkNTM2NDE2LCAweDFkMTdlNzc0LCAweDBjZjdiY2EyLCAweDFkNDEzNGQxLCAweDBjOWI5NTMyLCAweDFkNjk2MTc0LCAKKwkweGUwZjU4MTA0LCAweGY4Mzk4MWExLCAweGUxNDQyNzM3LCAweGY3MTY1ZGUwLCAweGUxOWQ3NzE0LCAweGY1ZjY1MWI2LCAweGUyMDE1MTllLCAweGY0ZDljMTExLCAKKwkweGU5NWY2MTlhLCAweDE2YTA5ZTY2LCAweGU4ZDJmN2M4LCAweDE2MTBiNzU1LCAweGU4NGEyMGRlLCAweDE1N2Q2OTM1LCAweGU3YzRmMWY0LCAweDE0ZTZjYWJjLCAKKwkweDBjM2VmMTUzLCAweDFkOTA2YmNmLCAweDBiZTFkNDk5LCAweDFkYjY1MjYyLCAweDBiODQ0Mjk4LCAweDFkZGIxM2I3LCAweDBiMjYzZWVmLCAweDFkZmVhZTYyLCAKKwkweGUyNmY5NDMxLCAweGYzYzEwZWFkLCAweGUyZTgxODhjLCAweGYyYWM5YmVhLCAweGUzNmFiNGRmLCAweGYxOWNjOGIzLCAweGUzZjczYmRhLCAweGYwOTFmMzU3LCAKKwkweGU3NDM3Zjk1LCAweDE0NGNmMzI1LCAweGU2YzVkZGI2LCAweDEzYWZmYTI5LCAweGU2NGMxZmI4LCAweDEzMGZmN2ZkLCAweGU1ZDY1ODYwLCAweDEyNmQwNTRkLCAKKwkweDBhYzdjZDNiLCAweDFlMjEyMTA1LCAweDBhNjhmMTIxLCAweDFlNDI2YTRiLCAweDBhMDlhZTRhLCAweDFlNjI4OGVjLCAweDA5YWEwODYxLCAweDFlODE3YmFiLCAKKwkweGU0OGQ3Y2JiLCAweGVmOGM3ODY3LCAweGU1MmQ0MzYyLCAweGVlOGNiMjljLCAweGU1ZDY1ODYwLCAweGVkOTJmYWIzLCAweGU2ODg4MTBiLCAweGVjOWZhNzRmLCAKKwkweGU1NjQ5OWQ3LCAweDExYzczYjNhLCAweGU0ZjZmNWE4LCAweDExMWViMzU0LCAweGU0OGQ3Y2JiLCAweDEwNzM4Nzk5LCAweGU0MjgzZjU0LCAweDBmYzVkMjZlLCAKKwkweDA5NGEwMzE3LCAweDFlOWY0MTU3LCAweDA4ZTlhMjIwLCAweDFlYmJkOGM5LCAweDA4ODhlOTMxLCAweDFlZDc0MGU3LCAweDA4MjdkYzA3LCAweDFlZjE3OGE0LCAKKwkweGU3NDM3Zjk1LCAweGViYjMwY2RiLCAweGU4MDcxMzFkLCAweGVhY2Q3ZDZkLCAweGU4ZDJmN2M4LCAweGU5ZWY0OGFiLCAweGU5YTZlNmRhLCAweGU5MThiYmFiLCAKKwkweGUzYzc0ZDBlLCAweDBmMTVhZTljLCAweGUzNmFiNGRmLCAweDBlNjMzNzRkLCAweGUzMTI4NTBjLCAweDBkYWU4ODA1LCAweGUyYmVjYjJmLCAweDBjZjdiY2EyLCAKKwkweDA3YzY3ZTVmLCAweDFmMGE3ZWZjLCAweDA3NjRkM2Y5LCAweDFmMjI1MmY3LCAweDA3MDJlMDliLCAweDFmMzhmM2FjLCAweDA2YTBhODA5LCAweDFmNGU2MDNiLCAKKwkweGVhODI5NmNiLCAweGU4NGEyMGRlLCAweGViNjViYjY0LCAweGU3ODNiZmYwLCAweGVjNTAwNWQ3LCAweGU2YzVkZGI2LCAweGVkNDEyNGRhLCAweGU2MTBiYzExLCAKKwkweGUyNmY5NDMxLCAweDBjM2VmMTUzLCAweGUyMjRlYzQ5LCAweDBiODQ0Mjk4LCAweGUxZGVkZWZiLCAweDBhYzdjZDNiLCAweGUxOWQ3NzE0LCAweDBhMDlhZTRhLCAKKwkweDA2M2UyZTBmLCAweDFmNjI5N2QwLCAweDA1ZGI3Njc4LCAweDFmNzU5OWE0LCAweDA1Nzg4NTExLCAweDFmODc2NGZhLCAweDA1MTU1ZGFjLCAweDFmOTdmOTI1LCAKKwkweGVlMzhjNGM2LCAweGU1NjQ5OWQ3LCAweGVmMzY4ZmIzLCAweGU0YzFiMmMxLCAweGYwM2EyZDkyLCAweGU0MjgzZjU0LCAweGYxNDM0NDUyLCAweGUzOTg3NGNiLCAKKwkweGUxNjBiZWE5LCAweDA5NGEwMzE3LCAweGUxMjhiZjE5LCAweDA4ODhlOTMxLCAweGUwZjU4MTA0LCAweDA3YzY3ZTVmLCAweGUwYzcwYzU0LCAweDA3MDJlMDliLCAKKwkweDA0YjIwNDFjLCAweDFmYTc1NTdmLCAweDA0NGU3YzM0LCAweDFmYjU3OTcyLCAweDAzZWFjOWNiLCAweDFmYzI2NDcxLCAweDAzODZmMGI5LCAweDFmY2UxNWZkLCAKKwkweGYyNTE3N2ZiLCAweGUzMTI4NTBjLCAweGYzNjQ2YWNlLCAweGUyOTY5ZThjLCAweGY0N2JiZDY4LCAweGUyMjRlYzQ5LCAweGY1OTcwZWRmLCAweGUxYmQ5NWI1LCAKKwkweGUwOWQ2ODMwLCAweDA2M2UyZTBmLCAweGUwNzg5YjA2LCAweDA1Nzg4NTExLCAweGUwNThhYTgxLCAweDA0YjIwNDFjLCAweGUwM2Q5YjhmLCAweDAzZWFjOWNiLCAKKwkweDAzMjJmNGQ4LCAweDFmZDg4ZGE0LCAweDAyYmVkYTAxLCAweDFmZTFjYWZkLCAweDAyNWFhNDEyLCAweDFmZTljZGFkLCAweDAxZjY1NmU4LCAweDFmZjA5NTY2LCAKKwkweGY2YjVmY2U5LCAweGUxNjBiZWE5LCAweGY3ZDgyM2Y5LCAweGUxMGU4NzVjLCAweGY4ZmQxZjY1LCAweGUwYzcwYzU0LCAweGZhMjQ4OTg4LCAweGUwOGE2NjVjLCAKKwkweGUwMjc3MjVjLCAweDAzMjJmNGQ4LCAweGUwMTYzMjUzLCAweDAyNWFhNDEyLCAweGUwMDlkZTFkLCAweDAxOTFmNjVmLCAweGUwMDI3NzlmLCAweDAwYzkwYWIwLCAKKwkweDAxOTFmNjVmLCAweDFmZjYyMWUzLCAweDAxMmQ4NjU3LCAweDFmZmE3MmYwLCAweDAwYzkwYWIwLCAweDFmZmQ4ODYxLCAweDAwNjQ4NzQ4LCAweDFmZmY2MjE3LCAKKwkweGZiNGRmYmU0LCAweGUwNThhYTgxLCAweGZjNzkwZjQ3LCAweGUwMzFlYTAzLCAweGZkYTU1YmVlLCAweGUwMTYzMjUzLCAweGZlZDI3OWE5LCAweGUwMDU4ZDEwDQorfTsNCisNCitjb25zdCBpbnQgdHdpZFRhYjY0WzQqNiArIDE2KjZdID0gew0KKwkweDIwMDAwMDAwLCAweDAwMDAwMDAwLCAweDE2YTA5ZTY2LCAweDE2YTA5ZTY2LCAweDAwMDAwMDAwLCAweDIwMDAwMDAwLCAweGU5NWY2MTlhLCAweDE2YTA5ZTY2LCAKKwkweDIwMDAwMDAwLCAweDAwMDAwMDAwLCAweDFkOTA2YmNmLCAweDBjM2VmMTUzLCAweDE2YTA5ZTY2LCAweDE2YTA5ZTY2LCAweDBjM2VmMTUzLCAweDFkOTA2YmNmLCAKKwkweDIwMDAwMDAwLCAweDAwMDAwMDAwLCAweDBjM2VmMTUzLCAweDFkOTA2YmNmLCAweGU5NWY2MTlhLCAweDE2YTA5ZTY2LCAweGUyNmY5NDMxLCAweGYzYzEwZWFkLCAKKworCTB4MjAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MWY2Mjk3ZDAsIDB4MDYzZTJlMGYsIDB4MWQ5MDZiY2YsIDB4MGMzZWYxNTMsIDB4MWE5YjY2MjksIDB4MTFjNzNiM2EsIAorCTB4MjAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MWZkODhkYTQsIDB4MDMyMmY0ZDgsIDB4MWY2Mjk3ZDAsIDB4MDYzZTJlMGYsIDB4MWU5ZjQxNTcsIDB4MDk0YTAzMTcsIAorCTB4MjAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4MWU5ZjQxNTcsIDB4MDk0YTAzMTcsIDB4MWE5YjY2MjksIDB4MTFjNzNiM2EsIDB4MTQ0Y2YzMjUsIDB4MThiYzgwNmIsIAorCTB4MTZhMDllNjYsIDB4MTZhMDllNjYsIDB4MTFjNzNiM2EsIDB4MWE5YjY2MjksIDB4MGMzZWYxNTMsIDB4MWQ5MDZiY2YsIDB4MDYzZTJlMGYsIDB4MWY2Mjk3ZDAsIAorCTB4MWQ5MDZiY2YsIDB4MGMzZWYxNTMsIDB4MWMzOGIyZjIsIDB4MGYxNWFlOWMsIDB4MWE5YjY2MjksIDB4MTFjNzNiM2EsIDB4MThiYzgwNmIsIDB4MTQ0Y2YzMjUsIAorCTB4MGMzZWYxNTMsIDB4MWQ5MDZiY2YsIDB4MDMyMmY0ZDgsIDB4MWZkODhkYTQsIDB4ZjljMWQxZjEsIDB4MWY2Mjk3ZDAsIDB4ZjBlYTUxNjQsIDB4MWMzOGIyZjIsIAorCTB4MDAwMDAwMDAsIDB4MjAwMDAwMDAsIDB4ZjljMWQxZjEsIDB4MWY2Mjk3ZDAsIDB4ZjNjMTBlYWQsIDB4MWQ5MDZiY2YsIDB4ZWUzOGM0YzYsIDB4MWE5YjY2MjksIAorCTB4MTZhMDllNjYsIDB4MTZhMDllNjYsIDB4MTQ0Y2YzMjUsIDB4MThiYzgwNmIsIDB4MTFjNzNiM2EsIDB4MWE5YjY2MjksIDB4MGYxNWFlOWMsIDB4MWMzOGIyZjIsIAorCTB4ZTk1ZjYxOWEsIDB4MTZhMDllNjYsIDB4ZTNjNzRkMGUsIDB4MGYxNWFlOWMsIDB4ZTA5ZDY4MzAsIDB4MDYzZTJlMGYsIDB4ZTAyNzcyNWMsIDB4ZmNkZDBiMjgsIAorCTB4ZTk1ZjYxOWEsIDB4MTZhMDllNjYsIDB4ZTU2NDk5ZDcsIDB4MTFjNzNiM2EsIDB4ZTI2Zjk0MzEsIDB4MGMzZWYxNTMsIDB4ZTA5ZDY4MzAsIDB4MDYzZTJlMGYsIAorCTB4MGMzZWYxNTMsIDB4MWQ5MDZiY2YsIDB4MDk0YTAzMTcsIDB4MWU5ZjQxNTcsIDB4MDYzZTJlMGYsIDB4MWY2Mjk3ZDAsIDB4MDMyMmY0ZDgsIDB4MWZkODhkYTQsIAorCTB4ZTI2Zjk0MzEsIDB4ZjNjMTBlYWQsIDB4ZTc0MzdmOTUsIDB4ZWJiMzBjZGIsIDB4ZWUzOGM0YzYsIDB4ZTU2NDk5ZDcsIDB4ZjZiNWZjZTksIDB4ZTE2MGJlYTkNCit9Ow0KKw0KKyNlbHNlCisKKy8qIA0KKyAqICBRMzAgZm9yIDEyOCBhbmQgMTAyNCANCisgKg0KKyAqIGZvciAoaSA9IDA7IGkgPCBudW0vNDsgaSsrKSB7DQorICogICBhbmdsZSA9IChpICsgMC4xMjUpICogTV9QSSAvIG51bTsNCisgKiAgIHggPSBjb3MoYW5nbGUpICogKDEgPDwgMzApOw0KKyAqICAgeCA9IHNpbihhbmdsZSkgKiAoMSA8PCAzMCk7DQorICogDQorICogICBhbmdsZSA9IChudW0vMiAtIDEgLSBpICsgMC4xMjUpICogTV9QSSAvIG51bTsNCisgKiAgIHggPSBjb3MoYW5nbGUpICogKDEgPDwgMzApOw0KKyAqICAgeCA9IHNpbihhbmdsZSkgKiAoMSA8PCAzMCk7DQorICogfQ0KKyAqLw0KK2NvbnN0IGludCBjb3NzaW50YWJbMTI4ICsgMTAyNF0gPSB7DQorCS8qIDEyOCAqLw0KKwkweDNmZmZlYzQzLCAweDAwMzI0M2YxLCAweDAxNWZkNGQyLCAweDNmZmMzOGQxLCAweDNmZjljMTNhLCAweDAxYzQ1NGY1LCAweDAyZjFiNzU1LCAweDNmZWVhNzc2LCANCisJMHgzZmU5YjhhOSwgMHgwMzU2MjAzOCwgMHgwNDgzMjU5ZCwgMHgzZmQ3M2E0YSwgMHgzZmNmZDUwYiwgMHgwNGU3NjdjNSwgMHgwNjEzZTFjNSwgMHgzZmI1ZjRlYSwgDQorCTB4M2ZhYzFhNWIsIDB4MDY3N2VkYmIsIDB4MDdhM2FkZmYsIDB4M2Y4YWRjNzcsIDB4M2Y3ZThlMWUsIDB4MDgwNzc0NTcsIDB4MDkzMjRjYTcsIDB4M2Y1NWY3OTYsIA0KKwkweDNmNDczNzU5LCAweDA5OTViZGZkLCAweDBhYmY4MDQzLCAweDNmMTc0ZTcwLCAweDNmMDYxZTk1LCAweDBiMjI4ZDQyLCAweDBjNGIwYjk0LCAweDNlY2VlYWFkLCANCisJMHgzZWJiNGRkYiwgMHgwY2FkYTRmNSwgMHgwZGQ0YjE5YSwgMHgzZTdjZDc3OCwgMHgzZTY2ZDBiNCwgMHgwZTM2YzgyYSwgMHgwZjVjMzVhMywgMHgzZTIxMjE3OSwgDQorCTB4M2UwOGI0MmEsIDB4MGZiZGJhNDAsIDB4MTBlMTViNGUsIDB4M2RiYmQ2ZDQsIDB4M2RhMTA2YmQsIDB4MTE0MjNlZjAsIDB4MTI2M2U2OTksIDB4M2Q0ZDA3MjgsIA0KKwkweDNkMmZkODZjLCAweDEyYzQxYTRmLCAweDEzZTM5YmU5LCAweDNjZDRjMzhiLCAweDNjYjUzYWFhLCAweDE0NDMxMGRkLCAweDE1NjA0MDEzLCAweDNjNTMxZTg4LCANCisJMHgzYzMxNDA2MCwgMHgxNWJlZTc4YywgMHgxNmQ5OTg2NCwgMHgzYmM4MmMxZiwgMHgzYmEzZmRlNywgMHgxNzM3NjNjOSwgMHgxODRmNmFhYiwgMHgzYjM0MDFiYiwgDQorCTB4M2IwZDg5MDksIDB4MThhYzRiODcsIDB4MTljMTdkNDQsIDB4M2E5NmI2MzYsIDB4M2E2ZGY4ZjgsIDB4MWExZDY1NDQsIDB4MWIyZjk3MWUsIDB4MzlmMDYxZDIsIA0KKwkweDM5YzU2NjRmLCAweDFiOGE3ODE1LCAweDFjOTk3ZmM0LCAweDM5NDExZTMzLCAweDM5MTNlYjBlLCAweDFjZjM0YmFmLCAweDFkZmVmZjY3LCAweDM4ODkwNjYzLCANCisJMHgzODU5YTI5MiwgMHgxZTU3YTg2ZCwgMHgxZjVmZGVlNiwgMHgzN2M4MzZjMiwgMHgzNzk2YTk5NiwgMHgxZmI3NTc1YywgMHgyMGJiZTdkOCwgMHgzNmZlY2QwZSwgDQorCTB4MzZjYjFlMmEsIDB4MjExMjIyNDAsIDB4MjIxMmU0OTIsIDB4MzYyY2U4NTUsIDB4MzVmNzFmYjEsIDB4MjI2N2QzYTAsIDB4MjM2NGEwMmUsIDB4MzU1MmE4ZjQsIA0KKwkweDM1MWFjZWRkLCAweDIzYjgzNmNhLCAweDI0YjBlNjk5LCAweDM0NzAzMDk1LCAweDM0MzY0ZGE2LCAweDI1MDMxN2RmLCAweDI1Zjc4NDk3LCAweDMzODVhMjIyLCANCisJMHgzMzQ5YmY0OCwgMHgyNjQ4NDNkOSwgMHgyNzM4NDdjOCwgMHgzMjkzMjFjNywgMHgzMjU1NDg0MCwgMHgyNzg3ODg5MywgMHgyODcyZmViNiwgMHgzMTk4ZDRlYSwgDQorCTB4MzE1OTBlM2UsIDB4MjhjMGI0ZDIsIDB4MjlhNzc4ZGIsIDB4MzA5NmUyMjMsIDB4MzA1NTM4MjgsIDB4MjlmMzk4NGMsIDB4MmFkNTg2YTMsIDB4MmY4ZDcxM2EsIA0KKwkweDJmNDllZTBmLCAweDJiMjAwM2FjLCAweDJiZmNmOTdjLCAweDJlN2NhYjFjLCAweDJlMzc1OTJjLCAweDJjNDVjOGEwLCAweDJkMWRhM2Q1LCAweDJkNjRiOWRhLCANCisJLyogMTAyNCAqLw0KKwkweDNmZmZmZmIxLCAweDAwMDY0ODdmLCAweDAwMmJmYjc0LCAweDNmZmZmMGUzLCAweDNmZmZlNzA1LCAweDAwMzg4YzZlLCAweDAwNWUzZjRjLCAweDNmZmZiYTliLCANCisJMHgzZmZmYTZkZSwgMHgwMDZhZDAzYiwgMHgwMDkwODJlYSwgMHgzZmZmNWNkOCwgMHgzZmZmM2YzYywgMHgwMDlkMTNjNSwgMHgwMGMyYzYyZiwgMHgzZmZlZDc5YiwgDQorCTB4M2ZmZWIwMjEsIDB4MDBjZjU2ZWYsIDB4MDBmNTA4ZmMsIDB4M2ZmZTJhZTUsIDB4M2ZmZGY5OGMsIDB4MDEwMTk5OTgsIDB4MDEyNzRiMzEsIDB4M2ZmZDU2YjUsIA0KKwkweDNmZmQxYjdlLCAweDAxMzNkYmEzLCAweDAxNTk4Y2IxLCAweDNmZmM1YjBjLCAweDNmZmMxNWY3LCAweDAxNjYxY2YwLCAweDAxOGJjZDViLCAweDNmZmIzN2VjLCANCisJMHgzZmZhZThmOSwgMHgwMTk4NWQ2MCwgMHgwMWJlMGQxMSwgMHgzZmY5ZWQ1MywgMHgzZmY5OTQ4MywgMHgwMWNhOWNkNCwgMHgwMWYwNGJiNCwgMHgzZmY4N2I0NCwgDQorCTB4M2ZmODE4OTYsIDB4MDFmY2RiMmUsIDB4MDIyMjg5MjQsIDB4M2ZmNmUxYmYsIDB4M2ZmNjc1MzQsIDB4MDIyZjE4NGQsIDB4MDI1NGM1NDQsIDB4M2ZmNTIwYzUsIA0KKwkweDNmZjRhYTVkLCAweDAyNjE1NDE0LCAweDAyODZmZmYzLCAweDNmZjMzODU4LCAweDNmZjJiODEzLCAweDAyOTM4ZTYyLCAweDAyYjkzOTE0LCAweDNmZjEyODc4LCANCisJMHgzZmYwOWU1NiwgMHgwMmM1YzcxYSwgMHgwMmViNzA4NiwgMHgzZmVlZjEyNiwgMHgzZmVlNWQyOCwgMHgwMmY3ZmUxYywgMHgwMzFkYTYyYiwgMHgzZmVjOTI2NSwgDQorCTB4M2ZlYmY0OGIsIDB4MDMyYTMzNDksIDB4MDM0ZmQ5ZTUsIDB4M2ZlYTBjMzUsIDB4M2ZlOTY0ODAsIDB4MDM1YzY2ODIsIDB4MDM4MjBiOTMsIDB4M2ZlNzVlOTgsIA0KKwkweDNmZTZhZDA4LCAweDAzOGU5N2E5LCAweDAzYjQzYjE3LCAweDNmZTQ4OTkwLCAweDNmZTNjZTI2LCAweDAzYzBjNjllLCAweDAzZTY2ODUyLCAweDNmZTE4ZDFmLCANCisJMHgzZmUwYzdkYSwgMHgwM2YyZjM0MiwgMHgwNDE4OTMyNiwgMHgzZmRlNjk0NSwgMHgzZmRkOWEyNywgMHgwNDI1MWQ3NywgMHgwNDRhYmI3MywgMHgzZmRiMWUwNiwgDQorCTB4M2ZkYTQ1MGYsIDB4MDQ1NzQ1MWQsIDB4MDQ3Y2UxMWEsIDB4M2ZkN2FiNjQsIDB4M2ZkNmM4OTQsIDB4MDQ4OTZhMTYsIDB4MDRhZjAzZmMsIDB4M2ZkNDExNWYsIA0KKwkweDNmZDMyNGI3LCAweDA0YmI4YzQyLCAweDA0ZTEyM2ZhLCAweDNmZDA0ZmZjLCAweDNmY2Y1OTdjLCAweDA0ZWRhYjgzLCAweDA1MTM0MGY2LCAweDNmY2M2NzNiLCANCisJMHgzZmNiNjZlNCwgMHgwNTFmYzdiOSwgMHgwNTQ1NWFkMSwgMHgzZmM4NTcxZiwgMHgzZmM3NGNmMywgMHgwNTUxZTBjNywgMHgwNTc3NzE2YiwgMHgzZmM0MWZhYywgDQorCTB4M2ZjMzBiYWEsIDB4MDU4M2Y2OGMsIDB4MDVhOTg0YTYsIDB4M2ZiZmMwZTMsIDB4M2ZiZWEzMGMsIDB4MDViNjA4ZWIsIDB4MDVkYjk0NjMsIDB4M2ZiYjNhYzcsIA0KKwkweDNmYmExMzFiLCAweDA1ZTgxN2MzLCAweDA2MGRhMDgzLCAweDNmYjY4ZDViLCAweDNmYjU1YmRjLCAweDA2MWEyMmY3LCAweDA2M2ZhOGU3LCAweDNmYjFiOGEyLCANCisJMHgzZmIwN2Q1MCwgMHgwNjRjMmE2NywgMHgwNjcxYWQ3MSwgMHgzZmFjYmM5ZiwgMHgzZmFiNzc3YiwgMHgwNjdlMmRmNSwgMHgwNmEzYWUwMCwgMHgzZmE3OTk1NCwgDQorCTB4M2ZhNjRhNWYsIDB4MDZiMDJkODEsIDB4MDZkNWFhNzcsIDB4M2ZhMjRlYzYsIDB4M2ZhMGY2MDAsIDB4MDZlMjI4ZWUsIDB4MDcwN2EyYjcsIDB4M2Y5Y2RjZjcsIA0KKwkweDNmOWI3YTYyLCAweDA3MTQyMDFiLCAweDA3Mzk5NmExLCAweDNmOTc0M2ViLCAweDNmOTVkNzg3LCAweDA3NDYxMmViLCAweDA3NmI4NjE2LCAweDNmOTE4M2E1LCANCisJMHgzZjkwMGQ3MiwgMHgwNzc4MDEzZCwgMHgwNzlkNzBmNywgMHgzZjhiOWMyOCwgMHgzZjhhMWMyOSwgMHgwN2E5ZWFmNSwgMHgwN2NmNTcyNiwgMHgzZjg1OGQ3OSwgDQorCTB4M2Y4NDAzYWUsIDB4MDdkYmNmZjIsIDB4MDgwMTM4ODMsIDB4M2Y3ZjU3OWIsIDB4M2Y3ZGM0MDUsIDB4MDgwZGIwMTYsIDB4MDgzMzE0ZjEsIDB4M2Y3OGZhOTIsIA0KKwkweDNmNzc1ZDMxLCAweDA4M2Y4YjQzLCAweDA4NjRlYzRmLCAweDNmNzI3NjYxLCAweDNmNzBjZjM4LCAweDA4NzE2MTU5LCAweDA4OTZiZTgwLCAweDNmNmJjYjBlLCANCisJMHgzZjZhMWExYywgMHgwOGEzMzIzYSwgMHgwOGM4OGI2NSwgMHgzZjY0Zjg5YiwgMHgzZjYzM2RlMiwgMHgwOGQ0ZmRjNiwgMHgwOGZhNTJkZSwgMHgzZjVkZmYwZSwgDQorCTB4M2Y1YzNhOGYsIDB4MDkwNmMzZTAsIDB4MDkyYzE0Y2UsIDB4M2Y1NmRlNmEsIDB4M2Y1NTEwMjYsIDB4MDkzODg0NjksIDB4MDk1ZGQxMTYsIDB4M2Y0Zjk2YjQsIA0KKwkweDNmNGRiZWFjLCAweDA5NmEzZjQyLCAweDA5OGY4Nzk2LCAweDNmNDgyN2YwLCAweDNmNDY0NjI2LCAweDA5OWJmNDRjLCAweDA5YzEzODMxLCAweDNmNDA5MjIzLCANCisJMHgzZjNlYTY5NywgMHgwOWNkYTM2OCwgMHgwOWYyZTJjNywgMHgzZjM4ZDU1MiwgMHgzZjM2ZTAwNiwgMHgwOWZmNGM3OCwgMHgwYTI0ODczYSwgMHgzZjMwZjE4MSwgDQorCTB4M2YyZWYyNzYsIDB4MGEzMGVmNWUsIDB4MGE1NjI1NmMsIDB4M2YyOGU2YjYsIDB4M2YyNmRkZWMsIDB4MGE2MjhiZmEsIDB4MGE4N2JkM2QsIDB4M2YyMGI0ZjUsIA0KKwkweDNmMWVhMjZlLCAweDBhOTQyMjJmLCAweDBhYjk0ZThmLCAweDNmMTg1YzQzLCAweDNmMTY0MDAxLCAweDBhYzViMWRjLCAweDBhZWFkOTQ0LCAweDNmMGZkY2E1LCANCisJMHgzZjBkYjZhOSwgMHgwYWY3M2FlNSwgMHgwYjFjNWQzZCwgMHgzZjA3MzYyMSwgMHgzZjA1MDY2ZCwgMHgwYjI4YmQyYSwgMHgwYjRkZGE1YywgMHgzZWZlNjhiYywgDQorCTB4M2VmYzJmNTAsIDB4MGI1YTM4OGQsIDB4MGI3ZjUwODEsIDB4M2VmNTc0N2IsIDB4M2VmMzMxNWEsIDB4MGI4YmFjZjAsIDB4MGJiMGJmOGYsIDB4M2VlYzU5NjUsIA0KKwkweDNlZWEwYzhlLCAweDBiYmQxYTMzLCAweDBiZTIyNzY2LCAweDNlZTMxNzdlLCAweDNlZTBjMGY0LCAweDBiZWU4MDM4LCAweDBjMTM4N2U5LCAweDNlZDlhZWNjLCANCisJMHgzZWQ3NGU5MSwgMHgwYzFmZGVlMSwgMHgwYzQ0ZTBmOSwgMHgzZWQwMWY1NSwgMHgzZWNkYjU2YSwgMHgwYzUxMzYxMCwgMHgwYzc2MzI3OCwgMHgzZWM2NjkyMCwgDQorCTB4M2VjM2Y1ODUsIDB4MGM4Mjg1YTUsIDB4MGNhNzdjNDcsIDB4M2ViYzhjMzEsIDB4M2ViYTBlZTksIDB4MGNiM2NkODQsIDB4MGNkOGJlNDcsIDB4M2ViMjg4OGYsIA0KKwkweDNlYjAwMTljLCAweDBjZTUwZDhjLCAweDBkMDlmODViLCAweDNlYTg1ZTQxLCAweDNlYTVjZGEzLCAweDBkMTY0NWEwLCAweDBkM2IyYTY0LCAweDNlOWUwZDRjLCANCisJMHgzZTliNzMwNiwgMHgwZDQ3NzVhMSwgMHgwZDZjNTQ0MywgMHgzZTkzOTViNywgMHgzZTkwZjFjYSwgMHgwZDc4OWQ3MSwgMHgwZDlkNzVkYiwgMHgzZTg4Zjc4OCwgDQorCTB4M2U4NjQ5ZjUsIDB4MGRhOWJjZjIsIDB4MGRjZThmMGQsIDB4M2U3ZTMyYzYsIDB4M2U3YjdiOTAsIDB4MGRkYWQ0MDYsIDB4MGRmZjlmYmEsIDB4M2U3MzQ3NzgsIA0KKwkweDNlNzA4NjlmLCAweDBlMGJlMjhlLCAweDBlMzBhN2M1LCAweDNlNjgzNWE0LCAweDNlNjU2YjJiLCAweDBlM2NlODZiLCAweDBlNjFhNzBmLCAweDNlNWNmZDUxLCANCisJMHgzZTVhMjkzOSwgMHgwZTZkZTU4MCwgMHgwZTkyOWQ3YSwgMHgzZTUxOWU4NiwgMHgzZTRlYzBkMSwgMHgwZTllZDlhZiwgMHgwZWMzOGFlOCwgMHgzZTQ2MTk0YSwgDQorCTB4M2U0MzMxZmEsIDB4MGVjZmM0ZDksIDB4MGVmNDZmM2IsIDB4M2UzYTZkYTQsIDB4M2UzNzdjYmIsIDB4MGYwMGE2ZGYsIDB4MGYyNTRhNTMsIDB4M2UyZTliOWMsIA0KKwkweDNlMmJhMTFiLCAweDBmMzE3ZmE1LCAweDBmNTYxYzE1LCAweDNlMjJhMzM4LCAweDNlMWY5ZjIxLCAweDBmNjI0ZjBjLCAweDBmODZlNDYwLCAweDNlMTY4NDgwLCANCisJMHgzZTEzNzZkNSwgMHgwZjkzMTRmNSwgMHgwZmI3YTMxNywgMHgzZTBhM2Y3YiwgMHgzZTA3MjgzZiwgMHgwZmMzZDE0MywgMHgwZmU4NTgxZCwgMHgzZGZkZDQzMiwgDQorCTB4M2RmYWIzNjUsIDB4MGZmNDgzZDcsIDB4MTAxOTAzNTIsIDB4M2RmMTQyYWIsIDB4M2RlZTE4NTEsIDB4MTAyNTJjOTQsIDB4MTA0OWE0OWEsIDB4M2RlNDhhZWYsIA0KKwkweDNkZTE1NzA4LCAweDEwNTVjYjViLCAweDEwN2EzYmQ1LCAweDNkZDdhZDA1LCAweDNkZDQ2Zjk0LCAweDEwODY2MDBlLCAweDEwYWFjOGU2LCAweDNkY2FhOGY1LCANCisJMHgzZGM3NjFmYywgMHgxMGI2ZWE5MCwgMHgxMGRiNGJhZiwgMHgzZGJkN2VjNywgMHgzZGJhMmU0OCwgMHgxMGU3NmFjMywgMHgxMTBiYzQxMywgMHgzZGIwMmU4NCwgDQorCTB4M2RhY2Q0ODEsIDB4MTExN2UwODgsIDB4MTEzYzMxZjMsIDB4M2RhMmI4MzQsIDB4M2Q5ZjU0YWYsIDB4MTE0ODRiYzIsIDB4MTE2Yzk1MzEsIDB4M2Q5NTFiZGUsIA0KKwkweDNkOTFhZWQ5LCAweDExNzhhYzUzLCAweDExOWNlZGFmLCAweDNkODc1OThjLCAweDNkODNlMzA5LCAweDExYTkwMjFkLCAweDExY2QzYjUwLCAweDNkNzk3MTQ1LCANCisJMHgzZDc1ZjE0NywgMHgxMWQ5NGQwMiwgMHgxMWZkN2RmNiwgMHgzZDZiNjMxMywgMHgzZDY3ZDk5YiwgMHgxMjA5OGNlNSwgMHgxMjJkYjU4MywgMHgzZDVkMmVmZSwgDQorCTB4M2Q1OTljMGUsIDB4MTIzOWMxYTcsIDB4MTI1ZGUxZGEsIDB4M2Q0ZWQ1MGYsIDB4M2Q0YjM4YWEsIDB4MTI2OWViMmIsIDB4MTI4ZTAyZGMsIDB4M2Q0MDU1NGUsIA0KKwkweDNkM2NhZjc2LCAweDEyOWEwOTU0LCAweDEyYmUxODZjLCAweDNkMzFhZmM1LCAweDNkMmUwMDdjLCAweDEyY2ExYzAzLCAweDEyZWUyMjZjLCAweDNkMjJlNDdjLCANCisJMHgzZDFmMmJjNSwgMHgxMmZhMjMxYiwgMHgxMzFlMjBjMCwgMHgzZDEzZjM3ZSwgMHgzZDEwMzE1YSwgMHgxMzJhMWU3ZSwgMHgxMzRlMTM0OCwgMHgzZDA0ZGNkMiwgDQorCTB4M2QwMTExNDUsIDB4MTM1YTBlMGUsIDB4MTM3ZGY5ZTcsIDB4M2NmNWEwODIsIDB4M2NmMWNiOGUsIDB4MTM4OWYxYWYsIDB4MTNhZGQ0ODEsIDB4M2NlNjNlOTgsIA0KKwkweDNjZTI2MDNmLCAweDEzYjljOTQzLCAweDEzZGRhMmY3LCAweDNjZDZiNzFlLCAweDNjZDJjZjYyLCAweDEzZTk5NGFiLCAweDE0MGQ2NTJjLCAweDNjYzcwYTFjLCANCisJMHgzY2MzMThmZiwgMHgxNDE5NTNjYiwgMHgxNDNkMWIwMiwgMHgzY2I3Mzc5YywgMHgzY2IzM2QyMiwgMHgxNDQ5MDY4NSwgMHgxNDZjYzQ1YywgMHgzY2E3M2ZhOSwgDQorCTB4M2NhMzNiZDMsIDB4MTQ3OGFjYmMsIDB4MTQ5YzYxMWQsIDB4M2M5NzIyNGMsIDB4M2M5MzE1MWQsIDB4MTRhODQ2NTIsIDB4MTRjYmYxMjcsIDB4M2M4NmRmOGUsIA0KKwkweDNjODJjOTA5LCAweDE0ZDdkMzJhLCAweDE0ZmI3NDVlLCAweDNjNzY3NzdiLCAweDNjNzI1N2EyLCAweDE1MDc1MzI3LCAweDE1MmFlYWEzLCAweDNjNjVlYTFjLCANCisJMHgzYzYxYzBmMSwgMHgxNTM2YzYyYiwgMHgxNTVhNTNkOSwgMHgzYzU1Mzc3YiwgMHgzYzUxMDUwMSwgMHgxNTY2MmMxOCwgMHgxNTg5YWZlMywgMHgzYzQ0NWZhMiwgDQorCTB4M2M0MDIzZGQsIDB4MTU5NTg0ZDMsIDB4MTViOGZlYTQsIDB4M2MzMzYyOWQsIDB4M2MyZjFkOGUsIDB4MTVjNGQwM2UsIDB4MTVlODNmZmYsIDB4M2MyMjQwNzUsIA0KKwkweDNjMWRmMjFmLCAweDE1ZjQwZTNhLCAweDE2MTc3M2Q2LCAweDNjMTBmOTM1LCAweDNjMGNhMTliLCAweDE2MjMzZWFjLCAweDE2NDY5YTBkLCAweDNiZmY4Y2U4LCANCisJMHgzYmZiMmMwYywgMHgxNjUyNjE3NiwgMHgxNjc1YjI4NiwgMHgzYmVkZmI5OSwgMHgzYmU5OTE3ZSwgMHgxNjgxNzY3YywgMHgxNmE0YmQyNSwgMHgzYmRjNDU1MiwgDQorCTB4M2JkN2QxZmEsIDB4MTZiMDdkOWYsIDB4MTZkM2I5Y2MsIDB4M2JjYTZhMWQsIDB4M2JjNWVkOGQsIDB4MTZkZjc2YzMsIDB4MTcwMmE4NWUsIDB4M2JiODZhMDgsIA0KKwkweDNiYjNlNDQwLCAweDE3MGU2MWNjLCAweDE3MzE4OGJlLCAweDNiYTY0NTFiLCAweDNiYTFiNjIwLCAweDE3M2QzZTliLCAweDE3NjA1YWQwLCAweDNiOTNmYjYzLCANCisJMHgzYjhmNjMzNywgMHgxNzZjMGQxNSwgMHgxNzhmMWU3NiwgMHgzYjgxOGNlYiwgMHgzYjdjZWI5MCwgMHgxNzlhY2QxYywgMHgxN2JkZDM5NCwgMHgzYjZlZjliZSwgDQorCTB4M2I2YTRmMzgsIDB4MTdjOTdlOTMsIDB4MTdlYzdhMGQsIDB4M2I1YzQxZTgsIDB4M2I1NzhlMzksIDB4MTdmODIxNWUsIDB4MTgxYjExYzQsIDB4M2I0OTY1NzQsIA0KKwkweDNiNDRhOGEwLCAweDE4MjZiNTYxLCAweDE4NDk5YTlkLCAweDNiMzY2NDZlLCAweDNiMzE5ZTc3LCAweDE4NTUzYTdkLCAweDE4NzgxNDdhLCAweDNiMjMzZWUxLCANCisJMHgzYjFlNmZjYSwgMHgxODgzYjA5NywgMHgxOGE2N2YzZiwgMHgzYjBmZjRkOSwgMHgzYjBiMWNhNiwgMHgxOGIyMTc5MSwgMHgxOGQ0ZGFkMCwgMHgzYWZjODY2MywgDQorCTB4M2FmN2E1MTYsIDB4MThlMDZmNTAsIDB4MTkwMzI3MGYsIDB4M2FlOGYzOGIsIDB4M2FlNDA5MjYsIDB4MTkwZWI3YjcsIDB4MTkzMTYzZTEsIDB4M2FkNTNjNWIsIA0KKwkweDNhZDA0OGUzLCAweDE5M2NmMGE5LCAweDE5NWY5MTI4LCAweDNhYzE2MGUxLCAweDNhYmM2NDU4LCAweDE5NmIxYTA5LCAweDE5OGRhZWM4LCAweDNhYWQ2MTI5LCANCisJMHgzYWE4NWI5MiwgMHgxOTk5MzNiYiwgMHgxOWJiYmNhNiwgMHgzYTk5M2QzZSwgMHgzYTk0MmU5ZCwgMHgxOWM3M2RhMywgMHgxOWU5YmFhMywgMHgzYTg0ZjUyZiwgDQorCTB4M2E3ZmRkODYsIDB4MTlmNTM3YTQsIDB4MWExN2E4YTUsIDB4M2E3MDg5MDYsIDB4M2E2YjY4NTksIDB4MWEyMzIxYTIsIDB4MWE0NTg2OGUsIDB4M2E1YmY4ZDEsIA0KKwkweDNhNTZjZjIzLCAweDFhNTBmYjgxLCAweDFhNzM1NDQyLCAweDNhNDc0NDljLCAweDNhNDIxMWYwLCAweDFhN2VjNTI0LCAweDFhYTExMWE2LCAweDNhMzI2Yzc0LCANCisJMHgzYTJkMzBjZCwgMHgxYWFjN2U2ZiwgMHgxYWNlYmU5ZCwgMHgzYTFkNzA2NiwgMHgzYTE4MmJjOCwgMHgxYWRhMjc0NiwgMHgxYWZjNWIwYSwgMHgzYTA4NTA3ZiwgDQorCTB4M2EwMzAyZWQsIDB4MWIwN2JmOGMsIDB4MWIyOWU2ZDIsIDB4MzlmMzBjY2MsIDB4MzllZGI2NDksIDB4MWIzNTQ3MjcsIDB4MWI1NzYxZDgsIDB4MzlkZGE1NWEsIA0KKwkweDM5ZDg0NWU5LCAweDFiNjJiZGY4LCAweDFiODRjYzAxLCAweDM5YzgxYTM2LCAweDM5YzJiMWRhLCAweDFiOTAyM2U1LCAweDFiYjIyNTMwLCAweDM5YjI2YjZkLCANCisJMHgzOWFjZmEyYiwgMHgxYmJkNzhkMiwgMHgxYmRmNmQ0YSwgMHgzOTljOTkwZCwgMHgzOTk3MWVlNywgMHgxYmVhYmNhMSwgMHgxYzBjYTQzMiwgMHgzOTg2YTMyNCwgDQorCTB4Mzk4MTIwMWUsIDB4MWMxN2VmMzksIDB4MWMzOWM5Y2QsIDB4Mzk3MDg5YmYsIDB4Mzk2YWZkZGMsIDB4MWM0NTEwN2MsIDB4MWM2NmRkZmUsIDB4Mzk1YTRjZWIsIA0KKwkweDM5NTRiODJlLCAweDFjNzIyMDRmLCAweDFjOTNlMGFiLCAweDM5NDNlY2I2LCAweDM5M2U0ZjIzLCAweDFjOWYxZTk2LCAweDFjYzBkMWI2LCAweDM5MmQ2OTJmLCANCisJMHgzOTI3YzJjOSwgMHgxY2NjMGIzNSwgMHgxY2VkYjEwNiwgMHgzOTE2YzI2MiwgMHgzOTExMTMyZCwgMHgxY2Y4ZTYxMSwgMHgxZDFhN2U3ZCwgMHgzOGZmZjg1ZSwgDQorCTB4MzhmYTQwNWUsIDB4MWQyNWFmMGQsIDB4MWQ0NzNhMDAsIDB4MzhlOTBiMzEsIDB4MzhlMzRhNjksIDB4MWQ1MjY2MGYsIDB4MWQ3M2UzNzQsIDB4MzhkMWZhZTksIA0KKwkweDM4Y2MzMTVkLCAweDFkN2YwYWZiLCAweDFkYTA3YWJjLCAweDM4YmFjNzk1LCAweDM4YjRmNTQ3LCAweDFkYWI5ZGI1LCAweDFkY2NmZmJmLCAweDM4YTM3MTQyLCANCisJMHgzODlkOTYzNywgMHgxZGQ4MWUyMSwgMHgxZGY5NzI1ZiwgMHgzODhiZjdmZiwgMHgzODg2MTQzYiwgMHgxZTA0OGMyNCwgMHgxZTI1ZDI4MiwgMHgzODc0NWJkYiwgDQorCTB4Mzg2ZTZmNjAsIDB4MWUzMGU3YTQsIDB4MWU1MjIwMGMsIDB4Mzg1YzljZTMsIDB4Mzg1NmE3YjYsIDB4MWU1ZDMwODQsIDB4MWU3ZTVhZTIsIDB4Mzg0NGJiMjgsIA0KKwkweDM4M2ViZDRjLCAweDFlODk2NmE4LCAweDFlYWE4MmU5LCAweDM4MmNiNmI3LCAweDM4MjZiMDMwLCAweDFlYjU4OWY3LCAweDFlZDY5ODA1LCAweDM4MTQ4ZjlmLCANCisJMHgzODBlODA3MSwgMHgxZWUxOWE1NCwgMHgxZjAyOWExYywgMHgzN2ZjNDVlZiwgMHgzN2Y2MmUxZCwgMHgxZjBkOTdhNSwgMHgxZjJlODkxMSwgMHgzN2UzZDliNywgDQorCTB4MzdkZGI5NDUsIDB4MWYzOTgxY2UsIDB4MWY1YTY0Y2IsIDB4MzdjYjRiMDQsIDB4MzdjNTIxZjYsIDB4MWY2NTU4YjUsIDB4MWY4NjJkMmQsIDB4MzdiMjk5ZTcsIA0KKwkweDM3YWM2ODQxLCAweDFmOTExYzNkLCAweDFmYjFlMjFkLCAweDM3OTljNjZmLCAweDM3OTM4YzM0LCAweDFmYmNjYzRkLCAweDFmZGQ4MzgxLCAweDM3ODBkMGFhLCANCisJMHgzNzdhOGRkZiwgMHgxZmU4NjhjOCwgMHgyMDA5MTEzYywgMHgzNzY3YjhhOSwgMHgzNzYxNmQ1MSwgMHgyMDEzZjE5NiwgMHgyMDM0OGIzNSwgMHgzNzRlN2U3YiwgDQorCTB4Mzc0ODJhOWEsIDB4MjAzZjY2OTksIDB4MjA1ZmYxNGYsIDB4MzczNTIyMmYsIDB4MzcyZWM1YzksIDB4MjA2YWM3YjgsIDB4MjA4YjQzNzIsIDB4MzcxYmEzZDQsIA0KKwkweDM3MTUzZWVlLCAweDIwOTYxNGQ5LCAweDIwYjY4MTgxLCAweDM3MDIwMzdjLCAweDM2ZmI5NjE4LCAweDIwYzE0ZGRmLCAweDIwZTFhYjYzLCAweDM2ZTg0MTM1LCANCisJMHgzNmUxY2I1OCwgMHgyMGVjNzJiMSwgMHgyMTBjYzBmYywgMHgzNmNlNWQxMCwgMHgzNmM3ZGViZCwgMHgyMTE3ODMzNCwgMHgyMTM3YzIzMiwgMHgzNmI0NTcxYiwgDQorCTB4MzZhZGQwNTgsIDB4MjE0MjdmNGQsIDB4MjE2MmFlZWEsIDB4MzY5YTJmNjksIDB4MzY5M2EwMzgsIDB4MjE2ZDY2ZTIsIDB4MjE4ZDg3MGIsIDB4MzY3ZmU2MDgsIA0KKwkweDM2Nzk0ZTZlLCAweDIxOTgzOWQ4LCAweDIxYjg0YTc5LCAweDM2NjU3YjA4LCAweDM2NWVkYjA5LCAweDIxYzJmODE1LCAweDIxZTJmOTFhLCAweDM2NGFlZTdiLCANCisJMHgzNjQ0NDYxYiwgMHgyMWVkYTE3ZiwgMHgyMjBkOTJkNCwgMHgzNjMwNDA3MCwgMHgzNjI5OGZiNCwgMHgyMjE4MzVmYiwgMHgyMjM4MTc4ZCwgMHgzNjE1NzBmOCwgDQorCTB4MzYwZWI3ZTMsIDB4MjI0MmI1NmYsIDB4MjI2Mjg3MjksIDB4MzVmYTgwMjMsIDB4MzVmM2JlYmEsIDB4MjI2ZDFmYzEsIDB4MjI4Y2UxOTEsIDB4MzVkZjZlMDMsIA0KKwkweDM1ZDhhNDQ5LCAweDIyOTc3NGQ3LCAweDIyYjcyNmE4LCAweDM1YzQzYWE3LCAweDM1YmQ2OGExLCAweDIyYzFiNDk2LCAweDIyZTE1NjU1LCAweDM1YThlNjIxLCANCisJMHgzNWEyMGJkMywgMHgyMmViZGVlNSwgMHgyMzBiNzA3ZSwgMHgzNThkNzA4MSwgMHgzNTg2OGRlZiwgMHgyMzE1ZjNhOCwgMHgyMzM1NzUwOSwgMHgzNTcxZDlkOSwgDQorCTB4MzU2YWVmMDgsIDB4MjMzZmYyYzgsIDB4MjM1ZjYzZGMsIDB4MzU1NjIyMzksIDB4MzU0ZjJmMmMsIDB4MjM2OWRjMjksIDB4MjM4OTNjZGQsIDB4MzUzYTQ5YjIsIA0KKwkweDM1MzM0ZTZmLCAweDIzOTNhZmIyLCAweDIzYjJmZmYzLCAweDM1MWU1MDU2LCAweDM1MTc0Y2UwLCAweDIzYmQ2ZDQ4LCAweDIzZGNhZDAzLCAweDM1MDIzNjM2LCANCisJMHgzNGZiMmE5MiwgMHgyM2U3MTRkMywgMHgyNDA2NDNmNCwgMHgzNGU1ZmI2MywgMHgzNGRlZTc5NSwgMHgyNDEwYTYzOSwgMHgyNDJmYzRhZCwgMHgzNGM5OWZlZiwgDQorCTB4MzRjMjgzZmIsIDB4MjQzYTIxNWYsIDB4MjQ1OTJmMTMsIDB4MzRhZDIzZWIsIDB4MzRhNWZmZDUsIDB4MjQ2Mzg2MmMsIDB4MjQ4MjgzMGQsIDB4MzQ5MDg3NjgsIA0KKwkweDM0ODk1YjM2LCAweDI0OGNkNDg3LCAweDI0YWJjMDgyLCAweDM0NzNjYTc5LCAweDM0NmM5NjJmLCAweDI0YjYwYzU3LCAweDI0ZDRlNzU3LCAweDM0NTZlZDJmLCANCisJMHgzNDRmYjBkMSwgMHgyNGRmMmQ4MSwgMHgyNGZkZjc3NSwgMHgzNDM5ZWY5YywgMHgzNDMyYWIyZSwgMHgyNTA4MzdlZCwgMHgyNTI2ZjBjMSwgMHgzNDFjZDFkMiwgDQorCTB4MzQxNTg1NTksIDB4MjUzMTJiODEsIDB4MjU0ZmQzMjMsIDB4MzNmZjkzZTIsIDB4MzNmODNmNjIsIDB4MjU1YTA4MjMsIDB4MjU3ODllODAsIDB4MzNlMjM1ZGYsIA0KKwkweDMzZGFkOTVlLCAweDI1ODJjZGJjLCAweDI1YTE1MmMwLCAweDMzYzRiN2RiLCAweDMzYmQ1MzVjLCAweDI1YWI3YzMwLCAweDI1YzllZmNhLCAweDMzYTcxOWU4LCANCisJMHgzMzlmYWQ3MCwgMHgyNWQ0MTM2OSwgMHgyNWYyNzU4NCwgMHgzMzg5NWMxOCwgMHgzMzgxZTdhYywgMHgyNWZjOTM0YiwgMHgyNjFhZTNkNiwgMHgzMzZiN2U3ZSwgDQorCTB4MzM2NDAyMjMsIDB4MjYyNGZiYmYsIDB4MjY0MzNhYTcsIDB4MzM0ZDgxMmQsIDB4MzM0NWZjZTYsIDB4MjY0ZDRjYWMsIDB4MjY2Yjc5ZGQsIDB4MzMyZjY0MzUsIA0KKwkweDMzMjdkODA4LCAweDI2NzU4NWY4LCAweDI2OTNhMTYxLCAweDMzMTEyN2FiLCAweDMzMDk5MzljLCAweDI2OWRhNzhiLCAweDI2YmJiMTE5LCAweDMyZjJjYmExLCANCisJMHgzMmViMmZiNSwgMHgyNmM1YjE0YywgMHgyNmUzYThlYywgMHgzMmQ0NTAyOSwgMHgzMmNjYWM2NCwgMHgyNmVkYTMyMiwgMHgyNzBiODhjMiwgMHgzMmI1YjU1NywgDQorCTB4MzJhZTA5YmUsIDB4MjcxNTdjZjUsIDB4MjczMzUwODIsIDB4MzI5NmZiM2QsIDB4MzI4ZjQ3ZDUsIDB4MjczZDNlYWMsIDB4Mjc1YjAwMTQsIDB4MzI3ODIxZWUsIA0KKwkweDMyNzA2NmJjLCAweDI3NjRlODJmLCAweDI3ODI5NzYwLCAweDMyNTkyOTdkLCAweDMyNTE2Njg2LCAweDI3OGM3OTY1LCAweDI3YWExNjRjLCAweDMyM2ExMWZlLCANCisJMHgzMjMyNDc0NiwgMHgyN2IzZjIzNSwgMHgyN2QxN2NjMSwgMHgzMjFhZGI4MywgMHgzMjEzMDkwZiwgMHgyN2RiNTI4OCwgMHgyN2Y4Y2FhNSwgMHgzMWZiODYyMCwgDQorCTB4MzFmM2FiZjUsIDB4MjgwMjlhNDUsIDB4MjgxZmZmZTIsIDB4MzFkYzExZTgsIDB4MzFkNDMwMGIsIDB4MjgyOWM5NTQsIDB4Mjg0NzFjNWUsIDB4MzFiYzdlZWUsIA0KKwkweDMxYjQ5NTY0LCAweDI4NTBkZjlkLCAweDI4NmUyMDAyLCAweDMxOWNjZDQ2LCAweDMxOTRkYzE0LCAweDI4NzdkZDA3LCAweDI4OTUwYWI2LCAweDMxN2NmZDA0LCANCisJMHgzMTc1MDQyZSwgMHgyODllYzE3YSwgMHgyOGJiZGM2MSwgMHgzMTVkMGUzYiwgMHgzMTU1MGRjNiwgMHgyOGM1OGNkZiwgMHgyOGUyOTRlYiwgMHgzMTNkMDBmZiwgDQorCTB4MzEzNGY4ZjEsIDB4MjhlYzNmMWUsIDB4MjkwOTM0M2UsIDB4MzExY2Q1NjQsIDB4MzExNGM1YzAsIDB4MjkxMmQ4MWYsIDB4MjkyZmJhNDAsIDB4MzBmYzhiN2QsIA0KKwkweDMwZjQ3NDQ5LCAweDI5Mzk1N2M5LCAweDI5NTYyNmRhLCAweDMwZGMyMzVlLCAweDMwZDQwNGEwLCAweDI5NWZiZTA2LCAweDI5N2M3OWY1LCAweDMwYmI5ZDFjLCANCisJMHgzMGIzNzZkOCwgMHgyOTg2MGFiZCwgMHgyOWEyYjM3OCwgMHgzMDlhZjhjYSwgMHgzMDkyY2IwNSwgMHgyOWFjM2RkNywgMHgyOWM4ZDM0ZCwgMHgzMDdhMzY3YywgDQorCTB4MzA3MjAxM2MsIDB4MjlkMjU3M2MsIDB4MjllZWQ5NWIsIDB4MzA1OTU2NDgsIDB4MzA1MTE5OTEsIDB4MjlmODU2ZDUsIDB4MmExNGM1OGIsIDB4MzAzODU4NDAsIA0KKwkweDMwMzAxNDE4LCAweDJhMWUzYzhhLCAweDJhM2E5N2M3LCAweDMwMTczYzdhLCAweDMwMGVmMGU1LCAweDJhNDQwODQ0LCAweDJhNjA0ZmY1LCAweDJmZjYwMzBhLCANCisJMHgyZmVkYjAwZCwgMHgyYTY5YjllYywgMHgyYTg1ZWUwMCwgMHgyZmQ0YWMwNCwgMHgyZmNjNTFhNSwgMHgyYThmNTE2YiwgMHgyYWFiNzFkMCwgMHgyZmIzMzc3YywgDQorCTB4MmZhYWQ1YzEsIDB4MmFiNGNlYTksIDB4MmFkMGRiNGUsIDB4MmY5MWE1ODksIDB4MmY4OTNjNzUsIDB4MmFkYTMxOGUsIDB4MmFmNjJhNjMsIDB4MmY2ZmY2M2QsIA0KKwkweDJmNjc4NWQ3LCAweDJhZmY3YTA1LCAweDJiMWI1ZWY4LCAweDJmNGUyOWFmLCAweDJmNDViMWZiLCAweDJiMjRhN2Y2LCAweDJiNDA3OGY1LCAweDJmMmMzZmYyLCANCisJMHgyZjIzYzBmNiwgMHgyYjQ5YmI0YSwgMHgyYjY1Nzg0NCwgMHgyZjBhMzkxZCwgMHgyZjAxYjJkZSwgMHgyYjZlYjNlYSwgMHgyYjhhNWNjZSwgMHgyZWU4MTU0MywgDQorCTB4MmVkZjg3YzYsIDB4MmI5MzkxYzAsIDB4MmJhZjI2N2QsIDB4MmVjNWQ0NzksIDB4MmViZDNmYzQsIDB4MmJiODU0YjQsIDB4MmJkM2Q1M2EsIDB4MmVhMzc2ZDYsIA0KKwkweDJlOWFkYWVlLCAweDJiZGNmY2IwLCAweDJiZjg2OGVkLCAweDJlODBmYzZlLCAweDJlNzg1OTU4LCAweDJjMDE4OTllLCAweDJjMWNlMTgxLCAweDJlNWU2NTU2LCANCisJMHgyZTU1YmIxNywgMHgyYzI1ZmI2NiwgMHgyYzQxM2VkZiwgMHgyZTNiYjFhNCwgMHgyZTMzMDA0MiwgMHgyYzRhNTFmMywgMHgyYzY1ODBmMSwgMHgyZTE4ZTE2ZCwgDQorCTB4MmUxMDI4ZWQsIDB4MmM2ZThkMmUsIDB4MmM4OWE3OWYsIDB4MmRmNWY0YzcsIDB4MmRlZDM1MmYsIDB4MmM5MmFkMDEsIDB4MmNhZGIyZDUsIDB4MmRkMmViYzcsIA0KKwkweDJkY2EyNTFjLCAweDJjYjZiMTU1LCAweDJjZDFhMjdiLCAweDJkYWZjNjgzLCAweDJkYTZmOGNhLCAweDJjZGE5YTE0LCAweDJjZjU3NjdjLCAweDJkOGM4NTEwLCANCisJMHgyZDgzYjA0ZiwgMHgyY2ZlNjcyOCwgMHgyZDE5MmVjMSwgMHgyZDY5Mjc4NCwgMHgyZDYwNGJjMCwgMHgyZDIyMTg3YSwgMHgyZDNjY2IzNCwgMHgyZDQ1YWRmNg0KK307CisKK2NvbnN0IGludCB0d2lkVGFiNTEyWzgqNiArIDMyKjYgKyAxMjgqNl0gPSB7DQorCTB4NDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4NDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4NDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4M2IyMGQ3OWUsIDB4MTg3ZGUyYTYsIA0KKwkweDNlYzUyZjlmLCAweDBjN2M1YzFlLCAweDM1MzZjYzUyLCAweDIzOGU3NjczLCAweDJkNDEzY2NjLCAweDJkNDEzY2NjLCAweDNiMjBkNzllLCAweDE4N2RlMmE2LCANCisJMHgxODdkZTJhNiwgMHgzYjIwZDc5ZSwgMHgxODdkZTJhNiwgMHgzYjIwZDc5ZSwgMHgzNTM2Y2M1MiwgMHgyMzhlNzY3MywgMHhmMzgzYTNlMiwgMHgzZWM1MmY5ZiwgDQorCTB4MDAwMDAwMDAsIDB4NDAwMDAwMDAsIDB4MmQ0MTNjY2MsIDB4MmQ0MTNjY2MsIDB4ZDJiZWMzMzQsIDB4MmQ0MTNjY2MsIDB4ZTc4MjFkNWEsIDB4M2IyMGQ3OWUsIA0KKwkweDIzOGU3NjczLCAweDM1MzZjYzUyLCAweGMxM2FkMDYxLCAweDBjN2M1YzFlLCAweGQyYmVjMzM0LCAweDJkNDEzY2NjLCAweDE4N2RlMmE2LCAweDNiMjBkNzllLCANCisJMHhjNGRmMjg2MiwgMHhlNzgyMWQ1YSwgMHhjNGRmMjg2MiwgMHgxODdkZTJhNiwgMHgwYzdjNWMxZSwgMHgzZWM1MmY5ZiwgMHhkYzcxODk4ZCwgMHhjYWM5MzNhZSwgDQorDQorCTB4NDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4NDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4NDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4M2ZiMTFiNDcsIDB4MDY0NWU5YWYsIA0KKwkweDNmZWM0M2M2LCAweDAzMjNlY2JlLCAweDNmNGVhYWZlLCAweDA5NjQwODM3LCAweDNlYzUyZjlmLCAweDBjN2M1YzFlLCAweDNmYjExYjQ3LCAweDA2NDVlOWFmLCANCisJMHgzZDNlODJhZCwgMHgxMjk0MDYyZSwgMHgzZDNlODJhZCwgMHgxMjk0MDYyZSwgMHgzZjRlYWFmZSwgMHgwOTY0MDgzNywgMHgzOWRhZjVlOCwgMHgxYjVkMTAwOSwgDQorCTB4M2IyMGQ3OWUsIDB4MTg3ZGUyYTYsIDB4M2VjNTJmOWYsIDB4MGM3YzVjMWUsIDB4MzUzNmNjNTIsIDB4MjM4ZTc2NzMsIDB4Mzg3MTY1ZTMsIDB4MWUyYjVkMzgsIA0KKwkweDNlMTRmZGY3LCAweDBmOGNmY2JkLCAweDJmNmJiZTQ0LCAweDJhZmFkMjY5LCAweDM1MzZjYzUyLCAweDIzOGU3NjczLCAweDNkM2U4MmFkLCAweDEyOTQwNjJlLCANCisJMHgyODk5ZTY0YSwgMHgzMTc5MDBkNiwgMHgzMTc5MDBkNiwgMHgyODk5ZTY0YSwgMHgzYzQyNDIwOSwgMHgxNThmOWE3NSwgMHgyMGU3MGYzMiwgMHgzNmU1MDY4YSwgDQorCTB4MmQ0MTNjY2MsIDB4MmQ0MTNjY2MsIDB4M2IyMGQ3OWUsIDB4MTg3ZGUyYTYsIDB4MTg3ZGUyYTYsIDB4M2IyMGQ3OWUsIDB4Mjg5OWU2NGEsIDB4MzE3OTAwZDYsIA0KKwkweDM5ZGFmNWU4LCAweDFiNWQxMDA5LCAweDBmOGNmY2JkLCAweDNlMTRmZGY3LCAweDIzOGU3NjczLCAweDM1MzZjYzUyLCAweDM4NzE2NWUzLCAweDFlMmI1ZDM4LCANCisJMHgwNjQ1ZTlhZiwgMHgzZmIxMWI0NywgMHgxZTJiNWQzOCwgMHgzODcxNjVlMywgMHgzNmU1MDY4YSwgMHgyMGU3MGYzMiwgMHhmY2RjMTM0MiwgMHgzZmVjNDNjNiwgDQorCTB4MTg3ZGUyYTYsIDB4M2IyMGQ3OWUsIDB4MzUzNmNjNTIsIDB4MjM4ZTc2NzMsIDB4ZjM4M2EzZTIsIDB4M2VjNTJmOWYsIDB4MTI5NDA2MmUsIDB4M2QzZTgyYWQsIA0KKwkweDMzNjdjMDhmLCAweDI2MWZlZmY5LCAweGVhNzA2NThiLCAweDNjNDI0MjA5LCAweDBjN2M1YzFlLCAweDNlYzUyZjlmLCAweDMxNzkwMGQ2LCAweDI4OTllNjRhLCANCisJMHhlMWQ0YTJjOCwgMHgzODcxNjVlMywgMHgwNjQ1ZTlhZiwgMHgzZmIxMWI0NywgMHgyZjZiYmU0NCwgMHgyYWZhZDI2OSwgMHhkOWUwMTAwNywgMHgzMzY3YzA4ZiwgDQorCTB4MDAwMDAwMDAsIDB4NDAwMDAwMDAsIDB4MmQ0MTNjY2MsIDB4MmQ0MTNjY2MsIDB4ZDJiZWMzMzQsIDB4MmQ0MTNjY2MsIDB4ZjliYTE2NTEsIDB4M2ZiMTFiNDcsIA0KKwkweDJhZmFkMjY5LCAweDJmNmJiZTQ0LCAweGNjOTgzZjcxLCAweDI2MWZlZmY5LCAweGYzODNhM2UyLCAweDNlYzUyZjlmLCAweDI4OTllNjRhLCAweDMxNzkwMGQ2LCANCisJMHhjNzhlOWExZCwgMHgxZTJiNWQzOCwgMHhlZDZiZjlkMiwgMHgzZDNlODJhZCwgMHgyNjFmZWZmOSwgMHgzMzY3YzA4ZiwgMHhjM2JkYmRmNywgMHgxNThmOWE3NSwgDQorCTB4ZTc4MjFkNWEsIDB4M2IyMGQ3OWUsIDB4MjM4ZTc2NzMsIDB4MzUzNmNjNTIsIDB4YzEzYWQwNjEsIDB4MGM3YzVjMWUsIDB4ZTFkNGEyYzgsIDB4Mzg3MTY1ZTMsIA0KKwkweDIwZTcwZjMyLCAweDM2ZTUwNjhhLCAweGMwMTNiYzNhLCAweDAzMjNlY2JlLCAweGRjNzE4OThkLCAweDM1MzZjYzUyLCAweDFlMmI1ZDM4LCAweDM4NzE2NWUzLCANCisJMHhjMDRlZTRiOSwgMHhmOWJhMTY1MSwgMHhkNzY2MTliNiwgMHgzMTc5MDBkNiwgMHgxYjVkMTAwOSwgMHgzOWRhZjVlOCwgMHhjMWViMDIwOSwgMHhmMDczMDM0MywgDQorCTB4ZDJiZWMzMzQsIDB4MmQ0MTNjY2MsIDB4MTg3ZGUyYTYsIDB4M2IyMGQ3OWUsIDB4YzRkZjI4NjIsIDB4ZTc4MjFkNWEsIDB4Y2U4NmZmMmEsIDB4Mjg5OWU2NGEsIA0KKwkweDE1OGY5YTc1LCAweDNjNDI0MjA5LCAweGM5MWFmOTc2LCAweGRmMThmMGNlLCAweGNhYzkzM2FlLCAweDIzOGU3NjczLCAweDEyOTQwNjJlLCAweDNkM2U4MmFkLCANCisJMHhjZTg2ZmYyYSwgMHhkNzY2MTliNiwgMHhjNzhlOWExZCwgMHgxZTJiNWQzOCwgMHgwZjhjZmNiZCwgMHgzZTE0ZmRmNywgMHhkNTA1MmQ5NywgMHhkMDk0NDFiYywgDQorCTB4YzRkZjI4NjIsIDB4MTg3ZGUyYTYsIDB4MGM3YzVjMWUsIDB4M2VjNTJmOWYsIDB4ZGM3MTg5OGQsIDB4Y2FjOTMzYWUsIDB4YzJjMTdkNTMsIDB4MTI5NDA2MmUsIA0KKwkweDA5NjQwODM3LCAweDNmNGVhYWZlLCAweGU0YTJlZmY3LCAweGM2MjUwYTE4LCAweGMxM2FkMDYxLCAweDBjN2M1YzFlLCAweDA2NDVlOWFmLCAweDNmYjExYjQ3LCANCisJMHhlZDZiZjlkMiwgMHhjMmMxN2Q1MywgMHhjMDRlZTRiOSwgMHgwNjQ1ZTlhZiwgMHgwMzIzZWNiZSwgMHgzZmVjNDNjNiwgMHhmNjliZjdjOSwgMHhjMGIxNTUwMiwgDQorDQorCTB4NDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4NDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4NDAwMDAwMDAsIDB4MDAwMDAwMDAsIDB4M2ZmYjEwYzEsIDB4MDE5MjE1NWYsIA0KKwkweDNmZmVjNDJkLCAweDAwYzkwZThmLCAweDNmZjRlNWRmLCAweDAyNWIwY2FlLCAweDNmZWM0M2M2LCAweDAzMjNlY2JlLCAweDNmZmIxMGMxLCAweDAxOTIxNTVmLCANCisJMHgzZmQzOWI1YSwgMHgwNGI1NDgyNCwgMHgzZmQzOWI1YSwgMHgwNGI1NDgyNCwgMHgzZmY0ZTVkZiwgMHgwMjViMGNhZSwgMHgzZjljMmJmYSwgMHgwNzBkZTE3MSwgDQorCTB4M2ZiMTFiNDcsIDB4MDY0NWU5YWYsIDB4M2ZlYzQzYzYsIDB4MDMyM2VjYmUsIDB4M2Y0ZWFhZmUsIDB4MDk2NDA4MzcsIDB4M2Y4NGM4ZTEsIDB4MDdkNTkzOTUsIA0KKwkweDNmZTEyYWNiLCAweDAzZWNhZGNmLCAweDNlZWIzMzQ3LCAweDBiYjZlY2VmLCAweDNmNGVhYWZlLCAweDA5NjQwODM3LCAweDNmZDM5YjVhLCAweDA0YjU0ODI0LCANCisJMHgzZTcxZTc1OCwgMHgwZTA1YzEzNSwgMHgzZjBlYzlmNCwgMHgwYWYxMGEyMiwgMHgzZmMzOTVmOSwgMHgwNTdkYjQwMiwgMHgzZGUyZjE0NywgMHgxMDRmYjgwZSwgDQorCTB4M2VjNTJmOWYsIDB4MGM3YzVjMWUsIDB4M2ZiMTFiNDcsIDB4MDY0NWU5YWYsIDB4M2QzZTgyYWQsIDB4MTI5NDA2MmUsIDB4M2U3MWU3NTgsIDB4MGUwNWMxMzUsIA0KKwkweDNmOWMyYmZhLCAweDA3MGRlMTcxLCAweDNjODRkNDk2LCAweDE0ZDFlMjQyLCAweDNlMTRmZGY3LCAweDBmOGNmY2JkLCAweDNmODRjOGUxLCAweDA3ZDU5Mzk1LCANCisJMHgzYmI2Mjc2ZCwgMHgxNzA4ODUzMCwgMHgzZGFlODFjZSwgMHgxMTExZDI2MiwgMHgzZjZhZjJlMywgMHgwODljZjg2NywgMHgzYWQyYzJlNywgMHgxOTM3MmE2MywgDQorCTB4M2QzZTgyYWQsIDB4MTI5NDA2MmUsIDB4M2Y0ZWFhZmUsIDB4MDk2NDA4MzcsIDB4MzlkYWY1ZTgsIDB4MWI1ZDEwMDksIDB4M2NjNTExZDgsIDB4MTQxMzVjOTQsIA0KKwkweDNmMmZmMjQ5LCAweDBhMmFiYjU4LCAweDM4Y2YxNjY5LCAweDFkNzk3NzViLCAweDNjNDI0MjA5LCAweDE1OGY5YTc1LCAweDNmMGVjOWY0LCAweDBhZjEwYTIyLCANCisJMHgzN2FmODE1OCwgMHgxZjhiYTRkYiwgMHgzYmI2Mjc2ZCwgMHgxNzA4ODUzMCwgMHgzZWViMzM0NywgMHgwYmI2ZWNlZiwgMHgzNjdjOWE3ZCwgMHgyMTkyZTA5YSwgDQorCTB4M2IyMGQ3OWUsIDB4MTg3ZGUyYTYsIDB4M2VjNTJmOWYsIDB4MGM3YzVjMWUsIDB4MzUzNmNjNTIsIDB4MjM4ZTc2NzMsIDB4M2E4MjY5YTIsIDB4MTllZjc5NDMsIA0KKwkweDNlOWNjMDc2LCAweDBkNDE1MDEyLCAweDMzZGU4N2RlLCAweDI1N2RiNjRiLCAweDM5ZGFmNWU4LCAweDFiNWQxMDA5LCAweDNlNzFlNzU4LCAweDBlMDVjMTM1LCANCisJMHgzMjc0NDQ5MywgMHgyNzVmZjQ1MiwgMHgzOTJhOTY0MiwgMHgxY2M2NmU5OSwgMHgzZTQ0YTVlZSwgMHgwZWM5YTdmMiwgMHgzMGY4ODAxZiwgMHgyOTM0ODkzNywgDQorCTB4Mzg3MTY1ZTMsIDB4MWUyYjVkMzgsIDB4M2UxNGZkZjcsIDB4MGY4Y2ZjYmQsIDB4MmY2YmJlNDQsIDB4MmFmYWQyNjksIDB4MzdhZjgxNTgsIDB4MWY4YmE0ZGIsIA0KKwkweDNkZTJmMTQ3LCAweDEwNGZiODBlLCAweDJkY2U4OGE5LCAweDJjYjIzMjRiLCAweDM2ZTUwNjhhLCAweDIwZTcwZjMyLCAweDNkYWU4MWNlLCAweDExMTFkMjYyLCANCisJMHgyYzIxNmVhYSwgMHgyZTVhMTA2ZiwgMHgzNjEyMTRiMCwgMHgyMjNkNjZhOCwgMHgzZDc3YjE5MSwgMHgxMWQzNDQzZiwgMHgyYTY1MDUyNSwgMHgyZmYxZDljNiwgDQorCTB4MzUzNmNjNTIsIDB4MjM4ZTc2NzMsIDB4M2QzZTgyYWQsIDB4MTI5NDA2MmUsIDB4Mjg5OWU2NGEsIDB4MzE3OTAwZDYsIDB4MzQ1MzRmNDAsIDB4MjRkYTBhOTksIA0KKwkweDNkMDJmNzU2LCAweDEzNTQxMGMyLCAweDI2YzBiMTYyLCAweDMyZWVmZGU5LCAweDMzNjdjMDhmLCAweDI2MWZlZmY5LCAweDNjYzUxMWQ4LCAweDE0MTM1Yzk0LCANCisJMHgyNGRhMGE5OSwgMHgzNDUzNGY0MCwgMHgzMjc0NDQ5MywgMHgyNzVmZjQ1MiwgMHgzYzg0ZDQ5NiwgMHgxNGQxZTI0MiwgMHgyMmU2OWFjNywgMHgzNWE1NzkzYywgDQorCTB4MzE3OTAwZDYsIDB4Mjg5OWU2NGEsIDB4M2M0MjQyMDksIDB4MTU4ZjlhNzUsIDB4MjBlNzBmMzIsIDB4MzZlNTA2OGEsIDB4MzA3NjFjMTcsIDB4MjljZDk1NzcsIA0KKwkweDNiZmQ1Y2M0LCAweDE2NGM3ZGRkLCAweDFlZGMxOTUyLCAweDM4MTE4ODRjLCAweDJmNmJiZTQ0LCAweDJhZmFkMjY5LCAweDNiYjYyNzZkLCAweDE3MDg4NTMwLCANCisJMHgxY2M2NmU5OSwgMHgzOTJhOTY0MiwgMHgyZTVhMTA2ZiwgMHgyYzIxNmVhYSwgMHgzYjZjYTRjNCwgMHgxN2MzYTkzMSwgMHgxYWE2YzgyYiwgMHgzYTJmY2VlOCwgDQorCTB4MmQ0MTNjY2MsIDB4MmQ0MTNjY2MsIDB4M2IyMGQ3OWUsIDB4MTg3ZGUyYTYsIDB4MTg3ZGUyYTYsIDB4M2IyMGQ3OWUsIDB4MmMyMTZlYWEsIDB4MmU1YTEwNmYsIA0KKwkweDNhZDJjMmU3LCAweDE5MzcyYTYzLCAweDE2NGM3ZGRkLCAweDNiZmQ1Y2M0LCAweDJhZmFkMjY5LCAweDJmNmJiZTQ0LCAweDNhODI2OWEyLCAweDE5ZWY3OTQzLCANCisJMHgxNDEzNWM5NCwgMHgzY2M1MTFkOCwgMHgyOWNkOTU3NywgMHgzMDc2MWMxNywgMHgzYTJmY2VlOCwgMHgxYWE2YzgyYiwgMHgxMWQzNDQzZiwgMHgzZDc3YjE5MSwgDQorCTB4Mjg5OWU2NGEsIDB4MzE3OTAwZDYsIDB4MzlkYWY1ZTgsIDB4MWI1ZDEwMDksIDB4MGY4Y2ZjYmQsIDB4M2UxNGZkZjcsIDB4Mjc1ZmY0NTIsIDB4MzI3NDQ0OTMsIA0KKwkweDM5ODNlMWU3LCAweDFjMTI0OWQ4LCAweDBkNDE1MDEyLCAweDNlOWNjMDc2LCAweDI2MWZlZmY5LCAweDMzNjdjMDhmLCAweDM5MmE5NjQyLCAweDFjYzY2ZTk5LCANCisJMHgwYWYxMGEyMiwgMHgzZjBlYzlmNCwgMHgyNGRhMGE5OSwgMHgzNDUzNGY0MCwgMHgzOGNmMTY2OSwgMHgxZDc5Nzc1YiwgMHgwODljZjg2NywgMHgzZjZhZjJlMywgDQorCTB4MjM4ZTc2NzMsIDB4MzUzNmNjNTIsIDB4Mzg3MTY1ZTMsIDB4MWUyYjVkMzgsIDB4MDY0NWU5YWYsIDB4M2ZiMTFiNDcsIDB4MjIzZDY2YTgsIDB4MzYxMjE0YjAsIA0KKwkweDM4MTE4ODRjLCAweDFlZGMxOTUyLCAweDAzZWNhZGNmLCAweDNmZTEyYWNiLCAweDIwZTcwZjMyLCAweDM2ZTUwNjhhLCAweDM3YWY4MTU4LCAweDFmOGJhNGRiLCANCisJMHgwMTkyMTU1ZiwgMHgzZmZiMTBjMSwgMHgxZjhiYTRkYiwgMHgzN2FmODE1OCwgMHgzNzRiNTRjZSwgMHgyMDM5ZjkwZSwgMHhmZjM2ZjE3MSwgMHgzZmZlYzQyZCwgDQorCTB4MWUyYjVkMzgsIDB4Mzg3MTY1ZTMsIDB4MzZlNTA2OGEsIDB4MjBlNzBmMzIsIDB4ZmNkYzEzNDIsIDB4M2ZlYzQzYzYsIDB4MWNjNjZlOTksIDB4MzkyYTk2NDIsIA0KKwkweDM2N2M5YTdkLCAweDIxOTJlMDlhLCAweGZhODI0YmZlLCAweDNmYzM5NWY5LCAweDFiNWQxMDA5LCAweDM5ZGFmNWU4LCAweDM2MTIxNGIwLCAweDIyM2Q2NmE4LCANCisJMHhmODJhNmM2YiwgMHgzZjg0YzhlMSwgMHgxOWVmNzk0MywgMHgzYTgyNjlhMiwgMHgzNWE1NzkzYywgMHgyMmU2OWFjNywgMHhmNWQ1NDRhOCwgMHgzZjJmZjI0OSwgDQorCTB4MTg3ZGUyYTYsIDB4M2IyMGQ3OWUsIDB4MzUzNmNjNTIsIDB4MjM4ZTc2NzMsIDB4ZjM4M2EzZTIsIDB4M2VjNTJmOWYsIDB4MTcwODg1MzAsIDB4M2JiNjI3NmQsIA0KKwkweDM0YzYxMjM2LCAweDI0MzRmMzMyLCAweGYxMzY1ODBlLCAweDNlNDRhNWVlLCAweDE1OGY5YTc1LCAweDNjNDI0MjA5LCAweDM0NTM0ZjQwLCAweDI0ZGEwYTk5LCANCisJMHhlZWVlMmQ5ZSwgMHgzZGFlODFjZSwgMHgxNDEzNWM5NCwgMHgzY2M1MTFkOCwgMHgzM2RlODdkZSwgMHgyNTdkYjY0YiwgMHhlY2FiZWYzZSwgMHgzZDAyZjc1NiwgDQorCTB4MTI5NDA2MmUsIDB4M2QzZTgyYWQsIDB4MzM2N2MwOGYsIDB4MjYxZmVmZjksIDB4ZWE3MDY1OGIsIDB4M2M0MjQyMDksIDB4MTExMWQyNjIsIDB4M2RhZTgxY2UsIA0KKwkweDMyZWVmZGU5LCAweDI2YzBiMTYyLCAweGU4M2M1NmNmLCAweDNiNmNhNGM0LCAweDBmOGNmY2JkLCAweDNlMTRmZGY3LCAweDMyNzQ0NDkzLCAweDI3NWZmNDUyLCANCisJMHhlNjEwODZiZCwgMHgzYTgyNjlhMiwgMHgwZTA1YzEzNSwgMHgzZTcxZTc1OCwgMHgzMWY3OTk0NywgMHgyN2ZkYjJhNiwgMHhlM2VkYjYyOCwgMHgzOTgzZTFlNywgDQorCTB4MGM3YzVjMWUsIDB4M2VjNTJmOWYsIDB4MzE3OTAwZDYsIDB4Mjg5OWU2NGEsIDB4ZTFkNGEyYzgsIDB4Mzg3MTY1ZTMsIDB4MGFmMTBhMjIsIDB4M2YwZWM5ZjQsIA0KKwkweDMwZjg4MDFmLCAweDI5MzQ4OTM3LCAweGRmYzYwNmYyLCAweDM3NGI1NGNlLCAweDA5NjQwODM3LCAweDNmNGVhYWZlLCAweDMwNzYxYzE3LCAweDI5Y2Q5NTc3LCANCisJMHhkZGMyOTk1OCwgMHgzNjEyMTRiMCwgMHgwN2Q1OTM5NSwgMHgzZjg0YzhlMSwgMHgyZmYxZDljNiwgMHgyYTY1MDUyNSwgMHhkYmNiMGNjZSwgMHgzNGM2MTIzNiwgDQorCTB4MDY0NWU5YWYsIDB4M2ZiMTFiNDcsIDB4MmY2YmJlNDQsIDB4MmFmYWQyNjksIDB4ZDllMDEwMDcsIDB4MzM2N2MwOGYsIDB4MDRiNTQ4MjQsIDB4M2ZkMzliNWEsIA0KKwkweDJlZTNjZWJlLCAweDJiOGVmNzdjLCAweGQ4MDI0ZDVhLCAweDMxZjc5OTQ3LCAweDAzMjNlY2JlLCAweDNmZWM0M2M2LCAweDJlNWExMDZmLCAweDJjMjE2ZWFhLCANCisJMHhkNjMyNmE4OSwgMHgzMDc2MWMxNywgMHgwMTkyMTU1ZiwgMHgzZmZiMTBjMSwgMHgyZGNlODhhOSwgMHgyY2IyMzI0YiwgMHhkNDcxMDg4NCwgMHgyZWUzY2ViZSwgDQorCTB4MDAwMDAwMDAsIDB4NDAwMDAwMDAsIDB4MmQ0MTNjY2MsIDB4MmQ0MTNjY2MsIDB4ZDJiZWMzMzQsIDB4MmQ0MTNjY2MsIDB4ZmU2ZGVhYTEsIDB4M2ZmYjEwYzEsIA0KKwkweDJjYjIzMjRiLCAweDJkY2U4OGE5LCAweGQxMWMzMTQyLCAweDJiOGVmNzdjLCAweGZjZGMxMzQyLCAweDNmZWM0M2M2LCAweDJjMjE2ZWFhLCAweDJlNWExMDZmLCANCisJMHhjZjg5ZTNlOSwgMHgyOWNkOTU3NywgMHhmYjRhYjdkYywgMHgzZmQzOWI1YSwgMHgyYjhlZjc3YywgMHgyZWUzY2ViZSwgMHhjZTA4NjZiOSwgMHgyN2ZkYjJhNiwgDQorCTB4ZjliYTE2NTEsIDB4M2ZiMTFiNDcsIDB4MmFmYWQyNjksIDB4MmY2YmJlNDQsIDB4Y2M5ODNmNzEsIDB4MjYxZmVmZjksIDB4ZjgyYTZjNmIsIDB4M2Y4NGM4ZTEsIA0KKwkweDJhNjUwNTI1LCAweDJmZjFkOWM2LCAweGNiMzllZGNhLCAweDI0MzRmMzMyLCAweGY2OWJmN2M5LCAweDNmNGVhYWZlLCAweDI5Y2Q5NTc3LCAweDMwNzYxYzE3LCANCisJMHhjOWVkZWI1MCwgMHgyMjNkNjZhOCwgMHhmNTBlZjVkZSwgMHgzZjBlYzlmNCwgMHgyOTM0ODkzNywgMHgzMGY4ODAxZiwgMHhjOGI0YWIzMiwgMHgyMDM5ZjkwZSwgDQorCTB4ZjM4M2EzZTIsIDB4M2VjNTJmOWYsIDB4Mjg5OWU2NGEsIDB4MzE3OTAwZDYsIDB4Yzc4ZTlhMWQsIDB4MWUyYjVkMzgsIDB4ZjFmYTNlY2IsIDB4M2U3MWU3NTgsIA0KKwkweDI3ZmRiMmE2LCAweDMxZjc5OTQ3LCAweGM2N2MxZTE5LCAweDFjMTI0OWQ4LCAweGYwNzMwMzQzLCAweDNlMTRmZGY3LCAweDI3NWZmNDUyLCAweDMyNzQ0NDkzLCANCisJMHhjNTdkOTY1ZSwgMHgxOWVmNzk0MywgMHhlZWVlMmQ5ZSwgMHgzZGFlODFjZSwgMHgyNmMwYjE2MiwgMHgzMmVlZmRlOSwgMHhjNDkzNWIzYywgMHgxN2MzYTkzMSwgDQorCTB4ZWQ2YmY5ZDIsIDB4M2QzZTgyYWQsIDB4MjYxZmVmZjksIDB4MzM2N2MwOGYsIDB4YzNiZGJkZjcsIDB4MTU4ZjlhNzUsIDB4ZWJlY2EzNmMsIDB4M2NjNTExZDgsIA0KKwkweDI1N2RiNjRiLCAweDMzZGU4N2RlLCAweGMyZmQwOGFhLCAweDEzNTQxMGMyLCAweGVhNzA2NThiLCAweDNjNDI0MjA5LCAweDI0ZGEwYTk5LCAweDM0NTM0ZjQwLCANCisJMHhjMjUxN2UzMiwgMHgxMTExZDI2MiwgMHhlOGY3N2FkMCwgMHgzYmI2Mjc2ZCwgMHgyNDM0ZjMzMiwgMHgzNGM2MTIzNiwgMHhjMWJiNWExMiwgMHgwZWM5YTdmMiwgDQorCTB4ZTc4MjFkNWEsIDB4M2IyMGQ3OWUsIDB4MjM4ZTc2NzMsIDB4MzUzNmNjNTIsIDB4YzEzYWQwNjEsIDB4MGM3YzVjMWUsIDB4ZTYxMDg2YmQsIDB4M2E4MjY5YTIsIA0KKwkweDIyZTY5YWM3LCAweDM1YTU3OTNjLCAweGMwZDAwZGI3LCAweDBhMmFiYjU4LCAweGU0YTJlZmY3LCAweDM5ZGFmNWU4LCAweDIyM2Q2NmE4LCAweDM2MTIxNGIwLCANCisJMHhjMDdiMzcxZiwgMHgwN2Q1OTM5NSwgMHhlMzM5OTE2NywgMHgzOTJhOTY0MiwgMHgyMTkyZTA5YSwgMHgzNjdjOWE3ZCwgMHhjMDNjNmEwNywgMHgwNTdkYjQwMiwgDQorCTB4ZTFkNGEyYzgsIDB4Mzg3MTY1ZTMsIDB4MjBlNzBmMzIsIDB4MzZlNTA2OGEsIDB4YzAxM2JjM2EsIDB4MDMyM2VjYmUsIDB4ZTA3NDViMjUsIDB4MzdhZjgxNTgsIA0KKwkweDIwMzlmOTBlLCAweDM3NGI1NGNlLCAweGMwMDEzYmQzLCAweDAwYzkwZThmLCAweGRmMThmMGNlLCAweDM2ZTUwNjhhLCAweDFmOGJhNGRiLCAweDM3YWY4MTU4LCANCisJMHhjMDA0ZWYzZiwgMHhmZTZkZWFhMSwgMHhkZGMyOTk1OCwgMHgzNjEyMTRiMCwgMHgxZWRjMTk1MiwgMHgzODExODg0YywgMHhjMDFlZDUzNSwgMHhmYzEzNTIzMSwgDQorCTB4ZGM3MTg5OGQsIDB4MzUzNmNjNTIsIDB4MWUyYjVkMzgsIDB4Mzg3MTY1ZTMsIDB4YzA0ZWU0YjksIDB4ZjliYTE2NTEsIDB4ZGIyNWY1NjcsIDB4MzQ1MzRmNDAsIA0KKwkweDFkNzk3NzViLCAweDM4Y2YxNjY5LCAweGMwOTUwZDFkLCAweGY3NjMwNzk5LCAweGQ5ZTAxMDA3LCAweDMzNjdjMDhmLCAweDFjYzY2ZTk5LCAweDM5MmE5NjQyLCANCisJMHhjMGYxMzYwYywgMHhmNTBlZjVkZSwgMHhkOGEwMGJhZSwgMHgzMjc0NDQ5MywgMHgxYzEyNDlkOCwgMHgzOTgzZTFlNywgMHhjMTYzM2Y4YSwgMHhmMmJlYWZlZSwgDQorCTB4ZDc2NjE5YjYsIDB4MzE3OTAwZDYsIDB4MWI1ZDEwMDksIDB4MzlkYWY1ZTgsIDB4YzFlYjAyMDksIDB4ZjA3MzAzNDMsIDB4ZDYzMjZhODksIDB4MzA3NjFjMTcsIA0KKwkweDFhYTZjODJiLCAweDNhMmZjZWU4LCAweGMyODg0ZTZmLCAweGVlMmNiYmMxLCAweGQ1MDUyZDk3LCAweDJmNmJiZTQ0LCAweDE5ZWY3OTQzLCAweDNhODI2OWEyLCANCisJMHhjMzNhZWUyOCwgMHhlYmVjYTM2YywgMHhkM2RlOTE1NiwgMHgyZTVhMTA2ZiwgMHgxOTM3MmE2MywgMHgzYWQyYzJlNywgMHhjNDAyYTMzYywgMHhlOWIzODIyMywgDQorCTB4ZDJiZWMzMzQsIDB4MmQ0MTNjY2MsIDB4MTg3ZGUyYTYsIDB4M2IyMGQ3OWUsIDB4YzRkZjI4NjIsIDB4ZTc4MjFkNWEsIDB4ZDFhNWVmOTEsIDB4MmMyMTZlYWEsIA0KKwkweDE3YzNhOTMxLCAweDNiNmNhNGM0LCAweGM1ZDAzMTE4LCAweGU1NTkzN2Q1LCAweGQwOTQ0MWJjLCAweDJhZmFkMjY5LCAweDE3MDg4NTMwLCAweDNiYjYyNzZkLCANCisJMHhjNmQ1NjliZSwgMHhlMzM5OTE2NywgMHhjZjg5ZTNlOSwgMHgyOWNkOTU3NywgMHgxNjRjN2RkZCwgMHgzYmZkNWNjNCwgMHhjN2VlNzdiNCwgMHhlMTIzZTZhZSwgDQorCTB4Y2U4NmZmMmEsIDB4Mjg5OWU2NGEsIDB4MTU4ZjlhNzUsIDB4M2M0MjQyMDksIDB4YzkxYWY5NzYsIDB4ZGYxOGYwY2UsIDB4Y2Q4YmJiNmQsIDB4Mjc1ZmY0NTIsIA0KKwkweDE0ZDFlMjQyLCAweDNjODRkNDk2LCAweGNhNWE4NmM0LCAweGRkMTk2NTM5LCAweGNjOTgzZjcxLCAweDI2MWZlZmY5LCAweDE0MTM1Yzk0LCAweDNjYzUxMWQ4LCANCisJMHhjYmFjYjBjMCwgMHhkYjI1ZjU2NywgMHhjYmFjYjBjMCwgMHgyNGRhMGE5OSwgMHgxMzU0MTBjMiwgMHgzZDAyZjc1NiwgMHhjZDExMDIxNywgMHhkOTNmNGU5ZSwgDQorCTB4Y2FjOTMzYWUsIDB4MjM4ZTc2NzMsIDB4MTI5NDA2MmUsIDB4M2QzZTgyYWQsIDB4Y2U4NmZmMmEsIDB4ZDc2NjE5YjYsIDB4YzllZGViNTAsIDB4MjIzZDY2YTgsIA0KKwkweDExZDM0NDNmLCAweDNkNzdiMTkxLCAweGQwMGUyNjNhLCAweGQ1OWFmYWRiLCAweGM5MWFmOTc2LCAweDIwZTcwZjMyLCAweDExMTFkMjYyLCAweDNkYWU4MWNlLCANCisJMHhkMWE1ZWY5MSwgMHhkM2RlOTE1NiwgMHhjODUwN2VhOCwgMHgxZjhiYTRkYiwgMHgxMDRmYjgwZSwgMHgzZGUyZjE0NywgMHhkMzRkY2RiNSwgMHhkMjMxNzc1NywgDQorCTB4Yzc4ZTlhMWQsIDB4MWUyYjVkMzgsIDB4MGY4Y2ZjYmQsIDB4M2UxNGZkZjcsIDB4ZDUwNTJkOTcsIDB4ZDA5NDQxYmMsIDB4YzZkNTY5YmUsIDB4MWNjNjZlOTksIA0KKwkweDBlYzlhN2YyLCAweDNlNDRhNWVlLCAweGQ2Y2I3NmM5LCAweGNmMDc3ZmUxLCAweGM2MjUwYTE4LCAweDFiNWQxMDA5LCAweDBlMDVjMTM1LCAweDNlNzFlNzU4LCANCisJMHhkOGEwMGJhZSwgMHhjZDhiYmI2ZCwgMHhjNTdkOTY1ZSwgMHgxOWVmNzk0MywgMHgwZDQxNTAxMiwgMHgzZTljYzA3NiwgMHhkYTgyNDliNSwgMHhjYzIxNzgyMiwgDQorCTB4YzRkZjI4NjIsIDB4MTg3ZGUyYTYsIDB4MGM3YzVjMWUsIDB4M2VjNTJmOWYsIDB4ZGM3MTg5OGQsIDB4Y2FjOTMzYWUsIDB4YzQ0OWQ4OTMsIDB4MTcwODg1MzAsIA0KKwkweDBiYjZlY2VmLCAweDNlZWIzMzQ3LCAweGRlNmQxZjY2LCAweGM5ODM2NTgzLCAweGMzYmRiZGY3LCAweDE1OGY5YTc1LCAweDBhZjEwYTIyLCAweDNmMGVjOWY0LCANCisJMHhlMDc0NWIyNSwgMHhjODUwN2VhOCwgMHhjMzNhZWUyOCwgMHgxNDEzNWM5NCwgMHgwYTJhYmI1OCwgMHgzZjJmZjI0OSwgMHhlMjg2ODhhNSwgMHhjNzMwZTk5NywgDQorCTB4YzJjMTdkNTMsIDB4MTI5NDA2MmUsIDB4MDk2NDA4MzcsIDB4M2Y0ZWFhZmUsIDB4ZTRhMmVmZjcsIDB4YzYyNTBhMTgsIDB4YzI1MTdlMzIsIDB4MTExMWQyNjIsIA0KKwkweDA4OWNmODY3LCAweDNmNmFmMmUzLCAweGU2YzhkNTlkLCAweGM1MmQzZDE5LCAweGMxZWIwMjA5LCAweDBmOGNmY2JkLCAweDA3ZDU5Mzk1LCAweDNmODRjOGUxLCANCisJMHhlOGY3N2FkMCwgMHhjNDQ5ZDg5MywgMHhjMThlMThhOCwgMHgwZTA1YzEzNSwgMHgwNzBkZTE3MSwgMHgzZjljMmJmYSwgMHhlYjJlMWRiZSwgMHhjMzdiMmI2YSwgDQorCTB4YzEzYWQwNjEsIDB4MGM3YzVjMWUsIDB4MDY0NWU5YWYsIDB4M2ZiMTFiNDcsIDB4ZWQ2YmY5ZDIsIDB4YzJjMTdkNTMsIDB4YzBmMTM2MGMsIDB4MGFmMTBhMjIsIA0KKwkweDA1N2RiNDAyLCAweDNmYzM5NWY5LCAweGVmYjA0N2YyLCAweGMyMWQwZWI5LCAweGMwYjE1NTAyLCAweDA5NjQwODM3LCAweDA0YjU0ODI0LCAweDNmZDM5YjVhLCANCisJMHhmMWZhM2VjYiwgMHhjMThlMThhOCwgMHhjMDdiMzcxZiwgMHgwN2Q1OTM5NSwgMHgwM2VjYWRjZiwgMHgzZmUxMmFjYiwgMHhmNDQ5MTMxMSwgMHhjMTE0Y2NiOSwgDQorCTB4YzA0ZWU0YjksIDB4MDY0NWU5YWYsIDB4MDMyM2VjYmUsIDB4M2ZlYzQzYzYsIDB4ZjY5YmY3YzksIDB4YzBiMTU1MDIsIDB4YzAyYzY0YTYsIDB4MDRiNTQ4MjQsIA0KKwkweDAyNWIwY2FlLCAweDNmZjRlNWRmLCAweGY4ZjIxZThmLCAweGMwNjNkNDA2LCAweGMwMTNiYzNhLCAweDAzMjNlY2JlLCAweDAxOTIxNTVmLCAweDNmZmIxMGMxLCANCisJMHhmYjRhYjdkYywgMHhjMDJjNjRhNiwgMHhjMDA0ZWYzZiwgMHgwMTkyMTU1ZiwgMHgwMGM5MGU4ZiwgMHgzZmZlYzQyZCwgMHhmZGE0ZjM1MiwgMHhjMDBiMWEyMQ0KK307DQorDQorY29uc3QgaW50IHR3aWRUYWI2NFs0KjYgKyAxNio2XSA9IHsNCisJMHg0MDAwMDAwMCwgMHgwMDAwMDAwMCwgMHg0MDAwMDAwMCwgMHgwMDAwMDAwMCwgMHg0MDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgyZDQxM2NjYywgMHgyZDQxM2NjYywgDQorCTB4M2IyMGQ3OWUsIDB4MTg3ZGUyYTYsIDB4MTg3ZGUyYTYsIDB4M2IyMGQ3OWUsIDB4MDAwMDAwMDAsIDB4NDAwMDAwMDAsIDB4MmQ0MTNjY2MsIDB4MmQ0MTNjY2MsIA0KKwkweGQyYmVjMzM0LCAweDJkNDEzY2NjLCAweGQyYmVjMzM0LCAweDJkNDEzY2NjLCAweDE4N2RlMmE2LCAweDNiMjBkNzllLCAweGM0ZGYyODYyLCAweGU3ODIxZDVhLCANCisNCisJMHg0MDAwMDAwMCwgMHgwMDAwMDAwMCwgMHg0MDAwMDAwMCwgMHgwMDAwMDAwMCwgMHg0MDAwMDAwMCwgMHgwMDAwMDAwMCwgMHgzZWM1MmY5ZiwgMHgwYzdjNWMxZSwgDQorCTB4M2ZiMTFiNDcsIDB4MDY0NWU5YWYsIDB4M2QzZTgyYWQsIDB4MTI5NDA2MmUsIDB4M2IyMGQ3OWUsIDB4MTg3ZGUyYTYsIDB4M2VjNTJmOWYsIDB4MGM3YzVjMWUsIA0KKwkweDM1MzZjYzUyLCAweDIzOGU3NjczLCAweDM1MzZjYzUyLCAweDIzOGU3NjczLCAweDNkM2U4MmFkLCAweDEyOTQwNjJlLCAweDI4OTllNjRhLCAweDMxNzkwMGQ2LCANCisJMHgyZDQxM2NjYywgMHgyZDQxM2NjYywgMHgzYjIwZDc5ZSwgMHgxODdkZTJhNiwgMHgxODdkZTJhNiwgMHgzYjIwZDc5ZSwgMHgyMzhlNzY3MywgMHgzNTM2Y2M1MiwgDQorCTB4Mzg3MTY1ZTMsIDB4MWUyYjVkMzgsIDB4MDY0NWU5YWYsIDB4M2ZiMTFiNDcsIDB4MTg3ZGUyYTYsIDB4M2IyMGQ3OWUsIDB4MzUzNmNjNTIsIDB4MjM4ZTc2NzMsIA0KKwkweGYzODNhM2UyLCAweDNlYzUyZjlmLCAweDBjN2M1YzFlLCAweDNlYzUyZjlmLCAweDMxNzkwMGQ2LCAweDI4OTllNjRhLCAweGUxZDRhMmM4LCAweDM4NzE2NWUzLCANCisJMHgwMDAwMDAwMCwgMHg0MDAwMDAwMCwgMHgyZDQxM2NjYywgMHgyZDQxM2NjYywgMHhkMmJlYzMzNCwgMHgyZDQxM2NjYywgMHhmMzgzYTNlMiwgMHgzZWM1MmY5ZiwgDQorCTB4Mjg5OWU2NGEsIDB4MzE3OTAwZDYsIDB4Yzc4ZTlhMWQsIDB4MWUyYjVkMzgsIDB4ZTc4MjFkNWEsIDB4M2IyMGQ3OWUsIDB4MjM4ZTc2NzMsIDB4MzUzNmNjNTIsIA0KKwkweGMxM2FkMDYxLCAweDBjN2M1YzFlLCAweGRjNzE4OThkLCAweDM1MzZjYzUyLCAweDFlMmI1ZDM4LCAweDM4NzE2NWUzLCAweGMwNGVlNGI5LCAweGY5YmExNjUxLCANCisJMHhkMmJlYzMzNCwgMHgyZDQxM2NjYywgMHgxODdkZTJhNiwgMHgzYjIwZDc5ZSwgMHhjNGRmMjg2MiwgMHhlNzgyMWQ1YSwgMHhjYWM5MzNhZSwgMHgyMzhlNzY3MywgDQorCTB4MTI5NDA2MmUsIDB4M2QzZTgyYWQsIDB4Y2U4NmZmMmEsIDB4ZDc2NjE5YjYsIDB4YzRkZjI4NjIsIDB4MTg3ZGUyYTYsIDB4MGM3YzVjMWUsIDB4M2VjNTJmOWYsIA0KKwkweGRjNzE4OThkLCAweGNhYzkzM2FlLCAweGMxM2FkMDYxLCAweDBjN2M1YzFlLCAweDA2NDVlOWFmLCAweDNmYjExYjQ3LCAweGVkNmJmOWQyLCAweGMyYzE3ZDUzIA0KK307DQorI2VuZGlmICAvL0FSTVY1RQ0KKw0KK2NvbnN0IGludCBTaG9ydFdpbmRvd1NpbmVbRlJBTUVfTEVOX1NIT1JULzJdID17ICANCisJMHgwMGM5N2ZmZiwgMHgwMjViN2ZmYSwgMHgwM2VkN2ZmMSwgMHgwNTdmN2ZlMiwgMHgwNzExN2ZjZSwgMHgwOGEyN2ZiNSwgMHgwYTMzN2Y5OCwgMHgwYmM0N2Y3NSwgDQorCTB4MGQ1NDdmNGUsIDB4MGVlNDdmMjIsIDB4MTA3MzdlZjAsIDB4MTIwMTdlYmEsIDB4MTM4ZjdlN2YsIDB4MTUxYzdlM2YsIDB4MTZhODdkZmIsIDB4MTgzMzdkYjEsIA0KKwkweDE5YmU3ZDYzLCAweDFiNDc3ZDBmLCAweDFjZDA3Y2I3LCAweDFlNTc3YzVhLCAweDFmZGQ3YmY5LCAweDIxNjI3YjkyLCAweDIyZTU3YjI3LCAweDI0Njc3YWI3LCANCisJMHgyNWU4N2E0MiwgMHgyNzY4NzljOSwgMHgyOGU1Nzk0YSwgMHgyYTYyNzhjOCwgMHgyYmRjNzg0MCwgMHgyZDU1NzdiNCwgMHgyZWNjNzcyMywgMHgzMDQyNzY4ZSwgDQorCTB4MzFiNTc1ZjQsIDB4MzMyNzc1NTYsIDB4MzQ5Nzc0YjMsIDB4MzYwNDc0MGIsIDB4Mzc3MDczNWYsIDB4MzhkOTcyYWYsIDB4M2E0MDcxZmEsIDB4M2JhNTcxNDEsIA0KKwkweDNkMDg3MDgzLCAweDNlNjg2ZmMyLCAweDNmYzY2ZWZiLCAweDQxMjE2ZTMxLCAweDQyN2E2ZDYyLCAweDQzZDE2YzhmLCAweDQ1MjQ2YmI4LCAweDQ2NzU2YWRkLCANCisJMHg0N2M0NjlmZCwgMHg0OTBmNjkxYSwgMHg0YTU4NjgzMiwgMHg0YjllNjc0NywgMHg0Y2UxNjY1NywgMHg0ZTIxNjU2NCwgMHg0ZjVlNjQ2YywgMHg1MDk4NjM3MSwgDQorCTB4NTFjZjYyNzIsIDB4NTMwMzYxNmYsIDB4NTQzMzYwNjgsIDB4NTU2MDVmNWUsIDB4NTY4YTVlNTAsIDB4NTdiMTVkM2UsIDB4NThkNDVjMjksIDB4NTlmNDViMTANCit9OworCitjb25zdCBpbnQgTG9uZ1dpbmRvd0tCRFtGUkFNRV9MRU5fTE9ORy8yXT17ICAKKwkweDAwMGE3ZmZmLCAweDAwMGU3ZmZmLCAweDAwMTI3ZmZmLCAweDAwMTU3ZmZmLCAweDAwMTk3ZmZmLCAweDAwMWM3ZmZmLCAweDAwMjA3ZmZmLCAweDAwMjM3ZmZmLCANCisJMHgwMDI2N2ZmZiwgMHgwMDJhN2ZmZiwgMHgwMDJkN2ZmZiwgMHgwMDMwN2ZmZiwgMHgwMDM0N2ZmZiwgMHgwMDM4N2ZmZiwgMHgwMDNiN2ZmZiwgMHgwMDNmN2ZmZiwgDQorCTB4MDA0MzdmZmYsIDB4MDA0NzdmZmYsIDB4MDA0YjdmZmYsIDB4MDA0ZjdmZmYsIDB4MDA1MzdmZmYsIDB4MDA1NzdmZmYsIDB4MDA1YjdmZmYsIDB4MDA2MDdmZmYsIA0KKwkweDAwNjQ3ZmZmLCAweDAwNjk3ZmZmLCAweDAwNmQ3ZmZmLCAweDAwNzI3ZmZmLCAweDAwNzc3ZmZmLCAweDAwN2M3ZmZmLCAweDAwODE3ZmZmLCAweDAwODY3ZmZmLCANCisJMHgwMDhiN2ZmZiwgMHgwMDkxN2ZmZiwgMHgwMDk2N2ZmZiwgMHgwMDljN2ZmZiwgMHgwMGExN2ZmZiwgMHgwMGE3N2ZmZiwgMHgwMGFkN2ZmZiwgMHgwMGIzN2ZmZiwgDQorCTB4MDBiOTdmZmYsIDB4MDBiZjdmZmYsIDB4MDBjNjdmZmYsIDB4MDBjYzdmZmYsIDB4MDBkMzdmZmYsIDB4MDBkYTdmZmYsIDB4MDBlMDdmZmYsIDB4MDBlNzdmZmYsIA0KKwkweDAwZWU3ZmZmLCAweDAwZjU3ZmZmLCAweDAwZmQ3ZmZmLCAweDAxMDQ3ZmZmLCAweDAxMGM3ZmZmLCAweDAxMTM3ZmZmLCAweDAxMWI3ZmZmLCAweDAxMjM3ZmZmLCANCisJMHgwMTJiN2ZmZiwgMHgwMTMzN2ZmZiwgMHgwMTNjN2ZmZSwgMHgwMTQ0N2ZmZSwgMHgwMTRkN2ZmZSwgMHgwMTU2N2ZmZSwgMHgwMTVmN2ZmZSwgMHgwMTY4N2ZmZSwgDQorCTB4MDE3MTdmZmUsIDB4MDE3YTdmZmUsIDB4MDE4MzdmZmUsIDB4MDE4ZDdmZmUsIDB4MDE5NzdmZmQsIDB4MDFhMTdmZmQsIDB4MDFhYjdmZmQsIDB4MDFiNTdmZmQsIA0KKwkweDAxYmY3ZmZkLCAweDAxY2E3ZmZkLCAweDAxZDQ3ZmZkLCAweDAxZGY3ZmZjLCAweDAxZWE3ZmZjLCAweDAxZjU3ZmZjLCAweDAyMDA3ZmZjLCAweDAyMGM3ZmZjLCANCisJMHgwMjE3N2ZmYywgMHgwMjIzN2ZmYiwgMHgwMjJmN2ZmYiwgMHgwMjNiN2ZmYiwgMHgwMjQ3N2ZmYiwgMHgwMjUzN2ZmYiwgMHgwMjYwN2ZmYSwgMHgwMjZkN2ZmYSwgDQorCTB4MDI3YTdmZmEsIDB4MDI4NzdmZmEsIDB4MDI5NDdmZjksIDB4MDJhMTdmZjksIDB4MDJhZjdmZjksIDB4MDJiYzdmZjksIDB4MDJjYTdmZjgsIDB4MDJkODdmZjgsIA0KKwkweDAyZTc3ZmY4LCAweDAyZjU3ZmY3LCAweDAzMDQ3ZmY3LCAweDAzMTI3ZmY3LCAweDAzMjE3ZmY2LCAweDAzMzE3ZmY2LCAweDAzNDA3ZmY1LCAweDAzNGY3ZmY1LCANCisJMHgwMzVmN2ZmNSwgMHgwMzZmN2ZmNCwgMHgwMzdmN2ZmNCwgMHgwMzhmN2ZmMywgMHgwM2EwN2ZmMywgMHgwM2IwN2ZmMiwgMHgwM2MxN2ZmMiwgMHgwM2QyN2ZmMSwgDQorCTB4MDNlMzdmZjEsIDB4MDNmNTdmZjAsIDB4MDQwNjdmZjAsIDB4MDQxODdmZWYsIDB4MDQyYTdmZWYsIDB4MDQzYzdmZWUsIDB4MDQ0ZjdmZWQsIDB4MDQ2MTdmZWQsIA0KKwkweDA0NzQ3ZmVjLCAweDA0ODc3ZmViLCAweDA0OWE3ZmViLCAweDA0YWU3ZmVhLCAweDA0YzE3ZmU5LCAweDA0ZDU3ZmU5LCAweDA0ZTk3ZmU4LCAweDA0ZmQ3ZmU3LCANCisJMHgwNTEyN2ZlNiwgMHgwNTI3N2ZlNSwgMHgwNTNiN2ZlNSwgMHgwNTUwN2ZlNCwgMHgwNTY2N2ZlMywgMHgwNTdiN2ZlMiwgMHgwNTkxN2ZlMSwgMHgwNWE3N2ZlMCwgDQorCTB4MDViZDdmZGYsIDB4MDVkMzdmZGUsIDB4MDVlYTdmZGQsIDB4MDYwMTdmZGMsIDB4MDYxODdmZGIsIDB4MDYyZjdmZGEsIDB4MDY0NjdmZDksIDB4MDY1ZTdmZDcsIA0KKwkweDA2NzY3ZmQ2LCAweDA2OGU3ZmQ1LCAweDA2YTY3ZmQ0LCAweDA2YmY3ZmQyLCAweDA2ZDg3ZmQxLCAweDA2ZjE3ZmQwLCAweDA3MGE3ZmNlLCAweDA3MjM3ZmNkLCANCisJMHgwNzNkN2ZjYywgMHgwNzU3N2ZjYSwgMHgwNzcxN2ZjOSwgMHgwNzhjN2ZjNywgMHgwN2E2N2ZjNSwgMHgwN2MxN2ZjNCwgMHgwN2RjN2ZjMiwgMHgwN2Y3N2ZjMCwgDQorCTB4MDgxMzdmYmYsIDB4MDgyZjdmYmQsIDB4MDg0YjdmYmIsIDB4MDg2NzdmYjksIDB4MDg4NDdmYjcsIDB4MDhhMDdmYjYsIDB4MDhiZDdmYjQsIDB4MDhkYTdmYjIsIA0KKwkweDA4Zjg3ZmFmLCAweDA5MTY3ZmFkLCAweDA5MzQ3ZmFiLCAweDA5NTI3ZmE5LCAweDA5NzA3ZmE3LCAweDA5OGY3ZmE1LCAweDA5YWU3ZmEyLCAweDA5Y2Q3ZmEwLCANCisJMHgwOWVjN2Y5ZCwgMHgwYTBjN2Y5YiwgMHgwYTJjN2Y5OCwgMHgwYTRjN2Y5NiwgMHgwYTZjN2Y5MywgMHgwYThkN2Y5MSwgMHgwYWFlN2Y4ZSwgMHgwYWNmN2Y4YiwgDQorCTB4MGFmMDdmODgsIDB4MGIxMjdmODUsIDB4MGIzMzdmODIsIDB4MGI1NTdmN2YsIDB4MGI3ODdmN2MsIDB4MGI5YTdmNzksIDB4MGJiZDdmNzYsIDB4MGJlMDdmNzMsIA0KKwkweDBjMDQ3ZjZmLCAweDBjMjc3ZjZjLCAweDBjNGI3ZjY5LCAweDBjNmY3ZjY1LCAweDBjOTM3ZjYxLCAweDBjYjg3ZjVlLCAweDBjZGQ3ZjVhLCAweDBkMDI3ZjU2LCANCisJMHgwZDI3N2Y1MywgMHgwZDRkN2Y0ZiwgMHgwZDczN2Y0YiwgMHgwZDk5N2Y0NywgMHgwZGJmN2Y0MywgMHgwZGU2N2YzZSwgMHgwZTBjN2YzYSwgMHgwZTM0N2YzNiwgDQorCTB4MGU1YjdmMzEsIDB4MGU4MzdmMmQsIDB4MGVhYTdmMjgsIDB4MGVkMzdmMjQsIDB4MGVmYjdmMWYsIDB4MGYyMzdmMWEsIDB4MGY0YzdmMTUsIDB4MGY3NTdmMTAsIA0KKwkweDBmOWY3ZjBiLCAweDBmYzg3ZjA2LCAweDBmZjI3ZjAxLCAweDEwMWM3ZWZiLCAweDEwNDc3ZWY2LCAweDEwNzE3ZWYwLCAweDEwOWM3ZWViLCAweDEwYzg3ZWU1LCANCisJMHgxMGYzN2VkZiwgMHgxMTFmN2VkYSwgMHgxMTRhN2VkNCwgMHgxMTc3N2VjZSwgMHgxMWEzN2VjNywgMHgxMWQwN2VjMSwgMHgxMWZkN2ViYiwgMHgxMjJhN2ViNCwgDQorCTB4MTI1NzdlYWUsIDB4MTI4NTdlYTcsIDB4MTJiMzdlYTAsIDB4MTJlMTdlOWEsIDB4MTMwZjdlOTMsIDB4MTMzZTdlOGMsIDB4MTM2ZDdlODQsIDB4MTM5YzdlN2QsIA0KKwkweDEzY2M3ZTc2LCAweDEzZmI3ZTZlLCAweDE0MmI3ZTY3LCAweDE0NWI3ZTVmLCAweDE0OGM3ZTU3LCAweDE0YmM3ZTRmLCAweDE0ZWQ3ZTQ3LCAweDE1MWU3ZTNmLCANCisJMHgxNTUwN2UzNywgMHgxNTgxN2UyZSwgMHgxNWIzN2UyNiwgMHgxNWU1N2UxZCwgMHgxNjE4N2UxNCwgMHgxNjRhN2UwYiwgMHgxNjdkN2UwMiwgMHgxNmIwN2RmOSwgDQorCTB4MTZlNDdkZjAsIDB4MTcxNzdkZTYsIDB4MTc0YjdkZGQsIDB4MTc3ZjdkZDMsIDB4MTdiMzdkYzksIDB4MTdlODdkYmYsIDB4MTgxZDdkYjUsIDB4MTg1MjdkYWIsIA0KKwkweDE4ODc3ZGExLCAweDE4YmM3ZDk2LCAweDE4ZjI3ZDhjLCAweDE5Mjg3ZDgxLCAweDE5NWU3ZDc2LCAweDE5OTU3ZDZiLCAweDE5Y2I3ZDYwLCAweDFhMDI3ZDU0LCANCisJMHgxYTM5N2Q0OSwgMHgxYTcxN2QzZCwgMHgxYWE4N2QzMSwgMHgxYWUwN2QyNiwgMHgxYjE4N2QxOSwgMHgxYjUwN2QwZCwgMHgxYjg5N2QwMSwgMHgxYmMyN2NmNCwgDQorCTB4MWJmYjdjZTgsIDB4MWMzNDdjZGIsIDB4MWM2ZDdjY2UsIDB4MWNhNzdjYzEsIDB4MWNlMTdjYjMsIDB4MWQxYjdjYTYsIDB4MWQ1NTdjOTgsIDB4MWQ4ZjdjOGEsIA0KKwkweDFkY2E3YzdjLCAweDFlMDU3YzZlLCAweDFlNDA3YzYwLCAweDFlN2I3YzUxLCAweDFlYjc3YzQzLCAweDFlZjM3YzM0LCAweDFmMmY3YzI1LCAweDFmNmI3YzE2LCANCisJMHgxZmE3N2MwNiwgMHgxZmU0N2JmNywgMHgyMDIxN2JlNywgMHgyMDVlN2JkNywgMHgyMDliN2JjNywgMHgyMGQ4N2JiNywgMHgyMTE2N2JhNiwgMHgyMTU0N2I5NiwgDQorCTB4MjE5MjdiODUsIDB4MjFkMDdiNzQsIDB4MjIwZTdiNjMsIDB4MjI0ZDdiNTIsIDB4MjI4YzdiNDAsIDB4MjJjYjdiMmUsIDB4MjMwYTdiMWMsIDB4MjM0OTdiMGEsIA0KKwkweDIzODk3YWY4LCAweDIzYzg3YWU2LCAweDI0MDg3YWQzLCAweDI0NDg3YWMwLCAweDI0ODk3YWFkLCAweDI0Yzk3YTlhLCAweDI1MGE3YTg2LCAweDI1NGI3YTczLCANCisJMHgyNThjN2E1ZiwgMHgyNWNkN2E0YiwgMHgyNjBlN2EzNiwgMHgyNjUwN2EyMiwgMHgyNjkxN2EwZCwgMHgyNmQzNzlmOCwgMHgyNzE1NzllMywgMHgyNzU3NzljZSwgDQorCTB4Mjc5YTc5YjgsIDB4MjdkYzc5YTMsIDB4MjgxZjc5OGQsIDB4Mjg2Mjc5NzcsIDB4MjhhNTc5NjAsIDB4MjhlODc5NGEsIDB4MjkyYjc5MzMsIDB4Mjk2Zjc5MWMsIA0KKwkweDI5YjI3OTA1LCAweDI5ZjY3OGVkLCAweDJhM2E3OGQ2LCAweDJhN2U3OGJlLCAweDJhYzI3OGE2LCAweDJiMDc3ODhkLCAweDJiNGI3ODc1LCAweDJiOTA3ODVjLCANCisJMHgyYmQ0Nzg0MywgMHgyYzE5NzgyYSwgMHgyYzVlNzgxMCwgMHgyY2E0NzdmNywgMHgyY2U5NzdkZCwgMHgyZDJlNzdjMywgMHgyZDc0NzdhOCwgMHgyZGJhNzc4ZSwgDQorCTB4MmRmZjc3NzMsIDB4MmU0NTc3NTgsIDB4MmU4Yjc3M2QsIDB4MmVkMjc3MjEsIDB4MmYxODc3MDYsIDB4MmY1ZTc2ZWEsIDB4MmZhNTc2Y2QsIDB4MmZlYzc2YjEsIA0KKwkweDMwMzI3Njk0LCAweDMwNzk3Njc3LCAweDMwYzA3NjVhLCAweDMxMDc3NjNkLCAweDMxNGU3NjFmLCAweDMxOTY3NjAxLCAweDMxZGQ3NWUzLCAweDMyMjU3NWM1LCANCisJMHgzMjZjNzVhNiwgMHgzMmI0NzU4OCwgMHgzMmZjNzU2OSwgMHgzMzQ0NzU0OSwgMHgzMzhjNzUyYSwgMHgzM2Q0NzUwYSwgMHgzNDFjNzRlYSwgMHgzNDY0NzRjYSwgDQorCTB4MzRhYzc0YTksIDB4MzRmNTc0ODgsIDB4MzUzZDc0NjcsIDB4MzU4NTc0NDYsIDB4MzVjZTc0MjQsIDB4MzYxNzc0MDMsIDB4MzY1ZjczZTEsIDB4MzZhODczYmUsIA0KKwkweDM2ZjE3MzljLCAweDM3M2E3Mzc5LCAweDM3ODM3MzU2LCAweDM3Y2M3MzMzLCAweDM4MTU3MzBmLCAweDM4NWU3MmVjLCAweDM4YTc3MmM4LCAweDM4ZjE3MmEzLCANCisJMHgzOTNhNzI3ZiwgMHgzOTgzNzI1YSwgMHgzOWNkNzIzNSwgMHgzYTE2NzIxMCwgMHgzYTYwNzFlYSwgMHgzYWE5NzFjNCwgMHgzYWYzNzE5ZSwgMHgzYjNjNzE3OCwgDQorCTB4M2I4NjcxNTEsIDB4M2JkMDcxMmIsIDB4M2MxOTcxMDQsIDB4M2M2MzcwZGMsIDB4M2NhZDcwYjUsIDB4M2NmNzcwOGQsIDB4M2Q0MDcwNjUsIDB4M2Q4YTcwM2MsIA0KKwkweDNkZDQ3MDE0LCAweDNlMWU2ZmViLCAweDNlNjg2ZmMyLCAweDNlYjE2Zjk4LCAweDNlZmI2ZjZmLCAweDNmNDU2ZjQ1LCAweDNmOGY2ZjFiLCAweDNmZDk2ZWYwLCANCisJMHg0MDIzNmVjNiwgMHg0MDZkNmU5YiwgMHg0MGI2NmU3MCwgMHg0MTAwNmU0NCwgMHg0MTRhNmUxOSwgMHg0MTk0NmRlZCwgMHg0MWRlNmRjMSwgMHg0MjI4NmQ5NCwgDQorCTB4NDI3MTZkNjgsIDB4NDJiYjZkM2IsIDB4NDMwNTZkMGQsIDB4NDM0ZjZjZTAsIDB4NDM5ODZjYjIsIDB4NDNlMjZjODQsIDB4NDQyYzZjNTYsIDB4NDQ3NTZjMjgsIA0KKwkweDQ0YmY2YmY5LCAweDQ1MDg2YmNhLCAweDQ1NTI2YjliLCAweDQ1OWI2YjZiLCAweDQ1ZTU2YjNjLCAweDQ2MmU2YjBjLCAweDQ2Nzg2YWRiLCAweDQ2YzE2YWFiLCANCisJMHg0NzBhNmE3YSwgMHg0NzUzNmE0OSwgMHg0NzljNmExOCwgMHg0N2U1NjllNywgMHg0ODJlNjliNSwgMHg0ODc3Njk4MywgMHg0OGMwNjk1MSwgMHg0OTA5NjkxZSwgDQorCTB4NDk1MjY4ZWMsIDB4NDk5YjY4YjksIDB4NDllMzY4ODUsIDB4NGEyYzY4NTIsIDB4NGE3NDY4MWUsIDB4NGFiZDY3ZWEsIDB4NGIwNTY3YjYsIDB4NGI0ZDY3ODIsIA0KKwkweDRiOTU2NzRkLCAweDRiZGU2NzE4LCAweDRjMjY2NmUzLCAweDRjNmQ2NmFlLCAweDRjYjU2Njc4LCAweDRjZmQ2NjQyLCAweDRkNDU2NjBjLCAweDRkOGM2NWQ2LCANCisJMHg0ZGQ0NjU5ZiwgMHg0ZTFiNjU2OCwgMHg0ZTYyNjUzMSwgMHg0ZWE5NjRmYSwgMHg0ZWYwNjRjMywgMHg0ZjM3NjQ4YiwgMHg0ZjdlNjQ1MywgMHg0ZmM1NjQxYiwgDQorCTB4NTAwYjYzZTIsIDB4NTA1MjYzYWEsIDB4NTA5ODYzNzEsIDB4NTBkZjYzMzgsIDB4NTEyNTYyZmUsIDB4NTE2YjYyYzUsIDB4NTFiMTYyOGIsIDB4NTFmNjYyNTEsIA0KKwkweDUyM2M2MjE3LCAweDUyODE2MWRjLCAweDUyYzc2MWEyLCAweDUzMGM2MTY3LCAweDUzNTE2MTJjLCAweDUzOTY2MGYxLCAweDUzZGI2MGI1LCAweDU0MjA2MDc5LCANCisJMHg1NDY0NjAzZCwgMHg1NGE5NjAwMSwgMHg1NGVkNWZjNSwgMHg1NTMxNWY4OCwgMHg1NTc1NWY0YiwgMHg1NWI5NWYwZSwgMHg1NWZjNWVkMSwgMHg1NjQwNWU5NCwgDQorCTB4NTY4MzVlNTYsIDB4NTZjNzVlMTgsIDB4NTcwYTVkZGEsIDB4NTc0ZDVkOWMsIDB4NTc4ZjVkNWUsIDB4NTdkMjVkMWYsIDB4NTgxNDVjZTAsIDB4NTg1NjVjYTEsIA0KKwkweDU4OTk1YzYyLCAweDU4ZGE1YzIzLCAweDU5MWM1YmUzLCAweDU5NWU1YmE0LCAweDU5OWY1YjY0LCAweDU5ZTA1YjI0LCAweDVhMjE1YWUzLCAweDVhNjI1YWEzCit9OworCisKKy8qCisgIGZvcm0gZmFjdG9yCisqLworLyogc3FydCgoKGkrKDE8PChGRl9TUVJUX0JJVFMtMikrMC41KS8yXjMxKSAqLworY29uc3QgV29yZDMyIGZvcm1mYWNfc3FydHRhYmxlWzk2XSA9IHsKKyAgMHgwMDA0MDdmOCwgMHgwMDA0MTdiOSwgMHgwMDA0MjczZiwgMHgwMDA0MzY4YywgMHgwMDA0NDVhMSwgMHgwMDA0NTQ4MywgMHgwMDA0NjMzMiwgMHgwMDA0NzFiMCwKKyAgMHgwMDA0ODAwMCwgMHgwMDA0OGUyMiwgMHgwMDA0OWMxYSwgMHgwMDA0YTllNywgMHgwMDA0Yjc4YywgMHgwMDA0YzUwYSwgMHgwMDA0ZDI2MywgMHgwMDA0ZGY5NiwKKyAgMHgwMDA0ZWNhNywgMHgwMDA0Zjk5NSwgMHgwMDA1MDY2MiwgMHgwMDA1MTMwZSwgMHgwMDA1MWY5YywgMHgwMDA1MmMwYSwgMHgwMDA1Mzg1YiwgMHgwMDA1NDQ5MCwKKyAgMHgwMDA1NTBhOCwgMHgwMDA1NWNhNSwgMHgwMDA1Njg4OCwgMHgwMDA1NzQ1MCwgMHgwMDA1ODAwMCwgMHgwMDA1OGI5NiwgMHgwMDA1OTcxNSwgMHgwMDA1YTI3YywKKyAgMHgwMDA1YWRjYywgMHgwMDA1YjkwNiwgMHgwMDA1YzQyYiwgMHgwMDA1Y2YzOSwgMHgwMDA1ZGEzMywgMHgwMDA1ZTUxOSwgMHgwMDA1ZWZlYSwgMHgwMDA1ZmFhOCwKKyAgMHgwMDA2MDU1MiwgMHgwMDA2MGZlYSwgMHgwMDA2MWE3MCwgMHgwMDA2MjRlMywgMHgwMDA2MmY0NSwgMHgwMDA2Mzk5NiwgMHgwMDA2NDNkNSwgMHgwMDA2NGUwNCwKKyAgMHgwMDA2NTgyMywgMHgwMDA2NjIzMSwgMHgwMDA2NmMzMCwgMHgwMDA2NzYxZiwgMHgwMDA2ODAwMCwgMHgwMDA2ODlkMSwgMHgwMDA2OTM5MywgMHgwMDA2OWQ0NywKKyAgMHgwMDA2YTZlZCwgMHgwMDA2YjA4NSwgMHgwMDA2YmExMCwgMHgwMDA2YzM4ZCwgMHgwMDA2Y2NmYywgMHgwMDA2ZDY1ZiwgMHgwMDA2ZGZiNSwgMHgwMDA2ZThmZSwKKyAgMHgwMDA2ZjIzYiwgMHgwMDA2ZmI2YywgMHgwMDA3MDQ5MCwgMHgwMDA3MGRhOSwgMHgwMDA3MTZiNiwgMHgwMDA3MWZiOCwgMHgwMDA3MjhhZSwgMHgwMDA3MzE5OSwKKyAgMHgwMDA3M2E3OSwgMHgwMDA3NDM0ZSwgMHgwMDA3NGMxOSwgMHgwMDA3NTRkOSwgMHgwMDA3NWQ4ZSwgMHgwMDA3NjYzYSwgMHgwMDA3NmVkYiwgMHgwMDA3Nzc3MiwKKyAgMHgwMDA3ODAwMCwgMHgwMDA3ODg4MywgMHgwMDA3OTBmZCwgMHgwMDA3OTk2ZSwgMHgwMDA3YTFkNSwgMHgwMDA3YWEzMywgMHgwMDA3YjI4OCwgMHgwMDA3YmFkNCwKKyAgMHgwMDA3YzMxOCwgMHgwMDA3Y2I1MiwgMHgwMDA3ZDM4NCwgMHgwMDA3ZGJhZCwgMHgwMDA3ZTNjZSwgMHgwMDA3ZWJlNiwgMHgwMDA3ZjNmNiwgMHgwMDA3ZmJmZQorfTsKKworCisKKy8qIQorICBcbmFtZSAgICBxdWFudGl6ZXIgYW5kIGludmVyc2UgcXVhbnRpemVyIHRhYmxlcworCisgIFxicmllZiAgIHRoZXNlIHRhYmxlcyBhcmUgdXNlZCBmb3IgdGhlIG5vbgorICAgICAgICAgICBsaW5lYXIgcXVhbnRpemVyIGFuZCBpbnZlcnNlIHF1YW50aXplcgorICAgICAgICAgICAKKyovCitjb25zdCBXb3JkMzIgbVRhYl8zXzRbNTEyXSA9IHsKKwkweDRjMWJmODI5LCAweDRjMzg4MGRlLCAweDRjNTUwNjAzLCAweDRjNzE4NzljLCAKKwkweDRjOGUwNWFhLCAweDRjYWE4MDMwLCAweDRjYzZmNzJmLCAweDRjZTM2YWFiLCAKKwkweDRjZmZkYWE0LCAweDRkMWM0NzFkLCAweDRkMzhiMDE5LCAweDRkNTUxNTlhLCAKKwkweDRkNzE3N2ExLCAweDRkOGRkNjMxLCAweDRkYWEzMTRiLCAweDRkYzY4OGYzLCAKKwkweDRkZTJkZDJhLCAweDRkZmYyZGYyLCAweDRlMWI3YjRkLCAweDRlMzdjNTNkLCAKKwkweDRlNTQwYmM1LCAweDRlNzA0ZWU2LCAweDRlOGM4ZWEzLCAweDRlYThjYWZkLCAKKwkweDRlYzUwM2Y3LCAweDRlZTEzOTkyLCAweDRlZmQ2YmQwLCAweDRmMTk5YWI0LCAKKwkweDRmMzVjNjQwLCAweDRmNTFlZTc1LCAweDRmNmUxMzU2LCAweDRmOGEzNGU0LCAKKwkweDRmYTY1MzIxLCAweDRmYzI2ZTEwLCAweDRmZGU4NWIyLCAweDRmZmE5YTBhLCAKKwkweDUwMTZhYjE4LCAweDUwMzJiOGUwLCAweDUwNGVjMzYyLCAweDUwNmFjYWExLCAKKwkweDUwODZjZWEwLCAweDUwYTJjZjVlLCAweDUwYmVjY2UwLCAweDUwZGFjNzI1LCAKKwkweDUwZjZiZTMxLCAweDUxMTJiMjA1LCAweDUxMmVhMmEzLCAweDUxNGE5MDBkLCAKKwkweDUxNjY3YTQ1LCAweDUxODI2MTRjLCAweDUxOWU0NTI0LCAweDUxYmEyNWNmLCAKKwkweDUxZDYwMzUwLCAweDUxZjFkZGE3LCAweDUyMGRiNGQ2LCAweDUyMjk4OGUwLCAKKwkweDUyNDU1OWM2LCAweDUyNjEyNzg5LCAweDUyN2NmMjJkLCAweDUyOThiOWIxLCAKKwkweDUyYjQ3ZTE5LCAweDUyZDAzZjY1LCAweDUyZWJmZDk4LCAweDUzMDdiOGI0LCAKKwkweDUzMjM3MGI5LCAweDUzM2YyNWFhLCAweDUzNWFkNzg5LCAweDUzNzY4NjU2LCAKKwkweDUzOTIzMjE1LCAweDUzYWRkYWM2LCAweDUzYzk4MDZiLCAweDUzZTUyMzA2LCAKKwkweDU0MDBjMjk4LCAweDU0MWM1ZjI0LCAweDU0MzdmOGFiLCAweDU0NTM4ZjJlLCAKKwkweDU0NmYyMmFmLCAweDU0OGFiMzMwLCAweDU0YTY0MGIzLCAweDU0YzFjYjM4LCAKKwkweDU0ZGQ1MmMyLCAweDU0ZjhkNzUzLCAweDU1MTQ1OGViLCAweDU1MmZkNzhkLCAKKwkweDU1NGI1MzM5LCAweDU1NjZjYmYzLCAweDU1ODI0MWJiLCAweDU1OWRiNDkyLCAKKwkweDU1YjkyNDdiLCAweDU1ZDQ5MTc3LCAweDU1ZWZmYjg3LCAweDU2MGI2MmFkLCAKKwkweDU2MjZjNmViLCAweDU2NDIyODQyLCAweDU2NWQ4NmI0LCAweDU2NzhlMjQyLCAKKwkweDU2OTQzYWVlLCAweDU2YWY5MGI5LCAweDU2Y2FlM2E0LCAweDU2ZTYzM2IyLCAKKwkweDU3MDE4MGU0LCAweDU3MWNjYjNiLCAweDU3MzgxMmI4LCAweDU3NTM1NzVlLCAKKwkweDU3NmU5OTJlLCAweDU3ODlkODI5LCAweDU3YTUxNDUwLCAweDU3YzA0ZGE2LCAKKwkweDU3ZGI4NDJiLCAweDU3ZjZiN2UxLCAweDU4MTFlOGM5LCAweDU4MmQxNmU2LCAKKwkweDU4NDg0MjM4LCAweDU4NjM2YWMwLCAweDU4N2U5MDgxLCAweDU4OTliMzdjLCAKKwkweDU4YjRkM2IxLCAweDU4Y2ZmMTIzLCAweDU4ZWIwYmQzLCAweDU5MDYyM2MyLCAKKwkweDU5MjEzOGYyLCAweDU5M2M0YjYzLCAweDU5NTc1YjE5LCAweDU5NzI2ODEyLCAKKwkweDU5OGQ3MjUzLCAweDU5YTg3OWRhLCAweDU5YzM3ZWFiLCAweDU5ZGU4MGM2LCAKKwkweDU5Zjk4MDJkLCAweDVhMTQ3Y2UwLCAweDVhMmY3NmUyLCAweDVhNGE2ZTM0LCAKKwkweDVhNjU2MmQ2LCAweDVhODA1NGNiLCAweDVhOWI0NDE0LCAweDVhYjYzMGIyLCAKKwkweDVhZDExYWE2LCAweDVhZWMwMWYxLCAweDViMDZlNjk2LCAweDViMjFjODk1LCAKKwkweDViM2NhN2VmLCAweDViNTc4NGE2LCAweDViNzI1ZWJjLCAweDViOGQzNjMxLCAKKwkweDViYTgwYjA2LCAweDViYzJkZDNlLCAweDViZGRhY2Q5LCAweDViZjg3OWQ4LCAKKwkweDVjMTM0NDNkLCAweDVjMmUwYzA5LCAweDVjNDhkMTNlLCAweDVjNjM5M2RjLCAKKwkweDVjN2U1M2U1LCAweDVjOTkxMTVhLCAweDVjYjNjYzNjLCAweDVjY2U4NDhkLCAKKwkweDVjZTkzYTRlLCAweDVkMDNlZDgwLCAweDVkMWU5ZTI0LCAweDVkMzk0YzNiLCAKKwkweDVkNTNmN2M3LCAweDVkNmVhMGM5LCAweDVkODk0NzQyLCAweDVkYTNlYjMzLCAKKwkweDVkYmU4YzllLCAweDVkZDkyYjg0LCAweDVkZjNjN2U1LCAweDVlMGU2MWMzLCAKKwkweDVlMjhmOTIwLCAweDVlNDM4ZGZjLCAweDVlNWUyMDU5LCAweDVlNzhiMDM3LCAKKwkweDVlOTMzZDk5LCAweDVlYWRjODdlLCAweDVlYzg1MGU5LCAweDVlZTJkNmRhLCAKKwkweDVlZmQ1YTUzLCAweDVmMTdkYjU0LCAweDVmMzI1OWUwLCAweDVmNGNkNWY2LCAKKwkweDVmNjc0Zjk5LCAweDVmODFjNmM4LCAweDVmOWMzYjg3LCAweDVmYjZhZGQ0LCAKKwkweDVmZDExZGIzLCAweDVmZWI4YjIzLCAweDYwMDVmNjI2LCAweDYwMjA1ZWJkLCAKKwkweDYwM2FjNGU5LCAweDYwNTUyOGFjLCAweDYwNmY4YTA1LCAweDYwODllOGY3LCAKKwkweDYwYTQ0NTgzLCAweDYwYmU5ZmE5LCAweDYwZDhmNzZiLCAweDYwZjM0Y2NhLCAKKwkweDYxMGQ5ZmM3LCAweDYxMjdmMDYyLCAweDYxNDIzZTllLCAweDYxNWM4YTdhLCAKKwkweDYxNzZkM2Y5LCAweDYxOTExYjFiLCAweDYxYWI1ZmUxLCAweDYxYzVhMjRkLCAKKwkweDYxZGZlMjVmLCAweDYxZmEyMDE4LCAweDYyMTQ1YjdhLCAweDYyMmU5NDg1LCAKKwkweDYyNDhjYjNiLCAweDYyNjJmZjlkLCAweDYyN2QzMWFiLCAweDYyOTc2MTY3LCAKKwkweDYyYjE4ZWQxLCAweDYyY2JiOWViLCAweDYyZTVlMmI2LCAweDYzMDAwOTMzLCAKKwkweDYzMWEyZDYyLCAweDYzMzQ0ZjQ1LCAweDYzNGU2ZWRkLCAweDYzNjg4YzJiLCAKKwkweDYzODJhNzMwLCAweDYzOWNiZmVjLCAweDYzYjZkNjYxLCAweDYzZDBlYTkwLCAKKwkweDYzZWFmYzdhLCAweDY0MDUwYzFmLCAweDY0MWYxOTgyLCAweDY0MzkyNGEyLCAKKwkweDY0NTMyZDgwLCAweDY0NmQzNDFmLCAweDY0ODczODdlLCAweDY0YTEzYTllLCAKKwkweDY0YmIzYTgxLCAweDY0ZDUzODI4LCAweDY0ZWYzMzkzLCAweDY1MDkyY2M0LCAKKwkweDY1MjMyM2JiLCAweDY1M2QxODc5LCAweDY1NTcwYjAwLCAweDY1NzBmYjUwLCAKKwkweDY1OGFlOTZiLCAweDY1YTRkNTUwLCAweDY1YmViZjAxLCAweDY1ZDhhNjgwLCAKKwkweDY1ZjI4YmNjLCAweDY2MGM2ZWU4LCAweDY2MjY0ZmQzLCAweDY2NDAyZThmLCAKKwkweDY2NWEwYjFjLCAweDY2NzNlNTdkLCAweDY2OGRiZGIwLCAweDY2YTc5M2I4LCAKKwkweDY2YzE2Nzk1LCAweDY2ZGIzOTQ5LCAweDY2ZjUwOGQ0LCAweDY3MGVkNjM2LCAKKwkweDY3MjhhMTcyLCAweDY3NDI2YTg3LCAweDY3NWMzMTc3LCAweDY3NzVmNjQzLCAKKwkweDY3OGZiOGViLCAweDY3YTk3OTcxLCAweDY3YzMzN2Q1LCAweDY3ZGNmNDE4LCAKKwkweDY3ZjZhZTNiLCAweDY4MTA2NjNmLCAweDY4MmExYzI1LCAweDY4NDNjZmVkLCAKKwkweDY4NWQ4MTk5LCAweDY4NzczMTI5LCAweDY4OTBkZTlmLCAweDY4YWE4OWZhLCAKKwkweDY4YzQzMzNkLCAweDY4ZGRkYTY3LCAweDY4Zjc3ZjdhLCAweDY5MTEyMjc3LCAKKwkweDY5MmFjMzVlLCAweDY5NDQ2MjMwLCAweDY5NWRmZWVlLCAweDY5Nzc5OTlhLCAKKwkweDY5OTEzMjMyLCAweDY5YWFjOGJhLCAweDY5YzQ1ZDMxLCAweDY5ZGRlZjk4LCAKKwkweDY5Zjc3ZmYwLCAweDZhMTEwZTNhLCAweDZhMmE5YTc3LCAweDZhNDQyNGE4LCAKKwkweDZhNWRhY2NjLCAweDZhNzczMmU2LCAweDZhOTBiNmY2LCAweDZhYWEzOGZkLCAKKwkweDZhYzNiOGZiLCAweDZhZGQzNmYyLCAweDZhZjZiMmUyLCAweDZiMTAyY2NkLCAKKwkweDZiMjlhNGIyLCAweDZiNDMxYTkyLCAweDZiNWM4ZTZmLCAweDZiNzYwMDRhLCAKKwkweDZiOGY3MDIyLCAweDZiYThkZGY5LCAweDZiYzI0OWQwLCAweDZiZGJiM2E3LCAKKwkweDZiZjUxYjgwLCAweDZjMGU4MTVhLCAweDZjMjdlNTM3LCAweDZjNDE0NzE4LCAKKwkweDZjNWFhNmZkLCAweDZjNzQwNGU3LCAweDZjOGQ2MGQ3LCAweDZjYTZiYWNlLCAKKwkweDZjYzAxMmNjLCAweDZjZDk2OGQyLCAweDZjZjJiY2UxLCAweDZkMGMwZWY5LCAKKwkweDZkMjU1ZjFkLCAweDZkM2VhZDRiLCAweDZkNTdmOTg1LCAweDZkNzE0M2NjLCAKKwkweDZkOGE4YzIxLCAweDZkYTNkMjgzLCAweDZkYmQxNmY1LCAweDZkZDY1OTc2LCAKKwkweDZkZWY5YTA4LCAweDZlMDhkOGFiLCAweDZlMjIxNTYwLCAweDZlM2I1MDI3LCAKKwkweDZlNTQ4OTAyLCAweDZlNmRiZmYxLCAweDZlODZmNGY1LCAweDZlYTAyODBlLCAKKwkweDZlYjk1OTNlLCAweDZlZDI4ODg1LCAweDZlZWJiNWUzLCAweDZmMDRlMTVhLCAKKwkweDZmMWUwYWVhLCAweDZmMzczMjk0LCAweDZmNTA1ODU5LCAweDZmNjk3YzM5LCAKKwkweDZmODI5ZTM1LCAweDZmOWJiZTRlLCAweDZmYjRkYzg1LCAweDZmY2RmOGQ5LCAKKwkweDZmZTcxMzRkLCAweDcwMDAyYmUwLCAweDcwMTk0MjkzLCAweDcwMzI1NzY3LCAKKwkweDcwNGI2YTVkLCAweDcwNjQ3Yjc2LCAweDcwN2Q4YWIxLCAweDcwOTY5ODExLCAKKwkweDcwYWZhMzk0LCAweDcwYzhhZDNkLCAweDcwZTFiNTBjLCAweDcwZmFiYjAxLCAKKwkweDcxMTNiZjFkLCAweDcxMmNjMTYxLCAweDcxNDVjMWNlLCAweDcxNWVjMDY0LCAKKwkweDcxNzdiZDI0LCAweDcxOTBiODBmLCAweDcxYTliMTI0LCAweDcxYzJhODY2LCAKKwkweDcxZGI5ZGQ0LCAweDcxZjQ5MTcwLCAweDcyMGQ4MzM5LCAweDcyMjY3MzMxLCAKKwkweDcyM2Y2MTU5LCAweDcyNTg0ZGIwLCAweDcyNzEzODM4LCAweDcyOGEyMGYxLCAKKwkweDcyYTMwN2RiLCAweDcyYmJlY2Y5LCAweDcyZDRkMDQ5LCAweDcyZWRiMWNlLCAKKwkweDczMDY5MTg3LCAweDczMWY2Zjc1LCAweDczMzg0Yjk4LCAweDczNTEyNWYzLCAKKwkweDczNjlmZTg0LCAweDczODJkNTRkLCAweDczOWJhYTRlLCAweDczYjQ3ZDg5LCAKKwkweDczY2Q0ZWZkLCAweDczZTYxZWFiLCAweDczZmVlYzk0LCAweDc0MTdiOGI4LCAKKwkweDc0MzA4MzE5LCAweDc0NDk0YmI2LCAweDc0NjIxMjkxLCAweDc0N2FkN2FhLCAKKwkweDc0OTM5YjAyLCAweDc0YWM1Yzk4LCAweDc0YzUxYzZmLCAweDc0ZGRkYTg2LCAKKwkweDc0ZjY5NmRlLCAweDc1MGY1MTc4LCAweDc1MjgwYTU0LCAweDc1NDBjMTc0LCAKKwkweDc1NTk3NmQ3LCAweDc1NzIyYTdlLCAweDc1OGFkYzY5LCAweDc1YTM4YzliLCAKKwkweDc1YmMzYjEyLCAweDc1ZDRlN2NmLCAweDc1ZWQ5MmQ0LCAweDc2MDYzYzIxLCAKKwkweDc2MWVlM2I2LCAweDc2Mzc4OTk0LCAweDc2NTAyZGJjLCAweDc2NjhkMDJlLCAKKwkweDc2ODE3MGViLCAweDc2OWEwZmYzLCAweDc2YjJhZDQ3LCAweDc2Y2I0OGU3LCAKKwkweDc2ZTNlMmQ1LCAweDc2ZmM3YjEwLCAweDc3MTUxMTlhLCAweDc3MmRhNjczLCAKKwkweDc3NDYzOTliLCAweDc3NWVjYjEzLCAweDc3Nzc1YWRjLCAweDc3OGZlOGY2LCAKKwkweDc3YTg3NTYxLCAweDc3YzEwMDFmLCAweDc3ZDk4OTMwLCAweDc3ZjIxMDk1LCAKKwkweDc4MGE5NjRkLCAweDc4MjMxYTViLCAweDc4M2I5Y2JkLCAweDc4NTQxZDc1LCAKKwkweDc4NmM5Yzg0LCAweDc4ODUxOWU5LCAweDc4OWQ5NWE2LCAweDc4YjYwZmJiLCAKKwkweDc4Y2U4ODI4LCAweDc4ZTZmZWVmLCAweDc4ZmY3NDBmLCAweDc5MTdlNzhhLCAKKwkweDc5MzA1OTVmLCAweDc5NDhjOTkwLCAweDc5NjEzODFkLCAweDc5NzlhNTA2LCAKKwkweDc5OTIxMDRjLCAweDc5YWE3OWYwLCAweDc5YzJlMWYxLCAweDc5ZGI0ODUyLCAKKwkweDc5ZjNhZDExLCAweDdhMGMxMDMxLCAweDdhMjQ3MWIwLCAweDdhM2NkMTkxLCAKKwkweDdhNTUyZmQzLCAweDdhNmQ4Yzc2LCAweDdhODVlNzdkLCAweDdhOWU0MGU2LCAKKwkweDdhYjY5OGIyLCAweDdhY2VlZWUzLCAweDdhZTc0Mzc4LCAweDdhZmY5NjczLCAKKwkweDdiMTdlN2QyLCAweDdiMzAzNzk5LCAweDdiNDg4NWM1LCAweDdiNjBkMjU5LCAKKwkweDdiNzkxZDU1LCAweDdiOTE2NmI5LCAweDdiYTlhZTg2LCAweDdiYzFmNGJjLCAKKwkweDdiZGEzOTVjLCAweDdiZjI3YzY2LCAweDdjMGFiZGRiLCAweDdjMjJmZGJiLCAKKwkweDdjM2IzYzA3LCAweDdjNTM3OGMwLCAweDdjNmJiM2U1LCAweDdjODNlZDc4LCAKKwkweDdjOWMyNTc5LCAweDdjYjQ1YmU5LCAweDdjY2M5MGM3LCAweDdjZTRjNDE0LCAKKwkweDdjZmNmNWQyLCAweDdkMTUyNjAwLCAweDdkMmQ1NDlmLCAweDdkNDU4MWIwLCAKKwkweDdkNWRhZDMyLCAweDdkNzVkNzI3LCAweDdkOGRmZjhmLCAweDdkYTYyNjZhLCAKKwkweDdkYmU0YmJhLCAweDdkZDY2ZjdkLCAweDdkZWU5MWI2LCAweDdlMDZiMjY0LCAKKwkweDdlMWVkMTg4LCAweDdlMzZlZjIyLCAweDdlNGYwYjM0LCAweDdlNjcyNWJkLCAKKwkweDdlN2YzZWJkLCAweDdlOTc1NjM2LCAweDdlYWY2YzI4LCAweDdlYzc4MDkzLCAKKwkweDdlZGY5Mzc4LCAweDdlZjdhNGQ3LCAweDdmMGZiNGIxLCAweDdmMjdjMzA3LCAKKwkweDdmM2ZjZmQ4LCAweDdmNTdkYjI1LCAweDdmNmZlNGVmLCAweDdmODdlZDM2LCAKKwkweDdmOWZmM2ZiLCAweDdmYjdmOTNlLCAweDdmY2ZmY2ZmLCAweDdmZTdmZjQwCit9OworCitjb25zdCBXb3JkMzIgbVRhYl80XzNbNTEyXT17CisJMHgzMmNiZmQ0YSwgMHgzMmVkZGQ3MCwgMHgzMzBmYzMzOSwgMHgzMzMxYWVhMywgCisJMHgzMzUzOWZhYywgMHgzMzc1OTY1MiwgMHgzMzk3OTI5NCwgMHgzM2I5OTQ3MCwgCisJMHgzM2RiOWJlNCwgMHgzM2ZkYThlZCwgMHgzNDFmYmI4YiwgMHgzNDQxZDNiYiwgCisJMHgzNDYzZjE3YywgMHgzNDg2MTRjYywgMHgzNGE4M2RhOCwgMHgzNGNhNmMxMCwgCisJMHgzNGVjYTAwMSwgMHgzNTBlZDk3OSwgMHgzNTMxMTg3NywgMHgzNTUzNWNmYSwgCisJMHgzNTc1YTZmZSwgMHgzNTk3ZjY4MywgMHgzNWJhNGI4NywgMHgzNWRjYTYwNywgCisJMHgzNWZmMDYwMywgMHgzNjIxNmI3OCwgMHgzNjQzZDY2NSwgMHgzNjY2NDZjNywgCisJMHgzNjg4YmM5ZSwgMHgzNmFiMzdlOCwgMHgzNmNkYjhhMiwgMHgzNmYwM2VjYiwgCisJMHgzNzEyY2E2MiwgMHgzNzM1NWI2NCwgMHgzNzU3ZjFkMSwgMHgzNzdhOGRhNSwgCisJMHgzNzlkMmVlMCwgMHgzN2JmZDU4MCwgMHgzN2UyODE4NCwgMHgzODA1MzJlOCwgCisJMHgzODI3ZTlhZCwgMHgzODRhYTVkMCwgMHgzODZkNjc0ZiwgMHgzODkwMmUyYSwgCisJMHgzOGIyZmE1ZCwgMHgzOGQ1Y2JlOSwgMHgzOGY4YTJjYSwgMHgzOTFiN2VmZiwgCisJMHgzOTNlNjA4OCwgMHgzOTYxNDc2MSwgMHgzOTg0MzM4YSwgMHgzOWE3MjUwMSwgCisJMHgzOWNhMWJjNCwgMHgzOWVkMTdkMSwgMHgzYTEwMTkyOCwgMHgzYTMzMWZjNiwgCisJMHgzYTU2MmJhYSwgMHgzYTc5M2NkMiwgMHgzYTljNTMzZCwgMHgzYWJmNmVlOSwgCisJMHgzYWUyOGZkNSwgMHgzYjA1YjVmZiwgMHgzYjI4ZTE2NSwgMHgzYjRjMTIwNiwgCisJMHgzYjZmNDdlMCwgMHgzYjkyODJmMiwgMHgzYmI1YzMzYSwgMHgzYmQ5MDhiNywgCisJMHgzYmZjNTM2OCwgMHgzYzFmYTM0OSwgMHgzYzQyZjg1YiwgMHgzYzY2NTI5YywgCisJMHgzYzg5YjIwOSwgMHgzY2FkMTZhMiwgMHgzY2QwODA2NSwgMHgzY2YzZWY1MSwgCisJMHgzZDE3NjM2NCwgMHgzZDNhZGM5YywgMHgzZDVlNWFmOCwgMHgzZDgxZGU3NywgCisJMHgzZGE1NjcxNywgMHgzZGM4ZjRkNiwgMHgzZGVjODdiNCwgMHgzZTEwMWZhZSwgCisJMHgzZTMzYmNjMywgMHgzZTU3NWVmMiwgMHgzZTdiMDYzYSwgMHgzZTllYjI5OCwgCisJMHgzZWMyNjQwYywgMHgzZWU2MWE5MywgMHgzZjA5ZDYyZCwgMHgzZjJkOTZkOCwgCisJMHgzZjUxNWM5MywgMHgzZjc1Mjc1YiwgMHgzZjk4ZjczMSwgMHgzZmJjY2MxMSwgCisJMHgzZmUwYTVmYywgMHg0MDA0ODRlZiwgMHg0MDI4NjhlYSwgMHg0MDRjNTFlOSwgCisJMHg0MDcwM2ZlZSwgMHg0MDk0MzJmNSwgMHg0MGI4MmFmZCwgMHg0MGRjMjgwNiwgCisJMHg0MTAwMmEwZCwgMHg0MTI0MzExMSwgMHg0MTQ4M2QxMiwgMHg0MTZjNGUwZCwgCisJMHg0MTkwNjQwMSwgMHg0MWI0N2VlZCwgMHg0MWQ4OWVjZiwgMHg0MWZjYzNhNywgCisJMHg0MjIwZWQ3MiwgMHg0MjQ1MWMzMCwgMHg0MjY5NGZkZSwgMHg0MjhkODg3ZCwgCisJMHg0MmIxYzYwOSwgMHg0MmQ2MDg4MywgMHg0MmZhNGZlOCwgMHg0MzFlOWMzNywgCisJMHg0MzQyZWQ3MCwgMHg0MzY3NDM5MCwgMHg0MzhiOWU5NiwgMHg0M2FmZmU4MiwgCisJMHg0M2Q0NjM1MSwgMHg0M2Y4Y2QwMywgMHg0NDFkM2I5NSwgMHg0NDQxYWYwOCwgCisJMHg0NDY2Mjc1OCwgMHg0NDhhYTQ4NywgMHg0NGFmMjY5MCwgMHg0NGQzYWQ3NSwgCisJMHg0NGY4MzkzMywgMHg0NTFjYzljOCwgMHg0NTQxNWYzNSwgMHg0NTY1Zjk3NywgCisJMHg0NThhOTg4ZCwgMHg0NWFmM2M3NiwgMHg0NWQzZTUzMSwgMHg0NWY4OTJiYywgCisJMHg0NjFkNDUxNiwgMHg0NjQxZmMzZSwgMHg0NjY2YjgzMiwgMHg0NjhiNzhmMiwgCisJMHg0NmIwM2U3YywgMHg0NmQ1MDhjZiwgMHg0NmY5ZDdlOSwgMHg0NzFlYWJjYSwgCisJMHg0NzQzODQ3MCwgMHg0NzY4NjFkOSwgMHg0NzhkNDQwNiwgMHg0N2IyMmFmMywgCisJMHg0N2Q3MTZhMSwgMHg0N2ZjMDcwZSwgMHg0ODIwZmMzOSwgMHg0ODQ1ZjYyMCwgCisJMHg0ODZhZjRjMywgMHg0ODhmZjgyMCwgMHg0OGI1MDAzNSwgMHg0OGRhMGQwMywgCisJMHg0OGZmMWU4NywgMHg0OTI0MzRjMCwgMHg0OTQ5NGZhZCwgMHg0OTZlNmY0ZCwgCisJMHg0OTkzOTM5ZiwgMHg0OWI4YmNhMiwgMHg0OWRkZWE1NCwgMHg0YTAzMWNiNCwgCisJMHg0YTI4NTNjMSwgMHg0YTRkOGY3YSwgMHg0YTcyY2ZkZSwgMHg0YTk4MTRlYiwgCisJMHg0YWJkNWVhMSwgMHg0YWUyYWNmZCwgMHg0YjA4MDAwMCwgMHg0YjJkNTdhOCwgCisJMHg0YjUyYjNmMywgMHg0Yjc4MTRlMSwgMHg0YjlkN2E3MCwgMHg0YmMyZTQ5ZiwgCisJMHg0YmU4NTM2ZSwgMHg0YzBkYzZkYiwgMHg0YzMzM2VlNCwgMHg0YzU4YmI4OSwgCisJMHg0YzdlM2NjOSwgMHg0Y2EzYzJhMiwgMHg0Y2M5NGQxNCwgMHg0Y2VlZGMxYywgCisJMHg0ZDE0NmZiYiwgMHg0ZDNhMDdlZiwgMHg0ZDVmYTRiNiwgMHg0ZDg1NDYxMSwgCisJMHg0ZGFhZWJmZCwgMHg0ZGQwOTY3OSwgMHg0ZGY2NDU4NSwgMHg0ZTFiZjkxZiwgCisJMHg0ZTQxYjE0NiwgMHg0ZTY3NmRmYSwgMHg0ZThkMmYzOCwgMHg0ZWIyZjUwMSwgCisJMHg0ZWQ4YmY1MiwgMHg0ZWZlOGUyYiwgMHg0ZjI0NjE4YSwgMHg0ZjRhMzk3MCwgCisJMHg0ZjcwMTVkOSwgMHg0Zjk1ZjZjNiwgMHg0ZmJiZGMzNiwgMHg0ZmUxYzYyNiwgCisJMHg1MDA3YjQ5NywgMHg1MDJkYTc4NywgMHg1MDUzOWVmNSwgMHg1MDc5OWFlMSwgCisJMHg1MDlmOWI0OCwgMHg1MGM1YTAyYSwgMHg1MGViYTk4NSwgMHg1MTExYjc1YSwgCisJMHg1MTM3YzlhNiwgMHg1MTVkZTA2OSwgMHg1MTgzZmJhMiwgMHg1MWFhMWI0ZiwgCisJMHg1MWQwM2Y3MCwgMHg1MWY2NjgwMywgMHg1MjFjOTUwOCwgMHg1MjQyYzY3ZCwgCisJMHg1MjY4ZmM2MiwgMHg1MjhmMzZiNSwgMHg1MmI1NzU3NSwgMHg1MmRiYjhhMiwgCisJMHg1MzAyMDAzYSwgMHg1MzI4NGMzYywgMHg1MzRlOWNhOCwgMHg1Mzc0ZjE3YywgCisJMHg1MzliNGFiNywgMHg1M2MxYTg1OCwgMHg1M2U4MGE1ZiwgMHg1NDBlNzBjYSwgCisJMHg1NDM0ZGI5OCwgMHg1NDViNGFjOCwgMHg1NDgxYmU1YSwgMHg1NGE4MzY0YiwgCisJMHg1NGNlYjI5YywgMHg1NGY1MzM0YywgMHg1NTFiYjg1OCwgMHg1NTQyNDFjMSwgCisJMHg1NTY4Y2Y4NSwgMHg1NThmNjFhMywgMHg1NWI1ZjgxYiwgMHg1NWRjOTJlYiwgCisJMHg1NjAzMzIxMiwgMHg1NjI5ZDU5MCwgMHg1NjUwN2Q2MywgMHg1Njc3Mjk4YSwgCisJMHg1NjlkZGEwNSwgMHg1NmM0OGVkMywgMHg1NmViNDdmMiwgMHg1NzEyMDU2MiwgCisJMHg1NzM4YzcyMSwgMHg1NzVmOGQyZiwgMHg1Nzg2NTc4YSwgMHg1N2FkMjYzMywgCisJMHg1N2QzZjkyNywgMHg1N2ZhZDA2NiwgMHg1ODIxYWJlZiwgMHg1ODQ4OGJjMCwgCisJMHg1ODZmNmZkYSwgMHg1ODk2NTgzYiwgMHg1OGJkNDRlMiwgMHg1OGU0MzVjZSwgCisJMHg1OTBiMmFmZiwgMHg1OTMyMjQ3MywgMHg1OTU5MjIyOSwgMHg1OTgwMjQyMCwgCisJMHg1OWE3MmE1OSwgMHg1OWNlMzRkMCwgMHg1OWY1NDM4NywgMHg1YTFjNTY3YiwgCisJMHg1YTQzNmRhYywgMHg1YTZhODkxOSwgMHg1YTkxYThjMSwgMHg1YWI4Y2NhMywgCisJMHg1YWRmZjRiZSwgMHg1YjA3MjExMSwgMHg1YjJlNTE5YywgMHg1YjU1ODY1ZSwgCisJMHg1YjdjYmY1NCwgMHg1YmEzZmM4MCwgMHg1YmNiM2RkZiwgMHg1YmYyODM3MSwgCisJMHg1YzE5Y2QzNSwgMHg1YzQxMWIyYSwgMHg1YzY4NmQ0ZiwgMHg1YzhmYzNhNCwgCisJMHg1Y2I3MWUyNywgMHg1Y2RlN2NkNywgMHg1ZDA1ZGZiNCwgMHg1ZDJkNDZiZCwgCisJMHg1ZDU0YjFmMCwgMHg1ZDdjMjE0ZSwgMHg1ZGEzOTRkNCwgMHg1ZGNiMGM4MywgCisJMHg1ZGYyODg1OSwgMHg1ZTFhMDg1NiwgMHg1ZTQxOGM3OCwgMHg1ZTY5MTRiZSwgCisJMHg1ZTkwYTEyOSwgMHg1ZWI4MzFiNywgMHg1ZWRmYzY2NywgMHg1ZjA3NWYzOCwgCisJMHg1ZjJlZmMyOSwgMHg1ZjU2OWQzYSwgMHg1ZjdlNDI2YSwgMHg1ZmE1ZWJiNywgCisJMHg1ZmNkOTkyMSwgMHg1ZmY1NGFhOCwgMHg2MDFkMDA0YSwgMHg2MDQ0YmEwNiwgCisJMHg2MDZjNzdkYywgMHg2MDk0MzljYSwgMHg2MGJiZmZkMCwgMHg2MGUzYzllZSwgCisJMHg2MTBiOTgyMSwgMHg2MTMzNmE2YSwgMHg2MTViNDBjOCwgMHg2MTgzMWIzOSwgCisJMHg2MWFhZjliZCwgMHg2MWQyZGM1MywgMHg2MWZhYzJmYSwgMHg2MjIyYWRiMiwgCisJMHg2MjRhOWM3OSwgMHg2MjcyOGY0ZiwgMHg2MjlhODYzMywgMHg2MmMyODEyMywgCisJMHg2MmVhODAyMCwgMHg2MzEyODMyOSwgMHg2MzNhOGEzYywgMHg2MzYyOTU1OSwgCisJMHg2MzhhYTQ3ZiwgMHg2M2IyYjdhZCwgMHg2M2RhY2VlMiwgMHg2NDAyZWExZSwgCisJMHg2NDJiMDk2MCwgMHg2NDUzMmNhNiwgMHg2NDdiNTNmMSwgMHg2NGEzN2YzZiwgCisJMHg2NGNiYWU4ZiwgMHg2NGYzZTFlMiwgMHg2NTFjMTkzNSwgMHg2NTQ0NTQ4OCwgCisJMHg2NTZjOTNkYiwgMHg2NTk0ZDcyYywgMHg2NWJkMWU3YiwgMHg2NWU1NjljNywgCisJMHg2NjBkYjkwZiwgMHg2NjM2MGM1MywgMHg2NjVlNjM5MSwgMHg2Njg2YmVjOSwgCisJMHg2NmFmMWRmYSwgMHg2NmQ3ODEyMywgMHg2NmZmZTg0NCwgMHg2NzI4NTM1YiwgCisJMHg2NzUwYzI2OCwgMHg2Nzc5MzU2YiwgMHg2N2ExYWM2MiwgMHg2N2NhMjc0YywgCisJMHg2N2YyYTYyOSwgMHg2ODFiMjhmOSwgMHg2ODQzYWZiOSwgMHg2ODZjM2E2YSwgCisJMHg2ODk0YzkwYiwgMHg2OGJkNWI5YiwgMHg2OGU1ZjIxOSwgMHg2OTBlOGM4NCwgCisJMHg2OTM3MmFkZCwgMHg2OTVmY2QyMSwgMHg2OTg4NzM1MCwgMHg2OWIxMWQ2YSwgCisJMHg2OWQ5Y2I2ZCwgMHg2YTAyN2Q1YSwgMHg2YTJiMzMyZiwgMHg2YTUzZWNlYiwgCisJMHg2YTdjYWE4ZCwgMHg2YWE1NmMxNiwgMHg2YWNlMzE4NCwgMHg2YWY2ZmFkNiwgCisJMHg2YjFmYzgwYywgMHg2YjQ4OTkyNSwgMHg2YjcxNmUyMCwgMHg2YjlhNDZmZCwgCisJMHg2YmMzMjNiYiwgMHg2YmVjMDQ1OCwgMHg2YzE0ZThkNSwgMHg2YzNkZDEzMCwgCisJMHg2YzY2YmQ2OSwgMHg2YzhmYWQ4MCwgMHg2Y2I4YTE3MiwgMHg2Y2UxOTk0MCwgCisJMHg2ZDBhOTRlOSwgMHg2ZDMzOTQ2ZCwgMHg2ZDVjOTdjYSwgMHg2ZDg1OWVmZiwgCisJMHg2ZGFlYWEwZCwgMHg2ZGQ3YjhmMSwgMHg2ZTAwY2JhZCwgMHg2ZTI5ZTIzZSwgCisJMHg2ZTUyZmNhNCwgMHg2ZTdjMWFkZiwgMHg2ZWE1M2NlZSwgMHg2ZWNlNjJjZiwgCisJMHg2ZWY3OGM4MywgMHg2ZjIwYmEwOSwgMHg2ZjQ5ZWI1ZiwgMHg2ZjczMjA4NSwgCisJMHg2ZjljNTk3YiwgMHg2ZmM1OTY0MCwgMHg2ZmVlZDZkMywgMHg3MDE4MWIzMywgCisJMHg3MDQxNjM2MCwgMHg3MDZhYWY1OSwgMHg3MDkzZmYxZCwgMHg3MGJkNTJhYiwgCisJMHg3MGU2YWEwNCwgMHg3MTEwMDUyNSwgMHg3MTM5NjQwZiwgMHg3MTYyYzZjMSwgCisJMHg3MThjMmQzYSwgMHg3MWI1OTc3YSwgMHg3MWRmMDU3ZiwgMHg3MjA4Nzc0OSwgCisJMHg3MjMxZWNkOCwgMHg3MjViNjYyYSwgMHg3Mjg0ZTMzZiwgMHg3MmFlNjQxNywgCisJMHg3MmQ3ZThiMCwgMHg3MzAxNzEwYSwgMHg3MzJhZmQyNCwgMHg3MzU0OGNmZSwgCisJMHg3MzdlMjA5NywgMHg3M2E3YjdlZSwgMHg3M2QxNTMwMywgMHg3M2ZhZjFkNSwgCisJMHg3NDI0OTQ2MiwgMHg3NDRlM2FhYywgMHg3NDc3ZTRiMCwgMHg3NGExOTI2ZSwgCisJMHg3NGNiNDNlNiwgMHg3NGY0ZjkxNywgMHg3NTFlYjIwMSwgMHg3NTQ4NmVhMSwgCisJMHg3NTcyMmVmOSwgMHg3NTliZjMwNywgMHg3NWM1YmFjYSwgMHg3NWVmODY0MiwgCisJMHg3NjE5NTU2ZiwgMHg3NjQzMjg0ZiwgMHg3NjZjZmVlMiwgMHg3Njk2ZDkyOCwgCisJMHg3NmMwYjcxZiwgMHg3NmVhOThjNywgMHg3NzE0N2UyMCwgMHg3NzNlNjcyOCwgCisJMHg3NzY4NTNkZiwgMHg3NzkyNDQ0NSwgMHg3N2JjMzg1OCwgMHg3N2U2MzAxOSwgCisJMHg3ODEwMmI4NSwgMHg3ODNhMmE5ZSwgMHg3ODY0MmQ2MiwgMHg3ODhlMzNkMSwgCisJMHg3OGI4M2RlOSwgMHg3OGUyNGJhYiwgMHg3OTBjNWQxNSwgMHg3OTM2NzIyOCwgCisJMHg3OTYwOGFlMSwgMHg3OThhYTc0MiwgMHg3OWI0Yzc0OCwgMHg3OWRlZWFmNCwgCisJMHg3YTA5MTI0NSwgMHg3YTMzM2QzYSwgMHg3YTVkNmJkMiwgMHg3YTg3OWUwZSwgCisJMHg3YWIxZDNlYywgMHg3YWRjMGQ2YiwgMHg3YjA2NGE4YywgMHg3YjMwOGI0ZCwgCisJMHg3YjVhY2ZhZSwgMHg3Yjg1MTdhZSwgMHg3YmFmNjM0YywgMHg3YmQ5YjI4OSwgCisJMHg3YzA0MDU2MywgMHg3YzJlNWJkYSwgMHg3YzU4YjVlYywgMHg3YzgzMTM5YiwgCisJMHg3Y2FkNzRlNCwgMHg3Y2Q3ZDljNywgMHg3ZDAyNDI0NCwgMHg3ZDJjYWU1YSwgCisJMHg3ZDU3MWUwOSwgMHg3ZDgxOTE0ZiwgMHg3ZGFjMDgyZCwgMHg3ZGQ2ODJhMSwgCisJMHg3ZTAxMDBhYywgMHg3ZTJiODI0YiwgMHg3ZTU2MDc4MCwgMHg3ZTgwOTA0OCwgCisJMHg3ZWFiMWNhNSwgMHg3ZWQ1YWM5NCwgMHg3ZjAwNDAxNSwgMHg3ZjJhZDcyOSwgCisJMHg3ZjU1NzFjZCwgMHg3ZjgwMTAwMywgMHg3ZmFhYjFjOCwgMHg3ZmQ1NTcxZAorfTsKKworDQorY29uc3QgV29yZDMyIGludlNCRlsyNF0gPSB7DQorICAweDNGRkQzNEZDLCAweDJEM0Y4MDAwLCAweDI0RjE4QzdFLCAweDFGRkU5QTdFLCANCisgIDB4MUM5REYxMEMsIDB4MUExRjg1MUEsIDB4MTgyRkU5OTQsIDB4MTY5RkMwMDAsIA0KKyAgMHgxNTU0MkFBQSwgMHgxNDNDMzFDMiwgMHgxMzRCMUI2QywgMHgxMjc5MjBCRSwgDQorICAweDExQkYyRkNDLCAweDExMUE3NDlFLCAweDEwODVGQzQyLCAweDBGRkZBN0JFLCANCisgIDB4MEY4NTU4MTgsIDB4MEYxNEVFNTYsIDB4MEVBRTZBNzgsIDB4MEU0RUY4ODYsIA0KKyAgMHgwREY2OTg4MCwgMHgwREE0OTU2OCwgMHgwRDU3ODU0MiwgMHgwRDEwMUQwQw0KK307DQorCitjb25zdCBXb3JkMTYgcG93MnRvbWludXNOb3ZlcjE2WzE3XSA9IHsKKyAgMHg3ZmZmLCAweDdhOTMsIDB4NzU2MCwgMHg3MDY2LAorICAweDZiYTIsIDB4NjcxMiwgMHg2MmI0LCAweDVlODQsCisgIDB4NWE4MiwgMHg1NmFjLCAweDUyZmYsIDB4NGY3YiwKKyAgMHg0YzFjLCAweDQ4ZTIsIDB4NDVjYiwgMHg0MmQ1LAorICAweDQwMDAKK307DQorDQorY29uc3QgV29yZDE2IHNpZGVJbmZvVGFiTG9uZ1tNQVhfU0ZCX0xPTkcgKyAxXSA9IHsNCisgIDksIDksIDksIDksIDksIDksIDksIDksIDksIA0KKyAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgDQorICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCANCisgIDksIDksIDksIDksIDE0LCAxNCwgMTQsIDE0LCANCisgIDE0LCAxNCwgMTQsIDE0LCAxNCwgMTQsIDE0LCANCisgIDE0LCAxNCwgMTQsIDE0LCAxNCwgMTQsIDE0LCANCisgIDE0LCAxNCwgMTQNCit9Ow0KKw0KK2NvbnN0IFdvcmQxNiBzaWRlSW5mb1RhYlNob3J0W01BWF9TRkJfU0hPUlQgKyAxXSA9IHsNCisgIDcsIDcsIDcsIDcsIDcsIDcsIDcsIDEwLCAxMCwgDQorICAxMCwgMTAsIDEwLCAxMCwgMTAsIDEzLCAxMw0KK307CisKK1dvcmQzMiBzcGVjRXhwTWFudFRhYmxlQ29tYl9lbmNbNF1bMTRdID0KK3sKKyAgezB4NDAwMDAwMDAsICAweDUwYTI4YmU2LCAgMHg2NTk3ZmE5NSwgIDB4NDAwMDAwMDAsIAorICAgMHg1MGEyOGJlNiwgIDB4NjU5N2ZhOTUsICAweDQwMDAwMDAwLCAgMHg1MGEyOGJlNiwgCisgICAweDY1OTdmYTk1LCAgMHg0MDAwMDAwMCwgIDB4NTBhMjhiZTYsICAweDY1OTdmYTk1LCAKKyAgIDB4NDAwMDAwMDAsICAweDUwYTI4YmU2fSwgCisKKyAgezB4NGMxYmY4MjksICAweDVmZTQ0MzVlLCAgMHg3OGQwZGY5YywgIDB4NGMxYmY4MjksIAorICAgMHg1ZmU0NDM1ZSwgIDB4NzhkMGRmOWMsICAweDRjMWJmODI5LCAgMHg1ZmU0NDM1ZSwgCisgICAweDc4ZDBkZjljLCAgMHg0YzFiZjgyOSwgIDB4NWZlNDQzNWUsICAweDc4ZDBkZjljLCAKKyAgIDB4NGMxYmY4MjksICAweDVmZTQ0MzVlfSwgCisKKyAgezB4NWE4Mjc5OWEsICAweDcyMDhmODFkLCAgMHg0N2Q2NmIwZiwgIDB4NWE4Mjc5OWEsIAorICAgMHg3MjA4ZjgxZCwgIDB4NDdkNjZiMGYsICAweDVhODI3OTlhLCAgMHg3MjA4ZjgxZCwgCisgICAweDQ3ZDY2YjBmLCAgMHg1YTgyNzk5YSwgIDB4NzIwOGY4MWQsICAweDQ3ZDY2YjBmLCAKKyAgIDB4NWE4Mjc5OWEsICAweDcyMDhmODFkfSwgCisKKyAgezB4NmJhMjdlNjUsICAweDQzY2UzZTRiLCAgMHg1NTZlMDQyNCwgIDB4NmJhMjdlNjUsIAorICAgMHg0M2NlM2U0YiwgIDB4NTU2ZTA0MjQsICAweDZiYTI3ZTY1LCAgMHg0M2NlM2U0YiwgCisgICAweDU1NmUwNDI0LCAgMHg2YmEyN2U2NSwgIDB4NDNjZTNlNGIsICAweDU1NmUwNDI0LCAKKyAgIDB4NmJhMjdlNjUsICAweDQzY2UzZTRifQorfTsKKworY29uc3QgIFVXb3JkOCBzcGVjRXhwVGFibGVDb21iX2VuY1s0XVsxNF0gPQoreworICB7MSwgMiwgMywgNSwgNiwgNywgOSwgMTAsIDExLCAxMywgMTQsIDE1LCAxNywgMTh9LAorICB7MSwgMiwgMywgNSwgNiwgNywgOSwgMTAsIDExLCAxMywgMTQsIDE1LCAxNywgMTh9LAorICB7MSwgMiwgNCwgNSwgNiwgOCwgOSwgMTAsIDEyLCAxMywgMTQsIDE2LCAxNywgMTh9LAorICB7MSwgMywgNCwgNSwgNywgOCwgOSwgMTEsIDEyLCAxMywgMTUsIDE2LCAxNywgMTl9Cit9OworCitjb25zdCBXb3JkMTYgcXVhbnRCb3JkZXJzWzRdWzRdID0gew0KKyAgLyogcG93KDEuMC0wLjQwNTQsIDQvMykvMTYgKiBwb3coMiwgKDAuLjMpLzQpICovDQorICB7MHgwNDAwLCAweDBlZTcsIDB4MWM4NiwgMHgyYzBkfSwNCisgIC8qIHBvdygyLjAtMC40MDU0LCA0LzMpLzE2ICogcG93KDIsICgwLi4zKS80KSAqLw0KKyAgezB4MDRjMiwgMHgxMWI5LCAweDIxZWIsIDB4MzQ2M30sDQorICAvKiBwb3coMy4wLTAuNDA1NCwgNC8zKS8xNiAqIHBvdygyLCAoMC4uMykvNCkgKi8NCisgIHsweDA1YTgsIDB4MTUxNCwgMHgyODU2LCAweDNlNGN9LA0KKyAgLyogcG93KDQuMC0wLjQwNTQsIDQvMykvMTYgKiBwb3coMiwgKDAuLjMpLzQpICovDQorICB7MHgwNmJhLCAweDE5MTEsIDB4MmZmOCwgMHg0YTE2fSwNCit9Ow0KKworY29uc3QgV29yZDE2IHF1YW50UmVjb25bNF1bM10gPSB7DQorICB7MHgwODAwLCAweDE0MjksIDB4MjI5ZH0sDQorICB7MHgwOTgzLCAweDE3ZjksIDB4MjkyYX0sDQorICB7MHgwYjUwLCAweDFjODIsIDB4MzBmNH0sDQorICB7MHgwZDc0LCAweDIxZTcsIDB4M2EzN30sDQorfTsKKworY29uc3QgaW50IHNhbXBSYXRlVGFiW05VTV9TQU1QTEVfUkFURVNdID0gew0KKyAgICA5NjAwMCwgODgyMDAsIDY0MDAwLCA0ODAwMCwgNDQxMDAsIDMyMDAwLCANCisJMjQwMDAsIDIyMDUwLCAxNjAwMCwgMTIwMDAsIDExMDI1LCAgODAwMA0KK307CisKKworY29uc3QgaW50CXJhdGVzWzhdID0gewkJDQorCTE2MCwgMjQwLCAzMjAsIDQwMCwgNDgwLCA1NjAsIDY0MCwgMA0KK307DQorCitjb25zdCBpbnQgQmFuZHdpdGhDb2VmVGFiWzhdW05VTV9TQU1QTEVfUkFURVNdID0geworCXsgNzAwMCwgIDcwMDAsICA0NjY2LCAgMzUwMCwgIDM1MDAsICAyODAwLCAgMjgwMCwgIDI4MDAsICAyODAwLCAgMjAwMCwgIDIwMDAsICAyMDAwfSwKKwl7MTIwMDAsIDEyMDAwLCAgODAwMCwgIDYwMDAsICA2MDAwLCAgNjAwMCwgIDQwMDAsICA0MDAwLCAgNDAwMCwgIDMwMDAsICAzMDAwLCAgMzAwMH0sCisJezE4MDAwLCAxODAwMCwgMTIwMDAsICA5MDAwLCAgOTAwMCwgIDkwMDAsICA3MDAwLCAgNzAwMCwgIDcwMDAsICA1MDAwLCAgNTAwMCwgIDUwMDB9LAorCXsyMDAwMCwgMjAwMDAsIDE2MDAwLCAxMjAwMCwgMTIwMDAsIDEyMDAwLCAgOTAwMCwgIDkwMDAsICA5MDAwLCAgNjAwMCwgIDYwMDAsICA2MDAwfSwKKwl7MjAwMDAsIDIwMDAwLCAxODY2NiwgMTQwMDAsIDE0MDAwLCAxNDAwMCwgMTAwMDAsIDEwMDAwLCAxMDAwMCwgIDcwMDAsICA3MDAwLCAgNzAwMH0sCisJezIwMDAwLCAyMDAwMCwgMjAwMDAsIDE2MDAwLCAxNjAwMCwgMTYwMDAsIDEyMDAwLCAxMjAwMCwgMTIwMDAsICA4MDAwLCAgODAwMCwgIDgwMDB9LAorCXsyMDAwMCwgMjAwMDAsIDIwMDAwLCAyMDAwMCwgMjAwMDAsIDIwMDAwLCAxNTAwMCwgMTUwMDAsIDE1MDAwLCAxMDAwMCwgMTAwMDAsIDEwMDAwfSwKKwl7MjAwMDAsIDIwMDAwLCAyMDAwMCwgMjAwMDAsIDIwMDAwLCAyMDAwMCwgMjAwMDAsIDIwMDAwLCAyMDAwMCwgMjAwMDAsIDIwMDAwLCAyMDAwMH0KK307CisKKworLyogdG90YWwgbnVtYmVyIG9mIHNjYWxlIGZhY3RvciBiYW5kcyBpbiBvbmUgd2luZG93ICovDQorY29uc3QgVVdvcmQ4IHNmQmFuZFRvdGFsU2hvcnRbTlVNX1NBTVBMRV9SQVRFU10gPSB7DQorICAgIDEyLCAxMiwgMTIsIDE0LCAxNCwgMTQsIDE1LCAxNSwgMTUsIDE1LCAxNSwgMTUNCit9Ow0KKw0KK2NvbnN0IFVXb3JkOCBzZkJhbmRUb3RhbExvbmdbTlVNX1NBTVBMRV9SQVRFU10gPSB7DQorICAgIDQxLCA0MSwgNDcsIDQ5LCA0OSwgNTEsIDQ3LCA0NywgNDMsIDQzLCA0MywgNDANCit9Ow0KKw0KKy8qIHNjYWxlIGZhY3RvciBiYW5kIHRhYmxlcyAqLw0KK2NvbnN0IGludCBzZkJhbmRUYWJTaG9ydE9mZnNldFtOVU1fU0FNUExFX1JBVEVTXSA9IHswLCAwLCAwLCAxMywgMTMsIDEzLCAyOCwgMjgsIDQ0LCA0NCwgNDQsIDYwfTsNCisNCitjb25zdCBzaG9ydCBzZkJhbmRUYWJTaG9ydFs3Nl0gPSB7DQorCS8qIHNob3J0IGJsb2NrIDY0LCA4OCwgOTYga0h6IFsxM10gICovDQorCTAsICAgNCwgICA4LCAgMTIsICAxNiwgIDIwLCAgMjQsICAzMiwgIDQwLCAgNDgsICA2NCwgIDkyLCAxMjgsDQorDQorCS8qIHNob3J0IGJsb2NrIDMyLCA0NCwgNDgga0h6IFsxNV0gICovDQorCTAsICAgNCwgICA4LCAgMTIsICAxNiwgIDIwLCAgMjgsICAzNiwgIDQ0LCAgNTYsICA2OCwgIDgwLCAgOTYsIDExMiwgMTI4LA0KKw0KKwkvKiBzaG9ydCBibG9jayAyMiwgMjQga0h6IFsxNl0gICovDQorCTAsICAgNCwgICA4LCAgMTIsICAxNiwgIDIwLCAgMjQsICAyOCwgIDM2LCAgNDQsICA1MiwgIDY0LCAgNzYsICA5MiwgMTA4LCAxMjgsDQorDQorCS8qIHNob3J0IGJsb2NrIDExLCAxMiwgMTYga0h6IFsxNl0gKi8NCisJMCwgICA0LCAgIDgsICAxMiwgIDE2LCAgMjAsICAyNCwgIDI4LCAgMzIsICA0MCwgIDQ4LCAgNjAsICA3MiwgIDg4LCAxMDgsIDEyOCwNCisNCisJLyogc2hvcnQgYmxvY2sgOCBrSHogWzE2XSAqLw0KKwkwLCAgIDQsICAgOCwgIDEyLCAgMTYsICAyMCwgIDI0LCAgMjgsICAzNiwgIDQ0LCAgNTIsICA2MCwgIDcyLCAgODgsIDEwOCwgMTI4DQorfTsNCisNCitjb25zdCBpbnQgc2ZCYW5kVGFiTG9uZ09mZnNldFtOVU1fU0FNUExFX1JBVEVTXSA9IHswLCAwLCA0MiwgOTAsIDkwLCAxNDAsIDE5MiwgMTkyLCAyNDAsIDI0MCwgMjQwLCAyODR9Ow0KKw0KK2NvbnN0IHNob3J0IHNmQmFuZFRhYkxvbmdbMzI1XSA9IHsNCisJLyogbG9uZyBibG9jayA4OCwgOTYga0h6IFs0Ml0gICovDQorCSAgMCwgICA0LCAgIDgsICAxMiwgIDE2LCAgMjAsICAyNCwgIDI4LCAgMzIsICAzNiwgIDQwLCAgNDQsICA0OCwgICA1MiwNCisJIDU2LCAgNjQsICA3MiwgIDgwLCAgODgsICA5NiwgMTA4LCAxMjAsIDEzMiwgMTQ0LCAxNTYsIDE3MiwgMTg4LCAgMjEyLA0KKwkyNDAsIDI3NiwgMzIwLCAzODQsIDQ0OCwgNTEyLCA1NzYsIDY0MCwgNzA0LCA3NjgsIDgzMiwgODk2LCA5NjAsIDEwMjQsDQorDQorCS8qIGxvbmcgYmxvY2sgNjQga0h6IFs0OF0gICovDQorCSAgMCwgICA0LCAgIDgsICAxMiwgIDE2LCAgMjAsICAyNCwgIDI4LCAgMzIsICAzNiwgIDQwLCAgNDQsICA0OCwgIDUyLCAgNTYsICAgNjQsDQorCSA3MiwgIDgwLCAgODgsIDEwMCwgMTEyLCAxMjQsIDE0MCwgMTU2LCAxNzIsIDE5MiwgMjE2LCAyNDAsIDI2OCwgMzA0LCAzNDQsICAzODQsDQorCTQyNCwgNDY0LCA1MDQsIDU0NCwgNTg0LCA2MjQsIDY2NCwgNzA0LCA3NDQsIDc4NCwgODI0LCA4NjQsIDkwNCwgOTQ0LCA5ODQsIDEwMjQsDQorDQorCS8qIGxvbmcgYmxvY2sgNDQsIDQ4IGtIeiBbNTBdICovDQorCSAgMCwgICA0LCAgIDgsICAxMiwgIDE2LCAgMjAsICAyNCwgIDI4LCAgMzIsICAzNiwgIDQwLCAgNDgsICA1NiwgIDY0LCAgNzIsICAgODAsICA4OCwNCisJIDk2LCAxMDgsIDEyMCwgMTMyLCAxNDQsIDE2MCwgMTc2LCAxOTYsIDIxNiwgMjQwLCAyNjQsIDI5MiwgMzIwLCAzNTIsIDM4NCwgIDQxNiwgNDQ4LA0KKwk0ODAsIDUxMiwgNTQ0LCA1NzYsIDYwOCwgNjQwLCA2NzIsIDcwNCwgNzM2LCA3NjgsIDgwMCwgODMyLCA4NjQsIDg5NiwgOTI4LCAxMDI0LA0KKw0KKwkvKiBsb25nIGJsb2NrIDMyIGtIeiBbNTJdICovDQorCSAgMCwgICA0LCAgIDgsICAxMiwgIDE2LCAgMjAsICAyNCwgIDI4LCAgMzIsICAzNiwgIDQwLCAgNDgsICA1NiwgIDY0LCAgNzIsICAgODAsICA4OCwgIDk2LA0KKwkxMDgsIDEyMCwgMTMyLCAxNDQsIDE2MCwgMTc2LCAxOTYsIDIxNiwgMjQwLCAyNjQsIDI5MiwgMzIwLCAzNTIsIDM4NCwgNDE2LCAgNDQ4LCA0ODAsIDUxMiwNCisJNTQ0LCA1NzYsIDYwOCwgNjQwLCA2NzIsIDcwNCwgNzM2LCA3NjgsIDgwMCwgODMyLCA4NjQsIDg5NiwgOTI4LCA5NjAsIDk5MiwgMTAyNCwNCisNCisJLyogbG9uZyBibG9jayAyMiwgMjQga0h6IFs0OF0gKi8NCisJICAwLCAgIDQsICAgOCwgIDEyLCAgMTYsICAyMCwgIDI0LCAgMjgsICAzMiwgIDM2LCAgNDAsICA0NCwgIDUyLCAgNjAsICA2OCwgICA3NiwNCisJIDg0LCAgOTIsIDEwMCwgMTA4LCAxMTYsIDEyNCwgMTM2LCAxNDgsIDE2MCwgMTcyLCAxODgsIDIwNCwgMjIwLCAyNDAsIDI2MCwgIDI4NCwNCisJMzA4LCAzMzYsIDM2NCwgMzk2LCA0MzIsIDQ2OCwgNTA4LCA1NTIsIDYwMCwgNjUyLCA3MDQsIDc2OCwgODMyLCA4OTYsIDk2MCwgMTAyNCwNCisNCisJLyogbG9uZyBibG9jayAxMSwgMTIsIDE2IGtIeiBbNDRdICovDQorCSAgMCwgICA4LCAgMTYsICAyNCwgIDMyLCAgNDAsICA0OCwgIDU2LCAgNjQsICA3MiwgIDgwLCAgODgsIDEwMCwgIDExMiwgMTI0LA0KKwkxMzYsIDE0OCwgMTYwLCAxNzIsIDE4NCwgMTk2LCAyMTIsIDIyOCwgMjQ0LCAyNjAsIDI4MCwgMzAwLCAzMjAsICAzNDQsIDM2OCwNCisJMzk2LCA0MjQsIDQ1NiwgNDkyLCA1MzIsIDU3MiwgNjE2LCA2NjQsIDcxNiwgNzcyLCA4MzIsIDg5NiwgOTYwLCAxMDI0LA0KKw0KKwkvKiBsb25nIGJsb2NrIDgga0h6IFs0MV0gICovDQorCSAgMCwgIDEyLCAgMjQsICAzNiwgIDQ4LCAgNjAsICA3MiwgIDg0LCAgOTYsIDEwOCwgMTIwLCAxMzIsICAxNDQsIDE1NiwNCisJMTcyLCAxODgsIDIwNCwgMjIwLCAyMzYsIDI1MiwgMjY4LCAyODgsIDMwOCwgMzI4LCAzNDgsIDM3MiwgIDM5NiwgNDIwLA0KKwk0NDgsIDQ3NiwgNTA4LCA1NDQsIDU4MCwgNjIwLCA2NjQsIDcxMiwgNzY0LCA4MjAsIDg4MCwgOTQ0LCAxMDI0DQorfTsNCisKKy8qCisgIHRoZXNlIHRhYmxlcyBhcmUgdXNlZCBvbmx5IGZvciBjb3VudGluZyBhbmQgCisgIGFyZSBzdG9yZWQgaW4gcGFja2VkIGZvcm1hdAorKi8KK2NvbnN0IFVXb3JkMTYgaHVmZl9sdGFiMV8yWzNdWzNdWzNdWzNdPQoreworICB7CisgICAgeworICAgICAgezB4MGIwOSwweDA5MDcsMHgwYjA5fSwKKyAgICAgIHsweDBhMDgsMHgwNzA2LDB4MGEwOH0sCisgICAgICB7MHgwYjA5LDB4MDkwOCwweDBiMDl9CisgICAgfSwKKyAgICB7CisgICAgICB7MHgwYTA4LDB4MDcwNiwweDBhMDd9LAorICAgICAgezB4MDcwNiwweDA1MDUsMHgwNzA2fSwKKyAgICAgIHsweDA5MDcsMHgwNzA2LDB4MGEwOH0KKyAgICB9LAorICAgIHsKKyAgICAgIHsweDBiMDksMHgwOTA3LDB4MGIwOH0sCisgICAgICB7MHgwOTA4LDB4MDcwNiwweDA5MDh9LAorICAgICAgezB4MGIwOSwweDA5MDcsMHgwYjA5fQorICAgIH0KKyAgfSwKKyAgeworICAgIHsKKyAgICAgIHsweDA5MDgsMHgwNzA2LDB4MDkwN30sCisgICAgICB7MHgwNzA2LDB4MDUwNSwweDA3MDZ9LAorICAgICAgezB4MDkwNywweDA3MDYsMHgwOTA4fQorICAgIH0sCisgICAgeworICAgICAgezB4MDcwNiwweDA1MDUsMHgwNzA2fSwKKyAgICAgIHsweDA1MDUsMHgwMTAzLDB4MDUwNX0sCisgICAgICB7MHgwNzA2LDB4MDUwNSwweDA3MDZ9CisgICAgfSwKKyAgICB7CisgICAgICB7MHgwOTA4LDB4MDcwNiwweDA5MDd9LAorICAgICAgezB4MDcwNiwweDA1MDUsMHgwNzA2fSwKKyAgICAgIHsweDA5MDgsMHgwNzA2LDB4MDkwOH0KKyAgICB9CisgIH0sCisgIHsKKyAgICB7CisgICAgICB7MHgwYjA5LDB4MDkwNywweDBiMDl9LAorICAgICAgezB4MDkwOCwweDA3MDYsMHgwOTA4fSwKKyAgICAgIHsweDBiMDgsMHgwOTA3LDB4MGIwOX0KKyAgICB9LAorICAgIHsKKyAgICAgIHsweDBhMDgsMHgwNzA2LDB4MDkwN30sCisgICAgICB7MHgwNzA2LDB4MDUwNCwweDA3MDZ9LAorICAgICAgezB4MDkwOCwweDA3MDYsMHgwYTA3fQorICAgIH0sCisgICAgeworICAgICAgezB4MGIwOSwweDA5MDcsMHgwYjA5fSwKKyAgICAgIHsweDBhMDcsMHgwNzA2LDB4MDkwOH0sCisgICAgICB7MHgwYjA5LDB4MDkwNywweDBiMDl9CisgICAgfQorICB9Cit9OworCisKK2NvbnN0IFVXb3JkMTYgaHVmZl9sdGFiM180WzNdWzNdWzNdWzNdPQoreworICB7CisgICAgeworICAgICAgezB4MDEwNCwweDA0MDUsMHgwODA4fSwKKyAgICAgIHsweDA0MDUsMHgwNTA0LDB4MDgwOH0sCisgICAgICB7MHgwOTA5LDB4MDkwOCwweDBhMGJ9CisgICAgfSwKKyAgICB7CisgICAgICB7MHgwNDA1LDB4MDYwNSwweDA5MDh9LAorICAgICAgezB4MDYwNSwweDA2MDQsMHgwOTA4fSwKKyAgICAgIHsweDA5MDgsMHgwOTA3LDB4MGEwYX0KKyAgICB9LAorICAgIHsKKyAgICAgIHsweDA5MDksMHgwYTA4LDB4MGQwYn0sCisgICAgICB7MHgwOTA4LDB4MDkwOCwweDBiMGF9LAorICAgICAgezB4MGIwYiwweDBhMGEsMHgwYzBifQorICAgIH0KKyAgfSwKKyAgeworICAgIHsKKyAgICAgIHsweDA0MDQsMHgwNjA1LDB4MGEwOH0sCisgICAgICB7MHgwNjA0LDB4MDcwNCwweDBhMDh9LAorICAgICAgezB4MGEwOCwweDBhMDgsMHgwYzBhfQorICAgIH0sCisgICAgeworICAgICAgezB4MDUwNCwweDA3MDQsMHgwYjA4fSwKKyAgICAgIHsweDA2MDQsMHgwNzA0LDB4MGEwN30sCisgICAgICB7MHgwOTA4LDB4MDkwNywweDBiMDl9CisgICAgfSwKKyAgICB7CisgICAgICB7MHgwOTA4LDB4MGEwOCwweDBkMGF9LAorICAgICAgezB4MDgwNywweDA5MDcsMHgwYzA5fSwKKyAgICAgIHsweDBhMGEsMHgwYjA5LDB4MGMwYX0KKyAgICB9CisgIH0sCisgIHsKKyAgICB7CisgICAgICB7MHgwODA4LDB4MGEwOCwweDBmMGJ9LAorICAgICAgezB4MDkwOCwweDBiMDcsMHgwZjBhfSwKKyAgICAgIHsweDBkMGIsMHgwZTBhLDB4MTAwY30KKyAgICB9LAorICAgIHsKKyAgICAgIHsweDA4MDgsMHgwYTA3LDB4MGUwYX0sCisgICAgICB7MHgwOTA3LDB4MGEwNywweDBlMDl9LAorICAgICAgezB4MGMwYSwweDBjMDksMHgwZjBifQorICAgIH0sCisgICAgeworICAgICAgezB4MGIwYiwweDBjMGEsMHgxMDBjfSwKKyAgICAgIHsweDBhMGEsMHgwYjA5LDB4MGYwYn0sCisgICAgICB7MHgwYzBiLDB4MGMwYSwweDBmMGJ9CisgICAgfQorICB9Cit9OworCitjb25zdCBVV29yZDE2IGh1ZmZfbHRhYjVfNls5XVs5XT0KK3sKKyAgezB4MGQwYiwweDBjMGEsMHgwYjA5LDB4MGIwOSwweDBhMDksMHgwYjA5LDB4MGIwOSwweDBjMGEsMHgwZDBifSwKKyAgezB4MGMwYSwweDBiMDksMHgwYTA4LDB4MDkwNywweDA4MDcsMHgwOTA3LDB4MGEwOCwweDBiMDksMHgwYzBhfSwKKyAgezB4MGMwOSwweDBhMDgsMHgwOTA2LDB4MDgwNiwweDA3MDYsMHgwODA2LDB4MDkwNiwweDBhMDgsMHgwYjA5fSwKKyAgezB4MGIwOSwweDA5MDcsMHgwODA2LDB4MDUwNCwweDA0MDQsMHgwNTA0LDB4MDgwNiwweDA5MDcsMHgwYjA5fSwKKyAgezB4MGEwOSwweDA4MDcsMHgwNzA2LDB4MDQwNCwweDAxMDQsMHgwNDA0LDB4MDcwNiwweDA4MDcsMHgwYjA5fSwKKyAgezB4MGIwOSwweDA5MDcsMHgwODA2LDB4MDUwNCwweDA0MDQsMHgwNTA0LDB4MDgwNiwweDA5MDcsMHgwYjA5fSwKKyAgezB4MGIwOSwweDBhMDgsMHgwOTA2LDB4MDgwNiwweDA3MDYsMHgwODA2LDB4MDkwNiwweDBhMDgsMHgwYjA5fSwKKyAgezB4MGMwYSwweDBiMDksMHgwYTA4LDB4MDkwNywweDA4MDcsMHgwOTA3LDB4MGEwNywweDBiMDgsMHgwYzBhfSwKKyAgezB4MGQwYiwweDBjMGEsMHgwYzA5LDB4MGIwOSwweDBhMDksMHgwYTA5LDB4MGIwOSwweDBjMGEsMHgwZDBifQorfTsKKworY29uc3QgVVdvcmQxNiBodWZmX2x0YWI3XzhbOF1bOF09Cit7CisgIHsweDAxMDUsMHgwMzA0LDB4MDYwNSwweDA3MDYsMHgwODA3LDB4MDkwOCwweDBhMDksMHgwYjBhfSwKKyAgezB4MDMwNCwweDA0MDMsMHgwNjA0LDB4MDcwNSwweDA4MDYsMHgwODA3LDB4MDkwNywweDA5MDh9LAorICB7MHgwNjA1LDB4MDYwNCwweDA3MDQsMHgwODA1LDB4MDgwNiwweDA5MDcsMHgwOTA3LDB4MGEwOH0sCisgIHsweDA3MDYsMHgwNzA1LDB4MDgwNSwweDA4MDYsMHgwOTA2LDB4MDkwNywweDBhMDgsMHgwYTA4fSwKKyAgezB4MDgwNywweDA4MDYsMHgwOTA2LDB4MDkwNiwweDBhMDcsMHgwYTA3LDB4MGEwOCwweDBiMDl9LAorICB7MHgwOTA4LDB4MDgwNywweDA5MDYsMHgwOTA3LDB4MGEwNywweDBhMDgsMHgwYjA4LDB4MGIwYX0sCisgIHsweDBhMDksMHgwOTA3LDB4MDkwNywweDBhMDgsMHgwYTA4LDB4MGIwOCwweDBjMDksMHgwYzA5fSwKKyAgezB4MGIwYSwweDBhMDgsMHgwYTA4LDB4MGEwOCwweDBiMDksMHgwYjA5LDB4MGMwOSwweDBjMGF9Cit9OworCitjb25zdCBVV29yZDE2IGh1ZmZfbHRhYjlfMTBbMTNdWzEzXT0KK3sKKyAgezB4MDEwNiwweDAzMDUsMHgwNjA2LDB4MDgwNiwweDA5MDcsMHgwYTA4LDB4MGEwOSwweDBiMGEsMHgwYjBhLDB4MGMwYSwweDBjMGIsMHgwZDBiLDB4MGQwY30sCisgIHsweDAzMDUsMHgwNDA0LDB4MDYwNCwweDA3MDUsMHgwODA2LDB4MDgwNywweDA5MDcsMHgwYTA4LDB4MGEwOCwweDBhMDksMHgwYjBhLDB4MGMwYSwweDBjMGJ9LAorICB7MHgwNjA2LDB4MDYwNCwweDA3MDUsMHgwODA1LDB4MDgwNiwweDA5MDYsMHgwYTA3LDB4MGEwOCwweDBhMDgsMHgwYjA5LDB4MGMwOSwweDBjMGEsMHgwYzBhfSwKKyAgezB4MDgwNiwweDA3MDUsMHgwODA1LDB4MDkwNSwweDA5MDYsMHgwYTA3LDB4MGEwNywweDBiMDgsMHgwYjA4LDB4MGIwOSwweDBjMDksMHgwYzBhLDB4MGQwYX0sCisgIHsweDA5MDcsMHgwODA2LDB4MDkwNiwweDA5MDYsMHgwYTA2LDB4MGEwNywweDBiMDcsMHgwYjA4LDB4MGIwOCwweDBjMDksMHgwYzA5LDB4MGMwYSwweDBkMGF9LAorICB7MHgwYTA4LDB4MDkwNywweDA5MDYsMHgwYTA3LDB4MGIwNywweDBiMDcsMHgwYjA4LDB4MGMwOCwweDBiMDgsMHgwYzA5LDB4MGMwYSwweDBkMGEsMHgwZDBifSwKKyAgezB4MGIwOSwweDA5MDcsMHgwYTA3LDB4MGIwNywweDBiMDcsMHgwYjA4LDB4MGMwOCwweDBjMDksMHgwYzA5LDB4MGMwOSwweDBkMGEsMHgwZDBhLDB4MGQwYn0sCisgIHsweDBiMDksMHgwYTA4LDB4MGEwOCwweDBiMDgsMHgwYjA4LDB4MGMwOCwweDBjMDksMHgwZDA5LDB4MGQwOSwweDBkMGEsMHgwZDBhLDB4MGQwYiwweDBkMGJ9LAorICB7MHgwYjA5LDB4MGEwOCwweDBhMDgsMHgwYjA4LDB4MGIwOCwweDBiMDgsMHgwYzA5LDB4MGMwOSwweDBkMGEsMHgwZDBhLDB4MGUwYSwweDBkMGIsMHgwZTBifSwKKyAgezB4MGIwYSwweDBhMDksMHgwYjA5LDB4MGIwOSwweDBjMDksMHgwYzA5LDB4MGMwOSwweDBjMGEsMHgwZDBhLDB4MGQwYSwweDBlMGIsMHgwZTBiLDB4MGUwY30sCisgIHsweDBjMGEsMHgwYjA5LDB4MGIwOSwweDBjMDksMHgwYzA5LDB4MGMwYSwweDBkMGEsMHgwZDBhLDB4MGQwYSwweDBlMGIsMHgwZTBiLDB4MGUwYiwweDBmMGN9LAorICB7MHgwYzBiLDB4MGIwYSwweDBjMDksMHgwYzBhLDB4MGMwYSwweDBkMGEsMHgwZDBhLDB4MGQwYSwweDBkMGIsMHgwZTBiLDB4MGUwYiwweDBmMGIsMHgwZjBjfSwKKyAgezB4MGQwYiwweDBjMGEsMHgwYzBhLDB4MGMwYSwweDBkMGEsMHgwZDBhLDB4MGQwYSwweDBkMGIsMHgwZTBiLDB4MGUwYywweDBlMGMsMHgwZTBjLDB4MGYwY30KK307CisKK2NvbnN0IFVXb3JkMTYgaHVmZl9sdGFiMTFbMTddWzE3XT0KK3sKKyAgezB4MDAwNCwweDAwMDUsMHgwMDA2LDB4MDAwNywweDAwMDgsMHgwMDA4LDB4MDAwOSwweDAwMGEsMHgwMDBhLDB4MDAwYSwweDAwMGIsMHgwMDBiLDB4MDAwYywweDAwMGIsMHgwMDBjLDB4MDAwYywweDAwMGF9LAorICB7MHgwMDA1LDB4MDAwNCwweDAwMDUsMHgwMDA2LDB4MDAwNywweDAwMDcsMHgwMDA4LDB4MDAwOCwweDAwMDksMHgwMDA5LDB4MDAwOSwweDAwMGEsMHgwMDBhLDB4MDAwYSwweDAwMGEsMHgwMDBiLDB4MDAwOH0sCisgIHsweDAwMDYsMHgwMDA1LDB4MDAwNSwweDAwMDYsMHgwMDA3LDB4MDAwNywweDAwMDgsMHgwMDA4LDB4MDAwOCwweDAwMDksMHgwMDA5LDB4MDAwOSwweDAwMGEsMHgwMDBhLDB4MDAwYSwweDAwMGEsMHgwMDA4fSwKKyAgezB4MDAwNywweDAwMDYsMHgwMDA2LDB4MDAwNiwweDAwMDcsMHgwMDA3LDB4MDAwOCwweDAwMDgsMHgwMDA4LDB4MDAwOSwweDAwMDksMHgwMDA5LDB4MDAwYSwweDAwMGEsMHgwMDBhLDB4MDAwYSwweDAwMDh9LAorICB7MHgwMDA4LDB4MDAwNywweDAwMDcsMHgwMDA3LDB4MDAwNywweDAwMDgsMHgwMDA4LDB4MDAwOCwweDAwMDgsMHgwMDA5LDB4MDAwOSwweDAwMDksMHgwMDBhLDB4MDAwYSwweDAwMGEsMHgwMDBhLDB4MDAwOH0sCisgIHsweDAwMDgsMHgwMDA3LDB4MDAwNywweDAwMDcsMHgwMDA3LDB4MDAwOCwweDAwMDgsMHgwMDA4LDB4MDAwOSwweDAwMDksMHgwMDA5LDB4MDAwOSwweDAwMGEsMHgwMDBhLDB4MDAwYSwweDAwMGEsMHgwMDA4fSwKKyAgezB4MDAwOSwweDAwMDgsMHgwMDA4LDB4MDAwOCwweDAwMDgsMHgwMDA4LDB4MDAwOCwweDAwMDgsMHgwMDA5LDB4MDAwOSwweDAwMDksMHgwMDBhLDB4MDAwYSwweDAwMGEsMHgwMDBhLDB4MDAwYSwweDAwMDh9LAorICB7MHgwMDA5LDB4MDAwOCwweDAwMDgsMHgwMDA4LDB4MDAwOCwweDAwMDgsMHgwMDA4LDB4MDAwOSwweDAwMDksMHgwMDA5LDB4MDAwYSwweDAwMGEsMHgwMDBhLDB4MDAwYSwweDAwMGEsMHgwMDBhLDB4MDAwOH0sCisgIHsweDAwMGEsMHgwMDA5LDB4MDAwOCwweDAwMDgsMHgwMDA5LDB4MDAwOSwweDAwMDksMHgwMDA5LDB4MDAwOSwweDAwMGEsMHgwMDBhLDB4MDAwYSwweDAwMGEsMHgwMDBhLDB4MDAwYSwweDAwMGIsMHgwMDA4fSwKKyAgezB4MDAwYSwweDAwMDksMHgwMDA5LDB4MDAwOSwweDAwMDksMHgwMDA5LDB4MDAwOSwweDAwMDksMHgwMDBhLDB4MDAwYSwweDAwMGEsMHgwMDBhLDB4MDAwYSwweDAwMGEsMHgwMDBiLDB4MDAwYiwweDAwMDh9LAorICB7MHgwMDBiLDB4MDAwOSwweDAwMDksMHgwMDA5LDB4MDAwOSwweDAwMDksMHgwMDA5LDB4MDAwYSwweDAwMGEsMHgwMDBhLDB4MDAwYSwweDAwMGEsMHgwMDBiLDB4MDAwYSwweDAwMGIsMHgwMDBiLDB4MDAwOH0sCisgIHsweDAwMGIsMHgwMDBhLDB4MDAwOSwweDAwMDksMHgwMDBhLDB4MDAwOSwweDAwMGEsMHgwMDBhLDB4MDAwYSwweDAwMGEsMHgwMDBhLDB4MDAwYiwweDAwMGIsMHgwMDBiLDB4MDAwYiwweDAwMGIsMHgwMDA4fSwKKyAgezB4MDAwYiwweDAwMGEsMHgwMDBhLDB4MDAwYSwweDAwMGEsMHgwMDBhLDB4MDAwYSwweDAwMGEsMHgwMDBhLDB4MDAwYSwweDAwMGEsMHgwMDBiLDB4MDAwYiwweDAwMGIsMHgwMDBiLDB4MDAwYiwweDAwMDl9LAorICB7MHgwMDBiLDB4MDAwYSwweDAwMDksMHgwMDA5LDB4MDAwYSwweDAwMGEsMHgwMDBhLDB4MDAwYSwweDAwMGEsMHgwMDBhLDB4MDAwYiwweDAwMGIsMHgwMDBiLDB4MDAwYiwweDAwMGIsMHgwMDBiLDB4MDAwOX0sCisgIHsweDAwMGIsMHgwMDBhLDB4MDAwYSwweDAwMGEsMHgwMDBhLDB4MDAwYSwweDAwMGEsMHgwMDBhLDB4MDAwYSwweDAwMGEsMHgwMDBiLDB4MDAwYiwweDAwMGIsMHgwMDBiLDB4MDAwYiwweDAwMGIsMHgwMDA5fSwKKyAgezB4MDAwYywweDAwMGEsMHgwMDBhLDB4MDAwYSwweDAwMGEsMHgwMDBhLDB4MDAwYSwweDAwMGEsMHgwMDBiLDB4MDAwYiwweDAwMGIsMHgwMDBiLDB4MDAwYiwweDAwMGIsMHgwMDBjLDB4MDAwYywweDAwMDl9LAorICB7MHgwMDA5LDB4MDAwOCwweDAwMDgsMHgwMDA4LDB4MDAwOCwweDAwMDgsMHgwMDA4LDB4MDAwOCwweDAwMDgsMHgwMDA4LDB4MDAwOCwweDAwMDgsMHgwMDA4LDB4MDAwOCwweDAwMDgsMHgwMDA5LDB4MDAwNX0KK307CisKK2NvbnN0IFVXb3JkMTYgaHVmZl9sdGFic2NmWzEyMV09Cit7CisgIDB4MDAxMiwKKyAgMHgwMDEyLAorICAweDAwMTIsCisgIDB4MDAxMiwKKyAgMHgwMDEzLAorICAweDAwMTMsCisgIDB4MDAxMywKKyAgMHgwMDEzLAorICAweDAwMTMsCisgIDB4MDAxMywKKyAgMHgwMDEzLAorICAweDAwMTMsCisgIDB4MDAxMywKKyAgMHgwMDEzLAorICAweDAwMTMsCisgIDB4MDAxMywKKyAgMHgwMDEzLAorICAweDAwMTMsCisgIDB4MDAxMywKKyAgMHgwMDEyLAorICAweDAwMTMsCisgIDB4MDAxMiwKKyAgMHgwMDExLAorICAweDAwMTEsCisgIDB4MDAxMCwKKyAgMHgwMDExLAorICAweDAwMTAsCisgIDB4MDAxMCwKKyAgMHgwMDEwLAorICAweDAwMTAsCisgIDB4MDAwZiwKKyAgMHgwMDBmLAorICAweDAwMGUsCisgIDB4MDAwZSwKKyAgMHgwMDBlLAorICAweDAwMGUsCisgIDB4MDAwZSwKKyAgMHgwMDBlLAorICAweDAwMGQsCisgIDB4MDAwZCwKKyAgMHgwMDBjLAorICAweDAwMGMsCisgIDB4MDAwYywKKyAgMHgwMDBiLAorICAweDAwMGMsCisgIDB4MDAwYiwKKyAgMHgwMDBhLAorICAweDAwMGEsCisgIDB4MDAwYSwKKyAgMHgwMDA5LAorICAweDAwMDksCisgIDB4MDAwOCwKKyAgMHgwMDA4LAorICAweDAwMDgsCisgIDB4MDAwNywKKyAgMHgwMDA2LAorICAweDAwMDYsCisgIDB4MDAwNSwKKyAgMHgwMDA0LAorICAweDAwMDMsCisgIDB4MDAwMSwKKyAgMHgwMDA0LAorICAweDAwMDQsCisgIDB4MDAwNSwKKyAgMHgwMDA2LAorICAweDAwMDYsCisgIDB4MDAwNywKKyAgMHgwMDA3LAorICAweDAwMDgsCisgIDB4MDAwOCwKKyAgMHgwMDA5LAorICAweDAwMDksCisgIDB4MDAwYSwKKyAgMHgwMDBhLAorICAweDAwMGEsCisgIDB4MDAwYiwKKyAgMHgwMDBiLAorICAweDAwMGIsCisgIDB4MDAwYiwKKyAgMHgwMDBjLAorICAweDAwMGMsCisgIDB4MDAwZCwKKyAgMHgwMDBkLAorICAweDAwMGQsCisgIDB4MDAwZSwKKyAgMHgwMDBlLAorICAweDAwMTAsCisgIDB4MDAwZiwKKyAgMHgwMDEwLAorICAweDAwMGYsCisgIDB4MDAxMiwKKyAgMHgwMDEzLAorICAweDAwMTMsCisgIDB4MDAxMywKKyAgMHgwMDEzLAorICAweDAwMTMsCisgIDB4MDAxMywKKyAgMHgwMDEzLAorICAweDAwMTMsCisgIDB4MDAxMywKKyAgMHgwMDEzLAorICAweDAwMTMsCisgIDB4MDAxMywKKyAgMHgwMDEzLAorICAweDAwMTMsCisgIDB4MDAxMywKKyAgMHgwMDEzLAorICAweDAwMTMsCisgIDB4MDAxMywKKyAgMHgwMDEzLAorICAweDAwMTMsCisgIDB4MDAxMywKKyAgMHgwMDEzLAorICAweDAwMTMsCisgIDB4MDAxMywKKyAgMHgwMDEzLAorICAweDAwMTMsCisgIDB4MDAxMywKKyAgMHgwMDEzLAorICAweDAwMTMsCisgIDB4MDAxMworfTsKKworCitjb25zdCBVV29yZDE2IGh1ZmZfY3RhYjFbM11bM11bM11bM109Cit7CisgIHsKKyAgICB7CisgICAgICB7MHgwN2Y4LDB4MDFmMSwweDA3ZmR9LAorICAgICAgezB4MDNmNSwweDAwNjgsMHgwM2YwfSwKKyAgICAgIHsweDA3ZjcsMHgwMWVjLDB4MDdmNX0KKyAgICB9LAorICAgIHsKKyAgICAgIHsweDAzZjEsMHgwMDcyLDB4MDNmNH0sCisgICAgICB7MHgwMDc0LDB4MDAxMSwweDAwNzZ9LAorICAgICAgezB4MDFlYiwweDAwNmMsMHgwM2Y2fQorICAgIH0sCisgICAgeworICAgICAgezB4MDdmYywweDAxZTEsMHgwN2YxfSwKKyAgICAgIHsweDAxZjAsMHgwMDYxLDB4MDFmNn0sCisgICAgICB7MHgwN2YyLDB4MDFlYSwweDA3ZmJ9CisgICAgfQorICB9LAorICB7CisgICAgeworICAgICAgezB4MDFmMiwweDAwNjksMHgwMWVkfSwKKyAgICAgIHsweDAwNzcsMHgwMDE3LDB4MDA2Zn0sCisgICAgICB7MHgwMWU2LDB4MDA2NCwweDAxZTV9CisgICAgfSwKKyAgICB7CisgICAgICB7MHgwMDY3LDB4MDAxNSwweDAwNjJ9LAorICAgICAgezB4MDAxMiwweDAwMDAsMHgwMDE0fSwKKyAgICAgIHsweDAwNjUsMHgwMDE2LDB4MDA2ZH0KKyAgICB9LAorICAgIHsKKyAgICAgIHsweDAxZTksMHgwMDYzLDB4MDFlNH0sCisgICAgICB7MHgwMDZiLDB4MDAxMywweDAwNzF9LAorICAgICAgezB4MDFlMywweDAwNzAsMHgwMWYzfQorICAgIH0KKyAgfSwKKyAgeworICAgIHsKKyAgICAgIHsweDA3ZmUsMHgwMWU3LDB4MDdmM30sCisgICAgICB7MHgwMWVmLDB4MDA2MCwweDAxZWV9LAorICAgICAgezB4MDdmMCwweDAxZTIsMHgwN2ZhfQorICAgIH0sCisgICAgeworICAgICAgezB4MDNmMywweDAwNmEsMHgwMWU4fSwKKyAgICAgIHsweDAwNzUsMHgwMDEwLDB4MDA3M30sCisgICAgICB7MHgwMWY0LDB4MDA2ZSwweDAzZjd9CisgICAgfSwKKyAgICB7CisgICAgICB7MHgwN2Y2LDB4MDFlMCwweDA3Zjl9LAorICAgICAgezB4MDNmMiwweDAwNjYsMHgwMWY1fSwKKyAgICAgIHsweDA3ZmYsMHgwMWY3LDB4MDdmNH0KKyAgICB9CisgIH0KK307CisKK2NvbnN0IFVXb3JkMTYgaHVmZl9jdGFiMlszXVszXVszXVszXT0KK3sKKyAgeworICAgIHsKKyAgICAgIHsweDAxZjMsMHgwMDZmLDB4MDFmZH0sCisgICAgICB7MHgwMGViLDB4MDAyMywweDAwZWF9LAorICAgICAgezB4MDFmNywweDAwZTgsMHgwMWZhfQorICAgIH0sCisgICAgeworICAgICAgezB4MDBmMiwweDAwMmQsMHgwMDcwfSwKKyAgICAgIHsweDAwMjAsMHgwMDA2LDB4MDAyYn0sCisgICAgICB7MHgwMDZlLDB4MDAyOCwweDAwZTl9CisgICAgfSwKKyAgICB7CisgICAgICB7MHgwMWY5LDB4MDA2NiwweDAwZjh9LAorICAgICAgezB4MDBlNywweDAwMWIsMHgwMGYxfSwKKyAgICAgIHsweDAxZjQsMHgwMDZiLDB4MDFmNX0KKyAgICB9CisgIH0sCisgIHsKKyAgICB7CisgICAgICB7MHgwMGVjLDB4MDAyYSwweDAwNmN9LAorICAgICAgezB4MDAyYywweDAwMGEsMHgwMDI3fSwKKyAgICAgIHsweDAwNjcsMHgwMDFhLDB4MDBmNX0KKyAgICB9LAorICAgIHsKKyAgICAgIHsweDAwMjQsMHgwMDA4LDB4MDAxZn0sCisgICAgICB7MHgwMDA5LDB4MDAwMCwweDAwMDd9LAorICAgICAgezB4MDAxZCwweDAwMGIsMHgwMDMwfQorICAgIH0sCisgICAgeworICAgICAgezB4MDBlZiwweDAwMWMsMHgwMDY0fSwKKyAgICAgIHsweDAwMWUsMHgwMDBjLDB4MDAyOX0sCisgICAgICB7MHgwMGYzLDB4MDAyZiwweDAwZjB9CisgICAgfQorICB9LAorICB7CisgICAgeworICAgICAgezB4MDFmYywweDAwNzEsMHgwMWYyfSwKKyAgICAgIHsweDAwZjQsMHgwMDIxLDB4MDBlNn0sCisgICAgICB7MHgwMGY3LDB4MDA2OCwweDAxZjh9CisgICAgfSwKKyAgICB7CisgICAgICB7MHgwMGVlLDB4MDAyMiwweDAwNjV9LAorICAgICAgezB4MDAzMSwweDAwMDIsMHgwMDI2fSwKKyAgICAgIHsweDAwZWQsMHgwMDI1LDB4MDA2YX0KKyAgICB9LAorICAgIHsKKyAgICAgIHsweDAxZmIsMHgwMDcyLDB4MDFmZX0sCisgICAgICB7MHgwMDY5LDB4MDAyZSwweDAwZjZ9LAorICAgICAgezB4MDFmZiwweDAwNmQsMHgwMWY2fQorICAgIH0KKyAgfQorfTsKKworY29uc3QgVVdvcmQxNiBodWZmX2N0YWIzWzNdWzNdWzNdWzNdPQoreworICB7CisgICAgeworICAgICAgezB4MDAwMCwweDAwMDksMHgwMGVmfSwKKyAgICAgIHsweDAwMGIsMHgwMDE5LDB4MDBmMH0sCisgICAgICB7MHgwMWViLDB4MDFlNiwweDAzZjJ9CisgICAgfSwKKyAgICB7CisgICAgICB7MHgwMDBhLDB4MDAzNSwweDAxZWZ9LAorICAgICAgezB4MDAzNCwweDAwMzcsMHgwMWU5fSwKKyAgICAgIHsweDAxZWQsMHgwMWU3LDB4MDNmM30KKyAgICB9LAorICAgIHsKKyAgICAgIHsweDAxZWUsMHgwM2VkLDB4MWZmYX0sCisgICAgICB7MHgwMWVjLDB4MDFmMiwweDA3Zjl9LAorICAgICAgezB4MDdmOCwweDAzZjgsMHgwZmY4fQorICAgIH0KKyAgfSwKKyAgeworICAgIHsKKyAgICAgIHsweDAwMDgsMHgwMDM4LDB4MDNmNn0sCisgICAgICB7MHgwMDM2LDB4MDA3NSwweDAzZjF9LAorICAgICAgezB4MDNlYiwweDAzZWMsMHgwZmY0fQorICAgIH0sCisgICAgeworICAgICAgezB4MDAxOCwweDAwNzYsMHgwN2Y0fSwKKyAgICAgIHsweDAwMzksMHgwMDc0LDB4MDNlZn0sCisgICAgICB7MHgwMWYzLDB4MDFmNCwweDA3ZjZ9CisgICAgfSwKKyAgICB7CisgICAgICB7MHgwMWU4LDB4MDNlYSwweDFmZmN9LAorICAgICAgezB4MDBmMiwweDAxZjEsMHgwZmZifSwKKyAgICAgIHsweDAzZjUsMHgwN2YzLDB4MGZmY30KKyAgICB9CisgIH0sCisgIHsKKyAgICB7CisgICAgICB7MHgwMGVlLDB4MDNmNywweDdmZmV9LAorICAgICAgezB4MDFmMCwweDA3ZjUsMHg3ZmZkfSwKKyAgICAgIHsweDFmZmIsMHgzZmZhLDB4ZmZmZn0KKyAgICB9LAorICAgIHsKKyAgICAgIHsweDAwZjEsMHgwM2YwLDB4M2ZmY30sCisgICAgICB7MHgwMWVhLDB4MDNlZSwweDNmZmJ9LAorICAgICAgezB4MGZmNiwweDBmZmEsMHg3ZmZjfQorICAgIH0sCisgICAgeworICAgICAgezB4MDdmMiwweDBmZjUsMHhmZmZlfSwKKyAgICAgIHsweDAzZjQsMHgwN2Y3LDB4N2ZmYn0sCisgICAgICB7MHgwZmY3LDB4MGZmOSwweDdmZmF9CisgICAgfQorICB9Cit9OworCitjb25zdCBVV29yZDE2IGh1ZmZfY3RhYjRbM11bM11bM11bM109Cit7CisgIHsKKyAgICB7CisgICAgICB7MHgwMDA3LDB4MDAxNiwweDAwZjZ9LAorICAgICAgezB4MDAxOCwweDAwMDgsMHgwMGVmfSwKKyAgICAgIHsweDAxZWYsMHgwMGYzLDB4MDdmOH0KKyAgICB9LAorICAgIHsKKyAgICAgIHsweDAwMTksMHgwMDE3LDB4MDBlZH0sCisgICAgICB7MHgwMDE1LDB4MDAwMSwweDAwZTJ9LAorICAgICAgezB4MDBmMCwweDAwNzAsMHgwM2YwfQorICAgIH0sCisgICAgeworICAgICAgezB4MDFlZSwweDAwZjEsMHgwN2ZhfSwKKyAgICAgIHsweDAwZWUsMHgwMGU0LDB4MDNmMn0sCisgICAgICB7MHgwN2Y2LDB4MDNlZiwweDA3ZmR9CisgICAgfQorICB9LAorICB7CisgICAgeworICAgICAgezB4MDAwNSwweDAwMTQsMHgwMGYyfSwKKyAgICAgIHsweDAwMDksMHgwMDA0LDB4MDBlNX0sCisgICAgICB7MHgwMGY0LDB4MDBlOCwweDAzZjR9CisgICAgfSwKKyAgICB7CisgICAgICB7MHgwMDA2LDB4MDAwMiwweDAwZTd9LAorICAgICAgezB4MDAwMywweDAwMDAsMHgwMDZifSwKKyAgICAgIHsweDAwZTMsMHgwMDY5LDB4MDFmM30KKyAgICB9LAorICAgIHsKKyAgICAgIHsweDAwZWIsMHgwMGU2LDB4MDNmNn0sCisgICAgICB7MHgwMDZlLDB4MDA2YSwweDAxZjR9LAorICAgICAgezB4MDNlYywweDAxZjAsMHgwM2Y5fQorICAgIH0KKyAgfSwKKyAgeworICAgIHsKKyAgICAgIHsweDAwZjUsMHgwMGVjLDB4MDdmYn0sCisgICAgICB7MHgwMGVhLDB4MDA2ZiwweDAzZjd9LAorICAgICAgezB4MDdmOSwweDAzZjMsMHgwZmZmfQorICAgIH0sCisgICAgeworICAgICAgezB4MDBlOSwweDAwNmQsMHgwM2Y4fSwKKyAgICAgIHsweDAwNmMsMHgwMDY4LDB4MDFmNX0sCisgICAgICB7MHgwM2VlLDB4MDFmMiwweDA3ZjR9CisgICAgfSwKKyAgICB7CisgICAgICB7MHgwN2Y3LDB4MDNmMSwweDBmZmV9LAorICAgICAgezB4MDNlZCwweDAxZjEsMHgwN2Y1fSwKKyAgICAgIHsweDA3ZmUsMHgwM2Y1LDB4MDdmY30KKyAgICB9CisgIH0KK307Citjb25zdCBVV29yZDE2IGh1ZmZfY3RhYjVbOV1bOV09Cit7CisgIHsweDFmZmYsMHgwZmY3LDB4MDdmNCwweDA3ZTgsMHgwM2YxLDB4MDdlZSwweDA3ZjksMHgwZmY4LDB4MWZmZH0sCisgIHsweDBmZmQsMHgwN2YxLDB4MDNlOCwweDAxZTgsMHgwMGYwLDB4MDFlYywweDAzZWUsMHgwN2YyLDB4MGZmYX0sCisgIHsweDBmZjQsMHgwM2VmLDB4MDFmMiwweDAwZTgsMHgwMDcwLDB4MDBlYywweDAxZjAsMHgwM2VhLDB4MDdmM30sCisgIHsweDA3ZWIsMHgwMWViLDB4MDBlYSwweDAwMWEsMHgwMDA4LDB4MDAxOSwweDAwZWUsMHgwMWVmLDB4MDdlZH0sCisgIHsweDAzZjAsMHgwMGYyLDB4MDA3MywweDAwMGIsMHgwMDAwLDB4MDAwYSwweDAwNzEsMHgwMGYzLDB4MDdlOX0sCisgIHsweDA3ZWYsMHgwMWVlLDB4MDBlZiwweDAwMTgsMHgwMDA5LDB4MDAxYiwweDAwZWIsMHgwMWU5LDB4MDdlY30sCisgIHsweDA3ZjYsMHgwM2ViLDB4MDFmMywweDAwZWQsMHgwMDcyLDB4MDBlOSwweDAxZjEsMHgwM2VkLDB4MDdmN30sCisgIHsweDBmZjYsMHgwN2YwLDB4MDNlOSwweDAxZWQsMHgwMGYxLDB4MDFlYSwweDAzZWMsMHgwN2Y4LDB4MGZmOX0sCisgIHsweDFmZmMsMHgwZmZjLDB4MGZmNSwweDA3ZWEsMHgwM2YzLDB4MDNmMiwweDA3ZjUsMHgwZmZiLDB4MWZmZX0KK307CisKK2NvbnN0IFVXb3JkMTYgaHVmZl9jdGFiNls5XVs5XT0KK3sKKyAgezB4MDdmZSwweDAzZmQsMHgwMWYxLDB4MDFlYiwweDAxZjQsMHgwMWVhLDB4MDFmMCwweDAzZmMsMHgwN2ZkfSwKKyAgezB4MDNmNiwweDAxZTUsMHgwMGVhLDB4MDA2YywweDAwNzEsMHgwMDY4LDB4MDBmMCwweDAxZTYsMHgwM2Y3fSwKKyAgezB4MDFmMywweDAwZWYsMHgwMDMyLDB4MDAyNywweDAwMjgsMHgwMDI2LDB4MDAzMSwweDAwZWIsMHgwMWY3fSwKKyAgezB4MDFlOCwweDAwNmYsMHgwMDJlLDB4MDAwOCwweDAwMDQsMHgwMDA2LDB4MDAyOSwweDAwNmIsMHgwMWVlfSwKKyAgezB4MDFlZiwweDAwNzIsMHgwMDJkLDB4MDAwMiwweDAwMDAsMHgwMDAzLDB4MDAyZiwweDAwNzMsMHgwMWZhfSwKKyAgezB4MDFlNywweDAwNmUsMHgwMDJiLDB4MDAwNywweDAwMDEsMHgwMDA1LDB4MDAyYywweDAwNmQsMHgwMWVjfSwKKyAgezB4MDFmOSwweDAwZWUsMHgwMDMwLDB4MDAyNCwweDAwMmEsMHgwMDI1LDB4MDAzMywweDAwZWMsMHgwMWYyfSwKKyAgezB4MDNmOCwweDAxZTQsMHgwMGVkLDB4MDA2YSwweDAwNzAsMHgwMDY5LDB4MDA3NCwweDAwZjEsMHgwM2ZhfSwKKyAgezB4MDdmZiwweDAzZjksMHgwMWY2LDB4MDFlZCwweDAxZjgsMHgwMWU5LDB4MDFmNSwweDAzZmIsMHgwN2ZjfQorfTsKKworY29uc3QgVVdvcmQxNiBodWZmX2N0YWI3WzhdWzhdPQoreworICB7MHgwMDAwLDB4MDAwNSwweDAwMzcsMHgwMDc0LDB4MDBmMiwweDAxZWIsMHgwM2VkLDB4MDdmN30sCisgIHsweDAwMDQsMHgwMDBjLDB4MDAzNSwweDAwNzEsMHgwMGVjLDB4MDBlZSwweDAxZWUsMHgwMWY1fSwKKyAgezB4MDAzNiwweDAwMzQsMHgwMDcyLDB4MDBlYSwweDAwZjEsMHgwMWU5LDB4MDFmMywweDAzZjV9LAorICB7MHgwMDczLDB4MDA3MCwweDAwZWIsMHgwMGYwLDB4MDFmMSwweDAxZjAsMHgwM2VjLDB4MDNmYX0sCisgIHsweDAwZjMsMHgwMGVkLDB4MDFlOCwweDAxZWYsMHgwM2VmLDB4MDNmMSwweDAzZjksMHgwN2ZifSwKKyAgezB4MDFlZCwweDAwZWYsMHgwMWVhLDB4MDFmMiwweDAzZjMsMHgwM2Y4LDB4MDdmOSwweDA3ZmN9LAorICB7MHgwM2VlLDB4MDFlYywweDAxZjQsMHgwM2Y0LDB4MDNmNywweDA3ZjgsMHgwZmZkLDB4MGZmZX0sCisgIHsweDA3ZjYsMHgwM2YwLDB4MDNmMiwweDAzZjYsMHgwN2ZhLDB4MDdmZCwweDBmZmMsMHgwZmZmfQorfTsKKworY29uc3QgVVdvcmQxNiBodWZmX2N0YWI4WzhdWzhdPQoreworICB7MHgwMDBlLDB4MDAwNSwweDAwMTAsMHgwMDMwLDB4MDA2ZiwweDAwZjEsMHgwMWZhLDB4MDNmZX0sCisgIHsweDAwMDMsMHgwMDAwLDB4MDAwNCwweDAwMTIsMHgwMDJjLDB4MDA2YSwweDAwNzUsMHgwMGY4fSwKKyAgezB4MDAwZiwweDAwMDIsMHgwMDA2LDB4MDAxNCwweDAwMmUsMHgwMDY5LDB4MDA3MiwweDAwZjV9LAorICB7MHgwMDJmLDB4MDAxMSwweDAwMTMsMHgwMDJhLDB4MDAzMiwweDAwNmMsMHgwMGVjLDB4MDBmYX0sCisgIHsweDAwNzEsMHgwMDJiLDB4MDAyZCwweDAwMzEsMHgwMDZkLDB4MDA3MCwweDAwZjIsMHgwMWY5fSwKKyAgezB4MDBlZiwweDAwNjgsMHgwMDMzLDB4MDA2YiwweDAwNmUsMHgwMGVlLDB4MDBmOSwweDAzZmN9LAorICB7MHgwMWY4LDB4MDA3NCwweDAwNzMsMHgwMGVkLDB4MDBmMCwweDAwZjYsMHgwMWY2LDB4MDFmZH0sCisgIHsweDAzZmQsMHgwMGYzLDB4MDBmNCwweDAwZjcsMHgwMWY3LDB4MDFmYiwweDAxZmMsMHgwM2ZmfQorfTsKKworY29uc3QgVVdvcmQxNiBodWZmX2N0YWI5WzEzXVsxM109Cit7CisgIHsweDAwMDAsMHgwMDA1LDB4MDAzNywweDAwZTcsMHgwMWRlLDB4MDNjZSwweDAzZDksMHgwN2M4LDB4MDdjZCwweDBmYzgsMHgwZmRkLDB4MWZlNCwweDFmZWN9LAorICB7MHgwMDA0LDB4MDAwYywweDAwMzUsMHgwMDcyLDB4MDBlYSwweDAwZWQsMHgwMWUyLDB4MDNkMSwweDAzZDMsMHgwM2UwLDB4MDdkOCwweDBmY2YsMHgwZmQ1fSwKKyAgezB4MDAzNiwweDAwMzQsMHgwMDcxLDB4MDBlOCwweDAwZWMsMHgwMWUxLDB4MDNjZiwweDAzZGQsMHgwM2RiLDB4MDdkMCwweDBmYzcsMHgwZmQ0LDB4MGZlNH0sCisgIHsweDAwZTYsMHgwMDcwLDB4MDBlOSwweDAxZGQsMHgwMWUzLDB4MDNkMiwweDAzZGMsMHgwN2NjLDB4MDdjYSwweDA3ZGUsMHgwZmQ4LDB4MGZlYSwweDFmZGJ9LAorICB7MHgwMWRmLDB4MDBlYiwweDAxZGMsMHgwMWU2LDB4MDNkNSwweDAzZGUsMHgwN2NiLDB4MDdkZCwweDA3ZGMsMHgwZmNkLDB4MGZlMiwweDBmZTcsMHgxZmUxfSwKKyAgezB4MDNkMCwweDAxZTAsMHgwMWU0LDB4MDNkNiwweDA3YzUsMHgwN2QxLDB4MDdkYiwweDBmZDIsMHgwN2UwLDB4MGZkOSwweDBmZWIsMHgxZmUzLDB4MWZlOX0sCisgIHsweDA3YzQsMHgwMWU1LDB4MDNkNywweDA3YzYsMHgwN2NmLDB4MDdkYSwweDBmY2IsMHgwZmRhLDB4MGZlMywweDBmZTksMHgxZmU2LDB4MWZmMywweDFmZjd9LAorICB7MHgwN2QzLDB4MDNkOCwweDAzZTEsMHgwN2Q0LDB4MDdkOSwweDBmZDMsMHgwZmRlLDB4MWZkZCwweDFmZDksMHgxZmUyLDB4MWZlYSwweDFmZjEsMHgxZmY2fSwKKyAgezB4MDdkMiwweDAzZDQsMHgwM2RhLDB4MDdjNywweDA3ZDcsMHgwN2UyLDB4MGZjZSwweDBmZGIsMHgxZmQ4LDB4MWZlZSwweDNmZjAsMHgxZmY0LDB4M2ZmMn0sCisgIHsweDA3ZTEsMHgwM2RmLDB4MDdjOSwweDA3ZDYsMHgwZmNhLDB4MGZkMCwweDBmZTUsMHgwZmU2LDB4MWZlYiwweDFmZWYsMHgzZmYzLDB4M2ZmNCwweDNmZjV9LAorICB7MHgwZmUwLDB4MDdjZSwweDA3ZDUsMHgwZmM2LDB4MGZkMSwweDBmZTEsMHgxZmUwLDB4MWZlOCwweDFmZjAsMHgzZmYxLDB4M2ZmOCwweDNmZjYsMHg3ZmZjfSwKKyAgezB4MGZlOCwweDA3ZGYsMHgwZmM5LDB4MGZkNywweDBmZGMsMHgxZmRjLDB4MWZkZiwweDFmZWQsMHgxZmY1LDB4M2ZmOSwweDNmZmIsMHg3ZmZkLDB4N2ZmZX0sCisgIHsweDFmZTcsMHgwZmNjLDB4MGZkNiwweDBmZGYsMHgxZmRlLDB4MWZkYSwweDFmZTUsMHgxZmYyLDB4M2ZmYSwweDNmZjcsMHgzZmZjLDB4M2ZmZCwweDdmZmZ9Cit9OworCitjb25zdCBVV29yZDE2IGh1ZmZfY3RhYjEwWzEzXVsxM109Cit7CisgIHsweDAwMjIsMHgwMDA4LDB4MDAxZCwweDAwMjYsMHgwMDVmLDB4MDBkMywweDAxY2YsMHgwM2QwLDB4MDNkNywweDAzZWQsMHgwN2YwLDB4MDdmNiwweDBmZmR9LAorICB7MHgwMDA3LDB4MDAwMCwweDAwMDEsMHgwMDA5LDB4MDAyMCwweDAwNTQsMHgwMDYwLDB4MDBkNSwweDAwZGMsMHgwMWQ0LDB4MDNjZCwweDAzZGUsMHgwN2U3fSwKKyAgezB4MDAxYywweDAwMDIsMHgwMDA2LDB4MDAwYywweDAwMWUsMHgwMDI4LDB4MDA1YiwweDAwY2QsMHgwMGQ5LDB4MDFjZSwweDAxZGMsMHgwM2Q5LDB4MDNmMX0sCisgIHsweDAwMjUsMHgwMDBiLDB4MDAwYSwweDAwMGQsMHgwMDI0LDB4MDA1NywweDAwNjEsMHgwMGNjLDB4MDBkZCwweDAxY2MsMHgwMWRlLDB4MDNkMywweDAzZTd9LAorICB7MHgwMDVkLDB4MDAyMSwweDAwMWYsMHgwMDIzLDB4MDAyNywweDAwNTksMHgwMDY0LDB4MDBkOCwweDAwZGYsMHgwMWQyLDB4MDFlMiwweDAzZGQsMHgwM2VlfSwKKyAgezB4MDBkMSwweDAwNTUsMHgwMDI5LDB4MDA1NiwweDAwNTgsMHgwMDYyLDB4MDBjZSwweDAwZTAsMHgwMGUyLDB4MDFkYSwweDAzZDQsMHgwM2UzLDB4MDdlYn0sCisgIHsweDAxYzksMHgwMDVlLDB4MDA1YSwweDAwNWMsMHgwMDYzLDB4MDBjYSwweDAwZGEsMHgwMWM3LDB4MDFjYSwweDAxZTAsMHgwM2RiLDB4MDNlOCwweDA3ZWN9LAorICB7MHgwMWUzLDB4MDBkMiwweDAwY2IsMHgwMGQwLDB4MDBkNywweDAwZGIsMHgwMWM2LDB4MDFkNSwweDAxZDgsMHgwM2NhLDB4MDNkYSwweDA3ZWEsMHgwN2YxfSwKKyAgezB4MDFlMSwweDAwZDQsMHgwMGNmLDB4MDBkNiwweDAwZGUsMHgwMGUxLDB4MDFkMCwweDAxZDYsMHgwM2QxLDB4MDNkNSwweDAzZjIsMHgwN2VlLDB4MDdmYn0sCisgIHsweDAzZTksMHgwMWNkLDB4MDFjOCwweDAxY2IsMHgwMWQxLDB4MDFkNywweDAxZGYsMHgwM2NmLDB4MDNlMCwweDAzZWYsMHgwN2U2LDB4MDdmOCwweDBmZmF9LAorICB7MHgwM2ViLDB4MDFkZCwweDAxZDMsMHgwMWQ5LDB4MDFkYiwweDAzZDIsMHgwM2NjLDB4MDNkYywweDAzZWEsMHgwN2VkLDB4MDdmMywweDA3ZjksMHgwZmY5fSwKKyAgezB4MDdmMiwweDAzY2UsMHgwMWU0LDB4MDNjYiwweDAzZDgsMHgwM2Q2LDB4MDNlMiwweDAzZTUsMHgwN2U4LDB4MDdmNCwweDA3ZjUsMHgwN2Y3LDB4MGZmYn0sCisgIHsweDA3ZmEsMHgwM2VjLDB4MDNkZiwweDAzZTEsMHgwM2U0LDB4MDNlNiwweDAzZjAsMHgwN2U5LDB4MDdlZiwweDBmZjgsMHgwZmZlLDB4MGZmYywweDBmZmZ9Cit9OworCitjb25zdCBVV29yZDE2IGh1ZmZfY3RhYjExWzE3XVsxN109Cit7CisgIHsweDAwMDAsMHgwMDA2LDB4MDAxOSwweDAwM2QsMHgwMDljLDB4MDBjNiwweDAxYTcsMHgwMzkwLDB4MDNjMiwweDAzZGYsMHgwN2U2LDB4MDdmMywweDBmZmIsMHgwN2VjLDB4MGZmYSwweDBmZmUsMHgwMzhlfSwKKyAgezB4MDAwNSwweDAwMDEsMHgwMDA4LDB4MDAxNCwweDAwMzcsMHgwMDQyLDB4MDA5MiwweDAwYWYsMHgwMTkxLDB4MDFhNSwweDAxYjUsMHgwMzllLDB4MDNjMCwweDAzYTIsMHgwM2NkLDB4MDdkNiwweDAwYWV9LAorICB7MHgwMDE3LDB4MDAwNywweDAwMDksMHgwMDE4LDB4MDAzOSwweDAwNDAsMHgwMDhlLDB4MDBhMywweDAwYjgsMHgwMTk5LDB4MDFhYywweDAxYzEsMHgwM2IxLDB4MDM5NiwweDAzYmUsMHgwM2NhLDB4MDA5ZH0sCisgIHsweDAwM2MsMHgwMDE1LDB4MDAxNiwweDAwMWEsMHgwMDNiLDB4MDA0NCwweDAwOTEsMHgwMGE1LDB4MDBiZSwweDAxOTYsMHgwMWFlLDB4MDFiOSwweDAzYTEsMHgwMzkxLDB4MDNhNSwweDAzZDUsMHgwMDk0fSwKKyAgezB4MDA5YSwweDAwMzYsMHgwMDM4LDB4MDAzYSwweDAwNDEsMHgwMDhjLDB4MDA5YiwweDAwYjAsMHgwMGMzLDB4MDE5ZSwweDAxYWIsMHgwMWJjLDB4MDM5ZiwweDAzOGYsMHgwM2E5LDB4MDNjZiwweDAwOTN9LAorICB7MHgwMGJmLDB4MDAzZSwweDAwM2YsMHgwMDQzLDB4MDA0NSwweDAwOWUsMHgwMGE3LDB4MDBiOSwweDAxOTQsMHgwMWEyLDB4MDFiYSwweDAxYzMsMHgwM2E2LDB4MDNhNywweDAzYmIsMHgwM2Q0LDB4MDA5Zn0sCisgIHsweDAxYTAsMHgwMDhmLDB4MDA4ZCwweDAwOTAsMHgwMDk4LDB4MDBhNiwweDAwYjYsMHgwMGM0LDB4MDE5ZiwweDAxYWYsMHgwMWJmLDB4MDM5OSwweDAzYmYsMHgwM2I0LDB4MDNjOSwweDAzZTcsMHgwMGE4fSwKKyAgezB4MDFiNiwweDAwYWIsMHgwMGE0LDB4MDBhYSwweDAwYjIsMHgwMGMyLDB4MDBjNSwweDAxOTgsMHgwMWE0LDB4MDFiOCwweDAzOGMsMHgwM2E0LDB4MDNjNCwweDAzYzYsMHgwM2RkLDB4MDNlOCwweDAwYWR9LAorICB7MHgwM2FmLDB4MDE5MiwweDAwYmQsMHgwMGJjLDB4MDE4ZSwweDAxOTcsMHgwMTlhLDB4MDFhMywweDAxYjEsMHgwMzhkLDB4MDM5OCwweDAzYjcsMHgwM2QzLDB4MDNkMSwweDAzZGIsMHgwN2RkLDB4MDBiNH0sCisgIHsweDAzZGUsMHgwMWE5LDB4MDE5YiwweDAxOWMsMHgwMWExLDB4MDFhYSwweDAxYWQsMHgwMWIzLDB4MDM4YiwweDAzYjIsMHgwM2I4LDB4MDNjZSwweDAzZTEsMHgwM2UwLDB4MDdkMiwweDA3ZTUsMHgwMGI3fSwKKyAgezB4MDdlMywweDAxYmIsMHgwMWE4LDB4MDFhNiwweDAxYjAsMHgwMWIyLDB4MDFiNywweDAzOWIsMHgwMzlhLDB4MDNiYSwweDAzYjUsMHgwM2Q2LDB4MDdkNywweDAzZTQsMHgwN2Q4LDB4MDdlYSwweDAwYmF9LAorICB7MHgwN2U4LDB4MDNhMCwweDAxYmQsMHgwMWI0LDB4MDM4YSwweDAxYzQsMHgwMzkyLDB4MDNhYSwweDAzYjAsMHgwM2JjLDB4MDNkNywweDA3ZDQsMHgwN2RjLDB4MDdkYiwweDA3ZDUsMHgwN2YwLDB4MDBjMX0sCisgIHsweDA3ZmIsMHgwM2M4LDB4MDNhMywweDAzOTUsMHgwMzlkLDB4MDNhYywweDAzYWUsMHgwM2M1LDB4MDNkOCwweDAzZTIsMHgwM2U2LDB4MDdlNCwweDA3ZTcsMHgwN2UwLDB4MDdlOSwweDA3ZjcsMHgwMTkwfSwKKyAgezB4MDdmMiwweDAzOTMsMHgwMWJlLDB4MDFjMCwweDAzOTQsMHgwMzk3LDB4MDNhZCwweDAzYzMsMHgwM2MxLDB4MDNkMiwweDA3ZGEsMHgwN2Q5LDB4MDdkZiwweDA3ZWIsMHgwN2Y0LDB4MDdmYSwweDAxOTV9LAorICB7MHgwN2Y4LDB4MDNiZCwweDAzOWMsMHgwM2FiLDB4MDNhOCwweDAzYjMsMHgwM2I5LDB4MDNkMCwweDAzZTMsMHgwM2U1LDB4MDdlMiwweDA3ZGUsMHgwN2VkLDB4MDdmMSwweDA3ZjksMHgwN2ZjLDB4MDE5M30sCisgIHsweDBmZmQsMHgwM2RjLDB4MDNiNiwweDAzYzcsMHgwM2NjLDB4MDNjYiwweDAzZDksMHgwM2RhLDB4MDdkMywweDA3ZTEsMHgwN2VlLDB4MDdlZiwweDA3ZjUsMHgwN2Y2LDB4MGZmYywweDBmZmYsMHgwMTlkfSwKKyAgezB4MDFjMiwweDAwYjUsMHgwMGExLDB4MDA5NiwweDAwOTcsMHgwMDk1LDB4MDA5OSwweDAwYTAsMHgwMGEyLDB4MDBhYywweDAwYTksMHgwMGIxLDB4MDBiMywweDAwYmIsMHgwMGMwLDB4MDE4ZiwweDAwMDR9Cit9OworCitjb25zdCBVV29yZDMyIGh1ZmZfY3RhYnNjZlsxMjFdPQoreworICAweDAwMDNmZmU4LAorICAweDAwMDNmZmU2LAorICAweDAwMDNmZmU3LAorICAweDAwMDNmZmU1LAorICAweDAwMDdmZmY1LAorICAweDAwMDdmZmYxLAorICAweDAwMDdmZmVkLAorICAweDAwMDdmZmY2LAorICAweDAwMDdmZmVlLAorICAweDAwMDdmZmVmLAorICAweDAwMDdmZmYwLAorICAweDAwMDdmZmZjLAorICAweDAwMDdmZmZkLAorICAweDAwMDdmZmZmLAorICAweDAwMDdmZmZlLAorICAweDAwMDdmZmY3LAorICAweDAwMDdmZmY4LAorICAweDAwMDdmZmZiLAorICAweDAwMDdmZmY5LAorICAweDAwMDNmZmU0LAorICAweDAwMDdmZmZhLAorICAweDAwMDNmZmUzLAorICAweDAwMDFmZmVmLAorICAweDAwMDFmZmYwLAorICAweDAwMDBmZmY1LAorICAweDAwMDFmZmVlLAorICAweDAwMDBmZmYyLAorICAweDAwMDBmZmYzLAorICAweDAwMDBmZmY0LAorICAweDAwMDBmZmYxLAorICAweDAwMDA3ZmY2LAorICAweDAwMDA3ZmY3LAorICAweDAwMDAzZmY5LAorICAweDAwMDAzZmY1LAorICAweDAwMDAzZmY3LAorICAweDAwMDAzZmYzLAorICAweDAwMDAzZmY2LAorICAweDAwMDAzZmYyLAorICAweDAwMDAxZmY3LAorICAweDAwMDAxZmY1LAorICAweDAwMDAwZmY5LAorICAweDAwMDAwZmY3LAorICAweDAwMDAwZmY2LAorICAweDAwMDAwN2Y5LAorICAweDAwMDAwZmY0LAorICAweDAwMDAwN2Y4LAorICAweDAwMDAwM2Y5LAorICAweDAwMDAwM2Y3LAorICAweDAwMDAwM2Y1LAorICAweDAwMDAwMWY4LAorICAweDAwMDAwMWY3LAorICAweDAwMDAwMGZhLAorICAweDAwMDAwMGY4LAorICAweDAwMDAwMGY2LAorICAweDAwMDAwMDc5LAorICAweDAwMDAwMDNhLAorICAweDAwMDAwMDM4LAorICAweDAwMDAwMDFhLAorICAweDAwMDAwMDBiLAorICAweDAwMDAwMDA0LAorICAweDAwMDAwMDAwLAorICAweDAwMDAwMDBhLAorICAweDAwMDAwMDBjLAorICAweDAwMDAwMDFiLAorICAweDAwMDAwMDM5LAorICAweDAwMDAwMDNiLAorICAweDAwMDAwMDc4LAorICAweDAwMDAwMDdhLAorICAweDAwMDAwMGY3LAorICAweDAwMDAwMGY5LAorICAweDAwMDAwMWY2LAorICAweDAwMDAwMWY5LAorICAweDAwMDAwM2Y0LAorICAweDAwMDAwM2Y2LAorICAweDAwMDAwM2Y4LAorICAweDAwMDAwN2Y1LAorICAweDAwMDAwN2Y0LAorICAweDAwMDAwN2Y2LAorICAweDAwMDAwN2Y3LAorICAweDAwMDAwZmY1LAorICAweDAwMDAwZmY4LAorICAweDAwMDAxZmY0LAorICAweDAwMDAxZmY2LAorICAweDAwMDAxZmY4LAorICAweDAwMDAzZmY4LAorICAweDAwMDAzZmY0LAorICAweDAwMDBmZmYwLAorICAweDAwMDA3ZmY0LAorICAweDAwMDBmZmY2LAorICAweDAwMDA3ZmY1LAorICAweDAwMDNmZmUyLAorICAweDAwMDdmZmQ5LAorICAweDAwMDdmZmRhLAorICAweDAwMDdmZmRiLAorICAweDAwMDdmZmRjLAorICAweDAwMDdmZmRkLAorICAweDAwMDdmZmRlLAorICAweDAwMDdmZmQ4LAorICAweDAwMDdmZmQyLAorICAweDAwMDdmZmQzLAorICAweDAwMDdmZmQ0LAorICAweDAwMDdmZmQ1LAorICAweDAwMDdmZmQ2LAorICAweDAwMDdmZmYyLAorICAweDAwMDdmZmRmLAorICAweDAwMDdmZmU3LAorICAweDAwMDdmZmU4LAorICAweDAwMDdmZmU5LAorICAweDAwMDdmZmVhLAorICAweDAwMDdmZmViLAorICAweDAwMDdmZmU2LAorICAweDAwMDdmZmUwLAorICAweDAwMDdmZmUxLAorICAweDAwMDdmZmUyLAorICAweDAwMDdmZmUzLAorICAweDAwMDdmZmU0LAorICAweDAwMDdmZmU1LAorICAweDAwMDdmZmQ3LAorICAweDAwMDdmZmVjLAorICAweDAwMDdmZmY0LAorICAweDAwMDdmZmYzCit9OworCitjb25zdCBXb3JkMzIgbV9sb2cyX3RhYmxlW0lOVF9CSVRTXSA9IHsKKyAgMHgwMDAwMDAwMCwweDRhZTAwZDAwLDB4MjkzNGYwODAsMHgxNWMwMWEzZiwgCisgIDB4MGIzMWZiODAsMHgwNWFlYjRlMCwweDAyZGNmMmQwLDB4MDE2ZmU1MGMsIAorICAweDAwYjg0ZTIzLDB4MDA1YzNlMTAsMHgwMDJlMjRjYSwweDAwMTcxM2Q2LAorICAweDAwMGI4YTQ3LDB4MDAwNWM1M2IsMHgwMDAyZTJhMywweDAwMDE3MTUzLAorICAweDAwMDBiOGFhLDB4MDAwMDVjNTUsMHgwMDAwMmUyYiwweDAwMDAxNzE1LAorICAweDAwMDAwYjhiLDB4MDAwMDA1YzUsMHgwMDAwMDJlMywweDAwMDAwMTcxLCAKKyAgMHgwMDAwMDBiOSwweDAwMDAwMDVjLDB4MDAwMDAwMmUsMHgwMDAwMDAxNywKKyAgMHgwMDAwMDAwYywweDAwMDAwMDA2LDB4MDAwMDAwMDMsMHgwMDAwMDAwMQorfTsKKworCisvKgorICAzIGJpdCByZXNvbHV0aW9uCisqLworY29uc3QgV29yZDMyIHRuc0NvZWZmM1s4XSA9Cit7CisgIDB4ODFmMWQxZDQsCisgIDB4OTEyNjE0N2MsCisgIDB4YWRiOTIyZjcsCisgIDB4ZDQzOGFmMDksCisgIDB4MDAwMDAwMDAsCisgIDB4Mzc4OTgwODcsCisgIDB4NjQxMzBkZmEsCisgIDB4N2NjYTZmZmIsCit9OworCitjb25zdCBXb3JkMzIgdG5zQ29lZmYzQm9yZGVyc1s4XSA9Cit7CisgIDB4ODAwMDAwMDAsICAvKiAtNCAqLworICAweDg3YjgyNmRlLCAgLyogLTMgKi8KKyAgMHg5ZGYyNDE1MywgIC8qIC0yICovCisgIDB4YmZmZmZmZTUsICAvKiAtMSAqLworICAweGU5YzVlNTc4LCAgLyogIDAgKi8KKyAgMHgxYzdiOTBmMCwgIC8qICAxICovCisgIDB4NGZjZTgzYWEsICAvKiAgMiAqLworICAweDczNTJmMmM0LCAgLyogIDMgKi8KK307CisKKworLyoKKyAgNCBiaXQgcmVzb2x1dGlvbgorKi8KKworY29uc3QgV29yZDMyIHRuc0NvZWZmNFsxNl0gPQoreworICAweDgwOGJjODRiLAorICAweDg0ZTJlNTdkLAorICAweDhkNmI0OWZiLAorICAweDk5ZGE5MjA3LAorICAweGE5YzQ1NzA3LAorICAweGJjOWRkZTc4LAorICAweGQxYzJkNGZjLAorICAweGU4N2FlNTM5LAorICAweDAwMDAwMDAwLAorICAweDFhOWNkOWMwLAorICAweDM0MGZmMjNiLAorICAweDRiM2M4YmY3LAorICAweDVmMWY1ZTgwLAorICAweDZlZDllYjg0LAorICAweDc5YmMzODgwLAorICAweDdmNGM3ZTg5Cit9OworCitjb25zdCBXb3JkMzIgdG5zQ29lZmY0Qm9yZGVyc1sxNl09Cit7CisgIDB4ODAwMDAwMDAsICAvKiAtOCAqLworICAweDgyMmRlZmVmLCAgLyogLTcgKi8KKyAgMHg4OGE0YmZlNSwgIC8qIC02ICovCisgIDB4OTMyYzE1OWMsICAvKiAtNSAqLworICAweGExNjgyN2MxLCAgLyogLTQgKi8KKyAgMHhiMmRjZGUyNiwgIC8qIC0zICovCisgIDB4YzZmMjBiOTEsICAvKiAtMiAqLworICAweGRjZjg5YzY0LCAgLyogLTEgKi8KKyAgMHhmNDMwOGNlMSwgIC8qICAwICovCisgIDB4MGQ2MTMwNTQsICAvKiAgMSAqLworICAweDI3OGRkZTgwLCAgLyogIDIgKi8KKyAgMHg0MDAwMDAxYiwgIC8qICAzICovCisgIDB4NTVhNjEyN2MsICAvKiAgNCAqLworICAweDY3OGRkZThmLCAgLyogIDUgKi8KKyAgMHg3NGVmMGVkOCwgIC8qICA2ICovCisgIDB4N2QzM2YwZGIgICAvKiAgNyAqLworfTsKKworCitjb25zdCB1bnNpZ25lZCBjaGFyIGJpdHJldlRhYlsxNyArIDEyOV0gPSANCit7DQorLyogNjQgKi8NCisweDAxLCAweDA4LCAweDAyLCAweDA0LCAweDAzLCAweDBjLCAweDA1LCAweDBhLCAweDA3LCAweDBlLCAweDBiLCAweDBkLCAweDAwLCAweDA2LCAweDA5LCAweDBmLA0KKzB4MDAsDQorDQorLyogNTEyICovDQorMHgwMSwgMHg0MCwgMHgwMiwgMHgyMCwgMHgwMywgMHg2MCwgMHgwNCwgMHgxMCwgMHgwNSwgMHg1MCwgMHgwNiwgMHgzMCwgMHgwNywgMHg3MCwgMHgwOSwgMHg0OCwNCisweDBhLCAweDI4LCAweDBiLCAweDY4LCAweDBjLCAweDE4LCAweDBkLCAweDU4LCAweDBlLCAweDM4LCAweDBmLCAweDc4LCAweDExLCAweDQ0LCAweDEyLCAweDI0LA0KKzB4MTMsIDB4NjQsIDB4MTUsIDB4NTQsIDB4MTYsIDB4MzQsIDB4MTcsIDB4NzQsIDB4MTksIDB4NGMsIDB4MWEsIDB4MmMsIDB4MWIsIDB4NmMsIDB4MWQsIDB4NWMsDQorMHgxZSwgMHgzYywgMHgxZiwgMHg3YywgMHgyMSwgMHg0MiwgMHgyMywgMHg2MiwgMHgyNSwgMHg1MiwgMHgyNiwgMHgzMiwgMHgyNywgMHg3MiwgMHgyOSwgMHg0YSwNCisweDJiLCAweDZhLCAweDJkLCAweDVhLCAweDJlLCAweDNhLCAweDJmLCAweDdhLCAweDMxLCAweDQ2LCAweDMzLCAweDY2LCAweDM1LCAweDU2LCAweDM3LCAweDc2LA0KKzB4MzksIDB4NGUsIDB4M2IsIDB4NmUsIDB4M2QsIDB4NWUsIDB4M2YsIDB4N2UsIDB4NDMsIDB4NjEsIDB4NDUsIDB4NTEsIDB4NDcsIDB4NzEsIDB4NGIsIDB4NjksDQorMHg0ZCwgMHg1OSwgMHg0ZiwgMHg3OSwgMHg1MywgMHg2NSwgMHg1NywgMHg3NSwgMHg1YiwgMHg2ZCwgMHg1ZiwgMHg3ZCwgMHg2NywgMHg3MywgMHg2ZiwgMHg3YiwNCisweDAwLCAweDA4LCAweDE0LCAweDFjLCAweDIyLCAweDJhLCAweDM2LCAweDNlLCAweDQxLCAweDQ5LCAweDU1LCAweDVkLCAweDYzLCAweDZiLCAweDc3LCAweDdmLA0KKzB4MDAsDQorfTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9hYWNlbmMuYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL2FhY2VuYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1MmFlNDEKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9hYWNlbmMuYwpAQCAtMCwwICsxLDQ5NSBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJYWFjZW5jLmMNCisNCisJQ29udGVudDoJYWFjIGVuY29kZXIgaW50ZXJmYWNlIGZ1bmN0aW9ucw0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2luY2x1ZGUgInZvQUFDLmgiDQorI2luY2x1ZGUgInR5cGVkZWYuaCINCisjaW5jbHVkZSAiYWFjZW5jX2NvcmUuaCINCisjaW5jbHVkZSAiYWFjX3JvbS5oIg0KKyNpbmNsdWRlICJjbW5NZW1vcnkuaCINCisjaW5jbHVkZSAibWVtYWxpZ24uaCINCisNCisvKioNCisqIEluaXQgdGhlIGF1ZGlvIGNvZGVjIG1vZHVsZSBhbmQgcmV0dXJuIGNvZGVjIGhhbmRsZQ0KKyogXHBhcmFtIHBoQ29kZWMgW09VVF0gUmV0dXJuIHRoZSB2aWRlbyBjb2RlYyBoYW5kbGUNCisqIFxwYXJhbSB2VHlwZQlbSU5dIFRoZSBjb2RlYyB0eXBlIGlmIHRoZSBtb2R1bGUgc3VwcG9ydCBtdWx0aSBjb2RlYy4NCisqIFxwYXJhbSBwVXNlckRhdGEJW0lOXSBUaGUgaW5pdCBwYXJhbS4gSXQgaXMgbWVtb3J5IG9wZXJhdG9yIG9yIGFsbG9jZWQgbWVtb3J5DQorKiBccmV0dmFsIFZPX0VSUl9OT05FIFN1Y2NlZWRlZC4NCisqLw0KK1ZPX1UzMiBWT19BUEkgdm9BQUNFbmNJbml0KFZPX0hBTkRMRSAqIHBoQ29kZWMsVk9fQVVESU9fQ09ESU5HVFlQRSB2VHlwZSwgVk9fQ09ERUNfSU5JVF9VU0VSREFUQSAqcFVzZXJEYXRhKQ0KK3sNCisJQUFDX0VOQ09ERVIqaEFhY0VuYzsNCisJQUFDRU5DX0NPTkZJRyBjb25maWc7DQorCWludCBlcnJvcjsNCisNCisjaWZkZWYgVVNFX0RFQVVMVF9NRU0NCisJVk9fTUVNX09QRVJBVE9SIHZvTWVtb3ByYXRvcjsNCisjZW5kaWYNCisJVk9fTUVNX09QRVJBVE9SICpwTWVtT1A7DQorCWludCBpbnRlck1lbTsNCisNCisJaW50ZXJNZW0gPSAwOw0KKwllcnJvciA9IDA7DQorCQ0KKwkvKiBpbml0IHRoZSBtZW1vcnkgb3BlcmF0b3IgKi8NCisJaWYocFVzZXJEYXRhID09IE5VTEwgfHwgcFVzZXJEYXRhLT5tZW1mbGFnICE9IFZPX0lNRl9VU0VSTUVNT1BFUkFUT1IgfHwgcFVzZXJEYXRhLT5tZW1EYXRhID09IE5VTEwgKQ0KKwl7DQorI2lmZGVmIFVTRV9ERUFVTFRfTUVNDQorCQl2b01lbW9wcmF0b3IuQWxsb2MgPSBjbW5NZW1BbGxvYzsNCisJCXZvTWVtb3ByYXRvci5Db3B5ID0gY21uTWVtQ29weTsNCisJCXZvTWVtb3ByYXRvci5GcmVlID0gY21uTWVtRnJlZTsNCisJCXZvTWVtb3ByYXRvci5TZXQgPSBjbW5NZW1TZXQ7DQorCQl2b01lbW9wcmF0b3IuQ2hlY2sgPSBjbW5NZW1DaGVjazsNCisNCisJCWludGVyTWVtID0gMTsNCisNCisJCXBNZW1PUCA9ICZ2b01lbW9wcmF0b3I7DQorI2Vsc2UNCisJCSpwaENvZGVjID0gTlVMTDsNCisJCXJldHVybiBWT19FUlJfSU5WQUxJRF9BUkc7DQorI2VuZGlmDQorCX0NCisJZWxzZQ0KKwl7DQorCQlwTWVtT1AgPSAoVk9fTUVNX09QRVJBVE9SICopcFVzZXJEYXRhLT5tZW1EYXRhOw0KKwl9DQorDQorCS8qIGluaXQgdGhlIGFhYyBlbmNvZGVyIGhhbmRsZSAqLw0KKwloQWFjRW5jID0gKEFBQ19FTkNPREVSKiltZW1fbWFsbG9jKHBNZW1PUCwgc2l6ZW9mKEFBQ19FTkNPREVSKSwgMzIsIFZPX0lOREVYX0VOQ19BQUMpOw0KKwlpZihOVUxMID09IGhBYWNFbmMpDQorCXsNCisJCWVycm9yID0gMTsNCisJfQ0KKw0KKwlpZighZXJyb3IpDQorCXsNCisJCS8qIGluaXQgdGhlIGFhYyBlbmNvZGVyIGludHJhIG1lbW9yeSAqLw0KKwkJaEFhY0VuYy0+aW50YnVmID0gKHNob3J0ICopbWVtX21hbGxvYyhwTWVtT1AsIEFBQ0VOQ19CTE9DS1NJWkUqTUFYX0NIQU5ORUxTKnNpemVvZihzaG9ydCksIDMyLCBWT19JTkRFWF9FTkNfQUFDKTsNCisJCWlmKE5VTEwgPT0gaEFhY0VuYy0+aW50YnVmKQ0KKwkJew0KKwkJCWVycm9yID0gMTsNCisJCX0NCisJfQ0KKw0KKwlpZiAoIWVycm9yKSB7CisJCS8qIGluaXQgdGhlIGFhYyBlbmNvZGVyIHBzeWNob2Fjb3VzdGljICovCisJCWVycm9yID0gKFBzeU5ldygmaEFhY0VuYy0+cHN5S2VybmVsLCBNQVhfQ0hBTk5FTFMsIHBNZW1PUCkgfHwKKwkJCVBzeU91dE5ldygmaEFhY0VuYy0+cHN5T3V0LCBwTWVtT1ApKTsKKwl9DQorDQorCWlmICghZXJyb3IpIHsKKwkJLyogaW5pdCB0aGUgYWFjIGVuY29kZXIgcXVhbnRpemF0aW9uIGVsZW1lbnRzICovCisJCWVycm9yID0gUUNPdXROZXcoJmhBYWNFbmMtPnFjT3V0LE1BWF9DSEFOTkVMUywgcE1lbU9QKTsKKwl9DQorDQorCWlmICghZXJyb3IpIHsKKwkJLyogaW5pdCB0aGUgYWFjIGVuY29kZXIgcXVhbnRpemF0aW9uIHN0YXRlICovCisJCWVycm9yID0gUUNOZXcoJmhBYWNFbmMtPnFjS2VybmVsLCBwTWVtT1ApOworCX0KKworCS8qIHVuaW5pdCB0aGUgYWFjIGVuY29kZXIgaWYgZXJyb3IgaXMgbm96ZXJvICovCisJaWYoZXJyb3IpCisJeworCQlBYWNFbmNDbG9zZShoQWFjRW5jLCBwTWVtT1ApOworCQlpZihoQWFjRW5jKQorCQl7CisJCQltZW1fZnJlZShwTWVtT1AsIGhBYWNFbmMsIFZPX0lOREVYX0VOQ19BQUMpOworCQkJaEFhY0VuYyA9IE5VTEw7CisJCX0JCQorCQkqcGhDb2RlYyA9IE5VTEw7CisJCXJldHVybiBWT19FUlJfT1VUT0ZfTUVNT1JZOworCX0NCisNCisJLyogaW5pdCB0aGUgYWFjIGVuY29kZXIgbWVtb3J5IG9wZXJhdG9yICAqLw0KKyNpZmRlZiBVU0VfREVBVUxUX01FTQ0KKwlpZihpbnRlck1lbSkNCisJew0KKwkJaEFhY0VuYy0+dm9NZW1vcHJhdG9yLkFsbG9jID0gY21uTWVtQWxsb2M7DQorCQloQWFjRW5jLT52b01lbW9wcmF0b3IuQ29weSA9IGNtbk1lbUNvcHk7DQorCQloQWFjRW5jLT52b01lbW9wcmF0b3IuRnJlZSA9IGNtbk1lbUZyZWU7DQorCQloQWFjRW5jLT52b01lbW9wcmF0b3IuU2V0ID0gY21uTWVtU2V0Ow0KKwkJaEFhY0VuYy0+dm9NZW1vcHJhdG9yLkNoZWNrID0gY21uTWVtQ2hlY2s7DQorDQorCQlwTWVtT1AgPSAmaEFhY0VuYy0+dm9NZW1vcHJhdG9yOw0KKwl9DQorI2VuZGlmDQorCS8qIGluaXQgdGhlIGFhYyBlbmNvZGVyIGRlZmF1bHQgcGFyYW1ldGVyICAqLw0KKwlpZihoQWFjRW5jLT5pbml0T0sgPT0gMCkNCisJew0KKwkJIEFBQ0VOQ19DT05GSUcgY29uZmlnOw0KKwkJIGNvbmZpZy5hZHRzVXNlZCA9IDE7DQorCQkgY29uZmlnLmJpdFJhdGUgPSAxMjgwMDA7DQorCQkgY29uZmlnLm5DaGFubmVsc0luID0gMjsNCisJCSBjb25maWcubkNoYW5uZWxzT3V0ID0gMjsNCisJCSBjb25maWcuc2FtcGxlUmF0ZSA9IDQ0MTAwOw0KKwkJIGNvbmZpZy5iYW5kV2lkdGggPSAyMDAwMDsNCisNCisJCSBBYWNFbmNPcGVuKGhBYWNFbmMsIGNvbmZpZyk7DQorCX0NCisNCisJaEFhY0VuYy0+dm9NZW1vcCA9IHBNZW1PUDsNCisNCisJKnBoQ29kZWMgPSBoQWFjRW5jOw0KKw0KKwlyZXR1cm4gVk9fRVJSX05PTkU7DQorfQ0KKw0KKy8qKg0KKyogU2V0IGlucHV0IGF1ZGlvIGRhdGEuDQorKiBccGFyYW0gaENvZGVjIFtJTl1dIFRoZSBDb2RlYyBIYW5kbGUgd2hpY2ggd2FzIGNyZWF0ZWQgYnkgSW5pdCBmdW5jdGlvbi4NCisqIFxwYXJhbSBwSW5wdXQgW0lOXSBUaGUgaW5wdXQgYnVmZmVyIHBhcmFtLg0KKyogXHBhcmFtIHBPdXRCdWZmZXIgW09VVF0gVGhlIG91dHB1dCBidWZmZXIgaW5mby4NCisqIFxyZXR2YWwgVk9fRVJSX05PTkUgU3VjY2VlZGVkLg0KKyovDQorVk9fVTMyIFZPX0FQSSB2b0FBQ0VuY1NldElucHV0RGF0YShWT19IQU5ETEUgaENvZGVjLCBWT19DT0RFQ0JVRkZFUiAqIHBJbnB1dCkNCit7DQorCUFBQ19FTkNPREVSICpoQWFjRW5jOw0KKwlpbnQgIGxlbmd0aDsNCisNCisJaWYoTlVMTCA9PSBoQ29kZWMgfHwgTlVMTCA9PSBwSW5wdXQgfHwgTlVMTCA9PSBwSW5wdXQtPkJ1ZmZlcikNCisJew0KKwkJcmV0dXJuIFZPX0VSUl9JTlZBTElEX0FSRzsNCisJfQ0KKwkNCisJaEFhY0VuYyA9IChBQUNfRU5DT0RFUiAqKWhDb2RlYzsNCisJDQorCS8qIGluaXQgaW5wdXQgcGNtIGJ1ZmZlciBhbmQgbGVuZ3RoKi8NCisJaEFhY0VuYy0+aW5idWYgPSAoc2hvcnQgKilwSW5wdXQtPkJ1ZmZlcjsNCisJaEFhY0VuYy0+aW5sZW4gPSBwSW5wdXQtPkxlbmd0aCAvIHNpemVvZihzaG9ydCk7DQorCWhBYWNFbmMtPnVzZWxlbmd0aCA9IDA7DQorDQorCWhBYWNFbmMtPmVuY2J1ZiA9IGhBYWNFbmMtPmluYnVmOw0KKwloQWFjRW5jLT5lbmNsZW4gPSBoQWFjRW5jLT5pbmxlbjsNCisJDQorCS8qIHJlYnVpbGQgaW50cmEgcGNtIGJ1ZmZlciBhbmQgbGVuZ3RoKi8NCisJaWYoaEFhY0VuYy0+aW50bGVuKQ0KKwl7DQorCQlsZW5ndGggPSBtaW4oaEFhY0VuYy0+Y29uZmlnLm5DaGFubmVsc0luKkFBQ0VOQ19CTE9DS1NJWkUgLSBoQWFjRW5jLT5pbnRsZW4sIGhBYWNFbmMtPmlubGVuKTsNCisJCWhBYWNFbmMtPnZvTWVtb3AtPkNvcHkoVk9fSU5ERVhfRU5DX0FBQywgaEFhY0VuYy0+aW50YnVmICsgaEFhY0VuYy0+aW50bGVuLCANCisJCQloQWFjRW5jLT5pbmJ1ZiwgbGVuZ3RoKnNpemVvZihzaG9ydCkpOw0KKw0KKwkJaEFhY0VuYy0+ZW5jYnVmID0gaEFhY0VuYy0+aW50YnVmOw0KKwkJaEFhY0VuYy0+ZW5jbGVuID0gaEFhY0VuYy0+aW50bGVuICsgbGVuZ3RoOw0KKw0KKwkJaEFhY0VuYy0+aW5idWYgKz0gbGVuZ3RoOw0KKwkJaEFhY0VuYy0+aW5sZW4gLT0gbGVuZ3RoOw0KKwl9DQorCQ0KKwlyZXR1cm4gVk9fRVJSX05PTkU7DQorfQ0KKw0KKy8qKg0KKyogR2V0IHRoZSBvdXR1dCBhdWRpbyBkYXRhDQorKiBccGFyYW0gaENvZGVjIFtJTl1dIFRoZSBDb2RlYyBIYW5kbGUgd2hpY2ggd2FzIGNyZWF0ZWQgYnkgSW5pdCBmdW5jdGlvbi4NCisqIFxwYXJhbSBwT3V0QnVmZmVyIFtPVVRdIFRoZSBvdXRwdXQgYXVkaW8gZGF0YQ0KKyogXHBhcmFtIHBPdXRJbmZvIFtPVVRdIFRoZSBkZWMgbW9kdWxlIGZpbGxlZCBhdWRpbyBmb3JtYXQgYW5kIHVzZWQgdGhlIGlucHV0IHNpemUuDQorKgkJCQkJCSBwT3V0SW5mby0+SW5wdXRVc2VkIGlzIHRvdGFsIHVzZWQgdGhlIGlucHV0IHNpemUuDQorKiBccmV0dmFsICBWT19FUlJfTk9ORSBTdWNjZWVkZWQuDQorKgkJCVZPX0VSUl9JTlBVVF9CVUZGRVJfU01BTEwuIFRoZSBpbnB1dCB3YXMgZmluaXNoZWQgb3IgdGhlIGlucHV0IGRhdGEgd2FzIG5vdCBlbm91Z2h0Lg0KKyovDQorVk9fVTMyIFZPX0FQSSB2b0FBQ0VuY0dldE91dHB1dERhdGEoVk9fSEFORExFIGhDb2RlYywgVk9fQ09ERUNCVUZGRVIgKiBwT3V0cHV0LCBWT19BVURJT19PVVRQVVRJTkZPICogcE91dEluZm8pDQorew0KKwlBQUNfRU5DT0RFUiogaEFhY0VuYyA9IChBQUNfRU5DT0RFUiopaENvZGVjOw0KKwlXb3JkMTYgbnVtQW5jRGF0YUJ5dGVzPTA7DQorCVdvcmQzMiAgaW5idWZsZW47DQorCWludCByZXQsIGxlbmd0aDsNCisJaWYoTlVMTCA9PSBoQWFjRW5jKQ0KKwkJcmV0dXJuIFZPX0VSUl9JTlZBTElEX0FSRzsNCisNCisJIGluYnVmbGVuID0gQUFDRU5DX0JMT0NLU0laRSpoQWFjRW5jLT5jb25maWcubkNoYW5uZWxzSW47DQorDQorCSAvKiBjaGVjayB0aGUgaW5wdXQgcGNtIGJ1ZmZlciBhbmQgbGVuZ3RoKi8NCisJIGlmKE5VTEwgPT0gaEFhY0VuYy0+ZW5jYnVmIHx8IGhBYWNFbmMtPmVuY2xlbiA8IGluYnVmbGVuKQ0KKwkgew0KKwkJbGVuZ3RoID0gaEFhY0VuYy0+ZW5jbGVuOwkJDQorCQlpZihoQWFjRW5jLT5pbnRsZW4gPT0gMCkNCisJCXsJDQorCQkJaEFhY0VuYy0+dm9NZW1vcC0+Q29weShWT19JTkRFWF9FTkNfQUFDLCBoQWFjRW5jLT5pbnRidWYsIA0KKwkJCQloQWFjRW5jLT5lbmNidWYsIGxlbmd0aCpzaXplb2Yoc2hvcnQpKTsJCQ0KKwkJCWhBYWNFbmMtPnVzZWxlbmd0aCArPSBsZW5ndGgqc2l6ZW9mKHNob3J0KTsNCisJCX0NCisJCWVsc2UNCisJCXsNCisJCQloQWFjRW5jLT51c2VsZW5ndGggKz0gKGxlbmd0aCAtIGhBYWNFbmMtPmludGxlbikqc2l6ZW9mKHNob3J0KTsNCisJCX0NCisNCisJCWhBYWNFbmMtPmludGxlbiA9IGxlbmd0aDsNCisNCisJCXBPdXRwdXQtPkxlbmd0aCA9IDA7DQorCQlpZihwT3V0SW5mbykNCisJCQlwT3V0SW5mby0+SW5wdXRVc2VkID0gaEFhY0VuYy0+dXNlbGVuZ3RoOw0KKwkJcmV0dXJuIFZPX0VSUl9JTlBVVF9CVUZGRVJfU01BTEw7CQ0KKwkgfQ0KKw0KKwkgLyogY2hlY2sgdGhlIG91dHB1dCBhYWMgYnVmZmVyIGFuZCBsZW5ndGgqLw0KKwkgaWYoTlVMTCA9PSBwT3V0cHV0IHx8IE5VTEwgPT0gcE91dHB1dC0+QnVmZmVyIHx8IHBPdXRwdXQtPkxlbmd0aCA8ICg2MTQ0LzgpKmhBYWNFbmMtPmNvbmZpZy5uQ2hhbm5lbHNPdXQvKHNpemVvZihXb3JkMzIpKSkNCisJCSByZXR1cm4gVk9fRVJSX09VVFBVVF9CVUZGRVJfU01BTEw7DQorDQorCSAvKiBhYWMgZW5jb2RlciBjb3JlIGZ1bmN0aW9uICovDQorCSBBYWNFbmNFbmNvZGUoIGhBYWNFbmMsDQorCQkJKFdvcmQxNiopaEFhY0VuYy0+ZW5jYnVmLA0KKwkJCU5VTEwsDQorCQkJJm51bUFuY0RhdGFCeXRlcywNCisJCQlwT3V0cHV0LT5CdWZmZXIsDQorCQkJJnBPdXRwdXQtPkxlbmd0aCk7DQorDQorCSAvKiB1cGRhdGUgdGhlIGlucHV0IHBjbSBidWZmZXIgYW5kIGxlbmd0aCovDQorCSBpZihoQWFjRW5jLT5pbnRsZW4pDQorCSB7DQorCQlsZW5ndGggPSBpbmJ1ZmxlbiAtIGhBYWNFbmMtPmludGxlbjsJCQ0KKwkJaEFhY0VuYy0+ZW5jYnVmID0gaEFhY0VuYy0+aW5idWY7DQorCQloQWFjRW5jLT5lbmNsZW4gPSBoQWFjRW5jLT5pbmxlbjsNCisJCWhBYWNFbmMtPnVzZWxlbmd0aCArPSBsZW5ndGgqc2l6ZW9mKHNob3J0KTsNCisJCWhBYWNFbmMtPmludGxlbiA9IDA7DQorCSB9DQorCSBlbHNlDQorCSB7DQorCQkgaEFhY0VuYy0+ZW5jYnVmID0gaEFhY0VuYy0+ZW5jYnVmICsgaW5idWZsZW47DQorCQkgaEFhY0VuYy0+ZW5jbGVuID0gaEFhY0VuYy0+ZW5jbGVuIC0gaW5idWZsZW47DQorCQkgaEFhY0VuYy0+dXNlbGVuZ3RoICs9IGluYnVmbGVuKnNpemVvZihzaG9ydCk7DQorCSB9CSANCisNCisJIC8qIHVwZGF0ZSB0aGUgb3V0cHV0IGFhYyBpbmZvcm1hdGlvbiAqLw0KKwlpZihwT3V0SW5mbykNCisJew0KKwkJcE91dEluZm8tPkZvcm1hdC5DaGFubmVscyA9IGhBYWNFbmMtPmNvbmZpZy5uQ2hhbm5lbHNPdXQ7DQorCQlwT3V0SW5mby0+Rm9ybWF0LlNhbXBsZVJhdGUgPSBoQWFjRW5jLT5jb25maWcuc2FtcGxlUmF0ZTsNCisJCXBPdXRJbmZvLT5Gb3JtYXQuU2FtcGxlQml0cyA9IDE2Ow0KKwkJcE91dEluZm8tPklucHV0VXNlZCA9IGhBYWNFbmMtPnVzZWxlbmd0aDsNCisJfQ0KKw0KKwkgcmV0dXJuIFZPX0VSUl9OT05FOw0KK30NCisNCisvKioNCisqIFVuaW5pdCB0aGUgQ29kZWMuDQorKiBccGFyYW0gaENvZGVjIFtJTl1dIFRoZSBDb2RlYyBIYW5kbGUgd2hpY2ggd2FzIGNyZWF0ZWQgYnkgSW5pdCBmdW5jdGlvbi4NCisqIFxyZXR2YWwgVk9fRVJSX05PTkUgU3VjY2VlZGVkLg0KKyovDQorVk9fVTMyIFZPX0FQSSB2b0FBQ0VuY1VuaW5pdChWT19IQU5ETEUgaENvZGVjKQ0KK3sNCisJQUFDX0VOQ09ERVIqIGhBYWNFbmMgPSAoQUFDX0VOQ09ERVIqKWhDb2RlYzsNCisJDQorCWlmKE5VTEwgIT0gaEFhY0VuYykNCisJew0KKwkJLyogY2xvc2UgdGhlIGFhYyBlbmNvZGVyICovDQorCQlBYWNFbmNDbG9zZShoQWFjRW5jLCBoQWFjRW5jLT52b01lbW9wKTsNCisNCisJCS8qIGZyZWUgdGhlIGFhYyBlbmNvZGVyIGhhbmRsZSovDQorCQltZW1fZnJlZShoQWFjRW5jLT52b01lbW9wLCBoQWFjRW5jLCBWT19JTkRFWF9FTkNfQUFDKTsNCisJCWhBYWNFbmMgPSBOVUxMOw0KKwl9CQ0KKw0KKwlyZXR1cm4gVk9fRVJSX05PTkU7DQorfQ0KKw0KKy8qKg0KKyogU2V0IHRoZSBwYXJhbSBmb3Igc3BlY2lhbCB0YXJnZXQuDQorKiBccGFyYW0gaENvZGVjIFtJTl1dIFRoZSBDb2RlYyBIYW5kbGUgd2hpY2ggd2FzIGNyZWF0ZWQgYnkgSW5pdCBmdW5jdGlvbi4NCisqIFxwYXJhbSB1UGFyYW1JRCBbSU5dIFRoZSBwYXJhbSBJRC4NCisqIFxwYXJhbSBwRGF0YSBbSU5dIFRoZSBwYXJhbSB2YWx1ZSBkZXBlbmQgb24gdGhlIElEPg0KKyogXHJldHZhbCBWT19FUlJfTk9ORSBTdWNjZWVkZWQuDQorKi8NCitWT19VMzIgVk9fQVBJIHZvQUFDRW5jU2V0UGFyYW0oVk9fSEFORExFIGhDb2RlYywgVk9fUzMyIHVQYXJhbUlELCBWT19QVFIgcERhdGEpDQorew0KKwlBQUNFTkNfQ09ORklHIGNvbmZpZzsNCisJQUFDRU5DX1BBUkFNKiBwQUFDX3BhcmFtOw0KKwlWT19BVURJT19GT1JNQVQgKnBXQVZfRm9ybWF0Ow0KKwlBQUNfRU5DT0RFUiogaEFhY0VuYyA9IChBQUNfRU5DT0RFUiopaENvZGVjOw0KKwlpbnQgcmV0LCBpLCBiaXRyYXRlLCB0bXA7DQorCWludCBTYW1wbGVSYXRlSWR4Ow0KKw0KKwlpZihOVUxMID09IGhBYWNFbmMpDQorCQlyZXR1cm4gVk9fRVJSX0lOVkFMSURfQVJHOw0KKwkNCisJc3dpdGNoKHVQYXJhbUlEKQ0KKwl7DQorCWNhc2UgVk9fUElEX0FBQ19FTkNQQVJBTTogIC8qIGluaXQgYWFjIGVuY29kZXIgcGFyYW1ldGVyKi8NCisJCUFhY0luaXREZWZhdWx0Q29uZmlnKCZjb25maWcpOw0KKwkJaWYocERhdGEgPT0gTlVMTCkNCisJCQlyZXR1cm4gVk9fRVJSX0lOVkFMSURfQVJHOw0KKwkJcEFBQ19wYXJhbSA9IChBQUNFTkNfUEFSQU0qKXBEYXRhOw0KKwkJY29uZmlnLmFkdHNVc2VkID0gcEFBQ19wYXJhbS0+YWR0c1VzZWQ7DQorCQljb25maWcuYml0UmF0ZSA9IHBBQUNfcGFyYW0tPmJpdFJhdGU7DQorCQljb25maWcubkNoYW5uZWxzSW4gPSBwQUFDX3BhcmFtLT5uQ2hhbm5lbHM7DQorCQljb25maWcubkNoYW5uZWxzT3V0ID0gcEFBQ19wYXJhbS0+bkNoYW5uZWxzOw0KKwkJY29uZmlnLnNhbXBsZVJhdGUgPSBwQUFDX3BhcmFtLT5zYW1wbGVSYXRlOw0KKw0KKwkJLyogY2hlY2sgdGhlIGNoYW5uZWwgKi8NCisJCWlmKGNvbmZpZy5uQ2hhbm5lbHNJbjwgMSAgfHwgY29uZmlnLm5DaGFubmVsc0luID4gTUFYX0NIQU5ORUxTICB8fA0KKyAgICAgICAgICAgICBjb25maWcubkNoYW5uZWxzT3V0IDwgMSB8fCBjb25maWcubkNoYW5uZWxzT3V0ID4gTUFYX0NIQU5ORUxTIHx8IGNvbmZpZy5uQ2hhbm5lbHNJbiA8IGNvbmZpZy5uQ2hhbm5lbHNPdXQpDQorCQkJIHJldHVybiBWT19FUlJfQVVESU9fVU5TQ0hBTk5FTDsNCisNCisJCS8qIGNoZWNrIHRoZSBzYW1wbGVyYXRlICovDQorCQlyZXQgPSAtMTsNCisJCWZvcihpID0gMDsgaSA8IE5VTV9TQU1QTEVfUkFURVM7IGkrKykNCisJCXsNCisJCQlpZihjb25maWcuc2FtcGxlUmF0ZSA9PSBzYW1wUmF0ZVRhYltpXSkNCisJCQl7DQorCQkJCXJldCA9IDA7DQorCQkJCWJyZWFrOw0KKwkJCX0NCisJCX0NCisJCWlmKHJldCA8IDApDQorCQkJcmV0dXJuIFZPX0VSUl9BVURJT19VTlNTQU1QTEVSQVRFOw0KKw0KKwkJU2FtcGxlUmF0ZUlkeCA9IGk7DQorDQorCQl0bXAgPSA0NDE7DQorCQlpZihjb25maWcuc2FtcGxlUmF0ZSU4MDAwID09IDApIA0KKwkJCXRtcCA9NDgwOw0KKwkJLyogY2hlY2sgdGhlIGJpdHJhdGUgKi8NCisJCWlmKGNvbmZpZy5iaXRSYXRlIT0wICYmIChjb25maWcuYml0UmF0ZS9jb25maWcubkNoYW5uZWxzT3V0IDwgNDAwMCkgfHwNCisgICAgICAgICAgIChjb25maWcuYml0UmF0ZS9jb25maWcubkNoYW5uZWxzT3V0ID4gMTYwMDAwKSB8fCANCisJCSAgIChjb25maWcuYml0UmF0ZSA+IGNvbmZpZy5zYW1wbGVSYXRlKjYqY29uZmlnLm5DaGFubmVsc091dCkpDQorCQl7DQorCQkJY29uZmlnLmJpdFJhdGUgPSA2NDAqY29uZmlnLnNhbXBsZVJhdGUvdG1wKmNvbmZpZy5uQ2hhbm5lbHNPdXQ7DQorDQorCQkJaWYoY29uZmlnLmJpdFJhdGUvY29uZmlnLm5DaGFubmVsc091dCA8IDQwMDApDQorCQkJCWNvbmZpZy5iaXRSYXRlID0gNDAwMCAqIGNvbmZpZy5uQ2hhbm5lbHNPdXQ7DQorCQkJZWxzZSBpZihjb25maWcuYml0UmF0ZSA+IGNvbmZpZy5zYW1wbGVSYXRlKjYqY29uZmlnLm5DaGFubmVsc091dCkNCisJCQkJY29uZmlnLmJpdFJhdGUgPSBjb25maWcuc2FtcGxlUmF0ZSo2KmNvbmZpZy5uQ2hhbm5lbHNPdXQ7DQorCQkJZWxzZSBpZihjb25maWcuYml0UmF0ZS9jb25maWcubkNoYW5uZWxzT3V0ID4gMTYwMDAwKQ0KKwkJCQljb25maWcuYml0UmF0ZSA9IGNvbmZpZy5uQ2hhbm5lbHNPdXQqMTYwMDAwOw0KKwkJfQ0KKw0KKwkJLyogY2hlY2sgdGhlIGJhbmR3aWR0aCAqLw0KKwkJYml0cmF0ZSA9IGNvbmZpZy5iaXRSYXRlIC8gY29uZmlnLm5DaGFubmVsc091dDsNCisJCWJpdHJhdGUgPSBiaXRyYXRlICogdG1wIC8gY29uZmlnLnNhbXBsZVJhdGU7DQorDQorCQlmb3IgKGkgPSAwOyByYXRlc1tpXTsgaSsrKQ0KKwkJew0KKwkJCWlmIChyYXRlc1tpXSA+PSBiaXRyYXRlKQ0KKwkJCQlicmVhazsNCisJCX0NCisNCisJCWNvbmZpZy5iYW5kV2lkdGggPSBCYW5kd2l0aENvZWZUYWJbaV1bU2FtcGxlUmF0ZUlkeF07DQorDQorCQkvKiBpbml0IGFhYyBlbmNvZGVyIGNvcmUgKi8NCisJCXJldCA9IEFhY0VuY09wZW4oaEFhY0VuYywgY29uZmlnKTsNCisJCWlmKHJldCkgDQorCQkJcmV0dXJuIFZPX0VSUl9BVURJT19VTlNGRUFUVVJFOw0KKwkJYnJlYWs7DQorCWNhc2UgVk9fUElEX0FVRElPX0ZPUk1BVDoJLyogaW5pdCBwY20gY2hhbm5lbCBhbmQgc2FtcGxlcmF0ZSovDQorCQlBYWNJbml0RGVmYXVsdENvbmZpZygmY29uZmlnKTsNCisJCWlmKHBEYXRhID09IE5VTEwpDQorCQkJcmV0dXJuIFZPX0VSUl9JTlZBTElEX0FSRzsNCisJCXBXQVZfRm9ybWF0ID0gKFZPX0FVRElPX0ZPUk1BVCopcERhdGE7DQorCQljb25maWcuYWR0c1VzZWQgPSAxOw0KKwkJY29uZmlnLm5DaGFubmVsc0luID0gcFdBVl9Gb3JtYXQtPkNoYW5uZWxzOw0KKwkJY29uZmlnLm5DaGFubmVsc091dCA9IHBXQVZfRm9ybWF0LT5DaGFubmVsczsNCisJCWNvbmZpZy5zYW1wbGVSYXRlID0gcFdBVl9Gb3JtYXQtPlNhbXBsZVJhdGU7DQorDQorCQkvKiBjaGVjayB0aGUgY2hhbm5lbCAqLw0KKwkJaWYoY29uZmlnLm5DaGFubmVsc0luPCAxICB8fCBjb25maWcubkNoYW5uZWxzSW4gPiBNQVhfQ0hBTk5FTFMgIHx8DQorICAgICAgICAgICAgIGNvbmZpZy5uQ2hhbm5lbHNPdXQgPCAxIHx8IGNvbmZpZy5uQ2hhbm5lbHNPdXQgPiBNQVhfQ0hBTk5FTFMgfHwgY29uZmlnLm5DaGFubmVsc0luIDwgY29uZmlnLm5DaGFubmVsc091dCkNCisJCQkgcmV0dXJuIFZPX0VSUl9BVURJT19VTlNDSEFOTkVMOw0KKw0KKwkJLyogY2hlY2sgdGhlIHNhbXBsZWJpdHMgKi8NCisJCWlmKHBXQVZfRm9ybWF0LT5TYW1wbGVCaXRzICE9IDE2KQ0KKwkJew0KKwkJCXJldHVybiBWT19FUlJfQVVESU9fVU5TRkVBVFVSRTsNCisJCX0NCisNCisJCS8qIGNoZWNrIHRoZSBzYW1wbGVyYXRlICovDQorCQlyZXQgPSAtMTsNCisJCWZvcihpID0gMDsgaSA8IE5VTV9TQU1QTEVfUkFURVM7IGkrKykNCisJCXsNCisJCQlpZihjb25maWcuc2FtcGxlUmF0ZSA9PSBzYW1wUmF0ZVRhYltpXSkNCisJCQl7DQorCQkJCXJldCA9IDA7DQorCQkJCWJyZWFrOw0KKwkJCX0NCisJCX0NCisJCWlmKHJldCA8IDApDQorCQkJcmV0dXJuIFZPX0VSUl9BVURJT19VTlNTQU1QTEVSQVRFOw0KKw0KKwkJU2FtcGxlUmF0ZUlkeCA9IGk7DQorDQorCQkvKiB1cGRhdGUgdGhlIGJpdHJhdGVzICovDQorCQl0bXAgPSA0NDE7DQorCQlpZihjb25maWcuc2FtcGxlUmF0ZSU4MDAwID09IDApIA0KKwkJCXRtcCA9NDgwOw0KKw0KKwkJY29uZmlnLmJpdFJhdGUgPSA2NDAqY29uZmlnLnNhbXBsZVJhdGUvdG1wKmNvbmZpZy5uQ2hhbm5lbHNPdXQ7DQorDQorCQlpZihjb25maWcuYml0UmF0ZS9jb25maWcubkNoYW5uZWxzT3V0IDwgNDAwMCkNCisJCQljb25maWcuYml0UmF0ZSA9IDQwMDAgKiBjb25maWcubkNoYW5uZWxzT3V0Ow0KKwkJZWxzZSBpZihjb25maWcuYml0UmF0ZSA+IGNvbmZpZy5zYW1wbGVSYXRlKjYqY29uZmlnLm5DaGFubmVsc091dCkNCisJCQljb25maWcuYml0UmF0ZSA9IGNvbmZpZy5zYW1wbGVSYXRlKjYqY29uZmlnLm5DaGFubmVsc091dDsNCisJCWVsc2UgaWYoY29uZmlnLmJpdFJhdGUvY29uZmlnLm5DaGFubmVsc091dCA+IDE2MDAwMCkNCisJCQljb25maWcuYml0UmF0ZSA9IGNvbmZpZy5uQ2hhbm5lbHNPdXQqMTYwMDAwOw0KKw0KKwkJLyogY2hlY2sgdGhlIGJhbmR3aWR0aCAqLw0KKwkJYml0cmF0ZSA9IGNvbmZpZy5iaXRSYXRlIC8gY29uZmlnLm5DaGFubmVsc091dDsNCisJCWJpdHJhdGUgPSBiaXRyYXRlICogdG1wIC8gY29uZmlnLnNhbXBsZVJhdGU7DQorDQorCQlmb3IgKGkgPSAwOyByYXRlc1tpXTsgaSsrKQ0KKwkJew0KKwkJCWlmIChyYXRlc1tpXSA+PSBiaXRyYXRlKQ0KKwkJCQlicmVhazsNCisJCX0NCisNCisJCWNvbmZpZy5iYW5kV2lkdGggPSBCYW5kd2l0aENvZWZUYWJbaV1bU2FtcGxlUmF0ZUlkeF07DQorCQkNCisJCS8qIGluaXQgYWFjIGVuY29kZXIgY29yZSAqLw0KKwkJcmV0ID0gQWFjRW5jT3BlbihoQWFjRW5jLCBjb25maWcpOw0KKwkJaWYocmV0KSANCisJCQlyZXR1cm4gVk9fRVJSX0FVRElPX1VOU0ZFQVRVUkU7DQorCQlicmVhazsNCisJZGVmYXVsdDoNCisJCXJldHVybiBWT19FUlJfV1JPTkdfUEFSQU1fSUQ7DQorCX0NCisNCisJcmV0dXJuIFZPX0VSUl9OT05FOw0KK30NCisNCisvKioNCisqIEdldCB0aGUgcGFyYW0gZm9yIHNwZWNpYWwgdGFyZ2V0Lg0KKyogXHBhcmFtIGhDb2RlYyBbSU5dXSBUaGUgQ29kZWMgSGFuZGxlIHdoaWNoIHdhcyBjcmVhdGVkIGJ5IEluaXQgZnVuY3Rpb24uDQorKiBccGFyYW0gdVBhcmFtSUQgW0lOXSBUaGUgcGFyYW0gSUQuDQorKiBccGFyYW0gcERhdGEgW0lOXSBUaGUgcGFyYW0gdmFsdWUgZGVwZW5kIG9uIHRoZSBJRD4NCisqIFxyZXR2YWwgVk9fRVJSX05PTkUgU3VjY2VlZGVkLg0KKyovDQorVk9fVTMyIFZPX0FQSSB2b0FBQ0VuY0dldFBhcmFtKFZPX0hBTkRMRSBoQ29kZWMsIFZPX1MzMiB1UGFyYW1JRCwgVk9fUFRSIHBEYXRhKQ0KK3sNCisJcmV0dXJuIFZPX0VSUl9OT05FOw0KK30NCisNCisvKioNCisgKiBHZXQgYXVkaW8gY29kZWMgQVBJIGludGVyZmFjZQ0KKyAqIFxwYXJhbSBwRW5jSGFuZGxlIFtvdXRdIFJldHVybiB0aGUgQUFDIEVuY29kZXIgaGFuZGxlLg0KKyAqIFxyZXR2YWwgVk9fRVJSX09LIFN1Y2NlZWRlZC4NCisgKi8NCitWT19TMzIgVk9fQVBJIHZvR2V0QUFDRW5jQVBJKFZPX0FVRElPX0NPREVDQVBJICogcERlY0hhbmRsZSkNCit7DQorCWlmKHBEZWNIYW5kbGUgPT0gTlVMTCkNCisJCXJldHVybiBWT19FUlJfSU5WQUxJRF9BUkc7DQorCQkNCisJcERlY0hhbmRsZS0+SW5pdCA9IHZvQUFDRW5jSW5pdDsNCisJcERlY0hhbmRsZS0+U2V0SW5wdXREYXRhID0gdm9BQUNFbmNTZXRJbnB1dERhdGE7DQorCXBEZWNIYW5kbGUtPkdldE91dHB1dERhdGEgPSB2b0FBQ0VuY0dldE91dHB1dERhdGE7DQorCXBEZWNIYW5kbGUtPlNldFBhcmFtID0gdm9BQUNFbmNTZXRQYXJhbTsNCisJcERlY0hhbmRsZS0+R2V0UGFyYW0gPSB2b0FBQ0VuY0dldFBhcmFtOw0KKwlwRGVjSGFuZGxlLT5VbmluaXQgPSB2b0FBQ0VuY1VuaW5pdDsNCisNCisJcmV0dXJuIFZPX0VSUl9OT05FOw0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9hYWNlbmNfY29yZS5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvYWFjZW5jX2NvcmUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTY0NzVjCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvYWFjZW5jX2NvcmUuYwpAQCAtMCwwICsxLDIzOSBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJYWFjZW5jX2NvcmUuYw0KKw0KKwlDb250ZW50OglhYWMgZW5jb2RlciBjb3JlIGZ1bmN0aW9ucw0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpbmNsdWRlICJ0eXBlZGVmLmgiCisjaW5jbHVkZSAiYWFjZW5jX2NvcmUuaCIKKyNpbmNsdWRlICJiaXRlbmMuaCIKKworI2luY2x1ZGUgInBzeV9jb25maWd1cmF0aW9uLmgiCisjaW5jbHVkZSAicHN5X21haW4uaCIKKyNpbmNsdWRlICJxY19tYWluLmgiCisjaW5jbHVkZSAicHN5X21haW4uaCIKKyNpbmNsdWRlICJjaGFubmVsX21hcC5oIgorI2luY2x1ZGUgImFhY19yb20uaCIKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IEFhY0luaXREZWZhdWx0Q29uZmlnCisqIGRlc2NyaXB0aW9uOiAgZ2l2ZXMgcmVhc29uYWJsZSBkZWZhdWx0IGNvbmZpZ3VyYXRpb24KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit2b2lkIEFhY0luaXREZWZhdWx0Q29uZmlnKEFBQ0VOQ19DT05GSUcgKmNvbmZpZykKK3sKKyAgLyogZGVmYXVsdCBjb25maWd1cmF0aW9ucyAqLworICBjb25maWctPmFkdHNVc2VkICAgICAgICA9IDE7CisgIGNvbmZpZy0+bkNoYW5uZWxzSW4gICAgID0gMjsKKyAgY29uZmlnLT5uQ2hhbm5lbHNPdXQgICAgPSAyOworICBjb25maWctPmJpdFJhdGUgICAgICAgICA9IDEyODAwMDsgICAgICAgICAgICAgICAgICAgICAgCisgIGNvbmZpZy0+YmFuZFdpZHRoICAgICAgID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IEFhY0VuY09wZW4KKyogZGVzY3JpcHRpb246ICBhbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSBhIG5ldyBlbmNvZGVyIGluc3RhbmNlCisqIHJldHVybnM6ICAgICAgMCBpZiBzdWNjZXNzCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworV29yZDE2ICBBYWNFbmNPcGVuKCAgQUFDX0VOQ09ERVIqICAgICAgaEFhY0VuYywgICAgICAgIC8qIHBvaW50ZXIgdG8gYW4gZW5jb2RlciBoYW5kbGUsIGluaXRpYWxpemVkIG9uIHJldHVybiAqLworICAgICAgICAgICAgICAgICAgICAgY29uc3QgIEFBQ0VOQ19DT05GSUcgICAgIGNvbmZpZyAgIC8qIHByZS1pbml0aWFsaXplZCBjb25maWcgc3RydWN0ICovCisgICAgICAgICAgICAgICAgICAgICApCit7CisgIFdvcmQzMiBpOw0KKyAgV29yZDMyIGVycm9yID0gMDsKKyAgV29yZDE2IHByb2ZpbGUgPSAxOw0KKworICBFTEVNRU5UX0lORk8gKmVsSW5mbyA9IE5VTEw7CisgICAKKyAgaWYgKGhBYWNFbmM9PTApIHsKKyAgICBlcnJvcj0xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgfQorICAgCisgIGlmICghZXJyb3IpIHsKKyAgICBoQWFjRW5jLT5jb25maWcgPSBjb25maWc7CisgIH0KKworICBpZiAoIWVycm9yKSB7CisgICAgZXJyb3IgPSBJbml0RWxlbWVudEluZm8gKGNvbmZpZy5uQ2hhbm5lbHNPdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZoQWFjRW5jLT5lbEluZm8pOworICB9CisNCisgIGlmICghZXJyb3IpIHsKKyAgICBlbEluZm8gPSAmaEFhY0VuYy0+ZWxJbmZvOworICB9CisKKyAgaWYgKCFlcnJvcikgeworICAgIC8qIHVzZSBvciBub3QgdG5zIHRvb2wgZm9yIGxvbmcgYW5kIHNob3J0IGJsb2NrICovCisJIFdvcmQxNiB0bnNNYXNrPTM7ICAgICAgCisKKwkvKiBpbml0IGVuY29kZXIgcHN5Y2hvYWNvdXN0aWMgKi8KKyAgICBlcnJvciA9IHBzeU1haW5Jbml0KCZoQWFjRW5jLT5wc3lLZXJuZWwsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcuc2FtcGxlUmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5iaXRSYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgZWxJbmZvLT5uQ2hhbm5lbHNJbkVsLAorICAgICAgICAgICAgICAgICAgICAgICAgdG5zTWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgIGhBYWNFbmMtPmNvbmZpZy5iYW5kV2lkdGgpOworICB9CisKKyAvKiB1c2Ugb3Igbm90IGFkdHMgaGVhZGVyICovCisgIGlmKCFlcnJvcikgew0KKwkgIGhBYWNFbmMtPnFjT3V0LnFjRWxlbWVudC5hZHRzVXNlZCA9IGNvbmZpZy5hZHRzVXNlZDsNCisgIH0KKworICAvKiBpbml0IGVuY29kZXIgcXVhbnRpemF0aW9uICovCisgIGlmICghZXJyb3IpIHsKKyAgICBzdHJ1Y3QgUUNfSU5JVCBxY0luaXQ7CisKKyAgICAvKnFjSW5pdC5jaGFubmVsTWFwcGluZyA9ICZoQWFjRW5jLT5jaGFubmVsTWFwcGluZzsqLworICAgIHFjSW5pdC5lbEluZm8gPSAmaEFhY0VuYy0+ZWxJbmZvOworCisgICAgcWNJbml0Lm1heEJpdHMgPSAoV29yZDE2KSAoTUFYQklUU19DT0VGKmVsSW5mby0+bkNoYW5uZWxzSW5FbCk7CisgICAgcWNJbml0LmJpdFJlcyA9IHFjSW5pdC5tYXhCaXRzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgcWNJbml0LmF2ZXJhZ2VCaXRzID0gKFdvcmQxNikgKChjb25maWcuYml0UmF0ZSAqIEZSQU1FX0xFTl9MT05HKSAvIGNvbmZpZy5zYW1wbGVSYXRlKTsKKworICAgIHFjSW5pdC5wYWRkaW5nLnBhZGRpbmdSZXN0ID0gY29uZmlnLnNhbXBsZVJhdGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICAgIHFjSW5pdC5tZWFuUGUgPSAoV29yZDE2KSAoKDEwICogRlJBTUVfTEVOX0xPTkcgKiBoQWFjRW5jLT5jb25maWcuYmFuZFdpZHRoKSAvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbmZpZy5zYW1wbGVSYXRlPj4xKSk7CisKKyAgICBxY0luaXQubWF4Qml0RmFjID0gKFdvcmQxNikgKCgxMDAgKiAoTUFYQklUU19DT0VGLU1JTkJJVFNfQ09FRikqIGVsSW5mby0+bkNoYW5uZWxzSW5FbCkvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHFjSW5pdC5hdmVyYWdlQml0cz9xY0luaXQuYXZlcmFnZUJpdHM6MSkpOworCisgICAgcWNJbml0LmJpdHJhdGUgPSBjb25maWcuYml0UmF0ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgICBlcnJvciA9IFFDSW5pdCgmaEFhY0VuYy0+cWNLZXJuZWwsICZxY0luaXQpOworICB9CisKKyAgLyogaW5pdCBiaXRzdHJlYW0gZW5jb2RlciAqLworICBpZiAoIWVycm9yKSB7CisgICAgaEFhY0VuYy0+YnNlSW5pdC5uQ2hhbm5lbHMgICA9IGVsSW5mby0+bkNoYW5uZWxzSW5FbDsgICAgICAgICAgICAgICAgCisgICAgaEFhY0VuYy0+YnNlSW5pdC5iaXRyYXRlICAgICA9IGNvbmZpZy5iaXRSYXRlOyAgICAgICAgICAgICAgICAgICAgICAgCisgICAgaEFhY0VuYy0+YnNlSW5pdC5zYW1wbGVSYXRlICA9IGNvbmZpZy5zYW1wbGVSYXRlOyAgICAgICAgICAgICAgICAgICAgCisgICAgaEFhY0VuYy0+YnNlSW5pdC5wcm9maWxlICAgICA9IHByb2ZpbGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIH0KKworICByZXR1cm4gZXJyb3I7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBBYWNFbmNFbmNvZGUKKyogZGVzY3JpcHRpb246ICBlbmNvZGUgcGNtIHRvIGFhYyBkYXRhIGNvcmUgZnVuY3Rpb24KKyogcmV0dXJuczogICAgICAwIGlmIHN1Y2Nlc3MKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitXb3JkMTYgQWFjRW5jRW5jb2RlKEFBQ19FTkNPREVSICphYWNFbmMsCQkvKiE8IGFuIGVuY29kZXIgaGFuZGxlICovCisgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAqdGltZVNpZ25hbCwgICAgICAgICAvKiE8IEJMT0NLU0laRSpuQ2hhbm5lbHMgYXVkaW8gc2FtcGxlcywgaW50ZXJsZWF2ZWQgKi8KKyAgICAgICAgICAgICAgICAgICAgY29uc3QgVVdvcmQ4ICphbmNCeXRlcywgICAgIC8qITwgcG9pbnRlciB0byBhbmNpbGxhcnkgZGF0YSBieXRlcyAqLworICAgICAgICAgICAgICAgICAgICBXb3JkMTYgKm51bUFuY0J5dGVzLAkJLyohPCBudW1iZXIgb2YgYW5jaWxsYXJ5IERhdGEgQnl0ZXMgKi8KKyAgICAgICAgICAgICAgICAgICAgVVdvcmQ4ICpvdXRCeXRlcywgICAgICAgICAgIC8qITwgcG9pbnRlciB0byBvdXRwdXQgYnVmZmVyIChtdXN0IGJlIGxhcmdlIE1JTkJJVFNfQ09FRi84Kk1BWF9DSEFOTkVMUyBieXRlcykgKi8KKyAgICAgICAgICAgICAgICAgICAgV29yZDMyICpudW1PdXRCeXRlcyAgICAgICAgIC8qITwgbnVtYmVyIG9mIGJ5dGVzIGluIG91dHB1dCBidWZmZXIgYWZ0ZXIgcHJvY2Vzc2luZyAqLworICAgICAgICAgICAgICAgICAgICApCit7CisgIEVMRU1FTlRfSU5GTyAqZWxJbmZvID0gJmFhY0VuYy0+ZWxJbmZvOworICBXb3JkMTYgZ2xvYlVzZWRCaXRzOworICBXb3JkMTYgYW5jRGF0YUJ5dGVzLCBhbmNEYXRhQnl0ZXNMZWZ0OworICAKKyAgYW5jRGF0YUJ5dGVzID0gYW5jRGF0YUJ5dGVzTGVmdCA9ICpudW1BbmNCeXRlczsgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgIC8qIGluaXQgb3V0cHV0IGFhYyBkYXRhIGJ1ZmZlciBhbmQgbGVuZ3RoICovCisgIGFhY0VuYy0+aEJpdFN0cmVhbSA9IENyZWF0ZUJpdEJ1ZmZlcigmYWFjRW5jLT5iaXRTdHJlYW0sIG91dEJ5dGVzLCAqbnVtT3V0Qnl0ZXMpOworCisgIC8qIHBzeWNob2Fjb3VzdGljIHByb2Nlc3MgKi8KKyAgcHN5TWFpbihhYWNFbmMtPmNvbmZpZy5uQ2hhbm5lbHNPdXQsICAgIAorICAgICAgICAgIGVsSW5mbywKKyAgICAgICAgICB0aW1lU2lnbmFsLAorICAgICAgICAgICZhYWNFbmMtPnBzeUtlcm5lbC5wc3lEYXRhW2VsSW5mby0+Q2hhbm5lbEluZGV4WzBdXSwKKyAgICAgICAgICAmYWFjRW5jLT5wc3lLZXJuZWwudG5zRGF0YVtlbEluZm8tPkNoYW5uZWxJbmRleFswXV0sCisgICAgICAgICAgJmFhY0VuYy0+cHN5S2VybmVsLnBzeUNvbmZMb25nLAorICAgICAgICAgICZhYWNFbmMtPnBzeUtlcm5lbC5wc3lDb25mU2hvcnQsCisgICAgICAgICAgJmFhY0VuYy0+cHN5T3V0LnBzeU91dENoYW5uZWxbZWxJbmZvLT5DaGFubmVsSW5kZXhbMF1dLAorICAgICAgICAgICZhYWNFbmMtPnBzeU91dC5wc3lPdXRFbGVtZW50LAorICAgICAgICAgIGFhY0VuYy0+cHN5S2VybmVsLnBTY3JhdGNoVG5zLAorCQkgIGFhY0VuYy0+Y29uZmlnLnNhbXBsZVJhdGUpOworCisgIC8qIGFkanVzdCBiaXRyYXRlIGFuZCBmcmFtZSBsZW5ndGggKi8KKyAgQWRqdXN0Qml0cmF0ZSgmYWFjRW5jLT5xY0tlcm5lbCwKKyAgICAgICAgICAgICAgICBhYWNFbmMtPmNvbmZpZy5iaXRSYXRlLAorICAgICAgICAgICAgICAgIGFhY0VuYy0+Y29uZmlnLnNhbXBsZVJhdGUpOworICAgIAorICAvKiBxdWFudGl6YXRpb24gYW5kIGNvZGluZyBwcm9jZXNzICovCisgIFFDTWFpbigmYWFjRW5jLT5xY0tlcm5lbCwgICAgICAgICAKKyAgICAgICAgICZhYWNFbmMtPnFjS2VybmVsLmVsZW1lbnRCaXRzLAorICAgICAgICAgJmFhY0VuYy0+cWNLZXJuZWwuYWRqVGhyLmFkalRoclN0YXRlRWxlbSwKKyAgICAgICAgICZhYWNFbmMtPnBzeU91dC5wc3lPdXRDaGFubmVsW2VsSW5mby0+Q2hhbm5lbEluZGV4WzBdXSwKKyAgICAgICAgICZhYWNFbmMtPnBzeU91dC5wc3lPdXRFbGVtZW50LAorICAgICAgICAgJmFhY0VuYy0+cWNPdXQucWNDaGFubmVsW2VsSW5mby0+Q2hhbm5lbEluZGV4WzBdXSwKKyAgICAgICAgICZhYWNFbmMtPnFjT3V0LnFjRWxlbWVudCwKKyAgICAgICAgIGVsSW5mby0+bkNoYW5uZWxzSW5FbCwKKwkJIG1pbihhbmNEYXRhQnl0ZXNMZWZ0LGFuY0RhdGFCeXRlcykpOworCisgIGFuY0RhdGFCeXRlc0xlZnQgPSBhbmNEYXRhQnl0ZXNMZWZ0IC0gYW5jRGF0YUJ5dGVzOworCisgIGdsb2JVc2VkQml0cyA9IEZpbmFsaXplQml0Q29uc3VtcHRpb24oJmFhY0VuYy0+cWNLZXJuZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgJmFhY0VuYy0+cWNPdXQpOworCisgIC8qIHdyaXRlIGJpdHN0cmVhbSBwcm9jZXNzICovCisgIFdyaXRlQml0c3RyZWFtKGFhY0VuYy0+aEJpdFN0cmVhbSwJCQkJIAorICAgICAgICAgICAgICAgICAqZWxJbmZvLAorICAgICAgICAgICAgICAgICAmYWFjRW5jLT5xY091dCwKKyAgICAgICAgICAgICAgICAgJmFhY0VuYy0+cHN5T3V0LAorICAgICAgICAgICAgICAgICAmZ2xvYlVzZWRCaXRzLAkJCQkgCisgICAgICAgICAgICAgICAgIGFuY0J5dGVzLA0KKwkJCQkgYWFjRW5jLT5wc3lLZXJuZWwuc2FtcGxlUmF0ZUlkeCk7CisKKyAgdXBkYXRlQml0cmVzKCZhYWNFbmMtPnFjS2VybmVsLAorICAgICAgICAgICAgICAgJmFhY0VuYy0+cWNPdXQpOworCisgIC8qIHdyaXRlIG91dCB0aGUgYml0c3RyZWFtICovCisgICpudW1PdXRCeXRlcyA9IEdldEJpdHNBdmFpbChhYWNFbmMtPmhCaXRTdHJlYW0pID4+IDM7DQorCisgIHJldHVybiAwOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOkFhY0VuY0Nsb3NlCisqIGRlc2NyaXB0aW9uOiBkZWFsbG9jYXRlIGFuIGVuY29kZXIgaW5zdGFuY2UKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit2b2lkIEFhY0VuY0Nsb3NlIChBQUNfRU5DT0RFUiogaEFhY0VuYywgVk9fTUVNX09QRVJBVE9SICpwTWVtT1ApCit7CisgIGlmIChoQWFjRW5jKSB7ICAKKyAgICBRQ0RlbGV0ZSgmaEFhY0VuYy0+cWNLZXJuZWwsIHBNZW1PUCk7CisKKyAgICBRQ091dERlbGV0ZSgmaEFhY0VuYy0+cWNPdXQsIHBNZW1PUCk7CisKKyAgICBQc3lEZWxldGUoJmhBYWNFbmMtPnBzeUtlcm5lbCwgcE1lbU9QKTsKKworICAgIFBzeU91dERlbGV0ZSgmaEFhY0VuYy0+cHN5T3V0LCBwTWVtT1ApOworCisgICAgRGVsZXRlQml0QnVmZmVyKCZoQWFjRW5jLT5oQml0U3RyZWFtKTsKKworCWlmKGhBYWNFbmMtPmludGJ1ZikKKwl7CisJCW1lbV9mcmVlKHBNZW1PUCwgaEFhY0VuYy0+aW50YnVmLCBWT19JTkRFWF9FTkNfQUFDKTsKKwkJaEFhY0VuYy0+aW50YnVmID0gTlVMTDsKKwl9CisgIH0KK30KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL2Fkal90aHIuYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL2Fkal90aHIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZGJkMjE2Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvYWRqX3Roci5jCkBAIC0wLDAgKzEsMTIyMyBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJYWRqX3Roci5jDQorDQorCUNvbnRlbnQ6CVRocmVzaG9sZCBjb21wZW5zYXRpb24gZnVuY3Rpb25zDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2luY2x1ZGUgImJhc2ljX29wLmgiDQorI2luY2x1ZGUgIm9wZXJfMzJiLmgiCisjaW5jbHVkZSAiYWRqX3Rocl9kYXRhLmgiCisjaW5jbHVkZSAiYWRqX3Roci5oIgorI2luY2x1ZGUgInFjX2RhdGEuaCIKKyNpbmNsdWRlICJsaW5lX3BlLmgiCisKKworI2RlZmluZSAgbWluU25yTGltaXQgICAgMHg2NjY2IC8qIDEgZEIgKi8KKyNkZWZpbmUgIFBFQklUU19DT0VGCTB4MTcwYSAvKiAwLjE4KigxIDw8IDE1KSovDQorDQorI2RlZmluZSAgSE9MRV9USFJfTE9ORwkweDI4NzMJLyogMC4zMTYqKDEgPDwgMTUpICovDQorI2RlZmluZSAgSE9MRV9USFJfU0hPUlQgMHg0MDAwICAvKiAwLjUgICooMSA8PCAxNSkgKi8NCisNCisjZGVmaW5lICBNU19USFJTUFJFQURfQ09FRiAweDczMzMgIC8qIDAuOSAqICgxIDw8IDE1KSAqLw0KKw0KKyNkZWZpbmUJIE1JTl9TTlJfQ09FRgkgICAweDY1MWYgIC8qIDMuMTYqICgxIDw8ICgxNSAtIDIpKSAqLw0KKworLyogdmFsdWVzIGZvciBhdm9pZCBob2xlIGZsYWcgKi8KK2VudW0gX2F2b2lkX2hvbGVfc3RhdGUgeworICBOT19BSCAgICAgICAgICAgICAgPTAsCisgIEFIX0lOQUNUSVZFICAgICAgICA9MSwKKyAgQUhfQUNUSVZFICAgICAgICAgID0yCit9OworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTpiaXRzMnBlCisqIGRlc2NyaXB0aW9uOiBjb252ZXJ0IGZyb20gYml0cyB0byBwZQorKgkJCSAgIHBlID0gMS4xOCpkZXNpcmVkQml0cworKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK1dvcmQxNiBiaXRzMnBlKGNvbnN0IFdvcmQxNiBiaXRzKSB7CisgIHJldHVybiAoYml0cyArICgoUEVCSVRTX0NPRUYgKiBiaXRzKSA+PiAxNSkpOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTpjYWxjVGhyZXNoRXhwCisqIGRlc2NyaXB0aW9uOiBsb3VkbmVzcyBjYWxjdWxhdGlvbiAodGhyZXNob2xkIHRvIHRoZSBwb3dlciBvZiByZWRFeHApCisqCQkJICAgdGhyKG4pXjAuMjUKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgdm9pZCBjYWxjVGhyZXNoRXhwKFdvcmQzMiB0aHJFeHBbTUFYX0NIQU5ORUxTXVtNQVhfR1JPVVBFRF9TRkJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICBQU1lfT1VUX0NIQU5ORUwgcHN5T3V0Q2hhbm5lbFtNQVhfQ0hBTk5FTFNdLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgbkNoYW5uZWxzKQoreworICBXb3JkMTYgY2gsIHNmYiwgc2ZiR3JwOw0KKyAgV29yZDMyICpwdGhyRXhwLCAqcHNmYlRocmU7CisgIGZvciAoY2g9MDsgY2g8bkNoYW5uZWxzOyBjaCsrKSB7CisgICAgUFNZX09VVF9DSEFOTkVMICpwc3lPdXRDaGFuID0gJnBzeU91dENoYW5uZWxbY2hdOw0KKwkgZm9yKHNmYkdycCA9IDA7IHNmYkdycCA8IHBzeU91dENoYW4tPnNmYkNudDsgc2ZiR3JwKz0gcHN5T3V0Q2hhbi0+c2ZiUGVyR3JvdXApCSANCisJICBwdGhyRXhwID0gJih0aHJFeHBbY2hdW3NmYkdycF0pOw0KKwkgIHBzZmJUaHJlID0gcHN5T3V0Q2hhbi0+c2ZiVGhyZXNob2xkICsgc2ZiR3JwOw0KKwkgIGZvciAoc2ZiPTA7IHNmYjxwc3lPdXRDaGFuLT5tYXhTZmJQZXJHcm91cDsgc2ZiKyspIHsKKwkJKnB0aHJFeHAgPSByc3FydChyc3FydCgqcHNmYlRocmUsSU5UX0JJVFMpLElOVF9CSVRTKTsNCisJCXB0aHJFeHArKzsgcHNmYlRocmUrKzsKKyAgICAgIH0KKyAgfQorfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTphZGFwdE1pblNucgorKiBkZXNjcmlwdGlvbjogcmVkdWNlIG1pblNuciByZXF1aXJlbWVudHMgZm9yIGJhbmRzIHdpdGggcmVsYXRpdmUgbG93IGVuZXJnaWVzCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIHZvaWQgYWRhcHRNaW5TbnIoUFNZX09VVF9DSEFOTkVMICAgICBwc3lPdXRDaGFubmVsW01BWF9DSEFOTkVMU10sCisgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgICAgICAgICAgICAgIGxvZ1NmYkVuZXJneVtNQVhfQ0hBTk5FTFNdW01BWF9HUk9VUEVEX1NGQl0sCisgICAgICAgICAgICAgICAgICAgICAgICBNSU5TTlJfQURBUFRfUEFSQU0gKm1zYVBhcmFtLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICAgICAgICBuQ2hhbm5lbHMpCit7CisgIFdvcmQxNiBjaCwgc2ZiLCBzZmJPZmZzLCBzaGlmdDsKKyAgV29yZDMyIG5TZmIsIGF2Z0VuOworICBXb3JkMTYgbG9nX2F2Z0VuID0gMDsKKyAgV29yZDMyIHN0YXJ0UmF0aW9feF9hdmdFbiA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICBmb3IgKGNoPTA7IGNoPG5DaGFubmVsczsgY2grKykgeworICAgIFBTWV9PVVRfQ0hBTk5FTCogcHN5T3V0Q2hhbiA9ICZwc3lPdXRDaGFubmVsW2NoXTsKKworICAgIC8qIGNhbGMgYXZlcmFnZSBlbmVyZ3kgcGVyIHNjYWxlZmFjdG9yIGJhbmQgKi8KKyAgICBhdmdFbiA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBuU2ZiID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBmb3IgKHNmYk9mZnM9MDsgc2ZiT2Zmczxwc3lPdXRDaGFuLT5zZmJDbnQ7IHNmYk9mZnMrPXBzeU91dENoYW4tPnNmYlBlckdyb3VwKSB7CisgICAgICBmb3IgKHNmYj0wOyBzZmI8cHN5T3V0Q2hhbi0+bWF4U2ZiUGVyR3JvdXA7IHNmYisrKSB7CisgICAgICAgIGF2Z0VuID0gTF9hZGQoYXZnRW4sIHBzeU91dENoYW4tPnNmYkVuZXJneVtzZmJPZmZzK3NmYl0pOworICAgICAgICBuU2ZiID0gblNmYiArIDE7CisgICAgICB9CisgICAgfQorICAgICAKKyAgICBpZiAoblNmYiA+IDApIHsKKwkgIGF2Z0VuID0gYXZnRW4gLyBuU2ZiOw0KKworICAgICAgbG9nX2F2Z0VuID0gaUxvZzQoYXZnRW4pOworICAgICAgc3RhcnRSYXRpb194X2F2Z0VuID0gZml4bXVsKG1zYVBhcmFtLT5zdGFydFJhdGlvLCBhdmdFbik7CisgICAgfQorCisgICAgCisgICAgLyogcmVkdWNlIG1pblNuciByZXF1aXJlbWVudCBieSBtaW5TbnJebWluU25yUmVkIGRlcGVuZGVudCBvbiBhdmdFbi9zZmJFbiAqLworICAgIGZvciAoc2ZiT2Zmcz0wOyBzZmJPZmZzPHBzeU91dENoYW4tPnNmYkNudDsgc2ZiT2Zmcys9cHN5T3V0Q2hhbi0+c2ZiUGVyR3JvdXApIHsKKyAgICAgIGZvciAoc2ZiPTA7IHNmYjxwc3lPdXRDaGFuLT5tYXhTZmJQZXJHcm91cDsgc2ZiKyspIHsKKyAgICAgICAgaWYgKHBzeU91dENoYW4tPnNmYkVuZXJneVtzZmJPZmZzK3NmYl0gPCBzdGFydFJhdGlvX3hfYXZnRW4pIHsKKyAgICAgICAgICBXb3JkMTYgZGJSYXRpbywgbWluU25yUmVkOworICAgICAgICAgIFdvcmQzMiBzbnJSZWQ7CisgICAgICAgICAgV29yZDE2IG5ld01pblNucjsKKyAgICAgICAgICAKKyAgICAgICAgICBkYlJhdGlvID0gbG9nX2F2Z0VuIC0gbG9nU2ZiRW5lcmd5W2NoXVtzZmJPZmZzK3NmYl07CisgICAgICAgICAgZGJSYXRpbyA9IGRiUmF0aW8gKyAoZGJSYXRpbyA8PCAxKTsKKworICAgICAgICAgIG1pblNuclJlZCA9IDExMCAtICgoZGJSYXRpbyArIChkYlJhdGlvIDw8IDEpKSA+PiAyKTsKKyAgICAgICAgICBtaW5TbnJSZWQgPSBtYXgobWluU25yUmVkLCAyMCk7IC8qIDExMDogKDAuMzc1KHJlZE9mZnMpKzEpKjgwLCAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDM6IDAuMDAzNzUocmVkUmF0aW9GYWMpKjgwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwOiAwLjI1KG1heFJlZCkgKiA4MCAqLworCisgICAgICAgICAgc25yUmVkID0gbWluU25yUmVkICogaUxvZzQoKHBzeU91dENoYW4tPnNmYk1pblNucltzZmJPZmZzK3NmYl0gPDwgMTYpKTsgCisgICAgICAgICAgLyogCisgICAgICAgICAgICAgc25yUmVkSSBzaSBub3cgc2NhbGVkIGJ5IDgwIChtaW5TbnJSZWQpIGFuZCA0IChmZnJfaUxvZzQpCisgICAgICAgICAgKi8KKyAgICAgICAgCisgICAgICAgICAgbmV3TWluU25yID0gcm91bmQxNihwb3cyX3h5KHNuclJlZCw4MCo0KSk7CisgICAgICAgICAKKyAgICAgICAgICBwc3lPdXRDaGFuLT5zZmJNaW5TbnJbc2ZiT2ZmcytzZmJdID0gbWluKG5ld01pblNuciwgbWluU25yTGltaXQpOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9CisKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTppbml0QXZvaWRIb2xlRmxhZworKiBkZXNjcmlwdGlvbjogZGV0ZXJtaW5lIGJhbmRzIHdoZXJlIGF2b2lkIGhvbGUgaXMgbm90IG5lY2Vzc2FyeSByZXNwLiBwb3NzaWJsZQorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyB2b2lkIGluaXRBdm9pZEhvbGVGbGFnKFdvcmQxNiBhaEZsYWdbTUFYX0NIQU5ORUxTXVtNQVhfR1JPVVBFRF9TRkJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFNZX09VVF9DSEFOTkVMICBwc3lPdXRDaGFubmVsW01BWF9DSEFOTkVMU10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQU1lfT1VUX0VMRU1FTlQqIHBzeU91dEVsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgbkNoYW5uZWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQUhfUEFSQU0gKmFoUGFyYW0pCit7CisgIFdvcmQxNiBjaCwgc2ZiLCBzZmJHcnAsIHNoaWZ0OworICBXb3JkMzIgdGhyZXNob2xkOworICBXb3JkMzIqIHBzZmJTcHJlYWRFbjsKKworICBmb3IgKGNoPTA7IGNoPG5DaGFubmVsczsgY2grKykgeworICAgIFBTWV9PVVRfQ0hBTk5FTCAqcHN5T3V0Q2hhbiA9ICZwc3lPdXRDaGFubmVsW2NoXTsKKyAgICAgCisgICAgaWYgKHBzeU91dENoYW4tPndpbmRvd1NlcXVlbmNlICE9IFNIT1JUX1dJTkRPVykgeworICAgICAgZm9yKHNmYkdycCA9IDA7c2ZiR3JwIDwgcHN5T3V0Q2hhbi0+c2ZiQ250O3NmYkdycCs9IHBzeU91dENoYW4tPnNmYlBlckdyb3VwKXsKKyAgICAgICAgIHBzZmJTcHJlYWRFbiA9IHBzeU91dENoYW4tPnNmYlNwcmVhZGVkRW5lcmd5ICsgc2ZiR3JwOw0KKwkJIGZvciAoc2ZiPTA7IHNmYjxwc3lPdXRDaGFuLT5tYXhTZmJQZXJHcm91cDsgc2ZiKyspIHsKKwkJCSpwc2ZiU3ByZWFkRW4gPSAqcHNmYlNwcmVhZEVuID4+IDE7ICAvKiAwLjUgKi8NCisJCQkrK3BzZmJTcHJlYWRFbjsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIGZvcihzZmJHcnAgPSAwO3NmYkdycCA8IHBzeU91dENoYW4tPnNmYkNudDtzZmJHcnArPSBwc3lPdXRDaGFuLT5zZmJQZXJHcm91cCl7DQorCQlwc2ZiU3ByZWFkRW4gPSBwc3lPdXRDaGFuLT5zZmJTcHJlYWRlZEVuZXJneSArIHNmYkdycDsKKyAgICAgICAgZm9yIChzZmI9MDsgc2ZiPHBzeU91dENoYW4tPm1heFNmYlBlckdyb3VwOyBzZmIrKykgeworICAgICAgICAgICpwc2ZiU3ByZWFkRW4gPSAoKnBzZmJTcHJlYWRFbiA+PiAxKSArICgqcHNmYlNwcmVhZEVuID4+IDMpOyAgLyogMC42MyAqLw0KKwkJICArK3BzZmJTcHJlYWRFbjsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorCisgIC8qIGluY3JlYXNlIG1pblNuciBmb3IgbG9jYWwgcGVha3MsIGRlY3JlYXNlIGl0IGZvciB2YWxsZXlzICovCisgIGlmIChhaFBhcmFtLT5tb2RpZnlNaW5TbnIpIHsKKyAgICBmb3IoY2g9MDsgY2g8bkNoYW5uZWxzOyBjaCsrKSB7CisgICAgICBQU1lfT1VUX0NIQU5ORUwgKnBzeU91dENoYW4gPSAmcHN5T3V0Q2hhbm5lbFtjaF07CisgICAgICAgICAKKyAgICAgIGlmIChwc3lPdXRDaGFuLT53aW5kb3dTZXF1ZW5jZSAhPSBTSE9SVF9XSU5ET1cpCisgICAgICAgIHRocmVzaG9sZCA9IEhPTEVfVEhSX0xPTkc7CisgICAgICBlbHNlCisgICAgICAgIHRocmVzaG9sZCA9IEhPTEVfVEhSX1NIT1JUOworCisgICAgICBmb3Ioc2ZiR3JwID0gMDtzZmJHcnAgPCBwc3lPdXRDaGFuLT5zZmJDbnQ7c2ZiR3JwKz0gcHN5T3V0Q2hhbi0+c2ZiUGVyR3JvdXApeworICAgICAgICBXb3JkMTYgKnBzZmJNaW5TbnIgPSBwc3lPdXRDaGFuLT5zZmJNaW5TbnIgKyBzZmJHcnA7DQorCQlmb3IgKHNmYj0wOyBzZmI8cHN5T3V0Q2hhbi0+bWF4U2ZiUGVyR3JvdXA7IHNmYisrKSB7CisgICAgICAgICAgV29yZDMyIHNmYkVuLCBzZmJFbm0xLCBzZmJFbnAxLCBhdmdFbjsKKyAgICAgICAgICAgICAKKyAgICAgICAgICBpZiAoc2ZiID4gMCkKKyAgICAgICAgICAgIHNmYkVubTEgPSBwc3lPdXRDaGFuLT5zZmJFbmVyZ3lbc2ZiR3JwK3NmYi0xXTsKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBzZmJFbm0xID0gcHN5T3V0Q2hhbi0+c2ZiRW5lcmd5W3NmYkdycF07CisgICAgICAgICAgICAgCisgICAgICAgICAgaWYgKHNmYiA8IChwc3lPdXRDaGFuLT5tYXhTZmJQZXJHcm91cC0xKSkKKyAgICAgICAgICAgIHNmYkVucDEgPSBwc3lPdXRDaGFuLT5zZmJFbmVyZ3lbc2ZiR3JwK3NmYisxXTsKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBzZmJFbnAxID0gcHN5T3V0Q2hhbi0+c2ZiRW5lcmd5W3NmYkdycCtzZmJdOworICAgICAgICAgIGF2Z0VuID0gKHNmYkVubTEgKyBzZmJFbnAxKSA+PiAxOworICAgICAgICAgIHNmYkVuID0gcHN5T3V0Q2hhbi0+c2ZiRW5lcmd5W3NmYkdycCtzZmJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgCisgICAgICAgICAgaWYgKHNmYkVuID4gYXZnRW4gJiYgYXZnRW4gPiAwKSB7CisgICAgICAgICAgICBXb3JkMzIgdG1wTWluU25yOworICAgICAgICAgICAgc2hpZnQgPSBub3JtX2woc2ZiRW4pOw0KKwkJCXRtcE1pblNuciA9IERpdl8zMihMX21weV9scyhhdmdFbiwgbWluU25yTGltaXQpIDw8IHNoaWZ0LCBzZmJFbiA8PCBzaGlmdCApOworICAgICAgICAgICAgdG1wTWluU25yID0gbWF4KHRtcE1pblNuciwgSE9MRV9USFJfTE9ORyk7ICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICB0bXBNaW5TbnIgPSBtYXgodG1wTWluU25yLCB0aHJlc2hvbGQpOworICAgICAgICAgICAgKnBzZmJNaW5TbnIgPSBtaW4oKnBzZmJNaW5TbnIsIHRtcE1pblNucik7CisgICAgICAgICAgfQorICAgICAgICAgIC8qIHZhbGxleSA/ICovCisgICAgICAgICAgICAgCisgICAgICAgICAgaWYgKChzZmJFbiA8IChhdmdFbiA+PiAxKSkgJiYgKHNmYkVuID4gMCkpIHsKKyAgICAgICAgICAgIFdvcmQzMiB0bXBNaW5TbnI7CisgICAgICAgICAgICBXb3JkMzIgbWluU25yRW4gPSBMX21weV93eChhdmdFbiwgKnBzZmJNaW5TbnIpOyAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgCisgICAgICAgICAgICBpZihtaW5TbnJFbiA8IHNmYkVuKSB7DQorCQkJICBzaGlmdCA9IG5vcm1fbChzZmJFbik7CisgICAgICAgICAgICAgIHRtcE1pblNuciA9IERpdl8zMiggbWluU25yRW4gPDwgc2hpZnQsIHNmYkVuPDxzaGlmdCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgdG1wTWluU25yID0gTUFYXzE2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICAgICAgdG1wTWluU25yID0gbWluKG1pblNuckxpbWl0LCB0bXBNaW5TbnIpOworCisgICAgICAgICAgICAqcHNmYk1pblNuciA9CisgICAgICAgICAgICAgIChtaW4oKHRtcE1pblNuciA+PiAgMiksIG11bHQoKnBzZmJNaW5TbnIsIE1JTl9TTlJfQ09FRikpIDw8IDIpOworICAgICAgICAgIH0NCisJCSAgcHNmYk1pblNucisrOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9CisKKyAgLyogc3RlcmVvOiBhZGFwdCB0aGUgbWluaW11bSByZXF1aXJlbWVudHMgc2ZiTWluU25yIG9mIG1pZCBhbmQKKyAgICAgc2lkZSBjaGFubmVscyAqLworICAgCisgIGlmIChuQ2hhbm5lbHMgPT0gMikgeworICAgIFBTWV9PVVRfQ0hBTk5FTCAqcHN5T3V0Q2hhbk0gPSAmcHN5T3V0Q2hhbm5lbFswXTsKKyAgICBQU1lfT1VUX0NIQU5ORUwgKnBzeU91dENoYW5TID0gJnBzeU91dENoYW5uZWxbMV07CisgICAgZm9yIChzZmI9MDsgc2ZiPHBzeU91dENoYW5NLT5zZmJDbnQ7IHNmYisrKSB7CisgICAgICBpZiAocHN5T3V0RWxlbWVudC0+dG9vbHNJbmZvLm1zTWFza1tzZmJdKSB7CisgICAgICAgIFdvcmQzMiBzZmJFbk0gPSBwc3lPdXRDaGFuTS0+c2ZiRW5lcmd5W3NmYl07CisgICAgICAgIFdvcmQzMiBzZmJFblMgPSBwc3lPdXRDaGFuUy0+c2ZiRW5lcmd5W3NmYl07CisgICAgICAgIFdvcmQzMiBtYXhTZmJFbiA9IG1heChzZmJFbk0sIHNmYkVuUyk7CisgICAgICAgIFdvcmQzMiBtYXhUaHIgPSBMX21weV93eChtYXhTZmJFbiwgcHN5T3V0Q2hhbk0tPnNmYk1pblNucltzZmJdKSA+PiAxOyAgICAgICAgCisgICAgICAgICAKKyAgICAgICAgaWYobWF4VGhyID49IHNmYkVuTSkgeworICAgICAgICAgIHBzeU91dENoYW5NLT5zZmJNaW5TbnJbc2ZiXSA9IE1BWF8xNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBzaGlmdCA9IG5vcm1fbChzZmJFbk0pOyANCisJCSAgcHN5T3V0Q2hhbk0tPnNmYk1pblNucltzZmJdID0gbWluKG1heChwc3lPdXRDaGFuTS0+c2ZiTWluU25yW3NmYl0sIA0KKwkJCSAgcm91bmQxNihEaXZfMzIobWF4VGhyPDxzaGlmdCwgc2ZiRW5NIDw8IHNoaWZ0KSkpLCBtaW5TbnJMaW1pdCk7CisgICAgICAgIH0KKyAgICAgICAgIAorICAgICAgICBpZihtYXhUaHIgPj0gc2ZiRW5TKSB7CisgICAgICAgICAgcHN5T3V0Q2hhblMtPnNmYk1pblNucltzZmJdID0gTUFYXzE2OworICAgICAgICB9CisgICAgICAgIGVsc2Ugew0KKwkJICBzaGlmdCA9IG5vcm1fbChzZmJFblMpOworICAgICAgICAgIHBzeU91dENoYW5TLT5zZmJNaW5TbnJbc2ZiXSA9IG1pbihtYXgocHN5T3V0Q2hhblMtPnNmYk1pblNucltzZmJdLCANCisJCQkgIHJvdW5kMTYoRGl2XzMyKG1heFRociA8PCBzaGlmdCwgc2ZiRW5TIDw8IHNoaWZ0KSkpLCBtaW5TbnJMaW1pdCk7CisgICAgICAgIH0KKworICAgICAgICAgCisgICAgICAgIGlmIChzZmJFbk0gPiBwc3lPdXRDaGFuTS0+c2ZiU3ByZWFkZWRFbmVyZ3lbc2ZiXSkKKyAgICAgICAgICBwc3lPdXRDaGFuUy0+c2ZiU3ByZWFkZWRFbmVyZ3lbc2ZiXSA9IExfbXB5X2xzKHNmYkVuUywgTVNfVEhSU1BSRUFEX0NPRUYpOworICAgICAgICAgCisgICAgICAgIGlmIChzZmJFblMgPiBwc3lPdXRDaGFuUy0+c2ZiU3ByZWFkZWRFbmVyZ3lbc2ZiXSkKKyAgICAgICAgICBwc3lPdXRDaGFuTS0+c2ZiU3ByZWFkZWRFbmVyZ3lbc2ZiXSA9IExfbXB5X2xzKHNmYkVuTSwgTVNfVEhSU1BSRUFEX0NPRUYpOworICAgICAgfQorICAgIH0KKyAgfQorCisKKyAgLyogaW5pdCBhaEZsYWcgKDA6IG5vIGFoIG5lY2Vzc2FyeSwgMTogYWggcG9zc2libGUsIDI6IGFoIGFjdGl2ZSAqLworICBmb3IoY2g9MDsgY2g8bkNoYW5uZWxzOyBjaCsrKSB7CisgICAgUFNZX09VVF9DSEFOTkVMICpwc3lPdXRDaGFuID0gJnBzeU91dENoYW5uZWxbY2hdOworICAgIGZvcihzZmJHcnAgPSAwO3NmYkdycCA8IHBzeU91dENoYW4tPnNmYkNudDtzZmJHcnArPSBwc3lPdXRDaGFuLT5zZmJQZXJHcm91cCl7CisgICAgICBXb3JkMTYgKnBhaEZsYWcgPSBhaEZsYWdbY2hdICsgc2ZiR3JwOw0KKwkgIGZvciAoc2ZiPTA7IHNmYjxwc3lPdXRDaGFuLT5tYXhTZmJQZXJHcm91cDsgc2ZiKyspIHsKKyAgICAgICAgICAgICAgIAorICAgICAgICBpZiAoKHBzeU91dENoYW4tPnNmYlNwcmVhZGVkRW5lcmd5W3NmYkdycCtzZmJdID4gcHN5T3V0Q2hhbi0+c2ZiRW5lcmd5W3NmYkdycCtzZmJdKSB8fAorICAgICAgICAgICAgKHBzeU91dENoYW4tPnNmYkVuZXJneVtzZmJHcnArc2ZiXSA8PSBwc3lPdXRDaGFuLT5zZmJUaHJlc2hvbGRbc2ZiR3JwK3NmYl0pIHx8CisgICAgICAgICAgICAocHN5T3V0Q2hhbi0+c2ZiTWluU25yW3NmYkdycCtzZmJdID09IE1BWF8xNikpIHsKKyAgICAgICAgICAqcGFoRmxhZysrID0gTk9fQUg7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgKnBhaEZsYWcrKyA9IEFIX0lOQUNUSVZFOworICAgICAgICB9CisgICAgICB9CisgICAgICBmb3IgKHNmYj1wc3lPdXRDaGFuLT5tYXhTZmJQZXJHcm91cDsgc2ZiPHBzeU91dENoYW4tPnNmYlBlckdyb3VwOyBzZmIrKykgeworICAgICAgICAqcGFoRmxhZysrID0gTk9fQUg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgfQorICAgIH0KKyAgfQorfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTpjYWxjUGVOb0FICisqIGRlc2NyaXB0aW9uOiBzdW0gdGhlIHBlIGRhdGEgb25seSBmb3IgYmFuZHMgd2hlcmUgYXZvaWQgaG9sZSBpcyBpbmFjdGl2ZQorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyB2b2lkIGNhbGNQZU5vQUgoV29yZDE2ICAgICAgICAgICpwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICAgICAgICAgICpjb25zdFBhcnQsCisgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgICAgICAgICAqbkFjdGl2ZUxpbmVzLAorICAgICAgICAgICAgICAgICAgICAgICBQRV9EQVRBICAgICAgICAgKnBlRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICAgICAgICAgICBhaEZsYWdbTUFYX0NIQU5ORUxTXVtNQVhfR1JPVVBFRF9TRkJdLAorICAgICAgICAgICAgICAgICAgICAgICBQU1lfT1VUX0NIQU5ORUwgIHBzeU91dENoYW5uZWxbTUFYX0NIQU5ORUxTXSwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICAgICBuQ2hhbm5lbHMpCit7CisgIFdvcmQxNiBjaCwgc2ZiLCBzZmJHcnA7DQorICBpbnQgaXBlLCBpY29uc3RQYXJ0LCBpbkFjdGl2ZUxpbmVzOworCisgIGlwZSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBpY29uc3RQYXJ0ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgaW5BY3RpdmVMaW5lcyA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIGZvcihjaD0wOyBjaDxuQ2hhbm5lbHM7IGNoKyspIHsKKyAgICBQU1lfT1VUX0NIQU5ORUwgKnBzeU91dENoYW4gPSAmcHN5T3V0Q2hhbm5lbFtjaF07CisgICAgUEVfQ0hBTk5FTF9EQVRBICpwZUNoYW5EYXRhID0gJnBlRGF0YS0+cGVDaGFubmVsRGF0YVtjaF07CisgICAgZm9yKHNmYkdycCA9IDA7c2ZiR3JwIDwgcHN5T3V0Q2hhbi0+c2ZiQ250O3NmYkdycCs9IHBzeU91dENoYW4tPnNmYlBlckdyb3VwKXsKKyAgICAgIGZvciAoc2ZiPTA7IHNmYjxwc3lPdXRDaGFuLT5tYXhTZmJQZXJHcm91cDsgc2ZiKyspIHsKKyAgICAgICAgIAorICAgICAgICBpZiAoYWhGbGFnW2NoXVtzZmJHcnArc2ZiXSA8IEFIX0FDVElWRSkgeworICAgICAgICAgIGlwZSA9IGlwZSArIHBlQ2hhbkRhdGEtPnNmYlBlW3NmYkdycCtzZmJdOworICAgICAgICAgIGljb25zdFBhcnQgPSBpY29uc3RQYXJ0ICsgcGVDaGFuRGF0YS0+c2ZiQ29uc3RQYXJ0W3NmYkdycCtzZmJdOworICAgICAgICAgIGluQWN0aXZlTGluZXMgPSBpbkFjdGl2ZUxpbmVzICsgcGVDaGFuRGF0YS0+c2ZiTkFjdGl2ZUxpbmVzW3NmYkdycCtzZmJdOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9DQorCisgICpwZSA9IHNhdHVyYXRlKGlwZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAqY29uc3RQYXJ0ID0gc2F0dXJhdGUoaWNvbnN0UGFydCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICpuQWN0aXZlTGluZXMgPSBzYXR1cmF0ZShpbkFjdGl2ZUxpbmVzKTsgIAorfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTpyZWR1Y2VUaHJlc2hvbGRzCisqIGRlc2NyaXB0aW9uOiBhcHBseSByZWR1Y3Rpb24gZm9ybXVsYQorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyB2b2lkIHJlZHVjZVRocmVzaG9sZHMoUFNZX09VVF9DSEFOTkVMICBwc3lPdXRDaGFubmVsW01BWF9DSEFOTkVMU10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgICAgICAgICAgYWhGbGFnW01BWF9DSEFOTkVMU11bTUFYX0dST1VQRURfU0ZCXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDMyICAgICAgICAgICB0aHJFeHBbTUFYX0NIQU5ORUxTXVtNQVhfR1JPVVBFRF9TRkJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgICAgIG5DaGFubmVscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDMyICAgICByZWRWYWwpCit7CisgIFdvcmQzMiBzZmJUaHJSZWR1Y2VkOworICBXb3JkMzIgKnBzZmJFbiwgKnBzZmJUaHI7ICAgICANCisgIFdvcmQxNiBjaCwgc2ZiLCBzZmJHcnA7DQorCisgIGZvcihjaD0wOyBjaDxuQ2hhbm5lbHM7IGNoKyspIHsKKyAgICBQU1lfT1VUX0NIQU5ORUwgKnBzeU91dENoYW4gPSAmcHN5T3V0Q2hhbm5lbFtjaF07CisgICAgZm9yKHNmYkdycD0wOyBzZmJHcnA8cHN5T3V0Q2hhbi0+c2ZiQ250OyBzZmJHcnArPXBzeU91dENoYW4tPnNmYlBlckdyb3VwKSB7CisgCSAgcHNmYkVuICA9IHBzeU91dENoYW4tPnNmYkVuZXJneSArIHNmYkdycDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgIHBzZmJUaHIgPSBwc3lPdXRDaGFuLT5zZmJUaHJlc2hvbGQgKyBzZmJHcnA7DQorCSAgZm9yIChzZmI9MDsgc2ZiPHBzeU91dENoYW4tPm1heFNmYlBlckdyb3VwOyBzZmIrKykgeworICAgICAgICAgCisgICAgICAgIGlmICgqcHNmYkVuID4gKnBzZmJUaHIpIHsKKyAgICAgICAgICAvKiB0aHJlc2hvbGQgcmVkdWN0aW9uIGZvcm11bGEgKi8KKyAgICAgICAgICBXb3JkMzIgdG1wID0gdGhyRXhwW2NoXVtzZmJHcnArc2ZiXSArIHJlZFZhbDsKKyAgICAgICAgICB0bXAgPSBmaXhtdWwodG1wLCB0bXApOworICAgICAgICAgIHNmYlRoclJlZHVjZWQgPSBmaXhtdWwodG1wLCB0bXApOworICAgICAgICAgIC8qIGF2b2lkIGhvbGVzICovCisgICAgICAgICAgdG1wID0gTF9tcHlfbHMoKnBzZmJFbiwgcHN5T3V0Q2hhbi0+c2ZiTWluU25yW3NmYkdycCtzZmJdKTsKKyAgICAgICAgICAgICAKKyAgICAgICAgICBpZiAoKHNmYlRoclJlZHVjZWQgPiB0bXApICYmIAorICAgICAgICAgICAgICAoYWhGbGFnW2NoXVtzZmJHcnArc2ZiXSAhPSBOT19BSCkpeworICAgICAgICAgICAgc2ZiVGhyUmVkdWNlZCA9IG1heCh0bXAsICpwc2ZiVGhyKTsKKyAgICAgICAgICAgIGFoRmxhZ1tjaF1bc2ZiR3JwK3NmYl0gPSBBSF9BQ1RJVkU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgfQorCQkgICpwc2ZiVGhyID0gc2ZiVGhyUmVkdWNlZDsKKyAgICAgICAgfQ0KKw0KKwkJcHNmYkVuKys7ICBwc2ZiVGhyKys7CisgICAgICB9CisgICAgfQorICB9Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6Y29ycmVjdFRocmVzaAorKiBkZXNjcmlwdGlvbjogaWYgcGUgZGlmZmVyZW5jZSBkZWx0YVBlIGJldHdlZW4gZGVzaXJlZCBwZSBhbmQgcmVhbCBwZSBpcyBzbWFsbCBlbm91Z2gsCisqICAgICAgICAgICAgIHRoZSBkaWZmZXJlbmNlIGNhbiBiZSBkaXN0cmlidXRlZCBhbW9uZyB0aGUgc2NhbGUgZmFjdG9yIGJhbmRzLgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyB2b2lkIGNvcnJlY3RUaHJlc2goUFNZX09VVF9DSEFOTkVMICBwc3lPdXRDaGFubmVsW01BWF9DSEFOTkVMU10sCisgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgICAgICAgICAgYWhGbGFnW01BWF9DSEFOTkVMU11bTUFYX0dST1VQRURfU0ZCXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgUEVfREFUQSAgICAgICAgICAqcGVEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMzIgICAgICAgICAgIHRockV4cFtNQVhfQ0hBTk5FTFNdW01BWF9HUk9VUEVEX1NGQl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQzMiAgICAgcmVkVmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgICAgIG5DaGFubmVscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDMyICAgICBkZWx0YVBlKQoreworICBXb3JkMTYgY2gsIHNmYiwgc2ZiR3JwLHNoaWZ0OworICBQU1lfT1VUX0NIQU5ORUwgKnBzeU91dENoYW47CisgIFBFX0NIQU5ORUxfREFUQSAqcGVDaGFuRGF0YTsKKyAgV29yZDMyIGRlbHRhU2ZiUGU7CisgIFdvcmQzMiBub3JtRmFjdG9yOw0KKyAgV29yZDMyICpwc2ZiUGVGYWN0b3JzOw0KKyAgV29yZDE2ICpwc2ZiTkFjdGl2ZUxpbmVzLCAqcGFoRmxhZzsKKyAgV29yZDMyIHNmYkVuLCBzZmJUaHI7CisgIFdvcmQzMiBzZmJUaHJSZWR1Y2VkOworCisgIC8qIGZvciBlYWNoIHNmYiBjYWxjIHJlbGF0aXZlIGZhY3RvcnMgZm9yIHBlIGNoYW5nZXMgKi8KKyAgbm9ybUZhY3RvciA9IDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIGZvcihjaD0wOyBjaDxuQ2hhbm5lbHM7IGNoKyspIHsKKyAgICBwc3lPdXRDaGFuID0gJnBzeU91dENoYW5uZWxbY2hdOworICAgIHBlQ2hhbkRhdGEgPSAmcGVEYXRhLT5wZUNoYW5uZWxEYXRhW2NoXTsKKyAgICBmb3Ioc2ZiR3JwID0gMDtzZmJHcnAgPCBwc3lPdXRDaGFuLT5zZmJDbnQ7c2ZiR3JwKz0gcHN5T3V0Q2hhbi0+c2ZiUGVyR3JvdXApeworICAgICAgcHNmYlBlRmFjdG9ycyA9IHBlRGF0YS0+c2ZiUGVGYWN0b3JzW2NoXSArIHNmYkdycDsNCisJICBwc2ZiTkFjdGl2ZUxpbmVzID0gcGVDaGFuRGF0YS0+c2ZiTkFjdGl2ZUxpbmVzICsgc2ZiR3JwOw0KKwkgIHBhaEZsYWcgPSBhaEZsYWdbY2hdICsgc2ZiR3JwOw0KKwkgIGZvciAoc2ZiPTA7IHNmYjxwc3lPdXRDaGFuLT5tYXhTZmJQZXJHcm91cDsgc2ZiKyspIHsKKyAgICAgICAgV29yZDMyIHJlZFRockV4cCA9IHRockV4cFtjaF1bc2ZiR3JwK3NmYl0gKyByZWRWYWw7CisgICAgICAgICAgICAgCisgICAgICAgIGlmICgoKCpwYWhGbGFnIDwgQUhfQUNUSVZFKSB8fCAoZGVsdGFQZSA+IDApKSAmJiAocmVkVGhyRXhwID4gMCkgKSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAqcHNmYlBlRmFjdG9ycyA9ICgqcHNmYk5BY3RpdmVMaW5lcykgKiAoMHg3ZmZmZmZmZiAvIHJlZFRockV4cCk7CisgICAgICAgICAgbm9ybUZhY3RvciA9IExfYWRkKG5vcm1GYWN0b3IsICpwc2ZiUGVGYWN0b3JzKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAqcHNmYlBlRmFjdG9ycyA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICB9DQorCQlwc2ZiUGVGYWN0b3JzKys7IA0KKwkJcGFoRmxhZysrOyBwc2ZiTkFjdGl2ZUxpbmVzKys7CisgICAgICB9CisgICAgfQorICB9CisKKyAKKyAgLyogY2FsY3VsYXRlIG5ldyB0aHJlc2hvbGRzICovCisgIGZvcihjaD0wOyBjaDxuQ2hhbm5lbHM7IGNoKyspIHsKKyAgICBwc3lPdXRDaGFuID0gJnBzeU91dENoYW5uZWxbY2hdOworICAgIHBlQ2hhbkRhdGEgPSAmcGVEYXRhLT5wZUNoYW5uZWxEYXRhW2NoXTsKKyAgICBmb3Ioc2ZiR3JwID0gMDtzZmJHcnAgPCBwc3lPdXRDaGFuLT5zZmJDbnQ7c2ZiR3JwKz0gcHN5T3V0Q2hhbi0+c2ZiUGVyR3JvdXApeworICAgICAgcHNmYlBlRmFjdG9ycyA9IHBlRGF0YS0+c2ZiUGVGYWN0b3JzW2NoXSArIHNmYkdycDsNCisJICBwc2ZiTkFjdGl2ZUxpbmVzID0gcGVDaGFuRGF0YS0+c2ZiTkFjdGl2ZUxpbmVzICsgc2ZiR3JwOw0KKwkgIHBhaEZsYWcgPSBhaEZsYWdbY2hdICsgc2ZiR3JwOw0KKwkgIGZvciAoc2ZiPTA7IHNmYjxwc3lPdXRDaGFuLT5tYXhTZmJQZXJHcm91cDsgc2ZiKyspIHsKKyAgICAgICAgLyogcGUgZGlmZmVyZW5jZSBmb3IgdGhpcyBzZmIgKi8KKyAgICAgICAgZGVsdGFTZmJQZSA9ICpwc2ZiUGVGYWN0b3JzICogZGVsdGFQZTsKKworCQkvKiB0aHIzKG4pID0gdGhyMihuKSoyXmRlbHRhU2ZiUGUvYihuKSAqLyAgICAgICAgIAorICAgICAgICBpZiAoKnBzZmJOQWN0aXZlTGluZXMgPiAwKSB7CisgICAgICAgICAgLyogbmV3IHRocmVzaG9sZCAqLworICAgICAgICAgIFdvcmQzMiB0aHJGYWN0b3I7CisgICAgICAgICAgc2ZiRW4gID0gcHN5T3V0Q2hhbi0+c2ZiRW5lcmd5W3NmYkdycCtzZmJdOworICAgICAgICAgIHNmYlRociA9IHBzeU91dENoYW4tPnNmYlRocmVzaG9sZFtzZmJHcnArc2ZiXTsKKworICAgICAgICAgICBpZihkZWx0YVNmYlBlID49IDApeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgcmVkdWNlIHRocmVzaG9sZAorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHRockZhY3RvciA9IHBvdzJfeHkoTF9uZWdhdGUoZGVsdGFTZmJQZSksIChub3JtRmFjdG9yKiAoKnBzZmJOQWN0aXZlTGluZXMpKSk7CisgICAgICAgICAgICAgIAorICAgICAgICAgICAgc2ZiVGhyUmVkdWNlZCA9IExfbXB5X2xzKHNmYlRociwgcm91bmQxNih0aHJGYWN0b3IpKTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICBpbmNyZWFzZSB0aHJlc2hvbGQKKyAgICAgICAgICAgICovCisgICAgICAgICAgICB0aHJGYWN0b3IgPSBwb3cyX3h5KGRlbHRhU2ZiUGUsIChub3JtRmFjdG9yICogKCpwc2ZiTkFjdGl2ZUxpbmVzKSkpOworICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmKHRockZhY3RvciA+IHNmYlRocikgeworICAgICAgICAgICAgICBzaGlmdCA9IG5vcm1fbCh0aHJGYWN0b3IpOw0KKwkJCSAgc2ZiVGhyUmVkdWNlZCA9IERpdl8zMiggc2ZiVGhyIDw8IHNoaWZ0LCB0aHJGYWN0b3I8PHNoaWZ0ICk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgc2ZiVGhyUmVkdWNlZCA9IE1BWF8zMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICB9CisKKyAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAvKiBhdm9pZCBob2xlICovCisgICAgICAgICAgc2ZiRW4gPSBMX21weV9scyhzZmJFbiwgcHN5T3V0Q2hhbi0+c2ZiTWluU25yW3NmYkdycCtzZmJdKTsKKyAgICAgICAgICAgICAKKyAgICAgICAgICBpZiAoKHNmYlRoclJlZHVjZWQgPiBzZmJFbikgJiYKKyAgICAgICAgICAgICAgKCpwYWhGbGFnID09IEFIX0lOQUNUSVZFKSkgeworICAgICAgICAgICAgc2ZiVGhyUmVkdWNlZCA9IG1heChzZmJFbiwgc2ZiVGhyKTsKKyAgICAgICAgICAgICpwYWhGbGFnID0gQUhfQUNUSVZFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgIH0KKworICAgICAgICAgIHBzeU91dENoYW4tPnNmYlRocmVzaG9sZFtzZmJHcnArc2ZiXSA9IHNmYlRoclJlZHVjZWQ7ICAKKyAgICAgICAgfQ0KKw0KKwkJcGFoRmxhZysrOyBwc2ZiTkFjdGl2ZUxpbmVzKys7IHBzZmJQZUZhY3RvcnMrKzsKKyAgICAgIH0KKyAgICB9CisgIH0KK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTpyZWR1Y2VNaW5TbnIKKyogZGVzY3JpcHRpb246IGlmIHRoZSBkZXNpcmVkIHBlIGNhbiBub3QgYmUgcmVhY2hlZCwgcmVkdWNlIHBlIGJ5IHJlZHVjaW5nIG1pblNucgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyB2b2lkIHJlZHVjZU1pblNucihQU1lfT1VUX0NIQU5ORUwgIHBzeU91dENoYW5uZWxbTUFYX0NIQU5ORUxTXSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgUEVfREFUQSAgICAgICAgICpwZURhdGEsIAorICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgICAgICAgICAgYWhGbGFnW01BWF9DSEFOTkVMU11bTUFYX0dST1VQRURfU0ZCXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgICAgIG5DaGFubmVscywKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgICAgIGRlc2lyZWRQZSkKK3sKKyAgV29yZDE2IGNoLCBzZmIsIHNmYlN1YldpbjsKKyAgV29yZDE2IGRlbHRhUGU7CisKKyAgLyogc3RhcnQgYXQgaGlnaGVzdCBmcmVxIGRvd24gdG8gMCAqLworICBzZmJTdWJXaW4gPSBwc3lPdXRDaGFubmVsWzBdLm1heFNmYlBlckdyb3VwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgd2hpbGUgKHBlRGF0YS0+cGUgPiBkZXNpcmVkUGUgJiYgc2ZiU3ViV2luID4gMCkgeworICAgICAgIAorICAgIHNmYlN1YldpbiA9IHNmYlN1YldpbiAtIDE7CisgICAgLyogbG9vcCBvdmVyIGFsbCBzdWJ3aW5kb3dzICovCisgICAgZm9yIChzZmI9c2ZiU3ViV2luOyBzZmI8cHN5T3V0Q2hhbm5lbFswXS5zZmJDbnQ7CisgICAgICAgIHNmYis9cHN5T3V0Q2hhbm5lbFswXS5zZmJQZXJHcm91cCkgeworICAgICAgLyogbG9vcCBvdmVyIGFsbCBjaGFubmVscyAqLworCQlQRV9DSEFOTkVMX0RBVEEqIHBlQ2hhbiA9IHBlRGF0YS0+cGVDaGFubmVsRGF0YTsNCisJCVBTWV9PVVRfQ0hBTk5FTCogcHN5T3V0Q2ggPSBwc3lPdXRDaGFubmVsOw0KKwkJZm9yIChjaD0wOyBjaDxuQ2hhbm5lbHM7IGNoKyspIHsgICAgICAgICAgIAorICAgICAgICBpZiAoYWhGbGFnW2NoXVtzZmJdICE9IE5PX0FIICYmCisgICAgICAgICAgICBwc3lPdXRDaC0+c2ZiTWluU25yW3NmYl0gPCBtaW5TbnJMaW1pdCkgeworICAgICAgICAgIHBzeU91dENoLT5zZmJNaW5TbnJbc2ZiXSA9IG1pblNuckxpbWl0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgcHN5T3V0Q2gtPnNmYlRocmVzaG9sZFtzZmJdID0KKyAgICAgICAgICAgIExfbXB5X2xzKHBzeU91dENoLT5zZmJFbmVyZ3lbc2ZiXSwgcHN5T3V0Q2gtPnNmYk1pblNucltzZmJdKTsKKworICAgICAgICAgIC8qIGNhbGMgbmV3IHBlICovCisgICAgICAgICAgZGVsdGFQZSA9ICgocGVDaGFuLT5zZmJOTGluZXM0W3NmYl0gKyAocGVDaGFuLT5zZmJOTGluZXM0W3NmYl0gPj4gMSkpID4+IDIpIC0KKyAgICAgICAgICAgICAgcGVDaGFuLT5zZmJQZVtzZmJdOworICAgICAgICAgIHBlRGF0YS0+cGUgPSBwZURhdGEtPnBlICsgZGVsdGFQZTsKKyAgICAgICAgICBwZUNoYW4tPnBlID0gcGVDaGFuLT5wZSArIGRlbHRhUGU7CQkgIAorICAgICAgICB9DQorCQlwZUNoYW4gKz0gMTsgcHN5T3V0Q2ggKz0gMTsKKyAgICAgIH0KKyAgICAgIC8qIHN0b3AgaWYgZW5vdWdoIGhhcyBiZWVuIHNhdmVkICovCisgICAgICAgCisgICAgICBpZiAocGVEYXRhLT5wZSA8PSBkZXNpcmVkUGUpCisgICAgICAgIGJyZWFrOworICAgIH0KKyAgfQorfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTphbGxvd01vcmVIb2xlcworKiBkZXNjcmlwdGlvbjogaWYgdGhlIGRlc2lyZWQgcGUgY2FuIG5vdCBiZSByZWFjaGVkLCBzb21lIG1vcmUgc2NhbGVmYWN0b3IgYmFuZHMgIAorKiAgICAgICAgICAgICAgaGF2ZSB0byBiZSBxdWFudGl6ZWQgdG8gemVybworKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyB2b2lkIGFsbG93TW9yZUhvbGVzKFBTWV9PVVRfQ0hBTk5FTCAgcHN5T3V0Q2hhbm5lbFtNQVhfQ0hBTk5FTFNdLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFBTWV9PVVRfRUxFTUVOVCAqcHN5T3V0RWxlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFBFX0RBVEEgICAgICAgICAqcGVEYXRhLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgICAgICAgICAgYWhGbGFnW01BWF9DSEFOTkVMU11bTUFYX0dST1VQRURfU0ZCXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEFIX1BBUkFNICAqYWhQYXJhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgICAgbkNoYW5uZWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICAgICBkZXNpcmVkUGUpCit7CisgIFdvcmQxNiBjaCwgc2ZiOworICBXb3JkMTYgYWN0UGUsIHNoaWZ0OworCisgIGFjdFBlID0gcGVEYXRhLT5wZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgIC8qIGZvciBNUyBhbGxvdyBob2xlIGluIHRoZSBjaGFubmVsIHdpdGggbGVzcyBlbmVyZ3kgKi8KKyAgICAgCisgIGlmIChuQ2hhbm5lbHM9PTIgJiYKKyAgICAgIHBzeU91dENoYW5uZWxbMF0ud2luZG93U2VxdWVuY2U9PXBzeU91dENoYW5uZWxbMV0ud2luZG93U2VxdWVuY2UpIHsKKyAgICBQU1lfT1VUX0NIQU5ORUwgKnBzeU91dENoYW5MID0gJnBzeU91dENoYW5uZWxbMF07CisgICAgUFNZX09VVF9DSEFOTkVMICpwc3lPdXRDaGFuUiA9ICZwc3lPdXRDaGFubmVsWzFdOworICAgIGZvciAoc2ZiPTA7IHNmYjxwc3lPdXRDaGFuTC0+c2ZiQ250OyBzZmIrKykgeworICAgICAgV29yZDMyIG1pbkVuOworICAgICAgIAorICAgICAgaWYgKHBzeU91dEVsZW1lbnQtPnRvb2xzSW5mby5tc01hc2tbc2ZiXSkgeworICAgICAgICAvKiBhbGxvdyBob2xlIGluIHNpZGUgY2hhbm5lbCA/ICovCisgICAgICAgIG1pbkVuID0gTF9tcHlfbHMocHN5T3V0Q2hhbkwtPnNmYkVuZXJneVtzZmJdLCAobWluU25yTGltaXQgKiBwc3lPdXRDaGFuTC0+c2ZiTWluU25yW3NmYl0pID4+IDE2KTsKKyAgICAgICAgICAgCisgICAgICAgIGlmIChhaEZsYWdbMV1bc2ZiXSAhPSBOT19BSCAmJgorICAgICAgICAgICAgbWluRW4gPiBwc3lPdXRDaGFuUi0+c2ZiRW5lcmd5W3NmYl0pIHsKKyAgICAgICAgICBhaEZsYWdbMV1bc2ZiXSA9IE5PX0FIOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICBwc3lPdXRDaGFuUi0+c2ZiVGhyZXNob2xkW3NmYl0gPSBMX2FkZChwc3lPdXRDaGFuUi0+c2ZiRW5lcmd5W3NmYl0sIHBzeU91dENoYW5SLT5zZmJFbmVyZ3lbc2ZiXSk7CisgICAgICAgICAgYWN0UGUgPSBhY3RQZSAtIHBlRGF0YS0+cGVDaGFubmVsRGF0YVsxXS5zZmJQZVtzZmJdOworICAgICAgICB9CisgICAgICAgIC8qIGFsbG93IGhvbGUgaW4gbWlkIGNoYW5uZWwgPyAqLworICAgICAgICBlbHNlIHsKKyAgICAgICAgbWluRW4gPSBMX21weV9scyhwc3lPdXRDaGFuUi0+c2ZiRW5lcmd5W3NmYl0sIChtaW5TbnJMaW1pdCAqIHBzeU91dENoYW5SLT5zZmJNaW5TbnJbc2ZiXSkgPj4gMTYpOworICAgICAgICAgICAgIAorICAgICAgICAgIGlmIChhaEZsYWdbMF1bc2ZiXSE9IE5PX0FIICYmCisgICAgICAgICAgICAgIG1pbkVuID4gcHN5T3V0Q2hhbkwtPnNmYkVuZXJneVtzZmJdKSB7CisgICAgICAgICAgICBhaEZsYWdbMF1bc2ZiXSA9IE5PX0FIOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBwc3lPdXRDaGFuTC0+c2ZiVGhyZXNob2xkW3NmYl0gPSBMX2FkZChwc3lPdXRDaGFuTC0+c2ZiRW5lcmd5W3NmYl0sIHBzeU91dENoYW5MLT5zZmJFbmVyZ3lbc2ZiXSk7CisgICAgICAgICAgICBhY3RQZSA9IGFjdFBlIC0gcGVEYXRhLT5wZUNoYW5uZWxEYXRhWzBdLnNmYlBlW3NmYl07CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgICAKKyAgICAgICAgaWYgKGFjdFBlIDwgZGVzaXJlZFBlKQorICAgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0KKyAgfQorCisgIC8qIHN1YnNlcXVlbnRseSBlcmFzZSBiYW5kcyAqLyAgIAorICBpZiAoYWN0UGUgPiBkZXNpcmVkUGUpIHsKKyAgICBXb3JkMTYgc3RhcnRTZmJbMl07CisgICAgV29yZDMyIGF2Z0VuLCBtaW5FbjsKKyAgICBXb3JkMTYgYWhDbnQ7CisgICAgV29yZDE2IGVuSWR4OworICAgIFdvcmQxNiBlbkRpZmY7CisgICAgV29yZDMyIGVuWzRdOworICAgIFdvcmQxNiBtaW5TZmIsIG1heFNmYjsKKyAgICBGbGFnICAgZG9uZTsKKworICAgIC8qIGRvIG5vdCBnbyBiZWxvdyBzdGFydFNmYiAqLworICAgIGZvciAoY2g9MDsgY2g8bkNoYW5uZWxzOyBjaCsrKSB7CisgICAgICAgICAKKyAgICAgIGlmIChwc3lPdXRDaGFubmVsW2NoXS53aW5kb3dTZXF1ZW5jZSAhPSBTSE9SVF9XSU5ET1cpCisgICAgICAgIHN0YXJ0U2ZiW2NoXSA9IGFoUGFyYW0tPnN0YXJ0U2ZiTDsKKyAgICAgIGVsc2UKKyAgICAgICAgc3RhcnRTZmJbY2hdID0gYWhQYXJhbS0+c3RhcnRTZmJTOworICAgIH0KKworICAgIGF2Z0VuID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIG1pbkVuID0gTUFYXzMyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIGFoQ250ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIGZvciAoY2g9MDsgY2g8bkNoYW5uZWxzOyBjaCsrKSB7CisgICAgICBQU1lfT1VUX0NIQU5ORUwgKnBzeU91dENoYW4gPSAmcHN5T3V0Q2hhbm5lbFtjaF07CisgICAgICBmb3IgKHNmYj1zdGFydFNmYltjaF07IHNmYjxwc3lPdXRDaGFuLT5zZmJDbnQ7IHNmYisrKSB7CisgICAgICAgICAgIAorICAgICAgICBpZiAoKGFoRmxhZ1tjaF1bc2ZiXSAhPSBOT19BSCkgJiYKKyAgICAgICAgICAgIChwc3lPdXRDaGFuLT5zZmJFbmVyZ3lbc2ZiXSA+IHBzeU91dENoYW4tPnNmYlRocmVzaG9sZFtzZmJdKSkgeworICAgICAgICAgIG1pbkVuID0gbWluKG1pbkVuLCBwc3lPdXRDaGFuLT5zZmJFbmVyZ3lbc2ZiXSk7CisgICAgICAgICAgYXZnRW4gPSBMX2FkZChhdmdFbiwgcHN5T3V0Q2hhbi0+c2ZiRW5lcmd5W3NmYl0pOworICAgICAgICAgIGFoQ250Kys7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgICAgIAorICAgIGlmKGFoQ250KSB7CisgICAgICBXb3JkMzIgaWFoQ250OworICAgICAgc2hpZnQgPSBub3JtX2woYWhDbnQpOw0KKwkgIGlhaENudCA9IERpdl8zMiggMSA8PCBzaGlmdCwgYWhDbnQgPDwgc2hpZnQgKTsKKyAgICAgIGF2Z0VuID0gZml4bXVsKGF2Z0VuLCBpYWhDbnQpOworICAgIH0KKworICAgIGVuRGlmZiA9IGlMb2c0KGF2Z0VuKSAtIGlMb2c0KG1pbkVuKTsKKyAgICAvKiBjYWxjIHNvbWUgZW5lcmd5IGJvcmRlcnMgYmV0d2VlbiBtaW5FbiBhbmQgYXZnRW4gKi8KKyAgICBmb3IgKGVuSWR4PTA7IGVuSWR4PDQ7IGVuSWR4KyspIHsKKyAgICAgIFdvcmQzMiBlbkZhYzsKKyAgICAgIGVuRmFjID0gKCg2LShlbklkeCA8PCAxKSkgKiBlbkRpZmYpOworICAgICAgZW5bZW5JZHhdID0gZml4bXVsKGF2Z0VuLCBwb3cyX3h5KExfbmVnYXRlKGVuRmFjKSw3KjQpKTsKKyAgICB9CisKKyAgICAvKiBzdGFydCB3aXRoIGxvd2VzdCBlbmVyZ3kgYm9yZGVyIGF0IGhpZ2hlc3Qgc2ZiICovCisgICAgbWF4U2ZiID0gcHN5T3V0Q2hhbm5lbFswXS5zZmJDbnQgLSAxOworICAgIG1pblNmYiA9IHN0YXJ0U2ZiWzBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgCisgICAgaWYgKG5DaGFubmVscyA9PSAyKSB7CisgICAgICBtYXhTZmIgPSBtYXgobWF4U2ZiLCAocHN5T3V0Q2hhbm5lbFsxXS5zZmJDbnQgLSAxKSk7CisgICAgICBtaW5TZmIgPSBtaW4obWluU2ZiLCBzdGFydFNmYlsxXSk7CisgICAgfQorCisgICAgc2ZiID0gbWF4U2ZiOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIGVuSWR4ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBkb25lID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgd2hpbGUgKCFkb25lKSB7CisgICAgICAgCisgICAgICBmb3IgKGNoPTA7IGNoPG5DaGFubmVsczsgY2grKykgeworICAgICAgICBQU1lfT1VUX0NIQU5ORUwgKnBzeU91dENoYW4gPSAmcHN5T3V0Q2hhbm5lbFtjaF07CisgICAgICAgICAgIAorICAgICAgICBpZiAoc2ZiPj1zdGFydFNmYltjaF0gJiYgc2ZiPHBzeU91dENoYW4tPnNmYkNudCkgeworICAgICAgICAgIC8qIHNmYiBlbmVyZ3kgYmVsb3cgYm9yZGVyID8gKi8KKyAgICAgICAgICAgICAKKyAgICAgICAgICBpZiAoYWhGbGFnW2NoXVtzZmJdICE9IE5PX0FIICYmIHBzeU91dENoYW4tPnNmYkVuZXJneVtzZmJdIDwgZW5bZW5JZHhdKXsKKyAgICAgICAgICAgIC8qIGFsbG93IGhvbGUgKi8KKyAgICAgICAgICAgIGFoRmxhZ1tjaF1bc2ZiXSA9IE5PX0FIOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBwc3lPdXRDaGFuLT5zZmJUaHJlc2hvbGRbc2ZiXSA9IExfYWRkKHBzeU91dENoYW4tPnNmYkVuZXJneVtzZmJdLCBwc3lPdXRDaGFuLT5zZmJFbmVyZ3lbc2ZiXSk7CisgICAgICAgICAgICBhY3RQZSA9IGFjdFBlIC0gcGVEYXRhLT5wZUNoYW5uZWxEYXRhW2NoXS5zZmJQZVtzZmJdOworICAgICAgICAgIH0KKyAgICAgICAgICAgCisgICAgICAgICAgaWYgKGFjdFBlIDwgZGVzaXJlZFBlKSB7CisgICAgICAgICAgICBkb25lID0gMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgICBzZmIgPSBzZmIgLSAxOworICAgICAgIAorICAgICAgaWYgKHNmYiA8IG1pblNmYikgeworICAgICAgICAvKiByZXN0YXJ0IHdpdGggbmV4dCBlbmVyZ3kgYm9yZGVyICovCisgICAgICAgIHNmYiA9IG1heFNmYjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBlbklkeCA9IGVuSWR4ICsgMTsKKyAgICAgICAgIAorICAgICAgICBpZiAoZW5JZHggLSA0ID49IDApCisgICAgICAgICAgZG9uZSA9IDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgfQorICAgIH0KKyAgfQorfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTphZGFwdFRocmVzaG9sZHNUb1BlCisqIGRlc2NyaXB0aW9uOiB0d28gZ3Vlc3NlcyBmb3IgdGhlIHJlZHVjdGlvbiB2YWx1ZSBhbmQgb25lIGZpbmFsIGNvcnJlY3Rpb24gb2YgdGhlCisqICAgICAgICAgICAgICB0aHJlc2hvbGRzCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIHZvaWQgYWRhcHRUaHJlc2hvbGRzVG9QZShQU1lfT1VUX0NIQU5ORUwgICAgIHBzeU91dENoYW5uZWxbTUFYX0NIQU5ORUxTXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFNZX09VVF9FTEVNRU5UICAgICpwc3lPdXRFbGVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgICAgICAgICAgICAgIGxvZ1NmYkVuZXJneVtNQVhfQ0hBTk5FTFNdW01BWF9HUk9VUEVEX1NGQl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBFX0RBVEEgICAgICAgICAgICAqcGVEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgICAgICAgIG5DaGFubmVscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICAgICAgICBkZXNpcmVkUGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFIX1BBUkFNICAgICAgICAgICAqYWhQYXJhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTUlOU05SX0FEQVBUX1BBUkFNICptc2FQYXJhbSkKK3sKKyAgV29yZDE2IG5vUmVkUGUsIHJlZFBlLCByZWRQZU5vQUg7CisgIFdvcmQxNiBjb25zdFBhcnQsIGNvbnN0UGFydE5vQUg7CisgIFdvcmQxNiBuQWN0aXZlTGluZXMsIG5BY3RpdmVMaW5lc05vQUg7CisgIFdvcmQxNiBkZXNpcmVkUGVOb0FIOworICBXb3JkMzIgcmVkVmFsLCBhdmdUaHJFeHA7CisgIFdvcmQzMiBpdGVyOworCisgIGNhbGNUaHJlc2hFeHAocGVEYXRhLT50aHJFeHAsIHBzeU91dENoYW5uZWwsIG5DaGFubmVscyk7CisKKyAgYWRhcHRNaW5TbnIocHN5T3V0Q2hhbm5lbCwgbG9nU2ZiRW5lcmd5LCBtc2FQYXJhbSwgbkNoYW5uZWxzKTsKKworICBpbml0QXZvaWRIb2xlRmxhZyhwZURhdGEtPmFoRmxhZywgcHN5T3V0Q2hhbm5lbCwgcHN5T3V0RWxlbWVudCwgbkNoYW5uZWxzLCBhaFBhcmFtKTsKKworICBub1JlZFBlID0gcGVEYXRhLT5wZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIGNvbnN0UGFydCA9IHBlRGF0YS0+Y29uc3RQYXJ0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgbkFjdGl2ZUxpbmVzID0gcGVEYXRhLT5uQWN0aXZlTGluZXM7ICAgICAgIAorCisgIC8qIGZpcnN0IGd1ZXNzIG9mIHJlZHVjdGlvbiB2YWx1ZSB0XjAuMjUgPSAyXigoYS1wZW4pLzQqYikgKi8KKyAgYXZnVGhyRXhwID0gcG93Ml94eSgoY29uc3RQYXJ0IC0gbm9SZWRQZSksIChuQWN0aXZlTGluZXMgPDwgMikpOworICAKKyAgLyogcjEgPSAyXigoYS1wZXIpLzQqYikgLSB0XjAuMjUgKi8KKyAgcmVkVmFsID0gcG93Ml94eSgoY29uc3RQYXJ0IC0gZGVzaXJlZFBlKSwgKG5BY3RpdmVMaW5lcyA8PCAyKSkgLSBhdmdUaHJFeHA7CisKKyAgLyogcmVkdWNlIHRocmVzaG9sZHMgKi8KKyAgcmVkdWNlVGhyZXNob2xkcyhwc3lPdXRDaGFubmVsLCBwZURhdGEtPmFoRmxhZywgcGVEYXRhLT50aHJFeHAsIG5DaGFubmVscywgcmVkVmFsKTsKKworICAvKiBwZSBhZnRlciBmaXJzdCBndWVzcyAqLworICBjYWxjU2ZiUGUocGVEYXRhLCBwc3lPdXRDaGFubmVsLCBuQ2hhbm5lbHMpOworICByZWRQZSA9IHBlRGF0YS0+cGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgaXRlciA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBkbyB7CisgICAgLyogcGUgZm9yIGJhbmRzIHdoZXJlIGF2b2lkIGhvbGUgaXMgaW5hY3RpdmUgKi8KKyAgICBjYWxjUGVOb0FIKCZyZWRQZU5vQUgsICZjb25zdFBhcnROb0FILCAmbkFjdGl2ZUxpbmVzTm9BSCwKKyAgICAgICAgICAgICAgIHBlRGF0YSwgcGVEYXRhLT5haEZsYWcsIHBzeU91dENoYW5uZWwsIG5DaGFubmVscyk7CisKKyAgICBkZXNpcmVkUGVOb0FIID0gZGVzaXJlZFBlIC0ocmVkUGUgLSByZWRQZU5vQUgpOworICAgICAKKyAgICBpZiAoZGVzaXJlZFBlTm9BSCA8IDApIHsKKyAgICAgIGRlc2lyZWRQZU5vQUggPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIH0KKworICAgIC8qIHNlY29uZCBndWVzcyAqLworICAgICAKKyAgICBpZiAobkFjdGl2ZUxpbmVzTm9BSCA+IDApIHsKKwkJCisJCWF2Z1RockV4cCA9IHBvdzJfeHkoKGNvbnN0UGFydE5vQUggLSByZWRQZU5vQUgpLCAobkFjdGl2ZUxpbmVzTm9BSCA8PCAyKSk7CisJCQorCQlyZWRWYWwgPSAocmVkVmFsICsgcG93Ml94eSgoY29uc3RQYXJ0Tm9BSCAtIGRlc2lyZWRQZU5vQUgpLCAobkFjdGl2ZUxpbmVzTm9BSCA8PCAyKSkpIC0gYXZnVGhyRXhwOworCQkKKwkJLyogcmVkdWNlIHRocmVzaG9sZHMgKi8KKwkJcmVkdWNlVGhyZXNob2xkcyhwc3lPdXRDaGFubmVsLCBwZURhdGEtPmFoRmxhZywgcGVEYXRhLT50aHJFeHAsIG5DaGFubmVscywgcmVkVmFsKTsKKyAgICB9CisKKyAgICBjYWxjU2ZiUGUocGVEYXRhLCBwc3lPdXRDaGFubmVsLCBuQ2hhbm5lbHMpOworICAgIHJlZFBlID0gcGVEYXRhLT5wZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgICBpdGVyID0gaXRlcisxOworICAgICAgIAorICB9IHdoaWxlICgoMjAgKiBhYnNfcyhyZWRQZSAtIGRlc2lyZWRQZSkgPiBkZXNpcmVkUGUpICYmIChpdGVyIDwgMikpOworCisgICAKKyAgaWYgKCgxMDAgKiByZWRQZSA8IDExNSAqIGRlc2lyZWRQZSkpIHsKKyAgICBjb3JyZWN0VGhyZXNoKHBzeU91dENoYW5uZWwsIHBlRGF0YS0+YWhGbGFnLCBwZURhdGEsIHBlRGF0YS0+dGhyRXhwLCByZWRWYWwsCisgICAgICAgICAgICAgICAgICBuQ2hhbm5lbHMsIGRlc2lyZWRQZSAtIHJlZFBlKTsKKyAgfQorICBlbHNlIHsKKyAgICBXb3JkMTYgZGVzaXJlZFBlMTA1ID0gKDEwNSAqIGRlc2lyZWRQZSkgLyAxMDA7CisgICAgcmVkdWNlTWluU25yKHBzeU91dENoYW5uZWwsIHBlRGF0YSwgcGVEYXRhLT5haEZsYWcsCisgICAgICAgICAgICAgICAgIG5DaGFubmVscywgZGVzaXJlZFBlMTA1KTsKKyAgICBhbGxvd01vcmVIb2xlcyhwc3lPdXRDaGFubmVsLCBwc3lPdXRFbGVtZW50LCBwZURhdGEsIHBlRGF0YS0+YWhGbGFnLAorICAgICAgICAgICAgICAgICAgIGFoUGFyYW0sIG5DaGFubmVscywgZGVzaXJlZFBlMTA1KTsKKyAgfQorfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBjYWxjQml0U2F2ZQorKiBkZXNjcmlwdGlvbjogIENhbGN1bGF0ZXMgcGVyY2VudGFnZSBvZiBiaXQgc2F2ZSwgc2VlIGZpZ3VyZSBiZWxvdworKiByZXR1cm5zOgorKiBpbnB1dDogICAgICAgIHBhcmFtZXRlcnMgYW5kIGJpdHJlcy1mdWxsbmVzcworKiBvdXRwdXQ6ICAgICAgIHBlcmNlbnRhZ2Ugb2YgYml0IHNhdmUKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIFdvcmQxNiBjYWxjQml0U2F2ZShXb3JkMTYgZmlsbExldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgY2xpcExvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2IGNsaXBIaWdoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgbWluQml0U2F2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2IG1heEJpdFNhdmUpCit7CisgIFdvcmQxNiBiaXRzYXZlID0gMDsKKworICBmaWxsTGV2ZWwgPSBtYXgoZmlsbExldmVsLCBjbGlwTG93KTsKKyAgZmlsbExldmVsID0gbWluKGZpbGxMZXZlbCwgY2xpcEhpZ2gpOworCisgIGlmKGNsaXBIaWdoLWNsaXBMb3cpDQorICBiaXRzYXZlID0gKG1heEJpdFNhdmUgLSAoKChtYXhCaXRTYXZlLW1pbkJpdFNhdmUpKihmaWxsTGV2ZWwtY2xpcExvdykpLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsaXBIaWdoLWNsaXBMb3cpKSk7CisKKyAgcmV0dXJuIChiaXRzYXZlKTsKK30KKworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBjYWxjQml0U3BlbmQKKyogZGVzY3JpcHRpb246ICBDYWxjdWxhdGVzIHBlcmNlbnRhZ2Ugb2YgYml0IHNwZW5kLCBzZWUgZmlndXJlIGJlbG93CisqIHJldHVybnM6CisqIGlucHV0OiAgICAgICAgcGFyYW1ldGVycyBhbmQgYml0cmVzLWZ1bGxuZXNzCisqIG91dHB1dDogICAgICAgcGVyY2VudGFnZSBvZiBiaXQgc3BlbmQKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIFdvcmQxNiBjYWxjQml0U3BlbmQoV29yZDE2IGZpbGxMZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiBjbGlwTG93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2IGNsaXBIaWdoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2IG1pbkJpdFNwZW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2IG1heEJpdFNwZW5kKQoreworICBXb3JkMTYgYml0c3BlbmQgPSAxOworCisgIGZpbGxMZXZlbCA9IG1heChmaWxsTGV2ZWwsIGNsaXBMb3cpOworICBmaWxsTGV2ZWwgPSBtaW4oZmlsbExldmVsLCBjbGlwSGlnaCk7CisKKyAgaWYoY2xpcEhpZ2gtY2xpcExvdykNCisgIGJpdHNwZW5kID0gKG1pbkJpdFNwZW5kICsgKChtYXhCaXRTcGVuZCAtIG1pbkJpdFNwZW5kKSooZmlsbExldmVsIC0gY2xpcExvdykgLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xpcEhpZ2gtY2xpcExvdykpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgcmV0dXJuIChiaXRzcGVuZCk7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IGFkanVzdFBlTWluTWF4KCkKKyogZGVzY3JpcHRpb246ICBhZGp1c3RzIHBlTWluIGFuZCBwZU1heCBwYXJhbWV0ZXJzIG92ZXIgdGltZQorKiByZXR1cm5zOgorKiBpbnB1dDogICAgICAgIGN1cnJlbnQgcGUsIHBlTWluLCBwZU1heAorKiBvdXRwdXQ6ICAgICAgIGFkanVzdGVkIHBlTWluL3BlTWF4CisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyB2b2lkIGFkanVzdFBlTWluTWF4KGNvbnN0IFdvcmQxNiBjdXJyUGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgICAgICAqcGVNaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgICAgICAqcGVNYXgpCit7CisgIFdvcmQxNiBtaW5GYWNIaSwgbWF4RmFjSGksIG1pbkZhY0xvLCBtYXhGYWNMbzsKKyAgV29yZDE2IGRpZmY7CisgIFdvcmQxNiBtaW5EaWZmID0gZXh0cmFjdF9sKGN1cnJQZSAvIDYpOworICBtaW5GYWNIaSA9IDMwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBtYXhGYWNIaSA9IDEwMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBtaW5GYWNMbyA9IDE0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBtYXhGYWNMbyA9IDc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgIGRpZmYgPSBjdXJyUGUgLSAqcGVNYXggOworICAgCisgIGlmIChkaWZmID4gMCkgeworICAgICpwZU1pbiA9ICpwZU1pbiArICgoZGlmZiAqIG1pbkZhY0hpKSAvIDEwMCk7CisgICAgKnBlTWF4ID0gKnBlTWF4ICsgKChkaWZmICogbWF4RmFjSGkpIC8gMTAwKTsKKyAgfSBlbHNlIHsKKyAgICBkaWZmID0gKnBlTWluIC0gY3VyclBlOworICAgICAKKyAgICBpZiAoZGlmZiA+IDApIHsKKyAgICAgICpwZU1pbiA9ICpwZU1pbiAtICgoZGlmZiAqIG1pbkZhY0xvKSAvIDEwMCk7CisgICAgICAqcGVNYXggPSAqcGVNYXggLSAoKGRpZmYgKiBtYXhGYWNMbykgLyAxMDApOworICAgIH0gZWxzZSB7CisgICAgICAqcGVNaW4gPSAqcGVNaW4gKyAoKGN1cnJQZSAtICpwZU1pbikgKiBtaW5GYWNIaSAvIDEwMCk7CisgICAgICAqcGVNYXggPSAqcGVNYXggLSAoKCpwZU1heCAtIGN1cnJQZSkgKiBtYXhGYWNMbyAvIDEwMCk7CisgICAgfQorICB9CisKKyAgIAorICBpZiAoKCpwZU1heCAtICpwZU1pbikgPCBtaW5EaWZmKSB7CisgICAgV29yZDE2IHBhcnRMbywgcGFydEhpOworCisgICAgcGFydExvID0gbWF4KDAsIChjdXJyUGUgLSAqcGVNaW4pKTsKKyAgICBwYXJ0SGkgPSBtYXgoMCwgKCpwZU1heCAtIGN1cnJQZSkpOworCisgICAgKnBlTWF4ID0gY3VyclBlICsgKChwYXJ0SGkgKiBtaW5EaWZmKSAvIChwYXJ0TG8gKyBwYXJ0SGkpKTsKKyAgICAqcGVNaW4gPSBjdXJyUGUgLSAoKHBhcnRMbyAqIG1pbkRpZmYpIC8gKHBhcnRMbyArIHBhcnRIaSkpOworICAgICpwZU1pbiA9IG1heCgwLCAqcGVNaW4pOworICB9Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IEJpdHJlc0NhbGNCaXRGYWMKKyogZGVzY3JpcHRpb246ICBjYWxjdWxhdGVzIGZhY3RvciBvZiBzcGVuZGluZyBiaXRzIGZvciBvbmUgZnJhbWUKKyogICAgICAgICAgICAgICAgMS4wIDogdGFrZSBhbGwgZnJhbWUgZHlucGFydCBiaXRzCisqICAgICAgICAgICAgICAgID4xLjAgOiB0YWtlIGFsbCBmcmFtZSBkeW5wYXJ0IGJpdHMgKyBiaXRyZXMKKyogICAgICAgICAgICAgICAgPDEuMCA6IHB1dCBiaXRzIGluIGJpdHJlc2Vydm9pcgorKiAgcmV0dXJuczogICAgICBCaXRGYWMqMTAwCisqICBpbnB1dDogICAgICAgIGJpdHJlcy1mdWxsbmVzcywgcGUsIGJsb2NrVHlwZSwgcGFyYW1ldGVyLXNldHRpbmdzCisqICBvdXRwdXQ6CisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyBXb3JkMTYgYml0cmVzQ2FsY0JpdEZhYyggY29uc3QgV29yZDE2ICAgYml0cmVzQml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICAgbWF4Qml0cmVzQml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICAgcGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgIHdpbmRvd1NlcXVlbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgICBhdmdCaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgICBtYXhCaXRGYWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFESl9USFJfU1RBVEUgKkFkalRociwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVRTX0VMRU1FTlQgICAqYWRqVGhyQ2hhbikKK3sKKyAgQlJFU19QQVJBTSAqYnJlc1BhcmFtOworICBXb3JkMTYgcGV4OworICBXb3JkMTYgZmlsbExldmVsOworICBXb3JkMTYgYml0U2F2ZSwgYml0U3BlbmQsIGJpdHJlc0ZhYzsKKworICBmaWxsTGV2ZWwgPSBleHRyYWN0X2woKDEwMCogYml0cmVzQml0cykgLyBtYXhCaXRyZXNCaXRzKTsKKworICBpZiAod2luZG93U2VxdWVuY2UgIT0gU0hPUlRfV0lORE9XKQorICAgIGJyZXNQYXJhbSA9ICYoQWRqVGhyLT5icmVzUGFyYW1Mb25nKTsKKyAgZWxzZQorICAgIGJyZXNQYXJhbSA9ICYoQWRqVGhyLT5icmVzUGFyYW1TaG9ydCk7CisKKyAgcGV4ID0gbWF4KHBlLCBhZGpUaHJDaGFuLT5wZU1pbik7CisgIHBleCA9IG1pbihwZXgsYWRqVGhyQ2hhbi0+cGVNYXgpOworCisgIGJpdFNhdmUgPSBjYWxjQml0U2F2ZShmaWxsTGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICBicmVzUGFyYW0tPmNsaXBTYXZlTG93LCBicmVzUGFyYW0tPmNsaXBTYXZlSGlnaCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZXNQYXJhbS0+bWluQml0U2F2ZSwgYnJlc1BhcmFtLT5tYXhCaXRTYXZlKTsKKworICBiaXRTcGVuZCA9IGNhbGNCaXRTcGVuZChmaWxsTGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZXNQYXJhbS0+Y2xpcFNwZW5kTG93LCBicmVzUGFyYW0tPmNsaXBTcGVuZEhpZ2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZXNQYXJhbS0+bWluQml0U3BlbmQsIGJyZXNQYXJhbS0+bWF4Qml0U3BlbmQpOworCisgIGlmKGFkalRockNoYW4tPnBlTWF4ICE9IGFkalRockNoYW4tPnBlTWluKQ0KKwliaXRyZXNGYWMgPSAoMTAwIC0gYml0U2F2ZSkgKyBleHRyYWN0X2woKChiaXRTcGVuZCArIGJpdFNhdmUpICogKHBleCAtIGFkalRockNoYW4tPnBlTWluKSkgLworICAgICAgICAgICAgICAgICAgICAoYWRqVGhyQ2hhbi0+cGVNYXggLSBhZGpUaHJDaGFuLT5wZU1pbikpOworICBlbHNlCisJYml0cmVzRmFjID0gMHg3ZmZmOworICAgICAgICAgICAgICAgCisgIGJpdHJlc0ZhYyA9IG1pbihiaXRyZXNGYWMsCisgICAgICAgICAgICAgICAgICAgICgxMDAtMzAgKyBleHRyYWN0X2woKDEwMCAqIGJpdHJlc0JpdHMpIC8gYXZnQml0cykpKTsKKworICBiaXRyZXNGYWMgPSBtaW4oYml0cmVzRmFjLCBtYXhCaXRGYWMpOworCisgIGFkanVzdFBlTWluTWF4KHBlLCAmYWRqVGhyQ2hhbi0+cGVNaW4sICZhZGpUaHJDaGFuLT5wZU1heCk7CisKKyAgcmV0dXJuIGJpdHJlc0ZhYzsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IEFkalRockluaXQKKyogZGVzY3JpcHRpb246ICBpbml0IHRocmVzaG9sZHMgcGFyYW1ldGVyCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3ZvaWQgQWRqVGhySW5pdChBREpfVEhSX1NUQVRFICpoQWRqVGhyLAorICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQzMiAgIG1lYW5QZSwKKyAgICAgICAgICAgICAgICBXb3JkMzIgICAgICAgICBjaEJpdHJhdGUpCit7CisgIEFUU19FTEVNRU5UKiBhdHNFbGVtID0gJmhBZGpUaHItPmFkalRoclN0YXRlRWxlbTsKKyAgTUlOU05SX0FEQVBUX1BBUkFNICptc2FQYXJhbSA9ICZhdHNFbGVtLT5taW5TbnJBZGFwdFBhcmFtOworCisgIC8qIGNvbW1vbiBmb3IgYWxsIGVsZW1lbnRzOiAqLworICAvKiBwYXJhbWV0ZXJzIGZvciBiaXRyZXMgY29udHJvbCAqLworICBoQWRqVGhyLT5icmVzUGFyYW1Mb25nLmNsaXBTYXZlTG93ICAgPSAgMjA7ICAgICAgICAgICAgICAgICAgICAKKyAgaEFkalRoci0+YnJlc1BhcmFtTG9uZy5jbGlwU2F2ZUhpZ2ggID0gIDk1OyAgICAgICAgICAgICAgICAgICAgCisgIGhBZGpUaHItPmJyZXNQYXJhbUxvbmcubWluQml0U2F2ZSAgICA9ICAtNTsgICAgICAgICAgICAgICAgICAgIAorICBoQWRqVGhyLT5icmVzUGFyYW1Mb25nLm1heEJpdFNhdmUgICAgPSAgMzA7ICAgICAgICAgICAgICAgICAgICAKKyAgaEFkalRoci0+YnJlc1BhcmFtTG9uZy5jbGlwU3BlbmRMb3cgID0gIDIwOyAgICAgICAgICAgICAgICAgICAgCisgIGhBZGpUaHItPmJyZXNQYXJhbUxvbmcuY2xpcFNwZW5kSGlnaCA9ICA5NTsgICAgICAgICAgICAgICAgICAgIAorICBoQWRqVGhyLT5icmVzUGFyYW1Mb25nLm1pbkJpdFNwZW5kICAgPSAtMTA7ICAgICAgICAgICAgICAgICAgICAKKyAgaEFkalRoci0+YnJlc1BhcmFtTG9uZy5tYXhCaXRTcGVuZCAgID0gIDQwOyAgICAgICAgICAgICAgICAgICAgCisKKyAgaEFkalRoci0+YnJlc1BhcmFtU2hvcnQuY2xpcFNhdmVMb3cgICA9ICAyMDsgICAgICAgICAgICAgICAgICAgCisgIGhBZGpUaHItPmJyZXNQYXJhbVNob3J0LmNsaXBTYXZlSGlnaCAgPSAgNzU7ICAgICAgICAgICAgICAgICAgIAorICBoQWRqVGhyLT5icmVzUGFyYW1TaG9ydC5taW5CaXRTYXZlICAgID0gICAwOyAgICAgICAgICAgICAgICAgICAKKyAgaEFkalRoci0+YnJlc1BhcmFtU2hvcnQubWF4Qml0U2F2ZSAgICA9ICAyMDsgICAgICAgICAgICAgICAgICAgCisgIGhBZGpUaHItPmJyZXNQYXJhbVNob3J0LmNsaXBTcGVuZExvdyAgPSAgMjA7ICAgICAgICAgICAgICAgICAgIAorICBoQWRqVGhyLT5icmVzUGFyYW1TaG9ydC5jbGlwU3BlbmRIaWdoID0gIDc1OyAgICAgICAgICAgICAgICAgICAKKyAgaEFkalRoci0+YnJlc1BhcmFtU2hvcnQubWluQml0U3BlbmQgICA9IC01OyAgICAgICAgICAgICAgICAgICAgCisgIGhBZGpUaHItPmJyZXNQYXJhbVNob3J0Lm1heEJpdFNwZW5kICAgPSAgNTA7ICAgICAgICAgICAgICAgICAgIAorCisgIC8qIHNwZWNpZmljIGZvciBlYWNoIGVsZW1lbnQ6ICovCisKKyAgLyogcGFyYW1ldGVycyBmb3IgYml0cmVzIGNvbnRyb2wgKi8KKyAgYXRzRWxlbS0+cGVNaW4gPSBleHRyYWN0X2woKCg4MCptZWFuUGUpIC8gMTAwKSk7CisgIGF0c0VsZW0tPnBlTWF4ID0gZXh0cmFjdF9sKCgoMTIwKm1lYW5QZSkgLyAxMDApKTsKKworICAvKiBhZGRpdGlvbmFsIHBlIG9mZnNldCB0byBjb3JyZWN0IHBlMmJpdHMgZm9yIGxvdyBiaXRyYXRlcyAqLworICBhdHNFbGVtLT5wZU9mZnNldCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgaWYgKGNoQml0cmF0ZSA8IDMyMDAwKSB7CisgICAgYXRzRWxlbS0+cGVPZmZzZXQgPSBtYXgoNTAsICgxMDAgLSBleHRyYWN0X2woKDEwMCAqIGNoQml0cmF0ZSkgLyAzMjAwMCkpKTsKKyAgfQorCisgIC8qIGF2b2lkIGhvbGUgcGFyYW1ldGVycyAqLworICBpZiAoY2hCaXRyYXRlID4gMjAwMDApIHsKKyAgICBhdHNFbGVtLT5haFBhcmFtLm1vZGlmeU1pblNuciA9IFRSVUU7CisgICAgYXRzRWxlbS0+YWhQYXJhbS5zdGFydFNmYkwgPSAxNTsKKyAgICBhdHNFbGVtLT5haFBhcmFtLnN0YXJ0U2ZiUyA9IDM7CisgIH0KKyAgZWxzZSB7CisgICAgYXRzRWxlbS0+YWhQYXJhbS5tb2RpZnlNaW5TbnIgPSBGQUxTRTsKKyAgICBhdHNFbGVtLT5haFBhcmFtLnN0YXJ0U2ZiTCA9IDA7CisgICAgYXRzRWxlbS0+YWhQYXJhbS5zdGFydFNmYlMgPSAwOworICB9CisKKyAgLyogbWluU25yIGFkYXB0YXRpb24gKi8KKyAgLyogbWF4aW11bSByZWR1Y3Rpb24gb2YgbWluU25yIGdvZXMgZG93biB0byBtaW5TbnJebWF4UmVkICovCisgIG1zYVBhcmFtLT5tYXhSZWQgPSAweDIwMDAwMDAwOyAgICAgLyogKjAuMjVmIC8gICAgICAgICAgICAgICAgICAgICAgICAKKyAgLyogc3RhcnQgYWRhcHRhdGlvbiBvZiBtaW5TbnIgZm9yIGF2Z0VuL3NmYkVuID4gc3RhcnRSYXRpbyAqLworICBtc2FQYXJhbS0+c3RhcnRSYXRpbyA9IDB4MGNjY2NjY2Q7IC8qIDEwICovICAgICAgICAgICAgICAgICAgICAgICAgCisgIC8qIG1heGltdW0gbWluU25yIHJlZHVjdGlvbiB0byBtaW5TbnJebWF4UmVkIGlzIHJlYWNoZWQgZm9yCisgICAgIGF2Z0VuL3NmYkVuID49IG1heFJhdGlvICovCisgIG1zYVBhcmFtLT5tYXhSYXRpbyA9ICAweDAwMjBjNDljOyAvKiAxMDAwICovICAgICAgICAgICAgICAgICAgICAgICAgIAorICAvKiBoZWxwZXIgdmFyaWFibGVzIHRvIGludGVycG9sYXRlIG1pblNuciByZWR1Y3Rpb24gZm9yCisgICAgIGF2Z0VuL3NmYkVuIGJldHdlZW4gc3RhcnRSYXRpbyBhbmQgbWF4UmF0aW8gKi8KKworICBtc2FQYXJhbS0+cmVkUmF0aW9GYWMgPSAweGZiMzMzMzMzOyAvKiAtMC43NS8yMCAqLyAgICAgICAgIAorCisgIG1zYVBhcmFtLT5yZWRPZmZzID0gMHgzMDAwMDAwMDsgIC8qIG1zYVBhcmFtLT5yZWRSYXRpb0ZhYyAqIDEwKmxvZzEwKG1zYVBhcmFtLT5zdGFydFJhdGlvKSAqLyAgCisKKyAgICAgICAKKyAgLyogcGUgY29ycmVjdGlvbiAqLworICBhdHNFbGVtLT5wZUxhc3QgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgYXRzRWxlbS0+ZHluQml0c0xhc3QgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIGF0c0VsZW0tPnBlQ29ycmVjdGlvbkZhY3RvciA9IDEwMDsgLyogMS4wICovICAgICAgICAgICAgICAgICAgICAgICAgIAorCit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBjYWxjUGVDb3JyZWN0aW9uCisqIGRlc2NyaXB0aW9uOiAgY2FsY3VsYXRlcyB0aGUgZGVzaXJlZCBwZXJjZXB0dWFsIGVudHJvcHkgZmFjdG9yCisqCQkJCUl0IGlzIGJldHdlZW4gMC44NSBhbmQgMS4xNQorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgdm9pZCBjYWxjUGVDb3JyZWN0aW9uKFdvcmQxNiAqY29ycmVjdGlvbkZhYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2IHBlQWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgcGVMYXN0LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2IGJpdHNMYXN0KSAKK3sKKyAgV29yZDMyIHBlQWN0MTAwID0gMTAwICogcGVBY3Q7CisgIFdvcmQzMiBwZUxhc3QxMDAgPSAxMDAgKiBwZUxhc3Q7CisgIFdvcmQxNiBwZUJpdHNMYXN0ID0gYml0czJwZShiaXRzTGFzdCk7CisgICAgICAgICAgIAorICBpZiAoKGJpdHNMYXN0ID4gMCkgJiYKKyAgICAgIChwZUFjdDEwMCA8ICgxNTAgKiBwZUxhc3QpKSAmJiAgKHBlQWN0MTAwID4gKDcwICogcGVMYXN0KSkgJiYKKyAgICAgICgoMTIwICogcGVCaXRzTGFzdCkgPiBwZUxhc3QxMDAgKSAmJiAoKCA2NSAqIHBlQml0c0xhc3QpIDwgcGVMYXN0MTAwKSkKKyAgICB7CisgICAgICBXb3JkMTYgbmV3RmFjID0gKDEwMCAqIHBlTGFzdCkgLyBwZUJpdHNMYXN0OworICAgICAgLyogZGVhZCB6b25lICovCisgICAgICAgCisgICAgICBpZiAobmV3RmFjIDwgMTAwKSB7CisgICAgICAgIG5ld0ZhYyA9IG1pbigoKDExMCAqIG5ld0ZhYykgLyAxMDApLCAxMDApOworICAgICAgICBuZXdGYWMgPSBtYXgobmV3RmFjLCA4NSk7CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgbmV3RmFjID0gbWF4KCgoOTAgKiBuZXdGYWMpIC8gMTAwKSwgMTAwKTsKKyAgICAgICAgbmV3RmFjID0gbWluKG5ld0ZhYywgMTE1KTsKKyAgICAgIH0KKyAgICAgICAgIAorICAgICAgaWYgKChuZXdGYWMgPiAxMDAgJiYgKmNvcnJlY3Rpb25GYWMgPCAxMDApIHx8CisgICAgICAgICAgKG5ld0ZhYyA8IDEwMCAmJiAqY29ycmVjdGlvbkZhYyA+IDEwMCkpIHsKKyAgICAgICAgKmNvcnJlY3Rpb25GYWMgPSAxMDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgfQorICAgICAgLyogZmFzdGVyIGFkYXB0YXRpb24gdG93YXJkcyAxLjAsIHNsb3dlciBpbiB0aGUgb3RoZXIgZGlyZWN0aW9uICovCisgICAgICAgICAgICAgCisgICAgICBpZiAoKCpjb3JyZWN0aW9uRmFjIDwgMTAwICYmIG5ld0ZhYyA8ICpjb3JyZWN0aW9uRmFjKSB8fAorICAgICAgICAgICgqY29ycmVjdGlvbkZhYyA+IDEwMCAmJiBuZXdGYWMgPiAqY29ycmVjdGlvbkZhYykpCisgICAgICAgICpjb3JyZWN0aW9uRmFjID0gKDg1ICogKmNvcnJlY3Rpb25GYWMgKyAxNSAqIG5ld0ZhYykgLyAxMDA7CisgICAgICBlbHNlCisgICAgICAgICpjb3JyZWN0aW9uRmFjID0gKDcwICogKmNvcnJlY3Rpb25GYWMgKyAzMCAqIG5ld0ZhYykgLyAxMDA7CisgICAgICAqY29ycmVjdGlvbkZhYyA9IG1pbigqY29ycmVjdGlvbkZhYywgMTE1KTsKKyAgICAgICpjb3JyZWN0aW9uRmFjID0gbWF4KCpjb3JyZWN0aW9uRmFjLCA4NSk7CisgICAgfQorICBlbHNlIHsKKyAgICAqY29ycmVjdGlvbkZhYyA9IDEwMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICB9Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBBZGp1c3RUaHJlc2hvbGRzCisqIGRlc2NyaXB0aW9uOiAgQWRqdXN0IHRocmVzaG9sZHMgdG8gdGhlIGRlc2lyZWQgYml0cmF0ZQorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3ZvaWQgQWRqdXN0VGhyZXNob2xkcyhBREpfVEhSX1NUQVRFICAgKmFkalRoclN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgIEFUU19FTEVNRU5UICAgICAqQWRqVGhyU3RhdGVFbGVtZW50LAorICAgICAgICAgICAgICAgICAgICAgIFBTWV9PVVRfQ0hBTk5FTCAgcHN5T3V0Q2hhbm5lbFtNQVhfQ0hBTk5FTFNdLAorICAgICAgICAgICAgICAgICAgICAgIFBTWV9PVVRfRUxFTUVOVCAqcHN5T3V0RWxlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgICAgICAgICAgKmNoQml0RGlzdHJpYnV0aW9uLAorICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgICAgICAgICAgbG9nU2ZiRW5lcmd5W01BWF9DSEFOTkVMU11bTUFYX0dST1VQRURfU0ZCXSwKKyAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgICAgICAgICAgIHNmYk5SZWxldmFudExpbmVzW01BWF9DSEFOTkVMU11bTUFYX0dST1VQRURfU0ZCXSwgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgUUNfT1VUX0VMRU1FTlQgICpxY09FLAorCQkJCQkgIEVMRU1FTlRfQklUUwkgICplbEJpdHMsCisJCQkJCSAgY29uc3QgV29yZDE2ICAgICBuQ2hhbm5lbHMsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICAgICBtYXhCaXRGYWMpCit7CisgIFBFX0RBVEEgcGVEYXRhOyAgCisgIFdvcmQxNiBub1JlZFBlLCBncmFudGVkUGUsIGdyYW50ZWRQZUNvcnI7CisgIFdvcmQxNiBjdXJXaW5kb3dTZXF1ZW5jZTsKKyAgV29yZDE2IGJpdEZhY3RvcjsKKyAgV29yZDE2IGF2Z0JpdHMgPSAoZWxCaXRzLT5hdmVyYWdlQml0cyAtIChxY09FLT5zdGF0aWNCaXRzVXNlZCArIHFjT0UtPmFuY0JpdHNVc2VkKSk7CisgIFdvcmQxNiBiaXRyZXNCaXRzID0gZWxCaXRzLT5iaXRSZXNMZXZlbDsgCisgIFdvcmQxNiBtYXhCaXRyZXNCaXRzID0gZWxCaXRzLT5tYXhCaXRzOworICBXb3JkMTYgc2lkZUluZm9CaXRzID0gKHFjT0UtPnN0YXRpY0JpdHNVc2VkICsgcWNPRS0+YW5jQml0c1VzZWQpOworICBXb3JkMTYgY2g7CisgICAKKyAgcHJlcGFyZVNmYlBlKCZwZURhdGEsIHBzeU91dENoYW5uZWwsIGxvZ1NmYkVuZXJneSwgc2ZiTlJlbGV2YW50TGluZXMsIG5DaGFubmVscywgQWRqVGhyU3RhdGVFbGVtZW50LT5wZU9mZnNldCk7CisgICAKKyAgLyogcGUgd2l0aG91dCByZWR1Y3Rpb24gKi8KKyAgY2FsY1NmYlBlKCZwZURhdGEsIHBzeU91dENoYW5uZWwsIG5DaGFubmVscyk7CisgIG5vUmVkUGUgPSBwZURhdGEucGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKworICBjdXJXaW5kb3dTZXF1ZW5jZSA9IExPTkdfV0lORE9XOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgCisgIGlmIChuQ2hhbm5lbHMgPT0gMikgeworICAgICAgIAorICAgIGlmICgocHN5T3V0Q2hhbm5lbFswXS53aW5kb3dTZXF1ZW5jZSA9PSBTSE9SVF9XSU5ET1cpIHx8CisgICAgICAgIChwc3lPdXRDaGFubmVsWzFdLndpbmRvd1NlcXVlbmNlID09IFNIT1JUX1dJTkRPVykpIHsKKyAgICAgIGN1cldpbmRvd1NlcXVlbmNlID0gU0hPUlRfV0lORE9XOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICB9CisgIH0KKyAgZWxzZSB7CisgICAgY3VyV2luZG93U2VxdWVuY2UgPSBwc3lPdXRDaGFubmVsWzBdLndpbmRvd1NlcXVlbmNlOyAgICAgICAgICAgICAgICAgCisgIH0KKworCisgIC8qIGJpdCBmYWN0b3IgKi8KKyAgYml0RmFjdG9yID0gYml0cmVzQ2FsY0JpdEZhYyhiaXRyZXNCaXRzLCBtYXhCaXRyZXNCaXRzLCBub1JlZFBlKzUqc2lkZUluZm9CaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cldpbmRvd1NlcXVlbmNlLCBhdmdCaXRzLCBtYXhCaXRGYWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRqVGhyU3RhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWRqVGhyU3RhdGVFbGVtZW50KTsKKworICAvKiBkZXNpcmVkIHBlICovCisgIGdyYW50ZWRQZSA9ICgoYml0RmFjdG9yICogYml0czJwZShhdmdCaXRzKSkgLyAxMDApOworCisgIC8qIGNvcnJlY3Rpb24gb2YgcGUgdmFsdWUgKi8KKyAgY2FsY1BlQ29ycmVjdGlvbigmKEFkalRoclN0YXRlRWxlbWVudC0+cGVDb3JyZWN0aW9uRmFjdG9yKSwgCisgICAgICAgICAgICAgICAgICAgbWluKGdyYW50ZWRQZSwgbm9SZWRQZSksCisgICAgICAgICAgICAgICAgICAgQWRqVGhyU3RhdGVFbGVtZW50LT5wZUxhc3QsIAorICAgICAgICAgICAgICAgICAgIEFkalRoclN0YXRlRWxlbWVudC0+ZHluQml0c0xhc3QpOworICBncmFudGVkUGVDb3JyID0gKGdyYW50ZWRQZSAqIEFkalRoclN0YXRlRWxlbWVudC0+cGVDb3JyZWN0aW9uRmFjdG9yKSAvIDEwMDsKKworICAgICAKKyAgaWYgKGdyYW50ZWRQZUNvcnIgPCBub1JlZFBlICYmIG5vUmVkUGUgPiBwZURhdGEub2Zmc2V0KSB7CisgICAgLyogY2FsYyB0aHJlc2hvbGQgbmVjZXNzYXJ5IGZvciBkZXNpcmVkIHBlICovCisgICAgYWRhcHRUaHJlc2hvbGRzVG9QZShwc3lPdXRDaGFubmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgcHN5T3V0RWxlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ1NmYkVuZXJneSwKKyAgICAgICAgICAgICAgICAgICAgICAgICZwZURhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICBuQ2hhbm5lbHMsCisgICAgICAgICAgICAgICAgICAgICAgICBncmFudGVkUGVDb3JyLAorICAgICAgICAgICAgICAgICAgICAgICAgJkFkalRoclN0YXRlRWxlbWVudC0+YWhQYXJhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICZBZGpUaHJTdGF0ZUVsZW1lbnQtPm1pblNuckFkYXB0UGFyYW0pOworICB9CisKKyAgLyogY2FsY3VsYXRlIHJlbGF0aXZlIGRpc3RyaWJ1dGlvbiAqLworICBmb3IgKGNoPTA7IGNoPG5DaGFubmVsczsgY2grKykgeworICAgIFdvcmQxNiBwZU9mZnNEaWZmID0gcGVEYXRhLnBlIC0gcGVEYXRhLm9mZnNldDsKKyAgICBjaEJpdERpc3RyaWJ1dGlvbltjaF0gPSAyMDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAKKyAgICBpZiAocGVPZmZzRGlmZiA+IDApIHsKKyAgICAgIFdvcmQzMiB0ZW1wID0gMTAwMCAtIChuQ2hhbm5lbHMgKiAyMDApOworICAgICAgY2hCaXREaXN0cmlidXRpb25bY2hdID0gY2hCaXREaXN0cmlidXRpb25bY2hdICsNCisJCSAgKHRlbXAgKiBwZURhdGEucGVDaGFubmVsRGF0YVtjaF0ucGUpIC8gcGVPZmZzRGlmZjsKKyAgICB9CisgIH0KKworICAvKiBzdG9yZSBwZSAqLworICBxY09FLT5wZSA9IG5vUmVkUGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgLyogdXBkYXRlIGxhc3QgcGUgKi8KKyAgQWRqVGhyU3RhdGVFbGVtZW50LT5wZUxhc3QgPSBncmFudGVkUGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogQWRqVGhyVXBkYXRlCisqIGRlc2NyaXB0aW9uOiAgc2F2ZSBkeW5CaXRzVXNlZCBmb3IgY29ycmVjdGlvbiBvZiBiaXRzMnBlIHJlbGF0aW9uCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordm9pZCBBZGpUaHJVcGRhdGUoQVRTX0VMRU1FTlQgKkFkalRoclN0YXRlRWxlbWVudCwKKyAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiBkeW5CaXRzVXNlZCkKK3sKKyAgQWRqVGhyU3RhdGVFbGVtZW50LT5keW5CaXRzTGFzdCA9IGR5bkJpdHNVc2VkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorfQorCisKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL2FzbS9BUk1WNUUvQXV0b0NvcnJlbGF0aW9uX3Y1LnMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9hc20vQVJNVjVFL0F1dG9Db3JyZWxhdGlvbl92NS5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4ZWRkNGYKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9hc20vQVJNVjVFL0F1dG9Db3JyZWxhdGlvbl92NS5zCkBAIC0wLDAgKzEsMTY3IEBACitALyoNCitAICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorQCAqKg0KK0AgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorQCAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorQCAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCitAICoqDQorQCAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorQCAqKg0KK0AgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KK0AgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCitAICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KK0AgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KK0AgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorQCAqLw0KKw0KK0BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEANCitACUZpbGU6CQlBdXRvQ29ycmVsYXRpb25fdjUucw0KK0ANCitACUNvbnRlbnQ6CUF1dG9Db3JyZWxhdGlvbiBmdW5jdGlvbiBhcm12NSBhc3NlbWJsZQ0KK0ANCitAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQA0KKw0KKw0KKwkuc2VjdGlvbiAudGV4dAkNCisJLmdsb2JhbAlBdXRvQ29ycmVsYXRpb24NCisNCitBdXRvQ29ycmVsYXRpb246DQorCXN0bWRiICAgICBzcCEsIHtyNCAtIHIxMSwgbHJ9DQorDQorICBzdWIgICAgIHIxMywgcjEzLCAjMjAgICAgICAgICAgICAgICAgICAgICANCisNCisgIG1vdiAgICAgcjUsIHIwICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgbW92ICAgICByNywgcjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICBtb3YgICAgIHI5LCByMyAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgIG1vdiAgICAgcjIsIHIyLCBsc2wgIzE2ICAgICAgICAgICAgICAgICAgICAgIA0KKyAgbW92ICAgICByMCwgIzAgICAgICAgICAgDQorICBtb3YgICAgIHI0LCByMiwgYXNyICMxNiAgICAgICAgICAgICAgICAgICANCisgIG1vdiAgICAgcjgsICMwICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgY21wICAgICByNCwgIzAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICBibGUgICAgIEwxMzYgICAgICAgIA0KKwkNCisJY21wICAgICByNCwgIzggDQorCW1vdgkJICByMiwgIzAgDQorICBibHQgICAgIEwxMzMgICANCisNCisJc3ViICAgICByMTIsIHI0LCAjOCAgICAgICAgICAgICAgICANCitMMTMyOiAgDQorICBsZHIgICAgIHI2LCBbcjUsIHIyXSAgDQorCWFkZAkJICByMiwgcjIsICM0DQorCXNtdWxiYiAgcjMsIHI2LCByNg0KKwlsZHIgICAgIHIxLCBbcjUsIHIyXSANCisJc211bHR0CXIxMCwgcjYsIHI2DQorCW1vdgkJICByMywgcjMsIGFzciAjOQ0KKwlzbXVsYmIJcjYsIHIxLCByMQ0KKwltb3YJCSAgcjEwLCByMTAsIGFzciAjOQ0KKwlxYWRkCSAgcjAsIHIwLCByMw0KKwlzbXVsdHQJcjExLCByMSwgcjENCisJYWRkICAgICByMiwgcjIsICM0DQorCXFhZGQJICByMCwgcjAsIHIxMA0KKwltb3YJCSAgcjYsIHI2LCBhc3IgIzkNCisJbW92CQkgIHIxMSwgcjExLCBhc3IgIzkNCisJbGRyCQkgIHIxLCBbcjUsIHIyXQ0KKwlxYWRkCSAgcjAsIHIwLCByNg0KKwlzbXVsYmIJcjEwLCByMSwgcjENCisJc211bHR0CXI2LCByMSwgcjENCisJcWFkZAkgIHIwLCByMCwgcjExDQorCW1vdgkJICByMTAsIHIxMCwgYXNyICM5DQorCW1vdgkJICByNiwgcjYsIGFzciAjOQ0KKwlxYWRkCSAgcjAsIHIwLCByMTANCisJYWRkICAgICByMiwgcjIsICM0DQorCWFkZCAgICAgcjgsIHI4LCAjNg0KKw0KKwlxYWRkCSAgcjAsIHIwLCByNg0KKwljbXAgICAgIHI4LCByMTIgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICBibHQgICAgIEwxMzIJICAgICAgICAgICAgICAgICAgDQorTDEzMzogICAgICAgICAgICAgICAgICAgICAgICAgDQorICBsZHJzaCAgIHI2LCBbcjUsIHIyXSAgICAgICAgICAgICAgICAgICAgICANCisgIG11bCAgICAgcjEwLCByNiwgcjYgICANCisJYWRkICAgICByMiwgcjIsICMyICAgICAgICAgICAgICAgICAgICAgDQorICBtb3YgICAgIHIxLCByMTAsIGFzciAjOSAgICAgICAgICAgICAgICAgICAgDQorICBxYWRkICAgIHIwLCByMCwgcjENCitMMTM0OiAgICAgICAgICAgICAgICAgICAgICAgICANCisgIGFkZCAgICAgcjgsIHI4LCAjMSAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgY21wICAgICByOCwgcjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICBibHQgICAgIEwxMzMgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorTDEzNTogICAgICAgICAgICAgICAgICAgICAgICANCitMMTM2OiAgICAgICAgICAgICAgICAgICAgICAgICANCisgIHN0ciAgICAgcjAsIFtyNywgIzBdICAgICAgICAgICAgICAgICAgICAgIA0KKyAgY21wICAgICByMCwgIzAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICBiZXEgICAgIEwxMzIwICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorTDEzNzogICAgICAgICAgICAgICAgICAgICAgICAgDQorICBtb3YgICAgIHIyLCByOSwgbHNsICMxNiAgICAgICAgICAgICAgICAgICANCisJbW92ICAgICByOCwgIzEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgbW92ICAgICByMiwgcjIsIGFzciAjMTYgICAgICAgICAgICAgICAgICAgDQorICBjbXAgICAgIHIyLCAjMSAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgIGJsZSAgICAgTDEzMTkgICAgICAgICAgICAgICAgICAgICAgICAgICANCitMMTM4OiAgICAgICAgICAgICAgICAgICAgICAgIA0KK0wxMzk6ICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgc3ViICAgICByNCwgcjQsICMxICAgICAgICAgICAgICAgICAgICAgICAgDQorICBtb3YgICAgIHIxNCwgIzAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgIG1vdiAgICAgcjMsICMwICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgY21wICAgICByNCwgIzAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICBibGUgICAgIEwxMzE3ICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorTDEzMTA6ICAgICAgICAgICAgICAgICAgICAgICANCisgIGNtcCAgICAgcjQsICM2ICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgYWRkbHQgICByNiwgcjUsIHI4LCBsc2wgIzEgICAgICAgICAgICAgICAgDQorICBibHQgICAgIEwxMzE0ICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorTDEzMTE6ICAgICAgICAgICAgICAgICAgICAgICAgDQorICBhZGQgICAgIHI2LCByNSwgcjgsIGxzbCAjMSAgICAgICAgICAgICAgICANCisgIHN1YiAgICAgcjEyLCByNCwgIzYgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgc3RyICAgICByOCwgW3IxMywgIzhdICAgICAgICAgICAgICAgICAgICAgDQorICBzdHIgICAgIHI3LCBbcjEzLCAjNF0gICAgICAgICAgICAgICAgICAgICANCitMMTMxMjogICAgICAgICAgICAgICAgICAgICAgICANCisgIG1vdiAgICAgcjEsIHIzLCBsc2wgIzEgICAgICAgICAgICAgICAgICAgIA0KKyAgbGRyc2ggICByNywgW3I2LCByMV0gICAgICAgICAgICAgICAgICAgICAgDQorICBsZHJzaCAgIHIxMCwgW3I1LCByMV0gIA0KKyAgYWRkICAgICByOCwgcjEsIHI2IA0KKwlhZGQgICAgIHI5LCByNSwgcjEgICAgICAgICAgICAgICAgICAgICAgIA0KKwltdWwgICAgIHI3LCByMTAsIHI3DQorICBsZHJzaCAgIHIxLCBbcjgsICMyXSANCisJbGRyc2ggICByMTAsIFtyOCwgIzRdICAgDQorICBhZGQgICAgIHI3LCByMTQsIHI3LCBhc3IgIzkgIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgIGxkcnNoICAgcjAsIFtyOSwgIzJdICAgICAgICAgICAgICAgICAgICAgICAgICANCisgIGxkcnNoICAgcjExLCBbcjksICM0XSAgICAgICAgICAgICAgICAgICANCisgIG11bCAgICAgcjEsIHIwLCByMSAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgbGRyc2ggICByMTQsIFtyOCwgIzZdICAgICAgICAgICAgICAgICAgICAgDQorICBtdWwgICAgIHIxMCwgcjExLCByMTAgICAgICAgICAgDQorCWFkZCAgICAgcjcsIHI3LCByMSwgYXNyICM5ICAgICAgICAgICAgDQorICBsZHJzaCAgIHI4LCBbcjgsICM4XSANCisJYWRkICAgICByMywgcjMsICM1DQorCWxkcnNoICAgcjExLCBbcjksICM2XSAgICAgICAgICAgICAgICAgIA0KKyAgbGRyc2ggICByMSwgW3I5LCAjOF0gICAgICAgICAgICAgICAgICAgICAgDQorICBtdWwgICAgIHIxNCwgcjExLCByMTQgICAgICAgICAgICAgICAgICAgICANCisgIGFkZCAgICAgcjcsIHI3LCByMTAsIGFzciAjOSAgICAgICANCisgIG11bCAgICAgcjEsIHIxLCByOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICBhZGQgICAgIHIxNCwgcjcsIHIxNCwgYXNyICM5ICAgICAgICAgICAgICANCisJY21wICAgICByMywgcjEyIA0KKyAgYWRkICAgICByMTQsIHIxNCwgcjEsIGFzciAjOSAgICAgICAgICAgICAgDQorICBibGUgICAgIEwxMzEyICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorTDEzMTM6ICAgICAgICAgICAgICAgICAgICAgICAgDQorICBsZHIgICAgIHI4LCBbcjEzLCAjOF0gICAgICAgICAgICAgICAgICAgICANCisgIGxkciAgICAgcjcsIFtyMTMsICM0XSAgICAgICAgICAgICAgICAgICAgIA0KK0wxMzE0OiAgICAgICAgICAgICAgICAgICAgICAgIA0KK0wxMzE1OiAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgbW92ICAgICByMTIsIHIzLCBsc2wgIzEgICAgICAgICAgICAgICAgICAgDQorICBsZHJzaCAgIHI5LCBbcjYsIHIxMl0gICAgICAgICAgICAgICAgICAgICANCisgIGxkcnNoICAgcjEyLCBbcjUsIHIxMl0gICAgICAgICAgICAgICAgICAgIA0KKyAgYWRkICAgICByMywgcjMsICMxICAgICAgICAgICAgICAgICAgICAgICAgDQorICBjbXAgICAgIHIzLCByNCAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgIG11bCAgICAgcjEyLCByMTIsIHI5ICAgICAgICAgICAgICAgICAgICAgIA0KKyAgYWRkICAgICByMTQsIHIxNCwgcjEyLCBhc3IgIzkgICAgICAgICAgICAgDQorICBibHQgICAgIEwxMzE1ICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorTDEzMTY6ICAgICAgICAgICAgICAgICAgICAgICAgDQorTDEzMTc6ICAgICAgICAgICAgICAgICAgICAgICAgDQorICBzdHIgICAgIHIxNCwgW3I3LCArcjgsIGxzbCAjMl0gICAgICAgICAgICANCisgIGFkZCAgICAgcjgsIHI4LCAjMSAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgY21wICAgICByOCwgcjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICBibHQgICAgIEwxMzkgICANCisJICAgICAgICAgICAgICAgICAgICAgICAgIA0KK0wxMzE5Og0KK0wxMzIwOg0KKwlhZGQgICAgIHIxMywgcjEzLCAjMjAgICAgICAgICAgICAgICAgICAgIA0KKwlsZG1pYSAgIHNwISwge3I0IC0gcjExLCBwY30NCisNCisJQEVORFAgIEAgfEF1dG9Db3JyZWxhdGlvbnwNCisJLmVuZA0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL2FzbS9BUk1WNUUvQ2FsY1dpbmRvd0VuZXJneV92NS5zIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvYXNtL0FSTVY1RS9DYWxjV2luZG93RW5lcmd5X3Y1LnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzk5N2U5OAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL2FzbS9BUk1WNUUvQ2FsY1dpbmRvd0VuZXJneV92NS5zCkBAIC0wLDAgKzEsMTEyIEBACitALyoNCitAICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorQCAqKg0KK0AgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorQCAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorQCAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCitAICoqDQorQCAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorQCAqKg0KK0AgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KK0AgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCitAICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KK0AgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KK0AgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorQCAqLw0KKw0KK0BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEANCitACUZpbGU6CQlDYWxjV2luZG93RW5lcmd5X3Y1LnMNCitADQorQAlDb250ZW50OglDYWxjV2luZG93RW5lcmd5IGZ1bmN0aW9uIGFybXY1IGFzc2VtYmxlDQorQA0KK0BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBADQorDQorCS5zZWN0aW9uIC50ZXh0DQorCQ0KKwkuZ2xvYmFsCUNhbGNXaW5kb3dFbmVyZ3kNCisNCitDYWxjV2luZG93RW5lcmd5Og0KKwlzdG1kYiAgIHNwISwge3I0IC0gcjExLCBscn0NCisJc3ViICAgICByMTMsIHIxMywgIzIwIA0KKw0KKyAgbW92ICAgICByMywgcjMsIGxzbCAjMTYgICAgICAgICAgICAgICAgICAgICAgICAgDQorCWxkciAgICAgcjEwLCBbcjAsICMxNjhdICAgICAgICAgICAgICAgICAgICBAIHN0YXRlczAgPSBibG9ja1N3aXRjaGluZ0NvbnRyb2wtPmlpclN0YXRlc1swXTsNCisgIG1vdiAgICAgcjMsIHIzLCBhc3IgIzE2IA0KKwlsZHIgICAgIHIxMSwgW3IwLCAjMTcyXSAgICAgICAgICAgICAgICAgICAgQCBzdGF0ZXMxID0gYmxvY2tTd2l0Y2hpbmdDb250cm9sLT5paXJTdGF0ZXNbMV07DQorDQorCW1vdiAgICAgcjIsIHIyLCBsc2wgIzE2DQorCWxkciAgICAgcjEyLCBoaVBhc3NDb2VmZiAgICAgICAgICAgICAgICAgICBAIENvZWZmMCA9IGhpUGFzc0NvZWZmWzBdOyAgICAgIA0KKyAgbW92ICAgICByMiwgcjIsIGFzciAjMTYNCisJbGRyICAgICByMTQsIGhpUGFzc0NvZWZmICsgNAkJCSAgICAgICAgIEAgQ29lZmYxID0gaGlQYXNzQ29lZmZbMV07DQorCQ0KKwltb3YJCQlyOCwgIzAJCQkJCQkJICAgICAgICAgICAgICAgQCB3PTANCisJbW92CQkJcjUsICMwCQkJCQkJCSAgICAgICAgICAgICAgIEAgd09mZnNldCA9IDA7DQorCQ0KK0JMT0NLX0JFR0lOOg0KKwltb3YJCQlyNiwgIzAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAgYWNjdVVFID0gMDsgDQorCW1vdgkJCXI3LCAjMAkJCQkJCQkJICAgICAgICAgICAgIEAgYWNjdUZFID0gMDsgDQorCW1vdgkJCXI0LCAjMAkJCQkJCQkgICAgICAgICAgICAgICBAIGk9MA0KKwkJICAgICAgICAgICAgICAgICAgIA0KKwlzdHIJCQlyOCwgW3IxMywgIzRdCQ0KKwlzdHIJCQlyMCwgW3IxMywgIzhdCQ0KKwlzdHIJCQlyMywgW3IxMywgIzEyXQ0KKwkNCitFTkVSR1lfQkVHOgkNCisJbW92ICAgICByOSwgcjUsIGxzbCAjMSAgDQorCWxkcnNoICAgcjksIFtyMSwgcjldCQkJCQkJCQkJCQlAIHRlbXBVbmZpbHRlcmVkID0gdGltZVNpZ25hbFt0aWR4XTsNCisNCisJYWRkCQkJcjUsIHI1LCByMgkJCQkJCQkJCQkJCUAgdGlkeCA9IHRpZHggKyBjaEluY3JlbWVudDsNCisJDQorCXNtdWx3YglyMywgcjE0LCByOQkJCQkJCQkJCQkJCUAgYWNjdTEgPSBMX21weV9scyhDb2VmZjEsIHRlbXBVbmZpbHRlcmVkKTsJDQorCXNtdWxsCQlyMCwgcjgsIHIxMiwgcjExCQkJCQkJCQkJQCBhY2N1MiA9IGZpeG11bCggQ29lZmYwLCBzdGF0ZXMxICk7DQorCQ0KKwltb3YJCQlyMywgcjMsIGxzbCAjMQ0KKwltb3YJCQlyOCwgcjgsIGxzbCAjMQ0KKw0KKwlzdWIJCQlyMCwgcjMsIHIxMAkJCQkJCQkJCQkJCUAgYWNjdTMgPSBhY2N1MSAtIHN0YXRlczA7CQ0KKwlzdWIJCQlyOCwJcjAsIHI4CQkJCQkJCQkJCQkJQCBvdXQgPSBhY2N1MyAtIGFjY3UyOw0KKw0KKwltb3YJCSAgcjEwLCByMwkJCQkJCQkJCQkJCQkJQCBzdGF0ZXMwID0gYWNjdTE7DQorCW1vdgkJICByMTEsIHI4CQkJCQkJCQkJCQkJCQlAIHN0YXRlczEgPSBvdXQ7ICANCisJDQorCW11bAkJICByMywgcjksIHI5CQ0KKwltb3YgICAgIHI4LCByOCwgYXNyICMxNg0KKwkNCisJYWRkCQkgIHI0LCByNCwgIzENCisJYWRkICAgICByNiwgcjYsIHIzLCBhc3IgIzcNCisNCisJbXVsCQkgIHI5LCByOCwgcjgJDQorCWxkcgkJICByMywgW3IxMywgIzEyXQ0KKw0KKwlhZGQJCSAgcjcsIHI3LCByOSwgYXNyICM3DQorCQkNCisJY21wICAgICByNCwgcjMgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICBibHQgICAgIEVORVJHWV9CRUcgICAgICAgDQorCQ0KKwlsZHIJCSAgcjAsIFtyMTMsICM4XQ0KKwlsZHIJCSAgcjgsIFtyMTMsICM0XQ0KKwkNCitFTkVSR1lfRU5EOg0KKwlhZGQJCSAgcjQsIHIwLCByOCwgbHNsICMyDQorDQorCXN0ciAgICAgcjYsIFtyNCwgIzcyXSAgICAgICAgIA0KKwlhZGQJCSAgcjgsIHI4LCAjMQkgICAgICAgICAgIA0KKyAgc3RyICAgICByNywgW3I0LCAjMTM2XSAgICAgICAgICAgICAgICAgICANCisNCisJY21wCQkgIHI4LCAjOA0KKwlibHQJCSAgQkxPQ0tfQkVHSU4gICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgICAgICAgDQorDQorQkxPQ0tfRU5EOg0KKwlzdHIgICAgIHIxMCwgW3IwLCAjMTY4XSAgICAgICAgICAgICAgICAgICAgDQorICBzdHIgICAgIHIxMSwgW3IwLCAjMTcyXSAgICAgICAgICAgICAgICAgICAgDQorICBtb3YgICAgIHIwLCAjMSAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgDQorICBhZGQgICAgIHIxMywgcjEzLCAjMjAgICANCisJbGRtaWEgICBzcCEsIHtyNCAtIHIxMSwgcGN9ICAgICAgICAgICAgICAgICAgDQorDQoraGlQYXNzQ29lZmY6DQorCS53b3JkIDB4YmVjOGI0MzkNCisJLndvcmQJMHg2MDlkNDk1Mg0KKwkJDQorCUBFTkRQDQorCS5lbmQNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9hc20vQVJNVjVFL1ByZVBvc3RNRENUX3Y1LnMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9hc20vQVJNVjVFL1ByZVBvc3RNRENUX3Y1LnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDRkM2VkYgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL2FzbS9BUk1WNUUvUHJlUG9zdE1EQ1RfdjUucwpAQCAtMCwwICsxLDEzMSBAQAorQC8qDQorQCAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KK0AgKioNCitAICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KK0AgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KK0AgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorQCAqKg0KK0AgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KK0AgKioNCitAICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCitAICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorQCAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCitAICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCitAICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KK0AgKi8NCisNCitAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBADQorQAlGaWxlOgkJUHJlUG9zdE1EQ1RfdjUucw0KK0ANCitACUNvbnRlbnQ6CXByZW1kY3QgYW5kIHBvc3RtZGN0IGZ1bmN0aW9uIGFybXY1IGFzc2VtYmxlDQorQA0KK0BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBADQorDQorCS5zZWN0aW9uIC50ZXh0DQorCS5nbG9iYWwJUHJlTURDVA0KKw0KK1ByZU1EQ1Q6DQorCXN0bWRiICAgICAgIHNwISwge3I0IC0gcjExLCBscn0NCisJDQorCWFkZCAgICAgICAgIHI5LCByMCwgcjEsIGxzbCAjMg0KKwlzdWIgICAgICAgICByMywgcjksICM4DQorDQorCW1vdnMgICAgICAgIHIxLCByMSwgYXNyICMyDQorCWJlcSAgICAgICAgIFByZU1EQ1RfRU5EDQorCQ0KK1ByZU1EQ1RfTE9PUDoNCisJbGRyCQkJCQlyOCwgW3IyXSwgIzQNCisJbGRyCQkJCQlyOSwgW3IyXSwgIzQNCisJDQorCWxkcmQJCQkJcjQsIFtyMF0NCisJbGRyZAkJCQlyNiwgW3IzXQ0KKwkNCisJc211bGwJCQkJcjE0LCByMTEsIHI0LCByOAkJCQkJQCBNVUxISUdIKHRyMSwgY29zYSkNCisJc211bGwgICAgCQkJcjEwLCByMTIsIHI3LCByOAkJCQkJQCBNVUxISUdIKHRpMSwgY29zYSkNCisJCQ0KKwlzbXVsbAkJCQlyMTQsIHI4LCByNywgcjkJCQkJCQlAIE1VTEhJR0godGkxLCBzaW5hKQ0KKwlzbXVsbAkJCQlyNywgcjEwLCByNCwgcjkJCQkJCQlAIE1VTEhJR0godHIxLCBzaW5hKQkNCisJCQ0KKwlhZGQJCQkJCXIxMSwgcjExLCByOAkJCQkJCUAgTVVMSElHSChjb3NhLCB0cjEpICsgTVVMSElHSChzaW5hLCB0aTEpQAkNCisJc3ViCQkJCQlyNywgcjEyLCByMTAJCQkJCQlAIE1VTEhJR0godGkxLCBjb3NhKSAtIE1VTEhJR0godHIxLCBzaW5hKQ0KKwkNCisJbGRyCQkJCQlyOCwgW3IyXSwgIzQNCisJbGRyCQkJCQlyOSwgW3IyXSwgIzQNCisJDQorCXNtdWxsCQkJCXIxNCwgcjQsIHI2LCByOAkJCQkJCUAgTVVMSElHSCh0cjIsIGNvc2EpDQorCXNtdWxsICAgIAkJCXIxMCwgcjEyLCByNSwgcjgJCQkJCUAgTVVMSElHSCh0aTIsIGNvc2EpDQorCQkNCisJc211bGwJCQkJcjE0LCByOCwgcjUsIHI5CQkJCQkJQCBNVUxISUdIKHRpMiwgc2luYSkNCisJc211bGwJCQkJcjUsIHIxMCwgcjYsIHI5CQkJCQkJQCBNVUxISUdIKHRyMiwgc2luYSkNCisJDQorCWFkZAkJCQkJcjgsIHI4LCByNA0KKwlzdWIJCQkJCXI5LCByMTIsIHIxMA0KKwkNCisJbW92CQkJCQlyNiwgcjExCQkNCisNCisJc3RyZAkJCQlyNiwgW3IwXQkNCisJc3RyZAkJCQlyOCwgW3IzXQ0KKwkNCisJc3VicwkJCQlyMSwgcjEsICMxDQorCXN1YgkJCQkJcjMsIHIzLCAjOA0KKwlhZGQgCQkJCXIwLCByMCwgIzgNCisJYm5lCQkJCQlQcmVNRENUX0xPT1ANCisNCitQcmVNRENUX0VORDoNCisJbGRtaWEgICAgICAgc3AhLCB7cjQgLSByMTEsIHBjfQ0KKwlARU5EUCAgQCB8UHJlTURDVHwNCisJDQorCS5zZWN0aW9uIC50ZXh0DQorCS5nbG9iYWwJUG9zdE1EQ1QNCisNCitQb3N0TURDVDoNCisJc3RtZGIgICAgICAgc3AhLCB7cjQgLSByMTEsIGxyfQ0KKwkNCisJYWRkICAgICAgICAgcjksIHIwLCByMSwgbHNsICMyDQorCXN1YiAgICAgICAgIHIzLCByOSwgIzgNCisNCisJbW92cyAgICAgICAgcjEsIHIxLCBhc3IgIzINCisJYmVxICAgICAgICAgUG9zdE1EQ1RfRU5EDQorCQ0KK1Bvc3RNRENUX0xPT1A6DQorCWxkcgkJCQkJcjgsIFtyMl0sICM0CQkJCQkNCisJbGRyCQkJCQlyOSwgW3IyXSwgIzQNCisJDQorCWxkcmQJCQkJcjQsIFtyMF0NCisJbGRyZAkJCQlyNiwgW3IzXQ0KKwkNCisJc211bGwJCQkJcjE0LCByMTEsIHI0LCByOAkJCQkJQCBNVUxISUdIKHRyMSwgY29zYSkNCisJc211bGwgICAgCQkJcjEwLCByMTIsIHI1LCByOAkJCQkJQCBNVUxISUdIKHRpMSwgY29zYSkNCisJCQ0KKwlzbXVsbAkJCQlyMTQsIHI4LCByNSwgcjkJCQkJCQlAIE1VTEhJR0godGkxLCBzaW5hKQ0KKwlzbXVsbAkJCQlyNSwgcjEwLCByNCwgcjkJCQkJCQlAIE1VTEhJR0godHIxLCBzaW5hKQkNCisJCQ0KKwlhZGQJCQkJCXI0LCByMTEsIHI4CQkJCQkJCUAgTVVMSElHSChjb3NhLCB0cjEpICsgTVVMSElHSChzaW5hLCB0aTEpQAkNCisJc3ViCQkJCQlyMTEsIHIxMCwgcjEyCQkJCQkJQCBNVUxISUdIKHRpMSwgY29zYSkgLSBNVUxISUdIKHRyMSwgc2luYSlADQorCQ0KKwlsZHIJCQkJCXI4LCBbcjJdLCAjNAkJCQkJCUANCisJbGRyCQkJCQlyOSwgW3IyXSwgIzQNCisJDQorCXNtdWxsCQkJCXIxNCwgcjUsIHI2LCByOAkJCQkJCUAgTVVMSElHSCh0cjIsIGNvc2EpDQorCXNtdWxsICAgIAkJCXIxMCwgcjEyLCByNywgcjgJCQkJCUAgTVVMSElHSCh0aTIsIGNvc2EpDQorCQkNCisJc211bGwJCQkJcjE0LCByOCwgcjcsIHI5CQkJCQkJQCBNVUxISUdIKHRpMiwgc2luYSkNCisJc211bGwJCQkJcjcsIHIxMCwgcjYsIHI5CQkJCQkJQCBNVUxISUdIKHRyMiwgc2luYSkNCisJDQorCWFkZAkJCQkJcjYsIHI4LCByNQkJCQkJCQlAIE1VTEhJR0goY29zYiwgdHIyKSArIE1VTEhJR0goc2luYiwgdGkyKUANCisJc3ViCQkJCQlyNSwgcjEwLCByMTIJCQkJCQlAIE1VTEhJR0goc2luYiwgdHIyKSAtIE1VTEhJR0goY29zYiwgdGkyKUANCisJDQorCW1vdgkJCQkJcjcsIHIxMQkJCQkNCisNCisJc3RyZAkJCQlyNCwgW3IwXQ0KKwlzdHJkCQkJCXI2LCBbcjNdDQorCQ0KKwlzdWJzCQkJCXIxLCByMSwgIzENCisJc3ViCQkJCQlyMywgcjMsICM4DQorCWFkZCAJCQkJcjAsIHIwLCAjOA0KKwlibmUJCQkJCVBvc3RNRENUX0xPT1ANCisNCitQb3N0TURDVF9FTkQ6DQorCWxkbWlhICAgICAgIHNwISwge3I0IC0gcjExLCBwY30NCisJQEVORFAgIEAgfFBvc3RNRENUfA0KKwkuZW5kClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvYXNtL0FSTVY1RS9SNFI4Rmlyc3RfdjUucyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL2FzbS9BUk1WNUUvUjRSOEZpcnN0X3Y1LnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzcwZGFmNAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL2FzbS9BUk1WNUUvUjRSOEZpcnN0X3Y1LnMKQEAgLTAsMCArMSwyNTIgQEAKK0AvKg0KK0AgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCitAICoqDQorQCAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCitAICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCitAICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KK0AgKioNCitAICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCitAICoqDQorQCAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorQCAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KK0AgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorQCAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorQCAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCitAICovDQorDQorQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQA0KK0AJRmlsZToJCVI0UjhGaXJzdF92NS5zDQorQA0KK0AJQ29udGVudDoJUmFkaXg4Rmlyc3QgYW5kIFJhZGl4NEZpcnN0IGZ1bmN0aW9uIGFybXY1IGFzc2VtYmxlDQorQA0KK0BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBADQorDQorCS5zZWN0aW9uIC50ZXh0DQorCS5nbG9iYWwJUmFkaXg0Rmlyc3QNCisNCitSYWRpeDRGaXJzdDoNCisJc3RtZGIgICAgICAgc3AhLCB7cjQgLSByMTEsIGxyfQ0KKwkNCisJbW92cwkJCQlyMTAsIHIxDQorCW1vdgkJCQkJcjExLCByMA0KKwliZXEJCQkJCVJhZGl4NEZpcnN0X0VORA0KKwkJDQorUmFkaXg0Rmlyc3RfTE9PUDoNCisJbGRyZAkJCQlyMCwgW3IxMV0NCisJbGRyZAkJCQlyMiwgW3IxMSwgIzhdDQorCWxkcmQJCQkJcjQsIFtyMTEsICMxNl0NCisJbGRyZAkJCQlyNiwgW3IxMSwgIzI0XQ0KKwkNCisJYWRkCQkJCQlyOCwgcjAsIHIyDQorCWFkZAkJCQkJcjksIHIxLCByMw0KKwkNCisJc3ViCQkJCQlyMCwgcjAsIHIyDQorCXN1YgkJCQkJcjEsIHIxLCByMw0KKwkNCisJYWRkCQkJCQlyMiwgcjQsIHI2DQorCWFkZAkJCQkJcjMsIHI1LCByNw0KKwkNCisJc3ViCQkJCQlyNCwgcjQsIHI2DQorCXN1YgkJCQkJcjUsIHI1LCByNw0KKwkNCisJYWRkCQkJCQlyNiwgcjgsIHIyDQorCWFkZAkJCQkJcjcsIHI5LCByMw0KKwkNCisJc3ViCQkJCQlyOCwgcjgsIHIyDQorCXN1YgkJCQkJcjksIHI5LCByMw0KKwkNCisJYWRkCQkJCQlyMiwgcjAsIHI1DQorCXN1YgkJCQkJcjMsIHIxLCByNA0KKwkNCisJc3ViCQkJCQlyMCwgcjAsIHI1DQorCWFkZAkJCQkJcjEsIHIxLCByNA0KKwkNCisJc3RyZAkJCQlyNiwgW3IxMV0NCisJc3RyZAkJCQlyMiwgW3IxMSwgIzhdDQorCXN0cmQJCQkJcjgsIFtyMTEsICMxNl0NCisJc3RyZAkJCQlyMCwgW3IxMSwgIzI0XQ0KKwkNCisJc3VicwkJCQlyMTAsIHIxMCwgIzENCisJYWRkCQkJCQlyMTEsIHIxMSwgIzMyDQorCWJuZQkJCQkJUmFkaXg0Rmlyc3RfTE9PUA0KKw0KK1JhZGl4NEZpcnN0X0VORDoNCisJbGRtaWEgICAgICAgc3AhLCB7cjQgLSByMTEsIHBjfQ0KKwlARU5EUCAgQCB8UmFkaXg0Rmlyc3R8DQorCQ0KKwkuc2VjdGlvbiAudGV4dA0KKwkuZ2xvYmFsCVJhZGl4OEZpcnN0DQorDQorUmFkaXg4Rmlyc3Q6DQorCXN0bWRiICAgICAgIHNwISwge3I0IC0gcjExLCBscn0NCisJc3ViICAgICAgICAgc3AsIHNwLCAjMHgyNA0KKwkNCisJbW92CQkJCSAgcjEyLCByMQ0KKwltb3YJCQkJCXIxNCwgcjANCisJY21wCQkJCQlyMTIsICMwDQorCWJlcQkJCQkJUmFkaXg4Rmlyc3RfRU5EDQorCQ0KK1JhZGl4OEZpcnN0X0xPT1A6DQorCWxkcmQJCQkJcjAsIFtyMTRdCQkNCisJbGRyZAkJCQlyMiwgW3IxNCwgIzhdDQorCWxkcmQJCQkJcjQsIFtyMTQsICMxNl0NCisJbGRyZAkJCQlyNiwgW3IxNCwgIzI0XQ0KKwkNCisJYWRkCQkJCQlyOCwgcjAsIHIyCQkJCQlAIHIwID0gYnVmWzBdICsgYnVmWzJdQA0KKwlhZGQJCQkJCXI5LCByMSwgcjMJCQkJCUAgaTAgPSBidWZbMV0gKyBidWZbM11ADQorCQ0KKwlzdWIJCQkJCXIwLCByMCwgcjIJCQkJCUAgcjEgPSBidWZbMF0gLSBidWZbMl1ADQorCXN1YgkJCQkJcjEsIHIxLCByMwkJCQkJQCBpMSA9IGJ1ZlsxXSAtIGJ1ZlszXUANCisJDQorCWFkZAkJCQkJcjIsIHI0LCByNgkJCQkJQAlyMiA9IGJ1Zls0XSArIGJ1Zls2XUANCisJYWRkCQkJCQlyMywgcjUsIHI3CQkJCQlAIGkyID0gYnVmWzVdICsgYnVmWzddQA0KKwkNCisJc3ViCQkJCQlyNCwgcjQsIHI2CQkJCQlACXIzID0gYnVmWzRdIC0gYnVmWzZdQA0KKwlzdWIJCQkJCXI1LCByNSwgcjcJCQkJCUAgaTMgPSBidWZbNV0gLSBidWZbN11ADQorCQ0KKwlhZGQJCQkJCXI2LCByOCwgcjIJCQkJCUAgcjQgPSAocjAgKyByMikgPj4gMUANCisJYWRkCQkJCQlyNywgcjksIHIzCQkJCQlAIGk0ID0gKGkwICsgaTIpID4+IDFADQorCQ0KKwlzdWIJCQkJCXI4LCByOCwgcjIJCQkJCUAJcjUgPSAocjAgLSByMikgPj4gMUANCisJc3ViCQkJCQlyOSwgcjksIHIzCQkJCQlAIGk1ID0gKGkwIC0gaTIpID4+IDFADQorCQ0KKwlzdWIJCQkJCXIyLCByMCwgcjUJCQkJCUAgcjYgPSAocjEgLSBpMykgPj4gMUANCisJYWRkCQkJCQlyMywgcjEsIHI0CQkJCQlAIGk2ID0gKGkxICsgcjMpID4+IDFADQorCQ0KKwlhZGQJCQkJCXIwLCByMCwgcjUJCQkJCUAgcjcgPSAocjEgKyBpMykgPj4gMUANCisJc3ViCQkJCQlyMSwgcjEsIHI0CQkJCQlAIGk3ID0gKGkxIC0gcjMpID4+IDFADQorCQ0KKwltb3YJCQkJCXI2LCByNiwgYXNyICMxCQkJQA0KKwltb3YJCQkJCXI3LCByNywgYXNyICMxCQkJQA0KKwkNCisJbW92CQkJCQlyOCwgcjgsIGFzciAjMQ0KKwltb3YJCQkJCXI5LCByOSwgYXNyICMxDQorCQ0KKwltb3YJCQkJCXIyLCByMiwgYXNyICMxDQorCW1vdgkJCQkJcjMsIHIzLCBhc3IgIzENCisJDQorCW1vdgkJCQkJcjAsIHIwLCBhc3IgIzENCisJbW92CQkJCQlyMSwgcjEsIGFzciAjMQkNCisJDQorCXN0cgkJCQkJcjYsIFtzcF0NCisJc3RyCQkJCQlyNywgW3NwLCAjNF0NCisJDQorCXN0cgkJCQkJcjgsIFtzcCwgIzhdDQorCXN0cgkJCQkJcjksIFtzcCwgIzEyXQ0KKwkNCisJc3RyCQkJCQlyMiwgW3NwLCAjMTZdDQorCXN0cgkJCQkJcjMsIFtzcCwgIzIwXQkNCisJDQorCXN0cgkJCQkJcjAsIFtzcCwgIzI0XQ0KKwlzdHIJCQkJCXIxLCBbc3AsICMyOF0JDQorCQ0KKwlsZHJkCQkJCXIyLCBbcjE0LCAjMzJdCQkNCisJbGRyZAkJCQlyNCwgW3IxNCwgIzQwXQ0KKwlsZHJkCQkJCXI2LCBbcjE0LCAjNDhdDQorCWxkcmQJCQkJcjgsIFtyMTQsICM1Nl0NCisJDQorCWFkZAkJCQkJcjAsIHIyLCByNAkJCQkJQCByMCA9IGJ1ZlsgOF0gKyBidWZbMTBdQA0KKwlhZGQJCQkJCXIxLCByMywgcjUJCQkJCUAgaTAgPSBidWZbIDldICsgYnVmWzExXUANCisJDQorCXN1YgkJCQkJcjIsIHIyLCByNAkJCQkJQCByMSA9IGJ1ZlsgOF0gLSBidWZbMTBdQA0KKwlzdWIJCQkJCXIzLCByMywgcjUJCQkJCUAgaTEgPSBidWZbIDldIC0gYnVmWzExXUANCisJDQorCWFkZAkJCQkJcjQsIHI2LCByOAkJCQkJQCByMiA9IGJ1ZlsxMl0gKyBidWZbMTRdQA0KKwlhZGQJCQkJCXI1LCByNywgcjkJCQkJCUAgaTIgPSBidWZbMTNdICsgYnVmWzE1XUANCisJDQorCXN1YgkJCQkJcjYsIHI2LCByOAkJCQkJQCByMyA9IGJ1ZlsxMl0gLSBidWZbMTRdQA0KKwlzdWIJCQkJCXI3LCByNywgcjkJCQkJCUAJaTMgPSBidWZbMTNdIC0gYnVmWzE1XUANCisJDQorCWFkZAkJCQkJcjgsIHIwLCByNAkJCQkJQCB0MCA9IChyMCArIHIyKQ0KKwlhZGQJCQkJCXI5LCByMSwgcjUJCQkJCUAgdDEgPSAoaTAgKyBpMikNCisJDQorCXN1YgkJCQkJcjAsIHIwLCByNAkJCQkJQCB0MiA9IChyMCAtIHIyKQ0KKwlzdWIJCQkJCXIxLCByMSwgcjUJCQkJCUAgdDMgPSAoaTAgLSBpMikNCisJDQorCW1vdgkJCQkJcjgsIHI4LCBhc3IgIzENCisJbGRyCQkJCQlyNCwgW3NwXQ0KKwkNCisJbW92CQkJCQlyOSwgcjksIGFzciAjMQ0KKwlsZHIJCQkJCXI1LCBbc3AsICM0XQ0KKwkNCisJbW92CQkJCQlyMCwgcjAsIGFzciAjMQkJDQorCW1vdgkJCQkJcjEsIHIxLCBhc3IgIzENCisJDQorCWFkZAkJCQkJcjEwLCByNCwgcjgJCQkJCUAgYnVmWyAwXSA9IHI0ICsgdDBADQorCWFkZAkJCQkJcjExLCByNSwgcjkJCQkJCUAgYnVmWyAxXSA9IGk0ICsgdDFADQorCQ0KKwlzdWIJCQkJCXI0LCAgcjQsIHI4CQkJCQlAIGJ1ZlsgOF0gPSByNCAtIHQwQA0KKwlzdWIJCQkJCXI1LCAgcjUsIHI5CQkJCQlACWJ1ZlsgOV0gPSBpNCAtIHQxQA0KKwkNCisgCXN0cmQJCQkJcjEwLCBbcjE0XQ0KKyAJc3RyZAkJCQlyNCwgIFtyMTQsICMzMl0NCisgCQ0KKyAJbGRyCQkJCQlyMTAsIFtzcCwgIzhdDQorIAlsZHIJCQkJCXIxMSwgW3NwLCAjMTJdDQorIAkNCisgCWFkZAkJCQkJcjQsIHIxMCwgcjEJCQkJCUAgYnVmWyA0XSA9IHI1ICsgdDNADQorIAlzdWIJCQkJCXI1LCByMTEsIHIwCQkJCQlACWJ1ZlsgNV0gPSBpNSAtIHQyQA0KKyAJDQorIAlzdWIJCQkJCXIxMCwgcjEwLCByMQkJCQlAIGJ1ZlsxMl0gPSByNSAtIHQzQA0KKyAJYWRkCQkJCQlyMTEsIHIxMSwgcjAJCQkJQCBidWZbMTNdID0gaTUgKyB0MkANCisgCQ0KKyAJc3RyZAkJCQlyNCwgIFtyMTQsICMxNl0NCisgCXN0cmQJCQkJcjEwLCBbcjE0LCAjNDhdDQorIAkNCisgCXN1YgkJCQkJcjAsIHIyLCByNwkJCQkJQCByMCA9IHIxIC0gaTNADQorIAlhZGQJCQkJCXIxLCByMywgcjYJCQkJCUAgaTAgPSBpMSArIHIzQA0KKyANCisgIGxkcgkJCQkJcjExLCBEQVRBVGFiDQorIAkNCisgCWFkZAkJCQkJcjIsIHIyLCByNwkJCQkJQCByMiA9IHIxICsgaTNADQorIAlzdWIJCQkJCXIzLCByMywgcjYJCQkJCUAgaTIgPSBpMSAtIHIzQA0KKyAJDQorCXN1YgkJCQkJcjQsIHIwLCByMQkJCQkJQCByMCAtIGkwDQorCWFkZAkJCQkJcjUsIHIwLCByMQkJCQkJQCByMCArIGkwDQorCQ0KKwlzdWIJCQkJCXIwLCByMiwgcjMJCQkJCUAgcjIgLSBpMg0KKwlhZGQJCQkJCXIxLCByMiwgcjMJCQkJCUAgcjIgKyBpMg0KKwkNCisJc211bGwJCQkJcjgsIHI2LCByNCwgcjExCQkJCQkJCQkNCisJc211bGwJCQkJcjksIHI3LCByNSwgcjExCQkJCQkJCQkNCisJDQorCWxkcgkJCQkJcjIsIFtzcCwgIzE2XQ0KKwlsZHIJCQkJCXIzLCBbc3AsICMyMF0NCisJDQorCXNtdWxsCQkJCXI4LCByNCwgcjAsIHIxMQkJCQkJCQkJDQorCXNtdWxsCQkJCXI5LCByNSwgcjEsIHIxMQkJCQkJCQkJDQorCQ0KKwlsZHIJCQkJCXIxMCwgW3NwLCAjMjRdDQorCWxkcgkJCQkJcjExLCBbc3AsICMyOF0NCisJDQorCXN1YgkJCQkJcjgsIHIyLCByNg0KKwlzdWIJCQkJCXI5LCByMywgcjcNCisJDQorCWFkZAkJCQkJcjIsIHIyLCByNg0KKwlhZGQJCQkJCXIzLCByMywgcjcNCisJDQorCWFkZAkJCQkJcjYsIHIxMCwgcjUNCisJc3ViCQkJCQlyNywgcjExLCByNA0KKwkNCisJc3ViCQkJCQlyMCwgcjEwLCByNQ0KKwlhZGQJCQkJCXIxLCByMTEsIHI0DQorCQ0KKwlzdHJkCQkJCXI2LCBbcjE0LCAjOF0NCisJc3RyZAkJCQlyOCwgW3IxNCwgIzI0XQ0KKwlzdHJkCQkJCXIwLCBbcjE0LCAjNDBdDQorCXN0cmQJCQkJcjIsIFtyMTQsICM1Nl0NCisJDQorCXN1YnMJCQkJcjEyLCByMTIsICMxDQorCWFkZAkJCQkJcjE0LCByMTQsICM2NA0KKwkNCisJYm5lCQkJCQlSYWRpeDhGaXJzdF9MT09QDQorCQ0KK1JhZGl4OEZpcnN0X0VORDoNCisJYWRkICAgICAgICAgc3AsIHNwLCAjMHgyNA0KKwlsZG1pYSAgICAgICBzcCEsIHtyNCAtIHIxMSwgcGN9DQorCQ0KK0RBVEFUYWI6DQorCS53b3JkICAgICAgIDB4NWE4Mjc5OWENCisJDQorCUBFTkRQICBAIHxSYWRpeDhGaXJzdHwNCisJLmVuZApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL2FzbS9BUk1WNUUvUmFkaXg0RkZUX3Y1LnMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9hc20vQVJNVjVFL1JhZGl4NEZGVF92NS5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiOGU1ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9hc20vQVJNVjVFL1JhZGl4NEZGVF92NS5zCkBAIC0wLDAgKzEsMTY5IEBACitALyoNCitAICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorQCAqKg0KK0AgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorQCAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorQCAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCitAICoqDQorQCAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorQCAqKg0KK0AgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KK0AgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCitAICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KK0AgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KK0AgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorQCAqLw0KKw0KK0BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEANCitACUZpbGU6CQlSYWRpeDRGRlRfdjUucw0KK0ANCitACUNvbnRlbnQ6CVJhZGl4NEZGVCBhcm12NSBhc3NlbWJsZQ0KK0ANCitAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQA0KKwkuc2VjdGlvbiAudGV4dA0KKwkuZ2xvYmFsCVJhZGl4NEZGVA0KKw0KK1JhZGl4NEZGVDoNCisJc3RtZGIgICAgIHNwISwge3I0IC0gcjExLCBscn0NCisJc3ViICAgICAgIHNwLCBzcCwgIzMyICAgICAgICAgICAgICAgICAgICAgDQorDQorCW1vdgkJCXIxLCByMSwgYXNyICMyDQorCWNtcCAgICAgcjEsICMwICAgICAgIA0KKwliZXEgICAgIFJhZGl4NEZGVF9FTkQgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgICAgICAgICAgICANCitSYWRpeDRGRlRfTE9PUDE6ICAgICAgICAgIA0KKwltb3YgICAgIHIxNCwgcjAgICAgICAgICAgCQkJCQkJCUAgeHB0ciA9IGJ1ZkAgICAgICAgICAgDQorCW1vdgkJcjEwLCByMSAJCQkJCQkJCQkJCQlAIGkgPSBudW1ADQorCW1vdiAgICAgcjksIHIyLCBsc2wgIzMgIAkJCQkJCQlAIHN0ZXAgPSAyKmJnbkANCisJY21wICAgICByMTAsICMwICANCisJc3RyCQlyMCwgW3NwXSANCisJc3RyCQlyMSwgW3NwLCAjNF0gICAgICANCisJc3RyCQlyMiwgW3NwLCAjOF0NCisJc3RyCQlyMywgW3NwLCAjMTJdICANCisJYmVxICAgICBSYWRpeDRGRlRfTE9PUDFfRU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkgICAgDQorICAgICANCitSYWRpeDRGRlRfTE9PUDI6ICAgICAgICAgICAgICAgICAgICAgICANCisJbW92ICAgICByMTIsIHIzCQkJCSAgICAgICAgCQkJCUAgY3NwdHIgPSB0d2lkVGFiQA0KKwltb3YJCXIxMSwgcjIJCQkJCQkJCQkJCQlAIGogPSBiZ24NCisJY21wICAgICByMTEsICMwICAgICAgICANCisJc3RyCQlyMTAsIFtzcCwgIzE2XQ0KKwliZXEgICAgIFJhZGl4NEZGVF9MT09QMl9FTkQgICAgICAgICAgICAgICAgICAgICAgICAgDQorCSANCitSYWRpeDRGRlRfTE9PUDM6ICAgICAgICAgICAgICAgICAgICAgICAgICANCisJc3RyCQkJcjExLCBbc3AsICMyMF0JIA0KKwkNCisJbGRyZAkJcjAsIFtyMTQsICMwXQkJCQkJCQkJCUAgcjAgPSB4cHRyWzBdQCByMSA9IHhwdHJbMV1ADQorCWFkZAkJCXIxNCwgcjE0LCByOSAJIAkJCQkJCQkJQCB4cHRyICs9IHN0ZXBADQorCQ0KKwlsZHJkCQlyMTAsCVtyMTQsICMwXSAgCQkJCQkgCQkJQCByMiA9IHhwdHJbMF1AIHIzID0geHB0clsxXUAJDQorCWxkcgkJCXI4LCBbcjEyXSwgIzQJCQkJCQkJCQlAIGNvc3hzaW54ID0gY3NwdHJbMF1ADQorCQ0KKwlzbXVsd3QJcjQsIHIxMCwgcjgJCQkJCQkJCQkJQCBMX21weV93eChjb3N4LCB0MCkNCisJc211bHd0CXIzLCByMTEsIHI4CQkJCQkJCQkJCUAgTF9tcHlfd3goY29zeCwgdDEpDQorCQ0KKwlzbWxhd2IJcjIsIHIxMSwgcjgsIHI0CQkJCQkJCQlAIHIyID0gTF9tcHlfd3goY29zeCwgdDApICsgTF9tcHlfd3goc2lueCwgdDEpQA0KKwlzbXVsd2IJcjUsIHIxMCwgcjgJCQkJCQkJCQkJQCBMX21weV93eChzaW54LCB0MCkNCisJDQorCW1vdgkJCXIxMCwgcjAsIGFzciAjMgkJCQkJCQkJQCB0MCA9IHIwID4+IDJADQorCW1vdgkJCXIxMSwgcjEsIGFzciAjMgkJCQkJCQkJQAl0MSA9IHIxID4+IDJADQorCQkNCisJc3ViCQkJcjMsIHIzLCByNQkJCQkJCQkJCQlAIHIzID0gTF9tcHlfd3goY29zeCwgdDEpIC0gTF9tcHlfd3goc2lueCwgdDApQA0KKwlhZGQgICAgIHIxNCwgcjE0LCByOSAJIAkJCQkJCQkJQCB4cHRyICs9IHN0ZXBADQorCQ0KKwlzdWIJCQlyMCwgcjEwLCByMgkJCQkJCQkJCQlAIHIwID0gdDAgLSByMkANCisJc3ViCQkJcjEsIHIxMSwgcjMJCQkJCQkJCQkgIEAgcjEgPSB0MSAtIHIzQA0KKwkNCisJYWRkCQkJcjIsIHIxMCwgcjIJCQkJCQkJCQkJQCByMiA9IHQwICsgcjJADQorCWFkZAkJCXIzLCByMTEsIHIzCQkJCQkJCQkJCUAgcjMgPSB0MSArIHIzQA0KKwkNCisJc3RyCQkJcjIsIFtzcCwgIzI0XQ0KKwlzdHIJCQlyMywgW3NwLCAjMjhdDQorCQ0KKwlsZHJkCQlyMTAsIFtyMTQsICMwXQkJCQkJCQkJQCByNCA9IHhwdHJbMF1AIHI1ID0geHB0clsxXUANCisJbGRyCQkJcjgsIFtyMTJdLCAjNAkJCQkJCQkJCUAgY29zeHNpbnggPSBjc3B0clsxXUANCisJDQorCXNtdWx3dAlyNiwgcjEwLCByOAkJCQkJCQkJCQlAIExfbXB5X3d4KGNvc3gsIHQwKQ0KKwlzbXVsd3QJcjUsIHIxMSwgcjgJCQkJCQkJCQkJQCBMX21weV93eChjb3N4LCB0MSkNCisJDQorCXNtbGF3YglyNCwgcjExLCByOCwgcjYJCQkJCQkJCUAgcjQgPSBMX21weV93eChjb3N4LCB0MCkgKyBMX21weV93eChzaW54LCB0MSlADQorCXNtdWx3YglyNywgcjEwLCByOAkJCQkJCQkJCQlAIExfbXB5X3d4KHNpbngsIHQwKQ0KKwkNCisJYWRkCQkJcjE0LCByMTQsIHI5CQkJCQkJCQkJQCB4cHRyICs9IHN0ZXBADQorCXN1YgkJCXI1LCByNSwgcjcJCQkJCQkJCQkJQCByNSA9IExfbXB5X3d4KGNvc3gsIHQxKSAtIExfbXB5X3d4KHNpbngsIHQwKUANCisJCQ0KKwlsZHJkCQlyMTAsIFtyMTRdCQkJCQkJCQkJCUAgcjYgPSB4cHRyWzBdQCByNyA9IHhwdHJbMV1ADQorCWxkcgkJCXI4LCBbcjEyXSwgIzQJCQkJCQkJCQlAIGNvc3hzaW54ID0gY3NwdHJbMV1ADQorCQ0KKwlzbXVsd3QJcjIsIHIxMCwgcjgJCQkJCQkJCQkJQCBMX21weV93eChjb3N4LCB0MCkNCisJc211bHd0CXI3LCByMTEsIHI4CQkJCQkJCQkJCUAgTF9tcHlfd3goY29zeCwgdDEpDQorCQ0KKwlzbWxhd2IJcjYsIHIxMSwgcjgsIHIyCQkJCQkJCQlAIHI0ID0gTF9tcHlfd3goY29zeCwgdDApICsgTF9tcHlfd3goc2lueCwgdDEpQA0KKwlzbXVsd2IJcjMsIHIxMCwgcjgJCQkJCQkJCQkJQCBMX21weV93eChzaW54LCB0MCkNCisJDQorCW1vdgkJCXIxMCwgcjQJCQkJCQkJCQkJCQlAIHQwID0gcjRADQorCW1vdgkJCXIxMSwgcjUJCQkJCQkJCQkJCQlAIHQxID0gcjVACQ0KKwkNCisJc3ViCQkJcjcsIHI3LCByMwkJCQkJCQkJCQlAIHI1ID0gTF9tcHlfd3goY29zeCwgdDEpIC0gTF9tcHlfd3goc2lueCwgdDApQA0KKwkNCisNCisJYWRkCQkJcjQsICByMTAsIHI2CQkJCQkJCQkJQAlyNCA9IHQwICsgcjZACQ0KKwlzdWIJCQlyNSwgcjcsIHIxMQkJCQkJCQkJCQlAIHI1ID0gcjcgLSB0MUANCisJDQorCXN1YgkJCXI2LCByMTAsIHI2CQkJCQkJCQkJCUAgcjYgPSB0MCAtIHI2QA0KKwlhZGQJCQlyNywgcjcsIHIxMQkJCQkJCQkJCQlAIHI3ID0gcjcgKyB0MUANCisJDQorCWxkcgkJCXIyLCBbc3AsICMyNF0NCisJbGRyCQkJcjMsIFtzcCwgIzI4XQ0KKwkNCisJYWRkCQkJcjEwLCByMCwgcjUJCQkJCQkJCQkJQCB4cHRyWzBdID0gcjAgKyByNUANCisJYWRkCQkJcjExLCByMSwgcjYJCQkJCQkJCQkJQCB4cHRyWzBdID0gcjEgKyByNg0KKwkNCisJc3RyZAkJcjEwLCBbcjE0XQkJCQkJCQkJCQkNCisJc3ViCQkJcjE0LCByMTQsIHI5CQkJCQkJCQkJQCB4cHRyIC09IHN0ZXBADQorCQ0KKwlzdWIJCQlyMTAsIHIyLCByNAkJCQkJCQkJCQlACXhwdHJbMF0gPSByMiAtIHI0QA0KKwlzdWIJCQlyMTEsIHIzLCByNwkJCQkJCQkJCQlAIHhwdHJbMV0gPSByMyAtIHI3QA0KKwkNCisJc3RyZAkJcjEwLCBbcjE0XQkJCQkNCisJc3ViCQkJcjE0LCByMTQsIHI5CQkJCQkJCQkJQCB4cHRyIC09IHN0ZXBADQorCQ0KKwlzdWIJCQlyMTAsIHIwLCByNQkJCQkJCQkJCQlAIHhwdHJbMF0gPSByMCAtIHI1QA0KKwlzdWIJCQlyMTEsIHIxLCByNgkJCQkJCQkJCQlAIHhwdHJbMF0gPSByMSAtIHI2DQorCQ0KKwlzdHJkCQlyMTAsIFtyMTRdCQkJCQkJCQkJCQ0KKwlzdWIJCQlyMTQsIHIxNCwgcjkJCQkJCQkJCQlAIHhwdHIgLT0gc3RlcEANCisJDQorCWFkZAkJCXIxMCwgcjIsIHI0CQkJCQkJCQkJCUAJeHB0clswXSA9IHIyIC0gcjRADQorCWFkZAkJCXIxMSwgcjMsIHI3CQkJCQkJCQkJCUAgeHB0clsxXSA9IHIzIC0gcjdADQorCQ0KKwlzdHJkCQlyMTAsIFtyMTRdCQkJCQ0KKwlhZGQJCQlyMTQsIHIxNCwgIzgJCQkJCQkJCQlAIHhwdHIgKz0gMkANCisJDQorCWxkcgkJCXIxMSwgW3NwLCAjMjBdDQorCXN1YnMJCXIxMSwgcjExLCAjMQ0KKwlibmUJCQlSYWRpeDRGRlRfTE9PUDMJDQorCSANCitSYWRpeDRGRlRfTE9PUDJfRU5EOiAgICAgICAgICAgDQorCWxkcgkJCXIxMCwgW3NwLCAjMTZdDQorCWxkcgkJCXIzLCBbc3AsICMxMl0NCisJbGRyCQkJcjIsIFtzcCwgIzhdDQorCXJzYgkJCXI4LCByOSwgcjksIGxzbCAjMiAgIA0KKwlzdWIJCQlyMTAsIHIxMCwgIzENCisJYWRkCQkJcjE0LCByMTQsIHI4CQkgICAgICANCisJY21wCQkJcjEwLCAjMCAgDQorCWJoaSAgICAgUmFkaXg0RkZUX0xPT1AyICAgICAgICAgICANCisgICAgICAgICAgICAgICAgICAgICAgICANCitSYWRpeDRGRlRfTE9PUDFfRU5EOiAgICAgICAgICAgICAgIA0KKwlsZHIgICAgIHIwLCBbc3BdICAgIA0KKwlsZHIJCXIxLCBbc3AsICM0XQ0KKwlhZGQgICAgIHIzLCByMywgcjgsIGFzciAjMQ0KKwltb3YgICAgIHIyLCByMiwgbHNsICMyIA0KKwltb3ZzICAgIHIxLCByMSwgYXNyICMyIA0KKwlibmUgICAgIFJhZGl4NEZGVF9MT09QMSAgICAgICAgICANCisgICAgICAgICAgICAgICAgICAgICAgICANCitSYWRpeDRGRlRfRU5EOiAgICAgICAgICAgICAgICAgICAgICAgIA0KKwlhZGQgICAgIHNwLCBzcCwgIzMyICAgICAgICAgICAgICAgICAgDQorCWxkbWlhICAgc3AhLCB7cjQgLSByMTEsIHBjfQ0KKwkJDQorCUBFTkRQICBAIHxSYWRpeDRGRlR8DQorCS5lbmQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9hc20vQVJNVjVFL2JhbmRfbnJnX3Y1LnMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9hc20vQVJNVjVFL2JhbmRfbnJnX3Y1LnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQ2M2RmZAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL2FzbS9BUk1WNUUvYmFuZF9ucmdfdjUucwpAQCAtMCwwICsxLDIwNCBAQAorQC8qDQorQCAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KK0AgKioNCitAICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KK0AgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KK0AgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorQCAqKg0KK0AgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KK0AgKioNCitAICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCitAICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorQCAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCitAICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCitAICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KK0AgKi8NCisNCitAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBADQorQAlGaWxlOgkJYmFuZF9ucmdfdjUucw0KK0ANCitACUNvbnRlbnQ6CUNhbGNCYW5kRW5lcmd5IGFuZCBDYWxjQmFuZEVuZXJneU1TIGZ1bmN0aW9uIGFybXY1IGFzc2VtYmxlDQorQA0KK0BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBADQorDQorCS5zZWN0aW9uIC50ZXh0DQorDQorCS5nbG9iYWwJQ2FsY0JhbmRFbmVyZ3kNCisNCitDYWxjQmFuZEVuZXJneToNCisJc3RtZGIgICBzcCEsIHtyNCAtIHIxMSwgbHJ9CQ0KKyAgICAgICAgICAgICAgICAgICANCisgIG1vdiAgICAgcjIsIHIyLCBsc2wgIzE2ICAgICAgICAgICAgICAgICAgIA0KKwlsZHIgICAgIHIxMiwgW3IxMywgIzM2XQ0KKwltb3YJCQlyOSwgIzANCisgIG1vdiAgICAgcjUsIHIyLCBhc3IgIzE2ICAgIA0KKwltb3YJCQlyNCwgIzAgICAgICAgICAgICAgICANCisgIGNtcCAgICAgcjUsICMwCQ0KKwlibGUgICAgIEwyMTIgDQorDQorTDIyOg0KKyAgbW92ICAgICByMiwgcjQsIGxzbCAjMSAgICAgICAgICAgICAgICAgICAgDQorICBsZHJzaCAgIHIxMCwgW3IxLCByMl0gICAgICAgICAgICAgICAgICAgICANCisgIGFkZCAgICAgcjExLCByMSwgcjIgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgbGRyc2ggICByMiwgW3IxMSwgIzJdICAgIA0KKwltb3YgICAgIHIxNCwgIzAgICAgICAgICAgICAgICAgIA0KKyAgY21wICAgICByMTAsIHIyICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICBiZ2UgICAgIEwyOCANCisJDQorTDIzOg0KKwlsZHIgICAgIHIxMSwgW3IwLCArcjEwLCBsc2wgIzJdCQ0KKyAgYWRkICAgICByMTAsIHIxMCwgIzEgICAgDQorCWxkciAgICAgcjYsIFtyMCwgK3IxMCwgbHNsICMyXQkNCisJc211bGwgICByMTEsIHI3LCByMTEsIHIxMQ0KKwlhZGQgICAgIHIxMCwgcjEwLCAjMSANCisJc211bGwJICByNiwgcjgsIHI2LCByNg0KKwlsZHIgICAgIHIxMSwgW3IwLCArcjEwLCBsc2wgIzJdDQorCXFhZGQJICByMTQsIHIxNCwgcjcNCisJYWRkICAgICByMTAsIHIxMCwgIzENCisJc211bGwJICByMTEsIHI3LCByMTEsIHIxMQ0KKwlsZHIgICAgIHI2LCBbcjAsICtyMTAsIGxzbCAjMl0NCisJcWFkZAkgIHIxNCwgcjE0LCByOA0KKwlzbXVsbAkgIHI2LCByOCwgcjYsIHI2DQorICBhZGQgICAgIHIxMCwgcjEwLCAjMSANCisJcWFkZAkgIHIxNCwgcjE0LCByNw0KKwljbXAgICAgIHIxMCwgcjINCisJcWFkZAkgIHIxNCwgcjE0LCByOA0KKwlibHQgICAgIEwyMyAgIA0KKw0KK0wyODoJDQorCXFhZGQJICByMTQsIHIxNCwgcjE0DQorCXN0ciAgICAgcjE0LCBbcjMsICtyNCwgbHNsICMyXQ0KKwlhZGQgICAgIHI0LCByNCwgIzEgDQorCXFhZGQJICByOSwgcjksIHIxNA0KKwljbXAgICAgIHI0LCByNSAgICAgICAgICAgICAgICAgICAgICAgICAgDQorDQorICBibHQgICAgIEwyMiAgICAgICAJDQorDQorTDIxMjoJDQorCXN0ciAgICAgcjksIFtyMTIsICMwXSAgICAgICAgICAgICAgICAgICAgIA0KKwlsZG1pYSAgIHNwISwge3I0IC0gcjExLCBwY30NCisJDQorCUBFTkRQICA7IHxDYWxjQmFuZEVuZXJneXwNCisJDQorCS5nbG9iYWwJQ2FsY0JhbmRFbmVyZ3lNUw0KKw0KK0NhbGNCYW5kRW5lcmd5TVM6DQorCXN0bWRiICAgc3AhLCB7cjQgLSByMTEsIGxyfQ0KKwlzdWIgICAgIHIxMywgcjEzLCAjMjQNCisJDQorCW1vdiAgICAgcjEyLCAjMCANCisgIG1vdiAgICAgcjMsIHIzLCBsc2wgIzE2ICANCisgIG1vdiAgICAgcjE0LCAjMCANCisJbW92ICAgICByMywgcjMsIGFzciAjMTYgICAgICANCisJY21wICAgICByMywgIzAgICAgICAgICAgDQorCW1vdgkJICByNCwgIzAgICAgICAgICAgICAgICAgICANCisgIGJsZSAgICAgTDMxNSAgICANCisJDQorTDMyOgkNCisJbW92CQkgIHI1LCByNCwgbHNsICMxDQorCW1vdgkJICByNiwgIzANCisJbGRyc2ggICByMTAsIFtyMiwgcjVdDQorCWFkZCAgICAgcjUsIHIyLCByNQ0KKwltb3YJCSAgcjcsICMwDQorCWxkcnNoCSAgcjExLCBbcjUsICMyXSAgICAgICAgICAgICAgICAgICAgICAgIA0KKwljbXAgICAgIHIxMCwgcjExICAgICAgICAgICAgICAgICAgICAgICAgICANCisgIGJnZSAgICAgTDM5ICAgIA0KKw0KKwlzdHIJCSAgcjMsIFtyMTMsICM0XQ0KKwlzdHIJCSAgcjQsIFtyMTMsICM4XQ0KKwlzdHIJCSAgcjEyLCBbcjEzLCAjMTJdDQorCXN0cgkJICByMTQsIFtyMTMsICMxNl0NCisNCitMMzM6CQ0KKwlsZHIgICAgIHI4LCBbcjAsICtyMTAsIGxzbCAjMl0gICAgICAgICAgICAgICAgICAgIA0KKwlsZHIgICAgIHI5LCBbcjEsICtyMTAsIGxzbCAjMl0NCisJbW92CQkgIHI4LCByOCwgYXNyICMxDQorCWFkZAkJICByMTAsIHIxMCwgIzENCisJbW92CQkgIHI5LCByOSwgYXNyICMxDQorDQorCWxkciAgICAgcjEyLCBbcjAsICtyMTAsIGxzbCAjMl0gICAgICAgICAgDQorCWFkZAkJICByNSwgcjgsIHI5CSAgICAgICAgICANCisJbGRyICAgICByMTQsIFtyMSwgK3IxMCwgbHNsICMyXQ0KKwlzdWIJCSAgcjgsIHI4LCByOQ0KKw0KKwlzbXVsbCAgIHI1LCByMywgcjUsIHI1IA0KKwltb3YJCSAgcjEyLCByMTIsIGFzciAjMQ0KKwlzbXVsbCAgIHI4LCByNCwgcjgsIHI4IA0KKwltb3YJCSAgcjE0LCByMTQsIGFzciAjMQ0KKw0KKwlxYWRkCSAgcjYsIHI2LCByMw0KKwlhZGQJCSAgcjUsIHIxMiwgcjE0DQorCXFhZGQJICByNywgcjcsIHI0DQorCXN1YgkJICByOCwgcjEyLCByMTQNCisNCisJc211bGwgICByNSwgcjMsIHI1LCByNSANCisJYWRkCQkgIHIxMCwgcjEwLCAjMQ0KKwlzbXVsbCAgIHI4LCByNCwgcjgsIHI4IA0KKwkJDQorCXFhZGQJICByNiwgcjYsIHIzDQorCXFhZGQJICByNywgcjcsIHI0DQorDQorCWxkciAgICAgcjgsIFtyMCwgK3IxMCwgbHNsICMyXSAgICAgICAgICAgICAgICAgICAgDQorCWxkciAgICAgcjksIFtyMSwgK3IxMCwgbHNsICMyXQ0KKwltb3YJCSAgcjgsIHI4LCBhc3IgIzENCisJYWRkCQkgIHIxMCwgcjEwLCAjMQ0KKwltb3YJCSAgcjksIHI5LCBhc3IgIzENCisNCisJbGRyICAgICByMTIsIFtyMCwgK3IxMCwgbHNsICMyXSAgICAgICAgICANCisJYWRkCQkgIHI1LCByOCwgcjkJICAgICAgICAgIA0KKwlsZHIgICAgIHIxNCwgW3IxLCArcjEwLCBsc2wgIzJdDQorCXN1YgkJICByOCwgcjgsIHI5DQorDQorCXNtdWxsICAgcjUsIHIzLCByNSwgcjUgDQorCW1vdgkJICByMTIsIHIxMiwgYXNyICMxDQorCXNtdWxsICAgcjgsIHI0LCByOCwgcjggDQorCW1vdgkJICByMTQsIHIxNCwgYXNyICMxDQorDQorCXFhZGQJICByNiwgcjYsIHIzDQorCWFkZAkJICByNSwgcjEyLCByMTQNCisJcWFkZAkgIHI3LCByNywgcjQNCisJc3ViCQkgIHI4LCByMTIsIHIxNA0KKw0KKwlzbXVsbCAgIHI1LCByMywgcjUsIHI1IA0KKwlhZGQJCSAgcjEwLCByMTAsICMxDQorCXNtdWxsICAgcjgsIHI0LCByOCwgcjggDQorCQkNCisJcWFkZAkgIHI2LCByNiwgcjMNCisJcWFkZAkgIHI3LCByNywgcjQNCisNCisJY21wICAgICByMTAsIHIxMQ0KKwkNCisJYmx0CQkgIEwzMw0KKw0KKwlsZHIJCSAgcjMsIFtyMTMsICM0XQ0KKwlsZHIJCSAgcjQsIFtyMTMsICM4XQkNCisJbGRyCQkgIHIxMiwgW3IxMywgIzEyXQ0KKwlsZHIJCSAgcjE0LCBbcjEzLCAjMTZdDQorTDM5OgkNCisJcWFkZAkgIHI2LCByNiwgcjYNCisJcWFkZAkgIHI3LCByNywgcjcJDQorCQ0KKwlsZHIJCSAgcjgsIFtyMTMsICM2MF0NCisJbGRyCQkgIHI5LCBbcjEzLCAjNjhdDQorDQorCXFhZGQJICByMTIsIHIxMiwgcjYNCisJcWFkZAkgIHIxNCwgcjE0LCByNw0KKwkNCisJc3RyCQkgIHI2LCBbcjgsICtyNCwgbHNsICMyXSAgICAgICANCisJc3RyICAgICByNywgW3I5LCArcjQsIGxzbCAjMl0gICAgDQorCQ0KKwlhZGQJCSAgcjQsIHI0LCAjMQ0KKwljbXAJCSAgcjQsIHIzDQorCWJsdCAgICAgTDMyICAgICAgICAgICAgDQorDQorTDMxNToNCisJbGRyCQkgIHI4LCBbcjEzLCAjNjRdDQorCWxkcgkJICByOSwgW3IxMywgIzcyXQ0KKwlzdHIJCSAgcjEyLCBbcjgsICMwXQ0KKwlzdHIJCSAgcjE0LCBbcjksICMwXQ0KKw0KKwlhZGQgICAgIHIxMywgcjEzLCAjMjQNCisJbGRtaWEgICBzcCEsIHtyNCAtIHIxMSwgcGN9DQorCUBFTkRQICA7IHxDYWxjQmFuZEVuZXJneU1TfA0KKw0KKwkuZW5kDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvYXNtL0FSTVY3L1ByZVBvc3RNRENUX3Y3LnMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9hc20vQVJNVjcvUHJlUG9zdE1EQ1RfdjcucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjdkY2JhZAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL2FzbS9BUk1WNy9QcmVQb3N0TURDVF92Ny5zCkBAIC0wLDAgKzEsMTM1IEBACitALyoNCitAICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorQCAqKg0KK0AgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorQCAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorQCAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCitAICoqDQorQCAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorQCAqKg0KK0AgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KK0AgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCitAICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KK0AgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KK0AgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorQCAqLw0KKw0KK0BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEANCitACUZpbGU6CQlQcmVQb3N0TURDVF92Ny5zDQorQA0KK0AJQ29udGVudDoJcHJlbWRjdCBhbmQgcG9zdG1kY3QgZnVuY3Rpb24gYXJtdjcgYXNzZW1ibGUNCitADQorQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEANCisNCisJLnNlY3Rpb24gLnRleHQNCisJLmdsb2JhbAlQcmVNRENUDQorDQorUHJlTURDVDoNCisJc3RtZGIgICAgIHNwISwge3I0IC0gcjExLCBscn0NCisJDQorCWFkZCAgICAgICAgIHI5LCByMCwgcjEsIGxzbCAjMg0KKwlzdWIgICAgICAgICByMywgcjksICMzMg0KKw0KKwltb3ZzICAgICAgICByMSwgcjEsIGFzciAjMg0KKwliZXEgICAgICAgICBQcmVNRENUX0VORAkNCisJDQorUHJlTURDVF9MT09QOg0KKwlWTEQ0LkkzMgkJCXtkMCwgZDIsIGQ0LCBkNn0sIFtyMl0hCQkJCUAgY29zYSA9ICpjc3B0cisrQCBzaW5hID0gKmNzcHRyKytADQorCVZMRDQuSTMyCQkJe2QxLCBkMywgZDUsIGQ3fSwgW3IyXSEJCQkJQCBjb3NiID0gKmNzcHRyKytAIHNpbmIgPSAqY3NwdHIrK0ANCisJVkxEMi5JMzIJCQl7ZDgsIGQ5LCBkMTAsIGQxMX0sIFtyMF0JCQlAIHRyMSA9ICooYnVmMCArIDApQCB0aTIgPSAqKGJ1ZjAgKyAxKUANCisJVkxEMi5JMzIJCQl7ZDEzLCBkMTV9LCBbcjNdIQkJCQkJQCB0cjIgPSAqKGJ1ZjEgLSAxKUAgdGkxID0gKihidWYxICsgMClADQorCVZMRDIuSTMyCQkJe2QxMiwgZDE0fSwgW3IzXSEJCQkJCUAgdHIyID0gKihidWYxIC0gMSlAIHRpMSA9ICooYnVmMSArIDApQA0KKwkJDQorCVZSRVY2NC4zMgkJCVE4LCBRNwkNCisJVlJFVjY0LjMyCQkJUTksIFE2DQorDQorCQ0KKwlWUURNVUxILlMzMgkJUTEwLCBRMCwgUTQJCQkJCQkJCUAgTVVMSElHSChjb3NhLCB0cjEpDQorCVZRRE1VTEguUzMyCQlRMTEsIFExLCBROAkJCQkJCQkJQCBNVUxISUdIKHNpbmEsIHRpMSkNCisJVlFETVVMSC5TMzIJCVExMiwgUTAsIFE4CQkJCQkJCQlAIE1VTEhJR0goY29zYSwgdGkxKQ0KKwlWUURNVUxILlMzMgkJUTEzLCBRMSwgUTQJCQkJCQkJCUAgTVVMSElHSChzaW5hLCB0cjEpDQorCQkNCisJVkFERC5TMzIJCQlRMCwgUTEwLCBRMTEJCQkJCQlAICpidWYwKysgPSBNVUxISUdIKGNvc2EsIHRyMSkgKyBNVUxISUdIKHNpbmEsIHRpMSlADQorCVZTVUIuUzMyCQkJUTEsIFExMiwgUTEzCQkJCQkJQCAqYnVmMCsrID0gTVVMSElHSChjb3NhLCB0aTEpIC0gTVVMSElHSChzaW5hLCB0cjEpQA0KKwkNCisJVlNUMi5JMzIJCQl7ZDAsIGQxLCBkMiwgZDN9LCBbcjBdIQ0KKwlzdWIJCQkJCQlyMywgcjMsICMzMg0KKwkNCisJVlFETVVMSC5TMzIJCVExMCwgUTIsIFE5CQkJCQkJCQkJCUAgTVVMSElHSChjb3NiLCB0cjIpDQorCVZRRE1VTEguUzMyCQlRMTEsIFEzLCBRNQkJCQkJCQkJCQlAIE1VTEhJR0goc2luYiwgdGkyKQ0KKwlWUURNVUxILlMzMgkJUTEyLCBRMiwgUTUJCQkJCQkJCQkJQCBNVUxISUdIKGNvc2IsIHRpMikNCisJVlFETVVMSC5TMzIJCVExMywgUTMsIFE5CQkJCQkJCQkJCUAgTVVMSElHSChzaW5iLCB0cjIpDQorCQkNCisJVkFERC5TMzIJCQlRMCwgUTEwLCBRMTEJCQkJCQkJCQlAIE1VTEhJR0goY29zYSwgdHIyKSArIE1VTEhJR0goc2luYSwgdGkyKUANCisJVlNVQi5TMzIJCQlRMSwgUTEyLCBRMTMJCQkJCQkJCQlAIE1VTEhJR0goY29zYSwgdGkyKSAtIE1VTEhJR0goc2luYSwgdHIyKUANCisJDQorCVZSRVY2NC4zMgkJCVEzLCBRMQ0KKwlWUkVWNjQuMzIJCQlRMiwgUTANCisJCQ0KKwlWU1QyLkkzMgkJe2Q1LCBkN30sIFtyM10hCQ0KKwlWU1QyLkkzMgkJe2Q0LCBkNn0sIFtyM10hIA0KKwkNCisJc3VicyAgICAgCQlyMSwgcjEsICM0DQorCXN1YgkJICAJCXIzLCByMywgIzY0CQ0KKwlibmUgICAgICAgCVByZU1EQ1RfTE9PUA0KKwkNCitQcmVNRENUX0VORDoNCisJbGRtaWEgICAgIHNwISwge3I0IC0gcjExLCBwY30NCisJQEVORFAgIEAgfFByZU1EQ1R8DQorDQorCS5zZWN0aW9uIC50ZXh0DQorCS5nbG9iYWwJUG9zdE1EQ1QNCisNCitQb3N0TURDVDoNCisJc3RtZGIgICAgIHNwISwge3I0IC0gcjExLCBscn0NCisJDQorCWFkZCAgICAgICAgIHI5LCByMCwgcjEsIGxzbCAjMg0KKwlzdWIgICAgICAgICByMywgcjksICMzMg0KKw0KKwltb3ZzICAgICAgICByMSwgcjEsIGFzciAjMg0KKwliZXEgICAgICAgICBQb3N0TURDVF9FTkQNCisJDQorUG9zdE1EQ1RfTE9PUDoNCisJVkxENC5JMzIJCQl7ZDAsIGQyLCBkNCwgZDZ9LCBbcjJdIQkJCQlAIGNvc2EgPSAqY3NwdHIrK0Agc2luYSA9ICpjc3B0cisrQA0KKwlWTEQ0LkkzMgkJCXtkMSwgZDMsIGQ1LCBkN30sIFtyMl0hCQkJCUAgY29zYiA9ICpjc3B0cisrQCBzaW5iID0gKmNzcHRyKytADQorCVZMRDIuSTMyCQkJe2Q4LCBkOSwgZDEwLCBkMTF9LCBbcjBdCQkJQCB0cjEgPSAqKHpidWYxICsgMClAIHRpMSA9ICooemJ1ZjEgKyAxKUANCisJVkxEMi5JMzIJCQl7ZDEzLCBkMTV9LCBbcjNdIQkJCQkJCQlAIHRyMiA9ICooemJ1ZjIgLSAxKUAgdGkyID0gKih6YnVmMiArIDApQA0KKwlWTEQyLkkzMgkJCXtkMTIsIGQxNH0sIFtyM10hCQkJCQkJCUAgdHIyID0gKih6YnVmMiAtIDEpQCB0aTIgPSAqKHpidWYyICsgMClACQ0KKw0KKwlWUkVWNjQuMzIJCQlROCwgUTYJDQorCVZSRVY2NC4zMgkJCVE5LCBRNwkJCQ0KKwkNCisJVlFETVVMSC5TMzIJCVExMCwgUTAsIFE0CQkJCQkJCQkJCUAgTVVMSElHSChjb3NhLCB0cjEpDQorCVZRRE1VTEguUzMyCQlRMTEsIFExLCBRNQkJCQkJCQkJCQlAIE1VTEhJR0goc2luYSwgdGkxKQ0KKwlWUURNVUxILlMzMgkJUTEyLCBRMCwgUTUJCQkJCQkJCQkJQCBNVUxISUdIKGNvc2EsIHRpMSkNCisJVlFETVVMSC5TMzIJCVExMywgUTEsIFE0CQkJCQkJCQkJCUAgTVVMSElHSChzaW5hLCB0cjEpDQorCQkNCisJVkFERC5TMzIJCQlRMCwgUTEwLCBRMTEJCQkJCQkJCQlAICpidWYwKysgPSBNVUxISUdIKGNvc2EsIHRyMSkgKyBNVUxISUdIKHNpbmEsIHRpMSlADQorCVZTVUIuUzMyCQkJUTUsIFExMywgUTEyCQkJCQkJCQkJQCAqYnVmMS0tID0gTVVMSElHSChzaW5hLCB0cjEpIC0gTVVMSElHSChjb3NhLCB0aTEpQA0KKwkNCisJVlFETVVMSC5TMzIJCVExMCwgUTIsIFE4CQkJCQkJCQkJCUAgTVVMSElHSChjb3NiLCB0cjIpDQorCVZRRE1VTEguUzMyCQlRMTEsIFEzLCBROQkJCQkJCQkJCQlAIE1VTEhJR0goc2luYiwgdGkyKQ0KKwlWUURNVUxILlMzMgkJUTEyLCBRMiwgUTkJCQkJCQkJCQkJQCBNVUxISUdIKGNvc2IsIHRpMikNCisJVlFETVVMSC5TMzIJCVExMywgUTMsIFE4CQkJCQkJCQkJCUAgTVVMSElHSChzaW5iLCB0cjIpDQorCQkNCisJVkFERC5TMzIJCQlRNCwgUTEwLCBRMTEJCQkJCQkJCQlAICpidWYxLS0gPSBNVUxISUdIKGNvc2EsIHRyMikgKyBNVUxISUdIKHNpbmEsIHRpMilADQorCVZTVUIuUzMyCQkJUTEsIFExMywgUTEyCQkJCQkJCQkJQCAqYnVmMCsrID0gTVVMSElHSChzaW5hLCB0cjIpIC0gTVVMSElHSChjb3NhLCB0aTIpQAkNCisJDQorCVZSRVY2NC4zMgkJCVEyLCBRNA0KKwlWUkVWNjQuMzIJCQlRMywgUTUJDQorCQ0KKwlzdWIJCQkJCQlyMywgcjMsICMzMgkNCisJVlNUMi5JMzIJCQl7ZDAsIGQxLCBkMiwgZDN9LCBbcjBdIQ0KKwkJDQorCVZTVDIuSTMyCQkJe2Q1LCBkN30sIFtyM10hCQ0KKwlWU1QyLkkzMgkJCXtkNCwgZDZ9LCBbcjNdISANCisJDQorCXN1YnMgICAgIAkJCXIxLCByMSwgIzQNCisJc3ViCQkgIAkJCXIzLCByMywgIzY0CQkNCisJYm5lICAgICAgIAlQb3N0TURDVF9MT09QDQorDQorUG9zdE1EQ1RfRU5EOg0KKwlsZG1pYSAgICAgc3AhLCB7cjQgLSByMTEsIHBjfQ0KKw0KKwlARU5EUCAgCQlAIHxQb3N0TURDVHwNCisJLmVuZApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL2FzbS9BUk1WNy9SNFI4Rmlyc3RfdjcucyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL2FzbS9BUk1WNy9SNFI4Rmlyc3RfdjcucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OWVlNjhiCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvYXNtL0FSTVY3L1I0UjhGaXJzdF92Ny5zCkBAIC0wLDAgKzEsMTQ2IEBACitALyoNCitAICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorQCAqKg0KK0AgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorQCAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorQCAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCitAICoqDQorQCAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorQCAqKg0KK0AgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KK0AgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCitAICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KK0AgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KK0AgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorQCAqLw0KKw0KK0BAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEANCitACUZpbGU6CQlSNFI4Rmlyc3Rfdjcucw0KK0ANCitACUNvbnRlbnQ6CVJhZGl4OEZpcnN0IGFuZCBSYWRpeDRGaXJzdCBmdW5jdGlvbiBhcm12NyBhc3NlbWJsZQ0KK0ANCitAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQA0KKw0KKwkuc2VjdGlvbiAudGV4dA0KKwkuZ2xvYmFsCVJhZGl4OEZpcnN0DQorDQorUmFkaXg4Rmlyc3Q6DQorCXN0bWRiICAgICAJCXNwISwge3I0IC0gcjExLCBscn0NCisNCisJbGRyICAgICAgIAkJcjMsIFNRUlQxXzINCisJY21wICAgICAgIAkJcjEsICMwDQorCQ0KKwlWRFVQLkkzMiAgCQlRMTUsIHIzCQ0KKwliZXEgICAgICAgCQlSYWRpeDhGaXJzdF9FTkQNCisJDQorUmFkaXg4Rmlyc3RfTE9PUDoNCisJVkxEMS5JMzIJCQl7ZDAsIGQxLCBkMiwgZDN9LAlbcjBdIQ0KKwlWTEQxLkkzMgkJCXtkOCwgZDksIGQxMCwgZDExfSwJW3IwXSENCisJCQ0KKwlWQURELlMzMgkJCWQ0LCBkMCwgZDEJCUAgcjAgPSBidWZbMF0gKyBidWZbMl1AaTAgPSBidWZbMV0gKyBidWZbM11ADQorCVZTVUIuUzMyCQkJZDUsIGQwLCBkMQkJQCByMSA9IGJ1ZlswXSAtIGJ1ZlsyXUBpMSA9IGJ1ZlsxXSAtIGJ1ZlszXUAJDQorCVZTVUIuUzMyCQkJZDcsIGQyLCBkMwkJQCByMiA9IGJ1Zls0XSAtIGJ1Zls2XUBpMiA9IGJ1Zls1XSAtIGJ1Zls3XUAJDQorCVZBREQuUzMyCQkJZDYsIGQyLCBkMwkJQCByMyA9IGJ1Zls0XSArIGJ1Zls2XUBpMyA9IGJ1Zls1XSArIGJ1Zls3XUANCisJVlJFVjY0LkkzMgkJCWQ3LCBkNwkNCisJDQorCVZBREQuUzMyCQkJUTAsIFEyLCBRMwkJQCByNCA9IChyMCArIHIyKUBpNCA9IChpMCArIGkyKUBpNiA9IChpMSArIHIzKUByNyA9IChyMSArIGkzKQ0KKwlWU1VCLlMzMgkJCVExLCBRMiwgUTMJCUAgcjUgPSAocjAgLSByMilAaTUgPSAoaTAgLSBpMilAcjYgPSAocjEgLSBpMylAaTcgPSAoaTEgLSByMylADQorDQorCVZSRVY2NC5JMzIJCQlkMywgZDMJDQorDQorCVZBREQuUzMyCQkJZDQsIGQ4LCBkOQkJQCByMCA9IGJ1ZlsgOF0gKyBidWZbMTBdQGkwID0gYnVmWyA5XSArIGJ1ZlsxMV1ADQorCVZTVUIuUzMyCQkJZDcsIGQxMCwgZDExCUAgcjEgPSBidWZbMTJdIC0gYnVmWzE0XUBpMSA9IGJ1ZlsxM10gLSBidWZbMTVdQAkNCisJVkFERC5TMzIJCQlkNiwgZDEwLCBkMTEJQCByMiA9IGJ1ZlsxMl0gKyBidWZbMTRdQGkyID0gYnVmWzEzXSArIGJ1ZlsxNV1ADQorCVZSRVY2NC5JMzIJCQlkNywgZDcJDQorCVZTVUIuUzMyCQkJZDUsIGQ4LCBkOQkJQCByMyA9IGJ1ZlsgOF0gLSBidWZbMTBdQGkzID0gYnVmWyA5XSAtIGJ1ZlsxMV1ADQorCQ0KKwlWVFJOLjMyCQkJCWQxLCBkMwkNCisJDQorCVZBREQuUzMyCQkJUTQsIFEyLCBRMwkJQCB0MCA9IChyMCArIHIyKSA+PiAxQHQxID0gKGkwICsgaTIpID4+IDFAaTAgPSBpMSArIHIzQHIyID0gcjEgKyBpM0ANCisJVlNVQi5TMzIJCQlRNSwgUTIsIFEzCQlAIHQyID0gKHIwIC0gcjIpID4+IDFAdDMgPSAoaTAgLSBpMikgPj4gMUByMCA9IHIxIC0gaTNAaTIgPSBpMSAtIHIzQA0KKwkNCisJVlJFVjY0LkkzMgkJCWQzLCBkMw0KKwkNCisJVlNIUi5TMzIJCQlkOCwgZDgsICMxCQkgDQorCVZTSFIuUzMyCQkJUTAsIFEwLCAjMQ0KKwlWUkVWNjQuSTMyCQkJZDEwLCBkMTANCisJVlRSTi4zMgkJCQlkMTEsIGQ5DQorCVZTSFIuUzMyCQkJUTEsIFExLCAjMQ0KKwlWU0hSLlMzMgkJCWQxMCwgZDEwLCAjMQ0KKwlWUkVWNjQuSTMyCQkJZDksIGQ5DQorCQ0KKwlzdWIgICAgICAgCQkJcjAsIHIwLCAjMHg0MA0KKwkNCisJVkFERC5TMzIJCQlkMTIsIGQwLCBkOA0KKwlWU1VCLlMzMgkJCWQxNiwgZDAsIGQ4CQ0KKwlWQURELlMzMgkJCWQxNCwgZDIsIGQxMA0KKwlWU1VCLlMzMgkJCWQxOCwgZDIsIGQxMA0KKwkNCisJVlNVQi5TMzIJCQlkNCwgZDExLCBkOQ0KKwlWQURELlMzMgkJCWQ1LCBkMTEsIGQ5DQorCQ0KKwlWUkVWNjQuSTMyCQkJZDE4LCBkMTgNCisJDQorCVZRRE1VTEguUzMyCQkJUTMsIFEyLCBRMTUNCisJVlRSTi4zMgkJCQlkMTQsIGQxOA0KKwlWVFJOLjMyCQkJCWQ2LCBkNw0KKwlWUkVWNjQuSTMyCQkJZDE4LCBkMTgJDQorCQ0KKwlWU1VCLlMzMgkJCWQxNSwgZDMsIGQ2DQorCVZSRVY2NC5JMzIJCQlkNywgZDcNCisJVkFERC5TMzIJCQlkMTksIGQzLCBkNg0KKwlWQURELlMzMgkJCWQxMywgZDEsIGQ3DQorCVZTVUIuUzMyCQkJZDE3LCBkMSwgZDcNCisJDQorCVZSRVY2NC5JMzIJCQlkMTcsIGQxNw0KKwlWVFJOLjMyCQkJCWQxMywgZDE3DQorCVZSRVY2NC5JMzIJCQlkMTcsIGQxNw0KKwkNCisJc3VicyAgICAgICAJCQlyMSwgcjEsICMxCQ0KKwkNCisJVlNUMS5JMzIJCQl7ZDEyLCBkMTMsIGQxNCwgZDE1fSwgW3IwXSENCisJVlNUMS5JMzIJCQl7ZDE2LCBkMTcsIGQxOCwgZDE5fSwgW3IwXSEJDQorCWJuZSAgICAgICAJCQlSYWRpeDhGaXJzdF9MT09QDQorCQ0KK1JhZGl4OEZpcnN0X0VORDoNCisJbGRtaWEgICAgIHNwISwge3I0IC0gcjExLCBwY30JDQorU1FSVDFfMjoNCisJLndvcmQgICAgICAweDJkNDEzY2NkDQorCQ0KKwlARU5EUCAgQCB8UmFkaXg4Rmlyc3R8DQorCQ0KKwkuc2VjdGlvbiAudGV4dA0KKwkuZ2xvYmFsCVJhZGl4NEZpcnN0DQorDQorUmFkaXg0Rmlyc3Q6DQorCXN0bWRiICAgICAJc3AhLCB7cjQgLSByMTEsIGxyfQ0KKw0KKwljbXAgICAgICAgCXIxLCAjMA0KKwliZXEgICAgICAgCVJhZGl4NEZpcnN0X0VORA0KKwkNCitSYWRpeDRGaXJzdF9MT09QOg0KKwlWTEQxLkkzMgkJCXtkMCwgZDEsIGQyLCBkM30sIFtyMF0JCQkJCQ0KKwkNCisJVkFERC5TMzIJCQlkNCwgZDAsIGQxCQkJCQkJCUAgcjAgPSBidWZbMF0gKyBidWZbMl1AIHIxID0gYnVmWzFdICsgYnVmWzNdQAkJDQorCVZTVUIuUzMyCQkJZDUsIGQwLCBkMQkJCQkJCQlAIHIyID0gYnVmWzBdIC0gYnVmWzJdQCByMyA9IGJ1ZlsxXSAtIGJ1ZlszXUANCisJVlNVQi5TMzIJCQlkNywgZDIsIGQzCQkJCQkJCUAgcjQgPSBidWZbNF0gKyBidWZbNl1AIHI1ID0gYnVmWzVdICsgYnVmWzddQA0KKwlWQURELlMzMgkJCWQ2LCBkMiwgZDMJCQkJCQkJQCByNiA9IGJ1Zls0XSAtIGJ1Zls2XUAgcjcgPSBidWZbNV0gLSBidWZbN11ADQorCQ0KKwlWUkVWNjQuSTMyCQlkNywgZDcJCQkJCQkJCQlAIA0KKwkNCisJVkFERC5TMzIJCQlRNCwgUTIsIFEzDQorCVZTVUIuUzMyCQkJUTUsIFEyLCBRMw0KKwkNCisJVlJFVjY0LkkzMgkJZDExLCBkMTENCisJVlRSTi4zMgkJCQlkOSwgZDExDQorCXN1YnMgICAgICAgCQlyMSwgcjEsICMxCQ0KKwlWUkVWNjQuSTMyCQlkMTEsIGQxMQ0KKwlWU1QxLkkzMgkJCXtkOCwgZDksIGQxMCwgZDExfSwgW3IwXSENCisNCisJYm5lICAgICAgIAkJUmFkaXg0Rmlyc3RfTE9PUA0KKwkNCitSYWRpeDRGaXJzdF9FTkQ6DQorCWxkbWlhICAgIAkJc3AhLCB7cjQgLSByMTEsIHBjfQ0KKw0KKwlARU5EUCAgQCB8UmFkaXg0Rmlyc3R8DQorCS5lbmQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9hc20vQVJNVjcvUmFkaXg0RkZUX3Y3LnMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9hc20vQVJNVjcvUmFkaXg0RkZUX3Y3LnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTFhODQzOAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL2FzbS9BUk1WNy9SYWRpeDRGRlRfdjcucwpAQCAtMCwwICsxLDE0MyBAQAorQC8qDQorQCAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KK0AgKioNCitAICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KK0AgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KK0AgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorQCAqKg0KK0AgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KK0AgKioNCitAICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCitAICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorQCAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCitAICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCitAICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KK0AgKi8NCisNCitAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBADQorQAlGaWxlOgkJUmFkaXg0RkZUX3Y3LnMNCitADQorQAlDb250ZW50OglSYWRpeDRGRlQgYXJtdjcgYXNzZW1ibGUNCitADQorQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEBAQEANCisNCisJLnNlY3Rpb24gLnRleHQNCisJLmdsb2JhbAlSYWRpeDRGRlQNCisNCitSYWRpeDRGRlQ6DQorCXN0bWRiICAgIHNwISwge3I0IC0gcjExLCBscn0NCisNCisJbW92CQkJcjEsIHIxLCBhc3IgIzINCisJY21wICAgICAJcjEsICMwICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwliZXEgICAgIAlSYWRpeDRGRlRfRU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgICAgICAgICAgICAgIA0KK1JhZGl4NEZGVF9MT09QMTogICAgICAgICAgICAgICAgICAgICAgICAgDQorCW1vdiAgICAgCXI1LCByMiwgbHNsICMxICANCisJbW92ICAgICAJcjgsIHIwICAgICAgICAgIA0KKwltb3YgICAgIAlyNywgcjEgIA0KKwltb3YgICAgIAlyNSwgcjUsIGxzbCAjMiAgIA0KKwljbXAgICAgIAlyMSwgIzAgICAgICAgICAgDQorCXJzYmVxICAgCXIxMiwgcjUsIHI1LCBsc2wgIzIgDQorCWJlcSAgICAgCVJhZGl4NEZGVF9MT09QMV9FTkQgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICANCisJcnNiICAgICAJcjEyLCByNSwgcjUsIGxzbCAjMiAgIA0KKwkgDQorUmFkaXg0RkZUX0xPT1AyOiAgICAgICAgICAgICAgICAgICAgICAgIA0KKwltb3YgICAgIAlyNiwgcjMgDQorCW1vdiAgICAgCXI0LCByMiAgDQorCWNtcCAgICAgCXIyLCAjMCAgICAgICAgDQorCWJlcSAgICAgCVJhZGl4NEZGVF9MT09QMl9FTkQgICAgICAgICANCisgIA0KK1JhZGl4NEZGVF9MT09QMzogICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwlAcjAgPSB4cHRyWzBdQA0KKwlAcjEgPSB4cHRyWzFdQA0KKwlWTEQyLkkzMgkJCXtEMCwgRDEsIEQyLCBEM30sIFtyOF0JCQkJDQorCVZMRDIuSTMyCQkJe0QyOCwgRDI5LCBEMzAsIEQzMX0sIFtyNl0hCQlAIGNvc3ggPSBjc3B0clswXUAgc2lueCA9IGNzcHRyWzFdQA0KKwkNCisJYWRkCQkJCQlyOCwgcjgsIHI1CQkJCQkJCQkJCUAgeHB0ciArPSBzdGVwQAkNCisJVkxEMi5JMzIJCQl7RDQsIEQ1LCBENixEN30sIFtyOF0JCQkJCUAgcjIgPSB4cHRyWzBdQCByMyA9IHhwdHJbMV1ADQorCQ0KKwlWUURNVUxILlMzMgkJUTEwLCBRMiwgUTE0CQkJCQkJCQkJQCBNVUxISUdIKGNvc3gsIHQwKQ0KKwlWUURNVUxILlMzMgkJUTExLCBRMywgUTE1CQkJCQkJCQkJQCBNVUxISUdIKHNpbngsIHQxKQ0KKwlWUURNVUxILlMzMgkJUTEyLCBRMywgUTE0CQkJCQkJCQkJQCBNVUxISUdIKGNvc3gsIHQxKQ0KKwlWUURNVUxILlMzMgkJUTEzLCBRMiwgUTE1CQkJCQkJCQkJQCBNVUxISUdIKHNpbngsIHQwKQ0KKwkJDQorCVZBREQuUzMyCQkJUTIsIFExMCwgUTExCQkJCQkJCQkJQCBNVUxISUdIKGNvc3gsIHQwKSArIE1VTEhJR0goc2lueCwgdDEpDQorCVZTVUIuUzMyCQkJUTMsIFExMiwgUTEzCQkJCQkJCQkJQCBNVUxISUdIKGNvc3gsIHQxKSAtIE1VTEhJR0goc2lueCwgdDApDQorCQ0KKwlhZGQJCQkJCXI4LCByOCwgcjUJCQkJCQkJCQkJQCB4cHRyICs9IHN0ZXBADQorCVZTSFIuUzMyCQkJUTEwLCBRMCwgIzIJCQkJCQkJCQkJQCB0MCA9IHIwID4+IDJADQorCVZTSFIuUzMyCQkJUTExLCBRMSwgIzIJCQkJCQkJCQkJQCB0MSA9IHIxID4+IDJADQorCQ0KKwlWU1VCLlMzMgkJCVEwLAlRMTAsIFEyCQkJCQkJCQkJCUAgcjAgPSB0MCAtIHIyQA0KKwlWU1VCLlMzMgkJCVExLAlRMTEsIFEzCQkJCQkJCQkJCUAgcjEgPSB0MSAtIHIzQA0KKwlWQURELlMzMgkJCVEyLCBRMTAsIFEyCQkJCQkJCQkJCUAgcjIgPSB0MCArIHIyQA0KKwlWQURELlMzMgkJCVEzLCBRMTEsIFEzCQkJCQkJCQkJCUAgcjMgPSB0MSArIHIzQA0KKwkJDQorCVZMRDIuSTMyCQkJe0Q4LCBEOSwgRDEwLCBEMTF9LCBbcjhdCQ0KKwlWTEQyLkkzMgkJCXtEMjgsIEQyOSwgRDMwLCBEMzF9LCBbcjZdIQkNCisJYWRkCQkJCQkJcjgsIHI4LCByNQ0KKw0KKwlWUURNVUxILlMzMgkJUTEwLCBRNCwgUTE0CQkJCQkJCQkJQCBNVUxISUdIKGNvc3gsIHQwKQ0KKwlWUURNVUxILlMzMgkJUTExLCBRNSwgUTE1CQkJCQkJCQkJQCBNVUxISUdIKHNpbngsIHQxKQ0KKwlWUURNVUxILlMzMgkJUTEyLCBRNSwgUTE0CQkJCQkJCQkJQCBNVUxISUdIKGNvc3gsIHQxKQ0KKwlWUURNVUxILlMzMgkJUTEzLCBRNCwgUTE1CQkJCQkJCQkJQCBNVUxISUdIKHNpbngsIHQwKQ0KKwkJDQorCVZBREQuUzMyCQkJUTgsIFExMCwgUTExCQkJCQkJCQkJQCBNVUxISUdIKGNvc3gsIHQwKSArIE1VTEhJR0goc2lueCwgdDEpDQorCVZTVUIuUzMyCQkJUTksIFExMiwgUTEzCQkJCQkJCQkJQCBNVUxISUdIKGNvc3gsIHQxKSAtIE1VTEhJR0goc2lueCwgdDApCQ0KKwkNCisJVkxEMi5JMzIJCXtEMTIsIEQxMywgRDE0LCBEMTV9LCBbcjhdCQ0KKwlWTEQyLkkzMgkJe0QyOCwgRDI5LCBEMzAsIEQzMX0sIFtyNl0hDQorCQ0KKwlWUURNVUxILlMzMgkJUTEwLCBRNiwgUTE0CQkJCQkJCQkJQCBNVUxISUdIKGNvc3gsIHQwKQ0KKwlWUURNVUxILlMzMgkJUTExLCBRNywgUTE1CQkJCQkJCQkJQCBNVUxISUdIKHNpbngsIHQxKQ0KKwlWUURNVUxILlMzMgkJUTEyLCBRNywgUTE0CQkJCQkJCQkJQCBNVUxISUdIKGNvc3gsIHQxKQ0KKwlWUURNVUxILlMzMgkJUTEzLCBRNiwgUTE1CQkJCQkJCQkJQCBNVUxISUdIKHNpbngsIHQwKQ0KKwkJDQorCVZBREQuUzMyCQkJUTYsIFExMCwgUTExCQkJCQkJCQkJQCBNVUxISUdIKGNvc3gsIHQwKSArIE1VTEhJR0goc2lueCwgdDEpDQorCVZTVUIuUzMyCQkJUTcsIFExMiwgUTEzCQkJCQkJCQkJQCBNVUxISUdIKGNvc3gsIHQxKSAtIE1VTEhJR0goc2lueCwgdDApCQkNCisJDQorCVZBREQuUzMyCQkJUTQsIFE4LCBRNgkJCQkJCQkJCQlAIHI0ID0gdDAgKyByNkANCisJVlNVQi5TMzIJCQlRNSwgUTcsIFE5CQkJCQkJCQkJCUAgcjUgPSByNyAtIHQxQA0KKwlWU1VCLlMzMgkJCVE2LCBROCwgUTYJCQkJCQkJCQkJQCByNiA9IHQwIC0gcjZADQorCVZBREQuUzMyCQkJUTcsIFE3LCBROQkJCQkJCQkJCQlAIHI3ID0gcjcgKyB0MUANCisJDQorCVZBREQuUzMyCQkJUTgsIFEwLCBRNQkJCQkJCQkJCQlAIHhwdHJbMF0gPSByMCArIHI1QA0KKwlWQURELlMzMgkJCVE5LCBRMSwgUTYJCQkJCQkJCQkJQCB4cHRyWzFdID0gcjEgKyByNkANCisJVlNUMi5JMzIJCQl7RDE2LCBEMTcsIEQxOCwgRDE5fSwgW3I4XQ0KKwkNCisJVlNVQi5TMzIJCQlRMTAsIFEyLCBRNAkJCQkJCQkJCQlAIHhwdHJbMF0gPSByMiAtIHI0QA0KKwlzdWIJCQkJCXI4LCByOCwgcjUJCQkJCQkJCQkJQCB4cHRyIC09IHN0ZXBADQorCVZTVUIuUzMyCQkJUTExLCBRMywgUTcJCQkJCQkJCQkJQCB4cHRyWzFdID0gcjMgLSByN0ANCisJVlNUMi5JMzIJCQl7RDIwLCBEMjEsIEQyMiwgRDIzfSwgW3I4XQ0KKwkJDQorCVZTVUIuUzMyCQkJUTgsIFEwLCBRNQkJCQkJCQkJCQlAIHhwdHJbMF0gPSByMCAtIHI1QA0KKwlzdWIJCQkJCXI4LCByOCwgcjUJCQkJCQkJCQkJQCB4cHRyIC09IHN0ZXBADQorCVZTVUIuUzMyCQkJUTksIFExLCBRNgkJCQkJCQkJCQlAIHhwdHJbMV0gPSByMSAtIHI2QA0KKwlWU1QyLkkzMgkJCXtEMTYsIEQxNywgRDE4LCBEMTl9LCBbcjhdDQorCQkNCisJVkFERC5TMzIJCQlRMTAsIFEyLCBRNAkJCQkJCQkJCQlAIHhwdHJbMF0gPSByMiArIHI0QA0KKwlzdWIJCQkJCXI4LCByOCwgcjUJCQkJCQkJCQkJQCB4cHRyIC09IHN0ZXBADQorCVZBREQuUzMyCQkJUTExLCBRMywgUTcJCQkJCQkJCQkJQCB4cHRyWzFdID0gcjMgKyByN0ANCisJVlNUMi5JMzIJCQl7RDIwLCBEMjEsIEQyMiwgRDIzfSwgW3I4XSENCisJCQ0KKwlzdWJzICAgIAkJCXI0LCByNCwgIzQgDQorCWJuZSAgICAgCQkJUmFkaXg0RkZUX0xPT1AzIA0KKwkgICAgICAgICAgICAgICAgICAgICAgICAgDQorUmFkaXg0RkZUX0xPT1AyX0VORDogICAgICAgICAgICAgICAgICAgICAgICAgDQorCWFkZCAgICAgCQkJcjgsIHI4LCByMTIgICAgDQorCXN1YiAgICAJCQkJcjcsIHI3LCAjMSAgICAgDQorCWNtcAkJCQkJcjcsICMwDQorCWJoaSAgICAgCQkJUmFkaXg0RkZUX0xPT1AyICAgICAgICAgICANCisgICAgICAgICAgICAgICAgICAgICAgICANCitSYWRpeDRGRlRfTE9PUDFfRU5EOiAgICAgICAgICAgICAgICAgICAgICAgIA0KKwlhZGQgICAgIAkJCXIzLCByMTIsIHIzICAgIA0KKwltb3YgICAgIAkJCXIyLCByMiwgbHNsICMyIA0KKwltb3ZzICAgIAkJCXIxLCByMSwgYXNyICMyIA0KKwlibmUgICAgIAkJCVJhZGl4NEZGVF9MT09QMSAgICAgICAgICANCisgICAgICAgICAgICAgICAgICAgICAgICANCitSYWRpeDRGRlRfRU5EOiAgICAgICAgDQorCWxkbWlhICAgCQkJc3AhLCB7cjQgLSByMTEsIHBjfQ0KKwkJDQorCUBFTkRQICBAIHxSYWRpeDRGRlR8DQorCS5lbmQKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9iYW5kX25yZy5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvYmFuZF9ucmcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjZjNGNhCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvYmFuZF9ucmcuYwpAQCAtMCwwICsxLDEwMiBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJYmFuZF9ucmcuYw0KKw0KKwlDb250ZW50OglCYW5kL0xpbmUgZW5lcmd5IGNhbGN1bGF0aW9ucyBmdW5jdGlvbnMNCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaW5jbHVkZSAiYmFzaWNfb3AuaCINCisjaW5jbHVkZSAiYmFuZF9ucmcuaCIKKworI2lmbmRlZiBBUk1WNUUNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogQ2FsY0JhbmRFbmVyZ3kKKyogZGVzY3JpcHRpb246ICAgQ2FsYyBzZmItYmFuZHdpc2UgbWRjdC1lbmVyZ2llcyBmb3IgbGVmdCBhbmQgcmlnaHQgY2hhbm5lbAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCit2b2lkIENhbGNCYW5kRW5lcmd5KGNvbnN0IFdvcmQzMiAqbWRjdFNwZWN0cnVtLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgKmJhbmRPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgbnVtQmFuZHMsCisgICAgICAgICAgICAgICAgICAgIFdvcmQzMiAgICAgICAqYmFuZEVuZXJneSwKKyAgICAgICAgICAgICAgICAgICAgV29yZDMyICAgICAgICpiYW5kRW5lcmd5U3VtKQoreworICBXb3JkMzIgaSwgajsKKyAgV29yZDMyIGFjY3VTdW0gPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgZm9yIChpPTA7IGk8bnVtQmFuZHM7IGkrKykgeworICAgIFdvcmQzMiBhY2N1ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBmb3IgKGo9YmFuZE9mZnNldFtpXTsgajxiYW5kT2Zmc2V0W2krMV07IGorKykKKyAgICAgIGFjY3UgPSBMX2FkZChhY2N1LCBNVUxISUdIKG1kY3RTcGVjdHJ1bVtqXSwgbWRjdFNwZWN0cnVtW2pdKSk7DQorDQorCWFjY3UgPSBMX2FkZChhY2N1LCBhY2N1KTsKKyAgICBhY2N1U3VtID0gTF9hZGQoYWNjdVN1bSwgYWNjdSk7CisgICAgYmFuZEVuZXJneVtpXSA9IGFjY3U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICB9CisgICpiYW5kRW5lcmd5U3VtID0gYWNjdVN1bTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogQ2FsY0JhbmRFbmVyZ3lNUworKiBkZXNjcmlwdGlvbjogICBDYWxjIHNmYi1iYW5kd2lzZSBtZGN0LWVuZXJnaWVzIGZvciBsZWZ0IGFkZCBvciBtaW51cyByaWdodCBjaGFubmVsCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordm9pZCBDYWxjQmFuZEVuZXJneU1TKGNvbnN0IFdvcmQzMiAqbWRjdFNwZWN0cnVtTGVmdCwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMzIgKm1kY3RTcGVjdHJ1bVJpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAqYmFuZE9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgIG51bUJhbmRzLAorICAgICAgICAgICAgICAgICAgICAgIFdvcmQzMiAgICAgICAqYmFuZEVuZXJneU1pZCwKKyAgICAgICAgICAgICAgICAgICAgICBXb3JkMzIgICAgICAgKmJhbmRFbmVyZ3lNaWRTdW0sCisgICAgICAgICAgICAgICAgICAgICAgV29yZDMyICAgICAgICpiYW5kRW5lcmd5U2lkZSwKKyAgICAgICAgICAgICAgICAgICAgICBXb3JkMzIgICAgICAgKmJhbmRFbmVyZ3lTaWRlU3VtKQoreworCisgIFdvcmQzMiBpLCBqOworICBXb3JkMzIgYWNjdU1pZFN1bSA9IDA7ICAgICAgICAKKyAgV29yZDMyIGFjY3VTaWRlU3VtID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAKKworICBmb3IoaT0wOyBpPG51bUJhbmRzOyBpKyspIHsKKyAgICBXb3JkMzIgYWNjdU1pZCA9IDA7CisgICAgV29yZDMyIGFjY3VTaWRlID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgZm9yIChqPWJhbmRPZmZzZXRbaV07IGo8YmFuZE9mZnNldFtpKzFdOyBqKyspIHsKKyAgICAgIFdvcmQzMiBzcGVjbSwgc3BlY3M7IAorICAgICAgV29yZDMyIGwsIHI7CisKKyAgICAgIGwgPSBtZGN0U3BlY3RydW1MZWZ0W2pdID4+IDE7CisgICAgICByID0gbWRjdFNwZWN0cnVtUmlnaHRbal0gPj4gMTsKKyAgICAgIHNwZWNtID0gbCArIHI7CisgICAgICBzcGVjcyA9IGwgLSByOworICAgICAgYWNjdU1pZCA9IExfYWRkKGFjY3VNaWQsIE1VTEhJR0goc3BlY20sIHNwZWNtKSk7CisgICAgICBhY2N1U2lkZSA9IExfYWRkKGFjY3VTaWRlLCBNVUxISUdIKHNwZWNzLCBzcGVjcykpOworICAgIH0KKyAgICANCisJYWNjdU1pZCA9IExfYWRkKGFjY3VNaWQsIGFjY3VNaWQpOw0KKwlhY2N1U2lkZSA9IExfYWRkKGFjY3VTaWRlLCBhY2N1U2lkZSk7DQorCWJhbmRFbmVyZ3lNaWRbaV0gPSBhY2N1TWlkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBhY2N1TWlkU3VtID0gTF9hZGQoYWNjdU1pZFN1bSwgYWNjdU1pZCk7CisgICAgYmFuZEVuZXJneVNpZGVbaV0gPSBhY2N1U2lkZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIGFjY3VTaWRlU3VtID0gTF9hZGQoYWNjdVNpZGVTdW0sIGFjY3VTaWRlKTsKKyAgICAKKyAgfQorICAqYmFuZEVuZXJneU1pZFN1bSA9IGFjY3VNaWRTdW07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgKmJhbmRFbmVyZ3lTaWRlU3VtID0gYWNjdVNpZGVTdW07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCit9CisKKyNlbmRpZgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL2JpdF9jbnQuYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL2JpdF9jbnQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDgzN2U4Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvYml0X2NudC5jCkBAIC0wLDAgKzEsODg1IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorCUZpbGU6CQliaXRfY250LmMNCisNCisJQ29udGVudDoJSHVmZm1hbiBCaXRjb3VudGVyICYgY29kZXIgZnVuY3Rpb25zDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2luY2x1ZGUgImJpdF9jbnQuaCIKKyNpbmNsdWRlICJhYWNfcm9tLmgiCisKKyNkZWZpbmUgSElfTFRBQihhKSAoYT4+OCkKKyNkZWZpbmUgTE9fTFRBQihhKSAoYSAmIDB4ZmYpCisKKyNkZWZpbmUgRVhQQU5EKGEpICAoKCgoV29yZDMyKShhJjB4ZmYwMCkpIDw8IDgpfChXb3JkMzIpKGEmMHhmZikpIAorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBjb3VudDFfMl8zXzRfNV82XzdfOF85XzEwXzExCisqIGRlc2NyaXB0aW9uOiAgY291bnRzIHRhYmxlcyAxLTExIAorKiByZXR1cm5zOiAgICAgIAorKiBpbnB1dDogICAgICAgIHF1YW50aXplZCBzcGVjdHJ1bQorKiBvdXRwdXQ6ICAgICAgIGJpdENvdW50IGZvciB0YWJsZXMgMS0xMQorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyB2b2lkIGNvdW50MV8yXzNfNF81XzZfN184XzlfMTBfMTEoY29uc3QgV29yZDE2ICp2YWx1ZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgICAgICAqYml0Q291bnQpCit7CisgIFdvcmQzMiB0MCx0MSx0Mix0MyxpOworICBXb3JkMzIgYmMxXzIsYmMzXzQsYmM1XzYsYmM3XzgsYmM5XzEwOworICBXb3JkMTYgYmMxMSxzYzsNCisgIAorICBiYzFfMj0wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgYmMzXzQ9MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIGJjNV82PTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBiYzdfOD0wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgYmM5XzEwPTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIGJjMTE9MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBzYz0wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICBmb3IoaT0wO2k8d2lkdGg7aSs9NCl7CisgICAgCisgICAgdDA9IHZhbHVlc1tpKzBdOyAgICAgICAgICAgICAgICAgICAgIAorICAgIHQxPSB2YWx1ZXNbaSsxXTsgICAgICAgICAgICAgICAgICAgICAKKyAgICB0Mj0gdmFsdWVzW2krMl07ICAgICAgICAgICAgICAgICAgICAgCisgICAgdDM9IHZhbHVlc1tpKzNdOyAgICAgICAgICAgICAgICAgICAgIAorICAKKyAgICAvKiAxLDIgKi8KKworICAgIGJjMV8yID0gYmMxXzIgKyBFWFBBTkQoaHVmZl9sdGFiMV8yW3QwKzFdW3QxKzFdW3QyKzFdW3QzKzFdKTsgICAgICAgICAgICAgIAorCisgICAgLyogNSw2ICovCisgICAgYmM1XzYgPSBiYzVfNiArIEVYUEFORChodWZmX2x0YWI1XzZbdDArNF1bdDErNF0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgYmM1XzYgPSBiYzVfNiArIEVYUEFORChodWZmX2x0YWI1XzZbdDIrNF1bdDMrNF0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgICB0MD1BQlModDApOworICAgIHQxPUFCUyh0MSk7CisgICAgdDI9QUJTKHQyKTsKKyAgICB0Mz1BQlModDMpOworCisgICAgCisgICAgYmMzXzQgPSBiYzNfNCArIEVYUEFORChodWZmX2x0YWIzXzRbdDBdW3QxXVt0Ml1bdDNdKTsgICAgICAgICAgICAgICAgICAgICAgCisgICAgCisgICAgYmM3XzggPSBiYzdfOCArIEVYUEFORChodWZmX2x0YWI3XzhbdDBdW3QxXSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgYmM3XzggPSBiYzdfOCArIEVYUEFORChodWZmX2x0YWI3XzhbdDJdW3QzXSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgCisgICAgYmM5XzEwID0gYmM5XzEwICsgRVhQQU5EKGh1ZmZfbHRhYjlfMTBbdDBdW3QxXSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgYmM5XzEwID0gYmM5XzEwICsgRVhQQU5EKGh1ZmZfbHRhYjlfMTBbdDJdW3QzXSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgCisgICAgYmMxMSA9IGJjMTEgKyBodWZmX2x0YWIxMVt0MF1bdDFdOworICAgIGJjMTEgPSBiYzExICsgaHVmZl9sdGFiMTFbdDJdW3QzXTsKKyAgIAorICAgICAgICAgICAKKyAgICBzYyA9IHNjICsgKHQwPjApICsgKHQxPjApICsgKHQyPjApICsgKHQzPjApOworICB9CisgIAorICBiaXRDb3VudFsxXT1leHRyYWN0X2goYmMxXzIpOworICBiaXRDb3VudFsyXT1leHRyYWN0X2woYmMxXzIpOworICBiaXRDb3VudFszXT1leHRyYWN0X2goYmMzXzQpICsgc2M7CisgIGJpdENvdW50WzRdPWV4dHJhY3RfbChiYzNfNCkgKyBzYzsKKyAgYml0Q291bnRbNV09ZXh0cmFjdF9oKGJjNV82KTsKKyAgYml0Q291bnRbNl09ZXh0cmFjdF9sKGJjNV82KTsKKyAgYml0Q291bnRbN109ZXh0cmFjdF9oKGJjN184KSArIHNjOworICBiaXRDb3VudFs4XT1leHRyYWN0X2woYmM3XzgpICsgc2M7CisgIGJpdENvdW50WzldPWV4dHJhY3RfaChiYzlfMTApICsgc2M7CisgIGJpdENvdW50WzEwXT1leHRyYWN0X2woYmM5XzEwKSArIHNjOworICBiaXRDb3VudFsxMV09YmMxMSArIHNjOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBjb3VudDNfNF81XzZfN184XzlfMTBfMTEKKyogZGVzY3JpcHRpb246ICBjb3VudHMgdGFibGVzIDMtMTEgCisqIHJldHVybnM6ICAgICAgCisqIGlucHV0OiAgICAgICAgcXVhbnRpemVkIHNwZWN0cnVtCisqIG91dHB1dDogICAgICAgYml0Q291bnQgZm9yIHRhYmxlcyAzLTExCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RhdGljIHZvaWQgY291bnQzXzRfNV82XzdfOF85XzEwXzExKGNvbnN0IFdvcmQxNiAqdmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICAgICAgICpiaXRDb3VudCkKK3sKKyAgV29yZDMyIHQwLHQxLHQyLHQzLCBpOworICBXb3JkMzIgYmMzXzQsYmM1XzYsYmM3XzgsYmM5XzEwOworICBXb3JkMTYgYmMxMSxzYzsKKyAgICAKKyAgYmMzXzQ9MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIGJjNV82PTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBiYzdfOD0wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgYmM5XzEwPTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIGJjMTE9MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBzYz0wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICBmb3IoaT0wO2k8d2lkdGg7aSs9NCl7CisKKyAgICB0MD0gdmFsdWVzW2krMF07ICAgICAgICAgICAgICAgICAgICAgCisgICAgdDE9IHZhbHVlc1tpKzFdOyAgICAgICAgICAgICAgICAgICAgIAorICAgIHQyPSB2YWx1ZXNbaSsyXTsgICAgICAgICAgICAgICAgICAgICAKKyAgICB0Mz0gdmFsdWVzW2krM107ICAgICAgICAgICAgICAgICAgICAgCisgICAgCisgICAgLyoKKyAgICAgIDUsNgorICAgICovCisgICAgYmM1XzYgPSBiYzVfNiArIEVYUEFORChodWZmX2x0YWI1XzZbdDArNF1bdDErNF0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgYmM1XzYgPSBiYzVfNiArIEVYUEFORChodWZmX2x0YWI1XzZbdDIrNF1bdDMrNF0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgICB0MD1BQlModDApOworICAgIHQxPUFCUyh0MSk7CisgICAgdDI9QUJTKHQyKTsKKyAgICB0Mz1BQlModDMpOworCisKKyAgICBiYzNfNCA9IGJjM180ICsgRVhQQU5EKGh1ZmZfbHRhYjNfNFt0MF1bdDFdW3QyXVt0M10pOyAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBiYzdfOCA9IGJjN184ICsgRVhQQU5EKGh1ZmZfbHRhYjdfOFt0MF1bdDFdKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBiYzdfOCA9IGJjN184ICsgRVhQQU5EKGh1ZmZfbHRhYjdfOFt0Ml1bdDNdKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAKKyAgICBiYzlfMTAgPSBiYzlfMTAgKyBFWFBBTkQoaHVmZl9sdGFiOV8xMFt0MF1bdDFdKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBiYzlfMTAgPSBiYzlfMTAgKyBFWFBBTkQoaHVmZl9sdGFiOV8xMFt0Ml1bdDNdKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBiYzExID0gYmMxMSArIGh1ZmZfbHRhYjExW3QwXVt0MV07CisgICAgYmMxMSA9IGJjMTEgKyBodWZmX2x0YWIxMVt0Ml1bdDNdOworCisgICAgICAgICAgIAorICAgIHNjID0gc2MgKyAodDA+MCkgKyAodDE+MCkgKyAodDI+MCkgKyAodDM+MCk7ICAgCisgIH0NCisgIAorICBiaXRDb3VudFsxXT1JTlZBTElEX0JJVENPVU5UOyAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIGJpdENvdW50WzJdPUlOVkFMSURfQklUQ09VTlQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgYml0Q291bnRbM109ZXh0cmFjdF9oKGJjM180KSArIHNjOworICBiaXRDb3VudFs0XT1leHRyYWN0X2woYmMzXzQpICsgc2M7CisgIGJpdENvdW50WzVdPWV4dHJhY3RfaChiYzVfNik7CisgIGJpdENvdW50WzZdPWV4dHJhY3RfbChiYzVfNik7CisgIGJpdENvdW50WzddPWV4dHJhY3RfaChiYzdfOCkgKyBzYzsKKyAgYml0Q291bnRbOF09ZXh0cmFjdF9sKGJjN184KSArIHNjOworICBiaXRDb3VudFs5XT1leHRyYWN0X2goYmM5XzEwKSArIHNjOworICBiaXRDb3VudFsxMF09ZXh0cmFjdF9sKGJjOV8xMCkgKyBzYzsKKyAgYml0Q291bnRbMTFdPWJjMTEgKyBzYzsKKyAgCit9CisKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogY291bnQ1XzZfN184XzlfMTBfMTEKKyogZGVzY3JpcHRpb246ICBjb3VudHMgdGFibGVzIDUtMTEgCisqIHJldHVybnM6ICAgICAgCisqIGlucHV0OiAgICAgICAgcXVhbnRpemVkIHNwZWN0cnVtCisqIG91dHB1dDogICAgICAgYml0Q291bnQgZm9yIHRhYmxlcyA1LTExCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyB2b2lkIGNvdW50NV82XzdfOF85XzEwXzExKGNvbnN0IFdvcmQxNiAqdmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgICAgICAqYml0Q291bnQpCit7CisKKyAgV29yZDMyIHQwLHQxLGk7CisgIFdvcmQzMiBiYzVfNixiYzdfOCxiYzlfMTA7CisgIFdvcmQxNiBiYzExLHNjOw0KKworICBiYzVfNj0wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgYmM3Xzg9MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIGJjOV8xMD0wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBiYzExPTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgc2M9MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgZm9yKGk9MDtpPHdpZHRoO2krPTIpeworCisgICAgdDAgPSB2YWx1ZXNbaSswXTsgICAgICAgICAgICAgICAgICAgIAorICAgIHQxID0gdmFsdWVzW2krMV07ICAgICAgICAgICAgICAgICAgICAKKworICAgIGJjNV82ID0gYmM1XzYgKyBFWFBBTkQoaHVmZl9sdGFiNV82W3QwKzRdW3QxKzRdKTsgICAgICAgICAgICAgICAgICAKKworICAgIHQwPUFCUyh0MCk7CisgICAgdDE9QUJTKHQxKTsKKyAgICAgCisgICAgYmM3XzggPSBiYzdfOCArIEVYUEFORChodWZmX2x0YWI3XzhbdDBdW3QxXSk7ICAgICAgICAgICAgICAgICAgICAgIAorICAgIGJjOV8xMCA9IGJjOV8xMCArIEVYUEFORChodWZmX2x0YWI5XzEwW3QwXVt0MV0pOyAgICAgICAgICAgICAgICAgICAKKyAgICBiYzExID0gYmMxMSArIGh1ZmZfbHRhYjExW3QwXVt0MV07CisgICAgCisgICAgICAgCisgICAgc2MgPSBzYyArICh0MD4wKSArICh0MT4wKTsKKyAgfQorICBiaXRDb3VudFsxXT1JTlZBTElEX0JJVENPVU5UOyAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIGJpdENvdW50WzJdPUlOVkFMSURfQklUQ09VTlQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgYml0Q291bnRbM109SU5WQUxJRF9CSVRDT1VOVDsgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBiaXRDb3VudFs0XT1JTlZBTElEX0JJVENPVU5UOyAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIGJpdENvdW50WzVdPWV4dHJhY3RfaChiYzVfNik7CisgIGJpdENvdW50WzZdPWV4dHJhY3RfbChiYzVfNik7CisgIGJpdENvdW50WzddPWV4dHJhY3RfaChiYzdfOCkgKyBzYzsKKyAgYml0Q291bnRbOF09ZXh0cmFjdF9sKGJjN184KSArIHNjOworICBiaXRDb3VudFs5XT1leHRyYWN0X2goYmM5XzEwKSArIHNjOworICBiaXRDb3VudFsxMF09ZXh0cmFjdF9sKGJjOV8xMCkgKyBzYzsKKyAgYml0Q291bnRbMTFdPWJjMTEgKyBzYzsKKyAgCit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IGNvdW50N184XzlfMTBfMTEKKyogZGVzY3JpcHRpb246ICBjb3VudHMgdGFibGVzIDctMTEgCisqIHJldHVybnM6ICAgICAgCisqIGlucHV0OiAgICAgICAgcXVhbnRpemVkIHNwZWN0cnVtCisqIG91dHB1dDogICAgICAgYml0Q291bnQgZm9yIHRhYmxlcyA3LTExCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RhdGljIHZvaWQgY291bnQ3XzhfOV8xMF8xMShjb25zdCBXb3JkMTYgKnZhbHVlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICAgICAgICpiaXRDb3VudCkKK3sKKyAgV29yZDMyIHQwLHQxLCBpOworICBXb3JkMzIgYmM3XzgsYmM5XzEwOworICBXb3JkMTYgYmMxMSxzYzsKKyAgICAKKyAgYmM3Xzg9MDsgICAgICAgICAgICAgICAgICAgICAgIAorICBiYzlfMTA9MDsgICAgICAgICAgICAgICAgICAgICAgCisgIGJjMTE9MDsgICAgICAgICAgICAgICAgICAgICAgICAKKyAgc2M9MDsgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgIGZvcihpPTA7aTx3aWR0aDtpKz0yKXsKKworICAgIHQwPUFCUyh2YWx1ZXNbaSswXSk7CisgICAgdDE9QUJTKHZhbHVlc1tpKzFdKTsKKworICAgIGJjN184ID0gYmM3XzggKyBFWFBBTkQoaHVmZl9sdGFiN184W3QwXVt0MV0pOyAgICAgICAgICAgICAgICAgICAgICAKKyAgICBiYzlfMTAgPSBiYzlfMTAgKyBFWFBBTkQoaHVmZl9sdGFiOV8xMFt0MF1bdDFdKTsgICAgICAgICAgICAgICAgICAgCisgICAgYmMxMSA9IGJjMTEgKyBodWZmX2x0YWIxMVt0MF1bdDFdOworICAgCisgICAgICAgCisgICAgc2MgPSBzYyArICh0MD4wKSArICh0MT4wKTsKKyAgfQorICBiaXRDb3VudFsxXT1JTlZBTElEX0JJVENPVU5UOyAgICAgICAgICAgICAgICAgIAorICBiaXRDb3VudFsyXT1JTlZBTElEX0JJVENPVU5UOyAgICAgICAgICAgICAgICAgIAorICBiaXRDb3VudFszXT1JTlZBTElEX0JJVENPVU5UOyAgICAgICAgICAgICAgICAgIAorICBiaXRDb3VudFs0XT1JTlZBTElEX0JJVENPVU5UOyAgICAgICAgICAgICAgICAgIAorICBiaXRDb3VudFs1XT1JTlZBTElEX0JJVENPVU5UOyAgICAgICAgICAgICAgICAgIAorICBiaXRDb3VudFs2XT1JTlZBTElEX0JJVENPVU5UOyAgICAgICAgICAgICAgICAgIAorICBiaXRDb3VudFs3XT1leHRyYWN0X2goYmM3XzgpICsgc2M7CisgIGJpdENvdW50WzhdPWV4dHJhY3RfbChiYzdfOCkgKyBzYzsKKyAgYml0Q291bnRbOV09ZXh0cmFjdF9oKGJjOV8xMCkgKyBzYzsKKyAgYml0Q291bnRbMTBdPWV4dHJhY3RfbChiYzlfMTApICsgc2M7CisgIGJpdENvdW50WzExXT1iYzExICsgc2M7CisgIAorfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogY291bnQ5XzEwXzExCisqIGRlc2NyaXB0aW9uOiAgY291bnRzIHRhYmxlcyA5LTExIAorKiByZXR1cm5zOiAgICAgIAorKiBpbnB1dDogICAgICAgIHF1YW50aXplZCBzcGVjdHJ1bQorKiBvdXRwdXQ6ICAgICAgIGJpdENvdW50IGZvciB0YWJsZXMgOS0xMQorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgdm9pZCBjb3VudDlfMTBfMTEoY29uc3QgV29yZDE2ICp2YWx1ZXMsDQorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgd2lkdGgsDQorICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgICAgICAqYml0Q291bnQpDQorew0KKw0KKyAgV29yZDMyIHQwLHQxLGk7ICANCisgIFdvcmQzMiBiYzlfMTA7DQorICBXb3JkMTYgYmMxMSxzYzsNCisNCisgIGJjOV8xMD0wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgYmMxMT0wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICBzYz0wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisNCisgIGZvcihpPTA7aTx3aWR0aDtpKz0yKXsNCisNCisgICAgdDA9QUJTKHZhbHVlc1tpKzBdKTsNCisgICAgdDE9QUJTKHZhbHVlc1tpKzFdKTsNCisgICAgDQorDQorICAgIGJjOV8xMCArPSBFWFBBTkQoaHVmZl9sdGFiOV8xMFt0MF1bdDFdKTsgICAgICAgICAgIA0KKyAgICBiYzExID0gYmMxMSArIGh1ZmZfbHRhYjExW3QwXVt0MV07DQorDQorICAgICAgIA0KKyAgICBzYyA9IHNjICsgKHQwPjApICsgKHQxPjApOw0KKyAgfQ0KKyAgYml0Q291bnRbMV09SU5WQUxJRF9CSVRDT1VOVDsgICAgICAgICAgDQorICBiaXRDb3VudFsyXT1JTlZBTElEX0JJVENPVU5UOyAgICAgICAgICANCisgIGJpdENvdW50WzNdPUlOVkFMSURfQklUQ09VTlQ7ICAgICAgICAgIA0KKyAgYml0Q291bnRbNF09SU5WQUxJRF9CSVRDT1VOVDsgICAgICAgICAgDQorICBiaXRDb3VudFs1XT1JTlZBTElEX0JJVENPVU5UOyAgICAgICAgICANCisgIGJpdENvdW50WzZdPUlOVkFMSURfQklUQ09VTlQ7ICAgICAgICAgIA0KKyAgYml0Q291bnRbN109SU5WQUxJRF9CSVRDT1VOVDsgICAgICAgICAgDQorICBiaXRDb3VudFs4XT1JTlZBTElEX0JJVENPVU5UOyAgICAgICAgICANCisgIGJpdENvdW50WzldPWV4dHJhY3RfaChiYzlfMTApICsgc2M7DQorICBiaXRDb3VudFsxMF09ZXh0cmFjdF9sKGJjOV8xMCkgKyBzYzsNCisgIGJpdENvdW50WzExXT1iYzExICsgc2M7DQorICANCit9CisgCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogY291bnQxMQorKiBkZXNjcmlwdGlvbjogIGNvdW50cyB0YWJsZSAxMSAKKyogcmV0dXJuczogICAgICAKKyogaW5wdXQ6ICAgICAgICBxdWFudGl6ZWQgc3BlY3RydW0KKyogb3V0cHV0OiAgICAgICBiaXRDb3VudCBmb3IgdGFibGUgMTEKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworIHN0YXRpYyB2b2lkIGNvdW50MTEoY29uc3QgV29yZDE2ICp2YWx1ZXMsDQorICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgIHdpZHRoLA0KKyAgICAgICAgICAgICAgICAgICAgV29yZDE2ICAgICAgICAqYml0Q291bnQpDQorew0KKyAgV29yZDMyIHQwLHQxLGk7DQorICBXb3JkMTYgYmMxMSxzYzsgIA0KKw0KKyAgYmMxMT0wOyAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgc2M9MDsgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgZm9yKGk9MDtpPHdpZHRoO2krPTIpew0KKyAgICB0MD1BQlModmFsdWVzW2krMF0pOw0KKyAgICB0MT1BQlModmFsdWVzW2krMV0pOw0KKyAgICBiYzExID0gYmMxMSArIGh1ZmZfbHRhYjExW3QwXVt0MV07DQorDQorICAgICAgIA0KKyAgICBzYyA9IHNjICsgKHQwPjApICsgKHQxPjApOw0KKyAgfQ0KKw0KKyAgYml0Q291bnRbMV09SU5WQUxJRF9CSVRDT1VOVDsgICAgICAgICAgICAgICAgICANCisgIGJpdENvdW50WzJdPUlOVkFMSURfQklUQ09VTlQ7ICAgICAgICAgICAgICAgICAgDQorICBiaXRDb3VudFszXT1JTlZBTElEX0JJVENPVU5UOyAgICAgICAgICAgICAgICAgIA0KKyAgYml0Q291bnRbNF09SU5WQUxJRF9CSVRDT1VOVDsgICAgICAgICAgICAgICAgICANCisgIGJpdENvdW50WzVdPUlOVkFMSURfQklUQ09VTlQ7ICAgICAgICAgICAgICAgICAgDQorICBiaXRDb3VudFs2XT1JTlZBTElEX0JJVENPVU5UOyAgICAgICAgICAgICAgICAgIA0KKyAgYml0Q291bnRbN109SU5WQUxJRF9CSVRDT1VOVDsgICAgICAgICAgICAgICAgICANCisgIGJpdENvdW50WzhdPUlOVkFMSURfQklUQ09VTlQ7ICAgICAgICAgICAgICAgICAgDQorICBiaXRDb3VudFs5XT1JTlZBTElEX0JJVENPVU5UOyAgICAgICAgICAgICAgICAgIA0KKyAgYml0Q291bnRbMTBdPUlOVkFMSURfQklUQ09VTlQ7ICAgICAgICAgICAgICAgICANCisgIGJpdENvdW50WzExXT1iYzExICsgc2M7DQorfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogY291bnRFc2MKKyogZGVzY3JpcHRpb246ICBjb3VudHMgdGFibGUgMTEgKHdpdGggRXNjKSAKKyogcmV0dXJuczogICAgICAKKyogaW5wdXQ6ICAgICAgICBxdWFudGl6ZWQgc3BlY3RydW0KKyogb3V0cHV0OiAgICAgICBiaXRDb3VudCBmb3IgdGFibGVzIDExICh3aXRoIEVzYykKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgdm9pZCBjb3VudEVzYyhjb25zdCBXb3JkMTYgKnZhbHVlcywNCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgIHdpZHRoLA0KKyAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgICAgICAqYml0Q291bnQpDQorew0KKyAgV29yZDMyIHQwLHQxLHQwMCx0MDEsaTsNCisgIFdvcmQxNiBiYzExLGVjLHNjOyAgDQorDQorICBiYzExPTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgIHNjPTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgZWM9MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICBmb3IoaT0wO2k8d2lkdGg7aSs9Mil7DQorICAgIHQwPUFCUyh2YWx1ZXNbaSswXSk7DQorICAgIHQxPUFCUyh2YWx1ZXNbaSsxXSk7DQorICAgIA0KKyAgICAgICANCisgICAgc2MgPSBzYyArICh0MD4wKSArICh0MT4wKTsNCisNCisgICAgdDAwID0gbWluKHQwLDE2KTsNCisgICAgdDAxID0gbWluKHQxLDE2KTsNCisgICAgYmMxMSA9IGJjMTEgKyBodWZmX2x0YWIxMVt0MDBdW3QwMV07DQorICAgIA0KKyAgICAgDQorICAgIGlmKHQwID49IDE2KXsNCisgICAgICBlYyA9IGVjICsgNTsNCisgICAgICB3aGlsZShzdWIodDA9KHQwID4+IDEpLCAxNikgPj0gMCkgew0KKyAgICAgICAgZWMgPSBlYyArIDI7DQorICAgICAgfQ0KKyAgICB9DQorICAgIA0KKyAgICAgDQorICAgIGlmKHQxID49IDE2KXsNCisgICAgICBlYyA9IGVjICsgNTsNCisgICAgICB3aGlsZShzdWIodDE9KHQxID4+IDEpLCAxNikgPj0gMCkgew0KKyAgICAgICAgZWMgPSBlYyArIDI7DQorICAgICAgfQ0KKyAgICB9DQorICB9DQorICBiaXRDb3VudFsxXT1JTlZBTElEX0JJVENPVU5UOyAgICAgICAgICANCisgIGJpdENvdW50WzJdPUlOVkFMSURfQklUQ09VTlQ7ICAgICAgICAgIA0KKyAgYml0Q291bnRbM109SU5WQUxJRF9CSVRDT1VOVDsgICAgICAgICAgDQorICBiaXRDb3VudFs0XT1JTlZBTElEX0JJVENPVU5UOyAgICAgICAgICANCisgIGJpdENvdW50WzVdPUlOVkFMSURfQklUQ09VTlQ7ICAgICAgICAgIA0KKyAgYml0Q291bnRbNl09SU5WQUxJRF9CSVRDT1VOVDsgICAgICAgICAgDQorICBiaXRDb3VudFs3XT1JTlZBTElEX0JJVENPVU5UOyAgICAgICAgICANCisgIGJpdENvdW50WzhdPUlOVkFMSURfQklUQ09VTlQ7ICAgICAgICAgIA0KKyAgYml0Q291bnRbOV09SU5WQUxJRF9CSVRDT1VOVDsgICAgICAgICAgDQorICBiaXRDb3VudFsxMF09SU5WQUxJRF9CSVRDT1VOVDsgICAgICAgICANCisgIGJpdENvdW50WzExXT1iYzExICsgc2MgKyBlYzsNCit9CisKKwordHlwZWRlZiB2b2lkICgqQ09VTlRfRlVOQ1RJT04pKGNvbnN0IFdvcmQxNiAqdmFsdWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICAgICAgICpiaXRDb3VudCk7CisKK3N0YXRpYyBDT1VOVF9GVU5DVElPTiBjb3VudEZ1bmNUYWJsZVtDT0RFX0JPT0tfRVNDX0xBVisxXSA9CisgIHsKKworICAgIGNvdW50MV8yXzNfNF81XzZfN184XzlfMTBfMTEsICAvKiAwICAqLworICAgIGNvdW50MV8yXzNfNF81XzZfN184XzlfMTBfMTEsICAvKiAxICAqLworICAgIGNvdW50M180XzVfNl83XzhfOV8xMF8xMSwgICAgICAvKiAyICAqLworICAgIGNvdW50NV82XzdfOF85XzEwXzExLCAgICAgICAgICAvKiAzICAqLworICAgIGNvdW50NV82XzdfOF85XzEwXzExLCAgICAgICAgICAvKiA0ICAqLworICAgIGNvdW50N184XzlfMTBfMTEsICAgICAgICAgICAgICAvKiA1ICAqLworICAgIGNvdW50N184XzlfMTBfMTEsICAgICAgICAgICAgICAvKiA2ICAqLworICAgIGNvdW50N184XzlfMTBfMTEsICAgICAgICAgICAgICAvKiA3ICAqLworICAgIGNvdW50OV8xMF8xMSwgICAgICAgICAgICAgICAgICAvKiA4ICAqLworICAgIGNvdW50OV8xMF8xMSwgICAgICAgICAgICAgICAgICAvKiA5ICAqLworICAgIGNvdW50OV8xMF8xMSwgICAgICAgICAgICAgICAgICAvKiAxMCAqLworICAgIGNvdW50OV8xMF8xMSwgICAgICAgICAgICAgICAgICAvKiAxMSAqLworICAgIGNvdW50OV8xMF8xMSwgICAgICAgICAgICAgICAgICAvKiAxMiAqLworICAgIGNvdW50MTEsICAgICAgICAgICAgICAgICAgICAgICAvKiAxMyAqLworICAgIGNvdW50MTEsICAgICAgICAgICAgICAgICAgICAgICAvKiAxNCAqLworICAgIGNvdW50MTEsICAgICAgICAgICAgICAgICAgICAgICAvKiAxNSAqLworICAgIGNvdW50RXNjICAgICAgICAgICAgICAgICAgICAgICAvKiAxNiAqLworICB9OworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogYml0Q291bnQKKyogZGVzY3JpcHRpb246ICBjb3VudCBiaXRzIAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitXb3JkMTYgYml0Q291bnQoY29uc3QgV29yZDE2ICp2YWx1ZXMsCisgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICB3aWR0aCwKKyAgICAgICAgICAgICAgICBXb3JkMTYgICAgICAgIG1heFZhbCwKKyAgICAgICAgICAgICAgICBXb3JkMTYgICAgICAgKmJpdENvdW50KQoreworICAvKgorICAgIGNoZWNrIGlmIHdlIGNhbiB1c2UgY29kZWJvb2sgMAorICAqLworICAgICAKKyAgaWYobWF4VmFsID09IDApCisgICAgYml0Q291bnRbMF0gPSAwOworICBlbHNlCisgICAgYml0Q291bnRbMF0gPSBJTlZBTElEX0JJVENPVU5UOworCisgIG1heFZhbCA9IG1pbihtYXhWYWwsIENPREVfQk9PS19FU0NfTEFWKTsKKyAgY291bnRGdW5jVGFibGVbbWF4VmFsXSh2YWx1ZXMsd2lkdGgsYml0Q291bnQpOworCisgIHJldHVybigwKTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IGNvZGVWYWx1ZXMKKyogZGVzY3JpcHRpb246ICB3cml0ZSBodWZmdW0gYml0cyAKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworV29yZDE2IGNvZGVWYWx1ZXMoV29yZDE2ICp2YWx1ZXMsIFdvcmQxNiB3aWR0aCwgV29yZDE2IGNvZGVCb29rLCBIQU5ETEVfQklUX0JVRiBoQml0c3RyZWFtKQ0KK3sNCisNCisgIFdvcmQzMiBpLCB0MCwgdDEsIHQyLCB0MywgdDAwLCB0MDE7DQorICBXb3JkMTYgY29kZVdvcmQsIGNvZGVMZW5ndGg7DQorICBXb3JkMTYgc2lnbiwgc2lnbkxlbmd0aDsNCisNCisgICANCisgIHN3aXRjaCAoY29kZUJvb2spIHsNCisgICAgY2FzZSBDT0RFX0JPT0tfWkVST19OTzoNCisgICAgICBicmVhazsNCisNCisgICAgY2FzZSBDT0RFX0JPT0tfMV9OTzoNCisgICAgICBmb3IoaT0wOyBpPHdpZHRoOyBpKz00KSB7DQorICAgICAgICB0MCAgICAgICAgID0gdmFsdWVzW2krMF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgdDEgICAgICAgICA9IHZhbHVlc1tpKzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIHQyICAgICAgICAgPSB2YWx1ZXNbaSsyXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICB0MyAgICAgICAgID0gdmFsdWVzW2krM107ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgY29kZVdvcmQgICA9IGh1ZmZfY3RhYjFbdDArMV1bdDErMV1bdDIrMV1bdDMrMV07ICAgICAgICAgICAgICAgICANCisgICAgICAgIGNvZGVMZW5ndGggPSBISV9MVEFCKGh1ZmZfbHRhYjFfMlt0MCsxXVt0MSsxXVt0MisxXVt0MysxXSk7ICAgICAgDQorICAgICAgICBXcml0ZUJpdHMoaEJpdHN0cmVhbSwgY29kZVdvcmQsIGNvZGVMZW5ndGgpOyAgICAgICAgDQorICAgICAgfQ0KKyAgICAgIGJyZWFrOw0KKw0KKyAgICBjYXNlIENPREVfQk9PS18yX05POg0KKyAgICAgIGZvcihpPTA7IGk8d2lkdGg7IGkrPTQpIHsNCisgICAgICAgIHQwICAgICAgICAgPSB2YWx1ZXNbaSswXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICB0MSAgICAgICAgID0gdmFsdWVzW2krMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgdDIgICAgICAgICA9IHZhbHVlc1tpKzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIHQzICAgICAgICAgPSB2YWx1ZXNbaSszXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICBjb2RlV29yZCAgID0gaHVmZl9jdGFiMlt0MCsxXVt0MSsxXVt0MisxXVt0MysxXTsgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgY29kZUxlbmd0aCA9IExPX0xUQUIoaHVmZl9sdGFiMV8yW3QwKzFdW3QxKzFdW3QyKzFdW3QzKzFdKTsgICAgICANCisgICAgICAgIFdyaXRlQml0cyhoQml0c3RyZWFtLGNvZGVXb3JkLGNvZGVMZW5ndGgpOw0KKyAgICAgIH0NCisgICAgICBicmVhazsNCisNCisgICAgY2FzZSBDT0RFX0JPT0tfM19OTzoNCisgICAgICBmb3IoaT0wOyBpPHdpZHRoOyBpKz00KSB7DQorICAgICAgICBzaWduPTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgc2lnbkxlbmd0aD0wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIHQwID0gdmFsdWVzW2krMF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgDQorICAgICAgICBpZih0MCAhPSAwKXsNCisgICAgICAgICAgc2lnbkxlbmd0aCA9IHNpZ25MZW5ndGggKyAxOw0KKyAgICAgICAgICBzaWduID0gc2lnbiA8PCAxOyANCisgICAgICAgICAgIA0KKyAgICAgICAgICBpZih0MCA8IDApew0KKyAgICAgICAgICAgIHNpZ258PTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICB0MD0tdDA7DQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIHQxID0gdmFsdWVzW2krMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgDQorICAgICAgICBpZih0MSAhPSAwKXsNCisgICAgICAgICAgc2lnbkxlbmd0aCA9IHNpZ25MZW5ndGggKyAxOw0KKyAgICAgICAgICBzaWduID0gc2lnbiA8PCAxOyANCisgICAgICAgICAgIA0KKyAgICAgICAgICBpZih0MSA8IDApew0KKyAgICAgICAgICAgIHNpZ258PTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICB0MT0tdDE7DQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIHQyID0gdmFsdWVzW2krMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgDQorICAgICAgICBpZih0MiAhPSAwKXsNCisgICAgICAgICAgc2lnbkxlbmd0aCA9IHNpZ25MZW5ndGggKyAxOw0KKyAgICAgICAgICBzaWduID0gc2lnbiA8PCAxOyANCisgICAgICAgICAgIA0KKyAgICAgICAgICBpZih0MiA8IDApew0KKyAgICAgICAgICAgIHNpZ258PTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICB0Mj0tdDI7DQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIHQzID0gdmFsdWVzW2krM107ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICBpZih0MyAhPSAwKXsNCisgICAgICAgICAgc2lnbkxlbmd0aCA9IHNpZ25MZW5ndGggKyAxOw0KKyAgICAgICAgICBzaWduID0gc2lnbiA8PCAxOyANCisgICAgICAgICAgIA0KKyAgICAgICAgICBpZih0MyA8IDApew0KKyAgICAgICAgICAgIHNpZ258PTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICB0Mz0tdDM7DQorICAgICAgICAgIH0NCisgICAgICAgIH0NCisNCisgICAgICAgIGNvZGVXb3JkICAgPSBodWZmX2N0YWIzW3QwXVt0MV1bdDJdW3QzXTsgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICBjb2RlTGVuZ3RoID0gSElfTFRBQihodWZmX2x0YWIzXzRbdDBdW3QxXVt0Ml1bdDNdKTsgICAgICAgICAgICAgIA0KKyAgICAgICAgV3JpdGVCaXRzKGhCaXRzdHJlYW0sY29kZVdvcmQsY29kZUxlbmd0aCk7DQorICAgICAgICBXcml0ZUJpdHMoaEJpdHN0cmVhbSxzaWduLHNpZ25MZW5ndGgpOw0KKyAgICAgIH0NCisgICAgICBicmVhazsNCisNCisgICAgY2FzZSBDT0RFX0JPT0tfNF9OTzoNCisgICAgICBmb3IoaT0wOyBpPHdpZHRoOyBpKz00KSB7DQorICAgICAgICBzaWduPTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgc2lnbkxlbmd0aD0wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIHQwID0gdmFsdWVzW2krMF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgDQorICAgICAgICBpZih0MCAhPSAwKXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgIHNpZ25MZW5ndGggPSBzaWduTGVuZ3RoICsgMTsNCisgICAgICAgICAgc2lnbiA9IHNpZ24gPDwgMTsgDQorICAgICAgICAgIGlmKHQwIDwgMCl7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgc2lnbnw9MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgIHQwPS10MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgIH0NCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIHQxID0gdmFsdWVzW2krMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgDQorICAgICAgICBpZih0MSAhPSAwKXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgIHNpZ25MZW5ndGggPSBzaWduTGVuZ3RoICsgMTsNCisgICAgICAgICAgc2lnbiA9IHNpZ24gPDwgMTsgDQorICAgICAgICAgICANCisgICAgICAgICAgaWYodDEgPCAwKXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICBzaWdufD0xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgdDE9LXQxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIHQyID0gdmFsdWVzW2krMl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgDQorICAgICAgICBpZih0MiAhPSAwKXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgIHNpZ25MZW5ndGggPSBzaWduTGVuZ3RoICsgMTsNCisgICAgICAgICAgc2lnbiA9IHNpZ24gPDwgMTsgDQorICAgICAgICAgICANCisgICAgICAgICAgaWYodDIgPCAwKXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICBzaWdufD0xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgdDI9LXQyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIHQzID0gdmFsdWVzW2krM107ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgDQorICAgICAgICBpZih0MyAhPSAwKXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgIHNpZ25MZW5ndGggPSBzaWduTGVuZ3RoICsgMTsNCisgICAgICAgICAgc2lnbiA9IHNpZ24gPDwgMTsgDQorICAgICAgICAgICANCisgICAgICAgICAgaWYodDMgPCAwKXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICBzaWdufD0xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgdDM9LXQzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIGNvZGVXb3JkICAgPSBodWZmX2N0YWI0W3QwXVt0MV1bdDJdW3QzXTsgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICBjb2RlTGVuZ3RoID0gTE9fTFRBQihodWZmX2x0YWIzXzRbdDBdW3QxXVt0Ml1bdDNdKTsgICAgICAgICAgICAgIA0KKyAgICAgICAgV3JpdGVCaXRzKGhCaXRzdHJlYW0sY29kZVdvcmQsY29kZUxlbmd0aCk7ICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgV3JpdGVCaXRzKGhCaXRzdHJlYW0sc2lnbixzaWduTGVuZ3RoKTsgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgIGJyZWFrOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICBjYXNlIENPREVfQk9PS181X05POiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgIGZvcihpPTA7IGk8d2lkdGg7IGkrPTIpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgdDAgICAgICAgICA9IHZhbHVlc1tpKzBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICB0MSAgICAgICAgID0gdmFsdWVzW2krMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgY29kZVdvcmQgICA9IGh1ZmZfY3RhYjVbdDArNF1bdDErNF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIGNvZGVMZW5ndGggPSBISV9MVEFCKGh1ZmZfbHRhYjVfNlt0MCs0XVt0MSs0XSk7ICAgICAgICAgICAgICAgICAgDQorICAgICAgICBXcml0ZUJpdHMoaEJpdHN0cmVhbSxjb2RlV29yZCxjb2RlTGVuZ3RoKTsNCisgICAgICB9DQorICAgICAgYnJlYWs7DQorDQorICAgIGNhc2UgQ09ERV9CT09LXzZfTk86DQorICAgICAgZm9yKGk9MDsgaTx3aWR0aDsgaSs9Mikgew0KKyAgICAgICAgdDAgICAgICAgICA9IHZhbHVlc1tpKzBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIHQxICAgICAgICAgPSB2YWx1ZXNbaSsxXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICBjb2RlV29yZCAgID0gaHVmZl9jdGFiNlt0MCs0XVt0MSs0XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgY29kZUxlbmd0aCA9IExPX0xUQUIoaHVmZl9sdGFiNV82W3QwKzRdW3QxKzRdKTsgICAgICAgICAgICAgICAgICANCisgICAgICAgIFdyaXRlQml0cyhoQml0c3RyZWFtLGNvZGVXb3JkLGNvZGVMZW5ndGgpOw0KKyAgICAgIH0NCisgICAgICBicmVhazsNCisNCisgICAgY2FzZSBDT0RFX0JPT0tfN19OTzoNCisgICAgICBmb3IoaT0wOyBpPHdpZHRoOyBpKz0yKXsNCisgICAgICAgIHNpZ249MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICBzaWduTGVuZ3RoPTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgdDAgPSB2YWx1ZXNbaSswXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICANCisgICAgICAgIGlmKHQwICE9IDApew0KKyAgICAgICAgICBzaWduTGVuZ3RoID0gc2lnbkxlbmd0aCArIDE7DQorICAgICAgICAgIHNpZ24gPSBzaWduIDw8IDE7IA0KKyAgICAgICAgICAgDQorICAgICAgICAgIGlmKHQwIDwgMCl7DQorICAgICAgICAgICAgc2lnbnw9MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgIHQwPS10MDsNCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgdDEgPSB2YWx1ZXNbaSsxXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICANCisgICAgICAgIGlmKHQxICE9IDApew0KKyAgICAgICAgICBzaWduTGVuZ3RoID0gc2lnbkxlbmd0aCArIDE7DQorICAgICAgICAgIHNpZ24gPSBzaWduIDw8IDE7IA0KKyAgICAgICAgICAgDQorICAgICAgICAgIGlmKHQxIDwgMCl7DQorICAgICAgICAgICAgc2lnbnw9MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgIHQxPS10MTsNCisgICAgICAgICAgfQ0KKyAgICAgICAgfQ0KKyAgICAgICAgY29kZVdvcmQgICA9IGh1ZmZfY3RhYjdbdDBdW3QxXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIGNvZGVMZW5ndGggPSBISV9MVEFCKGh1ZmZfbHRhYjdfOFt0MF1bdDFdKTsgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICBXcml0ZUJpdHMoaEJpdHN0cmVhbSxjb2RlV29yZCxjb2RlTGVuZ3RoKTsNCisgICAgICAgIFdyaXRlQml0cyhoQml0c3RyZWFtLHNpZ24sc2lnbkxlbmd0aCk7DQorICAgICAgfQ0KKyAgICAgIGJyZWFrOw0KKw0KKyAgICBjYXNlIENPREVfQk9PS184X05POg0KKyAgICAgIGZvcihpPTA7IGk8d2lkdGg7IGkrPTIpIHsNCisgICAgICAgIHNpZ249MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICBzaWduTGVuZ3RoPTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgdDAgPSB2YWx1ZXNbaSswXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIGlmKHQwICE9IDApeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgc2lnbkxlbmd0aCA9IHNpZ25MZW5ndGggKyAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICBzaWduID0gc2lnbiA8PCAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICBpZih0MCA8IDApeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgIHNpZ258PTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICB0MD0tdDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIHQxID0gdmFsdWVzW2krMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICBpZih0MSAhPSAwKXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgIHNpZ25MZW5ndGggPSBzaWduTGVuZ3RoICsgMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgc2lnbiA9IHNpZ24gPDwgMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgaWYodDEgPCAwKXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICBzaWdufD0xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgdDE9LXQxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICBjb2RlV29yZCAgID0gaHVmZl9jdGFiOFt0MF1bdDFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgY29kZUxlbmd0aCA9IExPX0xUQUIoaHVmZl9sdGFiN184W3QwXVt0MV0pOyAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIFdyaXRlQml0cyhoQml0c3RyZWFtLGNvZGVXb3JkLGNvZGVMZW5ndGgpOw0KKyAgICAgICAgV3JpdGVCaXRzKGhCaXRzdHJlYW0sc2lnbixzaWduTGVuZ3RoKTsNCisgICAgICB9DQorICAgICAgYnJlYWs7DQorDQorICAgIGNhc2UgQ09ERV9CT09LXzlfTk86DQorICAgICAgZm9yKGk9MDsgaTx3aWR0aDsgaSs9Mikgew0KKyAgICAgICAgc2lnbj0wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIHNpZ25MZW5ndGg9MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICB0MCA9IHZhbHVlc1tpKzBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgaWYodDAgIT0gMCl7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICBzaWduTGVuZ3RoID0gc2lnbkxlbmd0aCArIDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgIHNpZ24gPSBzaWduIDw8IDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgIGlmKHQwIDwgMCl7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgc2lnbnw9MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgIHQwPS10MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgdDEgPSB2YWx1ZXNbaSsxXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIGlmKHQxICE9IDApeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgc2lnbkxlbmd0aCA9IHNpZ25MZW5ndGggKyAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICBzaWduID0gc2lnbiA8PCAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICBpZih0MSA8IDApeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgIHNpZ258PTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICB0MT0tdDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIGNvZGVXb3JkICAgPSBodWZmX2N0YWI5W3QwXVt0MV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICBjb2RlTGVuZ3RoID0gSElfTFRBQihodWZmX2x0YWI5XzEwW3QwXVt0MV0pOyAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgV3JpdGVCaXRzKGhCaXRzdHJlYW0sY29kZVdvcmQsY29kZUxlbmd0aCk7DQorICAgICAgICBXcml0ZUJpdHMoaEJpdHN0cmVhbSxzaWduLHNpZ25MZW5ndGgpOw0KKyAgICAgIH0NCisgICAgICBicmVhazsNCisNCisgICAgY2FzZSBDT0RFX0JPT0tfMTBfTk86DQorICAgICAgZm9yKGk9MDsgaTx3aWR0aDsgaSs9Mikgew0KKyAgICAgICAgc2lnbj0wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIHNpZ25MZW5ndGg9MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICB0MCA9IHZhbHVlc1tpKzBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgaWYodDAgIT0gMCl7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICBzaWduTGVuZ3RoID0gc2lnbkxlbmd0aCArIDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgIHNpZ24gPSBzaWduIDw8IDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgIGlmKHQwIDwgMCl7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgc2lnbnw9MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgIHQwPS10MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgdDEgPSB2YWx1ZXNbaSsxXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIGlmKHQxICE9IDApeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgc2lnbkxlbmd0aCA9IHNpZ25MZW5ndGggKyAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICBzaWduID0gc2lnbiA8PCAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICBpZih0MSA8IDApeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgIHNpZ258PTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICB0MT0tdDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIGNvZGVXb3JkICAgPSBodWZmX2N0YWIxMFt0MF1bdDFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICBjb2RlTGVuZ3RoID0gTE9fTFRBQihodWZmX2x0YWI5XzEwW3QwXVt0MV0pOyAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgV3JpdGVCaXRzKGhCaXRzdHJlYW0sY29kZVdvcmQsY29kZUxlbmd0aCk7DQorICAgICAgICBXcml0ZUJpdHMoaEJpdHN0cmVhbSxzaWduLHNpZ25MZW5ndGgpOw0KKyAgICAgIH0NCisgICAgICBicmVhazsNCisNCisgICAgY2FzZSBDT0RFX0JPT0tfRVNDX05POg0KKyAgICAgIGZvcihpPTA7IGk8d2lkdGg7IGkrPTIpIHsNCisgICAgICAgIHNpZ249MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgc2lnbkxlbmd0aD0wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICB0MCA9IHZhbHVlc1tpKzBdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICBpZih0MCAhPSAwKXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICBzaWduTGVuZ3RoID0gc2lnbkxlbmd0aCArIDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICBzaWduID0gc2lnbiA8PCAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgIGlmKHQwIDwgMCl7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgIHNpZ258PTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgdDA9LXQwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgdDEgPSB2YWx1ZXNbaSsxXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgaWYodDEgIT0gMCl7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgc2lnbkxlbmd0aCA9IHNpZ25MZW5ndGggKyAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgc2lnbiA9IHNpZ24gPDwgMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICBpZih0MSA8IDApeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICBzaWdufD0xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgIHQxPS10MTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgdDAwID0gbWluKHQwLDE2KTsNCisgICAgICAgIHQwMSA9IG1pbih0MSwxNik7DQorDQorICAgICAgICBjb2RlV29yZCAgID0gaHVmZl9jdGFiMTFbdDAwXVt0MDFdOyAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgIGNvZGVMZW5ndGggPSBodWZmX2x0YWIxMVt0MDBdW3QwMV07ICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgV3JpdGVCaXRzKGhCaXRzdHJlYW0sY29kZVdvcmQsY29kZUxlbmd0aCk7DQorICAgICAgICBXcml0ZUJpdHMoaEJpdHN0cmVhbSxzaWduLHNpZ25MZW5ndGgpOw0KKyAgICAgICAgIA0KKyAgICAgICAgaWYodDAgPj0gMTYpew0KKyAgICAgICAgICBXb3JkMTYgbiwgcDsNCisgICAgICAgICAgbj0wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICBwPXQwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgIHdoaWxlKHN1YihwPShwID4+IDEpLCAxNikgPj0gMCl7DQorICAgICAgICAgICAgIA0KKyAgICAgICAgICAgIFdyaXRlQml0cyhoQml0c3RyZWFtLDEsMSk7DQorICAgICAgICAgICAgbiA9IG4gKyAxOw0KKyAgICAgICAgICB9DQorICAgICAgICAgIFdyaXRlQml0cyhoQml0c3RyZWFtLDAsMSk7DQorICAgICAgICAgIG4gPSBuICsgNDsNCisgICAgICAgICAgV3JpdGVCaXRzKGhCaXRzdHJlYW0sKHQwIC0gKDEgPDwgbikpLG4pOw0KKyAgICAgICAgfQ0KKyAgICAgICAgIA0KKyAgICAgICAgaWYodDEgPj0gMTYpew0KKyAgICAgICAgICBXb3JkMTYgbiwgcDsNCisgICAgICAgICAgbj0wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICBwPXQxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgIHdoaWxlKHN1YihwPShwID4+IDEpLCAxNikgPj0gMCl7DQorICAgICAgICAgICAgIA0KKyAgICAgICAgICAgIFdyaXRlQml0cyhoQml0c3RyZWFtLDEsMSk7DQorICAgICAgICAgICAgbiA9IG4gKyAxOw0KKyAgICAgICAgICB9DQorICAgICAgICAgIFdyaXRlQml0cyhoQml0c3RyZWFtLDAsMSk7DQorICAgICAgICAgIG4gPSBuICsgNDsNCisgICAgICAgICAgV3JpdGVCaXRzKGhCaXRzdHJlYW0sKHQxIC0gKDEgPDwgbikpLG4pOw0KKyAgICAgICAgfQ0KKyAgICAgIH0NCisgICAgICBicmVhazsNCisNCisgICAgZGVmYXVsdDoNCisgICAgICBicmVhazsNCisgIH0NCisgIHJldHVybigwKTsNCit9CisKK1dvcmQxNiBiaXRDb3VudFNjYWxlZmFjdG9yRGVsdGEoV29yZDE2IGRlbHRhKQoreworICByZXR1cm4oaHVmZl9sdGFic2NmW2RlbHRhK0NPREVfQk9PS19TQ0ZfTEFWXSk7Cit9CisKK1dvcmQxNiBjb2RlU2NhbGVmYWN0b3JEZWx0YShXb3JkMTYgZGVsdGEsIEhBTkRMRV9CSVRfQlVGIGhCaXRzdHJlYW0pCit7CisgIFdvcmQzMiBjb2RlV29yZDsgCisgIFdvcmQxNiBjb2RlTGVuZ3RoOworICAKKyAgIAorICBpZihkZWx0YSA+IENPREVfQk9PS19TQ0ZfTEFWIHx8IGRlbHRhIDwgLUNPREVfQk9PS19TQ0ZfTEFWKQorICAgIHJldHVybigxKTsKKyAgCisgIGNvZGVXb3JkICAgPSBodWZmX2N0YWJzY2ZbZGVsdGEgKyBDT0RFX0JPT0tfU0NGX0xBVl07ICAgICAgICAgICAgCisgIGNvZGVMZW5ndGggPSBodWZmX2x0YWJzY2ZbZGVsdGEgKyBDT0RFX0JPT0tfU0NGX0xBVl07ICAgICAgICAgICAgCisgIFdyaXRlQml0cyhoQml0c3RyZWFtLGNvZGVXb3JkLGNvZGVMZW5ndGgpOworICByZXR1cm4oMCk7Cit9CmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9iaXRidWZmZXIuYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL2JpdGJ1ZmZlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyNDhmMGIKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9iaXRidWZmZXIuYwpAQCAtMCwwICsxLDE3MiBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJYml0YnVmZmVyLmMNCisNCisJQ29udGVudDoJQml0IEJ1ZmZlciBNYW5hZ2VtZW50IGZ1bmN0aW9ucw0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpbmNsdWRlICJiaXRidWZmZXIuaCIKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IHVwZGF0ZUJpdEJ1ZldvcmRQdHIKKyogZGVzY3JpcHRpb246ICB1cGRhdGUgQml0IEJ1ZmZlciBwb2ludGVyCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyB2b2lkIHVwZGF0ZUJpdEJ1ZldvcmRQdHIoSEFORExFX0JJVF9CVUYgaEJpdEJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVdvcmQ4ICoqcEJpdEJ1ZldvcmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgIGNudCkKK3sKKyAgKnBCaXRCdWZXb3JkICs9IGNudDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBpZigqcEJpdEJ1ZldvcmQgPiBoQml0QnVmLT5wQml0QnVmRW5kKSB7CisgICAgKnBCaXRCdWZXb3JkIC09IChoQml0QnVmLT5wQml0QnVmRW5kIC0gaEJpdEJ1Zi0+cEJpdEJ1ZkJhc2UgKyAxKTsgICAgICAgICAgICAgICAgICAgCisgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgaWYoKnBCaXRCdWZXb3JkIDwgaEJpdEJ1Zi0+cEJpdEJ1ZkJhc2UpIHsKKyAgICAqcEJpdEJ1ZldvcmQgKz0gKGhCaXRCdWYtPnBCaXRCdWZFbmQgLSBoQml0QnVmLT5wQml0QnVmQmFzZSArIDEpOyAgICAgICAgICAgICAgICAgICAKKyAgfQorfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBDcmVhdGVCaXRCdWZmZXIKKyogZGVzY3JpcHRpb246ICBjcmVhdGUgYW5kIGluaXQgQml0IEJ1ZmZlciBNYW5hZ2VtZW50CisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK0hBTkRMRV9CSVRfQlVGIENyZWF0ZUJpdEJ1ZmZlcihIQU5ETEVfQklUX0JVRiBoQml0QnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVXb3JkOCAqcEJpdEJ1ZkJhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICBiaXRCdWZTaXplKQoreworICBhc3NlcnQoYml0QnVmU2l6ZSo4IDw9IDMyNzY4KTsKKworICBoQml0QnVmLT5wQml0QnVmQmFzZSA9IHBCaXRCdWZCYXNlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgaEJpdEJ1Zi0+cEJpdEJ1ZkVuZCAgPSBwQml0QnVmQmFzZSArIGJpdEJ1ZlNpemUgLSAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICBoQml0QnVmLT5wV3JpdGVOZXh0ICA9IHBCaXRCdWZCYXNlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICBoQml0QnVmLT5jYWNoZSAgICAgICA9IDA7CisgIAorICBoQml0QnVmLT53Qml0UG9zICAgICA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgaEJpdEJ1Zi0+Y250Qml0cyAgICAgPSAwOyAgIAorICAKKyAgaEJpdEJ1Zi0+c2l6ZSAgICAgICAgPSAoYml0QnVmU2l6ZSA8PCAzKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgaEJpdEJ1Zi0+aXNWYWxpZCAgICAgPSAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgcmV0dXJuIGhCaXRCdWY7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBEZWxldGVCaXRCdWZmZXIKKyogZGVzY3JpcHRpb246ICB1bmluaXQgQml0IEJ1ZmZlciBNYW5hZ2VtZW50CisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3ZvaWQgRGVsZXRlQml0QnVmZmVyKEhBTkRMRV9CSVRfQlVGICpoQml0QnVmKQoreworICBpZigqaEJpdEJ1ZikNCisJKCpoQml0QnVmKS0+aXNWYWxpZCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICpoQml0QnVmID0gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogUmVzZXRCaXRCdWYKKyogZGVzY3JpcHRpb246ICByZXNldCBCaXQgQnVmZmVyIE1hbmFnZW1lbnQKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordm9pZCBSZXNldEJpdEJ1ZihIQU5ETEVfQklUX0JVRiBoQml0QnVmLAorICAgICAgICAgICAgICAgICBVV29yZDggKnBCaXRCdWZCYXNlLAorICAgICAgICAgICAgICAgICBXb3JkMTYgIGJpdEJ1ZlNpemUpCit7CisgIGhCaXRCdWYtPnBCaXRCdWZCYXNlID0gcEJpdEJ1ZkJhc2U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBoQml0QnVmLT5wQml0QnVmRW5kICA9IHBCaXRCdWZCYXNlICsgYml0QnVmU2l6ZSAtIDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIGhCaXRCdWYtPnBXcml0ZU5leHQgID0gcEJpdEJ1ZkJhc2U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgIGhCaXRCdWYtPndCaXRQb3MgICAgID0gMDsgICAgCisgIGhCaXRCdWYtPmNudEJpdHMgICAgID0gMDsgICAgCisgIAorICBoQml0QnVmLT5jYWNoZQkgICA9IDA7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBDb3B5Qml0QnVmCisqIGRlc2NyaXB0aW9uOiAgY29weSBCaXQgQnVmZmVyIE1hbmFnZW1lbnQKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordm9pZCBDb3B5Qml0QnVmKEhBTkRMRV9CSVRfQlVGIGhCaXRCdWZTcmMsCisgICAgICAgICAgICAgICAgSEFORExFX0JJVF9CVUYgaEJpdEJ1ZkRzdCkKK3sKKyAgKmhCaXRCdWZEc3QgPSAqaEJpdEJ1ZlNyYzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBHZXRCaXRzQXZhaWwKKyogZGVzY3JpcHRpb246ICBnZXQgYXZhaWxhYmxlIGJpdHMKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworV29yZDE2IEdldEJpdHNBdmFpbChIQU5ETEVfQklUX0JVRiBoQml0QnVmKQoreworICByZXR1cm4gaEJpdEJ1Zi0+Y250Qml0czsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IFdyaXRlQml0cworKiBkZXNjcmlwdGlvbjogIHdyaXRlIGJpdHMgdG8gdGhlIGJ1ZmZlcgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitXb3JkMTYgV3JpdGVCaXRzKEhBTkRMRV9CSVRfQlVGIGhCaXRCdWYsCisgICAgICAgICAgICAgICAgIFdvcmQzMiB3cml0ZVZhbHVlLAorICAgICAgICAgICAgICAgICBXb3JkMTYgbm9CaXRzVG9Xcml0ZSkKK3sKKyAgV29yZDE2IHdCaXRQb3M7CisKKyAgYXNzZXJ0KG5vQml0c1RvV3JpdGUgPD0gKFdvcmQxNilzaXplb2YoV29yZDMyKSo4KTsKKworICBpZihub0JpdHNUb1dyaXRlID09IDApCisJICByZXR1cm4gbm9CaXRzVG9Xcml0ZTsKKworICBoQml0QnVmLT5jbnRCaXRzICs9IG5vQml0c1RvV3JpdGU7ICAgCisKKyAgd0JpdFBvcyA9IGhCaXRCdWYtPndCaXRQb3M7CisgIHdCaXRQb3MgKz0gbm9CaXRzVG9Xcml0ZTsKKyAgd3JpdGVWYWx1ZSA8PD0gMzIgLSB3Qml0UG9zOwkKKyAgd3JpdGVWYWx1ZSB8PSBoQml0QnVmLT5jYWNoZTsKKyAgCisgIHdoaWxlICh3Qml0UG9zID49IDgpIAorICB7CisJICBVV29yZDggdG1wOworCSAgdG1wID0gKFVXb3JkOCkoKHdyaXRlVmFsdWUgPj4gMjQpICYgMHhGRik7CisJICAKKwkgICpoQml0QnVmLT5wV3JpdGVOZXh0KysgPSB0bXA7CQkKKwkgIHdyaXRlVmFsdWUgPDw9IDg7CisJICB3Qml0UG9zIC09IDg7CisgIH0KKyAgCisgIGhCaXRCdWYtPndCaXRQb3MgPSB3Qml0UG9zOworICBoQml0QnVmLT5jYWNoZSA9IHdyaXRlVmFsdWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIHJldHVybiBub0JpdHNUb1dyaXRlOworfQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvYml0ZW5jLmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9iaXRlbmMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODhjMmRhMQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL2JpdGVuYy5jCkBAIC0wLDAgKzEsNjkwIEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorCUZpbGU6CQliaXRlbmMuYw0KKw0KKwlDb250ZW50OglCaXRzdHJlYW0gZW5jb2RlciBmdW5jdGlvbnMNCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaW5jbHVkZSAiYml0ZW5jLmgiCisjaW5jbHVkZSAiYml0X2NudC5oIgorI2luY2x1ZGUgImR5bl9iaXRzLmgiCisjaW5jbHVkZSAicWNfZGF0YS5oIgorI2luY2x1ZGUgImludGVyZmFjZS5oIgorCisKK3N0YXRpYyBjb25zdCAgV29yZDE2IGdsb2JhbEdhaW5PZmZzZXQgPSAxMDA7CitzdGF0aWMgY29uc3QgIFdvcmQxNiBpY3NSZXNlcnZlZEJpdCAgID0gMDsKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogZW5jb2RlU3BlY3RyYWxEYXRhCisqIGRlc2NyaXB0aW9uOiAgZW5jb2RlIHNwZWN0cmFsIGRhdGEKKyogcmV0dXJuczogICAgICBzcGVjdHJhbCBiaXRzIHVzZWQKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIFdvcmQzMiBlbmNvZGVTcGVjdHJhbERhdGEoV29yZDE2ICAgICAgICAgICAgICpzZmJPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTRUNUSU9OX0RBVEEgICAgICAgKnNlY3Rpb25EYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICAgICAgICAgICAgICpxdWFudFNwZWN0cnVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFX0JJVF9CVUYgICAgICBoQml0U3RyZWFtKQoreworICBXb3JkMTYgaSxzZmI7CisgIFdvcmQxNiBkYmdWYWw7CisgIFNFQ1RJT05fSU5GTyogcHNlY3Rpb25pbmZvOworICBkYmdWYWwgPSBHZXRCaXRzQXZhaWwoaEJpdFN0cmVhbSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgIGZvcihpPTA7IGk8c2VjdGlvbkRhdGEtPm5vT2ZTZWN0aW9uczsgaSsrKSB7CisgICAgcHNlY3Rpb25pbmZvID0gJihzZWN0aW9uRGF0YS0+c2VjdGlvbkluZm9baV0pOw0KKwkvKgorICAgICAgIGh1ZmZlbmNvZGUgc3BlY3RyYWwgZGF0YSBmb3IgdGhpcyBzZWN0aW9uCisgICAgKi8KKyAgICBmb3Ioc2ZiPXBzZWN0aW9uaW5mby0+c2ZiU3RhcnQ7CisgICAgICAgIHNmYjxwc2VjdGlvbmluZm8tPnNmYlN0YXJ0K3BzZWN0aW9uaW5mby0+c2ZiQ250OworICAgICAgICBzZmIrKykgeworICAgICAgY29kZVZhbHVlcyhxdWFudFNwZWN0cnVtK3NmYk9mZnNldFtzZmJdLAorICAgICAgICAgICAgICAgICBzZmJPZmZzZXRbc2ZiKzFdIC0gc2ZiT2Zmc2V0W3NmYl0sCisgICAgICAgICAgICAgICAgIHBzZWN0aW9uaW5mby0+Y29kZUJvb2ssCisgICAgICAgICAgICAgICAgIGhCaXRTdHJlYW0pOworICAgIH0KKyAgfQorCisgIHJldHVybihHZXRCaXRzQXZhaWwoaEJpdFN0cmVhbSktZGJnVmFsKTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6ZW5jb2RlR2xvYmFsR2FpbgorKiBkZXNjcmlwdGlvbjogZW5jb2RlcyBHbG9iYWwgR2FpbiAoY29tbW9uIHNjYWxlIGZhY3RvcikKKyogcmV0dXJuczogICAgIG5vbmUKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIHZvaWQgZW5jb2RlR2xvYmFsR2FpbihXb3JkMTYgZ2xvYmFsR2FpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IGxvZ05vcm0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiBzY2FsZWZhYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFX0JJVF9CVUYgaEJpdFN0cmVhbSkKK3sKKyAgV3JpdGVCaXRzKGhCaXRTdHJlYW0sICgoZ2xvYmFsR2FpbiAtIHNjYWxlZmFjKSArIGdsb2JhbEdhaW5PZmZzZXQtKGxvZ05vcm0gPDwgMikpLCA4KTsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTplbmNvZGVJY3NJbmZvCisqIGRlc2NyaXB0aW9uOiBlbmNvZGVzIEljcyBJbmZvCisqIHJldHVybnM6ICAgICBub25lCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RhdGljIHZvaWQgZW5jb2RlSWNzSW5mbyhXb3JkMTYgYmxvY2tUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgd2luZG93U2hhcGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiBncm91cGluZ01hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgIFNFQ1RJT05fREFUQSAqc2VjdGlvbkRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRV9CSVRfQlVGICBoQml0U3RyZWFtKQoreworICBXcml0ZUJpdHMoaEJpdFN0cmVhbSxpY3NSZXNlcnZlZEJpdCwxKTsKKyAgV3JpdGVCaXRzKGhCaXRTdHJlYW0sYmxvY2tUeXBlLDIpOworICBXcml0ZUJpdHMoaEJpdFN0cmVhbSx3aW5kb3dTaGFwZSwxKTsKKworICAgCisgIHN3aXRjaChibG9ja1R5cGUpeworICAgIGNhc2UgTE9OR19XSU5ET1c6CisgICAgY2FzZSBTVEFSVF9XSU5ET1c6CisgICAgY2FzZSBTVE9QX1dJTkRPVzoKKyAgICAgIFdyaXRlQml0cyhoQml0U3RyZWFtLHNlY3Rpb25EYXRhLT5tYXhTZmJQZXJHcm91cCw2KTsKKworICAgICAgLyogTm8gcHJlZGljdG9yIGRhdGEgcHJlc2VudCAqLworICAgICAgV3JpdGVCaXRzKGhCaXRTdHJlYW0sIDAsIDEpOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFNIT1JUX1dJTkRPVzoKKyAgICAgIFdyaXRlQml0cyhoQml0U3RyZWFtLHNlY3Rpb25EYXRhLT5tYXhTZmJQZXJHcm91cCw0KTsKKworICAgICAgLyoKKyAgICAgIFdyaXRlIGdyb3VwaW5nIGJpdHMKKyAgICAgICovCisgICAgICBXcml0ZUJpdHMoaEJpdFN0cmVhbSxncm91cGluZ01hc2ssVFJBTlNfRkFDLTEpOworICAgICAgYnJlYWs7CisgIH0KK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IGVuY29kZVNlY3Rpb25EYXRhCisqIGRlc2NyaXB0aW9uOiAgZW5jb2RlIHNlY3Rpb24gZGF0YSAoY29tbW9uIEh1ZmZtYW4gY29kZWJvb2tzIGZvciBhZGphY2VudAorKiAgICAgICAgICAgICAgIFNGQidzKQorKiByZXR1cm5zOiAgICAgIG5vbmUKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIFdvcmQzMiBlbmNvZGVTZWN0aW9uRGF0YShTRUNUSU9OX0RBVEEgKnNlY3Rpb25EYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVfQklUX0JVRiBoQml0U3RyZWFtKQoreworICBXb3JkMTYgc2VjdEVzY2FwZVZhbD0wLHNlY3RMZW5CaXRzPTA7CisgIFdvcmQxNiBzZWN0TGVuOworICBXb3JkMTYgaTsKKyAgV29yZDE2IGRiZ1ZhbD1HZXRCaXRzQXZhaWwoaEJpdFN0cmVhbSk7CisgICAgICAgCisKKyAgIAorICBzd2l0Y2goc2VjdGlvbkRhdGEtPmJsb2NrVHlwZSkKKyAgeworICAgIGNhc2UgTE9OR19XSU5ET1c6CisgICAgY2FzZSBTVEFSVF9XSU5ET1c6CisgICAgY2FzZSBTVE9QX1dJTkRPVzoKKyAgICAgIHNlY3RFc2NhcGVWYWwgPSBTRUNUX0VTQ19WQUxfTE9ORzsgICAgICAgICAgICAgICAgIAorICAgICAgc2VjdExlbkJpdHMgICA9IFNFQ1RfQklUU19MT05HOyAgICAgICAgICAgICAgICAgICAgCisgICAgICBicmVhazsKKworICAgIGNhc2UgU0hPUlRfV0lORE9XOgorICAgICAgc2VjdEVzY2FwZVZhbCA9IFNFQ1RfRVNDX1ZBTF9TSE9SVDsgICAgICAgICAgICAgICAgCisgICAgICBzZWN0TGVuQml0cyAgID0gU0VDVF9CSVRTX1NIT1JUOyAgICAgICAgICAgICAgICAgICAKKyAgICAgIGJyZWFrOworICB9CisKKyAgZm9yKGk9MDtpPHNlY3Rpb25EYXRhLT5ub09mU2VjdGlvbnM7aSsrKSB7CisgICAgV3JpdGVCaXRzKGhCaXRTdHJlYW0sc2VjdGlvbkRhdGEtPnNlY3Rpb25JbmZvW2ldLmNvZGVCb29rLDQpOworICAgIHNlY3RMZW4gPSBzZWN0aW9uRGF0YS0+c2VjdGlvbkluZm9baV0uc2ZiQ250OyAgICAgICAgCisKKyAgICB3aGlsZShzZWN0TGVuID49IHNlY3RFc2NhcGVWYWwpIHsKKyAgICAgICAKKyAgICAgIFdyaXRlQml0cyhoQml0U3RyZWFtLHNlY3RFc2NhcGVWYWwsc2VjdExlbkJpdHMpOworICAgICAgc2VjdExlbiA9IHNlY3RMZW4gLSBzZWN0RXNjYXBlVmFsOworICAgIH0KKyAgICBXcml0ZUJpdHMoaEJpdFN0cmVhbSxzZWN0TGVuLHNlY3RMZW5CaXRzKTsKKyAgfQorICByZXR1cm4oR2V0Qml0c0F2YWlsKGhCaXRTdHJlYW0pLWRiZ1ZhbCk7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBlbmNvZGVTY2FsZUZhY3RvckRhdGEKKyogZGVzY3JpcHRpb246ICBlbmNvZGUgRFBDTSBjb2RlZCBzY2FsZSBmYWN0b3JzCisqIHJldHVybnM6ICAgICAgbm9uZQorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgV29yZDMyIGVuY29kZVNjYWxlRmFjdG9yRGF0YShVV29yZDE2ICAgICAgICAqbWF4VmFsdWVJblNmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFQ1RJT05fREFUQSAgICpzZWN0aW9uRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgICAgICAgICpzY2FsZWZhYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRV9CSVRfQlVGICBoQml0U3RyZWFtKQoreworICBXb3JkMTYgaSxqLGxhc3RWYWxTY2YsZGVsdGFTY2Y7CisgIFdvcmQxNiBkYmdWYWwgPSBHZXRCaXRzQXZhaWwoaEJpdFN0cmVhbSk7CisgIFNFQ1RJT05fSU5GTyogcHNlY3Rpb25pbmZvOyAKKworICBsYXN0VmFsU2NmPXNjYWxlZmFjW3NlY3Rpb25EYXRhLT5maXJzdFNjZl07ICAgICAgICAgICAgICAgICAgICAKKworICBmb3IoaT0wO2k8c2VjdGlvbkRhdGEtPm5vT2ZTZWN0aW9ucztpKyspeworICAgIHBzZWN0aW9uaW5mbyA9ICYoc2VjdGlvbkRhdGEtPnNlY3Rpb25JbmZvW2ldKTsgCisgICAgaWYgKHBzZWN0aW9uaW5mby0+Y29kZUJvb2sgIT0gQ09ERV9CT09LX1pFUk9fTk8peworICAgICAgZm9yIChqPXBzZWN0aW9uaW5mby0+c2ZiU3RhcnQ7CisgICAgICAgICAgIGo8cHNlY3Rpb25pbmZvLT5zZmJTdGFydCtwc2VjdGlvbmluZm8tPnNmYkNudDsgaisrKXsKKyAgICAgICAgIAorICAgICAgICBpZihtYXhWYWx1ZUluU2ZiW2pdID09IDApIHsKKyAgICAgICAgICBkZWx0YVNjZiA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgZGVsdGFTY2YgPSBsYXN0VmFsU2NmIC0gc2NhbGVmYWNbal07CisgICAgICAgICAgbGFzdFZhbFNjZiA9IHNjYWxlZmFjW2pdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICB9CisgICAgICAgICAKKyAgICAgICAgaWYoY29kZVNjYWxlZmFjdG9yRGVsdGEoZGVsdGFTY2YsaEJpdFN0cmVhbSkpeworICAgICAgICAgIHJldHVybigxKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKworICB9CisgIHJldHVybihHZXRCaXRzQXZhaWwoaEJpdFN0cmVhbSktZGJnVmFsKTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6ZW5jb2RlTXNJbmZvCisqIGRlc2NyaXB0aW9uOiBlbmNvZGVzIE1TLVN0ZXJlbyBJbmZvCisqIHJldHVybnM6ICAgICBub25lCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyB2b2lkIGVuY29kZU1TSW5mbyhXb3JkMTYgICAgICAgICAgc2ZiQ250LAorICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgICAgICAgICBncnBTZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICAgICAgICAgIG1heFNmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgICAgICAgICAgbXNEaWdlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICAgICAgICAgKmpzRmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFX0JJVF9CVUYgIGhCaXRTdHJlYW0pCit7CisgIFdvcmQxNiBzZmIsIHNmYk9mZjsKKworICAgCisgIHN3aXRjaChtc0RpZ2VzdCkKKyAgeworICAgIGNhc2UgTVNfTk9ORToKKyAgICAgIFdyaXRlQml0cyhoQml0U3RyZWFtLFNJX01TX01BU0tfTk9ORSwyKTsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBNU19BTEw6CisgICAgICBXcml0ZUJpdHMoaEJpdFN0cmVhbSxTSV9NU19NQVNLX0FMTCwyKTsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBNU19TT01FOgorICAgICAgV3JpdGVCaXRzKGhCaXRTdHJlYW0sU0lfTVNfTUFTS19TT01FLDIpOworICAgICAgZm9yKHNmYk9mZiA9IDA7IHNmYk9mZiA8IHNmYkNudDsgc2ZiT2ZmKz1ncnBTZmIpIHsKKyAgICAgICAgZm9yKHNmYj0wOyBzZmI8bWF4U2ZiOyBzZmIrKykgeworICAgICAgICAgICAgIAorICAgICAgICAgIGlmKGpzRmxhZ3Nbc2ZiT2ZmK3NmYl0gJiBNU19PTikgeworICAgICAgICAgICAgV3JpdGVCaXRzKGhCaXRTdHJlYW0sMSwxKTsKKyAgICAgICAgICB9CisgICAgICAgICAgZWxzZXsKKyAgICAgICAgICAgIFdyaXRlQml0cyhoQml0U3RyZWFtLDAsMSk7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICB9CisgICAgICBicmVhazsKKyAgfQorCit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBlbmNvZGVUbnNEYXRhCisqIGRlc2NyaXB0aW9uOiAgZW5jb2RlIFROUyBkYXRhIChmaWx0ZXIgb3JkZXIsIGNvZWZmcywgLi4pCisqIHJldHVybnM6ICAgICAgbm9uZQorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgdm9pZCBlbmNvZGVUbnNEYXRhKFROU19JTkZPIHRuc0luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiBibG9ja1R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRV9CSVRfQlVGIGhCaXRTdHJlYW0pIHsKKyAgV29yZDE2IGksazsKKyAgRmxhZyB0bnNQcmVzZW50OworICBXb3JkMTYgbnVtT2ZXaW5kb3dzOworICBXb3JkMTYgY29lZkJpdHM7CisgIEZsYWcgaXNTaG9ydDsKKworICAgICAgIAorICBpZiAoYmxvY2tUeXBlPT0yKSB7CisgICAgaXNTaG9ydCA9IDE7CisgICAgbnVtT2ZXaW5kb3dzID0gVFJBTlNfRkFDOworICB9CisgIGVsc2UgeworICAgIGlzU2hvcnQgPSAwOworICAgIG51bU9mV2luZG93cyA9IDE7CisgIH0KKworICB0bnNQcmVzZW50PTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgZm9yIChpPTA7IGk8bnVtT2ZXaW5kb3dzOyBpKyspIHsKKyAgICAgCisgICAgaWYgKHRuc0luZm8udG5zQWN0aXZlW2ldKSB7CisgICAgICB0bnNQcmVzZW50PTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIH0KKyAgfQorICAgCisgIGlmICh0bnNQcmVzZW50PT0wKSB7CisgICAgV3JpdGVCaXRzKGhCaXRTdHJlYW0sMCwxKTsKKyAgfQorICBlbHNleyAvKiB0aGVyZSBpcyBkYXRhIHRvIGJlIHdyaXR0ZW4qLworICAgIFdyaXRlQml0cyhoQml0U3RyZWFtLDEsMSk7IC8qZGF0YV9wcmVzZW50ICovCisgICAgZm9yIChpPTA7IGk8bnVtT2ZXaW5kb3dzOyBpKyspIHsKKyAgICAgICAKKyAgICAgIFdyaXRlQml0cyhoQml0U3RyZWFtLHRuc0luZm8udG5zQWN0aXZlW2ldLChpc1Nob3J0PzE6MikpOworICAgICAgIAorICAgICAgaWYgKHRuc0luZm8udG5zQWN0aXZlW2ldKSB7CisgICAgICAgICAKKyAgICAgICAgV3JpdGVCaXRzKGhCaXRTdHJlYW0sKCh0bnNJbmZvLmNvZWZSZXNbaV0gLSA0KT09MD8xOjApLDEpOworICAgICAgICAgCisgICAgICAgIFdyaXRlQml0cyhoQml0U3RyZWFtLHRuc0luZm8ubGVuZ3RoW2ldLChpc1Nob3J0PzQ6NikpOworICAgICAgICAgCisgICAgICAgIFdyaXRlQml0cyhoQml0U3RyZWFtLHRuc0luZm8ub3JkZXJbaV0sKGlzU2hvcnQ/Mzo1KSk7CisgICAgICAgICAKKyAgICAgICAgaWYgKHRuc0luZm8ub3JkZXJbaV0peworICAgICAgICAgIFdyaXRlQml0cyhoQml0U3RyZWFtLCBGSUxURVJfRElSRUNUSU9OLCAxKTsKKyAgICAgICAgICAgCisgICAgICAgICAgaWYodG5zSW5mby5jb2VmUmVzW2ldID09IDQpIHsKKyAgICAgICAgICAgIGNvZWZCaXRzID0gMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvcihrPTA7IGs8dG5zSW5mby5vcmRlcltpXTsgaysrKSB7CisgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBpZiAodG5zSW5mby5jb2VmW2kqVE5TX01BWF9PUkRFUl9TSE9SVCtrXSA+IDMgfHwKKyAgICAgICAgICAgICAgICAgIHRuc0luZm8uY29lZltpKlROU19NQVhfT1JERVJfU0hPUlQra10gPCAtNCkgeworICAgICAgICAgICAgICAgIGNvZWZCaXRzID0gNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgY29lZkJpdHMgPSAyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgZm9yKGs9MDsgazx0bnNJbmZvLm9yZGVyW2ldOyBrKyspIHsKKyAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIGlmICh0bnNJbmZvLmNvZWZbaSpUTlNfTUFYX09SREVSX1NIT1JUK2tdID4gMSB8fAorICAgICAgICAgICAgICAgICAgdG5zSW5mby5jb2VmW2kqVE5TX01BWF9PUkRFUl9TSE9SVCtrXSA8IC0yKSB7CisgICAgICAgICAgICAgICAgY29lZkJpdHMgPSAzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgV3JpdGVCaXRzKGhCaXRTdHJlYW0sIHRuc0luZm8uY29lZlJlc1tpXSAtIGNvZWZCaXRzLCAxKTsgLypjb2VmX2NvbXByZXMqLworICAgICAgICAgIGZvciAoaz0wOyBrPHRuc0luZm8ub3JkZXJbaV07IGsrKyApIHsKKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBXb3JkMTYgcm1hc2tbXSA9IHswLDEsMyw3LDE1fTsKKyAgICAgICAgICAgICAKKyAgICAgICAgICAgIFdyaXRlQml0cyhoQml0U3RyZWFtLHRuc0luZm8uY29lZltpKlROU19NQVhfT1JERVJfU0hPUlQra10gJiBybWFza1tjb2VmQml0c10sY29lZkJpdHMpOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorCit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBlbmNvZGVHYWluQ29udHJvbERhdGEKKyogZGVzY3JpcHRpb246ICB1bnN1cHBvcnRlZAorKiByZXR1cm5zOiAgICAgIG5vbmUKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIHZvaWQgZW5jb2RlR2FpbkNvbnRyb2xEYXRhKEhBTkRMRV9CSVRfQlVGIGhCaXRTdHJlYW0pCit7CisgIFdyaXRlQml0cyhoQml0U3RyZWFtLDAsMSk7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBlbmNvZGVQdWxzZURhdGEKKyogZGVzY3JpcHRpb246ICBub3Qgc3VwcG9ydGVkIHlldCAoZHVtbXkpCisqIHJldHVybnM6ICAgICAgbm9uZQorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgdm9pZCBlbmNvZGVQdWxzZURhdGEoSEFORExFX0JJVF9CVUYgaEJpdFN0cmVhbSkKK3sKKyAgV3JpdGVCaXRzKGhCaXRTdHJlYW0sMCwxKTsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogV3JpdGVJbmRpdmlkdWFsQ2hhbm5lbFN0cmVhbQorKiBkZXNjcmlwdGlvbjogIG1hbmFnZW1lbnQgb2Ygd3JpdGUgcHJvY2VzcyBvZiBpbmRpdmlkdWFsIGNoYW5uZWwgc3RyZWFtCisqIHJldHVybnM6ICAgICAgbm9uZQorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgdm9pZAord3JpdGVJbmRpdmlkdWFsQ2hhbm5lbFN0cmVhbShGbGFnICAgY29tbW9uV2luZG93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgbWRjdFNjYWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgd2luZG93U2hhcGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiBncm91cGluZ01hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAqc2ZiT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgc2NmW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVXb3JkMTYgKm1heFZhbHVlSW5TZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiBnbG9iYWxHYWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgcXVhbnRTcGVjW10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNFQ1RJT05fREFUQSAqc2VjdGlvbkRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRV9CSVRfQlVGIGhCaXRTdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFROU19JTkZPIHRuc0luZm8pCit7CisgIFdvcmQxNiBsb2dOb3JtOworCisgIGxvZ05vcm0gPSBMT0dfTk9STV9QQ00gLSAobWRjdFNjYWxlICsgMSk7CisKKyAgZW5jb2RlR2xvYmFsR2FpbihnbG9iYWxHYWluLCBsb2dOb3JtLHNjZltzZWN0aW9uRGF0YS0+Zmlyc3RTY2ZdLCBoQml0U3RyZWFtKTsKKworICAgCisgIGlmKCFjb21tb25XaW5kb3cpIHsKKyAgICBlbmNvZGVJY3NJbmZvKHNlY3Rpb25EYXRhLT5ibG9ja1R5cGUsIHdpbmRvd1NoYXBlLCBncm91cGluZ01hc2ssIHNlY3Rpb25EYXRhLCBoQml0U3RyZWFtKTsKKyAgfQorCisgIGVuY29kZVNlY3Rpb25EYXRhKHNlY3Rpb25EYXRhLCBoQml0U3RyZWFtKTsKKworICBlbmNvZGVTY2FsZUZhY3RvckRhdGEobWF4VmFsdWVJblNmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb25EYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgc2NmLAorICAgICAgICAgICAgICAgICAgICAgICAgaEJpdFN0cmVhbSk7CisKKyAgZW5jb2RlUHVsc2VEYXRhKGhCaXRTdHJlYW0pOworCisgIGVuY29kZVRuc0RhdGEodG5zSW5mbywgc2VjdGlvbkRhdGEtPmJsb2NrVHlwZSwgaEJpdFN0cmVhbSk7CisKKyAgZW5jb2RlR2FpbkNvbnRyb2xEYXRhKGhCaXRTdHJlYW0pOworCisgIGVuY29kZVNwZWN0cmFsRGF0YShzZmJPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICBzZWN0aW9uRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgIHF1YW50U3BlYywKKyAgICAgICAgICAgICAgICAgICAgIGhCaXRTdHJlYW0pOworCit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiB3cml0ZVNpbmdsZUNoYW5uZWxFbGVtZW50CisqIGRlc2NyaXB0aW9uOiAgd3JpdGUgc2luZ2xlIGNoYW5uZWwgZWxlbWVudCB0byBiaXRzdHJlYW0KKyogcmV0dXJuczogICAgICBub25lCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyBXb3JkMTYgd3JpdGVTaW5nbGVDaGFubmVsRWxlbWVudChXb3JkMTYgaW5zdGFuY2VUYWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICpzZmJPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUNfT1VUX0NIQU5ORUwqIHFjT3V0Q2hhbm5lbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQU5ETEVfQklUX0JVRiBoQml0U3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFROU19JTkZPIHRuc0luZm8pCit7CisgIFdyaXRlQml0cyhoQml0U3RyZWFtLElEX1NDRSwzKTsKKyAgV3JpdGVCaXRzKGhCaXRTdHJlYW0saW5zdGFuY2VUYWcsNCk7CisgIHdyaXRlSW5kaXZpZHVhbENoYW5uZWxTdHJlYW0oMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxY091dENoYW5uZWwtPm1kY3RTY2FsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxY091dENoYW5uZWwtPndpbmRvd1NoYXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHFjT3V0Q2hhbm5lbC0+Z3JvdXBpbmdNYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNmYk9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxY091dENoYW5uZWwtPnNjZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxY091dENoYW5uZWwtPm1heFZhbHVlSW5TZmIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcWNPdXRDaGFubmVsLT5nbG9iYWxHYWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHFjT3V0Q2hhbm5lbC0+cXVhbnRTcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYocWNPdXRDaGFubmVsLT5zZWN0aW9uRGF0YSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaEJpdFN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bnNJbmZvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKTsKKyAgcmV0dXJuKDApOworfQorCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IHdyaXRlQ2hhbm5lbFBhaXJFbGVtZW50CisqIGRlc2NyaXB0aW9uOgorKiByZXR1cm5zOiAgICAgIG5vbmUKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIFdvcmQxNiB3cml0ZUNoYW5uZWxQYWlyRWxlbWVudChXb3JkMTYgaW5zdGFuY2VUYWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiBtc0RpZ2VzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IG1zRmxhZ3NbTUFYX0dST1VQRURfU0ZCXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICpzZmJPZmZzZXRbMl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFDX09VVF9DSEFOTkVMIHFjT3V0Q2hhbm5lbFsyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFORExFX0JJVF9CVUYgaEJpdFN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVE5TX0lORk8gdG5zSW5mb1syXSkKK3sKKyAgV3JpdGVCaXRzKGhCaXRTdHJlYW0sSURfQ1BFLDMpOworICBXcml0ZUJpdHMoaEJpdFN0cmVhbSxpbnN0YW5jZVRhZyw0KTsKKyAgV3JpdGVCaXRzKGhCaXRTdHJlYW0sMSwxKTsgLyogY29tbW9uIHdpbmRvdyAqLworCisgIGVuY29kZUljc0luZm8ocWNPdXRDaGFubmVsWzBdLnNlY3Rpb25EYXRhLmJsb2NrVHlwZSwKKyAgICAgICAgICAgICAgICBxY091dENoYW5uZWxbMF0ud2luZG93U2hhcGUsCisgICAgICAgICAgICAgICAgcWNPdXRDaGFubmVsWzBdLmdyb3VwaW5nTWFzaywKKyAgICAgICAgICAgICAgICAmKHFjT3V0Q2hhbm5lbFswXS5zZWN0aW9uRGF0YSksCisgICAgICAgICAgICAgICAgaEJpdFN0cmVhbSk7CisKKyAgZW5jb2RlTVNJbmZvKHFjT3V0Q2hhbm5lbFswXS5zZWN0aW9uRGF0YS5zZmJDbnQsCisgICAgICAgICAgICAgICBxY091dENoYW5uZWxbMF0uc2VjdGlvbkRhdGEuc2ZiUGVyR3JvdXAsCisgICAgICAgICAgICAgICBxY091dENoYW5uZWxbMF0uc2VjdGlvbkRhdGEubWF4U2ZiUGVyR3JvdXAsCisgICAgICAgICAgICAgICBtc0RpZ2VzdCwKKyAgICAgICAgICAgICAgIG1zRmxhZ3MsCisgICAgICAgICAgICAgICBoQml0U3RyZWFtKTsKKworICB3cml0ZUluZGl2aWR1YWxDaGFubmVsU3RyZWFtKDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcWNPdXRDaGFubmVsWzBdLm1kY3RTY2FsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxY091dENoYW5uZWxbMF0ud2luZG93U2hhcGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcWNPdXRDaGFubmVsWzBdLmdyb3VwaW5nTWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZmJPZmZzZXRbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcWNPdXRDaGFubmVsWzBdLnNjZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxY091dENoYW5uZWxbMF0ubWF4VmFsdWVJblNmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxY091dENoYW5uZWxbMF0uZ2xvYmFsR2FpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxY091dENoYW5uZWxbMF0ucXVhbnRTcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYocWNPdXRDaGFubmVsWzBdLnNlY3Rpb25EYXRhKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoQml0U3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRuc0luZm9bMF0pOworCisgIHdyaXRlSW5kaXZpZHVhbENoYW5uZWxTdHJlYW0oMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxY091dENoYW5uZWxbMV0ubWRjdFNjYWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHFjT3V0Q2hhbm5lbFsxXS53aW5kb3dTaGFwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxY091dENoYW5uZWxbMV0uZ3JvdXBpbmdNYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNmYk9mZnNldFsxXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxY091dENoYW5uZWxbMV0uc2NmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHFjT3V0Q2hhbm5lbFsxXS5tYXhWYWx1ZUluU2ZiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHFjT3V0Q2hhbm5lbFsxXS5nbG9iYWxHYWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHFjT3V0Q2hhbm5lbFsxXS5xdWFudFNwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJihxY091dENoYW5uZWxbMV0uc2VjdGlvbkRhdGEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhCaXRTdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG5zSW5mb1sxXSk7CisKKyAgcmV0dXJuKDApOworfQorCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IHdyaXRlRmlsbEVsZW1lbnQKKyogZGVzY3JpcHRpb246ICB3cml0ZSBmaWxsIGVsZW1lbnRzIHRvIGJpdHN0cmVhbQorKiByZXR1cm5zOiAgICAgIG5vbmUKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIHZvaWQgd3JpdGVGaWxsRWxlbWVudCggY29uc3QgVVdvcmQ4ICphbmNCeXRlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiB0b3RGaWxsQml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEhBTkRMRV9CSVRfQlVGIGhCaXRTdHJlYW0pCit7CisgIFdvcmQxNiBpOworICBXb3JkMTYgY250LGVzY19jb3VudDsKKworICAvKgorICAgIFdyaXRlIGZpbGwgRWxlbWVudChzKToKKyAgICBhbW91bnQgb2YgYSBmaWxsIGVsZW1lbnQgY2FuIGJlIDcrWCo4IEJpdHMsIFggZWxlbWVudCBvZiBbMC4uMjcwXQorICAqLworICAgIAorICB3aGlsZSh0b3RGaWxsQml0cyA+PSAoMys0KSkgeworICAgIGNudCA9IG1pbigoKHRvdEZpbGxCaXRzIC0gKDMrNCkpID4+IDMpLCAoKDE8PDQpLTEpKTsKKworICAgIFdyaXRlQml0cyhoQml0U3RyZWFtLElEX0ZJTCwzKTsKKyAgICBXcml0ZUJpdHMoaEJpdFN0cmVhbSxjbnQsNCk7CisKKyAgICB0b3RGaWxsQml0cyA9IHRvdEZpbGxCaXRzIC0gKDMrNCk7CisKKyAgICAgCisgICAgaWYgKChjbnQgPT0gKDE8PDQpLTEpKSB7CisKKyAgICAgIGVzY19jb3VudCA9IG1pbiggKCh0b3RGaWxsQml0cyA+PiAzKSAtICgoMTw8NCktMSkpLCAoMTw8OCktMSk7CisgICAgICBXcml0ZUJpdHMoaEJpdFN0cmVhbSxlc2NfY291bnQsOCk7CisgICAgICB0b3RGaWxsQml0cyA9ICh0b3RGaWxsQml0cyAtIDgpOworICAgICAgY250ID0gY250ICsgKGVzY19jb3VudCAtIDEpOworICAgIH0KKworICAgIGZvcihpPTA7aTxjbnQ7aSsrKSB7CisgICAgICAgCisgICAgICBpZihhbmNCeXRlcykKKyAgICAgICAgV3JpdGVCaXRzKGhCaXRTdHJlYW0sICphbmNCeXRlcysrLDgpOworICAgICAgZWxzZQorICAgICAgICBXcml0ZUJpdHMoaEJpdFN0cmVhbSwwLDgpOworICAgICAgdG90RmlsbEJpdHMgPSB0b3RGaWxsQml0cyAtIDg7CisgICAgfQorICB9Cit9CisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogV3JpdGVCaXRTdHJlYW0KKyogZGVzY3JpcHRpb246ICBtYWluIGZ1bmN0aW9uIG9mIHdyaXRlIGJpdHN0ZWFtIHByb2Nlc3MKKyogcmV0dXJuczogICAgICAwIGlmIHN1Y2Nlc3MKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworV29yZDE2IFdyaXRlQml0c3RyZWFtIChIQU5ETEVfQklUX0JVRiBoQml0U3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICBFTEVNRU5UX0lORk8gZWxJbmZvLAorICAgICAgICAgICAgICAgICAgICAgICBRQ19PVVQgKnFjT3V0LAorICAgICAgICAgICAgICAgICAgICAgICBQU1lfT1VUICpwc3lPdXQsCisgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAqZ2xvYlVzZWRCaXRzLAkJCQkJICAgCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFVXb3JkOCAqYW5jQnl0ZXMsDQorCQkJCQkgICBXb3JkMTYgc2FtcGluZGV4CisgICAgICAgICAgICAgICAgICAgICAgICkgLyogcmV0dXJucyBlcnJvciBjb2RlICovCit7CisgIFdvcmQxNiBiaXRNYXJrVXA7CisgIFdvcmQxNiBlbGVtZW50VXNlZEJpdHM7CisgIFdvcmQxNiBmcmFtZUJpdHM9MDsNCisNCisgIC8qICAgc3RydWN0IGJpdGJ1ZmZlciBic1dyaXRlQ29weTsgKi8NCisgIGJpdE1hcmtVcCA9IEdldEJpdHNBdmFpbChoQml0U3RyZWFtKTsgDQorICBpZihxY091dC0+cWNFbGVtZW50LmFkdHNVc2VkKSAgLyogIHdyaXRlIGFkdHMgaGVhZGVyKi8NCisgIHsNCisJICBXcml0ZUJpdHMoaEJpdFN0cmVhbSwgMHhGRkYsIDEyKTsgLyogMTIgYml0IFN5bmN3b3JkICovDQorCSAgV3JpdGVCaXRzKGhCaXRTdHJlYW0sIDEsIDEpOyAvKiBJRCA9PSAwIGZvciBNUEVHNCBBQUMsIDEgZm9yIE1QRUcyIEFBQyAqLw0KKwkgIFdyaXRlQml0cyhoQml0U3RyZWFtLCAwLCAyKTsgLyogbGF5ZXIgPT0gMCAqLw0KKwkgIFdyaXRlQml0cyhoQml0U3RyZWFtLCAxLCAxKTsgLyogcHJvdGVjdGlvbiBhYnNlbnQgKi8NCisJICBXcml0ZUJpdHMoaEJpdFN0cmVhbSwgMSwgMik7IC8qIHByb2ZpbGUgKi8NCisJICBXcml0ZUJpdHMoaEJpdFN0cmVhbSwgc2FtcGluZGV4LCA0KTsgLyogc2FtcGxpbmcgcmF0ZSAqLw0KKwkgIFdyaXRlQml0cyhoQml0U3RyZWFtLCAwLCAxKTsgLyogcHJpdmF0ZSBiaXQgKi8NCisJICBXcml0ZUJpdHMoaEJpdFN0cmVhbSwgZWxJbmZvLm5DaGFubmVsc0luRWwsIDMpOyAvKiBjaC4gY29uZmlnIChtdXN0IGJlID4gMCkgKi8NCisJCQkJCQkJCSAgIC8qIHNpbXBseSB1c2luZyBudW1DaGFubmVscyBvbmx5IHdvcmtzIGZvcg0KKwkJCQkJCQkJCTYgY2hhbm5lbHMgb3IgbGVzcywgZWxzZSBhIGNoYW5uZWwNCisJCQkJCQkJCQljb25maWd1cmF0aW9uIHNob3VsZCBiZSB3cml0dGVuICovDQorCSAgV3JpdGVCaXRzKGhCaXRTdHJlYW0sIDAsIDEpOyAvKiBvcmlnaW5hbC9jb3B5ICovDQorCSAgV3JpdGVCaXRzKGhCaXRTdHJlYW0sIDAsIDEpOyAvKiBob21lICovCSAgDQorCSAgDQorCSAgLyogVmFyaWFibGUgQURUUyBoZWFkZXIgKi8NCisJICBXcml0ZUJpdHMoaEJpdFN0cmVhbSwgMCwgMSk7IC8qIGNvcHlyLiBpZC4gYml0ICovDQorCSAgV3JpdGVCaXRzKGhCaXRTdHJlYW0sIDAsIDEpOyAvKiBjb3B5ci4gaWQuIHN0YXJ0ICovDQorCSAgV3JpdGVCaXRzKGhCaXRTdHJlYW0sICpnbG9iVXNlZEJpdHMgPj4gMywgMTMpOw0KKwkgIFdyaXRlQml0cyhoQml0U3RyZWFtLCAweDdGRiwgMTEpOyAvKiBidWZmZXIgZnVsbG5lc3MgKDB4N0ZGIGZvciBWQlIpICovDQorCSAgV3JpdGVCaXRzKGhCaXRTdHJlYW0sIDAsIDIpOyAvKiByYXcgZGF0YSBibG9ja3MgKDArMT0xKSAqLyAgDQorICB9DQorCisgICpnbG9iVXNlZEJpdHM9MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgIHsKKworICAgIFdvcmQxNiAqc2ZiT2Zmc2V0WzJdOworICAgIFROU19JTkZPIHRuc0luZm9bMl07CisgICAgZWxlbWVudFVzZWRCaXRzID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgICAgc3dpdGNoIChlbEluZm8uZWxUeXBlKSB7CisKKyAgICAgIGNhc2UgSURfU0NFOiAgICAgIC8qIHNpbmdsZSBjaGFubmVsICovCisgICAgICAgIHNmYk9mZnNldFswXSA9IHBzeU91dC0+cHN5T3V0Q2hhbm5lbFtlbEluZm8uQ2hhbm5lbEluZGV4WzBdXS5zZmJPZmZzZXRzOworICAgICAgICB0bnNJbmZvWzBdID0gcHN5T3V0LT5wc3lPdXRDaGFubmVsW2VsSW5mby5DaGFubmVsSW5kZXhbMF1dLnRuc0luZm87CisKKyAgICAgICAgd3JpdGVTaW5nbGVDaGFubmVsRWxlbWVudChlbEluZm8uaW5zdGFuY2VUYWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2ZiT2Zmc2V0WzBdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxY091dC0+cWNDaGFubmVsW2VsSW5mby5DaGFubmVsSW5kZXhbMF1dLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhCaXRTdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG5zSW5mb1swXSk7CisgICAgICAgIGJyZWFrOworCisgICAgICBjYXNlIElEX0NQRTogICAgIC8qIGNoYW5uZWwgcGFpciAqLworICAgICAgICB7CisgICAgICAgICAgV29yZDE2IG1zRGlnZXN0OworICAgICAgICAgIFdvcmQxNiAqbXNGbGFncyA9IHBzeU91dC0+cHN5T3V0RWxlbWVudC50b29sc0luZm8ubXNNYXNrOworICAgICAgICAgIG1zRGlnZXN0ID0gcHN5T3V0LT5wc3lPdXRFbGVtZW50LnRvb2xzSW5mby5tc0RpZ2VzdDsgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICBzZmJPZmZzZXRbMF0gPQorICAgICAgICAgICAgcHN5T3V0LT5wc3lPdXRDaGFubmVsW2VsSW5mby5DaGFubmVsSW5kZXhbMF1dLnNmYk9mZnNldHM7CisgICAgICAgICAgc2ZiT2Zmc2V0WzFdID0KKyAgICAgICAgICAgIHBzeU91dC0+cHN5T3V0Q2hhbm5lbFtlbEluZm8uQ2hhbm5lbEluZGV4WzFdXS5zZmJPZmZzZXRzOworCisgICAgICAgICAgdG5zSW5mb1swXT0KKyAgICAgICAgICAgIHBzeU91dC0+cHN5T3V0Q2hhbm5lbFtlbEluZm8uQ2hhbm5lbEluZGV4WzBdXS50bnNJbmZvOworICAgICAgICAgIHRuc0luZm9bMV09CisgICAgICAgICAgICBwc3lPdXQtPnBzeU91dENoYW5uZWxbZWxJbmZvLkNoYW5uZWxJbmRleFsxXV0udG5zSW5mbzsKKyAgICAgICAgICB3cml0ZUNoYW5uZWxQYWlyRWxlbWVudChlbEluZm8uaW5zdGFuY2VUYWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNEaWdlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNGbGFncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZmJPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnFjT3V0LT5xY0NoYW5uZWxbZWxJbmZvLkNoYW5uZWxJbmRleFswXV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaEJpdFN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bnNJbmZvKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKworICAgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuKDEpOworCisgICAgICB9ICAgLyogc3dpdGNoICovCisKKyAgICBlbGVtZW50VXNlZEJpdHMgPSBlbGVtZW50VXNlZEJpdHMgLSBiaXRNYXJrVXA7CisgICAgYml0TWFya1VwID0gR2V0Qml0c0F2YWlsKGhCaXRTdHJlYW0pOworICAgIGZyYW1lQml0cyA9IGZyYW1lQml0cyArIGVsZW1lbnRVc2VkQml0cyArIGJpdE1hcmtVcDsKKworICB9CisKKyAgd3JpdGVGaWxsRWxlbWVudChOVUxMLAorICAgICAgICAgICAgICAgICAgIHFjT3V0LT50b3RGaWxsQml0cywgCisgICAgICAgICAgICAgICAgICAgaEJpdFN0cmVhbSk7CisKKyAgV3JpdGVCaXRzKGhCaXRTdHJlYW0sSURfRU5ELDMpOworCisgIC8qIGJ5dGUgYWxpZ25lbWVudCAqLworICBXcml0ZUJpdHMoaEJpdFN0cmVhbSwwLCAoOCAtIChoQml0U3RyZWFtLT5jbnRCaXRzICYgNykpICYgNyk7ICAgICAgICAgIAorICAKKyAgKmdsb2JVc2VkQml0cyA9ICpnbG9iVXNlZEJpdHMtIGJpdE1hcmtVcDsKKyAgYml0TWFya1VwID0gR2V0Qml0c0F2YWlsKGhCaXRTdHJlYW0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgKmdsb2JVc2VkQml0cyA9ICpnbG9iVXNlZEJpdHMgKyBiaXRNYXJrVXA7CisgIGZyYW1lQml0cyA9IGZyYW1lQml0cyArICpnbG9iVXNlZEJpdHM7CisKKyAgIAorICBpZiAoZnJhbWVCaXRzICE9ICAocWNPdXQtPnRvdFN0YXRpY0JpdHNVc2VkK3FjT3V0LT50b3REeW5CaXRzVXNlZCArIHFjT3V0LT50b3RBbmNCaXRzVXNlZCArCisgICAgICAgICAgICAgICAgICAgICBxY091dC0+dG90RmlsbEJpdHMgKyBxY091dC0+YWxpZ25CaXRzKSkgeworICAgIHJldHVybigtMSk7CisgIH0KKyAgcmV0dXJuKDApOworfQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvYmxvY2tfc3dpdGNoLmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9ibG9ja19zd2l0Y2guYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDA1NGY3Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvYmxvY2tfc3dpdGNoLmMKQEAgLTAsMCArMSw0MzEgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCWJsb2NrX3N3aXRjaC5jDQorDQorCUNvbnRlbnQ6CUJsb2NrIHN3aXRjaGluZyBmdW5jdGlvbnMNCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaW5jbHVkZSAidHlwZWRlZi5oIg0KKyNpbmNsdWRlICJiYXNpY19vcC5oIg0KKyNpbmNsdWRlICJvcGVyXzMyYi5oIgorI2luY2x1ZGUgInBzeV9jb25zdC5oIgorI2luY2x1ZGUgImJsb2NrX3N3aXRjaC5oIgorCisKKyNkZWZpbmUgRU5FUkdZX1NISUZUICg4IC0gMSkKKworLyoqKioqKioqKioqKioqKiogaW50ZXJuYWwgZnVuY3Rpb24gcHJvdG90eXBlcyAqKioqKioqKioqKi8KK3N0YXRpYyBXb3JkMTYKK0lJUkZpbHRlcihjb25zdCBXb3JkMTYgaW4sIGNvbnN0IFdvcmQzMiBjb2VmZltdLCBXb3JkMzIgc3RhdGVzW10pOworCitzdGF0aWMgV29yZDMyCitTcmNoTWF4V2l0aEluZGV4KGNvbnN0IFdvcmQzMiAqaW4sIFdvcmQxNiAqaW5kZXgsIFdvcmQxNiBuKTsKKworCitXb3JkMzIKK0NhbGNXaW5kb3dFbmVyZ3koQkxPQ0tfU1dJVENISU5HX0NPTlRST0wgKmJsb2NrU3dpdGNoaW5nQ29udHJvbCwKKyAgICAgICAgICAgICAgICAgV29yZDE2ICp0aW1lU2lnbmFsLAorICAgICAgICAgICAgICAgICBXb3JkMTYgY2hJbmNyZW1lbnQsCisgICAgICAgICAgICAgICAgIFdvcmQxNiB3aW5kb3dMZW4pOworCisKKworLyoqKioqKioqKioqKioqKioqKiBDb25zdGFudHMgKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworLyoKKyAgSUlSIGhpZ2ggcGFzcyBjb2VmZnMKKyovCitXb3JkMzIgaGlQYXNzQ29lZmZbQkxPQ0tfU1dJVENISU5HX0lJUl9MRU5dID0geworICAweGJlYzhiNDM5LCAweDYwOWQ0OTUyICAvKiAtMC41MDk1ZiwgMC43NTQ4ZiAqLyAKK307CisKK3N0YXRpYyBjb25zdCBXb3JkMzIgYWNjV2luZG93TnJnRmFjID0gMHgyNjY2NjY2NjsgICAgICAgICAgICAgICAgICAgLyogZmFjdG9yIGZvciBhY2N1bXVsYXRpbmcgZmlsdGVyZWQgd2luZG93IGVuZXJnaWVzIDAuMyAqLworc3RhdGljIGNvbnN0IFdvcmQzMiBvbmVNaW51c0FjY1dpbmRvd05yZ0ZhYyA9IDB4NTk5OTk5OWE7CQkJLyogMC43ICovCitzdGF0aWMgY29uc3QgV29yZDMyIGludkF0dGFja1JhdGlvSGlnaEJyID0gMHgwY2NjY2NjZDsgICAgICAgICAgICAgIC8qIGludmVydGVkIGxvd2VyIHJhdGlvIGxpbWl0IGZvciBhdHRhY2tzIDAuMSovCitzdGF0aWMgY29uc3QgV29yZDMyIGludkF0dGFja1JhdGlvTG93QnIgPSAgMHgwNzJiMDIwYzsgICAgICAgICAgICAgIC8qIDAuMDU2ICovCitzdGF0aWMgY29uc3QgV29yZDMyIG1pbkF0dGFja05yZyA9IDB4MDAwMDFlODQ7ICAgICAgICAgICAgICAgICAgICAgIC8qIG1pbmltdW0gZW5lcmd5IGZvciBhdHRhY2tzIDFlKzYgKi8KKworCisvKioqKioqKioqKioqKioqKioqIFJvdXRpbmVzICoqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IEluaXRCbG9ja1N3aXRjaGluZworKiBkZXNjcmlwdGlvbjogIGluaXQgQmxvY2sgU3dpdGNoaW5nIHBhcmFtZXRlci4KKyogcmV0dXJuczogICAgICBUUlVFIGlmIHN1Y2Nlc3MKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitXb3JkMTYgSW5pdEJsb2NrU3dpdGNoaW5nKEJMT0NLX1NXSVRDSElOR19DT05UUk9MICpibG9ja1N3aXRjaGluZ0NvbnRyb2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQzMiBiaXRSYXRlLCBjb25zdCBXb3JkMTYgbkNoYW5uZWxzKQoreworICAvKiBzZWxlY3QgYXR0YWNrUmF0aW8gKi8KKyAgICAgICAgICAgCisgIGlmICgoc3ViKG5DaGFubmVscywxKT09MCAmJiBMX3N1YihiaXRSYXRlLCAyNDAwMCkgPiAwKSB8fCAKKyAgICAgIChzdWIobkNoYW5uZWxzLDEpPjAgJiYgYml0UmF0ZSA+IChuQ2hhbm5lbHMgKiAxNjAwMCkpKSB7CisgICAgYmxvY2tTd2l0Y2hpbmdDb250cm9sLT5pbnZBdHRhY2tSYXRpbyA9IGludkF0dGFja1JhdGlvSGlnaEJyOworICB9CisgIGVsc2UgIHsKKyAgICBibG9ja1N3aXRjaGluZ0NvbnRyb2wtPmludkF0dGFja1JhdGlvID0gaW52QXR0YWNrUmF0aW9Mb3dCcjsKKyAgfQorCisgIHJldHVybihUUlVFKTsKK30KKworc3RhdGljIFdvcmQxNiBzdWdnZXN0ZWRHcm91cGluZ1RhYmxlW1RSQU5TX0ZBQ11bTUFYX05PX09GX0dST1VQU10gPSB7CisgIC8qIEF0dGFjayBpbiBXaW5kb3cgMCAqLyB7MSwgIDMsICAzLCAgMX0sCisgIC8qIEF0dGFjayBpbiBXaW5kb3cgMSAqLyB7MSwgIDEsICAzLCAgM30sCisgIC8qIEF0dGFjayBpbiBXaW5kb3cgMiAqLyB7MiwgIDEsICAzLCAgMn0sCisgIC8qIEF0dGFjayBpbiBXaW5kb3cgMyAqLyB7MywgIDEsICAzLCAgMX0sCisgIC8qIEF0dGFjayBpbiBXaW5kb3cgNCAqLyB7MywgIDEsICAxLCAgM30sCisgIC8qIEF0dGFjayBpbiBXaW5kb3cgNSAqLyB7MywgIDIsICAxLCAgMn0sCisgIC8qIEF0dGFjayBpbiBXaW5kb3cgNiAqLyB7MywgIDMsICAxLCAgMX0sCisgIC8qIEF0dGFjayBpbiBXaW5kb3cgNyAqLyB7MywgIDMsICAxLCAgMX0KK307CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBCbG9ja1N3aXRjaGluZworKiBkZXNjcmlwdGlvbjogIGRldGVjdCB0aGlzIGZyYW1lIHdoZXRoZXIgdGhlcmUgaXMgYW4gYXR0YWNrCisqIHJldHVybnM6ICAgICAgVFJVRSBpZiBzdWNjZXNzCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworV29yZDE2IEJsb2NrU3dpdGNoaW5nKEJMT0NLX1NXSVRDSElOR19DT05UUk9MICpibG9ja1N3aXRjaGluZ0NvbnRyb2wsCisgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICp0aW1lU2lnbmFsLAorCQkJCQkgIFdvcmQzMiBzYW1wbGVSYXRlLAorICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiBjaEluY3JlbWVudCkKK3sKKyAgV29yZDMyIGksIHc7CisgIFdvcmQzMiBlbk0xLCBlbk1heDsKKworICAvKiBSZXNldCBncm91cGluZyBpbmZvICovCisgIGZvciAoaT0wOyBpPFRSQU5TX0ZBQzsgaSsrKSB7CisgICAgYmxvY2tTd2l0Y2hpbmdDb250cm9sLT5ncm91cExlbltpXSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgfQorCisKKyAgLyogU2VhcmNoIGZvciBwb3NpdGlvbiBhbmQgYW1wbGl0dWRlIG9mIGF0dGFjayBpbiBsYXN0IGZyYW1lICgxIHdpbmRvd3MgZGVsYXkpICovCisgIGJsb2NrU3dpdGNoaW5nQ29udHJvbC0+bWF4V2luZG93TnJnID0gU3JjaE1heFdpdGhJbmRleCggJmJsb2NrU3dpdGNoaW5nQ29udHJvbC0+d2luZG93TnJnWzBdW0JMT0NLX1NXSVRDSF9XSU5ET1dTLTFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZibG9ja1N3aXRjaGluZ0NvbnRyb2wtPmF0dGFja0luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJMT0NLX1NXSVRDSF9XSU5ET1dTKTsKKworICBibG9ja1N3aXRjaGluZ0NvbnRyb2wtPmF0dGFja0luZGV4ID0gYmxvY2tTd2l0Y2hpbmdDb250cm9sLT5sYXN0QXR0YWNrSW5kZXg7ICAgCisKKyAgLyogU2V0IGdyb3VwaW5nIGluZm8gKi8KKyAgYmxvY2tTd2l0Y2hpbmdDb250cm9sLT5ub09mR3JvdXBzID0gTUFYX05PX09GX0dST1VQUzsgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgIGZvciAoaT0wOyBpPE1BWF9OT19PRl9HUk9VUFM7IGkrKykgeworICAgIGJsb2NrU3dpdGNoaW5nQ29udHJvbC0+Z3JvdXBMZW5baV0gPSBzdWdnZXN0ZWRHcm91cGluZ1RhYmxlW2Jsb2NrU3dpdGNoaW5nQ29udHJvbC0+YXR0YWNrSW5kZXhdW2ldOyAgCisgIH0NCisJCisgIC8qIGlmIHRoZSBzYW1wbGVyYXRlIGlzIGxlc3MgdGhhbiAxNjAwMCwgaXQgc2hvdWxkIGJlIGFsbCB0aGUgc2hvcnQgYmxvY2ssIGF2b2lkIHByZSZwb3N0IGVjaG8gKi8KKyAgaWYoc2FtcGxlUmF0ZSA+PSAxNjAwMCkgeworCSAgLyogU2F2ZSBjdXJyZW50IHdpbmRvdyBlbmVyZ3kgYXMgbGFzdCB3aW5kb3cgZW5lcmd5ICovCisJICBmb3IgKHc9MDsgdzxCTE9DS19TV0lUQ0hfV0lORE9XUzsgdysrKSB7CisJCSAgYmxvY2tTd2l0Y2hpbmdDb250cm9sLT53aW5kb3dOcmdbMF1bd10gPSBibG9ja1N3aXRjaGluZ0NvbnRyb2wtPndpbmRvd05yZ1sxXVt3XTsgICAgICAgICAgICAgCisJCSAgYmxvY2tTd2l0Y2hpbmdDb250cm9sLT53aW5kb3dOcmdGWzBdW3ddID0gYmxvY2tTd2l0Y2hpbmdDb250cm9sLT53aW5kb3dOcmdGWzFdW3ddOyAgICAgICAgICAgCisJICB9CisKKworCSAgLyogQ2FsY3VsYXRlIHVuZmlsdGVyZWQgYW5kIGZpbHRlcmVkIGVuZXJnaWVzIGluIHN1YndpbmRvd3MgYW5kIGNvbWJpbmUgdG8gc2VnbWVudHMgKi8KKwkgIENhbGNXaW5kb3dFbmVyZ3koYmxvY2tTd2l0Y2hpbmdDb250cm9sLCB0aW1lU2lnbmFsLCBjaEluY3JlbWVudCwgQkxPQ0tfU1dJVENIX1dJTkRPV19MRU4pOworCisJICAvKiByZXNldCBhdHRhY2sgKi8KKwkgIGJsb2NrU3dpdGNoaW5nQ29udHJvbC0+YXR0YWNrID0gRkFMU0U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworCSAgZW5NYXggPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCSAgZW5NMSA9IGJsb2NrU3dpdGNoaW5nQ29udHJvbC0+d2luZG93TnJnRlswXVtCTE9DS19TV0lUQ0hfV0lORE9XUy0xXTsgICAgICAgICAgIAorCisJICBmb3IgKHc9MDsgdzxCTE9DS19TV0lUQ0hfV0lORE9XUzsgdysrKSB7CisJCSAgV29yZDMyIGVuTTFfVG1wLCBhY2NXaW5kb3dOcmdfVG1wLCB3aW5kb3dOcmdGX1RtcDsKKwkJICBXb3JkMTYgZW5NMV9TaGYsIGFjY1dpbmRvd05yZ19TaGYsIHdpbmRvd05yZ0ZfU2hmOworCisJCSAgYWNjV2luZG93TnJnX1NoZiA9IG5vcm1fbChibG9ja1N3aXRjaGluZ0NvbnRyb2wtPmFjY1dpbmRvd05yZyk7CisJCSAgZW5NMV9TaGYgPSBub3JtX2woZW5NMSk7CisJCSAgd2luZG93TnJnRl9TaGYgPSBub3JtX2woYmxvY2tTd2l0Y2hpbmdDb250cm9sLT53aW5kb3dOcmdGWzFdW3ddKTsKKworCQkgIGFjY1dpbmRvd05yZ19UbXAgPSBibG9ja1N3aXRjaGluZ0NvbnRyb2wtPmFjY1dpbmRvd05yZyA8PCBhY2NXaW5kb3dOcmdfU2hmOworCQkgIGVuTTFfVG1wID0gZW5NMSA8PCBlbk0xX1NoZjsKKwkJICB3aW5kb3dOcmdGX1RtcCA9IGJsb2NrU3dpdGNoaW5nQ29udHJvbC0+d2luZG93TnJnRlsxXVt3XSA8PCB3aW5kb3dOcmdGX1NoZjsKKworCQkgIC8qIGEgc2xpZGluZyBhdmVyYWdlIG9mIHRoZSBwcmV2aW91cyBlbmVyZ2llcyAqLworCQkgIGJsb2NrU3dpdGNoaW5nQ29udHJvbC0+YWNjV2luZG93TnJnID0gKGZpeG11bChvbmVNaW51c0FjY1dpbmRvd05yZ0ZhYywgYWNjV2luZG93TnJnX1RtcCkgPj4gYWNjV2luZG93TnJnX1NoZikgKworCQkJICAoZml4bXVsKGFjY1dpbmRvd05yZ0ZhYywgZW5NMV9UbXApID4+IGVuTTFfU2hmKTsKKworCisJCSAgLyogaWYgdGhlIGVuZXJneSB3aXRoIHRoZSByYXRpbyBpcyBiaWdnZXIgdGhhbiB0aGUgYXZlcmFnZSwgYW5kIHRoZSBhdHRhY2sgYW5kIHNob3J0IGJsb2NrICAqLworCQkgIGlmICgoZml4bXVsKHdpbmRvd05yZ0ZfVG1wLCBibG9ja1N3aXRjaGluZ0NvbnRyb2wtPmludkF0dGFja1JhdGlvKSA+PiB3aW5kb3dOcmdGX1NoZikgPgorCQkJICBibG9ja1N3aXRjaGluZ0NvbnRyb2wtPmFjY1dpbmRvd05yZyApIHsKKwkJCQkgIGJsb2NrU3dpdGNoaW5nQ29udHJvbC0+YXR0YWNrID0gVFJVRTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQkJCSAgYmxvY2tTd2l0Y2hpbmdDb250cm9sLT5sYXN0QXR0YWNrSW5kZXggPSB3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCSAgfQorCQkgIGVuTTEgPSBibG9ja1N3aXRjaGluZ0NvbnRyb2wtPndpbmRvd05yZ0ZbMV1bd107ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCSAgZW5NYXggPSBtYXgoZW5NYXgsIGVuTTEpOworCSAgfQorCisJICBpZiAoZW5NYXggPCBtaW5BdHRhY2tOcmcpIHsKKwkJICBibG9ja1N3aXRjaGluZ0NvbnRyb2wtPmF0dGFjayA9IEZBTFNFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCSAgfQorICB9CisgIGVsc2UKKyAgeworCSAgYmxvY2tTd2l0Y2hpbmdDb250cm9sLT5hdHRhY2sgPSBUUlVFOworICB9CisKKyAgLyogQ2hlY2sgaWYgYXR0YWNrIHNwcmVhZHMgb3ZlciBmcmFtZSBib3JkZXIgKi8gICAgIAorICBpZiAoKCFibG9ja1N3aXRjaGluZ0NvbnRyb2wtPmF0dGFjaykgJiYgKGJsb2NrU3dpdGNoaW5nQ29udHJvbC0+bGFzdGF0dGFjaykpIHsKKyAgICAgCisgICAgaWYgKGJsb2NrU3dpdGNoaW5nQ29udHJvbC0+YXR0YWNrSW5kZXggPT0gVFJBTlNfRkFDLTEpIHsKKyAgICAgIGJsb2NrU3dpdGNoaW5nQ29udHJvbC0+YXR0YWNrID0gVFJVRTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIH0KKworICAgIGJsb2NrU3dpdGNoaW5nQ29udHJvbC0+bGFzdGF0dGFjayA9IEZBTFNFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIH0KKyAgZWxzZSB7CisgICAgYmxvY2tTd2l0Y2hpbmdDb250cm9sLT5sYXN0YXR0YWNrID0gYmxvY2tTd2l0Y2hpbmdDb250cm9sLT5hdHRhY2s7ICAgICAgICAgICAKKyAgfQorCisgIGJsb2NrU3dpdGNoaW5nQ29udHJvbC0+d2luZG93U2VxdWVuY2UgPSAgYmxvY2tTd2l0Y2hpbmdDb250cm9sLT5uZXh0d2luZG93U2VxdWVuY2U7ICAgIAorCisgICAgIAorICBpZiAoYmxvY2tTd2l0Y2hpbmdDb250cm9sLT5hdHRhY2spIHsKKyAgICBibG9ja1N3aXRjaGluZ0NvbnRyb2wtPm5leHR3aW5kb3dTZXF1ZW5jZSA9IFNIT1JUX1dJTkRPVzsKKyAgfQorICBlbHNlIHsKKyAgICBibG9ja1N3aXRjaGluZ0NvbnRyb2wtPm5leHR3aW5kb3dTZXF1ZW5jZSA9IExPTkdfV0lORE9XOworICB9CisKKyAgLyogdXBkYXRlIHNob3J0IGJsb2NrIGdyb3VwICovIAorICBpZiAoYmxvY2tTd2l0Y2hpbmdDb250cm9sLT5uZXh0d2luZG93U2VxdWVuY2UgPT0gU0hPUlRfV0lORE9XKSB7CisgICAgIAorICAgIGlmIChibG9ja1N3aXRjaGluZ0NvbnRyb2wtPndpbmRvd1NlcXVlbmNlPT0gTE9OR19XSU5ET1cpIHsKKyAgICAgIGJsb2NrU3dpdGNoaW5nQ29udHJvbC0+d2luZG93U2VxdWVuY2UgPSBTVEFSVF9XSU5ET1c7ICAgICAgICAgICAgICAgICAgICAgIAorICAgIH0KKyAgICAgCisgICAgaWYgKGJsb2NrU3dpdGNoaW5nQ29udHJvbC0+d2luZG93U2VxdWVuY2UgPT0gU1RPUF9XSU5ET1cpIHsKKyAgICAgIGJsb2NrU3dpdGNoaW5nQ29udHJvbC0+d2luZG93U2VxdWVuY2UgPSBTSE9SVF9XSU5ET1c7ICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgYmxvY2tTd2l0Y2hpbmdDb250cm9sLT5ub09mR3JvdXBzID0gMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICBibG9ja1N3aXRjaGluZ0NvbnRyb2wtPmdyb3VwTGVuWzBdID0gMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgIGJsb2NrU3dpdGNoaW5nQ29udHJvbC0+Z3JvdXBMZW5bMV0gPSAzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgYmxvY2tTd2l0Y2hpbmdDb250cm9sLT5ncm91cExlblsyXSA9IDI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgfQorICB9CisKKyAgLyogdXBkYXRlIGJsb2NrIHR5cGUgKi8gIAorICBpZiAoYmxvY2tTd2l0Y2hpbmdDb250cm9sLT5uZXh0d2luZG93U2VxdWVuY2UgPT0gTE9OR19XSU5ET1cpIHsKKyAgICAgCisgICAgaWYgKGJsb2NrU3dpdGNoaW5nQ29udHJvbC0+d2luZG93U2VxdWVuY2UgPT0gU0hPUlRfV0lORE9XKSB7CisgICAgICBibG9ja1N3aXRjaGluZ0NvbnRyb2wtPm5leHR3aW5kb3dTZXF1ZW5jZSA9IFNUT1BfV0lORE9XOyAgICAgICAgICAgICAgICAgICAKKyAgICB9CisgIH0KKworICByZXR1cm4oVFJVRSk7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IFNyY2hNYXhXaXRoSW5kZXgKKyogZGVzY3JpcHRpb246ICBzZWFyY2ggZm9yIHRoZSBiaWdnZXN0IHZhbHVlIGluIGFuIGFycmF5CisqIHJldHVybnM6ICAgICAgdGhlIG1heCB2YWx1ZQorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyBXb3JkMzIgU3JjaE1heFdpdGhJbmRleChjb25zdCBXb3JkMzIgaW5bXSwgV29yZDE2ICppbmRleCwgV29yZDE2IG4pCit7CisgIFdvcmQzMiBtYXg7CisgIFdvcmQzMiBpLCBpZHg7CisKKyAgLyogU2VhcmNoIG1heGltdW0gdmFsdWUgaW4gYXJyYXkgYW5kIHJldHVybiBpbmRleCBhbmQgdmFsdWUgKi8KKyAgbWF4ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIGlkeCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgCisgICAgaWYgKGluW2krMV0gID4gbWF4KSB7CisgICAgICBtYXggPSBpbltpKzFdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgaWR4ID0gaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICB9CisgIH0KKyAgKmluZGV4ID0gaWR4OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgcmV0dXJuKG1heCk7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBDYWxjV2luZG93RW5lcmd5CisqIGRlc2NyaXB0aW9uOiAgY2FsY3VsYXRlIHRoZSBlbmVyZ3kgYmVmb3JlIGlpci1maWx0ZXIgYW5kIGFmdGVyIGlyci1maWx0ZXIKKyogcmV0dXJuczogICAgICBUUlVFIGlmIHN1Y2Nlc3MKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisjaWZuZGVmIEFSTVY1RQ0KK1dvcmQzMiBDYWxjV2luZG93RW5lcmd5KEJMT0NLX1NXSVRDSElOR19DT05UUk9MICpibG9ja1N3aXRjaGluZ0NvbnRyb2wsCisgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgKnRpbWVTaWduYWwsCisgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgY2hJbmNyZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgd2luZG93TGVuKQoreworICBXb3JkMzIgdywgaSwgd09mZnNldCwgdGlkeCwgY2g7CisgIFdvcmQzMiBhY2N1VUUsIGFjY3VGRTsKKyAgV29yZDMyIHRlbXBVbmZpbHRlcmVkOworICBXb3JkMzIgdGVtcEZpbHRlcmVkOw0KKyAgV29yZDMyIHN0YXRlczAsIHN0YXRlczE7DQorICBXb3JkMzIgQ29lZmYwLCBDb2VmZjE7DQorDQorCisgIHN0YXRlczAgPSBibG9ja1N3aXRjaGluZ0NvbnRyb2wtPmlpclN0YXRlc1swXTsNCisgIHN0YXRlczEgPSBibG9ja1N3aXRjaGluZ0NvbnRyb2wtPmlpclN0YXRlc1sxXTsNCisgIENvZWZmMCA9IGhpUGFzc0NvZWZmWzBdOw0KKyAgQ29lZmYxID0gaGlQYXNzQ29lZmZbMV07CisgIHRpZHggPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBmb3IgKHc9MDsgdyA8IEJMT0NLX1NXSVRDSF9XSU5ET1dTOyB3KyspIHsKKworICAgIGFjY3VVRSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBhY2N1RkUgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgICBmb3IoaT0wOyBpPHdpbmRvd0xlbjsgaSsrKSB7CisJICBXb3JkMzIgYWNjdTEsIGFjY3UyLCBhY2N1MzsNCisJICBXb3JkMzIgb3V0Ow0KKwkgIHRlbXBVbmZpbHRlcmVkID0gdGltZVNpZ25hbFt0aWR4XTsKKyAgICAgIHRpZHggPSB0aWR4ICsgY2hJbmNyZW1lbnQ7CisNCisJICBhY2N1MSA9IExfbXB5X2xzKENvZWZmMSwgdGVtcFVuZmlsdGVyZWQpOw0KKwkgIGFjY3UyID0gZml4bXVsKCBDb2VmZjAsIHN0YXRlczEgKTsNCisJICBhY2N1MyA9IGFjY3UxIC0gc3RhdGVzMDsNCisJICBvdXQgPSBhY2N1MyAtIGFjY3UyOw0KKw0KKwkgIHN0YXRlczAgPSBhY2N1MTsgICAgICAgICAgICAgDQorCSAgc3RhdGVzMSA9IG91dDsgICAgICAgICAgICAgICANCisNCisgICAgICB0ZW1wRmlsdGVyZWQgPSBleHRyYWN0X2gob3V0KTsJICAKKyAgICAgIGFjY3VVRSArPSAodGVtcFVuZmlsdGVyZWQgKiB0ZW1wVW5maWx0ZXJlZCkgPj4gRU5FUkdZX1NISUZUOworICAgICAgYWNjdUZFICs9ICh0ZW1wRmlsdGVyZWQgKiB0ZW1wRmlsdGVyZWQpID4+IEVORVJHWV9TSElGVDsKKyAgICB9CisKKyAgICBibG9ja1N3aXRjaGluZ0NvbnRyb2wtPndpbmRvd05yZ1sxXVt3XSA9IGFjY3VVRTsgICAgICAgICAgICAgCisgICAgYmxvY2tTd2l0Y2hpbmdDb250cm9sLT53aW5kb3dOcmdGWzFdW3ddID0gYWNjdUZFOyAgICAgICAgICAgIAorCisgIH0NCisNCisgIGJsb2NrU3dpdGNoaW5nQ29udHJvbC0+aWlyU3RhdGVzWzBdID0gc3RhdGVzMDsNCisgIGJsb2NrU3dpdGNoaW5nQ29udHJvbC0+aWlyU3RhdGVzWzFdID0gc3RhdGVzMTsKKworICByZXR1cm4oVFJVRSk7Cit9CisjZW5kaWYKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IElJUkZpbHRlcgorKiBkZXNjcmlwdGlvbjogIGNhbGN1bGF0ZSB0aGUgaWlyLWZpbHRlciBmb3IgYW4gYXJyYXkKKyogcmV0dXJuczogICAgICB0aGUgcmVzdWx0IGFmdGVyIGlpci1maWx0ZXIKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgV29yZDE2IElJUkZpbHRlcihjb25zdCBXb3JkMTYgaW4sIGNvbnN0IFdvcmQzMiBjb2VmZltdLCBXb3JkMzIgc3RhdGVzW10pCit7CisgIFdvcmQzMiBhY2N1MSwgYWNjdTIsIGFjY3UzOworICBXb3JkMzIgb3V0OworCisgIGFjY3UxID0gTF9tcHlfbHMoY29lZmZbMV0sIGluKTsKKyAgYWNjdTMgPSBhY2N1MSAtIHN0YXRlc1swXTsKKyAgYWNjdTIgPSBmaXhtdWwoIGNvZWZmWzBdLCBzdGF0ZXNbMV0gKTsKKyAgb3V0ID0gYWNjdTMgLSBhY2N1MjsKKworICBzdGF0ZXNbMF0gPSBhY2N1MTsgICAgICAgICAgICAgCisgIHN0YXRlc1sxXSA9IG91dDsgICAgICAgICAgICAgICAKKworICByZXR1cm4gcm91bmQxNihvdXQpOworfQorCisKK3N0YXRpYyBXb3JkMTYgc3luY2hyb25pemVkQmxvY2tUeXBlVGFibGVbNF1bNF0gPSB7CisgIC8qICAgICAgICAgICAgICAgICBMT05HX1dJTkRPVyAgIFNUQVJUX1dJTkRPVyAgU0hPUlRfV0lORE9XICBTVE9QX1dJTkRPVyAqLworICAvKiBMT05HX1dJTkRPVyAgKi97TE9OR19XSU5ET1csICBTVEFSVF9XSU5ET1csIFNIT1JUX1dJTkRPVywgU1RPUF9XSU5ET1d9LAorICAvKiBTVEFSVF9XSU5ET1cgKi97U1RBUlRfV0lORE9XLCBTVEFSVF9XSU5ET1csIFNIT1JUX1dJTkRPVywgU0hPUlRfV0lORE9XfSwKKyAgLyogU0hPUlRfV0lORE9XICove1NIT1JUX1dJTkRPVywgU0hPUlRfV0lORE9XLCBTSE9SVF9XSU5ET1csIFNIT1JUX1dJTkRPV30sCisgIC8qIFNUT1BfV0lORE9XICAqL3tTVE9QX1dJTkRPVywgIFNIT1JUX1dJTkRPVywgU0hPUlRfV0lORE9XLCBTVE9QX1dJTkRPV30KK307CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IFN5bmNCbG9ja1N3aXRjaGluZworKiBkZXNjcmlwdGlvbjogIHVwZGF0ZSBibG9jayB0eXBlIGFuZCBncm91cCB2YWx1ZQorKiByZXR1cm5zOiAgICAgIFRSVUUgaWYgc3VjY2VzcworKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK1dvcmQxNiBTeW5jQmxvY2tTd2l0Y2hpbmcoQkxPQ0tfU1dJVENISU5HX0NPTlRST0wgKmJsb2NrU3dpdGNoaW5nQ29udHJvbExlZnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgIEJMT0NLX1NXSVRDSElOR19DT05UUk9MICpibG9ja1N3aXRjaGluZ0NvbnRyb2xSaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2IG5DaGFubmVscykKK3sKKyAgV29yZDE2IGk7CisgIFdvcmQxNiBwYXRjaFR5cGUgPSBMT05HX1dJTkRPVzsgICAgICAgICAgICAgICAgCisKKyAgIAorICBpZiAobkNoYW5uZWxzID09IDEpIHsgLyogTW9ubyAqLworICAgIGlmIChibG9ja1N3aXRjaGluZ0NvbnRyb2xMZWZ0LT53aW5kb3dTZXF1ZW5jZSAhPSBTSE9SVF9XSU5ET1cpIHsKKyAgICAgIGJsb2NrU3dpdGNoaW5nQ29udHJvbExlZnQtPm5vT2ZHcm91cHMgPSAxOyAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgIGJsb2NrU3dpdGNoaW5nQ29udHJvbExlZnQtPmdyb3VwTGVuWzBdID0gMTsgICAgICAgICAgICAgICAgICAgICAgICAKKworICAgICAgZm9yIChpPTE7IGk8VFJBTlNfRkFDOyBpKyspIHsKKyAgICAgICAgYmxvY2tTd2l0Y2hpbmdDb250cm9sTGVmdC0+Z3JvdXBMZW5baV0gPSAwOyAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgIH0KKyAgICB9CisgIH0KKyAgZWxzZSB7IC8qIFN0ZXJlbyBjb21tb24gV2luZG93ICovCisgICAgcGF0Y2hUeXBlID0gc3luY2hyb25pemVkQmxvY2tUeXBlVGFibGVbcGF0Y2hUeXBlXVtibG9ja1N3aXRjaGluZ0NvbnRyb2xMZWZ0LT53aW5kb3dTZXF1ZW5jZV07ICAgICAgICAKKyAgICBwYXRjaFR5cGUgPSBzeW5jaHJvbml6ZWRCbG9ja1R5cGVUYWJsZVtwYXRjaFR5cGVdW2Jsb2NrU3dpdGNoaW5nQ29udHJvbFJpZ2h0LT53aW5kb3dTZXF1ZW5jZV07ICAgICAgIAorCisgICAgLyogU2V0IHN5bmNocm9uaXplZCBCbG9ja3R5cGUgKi8KKyAgICBibG9ja1N3aXRjaGluZ0NvbnRyb2xMZWZ0LT53aW5kb3dTZXF1ZW5jZSA9IHBhdGNoVHlwZTsgICAgICAgICAgICAgICAKKyAgICBibG9ja1N3aXRjaGluZ0NvbnRyb2xSaWdodC0+d2luZG93U2VxdWVuY2UgPSBwYXRjaFR5cGU7ICAgICAgICAgICAgICAKKworICAgIC8qIFN5bmNocm9uaXplIGdyb3VwaW5nIGluZm8gKi8gICAgIAorICAgIGlmKHBhdGNoVHlwZSAhPSBTSE9SVF9XSU5ET1cpIHsgLyogTG9uZyBCbG9ja3MgKi8KKyAgICAgIC8qIFNldCBncm91cGluZyBpbmZvICovCisgICAgICBibG9ja1N3aXRjaGluZ0NvbnRyb2xMZWZ0LT5ub09mR3JvdXBzID0gMTsgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICBibG9ja1N3aXRjaGluZ0NvbnRyb2xSaWdodC0+bm9PZkdyb3VwcyA9IDE7ICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICBibG9ja1N3aXRjaGluZ0NvbnRyb2xMZWZ0LT5ncm91cExlblswXSA9IDE7ICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICBibG9ja1N3aXRjaGluZ0NvbnRyb2xSaWdodC0+Z3JvdXBMZW5bMF0gPSAxOyAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgICAgIGZvciAoaT0xOyBpPFRSQU5TX0ZBQzsgaSsrKSB7CisgICAgICAgIGJsb2NrU3dpdGNoaW5nQ29udHJvbExlZnQtPmdyb3VwTGVuW2ldID0gMDsgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIGJsb2NrU3dpdGNoaW5nQ29udHJvbFJpZ2h0LT5ncm91cExlbltpXSA9IDA7ICAgICAgICAgICAgICAgICAgICAgCisgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgIAorICAgICAgaWYgKGJsb2NrU3dpdGNoaW5nQ29udHJvbExlZnQtPm1heFdpbmRvd05yZyA+IGJsb2NrU3dpdGNoaW5nQ29udHJvbFJpZ2h0LT5tYXhXaW5kb3dOcmcpIHsKKyAgICAgICAgLyogTGVmdCBDaGFubmVsIHdpbnMgKi8KKyAgICAgICAgYmxvY2tTd2l0Y2hpbmdDb250cm9sUmlnaHQtPm5vT2ZHcm91cHMgPSBibG9ja1N3aXRjaGluZ0NvbnRyb2xMZWZ0LT5ub09mR3JvdXBzOyAgICAgICAgICAKKyAgICAgICAgZm9yIChpPTA7IGk8VFJBTlNfRkFDOyBpKyspIHsKKyAgICAgICAgICBibG9ja1N3aXRjaGluZ0NvbnRyb2xSaWdodC0+Z3JvdXBMZW5baV0gPSBibG9ja1N3aXRjaGluZ0NvbnRyb2xMZWZ0LT5ncm91cExlbltpXTsgICAgICAKKyAgICAgICAgfQorICAgICAgfQorICAgICAgZWxzZSB7CisgICAgICAgIC8qIFJpZ2h0IENoYW5uZWwgd2lucyAqLworICAgICAgICBibG9ja1N3aXRjaGluZ0NvbnRyb2xMZWZ0LT5ub09mR3JvdXBzID0gYmxvY2tTd2l0Y2hpbmdDb250cm9sUmlnaHQtPm5vT2ZHcm91cHM7ICAgICAgICAgIAorICAgICAgICBmb3IgKGk9MDsgaTxUUkFOU19GQUM7IGkrKykgeworICAgICAgICAgIGJsb2NrU3dpdGNoaW5nQ29udHJvbExlZnQtPmdyb3VwTGVuW2ldID0gYmxvY2tTd2l0Y2hpbmdDb250cm9sUmlnaHQtPmdyb3VwTGVuW2ldOyAgICAgIAorICAgICAgICB9CisgICAgICB9CisgICAgfQorICB9IC8qZW5kaWYgTW9ubyBvciBTdGVyZW8gKi8KKworICByZXR1cm4oVFJVRSk7Cit9CmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9jaGFubmVsX21hcC5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvY2hhbm5lbF9tYXAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDcyOTNiCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvY2hhbm5lbF9tYXAuYwpAQCAtMCwwICsxLDEyMyBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJY2hhbm5lbF9tYXAuYw0KKw0KKwlDb250ZW50OgljaGFubmVsIG1hcHBpbmcgZnVuY3Rpb25zDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2luY2x1ZGUgImNoYW5uZWxfbWFwLmgiCisjaW5jbHVkZSAiYml0ZW5jLmgiCisjaW5jbHVkZSAicHN5X2NvbnN0LmgiCisjaW5jbHVkZSAicWNfZGF0YS5oIgorCitzdGF0aWMgY29uc3QgV29yZDE2IG1heENoYW5uZWxCaXRzID0gTUFYQklUU19DT0VGOworCitzdGF0aWMgV29yZDE2IGluaXRFbGVtZW50KEVMRU1FTlRfSU5GTyogZWxJbmZvLCBFTEVNRU5UX1RZUEUgZWxUeXBlKQoreworICBXb3JkMTYgZXJyb3I9MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICBlbEluZm8tPmVsVHlwZT1lbFR5cGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICBzd2l0Y2goZWxJbmZvLT5lbFR5cGUpIHsKKworICAgIGNhc2UgSURfU0NFOgorICAgICAgZWxJbmZvLT5uQ2hhbm5lbHNJbkVsPTE7ICAgICAgICAgICAgICAgICAgICAgICAKKworICAgICAgZWxJbmZvLT5DaGFubmVsSW5kZXhbMF09MDsgICAgICAgICAgICAgICAgICAgICAKKworICAgICAgZWxJbmZvLT5pbnN0YW5jZVRhZz0wOyAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBJRF9DUEU6CisKKyAgICAgIGVsSW5mby0+bkNoYW5uZWxzSW5FbD0yOyAgICAgICAgICAgICAgICAgICAgICAgIAorCisgICAgICBlbEluZm8tPkNoYW5uZWxJbmRleFswXT0wOyAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgIGVsSW5mby0+Q2hhbm5lbEluZGV4WzFdPTE7ICAgICAgICAgICAgICAgICAgICAgIAorCisgICAgICBlbEluZm8tPmluc3RhbmNlVGFnPTA7ICAgICAgICAgICAgICAgICAgICAKKyAgICAgIGJyZWFrOworCisgICAgZGVmYXVsdDoKKyAgICAgIGVycm9yPTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICB9CisKKyAgcmV0dXJuIGVycm9yOworfQorCisKK1dvcmQxNiBJbml0RWxlbWVudEluZm8gKFdvcmQxNiBuQ2hhbm5lbHMsIEVMRU1FTlRfSU5GTyogZWxJbmZvKQoreworICBXb3JkMTYgZXJyb3I7CisgIGVycm9yID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgc3dpdGNoKG5DaGFubmVscykgeworCisgICAgY2FzZSAxOiAKKyAgICAgIGluaXRFbGVtZW50KGVsSW5mbywgSURfU0NFKTsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSAyOgorICAgICAgaW5pdEVsZW1lbnQoZWxJbmZvLCBJRF9DUEUpOworICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgZXJyb3I9NDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICB9CisKKyAgcmV0dXJuIGVycm9yOworfQorCisKK1dvcmQxNiBJbml0RWxlbWVudEJpdHMoRUxFTUVOVF9CSVRTICplbGVtZW50Qml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgRUxFTUVOVF9JTkZPIGVsSW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgV29yZDMyIGJpdHJhdGVUb3QsCisgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiBhdmVyYWdlQml0c1RvdCwKKyAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IHN0YXRpY0JpdHNUb3QpCit7CisgIFdvcmQxNiBlcnJvcjsKKyAgZXJyb3IgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgICBzd2l0Y2goZWxJbmZvLm5DaGFubmVsc0luRWwpIHsKKyAgICBjYXNlIDE6CisgICAgICBlbGVtZW50Qml0cy0+Y2hCaXRyYXRlID0gYml0cmF0ZVRvdDsgICAgICAgICAgICAgICAgICAgICAKKyAgICAgIGVsZW1lbnRCaXRzLT5hdmVyYWdlQml0cyA9IGF2ZXJhZ2VCaXRzVG90IC0gc3RhdGljQml0c1RvdDsKKyAgICAgIGVsZW1lbnRCaXRzLT5tYXhCaXRzID0gbWF4Q2hhbm5lbEJpdHM7ICAgICAgICAgICAgICAgICAgIAorCisgICAgICBlbGVtZW50Qml0cy0+bWF4Qml0UmVzQml0cyA9IG1heENoYW5uZWxCaXRzIC0gYXZlcmFnZUJpdHNUb3Q7CisgICAgICBlbGVtZW50Qml0cy0+bWF4Qml0UmVzQml0cyA9IGVsZW1lbnRCaXRzLT5tYXhCaXRSZXNCaXRzIC0gKGVsZW1lbnRCaXRzLT5tYXhCaXRSZXNCaXRzICYgNyk7IAorICAgICAgZWxlbWVudEJpdHMtPmJpdFJlc0xldmVsID0gZWxlbWVudEJpdHMtPm1heEJpdFJlc0JpdHM7ICAgCisgICAgICBlbGVtZW50Qml0cy0+cmVsYXRpdmVCaXRzICA9IDB4NDAwMDsgLyogMS4wZi8yICovICAgICAgICAKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSAyOgorICAgICAgZWxlbWVudEJpdHMtPmNoQml0cmF0ZSAgID0gYml0cmF0ZVRvdCA+PiAxOworICAgICAgZWxlbWVudEJpdHMtPmF2ZXJhZ2VCaXRzID0gYXZlcmFnZUJpdHNUb3QgLSBzdGF0aWNCaXRzVG90OworICAgICAgZWxlbWVudEJpdHMtPm1heEJpdHMgICAgID0gbWF4Q2hhbm5lbEJpdHMgPDwgMTsKKworICAgICAgZWxlbWVudEJpdHMtPm1heEJpdFJlc0JpdHMgPSAobWF4Q2hhbm5lbEJpdHMgPDwgMSkgLSBhdmVyYWdlQml0c1RvdDsKKyAgICAgIGVsZW1lbnRCaXRzLT5tYXhCaXRSZXNCaXRzID0gZWxlbWVudEJpdHMtPm1heEJpdFJlc0JpdHMgLSAoZWxlbWVudEJpdHMtPm1heEJpdFJlc0JpdHMgJiA3KTsgICAKKyAgICAgIGVsZW1lbnRCaXRzLT5iaXRSZXNMZXZlbCA9IGVsZW1lbnRCaXRzLT5tYXhCaXRSZXNCaXRzOyAgICAgCisgICAgICBlbGVtZW50Qml0cy0+cmVsYXRpdmVCaXRzID0gMHg0MDAwOyAvKiAxLjBmLzIgKi8gICAgICAgICAgIAorICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgZXJyb3IgPSAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgfQorICByZXR1cm4gZXJyb3I7Cit9CmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9keW5fYml0cy5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvZHluX2JpdHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZGVhY2NhCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvZHluX2JpdHMuYwpAQCAtMCwwICsxLDU0NSBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJZHluX2JpdHMuYw0KKw0KKwlDb250ZW50OglOb2lzZWxlc3MgY29kZXIgbW9kdWxlIGZ1bmN0aW9ucw0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpbmNsdWRlICJhYWNfcm9tLmgiCisjaW5jbHVkZSAiZHluX2JpdHMuaCIKKyNpbmNsdWRlICJiaXRfY250LmgiCisjaW5jbHVkZSAicHN5X2NvbnN0LmgiCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IGJ1aWxkQml0TG9va1VwCisqIGRlc2NyaXB0aW9uOiAgY291bnQgYml0cyB1c2luZyBhbGwgcG9zc2libGUgdGFibGVzCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyB2b2lkCitidWlsZEJpdExvb2tVcChjb25zdCBXb3JkMTYgKnF1YW50U3BlY3RydW0sCisgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgbWF4U2ZiLAorICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICpzZmJPZmZzZXQsCisgICAgICAgICAgICAgICBjb25zdCBVV29yZDE2ICpzZmJNYXgsCisgICAgICAgICAgICAgICBXb3JkMTYgYml0TG9va1VwW01BWF9TRkJfTE9OR11bQ09ERV9CT09LX0VTQ19ORFggKyAxXSwKKyAgICAgICAgICAgICAgIFNFQ1RJT05fSU5GTyAqIHNlY3Rpb25JbmZvKQoreworICBXb3JkMzIgaTsKKworICBmb3IgKGk9MDsgaTxtYXhTZmI7IGkrKykgeworICAgIFdvcmQxNiBzZmJXaWR0aCwgbWF4VmFsOworCisgICAgc2VjdGlvbkluZm9baV0uc2ZiQ250ID0gMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIHNlY3Rpb25JbmZvW2ldLnNmYlN0YXJ0ID0gaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBzZWN0aW9uSW5mb1tpXS5zZWN0aW9uQml0cyA9IElOVkFMSURfQklUQ09VTlQ7ICAgICAgICAgICAgICAgCisgICAgc2VjdGlvbkluZm9baV0uY29kZUJvb2sgPSAtMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIHNmYldpZHRoID0gc2ZiT2Zmc2V0W2kgKyAxXSAtIHNmYk9mZnNldFtpXTsgICAgICAgICAgICAgIAorICAgIG1heFZhbCA9IHNmYk1heFtpXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBiaXRDb3VudChxdWFudFNwZWN0cnVtICsgc2ZiT2Zmc2V0W2ldLCBzZmJXaWR0aCwgbWF4VmFsLCBiaXRMb29rVXBbaV0pOworICB9Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IGZpbmRCZXN0Qm9vaworKiBkZXNjcmlwdGlvbjogIGVzc2VudGlhbCBoZWxwZXIgZnVuY3Rpb25zCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyBXb3JkMTYKK2ZpbmRCZXN0Qm9vayhjb25zdCBXb3JkMTYgKmJjLCBXb3JkMTYgKmJvb2spCit7CisgIFdvcmQzMiBtaW5CaXRzLCBqOworICBtaW5CaXRzID0gSU5WQUxJRF9CSVRDT1VOVDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICBmb3IgKGo9MDsgajw9Q09ERV9CT09LX0VTQ19ORFg7IGorKykgeworICAgICAKKyAgICBpZiAoYmNbal0gPCBtaW5CaXRzKSB7CisgICAgICBtaW5CaXRzID0gYmNbal07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgKmJvb2sgPSBqOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICB9CisgIH0KKyAgcmV0dXJuIGV4dHJhY3RfbChtaW5CaXRzKTsKK30KKworc3RhdGljIFdvcmQxNgorZmluZE1pbk1lcmdlQml0cyhjb25zdCBXb3JkMTYgKmJjMSwgY29uc3QgV29yZDE2ICpiYzIpCit7CisgIFdvcmQzMiBtaW5CaXRzLCBqLCBzdW07CisgIG1pbkJpdHMgPSBJTlZBTElEX0JJVENPVU5UOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgIGZvciAoaj0wOyBqPD1DT0RFX0JPT0tfRVNDX05EWDsgaisrKSB7CisgICAgc3VtID0gYmMxW2pdICsgYmMyW2pdOworICAgIGlmIChzdW0gPCBtaW5CaXRzKSB7CisgICAgICBtaW5CaXRzID0gc3VtOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIH0KKyAgfQorICByZXR1cm4gZXh0cmFjdF9sKG1pbkJpdHMpOworfQorCitzdGF0aWMgdm9pZAorbWVyZ2VCaXRMb29rVXAoV29yZDE2ICpiYzEsIGNvbnN0IFdvcmQxNiAqYmMyKQoreworICBXb3JkMzIgajsKKworICBmb3IgKGo9MDsgajw9Q09ERV9CT09LX0VTQ19ORFg7IGorKykgeworICAgIGJjMVtqXSA9IG1pbihiYzFbal0gKyBiYzJbal0sIElOVkFMSURfQklUQ09VTlQpOworICB9Cit9CisKK3N0YXRpYyBXb3JkMTYKK2ZpbmRNYXhNZXJnZShjb25zdCBXb3JkMTYgbWVyZ2VHYWluTG9va1VwW01BWF9TRkJfTE9OR10sCisgICAgICAgICAgICAgY29uc3QgU0VDVElPTl9JTkZPICpzZWN0aW9uSW5mbywKKyAgICAgICAgICAgICBjb25zdCBXb3JkMTYgbWF4U2ZiLCBXb3JkMTYgKm1heE5keCkKK3sKKyAgV29yZDMyIGksIG1heE1lcmdlR2FpbjsKKyAgbWF4TWVyZ2VHYWluID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgZm9yIChpPTA7IGkrc2VjdGlvbkluZm9baV0uc2ZiQ250IDwgbWF4U2ZiOyBpICs9IHNlY3Rpb25JbmZvW2ldLnNmYkNudCkgeworICAgICAKKyAgICBpZiAobWVyZ2VHYWluTG9va1VwW2ldID4gbWF4TWVyZ2VHYWluKSB7CisgICAgICBtYXhNZXJnZUdhaW4gPSBtZXJnZUdhaW5Mb29rVXBbaV07ICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgKm1heE5keCA9IGk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICB9CisgIH0KKyAgcmV0dXJuIGV4dHJhY3RfbChtYXhNZXJnZUdhaW4pOworfQorCisKKworc3RhdGljIFdvcmQxNgorQ2FsY01lcmdlR2Fpbihjb25zdCBTRUNUSU9OX0lORk8gKnNlY3Rpb25JbmZvLAorICAgICAgICAgICAgICBXb3JkMTYgYml0TG9va1VwW01BWF9TRkJfTE9OR11bQ09ERV9CT09LX0VTQ19ORFggKyAxXSwKKyAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICpzaWRlSW5mb1RhYiwKKyAgICAgICAgICAgICAgY29uc3QgV29yZDE2IG5keDEsCisgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiBuZHgyKQoreworICBXb3JkMzIgU3BsaXRCaXRzOworICBXb3JkMzIgTWVyZ2VCaXRzOworICBXb3JkMzIgTWVyZ2VHYWluOworCisgIC8qCisgICAgQml0IGFtb3VudCBmb3Igc3BsaXR0ZWQgc2VjdGlvbnMKKyAgKi8KKyAgU3BsaXRCaXRzID0gc2VjdGlvbkluZm9bbmR4MV0uc2VjdGlvbkJpdHMgKyBzZWN0aW9uSW5mb1tuZHgyXS5zZWN0aW9uQml0czsKKworICBNZXJnZUJpdHMgPSBzaWRlSW5mb1RhYltzZWN0aW9uSW5mb1tuZHgxXS5zZmJDbnQgKyBzZWN0aW9uSW5mb1tuZHgyXS5zZmJDbnRdICsKKyAgICAgICAgICAgICAgICAgIGZpbmRNaW5NZXJnZUJpdHMoYml0TG9va1VwW25keDFdLCBiaXRMb29rVXBbbmR4Ml0pOworICBNZXJnZUdhaW4gPSAoU3BsaXRCaXRzIC0gTWVyZ2VCaXRzKTsKKworICByZXR1cm4gZXh0cmFjdF9sKE1lcmdlR2Fpbik7Cit9CisKKy8qCisgIHNlY3Rpb25pbmcgU3RhZ2UgMDpmaW5kIG1pbmltdW0gY29kYm9va3MKKyovCisKK3N0YXRpYyB2b2lkCitnbVN0YWdlMChTRUNUSU9OX0lORk8gKiBzZWN0aW9uSW5mbywKKyAgICAgICAgIFdvcmQxNiBiaXRMb29rVXBbTUFYX1NGQl9MT05HXVtDT0RFX0JPT0tfRVNDX05EWCArIDFdLAorICAgICAgICAgY29uc3QgV29yZDE2IG1heFNmYikKK3sKKyAgV29yZDMyIGk7CisKKyAgZm9yIChpPTA7IGk8bWF4U2ZiOyBpKyspIHsKKyAgICAvKiBTaWRlLUluZm8gYml0cyB3aWxsIGJlIGNhbGN1bGF0ZWQgaW4gU3RhZ2UgMSEgICovCisgICAgIAorICAgIGlmIChzZWN0aW9uSW5mb1tpXS5zZWN0aW9uQml0cyA9PSBJTlZBTElEX0JJVENPVU5UKSB7CisgICAgICBzZWN0aW9uSW5mb1tpXS5zZWN0aW9uQml0cyA9IGZpbmRCZXN0Qm9vayhiaXRMb29rVXBbaV0sICYoc2VjdGlvbkluZm9baV0uY29kZUJvb2spKTsKKyAgICB9CisgIH0KK30KKworLyoKKyAgc2VjdGlvbmluZyBTdGFnZSAxOm1lcmdlIGFsbCBjb25uZWN0ZWQgcmVnaW9ucyB3aXRoIHRoZSBzYW1lIGNvZGUgYm9vayBhbmQKKyAgY2FsY3VsYXRlIHNpZGUgaW5mbworKi8KKworc3RhdGljIHZvaWQKK2dtU3RhZ2UxKFNFQ1RJT05fSU5GTyAqIHNlY3Rpb25JbmZvLAorICAgICAgICAgV29yZDE2IGJpdExvb2tVcFtNQVhfU0ZCX0xPTkddW0NPREVfQk9PS19FU0NfTkRYICsgMV0sCisgICAgICAgICBjb25zdCBXb3JkMTYgbWF4U2ZiLAorICAgICAgICAgY29uc3QgV29yZDE2ICpzaWRlSW5mb1RhYikKK3sKKyAgU0VDVElPTl9JTkZPICogc2VjdGlvbkluZm9fczsNCisgIFNFQ1RJT05fSU5GTyAqIHNlY3Rpb25JbmZvX2U7DQorICBXb3JkMzIgbWVyZ2VTdGFydCwgbWVyZ2VFbmQ7CisgIG1lcmdlU3RhcnQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgZG8geworCisgICAgc2VjdGlvbkluZm9fcyA9IHNlY3Rpb25JbmZvICsgbWVyZ2VTdGFydDsNCisJZm9yIChtZXJnZUVuZD1tZXJnZVN0YXJ0KzE7IG1lcmdlRW5kPG1heFNmYjsgbWVyZ2VFbmQrKykgeworICAgICAgc2VjdGlvbkluZm9fZSA9IHNlY3Rpb25JbmZvICsgbWVyZ2VFbmQ7IAorICAgICAgaWYgKHNlY3Rpb25JbmZvX3MtPmNvZGVCb29rICE9IHNlY3Rpb25JbmZvX2UtPmNvZGVCb29rKQorICAgICAgICBicmVhazsKKyAgICAgIHNlY3Rpb25JbmZvX3MtPnNmYkNudCArPSAxOworICAgICAgc2VjdGlvbkluZm9fcy0+c2VjdGlvbkJpdHMgKz0gc2VjdGlvbkluZm9fZS0+c2VjdGlvbkJpdHM7CisKKyAgICAgIG1lcmdlQml0TG9va1VwKGJpdExvb2tVcFttZXJnZVN0YXJ0XSwgYml0TG9va1VwW21lcmdlRW5kXSk7CisgICAgfQorCisgICAgc2VjdGlvbkluZm9fcy0+c2VjdGlvbkJpdHMgKz0gc2lkZUluZm9UYWJbc2VjdGlvbkluZm9fcy0+c2ZiQ250XTsKKyAgICBzZWN0aW9uSW5mb1ttZXJnZUVuZCAtIDFdLnNmYlN0YXJ0ID0gc2VjdGlvbkluZm9fcy0+c2ZiU3RhcnQ7ICAgICAgLyogc3BlZWQgdXAgcHJldiBzZWFyY2ggKi8gIAorCisgICAgbWVyZ2VTdGFydCA9IG1lcmdlRW5kOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgICAgCisgIH0gd2hpbGUgKG1lcmdlU3RhcnQgLSBtYXhTZmIgPCAwKTsKK30KKworLyoKKyAgc2VjdGlvbmluZyBTdGFnZSAyOmdyZWVkeSBtZXJnZSBhbGdvcml0aG0sIG1lcmdlIGNvbm5lY3RlZCBzZWN0aW9ucyB3aXRoCisgIG1heGltdW0gYml0IGdhaW4gdW50aWwgbm8gbW9yZSBnYWluIGlzIHBvc3NpYmxlCisqLworc3RhdGljIHZvaWQKK2dtU3RhZ2UyKFNFQ1RJT05fSU5GTyAqc2VjdGlvbkluZm8sCisgICAgICAgICBXb3JkMTYgbWVyZ2VHYWluTG9va1VwW01BWF9TRkJfTE9OR10sCisgICAgICAgICBXb3JkMTYgYml0TG9va1VwW01BWF9TRkJfTE9OR11bQ09ERV9CT09LX0VTQ19ORFggKyAxXSwKKyAgICAgICAgIGNvbnN0IFdvcmQxNiBtYXhTZmIsCisgICAgICAgICBjb25zdCBXb3JkMTYgKnNpZGVJbmZvVGFiKQoreworICBXb3JkMTYgaTsKKworICBmb3IgKGk9MDsgaStzZWN0aW9uSW5mb1tpXS5zZmJDbnQ8bWF4U2ZiOyBpKz1zZWN0aW9uSW5mb1tpXS5zZmJDbnQpIHsKKyAgICBtZXJnZUdhaW5Mb29rVXBbaV0gPSBDYWxjTWVyZ2VHYWluKHNlY3Rpb25JbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYml0TG9va1VwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lkZUluZm9UYWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGkgKyBzZWN0aW9uSW5mb1tpXS5zZmJDbnQpKTsKKyAgfQorCisgIHdoaWxlIChUUlVFKSB7CisgICAgV29yZDE2IG1heE1lcmdlR2FpbiwgbWF4TmR4LCBtYXhOZHhOZXh0LCBtYXhOZHhMYXN0OworCisgICAgbWF4TWVyZ2VHYWluID0gZmluZE1heE1lcmdlKG1lcmdlR2Fpbkxvb2tVcCwgc2VjdGlvbkluZm8sIG1heFNmYiwgJm1heE5keCk7CisKKyAgICAgCisgICAgaWYgKG1heE1lcmdlR2FpbiA8PSAwKQorICAgICAgYnJlYWs7CisKKworICAgIG1heE5keE5leHQgPSBtYXhOZHggKyBzZWN0aW9uSW5mb1ttYXhOZHhdLnNmYkNudDsKKworICAgIHNlY3Rpb25JbmZvW21heE5keF0uc2ZiQ250ID0gc2VjdGlvbkluZm9bbWF4TmR4XS5zZmJDbnQgKyBzZWN0aW9uSW5mb1ttYXhOZHhOZXh0XS5zZmJDbnQ7CisgICAgc2VjdGlvbkluZm9bbWF4TmR4XS5zZWN0aW9uQml0cyA9IHNlY3Rpb25JbmZvW21heE5keF0uc2VjdGlvbkJpdHMgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlY3Rpb25JbmZvW21heE5keE5leHRdLnNlY3Rpb25CaXRzIC0gbWF4TWVyZ2VHYWluKTsKKworCisgICAgbWVyZ2VCaXRMb29rVXAoYml0TG9va1VwW21heE5keF0sIGJpdExvb2tVcFttYXhOZHhOZXh0XSk7CisKKyAgICAgCisgICAgaWYgKG1heE5keCAhPSAwKSB7CisgICAgICBtYXhOZHhMYXN0ID0gc2VjdGlvbkluZm9bbWF4TmR4IC0gMV0uc2ZiU3RhcnQ7CisgICAgICBtZXJnZUdhaW5Mb29rVXBbbWF4TmR4TGFzdF0gPSBDYWxjTWVyZ2VHYWluKHNlY3Rpb25JbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaXRMb29rVXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpZGVJbmZvVGFiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhOZHhMYXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhOZHgpOworICAgIH0KKyAgICBtYXhOZHhOZXh0ID0gbWF4TmR4ICsgc2VjdGlvbkluZm9bbWF4TmR4XS5zZmJDbnQ7CisKKyAgICBzZWN0aW9uSW5mb1ttYXhOZHhOZXh0IC0gMV0uc2ZiU3RhcnQgPSBzZWN0aW9uSW5mb1ttYXhOZHhdLnNmYlN0YXJ0OyAgICAgICAgICAgICAKKworICAgICAKKyAgICBpZiAobWF4TmR4TmV4dCAtIG1heFNmYiA8IDApIHsKKyAgICAgIG1lcmdlR2Fpbkxvb2tVcFttYXhOZHhdID0gQ2FsY01lcmdlR2FpbihzZWN0aW9uSW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiaXRMb29rVXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lkZUluZm9UYWIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4TmR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heE5keE5leHQpOworICAgIH0KKyAgfQorfQorCisvKgorICBjb3VudCBiaXRzIHVzZWQgYnkgdGhlIG5vaXNlbGVzcyBjb2RlcgorKi8KK3N0YXRpYyB2b2lkCitub2lzZWxlc3NDb3VudGVyKFNFQ1RJT05fREFUQSAqc2VjdGlvbkRhdGEsCisgICAgICAgICAgICAgICAgIFdvcmQxNiBtZXJnZUdhaW5Mb29rVXBbTUFYX1NGQl9MT05HXSwKKyAgICAgICAgICAgICAgICAgV29yZDE2IGJpdExvb2tVcFtNQVhfU0ZCX0xPTkddW0NPREVfQk9PS19FU0NfTkRYICsgMV0sCisgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAqcXVhbnRTcGVjdHJ1bSwKKyAgICAgICAgICAgICAgICAgY29uc3QgVVdvcmQxNiAqbWF4VmFsdWVJblNmYiwKKyAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICpzZmJPZmZzZXQsCisgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQzMiBibG9ja1R5cGUpCit7CisgIFdvcmQzMiBncnBOZHgsIGk7CisgIFdvcmQxNiAqc2lkZUluZm9UYWIgPSBOVUxMOworICBTRUNUSU9OX0lORk8gKnNlY3Rpb25JbmZvOworCisgIC8qCisgICAgdXNlIGFwcHJvcHJpYXRlIHNpZGUgaW5mbyB0YWJsZQorICAqLyAgIAorICBzd2l0Y2ggKGJsb2NrVHlwZSkKKyAgeworICAgIGNhc2UgTE9OR19XSU5ET1c6CisgICAgY2FzZSBTVEFSVF9XSU5ET1c6CisgICAgY2FzZSBTVE9QX1dJTkRPVzoKKyAgICAgIHNpZGVJbmZvVGFiID0gc2lkZUluZm9UYWJMb25nOworICAgICAgYnJlYWs7CisgICAgY2FzZSBTSE9SVF9XSU5ET1c6CisgICAgICBzaWRlSW5mb1RhYiA9IHNpZGVJbmZvVGFiU2hvcnQ7CisgICAgICBicmVhazsKKyAgfQorCisKKyAgc2VjdGlvbkRhdGEtPm5vT2ZTZWN0aW9ucyA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgc2VjdGlvbkRhdGEtPmh1ZmZtYW5CaXRzID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgc2VjdGlvbkRhdGEtPnNpZGVJbmZvQml0cyA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICAgCisgIGlmIChzZWN0aW9uRGF0YS0+bWF4U2ZiUGVyR3JvdXAgPT0gMCkKKyAgICByZXR1cm47CisKKyAgLyoKKyAgICBsb29wIHRyb3VnaCBncm91cHMKKyAgKi8KKyAgZm9yIChncnBOZHg9MDsgZ3JwTmR4PHNlY3Rpb25EYXRhLT5zZmJDbnQ7IGdycE5keCs9c2VjdGlvbkRhdGEtPnNmYlBlckdyb3VwKSB7CisKKyAgICBzZWN0aW9uSW5mbyA9IHNlY3Rpb25EYXRhLT5zZWN0aW9uSW5mbyArIHNlY3Rpb25EYXRhLT5ub09mU2VjdGlvbnM7CisKKyAgICBidWlsZEJpdExvb2tVcChxdWFudFNwZWN0cnVtLAorICAgICAgICAgICAgICAgICAgIHNlY3Rpb25EYXRhLT5tYXhTZmJQZXJHcm91cCwKKyAgICAgICAgICAgICAgICAgICBzZmJPZmZzZXQgKyBncnBOZHgsCisgICAgICAgICAgICAgICAgICAgbWF4VmFsdWVJblNmYiArIGdycE5keCwKKyAgICAgICAgICAgICAgICAgICBiaXRMb29rVXAsCisgICAgICAgICAgICAgICAgICAgc2VjdGlvbkluZm8pOworCisgICAgLyoKKyAgICAgICAwLlN0YWdlCisgICAgKi8KKyAgICBnbVN0YWdlMChzZWN0aW9uSW5mbywgYml0TG9va1VwLCBzZWN0aW9uRGF0YS0+bWF4U2ZiUGVyR3JvdXApOworCisgICAgLyoKKyAgICAgICAxLlN0YWdlCisgICAgKi8KKyAgICBnbVN0YWdlMShzZWN0aW9uSW5mbywgYml0TG9va1VwLCBzZWN0aW9uRGF0YS0+bWF4U2ZiUGVyR3JvdXAsIHNpZGVJbmZvVGFiKTsKKworCisgICAgLyoKKyAgICAgICAyLlN0YWdlCisgICAgKi8KKyAgICBnbVN0YWdlMihzZWN0aW9uSW5mbywKKyAgICAgICAgICAgICBtZXJnZUdhaW5Mb29rVXAsCisgICAgICAgICAgICAgYml0TG9va1VwLAorICAgICAgICAgICAgIHNlY3Rpb25EYXRhLT5tYXhTZmJQZXJHcm91cCwKKyAgICAgICAgICAgICBzaWRlSW5mb1RhYik7CisKKworICAgIC8qCisgICAgICAgY29tcHJlc3Mgb3V0cHV0LCBjYWxjdWxhdGUgdG90YWwgaHVmZiBhbmQgc2lkZSBiaXRzCisgICAgKi8KKyAgICBmb3IgKGk9MDsgaTxzZWN0aW9uRGF0YS0+bWF4U2ZiUGVyR3JvdXA7IGkrPXNlY3Rpb25JbmZvW2ldLnNmYkNudCkgeworICAgICAgZmluZEJlc3RCb29rKGJpdExvb2tVcFtpXSwgJihzZWN0aW9uSW5mb1tpXS5jb2RlQm9vaykpOworICAgICAgc2VjdGlvbkluZm9baV0uc2ZiU3RhcnQgPSBzZWN0aW9uSW5mb1tpXS5zZmJTdGFydCArIGdycE5keDsKKworICAgICAgc2VjdGlvbkRhdGEtPmh1ZmZtYW5CaXRzID0gKHNlY3Rpb25EYXRhLT5odWZmbWFuQml0cyArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlY3Rpb25JbmZvW2ldLnNlY3Rpb25CaXRzIC0gc2lkZUluZm9UYWJbc2VjdGlvbkluZm9baV0uc2ZiQ250XSkpOworICAgICAgc2VjdGlvbkRhdGEtPnNpZGVJbmZvQml0cyA9IChzZWN0aW9uRGF0YS0+c2lkZUluZm9CaXRzICsgc2lkZUluZm9UYWJbc2VjdGlvbkluZm9baV0uc2ZiQ250XSk7CisgICAgICBzZWN0aW9uRGF0YS0+c2VjdGlvbkluZm9bc2VjdGlvbkRhdGEtPm5vT2ZTZWN0aW9uc10gPSBzZWN0aW9uSW5mb1tpXTsgICAgICAgICAgICAgCisgICAgICBzZWN0aW9uRGF0YS0+bm9PZlNlY3Rpb25zID0gc2VjdGlvbkRhdGEtPm5vT2ZTZWN0aW9ucyArIDE7CisgICAgfQorICB9Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb25uYW1lOiBzY2ZDb3VudAorKiByZXR1cm5zICAgICA6IC0tLQorKiBkZXNjcmlwdGlvbiA6IGNvdW50IGJpdHMgdXNlZCBieSBzY2FsZWZhY3RvcnMuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyB2b2lkIHNjZkNvdW50KGNvbnN0IFdvcmQxNiAqc2NhbGVmYWNHYWluLAorICAgICAgICAgICAgICAgICAgICAgY29uc3QgVVdvcmQxNiAqbWF4VmFsdWVJblNmYiwKKyAgICAgICAgICAgICAgICAgICAgIFNFQ1RJT05fREFUQSAqIHNlY3Rpb25EYXRhKQorCit7CisgIFNFQ1RJT05fSU5GTyAqcHNlY3Rpb25JbmZvOw0KKyAgU0VDVElPTl9JTkZPICpwc2VjdGlvbkluZm9tOw0KKw0KKyAgLyogY291bnRlciAqLworICBXb3JkMzIgaSA9IDA7IC8qIHNlY3Rpb24gY291bnRlciAqLworICBXb3JkMzIgaiA9IDA7IC8qIHNmYiBjb3VudGVyICovCisgIFdvcmQzMiBrID0gMDsgLyogY3VycmVudCBzZWN0aW9uIGF1eGlsaWFyeSBjb3VudGVyICovCisgIFdvcmQzMiBtID0gMDsgLyogb3RoZXIgc2VjdGlvbiBhdXhpbGlhcnkgY291bnRlciAqLworICBXb3JkMzIgbiA9IDA7IC8qIG90aGVyIHNmYiBhdXhpbGlhcnkgY291bnRlciAqLworCisgIC8qIGZ1cnRoZXIgdmFyaWFibGVzICovCisgIFdvcmQzMiBsYXN0VmFsU2NmICAgICA9IDA7CisgIFdvcmQzMiBkZWx0YVNjZiAgICAgICA9IDA7CisgIEZsYWcgZm91bmQgICAgICAgICAgICA9IDA7CisgIFdvcmQzMiBzY2ZTa2lwQ291bnRlciA9IDA7ICAgICAgICAgICAKKyAgICAgICAgIAorCisgIHNlY3Rpb25EYXRhLT5zY2FsZWZhY0JpdHMgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgICAKKyAgaWYgKHNjYWxlZmFjR2FpbiA9PSBOVUxMKSB7CisgICAgcmV0dXJuOworICB9CisKKyAgbGFzdFZhbFNjZiA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIHNlY3Rpb25EYXRhLT5maXJzdFNjZiA9IDA7ICAgICAgICANCisgIAorICBwc2VjdGlvbkluZm8gPSBzZWN0aW9uRGF0YS0+c2VjdGlvbkluZm87CisgIGZvciAoaT0wOyBpPHNlY3Rpb25EYXRhLT5ub09mU2VjdGlvbnM7IGkrKykgeworICAgICAKKyAgICBpZiAocHNlY3Rpb25JbmZvLT5jb2RlQm9vayAhPSBDT0RFX0JPT0tfWkVST19OTykgeworICAgICAgc2VjdGlvbkRhdGEtPmZpcnN0U2NmID0gcHNlY3Rpb25JbmZvLT5zZmJTdGFydDsgICAgICAKKyAgICAgIGxhc3RWYWxTY2YgPSBzY2FsZWZhY0dhaW5bc2VjdGlvbkRhdGEtPmZpcnN0U2NmXTsgICAgICAgICAgICAgICAgICAKKyAgICAgIGJyZWFrOworICAgIH0NCisJcHNlY3Rpb25JbmZvICs9IDE7CisgIH0NCisKKyAgcHNlY3Rpb25JbmZvID0gc2VjdGlvbkRhdGEtPnNlY3Rpb25JbmZvOworICBmb3IgKGk9MDsgaTxzZWN0aW9uRGF0YS0+bm9PZlNlY3Rpb25zOyBpKyssIHBzZWN0aW9uSW5mbyArPSAxKSB7CisgICAgICAgCisgICAgaWYgKHBzZWN0aW9uSW5mby0+Y29kZUJvb2sgIT0gQ09ERV9CT09LX1pFUk9fTk8KKyAgICAgICAgJiYgcHNlY3Rpb25JbmZvLT5jb2RlQm9vayAhPSBDT0RFX0JPT0tfUE5TX05PKSB7CisgICAgICBmb3IgKGogPSBwc2VjdGlvbkluZm8tPnNmYlN0YXJ0OworICAgICAgICAgICBqIDwgKHBzZWN0aW9uSW5mby0+c2ZiU3RhcnQgKyBwc2VjdGlvbkluZm8tPnNmYkNudCk7IGorKykgeworICAgICAgICAvKiBjaGVjayBpZiB3ZSBjYW4gcmVwZWF0IHRoZSBsYXN0IHZhbHVlIHRvIHNhdmUgYml0cyAqLworICAgICAgICAgCisgICAgICAgIGlmIChtYXhWYWx1ZUluU2ZiW2pdID09IDApIHsKKyAgICAgICAgICBmb3VuZCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgCisgICAgICAgICAgaWYgKHNjZlNraXBDb3VudGVyID09IDApIHsKKyAgICAgICAgICAgIC8qIGVuZCBvZiBzZWN0aW9uICovCisgICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoaiAtICgocHNlY3Rpb25JbmZvLT5zZmJTdGFydCArIHBzZWN0aW9uSW5mby0+c2ZiQ250KSAtIDEpID09IDApIHsKKyAgICAgICAgICAgICAgZm91bmQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICBmb3IgKGsgPSBqICsgMTsgayA8IHBzZWN0aW9uSW5mby0+c2ZiU3RhcnQgKyBwc2VjdGlvbkluZm8tPnNmYkNudDsgaysrKSB7CisgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChtYXhWYWx1ZUluU2ZiW2tdICE9IDApIHsKKyAgICAgICAgICAgICAgICAgIGludCB0bXAgPSBMX2FicyhzY2FsZWZhY0dhaW5ba10gLSBsYXN0VmFsU2NmKTsKKwkJCQkgIGZvdW5kID0gMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgIGlmICggdG1wIDwgQ09ERV9CT09LX1NDRl9MQVYpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogc2F2ZSBiaXRzICovCisgICAgICAgICAgICAgICAgICAgIGRlbHRhU2NmID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLyogZG8gbm90IHNhdmUgYml0cyAqLworICAgICAgICAgICAgICAgICAgICBkZWx0YVNjZiA9IGxhc3RWYWxTY2YgLSBzY2FsZWZhY0dhaW5bal07CisgICAgICAgICAgICAgICAgICAgIGxhc3RWYWxTY2YgPSBzY2FsZWZhY0dhaW5bal07ICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIHNjZlNraXBDb3VudGVyID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLyogY291bnQgc2NhbGVmYWN0b3Igc2tpcCAqLworICAgICAgICAgICAgICAgIHNjZlNraXBDb3VudGVyID0gc2NmU2tpcENvdW50ZXIgKyAxOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisJCQkNCisJCQlwc2VjdGlvbkluZm9tID0gcHNlY3Rpb25JbmZvICsgMTsKKyAgICAgICAgICAgIC8qIHNlYXJjaCBmb3IgdGhlIG5leHQgbWF4VmFsdWVJblNmYltdICE9IDAgaW4gYWxsIG90aGVyIHNlY3Rpb25zICovCisgICAgICAgICAgICBmb3IgKG0gPSBpICsgMTsgKG0gPCBzZWN0aW9uRGF0YS0+bm9PZlNlY3Rpb25zKSAmJiAoZm91bmQgPT0gMCk7IG0rKykgeworICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgaWYgKChwc2VjdGlvbkluZm9tLT5jb2RlQm9vayAhPSBDT0RFX0JPT0tfWkVST19OTykgJiYKKyAgICAgICAgICAgICAgICAgIChwc2VjdGlvbkluZm9tLT5jb2RlQm9vayAhPSBDT0RFX0JPT0tfUE5TX05PKSkgeworICAgICAgICAgICAgICAgIGZvciAobiA9IHBzZWN0aW9uSW5mb20tPnNmYlN0YXJ0OworICAgICAgICAgICAgICAgICAgICAgbiA8IChwc2VjdGlvbkluZm9tLT5zZmJTdGFydCArIHBzZWN0aW9uSW5mb20tPnNmYkNudCk7IG4rKykgeworICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgaWYgKG1heFZhbHVlSW5TZmJbbl0gIT0gMCkgeworICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmICggKGFic19zKHNjYWxlZmFjR2FpbltuXSAtIGxhc3RWYWxTY2YpIDwgQ09ERV9CT09LX1NDRl9MQVYpKSB7CisgICAgICAgICAgICAgICAgICAgICAgZGVsdGFTY2YgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgZGVsdGFTY2YgPSAobGFzdFZhbFNjZiAtIHNjYWxlZmFjR2FpbltqXSk7CisgICAgICAgICAgICAgICAgICAgICAgbGFzdFZhbFNjZiA9IHNjYWxlZmFjR2FpbltqXTsgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgc2NmU2tpcENvdW50ZXIgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAvKiBjb3VudCBzY2FsZWZhY3RvciBza2lwICovCisgICAgICAgICAgICAgICAgICBzY2ZTa2lwQ291bnRlciA9IHNjZlNraXBDb3VudGVyICsgMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0NCisNCisJCQkgIHBzZWN0aW9uSW5mb20gKz0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChmb3VuZCA9PSAwKSB7CisgICAgICAgICAgICAgIGRlbHRhU2NmID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIHNjZlNraXBDb3VudGVyID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgZGVsdGFTY2YgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgc2NmU2tpcENvdW50ZXIgPSBzY2ZTa2lwQ291bnRlciAtIDE7CisgICAgICAgICAgfQ0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICBkZWx0YVNjZiA9IGxhc3RWYWxTY2YgLSBzY2FsZWZhY0dhaW5bal07CisgICAgICAgICAgbGFzdFZhbFNjZiA9IHNjYWxlZmFjR2FpbltqXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAgc2VjdGlvbkRhdGEtPnNjYWxlZmFjQml0cyArPSBiaXRDb3VudFNjYWxlZmFjdG9yRGVsdGEoZGVsdGFTY2YpOworICAgICAgfQorICAgIH0KKyAgfQorfQorCisKK3R5cGVkZWYgV29yZDE2ICgqbG9va1VwVGFibGUpW0NPREVfQk9PS19FU0NfTkRYICsgMV07CisKKworV29yZDE2CitkeW5CaXRDb3VudChjb25zdCBXb3JkMTYgICpxdWFudFNwZWN0cnVtLAorICAgICAgICAgICAgY29uc3QgVVdvcmQxNiAqbWF4VmFsdWVJblNmYiwKKyAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgKnNjYWxlZmFjLAorICAgICAgICAgICAgY29uc3QgV29yZDE2ICAgYmxvY2tUeXBlLAorICAgICAgICAgICAgY29uc3QgV29yZDE2ICAgc2ZiQ250LAorICAgICAgICAgICAgY29uc3QgV29yZDE2ICAgbWF4U2ZiUGVyR3JvdXAsCisgICAgICAgICAgICBjb25zdCBXb3JkMTYgICBzZmJQZXJHcm91cCwKKyAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgKnNmYk9mZnNldCwKKyAgICAgICAgICAgIFNFQ1RJT05fREFUQSAgKnNlY3Rpb25EYXRhKQoreworICBzZWN0aW9uRGF0YS0+YmxvY2tUeXBlICAgICAgPSBibG9ja1R5cGU7ICAgICAgICAgICAgICAgICAgICAgICAKKyAgc2VjdGlvbkRhdGEtPnNmYkNudCAgICAgICAgID0gc2ZiQ250OyAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIHNlY3Rpb25EYXRhLT5zZmJQZXJHcm91cCAgICA9IHNmYlBlckdyb3VwOyAgICAgICAgICAgCisgIGlmKHNmYlBlckdyb3VwKQorCXNlY3Rpb25EYXRhLT5ub09mR3JvdXBzICAgPSBzZmJDbnQvc2ZiUGVyR3JvdXA7IAorICBlbHNlCisJc2VjdGlvbkRhdGEtPm5vT2ZHcm91cHMgICA9IDB4N2ZmZjsKKyAgc2VjdGlvbkRhdGEtPm1heFNmYlBlckdyb3VwID0gbWF4U2ZiUGVyR3JvdXA7ICAgICAgICAgICAgICAgICAgCisKKyAgbm9pc2VsZXNzQ291bnRlcihzZWN0aW9uRGF0YSwKKyAgICAgICAgICAgICAgICAgICBzZWN0aW9uRGF0YS0+bWVyZ2VHYWluTG9va1VwLAorICAgICAgICAgICAgICAgICAgIChsb29rVXBUYWJsZSlzZWN0aW9uRGF0YS0+Yml0TG9va1VwLAorICAgICAgICAgICAgICAgICAgIHF1YW50U3BlY3RydW0sCisgICAgICAgICAgICAgICAgICAgbWF4VmFsdWVJblNmYiwKKyAgICAgICAgICAgICAgICAgICBzZmJPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgYmxvY2tUeXBlKTsKKworICBzY2ZDb3VudChzY2FsZWZhYywKKyAgICAgICAgICAgbWF4VmFsdWVJblNmYiwKKyAgICAgICAgICAgc2VjdGlvbkRhdGEpOworCisKKyAgcmV0dXJuIChzZWN0aW9uRGF0YS0+aHVmZm1hbkJpdHMgKyBzZWN0aW9uRGF0YS0+c2lkZUluZm9CaXRzICsgDQorCSAgICAgIHNlY3Rpb25EYXRhLT5zY2FsZWZhY0JpdHMpOworfQorCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9ncnBfZGF0YS5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvZ3JwX2RhdGEuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOGQ5YTc2Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvZ3JwX2RhdGEuYwpAQCAtMCwwICsxLDE4OCBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJZ3JwX2RhdGEuYw0KKw0KKwlDb250ZW50OglTaG9ydCBibG9jayBncm91cGluZyBmdW5jdGlvbg0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpbmNsdWRlICJiYXNpY19vcC5oIg0KKyNpbmNsdWRlICJwc3lfY29uc3QuaCIKKyNpbmNsdWRlICJpbnRlcmZhY2UuaCIKKyNpbmNsdWRlICJncnBfZGF0YS5oIgorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogZ3JvdXBTaG9ydERhdGEKKyogZGVzY3JpcHRpb246ICBncm91cCBzaG9ydCBkYXRhIGZvciBuZXh0IHF1YW50aXphdGlvbiBhbmQgY29kaW5nCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordm9pZAorZ3JvdXBTaG9ydERhdGEoV29yZDMyICAgICAgICAqbWRjdFNwZWN0cnVtLAorICAgICAgICAgICAgICAgV29yZDMyICAgICAgICAqdG1wU3BlY3RydW0sCisgICAgICAgICAgICAgICBTRkJfVEhSRVNIT0xEICpzZmJUaHJlc2hvbGQsCisgICAgICAgICAgICAgICBTRkJfRU5FUkdZICAgICpzZmJFbmVyZ3ksCisgICAgICAgICAgICAgICBTRkJfRU5FUkdZICAgICpzZmJFbmVyZ3lNUywKKyAgICAgICAgICAgICAgIFNGQl9FTkVSR1kgICAgKnNmYlNwcmVhZGVkRW5lcmd5LAorICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICAgc2ZiQ250LAorICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICAqc2ZiT2Zmc2V0LAorICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICAqc2ZiTWluU25yLAorICAgICAgICAgICAgICAgV29yZDE2ICAgICAgICAqZ3JvdXBlZFNmYk9mZnNldCwKKyAgICAgICAgICAgICAgIFdvcmQxNiAgICAgICAgKm1heFNmYlBlckdyb3VwLAorICAgICAgICAgICAgICAgV29yZDE2ICAgICAgICAqZ3JvdXBlZFNmYk1pblNuciwKKyAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgIG5vT2ZHcm91cHMsCisgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgICpncm91cExlbikKK3sKKyAgV29yZDMyIGksIGo7CisgIFdvcmQzMiBsaW5lOworICBXb3JkMzIgc2ZiOworICBXb3JkMzIgZ3JwOworICBXb3JkMzIgd25kOworICBXb3JkMzIgb2Zmc2V0OworICBXb3JkMzIgaGlnaGVzdFNmYjsKKworICAvKiBmb3Igc2hvcnQ6IHJlZ3JvdXAgYW5kICAqLworICAvKiBjdW11bGF0ZSBlbmVyZ2llcyB1bmQgdGhyZXNob2xkcyBncm91cC13aXNlIC4gKi8KKyAgCisgIC8qIGNhbGN1bGF0ZSBzZmJDbnQgKi8KKyAgaGlnaGVzdFNmYiA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBmb3IgKHduZD0wOyB3bmQ8VFJBTlNfRkFDOyB3bmQrKykgeworICAgIGZvciAoc2ZiPXNmYkNudCAtIDE7IHNmYj49aGlnaGVzdFNmYjsgc2ZiLS0pIHsKKyAgICAgIGZvciAobGluZT0oc2ZiT2Zmc2V0W3NmYiArIDFdIC0gMSk7IGxpbmU+PXNmYk9mZnNldFtzZmJdOyBsaW5lLS0pIHsKKyAgICAgICAgCisgICAgICAgIGlmIChtZGN0U3BlY3RydW1bd25kKkZSQU1FX0xFTl9TSE9SVCtsaW5lXSAhPSAwKSBicmVhazsgCisgICAgICB9CisgICAgICAKKyAgICAgIGlmIChsaW5lID49IHNmYk9mZnNldFtzZmJdKSBicmVhazsKKyAgICB9CisgICAgaGlnaGVzdFNmYiA9IG1heChoaWdoZXN0U2ZiLCBzZmIpOworICB9CisgIAorICBpZiAoaGlnaGVzdFNmYiA8IDApIHsKKyAgICBoaWdoZXN0U2ZiID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICB9CisgICptYXhTZmJQZXJHcm91cCA9IGhpZ2hlc3RTZmIgKyAxOworCisgIC8qIGNhbGN1bGF0ZSBzZmJPZmZzZXQgKi8KKyAgaSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBvZmZzZXQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIGZvciAoZ3JwID0gMDsgZ3JwIDwgbm9PZkdyb3VwczsgZ3JwKyspIHsKKyAgICBmb3IgKHNmYiA9IDA7IHNmYiA8IHNmYkNudDsgc2ZiKyspIHsKKyAgICAgIGdyb3VwZWRTZmJPZmZzZXRbaV0gPSBvZmZzZXQgKyBzZmJPZmZzZXRbc2ZiXSAqIGdyb3VwTGVuW2dycF07CisgICAgICBpICs9IDE7CisgICAgfQorICAgIG9mZnNldCArPSBncm91cExlbltncnBdICogRlJBTUVfTEVOX1NIT1JUOworICB9CisgIGdyb3VwZWRTZmJPZmZzZXRbaV0gPSBGUkFNRV9MRU5fTE9ORzsgICAgICAgICAgICAgICAgICAKKyAgaSArPSAxOworCisgIC8qIGNhbGN1bGF0ZSBtaW5TbnIgKi8KKyAgaSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBvZmZzZXQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIGZvciAoZ3JwID0gMDsgZ3JwIDwgbm9PZkdyb3VwczsgZ3JwKyspIHsKKyAgICBmb3IgKHNmYiA9IDA7IHNmYiA8IHNmYkNudDsgc2ZiKyspIHsKKyAgICAgIGdyb3VwZWRTZmJNaW5TbnJbaV0gPSBzZmJNaW5TbnJbc2ZiXTsgICAgICAgICAgICAgIAorICAgICAgaSArPSAxOworICAgIH0KKyAgICBvZmZzZXQgKz0gZ3JvdXBMZW5bZ3JwXSAqIEZSQU1FX0xFTl9TSE9SVDsKKyAgfQorCisKKyAgLyogc3VtIHVwIHNmYlRocmVzaG9sZHMgKi8KKyAgd25kID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIGkgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBmb3IgKGdycCA9IDA7IGdycCA8IG5vT2ZHcm91cHM7IGdycCsrKSB7CisgICAgZm9yIChzZmIgPSAwOyBzZmIgPCBzZmJDbnQ7IHNmYisrKSB7CisgICAgICBXb3JkMzIgdGhyZXNoID0gc2ZiVGhyZXNob2xkLT5zZmJTaG9ydFt3bmRdW3NmYl07ICAgICAgICAgIAorICAgICAgZm9yIChqPTE7IGo8Z3JvdXBMZW5bZ3JwXTsgaisrKSB7CisgICAgICAgIHRocmVzaCA9IExfYWRkKHRocmVzaCwgc2ZiVGhyZXNob2xkLT5zZmJTaG9ydFt3bmQral1bc2ZiXSk7CisgICAgICB9CisgICAgICBzZmJUaHJlc2hvbGQtPnNmYkxvbmdbaV0gPSB0aHJlc2g7ICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgaSArPSAxOworICAgIH0KKyAgICB3bmQgKz0gZ3JvdXBMZW5bZ3JwXTsKKyAgfQorCisgIC8qIHN1bSB1cCBzZmJFbmVyZ2llcyBsZWZ0L3JpZ2h0ICovCisgIHduZCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBpID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgZm9yIChncnAgPSAwOyBncnAgPCBub09mR3JvdXBzOyBncnArKykgeworICAgIGZvciAoc2ZiID0gMDsgc2ZiIDwgc2ZiQ250OyBzZmIrKykgeworICAgICAgV29yZDMyIGVuZXJneSA9IHNmYkVuZXJneS0+c2ZiU2hvcnRbd25kXVtzZmJdOyAgICAgICAgICAgICAKKyAgICAgIGZvciAoaj0xOyBqPGdyb3VwTGVuW2dycF07IGorKykgeworICAgICAgICBlbmVyZ3kgPSBMX2FkZChlbmVyZ3ksIHNmYkVuZXJneS0+c2ZiU2hvcnRbd25kK2pdW3NmYl0pOworICAgICAgfQorICAgICAgc2ZiRW5lcmd5LT5zZmJMb25nW2ldID0gZW5lcmd5OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgIGkgKz0gMTsKKyAgICB9CisgICAgd25kICs9IGdyb3VwTGVuW2dycF07CisgIH0KKworICAvKiBzdW0gdXAgc2ZiRW5lcmdpZXMgbWlkL3NpZGUgKi8KKyAgd25kID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIGkgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBmb3IgKGdycCA9IDA7IGdycCA8IG5vT2ZHcm91cHM7IGdycCsrKSB7CisgICAgZm9yIChzZmIgPSAwOyBzZmIgPCBzZmJDbnQ7IHNmYisrKSB7CisgICAgICBXb3JkMzIgZW5lcmd5ID0gc2ZiRW5lcmd5TVMtPnNmYlNob3J0W3duZF1bc2ZiXTsgICAgICAgICAgIAorICAgICAgZm9yIChqPTE7IGo8Z3JvdXBMZW5bZ3JwXTsgaisrKSB7CisgICAgICAgIGVuZXJneSA9IExfYWRkKGVuZXJneSwgc2ZiRW5lcmd5TVMtPnNmYlNob3J0W3duZCtqXVtzZmJdKTsKKyAgICAgIH0KKyAgICAgIHNmYkVuZXJneU1TLT5zZmJMb25nW2ldID0gZW5lcmd5OyAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICBpICs9IDE7CisgICAgfQorICAgIHduZCArPSBncm91cExlbltncnBdOworICB9CisKKyAgLyogc3VtIHVwIHNmYlNwcmVhZGVkRW5lcmdpZXMgKi8KKyAgd25kID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIGkgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBmb3IgKGdycCA9IDA7IGdycCA8IG5vT2ZHcm91cHM7IGdycCsrKSB7CisgICAgZm9yIChzZmIgPSAwOyBzZmIgPCBzZmJDbnQ7IHNmYisrKSB7CisgICAgICBXb3JkMzIgZW5lcmd5ID0gc2ZiU3ByZWFkZWRFbmVyZ3ktPnNmYlNob3J0W3duZF1bc2ZiXTsgICAgIAorICAgICAgZm9yIChqPTE7IGo8Z3JvdXBMZW5bZ3JwXTsgaisrKSB7CisgICAgICAgIGVuZXJneSA9IExfYWRkKGVuZXJneSwgc2ZiU3ByZWFkZWRFbmVyZ3ktPnNmYlNob3J0W3duZCtqXVtzZmJdKTsKKyAgICAgIH0KKyAgICAgIHNmYlNwcmVhZGVkRW5lcmd5LT5zZmJMb25nW2ldID0gZW5lcmd5OyAgICAgICAgICAgICAgICAgICAgCisgICAgICBpICs9IDE7CisgICAgfQorICAgIHduZCArPSBncm91cExlbltncnBdOworICB9CisKKyAgLyogcmUtZ3JvdXAgc3BlY3RydW0gKi8KKyAgd25kID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIGkgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBmb3IgKGdycCA9IDA7IGdycCA8IG5vT2ZHcm91cHM7IGdycCsrKSB7CisgICAgZm9yIChzZmIgPSAwOyBzZmIgPCBzZmJDbnQ7IHNmYisrKSB7CisgICAgICBmb3IgKGogPSAwOyBqIDwgZ3JvdXBMZW5bZ3JwXTsgaisrKSB7CisgICAgICAgIFdvcmQxNiBsaW5lT2Zmc2V0ID0gRlJBTUVfTEVOX1NIT1JUICogKHduZCArIGopOworICAgICAgICBmb3IgKGxpbmUgPSBsaW5lT2Zmc2V0ICsgc2ZiT2Zmc2V0W3NmYl07IGxpbmUgPCBsaW5lT2Zmc2V0ICsgc2ZiT2Zmc2V0W3NmYisxXTsgbGluZSsrKSB7CisgICAgICAgICAgdG1wU3BlY3RydW1baV0gPSBtZGN0U3BlY3RydW1bbGluZV07ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgIGkgPSBpICsgMTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgICB3bmQgKz0gZ3JvdXBMZW5bZ3JwXTsKKyAgfQorCisgIGZvcihpPTA7aTxGUkFNRV9MRU5fTE9ORztpKz00KSB7CisgICAgbWRjdFNwZWN0cnVtW2ldID0gdG1wU3BlY3RydW1baV07ICANCisJbWRjdFNwZWN0cnVtW2krMV0gPSB0bXBTcGVjdHJ1bVtpKzFdOyAgDQorCW1kY3RTcGVjdHJ1bVtpKzJdID0gdG1wU3BlY3RydW1baSsyXTsgIA0KKwltZGN0U3BlY3RydW1baSszXSA9IHRtcFNwZWN0cnVtW2krM107ICAJCisgIH0KK30KKwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvaW50ZXJmYWNlLmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9pbnRlcmZhY2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDRiMWQ0Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvaW50ZXJmYWNlLmMKQEAgLTAsMCArMSwxMTIgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCWludGVyZmFjZS5jDQorDQorCUNvbnRlbnQ6CUludGVyZmFjZSBwc3ljaG9hY2NvdXN0aWMvcXVhbnRpemVyIGZ1bmN0aW9ucw0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpbmNsdWRlICJiYXNpY19vcC5oIg0KKyNpbmNsdWRlICJvcGVyXzMyYi5oIg0KKyNpbmNsdWRlICJwc3lfY29uc3QuaCIKKyNpbmNsdWRlICJpbnRlcmZhY2UuaCIKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IEJ1aWxkSW50ZXJmYWNlCisqIGRlc2NyaXB0aW9uOiAgdXBkYXRlIG91dHB1dCBwYXJhbWV0ZXIKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit2b2lkIEJ1aWxkSW50ZXJmYWNlKFdvcmQzMiAgICAgICAgICAgICAgICAgICpncm91cGVkTWRjdFNwZWN0cnVtLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgICAgICAgICAgICAgbWRjdFNjYWxlLAorICAgICAgICAgICAgICAgICAgICBTRkJfVEhSRVNIT0xEICAgICAgICAgICAqZ3JvdXBlZFNmYlRocmVzaG9sZCwKKyAgICAgICAgICAgICAgICAgICAgU0ZCX0VORVJHWSAgICAgICAgICAgICAgKmdyb3VwZWRTZmJFbmVyZ3ksCisgICAgICAgICAgICAgICAgICAgIFNGQl9FTkVSR1kgICAgICAgICAgICAgICpncm91cGVkU2ZiU3ByZWFkZWRFbmVyZ3ksCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IFNGQl9FTkVSR1lfU1VNICAgICBzZmJFbmVyZ3lTdW1MUiwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgU0ZCX0VORVJHWV9TVU0gICAgIHNmYkVuZXJneVN1bU1TLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgICAgICAgICAgICAgd2luZG93U2VxdWVuY2UsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgICAgICAgICAgICB3aW5kb3dTaGFwZSwKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICAgICAgICAgICAgIGdyb3VwZWRTZmJDbnQsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgICAgICAgICAgICpncm91cGVkU2ZiT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgICAgICAgICAgICAgbWF4U2ZiUGVyR3JvdXAsCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgICAgICAgICAgICpncm91cGVkU2ZiTWluU25yLAorICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgICAgICAgICAgICAgbm9PZkdyb3VwcywKKyAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICAgICAgICAgICAgKmdyb3VwTGVuLAorICAgICAgICAgICAgICAgICAgICBQU1lfT1VUX0NIQU5ORUwgICAgICAgICAqcHN5T3V0Q2gpCit7CisgIFdvcmQzMiBqOworICBXb3JkMzIgZ3JwOyAKKyAgV29yZDMyIG1hc2s7DQorICBXb3JkMTYgKnRtcFY7CisKKyAgLyoKKyAgY29weSB2YWx1ZXMgdG8gcHN5T3V0CisgICovCisgIHBzeU91dENoLT5tYXhTZmJQZXJHcm91cCAgICA9IG1heFNmYlBlckdyb3VwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIHBzeU91dENoLT5zZmJDbnQgICAgICAgICAgICA9IGdyb3VwZWRTZmJDbnQ7ICAgCisgIGlmKG5vT2ZHcm91cHMpCisJcHN5T3V0Q2gtPnNmYlBlckdyb3VwICAgICA9IGdyb3VwZWRTZmJDbnQvIG5vT2ZHcm91cHM7CisgIGVsc2UKKwlwc3lPdXRDaC0+c2ZiUGVyR3JvdXAgICAgID0gMHg3ZmZmOworICBwc3lPdXRDaC0+d2luZG93U2VxdWVuY2UgICAgPSB3aW5kb3dTZXF1ZW5jZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBwc3lPdXRDaC0+d2luZG93U2hhcGUgICAgICAgPSB3aW5kb3dTaGFwZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBwc3lPdXRDaC0+bWRjdFNjYWxlICAgICAgICAgPSBtZGN0U2NhbGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBwc3lPdXRDaC0+bWRjdFNwZWN0cnVtICAgICAgPSBncm91cGVkTWRjdFNwZWN0cnVtOworICBwc3lPdXRDaC0+c2ZiRW5lcmd5ICAgICAgICAgPSBncm91cGVkU2ZiRW5lcmd5LT5zZmJMb25nOworICBwc3lPdXRDaC0+c2ZiVGhyZXNob2xkICAgICAgPSBncm91cGVkU2ZiVGhyZXNob2xkLT5zZmJMb25nOworICBwc3lPdXRDaC0+c2ZiU3ByZWFkZWRFbmVyZ3kgPSBncm91cGVkU2ZiU3ByZWFkZWRFbmVyZ3ktPnNmYkxvbmc7CisgIAorICB0bXBWID0gcHN5T3V0Q2gtPnNmYk9mZnNldHM7DQorICBmb3Ioaj0wOyBqPGdyb3VwZWRTZmJDbnQgKyAxOyBqKyspIHsKKyAgICAgICp0bXBWKysgPSBncm91cGVkU2ZiT2Zmc2V0W2pdOworICB9CisgIA0KKyAgdG1wViA9IHBzeU91dENoLT5zZmJNaW5TbnI7CisgIGZvcihqPTA7ajxncm91cGVkU2ZiQ250OyBqKyspIHsKKwkgICp0bXBWKysgPSAgIGdyb3VwZWRTZmJNaW5TbnJbal07CisgIH0KKyAgCisgIC8qIGdlbmVyYXRlIGdyb3VwaW5nIG1hc2sgKi8KKyAgbWFzayA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBmb3IgKGdycCA9IDA7IGdycCA8IG5vT2ZHcm91cHM7IGdycCsrKSB7CisgICAgbWFzayA9IG1hc2sgPDwgMTsKKyAgICBmb3IgKGo9MTsgajxncm91cExlbltncnBdOyBqKyspIHsKKyAgICAgIG1hc2sgPSBtYXNrIDw8IDE7CisgICAgICBtYXNrIHw9IDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICB9CisgIH0KKyAgcHN5T3V0Q2gtPmdyb3VwaW5nTWFzayA9IG1hc2s7IAorICAKKyAgaWYgKHdpbmRvd1NlcXVlbmNlICE9IFNIT1JUX1dJTkRPVykgeworICAgIHBzeU91dENoLT5zZmJFblN1bUxSID0gIHNmYkVuZXJneVN1bUxSLnNmYkxvbmc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgcHN5T3V0Q2gtPnNmYkVuU3VtTVMgPSAgc2ZiRW5lcmd5U3VtTVMuc2ZiTG9uZzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgfQorICBlbHNlIHsKKyAgICBXb3JkMzIgaTsKKyAgICBXb3JkMzIgYWNjdVN1bU1TPTA7CisgICAgV29yZDMyIGFjY3VTdW1MUj0wOyAgICAgICAgDQorCVdvcmQzMiAqcFN1bU1TID0gc2ZiRW5lcmd5U3VtTVMuc2ZiU2hvcnQ7DQorCVdvcmQzMiAqcFN1bUxSID0gc2ZiRW5lcmd5U3VtTFIuc2ZiU2hvcnQ7CisKKyAgICBmb3IgKGk9VFJBTlNfRkFDOyBpOyBpLS0pIHsKKyAgICAgIGFjY3VTdW1MUiA9IExfYWRkKGFjY3VTdW1MUiwgKnBTdW1MUik7IHBTdW1MUisrOworICAgICAgYWNjdVN1bU1TID0gTF9hZGQoYWNjdVN1bU1TLCAqcFN1bU1TKTsgcFN1bU1TKys7CisgICAgfQorICAgIHBzeU91dENoLT5zZmJFblN1bU1TID0gYWNjdVN1bU1TOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgcHN5T3V0Q2gtPnNmYkVuU3VtTFIgPSBhY2N1U3VtTFI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgfQorfQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvbGluZV9wZS5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvbGluZV9wZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhNTc2NDcKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9saW5lX3BlLmMKQEAgLTAsMCArMSwxNDUgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCWxpbmVfcGUuYw0KKw0KKwlDb250ZW50OglQZXJjZXB0dWFsIGVudHJvcGllIG1vZHVsZSBmdW5jdGlvbnMNCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKworI2luY2x1ZGUgImJhc2ljX29wLmgiDQorI2luY2x1ZGUgIm9wZXJfMzJiLmgiCisjaW5jbHVkZSAidHlwZWRlZi5oIgorI2luY2x1ZGUgImxpbmVfcGUuaCIKKworCitzdGF0aWMgY29uc3QgV29yZDE2ICBDMV9JID0gMTI7ICAgIC8qIGxvZyg4LjApL2xvZygyKSAqNCAgICAgICAgICovCitzdGF0aWMgY29uc3QgV29yZDMyICBDMl9JID0gMTA4MzA7IC8qIGxvZygyLjUpL2xvZygyKSAqIDEwMjQgKiA0ICogMiAqLworc3RhdGljIGNvbnN0IFdvcmQxNiAgQzNfSSA9IDU3MzsgICAvKiAoMS1DMi9DMSkgKjEwMjQgICAgICAgICAgICAqLworCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBwcmVwYXJlU2ZiUGUKKyogZGVzY3JpcHRpb246ICBjb25zdGFudHMgdGhhdCBkbyBub3QgY2hhbmdlIGR1cmluZyBzdWNjZXNzaXZlIHBlIGNhbGN1bGF0aW9ucworKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3ZvaWQgcHJlcGFyZVNmYlBlKFBFX0RBVEEgKnBlRGF0YSwKKyAgICAgICAgICAgICAgICAgIFBTWV9PVVRfQ0hBTk5FTCAgcHN5T3V0Q2hhbm5lbFtNQVhfQ0hBTk5FTFNdLAorICAgICAgICAgICAgICAgICAgV29yZDE2IGxvZ1NmYkVuZXJneVtNQVhfQ0hBTk5FTFNdW01BWF9HUk9VUEVEX1NGQl0sCisgICAgICAgICAgICAgICAgICBXb3JkMTYgc2ZiTlJlbGV2YW50TGluZXNbTUFYX0NIQU5ORUxTXVtNQVhfR1JPVVBFRF9TRkJdLAorICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2IG5DaGFubmVscywKKyAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiBwZU9mZnNldCkKK3sKKyAgV29yZDMyIHNmYkdycCwgc2ZiOworICBXb3JkMzIgY2g7ICAgICAKKworICBmb3IoY2g9MDsgY2g8bkNoYW5uZWxzOyBjaCsrKSB7CisgICAgUFNZX09VVF9DSEFOTkVMICpwc3lPdXRDaGFuID0gJnBzeU91dENoYW5uZWxbY2hdOworICAgIFBFX0NIQU5ORUxfREFUQSAqcGVDaGFuRGF0YT0mcGVEYXRhLT5wZUNoYW5uZWxEYXRhW2NoXTsKKyAgICBmb3Ioc2ZiR3JwPTA7c2ZiR3JwPHBzeU91dENoYW4tPnNmYkNudDsgc2ZiR3JwKz1wc3lPdXRDaGFuLT5zZmJQZXJHcm91cCl7CisgICAgICBmb3IgKHNmYj0wOyBzZmI8cHN5T3V0Q2hhbi0+bWF4U2ZiUGVyR3JvdXA7IHNmYisrKSB7CisJICAgIHBlQ2hhbkRhdGEtPnNmYk5MaW5lczRbc2ZiR3JwK3NmYl0gPSBzZmJOUmVsZXZhbnRMaW5lc1tjaF1bc2ZiR3JwK3NmYl07ICAgICAgICAgIAorICAgICAgICBzZmJOUmVsZXZhbnRMaW5lc1tjaF1bc2ZiR3JwK3NmYl0gPSBzZmJOUmVsZXZhbnRMaW5lc1tjaF1bc2ZiR3JwK3NmYl0gPj4gMjsgICAgCisJICAgIHBlQ2hhbkRhdGEtPnNmYkxkRW5lcmd5W3NmYkdycCtzZmJdID0gbG9nU2ZiRW5lcmd5W2NoXVtzZmJHcnArc2ZiXTsgICAgICAgICAgICAgIAorICAgICAgfQorICAgIH0KKyAgfQorICBwZURhdGEtPm9mZnNldCA9IHBlT2Zmc2V0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogY2FsY1NmYlBlCisqIGRlc2NyaXB0aW9uOiAgY29uc3RQYXJ0IGlzIHNmYlBlIHdpdGhvdXQgdGhlIHRocmVzaG9sZCBwYXJ0IG4qbGQodGhyKSBvciBuKkMzKmxkKHRocikKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit2b2lkIGNhbGNTZmJQZShQRV9EQVRBICpwZURhdGEsCisgICAgICAgICAgICAgICBQU1lfT1VUX0NIQU5ORUwgcHN5T3V0Q2hhbm5lbFtNQVhfQ0hBTk5FTFNdLAorICAgICAgICAgICAgICAgY29uc3QgV29yZDE2IG5DaGFubmVscykKK3sKKyAgV29yZDMyIGNoOworICBXb3JkMzIgc2ZiR3JwLCBzZmI7CisgIFdvcmQzMiBuTGluZXM0OworICBXb3JkMzIgbGRUaHIsIGxkUmF0aW87DQorICBXb3JkMzIgcGUsIGNvbnN0UGFydCwgbkFjdGl2ZUxpbmVzOworCisgIHBlRGF0YS0+cGUgPSBwZURhdGEtPm9mZnNldDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIHBlRGF0YS0+Y29uc3RQYXJ0ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIHBlRGF0YS0+bkFjdGl2ZUxpbmVzID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIGZvcihjaD0wOyBjaDxuQ2hhbm5lbHM7IGNoKyspIHsKKyAgICBQU1lfT1VUX0NIQU5ORUwgKnBzeU91dENoYW4gPSAmcHN5T3V0Q2hhbm5lbFtjaF07CisgICAgUEVfQ0hBTk5FTF9EQVRBICpwZUNoYW5EYXRhID0gJnBlRGF0YS0+cGVDaGFubmVsRGF0YVtjaF07CisgICAgY29uc3QgV29yZDMyICpzZmJFbmVyZ3kgPSBwc3lPdXRDaGFuLT5zZmJFbmVyZ3k7CisgICAgY29uc3QgV29yZDMyICpzZmJUaHJlc2hvbGQgPSBwc3lPdXRDaGFuLT5zZmJUaHJlc2hvbGQ7CisKKyAgICBwZSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBjb25zdFBhcnQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBuQWN0aXZlTGluZXMgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICAgIGZvcihzZmJHcnA9MDsgc2ZiR3JwPHBzeU91dENoYW4tPnNmYkNudDsgc2ZiR3JwKz1wc3lPdXRDaGFuLT5zZmJQZXJHcm91cCkgeworICAgICAgZm9yIChzZmI9MDsgc2ZiPHBzeU91dENoYW4tPm1heFNmYlBlckdyb3VwOyBzZmIrKykgeworICAgICAgICBXb3JkMzIgbnJnID0gc2ZiRW5lcmd5W3NmYkdycCtzZmJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIFdvcmQzMiB0aHJlcyA9IHNmYlRocmVzaG9sZFtzZmJHcnArc2ZiXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgV29yZDMyIHNmYkxERW4gPSBwZUNoYW5EYXRhLT5zZmJMZEVuZXJneVtzZmJHcnArc2ZiXTsNCisKKyAgICAgICAgaWYgKG5yZyA+IHRocmVzKSB7CisgICAgICAgICAgbGRUaHIgPSBpTG9nNCh0aHJlcyk7CisKKyAgICAgICAgICBsZFJhdGlvID0gc2ZiTERFbiAtIGxkVGhyOworCisgICAgICAgICAgbkxpbmVzNCA9IHBlQ2hhbkRhdGEtPnNmYk5MaW5lczRbc2ZiR3JwK3NmYl07ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgCisgICAgICAgICAgLyogc2ZiUGUgPSBubCpsb2cyKGVuL3RocikqLworCQkgIGlmIChsZFJhdGlvID49IEMxX0kpIHsKKyAgICAgICAgICAgIHBlQ2hhbkRhdGEtPnNmYlBlW3NmYkdycCtzZmJdID0gKG5MaW5lczQqbGRSYXRpbyArIDgpID4+IDQ7CisgICAgICAgICAgICBwZUNoYW5EYXRhLT5zZmJDb25zdFBhcnRbc2ZiR3JwK3NmYl0gPSAoKG5MaW5lczQqc2ZiTERFbikpID4+IDQ7CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworCQkgIC8qIHNmYlBlID0gbmwqKGMyICsgYzMqbG9nMihlbi90aHIpKSovCisgICAgICAgICAgICBwZUNoYW5EYXRhLT5zZmJQZVtzZmJHcnArc2ZiXSA9IGV4dHJhY3RfbCgoTF9tcHlfd3goDQorICAgICAgICAgICAgICAgICAgICAoQzJfSSArIEMzX0kgKiBsZFJhdGlvICogMikgPDwgNCwgbkxpbmVzNCkgKyA0KSA+PiAzKTsNCisgICAgICAgICAgICBwZUNoYW5EYXRhLT5zZmJDb25zdFBhcnRbc2ZiR3JwK3NmYl0gPSBleHRyYWN0X2woKCBMX21weV93eCgNCisgICAgICAgICAgICAgICAgICAgIChDMl9JICsgQzNfSSAqIHNmYkxERW4gKiAyKSA8PCA0LCBuTGluZXM0KSArIDQpID4+IDMpOw0KKyAgICAgICAgICAgIG5MaW5lczQgPSAobkxpbmVzNCAqIEMzX0kgKyAoMTAyNDw8MSkpID4+IDEwOworICAgICAgICAgIH0KKyAgICAgICAgICBwZUNoYW5EYXRhLT5zZmJOQWN0aXZlTGluZXNbc2ZiR3JwK3NmYl0gPSBuTGluZXM0ID4+IDI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgcGVDaGFuRGF0YS0+c2ZiUGVbc2ZiR3JwK3NmYl0gPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgcGVDaGFuRGF0YS0+c2ZiQ29uc3RQYXJ0W3NmYkdycCtzZmJdID0gMDsgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgcGVDaGFuRGF0YS0+c2ZiTkFjdGl2ZUxpbmVzW3NmYkdycCtzZmJdID0gMDsgICAgICAgICAgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAgcGUgPSBwZSArIHBlQ2hhbkRhdGEtPnNmYlBlW3NmYkdycCtzZmJdOworICAgICAgICBjb25zdFBhcnQgPSBjb25zdFBhcnQgKyBwZUNoYW5EYXRhLT5zZmJDb25zdFBhcnRbc2ZiR3JwK3NmYl07CisgICAgICAgIG5BY3RpdmVMaW5lcyA9IG5BY3RpdmVMaW5lcyArIHBlQ2hhbkRhdGEtPnNmYk5BY3RpdmVMaW5lc1tzZmJHcnArc2ZiXTsKKyAgICAgIH0KKyAgICB9CisJDQorCXBlQ2hhbkRhdGEtPnBlID0gc2F0dXJhdGUocGUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgIHBlQ2hhbkRhdGEtPmNvbnN0UGFydCA9IHNhdHVyYXRlKGNvbnN0UGFydCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKyAgICBwZUNoYW5EYXRhLT5uQWN0aXZlTGluZXMgPSBzYXR1cmF0ZShuQWN0aXZlTGluZXMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisKKyAgICAKKwlwZSArPSBwZURhdGEtPnBlOworCXBlRGF0YS0+cGUgPSBzYXR1cmF0ZShwZSk7IAorICAgIGNvbnN0UGFydCArPSBwZURhdGEtPmNvbnN0UGFydDsKKwlwZURhdGEtPmNvbnN0UGFydCA9IHNhdHVyYXRlKGNvbnN0UGFydCk7IAorICAgIG5BY3RpdmVMaW5lcyArPSBwZURhdGEtPm5BY3RpdmVMaW5lczsKKwlwZURhdGEtPm5BY3RpdmVMaW5lcyA9IHNhdHVyYXRlKG5BY3RpdmVMaW5lcyk7CisgIH0gCit9CmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9tZW1hbGlnbi5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvbWVtYWxpZ24uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDIwMzUyNwotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL21lbWFsaWduLmMKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4KKyAqKgorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqKgorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqKgorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCUZpbGU6CQltZW1fYWxpZ24uYworCisJQ29udGVudDoJTWVtb3J5IGFsbG9jIGFsaWdubWVudHMgZnVuY3Rpb25zCisKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2luY2x1ZGUJIm1lbWFsaWduLmgiCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBtZW1fbWFsbG9jCisqIGRlc2NyaXB0aW9uOiAgbWFsbG9jIHRoZSBhbGlnbm1lbnRzIG1lbW9yeSAKKyogcmV0dXJuczogICAgICB0aGUgcG9pbnQgb2YgdGhlIG1lbW9yeQorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3ZvaWQgKgorbWVtX21hbGxvYyhWT19NRU1fT1BFUkFUT1IgKnBNZW1vcCwgdW5zaWduZWQgaW50IHNpemUsIHVuc2lnbmVkIGNoYXIgYWxpZ25tZW50LCB1bnNpZ25lZCBpbnQgQ29kZWNJRCkKK3sKKwlpbnQgcmV0OworCXVuc2lnbmVkIGNoYXIgKm1lbV9wdHI7CisJVk9fTUVNX0lORk8gTWVtSW5mbzsKKworCWlmICghYWxpZ25tZW50KSB7CisKKwkJTWVtSW5mby5GbGFnID0gMDsKKwkJTWVtSW5mby5TaXplID0gc2l6ZSArIDE7CisJCXJldCA9IHBNZW1vcC0+QWxsb2MoQ29kZWNJRCwgJk1lbUluZm8pOworCQlpZihyZXQgIT0gMCkKKwkJCXJldHVybiAwOworCQltZW1fcHRyID0gKHVuc2lnbmVkIGNoYXIgKilNZW1JbmZvLlZCdWZmZXI7CisKKwkJcE1lbW9wLT5TZXQoQ29kZWNJRCwgbWVtX3B0ciwgMCwgc2l6ZSArIDEpOworCisJCSptZW1fcHRyID0gKHVuc2lnbmVkIGNoYXIpMTsKKworCQlyZXR1cm4gKCh2b2lkICopKG1lbV9wdHIrMSkpOworCX0gZWxzZSB7CisJCXVuc2lnbmVkIGNoYXIgKnRtcDsKKworCQlNZW1JbmZvLkZsYWcgPSAwOworCQlNZW1JbmZvLlNpemUgPSBzaXplICsgYWxpZ25tZW50OworCQlyZXQgPSBwTWVtb3AtPkFsbG9jKENvZGVjSUQsICZNZW1JbmZvKTsKKwkJaWYocmV0ICE9IDApCisJCQlyZXR1cm4gMDsKKworCQl0bXAgPSAodW5zaWduZWQgY2hhciAqKU1lbUluZm8uVkJ1ZmZlcjsKKworCQlwTWVtb3AtPlNldChDb2RlY0lELCB0bXAsIDAsIHNpemUgKyBhbGlnbm1lbnQpOworCisJCW1lbV9wdHIgPQorCQkJKHVuc2lnbmVkIGNoYXIgKikgKCh1bnNpZ25lZCBpbnQpICh0bXAgKyBhbGlnbm1lbnQgLSAxKSAmCisJCQkJCSh+KCh1bnNpZ25lZCBpbnQpIChhbGlnbm1lbnQgLSAxKSkpKTsKKworCQlpZiAobWVtX3B0ciA9PSB0bXApCisJCQltZW1fcHRyICs9IGFsaWdubWVudDsKKworCQkqKG1lbV9wdHIgLSAxKSA9ICh1bnNpZ25lZCBjaGFyKSAobWVtX3B0ciAtIHRtcCk7CisKKwkJcmV0dXJuICgodm9pZCAqKW1lbV9wdHIpOworCX0KKworCXJldHVybigwKTsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogbWVtX2ZyZWUKKyogZGVzY3JpcHRpb246ICBmcmVlIHRoZSBtZW1vcnkKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit2b2lkCittZW1fZnJlZShWT19NRU1fT1BFUkFUT1IgKnBNZW1vcCwgdm9pZCAqbWVtX3B0ciwgdW5zaWduZWQgaW50IENvZGVjSUQpCit7CisKKwl1bnNpZ25lZCBjaGFyICpwdHI7CisKKwlpZiAobWVtX3B0ciA9PSAwKQorCQlyZXR1cm47CisKKwlwdHIgPSBtZW1fcHRyOworCisJcHRyIC09ICoocHRyIC0gMSk7CisKKwlwTWVtb3AtPkZyZWUoQ29kZWNJRCwgcHRyKTsKK30KKworCisKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL21zX3N0ZXJlby5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvbXNfc3RlcmVvLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzgzZDA3YgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL21zX3N0ZXJlby5jCkBAIC0wLDAgKzEsMTM5IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorCUZpbGU6CQltc19zdGVyZW8uYw0KKw0KKwlDb250ZW50OglNUyBzdGVyZW8gcHJvY2Vzc2luZyBmdW5jdGlvbg0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpbmNsdWRlICJiYXNpY19vcC5oIg0KKyNpbmNsdWRlICJvcGVyXzMyYi5oIgorI2luY2x1ZGUgInBzeV9jb25zdC5oIgorI2luY2x1ZGUgIm1zX3N0ZXJlby5oIgorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBNc1N0ZXJlb1Byb2Nlc3NpbmcKKyogZGVzY3JpcHRpb246ICBkZXRlY3QgdXNlIG1zIHN0ZXJlbyBvciBub3QKKyoJCQkJaWYgKChtaW4odGhyTG4sIHRoclJuKSptaW4odGhyTG4sIHRoclJuKSkvKGVuTW4qZW5TbikpIAorKgkJCQk+PSAoKHRockxuICp0aHJSbikvKGVuTG4qZW5SbikpIHRoZW4gbXMgc3RlcmVvCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordm9pZCBNc1N0ZXJlb1Byb2Nlc3NpbmcoV29yZDMyICAgICAgICpzZmJFbmVyZ3lMZWZ0LAorICAgICAgICAgICAgICAgICAgICAgICAgV29yZDMyICAgICAgICpzZmJFbmVyZ3lSaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQzMiAqc2ZiRW5lcmd5TWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDMyICpzZmJFbmVyZ3lTaWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgV29yZDMyICAgICAgICptZGN0U3BlY3RydW1MZWZ0LAorICAgICAgICAgICAgICAgICAgICAgICAgV29yZDMyICAgICAgICptZGN0U3BlY3RydW1SaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQzMiAgICAgICAqc2ZiVGhyZXNob2xkTGVmdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQzMiAgICAgICAqc2ZiVGhyZXNob2xkUmlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMzIgICAgICAgKnNmYlNwcmVhZGVkRW5MZWZ0LAorICAgICAgICAgICAgICAgICAgICAgICAgV29yZDMyICAgICAgICpzZmJTcHJlYWRlZEVuUmlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgICAgICAgKm1zRGlnZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICAgICAgICptc01hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgIHNmYkNudCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAgc2ZiUGVyR3JvdXAsCisgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgIG1heFNmYlBlckdyb3VwLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICpzZmJPZmZzZXQpIHsKKyAgV29yZDMyIHRlbXA7CisgIFdvcmQzMiBzZmIsc2Zib2ZmcywgajsgCisgIFdvcmQzMiBtc01hc2tUcnVlU29tZXdoZXJlID0gMDsKKyAgV29yZDMyIG1zTWFza0ZhbHNlU29tZXdoZXJlID0gMDsKKworICBmb3IgKHNmYj0wOyBzZmI8c2ZiQ250OyBzZmIrPXNmYlBlckdyb3VwKSB7CisgICAgZm9yIChzZmJvZmZzPTA7c2Zib2ZmczxtYXhTZmJQZXJHcm91cDtzZmJvZmZzKyspIHsKKworICAgICAgV29yZDMyIHRlbXA7CisgICAgICBXb3JkMzIgcG5scixwbm1zOworICAgICAgV29yZDMyIG1pblRocmVzaG9sZDsKKyAgICAgIFdvcmQzMiB0aHJMLCB0aHJSLCBucmdMLCBucmdSOworICAgICAgV29yZDMyIGlkeCwgc2hpZnQ7CisKKyAgICAgIGlkeCA9IHNmYiArIHNmYm9mZnM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICAgICAgdGhyTCA9IHNmYlRocmVzaG9sZExlZnRbaWR4XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgdGhyUiA9IHNmYlRocmVzaG9sZFJpZ2h0W2lkeF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgbnJnTCA9IHNmYkVuZXJneUxlZnRbaWR4XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgbnJnUiA9IHNmYkVuZXJneVJpZ2h0W2lkeF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgICAgICBtaW5UaHJlc2hvbGQgPSBtaW4odGhyTCwgdGhyUik7CisKKyAgICAgIG5yZ0wgPSBtYXgobnJnTCx0aHJMKSArIDE7CisgICAgICBzaGlmdCA9IG5vcm1fbChucmdMKTsNCisJICBucmdMID0gRGl2XzMyKHRockwgPDwgc2hpZnQsIG5yZ0wgPDwgc2hpZnQpOworICAgICAgbnJnUiA9IG1heChucmdSLHRoclIpICsgMTsKKyAgICAgIHNoaWZ0ID0gbm9ybV9sKG5yZ1IpOw0KKwkgIG5yZ1IgPSBEaXZfMzIodGhyUiA8PCBzaGlmdCwgbnJnUiA8PCBzaGlmdCk7CisKKwkgIHBubHIgPSBmaXhtdWwobnJnTCwgbnJnUik7CisKKyAgICAgIG5yZ0wgPSBzZmJFbmVyZ3lNaWRbaWR4XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgIG5yZ1IgPSBzZmJFbmVyZ3lTaWRlW2lkeF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICAgICAgbnJnTCA9IG1heChucmdMLG1pblRocmVzaG9sZCkgKyAxOworICAgICAgc2hpZnQgPSBub3JtX2wobnJnTCk7DQorCSAgbnJnTCA9IERpdl8zMihtaW5UaHJlc2hvbGQgPDwgc2hpZnQsIG5yZ0wgPDwgc2hpZnQpOworCisgICAgICBucmdSID0gbWF4KG5yZ1IsbWluVGhyZXNob2xkKSArIDE7CisgICAgICBzaGlmdCA9IG5vcm1fbChucmdSKTsNCisJICBucmdSID0gRGl2XzMyKG1pblRocmVzaG9sZCA8PCBzaGlmdCwgbnJnUiA8PCBzaGlmdCk7CisKKyAgICAgIHBubXMgPSBmaXhtdWwobnJnTCwgbnJnUik7CisKKyAgICAgIHRlbXAgPSAocG5sciArIDEpIC8gKChwbm1zID4+IDgpICsgMSk7CisKKyAgICAgIHRlbXAgPSBwbm1zIC0gcG5scjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgIGlmKCB0ZW1wID4gMCApeworCisgICAgICAgIG1zTWFza1tpZHhdID0gMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIG1zTWFza1RydWVTb21ld2hlcmUgPSAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgICAgICAgZm9yIChqPXNmYk9mZnNldFtpZHhdOyBqPHNmYk9mZnNldFtpZHgrMV07IGorKykgeworICAgICAgICAgIFdvcmQzMiBsZWZ0LCByaWdodDsKKyAgICAgICAgICBsZWZ0ICA9IChtZGN0U3BlY3RydW1MZWZ0W2pdID4+ICAxKTsKKyAgICAgICAgICByaWdodCA9IChtZGN0U3BlY3RydW1SaWdodFtqXSA+PiAxKTsKKyAgICAgICAgICBtZGN0U3BlY3RydW1MZWZ0W2pdID0gIGxlZnQgKyByaWdodDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgIG1kY3RTcGVjdHJ1bVJpZ2h0W2pdID0gIGxlZnQgLSByaWdodDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHNmYlRocmVzaG9sZExlZnRbaWR4XSA9IG1pblRocmVzaG9sZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIHNmYlRocmVzaG9sZFJpZ2h0W2lkeF0gPSBtaW5UaHJlc2hvbGQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIHNmYkVuZXJneUxlZnRbaWR4XSA9IHNmYkVuZXJneU1pZFtpZHhdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIHNmYkVuZXJneVJpZ2h0W2lkeF0gPSBzZmJFbmVyZ3lTaWRlW2lkeF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgICAgICAgc2ZiU3ByZWFkZWRFblJpZ2h0W2lkeF0gPSBtaW4oc2ZiU3ByZWFkZWRFbkxlZnRbaWR4XSxzZmJTcHJlYWRlZEVuUmlnaHRbaWR4XSkgPj4gMTsgIAorICAgICAgICBzZmJTcHJlYWRlZEVuTGVmdFtpZHhdID0gc2ZiU3ByZWFkZWRFblJpZ2h0W2lkeF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAKKyAgICAgIH0KKyAgICAgIGVsc2UgeworICAgICAgICBtc01hc2tbaWR4XSAgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBtc01hc2tGYWxzZVNvbWV3aGVyZSA9IDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgfQorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIGlmICggbXNNYXNrVHJ1ZVNvbWV3aGVyZSApIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgaWYobXNNYXNrRmFsc2VTb21ld2hlcmUgKSB7CisgICAgICAgICptc0RpZ2VzdCA9IFNJX01TX01BU0tfU09NRTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICB9IGVsc2UgeworICAgICAgICAqbXNEaWdlc3QgPSBTSV9NU19NQVNLX0FMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAqbXNEaWdlc3QgPSBTSV9NU19NQVNLX05PTkU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgfQorICB9CisKK30KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL3ByZV9lY2hvX2NvbnRyb2wuYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL3ByZV9lY2hvX2NvbnRyb2wuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTkyMTZlCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvcHJlX2VjaG9fY29udHJvbC5jCkBAIC0wLDAgKzEsMTEzIEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorCUZpbGU6CQlwcmVfZWNob19jb250cm9sLmMNCisNCisJQ29udGVudDoJUHJlIGVjaG8gY29udHJvbCBmdW5jdGlvbnMNCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaW5jbHVkZSAiYmFzaWNfb3AuaCINCisjaW5jbHVkZSAib3Blcl8zMmIuaCINCisKKyNpbmNsdWRlICJvcGVyXzMyYi5oIgorI2luY2x1ZGUgInByZV9lY2hvX2NvbnRyb2wuaCIKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTpJbml0UHJlRWNob0NvbnRyb2wgCisqIGRlc2NyaXB0aW9uOiBpbml0IHByZSBlY2hvIGNvbnRyb2wgcGFyYW1ldGVyCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3ZvaWQgSW5pdFByZUVjaG9Db250cm9sKFdvcmQzMiAqcGJUaHJlc2hvbGRObTEsCisgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgIG51bVBiLAorICAgICAgICAgICAgICAgICAgICAgICAgV29yZDMyICpwYlRocmVzaG9sZFF1aWV0KQoreworICBXb3JkMTYgcGI7CisKKyAgZm9yKHBiPTA7IHBiPG51bVBiOyBwYisrKSB7CisgICAgcGJUaHJlc2hvbGRObTFbcGJdID0gcGJUaHJlc2hvbGRRdWlldFtwYl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgfQorfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTpQcmVFY2hvQ29udHJvbCAKKyogZGVzY3JpcHRpb246IHVwZGF0ZSBzaHJlc2hvbGQgdG8gYXZvaWQgcHJlIGVjaG8KKyoJCQkgICB0aHIobikgPSBtYXgocnBtaW4qdGhycShuKSwgbWluKHRocnEobiksIHJwZWxldip0aHJxMShuKSkpCisqCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3ZvaWQgUHJlRWNob0NvbnRyb2woV29yZDMyICpwYlRocmVzaG9sZE5tMSwKKyAgICAgICAgICAgICAgICAgICAgV29yZDE2ICBudW1QYiwKKyAgICAgICAgICAgICAgICAgICAgV29yZDMyICBtYXhBbGxvd2VkSW5jcmVhc2VGYWN0b3IsCisgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgbWluUmVtYWluaW5nVGhyZXNob2xkRmFjdG9yLAorICAgICAgICAgICAgICAgICAgICBXb3JkMzIgKnBiVGhyZXNob2xkLAorICAgICAgICAgICAgICAgICAgICBXb3JkMTYgIG1kY3RTY2FsZSwKKyAgICAgICAgICAgICAgICAgICAgV29yZDE2ICBtZGN0U2NhbGVubTEpCit7CisgIFdvcmQzMiBpOworICBXb3JkMzIgdG1wVGhyZXNob2xkMSwgdG1wVGhyZXNob2xkMjsKKyAgV29yZDMyIHNjYWxpbmc7CisKKyAgLyogbWF4QWxsb3dlZEluY3JlYXNlRmFjdG9yIGlzIGhhcmQgY29kZWQgdG8gMiAqLworICAodm9pZCltYXhBbGxvd2VkSW5jcmVhc2VGYWN0b3I7CisKKyAgc2NhbGluZyA9ICgobWRjdFNjYWxlIC0gbWRjdFNjYWxlbm0xKSA8PCAxKTsKKyAgIAorICBpZiAoIHNjYWxpbmcgPiAwICkgeworICAgIGZvcihpID0gMDsgaSA8IG51bVBiOyBpKyspIHsKKyAgICAgIHRtcFRocmVzaG9sZDEgPSBwYlRocmVzaG9sZE5tMVtpXSA+PiAoc2NhbGluZy0xKTsKKyAgICAgIHRtcFRocmVzaG9sZDIgPSBMX21weV9scyhwYlRocmVzaG9sZFtpXSwgbWluUmVtYWluaW5nVGhyZXNob2xkRmFjdG9yKTsKKworICAgICAgLyogY29weSB0aHJlc2hvbGRzIHRvIGludGVybmFsIG1lbW9yeSAqLworICAgICAgcGJUaHJlc2hvbGRObTFbaV0gPSBwYlRocmVzaG9sZFtpXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgICAgICAKKyAgICAgIGlmKHBiVGhyZXNob2xkW2ldID4gdG1wVGhyZXNob2xkMSkgeworICAgICAgICBwYlRocmVzaG9sZFtpXSA9IHRtcFRocmVzaG9sZDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICB9CisgICAgICAgCisgICAgICBpZih0bXBUaHJlc2hvbGQyID4gcGJUaHJlc2hvbGRbaV0pIHsKKyAgICAgICAgcGJUaHJlc2hvbGRbaV0gPSB0bXBUaHJlc2hvbGQyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgfQorCisgICAgfQorICB9CisgIGVsc2UgeworICAgIHNjYWxpbmcgPSAtc2NhbGluZzsKKyAgICBmb3IoaSA9IDA7IGkgPCBudW1QYjsgaSsrKSB7CisKKyAgICAgIHRtcFRocmVzaG9sZDEgPSBwYlRocmVzaG9sZE5tMVtpXSA8PCAxOworICAgICAgdG1wVGhyZXNob2xkMiA9IExfbXB5X2xzKHBiVGhyZXNob2xkW2ldLCBtaW5SZW1haW5pbmdUaHJlc2hvbGRGYWN0b3IpOworCisgICAgICAvKiBjb3B5IHRocmVzaG9sZHMgdG8gaW50ZXJuYWwgbWVtb3J5ICovCisgICAgICBwYlRocmVzaG9sZE5tMVtpXSA9IHBiVGhyZXNob2xkW2ldOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICAgICAgIAorICAgICAgaWYoKChwYlRocmVzaG9sZFtpXSA+PiBzY2FsaW5nKSA+IHRtcFRocmVzaG9sZDEpKSB7CisgICAgICAgIHBiVGhyZXNob2xkW2ldID0gdG1wVGhyZXNob2xkMSA8PCBzY2FsaW5nOworICAgICAgfQorICAgICAgIAorICAgICAgaWYodG1wVGhyZXNob2xkMiA+IHBiVGhyZXNob2xkW2ldKSB7CisgICAgICAgIHBiVGhyZXNob2xkW2ldID0gdG1wVGhyZXNob2xkMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgIH0KKworICAgIH0KKyAgfQorfQorCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9wc3lfY29uZmlndXJhdGlvbi5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvcHN5X2NvbmZpZ3VyYXRpb24uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODZlMDBmCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvcHN5X2NvbmZpZ3VyYXRpb24uYwpAQCAtMCwwICsxLDUwNSBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJcHN5X2NvbmZpZ3VyYXRpb24uYw0KKw0KKwlDb250ZW50OglQc3ljaG9hY2NvdXN0aWMgY29uZmlndXJhdGlvbiBmdW5jdGlvbnMNCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaW5jbHVkZSAiYmFzaWNfb3AuaCINCisjaW5jbHVkZSAib3Blcl8zMmIuaCIKKyNpbmNsdWRlICJwc3lfY29uZmlndXJhdGlvbi5oIgorI2luY2x1ZGUgImFkal90aHIuaCIKKyNpbmNsdWRlICJhYWNfcm9tLmgiCisKKworCisjZGVmaW5lIEJBUkNfU0NBTEUJMTAwIC8qIGludGVnZXIgYmFyYyB2YWx1ZXMgYXJlIHNjYWxlZCB3aXRoIDEwMCAqLworI2RlZmluZSBMT0cyXzEwMDAJMzAxIC8qIGxvZzIqMTAwMCAqLw0KKyNkZWZpbmUgUEkyXzEwMDAJMTU3MSAvKiBwaS8yKjEwMDAqLw0KKyNkZWZpbmUgQVRBTl9DT0VGMQkzNTYwIC8qIDEwMDAvMC4yODA4NzJmKi8NCisjZGVmaW5lIEFUQU5fQ09FRjIJMjgxIC8qIDEwMDAqMC4yODA4NzJmKi8NCisKKwordHlwZWRlZiBzdHJ1Y3R7CisgIFdvcmQzMiBzYW1wbGVSYXRlOworICBjb25zdCBVV29yZDggKnBhcmFtTG9uZzsKKyAgY29uc3QgVVdvcmQ4ICpwYXJhbVNob3J0OworfVNGQl9JTkZPX1RBQjsKKworc3RhdGljIGNvbnN0IFdvcmQxNiBBQlNfTEVWID0gMjA7CitzdGF0aWMgY29uc3QgV29yZDE2IEJBUkNfVEhSX1FVSUVUW10gPSB7MTUsIDEwLCAgNywgIDIsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsICAwLCAgMCwgIDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMsICA1LCAxMCwgMjAsIDMwfTsKKworCisKK3N0YXRpYyBjb25zdCBXb3JkMTYgbWF4X2JhcmsgPSAyNDsgLyogbWF4aW11bSBiYXJrLXZhbHVlICovCitzdGF0aWMgY29uc3QgV29yZDE2IG1hc2tMb3cgID0gMzA7IC8qIGluIDFkQi9iYXJrICovCitzdGF0aWMgY29uc3QgV29yZDE2IG1hc2tIaWdoID0gMTU7IC8qIGluIDEqZEIvYmFyayAqLworc3RhdGljIGNvbnN0IFdvcmQxNiBjX3JhdGlvICA9IDB4MDAyOTsgLyogcG93KDEwLjBmLCAtKDI5LjBmLzEwLjBmKSkgKi8KKworc3RhdGljIGNvbnN0IFdvcmQxNiBtYXNrTG93U3ByRW5Mb25nID0gMzA7ICAgICAgIC8qIGluIDFkQi9iYXJrICovCitzdGF0aWMgY29uc3QgV29yZDE2IG1hc2tIaWdoU3ByRW5Mb25nID0gMjA7ICAgICAgLyogaW4gMWRCL2JhcmsgKi8KK3N0YXRpYyBjb25zdCBXb3JkMTYgbWFza0hpZ2hTcHJFbkxvbmdMb3dCciA9IDE1OyAvKiBpbiAxZEIvYmFyayAqLworc3RhdGljIGNvbnN0IFdvcmQxNiBtYXNrTG93U3ByRW5TaG9ydCA9IDIwOyAgICAgIC8qIGluIDFkQi9iYXJrICovCitzdGF0aWMgY29uc3QgV29yZDE2IG1hc2tIaWdoU3ByRW5TaG9ydCA9IDE1OyAgICAgLyogaW4gMWRCL2JhcmsgKi8NCitzdGF0aWMgY29uc3QgV29yZDE2IGNfbWluUmVtYWluaW5nVGhyZXNob2xkRmFjdG9yID0gMHgwMTQ4OyAgICAvKiAwLjAxICooMSA8PCAxNSkqLw0KK3N0YXRpYyBjb25zdCBXb3JkMzIgY19tYXhzbnIgPSAweDY2NjY2NjY2OwkJIC8qIHVwcGVyIGxpbWl0IGlzIC0xIGRCICovDQorc3RhdGljIGNvbnN0IFdvcmQzMiBjX21pbnNuciA9IDB4MDA2MjRkZDM7CQkgLyogbG93ZXIgbGltaXQgaXMgLTI1IGRCICovDQorDQorc3RhdGljIGNvbnN0IFdvcmQzMiBjX21heENsaXBFbmVyZ3lMb25nID0gMHg3NzM1OTQwMDsgIC8qIDIuMGU5ZiovDQorc3RhdGljIGNvbnN0IFdvcmQzMiBjX21heENsaXBFbmVyZ3lTaG9ydCA9IDB4MDFkY2Q2NTA7IC8qIDIuMGU5Zi8oQUFDRU5DX1RSQU5TX0ZBQypBQUNFTkNfVFJBTlNfRkFDKSovDQorDQorDQorV29yZDMyIEdldFNSSW5kZXgoV29yZDMyIHNhbXBsZVJhdGUpDQorew0KKyAgICBpZiAoOTIwMTcgPD0gc2FtcGxlUmF0ZSkgcmV0dXJuIDA7DQorICAgIGlmICg3NTEzMiA8PSBzYW1wbGVSYXRlKSByZXR1cm4gMTsNCisgICAgaWYgKDU1NDI2IDw9IHNhbXBsZVJhdGUpIHJldHVybiAyOw0KKyAgICBpZiAoNDYwMDkgPD0gc2FtcGxlUmF0ZSkgcmV0dXJuIDM7DQorICAgIGlmICgzNzU2NiA8PSBzYW1wbGVSYXRlKSByZXR1cm4gNDsNCisgICAgaWYgKDI3NzEzIDw9IHNhbXBsZVJhdGUpIHJldHVybiA1Ow0KKyAgICBpZiAoMjMwMDQgPD0gc2FtcGxlUmF0ZSkgcmV0dXJuIDY7DQorICAgIGlmICgxODc4MyA8PSBzYW1wbGVSYXRlKSByZXR1cm4gNzsNCisgICAgaWYgKDEzODU2IDw9IHNhbXBsZVJhdGUpIHJldHVybiA4Ow0KKyAgICBpZiAoMTE1MDIgPD0gc2FtcGxlUmF0ZSkgcmV0dXJuIDk7DQorICAgIGlmICg5MzkxIDw9IHNhbXBsZVJhdGUpIHJldHVybiAxMDsNCisNCisgICAgcmV0dXJuIDExOw0KK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IGF0YW5fMTAwMAorKiBkZXNjcmlwdGlvbjogIGNhbGN1bGF0ZXMgMTAwMCphdGFuKHgvMTAwMCkKKyogICAgICAgICAgICAgICBiYXNlZCBvbiBhdGFuIGFwcHJveCBmb3IgeCA+IDAJCQkJCisqCQkJCWF0YW4oeCkgPSB4LygoZmxvYXQpMS4wZisoZmxvYXQpMC4yODA4NzJmKngqeCkgIGlmIHggPCAxDQorKgkJCQkJCT0gcGkvMiAtIHgvKChmbG9hdCkwLjI4MDg3MmYgK3gqeCkJICAgIGlmIHggPj0gMQ0KKyogcmV0dXJuOiAgICAgICAxMDAwKmF0YW4oeC8xMDAwKQorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyBXb3JkMTYgYXRhbl8xMDAwKFdvcmQzMiB2YWwpIAoreworICBXb3JkMzIgeTsKKworICAgCisgIGlmKExfc3ViKHZhbCwgMTAwMCkgPCAwKSB7CisgICAgeSA9IGV4dHJhY3RfbCgoKDEwMDAgKiB2YWwpIC8gKDEwMDAgKyAoKHZhbCAqIHZhbCkgLyBBVEFOX0NPRUYxKSkpKTsKKyAgfQorICBlbHNlIHsKKyAgICB5ID0gUEkyXzEwMDAgLSAoKDEwMDAgKiB2YWwpIC8gKEFUQU5fQ09FRjIgKyAoKHZhbCAqIHZhbCkgLyAxMDAwKSkpOworICB9CisKKyAgcmV0dXJuIGV4dHJhY3RfbCh5KTsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogQmFyY0xpbmVWYWx1ZQorKiBkZXNjcmlwdGlvbjogIENhbGN1bGF0ZXMgYmFyYyB2YWx1ZSBmb3Igb25lIGZyZXF1ZW5jeSBsaW5lCisqIHJldHVybnM6ICAgICAgYmFyYyB2YWx1ZSBvZiBsaW5lICogQkFSQ19TQ0FMRQorKiBpbnB1dDogICAgICAgIG51bWJlciBvZiBsaW5lcyBpbiB0cmFuc2Zvcm0sIGluZGV4IG9mIGxpbmUgdG8gY2hlY2ssIEZzCisqIG91dHB1dDoKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIFdvcmQxNiBCYXJjTGluZVZhbHVlKFdvcmQxNiBub09mTGluZXMsIFdvcmQxNiBmZnRMaW5lLCBXb3JkMzIgc2FtcGxpbmdGcmVxKQoreworICBXb3JkMzIgY2VudGVyX2ZyZXEsIHRlbXAsIGJ2YWxGRlRMaW5lOworCisgIC8qIGNlbnRlciBmcmVxdWVuY3kgb2YgZmZ0IGxpbmUgKi8KKyAgY2VudGVyX2ZyZXEgPSAoZmZ0TGluZSAqIHNhbXBsaW5nRnJlcSkgLyAobm9PZkxpbmVzIDw8IDEpOworICB0ZW1wID0gIGF0YW5fMTAwMCgoY2VudGVyX2ZyZXEgPDwgMikgLyAoMyoxMCkpOworICBidmFsRkZUTGluZSA9IAorICAgICgyNjYwMCAqIGF0YW5fMTAwMCgoY2VudGVyX2ZyZXEqNzYpIC8gMTAwKSArIDcqdGVtcCp0ZW1wKSAvICgyKjEwMDAqMTAwMCAvIEJBUkNfU0NBTEUpOworICAKKyAgcmV0dXJuIHNhdHVyYXRlKGJ2YWxGRlRMaW5lKTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IGluaXRUaHJRdWlldAorKiBkZXNjcmlwdGlvbjogIGluaXQgdGhyZWRob2xkIGluIHF1aWV0CisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyB2b2lkIGluaXRUaHJRdWlldChXb3JkMTYgIG51bVBiLAorICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAqcGJPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICpwYkJhcmNWYWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDMyICpwYlRocmVzaG9sZFF1aWV0KSB7CisgIFdvcmQxNiBpOworICBXb3JkMTYgYmFyY1RoclF1aWV0OworCisgIGZvcihpPTA7IGk8bnVtUGI7IGkrKykgeworICAgIFdvcmQxNiBidjEsIGJ2MjsKKworICAgICAKKyAgICBpZiAoaT4wKQorICAgICAgYnYxID0gKHBiQmFyY1ZhbFtpXSArIHBiQmFyY1ZhbFtpLTFdKSA+PiAxOworICAgIGVsc2UKKyAgICAgIGJ2MSA9IHBiQmFyY1ZhbFtpXSA+PiAxOworCisgICAgIAorICAgIGlmIChpIDwgKG51bVBiIC0gMSkpCisgICAgICBidjIgPSAocGJCYXJjVmFsW2ldICsgcGJCYXJjVmFsW2krMV0pID4+IDE7CisgICAgZWxzZSB7CisgICAgICBidjIgPSBwYkJhcmNWYWxbaV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIH0KKworICAgIGJ2MSA9IG1pbigoYnYxIC8gQkFSQ19TQ0FMRSksIG1heF9iYXJrKTsKKyAgICBidjIgPSBtaW4oKGJ2MiAvIEJBUkNfU0NBTEUpLCBtYXhfYmFyayk7CisKKyAgICBiYXJjVGhyUXVpZXQgPSBtaW4oQkFSQ19USFJfUVVJRVRbYnYxXSwgQkFSQ19USFJfUVVJRVRbYnYyXSk7CisKKyAgICAKKyAgICAvKgorICAgICAgd2UgY2FsY3VsYXRlIAorICAgICAgcG93KDEwLjBmLChmbG9hdCkoYmFyY1RoclF1aWV0IC0gQUJTX0xFVikqMC4xKSooZmxvYXQpQUJTX0xPVyoocGJPZmZzZXRbaSsxXSAtIHBiT2Zmc2V0W2ldKTsKKyAgICAqLworCisgICAgcGJUaHJlc2hvbGRRdWlldFtpXSA9IHBvdzJfeHkoKCgoYmFyY1RoclF1aWV0IC0gQUJTX0xFVikgKiAxMDApICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTE9HMl8xMDAwKigxNCsyKkxPR19OT1JNX1BDTSkpLCBMT0cyXzEwMDApICogKHBiT2Zmc2V0W2krMV0gLSBwYk9mZnNldFtpXSk7CisgIH0KK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogaW5pdFNwcmVhZGluZworKiBkZXNjcmlwdGlvbjogIGluaXQgZW5lcmd5IHNwcmVhZGluZyBwYXJhbWV0ZXIKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIHZvaWQgaW5pdFNwcmVhZGluZyhXb3JkMTYgIG51bVBiLAorICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgKnBiQmFyY1ZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgKnBiTWFza0xvRmFjdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgKnBiTWFza0hpRmFjdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgKnBiTWFza0xvRmFjdG9yU3ByRW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAqcGJNYXNrSGlGYWN0b3JTcHJFbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDMyIGJpdHJhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiBibG9ja1R5cGUpCit7CisgIFdvcmQxNiBpOworICBXb3JkMTYgbWFza0xvd1NwckVuLCBtYXNrSGlnaFNwckVuOworCisgICAKKyAgaWYgKHN1YihibG9ja1R5cGUsIFNIT1JUX1dJTkRPVykgIT0gMCkgeworICAgIG1hc2tMb3dTcHJFbiA9IG1hc2tMb3dTcHJFbkxvbmc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgIAorICAgIGlmIChiaXRyYXRlID4gMjIwMDApCisgICAgICBtYXNrSGlnaFNwckVuID0gbWFza0hpZ2hTcHJFbkxvbmc7CisgICAgZWxzZQorICAgICAgbWFza0hpZ2hTcHJFbiA9IG1hc2tIaWdoU3ByRW5Mb25nTG93QnI7CisgIH0KKyAgZWxzZSB7CisgICAgbWFza0xvd1NwckVuID0gbWFza0xvd1NwckVuU2hvcnQ7ICAgICAgICAgICAgCisgICAgbWFza0hpZ2hTcHJFbiA9IG1hc2tIaWdoU3ByRW5TaG9ydDsgICAgICAgICAgCisgIH0KKworICBmb3IoaT0wOyBpPG51bVBiOyBpKyspIHsKKyAgICAgCisgICAgaWYgKGkgPiAwKSB7CisgICAgICBXb3JkMzIgZGJWYWw7CisgICAgICBXb3JkMTYgZGJhcmsgPSBwYkJhcmNWYWx1ZVtpXSAtIHBiQmFyY1ZhbHVlW2ktMV07CisKKyAgICAgIC8qCisgICAgICAgIHdlIGNhbHVsYXRlIHBvdygxMC4wZiwgLTAuMSpkYlZhbC9CQVJDX1NDQUxFKSAKKyAgICAgICovCisgICAgICBkYlZhbCA9IChtYXNrSGlnaCAqIGRiYXJrKTsKKyAgICAgIHBiTWFza0hpRmFjdG9yW2ldID0gcm91bmQxNihwb3cyX3h5KExfbmVnYXRlKGRiVmFsKSwgKFdvcmQzMilMT0cyXzEwMDApKTsgICAgICAgICAgICAgLyogMC4zMDEgbG9nMTAoMikgKi8KKyAgICAgICAKKyAgICAgIGRiVmFsID0gKG1hc2tMb3cgKiBkYmFyayk7CisgICAgICBwYk1hc2tMb0ZhY3RvcltpLTFdID0gcm91bmQxNihwb3cyX3h5KExfbmVnYXRlKGRiVmFsKSwoV29yZDMyKUxPRzJfMTAwMCkpOyAKKyAgICAgICAKKyAgICAgIAorICAgICAgZGJWYWwgPSAobWFza0hpZ2hTcHJFbiAqIGRiYXJrKTsKKyAgICAgIHBiTWFza0hpRmFjdG9yU3ByRW5baV0gPSAgcm91bmQxNihwb3cyX3h5KExfbmVnYXRlKGRiVmFsKSwoV29yZDMyKUxPRzJfMTAwMCkpOyAKKyAgICAgIGRiVmFsID0gKG1hc2tMb3dTcHJFbiAqIGRiYXJrKTsKKyAgICAgIHBiTWFza0xvRmFjdG9yU3ByRW5baS0xXSA9IHJvdW5kMTYocG93Ml94eShMX25lZ2F0ZShkYlZhbCksKFdvcmQzMilMT0cyXzEwMDApKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICBwYk1hc2tIaUZhY3RvcltpXSA9IDA7ICAgICAgICAgICAgICAgICAgICAgCisgICAgICBwYk1hc2tMb0ZhY3RvcltudW1QYi0xXSA9IDA7ICAgICAgICAgICAgICAgCisKKyAgICAgIHBiTWFza0hpRmFjdG9yU3ByRW5baV0gPSAwOyAgICAgICAgICAgICAgICAKKyAgICAgIHBiTWFza0xvRmFjdG9yU3ByRW5bbnVtUGItMV0gPSAwOyAgICAgICAgICAKKyAgICB9CisgIH0KKworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBpbml0QmFyY1ZhbHVlcworKiBkZXNjcmlwdGlvbjogIGluaXQgYmFyayB2YWx1ZQorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgdm9pZCBpbml0QmFyY1ZhbHVlcyhXb3JkMTYgIG51bVBiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICpwYk9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgbnVtTGluZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMzIgIHNhbXBsaW5nRnJlcXVlbmN5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICpwYkJ2YWwpCit7CisgIFdvcmQxNiBpOworICBXb3JkMTYgcGJCdmFsMCwgcGJCdmFsMTsKKworICBwYkJ2YWwwID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICBmb3IoaT0wOyBpPG51bVBiOyBpKyspeworICAgIHBiQnZhbDEgPSBCYXJjTGluZVZhbHVlKG51bUxpbmVzLCBwYk9mZnNldFtpKzFdLCBzYW1wbGluZ0ZyZXF1ZW5jeSk7CisgICAgcGJCdmFsW2ldID0gKHBiQnZhbDAgKyBwYkJ2YWwxKSA+PiAxOworICAgIHBiQnZhbDAgPSBwYkJ2YWwxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICB9Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IGluaXRNaW5TbnIKKyogZGVzY3JpcHRpb246ICBjYWxjdWxhdGUgbWluIHNuciBwYXJhbWV0ZXIKKyoJCQkJbWluU25yKG4pID0gMS8oMl5zZmJQZW1pbihuKS93KG4pIC0gMS41KQ0KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIHZvaWQgaW5pdE1pblNucihjb25zdCBXb3JkMzIgIGJpdHJhdGUsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQzMiAgc2FtcGxlcmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICBudW1MaW5lcywKKyAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICpzZmJPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAqcGJCYXJjVmFsLAorICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgIHNmYkFjdGl2ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICAgICAgICpzZmJNaW5TbnIpCit7CisgIFdvcmQxNiBzZmI7CisgIFdvcmQxNiBiYXJjV2lkdGg7CisgIFdvcmQxNiBwZVBlcldpbmRvdzsKKyAgV29yZDMyIHBlUGFydDsKKyAgV29yZDMyIHNucjsKKyAgV29yZDE2IHBiVmFsMCwgcGJWYWwxLCBzaGlmdDsKKworICAvKiByZWxhdGl2ZSBudW1iZXIgb2YgYWN0aXZlIGJhcmtzICovCisKKworICBwZVBlcldpbmRvdyA9IGJpdHMycGUoZXh0cmFjdF9sKChiaXRyYXRlICogbnVtTGluZXMpIC8gc2FtcGxlcmF0ZSkpOworCisgIHBiVmFsMCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgIGZvciAoc2ZiPTA7IHNmYjxzZmJBY3RpdmU7IHNmYisrKSB7CisKKyAgICBwYlZhbDEgPSAocGJCYXJjVmFsW3NmYl0gPDwgMSkgLSBwYlZhbDA7CisgICAgYmFyY1dpZHRoID0gcGJWYWwxIC0gcGJWYWwwOworICAgIHBiVmFsMCA9IHBiVmFsMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICAgIC8qIGFsbG93IGF0IGxlYXN0IDIuNCUgb2YgcGUgZm9yIGVhY2ggYWN0aXZlIGJhcmMgKi8NCisJcGVQYXJ0ID0gKChwZVBlcldpbmRvdyAqIDI0KSAqIChtYXhfYmFyayAqIGJhcmNXaWR0aCkpIC8KKyAgICAgICAgKHBiQmFyY1ZhbFtzZmJBY3RpdmUtMV0gKiAoc2ZiT2Zmc2V0W3NmYisxXSAtIHNmYk9mZnNldFtzZmJdKSk7CisgICAKKyAgICAgIAorICAgIHBlUGFydCA9IG1pbihwZVBhcnQsIDg0MDApOyAKKyAgICBwZVBhcnQgPSBtYXgocGVQYXJ0LCAxNDAwKTsKKworICAgIC8qIG1pblNucihuKSA9IDEvKDJec2ZiUGVtaW4obikvdyhuKSAtIDEuNSkqLw0KKwkvKiB3ZSBhZGQgYW4gb2Zmc2V0IG9mIDJeMTYgdG8gdGhlIHBvdyBmdW5jdGlvbnMgKi8KKwkvKiAweGMwMDAgPSAxLjUqKDEgPDwgMTUpKi8NCisgICAgICAKKyAgICBzbnIgPSBwb3cyX3h5KChwZVBhcnQgLSAxNioxMDAwKSwxMDAwKSAtIDB4MDAwMGMwMDA7CisgICAgICAKKyAgICBpZihzbnIgPiAweDAwMDA4MDAwKQ0KKwl7DQorCQlzaGlmdCA9IG5vcm1fbChzbnIpOw0KKwkJc25yID0gRGl2XzMyKDB4MDAwMDgwMDAgPDwgc2hpZnQsIHNuciA8PCBzaGlmdCk7ICAKKwl9CisJZWxzZQorCXsKKwkJc25yID0gMHg3ZmZmZmZmZjsKKwl9CisgICAgICAKKyAgICAvKiB1cHBlciBsaW1pdCBpcyAtMSBkQiAqLworICAgIHNuciA9IG1pbihzbnIsIGNfbWF4c25yKTsKKyAgICAvKiBsb3dlciBsaW1pdCBpcyAtMjUgZEIgKi8KKyAgICBzbnIgPSBtYXgoc25yLCBjX21pbnNucik7CisgICAgc2ZiTWluU25yW3NmYl0gPSByb3VuZDE2KHNucik7CisgIH0KKworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogSW5pdFBzeUNvbmZpZ3VyYXRpb25Mb25nCisqIGRlc2NyaXB0aW9uOiAgaW5pdCBsb25nIGJsb2NrIHBzeWNob2Fjb3VzdGljIGNvbmZpZ3VyYXRpb24KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworV29yZDE2IEluaXRQc3lDb25maWd1cmF0aW9uTG9uZyhXb3JkMzIgYml0cmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDMyIHNhbXBsZXJhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiBiYW5kd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBTWV9DT05GSUdVUkFUSU9OX0xPTkcgKnBzeUNvbmYpCit7CisgIFdvcmQzMiBzYW1wbGVyYXRlaW5kZXg7DQorICBXb3JkMTYgc2ZiQmFyY1ZhbFtNQVhfU0ZCX0xPTkddOw0KKyAgV29yZDE2IHNmYjsKKworICAvKgorICAgIGluaXQgc2ZiIHRhYmxlCisgICovDQorICBzYW1wbGVyYXRlaW5kZXggPSBHZXRTUkluZGV4KHNhbXBsZXJhdGUpOyAgDQorICBwc3lDb25mLT5zZmJDbnQgPSBzZkJhbmRUb3RhbExvbmdbc2FtcGxlcmF0ZWluZGV4XTsNCisgIHBzeUNvbmYtPnNmYk9mZnNldCA9IHNmQmFuZFRhYkxvbmcgKyBzZkJhbmRUYWJMb25nT2Zmc2V0W3NhbXBsZXJhdGVpbmRleF07DQorICBwc3lDb25mLT5zYW1wUmF0ZUlkeCA9IHNhbXBsZXJhdGVpbmRleDsKKworICAvKgorICAgIGNhbGN1bGF0ZSBiYXJjIHZhbHVlcyBmb3IgZWFjaCBwYgorICAqLworICBpbml0QmFyY1ZhbHVlcyhwc3lDb25mLT5zZmJDbnQsCisgICAgICAgICAgICAgICAgIHBzeUNvbmYtPnNmYk9mZnNldCwKKyAgICAgICAgICAgICAgICAgcHN5Q29uZi0+c2ZiT2Zmc2V0W3BzeUNvbmYtPnNmYkNudF0sCisgICAgICAgICAgICAgICAgIHNhbXBsZXJhdGUsCisgICAgICAgICAgICAgICAgIHNmYkJhcmNWYWwpOworCisgIC8qCisgICAgaW5pdCB0aHJlc2hvbGRzIGluIHF1aWV0CisgICovCisgIGluaXRUaHJRdWlldChwc3lDb25mLT5zZmJDbnQsCisgICAgICAgICAgICAgICBwc3lDb25mLT5zZmJPZmZzZXQsCisgICAgICAgICAgICAgICBzZmJCYXJjVmFsLAorICAgICAgICAgICAgICAgcHN5Q29uZi0+c2ZiVGhyZXNob2xkUXVpZXQpOworCisgIC8qCisgICAgY2FsY3VsYXRlIHNwcmVhZGluZyBmdW5jdGlvbgorICAqLworICBpbml0U3ByZWFkaW5nKHBzeUNvbmYtPnNmYkNudCwKKyAgICAgICAgICAgICAgICBzZmJCYXJjVmFsLAorICAgICAgICAgICAgICAgIHBzeUNvbmYtPnNmYk1hc2tMb3dGYWN0b3IsCisgICAgICAgICAgICAgICAgcHN5Q29uZi0+c2ZiTWFza0hpZ2hGYWN0b3IsCisgICAgICAgICAgICAgICAgcHN5Q29uZi0+c2ZiTWFza0xvd0ZhY3RvclNwckVuLAorICAgICAgICAgICAgICAgIHBzeUNvbmYtPnNmYk1hc2tIaWdoRmFjdG9yU3ByRW4sCisgICAgICAgICAgICAgICAgYml0cmF0ZSwKKyAgICAgICAgICAgICAgICBMT05HX1dJTkRPVyk7CisKKyAgLyoKKyAgICBpbml0IHJhdGlvCisgICovCisgIHBzeUNvbmYtPnJhdGlvID0gY19yYXRpbzsgICAgICAKKworICBwc3lDb25mLT5tYXhBbGxvd2VkSW5jcmVhc2VGYWN0b3IgPSAyOyAgICAgICAgICAgICAgCisgIHBzeUNvbmYtPm1pblJlbWFpbmluZ1RocmVzaG9sZEZhY3RvciA9IGNfbWluUmVtYWluaW5nVGhyZXNob2xkRmFjdG9yOyAgICAvKiAwLjAxICooMSA8PCAxNSkqLyAgCisKKyAgcHN5Q29uZi0+Y2xpcEVuZXJneSA9IGNfbWF4Q2xpcEVuZXJneUxvbmc7ICAgICAgICAgICAgICAgICAgIAorICBwc3lDb25mLT5sb3dwYXNzTGluZSA9IGV4dHJhY3RfbCgoYmFuZHdpZHRoPDwxKSAqIEZSQU1FX0xFTl9MT05HIC8gc2FtcGxlcmF0ZSk7CisKKyAgZm9yIChzZmIgPSAwOyBzZmIgPCBwc3lDb25mLT5zZmJDbnQ7IHNmYisrKSB7CisgICAgaWYgKHN1Yihwc3lDb25mLT5zZmJPZmZzZXRbc2ZiXSwgcHN5Q29uZi0+bG93cGFzc0xpbmUpID49IDApCisgICAgICBicmVhazsKKyAgfQorICBwc3lDb25mLT5zZmJBY3RpdmUgPSBzZmI7ICAgICAgICAgICAgICAgICAKKworICAvKgorICAgIGNhbGN1bGF0ZSBtaW5TbnIKKyAgKi8KKyAgaW5pdE1pblNucihiaXRyYXRlLAorICAgICAgICAgICAgIHNhbXBsZXJhdGUsCisgICAgICAgICAgICAgcHN5Q29uZi0+c2ZiT2Zmc2V0W3BzeUNvbmYtPnNmYkNudF0sCisgICAgICAgICAgICAgcHN5Q29uZi0+c2ZiT2Zmc2V0LAorICAgICAgICAgICAgIHNmYkJhcmNWYWwsCisgICAgICAgICAgICAgcHN5Q29uZi0+c2ZiQWN0aXZlLAorICAgICAgICAgICAgIHBzeUNvbmYtPnNmYk1pblNucik7CisKKworICByZXR1cm4oMCk7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBJbml0UHN5Q29uZmlndXJhdGlvblNob3J0CisqIGRlc2NyaXB0aW9uOiAgaW5pdCBzaG9ydCBibG9jayBwc3ljaG9hY291c3RpYyBjb25maWd1cmF0aW9uCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK1dvcmQxNiBJbml0UHN5Q29uZmlndXJhdGlvblNob3J0KFdvcmQzMiBiaXRyYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDMyIHNhbXBsZXJhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgYmFuZHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFNZX0NPTkZJR1VSQVRJT05fU0hPUlQgKnBzeUNvbmYpIA0KK3sKKyAgV29yZDMyIHNhbXBsZXJhdGVpbmRleDsKKyAgV29yZDE2IHNmYkJhcmNWYWxbTUFYX1NGQl9TSE9SVF07CisgIFdvcmQxNiBzZmI7CisgIC8qCisgICAgaW5pdCBzZmIgdGFibGUKKyAgKi8KKyAgc2FtcGxlcmF0ZWluZGV4ID0gR2V0U1JJbmRleChzYW1wbGVyYXRlKTsgIA0KKyAgcHN5Q29uZi0+c2ZiQ250ID0gc2ZCYW5kVG90YWxTaG9ydFtzYW1wbGVyYXRlaW5kZXhdOw0KKyAgcHN5Q29uZi0+c2ZiT2Zmc2V0ID0gc2ZCYW5kVGFiU2hvcnQgKyBzZkJhbmRUYWJTaG9ydE9mZnNldFtzYW1wbGVyYXRlaW5kZXhdOworICBwc3lDb25mLT5zYW1wUmF0ZUlkeCA9IHNhbXBsZXJhdGVpbmRleDsKKyAgLyoKKyAgICBjYWxjdWxhdGUgYmFyYyB2YWx1ZXMgZm9yIGVhY2ggcGIKKyAgKi8KKyAgaW5pdEJhcmNWYWx1ZXMocHN5Q29uZi0+c2ZiQ250LAorICAgICAgICAgICAgICAgICBwc3lDb25mLT5zZmJPZmZzZXQsCisgICAgICAgICAgICAgICAgIHBzeUNvbmYtPnNmYk9mZnNldFtwc3lDb25mLT5zZmJDbnRdLAorICAgICAgICAgICAgICAgICBzYW1wbGVyYXRlLAorICAgICAgICAgICAgICAgICBzZmJCYXJjVmFsKTsKKworICAvKgorICAgIGluaXQgdGhyZXNob2xkcyBpbiBxdWlldAorICAqLworICBpbml0VGhyUXVpZXQocHN5Q29uZi0+c2ZiQ250LAorICAgICAgICAgICAgICAgcHN5Q29uZi0+c2ZiT2Zmc2V0LAorICAgICAgICAgICAgICAgc2ZiQmFyY1ZhbCwKKyAgICAgICAgICAgICAgIHBzeUNvbmYtPnNmYlRocmVzaG9sZFF1aWV0KTsKKworICAvKgorICAgIGNhbGN1bGF0ZSBzcHJlYWRpbmcgZnVuY3Rpb24KKyAgKi8KKyAgaW5pdFNwcmVhZGluZyhwc3lDb25mLT5zZmJDbnQsCisgICAgICAgICAgICAgICAgc2ZiQmFyY1ZhbCwKKyAgICAgICAgICAgICAgICBwc3lDb25mLT5zZmJNYXNrTG93RmFjdG9yLAorICAgICAgICAgICAgICAgIHBzeUNvbmYtPnNmYk1hc2tIaWdoRmFjdG9yLAorICAgICAgICAgICAgICAgIHBzeUNvbmYtPnNmYk1hc2tMb3dGYWN0b3JTcHJFbiwKKyAgICAgICAgICAgICAgICBwc3lDb25mLT5zZmJNYXNrSGlnaEZhY3RvclNwckVuLAorICAgICAgICAgICAgICAgIGJpdHJhdGUsCisgICAgICAgICAgICAgICAgU0hPUlRfV0lORE9XKTsKKworICAvKgorICAgIGluaXQgcmF0aW8KKyAgKi8KKyAgcHN5Q29uZi0+cmF0aW8gPSBjX3JhdGlvOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgIHBzeUNvbmYtPm1heEFsbG93ZWRJbmNyZWFzZUZhY3RvciA9IDI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgcHN5Q29uZi0+bWluUmVtYWluaW5nVGhyZXNob2xkRmFjdG9yID0gY19taW5SZW1haW5pbmdUaHJlc2hvbGRGYWN0b3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkgCisKKyAgcHN5Q29uZi0+Y2xpcEVuZXJneSA9IGNfbWF4Q2xpcEVuZXJneVNob3J0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgIHBzeUNvbmYtPmxvd3Bhc3NMaW5lID0gZXh0cmFjdF9sKCgoYmFuZHdpZHRoIDw8IDEpICogRlJBTUVfTEVOX1NIT1JUKSAvIHNhbXBsZXJhdGUpOworIAorICBmb3IgKHNmYiA9IDA7IHNmYiA8IHBzeUNvbmYtPnNmYkNudDsgc2ZiKyspIHsKKyAgICAgCisgICAgaWYgKHBzeUNvbmYtPnNmYk9mZnNldFtzZmJdID49IHBzeUNvbmYtPmxvd3Bhc3NMaW5lKQorICAgICAgYnJlYWs7CisgIH0KKyAgcHN5Q29uZi0+c2ZiQWN0aXZlID0gc2ZiOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgIC8qCisgICAgY2FsY3VsYXRlIG1pblNucgorICAqLworICBpbml0TWluU25yKGJpdHJhdGUsCisgICAgICAgICAgICAgc2FtcGxlcmF0ZSwKKyAgICAgICAgICAgICBwc3lDb25mLT5zZmJPZmZzZXRbcHN5Q29uZi0+c2ZiQ250XSwKKyAgICAgICAgICAgICBwc3lDb25mLT5zZmJPZmZzZXQsCisgICAgICAgICAgICAgc2ZiQmFyY1ZhbCwKKyAgICAgICAgICAgICBwc3lDb25mLT5zZmJBY3RpdmUsCisgICAgICAgICAgICAgcHN5Q29uZi0+c2ZiTWluU25yKTsKKworICByZXR1cm4oMCk7Cit9CisKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL3BzeV9tYWluLmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9wc3lfbWFpbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3NDZhNzIKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9wc3lfbWFpbi5jCkBAIC0wLDAgKzEsODEwIEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorCUZpbGU6CQlwc3lfbWFpbi5jDQorDQorCUNvbnRlbnQ6CVBzeWNob2Fjb3VzdGljIG1ham9yIGZ1bmN0aW9ucw0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpbmNsdWRlICJ0eXBlZGVmLmgiDQorI2luY2x1ZGUgImJhc2ljX29wLmgiDQorI2luY2x1ZGUgIm9wZXJfMzJiLmgiCisjaW5jbHVkZSAicHN5X2NvbnN0LmgiCisjaW5jbHVkZSAiYmxvY2tfc3dpdGNoLmgiCisjaW5jbHVkZSAidHJhbnNmb3JtLmgiCisjaW5jbHVkZSAic3ByZWFkaW5nLmgiCisjaW5jbHVkZSAicHJlX2VjaG9fY29udHJvbC5oIgorI2luY2x1ZGUgImJhbmRfbnJnLmgiCisjaW5jbHVkZSAicHN5X2NvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJwc3lfZGF0YS5oIgorI2luY2x1ZGUgIm1zX3N0ZXJlby5oIgorI2luY2x1ZGUgImludGVyZmFjZS5oIgorI2luY2x1ZGUgInBzeV9tYWluLmgiCisjaW5jbHVkZSAiZ3JwX2RhdGEuaCIKKyNpbmNsdWRlICJ0bnNfZnVuYy5oIgorI2luY2x1ZGUgIm1lbWFsaWduLmgiCisKKy8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyAgICAgICBzdGFydCAgICAgICBzaG9ydCAgICAgICBzdG9wICovCitzdGF0aWMgV29yZDE2IGJsb2NrVHlwZTJ3aW5kb3dTaGFwZVtdID0ge0tCRF9XSU5ET1csU0lORV9XSU5ET1csU0lORV9XSU5ET1csS0JEX1dJTkRPV307CisKKy8qCisgIGZvcndhcmQgZGVmaW5pdGlvbnMKKyovCitzdGF0aWMgV29yZDE2IGFkdmFuY2VQc3ljaExvbmcoUFNZX0RBVEEqIHBzeURhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVE5TX0RBVEEqIHRuc0RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFNZX0NPTkZJR1VSQVRJT05fTE9ORyAqaFBzeUNvbmZMb25nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBTWV9PVVRfQ0hBTk5FTCogcHN5T3V0Q2hhbm5lbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMzIgKnBTY3JhdGNoVG5zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFROU19EQVRBICp0bnNEYXRhMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgY2gpOworCitzdGF0aWMgV29yZDE2IGFkdmFuY2VQc3ljaExvbmdNUyAoUFNZX0RBVEEgIHBzeURhdGFbTUFYX0NIQU5ORUxTXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQU1lfQ09ORklHVVJBVElPTl9MT05HICpoUHN5Q29uZkxvbmcpOworCitzdGF0aWMgV29yZDE2IGFkdmFuY2VQc3ljaFNob3J0KFBTWV9EQVRBKiBwc3lEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUTlNfREFUQSogdG5zRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUFNZX0NPTkZJR1VSQVRJT05fU0hPUlQgKmhQc3lDb25mU2hvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBTWV9PVVRfQ0hBTk5FTCogcHN5T3V0Q2hhbm5lbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDMyICpwU2NyYXRjaFRucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVE5TX0RBVEEgKnRuc0RhdGEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgY2gpOworCitzdGF0aWMgV29yZDE2IGFkdmFuY2VQc3ljaFNob3J0TVMgKFBTWV9EQVRBICBwc3lEYXRhW01BWF9DSEFOTkVMU10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFBTWV9DT05GSUdVUkFUSU9OX1NIT1JUICpoUHN5Q29uZlNob3J0KTsKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogUHN5TmV3CisqIGRlc2NyaXB0aW9uOiAgYWxsb2NhdGVzIG1lbW9yeSBmb3IgcHN5Y2hvYWNvdXN0aWMKKyogcmV0dXJuczogICAgICBhbiBlcnJvciBjb2RlCisqIGlucHV0OiAgICAgICAgcG9pbnRlciB0byBhIHBzeWNoIGhhbmRsZQorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitXb3JkMTYgUHN5TmV3KFBTWV9LRVJORUwgKmhQc3ksIFdvcmQzMiBuQ2hhbiwgVk9fTUVNX09QRVJBVE9SICpwTWVtT1ApCit7CisgIFdvcmQxNiBpOw0KKyAgV29yZDMyICptZGN0U3BlY3RydW07DQorICBXb3JkMzIgKnNjcmF0Y2hUTlM7DQorICBXb3JkMTYgKm1kY3REZWxheUJ1ZmZlcjsNCisgIA0KKyAgbWRjdFNwZWN0cnVtID0gKFdvcmQzMiAqKW1lbV9tYWxsb2MocE1lbU9QLCBuQ2hhbiAqIEZSQU1FX0xFTl9MT05HICogc2l6ZW9mKFdvcmQzMiksIDMyLCBWT19JTkRFWF9FTkNfQUFDKTsNCisgIGlmKE5VTEwgPT0gbWRjdFNwZWN0cnVtKQ0KKwkgIHJldHVybiAxOw0KKw0KKyAgc2NyYXRjaFROUyA9IChXb3JkMzIgKiltZW1fbWFsbG9jKHBNZW1PUCwgbkNoYW4gKiBGUkFNRV9MRU5fTE9ORyAqIHNpemVvZihXb3JkMzIpLCAzMiwgVk9fSU5ERVhfRU5DX0FBQyk7DQorICBpZihOVUxMID09IHNjcmF0Y2hUTlMpDQorICB7DQorCSAgcmV0dXJuIDE7DQorICB9DQorDQorICBtZGN0RGVsYXlCdWZmZXIgPSAoV29yZDE2ICopbWVtX21hbGxvYyhwTWVtT1AsIG5DaGFuICogQkxPQ0tfU1dJVENISU5HX09GRlNFVCAqIHNpemVvZihXb3JkMTYpLCAzMiwgVk9fSU5ERVhfRU5DX0FBQyk7DQorICBpZihOVUxMID09IG1kY3REZWxheUJ1ZmZlcikNCisgIHsNCisJICByZXR1cm4gMTsKKyAgfQ0KKw0KKyAgZm9yIChpPTA7IGk8bkNoYW47IGkrKyl7CisgICAgaFBzeS0+cHN5RGF0YVtpXS5tZGN0RGVsYXlCdWZmZXIgPSBtZGN0RGVsYXlCdWZmZXIgKyBpKkJMT0NLX1NXSVRDSElOR19PRkZTRVQ7ICAgICAgCisgICAgaFBzeS0+cHN5RGF0YVtpXS5tZGN0U3BlY3RydW0gPSBtZGN0U3BlY3RydW0gKyBpKkZSQU1FX0xFTl9MT05HOworICB9CisKKyAgaFBzeS0+cFNjcmF0Y2hUbnMgPSBzY3JhdGNoVE5TOworCisgIHJldHVybiAwOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBQc3lEZWxldGUKKyogZGVzY3JpcHRpb246ICBhbGxvY2F0ZXMgbWVtb3J5IGZvciBwc3ljaG9hY291c3RpYworKiByZXR1cm5zOiAgICAgIGFuIGVycm9yIGNvZGUKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworV29yZDE2IFBzeURlbGV0ZShQU1lfS0VSTkVMICAqaFBzeSwgVk9fTUVNX09QRVJBVE9SICpwTWVtT1ApCit7CisgIFdvcmQzMiBuY2g7DQorDQorICBpZihoUHN5KQ0KKyAgew0KKwlpZihoUHN5LT5wc3lEYXRhWzBdLm1kY3REZWxheUJ1ZmZlcikNCisJCW1lbV9mcmVlKHBNZW1PUCwgaFBzeS0+cHN5RGF0YVswXS5tZGN0RGVsYXlCdWZmZXIsIFZPX0lOREVYX0VOQ19BQUMpOw0KKyAgICAgIA0KKyAgICBpZihoUHN5LT5wc3lEYXRhWzBdLm1kY3RTcGVjdHJ1bSkNCisJCW1lbV9mcmVlKHBNZW1PUCwgaFBzeS0+cHN5RGF0YVswXS5tZGN0U3BlY3RydW0sIFZPX0lOREVYX0VOQ19BQUMpOw0KKw0KKyAgICBmb3IgKG5jaD0wOyBuY2g8TUFYX0NIQU5ORUxTOyBuY2grKyl7DQorCSAgaFBzeS0+cHN5RGF0YVtuY2hdLm1kY3REZWxheUJ1ZmZlciA9IE5VTEw7ICAgICAgDQorCSAgaFBzeS0+cHN5RGF0YVtuY2hdLm1kY3RTcGVjdHJ1bSA9IE5VTEw7DQorCX0NCisNCisJaWYoaFBzeS0+cFNjcmF0Y2hUbnMpDQorCXsNCisJCW1lbV9mcmVlKHBNZW1PUCwgaFBzeS0+cFNjcmF0Y2hUbnMsIFZPX0lOREVYX0VOQ19BQUMpOw0KKwkJaFBzeS0+cFNjcmF0Y2hUbnMgPSBOVUxMOw0KKwl9DQorICB9DQorCisgIHJldHVybiAwOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBQc3lPdXROZXcKKyogZGVzY3JpcHRpb246ICBhbGxvY2F0ZXMgbWVtb3J5IGZvciBwc3lPdXQgc3RydWMKKyogcmV0dXJuczogICAgICBhbiBlcnJvciBjb2RlCisqIGlucHV0OiAgICAgICAgcG9pbnRlciB0byBhIHBzeWNoIGhhbmRsZQorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitXb3JkMTYgUHN5T3V0TmV3KFBTWV9PVVQgKmhQc3lPdXQsIFZPX01FTV9PUEVSQVRPUiAqcE1lbU9QKQoreworICBwTWVtT1AtPlNldChWT19JTkRFWF9FTkNfQUFDLCBoUHN5T3V0LCAwLCBzaXplb2YoUFNZX09VVCkpOworICAvKgorICAgIGFsbG9jIHNvbWUgbW9yZSBzdHVmZiwgdGJkCisgICovCisgIHJldHVybiAwOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogUHN5T3V0RGVsZXRlCisqIGRlc2NyaXB0aW9uOiAgYWxsb2NhdGVzIG1lbW9yeSBmb3IgcHN5Y2hvYWNvdXN0aWMKKyogcmV0dXJuczogICAgICBhbiBlcnJvciBjb2RlCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK1dvcmQxNiBQc3lPdXREZWxldGUoUFNZX09VVCAqaFBzeU91dCwgVk9fTUVNX09QRVJBVE9SICpwTWVtT1ApCit7CisgIGhQc3lPdXQ9TlVMTDsKKyAgcmV0dXJuIDA7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IHBzeU1haW5Jbml0CisqIGRlc2NyaXB0aW9uOiAgaW5pdGlhbGl6ZXMgcHN5Y2hvYWNvdXN0aWMKKyogcmV0dXJuczogICAgICBhbiBlcnJvciBjb2RlCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworV29yZDE2IHBzeU1haW5Jbml0KFBTWV9LRVJORUwgKmhQc3ksCisgICAgICAgICAgICAgICAgICAgV29yZDMyIHNhbXBsZVJhdGUsCisgICAgICAgICAgICAgICAgICAgV29yZDMyIGJpdFJhdGUsCisgICAgICAgICAgICAgICAgICAgV29yZDE2IGNoYW5uZWxzLAorICAgICAgICAgICAgICAgICAgIFdvcmQxNiB0bnNNYXNrLAorICAgICAgICAgICAgICAgICAgIFdvcmQxNiBiYW5kd2lkdGgpCit7CisgIFdvcmQxNiBjaCwgZXJyOworICBXb3JkMzIgY2hhbm5lbEJpdFJhdGUgPSBiaXRSYXRlL2NoYW5uZWxzOworCisgIGVyciA9IEluaXRQc3lDb25maWd1cmF0aW9uTG9uZyhjaGFubmVsQml0UmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZVJhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYW5kd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmKGhQc3ktPnBzeUNvbmZMb25nKSk7DQorDQorICBpZiAoIWVycikgeworICAgICAgaFBzeS0+c2FtcGxlUmF0ZUlkeCA9IGhQc3ktPnBzeUNvbmZMb25nLnNhbXBSYXRlSWR4Ow0KKwkgIGVyciA9IEluaXRUbnNDb25maWd1cmF0aW9uTG9uZyhiaXRSYXRlLCBzYW1wbGVSYXRlLCBjaGFubmVscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhQc3ktPnBzeUNvbmZMb25nLnRuc0NvbmYsICZoUHN5LT5wc3lDb25mTG9uZywgdG5zTWFzayYyKTsKKyAgfQorCisgIGlmICghZXJyKQorICAgIGVyciA9IEluaXRQc3lDb25maWd1cmF0aW9uU2hvcnQoY2hhbm5lbEJpdFJhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVSYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFuZHdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhQc3ktPnBzeUNvbmZTaG9ydCk7CisgIGlmICghZXJyKSB7CisgICAgZXJyID0gSW5pdFRuc0NvbmZpZ3VyYXRpb25TaG9ydChiaXRSYXRlLCBzYW1wbGVSYXRlLCBjaGFubmVscywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZoUHN5LT5wc3lDb25mU2hvcnQudG5zQ29uZiwgJmhQc3ktPnBzeUNvbmZTaG9ydCwgdG5zTWFzayYxKTsKKyAgfQorCisgIGlmICghZXJyKQorICAgIGZvcihjaD0wO2NoIDwgY2hhbm5lbHM7Y2grKyl7CisgIAorICAgICAgSW5pdEJsb2NrU3dpdGNoaW5nKCZoUHN5LT5wc3lEYXRhW2NoXS5ibG9ja1N3aXRjaGluZ0NvbnRyb2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgYml0UmF0ZSwgY2hhbm5lbHMpOworCisgICAgICBJbml0UHJlRWNob0NvbnRyb2woaFBzeS0+cHN5RGF0YVtjaF0uc2ZiVGhyZXNob2xkbm0xLAorICAgICAgICAgICAgICAgICAgICAgICAgIGhQc3ktPnBzeUNvbmZMb25nLnNmYkNudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBoUHN5LT5wc3lDb25mTG9uZy5zZmJUaHJlc2hvbGRRdWlldCk7CisgICAgICBoUHN5LT5wc3lEYXRhW2NoXS5tZGN0U2NhbGVubTEgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgfQorCisJcmV0dXJuKGVycik7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBwc3lNYWluCisqIGRlc2NyaXB0aW9uOiAgcHN5Y2hvYWNvdXN0aWMgbWFpbiBmdW5jdGlvbgorKiByZXR1cm5zOiAgICAgIGFuIGVycm9yIGNvZGUKKyoKKyogICAgVGhpcyBmdW5jdGlvbiBhc3N1bWVzIHRoYXQgZW5vdWdoIGlucHV0IGRhdGEgaXMgaW4gdGhlIG1vZHVsbyBidWZmZXIuCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworV29yZDE2IHBzeU1haW4oV29yZDE2ICAgICAgICAgICAgICAgICAgIG5DaGFubmVscywKKyAgICAgICAgICAgICAgIEVMRU1FTlRfSU5GTyAgICAgICAgICAgICplbGVtSW5mbywKKyAgICAgICAgICAgICAgIFdvcmQxNiAgICAgICAgICAgICAgICAgICp0aW1lU2lnbmFsLCAKKyAgICAgICAgICAgICAgIFBTWV9EQVRBICAgICAgICAgICAgICAgICBwc3lEYXRhW01BWF9DSEFOTkVMU10sCisgICAgICAgICAgICAgICBUTlNfREFUQSAgICAgICAgICAgICAgICAgdG5zRGF0YVtNQVhfQ0hBTk5FTFNdLAorICAgICAgICAgICAgICAgUFNZX0NPTkZJR1VSQVRJT05fTE9ORyAgKmhQc3lDb25mTG9uZywKKyAgICAgICAgICAgICAgIFBTWV9DT05GSUdVUkFUSU9OX1NIT1JUICpoUHN5Q29uZlNob3J0LAorICAgICAgICAgICAgICAgUFNZX09VVF9DSEFOTkVMICAgICAgICAgIHBzeU91dENoYW5uZWxbTUFYX0NIQU5ORUxTXSwKKyAgICAgICAgICAgICAgIFBTWV9PVVRfRUxFTUVOVCAgICAgICAgICpwc3lPdXRFbGVtZW50LAorICAgICAgICAgICAgICAgV29yZDMyICAgICAgICAgICAgICAgICAgKnBTY3JhdGNoVG5zLAorCQkJICAgV29yZDMyCQkJCSAgIHNhbXBsZVJhdGUpCit7CisgIFdvcmQxNiBtYXhTZmJQZXJHcm91cFtNQVhfQ0hBTk5FTFNdOworICBXb3JkMTYgbWRjdFNjYWxpbmdBcnJheVtNQVhfQ0hBTk5FTFNdOworCisgIFdvcmQxNiBjaDsgICAvKiBjb3VudHMgdGhyb3VnaCBjaGFubmVscyAgICAgICAgICAqLworICBXb3JkMTYgc2ZiOyAgLyogY291bnRzIHRocm91Z2ggc2NhbGVmYWN0b3IgYmFuZHMgKi8KKyAgV29yZDE2IGxpbmU7IC8qIGNvdW50cyB0aHJvdWdoIGxpbmVzICAgICAgICAgICAgICovCisgIFdvcmQxNiBjaGFubmVsczsKKyAgV29yZDE2IG1heFNjYWxlOworCisgIGNoYW5uZWxzID0gZWxlbUluZm8tPm5DaGFubmVsc0luRWw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBtYXhTY2FsZSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICAvKiBibG9jayBzd2l0Y2hpbmcgKi8NCisgIGZvcihjaCA9IDA7IGNoIDwgY2hhbm5lbHM7IGNoKyspIHsKKyAgICBCbG9ja1N3aXRjaGluZygmcHN5RGF0YVtjaF0uYmxvY2tTd2l0Y2hpbmdDb250cm9sLAorICAgICAgICAgICAgICAgICAgIHRpbWVTaWduYWwrZWxlbUluZm8tPkNoYW5uZWxJbmRleFtjaF0sCisJCQkJICAgc2FtcGxlUmF0ZSwKKyAgICAgICAgICAgICAgICAgICBuQ2hhbm5lbHMpOworICB9CisKKyAgLyogc3luY2ggbGVmdCBhbmQgcmlnaHQgYmxvY2sgdHlwZSAqLworICBTeW5jQmxvY2tTd2l0Y2hpbmcoJnBzeURhdGFbMF0uYmxvY2tTd2l0Y2hpbmdDb250cm9sLAorICAgICAgICAgICAgICAgICAgICAgJnBzeURhdGFbMV0uYmxvY2tTd2l0Y2hpbmdDb250cm9sLAorICAgICAgICAgICAgICAgICAgICAgY2hhbm5lbHMpOworCisgIC8qIHRyYW5zZm9ybQorICAgICBhbmQgZ2V0IG1heFNjYWxlIChtYXggbWRjdFNjYWxpbmcpIGZvciBhbGwgY2hhbm5lbHMgKi8KKyAgZm9yKGNoPTA7IGNoPGNoYW5uZWxzOyBjaCsrKSB7CisgICAgVHJhbnNmb3JtX1JlYWwocHN5RGF0YVtjaF0ubWRjdERlbGF5QnVmZmVyLAorICAgICAgICAgICAgICAgICAgIHRpbWVTaWduYWwrZWxlbUluZm8tPkNoYW5uZWxJbmRleFtjaF0sCisgICAgICAgICAgICAgICAgICAgbkNoYW5uZWxzLAorICAgICAgICAgICAgICAgICAgIHBzeURhdGFbY2hdLm1kY3RTcGVjdHJ1bSwKKyAgICAgICAgICAgICAgICAgICAmKG1kY3RTY2FsaW5nQXJyYXlbY2hdKSwKKyAgICAgICAgICAgICAgICAgICBwc3lEYXRhW2NoXS5ibG9ja1N3aXRjaGluZ0NvbnRyb2wud2luZG93U2VxdWVuY2UpOworICAgIG1heFNjYWxlID0gbWF4KG1heFNjYWxlLCBtZGN0U2NhbGluZ0FycmF5W2NoXSk7CisgIH0KKworICAvKiBjb21tb24gc2NhbGluZyBmb3IgYWxsIGNoYW5uZWxzICovCisgIGZvciAoY2g9MDsgY2g8Y2hhbm5lbHM7IGNoKyspIHsKKyAgICBXb3JkMTYgc2NhbGVEaWZmID0gbWF4U2NhbGUgLSBtZGN0U2NhbGluZ0FycmF5W2NoXTsKKyAgICAgCisgICAgaWYgKHNjYWxlRGlmZiA+IDApIHsKKyAgICAgIFdvcmQzMiAqU3BlY3RydW0gPSBwc3lEYXRhW2NoXS5tZGN0U3BlY3RydW07CisJICBmb3IobGluZT0wOyBsaW5lPEZSQU1FX0xFTl9MT05HOyBsaW5lKyspIHsKKyAgICAgICAgKlNwZWN0cnVtID0gKCpTcGVjdHJ1bSkgPj4gc2NhbGVEaWZmOworCQlTcGVjdHJ1bSsrOworICAgICAgfQorICAgIH0KKyAgICBwc3lEYXRhW2NoXS5tZGN0U2NhbGUgPSBtYXhTY2FsZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgfQorCisgIGZvciAoY2g9MDsgY2g8Y2hhbm5lbHM7IGNoKyspIHsKKyAgICAgCisgICAgaWYocHN5RGF0YVtjaF0uYmxvY2tTd2l0Y2hpbmdDb250cm9sLndpbmRvd1NlcXVlbmNlICE9IFNIT1JUX1dJTkRPVykgeworICAgICAgLyogdXBkYXRlIGxvbmcgYmxvY2sgcGFyYW1ldGVyICovCisJICBhZHZhbmNlUHN5Y2hMb25nKCZwc3lEYXRhW2NoXSwKKyAgICAgICAgICAgICAgICAgICAgICAgJnRuc0RhdGFbY2hdLAorICAgICAgICAgICAgICAgICAgICAgICBoUHN5Q29uZkxvbmcsCisgICAgICAgICAgICAgICAgICAgICAgICZwc3lPdXRDaGFubmVsW2NoXSwKKyAgICAgICAgICAgICAgICAgICAgICAgcFNjcmF0Y2hUbnMsCisgICAgICAgICAgICAgICAgICAgICAgICZ0bnNEYXRhWzEgLSBjaF0sCisgICAgICAgICAgICAgICAgICAgICAgIGNoKTsKKworICAgICAgLyogZGV0ZXJtaW5lIG1heFNmYiAqLworICAgICAgZm9yIChzZmI9aFBzeUNvbmZMb25nLT5zZmJDbnQtMTsgc2ZiPj0wOyBzZmItLSkgeworICAgICAgICBmb3IgKGxpbmU9aFBzeUNvbmZMb25nLT5zZmJPZmZzZXRbc2ZiKzFdIC0gMTsgbGluZT49aFBzeUNvbmZMb25nLT5zZmJPZmZzZXRbc2ZiXTsgbGluZS0tKSB7CisgICAgICAgICAgIAorICAgICAgICAgIGlmIChwc3lEYXRhW2NoXS5tZGN0U3BlY3RydW1bbGluZV0gIT0gMCkgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGxpbmUgPj0gaFBzeUNvbmZMb25nLT5zZmJPZmZzZXRbc2ZiXSkgYnJlYWs7CisgICAgICB9CisgICAgICBtYXhTZmJQZXJHcm91cFtjaF0gPSBzZmIgKyAxOworCisgICAgICAvKiBDYWxjIGJhbmR3aXNlIGVuZXJnaWVzIGZvciBtaWQgYW5kIHNpZGUgY2hhbm5lbAorICAgICAgICAgRG8gaXQgb25seSBpZiAyIGNoYW5uZWxzIGV4aXN0ICovCisgICAgICAgCisgICAgICBpZiAoY2ggPT0gMSkKKyAgICAgICAgYWR2YW5jZVBzeWNoTG9uZ01TKHBzeURhdGEsIGhQc3lDb25mTG9uZyk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgYWR2YW5jZVBzeWNoU2hvcnQoJnBzeURhdGFbY2hdLAorICAgICAgICAgICAgICAgICAgICAgICAgJnRuc0RhdGFbY2hdLAorICAgICAgICAgICAgICAgICAgICAgICAgaFBzeUNvbmZTaG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICZwc3lPdXRDaGFubmVsW2NoXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBTY3JhdGNoVG5zLAorICAgICAgICAgICAgICAgICAgICAgICAgJnRuc0RhdGFbMSAtIGNoXSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoKTsKKworICAgICAgLyogQ2FsYyBiYW5kd2lzZSBlbmVyZ2llcyBmb3IgbWlkIGFuZCBzaWRlIGNoYW5uZWwKKyAgICAgICAgIERvIGl0IG9ubHkgaWYgMiBjaGFubmVscyBleGlzdCAqLworICAgICAgIAorICAgICAgaWYgKGNoID09IDEpCisgICAgICAgIGFkdmFuY2VQc3ljaFNob3J0TVMgKHBzeURhdGEsIGhQc3lDb25mU2hvcnQpOworICAgIH0KKyAgfQorCisgIC8qIGdyb3VwIHNob3J0IGRhdGEgKi8KKyAgZm9yKGNoPTA7IGNoPGNoYW5uZWxzOyBjaCsrKSB7CisgICAgIAorICAgIGlmIChwc3lEYXRhW2NoXS5ibG9ja1N3aXRjaGluZ0NvbnRyb2wud2luZG93U2VxdWVuY2UgPT0gU0hPUlRfV0lORE9XKSB7CisgICAgICBncm91cFNob3J0RGF0YShwc3lEYXRhW2NoXS5tZGN0U3BlY3RydW0sCisgICAgICAgICAgICAgICAgICAgICBwU2NyYXRjaFRucywKKyAgICAgICAgICAgICAgICAgICAgICZwc3lEYXRhW2NoXS5zZmJUaHJlc2hvbGQsCisgICAgICAgICAgICAgICAgICAgICAmcHN5RGF0YVtjaF0uc2ZiRW5lcmd5LAorICAgICAgICAgICAgICAgICAgICAgJnBzeURhdGFbY2hdLnNmYkVuZXJneU1TLAorICAgICAgICAgICAgICAgICAgICAgJnBzeURhdGFbY2hdLnNmYlNwcmVhZGVkRW5lcmd5LAorICAgICAgICAgICAgICAgICAgICAgaFBzeUNvbmZTaG9ydC0+c2ZiQ250LAorICAgICAgICAgICAgICAgICAgICAgaFBzeUNvbmZTaG9ydC0+c2ZiT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgaFBzeUNvbmZTaG9ydC0+c2ZiTWluU25yLAorICAgICAgICAgICAgICAgICAgICAgcHN5T3V0RWxlbWVudC0+Z3JvdXBlZFNmYk9mZnNldFtjaF0sCisgICAgICAgICAgICAgICAgICAgICAmbWF4U2ZiUGVyR3JvdXBbY2hdLAorICAgICAgICAgICAgICAgICAgICAgcHN5T3V0RWxlbWVudC0+Z3JvdXBlZFNmYk1pblNucltjaF0sCisgICAgICAgICAgICAgICAgICAgICBwc3lEYXRhW2NoXS5ibG9ja1N3aXRjaGluZ0NvbnRyb2wubm9PZkdyb3VwcywKKyAgICAgICAgICAgICAgICAgICAgIHBzeURhdGFbY2hdLmJsb2NrU3dpdGNoaW5nQ29udHJvbC5ncm91cExlbik7CisgICAgfQorICB9CisKKworI2lmIChNQVhfQ0hBTk5FTFM+MSkKKyAgLyoKKyAgICBzdGVyZW8gUHJvY2Vzc2luZworICAqLworICBpZiAoY2hhbm5lbHMgPT0gMikgeworICAgIHBzeU91dEVsZW1lbnQtPnRvb2xzSW5mby5tc0RpZ2VzdCA9IE1TX05PTkU7ICAgICAgICAgICAgICAgICAKKyAgICBtYXhTZmJQZXJHcm91cFswXSA9IG1heFNmYlBlckdyb3VwWzFdID0gbWF4KG1heFNmYlBlckdyb3VwWzBdLCBtYXhTZmJQZXJHcm91cFsxXSk7CisKKyAgICAgCisgICAgaWYgKHBzeURhdGFbMF0uYmxvY2tTd2l0Y2hpbmdDb250cm9sLndpbmRvd1NlcXVlbmNlICE9IFNIT1JUX1dJTkRPVykKKyAgICAgIE1zU3RlcmVvUHJvY2Vzc2luZyhwc3lEYXRhWzBdLnNmYkVuZXJneS5zZmJMb25nLAorICAgICAgICAgICAgICAgICAgICAgICAgIHBzeURhdGFbMV0uc2ZiRW5lcmd5LnNmYkxvbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgcHN5RGF0YVswXS5zZmJFbmVyZ3lNUy5zZmJMb25nLAorICAgICAgICAgICAgICAgICAgICAgICAgIHBzeURhdGFbMV0uc2ZiRW5lcmd5TVMuc2ZiTG9uZywKKyAgICAgICAgICAgICAgICAgICAgICAgICBwc3lEYXRhWzBdLm1kY3RTcGVjdHJ1bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBwc3lEYXRhWzFdLm1kY3RTcGVjdHJ1bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBwc3lEYXRhWzBdLnNmYlRocmVzaG9sZC5zZmJMb25nLAorICAgICAgICAgICAgICAgICAgICAgICAgIHBzeURhdGFbMV0uc2ZiVGhyZXNob2xkLnNmYkxvbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgcHN5RGF0YVswXS5zZmJTcHJlYWRlZEVuZXJneS5zZmJMb25nLAorICAgICAgICAgICAgICAgICAgICAgICAgIHBzeURhdGFbMV0uc2ZiU3ByZWFkZWRFbmVyZ3kuc2ZiTG9uZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAoV29yZDE2KikmcHN5T3V0RWxlbWVudC0+dG9vbHNJbmZvLm1zRGlnZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgIChXb3JkMTYqKXBzeU91dEVsZW1lbnQtPnRvb2xzSW5mby5tc01hc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgaFBzeUNvbmZMb25nLT5zZmJDbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgaFBzeUNvbmZMb25nLT5zZmJDbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgbWF4U2ZiUGVyR3JvdXBbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IFdvcmQxNiopaFBzeUNvbmZMb25nLT5zZmJPZmZzZXQpOworICAgICAgZWxzZQorICAgICAgICBNc1N0ZXJlb1Byb2Nlc3NpbmcocHN5RGF0YVswXS5zZmJFbmVyZ3kuc2ZiTG9uZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHBzeURhdGFbMV0uc2ZiRW5lcmd5LnNmYkxvbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBwc3lEYXRhWzBdLnNmYkVuZXJneU1TLnNmYkxvbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBwc3lEYXRhWzFdLnNmYkVuZXJneU1TLnNmYkxvbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBwc3lEYXRhWzBdLm1kY3RTcGVjdHJ1bSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHBzeURhdGFbMV0ubWRjdFNwZWN0cnVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgcHN5RGF0YVswXS5zZmJUaHJlc2hvbGQuc2ZiTG9uZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHBzeURhdGFbMV0uc2ZiVGhyZXNob2xkLnNmYkxvbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBwc3lEYXRhWzBdLnNmYlNwcmVhZGVkRW5lcmd5LnNmYkxvbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBwc3lEYXRhWzFdLnNmYlNwcmVhZGVkRW5lcmd5LnNmYkxvbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoV29yZDE2KikmcHN5T3V0RWxlbWVudC0+dG9vbHNJbmZvLm1zRGlnZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKFdvcmQxNiopcHN5T3V0RWxlbWVudC0+dG9vbHNJbmZvLm1zTWFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHBzeURhdGFbMF0uYmxvY2tTd2l0Y2hpbmdDb250cm9sLm5vT2ZHcm91cHMqaFBzeUNvbmZTaG9ydC0+c2ZiQ250LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaFBzeUNvbmZTaG9ydC0+c2ZiQ250LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4U2ZiUGVyR3JvdXBbMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgV29yZDE2Kilwc3lPdXRFbGVtZW50LT5ncm91cGVkU2ZiT2Zmc2V0WzBdKTsKKyAgfQorCisjZW5kaWYgLyogKE1BWF9DSEFOTkVMUz4xKSAqLworCisgIC8qCisgICAgYnVpbGQgb3V0cHV0CisgICovCisgIGZvcihjaD0wO2NoPGNoYW5uZWxzO2NoKyspIHsKKyAgICAgCisgICAgaWYgKHBzeURhdGFbY2hdLmJsb2NrU3dpdGNoaW5nQ29udHJvbC53aW5kb3dTZXF1ZW5jZSAhPSBTSE9SVF9XSU5ET1cpCisgICAgICBCdWlsZEludGVyZmFjZShwc3lEYXRhW2NoXS5tZGN0U3BlY3RydW0sCisgICAgICAgICAgICAgICAgICAgICBwc3lEYXRhW2NoXS5tZGN0U2NhbGUsCisgICAgICAgICAgICAgICAgICAgICAmcHN5RGF0YVtjaF0uc2ZiVGhyZXNob2xkLAorICAgICAgICAgICAgICAgICAgICAgJnBzeURhdGFbY2hdLnNmYkVuZXJneSwKKyAgICAgICAgICAgICAgICAgICAgICZwc3lEYXRhW2NoXS5zZmJTcHJlYWRlZEVuZXJneSwKKyAgICAgICAgICAgICAgICAgICAgIHBzeURhdGFbY2hdLnNmYkVuZXJneVN1bSwKKyAgICAgICAgICAgICAgICAgICAgIHBzeURhdGFbY2hdLnNmYkVuZXJneVN1bU1TLAorICAgICAgICAgICAgICAgICAgICAgcHN5RGF0YVtjaF0uYmxvY2tTd2l0Y2hpbmdDb250cm9sLndpbmRvd1NlcXVlbmNlLAorICAgICAgICAgICAgICAgICAgICAgYmxvY2tUeXBlMndpbmRvd1NoYXBlW3BzeURhdGFbY2hdLmJsb2NrU3dpdGNoaW5nQ29udHJvbC53aW5kb3dTZXF1ZW5jZV0sCisgICAgICAgICAgICAgICAgICAgICBoUHN5Q29uZkxvbmctPnNmYkNudCwKKyAgICAgICAgICAgICAgICAgICAgIGhQc3lDb25mTG9uZy0+c2ZiT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgbWF4U2ZiUGVyR3JvdXBbY2hdLAorICAgICAgICAgICAgICAgICAgICAgaFBzeUNvbmZMb25nLT5zZmJNaW5TbnIsCisgICAgICAgICAgICAgICAgICAgICBwc3lEYXRhW2NoXS5ibG9ja1N3aXRjaGluZ0NvbnRyb2wubm9PZkdyb3VwcywKKyAgICAgICAgICAgICAgICAgICAgIHBzeURhdGFbY2hdLmJsb2NrU3dpdGNoaW5nQ29udHJvbC5ncm91cExlbiwKKyAgICAgICAgICAgICAgICAgICAgICZwc3lPdXRDaGFubmVsW2NoXSk7CisgICAgZWxzZQorICAgICAgQnVpbGRJbnRlcmZhY2UocHN5RGF0YVtjaF0ubWRjdFNwZWN0cnVtLAorICAgICAgICAgICAgICAgICAgICAgcHN5RGF0YVtjaF0ubWRjdFNjYWxlLAorICAgICAgICAgICAgICAgICAgICAgJnBzeURhdGFbY2hdLnNmYlRocmVzaG9sZCwKKyAgICAgICAgICAgICAgICAgICAgICZwc3lEYXRhW2NoXS5zZmJFbmVyZ3ksCisgICAgICAgICAgICAgICAgICAgICAmcHN5RGF0YVtjaF0uc2ZiU3ByZWFkZWRFbmVyZ3ksCisgICAgICAgICAgICAgICAgICAgICBwc3lEYXRhW2NoXS5zZmJFbmVyZ3lTdW0sCisgICAgICAgICAgICAgICAgICAgICBwc3lEYXRhW2NoXS5zZmJFbmVyZ3lTdW1NUywKKyAgICAgICAgICAgICAgICAgICAgIFNIT1JUX1dJTkRPVywKKyAgICAgICAgICAgICAgICAgICAgIFNJTkVfV0lORE9XLAorICAgICAgICAgICAgICAgICAgICAgcHN5RGF0YVswXS5ibG9ja1N3aXRjaGluZ0NvbnRyb2wubm9PZkdyb3VwcypoUHN5Q29uZlNob3J0LT5zZmJDbnQsCisgICAgICAgICAgICAgICAgICAgICBwc3lPdXRFbGVtZW50LT5ncm91cGVkU2ZiT2Zmc2V0W2NoXSwKKyAgICAgICAgICAgICAgICAgICAgIG1heFNmYlBlckdyb3VwW2NoXSwKKyAgICAgICAgICAgICAgICAgICAgIHBzeU91dEVsZW1lbnQtPmdyb3VwZWRTZmJNaW5TbnJbY2hdLAorICAgICAgICAgICAgICAgICAgICAgcHN5RGF0YVtjaF0uYmxvY2tTd2l0Y2hpbmdDb250cm9sLm5vT2ZHcm91cHMsCisgICAgICAgICAgICAgICAgICAgICBwc3lEYXRhW2NoXS5ibG9ja1N3aXRjaGluZ0NvbnRyb2wuZ3JvdXBMZW4sCisgICAgICAgICAgICAgICAgICAgICAmcHN5T3V0Q2hhbm5lbFtjaF0pOworICB9CisKKyAgcmV0dXJuKDApOyAvKiBubyBlcnJvciAqLworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogYWR2YW5jZVBzeWNoTG9uZworKiBkZXNjcmlwdGlvbjogIHBzeWNob2Fjb3VzdGljIGZvciBsb25nIGJsb2NrcworKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3N0YXRpYyBXb3JkMTYgYWR2YW5jZVBzeWNoTG9uZyhQU1lfREFUQSogcHN5RGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUTlNfREFUQSogdG5zRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQU1lfQ09ORklHVVJBVElPTl9MT05HICpoUHN5Q29uZkxvbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFNZX09VVF9DSEFOTkVMKiBwc3lPdXRDaGFubmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQzMiAqcFNjcmF0Y2hUbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVE5TX0RBVEEqIHRuc0RhdGEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiBjaCkKK3sKKyAgV29yZDMyIGk7CisgIFdvcmQzMiBub3JtRW5lcmd5U2hpZnQgPSAocHN5RGF0YS0+bWRjdFNjYWxlICsgMSkgPDwgMTsgLyogaW4gcmVmZXJlbmNlIGNvZGUsIG1kY3Qgc3BlY3RydW0gbXVzdCBiZSBtdWx0aXBpZWQgd2l0aCAyLCBzbyArMSAqLworICBXb3JkMzIgY2xpcEVuZXJneSA9IGhQc3lDb25mTG9uZy0+Y2xpcEVuZXJneSA+PiBub3JtRW5lcmd5U2hpZnQ7DQorICBXb3JkMzIgKmRhdGEwLCAqZGF0YTEsIHRkYXRhOworCisgIC8qIGxvdyBwYXNzICovCisgIGRhdGEwID0gcHN5RGF0YS0+bWRjdFNwZWN0cnVtICsgaFBzeUNvbmZMb25nLT5sb3dwYXNzTGluZTsNCisgIGZvcihpPWhQc3lDb25mTG9uZy0+bG93cGFzc0xpbmU7IGk8RlJBTUVfTEVOX0xPTkc7IGkrKykgeworICAgICpkYXRhMCsrID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICB9CisKKyAgLyogQ2FsYyBzZmItYmFuZHdpc2UgbWRjdC1lbmVyZ2llcyBmb3IgbGVmdCBhbmQgcmlnaHQgY2hhbm5lbCAqLworICBDYWxjQmFuZEVuZXJneSggcHN5RGF0YS0+bWRjdFNwZWN0cnVtLAorICAgICAgICAgICAgICAgICAgaFBzeUNvbmZMb25nLT5zZmJPZmZzZXQsCisgICAgICAgICAgICAgICAgICBoUHN5Q29uZkxvbmctPnNmYkFjdGl2ZSwKKyAgICAgICAgICAgICAgICAgIHBzeURhdGEtPnNmYkVuZXJneS5zZmJMb25nLAorICAgICAgICAgICAgICAgICAgJnBzeURhdGEtPnNmYkVuZXJneVN1bS5zZmJMb25nKTsKKworICAvKgorICAgIFROUyBkZXRlY3QKKyAgKi8KKyAgVG5zRGV0ZWN0KHRuc0RhdGEsCisgICAgICAgICAgICBoUHN5Q29uZkxvbmctPnRuc0NvbmYsCisgICAgICAgICAgICBwU2NyYXRjaFRucywKKyAgICAgICAgICAgIChjb25zdCBXb3JkMTYqKWhQc3lDb25mTG9uZy0+c2ZiT2Zmc2V0LAorICAgICAgICAgICAgcHN5RGF0YS0+bWRjdFNwZWN0cnVtLAorICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIHBzeURhdGEtPmJsb2NrU3dpdGNoaW5nQ29udHJvbC53aW5kb3dTZXF1ZW5jZSwKKyAgICAgICAgICAgIHBzeURhdGEtPnNmYkVuZXJneS5zZmJMb25nKTsKKworICAvKiAgVG5zU3luYyAqLyAgIAorICBpZiAoY2ggPT0gMSkgeworICAgIFRuc1N5bmModG5zRGF0YSwKKyAgICAgICAgICAgIHRuc0RhdGEyLAorICAgICAgICAgICAgaFBzeUNvbmZMb25nLT50bnNDb25mLAorICAgICAgICAgICAgMCwKKyAgICAgICAgICAgIHBzeURhdGEtPmJsb2NrU3dpdGNoaW5nQ29udHJvbC53aW5kb3dTZXF1ZW5jZSk7CisgIH0KKworICAvKiAgVG5zIEVuY29kZXIgKi8gCisgIFRuc0VuY29kZSgmcHN5T3V0Q2hhbm5lbC0+dG5zSW5mbywKKyAgICAgICAgICAgIHRuc0RhdGEsCisgICAgICAgICAgICBoUHN5Q29uZkxvbmctPnNmYkNudCwKKyAgICAgICAgICAgIGhQc3lDb25mTG9uZy0+dG5zQ29uZiwKKyAgICAgICAgICAgIGhQc3lDb25mTG9uZy0+bG93cGFzc0xpbmUsCisgICAgICAgICAgICBwc3lEYXRhLT5tZGN0U3BlY3RydW0sCisgICAgICAgICAgICAwLAorICAgICAgICAgICAgcHN5RGF0YS0+YmxvY2tTd2l0Y2hpbmdDb250cm9sLndpbmRvd1NlcXVlbmNlKTsKKworICAvKiBmaXJzdCBwYXJ0IG9mIHRocmVzaG9sZCBjYWxjdWxhdGlvbiAqLworICBkYXRhMCA9IHBzeURhdGEtPnNmYkVuZXJneS5zZmJMb25nOw0KKyAgZGF0YTEgPSBwc3lEYXRhLT5zZmJUaHJlc2hvbGQuc2ZiTG9uZzsNCisgIGZvciAoaT1oUHN5Q29uZkxvbmctPnNmYkNudDsgaTsgaS0tKSB7CisgICAgdGRhdGEgPSBMX21weV9scygqZGF0YTArKywgaFBzeUNvbmZMb25nLT5yYXRpbyk7CisgICAgKmRhdGExKysgPSBtaW4odGRhdGEsIGNsaXBFbmVyZ3kpOw0KKyAgfQorCisgIC8qIENhbGMgc2ZiLWJhbmR3aXNlIG1kY3QtZW5lcmdpZXMgZm9yIGxlZnQgYW5kIHJpZ2h0IGNoYW5uZWwgYWdhaW4gKi8gICAKKyAgaWYgKHRuc0RhdGEtPmRhdGFSYXcudG5zTG9uZy5zdWJCbG9ja0luZm8udG5zQWN0aXZlIT0wKSB7CisgICAgV29yZDE2IHRuc1N0YXJ0QmFuZCA9IGhQc3lDb25mTG9uZy0+dG5zQ29uZi50bnNTdGFydEJhbmQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIENhbGNCYW5kRW5lcmd5KCBwc3lEYXRhLT5tZGN0U3BlY3RydW0sCisgICAgICAgICAgICAgICAgICAgIGhQc3lDb25mTG9uZy0+c2ZiT2Zmc2V0K3Ruc1N0YXJ0QmFuZCwKKyAgICAgICAgICAgICAgICAgICAgaFBzeUNvbmZMb25nLT5zZmJBY3RpdmUgLSB0bnNTdGFydEJhbmQsCisgICAgICAgICAgICAgICAgICAgIHBzeURhdGEtPnNmYkVuZXJneS5zZmJMb25nK3Ruc1N0YXJ0QmFuZCwKKyAgICAgICAgICAgICAgICAgICAgJnBzeURhdGEtPnNmYkVuZXJneVN1bS5zZmJMb25nKTsKKyAgICANCisJZGF0YTAgPSBwc3lEYXRhLT5zZmJFbmVyZ3kuc2ZiTG9uZzsNCisJdGRhdGEgPSBwc3lEYXRhLT5zZmJFbmVyZ3lTdW0uc2ZiTG9uZzsNCisJZm9yIChpPTA7IGk8dG5zU3RhcnRCYW5kOyBpKyspCisgICAgICB0ZGF0YSArPSAqZGF0YTArKzsNCisNCisJcHN5RGF0YS0+c2ZiRW5lcmd5U3VtLnNmYkxvbmcgPSB0ZGF0YTsKKyAgfQorCisKKyAgLyogc3ByZWFkaW5nIGVuZXJneSAqLworICBTcHJlYWRpbmdNYXgoaFBzeUNvbmZMb25nLT5zZmJDbnQsCisgICAgICAgICAgICAgICBoUHN5Q29uZkxvbmctPnNmYk1hc2tMb3dGYWN0b3IsCisgICAgICAgICAgICAgICBoUHN5Q29uZkxvbmctPnNmYk1hc2tIaWdoRmFjdG9yLAorICAgICAgICAgICAgICAgcHN5RGF0YS0+c2ZiVGhyZXNob2xkLnNmYkxvbmcpOworCisgIC8qIHRocmVzaG9sZCBpbiBxdWlldCAqLworICBkYXRhMCA9IHBzeURhdGEtPnNmYlRocmVzaG9sZC5zZmJMb25nOw0KKyAgZGF0YTEgPSBoUHN5Q29uZkxvbmctPnNmYlRocmVzaG9sZFF1aWV0Ow0KKyAgZm9yIChpPWhQc3lDb25mTG9uZy0+c2ZiQ250OyBpOyBpLS0pCisgIHsNCisJICAqZGF0YTAgPSBtYXgoKmRhdGEwLCAoKmRhdGExID4+IG5vcm1FbmVyZ3lTaGlmdCkpOw0KKwkgIGRhdGEwKys7IGRhdGExKys7DQorICB9CisKKyAgLyogcHJlZWNobyBjb250cm9sICovICAgCisgIGlmIChwc3lEYXRhLT5ibG9ja1N3aXRjaGluZ0NvbnRyb2wud2luZG93U2VxdWVuY2UgPT0gU1RPUF9XSU5ET1cpIHsKKyAgICBkYXRhMCA9IHBzeURhdGEtPnNmYlRocmVzaG9sZG5tMTsNCisJZm9yIChpPWhQc3lDb25mTG9uZy0+c2ZiQ250OyBpOyBpLS0pIHsNCisgICAgICAqZGF0YTArKyA9IE1BWF8zMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgfQ0KKyAgICBwc3lEYXRhLT5tZGN0U2NhbGVubTEgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgfQorCisgIFByZUVjaG9Db250cm9sKCBwc3lEYXRhLT5zZmJUaHJlc2hvbGRubTEsCisgICAgICAgICAgICAgICAgICBoUHN5Q29uZkxvbmctPnNmYkNudCwKKyAgICAgICAgICAgICAgICAgIGhQc3lDb25mTG9uZy0+bWF4QWxsb3dlZEluY3JlYXNlRmFjdG9yLAorICAgICAgICAgICAgICAgICAgaFBzeUNvbmZMb25nLT5taW5SZW1haW5pbmdUaHJlc2hvbGRGYWN0b3IsCisgICAgICAgICAgICAgICAgICBwc3lEYXRhLT5zZmJUaHJlc2hvbGQuc2ZiTG9uZywKKyAgICAgICAgICAgICAgICAgIHBzeURhdGEtPm1kY3RTY2FsZSwKKyAgICAgICAgICAgICAgICAgIHBzeURhdGEtPm1kY3RTY2FsZW5tMSk7CisgIHBzeURhdGEtPm1kY3RTY2FsZW5tMSA9IHBzeURhdGEtPm1kY3RTY2FsZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgIAorICBpZiAocHN5RGF0YS0+YmxvY2tTd2l0Y2hpbmdDb250cm9sLndpbmRvd1NlcXVlbmNlPT0gU1RBUlRfV0lORE9XKSB7CisgICAgZGF0YTAgPSBwc3lEYXRhLT5zZmJUaHJlc2hvbGRubTE7DQorCWZvciAoaT1oUHN5Q29uZkxvbmctPnNmYkNudDsgaTsgaS0tKSB7CisgICAgICAqZGF0YTArKyA9IE1BWF8zMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICB9CisgICAgcHN5RGF0YS0+bWRjdFNjYWxlbm0xID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIH0KKworICAvKiBhcHBseSB0bnMgbXVsdCB0YWJsZSBvbiBjYiB0aHJlc2hvbGRzICovCisgIEFwcGx5VG5zTXVsdFRhYmxlVG9SYXRpb3MoaFBzeUNvbmZMb25nLT50bnNDb25mLnRuc1JhdGlvUGF0Y2hMb3dlc3RDYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoUHN5Q29uZkxvbmctPnRuc0NvbmYudG5zU3RhcnRCYW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRuc0RhdGEtPmRhdGFSYXcudG5zTG9uZy5zdWJCbG9ja0luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHN5RGF0YS0+c2ZiVGhyZXNob2xkLnNmYkxvbmcpOworCisKKyAgLyogc3ByZWFkZWQgZW5lcmd5ICovCisgIGRhdGEwID0gcHN5RGF0YS0+c2ZiU3ByZWFkZWRFbmVyZ3kuc2ZiTG9uZzsNCisgIGRhdGExID0gcHN5RGF0YS0+c2ZiRW5lcmd5LnNmYkxvbmc7DQorICBmb3IgKGk9aFBzeUNvbmZMb25nLT5zZmJDbnQ7IGk7IGktLSkgeworICAgIC8vcHN5RGF0YS0+c2ZiU3ByZWFkZWRFbmVyZ3kuc2ZiTG9uZ1tpXSA9IHBzeURhdGEtPnNmYkVuZXJneS5zZmJMb25nW2ldOyAgICAgICANCisJICAqZGF0YTArKyA9ICpkYXRhMSsrOworICB9CisKKyAgLyogc3ByZWFkaW5nIGVuZXJneSAqLworICBTcHJlYWRpbmdNYXgoaFBzeUNvbmZMb25nLT5zZmJDbnQsCisgICAgICAgICAgICAgICBoUHN5Q29uZkxvbmctPnNmYk1hc2tMb3dGYWN0b3JTcHJFbiwgCisgICAgICAgICAgICAgICBoUHN5Q29uZkxvbmctPnNmYk1hc2tIaWdoRmFjdG9yU3ByRW4sCisgICAgICAgICAgICAgICBwc3lEYXRhLT5zZmJTcHJlYWRlZEVuZXJneS5zZmJMb25nKTsKKworICByZXR1cm4gMDsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IGFkdmFuY2VQc3ljaExvbmdNUworKiBkZXNjcmlwdGlvbjogICB1cGRhdGUgbWRjdC1lbmVyZ2llcyBmb3IgbGVmdCBhZGQgb3IgbWludXMgcmlnaHQgY2hhbm5lbCAKKyoJCQkJZm9yIGxvbmcgYmxvY2sKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIFdvcmQxNiBhZHZhbmNlUHN5Y2hMb25nTVMgKFBTWV9EQVRBIHBzeURhdGFbTUFYX0NIQU5ORUxTXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBQU1lfQ09ORklHVVJBVElPTl9MT05HICpoUHN5Q29uZkxvbmcpCit7CisgIENhbGNCYW5kRW5lcmd5TVMocHN5RGF0YVswXS5tZGN0U3BlY3RydW0sCisgICAgICAgICAgICAgICAgICAgcHN5RGF0YVsxXS5tZGN0U3BlY3RydW0sCisgICAgICAgICAgICAgICAgICAgaFBzeUNvbmZMb25nLT5zZmJPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgaFBzeUNvbmZMb25nLT5zZmJBY3RpdmUsCisgICAgICAgICAgICAgICAgICAgcHN5RGF0YVswXS5zZmJFbmVyZ3lNUy5zZmJMb25nLAorICAgICAgICAgICAgICAgICAgICZwc3lEYXRhWzBdLnNmYkVuZXJneVN1bU1TLnNmYkxvbmcsCisgICAgICAgICAgICAgICAgICAgcHN5RGF0YVsxXS5zZmJFbmVyZ3lNUy5zZmJMb25nLAorICAgICAgICAgICAgICAgICAgICZwc3lEYXRhWzFdLnNmYkVuZXJneVN1bU1TLnNmYkxvbmcpOworCisgIHJldHVybiAwOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBhZHZhbmNlUHN5Y2hTaG9ydAorKiBkZXNjcmlwdGlvbjogIHBzeWNob2Fjb3VzdGljIGZvciBzaG9ydCBibG9ja3MKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCitzdGF0aWMgV29yZDE2IGFkdmFuY2VQc3ljaFNob3J0KFBTWV9EQVRBKiBwc3lEYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUTlNfREFUQSogdG5zRGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUFNZX0NPTkZJR1VSQVRJT05fU0hPUlQgKmhQc3lDb25mU2hvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBTWV9PVVRfQ0hBTk5FTCogcHN5T3V0Q2hhbm5lbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDMyICpwU2NyYXRjaFRucywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgVE5TX0RBVEEgKnRuc0RhdGEyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgY2gpCit7CisgIFdvcmQzMiB3OworICBXb3JkMzIgbm9ybUVuZXJneVNoaWZ0ID0gKHBzeURhdGEtPm1kY3RTY2FsZSArIDEpIDw8IDE7IC8qIGluIHJlZmVyZW5jZSBjb2RlLCBtZGN0IHNwZWN0cnVtIG11c3QgYmUgbXVsdGlwaWVkIHdpdGggMiwgc28gKzEgKi8KKyAgV29yZDMyIGNsaXBFbmVyZ3kgPSBoUHN5Q29uZlNob3J0LT5jbGlwRW5lcmd5ID4+IG5vcm1FbmVyZ3lTaGlmdDsKKyAgV29yZDMyIHdPZmZzZXQgPSAwOyAgICAgDQorICBXb3JkMzIgKmRhdGEwLCAqZGF0YTE7CisKKyAgZm9yKHcgPSAwOyB3IDwgVFJBTlNfRkFDOyB3KyspIHsKKyAgICBXb3JkMzIgaSwgdGRhdGE7CisKKyAgICAvKiBsb3cgcGFzcyAqLworICAgIGRhdGEwID0gcHN5RGF0YS0+bWRjdFNwZWN0cnVtICsgd09mZnNldCArIGhQc3lDb25mU2hvcnQtPmxvd3Bhc3NMaW5lOw0KKwlmb3IoaT1oUHN5Q29uZlNob3J0LT5sb3dwYXNzTGluZTsgaTxGUkFNRV9MRU5fU0hPUlQ7IGkrKyl7CisgICAgICAqZGF0YTArKyA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICB9CisKKyAgICAvKiBDYWxjIHNmYi1iYW5kd2lzZSBtZGN0LWVuZXJnaWVzIGZvciBsZWZ0IGFuZCByaWdodCBjaGFubmVsICovCisgICAgQ2FsY0JhbmRFbmVyZ3koIHBzeURhdGEtPm1kY3RTcGVjdHJ1bSt3T2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICBoUHN5Q29uZlNob3J0LT5zZmJPZmZzZXQsCisgICAgICAgICAgICAgICAgICAgIGhQc3lDb25mU2hvcnQtPnNmYkFjdGl2ZSwKKyAgICAgICAgICAgICAgICAgICAgcHN5RGF0YS0+c2ZiRW5lcmd5LnNmYlNob3J0W3ddLAorICAgICAgICAgICAgICAgICAgICAmcHN5RGF0YS0+c2ZiRW5lcmd5U3VtLnNmYlNob3J0W3ddKTsKKyAgICAvKgorICAgICAgIFROUworICAgICovCisgICAgVG5zRGV0ZWN0KHRuc0RhdGEsCisgICAgICAgICAgICAgIGhQc3lDb25mU2hvcnQtPnRuc0NvbmYsCisgICAgICAgICAgICAgIHBTY3JhdGNoVG5zLAorICAgICAgICAgICAgICAoY29uc3QgV29yZDE2KiloUHN5Q29uZlNob3J0LT5zZmJPZmZzZXQsCisgICAgICAgICAgICAgIHBzeURhdGEtPm1kY3RTcGVjdHJ1bSt3T2Zmc2V0LAorICAgICAgICAgICAgICB3LAorICAgICAgICAgICAgICBwc3lEYXRhLT5ibG9ja1N3aXRjaGluZ0NvbnRyb2wud2luZG93U2VxdWVuY2UsCisgICAgICAgICAgICAgIHBzeURhdGEtPnNmYkVuZXJneS5zZmJTaG9ydFt3XSk7CisKKyAgICAvKiAgVG5zU3luYyAqLworICAgIGlmIChjaCA9PSAxKSB7CisgICAgICBUbnNTeW5jKHRuc0RhdGEsCisgICAgICAgICAgICAgIHRuc0RhdGEyLAorICAgICAgICAgICAgICBoUHN5Q29uZlNob3J0LT50bnNDb25mLAorICAgICAgICAgICAgICB3LAorICAgICAgICAgICAgICBwc3lEYXRhLT5ibG9ja1N3aXRjaGluZ0NvbnRyb2wud2luZG93U2VxdWVuY2UpOworICAgIH0KKworICAgIFRuc0VuY29kZSgmcHN5T3V0Q2hhbm5lbC0+dG5zSW5mbywKKyAgICAgICAgICAgICAgdG5zRGF0YSwKKyAgICAgICAgICAgICAgaFBzeUNvbmZTaG9ydC0+c2ZiQ250LAorICAgICAgICAgICAgICBoUHN5Q29uZlNob3J0LT50bnNDb25mLAorICAgICAgICAgICAgICBoUHN5Q29uZlNob3J0LT5sb3dwYXNzTGluZSwKKyAgICAgICAgICAgICAgcHN5RGF0YS0+bWRjdFNwZWN0cnVtK3dPZmZzZXQsCisgICAgICAgICAgICAgIHcsCisgICAgICAgICAgICAgIHBzeURhdGEtPmJsb2NrU3dpdGNoaW5nQ29udHJvbC53aW5kb3dTZXF1ZW5jZSk7CisKKyAgICAvKiBmaXJzdCBwYXJ0IG9mIHRocmVzaG9sZCBjYWxjdWxhdGlvbiAqLworICAgIGRhdGEwID0gcHN5RGF0YS0+c2ZiVGhyZXNob2xkLnNmYlNob3J0W3ddOw0KKwlkYXRhMSA9IHBzeURhdGEtPnNmYkVuZXJneS5zZmJTaG9ydFt3XTsNCisJZm9yIChpPWhQc3lDb25mU2hvcnQtPnNmYkNudDsgaTsgaS0tKSB7CisgICAgICB0ZGF0YSA9IExfbXB5X2xzKCpkYXRhMSsrLCBoUHN5Q29uZlNob3J0LT5yYXRpbyk7CisgICAgICAqZGF0YTArKyA9IG1pbih0ZGF0YSwgY2xpcEVuZXJneSk7DQorICAgIH0KKworICAgIC8qIENhbGMgc2ZiLWJhbmR3aXNlIG1kY3QtZW5lcmdpZXMgZm9yIGxlZnQgYW5kIHJpZ2h0IGNoYW5uZWwgYWdhaW4gKi8gICAgIAorICAgIGlmICh0bnNEYXRhLT5kYXRhUmF3LnRuc1Nob3J0LnN1YkJsb2NrSW5mb1t3XS50bnNBY3RpdmUgIT0gMCkgeworICAgICAgV29yZDE2IHRuc1N0YXJ0QmFuZCA9IGhQc3lDb25mU2hvcnQtPnRuc0NvbmYudG5zU3RhcnRCYW5kOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgIENhbGNCYW5kRW5lcmd5KCBwc3lEYXRhLT5tZGN0U3BlY3RydW0rd09mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICBoUHN5Q29uZlNob3J0LT5zZmJPZmZzZXQrdG5zU3RhcnRCYW5kLAorICAgICAgICAgICAgICAgICAgICAgIChoUHN5Q29uZlNob3J0LT5zZmJBY3RpdmUgLSB0bnNTdGFydEJhbmQpLAorICAgICAgICAgICAgICAgICAgICAgIHBzeURhdGEtPnNmYkVuZXJneS5zZmJTaG9ydFt3XSt0bnNTdGFydEJhbmQsCisgICAgICAgICAgICAgICAgICAgICAgJnBzeURhdGEtPnNmYkVuZXJneVN1bS5zZmJTaG9ydFt3XSk7DQorCisgICAgICB0ZGF0YSA9IHBzeURhdGEtPnNmYkVuZXJneVN1bS5zZmJTaG9ydFt3XTsNCisJICBkYXRhMCA9IHBzeURhdGEtPnNmYkVuZXJneS5zZmJTaG9ydFt3XTsNCisJICBmb3IgKGk9dG5zU3RhcnRCYW5kOyBpOyBpLS0pCisgICAgICAgIHRkYXRhICs9ICpkYXRhMCsrOw0KKw0KKwkgIHBzeURhdGEtPnNmYkVuZXJneVN1bS5zZmJTaG9ydFt3XSA9IHRkYXRhOworICAgIH0KKworICAgIC8qIHNwcmVhZGluZyAqLworICAgIFNwcmVhZGluZ01heChoUHN5Q29uZlNob3J0LT5zZmJDbnQsCisgICAgICAgICAgICAgICAgIGhQc3lDb25mU2hvcnQtPnNmYk1hc2tMb3dGYWN0b3IsCisgICAgICAgICAgICAgICAgIGhQc3lDb25mU2hvcnQtPnNmYk1hc2tIaWdoRmFjdG9yLAorICAgICAgICAgICAgICAgICBwc3lEYXRhLT5zZmJUaHJlc2hvbGQuc2ZiU2hvcnRbd10pOworCisKKyAgICAvKiB0aHJlc2hvbGQgaW4gcXVpZXQgKi8KKyAgICBkYXRhMCA9IHBzeURhdGEtPnNmYlRocmVzaG9sZC5zZmJTaG9ydFt3XTsNCisJZGF0YTEgPSBoUHN5Q29uZlNob3J0LT5zZmJUaHJlc2hvbGRRdWlldDsNCisJZm9yIChpPWhQc3lDb25mU2hvcnQtPnNmYkNudDsgaTsgaS0tKQorICAgIHsNCisJCSpkYXRhMCA9IG1heCgqZGF0YTAsICgqZGF0YTEgPj4gbm9ybUVuZXJneVNoaWZ0KSk7DQorDQorCQlkYXRhMCsrOyBkYXRhMSsrOw0KKwl9DQorCisKKyAgICAvKiBwcmVlY2hvICovICAgICAKKyAgICBQcmVFY2hvQ29udHJvbCggcHN5RGF0YS0+c2ZiVGhyZXNob2xkbm0xLAorICAgICAgICAgICAgICAgICAgICBoUHN5Q29uZlNob3J0LT5zZmJDbnQsCisgICAgICAgICAgICAgICAgICAgIGhQc3lDb25mU2hvcnQtPm1heEFsbG93ZWRJbmNyZWFzZUZhY3RvciwKKyAgICAgICAgICAgICAgICAgICAgaFBzeUNvbmZTaG9ydC0+bWluUmVtYWluaW5nVGhyZXNob2xkRmFjdG9yLAorICAgICAgICAgICAgICAgICAgICBwc3lEYXRhLT5zZmJUaHJlc2hvbGQuc2ZiU2hvcnRbd10sCisgICAgICAgICAgICAgICAgICAgIHBzeURhdGEtPm1kY3RTY2FsZSwKKyAgICAgICAgICAgICAgICAgICAgdz09MCA/IHBzeURhdGEtPm1kY3RTY2FsZW5tMSA6IHBzeURhdGEtPm1kY3RTY2FsZSk7CisKKyAgICAvKiBhcHBseSB0bnMgbXVsdCB0YWJsZSBvbiBjYiB0aHJlc2hvbGRzICovCisgICAgQXBwbHlUbnNNdWx0VGFibGVUb1JhdGlvcyggaFBzeUNvbmZTaG9ydC0+dG5zQ29uZi50bnNSYXRpb1BhdGNoTG93ZXN0Q2IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaFBzeUNvbmZTaG9ydC0+dG5zQ29uZi50bnNTdGFydEJhbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG5zRGF0YS0+ZGF0YVJhdy50bnNTaG9ydC5zdWJCbG9ja0luZm9bd10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHN5RGF0YS0+c2ZiVGhyZXNob2xkLnNmYlNob3J0W3ddKTsKKworICAgIC8qIHNwcmVhZGVkIGVuZXJneSAqLworICAgIGRhdGEwID0gcHN5RGF0YS0+c2ZiU3ByZWFkZWRFbmVyZ3kuc2ZiU2hvcnRbd107DQorCWRhdGExID0gcHN5RGF0YS0+c2ZiRW5lcmd5LnNmYlNob3J0W3ddOw0KKwlmb3IgKGk9aFBzeUNvbmZTaG9ydC0+c2ZiQ250OyBpOyBpLS0pIHsKKwkgICpkYXRhMCsrID0gKmRhdGExKys7CisgICAgfQorICAgIFNwcmVhZGluZ01heChoUHN5Q29uZlNob3J0LT5zZmJDbnQsCisgICAgICAgICAgICAgICAgIGhQc3lDb25mU2hvcnQtPnNmYk1hc2tMb3dGYWN0b3JTcHJFbiwgCisgICAgICAgICAgICAgICAgIGhQc3lDb25mU2hvcnQtPnNmYk1hc2tIaWdoRmFjdG9yU3ByRW4sCisgICAgICAgICAgICAgICAgIHBzeURhdGEtPnNmYlNwcmVhZGVkRW5lcmd5LnNmYlNob3J0W3ddKTsKKworICAgIHdPZmZzZXQgKz0gRlJBTUVfTEVOX1NIT1JUOworICB9IC8qIGZvciBUUkFOU19GQUMgKi8KKworICBwc3lEYXRhLT5tZGN0U2NhbGVubTEgPSBwc3lEYXRhLT5tZGN0U2NhbGU7ICAgICAgICAgICAgICAKKworICByZXR1cm4gMDsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IGFkdmFuY2VQc3ljaFNob3J0TVMKKyogZGVzY3JpcHRpb246ICAgdXBkYXRlIG1kY3QtZW5lcmdpZXMgZm9yIGxlZnQgYWRkIG9yIG1pbnVzIHJpZ2h0IGNoYW5uZWwgCisqCQkJCWZvciBzaG9ydCBibG9jaworKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgV29yZDE2IGFkdmFuY2VQc3ljaFNob3J0TVMgKFBTWV9EQVRBIHBzeURhdGFbTUFYX0NIQU5ORUxTXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUFNZX0NPTkZJR1VSQVRJT05fU0hPUlQgKmhQc3lDb25mU2hvcnQpCit7CisgIFdvcmQzMiB3LCB3T2Zmc2V0OworICB3T2Zmc2V0ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBmb3Iodz0wOyB3PFRSQU5TX0ZBQzsgdysrKSB7CisgICAgQ2FsY0JhbmRFbmVyZ3lNUyhwc3lEYXRhWzBdLm1kY3RTcGVjdHJ1bSt3T2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgcHN5RGF0YVsxXS5tZGN0U3BlY3RydW0rd09mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgIGhQc3lDb25mU2hvcnQtPnNmYk9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgIGhQc3lDb25mU2hvcnQtPnNmYkFjdGl2ZSwKKyAgICAgICAgICAgICAgICAgICAgIHBzeURhdGFbMF0uc2ZiRW5lcmd5TVMuc2ZiU2hvcnRbd10sCisgICAgICAgICAgICAgICAgICAgICAmcHN5RGF0YVswXS5zZmJFbmVyZ3lTdW1NUy5zZmJTaG9ydFt3XSwKKyAgICAgICAgICAgICAgICAgICAgIHBzeURhdGFbMV0uc2ZiRW5lcmd5TVMuc2ZiU2hvcnRbd10sCisgICAgICAgICAgICAgICAgICAgICAmcHN5RGF0YVsxXS5zZmJFbmVyZ3lTdW1NUy5zZmJTaG9ydFt3XSk7CisgICAgd09mZnNldCArPSBGUkFNRV9MRU5fU0hPUlQ7CisgIH0KKworICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL3FjX21haW4uYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL3FjX21haW4uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTY4MDIwCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvcWNfbWFpbi5jCkBAIC0wLDAgKzEsNTgwIEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorCUZpbGU6CQlxY19tYWluLmMNCisNCisJQ29udGVudDoJUXVhbnRpemluZyAmIGNvZGluZyBmdW5jdGlvbnMNCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaW5jbHVkZSAiYmFzaWNfb3AuaCINCisjaW5jbHVkZSAib3Blcl8zMmIuaCINCisjaW5jbHVkZSAicWNfbWFpbi5oIgorI2luY2x1ZGUgInF1YW50aXplLmgiCisjaW5jbHVkZSAiaW50ZXJmYWNlLmgiCisjaW5jbHVkZSAiYWRqX3Roci5oIgorI2luY2x1ZGUgInNmX2VzdGltLmgiCisjaW5jbHVkZSAic3RhdF9iaXRzLmgiCisjaW5jbHVkZSAiYml0X2NudC5oIgorI2luY2x1ZGUgImR5bl9iaXRzLmgiCisjaW5jbHVkZSAiY2hhbm5lbF9tYXAuaCIKKyNpbmNsdWRlICJtZW1hbGlnbi5oIgorCisKK3R5cGVkZWYgZW51bXsKKyAgRlJBTUVfTEVOX0JZVEVTX01PRFVMTyA9ICAxLAorICBGUkFNRV9MRU5fQllURVNfSU5UICAgID0gIDIKK31GUkFNRV9MRU5fUkVTVUxUX01PREU7CisKK3N0YXRpYyBjb25zdCBXb3JkMTYgbWF4RmlsbEVsZW1CaXRzID0gNyArIDI3MCo4OworCisvKiBmb3J3YXJkIGRlY2xhcmF0aW9ucyAqLworCitzdGF0aWMgV29yZDE2IGNhbGNNYXhWYWx1ZUluU2ZiKFdvcmQxNiBzZmJDbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiBtYXhTZmJQZXJHcm91cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IHNmYlBlckdyb3VwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgc2ZiT2Zmc2V0W01BWF9HUk9VUEVEX1NGQl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiBxdWFudFNwZWN0cnVtW0ZSQU1FX0xFTl9MT05HXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVVdvcmQxNiBtYXhWYWx1ZVtNQVhfR1JPVVBFRF9TRkJdKTsKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogY2FsY0ZyYW1lTGVuCisqIGRlc2NyaXB0aW9uOiBlc3RpbWF0ZSB0aGUgZnJhbWUgbGVuZ3RoIGFjY29yZGluZyB0aGUgYml0cmF0ZXMKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIFdvcmQxNiBjYWxjRnJhbWVMZW4oV29yZDMyIGJpdFJhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMzIgc2FtcGxlUmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEZSQU1FX0xFTl9SRVNVTFRfTU9ERSBtb2RlKQoreworCisgIFdvcmQzMiByZXN1bHQ7CisgIFdvcmQzMiBxdW90OworCisgIHJlc3VsdCA9IChGUkFNRV9MRU5fTE9ORyA+PiAzKSAqIGJpdFJhdGU7CisgIHF1b3QgPSByZXN1bHQgLyBzYW1wbGVSYXRlOworCisgICAKKyAgaWYgKG1vZGUgPT0gRlJBTUVfTEVOX0JZVEVTX01PRFVMTykgeworICAgIHJlc3VsdCAtPSBxdW90ICogc2FtcGxlUmF0ZTsKKyAgfQorICBlbHNlIHsgLyogRlJBTUVfTEVOX0JZVEVTX0lOVCAqLworICAgIHJlc3VsdCA9IHF1b3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgfQorCisgIHJldHVybiByZXN1bHQ7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiAgZnVuY3Rpb24gbmFtZTpmcmFtZVBhZGRpbmcKKyogIGRlc2NyaXB0aW9uOiBDYWxjdWxhdGVzIGlmIHBhZGRpbmcgaXMgbmVlZGVkIGZvciBhY3R1YWwgZnJhbWUKKyogIHJldHVybnM6IHBhZGRpbmdPbiBvciBub3QgCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyBXb3JkMTYgZnJhbWVQYWRkaW5nKFdvcmQzMiBiaXRSYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDMyIHNhbXBsZVJhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMzIgKnBhZGRpbmdSZXN0KQoreworICBXb3JkMTYgcGFkZGluZ09uOworICBXb3JkMTYgZGlmZmVyZW5jZTsKKworICBwYWRkaW5nT24gPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICBkaWZmZXJlbmNlID0gY2FsY0ZyYW1lTGVuKCBiaXRSYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVSYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGUkFNRV9MRU5fQllURVNfTU9EVUxPICk7CisgICpwYWRkaW5nUmVzdCA9ICpwYWRkaW5nUmVzdCAtIGRpZmZlcmVuY2U7CisKKyAgIAorICBpZiAoKnBhZGRpbmdSZXN0IDw9IDAgKSB7CisgICAgcGFkZGluZ09uID0gMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICpwYWRkaW5nUmVzdCA9ICpwYWRkaW5nUmVzdCArIHNhbXBsZVJhdGU7CisgIH0KKworICByZXR1cm4gcGFkZGluZ09uOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogUUNPdXROZXcKKyogZGVzY3JpcHRpb246IGluaXQgcWNvdXQgcGFyYW1ldGVyCisqIHJldHVybnM6ICAgICAwIGlmIHN1Y2Nlc3MKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK1dvcmQxNiBRQ091dE5ldyhRQ19PVVQgKmhRQywgV29yZDE2IG5DaGFubmVscywgVk9fTUVNX09QRVJBVE9SICpwTWVtT1ApCit7CisgIFdvcmQzMiBpOw0KKyAgV29yZDE2ICpxdWFudFNwZWM7DQorICBXb3JkMTYgKnNjZjsNCisgIFVXb3JkMTYgKm1heFZhbHVlSW5TZmI7CQorCQ0KKyAgcXVhbnRTcGVjID0gKFdvcmQxNiAqKW1lbV9tYWxsb2MocE1lbU9QLCBuQ2hhbm5lbHMgKiBGUkFNRV9MRU5fTE9ORyAqIHNpemVvZihXb3JkMTYpLCAzMiwgVk9fSU5ERVhfRU5DX0FBQyk7DQorICBpZihOVUxMID09IHF1YW50U3BlYykNCisJICByZXR1cm4gMTsKKyAgc2NmID0gKFdvcmQxNiAqKW1lbV9tYWxsb2MocE1lbU9QLCBuQ2hhbm5lbHMgKiBNQVhfR1JPVVBFRF9TRkIgKiBzaXplb2YoV29yZDE2KSwgMzIsIFZPX0lOREVYX0VOQ19BQUMpOyAgICAgDQorICBpZihOVUxMID09IHNjZikNCisgIHsNCisJICByZXR1cm4gMTsNCisgIH0KKyAgbWF4VmFsdWVJblNmYiA9IChVV29yZDE2ICopbWVtX21hbGxvYyhwTWVtT1AsIG5DaGFubmVscyAqIE1BWF9HUk9VUEVEX1NGQiAqIHNpemVvZihVV29yZDE2KSwgMzIsIFZPX0lOREVYX0VOQ19BQUMpOw0KKyAgaWYoTlVMTCA9PSBtYXhWYWx1ZUluU2ZiKQ0KKyAgew0KKwkgIHJldHVybiAxOw0KKyAgfQ0KKw0KKyAgZm9yIChpPTA7IGk8bkNoYW5uZWxzOyBpKyspIHsKKyAgICBoUUMtPnFjQ2hhbm5lbFtpXS5xdWFudFNwZWMgPSBxdWFudFNwZWMgKyBpKkZSQU1FX0xFTl9MT05HOworICAgIAorICAgIGhRQy0+cWNDaGFubmVsW2ldLm1heFZhbHVlSW5TZmIgPSBtYXhWYWx1ZUluU2ZiICsgaSpNQVhfR1JPVVBFRF9TRkI7CisgICAgCisgICAgaFFDLT5xY0NoYW5uZWxbaV0uc2NmID0gc2NmICsgaSpNQVhfR1JPVVBFRF9TRkI7CisgIH0KKyAKKyAgcmV0dXJuIDA7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBRQ091dERlbGV0ZQorKiBkZXNjcmlwdGlvbjogdW5pbnQgcWNvdXQgcGFyYW1ldGVyCisqIHJldHVybnM6ICAgICAgMCBpZiBzdWNjZXNzCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordm9pZCBRQ091dERlbGV0ZShRQ19PVVQqIGhRQywgVk9fTUVNX09QRVJBVE9SICpwTWVtT1ApCit7CisgICBXb3JkMzIgaTsNCisgICBpZihoUUMpDQorICAgew0KKyAgICAgIGlmKGhRQy0+cWNDaGFubmVsWzBdLnF1YW50U3BlYyk7DQorCQkgbWVtX2ZyZWUocE1lbU9QLCBoUUMtPnFjQ2hhbm5lbFswXS5xdWFudFNwZWMsIFZPX0lOREVYX0VOQ19BQUMpOw0KKyAgICANCisgICAgICBpZihoUUMtPnFjQ2hhbm5lbFswXS5tYXhWYWx1ZUluU2ZiKQ0KKwkJICBtZW1fZnJlZShwTWVtT1AsIGhRQy0+cWNDaGFubmVsWzBdLm1heFZhbHVlSW5TZmIsIFZPX0lOREVYX0VOQ19BQUMpOw0KKyAgICANCisJICBpZihoUUMtPnFjQ2hhbm5lbFswXS5zY2YpDQorCQkgIG1lbV9mcmVlKHBNZW1PUCwgaFFDLT5xY0NoYW5uZWxbMF0uc2NmLCBWT19JTkRFWF9FTkNfQUFDKTsNCisNCisJICBmb3IgKGk9MDsgaTxNQVhfQ0hBTk5FTFM7IGkrKykgew0KKwkJICBoUUMtPnFjQ2hhbm5lbFtpXS5xdWFudFNwZWMgPSBOVUxMOw0KKwkJICANCisJCSAgaFFDLT5xY0NoYW5uZWxbaV0ubWF4VmFsdWVJblNmYiA9IE5VTEw7DQorCQkgIA0KKwkJICBoUUMtPnFjQ2hhbm5lbFtpXS5zY2YgPSBOVUxMOw0KKwkgIH0NCisgICB9IAorfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IFFDTmV3CisqIGRlc2NyaXB0aW9uOiBzZXQgUUMgdG8gemVybworKiByZXR1cm5zOiAgICAgMCBpZiBzdWNjZXNzCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworV29yZDE2IFFDTmV3KFFDX1NUQVRFICpoUUMsIFZPX01FTV9PUEVSQVRPUiAqcE1lbU9QKQoreworICBwTWVtT1AtPlNldChWT19JTkRFWF9FTkNfQUFDLCBoUUMsMCxzaXplb2YoUUNfU1RBVEUpKTsKKworICByZXR1cm4gKDApOworfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IFFDRGVsZXRlCisqIGRlc2NyaXB0aW9uOiB1bmludCBxY291dCBwYXJhbWV0ZXIKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit2b2lkIFFDRGVsZXRlKFFDX1NUQVRFICpoUUMsIFZPX01FTV9PUEVSQVRPUiAqcE1lbU9QKQoreworIAorICAvKiAKKyAgICAgbm90aGluZyB0byBkbworICAqLworICBoUUM9TlVMTDsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBRQ0luaXQKKyogZGVzY3JpcHRpb246IGluaXQgUUQgcGFyYW1ldGVyCisqIHJldHVybnM6ICAgICAwIGlmIHN1Y2Nlc3MKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitXb3JkMTYgUUNJbml0KFFDX1NUQVRFICpoUUMsCisgICAgICAgICAgICAgIHN0cnVjdCBRQ19JTklUICppbml0KQoreworICBoUUMtPm5DaGFubmVscyAgICAgICA9IGluaXQtPmVsSW5mby0+bkNoYW5uZWxzSW5FbDsgICAgICAgICAgICAgIAorICBoUUMtPm1heEJpdHNUb3QgICAgICA9IGluaXQtPm1heEJpdHM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBoUUMtPmJpdFJlc1RvdCAgICAgICA9IHN1Yihpbml0LT5iaXRSZXMsIGluaXQtPmF2ZXJhZ2VCaXRzKTsKKyAgaFFDLT5hdmVyYWdlQml0c1RvdCAgPSBpbml0LT5hdmVyYWdlQml0czsgICAgICAgICAgICAgICAgICAgICAgICAKKyAgaFFDLT5tYXhCaXRGYWMgICAgICAgPSBpbml0LT5tYXhCaXRGYWM7ICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICBoUUMtPnBhZGRpbmcucGFkZGluZ1Jlc3QgPSBpbml0LT5wYWRkaW5nLnBhZGRpbmdSZXN0OyAgICAgICAgICAgIAorCisgIGhRQy0+Z2xvYlN0YXRCaXRzICAgID0gMzsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZvciBJRF9FTkQgKi8gCisKKyAgLyogY2hhbm5lbCBlbGVtZW50cyBpbml0ICovCisgIEluaXRFbGVtZW50Qml0cygmaFFDLT5lbGVtZW50Qml0cywKKyAgICAgICAgICAgICAgICAgICppbml0LT5lbEluZm8sCisgICAgICAgICAgICAgICAgICBpbml0LT5iaXRyYXRlLAorICAgICAgICAgICAgICAgICAgaW5pdC0+YXZlcmFnZUJpdHMsCisgICAgICAgICAgICAgICAgICBoUUMtPmdsb2JTdGF0Qml0cyk7CisKKyAgLyogdGhyZXNob2xkIHBhcmFtZXRlciBpbml0ICovCisgIEFkalRockluaXQoJmhRQy0+YWRqVGhyLAorICAgICAgICAgICAgIGluaXQtPm1lYW5QZSwKKyAgICAgICAgICAgICBoUUMtPmVsZW1lbnRCaXRzLmNoQml0cmF0ZSk7CisKKyAgcmV0dXJuIDA7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiAKKyogZnVuY3Rpb24gbmFtZTogUUNNYWluCisqIGRlc2NyaXB0aW9uOiAgcXVhbnRpemF0aW9uIGFuZCBjb2RpbmcgdGhlIHNwZWN0cnVtCisqIHJldHVybnM6ICAgICAgMCBpZiBzdWNjZXNzCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworV29yZDE2IFFDTWFpbihRQ19TVEFURSogaFFDLCAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIEVMRU1FTlRfQklUUyogZWxCaXRzLAorICAgICAgICAgICAgICBBVFNfRUxFTUVOVCogYWRqVGhyU3RhdGVFbGVtZW50LAorICAgICAgICAgICAgICBQU1lfT1VUX0NIQU5ORUwgIHBzeU91dENoYW5uZWxbTUFYX0NIQU5ORUxTXSwgIC8qIG1heSBiZSBtb2RpZmllZCBpbi1wbGFjZSAqLworICAgICAgICAgICAgICBQU1lfT1VUX0VMRU1FTlQqIHBzeU91dEVsZW1lbnQsCisgICAgICAgICAgICAgIFFDX09VVF9DSEFOTkVMICBxY091dENoYW5uZWxbTUFYX0NIQU5ORUxTXSwgICAgLyogb3V0ICAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgIFFDX09VVF9FTEVNRU5UKiBxY091dEVsZW1lbnQsCisgICAgICAgICAgICAgIFdvcmQxNiBuQ2hhbm5lbHMsCisJCQkgIFdvcmQxNiBhbmNpbGxhcnlEYXRhQnl0ZXMpICAgICAgCit7CisgIFdvcmQxNiBtYXhDaER5bkJpdHNbTUFYX0NIQU5ORUxTXTsKKyAgV29yZDE2IGNoQml0RGlzdHJpYnV0aW9uW01BWF9DSEFOTkVMU107ICAKKyAgV29yZDMyIGNoOworICAgCisgIGlmIChlbEJpdHMtPmJpdFJlc0xldmVsIDwgMCkgeworICAgIHJldHVybiAtMTsKKyAgfQorICAgCisgIGlmIChlbEJpdHMtPmJpdFJlc0xldmVsID4gZWxCaXRzLT5tYXhCaXRSZXNCaXRzKSB7CisgICAgcmV0dXJuIC0xOworICB9CisKKyAgcWNPdXRFbGVtZW50LT5zdGF0aWNCaXRzVXNlZCA9IGNvdW50U3RhdGljQml0ZGVtYW5kKHBzeU91dENoYW5uZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwc3lPdXRFbGVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbkNoYW5uZWxzLCANCisJCQkJCQkJCQkJCQkJICBxY091dEVsZW1lbnQtPmFkdHNVc2VkKTsKKworICAgCisgIGlmIChhbmNpbGxhcnlEYXRhQnl0ZXMpIHsKKyAgICBxY091dEVsZW1lbnQtPmFuY0JpdHNVc2VkID0gNyArIChhbmNpbGxhcnlEYXRhQnl0ZXMgPDwgMyk7CisgICAgIAorICAgIGlmIChhbmNpbGxhcnlEYXRhQnl0ZXMgPj0gMTUpCisgICAgICBxY091dEVsZW1lbnQtPmFuY0JpdHNVc2VkID0gcWNPdXRFbGVtZW50LT5hbmNCaXRzVXNlZCArIDg7CisgIH0KKyAgZWxzZSB7CisgICAgcWNPdXRFbGVtZW50LT5hbmNCaXRzVXNlZCA9IDA7IAorICB9CisKKyAgQ2FsY0Zvcm1GYWN0b3IoaFFDLT5sb2dTZmJGb3JtRmFjdG9yLCBoUUMtPnNmYk5SZWxldmFudExpbmVzLCBoUUMtPmxvZ1NmYkVuZXJneSwgcHN5T3V0Q2hhbm5lbCwgbkNoYW5uZWxzKTsKKworICAvKmFkanVzdCB0aHJlc2hvbGRzIGZvciB0aGUgZGVzaXJlZCBiaXRyYXRlICovCisgIEFkanVzdFRocmVzaG9sZHMoJmhRQy0+YWRqVGhyLAorICAgICAgICAgICAgICAgICAgIGFkalRoclN0YXRlRWxlbWVudCwKKyAgICAgICAgICAgICAgICAgICBwc3lPdXRDaGFubmVsLAorICAgICAgICAgICAgICAgICAgIHBzeU91dEVsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgY2hCaXREaXN0cmlidXRpb24sCisgICAgICAgICAgICAgICAgICAgaFFDLT5sb2dTZmJFbmVyZ3ksCisgICAgICAgICAgICAgICAgICAgaFFDLT5zZmJOUmVsZXZhbnRMaW5lcywgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgcWNPdXRFbGVtZW50LAorCQkJCSAgIGVsQml0cywKKwkJCQkgICBuQ2hhbm5lbHMsCisJCQkJICAgaFFDLT5tYXhCaXRGYWMpOworCisgIC8qZXN0aW1hdGUgc2NhbGUgZmFjdG9ycyAqLworICBFc3RpbWF0ZVNjYWxlRmFjdG9ycyhwc3lPdXRDaGFubmVsLAorICAgICAgICAgICAgICAgICAgICAgICBxY091dENoYW5uZWwsCisgICAgICAgICAgICAgICAgICAgICAgIGhRQy0+bG9nU2ZiRW5lcmd5LAorICAgICAgICAgICAgICAgICAgICAgICBoUUMtPmxvZ1NmYkZvcm1GYWN0b3IsCisgICAgICAgICAgICAgICAgICAgICAgIGhRQy0+c2ZiTlJlbGV2YW50TGluZXMsCisgICAgICAgICAgICAgICAgICAgICAgIG5DaGFubmVscyk7CisKKyAgLyogY29uZGl0aW9uIHRvIHByZXZlbnQgZW1wdHkgYml0cmVzZXJ2b2lyICovCisgIGZvciAoY2ggPSAwOyBjaCA8IG5DaGFubmVsczsgY2grKykgeworICAgIFdvcmQzMiBtYXhEeW5CaXRzOworICAgIG1heER5bkJpdHMgPSBlbEJpdHMtPmF2ZXJhZ2VCaXRzICsgZWxCaXRzLT5iaXRSZXNMZXZlbCAtIDc7IC8qIC03IGJlYy4gb2YgYWxpZ24gYml0cyAqLworICAgIG1heER5bkJpdHMgPSBtYXhEeW5CaXRzIC0gcWNPdXRFbGVtZW50LT5zdGF0aWNCaXRzVXNlZCArIHFjT3V0RWxlbWVudC0+YW5jQml0c1VzZWQ7CisgICAgbWF4Q2hEeW5CaXRzW2NoXSA9IGV4dHJhY3RfbChjaEJpdERpc3RyaWJ1dGlvbltjaF0gKiBtYXhEeW5CaXRzIC8gMTAwMCk7CisgIH0KKworICBxY091dEVsZW1lbnQtPmR5bkJpdHNVc2VkID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBmb3IgKGNoID0gMDsgY2ggPCBuQ2hhbm5lbHM7IGNoKyspIHsKKyAgICBXb3JkMzIgY2hEeW5CaXRzOworICAgIEZsYWcgICBjb25zdHJhaW50c0Z1bGZpbGxlZDsKKyAgICBXb3JkMzIgaXRlcjsKKyAgICBpdGVyID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgZG8geworICAgICAgY29uc3RyYWludHNGdWxmaWxsZWQgPSAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICAgICAgUXVhbnRpemVTcGVjdHJ1bShwc3lPdXRDaGFubmVsW2NoXS5zZmJDbnQsCisgICAgICAgICAgICAgICAgICAgICAgIHBzeU91dENoYW5uZWxbY2hdLm1heFNmYlBlckdyb3VwLAorICAgICAgICAgICAgICAgICAgICAgICBwc3lPdXRDaGFubmVsW2NoXS5zZmJQZXJHcm91cCwKKyAgICAgICAgICAgICAgICAgICAgICAgcHN5T3V0Q2hhbm5lbFtjaF0uc2ZiT2Zmc2V0cywKKyAgICAgICAgICAgICAgICAgICAgICAgcHN5T3V0Q2hhbm5lbFtjaF0ubWRjdFNwZWN0cnVtLAorICAgICAgICAgICAgICAgICAgICAgICBxY091dENoYW5uZWxbY2hdLmdsb2JhbEdhaW4sCisgICAgICAgICAgICAgICAgICAgICAgIHFjT3V0Q2hhbm5lbFtjaF0uc2NmLAorICAgICAgICAgICAgICAgICAgICAgICBxY091dENoYW5uZWxbY2hdLnF1YW50U3BlYyk7CisgICAgICAgCisgICAgICBpZiAoY2FsY01heFZhbHVlSW5TZmIocHN5T3V0Q2hhbm5lbFtjaF0uc2ZiQ250LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBzeU91dENoYW5uZWxbY2hdLm1heFNmYlBlckdyb3VwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBzeU91dENoYW5uZWxbY2hdLnNmYlBlckdyb3VwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBzeU91dENoYW5uZWxbY2hdLnNmYk9mZnNldHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcWNPdXRDaGFubmVsW2NoXS5xdWFudFNwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcWNPdXRDaGFubmVsW2NoXS5tYXhWYWx1ZUluU2ZiKSA+IE1BWF9RVUFOVCkgeworICAgICAgICBjb25zdHJhaW50c0Z1bGZpbGxlZCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgfQorCisgICAgICBjaER5bkJpdHMgPSBkeW5CaXRDb3VudChxY091dENoYW5uZWxbY2hdLnF1YW50U3BlYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHFjT3V0Q2hhbm5lbFtjaF0ubWF4VmFsdWVJblNmYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHFjT3V0Q2hhbm5lbFtjaF0uc2NmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHN5T3V0Q2hhbm5lbFtjaF0ud2luZG93U2VxdWVuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwc3lPdXRDaGFubmVsW2NoXS5zZmJDbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwc3lPdXRDaGFubmVsW2NoXS5tYXhTZmJQZXJHcm91cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBzeU91dENoYW5uZWxbY2hdLnNmYlBlckdyb3VwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHN5T3V0Q2hhbm5lbFtjaF0uc2ZiT2Zmc2V0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZxY091dENoYW5uZWxbY2hdLnNlY3Rpb25EYXRhKTsKKyAgICAgICAKKyAgICAgIGlmIChjaER5bkJpdHMgPj0gbWF4Q2hEeW5CaXRzW2NoXSkgeworICAgICAgICBjb25zdHJhaW50c0Z1bGZpbGxlZCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgfQorICAgICAgIAorICAgICAgaWYgKCFjb25zdHJhaW50c0Z1bGZpbGxlZCkgeworICAgICAgICBxY091dENoYW5uZWxbY2hdLmdsb2JhbEdhaW4gPSBxY091dENoYW5uZWxbY2hdLmdsb2JhbEdhaW4gKyAxOworICAgICAgfQorCisgICAgICBpdGVyID0gaXRlciArIDE7CisgICAgICAgCisgICAgfSB3aGlsZSghY29uc3RyYWludHNGdWxmaWxsZWQpOworCisgICAgcWNPdXRFbGVtZW50LT5keW5CaXRzVXNlZCA9IHFjT3V0RWxlbWVudC0+ZHluQml0c1VzZWQgKyBjaER5bkJpdHM7CisKKyAgICBxY091dENoYW5uZWxbY2hdLm1kY3RTY2FsZSAgICA9IHBzeU91dENoYW5uZWxbY2hdLm1kY3RTY2FsZTsgICAgICAgICAKKyAgICBxY091dENoYW5uZWxbY2hdLmdyb3VwaW5nTWFzayA9IHBzeU91dENoYW5uZWxbY2hdLmdyb3VwaW5nTWFzazsgICAgICAKKyAgICBxY091dENoYW5uZWxbY2hdLndpbmRvd1NoYXBlICA9IHBzeU91dENoYW5uZWxbY2hdLndpbmRvd1NoYXBlOyAgICAgICAKKyAgfQorCisgIC8qIHNhdmUgZHluQml0c1VzZWQgZm9yIGNvcnJlY3Rpb24gb2YgYml0czJwZSByZWxhdGlvbiAqLworICBBZGpUaHJVcGRhdGUoYWRqVGhyU3RhdGVFbGVtZW50LCBxY091dEVsZW1lbnQtPmR5bkJpdHNVc2VkKTsKKworICB7CisgICAgV29yZDE2IGJpdFJlc1NwYWNlID0gZWxCaXRzLT5tYXhCaXRSZXNCaXRzIC0gZWxCaXRzLT5iaXRSZXNMZXZlbDsKKyAgICBXb3JkMTYgZGVsdGFCaXRSZXMgPSBlbEJpdHMtPmF2ZXJhZ2VCaXRzIC0KKyAgICAgICAgICAgICAgICAgICAgICAgIChxY091dEVsZW1lbnQtPnN0YXRpY0JpdHNVc2VkICsKKyAgICAgICAgICAgICAgICAgICAgICAgICBxY091dEVsZW1lbnQtPmR5bkJpdHNVc2VkICsgcWNPdXRFbGVtZW50LT5hbmNCaXRzVXNlZCk7CisKKyAgICBxY091dEVsZW1lbnQtPmZpbGxCaXRzID0gbWF4KDAsIChkZWx0YUJpdFJlcyAtIGJpdFJlc1NwYWNlKSk7CisgIH0KKworICByZXR1cm4gMDsgLyogT0sgKi8KK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IGNhbGNNYXhWYWx1ZUluU2ZiCisqIGRlc2NyaXB0aW9uOiAgc2VhcmNoIHRoZSBtYXggU3BlY3RydW0gaW4gb25lIHNmYgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyBXb3JkMTYgY2FsY01heFZhbHVlSW5TZmIoV29yZDE2IHNmYkNudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IG1heFNmYlBlckdyb3VwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgc2ZiUGVyR3JvdXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiBzZmJPZmZzZXRbTUFYX0dST1VQRURfU0ZCXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IHF1YW50U3BlY3RydW1bRlJBTUVfTEVOX0xPTkddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVV29yZDE2IG1heFZhbHVlW01BWF9HUk9VUEVEX1NGQl0pCit7CisgIFdvcmQxNiBzZmJPZmZzLCBzZmI7CisgIFdvcmQxNiBtYXhWYWx1ZUFsbDsKKworICBtYXhWYWx1ZUFsbCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgZm9yKHNmYk9mZnM9MDtzZmJPZmZzPHNmYkNudDtzZmJPZmZzKz1zZmJQZXJHcm91cCkgeworICAgIGZvciAoc2ZiID0gMDsgc2ZiIDwgbWF4U2ZiUGVyR3JvdXA7IHNmYisrKSB7CisgICAgICBXb3JkMTYgbGluZTsKKyAgICAgIFdvcmQxNiBtYXhUaGlzU2ZiOworICAgICAgbWF4VGhpc1NmYiA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgICAgIGZvciAobGluZSA9IHNmYk9mZnNldFtzZmJPZmZzK3NmYl07IGxpbmUgPCBzZmJPZmZzZXRbc2ZiT2ZmcytzZmIrMV07IGxpbmUrKykgeworICAgICAgICBXb3JkMTYgYWJzVmFsOworICAgICAgICBhYnNWYWwgPSBhYnNfcyhxdWFudFNwZWN0cnVtW2xpbmVdKTsKKyAgICAgICAgbWF4VGhpc1NmYiA9IG1heChtYXhUaGlzU2ZiLCBhYnNWYWwpOworICAgICAgfQorCisgICAgICBtYXhWYWx1ZVtzZmJPZmZzK3NmYl0gPSBtYXhUaGlzU2ZiOyAgICAgICAgICAgICAgICAKKyAgICAgIG1heFZhbHVlQWxsID0gbWF4KG1heFZhbHVlQWxsLCBtYXhUaGlzU2ZiKTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIG1heFZhbHVlQWxsOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogdXBkYXRlQml0cmVzCisqIGRlc2NyaXB0aW9uOiB1cGRhdGUgYml0cmVzZXJ2b2lyCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordm9pZCB1cGRhdGVCaXRyZXMoUUNfU1RBVEUqIHFjS2VybmVsLAorICAgICAgICAgICAgICAgICAgUUNfT1VUKiAgIHFjT3V0KQorICAgICAgICAgICAgICAgICAgCit7CisgIEVMRU1FTlRfQklUUyAqZWxCaXRzOworIAorICBxY0tlcm5lbC0+Yml0UmVzVG90ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgZWxCaXRzID0gJnFjS2VybmVsLT5lbGVtZW50Qml0czsKKworICAgCisgIGlmIChlbEJpdHMtPmF2ZXJhZ2VCaXRzID4gMCkgeworICAgIC8qIGNvbnN0YW50IGJpdHJhdGUgKi8KKyAgICBXb3JkMTYgYml0c1VzZWQ7CisgICAgYml0c1VzZWQgPSAocWNPdXQtPnFjRWxlbWVudC5zdGF0aWNCaXRzVXNlZCArIHFjT3V0LT5xY0VsZW1lbnQuZHluQml0c1VzZWQpICsKKyAgICAgICAgICAgICAgICAgICAocWNPdXQtPnFjRWxlbWVudC5hbmNCaXRzVXNlZCArIHFjT3V0LT5xY0VsZW1lbnQuZmlsbEJpdHMpOworICAgIGVsQml0cy0+Yml0UmVzTGV2ZWwgPSBlbEJpdHMtPmJpdFJlc0xldmVsICsgKGVsQml0cy0+YXZlcmFnZUJpdHMgLSBiaXRzVXNlZCk7CisgICAgcWNLZXJuZWwtPmJpdFJlc1RvdCA9IHFjS2VybmVsLT5iaXRSZXNUb3QgKyBlbEJpdHMtPmJpdFJlc0xldmVsOworICB9CisgIGVsc2UgeworICAgIC8qIHZhcmlhYmxlIGJpdHJhdGUgKi8KKyAgICBlbEJpdHMtPmJpdFJlc0xldmVsID0gZWxCaXRzLT5tYXhCaXRzOyAgICAgICAgICAgCisgICAgcWNLZXJuZWwtPmJpdFJlc1RvdCA9IHFjS2VybmVsLT5tYXhCaXRzVG90OyAgICAgIAorICB9Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogRmluYWxpemVCaXRDb25zdW1wdGlvbgorKiBkZXNjcmlwdGlvbjogY291bnQgYml0cyB1c2VkCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworV29yZDE2IEZpbmFsaXplQml0Q29uc3VtcHRpb24oUUNfU1RBVEUgKnFjS2VybmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUUNfT1VUKiBxY091dCkKK3sKKyAgV29yZDMyIG5GdWxsRmlsbEVsZW07DQorICBXb3JkMzIgdG90RmlsbEJpdHM7DQorICBXb3JkMTYgZGlmZkJpdHM7ICAKKyAgV29yZDE2IGJpdHNVc2VkOworCisgIHRvdEZpbGxCaXRzID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICBxY091dC0+dG90U3RhdGljQml0c1VzZWQgPSBxY0tlcm5lbC0+Z2xvYlN0YXRCaXRzOyAgICAgCisgIHFjT3V0LT50b3RTdGF0aWNCaXRzVXNlZCArPSBxY091dC0+cWNFbGVtZW50LnN0YXRpY0JpdHNVc2VkOworICBxY091dC0+dG90RHluQml0c1VzZWQgICAgPSBxY091dC0+cWNFbGVtZW50LmR5bkJpdHNVc2VkOworICBxY091dC0+dG90QW5jQml0c1VzZWQgICAgPSBxY091dC0+cWNFbGVtZW50LmFuY0JpdHNVc2VkOworICBxY091dC0+dG90RmlsbEJpdHMgICAgICAgPSBxY091dC0+cWNFbGVtZW50LmZpbGxCaXRzOworICAgCisgIGlmIChxY091dC0+cWNFbGVtZW50LmZpbGxCaXRzKSB7CisgICAgdG90RmlsbEJpdHMgKz0gcWNPdXQtPnFjRWxlbWVudC5maWxsQml0czsKKyAgfQorCisgIG5GdWxsRmlsbEVsZW0gPSAobWF4KChxY091dC0+dG90RmlsbEJpdHMgLSAxKSwgMCkgLyBtYXhGaWxsRWxlbUJpdHMpICogbWF4RmlsbEVsZW1CaXRzOw0KKyAgCisgIHFjT3V0LT50b3RGaWxsQml0cyA9IHFjT3V0LT50b3RGaWxsQml0cyAtIG5GdWxsRmlsbEVsZW07CisKKyAgLyogY2hlY2sgZmlsbCBlbGVtZW50cyAqLworICAgCisgIGlmIChxY091dC0+dG90RmlsbEJpdHMgPiAwKSB7CisgICAgLyogbWluaW11bSBGaWxsZWxlbWVudCBjb250YWlucyA3IChUQUcgKyBieXRlIGNudCkgYml0cyAqLworICAgIHFjT3V0LT50b3RGaWxsQml0cyA9IG1heCg3LCBxY091dC0+dG90RmlsbEJpdHMpOworICAgIC8qIGZpbGwgZWxlbWVudCBzaXplIGVxdWFscyBuKjggKyA3ICovCisgICAgcWNPdXQtPnRvdEZpbGxCaXRzID0gcWNPdXQtPnRvdEZpbGxCaXRzICsgKCg4IC0gKChxY091dC0+dG90RmlsbEJpdHMgLSA3KSAmIDB4MDAwNykpICYgMHgwMDA3KTsgICAgIAorICB9CisKKyAgcWNPdXQtPnRvdEZpbGxCaXRzID0gcWNPdXQtPnRvdEZpbGxCaXRzICsgbkZ1bGxGaWxsRWxlbTsKKworICAvKiBub3cgZGlzdHJpYnV0ZSBleHRyYSBmaWxsYml0cyBhbmQgYWxpZ25iaXRzIG92ZXIgY2hhbm5lbCBlbGVtZW50cyAqLworICBxY091dC0+YWxpZ25CaXRzID0gNyAtICgocWNPdXQtPnRvdER5bkJpdHNVc2VkICsgcWNPdXQtPnRvdFN0YXRpY0JpdHNVc2VkICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHFjT3V0LT50b3RBbmNCaXRzVXNlZCArIHFjT3V0LT50b3RGaWxsQml0cyAtIDEpICYgMHgwMDA3KTsgICAgICAgICAgICAgCisKKyAgICAgCisgIGlmICggKHFjT3V0LT5hbGlnbkJpdHMgKyBxY091dC0+dG90RmlsbEJpdHMgLSB0b3RGaWxsQml0cyA9PSA4KSAmJgorICAgICAgIChxY091dC0+dG90RmlsbEJpdHMgPiA4KSkKKyAgICBxY091dC0+dG90RmlsbEJpdHMgPSBxY091dC0+dG90RmlsbEJpdHMgLSA4OworCisgICAKKyAgZGlmZkJpdHMgPSBxY091dC0+YWxpZ25CaXRzICsgcWNPdXQtPnRvdEZpbGxCaXRzIC0gdG90RmlsbEJpdHM7CisgICAKKyAgaWYoZGlmZkJpdHM+PTApIHsKKyAgICBxY091dC0+cWNFbGVtZW50LmZpbGxCaXRzICs9IGRpZmZCaXRzOworICB9CisKKyAgYml0c1VzZWQgPSBxY091dC0+dG90RHluQml0c1VzZWQgKyBxY091dC0+dG90U3RhdGljQml0c1VzZWQgKyBxY091dC0+dG90QW5jQml0c1VzZWQ7CisgIGJpdHNVc2VkID0gYml0c1VzZWQgKyBxY091dC0+dG90RmlsbEJpdHMgKyBxY091dC0+YWxpZ25CaXRzOworICAgCisgIGlmIChiaXRzVXNlZCA+IHFjS2VybmVsLT5tYXhCaXRzVG90KSB7CisgICAgcmV0dXJuIC0xOworICB9CisgIHJldHVybiBiaXRzVXNlZDsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IEFkanVzdEJpdHJhdGUKKyogZGVzY3JpcHRpb246ICBhZGp1c3RzIGZyYW1lbGVuZ3RoIHZpYSBwYWRkaW5nIG9uIGEgZnJhbWUgdG8gZnJhbWUgYmFzaXMsCisqICAgICAgICAgICAgICAgdG8gYWNoaWV2ZSBhIGJpdHJhdGUgdGhhdCBkZW1hbmRzIGEgbm9uIGJ5dGUgYWxpZ25lZAorKiAgICAgICAgICAgICAgIGZyYW1lbGVuZ3RoCisqIHJldHVybjogICAgICAgZXJyb3Jjb2RlCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworV29yZDE2IEFkanVzdEJpdHJhdGUoUUNfU1RBVEUgICAgICAgICpoUUMsCisgICAgICAgICAgICAgICAgICAgICBXb3JkMzIgICAgICAgICAgIGJpdFJhdGUsICAgIC8qIHRvdGFsIGJpdHJhdGUgKi8KKyAgICAgICAgICAgICAgICAgICAgIFdvcmQzMiAgICAgICAgICAgc2FtcGxlUmF0ZSkgLyogb3V0cHV0IHNhbXBsaW5nIHJhdGUgKi8KK3sKKyAgV29yZDE2IHBhZGRpbmdPbjsKKyAgV29yZDE2IGZyYW1lTGVuOworICBXb3JkMTYgY29kZUJpdHM7CisgIFdvcmQxNiBjb2RlQml0c0xhc3Q7CisKKyAgLyogRG8gd2UgbmVlZCBhIGV4dHJhIHBhZGRpbmcgYnl0ZT8gKi8KKyAgcGFkZGluZ09uID0gZnJhbWVQYWRkaW5nKGJpdFJhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVSYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJmhRQy0+cGFkZGluZy5wYWRkaW5nUmVzdCk7CisKKyAgLyogZnJhbWUgbGVuZ3RoICovCisgIGZyYW1lTGVuID0gcGFkZGluZ09uICsgY2FsY0ZyYW1lTGVuKGJpdFJhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZVJhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZSQU1FX0xFTl9CWVRFU19JTlQpOworCisgIGZyYW1lTGVuID0gZnJhbWVMZW4gPDwgMzsKKyAgY29kZUJpdHNMYXN0ID0gaFFDLT5hdmVyYWdlQml0c1RvdCAtIGhRQy0+Z2xvYlN0YXRCaXRzOworICBjb2RlQml0cyAgICAgPSBmcmFtZUxlbiAtIGhRQy0+Z2xvYlN0YXRCaXRzOworCisgIC8qIGNhbGN1bGF0ZSBiaXRzIGZvciBldmVyeSBjaGFubmVsIGVsZW1lbnQgKi8gICAKKyAgaWYgKGNvZGVCaXRzICE9IGNvZGVCaXRzTGFzdCkgeworICAgIFdvcmQxNiB0b3RhbEJpdHMgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgICAgaFFDLT5lbGVtZW50Qml0cy5hdmVyYWdlQml0cyA9IChoUUMtPmVsZW1lbnRCaXRzLnJlbGF0aXZlQml0cyAqIGNvZGVCaXRzKSA+PiAxNjsgLyogcmVsYXRpdmVCaXRzIHdhcyBzY2FsZWQgZG93biBieSAyICovCisgICAgdG90YWxCaXRzICs9IGhRQy0+ZWxlbWVudEJpdHMuYXZlcmFnZUJpdHM7CisKKyAgICBoUUMtPmVsZW1lbnRCaXRzLmF2ZXJhZ2VCaXRzID0gaFFDLT5lbGVtZW50Qml0cy5hdmVyYWdlQml0cyArIChjb2RlQml0cyAtIHRvdGFsQml0cyk7CisgIH0KKworICBoUUMtPmF2ZXJhZ2VCaXRzVG90ID0gZnJhbWVMZW47ICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9xdWFudGl6ZS5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvcXVhbnRpemUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDVmMTY3Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvcXVhbnRpemUuYwpAQCAtMCwwICsxLDQ0NSBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJcXVhbnRpemUuYw0KKw0KKwlDb250ZW50OglxdWFudGl6YXRpb24gZnVuY3Rpb25zDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2luY2x1ZGUgInR5cGVkZWYuaCINCisjaW5jbHVkZSAiYmFzaWNfb3AuaCINCisjaW5jbHVkZSAib3Blcl8zMmIuaCIKKyNpbmNsdWRlICJxdWFudGl6ZS5oIgorI2luY2x1ZGUgImFhY19yb20uaCIKKworI2RlZmluZSBNQU5UX0RJR0lUUyA5CisjZGVmaW5lIE1BTlRfU0laRSAgICgxPDxNQU5UX0RJR0lUUykKKworc3RhdGljIGNvbnN0IFdvcmQzMiBYUk9VTkQgPSAweDMzZTQyNWFmOyAvKiBmaW5hbCByb3VuZGluZyBjb25zdGFudCAoLTAuMDk0NmYrIDAuNWYpICovCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6cG93MzQgCisqIGRlc2NyaXB0aW9uOiBjYWxjdWxhdGUgJHhee1xmcmFjezN9ezR9fSwgZm9yIDAuNSA8IHggPCAxLjAkLiAgCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK19faW5saW5lIFdvcmQzMiBwb3czNChXb3JkMzIgeCkKK3sKKyAgLyogaW5kZXggdGFibGUgdXNpbmcgTUFOVF9ESUdJVFMgYml0cywgYnV0IG1hc2sgb3V0IHRoZSBzaWduIGJpdCBhbmQgdGhlIE1TQgorICAgICB3aGljaCBpcyBhbHdheXMgb25lICovICAgCisgIHJldHVybiBtVGFiXzNfNFsoeCA+PiAoSU5UX0JJVFMtMi1NQU5UX0RJR0lUUykpICYgKE1BTlRfU0laRS0xKV07Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6cXVhbnRpemVTaW5nbGVMaW5lIAorKiBkZXNjcmlwdGlvbjogcXVhbnRpemVzIHNwZWN0cnVtICAKKyogICAgICAgICAgICAgIHF1YVNwZWN0cnVtID0gbWRjdFNwZWN0cnVtXjMvNCoyXigtKDMvMTYpKmdhaW4pICAgIAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgV29yZDE2IHF1YW50aXplU2luZ2xlTGluZShjb25zdCBXb3JkMTYgZ2FpbiwgY29uc3QgV29yZDMyIGFic1NwZWN0cnVtKQoreworICBXb3JkMzIgZSwgbWludXNGaW5hbEV4cCwgZmluYWxTaGlmdDsKKyAgV29yZDMyIHg7CisgIFdvcmQxNiBxdWEgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgIAorCisgICAKKyAgaWYgKGFic1NwZWN0cnVtKSB7CisgICAgZSA9IG5vcm1fbChhYnNTcGVjdHJ1bSk7CisgICAgeCA9IHBvdzM0KGFic1NwZWN0cnVtIDw8IGUpOworCisgICAgLyogY2FsY3VsYXRlIHRoZSBmaW5hbCBmcmFjdGlvbmFsIGV4cG9uZW50IHRpbWVzIDE2ICh3YXMgMyooNCplICsgZ2FpbikgKyAoSU5UX0JJVFMtMSkqMTYpICovCisgICAgbWludXNGaW5hbEV4cCA9IChlIDw8IDIpICsgZ2FpbjsKKyAgICBtaW51c0ZpbmFsRXhwID0gKG1pbnVzRmluYWxFeHAgPDwgMSkgKyBtaW51c0ZpbmFsRXhwOworICAgIG1pbnVzRmluYWxFeHAgPSBtaW51c0ZpbmFsRXhwICsgKChJTlRfQklUUy0xKSA8PCA0KTsKKworICAgIC8qIHNlcGFyYXRlIHRoZSBleHBvbmVudCBpbnRvIGEgc2hpZnQsIGFuZCBhIG11bHRpcGx5ICovCisgICAgZmluYWxTaGlmdCA9IG1pbnVzRmluYWxFeHAgPj4gNDsKKyAgICAgCisgICAgaWYgKGZpbmFsU2hpZnQgPCBJTlRfQklUUykgeworICAgICAgeCA9IExfbXB5X3d4KHgsIHBvdzJ0b21pbnVzTm92ZXIxNlttaW51c0ZpbmFsRXhwICYgMTVdKTsKKworICAgICAgeCArPSBYUk9VTkQgPj4gKElOVF9CSVRTIC0gZmluYWxTaGlmdCk7CisKKyAgICAgIC8qIHNoaWZ0IGFuZCBxdWFudGl6ZSAqLw0KKwkgIGZpbmFsU2hpZnQtLTsNCisNCisJICBpZihmaW5hbFNoaWZ0ID49IDApDQorCQkgIHggPj49IGZpbmFsU2hpZnQ7DQorCSAgZWxzZQ0KKwkJICB4IDw8PSAoLWZpbmFsU2hpZnQpOw0KKwkJDQorCSAgcXVhID0gc2F0dXJhdGUoeCk7CisgICAgfQorICB9CisKKyAgcmV0dXJuIHF1YTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6cXVhbnRpemVMaW5lcyAKKyogZGVzY3JpcHRpb246IHF1YW50aXplcyBzcGVjdHJ1bSBsaW5lcyAgCisqICAgICAgICAgICAgICBxdWFTcGVjdHJ1bSA9IG1kY3RTcGVjdHJ1bV4zLzQqMl4oLSgzLzE2KSpnYWluKSAgICAKKyogIGlucHV0OiBnbG9iYWwgZ2FpbiwgbnVtYmVyIG9mIGxpbmVzIHRvIHByb2Nlc3MsIHNwZWN0cmFsIGRhdGEgICAgICAgICAKKyogIG91dHB1dDogcXVhbnRpemVkIHNwZWN0cnVtCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyB2b2lkIHF1YW50aXplTGluZXMoY29uc3QgV29yZDE2IGdhaW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiBub09mTGluZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQzMiAqbWRjdFNwZWN0cnVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgKnF1YVNwZWN0cnVtKQoreworICBXb3JkMzIgbGluZTsKKyAgV29yZDMyIG0gPSBnYWluJjM7CisgIFdvcmQzMiBnID0gKGdhaW4gPj4gMikgKyA0Ow0KKyAgV29yZDMyIG1kY3RTcGVMOw0KKyAgV29yZDE2ICpwcXVhdDsKKyAgICAvKiBnYWluJjMgKi8NCisNCisgIHBxdWF0ID0gcXVhbnRCb3JkZXJzW21dOw0KKw0KKyAgZyArPSAxNjsNCisgIA0KKyAgaWYoZyA+PSAwKQ0KKyAgew0KKwlmb3IgKGxpbmU9MDsgbGluZTxub09mTGluZXM7IGxpbmUrKykgeworCSAgV29yZDMyIHF1YTsKKwkgIHF1YSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICANCisJICBtZGN0U3BlTCA9IG1kY3RTcGVjdHJ1bVtsaW5lXTsNCisJCisJICBpZiAobWRjdFNwZUwpIHsKKwkJV29yZDMyIHNhOworCQlXb3JkMzIgc2FTaGZ0OworCisgICAgICAgIHNhID0gTF9hYnMobWRjdFNwZUwpOworICAgICAgICAvL3NhU2hmdCA9IExfc2hyKHNhLCAxNiArIGcpOw0KKwkgICAgc2FTaGZ0ID0gc2EgPj4gZzsKKworICAgICAgICBpZiAoc2FTaGZ0ID4gcHF1YXRbMF0pIHsKKyAgICAgICAgIAorICAgICAgICAgIGlmIChzYVNoZnQgPCBwcXVhdFsxXSkgeworICAgICAgICAgICAgIAorICAgICAgICAgICAgcXVhID0gbWRjdFNwZUw+MCA/IDEgOiAtMTsKKwkJICB9CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHNhU2hmdCA8IHBxdWF0WzJdKSB7CisgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgcXVhID0gbWRjdFNwZUw+MCA/IDIgOiAtMjsKKwkJCX0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgIAorICAgICAgICAgICAgICBpZiAoc2FTaGZ0IDwgcHF1YXRbM10pIHsKKyAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgcXVhID0gbWRjdFNwZUw+MCA/IDMgOiAtMzsKKwkJCSAgfQorICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBxdWEgPSBxdWFudGl6ZVNpbmdsZUxpbmUoZ2Fpbiwgc2EpOworICAgICAgICAgICAgICAgIC8qIGFkanVzdCB0aGUgc2lnbi4gU2luY2UgMCA8IHF1YSA8IDEsIHRoaXMgY2Fubm90IG92ZXJmbG93LiAqLworICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKG1kY3RTcGVMIDwgMCkKKyAgICAgICAgICAgICAgICAgIHF1YSA9IC1xdWE7CisJCQkgIH0KKwkJCX0KKwkJICB9CisJCX0KKwkgIH0KKyAgICAgIHF1YVNwZWN0cnVtW2xpbmVdID0gcXVhIDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwl9DQorICB9DQorICBlbHNlDQorICB7DQorCWZvciAobGluZT0wOyBsaW5lPG5vT2ZMaW5lczsgbGluZSsrKSB7DQorCSAgV29yZDMyIHF1YTsNCisJICBxdWEgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgIA0KKwkgIG1kY3RTcGVMID0gbWRjdFNwZWN0cnVtW2xpbmVdOw0KKwkNCisJICBpZiAobWRjdFNwZUwpIHsNCisJCVdvcmQzMiBzYTsNCisJCVdvcmQzMiBzYVNoZnQ7DQorDQorICAgICAgICBzYSA9IExfYWJzKG1kY3RTcGVMKTsNCisgICAgICAgIHNhU2hmdCA9IHNhIDw8IGc7DQorDQorICAgICAgICBpZiAoc2FTaGZ0ID4gcHF1YXRbMF0pIHsNCisgICAgICAgICANCisgICAgICAgICAgaWYgKHNhU2hmdCA8IHBxdWF0WzFdKSB7DQorICAgICAgICAgICAgIA0KKyAgICAgICAgICAgIHF1YSA9IG1kY3RTcGVMPjAgPyAxIDogLTE7DQorCQkgIH0NCisgICAgICAgICAgZWxzZSB7DQorICAgICAgICAgICANCisgICAgICAgICAgICBpZiAoc2FTaGZ0IDwgcHF1YXRbMl0pIHsNCisgICAgICAgICAgICAgICANCisgICAgICAgICAgICAgIHF1YSA9IG1kY3RTcGVMPjAgPyAyIDogLTI7DQorCQkJfQ0KKyAgICAgICAgICAgIGVsc2Ugew0KKyAgICAgICAgICAgICANCisgICAgICAgICAgICAgIGlmIChzYVNoZnQgPCBwcXVhdFszXSkgew0KKyAgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgICAgIHF1YSA9IG1kY3RTcGVMPjAgPyAzIDogLTM7DQorCQkJICB9DQorICAgICAgICAgICAgICBlbHNlIHsNCisgICAgICAgICAgICAgICAgcXVhID0gcXVhbnRpemVTaW5nbGVMaW5lKGdhaW4sIHNhKTsNCisgICAgICAgICAgICAgICAgLyogYWRqdXN0IHRoZSBzaWduLiBTaW5jZSAwIDwgcXVhIDwgMSwgdGhpcyBjYW5ub3Qgb3ZlcmZsb3cuICovDQorICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgICAgIGlmIChtZGN0U3BlTCA8IDApDQorICAgICAgICAgICAgICAgICAgcXVhID0gLXF1YTsNCisJCQkgIH0NCisJCQl9DQorCQkgIH0NCisJCX0NCisJICB9DQorICAgICAgcXVhU3BlY3RydW1bbGluZV0gPSBxdWEgOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwl9CSAgDQorICB9CisKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTppcXVhbnRpemVMaW5lcyAKKyogZGVzY3JpcHRpb246IGlxdWFudGl6ZXMgc3BlY3RydW0gbGluZXMgd2l0aG91dCBzaWduCisqICAgICAgICAgICAgICBtZGN0U3BlY3RydW0gPSBpcXVhU3BlY3RydW1eNC8zICoyXigwLjI1KmdhaW4pIAorKiBpbnB1dDogZ2xvYmFsIGdhaW4sIG51bWJlciBvZiBsaW5lcyB0byBwcm9jZXNzLHF1YW50aXplZCBzcGVjdHJ1bSAgICAgICAgCisqIG91dHB1dDogc3BlY3RyYWwgZGF0YQorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgdm9pZCBpcXVhbnRpemVMaW5lcyhjb25zdCBXb3JkMTYgZ2FpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiBub09mTGluZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgKnF1YW50U3BlY3RydW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMzIgKm1kY3RTcGVjdHJ1bSkKK3sKKyAgV29yZDMyICAgaXF1YW50aXplcm1vZDsKKyAgV29yZDMyICAgaXF1YW50aXplcnNoaWZ0OworICBXb3JkMzIgICBsaW5lOworCisgIGlxdWFudGl6ZXJtb2QgPSBnYWluICYgMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgaXF1YW50aXplcnNoaWZ0ID0gZ2FpbiA+PiAyOworCisgIGZvciAobGluZT0wOyBsaW5lPG5vT2ZMaW5lczsgbGluZSsrKSB7CisgICAgIAorICAgIGlmKCBxdWFudFNwZWN0cnVtW2xpbmVdICE9IDAgKSB7CisgICAgICBXb3JkMzIgYWNjdTsKKyAgICAgIFdvcmQzMiBleDsKKwkgIFdvcmQzMiB0YWJJbmRleDsKKyAgICAgIFdvcmQzMiBzcGVjRXhwOworICAgICAgV29yZDMyIHMsdDsKKworICAgICAgYWNjdSA9IHF1YW50U3BlY3RydW1bbGluZV07CisKKyAgICAgIGV4ID0gbm9ybV9sKGFjY3UpOworICAgICAgYWNjdSA9IGFjY3UgPDwgZXg7CisgICAgICBzcGVjRXhwID0gSU5UX0JJVFMtMSAtIGV4OworCisgICAgICB0YWJJbmRleCA9IChhY2N1ID4+IChJTlRfQklUUy0yLU1BTlRfRElHSVRTKSkgJiAofk1BTlRfU0laRSk7ICAgICAgICAKKworICAgICAgLyogY2FsY3VsYXRlICJtYW50aXNzYSIgXjQvMyAqLworICAgICAgcyA9IG1UYWJfNF8zW3RhYkluZGV4XTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgICAgIC8qIGdldCBhcHByb3BlcmlhdGUgZXhwb25lbnQgbXVsdGlwbGllciBmb3Igc3BlY0V4cF4zLzQgY29tYmluZWQgd2l0aCBzY2ZNb2QgKi8KKyAgICAgIHQgPSBzcGVjRXhwTWFudFRhYmxlQ29tYl9lbmNbaXF1YW50aXplcm1vZF1bc3BlY0V4cF07ICAgICAgICAgICAgICAgICAgICAgIAorCisgICAgICAvKiBtdWx0aXBseSAibWFudGlzc2EiIF40LzMgd2l0aCBleHBvbmVudCBtdWx0aXBsaWVyICovCisgICAgICBhY2N1ID0gTVVMSElHSChzLCB0KTsKKworICAgICAgLyogZ2V0IGFwcHJvcGVyaWF0ZSBleHBvbmVudCBzaGlmdGVyICovCisgICAgICBzcGVjRXhwID0gc3BlY0V4cFRhYmxlQ29tYl9lbmNbaXF1YW50aXplcm1vZF1bc3BlY0V4cF07ICAgICAgICAgICAgICAgICAgICAKKworICAgICAgc3BlY0V4cCArPSBpcXVhbnRpemVyc2hpZnQgKyAxOw0KKwkgIGlmKHNwZWNFeHAgPj0gMCkNCisJCSAgbWRjdFNwZWN0cnVtW2xpbmVdID0gYWNjdSA8PCBzcGVjRXhwOw0KKwkgIGVsc2UNCisJCSAgbWRjdFNwZWN0cnVtW2xpbmVdID0gYWNjdSA+PiAoLXNwZWNFeHApOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgIG1kY3RTcGVjdHJ1bVtsaW5lXSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIH0KKyAgfQorfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogUXVhbnRpemVTcGVjdHJ1bQorKiBkZXNjcmlwdGlvbjogcXVhbnRpemVzIHRoZSBlbnRpcmUgc3BlY3RydW0KKyogcmV0dXJuczoKKyogaW5wdXQ6IG51bWJlciBvZiBzY2FsZWZhY3RvciBiYW5kcyB0byBiZSBxdWFudGl6ZWQsIC4uLgorKiBvdXRwdXQ6IHF1YW50aXplZCBzcGVjdHJ1bQorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit2b2lkIFF1YW50aXplU3BlY3RydW0oV29yZDE2IHNmYkNudCwKKyAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgbWF4U2ZiUGVyR3JvdXAsCisgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IHNmYlBlckdyb3VwLAorICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAqc2ZiT2Zmc2V0LAorICAgICAgICAgICAgICAgICAgICAgIFdvcmQzMiAqbWRjdFNwZWN0cnVtLAorICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiBnbG9iYWxHYWluLAorICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAqc2NhbGVmYWN0b3JzLAorICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAqcXVhbnRpemVkU3BlY3RydW0pCit7CisgIFdvcmQzMiBzZmJPZmZzLCBzZmI7CisKKyAgZm9yKHNmYk9mZnM9MDtzZmJPZmZzPHNmYkNudDtzZmJPZmZzKz1zZmJQZXJHcm91cCkgeworICAgIFdvcmQzMiBzZmJOZXh0IDsKKyAgICBmb3IgKHNmYiA9IDA7IHNmYiA8IG1heFNmYlBlckdyb3VwOyBzZmIgPSBzZmJOZXh0KSB7CisgICAgICBXb3JkMTYgc2NhbGVmYWN0b3IgPSBzY2FsZWZhY3RvcnNbc2ZiT2ZmcytzZmJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAvKiBjb2FsZXNjZSBzZmJzIHdpdGggdGhlIHNhbWUgc2NhbGVmYWN0b3IgKi8KKyAgICAgIGZvciAoc2ZiTmV4dCA9IHNmYisxOworICAgICAgICAgICBzZmJOZXh0IDwgbWF4U2ZiUGVyR3JvdXAgJiYgc2NhbGVmYWN0b3IgPT0gc2NhbGVmYWN0b3JzW3NmYk9mZnMrc2ZiTmV4dF07CisgICAgICAgICAgIHNmYk5leHQrKykgOworCisgICAgICBxdWFudGl6ZUxpbmVzKGdsb2JhbEdhaW4gLSBzY2FsZWZhY3RvciwKKyAgICAgICAgICAgICAgICAgICAgc2ZiT2Zmc2V0W3NmYk9mZnMrc2ZiTmV4dF0gLSBzZmJPZmZzZXRbc2ZiT2ZmcytzZmJdLAorICAgICAgICAgICAgICAgICAgICBtZGN0U3BlY3RydW0gKyBzZmJPZmZzZXRbc2ZiT2ZmcytzZmJdLAorICAgICAgICAgICAgICAgICAgICBxdWFudGl6ZWRTcGVjdHJ1bSArIHNmYk9mZnNldFtzZmJPZmZzK3NmYl0pOworICAgIH0KKyAgfQorfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOmNhbGNTZmJEaXN0IAorKiBkZXNjcmlwdGlvbjogcXVhbnRpemVzIGFuZCByZXF1YW50aXplcyBsaW5lcyB0byBjYWxjdWxhdGUgZGlzdG9ydGlvbgorKiBpbnB1dDogIG51bWJlciBvZiBsaW5lcyB0byBiZSBxdWFudGl6ZWQsIC4uLgorKiBvdXRwdXQ6IGRpc3RvcnRpb24KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworV29yZDMyIGNhbGNTZmJEaXN0KGNvbnN0IFdvcmQzMiAqc3BlYywKKyAgICAgICAgICAgICAgICAgICBXb3JkMTYgIHNmYldpZHRoLAorICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgZ2FpbikKK3sKKyAgV29yZDMyIGxpbmU7CisgIFdvcmQzMiBkaXN0OworICBXb3JkMzIgbSA9IGdhaW4mMzsKKyAgV29yZDMyIGcgPSAoZ2FpbiA+PiAyKSArIDQ7DQorICBXb3JkMzIgZzIgPSAoZyA8PCAxKSArIDE7DQorICBXb3JkMTYgKnBxdWF0LCAqcmVwcXVhdDsNCisgICAgLyogZ2FpbiYzICovCisNCisgIHBxdWF0ID0gcXVhbnRCb3JkZXJzW21dOw0KKyAgcmVwcXVhdCA9IHF1YW50UmVjb25bbV07CisJDQorICBkaXN0ID0gMDsgIA0KKyAgZyArPSAxNjsNCisgIGlmKGcyIDwgMCAmJiBnID49IDApDQorICB7CSAgCisJICBnMiA9IC1nMjsNCisJICBmb3IobGluZT0wOyBsaW5lPHNmYldpZHRoOyBsaW5lKyspIHsJCSAgCisJCSAgaWYgKHNwZWNbbGluZV0pIHsJCQkgIAorCQkJICBXb3JkMzIgZGlmZjsKKwkJCSAgV29yZDMyIGRpc3RTaW5nbGU7CisJCQkgIFdvcmQzMiBzYTsKKwkJCSAgV29yZDMyIHNhU2hmdDsKKwkJCSAgc2EgPSBMX2FicyhzcGVjW2xpbmVdKTsKKwkJCSAgLy9zYVNoZnQgPSByb3VuZDE2KExfc2hyKHNhLCBnKSk7CisJCQkgIC8vc2FTaGZ0ID0gTF9zaHIoc2EsIDE2K2cpOw0KKwkJCSAgc2FTaGZ0ID0gc2EgPj4gZzsNCisKKwkJCSAgaWYgKHNhU2hmdCA8IHBxdWF0WzBdKSB7DQorCQkJCSAgZGlzdFNpbmdsZSA9IChzYVNoZnQgKiBzYVNoZnQpID4+IGcyOw0KKwkJCSAgfQ0KKwkJCSAgZWxzZSB7DQorCQkJCSAgDQorCQkJCSAgaWYgKHNhU2hmdCA8IHBxdWF0WzFdKSB7DQorCQkJCQkgIGRpZmYgPSBzYVNoZnQgLSByZXBxdWF0WzBdOw0KKwkJCQkJICBkaXN0U2luZ2xlID0gKGRpZmYgKiBkaWZmKSA+PiBnMjsNCisJCQkJICB9DQorCQkJCSAgZWxzZSB7DQorCQkJCQkgIA0KKwkJCQkJICBpZiAoc2FTaGZ0IDwgcHF1YXRbMl0pIHsNCisJCQkJCQkgIGRpZmYgPSBzYVNoZnQgLSByZXBxdWF0WzFdOw0KKwkJCQkJCSAgZGlzdFNpbmdsZSA9IChkaWZmICogZGlmZikgPj4gZzI7DQorCQkJCQkgIH0NCisJCQkJCSAgZWxzZSB7DQorCQkJCQkJICANCisJCQkJCQkgIGlmIChzYVNoZnQgPCBwcXVhdFszXSkgew0KKwkJCQkJCQkgIGRpZmYgPSBzYVNoZnQgLSByZXBxdWF0WzJdOw0KKwkJCQkJCQkgIGRpc3RTaW5nbGUgPSAoZGlmZiAqIGRpZmYpID4+IGcyOw0KKwkJCQkJCSAgfQ0KKwkJCQkJCSAgZWxzZSB7DQorCQkJCQkJCSAgV29yZDE2IHF1YSA9IHF1YW50aXplU2luZ2xlTGluZShnYWluLCBzYSk7DQorCQkJCQkJCSAgV29yZDMyIGlxdmFsLCBkaWZmMzI7DQorCQkJCQkJCSAgLyogbm93IHRoYXQgd2UgaGF2ZSBxdWFudGl6ZWQgeCwgcmUtcXVhbnRpemUgaXQuICovDQorCQkJCQkJCSAgaXF1YW50aXplTGluZXMoZ2FpbiwgMSwgJnF1YSwgJmlxdmFsKTsNCisJCQkJCQkJICBkaWZmMzIgPSBzYSAtIGlxdmFsOw0KKwkJCQkJCQkgIGRpc3RTaW5nbGUgPSBmaXhtdWwoZGlmZjMyLCBkaWZmMzIpOw0KKwkJCQkJCSAgfQ0KKwkJCQkJICB9DQorCQkJCSAgfQ0KKwkJCSAgfQ0KKwkJCSAgDQorCQkJICBkaXN0ID0gTF9hZGQoZGlzdCwgZGlzdFNpbmdsZSk7DQorCQkgIH0KKwkgIH0NCisgIH0NCisgIGVsc2UNCisgIHsNCisJICBmb3IobGluZT0wOyBsaW5lPHNmYldpZHRoOyBsaW5lKyspIHsJCSAgDQorCQkgIGlmIChzcGVjW2xpbmVdKSB7CQkJICANCisJCQkgIFdvcmQzMiBkaWZmOw0KKwkJCSAgV29yZDMyIGRpc3RTaW5nbGU7DQorCQkJICBXb3JkMzIgc2E7DQorCQkJICBXb3JkMzIgc2FTaGZ0Ow0KKwkJCSAgc2EgPSBMX2FicyhzcGVjW2xpbmVdKTsNCisJCQkgIC8vc2FTaGZ0ID0gcm91bmQxNihMX3NocihzYSwgZykpOw0KKwkJCSAgc2FTaGZ0ID0gTF9zaHIoc2EsIGcpOw0KKw0KKwkJCSAgaWYgKHNhU2hmdCA8IHBxdWF0WzBdKSB7DQorCQkJCSAgZGlzdFNpbmdsZSA9IExfc2hsKChzYVNoZnQgKiBzYVNoZnQpLCBnMik7DQorCQkJICB9DQorCQkJICBlbHNlIHsNCisJCQkJICANCisJCQkJICBpZiAoc2FTaGZ0IDwgcHF1YXRbMV0pIHsNCisJCQkJCSAgZGlmZiA9IHNhU2hmdCAtIHJlcHF1YXRbMF07DQorCQkJCQkgIGRpc3RTaW5nbGUgPSBMX3NobCgoZGlmZiAqIGRpZmYpLCBnMik7DQorCQkJCSAgfQ0KKwkJCQkgIGVsc2Ugew0KKwkJCQkJICANCisJCQkJCSAgaWYgKHNhU2hmdCA8IHBxdWF0WzJdKSB7DQorCQkJCQkJICBkaWZmID0gc2FTaGZ0IC0gcmVwcXVhdFsxXTsNCisJCQkJCQkgIGRpc3RTaW5nbGUgPSBMX3NobCgoZGlmZiAqIGRpZmYpLCBnMik7DQorCQkJCQkgIH0NCisJCQkJCSAgZWxzZSB7DQorCQkJCQkJICANCisJCQkJCQkgIGlmIChzYVNoZnQgPCBwcXVhdFszXSkgew0KKwkJCQkJCQkgIGRpZmYgPSBzYVNoZnQgLSByZXBxdWF0WzJdOw0KKwkJCQkJCQkgIGRpc3RTaW5nbGUgPSBMX3NobCgoZGlmZiAqIGRpZmYpLCBnMik7DQorCQkJCQkJICB9DQorCQkJCQkJICBlbHNlIHsNCisJCQkJCQkJICBXb3JkMTYgcXVhID0gcXVhbnRpemVTaW5nbGVMaW5lKGdhaW4sIHNhKTsNCisJCQkJCQkJICBXb3JkMzIgaXF2YWwsIGRpZmYzMjsNCisJCQkJCQkJICAvKiBub3cgdGhhdCB3ZSBoYXZlIHF1YW50aXplZCB4LCByZS1xdWFudGl6ZSBpdC4gKi8NCisJCQkJCQkJICBpcXVhbnRpemVMaW5lcyhnYWluLCAxLCAmcXVhLCAmaXF2YWwpOw0KKwkJCQkJCQkgIGRpZmYzMiA9IHNhIC0gaXF2YWw7DQorCQkJCQkJCSAgZGlzdFNpbmdsZSA9IGZpeG11bChkaWZmMzIsIGRpZmYzMik7DQorCQkJCQkJICB9DQorCQkJCQkgIH0NCisJCQkJICB9DQorCQkJICB9DQorCQkJICBkaXN0ID0gTF9hZGQoZGlzdCwgZGlzdFNpbmdsZSk7DQorCQkgIH0NCisJICB9CSAgDQorICB9CisKKyAgcmV0dXJuIGRpc3Q7Cit9CmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9zZl9lc3RpbS5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvc2ZfZXN0aW0uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzRiMzY1Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvc2ZfZXN0aW0uYwpAQCAtMCwwICsxLDg4MiBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJc2ZfZXN0aW0uYw0KKw0KKwlDb250ZW50OglTY2FsZSBmYWN0b3IgZXN0aW1hdGlvbiBmdW5jdGlvbnMNCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaW5jbHVkZSAiYmFzaWNfb3AuaCINCisjaW5jbHVkZSAib3Blcl8zMmIuaCIKKyNpbmNsdWRlICJzZl9lc3RpbS5oIgorI2luY2x1ZGUgInF1YW50aXplLmgiCisjaW5jbHVkZSAiYml0X2NudC5oIgorI2luY2x1ZGUgImFhY19yb20uaCIKKworc3RhdGljIGNvbnN0IFdvcmQxNiBNQVhfU0NGX0RFTFRBID0gNjA7CisKKy8qIQorY29uc3RhbnRzIHJlZmVyZW5jZSBpbiBjb21tZW50cyAKKworIEMwID0gNi43NWY7CisgQzEgPSAtNjkuMzMyOTVmOyAgIC0xNi8zKmxvZyhNQVhfUVVBTlQrMC41LWxvZ0NvbikvbG9nKDIpIAorIEMyID0gNC4wZjsKKyBDMyA9IDIuNjY2NjY2NjZmOworIAorICBQRV9DMSA9IDMuMGY7ICAgICAgICBsb2coOC4wKS9sb2coMikgCisgIFBFX0MyID0gMS4zMjE5MjgxZjsgIGxvZygyLjUpL2xvZygyKSAKKyAgUEVfQzMgPSAwLjU1OTM1NzNmOyAgMS1DMi9DMSAKKyAgCisqLworCisjZGVmaW5lIEZGX1NRUlRfQklUUyAgICAgICAgICAgICAgICAgICAgNworI2RlZmluZSBGRl9TUVJUX1RBQkxFX1NJWkUgICAgICAgICAgICAgICgxPDxGRl9TUVJUX0JJVFMgLSAxPDwoRkZfU1FSVF9CSVRTLTIpKQorI2RlZmluZSBDT0VGMDhfMzEJCTB4NjY2NjY2NjYJCS8qIDAuOCooMSA8PCAzMSkgKi8NCisjZGVmaW5lIFBFX0MxXzgJCQkyNAkJCQkvKiBQRV9DMSo4ICovDQorI2RlZmluZSBQRV9DMl8xNgkJMjEJCQkJLyogUEVfQzIqOC9QRV9DMyAqLw0KKyNkZWZpbmUgUEVfU0NBTEUJCTB4MDU5YQkJCS8qIDAuNyAqICgxIDw8ICgxNSAtIDEgLSAzKSkqLw0KKw0KKyNkZWZpbmUgU0NBTEVfRVNUSU1BVEVfQ09FRgkweDU1NTUJCS8qICg4Ljg1ODUvKDQqbG9nMigxMCkpKSAqICgxIDw8IDE1KSovDQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IGZvcm1mYWNfc3FydAorKiBkZXNjcmlwdGlvbjogIGNhbGN1bGF0ZXMgc3FydCh4KS8yNTYgCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworX19pbmxpbmUgV29yZDMyIGZvcm1mYWNfc3FydChXb3JkMzIgeCkKK3sKKwlXb3JkMzIgeTsKKwlXb3JkMzIgcHJlc2hpZnQsIHBvc3RzaGlmdDsKKwkKKwkKKwlpZiAoeD09MCkgcmV0dXJuIDA7CisJcHJlc2hpZnQgID0gbm9ybV9sKHgpIC0gKElOVF9CSVRTLTEtRkZfU1FSVF9CSVRTKTsKKwlwb3N0c2hpZnQgPSBwcmVzaGlmdCA+PiAxOworCXByZXNoaWZ0ICA9IHBvc3RzaGlmdCA8PCAxOworCXBvc3RzaGlmdCA9IHBvc3RzaGlmdCArIDg7CSAgLyogc3FydC8yNTYgKi8KKwlpZihwcmVzaGlmdCA+PSAwKQ0KKwkJeSA9IHggPDwgcHJlc2hpZnQ7ICAgICAgICAvKiBub3cgMS80IDw9IHkgPCAxICovDQorCWVsc2UNCisJCXkgPSB4ID4+ICgtcHJlc2hpZnQpOw0KKwl5ID0gZm9ybWZhY19zcXJ0dGFibGVbeS0zMl07DQorCQ0KKwlpZihwb3N0c2hpZnQgPj0gMCkNCisJCXkgPSB5ID4+IHBvc3RzaGlmdDsNCisJZWxzZQ0KKwkJeSA9IHkgPDwgKC1wb3N0c2hpZnQpOw0KKwkNCisJcmV0dXJuIHk7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBDYWxjRm9ybUZhY3RvckNoYW5uZWwKKyogZGVzY3JpcHRpb246ICBjYWxjdWxhdGUgdGhlIGZvcm0gZmFjdG9yIG9uZSBjaGFubmVsCisqCQkJCWZmYWMobikgPSBzcXJ0KGFicyhYKGspKSArIHNxcnQoYWJzKFgoaysxKSkgKyAuLi4uCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIHZvaWQKK0NhbGNGb3JtRmFjdG9yQ2hhbm5lbChXb3JkMTYgKmxvZ1NmYkZvcm1GYWN0b3IsCisgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICpzZmJOUmVsZXZhbnRMaW5lcywKKyAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgKmxvZ1NmYkVuZXJneSwKKyAgICAgICAgICAgICAgICAgICAgICBQU1lfT1VUX0NIQU5ORUwgKnBzeU91dENoYW4pCit7CisJV29yZDMyIHNmYncsIHNmYncxOw0KKwlXb3JkMzIgaSwgajsKKwlXb3JkMzIgc2ZiT2Zmcywgc2ZiLCBzaGlmdDsKKwkNCisJc2ZidyA9IHNmYncxID0gMDsNCisJZm9yIChzZmJPZmZzPTA7IHNmYk9mZnM8cHN5T3V0Q2hhbi0+c2ZiQ250OyBzZmJPZmZzKz1wc3lPdXRDaGFuLT5zZmJQZXJHcm91cCl7CisJCWZvciAoc2ZiPTA7IHNmYjxwc3lPdXRDaGFuLT5tYXhTZmJQZXJHcm91cDsgc2ZiKyspIHsKKwkJCWkgPSBzZmJPZmZzK3NmYjsgICAgICAKKwkJCQorCQkJaWYgKHBzeU91dENoYW4tPnNmYkVuZXJneVtpXSA+IHBzeU91dENoYW4tPnNmYlRocmVzaG9sZFtpXSkgeworCQkJCVdvcmQzMiBhY2N1LCBhdmdGb3JtRmFjdG9yLGlTZmJXaWR0aDsNCisJCQkJV29yZDMyICptZGN0U3BlYzsKKwkJCQlzZmJ3ID0gcHN5T3V0Q2hhbi0+c2ZiT2Zmc2V0c1tpKzFdIC0gcHN5T3V0Q2hhbi0+c2ZiT2Zmc2V0c1tpXTsNCisJCQkJaVNmYldpZHRoID0gaW52U0JGWyhzZmJ3ID4+IDIpIC0gMV07DQorCQkJCW1kY3RTcGVjID0gcHN5T3V0Q2hhbi0+bWRjdFNwZWN0cnVtICsgcHN5T3V0Q2hhbi0+c2ZiT2Zmc2V0c1tpXTsKKwkJCQlhY2N1ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQkJCS8qIGNhbGMgc3VtIG9mIHNxcnQoc3BlYykgKi8KKwkJCQlmb3IgKGo9c2Zidzsgajsgai0tKSB7DQorCQkJCQlhY2N1ICs9IGZvcm1mYWNfc3FydChMX2FicygqbWRjdFNwZWMpKTsgbWRjdFNwZWMrKzsNCisJCQkJfQorCQkJCWxvZ1NmYkZvcm1GYWN0b3JbaV0gPSBpTG9nNChhY2N1KTsKKwkJCQlsb2dTZmJFbmVyZ3lbaV0gPSBpTG9nNChwc3lPdXRDaGFuLT5zZmJFbmVyZ3lbaV0pOworCQkJCWF2Z0Zvcm1GYWN0b3IgPSBmaXhtdWwocnNxcnQocHN5T3V0Q2hhbi0+c2ZiRW5lcmd5W2ldLElOVF9CSVRTKSwgaVNmYldpZHRoKTsKKwkJCQlhdmdGb3JtRmFjdG9yID0gcnNxcnQoKFdvcmQzMilhdmdGb3JtRmFjdG9yLElOVF9CSVRTKSA+PiAxMDsKKwkJCQkvKiByZXN1bHQgaXMgbXVsdGlwbGllZCBieSA0ICovCisJCQkJaWYoYXZnRm9ybUZhY3RvcikKKwkJCQkJc2ZiTlJlbGV2YW50TGluZXNbaV0gPSBhY2N1IC8gYXZnRm9ybUZhY3RvcjsKKwkJCQllbHNlCisJCQkJCXNmYk5SZWxldmFudExpbmVzW2ldID0gMHg3ZmZmOworCQkJfQorCQkJZWxzZSB7CisJCQkJLyogc2V0IG51bWJlciBvZiBsaW5lcyB0byB6ZXJvICovCisJCQkJc2ZiTlJlbGV2YW50TGluZXNbaV0gPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJCX0KKwkJfQorCX0KK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBpbXByb3ZlU2NmCisqIGRlc2NyaXB0aW9uOiAgZmluZCBiZXR0ZXIgc2NhbGVmYWN0b3Igd2l0aCBhbmFseXNpcyBieSBzeW50aGVzaXMKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgV29yZDE2IGltcHJvdmVTY2YoV29yZDMyICpzcGVjLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgIHNmYldpZHRoLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMzIgIHRocmVzaCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICBzY2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICBtaW5TY2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDMyICpkaXN0LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgKm1pblNjZkNhbGN1bGF0ZWQpCit7CisJV29yZDMyIGNudDsKKwlXb3JkMzIgc2ZiRGlzdDsKKwlXb3JkMzIgc2NmQmVzdDsKKwlXb3JkMzIgdGhyZXNoMTI1ID0gTF9hZGQodGhyZXNoLCAodGhyZXNoID4+IDIpKTsKKwkKKwlzY2ZCZXN0ID0gc2NmOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkKKwkvKiBjYWxjIHJlYWwgZGlzdG9ydGlvbiAqLworCXNmYkRpc3QgPSBjYWxjU2ZiRGlzdChzcGVjLCBzZmJXaWR0aCwgc2NmKTsKKwkqbWluU2NmQ2FsY3VsYXRlZCA9IHNjZjsgICAgIA0KKwlpZighc2ZiRGlzdCkNCisJICByZXR1cm4gc2NmQmVzdDsKKwkKKwlpZiAoc2ZiRGlzdCA+IHRocmVzaDEyNSkgeworCQlXb3JkMzIgc2NmRXN0aW1hdGVkOworCQlXb3JkMzIgc2ZiRGlzdEJlc3Q7CisJCXNjZkVzdGltYXRlZCA9IHNjZjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQlzZmJEaXN0QmVzdCA9IHNmYkRpc3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJCisJCWNudCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQl3aGlsZSAoc2ZiRGlzdCA+IHRocmVzaDEyNSAmJiAoY250IDwgMykpIHsKKwkJCQorCQkJc2NmID0gc2NmICsgMTsKKwkJCXNmYkRpc3QgPSBjYWxjU2ZiRGlzdChzcGVjLCBzZmJXaWR0aCwgc2NmKTsKKwkJCQorCQkJaWYgKHNmYkRpc3QgPCBzZmJEaXN0QmVzdCkgeworCQkJCXNjZkJlc3QgPSBzY2Y7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQkJCXNmYkRpc3RCZXN0ID0gc2ZiRGlzdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQkJfQorCQkJY250ID0gY250ICsgMTsKKwkJfQorCQljbnQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJc2NmID0gc2NmRXN0aW1hdGVkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCXNmYkRpc3QgPSBzZmJEaXN0QmVzdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQl3aGlsZSAoKHNmYkRpc3QgPiB0aHJlc2gxMjUpICYmIChjbnQgPCAxKSAmJiAoc2NmID4gbWluU2NmKSkgeworCQkJCisJCQlzY2YgPSBzY2YgLSAxOworCQkJc2ZiRGlzdCA9IGNhbGNTZmJEaXN0KHNwZWMsIHNmYldpZHRoLCBzY2YpOworCQkJCisJCQlpZiAoc2ZiRGlzdCA8IHNmYkRpc3RCZXN0KSB7CisJCQkJc2NmQmVzdCA9IHNjZjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCQkJc2ZiRGlzdEJlc3QgPSBzZmJEaXN0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCQl9CisJCQkqbWluU2NmQ2FsY3VsYXRlZCA9IHNjZjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJCWNudCA9IGNudCArIDE7CisJCX0NCisJCSpkaXN0ID0gc2ZiRGlzdEJlc3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCX0KKwllbHNlIHsKKwkJV29yZDMyIHNmYkRpc3RCZXN0OyAKKwkJV29yZDMyIHNmYkRpc3RBbGxvd2VkOworCQlXb3JkMzIgdGhyZXNoMDggPSBmaXhtdWwoQ09FRjA4XzMxLCB0aHJlc2gpOworCQlzZmJEaXN0QmVzdCA9IHNmYkRpc3Q7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJCisJCWlmIChzZmJEaXN0IDwgdGhyZXNoMDgpCisJCQlzZmJEaXN0QWxsb3dlZCA9IHNmYkRpc3Q7CisJCWVsc2UKKwkJCXNmYkRpc3RBbGxvd2VkID0gdGhyZXNoMDg7CisJCWZvciAoY250PTA7IGNudDwzOyBjbnQrKykgeworCQkJc2NmID0gc2NmICsgMTsKKwkJCXNmYkRpc3QgPSBjYWxjU2ZiRGlzdChzcGVjLCBzZmJXaWR0aCwgc2NmKTsKKwkJCQorCQkJaWYgKGZpeG11bChDT0VGMDhfMzEsc2ZiRGlzdCkgPCBzZmJEaXN0QWxsb3dlZCkgeworCQkJCSptaW5TY2ZDYWxjdWxhdGVkID0gc2NmQmVzdCArIDE7CisJCQkJc2NmQmVzdCA9IHNjZjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCQkJc2ZiRGlzdEJlc3QgPSBzZmJEaXN0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCQl9CisJCX0KKwkJKmRpc3QgPSBzZmJEaXN0QmVzdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJfQorCQorCS8qIHJldHVybiBiZXN0IHNjYWxlZmFjdG9yICovCisJcmV0dXJuIHNjZkJlc3Q7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogY291bnRTaW5nbGVTY2ZCaXRzCisqIGRlc2NyaXB0aW9uOiAgY291bnQgc2luZ2xlIHNjZiBiaXRzIGluIGh1ZmZ1bQorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyBXb3JkMTYgY291bnRTaW5nbGVTY2ZCaXRzKFdvcmQxNiBzY2YsIFdvcmQxNiBzY2ZMZWZ0LCBXb3JkMTYgc2NmUmlnaHQpCit7CisJV29yZDE2IHNjZkJpdHM7CisJCisJc2NmQml0cyA9IGJpdENvdW50U2NhbGVmYWN0b3JEZWx0YShzY2ZMZWZ0IC0gc2NmKSArCisJCWJpdENvdW50U2NhbGVmYWN0b3JEZWx0YShzY2YgLSBzY2ZSaWdodCk7CisJCisJcmV0dXJuIHNjZkJpdHM7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogY2FsY1NpbmdsZVNwZWNQZQorKiBkZXNjcmlwdGlvbjogIGxkUmF0aW8gPSBsb2cyKGVuKG4pKSAtIDAsMzc1KnNjZkdhaW4obikKKyoJCQkJbmJpdHMgPSAwLjcqbkxpbmVzKmxkUmF0aW9uIGZvciBsZFJhdGlvbiA+PSBjMQorKgkJCQluYml0cyA9IDAuNypuTGluZXMqKGMyICsgYzMqbGRSYXRpbykgZm9yIGxkUmF0aW9uIDwgYzEgCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIFdvcmQxNiBjYWxjU2luZ2xlU3BlY1BlKFdvcmQxNiBzY2YsIFdvcmQxNiBzZmJDb25zdFBlUGFydCwgV29yZDE2IG5MaW5lcykKK3sKKwlXb3JkMzIgc3BlY1BlOworCVdvcmQzMiBsZFJhdGlvOworCVdvcmQzMiBzY2YzOworCQorCWxkUmF0aW8gPSBzZmJDb25zdFBlUGFydCA8PCAzOyAvKiAgKHNmYkNvbnN0UGVQYXJ0IC0wLjM3NSpzY2YpKjggKi8KKwlzY2YzID0gc2NmICsgc2NmICsgc2NmOworCWxkUmF0aW8gPSBsZFJhdGlvIC0gc2NmMzsKKyAgICAKKwlpZiAobGRSYXRpbyA8IFBFX0MxXzgpIHsKKwkJLyogMjEgOiAyKjgqUEVfQzIsIDIqUEVfQzMgfiAxKi8gCisJCWxkUmF0aW8gPSAobGRSYXRpbyArIFBFX0MyXzE2KSA+PiAxOworCX0KKwlzcGVjUGUgPSBuTGluZXMgKiBsZFJhdGlvOworCXNwZWNQZSA9IChzcGVjUGUgKiBQRV9TQ0FMRSkgPj4gMTQ7CisJCisJcmV0dXJuIHNhdHVyYXRlKHNwZWNQZSk7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBjb3VudFNjZkJpdHNEaWZmCisqIGRlc2NyaXB0aW9uOiAgY291bnQgZGlmZmVyZW50IHNjZiBiaXRzIHVzZWQKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgV29yZDE2IGNvdW50U2NmQml0c0RpZmYoV29yZDE2ICpzY2ZPbGQsIFdvcmQxNiAqc2NmTmV3LCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgc2ZiQ250LCBXb3JkMTYgc3RhcnRTZmIsIFdvcmQxNiBzdG9wU2ZiKQoreworCVdvcmQzMiBzY2ZCaXRzRGlmZjsKKwlXb3JkMzIgc2ZiLCBzZmJMYXN0OworCVdvcmQzMiBzZmJQcmV2LCBzZmJOZXh0OworCQorCXNjZkJpdHNEaWZmID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwlzZmIgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCisJLyogc2VhcmNoIGZvciBmaXJzdCByZWxldmFudCBzZmIgKi8KKwlzZmJMYXN0ID0gc3RhcnRTZmI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJd2hpbGUgKHNmYkxhc3QgPCBzdG9wU2ZiICYmIHNjZk9sZFtzZmJMYXN0XSA9PSBWT0FBQ19TSFJUX01JTikgeworCQkKKwkJc2ZiTGFzdCA9IHNmYkxhc3QgKyAxOworCX0KKwkvKiBzZWFyY2ggZm9yIHByZXZpb3VzIHJlbGV2YW50IHNmYiBhbmQgY291bnQgZGlmZiAqLworCXNmYlByZXYgPSBzdGFydFNmYiAtIDE7CisJd2hpbGUgKChzZmJQcmV2Pj0wKSAmJiBzY2ZPbGRbc2ZiUHJldl0gPT0gVk9BQUNfU0hSVF9NSU4pIHsKKwkJCisJCXNmYlByZXYgPSBzZmJQcmV2IC0gMTsKKwl9CisJCisJaWYgKHNmYlByZXY+PTApIHsKKwkJc2NmQml0c0RpZmYgKz0gYml0Q291bnRTY2FsZWZhY3RvckRlbHRhKHNjZk5ld1tzZmJQcmV2XSAtIHNjZk5ld1tzZmJMYXN0XSkgLQorCQkJYml0Q291bnRTY2FsZWZhY3RvckRlbHRhKHNjZk9sZFtzZmJQcmV2XSAtIHNjZk9sZFtzZmJMYXN0XSk7CisJfQorCS8qIG5vdyBsb29wIHRocm91Z2ggYWxsIHNmYnMgYW5kIGNvdW50IGRpZmZzIG9mIHJlbGV2YW50IHNmYnMgKi8KKwlmb3IgKHNmYj1zZmJMYXN0KzE7IHNmYjxzdG9wU2ZiOyBzZmIrKykgeworCQkKKwkJaWYgKHNjZk9sZFtzZmJdICE9IFZPQUFDX1NIUlRfTUlOKSB7CisJCQlzY2ZCaXRzRGlmZiArPSBiaXRDb3VudFNjYWxlZmFjdG9yRGVsdGEoc2NmTmV3W3NmYkxhc3RdIC0gc2NmTmV3W3NmYl0pIC0KKwkJCQliaXRDb3VudFNjYWxlZmFjdG9yRGVsdGEoc2NmT2xkW3NmYkxhc3RdIC0gc2NmT2xkW3NmYl0pOworCQkJc2ZiTGFzdCA9IHNmYjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCX0KKwl9CisJLyogc2VhcmNoIGZvciBuZXh0IHJlbGV2YW50IHNmYiBhbmQgY291bnQgZGlmZiAqLworCXNmYk5leHQgPSBzdG9wU2ZiOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwl3aGlsZSAoc2ZiTmV4dCA8IHNmYkNudCAmJiBzY2ZPbGRbc2ZiTmV4dF0gPT0gVk9BQUNfU0hSVF9NSU4pIHsKKwkJCisJCXNmYk5leHQgPSBzZmJOZXh0ICsgMTsKKwl9CisJCisJaWYgKHNmYk5leHQgPCBzZmJDbnQpCisJCXNjZkJpdHNEaWZmICs9IGJpdENvdW50U2NhbGVmYWN0b3JEZWx0YShzY2ZOZXdbc2ZiTGFzdF0gLSBzY2ZOZXdbc2ZiTmV4dF0pIC0KKwkJYml0Q291bnRTY2FsZWZhY3RvckRlbHRhKHNjZk9sZFtzZmJMYXN0XSAtIHNjZk9sZFtzZmJOZXh0XSk7CisJCisJcmV0dXJuIHNhdHVyYXRlKHNjZkJpdHNEaWZmKTsKK30KKworc3RhdGljIFdvcmQxNiBjYWxjU3BlY1BlRGlmZihXb3JkMTYgKnNjZk9sZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICpzY2ZOZXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAqc2ZiQ29uc3RQZVBhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAqbG9nU2ZiRW5lcmd5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgKmxvZ1NmYkZvcm1GYWN0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAqc2ZiTlJlbGV2YW50TGluZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiBzdGFydFNmYiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiBzdG9wU2ZiKQoreworCVdvcmQzMiBzcGVjUGVEaWZmOworCVdvcmQzMiBzZmI7CisJCisJc3BlY1BlRGlmZiA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQorCS8qIGxvb3AgdGhyb3VnaCBhbGwgc2ZicyBhbmQgY291bnQgcGUgZGlmZmVyZW5jZSAqLworCWZvciAoc2ZiPXN0YXJ0U2ZiOyBzZmI8c3RvcFNmYjsgc2ZiKyspIHsKKwkJCisJCQorCQlpZiAoc2NmT2xkW3NmYl0gIT0gVk9BQUNfU0hSVF9NSU4pIHsKKwkJCVdvcmQzMiBsZFJhdGlvT2xkLCBsZFJhdGlvTmV3OworCQkJV29yZDMyIHNjZjM7CisJCQkKKwkJCQorCQkJaWYgKHNmYkNvbnN0UGVQYXJ0W3NmYl0gPT0gTUlOXzE2KSB7CisJCQkJc2ZiQ29uc3RQZVBhcnRbc2ZiXSA9ICgobG9nU2ZiRW5lcmd5W3NmYl0gLQorCQkJCQlsb2dTZmJGb3JtRmFjdG9yW3NmYl0pICsgMTEtOCo0KzMpID4+IDI7CisJCQl9CisJCQkKKwkJCQorCQkJbGRSYXRpb09sZCA9IHNmYkNvbnN0UGVQYXJ0W3NmYl0gPDwgMzsKKwkJCXNjZjMgPSBzY2ZPbGRbc2ZiXSArIHNjZk9sZFtzZmJdICsgc2NmT2xkW3NmYl07CisJCQlsZFJhdGlvT2xkID0gbGRSYXRpb09sZCAtIHNjZjM7CisJCQlsZFJhdGlvTmV3ID0gc2ZiQ29uc3RQZVBhcnRbc2ZiXSA8PCAzOworCQkJc2NmMyA9IHNjZk5ld1tzZmJdICsgc2NmTmV3W3NmYl0gKyBzY2ZOZXdbc2ZiXTsKKwkJCWxkUmF0aW9OZXcgPSBsZFJhdGlvTmV3IC0gc2NmMzsKKwkJCQorCQkJaWYgKGxkUmF0aW9PbGQgPCBQRV9DMV84KSB7CisJCQkJLyogMjEgOiAyKjgqUEVfQzIsIDIqUEVfQzMgfiAxKi8KKwkJCQlsZFJhdGlvT2xkID0gKGxkUmF0aW9PbGQgKyBQRV9DMl8xNikgPj4gMTsKKwkJCX0KKwkJCQorCQkJaWYgKGxkUmF0aW9OZXcgPCBQRV9DMV84KSB7CisJCQkJLyogMjEgOiAyKjgqUEVfQzIsIDIqUEVfQzMgfiAxKi8KKwkJCQlsZFJhdGlvTmV3ID0gKGxkUmF0aW9OZXcgKyBQRV9DMl8xNikgPj4gMTsKKwkJCX0KKwkJCQorCQkJc3BlY1BlRGlmZiArPSAgc2ZiTlJlbGV2YW50TGluZXNbc2ZiXSAqIChsZFJhdGlvTmV3IC0gbGRSYXRpb09sZCk7CisJCX0KKwl9CisJCisJc3BlY1BlRGlmZiA9IChzcGVjUGVEaWZmICogUEVfU0NBTEUpID4+IDE0OworCQorCXJldHVybiBzYXR1cmF0ZShzcGVjUGVEaWZmKTsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IGFzc2ltaWxhdGVTaW5nbGVTY2YKKyogZGVzY3JpcHRpb246ICBzZWFyY2hlZCBmb3Igc2luZ2xlIHNjYWxlZmFjdG9yIGJhbmRzLCB3aGVyZSB0aGUgbnVtYmVyIG9mIGJpdHMgZ2FpbmVkCisqCQkJCWJ5IHVzaW5nIGEgc21hbGxlciBzY2ZnYWluKG4pIGlzIGdyZWF0ZXIgdGhhbiB0aGUgZXN0aW1hdGVkIGluY3JlYXNlZAorKgkJCQliaXQgZGVtYW5kCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIHZvaWQgYXNzaW1pbGF0ZVNpbmdsZVNjZihQU1lfT1VUX0NIQU5ORUwgKnBzeU91dENoYW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAqc2NmLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICptaW5TY2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQzMiAqc2ZiRGlzdCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAqc2ZiQ29uc3RQZVBhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAqbG9nU2ZiRW5lcmd5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgKmxvZ1NmYkZvcm1GYWN0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAqc2ZiTlJlbGV2YW50TGluZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAqbWluU2NmQ2FsY3VsYXRlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmxhZyAgICByZXN0YXJ0T25TdWNjZXNzKQoreworCVdvcmQzMiBzZmJMYXN0LCBzZmJBY3QsIHNmYk5leHQsIHNjZkFjdCwgc2NmTWluOworCVdvcmQxNiAqc2NmTGFzdCwgKnNjZk5leHQ7CisJV29yZDMyIHNmYlBlT2xkLCBzZmJQZU5ldzsKKwlXb3JkMzIgc2ZiRGlzdE5ldzsKKwlXb3JkMzIgajsKKwlGbGFnICAgc3VjY2VzczsKKwlXb3JkMTYgZGVsdGFQZSwgZGVsdGFQZU5ldywgZGVsdGFQZVRtcDsKKwlXb3JkMTYgKnByZXZTY2ZMYXN0ID0gcHN5T3V0Q2hhbi0+cHJldlNjZkxhc3Q7CisJV29yZDE2ICpwcmV2U2NmTmV4dCA9IHBzeU91dENoYW4tPnByZXZTY2ZOZXh0OworCVdvcmQxNiAqZGVsdGFQZUxhc3QgPSBwc3lPdXRDaGFuLT5kZWx0YVBlTGFzdDsKKwlGbGFnICAgdXBkYXRlTWluU2NmQ2FsY3VsYXRlZDsKKwkKKwlzdWNjZXNzID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwlkZWx0YVBlID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkKKwlmb3Ioaj0wO2o8cHN5T3V0Q2hhbi0+c2ZiQ250O2orKyl7CisJCXByZXZTY2ZMYXN0W2pdID0gTUFYXzE2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJcHJldlNjZk5leHRbal0gPSBNQVhfMTY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQlkZWx0YVBlTGFzdFtqXSA9IE1BWF8xNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJfQ0KKwkKKwlzZmJMYXN0ID0gLTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwlzZmJBY3QgPSAtMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwlzZmJOZXh0ID0gLTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwlzY2ZMYXN0ID0gMDsKKwlzY2ZOZXh0ID0gMDsKKwlzY2ZNaW4gPSBNQVhfMTY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwlkbyB7CisJCS8qIHNlYXJjaCBmb3IgbmV3IHJlbGV2YW50IHNmYiAqLworCQlzZmJOZXh0ID0gc2ZiTmV4dCArIDE7CisJCXdoaWxlIChzZmJOZXh0IDwgcHN5T3V0Q2hhbi0+c2ZiQ250ICYmIHNjZltzZmJOZXh0XSA9PSBNSU5fMTYpIHsKKwkJCQorCQkJc2ZiTmV4dCA9IHNmYk5leHQgKyAxOworCQl9CisJCQorCQlpZiAoKHNmYkxhc3Q+PTApICYmIChzZmJBY3Q+PTApICYmIHNmYk5leHQgPCBwc3lPdXRDaGFuLT5zZmJDbnQpIHsKKwkJCS8qIHJlbGV2YW50IHNjZnMgdG8gdGhlIGxlZnQgYW5kIHRvIHRoZSByaWdodCAqLworCQkJc2NmQWN0ICA9IHNjZltzZmJBY3RdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJCXNjZkxhc3QgPSBzY2YgKyBzZmJMYXN0OworCQkJc2NmTmV4dCA9IHNjZiArIHNmYk5leHQ7CisJCQlzY2ZNaW4gID0gbWluKCpzY2ZMYXN0LCAqc2NmTmV4dCk7CisJCX0KKwkJZWxzZSB7CisJCQkKKwkJCWlmIChzZmJMYXN0ID09IC0xICYmIChzZmJBY3Q+PTApICYmIHNmYk5leHQgPCBwc3lPdXRDaGFuLT5zZmJDbnQpIHsKKwkJCQkvKiBmaXJzdCByZWxldmFudCBzY2YgKi8KKwkJCQlzY2ZBY3QgID0gc2NmW3NmYkFjdF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJCQlzY2ZMYXN0ID0gJnNjZkFjdDsKKwkJCQlzY2ZOZXh0ID0gc2NmICsgc2ZiTmV4dDsKKwkJCQlzY2ZNaW4gID0gKnNjZk5leHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJCX0KKwkJCWVsc2UgeworCQkJCQorCQkJCWlmICgoc2ZiTGFzdD49MCkgJiYgKHNmYkFjdD49MCkgJiYgc2ZiTmV4dCA9PSBwc3lPdXRDaGFuLT5zZmJDbnQpIHsKKwkJCQkJLyogbGFzdCByZWxldmFudCBzY2YgKi8KKwkJCQkJc2NmQWN0ICA9IHNjZltzZmJBY3RdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQkJCQlzY2ZMYXN0ID0gc2NmICsgc2ZiTGFzdDsKKwkJCQkJc2NmTmV4dCA9ICZzY2ZBY3Q7CisJCQkJCXNjZk1pbiAgPSAqc2NmTGFzdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJCQl9CisJCQl9CisJCX0KKwkJCisJCWlmIChzZmJBY3Q+PTApCisJCQlzY2ZNaW4gPSBtYXgoc2NmTWluLCBtaW5TY2Zbc2ZiQWN0XSk7CisJCQorCQlpZiAoKHNmYkFjdCA+PSAwKSAmJiAKKwkJCShzZmJMYXN0Pj0wIHx8IHNmYk5leHQgPCBwc3lPdXRDaGFuLT5zZmJDbnQpICYmIAorCQkJc2NmQWN0ID4gc2NmTWluICYmIAorCQkJKCpzY2ZMYXN0ICE9IHByZXZTY2ZMYXN0W3NmYkFjdF0gfHwgCisJCQkqc2NmTmV4dCAhPSBwcmV2U2NmTmV4dFtzZmJBY3RdIHx8IAorCQkJZGVsdGFQZSA8IGRlbHRhUGVMYXN0W3NmYkFjdF0pKSB7CisJCQlzdWNjZXNzID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQkJCisJCQkvKiBlc3RpbWF0ZSByZXF1aXJlZCBiaXRzIGZvciBhY3R1YWwgc2NmICovCQkJCisJCQlpZiAoc2ZiQ29uc3RQZVBhcnRbc2ZiQWN0XSA9PSBNSU5fMTYpIHsKKwkJCQlzZmJDb25zdFBlUGFydFtzZmJBY3RdID0gbG9nU2ZiRW5lcmd5W3NmYkFjdF0gLQorCQkJCQlsb2dTZmJGb3JtRmFjdG9yW3NmYkFjdF0gKyAxMS04KjQ7IC8qIDQqbG9nMig2Ljc1KSAtIDMyICovCisJCQkJCisJCQkJaWYgKHNmYkNvbnN0UGVQYXJ0W3NmYkFjdF0gPCAwKQorCQkJCQlzZmJDb25zdFBlUGFydFtzZmJBY3RdID0gc2ZiQ29uc3RQZVBhcnRbc2ZiQWN0XSArIDM7CisJCQkJc2ZiQ29uc3RQZVBhcnRbc2ZiQWN0XSA9IHNmYkNvbnN0UGVQYXJ0W3NmYkFjdF0gPj4gMjsKKwkJCX0KKwkJCQorCQkJc2ZiUGVPbGQgPSBjYWxjU2luZ2xlU3BlY1BlKHNjZkFjdCwgc2ZiQ29uc3RQZVBhcnRbc2ZiQWN0XSwgc2ZiTlJlbGV2YW50TGluZXNbc2ZiQWN0XSkgKworCQkJCWNvdW50U2luZ2xlU2NmQml0cyhzY2ZBY3QsICpzY2ZMYXN0LCAqc2NmTmV4dCk7CisJCQlkZWx0YVBlTmV3ID0gZGVsdGFQZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQkJdXBkYXRlTWluU2NmQ2FsY3VsYXRlZCA9IDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJCWRvIHsKKwkJCQlzY2ZBY3QgPSBzY2ZBY3QgLSAxOworCQkJCS8qIGNoZWNrIG9ubHkgaWYgdGhlIHNhbWUgY2hlY2sgd2FzIG5vdCBkb25lIGJlZm9yZSAqLworCQkJCQorCQkJCWlmIChzY2ZBY3QgPCBtaW5TY2ZDYWxjdWxhdGVkW3NmYkFjdF0pIHsKKwkJCQkJc2ZiUGVOZXcgPSBjYWxjU2luZ2xlU3BlY1BlKHNjZkFjdCwgc2ZiQ29uc3RQZVBhcnRbc2ZiQWN0XSwgc2ZiTlJlbGV2YW50TGluZXNbc2ZiQWN0XSkgKworCQkJCQkJY291bnRTaW5nbGVTY2ZCaXRzKHNjZkFjdCwgKnNjZkxhc3QsICpzY2ZOZXh0KTsKKwkJCQkJLyogdXNlIG5ldyBzY2YgaWYgbm8gaW5jcmVhc2UgaW4gcGUgYW5kIAorCQkJCQlxdWFudGl6YXRpb24gZXJyb3IgaXMgc21hbGxlciAqLworCQkJCQlkZWx0YVBlVG1wID0gZGVsdGFQZSArIHNmYlBlTmV3IC0gc2ZiUGVPbGQ7CisJCQkJCQorCQkJCQlpZiAoZGVsdGFQZVRtcCA8IDEwKSB7CisJCQkJCQlzZmJEaXN0TmV3ID0gY2FsY1NmYkRpc3QocHN5T3V0Q2hhbi0+bWRjdFNwZWN0cnVtKworCQkJCQkJCXBzeU91dENoYW4tPnNmYk9mZnNldHNbc2ZiQWN0XSwKKwkJCQkJCQkocHN5T3V0Q2hhbi0+c2ZiT2Zmc2V0c1tzZmJBY3QrMV0gLSBwc3lPdXRDaGFuLT5zZmJPZmZzZXRzW3NmYkFjdF0pLAorCQkJCQkJCXNjZkFjdCk7CisJCQkJCQlpZiAoc2ZiRGlzdE5ldyA8IHNmYkRpc3Rbc2ZiQWN0XSkgeworCQkJCQkJCS8qIHN1Y2Nlc3MsIHJlcGxhY2Ugc2NmIGJ5IG5ldyBvbmUgKi8KKwkJCQkJCQlzY2Zbc2ZiQWN0XSA9IHNjZkFjdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCQkJCQkJc2ZiRGlzdFtzZmJBY3RdID0gc2ZiRGlzdE5ldzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQkJCQkJCWRlbHRhUGVOZXcgPSBkZWx0YVBlVG1wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJCQkJCQlzdWNjZXNzID0gMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCQkJCQl9CisJCQkJCQkvKiBtYXJrIGFzIGFscmVhZHkgY2hlY2tlZCAqLworCQkJCQkJCisJCQkJCQlpZiAodXBkYXRlTWluU2NmQ2FsY3VsYXRlZCkgeworCQkJCQkJCW1pblNjZkNhbGN1bGF0ZWRbc2ZiQWN0XSA9IHNjZkFjdDsgICAgICAgICAgICAgICAgICAgICAgICAKKwkJCQkJCX0KKwkJCQkJfQorCQkJCQllbHNlIHsKKwkJCQkJCXVwZGF0ZU1pblNjZkNhbGN1bGF0ZWQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQkJCQl9CisJCQkJfQorCQkJCQorCQkJfSB3aGlsZSAoc2NmQWN0ID4gc2NmTWluKTsKKwkJCWRlbHRhUGUgPSBkZWx0YVBlTmV3OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQkJLyogc2F2ZSBwYXJhbWV0ZXJzIHRvIGF2b2lkIG11bHRpcGxlIGNvbXB1dGF0aW9ucyBvZiB0aGUgc2FtZSBzZmIgKi8KKwkJCXByZXZTY2ZMYXN0W3NmYkFjdF0gPSAqc2NmTGFzdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQkJcHJldlNjZk5leHRbc2ZiQWN0XSA9ICpzY2ZOZXh0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCQlkZWx0YVBlTGFzdFtzZmJBY3RdID0gZGVsdGFQZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJfQorCQkKKwkJaWYgKHN1Y2Nlc3MgJiYgcmVzdGFydE9uU3VjY2VzcykgeworCQkJLyogc3RhcnQgYWdhaW4gYXQgZmlyc3Qgc2ZiICovCisJCQlzZmJMYXN0ID0gLTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJCXNmYkFjdCAgPSAtMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQkJc2ZiTmV4dCA9IC0xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCQlzY2ZMYXN0ID0gMDsKKwkJCXNjZk5leHQgPSAwOworCQkJc2NmTWluICA9IE1BWF8xNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCQlzdWNjZXNzID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJfQorCQllbHNlIHsKKwkJCS8qIHNoaWZ0IHNmYnMgZm9yIG5leHQgYmFuZCAqLworCQkJc2ZiTGFzdCA9IHNmYkFjdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCQlzZmJBY3QgID0gc2ZiTmV4dDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJfQorCQkKKyAgfSB3aGlsZSAoc2ZiTmV4dCA8IHBzeU91dENoYW4tPnNmYkNudCk7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBhc3NpbWlsYXRlTXVsdGlwbGVTY2YKKyogZGVzY3JpcHRpb246ICBzY2FsZWZhY3RvciBkaWZmZXJlbmNlIHJlZHVjdGlvbgorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyB2b2lkIGFzc2ltaWxhdGVNdWx0aXBsZVNjZihQU1lfT1VUX0NIQU5ORUwgKnBzeU91dENoYW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICpzY2YsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAqbWluU2NmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQzMiAqc2ZiRGlzdCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICpzZmJDb25zdFBlUGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgKmxvZ1NmYkVuZXJneSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgKmxvZ1NmYkZvcm1GYWN0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICpzZmJOUmVsZXZhbnRMaW5lcykKK3sKKwlXb3JkMzIgc2ZiLCBzdGFydFNmYiwgc3RvcFNmYiwgc2NmTWluLCBzY2ZNYXgsIHNjZkFjdDsKKwlGbGFnICAgcG9zc2libGVSZWdpb25Gb3VuZDsKKwlXb3JkMzIgZGVsdGFTY2ZCaXRzOworCVdvcmQzMiBkZWx0YVNwZWNQZTsKKwlXb3JkMzIgZGVsdGFQZSwgZGVsdGFQZU5ldzsKKwlXb3JkMzIgc2ZiQ250OworCVdvcmQzMiAqc2ZiRGlzdE5ldyA9IHBzeU91dENoYW4tPnNmYkRpc3ROZXc7CisJV29yZDE2ICpzY2ZUbXAgPSBwc3lPdXRDaGFuLT5wcmV2U2NmTGFzdDsKKworCWRlbHRhUGUgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwlzZmJDbnQgPSBwc3lPdXRDaGFuLT5zZmJDbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCisJLyogY2FsYyBtaW4gYW5kIG1heCBzY2FsZmFjdG9ycyAqLworCXNjZk1pbiA9IE1BWF8xNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwlzY2ZNYXggPSBNSU5fMTY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJZm9yIChzZmI9MDsgc2ZiPHNmYkNudDsgc2ZiKyspIHsKKwkJCisJCWlmIChzY2Zbc2ZiXSAhPSBNSU5fMTYpIHsKKwkJCXNjZk1pbiA9IG1pbihzY2ZNaW4sIHNjZltzZmJdKTsKKwkJCXNjZk1heCA9IG1heChzY2ZNYXgsIHNjZltzZmJdKTsKKwkJfQorCX0KKwkKKwlpZiAoc2NmTWF4ICE9ICBNSU5fMTYpIHsKKwkJCisJCXNjZkFjdCA9IHNjZk1heDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJCisJCWRvIHsKKwkJCXNjZkFjdCA9IHNjZkFjdCAtIDE7CisJCQlmb3IgKHNmYj0wOyBzZmI8c2ZiQ250OyBzZmIrKykgeworCQkJCXNjZlRtcFtzZmJdID0gc2NmW3NmYl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJCX0KKwkJCXN0b3BTZmIgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQkJZG8geworCQkJCXNmYiA9IHN0b3BTZmI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJCQkKKwkJCQl3aGlsZSAoc2ZiIDwgc2ZiQ250ICYmIChzY2Zbc2ZiXSA9PSBNSU5fMTYgfHwgc2NmW3NmYl0gPD0gc2NmQWN0KSkgeworCQkJCQlzZmIgPSBzZmIgKyAxOworCQkJCX0KKwkJCQlzdGFydFNmYiA9IHNmYjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCQkJc2ZiID0gc2ZiICsgMTsKKwkJCQkKKwkJCQl3aGlsZSAoc2ZiIDwgc2ZiQ250ICYmIChzY2Zbc2ZiXSA9PSBNSU5fMTYgfHwgc2NmW3NmYl0gPiBzY2ZBY3QpKSB7CisJCQkJCXNmYiA9IHNmYiArIDE7CisJCQkJfQorCQkJCXN0b3BTZmIgPSBzZmI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJCQkKKwkJCQlwb3NzaWJsZVJlZ2lvbkZvdW5kID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCQkJCisJCQkJaWYgKHN0YXJ0U2ZiIDwgc2ZiQ250KSB7CisJCQkJCXBvc3NpYmxlUmVnaW9uRm91bmQgPSAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCQkJCWZvciAoc2ZiPXN0YXJ0U2ZiOyBzZmI8c3RvcFNmYjsgc2ZiKyspIHsKKwkJCQkJCQorCQkJCQkJaWYgKHNjZltzZmJdIT1NSU5fMTYpIHsKKwkJCQkJCQkKKwkJCQkJCQlpZiAoc2NmQWN0IDwgbWluU2NmW3NmYl0pIHsKKwkJCQkJCQkJcG9zc2libGVSZWdpb25Gb3VuZCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJCQkJCQkJYnJlYWs7CisJCQkJCQkJfQorCQkJCQkJfQorCQkJCQl9CisJCQkJfQorCQkJCQorCQkJCQorCQkJCWlmIChwb3NzaWJsZVJlZ2lvbkZvdW5kKSB7IC8qIHJlZ2lvbiBmb3VuZCAqLworCQkJCQkKKwkJCQkJLyogcmVwbGFjZSBzY2ZzIGluIHJlZ2lvbiBieSBzY2ZBY3QgKi8KKwkJCQkJZm9yIChzZmI9c3RhcnRTZmI7IHNmYjxzdG9wU2ZiOyBzZmIrKykgeworCQkJCQkJCisJCQkJCQlpZiAoc2NmVG1wW3NmYl0hPU1JTl8xNikKKwkJCQkJCQlzY2ZUbXBbc2ZiXSA9IHNjZkFjdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCQkJCX0KKwkJCQkJCisJCQkJCS8qIGVzdGltYXRlIGNoYW5nZSBpbiBiaXQgZGVtYW5kIGZvciBuZXcgc2NmcyAqLworCQkJCQlkZWx0YVNjZkJpdHMgPSBjb3VudFNjZkJpdHNEaWZmKHNjZixzY2ZUbXAsc2ZiQ250LHN0YXJ0U2ZiLHN0b3BTZmIpOworCQkJCQlkZWx0YVNwZWNQZSA9IGNhbGNTcGVjUGVEaWZmKHNjZiwgc2NmVG1wLCBzZmJDb25zdFBlUGFydCwKKwkJCQkJCWxvZ1NmYkVuZXJneSwgbG9nU2ZiRm9ybUZhY3Rvciwgc2ZiTlJlbGV2YW50TGluZXMsIAorCQkJCQkJc3RhcnRTZmIsIHN0b3BTZmIpOworCQkJCQlkZWx0YVBlTmV3ID0gZGVsdGFQZSArIGRlbHRhU2NmQml0cyArIGRlbHRhU3BlY1BlOworCQkJCQkKKwkJCQkJCisJCQkJCWlmIChkZWx0YVBlTmV3IDwgMTApIHsKKwkJCQkJCVdvcmQzMiBkaXN0T2xkU3VtLCBkaXN0TmV3U3VtOworCQkJCQkJCisJCQkJCQkvKiBxdWFudGl6ZSBhbmQgY2FsYyBzdW0gb2YgbmV3IGRpc3RvcnRpb24gKi8KKwkJCQkJCWRpc3RPbGRTdW0gPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCQkJCQlkaXN0TmV3U3VtID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQkJCQkJZm9yIChzZmI9c3RhcnRTZmI7IHNmYjxzdG9wU2ZiOyBzZmIrKykgeworCQkJCQkJCQorCQkJCQkJCWlmIChzY2ZUbXBbc2ZiXSAhPSBNSU5fMTYpIHsKKwkJCQkJCQkJZGlzdE9sZFN1bSA9IExfYWRkKGRpc3RPbGRTdW0sIHNmYkRpc3Rbc2ZiXSk7CisJCQkJCQkJCQorCQkJCQkJCQlzZmJEaXN0TmV3W3NmYl0gPSBjYWxjU2ZiRGlzdChwc3lPdXRDaGFuLT5tZGN0U3BlY3RydW0gKworCQkJCQkJCQkJcHN5T3V0Q2hhbi0+c2ZiT2Zmc2V0c1tzZmJdLCAKKwkJCQkJCQkJCShwc3lPdXRDaGFuLT5zZmJPZmZzZXRzW3NmYisxXSAtIHBzeU91dENoYW4tPnNmYk9mZnNldHNbc2ZiXSksCisJCQkJCQkJCQlzY2ZBY3QpOworCQkJCQkJCQkKKwkJCQkJCQkJCisJCQkJCQkJCWlmIChzZmJEaXN0TmV3W3NmYl0gPiBwc3lPdXRDaGFuLT5zZmJUaHJlc2hvbGRbc2ZiXSkgeworCQkJCQkJCQkJZGlzdE5ld1N1bSA9IGRpc3RPbGRTdW0gPDwgMTsKKwkJCQkJCQkJCWJyZWFrOworCQkJCQkJCQl9CisJCQkJCQkJCWRpc3ROZXdTdW0gPSBMX2FkZChkaXN0TmV3U3VtLCBzZmJEaXN0TmV3W3NmYl0pOworCQkJCQkJCX0KKwkJCQkJCX0KKwkJCQkJCQorCQkJCQkJaWYgKGRpc3ROZXdTdW0gPCBkaXN0T2xkU3VtKSB7CisJCQkJCQkJZGVsdGFQZSA9IGRlbHRhUGVOZXc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCQkJCQkJZm9yIChzZmI9c3RhcnRTZmI7IHNmYjxzdG9wU2ZiOyBzZmIrKykgeworCQkJCQkJCQkKKwkJCQkJCQkJaWYgKHNjZltzZmJdIT1NSU5fMTYpIHsKKwkJCQkJCQkJCXNjZltzZmJdID0gc2NmQWN0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCQkJCQkJCQlzZmJEaXN0W3NmYl0gPSBzZmJEaXN0TmV3W3NmYl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQkJCQkJCQl9CisJCQkJCQkJfQorCQkJCQkJfQorCQkJCQl9CisJCQkJfSAgICAgICAgCisJCQl9IHdoaWxlIChzdG9wU2ZiIDw9IHNmYkNudCk7ICAgICAgCisJCX0gd2hpbGUgKHNjZkFjdCA+IHNjZk1pbik7CisJfQorfQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IEVzdGltYXRlU2NhbGVGYWN0b3JzQ2hhbm5lbAorKiBkZXNjcmlwdGlvbjogIGVzdGltYXRlIHNjYWxlIGZhY3RvcnMgZm9yIG9uZSBjaGFubmVsCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIHZvaWQKK0VzdGltYXRlU2NhbGVGYWN0b3JzQ2hhbm5lbChQU1lfT1VUX0NIQU5ORUwgKnBzeU91dENoYW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICAgICAgICAgICpzY2YsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICAgICAgICAgICpnbG9iYWxHYWluLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgICAgICAgICAqbG9nU2ZiRW5lcmd5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgICAgICAgICAqbG9nU2ZiRm9ybUZhY3RvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgICAgICAgICAgKnNmYk5SZWxldmFudExpbmVzKQoreworCVdvcmQzMiBpLCBqOworCVdvcmQzMiB0aHJlc2gsIGVuZXJneTsKKwlXb3JkMzIgZW5lcmd5UGFydCwgdGhyZXNob2xkUGFydDsKKwlXb3JkMzIgc2NmSW50LCBtaW5TY2YsIG1heFNjZiwgbWF4QWxsb3dlZFNjZiwgbGFzdFNmOworCVdvcmQzMiBtYXhTcGVjOworCVdvcmQzMiAqc2ZiRGlzdCA9IHBzeU91dENoYW4tPnNmYkRpc3Q7CisJV29yZDE2ICptaW5TZk1heFF1YW50ID0gcHN5T3V0Q2hhbi0+bWluU2ZNYXhRdWFudDsKKwlXb3JkMTYgKm1pblNjZkNhbGN1bGF0ZWQgPSBwc3lPdXRDaGFuLT5taW5TY2ZDYWxjdWxhdGVkOworCQorCQorCWZvciAoaT0wOyBpPHBzeU91dENoYW4tPnNmYkNudDsgaSsrKSB7CisJCVdvcmQzMiBzYmZ3aXRoLCBzYmZTdGFydDsNCisJCVdvcmQzMiAqbWRjdFNwZWM7CisJCXRocmVzaCA9IHBzeU91dENoYW4tPnNmYlRocmVzaG9sZFtpXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJZW5lcmd5ID0gcHN5T3V0Q2hhbi0+c2ZiRW5lcmd5W2ldOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQkNCisJCXNiZlN0YXJ0ID0gcHN5T3V0Q2hhbi0+c2ZiT2Zmc2V0c1tpXTsNCisJCXNiZndpdGggPSBwc3lPdXRDaGFuLT5zZmJPZmZzZXRzW2krMV0gLSBzYmZTdGFydDsNCisJCW1kY3RTcGVjID0gcHN5T3V0Q2hhbi0+bWRjdFNwZWN0cnVtK3NiZlN0YXJ0Ow0KKwkJCisJCW1heFNwZWMgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJLyogbWF4aW11bSBvZiBzcGVjdHJ1bSAqLworCQlmb3IgKGo9c2Jmd2l0aDsgajsgai0tICkgew0KKwkJCVdvcmQzMiBhYnNTcGVjID0gTF9hYnMoKm1kY3RTcGVjKTsgbWRjdFNwZWMrKzsNCisJCQltYXhTcGVjIHw9IGFic1NwZWM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwkJfQorCQkKKwkJLyogc2NmcyB3aXRob3V0IGVuZXJneSBvciB3aXRoIHRocmVzaD5lbmVyZ3kgYXJlIG1hcmtlZCB3aXRoIE1JTl8xNiAqLworCQlzY2ZbaV0gPSBNSU5fMTY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCW1pblNmTWF4UXVhbnRbaV0gPSBNSU5fMTY7ICAgIAorCQkKKwkJaWYgKChtYXhTcGVjID4gMCkgJiYgKGVuZXJneSA+IHRocmVzaCkpIHsKKwkJCQorCQkJZW5lcmd5UGFydCA9IGxvZ1NmYkZvcm1GYWN0b3JbaV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJCXRocmVzaG9sZFBhcnQgPSBpTG9nNCh0aHJlc2gpOyAgCisJCQkvKiAtMjAgPSA0KmxvZzIoNi43NSkgLSAzMiAqLw0KKwkJCXNjZkludCA9ICgodGhyZXNob2xkUGFydCAtIGVuZXJneVBhcnQgLSAyMCkgKiBTQ0FMRV9FU1RJTUFURV9DT0VGKSA+PiAxNTsKKwkJCQorCQkJbWluU2ZNYXhRdWFudFtpXSA9IGlMb2c0KG1heFNwZWMpIC0gNjg7IC8qIDY4ICAtMTYvMypsb2coTUFYX1FVQU5UKzAuNS1sb2dDb24pL2xvZygyKSArIDEgKi8KKwkJCQorCQkJCisJCQlpZiAobWluU2ZNYXhRdWFudFtpXSA+IHNjZkludCkgeworCQkJCXNjZkludCA9IG1pblNmTWF4UXVhbnRbaV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQkJfQorCQkJCisJCQkvKiBmaW5kIGJldHRlciBzY2FsZWZhY3RvciB3aXRoIGFuYWx5c2lzIGJ5IHN5bnRoZXNpcyAqLworCQkJc2NmSW50ID0gaW1wcm92ZVNjZihwc3lPdXRDaGFuLT5tZGN0U3BlY3RydW0rc2JmU3RhcnQsDQorCQkJCXNiZndpdGgsDQorCQkJCXRocmVzaCwgc2NmSW50LCBtaW5TZk1heFF1YW50W2ldLCANCisJCQkJJnNmYkRpc3RbaV0sICZtaW5TY2ZDYWxjdWxhdGVkW2ldKTsKKwkJCQorCQkJc2NmW2ldID0gc2NmSW50OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJfQorCX0KKwkKKwkKKwkvKiBzY2FsZWZhY3RvciBkaWZmZXJlY2UgcmVkdWN0aW9uICAqLworCXsKKwkJV29yZDE2IHNmYkNvbnN0UGVQYXJ0W01BWF9HUk9VUEVEX1NGQl07CisJCWZvcihpPTA7aTxwc3lPdXRDaGFuLT5zZmJDbnQ7aSsrKSB7CisJCQlzZmJDb25zdFBlUGFydFtpXSA9IE1JTl8xNjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQl9CisJCQorCQlhc3NpbWlsYXRlU2luZ2xlU2NmKHBzeU91dENoYW4sIHNjZiwgCisJCQltaW5TZk1heFF1YW50LCBzZmJEaXN0LCBzZmJDb25zdFBlUGFydCwgbG9nU2ZiRW5lcmd5LAorCQkJbG9nU2ZiRm9ybUZhY3Rvciwgc2ZiTlJlbGV2YW50TGluZXMsIG1pblNjZkNhbGN1bGF0ZWQsIDEpOworCQkKKwkJYXNzaW1pbGF0ZU11bHRpcGxlU2NmKHBzeU91dENoYW4sIHNjZiwgCisJCQltaW5TZk1heFF1YW50LCBzZmJEaXN0LCBzZmJDb25zdFBlUGFydCwgbG9nU2ZiRW5lcmd5LAorCQkJbG9nU2ZiRm9ybUZhY3Rvciwgc2ZiTlJlbGV2YW50TGluZXMpOworCX0KKworCS8qIGdldCBtYXggc2NhbGVmYWMgZm9yIGdsb2JhbCBnYWluICovCisJbWF4U2NmID0gTUlOXzE2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJbWluU2NmID0gTUFYXzE2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJZm9yIChpPTA7IGk8cHN5T3V0Q2hhbi0+c2ZiQ250OyBpKyspIHsKKwkJCisJCWlmIChtYXhTY2YgPCBzY2ZbaV0pIHsKKwkJCW1heFNjZiA9IHNjZltpXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCX0KKwkJCisJCWlmICgoc2NmW2ldICE9IE1JTl8xNikgJiYgKG1pblNjZiA+IHNjZltpXSkpIHsKKwkJCW1pblNjZiA9IHNjZltpXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCX0KKwl9CisJLyogbGltaXQgc2NmIGRlbHRhICovCisJbWF4QWxsb3dlZFNjZiA9IG1pblNjZiArIE1BWF9TQ0ZfREVMVEE7CisJZm9yKGk9MDsgaTxwc3lPdXRDaGFuLT5zZmJDbnQ7IGkrKykgeworCQkKKwkJaWYgKChzY2ZbaV0gIT0gTUlOXzE2KSAmJiAobWF4QWxsb3dlZFNjZiA8IHNjZltpXSkpIHsKKwkJCXNjZltpXSA9IG1heEFsbG93ZWRTY2Y7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCX0KKwl9CisJLyogbmV3IG1heFNjZiBpZiBhbnkgc2NmIGhhcyBiZWVuIGxpbWl0ZWQgKi8KKwkKKwlpZiAobWF4QWxsb3dlZFNjZiA8IG1heFNjZikgeworCQltYXhTY2YgPSBtYXhBbGxvd2VkU2NmOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJfQorCQorCS8qIGNhbGMgbG9vcCBzY2FsZWZhY3RvcnMgKi8KKwkKKwlpZiAobWF4U2NmID4gTUlOXzE2KSB7CisJCSpnbG9iYWxHYWluID0gbWF4U2NmOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJbGFzdFNmID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQkKKwkJZm9yKGk9MDsgaTxwc3lPdXRDaGFuLT5zZmJDbnQ7IGkrKykgeworCQkJCisJCQlpZiAoc2NmW2ldID09IE1JTl8xNikgeworCQkJCXNjZltpXSA9IGxhc3RTZjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQkJCS8qIHNldCBiYW5kIGV4cGxpY2l0ZWx5IHRvIHplcm8gKi8KKwkJCQlmb3IgKGo9cHN5T3V0Q2hhbi0+c2ZiT2Zmc2V0c1tpXTsgajxwc3lPdXRDaGFuLT5zZmJPZmZzZXRzW2krMV07IGorKykgeworCQkJCQlwc3lPdXRDaGFuLT5tZGN0U3BlY3RydW1bal0gPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCQkJfQorCQkJfQorCQkJZWxzZSB7CisJCQkJc2NmW2ldID0gbWF4U2NmIC0gc2NmW2ldOworCQkJCWxhc3RTZiA9IHNjZltpXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQkJfQorCQl9CisJfQorCWVsc2V7CisJCSpnbG9iYWxHYWluID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJLyogc2V0IHNwZWN0cnVtIGV4cGxpY2l0ZWx5IHRvIHplcm8gKi8KKwkJZm9yKGk9MDsgaTxwc3lPdXRDaGFuLT5zZmJDbnQ7IGkrKykgeworCQkJc2NmW2ldID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJCWZvciAoaj1wc3lPdXRDaGFuLT5zZmJPZmZzZXRzW2ldOyBqPHBzeU91dENoYW4tPnNmYk9mZnNldHNbaSsxXTsgaisrKSB7CisJCQkJcHN5T3V0Q2hhbi0+bWRjdFNwZWN0cnVtW2pdID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJCQl9CisJCX0KKwl9Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogQ2FsY0Zvcm1GYWN0b3IKKyogZGVzY3JpcHRpb246ICBlc3RpbWF0ZSBGb3JtIGZhY3RvcnMgZm9yIGFsbCBjaGFubmVsCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordm9pZAorQ2FsY0Zvcm1GYWN0b3IoV29yZDE2IGxvZ1NmYkZvcm1GYWN0b3JbTUFYX0NIQU5ORUxTXVtNQVhfR1JPVVBFRF9TRkJdLAorICAgICAgICAgICAgICAgV29yZDE2IHNmYk5SZWxldmFudExpbmVzW01BWF9DSEFOTkVMU11bTUFYX0dST1VQRURfU0ZCXSwKKyAgICAgICAgICAgICAgIFdvcmQxNiBsb2dTZmJFbmVyZ3lbTUFYX0NIQU5ORUxTXVtNQVhfR1JPVVBFRF9TRkJdLAorICAgICAgICAgICAgICAgUFNZX09VVF9DSEFOTkVMIHBzeU91dENoYW5uZWxbTUFYX0NIQU5ORUxTXSwKKyAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiBuQ2hhbm5lbHMpCit7CisJV29yZDE2IGo7CisJCisJZm9yIChqPTA7IGo8bkNoYW5uZWxzOyBqKyspIHsKKwkJQ2FsY0Zvcm1GYWN0b3JDaGFubmVsKGxvZ1NmYkZvcm1GYWN0b3Jbal0sIHNmYk5SZWxldmFudExpbmVzW2pdLCBsb2dTZmJFbmVyZ3lbal0sICZwc3lPdXRDaGFubmVsW2pdKTsKKwl9Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogRXN0aW1hdGVTY2FsZUZhY3RvcnMKKyogZGVzY3JpcHRpb246ICBlc3RpbWF0ZSBzY2FsZSBmYWN0b3JzIGZvciBhbGwgY2hhbm5lbAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3ZvaWQKK0VzdGltYXRlU2NhbGVGYWN0b3JzKFBTWV9PVVRfQ0hBTk5FTCBwc3lPdXRDaGFubmVsW01BWF9DSEFOTkVMU10sCisgICAgICAgICAgICAgICAgICAgICBRQ19PVVRfQ0hBTk5FTCAgcWNPdXRDaGFubmVsW01BWF9DSEFOTkVMU10sCisgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgICAgICAgICAgbG9nU2ZiRW5lcmd5W01BWF9DSEFOTkVMU11bTUFYX0dST1VQRURfU0ZCXSwKKyAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgICAgICAgICBsb2dTZmJGb3JtRmFjdG9yW01BWF9DSEFOTkVMU11bTUFYX0dST1VQRURfU0ZCXSwKKyAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgICAgICAgICBzZmJOUmVsZXZhbnRMaW5lc1tNQVhfQ0hBTk5FTFNdW01BWF9HUk9VUEVEX1NGQl0sCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgICAgbkNoYW5uZWxzKQoreworCVdvcmQxNiBqOworCQorCWZvciAoaj0wOyBqPG5DaGFubmVsczsgaisrKSB7CisJCUVzdGltYXRlU2NhbGVGYWN0b3JzQ2hhbm5lbCgmcHN5T3V0Q2hhbm5lbFtqXSwKKwkJCXFjT3V0Q2hhbm5lbFtqXS5zY2YsCisJCQkmKHFjT3V0Q2hhbm5lbFtqXS5nbG9iYWxHYWluKSwKKwkJCWxvZ1NmYkVuZXJneVtqXSwKKwkJCWxvZ1NmYkZvcm1GYWN0b3Jbal0sCisJCQlzZmJOUmVsZXZhbnRMaW5lc1tqXSk7CisJfQorfQorCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9zcHJlYWRpbmcuYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL3NwcmVhZGluZy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2ZmM3ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy9zcHJlYWRpbmcuYwpAQCAtMCwwICsxLDUyIEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorCUZpbGU6CQlzcHJlYWRpbmcuYw0KKw0KKwlDb250ZW50OglTcHJlYWRpbmcgb2YgZW5lcmd5IGZ1bmN0aW9uDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaW5jbHVkZSAiYmFzaWNfb3AuaCINCisjaW5jbHVkZSAib3Blcl8zMmIuaCINCisjaW5jbHVkZSAic3ByZWFkaW5nLmgiDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBTcHJlYWRpbmdNYXgKKyogZGVzY3JpcHRpb246ICBzcHJlYWRpbmcgdGhlIGVuZXJneQorKgkJCQkgaGlnaGVyIGZyZXF1ZW5jaWVzIHRocihuKSA9IG1heCh0aHIobiksIHNoKG4pKnRocihuLTEpKQorKgkJCQkgbG93ZXIgZnJlcXVlbmNpZXMgIHRocihuKSA9IG1heCh0aHIobiksIHNsKG4pKnRocihuKzEpKQorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCit2b2lkIFNwcmVhZGluZ01heChjb25zdCBXb3JkMTYgcGJDbnQsDQorICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2ICptYXNrTG93RmFjdG9yLA0KKyAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiAqbWFza0hpZ2hGYWN0b3IsDQorICAgICAgICAgICAgICAgICAgV29yZDMyICAgICAgICpwYlNwcmVhZGVkRW5lcmd5KQ0KK3sNCisgIFdvcmQzMiBpOw0KKw0KKyAgLyogc2xvcGUgdG8gaGlnaGVyIGZyZXF1ZW5jaWVzICovDQorICBmb3IgKGk9MTsgaTxwYkNudDsgaSsrKSB7DQorICAgIHBiU3ByZWFkZWRFbmVyZ3lbaV0gPSBtYXgocGJTcHJlYWRlZEVuZXJneVtpXSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExfbXB5X2xzKHBiU3ByZWFkZWRFbmVyZ3lbaS0xXSwgbWFza0hpZ2hGYWN0b3JbaV0pKTsNCisgIH0NCisgIC8qIHNsb3BlIHRvIGxvd2VyIGZyZXF1ZW5jaWVzICovDQorICBmb3IgKGk9cGJDbnQgLSAyOyBpPj0wOyBpLS0pIHsNCisgICAgcGJTcHJlYWRlZEVuZXJneVtpXSA9IG1heChwYlNwcmVhZGVkRW5lcmd5W2ldLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTF9tcHlfbHMocGJTcHJlYWRlZEVuZXJneVtpKzFdLCBtYXNrTG93RmFjdG9yW2ldKSk7DQorICB9DQorfQ0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL3N0YXRfYml0cy5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvc3RhdF9iaXRzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTU2MTA0ZQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hYWNlbmMvc3JjL3N0YXRfYml0cy5jCkBAIC0wLDAgKzEsMjM3IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorCUZpbGU6CQlzdGF0X2JpdHMuYw0KKw0KKwlDb250ZW50OglTdGF0aWMgYml0IGNvdW50ZXIgZnVuY3Rpb25zDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworI2luY2x1ZGUgInN0YXRfYml0cy5oIgorI2luY2x1ZGUgImJpdGVuYy5oIgorI2luY2x1ZGUgInRucy5oIgorCisKK3R5cGVkZWYgZW51bSB7CisgIFNJX0lEX0JJVFMgICAgICAgICAgICAgICAgPSgzKSwKKyAgU0lfRklMTF9DT1VOVF9CSVRTICAgICAgICA9KDQpLAorICBTSV9GSUxMX0VTQ19DT1VOVF9CSVRTICAgID0oOCksCisgIFNJX0ZJTExfRVhURU5USU9OX0JJVFMgICAgPSg0KSwKKyAgU0lfRklMTF9OSUJCTEVfQklUUyAgICAgICA9KDQpLAorICBTSV9TQ0VfQklUUyAgICAgICAgICAgICAgID0oNCksCisgIFNJX0NQRV9CSVRTICAgICAgICAgICAgICAgPSg1KSwKKyAgU0lfQ1BFX01TX01BU0tfQklUUyAgICAgICA9KDIpICwKKyAgU0lfSUNTX0lORk9fQklUU19MT05HICAgICA9KDErMisxKzYrMSksCisgIFNJX0lDU19JTkZPX0JJVFNfU0hPUlQgICAgPSgxKzIrMSs0KzcpLAorICBTSV9JQ1NfQklUUyAgICAgICAgICAgICAgID0oOCsxKzErMSkKK30gU0lfQklUUzsKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IGNvdW50TXNNYXNrQml0cworKiBkZXNjcmlwdGlvbjogICBjb3VudCBtcyBzdGVyZW8gYml0cyBkZW1hbmQKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgV29yZDE2IGNvdW50TXNNYXNrQml0cyhXb3JkMTYgICBzZmJDbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgICBzZmJQZXJHcm91cCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgIG1heFNmYlBlckdyb3VwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IFRPT0xTSU5GTyAqdG9vbHNJbmZvKQoreworICBXb3JkMTYgbXNCaXRzLCBzZmJPZmYsIHNmYjsKKyAgbXNCaXRzID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgICAKKyAgc3dpdGNoKHRvb2xzSW5mby0+bXNEaWdlc3QpIHsKKyAgICBjYXNlIE1TX05PTkU6CisgICAgY2FzZSBNU19BTEw6CisgICAgICBicmVhazsKKworICAgIGNhc2UgTVNfU09NRToKKyAgICAgIGZvcihzZmJPZmY9MDsgc2ZiT2ZmPHNmYkNudDsgc2ZiT2ZmKz1zZmJQZXJHcm91cCkKKyAgICAgICAgZm9yKHNmYj0wOyBzZmI8bWF4U2ZiUGVyR3JvdXA7IHNmYisrKQorICAgICAgICAgIG1zQml0cyArPSAxOworICAgICAgYnJlYWs7CisgIH0KKyAgcmV0dXJuKG1zQml0cyk7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogdG5zQ291bnQKKyogZGVzY3JpcHRpb246ICAgY291bnQgdG5zIGJpdCBkZW1hbmQgIGNvcmUgZnVuY3Rpb24KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgV29yZDE2IHRuc0NvdW50KFROU19JTkZPICp0bnNJbmZvLCBXb3JkMTYgYmxvY2tUeXBlKQoreworCisgIFdvcmQzMiBpLCBrOworICBGbGFnIHRuc1ByZXNlbnQ7CisgIFdvcmQzMiBudW1PZldpbmRvd3M7CisgIFdvcmQzMiBjb3VudDsKKyAgV29yZDMyIGNvZWZCaXRzOw0KKyAgV29yZDE2ICpwdGNvZWY7CisKKyAgY291bnQgPSAwOyAgICAgICANCisgIAorICBpZiAoYmxvY2tUeXBlID09IDIpCisgICAgbnVtT2ZXaW5kb3dzID0gODsKKyAgZWxzZQorICAgIG51bU9mV2luZG93cyA9IDE7CisgIHRuc1ByZXNlbnQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICBmb3IgKGk9MDsgaTxudW1PZldpbmRvd3M7IGkrKykgeworICAgICAKKyAgICBpZiAodG5zSW5mby0+dG5zQWN0aXZlW2ldIT0wKSB7CisgICAgICB0bnNQcmVzZW50ID0gMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICB9CisgIH0KKyAgIAorICBpZiAodG5zUHJlc2VudCkgeworICAgIC8qIHRoZXJlIGlzIGRhdGEgdG8gYmUgd3JpdHRlbiovCisgICAgLypjb3VudCArPSAxOyAqLworICAgIGZvciAoaT0wOyBpPG51bU9mV2luZG93czsgaSsrKSB7CisgICAgICAgCisgICAgICBpZiAoYmxvY2tUeXBlID09IDIpCisgICAgICAgIGNvdW50ICs9IDE7CisgICAgICBlbHNlCisgICAgICAgIGNvdW50ICs9IDI7CisgICAgICAgCisgICAgICBpZiAodG5zSW5mby0+dG5zQWN0aXZlW2ldKSB7CisgICAgICAgIGNvdW50ICs9IDE7CisgICAgICAgICAKKyAgICAgICAgaWYgKGJsb2NrVHlwZSA9PSAyKSB7CisgICAgICAgICAgY291bnQgKz0gNDsKKyAgICAgICAgICBjb3VudCArPSAzOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIGNvdW50ICs9IDY7CisgICAgICAgICAgY291bnQgKz0gNTsKKyAgICAgICAgfQorICAgICAgICAgCisgICAgICAgIGlmICh0bnNJbmZvLT5vcmRlcltpXSkgeworICAgICAgICAgIGNvdW50ICs9IDE7IC8qZGlyZWN0aW9uKi8KKyAgICAgICAgICBjb3VudCArPSAxOyAvKmNvZWZfY29tcHJlc3Npb24gKi8JCisgICAgICAgICAgIAorICAgICAgICAgIGlmICh0bnNJbmZvLT5jb2VmUmVzW2ldID09IDQpIHsKKyAgICAgICAgICAgIHB0Y29lZiA9IHRuc0luZm8tPmNvZWYgKyBpKlROU19NQVhfT1JERVJfU0hPUlQ7DQorCQkJY29lZkJpdHMgPSAzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvcihrPTA7IGs8dG5zSW5mby0+b3JkZXJbaV07IGsrKykgeworICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgaWYgKChwdGNvZWZba10gPiAzKSB8fCAocHRjb2VmW2tdIDwgLTQpKSB7CisgICAgICAgICAgICAgICAgY29lZkJpdHMgPSA0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgY29lZkJpdHMgPSAyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIHB0Y29lZiA9IHRuc0luZm8tPmNvZWYgKyBpKlROU19NQVhfT1JERVJfU0hPUlQ7DQorCQkJZm9yKGs9MDsgazx0bnNJbmZvLT5vcmRlcltpXTsgaysrKSB7CisgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICBpZiAoKHB0Y29lZltrXSA+IDEpIHx8IChwdGNvZWZba10gPCAtMikpIHsKKyAgICAgICAgICAgICAgICBjb2VmQml0cyA9IDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgZm9yIChrPTA7IGs8dG5zSW5mby0+b3JkZXJbaV07IGsrKyApIHsKKyAgICAgICAgICAgIGNvdW50ICs9IGNvZWZCaXRzOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQ0KKyAgCisgIHJldHVybiBjb3VudDsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogY291bnRUbnNCaXRzCisqIGRlc2NyaXB0aW9uOiAgIGNvdW50IHRucyBiaXQgZGVtYW5kICAKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgV29yZDE2IGNvdW50VG5zQml0cyhUTlNfSU5GTyAqdG5zSW5mbyxXb3JkMTYgYmxvY2tUeXBlKQoreworICByZXR1cm4odG5zQ291bnQodG5zSW5mbywgYmxvY2tUeXBlKSk7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogY291bnRTdGF0aWNCaXRkZW1hbmQKKyogZGVzY3JpcHRpb246ICAgY291bnQgc3RhdGljIGJpdCBkZW1hbmQgaW5jbHVkZSB0bnMgIAorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK1dvcmQxNiBjb3VudFN0YXRpY0JpdGRlbWFuZChQU1lfT1VUX0NIQU5ORUwgcHN5T3V0Q2hhbm5lbFtNQVhfQ0hBTk5FTFNdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBTWV9PVVRfRUxFTUVOVCAqcHN5T3V0RWxlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgY2hhbm5lbHMsIA0KKwkJCQkJCQlXb3JkMTYgYWR0c1VzZWQpCit7CisgIFdvcmQzMiBzdGF0Qml0czsKKyAgV29yZDMyIGNoOworICAKKyAgc3RhdEJpdHMgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorDQorICAvKiBpZiBhZHRzIHVzZWQsIGFkZCA1NiBiaXRzICovCisgIGlmKGFkdHNVc2VkKSBzdGF0Qml0cyArPSA1NjsKKworICAgCisgIHN3aXRjaCAoY2hhbm5lbHMpIHsKKyAgICBjYXNlIDE6CisgICAgICBzdGF0Qml0cyArPSBTSV9JRF9CSVRTK1NJX1NDRV9CSVRTK1NJX0lDU19CSVRTOworICAgICAgc3RhdEJpdHMgKz0gY291bnRUbnNCaXRzKCYocHN5T3V0Q2hhbm5lbFswXS50bnNJbmZvKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwc3lPdXRDaGFubmVsWzBdLndpbmRvd1NlcXVlbmNlKTsKKyAgICAgICAKKyAgICAgIHN3aXRjaChwc3lPdXRDaGFubmVsWzBdLndpbmRvd1NlcXVlbmNlKXsKKyAgICAgICAgY2FzZSBMT05HX1dJTkRPVzoKKyAgICAgICAgY2FzZSBTVEFSVF9XSU5ET1c6CisgICAgICAgIGNhc2UgU1RPUF9XSU5ET1c6CisgICAgICAgICAgc3RhdEJpdHMgKz0gU0lfSUNTX0lORk9fQklUU19MT05HOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFNIT1JUX1dJTkRPVzoKKyAgICAgICAgICBzdGF0Qml0cyArPSBTSV9JQ1NfSU5GT19CSVRTX1NIT1JUOworICAgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgYnJlYWs7CisgICAgY2FzZSAyOgorICAgICAgc3RhdEJpdHMgKz0gU0lfSURfQklUUytTSV9DUEVfQklUUysyKlNJX0lDU19CSVRTOworCisgICAgICBzdGF0Qml0cyArPSBTSV9DUEVfTVNfTUFTS19CSVRTOworICAgICAgc3RhdEJpdHMgKz0gY291bnRNc01hc2tCaXRzKHBzeU91dENoYW5uZWxbMF0uc2ZiQ250LAorCQkJCQkJCQkgIHBzeU91dENoYW5uZWxbMF0uc2ZiUGVyR3JvdXAsCisJCQkJCQkJCSAgcHN5T3V0Q2hhbm5lbFswXS5tYXhTZmJQZXJHcm91cCwKKwkJCQkJCQkJICAmcHN5T3V0RWxlbWVudC0+dG9vbHNJbmZvKTsKKyAgICAgICAKKyAgICAgIHN3aXRjaCAocHN5T3V0Q2hhbm5lbFswXS53aW5kb3dTZXF1ZW5jZSkgeworICAgICAgICBjYXNlIExPTkdfV0lORE9XOgorICAgICAgICBjYXNlIFNUQVJUX1dJTkRPVzoKKyAgICAgICAgY2FzZSBTVE9QX1dJTkRPVzoKKyAgICAgICAgICBzdGF0Qml0cyArPSBTSV9JQ1NfSU5GT19CSVRTX0xPTkc7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgU0hPUlRfV0lORE9XOgorICAgICAgICAgIHN0YXRCaXRzICs9IFNJX0lDU19JTkZPX0JJVFNfU0hPUlQ7CisgICAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBmb3IoY2g9MDsgY2g8MjsgY2grKykKKyAgICAgICAgc3RhdEJpdHMgKz0gY291bnRUbnNCaXRzKCYocHN5T3V0Q2hhbm5lbFtjaF0udG5zSW5mbyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwc3lPdXRDaGFubmVsW2NoXS53aW5kb3dTZXF1ZW5jZSk7CisgICAgICBicmVhazsKKyAgfQorCisgIHJldHVybiBzdGF0Qml0czsKK30KKwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvdG5zLmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy90bnMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmQ4OTBlCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvdG5zLmMKQEAgLTAsMCArMSw5MzIgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCXRucy5jDQorDQorCUNvbnRlbnQ6CURlZmluaXRpb24gVE5TIHRvb2xzIGZ1bmN0aW9ucw0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpbmNsdWRlICJiYXNpY19vcC5oIg0KKyNpbmNsdWRlICJvcGVyXzMyYi5oIg0KKyNpbmNsdWRlICJhc3NlcnQuaCIKKyNpbmNsdWRlICJhYWNfcm9tLmgiCisjaW5jbHVkZSAicHN5X2NvbnN0LmgiCisjaW5jbHVkZSAidG5zLmgiCisjaW5jbHVkZSAidG5zX3BhcmFtLmgiCisjaW5jbHVkZSAicHN5X2NvbmZpZ3VyYXRpb24uaCIKKyNpbmNsdWRlICJ0bnNfZnVuYy5oIgorCisjZGVmaW5lIFROU19NT0RJRllfQkVHSU4gICAgICAgICAyNjAwICAvKiBIeiAqLworI2RlZmluZSBSQVRJT19QQVRDSF9MT1dFUl9CT1JERVIgMzgwICAgLyogSHogKi8KKyNkZWZpbmUgVE5TX0dBSU5fVEhSRVNICQkJIDE0MSAgIC8qIDEuNDEqMTAwICovDQorI2RlZmluZSBOT1JNX0NPRUYJCQkJIDB4MDI4ZjVjMjgNCisKK3N0YXRpYyBjb25zdCBXb3JkMzIgVE5TX1BBUkNPUl9USFJFU0ggPSAweDBjY2NjY2NkOyAvKiAwLjEqKDEgPDwgMzEpICovDQorLyogTGltaXQgYmFuZHMgdG8gPiAyLjAga0h6ICovDQorc3RhdGljIHVuc2lnbmVkIHNob3J0IHRuc01pbkJhbmROdW1iZXJMb25nWzEyXSA9DQoreyAxMSwgMTIsIDE1LCAxNiwgMTcsIDIwLCAyNSwgMjYsIDI0LCAyOCwgMzAsIDMxIH07DQorc3RhdGljIHVuc2lnbmVkIHNob3J0IHRuc01pbkJhbmROdW1iZXJTaG9ydFsxMl0gPQ0KK3sgMiwgMiwgMiwgMywgMywgNCwgNiwgNiwgOCwgMTAsIDEwLCAxMiB9Ow0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisvKiBNYWluL0xvdyBQcm9maWxlIFROUyBQYXJhbWV0ZXJzICAgICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK3N0YXRpYyB1bnNpZ25lZCBzaG9ydCB0bnNNYXhCYW5kc0xvbmdNYWluTG93WzEyXSA9DQoreyAzMSwgMzEsIDM0LCA0MCwgNDIsIDUxLCA0NiwgNDYsIDQyLCA0MiwgNDIsIDM5IH07DQorDQorc3RhdGljIHVuc2lnbmVkIHNob3J0IHRuc01heEJhbmRzU2hvcnRNYWluTG93WzEyXSA9DQoreyA5LCA5LCAxMCwgMTQsIDE0LCAxNCwgMTQsIDE0LCAxNCwgMTQsIDE0LCAxNCB9OworCisKK3N0YXRpYyB2b2lkIENhbGNXZWlnaHRlZFNwZWN0cnVtKGNvbnN0IFdvcmQzMiBzcGVjdHJ1bVtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IHdlaWdodGVkU3BlY3RydW1bXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQzMiogc2ZiRW5lcmd5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2KiBzZmJPZmZzZXQsIFdvcmQxNiBscGNTdGFydExpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgbHBjU3RvcExpbmUsIFdvcmQxNiBscGNTdGFydEJhbmQsV29yZDE2IGxwY1N0b3BCYW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDMyICpwV29yazMyKTsKKworCisKK3ZvaWQgQXV0b0NvcnJlbGF0aW9uKGNvbnN0IFdvcmQxNiBpbnB1dFtdLCBXb3JkMzIgY29ycltdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiBzYW1wbGVzLCBXb3JkMTYgY29yckNvZWZmKTsKK3N0YXRpYyBXb3JkMTYgQXV0b1RvUGFyY29yKFdvcmQzMiB3b3JrQnVmZmVyW10sIFdvcmQzMiByZWZsQ29lZmZbXSwgV29yZDE2IG51bU9mQ29lZmYpOworCitzdGF0aWMgV29yZDE2IENhbGNUbnNGaWx0ZXIoY29uc3QgV29yZDE2KiBzaWduYWwsIGNvbnN0IFdvcmQzMiB3aW5kb3dbXSwgV29yZDE2IG51bU9mTGluZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IHRuc09yZGVyLCBXb3JkMzIgcGFyY29yW10pOworCisKK3N0YXRpYyB2b2lkIFBhcmNvcjJJbmRleChjb25zdCBXb3JkMzIgcGFyY29yW10sIFdvcmQxNiBpbmRleFtdLCBXb3JkMTYgb3JkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IGJpdHNQZXJDb2VmZik7CisKK3N0YXRpYyB2b2lkIEluZGV4MlBhcmNvcihjb25zdCBXb3JkMTYgaW5kZXhbXSwgV29yZDMyIHBhcmNvcltdLCBXb3JkMTYgb3JkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IGJpdHNQZXJDb2VmZik7CisKKworCitzdGF0aWMgdm9pZCBBbmFseXNpc0ZpbHRlckxhdHRpY2UoY29uc3QgV29yZDMyIHNpZ25hbFtdLCBXb3JkMTYgbnVtT2ZMaW5lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMzIgcGFyQ29lZmZbXSwgV29yZDE2IG9yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQzMiBvdXRwdXRbXSk7CisKKworLyoqCisqCisqIGZ1bmN0aW9uIG5hbWU6IEZyZXFUb0JhbmRXaXRoUm91bmRpbmcKKyogZGVzY3JpcHRpb246ICBSZXRyaWV2ZSBpbmRleCBvZiBuZWFyZXN0IGJhbmQgYm9yZGVyCisqIHJldHVybnQ6CQlpbmRleAorKgorKi8KK3N0YXRpYyBXb3JkMTYgRnJlcVRvQmFuZFdpdGhSb3VuZGluZyhXb3JkMzIgZnJlcSwgICAgICAgICAgICAgICAgICAgLyohPCBmcmVxdWVuY3kgaW4gSGVydHogKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMzIgZnMsICAgICAgICAgICAgICAgICAgICAgLyohPCBTYW1wbGluZyBmcmVxdWVuY3kgaW4gSGVydHogKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgbnVtT2ZCYW5kcywgICAgICAgICAgICAgLyohPCB0b3RhbCBudW1iZXIgb2YgYmFuZHMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgKmJhbmRTdGFydE9mZnNldCkgLyohPCB0YWJsZSBvZiBiYW5kIGJvcmRlcnMgKi8KK3sKKyAgV29yZDMyIGxpbmVOdW1iZXIsIGJhbmQ7CisgIFdvcmQzMiB0ZW1wLCBzaGlmdDsKKworICAvKiAgYXNzZXJ0KGZyZXEgPj0gMCk7ICAqLworICBzaGlmdCA9IG5vcm1fbChmcyk7CisgIGxpbmVOdW1iZXIgPSAoZXh0cmFjdF9sKGZpeG11bCgoYmFuZFN0YXJ0T2Zmc2V0W251bU9mQmFuZHNdIDw8IDIpLERpdl8zMihmcmVxIDw8IHNoaWZ0LGZzIDw8IHNoaWZ0KSkpICsgMSkgPj4gMTsKKyAKKyAgLyogZnJlcSA+IGZzLzIgKi8KKyAgdGVtcCA9IGxpbmVOdW1iZXIgLSBiYW5kU3RhcnRPZmZzZXRbbnVtT2ZCYW5kc10gOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIGlmICh0ZW1wID49IDApCisgICAgcmV0dXJuIG51bU9mQmFuZHM7CisKKyAgLyogZmluZCBiYW5kIHRoZSBsaW5lIG51bWJlciBsaWVzIGluICovCisgIGZvciAoYmFuZD0wOyBiYW5kPG51bU9mQmFuZHM7IGJhbmQrKykgeworICAgIHRlbXAgPSBiYW5kU3RhcnRPZmZzZXRbYmFuZCArIDFdIC0gbGluZU51bWJlcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgaWYgKHRlbXAgPiAwKSBicmVhazsKKyAgfQorCisgIHRlbXAgPSAobGluZU51bWJlciAtIGJhbmRTdGFydE9mZnNldFtiYW5kXSk7CisgIHRlbXAgPSAodGVtcCAtIChiYW5kU3RhcnRPZmZzZXRbYmFuZCArIDFdIC0gbGluZU51bWJlcikpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIGlmICggdGVtcCA+IDAgKQorICB7CisgICAgYmFuZCA9IGJhbmQgKyAxOworICB9CisKKyAgcmV0dXJuIGV4dHJhY3RfbChiYW5kKTsKK30KKworCisvKioKKyoKKyogZnVuY3Rpb24gbmFtZTogSW5pdFRuc0NvbmZpZ3VyYXRpb25Mb25nCisqIGRlc2NyaXB0aW9uOiAgRmlsbCBUTlNfQ09ORklHIHN0cnVjdHVyZSB3aXRoIHNlbnNpYmxlIGNvbnRlbnQgZm9yIGxvbmcgYmxvY2tzCisqIHJldHVybnM6CQkwIGlmIHN1Y2Nlc3MKKyoKKyovCitXb3JkMTYgSW5pdFRuc0NvbmZpZ3VyYXRpb25Mb25nKFdvcmQzMiBiaXRSYXRlLCAgICAgICAgICAvKiE8IGJpdHJhdGUgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDMyIHNhbXBsZVJhdGUsICAgICAgICAgIC8qITwgU2FtcGxpbmcgZnJlcXVlbmN5ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiBjaGFubmVscywgICAgICAgICAgICAvKiE8IG51bWJlciBvZiBjaGFubmVscyAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUTlNfQ09ORklHICp0QywgICAgICAgICAgICAgLyohPCBUTlMgQ29uZmlnIHN0cnVjdCAobW9kaWZpZWQpICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBTWV9DT05GSUdVUkFUSU9OX0xPTkcgKnBDLCAvKiE8IHBzeSBjb25maWcgc3RydWN0ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiBhY3RpdmUpICAgICAgICAgICAgICAvKiE8IHRucyBhY3RpdmUgZmxhZyAqLworeworCisgIFdvcmQzMiBiaXRyYXRlUGVyQ2hhbm5lbDsKKyAgdEMtPm1heE9yZGVyICAgICA9IFROU19NQVhfT1JERVI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICB0Qy0+dG5zU3RhcnRGcmVxID0gMTI3NTsKKyAgdEMtPmNvZWZSZXMgICAgICA9IDQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIAorICAvKiB0byBhdm9pZCBpbnRlZ2VyIGRpdmlzaW9uICovCisgIGlmICggc3ViKGNoYW5uZWxzLDIpID09IDAgKSB7IAorICAgIGJpdHJhdGVQZXJDaGFubmVsID0gYml0UmF0ZSA+PiAxOyAgICAKKyAgfQorICBlbHNlIHsKKyAgICBiaXRyYXRlUGVyQ2hhbm5lbCA9IGJpdFJhdGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgfQorCisgIHRDLT50bnNNYXhTZmIgPSB0bnNNYXhCYW5kc0xvbmdNYWluTG93W3BDLT5zYW1wUmF0ZUlkeF07CisKKyAgdEMtPnRuc0FjdGl2ZSA9IGFjdGl2ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICAvKiBub3cgY2FsYyBiYW5kIGFuZCBsaW5lIGJvcmRlcnMgKi8KKyAgdEMtPnRuc1N0b3BCYW5kID0gbWluKHBDLT5zZmJDbnQsIHRDLT50bnNNYXhTZmIpOworICB0Qy0+dG5zU3RvcExpbmUgPSBwQy0+c2ZiT2Zmc2V0W3RDLT50bnNTdG9wQmFuZF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgIHRDLT50bnNTdGFydEJhbmQgPSBGcmVxVG9CYW5kV2l0aFJvdW5kaW5nKHRDLT50bnNTdGFydEZyZXEsIHNhbXBsZVJhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBDLT5zZmJDbnQsIChjb25zdCBXb3JkMTYqKXBDLT5zZmJPZmZzZXQpOworCisgIHRDLT50bnNNb2RpZnlCZWdpbkNiID0gRnJlcVRvQmFuZFdpdGhSb3VuZGluZyhUTlNfTU9ESUZZX0JFR0lOLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlUmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBDLT5zZmJDbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgV29yZDE2KilwQy0+c2ZiT2Zmc2V0KTsKKworICB0Qy0+dG5zUmF0aW9QYXRjaExvd2VzdENiID0gRnJlcVRvQmFuZFdpdGhSb3VuZGluZyhSQVRJT19QQVRDSF9MT1dFUl9CT1JERVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhbXBsZVJhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBDLT5zZmJDbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBXb3JkMTYqKXBDLT5zZmJPZmZzZXQpOworCisKKyAgdEMtPnRuc1N0YXJ0TGluZSA9IHBDLT5zZmJPZmZzZXRbdEMtPnRuc1N0YXJ0QmFuZF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgIHRDLT5scGNTdG9wQmFuZCA9IHRuc01heEJhbmRzTG9uZ01haW5Mb3dbcEMtPnNhbXBSYXRlSWR4XTsKKyAgdEMtPmxwY1N0b3BCYW5kID0gbWluKHRDLT5scGNTdG9wQmFuZCwgcEMtPnNmYkFjdGl2ZSk7CisKKyAgdEMtPmxwY1N0b3BMaW5lID0gcEMtPnNmYk9mZnNldFt0Qy0+bHBjU3RvcEJhbmRdOyAgIA0KKyAgDQorICB0Qy0+bHBjU3RhcnRCYW5kID0gdG5zTWluQmFuZE51bWJlckxvbmdbcEMtPnNhbXBSYXRlSWR4XTsKKworICB0Qy0+bHBjU3RhcnRMaW5lID0gcEMtPnNmYk9mZnNldFt0Qy0+bHBjU3RhcnRCYW5kXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgIHRDLT50aHJlc2hvbGQgPSBUTlNfR0FJTl9USFJFU0g7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisKKyAgcmV0dXJuKDApOworfQorCisvKioKKyoKKyogZnVuY3Rpb24gbmFtZTogSW5pdFRuc0NvbmZpZ3VyYXRpb25TaG9ydAorKiBkZXNjcmlwdGlvbjogIEZpbGwgVE5TX0NPTkZJRyBzdHJ1Y3R1cmUgd2l0aCBzZW5zaWJsZSBjb250ZW50IGZvciBzaG9ydCBibG9ja3MKKyogcmV0dXJuczoJCTAgaWYgc3VjY2VzcworKgorKi8KK1dvcmQxNiBJbml0VG5zQ29uZmlndXJhdGlvblNob3J0KFdvcmQzMiBiaXRSYXRlLCAgICAgICAgICAgICAgLyohPCBiaXRyYXRlICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMzIgc2FtcGxlUmF0ZSwgICAgICAgICAgIC8qITwgU2FtcGxpbmcgZnJlcXVlbmN5ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgY2hhbm5lbHMsICAgICAgICAgICAgIC8qITwgbnVtYmVyIG9mIGNoYW5uZWxzICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUTlNfQ09ORklHICp0QywgICAgICAgICAgICAgIC8qITwgVE5TIENvbmZpZyBzdHJ1Y3QgKG1vZGlmaWVkKSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFNZX0NPTkZJR1VSQVRJT05fU0hPUlQgKnBDLCAvKiE8IHBzeSBjb25maWcgc3RydWN0ICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgYWN0aXZlKSAgICAgICAgICAgICAgIC8qITwgdG5zIGFjdGl2ZSBmbGFnICovCit7CisgIFdvcmQzMiBiaXRyYXRlUGVyQ2hhbm5lbDsKKyAgdEMtPm1heE9yZGVyICAgICA9IFROU19NQVhfT1JERVJfU0hPUlQ7CisgIHRDLT50bnNTdGFydEZyZXEgPSAyNzUwOworICB0Qy0+Y29lZlJlcyAgICAgID0gMzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgCisgIC8qIHRvIGF2b2lkIGludGVnZXIgZGl2aXNpb24gKi8KKyAgaWYgKCBzdWIoY2hhbm5lbHMsMikgPT0gMCApIHsKKyAgICBiaXRyYXRlUGVyQ2hhbm5lbCA9IExfc2hyKGJpdFJhdGUsMSk7ICAgIAorICB9CisgIGVsc2UgeworICAgIGJpdHJhdGVQZXJDaGFubmVsID0gYml0UmF0ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICB9CisKKyAgdEMtPnRuc01heFNmYiA9IHRuc01heEJhbmRzU2hvcnRNYWluTG93W3BDLT5zYW1wUmF0ZUlkeF07CisKKyAgdEMtPnRuc0FjdGl2ZSA9IGFjdGl2ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICAvKiBub3cgY2FsYyBiYW5kIGFuZCBsaW5lIGJvcmRlcnMgKi8KKyAgdEMtPnRuc1N0b3BCYW5kID0gbWluKHBDLT5zZmJDbnQsIHRDLT50bnNNYXhTZmIpOworICB0Qy0+dG5zU3RvcExpbmUgPSBwQy0+c2ZiT2Zmc2V0W3RDLT50bnNTdG9wQmFuZF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgIHRDLT50bnNTdGFydEJhbmQ9RnJlcVRvQmFuZFdpdGhSb3VuZGluZyh0Qy0+dG5zU3RhcnRGcmVxLCBzYW1wbGVSYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcEMtPnNmYkNudCwgKGNvbnN0IFdvcmQxNiopcEMtPnNmYk9mZnNldCk7CisKKyAgdEMtPnRuc01vZGlmeUJlZ2luQ2IgPSBGcmVxVG9CYW5kV2l0aFJvdW5kaW5nKFROU19NT0RJRllfQkVHSU4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzYW1wbGVSYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcEMtPnNmYkNudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBXb3JkMTYqKXBDLT5zZmJPZmZzZXQpOworCisgIHRDLT50bnNSYXRpb1BhdGNoTG93ZXN0Q2IgPSBGcmVxVG9CYW5kV2l0aFJvdW5kaW5nKFJBVElPX1BBVENIX0xPV0VSX0JPUkRFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2FtcGxlUmF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcEMtPnNmYkNudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IFdvcmQxNiopcEMtPnNmYk9mZnNldCk7CisKKworICB0Qy0+dG5zU3RhcnRMaW5lID0gcEMtPnNmYk9mZnNldFt0Qy0+dG5zU3RhcnRCYW5kXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgIHRDLT5scGNTdG9wQmFuZCA9IHRuc01heEJhbmRzU2hvcnRNYWluTG93W3BDLT5zYW1wUmF0ZUlkeF07DQorCisgIHRDLT5scGNTdG9wQmFuZCA9IG1pbih0Qy0+bHBjU3RvcEJhbmQsIHBDLT5zZmJBY3RpdmUpOworCisgIHRDLT5scGNTdG9wTGluZSA9IHBDLT5zZmJPZmZzZXRbdEMtPmxwY1N0b3BCYW5kXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgdEMtPmxwY1N0YXJ0QmFuZCA9IHRuc01pbkJhbmROdW1iZXJTaG9ydFtwQy0+c2FtcFJhdGVJZHhdOw0KKworICB0Qy0+bHBjU3RhcnRMaW5lID0gcEMtPnNmYk9mZnNldFt0Qy0+bHBjU3RhcnRCYW5kXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgIHRDLT50aHJlc2hvbGQgPSBUTlNfR0FJTl9USFJFU0g7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgIHJldHVybigwKTsKK30KKworLyoqCisqCisqIGZ1bmN0aW9uIG5hbWU6IFRuc0RldGVjdAorKiBkZXNjcmlwdGlvbjogIENhbGN1bGF0ZSBUTlMgZmlsdGVyIGFuZCBkZWNpZGUgb24gVE5TIHVzYWdlIAorKiByZXR1cm5zOgkJMCBpZiBzdWNjZXNzCisqCisqLworV29yZDMyIFRuc0RldGVjdChUTlNfREFUQSogdG5zRGF0YSwgICAgICAgIC8qITwgdG5zIGRhdGEgc3RydWN0dXJlIChtb2RpZmllZCkgKi8KKyAgICAgICAgICAgICAgICAgVE5TX0NPTkZJRyB0QywgICAgICAgICAgICAvKiE8IHRucyBjb25maWcgc3RydWN0dXJlICovCisgICAgICAgICAgICAgICAgIFdvcmQzMiogcFNjcmF0Y2hUbnMsICAgICAgLyohPCBwb2ludGVyIHRvIHNjcmF0Y2ggc3BhY2UgKi8KKyAgICAgICAgICAgICAgICAgY29uc3QgV29yZDE2IHNmYk9mZnNldFtdLCAvKiE8IHNjYWxlZmFjdG9yIHNpemUgYW5kIHRhYmxlICovCisgICAgICAgICAgICAgICAgIFdvcmQzMiogc3BlY3RydW0sICAgICAgICAgLyohPCBzcGVjdHJhbCBkYXRhICovCisgICAgICAgICAgICAgICAgIFdvcmQxNiBzdWJCbG9ja051bWJlciwgICAgLyohPCBzdWJibG9jayBudW0gKi8KKyAgICAgICAgICAgICAgICAgV29yZDE2IGJsb2NrVHlwZSwgICAgICAgICAvKiE8IGJsb2NrdHlwZSAobG9uZyBvciBzaG9ydCkgKi8KKyAgICAgICAgICAgICAgICAgV29yZDMyICogc2ZiRW5lcmd5KSAgICAgICAvKiE8IHNmYi13aXNlIGVuZXJneSAqLworeworCisgIFdvcmQzMiAgcHJlZGljdGlvbkdhaW47CisgIFdvcmQzMiAgdGVtcDsKKyAgV29yZDMyKiBwV29yazMyID0gJnBTY3JhdGNoVG5zW3N1YkJsb2NrTnVtYmVyID4+IDhdOworICBXb3JkMTYqIHBXZWlnaHRlZFNwZWN0cnVtID0gKFdvcmQxNiAqKSZwU2NyYXRjaFRuc1tzdWJCbG9ja051bWJlciA+PiA4XTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBpZiAodEMudG5zQWN0aXZlKSB7CisgICAgQ2FsY1dlaWdodGVkU3BlY3RydW0oc3BlY3RydW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgcFdlaWdodGVkU3BlY3RydW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgc2ZiRW5lcmd5LAorICAgICAgICAgICAgICAgICAgICAgICAgIHNmYk9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0Qy5scGNTdGFydExpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgdEMubHBjU3RvcExpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgdEMubHBjU3RhcnRCYW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgIHRDLmxwY1N0b3BCYW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgIHBXb3JrMzIpOworCisgICAgdGVtcCA9IGJsb2NrVHlwZSAtIFNIT1JUX1dJTkRPVzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgaWYgKCB0ZW1wICE9IDAgKSB7CisgICAgICAgIHByZWRpY3Rpb25HYWluID0gQ2FsY1Ruc0ZpbHRlciggJnBXZWlnaHRlZFNwZWN0cnVtW3RDLmxwY1N0YXJ0TGluZV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdEMuYWNmV2luZG93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRDLmxwY1N0b3BMaW5lIC0gdEMubHBjU3RhcnRMaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRDLm1heE9yZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRuc0RhdGEtPmRhdGFSYXcudG5zTG9uZy5zdWJCbG9ja0luZm8ucGFyY29yKTsKKworCisgICAgICAgIHRlbXAgPSBwcmVkaWN0aW9uR2FpbiAtIHRDLnRocmVzaG9sZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBpZiAoIHRlbXAgPiAwICkgeworICAgICAgICAgIHRuc0RhdGEtPmRhdGFSYXcudG5zTG9uZy5zdWJCbG9ja0luZm8udG5zQWN0aXZlID0gMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHRuc0RhdGEtPmRhdGFSYXcudG5zTG9uZy5zdWJCbG9ja0luZm8udG5zQWN0aXZlID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICB9CisKKyAgICAgICAgdG5zRGF0YS0+ZGF0YVJhdy50bnNMb25nLnN1YkJsb2NrSW5mby5wcmVkaWN0aW9uR2FpbiA9IHByZWRpY3Rpb25HYWluOyAgICAgICAgICAgICAgICAgICAgICAKKyAgICB9CisgICAgZWxzZXsKKworICAgICAgICBwcmVkaWN0aW9uR2FpbiA9IENhbGNUbnNGaWx0ZXIoICZwV2VpZ2h0ZWRTcGVjdHJ1bVt0Qy5scGNTdGFydExpbmVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRDLmFjZldpbmRvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Qy5scGNTdG9wTGluZSAtIHRDLmxwY1N0YXJ0TGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Qy5tYXhPcmRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bnNEYXRhLT5kYXRhUmF3LnRuc1Nob3J0LnN1YkJsb2NrSW5mb1tzdWJCbG9ja051bWJlcl0ucGFyY29yKTsKKworICAgICAgICB0ZW1wID0gcHJlZGljdGlvbkdhaW4gLSB0Qy50aHJlc2hvbGQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBpZiAoIHRlbXAgPiAwICkgeworICAgICAgICAgIHRuc0RhdGEtPmRhdGFSYXcudG5zU2hvcnQuc3ViQmxvY2tJbmZvW3N1YkJsb2NrTnVtYmVyXS50bnNBY3RpdmUgPSAxOyAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgIHRuc0RhdGEtPmRhdGFSYXcudG5zU2hvcnQuc3ViQmxvY2tJbmZvW3N1YkJsb2NrTnVtYmVyXS50bnNBY3RpdmUgPSAwOyAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICB9CisKKyAgICAgICAgdG5zRGF0YS0+ZGF0YVJhdy50bnNTaG9ydC5zdWJCbG9ja0luZm9bc3ViQmxvY2tOdW1iZXJdLnByZWRpY3Rpb25HYWluID0gcHJlZGljdGlvbkdhaW47ICAgICAKKyAgICB9CisKKyAgfQorICBlbHNleworCisgICAgdGVtcCA9IGJsb2NrVHlwZSAtIFNIT1JUX1dJTkRPVzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgaWYgKCB0ZW1wICE9IDAgKSB7CisgICAgICAgIHRuc0RhdGEtPmRhdGFSYXcudG5zTG9uZy5zdWJCbG9ja0luZm8udG5zQWN0aXZlID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIHRuc0RhdGEtPmRhdGFSYXcudG5zTG9uZy5zdWJCbG9ja0luZm8ucHJlZGljdGlvbkdhaW4gPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgfQorICAgIGVsc2UgeworICAgICAgICB0bnNEYXRhLT5kYXRhUmF3LnRuc1Nob3J0LnN1YkJsb2NrSW5mb1tzdWJCbG9ja051bWJlcl0udG5zQWN0aXZlID0gMDsgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICB0bnNEYXRhLT5kYXRhUmF3LnRuc1Nob3J0LnN1YkJsb2NrSW5mb1tzdWJCbG9ja051bWJlcl0ucHJlZGljdGlvbkdhaW4gPSAwOyAgICAgICAgICAgICAgICAgIAorICAgIH0KKyAgfQorCisgIHJldHVybigwKTsKK30KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogVG5zU3luYworKiBkZXNjcmlwdGlvbjogdXBkYXRlIHRucyBwYXJhbWV0ZXIKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordm9pZCBUbnNTeW5jKFROU19EQVRBICp0bnNEYXRhRGVzdCwKKyAgICAgICAgICAgICBjb25zdCBUTlNfREFUQSAqdG5zRGF0YVNyYywKKyAgICAgICAgICAgICBjb25zdCBUTlNfQ09ORklHIHRDLAorICAgICAgICAgICAgIGNvbnN0IFdvcmQxNiBzdWJCbG9ja051bWJlciwKKyAgICAgICAgICAgICBjb25zdCBXb3JkMTYgYmxvY2tUeXBlKQoreworICAgVE5TX1NVQkJMT0NLX0lORk8gKnNiSW5mb0Rlc3Q7CisgICBjb25zdCBUTlNfU1VCQkxPQ0tfSU5GTyAqc2JJbmZvU3JjOworICAgV29yZDMyIGksIHRlbXA7CisKKyAgIHRlbXAgPSAgYmxvY2tUeXBlIC0gU0hPUlRfV0lORE9XOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICBpZiAoIHRlbXAgIT0gMCApIHsKKyAgICAgIHNiSW5mb0Rlc3QgPSAmdG5zRGF0YURlc3QtPmRhdGFSYXcudG5zTG9uZy5zdWJCbG9ja0luZm87ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgIHNiSW5mb1NyYyAgPSAmdG5zRGF0YVNyYy0+ZGF0YVJhdy50bnNMb25nLnN1YkJsb2NrSW5mbzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgIH0KKyAgIGVsc2UgeworICAgICAgc2JJbmZvRGVzdCA9ICZ0bnNEYXRhRGVzdC0+ZGF0YVJhdy50bnNTaG9ydC5zdWJCbG9ja0luZm9bc3ViQmxvY2tOdW1iZXJdOyAgICAgICAgICAgICAgICAgICAgIAorICAgICAgc2JJbmZvU3JjICA9ICZ0bnNEYXRhU3JjLT5kYXRhUmF3LnRuc1Nob3J0LnN1YkJsb2NrSW5mb1tzdWJCbG9ja051bWJlcl07ICAgICAgICAgICAgICAgICAgICAgIAorICAgfQorCisgICBpZiAoMTAwKmFic19zKHNiSW5mb0Rlc3QtPnByZWRpY3Rpb25HYWluIC0gc2JJbmZvU3JjLT5wcmVkaWN0aW9uR2FpbikgPAorICAgICAgICgzICogc2JJbmZvRGVzdC0+cHJlZGljdGlvbkdhaW4pKSB7CisgICAgICBzYkluZm9EZXN0LT50bnNBY3RpdmUgPSBzYkluZm9TcmMtPnRuc0FjdGl2ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICBmb3IgKCBpPTA7IGk8IHRDLm1heE9yZGVyOyBpKyspIHsKKyAgICAgICAgc2JJbmZvRGVzdC0+cGFyY29yW2ldID0gc2JJbmZvU3JjLT5wYXJjb3JbaV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgIH0KKyAgIH0KK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IFRuc0VuY29kZQorKiBkZXNjcmlwdGlvbjogZG8gVE5TIGZpbHRlcmluZworKiByZXR1cm5zOiAgICAgMCBpZiBzdWNjZXNzCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK1dvcmQxNiBUbnNFbmNvZGUoVE5TX0lORk8qIHRuc0luZm8sICAgICAvKiE8IHRucyBpbmZvIHN0cnVjdHVyZSAobW9kaWZpZWQpICovCisgICAgICAgICAgICAgICAgIFROU19EQVRBKiB0bnNEYXRhLCAgICAgLyohPCB0bnMgZGF0YSBzdHJ1Y3R1cmUgKG1vZGlmaWVkKSAqLworICAgICAgICAgICAgICAgICBXb3JkMTYgbnVtT2ZTZmIsICAgICAgIC8qITwgbnVtYmVyIG9mIHNjYWxlIGZhY3RvciBiYW5kcyAqLworICAgICAgICAgICAgICAgICBUTlNfQ09ORklHIHRDLCAgICAgICAgIC8qITwgdG5zIGNvbmZpZyBzdHJ1Y3R1cmUgKi8KKyAgICAgICAgICAgICAgICAgV29yZDE2IGxvd1Bhc3NMaW5lLCAgICAvKiE8IGxvd3Bhc3MgbGluZSAqLworICAgICAgICAgICAgICAgICBXb3JkMzIqIHNwZWN0cnVtLCAgICAgIC8qITwgc3BlY3RyYWwgZGF0YSAobW9kaWZpZWQpICovCisgICAgICAgICAgICAgICAgIFdvcmQxNiBzdWJCbG9ja051bWJlciwgLyohPCBzdWJibG9jayBudW0gKi8KKyAgICAgICAgICAgICAgICAgV29yZDE2IGJsb2NrVHlwZSkgICAgICAvKiE8IGJsb2NrdHlwZSAobG9uZyBvciBzaG9ydCkgKi8KK3sKKyAgV29yZDMyIGk7CisgIFdvcmQzMiB0ZW1wX3M7CisgIFdvcmQzMiB0ZW1wOw0KKyAgVE5TX1NVQkJMT0NLX0lORk8gKnBzdWJCbG9ja0luZm87CisKKyAgdGVtcF9zID0gYmxvY2tUeXBlIC0gU0hPUlRfV0lORE9XOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgaWYgKCB0ZW1wX3MgIT0gMCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBwc3ViQmxvY2tJbmZvID0gJnRuc0RhdGEtPmRhdGFSYXcudG5zTG9uZy5zdWJCbG9ja0luZm87DQorCWlmIChwc3ViQmxvY2tJbmZvLT50bnNBY3RpdmUgPT0gMCkgeworICAgICAgdG5zSW5mby0+dG5zQWN0aXZlW3N1YkJsb2NrTnVtYmVyXSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgcmV0dXJuKDApOworICAgIH0KKyAgICBlbHNlIHsKKworICAgICAgUGFyY29yMkluZGV4KHBzdWJCbG9ja0luZm8tPnBhcmNvciwKKyAgICAgICAgICAgICAgICAgICB0bnNJbmZvLT5jb2VmLAorICAgICAgICAgICAgICAgICAgIHRDLm1heE9yZGVyLAorICAgICAgICAgICAgICAgICAgIHRDLmNvZWZSZXMpOworCisgICAgICBJbmRleDJQYXJjb3IodG5zSW5mby0+Y29lZiwKKyAgICAgICAgICAgICAgICAgICBwc3ViQmxvY2tJbmZvLT5wYXJjb3IsCisgICAgICAgICAgICAgICAgICAgdEMubWF4T3JkZXIsCisgICAgICAgICAgICAgICAgICAgdEMuY29lZlJlcyk7CisKKyAgICAgIGZvciAoaT10Qy5tYXhPcmRlciAtIDE7IGk+PTA7IGktLSkgIHsKKyAgICAgICAgdGVtcCA9IHBzdWJCbG9ja0luZm8tPnBhcmNvcltpXSAtIFROU19QQVJDT1JfVEhSRVNIOyAgICAgICAgIAorICAgICAgICBpZiAoIHRlbXAgPiAwICkKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgdGVtcCA9IHBzdWJCbG9ja0luZm8tPnBhcmNvcltpXSArIFROU19QQVJDT1JfVEhSRVNIOyAgICAgICAgIAorICAgICAgICBpZiAoIHRlbXAgPCAwICkKKyAgICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIHRuc0luZm8tPm9yZGVyW3N1YkJsb2NrTnVtYmVyXSA9IGkgKyAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworCisgICAgICB0bnNJbmZvLT50bnNBY3RpdmVbc3ViQmxvY2tOdW1iZXJdID0gMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICBmb3IgKGk9c3ViQmxvY2tOdW1iZXIrMTsgaTxUUkFOU19GQUM7IGkrKykgeworICAgICAgICB0bnNJbmZvLT50bnNBY3RpdmVbaV0gPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgfQorICAgICAgdG5zSW5mby0+Y29lZlJlc1tzdWJCbG9ja051bWJlcl0gPSB0Qy5jb2VmUmVzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgdG5zSW5mby0+bGVuZ3RoW3N1YkJsb2NrTnVtYmVyXSA9IG51bU9mU2ZiIC0gdEMudG5zU3RhcnRCYW5kOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisKKyAgICAgIEFuYWx5c2lzRmlsdGVyTGF0dGljZSgmKHNwZWN0cnVtW3RDLnRuc1N0YXJ0TGluZV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChtaW4odEMudG5zU3RvcExpbmUsbG93UGFzc0xpbmUpIC0gdEMudG5zU3RhcnRMaW5lKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwc3ViQmxvY2tJbmZvLT5wYXJjb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG5zSW5mby0+b3JkZXJbc3ViQmxvY2tOdW1iZXJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICYoc3BlY3RydW1bdEMudG5zU3RhcnRMaW5lXSkpOworCisgICAgfQorICB9ICAgICAvKiBpZiAoYmxvY2tUeXBlIT1TSE9SVF9XSU5ET1cpICovCisgIGVsc2UgLypzaG9ydCBibG9jayovIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgcHN1YkJsb2NrSW5mbyA9ICZ0bnNEYXRhLT5kYXRhUmF3LnRuc1Nob3J0LnN1YkJsb2NrSW5mb1tzdWJCbG9ja051bWJlcl07DQorCWlmIChwc3ViQmxvY2tJbmZvLT50bnNBY3RpdmUgPT0gMCkgeworICAgICAgdG5zSW5mby0+dG5zQWN0aXZlW3N1YkJsb2NrTnVtYmVyXSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgcmV0dXJuKDApOworICAgIH0KKyAgICBlbHNlIHsKKworICAgICAgUGFyY29yMkluZGV4KHBzdWJCbG9ja0luZm8tPnBhcmNvciwKKyAgICAgICAgICAgICAgICAgICAmdG5zSW5mby0+Y29lZltzdWJCbG9ja051bWJlcipUTlNfTUFYX09SREVSX1NIT1JUXSwKKyAgICAgICAgICAgICAgICAgICB0Qy5tYXhPcmRlciwKKyAgICAgICAgICAgICAgICAgICB0Qy5jb2VmUmVzKTsKKworICAgICAgSW5kZXgyUGFyY29yKCZ0bnNJbmZvLT5jb2VmW3N1YkJsb2NrTnVtYmVyKlROU19NQVhfT1JERVJfU0hPUlRdLAorICAgICAgICAgICAgICAgICAgIHBzdWJCbG9ja0luZm8tPnBhcmNvciwKKyAgICAgICAgICAgICAgICAgICB0Qy5tYXhPcmRlciwKKyAgICAgICAgICAgICAgICAgICB0Qy5jb2VmUmVzKTsKKyAgICAgIGZvciAoaT0odEMubWF4T3JkZXIgLSAxKTsgaT49MDsgaS0tKSAgeworICAgICAgICB0ZW1wID0gcHN1YkJsb2NrSW5mby0+cGFyY29yW2ldIC0gVE5TX1BBUkNPUl9USFJFU0g7ICAgIAorICAgICAgICAgaWYgKCB0ZW1wID4gMCApCisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgdGVtcCA9IHBzdWJCbG9ja0luZm8tPnBhcmNvcltpXSArIFROU19QQVJDT1JfVEhSRVNIOyAgICAKKyAgICAgICAgaWYgKCB0ZW1wIDwgMCApCisgICAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICB0bnNJbmZvLT5vcmRlcltzdWJCbG9ja051bWJlcl0gPSBpICsgMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgICAgIHRuc0luZm8tPnRuc0FjdGl2ZVtzdWJCbG9ja051bWJlcl0gPSAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgIHRuc0luZm8tPmNvZWZSZXNbc3ViQmxvY2tOdW1iZXJdID0gdEMuY29lZlJlczsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgIHRuc0luZm8tPmxlbmd0aFtzdWJCbG9ja051bWJlcl0gPSBudW1PZlNmYiAtIHRDLnRuc1N0YXJ0QmFuZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisKKyAgICAgIEFuYWx5c2lzRmlsdGVyTGF0dGljZSgmKHNwZWN0cnVtW3RDLnRuc1N0YXJ0TGluZV0pLCAodEMudG5zU3RvcExpbmUgLSB0Qy50bnNTdGFydExpbmUpLAorICAgICAgICAgICAgICAgICBwc3ViQmxvY2tJbmZvLT5wYXJjb3IsCisgICAgICAgICAgICAgICAgIHRuc0luZm8tPm9yZGVyW3N1YkJsb2NrTnVtYmVyXSwKKyAgICAgICAgICAgICAgICAgJihzcGVjdHJ1bVt0Qy50bnNTdGFydExpbmVdKSk7CisKKyAgICB9CisgIH0KKworICByZXR1cm4oMCk7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IG1fcG93Ml9jb3JkaWMKKyogZGVzY3JpcHRpb246IEl0ZXJhdGl2ZSBwb3dlciBmdW5jdGlvbgorKgorKglDYWxjdWxhdGVzIHBvdygyLjAseC0xLjAqKHNjYWxlKzEpKSB3aXRoIElOVF9CSVRTIGJpdCBwcmVjaXNpb24KKyoJdXNpbmcgbW9kaWZpZWQgY29yZGljIGFsZ29yaXRobQorKiByZXR1cm5zOiAgICAgdGhlIHJlc3VsdCBvZiBwb3cyCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyBXb3JkMzIgbV9wb3cyX2NvcmRpYyhXb3JkMzIgeCwgV29yZDE2IHNjYWxlKQoreworICBXb3JkMzIgazsKKworICBXb3JkMzIgYWNjdV95ID0gMHg0MDAwMDAwMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgYWNjdV95ID0gTF9zaHIoYWNjdV95LHNjYWxlKTsKKworICBmb3Ioaz0xOyBrPElOVF9CSVRTOyBrKyspIHsKKyAgICBjb25zdCBXb3JkMzIgeiA9IG1fbG9nMl90YWJsZVtrXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgICB3aGlsZShMX3N1Yih4LHopID49IDApIHsKKyAgICAgICAKKyAgICAgIHggPSBMX3N1Yih4LCB6KTsKKyAgICAgIGFjY3VfeSA9IExfYWRkKGFjY3VfeSwgKGFjY3VfeSA+PiBrKSk7CisgICAgfQorICB9CisgIHJldHVybihhY2N1X3kpOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBDYWxjV2VpZ2h0ZWRTcGVjdHJ1bQorKiBkZXNjcmlwdGlvbjogQ2FsY3VsYXRlIHdlaWdodGVkIHNwZWN0cnVtIGZvciBMUEMgY2FsY3VsYXRpb24KKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIHZvaWQgQ2FsY1dlaWdodGVkU3BlY3RydW0oY29uc3QgV29yZDMyICBzcGVjdHJ1bVtdLCAgICAgICAgIC8qITwgaW5wdXQgc3BlY3RydW0gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgICAgICAgd2VpZ2h0ZWRTcGVjdHJ1bVtdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDMyICAgICAgICpzZmJFbmVyZ3ksICAgICAgICAgIC8qITwgc2ZiIGVuZXJnaWVzICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXb3JkMTYgKnNmYk9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgICAgICAgbHBjU3RhcnRMaW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICAgICAgICBscGNTdG9wTGluZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiAgICAgICAgbHBjU3RhcnRCYW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2ICAgICAgICBscGNTdG9wQmFuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQzMiAgICAgICAqcFdvcmszMikKK3sKKyAgICAjZGVmaW5lIElOVF9CSVRTX1NDQUwgMTw8KElOVF9CSVRTLzIpCisKKyAgICBXb3JkMzIgaSwgc2ZiLCBzaGlmdDsKKyAgICBXb3JkMzIgbWF4U2hpZnQ7CisgICAgV29yZDMyIHRtcF9zLCB0bXAyX3M7CisgICAgV29yZDMyIHRtcCwgdG1wMjsKKyAgICBXb3JkMzIgbWF4V1M7CisgICAgV29yZDMyIHRuc1NmYk1lYW5bTUFYX1NGQl07ICAgIC8qIGxlbmd0aCBbbHBjU3RvcEJhbmQtbHBjU3RhcnRCYW5kXSBzaG91bGQgYmUgc3VmZmljaWVudCBoZXJlICovCisKKyAgICBtYXhXUyA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgCisgICAgLyogY2FsYyAxLjAqMl4tSU5UX0JJVFMvMi9zcXJ0KGVuKSAqLworICAgIGZvciggc2ZiID0gbHBjU3RhcnRCYW5kOyBzZmIgPCBscGNTdG9wQmFuZDsgc2ZiKyspIHsKKworICAgICAgdG1wMiA9IHNmYkVuZXJneVtzZmJdIC0gMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgIGlmKCB0bXAyID4gMCkgeworICAgICAgICB0bXAgPSByc3FydChzZmJFbmVyZ3lbc2ZiXSwgSU5UX0JJVFMpOworCQlpZih0bXAgPiBJTlRfQklUU19TQ0FMKSANCisJCXsNCisJCQlzaGlmdCA9ICBub3JtX2wodG1wKTsNCisJCQl0bXAgPSBEaXZfMzIoIElOVF9CSVRTX1NDQUwgPDwgc2hpZnQsIHRtcCA8PCBzaGlmdCApOyAKKwkJfQorCQllbHNlCisJCXsKKwkJCXRtcCA9IDB4N2ZmZmZmZmY7IAorCQl9CisgICAgICB9CisgICAgICBlbHNlIHsKKyAgICAgICAgdG1wID0gMHg3ZmZmZmZmZjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgIH0gCisgICAgICB0bnNTZmJNZWFuW3NmYl0gPSB0bXA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgfQorCisgICAgLyogc3ByZWFkIG5vcm1hbGl6ZWQgdmFsdWVzIGZyb20gc2ZicyB0byBsaW5lcyAqLworICAgIHNmYiA9IGxwY1N0YXJ0QmFuZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIHRtcCA9IHRuc1NmYk1lYW5bc2ZiXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIGZvciAoIGk9bHBjU3RhcnRMaW5lOyBpPGxwY1N0b3BMaW5lOyBpKyspeworICAgICAgdG1wX3MgPSBzZmJPZmZzZXRbc2ZiICsgMV0gLSBpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgaWYgKCB0bXBfcyA9PSAwICkgeworICAgICAgICBzZmIgPSBzZmIgKyAxOworICAgICAgICB0bXAyX3MgPSBzZmIgKyAxIC0gbHBjU3RvcEJhbmQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBpZiAodG1wMl9zIDw9IDApIHsKKyAgICAgICAgICB0bXAgPSB0bnNTZmJNZWFuW3NmYl07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgfQorICAgICAgcFdvcmszMltpXSA9IHRtcDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIH0KKyAgICAvKmZpbHRlciBkb3duKi8KKyAgICBmb3IgKGk9KGxwY1N0b3BMaW5lIC0gMik7IGk+PWxwY1N0YXJ0TGluZTsgaS0tKXsKKyAgICAgICAgcFdvcmszMltpXSA9IChwV29yazMyW2ldICsgcFdvcmszMltpICsgMV0pID4+IDE7CisgICAgfQorICAgIC8qIGZpbHRlciB1cCAqLworICAgIGZvciAoaT0obHBjU3RhcnRMaW5lICsgMSk7IGk8bHBjU3RvcExpbmU7IGkrKyl7CisgICAgICAgcFdvcmszMltpXSA9IChwV29yazMyW2ldICsgcFdvcmszMltpIC0gMV0pID4+IDE7CisgICAgfQorCisgICAgLyogd2VpZ2h0IGFuZCBub3JtYWxpemUgKi8KKyAgICBmb3IgKGk9bHBjU3RhcnRMaW5lOyBpPGxwY1N0b3BMaW5lOyBpKyspeworICAgICAgcFdvcmszMltpXSA9IE1VTEhJR0gocFdvcmszMltpXSwgc3BlY3RydW1baV0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgIG1heFdTIHw9IExfYWJzKHBXb3JrMzJbaV0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICB9CisgICAgbWF4U2hpZnQgPSBub3JtX2wobWF4V1MpOworDQorCW1heFNoaWZ0ID0gMTYgLSBtYXhTaGlmdDsNCisgICAgaWYobWF4U2hpZnQgPj0gMCkNCisJew0KKwkJZm9yIChpPWxwY1N0YXJ0TGluZTsgaTxscGNTdG9wTGluZTsgaSsrKXsNCisJCQl3ZWlnaHRlZFNwZWN0cnVtW2ldID0gcFdvcmszMltpXSA+PiBtYXhTaGlmdDsNCisJCX0NCisgICAgfQ0KKwllbHNlDQorCXsNCisJCW1heFNoaWZ0ID0gLW1heFNoaWZ0Ow0KKwkJZm9yIChpPWxwY1N0YXJ0TGluZTsgaTxscGNTdG9wTGluZTsgaSsrKXsNCisJCQl3ZWlnaHRlZFNwZWN0cnVtW2ldID0gc2F0dXJhdGUocFdvcmszMltpXSA8PCBtYXhTaGlmdCk7DQorCQl9DQorCX0KK30KKworCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IENhbGNUbnNGaWx0ZXIKKyogZGVzY3JpcHRpb246ICBMUEMgY2FsY3VsYXRpb24gZm9yIG9uZSBUTlMgZmlsdGVyCisqIHJldHVybnM6ICAgICAgcHJlZGljdGlvbiBnYWluCisqIGlucHV0OiAgICAgICAgc2lnbmFsIHNwZWN0cnVtLCBhY2Ygd2luZG93LCBuby4gb2Ygc3BlY3RyYWwgbGluZXMsCisqICAgICAgICAgICAgICAgIG1heC4gVE5TIG9yZGVyLCBwdHIuIHRvIHJlZmxlY3Rpb24gb2NlZmZpY2llbnRzCisqIG91dHB1dDogICAgICAgcmVmbGVjdGlvbiBjb2VmZmljaWVudHMKKyooaGFsZikgd2luZG93IHNpemUgbXVzdCBiZSBsYXJnZXIgdGhhbiB0bnNPcmRlciAhISoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworc3RhdGljIFdvcmQxNiBDYWxjVG5zRmlsdGVyKGNvbnN0IFdvcmQxNiAqc2lnbmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFdvcmQzMiB3aW5kb3dbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgbnVtT2ZMaW5lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgdG5zT3JkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDMyIHBhcmNvcltdKQoreworICBXb3JkMzIgcGFyY29yV29ya0J1ZmZlclsyKlROU19NQVhfT1JERVIrMV07CisgIFdvcmQzMiBwcmVkaWN0aW9uR2FpbjsKKyAgV29yZDMyIGk7CisgIFdvcmQzMiB0bnNPcmRlclBsdXMxID0gdG5zT3JkZXIgKyAxOworCisgIGFzc2VydCh0bnNPcmRlciA8PSBUTlNfTUFYX09SREVSKTsgICAgICAvKiByZW1vdmUgYXNzZXJ0cyBsYXRlcj8gKGJ0ZykgKi8KKworICBmb3IoaT0wO2k8dG5zT3JkZXI7aSsrKSB7CisgICAgcGFyY29yW2ldID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIH0KKworICBBdXRvQ29ycmVsYXRpb24oc2lnbmFsLCBwYXJjb3JXb3JrQnVmZmVyLCBudW1PZkxpbmVzLCB0bnNPcmRlclBsdXMxKTsKKworICAvKiBlYXJseSByZXR1cm4gaWYgc2lnbmFsIGlzIHZlcnkgbG93OiBzaWduYWwgcHJlZGljdGlvbiBvZmYsIHdpdGggemVybyBwYXJjb3IgY29lZmZzICovCisgIGlmIChwYXJjb3JXb3JrQnVmZmVyWzBdID09IDApCisgICAgcmV0dXJuIDA7CisKKyAgcHJlZGljdGlvbkdhaW4gPSBBdXRvVG9QYXJjb3IocGFyY29yV29ya0J1ZmZlciwgcGFyY29yLCB0bnNPcmRlcik7CisKKyAgcmV0dXJuKHByZWRpY3Rpb25HYWluKTsKK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IEF1dG9Db3JyZWxhdGlvbgorKiBkZXNjcmlwdGlvbjogIGNhbGMuIGF1dG9jb3JyZWxhdGlvbiAoYWNmKQorKiByZXR1cm5zOiAgICAgIC0KKyogaW5wdXQ6ICAgICAgICBpbnB1dCB2YWx1ZXMsIG5vLiBvZiBpbnB1dCB2YWx1ZXMsIG5vLiBvZiBhY2YgdmFsdWVzCisqIG91dHB1dDogICAgICAgYWNmIHZhbHVlcworKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisjaWZuZGVmIEFSTVY1RQ0KK3ZvaWQgQXV0b0NvcnJlbGF0aW9uKGNvbnN0IFdvcmQxNgkJIGlucHV0W10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDMyICAgICAgIGNvcnJbXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgICAgICAgc2FtcGxlcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgICAgICAgY29yckNvZWZmKSB7CisgIFdvcmQzMiBpLCBqLCBpc2FtcGxlczsKKyAgV29yZDMyIGFjY3U7CisgIFdvcmQzMiBzY2Y7CisKKyAgc2NmID0gMTAgLSAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisNCisgIGlzYW1wbGVzID0gc2FtcGxlczsKKyAgLyogY2FsYyBmaXJzdCBjb3JyQ29lZjogIFJbMF0gPSBzdW0geyB0W2ldICogdFtpXSB9IDsgaSA9IDAuLk4tMSAqLworICBhY2N1ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBmb3Ioaj0wOyBqPGlzYW1wbGVzOyBqKyspIHsKKyAgICBhY2N1ID0gTF9hZGQoYWNjdSwgKChpbnB1dFtqXSAqIGlucHV0W2pdKSA+PiBzY2YpKTsNCisgIH0KKyAgY29yclswXSA9IGFjY3U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICAvKiBlYXJseSB0ZXJtaW5hdGlvbiBpZiBhbGwgY29yciBjb2VmZnMgYXJlIGxpa2VseSBnb2luZyB0byBiZSB6ZXJvICovCisgIGlmKGNvcnJbMF0gPT0gMCkgcmV0dXJuIDsKKworICAvKiBjYWxjIGFsbCBvdGhlciBjb3JyQ29lZjogIFJbal0gPSBzdW0geyB0W2ldICogdFtpK2pdIH0gOyBpID0gMC4uKE4tai0xKSwgaj0xLi5wICovCisgIGZvcihpPTE7IGk8Y29yckNvZWZmOyBpKyspIHsKKyAgICBpc2FtcGxlcyA9IGlzYW1wbGVzIC0gMTsKKyAgICBhY2N1ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBmb3Ioaj0wOyBqPGlzYW1wbGVzOyBqKyspIHsKKyAgICAgIGFjY3UgPSBMX2FkZChhY2N1LCAoKGlucHV0W2pdICogaW5wdXRbaitpXSkgPj4gc2NmKSk7DQorICAgIH0KKyAgICBjb3JyW2ldID0gYWNjdTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgfQorfSAgICAKKyNlbmRpZgorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogQXV0b1RvUGFyY29yCisqIGRlc2NyaXB0aW9uOiAgY29udmVyc2lvbiBhdXRvY29ycmVsYXRpb24gdG8gcmVmbGVjdGlvbiBjb2VmZmljaWVudHMKKyogcmV0dXJuczogICAgICBwcmVkaWN0aW9uIGdhaW4KKyogaW5wdXQ6ICAgICAgICA8b3JkZXIrMT4gaW5wdXQgdmFsdWVzLCBuby4gb2Ygb3V0cHV0IHZhbHVlcyAoPW9yZGVyKSwKKyogICAgICAgICAgICAgICBwdHIuIHRvIHdvcmtidWZmZXIgKHJlcXVpcmVkIHNpemU6IDIqb3JkZXIpCisqIG91dHB1dDogICAgICAgPG9yZGVyPiByZWZsZWN0aW9uIGNvZWZmaWNpZW50cworKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCitzdGF0aWMgV29yZDE2IEF1dG9Ub1BhcmNvcihXb3JkMzIgd29ya0J1ZmZlcltdLCBXb3JkMzIgcmVmbENvZWZmW10sIFdvcmQxNiBudW1PZkNvZWZmKSB7CisKKyAgV29yZDMyIGksIGosIHNoaWZ0OworICBXb3JkMzIgKnBXb3JrQnVmZmVyOyAvKiB0ZW1wIHBvaW50ZXIgKi8KKyAgV29yZDMyIHByZWRpY3Rpb25HYWluID0gMDsKKyAgV29yZDMyIG51bSwgZGVub207CisgIFdvcmQzMiB0ZW1wLCB3b3JrQnVmZmVyMDsKKyAgIAorCisgIG51bSA9IHdvcmtCdWZmZXJbMF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIHRlbXAgPSB3b3JrQnVmZmVyW251bU9mQ29lZmZdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgZm9yKGk9MDsgaTxudW1PZkNvZWZmLTE7IGkrKykgeworICAgIHdvcmtCdWZmZXJbaSArIG51bU9mQ29lZmZdID0gd29ya0J1ZmZlcltpICsgMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICB9CisgIHdvcmtCdWZmZXJbaSArIG51bU9mQ29lZmZdID0gdGVtcDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgCisgIGZvcihpPTA7IGk8bnVtT2ZDb2VmZjsgaSsrKSB7CisgICAgV29yZDMyIHJlZmM7CisKKyAgICAgCisgICAgaWYgKHdvcmtCdWZmZXJbMF0gPCBMX2Ficyh3b3JrQnVmZmVyW2kgKyBudW1PZkNvZWZmXSkpIHsKKyAgICAgIHJldHVybiAwIDsKKyAgICB9CisJc2hpZnQgPSBub3JtX2wod29ya0J1ZmZlclswXSk7DQorCXdvcmtCdWZmZXIwID0gRGl2XzMyKDEgPDwgc2hpZnQsIHdvcmtCdWZmZXJbMF0gPDwgc2hpZnQpOworICAgIC8qIGNhbGN1bGF0ZSByZWZjID0gLXdvcmtCdWZmZXJbbnVtT2ZDb2VmZitpXSAvIHdvcmtCdWZmZXJbMF07IC0xIDw9IHJlZmMgPCAxICovCisJcmVmYyA9IExfbmVnYXRlKGZpeG11bCh3b3JrQnVmZmVyW251bU9mQ29lZmYgKyBpXSwgd29ya0J1ZmZlcjApKTsKKworICAgIHJlZmxDb2VmZltpXSA9IHJlZmM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgICBwV29ya0J1ZmZlciA9ICYod29ya0J1ZmZlcltudW1PZkNvZWZmXSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKworICAgIGZvcihqPWk7IGo8bnVtT2ZDb2VmZjsgaisrKSB7CisgICAgICBXb3JkMzIgYWNjdTEsIGFjY3UyOworICAgICAgYWNjdTEgPSBMX2FkZChwV29ya0J1ZmZlcltqXSwgZml4bXVsKHJlZmMsIHdvcmtCdWZmZXJbaiAtIGldKSk7CisgICAgICBhY2N1MiA9IExfYWRkKHdvcmtCdWZmZXJbaiAtIGldLCBmaXhtdWwocmVmYywgcFdvcmtCdWZmZXJbal0pKTsKKyAgICAgIHBXb3JrQnVmZmVyW2pdID0gYWNjdTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgIHdvcmtCdWZmZXJbaiAtIGldID0gYWNjdTI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICB9CisgIH0KKworICBkZW5vbSA9IE1VTEhJR0god29ya0J1ZmZlclswXSwgTk9STV9DT0VGKTsKKyAgIAorICBpZiAoZGVub20gIT0gMCkgeworICAgIFdvcmQzMiB0ZW1wOw0KKwlzaGlmdCA9IG5vcm1fbChkZW5vbSk7DQorCXRlbXAgPSBEaXZfMzIoMSA8PCBzaGlmdCwgZGVub20gPDwgc2hpZnQpOworICAgIHByZWRpY3Rpb25HYWluID0gZml4bXVsKG51bSwgdGVtcCk7CisgIH0KKworICByZXR1cm4gZXh0cmFjdF9sKHByZWRpY3Rpb25HYWluKTsKK30KKworCisKK3N0YXRpYyBXb3JkMTYgU2VhcmNoMyhXb3JkMzIgcGFyY29yKQoreworICBXb3JkMzIgaW5kZXggPSAwOworICBXb3JkMzIgaTsKKyAgV29yZDMyIHRlbXA7CisgICAKKyAgZm9yIChpPTA7aTw4O2krKykgeworICAgIHRlbXAgPSBMX3N1YiggcGFyY29yLCB0bnNDb2VmZjNCb3JkZXJzW2ldKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIGlmICh0ZW1wID4gMCkKKyAgICAgIGluZGV4PWk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgfQorICByZXR1cm4gZXh0cmFjdF9sKGluZGV4IC0gNCk7Cit9CisKK3N0YXRpYyBXb3JkMTYgU2VhcmNoNChXb3JkMzIgcGFyY29yKQoreworICBXb3JkMzIgaW5kZXggPSAwOworICBXb3JkMzIgaTsKKyAgV29yZDMyIHRlbXA7CisgICAKKworICBmb3IgKGk9MDtpPDE2O2krKykgeworICAgIHRlbXAgPSBMX3N1YihwYXJjb3IsIHRuc0NvZWZmNEJvcmRlcnNbaV0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIGlmICh0ZW1wID4gMCkKKyAgICAgIGluZGV4PWk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgfQorICByZXR1cm4gZXh0cmFjdF9sKGluZGV4IC0gOCk7Cit9CisKKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb25uYW1lOiBQYXJjb3IySW5kZXgKKyogZGVzY3JpcHRpb246ICBxdWFudGl6YXRpb24gaW5kZXggZm9yIHJlZmxlY3Rpb24gY29lZmZpY2llbnRzCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyB2b2lkIFBhcmNvcjJJbmRleChjb25zdCBXb3JkMzIgcGFyY29yW10sICAgLyohPCBwYXJjb3IgY29lZmZpY2llbnRzICovCisgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IGluZGV4W10sICAgICAgICAgIC8qITwgcXVhbnRpemVkIGNvZWZmIGluZGljZXMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgb3JkZXIsICAgICAgICAgICAgLyohPCBmaWx0ZXIgb3JkZXIgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgYml0c1BlckNvZWZmKSB7ICAgLyohPCBxdWFudGl6ZXIgcmVzb2x1dGlvbiAqLworICBXb3JkMzIgaTsKKyAgV29yZDMyIHRlbXA7CisKKyAgZm9yKGk9MDsgaTxvcmRlcjsgaSsrKSB7CisgICAgdGVtcCA9IGJpdHNQZXJDb2VmZiAtIDM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBpZiAodGVtcCA9PSAwKSB7CisgICAgICBpbmRleFtpXSA9IFNlYXJjaDMocGFyY29yW2ldKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgfSAKKyAgICBlbHNlIHsKKyAgICAgIGluZGV4W2ldID0gU2VhcmNoNChwYXJjb3JbaV0pOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICB9CisgIH0KK30KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9ubmFtZTogSW5kZXgyUGFyY29yCisqIGRlc2NyaXB0aW9uOiAgSW52ZXJzZSBxdWFudGl6YXRpb24gZm9yIHJlZmxlY3Rpb24gY29lZmZpY2llbnRzCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyB2b2lkIEluZGV4MlBhcmNvcihjb25zdCBXb3JkMTYgaW5kZXhbXSwgIC8qITwgcXVhbnRpemVkIHZhbHVlcyAqLworICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQzMiBwYXJjb3JbXSwgICAgICAgLyohPCBwdHIuIHRvIHJlZmxlY3Rpb24gY29lZmZpY2llbnRzIChvdXRwdXQpICovCisgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IG9yZGVyLCAgICAgICAgICAvKiE8IG5vLiBvZiBjb2VmZmljaWVudHMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgYml0c1BlckNvZWZmKSAgIC8qITwgcXVhbnRpemVyIHJlc29sdXRpb24gKi8KK3sKKyAgV29yZDMyIGk7CisgIFdvcmQzMiB0ZW1wOworCisgIGZvciAoaT0wOyBpPG9yZGVyOyBpKyspIHsKKyAgICB0ZW1wID0gYml0c1BlckNvZWZmIC0gNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBpZiAoIHRlbXAgPT0gMCApIHsKKyAgICAgICAgcGFyY29yW2ldID0gdG5zQ29lZmY0W2luZGV4W2ldICsgOF07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHBhcmNvcltpXSA9IHRuc0NvZWZmM1tpbmRleFtpXSArIDRdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgfQorICB9Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbm5hbWU6IEZJUkxhdHRpY2UKKyogZGVzY3JpcHRpb246ICBpbiBwbGFjZSBsYXR0aWNlIGZpbHRlcmluZyBvZiBzcGVjdHJhbCBkYXRhCisqIHJldHVybnM6CQlwb2ludGVyIHRvIG1vZGlmaWVkIGRhdGEKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIFdvcmQzMiBGSVJMYXR0aWNlKFdvcmQxNiBvcmRlciwgICAgICAgICAgIC8qITwgZmlsdGVyIG9yZGVyICovCisgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDMyIHgsICAgICAgICAgICAgICAgLyohPCBzcGVjdHJhbCBkYXRhICovCisgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDMyICpzdGF0ZV9wYXIsICAgICAgLyohPCBmaWx0ZXIgc3RhdGVzICovCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgV29yZDMyICpjb2VmX3BhcikgLyohPCBmaWx0ZXIgY29lZmZpY2llbnRzICovCit7CisgICBXb3JkMzIgaTsKKyAgIFdvcmQzMiBhY2N1LHRtcCx0bXBTYXZlOworCisgICB4ID0geCA+PiAxOworICAgdG1wU2F2ZSA9IHg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCisgICBmb3IgKGk9MDsgaTwob3JkZXIgLSAxKTsgaSsrKSB7CisKKyAgICAgdG1wID0gTF9hZGQoZml4bXVsKGNvZWZfcGFyW2ldLCB4KSwgc3RhdGVfcGFyW2ldKTsKKyAgICAgeCAgID0gTF9hZGQoZml4bXVsKGNvZWZfcGFyW2ldLCBzdGF0ZV9wYXJbaV0pLCB4KTsKKworICAgICBzdGF0ZV9wYXJbaV0gPSB0bXBTYXZlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICB0bXBTYXZlID0gdG1wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICB9CisKKyAgLyogbGFzdCBzdGFnZTogb25seSBuZWVkIGhhbGYgb3BlcmF0aW9ucyAqLworICBhY2N1ID0gZml4bXVsKHN0YXRlX3BhcltvcmRlciAtIDFdLCBjb2VmX3Bhclsob3JkZXIgLSAxKV0pOworICBzdGF0ZV9wYXJbKG9yZGVyIC0gMSldID0gdG1wU2F2ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisKKyAgeCA9IExfYWRkKGFjY3UsIHgpOworICB4ID0gTF9hZGQoeCwgeCk7CisKKyAgcmV0dXJuIHg7Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbm5hbWU6IEFuYWx5c2lzRmlsdGVyTGF0dGljZQorKiBkZXNjcmlwdGlvbjogIGZpbHRlcnMgc3BlY3RyYWwgbGluZXMgd2l0aCBUTlMgZmlsdGVyCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3N0YXRpYyB2b2lkIEFuYWx5c2lzRmlsdGVyTGF0dGljZShjb25zdCAgV29yZDMyIHNpZ25hbFtdLCAgLyohPCBpbnB1dCBzcGVjdHJ1bSAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiBudW1PZkxpbmVzLCAgICAgICAvKiE8IG5vLiBvZiBsaW5lcyAqLworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0ICBXb3JkMzIgcGFyQ29lZmZbXSwvKiE8IFBBUkMgY29lZmZpY2llbnRzICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IG9yZGVyLCAgICAgICAgICAgIC8qITwgZmlsdGVyIG9yZGVyICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV29yZDMyIG91dHB1dFtdKSAgICAgICAgIC8qITwgZmlsdGVyZWQgc2lnbmFsIHZhbHVlcyAqLworeworCisgIFdvcmQzMiBzdGF0ZV9wYXJbVE5TX01BWF9PUkRFUl07CisgIFdvcmQzMiBqOworCisgIGZvciAoIGo9MDsgajxUTlNfTUFYX09SREVSOyBqKysgKSB7CisgICAgc3RhdGVfcGFyW2pdID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgIH0KKworICBmb3Ioaj0wOyBqPG51bU9mTGluZXM7IGorKykgeworICAgIG91dHB1dFtqXSA9IEZJUkxhdHRpY2Uob3JkZXIsc2lnbmFsW2pdLHN0YXRlX3BhcixwYXJDb2VmZik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICB9Cit9CisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbm5hbWU6IEFwcGx5VG5zTXVsdFRhYmxlVG9SYXRpb3MKKyogZGVzY3JpcHRpb246ICBDaGFuZ2UgdGhyZXNob2xkcyBhY2NvcmRpbmcgdG8gdG5zCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK3ZvaWQgQXBwbHlUbnNNdWx0VGFibGVUb1JhdGlvcyhXb3JkMTYgc3RhcnRDYiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgc3RvcENiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFROU19TVUJCTE9DS19JTkZPIHN1YkluZm8sIC8qITwgVE5TIHN1YmJsb2NrIGluZm8gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXb3JkMzIgKnRocmVzaG9sZHMpICAgICAgICAvKiE8IHRocmVzaG9sZHMgKG1vZGlmaWVkKSAqLworeworICBXb3JkMzIgaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICBpZiAoc3ViSW5mby50bnNBY3RpdmUpIHsKKyAgICBmb3IoaT1zdGFydENiOyBpPHN0b3BDYjsgaSsrKSB7CisgICAgICAvKiB0aHJlc2hvbGRzW2ldICogMC4yNSAqLworICAgICAgdGhyZXNob2xkc1tpXSA9ICh0aHJlc2hvbGRzW2ldID4+IDIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIH0KKyAgfQorfQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvdHJhbnNmb3JtLmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYWFjZW5jL3NyYy90cmFuc2Zvcm0uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjE3YjVhCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FhY2VuYy9zcmMvdHJhbnNmb3JtLmMKQEAgLTAsMCArMSw2NzIgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCXRyYW5zZm9ybS5jDQorDQorCUNvbnRlbnQ6CU1EQ1QgVHJhbnNmb3JtIGZ1bmN0aW9uc3MNCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworCisjaW5jbHVkZSAiYmFzaWNfb3AuaCINCisjaW5jbHVkZSAicHN5X2NvbnN0LmgiCisjaW5jbHVkZSAidHJhbnNmb3JtLmgiCisjaW5jbHVkZSAiYWFjX3JvbS5oIgorDQorDQorI2RlZmluZSBMU19UUkFOUyAoKEZSQU1FX0xFTl9MT05HLUZSQU1FX0xFTl9TSE9SVCkvMikgLyogNDQ4ICovDQorI2RlZmluZSBTUVJUMV8yIDB4NWE4Mjc5OWEJLyogc3FydCgxLzIpIGluIFEzMSAqLw0KKyNkZWZpbmUgc3dhcDIocDAscDEpIFwNCisJdCA9IHAwOyB0MSA9ICooJihwMCkrMSk7CVwNCisJcDAgPSBwMTsgKigmKHAwKSsxKSA9ICooJihwMSkrMSk7CVwNCisJcDEgPSB0OyAqKCYocDEpKzEpID0gdDEJDQorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IFNodWZmbGUKKyogZGVzY3JpcHRpb246ICBTaHVmZmxlIHBvaW50cyBwcmVwYXJlZCBmdW5jdGlvbiBmb3IgZmZ0CisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIHZvaWQgU2h1ZmZsZShpbnQgKmJ1ZiwgaW50IG51bSwgY29uc3QgdW5zaWduZWQgY2hhciogYml0VGFiKQ0KK3sNCisgICAgaW50ICpwYXJ0MCwgKnBhcnQxOw0KKwlpbnQgaSwgajsNCisJaW50IHQsIHQxOw0KKw0KKwlwYXJ0MCA9IGJ1ZjsNCisgICAgcGFydDEgPSBidWYgKyBudW07DQorCQ0KKwl3aGlsZSAoKGkgPSAqYml0VGFiKyspICE9IDApIHsNCisgICAgICAgIGogPSAqYml0VGFiKys7DQorDQorICAgICAgICBzd2FwMihwYXJ0MFs0KmkrMF0sIHBhcnQwWzQqaiswXSk7CQ0KKyAgICAgICAgc3dhcDIocGFydDBbNCppKzJdLCBwYXJ0MVs0KmorMF0pOwkNCisgICAgICAgIHN3YXAyKHBhcnQxWzQqaSswXSwgcGFydDBbNCpqKzJdKTsJDQorICAgICAgICBzd2FwMihwYXJ0MVs0KmkrMl0sIHBhcnQxWzQqaisyXSk7CQ0KKyAgICB9DQorDQorICAgIGRvIHsNCisgICAgICAgIHN3YXAyKHBhcnQwWzQqaSsyXSwgcGFydDFbNCppKzBdKTsJDQorICAgIH0gd2hpbGUgKChpID0gKmJpdFRhYisrKSAhPSAwKTsNCit9DQorDQorI2lmICFkZWZpbmVkKEFSTVY1RSkgJiYgIWRlZmluZWQoQVJNVjdOZW9uKQ0KKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IFJhZGl4NEZpcnN0CisqIGRlc2NyaXB0aW9uOiAgUmFkaXggNCBwb2ludCBwcmVwYXJlZCBmdW5jdGlvbiBmb3IgZmZ0CisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK3N0YXRpYyB2b2lkIFJhZGl4NEZpcnN0KGludCAqYnVmLCBpbnQgbnVtKQ0KK3sNCisgICAgaW50IHIwLCByMSwgcjIsIHIzOw0KKwlpbnQgcjQsIHI1LCByNiwgcjc7DQorCQ0KKwlmb3IgKDsgbnVtICE9IDA7IG51bS0tKSANCisJew0KKwkJcjAgPSBidWZbMF0gKyBidWZbMl07DQorCQlyMSA9IGJ1ZlsxXSArIGJ1ZlszXTsNCisJCXIyID0gYnVmWzBdIC0gYnVmWzJdOw0KKwkJcjMgPSBidWZbMV0gLSBidWZbM107DQorCQlyNCA9IGJ1Zls0XSArIGJ1Zls2XTsNCisJCXI1ID0gYnVmWzVdICsgYnVmWzddOw0KKwkJcjYgPSBidWZbNF0gLSBidWZbNl07DQorCQlyNyA9IGJ1Zls1XSAtIGJ1Zls3XTsNCisNCisJCWJ1ZlswXSA9IHIwICsgcjQ7DQorCQlidWZbMV0gPSByMSArIHI1Ow0KKwkJYnVmWzRdID0gcjAgLSByNDsNCisJCWJ1Zls1XSA9IHIxIC0gcjU7DQorCQlidWZbMl0gPSByMiArIHI3Ow0KKwkJYnVmWzNdID0gcjMgLSByNjsNCisJCWJ1Zls2XSA9IHIyIC0gcjc7DQorCQlidWZbN10gPSByMyArIHI2Ow0KKw0KKwkJYnVmICs9IDg7DQorCX0NCit9DQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IFJhZGl4OEZpcnN0CisqIGRlc2NyaXB0aW9uOiAgUmFkaXggOCBwb2ludCBwcmVwYXJlZCBmdW5jdGlvbiBmb3IgZmZ0CisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK3N0YXRpYyB2b2lkIFJhZGl4OEZpcnN0KGludCAqYnVmLCBpbnQgbnVtKQ0KK3sNCisgICBpbnQgcjAsIHIxLCByMiwgcjM7DQorICAgaW50IGkwLCBpMSwgaTIsIGkzOw0KKyAgIGludCByNCwgcjUsIHI2LCByNzsNCisgICBpbnQgaTQsIGk1LCBpNiwgaTc7DQorICAgaW50IHQwLCB0MSwgdDIsIHQzOw0KKw0KKwlmb3IgKCA7IG51bSAhPSAwOyBudW0tLSkgDQorCXsNCisJCXIwID0gYnVmWzBdICsgYnVmWzJdOw0KKwkJaTAgPSBidWZbMV0gKyBidWZbM107DQorCQlyMSA9IGJ1ZlswXSAtIGJ1ZlsyXTsNCisJCWkxID0gYnVmWzFdIC0gYnVmWzNdOw0KKwkJcjIgPSBidWZbNF0gKyBidWZbNl07DQorCQlpMiA9IGJ1Zls1XSArIGJ1Zls3XTsNCisJCXIzID0gYnVmWzRdIC0gYnVmWzZdOw0KKwkJaTMgPSBidWZbNV0gLSBidWZbN107DQorDQorCQlyNCA9IChyMCArIHIyKSA+PiAxOw0KKwkJaTQgPSAoaTAgKyBpMikgPj4gMTsNCisJCXI1ID0gKHIwIC0gcjIpID4+IDE7DQorCQlpNSA9IChpMCAtIGkyKSA+PiAxOw0KKwkJcjYgPSAocjEgLSBpMykgPj4gMTsNCisJCWk2ID0gKGkxICsgcjMpID4+IDE7DQorCQlyNyA9IChyMSArIGkzKSA+PiAxOw0KKwkJaTcgPSAoaTEgLSByMykgPj4gMTsNCisNCisJCXIwID0gYnVmWyA4XSArIGJ1ZlsxMF07DQorCQlpMCA9IGJ1ZlsgOV0gKyBidWZbMTFdOw0KKwkJcjEgPSBidWZbIDhdIC0gYnVmWzEwXTsNCisJCWkxID0gYnVmWyA5XSAtIGJ1ZlsxMV07DQorCQlyMiA9IGJ1ZlsxMl0gKyBidWZbMTRdOw0KKwkJaTIgPSBidWZbMTNdICsgYnVmWzE1XTsNCisJCXIzID0gYnVmWzEyXSAtIGJ1ZlsxNF07DQorCQlpMyA9IGJ1ZlsxM10gLSBidWZbMTVdOw0KKw0KKwkJdDAgPSAocjAgKyByMikgPj4gMTsNCisJCXQxID0gKGkwICsgaTIpID4+IDE7DQorCQl0MiA9IChyMCAtIHIyKSA+PiAxOw0KKwkJdDMgPSAoaTAgLSBpMikgPj4gMTsNCisNCisJCWJ1ZlsgMF0gPSByNCArIHQwOw0KKwkJYnVmWyAxXSA9IGk0ICsgdDE7DQorCQlidWZbIDhdID0gcjQgLSB0MDsNCisJCWJ1ZlsgOV0gPSBpNCAtIHQxOw0KKwkJYnVmWyA0XSA9IHI1ICsgdDM7DQorCQlidWZbIDVdID0gaTUgLSB0MjsNCisJCWJ1ZlsxMl0gPSByNSAtIHQzOw0KKwkJYnVmWzEzXSA9IGk1ICsgdDI7DQorDQorCQlyMCA9IHIxIC0gaTM7DQorCQlpMCA9IGkxICsgcjM7DQorCQlyMiA9IHIxICsgaTM7DQorCQlpMiA9IGkxIC0gcjM7DQorDQorCQl0MCA9IE1VTEhJR0goU1FSVDFfMiwgcjAgLSBpMCk7DQorCQl0MSA9IE1VTEhJR0goU1FSVDFfMiwgcjAgKyBpMCk7DQorCQl0MiA9IE1VTEhJR0goU1FSVDFfMiwgcjIgLSBpMik7DQorCQl0MyA9IE1VTEhJR0goU1FSVDFfMiwgcjIgKyBpMik7DQorDQorCQlidWZbIDZdID0gcjYgLSB0MDsNCisJCWJ1ZlsgN10gPSBpNiAtIHQxOw0KKwkJYnVmWzE0XSA9IHI2ICsgdDA7DQorCQlidWZbMTVdID0gaTYgKyB0MTsNCisJCWJ1ZlsgMl0gPSByNyArIHQzOw0KKwkJYnVmWyAzXSA9IGk3IC0gdDI7DQorCQlidWZbMTBdID0gcjcgLSB0MzsNCisJCWJ1ZlsxMV0gPSBpNyArIHQyOw0KKw0KKwkJYnVmICs9IDE2Ow0KKwl9DQorfQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBSYWRpeDRGRlQKKyogZGVzY3JpcHRpb246ICBSYWRpeCA0IHBvaW50IGZmdCBjb3JlIGZ1bmN0aW9uCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK3N0YXRpYyB2b2lkIFJhZGl4NEZGVChpbnQgKmJ1ZiwgaW50IG51bSwgaW50IGJnbiwgaW50ICp0d2lkVGFiKQ0KK3sNCisJaW50IHIwLCByMSwgcjIsIHIzOw0KKwlpbnQgcjQsIHI1LCByNiwgcjc7DQorCWludCB0MCwgdDE7DQorCWludCBzaW54LCBjb3N4Ow0KKwlpbnQgaSwgaiwgc3RlcDsNCisJaW50ICp4cHRyLCAqY3NwdHI7DQorDQorCWZvciAobnVtID4+PSAyOyBudW0gIT0gMDsgbnVtID4+PSAyKSANCisJew0KKwkJc3RlcCA9IDIqYmduOw0KKwkJeHB0ciA9IGJ1ZjsNCisNCisgICAgCWZvciAoaSA9IG51bTsgaSAhPSAwOyBpLS0pIA0KKwkJew0KKwkJCWNzcHRyID0gdHdpZFRhYjsNCisNCisJCQlmb3IgKGogPSBiZ247IGogIT0gMDsgai0tKSANCisJCQl7DQorCQkJCXIwID0geHB0clswXTsNCisJCQkJcjEgPSB4cHRyWzFdOw0KKwkJCQl4cHRyICs9IHN0ZXA7DQorCQkJCQ0KKwkJCQl0MCA9IHhwdHJbMF07DQorCQkJCXQxID0geHB0clsxXTsJCQkJDQorCQkJCWNvc3ggPSBjc3B0clswXTsNCisJCQkJc2lueCA9IGNzcHRyWzFdOw0KKwkJCQlyMiA9IE1VTEhJR0goY29zeCwgdDApICsgTVVMSElHSChzaW54LCB0MSk7CQkvKiBjb3MqYnIgKyBzaW4qYmkgKi8NCisJCQkJcjMgPSBNVUxISUdIKGNvc3gsIHQxKSAtIE1VTEhJR0goc2lueCwgdDApOwkJLyogY29zKmJpIC0gc2luKmJyICovDQorCQkJCXhwdHIgKz0gc3RlcDsNCisNCisJCQkJdDAgPSByMCA+PiAyOw0KKwkJCQl0MSA9IHIxID4+IDI7DQorCQkJCXIwID0gdDAgLSByMjsNCisJCQkJcjEgPSB0MSAtIHIzOw0KKwkJCQlyMiA9IHQwICsgcjI7DQorCQkJCXIzID0gdDEgKyByMzsNCisJCQkJDQorCQkJCXQwID0geHB0clswXTsNCisJCQkJdDEgPSB4cHRyWzFdOw0KKwkJCQljb3N4ID0gY3NwdHJbMl07DQorCQkJCXNpbnggPSBjc3B0clszXTsNCisJCQkJcjQgPSBNVUxISUdIKGNvc3gsIHQwKSArIE1VTEhJR0goc2lueCwgdDEpOwkJLyogY29zKmNyICsgc2luKmNpICovDQorCQkJCXI1ID0gTVVMSElHSChjb3N4LCB0MSkgLSBNVUxISUdIKHNpbngsIHQwKTsJCS8qIGNvcypjaSAtIHNpbipjciAqLw0KKwkJCQl4cHRyICs9IHN0ZXA7DQorCQkJCQ0KKwkJCQl0MCA9IHhwdHJbMF07DQorCQkJCXQxID0geHB0clsxXTsNCisJCQkJY29zeCA9IGNzcHRyWzRdOw0KKwkJCQlzaW54ID0gY3NwdHJbNV07DQorCQkJCXI2ID0gTVVMSElHSChjb3N4LCB0MCkgKyBNVUxISUdIKHNpbngsIHQxKTsJCS8qIGNvcypjciArIHNpbipjaSAqLw0KKwkJCQlyNyA9IE1VTEhJR0goY29zeCwgdDEpIC0gTVVMSElHSChzaW54LCB0MCk7CQkvKiBjb3MqY2kgLSBzaW4qY3IgKi8NCisJCQkJY3NwdHIgKz0gNjsNCisNCisJCQkJdDAgPSByNDsNCisJCQkJdDEgPSByNTsNCisJCQkJcjQgPSB0MCArIHI2Ow0KKwkJCQlyNSA9IHI3IC0gdDE7DQorCQkJCXI2ID0gdDAgLSByNjsNCisJCQkJcjcgPSByNyArIHQxOw0KKw0KKwkJCQl4cHRyWzBdID0gcjAgKyByNTsNCisJCQkJeHB0clsxXSA9IHIxICsgcjY7DQorCQkJCXhwdHIgLT0gc3RlcDsNCisNCisJCQkJeHB0clswXSA9IHIyIC0gcjQ7DQorCQkJCXhwdHJbMV0gPSByMyAtIHI3Ow0KKwkJCQl4cHRyIC09IHN0ZXA7DQorDQorCQkJCXhwdHJbMF0gPSByMCAtIHI1Ow0KKwkJCQl4cHRyWzFdID0gcjEgLSByNjsNCisJCQkJeHB0ciAtPSBzdGVwOw0KKw0KKwkJCQl4cHRyWzBdID0gcjIgKyByNDsNCisJCQkJeHB0clsxXSA9IHIzICsgcjc7DQorCQkJCXhwdHIgKz0gMjsNCisJCQl9DQorCQkJeHB0ciArPSAzKnN0ZXA7DQorCQl9DQorCQl0d2lkVGFiICs9IDMqc3RlcDsNCisJCWJnbiA8PD0gMjsNCisJfQ0KK30NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IFByZU1EQ1QKKyogZGVzY3JpcHRpb246ICBwcmVwYXJlIE1EQ1QgcHJvY2VzcyBmb3IgbmV4dCBGRlQgY29tcHV0ZQorKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCitzdGF0aWMgdm9pZCBQcmVNRENUKGludCAqYnVmMCwgaW50IG51bSwgY29uc3QgaW50ICpjc3B0cikNCit7DQorCWludCBpOw0KKwlpbnQgdHIxLCB0aTEsIHRyMiwgdGkyOw0KKwlpbnQgY29zYSwgc2luYSwgY29zYiwgc2luYjsNCisJaW50ICpidWYxOw0KKwkNCisJYnVmMSA9IGJ1ZjAgKyBudW0gLSAxOw0KKw0KKwlmb3IoaSA9IG51bSA+PiAyOyBpICE9IDA7IGktLSkNCisJew0KKwkJY29zYSA9ICpjc3B0cisrOwkNCisJCXNpbmEgPSAqY3NwdHIrKzsJDQorCQljb3NiID0gKmNzcHRyKys7CQ0KKwkJc2luYiA9ICpjc3B0cisrOwkJDQorDQorCQl0cjEgPSAqKGJ1ZjAgKyAwKTsNCisJCXRpMiA9ICooYnVmMCArIDEpOw0KKwkJdHIyID0gKihidWYxIC0gMSk7DQorCQl0aTEgPSAqKGJ1ZjEgKyAwKTsNCisJCQ0KKwkJKmJ1ZjArKyA9IE1VTEhJR0goY29zYSwgdHIxKSArIE1VTEhJR0goc2luYSwgdGkxKTsNCisJCSpidWYwKysgPSBNVUxISUdIKGNvc2EsIHRpMSkgLSBNVUxISUdIKHNpbmEsIHRyMSk7CQkNCisJCQ0KKwkJKmJ1ZjEtLSA9IE1VTEhJR0goY29zYiwgdGkyKSAtIE1VTEhJR0goc2luYiwgdHIyKTsJCQ0KKwkJKmJ1ZjEtLSA9IE1VTEhJR0goY29zYiwgdHIyKSArIE1VTEhJR0goc2luYiwgdGkyKTsNCisJfQ0KK30NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IFBvc3RNRENUCisqIGRlc2NyaXB0aW9uOiAgIHBvc3QgTURDVCBwcm9jZXNzIGFmdGVyIG5leHQgRkZUIGZvciBNRENUCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK3N0YXRpYyB2b2lkIFBvc3RNRENUKGludCAqYnVmMCwgaW50IG51bSwgY29uc3QgaW50ICpjc3B0cikNCit7DQorCWludCBpOw0KKwlpbnQgdHIxLCB0aTEsIHRyMiwgdGkyOw0KKwlpbnQgY29zYSwgc2luYSwgY29zYiwgc2luYjsNCisJaW50ICpidWYxOw0KKw0KKwlidWYxID0gYnVmMCArIG51bSAtIDE7DQorCQ0KKwlmb3IoaSA9IG51bSA+PiAyOyBpICE9IDA7IGktLSkNCisJew0KKwkJY29zYSA9ICpjc3B0cisrOwkNCisJCXNpbmEgPSAqY3NwdHIrKzsJDQorCQljb3NiID0gKmNzcHRyKys7CQ0KKwkJc2luYiA9ICpjc3B0cisrOw0KKw0KKwkJdHIxID0gKihidWYwICsgMCk7DQorCQl0aTEgPSAqKGJ1ZjAgKyAxKTsNCisJCXRpMiA9ICooYnVmMSArIDApOw0KKwkJdHIyID0gKihidWYxIC0gMSk7DQorDQorCQkqYnVmMCsrID0gTVVMSElHSChjb3NhLCB0cjEpICsgTVVMSElHSChzaW5hLCB0aTEpOw0KKwkJKmJ1ZjEtLSA9IE1VTEhJR0goc2luYSwgdHIxKSAtIE1VTEhJR0goY29zYSwgdGkxKTsJCQ0KKwkJDQorCQkqYnVmMCsrID0gTVVMSElHSChzaW5iLCB0cjIpIC0gTVVMSElHSChjb3NiLCB0aTIpOw0KKwkJKmJ1ZjEtLSA9IE1VTEhJR0goY29zYiwgdHIyKSArIE1VTEhJR0goc2luYiwgdGkyKTsJDQorCX0NCit9DQorI2VuZGlmDQorDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogTWRjdF9Mb25nCisqIGRlc2NyaXB0aW9uOiAgdGhlIGxvbmcgYmxvY2sgbWRjdCwgaW5jbHVkZSBsb25nX3N0YXJ0IGJsb2NrLCBlbmRfbG9uZyBibG9jaworKgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCit2b2lkIE1kY3RfTG9uZyhpbnQgKmJ1ZikNCit7DQorCVByZU1EQ1QoYnVmLCAxMDI0LCBjb3NzaW50YWIgKyAxMjgpOw0KKw0KKwlTaHVmZmxlKGJ1ZiwgNTEyLCBiaXRyZXZUYWIgKyAxNyk7DQorCVJhZGl4OEZpcnN0KGJ1ZiwgNTEyID4+IDMpOwkJCQkJCQ0KKwlSYWRpeDRGRlQoYnVmLCA1MTIgPj4gMywgOCwgKGludCAqKXR3aWRUYWI1MTIpOw0KKw0KKwlQb3N0TURDVChidWYsIDEwMjQsIGNvc3NpbnRhYiArIDEyOCk7CQ0KK30NCisNCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBNZGN0X1Nob3J0CisqIGRlc2NyaXB0aW9uOiAgdGhlIHNob3J0IGJsb2NrIG1kY3QgCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK3ZvaWQgTWRjdF9TaG9ydChpbnQgKmJ1ZikNCit7DQorCVByZU1EQ1QoYnVmLCAxMjgsIGNvc3NpbnRhYik7DQorDQorCVNodWZmbGUoYnVmLCA2NCwgYml0cmV2VGFiKTsNCisJUmFkaXg0Rmlyc3QoYnVmLCA2NCA+PiAyKTsJCQkJCQkNCisJUmFkaXg0RkZUKGJ1ZiwgNjQgPj4gMiwgNCwgKGludCAqKXR3aWRUYWI2NCk7CQ0KKw0KKwlQb3N0TURDVChidWYsIDEyOCwgY29zc2ludGFiKTsJDQorfQ0KKworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogc2hpZnRNZGN0RGVsYXlCdWZmZXIKKyogZGVzY3JpcHRpb246ICAgIHRoZSBtZGN0IGRlbGF5IGJ1ZmZlciBoYXMgYSBzaXplIG9mIDE2MDAsCisqICBzbyB0aGUgY2FsY3VsYXRpb24gb2YgTE9ORyxTVE9QIG11c3QgYmUgIHNwaWx0IGluIHR3byAKKyogIHBhc3NlcyB3aXRoIDEwMjQgc2FtcGxlcyBhbmQgYSBtaWQgc2hpZnQsCisqICB0aGUgU0hPUlQgdHJhbnNmb3JtcyBjYW4gYmUgY29tcGxldGVkIGluIHRoZSBkZWxheSBidWZmZXIsCisqICBhbmQgYWZ0ZXJ3YXJkcyBhIHNoaWZ0CisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworc3RhdGljIHZvaWQgc2hpZnRNZGN0RGVsYXlCdWZmZXIoV29yZDE2ICptZGN0RGVsYXlCdWZmZXIsIC8qISBzdGFydCBvZiBtZGN0IGRlbGF5IGJ1ZmZlciAqLworCQkJCQkJCQkgV29yZDE2ICp0aW1lU2lnbmFsLCAgICAgIC8qISBwb2ludGVyIHRvIG5ldyB0aW1lIHNpZ25hbCBzYW1wbGVzLCBpbnRlcmxlYXZlZCAqLworCQkJCQkJCQkgV29yZDE2IGNoSW5jcmVtZW50ICAgICAgIC8qISBudW1iZXIgb2YgY2hhbm5lbHMgKi8KKwkJCQkJCQkJICkKK3sKKwlXb3JkMzIgaTsKKwlXb3JkMTYgKnNyQnVmID0gbWRjdERlbGF5QnVmZmVyOworCVdvcmQxNiAqZHNCdWYgPSBtZGN0RGVsYXlCdWZmZXIrRlJBTUVfTEVOX0xPTkc7CisKKwlmb3IoaSA9IDA7IGkgPCBCTE9DS19TV0lUQ0hJTkdfT0ZGU0VULUZSQU1FX0xFTl9MT05HOyBpKz0gOCkKKwl7CisJCSpzckJ1ZisrID0gKmRzQnVmKys7CSAqc3JCdWYrKyA9ICpkc0J1ZisrOworCQkqc3JCdWYrKyA9ICpkc0J1ZisrOwkgKnNyQnVmKysgPSAqZHNCdWYrKzsKKwkJKnNyQnVmKysgPSAqZHNCdWYrKzsJICpzckJ1ZisrID0gKmRzQnVmKys7CisJCSpzckJ1ZisrID0gKmRzQnVmKys7CSAqc3JCdWYrKyA9ICpkc0J1ZisrOworCX0KKworCXNyQnVmID0gbWRjdERlbGF5QnVmZmVyICsgQkxPQ0tfU1dJVENISU5HX09GRlNFVC1GUkFNRV9MRU5fTE9ORzsKKwlkc0J1ZiA9IHRpbWVTaWduYWw7CisKKwlmb3IoaT0wOyBpPEZSQU1FX0xFTl9MT05HOyBpKz04KQorCXsgICAKKwkJKnNyQnVmKysgPSAqZHNCdWY7IGRzQnVmICs9IGNoSW5jcmVtZW50OworCQkqc3JCdWYrKyA9ICpkc0J1ZjsgZHNCdWYgKz0gY2hJbmNyZW1lbnQ7CisJCSpzckJ1ZisrID0gKmRzQnVmOyBkc0J1ZiArPSBjaEluY3JlbWVudDsKKwkJKnNyQnVmKysgPSAqZHNCdWY7IGRzQnVmICs9IGNoSW5jcmVtZW50OworCQkqc3JCdWYrKyA9ICpkc0J1ZjsgZHNCdWYgKz0gY2hJbmNyZW1lbnQ7CisJCSpzckJ1ZisrID0gKmRzQnVmOyBkc0J1ZiArPSBjaEluY3JlbWVudDsKKwkJKnNyQnVmKysgPSAqZHNCdWY7IGRzQnVmICs9IGNoSW5jcmVtZW50OworCQkqc3JCdWYrKyA9ICpkc0J1ZjsgZHNCdWYgKz0gY2hJbmNyZW1lbnQ7CisJfQorfQ0KKw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBnZXRTY2FsZWZhY3Rvck9mU2hvcnRWZWN0b3JTdHJpZGUKKyogZGVzY3JpcHRpb246ICBDYWxjdWxhdGUgbWF4IHBvc3NpYmxlIHNjYWxlIGZhY3RvciBmb3IgaW5wdXQgdmVjdG9yIG9mIHNob3J0cworKiByZXR1cm5zOiAgICAgIE1heGltdW0gc2NhbGUgZmFjdG9yCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK3N0YXRpYyBXb3JkMTYgZ2V0U2NhbGVmYWN0b3JPZlNob3J0VmVjdG9yU3RyaWRlKGNvbnN0IFdvcmQxNiAqdmVjdG9yLCAvKiE8IFBvaW50ZXIgdG8gaW5wdXQgdmVjdG9yICovDQorCQkJCQkJCQkJCQkJV29yZDE2IGxlbiwgICAgICAgICAgIC8qITwgTGVuZ3RoIG9mIGlucHV0IHZlY3RvciAqLw0KKwkJCQkJCQkJCQkJCVdvcmQxNiBzdHJpZGUpICAgICAgICAvKiE8IFN0cmlkZSBvZiBpbnB1dCB2ZWN0b3IgKi8NCit7DQorCVdvcmQxNiBtYXhWYWwgPSAwOw0KKwlXb3JkMTYgYWJzVmFsOw0KKwlXb3JkMTYgaTsNCisNCisJZm9yKGk9MDsgaTxsZW47IGkrKyl7DQorCQlhYnNWYWwgPSBhYnNfcyh2ZWN0b3JbaSpzdHJpZGVdKTsNCisJCW1heFZhbCB8PSBhYnNWYWw7DQorCX0NCisNCisJcmV0dXJuKCBtYXhWYWwgPyBub3JtX3MobWF4VmFsKSA6IDE1KTsNCit9DQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKgorKiBmdW5jdGlvbiBuYW1lOiBUcmFuc2Zvcm1fUmVhbAorKiBkZXNjcmlwdGlvbjogIENhbGN1bGF0ZSB0cmFuc2Zvcm0gZmlsdGVyIGZvciBpbnB1dCB2ZWN0b3Igb2Ygc2hvcnRzCisqIHJldHVybnM6ICAgICAgVFJVRSBpZiBzdWNjZXNzCisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordm9pZCBUcmFuc2Zvcm1fUmVhbChXb3JkMTYgKm1kY3REZWxheUJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgV29yZDE2ICp0aW1lU2lnbmFsLAorICAgICAgICAgICAgICAgICAgICBXb3JkMTYgY2hJbmNyZW1lbnQsCisgICAgICAgICAgICAgICAgICAgIFdvcmQzMiAqcmVhbE91dCwKKyAgICAgICAgICAgICAgICAgICAgV29yZDE2ICptZGN0U2NhbGUsCisgICAgICAgICAgICAgICAgICAgIFdvcmQxNiBibG9ja1R5cGUKKyAgICAgICAgICAgICAgICAgICAgKQoreworCVdvcmQzMiBpLHc7CisJV29yZDMyIHRpbWVTaWduYWxTYW1wbGU7CisJV29yZDMyIHdzMSx3czI7CisJV29yZDE2ICpkY3RJbjAsICpkY3RJbjE7DQorCVdvcmQzMiAqb3V0RGF0YTAsICpvdXREYXRhMTsNCisJV29yZDMyICp3aW5QdHI7CisKKwlXb3JkMzIgZGVsYXlCdWZmZXJTZix0aW1lU2lnbmFsU2YsbWluU2Y7CisJV29yZDMyIGhlYWRSb29tPTA7CisJCisJc3dpdGNoKGJsb2NrVHlwZSl7CisJCQorCQkKKwljYXNlIExPTkdfV0lORE9XOgorCQkvKgorCQl3ZSBhY2Nlc3MgQkxPQ0tfU1dJVENISU5HX09GRlNFVCAoMTYwMCApIGRlbGF5IGJ1ZmZlciBzYW1wbGVzICsgNDQ4IG5ldyB0aW1lU2lnbmFsIHNhbXBsZXMKKwkJYW5kIGdldCB0aGUgYmlnZ2VzdCBzY2FsZSBmYWN0b3IgZm9yIG5leHQgY2FsY3VsYXRlIG1vcmUgcHJlY2lzZQorCQkqLworCQlkZWxheUJ1ZmZlclNmID0gZ2V0U2NhbGVmYWN0b3JPZlNob3J0VmVjdG9yU3RyaWRlKG1kY3REZWxheUJ1ZmZlcixCTE9DS19TV0lUQ0hJTkdfT0ZGU0VULDEpOworCQl0aW1lU2lnbmFsU2YgID0gZ2V0U2NhbGVmYWN0b3JPZlNob3J0VmVjdG9yU3RyaWRlKHRpbWVTaWduYWwsMipGUkFNRV9MRU5fTE9ORy1CTE9DS19TV0lUQ0hJTkdfT0ZGU0VULGNoSW5jcmVtZW50KTsKKwkJbWluU2YgPSBtaW4oZGVsYXlCdWZmZXJTZix0aW1lU2lnbmFsU2YpOworCQltaW5TZiA9IG1pbihtaW5TZiwxNCk7CisJCQorCQlkY3RJbjAgPSBtZGN0RGVsYXlCdWZmZXI7CisJCWRjdEluMSA9IG1kY3REZWxheUJ1ZmZlciArIEZSQU1FX0xFTl9MT05HIC0gMTsKKwkJb3V0RGF0YTAgPSByZWFsT3V0ICsgRlJBTUVfTEVOX0xPTkcvMjsKKwkJCisJCS8qIGFkZCB3aW5kb3dzIGFuZCBwcmUgYWRkIGZvciBtZGN0IHRvIGxhc3QgYnVmZmVyKi8KKwkJd2luUHRyID0gKGludCAqKUxvbmdXaW5kb3dLQkQ7CisJCWZvcihpPTA7aTxGUkFNRV9MRU5fTE9ORy8yO2krKyl7CisJCQl0aW1lU2lnbmFsU2FtcGxlID0gKCpkY3RJbjArKykgPDwgbWluU2Y7IAorCQkJd3MxID0gdGltZVNpZ25hbFNhbXBsZSAqICgqd2luUHRyID4+IDE2KTsKKwkJCXRpbWVTaWduYWxTYW1wbGUgPSAoKmRjdEluMS0tKSA8PCBtaW5TZjsKKwkJCXdzMiA9IHRpbWVTaWduYWxTYW1wbGUgKiAoKndpblB0ciAmIDB4ZmZmZik7CisJCQl3aW5QdHIgKys7CisJCQkvKiBzaGlmdCAyIHRvIGF2b2lkIG92ZXJmbG93IG5leHQgKi8KKwkJCSpvdXREYXRhMCsrID0gKHdzMSA+PiAyKSAtICh3czIgPj4gMik7CisJCX0KKwkJCisJCXNoaWZ0TWRjdERlbGF5QnVmZmVyKG1kY3REZWxheUJ1ZmZlcix0aW1lU2lnbmFsLGNoSW5jcmVtZW50KTsKKwkJCisJCS8qIGFkZCB3aW5kb3dzIGFuZCBwcmUgYWRkIGZvciBtZGN0IHRvIG5ldyBidWZmZXIqLworCQlkY3RJbjAgPSBtZGN0RGVsYXlCdWZmZXI7CisJCWRjdEluMSA9IG1kY3REZWxheUJ1ZmZlciArIEZSQU1FX0xFTl9MT05HIC0gMTsKKwkJb3V0RGF0YTAgPSByZWFsT3V0ICsgRlJBTUVfTEVOX0xPTkcvMiAtIDE7IAorCQl3aW5QdHIgPSAoaW50ICopTG9uZ1dpbmRvd0tCRDsKKwkJZm9yKGk9MDtpPEZSQU1FX0xFTl9MT05HLzI7aSsrKXsgICAgCisJCQl0aW1lU2lnbmFsU2FtcGxlID0gKCpkY3RJbjArKykgPDwgbWluU2Y7CisJCQl3czEgPSB0aW1lU2lnbmFsU2FtcGxlICogKCp3aW5QdHIgJiAweGZmZmYpOworCQkJdGltZVNpZ25hbFNhbXBsZSA9ICgqZGN0SW4xLS0pIDw8IG1pblNmOworCQkJd3MyID0gdGltZVNpZ25hbFNhbXBsZSAqICgqd2luUHRyID4+IDE2KTsKKwkJCXdpblB0cisrOworCQkJLyogc2hpZnQgMiB0byBhdm9pZCBvdmVyZmxvdyBuZXh0ICovCisJCQkqb3V0RGF0YTAtLSA9IC0oKHdzMSA+PiAyKSArICh3czIgPj4gMikpOyAKKwkJfQorCisJCU1kY3RfTG9uZyhyZWFsT3V0KTsNCisJCS8qIHVwZGF0ZSBzY2FsZSBmYWN0b3IgKi8NCisJCW1pblNmID0gMTQgLSBtaW5TZjsKKwkJKm1kY3RTY2FsZT1taW5TZjsgCisJCWJyZWFrOworCQkKKwljYXNlIFNUQVJUX1dJTkRPVzoKKwkJLyoKKwkJd2UgYWNjZXNzIEJMT0NLX1NXSVRDSElOR19PRkZTRVQgKDE2MDAgKSBkZWxheSBidWZmZXIgc2FtcGxlcyArIG5vIHRpbWVTaWduYWwgc2FtcGxlcworCQlhbmQgZ2V0IHRoZSBiaWdnZXN0IHNjYWxlIGZhY3RvciBmb3IgbmV4dCBjYWxjdWxhdGUgbW9yZSBwcmVjaXNlCisJCSovCisJCW1pblNmID0gZ2V0U2NhbGVmYWN0b3JPZlNob3J0VmVjdG9yU3RyaWRlKG1kY3REZWxheUJ1ZmZlcixCTE9DS19TV0lUQ0hJTkdfT0ZGU0VULDEpOworCQltaW5TZiA9IG1pbihtaW5TZiwxNCk7CisKKwkJZGN0SW4wID0gbWRjdERlbGF5QnVmZmVyOworCQlkY3RJbjEgPSBtZGN0RGVsYXlCdWZmZXIgKyBGUkFNRV9MRU5fTE9ORyAtIDE7CisJCW91dERhdGEwID0gcmVhbE91dCArIEZSQU1FX0xFTl9MT05HLzI7IAkJCisJCXdpblB0ciA9IChpbnQgKilMb25nV2luZG93S0JEOworCisJCS8qIGFkZCB3aW5kb3dzIGFuZCBwcmUgYWRkIGZvciBtZGN0IHRvIGxhc3QgYnVmZmVyKi8KKwkJZm9yKGk9MDtpPEZSQU1FX0xFTl9MT05HLzI7aSsrKXsKKwkJCXRpbWVTaWduYWxTYW1wbGUgPSAoKmRjdEluMCsrKSA8PCBtaW5TZjsKKwkJCXdzMSA9IHRpbWVTaWduYWxTYW1wbGUgKiAoKndpblB0ciA+PiAxNik7CisJCQl0aW1lU2lnbmFsU2FtcGxlID0gKCpkY3RJbjEtLSkgPDwgbWluU2Y7CisJCQl3czIgPSB0aW1lU2lnbmFsU2FtcGxlICogKCp3aW5QdHIgJiAweGZmZmYpOworCQkJd2luUHRyICsrOworCQkJKm91dERhdGEwKysgPSAod3MxID4+IDIpIC0gKHdzMiA+PiAyKTsgIC8qIHNoaWZ0IDIgdG8gYXZvaWQgb3ZlcmZsb3cgbmV4dCAqLw0KKwkJfQorCQkKKwkJc2hpZnRNZGN0RGVsYXlCdWZmZXIobWRjdERlbGF5QnVmZmVyLHRpbWVTaWduYWwsY2hJbmNyZW1lbnQpOworCQkKKwkJb3V0RGF0YTAgPSByZWFsT3V0ICsgRlJBTUVfTEVOX0xPTkcvMiAtIDE7IAorCQlmb3IoaT0wO2k8TFNfVFJBTlM7aSsrKXsKKwkJCSpvdXREYXRhMC0tID0gLW1kY3REZWxheUJ1ZmZlcltpXSA8PCAoMTUgLSAyICsgbWluU2YpOyAgCisJCX0KKwkJCisJCS8qIGFkZCB3aW5kb3dzIGFuZCBwcmUgYWRkIGZvciBtZGN0IHRvIG5ldyBidWZmZXIqLworCQlkY3RJbjAgPSBtZGN0RGVsYXlCdWZmZXIgKyBMU19UUkFOUzsKKwkJZGN0SW4xID0gbWRjdERlbGF5QnVmZmVyICsgRlJBTUVfTEVOX0xPTkcgLSAxIC0gTFNfVFJBTlM7CisJCW91dERhdGEwID0gcmVhbE91dCArIEZSQU1FX0xFTl9MT05HLzIgLSAxIC1MU19UUkFOUzsgCisJCXdpblB0ciA9IChpbnQgKilTaG9ydFdpbmRvd1NpbmU7CisJCWZvcihpPTA7aTxGUkFNRV9MRU5fU0hPUlQvMjtpKyspeworCQkJdGltZVNpZ25hbFNhbXBsZT0gKCpkY3RJbjArKykgPDwgbWluU2Y7CisJCQl3czEgPSB0aW1lU2lnbmFsU2FtcGxlICogKCp3aW5QdHIgJiAweGZmZmYpOworCQkJdGltZVNpZ25hbFNhbXBsZT0gKCpkY3RJbjEtLSkgPDwgbWluU2Y7CisJCQl3czIgPSB0aW1lU2lnbmFsU2FtcGxlICogKCp3aW5QdHIgPj4gMTYpOworCQkJd2luUHRyKys7CisJCQkqb3V0RGF0YTAtLSA9ICAtKCh3czEgPj4gMikgKyAod3MyID4+IDIpKTsgIC8qIHNoaWZ0IDIgdG8gYXZvaWQgb3ZlcmZsb3cgbmV4dCAqLw0KKwkJfQorCisJCU1kY3RfTG9uZyhyZWFsT3V0KTsKKwkJLyogdXBkYXRlIHNjYWxlIGZhY3RvciAqLworCQltaW5TZiA9IDE0IC0gbWluU2Y7CisJCSptZGN0U2NhbGU9IG1pblNmOworCQlicmVhazsKKwkJCisJY2FzZSBTVE9QX1dJTkRPVzoKKwkJLyoKKwkJd2UgYWNjZXNzIEJMT0NLX1NXSVRDSElOR19PRkZTRVQtTFNfVFJBTlMgKDE2MDAtNDQ4ICkgZGVsYXkgYnVmZmVyIHNhbXBsZXMgKyA0NDggbmV3IHRpbWVTaWduYWwgc2FtcGxlcworCQlhbmQgZ2V0IHRoZSBiaWdnZXN0IHNjYWxlIGZhY3RvciBmb3IgbmV4dCBjYWxjdWxhdGUgbW9yZSBwcmVjaXNlCisJCSovCisJCWRlbGF5QnVmZmVyU2YgPSBnZXRTY2FsZWZhY3Rvck9mU2hvcnRWZWN0b3JTdHJpZGUobWRjdERlbGF5QnVmZmVyK0xTX1RSQU5TLEJMT0NLX1NXSVRDSElOR19PRkZTRVQtTFNfVFJBTlMsMSk7CisJCXRpbWVTaWduYWxTZiAgPSBnZXRTY2FsZWZhY3Rvck9mU2hvcnRWZWN0b3JTdHJpZGUodGltZVNpZ25hbCwyKkZSQU1FX0xFTl9MT05HLUJMT0NLX1NXSVRDSElOR19PRkZTRVQsY2hJbmNyZW1lbnQpOworCQltaW5TZiA9IG1pbihkZWxheUJ1ZmZlclNmLHRpbWVTaWduYWxTZik7ICAgIAorCQltaW5TZiA9IG1pbihtaW5TZiwxMyk7CisJCQorCQlvdXREYXRhMCA9IHJlYWxPdXQgKyBGUkFNRV9MRU5fTE9ORy8yOworCQlkY3RJbjEgPSBtZGN0RGVsYXlCdWZmZXIgKyBGUkFNRV9MRU5fTE9ORyAtIDE7CisJCWZvcihpPTA7aTxMU19UUkFOUztpKyspeworCQkJKm91dERhdGEwKysgPSAtKCpkY3RJbjEtLSkgPDwgKDE1IC0gMiArIG1pblNmKTsgICAgCisJCX0KKwkJCisJCS8qIGFkZCB3aW5kb3dzIGFuZCBwcmUgYWRkIGZvciBtZGN0IHRvIGxhc3QgYnVmZmVyKi8KKwkJZGN0SW4wID0gbWRjdERlbGF5QnVmZmVyICsgTFNfVFJBTlM7CisJCWRjdEluMSA9IG1kY3REZWxheUJ1ZmZlciArIEZSQU1FX0xFTl9MT05HIC0gMSAtIExTX1RSQU5TOworCQlvdXREYXRhMCA9IHJlYWxPdXQgKyBGUkFNRV9MRU5fTE9ORy8yICsgTFNfVFJBTlM7IAorCQl3aW5QdHIgPSAoaW50ICopU2hvcnRXaW5kb3dTaW5lOworCQlmb3IoaT0wO2k8RlJBTUVfTEVOX1NIT1JULzI7aSsrKXsKKwkJCXRpbWVTaWduYWxTYW1wbGUgPSAoKmRjdEluMCsrKSA8PCBtaW5TZjsKKwkJCXdzMSA9IHRpbWVTaWduYWxTYW1wbGUgKiAoKndpblB0ciA+PiAxNik7CisJCQl0aW1lU2lnbmFsU2FtcGxlPSAoKmRjdEluMS0tKSA8PCBtaW5TZjsKKwkJCXdzMiA9IHRpbWVTaWduYWxTYW1wbGUgKiAoKndpblB0ciAmIDB4ZmZmZik7CisJCQl3aW5QdHIrKzsKKwkJCSpvdXREYXRhMCsrID0gKHdzMSA+PiAyKSAtICh3czIgPj4gMik7ICAvKiBzaGlmdCAyIHRvIGF2b2lkIG92ZXJmbG93IG5leHQgKi8NCisJCX0KKwkJCisJCXNoaWZ0TWRjdERlbGF5QnVmZmVyKG1kY3REZWxheUJ1ZmZlcix0aW1lU2lnbmFsLGNoSW5jcmVtZW50KTsKKwkJCisJCS8qIGFkZCB3aW5kb3dzIGFuZCBwcmUgYWRkIGZvciBtZGN0IHRvIG5ldyBidWZmZXIqLworCQlkY3RJbjAgPSBtZGN0RGVsYXlCdWZmZXI7CisJCWRjdEluMSA9IG1kY3REZWxheUJ1ZmZlciArIEZSQU1FX0xFTl9MT05HIC0gMTsKKwkJb3V0RGF0YTAgPSByZWFsT3V0ICsgRlJBTUVfTEVOX0xPTkcvMiAtIDE7IAorCQl3aW5QdHIgPSAoaW50ICopTG9uZ1dpbmRvd0tCRDsKKwkJZm9yKGk9MDtpPEZSQU1FX0xFTl9MT05HLzI7aSsrKXsKKwkJCXRpbWVTaWduYWxTYW1wbGU9ICgqZGN0SW4wKyspIDw8IG1pblNmOworCQkJd3MxID0gdGltZVNpZ25hbFNhbXBsZSAqKCp3aW5QdHIgJiAweGZmZmYpOworCQkJdGltZVNpZ25hbFNhbXBsZT0gKCpkY3RJbjEtLSkgPDwgbWluU2Y7CisJCQl3czIgPSB0aW1lU2lnbmFsU2FtcGxlICogKCp3aW5QdHIgPj4gMTYpOworCQkJKm91dERhdGEwLS0gPSAgLSgod3MxID4+IDIpICsgKHdzMiA+PiAyKSk7ICAvKiBzaGlmdCAyIHRvIGF2b2lkIG92ZXJmbG93IG5leHQgKi8NCisJCQl3aW5QdHIrKzsNCisJCX0KKwkJCisJCU1kY3RfTG9uZyhyZWFsT3V0KTsKKwkJbWluU2YgPSAxNCAtIG1pblNmOworCQkqbWRjdFNjYWxlPSBtaW5TZjsgLyogdXBkYXRlIHNjYWxlIGZhY3RvciAqLworCQlicmVhazsKKwkJCisJY2FzZSBTSE9SVF9XSU5ET1c6CisJCS8qCisJCXdlIGFjY2VzcyBCTE9DS19TV0lUQ0hJTkdfT0ZGU0VUICgxNjAwICkgZGVsYXkgYnVmZmVyIHNhbXBsZXMgKyBubyBuZXcgdGltZVNpZ25hbCBzYW1wbGVzCisJCWFuZCBnZXQgdGhlIGJpZ2dlc3Qgc2NhbGUgZmFjdG9yIGZvciBuZXh0IGNhbGN1bGF0ZSBtb3JlIHByZWNpc2UKKwkJKi8JCQorCQltaW5TZiA9IGdldFNjYWxlZmFjdG9yT2ZTaG9ydFZlY3RvclN0cmlkZShtZGN0RGVsYXlCdWZmZXIrVFJBTlNGT1JNX09GRlNFVF9TSE9SVCw5KkZSQU1FX0xFTl9TSE9SVCwxKTsKKwkJbWluU2YgPSBtaW4obWluU2YsMTApOworCQkKKwkJCisJCWZvcih3PTA7dzxUUkFOU19GQUM7dysrKXsKKwkJCWRjdEluMCA9IG1kY3REZWxheUJ1ZmZlcit3KkZSQU1FX0xFTl9TSE9SVCtUUkFOU0ZPUk1fT0ZGU0VUX1NIT1JUOworCQkJZGN0SW4xID0gbWRjdERlbGF5QnVmZmVyK3cqRlJBTUVfTEVOX1NIT1JUK1RSQU5TRk9STV9PRkZTRVRfU0hPUlQgKyBGUkFNRV9MRU5fU0hPUlQtMTsKKwkJCW91dERhdGEwID0gcmVhbE91dCArIEZSQU1FX0xFTl9TSE9SVC8yOyAKKwkJCW91dERhdGExID0gcmVhbE91dCArIEZSQU1FX0xFTl9TSE9SVC8yIC0gMTsgCisKKwkJCXdpblB0ciA9IChpbnQgKilTaG9ydFdpbmRvd1NpbmU7CisJCQlmb3IoaT0wO2k8RlJBTUVfTEVOX1NIT1JULzI7aSsrKXsKKwkJCQl0aW1lU2lnbmFsU2FtcGxlPSAqZGN0SW4wIDw8IG1pblNmOworCQkJCXdzMSA9IHRpbWVTaWduYWxTYW1wbGUgKiAoKndpblB0ciA+PiAxNik7CisJCQkJdGltZVNpZ25hbFNhbXBsZT0gKmRjdEluMSA8PCBtaW5TZjsKKwkJCQl3czIgPSB0aW1lU2lnbmFsU2FtcGxlICogKCp3aW5QdHIgJiAweGZmZmYpOworCQkJCSpvdXREYXRhMCsrID0gKHdzMSA+PiAyKSAtICh3czIgPj4gMik7ICAvKiBzaGlmdCAyIHRvIGF2b2lkIG92ZXJmbG93IG5leHQgKi8NCisJCQkJCisJCQkJdGltZVNpZ25hbFNhbXBsZT0gKihkY3RJbjAgKyBGUkFNRV9MRU5fU0hPUlQpIDw8IG1pblNmOworCQkJCXdzMSA9IHRpbWVTaWduYWxTYW1wbGUgKiAoKndpblB0ciAmIDB4ZmZmZik7CisJCQkJdGltZVNpZ25hbFNhbXBsZT0gKihkY3RJbjEgKyBGUkFNRV9MRU5fU0hPUlQpIDw8IG1pblNmOworCQkJCXdzMiA9IHRpbWVTaWduYWxTYW1wbGUgKiAoKndpblB0ciA+PiAxNik7CisJCQkJKm91dERhdGExLS0gPSAgLSgod3MxID4+IDIpICsgKHdzMiA+PiAyKSk7ICAvKiBzaGlmdCAyIHRvIGF2b2lkIG92ZXJmbG93IG5leHQgKi8NCisNCisJCQkJd2luUHRyKys7DQorCQkJCWRjdEluMCsrOw0KKwkJCQlkY3RJbjEtLTsNCisJCQl9CisKKwkJCU1kY3RfU2hvcnQocmVhbE91dCk7CisJCQlyZWFsT3V0ICs9IEZSQU1FX0xFTl9TSE9SVDsKKwkJfQorCQkNCisJCW1pblNmID0gMTEgLSBtaW5TZjsKKwkJKm1kY3RTY2FsZSA9IG1pblNmOyAvKiB1cGRhdGUgc2NhbGUgZmFjdG9yICovCisJCQorCQlzaGlmdE1kY3REZWxheUJ1ZmZlcihtZGN0RGVsYXlCdWZmZXIsdGltZVNpZ25hbCxjaEluY3JlbWVudCk7CisJCWJyZWFrOworICB9Cit9CisKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJuYi9lbmMvQU1STkJFbmNvZGVyLmNwcCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJuYi9lbmMvQU1STkJFbmNvZGVyLmNwcAppbmRleCBmMzQ5NjcxLi40YzAyZmU5IDEwMDY0NAotLS0gYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1ybmIvZW5jL0FNUk5CRW5jb2Rlci5jcHAKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2Ftcm5iL2VuYy9BTVJOQkVuY29kZXIuY3BwCkBAIC0yOSw4ICsyOSw5IEBACiBzdGF0aWMgY29uc3QgaW50MzJfdCBrTnVtU2FtcGxlc1BlckZyYW1lID0gMTYwOwogc3RhdGljIGNvbnN0IGludDMyX3Qga1NhbXBsZVJhdGUgPSA4MDAwOwogCi1BTVJOQkVuY29kZXI6OkFNUk5CRW5jb2Rlcihjb25zdCBzcDxNZWRpYVNvdXJjZT4gJnNvdXJjZSkKK0FNUk5CRW5jb2Rlcjo6QU1STkJFbmNvZGVyKGNvbnN0IHNwPE1lZGlhU291cmNlPiAmc291cmNlLCBjb25zdCBzcDxNZXRhRGF0YT4gJm1ldGEpCiAgICAgOiBtU291cmNlKHNvdXJjZSksCisgICAgICBtTWV0YShtZXRhKSwKICAgICAgIG1TdGFydGVkKGZhbHNlKSwKICAgICAgIG1CdWZmZXJHcm91cChOVUxMKSwKICAgICAgIG1FbmNTdGF0ZShOVUxMKSwKQEAgLTY5LDcgKzcwLDEwIEBACiB9CiAKIHN0YXR1c190IEFNUk5CRW5jb2Rlcjo6c3RhcnQoTWV0YURhdGEgKnBhcmFtcykgewotICAgIENIRUNLKCFtU3RhcnRlZCk7CisgICAgaWYgKG1TdGFydGVkKSB7CisgICAgICAgIExPR1coIkNhbGwgc3RhcnQoKSB3aGVuIGVuY29kZXIgYWxyZWFkeSBzdGFydGVkIik7CisgICAgICAgIHJldHVybiBPSzsKKyAgICB9CiAKICAgICBtQnVmZmVyR3JvdXAgPSBuZXcgTWVkaWFCdWZmZXJHcm91cDsKICAgICBtQnVmZmVyR3JvdXAtPmFkZF9idWZmZXIobmV3IE1lZGlhQnVmZmVyKDMyKSk7CkBAIC03OCw3ICs4Miw3IEBACiAgICAgICAgICAgICAgICAgJm1FbmNTdGF0ZSwgJm1TaWRTdGF0ZSwgZmFsc2UgLyogZHR4X2VuYWJsZSAqLyksCiAgICAgICAgICAgICAgMCk7CiAKLSAgICBtU291cmNlLT5zdGFydCgpOworICAgIG1Tb3VyY2UtPnN0YXJ0KHBhcmFtcyk7CiAKICAgICBtQW5jaG9yVGltZVVzID0gMDsKICAgICBtTnVtRnJhbWVzT3V0cHV0ID0gMDsKQEAgLTk2LDcgKzEwMCwxMCBAQAogfQogCiBzdGF0dXNfdCBBTVJOQkVuY29kZXI6OnN0b3AoKSB7Ci0gICAgQ0hFQ0sobVN0YXJ0ZWQpOworICAgIGlmICghbVN0YXJ0ZWQpIHsKKyAgICAgICAgTE9HVygiQ2FsbCBzdG9wKCkgd2hlbiBlbmNvZGVyIGhhcyBub3Qgc3RhcnRlZC4iKTsKKyAgICAgICAgcmV0dXJuIE9LOworICAgIH0KIAogICAgIGlmIChtSW5wdXRCdWZmZXIpIHsKICAgICAgICAgbUlucHV0QnVmZmVyLT5yZWxlYXNlKCk7CkBAIC0xMTksMjggKzEyNiwxNiBAQAogc3A8TWV0YURhdGE+IEFNUk5CRW5jb2Rlcjo6Z2V0Rm9ybWF0KCkgewogICAgIHNwPE1ldGFEYXRhPiBzcmNGb3JtYXQgPSBtU291cmNlLT5nZXRGb3JtYXQoKTsKIAotICAgIGludDMyX3QgbnVtQ2hhbm5lbHM7Ci0gICAgaW50MzJfdCBzYW1wbGVSYXRlOwotCi0gICAgQ0hFQ0soc3JjRm9ybWF0LT5maW5kSW50MzIoa0tleUNoYW5uZWxDb3VudCwgJm51bUNoYW5uZWxzKSk7Ci0gICAgQ0hFQ0tfRVEobnVtQ2hhbm5lbHMsIDEpOwotCi0gICAgQ0hFQ0soc3JjRm9ybWF0LT5maW5kSW50MzIoa0tleVNhbXBsZVJhdGUsICZzYW1wbGVSYXRlKSk7Ci0gICAgQ0hFQ0tfRVEoc2FtcGxlUmF0ZSwga1NhbXBsZVJhdGUpOwotCi0gICAgc3A8TWV0YURhdGE+IG1ldGEgPSBuZXcgTWV0YURhdGE7Ci0gICAgbWV0YS0+c2V0Q1N0cmluZyhrS2V5TUlNRVR5cGUsIE1FRElBX01JTUVUWVBFX0FVRElPX0FNUl9OQik7Ci0gICAgbWV0YS0+c2V0SW50MzIoa0tleUNoYW5uZWxDb3VudCwgbnVtQ2hhbm5lbHMpOwotICAgIG1ldGEtPnNldEludDMyKGtLZXlTYW1wbGVSYXRlLCBzYW1wbGVSYXRlKTsKKyAgICBtTWV0YS0+c2V0Q1N0cmluZyhrS2V5TUlNRVR5cGUsIE1FRElBX01JTUVUWVBFX0FVRElPX0FNUl9OQik7CiAKICAgICBpbnQ2NF90IGR1cmF0aW9uVXM7CiAgICAgaWYgKHNyY0Zvcm1hdC0+ZmluZEludDY0KGtLZXlEdXJhdGlvbiwgJmR1cmF0aW9uVXMpKSB7Ci0gICAgICAgIG1ldGEtPnNldEludDY0KGtLZXlEdXJhdGlvbiwgZHVyYXRpb25Vcyk7CisgICAgICAgIG1NZXRhLT5zZXRJbnQ2NChrS2V5RHVyYXRpb24sIGR1cmF0aW9uVXMpOwogICAgIH0KIAotICAgIG1ldGEtPnNldENTdHJpbmcoa0tleURlY29kZXJDb21wb25lbnQsICJBTVJOQkVuY29kZXIiKTsKKyAgICBtTWV0YS0+c2V0Q1N0cmluZyhrS2V5RGVjb2RlckNvbXBvbmVudCwgIkFNUk5CRW5jb2RlciIpOwogCi0gICAgcmV0dXJuIG1ldGE7CisgICAgcmV0dXJuIG1NZXRhOwogfQogCiBzdGF0dXNfdCBBTVJOQkVuY29kZXI6OnJlYWQoCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvQU1SV0JFbmNvZGVyLmNwcCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9BTVJXQkVuY29kZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyNTdjNmEKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvQU1SV0JFbmNvZGVyLmNwcApAQCAtMCwwICsxLDI4NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8vI2RlZmluZSBMT0dfTkRFQlVHIDAKKyNkZWZpbmUgTE9HX1RBRyAiQU1SV0JFbmNvZGVyIgorI2luY2x1ZGUgPHV0aWxzL0xvZy5oPgorCisjaW5jbHVkZSAiQU1SV0JFbmNvZGVyLmgiCisjaW5jbHVkZSAidm9BTVJXQi5oIgorI2luY2x1ZGUgImNtbk1lbW9yeS5oIgorCisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFCdWZmZXJHcm91cC5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhRGVidWcuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYURlZnMuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYUVycm9ycy5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01ldGFEYXRhLmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworc3RhdGljIGNvbnN0IGludDMyX3Qga051bVNhbXBsZXNQZXJGcmFtZSA9IDMyMDsKK3N0YXRpYyBjb25zdCBpbnQzMl90IGtCaXRzUGVyU2FtcGxlID0gMTY7CitzdGF0aWMgY29uc3QgaW50MzJfdCBrSW5wdXRCdWZmZXJTaXplID0gKGtCaXRzUGVyU2FtcGxlIC8gOCkgKiBrTnVtU2FtcGxlc1BlckZyYW1lOworc3RhdGljIGNvbnN0IGludDMyX3Qga1NhbXBsZVJhdGUgPSAxNjAwMDsKK3N0YXRpYyBjb25zdCBpbnQzMl90IGtOdW1DaGFubmVscyA9IDE7CisKK0FNUldCRW5jb2Rlcjo6QU1SV0JFbmNvZGVyKGNvbnN0IHNwPE1lZGlhU291cmNlPiAmc291cmNlLCBjb25zdCBzcDxNZXRhRGF0YT4gJm1ldGEpCisgICAgOiBtU291cmNlKHNvdXJjZSksCisgICAgICBtTWV0YShtZXRhKSwKKyAgICAgIG1TdGFydGVkKGZhbHNlKSwKKyAgICAgIG1CdWZmZXJHcm91cChOVUxMKSwKKyAgICAgIG1JbnB1dEJ1ZmZlcihOVUxMKSwKKyAgICAgIG1FbmNvZGVySGFuZGxlKE5VTEwpLAorICAgICAgbUFwaUhhbmRsZShOVUxMKSwKKyAgICAgIG1NZW1PcGVyYXRvcihOVUxMKSwKKyAgICAgIG1BbmNob3JUaW1lVXMoMCksCisgICAgICBtTnVtRnJhbWVzT3V0cHV0KDApLAorICAgICAgbU51bUlucHV0U2FtcGxlcygwKSB7Cit9CisKK3N0YXRpYyBWT0FNUldCTU9ERSBwaWNrTW9kZUZyb21CaXRSYXRlKGludDMyX3QgYnBzKSB7CisgICAgQ0hFQ0soYnBzID49IDApOworICAgIGlmIChicHMgPD0gNjYwMCkgeworICAgICAgICByZXR1cm4gVk9BTVJXQl9NRDY2OworICAgIH0gZWxzZSBpZiAoYnBzIDw9IDg4NTApIHsKKyAgICAgICAgcmV0dXJuIFZPQU1SV0JfTUQ4ODU7CisgICAgfSBlbHNlIGlmIChicHMgPD0gMTI2NTApIHsKKyAgICAgICAgcmV0dXJuIFZPQU1SV0JfTUQxMjY1OworICAgIH0gZWxzZSBpZiAoYnBzIDw9IDE0MjUwKSB7CisgICAgICAgIHJldHVybiBWT0FNUldCX01EMTQyNTsKKyAgICB9IGVsc2UgaWYgKGJwcyA8PSAxNTg1MCkgeworICAgICAgICByZXR1cm4gVk9BTVJXQl9NRDE1ODU7CisgICAgfSBlbHNlIGlmIChicHMgPD0gMTgyNTApIHsKKyAgICAgICAgcmV0dXJuIFZPQU1SV0JfTUQxODI1OworICAgIH0gZWxzZSBpZiAoYnBzIDw9IDE5ODUwKSB7CisgICAgICAgIHJldHVybiBWT0FNUldCX01EMTk4NTsKKyAgICB9IGVsc2UgaWYgKGJwcyA8PSAyMzA1MCkgeworICAgICAgICByZXR1cm4gVk9BTVJXQl9NRDIzMDU7CisgICAgfQorICAgIHJldHVybiBWT0FNUldCX01EMjM4NTsKK30KKworc3RhdHVzX3QgQU1SV0JFbmNvZGVyOjppbml0Q2hlY2soKSB7CisgICAgQ0hFQ0sobUFwaUhhbmRsZSA9PSBOVUxMICYmIG1FbmNvZGVySGFuZGxlID09IE5VTEwpOworICAgIENIRUNLKG1NZXRhLT5maW5kSW50MzIoa0tleUJpdFJhdGUsICZtQml0UmF0ZSkpOworCisgICAgbUFwaUhhbmRsZSA9IG5ldyBWT19BVURJT19DT0RFQ0FQSTsKKyAgICBDSEVDSyhtQXBpSGFuZGxlKTsKKworICAgIGlmIChWT19FUlJfTk9ORSAhPSB2b0dldEFNUldCRW5jQVBJKG1BcGlIYW5kbGUpKSB7CisgICAgICAgIExPR0UoIkZhaWxlZCB0byBnZXQgYXBpIGhhbmRsZSIpOworICAgICAgICByZXR1cm4gVU5LTk9XTl9FUlJPUjsKKyAgICB9CisKKyAgICBtTWVtT3BlcmF0b3IgPSBuZXcgVk9fTUVNX09QRVJBVE9SOworICAgIENIRUNLKG1NZW1PcGVyYXRvciAhPSBOVUxMKTsKKyAgICBtTWVtT3BlcmF0b3ItPkFsbG9jID0gY21uTWVtQWxsb2M7CisgICAgbU1lbU9wZXJhdG9yLT5Db3B5ID0gY21uTWVtQ29weTsKKyAgICBtTWVtT3BlcmF0b3ItPkZyZWUgPSBjbW5NZW1GcmVlOworICAgIG1NZW1PcGVyYXRvci0+U2V0ID0gY21uTWVtU2V0OworICAgIG1NZW1PcGVyYXRvci0+Q2hlY2sgPSBjbW5NZW1DaGVjazsKKworICAgIFZPX0NPREVDX0lOSVRfVVNFUkRBVEEgdXNlckRhdGE7CisgICAgbWVtc2V0KCZ1c2VyRGF0YSwgMCwgc2l6ZW9mKHVzZXJEYXRhKSk7CisgICAgdXNlckRhdGEubWVtZmxhZyA9IFZPX0lNRl9VU0VSTUVNT1BFUkFUT1I7CisgICAgdXNlckRhdGEubWVtRGF0YSA9IChWT19QVFIpIG1NZW1PcGVyYXRvcjsKKyAgICBpZiAoVk9fRVJSX05PTkUgIT0gbUFwaUhhbmRsZS0+SW5pdCgmbUVuY29kZXJIYW5kbGUsIFZPX0FVRElPX0NvZGluZ0FNUldCLCAmdXNlckRhdGEpKSB7CisgICAgICAgIExPR0UoIkZhaWxlZCB0byBpbml0IEFNUldCIGVuY29kZXIiKTsKKyAgICAgICAgcmV0dXJuIFVOS05PV05fRVJST1I7CisgICAgfQorCisgICAgLy8gQ29uZmlndXJlIEFNUldCIGVuY29kZXIkCisgICAgVk9BTVJXQk1PREUgbW9kZSA9IHBpY2tNb2RlRnJvbUJpdFJhdGUobUJpdFJhdGUpOworICAgIGlmIChWT19FUlJfTk9ORSAhPSBtQXBpSGFuZGxlLT5TZXRQYXJhbShtRW5jb2RlckhhbmRsZSwgVk9fUElEX0FNUldCX01PREUsICAmbW9kZSkpIHsKKyAgICAgICAgTE9HRSgiRmFpbGVkIHRvIHNldCBBTVJXQiBlbmNvZGVyIG1vZGUgdG8gJWQiLCBtb2RlKTsKKyAgICAgICAgcmV0dXJuIFVOS05PV05fRVJST1I7CisgICAgfQorCisgICAgVk9BTVJXQkZSQU1FVFlQRSB0eXBlID0gVk9BTVJXQl9SRkMzMjY3OworICAgIGlmIChWT19FUlJfTk9ORSAhPSBtQXBpSGFuZGxlLT5TZXRQYXJhbShtRW5jb2RlckhhbmRsZSwgVk9fUElEX0FNUldCX0ZSQU1FVFlQRSwgJnR5cGUpKSB7CisgICAgICAgIExPR0UoIkZhaWxlZCB0byBzZXQgQU1SV0IgZW5jb2RlciBmcmFtZSB0eXBlIHRvICVkIiwgdHlwZSk7CisgICAgICAgIHJldHVybiBVTktOT1dOX0VSUk9SOworICAgIH0KKworICAgIHJldHVybiBPSzsKK30KKworQU1SV0JFbmNvZGVyOjp+QU1SV0JFbmNvZGVyKCkgeworICAgIGlmIChtU3RhcnRlZCkgeworICAgICAgICBzdG9wKCk7CisgICAgfQorfQorCitzdGF0dXNfdCBBTVJXQkVuY29kZXI6OnN0YXJ0KE1ldGFEYXRhICpwYXJhbXMpIHsKKyAgICBpZiAobVN0YXJ0ZWQpIHsKKyAgICAgICAgTE9HVygiQ2FsbCBzdGFydCgpIHdoZW4gZW5jb2RlciBhbHJlYWR5IHN0YXJ0ZWQiKTsKKyAgICAgICAgcmV0dXJuIE9LOworICAgIH0KKworICAgIG1CdWZmZXJHcm91cCA9IG5ldyBNZWRpYUJ1ZmZlckdyb3VwOworCisgICAgLy8gVGhlIGxhcmdlc3QgYnVmZmVyIHNpemUgaXMgaGVhZGVyICsgNDc3IGJpdHMKKyAgICBtQnVmZmVyR3JvdXAtPmFkZF9idWZmZXIobmV3IE1lZGlhQnVmZmVyKDEwMjQpKTsKKworICAgIENIRUNLX0VRKE9LLCBpbml0Q2hlY2soKSk7CisKKyAgICBtTnVtRnJhbWVzT3V0cHV0ID0gMDsKKyAgICBtU291cmNlLT5zdGFydChwYXJhbXMpOworCisgICAgbVN0YXJ0ZWQgPSB0cnVlOworCisgICAgcmV0dXJuIE9LOworfQorCitzdGF0dXNfdCBBTVJXQkVuY29kZXI6OnN0b3AoKSB7CisgICAgaWYgKCFtU3RhcnRlZCkgeworICAgICAgICBMT0dXKCJDYWxsIHN0b3AoKSB3aGVuIGVuY29kZXIgaGFzIG5vdCBzdGFydGVkIik7CisgICAgICAgIHJldHVybiBPSzsKKyAgICB9CisKKyAgICBpZiAobUlucHV0QnVmZmVyKSB7CisgICAgICAgIG1JbnB1dEJ1ZmZlci0+cmVsZWFzZSgpOworICAgICAgICBtSW5wdXRCdWZmZXIgPSBOVUxMOworICAgIH0KKworICAgIGRlbGV0ZSBtQnVmZmVyR3JvdXA7CisgICAgbUJ1ZmZlckdyb3VwID0gTlVMTDsKKworCisgICAgQ0hFQ0tfRVEoVk9fRVJSX05PTkUsIG1BcGlIYW5kbGUtPlVuaW5pdChtRW5jb2RlckhhbmRsZSkpOworICAgIG1FbmNvZGVySGFuZGxlID0gTlVMTDsKKworICAgIGRlbGV0ZSBtQXBpSGFuZGxlOworICAgIG1BcGlIYW5kbGUgPSBOVUxMOworCisgICAgZGVsZXRlIG1NZW1PcGVyYXRvcjsKKyAgICBtTWVtT3BlcmF0b3I7CisKKyAgICBtU3RhcnRlZCA9IGZhbHNlOworCisgICAgbVNvdXJjZS0+c3RvcCgpOworICAgIHJldHVybiBPSzsKK30KKworc3A8TWV0YURhdGE+IEFNUldCRW5jb2Rlcjo6Z2V0Rm9ybWF0KCkgeworICAgIHNwPE1ldGFEYXRhPiBzcmNGb3JtYXQgPSBtU291cmNlLT5nZXRGb3JtYXQoKTsKKworICAgIG1NZXRhLT5zZXRDU3RyaW5nKGtLZXlNSU1FVHlwZSwgTUVESUFfTUlNRVRZUEVfQVVESU9fQU1SX1dCKTsKKworICAgIGludDY0X3QgZHVyYXRpb25VczsKKyAgICBpZiAoc3JjRm9ybWF0LT5maW5kSW50NjQoa0tleUR1cmF0aW9uLCAmZHVyYXRpb25VcykpIHsKKyAgICAgICAgbU1ldGEtPnNldEludDY0KGtLZXlEdXJhdGlvbiwgZHVyYXRpb25Vcyk7CisgICAgfQorCisgICAgbU1ldGEtPnNldENTdHJpbmcoa0tleURlY29kZXJDb21wb25lbnQsICJBTVJXQkVuY29kZXIiKTsKKworICAgIHJldHVybiBtTWV0YTsKK30KKworc3RhdHVzX3QgQU1SV0JFbmNvZGVyOjpyZWFkKAorICAgICAgICBNZWRpYUJ1ZmZlciAqKm91dCwgY29uc3QgUmVhZE9wdGlvbnMgKm9wdGlvbnMpIHsKKyAgICBzdGF0dXNfdCBlcnI7CisKKyAgICAqb3V0ID0gTlVMTDsKKworICAgIGludDY0X3Qgc2Vla1RpbWVVczsKKyAgICBDSEVDSyhvcHRpb25zID09IE5VTEwgfHwgIW9wdGlvbnMtPmdldFNlZWtUbygmc2Vla1RpbWVVcykpOworCisgICAgd2hpbGUgKG1OdW1JbnB1dFNhbXBsZXMgPCBrTnVtU2FtcGxlc1BlckZyYW1lKSB7CisgICAgICAgIGlmIChtSW5wdXRCdWZmZXIgPT0gTlVMTCkgeworICAgICAgICAgICAgZXJyID0gbVNvdXJjZS0+cmVhZCgmbUlucHV0QnVmZmVyLCBvcHRpb25zKTsKKworICAgICAgICAgICAgaWYgKGVyciAhPSBPSykgeworICAgICAgICAgICAgICAgIGlmIChtTnVtSW5wdXRTYW1wbGVzID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SX0VORF9PRl9TVFJFQU07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1lbXNldCgmbUlucHV0RnJhbWVbbU51bUlucHV0U2FtcGxlc10sCisgICAgICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihpbnQxNl90KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICogKGtOdW1TYW1wbGVzUGVyRnJhbWUgLSBtTnVtSW5wdXRTYW1wbGVzKSk7CisgICAgICAgICAgICAgICAgbU51bUlucHV0U2FtcGxlcyA9IDA7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNpemVfdCBhbGlnbiA9IG1JbnB1dEJ1ZmZlci0+cmFuZ2VfbGVuZ3RoKCkgJSBzaXplb2YoaW50MTZfdCk7CisgICAgICAgICAgICBDSEVDS19FUShhbGlnbiwgMCk7CisKKyAgICAgICAgICAgIGludDY0X3QgdGltZVVzOworICAgICAgICAgICAgaWYgKG1JbnB1dEJ1ZmZlci0+bWV0YV9kYXRhKCktPmZpbmRJbnQ2NChrS2V5VGltZSwgJnRpbWVVcykpIHsKKyAgICAgICAgICAgICAgICBtQW5jaG9yVGltZVVzID0gdGltZVVzOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgc2l6ZV90IGNvcHkgPQorICAgICAgICAgICAgKGtOdW1TYW1wbGVzUGVyRnJhbWUgLSBtTnVtSW5wdXRTYW1wbGVzKSAqIHNpemVvZihpbnQxNl90KTsKKworICAgICAgICBpZiAoY29weSA+IG1JbnB1dEJ1ZmZlci0+cmFuZ2VfbGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIGNvcHkgPSBtSW5wdXRCdWZmZXItPnJhbmdlX2xlbmd0aCgpOworICAgICAgICB9CisKKyAgICAgICAgbWVtY3B5KCZtSW5wdXRGcmFtZVttTnVtSW5wdXRTYW1wbGVzXSwKKyAgICAgICAgICAgICAgIChjb25zdCB1aW50OF90ICopbUlucHV0QnVmZmVyLT5kYXRhKCkKKyAgICAgICAgICAgICAgICAgICAgKyBtSW5wdXRCdWZmZXItPnJhbmdlX29mZnNldCgpLAorICAgICAgICAgICAgICAgY29weSk7CisKKyAgICAgICAgbUlucHV0QnVmZmVyLT5zZXRfcmFuZ2UoCisgICAgICAgICAgICAgICAgbUlucHV0QnVmZmVyLT5yYW5nZV9vZmZzZXQoKSArIGNvcHksCisgICAgICAgICAgICAgICAgbUlucHV0QnVmZmVyLT5yYW5nZV9sZW5ndGgoKSAtIGNvcHkpOworCisgICAgICAgIGlmIChtSW5wdXRCdWZmZXItPnJhbmdlX2xlbmd0aCgpID09IDApIHsKKyAgICAgICAgICAgIG1JbnB1dEJ1ZmZlci0+cmVsZWFzZSgpOworICAgICAgICAgICAgbUlucHV0QnVmZmVyID0gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIG1OdW1JbnB1dFNhbXBsZXMgKz0gY29weSAvIHNpemVvZihpbnQxNl90KTsKKyAgICAgICAgaWYgKG1OdW1JbnB1dFNhbXBsZXMgPj0ga051bVNhbXBsZXNQZXJGcmFtZSkgeworICAgICAgICAgICAgbU51bUlucHV0U2FtcGxlcyAlPSBrTnVtU2FtcGxlc1BlckZyYW1lOworICAgICAgICAgICAgYnJlYWs7ICAvLyBHZXQgYSB3aG9sZSBpbnB1dCBmcmFtZSA2NDAgYnl0ZXMKKyAgICAgICAgfQorICAgIH0KKworICAgIFZPX0NPREVDQlVGRkVSIGlucHV0RGF0YTsKKyAgICBtZW1zZXQoJmlucHV0RGF0YSwgMCwgc2l6ZW9mKGlucHV0RGF0YSkpOworICAgIGlucHV0RGF0YS5CdWZmZXIgPSAodW5zaWduZWQgY2hhciopIG1JbnB1dEZyYW1lOworICAgIGlucHV0RGF0YS5MZW5ndGggPSBrSW5wdXRCdWZmZXJTaXplOworICAgIENIRUNLKFZPX0VSUl9OT05FID09IG1BcGlIYW5kbGUtPlNldElucHV0RGF0YShtRW5jb2RlckhhbmRsZSwmaW5wdXREYXRhKSk7CisKKyAgICBNZWRpYUJ1ZmZlciAqYnVmZmVyOworICAgIENIRUNLX0VRKG1CdWZmZXJHcm91cC0+YWNxdWlyZV9idWZmZXIoJmJ1ZmZlciksIE9LKTsKKyAgICB1aW50OF90ICpvdXRQdHIgPSAodWludDhfdCAqKWJ1ZmZlci0+ZGF0YSgpOworCisgICAgVk9fQ09ERUNCVUZGRVIgb3V0cHV0RGF0YTsKKyAgICBtZW1zZXQoJm91dHB1dERhdGEsIDAsIHNpemVvZihvdXRwdXREYXRhKSk7CisgICAgVk9fQVVESU9fT1VUUFVUSU5GTyBvdXRwdXRJbmZvOworICAgIG1lbXNldCgmb3V0cHV0SW5mbywgMCwgc2l6ZW9mKG91dHB1dEluZm8pKTsKKworICAgIFZPX1UzMiByZXQgPSBWT19FUlJfTk9ORTsKKyAgICBvdXRwdXREYXRhLkJ1ZmZlciA9IG91dFB0cjsKKyAgICBvdXRwdXREYXRhLkxlbmd0aCA9IGJ1ZmZlci0+c2l6ZSgpOworICAgIHJldCA9IG1BcGlIYW5kbGUtPkdldE91dHB1dERhdGEobUVuY29kZXJIYW5kbGUsICZvdXRwdXREYXRhLCAmb3V0cHV0SW5mbyk7CisgICAgQ0hFQ0socmV0ID09IFZPX0VSUl9OT05FIHx8IHJldCA9PSBWT19FUlJfSU5QVVRfQlVGRkVSX1NNQUxMKTsKKworICAgIGJ1ZmZlci0+c2V0X3JhbmdlKDAsIG91dHB1dERhdGEuTGVuZ3RoKTsKKyAgICArK21OdW1GcmFtZXNPdXRwdXQ7CisKKyAgICAvLyBYWFg6IGZpeCB0aW1lc3RhbXAgY2FsY3VsYXRpb24KKyAgICBpbnQ2NF90IHRpbWVzdGFtcFVzID0gbU51bUZyYW1lc091dHB1dCAqIDIwMDAwTEw7CisKKyAgICBidWZmZXItPm1ldGFfZGF0YSgpLT5zZXRJbnQ2NChrS2V5VGltZSwgdGltZXN0YW1wVXMpOworCisgICAgKm91dCA9IGJ1ZmZlcjsKKyAgICByZXR1cm4gT0s7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvQW5kcm9pZC5tayBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9BbmRyb2lkLm1rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyOTMyODcKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvQW5kcm9pZC5tawpAQCAtMCwwICsxLDEyMCBAQAorTE9DQUxfUEFUSCA6PSAkKGNhbGwgbXktZGlyKQoraW5jbHVkZSAkKENMRUFSX1ZBUlMpCitpbmNsdWRlIGZyYW1ld29ya3MvYmFzZS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvY29tbW9uL0NvbmZpZy5taworCitMT0NBTF9QUkVMSU5LX01PRFVMRSA6PSBmYWxzZQorIAkKK0xPQ0FMX1NSQ19GSUxFUyA6PSBcCisJQU1SV0JFbmNvZGVyLmNwcCBcCisJc3JjL2F1dG9jb3JyLmMgXAorCXNyYy9hel9pc3AuYyBcCisJc3JjL2JpdHMuYyBcCisJc3JjL2MydDY0ZnguYyBcCisJc3JjL2M0dDY0ZnguYyBcCisJc3JjL2NvbnZvbHZlLmMgXAorCXNyYy9jb3JfaF94LmMgXAorCXNyYy9kZWNpbTU0LmMgXAorCXNyYy9kZWVtcGguYyBcCisJc3JjL2R0eC5jIFwKKwlzcmMvZ19waXRjaC5jIFwKKwlzcmMvZ3BjbGlwLmMgXAorCXNyYy9ob21pbmcuYyBcCisJc3JjL2hwNDAwLmMgXAorCXNyYy9ocDUwLmMgXAorCXNyYy9ocDZrLmMgXAorCXNyYy9ocF93c3AuYyBcCisJc3JjL2ludF9scGMuYyBcCisJc3JjL2lzcF9hei5jIFwKKwlzcmMvaXNwX2lzZi5jIFwKKwlzcmMvbGFnX3dpbmQuYyBcCisJc3JjL2xldmluc29uLmMgXAorCXNyYy9sb2cyLmMgXAorCXNyYy9scF9kZWMyLmMgXAorCXNyYy9tYXRoX29wLmMgXAorCXNyYy9vcGVyXzMyYi5jIFwKKwlzcmMvcF9tZWRfb2wuYyBcCisJc3JjL3BpdF9zaHJwLmMgXAorCXNyYy9waXRjaF9mNC5jIFwKKwlzcmMvcHJlZF9sdDQuYyBcCisJc3JjL3ByZWVtcGguYyBcCisJc3JjL3FfZ2FpbjIuYyBcCisJc3JjL3FfcHVsc2UuYyBcCisJc3JjL3Fpc2ZfbnMuYyBcCisJc3JjL3FwaXNmXzJzLmMgXAorCXNyYy9yYW5kb20uYyBcCisJc3JjL3Jlc2lkdS5jIFwKKwlzcmMvc2NhbGUuYyBcCisJc3JjL3N0cmVhbS5jIFwKKwlzcmMvc3luX2ZpbHQuYyBcCisJc3JjL3VwZHRfdGFyLmMgXAorCXNyYy91dGlsLmMgXAorCXNyYy92b0FNUldCRW5jLmMgXAorCXNyYy92b2ljZWZhYy5jIFwKKwlzcmMvd2JfdmFkLmMgXAorCXNyYy93ZWlnaHRfYS5jIFwKKwlzcmMvbWVtX2FsaWduLmMKKworCitpZmVxICgkKFZPVFQpLCB2NSkKK0xPQ0FMX1NSQ19GSUxFUyArPSBcCisJc3JjL2FzbS9BUk1WNUUvY29udm9sdmVfb3B0LnMgXAorCXNyYy9hc20vQVJNVjVFL2Nvcl9oX3ZlY19vcHQucyBcCisJc3JjL2FzbS9BUk1WNUUvRGVlbXBoXzMyX29wdC5zIFwKKwlzcmMvYXNtL0FSTVY1RS9Eb3RfcF9vcHQucyBcCisJc3JjL2FzbS9BUk1WNUUvRmlsdF82a183a19vcHQucyBcCisJc3JjL2FzbS9BUk1WNUUvTm9ybV9Db3JyX29wdC5zIFwKKwlzcmMvYXNtL0FSTVY1RS9wcmVkX2x0NF8xX29wdC5zIFwKKwlzcmMvYXNtL0FSTVY1RS9yZXNpZHVfYXNtX29wdC5zIFwKKwlzcmMvYXNtL0FSTVY1RS9zY2FsZV9zaWdfb3B0LnMgXAorCXNyYy9hc20vQVJNVjVFL1N5bl9maWx0XzMyX29wdC5zIFwKKwlzcmMvYXNtL0FSTVY1RS9zeW5fZmlsdF9vcHQucworCitlbmRpZgorCitpZmVxICgkKFZPVFQpLCB2NykKK0xPQ0FMX1NSQ19GSUxFUyArPSBcCisJc3JjL2FzbS9BUk1WNy9jb252b2x2ZV9uZW9uLnMgXAorCXNyYy9hc20vQVJNVjcvY29yX2hfdmVjX25lb24ucyBcCisJc3JjL2FzbS9BUk1WNy9EZWVtcGhfMzJfbmVvbi5zIFwKKwlzcmMvYXNtL0FSTVY3L0RvdF9wX25lb24ucyBcCisJc3JjL2FzbS9BUk1WNy9GaWx0XzZrXzdrX25lb24ucyBcCisJc3JjL2FzbS9BUk1WNy9Ob3JtX0NvcnJfbmVvbi5zIFwKKwlzcmMvYXNtL0FSTVY3L3ByZWRfbHQ0XzFfbmVvbi5zIFwKKwlzcmMvYXNtL0FSTVY3L3Jlc2lkdV9hc21fbmVvbi5zIFwKKwlzcmMvYXNtL0FSTVY3L3NjYWxlX3NpZ19uZW9uLnMgXAorCXNyYy9hc20vQVJNVjcvU3luX2ZpbHRfMzJfbmVvbi5zIFwKKwlzcmMvYXNtL0FSTVY3L3N5bl9maWx0X25lb24ucworCitlbmRpZgorCitMT0NBTF9NT0RVTEUgOj0gbGlic3RhZ2VmcmlnaHRfYW1yd2JlbmMKKworTE9DQUxfQVJNX01PREUgOj0gYXJtCisKK0xPQ0FMX1NUQVRJQ19MSUJSQVJJRVMgOj0gCisKK0xPQ0FMX1NIQVJFRF9MSUJSQVJJRVMgOj0KKworTE9DQUxfQ19JTkNMVURFUyA6PSBcCisJZnJhbWV3b3Jrcy9iYXNlL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2luY2x1ZGUgXAorCWZyYW1ld29ya3MvYmFzZS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvY29tbW9uL2luY2x1ZGUgXAorCWZyYW1ld29ya3MvYmFzZS9pbmNsdWRlIFwKKwkkKExPQ0FMX1BBVEgpL3NyYyBcCisJJChMT0NBTF9QQVRIKS9pbmMKKworTE9DQUxfQ0ZMQUdTIDo9ICQoVk9fQ0ZMQUdTKQorCitpZmVxICgkKFZPVFQpLCB2NSkKK0xPQ0FMX0NGTEFHUyArPSAtREFSTSAtREFTTV9PUFQKK0xPQ0FMX0NfSU5DTFVERVMgKz0gJChMT0NBTF9QQVRIKS9zcmMvYXNtL0FSTVY1RQorZW5kaWYKKworaWZlcSAoJChWT1RUKSwgdjcpCitMT0NBTF9DRkxBR1MgKz0gLURBUk0gLURBUk1WNyAtREFTTV9PUFQKK0xPQ0FMX0NfSU5DTFVERVMgKz0gJChMT0NBTF9QQVRIKS9zcmMvYXNtL0FSTVY1RQorTE9DQUxfQ19JTkNMVURFUyArPSAkKExPQ0FMX1BBVEgpL3NyYy9hc20vQVJNVjcKK2VuZGlmCisKK2luY2x1ZGUgJChCVUlMRF9TVEFUSUNfTElCUkFSWSkKKworCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvU2FtcGxlQ29kZS9BTVJXQl9FX1NBTVBMRS5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL1NhbXBsZUNvZGUvQU1SV0JfRV9TQU1QTEUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTJkM2NjCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL1NhbXBsZUNvZGUvQU1SV0JfRV9TQU1QTEUuYwpAQCAtMCwwICsxLDM2NCBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisNCisjaWZkZWYgTElOVVgNCisjaW5jbHVkZSA8ZGxmY24uaD4NCisjZW5kaWYNCisNCisjaW5jbHVkZSAgICAgIDxzdGRpby5oPg0KKyNpbmNsdWRlICAgICAgPHN0ZGxpYi5oPg0KKyNpbmNsdWRlICAgICAgPHRpbWUuaD4NCisjaW5jbHVkZSAgICAgICJ2b0FNUldCLmgiDQorI2luY2x1ZGUgICAgICAiY21uTWVtb3J5LmgiDQorDQorI2RlZmluZSBWT0FNUldCX1JGQzMyNjdfSEVBREVSX0lORk8gIiMhQU1SLVdCXG4iDQorDQorI2RlZmluZSAgSU5QVVRfU0laRSAgIDY0MA0KKyNkZWZpbmUgIE9VVFBVVF9TSVpFICAxMDI0DQordW5zaWduZWQgY2hhciAgSW5wdXRCdWZbSU5QVVRfU0laRV07DQordW5zaWduZWQgY2hhciAgT3V0cHV0QnVmW09VVFBVVF9TSVpFXTsNCisNCit2b2lkIHVzYWdlICh2b2lkKSB7DQorCXByaW50ZiAoIkFNUl9XQiBFbmNvZGVyIEhFTFAgICBEaXNwbGF5cyB0aGlzIHRleHRcbiIpOw0KKwlwcmludGYgKCJcbiIpOw0KKwlwcmludGYgKCJVc2FnZTpcbiIpOw0KKwlwcmludGYgKCJBTVJXQkVuYyBbb3B0aW9uc10gSW5wdXRfZmlsZSBvdXRwdXRfZmlsZSBcbiIpOw0KKwlwcmludGYgKCJcbiIpOw0KKwlwcmludGYgKCJPcHRpb25zICtNKiArRiogK0RUWCBcbiIpOw0KKwlwcmludGYgKCJTdXBwb3J0IFxuIik7DQorCXByaW50ZiAoIk9wdGlvbnMgK00qIGZvciBzZXRpbmcgY29tcHJlc3Npb24gYml0cmF0ZSBtb2RlLCBkZWZhdWx0IGlzIDIzLjg1a2Jwc1xuIik7DQorCXByaW50ZiAoIiArTTAgPSA2LjZrYnBzIFxuIik7DQorCXByaW50ZiAoIiArTTEgPSA4Ljg1a2JwcyBcbiIpOw0KKwlwcmludGYgKCIgK00yID0gMTIuNjVrYnBzIFxuIik7DQorCXByaW50ZiAoIiArTTMgPSAxNC4yNWticHMgXG4iKTsNCisJcHJpbnRmICgiICtNNCA9IDE1LjU4a2JwcyBcbiIpOw0KKwlwcmludGYgKCIgK001ID0gMTguMjVrYnBzIFxuIik7DQorCXByaW50ZiAoIiArTTYgPSAxOS44NWticHMgXG4iKTsNCisJcHJpbnRmICgiICtNNyA9IDIzLjA1a2JwcyBcbiIpOw0KKwlwcmludGYgKCIgK004ID0gMjMuODVrYnBzIFxuIik7DQorCXByaW50ZiAoIlxuIik7DQorCXByaW50ZiAoIk9wdGlvbnMgK0YqIGZvciBzZXR0aW5nIG91dHB1dCBmcmFtZSBUeXBlLCBkZWZhdWx0IGlzIFJGQzMyNjcgXG4iKTsNCisJcHJpbnRmICgiK0YwIGZvciBBTVJfV0IgRGVmdWFsdCBiaXQgZXh0ZXJuIHNob3J0IGRhdGEgZnJhbWUgdHlwZSBcbiIpOw0KKwlwcmludGYgKCIrRjEgZm9yIEFNUl9XQl9JVFUgYml0IGV4dGVybiBzaG9ydCBkYXRhIGZyYW1lIHR5cGUgXG4iKTsNCisJcHJpbnRmICgiK0YyIGZvciBSRkMzMjY3XG4gIik7DQorCXByaW50ZiAoIlxuIik7DQorCXByaW50ZiAoIk9wdGlvbnMgK0RUWCBlbmFibGUgRFRYIG1vZGUsIGRlZmF1bHQgaXMgZGlzYWJsZS5cbiIpOw0KKwlwcmludGYgKCJGaWxlIG5hbWVzLCBpbnB1dCByYXcgUENNIGRhdGEsIGFuZCBvdXRwdXQgaXMgQU1SX1dCIGJpdC1zdHJlYW0gZmlsZS5cbiIpOw0KKwlwcmludGYgKCJcbiIpOw0KK30NCisNCitpbnQgIEdldE5leHRCdWYoRklMRSogaW5GaWxlLHVuc2lnbmVkIGNoYXIqIGRzdCxpbnQgc2l6ZSkNCit7DQorCWludCBzaXplMiA9IChpbnQpZnJlYWQoZHN0LCBzaXplb2Yoc2lnbmVkIGNoYXIpLCBzaXplLGluRmlsZSk7DQorCXJldHVybiBzaXplMjsNCit9DQorDQordHlwZWRlZiBpbnQgKFZPX0FQSSAqIFZPR0VUQVVESU9FTkNBUEkpIChWT19BVURJT19DT0RFQ0FQSSAqIHBFbmNIYW5kbGUpOw0KKw0KK2ludCBlbmNvZGUoDQorCQkgICBpbnQgbW9kZSwgDQorCQkgICBzaG9ydCAgIGFsbG93X2R0eCwNCisJCSAgIFZPQU1SV0JGUkFNRVRZUEUgZnJhbWVUeXBlLA0KKwkJICAgY29uc3QgY2hhciogc3JjZmlsZSwgDQorCQkgICBjb25zdCBjaGFyKiBkc3RmaWxlDQorCQkgICApDQorew0KKwlpbnQJCQlyZXQgPSAwOw0KKwlpbnQgICAgICAgICByZXR1cm5Db2RlOw0KKwlGSUxFCQkqZnNyYyA9IE5VTEw7DQorCUZJTEUJCSpmZHN0ID0gTlVMTDsNCisJaW50ICAgICAgICAgZnJhbWVudW0gPSAwOw0KKwlpbnQgICAgICAgICBlb2ZGaWxlID0gMDsNCisJaW50ICAgICAgICAgc2l6ZTEgPSAwOw0KKwlpbnQgICAgICAgICBSZWxlbnM7DQorDQorCVZPX0FVRElPX0NPREVDQVBJICAgICAgIEF1ZGlvQVBJOw0KKwlWT19NRU1fT1BFUkFUT1IgICAgICAgICBtb3BlcjsNCisJVk9fQ09ERUNfSU5JVF9VU0VSREFUQSAgdXNlRGF0YTsNCisJVk9fSEFORExFICAgICAgICAgICAgICAgaENvZGVjOw0KKwlWT19DT0RFQ0JVRkZFUiAgICAgICAgICBpbkRhdGE7DQorCVZPX0NPREVDQlVGRkVSICAgICAgICAgIG91dERhdGE7DQorCVZPX0FVRElPX09VVFBVVElORk8gICAgIG91dEZvcm1hdDsNCisNCisJdW5zaWduZWQgY2hhciAqaW5CdWYgPSBJbnB1dEJ1ZjsNCisJdW5zaWduZWQgY2hhciAqb3V0QnVmID0gT3V0cHV0QnVmOw0KKw0KKw0KKyNpZmRlZiBMSU5VWA0KKwl2b2lkICAqaGFuZGxlID0gTlVMTDsNCisJdm9pZCAgKnBmdW5jOw0KKwlWT0dFVEFVRElPRU5DQVBJIHBHZXRBUEk7DQorI2VuZGlmDQorDQorCWNsb2NrX3QgICBzdGFydCwgZmluaXNoOw0KKwlkb3VibGUgICAgZHVyYXRpb24gPSAwLjA7DQorDQorCWlmICgoZnNyYyA9IGZvcGVuIChzcmNmaWxlLCAicmIiKSkgPT0gTlVMTCkNCisJew0KKwkJcmV0ID0gLTE7DQorCQlnb3RvIHNhZmVfZXhpdDsNCisJfQ0KKw0KKwlpZiAoKGZkc3QgPSBmb3BlbiAoZHN0ZmlsZSwgIndiIikpID09IE5VTEwpDQorCXsNCisJCXJldCA9IC0xOw0KKwkJZ290byBzYWZlX2V4aXQ7DQorCX0NCisNCisJbW9wZXIuQWxsb2MgPSBjbW5NZW1BbGxvYzsNCisJbW9wZXIuQ29weSA9IGNtbk1lbUNvcHk7DQorCW1vcGVyLkZyZWUgPSBjbW5NZW1GcmVlOw0KKwltb3Blci5TZXQgPSBjbW5NZW1TZXQ7DQorCW1vcGVyLkNoZWNrID0gY21uTWVtQ2hlY2s7DQorDQorCXVzZURhdGEubWVtZmxhZyA9IFZPX0lNRl9VU0VSTUVNT1BFUkFUT1I7DQorCXVzZURhdGEubWVtRGF0YSA9IChWT19QVFIpKCZtb3Blcik7DQorDQorI2lmZGVmIExJTlVYDQorCWhhbmRsZSA9IGRsb3BlbigiL2RhdGEvbG9jYWwvdG1wL3ZvQU1SV0JFbmMuc28iLCBSVExEX05PVyk7DQorCWlmKGhhbmRsZSA9PSAwKQ0KKwl7DQorCQlwcmludGYoIm9wZW4gZGxsIGVycm9yLi4uLi4uIik7DQorCQlyZXR1cm4gLTE7DQorCX0NCisNCisJcGZ1bmMgPSBkbHN5bShoYW5kbGUsICJ2b0dldEFNUldCRW5jQVBJIik7CQ0KKwlpZihwZnVuYyA9PSAwKQ0KKwl7DQorCQlwcmludGYoIm9wZW4gZnVuY3Rpb24gZXJyb3IuLi4uLi4iKTsNCisJCXJldHVybiAtMTsNCisJfQ0KKw0KKwlwR2V0QVBJID0gKFZPR0VUQVVESU9FTkNBUEkpcGZ1bmM7DQorDQorCXJldHVybkNvZGUgID0gcEdldEFQSSgmQXVkaW9BUEkpOw0KKwlpZihyZXR1cm5Db2RlKQ0KKwl7DQorCQlwcmludGYoImdldCBBUElzIGVycm9yLi4uLi4uIik7DQorCQlyZXR1cm4gLTE7DQorCX0NCisjZWxzZQ0KKwlyZXQgPSB2b0dldEFNUldCRW5jQVBJKCZBdWRpb0FQSSk7DQorCWlmKHJldCkNCisJew0KKwkJcmV0ID0gLTE7DQorCQlwcmludGYoImdldCBBUElzIGVycm9yLi4uLi4uIik7DQorCQlnb3RvIHNhZmVfZXhpdDsNCisJfQ0KKyNlbmRpZiANCisNCisJLy8jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgICBJbml0IEVuY29kaW5nIFNlY3Rpb24gICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KKwlyZXQgPSBBdWRpb0FQSS5Jbml0KCZoQ29kZWMsIFZPX0FVRElPX0NvZGluZ0FNUldCLCAmdXNlRGF0YSk7DQorDQorCWlmKHJldCkNCisJew0KKwkJcmV0ID0gLTE7DQorCQlwcmludGYoIkFQSXMgaW5pdCBlcnJvci4uLi4uLiIpOw0KKwkJZ290byBzYWZlX2V4aXQ7DQorCX0NCisNCisJUmVsZW5zID0gR2V0TmV4dEJ1Zihmc3JjLElucHV0QnVmLElOUFVUX1NJWkUpOw0KKwlpZihSZWxlbnMhPUlOUFVUX1NJWkUgJiYgIWZlb2YoZnNyYykpDQorCXsNCisJCXJldCA9IC0xOyAvL0ludmFsaWQgbWFnaWMgbnVtYmVyDQorCQlwcmludGYoImdldCBuZXh0IGJ1ZmZlciBlcnJvci4uLi4uLiIpOw0KKwkJZ290byBzYWZlX2V4aXQ7DQorCX0NCisNCisJLy8jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBzZXQgZW5jb2RlIE1vZGUgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCisJcmV0ID0gQXVkaW9BUEkuU2V0UGFyYW0oaENvZGVjLCBWT19QSURfQU1SV0JfRlJBTUVUWVBFLCAmZnJhbWVUeXBlKTsNCisJcmV0ID0gQXVkaW9BUEkuU2V0UGFyYW0oaENvZGVjLCBWT19QSURfQU1SV0JfTU9ERSwgJm1vZGUpOw0KKwlyZXQgPSBBdWRpb0FQSS5TZXRQYXJhbShoQ29kZWMsIFZPX1BJRF9BTVJXQl9EVFgsICZhbGxvd19kdHgpOw0KKw0KKwlpZihmcmFtZVR5cGUgPT0gVk9BTVJXQl9SRkMzMjY3KQ0KKwl7DQorCQkvKiB3cml0ZSBSRkMzMjY3IEhlYWRlciBpbmZvIHRvIGluZGljYXRlIHNpbmdsZSBjaGFubmVsIEFNUiBmaWxlIHN0b3JhZ2UgZm9ybWF0ICovDQorCQlzaXplMSA9IChpbnQpc3RybGVuKFZPQU1SV0JfUkZDMzI2N19IRUFERVJfSU5GTyk7DQorCQltZW1jcHkob3V0QnVmLCBWT0FNUldCX1JGQzMyNjdfSEVBREVSX0lORk8sIHNpemUxKTsNCisJCW91dEJ1ZiArPSBzaXplMTsNCisJfQ0KKw0KKwkvLyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAgIEVuY29kaW5nIFNlY3Rpb24gICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KKwlwcmludGYoIiBcbiAtLS0tLS0tLS0tLS0tLS0tIFJ1bm5pbmcgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuICIpOw0KKw0KKwlkb3sNCisJCWluRGF0YS5CdWZmZXIgPSAodW5zaWduZWQgY2hhciAqKWluQnVmOw0KKwkJaW5EYXRhLkxlbmd0aCA9IFJlbGVuczsNCisJCW91dERhdGEuQnVmZmVyID0gb3V0QnVmOw0KKw0KKwkJc3RhcnQgPSBjbG9jaygpOw0KKw0KKwkJLyogZGVjb2RlIG9uZSBhbXIgYmxvY2sgKi8NCisJCXJldHVybkNvZGUgPSBBdWRpb0FQSS5TZXRJbnB1dERhdGEoaENvZGVjLCZpbkRhdGEpOw0KKw0KKwkJZG8gew0KKwkJCXJldHVybkNvZGUgPSBBdWRpb0FQSS5HZXRPdXRwdXREYXRhKGhDb2RlYywmb3V0RGF0YSwgJm91dEZvcm1hdCk7DQorCQkJaWYocmV0dXJuQ29kZSA9PSAwKQ0KKwkJCXsNCisJCQkJZnJhbWVudW0rKzsNCisJCQkJcHJpbnRmKCIgRnJhbWVzIHByb2Nlc3NlZDogJWhkXHIiLCBmcmFtZW51bSk7DQorCQkJCWlmKGZyYW1lbnVtID09IDEpDQorCQkJCXsNCisJCQkJCWZ3cml0ZShPdXRwdXRCdWYsIDEsIG91dERhdGEuTGVuZ3RoICsgc2l6ZTEsIGZkc3QpOw0KKwkJCQkJZmZsdXNoKGZkc3QpOwkNCisJCQkJfQ0KKwkJCQllbHNlDQorCQkJCXsNCisJCQkJCWZ3cml0ZShvdXREYXRhLkJ1ZmZlciwgMSwgb3V0RGF0YS5MZW5ndGgsIGZkc3QpOw0KKwkJCQkJZmZsdXNoKGZkc3QpOw0KKwkJCQl9DQorCQkJfQ0KKwkJCWVsc2UgaWYocmV0dXJuQ29kZSA9PSBWT19FUlJfTElDRU5TRV9FUlJPUikNCisJCQl7DQorCQkgICAgICAgIHByaW50ZigiRW5jb2RlciB0aW1lIHJlYWNoIHVwcGVyIGxpbWl0Li4uLi4uIik7DQorCQkgICAgICAgIGdvdG8gc2FmZV9leGl0Ow0KKwkJCX0NCisJCX0gd2hpbGUocmV0dXJuQ29kZSAhPSBWT19FUlJfSU5QVVRfQlVGRkVSX1NNQUxMKTsNCisNCisJCWZpbmlzaCA9IGNsb2NrKCk7DQorCQlkdXJhdGlvbiArPSBmaW5pc2ggLSBzdGFydDsNCisNCisJCWlmICghZW9mRmlsZSkgew0KKwkJCVJlbGVucyA9IEdldE5leHRCdWYoZnNyYywgSW5wdXRCdWYsIElOUFVUX1NJWkUpOw0KKwkJCWluQnVmID0gSW5wdXRCdWY7DQorCQkJaWYgKGZlb2YoZnNyYykgJiYgUmVsZW5zID09IDApDQorCQkJCWVvZkZpbGUgPSAxOw0KKwkJfQ0KKwl9IHdoaWxlICghZW9mRmlsZSAmJiByZXR1cm5Db2RlKTsNCisJLy8jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgICBFbmQgRW5jb2RpbmcgU2VjdGlvbiAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorDQorc2FmZV9leGl0Og0KKwlyZXR1cm5Db2RlID0gQXVkaW9BUEkuVW5pbml0KGhDb2RlYyk7DQorDQorCXByaW50ZiggIlxuJTIuNWYgc2Vjb25kc1xuIiwgKGRvdWJsZSlkdXJhdGlvbi9DTE9DS1NfUEVSX1NFQyk7DQorDQorCWlmIChmc3JjKQ0KKwkJZmNsb3NlKGZzcmMpOw0KKwlpZiAoZmRzdCkNCisJCWZjbG9zZShmZHN0KTsNCisNCisjaWZkZWYgTElOVVgNCisJZGxjbG9zZShoYW5kbGUpOw0KKyNlbmRpZg0KKw0KKwlyZXR1cm4gcmV0Ow0KK30NCisNCitpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpICAvLyBmb3IgZ2NjIGNvbXBpbGVyOw0KK3sNCisJaW50ICAgICBtb2RlLCByOw0KKwlpbnQgICAgIGFyZywgZmlsZW5hbWU9MDsNCisJY2hhciAgICAqaW5GaWxlTmFtZSA9IE5VTEw7DQorCWNoYXIgICAgKm91dEZpbGVOYW1lID0gTlVMTDsNCisJc2hvcnQgICBhbGxvd19kdHg7DQorCVZPQU1SV0JGUkFNRVRZUEUgZnJhbWVUeXBlOw0KKw0KKwlwcmludGYoIlxuIik7DQorCXByaW50ZigiKioqKioqKioqKioqKioqKioqKioqKioqQWRhcHRpdmUgTXVsdGktUmF0ZSBXaWRlIEJhbmQgRW5jb2RlciAoQU1SLVdCKSoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiIpOw0KKwlwcmludGYoIioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqREVGSU5JVElPTlM6KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIik7DQorCXByaW50ZigiQU1SLVdCIGVuY29kZXIgc2NoZW1lIGlzIGJhc2VkIG9uIHRoZSBwcmluY2lwbGUgb2YgQWxnZWJyYWljIENvZGUgRXhjaXRlZCBMaW5lYXIgUHJlZGljdGlvbiBhbGdvcml0aG1cbiIpOw0KKwlwcmludGYoIlRoZSBBTVItV0IgZW5jb2RlciBjb21wcmVzc2lvbiBNT05PIGxpbmVyIFBDTSBzcGVlY2ggaW5wdXQgZGF0YSBhdCAxNmtIeiBzYW1wbGluZyByYXRlXG4iKTsNCisJcHJpbnRmKCJ0byBvbmUgb2YgbmluZSBkYXRhIHJhdGUgbW9kZXMtNi42MCwgOC44NSwgMTIuNjUsIDE0LjI1LCAxNS44NSwgMTguMjUsIDE5LjI1LCAyMy4wNSBhbmQgMjMuODVrYnBzLlxuIik7DQorCXByaW50ZigiVGhlIGVuY29kZXIgc3VwcG9ydHMgb3V0cHV0IGZvcm1hdCBBTVJXQiBJVFUsIEFNUldCIFJGQzMyNjcuXG4iKTsNCisJcHJpbnRmKCJcbiIpOw0KKw0KKwkvKkVuY29kZXIgRGVmYXVsdCBzZXR0aW5nICovDQorCW1vZGUgPSBWT0FNUldCX01EMjM4NTsNCisJYWxsb3dfZHR4ID0gMDsNCisJZnJhbWVUeXBlID0gVk9BTVJXQl9SRkMzMjY3Ow0KKw0KKwlpZihhcmdjIDwgMyl7DQorCQl1c2FnZSgpOw0KKwkJcmV0dXJuIDA7DQorCX1lbHNlew0KKwkJZm9yIChhcmcgPSAxOyBhcmcgPCBhcmdjOyBhcmcrKykgew0KKwkJCWlmIChhcmd2IFthcmddIFswXSA9PSAnKycpIHsNCisJCQkJaWYoYXJndlthcmddWzFdID09ICdNJykNCisJCQkJew0KKwkJCQkJc3dpdGNoKGFyZ3ZbYXJnXVsyXSkNCisJCQkJCXsNCisJCQkJCWNhc2UgJzAnOiBtb2RlID0gVk9BTVJXQl9NRDY2Ow0KKwkJCQkJCWJyZWFrOw0KKwkJCQkJY2FzZSAnMSc6IG1vZGUgPSBWT0FNUldCX01EODg1Ow0KKwkJCQkJCWJyZWFrOw0KKwkJCQkJY2FzZSAnMic6IG1vZGUgPSBWT0FNUldCX01EMTI2NTsNCisJCQkJCQlicmVhazsNCisJCQkJCWNhc2UgJzMnOiBtb2RlID0gVk9BTVJXQl9NRDE0MjU7DQorCQkJCQkJYnJlYWs7DQorCQkJCQljYXNlICc0JzogbW9kZSA9IFZPQU1SV0JfTUQxNTg1Ow0KKwkJCQkJCWJyZWFrOw0KKwkJCQkJY2FzZSAnNSc6IG1vZGUgPSBWT0FNUldCX01EMTgyNTsNCisJCQkJCQlicmVhazsNCisJCQkJCWNhc2UgJzYnOiBtb2RlID0gVk9BTVJXQl9NRDE5ODU7DQorCQkJCQkJYnJlYWs7DQorCQkJCQljYXNlICc3JzogbW9kZSA9IFZPQU1SV0JfTUQyMzA1Ow0KKwkJCQkJCWJyZWFrOw0KKwkJCQkJY2FzZSAnOCc6IG1vZGUgPSBWT0FNUldCX01EMjM4NTsNCisJCQkJCQlicmVhazsNCisJCQkJCWRlZmF1bHQ6DQorCQkJCQkJdXNhZ2UoKTsNCisJCQkJCQlwcmludGYgKCJJbnZhbGlkIHBhcmFtZXRlciAnJXMnLlxuIiwgYXJndiBbYXJnXSk7DQorCQkJCQkJYnJlYWs7DQorCQkJCQl9DQorCQkJCX1lbHNlIGlmKGFyZ3ZbYXJnXVsxXSA9PSAnRicpDQorCQkJCXsNCisJCQkJCXN3aXRjaChhcmd2W2FyZ11bMl0pDQorCQkJCQl7DQorCQkJCQljYXNlICcwJzogZnJhbWVUeXBlID0gVk9BTVJXQl9ERUZBVUxUOw0KKwkJCQkJCWJyZWFrOw0KKwkJCQkJY2FzZSAnMSc6IGZyYW1lVHlwZSA9IFZPQU1SV0JfSVRVOw0KKwkJCQkJCWJyZWFrOw0KKwkJCQkJY2FzZSAnMic6IGZyYW1lVHlwZSA9IFZPQU1SV0JfUkZDMzI2NyA7DQorCQkJCQkJYnJlYWs7IA0KKwkJCQkJZGVmYXVsdDoNCisJCQkJCQl1c2FnZSgpOw0KKwkJCQkJCXByaW50ZiAoIkludmFsaWQgcGFyYW1ldGVyICclcycuXG4iLCBhcmd2IFthcmddKTsNCisJCQkJCQlicmVhazsNCisNCisNCisJCQkJCX0NCisJCQkJfWVsc2UgaWYoc3RyY21wIChhcmd2W2FyZ10sICIrRFRYIikgPT0gMCkNCisJCQkJew0KKwkJCQkJYWxsb3dfZHR4ID0gMTsNCisJCQkJfQ0KKw0KKwkJCX0gZWxzZSB7DQorCQkJCXN3aXRjaCAoZmlsZW5hbWUpIHsNCisJCQkJCQljYXNlIDA6IA0KKwkJCQkJCQlpbkZpbGVOYW1lICA9IGFyZ3ZbYXJnXTsNCisJCQkJCQkJYnJlYWs7DQorCQkJCQkJY2FzZSAxOiANCisJCQkJCQkJb3V0RmlsZU5hbWUgPSBhcmd2W2FyZ107IA0KKwkJCQkJCQlicmVhazsNCisJCQkJCQlkZWZhdWx0Og0KKwkJCQkJCQl1c2FnZSAoKTsNCisJCQkJCQkJZnByaW50ZiAoc3RkZXJyLCAiSW52YWxpZCBwYXJhbWV0ZXIgJyVzJy5cbiIsIGFyZ3YgW2FyZ10pOw0KKwkJCQkJCQlyZXR1cm4gMDsNCisJCQkJfQ0KKwkJCQlmaWxlbmFtZSsrOw0KKwkJCX0NCisJCX0NCisJfQ0KKw0KKwlyID0gZW5jb2RlKG1vZGUsIGFsbG93X2R0eCwgZnJhbWVUeXBlLCBpbkZpbGVOYW1lLCBvdXRGaWxlTmFtZSk7DQorCWlmKHIpDQorCXsNCisJCWZwcmludGYoc3RkZXJyLCAiZXJyb3I6ICVkXG4iLCByKTsNCisJfQ0KKwlyZXR1cm4gcjsNCit9DQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL1NhbXBsZUNvZGUvQW5kcm9pZC5tayBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9TYW1wbGVDb2RlL0FuZHJvaWQubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2VkYjE2NgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9TYW1wbGVDb2RlL0FuZHJvaWQubWsKQEAgLTAsMCArMSwyNyBAQAorTE9DQUxfUEFUSCA6PSAkKGNhbGwgbXktZGlyKQoraW5jbHVkZSAkKENMRUFSX1ZBUlMpCisKK0xPQ0FMX1NSQ19GSUxFUyA6PSAJQU1SV0JfRV9TQU1QTEUuYworCQorTE9DQUxfU1JDX0ZJTEVTICs9IAlcCisJLi4vLi4vLi4vQ29tbW9uL2Ntbk1lbW9yeS5jIAorCitMT0NBTF9NT0RVTEUgOj0gVGVzdHZvQU1SV0JFbmMKKworTE9DQUxfQVJNX01PREUgOj0gYXJtCisKK0xPQ0FMX1NUQVRJQ19MSUJSQVJJRVMgOj0gCisKK0xPQ0FMX1NIQVJFRF9MSUJSQVJJRVMgOj0gbGlidm9BTVJXQkVuYworCitMT0NBTF9DX0lOQ0xVREVTIDo9IFwKKwkkKExPQ0FMX1BBVEgpLyBcCisJJChMT0NBTF9QQVRIKS8uLi8uLi8uLi9Db21tb24gXAorCSQoTE9DQUxfUEFUSCkvLi4vLi4vLi4vSW5jbHVkZSBcCisKK0xPQ0FMX0NGTEFHUyA6PSAkKFZPX0NGTEFHUykKKwkKK2luY2x1ZGUgJChCVUlMRF9FWEVDVVRBQkxFKQorCisKKwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL1NhbXBsZUNvZGUvZWNsYWlyL01ha2VmaWxlIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL1NhbXBsZUNvZGUvZWNsYWlyL01ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1Yjg3NmEKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvU2FtcGxlQ29kZS9lY2xhaXIvTWFrZWZpbGUKQEAgLTAsMCArMSw1NiBAQAorIy8qDQorIyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyMgKioNCisjICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyMgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyMgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorIyAqKg0KKyMgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyMgKioNCisjICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisjICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorIyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisjICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisjICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyMgKi8NCisNCisjIHRhcmdldDYNCisjIGF2YWlsYWJsZTogcGMsIHY0KGFybXY0KSwgdjUoYXJtdjUpLCB2NXgoYXJtdjUgeHNjYWxlKSwgdjYoYXJtdjYpLCB2Nyhjb3J0ZXgtYTggbmVvbikNCitWT1RUOj0gdjYNCisNCisNCisjIG1vZHVsZSB0eXBlDQorIyBwbGVhc2Ugc3BlY2lmeSB0aGUgdHlwZSBvZiB5b3VyIG1vZHVsZTogbGliIG9yIGV4ZQ0KK1ZPTVQ6PSBleGUNCisNCisNCisjIG1vZHVsZSBtYWNyb3MNCisjIHBsZWFzZSBhcHBlbmQgdGhlIGFkZGl0aW9uYWwgbWFjcm8gZGVmaW5pdGlvbnMgaGVyZSBmb3IgeW91ciBtb2R1bGUgaWYgbmVjZXNzYXJ5LiANCisjIGUuZy4gLURWSVNVQUxPTiwgbWFjcm8gVklTVUFMT04gZGVmaW5lZCBmb3IgeW91ciBtb2R1bGUgDQorVk9NTTo9ICNBUk1WNUUNCisNCisNCisNCisjIHBsZWFzZSBzcGVjaWZ5IHRoZSBuYW1lIG9mIHlvdXIgbW9kdWxlDQorVk9UQVJHRVQ6PSB2b0FNUldCRW5jX1Rlc3QNCisNCisNCisjIHBsZWFzZSBtb2RpZnkgaGVyZSB0byBiZSBzdXJlIHRvIHNlZSB0aGUgZzEubWsNCitpbmNsdWRlIC4uLy4uLy4uLy4uL1Rvb2xzL2VjbGFpci5tayANCisNCisjIGRlcGVuZGVudCBsaWJyYXJpZXMuDQorVk9ERVBMSUJTOj0tbGRsDQorDQorDQorIyBtb2R1bGUgc291cmNlDQorIyBwbGVhc2UgbW9kaWZ5IGhlcmUgdG8gYmUgc3VyZSB0byBzZWUgdGhlIG1zLm1rIHdoaWNoIHNwZWNpZmllcyBhbGwgc291cmNlIGluZm8gb2YgeW91ciBtb2R1bGUNCitpbmNsdWRlIC4uL21zLm1rDQorDQorDQorIyBwbGVhc2Ugc3BlY2lmeSB3aGVyZSBpcyB0aGUgdm9SZWxlYXNlIG9uIHlvdXIgUEMsIHJlbGF0aXZlIHBhdGggaXMgc3VnZ2VzdGVkDQorVk9SRUxESVI6PS4uLw0KKw0KKw0KKyMgcGxlYXNlIG1vZGlmeSBoZXJlIHRvIGJlIHN1cmUgdG8gc2VlIHRoZSBkb2l0Lm1rDQoraW5jbHVkZSAuLi8uLi8uLi8uLi9Ub29scy9kb2l0Lm1rIA0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9TYW1wbGVDb2RlL21zLm1rIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL1NhbXBsZUNvZGUvbXMubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzRlODkxMwotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9TYW1wbGVDb2RlL21zLm1rCkBAIC0wLDAgKzEsMjQgQEAKKyMvKg0KKyMgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisjICoqDQorIyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisjICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisjICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyMgKioNCisjICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisjICoqDQorIyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorIyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyMgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorIyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorIyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisjICovDQorIyBwbGVhc2UgbGlzdCBhbGwgb2JqZWN0cyBuZWVkZWQgYnkgeW91ciB0YXJnZXQgaGVyZQ0KK09CSlM6PUFNUldCX0VfU0FNUExFLm8gY21uTWVtb3J5Lm8NCisJCQkNCisjIHBsZWFzZSBsaXN0IGFsbCBkaXJlY3RvcmllcyB0aGF0IGFsbCBzb3VyY2UgZmlsZXMgcmVsYXRpdmUgd2l0aCB5b3VyIG1vZHVsZSguaCAuYyAuY3BwKSBsb2NhdGUgDQorVk9TUkNESVI6PS4uLyBcDQorICAgICAgICAgIC4uLy4uLy4uLy4uL0NvbW1vbiBcDQorCSAgLi4vLi4vLi4vLi4vSW5jbHVkZQ0KKwkJCQkJDQorCQkJCQ0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9idWlsZC9lY2xhaXIvQVJNVjVFL01ha2VmaWxlIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2J1aWxkL2VjbGFpci9BUk1WNUUvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNThmZGEyOQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9idWlsZC9lY2xhaXIvQVJNVjVFL01ha2VmaWxlCkBAIC0wLDAgKzEsNTMgQEAKKyMvKg0KKyMgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisjICoqDQorIyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisjICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisjICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyMgKioNCisjICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisjICoqDQorIyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorIyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyMgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorIyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorIyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisjICovDQorDQorIyB0YXJnZXQgdHlwZQ0KKyMgYXZhaWxhYmxlOiBwYywgdjQoYXJtdjQpLCB2NShhcm12NSksIHY1eChhcm12NSB4c2NhbGUpLCB2Nihhcm12NiksIHY3KGNvcnRleC1hOCBuZW9uKQ0KK1ZPVFQ6PSB2NQ0KKw0KKw0KKyMgbW9kdWxlIHR5cGUNCisjIHBsZWFzZSBzcGVjaWZ5IHRoZSB0eXBlIG9mIHlvdXIgbW9kdWxlOiBsaWIgb3IgZXhlDQorVk9NVDo9IGxpYg0KKw0KKw0KKyMgbW9kdWxlIG1hY3Jvcw0KKyMgcGxlYXNlIGFwcGVuZCB0aGUgYWRkaXRpb25hbCBtYWNybyBkZWZpbml0aW9ucyBoZXJlIGZvciB5b3VyIG1vZHVsZSBpZiBuZWNlc3NhcnkuIA0KK2lmZXEgKCQoVk9UVCksIHY1KQ0KK1ZPTU06PS1EQVJNIC1EQVNNX09QVA0KK2VuZGlmDQorDQorIyBwbGVhc2Ugc3BlY2lmeSB0aGUgbmFtZSBvZiB5b3VyIG1vZHVsZQ0KK1ZPVEFSR0VUOj0gbGlidm9BTVJXQkVuY3Y1DQorDQorDQorIyBwbGVhc2UgbW9kaWZ5IGhlcmUgdG8gYmUgc3VyZSB0byBzZWUgdGhlIGcxLm1rDQoraW5jbHVkZSAuLi8uLi8uLi8uLi8uLi9Ub29scy9lY2xhaXIubWsgDQorDQorIyBkZXBlbmRlbnQgbGlicmFyaWVzLg0KK1ZPREVQTElCUzo9LWxkbCAtbHN0ZGMrKyAtbGN1dGlscw0KKw0KKyMgbW9kdWxlIHNvdXJjZQ0KKyMgcGxlYXNlIG1vZGlmeSBoZXJlIHRvIGJlIHN1cmUgdG8gc2VlIHRoZSBtcy5tayB3aGljaCBzcGVjaWZpZXMgYWxsIHNvdXJjZSBpbmZvIG9mIHlvdXIgbW9kdWxlDQoraW5jbHVkZSAuLi9tcy5taw0KKw0KKw0KKyMgcGxlYXNlIHNwZWNpZnkgd2hlcmUgaXMgdGhlIHZvUmVsZWFzZSBvbiB5b3VyIFBDLCByZWxhdGl2ZSBwYXRoIGlzIHN1Z2dlc3RlZA0KK1ZPUkVMRElSOj0uLi8uLi8uLi8uLi8uLi8uLi9SZWxlYXNlDQorDQorIyBwbGVhc2UgbW9kaWZ5IGhlcmUgdG8gYmUgc3VyZSB0byBzZWUgdGhlIGRvaXQubWsNCitpbmNsdWRlIC4uLy4uLy4uLy4uLy4uL1Rvb2xzL2RvaXQubWsgDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2J1aWxkL2VjbGFpci9BUk1WNy9NYWtlZmlsZSBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9idWlsZC9lY2xhaXIvQVJNVjcvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTY4NjQxMQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9idWlsZC9lY2xhaXIvQVJNVjcvTWFrZWZpbGUKQEAgLTAsMCArMSw1MyBAQAorIy8qDQorIyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyMgKioNCisjICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyMgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyMgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorIyAqKg0KKyMgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyMgKioNCisjICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisjICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorIyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisjICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisjICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyMgKi8NCisNCisjIHRhcmdldCB0eXBlDQorIyBhdmFpbGFibGU6IHBjLCB2NChhcm12NCksIHY1KGFybXY1KSwgdjV4KGFybXY1IHhzY2FsZSksIHY2KGFybXY2KSwgdjcoY29ydGV4LWE4IG5lb24pDQorVk9UVDo9IHY3DQorDQorDQorIyBtb2R1bGUgdHlwZQ0KKyMgcGxlYXNlIHNwZWNpZnkgdGhlIHR5cGUgb2YgeW91ciBtb2R1bGU6IGxpYiBvciBleGUNCitWT01UOj0gbGliDQorDQorDQorIyBtb2R1bGUgbWFjcm9zDQorIyBwbGVhc2UgYXBwZW5kIHRoZSBhZGRpdGlvbmFsIG1hY3JvIGRlZmluaXRpb25zIGhlcmUgZm9yIHlvdXIgbW9kdWxlIGlmIG5lY2Vzc2FyeS4gDQoraWZlcSAoJChWT1RUKSwgdjcpDQorVk9NTTo9LURBUk0gLURBUk1WNyAtREFTTV9PUFQNCitlbmRpZg0KKw0KKyMgcGxlYXNlIHNwZWNpZnkgdGhlIG5hbWUgb2YgeW91ciBtb2R1bGUNCitWT1RBUkdFVDo9IGxpYnZvQU1SV0JFbmN2Nw0KKw0KKw0KKyMgcGxlYXNlIG1vZGlmeSBoZXJlIHRvIGJlIHN1cmUgdG8gc2VlIHRoZSBnMS5taw0KK2luY2x1ZGUgLi4vLi4vLi4vLi4vLi4vVG9vbHMvZWNsYWlyLm1rIA0KKw0KKyMgZGVwZW5kZW50IGxpYnJhcmllcy4NCitWT0RFUExJQlM6PS1sZGwgLWxzdGRjKysgLWxjdXRpbHMNCisNCisjIG1vZHVsZSBzb3VyY2UNCisjIHBsZWFzZSBtb2RpZnkgaGVyZSB0byBiZSBzdXJlIHRvIHNlZSB0aGUgbXMubWsgd2hpY2ggc3BlY2lmaWVzIGFsbCBzb3VyY2UgaW5mbyBvZiB5b3VyIG1vZHVsZQ0KK2luY2x1ZGUgLi4vbXMubWsNCisNCisNCisjIHBsZWFzZSBzcGVjaWZ5IHdoZXJlIGlzIHRoZSB2b1JlbGVhc2Ugb24geW91ciBQQywgcmVsYXRpdmUgcGF0aCBpcyBzdWdnZXN0ZWQNCitWT1JFTERJUjo9Li4vLi4vLi4vLi4vLi4vLi4vUmVsZWFzZQ0KKw0KKyMgcGxlYXNlIG1vZGlmeSBoZXJlIHRvIGJlIHN1cmUgdG8gc2VlIHRoZSBkb2l0Lm1rDQoraW5jbHVkZSAuLi8uLi8uLi8uLi8uLi9Ub29scy9kb2l0Lm1rIA0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9idWlsZC9lY2xhaXIvbWFrZWZpbGUgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvYnVpbGQvZWNsYWlyL21ha2VmaWxlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0NzNhMWEKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvYnVpbGQvZWNsYWlyL21ha2VmaWxlCkBAIC0wLDAgKzEsMzkgQEAKKyMvKgorIyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLgorIyAqKgorIyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyMgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorIyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyMgKioKKyMgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorIyAqKgorIyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisjICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisjICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorIyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisjICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorIyAqLworIyBKdXN0IGFjdGluZyBhcyBGYXRoZXIgTWFrZWZpbGUgb2YgTW9kdWxlcworIyBwbGVhc2Uga2VlcCB0aGUgbmFtZSAnbWFrZWZpbGUnIHVuY2hhbmdlZAorIAorIyBNb2R1bGUgU3ViZGlycworVk9NU0Q6PSQoZGlyICQoc2hlbGwgZmluZCAuIC1uYW1lICdNYWtlZmlsZScpKQorCithbGw6CisJZm9yIGRpciBpbiAkKFZPTVNEKTsgXAorCQlkbyBcCisJCQkkKE1BS0UpIC1DICQkZGlyOyBcCisJCWRvbmUKKworLlBIT05ZOmNsZWFuIGRldmVsCitjbGVhbjoKKwlmb3IgZGlyIGluICQoVk9NU0QpOyBcCisJCWRvIFwKKwkJCSQoTUFLRSkgLUMgJCRkaXIgY2xlYW47IFwKKwkJZG9uZQorCitkZXZlbDoKKwlmb3IgZGlyIGluICQoVk9NU0QpOyBcCisJCWRvIFwKKwkJCSQoTUFLRSkgLUMgJCRkaXIgZGV2ZWw7IFwKKwkJZG9uZQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2J1aWxkL2VjbGFpci9tcy5tayBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9idWlsZC9lY2xhaXIvbXMubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQ2NjIwYwotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9idWlsZC9lY2xhaXIvbXMubWsKQEAgLTAsMCArMSw0MyBAQAorIy8qDQorIyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyMgKioNCisjICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyMgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyMgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorIyAqKg0KKyMgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyMgKioNCisjICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisjICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorIyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisjICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisjICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyMgKi8NCisjIHBsZWFzZSBsaXN0IGFsbCBkaXJlY3RvcmllcyB0aGF0IGFsbCBzb3VyY2UgZmlsZXMgcmVsYXRpdmUgd2l0aCB5b3VyIG1vZHVsZSguaCAuYyAuY3BwKSBsb2NhdGUgDQorVk9TUkNESVI6PS4uLy4uLy4uL2luYyBcDQorICAgICAgICAgIC4uLy4uLy4uL3NyYyBcDQorCSAgLi4vLi4vLi4vLi4vLi4vSW5jbHVkZSANCisNCisjIHBsZWFzZSBsaXN0IGFsbCBvYmplY3RzIG5lZWRlZCBieSB5b3VyIHRhcmdldCBoZXJlDQorT0JKUzo9IGF1dG9jb3JyLm8gYXpfaXNwLm8gYml0cy5vIGMydDY0ZngubyBjNHQ2NGZ4Lm8gY29udm9sdmUubyBjb3JfaF94Lm8gZGVjaW01NC5vIFwNCisgICAgICAgZGVlbXBoLm8gZHR4Lm8gZ19waXRjaC5vIGdwY2xpcC5vIGhvbWluZy5vIGhwNDAwLm8gaHA1MC5vIGhwNmsubyBocF93c3AubyBcDQorICAgICAgIGludF9scGMubyBpc3BfYXoubyBpc3BfaXNmLm8gbGFnX3dpbmQubyBsZXZpbnNvbi5vIGxvZzIubyBscF9kZWMyLm8gbWF0aF9vcC5vIG1lbV9hbGlnbi5vIFwNCisgICAgICAgb3Blcl8zMmIubyBwX21lZF9vbC5vIHBpdF9zaHJwLm8gcGl0Y2hfZjQubyBwcmVkX2x0NC5vIHByZWVtcGgubyBxX2dhaW4yLm8gcV9wdWxzZS5vIFwNCisgICAgICAgcWlzZl9ucy5vIHFwaXNmXzJzLm8gcmFuZG9tLm8gcmVzaWR1Lm8gc2NhbGUubyBzdHJlYW0ubyBzeW5fZmlsdC5vIHVwZHRfdGFyLm8gdXRpbC5vIFwNCisgICAgICAgdm9BTVJXQkVuYy5vIHZvaWNlZmFjLm8gd2JfdmFkLm8gd2VpZ2h0X2Eubw0KKwkJCQ0KKw0KK2lmZXEgKCQoVk9UVCksIHY1KQ0KK09CSlMgKz0gY29yX2hfdmVjX29wdC5vIERlZW1waF8zMl9vcHQubyBEb3RfcF9vcHQubyBGaWx0XzZrXzdrX29wdC5vIHJlc2lkdV9hc21fb3B0Lm8gXA0KKyAgICAgICBzY2FsZV9zaWdfb3B0Lm8gU3luX2ZpbHRfMzJfb3B0Lm8gc3luX2ZpbHRfb3B0Lm8gcHJlZF9sdDRfMV9vcHQubyBjb252b2x2ZV9vcHQubyBcDQorICAgICAgIE5vcm1fQ29ycl9vcHQubw0KK1ZPU1JDRElSKz0gLi4vLi4vLi4vc3JjL2FzbS9BUk1WNUUNCitlbmRpZg0KKw0KK2lmZXEgKCQoVk9UVCksIHY3KQ0KK09CSlMrPSBjb3JfaF92ZWNfbmVvbi5vIERlZW1waF8zMl9uZW9uLm8gRG90X3BfbmVvbi5vIEZpbHRfNmtfN2tfbmVvbi5vIHJlc2lkdV9hc21fbmVvbi5vIFwNCisgICAgICAgc2NhbGVfc2lnX25lb24ubyBTeW5fZmlsdF8zMl9uZW9uLm8gc3luX2ZpbHRfbmVvbi5vIHByZWRfbHQ0XzFfbmVvbi5vIGNvbnZvbHZlX25lb24ubyBcDQorICAgICAgIE5vcm1fQ29ycl9uZW9uLm8NCitWT1NSQ0RJUis9IC4uLy4uLy4uL3NyYy9hc20vQVJNVjcNCitlbmRpZg0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9kb2Mvdm9BTVJXQkVuY29kZXJTREsucGRmIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2RvYy92b0FNUldCRW5jb2RlclNESy5wZGYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJhZGU0NAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9kb2Mvdm9BTVJXQkVuY29kZXJTREsucGRmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvYWNlbHAuaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvYWNlbHAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Y2IzOGExCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9hY2VscC5oCkBAIC0wLDAgKzEsNTIxIEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorICogICAgICAgICAgICAgICAgICAgICAgICAgQUNFTFAuSCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyAqICAgICAgIEZ1bmN0aW9uCQkJIAkJCSAgICAgICAgICAgICAqDQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorI2lmbmRlZiBfX0FDRUxQX0hfXw0KKyNkZWZpbmUgX19BQ0VMUF9IX18NCisNCisjaW5jbHVkZSAidHlwZWRlZi5oIg0KKyNpbmNsdWRlICJjb2RfbWFpbi5oIg0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorICogICAgICAgICAgICAgICAgICAgICAgICBMUEMgcHJvdG90eXBlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitXb3JkMTYgbWVkaWFuNShXb3JkMTYgeFtdKTsNCisNCit2b2lkIEF1dG9jb3JyKA0KKwkJV29yZDE2IHhbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgOiBJbnB1dCBzaWduYWwgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBtLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgIDogTFBDIG9yZGVyICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgcl9oW10sICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSAgICA6IEF1dG9jb3JyZWxhdGlvbnMgIChtc2IpICAgICAgICAgICAqLw0KKwkJV29yZDE2IHJfbFtdICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgICAgOiBBdXRvY29ycmVsYXRpb25zICAobHNiKSAgICAgICAgICAgKi8NCisJICAgICApOw0KKw0KK3ZvaWQgTGFnX3dpbmRvdygNCisJCVdvcmQxNiByX2hbXSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkvbykgICA6IEF1dG9jb3JyZWxhdGlvbnMgIChtc2IpICAgICAgICAgICovDQorCQlXb3JkMTYgcl9sW10gICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpL28pICAgOiBBdXRvY29ycmVsYXRpb25zICAobHNiKSAgICAgICAgICAqLw0KKwkgICAgICAgKTsNCisNCit2b2lkIEluaXRfTGV2aW5zb24oDQorCQlXb3JkMTYgKiBtZW0gICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG91dHB1dCAgOnN0YXRpYyBtZW1vcnkgKDE4IHdvcmRzKSAqLw0KKwkJKTsNCisNCit2b2lkIExldmluc29uKA0KKwkJV29yZDE2IFJoW10sICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogUmhbTSsxXSBWZWN0b3Igb2YgYXV0b2NvcnJlbGF0aW9ucyAobXNiKSAqLw0KKwkJV29yZDE2IFJsW10sICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogUmxbTSsxXSBWZWN0b3Igb2YgYXV0b2NvcnJlbGF0aW9ucyAobHNiKSAqLw0KKwkJV29yZDE2IEFbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgUTEyIDogQVtNXSAgICBMUEMgY29lZmZpY2llbnRzICAobSA9IDE2KSAgICAgICAqLw0KKwkJV29yZDE2IHJjW10sICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgUTE1IDogcmNbTV0gICBSZWZsZWN0aW9uIGNvZWZmaWNpZW50cy4gICAgICAgICAqLw0KKwkJV29yZDE2ICogbWVtICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaS9vKSAgIDpzdGF0aWMgbWVtb3J5ICgxOCB3b3JkcykgICAgICAgICAgICAgICAgICAqLw0KKwkgICAgICk7DQorDQordm9pZCBBel9pc3AoDQorCQlXb3JkMTYgYVtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRMTIgOiBwcmVkaWN0b3IgY29lZmZpY2llbnRzICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IGlzcFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgUTE1IDogSW1taXR0YW5jZSBzcGVjdHJhbCBwYWlycyAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBvbGRfaXNwW10gICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IG9sZCBpc3BbXSAoaW4gY2FzZSBub3QgZm91bmQgTSByb290cykgICovDQorCSAgICk7DQorDQordm9pZCBJc3BfQXooDQorCQlXb3JkMTYgaXNwW10sICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRMTUgOiBJbW1pdHRhbmNlIHNwZWN0cmFsIHBhaXJzICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBhW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIFExMiA6IHByZWRpY3RvciBjb2VmZmljaWVudHMgKG9yZGVyID0gTSkgICAqLw0KKwkJV29yZDE2IG0sDQorCQlXb3JkMTYgYWRhcHRpdmVfc2NhbGluZyAgICAgICAgICAgICAgIC8qIChpKSAwICAgOiBhZGFwdGl2ZSBzY2FsaW5nIGRpc2FibGVkICovDQorCQkvKiAgICAgMSAgIDogYWRhcHRpdmUgc2NhbGluZyBlbmFibGVkICAqLw0KKwkgICApOw0KKw0KK3ZvaWQgSXNwX2lzZigNCisJCVdvcmQxNiBpc3BbXSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFExNSA6IGlzcFttXSAocmFuZ2U6IC0xPD12YWw8MSkgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBpc2ZbXSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIFExNSA6IGlzZlttXSBub3JtYWxpemVkIChyYW5nZTogMC4wPD12YWw8PTAuNSkgKi8NCisJCVdvcmQxNiBtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IExQQyBvcmRlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJICAgICk7DQorDQordm9pZCBJc2ZfaXNwKA0KKwkJV29yZDE2IGlzZltdLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTE1IDogaXNmW21dIG5vcm1hbGl6ZWQgKHJhbmdlOiAwLjA8PXZhbDw9MC41KSAqLw0KKwkJV29yZDE2IGlzcFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgUTE1IDogaXNwW21dIChyYW5nZTogLTE8PXZhbDwxKSAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IG0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogTFBDIG9yZGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkgICAgKTsNCisNCit2b2lkIEludF9pc3AoDQorCQlXb3JkMTYgaXNwX29sZFtdLCAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogaXNwcyBmcm9tIHBhc3QgZnJhbWUgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgaXNwX25ld1tdLCAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogaXNwcyBmcm9tIHByZXNlbnQgZnJhbWUgICAgICAgICAgICovDQorCQlXb3JkMTYgZnJhY1tdLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogZnJhY3Rpb24gZm9yIDMgZmlyc3Qgc3ViZnIgKFExNSkgICovDQorCQlXb3JkMTYgQXpbXSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG91dHB1dDogTFAgY29lZmZpY2llbnRzIGluIDQgc3ViZnJhbWVzICAgICovDQorCSAgICApOw0KKw0KK3ZvaWQgV2VpZ2h0X2EoDQorCQlXb3JkMTYgYVtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRMTIgOiBhW20rMV0gIExQQyBjb2VmZmljaWVudHMgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBhcFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIFExMiA6IFNwZWN0cmFsIGV4cGFuZGVkIExQQyBjb2VmZmljaWVudHMgICAqLw0KKwkJV29yZDE2IGdhbW1hLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTE1IDogU3BlY3RyYWwgZXhwYW5zaW9uIGZhY3Rvci4gICAgICAgICAgICovDQorCQlXb3JkMTYgbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBMUEMgb3JkZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJICAgICApOw0KKw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorICogICAgICAgICAgICAgICAgICAgICAgICBpc2YgcXVhbnRpemVycyAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCit2b2lkIFFwaXNmXzJzXzQ2YigNCisJCVdvcmQxNiAqIGlzZjEsICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFExNSA6IElTRiBpbiB0aGUgZnJlcXVlbmN5IGRvbWFpbiAoMC4uMC41KSAqLw0KKwkJV29yZDE2ICogaXNmX3EsICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgUTE1IDogcXVhbnRpemVkIElTRiAgICAgICAgICAgICAgICgwLi4wLjUpICovDQorCQlXb3JkMTYgKiBwYXN0X2lzZnEsICAgICAgICAgICAgICAgICAgIC8qIChpbylRMTUgOiBwYXN0IElTRiBxdWFudGl6ZXIgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiAqIGluZGljZSwgICAgICAgICAgICAgICAgICAgICAgLyogKG8pICAgICA6IHF1YW50aXphdGlvbiBpbmRpY2VzICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IG5iX3N1cnYgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogbnVtYmVyIG9mIHN1cnZpdm9yICgxLCAyLCAzIG9yIDQpICAgICovDQorCQkpOw0KKw0KK3ZvaWQgUXBpc2ZfMnNfMzZiKA0KKwkJV29yZDE2ICogaXNmMSwgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTE1IDogSVNGIGluIHRoZSBmcmVxdWVuY3kgZG9tYWluICgwLi4wLjUpICovDQorCQlXb3JkMTYgKiBpc2ZfcSwgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSBRMTUgOiBxdWFudGl6ZWQgSVNGICAgICAgICAgICAgICAgKDAuLjAuNSkgKi8NCisJCVdvcmQxNiAqIHBhc3RfaXNmcSwgICAgICAgICAgICAgICAgICAgLyogKGlvKVExNSA6IHBhc3QgSVNGIHF1YW50aXplciAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2ICogaW5kaWNlLCAgICAgICAgICAgICAgICAgICAgICAvKiAobykgICAgIDogcXVhbnRpemF0aW9uIGluZGljZXMgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgbmJfc3VydiAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBudW1iZXIgb2Ygc3Vydml2b3IgKDEsIDIsIDMgb3IgNCkgICAgKi8NCisJCSk7DQorDQordm9pZCBEcGlzZl8yc180NmIoDQorCQlXb3JkMTYgKiBpbmRpY2UsICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0OiAgcXVhbnRpemF0aW9uIGluZGljZXMgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgKiBpc2ZfcSwgICAgICAgICAgICAgICAgICAgICAgIC8qIG91dHB1dDogcXVhbnRpemVkIElTRiBpbiBmcmVxdWVuY3kgZG9tYWluICgwLi4wLjUpICovDQorCQlXb3JkMTYgKiBwYXN0X2lzZnEsICAgICAgICAgICAgICAgICAgIC8qIGkvMCAgIDogcGFzdCBJU0YgcXVhbnRpemVyICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2ICogaXNmb2xkLCAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IHBhc3QgcXVhbnRpemVkIElTRiAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiAqIGlzZl9idWYsICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBpc2YgYnVmZmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IGJmaSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IEJhZCBmcmFtZSBpbmRpY2F0b3IgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBlbmNfZGVjDQorCQkpOw0KKw0KK3ZvaWQgRHBpc2ZfMnNfMzZiKA0KKwkJV29yZDE2ICogaW5kaWNlLCAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dDogIHF1YW50aXphdGlvbiBpbmRpY2VzICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2ICogaXNmX3EsICAgICAgICAgICAgICAgICAgICAgICAvKiBvdXRwdXQ6IHF1YW50aXplZCBJU0YgaW4gZnJlcXVlbmN5IGRvbWFpbiAoMC4uMC41KSAqLw0KKwkJV29yZDE2ICogcGFzdF9pc2ZxLCAgICAgICAgICAgICAgICAgICAvKiBpLzAgICA6IHBhc3QgSVNGIHF1YW50aXplciAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiAqIGlzZm9sZCwgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBwYXN0IHF1YW50aXplZCBJU0YgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgKiBpc2ZfYnVmLCAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogaXNmIGJ1ZmZlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBiZmksICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBCYWQgZnJhbWUgaW5kaWNhdG9yICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgZW5jX2RlYw0KKwkJKTsNCisNCit2b2lkIFFpc2ZfbnMoDQorCQlXb3JkMTYgKiBpc2YxLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogSVNGIGluIHRoZSBmcmVxdWVuY3kgZG9tYWluICgwLi4wLjUpICovDQorCQlXb3JkMTYgKiBpc2ZfcSwgICAgICAgICAgICAgICAgICAgICAgIC8qIG91dHB1dDogcXVhbnRpemVkIElTRiAgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgKiBpbmRpY2UgICAgICAgICAgICAgICAgICAgICAgIC8qIG91dHB1dDogcXVhbnRpemF0aW9uIGluZGljZXMgICAgICAgICAgICAgICAgICovDQorCSAgICApOw0KKw0KK3ZvaWQgRGlzZl9ucygNCisJCVdvcmQxNiAqIGluZGljZSwgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQ6ICBxdWFudGl6YXRpb24gaW5kaWNlcyAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgKiBpc2ZfcSAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogSVNGIGluIHRoZSBmcmVxdWVuY3kgZG9tYWluICgwLi4wLjUpICAqLw0KKwkgICAgKTsNCisNCitXb3JkMTYgU3ViX1ZRKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogb3V0cHV0OiByZXR1cm4gcXVhbnRpemF0aW9uIGluZGV4ICAgICAqLw0KKwkJV29yZDE2ICogeCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IElTRiByZXNpZHVhbCB2ZWN0b3IgICAgICAgICAgICovDQorCQlXb3JkMTYgKiBkaWNvLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogcXVhbnRpemF0aW9uIGNvZGVib29rICAgICAgICAgKi8NCisJCVdvcmQxNiBkaW0sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBkaW1lbnRpb24gb2YgdmVjdG9yICAgICAgICAgICAqLw0KKwkJV29yZDE2IGRpY29fc2l6ZSwgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IHNpemUgb2YgcXVhbnRpemF0aW9uIGNvZGVib29rICovDQorCQlXb3JkMzIgKiBkaXN0YW5jZSAgICAgICAgICAgICAgICAgICAgIC8qIG91dHB1dDogZXJyb3Igb2YgcXVhbnRpemF0aW9uICAgICAgICAgKi8NCisJICAgICApOw0KKw0KK3ZvaWQgUmVvcmRlcl9pc2YoDQorCQlXb3JkMTYgKiBpc2YsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpL28pIFExNTogSVNGIGluIHRoZSBmcmVxdWVuY3kgZG9tYWluICgwLi4wLjUpICovDQorCQlXb3JkMTYgbWluX2Rpc3QsICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRMTUgIDogbWluaW11bSBkaXN0YW5jZSB0byBrZWVwICAgICAgICAgICAgICovDQorCQlXb3JkMTYgbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgIDogbnVtYmVyIG9mIElTRiAgICAgICAgICAgICAgICAgICAgICAgICovDQorCQkpOw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorICogICAgICAgICAgICAgICAgICAgICAgIGZpbHRlciBwcm90b3R5cGVzICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCit2b2lkIEluaXRfRGVjaW1fMTJrOCgNCisJCVdvcmQxNiBtZW1bXSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogb3V0cHV0OiBtZW1vcnkgKDIqTkJfQ09FRl9ET1dOKSBzZXQgdG8gemVyb3MgKi8NCisJCSk7DQordm9pZCBEZWNpbV8xMms4KA0KKwkJV29yZDE2IHNpZzE2a1tdLCAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dDogIHNpZ25hbCB0byBkb3duc2FtcGxpbmcgICovDQorCQlXb3JkMTYgbGcsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0OiAgbGVuZ3RoIG9mIGlucHV0ICAgICAgICAgKi8NCisJCVdvcmQxNiBzaWcxMms4W10sICAgICAgICAgICAgICAgICAgICAgLyogb3V0cHV0OiBkZWNpbWF0ZWQgc2lnbmFsICAgICAgICAqLw0KKwkJV29yZDE2IG1lbVtdICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbi9vdXQ6IG1lbW9yeSAoMipOQl9DT0VGX0RPV04pICovDQorCSAgICAgICApOw0KKw0KK3ZvaWQgSW5pdF9IUDUwXzEyazgoV29yZDE2IG1lbVtdKTsNCit2b2lkIEhQNTBfMTJrOCgNCisJCVdvcmQxNiBzaWduYWxbXSwgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQvb3V0cHV0IHNpZ25hbCAqLw0KKwkJV29yZDE2IGxnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBsZW5naHQgb2Ygc2lnbmFsICAgICovDQorCQlXb3JkMTYgbWVtW10gICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZpbHRlciBtZW1vcnkgWzZdICAgKi8NCisJICAgICAgKTsNCit2b2lkIEluaXRfSFA0MDBfMTJrOChXb3JkMTYgbWVtW10pOw0KK3ZvaWQgSFA0MDBfMTJrOCgNCisJCVdvcmQxNiBzaWduYWxbXSwgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQvb3V0cHV0IHNpZ25hbCAqLw0KKwkJV29yZDE2IGxnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBsZW5naHQgb2Ygc2lnbmFsICAgICovDQorCQlXb3JkMTYgbWVtW10gICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZpbHRlciBtZW1vcnkgWzZdICAgKi8NCisJICAgICAgICk7DQorDQordm9pZCBJbml0X0ZpbHRfNmtfN2soV29yZDE2IG1lbVtdKTsNCit2b2lkIEZpbHRfNmtfN2soDQorCQlXb3JkMTYgc2lnbmFsW10sICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0OiAgc2lnbmFsICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBsZywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQ6ICBsZW5ndGggb2YgaW5wdXQgICAgICAgICAqLw0KKwkJV29yZDE2IG1lbVtdICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbi9vdXQ6IG1lbW9yeSAoc2l6ZT0zMCkgICAgICAgICovDQorCSAgICAgICApOw0KK3ZvaWQgRmlsdF82a183a19hc20oDQorCQlXb3JkMTYgc2lnbmFsW10sICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0OiAgc2lnbmFsICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBsZywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQ6ICBsZW5ndGggb2YgaW5wdXQgICAgICAgICAqLw0KKwkJV29yZDE2IG1lbVtdICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbi9vdXQ6IG1lbW9yeSAoc2l6ZT0zMCkgICAgICAgICovDQorCSAgICAgICApOw0KKw0KK3ZvaWQgTFBfRGVjaW0yKA0KKwkJV29yZDE2IHhbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbi9vdXQ6IHNpZ25hbCB0byBwcm9jZXNzICAgICAgICAgKi8NCisJCVdvcmQxNiBsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBzaXplIG9mIGZpbHRlcmluZyAgICAgICAgICovDQorCQlXb3JkMTYgbWVtW10gICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGluL291dDogbWVtb3J5IChzaXplPTMpICAgICAgICAgICAqLw0KKwkgICAgICApOw0KKw0KK3ZvaWQgUHJlZW1waCgNCisJCVdvcmQxNiB4W10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkvbykgICA6IGlucHV0IHNpZ25hbCBvdmVyd3JpdHRlbiBieSB0aGUgb3V0cHV0ICovDQorCQlXb3JkMTYgbXUsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRMTUgOiBwcmVlbXBoYXNpcyBjb2VmZmljaWVudCAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IGxnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogbGVuZ2h0IG9mIGZpbHRlcmluZyAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiAqIG1lbSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkvbykgICA6IG1lbW9yeSAoeFstMV0pICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCSAgICApOw0KK3ZvaWQgUHJlZW1waDIoDQorCQlXb3JkMTYgeFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpL28pICAgOiBpbnB1dCBzaWduYWwgb3ZlcndyaXR0ZW4gYnkgdGhlIG91dHB1dCAqLw0KKwkJV29yZDE2IG11LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTE1IDogcHJlZW1waGFzaXMgY29lZmZpY2llbnQgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBsZywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IGxlbmdodCBvZiBmaWx0ZXJpbmcgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgKiBtZW0gICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpL28pICAgOiBtZW1vcnkgKHhbLTFdKSAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkgICAgICk7DQordm9pZCBEZWVtcGgoDQorCQlXb3JkMTYgeFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpL28pICAgOiBpbnB1dCBzaWduYWwgb3ZlcndyaXR0ZW4gYnkgdGhlIG91dHB1dCAqLw0KKwkJV29yZDE2IG11LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTE1IDogZGVlbXBoYXNpcyBmYWN0b3IgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IHZlY3RvciBzaXplICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgKiBtZW0gICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpL28pICAgOiBtZW1vcnkgKHlbLTFdKSAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkgICApOw0KK3ZvaWQgRGVlbXBoMigNCisJCVdvcmQxNiB4W10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkvbykgICA6IGlucHV0IHNpZ25hbCBvdmVyd3JpdHRlbiBieSB0aGUgb3V0cHV0ICovDQorCQlXb3JkMTYgbXUsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRMTUgOiBkZWVtcGhhc2lzIGZhY3RvciAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogdmVjdG9yIHNpemUgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiAqIG1lbSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkvbykgICA6IG1lbW9yeSAoeVstMV0pICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCSAgICApOw0KK3ZvaWQgRGVlbXBoXzMyKA0KKwkJV29yZDE2IHhfaGlbXSwgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogaW5wdXQgc2lnbmFsIChiaXQzMS4uMTYpICovDQorCQlXb3JkMTYgeF9sb1tdLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBpbnB1dCBzaWduYWwgKGJpdDE1Li40KSAgKi8NCisJCVdvcmQxNiB5W10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pICAgICA6IG91dHB1dCBzaWduYWwgKHgxNikgICAgICAqLw0KKwkJV29yZDE2IG11LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTE1IDogZGVlbXBoYXNpcyBmYWN0b3IgICAgICAgICovDQorCQlXb3JkMTYgTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiB2ZWN0b3Igc2l6ZSAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiAqIG1lbSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkvbykgICA6IG1lbW9yeSAoeVstMV0pICAgICAgICAgICAqLw0KKwkgICAgICApOw0KKw0KK3ZvaWQgRGVlbXBoXzMyX2FzbSgNCisJCVdvcmQxNiB4X2hpW10sICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IGlucHV0IHNpZ25hbCAoYml0MzEuLjE2KSAqLw0KKwkJV29yZDE2IHhfbG9bXSwgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogaW5wdXQgc2lnbmFsIChiaXQxNS4uNCkgICovDQorCQlXb3JkMTYgeVtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSAgICAgOiBvdXRwdXQgc2lnbmFsICh4MTYpICAgICAgKi8NCisJCVdvcmQxNiAqIG1lbSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkvbykgICA6IG1lbW9yeSAoeVstMV0pICAgICAgICAgICAqLw0KKwkgICAgICApOw0KKw0KK3ZvaWQgQ29udm9sdmUoDQorCQlXb3JkMTYgeFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBpbnB1dCB2ZWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IGhbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTE1ICAgIDogaW1wdWxzZSByZXNwb25zZSAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiB5W10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIDEyIGJpdHM6IG91dHB1dCB2ZWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiB2ZWN0b3Igc2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkgICAgICk7DQorDQordm9pZCBDb252b2x2ZV9hc20oDQorCQlXb3JkMTYgeFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBpbnB1dCB2ZWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IGhbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTE1ICAgIDogaW1wdWxzZSByZXNwb25zZSAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiB5W10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIDEyIGJpdHM6IG91dHB1dCB2ZWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiB2ZWN0b3Igc2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkgICAgICk7DQorDQordm9pZCBSZXNpZHUoDQorCQlXb3JkMTYgYVtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRMTIgOiBwcmVkaWN0aW9uIGNvZWZmaWNpZW50cyAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgeFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBzcGVlY2ggKHZhbHVlcyB4Wy1tLi4tMV0gYXJlIG5lZWRlZCAgICAgICAgICovDQorCQlXb3JkMTYgeVtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSAgICAgOiByZXNpZHVhbCBzaWduYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgbGcgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBzaXplIG9mIGZpbHRlcmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCQkpOw0KKw0KK3ZvaWQgUmVzaWR1X29wdCgNCisJCVdvcmQxNiBhW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFExMiA6IHByZWRpY3Rpb24gY29lZmZpY2llbnRzICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiB4W10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IHNwZWVjaCAodmFsdWVzIHhbLW0uLi0xXSBhcmUgbmVlZGVkICAgICAgICAgKi8NCisJCVdvcmQxNiB5W10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pICAgICA6IHJlc2lkdWFsIHNpZ25hbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBsZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IHNpemUgb2YgZmlsdGVyaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCSk7DQorDQordm9pZCBTeW5fZmlsdCgNCisJV29yZDE2IGFbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTEyIDogYVttKzFdIHByZWRpY3Rpb24gY29lZmZpY2llbnRzICAgICAgICAgICAqLw0KKwlXb3JkMTYgeFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBpbnB1dCBzaWduYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCVdvcmQxNiB5W10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pICAgICA6IG91dHB1dCBzaWduYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJV29yZDE2IGxnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogc2l6ZSBvZiBmaWx0ZXJpbmcgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwlXb3JkMTYgbWVtW10sICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpL28pICAgOiBtZW1vcnkgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZmlsdGVyaW5nLiAgICovDQorCVdvcmQxNiB1cGRhdGUgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IDA9bm8gdXBkYXRlLCAxPXVwZGF0ZSBvZiBtZW1vcnkuICAgICAgICAgKi8NCisJKTsNCisNCit2b2lkIFN5bl9maWx0X2FzbSgNCisJV29yZDE2IGFbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTEyIDogYVttKzFdIHByZWRpY3Rpb24gY29lZmZpY2llbnRzICAgICAgICAgICAqLw0KKwlXb3JkMTYgeFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBpbnB1dCBzaWduYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCVdvcmQxNiB5W10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pICAgICA6IG91dHB1dCBzaWduYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJV29yZDE2IG1lbVtdICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaS9vKSAgIDogbWVtb3J5IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGZpbHRlcmluZy4gICAqLw0KKwkpOw0KKw0KK3ZvaWQgU3luX2ZpbHRfMzIoDQorCVdvcmQxNiBhW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFExMiA6IGFbbSsxXSBwcmVkaWN0aW9uIGNvZWZmaWNpZW50cyAqLw0KKwlXb3JkMTYgbSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBvcmRlciBvZiBMUCBmaWx0ZXIgICAgICAgICAgICAgKi8NCisJV29yZDE2IGV4Y1tdLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUW5ldzogZXhjaXRhdGlvbiAoZXhjW2ldID4+IFFuZXcpICAgICovDQorCVdvcmQxNiBRbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IGV4YyBzY2FsaW5nID0gMChtaW4pIHRvIDgobWF4KSAqLw0KKwlXb3JkMTYgc2lnX2hpW10sICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSAvMTYgOiBzeW50aGVzaXMgaGlnaCAgICAgICAgICAgICAgICAgKi8NCisJV29yZDE2IHNpZ19sb1tdLCAgICAgICAgICAgICAgICAgICAgICAvKiAobykgLzE2IDogc3ludGhlc2lzIGxvdyAgICAgICAgICAgICAgICAgICovDQorCVdvcmQxNiBsZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IHNpemUgb2YgZmlsdGVyaW5nICAgICAgICAgICAgICAqLw0KKwkpOw0KKw0KK3ZvaWQgU3luX2ZpbHRfMzJfYXNtKA0KKwlXb3JkMTYgYVtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRMTIgOiBhW20rMV0gcHJlZGljdGlvbiBjb2VmZmljaWVudHMgKi8NCisJV29yZDE2IG0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogb3JkZXIgb2YgTFAgZmlsdGVyICAgICAgICAgICAgICovDQorCVdvcmQxNiBleGNbXSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFFuZXc6IGV4Y2l0YXRpb24gKGV4Y1tpXSA+PiBRbmV3KSAgICAqLw0KKwlXb3JkMTYgUW5ldywgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBleGMgc2NhbGluZyA9IDAobWluKSB0byA4KG1heCkgKi8NCisJV29yZDE2IHNpZ19oaVtdLCAgICAgICAgICAgICAgICAgICAgICAvKiAobykgLzE2IDogc3ludGhlc2lzIGhpZ2ggICAgICAgICAgICAgICAgICovDQorCVdvcmQxNiBzaWdfbG9bXSwgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIC8xNiA6IHN5bnRoZXNpcyBsb3cgICAgICAgICAgICAgICAgICAqLw0KKwlXb3JkMTYgbGcgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBzaXplIG9mIGZpbHRlcmluZyAgICAgICAgICAgICAgKi8NCisJKTsNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICBwaXRjaCBwcm90b3R5cGVzICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorV29yZDE2IFBpdGNoX29sKCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG91dHB1dDogb3BlbiBsb29wIHBpdGNoIGxhZyAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAgICBXb3JkMTYgc2lnbmFsW10sICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogc2lnbmFsIHVzZWQgdG8gY29tcHV0ZSB0aGUgb3BlbiBsb29wIHBpdGNoICovDQorLyogc2lnbmFsWy1waXRfbWF4XSB0byBzaWduYWxbLTFdIHNob3VsZCBiZSBrbm93biAqLw0KKyAgICAgV29yZDE2IHBpdF9taW4sICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IG1pbmltdW0gcGl0Y2ggbGFnICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgICAgV29yZDE2IHBpdF9tYXgsICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IG1heGltdW0gcGl0Y2ggbGFnICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgICAgV29yZDE2IExfZnJhbWUgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IGxlbmd0aCBvZiBmcmFtZSB0byBjb21wdXRlIHBpdGNoICAgICAgICAgICAqLw0KKyk7DQorDQorV29yZDE2IFBpdGNoX21lZF9vbCggICAgICAgICAgICAgICAgICAgICAgIC8qIG91dHB1dDogb3BlbiBsb29wIHBpdGNoIGxhZyAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAgICBXb3JkMTYgd3NwW10sICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogc2lnbmFsIHVzZWQgdG8gY29tcHV0ZSB0aGUgb3BlbiBsb29wIHBpdGNoICovDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHdzcFstcGl0X21heF0gdG8gd3NwWy0xXSBzaG91bGQgYmUga25vd24gICAqLw0KKyAgICAgQ29kZXJfU3RhdGUgKnN0LCAgICAgICAgICAgICAgICAgICAgICAvKiBpL28gOiBnbG9iYWwgY29kZWMgc3RydWN0dXJlICovDQorICAgICBXb3JkMTYgTF9mcmFtZSAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogbGVuZ3RoIG9mIGZyYW1lIHRvIGNvbXB1dGUgcGl0Y2ggICAgICAgICAgICovDQorKTsNCisNCitXb3JkMTYgTWVkX29sYWcoICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogb3V0cHV0IDogbWVkaWFuIG9mICA1IHByZXZpb3VzIG9wZW4tbG9vcCBsYWdzICAgICAgICovDQorICAgICBXb3JkMTYgcHJldl9vbF9sYWcsICAgICAgICAgICAgICAgICAgIC8qIGlucHV0ICA6IHByZXZpb3VzIG9wZW4tbG9vcCBsYWcgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgICAgV29yZDE2IG9sZF9vbF9sYWdbNV0NCispOw0KKw0KK3ZvaWQgSW5pdF9IcF93c3AoV29yZDE2IG1lbVtdKTsNCit2b2lkIHNjYWxlX21lbV9IcF93c3AoV29yZDE2IG1lbVtdLCBXb3JkMTYgZXhwKTsNCit2b2lkIEhwX3dzcCgNCisgICAgIFdvcmQxNiB3c3BbXSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogaSAgIDogd3NwW10gIHNpZ25hbCAgICAgICAqLw0KKyAgICAgV29yZDE2IGhwX3dzcFtdLCAgICAgICAgICAgICAgICAgICAgICAvKiBvICAgOiBoeXBhc3Mgd3NwW10gICAgICAgICovDQorICAgICBXb3JkMTYgbGcsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGkgICA6IGxlbmdodCBvZiBzaWduYWwgICAgKi8NCisgICAgIFdvcmQxNiBtZW1bXSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaS9vIDogZmlsdGVyIG1lbW9yeSBbOV0gICAqLw0KKyk7DQorDQorV29yZDE2IFBpdGNoX2ZyNCggICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSAgICAgOiBwaXRjaCBwZXJpb2QuICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAgICBXb3JkMTYgZXhjW10sICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBleGNpdGF0aW9uIGJ1ZmZlciAgICAgICAgICAgICAgICAgICAgICovDQorICAgICBXb3JkMTYgeG5bXSwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiB0YXJnZXQgdmVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAgICBXb3JkMTYgaFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRMTUgOiBpbXB1bHNlIHJlc3BvbnNlIG9mIHN5bnRoL3dndCBmaWx0ZXJzICovDQorICAgICBXb3JkMTYgdDBfbWluLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBtaW5pbXVtIHZhbHVlIGluIHRoZSBzZWFyY2hlZCByYW5nZS4gICovDQorICAgICBXb3JkMTYgdDBfbWF4LCAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBtYXhpbXVtIHZhbHVlIGluIHRoZSBzZWFyY2hlZCByYW5nZS4gICovDQorICAgICBXb3JkMTYgKiBwaXRfZnJhYywgICAgICAgICAgICAgICAgICAgIC8qIChvKSAgICAgOiBjaG9zZW4gZnJhY3Rpb24gKDAsIDEsIDIgb3IgMykuICAgICAgICovDQorICAgICBXb3JkMTYgaV9zdWJmciwgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBpbmRpY2F0b3IgZm9yIGZpcnN0IHN1YmZyYW1lLiAgICAgICAgICovDQorICAgICBXb3JkMTYgdDBfZnIyLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBtaW5pbXVtIHZhbHVlIGZvciByZXNvbHV0aW9uIDEvMiAgICAgICovDQorICAgICBXb3JkMTYgdDBfZnIxLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBtaW5pbXVtIHZhbHVlIGZvciByZXNvbHV0aW9uIDEgICAgICAgICovDQorICAgICBXb3JkMTYgTF9zdWJmciAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBMZW5ndGggb2Ygc3ViZnJhbWUgICAgICAgICAgICAgICAgICAgICovDQorKTsNCit2b2lkIFByZWRfbHQ0KA0KKyAgICAgV29yZDE2IGV4Y1tdLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbi9vdXQ6IGV4Y2l0YXRpb24gYnVmZmVyICovDQorICAgICBXb3JkMTYgVDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogaW50ZWdlciBwaXRjaCBsYWcgKi8NCisgICAgIFdvcmQxNiBmcmFjLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBmcmFjdGlvbiBvZiBsYWcgICAqLw0KKyAgICAgV29yZDE2IExfc3ViZnIgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IHN1YmZyYW1lIHNpemUgICAgICovDQorKTsNCisNCit2b2lkIHByZWRfbHQ0X2FzbSgNCisgICAgIFdvcmQxNiBleGNbXSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW4vb3V0OiBleGNpdGF0aW9uIGJ1ZmZlciAqLw0KKyAgICAgV29yZDE2IFQwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IGludGVnZXIgcGl0Y2ggbGFnICovDQorICAgICBXb3JkMTYgZnJhYywgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogZnJhY3Rpb24gb2YgbGFnICAgKi8NCisgICAgIFdvcmQxNiBMX3N1YmZyICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBzdWJmcmFtZSBzaXplICAgICAqLw0KKyk7DQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisgKiAgICAgICAgICAgICAgICAgICAgICAgZ2FpbiBwcm90b3R5cGVzICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK1dvcmQxNiBHX3BpdGNoKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgUTE0IDogR2FpbiBvZiBwaXRjaCBsYWcgc2F0dXJhdGVkIHRvIDEuMiAgICovDQorICAgICBXb3JkMTYgeG5bXSwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBQaXRjaCB0YXJnZXQuICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgICAgIFdvcmQxNiB5MVtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IGZpbHRlcmVkIGFkYXB0aXZlIGNvZGVib29rLiAgICAgICAgICAqLw0KKyAgICAgV29yZDE2IGdfY29lZmZbXSwgICAgICAgICAgICAgICAgICAgICAvKiA6IENvcnJlbGF0aW9ucyBuZWVkIGZvciBnYWluIHF1YW50aXphdGlvbi4gKi8NCisgICAgIFdvcmQxNiBMX3N1YmZyICAgICAgICAgICAgICAgICAgICAgICAgLyogOiBMZW5ndGggb2Ygc3ViZnJhbWUuICAgICAgICAgICAgICAgICAgKi8NCispOw0KK3ZvaWQgSW5pdF9RX2dhaW4yKA0KKyAgICAgV29yZDE2ICogbWVtICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBvdXRwdXQgIDpzdGF0aWMgbWVtb3J5ICgyIHdvcmRzKSAgICAgICovDQorKTsNCitXb3JkMTYgUV9nYWluMiggICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUmV0dXJuIGluZGV4IG9mIHF1YW50aXphdGlvbi4gICAgICAgICovDQorICAgICBXb3JkMTYgeG5bXSwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRX3huOlRhcmdldCB2ZWN0b3IuICAgICAgICAgICAgICAgKi8NCisgICAgIFdvcmQxNiB5MVtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFFfeG46QWRhcHRpdmUgY29kZWJvb2suICAgICAgICAgICAqLw0KKyAgICAgV29yZDE2IFFfeG4sICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDp4biBhbmQgeTEgZm9ybWF0ICAgICAgICAgICAgICovDQorICAgICBXb3JkMTYgeTJbXSwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBROSAgOkZpbHRlcmVkIGlubm92YXRpdmUgdmVjdG9yLiAgKi8NCisgICAgIFdvcmQxNiBjb2RlW10sICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFE5ICA6SW5ub3ZhdGl2ZSB2ZWN0b3IuICAgICAgICAgICAqLw0KKyAgICAgV29yZDE2IGdfY29lZmZbXSwgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDpDb3JyZWxhdGlvbnMgPHhuIHkxPiA8eTEgeTE+ICovDQorLyogQ29tcHV0ZSBpbiBHX3BpdGNoKCkuICAgICAgICAqLw0KKyAgICAgV29yZDE2IExfc3ViZnIsICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDpTdWJmcmFtZSBsZW5naHQuICAgICAgICAgICAgICovDQorICAgICBXb3JkMTYgbmJpdHMsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBudW1iZXIgb2YgYml0cyAoNiBvciA3KSAgICAgKi8NCisgICAgIFdvcmQxNiAqIGdhaW5fcGl0LCAgICAgICAgICAgICAgICAgICAgLyogKGkvbylRMTQ6UGl0Y2ggZ2Fpbi4gICAgICAgICAgICAgICAgICAqLw0KKyAgICAgV29yZDMyICogZ2Fpbl9jb2QsICAgICAgICAgICAgICAgICAgICAvKiAobykgUTE2IDpDb2RlIGdhaW4uICAgICAgICAgICAgICAgICAgICovDQorICAgICBXb3JkMTYgZ3BfY2xpcCwgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBHcCBDbGlwcGluZyBmbGFnICAgICAgICAgICAgKi8NCisgICAgIFdvcmQxNiAqIG1lbSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkvbykgICA6c3RhdGljIG1lbW9yeSAoMiB3b3JkcykgICAgICAqLw0KKyk7DQorDQordm9pZCBJbml0X0RfZ2FpbjIoDQorICAgICBXb3JkMTYgKiBtZW0gICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG91dHB1dCAgOnN0YXRpYyBtZW1vcnkgKDQgd29yZHMpICAgICAgKi8NCispOw0KK3ZvaWQgRF9nYWluMigNCisgICAgIFdvcmQxNiBpbmRleCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6aW5kZXggb2YgcXVhbnRpemF0aW9uLiAgICAgICAqLw0KKyAgICAgV29yZDE2IG5iaXRzLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogbnVtYmVyIG9mIGJpdHMgKDYgb3IgNykgICAgICovDQorICAgICBXb3JkMTYgY29kZVtdLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBROSAgOklubm92YXRpdmUgdmVjdG9yLiAgICAgICAgICAgKi8NCisgICAgIFdvcmQxNiBMX3N1YmZyLCAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6U3ViZnJhbWUgbGVuZ2h0LiAgICAgICAgICAgICAqLw0KKyAgICAgV29yZDE2ICogZ2Fpbl9waXQsICAgICAgICAgICAgICAgICAgICAvKiAobykgUTE0IDpQaXRjaCBnYWluLiAgICAgICAgICAgICAgICAgICovDQorICAgICBXb3JkMzIgKiBnYWluX2NvZCwgICAgICAgICAgICAgICAgICAgIC8qIChvKSBRMTYgOkNvZGUgZ2Fpbi4gICAgICAgICAgICAgICAgICAgKi8NCisgICAgIFdvcmQxNiBiZmksICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6YmFkIGZyYW1lIGluZGljYXRvciAgICAgICAgICAqLw0KKyAgICAgV29yZDE2IHByZXZfYmZpLCAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgOiBQcmV2aW91cyBCRiBpbmRpY2F0b3IgICAgICAqLw0KKyAgICAgV29yZDE2IHN0YXRlLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgOiBTdGF0ZSBvZiBCRkggICAgICAgICAgICAgICAqLw0KKyAgICAgV29yZDE2IHVudXNhYmxlX2ZyYW1lLCAgICAgICAgICAgICAgICAvKiAoaSkgOiBVRiBpbmRpY2F0b3IgICAgICAgICAgICAqLw0KKyAgICAgV29yZDE2IHZhZF9oaXN0LCAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgICAgICA6bnVtYmVyIG9mIG5vbi1zcGVlY2ggZnJhbWVzICAqLw0KKyAgICAgV29yZDE2ICogbWVtICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaS9vKSAgIDpzdGF0aWMgbWVtb3J5ICg0IHdvcmRzKSAgICAgICovDQorKTsNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICBhY2VscCBwcm90b3R5cGVzICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQordm9pZCBjb3JfaF94KA0KKyAgICAgV29yZDE2IGhbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTEyIDogaW1wdWxzZSByZXNwb25zZSBvZiB3ZWlnaHRlZCBzeW50aGVzaXMgZmlsdGVyICovDQorICAgICBXb3JkMTYgeFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRMCAgOiB0YXJnZXQgdmVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgICAgIFdvcmQxNiBkbltdICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIDwxMmJpdCA6IGNvcnJlbGF0aW9uIGJldHdlZW4gdGFyZ2V0IGFuZCBoW10gICAgICAgICAqLw0KKyk7DQordm9pZCBBQ0VMUF8ydDY0X2Z4KA0KKyAgICAgV29yZDE2IGRuW10sICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgPDEyYiA6IGNvcnJlbGF0aW9uIGJldHdlZW4gdGFyZ2V0IHhbXSBhbmQgSFtdICAgICAgKi8NCisgICAgIFdvcmQxNiBjbltdLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIDwxMmIgOiByZXNpZHVhbCBhZnRlciBsb25nIHRlcm0gcHJlZGljdGlvbiAgICAgICAgICovDQorICAgICBXb3JkMTYgSFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRMTI6IGltcHVsc2UgcmVzcG9uc2Ugb2Ygd2VpZ2h0ZWQgc3ludGhlc2lzIGZpbHRlciAqLw0KKyAgICAgV29yZDE2IGNvZGVbXSwgICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgUTkgOiBhbGdlYnJhaWMgKGZpeGVkKSBjb2RlYm9vayBleGNpdGF0aW9uICAgICAgICAgKi8NCisgICAgIFdvcmQxNiB5W10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIFE5IDogZmlsdGVyZWQgZml4ZWQgY29kZWJvb2sgZXhjaXRhdGlvbiAgICAgICAgICAgICovDQorICAgICBXb3JkMTYgKiBpbmRleCAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSA6IGluZGV4ICgxMik6IDUrMSs1KzEgPSAxMSBiaXRzLiAgICAgICAgICAgICAgICAgICAgICovDQorKTsNCisNCit2b2lkIEFDRUxQXzR0NjRfZngoDQorICAgICBXb3JkMTYgZG5bXSwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSA8MTJiIDogY29ycmVsYXRpb24gYmV0d2VlbiB0YXJnZXQgeFtdIGFuZCBIW10gICAgICAqLw0KKyAgICAgV29yZDE2IGNuW10sICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgPDEyYiA6IHJlc2lkdWFsIGFmdGVyIGxvbmcgdGVybSBwcmVkaWN0aW9uICAgICAgICAgKi8NCisgICAgIFdvcmQxNiBIW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFExMjogaW1wdWxzZSByZXNwb25zZSBvZiB3ZWlnaHRlZCBzeW50aGVzaXMgZmlsdGVyICovDQorICAgICBXb3JkMTYgY29kZVtdLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSBROSA6IGFsZ2VicmFpYyAoZml4ZWQpIGNvZGVib29rIGV4Y2l0YXRpb24gICAgICAgICAqLw0KKyAgICAgV29yZDE2IHlbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgUTkgOiBmaWx0ZXJlZCBmaXhlZCBjb2RlYm9vayBleGNpdGF0aW9uICAgICAgICAgICAgKi8NCisgICAgIFdvcmQxNiBuYmJpdHMsICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIDogMjAsIDM2LCA0NCwgNTIsIDY0LCA3MiBvciA4OCBiaXRzICAgICAgICAgICAgICAgICovDQorICAgICBXb3JkMTYgc2VyX3NpemUsICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSA6IGJpdCByYXRlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgICAgV29yZDE2IF9pbmRleFtdICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgOiBpbmRleCAoMjApOiA1KzUrNSs1ID0gMjAgYml0cy4gICAgICAgICAgICAgICAgICAgKi8NCisJCQkJCSAgIC8qIChvKSA6IGluZGV4ICgzNik6IDkrOSs5KzkgPSAzNiBiaXRzLiAgICAgICAgICAgICAgICAgICAqLw0KKwkJCQkJICAgLyogKG8pIDogaW5kZXggKDQ0KTogMTMrOSsxMys5ID0gNDQgYml0cy4gICAgICAgICAgICAgICAgICovDQorCQkJCQkgICAvKiAobykgOiBpbmRleCAoNTIpOiAxMysxMysxMysxMyA9IDUyIGJpdHMuICAgICAgICAgICAgICAgKi8NCisJCQkJCSAgIC8qIChvKSA6IGluZGV4ICg2NCk6IDIrMisyKzIrMTQrMTQrMTQrMTQgPSA2NCBiaXRzLiAgICAgICAqLw0KKwkJCQkJICAgLyogKG8pIDogaW5kZXggKDcyKTogMTArMisxMCsyKzEwKzE0KzEwKzE0ID0gNzIgYml0cy4gICAgICovDQorCQkJCQkgICAvKiAobykgOiBpbmRleCAoODgpOiAxMSsxMSsxMSsxMSsxMSsxMSsxMSsxMSA9IDg4IGJpdHMuICAgKi8NCispOw0KKw0KK3ZvaWQgUGl0X3NocnAoDQorICAgICBXb3JkMTYgKiB4LCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGluL291dDogaW1wdWxzZSByZXNwb25zZSAob3IgYWxnZWJyYWljIGNvZGUpICovDQorICAgICBXb3JkMTYgcGl0X2xhZywgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogcGl0Y2ggbGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAgICBXb3JkMTYgc2hhcnAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogcGl0Y2ggc2hhcnBlbmluZyBmYWN0b3IgKFExNSkgICAgICAgICovDQorICAgICBXb3JkMTYgTF9zdWJmciAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogc3ViZnJhbWUgc2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICovDQorKTsNCisNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXJzIHByb3RvdHlwZXMgICAgICAgICAgICAgICAgICAgICAgICAqDQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQordm9pZCBDb3B5KA0KKyAgICAgV29yZDE2IHhbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICA6IGlucHV0IHZlY3RvciAgICovDQorICAgICBXb3JkMTYgeVtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSAgIDogb3V0cHV0IHZlY3RvciAgKi8NCisgICAgIFdvcmQxNiBMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgOiB2ZWN0b3IgbGVuZ3RoICAqLw0KKyk7DQordm9pZCBTZXRfemVybygNCisgICAgIFdvcmQxNiB4W10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pICAgIDogdmVjdG9yIHRvIGNsZWFyICAgICAqLw0KKyAgICAgV29yZDE2IEwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgOiBsZW5ndGggb2YgdmVjdG9yICAgICovDQorKTsNCit2b2lkIFVwZHRfdGFyKA0KKyAgICAgV29yZDE2ICogeCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTAgIDogb2xkIHRhcmdldCAoZm9yIHBpdGNoIHNlYXJjaCkgICAgICovDQorICAgICBXb3JkMTYgKiB4MiwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSBRMCAgOiBuZXcgdGFyZ2V0IChmb3IgY29kZWJvb2sgc2VhcmNoKSAgKi8NCisgICAgIFdvcmQxNiAqIHksICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFEwICA6IGZpbHRlcmVkIGFkYXB0aXZlIGNvZGVib29rIHZlY3RvciAqLw0KKyAgICAgV29yZDE2IGdhaW4sICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTE0IDogYWRhcHRpdmUgY29kZWJvb2sgZ2FpbiAgICAgICAgICAgICovDQorICAgICBXb3JkMTYgTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBzdWJmcmFtZSBzaXplICAgICAgICAgICAgICAgICAgICAgKi8NCispOw0KK1dvcmQxNiB2b2ljZV9mYWN0b3IoICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgUTE1IDogZmFjdG9yICgtMT11bnZvaWNlZCB0byAxPXZvaWNlZCkgKi8NCisgICAgIFdvcmQxNiBleGNbXSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFFfZXhjOiBwaXRjaCBleGNpdGF0aW9uICAgICAgICAgICAgICAgICovDQorICAgICBXb3JkMTYgUV9leGMsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBleGMgZm9ybWF0ICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgICAgV29yZDE2IGdhaW5fcGl0LCAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTE0IDogZ2FpbiBvZiBwaXRjaCAgICAgICAgICAgICAgICAgICAgKi8NCisgICAgIFdvcmQxNiBjb2RlW10sICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFE5ICA6IEZpeGVkIGNvZGVib29rIGV4Y2l0YXRpb24gICAgICAgICovDQorICAgICBXb3JkMTYgZ2Fpbl9jb2RlLCAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRMCAgOiBnYWluIG9mIGNvZGUgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgICAgV29yZDE2IExfc3ViZnIgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogc3ViZnJhbWUgbGVuZ3RoICAgICAgICAgICAgICAgICAgKi8NCispOw0KK3ZvaWQgU2NhbGVfc2lnKA0KKyAgICAgV29yZDE2IHhbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaS9vKSA6IHNpZ25hbCB0byBzY2FsZSAgICAgICAgICAgICAgICovDQorICAgICBXb3JkMTYgbGcsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgIDogc2l6ZSBvZiB4W10gICAgICAgICAgICAgICAgICAgKi8NCisgICAgIFdvcmQxNiBleHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgOiBleHBvbmVudDogeCA9IHJvdW5kKHggPDwgZXhwKSAqLw0KKyk7DQorDQordm9pZCBTY2FsZV9zaWdfb3B0KA0KKyAgICAgV29yZDE2IHhbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaS9vKSA6IHNpZ25hbCB0byBzY2FsZSAgICAgICAgICAgICAgICovDQorICAgICBXb3JkMTYgbGcsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgIDogc2l6ZSBvZiB4W10gICAgICAgICAgICAgICAgICAgKi8NCisgICAgIFdvcmQxNiBleHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgOiBleHBvbmVudDogeCA9IHJvdW5kKHggPDwgZXhwKSAqLw0KKyk7DQorDQorV29yZDE2IFJhbmRvbShXb3JkMTYgKiBzZWVkKTsNCisNCit2b2lkIEluaXRfZ3BfY2xpcCgNCisgICAgIFdvcmQxNiBtZW1bXSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIDogbWVtb3J5IG9mIGdhaW4gb2YgcGl0Y2ggY2xpcHBpbmcgYWxnb3JpdGhtICovDQorKTsNCitXb3JkMTYgR3BfY2xpcCgNCisgICAgIFdvcmQxNiBtZW1bXSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkvbykgOiBtZW1vcnkgb2YgZ2FpbiBvZiBwaXRjaCBjbGlwcGluZyBhbGdvcml0aG0gKi8NCispOw0KK3ZvaWQgR3BfY2xpcF90ZXN0X2lzZigNCisgICAgIFdvcmQxNiBpc2ZbXSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgOiBpc2YgdmFsdWVzIChpbiBmcmVxdWVuY3kgZG9tYWluKSAgICAgICAgICAgKi8NCisgICAgIFdvcmQxNiBtZW1bXSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkvbykgOiBtZW1vcnkgb2YgZ2FpbiBvZiBwaXRjaCBjbGlwcGluZyBhbGdvcml0aG0gKi8NCispOw0KK3ZvaWQgR3BfY2xpcF90ZXN0X2dhaW5fcGl0KA0KKyAgICAgV29yZDE2IGdhaW5fcGl0LCAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICA6IGdhaW4gb2YgcXVhbnRpemVkIHBpdGNoICAgICAgICAgICAgICAgICAgICAqLw0KKyAgICAgV29yZDE2IG1lbVtdICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaS9vKSA6IG1lbW9yeSBvZiBnYWluIG9mIHBpdGNoIGNsaXBwaW5nIGFsZ29yaXRobSAqLw0KKyk7DQorDQorDQorI2VuZGlmICAgLy9fX0FDRUxQX0hfXw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvYmFzaWNfb3AuaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvYmFzaWNfb3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YTJmODYwCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9iYXNpY19vcC5oCkBAIC0wLDAgKzEsMTA5NCBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisNCisjaWZuZGVmIF9fQkFTSUNfT1BfSF9fDQorI2RlZmluZSBfX0JBU0lDX09QX0hfXw0KKw0KKyNpbmNsdWRlIDxzdGRpby5oPg0KKyNpbmNsdWRlIDxzdGRsaWIuaD4NCisjaW5jbHVkZSAidHlwZWRlZi5oIg0KKw0KKyNkZWZpbmUgTUFYXzMyIChXb3JkMzIpMHg3ZmZmZmZmZkwNCisjZGVmaW5lIE1JTl8zMiAoV29yZDMyKTB4ODAwMDAwMDBMDQorDQorI2RlZmluZSBNQVhfMTYgKFdvcmQxNikrMzI3NjcJLyogMHg3ZmZmICovDQorI2RlZmluZSBNSU5fMTYgKFdvcmQxNiktMzI3NjgJLyogMHg4MDAwICovDQorDQorDQorI2lmZGVmIExJTlVYDQorI2RlZmluZSAgc3RhdGljX3ZvICBzdGF0aWMgX19pbmxpbmVfXw0KKyNlbHNlDQorI2RlZmluZSAgc3RhdGljX3ZvICBzdGF0aWMgX19pbmxpbmUNCisjZW5kaWYgDQorDQorI2RlZmluZSBzYXR1cmF0ZShMX3ZhcjEpICgoKExfdmFyMSkgPiAwWDAwMDA3ZmZmTCkgPyAoTUFYXzE2KTogKCgoTF92YXIxKSA8IChXb3JkMzIpIDB4ZmZmZjgwMDBMKSA/IChNSU5fMTYpOiAoKExfdmFyMSkgJiAweGZmZmYpKSkNCisNCisjZGVmaW5lIGFic19zKHgpICAgICAgICgoV29yZDE2KSgoKHgpICE9IE1JTl8xNikgPyAoKCh4KSA+PSAwKSA/ICh4KSA6ICgtKHgpKSkgOiBNQVhfMTYpKSAgLyogU2hvcnQgYWJzLCAgICAgICAgICAgMSAgICovDQorI2RlZmluZSBMX2RlcG9zaXRfaCh4KSAoKChXb3JkMzIpKHgpKSA8PCAxNikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDE2IGJpdCB2YXIxIC0+IE1TQiwgICAgIDIgKi8NCisjZGVmaW5lIExfZGVwb3NpdF9sKHgpICgoV29yZDMyKSh4KSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogMTYgYml0IHZhcjEgLT4gTFNCLCAgICAgMiAqLw0KKyNkZWZpbmUgTF9hYnMoeCkgKCgoeCkgIT0gTUlOXzMyKSA/ICgoKHgpID49IDApID8gKHgpIDogKC0oeCkpKSA6IE1BWF8zMikgICAgICAgICAgICAgICAgICAvKiBMb25nIGFicywgICAgICAgICAgICAgIDMqLw0KKyNkZWZpbmUgbmVnYXRlKHZhcjEpICgoV29yZDE2KSgoKHZhcjEpID09IE1JTl8xNikgPyBNQVhfMTYgOiAoLSh2YXIxKSkpKSAgICAgICAgICAgICAgICAgICAvKiBTaG9ydCBuZWdhdGUsICAgICAgICAxKi8NCisjZGVmaW5lIExfbmVnYXRlKExfdmFyMSkgKCgoTF92YXIxKSA9PSAoTUlOXzMyKSkgPyAoTUFYXzMyKSA6ICgtKExfdmFyMSkpKSAgICAgICAgICAgICAgICAgLyogTG9uZyBuZWdhdGUsICAgICAyKi8NCisNCisNCisjZGVmaW5lIGV4dHJhY3RfaChhKQkJCSgoV29yZDE2KShhID4+IDE2KSkNCisjZGVmaW5lIGV4dHJhY3RfbCh4KSAgICAgICAgICAgIAkoV29yZDE2KSgoeCkpDQorI2RlZmluZSBhZGQxKGEsYikJCQkoYSArIGIpDQorI2RlZmluZSB2b19MX21zdShhLGIsYykJCQkoIGEgLSAoKCBiICogYyApIDw8IDEpICkNCisjZGVmaW5lIHZvX211bHQzMihhLCBiKSAgICAgICAgICgoYSkgKiAoYikpDQorI2RlZmluZSB2b19tdWx0KGEsYikJCQkoKCBhICogYiApID4+IDE1ICkNCisjZGVmaW5lCXZvX0xfbXVsdChhLGIpCSAgICAJCSgoKGEpICogKGIpKSA8PCAxKQ0KKyNkZWZpbmUgdm9fc2hyX3IodmFyMSwgdmFyMikgICAJCSgodmFyMSsoKFdvcmQxNikoMUw8PCh2YXIyLTEpKSkpPj52YXIyKQ0KKyNkZWZpbmUgdm9fc3ViKGEsYikJCQkoYSAtIGIpDQorI2RlZmluZSB2b19MX2RlcG9zaXRfaChhKQkJKChXb3JkMzIpKChhKSA8PCAxNikpDQorI2RlZmluZSB2b19yb3VuZChhKQkJCSgoYSArIDB4MDAwMDgwMDApID4+IDE2KQ0KKyNkZWZpbmUgdm9fZXh0cmFjdF9sKGEpCQkJKChXb3JkMTYpKGEpKQ0KKyNkZWZpbmUgdm9fTF9hZGQoYSxiKQkJCShhICsgYikNCisjZGVmaW5lIHZvX0xfc3ViKGEsYikJCQkoYSAtIGIpDQorI2RlZmluZSB2b19tdWx0X3IoYSxiKQkJCSgoKCBhICogYiApICsgMHg0MDAwICkgPj4gMTUgKQ0KKyNkZWZpbmUgdm9fbmVnYXRlKGEpCQkgICAgICAgICgtYSkNCisjZGVmaW5lIHZvX0xfc2hyX3IoTF92YXIxLCB2YXIyKSAgICAgICAgKChMX3ZhcjErKChXb3JkMzIpKDFMPDwodmFyMi0xKSkpKT4+dmFyMikNCisNCisNCisvKl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIFByb3RvdHlwZXMgZm9yIGJhc2ljIGFyaXRobWV0aWMgb3BlcmF0b3JzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffA0KKyovDQorc3RhdGljX3ZvIFdvcmQxNiBhZGQgKFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMik7CQkJCS8qIFNob3J0IGFkZCwxICovDQorc3RhdGljX3ZvIFdvcmQxNiBzdWIgKFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMik7CQkJCS8qIFNob3J0IHN1YiwxICovDQorc3RhdGljX3ZvIFdvcmQxNiBzaGwgKFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTaG9ydCBzaGlmdCBsZWZ0LCAgICAxICAgKi8NCitzdGF0aWNfdm8gV29yZDE2IHNociAoV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFNob3J0IHNoaWZ0IHJpZ2h0LCAgIDEgICAqLw0KK3N0YXRpY192byBXb3JkMTYgbXVsdCAoV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU2hvcnQgbXVsdCwgICAgICAgICAgMSAgICovDQorc3RhdGljX3ZvIFdvcmQzMiBMX211bHQgKFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBMb25nIG11bHQsICAgICAgICAgICAxICAgKi8NCitzdGF0aWNfdm8gV29yZDE2IHZvcm91bmQgKFdvcmQzMiBMX3ZhcjEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJvdW5kLCAgICAgICAgICAgICAgIDEgICAqLw0KK3N0YXRpY192byBXb3JkMzIgTF9tYWMgKFdvcmQzMiBMX3ZhcjMsIFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMik7ICAgICAgICAgICAgCS8qIE1hYywgIDEgICovDQorc3RhdGljX3ZvIFdvcmQzMiBMX21zdSAoV29yZDMyIExfdmFyMywgV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKTsgICAJCS8qIE1zdSwgIDEgICovDQorc3RhdGljX3ZvIFdvcmQzMiBMX2FkZCAoV29yZDMyIExfdmFyMSwgV29yZDMyIExfdmFyMik7ICAgCQkgCS8qIExvbmcgYWRkLCAgICAgICAgMiAqLw0KK3N0YXRpY192byBXb3JkMzIgTF9zdWIgKFdvcmQzMiBMX3ZhcjEsIFdvcmQzMiBMX3ZhcjIpOyAgIAkJCS8qIExvbmcgc3ViLCAgICAgICAgMiAqLw0KK3N0YXRpY192byBXb3JkMTYgbXVsdF9yIChXb3JkMTYgdmFyMSwgV29yZDE2IHZhcjIpOyAgICAgIAkJIAkvKiBNdWx0IHdpdGggcm91bmQsIDIgKi8NCitzdGF0aWNfdm8gV29yZDMyIExfc2hsMihXb3JkMzIgTF92YXIxLCBXb3JkMTYgdmFyMik7ICAgICAgICAgICAgIAkJLyogdmFyMiA+IDAqLw0KK3N0YXRpY192byBXb3JkMzIgTF9zaGwgKFdvcmQzMiBMX3ZhcjEsIFdvcmQxNiB2YXIyKTsgICAgCSAJIAkvKiBMb25nIHNoaWZ0IGxlZnQsIDIgKi8NCitzdGF0aWNfdm8gV29yZDMyIExfc2hyIChXb3JkMzIgTF92YXIxLCBXb3JkMTYgdmFyMik7ICAgIAkgCSAJLyogTG9uZyBzaGlmdCByaWdodCwgMiovDQorc3RhdGljX3ZvIFdvcmQzMiBMX3Nocl9yIChXb3JkMzIgTF92YXIxLCBXb3JkMTYgdmFyMik7IAkJCQkvKiBMb25nIHNoaWZ0IHJpZ2h0IHdpdGggcm91bmQsICAzICAgKi8NCitzdGF0aWNfdm8gV29yZDE2IG5vcm1fcyAoV29yZDE2IHZhcjEpOyAgICAgICAgICAgICAJCQkJLyogU2hvcnQgbm9ybSwgICAgICAgICAgIDE1ICAqLw0KK3N0YXRpY192byBXb3JkMTYgZGl2X3MgKFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMik7IAkJCQkvKiBTaG9ydCBkaXZpc2lvbiwgICAgICAgMTggICovDQorc3RhdGljX3ZvIFdvcmQxNiBub3JtX2wgKFdvcmQzMiBMX3ZhcjEpOyAgICAgICAgICAgCQkJCS8qIExvbmcgbm9ybSwgICAgICAgICAgICAzMCAgKi8gICANCisNCisvKl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIEZ1bmN0aW9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffA0KKyovDQorLypfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBGdW5jdGlvbiBOYW1lIDogYWRkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgUHVycG9zZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICBQZXJmb3JtcyB0aGUgYWRkaXRpb24gKHZhcjErdmFyMikgd2l0aCBvdmVyZmxvdyBjb250cm9sIGFuZCBzYXR1cmF0aW9uO3wNCit8ICAgIHRoZSAxNiBiaXQgcmVzdWx0IGlzIHNldCBhdCArMzI3Njcgd2hlbiBvdmVyZmxvdyBvY2N1cnMgb3IgYXQgLTMyNzY4ICAgfA0KK3wgICAgd2hlbiB1bmRlcmZsb3cgb2NjdXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgQ29tcGxleGl0eSB3ZWlnaHQgOiAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIElucHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgdmFyMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCit8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyMSA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICB2YXIyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KK3wgICAgICAgICAgICAgcmFuZ2UgOiAweGZmZmYgODAwMCA8PSB2YXIxIDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgT3V0cHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICBub25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBSZXR1cm4gVmFsdWUgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIHZhcl9vdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcl9vdXQgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgIHwNCit8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffA0KKyovDQorc3RhdGljX3ZvIFdvcmQxNiBhZGQgKFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMikNCit7DQorCVdvcmQxNiB2YXJfb3V0Ow0KKwlXb3JkMzIgTF9zdW07DQorCUxfc3VtID0gKFdvcmQzMikgdmFyMSArIHZhcjI7DQorCXZhcl9vdXQgPSBzYXR1cmF0ZSAoTF9zdW0pOw0KKwlyZXR1cm4gKHZhcl9vdXQpOw0KK30NCisNCisvKl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIEZ1bmN0aW9uIE5hbWUgOiBzdWIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBQdXJwb3NlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIFBlcmZvcm1zIHRoZSBzdWJ0cmFjdGlvbiAodmFyMSt2YXIyKSB3aXRoIG92ZXJmbG93IGNvbnRyb2wgYW5kIHNhdHUtICAgfA0KK3wgICAgcmF0aW9uOyB0aGUgMTYgYml0IHJlc3VsdCBpcyBzZXQgYXQgKzMyNzY3IHdoZW4gb3ZlcmZsb3cgb2NjdXJzIG9yIGF0ICB8DQorfCAgICAtMzI3Njggd2hlbiB1bmRlcmZsb3cgb2NjdXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBDb21wbGV4aXR5IHdlaWdodCA6IDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgSW5wdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICB2YXIxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KK3wgICAgICAgICAgICAgcmFuZ2UgOiAweGZmZmYgODAwMCA8PSB2YXIxIDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIHZhcjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcjEgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBPdXRwdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIG5vbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIFJldHVybiBWYWx1ZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgdmFyX291dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCit8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyX291dCA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgfA0KK3xfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX198DQorKi8NCisNCitzdGF0aWNfdm8gV29yZDE2IHN1YiAoV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKQ0KK3sNCisJV29yZDE2IHZhcl9vdXQ7DQorCVdvcmQzMiBMX2RpZmY7DQorCUxfZGlmZiA9IChXb3JkMzIpIHZhcjEgLSB2YXIyOw0KKwl2YXJfb3V0ID0gc2F0dXJhdGUgKExfZGlmZik7DQorCXJldHVybiAodmFyX291dCk7DQorfQ0KKw0KKy8qX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgRnVuY3Rpb24gTmFtZSA6IHNobCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIFB1cnBvc2UgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBBcml0aG1ldGljYWxseSBzaGlmdCB0aGUgMTYgYml0IGlucHV0IHZhcjEgbGVmdCB2YXIyIHBvc2l0aW9ucy5aZXJvIGZpbGx8DQorfCAgIHRoZSB2YXIyIExTQiBvZiB0aGUgcmVzdWx0LiBJZiB2YXIyIGlzIG5lZ2F0aXZlLCBhcml0aG1ldGljYWxseSBzaGlmdCAgIHwNCit8ICAgdmFyMSByaWdodCBieSAtdmFyMiB3aXRoIHNpZ24gZXh0ZW5zaW9uLiBTYXR1cmF0ZSB0aGUgcmVzdWx0IGluIGNhc2Ugb2YgfA0KK3wgICB1bmRlcmZsb3dzIG9yIG92ZXJmbG93cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgQ29tcGxleGl0eSB3ZWlnaHQgOiAxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIElucHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgdmFyMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCit8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyMSA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICB2YXIyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KK3wgICAgICAgICAgICAgcmFuZ2UgOiAweGZmZmYgODAwMCA8PSB2YXIxIDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgT3V0cHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICBub25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBSZXR1cm4gVmFsdWUgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIHZhcl9vdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcl9vdXQgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgIHwNCit8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffA0KKyovDQorDQorc3RhdGljX3ZvIFdvcmQxNiBzaGwgKFdvcmQxNiB2YXIxLCBXb3JkMTYgdmFyMikNCit7DQorCVdvcmQxNiB2YXJfb3V0Ow0KKwlXb3JkMzIgcmVzdWx0Ow0KKwlpZiAodmFyMiA8IDApDQorCXsNCisJCWlmICh2YXIyIDwgLTE2KQ0KKwkJCXZhcjIgPSAtMTY7DQorCQl2YXJfb3V0ID0gdmFyMSA+PiAoKFdvcmQxNiktdmFyMik7DQorCX0NCisJZWxzZQ0KKwl7DQorCQlyZXN1bHQgPSAoV29yZDMyKSB2YXIxICooKFdvcmQzMikgMSA8PCB2YXIyKTsNCisJCWlmICgodmFyMiA+IDE1ICYmIHZhcjEgIT0gMCkgfHwgKHJlc3VsdCAhPSAoV29yZDMyKSAoKFdvcmQxNikgcmVzdWx0KSkpDQorCQl7DQorCQkJdmFyX291dCA9IChXb3JkMTYpKCh2YXIxID4gMCkgPyBNQVhfMTYgOiBNSU5fMTYpOw0KKwkJfQ0KKwkJZWxzZQ0KKwkJew0KKwkJCXZhcl9vdXQgPSBleHRyYWN0X2wgKHJlc3VsdCk7DQorCQl9DQorCX0NCisJcmV0dXJuICh2YXJfb3V0KTsNCit9DQorDQorLypfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBGdW5jdGlvbiBOYW1lIDogc2hyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgUHVycG9zZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIEFyaXRobWV0aWNhbGx5IHNoaWZ0IHRoZSAxNiBiaXQgaW5wdXQgdmFyMSByaWdodCB2YXIyIHBvc2l0aW9ucyB3aXRoICAgIHwNCit8ICAgc2lnbiBleHRlbnNpb24uIElmIHZhcjIgaXMgbmVnYXRpdmUsIGFyaXRobWV0aWNhbGx5IHNoaWZ0IHZhcjEgbGVmdCBieSAgfA0KK3wgICAtdmFyMiB3aXRoIHNpZ24gZXh0ZW5zaW9uLiBTYXR1cmF0ZSB0aGUgcmVzdWx0IGluIGNhc2Ugb2YgdW5kZXJmbG93cyBvciB8DQorfCAgIG92ZXJmbG93cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBDb21wbGV4aXR5IHdlaWdodCA6IDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgSW5wdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICB2YXIxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KK3wgICAgICAgICAgICAgcmFuZ2UgOiAweGZmZmYgODAwMCA8PSB2YXIxIDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIHZhcjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcjEgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBPdXRwdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIG5vbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIFJldHVybiBWYWx1ZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgdmFyX291dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCit8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyX291dCA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgfA0KK3xfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX198DQorKi8NCisNCitzdGF0aWNfdm8gV29yZDE2IHNociAoV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKQ0KK3sNCisJV29yZDE2IHZhcl9vdXQ7DQorCWlmICh2YXIyIDwgMCkNCisJew0KKwkJaWYgKHZhcjIgPCAtMTYpDQorCQkJdmFyMiA9IC0xNjsNCisJCXZhcl9vdXQgPSBzaGwodmFyMSwgKFdvcmQxNiktdmFyMik7DQorCX0NCisJZWxzZQ0KKwl7DQorCQlpZiAodmFyMiA+PSAxNSkNCisJCXsNCisJCQl2YXJfb3V0ID0gKFdvcmQxNikoKHZhcjEgPCAwKSA/IC0xIDogMCk7DQorCQl9DQorCQllbHNlDQorCQl7DQorCQkJaWYgKHZhcjEgPCAwKQ0KKwkJCXsNCisJCQkJdmFyX291dCA9IChXb3JkMTYpKH4oKH52YXIxKSA+PiB2YXIyKSk7DQorCQkJfQ0KKwkJCWVsc2UNCisJCQl7DQorCQkJCXZhcl9vdXQgPSAoV29yZDE2KSh2YXIxID4+IHZhcjIpOw0KKwkJCX0NCisJCX0NCisJfQ0KKwlyZXR1cm4gKHZhcl9vdXQpOw0KK30NCisNCisvKl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIEZ1bmN0aW9uIE5hbWUgOiBtdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBQdXJwb3NlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIFBlcmZvcm1zIHRoZSBtdWx0aXBsaWNhdGlvbiBvZiB2YXIxIGJ5IHZhcjIgYW5kIGdpdmVzIGEgMTYgYml0IHJlc3VsdCAgfA0KK3wgICAgd2hpY2ggaXMgc2NhbGVkIGkuZS46ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICBtdWx0KHZhcjEsdmFyMikgPSBleHRyYWN0X2woTF9zaHIoKHZhcjEgdGltZXMgdmFyMiksMTUpKSBhbmQgIHwNCit8ICAgICAgICAgICAgIG11bHQoLTMyNzY4LC0zMjc2OCkgPSAzMjc2Ny4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIENvbXBsZXhpdHkgd2VpZ2h0IDogMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBJbnB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIHZhcjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcjEgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgdmFyMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCit8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyMSA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIE91dHB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgbm9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgUmV0dXJuIFZhbHVlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICB2YXJfb3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KK3wgICAgICAgICAgICAgcmFuZ2UgOiAweGZmZmYgODAwMCA8PSB2YXJfb3V0IDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICB8DQorfF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX3wNCisqLw0KKw0KK3N0YXRpY192byBXb3JkMTYgbXVsdCAoV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKQ0KK3sNCisJV29yZDE2IHZhcl9vdXQ7DQorCVdvcmQzMiBMX3Byb2R1Y3Q7DQorCUxfcHJvZHVjdCA9IChXb3JkMzIpIHZhcjEgKihXb3JkMzIpIHZhcjI7DQorCUxfcHJvZHVjdCA9IChMX3Byb2R1Y3QgJiAoV29yZDMyKSAweGZmZmY4MDAwTCkgPj4gMTU7DQorCWlmIChMX3Byb2R1Y3QgJiAoV29yZDMyKSAweDAwMDEwMDAwTCkNCisJCUxfcHJvZHVjdCA9IExfcHJvZHVjdCB8IChXb3JkMzIpIDB4ZmZmZjAwMDBMOw0KKwl2YXJfb3V0ID0gc2F0dXJhdGUgKExfcHJvZHVjdCk7DQorCXJldHVybiAodmFyX291dCk7DQorfQ0KKw0KKy8qX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgRnVuY3Rpb24gTmFtZSA6IExfbXVsdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIFB1cnBvc2UgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBMX211bHQgaXMgdGhlIDMyIGJpdCByZXN1bHQgb2YgdGhlIG11bHRpcGxpY2F0aW9uIG9mIHZhcjEgdGltZXMgdmFyMiAgICB8DQorfCAgIHdpdGggb25lIHNoaWZ0IGxlZnQgaS5lLjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICBMX211bHQodmFyMSx2YXIyKSA9IExfc2hsKCh2YXIxIHRpbWVzIHZhcjIpLDEpIGFuZCAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgTF9tdWx0KC0zMjc2OCwtMzI3NjgpID0gMjE0NzQ4MzY0Ny4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBDb21wbGV4aXR5IHdlaWdodCA6IDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgSW5wdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICB2YXIxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KK3wgICAgICAgICAgICAgcmFuZ2UgOiAweGZmZmYgODAwMCA8PSB2YXIxIDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIHZhcjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcjEgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBPdXRwdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIG5vbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIFJldHVybiBWYWx1ZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgTF92YXJfb3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAzMiBiaXQgbG9uZyBzaWduZWQgaW50ZWdlciAoV29yZDMyKSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgIHwNCit8ICAgICAgICAgICAgIHJhbmdlIDogMHg4MDAwIDAwMDAgPD0gTF92YXJfb3V0IDw9IDB4N2ZmZiBmZmZmLiAgICAgICAgICAgICAgfA0KK3xfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX198DQorKi8NCisNCitzdGF0aWNfdm8gV29yZDMyIExfbXVsdCAoV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKQ0KK3sNCisJV29yZDMyIExfdmFyX291dDsNCisJTF92YXJfb3V0ID0gKFdvcmQzMikgdmFyMSAqKFdvcmQzMikgdmFyMjsNCisJaWYgKExfdmFyX291dCAhPSAoV29yZDMyKSAweDQwMDAwMDAwTCkNCisJew0KKwkJTF92YXJfb3V0ICo9IDI7DQorCX0NCisJZWxzZQ0KKwl7DQorCQlMX3Zhcl9vdXQgPSBNQVhfMzI7DQorCX0NCisJcmV0dXJuIChMX3Zhcl9vdXQpOw0KK30NCisNCisvKl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIEZ1bmN0aW9uIE5hbWUgOiByb3VuZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBQdXJwb3NlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgUm91bmQgdGhlIGxvd2VyIDE2IGJpdHMgb2YgdGhlIDMyIGJpdCBpbnB1dCBudW1iZXIgaW50byB0aGUgTVMgMTYgYml0cyAgfA0KK3wgICB3aXRoIHNhdHVyYXRpb24uIFNoaWZ0IHRoZSByZXN1bHRpbmcgYml0cyByaWdodCBieSAxNiBhbmQgcmV0dXJuIHRoZSAxNiB8DQorfCAgIGJpdCBudW1iZXI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgcm91bmQoTF92YXIxKSA9IGV4dHJhY3RfaChMX2FkZChMX3ZhcjEsMzI3NjgpKSAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIENvbXBsZXhpdHkgd2VpZ2h0IDogMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBJbnB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIExfdmFyMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgMzIgYml0IGxvbmcgc2lnbmVkIGludGVnZXIgKFdvcmQzMiApIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorfCAgICAgICAgICAgICByYW5nZSA6IDB4ODAwMCAwMDAwIDw9IExfdmFyMSA8PSAweDdmZmYgZmZmZi4gICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBPdXRwdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIG5vbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIFJldHVybiBWYWx1ZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgdmFyX291dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCit8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyX291dCA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgfA0KK3xfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX198DQorKi8NCisNCitzdGF0aWNfdm8gV29yZDE2IHZvcm91bmQgKFdvcmQzMiBMX3ZhcjEpDQorew0KKwlXb3JkMTYgdmFyX291dDsNCisJV29yZDMyIExfcm91bmRlZDsNCisJTF9yb3VuZGVkID0gTF9hZGQgKExfdmFyMSwgKFdvcmQzMikgMHgwMDAwODAwMEwpOw0KKwl2YXJfb3V0ID0gZXh0cmFjdF9oIChMX3JvdW5kZWQpOw0KKwlyZXR1cm4gKHZhcl9vdXQpOw0KK30NCisNCisvKl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIEZ1bmN0aW9uIE5hbWUgOiBMX21hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBQdXJwb3NlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgTXVsdGlwbHkgdmFyMSBieSB2YXIyIGFuZCBzaGlmdCB0aGUgcmVzdWx0IGxlZnQgYnkgMS4gQWRkIHRoZSAzMiBiaXQgICAgfA0KK3wgICByZXN1bHQgdG8gTF92YXIzIHdpdGggc2F0dXJhdGlvbiwgcmV0dXJuIGEgMzIgYml0IHJlc3VsdDogICAgICAgICAgICAgICB8DQorfCAgICAgICAgTF9tYWMoTF92YXIzLHZhcjEsdmFyMikgPSBMX2FkZChMX3ZhcjMsTF9tdWx0KHZhcjEsdmFyMikpLiAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBDb21wbGV4aXR5IHdlaWdodCA6IDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgSW5wdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICBMX3ZhcjMgICAzMiBiaXQgbG9uZyBzaWduZWQgaW50ZWdlciAoV29yZDMyKSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgIHwNCit8ICAgICAgICAgICAgIHJhbmdlIDogMHg4MDAwIDAwMDAgPD0gTF92YXIzIDw9IDB4N2ZmZiBmZmZmLiAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICB2YXIxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KK3wgICAgICAgICAgICAgcmFuZ2UgOiAweGZmZmYgODAwMCA8PSB2YXIxIDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIHZhcjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcjEgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBPdXRwdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIG5vbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIFJldHVybiBWYWx1ZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgTF92YXJfb3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAzMiBiaXQgbG9uZyBzaWduZWQgaW50ZWdlciAoV29yZDMyKSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgIHwNCit8ICAgICAgICAgICAgIHJhbmdlIDogMHg4MDAwIDAwMDAgPD0gTF92YXJfb3V0IDw9IDB4N2ZmZiBmZmZmLiAgICAgICAgICAgICAgfA0KK3xfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX198DQorKi8NCisNCitzdGF0aWNfdm8gV29yZDMyIExfbWFjIChXb3JkMzIgTF92YXIzLCBXb3JkMTYgdmFyMSwgV29yZDE2IHZhcjIpDQorew0KKwlXb3JkMzIgTF92YXJfb3V0Ow0KKwlXb3JkMzIgTF9wcm9kdWN0Ow0KKwlMX3Byb2R1Y3QgPSAoKHZhcjEgKiB2YXIyKSA8PCAxKTsNCisJTF92YXJfb3V0ID0gTF9hZGQgKExfdmFyMywgTF9wcm9kdWN0KTsNCisJcmV0dXJuIChMX3Zhcl9vdXQpOw0KK30NCisNCisvKl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIEZ1bmN0aW9uIE5hbWUgOiBMX21zdSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBQdXJwb3NlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgTXVsdGlwbHkgdmFyMSBieSB2YXIyIGFuZCBzaGlmdCB0aGUgcmVzdWx0IGxlZnQgYnkgMS4gU3VidHJhY3QgdGhlIDMyICAgfA0KK3wgICBiaXQgcmVzdWx0IHRvIExfdmFyMyB3aXRoIHNhdHVyYXRpb24sIHJldHVybiBhIDMyIGJpdCByZXN1bHQ6ICAgICAgICAgICB8DQorfCAgICAgICAgTF9tc3UoTF92YXIzLHZhcjEsdmFyMikgPSBMX3N1YihMX3ZhcjMsTF9tdWx0KHZhcjEsdmFyMikpLiAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBDb21wbGV4aXR5IHdlaWdodCA6IDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgSW5wdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICBMX3ZhcjMgICAzMiBiaXQgbG9uZyBzaWduZWQgaW50ZWdlciAoV29yZDMyKSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgIHwNCit8ICAgICAgICAgICAgIHJhbmdlIDogMHg4MDAwIDAwMDAgPD0gTF92YXIzIDw9IDB4N2ZmZiBmZmZmLiAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICB2YXIxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KK3wgICAgICAgICAgICAgcmFuZ2UgOiAweGZmZmYgODAwMCA8PSB2YXIxIDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIHZhcjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcjEgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBPdXRwdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIG5vbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIFJldHVybiBWYWx1ZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgTF92YXJfb3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAzMiBiaXQgbG9uZyBzaWduZWQgaW50ZWdlciAoV29yZDMyKSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgIHwNCit8ICAgICAgICAgICAgIHJhbmdlIDogMHg4MDAwIDAwMDAgPD0gTF92YXJfb3V0IDw9IDB4N2ZmZiBmZmZmLiAgICAgICAgICAgICAgfA0KK3xfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX198DQorKi8NCisNCitzdGF0aWNfdm8gV29yZDMyIExfbXN1IChXb3JkMzIgTF92YXIzLCBXb3JkMTYgdmFyMSwgV29yZDE2IHZhcjIpDQorew0KKwlXb3JkMzIgTF92YXJfb3V0Ow0KKwlXb3JkMzIgTF9wcm9kdWN0Ow0KKwlMX3Byb2R1Y3QgPSAodmFyMSAqIHZhcjIpPDwxOw0KKwlMX3Zhcl9vdXQgPSBMX3N1YiAoTF92YXIzLCBMX3Byb2R1Y3QpOw0KKwlyZXR1cm4gKExfdmFyX291dCk7DQorfQ0KKw0KKy8qX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgRnVuY3Rpb24gTmFtZSA6IExfYWRkICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIFB1cnBvc2UgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAzMiBiaXRzIGFkZGl0aW9uIG9mIHRoZSB0d28gMzIgYml0cyB2YXJpYWJsZXMgKExfdmFyMStMX3ZhcjIpIHdpdGggICAgICB8DQorfCAgIG92ZXJmbG93IGNvbnRyb2wgYW5kIHNhdHVyYXRpb247IHRoZSByZXN1bHQgaXMgc2V0IGF0ICsyMTQ3NDgzNjQ3IHdoZW4gIHwNCit8ICAgb3ZlcmZsb3cgb2NjdXJzIG9yIGF0IC0yMTQ3NDgzNjQ4IHdoZW4gdW5kZXJmbG93IG9jY3Vycy4gICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIENvbXBsZXhpdHkgd2VpZ2h0IDogMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBJbnB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIExfdmFyMSAgIDMyIGJpdCBsb25nIHNpZ25lZCBpbnRlZ2VyIChXb3JkMzIpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSAgfA0KK3wgICAgICAgICAgICAgcmFuZ2UgOiAweDgwMDAgMDAwMCA8PSBMX3ZhcjMgPD0gMHg3ZmZmIGZmZmYuICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIExfdmFyMiAgIDMyIGJpdCBsb25nIHNpZ25lZCBpbnRlZ2VyIChXb3JkMzIpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSAgfA0KK3wgICAgICAgICAgICAgcmFuZ2UgOiAweDgwMDAgMDAwMCA8PSBMX3ZhcjMgPD0gMHg3ZmZmIGZmZmYuICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgT3V0cHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICBub25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBSZXR1cm4gVmFsdWUgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIExfdmFyX291dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgMzIgYml0IGxvbmcgc2lnbmVkIGludGVnZXIgKFdvcmQzMikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlICB8DQorfCAgICAgICAgICAgICByYW5nZSA6IDB4ODAwMCAwMDAwIDw9IExfdmFyX291dCA8PSAweDdmZmYgZmZmZi4gICAgICAgICAgICAgIHwNCit8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffA0KKyovDQorDQorc3RhdGljX3ZvIFdvcmQzMiBMX2FkZCAoV29yZDMyIExfdmFyMSwgV29yZDMyIExfdmFyMikNCit7DQorCVdvcmQzMiBMX3Zhcl9vdXQ7DQorCUxfdmFyX291dCA9IExfdmFyMSArIExfdmFyMjsNCisJaWYgKCgoTF92YXIxIF4gTF92YXIyKSAmIE1JTl8zMikgPT0gMCkNCisJew0KKwkJaWYgKChMX3Zhcl9vdXQgXiBMX3ZhcjEpICYgTUlOXzMyKQ0KKwkJew0KKwkJCUxfdmFyX291dCA9IChMX3ZhcjEgPCAwKSA/IE1JTl8zMiA6IE1BWF8zMjsNCisJCX0NCisJfQ0KKwlyZXR1cm4gKExfdmFyX291dCk7DQorfQ0KKw0KKy8qX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgRnVuY3Rpb24gTmFtZSA6IExfc3ViICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIFB1cnBvc2UgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAzMiBiaXRzIHN1YnRyYWN0aW9uIG9mIHRoZSB0d28gMzIgYml0cyB2YXJpYWJsZXMgKExfdmFyMS1MX3ZhcjIpIHdpdGggICB8DQorfCAgIG92ZXJmbG93IGNvbnRyb2wgYW5kIHNhdHVyYXRpb247IHRoZSByZXN1bHQgaXMgc2V0IGF0ICsyMTQ3NDgzNjQ3IHdoZW4gIHwNCit8ICAgb3ZlcmZsb3cgb2NjdXJzIG9yIGF0IC0yMTQ3NDgzNjQ4IHdoZW4gdW5kZXJmbG93IG9jY3Vycy4gICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIENvbXBsZXhpdHkgd2VpZ2h0IDogMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBJbnB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIExfdmFyMSAgIDMyIGJpdCBsb25nIHNpZ25lZCBpbnRlZ2VyIChXb3JkMzIpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSAgfA0KK3wgICAgICAgICAgICAgcmFuZ2UgOiAweDgwMDAgMDAwMCA8PSBMX3ZhcjMgPD0gMHg3ZmZmIGZmZmYuICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIExfdmFyMiAgIDMyIGJpdCBsb25nIHNpZ25lZCBpbnRlZ2VyIChXb3JkMzIpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSAgfA0KK3wgICAgICAgICAgICAgcmFuZ2UgOiAweDgwMDAgMDAwMCA8PSBMX3ZhcjMgPD0gMHg3ZmZmIGZmZmYuICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgT3V0cHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICBub25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBSZXR1cm4gVmFsdWUgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIExfdmFyX291dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgMzIgYml0IGxvbmcgc2lnbmVkIGludGVnZXIgKFdvcmQzMikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlICB8DQorfCAgICAgICAgICAgICByYW5nZSA6IDB4ODAwMCAwMDAwIDw9IExfdmFyX291dCA8PSAweDdmZmYgZmZmZi4gICAgICAgICAgICAgIHwNCit8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffA0KKyovDQorDQorc3RhdGljX3ZvIFdvcmQzMiBMX3N1YiAoV29yZDMyIExfdmFyMSwgV29yZDMyIExfdmFyMikNCit7DQorCVdvcmQzMiBMX3Zhcl9vdXQ7DQorCUxfdmFyX291dCA9IExfdmFyMSAtIExfdmFyMjsNCisJaWYgKCgoTF92YXIxIF4gTF92YXIyKSAmIE1JTl8zMikgIT0gMCkNCisJew0KKwkJaWYgKChMX3Zhcl9vdXQgXiBMX3ZhcjEpICYgTUlOXzMyKQ0KKwkJew0KKwkJCUxfdmFyX291dCA9IChMX3ZhcjEgPCAwTCkgPyBNSU5fMzIgOiBNQVhfMzI7DQorCQl9DQorCX0NCisJcmV0dXJuIChMX3Zhcl9vdXQpOw0KK30NCisNCisNCisvKl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIEZ1bmN0aW9uIE5hbWUgOiBtdWx0X3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBQdXJwb3NlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgU2FtZSBhcyBtdWx0IHdpdGggcm91bmRpbmcsIGkuZS46ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgIG11bHRfcih2YXIxLHZhcjIpID0gZXh0cmFjdF9sKExfc2hyKCgodmFyMSAqIHZhcjIpICsgMTYzODQpLDE1KSkgYW5kICB8DQorfCAgICAgbXVsdF9yKC0zMjc2OCwtMzI3NjgpID0gMzI3NjcuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBDb21wbGV4aXR5IHdlaWdodCA6IDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgSW5wdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICB2YXIxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KK3wgICAgICAgICAgICAgcmFuZ2UgOiAweGZmZmYgODAwMCA8PSB2YXIxIDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIHZhcjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcjEgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBPdXRwdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIG5vbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIFJldHVybiBWYWx1ZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgdmFyX291dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCit8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyX291dCA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgfA0KK3xfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX198DQorKi8NCisNCitzdGF0aWNfdm8gV29yZDE2IG11bHRfciAoV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKQ0KK3sNCisJV29yZDE2IHZhcl9vdXQ7DQorCVdvcmQzMiBMX3Byb2R1Y3RfYXJyOw0KKwlMX3Byb2R1Y3RfYXJyID0gKFdvcmQzMikgdmFyMSAqKFdvcmQzMikgdmFyMjsgICAgICAgLyogcHJvZHVjdCAqLw0KKwlMX3Byb2R1Y3RfYXJyICs9IChXb3JkMzIpIDB4MDAwMDQwMDBMOyAgICAgIC8qIHJvdW5kICovDQorCUxfcHJvZHVjdF9hcnIgJj0gKFdvcmQzMikgMHhmZmZmODAwMEw7DQorCUxfcHJvZHVjdF9hcnIgPj49IDE1OyAgICAgICAvKiBzaGlmdCAqLw0KKwlpZiAoTF9wcm9kdWN0X2FyciAmIChXb3JkMzIpIDB4MDAwMTAwMDBMKSAgIC8qIHNpZ24gZXh0ZW5kIHdoZW4gbmVjZXNzYXJ5ICovDQorCXsNCisJCUxfcHJvZHVjdF9hcnIgfD0gKFdvcmQzMikgMHhmZmZmMDAwMEw7DQorCX0NCisJdmFyX291dCA9IHNhdHVyYXRlIChMX3Byb2R1Y3RfYXJyKTsNCisJcmV0dXJuICh2YXJfb3V0KTsNCit9DQorDQorLypfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBGdW5jdGlvbiBOYW1lIDogTF9zaGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgUHVycG9zZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIEFyaXRobWV0aWNhbGx5IHNoaWZ0IHRoZSAzMiBiaXQgaW5wdXQgTF92YXIxIGxlZnQgdmFyMiBwb3NpdGlvbnMuIFplcm8gIHwNCit8ICAgZmlsbCB0aGUgdmFyMiBMU0Igb2YgdGhlIHJlc3VsdC4gSWYgdmFyMiBpcyBuZWdhdGl2ZSwgYXJpdGhtZXRpY2FsbHkgICAgfA0KK3wgICBzaGlmdCBMX3ZhcjEgcmlnaHQgYnkgLXZhcjIgd2l0aCBzaWduIGV4dGVuc2lvbi4gU2F0dXJhdGUgdGhlIHJlc3VsdCBpbiB8DQorfCAgIGNhc2Ugb2YgdW5kZXJmbG93cyBvciBvdmVyZmxvd3MuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBDb21wbGV4aXR5IHdlaWdodCA6IDIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgSW5wdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICBMX3ZhcjEgICAzMiBiaXQgbG9uZyBzaWduZWQgaW50ZWdlciAoV29yZDMyKSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgIHwNCit8ICAgICAgICAgICAgIHJhbmdlIDogMHg4MDAwIDAwMDAgPD0gTF92YXIzIDw9IDB4N2ZmZiBmZmZmLiAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICB2YXIyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KK3wgICAgICAgICAgICAgcmFuZ2UgOiAweGZmZmYgODAwMCA8PSB2YXIxIDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgT3V0cHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICBub25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBSZXR1cm4gVmFsdWUgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIExfdmFyX291dCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgMzIgYml0IGxvbmcgc2lnbmVkIGludGVnZXIgKFdvcmQzMikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlICB8DQorfCAgICAgICAgICAgICByYW5nZSA6IDB4ODAwMCAwMDAwIDw9IExfdmFyX291dCA8PSAweDdmZmYgZmZmZi4gICAgICAgICAgICAgIHwNCit8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffA0KKyovDQorDQorc3RhdGljX3ZvIFdvcmQzMiBMX3NobCAoV29yZDMyIExfdmFyMSwgV29yZDE2IHZhcjIpDQorew0KKwlXb3JkMzIgTF92YXJfb3V0ID0gMEw7DQorCWlmICh2YXIyIDw9IDApDQorCXsNCisJCWlmICh2YXIyIDwgLTMyKQ0KKwkJCXZhcjIgPSAtMzI7DQorCQlMX3Zhcl9vdXQgPSAoTF92YXIxID4+IChXb3JkMTYpLXZhcjIpOw0KKwl9DQorCWVsc2UNCisJew0KKwkJZm9yICg7IHZhcjIgPiAwOyB2YXIyLS0pDQorCQl7DQorCQkJaWYgKExfdmFyMSA+IChXb3JkMzIpIDBYM2ZmZmZmZmZMKQ0KKwkJCXsNCisJCQkJTF92YXJfb3V0ID0gTUFYXzMyOw0KKwkJCQlicmVhazsNCisJCQl9DQorCQkJZWxzZQ0KKwkJCXsNCisJCQkJaWYgKExfdmFyMSA8IChXb3JkMzIpIDB4YzAwMDAwMDBMKQ0KKwkJCQl7DQorCQkJCQkvL092ZXJmbG93ID0gMTsNCisJCQkJCUxfdmFyX291dCA9IE1JTl8zMjsNCisJCQkJCWJyZWFrOw0KKwkJCQl9DQorCQkJfQ0KKwkJCUxfdmFyMSAqPSAyOw0KKwkJCUxfdmFyX291dCA9IExfdmFyMTsNCisJCX0NCisJfQ0KKwlyZXR1cm4gKExfdmFyX291dCk7DQorfQ0KKw0KK3N0YXRpY192byBXb3JkMzIgTF9zaGwyKFdvcmQzMiBMX3ZhcjEsIFdvcmQxNiB2YXIyKQ0KK3sNCisJV29yZDMyIExfdmFyX291dCA9IDBMOw0KKw0KKwlmb3IgKDsgdmFyMiA+IDA7IHZhcjItLSkNCisJew0KKwkJaWYgKExfdmFyMSA+IChXb3JkMzIpIDBYM2ZmZmZmZmZMKQ0KKwkJew0KKwkJCUxfdmFyX291dCA9IE1BWF8zMjsNCisJCQlicmVhazsNCisJCX0NCisJCWVsc2UNCisJCXsNCisJCQlpZiAoTF92YXIxIDwgKFdvcmQzMikgMHhjMDAwMDAwMEwpDQorCQkJew0KKwkJCQlMX3Zhcl9vdXQgPSBNSU5fMzI7DQorCQkJCWJyZWFrOw0KKwkJCX0NCisJCX0NCisJCUxfdmFyMSA8PD0xIDsNCisJCUxfdmFyX291dCA9IExfdmFyMTsNCisJfQ0KKwlyZXR1cm4gKExfdmFyX291dCk7DQorfQ0KKw0KKy8qX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgRnVuY3Rpb24gTmFtZSA6IExfc2hyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIFB1cnBvc2UgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBBcml0aG1ldGljYWxseSBzaGlmdCB0aGUgMzIgYml0IGlucHV0IExfdmFyMSByaWdodCB2YXIyIHBvc2l0aW9ucyB3aXRoICB8DQorfCAgIHNpZ24gZXh0ZW5zaW9uLiBJZiB2YXIyIGlzIG5lZ2F0aXZlLCBhcml0aG1ldGljYWxseSBzaGlmdCBMX3ZhcjEgbGVmdCAgIHwNCit8ICAgYnkgLXZhcjIgYW5kIHplcm8gZmlsbCB0aGUgLXZhcjIgTFNCIG9mIHRoZSByZXN1bHQuIFNhdHVyYXRlIHRoZSByZXN1bHQgfA0KK3wgICBpbiBjYXNlIG9mIHVuZGVyZmxvd3Mgb3Igb3ZlcmZsb3dzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgQ29tcGxleGl0eSB3ZWlnaHQgOiAyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIElucHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgTF92YXIxICAgMzIgYml0IGxvbmcgc2lnbmVkIGludGVnZXIgKFdvcmQzMikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlICB8DQorfCAgICAgICAgICAgICByYW5nZSA6IDB4ODAwMCAwMDAwIDw9IExfdmFyMyA8PSAweDdmZmYgZmZmZi4gICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgdmFyMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCit8ICAgICAgICAgICAgIHJhbmdlIDogMHhmZmZmIDgwMDAgPD0gdmFyMSA8PSAweDAwMDAgN2ZmZi4gICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIE91dHB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgbm9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgUmV0dXJuIFZhbHVlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICBMX3Zhcl9vdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgIDMyIGJpdCBsb25nIHNpZ25lZCBpbnRlZ2VyIChXb3JkMzIpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSAgfA0KK3wgICAgICAgICAgICAgcmFuZ2UgOiAweDgwMDAgMDAwMCA8PSBMX3Zhcl9vdXQgPD0gMHg3ZmZmIGZmZmYuICAgICAgICAgICAgICB8DQorfF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX3wNCisqLw0KKw0KK3N0YXRpY192byBXb3JkMzIgTF9zaHIgKFdvcmQzMiBMX3ZhcjEsIFdvcmQxNiB2YXIyKQ0KK3sNCisJV29yZDMyIExfdmFyX291dDsNCisJaWYgKHZhcjIgPCAwKQ0KKwl7DQorCQlpZiAodmFyMiA8IC0zMikNCisJCQl2YXIyID0gLTMyOw0KKwkJTF92YXJfb3V0ID0gTF9zaGwyKExfdmFyMSwgKFdvcmQxNiktdmFyMik7DQorCX0NCisJZWxzZQ0KKwl7DQorCQlpZiAodmFyMiA+PSAzMSkNCisJCXsNCisJCQlMX3Zhcl9vdXQgPSAoTF92YXIxIDwgMEwpID8gLTEgOiAwOw0KKwkJfQ0KKwkJZWxzZQ0KKwkJew0KKwkJCWlmIChMX3ZhcjEgPCAwKQ0KKwkJCXsNCisJCQkJTF92YXJfb3V0ID0gfigofkxfdmFyMSkgPj4gdmFyMik7DQorCQkJfQ0KKwkJCWVsc2UNCisJCQl7DQorCQkJCUxfdmFyX291dCA9IExfdmFyMSA+PiB2YXIyOw0KKwkJCX0NCisJCX0NCisJfQ0KKwlyZXR1cm4gKExfdmFyX291dCk7DQorfQ0KKw0KKy8qX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgRnVuY3Rpb24gTmFtZSA6IExfc2hyX3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIFB1cnBvc2UgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBTYW1lIGFzIExfc2hyKExfdmFyMSx2YXIyKSBidXQgd2l0aCByb3VuZGluZy4gU2F0dXJhdGUgdGhlIHJlc3VsdCBpbiAgICB8DQorfCAgIGNhc2Ugb2YgdW5kZXJmbG93cyBvciBvdmVyZmxvd3MgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIC0gSWYgdmFyMiBpcyBncmVhdGVyIHRoYW4gemVybyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgaWYgKExfc3ViKExfc2hsKExfc2hyKExfdmFyMSx2YXIyKSwxKSxMX3NocihMX3ZhcjEsc3ViKHZhcjIsMSkpKSl8DQorfCAgICAgICAgICBpcyBlcXVhbCB0byB6ZXJvICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgdGhlbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICBMX3Nocl9yKExfdmFyMSx2YXIyKSA9IExfc2hyKExfdmFyMSx2YXIyKSAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgTF9zaHJfcihMX3ZhcjEsdmFyMikgPSBMX2FkZChMX3NocihMX3ZhcjEsdmFyMiksMSkgICAgfA0KK3wgICAgLSBJZiB2YXIyIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB6ZXJvIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgIExfc2hyX3IoTF92YXIxLHZhcjIpID0gTF9zaHIoTF92YXIxLHZhcjIpLiAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBDb21wbGV4aXR5IHdlaWdodCA6IDMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgSW5wdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICBMX3ZhcjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgIDMyIGJpdCBsb25nIHNpZ25lZCBpbnRlZ2VyIChXb3JkMzIpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSAgfA0KK3wgICAgICAgICAgICAgcmFuZ2UgOiAweDgwMDAgMDAwMCA8PSB2YXIxIDw9IDB4N2ZmZiBmZmZmLiAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIHZhcjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorfCAgICAgICAgICAgICByYW5nZSA6IDB4ZmZmZiA4MDAwIDw9IHZhcjEgPD0gMHgwMDAwIDdmZmYuICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBPdXRwdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIG5vbmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIFJldHVybiBWYWx1ZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgTF92YXJfb3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAzMiBiaXQgbG9uZyBzaWduZWQgaW50ZWdlciAoV29yZDMyKSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgIHwNCit8ICAgICAgICAgICAgIHJhbmdlIDogMHg4MDAwIDAwMDAgPD0gdmFyX291dCA8PSAweDdmZmYgZmZmZi4gICAgICAgICAgICAgICAgfA0KK3xfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX198DQorKi8NCisNCitzdGF0aWNfdm8gV29yZDMyIExfc2hyX3IgKFdvcmQzMiBMX3ZhcjEsIFdvcmQxNiB2YXIyKQ0KK3sNCisJV29yZDMyIExfdmFyX291dDsNCisJaWYgKHZhcjIgPiAzMSkNCisJew0KKwkJTF92YXJfb3V0ID0gMDsNCisJfQ0KKwllbHNlDQorCXsNCisJCUxfdmFyX291dCA9IExfc2hyIChMX3ZhcjEsIHZhcjIpOw0KKwkJaWYgKHZhcjIgPiAwKQ0KKwkJew0KKwkJCWlmICgoTF92YXIxICYgKChXb3JkMzIpIDEgPDwgKHZhcjIgLSAxKSkpICE9IDApDQorCQkJew0KKwkJCQlMX3Zhcl9vdXQrKzsNCisJCQl9DQorCQl9DQorCX0NCisJcmV0dXJuIChMX3Zhcl9vdXQpOw0KK30NCisNCisvKl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIEZ1bmN0aW9uIE5hbWUgOiBub3JtX3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBQdXJwb3NlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgUHJvZHVjZXMgdGhlIG51bWJlciBvZiBsZWZ0IHNoaWZ0IG5lZWRlZCB0byBub3JtYWxpemUgdGhlIDE2IGJpdCB2YXJpYS0gfA0KK3wgICBibGUgdmFyMSBmb3IgcG9zaXRpdmUgdmFsdWVzIG9uIHRoZSBpbnRlcnZhbCB3aXRoIG1pbmltdW0gb2YgMTYzODQgYW5kICB8DQorfCAgIG1heGltdW0gb2YgMzI3NjcsIGFuZCBmb3IgbmVnYXRpdmUgdmFsdWVzIG9uIHRoZSBpbnRlcnZhbCB3aXRoIG1pbmltdW0gIHwNCit8ICAgb2YgLTMyNzY4IGFuZCBtYXhpbXVtIG9mIC0xNjM4NDsgaW4gb3JkZXIgdG8gbm9ybWFsaXplIHRoZSByZXN1bHQsIHRoZSAgfA0KK3wgICBmb2xsb3dpbmcgb3BlcmF0aW9uIG11c3QgYmUgZG9uZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgbm9ybV92YXIxID0gc2hsKHZhcjEsbm9ybV9zKHZhcjEpKS4gICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBDb21wbGV4aXR5IHdlaWdodCA6IDE1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgSW5wdXRzIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICB2YXIxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KK3wgICAgICAgICAgICAgcmFuZ2UgOiAweGZmZmYgODAwMCA8PSB2YXIxIDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgT3V0cHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICBub25lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBSZXR1cm4gVmFsdWUgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIHZhcl9vdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorfCAgICAgICAgICAgICByYW5nZSA6IDB4MDAwMCAwMDAwIDw9IHZhcl9vdXQgPD0gMHgwMDAwIDAwMGYuICAgICAgICAgICAgICAgIHwNCit8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffA0KKyovDQorDQorc3RhdGljX3ZvIFdvcmQxNiBub3JtX3MgKFdvcmQxNiB2YXIxKQ0KK3sNCisJV29yZDE2IHZhcl9vdXQgPSAwOw0KKwlpZiAodmFyMSA9PSAwKQ0KKwl7DQorCQl2YXJfb3V0ID0gMDsNCisJfQ0KKwllbHNlDQorCXsNCisJCWlmICh2YXIxID09IC0xKQ0KKwkJew0KKwkJCXZhcl9vdXQgPSAxNTsNCisJCX0NCisJCWVsc2UNCisJCXsNCisJCQlpZiAodmFyMSA8IDApDQorCQkJew0KKwkJCQl2YXIxID0gKFdvcmQxNil+dmFyMTsNCisJCQl9DQorCQkJZm9yICh2YXJfb3V0ID0gMDsgdmFyMSA8IDB4NDAwMDsgdmFyX291dCsrKQ0KKwkJCXsNCisJCQkJdmFyMSA8PD0gMTsNCisJCQl9DQorCQl9DQorCX0NCisJcmV0dXJuICh2YXJfb3V0KTsNCit9DQorDQorLypfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBGdW5jdGlvbiBOYW1lIDogZGl2X3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgUHVycG9zZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIFByb2R1Y2VzIGEgcmVzdWx0IHdoaWNoIGlzIHRoZSBmcmFjdGlvbmFsIGludGVnZXIgZGl2aXNpb24gb2YgdmFyMSAgYnkgIHwNCit8ICAgdmFyMjsgdmFyMSBhbmQgdmFyMiBtdXN0IGJlIHBvc2l0aXZlIGFuZCB2YXIyIG11c3QgYmUgZ3JlYXRlciBvciBlcXVhbCAgfA0KK3wgICB0byB2YXIxOyB0aGUgcmVzdWx0IGlzIHBvc2l0aXZlIChsZWFkaW5nIGJpdCBlcXVhbCB0byAwKSBhbmQgdHJ1bmNhdGVkICB8DQorfCAgIHRvIDE2IGJpdHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgSWYgdmFyMSA9IHZhcjIgdGhlbiBkaXYodmFyMSx2YXIyKSA9IDMyNzY3LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIENvbXBsZXhpdHkgd2VpZ2h0IDogMTggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBJbnB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgIHZhcjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgMTYgYml0IHNob3J0IHNpZ25lZCBpbnRlZ2VyIChXb3JkMTYpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSB8DQorfCAgICAgICAgICAgICByYW5nZSA6IDB4MDAwMCAwMDAwIDw9IHZhcjEgPD0gdmFyMiBhbmQgdmFyMiAhPSAwLiAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgdmFyMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAxNiBiaXQgc2hvcnQgc2lnbmVkIGludGVnZXIgKFdvcmQxNikgd2hvc2UgdmFsdWUgZmFsbHMgaW4gdGhlIHwNCit8ICAgICAgICAgICAgIHJhbmdlIDogdmFyMSA8PSB2YXIyIDw9IDB4MDAwMCA3ZmZmIGFuZCB2YXIyICE9IDAuICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIE91dHB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgbm9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgUmV0dXJuIFZhbHVlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICB2YXJfb3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KK3wgICAgICAgICAgICAgcmFuZ2UgOiAweDAwMDAgMDAwMCA8PSB2YXJfb3V0IDw9IDB4MDAwMCA3ZmZmLiAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICBJdCdzIGEgUTE1IHZhbHVlIChwb2ludCBiZXR3ZWVuIGIxNSBhbmQgYjE0KS4gICAgICAgICAgICAgICAgIHwNCit8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffA0KKyovDQorDQorc3RhdGljX3ZvIFdvcmQxNiBkaXZfcyAoV29yZDE2IHZhcjEsIFdvcmQxNiB2YXIyKQ0KK3sNCisJV29yZDE2IHZhcl9vdXQgPSAwOw0KKwlXb3JkMTYgaXRlcmF0aW9uOw0KKwlXb3JkMzIgTF9udW07DQorCVdvcmQzMiBMX2Rlbm9tOw0KKwlpZiAoKHZhcjEgPCAwKSB8fCAodmFyMiA8IDApKQ0KKwl7DQorCQl2YXJfb3V0ID0gTUFYXzE2Ow0KKwkJcmV0dXJuIHZhcl9vdXQ7DQorCX0NCisJaWYgKHZhcjIgPT0gMCkNCisJew0KKwkJdmFyX291dCA9IE1BWF8xNjsNCisJCXJldHVybiB2YXJfb3V0Ow0KKwl9DQorCWlmICh2YXIxID09IDApDQorCXsNCisJCXZhcl9vdXQgPSAwOw0KKwl9DQorCWVsc2UNCisJew0KKwkJaWYgKHZhcjEgPT0gdmFyMikNCisJCXsNCisJCQl2YXJfb3V0ID0gTUFYXzE2Ow0KKwkJfQ0KKwkJZWxzZQ0KKwkJew0KKwkJCUxfbnVtID0gTF9kZXBvc2l0X2wgKHZhcjEpOw0KKwkJCUxfZGVub20gPSBMX2RlcG9zaXRfbCh2YXIyKTsNCisJCQlmb3IgKGl0ZXJhdGlvbiA9IDA7IGl0ZXJhdGlvbiA8IDE1OyBpdGVyYXRpb24rKykNCisJCQl7DQorCQkJCXZhcl9vdXQgPDw9IDE7DQorCQkJCUxfbnVtIDw8PSAxOw0KKwkJCQlpZiAoTF9udW0gPj0gTF9kZW5vbSkNCisJCQkJew0KKwkJCQkJTF9udW0gLT0gTF9kZW5vbTsgICAgICANCisJCQkJCXZhcl9vdXQgKz0gMTsgICAgICAgICAgDQorCQkJCX0NCisJCQl9DQorCQl9DQorCX0NCisJcmV0dXJuICh2YXJfb3V0KTsNCit9DQorDQorLypfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBGdW5jdGlvbiBOYW1lIDogbm9ybV9sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgUHVycG9zZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIFByb2R1Y2VzIHRoZSBudW1iZXIgb2YgbGVmdCBzaGlmdHMgbmVlZGVkIHRvIG5vcm1hbGl6ZSB0aGUgMzIgYml0IHZhcmlhLXwNCit8ICAgYmxlIExfdmFyMSBmb3IgcG9zaXRpdmUgdmFsdWVzIG9uIHRoZSBpbnRlcnZhbCB3aXRoIG1pbmltdW0gb2YgICAgICAgICAgfA0KK3wgICAxMDczNzQxODI0IGFuZCBtYXhpbXVtIG9mIDIxNDc0ODM2NDcsIGFuZCBmb3IgbmVnYXRpdmUgdmFsdWVzIG9uIHRoZSBpbi18DQorfCAgIHRlcnZhbCB3aXRoIG1pbmltdW0gb2YgLTIxNDc0ODM2NDggYW5kIG1heGltdW0gb2YgLTEwNzM3NDE4MjQ7IGluIG9yZGVyIHwNCit8ICAgdG8gbm9ybWFsaXplIHRoZSByZXN1bHQsIHRoZSBmb2xsb3dpbmcgb3BlcmF0aW9uIG11c3QgYmUgZG9uZSA6ICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgbm9ybV9MX3ZhcjEgPSBMX3NobChMX3ZhcjEsbm9ybV9sKExfdmFyMSkpLiAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgQ29tcGxleGl0eSB3ZWlnaHQgOiAzMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIElucHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgTF92YXIxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAzMiBiaXQgbG9uZyBzaWduZWQgaW50ZWdlciAoV29yZDMyKSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgIHwNCit8ICAgICAgICAgICAgIHJhbmdlIDogMHg4MDAwIDAwMDAgPD0gdmFyMSA8PSAweDdmZmYgZmZmZi4gICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIE91dHB1dHMgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgbm9uZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgUmV0dXJuIFZhbHVlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICB2YXJfb3V0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgIDE2IGJpdCBzaG9ydCBzaWduZWQgaW50ZWdlciAoV29yZDE2KSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgfA0KK3wgICAgICAgICAgICAgcmFuZ2UgOiAweDAwMDAgMDAwMCA8PSB2YXJfb3V0IDw9IDB4MDAwMCAwMDFmLiAgICAgICAgICAgICAgICB8DQorfF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX3wNCisqLw0KKw0KK3N0YXRpY192byBXb3JkMTYgbm9ybV9sIChXb3JkMzIgTF92YXIxKQ0KK3sNCisJV29yZDE2IHZhcl9vdXQgPSAwOw0KKwlpZiAoTF92YXIxICE9IDApDQorCXsNCisJCXZhcl9vdXQgPSAzMTsNCisJCWlmIChMX3ZhcjEgIT0gKFdvcmQzMikgMHhmZmZmZmZmZkwpDQorCQl7DQorCQkJTF92YXIxIF49IChMX3ZhcjEgPj4zMSk7DQorCQkJZm9yICh2YXJfb3V0ID0gMDsgTF92YXIxIDwgKFdvcmQzMikgMHg0MDAwMDAwMEw7IHZhcl9vdXQrKykNCisJCQl7DQorCQkJCUxfdmFyMSA8PD0gMTsNCisJCQl9DQorCQl9DQorCX0NCisJcmV0dXJuICh2YXJfb3V0KTsNCit9DQorDQorI2VuZGlmIC8vX19CQVNJQ19PUF9IX18NCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL2JpdHMuaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvYml0cy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3MTQ2ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL2JpdHMuaApAQCAtMCwwICsxLDkyIEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorKiAgICAgICAgICAgICAgICAgICAgICAgICBCSVRTLkggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisqICAgICAgIE51bWJlciBvZiBiaXRzIGZvciBkaWZmZXJlbnQgbW9kZXMJCQkgICAgICAgICAgICoNCisqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKyNpZm5kZWYgX19CSVRTX0hfXw0KKyNkZWZpbmUgX19CSVRTX0hfXw0KKw0KKyNpbmNsdWRlIDxzdGRpby5oPg0KKyNpbmNsdWRlICJ0eXBlZGVmLmgiDQorI2luY2x1ZGUgImNuc3QuaCINCisjaW5jbHVkZSAiY29kX21haW4uaCINCisNCisjZGVmaW5lIE5CQklUU183ayAgICAgMTMyICAgICAgICAgICAgICAgICAgLyogNi42MGsgICovDQorI2RlZmluZSBOQkJJVFNfOWsgICAgIDE3NyAgICAgICAgICAgICAgICAgIC8qIDguODVrICAqLw0KKyNkZWZpbmUgTkJCSVRTXzEyayAgICAyNTMgICAgICAgICAgICAgICAgICAvKiAxMi42NWsgKi8NCisjZGVmaW5lIE5CQklUU18xNGsgICAgMjg1ICAgICAgICAgICAgICAgICAgLyogMTQuMjVrICovDQorI2RlZmluZSBOQkJJVFNfMTZrICAgIDMxNyAgICAgICAgICAgICAgICAgIC8qIDE1Ljg1ayAqLw0KKyNkZWZpbmUgTkJCSVRTXzE4ayAgICAzNjUgICAgICAgICAgICAgICAgICAvKiAxOC4yNWsgKi8NCisjZGVmaW5lIE5CQklUU18yMGsgICAgMzk3ICAgICAgICAgICAgICAgICAgLyogMTkuODVrICovDQorI2RlZmluZSBOQkJJVFNfMjNrICAgIDQ2MSAgICAgICAgICAgICAgICAgIC8qIDIzLjA1ayAqLw0KKyNkZWZpbmUgTkJCSVRTXzI0ayAgICA0NzcgICAgICAgICAgICAgICAgICAvKiAyMy44NWsgKi8NCisNCisjZGVmaW5lIE5CQklUU19TSUQgICAgMzUNCisjZGVmaW5lIE5CX0JJVFNfTUFYICAgTkJCSVRTXzI0aw0KKw0KKyNkZWZpbmUgQklUXzAgICAgIChXb3JkMTYpLTEyNw0KKyNkZWZpbmUgQklUXzEgICAgIChXb3JkMTYpMTI3DQorI2RlZmluZSBCSVRfMF9JVFUgKFdvcmQxNikweDAwN0YNCisjZGVmaW5lIEJJVF8xX0lUVSAoV29yZDE2KTB4MDA4MQ0KKw0KKyNkZWZpbmUgU0laRV9NQVgxICAoMytOQl9CSVRTX01BWCkgICAgICAgICAgLyogc2VyaWFsIHNpemUgbWF4ICovDQorI2RlZmluZSBUWF9GUkFNRV9UWVBFIChXb3JkMTYpMHg2YjIxDQorI2RlZmluZSBSWF9GUkFNRV9UWVBFIChXb3JkMTYpMHg2YjIwDQorDQorc3RhdGljIGNvbnN0IFdvcmQxNiBuYl9vZl9iaXRzW05VTV9PRl9NT0RFU10gPSB7DQorCU5CQklUU183aywNCisJTkJCSVRTXzlrLA0KKwlOQkJJVFNfMTJrLA0KKwlOQkJJVFNfMTRrLA0KKwlOQkJJVFNfMTZrLA0KKwlOQkJJVFNfMThrLA0KKwlOQkJJVFNfMjBrLA0KKwlOQkJJVFNfMjNrLA0KKwlOQkJJVFNfMjRrLA0KKwlOQkJJVFNfU0lEDQorfTsNCisNCisvKnR5cGVkZWYgc3RydWN0DQorew0KK1dvcmQxNiBzaWRfdXBkYXRlX2NvdW50ZXI7DQorV29yZDE2IHNpZF9oYW5kb3Zlcl9kZWJ0Ow0KK1dvcmQxNiBwcmV2X2Z0Ow0KK30gVFhfU3RhdGU7DQorKi8NCisNCisvL3R5cGVkZWYgc3RydWN0DQorLy97DQorLy8JV29yZDE2IHByZXZfZnQ7DQorLy8JV29yZDE2IHByZXZfbW9kZTsNCisvL30gUlhfU3RhdGU7DQorDQoraW50IFBhY2tCaXRzKFdvcmQxNiBwcm1zW10sIFdvcmQxNiBjb2RpbmdfbW9kZSwgV29yZDE2IG1vZGUsIENvZGVyX1N0YXRlICpzdCk7DQorDQorDQordm9pZCBQYXJtX3NlcmlhbCgNCisJCVdvcmQxNiB2YWx1ZSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBwYXJhbWV0ZXIgdmFsdWUgKi8NCisJCVdvcmQxNiBub19vZl9iaXRzLCAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBudW1iZXIgb2YgYml0cyAgKi8NCisJCVdvcmQxNiAqKiBwcm1zDQorCQkpOw0KKw0KKw0KKyNlbmRpZiAgLy9fX0JJVFNfSF9fDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9jbnN0LmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL2Nuc3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZmRiZDg4Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9jbnN0LmgKQEAgLTAsMCArMSw4MSBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgIENOU1QuSCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisgKiAgICAgICBDb2RlYyBjb25zdGFudCBwYXJhbWV0ZXJzIChjb2RlciBhbmQgZGVjb2RlcikgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKyNpZm5kZWYgX19DTlNUX0hfXw0KKyNkZWZpbmUgX19DTlNUX0hfXw0KKw0KKyNkZWZpbmUgTF9GUkFNRTE2ayAgIDMyMCAgICAgICAgICAgICAgICAgICAvKiBGcmFtZSBzaXplIGF0IDE2a0h6ICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisjZGVmaW5lIExfRlJBTUUgICAgICAyNTYgICAgICAgICAgICAgICAgICAgLyogRnJhbWUgc2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorI2RlZmluZSBMX1NVQkZSMTZrICAgODAgICAgICAgICAgICAgICAgICAgIC8qIFN1YmZyYW1lIHNpemUgYXQgMTZrSHogICAgICAgICAgICAgICAgICAgICAqLw0KKw0KKyNkZWZpbmUgTF9TVUJGUiAgICAgIDY0ICAgICAgICAgICAgICAgICAgICAvKiBTdWJmcmFtZSBzaXplICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisjZGVmaW5lIE5CX1NVQkZSICAgICA0ICAgICAgICAgICAgICAgICAgICAgLyogTnVtYmVyIG9mIHN1YmZyYW1lIHBlciBmcmFtZSAgICAgICAgICAgICAgICovDQorDQorI2RlZmluZSBMX05FWFQgICAgICAgNjQgICAgICAgICAgICAgICAgICAgIC8qIE92ZXJoZWFkIGluIExQIGFuYWx5c2lzICAgICAgICAgICAgICAgICAgICAqLw0KKyNkZWZpbmUgTF9XSU5ET1cgICAgIDM4NCAgICAgICAgICAgICAgICAgICAvKiB3aW5kb3cgc2l6ZSBpbiBMUCBhbmFseXNpcyAgICAgICAgICAgICAgICAgKi8NCisjZGVmaW5lIExfVE9UQUwgICAgICAzODQgICAgICAgICAgICAgICAgICAgLyogVG90YWwgc2l6ZSBvZiBzcGVlY2ggYnVmZmVyLiAgICAgICAgICAgICAgICovDQorI2RlZmluZSBNICAgICAgICAgICAgMTYgICAgICAgICAgICAgICAgICAgIC8qIE9yZGVyIG9mIExQIGZpbHRlciAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyNkZWZpbmUgTTE2ayAgICAgICAgIDIwDQorDQorI2RlZmluZSBMX0ZJTFQxNmsgICAgMTUgICAgICAgICAgICAgICAgICAgIC8qIERlbGF5IG9mIGRvd24tc2FtcGxpbmcgZmlsdGVyICAgICAgICAgICAgICAqLw0KKyNkZWZpbmUgTF9GSUxUICAgICAgIDEyICAgICAgICAgICAgICAgICAgICAvKiBEZWxheSBvZiB1cC1zYW1wbGluZyBmaWx0ZXIgICAgICAgICAgICAgICAgKi8NCisNCisjZGVmaW5lIEdQX0NMSVAgICAgICAxNTU2NSAgICAgICAgICAgICAgICAgLyogUGl0Y2ggZ2FpbiBjbGlwcGluZyA9IDAuOTUgUTE0ICAgICAgICAgICAgICovDQorI2RlZmluZSBQSVRfU0hBUlAgICAgMjc4NTMgICAgICAgICAgICAgICAgIC8qIHBpdGNoIHNoYXJwZW5pbmcgZmFjdG9yID0gMC44NSBRMTUgICAgICAgICAqLw0KKw0KKyNkZWZpbmUgUElUX01JTiAgICAgIDM0ICAgICAgICAgICAgICAgICAgICAvKiBNaW5pbXVtIHBpdGNoIGxhZyB3aXRoIHJlc29sdXRpb24gMS80ICAgICAgKi8NCisjZGVmaW5lIFBJVF9GUjIgICAgICAxMjggICAgICAgICAgICAgICAgICAgLyogTWluaW11bSBwaXRjaCBsYWcgd2l0aCByZXNvbHV0aW9uIDEvMiAgICAgICovDQorI2RlZmluZSBQSVRfRlIxXzliICAgMTYwICAgICAgICAgICAgICAgICAgIC8qIE1pbmltdW0gcGl0Y2ggbGFnIHdpdGggcmVzb2x1dGlvbiAxICAgICAgICAqLw0KKyNkZWZpbmUgUElUX0ZSMV84YiAgIDkyICAgICAgICAgICAgICAgICAgICAvKiBNaW5pbXVtIHBpdGNoIGxhZyB3aXRoIHJlc29sdXRpb24gMSAgICAgICAgKi8NCisjZGVmaW5lIFBJVF9NQVggICAgICAyMzEgICAgICAgICAgICAgICAgICAgLyogTWF4aW11bSBwaXRjaCBsYWcgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorI2RlZmluZSBMX0lOVEVSUE9MICAgKDE2KzEpICAgICAgICAgICAgICAgIC8qIExlbmd0aCBvZiBmaWx0ZXIgZm9yIGludGVycG9sYXRpb24gICAgICAgICAqLw0KKw0KKyNkZWZpbmUgT1BMX0RFQ0lNICAgIDIgICAgICAgICAgICAgICAgICAgICAvKiBEZWNpbWF0aW9uIGluIG9wZW4tbG9vcCBwaXRjaCBhbmFseXNpcyAgICAgKi8NCisNCisjZGVmaW5lIFBSRUVNUEhfRkFDICAyMjI4MiAgICAgICAgICAgICAgICAgLyogcHJlZW1waGFzaXMgZmFjdG9yICgwLjY4IGluIFExNSkgICAgICAgICAgICovDQorI2RlZmluZSBHQU1NQTEgICAgICAgMzAxNDcgICAgICAgICAgICAgICAgIC8qIFdlaWdodGluZyBmYWN0b3IgKG51bWVyYXRvcikgKDAuOTIgaW4gUTE1KSAqLw0KKyNkZWZpbmUgVElMVF9GQUMgICAgIDIyMjgyICAgICAgICAgICAgICAgICAvKiB0aWx0IGZhY3RvciAoZGVub21pbmF0b3IpICgwLjY4IGluIFExNSkgICAgKi8NCisNCisjZGVmaW5lIFFfTUFYICAgICAgICA4ICAgICAgICAgICAgICAgICAgICAgLyogc2NhbGluZyBtYXggZm9yIHNpZ25hbCAoc2VlIHN5bl9maWx0XzMyKSAgICovDQorDQorI2RlZmluZSBSQU5ET01fSU5JVFNFRUQgIDIxODQ1ICAgICAgICAgICAgIC8qIG93biByYW5kb20gaW5pdCB2YWx1ZSAgICAgICAgICAgICAgICAgICAgICAqLw0KKw0KKyNkZWZpbmUgTF9NRUFOQlVGICAgICAgICAzDQorI2RlZmluZSBPTkVfUEVSX01FQU5CVUYgMTA5MjMNCisNCisjZGVmaW5lIE1PREVfN2sgICAgICAgMA0KKyNkZWZpbmUgTU9ERV85ayAgICAgICAxDQorI2RlZmluZSBNT0RFXzEyayAgICAgIDINCisjZGVmaW5lIE1PREVfMTRrICAgICAgMw0KKyNkZWZpbmUgTU9ERV8xNmsgICAgICA0DQorI2RlZmluZSBNT0RFXzE4ayAgICAgIDUNCisjZGVmaW5lIE1PREVfMjBrICAgICAgNg0KKyNkZWZpbmUgTU9ERV8yM2sgICAgICA3DQorI2RlZmluZSBNT0RFXzI0ayAgICAgIDgNCisjZGVmaW5lIE1SRFRYICAgICAgICAgOQ0KKyNkZWZpbmUgTlVNX09GX01PREVTICAxMCAgICAgICAgICAgICAgICAgICAvKiBzZWUgYml0cy5oIGZvciBiaXRzIGRlZmluaXRpb24gICAgICAgICAgICAgKi8NCisNCisjZGVmaW5lIEVIRl9NQVNLIChXb3JkMTYpMHgwMDA4ICAgICAgICAgICAgLyogaG9taW5nIGZyYW1lIHBhdHRlcm4gICAgICAgICAgICAgICAgICAgICAgICovDQorDQorI2VuZGlmIC8vX19DTlNUX0hfXw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvY29kX21haW4uaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvY29kX21haW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZmQ1Nzg3Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9jb2RfbWFpbi5oCkBAIC0wLDAgKzEsMTAzIEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorICogICAgICAgICAgICAgICAgICAgICAgICAgQ09EX01BSU4uSCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyAqICAgICAgIFN0YXRpYyBtZW1vcnkgaW4gdGhlIGVuY29kZXIJCQkJICAgICAgICAgICAgKg0KKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKyNpZm5kZWYgX19DT0RfTUFJTl9IX18NCisjZGVmaW5lIF9fQ09EX01BSU5fSF9fDQorDQorI2luY2x1ZGUgImNuc3QuaCIgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNvZGVyIGNvbnN0YW50IHBhcmFtZXRlcnMgKi8NCisNCisjaW5jbHVkZSAid2JfdmFkLmgiDQorI2luY2x1ZGUgImR0eC5oIg0KKyNpbmNsdWRlICJzdHJlYW0uaCINCisjaW5jbHVkZSAidm9BTVJXQi5oIg0KKw0KK3R5cGVkZWYgc3RydWN0DQorew0KKyAgICBXb3JkMTYgbWVtX2RlY2ltWzIgKiBMX0ZJTFQxNmtdOyAgICAgICAvKiBzcGVlY2ggZGVjaW1hdGVkIGZpbHRlciBtZW1vcnkgKi8NCisgICAgV29yZDE2IG1lbV9zaWdfaW5bNl07ICAgICAgICAgICAgICAgICAgLyogaHA1MCBmaWx0ZXIgbWVtb3J5ICovDQorICAgIFdvcmQxNiBtZW1fcHJlZW1waDsgICAgICAgICAgICAgICAgICAgIC8qIHNwZWVjaCBwcmVlbXBoIGZpbHRlciBtZW1vcnkgKi8NCisgICAgV29yZDE2IG9sZF9zcGVlY2hbTF9UT1RBTCAtIExfRlJBTUVdOyAgLyogb2xkIHNwZWVjaCB2ZWN0b3IgYXQgMTIuOGtIeiAqLw0KKyAgICBXb3JkMTYgb2xkX3dzcFtQSVRfTUFYIC8gT1BMX0RFQ0lNXTsgICAvKiBvbGQgZGVjaW1hdGVkIHdlaWdodGVkIHNwZWVjaCB2ZWN0b3IgKi8NCisgICAgV29yZDE2IG9sZF9leGNbUElUX01BWCArIExfSU5URVJQT0xdOyAgLyogb2xkIGV4Y2l0YXRpb24gdmVjdG9yICovDQorICAgIFdvcmQxNiBtZW1fbGV2aW5zb25bTSArIDJdOyAgICAgICAgICAgIC8qIGxldmluc29uIHJvdXRpbmUgbWVtb3J5ICovDQorICAgIFdvcmQxNiBpc3BvbGRbTV07ICAgICAgICAgICAgICAgICAgICAgIC8qIG9sZCBpc3AgKGltbWl0dGFuY2Ugc3BlY3RyYWwgcGFpcnMpICovDQorICAgIFdvcmQxNiBpc3BvbGRfcVtNXTsgICAgICAgICAgICAgICAgICAgIC8qIHF1YW50aXplZCBvbGQgaXNwICovDQorICAgIFdvcmQxNiBwYXN0X2lzZnFbTV07ICAgICAgICAgICAgICAgICAgIC8qIHBhc3QgaXNmIHF1YW50aXplciAqLw0KKyAgICBXb3JkMTYgbWVtX3dzcDsgICAgICAgICAgICAgICAgICAgICAgICAvKiB3c3AgdmVjdG9yIG1lbW9yeSAqLw0KKyAgICBXb3JkMTYgbWVtX2RlY2ltMlszXTsgICAgICAgICAgICAgICAgICAvKiB3c3AgZGVjaW1hdGlvbiBmaWx0ZXIgbWVtb3J5ICovDQorICAgIFdvcmQxNiBtZW1fdzA7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRhcmdldCB2ZWN0b3IgbWVtb3J5ICovDQorICAgIFdvcmQxNiBtZW1fc3luW01dOyAgICAgICAgICAgICAgICAgICAgIC8qIHN5bnRoZXNpcyBtZW1vcnkgKi8NCisgICAgV29yZDE2IHRpbHRfY29kZTsgICAgICAgICAgICAgICAgICAgICAgLyogdGlsdCBvZiBjb2RlICovDQorICAgIFdvcmQxNiBvbGRfd3NwX21heDsgICAgICAgICAgICAgICAgICAgIC8qIG9sZCB3c3AgbWF4aW11bSB2YWx1ZSAqLw0KKyAgICBXb3JkMTYgb2xkX3dzcF9zaGlmdDsgICAgICAgICAgICAgICAgICAvKiBvbGQgd3NwIHNoaWZ0ICovDQorICAgIFdvcmQxNiBRX29sZDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG9sZCBzY2FsaW5nIGZhY3RvciAqLw0KKyAgICBXb3JkMTYgUV9tYXhbMl07ICAgICAgICAgICAgICAgICAgICAgICAvKiBvbGQgbWF4aW11bSBzY2FsaW5nIGZhY3RvciAqLw0KKyAgICBXb3JkMTYgZ3BfY2xpcFsyXTsgICAgICAgICAgICAgICAgICAgICAvKiBnYWluIG9mIHBpdGNoIGNsaXBwaW5nIG1lbW9yeSAqLw0KKyAgICBXb3JkMTYgcXVhX2dhaW5bNF07ICAgICAgICAgICAgICAgICAgICAvKiBnYWluIHF1YW50aXplciBtZW1vcnkgKi8NCisNCisgICAgV29yZDE2IG9sZF9UMF9tZWQ7DQorICAgIFdvcmQxNiBvbF9nYWluOw0KKyAgICBXb3JkMTYgYWRhX3c7DQorICAgIFdvcmQxNiBvbF93Z2h0X2ZsZzsNCisgICAgV29yZDE2IG9sZF9vbF9sYWdbNV07DQorICAgIFdvcmQxNiBocF93c3BfbWVtWzldOw0KKyAgICBXb3JkMTYgb2xkX2hwX3dzcFtMX0ZSQU1FIC8gT1BMX0RFQ0lNICsgKFBJVF9NQVggLyBPUExfREVDSU0pXTsNCisgICAgVmFkVmFycyAqdmFkU3Q7DQorICAgIGR0eF9lbmNTdGF0ZSAqZHR4X2VuY1N0Ow0KKyAgICBXb3JkMTYgZmlyc3RfZnJhbWU7DQorICAgIFdvcmQxNiBpc2ZvbGRbTV07ICAgICAgICAgICAgICAgICAgICAgIC8qIG9sZCBpc2YgKGZyZXF1ZW5jeSBkb21haW4pICovDQorICAgIFdvcmQzMiBMX2djX3RocmVzOyAgICAgICAgICAgICAgICAgICAgIC8qIHRocmVzaG9sZCBmb3Igbm9pc2UgZW5oYW5jZXIgKi8NCisgICAgV29yZDE2IG1lbV9zeW5faGlbTV07ICAgICAgICAgICAgICAgICAgLyogbW9kaWZpZWQgc3ludGhlc2lzIG1lbW9yeSAoTVNCKSAqLw0KKyAgICBXb3JkMTYgbWVtX3N5bl9sb1tNXTsgICAgICAgICAgICAgICAgICAvKiBtb2RpZmllZCBzeW50aGVzaXMgbWVtb3J5IChMU0IpICovDQorICAgIFdvcmQxNiBtZW1fZGVlbXBoOyAgICAgICAgICAgICAgICAgICAgIC8qIHNwZWVjaCBkZWVtcGggZmlsdGVyIG1lbW9yeSAqLw0KKyAgICBXb3JkMTYgbWVtX3NpZ19vdXRbNl07ICAgICAgICAgICAgICAgICAvKiBocDUwIGZpbHRlciBtZW1vcnkgZm9yIHN5bnRoZXNpcyAqLw0KKyAgICBXb3JkMTYgbWVtX2hwNDAwWzZdOyAgICAgICAgICAgICAgICAgICAvKiBocDQwMCBmaWx0ZXIgbWVtb3J5IGZvciBzeW50aGVzaXMgKi8NCisgICAgV29yZDE2IG1lbV9vdmVyc2FtcFsyICogTF9GSUxUXTsgICAgICAgLyogc3ludGhlc2lzIG92ZXJzYW1wbGVkIGZpbHRlciBtZW1vcnkgKi8NCisgICAgV29yZDE2IG1lbV9zeW5faGZbTV07ICAgICAgICAgICAgICAgICAgLyogSEYgc3ludGhlc2lzIG1lbW9yeSAqLw0KKyAgICBXb3JkMTYgbWVtX2hmWzIgKiBMX0ZJTFQxNmtdOyAgICAgICAgICAvKiBIRiBiYW5kLXBhc3MgZmlsdGVyIG1lbW9yeSAqLw0KKyAgICBXb3JkMTYgbWVtX2hmMlsyICogTF9GSUxUMTZrXTsgICAgICAgICAvKiBIRiBiYW5kLXBhc3MgZmlsdGVyIG1lbW9yeSAqLw0KKyAgICBXb3JkMTYgc2VlZDI7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiByYW5kb20gbWVtb3J5IGZvciBIRiBnZW5lcmF0aW9uICovDQorICAgIFdvcmQxNiB2YWRfaGlzdDsNCisgICAgV29yZDE2IGdhaW5fYWxwaGE7DQorICAgIC8qICBUWF9TdGF0ZSBzdHJ1Y3R1cmUgICovDQorCVdvcmQxNiBzaWRfdXBkYXRlX2NvdW50ZXI7DQorICAgIFdvcmQxNiBzaWRfaGFuZG92ZXJfZGVidDsNCisgICAgV29yZDE2IHByZXZfZnQ7DQorCVdvcmQxNiBhbGxvd19kdHg7DQorCS8qc29tZSBpbnB1dC9vdXRwdXQgYnVmZmVyIHBhcmFtZXRlcnMgKi8NCisJdW5zaWduZWQgY2hhciAgICAgICAqaW5wdXRTdHJlYW07DQorCWludAkJCSAgICAgICAgaW5wdXRTaXplOw0KKwlWT0FNUldCTU9ERSAgCQltb2RlOw0KKwlWT0FNUldCRlJBTUVUWVBFCWZyYW1lVHlwZTsNCisJdW5zaWduZWQgc2hvcnQgICAgICAqb3V0cHV0U3RyZWFtOw0KKwlpbnQJCQkgICAgICAgIG91dHB1dFNpemU7DQorCUZyYW1lU3RyZWFtICAgICAgICAgKnN0cmVhbTsNCisJVk9fTUVNX09QRVJBVE9SICAgICAqcHZvTWVtb3A7DQorCVZPX01FTV9PUEVSQVRPUiAgICAgdm9NZW1vcHJhdG9yOw0KKwlWT19QVFIgICAgICAgICAgICAgIGhDaGVjazsNCit9IENvZGVyX1N0YXRlOw0KKw0KK3R5cGVkZWYgdm9pZCogSEFNUkVOQzsNCisNCisjZW5kaWYgIC8vX19DT0RfTUFJTl9IX18NCisNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL2R0eC5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9kdHguaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTJjMmQwCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9kdHguaApAQCAtMCwwICsxLDExNSBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgIERUWC5ICQkJCQkgICAgKg0KKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorICogICAgICAgU3RhdGljIG1lbW9yeSwgY29uc3RhbnRzIGFuZCBmcmFtZXR5cGVzIGZvciB0aGUgRFRYIAkJICAgICoNCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisjaWZuZGVmIF9fRFRYX0hfXw0KKyNkZWZpbmUgX19EVFhfSF9fDQorDQorI2RlZmluZSBEVFhfTUFYX0VNUFRZX1RIUkVTSCA1MA0KKyNkZWZpbmUgRFRYX0hJU1RfU0laRSA4DQorI2RlZmluZSBEVFhfSElTVF9TSVpFX01JTl9PTkUgNw0KKyNkZWZpbmUgRFRYX0VMQVBTRURfRlJBTUVTX1RIUkVTSCAoMjQgKyA3IC0xKQ0KKyNkZWZpbmUgRFRYX0hBTkdfQ09OU1QgNyAgICAgICAgICAgICAgICAgICAvKiB5aWVsZHMgZWlnaHQgZnJhbWVzIG9mIFNQIEhBTkdPVkVSICAqLw0KKyNkZWZpbmUgSU5WX01FRF9USFJFU0ggMTQ1NjQNCisjZGVmaW5lIElTRl9HQVAgIDEyOCAgICAgICAgICAgICAgICAgICAgICAgLyogNTAgKi8NCisjZGVmaW5lIE9ORV9NSU5VU19JU0ZfR0FQIDE2Mzg0IC0gSVNGX0dBUA0KKyNkZWZpbmUgSVNGX0dBUCAgIDEyOA0KKyNkZWZpbmUgSVNGX0RJVEhfR0FQICAgNDQ4DQorI2RlZmluZSBJU0ZfRkFDVE9SX0xPVyAyNTYNCisjZGVmaW5lIElTRl9GQUNUT1JfU1RFUCAyDQorI2RlZmluZSBHQUlOX1RIUiAxODANCisjZGVmaW5lIEdBSU5fRkFDVE9SIDc1DQorDQordHlwZWRlZiBzdHJ1Y3QNCit7DQorICAgIFdvcmQxNiBpc2ZfaGlzdFtNICogRFRYX0hJU1RfU0laRV07DQorICAgIFdvcmQxNiBsb2dfZW5faGlzdFtEVFhfSElTVF9TSVpFXTsNCisgICAgV29yZDE2IGhpc3RfcHRyOw0KKyAgICBXb3JkMTYgbG9nX2VuX2luZGV4Ow0KKyAgICBXb3JkMTYgY25nX3NlZWQ7DQorICAgIC8qIERUWCBoYW5kbGVyIHN0dWZmICovDQorICAgIFdvcmQxNiBkdHhIYW5nb3ZlckNvdW50Ow0KKyAgICBXb3JkMTYgZGVjQW5hRWxhcHNlZENvdW50Ow0KKyAgICBXb3JkMzIgRFsyOF07DQorICAgIFdvcmQzMiBzdW1EW0RUWF9ISVNUX1NJWkVdOw0KK30gZHR4X2VuY1N0YXRlOw0KKw0KKyNkZWZpbmUgU1BFRUNIIDANCisjZGVmaW5lIERUWCAxDQorI2RlZmluZSBEVFhfTVVURSAyDQorDQorI2RlZmluZSBUWF9TUEVFQ0ggMA0KKyNkZWZpbmUgVFhfU0lEX0ZJUlNUIDENCisjZGVmaW5lIFRYX1NJRF9VUERBVEUgMg0KKyNkZWZpbmUgVFhfTk9fREFUQSAzDQorDQorI2RlZmluZSBSWF9TUEVFQ0hfR09PRCAwDQorI2RlZmluZSBSWF9TUEVFQ0hfUFJPQkFCTFlfREVHUkFERUQgMQ0KKyNkZWZpbmUgUlhfU1BFRUNIX0xPU1QgMg0KKyNkZWZpbmUgUlhfU1BFRUNIX0JBRCAzDQorI2RlZmluZSBSWF9TSURfRklSU1QgNA0KKyNkZWZpbmUgUlhfU0lEX1VQREFURSA1DQorI2RlZmluZSBSWF9TSURfQkFEIDYNCisjZGVmaW5lIFJYX05PX0RBVEEgNw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqDQorICogREVGSU5JVElPTiBPRiBEQVRBIFRZUEVTDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KK1dvcmQxNiBkdHhfZW5jX2luaXQoZHR4X2VuY1N0YXRlICoqIHN0LCBXb3JkMTYgaXNmX2luaXRbXSwgVk9fTUVNX09QRVJBVE9SICpwTWVtT1ApOw0KK1dvcmQxNiBkdHhfZW5jX3Jlc2V0KGR0eF9lbmNTdGF0ZSAqIHN0LCBXb3JkMTYgaXNmX2luaXRbXSk7DQordm9pZCBkdHhfZW5jX2V4aXQoZHR4X2VuY1N0YXRlICoqIHN0LCBWT19NRU1fT1BFUkFUT1IgKnBNZW1PUCk7DQorDQorV29yZDE2IGR0eF9lbmMoDQorICAgICBkdHhfZW5jU3RhdGUgKiBzdCwgICAgICAgICAgICAgICAgICAgIC8qIGkvbyA6IFN0YXRlIHN0cnVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisgICAgIFdvcmQxNiBpc2ZbTV0sICAgICAgICAgICAgICAgICAgICAgICAgLyogbyAgIDogQ04gSVNGIHZlY3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgICAgV29yZDE2ICogZXhjMiwgICAgICAgICAgICAgICAgICAgICAgICAvKiBvICAgOiBDTiBleGNpdGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAgICBXb3JkMTYgKiogcHJtcw0KKyk7DQorDQorV29yZDE2IGR0eF9idWZmZXIoDQorICAgICBkdHhfZW5jU3RhdGUgKiBzdCwgICAgICAgICAgICAgICAgICAgIC8qIGkvbyA6IFN0YXRlIHN0cnVjdCAgICAgICAgICAgICAgICAgICAgKi8NCisgICAgIFdvcmQxNiBpc2ZfbmV3W10sICAgICAgICAgICAgICAgICAgICAgLyogaSAgIDogaXNmIHZlY3RvciAgICAgICAgICAgICAgICAgICAgICAqLw0KKyAgICAgV29yZDMyIGVuciwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpICAgOiByZXNpZHVhbCBlbmVyZ3kgKGluIExfRlJBTUUpICAgICovDQorICAgICBXb3JkMTYgY29kZWNfbW9kZQ0KKyk7DQorDQordm9pZCB0eF9kdHhfaGFuZGxlcihkdHhfZW5jU3RhdGUgKiBzdCwgICAgIC8qIGkvbyA6IFN0YXRlIHN0cnVjdCAgICAgICAgICAgKi8NCisgICAgIFdvcmQxNiB2YWRfZmxhZywgICAgICAgICAgICAgICAgICAgICAgLyogaSAgIDogdmFkIGRlY2lzaW9uICAgICAgICAgICAqLw0KKyAgICAgV29yZDE2ICogdXNlZE1vZGUgICAgICAgICAgICAgICAgICAgICAvKiBpL28gOiBtb2RlIGNoYW5nZWQgb3Igbm90ICAgICovDQorKTsNCisNCit2b2lkIFFpc2ZfbnMoDQorICAgICBXb3JkMTYgKiBpc2YxLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogSVNGIGluIHRoZSBmcmVxdWVuY3kgZG9tYWluICgwLi4wLjUpICovDQorICAgICBXb3JkMTYgKiBpc2ZfcSwgICAgICAgICAgICAgICAgICAgICAgIC8qIG91dHB1dDogcXVhbnRpemVkIElTRiAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAgICBXb3JkMTYgKiBpbmRpY2UgICAgICAgICAgICAgICAgICAgICAgIC8qIG91dHB1dDogcXVhbnRpemF0aW9uIGluZGljZXMgICAgICAgICAgICAgICAgICovDQorKTsNCisNCisNCit2b2lkIERpc2ZfbnMoDQorICAgICBXb3JkMTYgKiBpbmRpY2UsICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0OiAgcXVhbnRpemF0aW9uIGluZGljZXMgICAgICAgICAgICAgICAgICAqLw0KKyAgICAgV29yZDE2ICogaXNmX3EgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IElTRiBpbiB0aGUgZnJlcXVlbmN5IGRvbWFpbiAoMC4uMC41KSAgKi8NCispOw0KKw0KKyNlbmRpZiAgLy9fX0RUWF9IX18NCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL2dyaWQxMDAudGFiIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9ncmlkMTAwLnRhYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZmVlMThkCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9ncmlkMTAwLnRhYgpAQCAtMCwwICsxLDUzIEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisgKiAgVGFibGUgZm9yIGF6X2lzcCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqIFZlY3RvciBncmlkW10gaXMgaW4gUTE1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogZ3JpZFswXSA9IDEuMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqIGdyaWRbZ3JpZF9wb2ludHMrMV0gPSAtMS4wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiBmb3IgKGkgPSAxOyBpIDwgZ3JpZF9wb2ludHM7IGkrKykgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICBncmlkW2ldID0gY29zKCg2LjI4MzE4NTMwNyppKS8oMi4wKmdyaWRfcG9pbnRzKSk7ICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKy8qIFZlcnNpb24gMTAxIHBvaW50cyAqLw0KKw0KKyNkZWZpbmUgICBHUklEX1BPSU5UUyAgICAgMTAwDQorDQorY29uc3QgV29yZDE2IHZvZ3JpZFtHUklEX1BPSU5UUysxXSA9ew0KKyAgICAzMjc2NywgICAgIDMyNzUxLCAgICAgMzI3MDMsICAgICAzMjYyMiwgICAgIDMyNTA5LCAgICAgMzIzNjQsDQorICAgIDMyMTg3LCAgICAgMzE5NzgsICAgICAzMTczOCwgICAgIDMxNDY2LCAgICAgMzExNjQsICAgICAzMDgzMCwNCisgICAgMzA0NjYsICAgICAzMDA3MiwgICAgIDI5NjQ5LCAgICAgMjkxOTYsICAgICAyODcxNCwgICAgIDI4MjA0LA0KKyAgICAyNzY2NiwgICAgIDI3MTAxLCAgICAgMjY1MDksICAgICAyNTg5MSwgICAgIDI1MjQ4LCAgICAgMjQ1NzksDQorICAgIDIzODg2LCAgICAgMjMxNzAsICAgICAyMjQzMSwgICAgIDIxNjY5LCAgICAgMjA4ODcsICAgICAyMDA4MywNCisgICAgMTkyNjAsICAgICAxODQxOCwgICAgIDE3NTU3LCAgICAgMTY2ODAsICAgICAxNTc4NiwgICAgIDE0ODc2LA0KKyAgICAxMzk1MSwgICAgIDEzMDEzLCAgICAgMTIwNjIsICAgICAxMTA5OSwgICAgIDEwMTI1LCAgICAgIDkxNDEsDQorICAgICA4MTQ5LCAgICAgIDcxNDgsICAgICAgNjE0MCwgICAgICA1MTI2LCAgICAgIDQxMDYsICAgICAgMzA4MywNCisgICAgIDIwNTcsICAgICAgMTAyOSwgICAgICAgICAwLCAgICAgLTEwMjksICAgICAtMjA1NywgICAgIC0zMDgzLA0KKyAgICAtNDEwNiwgICAgIC01MTI2LCAgICAgLTYxNDAsICAgICAtNzE0OCwgICAgIC04MTQ5LCAgICAgLTkxNDEsDQorICAgLTEwMTI1LCAgICAtMTEwOTksICAgIC0xMjA2MiwgICAgLTEzMDEzLCAgICAtMTM5NTEsICAgIC0xNDg3NiwNCisgICAtMTU3ODYsICAgIC0xNjY4MCwgICAgLTE3NTU3LCAgICAtMTg0MTgsICAgIC0xOTI2MCwgICAgLTIwMDgzLA0KKyAgIC0yMDg4NywgICAgLTIxNjY5LCAgICAtMjI0MzEsICAgIC0yMzE3MCwgICAgLTIzODg2LCAgICAtMjQ1NzksDQorICAgLTI1MjQ4LCAgICAtMjU4OTEsICAgIC0yNjUwOSwgICAgLTI3MTAxLCAgICAtMjc2NjYsICAgIC0yODIwNCwNCisgICAtMjg3MTQsICAgIC0yOTE5NiwgICAgLTI5NjQ5LCAgICAtMzAwNzIsICAgIC0zMDQ2NiwgICAgLTMwODMwLA0KKyAgIC0zMTE2NCwgICAgLTMxNDY2LCAgICAtMzE3MzgsICAgIC0zMTk3OCwgICAgLTMyMTg3LCAgICAtMzIzNjQsDQorICAgLTMyNTA5LCAgICAtMzI2MjIsICAgIC0zMjcwMywgICAgLTMyNzUxLCAgICAtMzI3NjB9Ow0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvaGFtX3dpbmQudGFiIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9oYW1fd2luZC50YWIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTFmODY5MAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvaGFtX3dpbmQudGFiCkBAIC0wLDAgKzEsNzMgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorDQorLyogSGFtbWluZ19jb3Mgd2luZG93IGZvciBMUEMgYW5hbHlzaXMuICAgICAgICAgICAgICAgICAqLw0KKy8qICAgQ3JlYXRlIHdpdGggZnVuY3Rpb24gaGFtbV9jb3Mod2luZG93LDM4NC0xMjgsMTI4KSAgKi8NCisNCisjZGVmaW5lIExfV0lORE9XIDM4NA0KKw0KK2NvbnN0IFdvcmQxNiB2b193aW5kb3dbTF9XSU5ET1ddID0gew0KKyAgICAyNjIxLCAgICAyNjIyLCAgICAyNjI2LCAgICAyNjMyLCAgICAyNjQwLCAgICAyNjUwLCAgICAyNjYyLCAgICAyNjc3LA0KKyAgICAyNjk0LCAgICAyNzE0LCAgICAyNzM1LCAgICAyNzU5LCAgICAyNzg1LCAgICAyODE0LCAgICAyODQ0LCAgICAyODc3LA0KKyAgICAyOTEyLCAgICAyOTQ5LCAgICAyOTg5LCAgICAzMDMxLCAgICAzMDc1LCAgICAzMTIxLCAgICAzMTY5LCAgICAzMjIwLA0KKyAgICAzMjczLCAgICAzMzI4LCAgICAzMzg1LCAgICAzNDQ0LCAgICAzNTA2LCAgICAzNTY5LCAgICAzNjM1LCAgICAzNzAzLA0KKyAgICAzNzczLCAgICAzODQ1LCAgICAzOTE5LCAgICAzOTk2LCAgICA0MDc0LCAgICA0MTU1LCAgICA0MjM3LCAgICA0MzIxLA0KKyAgICA0NDA4LCAgICA0NDk2LCAgICA0NTg3LCAgICA0NjgwLCAgICA0Nzc0LCAgICA0ODcwLCAgICA0OTY5LCAgICA1MDY5LA0KKyAgICA1MTcxLCAgICA1Mjc1LCAgICA1MzgxLCAgICA1NDg5LCAgICA1NTk5LCAgICA1NzEwLCAgICA1ODI0LCAgICA1OTM5LA0KKyAgICA2MDU2LCAgICA2MTc0LCAgICA2Mjk1LCAgICA2NDE3LCAgICA2NTQxLCAgICA2NjY2LCAgICA2NzkzLCAgICA2OTIyLA0KKyAgICA3MDUyLCAgICA3MTg1LCAgICA3MzE4LCAgICA3NDUzLCAgICA3NTkwLCAgICA3NzI4LCAgICA3ODY4LCAgICA4MDA5LA0KKyAgICA4MTUyLCAgICA4Mjk2LCAgICA4NDQyLCAgICA4NTg5LCAgICA4NzM3LCAgICA4ODg3LCAgICA5MDM4LCAgICA5MTkxLA0KKyAgICA5MzQ0LCAgICA5NDk5LCAgICA5NjU1LCAgICA5ODEzLCAgICA5OTcxLCAgIDEwMTMxLCAgIDEwMjkyLCAgIDEwNDU0LA0KKyAgIDEwNjE3LCAgIDEwNzgxLCAgIDEwOTQ2LCAgIDExMTEzLCAgIDExMjgwLCAgIDExNDQ4LCAgIDExNjE3LCAgIDExNzg3LA0KKyAgIDExOTU4LCAgIDEyMTMwLCAgIDEyMzAzLCAgIDEyNDc2LCAgIDEyNjUwLCAgIDEyODI1LCAgIDEzMDAxLCAgIDEzMTc4LA0KKyAgIDEzMzU1LCAgIDEzNTMzLCAgIDEzNzExLCAgIDEzODkwLCAgIDE0MDcwLCAgIDE0MjUwLCAgIDE0NDMxLCAgIDE0NjEyLA0KKyAgIDE0NzkzLCAgIDE0OTc1LCAgIDE1MTU4LCAgIDE1MzQxLCAgIDE1NTI0LCAgIDE1NzA4LCAgIDE1ODkxLCAgIDE2MDc2LA0KKyAgIDE2MjYwLCAgIDE2NDQ1LCAgIDE2NjI5LCAgIDE2ODE0LCAgIDE2OTk5LCAgIDE3MTg1LCAgIDE3MzcwLCAgIDE3NTU1LA0KKyAgIDE3NzQwLCAgIDE3OTI2LCAgIDE4MTExLCAgIDE4Mjk2LCAgIDE4NDgxLCAgIDE4NjY2LCAgIDE4ODUxLCAgIDE5MDM2LA0KKyAgIDE5MjIxLCAgIDE5NDA1LCAgIDE5NTg5LCAgIDE5NzczLCAgIDE5OTU2LCAgIDIwMTM5LCAgIDIwMzIyLCAgIDIwNTA0LA0KKyAgIDIwNjg2LCAgIDIwODY3LCAgIDIxMDQ4LCAgIDIxMjI5LCAgIDIxNDA4LCAgIDIxNTg4LCAgIDIxNzY3LCAgIDIxOTQ1LA0KKyAgIDIyMTIyLCAgIDIyMjk5LCAgIDIyNDc1LCAgIDIyNjUxLCAgIDIyODI1LCAgIDIyOTk5LCAgIDIzMTcyLCAgIDIzMzQ0LA0KKyAgIDIzNTE2LCAgIDIzNjg2LCAgIDIzODU2LCAgIDI0MDI1LCAgIDI0MTkyLCAgIDI0MzU5LCAgIDI0NTI1LCAgIDI0Njg5LA0KKyAgIDI0ODUzLCAgIDI1MDE2LCAgIDI1MTc3LCAgIDI1MzM3LCAgIDI1NDk2LCAgIDI1NjU0LCAgIDI1ODExLCAgIDI1OTY3LA0KKyAgIDI2MTIxLCAgIDI2Mjc0LCAgIDI2NDI2LCAgIDI2NTc2LCAgIDI2NzI1LCAgIDI2ODczLCAgIDI3MDE5LCAgIDI3MTY0LA0KKyAgIDI3MzA4LCAgIDI3NDUwLCAgIDI3NTkwLCAgIDI3NzI5LCAgIDI3ODY3LCAgIDI4MDAzLCAgIDI4MTM3LCAgIDI4MjcwLA0KKyAgIDI4NDAxLCAgIDI4NTMxLCAgIDI4NjU5LCAgIDI4Nzg1LCAgIDI4OTEwLCAgIDI5MDMzLCAgIDI5MTU0LCAgIDI5Mjc0LA0KKyAgIDI5MzkxLCAgIDI5NTA3LCAgIDI5NjIyLCAgIDI5NzM0LCAgIDI5ODQ1LCAgIDI5OTUzLCAgIDMwMDYwLCAgIDMwMTY1LA0KKyAgIDMwMjY4LCAgIDMwMzcwLCAgIDMwNDY5LCAgIDMwNTY2LCAgIDMwNjYyLCAgIDMwNzU1LCAgIDMwODQ3LCAgIDMwOTM2LA0KKyAgIDMxMDI0LCAgIDMxMTA5LCAgIDMxMTkzLCAgIDMxMjc0LCAgIDMxMzU0LCAgIDMxNDMxLCAgIDMxNTA2LCAgIDMxNTc5LA0KKyAgIDMxNjUxLCAgIDMxNzE5LCAgIDMxNzg2LCAgIDMxODUxLCAgIDMxOTE0LCAgIDMxOTc0LCAgIDMyMDMyLCAgIDMyMDg4LA0KKyAgIDMyMTQyLCAgIDMyMTk0LCAgIDMyMjQzLCAgIDMyMjkxLCAgIDMyMzM2LCAgIDMyMzc5LCAgIDMyNDE5LCAgIDMyNDU4LA0KKyAgIDMyNDk0LCAgIDMyNTI4LCAgIDMyNTYwLCAgIDMyNTg5LCAgIDMyNjE3LCAgIDMyNjQyLCAgIDMyNjY0LCAgIDMyNjg1LA0KKyAgIDMyNzAzLCAgIDMyNzE5LCAgIDMyNzMzLCAgIDMyNzQ0LCAgIDMyNzUzLCAgIDMyNzYwLCAgIDMyNzY0LCAgIDMyNzY3LA0KKyAgIDMyNzY3LCAgIDMyNzY1LCAgIDMyNzU3LCAgIDMyNzQ1LCAgIDMyNzI3LCAgIDMyNzA1LCAgIDMyNjc4LCAgIDMyNjQ2LA0KKyAgIDMyNjA5LCAgIDMyNTY3LCAgIDMyNTIwLCAgIDMyNDY4LCAgIDMyNDExLCAgIDMyMzQ5LCAgIDMyMjgzLCAgIDMyMjExLA0KKyAgIDMyMTM1LCAgIDMyMDU0LCAgIDMxOTY4LCAgIDMxODc3LCAgIDMxNzgxLCAgIDMxNjgxLCAgIDMxNTc1LCAgIDMxNDY1LA0KKyAgIDMxMzUxLCAgIDMxMjMxLCAgIDMxMTA3LCAgIDMwOTc4LCAgIDMwODQ0LCAgIDMwNzA2LCAgIDMwNTYzLCAgIDMwNDE1LA0KKyAgIDMwMjYzLCAgIDMwMTA2LCAgIDI5OTQ1LCAgIDI5Nzc5LCAgIDI5NjA5LCAgIDI5NDM0LCAgIDI5MjU1LCAgIDI5MDcxLA0KKyAgIDI4ODgzLCAgIDI4NjkxLCAgIDI4NDk0LCAgIDI4MjkzLCAgIDI4MDg3LCAgIDI3ODc4LCAgIDI3NjY0LCAgIDI3NDQ2LA0KKyAgIDI3MjI0LCAgIDI2OTk3LCAgIDI2NzY3LCAgIDI2NTMzLCAgIDI2Mjk0LCAgIDI2MDUyLCAgIDI1ODA2LCAgIDI1NTU1LA0KKyAgIDI1MzAxLCAgIDI1MDQzLCAgIDI0NzgyLCAgIDI0NTE2LCAgIDI0MjQ3LCAgIDIzOTc0LCAgIDIzNjk4LCAgIDIzNDE4LA0KKyAgIDIzMTM0LCAgIDIyODQ3LCAgIDIyNTU3LCAgIDIyMjYzLCAgIDIxOTY1LCAgIDIxNjY1LCAgIDIxMzYxLCAgIDIxMDU0LA0KKyAgIDIwNzQzLCAgIDIwNDMwLCAgIDIwMTEzLCAgIDE5Nzk0LCAgIDE5NDcxLCAgIDE5MTQ2LCAgIDE4ODE3LCAgIDE4NDg2LA0KKyAgIDE4MTUyLCAgIDE3ODE1LCAgIDE3NDc2LCAgIDE3MTM0LCAgIDE2Nzg5LCAgIDE2NDQyLCAgIDE2MDkyLCAgIDE1NzQwLA0KKyAgIDE1Mzg1LCAgIDE1MDI4LCAgIDE0NjY5LCAgIDE0MzA4LCAgIDEzOTQ0LCAgIDEzNTc5LCAgIDEzMjExLCAgIDEyODQxLA0KKyAgIDEyNDcwLCAgIDEyMDk2LCAgIDExNzIxLCAgIDExMzQ0LCAgIDEwOTY1LCAgIDEwNTg0LCAgIDEwMjAyLCAgICA5ODE5LA0KKyAgICA5NDMzLCAgICA5MDQ3LCAgICA4NjU5LCAgICA4MjcwLCAgICA3ODc5LCAgICA3NDg4LCAgICA3MDk1LCAgICA2NzAxLA0KKyAgICA2MzA2LCAgICA1OTEwLCAgICA1NTE0LCAgICA1MTE2LCAgICA0NzE4LCAgICA0MzE5LCAgICAzOTE5LCAgICAzNTE5LA0KKyAgICAzMTE4LCAgICAyNzE2LCAgICAyMzE1LCAgICAxOTEzLCAgICAxNTEwLCAgICAxMTA4LCAgICAgNzA1LCAgICAgMzAyfTsNCisNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL2hvbWluZy50YWIgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL2hvbWluZy50YWIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjk2M2RhN2EKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL2hvbWluZy50YWIKQEAgLTAsMCArMSwxMjMgQEAKKw0KKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorDQorDQorI2RlZmluZSBESEZfUEFSTVNfTUFYIDMyICAgICAgICAgICAgICAgLyogaG9taW5nIGZyYW1lIHBhdHRlcm4gICovDQorI2RlZmluZSBOVU1fT0ZfU1BNT0RFUyA5DQorDQorI2RlZmluZSBQUk1MIDE1DQorI2RlZmluZSBQUk1OXzdrIE5CQklUU183ay9QUk1MICsgMQ0KKyNkZWZpbmUgUFJNTl85ayBOQkJJVFNfOWsvUFJNTCArIDENCisjZGVmaW5lIFBSTU5fMTJrIE5CQklUU18xMmsvUFJNTCArIDENCisjZGVmaW5lIFBSTU5fMTRrIE5CQklUU18xNGsvUFJNTCArIDENCisjZGVmaW5lIFBSTU5fMTZrIE5CQklUU18xNmsvUFJNTCArIDENCisjZGVmaW5lIFBSTU5fMThrIE5CQklUU18xOGsvUFJNTCArIDENCisjZGVmaW5lIFBSTU5fMjBrIE5CQklUU18yMGsvUFJNTCArIDENCisjZGVmaW5lIFBSTU5fMjNrIE5CQklUU18yM2svUFJNTCArIDENCisjZGVmaW5lIFBSTU5fMjRrIE5CQklUU18yNGsvUFJNTCArIDENCisNCitzdGF0aWMgY29uc3QgV29yZDE2IGRmaF9NN2tbUFJNTl83a10gPQ0KK3sNCisgIDMxNjgsIDI5OTU0LCAyOTIxMywgMTYxMjEsIA0KKwk2NCwgMTM0NDAsIDMwNjI0LCAxNjQzMCwgDQorIDE5MDA4DQorfTsNCisNCitzdGF0aWMgY29uc3QgV29yZDE2IGRmaF9NOWtbUFJNTl85a10gPQ0KK3sNCisgICAzMTY4LCAzMTY2NSwgIDk5NDMsIDkxMjMsIA0KKyAgMTU1OTksICA0MzU4LCAyMDI0OCwgMjA0OCwgDQorICAxNzA0MCwgMjc3ODcsIDE2ODE2LCAxMzg4OA0KK307DQorDQorc3RhdGljIGNvbnN0IFdvcmQxNiBkZmhfTTEya1tQUk1OXzEya10gPQ0KK3sNCisgIDMxNjgsIDMxNjY1LCAgOTk0MywgIDkxMjgsIA0KKyAgMzY0NywgIDgxMjksIDMwOTMwLCAyNzkyNiwgDQorIDE4ODgwLCAxMjMxOSwgICA0OTYsICAxMDQyLCANCisgIDQwNjEsIDIwNDQ2LCAyNTYyOSwgMjgwNjksIA0KKyAxMzk0OA0KK307DQorDQorc3RhdGljIGNvbnN0IFdvcmQxNiBkZmhfTTE0a1tQUk1OXzE0a10gPQ0KK3sNCisgICAgMzE2OCwgMzE2NjUsICA5OTQzLCAgOTEzMSwgDQorICAgMjQ4MTUsICAgNjU1LCAyNjYxNiwgMjY3NjQsIA0KKyAgICA3MjM4LCAxOTEzNiwgIDYxNDQsICAgIDg4LCANCisJNDE1OCwgMjU3MzMsIDMwNTY3LCAzMDQ5NCwgDQorCTIyMSwgMjAzMjEsIDE3ODIzDQorfTsNCisNCitzdGF0aWMgY29uc3QgV29yZDE2IGRmaF9NMTZrW1BSTU5fMTZrXSA9DQorew0KKyAgICAzMTY4LCAzMTY2NSwgIDk5NDMsICA5MTMxLCANCisgICAyNDgxNSwgICA3MDAsICAzODI0LCAgNzI3MSwgDQorICAgMjY0MDAsICA5NTI4LCAgNjU5NCwgMjYxMTIsIA0KKyAgICAgMTA4LCAgMjA2OCwgMTI4NjcsIDE2MzE3LCANCisgICAyMzAzNSwgMjQ2MzIsICA3NTI4LCAgMTc1MiwgDQorICAgIDY3NTksIDI0NTc2DQorfTsNCisNCitzdGF0aWMgY29uc3QgV29yZDE2IGRmaF9NMThrW1BSTU5fMThrXSA9DQorew0KKyAgICAgMzE2OCwgMzE2NjUsICA5OTQzLCAgOTEzNSwgDQorCTE0Nzg3LCAxNDQyMywgMzA0NzcsIDI0OTI3LCANCisJMjUzNDUsIDMwMTU0LCAgIDkxNiwgIDU3MjgsIA0KKwkxODk3OCwgIDIwNDgsICAgNTI4LCAxNjQ0OSwgDQorCSAyNDM2LCAgMzU4MSwgMjM1MjcsIDI5NDc5LCANCisJIDgyMzcsIDE2ODEwLCAyNzA5MSwgMTkwNTIsIA0KKwkgICAgMA0KK307DQorDQorc3RhdGljIGNvbnN0IFdvcmQxNiBkZmhfTTIwa1tQUk1OXzIwa10gPQ0KK3sNCisgICAgIDMxNjgsIDMxNjY1LCAgOTk0MywgIDkxMjksIA0KKwkgODYzNywgMzE4MDcsIDI0NjQ2LCAgIDczNiwgDQorCTI4NjQzLCAgMjk3NywgIDI1NjYsIDI1NTY0LCANCisJMTI5MzAsIDEzOTYwLCAgMjA0OCwgICA4MzQsIA0KKwkgMzI3MCwgIDQxMDAsIDI2OTIwLCAxNjIzNywgDQorCTMxMjI3LCAxNzY2NywgMTUwNTksIDIwNTg5LCANCisJMzAyNDksIDI5MTIzLCAwDQorfTsNCisNCitzdGF0aWMgY29uc3QgV29yZDE2IGRmaF9NMjNrW1BSTU5fMjNrXSA9DQorew0KKwkgMzE2OCwgMzE2NjUsICA5OTQzLCAgOTEzMiwgDQorCTE2NzQ4LCAgMzIwMiwgMjgxNzksIDE2MzE3LCANCisJMzA1OTAsIDE1ODU3LCAxOTk2MCwgIDg4MTgsIA0KKwkyMTcxMSwgMjE1MzgsICA0MjYwLCAxNjY5MCwgDQorCTIwMjI0LCAgMzY2NiwgIDQxOTQsICA5NDk3LCANCisJMTYzMjAsIDE1Mzg4LCAgNTc1NSwgMzE1NTEsIA0KKwkxNDA4MCwgIDM1NzQsIDE1OTMyLCAgICA1MCwgDQorCTIzMzkyLCAyNjA1MywgMzEyMTYNCit9Ow0KKw0KK3N0YXRpYyBjb25zdCBXb3JkMTYgZGZoX00yNGtbUFJNTl8yNGtdID0NCit7DQorCSAzMTY4LCAzMTY2NSwgIDk5NDMsICA5MTM0LCANCisJMjQ3NzYsICA1ODU3LCAxODQ3NSwgMjg1MzUsIA0KKwkyOTY2MiwgMTQzMjEsIDE2NzI1LCAgNDM5NiwgDQorCTI5MzUzLCAxMDAwMywgMTcwNjgsIDIwNTA0LCANCisJICA3MjAsICAgICAwLCAgODQ2NSwgMTI1ODEsIA0KKwkyODg2MywgMjQ3NzQsICA5NzA5LCAyNjA0MywgDQorCSA3OTQxLCAyNzY0OSwgMTM5NjUsIDE1MjM2LCANCisJMTgwMjYsIDIyMDQ3LCAxNjY4MSwgIDM5NjgNCit9Ow0KKw0KKw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvaXNwX2lzZi50YWIgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL2lzcF9pc2YudGFiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmMjBlMzgKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL2lzcF9pc2YudGFiCkBAIC0wLDAgKzEsNjIgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisgfCBUYWJsZXMgZm9yIGZ1bmN0aW9uIElzZl9pc3AoKSBhbmQgSXNwX2lzZigpICAgICAgICAgfA0KKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKy8qIHRhYmxlIG9mIGNvcyh4KSBpbiBRMTUgKi8NCisNCitjb25zdCBzdGF0aWMgV29yZDE2IHRhYmxlWzEyOV0gPSB7DQorICAzMjc2NywNCisgIDMyNzU4LCAgMzI3MjksICAzMjY3OSwgIDMyNjEwLCAgMzI1MjIsICAzMjQxMywgIDMyMjg2LCAgMzIxMzgsDQorICAzMTk3MiwgIDMxNzg2LCAgMzE1ODEsICAzMTM1NywgIDMxMTE0LCAgMzA4NTMsICAzMDU3MiwgIDMwMjc0LA0KKyAgMjk5NTcsICAyOTYyMiwgIDI5MjY5LCAgMjg4OTksICAyODUxMSwgIDI4MTA2LCAgMjc2ODQsICAyNzI0NiwNCisgIDI2NzkxLCAgMjYzMjAsICAyNTgzMywgIDI1MzMwLCAgMjQ4MTIsICAyNDI3OSwgIDIzNzMyLCAgMjMxNzAsDQorICAyMjU5NSwgIDIyMDA2LCAgMjE0MDMsICAyMDc4OCwgIDIwMTYwLCAgMTk1MjAsICAxODg2OCwgIDE4MjA1LA0KKyAgMTc1MzEsICAxNjg0NiwgIDE2MTUxLCAgMTU0NDcsICAxNDczMywgIDE0MDEwLCAgMTMyNzksICAxMjU0MCwNCisgIDExNzkzLCAgMTEwMzksICAxMDI3OSwgICA5NTEyLCAgIDg3NDAsICAgNzk2MiwgICA3MTgwLCAgIDYzOTMsDQorICAgNTYwMiwgICA0ODA4LCAgIDQwMTEsICAgMzIxMiwgICAyNDExLCAgIDE2MDgsICAgIDgwNCwgICAgICAwLA0KKyAgIC04MDQsICAtMTYwOCwgIC0yNDExLCAgLTMyMTIsICAtNDAxMSwgIC00ODA4LCAgLTU2MDIsICAtNjM5MywNCisgIC03MTgwLCAgLTc5NjIsICAtODc0MCwgIC05NTEyLCAtMTAyNzksIC0xMTAzOSwgLTExNzkzLCAtMTI1NDAsDQorIC0xMzI3OSwgLTE0MDEwLCAtMTQ3MzMsIC0xNTQ0NywgLTE2MTUxLCAtMTY4NDYsIC0xNzUzMSwgLTE4MjA1LA0KKyAtMTg4NjgsIC0xOTUyMCwgLTIwMTYwLCAtMjA3ODgsIC0yMTQwMywgLTIyMDA2LCAtMjI1OTUsIC0yMzE3MCwNCisgLTIzNzMyLCAtMjQyNzksIC0yNDgxMiwgLTI1MzMwLCAtMjU4MzMsIC0yNjMyMCwgLTI2NzkxLCAtMjcyNDYsDQorIC0yNzY4NCwgLTI4MTA2LCAtMjg1MTEsIC0yODg5OSwgLTI5MjY5LCAtMjk2MjIsIC0yOTk1NywgLTMwMjc0LA0KKyAtMzA1NzIsIC0zMDg1MywgLTMxMTE0LCAtMzEzNTcsIC0zMTU4MSwgLTMxNzg2LCAtMzE5NzIsIC0zMjEzOCwNCisgLTMyMjg2LCAtMzI0MTMsIC0zMjUyMiwgLTMyNjEwLCAtMzI2NzksIC0zMjcyOSwgLTMyNzU4LCAtMzI3Njh9Ow0KKw0KKy8qIHNsb3BlIGluIFExMSB1c2VkIHRvIGNvbXB1dGUgeSA9IGFjb3MoeCkgKi8NCisNCitjb25zdCBzdGF0aWMgV29yZDE2IHNsb3BlWzEyOF0gPSB7IA0KKyAtMjYyMTQsIC05MDM5LCAtNTI0MywgLTM3OTksIC0yOTc5LCAtMjQwNSwgLTIwNjQsIC0xNzcxLA0KKyAtMTU3OSwgLTE0MDksIC0xMjc5LCAtMTE3MCwgLTEwNzksIC0xMDA0LCAtOTMzLCAtODgwLA0KKyAtODI3LCAtNzgzLCAtNzQzLCAtNzA4LCAtNjc2LCAtNjQ3LCAtNjIxLCAtNTk5LA0KKyAtNTc2LCAtNTU3LCAtNTM4LCAtNTIxLCAtNTA2LCAtNDkyLCAtNDc5LCAtNDY2LA0KKyAtNDU2LCAtNDQ1LCAtNDM1LCAtNDI2LCAtNDE3LCAtNDEwLCAtNDAyLCAtMzk1LA0KKyAtMzg5LCAtMzgzLCAtMzc3LCAtMzcyLCAtMzY3LCAtMzYzLCAtMzU5LCAtMzU1LA0KKyAtMzUxLCAtMzQ4LCAtMzQ1LCAtMzQyLCAtMzQwLCAtMzM3LCAtMzM1LCAtMzMzLA0KKyAtMzMxLCAtMzMwLCAtMzI5LCAtMzI4LCAtMzI3LCAtMzI2LCAtMzI2LCAtMzI2LA0KKyAtMzI2LCAtMzI2LCAtMzI2LCAtMzI3LCAtMzI4LCAtMzI5LCAtMzMwLCAtMzMxLA0KKyAtMzMzLCAtMzM1LCAtMzM3LCAtMzQwLCAtMzQyLCAtMzQ1LCAtMzQ4LCAtMzUxLA0KKyAtMzU1LCAtMzU5LCAtMzYzLCAtMzY3LCAtMzcyLCAtMzc3LCAtMzgzLCAtMzg5LA0KKyAtMzk1LCAtNDAyLCAtNDEwLCAtNDE3LCAtNDI2LCAtNDM1LCAtNDQ1LCAtNDU2LA0KKyAtNDY2LCAtNDc5LCAtNDkyLCAtNTA2LCAtNTIxLCAtNTM4LCAtNTU3LCAtNTc2LA0KKyAtNTk5LCAtNjIxLCAtNjQ3LCAtNjc2LCAtNzA4LCAtNzQzLCAtNzgzLCAtODI3LA0KKyAtODgwLCAtOTMzLCAtMTAwNCwgLTEwNzksIC0xMTcwLCAtMTI3OSwgLTE0MDksIC0xNTc5LA0KKyAtMTc3MSwgLTIwNjQsIC0yNDA1LCAtMjk3OSwgLTM3OTksIC01MjQzLCAtOTAzOSwgLTI2MjE0fTsNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL2xhZ193aW5kLnRhYiBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvbGFnX3dpbmQudGFiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxNzVkNjYKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL2xhZ193aW5kLnRhYgpAQCAtMCwwICsxLDgxIEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorIHwgVGFibGUgb2YgbGFnX3dpbmRvdyBmb3IgYXV0b2NvcnJlbGF0aW9uLiAgICAgICAgICAgIHwNCisgfCBub2lzZSBmbG9vciA9IDEuMDAwMSAgID0gKDAuOTk5OSAgb24gclsxXSAuLnJbMTZdKSAgfA0KKyB8IEJhbmR3aWR0aCBleHBhbnNpb24gPSA2MCBIeiAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgU2FtcGxpbmcgZnJlcXVlbmN5ICA9IDEyODAwIEh6ICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8IFNwZWNpYWwgZG91YmxlIHByZWNpc2lvbiBmb3JtYXQuIFNlZSAibWF0aF9vcC5jIiAgICB8DQorIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCBsYWdfd2luZFswXSA9ICAxLjAwMDAwMDAwICAgIChub3Qgc3RvcmVkKSAgICAgICAgICAgfA0KKyB8IGxhZ193aW5kWzFdID0gIDAuOTk5NDY2NDIgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgbGFnX3dpbmRbMl0gPSAgMC45OTgxNjY4MCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCBsYWdfd2luZFszXSA9ICAwLjk5NjAwNDUyICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8IGxhZ193aW5kWzRdID0gIDAuOTkyOTg1MTMgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgbGFnX3dpbmRbNV0gPSAgMC45ODkxMTY1NSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCBsYWdfd2luZFs2XSA9ICAwLjk4NDQwODgwICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8IGxhZ193aW5kWzddID0gIDAuOTc4ODczOTcgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgbGFnX3dpbmRbOF0gPSAgMC45NzI1MjYxOSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCBsYWdfd2luZFs5XSA9ICAwLjk2NTM4MTg2ICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8IGxhZ193aW5kWzEwXT0gIDAuOTU3NDU5MDMgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgbGFnX3dpbmRbMTFdPSAgMC45NDg3Nzc5NyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCBsYWdfd2luZFsxMl09ICAwLjkzOTM2MDM4ICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8IGxhZ193aW5kWzEzXT0gIDAuOTI5MjI5ODYgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIHwgbGFnX3dpbmRbMTRdPSAgMC45MTg0MTE1NSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCisgfCBsYWdfd2luZFsxNV09ICAwLjkwNjkzMjEyICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KKyB8IGxhZ193aW5kWzE2XT0gIDAuODk0ODE5NjggICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorI2RlZmluZSBNIDE2DQorDQorc3RhdGljIFdvcmQxNiB2b2xhZ19oW01dID0gew0KKyAgICAgIDMyNzUwLA0KKyAgICAgIDMyNzA3LA0KKyAgICAgIDMyNjM3LA0KKyAgICAgIDMyNTM4LA0KKyAgICAgIDMyNDExLA0KKyAgICAgIDMyMjU3LA0KKyAgICAgIDMyMDc1LA0KKyAgICAgIDMxODY3LA0KKyAgICAgIDMxNjMzLA0KKyAgICAgIDMxMzc0LA0KKyAgICAgIDMxMDg5LA0KKyAgICAgIDMwNzgwLA0KKyAgICAgIDMwNDQ5LA0KKyAgICAgIDMwMDk0LA0KKyAgICAgIDI5NzE4LA0KKyAgICAgIDI5MzIxfTsNCisNCitzdGF0aWMgV29yZDE2IHZvbGFnX2xbTV0gPSB7DQorICAgICAgMTY4OTYsDQorICAgICAgMzA0NjQsDQorICAgICAgIDI0OTYsDQorICAgICAgIDQ0ODAsDQorICAgICAgMTIxNjAsDQorICAgICAgIDM1MjAsDQorICAgICAgMjQzMjAsDQorICAgICAgMjQxOTIsDQorICAgICAgMjA3MzYsDQorICAgICAgICA1NzYsDQorICAgICAgMTgyNDAsDQorICAgICAgMzE0ODgsDQorICAgICAgICAxMjgsDQorICAgICAgMTY3MDQsDQorICAgICAgMTE1MjAsDQorICAgICAgMTQ3ODR9Ow0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvbG9nMi5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9sb2cyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTFiZGJlYwotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvbG9nMi5oCkBAIC0wLDAgKzEsNjIgQEAKKw0KKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKg0KKyogICAgICBGaWxlICAgICAgICAgICAgIDogbG9nMi5oDQorKiAgICAgIFB1cnBvc2UgICAgICAgICAgOiBDb21wdXRlcyBsb2cyKExfeCkNCisqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqLw0KKyNpZm5kZWYgX19MT0cyX0hfXw0KKyNkZWZpbmUgX19MT0cyX0hfXw0KKyANCisvKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICBJTkNMVURFIEZJTEVTDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqLw0KKyNpbmNsdWRlICJ0eXBlZGVmLmgiDQorIA0KKy8qDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqICAgICAgICAgICAgICAgICAgICAgICAgIERFRklOSVRJT04gT0YgREFUQSBUWVBFUw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKi8NCisgDQorLyoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgREVDTEFSQVRJT04gT0YgUFJPVE9UWVBFUw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKi8NCit2b2lkIExvZzIgKA0KKwkJV29yZDMyIExfeCwgICAgICAgIC8qIChpKSA6IGlucHV0IHZhbHVlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiAqZXhwb25lbnQsICAvKiAobykgOiBJbnRlZ2VyIHBhcnQgb2YgTG9nMi4gICAocmFuZ2U6IDA8PXZhbDw9MzApICovDQorCQlXb3JkMTYgKmZyYWN0aW9uICAgLyogKG8pIDogRnJhY3Rpb25hbCBwYXJ0IG9mIExvZzIuIChyYW5nZTogMDw9dmFsPDEpKi8NCisJICApOw0KKw0KK3ZvaWQgTG9nMl9ub3JtICgNCisJCVdvcmQzMiBMX3gsICAgICAgICAgLyogKGkpIDogaW5wdXQgdmFsdWUgKG5vcm1hbGl6ZWQpICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IGV4cCwgICAgICAgICAvKiAoaSkgOiBub3JtX2wgKExfeCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgKmV4cG9uZW50LCAgIC8qIChvKSA6IEludGVnZXIgcGFydCBvZiBMb2cyLiAgIChyYW5nZTogMDw9dmFsPD0zMCkgKi8NCisJCVdvcmQxNiAqZnJhY3Rpb24gICAgLyogKG8pIDogRnJhY3Rpb25hbCBwYXJ0IG9mIExvZzIuIChyYW5nZTogMDw9dmFsPDEpICAqLw0KKwkgICAgICAgKTsNCisNCisjZW5kaWYgIC8vX19MT0cyX0hfXw0KKw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvbG9nMl90YWIuaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvbG9nMl90YWIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzYxYWU2Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9sb2cyX3RhYi5oCkBAIC0wLDAgKzEsMzUgQEAKKw0KKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqDQorKiAgICAgIEZpbGUgICAgICAgICAgICAgOiBsb2cyLnRhYg0KKyogICAgICBQdXJwb3NlICAgICAgICAgIDogVGFibGUgZm9yIHJvdXRpbmUgTG9nMigpLg0KKyogICAgICAkSWQgJA0KKyoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyovDQorc3RhdGljIGNvbnN0IFdvcmQxNiB0YWJsZVszM10gPQ0KK3sNCisgICAgMCwgMTQ1NSwgMjg2NiwgNDIzNiwgNTU2OCwgNjg2MywgODEyNCwgOTM1MiwgMTA1NDksIDExNzE2LA0KKyAgICAxMjg1NSwgMTM5NjcsIDE1MDU0LCAxNjExNywgMTcxNTYsIDE4MTcyLCAxOTE2NywgMjAxNDIsIDIxMDk3LCAyMjAzMywNCisgICAgMjI5NTEsIDIzODUyLCAyNDczNSwgMjU2MDMsIDI2NDU1LCAyNzI5MSwgMjgxMTMsIDI4OTIyLCAyOTcxNiwgMzA0OTcsDQorICAgIDMxMjY2LCAzMjAyMywgMzI3NjcNCit9Ow0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvbWFpbi5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9tYWluLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDdlN2M2NwotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvbWFpbi5oCkBAIC0wLDAgKzEsNDUgQEAKKw0KKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICBNQUlOLkgJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorICogICAgICAgTWFpbiBmdW5jdGlvbnMJCQkJCQkJICAgICoNCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisjaWZuZGVmIF9fTUFJTl9IX18NCisjZGVmaW5lIF9fTUFJTl9IX18NCisNCit2b2lkIGNvZGVyKA0KKyAgICAgV29yZDE2ICogbW9kZSwgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6ICB1c2VkIG1vZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorICAgICBXb3JkMTYgc3BlZWNoMTZrW10sICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogIDMyMCBuZXcgc3BlZWNoIHNhbXBsZXMgKGF0IDE2IGtIeikgICAgKi8NCisgICAgIFdvcmQxNiBwcm1zW10sICAgICAgICAgICAgICAgICAgICAgICAgLyogb3V0cHV0OiAgb3V0cHV0IHBhcmFtZXRlcnMgICAgICAgICAgICovDQorICAgICBXb3JkMTYgKiBzZXJfc2l6ZSwgICAgICAgICAgICAgICAgICAgIC8qIG91dHB1dDogIGJpdCByYXRlIG9mIHRoZSB1c2VkIG1vZGUgICAqLw0KKyAgICAgdm9pZCAqc3BlX3N0YXRlLCAgICAgICAgICAgICAgICAgICAgICAvKiBpL28gICA6ICBTdGF0ZSBzdHJ1Y3R1cmUgICAgICAgICAgICAgICAgICAgICAgICovDQorICAgICBXb3JkMTYgYWxsb3dfZHR4ICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogIERUWCBPTi9PRkYgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCispOw0KKw0KKw0KKw0KK3ZvaWQgUmVzZXRfZW5jb2Rlcih2b2lkICpzdCwgV29yZDE2IHJlc2V0X2FsbCk7DQorDQorDQorV29yZDE2IGVuY29kZXJfaG9taW5nX2ZyYW1lX3Rlc3QoV29yZDE2IGlucHV0X2ZyYW1lW10pOw0KKw0KKyNlbmRpZiAvL19fTUFJTl9IX18NCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL21hdGhfb3AuaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvbWF0aF9vcC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1ZTI5ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL21hdGhfb3AuaApAQCAtMCwwICsxLDU1IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorICogICAgICAgICAgICAgICAgICAgICAgICAgTUFUSF9PUC5ICSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyAqICAgICAgIE1hdGhlbWF0aWNhbCBvcGVyYXRpb25zCQkJCQkgICAgKg0KKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKyNpZm5kZWYgX19NQVRIX09QX0hfXw0KKyNkZWZpbmUgX19NQVRIX09QX0hfXw0KKw0KK1dvcmQzMiBJc3FydCggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgUTMxIDogb3V0cHV0IHZhbHVlIChyYW5nZTogMDw9dmFsPDEpICAgICAgICAgKi8NCisJCVdvcmQzMiBMX3ggICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFEwICA6IGlucHV0IHZhbHVlICAocmFuZ2U6IDA8PXZhbDw9N2ZmZmZmZmYpICovDQorCSAgICApOw0KKw0KK3ZvaWQgSXNxcnRfbigNCisJCVdvcmQzMiAqIGZyYWMsICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkvbykgUTMxOiBub3JtYWxpemVkIHZhbHVlICgxLjAgPCBmcmFjIDw9IDAuNSkgKi8NCisJCVdvcmQxNiAqIGV4cCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkvbykgICAgOiBleHBvbmVudCAodmFsdWUgPSBmcmFjIHggMl5leHBvbmVudCkgKi8NCisJICAgICk7DQorDQorV29yZDMyIFBvdzIoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSBRMCAgOiByZXN1bHQgICAgICAgKHJhbmdlOiAwPD12YWw8PTB4N2ZmZmZmZmYpICovDQorCQlXb3JkMTYgZXhwb25hbnQsICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRMCAgOiBJbnRlZ2VyIHBhcnQuICAgICAgKHJhbmdlOiAwPD12YWw8PTMwKSAgICovDQorCQlXb3JkMTYgZnJhY3Rpb24gICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRMTUgOiBGcmFjdGlvbm5hbCBwYXJ0LiAgKHJhbmdlOiAwLjA8PXZhbDwxLjApICovDQorCSAgICk7DQorDQorV29yZDMyIERvdF9wcm9kdWN0MTIoICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSBRMzE6IG5vcm1hbGl6ZWQgcmVzdWx0ICgxIDwgdmFsIDw9IC0xKSAqLw0KKwkJV29yZDE2IHhbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgMTJiaXRzOiB4IHZlY3RvciAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiB5W10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIDEyYml0czogeSB2ZWN0b3IgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgbGcsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICA6IHZlY3RvciBsZW5ndGggICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2ICogZXhwICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgICAgOiBleHBvbmVudCBvZiByZXN1bHQgKDAuLiszMCkgICAgICAgKi8NCisJCSk7DQorDQorV29yZDMyIERvdF9wcm9kdWN0MTJfYXNtKCAgICAgICAgICAgICAgICAgICAgICAvKiAobykgUTMxOiBub3JtYWxpemVkIHJlc3VsdCAoMSA8IHZhbCA8PSAtMSkgKi8NCisJCVdvcmQxNiB4W10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIDEyYml0czogeCB2ZWN0b3IgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgeVtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAxMmJpdHM6IHkgdmVjdG9yICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IGxnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgOiB2ZWN0b3IgbGVuZ3RoICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiAqIGV4cCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pICAgIDogZXhwb25lbnQgb2YgcmVzdWx0ICgwLi4rMzApICAgICAgICovDQorCQkpOw0KKyNlbmRpZiAvL19fTUFUSF9PUF9IX18NCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL21lbV9hbGlnbi5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9tZW1fYWxpZ24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNmRkZWMzCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9tZW1fYWxpZ24uaApAQCAtMCwwICsxLDM1IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorCUZpbGU6CQltZW1fYWxpZ24uaA0KKw0KKwlDb250ZW50OglNZW1vcnkgYWxsb2MgYWxpZ25tZW50cyBmdW5jdGlvbnMNCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKyNpZm5kZWYgX19WT19NRU1fQUxJR05fSF9fDQorI2RlZmluZSBfX1ZPX01FTV9BTElHTl9IX18NCisNCisjaW5jbHVkZSAidm9NZW0uaCINCisjaW5jbHVkZSAidHlwZWRlZi5oIg0KKw0KK2V4dGVybiB2b2lkICptZW1fbWFsbG9jKFZPX01FTV9PUEVSQVRPUiAqcE1lbW9wLCB1bnNpZ25lZCBpbnQgc2l6ZSwgdW5zaWduZWQgY2hhciBhbGlnbm1lbnQsIHVuc2lnbmVkIGludCBDb2RlY0lEKTsNCitleHRlcm4gdm9pZCBtZW1fZnJlZShWT19NRU1fT1BFUkFUT1IgKnBNZW1vcCwgdm9pZCAqbWVtX3B0ciwgdW5zaWduZWQgaW50IENvZGVjSUQpOw0KKw0KKyNlbmRpZgkvKiBfX1ZPX01FTV9BTElHTl9IX18gKi8NCisNCisNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL21pbWVfaW8udGFiIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9taW1lX2lvLnRhYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZmM4NmExCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9taW1lX2lvLnRhYgpAQCAtMCwwICsxLDM2OCBAQAorDQorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisjaW5jbHVkZSA8c3RkaW8uaD4NCisjaW5jbHVkZSAidHlwZWRlZi5oIg0KKw0KK3N0YXRpYyBVV29yZDggdG9jX2J5dGVbMTZdID0gezB4MDQsIDB4MEMsIDB4MTQsIDB4MUMsIDB4MjQsIDB4MkMsIDB4MzQsIDB4M0MsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg0NCwgMHg0QywgMHg1NCwgMHg1QywgMHg2NCwgMHg2QywgMHg3NCwgMHg3Q307DQorDQorLyogbnVtYmVyIG9mIHNwZWVjaCBiaXRzIGZvciBhbGwgbW9kZXMgKi8NCitzdGF0aWMgV29yZDE2IHVucGFja2VkX3NpemVbMTZdID0gezEzMiwgIDE3NywgMjUzLCAyODUsIDMxNywgMzY1LCAzOTcsIDQ2MSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDQ3NywgICAzNSwgICAwLCAgIDAsICAgMCwgICAwLCAgIDAsICAgMH07DQorDQorLyogc2l6ZSBvZiBwYWNrZWQgZnJhbWUgZm9yIGVhY2ggbW9kZSwgZXhjbHVkaW5nIFRPQyBieXRlICovDQorc3RhdGljIFdvcmQxNiBwYWNrZWRfc2l6ZVsxNl0gPSB7MTcsIDIzLCAzMiwgMzYsIDQwLCA0NiwgNTAsIDU4LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDYwLCAgNSwgIDAsICAwLCAgMCwgIDAsICAwLCAgMH07DQorDQorLyogbnVtYmVyIG9mIHVudXNlZCBzcGVlY2ggYml0cyBpbiBwYWNrZWQgZm9ybWF0IGZvciBlYWNoIG1vZGUgKi8NCitzdGF0aWMgV29yZDE2IHVudXNlZF9zaXplWzE2XSA9IHs0LCA3LCAzLCAzLCAzLCAzLCAzLCAzLCAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwfTsNCisNCisvKiBzb3J0aW5nIHRhYmxlcyBmb3IgYWxsIG1vZGVzICovDQorDQorc3RhdGljIFdvcmQxNiBzb3J0XzY2MFsxMzJdID0gew0KKyAgICAgMCwgICA1LCAgIDYsICAgNywgIDYxLCAgODQsIDEwNywgMTMwLCAgNjIsICA4NSwNCisgICAgIDgsICAgNCwgIDM3LCAgMzgsICAzOSwgIDQwLCAgNTgsICA4MSwgMTA0LCAxMjcsDQorICAgIDYwLCAgODMsIDEwNiwgMTI5LCAxMDgsIDEzMSwgMTI4LCAgNDEsICA0MiwgIDgwLA0KKyAgIDEyNiwgICAxLCAgIDMsICA1NywgMTAzLCAgODIsIDEwNSwgIDU5LCAgIDIsICA2MywNCisgICAxMDksIDExMCwgIDg2LCAgMTksICAyMiwgIDIzLCAgNjQsICA4NywgIDE4LCAgMjAsDQorICAgIDIxLCAgMTcsICAxMywgIDg4LCAgNDMsICA4OSwgIDY1LCAxMTEsICAxNCwgIDI0LA0KKyAgICAyNSwgIDI2LCAgMjcsICAyOCwgIDE1LCAgMTYsICA0NCwgIDkwLCAgNjYsIDExMiwNCisgICAgIDksICAxMSwgIDEwLCAgMTIsICA2NywgMTEzLCAgMjksICAzMCwgIDMxLCAgMzIsDQorICAgIDM0LCAgMzMsICAzNSwgIDM2LCAgNDUsICA1MSwgIDY4LCAgNzQsICA5MSwgIDk3LA0KKyAgIDExNCwgMTIwLCAgNDYsICA2OSwgIDkyLCAxMTUsICA1MiwgIDc1LCAgOTgsIDEyMSwNCisgICAgNDcsICA3MCwgIDkzLCAxMTYsICA1MywgIDc2LCAgOTksIDEyMiwgIDQ4LCAgNzEsDQorICAgIDk0LCAxMTcsICA1NCwgIDc3LCAxMDAsIDEyMywgIDQ5LCAgNzIsICA5NSwgMTE4LA0KKyAgICA1NSwgIDc4LCAxMDEsIDEyNCwgIDUwLCAgNzMsICA5NiwgMTE5LCAgNTYsICA3OSwNCisgICAxMDIsIDEyNQ0KK307DQorDQorc3RhdGljIFdvcmQxNiBzb3J0Xzg4NVsxNzddID0gew0KKyAgICAgMCwgICA0LCAgIDYsICAgNywgICA1LCAgIDMsICA0NywgIDQ4LCAgNDksIDExMiwNCisgICAxMTMsIDExNCwgIDc1LCAxMDYsIDE0MCwgMTcxLCAgODAsIDExMSwgMTQ1LCAxNzYsDQorICAgIDc3LCAxMDgsIDE0MiwgMTczLCAgNzgsIDEwOSwgMTQzLCAxNzQsICA3OSwgMTEwLA0KKyAgIDE0NCwgMTc1LCAgNzYsIDEwNywgMTQxLCAxNzIsICA1MCwgMTE1LCAgNTEsICAgMiwNCisgICAgIDEsICA4MSwgMTE2LCAxNDYsICAxOSwgIDIxLCAgMTIsICAxNywgIDE4LCAgMjAsDQorICAgIDE2LCAgMjUsICAxMywgIDEwLCAgMTQsICAyNCwgIDIzLCAgMjIsICAyNiwgICA4LA0KKyAgICAxNSwgIDUyLCAxMTcsICAzMSwgIDgyLCAxNDcsICAgOSwgIDMzLCAgMTEsICA4MywNCisgICAxNDgsICA1MywgMTE4LCAgMjgsICAyNywgIDg0LCAxNDksICAzNCwgIDM1LCAgMjksDQorICAgIDQ2LCAgMzIsICAzMCwgIDU0LCAxMTksICAzNywgIDM2LCAgMzksICAzOCwgIDQwLA0KKyAgICA4NSwgMTUwLCAgNDEsICA0MiwgIDQzLCAgNDQsICA0NSwgIDU1LCAgNjAsICA2NSwNCisgICAgNzAsICA4NiwgIDkxLCAgOTYsIDEwMSwgMTIwLCAxMjUsIDEzMCwgMTM1LCAxNTEsDQorICAgMTU2LCAxNjEsIDE2NiwgIDU2LCAgODcsIDEyMSwgMTUyLCAgNjEsICA5MiwgMTI2LA0KKyAgIDE1NywgIDY2LCAgOTcsIDEzMSwgMTYyLCAgNzEsIDEwMiwgMTM2LCAxNjcsICA1NywNCisgICAgODgsIDEyMiwgMTUzLCAgNjIsICA5MywgMTI3LCAxNTgsICA2NywgIDk4LCAxMzIsDQorICAgMTYzLCAgNzIsIDEwMywgMTM3LCAxNjgsICA1OCwgIDg5LCAxMjMsIDE1NCwgIDYzLA0KKyAgICA5NCwgMTI4LCAxNTksICA2OCwgIDk5LCAxMzMsIDE2NCwgIDczLCAxMDQsIDEzOCwNCisgICAxNjksICA1OSwgIDkwLCAxMjQsIDE1NSwgIDY0LCAgOTUsIDEyOSwgMTYwLCAgNjksDQorICAgMTAwLCAxMzQsIDE2NSwgIDc0LCAxMDUsIDEzOSwgMTcwDQorfTsNCisNCitzdGF0aWMgV29yZDE2IHNvcnRfMTI2NVsyNTNdID0gew0KKyAgICAgMCwgICA0LCAgIDYsICA5MywgMTQzLCAxOTYsIDI0NiwgICA3LCAgIDUsICAgMywNCisgICAgNDcsICA0OCwgIDQ5LCAgNTAsICA1MSwgMTUwLCAxNTEsIDE1MiwgMTUzLCAxNTQsDQorICAgIDk0LCAxNDQsIDE5NywgMjQ3LCAgOTksIDE0OSwgMjAyLCAyNTIsICA5NiwgMTQ2LA0KKyAgIDE5OSwgMjQ5LCAgOTcsIDE0NywgMjAwLCAyNTAsIDEwMCwgMjAzLCAgOTgsIDE0OCwNCisgICAyMDEsIDI1MSwgIDk1LCAxNDUsIDE5OCwgMjQ4LCAgNTIsICAgMiwgICAxLCAxMDEsDQorICAgMjA0LCAxNTUsICAxOSwgIDIxLCAgMTIsICAxNywgIDE4LCAgMjAsICAxNiwgIDI1LA0KKyAgICAxMywgIDEwLCAgMTQsICAyNCwgIDIzLCAgMjIsICAyNiwgICA4LCAgMTUsICA1MywNCisgICAxNTYsICAzMSwgMTAyLCAyMDUsICAgOSwgIDMzLCAgMTEsIDEwMywgMjA2LCAgNTQsDQorICAgMTU3LCAgMjgsICAyNywgMTA0LCAyMDcsICAzNCwgIDM1LCAgMjksICA0NiwgIDMyLA0KKyAgICAzMCwgIDU1LCAxNTgsICAzNywgIDM2LCAgMzksICAzOCwgIDQwLCAxMDUsIDIwOCwNCisgICAgNDEsICA0MiwgIDQzLCAgNDQsICA0NSwgIDU2LCAxMDYsIDE1OSwgMjA5LCAgNTcsDQorICAgIDY2LCAgNzUsICA4NCwgMTA3LCAxMTYsIDEyNSwgMTM0LCAxNjAsIDE2OSwgMTc4LA0KKyAgIDE4NywgMjEwLCAyMTksIDIyOCwgMjM3LCAgNTgsIDEwOCwgMTYxLCAyMTEsICA2MiwNCisgICAxMTIsIDE2NSwgMjE1LCAgNjcsIDExNywgMTcwLCAyMjAsICA3MSwgMTIxLCAxNzQsDQorICAgMjI0LCAgNzYsIDEyNiwgMTc5LCAyMjksICA4MCwgMTMwLCAxODMsIDIzMywgIDg1LA0KKyAgIDEzNSwgMTg4LCAyMzgsICA4OSwgMTM5LCAxOTIsIDI0MiwgIDU5LCAxMDksIDE2MiwNCisgICAyMTIsICA2MywgMTEzLCAxNjYsIDIxNiwgIDY4LCAxMTgsIDE3MSwgMjIxLCAgNzIsDQorICAgMTIyLCAxNzUsIDIyNSwgIDc3LCAxMjcsIDE4MCwgMjMwLCAgODEsIDEzMSwgMTg0LA0KKyAgIDIzNCwgIDg2LCAxMzYsIDE4OSwgMjM5LCAgOTAsIDE0MCwgMTkzLCAyNDMsICA2MCwNCisgICAxMTAsIDE2MywgMjEzLCAgNjQsIDExNCwgMTY3LCAyMTcsICA2OSwgMTE5LCAxNzIsDQorICAgMjIyLCAgNzMsIDEyMywgMTc2LCAyMjYsICA3OCwgMTI4LCAxODEsIDIzMSwgIDgyLA0KKyAgIDEzMiwgMTg1LCAyMzUsICA4NywgMTM3LCAxOTAsIDI0MCwgIDkxLCAxNDEsIDE5NCwNCisgICAyNDQsICA2MSwgMTExLCAxNjQsIDIxNCwgIDY1LCAxMTUsIDE2OCwgMjE4LCAgNzAsDQorICAgMTIwLCAxNzMsIDIyMywgIDc0LCAxMjQsIDE3NywgMjI3LCAgNzksIDEyOSwgMTgyLA0KKyAgIDIzMiwgIDgzLCAxMzMsIDE4NiwgMjM2LCAgODgsIDEzOCwgMTkxLCAyNDEsICA5MiwNCisgICAxNDIsIDE5NSwgMjQ1ICAgICAgICAgICAgICAgICAgICAgICAgIA0KK307DQorDQorc3RhdGljIFdvcmQxNiBzb3J0XzE0MjVbMjg1XSA9IHsNCisgICAgIDAsICAgNCwgICA2LCAxMDEsIDE1OSwgMjIwLCAyNzgsICAgNywgICA1LCAgIDMsDQorICAgIDQ3LCAgNDgsICA0OSwgIDUwLCAgNTEsIDE2NiwgMTY3LCAxNjgsIDE2OSwgMTcwLA0KKyAgIDEwMiwgMTYwLCAyMjEsIDI3OSwgMTA3LCAxNjUsIDIyNiwgMjg0LCAxMDQsIDE2MiwNCisgICAyMjMsIDI4MSwgMTA1LCAxNjMsIDIyNCwgMjgyLCAxMDgsIDIyNywgMTA2LCAxNjQsDQorICAgMjI1LCAyODMsIDEwMywgMTYxLCAyMjIsIDI4MCwgIDUyLCAgIDIsICAgMSwgMTA5LA0KKyAgIDIyOCwgMTcxLCAgMTksICAyMSwgIDEyLCAgMTcsICAxOCwgIDIwLCAgMTYsICAyNSwNCisgICAgMTMsICAxMCwgIDE0LCAgMjQsICAyMywgIDIyLCAgMjYsICAgOCwgIDE1LCAgNTMsDQorICAgMTcyLCAgMzEsIDExMCwgMjI5LCAgIDksICAzMywgIDExLCAxMTEsIDIzMCwgIDU0LA0KKyAgIDE3MywgIDI4LCAgMjcsIDExMiwgMjMxLCAgMzQsICAzNSwgIDI5LCAgNDYsICAzMiwNCisgICAgMzAsICA1NSwgMTc0LCAgMzcsICAzNiwgIDM5LCAgMzgsICA0MCwgMTEzLCAyMzIsDQorICAgIDQxLCAgNDIsICA0MywgIDQ0LCAgNDUsICA1NiwgMTE0LCAxNzUsIDIzMywgIDYyLA0KKyAgIDEyMCwgMTgxLCAyMzksICA3NSwgMTMzLCAxOTQsIDI1MiwgIDU3LCAxMTUsIDE3NiwNCisgICAyMzQsICA2MywgMTIxLCAxODIsIDI0MCwgIDcwLCAxMjgsIDE4OSwgMjQ3LCAgNzYsDQorICAgMTM0LCAxOTUsIDI1MywgIDgzLCAxNDEsIDIwMiwgMjYwLCAgOTIsIDE1MCwgMjExLA0KKyAgIDI2OSwgIDg0LCAxNDIsIDIwMywgMjYxLCAgOTMsIDE1MSwgMjEyLCAyNzAsICA4NSwNCisgICAxNDMsIDIwNCwgMjYyLCAgOTQsIDE1MiwgMjEzLCAyNzEsICA4NiwgMTQ0LCAyMDUsDQorICAgMjYzLCAgOTUsIDE1MywgMjE0LCAyNzIsICA2NCwgMTIyLCAxODMsIDI0MSwgIDc3LA0KKyAgIDEzNSwgMTk2LCAyNTQsICA2NSwgMTIzLCAxODQsIDI0MiwgIDc4LCAxMzYsIDE5NywNCisgICAyNTUsICA4NywgMTQ1LCAyMDYsIDI2NCwgIDk2LCAxNTQsIDIxNSwgMjczLCAgNTgsDQorICAgMTE2LCAxNzcsIDIzNSwgIDY2LCAxMjQsIDE4NSwgMjQzLCAgNzEsIDEyOSwgMTkwLA0KKyAgIDI0OCwgIDc5LCAxMzcsIDE5OCwgMjU2LCAgODgsIDE0NiwgMjA3LCAyNjUsICA5NywNCisgICAxNTUsIDIxNiwgMjc0LCAgNTksIDExNywgMTc4LCAyMzYsICA2NywgMTI1LCAxODYsDQorICAgMjQ0LCAgNzIsIDEzMCwgMTkxLCAyNDksICA4MCwgMTM4LCAxOTksIDI1NywgIDg5LA0KKyAgIDE0NywgMjA4LCAyNjYsICA5OCwgMTU2LCAyMTcsIDI3NSwgIDYwLCAxMTgsIDE3OSwNCisgICAyMzcsICA2OCwgMTI2LCAxODcsIDI0NSwgIDczLCAxMzEsIDE5MiwgMjUwLCAgODEsDQorICAgMTM5LCAyMDAsIDI1OCwgIDkwLCAxNDgsIDIwOSwgMjY3LCAgOTksIDE1NywgMjE4LA0KKyAgIDI3NiwgIDYxLCAxMTksIDE4MCwgMjM4LCAgNjksIDEyNywgMTg4LCAyNDYsICA3NCwNCisgICAxMzIsIDE5MywgMjUxLCAgODIsIDE0MCwgMjAxLCAyNTksICA5MSwgMTQ5LCAyMTAsDQorICAgMjY4LCAxMDAsIDE1OCwgMjE5LCAyNzcNCit9Ow0KKw0KK3N0YXRpYyBXb3JkMTYgc29ydF8xNTg1WzMxN10gPSB7DQorICAgICAwLCAgIDQsICAgNiwgMTA5LCAxNzUsIDI0NCwgMzEwLCAgIDcsICAgNSwgICAzLA0KKyAgICA0NywgIDQ4LCAgNDksICA1MCwgIDUxLCAxODIsIDE4MywgMTg0LCAxODUsIDE4NiwNCisgICAxMTAsIDE3NiwgMjQ1LCAzMTEsIDExNSwgMTgxLCAyNTAsIDMxNiwgMTEyLCAxNzgsDQorICAgMjQ3LCAzMTMsIDExMywgMTc5LCAyNDgsIDMxNCwgMTE2LCAyNTEsIDExNCwgMTgwLA0KKyAgIDI0OSwgMzE1LCAxMTEsIDE3NywgMjQ2LCAzMTIsICA1MiwgICAyLCAgIDEsIDExNywNCisgICAyNTIsIDE4NywgIDE5LCAgMjEsICAxMiwgIDE3LCAgMTgsICAyMCwgIDE2LCAgMjUsDQorICAgIDEzLCAgMTAsICAxNCwgIDI0LCAgMjMsICAyMiwgIDI2LCAgIDgsICAxNSwgIDUzLA0KKyAgIDE4OCwgIDMxLCAxMTgsIDI1MywgICA5LCAgMzMsICAxMSwgMTE5LCAyNTQsICA1NCwNCisgICAxODksICAyOCwgIDI3LCAxMjAsIDI1NSwgIDM0LCAgMzUsICAyOSwgIDQ2LCAgMzIsDQorICAgIDMwLCAgNTUsIDE5MCwgIDM3LCAgMzYsICAzOSwgIDM4LCAgNDAsIDEyMSwgMjU2LA0KKyAgICA0MSwgIDQyLCAgNDMsICA0NCwgIDQ1LCAgNTYsIDEyMiwgMTkxLCAyNTcsICA2MywNCisgICAxMjksIDE5OCwgMjY0LCAgNzYsIDE0MiwgMjExLCAyNzcsICA4OSwgMTU1LCAyMjQsDQorICAgMjkwLCAxMDIsIDE2OCwgMjM3LCAzMDMsICA1NywgMTIzLCAxOTIsIDI1OCwgIDcwLA0KKyAgIDEzNiwgMjA1LCAyNzEsICA4MywgMTQ5LCAyMTgsIDI4NCwgIDk2LCAxNjIsIDIzMSwNCisgICAyOTcsICA2MiwgMTI4LCAxOTcsIDI2MywgIDc1LCAxNDEsIDIxMCwgMjc2LCAgODgsDQorICAgMTU0LCAyMjMsIDI4OSwgMTAxLCAxNjcsIDIzNiwgMzAyLCAgNTgsIDEyNCwgMTkzLA0KKyAgIDI1OSwgIDcxLCAxMzcsIDIwNiwgMjcyLCAgODQsIDE1MCwgMjE5LCAyODUsICA5NywNCisgICAxNjMsIDIzMiwgMjk4LCAgNTksIDEyNSwgMTk0LCAyNjAsICA2NCwgMTMwLCAxOTksDQorICAgMjY1LCAgNjcsIDEzMywgMjAyLCAyNjgsICA3MiwgMTM4LCAyMDcsIDI3MywgIDc3LA0KKyAgIDE0MywgMjEyLCAyNzgsICA4MCwgMTQ2LCAyMTUsIDI4MSwgIDg1LCAxNTEsIDIyMCwNCisgICAyODYsICA5MCwgMTU2LCAyMjUsIDI5MSwgIDkzLCAxNTksIDIyOCwgMjk0LCAgOTgsDQorICAgMTY0LCAyMzMsIDI5OSwgMTAzLCAxNjksIDIzOCwgMzA0LCAxMDYsIDE3MiwgMjQxLA0KKyAgIDMwNywgIDYwLCAxMjYsIDE5NSwgMjYxLCAgNjUsIDEzMSwgMjAwLCAyNjYsICA2OCwNCisgICAxMzQsIDIwMywgMjY5LCAgNzMsIDEzOSwgMjA4LCAyNzQsICA3OCwgMTQ0LCAyMTMsDQorICAgMjc5LCAgODEsIDE0NywgMjE2LCAyODIsICA4NiwgMTUyLCAyMjEsIDI4NywgIDkxLA0KKyAgIDE1NywgMjI2LCAyOTIsICA5NCwgMTYwLCAyMjksIDI5NSwgIDk5LCAxNjUsIDIzNCwNCisgICAzMDAsIDEwNCwgMTcwLCAyMzksIDMwNSwgMTA3LCAxNzMsIDI0MiwgMzA4LCAgNjEsDQorICAgMTI3LCAxOTYsIDI2MiwgIDY2LCAxMzIsIDIwMSwgMjY3LCAgNjksIDEzNSwgMjA0LA0KKyAgIDI3MCwgIDc0LCAxNDAsIDIwOSwgMjc1LCAgNzksIDE0NSwgMjE0LCAyODAsICA4MiwNCisgICAxNDgsIDIxNywgMjgzLCAgODcsIDE1MywgMjIyLCAyODgsICA5MiwgMTU4LCAyMjcsDQorICAgMjkzLCAgOTUsIDE2MSwgMjMwLCAyOTYsIDEwMCwgMTY2LCAyMzUsIDMwMSwgMTA1LA0KKyAgIDE3MSwgMjQwLCAzMDYsIDEwOCwgMTc0LCAyNDMsIDMwOQ0KK307DQorDQorc3RhdGljIFdvcmQxNiBzb3J0XzE4MjVbMzY1XSA9IHsNCisgICAgIDAsICAgNCwgICA2LCAxMjEsIDE5OSwgMjgwLCAzNTgsICAgNywgICA1LCAgIDMsDQorICAgIDQ3LCAgNDgsICA0OSwgIDUwLCAgNTEsIDIwNiwgMjA3LCAyMDgsIDIwOSwgMjEwLA0KKyAgIDEyMiwgMjAwLCAyODEsIDM1OSwgMTI3LCAyMDUsIDI4NiwgMzY0LCAxMjQsIDIwMiwNCisgICAyODMsIDM2MSwgMTI1LCAyMDMsIDI4NCwgMzYyLCAxMjgsIDI4NywgMTI2LCAyMDQsDQorICAgMjg1LCAzNjMsIDEyMywgMjAxLCAyODIsIDM2MCwgIDUyLCAgIDIsICAgMSwgMTI5LA0KKyAgIDI4OCwgMjExLCAgMTksICAyMSwgIDEyLCAgMTcsICAxOCwgIDIwLCAgMTYsICAyNSwNCisgICAgMTMsICAxMCwgIDE0LCAgMjQsICAyMywgIDIyLCAgMjYsICAgOCwgIDE1LCAgNTMsDQorICAgMjEyLCAgMzEsIDEzMCwgMjg5LCAgIDksICAzMywgIDExLCAxMzEsIDI5MCwgIDU0LA0KKyAgIDIxMywgIDI4LCAgMjcsIDEzMiwgMjkxLCAgMzQsICAzNSwgIDI5LCAgNDYsICAzMiwNCisgICAgMzAsICA1NSwgMjE0LCAgMzcsICAzNiwgIDM5LCAgMzgsICA0MCwgMTMzLCAyOTIsDQorICAgIDQxLCAgNDIsICA0MywgIDQ0LCAgNDUsICA1NiwgMTM0LCAyMTUsIDI5MywgMTk4LA0KKyAgIDI5OSwgMTM2LCAxMjAsIDEzOCwgIDYwLCAyNzksICA1OCwgIDYyLCAzNTcsIDEzOSwNCisgICAxNDAsIDI5NSwgMTU2LCAgNTcsIDIxOSwgMjk3LCAgNjMsIDIxNywgMTM3LCAxNzAsDQorICAgMzAwLCAyMjIsICA2NCwgMTA2LCAgNjEsICA3OCwgMjk0LCAgOTIsIDE0MiwgMTQxLA0KKyAgIDEzNSwgMjIxLCAyOTYsIDMwMSwgMzQzLCAgNTksIDI5OCwgMTg0LCAzMjksIDMxNSwNCisgICAyMjAsIDIxNiwgMjY1LCAyNTEsIDIxOCwgMjM3LCAzNTIsIDIyMywgMTU3LCAgODYsDQorICAgMTcxLCAgODcsIDE2NCwgMzUxLCAxMTEsIDMwMiwgIDY1LCAxNzgsIDExNSwgMzIzLA0KKyAgICA3MiwgMTkyLCAxMDEsIDE3OSwgIDkzLCAgNzMsIDE5MywgMTUxLCAzMzcsIDMwOSwNCisgICAxNDMsIDI3NCwgIDY5LCAzMjQsIDE2NSwgMTUwLCAgOTcsIDMzOCwgMTEwLCAzMTAsDQorICAgMzMwLCAyNzMsICA2OCwgMTA3LCAxNzUsIDI0NSwgMTE0LCAgNzksIDExMywgMTg5LA0KKyAgIDI0NiwgMjU5LCAxNzQsICA3MSwgMTg1LCAgOTYsIDM0NCwgMTAwLCAzMjIsICA4MywNCisgICAzMzQsIDMxNiwgMzMzLCAyNTIsIDE2MSwgMzQ4LCAxNDcsICA4MiwgMjY5LCAyMzIsDQorICAgMjYwLCAzMDgsIDM1MywgMzQ3LCAxNjMsIDIzMSwgMzA2LCAzMjAsIDE4OCwgMjcwLA0KKyAgIDE0NiwgMTc3LCAyNjYsIDM1MCwgMjU2LCAgODUsIDE0OSwgMTE2LCAxOTEsIDE2MCwNCisgICAyMzgsIDI1OCwgMzM2LCAzMDUsIDI1NSwgIDg4LCAyMjQsICA5OSwgMzM5LCAyMzAsDQorICAgMjI4LCAyMjcsIDI3MiwgMjQyLCAyNDEsIDMxOSwgMjMzLCAzMTEsIDEwMiwgIDc0LA0KKyAgIDE4MCwgMjc1LCAgNjYsIDE5NCwgMTUyLCAzMjUsIDE3MiwgMjQ3LCAyNDQsIDI2MSwNCisgICAxMTcsIDE1OCwgMTY2LCAzNTQsICA3NSwgMTQ0LCAxMDgsIDMxMiwgIDk0LCAxODYsDQorICAgMzAzLCAgODAsIDIzNCwgIDg5LCAxOTUsIDExMiwgMzQwLCAxODEsIDM0NSwgMzE3LA0KKyAgIDMyNiwgMjc2LCAyMzksIDE2NywgMTE4LCAzMTMsICA3MCwgMzU1LCAzMjcsIDI1MywNCisgICAxOTAsIDE3NiwgMjcxLCAxMDQsICA5OCwgMTUzLCAxMDMsICA5MCwgIDc2LCAyNjcsDQorICAgMjc3LCAyNDgsIDIyNSwgMjYyLCAxODIsICA4NCwgMTU0LCAyMzUsIDMzNSwgMTY4LA0KKyAgIDMzMSwgMTk2LCAzNDEsIDI0OSwgMTYyLCAzMDcsIDE0OCwgMzQ5LCAyNjMsIDMyMSwNCisgICAyNTcsIDI0MywgMjI5LCAzNTYsIDE1OSwgMTE5LCAgNjcsIDE4NywgMTczLCAxNDUsDQorICAgMjQwLCAgNzcsIDMwNCwgMzMyLCAzMTQsIDM0MiwgMTA5LCAyNTQsICA4MSwgMjc4LA0KKyAgIDEwNSwgIDkxLCAzNDYsIDMxOCwgMTgzLCAyNTAsIDE5NywgMzI4LCAgOTUsIDE1NSwNCisgICAxNjksIDI2OCwgMjI2LCAyMzYsIDI2NCAgICAgICAgICAgICAgICAgDQorfTsNCisNCitzdGF0aWMgV29yZDE2IHNvcnRfMTk4NVszOTddID0gew0KKyAgICAgMCwgICA0LCAgIDYsIDEyOSwgMjE1LCAzMDQsIDM5MCwgICA3LCAgIDUsICAgMywNCisgICAgNDcsICA0OCwgIDQ5LCAgNTAsICA1MSwgMjIyLCAyMjMsIDIyNCwgMjI1LCAyMjYsDQorICAgMTMwLCAyMTYsIDMwNSwgMzkxLCAxMzUsIDIyMSwgMzEwLCAzOTYsIDEzMiwgMjE4LA0KKyAgIDMwNywgMzkzLCAxMzMsIDIxOSwgMzA4LCAzOTQsIDEzNiwgMzExLCAxMzQsIDIyMCwNCisgICAzMDksIDM5NSwgMTMxLCAyMTcsIDMwNiwgMzkyLCAgNTIsICAgMiwgICAxLCAxMzcsDQorICAgMzEyLCAyMjcsICAxOSwgIDIxLCAgMTIsICAxNywgIDE4LCAgMjAsICAxNiwgIDI1LA0KKyAgICAxMywgIDEwLCAgMTQsICAyNCwgIDIzLCAgMjIsICAyNiwgICA4LCAgMTUsICA1MywNCisgICAyMjgsICAzMSwgMTM4LCAzMTMsICAgOSwgIDMzLCAgMTEsIDEzOSwgMzE0LCAgNTQsDQorICAgMjI5LCAgMjgsICAyNywgMTQwLCAzMTUsICAzNCwgIDM1LCAgMjksICA0NiwgIDMyLA0KKyAgICAzMCwgIDU1LCAyMzAsICAzNywgIDM2LCAgMzksICAzOCwgIDQwLCAxNDEsIDMxNiwNCisgICAgNDEsICA0MiwgIDQzLCAgNDQsICA0NSwgIDU2LCAxNDIsIDIzMSwgMzE3LCAgNjMsDQorICAgIDczLCAgOTIsIDM0MCwgIDgyLCAzMjQsIDE0OSwgMzUzLCAxNTksIDMzNCwgMTY1LA0KKyAgIDMzOCwgMTc4LCAxNjMsIDI1NCwgIDc3LCAxNjgsIDI1NywgMTUzLCAzNDMsICA1NywNCisgICAyNDgsIDIzOCwgIDc5LCAyNTIsIDE2NiwgIDY3LCAgODAsIDIwMSwgMTAxLCAyNjcsDQorICAgMTQzLCAxNjQsIDM0MSwgMjU1LCAzMzksIDE4NywgMzc2LCAzMTgsICA3OCwgMzI4LA0KKyAgIDM2MiwgMTE1LCAyMzIsIDI0MiwgMjUzLCAyOTAsIDI3NiwgIDYyLCAgNTgsIDE1OCwNCisgICAgNjgsICA5MywgMTc5LCAzMTksIDE0OCwgMTY5LCAxNTQsICA3MiwgMzg1LCAzMjksDQorICAgMzMzLCAzNDQsIDEwMiwgIDgzLCAxNDQsIDIzMywgMzIzLCAxMjQsIDI0MywgMTkyLA0KKyAgIDM1NCwgMjM3LCAgNjQsIDI0NywgMjAyLCAyMDksIDE1MCwgMTE2LCAzMzUsIDI2OCwNCisgICAyMzksIDI5OSwgMTg4LCAxOTYsIDI5OCwgIDk0LCAxOTUsIDI1OCwgMTIzLCAzNjMsDQorICAgMzg0LCAxMDksIDMyNSwgMzcxLCAxNzAsIDM3MCwgIDg0LCAxMTAsIDI5NSwgMTgwLA0KKyAgICA3NCwgMjEwLCAxOTEsIDEwNiwgMjkxLCAyMDUsIDM2NywgMzgxLCAzNzcsIDIwNiwNCisgICAzNTUsIDEyMiwgMTE5LCAxMjAsIDM4MywgMTYwLCAxMDUsIDEwOCwgMjc3LCAzODAsDQorICAgMjk0LCAyODQsIDI4NSwgMzQ1LCAyMDgsIDI2OSwgMjQ5LCAzNjYsIDM4NiwgMzAwLA0KKyAgIDI5NywgMjU5LCAxMjUsIDM2OSwgMTk3LCAgOTcsIDE5NCwgMjg2LCAyMTEsIDI4MSwNCisgICAyODAsIDE4MywgMzcyLCAgODcsIDE1NSwgMjgzLCAgNTksIDM0OCwgMzI3LCAxODQsDQorICAgIDc2LCAxMTEsIDMzMCwgMjAzLCAzNDksICA2OSwgIDk4LCAxNTIsIDE0NSwgMTg5LA0KKyAgICA2NiwgMzIwLCAzMzcsIDE3MywgMzU4LCAyNTEsIDE5OCwgMTc0LCAyNjMsIDI2MiwNCisgICAxMjYsIDI0MSwgMTkzLCAgODgsIDM4OCwgMTE3LCAgOTUsIDM4NywgMTEyLCAzNTksDQorICAgMjg3LCAyNDQsIDEwMywgMjcyLCAzMDEsIDE3MSwgMTYyLCAyMzQsIDI3MywgMTI3LA0KKyAgIDM3MywgMTgxLCAyOTIsICA4NSwgMzc4LCAzMDIsIDEyMSwgMTA3LCAzNjQsIDM0NiwNCisgICAzNTYsIDIxMiwgMjc4LCAyMTMsICA2NSwgMzgyLCAyODgsIDIwNywgMTEzLCAxNzUsDQorICAgIDk5LCAyOTYsIDM3NCwgMzY4LCAxOTksIDI2MCwgMTg1LCAzMzYsIDMzMSwgMTYxLA0KKyAgIDI3MCwgMjY0LCAyNTAsIDI0MCwgIDc1LCAzNTAsIDE1MSwgIDYwLCAgODksIDMyMSwNCisgICAxNTYsIDI3NCwgMzYwLCAzMjYsICA3MCwgMjgyLCAxNjcsIDE0NiwgMzUyLCAgODEsDQorICAgIDkxLCAzODksIDI2NiwgMjQ1LCAxNzcsIDIzNSwgMTkwLCAyNTYsIDIwNCwgMzQyLA0KKyAgIDEyOCwgMTE4LCAzMDMsIDEwNCwgMzc5LCAxODIsIDExNCwgMzc1LCAyMDAsICA5NiwNCisgICAyOTMsIDE3MiwgMjE0LCAzNjUsIDI3OSwgIDg2LCAyODksIDM1MSwgMzQ3LCAzNTcsDQorICAgMjYxLCAxODYsIDE3NiwgMjcxLCAgOTAsIDEwMCwgMTQ3LCAzMjIsIDI3NSwgMzYxLA0KKyAgICA3MSwgMzMyLCAgNjEsIDI2NSwgMTU3LCAyNDYsIDIzNiAgICAgICAgIA0KK307DQorDQorc3RhdGljIFdvcmQxNiBzb3J0XzIzMDVbNDYxXSA9IHsNCisgICAgIDAsICAgNCwgICA2LCAxNDUsIDI0NywgMzUyLCA0NTQsICAgNywgICA1LCAgIDMsDQorICAgIDQ3LCAgNDgsICA0OSwgIDUwLCAgNTEsIDI1NCwgMjU1LCAyNTYsIDI1NywgMjU4LA0KKyAgIDE0NiwgMjQ4LCAzNTMsIDQ1NSwgMTUxLCAyNTMsIDM1OCwgNDYwLCAxNDgsIDI1MCwNCisgICAzNTUsIDQ1NywgMTQ5LCAyNTEsIDM1NiwgNDU4LCAxNTIsIDM1OSwgMTUwLCAyNTIsDQorICAgMzU3LCA0NTksIDE0NywgMjQ5LCAzNTQsIDQ1NiwgIDUyLCAgIDIsICAgMSwgMTUzLA0KKyAgIDM2MCwgMjU5LCAgMTksICAyMSwgIDEyLCAgMTcsICAxOCwgIDIwLCAgMTYsICAyNSwNCisgICAgMTMsICAxMCwgIDE0LCAgMjQsICAyMywgIDIyLCAgMjYsICAgOCwgIDE1LCAgNTMsDQorICAgMjYwLCAgMzEsIDE1NCwgMzYxLCAgIDksICAzMywgIDExLCAxNTUsIDM2MiwgIDU0LA0KKyAgIDI2MSwgIDI4LCAgMjcsIDE1NiwgMzYzLCAgMzQsICAzNSwgIDI5LCAgNDYsICAzMiwNCisgICAgMzAsICA1NSwgMjYyLCAgMzcsICAzNiwgIDM5LCAgMzgsICA0MCwgMTU3LCAzNjQsDQorICAgIDQxLCAgNDIsICA0MywgIDQ0LCAgNDUsICA1NiwgMTU4LCAyNjMsIDM2NSwgMTgxLA0KKyAgIDE5MiwgMTcwLCAgNzksICA1NywgMzk5LCAgOTAsIDE1OSwgMjk3LCAzNzcsIDM2NiwNCisgICAyNzUsICA2OCwgMTgzLCAzODgsIDI4NiwgMTk0LCAyOTksIDkyICwgIDcwLCAxODIsDQorICAgNDAxLCAxNzIsICA1OSwgIDkxLCAgNTgsIDQwMCwgMzY4LCAxNjEsICA4MSwgMTYwLA0KKyAgIDI2NCwgMTcxLCAgODAsIDM4OSwgMzkwLCAzNzgsIDM3OSwgMTkzLCAyOTgsICA2OSwNCisgICAyNjYsIDI2NSwgMzY3LCAyNzcsIDI4OCwgMjc2LCAyODcsIDE4NCwgIDYwLCAxOTUsDQorICAgIDgyLCAgOTMsICA3MSwgMzY5LCA0MDIsIDE3MywgMTYyLCA0NDQsIDMwMCwgMzkxLA0KKyAgICA5OCwgIDc2LCAyNzgsICA2MSwgMjY3LCAzNzQsIDEzNSwgNDExLCAxNjcsIDEwMiwNCisgICAzODAsIDIwMCwgIDg3LCAxNzgsICA2NSwgIDk0LCAyMDQsIDEyNCwgIDcyLCAzNDIsDQorICAgMTg5LCAzMDUsIDM4MSwgMzk2LCA0MzMsIDMwMSwgMjI2LCA0MDcsIDI4OSwgMjM3LA0KKyAgIDExMywgMjE1LCAxODUsIDEyOCwgMzA5LCA0MDMsIDExNiwgMzIwLCAxOTYsIDMzMSwNCisgICAzNzAsIDQyMiwgMTc0LCAgNjQsIDM5MiwgIDgzLCA0MjUsIDIxOSwgMTM0LCAxODgsDQorICAgNDMyLCAxMTIsIDQyNywgMTM5LCAyNzksIDE2MywgNDM2LCAyMDgsIDQ0NywgMjE4LA0KKyAgIDIzNiwgMjI5LCAgOTcsIDI5NCwgMzg1LCAyMzAsIDE2NiwgMjY4LCAxNzcsIDQ0MywNCisgICAyMjUsIDQyNiwgMTAxLCAyNzIsIDEzOCwgMTI3LCAyOTAsIDExNywgMzQ3LCAxOTksDQorICAgNDE0LCAgOTUsIDE0MCwgMjQwLCA0MTAsIDM5NSwgMjA5LCAxMjksIDI4MywgMzQ2LA0KKyAgIDEwNSwgMjQxLCA0MzcsICA4NiwgMzA4LCA0NDgsIDIwMywgMzQ1LCAxODYsIDEwNywNCisgICAyMjAsIDQxNSwgMzM0LCAzMTksIDEwNiwgMzEzLCAxMTgsIDEyMywgIDczLCAyMDcsDQorICAgNDIxLCAyMTQsIDM4NCwgMzczLCA0MzgsICA2MiwgMzcxLCAzNDEsICA3NSwgNDQ5LA0KKyAgIDE2OCwgMzIzLCAxNjQsIDI0MiwgNDE2LCAzMjQsIDMwNCwgMTk3LCAzMzUsIDQwNCwNCisgICAyNzEsICA2MywgMTkxLCAzMjUsICA5NiwgMTY5LCAyMzEsIDI4MCwgMzEyLCAxODcsDQorICAgNDA2LCAgODQsIDIwMSwgMTAwLCAgNjcsIDM4MiwgMTc1LCAzMzYsIDIwMiwgMzMwLA0KKyAgIDI2OSwgMzkzLCAzNzYsIDM4MywgMjkzLCAzMDcsIDQwOSwgMTc5LCAyODUsIDMxNCwNCisgICAzMDIsIDM3MiwgMzk4LCAxOTAsIDE4MCwgIDg5LCAgOTksIDEwMywgMjMyLCAgNzgsDQorICAgIDg4LCAgNzcsIDEzNiwgMzg3LCAxNjUsIDE5OCwgMzk0LCAxMjUsIDE3NiwgNDI4LA0KKyAgICA3NCwgMzc1LCAyMzgsIDIyNywgIDY2LCAyNzMsIDI4MiwgMTQxLCAzMDYsIDQxMiwNCisgICAxMTQsICA4NSwgMTMwLCAzNDgsIDExOSwgMjkxLCAyOTYsIDM4NiwgMjMzLCAzOTcsDQorICAgMzAzLCA0MDUsIDI4NCwgNDQ1LCA0MjMsIDIyMSwgMjEwLCAyMDUsIDQ1MCwgMTA4LA0KKyAgIDI3NCwgNDM0LCAyMTYsIDM0MywgMzM3LCAxNDIsIDI0MywgMzIxLCA0MDgsIDQ1MSwNCisgICAzMTAsIDI5MiwgMTIwLCAxMDksIDI4MSwgNDM5LCAyNzAsIDQyOSwgMzMyLCAyOTUsDQorICAgNDE4LCAyMTEsIDMxNSwgMjIyLCAzMjYsIDEzMSwgNDMwLCAyNDQsIDMyNywgMzQ5LA0KKyAgIDQxNywgMzE2LCAxNDMsIDMzOCwgNDQwLCAyMzQsIDExMCwgMjEyLCA0NTIsIDI0NSwNCisgICAxMjEsIDQxOSwgMzUwLCAyMjMsIDEzMiwgNDQxLCAzMjgsIDQxMywgMzE3LCAzMzksDQorICAgMTI2LCAxMDQsIDEzNywgNDQ2LCAzNDQsIDIzOSwgNDM1LCAxMTUsIDMzMywgMjA2LA0KKyAgIDMyMiwgMjE3LCAyMjgsIDQyNCwgNDUzLCAzMTEsIDM1MSwgMTExLCA0NDIsIDIyNCwNCisgICAyMTMsIDEyMiwgNDMxLCAzNDAsIDIzNSwgMjQ2LCAxMzMsIDE0NCwgNDIwLCAzMjksDQorICAgMzE4DQorfTsNCisNCitzdGF0aWMgV29yZDE2IHNvcnRfMjM4NVs0NzddID0gew0KKyAgICAgMCwgICA0LCAgIDYsIDE0NSwgMjUxLCAzNjAsIDQ2NiwgICA3LCAgIDUsICAgMywNCisgICAgNDcsICA0OCwgIDQ5LCAgNTAsICA1MSwgMjYyLCAyNjMsIDI2NCwgMjY1LCAyNjYsDQorICAgMTQ2LCAyNTIsIDM2MSwgNDY3LCAxNTEsIDI1NywgMzY2LCA0NzIsIDE0OCwgMjU0LA0KKyAgIDM2MywgNDY5LCAxNDksIDI1NSwgMzY0LCA0NzAsIDE1NiwgMzcxLCAxNTAsIDI1NiwNCisgICAzNjUsIDQ3MSwgMTQ3LCAyNTMsIDM2MiwgNDY4LCAgNTIsICAgMiwgICAxLCAxNTcsDQorICAgMzcyLCAyNjcsICAxOSwgIDIxLCAgMTIsICAxNywgIDE4LCAgMjAsICAxNiwgIDI1LA0KKyAgICAxMywgIDEwLCAgMTQsICAyNCwgIDIzLCAgMjIsICAyNiwgICA4LCAgMTUsICA1MywNCisgICAyNjgsICAzMSwgMTUyLCAxNTMsIDE1NCwgMTU1LCAyNTgsIDI1OSwgMjYwLCAyNjEsDQorICAgMzY3LCAzNjgsIDM2OSwgMzcwLCA0NzMsIDQ3NCwgNDc1LCA0NzYsIDE1OCwgMzczLA0KKyAgICAgOSwgIDMzLCAgMTEsIDE1OSwgMzc0LCAgNTQsIDI2OSwgIDI4LCAgMjcsIDE2MCwNCisgICAzNzUsICAzNCwgIDM1LCAgMjksICA0NiwgIDMyLCAgMzAsICA1NSwgMjcwLCAzNywNCisgICAgMzYsICAzOSwgIDM4LCAgNDAsIDE2MSwgMzc2LCAgNDEsICA0MiwgIDQzLCAgNDQsDQorICAgIDQ1LCAgNTYsIDE2MiwgMjcxLCAzNzcsIDE4NSwgMTk2LCAxNzQsICA3OSwgIDU3LA0KKyAgIDQxMSwgIDkwLCAxNjMsIDMwNSwgMzg5LCAzNzgsIDI4MywgIDY4LCAxODcsIDQwMCwNCisgICAyOTQsIDE5OCwgMzA3LCAgOTIsICA3MCwgMTg2LCA0MTMsIDE3NiwgIDU5LCAgOTEsDQorICAgIDU4LCA0MTIsIDM4MCwgMTY1LCAgODEsIDE2NCwgMjcyLCAxNzUsICA4MCwgNDAxLA0KKyAgIDQwMiwgMzkwLCAzOTEsIDE5NywgMzA2LCAgNjksIDI3NCwgMjczLCAzNzksIDI4NSwNCisgICAyOTYsIDI4NCwgMjk1LCAxODgsICA2MCwgMTk5LCAgODIsICA5MywgIDcxLCAzODEsDQorICAgNDE0LCAxNzcsIDE2NiwgNDU2LCAzMDgsIDQwMywgIDk4LCAgNzYsIDI4NiwgIDYxLA0KKyAgIDI3NSwgMzg2LCAxMzUsIDQyMywgMTcxLCAxMDIsIDM5MiwgMjA0LCAgODcsIDE4MiwNCisgICAgNjUsICA5NCwgMjA4LCAxMjQsICA3MiwgMzUwLCAxOTMsIDMxMywgMzkzLCA0MDgsDQorICAgNDQ1LCAzMDksIDIzMCwgNDE5LCAyOTcsIDI0MSwgMTEzLCAyMTksIDE4OSwgMTI4LA0KKyAgIDMxNywgNDE1LCAxMTYsIDMyOCwgMjAwLCAzMzksIDM4MiwgNDM0LCAxNzgsICA2NCwNCisgICA0MDQsICA4MywgNDM3LCAyMjMsIDEzNCwgMTkyLCA0NDQsIDExMiwgNDM5LCAxMzksDQorICAgMjg3LCAxNjcsIDQ0OCwgMjEyLCA0NTksIDIyMiwgMjQwLCAyMzMsICA5NywgMzAyLA0KKyAgIDM5NywgMjM0LCAxNzAsIDI3NiwgMTgxLCA0NTUsIDIyOSwgNDM4LCAxMDEsIDI4MCwNCisgICAxMzgsIDEyNywgMjk4LCAxMTcsIDM1NSwgMjAzLCA0MjYsICA5NSwgMTQwLCAyNDQsDQorICAgNDIyLCA0MDcsIDIxMywgMTI5LCAyOTEsIDM1NCwgMTA1LCAyNDUsIDQ0OSwgIDg2LA0KKyAgIDMxNiwgNDYwLCAyMDcsIDM1MywgMTkwLCAxMDcsIDIyNCwgNDI3LCAzNDIsIDMyNywNCisgICAxMDYsIDMyMSwgMTE4LCAxMjMsICA3MywgMjExLCA0MzMsIDIxOCwgMzk2LCAzODUsDQorICAgNDUwLCAgNjIsIDM4MywgMzQ5LCAgNzUsIDQ2MSwgMTcyLCAzMzEsIDE2OCwgMjQ2LA0KKyAgIDQyOCwgMzMyLCAzMTIsIDIwMSwgMzQzLCA0MTYsIDI3OSwgIDYzLCAxOTUsIDMzMywNCisgICAgOTYsIDE3MywgMjM1LCAyODgsIDMyMCwgMTkxLCA0MTgsICA4NCwgMjA1LCAxMDAsDQorICAgIDY3LCAzOTQsIDE3OSwgMzQ0LCAyMDYsIDMzOCwgMjc3LCA0MDUsIDM4OCwgMzk1LA0KKyAgIDMwMSwgMzE1LCA0MjEsIDE4MywgMjkzLCAzMjIsIDMxMCwgMzg0LCA0MTAsIDE5NCwNCisgICAxODQsICA4OSwgIDk5LCAxMDMsIDIzNiwgIDc4LCAgODgsICA3NywgMTM2LCAzOTksDQorICAgMTY5LCAyMDIsIDQwNiwgMTI1LCAxODAsIDQ0MCwgIDc0LCAzODcsIDI0MiwgMjMxLA0KKyAgICA2NiwgMjgxLCAyOTAsIDE0MSwgMzE0LCA0MjQsIDExNCwgIDg1LCAxMzAsIDM1NiwNCisgICAxMTksIDI5OSwgMzA0LCAzOTgsIDIzNywgNDA5LCAzMTEsIDQxNywgMjkyLCA0NTcsDQorICAgNDM1LCAyMjUsIDIxNCwgMjA5LCA0NjIsIDEwOCwgMjgyLCA0NDYsIDIyMCwgMzUxLA0KKyAgIDM0NSwgMTQyLCAyNDcsIDMyOSwgNDIwLCA0NjMsIDMxOCwgMzAwLCAxMjAsIDEwOSwNCisgICAyODksIDQ1MSwgMjc4LCA0NDEsIDM0MCwgMzAzLCA0MzAsIDIxNSwgMzIzLCAyMjYsDQorICAgMzM0LCAxMzEsIDQ0MiwgMjQ4LCAzMzUsIDM1NywgNDI5LCAzMjQsIDE0MywgMzQ2LA0KKyAgIDQ1MiwgMjM4LCAxMTAsIDIxNiwgNDY0LCAyNDksIDEyMSwgNDMxLCAzNTgsIDIyNywNCisgICAxMzIsIDQ1MywgMzM2LCA0MjUsIDMyNSwgMzQ3LCAxMjYsIDEwNCwgMTM3LCA0NTgsDQorICAgMzUyLCAyNDMsIDQ0NywgMTE1LCAzNDEsIDIxMCwgMzMwLCAyMjEsIDIzMiwgNDM2LA0KKyAgIDQ2NSwgMzE5LCAzNTksIDExMSwgNDU0LCAyMjgsIDIxNywgMTIyLCA0NDMsIDM0OCwNCisgICAyMzksIDI1MCwgMTMzLCAxNDQsIDQzMiwgMzM3LCAzMjYgICAgICAgICANCit9Ow0KKw0KK3N0YXRpYyBXb3JkMTYgc29ydF9TSURbMzVdID0gew0KKyAgICAwLCAgMSwgIDIsICAzLCAgNCwgIDUsICA2LCAgNywgIDgsICA5LA0KKyAgIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAxNywgMTgsIDE5LA0KKyAgIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjUsIDI2LCAyNywgMjgsIDI5LA0KKyAgIDMwLCAzMSwgMzIsIDMzLCAzNA0KK307DQorDQorLyogcG9pbnRlciB0YWJsZSBmb3IgYml0IHNvcnRpbmcgdGFibGVzICovDQorc3RhdGljIFdvcmQxNiAqc29ydF9wdHJbMTZdID0geyBzb3J0XzY2MCwgc29ydF84ODUsIHNvcnRfMTI2NSwgc29ydF8xNDI1LCBzb3J0XzE1ODUsIHNvcnRfMTgyNSwgc29ydF8xOTg1LCBzb3J0XzIzMDUsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRfMjM4NSwgc29ydF9TSUQsICAgICAgTlVMTCwgICAgICBOVUxMLCAgICAgIE5VTEwsICAgICAgTlVMTCwgICAgICBOVUxMLCAgICAgIE5VTEx9Ow0KKw0KKw0KKw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvb3Blcl8zMmIuaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvb3Blcl8zMmIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MTU5ZDg0Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9vcGVyXzMyYi5oCkBAIC0wLDAgKzEsMzEgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorDQorLyogRG91YmxlIHByZWNpc2lvbiBvcGVyYXRpb25zICovDQorLyogJElkJCAqLw0KKw0KKyNpZm5kZWYgX19PUEVSXzMyQl9IX18NCisjZGVmaW5lIF9fT1BFUl8zMkJfSF9fDQorDQordm9pZCBWT19MX0V4dHJhY3QgKFdvcmQzMiBMXzMyLCBXb3JkMTYgKmhpLCBXb3JkMTYgKmxvKTsNCitXb3JkMzIgTF9Db21wIChXb3JkMTYgaGksIFdvcmQxNiBsbyk7DQorV29yZDMyIE1weV8zMiAoV29yZDE2IGhpMSwgV29yZDE2IGxvMSwgV29yZDE2IGhpMiwgV29yZDE2IGxvMik7DQorV29yZDMyIE1weV8zMl8xNiAoV29yZDE2IGhpLCBXb3JkMTYgbG8sIFdvcmQxNiBuKTsNCitXb3JkMzIgRGl2XzMyIChXb3JkMzIgTF9udW0sIFdvcmQxNiBkZW5vbV9oaSwgV29yZDE2IGRlbm9tX2xvKTsNCisNCisjZW5kaWYgLy9fX09QRVJfMzJCX0hfXw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvcF9tZWRfby5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9wX21lZF9vLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjdjNGM3ZQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvcF9tZWRfby5oCkBAIC0wLDAgKzEsNTIgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICBQX01FRF9PLkggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorICogICAgICAgTWVkaWFuIG9wZW4tbG9vcCBsYWcgc2VhcmNoCQkJCSAgICAgICAgICAgICoNCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisjaWZuZGVmIF9fUF9NRURfT19IX18NCisjZGVmaW5lIF9fUF9NRURfT19IX18NCisNCitXb3JkMTYgUGl0Y2hfbWVkX29sKCAgICAgICAgICAgICAgICAgICAgICAgLyogb3V0cHV0OiBvcGVuIGxvb3AgcGl0Y2ggbGFnICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiB3c3BbXSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBzaWduYWwgdXNlZCB0byBjb21wdXRlIHRoZSBvcGVuIGxvb3AgcGl0Y2ggKi8NCisJCS8qIHdzcFstcGl0X21heF0gdG8gd3NwWy0xXSBzaG91bGQgYmUga25vd24gICAqLw0KKwkJV29yZDE2IExfbWluLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IG1pbmltdW0gcGl0Y2ggbGFnICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IExfbWF4LCAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IG1heGltdW0gcGl0Y2ggbGFnICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IExfZnJhbWUsICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IGxlbmd0aCBvZiBmcmFtZSB0byBjb21wdXRlIHBpdGNoICAgICAgICAgICAqLw0KKwkJV29yZDE2IExfMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IG9sZF8gb3Blbi1sb29wIHBpdGNoICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2ICogZ2FpbiwgICAgICAgICAgICAgICAgICAgICAgICAvKiBvdXRwdXQ6IG5vcm1hbGl6ZSBjb3JyZWxhdGlvbiBvZiBocF93c3AgZm9yIHRoZSBMYWcgKi8NCisJCVdvcmQxNiAqIGhwX3dzcF9tZW0sICAgICAgICAgICAgICAgICAgLyogaTpvICAgOiBtZW1vcnkgb2YgdGhlIGh5cGFzcyBmaWx0ZXIgZm9yIGhwX3dzcFtdIChsZz05KSAgICovDQorCQlXb3JkMTYgKiBvbGRfaHBfd3NwLCAgICAgICAgICAgICAgICAgIC8qIGk6byAgIDogaHlwYXNzIHdzcFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgd2dodF9mbGcgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogaXMgd2VpZ2h0aW5nIGZ1bmN0aW9uIHVzZWQgICAgICAgICAgICAgICAgICovDQorCQkpOw0KKw0KK1dvcmQxNiBNZWRfb2xhZyggICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBvdXRwdXQgOiBtZWRpYW4gb2YgIDUgcHJldmlvdXMgb3Blbi1sb29wIGxhZ3MgICAgICAgKi8NCisJCVdvcmQxNiBwcmV2X29sX2xhZywgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgIDogcHJldmlvdXMgb3Blbi1sb29wIGxhZyAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgb2xkX29sX2xhZ1s1XQ0KKwkgICAgICAgKTsNCisNCit2b2lkIEhwX3dzcCgNCisJCVdvcmQxNiB3c3BbXSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogaSAgIDogd3NwW10gIHNpZ25hbCAgICAgICAqLw0KKwkJV29yZDE2IGhwX3dzcFtdLCAgICAgICAgICAgICAgICAgICAgICAvKiBvICAgOiBoeXBhc3Mgd3NwW10gICAgICAgICovDQorCQlXb3JkMTYgbGcsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGkgICA6IGxlbmdodCBvZiBzaWduYWwgICAgKi8NCisJCVdvcmQxNiBtZW1bXSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaS9vIDogZmlsdGVyIG1lbW9yeSBbOV0gICAqLw0KKwkgICApOw0KKw0KKyNlbmRpZiAgLy9fX1BfTUVEX09fSF9fDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9wX21lZF9vbC50YWIgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL3BfbWVkX29sLnRhYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNGJkMWQ1Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9wX21lZF9vbC50YWIKQEAgLTAsMCArMSw0NyBAQAorDQorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyB8IFRhYmxlIGZvciBmdW5jdGlvbiBQaXRjaF9tZWRfb2woKQkJCQkgICB8DQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorIHN0YXRpYyBXb3JkMTYgY29ycndlaWdodFsxOTldPSB7DQorDQorIDEwNzcyLCAxMDc5NCwgMTA4MTYsIDEwODM5LCAxMDg2MiwgMTA4ODUsIDEwOTA4LCAxMDkzMiwgMTA5NTUsIDEwOTgwLA0KKyAxMTAwNCwgMTEwMjksIDExMDU0LCAxMTA3OSwgMTExMDUsIDExMTMxLCAxMTE1NywgMTExODMsIDExMjEwLCAxMTIzOCwNCisgMTEyNjUsIDExMjkzLCAxMTMyMiwgMTEzNTAsIDExMzc5LCAxMTQwOSwgMTE0MzksIDExNDY5LCAxMTUwMCwgMTE1MzEsDQorIDExNTYzLCAxMTU5NSwgMTE2MjgsIDExNjYxLCAxMTY5NCwgMTE3MjgsIDExNzYzLCAxMTc5OCwgMTE4MzQsIDExODcwLA0KKyAxMTkwNywgMTE5NDUsIDExOTgzLCAxMjAyMiwgMTIwNjEsIDEyMTAxLCAxMjE0MiwgMTIxODQsIDEyMjI2LCAxMjI3MCwNCisgMTIzMTQsIDEyMzU4LCAxMjQwNCwgMTI0NTEsIDEyNDk4LCAxMjU0NywgMTI1OTYsIDEyNjQ3LCAxMjY5OSwgMTI3NTEsDQorIDEyODA1LCAxMjg2MSwgMTI5MTcsIDEyOTc1LCAxMzAzNCwgMTMwOTUsIDEzMTU3LCAxMzIyMSwgMTMyODYsIDEzMzUzLA0KKyAxMzQyMiwgMTM0OTMsIDEzNTY2LCAxMzY0MSwgMTM3MTksIDEzNzk4LCAxMzg4MCwgMTM5NjUsIDE0MDUzLCAxNDE0MywNCisgMTQyMzcsIDE0MzM0LCAxNDQzNSwgMTQ1MzksIDE0NjQ4LCAxNDc2MSwgMTQ4NzksIDE1MDAyLCAxNTEzMCwgMTUyNjUsDQorIDE1NDA2LCAxNTU1NCwgMTU3MTAsIDE1ODc0LCAxNjA1NiwgMTYzODQsIDE2Mzg0LCAxNjM4NCwgMTYzODQsIDE2Mzg0LA0KKyAxNjM4NCwgMTYzODQsIDE2MDU2LCAxNTg3NCwgMTU3MTAsIDE1NTU0LCAxNTQwNiwgMTUyNjUsIDE1MTMwLCAxNTAwMiwNCisgMTQ4NzksIDE0NzYxLCAxNDY0OCwgMTQ1MzksIDE0NDM1LCAxNDMzNCwgMTQyMzcsIDE0MTQzLCAxNDA1MywgMTM5NjUsDQorIDEzODgwLCAxMzc5OCwgMTM3MTksIDEzNjQxLCAxMzU2NiwgMTM0OTMsIDEzNDIyLCAxMzM1MywgMTMyODYsIDEzMjIxLA0KKyAxMzE1NywgMTMwOTUsIDEzMDM0LCAxMjk3NSwgMTI5MTcsIDEyODYxLCAxMjgwNSwgMTI3NTEsIDEyNjk5LCAxMjY0NywNCisgMTI1OTYsIDEyNTQ3LCAxMjQ5OCwgMTI0NTEsIDEyNDA0LCAxMjM1OCwgMTIzMTQsIDEyMjcwLCAxMjIyNiwgMTIxODQsDQorIDEyMTQyLCAxMjEwMSwgMTIwNjEsIDEyMDIyLCAxMTk4MywgMTE5NDUsIDExOTA3LCAxMTg3MCwgMTE4MzQsIDExNzk4LA0KKyAxMTc2MywgMTE3MjgsIDExNjk0LCAxMTY2MSwgMTE2MjgsIDExNTk1LCAxMTU2MywgMTE1MzEsIDExNTAwLCAxMTQ2OSwNCisgMTE0MzksIDExNDA5LCAxMTM3OSwgMTEzNTAsIDExMzIyLCAxMTI5MywgMTEyNjUsIDExMjM4LCAxMTIxMCwgMTExODMsDQorIDExMTU3LCAxMTEzMSwgMTExMDUsIDExMDc5LCAxMTA1NCwgMTEwMjksIDExMDA0LCAxMDk4MCwgMTA5NTUsIDEwOTMyLA0KKyAxMDkwOCwgMTA4ODUsIDEwODYyLCAxMDgzOSwgMTA4MTYsIDEwNzk0LCAxMDc3MiwgMTA3NTAsIDEwNzI4fTsNCisNCisNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL3FfZ2FpbjIudGFiIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9xX2dhaW4yLnRhYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTBkZWVlCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9xX2dhaW4yLnRhYgpAQCAtMCwwICsxLDIyOCBAQAorDQorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisgKiBUYWJsZXMgZm9yIGZ1bmN0aW9uIHFfZ2FpbjIoKSAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgZ19waXRjaChRMTQpLCAgZ19jb2RlKFExMSkgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiBwaXRjaCBnYWluIGFyZSBvcmRlcmVkIGluIHRhYmxlIHRvIHJlZHVjZSBjb21wbGV4aXR5ICoNCisgKiBkdXJpbmcgcXVhbnRpemF0aW9uIG9mIGdhaW5zLiAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorI2RlZmluZSBuYl9xdWFfZ2FpbjZiICA2NCAgICAgLyogTnVtYmVyIG9mIHF1YW50aXphdGlvbiBsZXZlbCAqLw0KKyNkZWZpbmUgbmJfcXVhX2dhaW43YiAgMTI4ICAgIC8qIE51bWJlciBvZiBxdWFudGl6YXRpb24gbGV2ZWwgKi8NCisNCisNCitzdGF0aWMgV29yZDE2IHRfcXVhX2dhaW42Yls2NCoyXSA9IHsNCisgICAxNTY2LCAgMTMzMiwNCisgICAxNTc3LCAgMzU1NywNCisgICAzMDcxLCAgNjQ5MCwNCisgICA0MTkzLCAxMDE2MywNCisgICA0NDk2LCAgMjUzNCwNCisgICA1MDE5LCAgNDQ4OCwNCisgICA1NTg2LCAxNTYxNCwNCisgICA1NzI1LCAgMTQyMiwNCisgICA2NDUzLCAgIDU4MCwNCisgICA2NzI0LCAgNjgzMSwNCisgICA3NjU3LCAgMzUyNywNCisgICA4MDcyLCAgMjA5OSwNCisgICA4MjMyLCAgNTMxOSwNCisgICA4ODI3LCAgODc3NSwNCisgICA5NzQwLCAgMjg2OCwNCisgICA5ODU2LCAgMTQ2NSwNCisgIDEwMDg3LCAxMjQ4OCwNCisgIDEwMjQxLCAgNDQ1MywNCisgIDEwODU5LCAgNjYxOCwNCisgIDExMzIxLCAgMzU4NywNCisgIDExNDE3LCAgMTgwMCwNCisgIDExNjQzLCAgMjQyOCwNCisgIDExNzE4LCAgIDk4OCwNCisgIDEyMzEyLCAgNTA5MywNCisgIDEyNTIzLCAgODQxMywNCisgIDEyNTc0LCAyNjIxNCwNCisgIDEyNjAxLCAgMzM5NiwNCisgIDEzMTcyLCAgMTYyMywNCisgIDEzMjg1LCAgMjQyMywNCisgIDEzNDE4LCAgNjA4NywNCisgIDEzNDU5LCAxMjgxMCwNCisgIDEzNjU2LCAgMzYwNywNCisgIDE0MTExLCAgNDUyMSwNCisgIDE0MTQ0LCAgMTIyOSwNCisgIDE0NDI1LCAgMTg3MSwNCisgIDE0NDMxLCAgNzIzNCwNCisgIDE0NDQ1LCAgMjgzNCwNCisgIDE0NjI4LCAxMDAzNiwNCisgIDE0ODYwLCAxNzQ5NiwNCisgIDE1MTYxLCAgMzYyOSwNCisgIDE1MjA5LCAgNTgxOSwNCisgIDE1Mjk5LCAgMjI1NiwNCisgIDE1NTE4LCAgNDcyMiwNCisgIDE1NjYzLCAgMTA2MCwNCisgIDE1NzU5LCAgNzk3MiwNCisgIDE1OTM5LCAxMTk2NCwNCisgIDE2MDIwLCAgMjk5NiwNCisgIDE2MDg2LCAgMTcwNywNCisgIDE2NTIxLCAgNDI1NCwNCisgIDE2NTc2LCAgNjIyNCwNCisgIDE2ODk0LCAgMjM4MCwNCisgIDE2OTA2LCAgIDY4MSwNCisgIDE3MjEzLCAgODQwNiwNCisgIDE3NjEwLCAgMzQxOCwNCisgIDE3ODk1LCAgNTI2OSwNCisgIDE4MTY4LCAxMTc0OCwNCisgIDE4MjMwLCAgMTU3NSwNCisgIDE4NjA3LCAzMjc2NywNCisgIDE4NzI4LCAyMTY4NCwNCisgIDE5MTM3LCAgMjU0MywNCisgIDE5NDIyLCAgNjU3NywNCisgIDE5NDQ2LCAgNDA5NywNCisgIDE5NDUwLCAgOTA1NiwNCisgIDIwMzcxLCAxNDg4NX07DQorDQorc3RhdGljIFdvcmQxNiB0X3F1YV9nYWluN2JbMTI4KjJdID0gew0KKyAgICAyMDQsICAgNDQxLA0KKyAgICA0NjQsICAxOTc3LA0KKyAgICA4NjksICAxMDc3LA0KKyAgIDEwNzIsICAzMDYyLA0KKyAgIDEyODEsICA0NzU5LA0KKyAgIDE2NDcsICAxNTM5LA0KKyAgIDE4NDUsICA3MDIwLA0KKyAgIDE4NTMsICAgNjM0LA0KKyAgIDE5OTUsICAyMzM2LA0KKyAgIDIzNTEsIDE1NDAwLA0KKyAgIDI2NjEsICAxMTY1LA0KKyAgIDI3MDIsICAzOTAwLA0KKyAgIDI3MTAsIDEwMTMzLA0KKyAgIDMxOTUsICAxNzUyLA0KKyAgIDM0OTgsICAyNjI0LA0KKyAgIDM2NjMsICAgODQ5LA0KKyAgIDM5ODQsICA1Njk3LA0KKyAgIDQyMTQsICAzMzk5LA0KKyAgIDQ0MTUsICAxMzA0LA0KKyAgIDQ2OTUsICAyMDU2LA0KKyAgIDUzNzYsICA0NTU4LA0KKyAgIDUzODYsICAgNjc2LA0KKyAgIDU1MTgsIDIzNTU0LA0KKyAgIDU1NjcsICA3Nzk0LA0KKyAgIDU2NDQsICAzMDYxLA0KKyAgIDU2NzIsICAxNTEzLA0KKyAgIDU5NTcsICAyMzM4LA0KKyAgIDY1MzMsICAxMDYwLA0KKyAgIDY4MDQsICA1OTk4LA0KKyAgIDY4MjAsICAxNzY3LA0KKyAgIDY5MzcsICAzODM3LA0KKyAgIDcyNzcsICAgNDE0LA0KKyAgIDczMDUsICAyNjY1LA0KKyAgIDc0NjYsIDExMzA0LA0KKyAgIDc5NDIsICAgNzk0LA0KKyAgIDgwMDcsICAxOTgyLA0KKyAgIDgwMDcsICAxMzY2LA0KKyAgIDgzMjYsICAzMTA1LA0KKyAgIDgzMzYsICA0ODEwLA0KKyAgIDg3MDgsICA3OTU0LA0KKyAgIDg5ODksICAyMjc5LA0KKyAgIDkwMzEsICAxMDU1LA0KKyAgIDkyNDcsICAzNTY4LA0KKyAgIDkyODMsICAxNjMxLA0KKyAgIDk2NTQsICA2MzExLA0KKyAgIDk4MTEsICAyNjA1LA0KKyAgMTAxMjAsICAgNjgzLA0KKyAgMTAxNDMsICA0MTc5LA0KKyAgMTAyNDUsICAxOTQ2LA0KKyAgMTAzMzUsICAxMjE4LA0KKyAgMTA0NjgsICA5OTYwLA0KKyAgMTA2NTEsICAzMDAwLA0KKyAgMTA5NTEsICAxNTMwLA0KKyAgMTA5NjksICA1MjkwLA0KKyAgMTEyMDMsICAyMzA1LA0KKyAgMTEzMjUsICAzNTYyLA0KKyAgMTE3NzEsICA2NzU0LA0KKyAgMTE4MzksICAxODQ5LA0KKyAgMTE5NDEsICA0NDk1LA0KKyAgMTE5NTQsICAxMjk4LA0KKyAgMTE5NzUsIDE1MjIzLA0KKyAgMTE5NzcsICAgODgzLA0KKyAgMTE5ODYsICAyODQyLA0KKyAgMTI0MzgsICAyMTQxLA0KKyAgMTI1OTMsICAzNjY1LA0KKyAgMTI2MzYsICA4MzY3LA0KKyAgMTI2NTgsICAxNTk0LA0KKyAgMTI4ODYsICAyNjI4LA0KKyAgMTI5ODQsICA0OTQyLA0KKyAgMTMxNDYsICAxMTE1LA0KKyAgMTMyMjQsICAgNTI0LA0KKyAgMTMzNDEsICAzMTYzLA0KKyAgMTMzOTksICAxOTIzLA0KKyAgMTM1NDksICA1OTYxLA0KKyAgMTM2MDYsICAxNDAxLA0KKyAgMTM2NTUsICAyMzk5LA0KKyAgMTM3ODIsICAzOTA5LA0KKyAgMTM4NjgsIDEwOTIzLA0KKyAgMTQyMjYsICAxNzIzLA0KKyAgMTQyMzIsICAyOTM5LA0KKyAgMTQyNzgsICA3NTI4LA0KKyAgMTQ0MzksICA0NTk4LA0KKyAgMTQ0NTEsICAgOTg0LA0KKyAgMTQ0NTgsICAyMjY1LA0KKyAgMTQ3OTIsICAxNDAzLA0KKyAgMTQ4MTgsICAzNDQ1LA0KKyAgMTQ4OTksICA1NzA5LA0KKyAgMTUwMTcsIDE1MzYyLA0KKyAgMTUwNDgsICAxOTQ2LA0KKyAgMTUwNjksICAyNjU1LA0KKyAgMTU0MDUsICA5NTkxLA0KKyAgMTU0MDUsICA0MDc5LA0KKyAgMTU1NzAsICA3MTgzLA0KKyAgMTU2ODcsICAyMjg2LA0KKyAgMTU2OTEsICAxNjI0LA0KKyAgMTU2OTksICAzMDY4LA0KKyAgMTU3NzIsICA1MTQ5LA0KKyAgMTU4NjgsICAxMjA1LA0KKyAgMTU5NzAsICAgNjk2LA0KKyAgMTYyNDksICAzNTg0LA0KKyAgMTYzMzgsICAxOTE3LA0KKyAgMTY0MjQsICAyNTYwLA0KKyAgMTY0ODMsICA0NDM4LA0KKyAgMTY1MjksICA2NDEwLA0KKyAgMTY2MjAsIDExOTY2LA0KKyAgMTY4MzksICA4NzgwLA0KKyAgMTcwMzAsICAzMDUwLA0KKyAgMTcwMzMsIDE4MzI1LA0KKyAgMTcwOTIsICAxNTY4LA0KKyAgMTcxMjMsICA1MTk3LA0KKyAgMTczNTEsICAyMTEzLA0KKyAgMTczNzQsICAgOTgwLA0KKyAgMTc1NjYsIDI2MjE0LA0KKyAgMTc2MDksICAzOTEyLA0KKyAgMTc2MzksIDMyNzY3LA0KKyAgMTgxNTEsICA3ODcxLA0KKyAgMTgxOTcsICAyNTE2LA0KKyAgMTgyMDIsICA1NjQ5LA0KKyAgMTg2NzksICAzMjgzLA0KKyAgMTg5MzAsICAxMzcwLA0KKyAgMTkyNzEsIDEzNzU3LA0KKyAgMTkzMTcsICA0MTIwLA0KKyAgMTk0NjAsICAxOTczLA0KKyAgMTk2NTQsIDEwMDE4LA0KKyAgMTk3NjQsICA2NzkyLA0KKyAgMTk5MTIsICA1MTM1LA0KKyAgMjAwNDAsICAyODQxLA0KKyAgMjEyMzQsIDE5ODMzfTsNCisNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL3FfcHVsc2UuaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvcV9wdWxzZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhZjU1MjUKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL3FfcHVsc2UuaApAQCAtMCwwICsxLDY2IEBACisNCisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorICogICAgICAgICAgICAgICAgICAgICAgICAgUV9QVUxTRS5IICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyAqIENvZGluZyBhbmQgZGVjb2Rpbmcgb2YgYWxnZWJyYWljIGNvZGVib29rCQkJICAgICAgICAgICAgKg0KKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKyNpZm5kZWYgIF9fUV9QVUxTRV9IX18NCisjZGVmaW5lICBfX1FfUFVMU0VfSF9fDQorDQorI2luY2x1ZGUgInR5cGVkZWYuaCINCisNCitXb3JkMzIgcXVhbnRfMXBfTjEoICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIHJldHVybiAoTisxKSBiaXRzICAgICAgICAgICAqLw0KKwkJV29yZDE2IHBvcywgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgcG9zaXRpb24gb2YgdGhlIHB1bHNlICAgICAgICovDQorCQlXb3JkMTYgTik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBudW1iZXIgb2YgYml0cyBmb3IgcG9zaXRpb24gKi8NCisNCitXb3JkMzIgcXVhbnRfMnBfMk4xKCAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIHJldHVybiAoMipOKSsxIGJpdHMgICAgICAgICAqLw0KKwkJV29yZDE2IHBvczEsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgcG9zaXRpb24gb2YgdGhlIHB1bHNlIDEgICAgICovDQorCQlXb3JkMTYgcG9zMiwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBwb3NpdGlvbiBvZiB0aGUgcHVsc2UgMiAgICAgKi8NCisJCVdvcmQxNiBOKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIG51bWJlciBvZiBiaXRzIGZvciBwb3NpdGlvbiAqLw0KKw0KK1dvcmQzMiBxdWFudF8zcF8zTjEoICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgcmV0dXJuICgzKk4pKzEgYml0cyAgICAgICAgICovDQorCQlXb3JkMTYgcG9zMSwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBwb3NpdGlvbiBvZiB0aGUgcHVsc2UgMSAgICAgKi8NCisJCVdvcmQxNiBwb3MyLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIHBvc2l0aW9uIG9mIHRoZSBwdWxzZSAyICAgICAqLw0KKwkJV29yZDE2IHBvczMsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgcG9zaXRpb24gb2YgdGhlIHB1bHNlIDMgICAgICovDQorCQlXb3JkMTYgTik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBudW1iZXIgb2YgYml0cyBmb3IgcG9zaXRpb24gKi8NCisNCitXb3JkMzIgcXVhbnRfNHBfNE4xKCAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIHJldHVybiAoNCpOKSsxIGJpdHMgICAgICAgICAqLw0KKwkJV29yZDE2IHBvczEsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgcG9zaXRpb24gb2YgdGhlIHB1bHNlIDEgICAgICovDQorCQlXb3JkMTYgcG9zMiwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBwb3NpdGlvbiBvZiB0aGUgcHVsc2UgMiAgICAgKi8NCisJCVdvcmQxNiBwb3MzLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIHBvc2l0aW9uIG9mIHRoZSBwdWxzZSAzICAgICAqLw0KKwkJV29yZDE2IHBvczQsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgcG9zaXRpb24gb2YgdGhlIHB1bHNlIDQgICAgICovDQorCQlXb3JkMTYgTik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBudW1iZXIgb2YgYml0cyBmb3IgcG9zaXRpb24gKi8NCisNCitXb3JkMzIgcXVhbnRfNHBfNE4oICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIHJldHVybiA0Kk4gYml0cyAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IHBvc1tdLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgcG9zaXRpb24gb2YgdGhlIHB1bHNlIDEuLjQgICovDQorCQlXb3JkMTYgTik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBudW1iZXIgb2YgYml0cyBmb3IgcG9zaXRpb24gKi8NCisNCitXb3JkMzIgcXVhbnRfNXBfNU4oICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIHJldHVybiA1Kk4gYml0cyAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IHBvc1tdLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgcG9zaXRpb24gb2YgdGhlIHB1bHNlIDEuLjUgICovDQorCQlXb3JkMTYgTik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBudW1iZXIgb2YgYml0cyBmb3IgcG9zaXRpb24gKi8NCisNCitXb3JkMzIgcXVhbnRfNnBfNk5fMiggICAgICAgICAgICAgICAgICAgICAgLyogKG8pIHJldHVybiAoNipOKS0yIGJpdHMgICAgICAgICAqLw0KKwkJV29yZDE2IHBvc1tdLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgcG9zaXRpb24gb2YgdGhlIHB1bHNlIDEuLjYgICovDQorCQlXb3JkMTYgTik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBudW1iZXIgb2YgYml0cyBmb3IgcG9zaXRpb24gKi8NCisNCisNCisjZW5kaWYgLy9fX1FfUFVMU0VfSF9fDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9xaXNmX25zLnRhYiBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvcWlzZl9ucy50YWIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTJmMGRhZgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvcWlzZl9ucy50YWIKQEAgLTAsMCArMSwzNDcgQEAKKw0KKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgIHFpc2ZfbnMuaA0KKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisgKiBRdWFudGl6YXRpb24gdGFibGVzIGZvciBzcGxpdCBieSA1IFZRIG9mIElTRnMgZm9yIGEgYmFja2dyb3VuZCBub2lzZSBkYXRhYmFzZQ0KKyAqIFZlcnNpb24gd2hpdGggbm8gcHJlZGljdGlvbg0KKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorI2RlZmluZSBPUkRFUiAgIDE2ICAgICAgICAgICAgLyogb3JkZXIgb2YgbGluZWFyIHByZWRpY3Rpb24gZmlsdGVyICovDQorI2RlZmluZSBJU0ZfR0FQIDEyOA0KKw0KKyNkZWZpbmUgU0laRV9CS19OT0lTRTEgIDY0DQorI2RlZmluZSBTSVpFX0JLX05PSVNFMiAgNjQNCisjZGVmaW5lIFNJWkVfQktfTk9JU0UzICA2NA0KKyNkZWZpbmUgU0laRV9CS19OT0lTRTQgIDMyDQorI2RlZmluZSBTSVpFX0JLX05PSVNFNSAgMzINCisNCisNCisvKiBtZWFucyBvZiBJU0ZzICovDQorIHN0YXRpYyBXb3JkMTYgbWVhbl9pc2Zfbm9pc2VbT1JERVJdID0gew0KKw0KKyAgIDQ3OCwgIDExMDAsICAyMjEzLCAgMzI2NywgIDQyMTksICA1MjIyLCAgNjE5OCwgIDcyNDAsDQorICA4MjI5LCAgOTE1MywgMTAwOTgsIDExMTA4LCAxMjE0NCwgMTMxODQsIDE0MTY1LCAgMzgwM307DQorDQorDQorLyogMjggYml0cyAqLw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisgKiAgaXNmIGNvZGVib29rczogIHNwbGl0LWJ5LTUgVlEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICBjb2RlYm9vayAgIHZlY3RvciBkaW1lbnNpb24gICAgbnVtYmVyIG9mIHZlY3RvcnMgICAgICAgICAgICAgICAgICoNCisgKiAgfn5+fn5+fn4gICB+fn5+fn5+fn5+fn5+fn5+ICAgIH5+fn5+fn5+fn5+fn5+fn5+ICAgICAgICAgICAgICAgICAqDQorICogICAgIDEgICAgICAgICAgICAyICAgICAgICAgICAgICAgICAgNjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAyICAgICAgICAgICAgMyAgICAgICAgICAgICAgICAgIDY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgMyAgICAgICAgICAgIDMgICAgICAgICAgICAgICAgICA2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgIDQgICAgICAgICAgICA0ICAgICAgICAgICAgICAgICAgMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICA1ICAgICAgICAgICAgNCAgICAgICAgICAgICAgICAgIDMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyAqIDFzdCBzcGxpdDogICBpc2YwIHRvIGlzZjENCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorDQorIHN0YXRpYyBXb3JkMTYgZGljbzFfaXNmX25vaXNlW1NJWkVfQktfTk9JU0UxKjJdID0gew0KKw0KKyAgLTI2OSwgIC02NzMsDQorICAtMjIyLCAgLTUzNywNCisgIC0yMzMsICAtNDMwLA0KKyAgLTEzOCwgIC00NTEsDQorICAtMjEyLCAgLTMzMSwNCisgIC0xOTIsICAtMjQxLA0KKyAgIC04NywgIC0yMzEsDQorICAtMTkxLCAgLTEyOCwNCisgICAtNzAsICAtMTA2LA0KKyAgLTE2NCwgICAgLTYsDQorICAgIDc0LCAgLTE3OSwNCisgICAgMjcsICAgLTMzLA0KKyAgLTEwMiwgICAgNzQsDQorICAtMTYyLCAgIDExNSwNCisgICAtOTQsICAgMTcyLA0KKyAgICAtNiwgICAxMzAsDQorICAtMTQzLCAgIDIzNCwNCisgICAgMTQsICAgMjE4LA0KKyAgIC02NSwgICAyNzAsDQorICAgIDg4LCAgIDE4MiwNCisgIC0xMjQsICAgMzQxLA0KKyAgIC00NCwgICAzODEsDQorICAgIDM4LCAgIDMzNSwNCisgICAxMTcsICAgMjc0LA0KKyAgLTExMiwgICA0NTQsDQorICAgIDc0LCAgIDQzMSwNCisgICAgLTUsICAgNDg4LA0KKyAgIDE3NSwgICAzODQsDQorICAgLTgzLCAgIDU2MSwNCisgICAxMjIsICAgNTI5LA0KKyAgICAyMSwgICA2MDEsDQorICAgMjI5LCAgIDQ4MSwNCisgICAyMzEsICAgMzAzLA0KKyAgIDIyNiwgICA2MDgsDQorICAgMzAwLCAgIDM3MiwNCisgICAyMTAsICAgMTg3LA0KKyAgIDMwNiwgICAyNjUsDQorICAgMzI4LCAgIDQ3MywNCisgICAzODIsICAgMzMxLA0KKyAgIDM3MSwgICAxMzIsDQorICAgMTM5LCAgICA1OCwNCisgICAzNjUsICAgIDIxLA0KKyAgIDI1MCwgICAtODIsDQorICAgNDQzLCAgIDIxOCwNCisgICA0ODMsICAgMTEwLA0KKyAgIDQyNiwgICA0MTUsDQorICAgNTc5LCAgIDIyMiwNCisgICA1MTgsICAgMzMzLA0KKyAgIDU3MywgICA0NDgsDQorICAgNDU1LCAgIDUyOSwNCisgICA2ODUsICAgMzI5LA0KKyAgIDMzMiwgICA1ODAsDQorICAgNTk1LCAgIDU5MywNCisgICA0NjgsICAgNjQ1LA0KKyAgIDc2MiwgICA1MTcsDQorICAgMzI2LCAgIDcwOSwNCisgICA0ODUsICAgNzkzLA0KKyAgIDEzMCwgICA2ODQsDQorICAgNjcxLCAgIDczNywNCisgICAzNTQsICAgODc2LA0KKyAgICA4OCwgICA4MDYsDQorICAgLTY1LCAgIDcwNiwNCisgICAtMzUsICAxMDE2LA0KKyAgIDI2NiwgIDExMjN9Ow0KKw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyAqIDJuZCBzcGxpdDogICBpc2YyIHRvIGlzZjQNCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorIHN0YXRpYyBXb3JkMTYgZGljbzJfaXNmX25vaXNlW1NJWkVfQktfTk9JU0UyKjNdID0gew0KKw0KKyAgLTgyNCwgIC04ODQsICAtOTQ5LA0KKyAgLTgwNSwgIC00NTYsICAtNDE4LA0KKyAgLTQ0MiwgIC00MzgsICAtNTQxLA0KKyAgLTIxNywgIC01NzgsICAtNzkzLA0KKyAgLTE2OCwgIC00NDQsICAtNTgyLA0KKyAgLTI4NywgIC00OTIsICAtMjc0LA0KKyAgLTU1MiwgIC0yOTcsICAtMzAwLA0KKyAgLTE2MywgIC0zMzMsICAtMzU4LA0KKyAgLTM3MCwgIC0yMzIsICAtMjMyLA0KKyAgLTE3NSwgIC0zNTgsICAtMTU5LA0KKyAgLTM4MSwgICAtMjEsICAtMzU3LA0KKyAgLTE4NCwgIC0xNTksICAtMTYyLA0KKyAgIC01MywgIC0xOTEsICAtMjgwLA0KKyAgICAxOCwgIC0yNjcsICAtMjE1LA0KKyAgLTEzOCwgICAgNjEsICAtMjgzLA0KKyAgICA3MSwgICAtOTUsICAtMjk0LA0KKyAgICAxMywgIC0xNTYsICAtNTQ2LA0KKyAgICAgMCwgICAtODMsICAgLTc5LA0KKyAgICA0NCwgICAgOTcsICAtMzE2LA0KKyAgIDE3OCwgICAtNTIsICAtMjEzLA0KKyAgIDIyMiwgIC0yNjEsICAtNDIyLA0KKyAgIDIzNywgIC0xMTgsICAgLTQ0LA0KKyAgIDE0MSwgICAxNDUsICAtMTMyLA0KKyAgIDM2MywgICAgODEsICAtMjg3LA0KKyAgIDIxMywgICAgNjUsICAgIDM0LA0KKyAgLTEwNywgICAgOTQsICAgIC01LA0KKyAgICA5MSwgICAtMjksICAgMTI2LA0KKyAgLTM1NSwgICAgNTEsICAgLTQxLA0KKyAgLTIxOSwgICAtNzYsICAgMTQ1LA0KKyAgIC02MywgICAxMDAsICAgMjQ0LA0KKyAgLTcxOSwgICAgNDQsICAgIDI3LA0KKyAgLTU3MiwgIC0xMjQsICAgMTU1LA0KKyAgLTQyMywgICAxMzMsICAgMzE1LA0KKyAgLTkxNywgICAgNzEsICAgMjI0LA0KKyAgLTI2OCwgICAzMTgsICAgMTMxLA0KKyAgIC05MywgIC0xOTAsICAgNDIwLA0KKyAgIC05NywgICAxMjIsICAgNDkxLA0KKyAgIC03OSwgICAzMTcsICAgMzU1LA0KKyAgIDEzMCwgICAxMDAsICAgMzI1LA0KKyAgICA4NiwgIC0yOTMsICAgMjEwLA0KKyAgIDEzMywgICAyNTgsICAgMTYxLA0KKyAgIDE3NiwgICAtNzMsICAgNDY1LA0KKyAgIDE5NSwgICAzMDAsICAgMzg0LA0KKyAgIDM0OCwgICAgMjIsICAgMjIxLA0KKyAgIDM3NiwgICAxODMsICAgNDA5LA0KKyAgIDM3NywgICAyODYsICAgMjAyLA0KKyAgIDI0MiwgICAyMTMsICAgNjU5LA0KKyAgIDI1NywgICA1NjUsICAgMjQ4LA0KKyAgIDM0NCwgICA0MDgsICAgLTc2LA0KKyAgIDQwNSwgICA0NDAsICAgNTA5LA0KKyAgIDYxMiwgICAzODUsICAgMzc5LA0KKyAgIDUzNiwgICA2MDcsICAgMjE2LA0KKyAgIC01NiwgICA1ODIsICAgMTkyLA0KKyAgIDEwMCwgICA1MTcsICAgNTY3LA0KKyAgLTM2NSwgICA0NDgsICAgNDQ1LA0KKyAgIDcyOCwgICAzNDcsICAgIDEwLA0KKyAgIDUwNSwgICAzNTcsICAgNzU5LA0KKyAgIDYzNiwgICA1ODIsICAgNjU4LA0KKyAgIDMzNSwgICA1MTcsICAgODUyLA0KKyAgIDM3OCwgICA4MDksICAgNTcyLA0KKyAgLTE5NSwgICA4NzgsICAgODI5LA0KKyAgIDUyOSwgICA3MDcsICAgOTg3LA0KKyAgIDkxOCwgICA3MjYsICAgMzkyLA0KKyAgMTI1MCwgICA5OTcsICAxMDYzfTsNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisgKiAzcmQgc3BsaXQ6ICAgaXNmNSB0byBpc2Y3DQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKyBzdGF0aWMgV29yZDE2IGRpY28zX2lzZl9ub2lzZVtTSVpFX0JLX05PSVNFMyozXSA9IHsNCisNCisgIC04MDUsICAtODM4LCAgLTc3NCwNCisgIC01MjIsICAtNjI3LCAgLTgyOCwNCisgIC00NzcsICAtNDg2LCAgLTYwMywNCisgIC0yOTUsICAtNDgxLCAgLTYzNCwNCisgIC0zNjYsICAtMzg0LCAgLTM5MywNCisgIC0xODYsICAtNDE0LCAgLTM5NiwNCisgIC0yMzcsICAtMzk0LCAgLTEwNiwNCisgIC0yNTIsICAtMjAyLCAgLTI3NSwNCisgICAtNjEsICAtMTc3LCAgLTQ0MiwNCisgICAtODQsICAtMTk4LCAgLTE5OSwNCisgIC0xNzksICAtMTI1LCAgIC0zMSwNCisgICAtNzIsICAgLTQ3LCAgLTE2MywNCisgIC0yOTgsICAtMjIwLCAgIDIxNSwNCisgICAtNjQsICAtMTY4LCAgIDI1MSwNCisgIC0xMzMsICAgMTU2LCAgIC01OSwNCisgICAtMzAsICAgIC0yLCAgIDEyNywNCisgICAgNTQsICAgIDY2LCAgIC02MSwNCisgIC0yMzMsICAgIDIxLCAgIDI1MSwNCisgICAyMDksICAgLTUwLCAgICAzMiwNCisgICAgMzMsICAgMTk0LCAgIDEzNiwNCisgIC0xMTcsICAgLTE4LCAgIDQ3NSwNCisgICAyMDIsICAgIDQ2LCAgIDMwOSwNCisgICAyNTYsICAgMTg1LCAgICA1MywNCisgICAgMzUsICAgMjAwLCAgIDM5MCwNCisgICAyMDAsICAgMjYzLCAgIDI0MiwNCisgIC0yMTYsICAgMzAyLCAgIDI5NCwNCisgICAxMjgsICAgMzU4LCAgICAgMCwNCisgICAgMTksICAgNDMxLCAgIDI4NywNCisgICAyMjQsICAgNDQ3LCAgIDI4MCwNCisgICAzNjcsICAgMTY1LCAgIDIxMywNCisgICAzOTcsICAgMzE0LCAgIDMxOSwNCisgICAzODMsICAgMzc5LCAgICA3NSwNCisgICAyNzcsICAgMzI1LCAgIDQ2MiwNCisgICAzOTQsICAgNTA1LCAgIDMzNCwNCisgICAyNTEsICAgIDk4LCAgLTIxMywNCisgICA0NTAsICAgMTUzLCAgIDQ0OCwNCisgICA1NjUsICAgMjI2LCAgICA3NiwNCisgICA0NzAsICAgMzgzLCAgIDUwMiwNCisgICA2MzUsICAgMzkwLCAgIDI3OCwNCisgICAyMzcsICAgMTM1LCAgIDYyMCwNCisgICAzNDIsICAgNDAxLCAgIDY0OSwNCisgICAzMzEsICAgNTUxLCAgIDUxOCwNCisgICAxMzAsICAgNDE4LCAgIDU5MiwNCisgICA1MzEsICAgMzA2LCAgIDczNywNCisgICA3MjksICAgMzg5LCAgIDU4MCwNCisgICA0OTcsICAgNTU3LCAgIDY5OSwNCisgICAyOTYsICAgMzgzLCAgIDg3NCwNCisgICAyODMsICAgNjI0LCAgIDc1OSwNCisgICAxMjYsICAgNjIyLCAgIDQ3NiwNCisgICA1NTksICAgNTk1LCAgIDQ3MiwNCisgICAzODIsICAgNzcwLCAgIDYxNiwNCisgICA3MTksICAgNjEzLCAgIDc0NSwNCisgICA1NDAsICAgNjM5LCAgIDkyOCwNCisgICA1MTcsICAgODI2LCAgIDgwMSwNCisgICA2ODQsICAgODExLCAgIDYwNCwNCisgICA3NTIsICAgNzg2LCAgIDg1NywNCisgICA5MzMsICAgNjYxLCAgIDM1MCwNCisgICA2OTQsICAgNDUwLCAgMTA2MSwNCisgICA1NjIsICAgOTExLCAgMTA1MSwNCisgICA4MjQsICAgODEzLCAgMTEwNCwNCisgICA3NTgsICAxMDQ3LCAgIDg4MiwNCisgIDExNDAsICAgOTE3LCAgIDg4OSwNCisgIDEwMzksICAxMjQ2LCAgMTQyNiwNCisgIDE0ODMsICAxNjY2LCAgMTg3Nn07DQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorICogNHRoIHNwbGl0OiAgIGlzZjggdG8gaXNmMTENCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorIHN0YXRpYyBXb3JkMTYgZGljbzRfaXNmX25vaXNlW1NJWkVfQktfTk9JU0U0KjRdID0gew0KKw0KKyAgLTc3NiwgIC04NTQsICAtODkxLCAgLTkyMCwNCisgIC01NTIsICAtNjEwLCAgLTY2MywgIC03NDEsDQorICAtMzIxLCAgLTM3MCwgIC00NzYsICAtNTY1LA0KKyAgIDI3NCwgIC0xNjAsICAtNDU2LCAgIDIwMSwNCisgICAyNjUsICAgIDY3LCAgLTE2MCwgIC0zMDYsDQorICAgIC04LCAgLTIxMCwgICAgNzksICAgMjcyLA0KKyAgIDE2MywgICAyMzYsICAgMzA3LCAgIDMwOCwNCisgICA1NzgsICAgMzE3LCAgICA2NCwgICAyOTgsDQorICAgIC05LCAgIDE5NywgICAzNDIsICAgNjIwLA0KKyAgIDM0MywgICAyMzIsICAgMzE0LCAgIDYyMiwNCisgICAxNzMsICAgMTQ5LCAgIDU0OCwgICA1MjcsDQorICAgMzU2LCAgIDM3MCwgICA0ODEsICAgMzc2LA0KKyAgIDEzNSwgICA0NDQsICAgNDg4LCAgIDU1NiwNCisgICAzOTEsICAgNDcxLCAgIDQ4NywgICA2NTMsDQorICAgMjI4LCAgIDQyNCwgICA1NzYsICAgODM1LA0KKyAgIDQyMiwgICAzNzIsICAgNzIyLCAgIDY4MiwNCisgICAyOTUsICAgNjczLCAgIDY5MywgICA2MzUsDQorICAgNTM5LCAgIDU5NiwgICA1OTAsICAgNDQ5LA0KKyAgIDQ3NSwgICA2MTgsICAgNjU5LCAgIDgxOCwNCisgICA3MzUsICAgNTE3LCAgIDQ5MSwgICA2NzMsDQorICAgNjAyLCAgIDM0NiwgICAyNTcsICAgODc3LA0KKyAgIDYyNSwgICA2MzUsICAgODQ5LCAgIDcyMCwNCisgICA3MjcsICAgODE4LCAgIDY5OCwgICA1OTUsDQorICAgNjUzLCAgIDQ4MSwgICA2OTAsICAxMTM5LA0KKyAgIDgxNCwgICA3NjIsICAgNzA0LCAgIDkwOCwNCisgICA1MDcsICAgNzQ3LCAgIDg5OCwgICA5MzYsDQorICAgODQ4LCAgIDg1NSwgICA5MjQsICAgNzg1LA0KKyAgIDY0NiwgIDEwMzcsICAgODgyLCAgIDc5NSwNCisgICA3NzIsICAgODQ1LCAgMTAyNCwgIDExNTEsDQorICAxMTMzLCAgIDk4MywgICA4MTgsICAgOTIxLA0KKyAgIDk0MCwgIDEwNjgsICAxMjUyLCAgMTMwMiwNCisgIDE1ODgsICAxNzY3LCAgMTcxOCwgIDE1MTN9Ow0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyAqIDV0aCBzcGxpdDogICBpc2YxMiB0byBpc2YxNQ0KKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisgc3RhdGljIFdvcmQxNiBkaWNvNV9pc2Zfbm9pc2VbU0laRV9CS19OT0lTRTUqNF0gPSB7DQorICAtODEwLCAgLTg3OSwgIC05NDUsICAtMjU0LA0KKyAgIDI0OCwgICAxODQsICAgNjcxLCAgIDEyOCwNCisgICAyODgsICAgNzAzLCAgIDkxOCwgICAgOTksDQorICAgNjU4LCAgIDU1OCwgICA2NjIsICAgMjE5LA0KKyAgIDU1MiwgICA1ODUsICAgOTEwLCAgIDIwOCwNCisgICA1NTksICAgODA0LCAgIDc1OSwgICAxMTksDQorICAgNjA2LCAgIDc3NCwgICA5MjEsICAtMTM5LA0KKyAgIDc4MiwgICA3NjEsICAgNzQ4LCAgIDIwOCwNCisgICA3NTYsICAgNzA4LCAgIDk4MywgICAgNTYsDQorICAgNTQ0LCAgIDg2NCwgIDEwMTAsICAgMTUyLA0KKyAgIDczNywgICA2OTgsICAgOTg3LCAgIDI5OSwNCisgICA3NzEsICAgOTI0LCAgIDg3OSwgICAxMDMsDQorICAgNTM2LCAgIDc4NSwgICA5NjEsICAgNDA1LA0KKyAgIDY2NywgICA5MTYsICAgODAxLCAgIDMyOCwNCisgICA3MzgsICAgNzA1LCAgIDc3MywgICA0MzksDQorICAgODIzLCAgIDg3MSwgICA5OTIsICAgMzU1LA0KKyAgIDY0MCwgIDEwMDQsICAxMDUyLCAgIDM2OSwNCisgICA3MjQsICAgODIyLCAgIDk0OSwgICA1OTcsDQorICAgNDE1LCAgIDY1NSwgICA3MjksICAgNDgyLA0KKyAgMTAwOSwgICA4OTYsICAgNzkzLCAgIDM2MywNCisgICA5MDgsICAgODAzLCAgIDY4NywgICAtMjUsDQorICAxMDE2LCAgIDgzOCwgIDEwMTEsICAgMTg5LA0KKyAgIDk0NywgIDExMTIsICAgOTQyLCAgIDIyMiwNCisgICA5MTQsICAxMDQ5LCAgIDk4MSwgICA1MjcsDQorICAgOTU2LCAgIDk4NywgIDEwMTEsICAtMTIwLA0KKyAgIDc4MSwgIDEwNDksICAxMTIxLCAgICA5MiwNCisgIDExNzgsICAxMDUzLCAgIDg4NCwgICAgNDcsDQorICAxMTIzLCAgMTA1OSwgIDExODIsICAgMTE4LA0KKyAgIDkzMywgICA5NzIsICAxMjc3LCAgIDM1NywNCisgIDExMDksICAgOTE4LCAgMTEwMSwgICA1MDMsDQorICAxMDM5LCAgMTI4NiwgIDEyMjAsICAgMzE3LA0KKyAgMTM1MSwgIDEyMDcsICAxMDEwLCAgIDMyNn07DQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9xcGlzZl8ycy50YWIgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL3FwaXNmXzJzLnRhYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDg2OWE0Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9xcGlzZl8ycy50YWIKQEAgLTAsMCArMSwxMzYwIEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICBxcGlzZl8ycy5oDQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyAqIFF1YW50aXphdGlvbiB0YWJsZXMgZm9yIHR3by1zdGFnZSBvZiBJU0ZzIChzcGxpdCBieSAyIGluIDFzdCBzdGFnZSkNCisgKiBWZXJzaW9uIHdoaXRoIHByZWRpY3Rpb24gTVUgPSAwLjI1DQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisjZGVmaW5lIE9SREVSICAgMTYgICAgICAgICAgICAvKiBvcmRlciBvZiBsaW5lYXIgcHJlZGljdGlvbiBmaWx0ZXIgKi8NCisjZGVmaW5lIElTRl9HQVAgMTI4ICAgICAgICAgICAvKiA1MCBIeiAqLw0KKyNkZWZpbmUgTl9TVVJWICA0DQorDQorI2RlZmluZSBTSVpFX0JLMSAgMjU2DQorI2RlZmluZSBTSVpFX0JLMiAgMjU2DQorI2RlZmluZSBTSVpFX0JLMjEgNjQNCisjZGVmaW5lIFNJWkVfQksyMiAxMjgNCisjZGVmaW5lIFNJWkVfQksyMyAxMjgNCisjZGVmaW5lIFNJWkVfQksyNCAzMg0KKyNkZWZpbmUgU0laRV9CSzI1IDMyDQorDQorI2RlZmluZSBTSVpFX0JLMjFfMzZiIDEyOA0KKyNkZWZpbmUgU0laRV9CSzIyXzM2YiAxMjgNCisjZGVmaW5lIFNJWkVfQksyM18zNmIgNjQNCisNCisvKiBtZWFucyBvZiBJU0ZzICovDQorc3RhdGljIFdvcmQxNiBtZWFuX2lzZltPUkRFUl0gPSB7DQorDQorICAgNzM4LCAgMTMyNiwgIDIzMzYsICAzNTc4LCAgNDU5NiwgIDU2NjIsICA2NzExLCAgNzczMCwNCisgIDg3NTAsICA5NzUzLCAxMDcwNSwgMTE3MjgsIDEyODMzLCAxMzk3MSwgMTUwNDMsICA0MDM3fTsNCisNCisvKiA0NiBiaXRzICovDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyAqICBpc2YgY29kZWJvb2tzOiAgdHdvLXN0YWdlIFZRIHdpdGggc3BsaXQtYnktNSBpbiAybmQgc3RhZ2UgICAgICAgICoNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogIGNvZGVib29rICAgdmVjdG9yIGRpbWVuc2lvbiAgICBudW1iZXIgb2YgdmVjdG9ycyAgICAgICAgICAgICAgICAgKg0KKyAqICB+fn5+fn5+fiAgIH5+fn5+fn5+fn5+fn5+fn4gICAgfn5+fn5+fn5+fn5+fn5+fn4gICAgICAgICAgICAgICAgICoNCisgKiAgICAgMV8xICAgICAgICAgICAgOSAgICAgICAgICAgICAgICAgIDI1NiAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgIDFfMiAgICAgICAgICAgIDcgICAgICAgICAgICAgICAgICAyNTYgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAyXzEgICAgICAgICAgICAzICAgICAgICAgICAgICAgICAgNjQgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgMl8yICAgICAgICAgICAgMyAgICAgICAgICAgICAgICAgIDEyOCAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgIDJfMyAgICAgICAgICAgIDMgICAgICAgICAgICAgICAgICAxMjggICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAyXzQgICAgICAgICAgICAzICAgICAgICAgICAgICAgICAgMzIgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgMl81ICAgICAgICAgICAgNCAgICAgICAgICAgICAgICAgIDMyICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisgKiAxc3Qgc3RhZ2UgY29kZWJvb2s7IDFzdCBzcGxpdDogICBpc2YwIHRvIGlzZjgNCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorc3RhdGljIFdvcmQxNiBkaWNvMV9pc2ZbU0laRV9CSzEqOV0gPSB7DQorDQorICAgNTc5LCAgMTA4MSwgIDEwMzUsICAgMzkwLCAgICAgMywgIC0yNjMsICAtMTk4LCAgIC04MiwgICAgMzgsDQorICAgIDE4LCAgIC02OCwgICAtMTIsICAgMzEzLCAgIDc2MSwgICA0MDUsICAgMjQ5LCAgIDExMSwgICAtNzYsDQorICAgNzQwLCAgMTI2MywgIDEyOTIsICAxMDA2LCAgIDk5NywgIDEwMTksICAxMDE3LCAgIDk3NiwgICA5MjMsDQorICAgLTkxLCAgIDgyNywgICA5NDgsICAgNjQ4LCAgIDYxMywgICA1MzUsICAgNTIyLCAgIDQ5MCwgICA0MjEsDQorICAgIDQxLCAgIC00NCwgIC0yODEsICAtNDcyLCAgIDY1MiwgICA1MzQsICAgMTkzLCAgIDEzNSwgICAtOTAsDQorICAgIDQxLCAgLTEyMSwgIC0zNTYsICAgLTYwLCAgIDY2MywgICAzMDcsICAgIDYxLCAgIC00OCwgIC0zNDQsDQorICAgNTU3LCAgIDk0NiwgIDEwNDksICAgODY3LCAgIDg0NiwgICA5OTAsICAxMTEyLCAgMTI2MiwgIDEyNDEsDQorICAtMTE4LCAgLTIwNCwgICAzMjgsICAgNTEyLCAgIDg3MCwgICA3OTMsICAgNjEwLCAgIDQwMiwgICAxODYsDQorICAgMTU2LCAgIDI5MywgICAgNzQsICAtMzM4LCAgLTQ3NSwgIC04OTcsICAtNTk0LCAgLTE2MSwgIC00OTcsDQorICAgMjI2LCAgIDEzMSwgIC0xMzgsICAgMzA3LCAgIDE2OSwgIC0yNzEsICAtMTY0LCAgLTM4NywgIC02MjQsDQorICAgIDYyLCAgIC0zMiwgICAtNjEsICAtMjUyLCAgLTU0MSwgIC04MjgsIC0xMDI3LCAgLTUyMywgIC02NjIsDQorICAgMTAyLCAgIC02MSwgICAxNDEsICAgMTEyLCAgLTI3MCwgIC0yNTEsICAtNTQxLCAgICAyNSwgIC0xNTAsDQorICAgICA2LCAgLTEzMiwgIC0zNTYsICAtNjg2LCAgIC05NiwgIC0zMjIsICAtNTIyLCAgIC0zMSwgIC0zMjYsDQorICAgLTM2LCAgLTIwOSwgIC01MjEsICAtMjI5LCAgIDMwNywgIC0xMzIsICAgIC01LCAgIC05OSwgIC0zODQsDQorICAgIDYwLCAgIC01MSwgIC0yMzcsICAtNjY4LCAgLTk3MywgIC00MDcsICAtNzA4LCAgIC03NSwgIC0xNzIsDQorICAgIDI2LCAgLTEzOCwgIC0yNjYsICAgMTExLCAgLTMwMiwgICAgNDMsICAtMjc4LCAgLTM1NiwgIC0zNTksDQorICAgNTcwLCAgIDgyMiwgICA0OTYsICAtMTU0LCAgLTMxMiwgICAtOTIsICAgMTM3LCAgIDI3OSwgICAzNzEsDQorICAtMTQ2LCAgIDM2OCwgICA0MDksICAgIDY4LCAgICAgNiwgICAgNzcsICAgMTY3LCAgIDIwMiwgICAxNjIsDQorICAgNjMzLCAgIDg5OCwgICA5OTYsICAgNzU2LCAgIDY2MiwgICA2ODMsICAgNzgzLCAgIDkwOSwgICA5OTYsDQorICAtMTAzLCAgIDI5NCwgICA2MDcsICAgNDE1LCAgIDQ4MywgICA0NjIsICAgNDgwLCAgIDQzMSwgICA0MDgsDQorICAtMTIwLCAgLTMzOCwgIC02MTIsICAtNTI0LCAgIDU4NCwgICAzMzEsICAgIDkyLCAgIDQzMywgICAyNzYsDQorICAtMTc4LCAgLTI5MywgIC0xNTQsICAgLTQxLCAgIDI2OSwgICAxMDAsICAgIC05LCAgIDIxMywgICAxNjAsDQorICAgODMwLCAgIDczNiwgICAyNzgsICAgODIwLCAgMTI1NCwgICA2ODYsICAgNzEyLCAgMTAzOSwgICA0NzMsDQorICAtMjE4LCAgLTMwNCwgICA0NjMsICAgNDU0LCAgIDM5NywgICAyNzMsICAgMjAyLCAgIDI4NiwgICAyNzMsDQorICAtMjMyLCAgICAgNywgICAgIDYsICAtMzg4LCAgLTQ3MiwgIC00MjcsICAtMzc4LCAgLTE2NywgIC0xMDAsDQorICAtMjk0LCAgLTE4MywgICAxMzQsICAgLTQ3LCAgIDEwMSwgICAtODgsICAgLTg0LCAgLTExNywgICAgLTMsDQorICAgIDU3LCAgICAxNywgIC0yMDIsICAtNjM0LCAgLTk4OSwgLTExMTksICAtNTMzLCAgIDE3NiwgICAtMzYsDQorICAgMTIwLCAgIC0yOCwgICAgMjMsICAgMTExLCAgLTMxOSwgICAzMTgsICAgLTIyLCAgIC03NywgICAyNjYsDQorICAtMjcxLCAgLTQ2NCwgIC00MzQsICAtNjU4LCAgLTY0MCwgIC0zODUsICAtMzg1LCAgIC05OSwgICAtNjksDQorICAtMTk4LCAgLTI1OSwgIC0yNjYsICAgLTQ0LCAgIC0zOSwgIC0xMzksICAtMTM3LCAgIDE3MSwgICAgNjYsDQorICAgICA5LCAgLTE0NSwgIC0zNzcsICAtODQ2LCAtMTAwMCwgIC0xMTEsICAtMzI1LCAgIDM0MiwgICAxMzUsDQorICAgLTgxLCAgLTI4NiwgIC0zODAsICAgMTkyLCAgIC01NywgICAzMDcsICAgIDc2LCAgIC0yNCwgIC0xNDAsDQorICAgNjc3LCAgIDcwMiwgICAyNDcsICAgIDU2LCAgIDI0OSwgICAxNDEsICAtMTA1LCAgLTIzNiwgICAtOTksDQorICAgIDM2LCAgIC0zOSwgICAtNjksICAgMzQ4LCAgIDE5OCwgICAtOTMsICAgMzIyLCAgICA5MSwgICAtNzIsDQorICAgNTAzLCAgIDg4NSwgIDE1MDgsICAxMzA3LCAgMTI4MiwgIDExNzIsICAxMTE5LCAgMTIwOSwgIDEwNjEsDQorICAgNDE2LCAgIDcxOSwgICA5ODksICAxMjI3LCAgMTAwMSwgIDEwNTIsICAgOTU0LCAgIDc0MSwgIDEwNDQsDQorICAtMTI3LCAgLTM3NiwgIC02NTcsICAgMTM5LCAgIDYyMywgICAyMjMsICAgNTAxLCAgIDMwNiwgICAyMjAsDQorICAtMTEzLCAgLTM4NCwgIC03OTYsICAgNTA0LCAgIDQzOCwgICAgODUsICAgMjEzLCAgIC04MywgIC0xOTQsDQorICAgNTg1LCAgMTEzMiwgIDEyMzMsICAxMDkxLCAgMTI0NywgIDE0MzMsICAxNTEyLCAgMTQ0OCwgIDEzMTQsDQorICAtMTc0LCAgLTQyMiwgICAgIDcsICAxMTU1LCAgMTA4OSwgIDExODIsICAxMDAzLCAgIDk0NSwgICA4MDYsDQorICAgICA4LCAgLTEyNiwgIC0zMTcsICAtMTAzLCAgLTM1MSwgIC02OTUsICAgLTk4LCAgLTI2OCwgIC01MzcsDQorICAgIDMzLCAgLTEwMywgIC0yOTAsICAgMTY3LCAgIC0zOSwgIC00MDcsICAgIDQ0LCAgLTIwOCwgIC0zNzUsDQorICAgMTA0LCAgIC0yMywgICAtNjQsICAtMjkxLCAgLTYzNywgIC04NTEsIC0xMDg0LCAgIC02MSwgIC0xMTIsDQorICAgLTc1LCAgLTMwNiwgIC00MzQsICAgMjE4LCAgLTE0OCwgIC0zNTQsICAtNjgwLCAgLTEzMywgIC0yMTYsDQorICAtMTIxLCAgLTM3NywgIC03MTgsICAgLTk3LCAgLTEzMCwgIC0zNjEsICAtMTU2LCAgLTM3OSwgIC01OTksDQorICAgLTU2LCAgLTI1NCwgIC01ODYsICAgMjM1LCAgIDE1NywgIC0yMTQsICAgIDExLCAgLTI2MCwgIC0xNDksDQorICAtMTI0LCAgLTI2NywgIC0zOTcsICAtNTgwLCAgLTU5MywgIC01MjcsICAtODA1LCAgLTM4NSwgICAzNDYsDQorICAtMTkzLCAgLTQ0MCwgIC03MDgsICAtMzUxLCAgLTE0MSwgIC0yNTUsICAtNDk5LCAgLTE0NywgIC0xODUsDQorICAgNDQ4LCAgIDY2MCwgICA0OTQsICAgMjA4LCAgIDUwOSwgICA0NjEsICAgMzM4LCAgIDI5MSwgICAxNDksDQorICAtMjIzLCAgICA4OCwgICAzMzUsICAgMTU5LCAgIDIxMiwgICAxOTEsICAgMjg2LCAgIDMwOCwgICAyMDUsDQorICAgLTMxLCAgIDQ2OSwgICA4MDMsICAgNjU5LCAgIDYxOSwgICA2NTgsICAgODQzLCAgIDk4NywgIDExMTMsDQorICAtMTcxLCAgLTI0MiwgICA1MTQsICAgMzYyLCAgIDI5NSwgICA1MjQsICAgNTUyLCAgIDY5NCwgICA1ODUsDQorICAgLTY0LCAgLTMwOCwgIC00NDgsICAgLTIxLCAgIDI4NCwgICA3ODYsICAgNDQ2LCAgIDI4OSwgICAgOTIsDQorICAtMjE4LCAgLTM5MCwgICAgLTcsICAgMTY5LCAgIDIwNiwgICAzMzAsICAgMzUyLCAgIDQwOCwgICAzNTgsDQorICAgLTM2LCAgIDcwMiwgICA5NTksICAgODU5LCAgIDg2MSwgIDExMTUsICAxMjY5LCAgMTM1NywgIDEzMDUsDQorICAtMTMzLCAgLTM0MSwgICAtNjUsICAgNjc4LCAgIDQxNywgICA0NDAsICAgNDg2LCAgIDUxOCwgICA3ODAsDQorICAgIDMzLCAgIC00NCwgIC0xOTEsICAtMzQ0LCAgLTQ2MSwgIC03NTUsICAtMjAxLCAgIDIxNywgICAtMzEsDQorICAtMzUzLCAgLTU0NywgICAtNDQsICAgMTIzLCAgIC02MSwgICAtNjgsICAgLTc5LCAgICAyOSwgICAgNjAsDQorICAgIDczLCAgIC01NywgIC00MDYsICAtNzY2LCAtMTI0MywgLTEyMDMsICAgMjQwLCAgIDQwMCwgICAxNjUsDQorICAgLTczLCAgLTI4MiwgIC02MDEsICAtMjEzLCAgLTE3MSwgIC0zNzUsICAgMzMyLCAgICAzNSwgIC0xMDMsDQorICAgLTI5LCAgLTIwNywgIC01NTMsICAtNDc2LCAgLTYzOCwgIC05MDgsICAgMTcyLCAgIC0yMiwgIC0xMzUsDQorICAtMTkyLCAgLTIzOSwgIC0xNjQsICAtMTAzLCAgLTExMSwgICAtNDcsICAgMTUzLCAgIDEyNSwgICAxMTAsDQorICAgIC0xLCAgLTIwMywgIC01NzAsIC0xMDMwLCAtMTQyNCwgIC01MzUsICAgMTU1LCAgICAgMSwgICAxNDcsDQorICAtMzMzLCAgLTY1MywgIC04NjUsICAtMTk3LCAgLTE1OCwgICAtMjEsICAgLTQ0LCAgICA5NSwgICAxMDgsDQorICAgMzg5LCAgIDU4OCwgICA0OTAsICAgIDMzLCAgLTIzNywgIC01MjQsICAtNjI4LCAgLTEzNiwgIC0yNjAsDQorICAgIDQwLCAgLTE3NywgIC00NjIsICAgNDUzLCAgIDg2MiwgICAzODAsICAgMTMxLCAgLTEzMCwgIC00MDUsDQorICAgODQyLCAgMTY3OCwgIDE4NDEsICAxNTQ5LCAgMTQ3NCwgIDEyNTYsICAxMDgyLCAgIDkwNSwgICA3NDIsDQorICAgMzcwLCAgMTIxNiwgIDE3NjgsICAxNjMzLCAgMTIxMiwgICA2MzYsICAgIDIyLCAgLTMzMCwgICAgNzEsDQorICAgLTc2LCAgLTI4MSwgIC03NDEsICAtNzQyLCAgIDg5OCwgICA2MTksICAgMjc3LCAgICA3MSwgIC0yMjIsDQorICAgLTMyLCAgLTI2NSwgIC01NTYsICAgLTI1LCAgIDk5NCwgICA2ODIsICAgMzA1LCAgIDEyNiwgIC0xNjUsDQorICAgIDczLCAgIDczOCwgICA4OTMsICAgOTY4LCAgIDk5MywgIDE3NjgsICAyMjczLCAgMTg0MCwgIDEzOTEsDQorICAgLTY5LCAgLTM0OSwgIC01ODUsICAgMjM0LCAgMTE1OCwgICA5MDMsICAgNjI2LCAgIDUxMCwgICAyNTEsDQorICAgIC0xLCAgIC05OSwgIC0yNzIsICAtMjEwLCAgLTYwMywgIC0zNTEsICAtNTQwLCAgLTgxMSwgIC0zODMsDQorICAgLTE2LCAgLTIzMCwgIC01MDQsICAgNDEwLCAgIDE0OSwgIC0yMDUsICAtMzQzLCAgLTY1MSwgIC02MzksDQorICAgMTAzLCAgICAtOSwgIC0yMjcsICAtMjA1LCAgLTU2MiwgIC03ODEsIC0xMDc5LCAtMTIwOCwgIC0xNTYsDQorICAgMTQzLCAgICA2MywgIC0xMzUsICAgLTY3LCAgLTMxNywgIC02MDIsICAtNzg0LCAtMTE1NCwgIC02NDAsDQorICAtMTQ0LCAgLTM5MSwgIC02NzQsICAtNjIyLCAgLTIwMCwgIC0yNTQsICAtNjYwLCAgLTk0NywgIC0zOTUsDQorICAgLTQwLCAgLTI1MCwgIC02MjUsICAgIDI3LCAgIDU0MywgICAgOTQsICAtMTMxLCAgLTM4NiwgIC02NzMsDQorICAtMTIzLCAgLTM3MSwgIC03NTcsICAtNDUxLCAgLTU2NCwgIC02MTQsICAtNDE1LCAgLTcxMSwgICAtMzUsDQorICAtMTE2LCAgLTMwOSwgIC01OTMsICAtMjY4LCAgIDIzOSwgICAtMzMsICAtMzM4LCAgLTY1MCwgIC0xMzUsDQorICAgIDk0LCAgIDI1MSwgICA1NTQsICAgIDU3LCAgLTMxMiwgIC00MjMsICAtMTU0LCAgIC01NywgICAyMzUsDQorICAtMjY4LCAgIC03MSwgICAzODEsICAgMTE0LCAgIC00NCwgICAtODcsICAgMTI1LCAgIDE3MywgICAxMzMsDQorICAxNTEzLCAgMTcxNCwgIDEyMzgsICAgNTM0LCAgIDI3NiwgICAzMTUsICAgNDYxLCAgIDQ1OSwgICA1MDgsDQorICAtMTMxLCAgIC0xOSwgIDExNDksICAgNjcwLCAgIDQ4NiwgICAzNTYsICAgMzA5LCAgIDM2OSwgICAyOTYsDQorICAtMjIzLCAgLTUwMSwgIC04OTksICAtNzIyLCAgIC03MCwgICAgIDYsICAgMTMxLCAgIDMxMCwgICAzOTQsDQorICAgLTk5LCAgLTMwMywgIC01MTcsICAgMjQ5LCAgICA2NCwgICAtNTMsICAgMTM1LCAgIC0xMSwgICA0NTMsDQorICAtMTQ3LCAgLTM5OSwgIC03MzAsICAtNDAxLCAgIDgxNywgICA3MzgsICAgODAyLCAgIDc0OSwgICA1NzUsDQorICAtMTU0LCAgLTQzNSwgIC03MzksICAgODAwLCAgIDU5MywgICAzNjYsICAgNTI5LCAgIDMxOCwgICAzMjYsDQorICAtMjI0LCAgICA0NSwgICAtMzksICAtMzg3LCAgLTUxNSwgIC01MTgsICAtNjA4LCAgLTM4NCwgIC0zMjEsDQorICAtMzE1LCAgLTM3NywgICAxNDMsICAtMTAxLCAgLTExMywgIC0zNzcsICAtMTc3LCAgLTE0NCwgICAtMTIsDQorICAgMTE3LCAgICA0MCwgIC0yMzksICAtNjUxLCAtMTA1MSwgIC01ODEsICAtNzM3LCAgLTk5MCwgIC0zMjgsDQorICAgIDI2LCAgIC01MCwgIC0xNTcsICAgLTIzLCAgLTQ1MywgIC0yODMsICAtNTMxLCAgLTU0NiwgICAxOTIsDQorICAtMjUyLCAgLTUwMSwgIC03NDMsICAtNTg5LCAgLTYyNywgIC00OTksICAtMzI4LCAgLTExOCwgICAtNzIsDQorICAtMzI0LCAgLTQ5NCwgIC0yNDQsICAtMzA2LCAgLTE0NCwgIC0xNzcsICAtMjYyLCAgLTEzNSwgICAtNzgsDQorICAgLTM2LCAgLTIzNCwgIC01MTksICAtOTYxLCAtMTI5MCwgIC0zMTQsICAtNDc5LCAgLTM3MSwgICAtNDUsDQorICAgLTk1LCAgLTI5MiwgIC01MzUsICAgIC04LCAgLTMwMCwgICAxMTIsICAtMTY0LCAgLTI3NywgICAxOTgsDQorICAgLTk5LCAgLTEyOCwgICA4ODAsICAgODM2LCAgIDU3OSwgICAzNTEsICAgIDIzLCAgIC05NSwgIC0yMTcsDQorICAgLTI3LCAgLTI1OCwgICAxMjQsICAxMDExLCAgIDU5NywgICA0MjUsICAgMTQ0LCAgICAgNywgICAtNzMsDQorICAgNDIxLCAgMTI5MywgIDE2NDAsICAxNjIzLCAgMTc0MiwgIDE2MTcsICAxNDk5LCAgMTI4NCwgIDEwMDYsDQorICAgLTk1LCAgIDc1MiwgIDE2ODAsICAxNTY5LCAgMTYxOCwgIDE0MzYsICAxMjAwLCAgIDk4MCwgICA3MTIsDQorICAgLTY5LCAgLTMwMCwgIC02ODMsICAtNDM1LCAgMTEzMiwgICA4OTksICAgNTA0LCAgIDMzMiwgICAxMDksDQorICAgLTc0LCAgLTMyMywgIC02MzcsICAgNTYzLCAgMTA3NCwgICA2MDgsICAgMzcxLCAgIDEwNSwgICAtNDksDQorICAgLTc4LCAgIDgzMSwgIDExOTQsICAxMTEwLCAgMTM3OCwgIDE0ODEsICAxNDkyLCAgMTM2NSwgIDEyMTcsDQorICAtMjU5LCAgLTEyMSwgIDE0NDAsICAxMzM0LCAgMTYyOCwgIDE0OTAsICAxNDM4LCAgMTIyMywgICA5MzMsDQorICAgLTgyLCAgLTMwNiwgIC02MTMsICAtMjIyLCAgLTM3OCwgIC02NzUsICAtNTQ1LCAgLTY3MSwgIC04NDUsDQorICAgIDUzLCAgLTEyNCwgIC0zNDcsICAgNDIyLCAgICA1MiwgIC0xMjUsICAtMjcwLCAgLTUyOSwgICAgIDksDQorICAgIDc5LCAgIC04OSwgIC0zMjAsICAtNjYyLCAgLTk5OSwgLTExOTksIC0xMjQzLCAgLTY3NiwgIC0yOTcsDQorICAgLTY4LCAgLTI3MywgIC02MTEsICAgMTM3LCAgLTE0NiwgIC0zOTcsICAtNjI3LCAgLTg0NSwgIC0yMjAsDQorICAtMTEyLCAgLTM0NiwgIC03OTcsICAtODI2LCAgIDIzNCwgIC0xMzIsICAtMTg4LCAgLTI3OCwgIC01MjIsDQorICAtMTU5LCAgLTQwNSwgIC03MzQsICAtNDE5LCAgIDI5MywgICAgNzQsICAtMTY3LCAgLTE2NywgICAxODQsDQorICAtMTUzLCAgLTQzNywgIC04MzMsIC0xMDgwLCAgLTMzNiwgIC00NzIsICAtNTYxLCAgLTM0MCwgIC0yNTMsDQorICAtMTY5LCAgLTQyMywgIC04MjAsICAtOTA0LCAgLTEzMSwgICAtMTksICAtMzQ2LCAgLTYwNCwgICAgMzEsDQorICAgIDMzLCAgIC0zMSwgICAzMTIsICAgIDYyLCAgLTE0OCwgICAgNDksICAgLTU5LCAgIDU2NCwgICA0ODYsDQorICAtMzA2LCAgLTMzMywgICAxOTQsICAgLTQ0LCAgICA2NywgICAgNzIsICAgMTQ3LCAgIDIwNSwgICAyNDMsDQorICAtMjA3LCAgIC00OSwgIDEzNjAsICAgOTgzLCAgIDk2OSwgICA5OTEsICAxMDE0LCAgMTExMCwgICA5NzMsDQorICAtMjExLCAgLTE3MiwgICA4ODMsICAgNjI3LCAgIDcxMSwgICA2NzQsICAgNzA1LCAgIDc5OCwgICA3NDYsDQorICAgLTg4LCAgLTMyNSwgIC03NjMsICAtOTc0LCAgIDY4NywgICA5MDgsICAgNTE0LCAgIDM4MiwgICAxNzIsDQorICAtMjkyLCAgLTYxMiwgIC04MDUsICAgIDYzLCAgIDEzMSwgICAyNzAsICAgMjU5LCAgIDM1MiwgICAzNDgsDQorICAtMjM1LCAgIC04NCwgICA5NTUsICAgODE4LCAgMTEyMCwgIDEyODksICAxNTU5LCAgMTQ4MCwgIDEyODUsDQorICAtMTgwLCAgLTQ2MSwgIC02MTQsICAgNjU3LCAgIDY5MSwgICA3NDUsICAgODU0LCAgIDc4MywgICA3MTMsDQorICAgLTk3LCAgLTMwOSwgIC00NzcsICAtNjE0LCAgLTc3NywgIC03MzQsICAtNzY4LCAgLTUyNiwgIC00NzIsDQorICAtMzQ0LCAgLTQ3NiwgICAtMzUsICAtMTY5LCAgICA0OSwgICAtNzcsICAtMTUwLCAgLTI0MCwgIC0xNDEsDQorICAgLTUyLCAgLTI2OCwgIC02MzksICAtOTE5LCAtMTI3OCwgLTExMTMsICAtMzQyLCAgLTMzMywgIC0xNTEsDQorICAgLTY4LCAgLTI0MiwgIC01ODUsICAgLTczLCAgLTIwOSwgIC00NzgsICAtMTU5LCAgLTQyOSwgICAxMzMsDQorICAtMTk3LCAgLTQ5OSwgLTEwMDUsIC0xMjY4LCAgLTI3MiwgIC0yMjQsICAtMTA1LCAgIC02NywgICAgMTcsDQorICAtMzYzLCAgLTYxOCwgIC00MTQsICAtMTE2LCAgIC02MiwgICAgMjAsICAgIDEwLCAgIDExNiwgICAxMDgsDQorICAtMTk1LCAgLTQ3NSwgIC05MDYsIC0xMjYwLCAgLTg5MSwgIC00NDEsICAtMjc3LCAgLTE0MiwgICAtMjgsDQorICAtMjI2LCAgLTUxOSwgIC05NTAsICAtNzAwLCAgLTI3NSwgIC0yNjYsICAtMTE2LCAgLTEwNSwgICAgODIsDQorICAgNDA0LCAgIDUxMSwgICA1MjAsICAgMzI3LCAgICAxNywgIC0xOTQsICAtMzMzLCAgLTUzNiwgIC01ODYsDQorICAtMTE0LCAgLTEzMCwgICAyNzYsICAgMjM3LCAgIDIwNCwgICAzNDIsICAgMTM1LCAgIC0xNiwgIC0xMTEsDQorICAgNjcwLCAgMTIwOCwgIDExNjgsICAgODYwLCAgIDc0MiwgICA2MDEsICAgNTI4LCAgIDQwMywgICAzMDksDQorICAgMzk3LCAgIDYyMSwgICA5NjYsICAgNzUyLCAgIDU3OSwgICAzOTgsICAgNDAwLCAgIDMyOSwgICAyNTIsDQorICAgMTkxLCAgIDE4MCwgIC0xMzcsICAtNDY3LCAgIDI3MiwgICAxMDYsICAgLTk1LCAgICAxNywgIC0xOTIsDQorICAgLTgwLCAgLTI5MCwgIC02MjYsICAgMTk0LCAgIDU5OCwgICAxOTYsICAgIDIxLCAgLTI4MSwgICAgNzcsDQorICAgNTEwLCAgIDg2NCwgIDExMDgsICAgODA3LCAgIDkzOSwgICA5MDIsICAgOTI1LCAgIDcxNywgICA0ODEsDQorICAgMTM3LCAgIDM2NywgICA1MzQsICAgNzY0LCAgIDY3MCwgICAzODIsICAgMjk2LCAgIDE1MywgICAgODQsDQorICAgMzAzLCAgIDQ5NywgICAxNDQsICAgLTg1LCAgLTEyNSwgIC01MzksICAtNDgyLCAgLTQ2NCwgIC03NjQsDQorICAgMjMzLCAgIDM0NywgICAgNjgsICAtMTQ3LCAgIDE2OSwgIC0yMTAsICAtMjQyLCAgLTIyNiwgIC00ODIsDQorICAgMzA3LCAgIDQyMiwgICAxNTQsICAtMTc1LCAgLTM4NiwgIC03MjIsICAtNzI0LCAgLTkwNCwgLTEwMTUsDQorICAgMzA5LCAgIDMwOCwgICAxNjAsICAgLTYwLCAgLTQ3MCwgIC00MjAsICAtNTk4LCAgLTc5MSwgIC0yMTksDQorICAgIDY4LCAgIDEyMSwgIC0xMzcsICAtNTYwLCAgLTE0NiwgIC00NDYsICAtNTE1LCAgLTQ5NCwgIC03MjksDQorICAgMTMwLCAgICA1MywgIC0yMjcsICAgIDQ2LCAgIDQ3NCwgICAgMzIsICAtMTYxLCAgLTE5MiwgIC00OTAsDQorICAgMjEzLCAgIDE2NCwgICAtNzEsICAtNDY1LCAgLTg3NiwgIC0xNjEsICAtNDU2LCAgLTU4NywgICAtNDgsDQorICAgMjE4LCAgIDExNywgICAgMzksICAgMTc3LCAgLTE5NCwgICAtODgsICAtMjI2LCAgLTQxOCwgICAgNTAsDQorICAgMjEwLCAgIDU0NywgICA1NjksICAgMjc5LCAgIDEyMSwgICAtNDQsICAgLTUwLCAgICAxMCwgICAtODQsDQorICAgIDU4LCAgIDE0MCwgICAxODIsICAgIC01LCAgIDI2NywgICAxMTcsICAgMTA2LCAgIDIxMSwgICAxOTgsDQorICAgNTM5LCAgIDgzNSwgICA5MTMsICAgNzE5LCAgIDYxNywgICA1NDQsICAgNTkxLCAgIDU2NSwgICA2NDIsDQorICAgMTUzLCAgIDU1OSwgICA4NzIsICAgNDYwLCAgIDIyMiwgICAxMDgsICAgMTg4LCAgIDE4MCwgICAxODMsDQorICAgMTU4LCAgIDExOSwgICAyODQsICAtMTUzLCAgLTI3MSwgICAyMjksICAgIDg3LCAgIDExMCwgICAtNTcsDQorICAtMTgzLCAgICA4MiwgICAxMTgsICAgIDIxLCAgICAxMywgICAgNDAsICAgMTE4LCAgIDE5MSwgICAxODUsDQorICAgMTYyLCAgIDg4OSwgICA2NTQsICAgMTA4LCAgIC0zNCwgICAyNDQsICAgNDg4LCAgIDU2MSwgICA1MzIsDQorICAgMTYzLCAgICA1NiwgICA2MDksICAgMzQxLCAgICA1MCwgICAzMjksICAgIDY4LCAgIDI2NiwgICAyMTgsDQorICAgMTAwLCAgIDIwNiwgICAgMTgsICAtMzA0LCAgLTEwNywgIC00MzYsICAtNDg3LCAgIC02NSwgIC0zMDYsDQorICAgLTg2LCAgIDE1NCwgICAxMzQsICAgLTMwLCAgIC00NSwgICAtNzMsICAtMTA0LCAgIC04MCwgICAtOTYsDQorICAgMjQ1LCAgIDMzMCwgICAgMTAsICAtNDQwLCAgLTg0OSwgLTEwODIsICAgIDc5LCAgICA0MCwgIC0yNjUsDQorICAgMTk2LCAgIDM3MiwgICAyNzIsICAtMTgxLCAgLTQ5MywgIC0zODksICAgMjc1LCAgICA4MCwgICAtNTksDQorICAgICAyLCAgIC0xMiwgIC0yNDYsICAtNTA1LCAgLTEwMCwgIC00MzYsICAgIDIxLCAgLTE4NywgIC00MzEsDQorICAtMjIxLCAgIC00OCwgICAgMzYsICAtMjcxLCAgLTE4NiwgIC0xNDcsICAtMTA5LCAgICAyNiwgICAgNzEsDQorICAgMjEzLCAgIDE0MCwgICAgNzIsICAtMzUxLCAgLTYyMCwgICAtODQsICAtMzYzLCAgICA2OSwgICAgNDYsDQorICAgIDkxLCAgIDE2NywgICAgLTMsICAgLTk1LCAgIC05OSwgIC0xMDUsICAgLTQ4LCAgIDExNCwgICAxNDcsDQorICAgMjU5LCAgIDI0OSwgICAxNzIsICAgNjA3LCAgIDQwNiwgICAgNTIsICAgIDU5LCAgLTE4OSwgIC0zMjAsDQorICAgMTE1LCAgIC04NSwgICAtNTQsICAgNTc0LCAgIDEyOCwgICAyMjYsICAgLTU5LCAgLTI1MywgICAxMzAsDQorICAgLTYyLCAgMTAzMywgIDEzMDgsICAxMDM1LCAgMTEyNywgIDEwOTgsICAxMDI5LCAgIDk2MSwgICA4MjMsDQorICAgIDM5LCAgIDM2NCwgICA3NTcsICAgOTQwLCAgIDcyOCwgICA2NjAsICAgNjU5LCAgIDU4MywgICA3NzAsDQorICAtMTE1LCAgLTMzOCwgIC03NjAsICAtNDcxLCAgIDM5NCwgICAgMzcsICAgNDQxLCAgIDE3OCwgICAgIDYsDQorICAgLTU3LCAgLTMwNSwgIC01MjUsICAgNzk2LCAgIDQ1MywgICAxODgsICAgIC00LCAgLTExNCwgICAyNDgsDQorICAgIDcxLCAgIDQ0NCwgICA3OTcsICAgNzMxLCAgMTA5NiwgIDExNTcsICAxMjIyLCAgMTAyOSwgICA4MTEsDQorICAgMTM1LCAgIDM1OSwgICA1NTEsICAgNDI1LCAgIDc0OSwgICA4MTUsICAgODc0LCAgIDcwNCwgICA1MDIsDQorICAgMTMyLCAgIDI0NywgICAgIDAsICAtMjA2LCAgLTQ0OSwgIC03NTAsICAtMjU4LCAgLTUxNCwgIC02MzMsDQorICAgMjQ4LCAgIDI0OSwgICAgOTEsICAgMTIxLCAgLTE5NSwgIC00OTksICAgLTkwLCAgLTI4MiwgIC00MzUsDQorICAgIDc4LCAgICAyMCwgIC0yNzcsICAtNjIzLCAgLTk4MywgLTEyMjQsICAtNDE1LCAgLTQ1OCwgIC02MzksDQorICAgMzQ3LCAgIDUwOSwgICAyMDgsICAtMTc5LCAgLTQ2NCwgIC03MjgsICAgLTc2LCAgLTIzNywgIC00ODYsDQorICAtMTAzLCAgLTM0MywgIC03NTYsICAtNzEzLCAgLTI2NSwgIC02MDksICAtMTkxLCAgLTM5OCwgIC02MzYsDQorICAtMTIxLCAgLTM4MywgIC03NDksICAgNTY3LCAgIDI1MiwgICAtMzYsICAtMzU0LCAgLTQxNywgICAtNTAsDQorICAgMjA0LCAgIDEwMCwgIC0xNDksICAtNjUwLCAtMTA4MSwgICAtNDcsICAgIC03LCAgLTI2MywgICAxMTEsDQorICAgLTQ2LCAgLTE4MCwgIC0yNjcsICAtMzI0LCAgLTU2MiwgIC0zOTQsICAtNjkyLCAgIDM5OCwgICAyOTIsDQorICAgNDgyLCAgIDY3MCwgICA2ODMsICAgNjI0LCAgIDQ0MiwgICAxNjUsICAgMTE2LCAgICAzNiwgIC0xNDksDQorICAgMTA4LCAgIDI0NywgICAyOTEsICAgMjQ3LCAgIDM1NSwgICAxMjIsICAgMTA5LCAgIDIyNCwgICAyOTYsDQorICAgLTE0LCAgIDk0NSwgICA5OTAsICAgODAxLCAgIDc1NSwgICA4MTUsICAgODQ3LCAgIDkxMywgICA4OTIsDQorICAgMjkyLCAgIDM0OSwgICA3MjUsICAgNDgyLCAgIDM4OCwgICAzMjksICAgNDI5LCAgIDYyMCwgICA2NjcsDQorICAgLTM0LCAgIDE5NywgICAyMTMsICAtMTI3LCAgICA4NCwgICA0OTQsICAgNjIwLCAgIDU3NSwgICAzNzUsDQorICAgMTI2LCAgIDIwNywgICAxNzIsICAgMTY3LCAgIDM2MiwgICAyMDIsICAgMjk2LCAgIDM5NSwgICA0NTUsDQorICAgIC02LCAgIDI1MCwgICA1MzksICAgNDY3LCAgIDYzNiwgICA4MDEsICAxMTQ5LCAgMTI4NywgIDExMTgsDQorICAgIDI3LCAgIDI0MCwgICAzNjksICAgMjgwLCAgIDQ0MCwgICA0MTEsICAgNjM0LCAgIDg5MiwgICA5NTMsDQorICAgMTU5LCAgIDE3MCwgICAtNTgsICAtMzk1LCAgLTc5NywgIC02OTAsICAgIDc3LCAgLTIxMSwgIC0zMzQsDQorICAgIC01LCAgIC0yOCwgICAtMTMsICAgLTc0LCAgLTMzNSwgIC02MDMsICAgMzAwLCAgICA4OCwgIC0yMDUsDQorICAgIDgyLCAgIC0zMywgIC0zNjQsICAtNjk4LCAtMTIwMywgLTExNTMsICAgMTEwLCAgLTE0NiwgIC0yODksDQorICAgMTEzLCAgICAgMSwgIC0yNDMsICAtNTg4LCAgLTk5NCwgIC00OTYsICAgNDE0LCAgIDE2MCwgICAgNDIsDQorICAgLTU2LCAgLTI0NywgIC00NDAsICAtNjkzLCAgLTk5NiwgIC00NzksICAgIDExLCAgLTE3OCwgIC0zNTcsDQorICAtMTUxLCAgLTM1MywgIC0zMjcsICAtMjExLCAgLTM0MCwgICAxNDEsICAgIDY1LCAgIDQyNSwgICA0NTMsDQorICAgIDM0LCAgLTE2OSwgIC00NTUsICAtOTMyLCAtMTIxNSwgICAxMzgsICAgNDk5LCAgIDI1NiwgICAzMjQsDQorICAgIDY4LCAgIDEzOSwgICAtMTUsICAtNTQ3LCAgLTQ3OCwgICAgMTcsICAgMzA2LCAgIDUwMiwgICA0ODEsDQorICAgLTMyLCAgLTEzNCwgICA0NDUsICAgMTI5LCAgLTE0MywgIC0yNDQsICAtNTAzLCAgLTUwNywgIC01OTksDQorICAgIDYxLCAgLTE0MCwgIC0zNDUsICAgNDk2LCAgIDQ1OCwgICAgLTIsICAgIDIwLCAgLTIyNywgIC01MTQsDQorICAgMzk0LCAgMTc2NSwgIDE2NjYsICAxMzM5LCAgMTExNywgICA4MDYsICAgNjQyLCAgIDQ3OSwgICAzODAsDQorICAgMjE1LCAgIDUxOSwgICA5MjAsICAxMDUzLCAgMTA5MCwgICA3OTEsICAgNTI4LCAgIDI5MCwgICAxNTUsDQorICAgLTU0LCAgLTIzMywgIC02NDcsICAtNjAyLCAgIDYzOSwgICAyOTQsICAgIC0yLCAgLTE2NywgIC00NDIsDQorICAgLTc4LCAgLTMxNSwgIC03OTEsICAtMTEzLCAgIDgyMCwgICA0MDMsICAgMTU4LCAgLTExNiwgIC0zNTYsDQorICAgNTI5LCAgMTg1MSwgIDIwMDMsICAxMjI4LCAgIDYyMiwgICAtNDEsICAtNDE2LCAgIDM0NCwgICA4MTksDQorICAtMTA1LCAgLTM3OSwgIC0yMzYsICAxMjI0LCAgIDg5MywgICA3NDksICAgNTY4LCAgIDM1NiwgICAyMTQsDQorICAgLTE3LCAgLTE5OSwgIC0xNDQsICAgIDUwLCAgLTI4MywgIC0yNDcsICAtNTc4LCAgLTg0NiwgLTEwODcsDQorICAgIDY5LCAgIC0xMSwgIC0zODEsICAtMjA2LCAgIDIwOSwgIC0yODQsICAtMzg3LCAgLTQxNiwgIC03MTYsDQorICAgIDM5LCAgICAtNSwgIC0xNDUsICAtMzc0LCAgLTY4MiwgIC05MDksIC0xMDc0LCAtMTE2OSwgLTEwNjYsDQorICAgMjg3LCAgIDIyNiwgICAgNjcsICAtMjIxLCAgLTY2MiwgIC0xNzEsICAtNDIxLCAgLTY0MiwgIC03MDcsDQorICAtMTMyLCAgLTM0OCwgIC01MzgsICAtNDQ4LCAgIC0yMCwgICAgLTQsICAtMzU0LCAgLTc0OCwgIC05MzMsDQorICAgICA0LCAgIC03NSwgIC0yODksICAtNTk4LCAgIDMxNywgICAgNTIsICAtMjA4LCAgLTI5NywgIC01NTksDQorICAgLTg4LCAgLTI2NCwgIC0zNTgsICAtNTg5LCAgLTYzMSwgIC0yNDgsICAtNTIzLCAgLTgyMiwgLTEwNzEsDQorICAgIDcwLCAgICAtOCwgICAgNTQsICAtMzE0LCAgLTUxNSwgICAgOTIsICAtMTQ2LCAgLTI3NCwgIC00OTMsDQorICAgMTk5LCAgICA2MiwgICAzOTEsICAgMTU4LCAgLTE0MSwgICAgNzEsICAtMjE5LCAgLTIwMywgIC0yMDcsDQorICAgMTUyLCAgICA0MCwgICAzMjksICAgMTYyLCAgIC0yOSwgICAgNDgsICAtMTQ5LCAgIDEwOCwgICAxMjcsDQorICAgNjM1LCAgMTA1OCwgICA4ODMsICAgNDkyLCAgIDM3MiwgICAzMTIsICAgMzE3LCAgIDI3NCwgICAyNDEsDQorICAgMjY3LCAgIDcyMiwgIDEyNTYsICAgODgyLCAgIDYyNSwgICAyNDgsICAgICA4LCAgIC04MSwgICAtNjAsDQorICAgLTU4LCAgLTEzOCwgIC0yOTEsICAtNjAwLCAgIC0xMiwgICAgLTIsICAgLTM5LCAgIDE0NywgICAxMTcsDQorICAtMTA3LCAgLTM0NSwgIC01MTMsICAgNDU5LCAgICA3NiwgICAgOTIsICAtMjcyLCAgIDM4OCwgICAyNjIsDQorICAgMzYyLCAgIDUxNiwgICAyMDMsICAtNDA5LCAgLTcxNiwgIC04MzEsICAtMzMxLCAgIDE4NSwgICAyMDksDQorICAtMTE3LCAgLTM5MSwgIC0yOTgsICAgNjcxLCAgIDI5MiwgICA1MzgsICAgMjU3LCAgIDE2NiwgICAtMzgsDQorICAtMTAyLCAgLTMxOSwgIC0xOTQsICAtMjgzLCAgLTU3MywgIC0yNjIsICAtNTc5LCAgLTIxOSwgIC00NDQsDQorICAtMjM1LCAgICA3OCwgICAgMTEsICAtMTY4LCAgLTEwMSwgIC0yMjksICAtMjYzLCAgLTMyMSwgIC0xMjMsDQorICAgIDcwLCAgICA1MCwgIC0xNzAsICAtNTk5LCAgLTk5NiwgIC01ODgsICAtMjYzLCAgLTUxNiwgIC00NTUsDQorICAgMzk0LCAgIDM2MywgICAyMjksICAtMTM2LCAgLTUzOCwgICAgMjEsICAtMTgzLCAgLTM0OCwgIC0yMDEsDQorICAtMTI0LCAgLTM2OCwgIC02NDAsICAtODc5LCAgLTg0NywgIC0yMDksICAtNDA5LCAgLTQ5NCwgIC01MTUsDQorICAtMTI3LCAgLTM0MSwgIC01NDEsICAtNDI1LCAgLTUxMCwgICAtMTAsICAtMjUyLCAgLTQ3MywgIC0yOTEsDQorICAgIDg0LCAgIC02OSwgIC0yMDEsICAtNjc2LCAgLTg2OCwgICAxMDMsICAtMzExLCAgLTEzMiwgIC0zMjAsDQorICAgICA1LCAgLTE3MywgIC0xODgsICAtMjk3LCAgLTYyOCwgICAxOTcsICAgLTU3LCAgICAgNywgICAtMTEsDQorICAgIDQ5LCAgLTE2MCwgICAgNTYsICAgNTU4LCAgIDExMSwgICAgMzMsICAtMzExLCAgLTQ0MCwgIC00NjMsDQorICAgIC0xLCAgLTI0NiwgIC0zMDcsICAgODYyLCAgIDQ1MywgICAxMzksICAtMTcwLCAgLTM1NSwgIC0yMzIsDQorICAgMjc5LCAgIDk2NiwgIDE2NDIsICAxNDc4LCAgMTQ2MywgIDExMjMsICAgNzk1LCAgIDUyNSwgICAzMzksDQorICAtMTk3LCAgIC0zOCwgIDE3MDIsICAxMzMxLCAgMTI1MiwgICA5NTAsICAgNjkyLCAgIDUwNCwgICA0MjYsDQorICAtMTA4LCAgLTM0NCwgIC04NjEsIC0xMTcyLCAgIDQ0NCwgICAzNTQsICAgIDg4LCAgIC00NiwgIC0yMjAsDQorICAgLTUzLCAgLTMyMSwgIC00OTQsICAxMTEzLCAgIDc0NCwgICAzNjQsICAgMTk4LCAgIC0zNCwgICAtNzUsDQorICAgNDU3LCAgIDk1NSwgIDExNzcsICAxMjE0LCAgMTQyNywgIDE0NTcsICAxMzQ1LCAgIDkxNywgICA1MzksDQorICAgLTY5LCAgIDE5OSwgICA4OTcsICAxMTQwLCAgMTM0MywgIDExODMsICAgOTc3LCAgIDc0MiwgICA1MjIsDQorICAgMTIyLCAgICA0NCwgIC0yNjksICAgIDI3LCAgLTE1NSwgIC01NjIsICAtMzA3LCAgLTU5MCwgIC03NzMsDQorICAgMTU0LCAgICA0MiwgIC0xNjAsICAgMjUyLCAgLTEyOSwgIC0zMDUsICAtNDcxLCAgLTczMywgIC0zNzEsDQorICAgMTM1LCAgIDE4NSwgICAtODIsICAtNDE2LCAgLTcyMiwgIC05MTMsICAtNTA0LCAgLTc0MywgIC04ODAsDQorICAgMTQ5LCAgIDIxNCwgICAtODQsICAtMzI5LCAgLTY4MCwgIC04MzUsICAtNDI2LCAgLTY2MSwgICAtODEsDQorICAtMTI4LCAgLTM4MCwgIC03MzUsICAtOTk4LCAgLTMzNywgICAgMTcsICAtMTgyLCAgLTQ2NywgIC02OTcsDQorICAgLTg0LCAgLTI5MCwgIC01MTAsICAtNTkyLCAgICAxMywgICA0NDAsICAgMTU0LCAgIC0zOCwgIC0yNzksDQorICAgIDcwLCAgIC02MSwgIC0yNDYsICAtNzI3LCAtMTA0NywgICAtODAsICAtMzgxLCAgLTUzNSwgIC03MDQsDQorICAgMTc4LCAgICAtMiwgIC0xNDYsICAtNjcwLCAgLTkzOCwgICA0ODIsICAgMTM4LCAgICA2MywgICAgNjUsDQorICAgLTExLCAgICAxNSwgICA3NzIsICAgNDQzLCAgIDE0MiwgICAtMjAsICAtMjA5LCAgLTEyNiwgIC0xNjEsDQorICAgLTMyLCAgLTI0OSwgICAgOTUsICAgNTUyLCAgIDEyNCwgICAgMzAsICAtMzQzLCAgICA4MiwgICAtODYsDQorICAgMTQ4LCAgIDc1MSwgIDE1MTUsICAxMTA1LCAgIDg2NywgICA2MDYsICAgNDc0LCAgIDQ0OCwgICAzOTksDQorICAtMTYzLCAgLTI1NywgICA4OTksICAxMDk3LCAgIDkwNiwgICA3NTEsICAgNTAyLCAgIDM5MCwgICAyOTQsDQorICAgLTUxLCAgLTI1OCwgIC00NDcsICAtODA2LCAgLTM2OCwgICA3NjMsICAgNDY0LCAgIDM2NCwgICAxODMsDQorICAtMTY2LCAgLTM3NCwgIC0zNjcsICAgIDg3LCAgICAzNSwgICAzOTksICAgNDE4LCAgIDg1NiwgICA4MzMsDQorICAtMjA1LCAgLTMxMCwgICA1ODgsICAgNzc4LCAgIDc4NSwgIDEwNjUsICAxMTE4LCAgMTI0NSwgIDExNTcsDQorICAtMTczLCAgLTMxMiwgICAxMDcsICAgMzQ1LCAgIDQwMCwgICA3OTAsICAgODcwLCAgMTExMywgIDEwMDEsDQorICAgIC03LCAgLTEyMCwgIC0zODcsICAtNDEwLCAgLTYxNCwgIC05NDMsICAtMjI2LCAgLTM4NCwgIC00OTEsDQorICAtMjAzLCAgLTI4OCwgICAtNTEsICAtMzMxLCAgIC05MCwgIC0xNzgsICAtNDA4LCAgLTU3MywgIC0zMzgsDQorICAgIDU2LCAgIC0yOSwgIC0yNzMsICAtNjI3LCAtMTA0MSwgIC03OTgsICAtMjQ3LCAgLTQ2NywgICAxNDgsDQorICAgIDY2LCAgICAtMiwgIC0yMDUsICAtMjA1LCAgLTU3NSwgIC0zNDksICAgLTU3LCAgLTM1MiwgICAtNTgsDQorICAgLTQ1LCAgLTIyNSwgIC00NzEsICAtOTI0LCAgLTQ5NywgICAgNzcsICAgLTMyLCAgICA0NCwgIC0xMzUsDQorICAtMjc3LCAgLTQ5MSwgIC00OTcsICAtNTAyLCAgLTQyNCwgIC0yMDIsICAtMTM3LCAgICA3NywgICAgOTYsDQorICAgIDI2LCAgLTE3OSwgIC00NjksIC0xMDA4LCAtMTI2MCwgICAyNjIsICAgLTM1LCAgLTEzMiwgIC0yNTksDQorICAgLTY2LCAgLTIzMiwgIC00NDcsICAtNTMzLCAgLTc4OSwgIC0xOTEsICAtMTAwLCAgLTI2NywgICAzNjR9Ow0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyAqIDFzdCBzdGFnZSBjb2RlYm9vazsgMm5kIHNwbGl0OiAgIGlzZjkgdG8gaXNmMTUNCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorc3RhdGljIFdvcmQxNiBkaWNvMl9pc2ZbU0laRV9CSzIqN10gPSB7DQorDQorICAxMzU3LCAgMTMxMywgIDExMzYsICAgNzg0LCAgIDQzOCwgICAxODEsICAgMTQ1LA0KKyAgIDYzNiwgICA2NDgsICAgNjY3LCAgIDU2OCwgICA0NDIsICAgMjE3LCAgIDM2MiwNCisgICA0MjcsICAgNDQwLCAgIDY3NCwgICA1MjQsICAgMzMyLCAgIDExNywgIC00MTcsDQorICAgMTIxLCAgIDI5NSwgICA0NjgsICAgNDY1LCAgIDIzMCwgICAgNDQsICAtMjIxLA0KKyAgLTE0NywgIC0yNDAsICAgMTQ5LCAgICA4MCwgICAzOTAsICAgMjc4LCAgIDEwNiwNCisgIC00MTgsICAtNTU2LCAgIDU1MiwgICA1MTEsICAgMjM1LCAgIDE0NCwgICAtOTUsDQorICAgIDQzLCAgIDE5MywgICAyNzQsICAgMTUwLCAgICA2NywgICAgMzQsICAtMjczLA0KKyAgIC00MywgIC0xMjYsICAgMTcxLCAgIDQxNiwgICAyODIsICAgIDYzLCAgLTM1NCwNCisgIC0zNzIsICAgLTg2LCAgLTM0NCwgIC0xMDgsICAgLTk0LCAgLTE4MiwgICAtODksDQorICAtNjAwLCAgLTg0MCwgIC0yMDAsICAgNDY1LCAgIDI1OCwgICAtMTEsICAtMjUzLA0KKyAgIC00OCwgICAzMjksICAgIDk3LCAgLTI5MCwgIC01NDMsICAtNzk1LCAgLTM1NCwNCisgIC01NzAsICAtMTE3LCAgIDE4NywgICAgMTAsICAtMTMzLCAgLTQxNiwgICAtNzYsDQorICAtNjE4LCAgLTEyOSwgIC0yNDcsICAtMzcxLCAgICA0NSwgICAtNzYsICAgMjc3LA0KKyAtMTAyMiwgLTEwNzksICAgMTI2LCAgIDQ3NCwgICAyNTQsICAgMTI3LCAgICA1MiwNCisgIC0yODEsICAgIDc2LCAgLTE2NywgIC0zNjEsICAtMjgzLCAgLTU1MSwgIC0yODMsDQorICAtMTE5LCAgIC01MiwgICAgLTEsICAgMTM0LCAgIC0zMiwgIC0yMDQsICAtNDE1LA0KKyAgMTA2NCwgICA4MjcsICAgNjM3LCAgIDY4NCwgICA0NjQsICAgMjA5LCAgICAxMiwNCisgICA0ODIsICAgNDE2LCAgIDQ0OSwgICAzNzEsICAgMzM1LCAgIDI5NCwgICAxOTQsDQorICAgNzE5LCAgIDU3NiwgICAzNjUsICAgMTM1LCAgIDExMywgICAgOTEsICAtMTk5LA0KKyAgIDI5OCwgICAxNzYsICAgNDkzLCAgIDM2NiwgICAxOTQsICAgMTYzLCAgICAzNiwNCisgICAtMzUsICAtMjM2LCAgLTI1OSwgICAtMzYsICAgIC00LCAgICA5OSwgICAxNTIsDQorICAgLTk4LCAgLTMwNiwgICAtMjcsICAgMjI4LCAgICA5MCwgICAxMTEsICAgLTg2LA0KKyAgICA5MSwgICAgMTMsICAtMjExLCAgLTI1OCwgIC0xMDYsICAgIDg2LCAgIC02NCwNCisgICAgNzMsICAgLTM1LCAgIC01NywgICAtMzEsICAgMTYyLCAgICAzNSwgIC0xOTIsDQorICAtMTA5LCAgLTMzNSwgIC02MjksICAgLTY2LCAgIC02MSwgIC0xMjgsICAgMzIyLA0KKyAgLTQ5NSwgIC02NjksICAtNzI4LCAgIDE5MywgICAgMzEsICAtMjIwLCAgIDEyMiwNCisgICAzMjQsICAgIDk1LCAgIC04OSwgICAtOTEsICAtNDA5LCAgLTcxMCwgIC0xNTQsDQorICAgICAwLCAgLTIzNCwgICAgOTIsICAgIDMzLCAgLTM0MywgIC02MDksICAtMjIwLA0KKyAgLTM0MywgIC00MDgsICAtNDc2LCAgLTY1NSwgIC0xNTMsICAgIDgyLCAgIDIyMiwNCisgIC00OTAsICAtNzQ1LCAgLTI1NSwgICAgNDksICAgLTQ4LCAgIDEzNSwgIC0xMjcsDQorICAgMTE5LCAgIC02NywgIC0zMjgsICAtMzkwLCAgLTI3MiwgIC01NDUsICAgLTU2LA0KKyAgIC01NywgIC0xMzAsICAgLTEwLCAgICAtNywgIC0xNjQsICAgLTQ3LCAgIC0yMiwNCisgICA5ODQsICAxMDY0LCAgIDk2MSwgICA1NjgsICAgMjEwLCAgIC0yNywgICAgMTYsDQorICAgODExLCAgIDY5MSwgICA3NTQsICAgNTE0LCAgIDIyNCwgICAtMzUsICAgMTY2LA0KKyAgIDY2MiwgICA3MDQsICAgNjE4LCAgIDM4NiwgICAgNTcsICAtMjExLCAgLTI1NywNCisgICA1MTAsICAgMzU5LCAgIDQxOCwgICAzOTMsICAgIDkxLCAgLTE0NCwgICAtMTgsDQorICAtMTkzLCAgIC0zMSwgICAtMjcsICAgMjIzLCAgICA4OSwgIC0xNDMsICAgIDI0LA0KKyAgLTExMiwgICAtOTgsICAgNDcxLCAgIDMxOSwgICAxODUsICAgICAzLCAgIDE3NSwNCisgICAyNTIsICAgMTQ2LCAgIC00NywgICAyNzIsICAgIDQ4LCAgLTIxMSwgIC0yMzQsDQorICAgMTQ2LCAgICA2OSwgICAyMDMsICAgMzY0LCAgICA2OCwgICAtNTIsICAgIDUxLA0KKyAgLTI1OSwgIC00NzgsICAtNjk3LCAgLTM0OSwgIC03NTgsICAtNTAxLCAgICA2MywNCisgIC01MDEsICAtNzY5LCAgLTI4OSwgICAgNzksICAtMzExLCAgLTQ5NywgIC0xMDYsDQorICAgMjUxLCAgICA1MywgIC0yMzUsICAtNDY5LCAgLTg5NSwgIC04ODQsICAgMTQ1LA0KKyAgLTQxNiwgIC01NTEsICAgMTQwLCAgLTEzMywgIC01MjMsICAtNzc1LCAgICA0NCwNCisgIC0zMjYsICAtNDIzLCAgLTcxMywgIC00OTcsICAgLTg2LCAgLTQzMSwgICAgOTksDQorICAtNzU3LCAgLTc3MiwgIC0xNjAsICAgLTc2LCAgIC00NiwgICAtMzIsICAgMzc5LA0KKyAgICA4NSwgICAtMzUsICAtMjAwLCAgLTQwMSwgIC02NjMsIC0xMDQwLCAgLTI0NywNCisgIC0xODAsICAtMzMwLCAgIC05MiwgIC0zNzYsICAgIDI3LCAgLTE4MywgIC0xMTAsDQorICAxMjc5LCAgMTA4NiwgICA3ODEsICAgNTAyLCAgIDMyNCwgICAxNjQsICAgMTU3LA0KKyAgIDY4MiwgICA0NjYsICAgNDQ5LCAgIDI3NywgICAxNDYsICAgIDI4LCAgIDQwOSwNCisgICA2MzUsICAgNDcyLCAgIDM5MCwgICAxMDcsICAtMjMyLCAgLTUzOCwgIC0xMzksDQorICAgMTk2LCAgIDM5NiwgICAzMzIsICAgMjEzLCAgIDIwOSwgICAtMjksICAgLTgxLA0KKyAgIDE1MCwgICAtOTUsICAtMzEyLCAgICA3NiwgICAtNzcsICAtMzIwLCAgIC01MCwNCisgICAgNDYsICAgICA5LCAgICA0NywgICAxNzUsICAgMTM5LCAgICAzMCwgICAzODQsDQorICAgMjE4LCAgIDIwNiwgICAtMjQsICAtMjUwLCAgIC05NiwgIC0yNzYsICAtMTgzLA0KKyAgICAyNiwgICAxMTksICAgIDM4LCAgICAxNCwgICAgLTQsICAtMTMzLCAgIC01MiwNCisgIC00NzcsICAtNjE0LCAgLTk4NywgIC03MTUsICAtNjMxLCAgLTgxMywgICAyMDAsDQorICAtNzQ0LCAtMTAwOSwgLTEwNjUsICAtNzQ1LCAgLTYzMSwgIC0xNzEsICAgIDE4LA0KKyAgLTEzNywgIC0yNTEsICAtNDgzLCAgLTYxMywgIC05ODAsIC0xMjAzLCAgICAxMiwNCisgIC02MDUsICAtNzY3LCAgLTU2MiwgIC02ODYsIC0xMDg4LCAgLTUxNSwgICAgNTgsDQorICAtMjAyLCAgLTQyOCwgIC03ODIsIC0xMDcyLCAgIC05NiwgIC0yMzQsICAtMTc5LA0KKyAgLTQ4MCwgIC03MDksIC0xMDcwLCAgLTg5NywgIC0xMzEsICAgLTkyLCAgIDMyMSwNCisgIC0xNDUsICAtMTkzLCAgLTUxMiwgIC03MjksICAtNTcyLCAgLTc2NSwgIC0yMTAsDQorICAtMzMxLCAgLTU4NSwgIC01MjUsICAtNjMxLCAgLTI4MSwgIC0yMDgsICAtMzAzLA0KKyAgMTE2NSwgIDExMDQsICAgOTM5LCAgIDgyOCwgICA3MTYsICAgNDI2LCAgIDE1NSwNCisgICAgIDYsICAtMTA5LCAgIDgyMCwgICA3NzgsICAgNDE1LCAgIDExMywgICAtMjcsDQorICAgMzgxLCAgIDMzOSwgICAzMTQsICAgMjY1LCAgIDEyMSwgICAgLTksICAtNDc0LA0KKyAgLTM3MywgICAgNDcsICAgNTg0LCAgIDQ0MiwgICAgOTksICAtMjMxLCAgLTExMywNCisgIC00OTYsICAgLTM4LCAgLTI4NSwgICAyNjIsICAgMzA1LCAgIDE3MCwgICAgIDQsDQorICAtNTg3LCAgLTU1NiwgICAgNjksICAgIDY2LCAgIDQ3MSwgICAzNTQsICAgIDEzLA0KKyAgLTEzOCwgICAgNzAsICAgLTE4LCAgIDEwNiwgICAgNjcsICAgMTY3LCAgLTMwMiwNCisgIC00NDUsICAtMTQxLCAgIDE4NSwgICAxOTEsICAgMTUxLCAgICA4MywgIC0xMzMsDQorICAtMjU3LCAgLTUyMSwgIC03MjAsICAtMTk4LCAgIDEzNCwgICAtNDYsICAtMTgyLA0KKyAgLTgxOSwgLTExNjgsICAtNzc3LCAgIDUxMiwgICAzNTksICAgIDk1LCAgLTExMywNCisgICAxMzcsICAgIC0yLCAgIC03NCwgIC0xMzgsICAtNDAxLCAgLTExNCwgIC0zNzEsDQorICAtMjQyLCAgLTQ2NiwgICAyMDQsICAgMjIzLCAgIC0zMSwgIC0yMTIsICAtMTkyLA0KKyAgLTUzMiwgIC02MzcsICAtNDY2LCAgLTY4NiwgICAyNTYsICAgMjc3LCAgLTEzOSwNCisgLTExNDEsIC0xMjQ0LCAgLTM4MSwgICAtNzUsICAgLTU0LCAgICAxNCwgICAgODgsDQorICAtMzExLCAgIDExNSwgIC0xNDMsICAtNDk5LCAgLTM0MywgICAxMjQsICAtNDE2LA0KKyAgLTYxNiwgIC0xNDcsICAtMTM1LCAgICA0MywgICAgLTQsICAgMTIxLCAgLTM2OSwNCisgICA4MzUsICAgNzgzLCAgIDY0MSwgICAzOTAsICAgMzU1LCAgIDM1MCwgICAgNjQsDQorICAgIDcyLCAgIDE5NCwgICA0NDMsICAgNDY3LCAgIDQzNiwgICAyMTksICAgMzcyLA0KKyAgIDQ2NCwgICAzNjksICAgMTkyLCAgICAgNCwgIC0xNTYsICAgLTcyLCAgLTIyNiwNCisgICAgNTcsICAgMjA2LCAgIDMwMywgICAyMDUsICAgMTg4LCAgIDEwMSwgICAyNjUsDQorICAgLTQwLCAgLTIwNSwgIC00ODgsICAtMTg0LCAgIDI3NiwgICAgNjQsICAgLTI2LA0KKyAgLTIxNywgIC00MzMsICAtMjk3LCAgIDEzNywgICAzMjgsICAgMzA4LCAgLTI4OSwNCisgICAzNzgsICAgIDgxLCAgLTMwOCwgIC00NjUsICAgIDU3LCAgIC0zNywgICAyMjcsDQorICAtMTAwLCAgICAyNCwgICAtMzYsICAtMTUxLCAgIDE5OSwgICAgIDgsICAgMTQzLA0KKyAgLTQyNiwgIC02OTcsIC0xMDU5LCAgLTEzMywgICAzODgsICAgMTYxLCAgIDMyMSwNCisgIC02NDQsIC0xMDIzLCAtMTI3MSwgICAgMzksICAgIDY2LCAgLTEyMywgICAgNzAsDQorICAgMzcyLCAgIDE3NywgIC0xNzMsICAtNTU2LCAgLTU1MywgIC0zMDQsICAtMTg5LA0KKyAgLTExNywgIC0zNjksICAtNDI1LCAgLTEyMiwgIC00NjIsICAtMTUyLCAgIC03MywNCisgIC02NDksICAtODUwLCAtMTE4OSwgIC03NjcsICAgNDk3LCAgIDM2MCwgICAyMjIsDQorICAtNzk4LCAtMTEzOSwgLTE0NTUsICAtMTkwLCAgIDQzMCwgICAyMzQsICAgMTc5LA0KKyAgICA0MiwgICAtOTQsICAtNDA1LCAgLTY5MiwgICAgMzgsICAtMjAyLCAgLTI0NiwNCisgIC0xNjksICAtMzY2LCAgLTI5MCwgICAtODgsICAgLTY0LCAgICAzMiwgIC0yOTIsDQorICAxMDEwLCAgIDkyMywgICA5MzgsICAgNzEwLCAgIDQ2NSwgICAyMzAsICAgMzQyLA0KKyAgIDIxNywgICAzMDAsICAxMDU0LCAgIDY3NSwgICAgNjgsICAtNDU4LCAgLTE3OSwNCisgICAgNzgsICAgNDUzLCAgIDMxNiwgICAgMTgsICAtMjM3LCAgLTQ5NiwgIC0yNDMsDQorICAgMTY3LCAgICAyMSwgICA0MjQsICAgMjE1LCAgIC05MSwgIC0zMDMsICAtMTcwLA0KKyAgLTI5MCwgICAtODEsICAgLTcwLCAgIC02NywgICAgNDAsICAgIDU0LCAgIC01OSwNCisgIC0zNTMsICAtNDI3LCAgIC05MCwgICAgNTMsICAgIDk0LCAgICAgOSwgICAgNTQsDQorICAgLTI4LCAgIDMxOCwgICAyODMsICAgIDE1LCAgLTI0MCwgICAtNTgsICAgIDc5LA0KKyAgIC03NSwgIC0xMjEsICAgMjI5LCAgICAzNSwgICAgNTgsICAgICA2LCAgLTEzMywNCisgIC0zNTEsICAtNTE0LCAgLTc0NCwgIC04MzQsICAtNzA1LCAgLTEzNywgICAxNjQsDQorIC0xMTI0LCAtMTM4OCwgLTEwNTUsICAtMjMwLCAgIC03MywgICAgNDAsICAgIDM2LA0KKyAgLTE2MywgIC0yMzMsICAtNTMyLCAgLTc4NSwgLTExNzAsICAtNjk3LCAgICA5NiwNCisgIC03ODgsICAtOTU5LCAgLTI0NiwgIC00MzAsICAtNjI0LCAgLTE2NSwgICAgLTgsDQorICAtODU2LCAgLTU0MCwgIC02MzAsICAtOTA3LCAgLTMzNywgICAtNzAsICAgIDc2LA0KKyAgLTkzNywgLTEwNDIsICAtNjU5LCAgLTczMywgIC0yMDgsICAgMTk5LCAgIC0yNiwNCisgIC01MjMsICAgIDc4LCAgIC05OCwgIC01MDEsICAtODY5LCAgLTg5MCwgICAtODEsDQorICAtNjI0LCAgLTcwMywgICAtNDUsICAtMzQ4LCAgIC0yNSwgICAgODcsICAtMTg2LA0KKyAgMTAwNSwgICA4MjMsICAgNTQ2LCAgIDI0OSwgICAgOTAsICAgLTIyLCAgIDIwNywNCisgICAyOTgsICAgMzk3LCAgIDM4MSwgICAzMTksICAgMjAwLCAgICA2MiwgICAzMDMsDQorICAgNDczLCAgIDM3OSwgICAxMzMsICAtMjQ3LCAgLTYzMiwgIC00NDEsICAgIDc1LA0KKyAgIDI4NCwgICAyMDgsICAgMzkxLCAgIDExNSwgICAtMjUsICAgIDQ0LCAgICA5NSwNCisgICAtNzIsICAgIDc5LCAgIC05NSwgICAtNjMsICAtMTI5LCAgLTI5MywgICAyMDMsDQorICAtMTY0LCAgLTM0OSwgICAxMTUsICAgMTIyLCAgICA2OSwgICAgLTEsICAgMzc4LA0KKyAgIDM0OCwgICAxNzAsICAgIDk5LCAgICA1OCwgIC0xNzksICAtMzAyLCAgIDE4OCwNCisgIC0xOTAsICAgIC0yLCAgIDE1MCwgICAgMjMsICAgLTUxLCAgIC0xMSwgICAyMTYsDQorICAtNjE1LCAgLTg2MywgLTEwOTAsIC0xNDI3LCAgLTgwMiwgICAtNDgsICAgIC02LA0KKyAgLTk2MSwgLTEyNzYsIC0xNTQ4LCAgLTcyNywgICAtNTgsICAgIDU2LCAgIDIyMywNCisgIC0xMjQsICAtMjU1LCAgLTU2MSwgIC05ODgsIC0xMjc3LCAgLTE0OCwgICAtODIsDQorICAtNDgwLCAgLTY2MCwgIC04OTEsIC0xMTkxLCAtMTMzOSwgIC0zMjUsICAgIDIwLA0KKyAgLTYyMSwgIC05MTcsIC0xMjk2LCAtMTM1MCwgICAyNjQsICAgMjg5LCAgICA1MCwNCisgIC04NDQsIC0xMDIyLCAtMTM0NSwgLTEzMjksICAtMjkzLCAgICA0NiwgICAyNzgsDQorICAtMjYwLCAgLTQ2OCwgIC04MjksIC0xMTc2LCAgLTUzMywgIC01NjAsICAgLTc4LA0KKyAgLTIxNSwgIC00ODQsICAtODIyLCAtMTIzMywgIC03OTEsICAgIDE1LCAgLTEzOCwNCisgIDEzMDEsICAxMzE3LCAgMTI2MiwgIDEwNDgsICAgNzE2LCAgIDM1NywgICAtNjQsDQorICAgNTc4LCAgIDgyNCwgICA5MjUsICAgODAyLCAgIDYzMCwgICAzNjIsICAgMTAyLA0KKyAgIDQ3MCwgICA5MjUsICAgNzY3LCAgIDUxNCwgICAzMjcsICAgMTkwLCAgLTExMiwNCisgICAyMjUsICAgNDkyLCAgIDQ5NSwgICA0MzcsICAgNTk4LCAgIDM4NCwgICAtNDUsDQorICAgIDQzLCAgICA4MiwgICAtNDIsICAgMTc1LCAgIDUxOSwgICAzNDIsICAgLTY0LA0KKyAgLTMwNCwgIC0xNTQsICAgMTU5LCAgIDU3NiwgICA0MDMsICAgMjIxLCAgIDMyNywNCisgICAyMTQsICAgMjQ0LCAgIDEyMiwgICAtNjIsICAgMzEyLCAgICA5MiwgIC0xNjAsDQorICAgMjE4LCAgIDIwOCwgICAzMTAsICAgMjY4LCAgIDMwNiwgICAzMjMsICAtMTk5LA0KKyAgLTI4NSwgIC0yNjksICAgLTc5LCAgLTEyNCwgIC0xNDMsICAtMTUzLCAgIDIzNiwNCisgIC0yMDUsICAtMzg0LCAgLTQyNiwgICAzNDQsICAgIDU5LCAgLTE4NSwgIC0xODQsDQorICAtMjcyLCAgIDI0NywgICAxMjYsICAtMjEwLCAgLTUxOCwgIC00NjgsICAgIDc4LA0KKyAgIC05OSwgIC0xMjAsICAgNTAyLCAgIDE2MCwgIC0yODAsICAtNTU3LCAgIDMwNCwNCisgIC00MjMsICAgLTE3LCAgLTI4MywgIC00NDMsICAgMjE1LCAgIDIxMiwgIC0xNDAsDQorICAtNTY0LCAgLTY4NCwgIC0yMjgsICAgNTEwLCAgIDM2MSwgICAxMzAsICAgMzIzLA0KKyAgLTQyOCwgICAzMzUsICAgIDk4LCAgIC02NSwgICAgMzYsICAtMjE1LCAgLTI0NiwNCisgIC0zNjIsICAgIDUxLCAgIDM2NCwgICAtMTYsICAtMjM0LCAgIDE1MCwgIC0xNjUsDQorICAgOTE0LCAgIDg4MywgICA3NTEsICAgNjUzLCAgIDY3NiwgICA0NjQsICAtMTUzLA0KKyAgIDYzMSwgICA1NDUsICAgNTM1LCAgIDcyMCwgICA1OTYsICAgMzYwLCAgIC04MSwNCisgICA3ODMsICAgNzEyLCAgIDUxMiwgICA0MzksICAgMzQxLCAgIDI1MSwgIC0zOTEsDQorICAgNDk3LCAgIDQxNywgICAyNDksICAgMzcyLCAgIDI5NSwgICAxNzMsICAtMTkzLA0KKyAgIDEyOCwgIC0xMTAsICAtMzg1LCAgICA5MywgICAgMzksICAgMTczLCAgLTIzMSwNCisgICAyMTYsICAgLTU5LCAgLTI1MywgICA0NjIsICAgMzg5LCAgIDE1NCwgICAgNjksDQorICAgNDU1LCAgIDI3MCwgICAgLTQsICAtMzM3LCAgIC00OSwgICAyMzMsICAtMzIyLA0KKyAgIDMwNywgICAxNDMsICAgIDUzLCAgIDIxOCwgICAxMjgsICAgMjM2LCAgLTE1NiwNCisgICAtMzcsICAtMTg2LCAgLTI0MCwgIC00MTEsICAtMTEwLCAgICAgOSwgICAzOTksDQorICAtMTQwLCAgLTM2NSwgIC02MjgsICAgMjU4LCAgIDM4MCwgICAyMTQsICAgMjc3LA0KKyAgIDEzMSwgICA0NTQsICAgMTc3LCAgLTI4NSwgIC01MjAsICAgMTA4LCAgLTIxNCwNCisgICAgNzcsICAtMTQxLCAgIDIwMSwgIC0xMjMsICAtNDkwLCAgLTEzMSwgICAgNjAsDQorICAgLTE0LCAgLTE5NCwgIC01MjEsICAtNzQxLCAgIDI3MywgICAzNjIsICAgLTMzLA0KKyAgLTM2MiwgIC01NjYsICAtMjg3LCAgLTIyOCwgICAxNjEsICAgMjM3LCAgIDMxNywNCisgIC0yNjksICAgMTk1LCAgIC03NSwgIC0zNzUsICAtMjA0LCAgICAxMSwgICAgNzcsDQorICAtMTI4LCAgLTI2NCwgIC0xNTYsICAtMjIzLCAgLTQ3NSwgICAyNjUsICAgIDI3LA0KKyAgMTIzOCwgIDExNDcsICAgOTE2LCAgIDY4OSwgICA0MzIsICAgMjEwLCAgLTI4MCwNCisgICA4MDAsICAgNjY0LCAgIDg3OSwgICA3MjYsICAgNDExLCAgIDE2MCwgIC0xNjQsDQorICAgNDU0LCAgIDY4NiwgICA1MzYsICAgMjc1LCAgIDE0NywgICAgNDYsICAgMTExLA0KKyAgIDMwMywgICA0ODYsICAgNTEyLCAgIDM1NSwgICAyNDEsICAgMTgxLCAgIC02OSwNCisgICAgNzksICAgIDkyLCAgICAyOSwgICAxNDcsICAgMjMzLCAgICA1MiwgICAgMTcsDQorICAtMTcxLCAgIDI4OSwgICAxMzEsICAgNDM5LCAgIDI3MSwgICAgIDMsICAgLTEwLA0KKyAgIDQxMywgICAyNDEsICAgMTQ0LCAgIDE3NCwgICAxNTUsICAgIC0yLCAgICAxNCwNCisgICAgNTgsICAgMjE3LCAgIDI0NywgICAyMTksICAgMTQ5LCAgIDE3NSwgICAtMTgsDQorICAgMjI4LCAgICAtOCwgIC0yNDAsICAtMjA2LCAgLTUxMywgIC0xOTEsICAgMjAyLA0KKyAgIC05NiwgIC0yNzIsICAtNDU0LCAgICAzMywgIC0zMDAsICAtNTc1LCAgICA0NiwNCisgICAtMTAsICAtMTA4LCAgLTI0NiwgIC0zNDcsICAtNzcwLCAgLTUzNSwgICAgIDksDQorICAtMzI2LCAgLTQzMCwgICAtNjEsICAtMzIxLCAgLTcwNCwgIC0yOTksICAgMjAxLA0KKyAgICAtMSwgIC0yODAsICAtNjAzLCAgLTQxOSwgIC0xODUsICAgIDE4LCAgIC0zNiwNCisgIC01MTYsICAtNTIyLCAgLTM3OSwgIC0yOTEsICAtMTgxLCAgIC05NywgICAgMjcsDQorICAtMTU5LCAgLTMxMywgIC01MjUsICAtMjI0LCAgLTUxMCwgIC04MzEsICAtMTk3LA0KKyAgLTI5MiwgIC00NTksICAgLTU5LCAgLTMxMCwgIC01NjIsICAtMTQzLCAgLTM1MSwNCisgIDEwNjYsICAgOTEyLCAgIDYzMSwgICAzODksICAgMjA3LCAgICA4NiwgIC0yMjQsDQorICAgNTk2LCAgIDUxMiwgICA1OTYsICAgNTA1LCAgIDMxNCwgICAxMjIsICAgLTQ4LA0KKyAgIDc4NywgICA4NjEsICAgNDQxLCAgIC05MywgIC0zMDMsICAgIDMzLCAgLTE5MCwNCisgICAyNTcsICAgNDY5LCAgIDMzNywgICAgNTEsICAgIDE1LCAgIDI5OCwgICAtOTMsDQorICAgMjk1LCAgICA3MywgIC0xMTksICAgIDI1LCAgICAzNiwgICAgMjMsICAgMTA4LA0KKyAgIC0yOCwgICAgLTMsICAgLTMyLCAgIDExNCwgICAgMjEsICAgMTg1LCAgIDEwNywNCisgICA0ODIsICAgMzA1LCAgICAxNSwgIC0yNzksICAtMzE5LCAgICA1MiwgICAgOTYsDQorICAgMjI2LCAgICA0NiwgICAxMTUsICAgIDcyLCAgLTEzNiwgICAxMzMsICAtMTI1LA0KKyAgICAxOCwgIC0yMDcsICAtNTU5LCAgLTU5MCwgIC01MDMsICAtNDgyLCAgIDMyMSwNCisgIC01NzEsICAtNzg5LCAgLTk1MSwgIC0xNzIsICAtNDQxLCAgLTUzOCwgICAxMTMsDQorICAgMTgxLCAgICAxNCwgIC0zMTAsICAtNjQxLCAtMTAwMSwgIC0yMDIsICAgMTU5LA0KKyAgLTEzNiwgIC0zOTMsICAtNDMzLCAgLTUxMywgIC05MTEsICAtMTQ0LCAgIC0yMiwNCisgICAgNzIsICAtMjY1LCAgLTcwNiwgIC05NTQsICAtMTU5LCAgICA1MywgICAzMzIsDQorICAtMzM4LCAgLTU5MSwgIC04NTIsICAtMzgzLCAgLTM5NSwgICAgNTYsICAgIDQ0LA0KKyAgICA0MywgIC0xNTgsICAtNDY0LCAgLTg5NywgIC02MzEsICAtMTU3LCAgLTI5NCwNCisgIC0xNjEsICAtMTI4LCAgLTMyOCwgIC01NzMsICAtNDgzLCAgLTEyNSwgICAgMTEsDQorICAxMDE3LCAgIDkwNiwgIDEwNTEsICAxMDA1LCAgIDY3OSwgICAzNDEsICAtMTAyLA0KKyAgIDM1OSwgICAzMzQsICAxNTY3LCAgMTMxNCwgICA3MjMsICAgMTA1LCAgICAxMCwNCisgICAtNjUsICAgNzI2LCAgIDUyOSwgICAzMDEsICAgMjIwLCAgICA0MywgIC0yNzMsDQorICAtNTEwLCAgIDQzNiwgICA3MTksICAgNTY2LCAgIDM1OCwgICAxNzksICAgMTE0LA0KKyAgLTU2MCwgICAyOTgsICAgMTMzLCAgLTEyMCwgICAzNDIsICAgMjI1LCAgICAxNCwNCisgIC04OTksICAtMTAxLCAgIDIxNywgICA2MTcsICAgNDAwLCAgIDE0NiwgICAtNTgsDQorICAgLTQxLCAgIDM1MiwgICAgODIsICAtMTk2LCAgICAzOSwgICAxMjEsICAtMTY3LA0KKyAgLTIxMiwgICAgNTksICAgNDQ3LCAgIDI4NCwgICA0MjMsICAgMjUwLCAgLTE2OSwNCisgIC0zNzEsICAtNDg0LCAgLTU5NiwgICAgMzAsICAgLTQxLCAgIDI0OSwgICAgMjIsDQorICAtMzcyLCAgLTY1MCwgIC03OTQsICAgNDc3LCAgIDQ0NSwgICAyMTYsICAgLTc5LA0KKyAgLTM1MiwgICAyNzUsICAgIDE3LCAgLTQ0MywgIC05MjksICAgIDkyLCAgICAxOSwNCisgIC02OTksICAtNjk2LCAgIDQzMSwgICAyNjQsICAgLTQ5LCAgLTMxMCwgICAxODIsDQorICAtOTc4LCAgLTIxNywgIC00MzAsICAtNDAwLCAgIDEwMSwgICAyNjEsICAgIDcyLA0KKyAgLTkyOSwgIC04ODksICAtMzU3LCAgIC0xMywgICA0NjMsICAgMzc4LCAgIDIzNiwNCisgIC04MjYsICAgIDU2LCAgICAzMCwgIC0yOTksICAtMzYwLCAgLTEyOCwgICAtNTEsDQorICAtODc4LCAgLTI5OSwgIC0xMTEsICAgIDc1LCAgICA2NSwgICAgMzYsICAgICAzLA0KKyAgIDgxNywgICAzNjgsICAgLTI1LCAgIDM1NCwgICA2OTcsICAgNTkxLCAgLTE3MywNCisgICAzMDksICAgMjEyLCAgIDIyMiwgICA3NTEsICAgNDg0LCAgIDE0MCwgICAtNTYsDQorICAgNTkzLCAgIDM3OSwgICAgNzAsICAgIC04LCAgIDI1OCwgICAxODAsICAgMTEwLA0KKyAgIDE2NSwgICAtNDYsICAgMjU1LCAgIDI5NywgICAyMTksICAgMjczLCAgIDEwNSwNCisgICAxNjAsICAgLTcwLCAgLTM1OCwgIC0xODEsICAgMzc5LCAgIDMzMCwgICAzMTksDQorICAtMjM4LCAgLTM2OSwgIC0xOTgsICAgNzQwLCAgIDU4MCwgICAzMTksICAtMTQzLA0KKyAgIDIwMSwgICAxMDksICAtMjAyLCAgLTQ1NiwgICAzMjgsICAgMjc2LCAgLTE0MSwNCisgICAyMDMsICAgMTcwLCAgIDExMSwgICAgNDIsICAgMjA3LCAgIDM2MCwgICAxODgsDQorICAtMzQ1LCAgLTM5OSwgIC01MTMsICAtMjMzLCAgIDY1MCwgICA0MjIsICAgIDgxLA0KKyAgLTYzNSwgIC05NjEsIC0xMjIwLCAgIDQ2MywgICA1MzksICAgMjA0LCAgIDIwOSwNCisgICAyMDIsICAgLTI1LCAgLTE5NCwgIC00OTgsICAtNzg3LCAgIDE5MywgIC0xNDMsDQorICAtNDQ5LCAgLTUzOCwgICAxOTUsICAtMTA2LCAgLTMzMSwgICAgNjgsICAgIDYyLA0KKyAgLTIyOCwgIC00NzcsICAtODQwLCAgLTU3NiwgICAzMTcsICAgMTI4LCAgIDI4MywNCisgIC02NzEsICAtOTM3LCAgLTgwNywgIC0xMTQsICAgMzkxLCAgIDMzNSwgICAtNjIsDQorICAgMjQ2LCAgICAgMiwgIC0zMTQsICAtNjc5LCAgLTMwMywgICAxODAsICAgLTg4LA0KKyAgLTEwNywgIC0yNzIsICAgIDkwLCAgLTE5OCwgICAtMjgsICAgMjkwLCAgLTExMiwNCisgICA4ODUsICAxMTQ5LCAgMTAyMSwgICA3MTIsICAgNDk2LCAgIDI4MSwgICAtODMsDQorICAgMjY5LCAgIDQ5MiwgICA3ODcsICAgNjQzLCAgIDM0NywgICAgNzAsICAgMTI0LA0KKyAgIDMzNiwgICA2MzYsICAgNDk5LCAgICA5MiwgIC0yMjksICAtMTc5LCAgIDE5MSwNCisgICAgMjYsICAgNDAyLCAgIDU2NCwgICAzNDAsICAgMTQ5LCAgIC0xMSwgICAxMzUsDQorICAtNDQwLCAgIDU2MSwgICA0NzAsICAgMjA0LCAgIC03MiwgIC0xODYsICAgMTQwLA0KKyAgLTcyMCwgICAgMTQsICAgMzU1LCAgIDIyOSwgICAgNjgsICAtMTMzLCAgIDQ2NSwNCisgICAxMTAsICAgMzEwLCAgIDEwMywgICAgMTIsICAgMTA2LCAgICAyOSwgICAxNTgsDQorICAtMTc4LCAgIDExMywgICAxNjEsICAgMTQyLCAgIDEyMSwgICAxMTUsICAgIDI3LA0KKyAgLTY1MSwgIC00MTQsICAtNjQ1LCAgLTE1MiwgIC0xNjQsICAgLTEzLCAgLTQyOSwNCisgIC02MzksICAtOTQ0LCAgLTY4MSwgIC0xMDQsICAgLTgxLCAgICA1MiwgIC0xODksDQorICAtNjYzLCAgLTE2NCwgIC0zMTYsICAtNjgzLCAgLTk1NCwgIC0yMDUsICAgLTgzLA0KKyAgLTYwOSwgIC02NjksICAtMTcyLCAgLTUxNywgIC02OTQsICAgMjgzLCAgIC04MCwNCisgIC02NDYsICAtMTUyLCAgLTM4MywgIC02NzgsICAtMjQ2LCAgIC00MCwgIC0xNDMsDQorICAtNzQ3LCAgLTc5NiwgIC03NDUsICAtMzkwLCAgIC05OCwgICAgNDMsICAgMjc1LA0KKyAgLTU5OSwgIC0xOTksICAtMzk4LCAgLTQzMywgIC00MzYsICAtNTM4LCAgICAzMSwNCisgLTExMDcsICAtNTY4LCAgLTM3NiwgIC0yNjUsICAtMTI2LCAgIC0yMSwgICAgIDEsDQorICAgODQ3LCAgIDU3MywgICAzMDgsICAgMzkyLCAgIDMwNSwgICAxMDEsICAgIDU1LA0KKyAgIDI3MywgICAyOTMsICAgMjAxLCAgIDI2NywgICAzNDYsICAgMjAxLCAgIDEyMywNCisgICA3MjcsICAgNDgwLCAgIDIyNiwgICAgIDIsICAgLTY1LCAgLTEzOCwgICAxNjQsDQorICAgMjczLCAgIDIwOCwgICAxNzMsICAgMjkyLCAgICAxMiwgICAyNTMsICAgMTc0LA0KKyAgIDM0MCwgICAyMDcsICAgMTgwLCAgICA4OCwgICAxMTYsICAgIDQ2LCAgIDQ3NSwNCisgIC00NjAsICAtMTY2LCAgIC0zMCwgICAgMTMsICAgMTEwLCAgIDE3MywgICAzOTYsDQorICAgMTM3LCAgICA4OCwgICAgNDMsICAtMTM3LCAgIC05NCwgICAgMzQsICAgMjg0LA0KKyAgICA5NiwgICAtMTQsICAgMjI2LCAgICA0MCwgICAgNjMsICAgIDcwLCAgIDEzMCwNCisgIC00NjcsICAtNzM1LCAtMTAxMiwgLTExNzQsICAtMzA3LCAgIDMwNSwgICAtNjcsDQorICAtNjEyLCAgLTkyMCwgLTExNDYsICAtNTY3LCAgICAtOCwgICAgOTIsICAgLTI1LA0KKyAgLTE4MiwgIC0yNzEsICAtNDkyLCAgLTc1NCwgIC04NTcsICAgMjg3LCAgIC03NSwNCisgIC00OTQsICAtNzg3LCAgLTY4OSwgIC02ODMsICAtNzA5LCAgIDEzNywgIC0zMjYsDQorICAtMjg4LCAgLTU1MCwgIC05MDMsIC0xMTA1LCAgIDMzNCwgICAzMjEsICAgLTYyLA0KKyAgLTM1NCwgIC02NTMsICAtODM0LCAgLTQ0NSwgICAgIDEsICAgMzc3LCAgLTE1MiwNCisgIC0xNjIsICAtMzA2LCAgLTYwOCwgIC05MzcsICAtMjk3LCAgIDI0NywgIC0xOTIsDQorICAtMjM0LCAgLTQ3NywgIC0yNDQsICAtNDg4LCAgLTI2NiwgICAzNDIsICAtMzMyfTsNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisgKiAybmQgc3RhZ2UgY29kZWJvb2s7IDFzdCBzcGxpdDogICBpc2YyXzAgdG8gaXNmMl8yDQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKw0KK3N0YXRpYyBXb3JkMTYgZGljbzIxX2lzZltTSVpFX0JLMjEqM10gPSB7DQorDQorICAgMzI5LCAgIDQwOSwgICAyNDksDQorICAgLTMzLCAgIDUwNSwgICAxNjAsDQorICAgLTI5LCAgIC0xNCwgICA1ODIsDQorICAtMjYyLCAgIDEyNywgICAzNTQsDQorICAgMTQ1LCAgIDIzNywgICAxNzUsDQorICAtMTUyLCAgIDI0NSwgICAxMjIsDQorICAgIDI3LCAgICA0MiwgICAzNDAsDQorICAgLTg0LCAgIC05MywgICAzMTEsDQorICAgMjg1LCAgIDIyMiwgIC0xNTYsDQorICAgIDQ3LCAgIC00MywgIC01MDQsDQorICAgMjM0LCAgIDEyMSwgICAzODUsDQorICAgMTA0LCAgLTMxNywgICAgNDUsDQorICAgMTc2LCAgIDE5NSwgICAgIDgsDQorICAgMTA0LCAgIC01OSwgICAtOTQsDQorICAgMTc3LCAgICA1MywgICAxOTIsDQorICAgLTM0LCAgLTEyNywgICAxNTIsDQorICAgNTcwLCAgIDI3NywgICAtMzQsDQorICAgLTY3LCAgLTMyOSwgIC02MzksDQorICAtMTU3LCAgLTI3MiwgICA0NjIsDQorICAtMTc3LCAgLTQ2MiwgICAxOTgsDQorICAgMzIyLCAgIDE3OSwgICAxMTUsDQorICAtMzg2LCAgIDE3MSwgICAgMTksDQorICAgIDE5LCAgIC0xMiwgICAxOTUsDQorICAtMTIwLCAgLTI1MiwgICAyMDEsDQorICAgMzA0LCAgICAzNiwgIC0zMzYsDQorICAtMTI4LCAgLTIyMSwgIC0zODAsDQorICAgMTcxLCAgLTE4NSwgICAyOTYsDQorICAtMjQyLCAgLTMxMiwgICAgMjMsDQorICAgMTk4LCAgICAzOSwgICAgMTYsDQorICAgIC0zLCAgLTE3NywgIC0xMTEsDQorICAgMTExLCAgIC05MywgICAgNzYsDQorICAgLTkyLCAgLTIyMywgICAgIDQsDQorICAgMTc3LCAgIDQwNiwgICAtNDQsDQorICAtMTY4LCAgIDM4MCwgIC0xNDksDQorICAgIC00LCAgIDI3MywgICAzMzEsDQorICAtNDIwLCAgIDUxMywgICAyNzcsDQorICAgIDIxLCAgIDI0NywgICAgNDcsDQorICAgLTU4LCAgIDEzMSwgICAgLTIsDQorICAgIC0zLCAgIDEzNCwgICAxODAsDQorICAtMTQ1LCAgICA0MCwgICAxNzUsDQorICAgMTg5LCAgICA3NCwgIC0xNDUsDQorICAgLTI3LCAgIC00NSwgIC0zMjUsDQorICAgMzcwLCAgLTExNCwgICAtMjEsDQorICAgLTgzLCAgLTQxNSwgIC0xNzMsDQorICAgIDc3LCAgICA5NSwgICAtNTEsDQorICAgLTQwLCAgIC0zMCwgICAtNjcsDQorICAgIDcxLCAgICA4OCwgICAgODYsDQorICAgLTM1LCAgIC05OCwgICAgMTQsDQorICAgIDY5LCAgIDE5NywgIC0zMzQsDQorICAtMTk2LCAgICA3OSwgIC0yMzEsDQorICAtMzQ4LCAgLTEzNywgICAyMTgsDQorICAtMzUyLCAgIC04OSwgICAtODUsDQorICAgIDQ3LCAgIDIwMSwgIC0xMzAsDQorICAtMTY1LCAgICAzNywgICAtMTUsDQorICAgLTQzLCAgICAgMywgICAgODYsDQorICAtMTYxLCAgLTEwOCwgICAgNzksDQorICAgIDgzLCAgICAyMSwgIC0yMzcsDQorICAgLTgxLCAgLTE0OSwgIC0yMzgsDQorICAgMTUwLCAgLTE4NiwgIC0yNTEsDQorICAtMTg2LCAgLTI0OSwgIC0xNjIsDQorICAgLTE5LCAgICA2NiwgIC0xMzksDQorICAgLTI2LCAgIC01MCwgIC0xODEsDQorICAgIDI0LCAgICAxMSwgICAgIDAsDQorICAtMTMwLCAgLTEwNSwgICAtOTh9Ow0KKw0KKw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyAqIDJuZCBzdGFnZSBjb2RlYm9vazsgMm5kIHNwbGl0OiAgIGlzZjJfMyB0byBpc2YyXzUNCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorDQorc3RhdGljIFdvcmQxNiBkaWNvMjJfaXNmW1NJWkVfQksyMiozXSA9IHsNCisNCisgIC0xMjcsICAgMzEwLCAgICA0MiwNCisgIC0yNDIsICAgMTk3LCAgICAgNSwNCisgIC0xNTEsICAgIDg0LCAgIC0xNywNCisgIC0yMTQsICAgMTI3LCAgLTE0OSwNCisgIC0yNDcsICAtMTMxLCAgIDE1OSwNCisgIC0yNjgsICAtMjY3LCAgIC05NSwNCisgIC0yMTcsICAgICAxLCAgIC03OSwNCisgIC0yNzEsICAgLTgwLCAgLTE4NSwNCisgICAtNDUsICAgNDM2LCAgIDE1OSwNCisgICAxNjUsICAgMTk5LCAgIDM5MSwNCisgICAtMzMsICAgIDgxLCAgIDE4NywNCisgICAtNjYsICAgLTQyLCAgIDM1NSwNCisgIC0yOTgsICAgLTU3LCAgIDM0MywNCisgIC0xMDgsICAtNTM3LCAgIDIyNiwNCisgIC0xNDQsICAgLTIzLCAgIDE5MywNCisgICAxNzYsICAtNDAyLCAgICA4NywNCisgICAgNTMsICAgMjk2LCAgICAyNSwNCisgICAtODQsICAgMjUzLCAgLTEwNCwNCisgICAtNTgsICAgMTA1LCAgLTEyNiwNCisgIC0xNjksICAgMTc0LCAgLTMxNCwNCisgICAtNDgsICAgIDQ0LCAgLTI5NCwNCisgIC0xNjQsICAtNDE3LCAgLTI0MiwNCisgIC0xMzksICAgICAzLCAgLTE5NCwNCisgIC0xNTUsICAtMjA3LCAgLTIxMSwNCisgICAxMTksICAgMzIyLCAgIDIxMywNCisgICAzMzMsICAgIDUwLCAgIDM4MCwNCisgICAyMzcsICAgMjQ3LCAgICAtMiwNCisgICA0NjYsICAgLTE2LCAgIDIwMSwNCisgICAyMzgsICAtMjU1LCAgLTEwNywNCisgICAgNjcsICAtNDQwLCAgLTE0OSwNCisgICAxMjIsICAgLTg4LCAgLTEzOSwNCisgICAgODgsICAtMjQ3LCAgIC03MywNCisgICAtNDEsICAgMjMxLCAgIDE2NywNCisgICAtNjIsICAgMTU1LCAgICAxNiwNCisgICAtNjUsICAgIDE2LCAgICA3NywNCisgICAtNjgsICAgIC0yLCAgIC02MywNCisgIC0xNTEsICAtMzAwLCAgIDE2MCwNCisgICAtMTgsICAtMzMzLCAgICA1NCwNCisgICAtNTYsICAgLTk0LCAgICAgNSwNCisgICAgIDIsICAtMTkwLCAgICAxNCwNCisgICAgOTIsICAgMTQ4LCAgIDIwOSwNCisgICAxMDgsICAgICA5LCAgIDI3MiwNCisgICAxMDgsICAgIDM1LCAgIDExMCwNCisgICAxNDIsICAgLTg1LCAgIDE0NSwNCisgICAgNDcsICAtMTU3LCAgIDI3OSwNCisgICAgIDMsICAtMzIwLCAgIDI0NiwNCisgICAgNDMsICAgLTcyLCAgICA2OCwNCisgICAgODYsICAtMjE3LCAgIDEzNSwNCisgICAgMzYsICAgMTQwLCAgICA3OSwNCisgICAgNTYsICAgMTc1LCAgIC00OSwNCisgICAgMjYsICAgIDQ1LCAgICAgMywNCisgICAgNzMsICAgIDU1LCAgLTEwMSwNCisgICAxMDksICAtMTgzLCAgLTI0MiwNCisgICAgLTQsICAtMjgzLCAgLTI0MiwNCisgICAgNDgsICAgLTY4LCAgIC00OCwNCisgICAgLTYsICAtMTUzLCAgLTEyMiwNCisgICAxNjEsICAgMTk2LCAgICA5NiwNCisgICAyMzIsICAgIDgwLCAgIDE5MCwNCisgICAxNjUsICAgIDk3LCAgICAxMSwNCisgICAyNTgsICAgLTMxLCAgICA3MSwNCisgICAyNjcsICAgLTc3LCAgIC05MSwNCisgICAzMTEsICAtMjA5LCAgICA4NywNCisgICAxNTIsICAgLTE0LCAgIC0yMiwNCisgICAxNTAsICAtMTQ5LCAgICAgOSwNCisgIC0zMjQsICAgNTU3LCAgIDE4NywNCisgIC0zODQsICAgMzA3LCAgICA0NiwNCisgIC0yNTEsICAgIDI3LCAgICA3NywNCisgIC0zNjUsICAgIDc3LCAgIC01MiwNCisgIC00ODIsICAgLTg0LCAgIDE2MCwNCisgIC00MjQsICAtNTE1LCAgIC02NCwNCisgIC0yOTQsICAtMTIwLCAgICAtNCwNCisgIC00NzYsICAtMTE2LCAgLTEwOSwNCisgICAtOTcsICAgMzE4LCAgIDM2NSwNCisgICAxMDYsICAgNjI3LCAgIDQ0NSwNCisgIC0xOTAsICAgMTIwLCAgIDI4NywNCisgIC0xNDYsICAgIDY1LCAgIDYxOSwNCisgIC00MjcsICAgMjQyLCAgIDM2MywNCisgIC0zNjEsICAtMzcxLCAgIDQzMiwNCisgIC0zNDcsICAgMTAyLCAgIDE2OCwNCisgIC02MjksICAgMTk1LCAgIC0xNCwNCisgICAtNjUsICAgNDc2LCAgIC00NywNCisgIC0yOTcsICAgMzIwLCAgLTE2OCwNCisgICAtNTUsICAgMzU2LCAgLTI2NCwNCisgIC0zOTEsICAgIDgyLCAgLTI4NiwNCisgICAtNTEsICAgLTMxLCAgLTU1NiwNCisgIC0xNzgsICAtMzk5LCAgLTU4NiwNCisgIC0yMDUsICAgLTQ5LCAgLTM2MCwNCisgIC0zNDMsICAtMjM4LCAgLTMzNywNCisgICAyMjAsICAgNDU3LCAgICA1OCwNCisgICA1NjEsICAgNDY3LCAgIDI1OSwNCisgICAzNDAsICAgMjcwLCAgLTE2OCwNCisgICA0NTAsICAgIDc3LCAgLTI4MCwNCisgICAgNjAsICAgMTY3LCAgLTQxMywNCisgICAxMzMsICAtMjUyLCAgLTQ5MiwNCisgICAyMTYsICAgMTU3LCAgLTI5MCwNCisgICAyODIsICAgICAwLCAgLTQ5NSwNCisgIC0yMjYsICAgMjkzLCAgIDE4MywNCisgIC0xNTcsICAgMTM1LCAgIDEyMiwNCisgIC0xNTgsICAgLTU5LCAgICAzOSwNCisgIC0xMzMsICAtMTE4LCAgIC05NywNCisgIC0zMzIsICAtMzA5LCAgIDExMywNCisgIC0xNjAsICAtNDI1LCAgICAtNiwNCisgIC0xNDksICAtMjExLCAgICAyNCwNCisgICAtODAsICAtMjc3LCAgIC05MCwNCisgICAtMTEsICAgMTI1LCAgIDMzOCwNCisgICAxMzAsICAgLTcxLCAgIDQ2NSwNCisgICAgIDUsICAgLTQ1LCAgIDE4NCwNCisgICAyMzcsICAgLTk1LCAgIDI1MywNCisgIC0xMzksICAtMTk3LCAgIDI5NywNCisgICAtMTksICAtMzAwLCAgIDUxMSwNCisgICAtNjMsICAtMTUyLCAgIDEzOSwNCisgICAyNTAsICAtMjg5LCAgIDMzNiwNCisgICAxMjQsICAgMzM5LCAgLTE1MCwNCisgICAgMzQsICAgMTc2LCAgLTIwOCwNCisgICAxNzEsICAgMTY2LCAgLTExNiwNCisgICAgOTQsICAgIDM4LCAgLTIyOSwNCisgICAgNzUsICAgLTY1LCAgLTMzOSwNCisgICAtNzgsICAtMjA1LCAgLTM4NSwNCisgICAgIDAsICAgLTMwLCAgLTE2MywNCisgICAtNTYsICAtMTEwLCAgLTI0MiwNCisgICAzMjEsICAgMjQ0LCAgIDE5NCwNCisgICA1MDUsICAgMjM4LCAgICAtMSwNCisgICAzMTcsICAgMTE2LCAgICA2NSwNCisgICAzMDksICAgIDg4LCAgIC03NCwNCisgICA0NTIsICAgLTUxLCAgIC01MCwNCisgICAzMzQsICAtMjE3LCAgLTI5MCwNCisgICAyMTEsICAgIDQxLCAgLTE1MiwNCisgICAyMzgsICAgLTU1LCAgLTI2MH07DQorDQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorICogMm5kIHN0YWdlIGNvZGVib29rOyAzcmQgc3BsaXQ6ICAgaXNmMl82IHRvIGlzZjJfOA0KKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisNCitzdGF0aWMgV29yZDE2IGRpY28yM19pc2ZbU0laRV9CSzIzKjNdID0gew0KKw0KKyAgIC0xMCwgICAxNTEsICAgMzU5LA0KKyAgIDEzNiwgICAyOTgsICAgMjIzLA0KKyAgIDI1NSwgIC0xMDQsICAgMjkwLA0KKyAgIDQyMywgICAgIDYsICAgMTgzLA0KKyAgLTI3MCwgIC0yNjksICAgLTk4LA0KKyAgIC01MiwgICAtODIsICAgIDEzLA0KKyAgIC04MiwgIC0yNzQsICAgLTk3LA0KKyAgICA5MCwgIC0yNDYsICAgLTcyLA0KKyAgLTI5OSwgICAtNzAsICAgNDIxLA0KKyAgIC04OCwgICAzNjUsICAgNDMwLA0KKyAgIDE4NywgIC0zMTgsICAgMzgxLA0KKyAgIDM4MCwgICAgMzcsICAgNDg4LA0KKyAgLTM3MywgIC0zMTYsICAgIDc5LA0KKyAgLTMwOCwgIC0xMDEsICAgICA1LA0KKyAgLTEzNSwgIC00NTEsICAgICA4LA0KKyAgICA3MiwgIC00MjEsICAtMTU0LA0KKyAgIDE4MCwgICAxNzAsICAtMTIxLA0KKyAgICA2MiwgICAxNzcsICAgLTQwLA0KKyAgIDMyNiwgICAgODAsICAtMTA1LA0KKyAgIDI0OCwgICAyNjMsICAgIC01LA0KKyAgLTE2OCwgIC0xODEsICAtMjIxLA0KKyAgICAtMiwgICAtMjMsICAtMTU4LA0KKyAgIC0xNCwgIC0xNDksICAtMTIxLA0KKyAgIDExOSwgICAtOTEsICAtMTQ3LA0KKyAgIDExOSwgICAzMzIsICAtMTUzLA0KKyAgICA0OSwgICAzMDMsICAgIDM0LA0KKyAgIDQ0MiwgICAtNTUsICAgLTY5LA0KKyAgIDIxNywgICA0NTQsICAgIDU4LA0KKyAgLTM1OSwgIC0xODcsICAtMzc1LA0KKyAgIC00MiwgICAgNTAsICAtMjc0LA0KKyAgICAtOCwgIC0yNjcsICAtMjQ5LA0KKyAgICA4NSwgICAtODYsICAtMzQ2LA0KKyAgIC03NywgICAtNDAsICAgMzQ1LA0KKyAgICA4OSwgICAxMzQsICAgMjE5LA0KKyAgIDE1NiwgICAtODAsICAgMTYwLA0KKyAgIDEwOCwgICAgNDAsICAgMTE2LA0KKyAgLTE1OCwgIC0yMDYsICAgIDI5LA0KKyAgICAgNSwgICAtMzIsICAgMTc1LA0KKyAgIC02NSwgIC0xNTgsICAgMTQ2LA0KKyAgICA1NSwgICAtNzgsICAgIDczLA0KKyAgLTExNCwgIC0yMjIsICAgMzUzLA0KKyAgIC00NywgICAgODEsICAgMjExLA0KKyAgICA0OSwgIC0xNTEsICAgMjY4LA0KKyAgIDEwNSwgICAgIDQsICAgMzAyLA0KKyAgLTI2MywgIC0xMzIsICAgMTgzLA0KKyAgLTE1MSwgICAtMjgsICAgMjAxLA0KKyAgLTE3NywgIC0zMDcsICAgMTY2LA0KKyAgIDEwMSwgIC0yMjEsICAgMTMwLA0KKyAgICA3NCwgICAgNTgsICAgLTk4LA0KKyAgICAzMiwgICAgNDQsICAgIDEzLA0KKyAgIDE5NCwgICAgMzAsICAtMTQyLA0KKyAgIDE3MCwgICAgOTYsICAgICA4LA0KKyAgLTEzNiwgIC0xMTksICAgLTkxLA0KKyAgIC02NSwgICAgIDgsICAgLTU1LA0KKyAgICAgMywgIC0xODgsICAgIDEyLA0KKyAgICA0NSwgICAtNjMsICAgLTQ5LA0KKyAgIDE0OSwgICAtMjEsICAgLTE5LA0KKyAgICAyNCwgICAxNDQsICAgIDk1LA0KKyAgIDI1NCwgICAtMjIsICAgIDYwLA0KKyAgIDE2MSwgICAxOTYsICAgIDk2LA0KKyAgLTE1OCwgICAtNjEsICAgIDQ4LA0KKyAgIC03MCwgICAgMzMsICAgIDgyLA0KKyAgIC0yMywgIC0zMjEsICAgIDU4LA0KKyAgIDE1NSwgIC0xNDcsICAgICA1LA0KKyAgLTM2NCwgICAzMjgsICAgIDc3LA0KKyAgIC0yMSwgICA0NTMsICAgMTczLA0KKyAgLTEwOCwgICAgODIsICAgNjMwLA0KKyAgIDM2NywgICAyNjMsICAgMjA4LA0KKyAgLTMwMCwgICAtNjIsICAtMTc2LA0KKyAgLTIwNSwgICAxNDMsICAtMTU4LA0KKyAgLTE2OSwgIC00MTAsICAtMjY0LA0KKyAgIDI1NywgIC0yNjksICAtMTAwLA0KKyAgLTYzNiwgICAyODksICAgIC0yLA0KKyAgLTI5MiwgICA2MjcsICAgMTczLA0KKyAgLTM4MiwgIC0zNjMsICAgMzg3LA0KKyAgIDI0OCwgICA1MjQsICAgNDQ3LA0KKyAgLTUyMSwgIC0xMTEsICAtMTA3LA0KKyAgLTM5NSwgICAxMTgsICAtMjc0LA0KKyAgLTM0MywgIC02ODAsICAtMTI1LA0KKyAgLTE3MiwgIC00NDcsICAtNjYzLA0KKyAgICA3NSwgICAxNDgsICAtMzY3LA0KKyAgIC03OSwgICAyNjMsICAgLTk0LA0KKyAgIDI0OSwgICAxNDgsICAtMjg2LA0KKyAgIDM4MCwgICAyNzEsICAtMTYyLA0KKyAgLTE0MiwgICAgLTQsICAtMTg2LA0KKyAgIC01NywgICAxMTEsICAtMTI1LA0KKyAgIC0zNSwgIC0xMDgsICAtMjU0LA0KKyAgIDEwMCwgICAgMjksICAtMjQyLA0KKyAgIC04MCwgICAzMDMsICAtMjY0LA0KKyAgIC03OCwgICA0NjQsICAgLTU3LA0KKyAgIDI0OCwgICAtMjIsICAtNDk0LA0KKyAgIDY2MSwgICA2NjIsICAgIDQ0LA0KKyAgLTE5MywgICAtNDAsICAtMzMwLA0KKyAgLTE3OCwgICAxNDUsICAtMzM3LA0KKyAgIC05MCwgIC0xOTksICAtNDAwLA0KKyAgIC00MCwgICAtMjMsICAtNDk4LA0KKyAgLTE5MiwgICAxMTQsICAgMzE1LA0KKyAgIC00MSwgICAyNDQsICAgMTkwLA0KKyAgICA4OCwgICAtOTcsICAgNDg1LA0KKyAgIDI0MSwgICAgODAsICAgMjEyLA0KKyAgLTI0NiwgICAgNDAsICAgIDg3LA0KKyAgLTE1NiwgICAxNDcsICAgMTM0LA0KKyAgICAtMiwgIC0zMzQsICAgMjM5LA0KKyAgIDMwOCwgIC0yMDMsICAgMTEwLA0KKyAgLTQ1OSwgICAyNTEsICAgNDIyLA0KKyAgLTIxOCwgICAzMTAsICAgMjI4LA0KKyAgIC04NiwgIC0zNDYsICAgNjU0LA0KKyAgIDE4NCwgICAxNzUsICAgNDI1LA0KKyAgLTQ4MSwgICAtNjMsICAgMTY5LA0KKyAgLTM0OSwgICAxMTcsICAgMTg4LA0KKyAgLTEyNSwgIC01NjAsICAgMzEwLA0KKyAgIDE1OCwgIC00MTYsICAgIDk0LA0KKyAgICA0NiwgICAxNzEsICAtMTkyLA0KKyAgIC02MywgICAxNTcsICAgIDE0LA0KKyAgIDI1NiwgICAtMzUsICAtMjcxLA0KKyAgIDMyMiwgICAxMjMsICAgIDUzLA0KKyAgLTIxNCwgICAgIDQsICAgLTc2LA0KKyAgLTE1NiwgICAgODYsICAgLTE4LA0KKyAgIDEyOCwgIC0xOTcsICAtMjMyLA0KKyAgIDI2NSwgICAtOTAsICAgLTk4LA0KKyAgLTMwOCwgICAzMzIsICAtMTQ1LA0KKyAgLTEzMSwgICAzMDgsICAgIDU4LA0KKyAgIDUwOSwgICAgNTksICAtMzM5LA0KKyAgIDU2MiwgICAxOTYsICAgLTE0LA0KKyAgLTM3OCwgICAxMDAsICAgLTQ3LA0KKyAgLTIzNCwgICAyMDIsICAgICAxLA0KKyAgIDEwNCwgIC0yNzAsICAtNDkzLA0KKyAgIDMxOSwgIC0yMTAsICAtMzI1fTsNCisNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisgKiAybmQgc3RhZ2UgY29kZWJvb2s7IDR0aCBzcGxpdDogICBpc2YyXzkgdG8gaXNmMl8xMQ0KKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitzdGF0aWMgV29yZDE2IGRpY28yNF9pc2ZbU0laRV9CSzI0KjNdID0gew0KKw0KKyAgIC03OSwgICAtODksICAgIC00LA0KKyAgLTE3MSwgICAgNzcsICAtMjExLA0KKyAgIDE2MCwgIC0xOTMsICAgIDk4LA0KKyAgIDEyMCwgIC0xMDMsICAgMzIzLA0KKyAgICAzMiwgICAtMjIsICAtMTI5LA0KKyAgICA3MiwgICAgNzgsICAtMjY4LA0KKyAgIDE4MiwgICAtNzYsICAgLTY2LA0KKyAgIDMwOSwgICAgOTksICAtMTQ1LA0KKyAgLTIyOSwgIC0xNTcsICAgLTg0LA0KKyAgLTM4MywgICAgOTgsICAgLTcxLA0KKyAgIC05MCwgIC0zNTIsICAgIDEyLA0KKyAgLTI4NCwgIC0xNzgsICAgMTc4LA0KKyAgIC02NSwgIC0xMjUsICAtMTY2LA0KKyAgIC04NywgIC0xNzUsICAtMzUxLA0KKyAgICA0MiwgIC0xOTgsICAgLTQ4LA0KKyAgIDE1NCwgIC0xNDAsICAtMjQzLA0KKyAgIC03NywgICAgMTgsICAgMTA4LA0KKyAgIC0zOSwgICAzNTUsICAgIDkxLA0KKyAgICA4NywgICAgIDgsICAgMTU1LA0KKyAgICAtNCwgICAxNTgsICAgMjM5LA0KKyAgIDEyOCwgICAgOTUsICAgLTU0LA0KKyAgICAgNywgICAyNDYsICAtMTI0LA0KKyAgIDI1OCwgICAgMTUsICAgIDg5LA0KKyAgIDIwNiwgICAyMTYsICAgIDk4LA0KKyAgLTIwMSwgICAgIDksICAgIDE4LA0KKyAgLTMxMiwgICAyMzMsICAgMjA0LA0KKyAgIC0zOSwgIC0xNzQsICAgMTU1LA0KKyAgLTE0NCwgICAgLTksICAgMjg0LA0KKyAgIC01NywgICAgNzAsICAgLTY5LA0KKyAgLTE1NywgICAxODcsICAgIDE4LA0KKyAgICA1NCwgICAtMzAsICAgIDIzLA0KKyAgICAyNCwgICAxMzUsICAgIDU1fTsNCisNCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisgKiAybmQgc3RhZ2UgY29kZWJvb2s7IDV0aCBzcGxpdDogICBpc2YyXzEyIHRvIGlzZjJfMTUNCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorc3RhdGljIFdvcmQxNiBkaWNvMjVfaXNmW1NJWkVfQksyNSo0XSA9IHsNCisNCisgICAxNjksICAgMTQyLCAgLTExOSwgICAxMTUsDQorICAgMjA2LCAgIC0yMCwgICAgOTQsICAgMjI2LA0KKyAgLTEwNiwgICAzMTMsICAgLTIxLCAgICAxNiwNCisgICAtNjIsICAgMTYxLCAgICA3MSwgICAyNTUsDQorICAgLTg5LCAgIDEwMSwgIC0xODUsICAgMTI1LA0KKyAgICA3MiwgICAtMzAsICAtMjAxLCAgIDM0NCwNCisgIC0yNTgsICAgIDMzLCAgICAtOCwgICAgODEsDQorICAtMTA0LCAgLTE1NCwgICAgNzIsICAgMjk2LA0KKyAgIDE0NCwgICAtNjgsICAtMjY4LCAgIC0yNSwNCisgICAgODEsICAgLTc4LCAgIC04NywgICAxMDYsDQorICAgIDIyLCAgIDE1NSwgIC0xODYsICAtMTE5LA0KKyAgIC00NiwgICAtMjgsICAgIDI3LCAgICA5MSwNCisgIC0xMTQsICAgLTM3LCAgLTE3NSwgICAtMzMsDQorICAgLTk0LCAgLTIyMiwgIC0xODksICAgMTIyLA0KKyAgLTEzMiwgIC0xMTksICAtMTkxLCAgLTI3MCwNCisgIC0xNzIsICAtMTczLCAgICAxOCwgICAtNDMsDQorICAgMjc5LCAgIDEzNSwgICAtNDIsICAtMTI4LA0KKyAgIDE4NywgICAtODYsICAgMjI5LCAgLTEzOCwNCisgICAxNTksICAgMjQwLCAgIDE0MCwgICAgNDYsDQorICAgIDY5LCAgICAyNSwgICAyMjcsICAgIDc3LA0KKyAgICAyMSwgICAxMTUsICAgIDEzLCAgICAgOCwNCisgICAgNjgsICAtMjQ4LCAgIDEyNiwgICAgODEsDQorICAtMTUwLCAgIDEzNywgICAyMDcsICAgIC05LA0KKyAgLTE1NCwgIC0xMzMsICAgMjg5LCAgICA2NywNCisgICAxNDMsICAgLTM3LCAgIC04NiwgIC0zMjYsDQorICAgMTgwLCAgIC0zMiwgICAgMTksICAgLTIzLA0KKyAgICAyNiwgICAxNjgsICAgMTE2LCAgLTIzMywNCisgICAtMzIsICAgLTI2LCAgIDExOCwgICAtNzgsDQorICAgICAzLCAgICAtOCwgICAtNDUsICAtMTE1LA0KKyAgICA1NywgIC0yMTUsICAgLTU0LCAgIC04MywNCisgIC0yMDksICAgMTEyLCAgIC0yMiwgIC0xNjcsDQorICAgLTkxLCAgLTE1MSwgICAxNjgsICAtMjYyfTsNCisNCisNCisNCisgICAgICAgLyogMzYgYml0ICovDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyAqICBpc2YgY29kZWJvb2tzOiAgdHdvLXN0YWdlIFZRIHdpdGggc3BsaXQtYnktMyBpbiAybmQgc3RhZ2UgICAgICAgICoNCisgKiAgICAgICAgICAgICAgICAxc3Qgc3RhZ2UgaXMga2VwdCB0aGUgc2FtZSBhcyB0aGUgNDYgYml0IHF1YW50aXplciAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICBjb2RlYm9vayAgIHZlY3RvciBkaW1lbnNpb24gICAgbnVtYmVyIG9mIHZlY3RvcnMgICAgICAgICAgICAgICAgICoNCisgKiAgfn5+fn5+fn4gICB+fn5+fn5+fn5+fn5+fn5+ICAgIH5+fn5+fn5+fn5+fn5+fn5+ICAgICAgICAgICAgICAgICAqDQorICogICAgIDFfMSAgICAgICAgICAgIDkgICAgICAgICAgICAgICAgICAyNTYgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAxXzIgICAgICAgICAgICA3ICAgICAgICAgICAgICAgICAgMjU2ICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgMl8xICAgICAgICAgICAgNSAgICAgICAgICAgICAgICAgIDEyOCAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgIDJfMiAgICAgICAgICAgIDQgICAgICAgICAgICAgICAgICAxMjggICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAyXzMgICAgICAgICAgICA3ICAgICAgICAgICAgICAgICAgNjQgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3N0YXRpYyBXb3JkMTYgZGljbzIxX2lzZl8zNmJbU0laRV9CSzIxXzM2Yio1XSA9IHsNCisNCisgICAtNTIsICAgLTk2LCAgIDIxMiwgICAzMTUsICAgLTczLA0KKyAgICA4MiwgIC0yMDQsICAgMzYzLCAgIDEzNiwgIC0xOTcsDQorICAtMTI2LCAgLTMzMSwgICAxODMsICAgMjE4LCAgIDE0MywNCisgICAtNDksICAgLTQxLCAgIDU1NywgICAyMzAsICAgIDcyLA0KKyAgICAgMiwgICAtNzMsICAgMTYzLCAgIDM3NywgICAyMjEsDQorICAgMTMzLCAgIDExMSwgICAyNzgsICAgMjE1LCAgLTExMCwNCisgIC0xMDIsICAgLTIwLCAgIDI4NCwgICAxMTMsICAgMjczLA0KKyAgICA4NCwgICAzMTksICAgMjkwLCAgICAxOCwgICAgODUsDQorICAgLTI1LCAgICAtNSwgICAxMjUsICAgMTMyLCAgLTIwNCwNCisgICAtMzgsICAgIC01LCAgIDI4NiwgICAgLTksICAtMzU2LA0KKyAgLTE0MCwgIC0yNTYsICAgIDkyLCAgIDExNywgIC0xODksDQorICAtMTQ0LCAgIDE5MSwgICAzMTMsICAgIDUxLCAgIC05OCwNCisgICAxNjcsICAgLTEwLCAgICA0NCwgICAyNDcsICAgIDM2LA0KKyAgIDM4MSwgICAxOTcsICAgMjM4LCAgICA3NCwgICAgIDYsDQorICAgIDM4LCAgLTQwOCwgICAgMjksICAgIC0zLCAgIC04NSwNCisgICAgOTIsICAgMjY2LCAgIDE1NywgICAtMjUsICAtMjAwLA0KKyAgIDE2MSwgIC0xMjEsICAgIDcwLCAgICA4NCwgIC0xNDAsDQorICAgLTE2LCAgIC04NiwgICAxMTIsICAgLTk0LCAgLTE4OSwNCisgIC0yNjksICAtMjcwLCAgIDM1MSwgICAxMDcsICAgLTI0LA0KKyAgIC02OCwgICAtNjcsICAgNDkyLCAgLTEwMywgIC0xNTUsDQorICAgLTUzLCAgLTEzMSwgICAgNjIsICAgMTIyLCAgICAxMCwNCisgICAxMzUsICAgIDg0LCAgIDI4MywgICAtNTUsICAtMTIwLA0KKyAgIC0xMiwgIC0yMTksICAgMzMxLCAgIC04MSwgICAxNjcsDQorICAgMjIwLCAgLTEzNiwgICAxNDcsICAtMTcyLCAgIC00MiwNCisgICAxNDAsICAgLTk1LCAgLTEwOSwgICAtODgsICAtMTk0LA0KKyAgICAgMCwgICAgLTIsICAgIC00LCAgIC0zMywgIC0zODEsDQorICAgLTY2LCAgLTIxNywgICAxNTIsICAtMTg2LCAgLTQwMiwNCisgICAyNDQsICAgMTA4LCAgIDE1NiwgIC0xNDAsICAtMzk1LA0KKyAgIDExMywgIC0xMzYsICAtMTk2LCAgIDExMCwgICAtMjQsDQorICAgMjE0LCAgIDExOCwgICAgMTEsICAgLTY0LCAgLTEzMSwNCisgIC0xMTAsICAtMjg2LCAgICAtNiwgIC0zMzIsICAgIDE2LA0KKyAgICA5NCwgICAgOTcsICAgIDc5LCAgLTI5MSwgIC0yMDUsDQorICAgIC01LCAgIC0zOSwgICAtMjAsICAgMjUyLCAgIC05NiwNCisgICAgNzYsICAgMTc0LCAgIDEwMSwgICAxNjMsICAgIDYxLA0KKyAgIC02OSwgIC0yMzksICAgLTU1LCAgIDM5OSwgICAgIDYsDQorICAtMTE1LCAgIDMxOSwgICAxNjQsICAgMjc1LCAgIDE5NiwNCisgICAtMTUsICAgIDM2LCAgIC00NywgICAzMzEsICAgMTIxLA0KKyAgIDIyNiwgICAyMDksICAgMjcxLCAgIDMyNSwgICAxODQsDQorICAgIDEzLCAgIC04MCwgIC0yMTgsICAgNDcxLCAgIDM1MywNCisgICAyODgsICAgMzc4LCAgICAxNiwgICAtNTEsICAgMjUxLA0KKyAgIDE3NCwgICAxMTYsICAgIDUyLCAgIDE0OSwgIC0yNzksDQorICAgMjM1LCAgIDI3NiwgICAgMzksICAgMTIwLCAgIC00OCwNCisgICAgIDAsICAtMTA4LCAgLTEwOCwgICAyNDEsICAtMzM5LA0KKyAgIC05MywgICA1MzQsICAgIDQ1LCAgICAzMywgICAtODcsDQorICAgMTk0LCAgIDE0OSwgICAtNzEsICAgNDA1LCAgIC00NCwNCisgICA0MDksICAgMzcwLCAgICA4MSwgIC0xODYsICAtMTU0LA0KKyAgICAyNSwgIC0xMDIsICAtNDQ4LCAgIDEyNCwgIC0xNzMsDQorICAgIDIyLCAgIDQwOCwgIC0xMTAsICAtMzEwLCAgLTIxNCwNCisgICAtMjYsICAgIDIzLCAgIC04MywgICAxMTQsICAgIDE0LA0KKyAgLTExMCwgICAxNjQsICAgIDUyLCAgIDIyMywgICAtODIsDQorICAgIDM3LCAgIC0yNSwgIC0yNjMsICAgMzA2LCAgIC0xNSwNCisgIC00NjYsICAgNDE1LCAgIDI5MiwgICAxNjUsICAgLTE4LA0KKyAgICAyOSwgICAtMTksICAtMTcxLCAgIDE1NSwgICAxODIsDQorICAgMTc5LCAgIDE0NCwgICAtMjcsICAgMjMxLCAgIDI1OCwNCisgIC0xMDMsICAtMjQ3LCAgLTM5NiwgICAyMzgsICAgMTEzLA0KKyAgIDM3NSwgIC0xNTQsICAtMTA5LCAgICAtNCwgICAxNTYsDQorICAgIDk4LCAgICA4NSwgIC0yOTIsICAgIC01LCAgLTEyNCwNCisgICAxMTYsICAgMTM5LCAgLTExNiwgICAtOTgsICAtMjk0LA0KKyAgIC0xNCwgICAtODMsICAtMjc4LCAgLTExNywgIC0zNzgsDQorICAgMTA2LCAgICAzMywgIC0xMDYsICAtMzQ0LCAgLTQ4NCwNCisgICAxMTksICAgIDE3LCAgLTQxMiwgICAxMzgsICAgMTY2LA0KKyAgIDM4NCwgICAxMDEsICAtMjA0LCAgICA4OCwgIC0xNTYsDQorICAtMTIxLCAgLTI4NCwgIC0zMDAsICAgIC0xLCAgLTE2NiwNCisgICAyODAsICAgIDMzLCAgLTE1MiwgIC0zMTMsICAgLTgxLA0KKyAgIC0zNywgICAgMjIsICAgMjI5LCAgIDE1MywgICAgMzcsDQorICAgLTYwLCAgIC04MywgICAyMzYsICAgIC04LCAgIC00MSwNCisgIC0xNjksICAtMjI4LCAgIDEyNiwgICAtMjAsICAgMzYzLA0KKyAgLTIzNSwgICAgMTcsICAgMzY0LCAgLTE1NiwgICAxNTYsDQorICAgLTI1LCAgIC0zMCwgICAgNzIsICAgMTQ0LCAgIDE1NiwNCisgICAxNTMsICAgLTI2LCAgIDI1NiwgICAgOTcsICAgMTQ0LA0KKyAgIC0yMSwgICAtMzcsICAgIDQ4LCAgIC02NSwgICAyNTAsDQorICAgIDYzLCAgICA3NywgICAyNzMsICAtMTI4LCAgIDEyNCwNCisgIC0xMjksICAgLTI2LCAgICA0MCwgICAgIDksICAtMTE1LA0KKyAgICAtNiwgICAgODIsICAgIDM4LCAgIC05MCwgIC0xODIsDQorICAtMzM2LCAgIC0xMywgICAgMjgsICAgMTU4LCAgICA5MSwNCisgICAtMzAsICAgMjQxLCAgIDEzNywgIC0xNzAsICAgLTE3LA0KKyAgIDE0NiwgICAgMTQsICAgLTExLCAgICAzMywgICAgNjEsDQorICAgMTkyLCAgIDE5NywgICAgNTQsICAgLTg0LCAgICA4NSwNCisgICAgMjMsICAtMjAwLCAgIC03OCwgICAtMjksICAgMTQwLA0KKyAgIDEyMiwgICAyMzcsICAgMTA2LCAgLTM0MSwgICAxMzYsDQorICAgLTU3LCAgLTE0MiwgICAtODUsICAgLTE2LCAgIC03NCwNCisgICAtNTksICAgLTkwLCAgICAtOCwgIC0xODcsICAgLTIwLA0KKyAgLTIxMSwgIC0yNjcsICAgMjE2LCAgLTE3OSwgIC0xMTAsDQorICAgLTUwLCAgICAtNywgICAyMjAsICAtMjY3LCAgIC03MCwNCisgICAtNTcsICAgLTQyLCAgIC0xNywgICAtMTUsICAgIDcxLA0KKyAgICAzMiwgICAgMjEsICAgIDYzLCAgLTEzNywgICAgMzMsDQorICAtMTM3LCAgLTE3NSwgICAxMDQsICAgLTY4LCAgICA5NywNCisgICAtNjcsICAgLTQzLCAgIDEzMywgIC0zMDEsICAgMjIxLA0KKyAgLTExNiwgIC0yMDAsICAgLTgxLCAgIC05MiwgIC0yNzIsDQorICAgLTY0LCAgIC00MSwgICAtNTQsICAtMjQ0LCAgLTIyMCwNCisgIC0yODcsICAtMjQyLCAgIC01MCwgICAtODcsICAgLTg5LA0KKyAgLTI0NSwgICAyMzYsICAgMTAyLCAgLTE2NiwgIC0yOTUsDQorICAgIDY2LCAgICAyNCwgIC0xNjIsICAgLTcxLCAgICA5NSwNCisgICAgNjYsICAgMTM2LCAgIC05MCwgIC0yMjAsICAgLTM2LA0KKyAgIC05OCwgIC0xNjEsICAtMjIyLCAgLTE4OCwgICAgMjksDQorICAgLTE4LCAgICAxOCwgICAtMTksICAtNDE1LCAgICAgOSwNCisgICAgNDksICAgIDYxLCAgIDEwMCwgICAgMzksICAgLTU2LA0KKyAgLTExMSwgICAgODIsICAgMTM1LCAgIC0zMSwgICAgNTIsDQorICAgLTkwLCAgLTE1MywgICAtOTMsICAgMTg5LCAgIDE4MiwNCisgIC0yMTQsICAgMjk1LCAgIDExOSwgICAtNzQsICAgMjg0LA0KKyAgICAgMiwgICAxMzcsICAgIDM3LCAgICA0NywgICAxODIsDQorICAgIDkyLCAgIDExNywgICAxODQsICAgLTUzLCAgIDM3MywNCisgICAtMjEsICAgLTE0LCAgIC0zNSwgICAxMzYsICAgMzkxLA0KKyAgIDE0NiwgICAxMjksICAtMTY0LCAgIC0yOCwgICAzMzMsDQorICAgIDkyLCAgICA4MCwgICAtODQsICAgMTAwLCAgLTEzNCwNCisgICAgLTgsICAgMjE3LCAgIC0zMiwgICAgIDMsICAgLTQ3LA0KKyAgLTE1MSwgICAyNTEsICAtMjE1LCAgIDE0MiwgICAgOTIsDQorICAtMjI0LCAgIDMxMCwgIC0xNzIsICAtMjc1LCAgICA5OCwNCisgICAxNTksICAgMTU1LCAgLTE3NywgICAxMTIsICAgIDUzLA0KKyAgIDIwNSwgICAgMjcsICAgICA4LCAgLTI0MCwgICAxOTIsDQorICAgMTY5LCAgIDEyMCwgIC0zMTksICAtMjAxLCAgIDEwNiwNCisgICAgMTEsICAgIDM2LCAgIC04NiwgIC0yMzcsICAgNDU1LA0KKyAgLTEwOSwgIC0xNTQsICAtMTYzLCAgIDE3NCwgICAtNTUsDQorICAgLTM4LCAgICAzMiwgIC0xMDEsICAgLTc4LCAgIC01OSwNCisgIC0yMDUsICAtMzIxLCAgIC05NywgICAgNjksICAgIDc5LA0KKyAgLTMxMCwgICAgNDQsICAgIDE4LCAgLTE4NSwgICAgMzQsDQorICAtMTE1LCAgIC0yMCwgIC0xNDgsICAgLTM5LCAgIDIwMywNCisgICAtMjksICAgMTU0LCAgIC0zMCwgIC0xNTgsICAgMTY2LA0KKyAgIC00NSwgIC0xMzEsICAtMzE3LCAgIC0yNCwgICAzNjMsDQorICAtMTY1LCAgLTIwNSwgIC0xMTIsICAtMjIyLCAgIDI2NSwNCisgICAtMzIsICAgLTQ0LCAgLTE1MCwgICAgNTQsICAtMTkzLA0KKyAgICAtNiwgICAtMzgsICAtMjU1LCAgLTE2OSwgIC0xMTUsDQorICAtMjY2LCAgICA4NywgIC0xODksICAgLTM2LCAgLTE2OSwNCisgICAtNjAsICAgLTg3LCAgLTI2NiwgIC00MzYsICAtMTcwLA0KKyAgIC02OCwgICAtODEsICAtMjc4LCAgICAyNCwgICAgMzgsDQorICAgLTIzLCAgIC0xOSwgIC0xNTUsICAtMjU2LCAgIDE0MSwNCisgICAtNjEsICAtMjI2LCAgLTU2NSwgIC0xNzUsICAgIDcxLA0KKyAgICAgOSwgICAtMjksICAtMjM3LCAgLTUxNSwgICAyNjN9Ow0KKw0KK3N0YXRpYyBXb3JkMTYgZGljbzIyX2lzZl8zNmJbU0laRV9CSzIyXzM2Yio0XSA9IHsNCisNCisgIC0yOTgsICAgIC02LCAgICA5NSwgICAgMzEsDQorICAtMjEzLCAgIC04NywgIC0xMjIsICAgMjYxLA0KKyAgICAgNCwgICAtNDksICAgMjA4LCAgICAxNCwNCisgIC0xMjksICAtMTEwLCAgICAzMCwgICAxMTgsDQorICAtMjE0LCAgIDI1OCwgICAxMTAsICAtMjM1LA0KKyAgIC00MSwgICAtMTgsICAtMTI2LCAgIDEyMCwNCisgICAxMDMsICAgIDY1LCAgIDEyNywgICAtMzcsDQorICAgMTI2LCAgIC0zNiwgICAtMjQsICAgIDI1LA0KKyAgLTEzOCwgICAtNjcsICAtMjc4LCAgLTE4NiwNCisgIC0xNjQsICAtMTk0LCAgLTIwMSwgICAgNzgsDQorICAtMjExLCAgIC04NywgICAtNTEsICAtMjIxLA0KKyAgLTE3NCwgICAtNzksICAgLTk0LCAgIC0zOSwNCisgICAgMjMsICAgIC02LCAgLTE1NywgIC0yNDAsDQorICAgIDIyLCAgLTExMCwgIC0xNTMsICAgLTY4LA0KKyAgIDE0OCwgICAgLTUsICAgIC0yLCAgLTE0OSwNCisgICAgLTEsICAtMTM1LCAgIC0zOSwgIC0xNzksDQorICAgIDY4LCAgIDM2MCwgIC0xMTcsICAgLTE1LA0KKyAgIDEzNywgICAgNDcsICAtMjc4LCAgIDE0NiwNCisgICAxMzYsICAgMjYwLCAgIDEzNSwgICAgNjUsDQorICAgIDYxLCAgIDExNiwgICAtNDUsICAgIDk3LA0KKyAgIDIzMSwgICAzNzksICAgIDg3LCAgLTEyMCwNCisgICAzMzgsICAgMTc3LCAgLTI3MiwgICAgIDMsDQorICAgMjY2LCAgIDE1NiwgICAgMjgsICAgLTY5LA0KKyAgIDI2MCwgICAgODQsICAgLTg1LCAgICA4NiwNCisgIC0yNjYsICAgMTU0LCAgLTI1NiwgIC0xODIsDQorICAgLTE3LCAgIC02NSwgIC0zMDQsICAgIC02LA0KKyAgIC00MCwgICAxNzUsICAtMTUxLCAgLTE4MCwNCisgICAtMjcsICAgIDI3LCAgIC04NywgICAtNjMsDQorICAgMTIxLCAgIDExNCwgIC0xNjYsICAtNDY5LA0KKyAgIDE1OSwgICAtNjYsICAtMzIzLCAgLTIzMSwNCisgICAyMTQsICAgMTUyLCAgLTE0MSwgIC0yMTIsDQorICAgMTM3LCAgICAzNiwgIC0xODQsICAgLTUxLA0KKyAgLTI4MiwgIC0yMzcsICAgIDQwLCAgICAxMCwNCisgICAtNDgsICAtMjM1LCAgIC0zNywgICAyNTEsDQorICAgLTU0LCAgLTMyMywgICAxMzYsICAgIDI5LA0KKyAgIC04OCwgIC0xNzQsICAgMjEzLCAgIDE5OCwNCisgIC0zOTAsICAgIDk5LCAgIC02MywgIC0zNzUsDQorICAgMTA3LCAgLTE2OSwgIC0xNjQsICAgNDI0LA0KKyAgICA2OSwgIC0xMTEsICAgMTQxLCAgLTE2NywNCisgICAgNzQsICAtMTI5LCAgICA2NSwgICAxNDQsDQorICAtMzUzLCAgLTIwNywgIC0yMDUsICAtMTA5LA0KKyAgLTE2MCwgIC0zODYsICAtMzU1LCAgICA5OCwNCisgIC0xNzYsICAtNDkzLCAgIC0yMCwgIC0xNDMsDQorICAtMjUyLCAgLTQzMiwgICAgLTIsICAgMjE2LA0KKyAgIC05MCwgIC0xNzQsICAtMTY4LCAgLTQxMSwNCisgICAgMTMsICAtMjg0LCAgLTIyOSwgIC0xNjAsDQorICAgLTg3LCAgLTI3OSwgICAgMzQsICAtMjUxLA0KKyAgIC03NSwgIC0yNjMsICAgLTU4LCAgIC00MiwNCisgICA0MjAsICAgIDUzLCAgLTIxMSwgIC0zNTgsDQorICAgMzg0LCAgIC0zNSwgIC0zNzQsICAgMzk2LA0KKyAgICA2OCwgIC0yMjgsICAgMzIzLCAgICAtMiwNCisgICAxNjcsICAtMzA3LCAgIDE5MiwgICAxOTQsDQorICAgNDU5LCAgIDMyOSwgICAgLTUsICAtMzMyLA0KKyAgIDM3NSwgICAgNzksICAgIC03LCAgIDMxMywNCisgICAyODIsICAtMTI0LCAgIDIwMCwgICAtOTIsDQorICAgMjcxLCAgLTE2MiwgICAtNzAsICAgMTgwLA0KKyAgLTE1NywgIC0yOTgsICAtNTE0LCAgLTMwOSwNCisgICAgNTgsICAtMTYzLCAgLTU0NiwgICAgMTgsDQorICAgMTI0LCAgLTM2NCwgICAxNjcsICAtMjM4LA0KKyAgICA4MywgIC00MTEsICAtMTE3LCAgICA5NiwNCisgICAxNDAsICAtMTEyLCAgLTM4OCwgIC02MjQsDQorICAgMjU5LCAgLTEzMywgIC0zMTcsICAgIDQxLA0KKyAgIDE2MywgIC0xMzAsICAgLTY0LCAgLTMzNCwNCisgICAyMjYsICAtMTY1LCAgLTEyNCwgIC0xMTAsDQorICAtNDY2LCAgIC02MSwgICAgIDYsICAgMjI5LA0KKyAgLTE1MywgICAyMDUsICAtMTQ1LCAgIDI0MiwNCisgIC0xNTksICAgIDQ4LCAgIDE5NSwgICAxNDgsDQorICAgLTU4LCAgICAyOCwgICAgMzEsICAgMjc5LA0KKyAgLTMwMywgICAxODUsICAgMjc5LCAgICAtNCwNCisgICAtNjEsICAgMTk3LCAgICA1OSwgICAgODYsDQorICAtMTE0LCAgIDEyMywgICAxNjgsICAgLTUyLA0KKyAgICAzNSwgICAgMzYsICAgMTAwLCAgIDEyNiwNCisgIC00MDcsICAgMTAyLCAgIC03NywgICAtNDAsDQorICAtMzM4LCAgICAtMSwgIC0zNDIsICAgMTU2LA0KKyAgLTE3OSwgICAxMDUsICAgLTM0LCAgIC05NywNCisgIC0xODUsICAgIDg0LCAgIC0zNSwgICAxMDgsDQorICAtMTMzLCAgIDEwNywgICAtOTEsICAtMzU3LA0KKyAgLTE4MCwgICAgNTQsICAtMjI5LCAgICAyNCwNCisgICAtNDQsICAgIDQ3LCAgICA0NywgIC0xODIsDQorICAgLTY2LCAgICAxMywgICAgNDUsICAgICA0LA0KKyAgLTMzOSwgICAyNTEsICAgIDY0LCAgIDIyNiwNCisgICAtNDIsICAgMTAxLCAgLTM1MCwgICAyNzUsDQorICAgLTk5LCAgIDM5OCwgICAxNDIsICAgMTIxLA0KKyAgIDExMSwgICAgMTIsICAtMTAyLCAgIDI2MCwNCisgICAgIDAsICAgNTA1LCAgIDI2MCwgICAtOTQsDQorICAgMTYxLCAgIDI4NSwgICAtOTYsICAgMjI0LA0KKyAgICAtNCwgICAyMDYsICAgMzE0LCAgICAzMywNCisgICAxNjcsICAgMTM5LCAgICA4OCwgICAyMDQsDQorICAtMjM1LCAgIDMxNiwgICAtNjAsICAgLTI1LA0KKyAgICAtOCwgIC0xNTAsICAtMzEyLCAgIDIwMSwNCisgICAtMzYsICAgMjkyLCAgICA2MSwgIC0xMDQsDQorICAgLTQwLCAgIDE3NCwgIC0xNjIsICAgIDQyLA0KKyAgIC0yMSwgICA0MDIsICAgLTI5LCAgLTM1MSwNCisgICAgMjEsICAgMTUyLCAgLTM2MCwgICAtOTMsDQorICAgIDU3LCAgIDE5MSwgICAyMTIsICAtMTk2LA0KKyAgICA3NiwgICAxNTgsICAgLTIxLCAgIC02OSwNCisgIC0zMjgsICAtMTg1LCAgIDMzMSwgICAxMTksDQorICAgLTUzLCAgIDI4NSwgICAgNTYsICAgMzM3LA0KKyAgLTEwNywgICAtMjQsICAgNDA1LCAgICAyOSwNCisgICAtMTgsICAgMTM3LCAgIDI3MiwgICAyNzcsDQorICAtMjU1LCAgICAyMiwgICAxNzMsICAtMTkxLA0KKyAgIDI5NSwgICAzMjIsICAgMzI1LCAgIDMwMiwNCisgICAgMjEsICAgLTI3LCAgIDMzMiwgIC0xNzgsDQorICAgMTE5LCAgICAxMywgICAyNzEsICAgMTI5LA0KKyAgLTQ1NSwgIC0xODAsICAgMTE2LCAgLTE5MSwNCisgIC0yMjcsICAgIDYyLCAgLTE0OCwgICA1MjQsDQorICAtMTc2LCAgLTI4NywgICAyODIsICAtMTU3LA0KKyAgLTI0MywgICAgMTMsICAgMTk5LCAgIDQzMCwNCisgICAtNTksICAgLTQ5LCAgIDExNSwgIC0zNjUsDQorICAgIDcyLCAgLTE3MiwgIC0xMzcsICAgIDkzLA0KKyAgLTEzOCwgIC0xMjYsICAgMTQxLCAgIC04NCwNCisgICAgIDUsICAtMTI0LCAgICAzOCwgICAtMjAsDQorICAtMjU4LCAgIDMxMSwgICA2MDEsICAgMjEzLA0KKyAgICA5NCwgICAxMzAsICAgLTYxLCAgIDUwMiwNCisgICAgLTEsICAtMTU3LCAgIDQ4NSwgICAzMTMsDQorICAgMTQ2LCAgIC03NCwgICAxNTgsICAgMzQ1LA0KKyAgIDI3NiwgICAxMzUsICAgMjgwLCAgIC01NywNCisgICA0OTAsICAgMjUyLCAgICA5OSwgICAgNDMsDQorICAgMjY3LCAgIC03NCwgICA0MjksICAgMTA1LA0KKyAgIDI3OCwgICAtMjMsICAgMTE5LCAgICA5NCwNCisgIC01NDIsICAgNDg4LCAgIDI1NywgIC0xMTUsDQorICAgLTg0LCAgLTI0NCwgIC00MzgsICAgNDc4LA0KKyAgLTExMywgIC01NDUsICAgMzg3LCAgIDEwMSwNCisgICAtOTUsICAtMzA2LCAgIDExMSwgICA0OTgsDQorICAgIDk1LCAgIDE2NiwgICAgMjIsICAtMzAxLA0KKyAgIDQyMCwgICAtMTUsICAgLTU4LCAgIC03OCwNCisgICAyNzAsICAgIDI5LCAgIDEyMiwgIC0yODIsDQorICAgMTYwLCAgLTI0MCwgICAgNTAsICAgLTM4fTsNCisNCitzdGF0aWMgV29yZDE2IGRpY28yM19pc2ZfMzZiW1NJWkVfQksyM18zNmIqN10gPSB7DQorDQorICAgIDgxLCAgIC0xOCwgICAgNjgsICAgLTI3LCAgLTEyMiwgIC0yODAsICAgIC00LA0KKyAgICA0NSwgIC0xNzcsICAgMjA5LCAgIC0zMCwgIC0xMzYsICAgLTc0LCAgIDEzMSwNCisgICAtNDQsICAgMTAxLCAgIC03NSwgICAtODgsICAgLTQ4LCAgLTEzNywgICAtNTQsDQorICAtMjQ1LCAgIC0yOCwgICAgNjMsICAgLTE4LCAgLTExMiwgIC0xMDMsICAgIDU4LA0KKyAgIC03OSwgICAgLTYsICAgMjIwLCAgIC02NSwgICAxMTQsICAgLTM1LCAgIC01MCwNCisgICAxMDksICAgLTY1LCAgIDE0MywgIC0xMTQsICAgMTI5LCAgICA3NiwgICAxMjUsDQorICAgMTY2LCAgICA5MCwgICAtNjEsICAtMjQyLCAgIDE4NiwgICAtNzQsICAgLTQzLA0KKyAgIC00NiwgICAtOTIsICAgIDQ5LCAgLTIyNywgICAgMjQsICAtMTU1LCAgICAzOSwNCisgICAgNjcsICAgIDg1LCAgICA5OSwgICAtNDIsICAgIDUzLCAgLTE4NCwgIC0yODEsDQorICAgMTQyLCAgLTEyMiwgICAgIDAsICAgIDIxLCAgLTE0MiwgICAtMTUsICAgLTE3LA0KKyAgIDIyMywgICAgOTIsICAgLTIxLCAgIC00OCwgICAtODIsICAgLTE0LCAgLTE2NywNCisgICAgNTEsICAgLTM3LCAgLTI0MywgICAtMzAsICAgLTkwLCAgICAxOCwgICAtNTYsDQorICAgIDU0LCAgIDEwNSwgICAgNzQsICAgIDg2LCAgICA2OSwgICAgMTMsICAtMTAxLA0KKyAgIDE5NiwgICAgNzIsICAgLTg5LCAgICA0MywgICAgNjUsICAgIDE5LCAgICAzOSwNCisgICAxMjEsICAgIDM0LCAgIDEzMSwgICAtODIsICAgIDI1LCAgIDIxMywgIC0xNTYsDQorICAgMTAxLCAgLTEwMiwgIC0xMzYsICAgLTIxLCAgICA1NywgICAyMTQsICAgIDIyLA0KKyAgICAzNiwgIC0xMjQsICAgMjA1LCAgIDIwNCwgICAgNTgsICAtMTU2LCAgIC04MywNCisgICAgODMsICAtMTE3LCAgIDEzNywgICAxMzcsICAgIDg1LCAgIDExNiwgICAgNDQsDQorICAgLTkyLCAgLTE0OCwgICAtNjgsICAgIDExLCAgLTEwMiwgIC0xOTcsICAtMjIwLA0KKyAgIC03NiwgIC0xODUsICAgLTU4LCAgIDEzMiwgICAtMjYsICAtMTgzLCAgICA4NSwNCisgICAgLTcsICAgLTMxLCAgICAtMiwgICAgMjMsICAgMjA1LCAgLTE1MSwgICAgMTAsDQorICAgLTI3LCAgIC0zNywgICAgLTUsICAgLTE4LCAgIDI5MiwgICAxMzEsICAgICAxLA0KKyAgIDExNywgIC0xNjgsICAgICA5LCAgIC05MywgICAgODAsICAgLTU5LCAgLTEyNSwNCisgIC0xODIsICAtMjQ0LCAgICA5OCwgICAtMjQsICAgMTM1LCAgIC0yMiwgICAgOTQsDQorICAgMjIxLCAgICA5NywgICAxMDYsICAgIDQyLCAgICA0MywgIC0xNjAsICAgIDgzLA0KKyAgICAyNSwgICAtNjQsICAgLTIxLCAgICAgNiwgICAgMTQsICAgLTE1LCAgIDE1NCwNCisgICAxMjYsICAgIDE1LCAgLTE0MCwgICAxNTAsICAgLTEwLCAgLTIwNywgIC0xMTQsDQorICAgIDc5LCAgIC02MywgIC0yMTEsICAgLTcwLCAgIC0yOCwgIC0yMTcsICAgMTY1LA0KKyAgICA0NiwgICAgMzgsICAgLTIyLCAgIDI4MSwgICAxMzIsICAgLTYyLCAgIDEwOSwNCisgICAxMTIsICAgIDU0LCAgLTExMiwgICAtOTMsICAgMjA4LCAgICAyNywgICAyOTYsDQorICAgMTE1LCAgICAxMCwgIC0xNDcsICAgIDQxLCAgIDIxNiwgICAgNDIsICAtMjc2LA0KKyAgICA1MCwgIC0xMTUsICAtMjU0LCAgIDE2NywgICAxMTcsICAgIC0yLCAgICA2MSwNCisgICAgMTcsICAgMTQ0LCAgICAzNCwgICAtNzIsICAtMTg2LCAgLTE1MCwgICAyNzIsDQorICAgLTI5LCAgIC02NiwgICAtODksICAgLTk1LCAgLTE0OSwgICAxMjksICAgMjUxLA0KKyAgIDEyMiwgICAgIDAsICAgLTUwLCAgLTIzNCwgICAtOTEsICAgIDM2LCAgICAyNiwNCisgIC0xMDUsICAtMTAyLCAgIC04OCwgIC0xMjEsICAtMjM2LCAgICAtNywgICAtMTEsDQorICAtMjA0LCAgIDEwOSwgICAgIDUsICAtMTkxLCAgIDEwNSwgICAtMTUsICAgMTYzLA0KKyAgIC04MCwgICAgMzIsICAgLTI0LCAgLTIwOSwgICAgNDEsICAgMjk0LCAgICA3MCwNCisgIC0xMDYsICAgLTk0LCAgLTIwNCwgIC0xMTgsICAgMTIwLCAgIC01MCwgICAtMzcsDQorICAgLTgyLCAgLTI0MSwgICAgNDYsICAtMTMxLCAgIC0yOSwgICAxNTAsICAgLTU1LA0KKyAgICAzMywgICAxNTUsICAgMTIwLCAgIC04OSwgICAgLTgsICAgICA3LCAgICA2MiwNCisgICAyMTMsICAgIDgyLCAgICA2MSwgICAgMTgsICAtMTYxLCAgIDE0NCwgICAxNTIsDQorICAgIDMwLCAgIDEzMSwgICAgNjUsICAgLTg3LCAgLTI1NSwgICAtMTcsICAtMTA3LA0KKyAgICAtOCwgICAgODUsICAgLTY0LCAgICA1MSwgIC0xNjIsICAgMjIzLCAgIC01MywNCisgIC0xMzQsICAgMjYxLCAgICA2OSwgICAtNTYsICAgMjE4LCAgICA3MiwgIC0xMTEsDQorICAgICAyLCAgIDE1NSwgIC0xMTMsICAgLTg3LCAgICA0OSwgICAgODUsICAgLTI4LA0KKyAgLTE2MywgICAgNDIsICAgIC0xLCAgLTE5NiwgICAgIDcsICAgIDM5LCAgLTI0NSwNCisgICAgMTQsICAtMTM3LCAgIC03OSwgICAgMTEsICAtMTYwLCAgIDIwMiwgIC0yOTMsDQorICAgLTk0LCAgICAzMywgICAyMDgsICAgMTAwLCAgICA1NiwgICAtNDQsICAgMzI2LA0KKyAgIC03OCwgICAtNDEsICAgMjMyLCAgICAxMywgIC0xNDIsICAgMjI3LCAgICA4MCwNCisgICAtMTYsICAgLTg3LCAgIDIwMSwgICAgMzMsICAtMTMzLCAgICAxNSwgIC0xODMsDQorICAgLTU4LCAgLTE5MiwgICAtNDcsICAgMTg0LCAgLTEyOCwgICAxMzMsICAgIDk5LA0KKyAgLTIwNSwgICAgMTEsICAtMTU1LCAgICA3OCwgICAgNTIsICAgIDcyLCAgIDE0MSwNCisgIC0yNDYsICAgIDI2LCAgICA5OSwgICAxNTEsICAgIDU5LCAgIDExNSwgICAtNjQsDQorICAgLTc5LCAgIC00NywgICAtMTYsICAgLTE0LCAgICAgNiwgICAgNDcsICAgLTQzLA0KKyAgIC03MiwgIC0xNzgsICAgLTI3LCAgIDE2MiwgICAxMTIsICAgIDQzLCAgLTE3NCwNCisgIC0xNzUsICAgMjM4LCAgIDE4NiwgICAgNzEsICAgLTU0LCAgLTE4OCwgICAtNzYsDQorICAtMjI1LCAgIDIzMywgICAgMzksICAgLTM5LCAgLTE1OCwgICAxMjIsICAgIDQ0LA0KKyAgIC0yNiwgICAgNDMsICAgIDg0LCAgIDEzMCwgICAtOTMsICAgLTUxLCAgICAyMiwNCisgICAgIDMsICAgIDkyLCAgLTE1MCwgICAxMzYsICAtMTgyLCAgIC01NywgICAgOTcsDQorICAtMTMxLCAgIDE3OSwgICAtNzgsICAgIDgwLCAgICA5MSwgIC0xNjUsICAgIDkwLA0KKyAgICAtMiwgICAxNDgsICAgIDE1LCAgIDEzMCwgICAgNjUsICAgMTc1LCAgIDExNywNCisgIC0xMzgsICAgMTE0LCAgLTEzNywgICAxMzIsICAgICAzLCAgIC0xMCwgIC0xODYsDQorICAgMTQwLCAgICAtNCwgICAtMzcsICAgMjU0LCAgIC02MiwgICAgOTIsICAtMTA5fTsNCisNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL3N0cmVhbS5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9zdHJlYW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZGJjMTNhCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy9zdHJlYW0uaApAQCAtMCwwICsxLDQ3IEBACisNCisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KK0ZpbGU6CQlzdHJlYW0uaA0KKw0KK0NvbnRhaW5zOiAgICAgICBWT01FIEFQSSBCdWZmZXIgT3BlcmF0b3IgSW1wbGVtZW50IEhlYWRlcg0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisjaWZuZGVmIF9fU1RSRUFNX0hfXw0KKyNkZWZpbmUgX19TVFJFQU1fSF9fDQorDQorI2luY2x1ZGUgInZvTWVtLmgiDQorI2RlZmluZSBGcmFtZV9NYXhzaXplICAxMDI0ICogMiAgLy9Xb3JrIEJ1ZmZlciAxMEsgDQorI2RlZmluZSBGcmFtZV9NYXhCeXRlICA2NDAgICAgICAgIC8vQU1SX1dCIEVuY29kZXIgb25lIGZyYW1lIDMyMCBzYW1wbGVzID0gNjQwIEJ5dGVzDQorI2RlZmluZSBNSU4oYSxiKQkgKChhKSA8IChiKT8gKGEpIDogKGIpKQ0KKw0KK3R5cGVkZWYgc3RydWN0ew0KKwl1bnNpZ25lZCBjaGFyICpzZXRfcHRyOw0KKwl1bnNpZ25lZCBjaGFyICpmcmFtZV9wdHI7DQorCXVuc2lnbmVkIGNoYXIgKmZyYW1lX3B0cl9iazsNCisJaW50ICBzZXRfbGVuOw0KKwlpbnQgIGZyYW1lYnVmZmVyX2xlbjsgDQorCWludCAgZnJhbWVfc3RvcmVsZW47DQorCWludCAgdXNlZF9sZW47DQorfUZyYW1lU3RyZWFtOw0KKw0KK3ZvaWQgdm9BV0JfVXBkYXRlRnJhbWVCdWZmZXIoRnJhbWVTdHJlYW0gKnN0cmVhbSwgVk9fTUVNX09QRVJBVE9SICpwTWVtT1ApOw0KK3ZvaWQgdm9BV0JfSW5pdEZyYW1lQnVmZmVyKEZyYW1lU3RyZWFtICpzdHJlYW0pOw0KK3ZvaWQgdm9BV0JfRmx1c2hGcmFtZUJ1ZmZlcihGcmFtZVN0cmVhbSAqc3RyZWFtKTsNCisjZW5kaWYgLy9fX1NUUkVBTV9IX18NCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL3R5cGVkZWYuaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvdHlwZWRlZi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhOGMwOTgKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL3R5cGVkZWYuaApAQCAtMCwwICsxLDY1IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyoNCisqICAgICAgRmlsZSAgICAgICAgICAgICA6IHR5cGVkZWYuYw0KKyogICAgICBQdXJwb3NlICAgICAgICAgIDogQmFzaWMgdHlwZXMuDQorKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaWZuZGVmIF9fVFlQRURFRl9IX18NCisjZGVmaW5lIF9fVFlQRURFRl9IX18NCisNCisjdW5kZWYgT1JJR0lOQUxfVFlQRURFRl9IIC8qIGRlZmluZSB0byBnZXQgIm9yaWdpbmFsIiBFVFNJIHZlcnNpb24NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHR5cGVkZWYuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorDQorI2lmZGVmIE9SSUdJTkFMX1RZUEVERUZfSA0KKy8qDQorICogdGhpcyBpcyB0aGUgb3JpZ2luYWwgY29kZSBmcm9tIHRoZSBFVFNJIGZpbGUgdHlwZWRlZi5oDQorICovDQorICAgDQorI2lmIGRlZmluZWQoX19CT1JMQU5EQ19fKSB8fCBkZWZpbmVkKF9fV0FUQ09NQ19fKSB8fCBkZWZpbmVkKF9NU0NfVkVSKSB8fCBkZWZpbmVkKF9fWlRDX18pDQordHlwZWRlZiBzaWduZWQgY2hhciBXb3JkODsNCit0eXBlZGVmIHNob3J0IFdvcmQxNjsNCit0eXBlZGVmIGxvbmcgV29yZDMyOw0KK3R5cGVkZWYgaW50IEZsYWc7DQorDQorI2VsaWYgZGVmaW5lZChfX3N1bikNCit0eXBlZGVmIHNpZ25lZCBjaGFyIFdvcmQ4Ow0KK3R5cGVkZWYgc2hvcnQgV29yZDE2Ow0KK3R5cGVkZWYgbG9uZyBXb3JkMzI7DQordHlwZWRlZiBpbnQgRmxhZzsNCisNCisjZWxpZiBkZWZpbmVkKF9fdW5peF9fKSB8fCBkZWZpbmVkKF9fdW5peCkNCit0eXBlZGVmIHNpZ25lZCBjaGFyIFdvcmQ4Ow0KK3R5cGVkZWYgc2hvcnQgV29yZDE2Ow0KK3R5cGVkZWYgaW50IFdvcmQzMjsNCit0eXBlZGVmIGludCBGbGFnOw0KKw0KKyNlbmRpZg0KKyNlbHNlIC8qIG5vdCBvcmlnaW5hbCB0eXBlZGVmLmggKi8NCisNCisvKg0KKyAqIHVzZSAoaW1wcm92ZWQpIHR5cGUgZGVmaW5pdGlvbiBmaWxlIHR5cGRlZnMuaCBhbmQgYWRkIGEgIkZsYWciIHR5cGUNCisgKi8NCisjaW5jbHVkZSAidHlwZWRlZnMuaCINCit0eXBlZGVmIGludCBGbGFnOw0KKw0KKyNlbmRpZg0KKw0KKyNlbmRpZiAgLy9fX1RZUEVERUZfSF9fDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy90eXBlZGVmcy5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy90eXBlZGVmcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4YjY1N2UKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL3R5cGVkZWZzLmgKQEAgLTAsMCArMSwyMTEgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorLyoNCisqDQorKiAgICAgIEZpbGUgICAgICAgICAgICAgOiB0eXBlZGVmcy5oDQorKiAgICAgIERlc2NyaXB0aW9uICAgICAgOiBEZWZpbml0aW9uIG9mIHBsYXRmb3JtIGluZGVwZW5kZW50IGRhdGENCisqICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzIGFuZCBjb25zdGFudHMNCisqDQorKg0KKyogICAgICBUaGUgZm9sbG93aW5nIHBsYXRmb3JtIGluZGVwZW5kZW50IGRhdGEgdHlwZXMgYW5kIGNvcnJlc3BvbmRpbmcNCisqICAgICAgcHJlcHJvY2Vzc29yICgjZGVmaW5lKSBjb25zdGFudHMgYXJlIGRlZmluZWQ6DQorKg0KKyogICAgICAgIGRlZmluZWQgdHlwZSAgbWVhbmluZyAgICAgICAgICAgY29ycmVzcG9uZGluZyBjb25zdGFudHMNCisqICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQorKiAgICAgICAgQ2hhciAgICAgICAgICBjaGFyYWN0ZXIgICAgICAgICAobm9uZSkNCisqICAgICAgICBCb29sICAgICAgICAgIGJvb2xlYW4gICAgICAgICAgIHRydWUsIGZhbHNlDQorKiAgICAgICAgV29yZDggICAgICAgICA4LWJpdCBzaWduZWQgICAgICBtaW5Xb3JkOCwgICBtYXhXb3JkOA0KKyogICAgICAgIFVXb3JkOCAgICAgICAgOC1iaXQgdW5zaWduZWQgICAgbWluVVdvcmQ4LCAgbWF4VVdvcmQ4DQorKiAgICAgICAgV29yZDE2ICAgICAgICAxNi1iaXQgc2lnbmVkICAgICBtaW5Xb3JkMTYsICBtYXhXb3JkMTYNCisqICAgICAgICBVV29yZDE2ICAgICAgIDE2LWJpdCB1bnNpZ25lZCAgIG1pblVXb3JkMTYsIG1heFVXb3JkMTYNCisqICAgICAgICBXb3JkMzIgICAgICAgIDMyLWJpdCBzaWduZWQgICAgIG1pbldvcmQzMiwgIG1heFdvcmQzMg0KKyogICAgICAgIFVXb3JkMzIgICAgICAgMzItYml0IHVuc2lnbmVkICAgbWluVVdvcmQzMiwgbWF4VVdvcmQzMg0KKyogICAgICAgIEZsb2F0ICAgICAgICAgZmxvYXRpbmcgcG9pbnQgICAgbWluRmxvYXQsICAgbWF4RmxvYXQNCisqDQorKg0KKyogICAgICBUaGUgZm9sbG93aW5nIGNvbXBpbGUgc3dpdGNoZXMgYXJlICNkZWZpbmVkOg0KKyoNCisqICAgICAgICBQTEFURk9STSAgICAgIHN0cmluZyBpbmRpY2F0aW5nIHBsYXRmb3JtIHByb2dhbSBpcyBjb21waWxlZCBvbg0KKyogICAgICAgICAgICAgICAgICAgICAgcG9zc2libGUgdmFsdWVzOiAiT1NGIiwgIlBDIiwgIlNVTiINCisqDQorKiAgICAgICAgT1NGICAgICAgICAgICBvbmx5IGRlZmluZWQgaWYgdGhlIGN1cnJlbnQgcGxhdGZvcm0gaXMgYW4gQWxwaGENCisqICAgICAgICBQQyAgICAgICAgICAgIG9ubHkgZGVmaW5lZCBpZiB0aGUgY3VycmVudCBwbGF0Zm9ybSBpcyBhIFBDDQorKiAgICAgICAgU1VOICAgICAgICAgICBvbmx5IGRlZmluZWQgaWYgdGhlIGN1cnJlbnQgcGxhdGZvcm0gaXMgYSBTdW4NCisqICAgICAgICANCisqICAgICAgICBMU0JGSVJTVCAgICAgIGlzIGRlZmluZWQgaWYgdGhlIGJ5dGUgb3JkZXIgb24gdGhpcyBwbGF0Zm9ybSBpcw0KKyogICAgICAgICAgICAgICAgICAgICAgImxlYXN0IHNpZ25pZmljYW50IGJ5dGUgZmlyc3QiIC0+IGRlZmluZWQgb24gREVDIEFscGhhDQorKiAgICAgICAgICAgICAgICAgICAgICBhbmQgUEMsIHVuZGVmaW5lZCBvbiBTdW4NCisqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqLw0KKw0KKyNpZm5kZWYgX19UWVBFREVGU19IX18NCisjZGVmaW5lIF9fVFlQRURFRlNfSF9fDQorDQorLyoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgSU5DTFVERSBGSUxFUw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKi8NCisjaW5jbHVkZSA8ZmxvYXQuaD4NCisjaW5jbHVkZSA8bGltaXRzLmg+DQorDQorDQorDQorLyoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgREVGSU5JVElPTiBPRiBDT05TVEFOVFMgDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqLw0KKy8qDQorICoqKioqKioqKiBkZWZpbmUgY2hhciB0eXBlDQorICovDQordHlwZWRlZiBjaGFyIENoYXI7DQorDQorLyoNCisgKioqKioqKioqIGRlZmluZSA4IGJpdCBzaWduZWQvdW5zaWduZWQgdHlwZXMgJiBjb25zdGFudHMNCisgKi8NCisjaWYgU0NIQVJfTUFYID09IDEyNw0KK3R5cGVkZWYgc2lnbmVkIGNoYXIgV29yZDg7DQorI2RlZmluZSBtaW5Xb3JkOCAgU0NIQVJfTUlODQorI2RlZmluZSBtYXhXb3JkOCAgU0NIQVJfTUFYDQorDQordHlwZWRlZiB1bnNpZ25lZCBjaGFyIFVXb3JkODsNCisjZGVmaW5lIG1pblVXb3JkOCAwDQorI2RlZmluZSBtYXhVV29yZDggVUNIQVJfTUFYDQorI2Vsc2UNCisjZXJyb3IgY2Fubm90IGZpbmQgOC1iaXQgdHlwZQ0KKyNlbmRpZg0KKw0KKw0KKy8qDQorICoqKioqKioqKiBkZWZpbmUgMTYgYml0IHNpZ25lZC91bnNpZ25lZCB0eXBlcyAmIGNvbnN0YW50cw0KKyAqLw0KKyNpZiBJTlRfTUFYID09IDMyNzY3DQordHlwZWRlZiBpbnQgV29yZDE2Ow0KKyNkZWZpbmUgbWluV29yZDE2ICAgICBJTlRfTUlODQorI2RlZmluZSBtYXhXb3JkMTYgICAgIElOVF9NQVgNCit0eXBlZGVmIHVuc2lnbmVkIGludCBVV29yZDE2Ow0KKyNkZWZpbmUgbWluVVdvcmQxNiAgICAwDQorI2RlZmluZSBtYXhVV29yZDE2ICAgIFVJTlRfTUFYDQorI2VsaWYgU0hSVF9NQVggPT0gMzI3NjcNCit0eXBlZGVmIHNob3J0IFdvcmQxNjsNCisjZGVmaW5lIG1pbldvcmQxNiAgICAgU0hSVF9NSU4NCisjZGVmaW5lIG1heFdvcmQxNiAgICAgU0hSVF9NQVgNCit0eXBlZGVmIHVuc2lnbmVkIHNob3J0IFVXb3JkMTY7DQorI2RlZmluZSBtaW5VV29yZDE2ICAgIDANCisjZGVmaW5lIG1heFVXb3JkMTYgICAgVVNIUlRfTUFYDQorI2Vsc2UNCisjZXJyb3IgY2Fubm90IGZpbmQgMTYtYml0IHR5cGUNCisjZW5kaWYNCisNCisNCisvKg0KKyAqKioqKioqKiogZGVmaW5lIDMyIGJpdCBzaWduZWQvdW5zaWduZWQgdHlwZXMgJiBjb25zdGFudHMNCisgKi8NCisjaWYgSU5UX01BWCA9PSAyMTQ3NDgzNjQ3DQordHlwZWRlZiBpbnQgV29yZDMyOw0KKyNkZWZpbmUgbWluV29yZDMyICAgICBJTlRfTUlODQorI2RlZmluZSBtYXhXb3JkMzIgICAgIElOVF9NQVgNCit0eXBlZGVmIHVuc2lnbmVkIGludCBVV29yZDMyOw0KKyNkZWZpbmUgbWluVVdvcmQzMiAgICAwDQorI2RlZmluZSBtYXhVV29yZDMyICAgIFVJTlRfTUFYDQorI2VsaWYgTE9OR19NQVggPT0gMjE0NzQ4MzY0Nw0KK3R5cGVkZWYgbG9uZyBXb3JkMzI7DQorI2RlZmluZSBtaW5Xb3JkMzIgICAgIExPTkdfTUlODQorI2RlZmluZSBtYXhXb3JkMzIgICAgIExPTkdfTUFYDQordHlwZWRlZiB1bnNpZ25lZCBsb25nIFVXb3JkMzI7DQorI2RlZmluZSBtaW5VV29yZDMyICAgIDANCisjZGVmaW5lIG1heFVXb3JkMzIgICAgVUxPTkdfTUFYDQorI2Vsc2UNCisjZXJyb3IgY2Fubm90IGZpbmQgMzItYml0IHR5cGUNCisjZW5kaWYNCisNCisvKg0KKyAqKioqKioqKiogZGVmaW5lIGZsb2F0aW5nIHBvaW50IHR5cGUgJiBjb25zdGFudHMNCisgKi8NCisvKiB1c2UgIiNpZiAwIiBiZWxvdyBpZiBGbG9hdCBzaG91bGQgYmUgZG91YmxlOw0KKyAgIHVzZSAiI2lmIDEiIGJlbG93IGlmIEZsb2F0IHNob3VsZCBiZSBmbG9hdA0KKyAqLw0KKyNpZiAwDQordHlwZWRlZiBmbG9hdCBGbG9hdDsNCisjZGVmaW5lIG1heEZsb2F0ICAgICAgRkxUX01BWA0KKyNkZWZpbmUgbWluRmxvYXQgICAgICBGTFRfTUlODQorI2Vsc2UNCit0eXBlZGVmIGRvdWJsZSBGbG9hdDsNCisjZGVmaW5lIG1heEZsb2F0ICAgICAgREJMX01BWA0KKyNkZWZpbmUgbWluRmxvYXQgICAgICBEQkxfTUlODQorI2VuZGlmDQorDQorLyoNCisgKioqKioqKioqIGRlZmluZSBjb21wbGV4IHR5cGUNCisgKi8NCit0eXBlZGVmIHN0cnVjdCB7DQorICBGbG9hdCByOyAgLyogcmVhbCAgICAgIHBhcnQgKi8NCisgIEZsb2F0IGk7ICAvKiBpbWFnaW5hcnkgcGFydCAqLw0KK30gQ1BYOw0KKw0KKy8qDQorICoqKioqKioqKiBkZWZpbmUgYm9vbGVhbiB0eXBlDQorICovDQordHlwZWRlZiBpbnQgQm9vbDsNCisjZGVmaW5lIGZhbHNlIDANCisjZGVmaW5lIHRydWUgMQ0KKw0KKy8qICoqKioqKkF2b2lkIGZ1bmN0aW9uIG11bHRpcGxlIGRlZmluaXRpb24qKioqKiogKi8NCisjZGVmaW5lICAgICBBdXRvY29yciAgICAgICAgIHZvQVdCX0F1dG9jb3JyDQorI2RlZmluZSAgICAgQ29udm9sdmUgICAgICAgICB2b0FXQl9Db252b2x2ZQ0KKyNkZWZpbmUgICAgIGNvcl9oX3ggICAgICAgICAgdm9BV0JfY29yX2hfeA0KKyNkZWZpbmUgICAgIGR0eF9lbmNfaW5pdCAgICAgdm9BV0JfZHR4X2VuY19pbml0DQorI2RlZmluZSAgICAgZHR4X2VuY19yZXNldCAgICB2b0FXQl9kdHhfZW5jX3Jlc2V0DQorI2RlZmluZSAgICAgZHR4X2VuY19leGl0ICAgICB2b0FXQl9kdHhfZW5jX2V4aXQNCisjZGVmaW5lICAgICBkdHhfZW5jICAgICAgICAgIHZvQVdCX2R0eF9lbmMNCisjZGVmaW5lICAgICBkdHhfYnVmZmVyICAgICAgIHZvQVdCX2R0eF9idWZmZXINCisjZGVmaW5lICAgICB0eF9kdHhfaGFuZGxlciAgIHZvQVdCX3R4X2R0eF9oYW5kbGVyDQorI2RlZmluZSAgICAgR19waXRjaCAgICAgICAgICB2b0FXQl9HX3BpdGNoDQorI2RlZmluZSAgICAgSXNwX0F6ICAgICAgICAgICB2b0FXQl9Jc3BfQXoNCisjZGVmaW5lICAgICBMYWdfd2luZG93ICAgICAgIHZvQVdCX0xhZ193aW5kb3cNCisjZGVmaW5lICAgICBMb2cyX25vcm0gICAgICAgIHZvQVdCX0xvZzJfbm9ybQ0KKyNkZWZpbmUgICAgIExvZzIgICAgICAgICAgICAgdm9BV0JfTG9nMg0KKyNkZWZpbmUgICAgIFBvdzIgICAgICAgICAgICAgdm9BV0JfUG93Mg0KKyNkZWZpbmUgICAgIExfQ29tcCAgICAgICAgICAgdm9BV0JfTF9Db21wDQorI2RlZmluZSAgICAgTXB5XzMyICAgICAgICAgICB2b0FXQl9NcHlfMzINCisjZGVmaW5lICAgICBNcHlfMzJfMTYgICAgICAgIHZvQVdCX01weV8zMl8xNg0KKyNkZWZpbmUgICAgIERpdl8zMiAgICAgICAgICAgdm9BV0JfRGl2XzMyDQorI2RlZmluZSAgICAgUGl0X3NocnAgICAgICAgICB2b0FXQl9QaXRfc2hycA0KKyNkZWZpbmUgICAgIFFpc2ZfbnMgICAgICAgICAgdm9BV0JfUWlzZl9ucw0KKyNkZWZpbmUgICAgIERpc2ZfbnMgICAgICAgICAgdm9BV0JfRGlzZl9ucw0KKyNkZWZpbmUgICAgIFJlc2lkdSAgICAgICAgICAgdm9BV0JfUmVzaWR1DQorI2RlZmluZSAgICAgU3luX2ZpbHQgICAgICAgICB2b0FXQl9TeW5fZmlsdA0KKyNkZWZpbmUgICAgIFNldF96ZXJvICAgICAgICAgdm9BV0JfU2V0X3plcm8NCisjZGVmaW5lICAgICBDb3B5ICAgICAgICAgICAgIHZvQVdCX0NvcHkNCisjZGVmaW5lICAgICB2b2ljZV9mYWN0b3IgICAgIHZvQVdCX3ZvaWNlX2ZhY3Rvcg0KKyNkZWZpbmUgICAgIFN5bl9maWx0XzMyICAgICAgdm9BV0JfU3luX2ZpbHRfMzINCisjZGVmaW5lICAgICBJc2ZfaXNwICAgICAgICAgIHZvQVdCX0lzZl9pc3ANCisjZGVmaW5lICAgICBMZXZpbnNvbiAgICAgICAgIHZvQVdCX0xldmluc29uDQorI2RlZmluZSAgICAgbWVkaWFuNSAgICAgICAgICB2b0FXQl9tZWRpYW41ICAgICAgICAgICANCisjZGVmaW5lICAgICBQcmVkX2x0NCAgICAgICAgIHZvQVdCX1ByZWRfbHQ0DQorI2RlZmluZSAgICAgUmVvcmRlcl9pc2YgICAgICB2b0FXQl9SZW9yZGVyX2lzZg0KKyNkZWZpbmUgICAgIERwaXNmXzJzXzM2YiAgICAgdm9BV0JfRHBpc2ZfMnNfMzZiDQorI2RlZmluZSAgICAgRHBpc2ZfMnNfNDZiICAgICB2b0FXQl9EcGlzZl8yc180NmINCisjZGVmaW5lICAgICBEb3RfcHJvZHVjdDEyICAgIHZvQVdCX0RvdF9wcm9kdWN0MTINCisjZGVmaW5lICAgICBtZW1fbWFsbG9jICAgICAgIHZvQVdCX21lbV9tYWxsb2MNCisjZGVmaW5lICAgICBtZW1fZnJlZSAgICAgICAgIHZvQVdCX21lbV9mcmVlDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjZW5kaWYgIC8vI2RlZmluZSBfX1RZUEVERUZTX0hfXw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9pbmMvd2JfdmFkLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL3diX3ZhZC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3MzNhZmUKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL3diX3ZhZC5oCkBAIC0wLDAgKzEsNzggQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgIFdCX1ZBRC5IICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorICogRnVuY3Rpb25zIGFuZCBzdGF0aWMgbWVtb3J5IGZvciBWb2ljZSBBY3Rpdml0eSBEZXRlY3Rpb24uICAgICAgICAgKg0KKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorI2lmbmRlZiBfX1dCX1ZBRF9IX18NCisjZGVmaW5lIF9fV0JfVkFEX0hfXw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICBJTkNMVURFIEZJTEVTDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisjaW5jbHVkZSAidHlwZWRlZi5oIg0KKyNpbmNsdWRlICJ3Yl92YWRfYy5oIg0KKyNpbmNsdWRlICJ2b01lbS5oIg0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICBERUZJTklUSU9OIE9GIERBVEEgVFlQRVMNCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KK3R5cGVkZWYgc3RydWN0DQorew0KKwlXb3JkMTYgYmNrcl9lc3RbQ09NUExFTl07ICAgICAgICAgICAgICAvKiBiYWNrZ3JvdW5kIG5vaXNlIGVzdGltYXRlICAgICAgICAgICAgICAgICovDQorCVdvcmQxNiBhdmVfbGV2ZWxbQ09NUExFTl07ICAgICAgICAgICAgIC8qIGF2ZXJhZ2VkIGlucHV0IGNvbXBvbmVudHMgZm9yIHN0YXRpb25hcnkgKi8NCisJLyogZXN0aW1hdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwlXb3JkMTYgb2xkX2xldmVsW0NPTVBMRU5dOyAgICAgICAgICAgICAvKiBpbnB1dCBsZXZlbHMgb2YgdGhlIHByZXZpb3VzIGZyYW1lICAgICAgICovDQorCVdvcmQxNiBzdWJfbGV2ZWxbQ09NUExFTl07ICAgICAgICAgICAgIC8qIGlucHV0IGxldmVscyBjYWxjdWxhdGVkIGF0IHRoZSBlbmQgb2YgYSBmcmFtZSAobG9va2FoZWFkKSAgKi8NCisJV29yZDE2IGFfZGF0YTVbRl81VEhfQ05UXVsyXTsgICAgICAgICAgLyogbWVtb3J5IGZvciB0aGUgZmlsdGVyIGJhbmsgICAgICAgICAgICAgICAqLw0KKwlXb3JkMTYgYV9kYXRhM1tGXzNUSF9DTlRdOyAgICAgICAgICAgICAvKiBtZW1vcnkgZm9yIHRoZSBmaWx0ZXIgYmFuayAgICAgICAgICAgICAgICovDQorDQorCVdvcmQxNiBidXJzdF9jb3VudDsgICAgICAgICAgICAgICAgICAgIC8qIGNvdW50cyBsZW5ndGggb2YgYSBzcGVlY2ggYnVyc3QgICAgICAgICAgKi8NCisJV29yZDE2IGhhbmdfY291bnQ7ICAgICAgICAgICAgICAgICAgICAgLyogaGFuZ292ZXIgY291bnRlciAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwlXb3JkMTYgc3RhdF9jb3VudDsgICAgICAgICAgICAgICAgICAgICAvKiBzdGF0aW9uYXJ5IGNvdW50ZXIgICAgICAgICAgICAgICAgICAgICAgICovDQorDQorCS8qIE5vdGUgdGhhdCBlYWNoIG9mIHRoZSBmb2xsb3dpbmcgdHdvIHZhcmlhYmxlcyBob2xkcyAxNSBmbGFncy4gRWFjaCBmbGFnIHJlc2VydmVzIDEgYml0IG9mIHRoZQ0KKwkgKiB2YXJpYWJsZS4gVGhlIG5ld2VzdCBmbGFnIGlzIGluIHRoZSBiaXQgMTUgKGFzc3VtaW5nIHRoYXQgTFNCIGlzIGJpdCAxIGFuZCBNU0IgaXMgYml0IDE2KS4gKi8NCisJV29yZDE2IHZhZHJlZzsgICAgICAgICAgICAgICAgICAgICAgICAgLyogZmxhZ3MgZm9yIGludGVybWVkaWF0ZSBWQUQgZGVjaXNpb25zICAgICAqLw0KKwlXb3JkMTYgdG9uZV9mbGFnOyAgICAgICAgICAgICAgICAgICAgICAvKiB0b25lIGRldGVjdGlvbiBmbGFncyAgICAgICAgICAgICAgICAgICAgICovDQorDQorCVdvcmQxNiBzcF9lc3RfY250OyAgICAgICAgICAgICAgICAgICAgIC8qIGNvdW50ZXIgZm9yIHNwZWVjaCBsZXZlbCBlc3RpbWF0aW9uICAgICAgKi8NCisJV29yZDE2IHNwX21heDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogbWF4aW11bSBsZXZlbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwlXb3JkMTYgc3BfbWF4X2NudDsgICAgICAgICAgICAgICAgICAgICAvKiBjb3VudHMgZnJhbWVzIHRoYXQgY29udGFpbnMgc3BlZWNoICAgICAgICovDQorCVdvcmQxNiBzcGVlY2hfbGV2ZWw7ICAgICAgICAgICAgICAgICAgIC8qIGVzdGltYXRlZCBzcGVlY2ggbGV2ZWwgICAgICAgICAgICAgICAgICAgKi8NCisJV29yZDMyIHByZXZfcG93X3N1bTsgICAgICAgICAgICAgICAgICAgLyogcG93ZXIgb2YgcHJldmlvdXMgZnJhbWUgICAgICAgICAgICAgICAgICAqLw0KKw0KK30gVmFkVmFyczsNCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKg0KKyAqIERFQ0xBUkFUSU9OIE9GIFBST1RPVFlQRVMNCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorV29yZDE2IHdiX3ZhZF9pbml0KFZhZFZhcnMgKiogc3QsIFZPX01FTV9PUEVSQVRPUiAqcE1lbU9QKTsNCitXb3JkMTYgd2JfdmFkX3Jlc2V0KFZhZFZhcnMgKiBzdCk7DQordm9pZCB3Yl92YWRfZXhpdChWYWRWYXJzICoqIHN0LCBWT19NRU1fT1BFUkFUT1IgKnBNZW1PUCk7DQordm9pZCB3Yl92YWRfdG9uZV9kZXRlY3Rpb24oVmFkVmFycyAqIHN0LCBXb3JkMTYgcF9nYWluKTsNCitXb3JkMTYgd2JfdmFkKFZhZFZhcnMgKiBzdCwgV29yZDE2IGluX2J1ZltdKTsNCisNCisjZW5kaWYgIC8vX19XQl9WQURfSF9fDQorDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy93Yl92YWRfYy5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL2luYy93Yl92YWRfYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5ZWY1MDYKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvaW5jL3diX3ZhZF9jLmgKQEAgLTAsMCArMSwxMDkgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgIFdCX1ZBRF9DLkgJCQkJICAgICAqDQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyAqIENvbnN0YW50cyBmb3IgVm9pY2UgQWN0aXZpdHkgRGV0ZWN0aW9uLgkJCSAgICAgKg0KKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorI2lmbmRlZiBfX1dCX1ZBRF9DX0hfXw0KKyNkZWZpbmUgX19XQl9WQURfQ19IX18NCisNCisjZGVmaW5lIEZSQU1FX0xFTiAyNTYgICAgICAgICAgICAgICAgICAgICAgLyogTGVuZ3RoIChzYW1wbGVzKSBvZiB0aGUgaW5wdXQgZnJhbWUgICAgICAgICAgKi8NCisjZGVmaW5lIENPTVBMRU4gMTIgICAgICAgICAgICAgICAgICAgICAgICAgLyogTnVtYmVyIG9mIHN1Yi1iYW5kcyB1c2VkIGJ5IFZBRCAgICAgICAgICAgICAgKi8NCisNCisjZGVmaW5lIFVOSVJTSEZUIDcgICAgICAgICAgICAgICAgICAgICAgICAgLyogPSBsb2cyKE1BWF8xNi9VTklUWSksIFVOSVRZID0gMjU2ICAgICAgKi8NCisjZGVmaW5lIFNDQUxFIDEyOCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKFVOSVRZKlVOSVRZKS81MTIgKi8NCisNCisjZGVmaW5lIFRPTkVfVEhSIChXb3JkMTYpKDAuNjUqTUFYXzE2KSAgICAgLyogVGhyZXNob2xkIGZvciB0b25lIGRldGVjdGlvbiAgICovDQorDQorLyogY29uc3RhbnRzIGZvciBzcGVlY2ggbGV2ZWwgZXN0aW1hdGlvbiAqLw0KKyNkZWZpbmUgU1BfRVNUX0NPVU5UIDgwDQorI2RlZmluZSBTUF9BQ1RJVklUWV9DT1VOVCAyNQ0KKyNkZWZpbmUgQUxQSEFfU1BfVVAgKFdvcmQxNikoKDEuMCAtIDAuODUpKk1BWF8xNikNCisjZGVmaW5lIEFMUEhBX1NQX0RPV04gKFdvcmQxNikoKDEuMCAtIDAuODUpKk1BWF8xNikNCisNCisjZGVmaW5lIE5PTV9MRVZFTCAyMDUwICAgICAgICAgICAgICAgICAgICAgLyogYWJvdXQgLTI2IGRCb3YgUTE1ICovDQorI2RlZmluZSBTUEVFQ0hfTEVWRUxfSU5JVCBOT01fTEVWRUwgICAgICAgIC8qIGluaXRpYWwgc3BlZWNoIGxldmVsICovDQorI2RlZmluZSBNSU5fU1BFRUNIX0xFVkVMMSAgKFdvcmQxNikoTk9NX0xFVkVMICogMC4wNjMpICAvKiBOT01fTEVWRUwgLTI0IGRCICovDQorI2RlZmluZSBNSU5fU1BFRUNIX0xFVkVMMiAgKFdvcmQxNikoTk9NX0xFVkVMICogMC4yKSAgICAvKiBOT01fTEVWRUwgLTE0IGRCICovDQorI2RlZmluZSBNSU5fU1BFRUNIX1NOUiA0MDk2ICAgICAgICAgICAgICAgIC8qIDAgZEIsIGxvd2VzdCBTTlIgZXN0aW1hdGlvbiwgUTEyICovDQorDQorLyogVGltZSBjb25zdGFudHMgZm9yIGJhY2tncm91bmQgc3BlY3RydW0gdXBkYXRlICovDQorI2RlZmluZSBBTFBIQV9VUDEgICAoV29yZDE2KSgoMS4wIC0gMC45NSkqTUFYXzE2KSAgICAgICAvKiBOb3JtYWwgdXBkYXRlLCB1cHdhcmRzOiAgICovDQorI2RlZmluZSBBTFBIQV9ET1dOMSAoV29yZDE2KSgoMS4wIC0gMC45MzYpKk1BWF8xNikgICAgICAvKiBOb3JtYWwgdXBkYXRlLCBkb3dud2FyZHMgICovDQorI2RlZmluZSBBTFBIQV9VUDIgICAoV29yZDE2KSgoMS4wIC0gMC45ODUpKk1BWF8xNikgICAgICAvKiBGb3JjZWQgdXBkYXRlLCB1cHdhcmRzICAgICovDQorI2RlZmluZSBBTFBIQV9ET1dOMiAoV29yZDE2KSgoMS4wIC0gMC45NDMpKk1BWF8xNikgICAgICAvKiBGb3JjZWQgdXBkYXRlLCBkb3dud2FyZHMgICovDQorI2RlZmluZSBBTFBIQTMgICAgICAoV29yZDE2KSgoMS4wIC0gMC45NSkqTUFYXzE2KSAgICAgICAvKiBVcGRhdGUgZG93bndhcmRzICAgICAgICAgICovDQorI2RlZmluZSBBTFBIQTQgICAgICAoV29yZDE2KSgoMS4wIC0gMC45KSpNQVhfMTYpICAgICAgICAvKiBGb3Igc3RhdGlvbmFyeSBlc3RpbWF0aW9uICovDQorI2RlZmluZSBBTFBIQTUgICAgICAoV29yZDE2KSgoMS4wIC0gMC41KSpNQVhfMTYpICAgICAgICAvKiBGb3Igc3RhdGlvbmFyeSBlc3RpbWF0aW9uICovDQorDQorLyogQ29uc3RhbnRzIGZvciBWQUQgdGhyZXNob2xkICovDQorI2RlZmluZSBUSFJfTUlOICAoV29yZDE2KSgxLjYqU0NBTEUpICAgICAgIC8qIE1pbmltdW0gdGhyZXNob2xkICAgICAgICAgICAgICAgKi8NCisjZGVmaW5lIFRIUl9ISUdIIChXb3JkMTYpKDYqU0NBTEUpICAgICAgICAgLyogSGlnaGVzdCB0aHJlc2hvbGQgICAgICAgICAgICAgICAqLw0KKyNkZWZpbmUgVEhSX0xPVyAoV29yZDE2KSgxLjcqU0NBTEUpICAgICAgICAvKiBMb3dlc3QgdGhyZXNob2xkICAgICAgICAgICAgICAgKi8NCisjZGVmaW5lIE5PX1AxIDMxNzQ0ICAgICAgICAgICAgICAgICAgICAgICAgLyogaWxvZzIoMSksIE5vaXNlIGxldmVsIGZvciBoaWdoZXN0IHRocmVzaG9sZCAqLw0KKyNkZWZpbmUgTk9fUDIgMTk3ODYgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbG9nMigwLjEqTUFYXzE2KSwgTm9pc2UgbGV2ZWwgZm9yIGxvd2VzdCB0aHJlc2hvbGQgKi8NCisjZGVmaW5lIE5PX1NMT1BFIChXb3JkMTYpKE1BWF8xNiooZmxvYXQpKFRIUl9MT1ctVEhSX0hJR0gpLyhmbG9hdCkoTk9fUDItTk9fUDEpKQ0KKw0KKyNkZWZpbmUgU1BfQ0hfTUlOIChXb3JkMTYpKC0wLjc1KlNDQUxFKQ0KKyNkZWZpbmUgU1BfQ0hfTUFYIChXb3JkMTYpKDAuNzUqU0NBTEUpDQorI2RlZmluZSBTUF9QMSAyMjUyNyAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlsb2cyKE5PTV9MRVZFTC80KSAqLw0KKyNkZWZpbmUgU1BfUDIgMTc4MzIgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbG9nMihOT01fTEVWRUwqNCkgKi8NCisjZGVmaW5lIFNQX1NMT1BFIChXb3JkMTYpKE1BWF8xNiooZmxvYXQpKFNQX0NIX01BWC1TUF9DSF9NSU4pLyhmbG9hdCkoU1BfUDItU1BfUDEpKQ0KKw0KKy8qIENvbnN0YW50cyBmb3IgaGFuZ292ZXIgbGVuZ3RoICovDQorI2RlZmluZSBIQU5HX0hJR0ggIDEyICAgICAgICAgICAgICAgICAgICAgIC8qIGxvbmdlc3QgaGFuZ292ZXIgICAgICAgICAgICAgICAqLw0KKyNkZWZpbmUgSEFOR19MT1cgIDIgICAgICAgICAgICAgICAgICAgICAgICAvKiBzaG9ydGVzdCBoYW5nb3ZlciAgICAgICAgICAgICAgICovDQorI2RlZmluZSBIQU5HX1AxIFRIUl9MT1cgICAgICAgICAgICAgICAgICAgIC8qIHRocmVzaG9sZCBmb3IgbG9uZ2VzdCBoYW5nb3ZlciAqLw0KKyNkZWZpbmUgSEFOR19QMiAoV29yZDE2KSg0KlNDQUxFKSAgICAgICAgICAvKiB0aHJlc2hvbGQgZm9yIHNob3J0ZXN0IGhhbmdvdmVyICovDQorI2RlZmluZSBIQU5HX1NMT1BFIChXb3JkMTYpKE1BWF8xNiooZmxvYXQpKEhBTkdfTE9XLUhBTkdfSElHSCkvKGZsb2F0KShIQU5HX1AyLUhBTkdfUDEpKQ0KKw0KKy8qIENvbnN0YW50cyBmb3IgYnVyc3QgbGVuZ3RoICovDQorI2RlZmluZSBCVVJTVF9ISUdIIDggICAgICAgICAgICAgICAgICAgICAgIC8qIGxvbmdlc3QgYnVyc3QgbGVuZ3RoICAgICAgICAgKi8NCisjZGVmaW5lIEJVUlNUX0xPVyAzICAgICAgICAgICAgICAgICAgICAgICAgLyogc2hvcnRlc3QgYnVyc3QgbGVuZ3RoICAgICAgICAqLw0KKyNkZWZpbmUgQlVSU1RfUDEgVEhSX0hJR0ggICAgICAgICAgICAgICAgICAvKiB0aHJlc2hvbGQgZm9yIGxvbmdlc3QgYnVyc3QgKi8NCisjZGVmaW5lIEJVUlNUX1AyIFRIUl9MT1cgICAgICAgICAgICAgICAgICAgLyogdGhyZXNob2xkIGZvciBzaG9ydGVzdCBidXJzdCAqLw0KKyNkZWZpbmUgQlVSU1RfU0xPUEUgKFdvcmQxNikoTUFYXzE2KihmbG9hdCkoQlVSU1RfTE9XLUJVUlNUX0hJR0gpLyhmbG9hdCkoQlVSU1RfUDItQlVSU1RfUDEpKQ0KKw0KKy8qIFBhcmFtZXRlcnMgZm9yIGJhY2tncm91bmQgc3BlY3RydW0gcmVjb3ZlcnkgZnVuY3Rpb24gKi8NCisjZGVmaW5lIFNUQVRfQ09VTlQgMjAgICAgICAgICAgICAgICAgICAgICAgLyogdGhyZXNob2xkIG9mIHN0YXRpb25hcnkgZGV0ZWN0aW9uIGNvdW50ZXIgICAgICAgICAqLw0KKw0KKyNkZWZpbmUgU1RBVF9USFJfTEVWRUwgMTg0ICAgICAgICAgICAgICAgICAvKiBUaHJlc2hvbGQgbGV2ZWwgZm9yIHN0YXRpb25hcml0eSBkZXRlY3Rpb24gICAgICAgICovDQorI2RlZmluZSBTVEFUX1RIUiAxMDAwICAgICAgICAgICAgICAgICAgICAgIC8qIFRocmVzaG9sZCBmb3Igc3RhdGlvbmFyaXR5IGRldGVjdGlvbiAgICAgICAgICAgICAgKi8NCisNCisvKiBMaW1pdHMgZm9yIGJhY2tncm91bmQgbm9pc2UgZXN0aW1hdGUgKi8NCisjZGVmaW5lIE5PSVNFX01JTiA0MCAgICAgICAgICAgICAgICAgICAgICAgLyogbWluaW11bSAqLw0KKyNkZWZpbmUgTk9JU0VfTUFYIDIwMDAwICAgICAgICAgICAgICAgICAgICAvKiBtYXhpbXVtICovDQorI2RlZmluZSBOT0lTRV9JTklUIDE1MCAgICAgICAgICAgICAgICAgICAgIC8qIGluaXRpYWwgKi8NCisNCisvKiBUaHJlc2hvbGRzIGZvciBzaWduYWwgcG93ZXIgKG5vdyBjYWxjdWxhdGVkIG9uIDIgZnJhbWVzKSAqLw0KKyNkZWZpbmUgVkFEX1BPV19MT1cgKFdvcmQzMikzMDAwMEwgICAgICAgICAvKiBJZiBpbnB1dCBwb3dlciBpcyBsb3dlciB0aGFuIHRoaXMsIFZBRCBpcyBzZXQgdG8gMCAqLw0KKyNkZWZpbmUgUE9XX1RPTkVfVEhSIChXb3JkMzIpNjg2MDgwTCAgICAgICAvKiBJZiBpbnB1dCBwb3dlciBpcyBsb3dlcix0b25lIGRldGVjdGlvbiBmbGFnIGlzIGlnbm9yZWQgKi8NCisNCisvKiBDb25zdGFudHMgZm9yIHRoZSBmaWx0ZXIgYmFuayAqLw0KKyNkZWZpbmUgQ09FRkYzICAgMTMzNjMgICAgICAgICAgICAgICAgICAgICAvKiBjb2VmZmljaWVudCBmb3IgdGhlIDNyZCBvcmRlciBmaWx0ZXIgICAgICovDQorI2RlZmluZSBDT0VGRjVfMSAyMTk1NSAgICAgICAgICAgICAgICAgICAgIC8qIDFzdCBjb2VmZmljaWVudCB0aGUgZm9yIDV0aCBvcmRlciBmaWx0ZXIgKi8NCisjZGVmaW5lIENPRUZGNV8yIDYzOTAgICAgICAgICAgICAgICAgICAgICAgLyogMm5kIGNvZWZmaWNpZW50IHRoZSBmb3IgNXRoIG9yZGVyIGZpbHRlciAqLw0KKyNkZWZpbmUgRl81VEhfQ05UIDUgICAgICAgICAgICAgICAgICAgICAgICAvKiBudW1iZXIgb2YgNXRoIG9yZGVyIGZpbHRlcnMgKi8NCisjZGVmaW5lIEZfM1RIX0NOVCA2ICAgICAgICAgICAgICAgICAgICAgICAgLyogbnVtYmVyIG9mIDN0aCBvcmRlciBmaWx0ZXJzICovDQorDQorI2VuZGlmICAgLy9fX1dCX1ZBRF9DX0hfXw0KKw0KKw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9wYXRlbnRfZGlzY2xhaW1lci50eHQgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvcGF0ZW50X2Rpc2NsYWltZXIudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0YmYxMWQKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvcGF0ZW50X2Rpc2NsYWltZXIudHh0CkBAIC0wLDAgKzEsOSBAQAorCitUSElTIElTIE5PVCBBIEdSQU5UIE9GIFBBVEVOVCBSSUdIVFMuCisKK0dvb2dsZSBtYWtlcyBubyByZXByZXNlbnRhdGlvbiBvciB3YXJyYW50eSB0aGF0IHRoZSBjb2RlY3MgZm9yIHdoaWNoCitzb3VyY2UgY29kZSBpcyBtYWRlIGF2YWlsYWJsZSBoZXJldW5kZXIgYXJlIHVuZW5jdW1iZXJlZCBieQordGhpcmQtcGFydHkgcGF0ZW50cy4gIFRob3NlIGludGVuZGluZyB0byB1c2UgdGhpcyBzb3VyY2UgY29kZSBpbgoraGFyZHdhcmUgb3Igc29mdHdhcmUgcHJvZHVjdHMgYXJlIGFkdmlzZWQgdGhhdCBpbXBsZW1lbnRhdGlvbnMgb2YKK3RoZXNlIGNvZGVjcywgaW5jbHVkaW5nIGluIG9wZW4gc291cmNlIHNvZnR3YXJlIG9yIHNoYXJld2FyZSwgbWF5CityZXF1aXJlIHBhdGVudCBsaWNlbnNlcyBmcm9tIHRoZSByZWxldmFudCBwYXRlbnQgaG9sZGVycy4KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYXNtL0FSTVY1RS9EZWVtcGhfMzJfb3B0LnMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNUUvRGVlbXBoXzMyX29wdC5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlYjVlOWYKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNUUvRGVlbXBoXzMyX29wdC5zCkBAIC0wLDAgKzEsMTA0IEBACitALyoNCitAICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorQCAqKg0KK0AgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorQCAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorQCAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCitAICoqDQorQCAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorQCAqKg0KK0AgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KK0AgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCitAICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KK0AgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KK0AgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorQCAqLw0KKw0KK0B2b2lkIERlZW1waF8zMigNCitAICAgICBXb3JkMTYgeF9oaVtdLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBpbnB1dCBzaWduYWwgKGJpdDMxLi4xNikgKi8NCitAICAgICBXb3JkMTYgeF9sb1tdLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBpbnB1dCBzaWduYWwgKGJpdDE1Li40KSAgKi8NCitAICAgICBXb3JkMTYgeVtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSAgICAgOiBvdXRwdXQgc2lnbmFsICh4MTYpICAgICAgKi8NCitAICAgICBXb3JkMTYgbXUsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRMTUgOiBkZWVtcGhhc2lzIGZhY3RvciAgICAgICAgKi8NCitAICAgICBXb3JkMTYgTCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiB2ZWN0b3Igc2l6ZSAgICAgICAgICAgICAgKi8NCitAICAgICBXb3JkMTYgKiBtZW0gICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpL28pICAgOiBtZW1vcnkgKHlbLTFdKSAgICAgICAgICAgKi8NCitAICAgICApDQorDQorQHhfaGkgICAgIFJOICAgICAgUjANCitAeF9sbyAgICAgUk4gICAgICBSMQ0KK0B5W10gICAgICBSTiAgICAgIFIyDQorQCptZW0gICAgIFJOICAgICAgUjMNCisNCisgICAgICAgICAgIC5zZWN0aW9uICAudGV4dA0KKyAgICAgICAgICAgLmdsb2JhbCAgIERlZW1waF8zMl9hc20NCisJICAgDQorRGVlbXBoXzMyX2FzbToNCisNCisgICAgICAgICAgIFNUTUZEICAgCXIxMyEsIHtyNCAtIHIxMiwgcjE0fSANCisJICAgTU9WICAgICAgICAgIHI0LCAjMiAgICAgICAgICAgICAgICAgICBAaT0wDQorCSAgIExEUlNIICAgICAgICByNiwgW3IwXSwgIzIgICAgICAgICAgICAgQGxvYWQgeF9oaVswXQ0KKwkgICBMRFJTSCAgICAgICAgcjcsIFtyMV0sICMyICAgICAgICAgICAgIEBsb2FkIHhfbG9bMF0NCisJICAgTERSICAgICAgICAgIHI1LCA9MjIyODIgICAgICAgICAgICAgICBAcjUtLS1tdQ0KKwkgICBNT1YgICAgICAgICAgcjExLCAjMHg4MDAwDQorDQorICAgICAgICAgICBAeVswXQ0KKwkgICBNT1YgICAgICAgICAgcjEwLCByNiwgTFNMICMxNiAgICAgICAgIEBMX3RtcCA9IHhfaGlbMF08PDE2DQorCSAgIE1PViAgICAgICAgICByOCwgIHI1LCBBU1IgIzEgICAgICAgICAgQGZhYyA9IG11ID4+IDENCisJICAgTERSICAgICAgICAgIHI1LCAgW3IzXQ0KKwkgICBBREQgICAgICAgICAgcjEyLCByMTAsIHI3LCBMU0wgIzQgICAgIEBMX3RtcCArPSB4X2xvWzBdIDw8IDQNCisJICAgTU9WICAgICAgICAgIHIxMCwgcjEyLCBMU0wgIzMgICAgICAgICBATF90bXAgPDw9IDMNCisJICAgTVVMICAgICAgICAgIHI5LCByNSwgcjgNCisJICAgTERSU0ggICAgICAgIHI2LCBbcjBdLCAjMiAgICAgICAgICAgICBAbG9hZCB4X2hpWzFdIA0KKwkgICBRREFERCAgICAgICAgcjEwLCByMTAsIHI5DQorCSAgIExEUlNIICAgICAgICByNywgW3IxXSwgIzIgICAgICAgICAgICAgQGxvYWQgeF9sb1sxXSAgDQorCSAgIE1PViAgICAgICAgICByMTIsIHIxMCwgTFNMICMxICAgICAgICAgQExfdG1wID0gTF9tYWMoTF90bXAsICptZW0sIGZhYykNCisJICAgUUFERCAgICAgICAgIHIxMCwgcjEyLCByMTENCisJICAgTU9WICAgICAgICAgIHIxNCwgcjEwLCBBU1IgIzE2ICAgICAgICBAeVswXSA9IHJvdW5kKExfdG1wKQ0KKw0KKw0KKwkgICBNT1YgICAgICAgICAgcjEwLCByNiwgTFNMICMxNg0KKwkgICBBREQgICAgICAgICAgcjEyLCByMTAsIHI3LCBMU0wgIzQNCisgICAgICAgICAgIFNUUkggICAgICAgICByMTQsIFtyMl0sICMyICAgICAgICAgICAgQHVwZGF0ZSB5WzBdDQorCSAgIE1PViAgICAgICAgICByMTAsIHIxMiwgTFNMICMzDQorCSAgIE1VTCAgICAgICAgICByOSwgcjE0LCByOA0KKwkgICBRREFERCAgICAgICAgcjEwLCByMTAsIHI5DQorCSAgIE1PViAgICAgICAgICByMTIsIHIxMCwgTFNMICMxDQorCSAgIFFBREQgICAgICAgICByMTAsIHIxMiwgcjExDQorCSAgIE1PViAgICAgICAgICByMTQsIHIxMCwgQVNSICMxNiAgICAgICAgQHlbMV0gPSByb3VuZChMX3RtcCkNCisNCitMT09QOg0KKyAgICAgICAgICAgTERSU0ggICAgICAgIHI2LCBbcjBdLCAjMiAgICAgICAgICAgICBAbG9hZCB4X2hpW10NCisJICAgTERSU0ggICAgICAgIHI3LCBbcjFdLCAjMg0KKwkgICBTVFJIICAgICAgICAgcjE0LCBbcjJdLCAjMg0KKwkgICBNT1YgICAgICAgICAgcjEwLCByNiwgTFNMICMxNg0KKwkgICBBREQgICAgICAgICAgcjEyLCByMTAsIHI3LCBMU0wgIzQNCisJICAgTVVMICAgICAgICAgIHI5LCByMTQsIHI4DQorCSAgIE1PViAgICAgICAgICByMTAsIHIxMiwgTFNMICMzDQorCSAgIFFEQUREICAgICAgICByMTAsIHIxMCwgcjkNCisgICAgICAgICAgIExEUlNIICAgICAgICByNiwgW3IwXSwgIzIgICAgICAgICAgICAgQGxvYWQgeF9oaVtdDQorCSAgIE1PViAgICAgICAgICByMTIsIHIxMCwgTFNMICMxDQorCSAgIFFBREQgICAgICAgICByMTAsIHIxMiwgcjExDQorCSAgIExEUlNIICAgICAgICByNywgW3IxXSwgIzINCisJICAgTU9WICAgICAgICAgIHIxNCwgcjEwLCBBU1IgIzE2DQorDQorCSAgIE1PViAgICAgICAgICByMTAsIHI2LCBMU0wgIzE2DQorCSAgIEFERCAgICAgICAgICByMTIsIHIxMCwgcjcsIExTTCAjNA0KKwkgICBTVFJIICAgICAgICAgcjE0LCBbcjJdLCAjMg0KKwkgICBNVUwgICAgICAgICAgcjksIHIxNCwgcjgNCisJICAgTU9WICAgICAgICAgIHIxMCwgcjEyLCBMU0wgIzMNCisJICAgUURBREQgICAgICAgIHIxMCwgcjEwLCByOQ0KKyAgICAgICAgICAgQUREICAgICAgICAgIHI0LCByNCwgIzINCisJICAgTU9WICAgICAgICAgIHIxMiwgcjEwLCBMU0wgIzENCisJICAgUUFERCAgICAgICAgIHIxMCwgcjEyLCByMTENCisgICAgICAgICAgIENNUCAgICAgICAgICByNCwgIzY0DQorCSAgIE1PViAgICAgICAgICByMTQsIHIxMCwgQVNSICMxNg0KKw0KKyAgICAgICAgICAgQkxUICAgICAgICAgIExPT1ANCisgICAgICAgICAgIFNUUiAgICAgICAgICByMTQsIFtyM10NCisgICAgICAgICAgIFNUUkggICAgICAgICByMTQsIFtyMl0JICAgDQorDQorICAgICAgICAgICBMRE1GRCAgIAlyMTMhLCB7cjQgLSByMTIsIHIxNX0gDQorDQorCSAgIEBFTkRQDQorCSAgIC5FTkQNCisNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNUUvRG90X3Bfb3B0LnMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNUUvRG90X3Bfb3B0LnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDM4MzI2OQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYXNtL0FSTVY1RS9Eb3RfcF9vcHQucwpAQCAtMCwwICsxLDgwIEBACitALyoNCitAICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorQCAqKg0KK0AgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorQCAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorQCAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCitAICoqDQorQCAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorQCAqKg0KK0AgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KK0AgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCitAICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KK0AgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KK0AgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorQCAqLw0KK0ANCitAV29yZDMyIERvdF9wcm9kdWN0MTIoICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSBRMzE6IG5vcm1hbGl6ZWQgcmVzdWx0ICgxIDwgdmFsIDw9IC0xKSAqLw0KK0AgICAgICAgV29yZDE2IHhbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgMTJiaXRzOiB4IHZlY3RvciAgICAgICAgICAgICAgICAgICAgICAgKi8NCitAICAgICAgIFdvcmQxNiB5W10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIDEyYml0czogeSB2ZWN0b3IgICAgICAgICAgICAgICAgICAgICAgICovDQorQCAgICAgICBXb3JkMTYgbGcsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICA6IHZlY3RvciBsZW5ndGggICAgICAgICAgICAgICAgICAgICAqLw0KK0AgICAgICAgV29yZDE2ICogZXhwICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgICAgOiBleHBvbmVudCBvZiByZXN1bHQgKDAuLiszMCkgICAgICAgKi8NCitAKQ0KK0AqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorQCAgeFtdICAgLS0tICByMA0KK0AgIHlbXSAgIC0tLSAgcjENCitAICBsZyAgICAtLS0gIHIyDQorQCAgKmV4cCAgLS0tICByMw0KKw0KKyAgICAgICAgICAuc2VjdGlvbiAgLnRleHQNCisgCSAgLmdsb2JhbCAgIERvdF9wcm9kdWN0MTJfYXNtDQorDQorRG90X3Byb2R1Y3QxMl9hc206DQorDQorICAgICAgICAgIFNUTUZEICAgCSAgICByMTMhLCB7cjQgLSByMTIsIHIxNH0gDQorICAgICAgICAgIE1PViAgICAgICAgICAgICAgIHI0LCAjMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAgTF9zdW0gPSAwDQorICAgICAgICAgIE1PViAgICAgICAgICAgICAgIHI1LCAjMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAgaSA9IDANCisNCitMT09QOg0KKyAgICAgICAgICBMRFIgICAgICAgICAgIHI2LCBbcjBdLCAjNA0KKyAgICAgICAgICBMRFIgICAgICAgICAgIHI3LCBbcjFdLCAjNA0KKyAgICAgICAgICBMRFIgICAgICAgICAgIHI4LCBbcjBdLCAjNA0KKyAgICAgICAgICBTTUxBQkIgICAgICAgIHI0LCByNiwgcjcsIHI0DQorICAgICAgICAgIExEUiAgICAgICAgICAgcjksIFtyMV0sICM0DQorCSAgU01MQVRUICAgICAgICByNCwgcjYsIHI3LCByNCANCisNCisJICBMRFIgICAgICAgICAgIHI2LCBbcjBdLCAjNA0KKwkgIFNNTEFCQiAgICAgICAgcjQsIHI4LCByOSwgcjQNCisNCisJICBMRFIgICAgICAgICAgIHI3LCBbcjFdLCAjNA0KKwkgIFNNTEFUVCAgICAgICAgcjQsIHI4LCByOSwgcjQJICANCisJICBMRFIgICAgICAgICAgIHI4LCBbcjBdLCAjNA0KKw0KKwkgIFNNTEFCQiAgICAgICAgcjQsIHI2LCByNywgcjQNCisJICBMRFIgICAgICAgICAgIHI5LCBbcjFdLCAjNA0KKwkgIFNNTEFUVCAgICAgICAgcjQsIHI2LCByNywgcjQNCisJICBBREQgICAgICAgICAgIHI1LCByNSwgIzgNCisJICBTTUxBQkIgICAgICAgIHI0LCByOCwgcjksIHI0DQorCSAgQ01QICAgICAgICAgICByNSwgcjINCisJICBTTUxBVFQgICAgICAgIHI0LCByOCwgcjksIHI0DQorCSAgQkxUICAgICAgICAgICBMT09QDQorICAgICAgICAgICAgICANCisgICAgICAgICAgTU9WICAgICAgICAgICByMTIsIHI0LCBMU0wgIzENCisgICAgICAgICAgQUREICAgICAgICAgICByMTIsIHIxMiwgIzEgICAgICAgICAgICAgICAgICAgICAgICAgQCBMX3N1bSA9IChMX3N1bSA8PCAxKSAgKyAxDQorCSAgTU9WICAgICAgICAgICByNCwgcjEyDQorDQorICAgICAgICAgIENNUCAgICAgICAgICAgcjEyLCAjMA0KKwkgIFJTQkxUICAgICAgICAgcjQsIHIxMiwgIzANCisgICAgICAgICAgQ0xaICAgICAgICAgICByMTAsIHI0DQorICAgICAgICAgIFNVQiAgICAgICAgICAgcjEwLCByMTAsICMxICAgICAgICAgICAgICAgICAgICAgICAgIEAgc2Z0ID0gbm9ybV9sKExfc3VtKQ0KKyAgICAgICAgICBNT1YgICAgICAgICAgIHIwLCByMTIsIExTTCByMTAgICAgICAgICAgICAgICAgICAgICBAIExfc3VtID0gTF9zdW0gPDwgc2Z0DQorICAgICAgICAgIFJTQiAgICAgICAgICAgcjExLCByMTAsICMzMCAgICAgICAgICAgICAgICAgICAgICAgIEAgKmV4cCA9IDMwIC0gc2Z0DQorICAgICAgICAgIFNUUkggICAgICAgICAgcjExLCBbcjNdICAgICAgICAgICAgICAgICAgICAgDQorDQorRG90X3Byb2R1Y3QxMl9lbmQ6DQorCQkgICAgIA0KKyAgICAgICAgICBMRE1GRCAgIAkgICAgcjEzISwge3I0IC0gcjEyLCByMTV9IA0KKyAgICAgICAgICBARU5ERlVOQw0KKyAgICAgICAgICAuRU5EDQorIA0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYXNtL0FSTVY1RS9GaWx0XzZrXzdrX29wdC5zIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9hc20vQVJNVjVFL0ZpbHRfNmtfN2tfb3B0LnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTZlYmQ3MwotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYXNtL0FSTVY1RS9GaWx0XzZrXzdrX29wdC5zCkBAIC0wLDAgKzEsMTg1IEBACitALyoNCitAICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorQCAqKg0KK0AgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorQCAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorQCAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCitAICoqDQorQCAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorQCAqKg0KK0AgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KK0AgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCitAICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KK0AgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KK0AgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorQCAqLw0KKw0KK0AqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK0B2b2lkIEZpbHRfNmtfN2soDQorQCAgICAgV29yZDE2IHNpZ25hbFtdLCAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dDogIHNpZ25hbCAgICAgICAgICAgICAgICAgICovDQorQCAgICAgV29yZDE2IGxnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dDogIGxlbmd0aCBvZiBpbnB1dCAgICAgICAgICovDQorQCAgICAgV29yZDE2IG1lbVtdICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbi9vdXQ6IG1lbW9yeSAoc2l6ZT0zMCkgICAgICAgICovDQorQCkNCitAKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorQCByMCAgICAtLS0gIHNpZ25hbFtdDQorQCByMSAgICAtLS0gIGxnDQorQCByMiAgICAtLS0gIG1lbVtdIA0KKw0KKyAgICAgICAgICAuc2VjdGlvbiAgLnRleHQNCisgICAgICAgICAgLmdsb2JhbCAgRmlsdF82a183a19hc20NCisgICAgICAgICAgLmV4dGVybiAgdm9BV0JfQ29weQ0KKyAgICAgICAgICAuZXh0ZXJuICBmaXJfNmtfN2sNCisNCitGaWx0XzZrXzdrX2FzbToNCisNCisgICAgICAgICAgU1RNRkQgICAJCXIxMyEsIHtyNCAtIHIxMiwgcjE0fSANCisgICAgICAgICAgU1VCICAgIAkJcjEzLCByMTMsICMyNDAgICAgICAgICAgICAgIEAgeFtMX1NVQkZSMTZrICsgKExfRklSIC0gMSldDQorICAgICAgICAgIE1PViAgICAgCQlyOCwgcjAgICAgICAgICAgICAgICAgICAgICAgQCBjb3B5IHNpZ25hbFtdIGFkZHJlc3MNCisgICAgICAgICAgTU9WICAgICAJCXI0LCByMSAgICAgICAgICAgICAgICAgICAgICBAIGNvcHkgbGcgYWRkcmVzcw0KKyAgICAgICAgICBNT1YgICAgIAkJcjUsIHIyICAgICAgICAgICAgICAgICAgICAgIEAgY29weSBtZW1bXSBhZGRyZXNzDQorDQorICAgICAgICAgIE1PViAgICAgCQlyMSwgcjEzDQorICAgICAgICAgIE1PViAgICAgCQlyMCwgcjINCisgICAgICAgICAgTU9WICAgICAJCXIyLCAjMzAgICAgICAgICAgICAgICAgICAgICBAIExfRklSIC0gMQ0KKyAgICAgICAgICBCTCAgICAgIAkJdm9BV0JfQ29weSAgICAgICAgICAgICAgICAgICBAIG1lbWNweSh4LCBtZW0sIChMX0ZJUiAtIDEpPDwxKQ0KKw0KKyAgICAgICAgICBMRFIgICAgIAkJcjEwLCBMYWJsZTEgICAgICAgICAgICAgICAgIEAgZ2V0IGZpcl83ayBhZGRyZXNzICAgICANCisNCisgICAgICAgICAgTU9WICAgICAgICAgICAJcjE0LCAjMCAgDQorICAgICAgICAgIE1PViAgICAgICAgICAgICAgICAgICByMywgcjggICAgICAgICAgICAgICAgICAgICAgQCBjaGFuZ2UgbXlNZW1Db3B5IHRvIENvcHksIGR1ZSB0byBDb3B5IHdpbGwgY2hhbmdlIHIzIGNvbnRlbnQNCisgICAgICAgICAgQUREICAgICAJICAgIAlyNiwgcjEzLCAjNjAgICAgICAgICAgICAgICAgQCBnZXQgeFtMX0ZJUiAtIDFdIGFkZHJlc3MNCisgICAgICAgICAgTU9WICAgICAgICAgICAJcjcsIHIzICAgICAgICAgICAgICAgICAgICAgIEAgZ2V0IHNpZ25hbFtpXQ0KK0xPT1AxOg0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIAlyOCwgIFtyN10sICMyDQorICAgICAgICAgIExEUlNIICAgICAgICAgCXI5LCAgW3I3XSwgIzINCisgICAgICAgICAgTU9WICAgICAgICAgICAJcjgsIHI4LCBBU1IgIzINCisgICAgICAgICAgTU9WICAgICAgICAgICAJcjksIHI5LCBBU1IgIzINCisgICAgICAgICAgTERSU0ggICAgICAgICAJcjExLCBbcjddLCAjMg0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIAlyMTIsIFtyN10sICMyDQorICAgICAgICAgIE1PViAgICAgICAgICAgCXIxMSwgcjExLCBBU1IgIzINCisgICAgICAgICAgTU9WICAgICAgICAgICAJcjEyLCByMTIsIEFTUiAjMg0KKyAgICAgICAgICBTVFJIICAgICAgICAgIAlyOCwgW3I2XSwgIzINCisgICAgICAgICAgU1RSSCAgICAgICAgICAJcjksIFtyNl0sICMyDQorICAgICAgICAgIFNUUkggICAgICAgICAgCXIxMSwgW3I2XSwgIzINCisgICAgICAgICAgU1RSSCAgICAgICAgICAJcjEyLCBbcjZdLCAjMg0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIAlyOCwgIFtyN10sICMyDQorICAgICAgICAgIExEUlNIICAgICAgICAgCXI5LCAgW3I3XSwgIzINCisgICAgICAgICAgTU9WICAgICAgICAgICAJcjgsIHI4LCBBU1IgIzINCisgICAgICAgICAgTU9WICAgICAgICAgICAJcjksIHI5LCBBU1IgIzINCisgICAgICAgICAgTERSU0ggICAgICAgICAJcjExLCBbcjddLCAjMg0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIAlyMTIsIFtyN10sICMyDQorICAgICAgICAgIE1PViAgICAgICAgICAgCXIxMSwgcjExLCBBU1IgIzINCisgICAgICAgICAgTU9WICAgICAgICAgICAJcjEyLCByMTIsIEFTUiAjMg0KKyAgICAgICAgICBTVFJIICAgICAgICAgIAlyOCwgW3I2XSwgIzINCisgICAgICAgICAgU1RSSCAgICAgICAgICAJcjksIFtyNl0sICMyDQorICAgICAgICAgIFNUUkggICAgICAgICAgCXIxMSwgW3I2XSwgIzINCisgICAgICAgICAgU1RSSCAgICAgICAgICAJcjEyLCBbcjZdLCAjMg0KKyAgICAgICAgICBBREQgICAgICAgICAgIAlyMTQsIHIxNCwgIzgNCisgICAgICAgICAgQ01QICAgICAgICAgICAJcjE0LCAjODANCisgICAgICAgICAgQkxUICAgICAgICAgICAJTE9PUDEgICAgICAgICAgDQorDQorDQorICAgICAgICAgIFNUUiAgICAgCQlyNSwgW3NwLCAjLTRdICAgICAgICAgICAgICAgQCBQVVNIICByNSB0byBzdGFjaw0KKw0KKyAgICAgICAgICBAIG5vdCB1c2UgcmVnaXN0ZXJzOiByNCwgcjEwLCByMTIsIHIxNCwgcjUNCisgICAgICAgICAgTU9WICAgICAJCXI0LCByMTMgDQorICAgICAgICAgIE1PViAgICAgCQlyNSwgIzAgICAgICAgICAgICAgICAgICAgICAgQCBpID0gMCAgICAgICAgICAgICAgDQorTE9PUDI6DQorICAgICAgICAgIExEUiAgICAgICAgICAgCXIwLCBbcjEwXQ0KKw0KKyAgICAgICAgICBMRFJTSCAgCSAgICAgICAgcjEsIFtyNF0gICAgICAgICAgICAgICAgICAgQCBsb2FkIHhbaV0NCisgICAgICAgICAgTERSU0ggICAJICAgICAgICByMiwgW3I0LCAjNjBdICAgICAgICAgICAgICBAIGxvYWQgeFtpICsgMzBdDQorICAgICAgICAgIExEUlNIICAgICAgICAgICAgICAgICByNiwgW3I0LCAjMl0gICAgICAgICAgICAgICBAIGxvYWQgeFtpICsgMV0NCisgICAgICAgICAgTERSU0ggICAgICAgICAgICAgICAgIHI3LCBbcjQsICM1OF0gICAgICAgICAgICAgIEAgbG9hZCB4W2kgKyAyOV0NCisgICAgICAgICAgQUREICAgICAgICAgICAgICAgICAgIHIxLCByMSwgcjIgICAgICAgICAgICAgICAgIEAgeFtpXSArIHhbaSArIDMwXQ0KKyAgICAgICAgICBBREQgICAgICAgICAgICAgICAgICAgcjYsIHI2LCByNyAgICAgICAgICAgICAgICAgQCB4W2kgKyAxXSArIHhbaSArIDI5XQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgICAgICAgICAgcjgsIFtyNCwgIzRdICAgICAgICAgICAgICAgQCBsb2FkIHhbaSArIDJdDQorICAgICAgICAgIExEUlNIICAgICAgICAgICAgICAgICByOSwgW3I0LCAjNTZdICAgICAgICAgICAgICBAIGxvYWQgeFtpICsgMjhdDQorDQorICAgICAgICAgIFNNVUxCQiAgICAgICAgICAgICAgICByMTQsIHIxLCByMCAgICAgICAgICAgICAgICBAICh4W2ldICsgeFtpICsgMzBdKSAqIGZpcl83a1swXQ0KKyAgICAgICAgICBBREQgICAgICAgICAgICAgICAgICAgcjgsIHI4LCByOSAgICAgICAgICAgICAgICAgQCB4W2kgKyAyXSArIHhbaSArIDI4XQ0KKyAgICAgICAgICBTTUxBQlQgICAgICAgICAgICAgICAgcjE0LCByNiwgcjAsIHIxNCAgICAgICAgICAgQCAoeFtpICsgMV0gKyB4W2kgKyAyOV0pICogZmlyXzdrWzFdDQorDQorICAgICAgICAgIExEUiAgICAgICAgICAgICAgICAgICByMCwgW3IxMCwgIzRdDQorICAgICAgICAgIExEUlNIICAgICAgICAgICAgICAgICByMSwgW3I0LCAjNl0gICAgICAgICAgICAgICBAIGxvYWQgeFtpKzNdDQorICAgICAgICAgIExEUlNIICAgICAgICAgICAgICAgICByMiwgW3I0LCAjNTRdICAgICAgICAgICAgICBAIGxvYWQgeFtpKzI3XQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgICAgICAgICAgcjYsIFtyNCwgIzhdICAgICAgICAgICAgICAgQCBsb2FkIHhbaSs0XQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgICAgICAgICAgcjcsIFtyNCwgIzUyXSAgICAgICAgICAgICAgQCBsb2FkIHhbaSsyNl0NCisgICAgICAgICAgQUREICAgICAgICAgICAgICAgICAgIHIxLCByMSwgcjIgICAgICAgICAgICAgICAgIEAgeFtpKzNdICsgeFtpKzI3XQ0KKyAgICAgICAgICBBREQgICAgICAgICAgICAgICAgICAgcjYsIHI2LCByNyAgICAgICAgICAgICAgICAgQCB4W2krNF0gKyB4W2krMjZdDQorICAgICAgICAgIFNNTEFCQiAgICAgICAgICAgICAgICByMTQsIHI4LCByMCwgcjE0ICAgICAgICAgICBAICh4W2kgKyAyXSArIHhbaSArIDI4XSkgKiBmaXJfN2tbMl0NCisgICAgICAgICAgTERSU0ggICAgICAgICAgICAgICAgIHI4LCBbcjQsICMxMF0gICAgICAgICAgICAgIEAgbG9hZCB4W2krNV0NCisgICAgICAgICAgTERSU0ggICAgICAgICAgICAgICAgIHI5LCBbcjQsICM1MF0gICAgICAgICAgICAgIEAgbG9hZCB4W2krMjVdDQorICAgICAgICAgIFNNTEFCVCAgICAgICAgICAgICAgICByMTQsIHIxLCByMCwgcjE0ICAgICAgICAgICBAICh4W2krM10gKyB4W2krMjddKSAqIGZpcl83a1szXQ0KKyAgICAgICAgICBBREQgICAgICAgICAgICAgICAgICAgcjgsIHI4LCByOSAgICAgICAgICAgICAgICAgQCB4W2krNV0gKyB4W2krMjVdIA0KKyANCisgICAgICAgICAgTERSICAgICAgICAgICAgICAgICAgIHIwLCBbcjEwLCAjOF0NCisgICAgICAgICAgTERSU0ggICAgICAgICAgICAgICAgIHIxLCBbcjQsICMxMl0gICAgICAgICAgICAgIEAgeFtpKzZdDQorICAgICAgICAgIExEUlNIICAgICAgICAgICAgICAgICByMiwgW3I0LCAjNDhdICAgICAgICAgICAgICBAIHhbaSsyNF0NCisgICAgICAgICAgU01MQUJCICAgICAgICAgICAgICAgIHIxNCwgcjYsIHIwLCByMTQgICAgICAgICAgIEAgKHhbaSs0XSArIHhbaSsyNl0pICogZmlyXzdrWzRdDQorICAgICAgICAgIExEUlNIICAgICAgICAgICAgICAgICByNiwgW3I0LCAjMTRdICAgICAgICAgICAgICBAIHhbaSs3XSANCisgICAgICAgICAgTERSU0ggICAgICAgICAgICAgICAgIHI3LCBbcjQsICM0Nl0gICAgICAgICAgICAgIEAgeFtpKzIzXQ0KKyAgICAgICAgICBTTUxBQlQgICAgICAgICAgICAgICAgcjE0LCByOCwgcjAsIHIxNCAgICAgICAgICAgQCAoeFtpKzVdICsgeFtpKzI1XSkgKiBmaXJfN2tbNV0NCisgICAgICAgICAgTERSICAgICAgICAgICAgICAgICAgIHIwLCBbcjEwLCAjMTJdDQorICAgICAgICAgIEFERCAgICAgICAgICAgICAgICAgICByMSwgcjEsIHIyICAgICAgICAgICAgICAgICBAICh4W2krNl0gKyB4W2krMjRdKQ0KKyAgICAgICAgICBBREQgICAgICAgICAgICAgICAgICAgcjYsIHI2LCByNyAgICAgICAgICAgICAgICAgQCAoeFtpKzddICsgeFtpKzIzXSkNCisgICAgICAgICAgU01MQUJCICAgICAgICAgICAgICAgIHIxNCwgcjEsIHIwLCByMTQgICAgICAgICAgIEAgKHhbaSs2XSArIHhbaSsyNF0pICogZmlyXzdrWzZdDQorICAgICAgICAgIExEUlNIICAgICAgICAgICAgICAgICByOCwgW3I0LCAjMTZdICAgICAgICAgICAgICBAIHhbaSs4XQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgICAgICAgICAgcjksIFtyNCwgIzQ0XSAgICAgICAgICAgICAgQCB4W2krMjJdIA0KKyAgICAgICAgICBTTUxBQlQgICAgICAgICAgICAgICAgcjE0LCByNiwgcjAsIHIxNCAgICAgICAgICAgQCAoeFtpKzddICsgeFtpKzIzXSkgKiBmaXJfN2tbN10gIA0KKyAgICAgICAgICBMRFIgICAgICAgICAgICAgICAgICAgcjAsIFtyMTAsICMxNl0NCisgICAgICAgICAgTERSU0ggICAgICAgICAgICAgICAgIHIxLCBbcjQsICMxOF0gICAgICAgICAgICAgIEAgeFtpKzldDQorICAgICAgICAgIExEUlNIICAgICAgICAgICAgICAgICByMiwgW3I0LCAjNDJdICAgICAgICAgICAgICBAIHhbaSsyMV0NCisgICAgICAgICAgTERSU0ggICAgICAgICAgICAgICAgIHI2LCBbcjQsICMyMF0gICAgICAgICAgICAgIEAgeFtpKzEwXQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgICAgICAgICAgcjcsIFtyNCwgIzQwXSAgICAgICAgICAgICAgQCB4W2krMjBdDQorICAgICAgICAgIEFERCAgICAgICAgICAgICAgICAgICByOCwgcjgsIHI5ICAgICAgICAgICAgICAgICBAICh4W2krOF0gKyB4W2krMjJdKQ0KKyAgICAgICAgICBBREQgICAgICAgICAgICAgICAgICAgcjEsIHIxLCByMiAgICAgICAgICAgICAgICAgQCAoeFtpKzldICsgeFtpKzIxXSkNCisgICAgICAgICAgQUREICAgICAgICAgICAgICAgICAgIHI2LCByNiwgcjcgICAgICAgICAgICAgICAgIEAgKHhbaSsxMF0gKyB4W2krMjBdKQ0KKyAgICAgICAgICBTTUxBQkIgICAgICAgICAgICAgICAgcjE0LCByOCwgcjAsIHIxNCAgICAgICAgICAgQCAoeFtpKzhdICsgeFtpKzIyXSkgKiBmaXJfN2tbOF0NCisgICAgICAgICAgTERSU0ggICAgICAgICAgICAgICAgIHI4LCBbcjQsICMyMl0gICAgICAgICAgICAgIEAgeFtpKzExXQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgICAgICAgICAgcjksIFtyNCwgIzM4XSAgICAgICAgICAgICAgQCB4W2krMTldDQorICAgICAgICAgIFNNTEFCVCAgICAgICAgICAgICAgICByMTQsIHIxLCByMCwgcjE0ICAgICAgICAgICBAICh4W2krOV0gKyB4W2krMjFdKSAqIGZpcl83a1s5XQ0KKyAgICAgICAgICBMRFIgICAgICAgICAgICAgICAgICAgcjAsIFtyMTAsICMyMF0NCisgICAgICAgICAgTERSU0ggICAgICAgICAgICAgICAgIHIxLCBbcjQsICMyNF0gICAgICAgICAgICAgIEAgeFtpKzEyXQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgICAgICAgICAgcjIsIFtyNCwgIzM2XSAgICAgICAgICAgICAgQCB4W2krMThdDQorICAgICAgICAgIFNNTEFCQiAgICAgICAgICAgICAgICByMTQsIHI2LCByMCwgcjE0ICAgICAgICAgICBAICh4W2krMTBdICsgeFtpKzIwXSkgKiBmaXJfN2tbMTBdDQorICAgICAgICAgIExEUlNIICAgICAgICAgICAgICAgICByNiwgW3I0LCAjMjZdICAgICAgICAgICAgICBAIHhbaSsxM10NCisgICAgICAgICAgQUREICAgICAgICAgICAgICAgICAgIHI4LCByOCwgcjkgICAgICAgICAgICAgICAgIEAgKHhbaSsxMV0gKyB4W2krMTldKSAgDQorICAgICAgICAgIExEUlNIICAgICAgICAgICAgICAgICByNywgW3I0LCAjMzRdICAgICAgICAgICAgICBAIHhbaSsxN10NCisgICAgICAgICAgU01MQUJUICAgICAgICAgICAgICAgIHIxNCwgcjgsIHIwLCByMTQgICAgICAgICAgIEAgKHhbaSsxMV0gKyB4W2krMTldKSAqIGZpcl83a1sxMV0NCisgICAgICAgICAgTERSICAgICAgICAgICAgICAgICAgIHIwLCBbcjEwLCAjMjRdDQorICAgICAgICAgIEFERCAgICAgICAgICAgICAgICAgICByMSwgcjEsIHIyICAgICAgICAgICAgICAgICBAIHhbaSsxMl0gKyB4W2krMThdDQorICAgICAgICAgIExEUlNIICAgICAgICAgICAgICAgICByOCwgW3I0LCAjMjhdICAgICAgICAgICAgICBAIHhbaSsxNF0NCisgICAgICAgICAgU01MQUJCICAgICAgICAgICAgICAgIHIxNCwgcjEsIHIwLCByMTQgICAgICAgICAgIEAgKHhbaSsxMl0gKyB4W2krMThdKSAqIGZpcl83a1sxMl0NCisgICAgICAgICAgQUREICAgICAgICAgICAgICAgICAgIHI2LCByNiwgcjcgICAgICAgICAgICAgICAgIEAgKHhbaSsxM10gKyB4W2krMTddKQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgICAgICAgICAgcjksIFtyNCwgIzMyXSAgICAgICAgICAgICAgQCB4W2krMTZdIA0KKyAgICAgICAgICBTTUxBQlQgICAgICAgICAgICAgICAgcjE0LCByNiwgcjAsIHIxNCAgICAgICAgICAgQCAoeFtpKzEzXSArIHhbaSsxN10pICogZmlyXzdrWzEzXQ0KKyAgICAgICAgICBMRFIgICAgICAgICAgICAgICAgICAgcjAsIFtyMTAsICMyOF0gICAgICAgICANCisgICAgICAgICAgQUREICAgICAgICAgICAgICAgICAgIHI4LCByOCwgcjkgICAgICAgICAgICAgICAgIEAgKHhbaSsxNF0gKyB4W2krMTZdKQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgICAgICAgICAgcjEsIFtyNCwgIzMwXSAgICAgICAgICAgICAgQCB4W2krMTVdDQorICAgICAgICAgIFNNTEFCQiAgICAgICAgICAgICAgICByMTQsIHI4LCByMCwgcjE0ICAgICAgICAgICBAICh4W2krMTRdICsgeFtpKzE2XSkgKiBmaXJfN2tbMTRdDQorICAgICAgICAgIFNNTEFCVCAgICAgICAgICAgICAgICByMTQsIHIxLCByMCwgcjE0ICAgICAgICAgICBAIHhbaSsxNV0gKiBmaXJfN2tbMTVdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorDQorICAgICAgICAgIEFERCAgICAgCQlyNSwgcjUsICMxDQorICAgICAgICAgIEFERCAgICAgCQlyMTQsIHIxNCwgIzB4NDAwMA0KKyAgICAgICAgICBBREQgICAgIAkJcjQsIHI0LCAjMiAgICAgICAgICAgICAgICANCisgICAgICAgICAgTU9WICAgICAJCXIxLCByMTQsIEFTUiAjMTUNCisgICAgICAgICAgQ01QICAgICAJCXI1LCAjODANCisgICAgICAgICAgU1RSSCAgICAJCXIxLCBbcjNdLCAjMiAgICAgICAgICAgICAgIEBzaWduYWxbaV0gPSAoTF90bXAgKyAweDQwMDApID4+IDE1DQorICAgICAgICAgIEJMVCAgICAgCQlMT09QMiAgICAgIA0KKyAgICAgICAgICAgDQorICAgICAgICAgIExEUiAgICAgCQlyMSwgW3NwLCAjLTRdICAgICAgICAgICAgICAgQG1lbSBhZGRyZXNzDQorICAgICAgICAgIEFERCAgICAgCQlyMCwgcjEzLCAjMTYwICAgICAgICAgICAgICAgQHggKyBsZw0KKyAgICAgICAgICBNT1YgICAgIAkJcjIsICMzMA0KKyAgICAgICAgICBCTCAgICAgIAkJdm9BV0JfQ29weQ0KKyAgICAgICAgICAgICAgICAgICAgDQorRmlsdF82a183a19lbmQ6DQorICAgICAgICAgIEFERCAgICAgCQlyMTMsIHIxMywgIzI0MCAgDQorICAgICAgICAgIExETUZEICAgCQlyMTMhLCB7cjQgLSByMTIsIHIxNX0gDQorIA0KK0xhYmxlMToNCisgICAgICAgICAgLndvcmQgICAJCWZpcl82a183aw0KKyAgICAgICAgICBARU5ERlVOQw0KKyAgICAgICAgICAuRU5EDQorDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9hc20vQVJNVjVFL05vcm1fQ29ycl9vcHQucyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYXNtL0FSTVY1RS9Ob3JtX0NvcnJfb3B0LnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQ0MGEzMQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYXNtL0FSTVY1RS9Ob3JtX0NvcnJfb3B0LnMKQEAgLTAsMCArMSwyMzEgQEAKK0AvKgorQCAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLgorQCAqKgorQCAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKK0AgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorQCAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKK0AgKioKK0AgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorQCAqKgorQCAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCitAICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitAICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorQCAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCitAICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorQCAqLworCitAc3RhdGljIHZvaWQgTm9ybV9Db3JyIChXb3JkMTYgZXhjW10sICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogZXhjaXRhdGlvbiBidWZmZXIgICAgICAgICAgKi8KK0AgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiB4bltdLCAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiB0YXJnZXQgdmVjdG9yICAgICAgICAgICAgICAqLworQCAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IGhbXSwgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFExNSA6IGltcHVsc2UgcmVzcG9uc2Ugb2Ygc3ludGgvd2d0IGZpbHRlcnMgKi8KK0AgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiBMX3N1YmZyLCAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBzdWItZnJhbWUgbGVuZ3RoICovCitAICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgdF9taW4sICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogbWluaW11bSB2YWx1ZSBvZiBwaXRjaCBsYWcuICAgKi8KK0AgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiB0X21heCwgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBtYXhpbXVtIHZhbHVlIG9mIHBpdGNoIGxhZy4gICAqLworQCAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IGNvcnJfbm9ybVtdKSAgICAgICAgICAgICAgLyogKG8pIFExNSA6IG5vcm1hbGl6ZWQgY29ycmVsYXRpb24gICAgKi8KK0AKKworQCByMCAtLS0gZXhjW10KK0AgcjEgLS0tIHhuW10KK0AgcjIgLS0tIGhbXQorQCByMyAtLS0gTF9zdWJmcgorQCByNCAtLS0gdF9taW4KK0AgcjUgLS0tIHRfbWF4CitAIHI2IC0tLSBjb3JyX25vcm1bXQorCisKKwkuc2VjdGlvbiAgLnRleHQgCisgICAgICAgIC5nbG9iYWwgICBOb3JtX2NvcnJfYXNtIAorICAgICAgICAuZXh0ZXJuICAgQ29udm9sdmVfYXNtCisgICAgICAgIC5leHRlcm4gICBJc3FydF9uCitAKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCitAIGNvbnN0YW50CitAKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisuZXF1ICAgICAgICAgRVhDICAgICAgICAgICAsICAgMAorLmVxdSAgICAgICAgIFhOICAgICAgICAgICAgLCAgIDQKKy5lcXUgICAgICAgICBIICAgICAgICAgICAgICwgICA4CisuZXF1ICAgICAgICAgTF9TVUJGUiAgICAgICAsICAgMTIKKy5lcXUgICAgICAgICB2b1NUQUNLICAgICAgICwgICAxNzIKKy5lcXUgICAgICAgICBUX01JTiAgICAgICAgICwgICAyMTIKKy5lcXUgICAgICAgICBUX01BWCAgICAgICAgICwgICAyMTYKKy5lcXUgICAgICAgICBDT1JSX05PUk0gICAgICwgICAyMjAKKyAgICAgICAgICAgICAgICAgIAorTm9ybV9jb3JyX2FzbToKKworICAgICAgICBTVE1GRCAgICAgIHIxMyEsIHtyNCAtIHIxMiwgcjE0fSAgCisgICAgICAgIFNVQiAgICAgICAgcjEzLCByMTMsICN2b1NUQUNLCisgIAorICAgICAgICBBREQgICAgICAgIHI4LCByMTMsICMyMCAgICAgICAgICAgICAgICAgQGdldCB0aGUgZXhjZltMX1NVQkZSXQorICAgICAgICBMRFIgICAgICAgIHI0LCBbcjEzLCAjVF9NSU5dICAgICAgICAgICAgQGdldCB0X21pbgorICAgICAgICBSU0IgICAgICAgIHIxMSwgcjQsICMwICAgICAgICAgICAgICAgICAgQGsgPSAtdF9taW4KKyAgICAgICAgQUREICAgICAgICByNSwgcjAsIHIxMSwgTFNMICMxICAgICAgICAgIEBnZXQgdGhlICZleGNba10gICAKKyAgICAgICAgCisgICAgICAgIEB0cmFuc2ZlciBDb252b2x2ZSBmdW5jdGlvbgorICAgICAgICBTVE1GRCAgICAgICBzcCEsIHtyMCAtIHIzfQorICAgICAgICBNT1YgICAgICAgICByMCwgcjUKKyAgICAgICAgTU9WICAgICAgICAgcjEsIHIyCisgICAgICAgIE1PViAgICAgICAgIHIyLCByOCAgICAgICAgICAgICAgICAgICAgICAgQHIyIC0tLSBleGNmW10KKyAgICAgICAgQkwgICAgICAgICAgQ29udm9sdmVfYXNtCisgICAgICAgIExETUZEICAgICAgIHNwISwge3IwIC0gcjN9CisKKyAgICAgICAgQCByOCAtLS0gZXhjZltdCisKKwlNT1YgICAgICAgICByMTQsIHIxICAgICAgICAgICAgICAgICAgICAgICBAY29weSB4bltdIGFkZHJlc3MgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIE1PViAgICAgICAgIHI1LCAjNjQKKyAgICAgICAgTU9WICAgICAgICAgcjYsICMwICAgICAgICAgICAgICAgICAgICAgICBATF90bXAgPSAwCisgICAgICAgIE1PViAgICAgICAgIHI3LCAjMQorCitMT09QMToKKyAgICAgICAgTERSICAgICAgICAgcjksICBbcjE0XSwgIzQKKwlMRFIgICAgICAgICByMTAsIFtyMTRdLCAjNAorCUxEUiAgICAgICAgIHIxMSwgW3IxNF0sICM0CisJTERSICAgICAgICAgcjEyLCBbcjE0XSwgIzQKKwlTTUxBQkIgICAgICByNiwgcjksIHI5LCByNiAgICAgICAgICAgICAgIEBMX3RtcCArPSAoeG5baV0gKiB4bltpXSkKKwlTTUxBVFQgICAgICByNiwgcjksIHI5LCByNiAgICAgICAgICAgICAgIEBMX3RtcCArPSAoeG5baSsxXSAqIHhuW2krMV0pCisgICAgICAgIFNNTEFCQiAgICAgIHI2LCByMTAsIHIxMCwgcjYKKwlTTUxBVFQgICAgICByNiwgcjEwLCByMTAsIHI2CisJU01MQUJCICAgICAgcjYsIHIxMSwgcjExLCByNgorICAgICAgICBTTUxBVFQgICAgICByNiwgcjExLCByMTEsIHI2CisgICAgICAgIFNNTEFCQiAgICAgIHI2LCByMTIsIHIxMiwgcjYKKyAgICAgICAgU01MQVRUICAgICAgcjYsIHIxMiwgcjEyLCByNgorICAgICAgICBTVUJTICAgICAgICByNSwgcjUsICM4CisgICAgICAgIEJORSAgICAgICAgIExPT1AxCisKKwlBREQgICAgICAgICByOSwgcjcsIHI2LCBMU0wgIzEgICAgICAgICAgIEBMX3RtcCA9IChMX3RtcCA8PCAxKSArIDEKKwlDTFogICAgICAgICByNywgcjkKKwlTVUIgICAgICAgICByNiwgcjcsICMxICAgICAgICAgICAgICAgICAgIEBleHAgPSBub3JtX2woTF90bXApCisgICAgICAgIFJTQiAgICAgICAgIHI3LCByNiwgIzMyICAgICAgICAgICAgICAgICAgQGV4cCA9IDMyIC0gZXhwCisJTU9WICAgICAgICAgcjYsIHI3LCBBU1IgIzEgICAgICAgICAKKwlSU0IgICAgICAgICByNywgcjYsICMwICAgICAgICAgICAgICAgICAgIEBzY2FsZSA9IC0oZXhwID4+IDEpCisJCisgICAgICAgIEBsb29wIGZvciBldmVyeSBwb3NzaWJsZSBwZXJpb2QKKwlAZm9yKHQgPSB0X21pbkAgdCA8PSB0X21heEAgdCsrKQorCUByNyAtLS0gc2NhbGUgcjQgLS0tIHRfbWluIHI4IC0tLSBleGNmW10KKworTE9PUEZPUjoJCisgICAgICAgIE1PViAgICAgICAgIHI1LCAjMCAgICAgICAgICAgICAgICAgICAgICAgQExfdG1wICA9IDAKKwlNT1YgICAgICAgICByNiwgIzAgICAgICAgICAgICAgICAgICAgICAgIEBMX3RtcDEgPSAwCisJTU9WICAgICAgICAgcjksICM2NCAgCisJTU9WICAgICAgICAgcjEyLCByMSAgICAgICAgICAgICAgICAgICAgICBAY29weSBvZiB4bltdCisJQUREICAgICAgICAgcjE0LCByMTMsICMyMCAgICAgICAgICAgICAgICBAY29weSBvZiBleGNmW10KKwlNT1YgICAgICAgICByOCwgIzB4ODAwMAorICAgICAgICAJCitMT09QaToKKwlMRFIgICAgICAgICByMTEsIFtyMTRdLCAjNCAgICAgICAgICAgICAgIEBsb2FkIGV4Y2ZbaV0sIGV4Y2ZbaSsxXQorICAgICAgICBMRFIgICAgICAgICByMTAsIFtyMTJdLCAjNCAgICAgICAgICAgICAgIEBsb2FkIHhuW2ldLCB4bltpKzFdCisJU01MQUJCICAgICAgcjYsIHIxMSwgcjExLCByNiAgICAgICAgICAgICBATF90bXAxICs9IGV4Y2ZbaV0gKiBleGNmW2ldCisJU01MQVRUICAgICAgcjYsIHIxMSwgcjExLCByNiAgICAgICAgICAgICBATF90bXAxICs9IGV4Y2ZbaSsxXSAqIGV4Y2ZbaSsxXQorICAgICAgICBTTUxBQkIgICAgICByNSwgcjEwLCByMTEsIHI1ICAgICAgICAgICAgIEBMX3RtcCArPSB4bltpXSAqIGV4Y2ZbaV0KKwlTTUxBVFQgICAgICByNSwgcjEwLCByMTEsIHI1ICAgICAgICAgICAgIEBMX3RtcCArPSB4bltpKzFdICogZXhjZltpKzFdCisJTERSICAgICAgICAgcjExLCBbcjE0XSwgIzQgICAgICAgICAgICAgICBAbG9hZCBleGNmW2krMl0sIGV4Y2ZbaSszXQorCUxEUiAgICAgICAgIHIxMCwgW3IxMl0sICM0ICAgICAgICAgICAgICAgQGxvYWQgeG5baSsyXSwgeG5baSszXQorICAgICAgICBTTUxBQkIgICAgICByNiwgcjExLCByMTEsIHI2CisJU01MQVRUICAgICAgcjYsIHIxMSwgcjExLCByNgorCVNNTEFCQiAgICAgIHI1LCByMTAsIHIxMSwgcjUKKwlTTUxBVFQgICAgICByNSwgcjEwLCByMTEsIHI1CisJU1VCUyAgICAgICAgcjksIHI5LCAjNAorICAgICAgICBCTkUgICAgICAgICBMT09QaQorCisJQHI1IC0tLSBMX3RtcCwgcjYgLS0tIExfdG1wMQorCU1PViAgICAgICAgIHIxMCwgIzEKKwlBREQgICAgICAgICByNSwgcjEwLCByNSwgTFNMICMxICAgICAgICAgIEBMX3RtcCA9IChMX3RtcCA8PCAxKSArIDEKKwlBREQgICAgICAgICByNiwgcjEwLCByNiwgTFNMICMxICAgICAgICAgIEBMX3RtcDEgPSAoTF90bXAxIDw8IDEpICsgMQorIAorCUNMWiAgICAgICAgIHIxMCwgcjUgICAgICAgIAorCUNNUCAgICAgICAgIHI1LCAjMAorCVJTQkxUICAgICAgIHIxMSwgcjUsICMwCisJQ0xaTFQgICAgICAgcjEwLCByMTEKKwlTVUIgICAgICAgICByMTAsIHIxMCwgIzEgICAgICAgICAgICAgICAgIEBleHAgPSBub3JtX2woTF90bXApCisgICAgIAorCU1PViAgICAgICAgIHI1LCByNSwgTFNMIHIxMCAgICAgICAgICAgICAgQExfdG1wID0gKExfdG1wIDw8IGV4cCkKKwlSU0IgICAgICAgICByMTAsIHIxMCwgIzMwICAgICAgICAgICAgICAgIEBleHBfY29yciA9IDMwIC0gZXhwCisJTU9WICAgICAgICAgcjExLCByNSwgQVNSICMxNiAgICAgICAgICAgICBAY29yciA9IGV4dHJhY3RfaChMX3RtcCkKKworCUNMWiAgICAgICAgIHI1LCByNgorCVNVQiAgICAgICAgIHI1LCByNSwgIzEKKwlNT1YgICAgICAgICByNiwgcjYsIExTTCByNSAgICAgICAgICAgICAgIEBMX3RtcCA9IChMX3RtcDEgPDwgZXhwKQorCVJTQiAgICAgICAgIHI1LCByNSwgIzMwICAgICAgICAgICAgICAgICAgQGV4cF9ub3JtID0gMzAgLSBleHAKKworCUByMTAgLS0tIGV4cF9jb3JyLCByMTEgLS0tIGNvcnIKKwlAcjYgIC0tLSBMX3RtcCwgcjUgLS0tIGV4cF9ub3JtCisKKwlASXNxcnRfbigmTF90bXAsICZleHBfbm9ybSkKKworCU1PViAgICAgICAgIHIxNCwgcjAKKwlNT1YgICAgICAgICByMTIsIHIxIAorCisgICAgICAgIFNUTUZEICAgICAgIHNwISwge3IwIC0gcjQsIHI3IC0gcjEyLCByMTR9CisJQUREICAgICAgICAgcjEsIHNwLCAjNAorCUFERCAgICAgICAgIHIwLCBzcCwgIzAKKwlTVFIgICAgICAgICByNiwgW3NwXQorCVNUUkggICAgICAgIHI1LCBbc3AsICM0XQorCUJMICAgICAgICAgIElzcXJ0X24KKwlMRFIgICAgICAgICByNiwgW3NwXQorCUxEUlNIICAgICAgIHI1LCBbc3AsICM0XQorICAgICAgICBMRE1GRCAgICAgICBzcCEsIHtyMCAtIHI0LCByNyAtIHIxMiwgcjE0fQorCU1PViAgICAgICAgIHIwLCByMTQKKwlNT1YgICAgICAgICByMSwgcjEyCisKKworCU1PViAgICAgICAgIHI2LCByNiwgQVNSICMxNiAgICAgICAgICAgICAgQG5vcm0gPSBleHRyYWN0X2goTF90bXApCisJTVVMICAgICAgICAgcjEyLCByNiwgcjExCisJQUREICAgICAgICAgcjEyLCByMTIsIHIxMiAgICAgICAgICAgICAgICBATF90bXAgPSB2b19MX211bHQoY29yciwgbm9ybSkKKyAgCisJQUREICAgICAgICAgcjYsIHIxMCwgcjUKKwlBREQgICAgICAgICByNiwgcjYsIHI3ICAgICAgICAgICAgICAgICAgIEBleHBfY29yciArIGV4cF9ub3JtICsgc2NhbGUKKworICAgICAgICBDTVAgICAgICAgICByNiwgIzAKKyAgICAgICAgUlNCTFQgICAgICAgcjYsIHI2LCAjMAorCU1PVkxUICAgICAgIHIxMiwgcjEyLCBBU1IgcjYKKyAgICAgICAgTU9WR1QgICAgICAgcjEyLCByMTIsIExTTCByNiAgICAgICAgICAgICBATF90bXAgPSBMX3NobChMX3RtcCwgZXhwX2NvcnIgKyBleHBfbm9ybSArIHNjYWxlKQorCisgICAgICAgIEFERCAgICAgICAgIHIxMiwgcjEyLCByOAorICAgICAgICBNT1YgICAgICAgICByMTIsIHIxMiwgQVNSICMxNiAgICAgICAgICAgIEB2b19yb3VuZChMX3RtcCkKKworICAgICAgICBMRFIgICAgICAgICByNSwgW3IxMywgI0NPUlJfTk9STV0gICAgICAgIEAgZ2V0IGNvcnJfbm9ybSBhZGRyZXNzCisJTERSICAgICAgICAgcjYsIFtyMTMsICNUX01BWF0gICAgICAgICAgICBAIGdldCB0X21heAorCUFERCAgICAgICAgIHIxMCwgcjUsIHI0LCBMU0wgIzEgICAgICAgICAgQCBnZXQgY29ycl9ub3JtW3RdIGFkZHJlc3MKKwlTVFJIICAgICAgICByMTIsIFtyMTBdICAgICAgICAgICAgICAgICAgIEAgY29ycl9ub3JtW3RdID0gdm9fcm91bmQoTF90bXApCisKKwlDTVAgICAgICAgICByNCwgcjYKKwlCRVEgICAgICAgICBOb3JtX2NvcnJfYXNtX2VuZAorIAorCUFERCAgICAgICAgIHI0LCByNCwgIzEgICAgICAgICAgICAgICAgICAgQCB0X21pbiArKworICAgICAgICAKKwlSU0IgICAgICAgICByNSwgcjQsICMwICAgICAgICAgICAgICAgICAgIEAgaworCisJTU9WICAgICAgICAgcjYsICM2MyAgICAgICAgICAgICAgICAgICAgICBAIGkgPSA2MworCU1PViAgICAgICAgIHI4LCByMCAgICAgICAgICAgICAgICAgICAgICAgQCBleGNbXQorCU1PViAgICAgICAgIHI5LCByMiAgICAgICAgICAgICAgICAgICAgICAgQCBoW10KKwlBREQgICAgICAgICByMTAsIHIxMywgIzIwICAgICAgICAgICAgICAgIEAgZXhjZltdCisKKwlBREQgICAgICAgICByOCwgcjgsIHI1LCBMU0wgIzEgICAgICAgICAgIEAgZXhjW2tdIGFkZHJlc3MKKwlBREQgICAgICAgICByOSwgcjksIHI2LCBMU0wgIzEgICAgICAgICAgIEAgaFtpXSBhZGRyZXNzCisJQUREICAgICAgICAgcjEwLCByMTAsIHI2LCBMU0wgIzEgICAgICAgICBAIGV4Y2ZbaV0gYWRkcmVzcworCUxEUlNIICAgICAgIHIxMSwgW3I4XSAgICAgICAgICAgICAgICAgICAgQCB0bXAgPSBleGNba10KKworTE9PUEs6CisgICAgICAgIExEUlNIICAgICAgIHI4LCBbcjldLCAjLTIgICAgICAgICAgICAgICAgQCBsb2FkIGhbaV0KKwlMRFJTSCAgICAgICByMTIsIFtyMTAsICMtMl0gICAgICAgICAgICAgIEAgbG9hZCBleGNmW2kgLSAxXQorCU1VTCAgICAgICAgIHIxNCwgcjExLCByOAorCU1PViAgICAgICAgIHI4LCByMTQsIEFTUiAjMTUKKwlBREQgICAgICAgICByMTQsIHI4LCByMTIKKwlTVFJIICAgICAgICByMTQsIFtyMTBdLCAjLTIKKwlTVUJTICAgICAgICByNiwgcjYsICMxCisJQkdUICAgICAgICAgTE9PUEsKKworCUxEUlNIICAgICAgIHI4LCBbcjldICAgICAgICAgICAgICAgICAgICAgQCBsb2FkIGhbMF0KKwlNVUwgICAgICAgICByMTQsIHIxMSwgcjgKKyAgICAgICAgTERSICAgICAgICAgcjYsIFtyMTMsICNUX01BWF0gICAgICAgICAgICBAIGdldCB0X21heAorCU1PViAgICAgICAgIHI4LCByMTQsIEFTUiAjMTUKKwlTVFJIICAgICAgICByOCwgW3IxMF0gICAgICAgICAgICAgICAgICAgIAorCisJQ01QICAgICAgICAgcjQsIHI2CisJQkxFICAgICAgICAgTE9PUEZPUgorCitOb3JtX2NvcnJfYXNtX2VuZDogCisgICAgICAgIAorICAgICAgICBBREQgICAgICAgICAgICByMTMsIHIxMywgI3ZvU1RBQ0sgICAgICAKKyAgICAgICAgTERNRkQgICAgICAgICAgcjEzISwge3I0IC0gcjEyLCByMTV9CisgICAgCisgICAgICAgIC5FTkQKKworCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNUUvU3luX2ZpbHRfMzJfb3B0LnMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNUUvU3luX2ZpbHRfMzJfb3B0LnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQxNjYzNAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYXNtL0FSTVY1RS9TeW5fZmlsdF8zMl9vcHQucwpAQCAtMCwwICsxLDIyNiBAQAorQC8qDQorQCAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KK0AgKioNCitAICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KK0AgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KK0AgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorQCAqKg0KK0AgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KK0AgKioNCitAICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCitAICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorQCAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCitAICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCitAICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KK0AgKi8NCitADQorQHZvaWQgU3luX2ZpbHRfMzIoDQorQCAgICAgV29yZDE2IGFbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTEyIDogYVttKzFdIHByZWRpY3Rpb24gY29lZmZpY2llbnRzICovDQorQCAgICAgV29yZDE2IG0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogb3JkZXIgb2YgTFAgZmlsdGVyICAgICAgICAgICAgICovDQorQCAgICAgV29yZDE2IGV4Y1tdLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUW5ldzogZXhjaXRhdGlvbiAoZXhjW2ldID4+IFFuZXcpICAgICovDQorQCAgICAgV29yZDE2IFFuZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogZXhjIHNjYWxpbmcgPSAwKG1pbikgdG8gOChtYXgpICovDQorQCAgICAgV29yZDE2IHNpZ19oaVtdLCAgICAgICAgICAgICAgICAgICAgICAvKiAobykgLzE2IDogc3ludGhlc2lzIGhpZ2ggICAgICAgICAgICAgICAgICovDQorQCAgICAgV29yZDE2IHNpZ19sb1tdLCAgICAgICAgICAgICAgICAgICAgICAvKiAobykgLzE2IDogc3ludGhlc2lzIGxvdyAgICAgICAgICAgICAgICAgICovDQorQCAgICAgV29yZDE2IGxnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogc2l6ZSBvZiBmaWx0ZXJpbmcgICAgICAgICAgICAgICovDQorQCkNCitAKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorQA0KK0AgYVtdICAgICAgLS0tIHIwDQorQCBtICAgICAgICAtLS0gcjENCitAIGV4Y1tdICAgIC0tLSByMg0KK0AgUW5ldyAgICAgLS0tIHIzDQorQCBzaWdfaGlbXSAtLS0gcjQNCitAIHNpZ19sb1tdIC0tLSByNQ0KK0AgbGcgICAgICAgLS0tIHI2DQorDQorICAgICAgICAgIC5zZWN0aW9uICAudGV4dA0KKyAgICAgICAgICAuZ2xvYmFsICBTeW5fZmlsdF8zMl9hc20NCisNCitTeW5fZmlsdF8zMl9hc206DQorDQorICAgICAgICAgIFNUTUZEICAgCXIxMyEsIHtyNCAtIHIxMiwgcjE0fSANCisgICAgICAgICAgTERSICAgICAgICAgICByNCwgIFtyMTMsICM0MF0gICAgICAgICAgICAgICAgICBAIGdldCBzaWdfaGlbXSBhZGRyZXNzDQorICAgICAgICAgIExEUiAgICAgICAgICAgcjUsICBbcjEzLCAjNDRdICAgICAgICAgICAgICAgICAgQCBnZXQgc2lnX2xvW10gYWRkcmVzcw0KKw0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHI2LCAgW3IwXSAgICAgICAgICAgICAgICAgICAgICAgIEAgbG9hZCBBcVswXQ0KKyAgICAgICAgICBBREQgICAgICAgICAgIHI3LCAgcjMsICM0ICAgICAgICAgICAgICAgICAgICAgIEAgNCArIFFfbmV3DQorICAgICAgICAgIE1PViAgICAgICAgICAgcjMsIHI2LCBBU1IgcjcgICAgICAgICAgICAgICAgICAgQCBhMCA9IEFxWzBdID4+ICg0ICsgUV9uZXcpDQorDQorICAgICAgICAgIExEUiAgICAgICAgICAgcjE0LCA9MHhmZmZmDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjYsIFtyMCwgIzJdICAgICAgICAgICAgICAgICAgICAgQCBsb2FkIEFxWzFdDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjcsIFtyMCwgIzRdICAgICAgICAgICAgICAgICAgICAgQCBsb2FkIEFxWzJdDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjgsIFtyMCwgIzZdICAgICAgICAgICAgICAgICAgICAgQCBsb2FkIEFxWzNdDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjksIFtyMCwgIzhdICAgICAgICAgICAgICAgICAgICAgQCBsb2FkIEFxWzRdDQorICAgICAgICAgIEFORCAgICAgICAgICAgcjYsIHI2LCByMTQNCisgICAgICAgICAgQU5EICAgICAgICAgICByOCwgcjgsIHIxNA0KKyAgICAgICAgICBPUlIgICAgICAgICAgIHIxMCwgcjYsIHI3LCBMU0wgIzE2ICAgICAgICAgICAgIEAgQXFbMl0gLS0gQXFbMV0NCisgICAgICAgICAgT1JSICAgICAgICAgICByMTEsIHI4LCByOSwgTFNMICMxNiAgICAgICAgICAgICBAIEFxWzRdIC0tIEFxWzNdDQorICAgICAgICAgIFNUUiAgICAgICAgICAgcjEwLCBbcjEzLCAjLTRdICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgIFNUUiAgICAgICAgICAgcjExLCBbcjEzLCAjLThdDQorDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjYsIFtyMCwgIzEwXSAgICAgICAgICAgICAgICAgICAgQCBsb2FkIEFxWzVdDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjcsIFtyMCwgIzEyXSAgICAgICAgICAgICAgICAgICAgQCBsb2FkIEFxWzZdDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjgsIFtyMCwgIzE0XSAgICAgICAgICAgICAgICAgICAgQCBsb2FkIEFxWzddDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjksIFtyMCwgIzE2XSAgICAgICAgICAgICAgICAgICAgQCBsb2FkIEFxWzhdDQorICAgICAgICAgIEFORCAgICAgICAgICAgcjYsIHI2LCByMTQNCisgICAgICAgICAgQU5EICAgICAgICAgICByOCwgcjgsIHIxNA0KKyAgICAgICAgICBPUlIgICAgICAgICAgIHIxMCwgcjYsIHI3LCBMU0wgIzE2ICAgICAgICAgICAgIEAgQXFbNl0gLS0gQXFbNV0NCisgICAgICAgICAgT1JSICAgICAgICAgICByMTEsIHI4LCByOSwgTFNMICMxNiAgICAgICAgICAgICBAIEFxWzhdIC0tIEFxWzddDQorICAgICAgICAgIFNUUiAgICAgICAgICAgcjEwLCBbcjEzLCAjLTEyXQ0KKyAgICAgICAgICBTVFIgICAgICAgICAgIHIxMSwgW3IxMywgIy0xNl0NCisNCisgICAgICAgICAgTERSU0ggICAgICAgICByNiwgW3IwLCAjMThdICAgICAgICAgICAgICAgICAgICBAIGxvYWQgQXFbOV0NCisgICAgICAgICAgTERSU0ggICAgICAgICByNywgW3IwLCAjMjBdICAgICAgICAgICAgICAgICAgICBAIGxvYWQgQXFbMTBdDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjgsIFtyMCwgIzIyXSAgICAgICAgICAgICAgICAgICAgQCBsb2FkIEFxWzExXQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHI5LCBbcjAsICMyNF0gICAgICAgICAgICAgICAgICAgIEAgbG9hZCBBcVsxMl0NCisgICAgICAgICAgQU5EICAgICAgICAgICByNiwgcjYsIHIxNCANCisgICAgICAgICAgQU5EICAgICAgICAgICByOCwgcjgsIHIxNA0KKyAgICAgICAgICBPUlIgICAgICAgICAgIHIxMCwgcjYsIHI3LCBMU0wgIzE2ICAgICAgICAgICAgIEAgQXFbMTBdIC0tIEFxWzldDQorICAgICAgICAgIE9SUiAgICAgICAgICAgcjExLCByOCwgcjksIExTTCAjMTYgICAgICAgICAgICAgQCBBcVsxMl0gLS0gQXFbMTFdDQorICAgICAgICAgIFNUUiAgICAgICAgICAgcjEwLCBbcjEzLCAjLTIwXQ0KKyAgICAgICAgICBTVFIgICAgICAgICAgIHIxMSwgW3IxMywgIy0yNF0gIA0KKw0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHI2LCBbcjAsICMyNl0gICAgICAgICAgICAgICAgICAgIEAgbG9hZCBBcVsxM10NCisgICAgICAgICAgTERSU0ggICAgICAgICByNywgW3IwLCAjMjhdICAgICAgICAgICAgICAgICAgICBAIGxvYWQgQXFbMTRdDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjgsIFtyMCwgIzMwXSAgICAgICAgICAgICAgICAgICAgQCBsb2FkIEFxWzE1XQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHI5LCBbcjAsICMzMl0gICAgICAgICAgICAgICAgICAgIEAgbG9hZCBBcVsxNl0NCisgICAgICAgICAgQU5EICAgICAgICAgICByNiwgcjYsIHIxNA0KKyAgICAgICAgICBBTkQgICAgICAgICAgIHI4LCByOCwgcjE0DQorICAgICAgICAgIE9SUiAgICAgICAgICAgcjEwLCByNiwgcjcsIExTTCAjMTYgICAgICAgICAgICAgQCBBcVsxNF0gLS0gQXFbMTNdDQorICAgICAgICAgIE9SUiAgICAgICAgICAgcjExLCByOCwgcjksIExTTCAjMTYgICAgICAgICAgICAgQCBBcVsxNl0gLS0gQXFbMTVdDQorICAgICAgICAgIFNUUiAgICAgICAgICAgcjEwLCBbcjEzLCAjLTI4XQ0KKyAgICAgICAgICBTVFIgICAgICAgICAgIHIxMSwgW3IxMywgIy0zMl0NCisgICAgICAgICAgDQorICAgICAgICAgIE1PViAgICAgICAgICAgcjgsICMwICAgICAgICAgICAgICAgICAgICAgICAgICAgQCBpID0gMA0KKyAgICAgICAgICAgICAgDQorTE9PUDogICAgICAgICAgICANCisgICAgICAgICAgTERSU0ggICAgICAgICByNiwgW3I1LCAjLTJdICAgICAgICAgICAgICAgICAgICBAIGxvYWQgc2lnX2xvW2ktMV0NCisgICAgICAgICAgTERSU0ggICAgICAgICByNywgW3I1LCAjLTRdICAgICAgICAgICAgICAgICAgICBAIGxvYWQgc2lnX2xvW2ktMl0NCisNCisgICAgICAgICAgTERSICAgICAgICAgICByMTEsIFtyMTMsICMtNF0gICAgICAgICAgICAgICAgICBAIEFxWzJdIC0tIEFxWzFdICAgICAgICANCisgICAgICAgICAgTERSU0ggICAgICAgICByOSwgW3I1LCAjLTZdICAgICAgICAgICAgICAgICAgICBAIGxvYWQgc2lnX2xvW2ktM10NCisgICAgICAgICAgTERSU0ggICAgICAgICByMTAsIFtyNSwgIy04XSAgICAgICAgICAgICAgICAgICBAIGxvYWQgc2lnX2xvW2ktNF0NCisNCisgICAgICAgICAgU01VTEJCICAgICAgICByMTIsIHI2LCByMTEgICAgICAgICAgICAgICAgICAgICBAIHNpZ19sb1tpLTFdICogQXFbMV0NCisNCisgICAgICAgICAgTERSU0ggICAgICAgICByNiwgW3I1LCAjLTEwXSAgICAgICAgICAgICAgICAgICBAIGxvYWQgc2lnX2xvW2ktNV0NCisgICAgICAgICAgU01MQUJUICAgICAgICByMTIsIHI3LCByMTEsIHIxMiAgICAgICAgICAgICAgICBAIHNpZ19sb1tpLTJdICogQXFbMl0NCisgICAgICAgICAgTERSICAgICAgICAgICByMTEsIFtyMTMsICMtOF0gICAgICAgICAgICAgICAgICBAIEFxWzRdIC0tIEFxWzNdDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjcsIFtyNSwgIy0xMl0gICAgICAgICAgICAgICAgICAgQCBsb2FkIHNpZ19sb1tpLTZdDQorICAgICAgICAgIFNNTEFCQiAgICAgICAgcjEyLCByOSwgcjExLCByMTIgICAgICAgICAgICAgICAgQCBzaWdfbG9baS0zXSAqIEFxWzNdDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjksIFtyNSwgIy0xNF0gICAgICAgICAgICAgICAgICAgQCBsb2FkIHNpZ19sb1tpLTddDQorICAgICAgICAgIFNNTEFCVCAgICAgICAgcjEyLCByMTAsIHIxMSwgcjEyICAgICAgICAgICAgICAgQCBzaWdfbG9baS00XSAqIEFxWzRdDQorICAgICAgICAgIExEUiAgICAgICAgICAgcjExLCBbcjEzLCAjLTEyXSAgICAgICAgICAgICAgICAgQCBBcVs2XSAtLSBBcVs1XQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHIxMCwgW3I1LCAjLTE2XSAgICAgICAgICAgICAgICAgIEAgbG9hZCBzaWdfbG9baS04XQ0KKyAgICAgICAgICBTTUxBQkIgICAgICAgIHIxMiwgcjYsIHIxMSwgcjEyICAgICAgICAgICAgICAgIEAgc2lnX2xvW2ktNV0gKiBBcVs1XQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHI2LCAgW3I1LCAjLTE4XSAgICAgICAgICAgICAgICAgIEAgbG9hZCBzaWdfbG9baS05XQ0KKyAgICAgICAgICBTTUxBQlQgICAgICAgIHIxMiwgcjcsIHIxMSwgcjEyICAgICAgICAgICAgICAgIEAgc2lnX2xvW2ktNl0gKiBBcVs2XQ0KKyAgICAgICAgICBMRFIgICAgICAgICAgIHIxMSwgW3IxMywgIy0xNl0gICAgICAgICAgICAgICAgIEAgQXFbOF0gLS0gQXFbN10NCisgICAgICAgICAgTERSU0ggICAgICAgICByNywgIFtyNSwgIy0yMF0gICAgICAgICAgICAgICAgICBAIGxvYWQgc2lnX2xvW2ktMTBdDQorICAgICAgICAgIFNNTEFCQiAgICAgICAgcjEyLCByOSwgcjExLCByMTIgICAgICAgICAgICAgICAgQCBzaWdfbG9baS03XSAqIEFxWzddDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjksIFtyNSwgIy0yMl0gICAgICAgICAgICAgICAgICAgQCBsb2FkIHNpZ19sb1tpLTExXQ0KKyAgICAgICAgICBTTUxBQlQgICAgICAgIHIxMiwgcjEwLCByMTEsIHIxMiAgICAgICAgICAgICAgIEAgc2lnX2xvW2ktOF0gKiBBcVs4XQ0KKyAgICAgICAgICBMRFIgICAgICAgICAgIHIxMSwgW3IxMywgIy0yMF0gICAgICAgICAgICAgICAgIEAgQXFbMTBdIC0tIEFxWzldDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjEwLFtyNSwgIy0yNF0gICAgICAgICAgICAgICAgICAgQCBsb2FkIHNpZ19sb1tpLTEyXQ0KKyAgICAgICAgICBTTUxBQkIgICAgICAgIHIxMiwgcjYsIHIxMSwgcjEyICAgICAgICAgICAgICAgIEAgc2lnX2xvW2ktOV0gKiBBcVs5XQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHI2LCBbcjUsICMtMjZdICAgICAgICAgICAgICAgICAgIEAgbG9hZCBzaWdfbG9baS0xM10NCisgICAgICAgICAgU01MQUJUICAgICAgICByMTIsIHI3LCByMTEsIHIxMiAgICAgICAgICAgICAgICBAIHNpZ19sb1tpLTEwXSAqIEFxWzEwXQ0KKyAgICAgICAgICBMRFIgICAgICAgICAgIHIxMSwgW3IxMywgIy0yNF0gICAgICAgICAgICAgICAgIEAgQXFbMTJdIC0tIEFxWzExXQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHI3LCBbcjUsICMtMjhdICAgICAgICAgICAgICAgICAgIEAgbG9hZCBzaWdfbG9baS0xNF0NCisgICAgICAgICAgU01MQUJCICAgICAgICByMTIsIHI5LCByMTEsIHIxMiAgICAgICAgICAgICAgICBAIHNpZ19sb1tpLTExXSAqIEFxWzExXQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHI5LCBbcjUsICMtMzBdICAgICAgICAgICAgICAgICAgIEAgbG9hZCBzaWdfbG9baS0xNV0NCisgICAgICAgICAgU01MQUJUICAgICAgICByMTIsIHIxMCwgcjExLCByMTIgICAgICAgICAgICAgICBAIHNpZ19sb1tpLTEyXSAqIEFxWzEyXQ0KKw0KKyAgICAgICAgICBMRFIgICAgICAgICAgIHIxMSwgW3IxMywgIy0yOF0gICAgICAgICAgICAgICAgIEAgQXFbMTRdIC0tIEFxWzEzXQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHIxMCwgW3I1LCAjLTMyXSAgICAgICAgICAgICAgICAgIEAgbG9hZCBzaWdfbG9baS0xNl0NCisgICAgICAgICAgU01MQUJCICAgICAgICByMTIsIHI2LCByMTEsIHIxMiAgICAgICAgICAgICAgICBAIHNpZ19sb1tpLTEzXSAqIEFxWzEzXQ0KKyAgICAgICAgICBTTUxBQlQgICAgICAgIHIxMiwgcjcsIHIxMSwgcjEyICAgICAgICAgICAgICAgIEAgc2lnX2xvW2ktMTRdICogQXFbMTRdDQorIA0KKyAgICAgICAgICBMRFIgICAgICAgICAgIHIxMSwgW3IxMywgIy0zMl0gICAgICAgICAgICAgICAgIEAgQXFbMTZdIC0tIEFxWzE1XQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHI2LCBbcjJdLCMyICAgICAgICAgICAgICAgICAgICAgIEAgbG9hZCBleGNbaV0gDQorICAgICAgICAgIFNNTEFCQiAgICAgICAgcjEyLCByOSwgcjExLCByMTIgICAgICAgICAgICAgICAgQCBzaWdfbG9baS0xNV0gKiBBcVsxNV0NCisgICAgICAgICAgU01MQUJUICAgICAgICByMTIsIHIxMCwgcjExLCByMTIgICAgICAgICAgICAgICBAIHNpZ19sb1tpLTE2XSAqIEFxWzE2XQ0KKyAgICAgICAgICBNVUwgICAgICAgICAgIHI3LCByNiwgcjMgICAgICAgICAgICAgICAgICAgICAgIEAgZXhjW2ldICogYTAgDQorICAgICAgICAgIFJTQiAgICAgICAgICAgcjE0LCByMTIsICMwICAgICAgICAgICAgICAgICAgICAgQCBMX3RtcA0KKyAgICAgICAgICBNT1YgICAgICAgICAgIHIxNCwgcjE0LCBBU1IgIzExICAgICAgICAgICAgICAgIEAgTF90bXAgPj49IDExDQorICAgICAgICAgIEFERCAgICAgICAgICAgcjE0LCByMTQsIHI3LCBMU0wgIzEgICAgICAgICAgICAgQCBMX3RtcCArPSAoZXhjW2ldICogYTApIDw8IDENCisNCisNCisgICAgICAgICAgTERSU0ggICAgICAgICByNiwgW3I0LCAjLTJdICAgICAgICAgICAgICAgICAgICBAIGxvYWQgc2lnX2hpW2ktMV0NCisgICAgICAgICAgTERSU0ggICAgICAgICByNywgW3I0LCAjLTRdICAgICAgICAgICAgICAgICAgICBAIGxvYWQgc2lnX2hpW2ktMl0NCisNCisgICAgICAgICAgTERSICAgICAgICAgICByMTEsIFtyMTMsICMtNF0gICAgICAgICAgICAgICAgICBAIEFxWzJdIC0tIEFxWzFdICAgICAgICANCisgICAgICAgICAgTERSU0ggICAgICAgICByOSwgW3I0LCAjLTZdICAgICAgICAgICAgICAgICAgICBAIGxvYWQgc2lnX2hpW2ktM10NCisgICAgICAgICAgTERSU0ggICAgICAgICByMTAsIFtyNCwgIy04XSAgICAgICAgICAgICAgICAgICBAIGxvYWQgc2lnX2hpW2ktNF0NCisgICAgICAgICAgU01VTEJCICAgICAgICByMTIsIHI2LCByMTEgICAgICAgICAgICAgICAgICAgICBAIHNpZ19oaVtpLTFdICogQXFbMV0NCisgICAgICAgICAgTERSU0ggICAgICAgICByNiwgW3I0LCAjLTEwXSAgICAgICAgICAgICAgICAgICBAIGxvYWQgc2lnX2hpW2ktNV0NCisJICBTTUxBQlQgICAgICAgIHIxMiwgcjcsIHIxMSwgcjEyICAgICAgICAgICAgICAgIEAgc2lnX2hpW2ktMl0gKiBBcVsyXQ0KKw0KKyAgICAgICAgICBMRFIgICAgICAgICAgIHIxMSwgW3IxMywgIy04XSAgICAgICAgICAgICAgICAgIEAgQXFbNF0gLS0gQXFbM10NCisgICAgICAgICAgTERSU0ggICAgICAgICByNywgW3I0LCAjLTEyXSAgICAgICAgICAgICAgICAgICBAIGxvYWQgc2lnX2hpW2ktNl0NCisNCisgICAgICAgICAgU01MQUJCICAgICAgICByMTIsIHI5LCByMTEsIHIxMiAgICAgICAgICAgICAgICBAIHNpZ19oaVtpLTNdICogQXFbM10NCisJICBMRFJTSCAgICAgICAgIHI5LCBbcjQsICMtMTRdICAgICAgICAgICAgICAgICAgIEAgbG9hZCBzaWdfaGlbaS03XQ0KKw0KKwkgIFNNTEFCVCAgICAgICAgcjEyLCByMTAsIHIxMSwgcjEyICAgICAgICAgICAgICAgQCBzaWdfaGlbaS00XSAqIEFxWzRdDQorDQorICAgICAgICAgIExEUiAgICAgICAgICAgcjExLCBbcjEzLCAjLTEyXSAgICAgICAgICAgICAgICAgQCBBcVs2XSAtLSBBcVs1XQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHIxMCwgW3I0LCAjLTE2XSAgICAgICAgICAgICAgICAgIEAgbG9hZCBzaWdfaGlbaS04XQ0KKw0KKwkgIFNNTEFCQiAgICAgICAgcjEyLCByNiwgcjExLCByMTIgICAgICAgICAgICAgICAgQCBzaWdfaGlbaS01XSAqIEFxWzVdDQorDQorCSAgTERSU0ggICAgICAgICByNiwgIFtyNCwgIy0xOF0gICAgICAgICAgICAgICAgICBAIGxvYWQgc2lnX2hpW2ktOV0NCisJICBTTUxBQlQgICAgICAgIHIxMiwgcjcsIHIxMSwgcjEyICAgICAgICAgICAgICAgIEAgc2lnX2hpW2ktNl0gKiBBcVs2XQ0KKw0KKyAgICAgICAgICBMRFIgICAgICAgICAgIHIxMSwgW3IxMywgIy0xNl0gICAgICAgICAgICAgICAgIEAgQXFbOF0gLS0gQXFbN10NCisgICAgICAgICAgTERSU0ggICAgICAgICByNywgIFtyNCwgIy0yMF0gICAgICAgICAgICAgICAgICBAIGxvYWQgc2lnX2hpW2ktMTBdDQorDQorCSAgU01MQUJCICAgICAgICByMTIsIHI5LCByMTEsIHIxMiAgICAgICAgICAgICAgICBAIHNpZ19oaVtpLTddICogQXFbN10NCisNCisJICBMRFJTSCAgICAgICAgIHI5LCBbcjQsICMtMjJdICAgICAgICAgICAgICAgICAgIEAgbG9hZCBzaWdfaGlbaS0xMV0NCisNCisJICBTTUxBQlQgICAgICAgIHIxMiwgcjEwLCByMTEsIHIxMiAgICAgICAgICAgICAgIEAgc2lnX2hpW2ktOF0gKiBBcVs4XQ0KKw0KKyAgICAgICAgICBMRFIgICAgICAgICAgIHIxMSwgW3IxMywgIy0yMF0gICAgICAgICAgICAgICAgIEAgQXFbMTBdIC0tIEFxWzldDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjEwLFtyNCwgIy0yNF0gICAgICAgICAgICAgICAgICAgQCBsb2FkIHNpZ19oaVtpLTEyXQ0KKw0KKwkgIFNNTEFCQiAgICAgICAgcjEyLCByNiwgcjExLCByMTIgICAgICAgICAgICAgICAgQCBzaWdfaGlbaS05XSAqIEFxWzldDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjYsIFtyNCwgIy0yNl0gICAgICAgICAgICAgICAgICAgQCBsb2FkIHNpZ19oaVtpLTEzXQ0KKyAgICAgICAgICBTTUxBQlQgICAgICAgIHIxMiwgcjcsIHIxMSwgcjEyICAgICAgICAgICAgICAgIEAgc2lnX2hpW2ktMTBdICogQXFbMTBdDQorDQorICAgICAgICAgIExEUiAgICAgICAgICAgcjExLCBbcjEzLCAjLTI0XSAgICAgICAgICAgICAgICAgQCBBcVsxMl0gLS0gQXFbMTFdDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjcsIFtyNCwgIy0yOF0gICAgICAgICAgICAgICAgICAgQCBsb2FkIHNpZ19oaVtpLTE0XQ0KKyAgICAgICAgICBTTUxBQkIgICAgICAgIHIxMiwgcjksIHIxMSwgcjEyICAgICAgICAgICAgICAgIEAgc2lnX2hpW2ktMTFdICogQXFbMTFdDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjksIFtyNCwgIy0zMF0gICAgICAgICAgICAgICAgICAgQCBsb2FkIHNpZ19oaVtpLTE1XQ0KKyAgICAgICAgICBTTUxBQlQgICAgICAgIHIxMiwgcjEwLCByMTEsIHIxMiAgICAgICAgICAgICAgIEAgc2lnX2hpW2ktMTJdICogQXFbMTJdDQorDQorICAgICAgICAgIExEUiAgICAgICAgICAgcjExLCBbcjEzLCAjLTI4XSAgICAgICAgICAgICAgICAgQCBBcVsxNF0gLS0gQXFbMTNdDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjEwLCBbcjQsICMtMzJdICAgICAgICAgICAgICAgICAgQCBsb2FkIHNpZ19oaVtpLTE2XQ0KKyAgICAgICAgICBTTUxBQkIgICAgICAgIHIxMiwgcjYsIHIxMSwgcjEyICAgICAgICAgICAgICAgIEAgc2lnX2hpW2ktMTNdICogQXFbMTNdDQorICAgICAgICAgIFNNTEFCVCAgICAgICAgcjEyLCByNywgcjExLCByMTIgICAgICAgICAgICAgICAgQCBzaWdfaGlbaS0xNF0gKiBBcVsxNF0NCisgDQorICAgICAgICAgIExEUiAgICAgICAgICAgcjExLCBbcjEzLCAjLTMyXSAgICAgICAgICAgICAgICAgQCBBcVsxNl0gLS0gQXFbMTVdDQorICAgICAgICAgIFNNTEFCQiAgICAgICAgcjEyLCByOSwgcjExLCByMTIgICAgICAgICAgICAgICAgQCBzaWdfaGlbaS0xNV0gKiBBcVsxNV0NCisgICAgICAgICAgU01MQUJUICAgICAgICByMTIsIHIxMCwgcjExLCByMTIgICAgICAgICAgICAgICBAIHNpZ19oaVtpLTE2XSAqIEFxWzE2XSAgICAgICANCisgICAgICAgICAgQUREICAgICAgICAgICByNiwgcjEyLCByMTIgICAgICAgICAgICAgICAgICAgICBAIHIxMiA8PCAxDQorICAgICAgICAgIFNVQiAgICAgICAgICAgcjE0LCByMTQsIHI2ICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgIE1PViAgICAgICAgICAgcjE0LCByMTQsIExTTCAjMyAgICAgICAgICAgICAgICAgQCBMX3RtcCA8PD0zDQorICANCisgICAgICAgICAgTU9WICAgICAgICAgICByNywgcjE0LCBBU1IgIzE2ICAgICAgICAgICAgICAgICBAIExfdG1wID4+IDE2DQorDQorICAgICAgICAgIE1PViAgICAgICAgICAgcjE0LCByMTQsIEFTUiAjNCAgICAgICAgICAgICAgICAgQCBMX3RtcCA+Pj00DQorICAgICAgICAgIFNUUkggICAgICAgICAgcjcsIFtyNF0sICMyICAgICAgICAgICAgICAgICAgICAgICAgIEAgc2lnX2hpW2ldID0gTF90bXAgPj4gMTYNCisgICAgICAgICAgU1VCICAgICAgICAgICByOSwgcjE0LCByNywgTFNMICMxMiAgICAgICAgICAgICBAIHNpZ19sb1tpXSA9IExfdG1wIC0gKHNpZ19oaVtpXSA8PCAxMikNCisNCisgICAgICAgICAgQUREICAgICAgICAgICByOCwgcjgsICMxDQorICAgICAgICAgIFNUUkggICAgICAgICAgcjksIFtyNV0sICMyICAgDQorICAgICAgICAgIENNUCAgICAgICAgICAgcjgsICM2NA0KKyAgICAgICAgICBCTFQgICAgICAgICAgIExPT1AgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgDQorU3luX2ZpbHRfMzJfZW5kOg0KKwkJICAgICANCisgICAgICAgICAgTERNRkQgICAJICAgIHIxMyEsIHtyNCAtIHIxMiwgcjE1fSANCisgICAgICAgICAgQEVOREZVTkMNCisgICAgICAgICAgLkVORA0KKyANCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNUUvY29udm9sdmVfb3B0LnMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNUUvY29udm9sdmVfb3B0LnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDIyOGJkYQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYXNtL0FSTVY1RS9jb252b2x2ZV9vcHQucwpAQCAtMCwwICsxLDE4NiBAQAorQC8qCitAICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuCitAICoqCitAICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworQCAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitAICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorQCAqKgorQCAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCitAICoqCitAICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK0AgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKK0AgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCitAICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK0AgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCitAICovCisKKworQCp2b2lkIENvbnZvbHZlICgKK0AqICAgIFdvcmQxNiB4W10sICAgICAgICAvKiAoaSkgICAgIDogaW5wdXQgdmVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KK0AqICAgIFdvcmQxNiBoW10sICAgICAgICAvKiAoaSkgICAgIDogaW1wdWxzZSByZXNwb25zZSAgICAgICAgICAgICAgICAgICAgICAgKi8KK0AqICAgIFdvcmQxNiB5W10sICAgICAgICAvKiAobykgICAgIDogb3V0cHV0IHZlY3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KK0AqICAgIFdvcmQxNiBMICAgICAgICAgICAvKiAoaSkgICAgIDogdmVjdG9yIHNpemUgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KK0AqKQorQCAgcjAgLS0tIHhbXQorQCAgcjEgLS0tIGhbXQorQCAgcjIgLS0tIHlbXQorQCAgcjMgLS0tIEwKKworCS5zZWN0aW9uICAudGV4dAorICAgICAgICAuZ2xvYmFsICAgQ29udm9sdmVfYXNtIAorCitDb252b2x2ZV9hc206CisKKyAgICAgICAgU1RNRkQgICAgICAgICAgcjEzISwge3I0IC0gcjEyLCByMTR9ICAKKyAgICAgICAgTU9WICAgICAgICAgICAgcjMsICAjMCAgICAgICAgICAgICAgICAgICAgICAgICAgIEAgbgorCU1PViAgICAgICAgICAgIHIxMSwgIzB4ODAwMAorICAgICAgICAKK0xPT1A6IAorICAgICAgICBBREQgICAgICAgICAgICByNCwgcjEsIHIzLCBMU0wgIzEgICAgICAgICAgICAgICAgQCB0bXBIIGFkZHJlc3MKKyAgICAgICAgQUREICAgICAgICAgICAgcjUsIHIzLCAjMSAgICAgICAgICAgICAgICAgICAgICAgIEAgaSA9IG4gKyAxCisgICAgICAgIE1PViAgICAgICAgICAgIHI2LCByMCAgICAgICAgICAgICAgICAgICAgICAgICAgICBAIHRtcFggPSB4CisgICAgICAgIExEUlNIICAgICAgICAgIHI5LCAgW3I2XSwgIzIgICAgICAgICAgICAgICAgICAgICBAICp0bXBYKysKKyAgICAgICAgTERSU0ggICAgICAgICAgcjEwLCBbcjRdLCAjLTIgICAgICAgICAgICAgICAgICAgIEAgKnRtcEgtLQorICAgICAgICBTVUIgICAgICAgICAgICByNSwgcjUsICMxCisgICAgICAgIE1VTCAgICAgICAgICAgIHI4LCAgcjksIHIxMCAKKworTE9PUDE6ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgQ01QICAgICAgICAgICAgcjUsICMwCisgICAgICAgIEJMRSAgICAgICAgICAgIEwxCisJTERSU0ggICAgICAgICAgcjksICBbcjZdLCAjMiAgICAgICAgICAgICAgICAgICAgIEAgKnRtcFgrKworCUxEUlNIICAgICAgICAgIHIxMCwgW3I0XSwgIy0yICAgICAgICAgICAgICAgICAgICBAICp0bXBILS0KKwlMRFJTSCAgICAgICAgICByMTIsIFtyNl0sICMyICAgICAgICAgICAgICAgICAgICAgQCAqdG1wWCsrCisJTERSU0ggICAgICAgICAgcjE0LCBbcjRdLCAjLTIgICAgICAgICAgICAgICAgICAgIEAgKnRtcEgtLQorCU1MQSAgICAgICAgICAgIHI4LCByOSwgcjEwLCByOAorCU1MQSAgICAgICAgICAgIHI4LCByMTIsIHIxNCwgcjgKKwlMRFJTSCAgICAgICAgICByOSwgIFtyNl0sICMyICAgICAgICAgICAgICAgICAgICAgQCAqdG1wWCsrCisJTERSU0ggICAgICAgICAgcjEwLCBbcjRdLCAjLTIgICAgICAgICAgICAgICAgICAgIEAgKnRtcEgtLQorCUxEUlNIICAgICAgICAgIHIxMiwgW3I2XSwgIzIgICAgICAgICAgICAgICAgICAgICBAICp0bXBYKysKKwlMRFJTSCAgICAgICAgICByMTQsIFtyNF0sICMtMiAgICAgICAgICAgICAgICAgICAgQCAqdG1wSC0tCisJTUxBICAgICAgICAgICAgcjgsIHI5LCByMTAsIHI4CisgICAgICAgIFNVQlMgICAgICAgICAgIHI1LCByNSwgIzQgCisJTUxBICAgICAgICAgICAgcjgsIHIxMiwgcjE0LCByOAorICAgIAorICAgICAgICBCICAgICAgICAgICAgICBMT09QMSAgCisKK0wxOiAgICAgICAgICAgICAgICAgIAorCisgICAgICAgIEFERCAgICAgICAgICAgIHI1LCByMTEsIHI4LCBMU0wgIzEKKyAgICAgICAgTU9WICAgICAgICAgICAgcjUsIHI1LCBMU1IgIzE2ICAgICAgICAgICAgICAgICAgIEBleHRyYWN0X2gocykKKyAgICAgICAgQUREICAgICAgICAgICAgcjMsIHIzLCAjMQorICAgICAgICBTVFJIICAgICAgICAgICByNSwgW3IyXSwgIzIgICAgICAgICAgICAgICAgICAgICAgQHlbbl0KKworCisgICAgICAgIEFERCAgICAgICAgICAgIHI0LCByMSwgcjMsIExTTCAjMSAgICAgICAgICAgICAgICBAdG1wSCBhZGRyZXNzCisgICAgICAgIEFERCAgICAgICAgICAgIHI1LCByMywgIzEKKyAgICAgICAgTU9WICAgICAgICAgICAgcjYsIHIwCisgICAgICAgIExEUlNIICAgICAgICAgIHI5LCAgW3I2XSwgIzIgICAgICAgICAgICAgICAgICAgICBAICp0bXBYKysKKyAgICAgICAgTERSU0ggICAgICAgICAgcjEwLCBbcjRdLCAjLTIgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgTERSU0ggICAgICAgICAgcjEyLCBbcjZdLCAjMgorICAgICAgICBMRFJTSCAgICAgICAgICByMTQsIFtyNF0sICMtMgorCisgICAgICAgIE1VTCAgICAgICAgICAgIHI4LCByOSwgcjEwCisgICAgICAgIFNVQiAgICAgICAgICAgIHI1LCByNSwgIzIKKyAgICAgICAgTUxBICAgICAgICAgICAgcjgsIHIxMiwgcjE0LCByOAorICAgICAgICAKK0xPT1AyOgorICAgICAgICBDTVAgICAgICAgICAgICByNSwgIzAKKyAgICAgICAgQkxFICAgICAgICAgICAgTDIKKwlMRFJTSCAgICAgICAgICByOSwgIFtyNl0sICMyICAgICAgICAgICAgICAgICAgICAgQCAqdG1wWCsrCisJTERSU0ggICAgICAgICAgcjEwLCBbcjRdLCAjLTIgICAgICAgICAgICAgICAgICAgIEAgKnRtcEgtLQorCUxEUlNIICAgICAgICAgIHIxMiwgW3I2XSwgIzIgICAgICAgICAgICAgICAgICAgICBAICp0bXBYKysKKwlMRFJTSCAgICAgICAgICByMTQsIFtyNF0sICMtMiAgICAgICAgICAgICAgICAgICAgQCAqdG1wSC0tCisJTUxBICAgICAgICAgICAgcjgsIHI5LCByMTAsIHI4CisJTUxBICAgICAgICAgICAgcjgsIHIxMiwgcjE0LCByOAorCUxEUlNIICAgICAgICAgIHI5LCAgW3I2XSwgIzIgICAgICAgICAgICAgICAgICAgICBAICp0bXBYKysKKwlMRFJTSCAgICAgICAgICByMTAsIFtyNF0sICMtMiAgICAgICAgICAgICAgICAgICAgQCAqdG1wSC0tCisJTERSU0ggICAgICAgICAgcjEyLCBbcjZdLCAjMiAgICAgICAgICAgICAgICAgICAgIEAgKnRtcFgrKworCUxEUlNIICAgICAgICAgIHIxNCwgW3I0XSwgIy0yICAgICAgICAgICAgICAgICAgICBAICp0bXBILS0KKwlNTEEgICAgICAgICAgICByOCwgcjksIHIxMCwgcjgKKyAgICAgICAgU1VCUyAgICAgICAgICAgcjUsIHI1LCAjNCAKKwlNTEEgICAgICAgICAgICByOCwgcjEyLCByMTQsIHI4CisgICAgICAgIEIgICAgICAgICAgICAgIExPT1AyCisKK0wyOgorICAgICAgICBBREQgICAgICAgICAgICByOCwgcjExLCByOCwgTFNMICMxCisgICAgICAgIE1PViAgICAgICAgICAgIHI4LCByOCwgTFNSICMxNiAgICAgICAgICAgICAgICAgICBAZXh0cmFjdF9oKHMpCisgICAgICAgIEFERCAgICAgICAgICAgIHIzLCByMywgIzEgIAorICAgICAgICBTVFJIICAgICAgICAgICByOCwgW3IyXSwgIzIgICAgICAgICAgICAgICAgICAgICAgQHlbbl0KKworICAgICAgICBBREQgICAgICAgICAgICByNCwgcjEsIHIzLCBMU0wgIzEKKyAgICAgICAgQUREICAgICAgICAgICAgcjUsIHIzLCAjMQorICAgICAgICBNT1YgICAgICAgICAgICByNiwgcjAKKyAgICAgICAgTERSU0ggICAgICAgICAgcjksICBbcjZdLCAjMgorICAgICAgICBMRFJTSCAgICAgICAgICByMTAsIFtyNF0sICMtMgorICAgICAgICBMRFJTSCAgICAgICAgICByMTIsIFtyNl0sICMyCisgICAgICAgIExEUlNIICAgICAgICAgIHIxNCwgW3I0XSwgIy0yCisgICAgICAgIE1VTCAgICAgICAgICAgIHI4LCByOSwgcjEwCisgICAgICAgIExEUlNIICAgICAgICAgIHI5LCAgW3I2XSwgIzIKKyAgICAgICAgTERSU0ggICAgICAgICAgcjEwLCBbcjRdLCAjLTIKKyAgICAgICAgTUxBICAgICAgICAgICAgcjgsIHIxMiwgcjE0LCByOCAKKyAgICAgICAgU1VCICAgICAgICAgICAgcjUsIHI1LCAjMworICAgICAgICBNTEEgICAgICAgICAgICByOCwgcjksIHIxMCwgcjgKKworTE9PUDM6CisgICAgICAgIENNUCAgICAgICAgICAgIHI1LCAjMAorICAgICAgICBCTEUgICAgICAgICAgICBMMworCUxEUlNIICAgICAgICAgIHI5LCAgW3I2XSwgIzIgICAgICAgICAgICAgICAgICAgICBAICp0bXBYKysKKwlMRFJTSCAgICAgICAgICByMTAsIFtyNF0sICMtMiAgICAgICAgICAgICAgICAgICAgQCAqdG1wSC0tCisJTERSU0ggICAgICAgICAgcjEyLCBbcjZdLCAjMiAgICAgICAgICAgICAgICAgICAgIEAgKnRtcFgrKworCUxEUlNIICAgICAgICAgIHIxNCwgW3I0XSwgIy0yICAgICAgICAgICAgICAgICAgICBAICp0bXBILS0KKwlNTEEgICAgICAgICAgICByOCwgcjksIHIxMCwgcjgKKwlNTEEgICAgICAgICAgICByOCwgcjEyLCByMTQsIHI4CisJTERSU0ggICAgICAgICAgcjksICBbcjZdLCAjMiAgICAgICAgICAgICAgICAgICAgIEAgKnRtcFgrKworCUxEUlNIICAgICAgICAgIHIxMCwgW3I0XSwgIy0yICAgICAgICAgICAgICAgICAgICBAICp0bXBILS0KKwlMRFJTSCAgICAgICAgICByMTIsIFtyNl0sICMyICAgICAgICAgICAgICAgICAgICAgQCAqdG1wWCsrCisJTERSU0ggICAgICAgICAgcjE0LCBbcjRdLCAjLTIgICAgICAgICAgICAgICAgICAgIEAgKnRtcEgtLQorCU1MQSAgICAgICAgICAgIHI4LCByOSwgcjEwLCByOAorICAgICAgICBTVUJTICAgICAgICAgICByNSwgcjUsICM0IAorCU1MQSAgICAgICAgICAgIHI4LCByMTIsIHIxNCwgcjggCisgICAgICAgIEIgICAgICAgICAgICAgIExPT1AzICAgCisKK0wzOgorICAgICAgICBBREQgICAgICAgICAgICByOCwgcjExLCByOCwgTFNMICMxCisgICAgICAgIE1PViAgICAgICAgICAgIHI4LCByOCwgTFNSICMxNiAgICAgICAgICAgICAgICAgICBAZXh0cmFjdF9oKHMpCisgICAgICAgIEFERCAgICAgICAgICAgIHIzLCByMywgIzEKKyAgICAgICAgU1RSSCAgICAgICAgICAgcjgsIFtyMl0sICMyICAgICAgICAgICAgICAgICAgICAgIEB5W25dCisKKyAgICAgICAgQUREICAgICAgICAgICAgcjUsIHIzLCAjMSAgICAgICAgICAgICAgICAgICAgICAgIEAgaSA9IG4gKyAxCisgICAgICAgIEFERCAgICAgICAgICAgIHI0LCByMSwgcjMsIExTTCAjMSAgICAgICAgICAgICAgICBAIHRtcEggYWRkcmVzcworICAgICAgICBNT1YgICAgICAgICAgICByNiwgcjAKKyAgICAgICAgTU9WICAgICAgICAgICAgcjgsICMwCisKK0xPT1A0OiAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIENNUCAgICAgICAgICAgIHI1LCAjMAorICAgICAgICBCTEUgICAgICAgICAgICBMNAorCUxEUlNIICAgICAgICAgIHI5LCAgW3I2XSwgIzIgICAgICAgICAgICAgICAgICAgICBAICp0bXBYKysKKwlMRFJTSCAgICAgICAgICByMTAsIFtyNF0sICMtMiAgICAgICAgICAgICAgICAgICAgQCAqdG1wSC0tCisJTERSU0ggICAgICAgICAgcjEyLCBbcjZdLCAjMiAgICAgICAgICAgICAgICAgICAgIEAgKnRtcFgrKworCUxEUlNIICAgICAgICAgIHIxNCwgW3I0XSwgIy0yICAgICAgICAgICAgICAgICAgICBAICp0bXBILS0KKwlNTEEgICAgICAgICAgICByOCwgcjksIHIxMCwgcjgKKwlNTEEgICAgICAgICAgICByOCwgcjEyLCByMTQsIHI4CisJTERSU0ggICAgICAgICAgcjksICBbcjZdLCAjMiAgICAgICAgICAgICAgICAgICAgIEAgKnRtcFgrKworCUxEUlNIICAgICAgICAgIHIxMCwgW3I0XSwgIy0yICAgICAgICAgICAgICAgICAgICBAICp0bXBILS0KKwlMRFJTSCAgICAgICAgICByMTIsIFtyNl0sICMyICAgICAgICAgICAgICAgICAgICAgQCAqdG1wWCsrCisJTERSU0ggICAgICAgICAgcjE0LCBbcjRdLCAjLTIgICAgICAgICAgICAgICAgICAgIEAgKnRtcEgtLQorCU1MQSAgICAgICAgICAgIHI4LCByOSwgcjEwLCByOAorICAgICAgICBTVUJTICAgICAgICAgICByNSwgcjUsICM0IAorCU1MQSAgICAgICAgICAgIHI4LCByMTIsIHIxNCwgcjggICAgICAgIAorICAgICAgICBCICAgICAgICAgICAgICBMT09QNCAgICAKK0w0OiAgICAgICAgICAgICAgICAgIAorICAgICAgICBBREQgICAgICAgICAgICByNSwgcjExLCByOCwgTFNMICMxCisgICAgICAgIE1PViAgICAgICAgICAgIHI1LCByNSwgTFNSICMxNiAgICAgICAgICAgICAgICAgICBAZXh0cmFjdF9oKHMpCisgICAgICAgIEFERCAgICAgICAgICAgIHIzLCByMywgIzEKKyAgICAgICAgU1RSSCAgICAgICAgICAgcjUsIFtyMl0sICMyICAgICAgICAgICAgICAgICAgICAgIEB5W25dCisgICAgICAgIAorICAgICAgICBDTVAgICAgICAgICAgICByMywgIzY0CisgICAgICAgIEJMVCAgICAgICAgICAgIExPT1AKKyAgICAgICAgICAgICAgICAKK0NvbnZvbHZlX2FzbV9lbmQ6IAorIAorICAgICAgICBMRE1GRCAgICAgIHIxMyEsIHtyNCAtIHIxMiwgcjE1fQorICAgIAorICAgICAgICBARU5ERlVOQworICAgICAgICAuRU5ECisKKwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9hc20vQVJNVjVFL2Nvcl9oX3ZlY19vcHQucyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYXNtL0FSTVY1RS9jb3JfaF92ZWNfb3B0LnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQxYjk4NAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYXNtL0FSTVY1RS9jb3JfaF92ZWNfb3B0LnMKQEAgLTAsMCArMSwxNTEgQEAKK0AvKg0KK0AgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCitAICoqDQorQCAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCitAICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCitAICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KK0AgKioNCitAICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCitAICoqDQorQCAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorQCAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KK0AgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorQCAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorQCAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCitAICovDQorQHN0YXRpYyB2b2lkIGNvcl9oX3ZlY18wMTIoDQorQAkJV29yZDE2IGhbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgc2NhbGVkIGltcHVsc2UgcmVzcG9uc2UgICAgICAgICAgICAgICAgICovDQorQAkJV29yZDE2IHZlY1tdLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgc2NhbGVkIHZlY3RvciAoLzgpIHRvIGNvcnJlbGF0ZSB3aXRoIGhbXSAqLw0KK0AJCVdvcmQxNiB0cmFjaywgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIHRyYWNrIHRvIHVzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KK0AJCVdvcmQxNiBzaWduW10sICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIHNpZ24gdmVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KK0AJCVdvcmQxNiBycml4aXhbXVtOQl9QT1NdLCAgICAgICAgICAgICAgLyogKGkpIGNvcnJlbGF0aW9uIG9mIGhbeF0gd2l0aCBoW3hdICAgICAgKi8NCitACQlXb3JkMTYgY29yXzFbXSwgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSByZXN1bHQgb2YgY29ycmVsYXRpb24gKE5CX1BPUyBlbGVtZW50cykgKi8NCitACQlXb3JkMTYgY29yXzJbXSAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSByZXN1bHQgb2YgY29ycmVsYXRpb24gKE5CX1BPUyBlbGVtZW50cykgKi8NCitAKQ0KK0ByMCAtLS0tIGhbXQ0KK0ByMSAtLS0tIHZlY1tdDQorQHIyIC0tLS0gdHJhY2sNCitAcjMgLS0tLSBzaWduW10NCitAcjQgLS0tLSBycml4aXhbXVtOQl9QT1NdDQorQHI1IC0tLS0gY29yXzFbXQ0KK0ByNiAtLS0tIGNvcl8yW10NCisNCisNCisgICAgICAgICAgLnNlY3Rpb24gIC50ZXh0DQorCSAgLmdsb2JhbCAgY29yX2hfdmVjXzAxMl9hc20NCisNCitjb3JfaF92ZWNfMDEyX2FzbToNCisNCisgICAgICAgICBTVE1GRCAgICAgICAgIHIxMyEsIHtyNCAtIHIxMiwgcjE0fQ0KKwkgTERSICAgICAgICAgICByNCwgW3IxMywgIzQwXSAgICAgICAgICAgICAgICAgICAgQGxvYWQgcnJpeGl4W11bTkJfUE9TXQ0KKwkgQUREICAgICAgICAgICByNywgcjQsIHIyLCBMU0wgIzUgICAgICAgICAgICAgICAgQHI3IC0tLSBwMCA9IHJyaXhpeFt0cmFja10NCisgICAgICAgICBNT1YgICAgICAgICAgIHI0LCAjMCAgICAgICAgICAgICAgICAgICAgICAgICAgICBAaT0wDQorDQorCSBAcjAgLS0tIGhbXSwgcjEgLS0tIHZlY1tdLCAgcjIgLS0tIHBvcw0KKwkgQHIzIC0tLSBzaWduW10sIHI0IC0tLSBpLCByNyAtLS0gcDANCitMT09QaToNCisgICAgICAgICBNT1YgICAgICAgICAgIHI1LCAjMCAgICAgICAgICAgICAgICAgICAgICAgICAgICBATF9zdW0xID0gMA0KKyAgICAgICAgIE1PViAgICAgICAgICAgcjYsICMwICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBMX3N1bTIgPSAwDQorICAgICAgICAgQUREICAgICAgICAgICByOSwgcjEsIHIyLCBMU0wgIzEgICAgICAgICAgICAgICAgQHAyID0gJnZlY1twb3NdDQorICAgICAgICAgTU9WICAgICAgICAgICByMTAsIHIwICAgICAgICAgICAgICAgICAgICAgICAgICAgQHAxID0gaA0KKyAgICAgICAgIFJTQiAgICAgICAgICAgcjExLCByMiwgIzYyICAgICAgICAgICAgICAgICAgICAgIEBqPTYyLXBvcw0KKw0KK0xPT1BqMToNCisJIExEUlNIICAgICAgICAgcjEyLCBbcjEwXSwgIzIgIA0KKwkgTERSU0ggICAgICAgICByOCwgIFtyOV0sICMyDQorCSBMRFJTSCAgICAgICAgIHIxNCwgW3I5XQ0KKwkgU1VCUyAgICAgICAgICByMTEsIHIxMSwgIzENCisgICAgICAgICBNTEEgICAgICAgICAgIHI1LCByMTIsIHI4LCByNQ0KKyAgICAgICAgIE1MQSAgICAgICAgICAgcjYsIHIxMiwgcjE0LCByNgkgDQorCSBCR0UgICAgICAgICAgIExPT1BqMQ0KKw0KKwkgTERSU0ggICAgICAgICByMTIsIFtyMTBdLCAjMiAgICAgICAgICAgICAgICAgICAgIEAqcDErKw0KKwkgTU9WICAgICAgICAgICByNiwgcjYsIExTTCAjMiAgICAgICAgICAgICAgICAgICAgIEBMX3N1bTIgPSAoTF9zdW0yIDw8IDIpDQorICAgICAgICAgTUxBICAgICAgICAgICByNSwgcjEyLCByMTQsIHI1DQorICAgICAgICAgTU9WICAgICAgICAgICByMTQsICMweDgwMDANCisgICAgICAgICBNT1YgICAgICAgICAgIHI1LCByNSwgTFNMICMyICAgICAgICAgICAgICAgICAgICAgQExfc3VtMSA9IChMX3N1bTEgPDwgMikNCisgICAgICAgICBBREQgICAgICAgICAgIHIxMCwgcjYsIHIxNCAgICAgICAgIA0KKyAgICAgICAgIEFERCAgICAgICAgICAgcjksIHI1LCByMTQNCisgICAgICAgICBNT1YgICAgICAgICAgIHI1LCByOSwgQVNSICMxNg0KKyAgICAgICAgIE1PViAgICAgICAgICAgcjYsIHIxMCwgQVNSICMxNg0KKyAgICAgICAgIEFERCAgICAgICAgICAgcjksIHIzLCByMiwgTFNMICMxICAgICAgICAgICAgICAgICBAYWRkcmVzcyBvZiBzaWduW3Bvc10NCisgICAgICAgICBBREQgICAgICAgICAgIHI4LCByNywgIzMyDQorICAgICAgICAgTERSU0ggICAgICAgICByMTAsIFtyOV0sICMyICAgICAgICAgICAgICAgICAJICBAc2lnbltwb3NdDQorCSBMRFJTSCAgICAgICAgIHIxMSwgW3I5XSAgICAgICAgICAgICAgICAgICAgICAgICAgQHNpZ25bcG9zICsgMV0NCisJIE1VTCAgICAgICAgICAgcjEyLCByNSwgcjEwDQorCSBNVUwgICAgICAgICAgIHIxNCwgcjYsIHIxMQ0KKwkgTU9WICAgICAgICAgICByNSwgcjEyLCBBU1IgIzE1DQorCSBNT1YgICAgICAgICAgIHI2LCByMTQsIEFTUiAjMTUNCisJIExEUiAgICAgICAgICAgcjksICBbcjEzLCAjNDRdICAgICAgICAgICAgICAgICAgIA0KKwkgTERSICAgICAgICAgICByMTIsIFtyMTMsICM0OF0NCisgICAgICAgICBMRFJTSCAgICAgICAgIHIxMCwgW3I3XSwgIzIgICAgICAgICAgICAgICAgICAgICAgQCpwMCsrDQorCSBMRFJTSCAgICAgICAgIHIxMSwgW3I4XSAgICAgICAgICAgICAgICAgICAgICAgICAgQCpwMysrDQorICAgICAgICAgQUREICAgICAgICAgICByOSwgcjksIHI0LCBMU0wgIzENCisJIEFERCAgICAgICAgICAgcjEyLCByMTIsIHI0LCBMU0wgIzENCisJIEFERCAgICAgICAgICAgcjUsIHI1LCByMTANCisJIEFERCAgICAgICAgICAgcjYsIHI2LCByMTENCisJIFNUUkggICAgICAgICAgcjUsIFtyOV0NCisJIFNUUkggICAgICAgICAgcjYsIFtyMTJdDQorDQorICAgICAgICAgQUREICAgICAgICAgICByMiwgcjIsICM0DQorIA0KKyAgICAgICAgIE1PViAgICAgICAgICAgcjUsICMwICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBMX3N1bTEgPSAwDQorCSBNT1YgICAgICAgICAgIHI2LCAjMCAgICAgICAgICAgICAgICAgICAgICAgICAgICBATF9zdW0yID0gMA0KKwkgQUREICAgICAgICAgICByOSwgcjEsIHIyLCBMU0wgIzEgICAgICAgICAgICAgICAgQHAyID0gJnZlY1twb3NdDQorCSBNT1YgICAgICAgICAgIHIxMCwgcjAgICAgICAgICAgICAgICAgICAgICAgICAgICBAcDEgPSBoDQorCSBSU0IgICAgICAgICAgIHIxMSwgcjIsICM2MiAgICAgICAgICAgICAgICAgICAgICBAaj02Mi1wb3MNCisJIEFERCAgICAgICAgICAgcjQsIHI0LCAjMSAgICAgICAgICAgICAgICAgICAgICAgIEBpKysNCisNCitMT09QajI6DQorCSBMRFJTSCAgICAgICAgIHIxMiwgW3IxMF0sICMyICANCisJIExEUlNIICAgICAgICAgcjgsICBbcjldLCAjMg0KKwkgTERSU0ggICAgICAgICByMTQsIFtyOV0NCisJIFNVQlMgICAgICAgICAgcjExLCByMTEsICMxDQorICAgICAgICAgTUxBICAgICAgICAgICByNSwgcjEyLCByOCwgcjUNCisgICAgICAgICBNTEEgICAgICAgICAgIHI2LCByMTIsIHIxNCwgcjYJIA0KKwkgQkdFICAgICAgICAgICBMT09QajINCisNCisJIExEUlNIICAgICAgICAgcjEyLCBbcjEwXSwgIzIgICAgICAgICAgICAgICAgICAgICBAKnAxKysNCisJIE1PViAgICAgICAgICAgcjYsIHI2LCBMU0wgIzIgICAgICAgICAgICAgICAgICAgICBATF9zdW0yID0gKExfc3VtMiA8PCAyKQ0KKyAgICAgICAgIE1MQSAgICAgICAgICAgcjUsIHIxMiwgcjE0LCByNQ0KKyAgICAgICAgIE1PViAgICAgICAgICAgcjE0LCAjMHg4MDAwDQorICAgICAgICAgTU9WICAgICAgICAgICByNSwgcjUsIExTTCAjMiAgICAgICAgICAgICAgICAgICAgIEBMX3N1bTEgPSAoTF9zdW0xIDw8IDIpDQorICAgICAgICAgQUREICAgICAgICAgICByMTAsIHI2LCByMTQgICAgICAgIA0KKyAgICAgICAgIEFERCAgICAgICAgICAgcjksIHI1LCByMTQNCisNCisgICAgICAgICBNT1YgICAgICAgICAgIHI1LCByOSwgQVNSICMxNg0KKyAgICAgICAgIE1PViAgICAgICAgICAgcjYsIHIxMCwgQVNSICMxNg0KKyAgICAgICAgIEFERCAgICAgICAgICAgcjksIHIzLCByMiwgTFNMICMxICAgICAgICAgICAgICAgICBAYWRkcmVzcyBvZiBzaWduW3Bvc10NCisgICAgICAgICBBREQgICAgICAgICAgIHI4LCByNywgIzMyDQorICAgICAgICAgTERSU0ggICAgICAgICByMTAsIFtyOV0sICMyICAgICAgICAgICAgICAgICAJICBAc2lnbltwb3NdDQorCSBMRFJTSCAgICAgICAgIHIxMSwgW3I5XSAgICAgICAgICAgICAgICAgICAgICAgICAgQHNpZ25bcG9zICsgMV0NCisJIE1VTCAgICAgICAgICAgcjEyLCByNSwgcjEwDQorCSBNVUwgICAgICAgICAgIHIxNCwgcjYsIHIxMQ0KKwkgTU9WICAgICAgICAgICByNSwgcjEyLCBBU1IgIzE1DQorCSBNT1YgICAgICAgICAgIHI2LCByMTQsIEFTUiAjMTUNCisJIExEUiAgICAgICAgICAgcjksICBbcjEzLCAjNDRdICAgICAgICAgICAgICAgICAgIA0KKwkgTERSICAgICAgICAgICByMTIsIFtyMTMsICM0OF0NCisgICAgICAgICBMRFJTSCAgICAgICAgIHIxMCwgW3I3XSwgIzIgICAgICAgICAgICAgICAgICAgICAgQCpwMCsrDQorCSBMRFJTSCAgICAgICAgIHIxMSwgW3I4XSAgICAgICAgICAgICAgICAgICAgICAgICAgQCpwMysrDQorICAgICAgICAgQUREICAgICAgICAgICByOSwgcjksIHI0LCBMU0wgIzENCisJIEFERCAgICAgICAgICAgcjEyLCByMTIsIHI0LCBMU0wgIzENCisJIEFERCAgICAgICAgICAgcjUsIHI1LCByMTANCisJIEFERCAgICAgICAgICAgcjYsIHI2LCByMTENCisJIFNUUkggICAgICAgICAgcjUsIFtyOV0NCisJIFNUUkggICAgICAgICAgcjYsIFtyMTJdDQorCSBBREQgICAgICAgICAgIHI0LCByNCwgIzEgICAgICAgICAgICAgICAgICAgICAgICAgQGkrMQ0KKwkgQUREICAgICAgICAgICByMiwgcjIsICM0ICAgICAgICAgICAgICAgICAgICAgICAgIEBwb3MgKz0gU1RFUA0KKwkgQ01QICAgICAgICAgICByNCwgIzE2DQorCSANCisJIEJMVCAgICAgICAgICAgTE9PUGkNCisgICAgICAgICANCit0aGVfZW5kOg0KKyAgICAgICAgIExETUZEICAgICAgICAgcjEzISwge3I0IC0gcjEyLCByMTV9DQorICAgICAgDQorICAgICAgICAgQEVOREZVTkMNCisgICAgICAgICAuRU5ECSANCisgICAgICAgIA0KKwkNCisJICANCisNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNUUvcHJlZF9sdDRfMV9vcHQucyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYXNtL0FSTVY1RS9wcmVkX2x0NF8xX29wdC5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1ZGQ4ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNUUvcHJlZF9sdDRfMV9vcHQucwpAQCAtMCwwICsxLDQ2MCBAQAorQC8qDQorQCAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KK0AgKioNCitAICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KK0AgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KK0AgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorQCAqKg0KK0AgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KK0AgKioNCitAICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCitAICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorQCAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCitAICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCitAICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KK0AgKi8NCitADQorQHZvaWQgUHJlZF9sdDQoDQorQAkJICBXb3JkMTYgZXhjW10sICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGluL291dDogZXhjaXRhdGlvbiBidWZmZXIgKi8NCitACQkgIFdvcmQxNiBUMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBpbnRlZ2VyIHBpdGNoIGxhZyAqLw0KK0AJCSAgV29yZDE2IGZyYWMsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IGZyYWN0aW9uIG9mIGxhZyAgICovDQorQAkJICBXb3JkMTYgTF9zdWJmciAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogc3ViZnJhbWUgc2l6ZSAgICAgKi8NCitACSAgICAgICkNCisNCitAKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorQCAgICAgICBBUk0gUmVnaXN0ZXINCitAKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorQCByMCAgLS0tICBleGNbXQ0KK0AgcjEgIC0tLSAgVDANCitAIHIyICAtLS0gIGZyYWMNCitAIHIzICAtLS0gIExfc3ViZnINCisNCisgICAgICAgICAuc2VjdGlvbiAgLnRleHQNCisJIC5nbG9iYWwgICBwcmVkX2x0NF9hc20NCisJIC5leHRlcm4gICBpbnRlcjRfMg0KKw0KK3ByZWRfbHQ0X2FzbToNCisNCisgICAgICAgICBTVE1GRCAgICAgcjEzISwge3I0IC0gcjEyLCByMTR9IA0KKyAgICAgICAgIFJTQiAgICAgICByNCwgcjEsICMwICAgICAgICAgICAgICAgICAgICAgICAgIEAtVDANCisgICAgICAgICBSU0IgICAgICAgcjIsIHIyLCAjMCAgICAgICAgICAgICAgICAgICAgICAgICBAZnJhYyA9IC1mcmFjDQorICAgICAgICAgQUREICAgICAgIHI1LCByMCwgcjQsIExTTCAjMSAgICAgICAgICAgICAgICAgQHggPSBleGMgLSBUMA0KKyAgICAgICAgIENNUCAgICAgICByMiwgIzANCisgICAgICAgICBBRERMVCAgICAgcjIsIHIyLCAjNCAgICAgICAgICAgICAgICAgICAgICAgICBAZnJhYyArPSBVUF9TQU1QDQorICAgICAgICAgU1VCTFQgICAgIHI1LCByNSwgIzIgICAgICAgICAgICAgICAgICAgICAgICAgQHgtLQ0KKyAgICAgICAgIFNVQiAgICAgICByNSwgcjUsICMzMCAgICAgICAgICAgICAgICAgICAgICAgIEB4IC09IDE1DQorICAgICAgICAgUlNCICAgICAgIHI0LCByMiwgIzMgICAgICAgICAgICAgICAgICAgICAgICAgQGsgPSAzIC0gZnJhYw0KKyAgICAgICAgIExEUiAgICAgICByNiwgVGFibGUNCisJIE1PViAgICAgICByOCwgcjQsIExTTCAjNiAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgQE1PViAgICAgICByNywgIzAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBqID0gMA0KKyAgICAgICAgIEFERCAgICAgICByOCwgcjYsIHI4ICAgICAgICAgICAgICAgICAgICAgICAgIEBwdHIyID0gJihpbnRlcjRfMltrXVswXSkNCisNCisJIE1PViAgICAgICByMSwgcjUNCisJIE1PViAgICAgICByNSwgIzB4ODAwMA0KKwkgTU9WICAgICAgIHIxNCwgIzIxDQorQCB1c2VkIHJlZ2lzdGVyDQorICAgICAgICAgQHIwIC0tLSBleGNbXSAgcjEgLS0tIHggIHI3IC0tLSBqICByOCAtLS0gcHRyMiAgcjUgLS0tIDB4ODAwMA0KK1RIUkVFX0xPT1A6DQorDQorICAgICAgICAgQE1PViAgICAgICByMSwgcjUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBwdHIxID0geA0KKwkgTU9WICAgICAgIHIyLCByOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQHB0ciA9IHB0cjINCisgICAgICAgICBMRFIgICAgICAgcjMsIFtyMl0sICM0ICAgICAgICAgICAgICAgICAgICAgICBAaFswXSwgaFsxXQ0KKwkgTERSU0ggICAgIHI0LCBbcjFdLCAjMiAgICAgICAgICAgICAgICAgICAgICAgQHhbMF0NCisJIExEUlNIICAgICByNiwgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgICAgIEB4WzFdDQorCSBMRFJTSCAgICAgcjksIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICAgICBAeFsyXQ0KKw0KKwkgU01VTEJCICAgIHIxMCwgcjQsIHIzICAgICAgICAgICAgICAgICAgICAgICAgQHhbMF0gKiBoWzBdICAgICAgICAgICAgICAgICAgDQorCSBTTVVMQkIgICAgcjExLCByNiwgcjMgICAgICAgICAgICAgICAgICAgICAgICBAeFsxXSAqIGhbMF0NCisJIFNNVUxCQiAgICByMTIsIHI5LCByMyAgICAgICAgICAgICAgICAgICAgICAgIEB4WzJdICogaFswXQ0KKw0KKyAgICAgICAgIExEUlNIICAgICByNCwgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgICAgIEB4WzNdDQorCSBTTUxBQlQgICAgcjEwLCByNiwgcjMsIHIxMCAgICAgICAgICAgICAgICAgICBAeFsxXSAqIGhbMV0NCisgICAgICAgICBTTUxBQlQgICAgcjExLCByOSwgcjMsIHIxMSAgICAgICAgICAgICAgICAgICBAeFsyXSAqIGhbMV0NCisJIFNNTEFCVCAgICByMTIsIHI0LCByMywgcjEyICAgICAgICAgICAgICAgICAgIEB4WzNdICogaFsxXQ0KKw0KKwkgTERSICAgICAgIHIzLCBbcjJdLCAjNCAgICAgICAgICAgICAgICAgICAgICAgQGhbMl0sIGhbM10NCisJIExEUlNIICAgICByNiwgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgICAgIEB4WzRdDQorCSBTTUxBQkIgICAgcjEwLCByOSwgcjMsIHIxMCAgICAgICAgICAgICAgICAgICBAeFsyXSAqIGhbMl0NCisgICAgICAgICBTTUxBQkIgICAgcjExLCByNCwgcjMsIHIxMSAgICAgICAgICAgICAgICAgICBAeFszXSAqIGhbMl0NCisgICAgICAgICBTTUxBQkIgICAgcjEyLCByNiwgcjMsIHIxMiAgICAgICAgICAgICAgICAgICBAeFs0XSAqIGhbMl0NCisNCisgICAgICAgICBMRFJTSCAgICAgcjksIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICAgICBAeFs1XQ0KKyAgICAgICAgIFNNTEFCVCAgICByMTAsIHI0LCByMywgcjEwICAgICAgICAgICAgICAgICAgIEB4WzNdICogaFszXQ0KKyAgICAgICAgIFNNTEFCVCAgICByMTEsIHI2LCByMywgcjExICAgICAgICAgICAgICAgICAgIEB4WzRdICogaFszXQ0KKyAgICAgICAgIFNNTEFCVCAgICByMTIsIHI5LCByMywgcjEyICAgICAgICAgICAgICAgICAgIEB4WzVdICogaFszXQ0KKw0KKyAgICAgICAgIExEUiAgICAgICByMywgW3IyXSwgIzQgICAgICAgICAgICAgICAgICAgICAgIEBoWzRdLCBoWzVdDQorICAgICAgICAgTERSU0ggICAgIHI0LCBbcjFdLCAjMiAgICAgICAgICAgICAgICAgICAgICAgQHhbNl0NCisgICAgICAgICBTTUxBQkIgICAgcjEwLCByNiwgcjMsIHIxMCAgICAgICAgICAgICAgICAgICBAeFs0XSAqIGhbNF0NCisgICAgICAgICBTTUxBQkIgICAgcjExLCByOSwgcjMsIHIxMSAgICAgICAgICAgICAgICAgICBAeFs1XSAqIGhbNF0NCisgICAgICAgICBTTUxBQkIgICAgcjEyLCByNCwgcjMsIHIxMiAgICAgICAgICAgICAgICAgICBAeFs2XSAqIGhbNF0NCisNCisJIExEUlNIICAgICByNiwgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgICAgIEB4WzddDQorCSBTTUxBQlQgICAgcjEwLCByOSwgcjMsIHIxMCAgICAgICAgICAgICAgICAgICBAeFs1XSAqIGhbNV0NCisJIFNNTEFCVCAgICByMTEsIHI0LCByMywgcjExICAgICAgICAgICAgICAgICAgIEB4WzZdICogaFs1XQ0KKwkgU01MQUJUICAgIHIxMiwgcjYsIHIzLCByMTIgICAgICAgICAgICAgICAgICAgQHhbN10gKiBoWzVdDQorDQorICAgICAgICAgTERSICAgICAgIHIzLCBbcjJdLCAjNCAgICAgICAgICAgICAgICAgICAgICAgQGhbNl0sIGhbN10NCisJIExEUlNIICAgICByOSwgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgICAgIEB4WzhdDQorCSBTTUxBQkIgICAgcjEwLCByNCwgcjMsIHIxMCAgICAgICAgICAgICAgICAgICBAeFs2XSAqIGhbNl0NCisJIFNNTEFCQiAgICByMTEsIHI2LCByMywgcjExICAgICAgICAgICAgICAgICAgIEB4WzddICogaFs2XQ0KKwkgU01MQUJCICAgIHIxMiwgcjksIHIzLCByMTIgICAgICAgICAgICAgICAgICAgQHhbOF0gKiBoWzZdDQorDQorCSBMRFJTSCAgICAgcjQsIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICAgICBAeFs5XQ0KKwkgU01MQUJUICAgIHIxMCwgcjYsIHIzLCByMTAgICAgICAgICAgICAgICAgICAgQHhbN10gKiBoWzddDQorCSBTTUxBQlQgICAgcjExLCByOSwgcjMsIHIxMSAgICAgICAgICAgICAgICAgICBAeFs4XSAqIGhbN10NCisJIFNNTEFCVCAgICByMTIsIHI0LCByMywgcjEyICAgICAgICAgICAgICAgICAgIEB4WzldICogaFs3XQ0KKw0KKwkgTERSICAgICAgIHIzLCBbcjJdLCAjNCAgICAgICAgICAgICAgICAgICAgICAgQGhbOF0sIGhbOV0NCisJIExEUlNIICAgICByNiwgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgICAgIEB4WzEwXQ0KKwkgU01MQUJCICAgIHIxMCwgcjksIHIzLCByMTAgICAgICAgICAgICAgICAgICAgQHhbOF0gKiBoWzhdDQorCSBTTUxBQkIgICAgcjExLCByNCwgcjMsIHIxMSAgICAgICAgICAgICAgICAgICBAeFs5XSAqIGhbOF0NCisJIFNNTEFCQiAgICByMTIsIHI2LCByMywgcjEyICAgICAgICAgICAgICAgICAgIEB4WzEwXSAqIGhbOF0NCisNCisJIExEUlNIICAgICByOSwgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgICAgIEB4WzExXQ0KKwkgU01MQUJUICAgIHIxMCwgcjQsIHIzLCByMTAgICAgICAgICAgICAgICAgICAgQHhbOV0gKiBoWzldDQorCSBTTUxBQlQgICAgcjExLCByNiwgcjMsIHIxMSAgICAgICAgICAgICAgICAgICBAeFsxMF0gKiBoWzldDQorCSBTTUxBQlQgICAgcjEyLCByOSwgcjMsIHIxMiAgICAgICAgICAgICAgICAgICBAeFsxMV0gKiBoWzldDQorDQorICAgICAgICAgTERSICAgICAgIHIzLCBbcjJdLCAjNCAgICAgICAgICAgICAgICAgICAgICAgQGhbMTBdLCBoWzExXQ0KKwkgTERSU0ggICAgIHI0LCBbcjFdLCAjMiAgICAgICAgICAgICAgICAgICAgICAgQHhbMTJdDQorICAgICAgICAgU01MQUJCICAgIHIxMCwgcjYsIHIzLCByMTAgICAgICAgICAgICAgICAgICAgQHhbMTBdICogaFsxMF0NCisJIFNNTEFCQiAgICByMTEsIHI5LCByMywgcjExICAgICAgICAgICAgICAgICAgIEB4WzExXSAqIGhbMTBdDQorCSBTTUxBQkIgICAgcjEyLCByNCwgcjMsIHIxMiAgICAgICAgICAgICAgICAgICBAeFsxMl0gKiBoWzEwXQ0KKw0KKwkgTERSU0ggICAgIHI2LCBbcjFdLCAjMiAgICAgICAgICAgICAgICAgICAgICAgQHhbMTNdDQorCSBTTUxBQlQgICAgcjEwLCByOSwgcjMsIHIxMCAgICAgICAgICAgICAgICAgICBAeFsxMV0gKiBoWzExXQ0KKwkgU01MQUJUICAgIHIxMSwgcjQsIHIzLCByMTEgICAgICAgICAgICAgICAgICAgQHhbMTJdICogaFsxMV0NCisJIFNNTEFCVCAgICByMTIsIHI2LCByMywgcjEyICAgICAgICAgICAgICAgICAgIEB4WzEzXSAqIGhbMTFdDQorDQorCSBMRFIgICAgICAgcjMsIFtyMl0sICM0ICAgICAgICAgICAgICAgICAgICAgICBAaFsxMl0sIGhbMTNdDQorCSBMRFJTSCAgICAgcjksIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICAgICBAeFsxNF0NCisJIFNNTEFCQiAgICByMTAsIHI0LCByMywgcjEwICAgICAgICAgICAgICAgICAgIEB4WzEyXSAqIGhbMTJdDQorCSBTTUxBQkIgICAgcjExLCByNiwgcjMsIHIxMSAgICAgICAgICAgICAgICAgICBAeFsxM10gKiBoWzEyXQ0KKwkgU01MQUJCICAgIHIxMiwgcjksIHIzLCByMTIgICAgICAgICAgICAgICAgICAgQHhbMTRdICogaFsxMl0NCisNCisJIExEUlNIICAgICByNCwgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgICAgIEB4WzE1XQ0KKwkgU01MQUJUICAgIHIxMCwgcjYsIHIzLCByMTAgICAgICAgICAgICAgICAgICAgQHhbMTNdICogaFsxM10NCisJIFNNTEFCVCAgICByMTEsIHI5LCByMywgcjExICAgICAgICAgICAgICAgICAgIEB4WzE0XSAqIGhbMTNdDQorCSBTTUxBQlQgICAgcjEyLCByNCwgcjMsIHIxMiAgICAgICAgICAgICAgICAgICBAeFsxNV0gKiBoWzEzXQ0KKw0KKwkgTERSICAgICAgIHIzLCBbcjJdLCAjNCAgICAgICAgICAgICAgICAgICAgICAgQGhbMTRdLCBoWzE1XQ0KKwkgTERSU0ggICAgIHI2LCBbcjFdLCAjMiAgICAgICAgICAgICAgICAgICAgICAgQHhbMTZdDQorCSBTTUxBQkIgICAgcjEwLCByOSwgcjMsIHIxMCAgICAgICAgICAgICAgICAgICBAeFsxNF0gKiBoWzE0XQ0KKwkgU01MQUJCICAgIHIxMSwgcjQsIHIzLCByMTEgICAgICAgICAgICAgICAgICAgQHhbMTVdICogaFsxNF0NCisJIFNNTEFCQiAgICByMTIsIHI2LCByMywgcjEyICAgICAgICAgICAgICAgICAgIEB4WzE2XSAqIGhbMTRdDQorDQorCSBMRFJTSCAgICAgcjksIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICAgICBAeFsxN10NCisgICAgICAgICBTTUxBQlQgICAgcjEwLCByNCwgcjMsIHIxMCAgICAgICAgICAgICAgICAgICBAeFsxNV0gKiBoWzE1XQ0KKwkgU01MQUJUICAgIHIxMSwgcjYsIHIzLCByMTEgICAgICAgICAgICAgICAgICAgQHhbMTZdICogaFsxNV0NCisJIFNNTEFCVCAgICByMTIsIHI5LCByMywgcjEyICAgICAgICAgICAgICAgICAgIEB4WzE3XSAqIGhbMTVdDQorDQorCSBMRFIgICAgICAgcjMsIFtyMl0sICM0ICAgICAgICAgICAgICAgICAgICAgICBAaFsxNl0sIGhbMTddDQorCSBMRFJTSCAgICAgcjQsIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICAgICBAeFsxOF0NCisJIFNNTEFCQiAgICByMTAsIHI2LCByMywgcjEwICAgICAgICAgICAgICAgICAgIEB4WzE2XSAqIGhbMTZdDQorCSBTTUxBQkIgICAgcjExLCByOSwgcjMsIHIxMSAgICAgICAgICAgICAgICAgICBAeFsxN10gKiBoWzE2XQ0KKwkgU01MQUJCICAgIHIxMiwgcjQsIHIzLCByMTIgICAgICAgICAgICAgICAgICAgQHhbMThdICogaFsxNl0NCisNCisgICAgICAgICBMRFJTSCAgICAgcjYsIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICAgICBAeFsxOV0NCisJIFNNTEFCVCAgICByMTAsIHI5LCByMywgcjEwICAgICAgICAgICAgICAgICAgIEB4WzE3XSAqIGhbMTddDQorCSBTTUxBQlQgICAgcjExLCByNCwgcjMsIHIxMSAgICAgICAgICAgICAgICAgICBAeFsxOF0gKiBoWzE3XQ0KKwkgU01MQUJUICAgIHIxMiwgcjYsIHIzLCByMTIgICAgICAgICAgICAgICAgICAgQHhbMTldICogaFsxN10NCisNCisJIExEUiAgICAgICByMywgW3IyXSwgIzQgICAgICAgICAgICAgICAgICAgICAgIEBoWzE4XSwgaFsxOV0NCisgICAgICAgICBMRFJTSCAgICAgcjksIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICAgICBAeFsyMF0NCisJIFNNTEFCQiAgICByMTAsIHI0LCByMywgcjEwICAgICAgICAgICAgICAgICAgIEB4WzE4XSAqIGhbMThdDQorCSBTTUxBQkIgICAgcjExLCByNiwgcjMsIHIxMSAgICAgICAgICAgICAgICAgICBAeFsxOV0gKiBoWzE4XQ0KKwkgU01MQUJCICAgIHIxMiwgcjksIHIzLCByMTIgICAgICAgICAgICAgICAgICAgQHhbMjBdICogaFsxOF0NCisNCisJIExEUlNIICAgICByNCwgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgICAgIEB4WzIxXQ0KKwkgU01MQUJUICAgIHIxMCwgcjYsIHIzLCByMTAgICAgICAgICAgICAgICAgICAgQHhbMTldICogaFsxOV0NCisJIFNNTEFCVCAgICByMTEsIHI5LCByMywgcjExICAgICAgICAgICAgICAgICAgIEB4WzIwXSAqIGhbMTldDQorCSBTTUxBQlQgICAgcjEyLCByNCwgcjMsIHIxMiAgICAgICAgICAgICAgICAgICBAeFsyMV0gKiBoWzE5XQ0KKw0KKwkgTERSICAgICAgIHIzLCBbcjJdLCAjNCAgICAgICAgICAgICAgICAgICAgICAgQGhbMjBdLCBoWzIxXQ0KKwkgTERSU0ggICAgIHI2LCBbcjFdLCAjMiAgICAgICAgICAgICAgICAgICAgICAgQHhbMjJdDQorCSBTTUxBQkIgICAgcjEwLCByOSwgcjMsIHIxMCAgICAgICAgICAgICAgICAgICBAeFsyMF0gKiBoWzIwXQ0KKwkgU01MQUJCICAgIHIxMSwgcjQsIHIzLCByMTEgICAgICAgICAgICAgICAgICAgQHhbMjFdICogaFsyMF0NCisJIFNNTEFCQiAgICByMTIsIHI2LCByMywgcjEyICAgICAgICAgICAgICAgICAgIEB4WzIyXSAqIGhbMjBdDQorDQorCSBMRFJTSCAgICAgcjksIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICAgICBAeFsyM10NCisJIFNNTEFCVCAgICByMTAsIHI0LCByMywgcjEwICAgICAgICAgICAgICAgICAgIEB4WzIxXSAqIGhbMjFdDQorCSBTTUxBQlQgICAgcjExLCByNiwgcjMsIHIxMSAgICAgICAgICAgICAgICAgICBAeFsyMl0gKiBoWzIxXQ0KKwkgU01MQUJUICAgIHIxMiwgcjksIHIzLCByMTIgICAgICAgICAgICAgICAgICAgQHhbMjNdICogaFsyMV0NCisNCisJIExEUiAgICAgICByMywgW3IyXSwgIzQgICAgICAgICAgICAgICAgICAgICAgIEBoWzIyXSwgaFsyM10NCisJIExEUlNIICAgICByNCwgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgICAgIEB4WzI0XQ0KKwkgU01MQUJCICAgIHIxMCwgcjYsIHIzLCByMTAgICAgICAgICAgICAgICAgICAgQHhbMjJdICogaFsyMl0NCisJIFNNTEFCQiAgICByMTEsIHI5LCByMywgcjExICAgICAgICAgICAgICAgICAgIEB4WzIzXSAqIGhbMjJdDQorCSBTTUxBQkIgICAgcjEyLCByNCwgcjMsIHIxMiAgICAgICAgICAgICAgICAgICBAeFsyNF0gKiBoWzIyXQ0KKw0KKyAgICAgICAgIExEUlNIICAgICByNiwgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgICAgIEB4WzI1XQ0KKwkgU01MQUJUICAgIHIxMCwgcjksIHIzLCByMTAgICAgICAgICAgICAgICAgICAgQHhbMjNdICogaFsyM10NCisJIFNNTEFCVCAgICByMTEsIHI0LCByMywgcjExICAgICAgICAgICAgICAgICAgIEB4WzI0XSAqIGhbMjNdDQorCSBTTUxBQlQgICAgcjEyLCByNiwgcjMsIHIxMiAgICAgICAgICAgICAgICAgICBAeFsyNV0gKiBoWzIzXQ0KKw0KKwkgTERSICAgICAgIHIzLCBbcjJdLCAjNCAgICAgICAgICAgICAgICAgICAgICAgQGhbMjRdLCBoWzI1XQ0KKyAgICAgICAgIExEUlNIICAgICByOSwgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgICAgIEB4WzI2XQ0KKwkgU01MQUJCICAgIHIxMCwgcjQsIHIzLCByMTAgICAgICAgICAgICAgICAgICAgQHhbMjRdICogaFsyNF0NCisJIFNNTEFCQiAgICByMTEsIHI2LCByMywgcjExICAgICAgICAgICAgICAgICAgIEB4WzI1XSAqIGhbMjRdDQorCSBTTUxBQkIgICAgcjEyLCByOSwgcjMsIHIxMiAgICAgICAgICAgICAgICAgICBAeFsyNl0gKiBoWzI0XQ0KKw0KKwkgTERSU0ggICAgIHI0LCBbcjFdLCAjMiAgICAgICAgICAgICAgICAgICAgICAgQHhbMjddDQorCSBTTUxBQlQgICAgcjEwLCByNiwgcjMsIHIxMCAgICAgICAgICAgICAgICAgICBAeFsyNV0gKiBoWzI1XQ0KKwkgU01MQUJUICAgIHIxMSwgcjksIHIzLCByMTEgICAgICAgICAgICAgICAgICAgQHhbMjZdICogaFsyNV0NCisJIFNNTEFCVCAgICByMTIsIHI0LCByMywgcjEyICAgICAgICAgICAgICAgICAgIEB4WzI3XSAqIGhbMjVdDQorDQorCSBMRFIgICAgICAgcjMsIFtyMl0sICM0ICAgICAgICAgICAgICAgICAgICAgICBAaFsyNl0sIGhbMjddDQorCSBMRFJTSCAgICAgcjYsIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICAgICBAeFsyOF0NCisJIFNNTEFCQiAgICByMTAsIHI5LCByMywgcjEwICAgICAgICAgICAgICAgICAgIEB4WzI2XSAqIGhbMjZdDQorCSBTTUxBQkIgICAgcjExLCByNCwgcjMsIHIxMSAgICAgICAgICAgICAgICAgICBAeFsyN10gKiBoWzI2XQ0KKwkgU01MQUJCICAgIHIxMiwgcjYsIHIzLCByMTIgICAgICAgICAgICAgICAgICAgQHhbMjhdICogaFsyNl0NCisNCisJIExEUlNIICAgICByOSwgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgICAgIEB4WzI5XQ0KKwkgU01MQUJUICAgIHIxMCwgcjQsIHIzLCByMTAgICAgICAgICAgICAgICAgICAgQHhbMjddICogaFsyN10NCisJIFNNTEFCVCAgICByMTEsIHI2LCByMywgcjExICAgICAgICAgICAgICAgICAgIEB4WzI4XSAqIGhbMjddDQorCSBTTUxBQlQgICAgcjEyLCByOSwgcjMsIHIxMiAgICAgICAgICAgICAgICAgICBAeFsyOV0gKiBoWzI3XQ0KKw0KKwkgTERSICAgICAgIHIzLCBbcjJdLCAjNCAgICAgICAgICAgICAgICAgICAgICAgQGhbMjhdLCBoWzI5XQ0KKwkgTERSU0ggICAgIHI0LCBbcjFdLCAjMiAgICAgICAgICAgICAgICAgICAgICAgQHhbMzBdDQorCSBTTUxBQkIgICAgcjEwLCByNiwgcjMsIHIxMCAgICAgICAgICAgICAgICAgICBAeFsyOF0gKiBoWzI4XQ0KKwkgU01MQUJCICAgIHIxMSwgcjksIHIzLCByMTEgICAgICAgICAgICAgICAgICAgQHhbMjldICogaFsyOF0NCisJIFNNTEFCQiAgICByMTIsIHI0LCByMywgcjEyICAgICAgICAgICAgICAgICAgIEB4WzMwXSAqIGhbMjhdDQorDQorICAgICAgICAgTERSU0ggICAgIHI2LCBbcjFdLCAjMiAgICAgICAgICAgICAgICAgICAgICAgQHhbMzFdDQorCSBTTUxBQlQgICAgcjEwLCByOSwgcjMsIHIxMCAgICAgICAgICAgICAgICAgICBAeFsyOV0gKiBoWzI5XQ0KKwkgU01MQUJUICAgIHIxMSwgcjQsIHIzLCByMTEgICAgICAgICAgICAgICAgICAgQHhbMzBdICogaFsyOV0NCisJIFNNTEFCVCAgICByMTIsIHI2LCByMywgcjEyICAgICAgICAgICAgICAgICAgIEB4WzMxXSAqIGhbMjldDQorDQorCSBMRFIgICAgICAgcjMsIFtyMl0sICM0ICAgICAgICAgICAgICAgICAgICAgICBAaFszMF0sIGhbMzFdDQorICAgICAgICAgTERSU0ggICAgIHI5LCBbcjFdLCAjMiAgICAgICAgICAgICAgICAgICAgICAgQHhbMzJdDQorCSBTTUxBQkIgICAgcjEwLCByNCwgcjMsIHIxMCAgICAgICAgICAgICAgICAgICBAeFszMF0gKiBoWzMwXQ0KKwkgU01MQUJCICAgIHIxMSwgcjYsIHIzLCByMTEgICAgICAgICAgICAgICAgICAgQHhbMzFdICogaFszMF0NCisJIFNNTEFCQiAgICByMTIsIHI5LCByMywgcjEyICAgICAgICAgICAgICAgICAgIEB4WzMyXSAqIGhbMzBdDQorDQorCSBMRFJTSCAgICAgcjQsIFtyMV0sICMtNjAgICAgICAgICAgICAgICAgICAgICBAeFszM10NCisJIFNNTEFCVCAgICByMTAsIHI2LCByMywgcjEwICAgICAgICAgICAgICAgICAgIEB4WzMxXSAqIGhbMzFdDQorCSBTTUxBQlQgICAgcjExLCByOSwgcjMsIHIxMSAgICAgICAgICAgICAgICAgICBAeFszMl0gKiBoWzMxXQ0KKwkgU01MQUJUICAgIHIxMiwgcjQsIHIzLCByMTIgICAgICAgICAgICAgICAgICAgQHhbMzNdICogaFszMV0NCisNCisJIEBTU0FUICAgICAgcjEwLCAjMzIsIHIxMCwgTFNMICMyDQorCSBAU1NBVCAgICAgIHIxMSwgIzMyLCByMTEsIExTTCAjMg0KKwkgQFNTQVQgICAgICByMTIsICMzMiwgcjEyLCBMU0wgIzINCisNCisJIE1PViAgICAgICByMTAsIHIxMCwgTFNMICMxDQorCSBNT1YgICAgICAgcjExLCByMTEsIExTTCAjMQ0KKwkgTU9WICAgICAgIHIxMiwgcjEyLCBMU0wgIzENCisNCisJIFFBREQgICAgICByMTAsIHIxMCwgcjEwDQorCSBRQUREICAgICAgcjExLCByMTEsIHIxMQ0KKwkgUUFERCAgICAgIHIxMiwgcjEyLCByMTINCisNCisJIFFBREQgICAgICByMTAsIHIxMCwgcjUNCisJIFFBREQgICAgICByMTEsIHIxMSwgcjUNCisJIFFBREQgICAgICByMTIsIHIxMiwgcjUNCisNCisJIFNVQlMgICAgICByMTQsIHIxNCwgIzENCisNCisJIE1PViAgICAgICByMTAsIHIxMCwgQVNSICMxNg0KKwkgTU9WICAgICAgIHIxMSwgcjExLCBBU1IgIzE2DQorCSBNT1YgICAgICAgcjEyLCByMTIsIEFTUiAjMTYNCisNCisJIFNUUkggICAgICByMTAsIFtyMF0sICMyDQorCSBTVFJIICAgICAgcjExLCBbcjBdLCAjMg0KKwkgU1RSSCAgICAgIHIxMiwgW3IwXSwgIzINCisJIEJORSAgICAgICBUSFJFRV9MT09QDQorDQorCSBNT1YgICAgICAgcjIsIHI4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAcHRyID0gcHRyMg0KKw0KK0xhc3QyTE9PUDoNCisNCisgICAgICAgICBMRFIgICAgICAgcjMsIFtyMl0sICM0ICAgICAgICAgICAgICAgICAgICAgICBAaFswXSwgaFsxXQ0KKwkgTERSU0ggICAgIHI0LCBbcjFdLCAjMiAgICAgICAgICAgICAgICAgICAgICAgQHhbMF0NCisJIExEUlNIICAgICByNiwgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgICAgIEB4WzFdDQorCSBMRFJTSCAgICAgcjksIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICAgICBAeFsyXQ0KKw0KKwkgU01VTEJCICAgIHIxMCwgcjQsIHIzICAgICAgICAgICAgICAgICAgICAgICAgQHhbMF0gKiBoWzBdDQorCSBTTVVMQkIgICAgcjExLCByNiwgcjMgICAgICAgICAgICAgICAgICAgICAgICBAeFsxXSAqIGhbMF0NCisNCisJIFNNTEFCVCAgICByMTAsIHI2LCByMywgcjEwICAgICAgICAgICAgICAgICAgIEB4WzFdICogaFsxXQ0KKwkgU01MQUJUICAgIHIxMSwgcjksIHIzLCByMTEgICAgICAgICAgICAgICAgICAgQHhbMl0gKiBoWzFdDQorDQorCSBMRFIgICAgICAgcjMsIFtyMl0sICM0ICAgICAgICAgICAgICAgICAgICAgICBAaFsyXSwgaFszXQ0KKwkgTERSU0ggICAgIHI0LCBbcjFdLCAjMiAgICAgICAgICAgICAgICAgICAgICAgQHhbM10NCisgICAgICAgICBMRFJTSCAgICAgcjYsIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICAgICBAeFs0XQ0KKw0KKwkgU01MQUJCICAgIHIxMCwgcjksIHIzLCByMTAgICAgICAgICAgICAgICAgICAgQHhbMl0gKiBoWzJdDQorICAgICAgICAgU01MQUJCICAgIHIxMSwgcjQsIHIzLCByMTEgICAgICAgICAgICAgICAgICAgQHhbM10gKiBoWzJdDQorICAgICAgDQorCSBTTUxBQlQgICAgcjEwLCByNCwgcjMsIHIxMCAgICAgICAgICAgICAgICAgICBAeFszXSAqIGhbM10NCisJIFNNTEFCVCAgICByMTEsIHI2LCByMywgcjExICAgICAgICAgICAgICAgICAgIEB4WzRdICogaFszXQ0KKw0KKwkgTERSICAgICAgIHIzLCBbcjJdLCAjNCAgICAgICAgICAgICAgICAgICAgICAgQGhbNF0sIGhbNV0NCisJIExEUlNIICAgICByOSwgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgICAgIEB4WzVdDQorCSBMRFJTSCAgICAgcjQsIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICAgICBAeFs2XQ0KKw0KKwkgU01MQUJCICAgIHIxMCwgcjYsIHIzLCByMTAgICAgICAgICAgICAgICAgICAgQHhbNF0gKiBoWzRdDQorCSBTTUxBQkIgICAgcjExLCByOSwgcjMsIHIxMSAgICAgICAgICAgICAgICAgICBAeFs1XSAqIGhbNF0NCisNCisJIFNNTEFCVCAgICByMTAsIHI5LCByMywgcjEwICAgICAgICAgICAgICAgICAgIEB4WzVdICogaFs1XQ0KKwkgU01MQUJUICAgIHIxMSwgcjQsIHIzLCByMTEgICAgICAgICAgICAgICAgICAgQHhbNl0gKiBoWzVdDQorDQorCSBMRFIgICAgICAgcjMsIFtyMl0sICM0ICAgICAgICAgICAgICAgICAgICAgICBAaFs2XSwgaFs3XQ0KKwkgTERSU0ggICAgIHI2LCBbcjFdLCAjMiAgICAgICAgICAgICAgICAgICAgICAgQHhbN10NCisJIExEUlNIICAgICByOSwgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgICAgIEB4WzhdDQorDQorCSBTTUxBQkIgICAgcjEwLCByNCwgcjMsIHIxMCAgICAgICAgICAgICAgICAgICBAeFs2XSAqIGhbNl0NCisJIFNNTEFCQiAgICByMTEsIHI2LCByMywgcjExICAgICAgICAgICAgICAgICAgIEB4WzddICogaFs2XQ0KKw0KKwkgU01MQUJUICAgIHIxMCwgcjYsIHIzLCByMTAgICAgICAgICAgICAgICAgICAgQHhbN10gKiBoWzddDQorCSBTTUxBQlQgICAgcjExLCByOSwgcjMsIHIxMSAgICAgICAgICAgICAgICAgICBAeFs4XSAqIGhbN10NCisNCisJIExEUiAgICAgICByMywgW3IyXSwgIzQgICAgICAgICAgICAgICAgICAgICAgIEBoWzhdLCBoWzldDQorCSBMRFJTSCAgICAgcjQsIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICAgICBAeFs5XQ0KKwkgTERSU0ggICAgIHI2LCBbcjFdLCAjMiAgICAgICAgICAgICAgICAgICAgICAgQHhbMTBdDQorDQorCSBTTUxBQkIgICAgcjEwLCByOSwgcjMsIHIxMCAgICAgICAgICAgICAgICAgICBAeFs4XSAqIGhbOF0NCisJIFNNTEFCQiAgICByMTEsIHI0LCByMywgcjExICAgICAgICAgICAgICAgICAgIEB4WzldICogaFs4XQ0KKw0KKwkgU01MQUJUICAgIHIxMCwgcjQsIHIzLCByMTAgICAgICAgICAgICAgICAgICAgQHhbOV0gKiBoWzldDQorCSBTTUxBQlQgICAgcjExLCByNiwgcjMsIHIxMSAgICAgICAgICAgICAgICAgICBAeFsxMF0gKiBoWzldDQorDQorCSBMRFIgICAgICAgcjMsIFtyMl0sICM0ICAgICAgICAgICAgICAgICAgICAgICBAaFsxMF0sIGhbMTFdDQorCSBMRFJTSCAgICAgcjksIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICAgICBAeFsxMV0NCisJIExEUlNIICAgICByNCwgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgICAgIEB4WzEyXQ0KKw0KKwkgU01MQUJCICAgIHIxMCwgcjYsIHIzLCByMTAgICAgICAgICAgICAgICAgICAgQHhbMTBdICogaFsxMF0NCisJIFNNTEFCQiAgICByMTEsIHI5LCByMywgcjExICAgICAgICAgICAgICAgICAgIEB4WzExXSAqIGhbMTBdDQorDQorCSBTTUxBQlQgICAgcjEwLCByOSwgcjMsIHIxMCAgICAgICAgICAgICAgICAgICBAeFsxMV0gKiBoWzExXQ0KKwkgU01MQUJUICAgIHIxMSwgcjQsIHIzLCByMTEgICAgICAgICAgICAgICAgICAgQHhbMTJdICogaFsxMV0NCisNCisJIExEUiAgICAgICByMywgW3IyXSwgIzQgICAgICAgICAgICAgICAgICAgICAgIEBoWzEyXSwgaFsxM10NCisJIExEUlNIICAgICByNiwgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgICAgIEB4WzEzXQ0KKwkgTERSU0ggICAgIHI5LCBbcjFdLCAjMiAgICAgICAgICAgICAgICAgICAgICAgQHhbMTRdDQorDQorCSBTTUxBQkIgICAgcjEwLCByNCwgcjMsIHIxMCAgICAgICAgICAgICAgICAgICBAeFsxMl0gKiBoWzEyXQ0KKwkgU01MQUJCICAgIHIxMSwgcjYsIHIzLCByMTEgICAgICAgICAgICAgICAgICAgQHhbMTNdICogaFsxMl0NCisNCisJIFNNTEFCVCAgICByMTAsIHI2LCByMywgcjEwICAgICAgICAgICAgICAgICAgIEB4WzEzXSAqIGhbMTNdDQorCSBTTUxBQlQgICAgcjExLCByOSwgcjMsIHIxMSAgICAgICAgICAgICAgICAgICBAeFsxNF0gKiBoWzEzXQ0KKw0KKwkgTERSICAgICAgIHIzLCBbcjJdLCAjNCAgICAgICAgICAgICAgICAgICAgICAgQGhbMTRdLCBoWzE1XQ0KKwkgTERSU0ggICAgIHI0LCBbcjFdLCAjMiAgICAgICAgICAgICAgICAgICAgICAgQHhbMTVdDQorCSBMRFJTSCAgICAgcjYsIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICAgICBAeFsxNl0NCisNCisJIFNNTEFCQiAgICByMTAsIHI5LCByMywgcjEwICAgICAgICAgICAgICAgICAgIEB4WzE0XSAqIGhbMTRdDQorCSBTTUxBQkIgICAgcjExLCByNCwgcjMsIHIxMSAgICAgICAgICAgICAgICAgICBAeFsxNV0gKiBoWzE0XQ0KKw0KKwkgU01MQUJUICAgIHIxMCwgcjQsIHIzLCByMTAgICAgICAgICAgICAgICAgICAgQHhbMTVdICogaFsxNV0NCisJIFNNTEFCVCAgICByMTEsIHI2LCByMywgcjExICAgICAgICAgICAgICAgICAgIEB4WzE2XSAqIGhbMTVdDQorDQorCSBMRFIgICAgICAgcjMsIFtyMl0sICM0ICAgICAgICAgICAgICAgICAgICAgICBAaFsxNl0sIGhbMTddDQorCSBMRFJTSCAgICAgcjksIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICAgICBAeFsxN10NCisJIExEUlNIICAgICByNCwgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgICAgIEB4WzE4XQ0KKw0KKwkgU01MQUJCICAgIHIxMCwgcjYsIHIzLCByMTAgICAgICAgICAgICAgICAgICAgQHhbMTZdICogaFsxNl0NCisJIFNNTEFCQiAgICByMTEsIHI5LCByMywgcjExICAgICAgICAgICAgICAgICAgIEB4WzE3XSAqIGhbMTZdDQorDQorCSBTTUxBQlQgICAgcjEwLCByOSwgcjMsIHIxMCAgICAgICAgICAgICAgICAgICBAeFsxN10gKiBoWzE3XQ0KKwkgU01MQUJUICAgIHIxMSwgcjQsIHIzLCByMTEgICAgICAgICAgICAgICAgICAgQHhbMThdICogaFsxN10NCisNCisJIExEUiAgICAgICByMywgW3IyXSwgIzQgICAgICAgICAgICAgICAgICAgICAgIEBoWzE4XSwgaFsxOV0NCisJIExEUlNIICAgICByNiwgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgICAgIEB4WzE5XQ0KKwkgTERSU0ggICAgIHI5LCBbcjFdLCAjMiAgICAgICAgICAgICAgICAgICAgICAgQHhbMjBdDQorDQorCSBTTUxBQkIgICAgcjEwLCByNCwgcjMsIHIxMCAgICAgICAgICAgICAgICAgICBAeFsxOF0gKiBoWzE4XQ0KKwkgU01MQUJCICAgIHIxMSwgcjYsIHIzLCByMTEgICAgICAgICAgICAgICAgICAgQHhbMTldICogaFsxOF0NCisNCisJIFNNTEFCVCAgICByMTAsIHI2LCByMywgcjEwICAgICAgICAgICAgICAgICAgIEB4WzE5XSAqIGhbMTldDQorCSBTTUxBQlQgICAgcjExLCByOSwgcjMsIHIxMSAgICAgICAgICAgICAgICAgICBAeFsyMF0gKiBoWzE5XQ0KKw0KKwkgTERSICAgICAgIHIzLCBbcjJdLCAjNCAgICAgICAgICAgICAgICAgICAgICAgQGhbMjBdLCBoWzIxXQ0KKwkgTERSU0ggICAgIHI0LCBbcjFdLCAjMiAgICAgICAgICAgICAgICAgICAgICAgQHhbMjFdDQorCSBMRFJTSCAgICAgcjYsIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICAgICBAeFsyMl0NCisNCisJIFNNTEFCQiAgICByMTAsIHI5LCByMywgcjEwICAgICAgICAgICAgICAgICAgIEB4WzIwXSAqIGhbMjBdDQorCSBTTUxBQkIgICAgcjExLCByNCwgcjMsIHIxMSAgICAgICAgICAgICAgICAgICBAeFsyMV0gKiBoWzIwXQ0KKw0KKwkgU01MQUJUICAgIHIxMCwgcjQsIHIzLCByMTAgICAgICAgICAgICAgICAgICAgQHhbMjFdICogaFsyMV0NCisJIFNNTEFCVCAgICByMTEsIHI2LCByMywgcjExICAgICAgICAgICAgICAgICAgIEB4WzIyXSAqIGhbMjFdDQorDQorCSBMRFIgICAgICAgcjMsIFtyMl0sICM0ICAgICAgICAgICAgICAgICAgICAgICBAaFsyMl0sIGhbMjNdDQorCSBMRFJTSCAgICAgcjksIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICAgICBAeFsyM10NCisJIExEUlNIICAgICByNCwgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgICAgIEB4WzI0XQ0KKw0KKwkgU01MQUJCICAgIHIxMCwgcjYsIHIzLCByMTAgICAgICAgICAgICAgICAgICAgQHhbMjJdICogaFsyMl0NCisJIFNNTEFCQiAgICByMTEsIHI5LCByMywgcjExICAgICAgICAgICAgICAgICAgIEB4WzIzXSAqIGhbMjJdDQorDQorCSBTTUxBQlQgICAgcjEwLCByOSwgcjMsIHIxMCAgICAgICAgICAgICAgICAgICBAeFsyM10gKiBoWzIzXQ0KKwkgU01MQUJUICAgIHIxMSwgcjQsIHIzLCByMTEgICAgICAgICAgICAgICAgICAgQHhbMjRdICogaFsyM10NCisNCisJIExEUiAgICAgICByMywgW3IyXSwgIzQgICAgICAgICAgICAgICAgICAgICAgIEBoWzI0XSwgaFsyNV0NCisJIExEUlNIICAgICByNiwgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgICAgIEB4WzI1XQ0KKwkgTERSU0ggICAgIHI5LCBbcjFdLCAjMiAgICAgICAgICAgICAgICAgICAgICAgQHhbMjZdDQorDQorCSBTTUxBQkIgICAgcjEwLCByNCwgcjMsIHIxMCAgICAgICAgICAgICAgICAgICBAeFsyNF0gKiBoWzI0XQ0KKwkgU01MQUJCICAgIHIxMSwgcjYsIHIzLCByMTEgICAgICAgICAgICAgICAgICAgQHhbMjVdICogaFsyNF0NCisNCisJIFNNTEFCVCAgICByMTAsIHI2LCByMywgcjEwICAgICAgICAgICAgICAgICAgIEB4WzI1XSAqIGhbMjVdDQorCSBTTUxBQlQgICAgcjExLCByOSwgcjMsIHIxMSAgICAgICAgICAgICAgICAgICBAeFsyNl0gKiBoWzI1XQ0KKw0KKwkgTERSICAgICAgIHIzLCBbcjJdLCAjNCAgICAgICAgICAgICAgICAgICAgICAgQGhbMjZdLCBoWzI3XQ0KKwkgTERSU0ggICAgIHI0LCBbcjFdLCAjMiAgICAgICAgICAgICAgICAgICAgICAgQHhbMjddDQorCSBMRFJTSCAgICAgcjYsIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICAgICBAeFsyOF0NCisNCisJIFNNTEFCQiAgICByMTAsIHI5LCByMywgcjEwICAgICAgICAgICAgICAgICAgIEB4WzI2XSAqIGhbMjZdDQorCSBTTUxBQkIgICAgcjExLCByNCwgcjMsIHIxMSAgICAgICAgICAgICAgICAgICBAeFsyN10gKiBoWzI2XQ0KKw0KKwkgU01MQUJUICAgIHIxMCwgcjQsIHIzLCByMTAgICAgICAgICAgICAgICAgICAgQHhbMjddICogaFsyN10NCisJIFNNTEFCVCAgICByMTEsIHI2LCByMywgcjExICAgICAgICAgICAgICAgICAgIEB4WzI4XSAqIGhbMjddDQorDQorCSBMRFIgICAgICAgcjMsIFtyMl0sICM0ICAgICAgICAgICAgICAgICAgICAgICBAaFsyOF0sIGhbMjldDQorCSBMRFJTSCAgICAgcjksIFtyMV0sICMyICAgICAgICAgICAgICAgICAgICAgICBAeFsyOV0NCisJIExEUlNIICAgICByNCwgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgICAgIEB4WzMwXQ0KKw0KKwkgU01MQUJCICAgIHIxMCwgcjYsIHIzLCByMTAgICAgICAgICAgICAgICAgICAgQHhbMjhdICogaFsyOF0NCisJIFNNTEFCQiAgICByMTEsIHI5LCByMywgcjExICAgICAgICAgICAgICAgICAgIEB4WzI5XSAqIGhbMjhdDQorDQorCSBTTUxBQlQgICAgcjEwLCByOSwgcjMsIHIxMCAgICAgICAgICAgICAgICAgICBAeFsyOV0gKiBoWzI5XQ0KKwkgU01MQUJUICAgIHIxMSwgcjQsIHIzLCByMTEgICAgICAgICAgICAgICAgICAgQHhbMzBdICogaFsyOV0NCisNCisJIExEUiAgICAgICByMywgW3IyXSwgIzQgICAgICAgICAgICAgICAgICAgICAgIEBoWzMwXSwgaFszMV0NCisJIExEUlNIICAgICByNiwgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgICAgIEB4WzMxXQ0KKwkgTERSU0ggICAgIHI5LCBbcjFdLCAjMiAgICAgICAgICAgICAgICAgICAgICAgQHhbMzJdDQorDQorCSBTTUxBQkIgICAgcjEwLCByNCwgcjMsIHIxMCAgICAgICAgICAgICAgICAgICBAeFszMF0gKiBoWzMwXQ0KKwkgU01MQUJCICAgIHIxMSwgcjYsIHIzLCByMTEgICAgICAgICAgICAgICAgICAgQHhbMzFdICogaFszMF0NCisNCisJIFNNTEFCVCAgICByMTAsIHI2LCByMywgcjEwICAgICAgICAgICAgICAgICAgIEB4WzMxXSAqIGhbMzFdDQorCSBTTUxBQlQgICAgcjExLCByOSwgcjMsIHIxMSAgICAgICAgICAgICAgICAgICBAeFszMl0gKiBoWzMxXQ0KKw0KKwkgQFNTQVQgICAgICByMTAsICMzMiwgcjEwLCBMU0wgIzINCisJIEBTU0FUICAgICAgcjExLCAjMzIsIHIxMSwgTFNMICMyDQorCSBNT1YgICAgICAgcjEwLCByMTAsIExTTCAjMQ0KKwkgTU9WICAgICAgIHIxMSwgcjExLCBMU0wgIzENCisNCisJIFFBREQgICAgICByMTAsIHIxMCwgcjEwDQorCSBRQUREICAgICAgcjExLCByMTEsIHIxMSANCisNCisJIFFBREQgICAgICByMTAsIHIxMCwgcjUNCisJIFFBREQgICAgICByMTEsIHIxMSwgcjUNCisNCisJIE1PViAgICAgICByMTAsIHIxMCwgQVNSICMxNg0KKwkgTU9WICAgICAgIHIxMSwgcjExLCBBU1IgIzE2DQorDQorCSBTVFJIICAgICAgcjEwLCBbcjBdLCAjMg0KKwkgU1RSSCAgICAgIHIxMSwgW3IwXSwgIzINCisNCisNCitwcmVkX2x0NF9lbmQ6DQorICAgICAgICAgTERNRkQgICAgIHIxMyEsIHtyNCAtIHIxMiwgcjE1fQ0KKw0KK1RhYmxlOg0KKyAgICAgICAgIC53b3JkICAgICAgIGludGVyNF8yDQorCSBARU5ERlVOQw0KKwkgLkVORA0KKw0KKw0KKw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYXNtL0FSTVY1RS9yZXNpZHVfYXNtX29wdC5zIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9hc20vQVJNVjVFL3Jlc2lkdV9hc21fb3B0LnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDYwZDljNwotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYXNtL0FSTVY1RS9yZXNpZHVfYXNtX29wdC5zCkBAIC0wLDAgKzEsMjI4IEBACitALyoNCitAICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorQCAqKg0KK0AgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorQCAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorQCAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCitAICoqDQorQCAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorQCAqKg0KK0AgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KK0AgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCitAICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KK0AgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KK0AgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorQCAqLw0KK0ANCitAdm9pZCBSZXNpZHUoDQorQAkgICAgV29yZDE2IGFbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTEyIDogcHJlZGljdGlvbiBjb2VmZmljaWVudHMgKi8NCitACSAgICBXb3JkMTYgeFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBzcGVlY2ggKHZhbHVlcyB4Wy1tLi4tMV0gYXJlIG5lZWRlZCAqLw0KK0AJICAgIFdvcmQxNiB5W10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIHgyICA6IHJlc2lkdWFsIHNpZ25hbCAgICAgICAqLw0KK0AJICAgIFdvcmQxNiBsZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IHNpemUgb2YgZmlsdGVyaW5nICAgICAqLw0KK0AJICAgKQ0KK0BhW10gLS0tIHIwDQorQHhbXSAtLS0gcjENCitAeVtdIC0tLSByMg0KK0BsZyAgLS0tIHIzDQorDQorICAgICAgICAuc2VjdGlvbiAgLnRleHQNCisJLmdsb2JhbCAgIFJlc2lkdV9vcHQNCisNCitSZXNpZHVfb3B0Og0KKw0KKyAgICAgICAgU1RNRkQgICByMTMhLCB7cjQgLSByMTIsIHIxNH0NCisNCisgICAgICAgIExEUkggICAgcjUsIFtyMF0sICMyDQorICAgICAgICBMRFJIICAgIHI2LCBbcjBdLCAjMg0KKyAgICAgICAgT1JSICAgICByNSwgcjYsIHI1LCBMU0wgIzE2ICAgICAgICAgICAgICAgICAgQHI1IC0tLSBhMCwgYTEJDQorDQorICAgICAgICBMRFJIICAgIHI2LCBbcjBdLCAjMg0KKwlMRFJIICAgIHI3LCBbcjBdLCAjMg0KKwlPUlIgICAgIHI2LCByNywgcjYsIExTTCAjMTYgICAgICAgICAgICAgICAgICBAcjYgLS0tIGEyLCBhMw0KKwkNCisgICAgICAgIExEUkggICAgcjcsIFtyMF0sICMyDQorCUxEUkggICAgcjgsIFtyMF0sICMyDQorCU9SUiAgICAgcjcsIHI4LCByNywgTFNMICMxNiAgICAgICAgICAgICAgICAgIEByNyAtLS0gYTQsIGE1DQorDQorCUxEUkggICAgcjgsIFtyMF0sICMyDQorCUxEUkggICAgcjksIFtyMF0sICMyDQorCU9SUiAgICAgcjgsIHI5LCByOCwgTFNMICMxNiAgICAgICAgICAgICAgICAgIEByOCAtLS0gYTYsIGE3DQorDQorCUxEUkggICAgcjksIFtyMF0sICMyDQorCUxEUkggICAgcjEwLCBbcjBdLCAjMg0KKwlPUlIgICAgIHI5LCByMTAsIHI5LCBMU0wgIzE2ICAgICAgICAgICAgICAgICBAcjkgLS0tIGE4LCBhOQ0KKw0KKwlMRFJIICAgIHIxMCwgW3IwXSwgIzINCisJTERSSCAgICByMTEsIFtyMF0sICMyDQorCU9SUiAgICAgcjEwLCByMTEsIHIxMCwgTFNMICMxNiAgICAgICAgICAgICAgIEByMTAgLS0tIGExMCwgYTExDQorDQorICAgICAgICBMRFJIICAgIHIxMSwgW3IwXSwgIzINCisJTERSSCAgICByMTIsIFtyMF0sICMyDQorCU9SUiAgICAgcjExLCByMTIsIHIxMSwgTFNMICMxNiAgICAgICAgICAgICAgIEByMTEgLS0tIGExMiwgYTEzDQorCQ0KKwlMRFJIICAgIHIxMiwgW3IwXSwgIzINCisJTERSSCAgICByNCwgW3IwXSwgIzINCisJT1JSICAgICByMTIsIHI0LCByMTIsIExTTCAjMTYgICAgICAgICAgICAgICAgQHIxMiAtLS0gYTE0LCBhMTUNCisJDQorDQorCVNUTUZEICAgcjEzISwge3I4IC0gcjEyfSAgICAgICAgICAgICAgICAgICAgIEBzdG9yZSByOC1yMTIgDQorCUxEUkggICAgcjQsIFtyMF0sICMyICAgICAgICAgICAgICAgICAgICAgICAgIEBsb2FkIGExNg0KKyAgICAgICAgTU9WICAgICByMTQsIHIzLCBBU1IgIzIgICAgICAgICAgICAgICAgICAgICAgQG9uZSBsb29wIGdldCA0IG91dHB1dHMNCisJQUREICAgICByMSwgcjEsICM0DQorCU1PViAgICAgcjAsIHIyDQorCU9SUiAgICAgcjE0LCByNCwgcjE0LCBMU0wgIzE2ICAgICAgICAgICAgICAgIEByMTQgLS0tIGxvb3BudW0sIGExNg0KKw0KK3Jlc2lkdV9sb29wOg0KKw0KKyAgICAgICAgTERSICAgICByMTAsIFtyMV0sICMtNCAgICAgICAgICAgICAgICAgICAgICAgQHIxMCAgLS0tIHhbM10sIHhbMl0NCisJTERSICAgICByMiwgIFtyMV0sICMtNCAgICAgICAgICAgICAgICAgICAgICAgQHIyICAgLS0tIHhbMV0sIHhbMF0NCisNCisJU01VTFRCICByMywgcjUsIHIyICAgICAgICAgICAgICAgICAgICAgICAgICAgQGkxKDApICAtLS0gcjMgPSB4WzBdICogYTANCisgICAgICAgIFNNVUxUVCAgcjQsIHI1LCByMiAgICAgICAgICAgICAgICAgICAgICAgICAgIEBpMigwKSAgLS0tIHI0ID0geFsxXSAqIGEwCQ0KKwlTTVVMVEIgIHIxMSwgcjUsIHIxMCAgICAgICAgICAgICAgICAgICAgICAgICBAaTMoMCkgIC0tLSByMTEgPSB4WzJdICogYTANCisJU01VTFRUICByMTIsIHI1LCByMTAgICAgICAgICAgICAgICAgICAgICAgICAgQGk0KDApICAtLS0gcjEyID0geFszXSAqIGEwDQorDQorICAgICAgICBTTUxBQkIgIHI0LCByNSwgcjIsIHI0ICAgICAgICAgICAgICAgICAgICAgICBAaTIoMSkgIC0tLSByNCArPSB4WzBdICogYTENCisgICAgICAgIFNNTEFCVCAgcjExLCByNSwgcjIsIHIxMSAgICAgICAgICAgICAgICAgICAgIEBpMygxKSAgLS0tIHIxMSArPSB4WzFdICogYTANCisgICAgICAgIFNNTEFCQiAgcjEyLCByNSwgcjEwLCByMTIgICAgICAgICAgICAgICAgICAgIEBpNCgxKSAgLS0tIHIxMiArPSB4WzJdICogYTENCisNCisJU01MQVRCICByMTEsIHI2LCByMiwgcjExICAgICAgICAgICAgICAgICAgICAgQGkzKDIpICAtLS0gcjExICs9IHhbMF0gKiBhMg0KKwlTTUxBVFQgIHIxMiwgcjYsIHIyLCByMTIgICAgICAgICAgICAgICAgICAgICBAaTQoMikgIC0tLSByMTIgKz0geFsxXSAqIGEyDQorCVNNTEFCQiAgcjEyLCByNiwgcjIsIHIxMiAgICAgICAgICAgICAgICAgICAgIEBpNCgzKSAgLS0tIHIxMiArPSB4WzBdICogYTMgICAgICAgICAgICAgICAgIA0KKwkNCisJTERSICAgICByMiwgW3IxXSwgIy00ICAgICAgICAgICAgICAgICAgICAgICAgQHIyIC0tLS0geFstMV0sIHhbLTJdDQorDQorCVNNTEFCVCAgcjMsIHI1LCByMiwgcjMgICAgICAgICAgICAgICAgICAgICAgIEBpMSgxKSAtLS0gcjMgKz0geFstMV0gKiBhMQ0KKwlTTUxBVFQgIHI0LCByNiwgcjIsIHI0ICAgICAgICAgICAgICAgICAgICAgICBAaTIoMikgLS0tIHI0ICs9IHhbLTFdICogYTINCisJU01MQUJUICByMTEsIHI2LCByMiwgcjExICAgICAgICAgICAgICAgICAgICAgQGkzKDMpIC0tLSByMTEgKz0geFstMV0gKiBhMw0KKwlTTUxBVFQgIHIxMiwgcjcsIHIyLCByMTIgICAgICAgICAgICAgICAgICAgICBAaTQoNCkgLS0tIHIxMiArPSB4Wy0xXSAqIGE0DQorICAgICAgICBTTUxBVEIgIHIzLCByNiwgcjIsIHIzICAgICAgICAgICAgICAgICAgICAgICBAaTEoMikgLS0tIHIzICs9IHhbLTJdICogYTIJDQorDQorCVNNTEFCQglyNCwgcjYsIHIyLCByNAkJCQlAIGkyCSgzKQ0KKwlTTUxBVEIgIHIxMSxyNywgcjIsIHIxMQkJCQlAIGkzCSg0KQ0KKwlTTUxBQkIJcjEyLHI3LCByMiwgcjEyCQkJCUAgaTQJKDUpDQorCQ0KKwlMRFIJcjIsW3IxXSwjLTQNCisJU01MQUJUCXIzLCByNiwgcjIsIHIzCQkJCUAgaTEJKDMpDQorCVNNTEFUVAlyNCwgcjcsIHIyLCByNAkJCQlAIGkyCSg0KQ0KKwlTTUxBQlQJcjExLHI3LCByMiwgcjExCQkJCUAgaTMJKDUpDQorCVNNTEFUVAlyMTIscjgsIHIyLCByMTIJCQkJQCBpNAkoNikNCisJU01MQVRCCXIzLCByNywgcjIsIHIzCQkJCUAgaTEJKDQpDQorCVNNTEFCQglyNCwgcjcsIHIyLCByNAkJCQlAIGkyCSg1KQ0KKwlTTUxBVEIJcjExLHI4LCByMiwgcjExCQkJCUAgaTMJKDYpDQorCVNNTEFCQglyMTIscjgsIHIyLCByMTIJCQkJQCBpNAkoNykNCisJCQ0KKwlMRFIJcjIsW3IxXSwjLTQNCisJU01MQUJUCXIzLCByNywgcjIsIHIzCQkJCUAgaTEJKDUpDQorCVNNTEFUVAlyNCwgcjgsIHIyLCByNAkJCQlAIGkyCSg2KQ0KKwlTTUxBQlQJcjExLHI4LCByMiwgcjExCQkJCUAgaTMJKDcpDQorCVNNTEFUVAlyMTIscjksIHIyLCByMTIJCQkJQCBpNAkoOCkNCisJU01MQVRCCXIzLCByOCwgcjIsIHIzCQkJCUAgaTEJKDYpDQorCVNNTEFCQglyNCwgcjgsIHIyLCByNAkJCQlAIGkyCSg3KQ0KKwlTTUxBVEIJcjExLHI5LCByMiwgcjExCQkJCUAgaTMJKDgpDQorCVNNTEFCQglyMTIscjksIHIyLCByMTIJCQkJQCBpNAkoOSkNCisJTERSCXIxMCwgW3IxMywgIzhdCQkJCUAgWyBhMTAgfCBhMTFdDQorCQ0KKwlMRFIJcjIsW3IxXSwjLTQNCisJU01MQUJUCXIzLCByOCwgcjIsIHIzCQkJCUAgaTEJKDcpDQorCVNNTEFUVAlyNCwgcjksIHIyLCByNAkJCQlAIGkyCSg4KQ0KKwlTTUxBQlQJcjExLHI5LCByMiwgcjExCQkJCUAgaTMJKDkpDQorCVNNTEFUVAlyMTIscjEwLCByMiwgcjEyCQkJQCBpNAkoMTApDQorCVNNTEFUQglyMywgcjksIHIyLCByMwkJCQlAIGkxCSg4KQ0KKwlTTUxBQkIJcjQsIHI5LCByMiwgcjQJCQkJQCBpMgkoOSkNCisJU01MQVRCCXIxMSxyMTAsIHIyLCByMTEJCQlAIGkzCSgxMCkNCisJU01MQUJCCXIxMixyMTAsIHIyLCByMTIJCQlAIGk0CSgxMSkNCisJTERSCXI4LCBbcjEzLCAjMTJdCQkJCUAgWyBhMTIgfCBhMTMgXQ0KKwkJDQorCUxEUglyMixbcjFdLCMtNA0KKwlTTUxBQlQJcjMsIHI5LCByMiwgcjMJCQkJQCBpMQkoOSkNCisJU01MQVRUCXI0LCByMTAsIHIyLCByNAkJCQlAIGkyCSgxMCkNCisJU01MQUJUCXIxMSxyMTAsIHIyLCByMTEJCQlAIGkzCSgxMSkNCisJU01MQVRUCXIxMixyOCwgcjIsIHIxMgkJCQlAIGk0CSgxMikNCisJU01MQVRCCXIzLCByMTAsIHIyLCByMwkJCQlAIGkxCSgxMCkNCisJU01MQUJCCXI0LCByMTAsIHIyLCByNAkJCQlAIGkyCSgxMSkNCisJU01MQVRCCXIxMSxyOCwgcjIsIHIxMQkJCQlAIGkzCSgxMikNCisJU01MQUJCCXIxMixyOCwgcjIsIHIxMgkJCQlAIGk0CSgxMykNCisJTERSCXI5LCBbcjEzLCAjMTZdCQkJCUAgWyBhMTQgfCBhMTUgXQ0KKwkNCisJTERSCXIyLFtyMV0sIy00DQorCVNNTEFCVAlyMywgcjEwLCByMiwgcjMJCQkJQCBpMQkoMTEpDQorCVNNTEFUVAlyNCwgcjgsIHIyLCByNAkJCQlAIGkyCSgxMikNCisJU01MQUJUCXIxMSxyOCwgcjIsIHIxMQkJCQlAIGkzCSgxMykNCisJU01MQVRUCXIxMixyOSwgcjIsIHIxMgkJCQlAIGk0CSgxNCkNCisJU01MQVRCCXIzLCByOCwgcjIsIHIzCQkJCUAgaTEJKDEyKQ0KKwlTTUxBQkIJcjQsIHI4LCByMiwgcjQJCQkJQCBpMgkoMTMpDQorCVNNTEFUQglyMTEscjksIHIyLCByMTEJCQkJQCBpMwkoMTQpDQorCVNNTEFCQglyMTIscjksIHIyLCByMTIJCQkJQCBpNAkoMTUpDQorCQ0KKw0KKwlMRFIJcjIsW3IxXSwjLTQNCisJU01MQUJUCXIzLCByOCwgcjIsIHIzCQkJCUAgaTEJKDEzKQ0KKwlTTUxBVFQJcjQsIHI5LCByMiwgcjQJCQkJQCBpMgkoMTQpDQorCVNNTEFCVAlyMTEscjksIHIyLCByMTEJCQkJQCBpMwkoMTUpDQorCVNNTEFCVAlyMTIscjE0LCByMiwgcjEyCQkJQCBpNAkoMTYpDQorCVNNTEFUQglyMywgcjksIHIyLCByMwkJCQlAIGkxCSgxNCkNCisJU01MQUJCCXI0LCByOSwgcjIsIHI0CQkJCUAgaTIJKDE1KQ0KKwlTTUxBQkIJcjExLHIxNCwgcjIsIHIxMQkJCUAgaTMJKDE2KQ0KKwlMRFIJCXI4LCBbcjEzXQkJCQkJQCBbIGE2IHwgYTcgXQ0KKwkJCQ0KKyAgICAgICAgTERSICAgICByMixbcjFdLCM0NCAgICAgICAgIAkJQCBDaGFuZ2UNCisJU01MQUJUCXIzLCByOSwgcjIsIHIzDQorCVNNTEFCQglyMywgcjE0LCByMiwgcjMNCisJU01MQUJUCXI0LCByMTQsIHIyLCByNA0KKwlMRFIJCXI5LCBbcjEzLCAjNF0JCQkJQCBbIGE4IHwgYTkgXQ0KKwkNCisNCisJUUFERAlyMyxyMyxyMwkJCQkJDQorCVFBREQJcjQscjQscjQJCQkJCQ0KKwlRQURECXIxMSxyMTEscjExCQkJCQkNCisJUUFERAlyMTIscjEyLHIxMgkJCQkJDQorCQkNCisJUUFERAlyMyxyMyxyMwkJCQkJDQorCVFBREQJcjQscjQscjQJCQkJCQ0KKwlRQURECXIxMSxyMTEscjExCQkJCQkNCisJUUFERAlyMTIscjEyLHIxMgkJCQkJDQorCQ0KKwlRQURECXIzLHIzLHIzCQkJCQkNCisJUUFERAlyNCxyNCxyNAkJCQkJDQorCVFBREQJcjExLHIxMSxyMTEJCQkJCQ0KKwlRQURECXIxMixyMTIscjEyCQkJCQkNCisJDQorCVFBREQJcjMscjMscjMJCQkJCQ0KKwlRQURECXI0LHI0LHI0CQkJCQkNCisJUUFERAlyMTEscjExLHIxMQkJCQkJDQorCVFBREQJcjEyLHIxMixyMTIJCQkJCQ0KKwkNCisJTU9WCXIyLCMzMjc2OAkNCisJDQorCVFEQURECXIzLHIyLHIzCQkJCQkNCisJUURBREQJcjQscjIscjQJCQkJCQ0KKwlRREFERAlyMTEscjIscjExCQkJCQkNCisJUURBREQJcjEyLHIyLHIxMgkJCQkJDQorCQkNCisJDQorCU1PVglyMyxyMyxhc3IgIzE2DQorCU1PVglyNCxyNCxhc3IgIzE2DQorCU1PVglyMTEscjExLGFzciAjMTYNCisJTU9WCXIxMixyMTIsYXNyICMxNg0KKwkNCisJU1RSSAlyMyxbcjBdLCMyDQorCVNUUkgJcjQsW3IwXSwjMg0KKwlTVFJICXIxMSxbcjBdLCMyDQorCVNUUkgJcjEyLFtyMF0sIzINCisJDQorCU1PVglyMixyMTQsYXNyICMxNg0KKwlTVUIJcjE0LCByMTQsICMweDEwMDAwDQorCVNVQlMJcjIscjIsIzENCisJQk5FCXJlc2lkdV9sb29wCQ0KK2VuZDoNCisJTERNRkQJcjEzISwge3I4IC1yMTJ9CQ0KKwlMRE1GRAlyMTMhLCB7cjQgLXIxMixwY30NCisNCisgICAgICAgIEBFTkRGVU5DDQorICAgICAgICAuRU5ECSANCisgICAgICAgIA0KKwkNCisJICANCisNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNUUvc2NhbGVfc2lnX29wdC5zIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9hc20vQVJNVjVFL3NjYWxlX3NpZ19vcHQucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYTlmNDY0Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9hc20vQVJNVjVFL3NjYWxlX3NpZ19vcHQucwpAQCAtMCwwICsxLDc1IEBACitALyoNCitAICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorQCAqKg0KK0AgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorQCAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorQCAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCitAICoqDQorQCAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorQCAqKg0KK0AgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KK0AgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCitAICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KK0AgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KK0AgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorQCAqLw0KK0ANCitAdm9pZCBTY2FsZV9zaWcoDQorQAkgICAgICAgV29yZDE2IHhbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaS9vKSA6IHNpZ25hbCB0byBzY2FsZSAgICAgICAgICAgICAgICovDQorQAkgICAgICAgV29yZDE2IGxnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICA6IHNpemUgb2YgeFtdICAgICAgICAgICAgICAgICAgICovDQorQAkgICAgICAgV29yZDE2IGV4cCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICA6IGV4cG9uZW50OiB4ID0gcm91bmQoeCA8PCBleHApICovDQorQAkgICAgICAgKQ0KK0ANCitAcjAgLS0tIHhbXQ0KK0ByMSAtLS0gbGcNCitAcjIgLS0tIGV4cA0KKw0KKyAgICAgICAgICAuc2VjdGlvbiAgLnRleHQNCisJICAuZ2xvYmFsICAgU2NhbGVfc2lnX29wdA0KKw0KK1NjYWxlX3NpZ19vcHQ6DQorDQorICAgICAgICAgU1RNRkQgICAgICAgICByMTMhLCB7cjQgLSByMTIsIHIxNH0NCisJIFNVQiAgICAgICAgICAgcjMsIHIxLCAjMSAgICAgICAgICAgICAgICAgIEBpID0gbGcgLSAxDQorICAgICAgICAgQ01QICAgICAgICAgICByMiwgIzAgICAgICAgICAgICAgICAgICAgICAgQENvbXBhcmUgZXhwIGFuZCAwDQorCSBSU0IgICAgICAgICAgIHI3LCByMiwgIzAgICAgICAgICAgICAgICAgICBAZXhwID0gLWV4cA0KKwkgQUREICAgICAgICAgICByMTAsIHIyLCAjMTYgICAgICAgICAgICAgICAgQDE2ICsgZXhwDQorICAgICAgICAgQUREICAgICAgICAgICByNCwgcjAsIHIzLCBMU0wgIzEgICAgICAgICAgQHhbaV0gYWRkcmVzcw0KKwkgTU9WICAgICAgICAgICByOCwgIzB4N2ZmZmZmZmYNCisJIE1PViAgICAgICAgICAgcjksICMweDgwMDANCisJIEJMRSAgICAgICAgICAgTE9PUDINCisJIA0KK0xPT1AxOg0KKw0KKyAgICAgICAgIExEUlNIICAgICAgICAgIHI1LCBbcjRdICAgICAgICAgICAgICAgICAgICBAbG9hZCB4W2ldDQorICAgICAgICAgTU9WICAgICAgICAgICByMTIsIHI1LCBMU0wgcjEwDQorCSBURVEgICAgICAgICAgIHI1LCByMTIsIEFTUiByMTANCisJIEVPUk5FICAgICAgICAgcjEyLCByOCwgcjUsIEFTUiAjMzENCisJIFNVQlMgICAgICAgICAgcjMsIHIzLCAjMQ0KKwkgUUFERCAgICAgICAgICByMTEsIHIxMiwgcjkNCisJIE1PViAgICAgICAgICAgcjEyLCByMTEsIEFTUiAjMTYNCisJIFNUUkggICAgICAgICAgcjEyLCBbcjRdLCAjLTINCisJIEJHRSAgICAgICAgICAgTE9PUDENCisgICAgICAgICBCTCAgICAgICAgICAgIFRoZV9lbmQNCisNCitMT09QMjoNCisNCisgICAgICAgICBMRFJTSCAgICAgICAgICByNSwgW3I0XSAgICAgICAgICAgICAgICAgICBAbG9hZCB4W2ldDQorCSBNT1YgICAgICAgICAgIHI2LCByNSwgTFNMICMxNiAgICAgICAgICAgIEBMX3RtcCA9IHhbaV0gPDwgMTYNCisJIE1PViAgICAgICAgICAgcjUsIHI2LCBBU1IgcjcgICAgICAgICAgICAgQExfdG1wID4+PSBleHANCisJIFFBREQgICAgICAgICAgcjExLCByNSwgcjkNCisJIE1PViAgICAgICAgICAgcjEyLCByMTEsIEFTUiAjMTYNCisJIFNVQlMgICAgICAgICAgcjMsIHIzLCAjMQ0KKwkgU1RSSCAgICAgICAgICByMTIsIFtyNF0sICMtMg0KKwkgQkdFICAgICAgICAgICBMT09QMg0KKw0KK1RoZV9lbmQ6DQorICAgICAgICAgTERNRkQgICAgICAgICByMTMhLCB7cjQgLSByMTIsIHIxNX0NCisgICAgIA0KKyAgICAgICAgIEBFTkRGVU5DDQorICAgICAgICAgLkVORAkgDQorICAgICAgICANCisJDQorCSAgDQorDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9hc20vQVJNVjVFL3N5bl9maWx0X29wdC5zIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9hc20vQVJNVjVFL3N5bl9maWx0X29wdC5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwNWU5ZTAKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNUUvc3luX2ZpbHRfb3B0LnMKQEAgLTAsMCArMSwyMzggQEAKK0AvKg0KK0AgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCitAICoqDQorQCAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCitAICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCitAICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KK0AgKioNCitAICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCitAICoqDQorQCAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorQCAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KK0AgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorQCAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorQCAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCitAICovDQorQCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorQHZvaWQgU3luX2ZpbHQoDQorQCAgICAgV29yZDE2IGFbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTEyIDogYVttKzFdIHByZWRpY3Rpb24gY29lZmZpY2llbnRzICAgICAgICAgICAqLw0KK0AgICAgIFdvcmQxNiB4W10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IGlucHV0IHNpZ25hbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCitAICAgICBXb3JkMTYgeVtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSAgICAgOiBvdXRwdXQgc2lnbmFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorQCAgICAgV29yZDE2IG1lbVtdLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaS9vKSAgIDogbWVtb3J5IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGZpbHRlcmluZy4gICAqLw0KK0ApDQorQCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorQCBhW10gICAgLS0tICAgcjANCitAIHhbXSAgICAtLS0gICByMQ0KK0AgeVtdICAgIC0tLSAgIHIyDQorQCBtZW1bXSAgLS0tICAgcjMNCitAIG0gLS0tICAxNiAgbGcgLS0tIDgwICB1cGRhdGUgLS0tIDENCisNCisgICAgICAgICAgLnNlY3Rpb24gIC50ZXh0DQorCSAgLmdsb2JhbCAgIFN5bl9maWx0X2FzbQ0KKyAgICAgICAgICAuZXh0ZXJuICAgdm9BV0JfQ29weQ0KKw0KK1N5bl9maWx0X2FzbToNCisNCisgICAgICAgICAgU1RNRkQgICAJcjEzISwge3I0IC0gcjEyLCByMTR9IA0KKyAgICAgICAgICBTVUIgICAgICAgICAgIHIxMywgcjEzLCAjNzAwICAgICAgICAgICAgICAgICAgIEAgeV9idWZbTF9GUkFNRTE2ayArIE0xNmtdDQorICAgDQorICAgICAgICAgIE1PViAgICAgICAgICAgcjQsIHIzICAgICAgICAgICAgICAgICAgICAgICAgICAgQCBjb3B5IG1lbVtdIGFkZHJlc3MNCisgICAgICAgICAgTU9WICAgICAgICAgICByNSwgcjEzICAgICAgICAgICAgICAgICAgICAgICAgICBAIGNvcHkgeXkgPSB5X2J1ZiBhZGRyZXNzDQorDQorICAgICAgICAgIEAgZm9yKGkgPSAwQCBpIDwgbUAgaSsrKQ0KKyAgICAgICAgICBAew0KKyAgICAgICAgICBAICAgICp5eSsrID0gbWVtW2ldQA0KKyAgICAgICAgICBAfSANCisNCisgICAgICAgICAgTERSSCAgICAgICAgICByNiwgIFtyNF0sICMyICAgICAgICAgIA0KKyAgICAgICAgICBMRFJIICAgICAgICAgIHI3LCAgW3I0XSwgIzINCisgICAgICAgICAgTERSSCAgICAgICAgICByOCwgIFtyNF0sICMyDQorICAgICAgICAgIExEUkggICAgICAgICAgcjksICBbcjRdLCAjMg0KKyAgICAgICAgICBMRFJIICAgICAgICAgIHIxMCwgW3I0XSwgIzINCisgICAgICAgICAgTERSSCAgICAgICAgICByMTEsIFtyNF0sICMyDQorICAgICAgICAgIExEUkggICAgICAgICAgcjEyLCBbcjRdLCAjMg0KKyAgICAgICAgICBMRFJIICAgICAgICAgIHIxNCwgW3I0XSwgIzINCisNCisgICAgICAgICAgU1RSSCAgICAgICAgICByNiwgIFtyNV0sICMyDQorICAgICAgICAgIFNUUkggICAgICAgICAgcjcsICBbcjVdLCAjMg0KKyAgICAgICAgICBTVFJIICAgICAgICAgIHI4LCAgW3I1XSwgIzINCisgICAgICAgICAgU1RSSCAgICAgICAgICByOSwgIFtyNV0sICMyDQorICAgICAgICAgIFNUUkggICAgICAgICAgcjEwLCBbcjVdLCAjMg0KKyAgICAgICAgICBTVFJIICAgICAgICAgIHIxMSwgW3I1XSwgIzINCisgICAgICAgICAgU1RSSCAgICAgICAgICByMTIsIFtyNV0sICMyDQorICAgICAgICAgIFNUUkggICAgICAgICAgcjE0LCBbcjVdLCAjMg0KKw0KKyAgICAgICAgICBMRFJIICAgICAgICAgIHI2LCAgW3I0XSwgIzIgICAgICAgICAgDQorICAgICAgICAgIExEUkggICAgICAgICAgcjcsICBbcjRdLCAjMg0KKyAgICAgICAgICBMRFJIICAgICAgICAgIHI4LCAgW3I0XSwgIzINCisgICAgICAgICAgTERSSCAgICAgICAgICByOSwgIFtyNF0sICMyDQorICAgICAgICAgIExEUkggICAgICAgICAgcjEwLCBbcjRdLCAjMg0KKyAgICAgICAgICBMRFJIICAgICAgICAgIHIxMSwgW3I0XSwgIzINCisgICAgICAgICAgTERSSCAgICAgICAgICByMTIsIFtyNF0sICMyDQorICAgICAgICAgIExEUkggICAgICAgICAgcjE0LCBbcjRdLCAjMg0KKw0KKyAgICAgICAgICBTVFJIICAgICAgICAgIHI2LCAgW3I1XSwgIzINCisgICAgICAgICAgU1RSSCAgICAgICAgICByNywgIFtyNV0sICMyDQorICAgICAgICAgIFNUUkggICAgICAgICAgcjgsICBbcjVdLCAjMg0KKyAgICAgICAgICBTVFJIICAgICAgICAgIHI5LCAgW3I1XSwgIzINCisgICAgICAgICAgU1RSSCAgICAgICAgICByMTAsIFtyNV0sICMyDQorICAgICAgICAgIFNUUkggICAgICAgICAgcjExLCBbcjVdLCAjMg0KKyAgICAgICAgICBTVFJIICAgICAgICAgIHIxMiwgW3I1XSwgIzINCisgICAgICAgICAgU1RSSCAgICAgICAgICByMTQsIFtyNV0sICMyDQorDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjUsIFtyMF0gICAgICAgICAgICAgICAgICAgICAgICAgQCBsb2FkIGFbMF0NCisgICAgICAgICAgTU9WICAgICAgICAgICByOCwgIzAgICAgICAgICAgICAgICAgICAgICAgICAgICBAIGkgPSAwDQorICAgICAgICAgIE1PViAgICAgICAgICAgcjUsIHI1LCBBU1IgIzEgICAgICAgICAgICAgICAgICAgQCBhMCA9IGFbMF0gPj4gMQ0KKyAgICAgICAgICBATU9WICAgICAgICAgICByNCwgcjEzDQorICAgICAgICAgIEAgbG9hZCBhbGwgYVtdDQorDQorICAgICAgICAgIExEUiAgICAgICAgICAgcjE0LCA9MHhmZmZmDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjYsIFtyMCwgIzJdICAgICAgICAgICAgICAgICAgICAgQCBsb2FkIGFbMV0NCisgICAgICAgICAgTERSU0ggICAgICAgICByNywgW3IwLCAjNF0gICAgICAgICAgICAgICAgICAgICBAIGxvYWQgYVsyXQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHI5LCBbcjAsICM2XSAgICAgICAgICAgICAgICAgICAgIEAgbG9hZCBhWzNdDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjExLFtyMCwgIzhdICAgICAgICAgICAgICAgICAgICAgQCBsb2FkIGFbNF0NCisgICAgICAgICAgQU5EICAgICAgICAgICByNiwgcjYsIHIxNA0KKyAgICAgICAgICBBTkQgICAgICAgICAgIHI5LCByOSwgcjE0ICAgICAgICAgIA0KKyAgICAgICAgICBPUlIgICAgICAgICAgIHIxMCwgcjYsIHI3LCBMU0wgIzE2ICAgICAgICAgICAgIEAgLWFbMl0gLS0gLWFbMV0NCisgICAgICAgICAgT1JSICAgICAgICAgICByMTIsIHI5LCByMTEsIExTTCAjMTYgICAgICAgICAgICBAIC1hWzRdIC0tIC1hWzNdDQorICAgICAgICAgIFNUUiAgICAgICAgICAgcjEwLCBbcjEzLCAjLTRdDQorICAgICAgICAgIFNUUiAgICAgICAgICAgcjEyLCBbcjEzLCAjLThdDQorICAgICAgICAgIA0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHI2LCBbcjAsICMxMF0gICAgICAgICAgICAgICAgICAgIEAgbG9hZCBhWzVdDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjcsIFtyMCwgIzEyXSAgICAgICAgICAgICAgICAgICAgQCBsb2FkIGFbNl0NCisgICAgICAgICAgTERSU0ggICAgICAgICByOSwgW3IwLCAjMTRdICAgICAgICAgICAgICAgICAgICBAIGxvYWQgYVs3XQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHIxMSxbcjAsICMxNl0gICAgICAgICAgICAgICAgICAgIEAgbG9hZCBhWzhdDQorICAgICAgICAgIEFORCAgICAgICAgICAgcjYsIHI2LCByMTQNCisgICAgICAgICAgQU5EICAgICAgICAgICByOSwgcjksIHIxNCAgICAgICAgICANCisgICAgICAgICAgT1JSICAgICAgICAgICByMTAsIHI2LCByNywgTFNMICMxNiAgICAgICAgICAgICBAIC1hWzZdIC0tIC1hWzVdDQorICAgICAgICAgIE9SUiAgICAgICAgICAgcjEyLCByOSwgcjExLCBMU0wgIzE2ICAgICAgICAgICAgQCAtYVs4XSAtLSAtYVs3XQ0KKyAgICAgICAgICBTVFIgICAgICAgICAgIHIxMCwgW3IxMywgIy0xMl0NCisgICAgICAgICAgU1RSICAgICAgICAgICByMTIsIFtyMTMsICMtMTZdICAgICAgICAgIA0KKyAgICAgICAgICAgDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjYsIFtyMCwgIzE4XSAgICAgICAgICAgICAgICAgICAgQCBsb2FkIGFbOV0NCisgICAgICAgICAgTERSU0ggICAgICAgICByNywgW3IwLCAjMjBdICAgICAgICAgICAgICAgICAgICBAIGxvYWQgYVsxMF0NCisgICAgICAgICAgTERSU0ggICAgICAgICByOSwgW3IwLCAjMjJdICAgICAgICAgICAgICAgICAgICBAIGxvYWQgYVsxMV0NCisgICAgICAgICAgTERSU0ggICAgICAgICByMTEsW3IwLCAjMjRdICAgICAgICAgICAgICAgICAgICBAIGxvYWQgYVsxMl0NCisgICAgICAgICAgQU5EICAgICAgICAgICByNiwgcjYsIHIxNA0KKyAgICAgICAgICBBTkQgICAgICAgICAgIHI5LCByOSwgcjE0ICAgICAgICAgIA0KKyAgICAgICAgICBPUlIgICAgICAgICAgIHIxMCwgcjYsIHI3LCBMU0wgIzE2ICAgICAgICAgICAgIEAgLWFbMTBdIC0tIC1hWzldDQorICAgICAgICAgIE9SUiAgICAgICAgICAgcjEyLCByOSwgcjExLCBMU0wgIzE2ICAgICAgICAgICAgQCAtYVsxMl0gLS0gLWFbMTFdDQorICAgICAgICAgIFNUUiAgICAgICAgICAgcjEwLCBbcjEzLCAjLTIwXQ0KKyAgICAgICAgICBTVFIgICAgICAgICAgIHIxMiwgW3IxMywgIy0yNF0gICAgDQorDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjYsIFtyMCwgIzI2XSAgICAgICAgICAgICAgICAgICAgQCBsb2FkIGFbMTNdDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjcsIFtyMCwgIzI4XSAgICAgICAgICAgICAgICAgICAgQCBsb2FkIGFbMTRdDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjksIFtyMCwgIzMwXSAgICAgICAgICAgICAgICAgICAgQCBsb2FkIGFbMTVdDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjExLFtyMCwgIzMyXSAgICAgICAgICAgICAgICAgICAgQCBsb2FkIGFbMTZdDQorICAgICAgICAgIEFORCAgICAgICAgICAgcjYsIHI2LCByMTQNCisgICAgICAgICAgQU5EICAgICAgICAgICByOSwgcjksIHIxNCAgICAgICAgICANCisgICAgICAgICAgT1JSICAgICAgICAgICByMTAsIHI2LCByNywgTFNMICMxNiAgICAgICAgICAgICBAIC1hWzE0XSAtLSAtYVsxM10NCisgICAgICAgICAgT1JSICAgICAgICAgICByMTIsIHI5LCByMTEsIExTTCAjMTYgICAgICAgICAgICBAIC1hWzE2XSAtLSAtYVsxNV0NCisgICAgICAgICAgU1RSICAgICAgICAgICByMTAsIFtyMTMsICMtMjhdDQorICAgICAgICAgIFNUUiAgICAgICAgICAgcjEyLCBbcjEzLCAjLTMyXSAgICAgICAgICAgICAgICANCisgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgQUREICAgICAgICAgICByNCwgcjEzLCAjMzINCitMT09QOg0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHI2LCAgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgIEAgbG9hZCB4W2ldDQorICAgICAgICAgIEFERCAgICAgICAgICAgcjEwLCByNCwgcjgsIExTTCAjMSAgICAgICAgICAgICAgQCB0ZW1wX3AgPSB5eSArIGkNCisNCisgICAgICAgICAgTVVMICAgICAgICAgICByMCwgcjUsIHI2ICAgICAgICAgICAgICAgICAgICAgIEAgTF90bXAgPSB4W2ldICogYTANCisgICAgICAgICAgQCBmb3IoaiA9IDFAIGogPD0gbSwgais9OCkNCisgICAgICAgICAgTERSICAgICAgICAgICByNywgIFtyMTMsICMtNF0gICAgICAgICAgICAgICAgICBAIC1hWzJdICAtYVsxXQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHI5LCAgW3IxMCwgIy0yXSAgICAgICAgICAgICAgICAgIEAgKih0ZW1wX3AgLSAxKQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHIxMiwgW3IxMCwgIy00XSAgICAgICAgICAgICAgICAgIEAgKih0ZW1wX3AgLSAyKQ0KKw0KKw0KKyAgICAgICAgICBTTVVMQkIgICAgICAgIHIxNCwgcjksIHI3ICAgICAgICAgICAgICAgICAgICAgIEAgLWFbMV0gKiAoKih0ZW1wX3AgLTEpKQ0KKw0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHI2LCAgW3IxMCwgIy02XSAgICAgICAgICAgICAgICAgIEAgKih0ZW1wX3AgLSAzKQ0KKw0KKyAgICAgICAgICBTTUxBQlQgICAgICAgIHIxNCwgcjEyLCByNywgcjE0ICAgICAgICAgICAgICAgIEAgLWFbMl0gKiAoKih0ZW1wX3AgLSAyKSkNCisNCisgICAgICAgICAgTERSICAgICAgICAgICByNywgIFtyMTMsICMtOF0gICAgICAgICAgICAgICAgICBAIC1hWzRdIC1hWzNdDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjExLCBbcjEwLCAjLThdICAgICAgICAgICAgICAgICAgQCAqKHRlbXBfcCAtIDQpDQorDQorICAgICAgICAgIFNNTEFCQiAgICAgICAgcjE0LCByNiwgcjcsIHIxNCAgICAgICAgICAgICAgICAgQCAtYVszXSAqICgqKHRlbXBfcCAtMykpDQorDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjksICBbcjEwLCAjLTEwXSAgICAgICAgICAgICAgICAgQCAqKHRlbXBfcCAtIDUpDQorICAgDQorICAgICAgICAgIFNNTEFCVCAgICAgICAgcjE0LCByMTEsIHI3LCByMTQgICAgICAgICAgICAgICAgQCAtYVs0XSAqICgqKHRlbXBfcCAtNCkpICAgICAgICANCisNCisgICAgICAgICAgTERSICAgICAgICAgICByNywgIFtyMTMsICMtMTJdICAgICAgICAgICAgICAgICBAIC1hWzZdICAtYVs1XQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHIxMiwgW3IxMCwgIy0xMl0gICAgICAgICAgICAgICAgIEAgKih0ZW1wX3AgLSA2KQ0KKw0KKyAgICAgICAgICBTTUxBQkIgICAgICAgIHIxNCwgcjksIHI3LCByMTQgICAgICAgICAgICAgICAgIEAgLWFbNV0gKiAoKih0ZW1wX3AgLTUpKQ0KKw0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHI2LCAgW3IxMCwgIy0xNF0gICAgICAgICAgICAgICAgIEAgKih0ZW1wX3AgLSA3KQ0KKw0KKyAgICAgICAgICBTTUxBQlQgICAgICAgIHIxNCwgcjEyLCByNywgcjE0ICAgICAgICAgICAgICAgIEAgLWFbNl0gKiAoKih0ZW1wX3AgLSA2KSkNCisNCisgICAgICAgICAgTERSICAgICAgICAgICByNywgIFtyMTMsICMtMTZdICAgICAgICAgICAgICAgICBAIC1hWzhdIC1hWzddDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjExLCBbcjEwLCAjLTE2XSAgICAgICAgICAgICAgICAgQCAqKHRlbXBfcCAtIDgpDQorICAgICAgICAgDQorICAgICAgICAgIFNNTEFCQiAgICAgICAgcjE0LCByNiwgcjcsIHIxNCAgICAgICAgICAgICAgICAgQCAtYVs3XSAqICgqKHRlbXBfcCAtNykpDQorDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjksICBbcjEwLCAjLTE4XSAgICAgICAgICAgICAgICAgQCAqKHRlbXBfcCAtIDkpDQorDQorICAgICAgICAgIFNNTEFCVCAgICAgICAgcjE0LCByMTEsIHI3LCByMTQgICAgICAgICAgICAgICAgQCAtYVs4XSAqICgqKHRlbXBfcCAtOCkpICAgICAgICAgIA0KKyANCisgICAgICAgICAgTERSICAgICAgICAgICByNywgIFtyMTMsICMtMjBdICAgICAgICAgICAgICAgICBAIC1hWzEwXSAgLWFbOV0NCisgICAgICAgICAgTERSU0ggICAgICAgICByMTIsIFtyMTAsICMtMjBdICAgICAgICAgICAgICAgICBAICoodGVtcF9wIC0gMTApDQorDQorICAgICAgICAgIFNNTEFCQiAgICAgICAgcjE0LCByOSwgcjcsIHIxNCAgICAgICAgICAgICAgICAgQCAtYVs5XSAqICgqKHRlbXBfcCAtOSkpDQorDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjYsICBbcjEwLCAjLTIyXSAgICAgICAgICAgICAgICAgQCAqKHRlbXBfcCAtIDExKQ0KKw0KKyAgICAgICAgICBTTUxBQlQgICAgICAgIHIxNCwgcjEyLCByNywgcjE0ICAgICAgICAgICAgICAgIEAgLWFbMTBdICogKCoodGVtcF9wIC0gMTApKQ0KKw0KKyAgICAgICAgICBMRFIgICAgICAgICAgIHI3LCAgW3IxMywgIy0yNF0gICAgICAgICAgICAgICAgIEAgLWFbMTJdIC1hWzExXQ0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHIxMSwgW3IxMCwgIy0yNF0gICAgICAgICAgICAgICAgIEAgKih0ZW1wX3AgLSAxMikNCisNCisgICAgICAgICAgU01MQUJCICAgICAgICByMTQsIHI2LCByNywgcjE0ICAgICAgICAgICAgICAgICBAIC1hWzExXSAqICgqKHRlbXBfcCAtMTEpKQ0KKw0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHI5LCAgW3IxMCwgIy0yNl0gICAgICAgICAgICAgICAgIEAgKih0ZW1wX3AgLSAxMykNCisNCisgICAgICAgICAgU01MQUJUICAgICAgICByMTQsIHIxMSwgcjcsIHIxNCAgICAgICAgICAgICAgICBAIC1hWzEyXSAqICgqKHRlbXBfcCAtMTIpKSAgICAgICAgICAgDQorDQorICAgICAgICAgIExEUiAgICAgICAgICAgcjcsICBbcjEzLCAjLTI4XSAgICAgICAgICAgICAgICAgQCAtYVsxNF0gLWFbMTNdDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjEyLCBbcjEwLCAjLTI4XSAgICAgICAgICAgICAgICAgQCAqKHRlbXBfcCAtIDE0KQ0KKyANCisgICAgICAgICAgU01MQUJCICAgICAgICByMTQsIHI5LCByNywgcjE0ICAgICAgICAgICAgICAgICBAIC1hWzEzXSAqICgqKHRlbXBfcCAtMTMpKQ0KKw0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHI2LCAgW3IxMCwgIy0zMF0gICAgICAgICAgICAgICAgIEAgKih0ZW1wX3AgLSAxNSkNCisNCisgICAgICAgICAgU01MQUJUICAgICAgICByMTQsIHIxMiwgcjcsIHIxNCAgICAgICAgICAgICAgICBAIC1hWzE0XSAqICgqKHRlbXBfcCAtIDE0KSkNCisNCisgICAgICAgICAgTERSICAgICAgICAgICByNywgIFtyMTMsICMtMzJdICAgICAgICAgICAgICAgICBAIC1hWzE2XSAtYVsxNV0NCisgICAgICAgICAgTERSU0ggICAgICAgICByMTEsIFtyMTAsICMtMzJdICAgICAgICAgICAgICAgICBAICoodGVtcF9wIC0gMTYpDQorDQorICAgICAgICAgIFNNTEFCQiAgICAgICAgcjE0LCByNiwgcjcsIHIxNCAgICAgICAgICAgICAgICAgQCAtYVsxNV0gKiAoKih0ZW1wX3AgLTE1KSkNCisNCisgICAgICAgICAgU01MQUJUICAgICAgICByMTQsIHIxMSwgcjcsIHIxNCAgICAgICAgICAgICAgICBAIC1hWzE2XSAqICgqKHRlbXBfcCAtMTYpKQ0KKw0KKyAgICAgICAgICBSU0IgICAgICAgICAgIHIxNCwgcjE0LCByMA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgTU9WICAgICAgICAgICByNywgcjE0LCBMU0wgIzQgICAgICAgICAgICAgICAgICBAIExfdG1wIDw8PTQNCisgICAgICAgICAgQUREICAgICAgICAgICByOCwgcjgsICMxDQorICAgICAgICAgIEFERCAgICAgICAgICAgcjE0LCByNywgIzB4ODAwMCAgICAgICAgICAgICAgICAgDQorICAgICAgICAgIE1PViAgICAgICAgICAgcjcsIHIxNCwgQVNSICMxNiAgICAgICAgICAgICAgICAgQCAoTF90bXAgKyAweDgwMDApID4+IDE2DQorICAgICAgICAgIENNUCAgICAgICAgICAgcjgsICM4MA0KKyAgICAgICAgICBTVFJIICAgICAgICAgIHI3LCBbcjEwXSAgICAgICAgICAgICAgICAgICAgICAgIEAgeXlbaV0NCisgICAgICAgICAgU1RSSCAgICAgICAgICByNywgW3IyXSwgIzIgICAgICAgICAgICAgICAgICAgICBAIHlbaV0NCisgICAgICAgICAgQkxUICAgICAgICAgICBMT09QDQorIA0KKyAgICAgICAgICBAIHVwZGF0ZSBtZW1bXQ0KKyAgICAgICAgICBBREQgICAgICAgICAgIHI1LCByMTMsICMxNjAgICAgICAgICAgICAgICAgICAgIEAgeXlbNjRdIGFkZHJlc3MNCisgICAgICAgICAgTU9WICAgICAgICAgICByMSwgcjMNCisgICAgICAgICAgTU9WICAgICAgICAgICByMCwgcjUNCisgICAgICAgICAgTU9WICAgICAgICAgICByMiwgIzE2DQorICAgICAgICAgIEJMICAgICAgICAgICAgdm9BV0JfQ29weSAgICAgICAgICANCisNCitTeW5fZmlsdF9hc21fZW5kOg0KKyANCisgICAgICAgICAgQUREICAgICAgICAgICByMTMsIHIxMywgIzcwMAkJICAgICANCisgICAgICAgICAgTERNRkQgICAJcjEzISwge3I0IC0gcjEyLCByMTV9IA0KKyAgICAgICAgICBARU5ERlVOQw0KKyAgICAgICAgICAuRU5EDQorIA0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYXNtL0FSTVY3L0RlZW1waF8zMl9uZW9uLnMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNy9EZWVtcGhfMzJfbmVvbi5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjYjYwYzMKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNy9EZWVtcGhfMzJfbmVvbi5zCkBAIC0wLDAgKzEsMTAyIEBACitALyoNCitAICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorQCAqKg0KK0AgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorQCAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorQCAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCitAICoqDQorQCAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorQCAqKg0KK0AgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KK0AgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCitAICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KK0AgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KK0AgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorQCAqLw0KK0ANCitAdm9pZCBEZWVtcGhfMzIoDQorQCAgICAgV29yZDE2IHhfaGlbXSwgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogaW5wdXQgc2lnbmFsIChiaXQzMS4uMTYpICovDQorQCAgICAgV29yZDE2IHhfbG9bXSwgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogaW5wdXQgc2lnbmFsIChiaXQxNS4uNCkgICovDQorQCAgICAgV29yZDE2IHlbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgICAgIDogb3V0cHV0IHNpZ25hbCAoeDE2KSAgICAgICovDQorQCAgICAgV29yZDE2IG11LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTE1IDogZGVlbXBoYXNpcyBmYWN0b3IgICAgICAgICovDQorQCAgICAgV29yZDE2IEwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogdmVjdG9yIHNpemUgICAgICAgICAgICAgICovDQorQCAgICAgV29yZDE2ICogbWVtICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaS9vKSAgIDogbWVtb3J5ICh5Wy0xXSkgICAgICAgICAgICovDQorQCAgICAgKQ0KKw0KK0B4X2hpICAgICBSTiAgICAgIFIwDQorQHhfbG8gICAgIFJOICAgICAgUjENCitAeVtdICAgICAgUk4gICAgICBSMg0KK0AqbWVtICAgICBSTiAgICAgIFIzDQorDQorICAgICAgICAgICAuc2VjdGlvbiAgLnRleHQNCisgICAgICAgICAgIC5nbG9iYWwgICBEZWVtcGhfMzJfYXNtDQorCSAgIA0KK0RlZW1waF8zMl9hc206DQorDQorICAgICAgICAgICBTVE1GRCAgIAlyMTMhLCB7cjQgLSByMTIsIHIxNH0gDQorCSAgIE1PViAgICAgICAgICByNCwgIzIgICAgICAgICAgICAgICAgICAgQGk9MA0KKwkgICBMRFJTSCAgICAgICAgcjYsIFtyMF0sICMyICAgICAgICAgICAgIEBsb2FkIHhfaGlbMF0NCisJICAgTERSU0ggICAgICAgIHI3LCBbcjFdLCAjMiAgICAgICAgICAgICBAbG9hZCB4X2xvWzBdDQorCSAgIExEUiAgICAgICAgICByNSwgPTIyMjgyICAgICAgICAgICAgICAgQHI1LS0tbXUNCisJICAgTU9WICAgICAgICAgIHIxMSwgIzB4ODAwMA0KKw0KKyAgICAgICAgICAgQHlbMF0NCisJICAgTU9WICAgICAgICAgIHIxMCwgcjYsIExTTCAjMTYgICAgICAgICBATF90bXAgPSB4X2hpWzBdPDwxNg0KKwkgICBNT1YgICAgICAgICAgcjgsICByNSwgQVNSICMxICAgICAgICAgIEBmYWMgPSBtdSA+PiAxDQorCSAgIExEUiAgICAgICAgICByNSwgIFtyM10NCisJICAgQUREICAgICAgICAgIHIxMiwgcjEwLCByNywgTFNMICM0ICAgICBATF90bXAgKz0geF9sb1swXSA8PCA0DQorCSAgIE1PViAgICAgICAgICByMTAsIHIxMiwgTFNMICMzICAgICAgICAgQExfdG1wIDw8PSAzDQorCSAgIE1VTCAgICAgICAgICByOSwgcjUsIHI4DQorCSAgIExEUlNIICAgICAgICByNiwgW3IwXSwgIzIgICAgICAgICAgICAgQGxvYWQgeF9oaVsxXSANCisJICAgUURBREQgICAgICAgIHIxMCwgcjEwLCByOQ0KKwkgICBMRFJTSCAgICAgICAgcjcsIFtyMV0sICMyICAgICAgICAgICAgIEBsb2FkIHhfbG9bMV0gIA0KKwkgICBNT1YgICAgICAgICAgcjEyLCByMTAsIExTTCAjMSAgICAgICAgIEBMX3RtcCA9IExfbWFjKExfdG1wLCAqbWVtLCBmYWMpDQorCSAgIFFBREQgICAgICAgICByMTAsIHIxMiwgcjExDQorCSAgIE1PViAgICAgICAgICByMTQsIHIxMCwgQVNSICMxNiAgICAgICAgQHlbMF0gPSByb3VuZChMX3RtcCkNCisNCisNCisJICAgTU9WICAgICAgICAgIHIxMCwgcjYsIExTTCAjMTYNCisJICAgQUREICAgICAgICAgIHIxMiwgcjEwLCByNywgTFNMICM0DQorICAgICAgICAgICBTVFJIICAgICAgICAgcjE0LCBbcjJdLCAjMiAgICAgICAgICAgIEB1cGRhdGUgeVswXQ0KKwkgICBNT1YgICAgICAgICAgcjEwLCByMTIsIExTTCAjMw0KKwkgICBNVUwgICAgICAgICAgcjksIHIxNCwgcjgNCisJICAgUURBREQgICAgICAgIHIxMCwgcjEwLCByOQ0KKwkgICBNT1YgICAgICAgICAgcjEyLCByMTAsIExTTCAjMQ0KKwkgICBRQUREICAgICAgICAgcjEwLCByMTIsIHIxMQ0KKwkgICBNT1YgICAgICAgICAgcjE0LCByMTAsIEFTUiAjMTYgICAgICAgIEB5WzFdID0gcm91bmQoTF90bXApDQorDQorTE9PUDoNCisgICAgICAgICAgIExEUlNIICAgICAgICByNiwgW3IwXSwgIzIgICAgICAgICAgICAgQGxvYWQgeF9oaVtdDQorCSAgIExEUlNIICAgICAgICByNywgW3IxXSwgIzINCisJICAgU1RSSCAgICAgICAgIHIxNCwgW3IyXSwgIzINCisJICAgTU9WICAgICAgICAgIHIxMCwgcjYsIExTTCAjMTYNCisJICAgQUREICAgICAgICAgIHIxMiwgcjEwLCByNywgTFNMICM0DQorCSAgIE1VTCAgICAgICAgICByOSwgcjE0LCByOA0KKwkgICBNT1YgICAgICAgICAgcjEwLCByMTIsIExTTCAjMw0KKwkgICBRREFERCAgICAgICAgcjEwLCByMTAsIHI5DQorICAgICAgICAgICBMRFJTSCAgICAgICAgcjYsIFtyMF0sICMyICAgICAgICAgICAgIEBsb2FkIHhfaGlbXQ0KKwkgICBNT1YgICAgICAgICAgcjEyLCByMTAsIExTTCAjMQ0KKwkgICBRQUREICAgICAgICAgcjEwLCByMTIsIHIxMQ0KKwkgICBMRFJTSCAgICAgICAgcjcsIFtyMV0sICMyDQorCSAgIE1PViAgICAgICAgICByMTQsIHIxMCwgQVNSICMxNg0KKw0KKwkgICBNT1YgICAgICAgICAgcjEwLCByNiwgTFNMICMxNg0KKwkgICBBREQgICAgICAgICAgcjEyLCByMTAsIHI3LCBMU0wgIzQNCisJICAgU1RSSCAgICAgICAgIHIxNCwgW3IyXSwgIzINCisJICAgTVVMICAgICAgICAgIHI5LCByMTQsIHI4DQorCSAgIE1PViAgICAgICAgICByMTAsIHIxMiwgTFNMICMzDQorCSAgIFFEQUREICAgICAgICByMTAsIHIxMCwgcjkNCisgICAgICAgICAgIEFERCAgICAgICAgICByNCwgcjQsICMyDQorCSAgIE1PViAgICAgICAgICByMTIsIHIxMCwgTFNMICMxDQorCSAgIFFBREQgICAgICAgICByMTAsIHIxMiwgcjExDQorICAgICAgICAgICBDTVAgICAgICAgICAgcjQsICM2NA0KKwkgICBNT1YgICAgICAgICAgcjE0LCByMTAsIEFTUiAjMTYNCisNCisgICAgICAgICAgIEJMVCAgICAgICAgICBMT09QDQorICAgICAgICAgICBTVFIgICAgICAgICAgcjE0LCBbcjNdDQorICAgICAgICAgICBTVFJIICAgICAgICAgcjE0LCBbcjJdCSAgIA0KKw0KKyAgICAgICAgICAgTERNRkQgICAJcjEzISwge3I0IC0gcjEyLCByMTV9IA0KKw0KKwkgICAuRU5EDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9hc20vQVJNVjcvRG90X3BfbmVvbi5zIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9hc20vQVJNVjcvRG90X3BfbmVvbi5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3Y2EzNDQKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNy9Eb3RfcF9uZW9uLnMKQEAgLTAsMCArMSwxMjcgQEAKK0AvKg0KK0AgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCitAICoqDQorQCAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCitAICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCitAICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KK0AgKioNCitAICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCitAICoqDQorQCAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorQCAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KK0AgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorQCAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorQCAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCitAICovDQorQA0KK0AqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK0BXb3JkMzIgRG90X3Byb2R1Y3QxMiggICAgICAgICAgICAgICAgICAgICAgLyogKG8pIFEzMTogbm9ybWFsaXplZCByZXN1bHQgKDEgPCB2YWwgPD0gLTEpICovDQorQCAgICAgICBXb3JkMTYgeFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAxMmJpdHM6IHggdmVjdG9yICAgICAgICAgICAgICAgICAgICAgICAqLw0KK0AgICAgICAgV29yZDE2IHlbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgMTJiaXRzOiB5IHZlY3RvciAgICAgICAgICAgICAgICAgICAgICAgKi8NCitAICAgICAgIFdvcmQxNiBsZywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgIDogdmVjdG9yIGxlbmd0aCAgICAgICAgICAgICAgICAgICAgICovDQorQCAgICAgICBXb3JkMTYgKiBleHAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSAgICA6IGV4cG9uZW50IG9mIHJlc3VsdCAoMC4uKzMwKSAgICAgICAqLw0KK0ApDQorQCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KK0AgIHhbXSAgIC0tLSAgcjANCitAICB5W10gICAtLS0gIHIxDQorQCAgbGcgICAgLS0tICByMg0KK0AgICpleHAgIC0tLSAgcjMNCisNCisgICAgICAgICAgLnNlY3Rpb24gICAudGV4dA0KKyAgICAgICAgICAuZ2xvYmFsICAgIERvdF9wcm9kdWN0MTJfYXNtDQorDQorRG90X3Byb2R1Y3QxMl9hc206DQorDQorICAgICAgICAgIFNUTUZEICAgCSAgICByMTMhLCB7cjQgLSByMTIsIHIxNH0NCisJICBDTVAgICAgICAgICAgICAgICByMCwgcjENCisJICBCRVEgICAgICAgICAgICAgICBMT09QX0VRDQorDQorICAgICAgICAgIFZMRDEuUzE2ICAgICAgICAgIHtRMCwgUTF9LCBbcjBdISAgICAgICAgICAgICAgIEBsb2FkIDE2IFdvcmQxNiB4W10NCisgICAgICAgICAgVkxEMS5TMTYgICAgICAgICAge1EyLCBRM30sIFtyMF0hICAgICAgICAgICAgICAgQGxvYWQgMTYgV29yZDE2IHhbXQ0KKyAgICAgICAgICBWTEQxLlMxNiAgICAgICAgICB7UTQsIFE1fSwgW3IwXSEgICAgICAgICAgICAgICBAbG9hZCAxNiBXb3JkMTYgeFtdDQorICAgICAgICAgIFZMRDEuUzE2ICAgICAgICAgIHtRNiwgUTd9LCBbcjBdISAgICAgICAgICAgICAgIEBsb2FkIDE2IFdvcmQxNiB4W10NCisJICBWTEQxLlMxNiAgICAgICAgICB7UTgsIFE5fSwgW3IxXSEgICAgICAgICAgICAgICBAbG9hZCAxNiBXb3JkMTYgeVtdDQorCSAgVkxEMS5TMTYgICAgICAgICAge1ExMCwgUTExfSwgW3IxXSEgICAgICAgICAgICAgQGxvYWQgMTYgV29yZDE2IHlbXQ0KKwkgIFZMRDEuUzE2ICAgICAgICAgIHtRMTIsIFExM30sIFtyMV0hICAgICAgICAgICAgIEBsb2FkIDE2IFdvcmQxNiB5W10NCisNCisgICAgICAgICAgVk1VTEwuUzE2ICAgICAgICAgUTE1LCBEMTYsIEQwDQorICAgICAgICAgIFZNTEFMLlMxNiAgICAgICAgIFExNSwgRDE3LCBEMSAgICAgICAgICAgICAgIA0KKyAgICAgICAgICBWTUxBTC5TMTYgICAgICAgICBRMTUsIEQxOCwgRDINCisgICAgICAgICAgVk1MQUwuUzE2ICAgICAgICAgUTE1LCBEMTksIEQzDQorCSAgVkxEMS5TMTYgICAgICAgICAge1EwLCBRMX0sIFtyMV0hICAgICAgICAgICAgICAgQGxvYWQgMTYgV29yZDE2IHlbXSAgIA0KKyAgICAgICAgICBWTUxBTC5TMTYgICAgICAgICBRMTUsIEQyMCwgRDQgICAgICAgDQorICAgICAgICAgIFZNTEFMLlMxNiAgICAgICAgIFExNSwgRDIxLCBENQ0KKyAgICAgICAgICBWTUxBTC5TMTYgICAgICAgICBRMTUsIEQyMiwgRDYNCisgICAgICAgICAgVk1MQUwuUzE2ICAgICAgICAgUTE1LCBEMjMsIEQ3ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgIFZNTEFMLlMxNiAgICAgICAgIFExNSwgRDI0LCBEOA0KKyAgICAgICAgICBWTUxBTC5TMTYgICAgICAgICBRMTUsIEQyNSwgRDkNCisgICAgICAgICAgVk1MQUwuUzE2ICAgICAgICAgUTE1LCBEMjYsIEQxMA0KKyAgICAgICAgICBWTUxBTC5TMTYgICAgICAgICBRMTUsIEQyNywgRDExDQorICAgICAgICAgIFZNTEFMLlMxNiAgICAgICAgIFExNSwgRDAsIEQxMg0KKyAgICAgICAgICBWTUxBTC5TMTYgICAgICAgICBRMTUsIEQxLCBEMTMNCisgICAgICAgICAgVk1MQUwuUzE2ICAgICAgICAgUTE1LCBEMiwgRDE0DQorICAgICAgICAgIFZNTEFMLlMxNiAgICAgICAgIFExNSwgRDMsIEQxNQ0KKw0KKyAgICAgICAgICBDTVAgICAgICAgICAgICAgICByMiwgIzY0DQorICAgICAgICAgIEJFUSAgICAgICAgICAgICAgIExhYmxlMQ0KKyAgICAgICAgICBWTEQxLlMxNiAgICAgICAgICB7UTAsIFExfSwgW3IwXSEgICAgICAgICAgICAgICBAbG9hZCAxNiBXb3JkMTYgeFtdICANCisJICBWTEQxLlMxNiAgICAgICAgICB7UTIsIFEzfSwgW3IxXSEgDQorICAgICAgICAgIFZNTEFMLlMxNiAgICAgICAgIFExNSwgRDQsIEQwICAgICAgICAgICAgIA0KKyAgICAgICAgICBWTUxBTC5TMTYgICAgICAgICBRMTUsIEQ1LCBEMQ0KKyAgICAgICAgICBWTUxBTC5TMTYgICAgICAgICBRMTUsIEQ2LCBEMg0KKyAgICAgICAgICBWTUxBTC5TMTYgICAgICAgICBRMTUsIEQ3LCBEMw0KKwkgIEJMICAgICAgICAgICAgICAgIExhYmxlMQ0KKw0KK0xPT1BfRVE6DQorICAgICAgICAgIFZMRDEuUzE2ICAgICAgICAgIHtRMCwgUTF9LCBbcjBdIQ0KKwkgIFZMRDEuUzE2ICAgICAgICAgIHtRMiwgUTN9LCBbcjBdIQ0KKwkgIFZMRDEuUzE2ICAgICAgICAgIHtRNCwgUTV9LCBbcjBdIQ0KKwkgIFZMRDEuUzE2ICAgICAgICAgIHtRNiwgUTd9LCBbcjBdIQ0KKwkgIFZNVUxMLlMxNiAgICAgICAgIFExNSwgRDAsIEQwDQorCSAgVk1MQUwuUzE2ICAgICAgICAgUTE1LCBEMSwgRDENCisJICBWTUxBTC5TMTYgICAgICAgICBRMTUsIEQyLCBEMg0KKwkgIFZNTEFMLlMxNiAgICAgICAgIFExNSwgRDMsIEQzDQorCSAgVk1MQUwuUzE2ICAgICAgICAgUTE1LCBENCwgRDQNCisJICBWTUxBTC5TMTYgICAgICAgICBRMTUsIEQ1LCBENQ0KKwkgIFZNTEFMLlMxNiAgICAgICAgIFExNSwgRDYsIEQ2DQorCSAgVk1MQUwuUzE2ICAgICAgICAgUTE1LCBENywgRDcNCisJICBWTUxBTC5TMTYgICAgICAgICBRMTUsIEQ4LCBEOA0KKwkgIFZNTEFMLlMxNiAgICAgICAgIFExNSwgRDksIEQ5DQorCSAgVk1MQUwuUzE2ICAgICAgICAgUTE1LCBEMTAsIEQxMA0KKwkgIFZNTEFMLlMxNiAgICAgICAgIFExNSwgRDExLCBEMTENCisJICBWTUxBTC5TMTYgICAgICAgICBRMTUsIEQxMiwgRDEyDQorCSAgVk1MQUwuUzE2ICAgICAgICAgUTE1LCBEMTMsIEQxMw0KKwkgIFZNTEFMLlMxNiAgICAgICAgIFExNSwgRDE0LCBEMTQNCisJICBWTUxBTC5TMTYgICAgICAgICBRMTUsIEQxNSwgRDE1DQorDQorCSAgQ01QICAgICAgICAgICAgICAgcjIsICM2NA0KKwkgIEJFUSAgICAgICAgICAgICAgIExhYmxlMQ0KKwkgIFZMRDEuUzE2ICAgICAgICAgIHtRMCwgUTF9LCBbcjBdIQ0KKwkgIFZNTEFMLlMxNiAgICAgICAgIFExNSwgRDAsIEQwDQorCSAgVk1MQUwuUzE2ICAgICAgICAgUTE1LCBEMSwgRDENCisJICBWTUxBTC5TMTYgICAgICAgICBRMTUsIEQyLCBEMg0KKwkgIFZNTEFMLlMxNiAgICAgICAgIFExNSwgRDMsIEQzDQorDQorTGFibGUxOiANCisNCisgICAgICAgICAgVlFBREQuUzMyICAgICAgICAgRDMwLCBEMzAsIEQzMQ0KKyAgICAgICAgICBWUEFERC5TMzIgICAgICAgICBEMzAsIEQzMCwgRDMwDQorICAgICAgICAgIFZNT1YuUzMyICAgICAgICAgIHIxMiwgRDMwWzBdICAgICAgICANCisNCisJICBBREQgICAgICAgICAgICAgICByMTIsIHIxMiwgcjEyDQorICAgICAgICAgIEFERCAgICAgICAgICAgICAgIHIxMiwgcjEyLCAjMSAgICAgICAgICAgICAgICAgICAgICAgICBAIExfc3VtID0gKExfc3VtIDw8IDEpICArIDENCisJICBNT1YgICAgICAgICAgICAgICByNCwgcjEyDQorCSAgQ01QICAgICAgICAgICAgICAgcjEyLCAjMA0KKwkgIFJTQkxUICAgICAgICAgICAgIHI0LCByMTIsICMwDQorICAgICAgICAgIENMWiAgICAgICAgICAgICAgIHIxMCwgcjQNCisgICAgICAgICAgU1VCICAgICAgICAgICAgICAgcjEwLCByMTAsICMxICAgICAgICAgICAgICAgICAgICAgICAgIEAgc2Z0ID0gbm9ybV9sKExfc3VtKQ0KKyAgICAgICAgICBNT1YgICAgICAgICAgICAgICByMCwgcjEyLCBMU0wgcjEwICAgICAgICAgICAgICAgICAgICAgQCBMX3N1bSA9IExfc3VtIDw8IHNmdA0KKyAgICAgICAgICBSU0IgICAgICAgICAgICAgICByMTEsIHIxMCwgIzMwICAgICAgICAgICAgICAgICAgICAgICAgQCAqZXhwID0gMzAgLSBzZnQNCisgICAgICAgICAgU1RSSCAgICAgICAgICAgICAgcjExLCBbcjNdICAgICAgICAgICAgICAgICAgICAgDQorDQorRG90X3Byb2R1Y3QxMl9lbmQ6DQorCQkgICAgIA0KKyAgICAgICAgICBMRE1GRCAgIAkgICAgcjEzISwge3I0IC0gcjEyLCByMTV9IA0KKw0KKyAgICAgICAgICAuRU5EDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9hc20vQVJNVjcvRmlsdF82a183a19uZW9uLnMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNy9GaWx0XzZrXzdrX25lb24ucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xODgwMDI0Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9hc20vQVJNVjcvRmlsdF82a183a19uZW9uLnMKQEAgLTAsMCArMSwyMjggQEAKK0AvKg0KK0AgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCitAICoqDQorQCAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCitAICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCitAICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KK0AgKioNCitAICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCitAICoqDQorQCAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorQCAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KK0AgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorQCAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorQCAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCitAICovDQorQCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorQCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorQHZvaWQgRmlsdF82a183aygNCitAICAgICBXb3JkMTYgc2lnbmFsW10sICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0OiAgc2lnbmFsICAgICAgICAgICAgICAgICAgKi8NCitAICAgICBXb3JkMTYgbGcsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0OiAgbGVuZ3RoIG9mIGlucHV0ICAgICAgICAgKi8NCitAICAgICBXb3JkMTYgbWVtW10gICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGluL291dDogbWVtb3J5IChzaXplPTMwKSAgICAgICAgKi8NCitAKQ0KK0AqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KK0AgcjAgICAgLS0tICBzaWduYWxbXQ0KK0AgcjEgICAgLS0tICBsZw0KK0AgcjIgICAgLS0tICBtZW1bXSANCisNCisgICAgICAgICAgLnNlY3Rpb24gIC50ZXh0DQorICAgICAgICAgIC5nbG9iYWwgICBGaWx0XzZrXzdrX2FzbQ0KKyAgICAgICAgICAuZXh0ZXJuICAgZmlyXzZrXzdrDQorDQorRmlsdF82a183a19hc206DQorDQorICAgICAgICAgIFNUTUZEICAgCQlyMTMhLCB7cjAgLSByMTIsIHIxNH0gDQorICAgICAgICAgIFNVQiAgICAJCXIxMywgcjEzLCAjMjQwICAgICAgICAgICAgICBAIHhbTF9TVUJGUjE2ayArIChMX0ZJUiAtIDEpXQ0KKyAgICAgICAgICBNT1YgICAgIAkJcjgsIHIwICAgICAgICAgICAgICAgICAgICAgIEAgY29weSBzaWduYWxbXSBhZGRyZXNzDQorICAgICAgICAgIE1PViAgICAgCQlyNSwgcjIgICAgICAgICAgICAgICAgICAgICAgQCBjb3B5IG1lbVtdIGFkZHJlc3MNCisNCisgICAgICAgICAgTU9WICAgICAJCXIwLCByMg0KKyAgICAgICAgICBNT1YgICAgIAkJcjEsIHIxMw0KKw0KKwkgIFZMRDEuUzE2ICAgICAgICAgICAgICB7RDAsIEQxLCBEMiwgRDN9LCBbcjBdIQ0KKwkgIFZMRDEuUzE2ICAgICAgICAgICAgICB7RDQsIEQ1LCBENiwgRDd9LCBbcjBdIQ0KKw0KKwkgIFZTVDEuUzE2ICAgICAgICAgICAgICB7RDAsIEQxLCBEMiwgRDN9LCBbcjFdIQ0KKwkgIFZTVDEuUzE2ICAgICAgICAgICAgICB7RDQsIEQ1LCBENn0sIFtyMV0hDQorCSAgVlNUMS5TMTYgICAgICAgICAgICAgIEQ3WzBdLCBbcjFdIQ0KKwkgIFZTVDEuUzE2ICAgICAgICAgICAgICBEN1sxXSwgW3IxXSENCisNCisNCisNCisgICAgICAgICAgTERSICAgICAJCXIxMCwgTGFibGUxICAgICAgICAgICAgICAgICBAIGdldCBmaXJfN2sgYWRkcmVzcyAgICAgDQorICAgICAgICAgIE1PViAgICAgICAgICAgICAgICAgICByMywgcjggICAgICAgICAgICAgICAgICAgICAgQCBjaGFuZ2UgbXlNZW1Db3B5IHRvIENvcHksIGR1ZSB0byBDb3B5IHdpbGwgY2hhbmdlIHIzIGNvbnRlbnQNCisgICAgICAgICAgQUREICAgICAJICAgIAlyNiwgcjEzLCAjNjAgICAgICAgICAgICAgICAgQCBnZXQgeFtMX0ZJUiAtIDFdIGFkZHJlc3MNCisgICAgICAgICAgTU9WICAgICAgICAgICAJcjcsIHIzICAgICAgICAgICAgICAgICAgICAgIEAgZ2V0IHNpZ25hbFtpXQ0KKyAgICAgICAgICBAZm9yIChpID0gbGcgLSAxQCBpID49IDBAIGktLSkNCisgICAgICAgICAgQHsNCisgICAgICAgICAgQCAgICAgeFtpICsgTF9GSVIgLSAxXSA9IHNpZ25hbFtpXSA+PiAyQA0KKyAgICAgICAgICBAfQ0KKwkgIFZMRDEuUzE2ICAgICAgICAgICAgICB7UTAsIFExfSwgW3I3XSEJCSAgICBAIHNpZ25hbFswXSAgfiBzaWduYWxbMTVdDQorCSAgVkxEMS5TMTYgICAgICAgICAgICAgIHtRMiwgUTN9LCBbcjddISAgICAgICAgICAgICBAIHNpZ25hbFsxNl0gfiBzaWduYWxbMzFdDQorICAgICAgICAgIFZMRDEuUzE2ICAgICAgICAgICAgICB7UTQsIFE1fSwgW3I3XSEgICAgICAgICAgICAgQCBzaWduYWxbMzJdIH4gc2lnbmFsWzQ3XQ0KKwkgIFZMRDEuUzE2ICAgICAgICAgICAgICB7UTYsIFE3fSwgW3I3XSEgICAgICAgICAgICAgQCBzaWduYWxbNDhdIH4gc2lnbmFsWzYzXQ0KKwkgIFZMRDEuUzE2ICAgICAgICAgICAgICB7UTgsIFE5fSwgW3I3XSEgICAgICAgICAgICAgQCBzaWduYWxbNjRdIH4gc2lnbmFsWzc5XQ0KKwkgIFZTSFIuUzE2ICAgICAgICAgICAgICBRMTAsIFEwLCAjMg0KKyAgICAgICAgICBWU0hSLlMxNiAgICAgICAgICAgICAgUTExLCBRMSwgIzINCisgICAgICAgICAgVlNIUi5TMTYgICAgICAgICAgICAgIFExMiwgUTIsICMyDQorCSAgVlNIUi5TMTYgICAgICAgICAgICAgIFExMywgUTMsICMyDQorCSAgVlNUMS5TMTYgICAgICAgICAgICAgIHtRMTAsIFExMX0sIFtyNl0hDQorCSAgVlNIUi5TMTYgICAgICAgICAgICAgIFEwLCAgUTQsICMyDQorCSAgVlNIUi5TMTYgICAgICAgICAgICAgIFExLCAgUTUsICMyDQorCSAgVlNIUi5TMTYgICAgICAgICAgICAgIFExMCwgUTYsICMyDQorCSAgVlNIUi5TMTYgICAgICAgICAgICAgIFExMSwgUTcsICMyDQorCSAgVlNIUi5TMTYgICAgICAgICAgICAgIFEyLCAgUTgsICMyDQorCSAgVlNIUi5TMTYgICAgICAgICAgICAgIFEzLCAgUTksICMyDQorCSAgVlNUMS5TMTYgICAgICAgICAgICAgIHtRMTIsIFExM30sIFtyNl0hDQorCSAgVlNUMS5TMTYgICAgICAgICAgICAgIHtRMCwgUTF9LCBbcjZdIQ0KKwkgIFZTVDEuUzE2ICAgICAgICAgICAgICB7UTEwLCBRMTF9LCBbcjZdIQ0KKwkgIFZTVDEuUzE2ICAgICAgICAgICAgICB7UTIsIFEzfSwgW3I2XSENCisNCisJICBNT1YgICAgICAgICAgICAgICAgICAgcjEyLCByNQ0KKyAgICAgICAgICBAU1RSICAgICAJCXI1LCBbc3AsICMtNF0gICAgICAgICAgICAgICBAIFBVU0ggIHI1IHRvIHN0YWNrDQorICAgICAgICAgIEAgbm90IHVzZSByZWdpc3RlcnM6IHI0LCByMTAsIHIxMiwgcjE0LCByNQ0KKyAgICAgICAgICBNT1YgICAgIAkJcjQsIHIxMyANCisgICAgICAgICAgTU9WICAgICAJCXI1LCAjMCAgICAgICAgICAgICAgICAgICAgICBAIGkgPSAwICAgIA0KKyAgICAgICAgIA0KKyAgICAgICAgICBAIHI0IC0tLSB4W2ldLCByMTAgLS0tLSBmaXJfNmtfN2sNCisgICAgICAgICAgVkxEMS5TMTYgICAgICAgICAgICAgIHtRMCwgUTF9LCBbcjEwXSEgICAgICAgICAgIEBmaXJfNmtfN2tbMF0gIH4gZmlyXzZrXzdrWzE1XQ0KKwkgIFZMRDEuUzE2ICAgICAgICAgICAgICB7UTIsIFEzfSwgW3IxMF0hICAgICAgICAgICBAZmlyXzZrXzdrWzE2XSB+IGZpcl82a183a1szMV0NCisgICAgICAgICAgVk1PVi5TMTYgICAgICAgICAgICAgIEQ3WzNdLCByNSAgICAgICAgICAgICAgICAgICAgICAgIEBzZXQgZmlyXzZrXzdLID0gMA0KKw0KKwkgIFZMRDEuUzE2ICAgICAgICAgICAgICB7UTQsIFE1fSwgW3I0XSEgICAgICAgICAgICBAeFswXSAgfiB4WzE1XQ0KKwkgIFZMRDEuUzE2ICAgICAgICAgICAgICB7UTYsIFE3fSwgW3I0XSEgICAgICAgICAgICBAeFsxNl0gfiBYWzMxXQ0KKwkgIFZMRDEuUzE2ICAgICAgICAgICAgICB7UTh9LCBbcjRdISANCisgICAgICAgICAgVk1PVi5TMTYgICAgICAgICAgICAgIFExNSwgIzAJICANCisgICAgICAgICAgDQorTE9PUF82SzdLOg0KKw0KKyAgICAgICAgICBWTVVMTC5TMTYgICAgICAgICAgICAgUTksRDgsRDBbMF0gICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICBWTVVMTC5TMTYgICAgICAgICAgICAgUTEwLEQ5LEQxWzBdIA0KKyAgICAgICAgICBWTVVMTC5TMTYgICAgICAgICAgICAgUTExLEQ5LEQwWzBdICAgICAgICAgICAgICAgICANCisgICAgICAgICAgVk1VTEwuUzE2ICAgICAgICAgICAgIFExMixEMTAsRDFbMF0NCisgICAgICAgICAgVkVYVC44ICAgICAgICAgICAgICAgIFE0LFE0LFE1LCMyDQorICAgICAgICAgIFZNTEFMLlMxNiAgICAgICAgICAgICBROSxEMTAsRDJbMF0NCisgICAgICAgICAgVk1MQUwuUzE2ICAgICAgICAgICAgIFExMCxEMTEsRDNbMF0NCisgICAgICAgICAgVk1MQUwuUzE2ICAgICAgICAgICAgIFExMSxEMTEsRDJbMF0NCisgICAgICAgICAgVk1MQUwuUzE2ICAgICAgICAgICAgIFExMixEMTIsRDNbMF0gICAgDQorICAgICAgICAgIFZFWFQuOCAgICAgICAgICAgICAgICBRNSxRNSxRNiwjMg0KKyAgICAgICAgICBWTUxBTC5TMTYgICAgICAgICAgICAgUTksRDEyLEQ0WzBdDQorICAgICAgICAgIFZNTEFMLlMxNiAgICAgICAgICAgICBRMTAsRDEzLEQ1WzBdDQorICAgICAgICAgIFZNTEFMLlMxNiAgICAgICAgICAgICBRMTEsRDEzLEQ0WzBdDQorICAgICAgICAgIFZNTEFMLlMxNiAgICAgICAgICAgICBRMTIsRDE0LEQ1WzBdDQorICAgICAgICAgIFZFWFQuOCAgICAgICAgICAgICAgICBRNixRNixRNywjMg0KKyAgICAgICAgICBWTUxBTC5TMTYgICAgICAgICAgICAgUTksRDE0LEQ2WzBdDQorICAgICAgICAgIFZNTEFMLlMxNiAgICAgICAgICAgICBRMTAsRDE1LEQ3WzBdDQorICAgICAgICAgIFZNTEFMLlMxNiAgICAgICAgICAgICBRMTEsRDE1LEQ2WzBdDQorCSAgVk1MQUwuUzE2ICAgICAgICAgICAgIFExMixEMTYsRDdbMF0NCisJICBWRVhULjggIAkJUTcsUTcsUTgsIzIgDQorDQorCSAgVk1MQUwuUzE2IAkJUTksRDgsRDBbMV0gICAgICAgICAgICAgICAgDQorCSAgVk1MQUwuUzE2ICAgICAJUTEwLEQ5LEQxWzFdDQorCSAgVkVYVC44IAkJUTgsUTgsUTE1LCMyIA0KKwkgIFZNTEFMLlMxNiAJCVExMSxEOSxEMFsxXSAgICAgICAgICAgICAgICANCisJICBWTUxBTC5TMTYgCQlRMTIsRDEwLEQxWzFdDQorCSAgVkVYVC44ICAJCVE0LFE0LFE1LCMyDQorCSAgVk1MQUwuUzE2IAkJUTksRDEwLEQyWzFdDQorCSAgVk1MQUwuUzE2IAkJUTEwLEQxMSxEM1sxXQ0KKwkgIFZNTEFMLlMxNiAJCVExMSxEMTEsRDJbMV0NCisJICBWTUxBTC5TMTYgCQlRMTIsRDEyLEQzWzFdICAgIA0KKwkgIFZFWFQuOCAgCQlRNSxRNSxRNiwjMg0KKwkgIFZNTEFMLlMxNiAJCVE5LEQxMixENFsxXQ0KKwkgIFZNTEFMLlMxNiAJCVExMCxEMTMsRDVbMV0NCisJICBWTUxBTC5TMTYgCQlRMTEsRDEzLEQ0WzFdDQorCSAgVk1MQUwuUzE2IAkJUTEyLEQxNCxENVsxXQ0KKwkgIFZFWFQuOCAgCQlRNixRNixRNywjMg0KKwkgIFZNTEFMLlMxNiAJCVE5LEQxNCxENlsxXQ0KKwkgIFZNTEFMLlMxNiAJCVExMCxEMTUsRDdbMV0NCisJICBWTUxBTC5TMTYgCQlRMTEsRDE1LEQ2WzFdDQorCSAgVk1MQUwuUzE2IAkJUTEyLEQxNixEN1sxXQ0KKwkgIFZFWFQuOCAgCQlRNyxRNyxROCwjMiANCisNCisJICBWTUxBTC5TMTYgCQlROSxEOCxEMFsyXSAgICAgICAgICAgDQorCSAgVk1MQUwuUzE2IAkJUTEwLEQ5LEQxWzJdDQorCSAgVkVYVC44IAkJUTgsUTgsUTE1LCMyIA0KKwkgIFZNTEFMLlMxNiAJCVExMSxEOSxEMFsyXSAgICAgICAgICAgDQorCSAgVk1MQUwuUzE2IAkJUTEyLEQxMCxEMVsyXQ0KKwkgIFZFWFQuOCAgCQlRNCxRNCxRNSwjMg0KKwkgIFZNTEFMLlMxNiAJCVE5LEQxMCxEMlsyXQ0KKwkgIFZNTEFMLlMxNiAJCVExMCxEMTEsRDNbMl0NCisJICBWTUxBTC5TMTYgCQlRMTEsRDExLEQyWzJdDQorCSAgVk1MQUwuUzE2IAkJUTEyLEQxMixEM1syXSAgICANCisJICBWRVhULjggIAkJUTUsUTUsUTYsIzINCisJICBWTUxBTC5TMTYgCQlROSxEMTIsRDRbMl0NCisJICBWTUxBTC5TMTYgCQlRMTAsRDEzLEQ1WzJdDQorCSAgVk1MQUwuUzE2IAkJUTExLEQxMyxENFsyXQ0KKwkgIFZNTEFMLlMxNiAJCVExMixEMTQsRDVbMl0NCisJICBWRVhULjggIAkJUTYsUTYsUTcsIzINCisJICBWTUxBTC5TMTYgCQlROSxEMTQsRDZbMl0NCisJICBWTUxBTC5TMTYgCQlRMTAsRDE1LEQ3WzJdDQorCSAgVk1MQUwuUzE2IAkJUTExLEQxNSxENlsyXQ0KKwkgIFZNTEFMLlMxNiAJCVExMixEMTYsRDdbMl0NCisJICBWRVhULjggIAkJUTcsUTcsUTgsIzIgDQorDQorCSAgVk1MQUwuUzE2IAkJUTksRDgsRDBbM10gICAgICAgICAgICAgIA0KKwkgIFZNTEFMLlMxNiAJCVExMCxEOSxEMVszXQ0KKwkgIFZFWFQuOCAJCVE4LFE4LFExNSwjMiANCisJICBWTUxBTC5TMTYgCQlRMTEsRDksRDBbM10gICAgICAgICAgICAgIA0KKwkgIFZNTEFMLlMxNiAJCVExMixEMTAsRDFbM10NCisJICBWRVhULjggIAkJUTQsUTQsUTUsIzINCisJICBWTUxBTC5TMTYgCQlROSxEMTAsRDJbM10NCisJICBWTUxBTC5TMTYgCQlRMTAsRDExLEQzWzNdDQorCSAgVk1MQUwuUzE2IAkJUTExLEQxMSxEMlszXQ0KKwkgIFZNTEFMLlMxNiAJCVExMixEMTIsRDNbM10gICAgDQorCSAgVkVYVC44ICAJCVE1LFE1LFE2LCMyDQorCSAgVk1MQUwuUzE2IAkJUTksRDEyLEQ0WzNdDQorCSAgVk1MQUwuUzE2IAkJUTEwLEQxMyxENVszXQ0KKwkgIFZNTEFMLlMxNiAJCVExMSxEMTMsRDRbM10NCisJICBWTUxBTC5TMTYgCQlRMTIsRDE0LEQ1WzNdDQorCSAgVkVYVC44ICAJCVE2LFE2LFE3LCMyDQorCSAgVk1MQUwuUzE2IAkJUTksRDE0LEQ2WzNdDQorCSAgVk1MQUwuUzE2IAkJUTEwLEQxNSxEN1szXQ0KKwkgIFZNTEFMLlMxNiAJCVExMSxEMTUsRDZbM10NCisJICBWTUxBTC5TMTYgCQlRMTIsRDE2LEQ3WzNdDQorCSAgVkVYVC44IAkJUTcsUTcsUTgsIzIgICAgIA0KKw0KKwkgIFZNT1YuUzE2ICAJCUQ4LEQ5DQorCSAgVkVYVC44IAkJUTgsUTgsUTE1LCMyIA0KKwkgIFZNT1YuUzE2ICAJCUQ5LEQxMA0KKwkgIFZBREQuUzMyICAJCVE5LFE5LFExMA0KKwkgIFZNT1YuUzE2ICAJCUQxMCxEMTENCisJICBWTU9WLlMxNiAgCQlEMTEsRDEyDQorCSAgVkFERC5TMzIgIAkJUTExLFExMSxRMTINCisJICBWTU9WLlMxNiAgCQlEMTIsRDEzDQorCSAgVlFSU0hSTi5TMzIgCQlEMjgsUTksIzE1DQorCSAgVk1PVi5TMTYgIAkJRDEzLEQxNA0KKwkgIFZNT1YuUzE2ICAJCUQxNCxEMTUNCisJICBWUVJTSFJOLlMzMiAJCUQyOSxRMTEsIzE1DQorCSAgVk1PVi5TMTYgIAkJRDE1LEQxNg0KKw0KKwkgIFZMRDEuUzE2ICAJCXtROH0sW3I0XSENCisJICBBREQgICAgICAgICAgICAgICAgICAgcjUsIHI1LCAjOA0KKwkgIENNUCAgIAkJcjUsICM4MA0KKwkgIFZTVDEuUzE2ICAJCXtEMjgsRDI5fSxbcjNdIQ0KKwkgIEJMVCAgICAgCQlMT09QXzZLN0sNCisNCisgICAgICAgICAgQUREICAgICAJCXIwLCByMTMsICMxNjAgICAgICAgICAgICAgICBAeCArIGxnDQorCSAgTU9WICAgICAgICAgICAgICAgICAgIHIxLCByMTINCisJICBATERSICAgICAJCXIxLCBbc3AsICMtNF0gICAgICAgICAgICAgICBAbWVtIGFkZHJlc3MNCisNCisJICBWTEQxLlMxNiAgICAgICAgICAgICAge0QwLCBEMSwgRDIsIEQzfSwgW3IwXSENCisJICBWTEQxLlMxNiAgICAgICAgICAgICAge0Q0LCBENSwgRDYsIEQ3fSwgW3IwXSENCisNCisJICBWU1QxLlMxNiAgICAgICAgICAgICAge0QwLCBEMSwgRDIsIEQzfSwgW3IxXSENCisJICBWU1QxLlMxNiAgICAgICAgICAgICAge0Q0LCBENSwgRDZ9LCBbcjFdIQ0KKwkgIFZTVDEuUzE2ICAgICAgICAgICAgICBEN1swXSwgW3IxXSENCisJICBWU1QxLlMxNiAgICAgICAgICAgICAgRDdbMV0sIFtyMV0hDQorICAgICAgICAgICAgICAgICAgICANCitGaWx0XzZrXzdrX2VuZDoNCisNCisgICAgICAgICAgQUREICAgICAJCXIxMywgcjEzLCAjMjQwICANCisgICAgICAgICAgTERNRkQgICAJCXIxMyEsIHtyMCAtIHIxMiwgcjE1fSANCisgDQorTGFibGUxOg0KKyAgICAgICAgICAud29yZCAgIAkJZmlyXzZrXzdrDQorICAgICAgICAgIEBFTkRGVU5DDQorICAgICAgICAgIC5FTkQNCisNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNy9Ob3JtX0NvcnJfbmVvbi5zIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9hc20vQVJNVjcvTm9ybV9Db3JyX25lb24ucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MGU5YWRlCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9hc20vQVJNVjcvTm9ybV9Db3JyX25lb24ucwpAQCAtMCwwICsxLDI3MCBAQAorQC8qCitAICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuCitAICoqCitAICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworQCAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitAICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorQCAqKgorQCAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCitAICoqCitAICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK0AgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKK0AgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCitAICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK0AgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCitAICovCitACitAc3RhdGljIHZvaWQgTm9ybV9Db3JyIChXb3JkMTYgZXhjW10sICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogZXhjaXRhdGlvbiBidWZmZXIgICAgICAgICAgKi8KK0AgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiB4bltdLCAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiB0YXJnZXQgdmVjdG9yICAgICAgICAgICAgICAqLworQCAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IGhbXSwgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFExNSA6IGltcHVsc2UgcmVzcG9uc2Ugb2Ygc3ludGgvd2d0IGZpbHRlcnMgKi8KK0AgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiBMX3N1YmZyLCAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBzdWItZnJhbWUgbGVuZ3RoICovCitAICAgICAgICAgICAgICAgICAgICAgICBXb3JkMTYgdF9taW4sICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogbWluaW11bSB2YWx1ZSBvZiBwaXRjaCBsYWcuICAgKi8KK0AgICAgICAgICAgICAgICAgICAgICAgIFdvcmQxNiB0X21heCwgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBtYXhpbXVtIHZhbHVlIG9mIHBpdGNoIGxhZy4gICAqLworQCAgICAgICAgICAgICAgICAgICAgICAgV29yZDE2IGNvcnJfbm9ybVtdKSAgICAgICAgICAgICAgLyogKG8pIFExNSA6IG5vcm1hbGl6ZWQgY29ycmVsYXRpb24gICAgKi8KK0AKKworQCByMCAtLS0gZXhjW10KK0AgcjEgLS0tIHhuW10KK0AgcjIgLS0tIGhbXQorQCByMyAtLS0gTF9zdWJmcgorQCByNCAtLS0gdF9taW4KK0AgcjUgLS0tIHRfbWF4CitAIHI2IC0tLSBjb3JyX25vcm1bXQorCisKKwkuc2VjdGlvbiAgLnRleHQKKyAgICAgICAgLmdsb2JhbCAgICBOb3JtX2NvcnJfYXNtIAorICAgICAgICAuZXh0ZXJuICAgIENvbnZvbHZlX2FzbQorICAgICAgICAuZXh0ZXJuICAgIElzcXJ0X24KK0AqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKK0AgY29uc3RhbnQKK0AqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKy5lcXUgICAgRVhDICAgICAgICAgICAgICAgLCAwCisuZXF1ICAgIFhOICAgICAgICAgICAgICAgICwgNAorLmVxdSAgICBIICAgICAgICAgICAgICAgICAsIDgKKy5lcXUgICAgTF9TVUJGUiAgICAgICAgICAgLCAxMgorLmVxdSAgICB2b1NUQUNLICAgICAgICAgICAsIDE3MgorLmVxdSAgICBUX01JTiAgICAgICAgICAgICAsIDIxMgorLmVxdSAgICBUX01BWCAgICAgICAgICAgICAsIDIxNgorLmVxdSAgICBDT1JSX05PUk0gICAgICAgICAsIDIyMAorICAgICAgICAgICAgICAgICAgCitOb3JtX2NvcnJfYXNtOgorCisgICAgICAgIFNUTUZEICAgICAgICAgIHIxMyEsIHtyNCAtIHIxMiwgcjE0fSAgCisgICAgICAgIFNVQiAgICAgICAgICAgIHIxMywgcjEzLCAjdm9TVEFDSworICAKKyAgICAgICAgQUREICAgICAgICAgICAgcjgsIHIxMywgIzIwICAgICAgICAgICAgICAgICBAZ2V0IHRoZSBleGNmW0xfU1VCRlJdCisgICAgICAgIExEUiAgICAgICAgICAgIHI0LCBbcjEzLCAjVF9NSU5dICAgICAgICAgICAgQGdldCB0X21pbgorICAgICAgICBSU0IgICAgICAgICAgICByMTEsIHI0LCAjMCAgICAgICAgICAgICAgICAgIEBrID0gLXRfbWluCisgICAgICAgIEFERCAgICAgICAgICAgIHI1LCByMCwgcjExLCBMU0wgIzEgICAgICAgICAgQGdldCB0aGUgJmV4Y1trXSAgIAorICAgICAgICAKKyAgICAgICAgQHRyYW5zZmVyIENvbnZvbHZlIGZ1bmN0aW9uCisgICAgICAgIFNUTUZEICAgICAgICAgIHNwISwge3IwIC0gcjN9CisgICAgICAgIE1PViAgICAgICAgICAgIHIwLCByNQorICAgICAgICBNT1YgICAgICAgICAgICByMSwgcjIKKyAgICAgICAgTU9WICAgICAgICAgICAgcjIsIHI4ICAgICAgICAgICAgICAgICAgICAgICBAcjIgLS0tIGV4Y2ZbXQorICAgICAgICBCTCAgICAgICAgICAgICBDb252b2x2ZV9hc20KKyAgICAgICAgTERNRkQgICAgICAgICAgc3AhLCB7cjAgLSByM30KKworICAgICAgICBAIHI4IC0tLSBleGNmW10KKworCU1PViAgICAgICAgICAgIHIxNCwgcjEgICAgICAgICAgICAgICAgICAgICAgIEBjb3B5IHhuW10gYWRkcmVzcyAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgTU9WICAgICAgICAgICAgcjcsICMxCisJVkxEMS5TMTYgICAgICAge1EwLCBRMX0sIFtyMTRdIQorCVZMRDEuUzE2ICAgICAgIHtRMiwgUTN9LCBbcjE0XSEKKwlWTEQxLlMxNiAgICAgICB7UTQsIFE1fSwgW3IxNF0hCisJVkxEMS5TMTYgICAgICAge1E2LCBRN30sIFtyMTRdIQorCisgICAgICAgIFZNVUxMLlMxNiAgICAgIFExMCwgRDAsIEQwCisgICAgICAgIFZNTEFMLlMxNiAgICAgIFExMCwgRDEsIEQxCisgICAgICAgIFZNTEFMLlMxNiAgICAgIFExMCwgRDIsIEQyCisgICAgICAgIFZNTEFMLlMxNiAgICAgIFExMCwgRDMsIEQzCisgICAgICAgIFZNTEFMLlMxNiAgICAgIFExMCwgRDQsIEQ0CisgICAgICAgIFZNTEFMLlMxNiAgICAgIFExMCwgRDUsIEQ1CisgICAgICAgIFZNTEFMLlMxNiAgICAgIFExMCwgRDYsIEQ2CisgICAgICAgIFZNTEFMLlMxNiAgICAgIFExMCwgRDcsIEQ3CisgICAgICAgIFZNTEFMLlMxNiAgICAgIFExMCwgRDgsIEQ4CisgICAgICAgIFZNTEFMLlMxNiAgICAgIFExMCwgRDksIEQ5CisJVk1MQUwuUzE2ICAgICAgUTEwLCBEMTAsIEQxMAorCVZNTEFMLlMxNiAgICAgIFExMCwgRDExLCBEMTEKKwlWTUxBTC5TMTYgICAgICBRMTAsIEQxMiwgRDEyCisJVk1MQUwuUzE2ICAgICAgUTEwLCBEMTMsIEQxMworCVZNTEFMLlMxNiAgICAgIFExMCwgRDE0LCBEMTQKKwlWTUxBTC5TMTYgICAgICBRMTAsIEQxNSwgRDE1CisKKyAgICAgICAgVlFBREQuUzMyICAgICAgRDIwLCBEMjAsIEQyMQorICAgICAgICBWTU9WLlMzMiAgICAgICByOSwgIEQyMFswXQorICAgICAgICBWTU9WLlMzMiAgICAgICByMTAsIEQyMFsxXQorICAgICAgICBRQUREICAgICAgICAgICByNiwgcjksIHIxMCAKKwlRQUREICAgICAgICAgICByNiwgcjYsIHI2CisgICAgICAgIFFBREQgICAgICAgICAgIHI5LCByNiwgcjcgICAgICAgICAgICAgICAgICAgQExfdG1wID0gKExfdG1wIDw8IDEpICsgMTsKKwlDTFogICAgICAgICAgICByNywgcjkKKwlTVUIgICAgICAgICAgICByNiwgcjcsICMxICAgICAgICAgICAgICAgICAgIEBleHAgPSBub3JtX2woTF90bXApCisgICAgICAgIFJTQiAgICAgICAgICAgIHI3LCByNiwgIzMyICAgICAgICAgICAgICAgICAgQGV4cCA9IDMyIC0gZXhwCisJTU9WICAgICAgICAgICAgcjYsIHI3LCBBU1IgIzEgICAgICAgICAKKwlSU0IgICAgICAgICAgICByNywgcjYsICMwICAgICAgICAgICAgICAgICAgIEBzY2FsZSA9IC0oZXhwID4+IDEpCisJCisgICAgICAgIEBsb29wIGZvciBldmVyeSBwb3NzaWJsZSBwZXJpb2QKKwlAZm9yKHQgPSB0X21pbkAgdCA8PSB0X21heEAgdCsrKQorCUByNyAtLS0gc2NhbGUgcjQgLS0tIHRfbWluIHI4IC0tLSBleGNmW10KKworTE9PUEZPUjoJCisJQUREICAgICAgICAgICAgcjE0LCByMTMsICMyMCAgICAgICAgICAgICAgICBAY29weSBvZiBleGNmW10KKwlNT1YgICAgICAgICAgICByMTIsIHIxICAgICAgICAgICAgICAgICAgICAgIEBjb3B5IG9mIHhuW10KKwlNT1YgICAgICAgICAgICByOCwgIzB4ODAwMAorCisgICAgICAgIFZMRDEuUzE2ICAgICAgIHtRMCwgUTF9LCBbcjE0XSEgICAgICAgICAgICAgICAgIEAgbG9hZCAxNiBleGNmW10KKyAgICAgICAgVkxEMS5TMTYgICAgICAge1EyLCBRM30sIFtyMTRdISAgICAgICAgICAgICAgICAgQCBsb2FkIDE2IGV4Y2ZbXSAgICAgICAKKyAgICAgICAgVkxEMS5TMTYgICAgICAge1E0LCBRNX0sIFtyMTJdISAgICAgICAgICAgICAgICAgQCBsb2FkIDE2IHhbXQorCVZMRDEuUzE2ICAgICAgIHtRNiwgUTd9LCBbcjEyXSEgICAgICAgICAgICAgICAgIEAgbG9hZCAxNiB4W10KKyAgICAgICAgVk1VTEwuUzE2ICAgIFExMCwgRDAsIEQwICAgICAgICAgICAgICAgICAgICAgIEBMX3RtcDEgKz0gZXhjZltdICogZXhjZltdCisgICAgICAgIFZNVUxMLlMxNiAgICBRMTEsIEQwLCBEOCAgICAgICAgICAgICAgICAgICAgICBATF90bXAgICs9IHhbXSAqIGV4Y2ZbXSAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgVk1MQUwuUzE2ICAgIFExMCwgRDEsIEQxCisgICAgICAgIFZNTEFMLlMxNiAgICBRMTEsIEQxLCBEOQorICAgICAgICBWTUxBTC5TMTYgICAgUTEwLCBEMiwgRDIKKyAgICAgICAgVk1MQUwuUzE2ICAgIFExMSwgRDIsIEQxMCAgICAgICAgCisgICAgICAgIFZNTEFMLlMxNiAgICBRMTAsIEQzLCBEMworICAgICAgICBWTUxBTC5TMTYgICAgUTExLCBEMywgRDExCisgICAgICAgIFZNTEFMLlMxNiAgICBRMTAsIEQ0LCBENAorICAgICAgICBWTUxBTC5TMTYgICAgUTExLCBENCwgRDEyCisgICAgICAgIFZNTEFMLlMxNiAgICBRMTAsIEQ1LCBENQorICAgICAgICBWTUxBTC5TMTYgICAgUTExLCBENSwgRDEzCisgICAgICAgIFZNTEFMLlMxNiAgICBRMTAsIEQ2LCBENgorICAgICAgICBWTUxBTC5TMTYgICAgUTExLCBENiwgRDE0CisgICAgICAgIFZNTEFMLlMxNiAgICBRMTAsIEQ3LCBENworICAgICAgICBWTUxBTC5TMTYgICAgUTExLCBENywgRDE1CisKKwlWTEQxLlMxNiAgICAgICB7UTAsIFExfSwgW3IxNF0hICAgICAgICAgICAgICAgICBAIGxvYWQgMTYgZXhjZltdCisgICAgICAgIFZMRDEuUzE2ICAgICAgIHtRMiwgUTN9LCBbcjE0XSEgICAgICAgICAgICAgICAgIEAgbG9hZCAxNiBleGNmW10KKyAgICAgICAgVkxEMS5TMTYgICAgICAge1E0LCBRNX0sIFtyMTJdISAgICAgICAgICAgICAgICAgQCBsb2FkIDE2IHhbXQorICAgICAgICBWTEQxLlMxNiAgICAgICB7UTYsIFE3fSwgW3IxMl0hICAgICAgICAgICAgICAgICBAIGxvYWQgMTYgeFtdCisgICAgICAgIFZNTEFMLlMxNiAgICBRMTAsIEQwLCBEMAorICAgICAgICBWTUxBTC5TMTYgICAgUTExLCBEMCwgRDgKKyAgICAgICAgVk1MQUwuUzE2ICAgIFExMCwgRDEsIEQxCisgICAgICAgIFZNTEFMLlMxNiAgICBRMTEsIEQxLCBEOQorICAgICAgICBWTUxBTC5TMTYgICAgUTEwLCBEMiwgRDIKKyAgICAgICAgVk1MQUwuUzE2ICAgIFExMSwgRDIsIEQxMCAgICAgICAgCisgICAgICAgIFZNTEFMLlMxNiAgICBRMTAsIEQzLCBEMworICAgICAgICBWTUxBTC5TMTYgICAgUTExLCBEMywgRDExCisgICAgICAgIFZNTEFMLlMxNiAgICBRMTAsIEQ0LCBENAorICAgICAgICBWTUxBTC5TMTYgICAgUTExLCBENCwgRDEyCisgICAgICAgIFZNTEFMLlMxNiAgICBRMTAsIEQ1LCBENQorICAgICAgICBWTUxBTC5TMTYgICAgUTExLCBENSwgRDEzCisgICAgICAgIFZNTEFMLlMxNiAgICBRMTAsIEQ2LCBENgorICAgICAgICBWTUxBTC5TMTYgICAgUTExLCBENiwgRDE0CisgICAgICAgIFZNTEFMLlMxNiAgICBRMTAsIEQ3LCBENworICAgICAgICBWTUxBTC5TMTYgICAgUTExLCBENywgRDE1CisKKyAgICAgICAgVlFBREQuUzMyICAgICAgRDIwLCBEMjAsIEQyMQorICAgICAgICBWUUFERC5TMzIgICAgICBEMjIsIEQyMiwgRDIzCisKKwlWUEFERC5TMzIgICAgICBEMjAsIEQyMCwgRDIwICAgICAgICAgICAgICAgICAgIEBEMjBbMF0gLS0tIExfdG1wMSA8PCAxCisJVlBBREQuUzMyICAgICAgRDIyLCBEMjIsIEQyMiAgICAgICAgICAgICAgICAgICBARDIyWzBdIC0tLSBMX3RtcCA8PCAxCisKKwlWTU9WLlMzMiAgICAgICByNiwgRDIwWzBdCisgICAgICAgIFZNT1YuUzMyICAgICAgIHI1LCBEMjJbMF0JCisKKwlAcjUgLS0tIExfdG1wLCByNiAtLS0gTF90bXAxCisJTU9WICAgICAgICAgICAgcjEwLCAjMQorCUFERCAgICAgICAgICAgIHI1LCByMTAsIHI1LCBMU0wgIzEgICAgICAgICAgICAgICAgICAgICBATF90bXAgPSAoTF90bXAgPDwgMSkgKyAxCisJQUREICAgICAgICAgICAgcjYsIHIxMCwgcjYsIExTTCAjMSAgICAgICAgICAgICAgICAgICAgIEBMX3RtcDEgPSAoTF90bXAxIDw8IDEpICsgMQorIAorCUNMWiAgICAgICAgICAgIHIxMCwgcjUgICAgICAgIAorCUNNUCAgICAgICAgICAgIHI1LCAjMAorCVJTQkxUICAgICAgICAgIHIxMSwgcjUsICMwCisJQ0xaTFQgICAgICAgICAgcjEwLCByMTEKKwlTVUIgICAgICAgICAgICByMTAsIHIxMCwgIzEgICAgICAgICAgICAgICAgIEBleHAgPSBub3JtX2woTF90bXApCisgICAgIAorCU1PViAgICAgICAgICAgIHI1LCByNSwgTFNMIHIxMCAgICAgICAgICAgICAgQExfdG1wID0gKExfdG1wIDw8IGV4cCkKKwlSU0IgICAgICAgICAgICByMTAsIHIxMCwgIzMwICAgICAgICAgICAgICAgIEBleHBfY29yciA9IDMwIC0gZXhwCisJTU9WICAgICAgICAgICAgcjExLCByNSwgQVNSICMxNiAgICAgICAgICAgICBAY29yciA9IGV4dHJhY3RfaChMX3RtcCkKKworCUNMWiAgICAgICAgICAgIHI1LCByNgorCVNVQiAgICAgICAgICAgIHI1LCByNSwgIzEKKwlNT1YgICAgICAgICAgICByNiwgcjYsIExTTCByNSAgICAgICAgICAgICAgIEBMX3RtcCA9IChMX3RtcDEgPDwgZXhwKQorCVJTQiAgICAgICAgICAgIHI1LCByNSwgIzMwICAgICAgICAgICAgICAgICAgQGV4cF9ub3JtID0gMzAgLSBleHAKKworCUByMTAgLS0tIGV4cF9jb3JyLCByMTEgLS0tIGNvcnIKKwlAcjYgIC0tLSBMX3RtcCwgcjUgLS0tIGV4cF9ub3JtCisKKwlASXNxcnRfbigmTF90bXAsICZleHBfbm9ybSkKKworCU1PViAgICAgICAgICAgIHIxNCwgcjAKKwlNT1YgICAgICAgICAgICByMTIsIHIxIAorCisgICAgICAgIFNUTUZEICAgICAgICAgIHNwISwge3IwIC0gcjQsIHI3IC0gcjEyLCByMTR9CisJQUREICAgICAgICAgICAgcjEsIHNwLCAjNAorCUFERCAgICAgICAgICAgIHIwLCBzcCwgIzAKKwlTVFIgICAgICAgICAgICByNiwgW3NwXQorCVNUUkggICAgICAgICAgIHI1LCBbc3AsICM0XQorCUJMICAgICAgICAgICAgIElzcXJ0X24KKwlMRFIgICAgICAgICAgICByNiwgW3NwXQorCUxEUlNIICAgICAgICAgIHI1LCBbc3AsICM0XQorICAgICAgICBMRE1GRCAgICAgICAgICBzcCEsIHtyMCAtIHI0LCByNyAtIHIxMiwgcjE0fQorCU1PViAgICAgICAgICAgIHIwLCByMTQKKwlNT1YgICAgICAgICAgICByMSwgcjEyCisKKworCU1PViAgICAgICAgICAgIHI2LCByNiwgQVNSICMxNiAgICAgICAgICAgICAgQG5vcm0gPSBleHRyYWN0X2goTF90bXApCisJTVVMICAgICAgICAgICAgcjEyLCByNiwgcjExCisJQUREICAgICAgICAgICAgcjEyLCByMTIsIHIxMiAgICAgICAgICAgICAgICBATF90bXAgPSB2b19MX211bHQoY29yciwgbm9ybSkKKyAgCisJQUREICAgICAgICAgICAgcjYsIHIxMCwgcjUKKwlBREQgICAgICAgICAgICByNiwgcjYsIHI3ICAgICAgICAgICAgICAgICAgIEBleHBfY29yciArIGV4cF9ub3JtICsgc2NhbGUKKworICAgICAgICBDTVAgICAgICAgICAgICByNiwgIzAKKyAgICAgICAgUlNCTFQgICAgICAgICAgcjYsIHI2LCAjMAorCU1PVkxUICAgICAgICAgIHIxMiwgcjEyLCBBU1IgcjYKKyAgICAgICAgTU9WR1QgICAgICAgICAgcjEyLCByMTIsIExTTCByNiAgICAgICAgICAgICBATF90bXAgPSBMX3NobChMX3RtcCwgZXhwX2NvcnIgKyBleHBfbm9ybSArIHNjYWxlKQorCisgICAgICAgIEFERCAgICAgICAgICAgIHIxMiwgcjEyLCByOAorICAgICAgICBNT1YgICAgICAgICAgICByMTIsIHIxMiwgQVNSICMxNiAgICAgICAgICAgIEB2b19yb3VuZChMX3RtcCkKKworICAgICAgICBMRFIgICAgICAgICAgICByNSwgW3IxMywgI0NPUlJfTk9STV0gICAgICAgIEAgZ2V0IGNvcnJfbm9ybSBhZGRyZXNzCisJTERSICAgICAgICAgICAgcjYsIFtyMTMsICNUX01BWF0gICAgICAgICAgICBAIGdldCB0X21heAorCUFERCAgICAgICAgICAgIHIxMCwgcjUsIHI0LCBMU0wgIzEgICAgICAgICAgQCBnZXQgY29ycl9ub3JtW3RdIGFkZHJlc3MKKwlTVFJIICAgICAgICAgICByMTIsIFtyMTBdICAgICAgICAgICAgICAgICAgIEAgY29ycl9ub3JtW3RdID0gdm9fcm91bmQoTF90bXApCisKKwlDTVAgICAgICAgICAgICByNCwgcjYKKwlCRVEgICAgICAgICAgICBOb3JtX2NvcnJfYXNtX2VuZAorIAorCUFERCAgICAgICAgICAgIHI0LCByNCwgIzEgICAgICAgICAgICAgICAgICAgQCB0X21pbiArKyAKKwlSU0IgICAgICAgICAgICByNSwgcjQsICMwICAgICAgICAgICAgICAgICAgIEAgaworCisJTU9WICAgICAgICAgICAgcjYsICM2MyAgICAgICAgICAgICAgICAgICAgICBAIGkgPSA2MworCU1PViAgICAgICAgICAgIHI4LCByMCAgICAgICAgICAgICAgICAgICAgICAgQCBleGNbXQorCU1PViAgICAgICAgICAgIHI5LCByMiAgICAgICAgICAgICAgICAgICAgICAgQCBoW10KKwlBREQgICAgICAgICAgICByMTAsIHIxMywgIzIwICAgICAgICAgICAgICAgIEAgZXhjZltdCisKKwlBREQgICAgICAgICAgICByOCwgcjgsIHI1LCBMU0wgIzEgICAgICAgICAgIEAgZXhjW2tdIGFkZHJlc3MKKwlBREQgICAgICAgICAgICByOSwgcjksIHI2LCBMU0wgIzEgICAgICAgICAgIEAgaFtpXSBhZGRyZXNzCisJQUREICAgICAgICAgICAgcjEwLCByMTAsIHI2LCBMU0wgIzEgICAgICAgICBAIGV4Y2ZbaV0gYWRkcmVzcworCUxEUlNIICAgICAgICAgIHIxMSwgW3I4XSAgICAgICAgICAgICAgICAgICAgQCB0bXAgPSBleGNba10KKworTE9PUEs6CisgICAgICAgIExEUlNIICAgICAgICAgIHI4LCBbcjldLCAjLTIgICAgICAgICAgICAgICAgQCBsb2FkIGhbaV0KKwlMRFJTSCAgICAgICAgICByMTIsIFtyMTAsICMtMl0gICAgICAgICAgICAgIEAgbG9hZCBleGNmW2kgLSAxXQorCU1VTCAgICAgICAgICAgIHIxNCwgcjExLCByOAorCU1PViAgICAgICAgICAgIHI4LCByMTQsIEFTUiAjMTUKKwlBREQgICAgICAgICAgICByMTQsIHI4LCByMTIKKwlTVFJIICAgICAgICAgICByMTQsIFtyMTBdLCAjLTIKKwlTVUJTICAgICAgICAgICByNiwgcjYsICMxCisJQkdUICAgICAgICAgICAgTE9PUEsKKworCUxEUlNIICAgICAgICAgIHI4LCBbcjldICAgICAgICAgICAgICAgICAgICAgQCBsb2FkIGhbMF0KKwlNVUwgICAgICAgICAgICByMTQsIHIxMSwgcjgKKyAgICAgICAgTERSICAgICAgICAgICAgcjYsIFtyMTMsICNUX01BWF0gICAgICAgICAgICBAIGdldCB0X21heAorCU1PViAgICAgICAgICAgIHI4LCByMTQsIEFTUiAjMTUKKwlTVFJIICAgICAgICAgICByOCwgW3IxMF0gICAgICAgICAgICAgICAgICAgIAorCisJQ01QICAgICAgICAgICAgcjQsIHI2CisJQkxFICAgICAgICAgICAgTE9PUEZPUgorCitOb3JtX2NvcnJfYXNtX2VuZDogCisgICAgICAgIAorICAgICAgICBBREQgICAgICAgICAgICByMTMsIHIxMywgI3ZvU1RBQ0sgICAgICAKKyAgICAgICAgTERNRkQgICAgICAgICAgcjEzISwge3I0IC0gcjEyLCByMTV9CisgICAgCisgICAgICAgIC5FTkQKKworCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNy9TeW5fZmlsdF8zMl9uZW9uLnMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNy9TeW5fZmlsdF8zMl9uZW9uLnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2IxNzY0ZgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYXNtL0FSTVY3L1N5bl9maWx0XzMyX25lb24ucwpAQCAtMCwwICsxLDEzMyBAQAorQC8qDQorQCAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KK0AgKioNCitAICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KK0AgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KK0AgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorQCAqKg0KK0AgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KK0AgKioNCitAICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCitAICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorQCAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCitAICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCitAICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KK0AgKi8NCitADQorQCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorQHZvaWQgU3luX2ZpbHRfMzIoDQorQCAgICAgV29yZDE2IGFbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTEyIDogYVttKzFdIHByZWRpY3Rpb24gY29lZmZpY2llbnRzICovDQorQCAgICAgV29yZDE2IG0sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogb3JkZXIgb2YgTFAgZmlsdGVyICAgICAgICAgICAgICovDQorQCAgICAgV29yZDE2IGV4Y1tdLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUW5ldzogZXhjaXRhdGlvbiAoZXhjW2ldID4+IFFuZXcpICAgICovDQorQCAgICAgV29yZDE2IFFuZXcsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogZXhjIHNjYWxpbmcgPSAwKG1pbikgdG8gOChtYXgpICovDQorQCAgICAgV29yZDE2IHNpZ19oaVtdLCAgICAgICAgICAgICAgICAgICAgICAvKiAobykgLzE2IDogc3ludGhlc2lzIGhpZ2ggICAgICAgICAgICAgICAgICovDQorQCAgICAgV29yZDE2IHNpZ19sb1tdLCAgICAgICAgICAgICAgICAgICAgICAvKiAobykgLzE2IDogc3ludGhlc2lzIGxvdyAgICAgICAgICAgICAgICAgICovDQorQCAgICAgV29yZDE2IGxnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogc2l6ZSBvZiBmaWx0ZXJpbmcgICAgICAgICAgICAgICovDQorQCkNCitAKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCitAIGFbXSAgICAgIC0tLSByMA0KK0AgbSAgICAgICAgLS0tIHIxDQorQCBleGNbXSAgICAtLS0gcjINCitAIFFuZXcgICAgIC0tLSByMw0KK0Agc2lnX2hpW10gLS0tIHI0DQorQCBzaWdfbG9bXSAtLS0gcjUNCitAIGxnICAgICAgIC0tLSByNg0KKw0KKyAgICAgICAgICAuc2VjdGlvbiAgLnRleHQgDQorICAgICAgICAgIC5nbG9iYWwgICBTeW5fZmlsdF8zMl9hc20NCisNCitTeW5fZmlsdF8zMl9hc206DQorDQorICAgICAgICAgIFNUTUZEICAgCXIxMyEsIHtyNCAtIHIxMiwgcjE0fSANCisgICAgICAgICAgTERSICAgICAgICAgICByNCwgIFtyMTMsICM0MF0gICAgICAgICAgICAgICAgICBAIGdldCBzaWdfaGlbXSBhZGRyZXNzDQorICAgICAgICAgIExEUiAgICAgICAgICAgcjUsICBbcjEzLCAjNDRdICAgICAgICAgICAgICAgICAgQCBnZXQgc2lnX2xvW10gYWRkcmVzcw0KKw0KKyAgICAgICAgICBMRFJTSCAgICAgICAgIHI2LCAgW3IwXSwgIzIgICAgICAgICAgICAgICAgICAgIEAgbG9hZCBBcVswXQ0KKyAgICAgICAgICBBREQgICAgICAgICAgIHI3LCAgcjMsICM0ICAgICAgICAgICAgICAgICAgICAgIEAgNCArIFFfbmV3DQorICAgICAgICAgIE1PViAgICAgICAgICAgcjMsIHI2LCBBU1IgcjcgICAgICAgICAgICAgICAgICAgQCBhMCA9IEFxWzBdID4+ICg0ICsgUV9uZXcpDQorDQorCSAgU1VCICAgICAgICAgICByMTAsIHI0LCAjMzIgICAgICAgICAgICAgICAgICAgICBAIHNpZ19oaVstMTZdIGFkZHJlc3MNCisJICBTVUIgICAgICAgICAgIHIxMSwgcjUsICMzMiAgICAgICAgICAgICAgICAgICAgIEAgc2lnX2xvWy0xNl0gYWRkcmVzcw0KKw0KKwkgIFZMRDEuUzE2ICAgICAge0QwLCBEMSwgRDIsIEQzfSwgW3IwXSEgICAgICAgICAgQGFbMV0gfiBhWzE2XSANCisgIA0KKyAgICAgICAgICBNT1YgICAgICAgICAgIHI4LCAjMCAgICAgICAgICAgICAgICAgICAgICAgICAgIEAgaSA9IDANCisNCisJICBWTEQxLlMxNiAgICAgIHtENCwgRDUsIEQ2LCBEN30sIFtyMTBdISAgICAgICAgIEAgc2lnX2hpWy0xNl0gfiBzaWdfaGlbLTFdDQorICAgICAgICAgIFZSRVY2NC4xNiAgICAgRDAsIEQwDQorICAgICAgICAgIFZSRVY2NC4xNiAgICAgRDEsIEQxDQorCSAgVkxEMS5TMTYgICAgICB7RDgsIEQ5LCBEMTAsIEQxMX0sIFtyMTFdISAgICAgICBAIHNpZ19sb1stMTZdIH4gc2lnX2xvWy0xXQ0KKyAgICAgICAgICBWUkVWNjQuMTYgICAgIEQyLCBEMg0KKyAgICAgICAgICBWUkVWNjQuMTYgICAgIEQzLCBEMwkNCisgICAgICAgICAgVkRVUC5TMzIgICAgICBRMTUsIHI4DQorICAgICAgICAgICAgICANCitTWU5fTE9PUDoNCisNCisgICAgICAgICAgTERSU0ggICAgICAgICByNiwgW3IyXSwgIzIgICAgICAgICAgICAgICAgICAgICBAZXhjW2ldDQorCSAgQExfdG1wID0gTF9tc3UoTF90bXAsIHNpZ19sb1tpIC0gal0sIGFbal0pQA0KKwkgIFZNVUxMLlMxNiAgICAgUTEwLCBEOCwgRDMNCisJICBWRVhULjggICAgICAgIEQ4LCBEOCwgRDksICMyDQorCSAgVk1MQUwuUzE2ICAgICBRMTAsIEQ5LCBEMg0KKwkgIFZNTEFMLlMxNiAgICAgUTEwLCBEMTAsIEQxDQorCSAgVk1MQUwuUzE2ICAgICBRMTAsIEQxMSwgRDANCisNCisJICBWRVhULjggICAgICAgIEQ5LCBEOSwgRDEwLCAjMg0KKwkgIFZFWFQuOCAgICAgICAgRDEwLCBEMTAsIEQxMSwgIzINCisJICANCisJICBWUEFERC5TMzIgICAgIEQyOCwgRDIwLCBEMjENCisgICAgICAgICAgTVVMICAgICAgICAgICByMTIsIHI2LCByMyAgICAgICAgICAgICAgICAgICAgICBAZXhjW2ldICogYTANCisJICBWUEFERC5TMzIgICAgIEQyOSwgRDI4LCBEMjgNCisJICBWRFVQLlMzMiAgICAgIFExMCwgRDI5WzBdICAgICAgICAgICAgICAgICAgICAgIEByZXN1bHQxDQorICAgICAgICAgIA0KKwkgIFZNVUxMLlMxNiAgICAgUTExLCBENCwgRDMNCisJICBWTUxBTC5TMTYgICAgIFExMSwgRDUsIEQyDQorICAgICAgICAgIFZTVUIuUzMyICAgICAgUTEwLCBRMTUsIFExMA0KKwkgIEBMX3RtcCA9IExfbXN1KExfdG1wLCBzaWdfaGlbaSAtIGpdLCBhW2pdKUANCisNCisJICBWTUxBTC5TMTYgICAgIFExMSwgRDYsIEQxDQorCSAgVkVYVC44ICAgICAgICBENCwgRDQsIEQ1LCAjMg0KKwkgIFZNTEFMLlMxNiAgICAgUTExLCBENywgRDANCisNCisNCisJICBWRVhULjggICAgICAgIEQ1LCBENSwgRDYsICMyDQorCSAgVkVYVC44ICAgICAgICBENiwgRDYsIEQ3LCAjMg0KKw0KKwkgIFZQQURELlMzMiAgICAgRDI4LCBEMjIsIEQyMw0KKyAgICAgICAgICBWUEFERC5TMzIgICAgIEQyOSwgRDI4LCBEMjgNCisgICAgICAgICAgTU9WICAgICAgICAgICByMTQsIHIxMiwgTFNMICMxICAgICAgICAgICAgICAgICBAZXhjW2ldICogYTAgPDwgMQ0KKyAgICAgICAgICBWRFVQLlMzMiAgICAgIFExMSwgRDI5WzBdICAgICAgICAgICAgICAgICAgICAgIEByZXN1bHQyDQorDQorDQorDQorCSAgVlNIUi5TMzIgICAgICBRMTAsIFExMCwgIzExICAgICAgICAgICAgICAgICAgICBAcmVzdWx0MSA+Pj0gMTENCisJICBWU0hMLlMzMiAgICAgIFExMSwgUTExLCAjMSAgICAgICAgICAgICAgICAgICAgIEByZXN1bHQyIDw8PSAxDQorCSAgVkRVUC5TMzIgICAgICBRMTIsIHIxNCAgICAgICAgICAgICAgICAgICAgICAgICANCisJICBWQURELlMzMiAgICAgIFExMiwgUTEyLCBRMTAgICAgICAgICAgICAgICAgICAgIEBMX3RtcCA9IExfdG1wIC0gKHJlc3VsdDEgPj49IDExKSAtIChyZXN1bHQyIDw8PSAxKQ0KKwkgIFZTVUIuUzMyICAgICAgUTEyLCBRMTIsIFExMQ0KKw0KKwkgIFZTSEwuUzMyICAgICAgUTEyLCBRMTIsICMzICAgICAgICAgICAgICAgICAgICAgQExfdG1wIDw8PSAzDQorDQorDQorCSAgVlNIUk4uUzMyICAgICBEMjAsIFExMiwgIzE2ICAgICAgICAgICAgICAgICAgICBAc2lnX2hpW2ldID0gTF90bXAgPj4gMTZADQorCSAgVk1PVi5TMTYgICAgICByMTAsIEQyMFswXQ0KKwkgIFZTSFIuUzMyICAgICAgUTEyLCBRMTIsICM0ICAgICAgICAgICAgICAgICAgICAgQExfdG1wID4+PSA0DQorCSAgVkVYVC44ICAgICAgICBENywgRDcsIEQyMCwgIzINCisJICBTVFJIICAgICAgICAgIHIxMCwgW3I0XSwgIzIgICAgICAgICAgICAgICAgICAgIEBzdG9yZSBzaWdfaGlbaV0NCisgICAgICAgICAgVk1PVi5TMzIgICAgICByMTEsIEQyNFswXSAgICAgICAgICAgICAgICAgICAgICBAcjExIC0tLSBMX3RtcCA+Pj0gNA0KKwkgIEFERCAgICAgICAgICAgcjgsIHI4LCAjMQ0KKwkgIFNVQiAgICAgICAgICAgcjEyLCByMTEsIHIxMCwgTFNMICMxMg0KKwkgIEBNT1YgICAgICAgICAgIHIxMSwgcjEyLCBBU1IgIzE2ICAgICAgICAgICAgICAgIEBzaWdfbG9baV0NCisJICBWRFVQLlMxNiAgICAgIEQyMSwgcjEyDQorCSAgVkVYVC44ICAgICAgICBEMTEsIEQxMSwgRDIxLCAjMg0KKwkgIFNUUkggICAgICAgICAgcjEyLCBbcjVdLCAjMiAgICAgICAgICAgICAgICAgICAgQHN0cm9lIHNpZ19sb1tpXQ0KKw0KKyAgICAgICAgICBDTVAgICAgICAgICAgIHI4LCAjNjQNCisgICAgICAgICAgQkxUICAgICAgICAgICBTWU5fTE9PUCAgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgDQorU3luX2ZpbHRfMzJfZW5kOg0KKwkJICAgICANCisgICAgICAgICAgTERNRkQgICAJICAgIHIxMyEsIHtyNCAtIHIxMiwgcjE1fSANCisgICAgICAgICAgQEVOREZVTkMNCisgICAgICAgICAgLkVORA0KKyANCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNy9jb252b2x2ZV9uZW9uLnMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNy9jb252b2x2ZV9uZW9uLnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTg5ZTMzYgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYXNtL0FSTVY3L2NvbnZvbHZlX25lb24ucwpAQCAtMCwwICsxLDE3OCBAQAorQC8qCitAICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuCitAICoqCitAICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworQCAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitAICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorQCAqKgorQCAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCitAICoqCitAICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK0AgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKK0AgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCitAICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK0AgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCitAICovCitACitAKnZvaWQgQ29udm9sdmUgKAorQCogICAgV29yZDE2IHhbXSwgICAgICAgIC8qIChpKSAgICAgOiBpbnB1dCB2ZWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworQCogICAgV29yZDE2IGhbXSwgICAgICAgIC8qIChpKSAgICAgOiBpbXB1bHNlIHJlc3BvbnNlICAgICAgICAgICAgICAgICAgICAgICAqLworQCogICAgV29yZDE2IHlbXSwgICAgICAgIC8qIChvKSAgICAgOiBvdXRwdXQgdmVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAqLworQCogICAgV29yZDE2IEwgICAgICAgICAgIC8qIChpKSAgICAgOiB2ZWN0b3Igc2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworQCopCitAIAorQCByMCAtLS0geFtdCitAIHIxIC0tLSBoW10KK0AgcjIgLS0tIHlbXQorQCByMyAtLS0gTAorCisJLnNlY3Rpb24gIC50ZXh0IAorICAgICAgICAuZ2xvYmFsICAgQ29udm9sdmVfYXNtIAorCitDb252b2x2ZV9hc206CisKKyAgICAgICAgU1RNRkQgICAgICAgICAgcjEzISwge3I0IC0gcjEyLCByMTR9ICAKKyAgICAgICAgTU9WICAgICAgICAgICAgcjMsICAjMCAgICAgICAgICAgICAgICAgICAgICAgIAorCU1PViAgICAgICAgICAgIHIxMSwgIzB4ODAwMAorICAgICAgICAKK0xPT1A6IAorICAgICAgICBATU9WICAgICAgICAgICAgcjgsICMwICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAgcyA9IDAKKyAgICAgICAgQUREICAgICAgICAgICAgcjQsIHIxLCByMywgTFNMICMxICAgICAgICAgICAgICAgIEAgdG1wSCBhZGRyZXNzCisgICAgICAgIEFERCAgICAgICAgICAgIHI1LCByMywgIzEgICAgICAgICAgICAgICAgICAgICAgICBAIGkgPSBuICsgMQorICAgICAgICBNT1YgICAgICAgICAgICByNiwgcjAKKyAgICAgICAgTERSU0ggICAgICAgICAgcjksICBbcjZdLCAjMiAgICAgICAgICAgICAgICAgICAgIEAgKnRtcFgrKworICAgICAgICBMRFJTSCAgICAgICAgICByMTAsIFtyNF0gICAgICAgICAgICAgICAgICAgICAgICAgQCAqdG1wSC0tCisgICAgICAgIFNVQiAgICAgICAgICAgIHI1LCByNSwgIzEKKyAgICAgICAgVk1PVi5TMzIgICAgICAgUTEwLCAjMCAKKyAgICAgICAgTVVMICAgICAgICAgICAgcjgsICByOSwgcjEwIAorCitMT09QMTogICAgICAgICAgICAgICAgICAgIAorICAgICAgICBDTVAgICAgICAgICAgICByNSwgIzAKKyAgICAgICAgQkxFICAgICAgICAgICAgTDEKKyAgICAgICAgU1VCICAgICAgICAgICAgcjQsIHI0LCAjOAorICAgICAgICBNT1YgICAgICAgICAgICByOSwgcjQKKyAgICAgICAgVkxEMS5TMTYgICAgICAgRDAsIFtyNl0hICAgCisgICAgICAgIFZMRDEuUzE2ICAgICAgIEQxLCBbcjldIQorICAgICAgICBWUkVWNjQuMTYgICAgICBEMSwgRDEKKyAgICAgICAgU1VCUyAgICAgICAgICAgcjUsIHI1LCAjNCAgCisgICAgICAgIFZNTEFMLlMxNiAgICAgIFExMCwgRDAsIEQxICAgICAgICAgCisgICAgICAgIEIgICAgICAgICAgICAgIExPT1AxICAgIAorTDE6ICAgICAgICAgICAgICAgICAgCisgICAgICAgIFZBREQuUzMyICAgICAgIEQyMCwgRDIwLCBEMjEKKyAgICAgICAgVlBBREQuUzMyICAgICAgRDIwLCBEMjAsIEQyMAorICAgICAgICBWTU9WLlMzMiAgICAgICByNSwgRDIwWzBdCisgICAgICAgIEFERCAgICAgICAgICAgIHI1LCByNSwgcjgKKyAgICAgICAgQUREICAgICAgICAgICAgcjUsIHIxMSwgcjUsIExTTCAjMQorICAgICAgICBNT1YgICAgICAgICAgICByNSwgcjUsIExTUiAjMTYgICAgICAgICAgICAgICAgICAgQGV4dHJhY3RfaChzKQorICAgICAgICBBREQgICAgICAgICAgICByMywgcjMsICMxCisgICAgICAgIFNUUkggICAgICAgICAgIHI1LCBbcjJdLCAjMiAgICAgICAgICAgICAgICAgICAgICBAeVtuXQorCisKKyAgICAgICAgQE1PViAgICAgICAgICAgIHI4LCAjMAorICAgICAgICBBREQgICAgICAgICAgICByNCwgcjEsIHIzLCBMU0wgIzEgICAgICAgICAgICAgICAgQHRtcEggYWRkcmVzcworICAgICAgICBBREQgICAgICAgICAgICByNSwgcjMsICMxCisgICAgICAgIE1PViAgICAgICAgICAgIHI2LCByMAorICAgICAgICBMRFJTSCAgICAgICAgICByOSwgIFtyNl0sICMyICAgICAgICAgICAgICAgICAgICAgQCAqdG1wWCsrCisgICAgICAgIExEUlNIICAgICAgICAgIHIxMCwgW3I0XSwgIy0yICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIExEUlNIICAgICAgICAgIHIxMiwgW3I2XSwgIzIKKyAgICAgICAgTERSU0ggICAgICAgICAgcjE0LCBbcjRdCisKKyAgICAgICAgTVVMICAgICAgICAgICAgcjgsIHI5LCByMTAKKyAgICAgICAgU1VCICAgICAgICAgICAgcjUsIHI1LCAjMgorICAgICAgICBNTEEgICAgICAgICAgICByOCwgcjEyLCByMTQsIHI4CisgICAgICAgIAorICAgICAgICBWTU9WLlMzMiAgICAgICBRMTAsICMwCitMT09QMjoKKyAgICAgICAgQ01QICAgICAgICAgICAgcjUsICMwCisgICAgICAgIEJMRSAgICAgICAgICAgIEwyCisgICAgICAgIFNVQiAgICAgICAgICAgIHI0LCByNCwgIzgKKyAgICAgICAgTU9WICAgICAgICAgICAgcjksIHI0CisgICAgICAgIFZMRDEuUzE2ICAgICAgIEQwLCBbcjZdISAgIAorICAgICAgICBWTEQxLlMxNiAgICAgICBEMSwgW3I5XSEKKyAgICAgICAgU1VCUyAgICAgICAgICAgcjUsIHI1LCAjNAorICAgICAgICBWUkVWNjQuMTYgICAgICBEMSwgRDEKKyAgICAgICAgVk1MQUwuUzE2ICAgICAgUTEwLCBEMCwgRDEgCisgICAgICAgIEIgICAgICAgICAgICAgIExPT1AyCitMMjoKKyAgICAgICAgVkFERC5TMzIgICAgICAgRDIwLCBEMjAsIEQyMQorICAgICAgICBWUEFERC5TMzIgICAgICBEMjAsIEQyMCwgRDIwCisgICAgICAgIFZNT1YuUzMyICAgICAgIHI1LCBEMjBbMF0KKyAgICAgICAgQUREICAgICAgICAgICAgcjgsIHI4LCByNQorICAgICAgICBBREQgICAgICAgICAgICByOCwgcjExLCByOCwgTFNMICMxCisgICAgICAgIE1PViAgICAgICAgICAgIHI4LCByOCwgTFNSICMxNiAgICAgICAgICAgICAgICAgICBAZXh0cmFjdF9oKHMpCisgICAgICAgIEFERCAgICAgICAgICAgIHIzLCByMywgIzEgIAorICAgICAgICBTVFJIICAgICAgICAgICByOCwgW3IyXSwgIzIgICAgICAgICAgICAgICAgICAgICAgQHlbbl0KKworCisgICAgICAgIEBNT1YgICAgICAgICAgICByOCwgIzAKKyAgICAgICAgQUREICAgICAgICAgICAgcjQsIHIxLCByMywgTFNMICMxCisgICAgICAgIEFERCAgICAgICAgICAgIHI1LCByMywgIzEKKyAgICAgICAgTU9WICAgICAgICAgICAgcjYsIHIwCisgICAgICAgIExEUlNIICAgICAgICAgIHI5LCAgW3I2XSwgIzIKKyAgICAgICAgTERSU0ggICAgICAgICAgcjEwLCBbcjRdLCAjLTIKKyAgICAgICAgTERSU0ggICAgICAgICAgcjEyLCBbcjZdLCAjMgorICAgICAgICBMRFJTSCAgICAgICAgICByMTQsIFtyNF0sICMtMgorICAgICAgICBNVUwgICAgICAgICAgICByOCwgcjksIHIxMAorICAgICAgICBMRFJTSCAgICAgICAgICByOSwgIFtyNl0sICMyCisgICAgICAgIExEUlNIICAgICAgICAgIHIxMCwgW3I0XQorICAgICAgICBNTEEgICAgICAgICAgICByOCwgcjEyLCByMTQsIHI4IAorICAgICAgICBTVUIgICAgICAgICAgICByNSwgcjUsICMzCisgICAgICAgIE1MQSAgICAgICAgICAgIHI4LCByOSwgcjEwLCByOAorCisgICAgICAgIFZNT1YuUzMyICAgICAgIFExMCwgIzAKK0xPT1AzOgorICAgICAgICBDTVAgICAgICAgICAgICByNSwgIzAKKyAgICAgICAgQkxFICAgICAgICAgICAgTDMKKyAgICAgICAgU1VCICAgICAgICAgICAgcjQsIHI0LCAjOAorICAgICAgICBNT1YgICAgICAgICAgICByOSwgcjQKKyAgICAgICAgVkxEMS5TMTYgICAgICAgRDAsIFtyNl0hICAgCisgICAgICAgIFZMRDEuUzE2ICAgICAgIEQxLCBbcjldIQorICAgICAgICBWUkVWNjQuMTYgICAgICBEMSwgRDEKKyAgICAgICAgU1VCUyAgICAgICAgICAgcjUsIHI1LCAjNAorICAgICAgICBWTUxBTC5TMTYgICAgICBRMTAsIEQwLCBEMSAKKyAgICAgICAgQiAgICAgICAgICAgICAgTE9PUDMgICAKKworTDM6CisgICAgICAgIFZBREQuUzMyICAgICAgIEQyMCwgRDIwLCBEMjEKKyAgICAgICAgVlBBREQuUzMyICAgICAgRDIwLCBEMjAsIEQyMAorICAgICAgICBWTU9WLlMzMiAgICAgICByNSwgRDIwWzBdCisgICAgICAgIEFERCAgICAgICAgICAgIHI4LCByOCwgcjUKKyAgICAgICAgQUREICAgICAgICAgICAgcjgsIHIxMSwgcjgsIExTTCAjMQorICAgICAgICBNT1YgICAgICAgICAgICByOCwgcjgsIExTUiAjMTYgICAgICAgICAgICAgICAgICAgQGV4dHJhY3RfaChzKQorICAgICAgICBBREQgICAgICAgICAgICByMywgcjMsICMxCisgICAgICAgIFNUUkggICAgICAgICAgIHI4LCBbcjJdLCAjMiAgICAgICAgICAgICAgICAgICAgICBAeVtuXQorCisgICAgICAgIEFERCAgICAgICAgICAgIHI1LCByMywgIzEgICAgICAgICAgICAgICAgICAgICAgICBAIGkgPSBuICsgMQorICAgICAgICBBREQgICAgICAgICAgICByNCwgcjEsIHI1LCBMU0wgIzEgICAgICAgICAgICAgICAgQCB0bXBIIGFkZHJlc3MKKyAgICAgICAgTU9WICAgICAgICAgICAgcjYsIHIwCisgICAgICAgIFZNT1YuUzMyICAgICAgIFExMCwgIzAKK0xPT1A0OiAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIENNUCAgICAgICAgICAgIHI1LCAjMAorICAgICAgICBCTEUgICAgICAgICAgICBMNAorICAgICAgICBTVUIgICAgICAgICAgICByNCwgcjQsICM4CisgICAgICAgIE1PViAgICAgICAgICAgIHI5LCByNAorICAgICAgICBWTEQxLlMxNiAgICAgICBEMCwgW3I2XSEgICAKKyAgICAgICAgVkxEMS5TMTYgICAgICAgRDEsIFtyOV0hCisgICAgICAgIFZSRVY2NC4xNiAgICAgIEQxLCBEMQorICAgICAgICBTVUJTICAgICAgICAgICByNSwgcjUsICM0ICAKKyAgICAgICAgVk1MQUwuUzE2ICAgICAgUTEwLCBEMCwgRDEgICAgICAgICAKKyAgICAgICAgQiAgICAgICAgICAgICAgTE9PUDQgICAgCitMNDogICAgICAgICAgICAgICAgICAKKyAgICAgICAgVkFERC5TMzIgICAgICAgRDIwLCBEMjAsIEQyMQorICAgICAgICBWUEFERC5TMzIgICAgICBEMjAsIEQyMCwgRDIwCisgICAgICAgIFZNT1YuUzMyICAgICAgIHI1LCAgRDIwWzBdCisgICAgICAgIEFERCAgICAgICAgICAgIHI1LCByMTEsIHI1LCBMU0wgIzEKKyAgICAgICAgTU9WICAgICAgICAgICAgcjUsIHI1LCBMU1IgIzE2ICAgICAgICAgICAgICAgICAgIEBleHRyYWN0X2gocykKKyAgICAgICAgQUREICAgICAgICAgICAgcjMsIHIzLCAjMQorICAgICAgICBTVFJIICAgICAgICAgICByNSwgW3IyXSwgIzIgICAgICAgICAgICAgICAgICAgICAgQHlbbl0KKyAgICAgICAgCisgICAgICAgIENNUCAgICAgICAgICAgIHIzLCAjNjQKKyAgICAgICAgQkxUICAgICAgICAgICAgTE9PUAorICAgICAgICAgICAgICAgIAorQ29udm9sdmVfYXNtX2VuZDogCisgCisgICAgICAgIExETUZEICAgICAgcjEzISwge3I0IC0gcjEyLCByMTV9CisgICAgCisgICAgICAgIEBFTkRGVU5DCisgICAgICAgIC5FTkQKKwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9hc20vQVJNVjcvY29yX2hfdmVjX25lb24ucyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYXNtL0FSTVY3L2Nvcl9oX3ZlY19uZW9uLnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmUzMzlkYgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYXNtL0FSTVY3L2Nvcl9oX3ZlY19uZW9uLnMKQEAgLTAsMCArMSwxNTEgQEAKK0AvKg0KK0AgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCitAICoqDQorQCAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCitAICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCitAICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KK0AgKioNCitAICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCitAICoqDQorQCAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorQCAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KK0AgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorQCAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorQCAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCitAICovDQorQA0KK0BzdGF0aWMgdm9pZCBjb3JfaF92ZWNfMDEyKA0KK0AJCVdvcmQxNiBoW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIHNjYWxlZCBpbXB1bHNlIHJlc3BvbnNlICAgICAgICAgICAgICAgICAqLw0KK0AJCVdvcmQxNiB2ZWNbXSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIHNjYWxlZCB2ZWN0b3IgKC84KSB0byBjb3JyZWxhdGUgd2l0aCBoW10gKi8NCitACQlXb3JkMTYgdHJhY2ssICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSB0cmFjayB0byB1c2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCitACQlXb3JkMTYgc2lnbltdLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBzaWduIHZlY3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCitACQlXb3JkMTYgcnJpeGl4W11bTkJfUE9TXSwgICAgICAgICAgICAgIC8qIChpKSBjb3JyZWxhdGlvbiBvZiBoW3hdIHdpdGggaFt4XSAgICAgICovDQorQAkJV29yZDE2IGNvcl8xW10sICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgcmVzdWx0IG9mIGNvcnJlbGF0aW9uIChOQl9QT1MgZWxlbWVudHMpICovDQorQAkJV29yZDE2IGNvcl8yW10gICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgcmVzdWx0IG9mIGNvcnJlbGF0aW9uIChOQl9QT1MgZWxlbWVudHMpICovDQorQCkNCitAcjAgLS0tLSBoW10NCitAcjEgLS0tLSB2ZWNbXQ0KK0ByMiAtLS0tIHRyYWNrDQorQHIzIC0tLS0gc2lnbltdDQorQHI0IC0tLS0gcnJpeGl4W11bTkJfUE9TXQ0KK0ByNSAtLS0tIGNvcl8xW10NCitAcjYgLS0tLSBjb3JfMltdDQorDQorICAgICAgICAgICAgICAuc2VjdGlvbiAudGV4dCANCisJICAgICAgLmdsb2JhbCAgY29yX2hfdmVjXzAxMl9hc20NCisNCitjb3JfaF92ZWNfMDEyX2FzbToNCisNCisgICAgICAgICAgICAgU1RNRkQgICAgICAgICByMTMhLCB7cjQgLSByMTIsIHIxNH0NCisJICAgICBMRFIgICAgICAgICAgIHI0LCBbcjEzLCAjNDBdICAgICAgICAgICAgICAgICAgICBAbG9hZCBycml4aXhbXVtOQl9QT1NdDQorCSAgICAgQUREICAgICAgICAgICByNywgcjQsIHIyLCBMU0wgIzUgICAgICAgICAgICAgICAgQHI3IC0tLSBwMCA9IHJyaXhpeFt0cmFja10NCisgICAgICAgICAgICAgTU9WICAgICAgICAgICByNCwgIzAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQGk9MA0KKw0KKwkgICAgIEByMCAtLS0gaFtdLCByMSAtLS0gdmVjW10sICByMiAtLS0gcG9zDQorCSAgICAgQHIzIC0tLSBzaWduW10sIHI0IC0tLSBpLCByNyAtLS0gcDANCisNCitMT09QaToNCisgICAgICAgICAgICAgTU9WICAgICAgICAgICByNSwgIzAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQExfc3VtMSA9IDANCisJICAgICBNT1YgICAgICAgICAgIHI2LCAjMCAgICAgICAgICAgICAgICAgICAgICAgICAgICBATF9zdW0yID0gMA0KKwkgICAgIEFERCAgICAgICAgICAgcjksIHIxLCByMiwgTFNMICMxICAgICAgICAgICAgICAgIEBwMiA9ICZ2ZWNbcG9zXQ0KKwkgICAgIE1PViAgICAgICAgICAgcjEwLCByMCAgICAgICAgICAgICAgICAgICAgICAgICAgIEBwMSA9IGgNCisJICAgICBSU0IgICAgICAgICAgIHIxMSwgcjIsICM2MiAgICAgICAgICAgICAgICAgICAgICBAaj02Mi1wb3MNCisNCitMT09QajE6DQorCSAgICAgTERSU0ggICAgICAgICByMTIsIFtyMTBdLCAjMiAgDQorCSAgICAgTERSU0ggICAgICAgICByOCwgIFtyOV0sICMyDQorCSAgICAgTERSU0ggICAgICAgICByMTQsIFtyOV0NCisJICAgICBTVUJTICAgICAgICAgIHIxMSwgcjExLCAjMQ0KKyAgICAgICAgICAgICBNTEEgICAgICAgICAgIHI1LCByMTIsIHI4LCByNQ0KKyAgICAgICAgICAgICBNTEEgICAgICAgICAgIHI2LCByMTIsIHIxNCwgcjYJIA0KKwkgICAgIEJHRSAgICAgICAgICAgTE9PUGoxDQorDQorCSAgICAgTERSU0ggICAgICAgICByMTIsIFtyMTBdLCAjMiAgICAgICAgICAgICAgICAgICAgIEAqcDErKw0KKwkgICAgIE1PViAgICAgICAgICAgcjYsIHI2LCBMU0wgIzIgICAgICAgICAgICAgICAgICAgICBATF9zdW0yID0gKExfc3VtMiA8PCAyKQ0KKyAgICAgICAgICAgICBNTEEgICAgICAgICAgIHI1LCByMTIsIHIxNCwgcjUNCisgICAgICAgICAgICAgTU9WICAgICAgICAgICByMTQsICMweDgwMDANCisgICAgICAgICAgICAgTU9WICAgICAgICAgICByNSwgcjUsIExTTCAjMiAgICAgICAgICAgICAgICAgICAgIEBMX3N1bTEgPSAoTF9zdW0xIDw8IDIpDQorICAgICAgICAgICAgIEFERCAgICAgICAgICAgcjEwLCByNiwgcjE0ICAgICAgICAgDQorICAgICAgICAgICAgIEFERCAgICAgICAgICAgcjksIHI1LCByMTQNCisgICAgICAgICAgICAgTU9WICAgICAgICAgICByNSwgcjksIEFTUiAjMTYNCisgICAgICAgICAgICAgTU9WICAgICAgICAgICByNiwgcjEwLCBBU1IgIzE2DQorICAgICAgICAgICAgIEFERCAgICAgICAgICAgcjksIHIzLCByMiwgTFNMICMxICAgICAgICAgICAgICAgICBAYWRkcmVzcyBvZiBzaWduW3Bvc10NCisgICAgICAgICAgICAgQUREICAgICAgICAgICByOCwgcjcsICMzMg0KKyAgICAgICAgICAgICBMRFJTSCAgICAgICAgIHIxMCwgW3I5XSwgIzIgICAgICAgICAgICAgICAgIAkgIEBzaWduW3Bvc10NCisJICAgICBMRFJTSCAgICAgICAgIHIxMSwgW3I5XSAgICAgICAgICAgICAgICAgICAgICAgICAgQHNpZ25bcG9zICsgMV0NCisJICAgICBNVUwgICAgICAgICAgIHIxMiwgcjUsIHIxMA0KKwkgICAgIE1VTCAgICAgICAgICAgcjE0LCByNiwgcjExDQorCSAgICAgTU9WICAgICAgICAgICByNSwgcjEyLCBBU1IgIzE1DQorCSAgICAgTU9WICAgICAgICAgICByNiwgcjE0LCBBU1IgIzE1DQorCSAgICAgTERSICAgICAgICAgICByOSwgIFtyMTMsICM0NF0gICAgICAgICAgICAgICAgICAgDQorCSAgICAgTERSICAgICAgICAgICByMTIsIFtyMTMsICM0OF0NCisgICAgICAgICAgICAgTERSU0ggICAgICAgICByMTAsIFtyN10sICMyICAgICAgICAgICAgICAgICAgICAgIEAqcDArKw0KKwkgICAgIExEUlNIICAgICAgICAgcjExLCBbcjhdICAgICAgICAgICAgICAgICAgICAgICAgICBAKnAzKysNCisgICAgICAgICAgICAgQUREICAgICAgICAgICByOSwgcjksIHI0LCBMU0wgIzENCisJICAgICBBREQgICAgICAgICAgIHIxMiwgcjEyLCByNCwgTFNMICMxDQorCSAgICAgQUREICAgICAgICAgICByNSwgcjUsIHIxMA0KKwkgICAgIEFERCAgICAgICAgICAgcjYsIHI2LCByMTENCisJICAgICBTVFJIICAgICAgICAgIHI1LCBbcjldDQorCSAgICAgU1RSSCAgICAgICAgICByNiwgW3IxMl0NCisNCisgICAgICAgICAgICAgQUREICAgICAgICAgICByMiwgcjIsICM0DQorIA0KKyAgICAgICAgICAgICBNT1YgICAgICAgICAgIHI1LCAjMCAgICAgICAgICAgICAgICAgICAgICAgICAgICBATF9zdW0xID0gMA0KKwkgICAgIE1PViAgICAgICAgICAgcjYsICMwICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBMX3N1bTIgPSAwDQorCSAgICAgQUREICAgICAgICAgICByOSwgcjEsIHIyLCBMU0wgIzEgICAgICAgICAgICAgICAgQHAyID0gJnZlY1twb3NdDQorCSAgICAgTU9WICAgICAgICAgICByMTAsIHIwICAgICAgICAgICAgICAgICAgICAgICAgICAgQHAxID0gaA0KKwkgICAgIFJTQiAgICAgICAgICAgcjExLCByMiwgIzYyICAgICAgICAgICAgICAgICAgICAgIEBqPTYyLXBvcw0KKwkgICAgIEFERCAgICAgICAgICAgcjQsIHI0LCAjMSAgICAgICAgICAgICAgICAgICAgICAgIEBpKysNCisNCitMT09QajI6DQorCSAgICAgTERSU0ggICAgICAgICByMTIsIFtyMTBdLCAjMiAgDQorCSAgICAgTERSU0ggICAgICAgICByOCwgIFtyOV0sICMyDQorCSAgICAgTERSU0ggICAgICAgICByMTQsIFtyOV0NCisJICAgICBTVUJTICAgICAgICAgIHIxMSwgcjExLCAjMQ0KKyAgICAgICAgICAgICBNTEEgICAgICAgICAgIHI1LCByMTIsIHI4LCByNQ0KKyAgICAgICAgICAgICBNTEEgICAgICAgICAgIHI2LCByMTIsIHIxNCwgcjYJIA0KKwkgICAgIEJHRSAgICAgICAgICAgTE9PUGoyDQorDQorCSAgICAgTERSU0ggICAgICAgICByMTIsIFtyMTBdLCAjMiAgICAgICAgICAgICAgICAgICAgIEAqcDErKw0KKwkgICAgIE1PViAgICAgICAgICAgcjYsIHI2LCBMU0wgIzIgICAgICAgICAgICAgICAgICAgICBATF9zdW0yID0gKExfc3VtMiA8PCAyKQ0KKyAgICAgICAgICAgICBNTEEgICAgICAgICAgIHI1LCByMTIsIHIxNCwgcjUNCisgICAgICAgICAgICAgTU9WICAgICAgICAgICByMTQsICMweDgwMDANCisgICAgICAgICAgICAgTU9WICAgICAgICAgICByNSwgcjUsIExTTCAjMiAgICAgICAgICAgICAgICAgICAgIEBMX3N1bTEgPSAoTF9zdW0xIDw8IDIpDQorICAgICAgICAgICAgIEFERCAgICAgICAgICAgcjEwLCByNiwgcjE0ICAgICAgICANCisgICAgICAgICAgICAgQUREICAgICAgICAgICByOSwgcjUsIHIxNA0KKw0KKyAgICAgICAgICAgICBNT1YgICAgICAgICAgIHI1LCByOSwgQVNSICMxNg0KKyAgICAgICAgICAgICBNT1YgICAgICAgICAgIHI2LCByMTAsIEFTUiAjMTYNCisgICAgICAgICAgICAgQUREICAgICAgICAgICByOSwgcjMsIHIyLCBMU0wgIzEgICAgICAgICAgICAgICAgIEBhZGRyZXNzIG9mIHNpZ25bcG9zXQ0KKyAgICAgICAgICAgICBBREQgICAgICAgICAgIHI4LCByNywgIzMyDQorICAgICAgICAgICAgIExEUlNIICAgICAgICAgcjEwLCBbcjldLCAjMiAgICAgICAgICAgICAgICAgCSAgQHNpZ25bcG9zXQ0KKwkgICAgIExEUlNIICAgICAgICAgcjExLCBbcjldICAgICAgICAgICAgICAgICAgICAgICAgICBAc2lnbltwb3MgKyAxXQ0KKwkgICAgIE1VTCAgICAgICAgICAgcjEyLCByNSwgcjEwDQorCSAgICAgTVVMICAgICAgICAgICByMTQsIHI2LCByMTENCisJICAgICBNT1YgICAgICAgICAgIHI1LCByMTIsIEFTUiAjMTUNCisJICAgICBNT1YgICAgICAgICAgIHI2LCByMTQsIEFTUiAjMTUNCisJICAgICBMRFIgICAgICAgICAgIHI5LCAgW3IxMywgIzQ0XSAgICAgICAgICAgICAgICAgICANCisJICAgICBMRFIgICAgICAgICAgIHIxMiwgW3IxMywgIzQ4XQ0KKyAgICAgICAgICAgICBMRFJTSCAgICAgICAgIHIxMCwgW3I3XSwgIzIgICAgICAgICAgICAgICAgICAgICAgQCpwMCsrDQorCSAgICAgTERSU0ggICAgICAgICByMTEsIFtyOF0gICAgICAgICAgICAgICAgICAgICAgICAgIEAqcDMrKw0KKyAgICAgICAgICAgICBBREQgICAgICAgICAgIHI5LCByOSwgcjQsIExTTCAjMQ0KKwkgICAgIEFERCAgICAgICAgICAgcjEyLCByMTIsIHI0LCBMU0wgIzENCisJICAgICBBREQgICAgICAgICAgIHI1LCByNSwgcjEwDQorCSAgICAgQUREICAgICAgICAgICByNiwgcjYsIHIxMQ0KKwkgICAgIFNUUkggICAgICAgICAgcjUsIFtyOV0NCisJICAgICBTVFJIICAgICAgICAgIHI2LCBbcjEyXQ0KKwkgICAgIEFERCAgICAgICAgICAgcjQsIHI0LCAjMSAgICAgICAgICAgICAgICAgICAgICAgICBAaSsxDQorCSAgICAgQUREICAgICAgICAgICByMiwgcjIsICM0ICAgICAgICAgICAgICAgICAgICAgICAgIEBwb3MgKz0gU1RFUA0KKwkgICAgIENNUCAgICAgICAgICAgcjQsICMxNg0KKwkgICAgIA0KKwkgICAgIEJMVCAgICAgICAgICAgTE9PUGkNCisgICAgICAgICANCit0aGVfZW5kOg0KKyAgICAgICAgICAgICBMRE1GRCAgICAgICAgIHIxMyEsIHtyNCAtIHIxMiwgcjE1fQ0KKyAgICAgICAgICAgICANCisJICAgICAuRU5ECSANCisgICAgICAgIA0KKwkNCisJICANCisNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNy9wcmVkX2x0NF8xX25lb24ucyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYXNtL0FSTVY3L3ByZWRfbHQ0XzFfbmVvbi5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiODg1M2YKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNy9wcmVkX2x0NF8xX25lb24ucwpAQCAtMCwwICsxLDEwMCBAQAorQC8qDQorQCAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KK0AgKioNCitAICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KK0AgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KK0AgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorQCAqKg0KK0AgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KK0AgKioNCitAICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCitAICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorQCAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCitAICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCitAICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KK0AgKi8NCitADQorQHZvaWQgUHJlZF9sdDQoDQorQCAgICAgV29yZDE2IGV4Y1tdLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbi9vdXQ6IGV4Y2l0YXRpb24gYnVmZmVyICovDQorQCAgICAgV29yZDE2IFQwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IGludGVnZXIgcGl0Y2ggbGFnICovDQorQCAgICAgV29yZDE2IGZyYWMsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IGZyYWN0aW9uIG9mIGxhZyAgICovDQorQCAgICAgV29yZDE2IExfc3ViZnIgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IHN1YmZyYW1lIHNpemUgICAgICovDQorQCkNCitAKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCitAIHIwICAgIC0tLSAgZXhjW10NCitAIHIxICAgIC0tLSAgVDANCitAIHIyICAgIC0tLSAgZnJhYw0KK0AgcjMgICAgLS0tICBMX3N1YmZyDQorIA0KKyAgICAgICAgICAuc2VjdGlvbiAgLnRleHQgDQorICAgICAgICAgIC5nbG9iYWwgICBwcmVkX2x0NF9hc20NCisgICAgICAgICAgLmV4dGVybiAgIGludGVyNF8yDQorDQorcHJlZF9sdDRfYXNtOg0KKw0KKyAgICAgICAgICBTVE1GRCAgIAlyMTMhLCB7cjQgLSByMTIsIHIxNH0gDQorICAgICAgICAgIFNVQiAgICAgICAgICAgcjQsIHIwLCByMSwgTFNMICMxICAgICAgICAgICAgICAgICAgICAgICAgQCB4ID0gZXhjIC0gVDANCisgICAgICAgICAgUlNCICAgICAgICAgICByMiwgcjIsICMwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAIGZyYWMgPSAtIGZyYWMNCisgICAgICAgICAgU1VCICAgICAgICAgICByNCwgcjQsICMzMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAIHggLT0gTF9JTlRFUlBPTDIgLSAxDQorICAgICAgICAgIENNUCAgICAgICAgICAgcjIsICMwDQorICAgICAgICAgIEFERExUICAgICAgICAgcjIsIHIyLCAjNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQCBmcmFjICs9IFVQX1NBTVANCisgICAgICAgICAgU1VCTFQgICAgICAgICByNCwgcjQsICMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAIHgtLQ0KKw0KKyAgICAgICAgICBMRFIgICAgICAgICAgIHIxMSwgTGFibGUxDQorICAgICAgICAgIFJTQiAgICAgICAgICAgcjIsIHIyLCAjMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQCBrID0gVVBfU0FNUCAtIDEgLSBmcmFjDQorICAgICAgICAgIE1PViAgICAgICAgICAgcjgsICMwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQCBqID0gMA0KKwkgIEFERCAgICAgICAgICAgcjExLCByMTEsIHIyLCBMU0wgIzYgICAgICAgICAgICAgICAgICAgICAgQCBnZXQgaW50ZXI0XzJba11bXQ0KKw0KKwkgIFZMRDEuUzE2ICAgICAge1EwLCBRMX0sIFtyMTFdIQ0KKwkgIFZMRDEuUzE2ICAgICAge1EyLCBRM30sIFtyMTFdIQ0KKyAgICAgICAgICANCisJICBNT1YgICAgICAgICAgIHI2LCAjMHg4MDAwIA0KKw0KKyAgICAgICAgICBWTEQxLlMxNiAgICAgIHtRNCwgUTV9LCBbcjRdISAgICAgICAgICAgICAgICAgICAgICAgICAgIEBsb2FkIDE2IHhbXQ0KKyAgICAgICAgICBWTEQxLlMxNiAgICAgIHtRNiwgUTd9LCBbcjRdISAgICAgICAgICAgICAgICAgICAgICAgICAgIEBsb2FkIDE2IHhbXQ0KKw0KK0xPT1A6DQorICAgICAgICAgIFZRRE1VTEwuUzE2ICAgUTE1LCBEOCwgRDANCisgICAgICAgICAgVlFETUxBTC5TMTYgICBRMTUsIEQ5LCBEMQ0KKyAgICAgICAgICBWUURNTEFMLlMxNiAgIFExNSwgRDEwLCBEMg0KKyAgICAgICAgICBWUURNTEFMLlMxNiAgIFExNSwgRDExLCBEMw0KKyAgICAgICAgDQorICAgICAgICAgIFZRRE1MQUwuUzE2ICAgUTE1LCBEMTIsIEQ0DQorICAgICAgICAgIFZRRE1MQUwuUzE2ICAgUTE1LCBEMTMsIEQ1DQorICAgICAgICAgIFZRRE1MQUwuUzE2ICAgUTE1LCBEMTQsIEQ2DQorICAgICAgICAgIFZRRE1MQUwuUzE2ICAgUTE1LCBEMTUsIEQ3DQorDQorICAgICAgICAgIExEUlNIICAgICAgICAgcjEyLCBbcjRdLCAjMiAgICAgICAgICAgICAgICANCisgICAgICAgICAgDQorICAgICAgICAgIFZFWFQuUzE2ICAgICAgRDgsIEQ4LCBEOSwgIzENCisgICAgICAgICAgVkVYVC5TMTYgICAgICBEOSwgRDksIEQxMCwgIzENCisgICAgICAgICAgVkVYVC5TMTYgICAgICBEMTAsIEQxMCwgRDExLCAjMQ0KKyAgICAgICAgICBWRVhULlMxNiAgICAgIEQxMSwgRDExLCBEMTIsICMxDQorICAgICAgICAgIFZEVVAuUzE2ICAgICAgRDI0LCByMTINCisgICAgICAgICAgVkVYVC5TMTYgICAgICBEMTIsIEQxMiwgRDEzLCAjMQ0KKyAgICAgICAgICBWRVhULlMxNiAgICAgIEQxMywgRDEzLCBEMTQsICMxDQorICAgICANCisgICAgICAgICAgVlFBREQuUzMyICAgICBEMzAsIEQzMCwgRDMxDQorCSAgTU9WICAgICAgICAgICByMTEsICMweDgwMDAgICAgICAgICAgDQorICAgICAgICAgIFZQQURELlMzMiAgICAgRDMwLCBEMzAsIEQzMA0KKyAgICAgICAgICBBREQgICAgICAgICAgIHI4LCByOCwgIzENCisgICAgICAgICAgVk1PVi5TMzIgICAgICByMTIsIEQzMFswXQ0KKyAgICAgICAgICBWRVhULlMxNiAgICAgIEQxNCwgRDE0LCBEMTUsICMxICAgICAgICAgIA0KKw0KKyAgICAgICAgICBRQUREICAgICAgICAgIHIxLCByMTIsIHIxMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEAgTF9zdW0gPSAoTF9zdW0gPDwgMikNCisgICAgICAgICAgVkVYVC5TMTYgICAgICBEMTUsIEQxNSwgRDI0LCAjMQ0KKyAgICAgICAgICBRQUREICAgICAgICAgIHI1LCByMSwgcjYgICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgIE1PViAgICAgICAgICAgcjEsIHI1LCBBU1IgIzE2DQorICAgICAgICAgIENNUCAgICAgICAgICAgcjgsIHIzDQorICAgICAgICAgIFNUUkggICAgICAgICAgcjEsIFtyMF0sICMyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQCBleGNbal0gPSAoTF9zdW0gKyAweDgwMDApID4+IDE2DQorICAgICAgICAgIEJMVCAgICAgICAgICAgTE9PUA0KKyAgICAgICAgICAgICAgICAgICAgDQorcHJlZF9sdDRfZW5kOg0KKwkJICAgICANCisgICAgICAgICAgTERNRkQgICAJcjEzISwge3I0IC0gcjEyLCByMTV9IA0KKyANCitMYWJsZTE6DQorICAgICAgICAgIC53b3JkICAgCWludGVyNF8yDQorICAgICAgICAgIEBFTkRGVU5DDQorICAgICAgICAgIC5FTkQNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNy9yZXNpZHVfYXNtX25lb24ucyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYXNtL0FSTVY3L3Jlc2lkdV9hc21fbmVvbi5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5ZTZiMjMKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNy9yZXNpZHVfYXNtX25lb24ucwpAQCAtMCwwICsxLDEyNyBAQAorQC8qCitAICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuCitAICoqCitAICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworQCAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitAICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorQCAqKgorQCAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCitAICoqCitAICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK0AgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKK0AgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCitAICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK0AgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCitAICovCitACitAdm9pZCBSZXNpZHUgKAorQCAgICBXb3JkMTYgYVtdLCAvKiAoaSkgICAgIDogcHJlZGljdGlvbiBjb2VmZmljaWVudHMgICAgICAgICAgICAgICAgICAgICAgKi8KK0AgICAgV29yZDE2IHhbXSwgLyogKGkpICAgICA6IHNwZWVjaCBzaWduYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCitAICAgIFdvcmQxNiB5W10sIC8qIChvKSAgICAgOiByZXNpZHVhbCBzaWduYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworQCAgICBXb3JkMTYgbGcgICAvKiAoaSkgICAgIDogc2l6ZSBvZiBmaWx0ZXJpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KK0ApCitAYVtdICAgICAgICBSTiAgICAgcjAKK0B4W10gICAgICAgIFJOICAgICByMQorQHlbXSAgICAgICAgUk4gICAgIHIyCitAbGcgICAgICAgICBSTiAgICAgcjMKKworCS5zZWN0aW9uICAgLnRleHQKKyAgICAgICAgLmdsb2JhbCAgICBSZXNpZHVfb3B0IAorCitSZXNpZHVfb3B0OgorCisgICAgICAgIFNUTUZEICAgICAgICAgIHIxMyEsIHtyNCAtIHIxMiwgcjE0fSAKKyAgICAgICAgU1VCICAgICAgICAgICAgcjcsIHIzLCAjNCAgICAgICAgICAgICAgICAgICAgICAgQGkgPSBsZyAtIDQKKyAgICAgICAgCisgICAgICAgIFZMRDEuUzE2ICAgICAgIHtEMCwgRDEsIEQyLCBEM30sIFtyMF0hICAgICAgICAgICAgICBAZ2V0IGFsbCBhW10gIAorCVZMRDEuUzE2ICAgICAgIHtENH0sIFtyMF0hCisgICAgICAgIFZNT1YuUzMyICAgICAgIFE4LCAgIzB4ODAwMAorICAgICAgICAKK0xPT1AxOgorICAgICAgICBBREQgICAgICAgICAgICByOSwgcjEsIHI3LCBMU0wgIzEgICAgICAgICAgICAgICBAY29weSB0aGUgYWRkcmVzcworICAgICAgICBBREQgICAgICAgICAgICByMTAsIHIyLCByNywgTFNMICMxCisgICAgICAgIE1PViAgICAgICAgICAgIHI4LCByOQorICAgICAgICBWTEQxLlMxNiAgICAgICBENSwgW3I4XSEgICAgICAgICAgICAgICAgICAgICAgIEBnZXQgeFtpXSwgeFtpKzFdLCB4W2krMl0sIHhbaSszXQorICAgICAgICBWUURNVUxMLlMxNiAgICBRMTAsIEQ1LCBEMFswXSAgICAgICAgICAgICAgICAgIEBmaW5pc2ggdGhlIGZpcnN0IExfbXVsdAorCisgICAgICAgIFNVQiAgICAgICAgICAgIHI4LCByOSwgIzIgICAgICAgICAgICAgICAgICAgICAgIEBnZXQgdGhlIHhbaS0xXSBhZGRyZXNzCisgICAgICAgIFZMRDEuUzE2ICAgICAgIEQ1LCBbcjhdISAKKyAgICAgICAgVlFETUxBTC5TMTYgICAgUTEwLCBENSwgRDBbMV0KKworICAgICAgICBTVUIgICAgICAgICAgICByOCwgcjksICM0ICAgICAgICAgICAgICAgICAgICAgICBAbG9hZCB0aGUgeFtpLTJdIGFkZHJlc3MKKyAgICAgICAgVkxEMS5TMTYgICAgICAgRDUsIFtyOF0hCisgICAgICAgIFZRRE1MQUwuUzE2ICAgIFExMCwgRDUsIEQwWzJdCisKKyAgICAgICAgU1VCICAgICAgICAgICAgcjgsIHI5LCAjNiAgICAgICAgICAgICAgICAgICAgICAgQGxvYWQgdGhlIHhbaS0zXSBhZGRyZXNzCisgICAgICAgIFZMRDEuUzE2ICAgICAgIEQ1LCBbcjhdISAgICAgCisgICAgICAgIFZRRE1MQUwuUzE2ICAgIFExMCwgRDUsIEQwWzNdICAgICAgICAgICAgICAgICAgICAKKworICAgICAgICBTVUIgICAgICAgICAgICByOCwgcjksICM4ICAgICAgICAgICAgICAgICAgICAgICBAbG9hZCB0aGUgeFtpLTRdIGFkZHJlc3MKKyAgICAgICAgVkxEMS5TMTYgICAgICAgRDUsIFtyOF0hICAgICAKKyAgICAgICAgVlFETUxBTC5TMTYgICAgUTEwLCBENSwgRDFbMF0gIAorCisgICAgICAgIFNVQiAgICAgICAgICAgIHI4LCByOSwgIzEwICAgICAgICAgICAgICAgICAgICAgIEBsb2FkIHRoZSB4W2ktNV0gYWRkcmVzcworICAgICAgICBWTEQxLlMxNiAgICAgICBENSwgW3I4XSEgICAgIAorICAgICAgICBWUURNTEFMLlMxNiAgICBRMTAsIEQ1LCBEMVsxXSAKKworICAgICAgICBTVUIgICAgICAgICAgICByOCwgcjksICMxMiAgICAgICAgICAgICAgICAgICAgICBAbG9hZCB0aGUgeFtpLTZdIGFkZHJlc3MKKyAgICAgICAgVkxEMS5TMTYgICAgICAgRDUsIFtyOF0hICAgICAKKyAgICAgICAgVlFETUxBTC5TMTYgICAgUTEwLCBENSwgRDFbMl0gIAorCisgICAgICAgIFNVQiAgICAgICAgICAgIHI4LCByOSwgIzE0ICAgICAgICAgICAgICAgICAgICAgIEBsb2FkIHRoZSB4W2ktN10gYWRkcmVzcworICAgICAgICBWTEQxLlMxNiAgICAgICBENSwgW3I4XSEgICAgIAorICAgICAgICBWUURNTEFMLlMxNiAgICBRMTAsIEQ1LCBEMVszXSAgCisKKyAgICAgICAgU1VCICAgICAgICAgICAgcjgsIHI5LCAjMTYgICAgICAgICAgICAgICAgICAgICAgQGxvYWQgdGhlIHhbaS04XSBhZGRyZXNzCisgICAgICAgIFZMRDEuUzE2ICAgICAgIEQ1LCBbcjhdISAgICAgCisgICAgICAgIFZRRE1MQUwuUzE2ICAgIFExMCwgRDUsIEQyWzBdICAKKworICAgICAgICBTVUIgICAgICAgICAgICByOCwgcjksICMxOCAgICAgICAgICAgICAgICAgICAgICBAbG9hZCB0aGUgeFtpLTldIGFkZHJlc3MKKyAgICAgICAgVkxEMS5TMTYgICAgICAgRDUsIFtyOF0hICAgICAKKyAgICAgICAgVlFETUxBTC5TMTYgICAgUTEwLCBENSwgRDJbMV0gICAgICAgICAKKyAgICAgICAgICAgCisgICAgICAgIFNVQiAgICAgICAgICAgIHI4LCByOSwgIzIwICAgICAgICAgICAgICAgICAgICAgIEBsb2FkIHRoZSB4W2ktMTBdIGFkZHJlc3MKKyAgICAgICAgVkxEMS5TMTYgICAgICAgRDUsIFtyOF0hICAgICAKKyAgICAgICAgVlFETUxBTC5TMTYgICAgUTEwLCBENSwgRDJbMl0gIAorCisJU1VCICAgICAgICAgICAgcjgsIHI5LCAjMjIgICAgICAgICAgICAgICAgICAgICAgQGxvYWQgdGhlIHhbaS0xMV0gYWRkcmVzcworCVZMRDEuUzE2ICAgICAgIEQ1LCBbcjhdIQorCVZRRE1MQUwuUzE2ICAgIFExMCwgRDUsIEQyWzNdCisKKwlTVUIgICAgICAgICAgICByOCwgcjksICMyNCAgICAgICAgICAgICAgICAgICAgICBAbG9hZCB0aGUgeFtpLTEyXSBhZGRyZXNzCisJVkxEMS5TMTYgICAgICAgRDUsIFtyOF0hCisJVlFETUxBTC5TMTYgICAgUTEwLCBENSwgRDNbMF0KKworCVNVQiAgICAgICAgICAgIHI4LCByOSwgIzI2ICAgICAgICAgICAgICAgICAgICAgIEBsb2FkIHRoZSB4W2ktMTNdIGFkZHJlc3MKKwlWTEQxLlMxNiAgICAgICBENSwgW3I4XSEKKwlWUURNTEFMLlMxNiAgICBRMTAsIEQ1LCBEM1sxXQorCisJU1VCICAgICAgICAgICAgcjgsIHI5LCAjMjggICAgICAgICAgICAgICAgICAgICAgQGxvYWQgdGhlIHhbaS0xNF0gYWRkcmVzcworCVZMRDEuUzE2ICAgICAgIEQ1LCBbcjhdIQorCVZRRE1MQUwuUzE2ICAgIFExMCwgRDUsIEQzWzJdCisKKwlTVUIgICAgICAgICAgICByOCwgcjksICMzMCAgICAgICAgICAgICAgICAgICAgICBAbG9hZCB0aGUgeFtpLTE1XSBhZGRyZXNzCisJVkxEMS5TMTYgICAgICAgRDUsIFtyOF0hCisJVlFETUxBTC5TMTYgICAgUTEwLCBENSwgRDNbM10KKworCVNVQiAgICAgICAgICAgIHI4LCByOSwgIzMyICAgICAgICAgICAgICAgICAgICAgIEBsb2FkIHRoZSB4W2ktMTZdIGFkZHJlc3MKKwlWTEQxLlMxNiAgICAgICBENSwgW3I4XSEKKwlWUURNTEFMLlMxNiAgICBRMTAsIEQ1LCBENFswXQorCisgICAgICAgIFNVQiAgICAgICAgICAgIHI3LCByNywgIzQgICAgICAgICAgICAgICAgICAgICAgIEBpLT00CisgICAgICAgIFZRU0hMLlMzMiAgICAgIFExMCwgUTEwLCAjNAorICAgICAgICBWUUFERC5TMzIgICAgICBRMTAsIFExMCwgUTgKKyAgICAgICAgVlNIUk4uUzMyICAgICAgRDUsIFExMCwgIzE2CisgICAgICAgIFZTVDEuUzE2ICAgICAgIEQ1LCBbcjEwXSEKKyAgICAgICAgQ01QICAgICAgICAgICAgcjcsICAjMAorCisgICAgICAgIEJHRSAgICAgICAgICAgIExPT1AxCisKK1Jlc2lkdV9hc21fZW5kOiAKKyAKKyAgICAgICAgTERNRkQgICAgICByMTMhLCB7cjQgLSByMTIsIHIxNX0KKyAgICAKKyAgICAgICAgQEVOREZVTkMKKyAgICAgICAgLkVORAorCisKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYXNtL0FSTVY3L3NjYWxlX3NpZ19uZW9uLnMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNy9zY2FsZV9zaWdfbmVvbi5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0OTU3ZDgKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNy9zY2FsZV9zaWdfbmVvbi5zCkBAIC0wLDAgKzEsMTM4IEBACitALyoNCitAICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorQCAqKg0KK0AgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorQCAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorQCAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCitAICoqDQorQCAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorQCAqKg0KK0AgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KK0AgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCitAICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KK0AgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KK0AgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorQCAqLw0KK0AgICAgICAgICAgICAgICAgICAgDQorQCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorQHZvaWQgU2NhbGVfc2lnKA0KK0AgICAgICAgICAgICAgICBXb3JkMTYgeFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpL28pIDogc2lnbmFsIHRvIHNjYWxlICAgICAgICAgICAgICAgKi8NCitAICAgICAgICAgICAgICAgV29yZDE2IGxnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICA6IHNpemUgb2YgeFtdICAgICAgICAgICAgICAgICAgICovDQorQCAgICAgICAgICAgICAgIFdvcmQxNiBleHAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgOiBleHBvbmVudDogeCA9IHJvdW5kKHggPDwgZXhwKSAqLw0KK0ApDQorQCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorQCAgeFtdICAgLS0tICByMA0KK0AgIGxnICAgIC0tLSAgcjENCitAICBleHAgICAtLS0gIHIyDQorDQorICAgICAgICAgIC5zZWN0aW9uICAudGV4dCANCisgICAgICAgICAgLmdsb2JhbCAgIFNjYWxlX3NpZ19vcHQNCisNCitTY2FsZV9zaWdfb3B0Og0KKw0KKyAgICAgICAgICBTVE1GRCAgIAlyMTMhLCB7cjQgLSByMTIsIHIxNH0gDQorICAgICAgICAgIE1PViAgICAgICAgICAgcjQsICM0DQorICAgICAgICAgIFZNT1YuUzMyICAgICAgUTE1LCAjMHg4MDAwICAgICAgIA0KKyAgICAgICAgICBWRFVQLlMzMiAgICAgIFExNCwgcjIgIA0KKyAgICAgICAgICBNT1YgICAgICAgICAgIHI1LCByMCAgICAgICAgICAgICAgICAgICAgICAgICAgQCBjb3B5IHhbXSBhZGRyZXNzICAgIA0KKyAgICAgICAgICBDTVAgICAgICAgICAgIHIxLCAjNjQNCisgICAgICAgICAgTU9WRVEgICAgICAgICByNCwgIzENCisgICAgICAgICAgQkVRICAgICAgICAgICBMT09QDQorCSAgQ01QICAgICAgICAgICByMSwgIzEyOA0KKwkgIE1PVkVRICAgICAgICAgcjQsICMyDQorCSAgQkVRICAgICAgICAgICBMT09QDQorICAgICAgICAgIENNUCAgICAgICAgICAgcjEsICMyNTYNCisgICAgICAgICAgQkVRICAgICAgICAgICBMT09QDQorCSAgQ01QICAgICAgICAgICByMSwgIzgwDQorCSAgTU9WRVEgICAgICAgICByNCwgIzENCisJICBCRVEgICAgICAgICAgIExPT1AxDQorDQorTE9PUDE6DQorICAgICAgICAgIFZMRDEuUzE2ICAgICAge1EwLCBRMX0sIFtyNV0hICAgICAgICAgICAgICAgICBAbG9hZCAxNiBXb3JkMTYgeFtdICAgICANCisgICAgICAgICAgVlNITEwuUzE2ICAgICBRMTAsIEQwLCAjMTYNCisgICAgICAgICAgVlNITEwuUzE2ICAgICBRMTEsIEQxLCAjMTYNCisgICAgICAgICAgVlNITEwuUzE2ICAgICBRMTIsIEQyLCAjMTYNCisgICAgICAgICAgVlNITEwuUzE2ICAgICBRMTMsIEQzLCAjMTYNCisgICAgICAgICAgVlNITC5TMzIgICAgICBRMTAsIFExMCwgUTE0DQorICAgICAgICAgIFZTSEwuUzMyICAgICAgUTExLCBRMTEsIFExNA0KKyAgICAgICAgICBWU0hMLlMzMiAgICAgIFExMiwgUTEyLCBRMTQNCisgICAgICAgICAgVlNITC5TMzIgICAgICBRMTMsIFExMywgUTE0DQorICAgICAgICAgIFZBRERITi5TMzIgICAgRDE2LCBRMTAsIFExNQ0KKyAgICAgICAgICBWQURESE4uUzMyICAgIEQxNywgUTExLCBRMTUNCisgICAgICAgICAgVkFEREhOLlMzMiAgICBEMTgsIFExMiwgUTE1DQorICAgICAgICAgIFZBRERITi5TMzIgICAgRDE5LCBRMTMsIFExNQ0KKyAgICAgICAgICBWU1QxLlMxNiAgICAgIHtROCwgUTl9LCBbcjBdISAgICAgICAgICAgICAgICAgQHN0b3JlIDE2IFdvcmQxNiB4W10NCisNCitMT09QOiAgICAgICAgICAgICAgICANCisgICAgICAgICAgVkxEMS5TMTYgICAgICB7UTAsIFExfSwgW3I1XSEgICAgICAgICAgICAgICAgIEBsb2FkIDE2IFdvcmQxNiB4W10NCisgICAgICAgICAgVkxEMS5TMTYgICAgICB7UTIsIFEzfSwgW3I1XSEgICAgICAgICAgICAgICAgIEBsb2FkIDE2IFdvcmQxNiB4W10NCisgICAgICAgICAgVkxEMS5TMTYgICAgICB7UTQsIFE1fSwgW3I1XSEgICAgICAgICAgICAgICAgIEBsb2FkIDE2IFdvcmQxNiB4W10NCisgICAgICAgICAgVkxEMS5TMTYgICAgICB7UTYsIFE3fSwgW3I1XSEgICAgICAgICAgICAgICAgIEBsb2FkIDE2IFdvcmQxNiB4W10NCisNCisgICAgICAgICAgVlNITEwuUzE2ICAgICBROCwgRDAsICMxNg0KKyAgICAgICAgICBWU0hMTC5TMTYgICAgIFE5LCBEMSwgIzE2DQorICAgICAgICAgIFZTSExMLlMxNiAgICAgUTEwLCBEMiwgIzE2DQorICAgICAgICAgIFZTSExMLlMxNiAgICAgUTExLCBEMywgIzE2ICAgICANCisgICAgICAgICAgVlNITC5TMzIgICAgICBROCwgUTgsIFExNA0KKyAgICAgICAgICBWU0hMLlMzMiAgICAgIFE5LCBROSwgUTE0DQorICAgICAgICAgIFZTSEwuUzMyICAgICAgUTEwLCBRMTAsIFExNA0KKyAgICAgICAgICBWU0hMLlMzMiAgICAgIFExMSwgUTExLCBRMTQNCisgICAgICAgICAgVkFEREhOLlMzMiAgICBEMTYsIFE4LCBRMTUNCisgICAgICAgICAgVkFEREhOLlMzMiAgICBEMTcsIFE5LCBRMTUNCisgICAgICAgICAgVkFEREhOLlMzMiAgICBEMTgsIFExMCwgUTE1DQorICAgICAgICAgIFZBRERITi5TMzIgICAgRDE5LCBRMTEsIFExNQ0KKyAgICAgICAgICBWU1QxLlMxNiAgICAgIHtROCwgUTl9LCBbcjBdISAgICAgICAgICAgICAgICAgQHN0b3JlIDE2IFdvcmQxNiB4W10NCisNCisgICANCisgICAgICAgICAgVlNITEwuUzE2ICAgICBRMTIsIEQ0LCAjMTYNCisgICAgICAgICAgVlNITEwuUzE2ICAgICBRMTMsIEQ1LCAjMTYNCisgICAgICAgICAgVlNITEwuUzE2ICAgICBRMTAsIEQ2LCAjMTYNCisgICAgICAgICAgVlNITEwuUzE2ICAgICBRMTEsIEQ3LCAjMTYNCisgICAgICAgICAgVlNITC5TMzIgICAgICBRMTIsIFExMiwgUTE0DQorICAgICAgICAgIFZTSEwuUzMyICAgICAgUTEzLCBRMTMsIFExNA0KKyAgICAgICAgICBWU0hMLlMzMiAgICAgIFExMCwgUTEwLCBRMTQNCisgICAgICAgICAgVlNITC5TMzIgICAgICBRMTEsIFExMSwgUTE0DQorICAgICAgICAgIFZBRERITi5TMzIgICAgRDE2LCBRMTIsIFExNQ0KKyAgICAgICAgICBWQURESE4uUzMyICAgIEQxNywgUTEzLCBRMTUNCisgICAgICAgICAgVkFEREhOLlMzMiAgICBEMTgsIFExMCwgUTE1DQorICAgICAgICAgIFZBRERITi5TMzIgICAgRDE5LCBRMTEsIFExNQ0KKyAgICAgICAgICBWU1QxLlMxNiAgICAgIHtROCwgUTl9LCBbcjBdISAgICAgICAgICAgICAgICAgQHN0b3JlIDE2IFdvcmQxNiB4W10NCisNCisgICAgICAgICAgVlNITEwuUzE2ICAgICBRMTAsIEQ4LCAjMTYNCisgICAgICAgICAgVlNITEwuUzE2ICAgICBRMTEsIEQ5LCAjMTYNCisgICAgICAgICAgVlNITEwuUzE2ICAgICBRMTIsIEQxMCwgIzE2DQorICAgICAgICAgIFZTSExMLlMxNiAgICAgUTEzLCBEMTEsICMxNg0KKyAgICAgICAgICBWU0hMLlMzMiAgICAgIFExMCwgUTEwLCBRMTQNCisgICAgICAgICAgVlNITC5TMzIgICAgICBRMTEsIFExMSwgUTE0DQorICAgICAgICAgIFZTSEwuUzMyICAgICAgUTEyLCBRMTIsIFExNA0KKyAgICAgICAgICBWU0hMLlMzMiAgICAgIFExMywgUTEzLCBRMTQNCisgICAgICAgICAgVkFEREhOLlMzMiAgICBEMTYsIFExMCwgUTE1DQorICAgICAgICAgIFZBRERITi5TMzIgICAgRDE3LCBRMTEsIFExNQ0KKyAgICAgICAgICBWQURESE4uUzMyICAgIEQxOCwgUTEyLCBRMTUNCisgICAgICAgICAgVkFEREhOLlMzMiAgICBEMTksIFExMywgUTE1DQorICAgICAgICAgIFZTVDEuUzE2ICAgICAge1E4LCBROX0sIFtyMF0hICAgICAgICAgICAgICAgICBAc3RvcmUgMTYgV29yZDE2IHhbXQ0KKw0KKyAgICAgICAgICBWU0hMTC5TMTYgICAgIFExMCwgRDEyLCAjMTYgICANCisgICAgICAgICAgVlNITEwuUzE2ICAgICBRMTEsIEQxMywgIzE2DQorICAgICAgICAgIFZTSExMLlMxNiAgICAgUTEyLCBEMTQsICMxNg0KKyAgICAgICAgICBWU0hMTC5TMTYgICAgIFExMywgRDE1LCAjMTYNCisgICAgICAgICAgVlNITC5TMzIgICAgICBRMTAsIFExMCwgUTE0DQorICAgICAgICAgIFZTSEwuUzMyICAgICAgUTExLCBRMTEsIFExNA0KKyAgICAgICAgICBWU0hMLlMzMiAgICAgIFExMiwgUTEyLCBRMTQNCisgICAgICAgICAgVlNITC5TMzIgICAgICBRMTMsIFExMywgUTE0DQorICAgICAgICAgIFZBRERITi5TMzIgICAgRDE2LCBRMTAsIFExNQ0KKyAgICAgICAgICBWQURESE4uUzMyICAgIEQxNywgUTExLCBRMTUNCisgICAgICAgICAgVkFEREhOLlMzMiAgICBEMTgsIFExMiwgUTE1DQorICAgICAgICAgIFZBRERITi5TMzIgICAgRDE5LCBRMTMsIFExNSANCisgICAgICAgICAgVlNUMS5TMTYgICAgICB7UTgsIFE5fSwgW3IwXSEgICAgICAgICAgICAgICAgIEBzdG9yZSAxNiBXb3JkMTYgeFtdICANCisgICAgICAgICAgU1VCUyAgICAgICAgICByNCwgcjQsICMxDQorICAgICAgICAgIEJHVCAgICAgICAgICAgTE9PUCAgICAgDQorICAgICAgICAgICAgICAgIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgDQorU2NhbGVfc2lnX2FzbV9lbmQ6DQorDQorICAgICAgICAgIExETUZEICAgCXIxMyEsIHtyNCAtIHIxMiwgcjE1fSANCisgICAgICAgICAgQEVOREZVTkMNCisgICAgICAgICAgLkVORA0KKyANCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNy9zeW5fZmlsdF9uZW9uLnMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2FzbS9BUk1WNy9zeW5fZmlsdF9uZW9uLnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGMzZDRhOAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYXNtL0FSTVY3L3N5bl9maWx0X25lb24ucwpAQCAtMCwwICsxLDEwNiBAQAorQC8qDQorQCAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KK0AgKioNCitAICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KK0AgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KK0AgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorQCAqKg0KK0AgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KK0AgKioNCitAICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCitAICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorQCAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCitAICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCitAICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KK0AgKi8NCitADQorQHZvaWQgU3luX2ZpbHQoDQorQCAgICAgV29yZDE2IGFbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTEyIDogYVttKzFdIHByZWRpY3Rpb24gY29lZmZpY2llbnRzICAgICAgICAgICAqLw0KK0AgICAgIFdvcmQxNiB4W10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IGlucHV0IHNpZ25hbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCitAICAgICBXb3JkMTYgeVtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSAgICAgOiBvdXRwdXQgc2lnbmFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorQCAgICAgV29yZDE2IG1lbVtdLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaS9vKSAgIDogbWVtb3J5IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGZpbHRlcmluZy4gICAqLw0KK0ApDQorQCoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorQCBhW10gICAgLS0tICAgcjANCitAIHhbXSAgICAtLS0gICByMQ0KK0AgeVtdICAgIC0tLSAgIHIyDQorQCBtZW1bXSAgLS0tICAgcjMNCitAIG0gLS0tICAxNiAgbGcgLS0tIDgwICB1cGRhdGUgLS0tIDENCisNCisgICAgICAgICAgLnNlY3Rpb24gIC50ZXh0IA0KKyAgICAgICAgICAuZ2xvYmFsICAgU3luX2ZpbHRfYXNtDQorDQorU3luX2ZpbHRfYXNtOg0KKw0KKyAgICAgICAgICBTVE1GRCAgIAlyMTMhLCB7cjQgLSByMTIsIHIxNH0gDQorICAgICAgICAgIFNVQiAgICAgICAgICAgcjEzLCByMTMsICM3MDAgICAgICAgICAgICAgICAgICAgQCB5X2J1ZltMX0ZSQU1FMTZrICsgTTE2a10NCisgICANCisgICAgICAgICAgTU9WICAgICAgICAgICByNCwgcjMgICAgICAgICAgICAgICAgICAgICAgICAgICBAIGNvcHkgbWVtW10gYWRkcmVzcw0KKyAgICAgICAgICBNT1YgICAgICAgICAgIHI1LCByMTMgICAgICAgICAgICAgICAgICAgICAgICAgIEAgY29weSB5eSA9IHlfYnVmIGFkZHJlc3MNCisNCisgICAgICAgICAgQCBmb3IoaSA9IDBAIGkgPCBtQCBpKyspDQorICAgICAgICAgIEB7DQorICAgICAgICAgIEAgICAgKnl5KysgPSBtZW1baV1ADQorICAgICAgICAgIEB9IA0KKyAgICAgICAgICBWTEQxLlMxNiAgICAgIHtEMCwgRDEsIEQyLCBEM30sIFtyNF0hICAgICAgICAgIEBsb2FkIDE2IG1lbXMNCisJICBWU1QxLlMxNiAgICAgIHtEMCwgRDEsIEQyLCBEM30sIFtyNV0hICAgICAgICAgIEBzdG9yZSAxNiBtZW1bXSB0byAqeXkNCisNCisgICAgICAgICAgTERSU0ggICAgICAgICByNSwgW3IwXSwgIzIgICAgICAgICAgICAgICAgICAgICBAIGxvYWQgYVswXQ0KKyAgICAgICAgICBNT1YgICAgICAgICAgIHI4LCAjMCAgICAgICAgICAgICAgICAgICAgICAgICAgIEAgaSA9IDANCisgICAgICAgICAgTU9WICAgICAgICAgICByNSwgcjUsIEFTUiAjMSAgICAgICAgICAgICAgICAgICBAIGEwID0gYVswXSA+PiAxDQorICAgICAgICAgIFZNT1YuUzE2ICAgICAgRDhbMF0sIHI1DQorICAgICAgICAgIEAgbG9hZCBhbGwgYVtdDQorICAgICAgICAgIFZMRDEuUzE2ICAgICAge0QwLCBEMSwgRDIsIEQzfSwgW3IwXSEgICAgICAgICAgQCBsb2FkIGFbMV0gfiBhWzE2XQ0KKwkgIFZSRVY2NC4xNiAgICAgRDAsIEQwDQorCSAgVlJFVjY0LjE2ICAgICBEMSwgRDENCisJICBWUkVWNjQuMTYgICAgIEQyLCBEMg0KKwkgIFZSRVY2NC4xNiAgICAgRDMsIEQzIA0KKwkgIE1PViAgICAgICAgICAgcjgsICMwICAgICAgICAgICAgICAgICAgICAgICAgICAgQCBsb29wIHRpbWVzDQorCSAgTU9WICAgICAgICAgICByMTAsIHIxMyAgICAgICAgICAgICAgICAgICAgICAgICBAIHRlbXAgPSB5X2J1Zg0KKwkgIEFERCAgICAgICAgICAgcjQsIHIxMywgIzMyICAgICAgICAgICAgICAgICAgICAgQCB5eVtpXSBhZGRyZXNzDQorDQorICAgICAgICAgIFZMRDEuUzE2ICAgICAge0Q0LCBENSwgRDYsIEQ3fSwgW3IxMF0hICAgICAgICAgQCBmaXJzdCAxNiB0ZW1wX3ANCisNCitTWU5fTE9PUDoNCisNCisgICAgICAgICAgTERSU0ggICAgICAgICByNiwgW3IxXSwgIzIgICAgICAgICAgICAgICAgICAgICBAIGxvYWQgeFtpXQ0KKwkgIE1VTCAgICAgICAgICAgcjEyLCByNiwgcjUgICAgICAgICAgICAgICAgICAgICAgQCBMX3RtcCA9IHhbaV0gKiBhMA0KKwkgIEFERCAgICAgICAgICAgcjEwLCByNCwgcjgsIExTTCAjMSAgICAgICAgICAgICAgQCB5W2ldLCB5eVtpXSBhZGRyZXNzDQorDQorCSAgVkRVUC5TMzIgICAgICBRMTAsIHIxMg0KKwkgIFZNVUxMLlMxNiAgICAgUTUsIEQzLCBENCAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgIFZNTEFMLlMxNiAgICAgUTUsIEQyLCBENQ0KKyAgICAgICAgICBWTUxBTC5TMTYgICAgIFE1LCBEMSwgRDYNCisgICAgICAgICAgVk1MQUwuUzE2ICAgICBRNSwgRDAsIEQ3DQorICAgICAgICAgIFZFWFQuOCAgICAgICAgRDQsIEQ0LCBENSwgIzINCisgICAgICAgICAgVkVYVC44ICAgICAgICBENSwgRDUsIEQ2LCAjMg0KKyAgICAgICAgICBWRVhULjggICAgICAgIEQ2LCBENiwgRDcsICMyDQorICAgICAgICAgIFZQQURELlMzMiAgICAgRDEyLCBEMTAsIEQxMQ0KKyAgICAgICAgICBBREQgICAgICAgICAgIHI4LCByOCwgIzENCisgICAgICAgICAgVlBBREQuUzMyICAgICBEMTAsIEQxMiwgRDEyDQorDQorCSAgVkRVUC5TMzIgICAgICBRNywgRDEwWzBdDQorDQorCSAgVlNVQi5TMzIgICAgICBROSwgUTEwLCBRNw0KKyAgICAgICAgICBWUVJTSFJOLlMzMiAgIEQyMCwgUTksICMxMiAgIA0KKyAgICAgICAgICBWTU9WLlMxNiAgICAgIHI5LCBEMjBbMF0NCisgICAgICAgICAgVkVYVC44ICAgICAgICBENywgRDcsIEQyMCwgIzINCisgICAgICAgICAgQ01QICAgICAgICAgICByOCwgIzgwDQorICAgICAgICAgIFNUUkggICAgICAgICAgcjksIFtyMTBdICAgICAgICAgICAgICAgICAgICAgICAgQCB5eVtpXQ0KKyAgICAgICAgICBTVFJIICAgICAgICAgIHI5LCBbcjJdLCAjMiAgICAgICAgICAgICAgICAgICAgIEAgeVtpXSAgICAgICAgICAJICAgICAgICAgDQorCSAgDQorICAgICAgICAgIEJMVCAgICAgICAgICAgU1lOX0xPT1ANCisgDQorICAgICAgICAgIEAgdXBkYXRlIG1lbVtdDQorICAgICAgICAgIEFERCAgICAgICAgICAgcjUsIHIxMywgIzE2MCAgICAgICAgICAgICAgICAgICAgQCB5eVs2NF0gYWRkcmVzcw0KKwkgIFZMRDEuUzE2ICAgICAge0QwLCBEMSwgRDIsIEQzfSwgW3I1XSENCisJICBWU1QxLlMxNiAgICAgIHtEMCwgRDEsIEQyLCBEM30sIFtyM10hICAgICAgICAgICAgICANCisNCitTeW5fZmlsdF9hc21fZW5kOg0KKyANCisgICAgICAgICAgQUREICAgICAgICAgICByMTMsIHIxMywgIzcwMAkJICAgICANCisgICAgICAgICAgTERNRkQgICAJcjEzISwge3I0IC0gcjEyLCByMTV9IA0KKyAgICAgICAgICBARU5ERlVOQw0KKyAgICAgICAgICAuRU5EDQorIA0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYXV0b2NvcnIuYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYXV0b2NvcnIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zM2VkNjcwCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9hdXRvY29yci5jCkBAIC0wLDAgKzEsMTI3IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogICAgICAgRmlsZTogYXV0b2NvcnIuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgRGVzY3JpcHRpb246Q29tcHV0ZSBhdXRvY29ycmVsYXRpb25zIG9mIHNpZ25hbCB3aXRoIHdpbmRvd2luZyAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaW5jbHVkZSAidHlwZWRlZi5oIg0KKyNpbmNsdWRlICJiYXNpY19vcC5oIg0KKyNpbmNsdWRlICJvcGVyXzMyYi5oIg0KKyNpbmNsdWRlICJhY2VscC5oIg0KKyNpbmNsdWRlICJoYW1fd2luZC50YWIiDQorDQordm9pZCBBdXRvY29ycigNCisJCVdvcmQxNiB4W10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgIDogSW5wdXQgc2lnbmFsICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgbSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICA6IExQQyBvcmRlciAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IHJfaFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgUTE1OiBBdXRvY29ycmVsYXRpb25zICAobXNiKSAgICAgICAgICAgKi8NCisJCVdvcmQxNiByX2xbXSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pICAgIDogQXV0b2NvcnJlbGF0aW9ucyAgKGxzYikgICAgICAgICAgICovDQorCSAgICAgKQ0KK3sNCisJV29yZDMyIGksIG5vcm0sIHNoaWZ0Ow0KKwlXb3JkMTYgeVtMX1dJTkRPV107DQorCVdvcmQzMiBMX3N1bSwgTF9zdW0xLCBMX3RtcCwgRl9MRU47DQorCVdvcmQxNiAqcDEsKnAyLCpwMzsNCisJY29uc3QgV29yZDE2ICpwNDsNCisJLyogV2luZG93aW5nIG9mIHNpZ25hbCAqLw0KKwlwMSA9IHg7DQorCXA0ID0gdm9fd2luZG93Ow0KKwlwMyA9IHk7DQorDQorCWZvciAoaSA9IDA7IGkgPCBMX1dJTkRPVzsgaSs9NCkNCisJew0KKwkJKnAzKysgPSB2b19tdWx0X3IoKCpwMSsrKSwgKCpwNCsrKSk7DQorCQkqcDMrKyA9IHZvX211bHRfcigoKnAxKyspLCAoKnA0KyspKTsNCisJCSpwMysrID0gdm9fbXVsdF9yKCgqcDErKyksICgqcDQrKykpOw0KKwkJKnAzKysgPSB2b19tdWx0X3IoKCpwMSsrKSwgKCpwNCsrKSk7DQorCX0NCisNCisJLyogY2FsY3VsYXRlIGVuZXJneSBvZiBzaWduYWwgKi8NCisJTF9zdW0gPSB2b19MX2RlcG9zaXRfaCgxNik7ICAgICAgICAgICAgICAgLyogc3FydCgyNTYpLCBhdm9pZCBvdmVyZmxvdyBhZnRlciByb3VuZGluZyAqLw0KKwlmb3IgKGkgPSAwOyBpIDwgTF9XSU5ET1c7IGkrKykNCisJew0KKwkJTF90bXAgPSB2b19MX211bHQoeVtpXSwgeVtpXSk7DQorCQlMX3RtcCA9IChMX3RtcCA+PiA4KTsNCisJCUxfc3VtICs9IExfdG1wOw0KKwl9DQorDQorCS8qIHNjYWxlIHNpZ25hbCB0byBhdm9pZCBvdmVyZmxvdyBpbiBhdXRvY29ycmVsYXRpb24gKi8NCisJbm9ybSA9IG5vcm1fbChMX3N1bSk7DQorCXNoaWZ0ID0gNCAtIChub3JtID4+IDEpOw0KKwlpZihzaGlmdCA+IDApDQorCXsNCisJCXAxID0geTsNCisJCWZvciAoaSA9IDA7IGkgPCBMX1dJTkRPVzsgaSs9NCkNCisJCXsNCisJCQkqcDEgPSB2b19zaHJfcigqcDEsIHNoaWZ0KTsgDQorCQkJcDErKzsNCisJCQkqcDEgPSB2b19zaHJfcigqcDEsIHNoaWZ0KTsgDQorCQkJcDErKzsNCisJCQkqcDEgPSB2b19zaHJfcigqcDEsIHNoaWZ0KTsNCisJCQlwMSsrOw0KKwkJCSpwMSA9IHZvX3Nocl9yKCpwMSwgc2hpZnQpOyANCisJCQlwMSsrOw0KKwkJfQ0KKwl9DQorDQorCS8qIENvbXB1dGUgYW5kIG5vcm1hbGl6ZSByWzBdICovDQorCUxfc3VtID0gMTsgDQorCWZvciAoaSA9IDA7IGkgPCBMX1dJTkRPVzsgaSs9NCkNCisJew0KKwkJTF9zdW0gKz0gdm9fTF9tdWx0KHlbaV0sIHlbaV0pOw0KKwkJTF9zdW0gKz0gdm9fTF9tdWx0KHlbaSsxXSwgeVtpKzFdKTsNCisJCUxfc3VtICs9IHZvX0xfbXVsdCh5W2krMl0sIHlbaSsyXSk7DQorCQlMX3N1bSArPSB2b19MX211bHQoeVtpKzNdLCB5W2krM10pOw0KKwl9DQorDQorCW5vcm0gPSBub3JtX2woTF9zdW0pOw0KKwlMX3N1bSA9IChMX3N1bSA8PCBub3JtKTsNCisNCisJcl9oWzBdID0gTF9zdW0gPj4gMTY7DQorCXJfbFswXSA9IChMX3N1bSAmIDB4ZmZmZik+PjE7DQorDQorCS8qIENvbXB1dGUgclsxXSB0byByW21dICovDQorCWZvciAoaSA9IDE7IGkgPD0gODsgaSsrKQ0KKwl7DQorCQlMX3N1bTEgPSAwOw0KKwkJTF9zdW0gPSAwOw0KKwkJRl9MRU4gPSAoV29yZDMyKShMX1dJTkRPVyAtIDIqaSk7DQorCQlwMSA9IHk7DQorCQlwMiA9IHkgKyAoMippKS0xOw0KKwkJZG97DQorCQkJTF9zdW0xICs9ICpwMSAqICpwMisrOw0KKwkJCUxfc3VtICs9ICpwMSsrICogKnAyOw0KKwkJfXdoaWxlKC0tRl9MRU4hPTApOw0KKw0KKwkJTF9zdW0xICs9ICpwMSAqICpwMisrOw0KKw0KKwkJTF9zdW0xID0gTF9zdW0xPDxub3JtOw0KKwkJTF9zdW0gPSBMX3N1bTw8bm9ybTsNCisNCisJCXJfaFsoMippKS0xXSA9IExfc3VtMSA+PiAxNTsNCisJCXJfbFsoMippKS0xXSA9IExfc3VtMSAmIDB4MDAwMDdmZmY7DQorCQlyX2hbKDIqaSldID0gTF9zdW0gPj4gMTU7DQorCQlyX2xbKDIqaSldID0gTF9zdW0gJiAweDAwMDA3ZmZmOw0KKwl9DQorCXJldHVybjsNCit9DQorDQorDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9hel9pc3AuYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYXpfaXNwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODI1OWY5MQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYXpfaXNwLmMKQEAgLTAsMCArMSwyNjggQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiAgRmlsZTogYXpfaXNwLmMNCisqDQorKiAgRGVzY3JpcHRpb246DQorKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyogQ29tcHV0ZSB0aGUgSVNQcyBmcm9tICB0aGUgTFBDIGNvZWZmaWNpZW50cyAgKG9yZGVyPU0pICAgICAgICAgICAgICAgICoNCisqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogVGhlIElTUHMgYXJlIHRoZSByb290cyBvZiB0aGUgdHdvIHBvbHlub21pYWxzIEYxKHopIGFuZCBGMih6KSAgICAgICAgICoNCisqIGRlZmluZWQgYXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgIEYxKHopID0gQSh6KSArIHpeLW0gQSh6Xi0xKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogIGFuZCAgICAgICAgICBGMih6KSA9IEEoeikgLSB6Xi1tIEEoel4tMSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiBGb3IgYSBldmVuIG9yZGVyIG09Mm4sIEYxKHopIGhhcyBNLzIgY29uanVnYXRlIHJvb3RzIG9uIHRoZSB1bml0ICAgICAgKg0KKyogY2lyY2xlIGFuZCBGMih6KSBoYXMgTS8yLTEgY29uanVnYXRlIHJvb3RzIG9uIHRoZSB1bml0IGNpcmNsZSBpbiAgICAgICoNCisqIGFkZGl0aW9uIHRvIHR3byByb290cyBhdCAwIGFuZCBwaS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogRm9yIGEgMTZ0aCBvcmRlciBMUCBhbmFseXNpcywgRjEoeikgYW5kIEYyKHopIGNhbiBiZSB3cml0dGVuIGFzICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgIEYxKHopID0gKDEgKyBhW01dKSAgIFBST0RVQ1QgICgxIC0gMiBjb3Mod19pKSB6Xi0xICsgel4tMiApICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICBpPTAsMiw0LDYsOCwxMCwxMiwxNCAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgIEYyKHopID0gKDEgLSBhW01dKSAoMSAtIHpeLTIpIFBST0RVQ1QgKDEgLSAyIGNvcyh3X2kpIHpeLTEgKyB6Xi0yICkgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpPTEsMyw1LDcsOSwxMSwxMyAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiBUaGUgSVNQcyBhcmUgdGhlIE0tMSBmcmVxdWVuY2llcyB3X2ksIGk9MC4uLk0tMiBwbHVzIHRoZSBsYXN0ICAgICAgICAgKg0KKyogcHJlZGljdG9yIGNvZWZmaWNpZW50IGFbTV0uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKyNpbmNsdWRlICJ0eXBlZGVmLmgiDQorI2luY2x1ZGUgImJhc2ljX29wLmgiDQorI2luY2x1ZGUgIm9wZXJfMzJiLmgiDQorI2luY2x1ZGUgInN0ZGlvLmgiDQorI2luY2x1ZGUgImdyaWQxMDAudGFiIg0KKw0KKyNkZWZpbmUgTSAgIDE2DQorI2RlZmluZSBOQyAgKE0vMikNCisNCisvKiBsb2NhbCBmdW5jdGlvbiAqLw0KK3N0YXRpYyBfX2lubGluZSBXb3JkMTYgQ2hlYnBzMihXb3JkMTYgeCwgV29yZDE2IGZbXSwgV29yZDMyIG4pOw0KKw0KK3ZvaWQgQXpfaXNwKA0KKwkJV29yZDE2IGFbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTEyIDogcHJlZGljdG9yIGNvZWZmaWNpZW50cyAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBpc3BbXSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIFExNSA6IEltbWl0dGFuY2Ugc3BlY3RyYWwgcGFpcnMgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgb2xkX2lzcFtdICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBvbGQgaXNwW10gKGluIGNhc2Ugbm90IGZvdW5kIE0gcm9vdHMpICAqLw0KKwkgICApDQorew0KKwlXb3JkMzIgaSwgaiwgbmYsIGlwLCBvcmRlcjsNCisJV29yZDE2IHhsb3csIHlsb3csIHhoaWdoLCB5aGlnaCwgeG1pZCwgeW1pZCwgeGludDsNCisJV29yZDE2IHgsIHksIHNpZ24sIGV4cDsNCisJV29yZDE2ICpjb2VmOw0KKwlXb3JkMTYgZjFbTkMgKyAxXSwgZjJbTkNdOw0KKwlXb3JkMzIgdDA7DQorCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJICogZmluZCB0aGUgc3VtIGFuZCBkaWZmIHBvbHlub21pYWxzIEYxKHopIGFuZCBGMih6KSAgICAgICAgICAgKg0KKwkgKiAgICAgIEYxKHopID0gW0EoeikgKyB6Xk0gQSh6Xi0xKV0gICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqICAgICAgRjIoeikgPSBbQSh6KSAtIHpeTSBBKHpeLTEpXS8oMS16Xi0yKSAgICAgICAgICAgICAgICAgICoNCisJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiBmb3IgKGk9MDsgaTxOQzsgaSsrKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICogICBmMVtpXSA9IGFbaV0gKyBhW00taV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiAgIGYyW2ldID0gYVtpXSAtIGFbTS1pXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICogZjFbTkNdID0gMi4wKmFbTkNdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqIGZvciAoaT0yOyBpPE5DOyBpKyspICAgICAgICAgICAgRGl2aWRlIGJ5ICgxLXpeLTIpICAgICAgICAgICoNCisJICogICBmMltpXSArPSBmMltpLTJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKwlmb3IgKGkgPSAwOyBpIDwgTkM7IGkrKykNCisJew0KKwkJdDAgPSBhW2ldIDw8IDE1Ow0KKwkJZjFbaV0gPSB2b19yb3VuZCh0MCArIChhW00gLSBpXSA8PCAxNSkpOyAgICAgICAgLyogPShhW2ldK2FbTS1pXSkvMiAqLw0KKwkJZjJbaV0gPSB2b19yb3VuZCh0MCAtIChhW00gLSBpXSA8PCAxNSkpOyAgICAgICAgLyogPShhW2ldLWFbTS1pXSkvMiAqLw0KKwl9DQorCWYxW05DXSA9IGFbTkNdOyAgICAgICAgICAgICAgICAgICAgICAgIA0KKwlmb3IgKGkgPSAyOyBpIDwgTkM7IGkrKykgICAgICAgICAgICAgICAvKiBEaXZpZGUgYnkgKDEtel4tMikgKi8NCisJCWYyW2ldID0gYWRkMShmMltpXSwgZjJbaSAtIDJdKTsgICAgIA0KKw0KKwkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJICogRmluZCB0aGUgSVNQcyAocm9vdHMgb2YgRjEoeikgYW5kIEYyKHopICkgdXNpbmcgdGhlICAgICAgICAgICAgICAgICAqDQorCSAqIENoZWJ5c2hldiBwb2x5bm9taWFsIGV2YWx1YXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiBUaGUgcm9vdHMgb2YgRjEoeikgYW5kIEYyKHopIGFyZSBhbHRlcm5hdGl2ZWx5IHNlYXJjaGVkLiAgICAgICAgICAgICoNCisJICogV2Ugc3RhcnQgYnkgZmluZGluZyB0aGUgZmlyc3Qgcm9vdCBvZiBGMSh6KSB0aGVuIHdlIHN3aXRjaCAgICAgICAgICAqDQorCSAqIHRvIEYyKHopIHRoZW4gYmFjayB0byBGMSh6KSBhbmQgc28gb24gdW50aWwgYWxsIHJvb3RzIGFyZSBmb3VuZC4gICAgKg0KKwkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICogIC0gRXZhbHVhdGUgQ2hlYnlzaGV2IHBvbC4gYXQgZ3JpZCBwb2ludHMgYW5kIGNoZWNrIGZvciBzaWduIGNoYW5nZS4qDQorCSAqICAtIElmIHNpZ24gY2hhbmdlIHRyYWNrIHRoZSByb290IGJ5IHN1YmRpdmlkaW5nIHRoZSBpbnRlcnZhbCAgICAgICAgKg0KKwkgKiAgICAyIHRpbWVzIGFuZCBja2Vja2luZyBzaWduIGNoYW5nZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKwluZiA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBmb3VuZCBmcmVxdWVuY2llcyAqLw0KKwlpcCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGluZGljYXRvciBmb3IgZjEgb3IgZjIgICAgICAqLw0KKwljb2VmID0gZjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJb3JkZXIgPSBOQzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorCXhsb3cgPSB2b2dyaWRbMF07ICAgICAgICAgICAgICAgICAgICAgICAgDQorCXlsb3cgPSBDaGVicHMyKHhsb3csIGNvZWYsIG9yZGVyKTsNCisJaiA9IDA7DQorCXdoaWxlICgobmYgPCBNIC0gMSkgJiYgKGogPCBHUklEX1BPSU5UUykpDQorCXsNCisJCWogKys7DQorCQl4aGlnaCA9IHhsb3c7ICAgICAgICAgICAgICAgICAgICAgDQorCQl5aGlnaCA9IHlsb3c7ICAgICAgICAgICAgICAgICAgICAgIA0KKwkJeGxvdyA9IHZvZ3JpZFtqXTsgICAgICAgICAgICAgICAgICAgIA0KKwkJeWxvdyA9IENoZWJwczIoeGxvdywgY29lZiwgb3JkZXIpOw0KKwkJaWYgKCh5bG93ICogeWhpZ2gpIDw9IChXb3JkMzIpIDApDQorCQl7DQorCQkJLyogZGl2aWRlIDIgdGltZXMgdGhlIGludGVydmFsICovDQorCQkJZm9yIChpID0gMDsgaSA8IDI7IGkrKykNCisJCQl7DQorCQkJCXhtaWQgPSAoeGxvdyA+PiAxKSArICh4aGlnaCA+PiAxKTsgICAgICAgIC8qIHhtaWQgPSAoeGxvdyArIHhoaWdoKS8yICovDQorCQkJCXltaWQgPSBDaGVicHMyKHhtaWQsIGNvZWYsIG9yZGVyKTsNCisJCQkJaWYgKCh5bG93ICogeW1pZCkgPD0gKFdvcmQzMikgMCkNCisJCQkJew0KKwkJCQkJeWhpZ2ggPSB5bWlkOyAgICAgICAgIA0KKwkJCQkJeGhpZ2ggPSB4bWlkOyAgICAgICAgICANCisJCQkJfSBlbHNlDQorCQkJCXsNCisJCQkJCXlsb3cgPSB5bWlkOyAgICAgICAgICAgDQorCQkJCQl4bG93ID0geG1pZDsgICAgICAgICAgDQorCQkJCX0NCisJCQl9DQorCQkJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkJCSAqIExpbmVhciBpbnRlcnBvbGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJCQkgKiAgICB4aW50ID0geGxvdyAtIHlsb3cqKHhoaWdoLXhsb3cpLyh5aGlnaC15bG93KTsgICAgICAgICAgICAqDQorCQkJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisJCQl4ID0geGhpZ2ggLSB4bG93Ow0KKwkJCXkgPSB5aGlnaCAtIHlsb3c7DQorCQkJaWYgKHkgPT0gMCkNCisJCQl7DQorCQkJCXhpbnQgPSB4bG93OyAgICAgICAgICAgICAgIA0KKwkJCX0gZWxzZQ0KKwkJCXsNCisJCQkJc2lnbiA9IHk7ICAgICAgICAgICAgICAgICANCisJCQkJeSA9IGFic19zKHkpOw0KKwkJCQlleHAgPSBub3JtX3MoeSk7DQorCQkJCXkgPSB5IDw8IGV4cDsNCisJCQkJeSA9IGRpdl9zKChXb3JkMTYpIDE2MzgzLCB5KTsNCisJCQkJdDAgPSB4ICogeTsNCisJCQkJdDAgPSAodDAgPj4gKDE5IC0gZXhwKSk7DQorCQkJCXkgPSB2b19leHRyYWN0X2wodDApOyAgICAgICAgIC8qIHk9ICh4aGlnaC14bG93KS8oeWhpZ2gteWxvdykgaW4gUTExICovDQorCQkJCWlmIChzaWduIDwgMCkNCisJCQkJCXkgPSAteTsNCisJCQkJdDAgPSB5bG93ICogeTsgICAgICAvKiByZXN1bHQgaW4gUTI2ICovDQorCQkJCXQwID0gKHQwID4+IDEwKTsgICAgICAgIC8qIHJlc3VsdCBpbiBRMTUgKi8NCisJCQkJeGludCA9IHZvX3N1Yih4bG93LCB2b19leHRyYWN0X2wodDApKTsgICAgICAgIC8qIHhpbnQgPSB4bG93IC0geWxvdyp5ICovDQorCQkJfQ0KKwkJCWlzcFtuZl0gPSB4aW50OyAgICAgICAgICAgICAgICANCisJCQl4bG93ID0geGludDsgICAgICAgICAgICAgICAgICAgDQorCQkJbmYrKzsgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwkJCWlmIChpcCA9PSAwKQ0KKwkJCXsNCisJCQkJaXAgPSAxOyAgICAgICAgICAgICAgICAgICAgDQorCQkJCWNvZWYgPSBmMjsgICAgICAgICAgICAgICAgDQorCQkJCW9yZGVyID0gTkMgLSAxOyAgICAgICAgICAgDQorCQkJfSBlbHNlDQorCQkJew0KKwkJCQlpcCA9IDA7ICAgICAgICAgICAgICAgICAgIA0KKwkJCQljb2VmID0gZjE7ICAgICAgICAgICAgICAgICANCisJCQkJb3JkZXIgPSBOQzsgICAgICAgICAgICAgIA0KKwkJCX0NCisJCQl5bG93ID0gQ2hlYnBzMih4bG93LCBjb2VmLCBvcmRlcik7DQorCQl9DQorCX0NCisJLyogQ2hlY2sgaWYgTS0xIHJvb3RzIGZvdW5kICovDQorCWlmKG5mIDwgTSAtIDEpDQorCXsNCisJCWZvciAoaSA9IDA7IGkgPCBNOyBpKyspDQorCQl7DQorCQkJaXNwW2ldID0gb2xkX2lzcFtpXTsgICAgICAgICAgDQorCQl9DQorCX0gZWxzZQ0KKwl7DQorCQlpc3BbTSAtIDFdID0gYVtNXSA8PCAzOyAgICAgICAgICAgICAgICAgICAgICAvKiBGcm9tIFExMiB0byBRMTUgd2l0aCBzYXR1cmF0aW9uICovDQorCX0NCisJcmV0dXJuOw0KK30NCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyogZnVuY3Rpb24gIENoZWJwczI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICB+fn5+fn5+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICBFdmFsdWF0ZXMgdGhlIENoZWJpc2hldiBwb2x5bm9taWFsIHNlcmllcyAgICAgICAgICAgICAgICAgKg0KKyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgVGhlIHBvbHlub21pYWwgb3JkZXIgaXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgIG4gPSBNLzIgICAoTSBpcyB0aGUgcHJlZGljdGlvbiBvcmRlcikgICAgICAgICAgICAgICAgICAgICoNCisqICBUaGUgcG9seW5vbWlhbCBpcyBnaXZlbiBieSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICBDKHgpID0gZigwKVRfbih4KSArIGYoMSlUX24tMSh4KSArIC4uLiArZihuLTEpVF8xKHgpICsgZihuKS8yICoNCisqIEFyZ3VtZW50czogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgeDogICAgIGlucHV0IHZhbHVlIG9mIGV2YWx1YXRpb247IHggPSBjb3MoZnJlcXVlbmN5KSBpbiBRMTUgKg0KKyogIGZbXTogICBjb2VmZmljaWVudHMgb2YgdGhlIHBvbC4gICAgICAgICAgICAgICAgICAgICAgaW4gUTExICoNCisqICBuOiAgICAgb3JkZXIgb2YgdGhlIHBvbC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogVGhlIHZhbHVlIG9mIEMoeCkgaXMgcmV0dXJuZWQuIChTYXR1cmVkIHRvICstMS45OSBpbiBRMTQpICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitzdGF0aWMgX19pbmxpbmUgV29yZDE2IENoZWJwczIoV29yZDE2IHgsIFdvcmQxNiBmW10sIFdvcmQzMiBuKQ0KK3sNCisJV29yZDMyIGksIGNoZWI7DQorCVdvcmQxNiBiMF9oLCBiMF9sLCBiMV9oLCBiMV9sLCBiMl9oLCBiMl9sOw0KKwlXb3JkMzIgdDA7DQorDQorCS8qIE5vdGU6IEFsbCBjb21wdXRhdGlvbiBhcmUgZG9uZSBpbiBRMjQuICovDQorDQorCXQwID0gZlswXSA8PCAxMzsNCisJYjJfaCA9IHQwID4+IDE2Ow0KKwliMl9sID0gKHQwICYgMHhmZmZmKT4+MTsNCisNCisJdDAgPSAoKGIyX2ggKiB4KTw8MSkgKyAoKChiMl9sICogeCk+PjE1KTw8MSk7DQorCXQwIDw8PSAxOw0KKwl0MCArPSAoZlsxXSA8PCAxMyk7CQkJCQkJLyogKyBmWzFdIGluIFEyNCAgICAgICAgKi8NCisNCisJYjFfaCA9IHQwID4+IDE2Ow0KKwliMV9sID0gKHQwICYgMHhmZmZmKSA+PiAxOw0KKw0KKwlmb3IgKGkgPSAyOyBpIDwgbjsgaSsrKQ0KKwl7DQorCQl0MCA9ICgoYjFfaCAqIHgpPDwxKSArICgoKGIxX2wgKiB4KT4+MTUpPDwxKTsNCisNCisJCXQwICs9IChiMl9oICogKC0xNjM4NCkpPDwxOw0KKwkJdDAgKz0gKGZbaV0gPDwgMTIpOw0KKwkJdDAgPDw9IDE7DQorCQl0MCAtPSAoYjJfbCA8PCAxKTsJCQkJCS8qIHQwID0gMi4wKngqYjEgLSBiMiArIGZbaV07ICovDQorDQorCQliMF9oID0gdDAgPj4gMTY7DQorCQliMF9sID0gKHQwICYgMHhmZmZmKSA+PiAxOw0KKw0KKwkJYjJfbCA9IGIxX2w7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGIyID0gYjE7ICovDQorCQliMl9oID0gYjFfaDsgICAgICAgICAgICAgICAgICAgICAgIA0KKwkJYjFfbCA9IGIwX2w7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGIxID0gYjA7ICovDQorCQliMV9oID0gYjBfaDsgICAgICAgICAgICAgICAgICAgICAgIA0KKwl9DQorDQorCXQwID0gKChiMV9oICogeCk8PDEpICsgKCgoYjFfbCAqIHgpPj4xNSk8PDEpOw0KKwl0MCArPSAoYjJfaCAqICgtMzI3NjgpKTw8MTsJCQkJLyogdDAgPSB4KmIxIC0gYjIgICAgICAgICAgKi8NCisJdDAgLT0gKGIyX2wgPDwgMSk7DQorCXQwICs9IChmW25dIDw8IDEyKTsJCQkJCQkvKiB0MCA9IHgqYjEgLSBiMiArIGZbaV0vMiAqLw0KKw0KKwl0MCA9IExfc2hsMih0MCwgNik7ICAgICAgICAgICAgICAgICAgICAgLyogUTI0IHRvIFEzMCB3aXRoIHNhdHVyYXRpb24gKi8NCisNCisJY2hlYiA9IGV4dHJhY3RfaCh0MCk7ICAgICAgICAgICAgICAgICAgLyogUmVzdWx0IGluIFExNCAgICAgICAgICAgICAgKi8NCisNCisJaWYgKGNoZWIgPT0gLTMyNzY4KQ0KKwl7DQorCQljaGViID0gLTMyNzY3OyAgICAgICAgICAgICAgICAgICAgIC8qIHRvIGF2b2lkIHNhdHVyYXRpb24gaW4gQXpfaXNwICovDQorCX0NCisJcmV0dXJuIChjaGViKTsNCit9DQorDQorDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9iaXRzLmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2JpdHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MGQxYTAwCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9iaXRzLmMKQEAgLTAsMCArMSwyMTAgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICAgICAgIEZpbGU6IGJpdHMuYw0KKw0KKwkgICBEZXNjcmlwdGlvbjogUGVyZm9ybXMgYml0IHN0cmVhbSBtYW5pcHVsYXRpb24NCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2luY2x1ZGUgPHN0ZGxpYi5oPg0KKyNpbmNsdWRlIDxzdGRpby5oPg0KKyNpbmNsdWRlICJ0eXBlZGVmLmgiDQorI2luY2x1ZGUgImJhc2ljX29wLmgiDQorI2luY2x1ZGUgImNuc3QuaCINCisjaW5jbHVkZSAiYml0cy5oIg0KKyNpbmNsdWRlICJhY2VscC5oIg0KKyNpbmNsdWRlICJkdHguaCINCisjaW5jbHVkZSAibWltZV9pby50YWIiDQorDQorDQoraW50IFBhY2tCaXRzKFdvcmQxNiBwcm1zW10sICAgICAgICAgICAgIC8qICBpOiBhbmFseXNpcyBwYXJhbWV0ZXJzICovDQorCQkJIFdvcmQxNiBjb2RpbmdfbW9kZSwgICAgICAgIC8qICBpOiBjb2RpbmcgYml0LXN0cmVhbSByYXRpbyBtb2RlICovDQorCQkJIFdvcmQxNiBtb2RlLCAgICAgICAgICAgICAgIC8qICBpOiBjb2RpbmcgYml0LXN0cmVhbSByYXRpbyBtb2RlKi8gDQorCQkJIENvZGVyX1N0YXRlICpzdCAgICAgICAgICAgIC8qaS9vOiBjb2RlciBnbG9iYWwgcGFyYW1ldGVycyBzdHJ1Y3QgKi8gICAgICAgICAgIA0KKwkJCSApDQorew0KKwlXb3JkMTYgaSwgZnJhbWVfdHlwZTsNCisJVVdvcmQ4IHRlbXA7DQorCVVXb3JkOCAqc3RyZWFtX3B0cjsNCisJV29yZDE2IGJpdHN0cmVhbWZvcm1hdCA9IHN0LT5mcmFtZVR5cGU7DQorDQorCXVuc2lnbmVkIHNob3J0KiBkYXRhT3V0ID0gc3QtPm91dHB1dFN0cmVhbTsNCisNCisJaWYgKGNvZGluZ19tb2RlID09IE1SRFRYKQ0KKwl7CSAgIA0KKwkJc3QtPnNpZF91cGRhdGVfY291bnRlci0tOw0KKw0KKwkJaWYgKHN0LT5wcmV2X2Z0ID09IFRYX1NQRUVDSCkNCisJCXsNCisJCQlmcmFtZV90eXBlID0gVFhfU0lEX0ZJUlNUOw0KKwkJCXN0LT5zaWRfdXBkYXRlX2NvdW50ZXIgPSAzOw0KKwkJfSBlbHNlDQorCQl7DQorCQkJaWYgKChzdC0+c2lkX2hhbmRvdmVyX2RlYnQgPiAwKSAmJiAoc3QtPnNpZF91cGRhdGVfY291bnRlciA+IDIpKQ0KKwkJCXsNCisJCQkJLyogZW5zdXJlIGV4dHJhIHVwZGF0ZXMgYXJlICBwcm9wZXJseSBkZWxheWVkIGFmdGVyIGEgcG9zc2libGUgU0lEX0ZJUlNUICovDQorCQkJCWZyYW1lX3R5cGUgPSBUWF9TSURfVVBEQVRFOw0KKwkJCQlzdC0+c2lkX2hhbmRvdmVyX2RlYnQtLTsNCisJCQl9IGVsc2UNCisJCQl7DQorCQkJCWlmIChzdC0+c2lkX3VwZGF0ZV9jb3VudGVyID09IDApDQorCQkJCXsNCisJCQkJCWZyYW1lX3R5cGUgPSBUWF9TSURfVVBEQVRFOw0KKwkJCQkJc3QtPnNpZF91cGRhdGVfY291bnRlciA9IDg7DQorCQkJCX0gZWxzZQ0KKwkJCQl7DQorCQkJCQlmcmFtZV90eXBlID0gVFhfTk9fREFUQTsNCisJCQkJfQ0KKwkJCX0NCisJCX0NCisJfSBlbHNlDQorCXsNCisJCXN0LT5zaWRfdXBkYXRlX2NvdW50ZXIgPSA4Ow0KKwkJZnJhbWVfdHlwZSA9IFRYX1NQRUVDSDsNCisJfQ0KKwlzdC0+cHJldl9mdCA9IGZyYW1lX3R5cGU7DQorDQorCWlmKGJpdHN0cmVhbWZvcm1hdCA9PSAwKQkJCQkvKiBkZWZhdWx0IGZpbGUgZm9ybWF0ICovDQorCXsNCisJCSooZGF0YU91dCkgPSBUWF9GUkFNRV9UWVBFOw0KKwkJKihkYXRhT3V0ICsgMSkgPSBmcmFtZV90eXBlOw0KKwkJKihkYXRhT3V0ICsgMikgPSBtb2RlOw0KKwkJZm9yIChpID0gMDsgaSA8IG5iX29mX2JpdHNbY29kaW5nX21vZGVdOyBpKyspDQorCQl7DQorCQkJKihkYXRhT3V0ICsgMyArIGkpID0gcHJtc1tpXTsNCisJCX0NCisJCXJldHVybiAgKDMgKyBuYl9vZl9iaXRzW2NvZGluZ19tb2RlXSk8PDE7DQorCX0gZWxzZQ0KKwl7DQorCQlpZiAoYml0c3RyZWFtZm9ybWF0ID09IDEpCQkvKiBJVFUgZmlsZSBmb3JtYXQgKi8NCisJCXsgIAkJCQkJCQ0KKwkJCSooZGF0YU91dCkgPSAweDZiMjE7DQorCQkJaWYoZnJhbWVfdHlwZSAhPSBUWF9OT19EQVRBICYmIGZyYW1lX3R5cGUgIT0gVFhfU0lEX0ZJUlNUKQ0KKwkJCXsNCisJCQkJKihkYXRhT3V0ICsgMSkgPSBuYl9vZl9iaXRzW2NvZGluZ19tb2RlXTsNCisJCQkJZm9yIChpID0gMDsgaSA8IG5iX29mX2JpdHNbY29kaW5nX21vZGVdOyBpKyspDQorCQkJCXsNCisJCQkJCWlmKHBybXNbaV0gPT0gQklUXzApew0KKwkJCQkJCSooZGF0YU91dCArIDIgKyBpKSA9IEJJVF8wX0lUVTsJIAkJCQ0KKwkJCQkJfQ0KKwkJCQkJZWxzZXsNCisJCQkJCQkqKGRhdGFPdXQgKyAyICsgaSkgPSBCSVRfMV9JVFU7DQorCQkJCQl9DQorCQkJCX0NCisJCQkJcmV0dXJuICgyICsgbmJfb2ZfYml0c1tjb2RpbmdfbW9kZV0pPDwxOyAgIA0KKwkJCX0gZWxzZQ0KKwkJCXsNCisJCQkJKihkYXRhT3V0ICsgMSkgPSAwOw0KKwkJCQlyZXR1cm4gMjw8MTsJICAgDQorCQkJfQ0KKwkJfSBlbHNlCQkJCQkJCS8qIE1JTUUvc3RvcmFnZSBmaWxlIGZvcm1hdCAqLw0KKwkJew0KKyNkZWZpbmUgTVJTSUQgOQ0KKwkJCS8qIGNoYW5nZSBtb2RlIGluZGV4IGluIGNhc2Ugb2YgU0lEIGZyYW1lICovDQorCQkJaWYgKGNvZGluZ19tb2RlID09IE1SRFRYKQ0KKwkJCXsNCisJCQkJY29kaW5nX21vZGUgPSBNUlNJRDsNCisJCQkJaWYgKGZyYW1lX3R5cGUgPT0gVFhfU0lEX0ZJUlNUKQ0KKwkJCQl7DQorCQkJCQlmb3IgKGkgPSAwOyBpIDwgTkJCSVRTX1NJRDsgaSsrKQlwcm1zW2ldID0gQklUXzA7DQorCQkJCX0NCisJCQl9DQorCQkJLyogLT4gZm9yY2UgTk9fREFUQSBmcmFtZSAqLw0KKwkJCWlmIChjb2RpbmdfbW9kZSA8IDAgfHwgY29kaW5nX21vZGUgPiAxNSB8fCAoY29kaW5nX21vZGUgPiBNUlNJRCAmJiBjb2RpbmdfbW9kZSA8IDE0KSkNCisJCQl7DQorCQkJCWNvZGluZ19tb2RlID0gMTU7DQorCQkJfQ0KKwkJCS8qIG1hcmsgZW1wdHkgZnJhbWVzIGJldHdlZW4gU0lEIHVwZGF0ZXMgYXMgTk9fREFUQSBmcmFtZXMgKi8NCisJCQlpZiAoY29kaW5nX21vZGUgPT0gTVJTSUQgJiYgZnJhbWVfdHlwZSA9PSBUWF9OT19EQVRBKQ0KKwkJCXsNCisJCQkJY29kaW5nX21vZGUgPSAxNTsNCisJCQl9DQorCQkJLyogc2V0IHBvaW50ZXIgZm9yIHBhY2tlZCBmcmFtZSwgbm90ZSB0aGF0IHdlIGhhbmRsZSBkYXRhIGFzIGJ5dGVzICovDQorCQkJc3RyZWFtX3B0ciA9IChVV29yZDgqKWRhdGFPdXQ7DQorCQkJLyogaW5zZXJ0IHRhYmxlIG9mIGNvbnRlbnRzIChUb0MpIGJ5dGUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgcGFja2V0ICovDQorCQkJKnN0cmVhbV9wdHIgPSB0b2NfYnl0ZVtjb2RpbmdfbW9kZV07DQorCQkJc3RyZWFtX3B0cisrOw0KKwkJCXRlbXAgPSAwOw0KKwkJCS8qIHNvcnQgYW5kIHBhY2sgQU1SLVdCIHNwZWVjaCBvciBTSUQgYml0cyAqLw0KKwkJCWZvciAoaSA9IDE7IGkgPCB1bnBhY2tlZF9zaXplW2NvZGluZ19tb2RlXSArIDE7IGkrKykNCisJCQl7DQorCQkJCWlmIChwcm1zW3NvcnRfcHRyW2NvZGluZ19tb2RlXVtpLTFdXSA9PSBCSVRfMSkNCisJCQkJew0KKwkJCQkJdGVtcCsrOw0KKwkJCQl9DQorCQkJCWlmIChpJjB4NykNCisJCQkJew0KKwkJCQkJdGVtcCA8PD0gMTsNCisJCQkJfQ0KKwkJCQllbHNlDQorCQkJCXsNCisJCQkJCSpzdHJlYW1fcHRyID0gdGVtcDsNCisJCQkJCXN0cmVhbV9wdHIrKzsNCisJCQkJCXRlbXAgPSAwOw0KKwkJCQl9DQorCQkJfQ0KKwkJCS8qIGluc2VydCBTSUQgdHlwZSBpbmRpY2F0aW9uIGFuZCBzcGVlY2ggbW9kZSBpbiBjYXNlIG9mIFNJRCBmcmFtZSAqLw0KKwkJCWlmIChjb2RpbmdfbW9kZSA9PSBNUlNJRCkNCisJCQl7DQorCQkJCWlmIChmcmFtZV90eXBlID09IFRYX1NJRF9VUERBVEUpDQorCQkJCXsNCisJCQkJCXRlbXArKzsNCisJCQkJfQ0KKwkJCQl0ZW1wIDw8PSA0Ow0KKwkJCQl0ZW1wICs9IG1vZGUgJiAweDAwMEY7DQorCQkJfQ0KKwkJCS8qIGluc2VydCB1bnVzZWQgYml0cyAoemVyb3MpIGF0IHRoZSB0YWlsIG9mIHRoZSBsYXN0IGJ5dGUgKi8NCisJCQlpZiAodW51c2VkX3NpemVbY29kaW5nX21vZGVdKQ0KKwkJCXsNCisJCQkJdGVtcCA8PD0gKHVudXNlZF9zaXplW2NvZGluZ19tb2RlXSAtIDEpOw0KKwkJCX0NCisJCQkqc3RyZWFtX3B0ciA9IHRlbXA7DQorCQkJLyogd3JpdGUgcGFja2VkIGZyYW1lIGludG8gZmlsZSAoMSBieXRlIGFkZGVkIHRvIGNvdmVyIFRvQyBlbnRyeSkgKi8NCisJCQlyZXR1cm4gKDEgKyBwYWNrZWRfc2l6ZVtjb2RpbmdfbW9kZV0pOw0KKwkJfQ0KKwl9DQorfQ0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorKiBQYXJtX3NlcmlhbCAtPiBjb252ZXJ0IHBhcmFtZXRlcnMgdG8gc2VyaWFsIHN0cmVhbSAgKg0KKyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQordm9pZCBQYXJtX3NlcmlhbCgNCisJCVdvcmQxNiB2YWx1ZSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBwYXJhbWV0ZXIgdmFsdWUgKi8NCisJCVdvcmQxNiBub19vZl9iaXRzLCAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBudW1iZXIgb2YgYml0cyAgKi8NCisJCVdvcmQxNiAqKiBwcm1zDQorCQkpDQorew0KKwlXb3JkMTYgaSwgYml0Ow0KKwkqcHJtcyArPSBub19vZl9iaXRzOyAgICAgICAgICAgICAgICAgIA0KKwlmb3IgKGkgPSAwOyBpIDwgbm9fb2ZfYml0czsgaSsrKQ0KKwl7DQorCQliaXQgPSAoV29yZDE2KSAodmFsdWUgJiAweDAwMDEpOyAgICAvKiBnZXQgbHNiICovDQorCQlpZiAoYml0ID09IDApDQorCQkJKi0tKCpwcm1zKSA9IEJJVF8wOw0KKwkJZWxzZQ0KKwkJCSotLSgqcHJtcykgPSBCSVRfMTsNCisJCXZhbHVlID4+PSAxOyAgICAgICAgICANCisJfQ0KKwkqcHJtcyArPSBub19vZl9iaXRzOyAgICAgICAgICAgICAgICAgIA0KKwlyZXR1cm47DQorfQ0KKw0KKw0KKw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYzJ0NjRmeC5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9jMnQ2NGZ4LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzlmYzRjNQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYzJ0NjRmeC5jCkBAIC0wLDAgKzEsMjk3IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqICAgICAgRmlsZTogYzJ0NjRmeC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyoJICAgRGVzY3JpcHRpb246UGVyZm9ybXMgYWxnZWJyYWljIGNvZGVib29rIHNlYXJjaCBmb3IgNi42MGtiaXRzIG1vZGUqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2luY2x1ZGUgInR5cGVkZWYuaCINCisjaW5jbHVkZSAiYmFzaWNfb3AuaCINCisjaW5jbHVkZSAibWF0aF9vcC5oIg0KKyNpbmNsdWRlICJhY2VscC5oIg0KKyNpbmNsdWRlICJjbnN0LmgiDQorDQorI2RlZmluZSBOQl9UUkFDSyAgMg0KKyNkZWZpbmUgU1RFUCAgICAgIDINCisjZGVmaW5lIE5CX1BPUyAgICAzMg0KKyNkZWZpbmUgTVNJWkUgICAgIDEwMjQNCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogRnVuY3Rpb246ICBBQ0VMUF8ydDY0X2Z4KCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqIDEyIGJpdHMgYWxnZWJyYWljIGNvZGVib29rLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogMiB0cmFja3MgeCAzMiBwb3NpdGlvbnMgcGVyIHRyYWNrID0gNjQgc2FtcGxlcy4gICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqIDEyIGJpdHMgLS0+IDIgcHVsc2VzIGluIGEgZnJhbWUgb2YgNjQgc2FtcGxlcy4gICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiBBbGwgcHVsc2VzIGNhbiBoYXZlIHR3byAoMikgcG9zc2libGUgYW1wbGl0dWRlczogKzEgb3IgLTEuICAgICAgICAgICAgICoNCisqIEVhY2ggcHVsc2UgY2FuIGhhdmUgMzIgcG9zc2libGUgcG9zaXRpb25zLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KK3ZvaWQgQUNFTFBfMnQ2NF9meCgNCisJCVdvcmQxNiBkbltdLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIDwxMmIgOiBjb3JyZWxhdGlvbiBiZXR3ZWVuIHRhcmdldCB4W10gYW5kIEhbXSAgICAgICovDQorCQlXb3JkMTYgY25bXSwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSA8MTJiIDogcmVzaWR1YWwgYWZ0ZXIgbG9uZyB0ZXJtIHByZWRpY3Rpb24gICAgICAgICAqLw0KKwkJV29yZDE2IEhbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTEyOiBpbXB1bHNlIHJlc3BvbnNlIG9mIHdlaWdodGVkIHN5bnRoZXNpcyBmaWx0ZXIgKi8NCisJCVdvcmQxNiBjb2RlW10sICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIFE5IDogYWxnZWJyYWljIChmaXhlZCkgY29kZWJvb2sgZXhjaXRhdGlvbiAgICAgICAgICovDQorCQlXb3JkMTYgeVtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSBROSA6IGZpbHRlcmVkIGZpeGVkIGNvZGVib29rIGV4Y2l0YXRpb24gICAgICAgICAgICAqLw0KKwkJV29yZDE2ICogaW5kZXggICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgOiBpbmRleCAoMTIpOiA1KzErNSsxID0gMTEgYml0cy4gICAgICAgICAgICAgICAgICAgKi8NCisJCSkNCit7DQorCVdvcmQzMiBpLCBqLCBrLCBpMCwgaTEsIGl4LCBpeSwgcG9zLCBwb3MyOw0KKwlXb3JkMTYgcHMsIHBzaywgcHMxLCBwczIsIGFscGssIGFscDEsIGFscDIsIHNxOw0KKwlXb3JkMTYgYWxwLCB2YWwsIGV4cCwga19jbiwga19kbjsNCisJV29yZDE2ICpwMCwgKnAxLCAqcDIsICpwc2lnbjsNCisJV29yZDE2ICpoLCAqaF9pbnYsICpwdHJfaDEsICpwdHJfaDIsICpwdHJfaGY7DQorDQorCVdvcmQxNiBzaWduW0xfU1VCRlJdLCB2ZWNbTF9TVUJGUl0sIGRuMltMX1NVQkZSXTsNCisJV29yZDE2IGhfYnVmWzQgKiBMX1NVQkZSXSA9IHswfTsNCisJV29yZDE2IHJyaXhpeFtOQl9UUkFDS11bTkJfUE9TXTsNCisJV29yZDE2IHJyaXhpeVtNU0laRV07DQorCVdvcmQzMiBzLCBjb3I7DQorDQorCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJICogRmluZCBzaWduIGZvciBlYWNoIHB1bHNlIHBvc2l0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKwlhbHAgPSA4MTkyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFscCA9IDIuMCAoUTEyKSAqLw0KKw0KKwkvKiBjYWxjdWxhdGUgZW5lcmd5IGZvciBub3JtYWxpemF0aW9uIG9mIGNuW10gYW5kIGRuW10gKi8NCisJLyogc2V0IGtfY24gPSAzMi4uMzI3NjcgKGVuZXJfY24gPSAyXjMwLi4yNTYtMCkgKi8NCisjaWZkZWYgQVNNX09QVCAgICAgICAgICAgICAvKiBhc20gb3B0aW1pemF0aW9uIGJyYW5jaCAqLw0KKwlzID0gRG90X3Byb2R1Y3QxMl9hc20oY24sIGNuLCBMX1NVQkZSLCAmZXhwKTsNCisjZWxzZQ0KKwlzID0gRG90X3Byb2R1Y3QxMihjbiwgY24sIExfU1VCRlIsICZleHApOw0KKyNlbmRpZg0KKw0KKwlJc3FydF9uKCZzLCAmZXhwKTsNCisJcyA9IExfc2hsKHMsIGFkZDEoZXhwLCA1KSk7ICAgICAgICAgICAgIA0KKwlrX2NuID0gdm9fcm91bmQocyk7DQorDQorCS8qIHNldCBrX2RuID0gMzIuLjUxMiAoZW5lcl9kbiA9IDJeMzAuLjJeMjIpICovDQorI2lmZGVmIEFTTV9PUFQgICAgICAgICAgICAgICAgICAvKiBhc20gb3B0aW1pemF0aW9uIGJyYW5jaCAqLw0KKwlzID0gRG90X3Byb2R1Y3QxMl9hc20oZG4sIGRuLCBMX1NVQkZSLCAmZXhwKTsNCisjZWxzZQ0KKwlzID0gRG90X3Byb2R1Y3QxMihkbiwgZG4sIExfU1VCRlIsICZleHApOw0KKyNlbmRpZg0KKw0KKwlJc3FydF9uKCZzLCAmZXhwKTsNCisJa19kbiA9IHZvX3JvdW5kKExfc2hsKHMsIChleHAgKyA4KSkpOyAgICAvKiBrX2RuID0gMjU2Li40MDk2ICovDQorCWtfZG4gPSB2b19tdWx0X3IoYWxwLCBrX2RuKTsgICAgICAgICAgICAgIC8qIGFscCBpbiBRMTIgKi8NCisNCisJLyogbWl4IG5vcm1hbGl6ZWQgY25bXSBhbmQgZG5bXSAqLw0KKwlwMCA9IGNuOw0KKwlwMSA9IGRuOw0KKwlwMiA9IGRuMjsNCisNCisJZm9yIChpID0gMDsgaSA8IExfU1VCRlIvNDsgaSsrKQ0KKwl7DQorCQlzID0gKGtfY24qICgqcDArKykpKyhrX2RuICogKCpwMSsrKSk7DQorCQkqcDIrKyA9IHMgPj4gNzsNCisJCXMgPSAoa19jbiogKCpwMCsrKSkrKGtfZG4gKiAoKnAxKyspKTsNCisJCSpwMisrID0gcyA+PiA3Ow0KKwkJcyA9IChrX2NuKiAoKnAwKyspKSsoa19kbiAqICgqcDErKykpOw0KKwkJKnAyKysgPSBzID4+IDc7DQorCQlzID0gKGtfY24qICgqcDArKykpKyhrX2RuICogKCpwMSsrKSk7DQorCQkqcDIrKyA9IHMgPj4gNzsgDQorCX0NCisNCisJLyogc2V0IHNpZ24gYWNjb3JkaW5nIHRvIGRuMltdID0ga19jbipjbltdICsga19kbipkbltdICAgICovDQorCWZvciAoaSA9IDA7IGkgPCBMX1NVQkZSOyBpICsrKQ0KKwl7DQorCQl2YWwgPSBkbltpXTsgICAgICAgICAgICAgICAgICAgDQorCQlwcyA9IGRuMltpXTsgICAgICAgICAgICAgICAgICAgDQorCQlpZiAocHMgPj0gMCkNCisJCXsNCisJCQlzaWduW2ldID0gMzI3Njc7ICAgICAgICAgICAgIC8qIHNpZ24gPSArMSAoUTEyKSAqLw0KKwkJCXZlY1tpXSA9IC0zMjc2ODsgICAgICAgICAgIA0KKwkJfSBlbHNlDQorCQl7DQorCQkJc2lnbltpXSA9IC0zMjc2ODsgICAgICAgICAgICAvKiBzaWduID0gLTEgKFExMikgKi8NCisJCQl2ZWNbaV0gPSAzMjc2NzsgICAgICAgICAgICANCisJCQlkbltpXSA9IC12YWw7DQorCQl9DQorCX0NCisJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCSAqIENvbXB1dGUgaF9pbnZbaV0uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorCS8qIGltcHVsc2UgcmVzcG9uc2UgYnVmZmVyIGZvciBmYXN0IGNvbXB1dGF0aW9uICovDQorCWggPSBoX2J1ZiArIExfU1VCRlI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJaF9pbnYgPSBoICsgKExfU1VCRlI8PDEpOyAgICAgICAgIA0KKw0KKwlmb3IgKGkgPSAwOyBpIDwgTF9TVUJGUjsgaSsrKQ0KKwl7DQorCQloW2ldID0gSFtpXTsgICAgICAgICAgICAgICAgICAgICAgIA0KKwkJaF9pbnZbaV0gPSB2b19uZWdhdGUoaFtpXSk7ICAgICAgICAgICANCisJfQ0KKw0KKwkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJICogQ29tcHV0ZSBycml4aXhbXVtdIG5lZWRlZCBmb3IgdGhlIGNvZGVib29rIHNlYXJjaC4gICAgICAgICAqDQorCSAqIFJlc3VsdCBpcyBtdWx0aXBsaWVkIGJ5IDAuNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorCS8qIEluaXQgcG9pbnRlcnMgdG8gbGFzdCBwb3NpdGlvbiBvZiBycml4aXhbXSAqLw0KKwlwMCA9ICZycml4aXhbMF1bTkJfUE9TIC0gMV07ICAgICAgICAgICANCisJcDEgPSAmcnJpeGl4WzFdW05CX1BPUyAtIDFdOyAgICAgICAgICAgDQorDQorCXB0cl9oMSA9IGg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwljb3IgPSAweDAwMDEwMDAwTDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZvciByb3VuZGluZyAqLw0KKwlmb3IgKGkgPSAwOyBpIDwgTkJfUE9TOyBpKyspDQorCXsNCisJCWNvciArPSAoKCpwdHJfaDEpICogKCpwdHJfaDEpIDw8IDEpOw0KKwkJcHRyX2gxKys7DQorCQkqcDEtLSA9IChleHRyYWN0X2goY29yKSA+PiAxKTsgICAgICAgICAgICANCisJCWNvciArPSAoKCpwdHJfaDEpICogKCpwdHJfaDEpIDw8IDEpOw0KKwkJcHRyX2gxKys7DQorCQkqcDAtLSA9IChleHRyYWN0X2goY29yKSA+PiAxKTsgICAgICAgICAgICANCisJfQ0KKw0KKwkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJICogQ29tcHV0ZSBycml4aXlbXVtdIG5lZWRlZCBmb3IgdGhlIGNvZGVib29rIHNlYXJjaC4gICAgICAgICAqDQorCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisJcG9zID0gTVNJWkUgLSAxOyAgICAgICAgICAgICAgICAgICAgICAgDQorCXBvczIgPSBNU0laRSAtIDI7ICAgICAgICAgICAgICAgICAgICAgIA0KKwlwdHJfaGYgPSBoICsgMTsgICAgICAgICAgICAgICAgICAgICAgICANCisNCisJZm9yIChrID0gMDsgayA8IE5CX1BPUzsgaysrKQ0KKwl7DQorCQlwMSA9ICZycml4aXlbcG9zXTsgICAgICAgICAgICAgICAgIA0KKwkJcDAgPSAmcnJpeGl5W3BvczJdOyAgICAgICAgICAgICAgICANCisJCWNvciA9IDB4MDAwMDgwMDBMOyAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZvciByb3VuZGluZyAqLw0KKwkJcHRyX2gxID0gaDsgICAgICAgICAgICAgICAgICAgICAgICANCisJCXB0cl9oMiA9IHB0cl9oZjsgICAgICAgICAgICAgICAgICAgDQorDQorCQlmb3IgKGkgPSAoayArIDEpOyBpIDwgTkJfUE9TOyBpKyspDQorCQl7DQorCQkJY29yICs9ICgoKnB0cl9oMSkgKiAoKnB0cl9oMikpPDwxOw0KKwkJCXB0cl9oMSsrOw0KKwkJCXB0cl9oMisrOw0KKwkJCSpwMSA9IGV4dHJhY3RfaChjb3IpOyAgICAgICAgICANCisJCQljb3IgKz0gKCgqcHRyX2gxKSAqICgqcHRyX2gyKSk8PDE7DQorCQkJcHRyX2gxKys7DQorCQkJcHRyX2gyKys7DQorCQkJKnAwID0gZXh0cmFjdF9oKGNvcik7ICAgICAgICAgDQorDQorCQkJcDEgLT0gKE5CX1BPUyArIDEpOw0KKwkJCXAwIC09IChOQl9QT1MgKyAxKTsNCisJCX0NCisJCWNvciArPSAoKCpwdHJfaDEpICogKCpwdHJfaDIpKTw8MTsNCisJCXB0cl9oMSsrOw0KKwkJcHRyX2gyKys7DQorCQkqcDEgPSBleHRyYWN0X2goY29yKTsgICAgICAgICAgICAgIA0KKw0KKwkJcG9zIC09IE5CX1BPUzsNCisJCXBvczItLTsNCisJCXB0cl9oZiArPSBTVEVQOw0KKwl9DQorDQorCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkgKiBNb2RpZmljYXRpb24gb2YgcnJpeGl5W11bXSB0byB0YWtlIHNpZ25zIGludG8gYWNjb3VudC4gICAgICoNCisJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKwlwMCA9IHJyaXhpeTsgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwlmb3IgKGkgPSAwOyBpIDwgTF9TVUJGUjsgaSArPSBTVEVQKQ0KKwl7DQorCQlwc2lnbiA9IHNpZ247ICAgICAgICAgICAgICAgICAgICAgIA0KKwkJaWYgKHBzaWduW2ldIDwgMCkNCisJCXsNCisJCQlwc2lnbiA9IHZlYzsgICAgICAgICAgICAgICAgICAgDQorCQl9DQorCQlmb3IgKGogPSAxOyBqIDwgTF9TVUJGUjsgaiArPSBTVEVQKQ0KKwkJew0KKwkJCSpwMCA9IHZvX211bHQoKnAwLCBwc2lnbltqXSk7ICAgICANCisJCQlwMCsrOw0KKwkJfQ0KKwl9DQorCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJICogc2VhcmNoIDIgcHVsc2VzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiB+QH5+fn5+fn5+fn5+fn5+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqIDMyIHBvcyB4IDMyIHBvcyA9IDEwMjQgdGVzdHMgKGFsbCBjb21iaW5haXNvbnMgaXMgdGVzdGVkKSAgICAgICAgICoNCisJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisJcDAgPSBycml4aXhbMF07ICAgICAgICAgICAgICAgICAgICAgICAgDQorCXAxID0gcnJpeGl4WzFdOyAgICAgICAgICAgICAgICAgICAgICAgIA0KKwlwMiA9IHJyaXhpeTsgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKw0KKwlwc2sgPSAtMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJYWxwayA9IDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorCWl4ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwlpeSA9IDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisNCisJZm9yIChpMCA9IDA7IGkwIDwgTF9TVUJGUjsgaTAgKz0gU1RFUCkNCisJew0KKwkJcHMxID0gZG5baTBdOyAgICAgICAgICAgICAgICAgICAgICANCisJCWFscDEgPSAoKnAwKyspOyAgICAgICAgICAgICAgICAgICAgDQorCQlwb3MgPSAtMTsgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwkJZm9yIChpMSA9IDE7IGkxIDwgTF9TVUJGUjsgaTEgKz0gU1RFUCkNCisJCXsNCisJCQlwczIgPSBhZGQxKHBzMSwgZG5baTFdKTsNCisJCQlhbHAyID0gYWRkMShhbHAxLCBhZGQxKCpwMSsrLCAqcDIrKykpOw0KKwkJCXNxID0gdm9fbXVsdChwczIsIHBzMik7DQorCQkJcyA9IHZvX0xfbXVsdChhbHBrLCBzcSkgLSAoKHBzayAqIGFscDIpPDwxKTsNCisJCQlpZiAocyA+IDApDQorCQkJew0KKwkJCQlwc2sgPSBzcTsgICAgICAgICAgICAgICAgICANCisJCQkJYWxwayA9IGFscDI7ICAgICAgICAgICAgICAgDQorCQkJCXBvcyA9IGkxOyAgICAgICAgICAgICAgICAgIA0KKwkJCX0NCisJCX0NCisJCXAxIC09IE5CX1BPUzsNCisJCWlmIChwb3MgPj0gMCkNCisJCXsNCisJCQlpeCA9IGkwOyAgICAgICAgICAgICAgICAgICAgICANCisJCQlpeSA9IHBvczsgICAgICAgICAgICAgICAgICAgICAgDQorCQl9DQorCX0NCisJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkgKiBCdWlsZCB0aGUgY29kZXdvcmQsIHRoZSBmaWx0ZXJlZCBjb2Rld29yZCBhbmQgaW5kZXggb2YgY29kZXZlY3Rvci4qDQorCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorCWZvciAoaSA9IDA7IGkgPCBMX1NVQkZSOyBpKyspDQorCXsNCisJCWNvZGVbaV0gPSAwOyAgICAgICAgICAgICAgICAgICAgICAgDQorCX0NCisNCisJaTAgPSAoaXggPj4gMSk7ICAgICAgICAgICAgICAgICAgICAgICAvKiBwb3Mgb2YgcHVsc2UgMSAoMC4uMzEpICovDQorCWkxID0gKGl5ID4+IDEpOyAgICAgICAgICAgICAgICAgICAgICAgLyogcG9zIG9mIHB1bHNlIDIgKDAuLjMxKSAqLw0KKwlpZiAoc2lnbltpeF0gPiAwKQ0KKwl7DQorCQljb2RlW2l4XSA9IDUxMjsgICAgICAgICAgICAgICAgICAgICAvKiBjb2Rld29yZCBpbiBROSBmb3JtYXQgKi8NCisJCXAwID0gaCAtIGl4OyAgICAgICAgICAgICAgICAgICAgICAgDQorCX0gZWxzZQ0KKwl7DQorCQljb2RlW2l4XSA9IC01MTI7ICAgICAgICAgICAgICAgICAgIA0KKwkJaTAgKz0gTkJfUE9TOyAgICAgICAgICAgICAgICAgICAgICANCisJCXAwID0gaF9pbnYgLSBpeDsgICAgICAgICAgICAgICAgICAgDQorCX0NCisJaWYgKHNpZ25baXldID4gMCkNCisJew0KKwkJY29kZVtpeV0gPSA1MTI7ICAgICAgICAgICAgICAgICAgICANCisJCXAxID0gaCAtIGl5OyAgICAgICAgICAgICAgICAgICAgICAgDQorCX0gZWxzZQ0KKwl7DQorCQljb2RlW2l5XSA9IC01MTI7ICAgICAgICAgICAgICAgICAgIA0KKwkJaTEgKz0gTkJfUE9TOyAgICAgICAgICAgICAgICAgICAgICANCisJCXAxID0gaF9pbnYgLSBpeTsgICAgICAgICAgICAgICAgICAgDQorCX0NCisJKmluZGV4ID0gYWRkMSgoaTAgPDwgNiksIGkxKTsgICAgICAgICAgDQorCWZvciAoaSA9IDA7IGkgPCBMX1NVQkZSOyBpKyspDQorCXsNCisJCXlbaV0gPSB2b19zaHJfcihhZGQxKCgqcDArKyksICgqcDErKykpLCAzKTsNCisJfQ0KKwlyZXR1cm47DQorfQ0KKw0KKw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYzR0NjRmeC5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9jNHQ2NGZ4LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjdiYTk1ZAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvYzR0NjRmeC5jCkBAIC0wLDAgKzEsMTA0MyBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqICAgICAgRmlsZTogYzR0NjRmeC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqCSAgIERlc2NyaXB0aW9uOlBlcmZvcm1zIGFsZ2VicmFpYyBjb2RlYm9vayBzZWFyY2ggZm9yIGhpZ2hlciBtb2RlcyAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqIEZ1bmN0aW9uOiBBQ0VMUF80dDY0X2Z4KCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogMjAsIDM2LCA0NCwgNTIsIDY0LCA3MiwgODggYml0cyBhbGdlYnJhaWMgY29kZWJvb2suICAgICAgICAgICAgICAgICAgICoNCisqIDQgdHJhY2tzIHggMTYgcG9zaXRpb25zIHBlciB0cmFjayA9IDY0IHNhbXBsZXMuICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogMjAgYml0cyAtLT4gNCBwdWxzZXMgaW4gYSBmcmFtZSBvZiA2NCBzYW1wbGVzLiAgICAgICAgICAgICAgICAgICAgICAgICoNCisqIDM2IGJpdHMgLS0+IDggcHVsc2VzIGluIGEgZnJhbWUgb2YgNjQgc2FtcGxlcy4gICAgICAgICAgICAgICAgICAgICAgICAqDQorKiA0NCBiaXRzIC0tPiAxMCBwdWxzZXMgaW4gYSBmcmFtZSBvZiA2NCBzYW1wbGVzLiAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogNTIgYml0cyAtLT4gMTIgcHVsc2VzIGluIGEgZnJhbWUgb2YgNjQgc2FtcGxlcy4gICAgICAgICAgICAgICAgICAgICAgICoNCisqIDY0IGJpdHMgLS0+IDE2IHB1bHNlcyBpbiBhIGZyYW1lIG9mIDY0IHNhbXBsZXMuICAgICAgICAgICAgICAgICAgICAgICAqDQorKiA3MiBiaXRzIC0tPiAxOCBwdWxzZXMgaW4gYSBmcmFtZSBvZiA2NCBzYW1wbGVzLiAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogODggYml0cyAtLT4gMjQgcHVsc2VzIGluIGEgZnJhbWUgb2YgNjQgc2FtcGxlcy4gICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiBBbGwgcHVsc2VzIGNhbiBoYXZlIHR3byAoMikgcG9zc2libGUgYW1wbGl0dWRlczogKzEgb3IgLTEuICAgICAgICAgICAgKg0KKyogRWFjaCBwdWxzZSBjYW4gaGF2ZSBzaXh0ZWVuICgxNikgcG9zc2libGUgcG9zaXRpb25zLiAgICAgICAgICAgICAgICAgICoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKyNpbmNsdWRlICJ0eXBlZGVmLmgiDQorI2luY2x1ZGUgImJhc2ljX29wLmgiDQorI2luY2x1ZGUgIm1hdGhfb3AuaCINCisjaW5jbHVkZSAiYWNlbHAuaCINCisjaW5jbHVkZSAiY25zdC5oIg0KKw0KKyNpbmNsdWRlICJxX3B1bHNlLmgiDQorDQorc3RhdGljIFdvcmQxNiB0aXBvc1szNl0gPSB7DQorCTAsIDEsIDIsIDMsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0YXJ0aW5nIHBvaW50ICZpcG9zWzBdLCAxc3QgaXRlciAqLw0KKwkxLCAyLCAzLCAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdGFydGluZyBwb2ludCAmaXBvc1s0XSwgMm5kIGl0ZXIgKi8NCisJMiwgMywgMCwgMSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RhcnRpbmcgcG9pbnQgJmlwb3NbOF0sIDNyZCBpdGVyICovDQorCTMsIDAsIDEsIDIsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHN0YXJ0aW5nIHBvaW50ICZpcG9zWzEyXSwgNHRoIGl0ZXIgKi8NCisJMCwgMSwgMiwgMywNCisJMSwgMiwgMywgMCwNCisJMiwgMywgMCwgMSwNCisJMywgMCwgMSwgMiwNCisJMCwgMSwgMiwgM307ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZW5kIHBvaW50IGZvciAyNCBwdWxzZXMgJmlwb3NbMzVdLCA0dGggaXRlciAqLw0KKw0KKyNkZWZpbmUgTkJfUFVMU0VfTUFYICAyNA0KKw0KKyNkZWZpbmUgTF9TVUJGUiAgIDY0DQorI2RlZmluZSBOQl9UUkFDSyAgNA0KKyNkZWZpbmUgU1RFUCAgICAgIDQNCisjZGVmaW5lIE5CX1BPUyAgICAxNg0KKyNkZWZpbmUgTVNJWkUgICAgIDI1Ng0KKyNkZWZpbmUgTkJfTUFYICAgIDgNCisjZGVmaW5lIE5QTUFYUFQgICAoKE5CX1BVTFNFX01BWCtOQl9UUkFDSy0xKS9OQl9UUkFDSykNCisNCisvKiBQcml2YXRlIGZ1bmN0aW9ucyAqLw0KK3ZvaWQgY29yX2hfdmVjXzAxMigNCisJCVdvcmQxNiBoW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIHNjYWxlZCBpbXB1bHNlIHJlc3BvbnNlICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IHZlY1tdLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgc2NhbGVkIHZlY3RvciAoLzgpIHRvIGNvcnJlbGF0ZSB3aXRoIGhbXSAqLw0KKwkJV29yZDE2IHRyYWNrLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgdHJhY2sgdG8gdXNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgc2lnbltdLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBzaWduIHZlY3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBycml4aXhbXVtOQl9QT1NdLCAgICAgICAgICAgICAgLyogKGkpIGNvcnJlbGF0aW9uIG9mIGhbeF0gd2l0aCBoW3hdICAgICAgKi8NCisJCVdvcmQxNiBjb3JfMVtdLCAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIHJlc3VsdCBvZiBjb3JyZWxhdGlvbiAoTkJfUE9TIGVsZW1lbnRzKSAqLw0KKwkJV29yZDE2IGNvcl8yW10gICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgcmVzdWx0IG9mIGNvcnJlbGF0aW9uIChOQl9QT1MgZWxlbWVudHMpICovDQorCQkpOw0KKw0KK3ZvaWQgY29yX2hfdmVjXzAxMl9hc20oDQorCQlXb3JkMTYgaFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBzY2FsZWQgaW1wdWxzZSByZXNwb25zZSAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiB2ZWNbXSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIHNjYWxlZCB2ZWN0b3IgKC84KSB0byBjb3JyZWxhdGUgd2l0aCBoW10gKi8NCisJCVdvcmQxNiB0cmFjaywgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIHRyYWNrIHRvIHVzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IHNpZ25bXSwgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgc2lnbiB2ZWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgcnJpeGl4W11bTkJfUE9TXSwgICAgICAgICAgICAgIC8qIChpKSBjb3JyZWxhdGlvbiBvZiBoW3hdIHdpdGggaFt4XSAgICAgICovDQorCQlXb3JkMTYgY29yXzFbXSwgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSByZXN1bHQgb2YgY29ycmVsYXRpb24gKE5CX1BPUyBlbGVtZW50cykgKi8NCisJCVdvcmQxNiBjb3JfMltdICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIHJlc3VsdCBvZiBjb3JyZWxhdGlvbiAoTkJfUE9TIGVsZW1lbnRzKSAqLw0KKwkJKTsNCisNCit2b2lkIGNvcl9oX3ZlY18zMCgNCisJCVdvcmQxNiBoW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIHNjYWxlZCBpbXB1bHNlIHJlc3BvbnNlICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IHZlY1tdLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgc2NhbGVkIHZlY3RvciAoLzgpIHRvIGNvcnJlbGF0ZSB3aXRoIGhbXSAqLw0KKwkJV29yZDE2IHRyYWNrLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgdHJhY2sgdG8gdXNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgc2lnbltdLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBzaWduIHZlY3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBycml4aXhbXVtOQl9QT1NdLCAgICAgICAgICAgICAgLyogKGkpIGNvcnJlbGF0aW9uIG9mIGhbeF0gd2l0aCBoW3hdICAgICAgKi8NCisJCVdvcmQxNiBjb3JfMVtdLCAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIHJlc3VsdCBvZiBjb3JyZWxhdGlvbiAoTkJfUE9TIGVsZW1lbnRzKSAqLw0KKwkJV29yZDE2IGNvcl8yW10gICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgcmVzdWx0IG9mIGNvcnJlbGF0aW9uIChOQl9QT1MgZWxlbWVudHMpICovDQorCQkpOw0KKw0KK3ZvaWQgc2VhcmNoX2l4aXkoDQorCQlXb3JkMTYgbmJfcG9zX2l4LCAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBuYiBvZiBwb3MgZm9yIHB1bHNlIDEgKDEuLjgpICAgICAgICovDQorCQlXb3JkMTYgdHJhY2tfeCwgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSB0cmFjayBvZiBwdWxzZSAxICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgdHJhY2tfeSwgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSB0cmFjayBvZiBwdWxzZSAyICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgKiBwcywgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpL28pIGNvcnJlbGF0aW9uIG9mIGFsbCBmaXhlZCBwdWxzZXMgICovDQorCQlXb3JkMTYgKiBhbHAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpL28pIGVuZXJneSBvZiBhbGwgZml4ZWQgcHVsc2VzICAgICAgICovDQorCQlXb3JkMTYgKiBpeCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSBwb3NpdGlvbiBvZiBwdWxzZSAxICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgKiBpeSwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSBwb3NpdGlvbiBvZiBwdWxzZSAyICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgZG5bXSwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBjb3JyLiBiZXR3ZWVuIHRhcmdldCBhbmQgaFtdICAgICAgICovDQorCQlXb3JkMTYgZG4yW10sICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSB2ZWN0b3Igb2Ygc2VsZWN0ZWQgcG9zaXRpb25zICAgICAgICovDQorCQlXb3JkMTYgY29yX3hbXSwgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBjb3JyLiBvZiBwdWxzZSAxIHdpdGggZml4ZWQgcHVsc2VzICovDQorCQlXb3JkMTYgY29yX3lbXSwgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBjb3JyLiBvZiBwdWxzZSAyIHdpdGggZml4ZWQgcHVsc2VzICovDQorCQlXb3JkMTYgcnJpeGl5W11bTVNJWkVdICAgICAgICAgICAgICAgIC8qIChpKSBjb3JyLiBvZiBwdWxzZSAxIHdpdGggcHVsc2UgMiAgICovDQorCQkpOw0KKw0KKw0KK3ZvaWQgQUNFTFBfNHQ2NF9meCgNCisJCVdvcmQxNiBkbltdLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIDwxMmIgOiBjb3JyZWxhdGlvbiBiZXR3ZWVuIHRhcmdldCB4W10gYW5kIEhbXSAgICAgICovDQorCQlXb3JkMTYgY25bXSwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSA8MTJiIDogcmVzaWR1YWwgYWZ0ZXIgbG9uZyB0ZXJtIHByZWRpY3Rpb24gICAgICAgICAqLw0KKwkJV29yZDE2IEhbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTEyOiBpbXB1bHNlIHJlc3BvbnNlIG9mIHdlaWdodGVkIHN5bnRoZXNpcyBmaWx0ZXIgKi8NCisJCVdvcmQxNiBjb2RlW10sICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIFE5IDogYWxnZWJyYWljIChmaXhlZCkgY29kZWJvb2sgZXhjaXRhdGlvbiAgICAgICAgICovDQorCQlXb3JkMTYgeVtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSBROSA6IGZpbHRlcmVkIGZpeGVkIGNvZGVib29rIGV4Y2l0YXRpb24gICAgICAgICAgICAqLw0KKwkJV29yZDE2IG5iYml0cywgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgOiAyMCwgMzYsIDQ0LCA1MiwgNjQsIDcyIG9yIDg4IGJpdHMgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBzZXJfc2l6ZSwgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIDogYml0IHJhdGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgX2luZGV4W10gICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSA6IGluZGV4ICgyMCk6IDUrNSs1KzUgPSAyMCBiaXRzLiAgICAgICAgICAgICAgICAgICAqLw0KKwkJLyogKG8pIDogaW5kZXggKDM2KTogOSs5KzkrOSA9IDM2IGJpdHMuICAgICAgICAgICAgICAgICAgICovDQorCQkvKiAobykgOiBpbmRleCAoNDQpOiAxMys5KzEzKzkgPSA0NCBiaXRzLiAgICAgICAgICAgICAgICAgKi8NCisJCS8qIChvKSA6IGluZGV4ICg1Mik6IDEzKzEzKzEzKzEzID0gNTIgYml0cy4gICAgICAgICAgICAgICAqLw0KKwkJLyogKG8pIDogaW5kZXggKDY0KTogMisyKzIrMisxNCsxNCsxNCsxNCA9IDY0IGJpdHMuICAgICAgICovDQorCQkvKiAobykgOiBpbmRleCAoNzIpOiAxMCsyKzEwKzIrMTArMTQrMTArMTQgPSA3MiBiaXRzLiAgICAgKi8NCisJCS8qIChvKSA6IGluZGV4ICg4OCk6IDExKzExKzExKzExKzExKzExKzExKzExID0gODggYml0cy4gICAqLw0KKwkJKQ0KK3sNCisJV29yZDMyIGksIGosIGs7DQorCVdvcmQxNiBzdCwgaXgsIGl5LCBwb3MsIGluZGV4LCB0cmFjaywgbmJfcHVsc2UsIG5iaXRlciwgal90ZW1wOw0KKwlXb3JkMTYgcHNrLCBwcywgYWxwaywgYWxwLCB2YWwsIGtfY24sIGtfZG4sIGV4cDsNCisJV29yZDE2ICpwMCwgKnAxLCAqcDIsICpwMywgKnBzaWduOw0KKwlXb3JkMTYgKmgsICpoX2ludiwgKnB0cl9oMSwgKnB0cl9oMiwgKnB0cl9oZiwgaF9zaGlmdDsNCisJV29yZDMyIHMsIGNvciwgTF90bXAsIExfaW5kZXg7DQorCVdvcmQxNiBkbjJbTF9TVUJGUl0sIHNpZ25bTF9TVUJGUl0sIHZlY1tMX1NVQkZSXTsNCisJV29yZDE2IGluZFtOUE1BWFBUICogTkJfVFJBQ0tdOw0KKwlXb3JkMTYgY29kdmVjW05CX1BVTFNFX01BWF0sIG5icG9zWzEwXTsNCisJV29yZDE2IGNvcl94W05CX1BPU10sIGNvcl95W05CX1BPU10sIHBvc19tYXhbTkJfVFJBQ0tdOw0KKwlXb3JkMTYgaF9idWZbNCAqIExfU1VCRlJdOw0KKwlXb3JkMTYgcnJpeGl4W05CX1RSQUNLXVtOQl9QT1NdLCBycml4aXlbTkJfVFJBQ0tdW01TSVpFXTsNCisJV29yZDE2IGlwb3NbTkJfUFVMU0VfTUFYXTsNCisNCisJc3dpdGNoIChuYmJpdHMpDQorCXsNCisJCWNhc2UgMjA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDIwIGJpdHMsIDQgcHVsc2VzLCA0IHRyYWNrcyAqLw0KKwkJCW5iaXRlciA9IDQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA0eDE2eDE2PTEwMjQgbG9vcCAqLw0KKwkJCWFscCA9IDgxOTI7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhbHAgPSAyLjAgKFExMikgKi8NCisJCQluYl9wdWxzZSA9IDQ7ICAgICAgICAgICAgICAgICAgICAgIA0KKwkJCW5icG9zWzBdID0gNDsgICAgICAgICAgICAgICAgICAgICAgDQorCQkJbmJwb3NbMV0gPSA4OyAgICAgICAgICAgICAgICAgICAgICANCisJCQlicmVhazsNCisJCWNhc2UgMzY6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDM2IGJpdHMsIDggcHVsc2VzLCA0IHRyYWNrcyAqLw0KKwkJCW5iaXRlciA9IDQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA0eDIweDE2PTEyODAgbG9vcCAqLw0KKwkJCWFscCA9IDQwOTY7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhbHAgPSAxLjAgKFExMikgKi8NCisJCQluYl9wdWxzZSA9IDg7ICAgICAgICAgICAgICAgICAgICAgIA0KKwkJCW5icG9zWzBdID0gNDsgICAgICAgICAgICAgICAgICAgICAgDQorCQkJbmJwb3NbMV0gPSA4OyAgICAgICAgICAgICAgICAgICAgICANCisJCQluYnBvc1syXSA9IDg7ICAgICAgICAgICAgICAgICAgICAgIA0KKwkJCWJyZWFrOw0KKwkJY2FzZSA0NDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogNDQgYml0cywgMTAgcHVsc2VzLCA0IHRyYWNrcyAqLw0KKwkJCW5iaXRlciA9IDQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA0eDI2eDE2PTE2NjQgbG9vcCAqLw0KKwkJCWFscCA9IDQwOTY7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhbHAgPSAxLjAgKFExMikgKi8NCisJCQluYl9wdWxzZSA9IDEwOyAgICAgICAgICAgICAgICAgICAgIA0KKwkJCW5icG9zWzBdID0gNDsgICAgICAgICAgICAgICAgICAgICAgDQorCQkJbmJwb3NbMV0gPSA2OyAgICAgICAgICAgICAgICAgICAgICANCisJCQluYnBvc1syXSA9IDg7ICAgICAgICAgICAgICAgICAgICAgIA0KKwkJCW5icG9zWzNdID0gODsgICAgICAgICAgICAgICAgICAgICAgDQorCQkJYnJlYWs7DQorCQljYXNlIDUyOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA1MiBiaXRzLCAxMiBwdWxzZXMsIDQgdHJhY2tzICovDQorCQkJbmJpdGVyID0gNDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDR4MjZ4MTY9MTY2NCBsb29wICovDQorCQkJYWxwID0gNDA5NjsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFscCA9IDEuMCAoUTEyKSAqLw0KKwkJCW5iX3B1bHNlID0gMTI7ICAgICAgICAgICAgICAgICAgICAgDQorCQkJbmJwb3NbMF0gPSA0OyAgICAgICAgICAgICAgICAgICAgICANCisJCQluYnBvc1sxXSA9IDY7ICAgICAgICAgICAgICAgICAgICAgIA0KKwkJCW5icG9zWzJdID0gODsgICAgICAgICAgICAgICAgICAgICAgDQorCQkJbmJwb3NbM10gPSA4OyAgICAgICAgICAgICAgICAgICAgICANCisJCQlicmVhazsNCisJCWNhc2UgNjQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDY0IGJpdHMsIDE2IHB1bHNlcywgNCB0cmFja3MgKi8NCisJCQluYml0ZXIgPSAzOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogM3gzNngxNj0xNzI4IGxvb3AgKi8NCisJCQlhbHAgPSAzMjc3OyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYWxwID0gMC44IChRMTIpICovDQorCQkJbmJfcHVsc2UgPSAxNjsgICAgICAgICAgICAgICAgICAgICANCisJCQluYnBvc1swXSA9IDQ7ICAgICAgICAgICAgICAgICAgICAgIA0KKwkJCW5icG9zWzFdID0gNDsgICAgICAgICAgICAgICAgICAgICAgDQorCQkJbmJwb3NbMl0gPSA2OyAgICAgICAgICAgICAgICAgICAgICANCisJCQluYnBvc1szXSA9IDY7ICAgICAgICAgICAgICAgICAgICAgIA0KKwkJCW5icG9zWzRdID0gODsgICAgICAgICAgICAgICAgICAgICAgDQorCQkJbmJwb3NbNV0gPSA4OyAgICAgICAgICAgICAgICAgICAgICANCisJCQlicmVhazsNCisJCWNhc2UgNzI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDcyIGJpdHMsIDE4IHB1bHNlcywgNCB0cmFja3MgKi8NCisJCQluYml0ZXIgPSAzOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogM3gzNXgxNj0xNjgwIGxvb3AgKi8NCisJCQlhbHAgPSAzMDcyOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYWxwID0gMC43NSAoUTEyKSAqLw0KKwkJCW5iX3B1bHNlID0gMTg7ICAgICAgICAgICAgICAgICAgICAgDQorCQkJbmJwb3NbMF0gPSAyOyAgICAgICAgICAgICAgICAgICAgICANCisJCQluYnBvc1sxXSA9IDM7ICAgICAgICAgICAgICAgICAgICAgIA0KKwkJCW5icG9zWzJdID0gNDsgICAgICAgICAgICAgICAgICAgICAgDQorCQkJbmJwb3NbM10gPSA1OyAgICAgICAgICAgICAgICAgICAgICANCisJCQluYnBvc1s0XSA9IDY7ICAgICAgICAgICAgICAgICAgICAgIA0KKwkJCW5icG9zWzVdID0gNzsgICAgICAgICAgICAgICAgICAgICAgDQorCQkJbmJwb3NbNl0gPSA4OyAgICAgICAgICAgICAgICAgICAgICANCisJCQlicmVhazsNCisJCWNhc2UgODg6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDg4IGJpdHMsIDI0IHB1bHNlcywgNCB0cmFja3MgKi8NCisJCQlpZihzZXJfc2l6ZSA+IDQ2MikNCisJCQkJbmJpdGVyID0gMTsNCisJCQllbHNlDQorCQkJCW5iaXRlciA9IDI7ICAgICAgICAgICAgICAgICAgICAvKiAyeDUzeDE2PTE2OTYgbG9vcCAqLw0KKw0KKwkJCWFscCA9IDIwNDg7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhbHAgPSAwLjUgKFExMikgKi8NCisJCQluYl9wdWxzZSA9IDI0OyAgICAgICAgICAgICAgICAgICAgIA0KKwkJCW5icG9zWzBdID0gMjsgICAgICAgICAgICAgICAgICAgICAgDQorCQkJbmJwb3NbMV0gPSAyOyAgICAgICAgICAgICAgICAgICAgICANCisJCQluYnBvc1syXSA9IDM7ICAgICAgICAgICAgICAgICAgICAgIA0KKwkJCW5icG9zWzNdID0gNDsgICAgICAgICAgICAgICAgICAgICAgDQorCQkJbmJwb3NbNF0gPSA1OyAgICAgICAgICAgICAgICAgICAgICANCisJCQluYnBvc1s1XSA9IDY7ICAgICAgICAgICAgICAgICAgICAgIA0KKwkJCW5icG9zWzZdID0gNzsgICAgICAgICAgICAgICAgICAgICAgDQorCQkJbmJwb3NbN10gPSA4OyAgICAgICAgICAgICAgICAgICAgICANCisJCQluYnBvc1s4XSA9IDg7ICAgICAgICAgICAgICAgICAgICAgIA0KKwkJCW5icG9zWzldID0gODsgICAgICAgICAgICAgICAgICAgICAgDQorCQkJYnJlYWs7DQorCQlkZWZhdWx0Og0KKwkJCW5iaXRlciA9IDA7DQorCQkJYWxwID0gMDsNCisJCQluYl9wdWxzZSA9IDA7DQorCX0NCisNCisJZm9yIChpID0gMDsgaSA8IG5iX3B1bHNlOyBpKyspDQorCXsNCisJCWNvZHZlY1tpXSA9IGk7ICAgICAgICAgICAgICAgICAgICAgDQorCX0NCisNCisJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkgKiBGaW5kIHNpZ24gZm9yIGVhY2ggcHVsc2UgcG9zaXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorCS8qIGNhbGN1bGF0ZSBlbmVyZ3kgZm9yIG5vcm1hbGl6YXRpb24gb2YgY25bXSBhbmQgZG5bXSAqLw0KKwkvKiBzZXQga19jbiA9IDMyLi4zMjc2NyAoZW5lcl9jbiA9IDJeMzAuLjI1Ni0wKSAqLw0KKyNpZmRlZiBBU01fT1BUICAgICAgICAgICAgICAgICAgLyogYXNtIG9wdGltaXphdGlvbiBicmFuY2ggKi8NCisJcyA9IERvdF9wcm9kdWN0MTJfYXNtKGNuLCBjbiwgTF9TVUJGUiwgJmV4cCk7DQorI2Vsc2UNCisJcyA9IERvdF9wcm9kdWN0MTIoY24sIGNuLCBMX1NVQkZSLCAmZXhwKTsNCisjZW5kaWYNCisNCisJSXNxcnRfbigmcywgJmV4cCk7DQorCXMgPSBMX3NobChzLCAoZXhwICsgNSkpOyANCisJa19jbiA9IGV4dHJhY3RfaChMX2FkZChzLCAweDgwMDApKTsNCisNCisJLyogc2V0IGtfZG4gPSAzMi4uNTEyIChlbmVyX2RuID0gMl4zMC4uMl4yMikgKi8NCisjaWZkZWYgQVNNX09QVCAgICAgICAgICAgICAgICAgICAgICAvKiBhc20gb3B0aW1pemF0aW9uIGJyYW5jaCAqLw0KKwlzID0gRG90X3Byb2R1Y3QxMl9hc20oZG4sIGRuLCBMX1NVQkZSLCAmZXhwKTsNCisjZWxzZQ0KKwlzID0gRG90X3Byb2R1Y3QxMihkbiwgZG4sIExfU1VCRlIsICZleHApOw0KKyNlbmRpZg0KKw0KKwlJc3FydF9uKCZzLCAmZXhwKTsNCisJa19kbiA9IChMX3NobChzLCAoZXhwICsgNSArIDMpKSArIDB4ODAwMCkgPj4gMTY7ICAgIC8qIGtfZG4gPSAyNTYuLjQwOTYgKi8NCisJa19kbiA9IHZvX211bHRfcihhbHAsIGtfZG4pOyAgICAgICAgICAgICAgLyogYWxwIGluIFExMiAqLw0KKw0KKwkvKiBtaXggbm9ybWFsaXplZCBjbltdIGFuZCBkbltdICovDQorCXAwID0gY247DQorCXAxID0gZG47DQorCXAyID0gZG4yOw0KKw0KKwlmb3IgKGkgPSAwOyBpIDwgTF9TVUJGUi80OyBpKyspDQorCXsNCisJCXMgPSAoa19jbiogKCpwMCsrKSkrKGtfZG4gKiAoKnAxKyspKTsNCisJCSpwMisrID0gcyA+PiA3Ow0KKwkJcyA9IChrX2NuKiAoKnAwKyspKSsoa19kbiAqICgqcDErKykpOw0KKwkJKnAyKysgPSBzID4+IDc7DQorCQlzID0gKGtfY24qICgqcDArKykpKyhrX2RuICogKCpwMSsrKSk7DQorCQkqcDIrKyA9IHMgPj4gNzsNCisJCXMgPSAoa19jbiogKCpwMCsrKSkrKGtfZG4gKiAoKnAxKyspKTsNCisJCSpwMisrID0gcyA+PiA3OyANCisJfQ0KKw0KKwkvKiBzZXQgc2lnbiBhY2NvcmRpbmcgdG8gZG4yW10gPSBrX2NuKmNuW10gKyBrX2RuKmRuW10gICAgKi8NCisJZm9yKGkgPSAwOyBpIDwgTF9TVUJGUjsgaSsrKQ0KKwl7DQorCQl2YWwgPSBkbltpXTsgICAgICAgICAgICAgICAgICAgDQorCQlwcyA9IGRuMltpXTsgICAgICAgICAgICAgICAgICAgDQorCQlpZiAocHMgPj0gMCkNCisJCXsNCisJCQlzaWduW2ldID0gMzI3Njc7ICAgICAgICAgICAgIC8qIHNpZ24gPSArMSAoUTEyKSAqLw0KKwkJCXZlY1tpXSA9IC0zMjc2ODsgICAgICAgICAgIA0KKwkJfSBlbHNlDQorCQl7DQorCQkJc2lnbltpXSA9IC0zMjc2ODsgICAgICAgICAgICAvKiBzaWduID0gLTEgKFExMikgKi8NCisJCQl2ZWNbaV0gPSAzMjc2NzsgICAgICAgICAgICANCisJCQlkbltpXSA9IC12YWw7DQorCQkJZG4yW2ldID0gLXBzOw0KKwkJfQ0KKwl9DQorCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJICogU2VsZWN0IE5CX01BWCBwb3NpdGlvbiBwZXIgdHJhY2sgYWNjb3JkaW5nIHRvIG1heCBvZiBkbjJbXS4gICAgKg0KKwkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKwlwb3MgPSAwOw0KKwlmb3IgKGkgPSAwOyBpIDwgTkJfVFJBQ0s7IGkrKykNCisJew0KKwkJZm9yIChrID0gMDsgayA8IE5CX01BWDsgaysrKQ0KKwkJew0KKwkJCXBzID0gLTE7ICAgICAgICAgICAgICAgICAgICAgICANCisJCQlmb3IgKGogPSBpOyBqIDwgTF9TVUJGUjsgaiArPSBTVEVQKQ0KKwkJCXsNCisJCQkJaWYoZG4yW2pdID4gcHMpDQorCQkJCXsNCisJCQkJCXBzID0gZG4yW2pdOyAgICAgICAgICANCisJCQkJCXBvcyA9IGo7ICAgICAgICAgICAgICAgDQorCQkJCX0NCisJCQl9DQorCQkJZG4yW3Bvc10gPSAoayAtIE5CX01BWCk7ICAgICAvKiBkbjIgPCAwIHdoZW4gcG9zaXRpb24gaXMgc2VsZWN0ZWQgKi8NCisJCQlpZiAoayA9PSAwKQ0KKwkJCXsNCisJCQkJcG9zX21heFtpXSA9IHBvczsgICAgICAgICAgDQorCQkJfQ0KKwkJfQ0KKwl9DQorDQorCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCSAqIFNjYWxlIGhbXSB0byBhdm9pZCBvdmVyZmxvdyBhbmQgdG8gZ2V0IG1heGltdW0gb2YgcHJlY2lzaW9uICAqDQorCSAqIG9uIGNvcnJlbGF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqIE1heGltdW0gb2YgaFtdIChoWzBdKSBpcyBmaXhlZCB0byAyMDQ4IChNQVgxNiAvIDE2KS4gICAgICAgICAqDQorCSAqICA9PT4gVGhpcyBhbGxvdyBhZGRpdGlvbiBvZiAxNiBwdWxzZXMgd2l0aG91dCBzYXR1cmF0aW9uLiAgICAqDQorCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqIEVuZXJneSB3b3JzdCBjYXNlIChvbiByZXNvbmFudCBpbXB1bHNlIHJlc3BvbnNlKSwgICAgICAgICAgICAqDQorCSAqIC0gZW5lcmd5IG9mIGhbXSBpcyBhcHByb3hpbWF0ZWx5IE1BWC8xNi4gICAgICAgICAgICAgICAgICAgICAqDQorCSAqIC0gRHVyaW5nIHNlYXJjaCwgdGhlIGVuZXJneSBpcyBkaXZpZGVkIGJ5IDggdG8gYXZvaWQgICAgICAgICAqDQorCSAqICAgb3ZlcmZsb3cgb24gImFscCIuIChlbmVyZ3kgb2YgaFtdID0gTUFYLzEyOCkuICAgICAgICAgICAgICAqDQorCSAqICA9PT4gImFscCIgd29yc3QgY2FzZSBkZXRlY3RlZCBpcyAyMjg1NCBvbiBzaW51c29pZGFsIHdhdmUuICAqDQorCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKwkvKiBpbXB1bHNlIHJlc3BvbnNlIGJ1ZmZlciBmb3IgZmFzdCBjb21wdXRhdGlvbiAqLw0KKw0KKwloID0gaF9idWY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJaF9pbnYgPSBoX2J1ZiArICgyICogTF9TVUJGUik7ICAgDQorCUxfdG1wID0gMDsNCisJZm9yIChpID0gMDsgaSA8IExfU1VCRlI7IGkrKykNCisJew0KKwkJKmgrKyA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICANCisJCSpoX2ludisrID0gMDsgICANCisJCUxfdG1wICs9IChIW2ldICogSFtpXSkgPDwgMTsNCisJfQ0KKwkvKiBzY2FsZSBoW10gZG93biAoLzIpIHdoZW4gZW5lcmd5IG9mIGhbXSBpcyBoaWdoIHdpdGggbWFueSBwdWxzZXMgdXNlZCAqLw0KKwl2YWwgPSBleHRyYWN0X2goTF90bXApOw0KKwloX3NoaWZ0ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICANCisNCisJaWYgKChuYl9wdWxzZSA+PSAxMikgJiYgKHZhbCA+IDEwMjQpKQ0KKwl7DQorCQloX3NoaWZ0ID0gMTsgICAgICAgICAgICAgICAgICAgICAgIA0KKwl9DQorCXAwID0gSDsNCisJcDEgPSBoOw0KKwlwMiA9IGhfaW52Ow0KKw0KKwlmb3IgKGkgPSAwOyBpIDwgTF9TVUJGUi80OyBpKyspDQorCXsNCisJCSpwMSA9ICpwMCsrID4+IGhfc2hpZnQ7ICAgICAgICAgDQorCQkqcDIrKyA9IC0oKnAxKyspOyAgDQorCQkqcDEgPSAqcDArKyA+PiBoX3NoaWZ0OyAgICAgICAgIA0KKwkJKnAyKysgPSAtKCpwMSsrKTsgDQorCQkqcDEgPSAqcDArKyA+PiBoX3NoaWZ0OyAgICAgICAgIA0KKwkJKnAyKysgPSAtKCpwMSsrKTsgDQorCQkqcDEgPSAqcDArKyA+PiBoX3NoaWZ0OyAgICAgICAgIA0KKwkJKnAyKysgPSAtKCpwMSsrKTsgDQorCX0NCisNCisJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCSAqIENvbXB1dGUgcnJpeGl4W11bXSBuZWVkZWQgZm9yIHRoZSBjb2RlYm9vayBzZWFyY2guICAgICAgICAgKg0KKwkgKiBUaGlzIGFsZ29yaXRobSBjb21wdXRlIGltcHVsc2UgcmVzcG9uc2UgZW5lcmd5IG9mIGFsbCAgICAgICoNCisJICogcG9zaXRpb25zICgxNikgaW4gZWFjaCB0cmFjayAoNCkuICAgICAgIFRvdGFsID0gNHgxNiA9IDY0LiAqDQorCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisJLyogc3RvcmFnZSBvcmRlciAtLT4gaTNpMywgaTJpMiwgaTFpMSwgaTBpMCAqLw0KKw0KKwkvKiBJbml0IHBvaW50ZXJzIHRvIGxhc3QgcG9zaXRpb24gb2YgcnJpeGl4W10gKi8NCisJcDAgPSAmcnJpeGl4WzBdW05CX1BPUyAtIDFdOyAgICAgICAgICAgDQorCXAxID0gJnJyaXhpeFsxXVtOQl9QT1MgLSAxXTsgICAgICAgICAgIA0KKwlwMiA9ICZycml4aXhbMl1bTkJfUE9TIC0gMV07ICAgICAgICAgICANCisJcDMgPSAmcnJpeGl4WzNdW05CX1BPUyAtIDFdOyAgICAgICAgICAgDQorDQorCXB0cl9oMSA9IGg7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwljb3IgPSAweDAwMDA4MDAwTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZvciByb3VuZGluZyAqLw0KKwlmb3IgKGkgPSAwOyBpIDwgTkJfUE9TOyBpKyspDQorCXsNCisJCWNvciArPSB2b19MX211bHQoKCpwdHJfaDEpLCAoKnB0cl9oMSkpOw0KKwkJcHRyX2gxKys7DQorCQkqcDMtLSA9IGV4dHJhY3RfaChjb3IpOyAgICAgICAgICAgIA0KKwkJY29yICs9IHZvX0xfbXVsdCgoKnB0cl9oMSksICgqcHRyX2gxKSk7DQorCQlwdHJfaDErKzsNCisJCSpwMi0tID0gZXh0cmFjdF9oKGNvcik7ICAgICAgICAgICAgDQorCQljb3IgKz0gdm9fTF9tdWx0KCgqcHRyX2gxKSwgKCpwdHJfaDEpKTsNCisJCXB0cl9oMSsrOw0KKwkJKnAxLS0gPSBleHRyYWN0X2goY29yKTsgICAgICAgICAgICANCisJCWNvciArPSB2b19MX211bHQoKCpwdHJfaDEpLCAoKnB0cl9oMSkpOw0KKwkJcHRyX2gxKys7DQorCQkqcDAtLSA9IGV4dHJhY3RfaChjb3IpOyAgICAgICAgICAgIA0KKwl9DQorDQorCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkgKiBDb21wdXRlIHJyaXhpeVtdW10gbmVlZGVkIGZvciB0aGUgY29kZWJvb2sgc2VhcmNoLiAgICAgICAgICoNCisJICogVGhpcyBhbGdvcml0aG0gY29tcHV0ZSBjb3JyZWxhdGlvbiBiZXR3ZWVuIDIgcHVsc2VzICAgICAgICAqDQorCSAqICgyIGltcHVsc2VzIHJlc3BvbnNlcykgaW4gNCBwb3NzaWJsZSBhZGphY2VudHMgdHJhY2tzLiAgICAgKg0KKwkgKiAodHJhY2sgMC0xLCAxLTIsIDItMyBhbmQgMy0wKS4gICAgIFRvdGFsID0gNHgxNngxNiA9IDEwMjQuICoNCisJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKwkvKiBzdG9yYWdlIG9yZGVyIC0tPiBpMmkzLCBpMWkyLCBpMGkxLCBpM2kwICovDQorDQorCXBvcyA9IE1TSVpFIC0gMTsgICAgICAgICAgICAgICAgICAgICAgIA0KKwlwdHJfaGYgPSBoICsgMTsgICAgICAgICAgICAgICAgICAgICAgICANCisNCisJZm9yIChrID0gMDsgayA8IE5CX1BPUzsgaysrKQ0KKwl7DQorCQlwMyA9ICZycml4aXlbMl1bcG9zXTsgICAgICAgICAgICAgIA0KKwkJcDIgPSAmcnJpeGl5WzFdW3Bvc107ICAgICAgICAgICAgICANCisJCXAxID0gJnJyaXhpeVswXVtwb3NdOyAgICAgICAgICAgICAgDQorCQlwMCA9ICZycml4aXlbM11bcG9zIC0gTkJfUE9TXTsgICAgIA0KKw0KKwkJY29yID0gMHgwMDAwODAwMEw7ICAgICAgICAgICAgICAgICAgIC8qIGZvciByb3VuZGluZyAqLw0KKwkJcHRyX2gxID0gaDsgICAgICAgICAgICAgICAgICAgICAgICANCisJCXB0cl9oMiA9IHB0cl9oZjsgICAgICAgICAgICAgICAgICAgDQorDQorCQlmb3IgKGkgPSBrICsgMTsgaSA8IE5CX1BPUzsgaSsrKQ0KKwkJew0KKwkJCWNvciArPSB2b19MX211bHQoKCpwdHJfaDEpLCAoKnB0cl9oMikpOw0KKwkJCXB0cl9oMSsrOw0KKwkJCXB0cl9oMisrOw0KKwkJCSpwMyA9IGV4dHJhY3RfaChjb3IpOyAgICAgICAgICANCisJCQljb3IgKz0gdm9fTF9tdWx0KCgqcHRyX2gxKSwgKCpwdHJfaDIpKTsNCisJCQlwdHJfaDErKzsNCisJCQlwdHJfaDIrKzsNCisJCQkqcDIgPSBleHRyYWN0X2goY29yKTsgICAgICAgICAgDQorCQkJY29yICs9IHZvX0xfbXVsdCgoKnB0cl9oMSksICgqcHRyX2gyKSk7DQorCQkJcHRyX2gxKys7DQorCQkJcHRyX2gyKys7DQorCQkJKnAxID0gZXh0cmFjdF9oKGNvcik7ICAgICAgICAgIA0KKwkJCWNvciArPSB2b19MX211bHQoKCpwdHJfaDEpLCAoKnB0cl9oMikpOw0KKwkJCXB0cl9oMSsrOw0KKwkJCXB0cl9oMisrOw0KKwkJCSpwMCA9IGV4dHJhY3RfaChjb3IpOyAgICAgICAgIA0KKw0KKwkJCXAzIC09IChOQl9QT1MgKyAxKTsNCisJCQlwMiAtPSAoTkJfUE9TICsgMSk7DQorCQkJcDEgLT0gKE5CX1BPUyArIDEpOw0KKwkJCXAwIC09IChOQl9QT1MgKyAxKTsNCisJCX0NCisJCWNvciArPSB2b19MX211bHQoKCpwdHJfaDEpLCAoKnB0cl9oMikpOw0KKwkJcHRyX2gxKys7DQorCQlwdHJfaDIrKzsNCisJCSpwMyA9IGV4dHJhY3RfaChjb3IpOyAgICAgICAgICAgICAgDQorCQljb3IgKz0gdm9fTF9tdWx0KCgqcHRyX2gxKSwgKCpwdHJfaDIpKTsNCisJCXB0cl9oMSsrOw0KKwkJcHRyX2gyKys7DQorCQkqcDIgPSBleHRyYWN0X2goY29yKTsgICAgICAgICAgICAgIA0KKwkJY29yICs9IHZvX0xfbXVsdCgoKnB0cl9oMSksICgqcHRyX2gyKSk7DQorCQlwdHJfaDErKzsNCisJCXB0cl9oMisrOw0KKwkJKnAxID0gZXh0cmFjdF9oKGNvcik7ICAgICAgICAgICAgICANCisNCisJCXBvcyAtPSBOQl9QT1M7DQorCQlwdHJfaGYgKz0gU1RFUDsNCisJfQ0KKw0KKwkvKiBzdG9yYWdlIG9yZGVyIC0tPiBpM2kwLCBpMmkzLCBpMWkyLCBpMGkxICovDQorDQorCXBvcyA9IE1TSVpFIC0gMTsgICAgICAgICAgICAgICAgICAgICAgIA0KKwlwdHJfaGYgPSBoICsgMzsgICAgICAgICAgICAgICAgICAgICAgICANCisNCisJZm9yIChrID0gMDsgayA8IE5CX1BPUzsgaysrKQ0KKwl7DQorCQlwMyA9ICZycml4aXlbM11bcG9zXTsgICAgICAgICAgICAgIA0KKwkJcDIgPSAmcnJpeGl5WzJdW3BvcyAtIDFdOyAgICAgICAgICANCisJCXAxID0gJnJyaXhpeVsxXVtwb3MgLSAxXTsgICAgICAgICAgDQorCQlwMCA9ICZycml4aXlbMF1bcG9zIC0gMV07ICAgICAgICAgIA0KKw0KKwkJY29yID0gMHgwMDAwODAwMEw7CQkJCQkJCQkvKiBmb3Igcm91bmRpbmcgKi8NCisJCXB0cl9oMSA9IGg7ICAgICAgICAgICAgICAgICAgICAgICAgDQorCQlwdHJfaDIgPSBwdHJfaGY7ICAgICAgICAgICAgICAgICAgIA0KKw0KKwkJZm9yIChpID0gayArIDE7IGkgPCBOQl9QT1M7IGkrKykNCisJCXsNCisJCQljb3IgKz0gdm9fTF9tdWx0KCgqcHRyX2gxKSwgKCpwdHJfaDIpKTsNCisJCQlwdHJfaDErKzsNCisJCQlwdHJfaDIrKzsNCisJCQkqcDMgPSBleHRyYWN0X2goY29yKTsgICAgICAgICAgDQorCQkJY29yICs9IHZvX0xfbXVsdCgoKnB0cl9oMSksICgqcHRyX2gyKSk7DQorCQkJcHRyX2gxKys7DQorCQkJcHRyX2gyKys7DQorCQkJKnAyID0gZXh0cmFjdF9oKGNvcik7ICAgICAgICAgIA0KKwkJCWNvciArPSB2b19MX211bHQoKCpwdHJfaDEpLCAoKnB0cl9oMikpOw0KKwkJCXB0cl9oMSsrOw0KKwkJCXB0cl9oMisrOw0KKwkJCSpwMSA9IGV4dHJhY3RfaChjb3IpOyAgICAgICAgICANCisJCQljb3IgKz0gdm9fTF9tdWx0KCgqcHRyX2gxKSwgKCpwdHJfaDIpKTsNCisJCQlwdHJfaDErKzsNCisJCQlwdHJfaDIrKzsNCisJCQkqcDAgPSBleHRyYWN0X2goY29yKTsgICAgICAgICAgDQorDQorCQkJcDMgLT0gKE5CX1BPUyArIDEpOw0KKwkJCXAyIC09IChOQl9QT1MgKyAxKTsNCisJCQlwMSAtPSAoTkJfUE9TICsgMSk7DQorCQkJcDAgLT0gKE5CX1BPUyArIDEpOw0KKwkJfQ0KKwkJY29yICs9IHZvX0xfbXVsdCgoKnB0cl9oMSksICgqcHRyX2gyKSk7DQorCQlwdHJfaDErKzsNCisJCXB0cl9oMisrOw0KKwkJKnAzID0gZXh0cmFjdF9oKGNvcik7ICAgICAgICAgICAgICANCisNCisJCXBvcy0tOw0KKwkJcHRyX2hmICs9IFNURVA7DQorCX0NCisNCisJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCSAqIE1vZGlmaWNhdGlvbiBvZiBycml4aXlbXVtdIHRvIHRha2Ugc2lnbnMgaW50byBhY2NvdW50LiAgICAgKg0KKwkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorCXAwID0gJnJyaXhpeVswXVswXTsgICAgICAgICAgICAgICAgICAgIA0KKw0KKwlmb3IgKGsgPSAwOyBrIDwgTkJfVFJBQ0s7IGsrKykNCisJew0KKwkJal90ZW1wID0gKGsgKyAxKSYweDAzOw0KKwkJZm9yIChpID0gazsgaSA8IExfU1VCRlI7IGkgKz0gU1RFUCkNCisJCXsNCisJCQlwc2lnbiA9IHNpZ247ICAgICAgICAgICAgICAgICAgDQorCQkJaWYgKHBzaWduW2ldIDwgMCkNCisJCQl7DQorCQkJCXBzaWduID0gdmVjOyAgICAgICAgICAgICAgIA0KKwkJCX0NCisJCQlqID0gal90ZW1wOw0KKwkJCWZvciAoOyBqIDwgTF9TVUJGUjsgaiArPSBTVEVQKQ0KKwkJCXsNCisJCQkJKnAwID0gdm9fbXVsdCgqcDAsIHBzaWduW2pdKTsgICAgDQorCQkJCXAwKys7DQorCQkJfQ0KKwkJfQ0KKwl9DQorDQorCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJICogICAgICAgICAgICAgICAgICAgICAgIERlZXAgZmlyc3Qgc2VhcmNoICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKwlwc2sgPSAtMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJYWxwayA9IDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorDQorCWZvciAoayA9IDA7IGsgPCBuYml0ZXI7IGsrKykNCisJew0KKwkJal90ZW1wID0gazw8MjsNCisJCWZvciAoaSA9IDA7IGkgPCBuYl9wdWxzZTsgaSsrKQ0KKwkJCWlwb3NbaV0gPSB0aXBvc1tqX3RlbXAgKyBpXTsNCisNCisJCWlmKG5iYml0cyA9PSAyMCkNCisJCXsNCisJCQlwb3MgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgDQorCQkJcHMgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgIA0KKwkJCWFscCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICANCisJCQlmb3IgKGkgPSAwOyBpIDwgTF9TVUJGUjsgaSsrKQ0KKwkJCXsNCisJCQkJdmVjW2ldID0gMDsgICAgICAgICAgICAgICAgDQorCQkJfQ0KKwkJfSBlbHNlIGlmICgobmJiaXRzID09IDM2KSB8fCAobmJiaXRzID09IDQ0KSkNCisJCXsNCisJCQkvKiBmaXJzdCBzdGFnZTogZml4IDIgcHVsc2VzICovDQorCQkJcG9zID0gMjsNCisNCisJCQlpeCA9IGluZFswXSA9IHBvc19tYXhbaXBvc1swXV07DQorCQkJaXkgPSBpbmRbMV0gPSBwb3NfbWF4W2lwb3NbMV1dOw0KKwkJCXBzID0gZG5baXhdICsgZG5baXldOw0KKwkJCWkgPSBpeCA+PiAyOyAgICAgICAgICAgICAgICAvKiBpeCAvIFNURVAgKi8NCisJCQlqID0gaXkgPj4gMjsgICAgICAgICAgICAgICAgLyogaXkgLyBTVEVQICovDQorCQkJcyA9IHJyaXhpeFtpcG9zWzBdXVtpXSA8PCAxMzsNCisJCQlzICs9IHJyaXhpeFtpcG9zWzFdXVtqXSA8PCAxMzsNCisJCQlpID0gKGkgPDwgNCkgKyBqOyAgICAgICAgIC8qIChpeC9TVEVQKSpOQl9QT1MgKyAoaXkvU1RFUCkgKi8NCisJCQlzICs9IHJyaXhpeVtpcG9zWzBdXVtpXSA8PCAxNDsNCisJCQlhbHAgPSAocyArIDB4ODAwMCkgPj4gMTY7DQorCQkJaWYgKHNpZ25baXhdIDwgMCkNCisJCQkJcDAgPSBoX2ludiAtIGl4Ow0KKwkJCWVsc2UNCisJCQkJcDAgPSBoIC0gaXg7DQorCQkJaWYgKHNpZ25baXldIDwgMCkNCisJCQkJcDEgPSBoX2ludiAtIGl5Ow0KKwkJCWVsc2UNCisJCQkJcDEgPSBoIC0gaXk7DQorDQorCQkJZm9yIChpID0gMDsgaSA8IExfU1VCRlI7IGkrKykNCisJCQl7DQorCQkJCXZlY1tpXSA9ICgqcDArKykgKyAoKnAxKyspOw0KKwkJCX0NCisNCisJCQlpZihuYmJpdHMgPT0gNDQpDQorCQkJew0KKwkJCQlpcG9zWzhdID0gMDsgICAgICAgICAgICAgICANCisJCQkJaXBvc1s5XSA9IDE7ICAgICAgICAgICAgICAgDQorCQkJfQ0KKwkJfSBlbHNlDQorCQl7DQorCQkJLyogZmlyc3Qgc3RhZ2U6IGZpeCA0IHB1bHNlcyAqLw0KKwkJCXBvcyA9IDQ7DQorDQorCQkJaXggPSBpbmRbMF0gPSBwb3NfbWF4W2lwb3NbMF1dOyAgDQorCQkJaXkgPSBpbmRbMV0gPSBwb3NfbWF4W2lwb3NbMV1dOyAgDQorCQkJaSA9IGluZFsyXSA9IHBvc19tYXhbaXBvc1syXV07ICAgDQorCQkJaiA9IGluZFszXSA9IHBvc19tYXhbaXBvc1szXV07ICAgDQorCQkJcHMgPSBhZGQxKGFkZDEoYWRkMShkbltpeF0sIGRuW2l5XSksIGRuW2ldKSwgZG5bal0pOw0KKw0KKwkJCWlmIChzaWduW2l4XSA8IDApDQorCQkJCXAwID0gaF9pbnYgLSBpeDsNCisJCQllbHNlDQorCQkJCXAwID0gaCAtIGl4Ow0KKw0KKwkJCWlmIChzaWduW2l5XSA8IDApDQorCQkJCXAxID0gaF9pbnYgLSBpeTsNCisJCQllbHNlDQorCQkJCXAxID0gaCAtIGl5Ow0KKw0KKwkJCWlmIChzaWduW2ldIDwgMCkNCisJCQkJcDIgPSBoX2ludiAtIGk7DQorCQkJZWxzZQ0KKwkJCQlwMiA9IGggLSBpOw0KKw0KKwkJCWlmIChzaWduW2pdIDwgMCkNCisJCQkJcDMgPSBoX2ludiAtIGo7DQorCQkJZWxzZQ0KKwkJCQlwMyA9IGggLSBqOw0KKw0KKwkJCUxfdG1wID0gMEw7DQorCQkJZm9yKGkgPSAwOyBpIDwgTF9TVUJGUjsgaSsrKQ0KKwkJCXsNCisJCQkJdmVjW2ldICA9IGFkZDEoYWRkMShhZGQxKCpwMCsrLCAqcDErKyksICpwMisrKSwgKnAzKyspOw0KKwkJCQlMX3RtcCAgKz0gKHZlY1tpXSAqIHZlY1tpXSkgPDwgMTsNCisJCQl9DQorDQorCQkJYWxwID0gKChMX3RtcCA+PiAzKSArIDB4ODAwMCkgPj4gMTY7DQorDQorCQkJaWYobmJiaXRzID09IDcyKQ0KKwkJCXsNCisJCQkJaXBvc1sxNl0gPSAwOyAgICAgICAgICAgICAgDQorCQkJCWlwb3NbMTddID0gMTsgICAgICAgICAgICAgIA0KKwkJCX0NCisJCX0NCisNCisJCS8qIG90aGVyIHN0YWdlcyBvZiAyIHB1bHNlcyAqLw0KKw0KKwkJZm9yIChqID0gcG9zLCBzdCA9IDA7IGogPCBuYl9wdWxzZTsgaiArPSAyLCBzdCsrKQ0KKwkJew0KKwkJCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCQkJICogQ2FsY3VsYXRlIGNvcnJlbGF0aW9uIG9mIGFsbCBwb3NzaWJsZSBwb3NpdGlvbnMgICoNCisJCQkgKiBvZiB0aGUgbmV4dCAyIHB1bHNlcyB3aXRoIHByZXZpb3VzIGZpeGVkIHB1bHNlcy4gKg0KKwkJCSAqIEVhY2ggcHVsc2UgY2FuIGhhdmUgMTYgcG9zc2libGUgcG9zaXRpb25zLiAgICAgICAqDQorCQkJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorCQkJaWYoaXBvc1tqXSA9PSAzKQ0KKwkJCXsNCisJCQkJY29yX2hfdmVjXzMwKGgsIHZlYywgaXBvc1tqXSwgc2lnbiwgcnJpeGl4LCBjb3JfeCwgY29yX3kpOw0KKwkJCX0NCisJCQllbHNlDQorCQkJew0KKyNpZmRlZiBBU01fT1BUICAgICAgICAgICAgICAgICAvKiBhc20gb3B0aW1pemF0aW9uIGJyYW5jaCAqLw0KKwkJCQljb3JfaF92ZWNfMDEyX2FzbShoLCB2ZWMsIGlwb3Nbal0sIHNpZ24sIHJyaXhpeCwgY29yX3gsIGNvcl95KTsNCisjZWxzZQ0KKwkJCQljb3JfaF92ZWNfMDEyKGgsIHZlYywgaXBvc1tqXSwgc2lnbiwgcnJpeGl4LCBjb3JfeCwgY29yX3kpOw0KKyNlbmRpZg0KKwkJCX0NCisJCQkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkJCSAqIEZpbmQgYmVzdCBwb3NpdGlvbnMgb2YgMiBwdWxzZXMuICAgICAgICAgICAgICAgICAqDQorCQkJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorCQkJc2VhcmNoX2l4aXkobmJwb3Nbc3RdLCBpcG9zW2pdLCBpcG9zW2ogKyAxXSwgJnBzLCAmYWxwLA0KKwkJCQkJJml4LCAmaXksIGRuLCBkbjIsIGNvcl94LCBjb3JfeSwgcnJpeGl5KTsNCisNCisJCQlpbmRbal0gPSBpeDsgICAgICAgICAgICAgICAgICAgDQorCQkJaW5kW2ogKyAxXSA9IGl5OyAgICAgICAgICAgICAgIA0KKw0KKwkJCWlmIChzaWduW2l4XSA8IDApDQorCQkJCXAwID0gaF9pbnYgLSBpeDsNCisJCQllbHNlDQorCQkJCXAwID0gaCAtIGl4Ow0KKwkJCWlmIChzaWduW2l5XSA8IDApDQorCQkJCXAxID0gaF9pbnYgLSBpeTsNCisJCQllbHNlDQorCQkJCXAxID0gaCAtIGl5Ow0KKw0KKwkJCWZvciAoaSA9IDA7IGkgPCBMX1NVQkZSOyBpKz00KQ0KKwkJCXsNCisJCQkJdmVjW2ldICAgKz0gYWRkMSgoKnAwKyspLCAoKnAxKyspKTsgICAgICAgDQorCQkJCXZlY1tpKzFdICs9IGFkZDEoKCpwMCsrKSwgKCpwMSsrKSk7ICAgICAgICANCisJCQkJdmVjW2krMl0gKz0gYWRkMSgoKnAwKyspLCAoKnAxKyspKTsgICAgICAgIA0KKwkJCQl2ZWNbaSszXSArPSBhZGQxKCgqcDArKyksICgqcDErKykpOyAgICAgIA0KKwkJCX0NCisJCX0NCisJCS8qIG1lbW9yaXNlIHRoZSBiZXN0IGNvZGV2ZWN0b3IgKi8NCisJCXBzID0gdm9fbXVsdChwcywgcHMpOw0KKwkJcyA9IHZvX0xfbXN1KHZvX0xfbXVsdChhbHBrLCBwcyksIHBzaywgYWxwKTsNCisJCWlmIChzID4gMCkNCisJCXsNCisJCQlwc2sgPSBwczsgICAgICAgICAgICAgICAgICAgICAgDQorCQkJYWxwayA9IGFscDsgICAgICAgICAgICAgICAgICAgIA0KKwkJCWZvciAoaSA9IDA7IGkgPCBuYl9wdWxzZTsgaSsrKQ0KKwkJCXsNCisJCQkJY29kdmVjW2ldID0gaW5kW2ldOyAgICAgICAgDQorCQkJfQ0KKwkJCWZvciAoaSA9IDA7IGkgPCBMX1NVQkZSOyBpKyspDQorCQkJew0KKwkJCQl5W2ldID0gdmVjW2ldOyAgICAgICAgICAgICANCisJCQl9DQorCQl9DQorCX0NCisJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkgKiBCdWlsZCB0aGUgY29kZXdvcmQsIHRoZSBmaWx0ZXJlZCBjb2Rld29yZCBhbmQgaW5kZXggb2YgY29kZXZlY3Rvci4qDQorCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorCWZvciAoaSA9IDA7IGkgPCBOUE1BWFBUICogTkJfVFJBQ0s7IGkrKykNCisJew0KKwkJaW5kW2ldID0gLTE7ICAgICAgICAgICAgICAgICAgICAgICANCisJfQ0KKwlmb3IgKGkgPSAwOyBpIDwgTF9TVUJGUjsgaSsrKQ0KKwl7DQorCQljb2RlW2ldID0gMDsgICAgICAgICAgICAgICAgICAgICAgIA0KKwkJeVtpXSA9IHZvX3Nocl9yKHlbaV0sIDMpOyAgICAgICAgICAgICAgIC8qIFExMiB0byBROSAqLw0KKwl9DQorCXZhbCA9ICg1MTIgPj4gaF9zaGlmdCk7ICAgICAgICAgICAgICAgLyogY29kZXdvcmQgaW4gUTkgZm9ybWF0ICovDQorCWZvciAoayA9IDA7IGsgPCBuYl9wdWxzZTsgaysrKQ0KKwl7DQorCQlpID0gY29kdmVjW2tdOyAgICAgICAgICAgICAgICAgICAgICAgLyogcmVhZCBwdWxzZSBwb3NpdGlvbiAqLw0KKwkJaiA9IHNpZ25baV07ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHJlYWQgc2lnbiAgICAgICAgICAgKi8NCisJCWluZGV4ID0gaSA+PiAyOyAgICAgICAgICAgICAgICAgLyogaW5kZXggPSBwb3Mgb2YgcHVsc2UgKDAuLjE1KSAqLw0KKwkJdHJhY2sgPSAoV29yZDE2KSAoaSAmIDB4MDMpOyAgICAgICAgIC8qIHRyYWNrID0gaSAlIE5CX1RSQUNLICgwLi4zKSAgKi8NCisNCisJCWlmIChqID4gMCkNCisJCXsNCisJCQljb2RlW2ldICs9IHZhbDsgICANCisJCQljb2R2ZWNba10gKz0gMTI4OyAgDQorCQl9IGVsc2UNCisJCXsNCisJCQljb2RlW2ldIC09IHZhbDsgICANCisJCQlpbmRleCArPSBOQl9QT1M7ICAgIA0KKwkJfQ0KKw0KKwkJaSA9IChXb3JkMTYpKCh2b19MX211bHQodHJhY2ssIE5QTUFYUFQpID4+IDEpKTsNCisNCisJCXdoaWxlIChpbmRbaV0gPj0gMCkNCisJCXsNCisJCQlpICs9IDE7DQorCQl9DQorCQlpbmRbaV0gPSBpbmRleDsgICAgICAgICAgICAgICAgICAgIA0KKwl9DQorDQorCWsgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwkvKiBCdWlsZCBpbmRleCBvZiBjb2RldmVjdG9yICovDQorCWlmKG5iYml0cyA9PSAyMCkNCisJew0KKwkJZm9yICh0cmFjayA9IDA7IHRyYWNrIDwgTkJfVFJBQ0s7IHRyYWNrKyspDQorCQl7DQorCQkJX2luZGV4W3RyYWNrXSA9IChXb3JkMTYpKHF1YW50XzFwX04xKGluZFtrXSwgNCkpOw0KKwkJCWsgKz0gTlBNQVhQVDsNCisJCX0NCisJfSBlbHNlIGlmKG5iYml0cyA9PSAzNikNCisJew0KKwkJZm9yICh0cmFjayA9IDA7IHRyYWNrIDwgTkJfVFJBQ0s7IHRyYWNrKyspDQorCQl7DQorCQkJX2luZGV4W3RyYWNrXSA9IChXb3JkMTYpKHF1YW50XzJwXzJOMShpbmRba10sIGluZFtrICsgMV0sIDQpKTsNCisJCQlrICs9IE5QTUFYUFQ7DQorCQl9DQorCX0gZWxzZSBpZihuYmJpdHMgPT0gNDQpDQorCXsNCisJCWZvciAodHJhY2sgPSAwOyB0cmFjayA8IE5CX1RSQUNLIC0gMjsgdHJhY2srKykNCisJCXsNCisJCQlfaW5kZXhbdHJhY2tdID0gKFdvcmQxNikocXVhbnRfM3BfM04xKGluZFtrXSwgaW5kW2sgKyAxXSwgaW5kW2sgKyAyXSwgNCkpOw0KKwkJCWsgKz0gTlBNQVhQVDsNCisJCX0NCisJCWZvciAodHJhY2sgPSAyOyB0cmFjayA8IE5CX1RSQUNLOyB0cmFjaysrKQ0KKwkJew0KKwkJCV9pbmRleFt0cmFja10gPSAoV29yZDE2KShxdWFudF8ycF8yTjEoaW5kW2tdLCBpbmRbayArIDFdLCA0KSk7DQorCQkJayArPSBOUE1BWFBUOw0KKwkJfQ0KKwl9IGVsc2UgaWYobmJiaXRzID09IDUyKQ0KKwl7DQorCQlmb3IgKHRyYWNrID0gMDsgdHJhY2sgPCBOQl9UUkFDSzsgdHJhY2srKykNCisJCXsNCisJCQlfaW5kZXhbdHJhY2tdID0gKFdvcmQxNikocXVhbnRfM3BfM04xKGluZFtrXSwgaW5kW2sgKyAxXSwgaW5kW2sgKyAyXSwgNCkpOw0KKwkJCWsgKz0gTlBNQVhQVDsNCisJCX0NCisJfSBlbHNlIGlmKG5iYml0cyA9PSA2NCkNCisJew0KKwkJZm9yICh0cmFjayA9IDA7IHRyYWNrIDwgTkJfVFJBQ0s7IHRyYWNrKyspDQorCQl7DQorCQkJTF9pbmRleCA9IHF1YW50XzRwXzROKCZpbmRba10sIDQpOw0KKwkJCV9pbmRleFt0cmFja10gPSAoV29yZDE2KSgoTF9pbmRleCA+PiAxNCkgJiAzKTsNCisJCQlfaW5kZXhbdHJhY2sgKyBOQl9UUkFDS10gPSAoV29yZDE2KShMX2luZGV4ICYgMHgzRkZGKTsNCisJCQlrICs9IE5QTUFYUFQ7DQorCQl9DQorCX0gZWxzZSBpZihuYmJpdHMgPT0gNzIpDQorCXsNCisJCWZvciAodHJhY2sgPSAwOyB0cmFjayA8IE5CX1RSQUNLIC0gMjsgdHJhY2srKykNCisJCXsNCisJCQlMX2luZGV4ID0gcXVhbnRfNXBfNU4oJmluZFtrXSwgNCk7DQorCQkJX2luZGV4W3RyYWNrXSA9IChXb3JkMTYpKChMX2luZGV4ID4+IDEwKSAmIDB4MDNGRik7DQorCQkJX2luZGV4W3RyYWNrICsgTkJfVFJBQ0tdID0gKFdvcmQxNikoTF9pbmRleCAmIDB4MDNGRik7DQorCQkJayArPSBOUE1BWFBUOw0KKwkJfQ0KKwkJZm9yICh0cmFjayA9IDI7IHRyYWNrIDwgTkJfVFJBQ0s7IHRyYWNrKyspDQorCQl7DQorCQkJTF9pbmRleCA9IHF1YW50XzRwXzROKCZpbmRba10sIDQpOw0KKwkJCV9pbmRleFt0cmFja10gPSAoV29yZDE2KSgoTF9pbmRleCA+PiAxNCkgJiAzKTsNCisJCQlfaW5kZXhbdHJhY2sgKyBOQl9UUkFDS10gPSAoV29yZDE2KShMX2luZGV4ICYgMHgzRkZGKTsNCisJCQlrICs9IE5QTUFYUFQ7DQorCQl9DQorCX0gZWxzZSBpZihuYmJpdHMgPT0gODgpDQorCXsNCisJCWZvciAodHJhY2sgPSAwOyB0cmFjayA8IE5CX1RSQUNLOyB0cmFjaysrKQ0KKwkJew0KKwkJCUxfaW5kZXggPSBxdWFudF82cF82Tl8yKCZpbmRba10sIDQpOw0KKwkJCV9pbmRleFt0cmFja10gPSAoV29yZDE2KSgoTF9pbmRleCA+PiAxMSkgJiAweDA3RkYpOw0KKwkJCV9pbmRleFt0cmFjayArIE5CX1RSQUNLXSA9IChXb3JkMTYpKExfaW5kZXggJiAweDA3RkYpOw0KKwkJCWsgKz0gTlBNQVhQVDsNCisJCX0NCisJfQ0KKwlyZXR1cm47DQorfQ0KKw0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisgKiBGdW5jdGlvbiAgY29yX2hfdmVjKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogfn5+fn5+fn5+fn5+fn5+fn5+fn5+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqIENvbXB1dGUgY29ycmVsYXRpb25zIG9mIGhbXSB3aXRoIHZlY1tdIGZvciB0aGUgc3BlY2lmaWVkIHRyYWNrLiAgICoNCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KK3ZvaWQgY29yX2hfdmVjXzMwKA0KKwkJV29yZDE2IGhbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgc2NhbGVkIGltcHVsc2UgcmVzcG9uc2UgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgdmVjW10sICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBzY2FsZWQgdmVjdG9yICgvOCkgdG8gY29ycmVsYXRlIHdpdGggaFtdICovDQorCQlXb3JkMTYgdHJhY2ssICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSB0cmFjayB0byB1c2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBzaWduW10sICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIHNpZ24gdmVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IHJyaXhpeFtdW05CX1BPU10sICAgICAgICAgICAgICAvKiAoaSkgY29ycmVsYXRpb24gb2YgaFt4XSB3aXRoIGhbeF0gICAgICAqLw0KKwkJV29yZDE2IGNvcl8xW10sICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgcmVzdWx0IG9mIGNvcnJlbGF0aW9uIChOQl9QT1MgZWxlbWVudHMpICovDQorCQlXb3JkMTYgY29yXzJbXSAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSByZXN1bHQgb2YgY29ycmVsYXRpb24gKE5CX1BPUyBlbGVtZW50cykgKi8NCisJCSkNCit7DQorCVdvcmQzMiBpLCBqLCBwb3MsIGNvcnI7DQorCVdvcmQxNiAqcDAsICpwMSwgKnAyLCpwMywqY29yX3gsKmNvcl95Ow0KKwlXb3JkMzIgTF9zdW0xLExfc3VtMjsNCisJY29yX3ggPSBjb3JfMTsNCisJY29yX3kgPSBjb3JfMjsNCisJcDAgPSBycml4aXhbdHJhY2tdOw0KKwlwMyA9IHJyaXhpeFswXTsNCisJcG9zID0gdHJhY2s7DQorDQorCWZvciAoaSA9IDA7IGkgPCBOQl9QT1M7IGkrPTIpDQorCXsNCisJCUxfc3VtMSA9IExfc3VtMiA9IDBMOw0KKwkJcDEgPSBoOw0KKwkJcDIgPSAmdmVjW3Bvc107DQorCQlmb3IgKGo9cG9zO2ogPCBMX1NVQkZSOyBqKyspDQorCQl7DQorCQkJTF9zdW0xICs9ICpwMSAqICpwMjsJCQ0KKwkJCXAyLT0zOw0KKwkJCUxfc3VtMiArPSAqcDErKyAqICpwMjsJCQ0KKwkJCXAyKz00Ow0KKwkJfQ0KKwkJcDItPTM7DQorCQlMX3N1bTIgKz0gKnAxKysgKiAqcDIrKzsJDQorCQlMX3N1bTIgKz0gKnAxKysgKiAqcDIrKzsJDQorCQlMX3N1bTIgKz0gKnAxKysgKiAqcDIrKzsJDQorDQorCQlMX3N1bTEgPSAoTF9zdW0xIDw8IDIpOw0KKwkJTF9zdW0yID0gKExfc3VtMiA8PCAyKTsNCisNCisJCWNvcnIgPSB2b19yb3VuZChMX3N1bTEpOwkNCisJCSpjb3JfeCsrID0gdm9fbXVsdChjb3JyLCBzaWduW3Bvc10pICsgKCpwMCsrKTsNCisJCWNvcnIgPSB2b19yb3VuZChMX3N1bTIpOw0KKwkJKmNvcl95KysgPSB2b19tdWx0KGNvcnIsIHNpZ25bcG9zLTNdKSArICgqcDMrKyk7DQorCQlwb3MgKz0gU1RFUDsNCisNCisJCUxfc3VtMSA9IExfc3VtMiA9IDBMOw0KKwkJcDEgPSBoOw0KKwkJcDIgPSAmdmVjW3Bvc107DQorCQlmb3IgKGo9cG9zO2ogPCBMX1NVQkZSOyBqKyspDQorCQl7DQorCQkJTF9zdW0xICs9ICpwMSAqICpwMjsJCQ0KKwkJCXAyLT0zOw0KKwkJCUxfc3VtMiArPSAqcDErKyAqICpwMjsJCQ0KKwkJCXAyKz00Ow0KKwkJfQ0KKwkJcDItPTM7DQorCQlMX3N1bTIgKz0gKnAxKysgKiAqcDIrKzsJDQorCQlMX3N1bTIgKz0gKnAxKysgKiAqcDIrKzsJDQorCQlMX3N1bTIgKz0gKnAxKysgKiAqcDIrKzsJDQorDQorCQlMX3N1bTEgPSAoTF9zdW0xIDw8IDIpOw0KKwkJTF9zdW0yID0gKExfc3VtMiA8PCAyKTsNCisNCisJCWNvcnIgPSB2b19yb3VuZChMX3N1bTEpOwkNCisJCSpjb3JfeCsrID0gdm9fbXVsdChjb3JyLCBzaWduW3Bvc10pICsgKCpwMCsrKTsNCisJCWNvcnIgPSB2b19yb3VuZChMX3N1bTIpOw0KKwkJKmNvcl95KysgPSB2b19tdWx0KGNvcnIsIHNpZ25bcG9zLTNdKSArICgqcDMrKyk7DQorCQlwb3MgKz0gU1RFUDsNCisJfQ0KKwlyZXR1cm47DQorfQ0KKw0KK3ZvaWQgY29yX2hfdmVjXzAxMigNCisJCVdvcmQxNiBoW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIHNjYWxlZCBpbXB1bHNlIHJlc3BvbnNlICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IHZlY1tdLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgc2NhbGVkIHZlY3RvciAoLzgpIHRvIGNvcnJlbGF0ZSB3aXRoIGhbXSAqLw0KKwkJV29yZDE2IHRyYWNrLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgdHJhY2sgdG8gdXNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgc2lnbltdLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBzaWduIHZlY3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBycml4aXhbXVtOQl9QT1NdLCAgICAgICAgICAgICAgLyogKGkpIGNvcnJlbGF0aW9uIG9mIGhbeF0gd2l0aCBoW3hdICAgICAgKi8NCisJCVdvcmQxNiBjb3JfMVtdLCAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIHJlc3VsdCBvZiBjb3JyZWxhdGlvbiAoTkJfUE9TIGVsZW1lbnRzKSAqLw0KKwkJV29yZDE2IGNvcl8yW10gICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgcmVzdWx0IG9mIGNvcnJlbGF0aW9uIChOQl9QT1MgZWxlbWVudHMpICovDQorCQkpDQorew0KKwlXb3JkMzIgaSwgaiwgcG9zLCBjb3JyOw0KKwlXb3JkMTYgKnAwLCAqcDEsICpwMiwqcDMsKmNvcl94LCpjb3JfeTsNCisJV29yZDMyIExfc3VtMSxMX3N1bTI7DQorCWNvcl94ID0gY29yXzE7DQorCWNvcl95ID0gY29yXzI7DQorCXAwID0gcnJpeGl4W3RyYWNrXTsNCisJcDMgPSBycml4aXhbdHJhY2srMV07DQorCXBvcyA9IHRyYWNrOw0KKw0KKwlmb3IgKGkgPSAwOyBpIDwgTkJfUE9TOyBpKz0yKQ0KKwl7DQorCQlMX3N1bTEgPSBMX3N1bTIgPSAwTDsNCisJCXAxID0gaDsNCisJCXAyID0gJnZlY1twb3NdOw0KKwkJZm9yIChqPTYyLXBvcyA7aiA+PSAwOyBqLS0pDQorCQl7DQorCQkJTF9zdW0xICs9ICpwMSAqICpwMisrOw0KKwkJCUxfc3VtMiArPSAqcDErKyAqICpwMjsNCisJCX0NCisJCUxfc3VtMSArPSAqcDEgKiAqcDI7DQorCQlMX3N1bTEgPSAoTF9zdW0xIDw8IDIpOw0KKwkJTF9zdW0yID0gKExfc3VtMiA8PCAyKTsNCisNCisJCWNvcnIgPSAoTF9zdW0xICsgMHg4MDAwKSA+PiAxNjsNCisJCWNvcl94W2ldID0gdm9fbXVsdChjb3JyLCBzaWduW3Bvc10pICsgKCpwMCsrKTsNCisJCWNvcnIgPSAoTF9zdW0yICsgMHg4MDAwKSA+PiAxNjsNCisJCWNvcl95W2ldID0gdm9fbXVsdChjb3JyLCBzaWduW3BvcyArIDFdKSArICgqcDMrKyk7DQorCQlwb3MgKz0gU1RFUDsNCisNCisJCUxfc3VtMSA9IExfc3VtMiA9IDBMOw0KKwkJcDEgPSBoOw0KKwkJcDIgPSAmdmVjW3Bvc107DQorCQlmb3IgKGo9IDYyLXBvcztqID49IDA7IGotLSkNCisJCXsNCisJCQlMX3N1bTEgKz0gKnAxICogKnAyKys7DQorCQkJTF9zdW0yICs9ICpwMSsrICogKnAyOw0KKwkJfQ0KKwkJTF9zdW0xICs9ICpwMSAqICpwMjsNCisJCUxfc3VtMSA9IChMX3N1bTEgPDwgMik7DQorCQlMX3N1bTIgPSAoTF9zdW0yIDw8IDIpOw0KKw0KKwkJY29yciA9IChMX3N1bTEgKyAweDgwMDApID4+IDE2Ow0KKwkJY29yX3hbaSsxXSA9IHZvX211bHQoY29yciwgc2lnbltwb3NdKSArICgqcDArKyk7DQorCQljb3JyID0gKExfc3VtMiArIDB4ODAwMCkgPj4gMTY7DQorCQljb3JfeVtpKzFdID0gdm9fbXVsdChjb3JyLCBzaWduW3BvcyArIDFdKSArICgqcDMrKyk7DQorCQlwb3MgKz0gU1RFUDsNCisJfQ0KKwlyZXR1cm47DQorfQ0KKw0KKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisgKiBGdW5jdGlvbiAgc2VhcmNoX2l4aXkoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqIEZpbmQgdGhlIGJlc3QgcG9zaXRpb25zIG9mIDIgcHVsc2VzIGluIGEgc3ViZnJhbWUuICAgICAgICAgICAgICAgICoNCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3ZvaWQgc2VhcmNoX2l4aXkoDQorCQlXb3JkMTYgbmJfcG9zX2l4LCAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBuYiBvZiBwb3MgZm9yIHB1bHNlIDEgKDEuLjgpICAgICAgICovDQorCQlXb3JkMTYgdHJhY2tfeCwgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSB0cmFjayBvZiBwdWxzZSAxICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgdHJhY2tfeSwgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSB0cmFjayBvZiBwdWxzZSAyICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgKiBwcywgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpL28pIGNvcnJlbGF0aW9uIG9mIGFsbCBmaXhlZCBwdWxzZXMgICovDQorCQlXb3JkMTYgKiBhbHAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpL28pIGVuZXJneSBvZiBhbGwgZml4ZWQgcHVsc2VzICAgICAgICovDQorCQlXb3JkMTYgKiBpeCwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSBwb3NpdGlvbiBvZiBwdWxzZSAxICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgKiBpeSwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSBwb3NpdGlvbiBvZiBwdWxzZSAyICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgZG5bXSwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBjb3JyLiBiZXR3ZWVuIHRhcmdldCBhbmQgaFtdICAgICAgICovDQorCQlXb3JkMTYgZG4yW10sICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSB2ZWN0b3Igb2Ygc2VsZWN0ZWQgcG9zaXRpb25zICAgICAgICovDQorCQlXb3JkMTYgY29yX3hbXSwgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBjb3JyLiBvZiBwdWxzZSAxIHdpdGggZml4ZWQgcHVsc2VzICovDQorCQlXb3JkMTYgY29yX3lbXSwgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBjb3JyLiBvZiBwdWxzZSAyIHdpdGggZml4ZWQgcHVsc2VzICovDQorCQlXb3JkMTYgcnJpeGl5W11bTVNJWkVdICAgICAgICAgICAgICAgIC8qIChpKSBjb3JyLiBvZiBwdWxzZSAxIHdpdGggcHVsc2UgMiAgICovDQorCQkpDQorew0KKwlXb3JkMzIgeCwgeSwgcG9zLCB0aHJlc19peDsNCisJV29yZDE2IHBzMSwgcHMyLCBzcSwgc3FrOw0KKwlXb3JkMTYgYWxwXzE2LCBhbHBrOw0KKwlXb3JkMTYgKnAwLCAqcDEsICpwMjsNCisJV29yZDMyIHMsIGFscDAsIGFscDEsIGFscDI7DQorDQorCXAwID0gY29yX3g7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwlwMSA9IGNvcl95OyAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJcDIgPSBycml4aXlbdHJhY2tfeF07ICAgICAgICAgICAgICAgICAgDQorDQorCXRocmVzX2l4ID0gbmJfcG9zX2l4IC0gTkJfTUFYOw0KKw0KKwlhbHAwID0gTF9kZXBvc2l0X2goKmFscCk7DQorCWFscDAgPSAoYWxwMCArIDB4MDAwMDgwMDBMKTsgICAgICAgLyogZm9yIHJvdW5kaW5nICovDQorDQorCXNxayA9IC0xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwlhbHBrID0gMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisNCisJZm9yICh4ID0gdHJhY2tfeDsgeCA8IExfU1VCRlI7IHggKz0gU1RFUCkNCisJew0KKwkJcHMxID0gKnBzICsgZG5beF07DQorCQlhbHAxID0gYWxwMCArICgoKnAwKyspPDwxMyk7DQorDQorCQlpZiAoZG4yW3hdIDwgdGhyZXNfaXgpDQorCQl7DQorCQkJcG9zID0gLTE7DQorCQkJZm9yICh5ID0gdHJhY2tfeTsgeSA8IExfU1VCRlI7IHkgKz0gU1RFUCkNCisJCQl7DQorCQkJCXBzMiA9IGFkZDEocHMxLCBkblt5XSk7DQorDQorCQkJCWFscDIgPSBhbHAxICsgKCgqcDErKyk8PDEzKTsNCisJCQkJYWxwMiA9IGFscDIgKyAoKCpwMisrKTw8MTQpOw0KKwkJCQlhbHBfMTYgPSBleHRyYWN0X2goYWxwMik7DQorCQkJCXNxID0gdm9fbXVsdChwczIsIHBzMik7DQorCQkJCXMgPSB2b19MX211bHQoYWxwaywgc3EpIC0gKChzcWsgKiBhbHBfMTYpPDwxKTsNCisNCisJCQkJaWYgKHMgPiAwKQ0KKwkJCQl7DQorCQkJCQlzcWsgPSBzcTsgICAgICAgICAgICAgIA0KKwkJCQkJYWxwayA9IGFscF8xNjsgICAgICAgICANCisJCQkJCXBvcyA9IHk7ICAgICAgICAgICAgICAgDQorCQkJCX0NCisJCQl9DQorCQkJcDEgLT0gTkJfUE9TOw0KKw0KKwkJCWlmIChwb3MgPj0gMCkNCisJCQl7DQorCQkJCSppeCA9IHg7ICAgICAgICAgICAgICAgICAgIA0KKwkJCQkqaXkgPSBwb3M7ICAgICAgICAgICAgICAgICANCisJCQl9DQorCQl9IGVsc2UNCisJCXsNCisJCQlwMiArPSBOQl9QT1M7DQorCQl9DQorCX0NCisNCisJKnBzID0gYWRkMSgqcHMsIGFkZDEoZG5bKml4XSwgZG5bKml5XSkpOyANCisJKmFscCA9IGFscGs7ICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorDQorCXJldHVybjsNCit9DQorDQorDQorDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9jbW5NZW1vcnkuYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvY21uTWVtb3J5LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzE3MjY0YwotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvY21uTWVtb3J5LmMKQEAgLTAsMCArMSw3MyBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJY21uTWVtb3J5LmMNCisNCisJQ29udGVudDoJc2FtcGxlIGNvZGUgZm9yIG1lbW9yeSBvcGVyYXRvciBpbXBsZW1lbnRhdGlvbg0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorI2luY2x1ZGUgImNtbk1lbW9yeS5oIg0KKw0KKyNpbmNsdWRlIDxtYWxsb2MuaD4NCisjaWYgZGVmaW5lZCBMSU5VWA0KKyNpbmNsdWRlIDxzdHJpbmcuaD4NCisjZW5kaWYNCisNCisvL1ZPX01FTV9PUEVSQVRPUgkJZ19tZW1PUDsNCisNCitWT19VMzIgY21uTWVtQWxsb2MgKFZPX1MzMiB1SUQsICBWT19NRU1fSU5GTyAqIHBNZW1JbmZvKQ0KK3sNCisJaWYgKCFwTWVtSW5mbykNCisJCXJldHVybiBWT19FUlJfSU5WQUxJRF9BUkc7DQorDQorCXBNZW1JbmZvLT5WQnVmZmVyID0gbWFsbG9jIChwTWVtSW5mby0+U2l6ZSk7DQorCXJldHVybiAwOw0KK30NCisNCitWT19VMzIgY21uTWVtRnJlZSAoVk9fUzMyIHVJRCwgVk9fUFRSIHBNZW0pDQorew0KKwlmcmVlIChwTWVtKTsNCisJcmV0dXJuIDA7DQorfQ0KKw0KK1ZPX1UzMgljbW5NZW1TZXQgKFZPX1MzMiB1SUQsIFZPX1BUUiBwQnVmZiwgVk9fVTggdVZhbHVlLCBWT19VMzIgdVNpemUpDQorew0KKwltZW1zZXQgKHBCdWZmLCB1VmFsdWUsIHVTaXplKTsNCisJcmV0dXJuIDA7DQorfQ0KKw0KK1ZPX1UzMgljbW5NZW1Db3B5IChWT19TMzIgdUlELCBWT19QVFIgcERlc3QsIFZPX1BUUiBwU291cmNlLCBWT19VMzIgdVNpemUpDQorew0KKwltZW1jcHkgKHBEZXN0LCBwU291cmNlLCB1U2l6ZSk7DQorCXJldHVybiAwOw0KK30NCisNCitWT19VMzIJY21uTWVtQ2hlY2sgKFZPX1MzMiB1SUQsIFZPX1BUUiBwQnVmZmVyLCBWT19VMzIgdVNpemUpDQorew0KKwlyZXR1cm4gMDsNCit9DQorDQorVk9fUzMyIGNtbk1lbUNvbXBhcmUgKFZPX1MzMiB1SUQsIFZPX1BUUiBwQnVmZmVyMSwgVk9fUFRSIHBCdWZmZXIyLCBWT19VMzIgdVNpemUpDQorew0KKwlyZXR1cm4gbWVtY21wKHBCdWZmZXIxLCBwQnVmZmVyMiwgdVNpemUpOw0KK30NCisNCitWT19VMzIJY21uTWVtTW92ZSAoVk9fUzMyIHVJRCwgVk9fUFRSIHBEZXN0LCBWT19QVFIgcFNvdXJjZSwgVk9fVTMyIHVTaXplKQ0KK3sNCisJbWVtbW92ZSAocERlc3QsIHBTb3VyY2UsIHVTaXplKTsNCisJcmV0dXJuIDA7DQorfQ0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvY29udm9sdmUuYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvY29udm9sdmUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NmM3NGQ2Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9jb252b2x2ZS5jCkBAIC0wLDAgKzEsMTA5IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAgICAgICBGaWxlOiBjb252b2x2ZS5jDQorDQorCSAgIERlc2NyaXB0aW9uOlBlcmZvcm0gdGhlIGNvbnZvbHV0aW9uIGJldHdlZW4gdHdvIHZlY3RvcnMgeFtdIGFuZCBoW10NCisJICAgICAgICAgICAgICAgYW5kIHdyaXRlIHRoZSByZXN1bHQgaW4gdGhlIHZlY3RvciB5W10NCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2luY2x1ZGUgInR5cGVkZWYuaCINCisjaW5jbHVkZSAiYmFzaWNfb3AuaCINCisNCit2b2lkIENvbnZvbHZlICgNCisJCVdvcmQxNiB4W10sICAgICAgICAvKiAoaSkgICAgIDogaW5wdXQgdmVjdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBoW10sICAgICAgICAvKiAoaSkgICAgIDogaW1wdWxzZSByZXNwb25zZSAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiB5W10sICAgICAgICAvKiAobykgICAgIDogb3V0cHV0IHZlY3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBMICAgICAgICAgICAvKiAoaSkgICAgIDogdmVjdG9yIHNpemUgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJICAgICAgKQ0KK3sNCisJV29yZDMyICBpLCBuOw0KKwlXb3JkMTYgKnRtcEgsKnRtcFg7DQorCVdvcmQzMiBzOw0KKwlmb3IgKG4gPSAwOyBuIDwgNjQ7KQ0KKwl7DQorCQl0bXBIID0gaCtuOw0KKwkJdG1wWCA9IHg7DQorCQlpPW4rMTsNCisJCXMgPSB2b19tdWx0MzIoKCp0bXBYKyspLCAoKnRtcEgtLSkpO2ktLTsNCisJCXdoaWxlKGk+MCkNCisJCXsNCisJCQlzICs9IHZvX211bHQzMigoKnRtcFgrKyksICgqdG1wSC0tKSk7DQorCQkJcyArPSB2b19tdWx0MzIoKCp0bXBYKyspLCAoKnRtcEgtLSkpOw0KKwkJCXMgKz0gdm9fbXVsdDMyKCgqdG1wWCsrKSwgKCp0bXBILS0pKTsNCisJCQlzICs9IHZvX211bHQzMigoKnRtcFgrKyksICgqdG1wSC0tKSk7DQorCQkJaSAtPSA0Ow0KKwkJfQ0KKwkJeVtuXSA9ICgoczw8MSkgKyAweDgwMDApPj4xNjsgICANCisJCW4rKzsNCisNCisJCXRtcEggPSBoK247DQorCQl0bXBYID0geDsNCisJCWk9bisxOw0KKwkJcyA9ICB2b19tdWx0MzIoKCp0bXBYKyspLCAoKnRtcEgtLSkpO2ktLTsNCisJCXMgKz0gdm9fbXVsdDMyKCgqdG1wWCsrKSwgKCp0bXBILS0pKTtpLS07DQorDQorCQl3aGlsZShpPjApDQorCQl7DQorCQkJcyArPSB2b19tdWx0MzIoKCp0bXBYKyspLCAoKnRtcEgtLSkpOw0KKwkJCXMgKz0gdm9fbXVsdDMyKCgqdG1wWCsrKSwgKCp0bXBILS0pKTsNCisJCQlzICs9IHZvX211bHQzMigoKnRtcFgrKyksICgqdG1wSC0tKSk7DQorCQkJcyArPSB2b19tdWx0MzIoKCp0bXBYKyspLCAoKnRtcEgtLSkpOw0KKwkJCWkgLT0gNDsNCisJCX0NCisJCXlbbl0gPSAoKHM8PDEpICsgMHg4MDAwKT4+MTY7ICAgIA0KKwkJbisrOw0KKw0KKwkJdG1wSCA9IGgrbjsNCisJCXRtcFggPSB4Ow0KKwkJaT1uKzE7DQorCQlzID0gIHZvX211bHQzMigoKnRtcFgrKyksICgqdG1wSC0tKSk7aS0tOw0KKwkJcyArPSB2b19tdWx0MzIoKCp0bXBYKyspLCAoKnRtcEgtLSkpO2ktLTsNCisJCXMgKz0gdm9fbXVsdDMyKCgqdG1wWCsrKSwgKCp0bXBILS0pKTtpLS07DQorDQorCQl3aGlsZShpPjApDQorCQl7DQorCQkJcyArPSB2b19tdWx0MzIoKCp0bXBYKyspLCAoKnRtcEgtLSkpOw0KKwkJCXMgKz0gdm9fbXVsdDMyKCgqdG1wWCsrKSwgKCp0bXBILS0pKTsNCisJCQlzICs9IHZvX211bHQzMigoKnRtcFgrKyksICgqdG1wSC0tKSk7DQorCQkJcyArPSB2b19tdWx0MzIoKCp0bXBYKyspLCAoKnRtcEgtLSkpOw0KKwkJCWkgLT0gNDsNCisJCX0NCisJCXlbbl0gPSAoKHM8PDEpICsgMHg4MDAwKT4+MTY7ICAgDQorCQluKys7DQorDQorCQlzID0gMDsNCisJCXRtcEggPSBoK247DQorCQl0bXBYID0geDsNCisJCWk9bisxOw0KKwkJd2hpbGUoaT4wKQ0KKwkJew0KKwkJCXMgKz0gdm9fbXVsdDMyKCgqdG1wWCsrKSwgKCp0bXBILS0pKTsNCisJCQlzICs9IHZvX211bHQzMigoKnRtcFgrKyksICgqdG1wSC0tKSk7DQorCQkJcyArPSB2b19tdWx0MzIoKCp0bXBYKyspLCAoKnRtcEgtLSkpOw0KKwkJCXMgKz0gdm9fbXVsdDMyKCgqdG1wWCsrKSwgKCp0bXBILS0pKTsNCisJCQlpIC09IDQ7DQorCQl9DQorCQl5W25dID0gKChzPDwxKSArIDB4ODAwMCk+PjE2OyAgIA0KKwkJbisrOyAgICAgICAgDQorCX0NCisJcmV0dXJuOw0KK30NCisNCisNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2Nvcl9oX3guYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvY29yX2hfeC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjMmU5ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2Nvcl9oX3guYwpAQCAtMCwwICsxLDEyNyBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqICAgICAgIEZpbGU6IGNvcl9oX3guYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqCSAgIERlc2NyaXB0aW9uOkNvbXB1dGUgY29ycmVsYXRpb24gYmV0d2VlbiB0YXJnZXQgInhbXSIgYW5kICJoW10iICAqDQorKgkgICAgICAgICAgICAgICBEZXNpZ25lZCBmb3IgY29kZWJvb2sgc2VhcmNoICgyNCBwdWxzZXMsIDQgdHJhY2tzLCAgKiANCisqCQkJCSAgIDQgcHVsc2VzIHBlciB0cmFjaywgMTYgcG9zaXRpb25zIGluIGVhY2ggdHJhY2spIHRvICAqDQorKgkJCQkgICBhdm9pZCBzYXR1cmF0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaW5jbHVkZSAidHlwZWRlZi5oIg0KKyNpbmNsdWRlICJiYXNpY19vcC5oIg0KKyNpbmNsdWRlICJtYXRoX29wLmgiDQorDQorI2RlZmluZSBMX1NVQkZSICAgNjQNCisjZGVmaW5lIE5CX1RSQUNLICA0DQorI2RlZmluZSBTVEVQICAgICAgNA0KKw0KK3ZvaWQgY29yX2hfeCgNCisJCVdvcmQxNiBoW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFExMiA6IGltcHVsc2UgcmVzcG9uc2Ugb2Ygd2VpZ2h0ZWQgc3ludGhlc2lzIGZpbHRlciAqLw0KKwkJV29yZDE2IHhbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTAgIDogdGFyZ2V0IHZlY3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgZG5bXSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSA8MTJiaXQgOiBjb3JyZWxhdGlvbiBiZXR3ZWVuIHRhcmdldCBhbmQgaFtdICAgICAgICAgKi8NCisJICAgICkNCit7DQorCVdvcmQzMiBpLCBqOw0KKwlXb3JkMzIgTF90bXAsIHkzMltMX1NVQkZSXSwgTF90b3Q7DQorCVdvcmQxNiAqcDEsICpwMjsNCisJV29yZDMyICpwMzsNCisJV29yZDMyIExfbWF4LCBMX21heDEsIExfbWF4MiwgTF9tYXgzOw0KKwkvKiBmaXJzdCBrZWVwIHRoZSByZXN1bHQgb24gMzIgYml0cyBhbmQgZmluZCBhYnNvbHV0ZSBtYXhpbXVtICovDQorCUxfdG90ICA9IDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwlMX21heCAgPSAwOyANCisJTF9tYXgxID0gMDsNCisJTF9tYXgyID0gMDsNCisJTF9tYXgzID0gMDsNCisJZm9yIChpID0gMDsgaSA8IExfU1VCRlI7IGkgKz0gU1RFUCkNCisJew0KKwkJTF90bXAgPSAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIDEgLT4gdG8gYXZvaWQgbnVsbCBkbltdICovDQorCQlwMSA9ICZ4W2ldOw0KKwkJcDIgPSAmaFswXTsNCisJCWZvciAoaiA9IGk7IGogPCBMX1NVQkZSOyBqKyspDQorCQkJTF90bXAgKz0gdm9fTF9tdWx0KCpwMSsrLCAqcDIrKyk7DQorDQorCQl5MzJbaV0gPSBMX3RtcDsgICAgICAgICAgICAgICANCisJCUxfdG1wID0gKExfdG1wID4gMCk/IExfdG1wOi1MX3RtcDsNCisJCWlmKExfdG1wID4gTF9tYXgpDQorCQl7DQorCQkJTF9tYXggPSBMX3RtcDsgICAgICAgICAgICAgDQorCQl9DQorDQorCQlMX3RtcCA9IDFMOw0KKwkJcDEgPSAmeFtpKzFdOw0KKwkJcDIgPSAmaFswXTsNCisJCWZvciAoaiA9IGkrMTsgaiA8IExfU1VCRlI7IGorKykNCisJCQlMX3RtcCArPSB2b19MX211bHQoKnAxKyssICpwMisrKTsNCisNCisJCXkzMltpKzFdID0gTF90bXA7ICAgICAgICAgICAgICAgDQorCQlMX3RtcCA9IChMX3RtcCA+IDApPyBMX3RtcDotTF90bXA7DQorCQlpZihMX3RtcCA+IExfbWF4MSkNCisJCXsNCisJCQlMX21heDEgPSBMX3RtcDsgICAgICAgICAgICAgDQorCQl9DQorDQorCQlMX3RtcCA9IDE7DQorCQlwMSA9ICZ4W2krMl07DQorCQlwMiA9ICZoWzBdOw0KKwkJZm9yIChqID0gaSsyOyBqIDwgTF9TVUJGUjsgaisrKQ0KKwkJCUxfdG1wICs9IHZvX0xfbXVsdCgqcDErKywgKnAyKyspOw0KKw0KKwkJeTMyW2krMl0gPSBMX3RtcDsgICAgICAgICAgICAgICANCisJCUxfdG1wID0gKExfdG1wID4gMCk/IExfdG1wOi1MX3RtcDsNCisJCWlmKExfdG1wID4gTF9tYXgyKQ0KKwkJew0KKwkJCUxfbWF4MiA9IExfdG1wOyAgICAgICAgICAgICANCisJCX0NCisNCisJCUxfdG1wID0gMTsNCisJCXAxID0gJnhbaSszXTsNCisJCXAyID0gJmhbMF07DQorCQlmb3IgKGogPSBpKzM7IGogPCBMX1NVQkZSOyBqKyspDQorCQkJTF90bXAgKz0gdm9fTF9tdWx0KCpwMSsrLCAqcDIrKyk7DQorDQorCQl5MzJbaSszXSA9IExfdG1wOyAgICAgICAgICAgICAgIA0KKwkJTF90bXAgPSAoTF90bXAgPiAwKT8gTF90bXA6LUxfdG1wOw0KKwkJaWYoTF90bXAgPiBMX21heDMpDQorCQl7DQorCQkJTF9tYXgzID0gTF90bXA7ICAgICAgICAgICAgIA0KKwkJfQ0KKwl9DQorCS8qIHRvdCArPSAzKm1heCAvIDggKi8NCisJTF9tYXggPSAoKExfbWF4ICsgTF9tYXgxICsgTF9tYXgyICsgTF9tYXgzKSA+PiAyKTsNCisJTF90b3QgPSB2b19MX2FkZChMX3RvdCwgTF9tYXgpOyAgICAgICAvKiArbWF4LzQgKi8NCisJTF90b3QgPSB2b19MX2FkZChMX3RvdCwgKExfbWF4ID4+IDEpKTsgIC8qICttYXgvOCAqLw0KKw0KKwkvKiBGaW5kIHRoZSBudW1iZXIgb2YgcmlnaHQgc2hpZnRzIHRvIGRvIG9uIHkzMltdIHNvIHRoYXQgICAgKi8NCisJLyogNi4wIHggc3VtYXRpb24gb2YgbWF4IG9mIGRuW10gaW4gZWFjaCB0cmFjayBub3Qgc2F0dXJhdGUuICovDQorCWogPSBub3JtX2woTF90b3QpIC0gNDsgICAgICAgICAgICAgLyogNCAtPiAxNiB4IHRvdCAqLw0KKwlwMSA9IGRuOw0KKwlwMyA9IHkzMjsNCisJZm9yIChpID0gMDsgaSA8IExfU1VCRlI7IGkrPTQpDQorCXsNCisJCSpwMSsrID0gdm9fcm91bmQoTF9zaGwoKnAzKyssIGopKTsNCisJCSpwMSsrID0gdm9fcm91bmQoTF9zaGwoKnAzKyssIGopKTsNCisJCSpwMSsrID0gdm9fcm91bmQoTF9zaGwoKnAzKyssIGopKTsNCisJCSpwMSsrID0gdm9fcm91bmQoTF9zaGwoKnAzKyssIGopKTsNCisJfQ0KKwlyZXR1cm47DQorfQ0KKw0KKw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvZGVjaW01NC5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9kZWNpbTU0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDI5YTdkNgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvZGVjaW01NC5jCkBAIC0wLDAgKzEsMTQ2IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogICAgICBGaWxlOiBkZWNpbTU0LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyoJICAgRGVzY3JpcHRpb246RGVjaW1hdGlvbiBvZiAxNmtIeiBzaWduYWwgdG8gMTIuOGtIeiAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaW5jbHVkZSAidHlwZWRlZi5oIg0KKyNpbmNsdWRlICJiYXNpY19vcC5oIg0KKyNpbmNsdWRlICJhY2VscC5oIg0KKyNpbmNsdWRlICJjbnN0LmgiDQorDQorI2RlZmluZSBGQUM1ICAgNQ0KKyNkZWZpbmUgRE9XTl9GQUMgIDI2MjE1ICAgICAgICAgICAgICAgICAgICAvKiA0LzUgaW4gUTE1ICovDQorDQorI2RlZmluZSBOQl9DT0VGX0RPV04gIDE1DQorDQorLyogTG9jYWwgZnVuY3Rpb25zICovDQorc3RhdGljIHZvaWQgRG93bl9zYW1wKA0KKwkJV29yZDE2ICogc2lnLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dDogIHNpZ25hbCB0byBkb3duc2FtcGxpbmcgICovDQorCQlXb3JkMTYgKiBzaWdfZCwgICAgICAgICAgICAgICAgICAgICAgIC8qIG91dHB1dDogZG93bnNhbXBsZWQgc2lnbmFsICAgICAgKi8NCisJCVdvcmQxNiBMX2ZyYW1lX2QgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQ6ICBsZW5ndGggb2Ygb3V0cHV0ICAgICAgICAqLw0KKwkJKTsNCisNCisvKiAxLzUgcmVzb2x1dGlvbiBpbnRlcnBvbGF0aW9uIGZpbHRlciAgKGluIFExNCkgICovDQorLyogLTEuNWRCIEAgNmtIeiwgLTZkQiBAIDYuNGtIeiwgLTEwZEIgQCA2LjZrSHosIC0yMGRCIEAgNi45a0h6LCAtMjVkQiBAIDdrSHosIC01NWRCIEAgOGtIeiAqLw0KKw0KK3N0YXRpYyBXb3JkMTYgZmlyX2Rvd24xWzRdWzMwXSA9DQorew0KKwl7LTUsIDI0LCAtNTAsIDU0LCAwLCAtMTI4LCAyOTQsIC00MDgsIDM0NCwgMCwgLTY0NywgMTUwNSwgLTIzNzksIDMwMzQsIDEzMTA3LCAzMDM0LCAtMjM3OSwgMTUwNSwgLTY0NywgMCwgMzQ0LCAtNDA4LA0KKwkyOTQsIC0xMjgsIDAsIDU0LCAtNTAsIDI0LCAtNSwgMH0sDQorDQorCXstNiwgMTksIC0yNiwgMCwgNzcsIC0xODgsIDI3MCwgLTIzMywgMCwgNDM0LCAtOTY0LCAxMzY2LCAtMTI5MywgMCwgMTIyNTQsIDY1NzUsIC0yNzQ2LCAxMDMwLCAwLCAtNTA3LCA2MDEsIC00NDEsDQorCTE5OCwgMCwgLTk1LCA5OSwgLTU4LCAxOCwgMCwgLTF9LA0KKw0KKwl7LTMsIDksIDAsIC00MSwgMTExLCAtMTcwLCAxNTMsIDAsIC0yOTUsIDY0OSwgLTg4OCwgNzcwLCAwLCAtMTk5NywgOTg5NCwgOTg5NCwgLTE5OTcsIDAsIDc3MCwgLTg4OCwgNjQ5LCAtMjk1LCAwLA0KKwkxNTMsIC0xNzAsIDExMSwgLTQxLCAwLCA5LCAtM30sDQorDQorCXstMSwgMCwgMTgsIC01OCwgOTksIC05NSwgMCwgMTk4LCAtNDQxLCA2MDEsIC01MDcsIDAsIDEwMzAsIC0yNzQ2LCA2NTc1LCAxMjI1NCwgMCwgLTEyOTMsIDEzNjYsIC05NjQsIDQzNCwgMCwNCisJLTIzMywgMjcwLCAtMTg4LCA3NywgMCwgLTI2LCAxOSwgLTZ9DQorfTsNCisNCit2b2lkIEluaXRfRGVjaW1fMTJrOCgNCisJCVdvcmQxNiBtZW1bXSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogb3V0cHV0OiBtZW1vcnkgKDIqTkJfQ09FRl9ET1dOKSBzZXQgdG8gemVyb3MgKi8NCisJCSkNCit7DQorCVNldF96ZXJvKG1lbSwgMiAqIE5CX0NPRUZfRE9XTik7DQorCXJldHVybjsNCit9DQorDQordm9pZCBEZWNpbV8xMms4KA0KKwkJV29yZDE2IHNpZzE2a1tdLCAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dDogIHNpZ25hbCB0byBkb3duc2FtcGxpbmcgICovDQorCQlXb3JkMTYgbGcsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0OiAgbGVuZ3RoIG9mIGlucHV0ICAgICAgICAgKi8NCisJCVdvcmQxNiBzaWcxMms4W10sICAgICAgICAgICAgICAgICAgICAgLyogb3V0cHV0OiBkZWNpbWF0ZWQgc2lnbmFsICAgICAgICAqLw0KKwkJV29yZDE2IG1lbVtdICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbi9vdXQ6IG1lbW9yeSAoMipOQl9DT0VGX0RPV04pICovDQorCSAgICAgICApDQorew0KKwlXb3JkMTYgbGdfZG93bjsNCisJV29yZDE2IHNpZ25hbFtMX0ZSQU1FMTZrICsgKDIgKiBOQl9DT0VGX0RPV04pXTsNCisNCisJQ29weShtZW0sIHNpZ25hbCwgMiAqIE5CX0NPRUZfRE9XTik7DQorDQorCUNvcHkoc2lnMTZrLCBzaWduYWwgKyAoMiAqIE5CX0NPRUZfRE9XTiksIGxnKTsNCisNCisJbGdfZG93biA9IChsZyAqIERPV05fRkFDKT4+MTU7DQorDQorCURvd25fc2FtcChzaWduYWwgKyBOQl9DT0VGX0RPV04sIHNpZzEyazgsIGxnX2Rvd24pOw0KKw0KKwlDb3B5KHNpZ25hbCArIGxnLCBtZW0sIDIgKiBOQl9DT0VGX0RPV04pOw0KKw0KKwlyZXR1cm47DQorfQ0KKw0KK3N0YXRpYyB2b2lkIERvd25fc2FtcCgNCisJCVdvcmQxNiAqIHNpZywgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQ6ICBzaWduYWwgdG8gZG93bnNhbXBsaW5nICAqLw0KKwkJV29yZDE2ICogc2lnX2QsICAgICAgICAgICAgICAgICAgICAgICAvKiBvdXRwdXQ6IGRvd25zYW1wbGVkIHNpZ25hbCAgICAgICovDQorCQlXb3JkMTYgTF9mcmFtZV9kICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0OiAgbGVuZ3RoIG9mIG91dHB1dCAgICAgICAgKi8NCisJCSkNCit7DQorCVdvcmQzMiBpLCBqLCBmcmFjLCBwb3M7DQorCVdvcmQxNiAqeCwgKnk7DQorCVdvcmQzMiBMX3N1bTsNCisNCisJcG9zID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBwb3NpdGlvbiBpcyBpbiBRMiAtPiAxLzQgcmVzb2x1dGlvbiAgKi8NCisJZm9yIChqID0gMDsgaiA8IExfZnJhbWVfZDsgaisrKQ0KKwl7DQorCQlpID0gKHBvcyA+PiAyKTsgICAgICAgICAgICAgICAgICAgLyogaW50ZWdlciBwYXJ0ICAgICAqLw0KKwkJZnJhYyA9IHBvcyAmIDM7ICAgICAgICAgICAgICAgICAgIC8qIGZyYWN0aW9uYWwgcGFydCAqLw0KKwkJeCA9IHNpZyArIGkgLSBOQl9DT0VGX0RPV04gKyAxOw0KKwkJeSA9IChXb3JkMTYgKikoZmlyX2Rvd24xICsgZnJhYyk7DQorDQorCQlMX3N1bSA9IHZvX211bHQzMigoKngrKyksKCp5KyspKTsNCisJCUxfc3VtICs9IHZvX211bHQzMigoKngrKyksKCp5KyspKTsNCisJCUxfc3VtICs9IHZvX211bHQzMigoKngrKyksKCp5KyspKTsNCisJCUxfc3VtICs9IHZvX211bHQzMigoKngrKyksKCp5KyspKTsNCisJCUxfc3VtICs9IHZvX211bHQzMigoKngrKyksKCp5KyspKTsNCisJCUxfc3VtICs9IHZvX211bHQzMigoKngrKyksKCp5KyspKTsNCisJCUxfc3VtICs9IHZvX211bHQzMigoKngrKyksKCp5KyspKTsNCisJCUxfc3VtICs9IHZvX211bHQzMigoKngrKyksKCp5KyspKTsNCisJCUxfc3VtICs9IHZvX211bHQzMigoKngrKyksKCp5KyspKTsNCisJCUxfc3VtICs9IHZvX211bHQzMigoKngrKyksKCp5KyspKTsNCisJCUxfc3VtICs9IHZvX211bHQzMigoKngrKyksKCp5KyspKTsNCisJCUxfc3VtICs9IHZvX211bHQzMigoKngrKyksKCp5KyspKTsNCisJCUxfc3VtICs9IHZvX211bHQzMigoKngrKyksKCp5KyspKTsNCisJCUxfc3VtICs9IHZvX211bHQzMigoKngrKyksKCp5KyspKTsNCisJCUxfc3VtICs9IHZvX211bHQzMigoKngrKyksKCp5KyspKTsNCisJCUxfc3VtICs9IHZvX211bHQzMigoKngrKyksKCp5KyspKTsNCisJCUxfc3VtICs9IHZvX211bHQzMigoKngrKyksKCp5KyspKTsNCisJCUxfc3VtICs9IHZvX211bHQzMigoKngrKyksKCp5KyspKTsNCisJCUxfc3VtICs9IHZvX211bHQzMigoKngrKyksKCp5KyspKTsNCisJCUxfc3VtICs9IHZvX211bHQzMigoKngrKyksKCp5KyspKTsNCisJCUxfc3VtICs9IHZvX211bHQzMigoKngrKyksKCp5KyspKTsNCisJCUxfc3VtICs9IHZvX211bHQzMigoKngrKyksKCp5KyspKTsNCisJCUxfc3VtICs9IHZvX211bHQzMigoKngrKyksKCp5KyspKTsNCisJCUxfc3VtICs9IHZvX211bHQzMigoKngrKyksKCp5KyspKTsNCisJCUxfc3VtICs9IHZvX211bHQzMigoKngrKyksKCp5KyspKTsNCisJCUxfc3VtICs9IHZvX211bHQzMigoKngrKyksKCp5KyspKTsNCisJCUxfc3VtICs9IHZvX211bHQzMigoKngrKyksKCp5KyspKTsNCisJCUxfc3VtICs9IHZvX211bHQzMigoKngrKyksKCp5KyspKTsNCisJCUxfc3VtICs9IHZvX211bHQzMigoKngrKyksKCp5KyspKTsNCisJCUxfc3VtICs9IHZvX211bHQzMigoKngpLCgqeSkpOw0KKw0KKwkJTF9zdW0gPSBMX3NobDIoTF9zdW0sIDIpOyAgICAgICAgICAgICAgDQorCQlzaWdfZFtqXSA9IGV4dHJhY3RfaChMX2FkZChMX3N1bSwgMHg4MDAwKSk7IA0KKwkJcG9zICs9IEZBQzU7ICAgICAgICAgICAgICAvKiBwb3MgKyA1LzQgKi8NCisJfQ0KKwlyZXR1cm47DQorfQ0KKw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvZGVlbXBoLmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2RlZW1waC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhZDUyOGQKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2RlZW1waC5jCkBAIC0wLDAgKzEsMTE3IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogICAgICAgRmlsZTogZGVlbXBoLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyoJICAgRGVzY3JpcHRpb246ZmlsdGVyaW5nIHRocm91Z2ggMS8oMS1tdSB6XiAtMSkgICAgICAgICAgICAgICAgICAgICoNCisqCSAgICAgICAgICAgICAgIERlZW1waDIgLS0+IHNpZ25hbCBpcyBkaXZpZGVkIGJ5IDIgICAgICAgICAgICAgICAgICAqDQorKgkJCQkgICBEZWVtcGhfMzIgLS0+IGZvciAzMiBiaXRzIHNpZ25hbC4gICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaW5jbHVkZSAidHlwZWRlZi5oIg0KKyNpbmNsdWRlICJiYXNpY19vcC5oIg0KKyNpbmNsdWRlICJtYXRoX29wLmgiDQorDQordm9pZCBEZWVtcGgoDQorCQlXb3JkMTYgeFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpL28pICAgOiBpbnB1dCBzaWduYWwgb3ZlcndyaXR0ZW4gYnkgdGhlIG91dHB1dCAqLw0KKwkJV29yZDE2IG11LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTE1IDogZGVlbXBoYXNpcyBmYWN0b3IgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IHZlY3RvciBzaXplICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgKiBtZW0gICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpL28pICAgOiBtZW1vcnkgKHlbLTFdKSAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkgICApDQorew0KKwlXb3JkMzIgaTsNCisJV29yZDMyIExfdG1wOw0KKw0KKwlMX3RtcCA9IExfZGVwb3NpdF9oKHhbMF0pOw0KKwlMX3RtcCA9IExfbWFjKExfdG1wLCAqbWVtLCBtdSk7DQorCXhbMF0gPSB2b19yb3VuZChMX3RtcCk7ICAgICAgICAgICAgICAgICAgIA0KKw0KKwlmb3IgKGkgPSAxOyBpIDwgTDsgaSsrKQ0KKwl7DQorCQlMX3RtcCA9IExfZGVwb3NpdF9oKHhbaV0pOw0KKwkJTF90bXAgPSBMX21hYyhMX3RtcCwgeFtpIC0gMV0sIG11KTsNCisJCXhbaV0gPSB2b3JvdW5kKExfdG1wKTsgICAgICAgICAgICAgICANCisJfQ0KKw0KKwkqbWVtID0geFtMIC0gMV07ICAgICAgICAgICAgICAgICAgICAgICANCisNCisJcmV0dXJuOw0KK30NCisNCisNCit2b2lkIERlZW1waDIoDQorCQlXb3JkMTYgeFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpL28pICAgOiBpbnB1dCBzaWduYWwgb3ZlcndyaXR0ZW4gYnkgdGhlIG91dHB1dCAqLw0KKwkJV29yZDE2IG11LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTE1IDogZGVlbXBoYXNpcyBmYWN0b3IgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IHZlY3RvciBzaXplICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgKiBtZW0gICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpL28pICAgOiBtZW1vcnkgKHlbLTFdKSAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkgICAgKQ0KK3sNCisJV29yZDMyIGk7DQorCVdvcmQzMiBMX3RtcDsNCisJTF90bXAgPSB4WzBdIDw8IDE1Ow0KKwlMX3RtcCArPSAoKCptZW0pICogbXUpPDwxOw0KKwl4WzBdID0gKExfdG1wICsgMHg4MDAwKT4+MTY7ICAgICAgICAgICAgICAgICAgIA0KKwlmb3IgKGkgPSAxOyBpIDwgTDsgaSsrKQ0KKwl7DQorCQlMX3RtcCA9IHhbaV0gPDwgMTU7DQorCQlMX3RtcCArPSAoeFtpIC0gMV0gKiBtdSk8PDE7DQorCQl4W2ldID0gKExfdG1wICsgMHg4MDAwKT4+MTY7ICAgICAgICAgICAgICAgDQorCX0NCisJKm1lbSA9IHhbTCAtIDFdOyAgICAgICAgICAgICAgICAgICAgICAgDQorCXJldHVybjsNCit9DQorDQorDQordm9pZCBEZWVtcGhfMzIoDQorCQlXb3JkMTYgeF9oaVtdLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBpbnB1dCBzaWduYWwgKGJpdDMxLi4xNikgKi8NCisJCVdvcmQxNiB4X2xvW10sICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IGlucHV0IHNpZ25hbCAoYml0MTUuLjQpICAqLw0KKwkJV29yZDE2IHlbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgICAgIDogb3V0cHV0IHNpZ25hbCAoeDE2KSAgICAgICovDQorCQlXb3JkMTYgbXUsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRMTUgOiBkZWVtcGhhc2lzIGZhY3RvciAgICAgICAgKi8NCisJCVdvcmQxNiBMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IHZlY3RvciBzaXplICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2ICogbWVtICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaS9vKSAgIDogbWVtb3J5ICh5Wy0xXSkgICAgICAgICAgICovDQorCSAgICAgICkNCit7DQorCVdvcmQxNiBmYWM7DQorCVdvcmQzMiBpLCBMX3RtcDsNCisNCisJZmFjID0gbXUgPj4gMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFExNSAtLT4gUTE0ICovDQorDQorCUxfdG1wID0gTF9kZXBvc2l0X2goeF9oaVswXSk7DQorCUxfdG1wICs9ICh4X2xvWzBdICogOCk8PDE7DQorCUxfdG1wID0gKExfdG1wIDw8IDMpOw0KKwlMX3RtcCArPSAoKCptZW0pICogZmFjKTw8MTsNCisJTF90bXAgPSAoTF90bXAgPDwgMSk7ICAgICAgICAgICAgICAgDQorCXlbMF0gPSAoTF90bXAgKyAweDgwMDApPj4xNjsgICAgICAgICAgICAgICAgICANCisNCisJZm9yIChpID0gMTsgaSA8IEw7IGkrKykNCisJew0KKwkJTF90bXAgPSBMX2RlcG9zaXRfaCh4X2hpW2ldKTsNCisJCUxfdG1wICs9ICh4X2xvW2ldICogOCk8PDE7DQorCQlMX3RtcCA9IChMX3RtcCA8PCAzKTsNCisJCUxfdG1wICs9ICh5W2kgLSAxXSAqIGZhYyk8PDE7DQorCQlMX3RtcCA9IChMX3RtcCA8PCAxKTsgICAgICAgICAgIA0KKwkJeVtpXSA9IChMX3RtcCArIDB4ODAwMCk+PjE2OyAgICAgICAgICAgICAgIA0KKwl9DQorDQorCSptZW0gPSB5W0wgLSAxXTsgICAgICAgICAgICAgICAgICAgICAgIA0KKw0KKwlyZXR1cm47DQorfQ0KKw0KKw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvZHR4LmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2R0eC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyOTIxZWIKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2R0eC5jCkBAIC0wLDAgKzEsNjA1IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogICAgICAgRmlsZTogZHR4LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyoJICAgIERlc2NyaXB0aW9uOkRUWCBmdW5jdGlvbnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaW5jbHVkZSA8c3RkaW8uaD4NCisjaW5jbHVkZSA8c3RkbGliLmg+DQorI2luY2x1ZGUgInR5cGVkZWYuaCINCisjaW5jbHVkZSAiYmFzaWNfb3AuaCINCisjaW5jbHVkZSAib3Blcl8zMmIuaCINCisjaW5jbHVkZSAibWF0aF9vcC5oIg0KKyNpbmNsdWRlICJjbnN0LmgiDQorI2luY2x1ZGUgImFjZWxwLmgiICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHByb3RvdHlwZSBvZiBmdW5jdGlvbnMgICAgKi8NCisjaW5jbHVkZSAiYml0cy5oIg0KKyNpbmNsdWRlICJkdHguaCINCisjaW5jbHVkZSAibG9nMi5oIg0KKyNpbmNsdWRlICJtZW1fYWxpZ24uaCINCisNCitzdGF0aWMgdm9pZCBhdmVyX2lzZl9oaXN0b3J5KA0KKwkJV29yZDE2IGlzZl9vbGRbXSwNCisJCVdvcmQxNiBpbmRpY2VzW10sDQorCQlXb3JkMzIgaXNmX2F2ZXJbXQ0KKwkJKTsNCisNCitzdGF0aWMgdm9pZCBmaW5kX2ZyYW1lX2luZGljZXMoDQorCQlXb3JkMTYgaXNmX29sZF90eFtdLA0KKwkJV29yZDE2IGluZGljZXNbXSwNCisJCWR0eF9lbmNTdGF0ZSAqIHN0DQorCQkpOw0KKw0KK3N0YXRpYyBXb3JkMTYgZGl0aGVyaW5nX2NvbnRyb2woDQorCQlkdHhfZW5jU3RhdGUgKiBzdA0KKwkJKTsNCisNCisvKiBleGNpdGF0aW9uIGVuZXJneSBhZGp1c3RtZW50IGRlcGVuZGluZyBvbiBzcGVlY2ggY29kZXIgbW9kZSB1c2VkLCBRNyAqLw0KK3N0YXRpYyBXb3JkMTYgZW5fYWRqdXN0WzldID0NCit7DQorCTIzMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1vZGUwID0gN2sgIDogIC01LjRkQiAgKi8NCisJMTc5LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbW9kZTEgPSA5ayAgOiAgLTQuMmRCICAqLw0KKwkxNDEsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtb2RlMiA9IDEyayA6ICAtMy4zZEIgICovDQorCTEyOCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1vZGUzID0gMTRrIDogIC0zLjBkQiAgKi8NCisJMTIyLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbW9kZTQgPSAxNmsgOiAgLTIuODVkQiAqLw0KKwkxMTUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtb2RlNSA9IDE4ayA6ICAtMi43ZEIgICovDQorCTExNSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1vZGU2ID0gMjBrIDogIC0yLjdkQiAgKi8NCisJMTE1LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbW9kZTcgPSAyM2sgOiAgLTIuN2RCICAqLw0KKwkxMTUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBtb2RlOCA9IDI0ayA6ICAtMi43ZEIgICovDQorfTsNCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqDQorKiBGdW5jdGlvbiAgICA6IGR0eF9lbmNfaW5pdA0KKyoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCitXb3JkMTYgZHR4X2VuY19pbml0KGR0eF9lbmNTdGF0ZSAqKiBzdCwgV29yZDE2IGlzZl9pbml0W10sIFZPX01FTV9PUEVSQVRPUiAqcE1lbU9QKQ0KK3sNCisJZHR4X2VuY1N0YXRlICpzOw0KKw0KKwlpZiAoc3QgPT0gKGR0eF9lbmNTdGF0ZSAqKikgTlVMTCkNCisJew0KKwkJZnByaW50ZihzdGRlcnIsICJkdHhfZW5jX2luaXQ6IGludmFsaWQgcGFyYW1ldGVyXG4iKTsNCisJCXJldHVybiAtMTsNCisJfQ0KKwkqc3QgPSBOVUxMOw0KKw0KKwkvKiBhbGxvY2F0ZSBtZW1vcnkgKi8NCisJaWYgKChzID0gKGR0eF9lbmNTdGF0ZSAqKW1lbV9tYWxsb2MocE1lbU9QLCBzaXplb2YoZHR4X2VuY1N0YXRlKSwgMzIsIFZPX0lOREVYX0VOQ19BTVJXQikpID09IE5VTEwpDQorCXsNCisJCWZwcmludGYoc3RkZXJyLCAiZHR4X2VuY19pbml0OiBjYW4gbm90IG1hbGxvYyBzdGF0ZSBzdHJ1Y3R1cmVcbiIpOw0KKwkJcmV0dXJuIC0xOw0KKwl9DQorCWR0eF9lbmNfcmVzZXQocywgaXNmX2luaXQpOw0KKwkqc3QgPSBzOw0KKwlyZXR1cm4gMDsNCit9DQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKg0KKyogRnVuY3Rpb24gICAgOiBkdHhfZW5jX3Jlc2V0DQorKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KK1dvcmQxNiBkdHhfZW5jX3Jlc2V0KGR0eF9lbmNTdGF0ZSAqIHN0LCBXb3JkMTYgaXNmX2luaXRbXSkNCit7DQorCVdvcmQzMiBpOw0KKw0KKwlpZiAoc3QgPT0gKGR0eF9lbmNTdGF0ZSAqKSBOVUxMKQ0KKwl7DQorCQlmcHJpbnRmKHN0ZGVyciwgImR0eF9lbmNfcmVzZXQ6IGludmFsaWQgcGFyYW1ldGVyXG4iKTsNCisJCXJldHVybiAtMTsNCisJfQ0KKwlzdC0+aGlzdF9wdHIgPSAwOyAgICAgICAgICAgICAgICAgICAgICANCisJc3QtPmxvZ19lbl9pbmRleCA9IDA7ICAgICAgICAgICAgICAgICAgDQorDQorCS8qIEluaXQgaXNmX2hpc3RbXSAqLw0KKwlmb3IgKGkgPSAwOyBpIDwgRFRYX0hJU1RfU0laRTsgaSsrKQ0KKwl7DQorCQlDb3B5KGlzZl9pbml0LCAmc3QtPmlzZl9oaXN0W2kgKiBNXSwgTSk7DQorCX0NCisJc3QtPmNuZ19zZWVkID0gUkFORE9NX0lOSVRTRUVEOyAgICAgICANCisNCisJLyogUmVzZXQgZW5lcmd5IGhpc3RvcnkgKi8NCisJU2V0X3plcm8oc3QtPmxvZ19lbl9oaXN0LCBEVFhfSElTVF9TSVpFKTsNCisNCisJc3QtPmR0eEhhbmdvdmVyQ291bnQgPSBEVFhfSEFOR19DT05TVDsgDQorCXN0LT5kZWNBbmFFbGFwc2VkQ291bnQgPSAzMjc2NzsgICAgICAgIA0KKw0KKwlmb3IgKGkgPSAwOyBpIDwgMjg7IGkrKykNCisJew0KKwkJc3QtPkRbaV0gPSAwOyAgICAgICAgICAgICAgICAgICAgICANCisJfQ0KKw0KKwlmb3IgKGkgPSAwOyBpIDwgRFRYX0hJU1RfU0laRSAtIDE7IGkrKykNCisJew0KKwkJc3QtPnN1bURbaV0gPSAwOyAgICAgICAgICAgICAgICAgICANCisJfQ0KKw0KKwlyZXR1cm4gMTsNCit9DQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKg0KKyogRnVuY3Rpb24gICAgOiBkdHhfZW5jX2V4aXQNCisqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQordm9pZCBkdHhfZW5jX2V4aXQoZHR4X2VuY1N0YXRlICoqIHN0LCBWT19NRU1fT1BFUkFUT1IgKnBNZW1PUCkNCit7DQorCWlmIChzdCA9PSBOVUxMIHx8ICpzdCA9PSBOVUxMKQ0KKwkJcmV0dXJuOw0KKwkvKiBkZWFsbG9jYXRlIG1lbW9yeSAqLw0KKwltZW1fZnJlZShwTWVtT1AsICpzdCwgVk9fSU5ERVhfRU5DX0FNUldCKTsNCisJKnN0ID0gTlVMTDsNCisJcmV0dXJuOw0KK30NCisNCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqDQorKiBGdW5jdGlvbiAgICA6IGR0eF9lbmMNCisqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorV29yZDE2IGR0eF9lbmMoDQorCQlkdHhfZW5jU3RhdGUgKiBzdCwgICAgICAgICAgICAgICAgICAgIC8qIGkvbyA6IFN0YXRlIHN0cnVjdCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBpc2ZbTV0sICAgICAgICAgICAgICAgICAgICAgICAgLyogbyAgIDogQ04gSVNGIHZlY3RvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2ICogZXhjMiwgICAgICAgICAgICAgICAgICAgICAgICAvKiBvICAgOiBDTiBleGNpdGF0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgKiogcHJtcw0KKwkgICAgICApDQorew0KKwlXb3JkMzIgaSwgajsNCisJV29yZDE2IGluZGljZVs3XTsNCisJV29yZDE2IGxvZ19lbiwgZ2FpbiwgbGV2ZWwsIGV4cCwgZXhwMCwgdG1wOw0KKwlXb3JkMTYgbG9nX2VuX2ludF9lLCBsb2dfZW5faW50X207DQorCVdvcmQzMiBMX2lzZltNXSwgZW5lcjMyLCBsZXZlbDMyOw0KKwlXb3JkMTYgaXNmX29yZGVyWzNdOw0KKwlXb3JkMTYgQ05fZGl0aDsNCisNCisJLyogVk9YIG1vZGUgY29tcHV0YXRpb24gb2YgU0lEIHBhcmFtZXRlcnMgKi8NCisJbG9nX2VuID0gMDsNCisJZm9yIChpID0gMDsgaSA8IE07IGkrKykNCisJew0KKwkJTF9pc2ZbaV0gPSAwOw0KKwl9DQorCS8qIGF2ZXJhZ2UgZW5lcmd5IGFuZCBpc2YgKi8NCisJZm9yIChpID0gMDsgaSA8IERUWF9ISVNUX1NJWkU7IGkrKykNCisJew0KKwkJLyogRGl2aXNpb24gYnkgRFRYX0hJU1RfU0laRSA9IDggaGFzIGJlZW4gZG9uZSBpbiBkdHhfYnVmZmVyLiBsb2dfZW4gaXMgaW4gUTEwICovDQorCQlsb2dfZW4gPSBhZGQobG9nX2VuLCBzdC0+bG9nX2VuX2hpc3RbaV0pOw0KKw0KKwl9DQorCWZpbmRfZnJhbWVfaW5kaWNlcyhzdC0+aXNmX2hpc3QsIGlzZl9vcmRlciwgc3QpOw0KKwlhdmVyX2lzZl9oaXN0b3J5KHN0LT5pc2ZfaGlzdCwgaXNmX29yZGVyLCBMX2lzZik7DQorDQorCWZvciAoaiA9IDA7IGogPCBNOyBqKyspDQorCXsNCisJCWlzZltqXSA9IChXb3JkMTYpKExfaXNmW2pdID4+IDMpOyAgLyogZGl2aWRlIGJ5IDggKi8NCisJfQ0KKw0KKwkvKiBxdWFudGl6ZSBsb2dhcml0aG1pYyBlbmVyZ3kgdG8gNiBiaXRzICgtNiA6IDY2IGRCKSB3aGljaCBjb3JyZXNwb25kcyB0byAtMjoyMiBpbiBsb2cyKEUpLiAgKi8NCisJLyogc3QtPmxvZ19lbl9pbmRleCA9IChzaG9ydCkoIChsb2dfZW4gKyAyLjApICogMi42MjUgKTsgKi8NCisNCisJLyogaW5jcmVhc2UgZHluYW1pY3MgdG8gNyBiaXRzIChROCkgKi8NCisJbG9nX2VuID0gKGxvZ19lbiA+PiAyKTsNCisNCisJLyogQWRkIDIgaW4gUTggPSA1MTIgdG8gZ2V0IGxvZzIoRSkgYmV0d2VlbiAwOjI0ICovDQorCWxvZ19lbiA9IGFkZChsb2dfZW4sIDUxMik7DQorDQorCS8qIE11bHRpcGx5IGJ5IDIuNjI1IHRvIGdldCBmdWxsIDYgYml0IHJhbmdlLiAyLjYyNSA9IDIxNTA0IGluIFExMy4gVGhlIHJlc3VsdCBpcyBpbiBRNiAqLw0KKwlsb2dfZW4gPSBtdWx0KGxvZ19lbiwgMjE1MDQpOw0KKw0KKwkvKiBRdWFudGl6ZSBFbmVyZ3kgKi8NCisJc3QtPmxvZ19lbl9pbmRleCA9IHNocihsb2dfZW4sIDYpOw0KKw0KKwlpZihzdC0+bG9nX2VuX2luZGV4ID4gNjMpDQorCXsNCisJCXN0LT5sb2dfZW5faW5kZXggPSA2MzsNCisJfQ0KKwlpZiAoc3QtPmxvZ19lbl9pbmRleCA8IDApDQorCXsNCisJCXN0LT5sb2dfZW5faW5kZXggPSAwOw0KKwl9DQorCS8qIFF1YW50aXplIElTRnMgKi8NCisJUWlzZl9ucyhpc2YsIGlzZiwgaW5kaWNlKTsNCisNCisNCisJUGFybV9zZXJpYWwoaW5kaWNlWzBdLCA2LCBwcm1zKTsNCisJUGFybV9zZXJpYWwoaW5kaWNlWzFdLCA2LCBwcm1zKTsNCisJUGFybV9zZXJpYWwoaW5kaWNlWzJdLCA2LCBwcm1zKTsNCisJUGFybV9zZXJpYWwoaW5kaWNlWzNdLCA1LCBwcm1zKTsNCisJUGFybV9zZXJpYWwoaW5kaWNlWzRdLCA1LCBwcm1zKTsNCisNCisJUGFybV9zZXJpYWwoKHN0LT5sb2dfZW5faW5kZXgpLCA2LCBwcm1zKTsNCisNCisJQ05fZGl0aCA9IGRpdGhlcmluZ19jb250cm9sKHN0KTsNCisJUGFybV9zZXJpYWwoQ05fZGl0aCwgMSwgcHJtcyk7DQorDQorCS8qIGxldmVsID0gKGZsb2F0KSggcG93KCAyLjBmLCAoZmxvYXQpc3QtPmxvZ19lbl9pbmRleCAvIDIuNjI1IC0gMi4wICkgKTsgICAgKi8NCisJLyogbG9nMihFKSBpbiBROSAobG9nMihFKSBsaWVzIGluIGJldHdlZW4gLTI6MjIpICovDQorCWxvZ19lbiA9IHNobChzdC0+bG9nX2VuX2luZGV4LCAxNSAtIDYpOw0KKw0KKwkvKiBEaXZpZGUgYnkgMi42MjU7IGxvZ19lbiB3aWxsIGJlIGJldHdlZW4gMDoyNCAgKi8NCisJbG9nX2VuID0gbXVsdChsb2dfZW4sIDEyNDgzKTsNCisJLyogdGhlIHJlc3VsdCBjb3JyZXNwb25kcyB0byBsb2cyKGdhaW4pIGluIFExMCAqLw0KKw0KKwkvKiBGaW5kIGludGVnZXIgcGFydCAgKi8NCisJbG9nX2VuX2ludF9lID0gKGxvZ19lbiA+PiAxMCk7DQorDQorCS8qIEZpbmQgZnJhY3Rpb25hbCBwYXJ0ICovDQorCWxvZ19lbl9pbnRfbSA9IChXb3JkMTYpIChsb2dfZW4gJiAweDNmZik7DQorCWxvZ19lbl9pbnRfbSA9IHNobChsb2dfZW5faW50X20sIDUpOw0KKw0KKwkvKiBTdWJ0cmFjdCAyIGZyb20gbG9nX2VuIGluIFE5LCBpLmUgZGl2aWRlIHRoZSBnYWluIGJ5IDIgKGVuZXJneSBieSA0KSAqLw0KKwkvKiBBZGQgMTYgaW4gb3JkZXIgdG8gaGF2ZSB0aGUgcmVzdWx0IG9mIHBvdzIgaW4gUTE2ICovDQorCWxvZ19lbl9pbnRfZSA9IGFkZChsb2dfZW5faW50X2UsIDE2IC0gMSk7DQorDQorCWxldmVsMzIgPSBQb3cyKGxvZ19lbl9pbnRfZSwgbG9nX2VuX2ludF9tKTsgLyogUTE2ICovDQorCWV4cDAgPSBub3JtX2wobGV2ZWwzMik7DQorCWxldmVsMzIgPSAobGV2ZWwzMiA8PCBleHAwKTsgICAgICAgIC8qIGxldmVsIGluIFEzMSAqLw0KKwlleHAwID0gKDE1IC0gZXhwMCk7DQorCWxldmVsID0gZXh0cmFjdF9oKGxldmVsMzIpOyAgICAgICAgICAgIC8qIGxldmVsIGluIFExNSAqLw0KKw0KKwkvKiBnZW5lcmF0ZSB3aGl0ZSBub2lzZSB2ZWN0b3IgKi8NCisJZm9yIChpID0gMDsgaSA8IExfRlJBTUU7IGkrKykNCisJew0KKwkJZXhjMltpXSA9IChSYW5kb20oJihzdC0+Y25nX3NlZWQpKSA+PiA0KTsNCisJfQ0KKw0KKwkvKiBnYWluID0gbGV2ZWwgLyBzcXJ0KGVuZXIpICogc3FydChMX0ZSQU1FKSAqLw0KKw0KKwkvKiBlbmVyZ3kgb2YgZ2VuZXJhdGVkIGV4Y2l0YXRpb24gKi8NCisJZW5lcjMyID0gRG90X3Byb2R1Y3QxMihleGMyLCBleGMyLCBMX0ZSQU1FLCAmZXhwKTsNCisNCisJSXNxcnRfbigmZW5lcjMyLCAmZXhwKTsNCisNCisJZ2FpbiA9IGV4dHJhY3RfaChlbmVyMzIpOw0KKw0KKwlnYWluID0gbXVsdChsZXZlbCwgZ2Fpbik7ICAgICAgICAgICAgICAvKiBnYWluIGluIFExNSAqLw0KKw0KKwlleHAgPSBhZGQoZXhwMCwgZXhwKTsNCisNCisJLyogTXVsdGlwbHkgYnkgc3FydChMX0ZSQU1FKT0xNiwgaS5lLiBzaGlmdCBsZWZ0IGJ5IDQgKi8NCisJZXhwICs9IDQ7DQorDQorCWZvciAoaSA9IDA7IGkgPCBMX0ZSQU1FOyBpKyspDQorCXsNCisJCXRtcCA9IG11bHQoZXhjMltpXSwgZ2Fpbik7ICAgICAgICAgLyogUTAgKiBRMTUgKi8NCisJCWV4YzJbaV0gPSBzaGwodG1wLCBleHApOyANCisJfQ0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKg0KKyogRnVuY3Rpb24gICAgOiBkdHhfYnVmZmVyIFB1cnBvc2UgICAgIDogaGFuZGxlcyB0aGUgRFRYIGJ1ZmZlcg0KKyoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCitXb3JkMTYgZHR4X2J1ZmZlcigNCisJCWR0eF9lbmNTdGF0ZSAqIHN0LCAgICAgICAgICAgICAgICAgICAgLyogaS9vIDogU3RhdGUgc3RydWN0ICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IGlzZl9uZXdbXSwgICAgICAgICAgICAgICAgICAgICAvKiBpICAgOiBpc2YgdmVjdG9yICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMzIgZW5yLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGkgICA6IHJlc2lkdWFsIGVuZXJneSAoaW4gTF9GUkFNRSkgICAgKi8NCisJCVdvcmQxNiBjb2RlY19tb2RlDQorCQkpDQorew0KKwlXb3JkMTYgbG9nX2VuOw0KKw0KKwlXb3JkMTYgbG9nX2VuX2U7DQorCVdvcmQxNiBsb2dfZW5fbTsNCisJc3QtPmhpc3RfcHRyID0gYWRkKHN0LT5oaXN0X3B0ciwgMSk7IA0KKwlpZihzdC0+aGlzdF9wdHIgPT0gRFRYX0hJU1RfU0laRSkNCisJew0KKwkJc3QtPmhpc3RfcHRyID0gMDsNCisJfQ0KKwkvKiBjb3B5IGxzcCB2ZWN0b3IgaW50byBidWZmZXIgKi8NCisJQ29weShpc2ZfbmV3LCAmc3QtPmlzZl9oaXN0W3N0LT5oaXN0X3B0ciAqIE1dLCBNKTsNCisNCisJLyogbG9nX2VuID0gKGZsb2F0KWxvZzEwKGVuciowLjAwNTkzMjIpLyhmbG9hdClsb2cxMCgyLjBmKTsgICovDQorCUxvZzIoZW5yLCAmbG9nX2VuX2UsICZsb2dfZW5fbSk7DQorDQorCS8qIGNvbnZlcnQgZXhwb25lbnQgYW5kIG1hbnRpc3NhIHRvIFdvcmQxNiBRNy4gUTcgaXMgdXNlZCB0byBzaW1wbGlmeSBhdmVyYWdpbmcgaW4gZHR4X2VuYyAqLw0KKwlsb2dfZW4gPSBzaGwobG9nX2VuX2UsIDcpOyAgICAgICAgICAgICAvKiBRNyAqLw0KKwlsb2dfZW4gPSBhZGQobG9nX2VuLCBzaHIobG9nX2VuX20sIDE1IC0gNykpOw0KKw0KKwkvKiBGaW5kIGVuZXJneSBwZXIgc2FtcGxlIGJ5IG11bHRpcGx5aW5nIHdpdGggMC4wMDU5MzIyLCBpLmUgc3VidHJhY3QgbG9nMigxLzAuMDA1OTMyMikgPSA3LjM5NzIyIFRoZQ0KKwkgKiBjb25zdGFudCAwLjAwNTkzMjIgdGFrZXMgaW50byBhY2NvdW50IHdpbmRvd2luZ3MgYW5kIGFuYWx5c2lzIGxlbmd0aCBmcm9tIGF1dG9jb3JyZWxhdGlvbg0KKwkgKiBjb21wdXRhdGlvbnM7IDcuMzk3MjIgaW4gUTcgPSA5NDcgICovDQorCS8qIFN1YnRyYWN0IDMgZEIgPSAwLjk5NjU4IGluIGxvZzIoRSkgPSAxMjcgaW4gUTcuICovDQorCS8qIGxvZ19lbiA9IHN1YiggbG9nX2VuLCA5NDcgKyBlbl9hZGp1c3RbY29kZWNfbW9kZV0gKTsgKi8NCisNCisJLyogRmluZCBlbmVyZ3kgcGVyIHNhbXBsZSAoZGl2aWRlIGJ5IExfRlJBTUU9MjU2KSwgaS5lIHN1YnRyYWN0IGxvZzIoMjU2KSA9IDguMCAgKDEwMjQgaW4gUTcpICovDQorCS8qIFN1YnRyYWN0IDMgZEIgPSAwLjk5NjU4IGluIGxvZzIoRSkgPSAxMjcgaW4gUTcuICovDQorDQorCWxvZ19lbiA9IHN1Yihsb2dfZW4sIGFkZCgxMDI0LCBlbl9hZGp1c3RbY29kZWNfbW9kZV0pKTsNCisNCisJLyogSW5zZXJ0IGludG8gdGhlIGJ1ZmZlciAqLw0KKwlzdC0+bG9nX2VuX2hpc3Rbc3QtPmhpc3RfcHRyXSA9IGxvZ19lbjsNCisJcmV0dXJuIDA7DQorfQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyoNCisqIEZ1bmN0aW9uICAgIDogdHhfZHR4X2hhbmRsZXIgUHVycG9zZSAgICAgOiBhZGRzIGV4dHJhIHNwZWVjaCBoYW5nb3Zlcg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIGFuYWx5emUgc3BlZWNoIG9uDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGRlY29kaW5nIHNpZGUuDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQordm9pZCB0eF9kdHhfaGFuZGxlcihkdHhfZW5jU3RhdGUgKiBzdCwgICAgIC8qIGkvbyA6IFN0YXRlIHN0cnVjdCAgICAgICAgICAgKi8NCisJCVdvcmQxNiB2YWRfZmxhZywgICAgICAgICAgICAgICAgICAgICAgLyogaSAgIDogdmFkIGRlY2lzaW9uICAgICAgICAgICAqLw0KKwkJV29yZDE2ICogdXNlZE1vZGUgICAgICAgICAgICAgICAgICAgICAvKiBpL28gOiBtb2RlIGNoYW5nZWQgb3Igbm90ICAgICovDQorCQkpDQorew0KKw0KKwkvKiB0aGlzIHN0YXRlIG1hY2hpbmUgaXMgaW4gc3luY2ggd2l0aCB0aGUgR1NNRUZSIHR4RHR4IG1hY2hpbmUgICAgICAqLw0KKwlzdC0+ZGVjQW5hRWxhcHNlZENvdW50ID0gYWRkKHN0LT5kZWNBbmFFbGFwc2VkQ291bnQsIDEpOyANCisNCisJaWYgKHZhZF9mbGFnICE9IDApDQorCXsNCisJCXN0LT5kdHhIYW5nb3ZlckNvdW50ID0gRFRYX0hBTkdfQ09OU1Q7DQorCX0gZWxzZQ0KKwl7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBub24tc3BlZWNoICovDQorCQlpZiAoc3QtPmR0eEhhbmdvdmVyQ291bnQgPT0gMCkNCisJCXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogb3V0IG9mIGRlY29kZXIgYW5hbHlzaXMgaGFuZ292ZXIgICovDQorCQkJc3QtPmRlY0FuYUVsYXBzZWRDb3VudCA9IDA7ICAgIA0KKwkJCSp1c2VkTW9kZSA9IE1SRFRYOyAgICAgICAgICAgIA0KKwkJfSBlbHNlDQorCQl7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGluIHBvc3NpYmxlIGFuYWx5c2lzIGhhbmdvdmVyICovDQorCQkJc3QtPmR0eEhhbmdvdmVyQ291bnQgPSBzdWIoc3QtPmR0eEhhbmdvdmVyQ291bnQsIDEpOw0KKw0KKwkJCS8qIGRlY0FuYUVsYXBzZWRDb3VudCArIGR0eEhhbmdvdmVyQ291bnQgPCBEVFhfRUxBUFNFRF9GUkFNRVNfVEhSRVNIICovDQorCQkJaWYgKHN1YihhZGQoc3QtPmRlY0FuYUVsYXBzZWRDb3VudCwgc3QtPmR0eEhhbmdvdmVyQ291bnQpLA0KKwkJCQkJCURUWF9FTEFQU0VEX0ZSQU1FU19USFJFU0gpIDwgMCkNCisJCQl7DQorCQkJCSp1c2VkTW9kZSA9IE1SRFRYOw0KKwkJCQkvKiBpZiBzaG9ydCB0aW1lIHNpbmNlIGRlY29kZXIgdXBkYXRlLCBkbyBub3QgYWRkIGV4dHJhIEhPICovDQorCQkJfQ0KKwkJCS8qIGVsc2Ugb3ZlcnJpZGUgVkFEIGFuZCBzdGF5IGluIHNwZWVjaCBtb2RlICp1c2VkTW9kZSBhbmQgYWRkIGV4dHJhIGhhbmdvdmVyICovDQorCQl9DQorCX0NCisNCisJcmV0dXJuOw0KK30NCisNCisNCisNCitzdGF0aWMgdm9pZCBhdmVyX2lzZl9oaXN0b3J5KA0KKwkJV29yZDE2IGlzZl9vbGRbXSwNCisJCVdvcmQxNiBpbmRpY2VzW10sDQorCQlXb3JkMzIgaXNmX2F2ZXJbXQ0KKwkJKQ0KK3sNCisJV29yZDMyIGksIGosIGs7DQorCVdvcmQxNiBpc2ZfdG1wWzIgKiBNXTsNCisJV29yZDMyIExfdG1wOw0KKw0KKwkvKiBNZW1vcml6ZSBpbiBpc2ZfdG1wW11bXSB0aGUgSVNGIHZlY3RvcnMgdG8gYmUgcmVwbGFjZWQgYnkgKi8NCisJLyogdGhlIG1lZGlhbiBJU0YgdmVjdG9yIHByaW9yIHRvIHRoZSBhdmVyYWdpbmcgICAgICAgICAgICAgICAqLw0KKwlmb3IgKGsgPSAwOyBrIDwgMjsgaysrKQ0KKwl7DQorCQlpZiAoKGluZGljZXNba10gKyAxKSAhPSAwKQ0KKwkJew0KKwkJCWZvciAoaSA9IDA7IGkgPCBNOyBpKyspDQorCQkJew0KKwkJCQlpc2ZfdG1wW2sgKiBNICsgaV0gPSBpc2Zfb2xkW2luZGljZXNba10gKiBNICsgaV07ICAgICAgDQorCQkJCWlzZl9vbGRbaW5kaWNlc1trXSAqIE0gKyBpXSA9IGlzZl9vbGRbaW5kaWNlc1syXSAqIE0gKyBpXTsgICAgDQorCQkJfQ0KKwkJfQ0KKwl9DQorDQorCS8qIFBlcmZvcm0gdGhlIElTRiBhdmVyYWdpbmcgKi8NCisJZm9yIChqID0gMDsgaiA8IE07IGorKykNCisJew0KKwkJTF90bXAgPSAwOyAgICAgICAgICAgICAgICAgICAgICANCisNCisJCWZvciAoaSA9IDA7IGkgPCBEVFhfSElTVF9TSVpFOyBpKyspDQorCQl7DQorCQkJTF90bXAgPSBMX2FkZChMX3RtcCwgTF9kZXBvc2l0X2woaXNmX29sZFtpICogTSArIGpdKSk7DQorCQl9DQorCQlpc2ZfYXZlcltqXSA9IExfdG1wOyAgICAgICAgICAgICAgDQorCX0NCisNCisJLyogUmV0cmlldmUgZnJvbSBpc2ZfdG1wW11bXSB0aGUgSVNGIHZlY3RvcnMgc2F2ZWQgcHJpb3IgdG8gYXZlcmFnaW5nICovDQorCWZvciAoayA9IDA7IGsgPCAyOyBrKyspDQorCXsNCisJCWlmICgoaW5kaWNlc1trXSArIDEpICE9IDApDQorCQl7DQorCQkJZm9yIChpID0gMDsgaSA8IE07IGkrKykNCisJCQl7DQorCQkJCWlzZl9vbGRbaW5kaWNlc1trXSAqIE0gKyBpXSA9IGlzZl90bXBbayAqIE0gKyBpXTsNCisJCQl9DQorCQl9DQorCX0NCisNCisJcmV0dXJuOw0KK30NCisNCitzdGF0aWMgdm9pZCBmaW5kX2ZyYW1lX2luZGljZXMoDQorCQlXb3JkMTYgaXNmX29sZF90eFtdLA0KKwkJV29yZDE2IGluZGljZXNbXSwNCisJCWR0eF9lbmNTdGF0ZSAqIHN0DQorCQkpDQorew0KKwlXb3JkMzIgTF90bXAsIHN1bW1pbiwgc3VtbWF4LCBzdW1tYXgybmQ7DQorCVdvcmQxNiBpLCBqLCB0bXA7DQorCVdvcmQxNiBwdHI7DQorDQorCS8qIFJlbW92ZSB0aGUgZWZmZWN0IG9mIHRoZSBvbGRlc3QgZnJhbWUgZnJvbSB0aGUgY29sdW1uICovDQorCS8qIHN1bSBzdW1EWzAuLkRUWF9ISVNUX1NJWkUtMV0uIHN1bURbRFRYX0hJU1RfU0laRV0gaXMgICAgKi8NCisJLyogbm90IHVwZGF0ZWQgc2luY2UgaXQgd2lsbCBiZSByZW1vdmVkIGxhdGVyLiAgICAgICAgICAgKi8NCisNCisJdG1wID0gRFRYX0hJU1RfU0laRV9NSU5fT05FOyAgICAgICAgICAgDQorCWogPSAtMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwlmb3IgKGkgPSAwOyBpIDwgRFRYX0hJU1RfU0laRV9NSU5fT05FOyBpKyspDQorCXsNCisJCWogPSBhZGQoaiwgdG1wKTsNCisJCXN0LT5zdW1EW2ldID0gTF9zdWIoc3QtPnN1bURbaV0sIHN0LT5EW2pdKTsgICAgIA0KKwkJdG1wID0gc3ViKHRtcCwgMSk7DQorCX0NCisNCisJLyogU2hpZnQgdGhlIGNvbHVtbiBzdW0gc3VtRC4gVGhlIGVsZW1lbnQgc3VtRFtEVFhfSElTVF9TSVpFLTFdICAgICovDQorCS8qIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG9sZGVzdCBmcmFtZSBpcyByZW1vdmVkLiBUaGUgc3VtIG9mICAgICAqLw0KKwkvKiB0aGUgZGlzdGFuY2VzIGJldHdlZW4gdGhlIGxhdGVzdCBpc2YgYW5kIG90aGVyIGlzZnMsICovDQorCS8qIGkuZS4gdGhlIGVsZW1lbnQgc3VtRFswXSwgd2lsbCBiZSBjb21wdXRlZCBkdXJpbmcgdGhpcyBjYWxsLiAqLw0KKwkvKiBIZW5jZSB0aGlzIGVsZW1lbnQgaXMgaW5pdGlhbGl6ZWQgdG8gemVyby4gICAgICAgICAgICAgICAgICAgKi8NCisNCisJZm9yIChpID0gRFRYX0hJU1RfU0laRV9NSU5fT05FOyBpID4gMDsgaS0tKQ0KKwl7DQorCQlzdC0+c3VtRFtpXSA9IHN0LT5zdW1EW2kgLSAxXTsgICAgIA0KKwl9DQorCXN0LT5zdW1EWzBdID0gMDsgICAgICAgICAgICAgICAgICAgICAgIA0KKw0KKwkvKiBSZW1vdmUgdGhlIG9sZGVzdCBmcmFtZSBmcm9tIHRoZSBkaXN0YW5jZSBtYXRyaXguICAgICAgICAgICAqLw0KKwkvKiBOb3RlIHRoYXQgdGhlIGRpc3RhbmNlIG1hdHJpeCBpcyByZXBsYWNlZCBieSBhIG9uZS0gICAgICAgICAqLw0KKwkvKiBkaW1lbnNpb25hbCBhcnJheSB0byBzYXZlIHN0YXRpYyBtZW1vcnkuICAgICAgICAgICAgICAgICAgICAqLw0KKw0KKwl0bXAgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJZm9yIChpID0gMjc7IGkgPj0gMTI7IGkgPSAoV29yZDE2KSAoaSAtIHRtcCkpDQorCXsNCisJCXRtcCA9IGFkZCh0bXAsIDEpOw0KKwkJZm9yIChqID0gdG1wOyBqID4gMDsgai0tKQ0KKwkJew0KKwkJCXN0LT5EW2kgLSBqICsgMV0gPSBzdC0+RFtpIC0gaiAtIHRtcF07ICAgDQorCQl9DQorCX0NCisNCisJLyogQ29tcHV0ZSB0aGUgZmlyc3QgY29sdW1uIG9mIHRoZSBkaXN0YW5jZSBtYXRyaXggRCAgICAgICAgICAgICovDQorCS8qIChzcXVhcmVkIEV1Y2xpZGVhbiBkaXN0YW5jZXMgZnJvbSBpc2YxW10gdG8gaXNmX29sZF90eFtdW10pLiAqLw0KKw0KKwlwdHIgPSBzdC0+aGlzdF9wdHI7ICAgICAgICAgICAgICAgICANCisJZm9yIChpID0gMTsgaSA8IERUWF9ISVNUX1NJWkU7IGkrKykNCisJew0KKwkJLyogQ29tcHV0ZSB0aGUgZGlzdGFuY2UgYmV0d2VlbiB0aGUgbGF0ZXN0IGlzZiBhbmQgdGhlIG90aGVyIGlzZnMuICovDQorCQlwdHIgPSBzdWIocHRyLCAxKTsNCisJCWlmIChwdHIgPCAwKQ0KKwkJew0KKwkJCXB0ciA9IERUWF9ISVNUX1NJWkVfTUlOX09ORTsgICANCisJCX0NCisJCUxfdG1wID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgDQorCQlmb3IgKGogPSAwOyBqIDwgTTsgaisrKQ0KKwkJew0KKwkJCXRtcCA9IHN1Yihpc2Zfb2xkX3R4W3N0LT5oaXN0X3B0ciAqIE0gKyBqXSwgaXNmX29sZF90eFtwdHIgKiBNICsgal0pOw0KKwkJCUxfdG1wID0gTF9tYWMoTF90bXAsIHRtcCwgdG1wKTsNCisJCX0NCisJCXN0LT5EW2kgLSAxXSA9IExfdG1wOyAgICAgICAgICAgDQorDQorCQkvKiBVcGRhdGUgYWxzbyB0aGUgY29sdW1uIHN1bXMuICovDQorCQlzdC0+c3VtRFswXSA9IExfYWRkKHN0LT5zdW1EWzBdLCBzdC0+RFtpIC0gMV0pOyANCisJCXN0LT5zdW1EW2ldID0gTF9hZGQoc3QtPnN1bURbaV0sIHN0LT5EW2kgLSAxXSk7IA0KKwl9DQorDQorCS8qIEZpbmQgdGhlIG1pbmltdW0gYW5kIG1heGltdW0gZGlzdGFuY2VzICovDQorCXN1bW1heCA9IHN0LT5zdW1EWzBdOyAgICAgICAgICAgICAgICAgIA0KKwlzdW1taW4gPSBzdC0+c3VtRFswXTsgICAgICAgICAgICAgICAgICANCisJaW5kaWNlc1swXSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgDQorCWluZGljZXNbMl0gPSAwOyAgICAgICAgICAgICAgICAgICAgICAgIA0KKwlmb3IgKGkgPSAxOyBpIDwgRFRYX0hJU1RfU0laRTsgaSsrKQ0KKwl7DQorCQlpZiAoTF9zdWIoc3QtPnN1bURbaV0sIHN1bW1heCkgPiAwKQ0KKwkJew0KKwkJCWluZGljZXNbMF0gPSBpOyAgICAgICAgICAgICAgICANCisJCQlzdW1tYXggPSBzdC0+c3VtRFtpXTsgICAgICAgICAgDQorCQl9DQorCQlpZiAoTF9zdWIoc3QtPnN1bURbaV0sIHN1bW1pbikgPCAwKQ0KKwkJew0KKwkJCWluZGljZXNbMl0gPSBpOyAgICAgICAgICAgICAgICANCisJCQlzdW1taW4gPSBzdC0+c3VtRFtpXTsgICAgICAgICAgDQorCQl9DQorCX0NCisNCisJLyogRmluZCB0aGUgc2Vjb25kIGxhcmdlc3QgZGlzdGFuY2UgKi8NCisJc3VtbWF4Mm5kID0gLTIxNDc0ODM2NDdMOyAgICAgICAgICAgICAgDQorCWluZGljZXNbMV0gPSAtMTsgICAgICAgICAgICAgICAgICAgICAgIA0KKwlmb3IgKGkgPSAwOyBpIDwgRFRYX0hJU1RfU0laRTsgaSsrKQ0KKwl7DQorCQlpZiAoKExfc3ViKHN0LT5zdW1EW2ldLCBzdW1tYXgybmQpID4gMCkgJiYgKHN1YihpLCBpbmRpY2VzWzBdKSAhPSAwKSkNCisJCXsNCisJCQlpbmRpY2VzWzFdID0gaTsgICAgICAgICAgICAgICAgDQorCQkJc3VtbWF4Mm5kID0gc3QtPnN1bURbaV07ICAgICAgIA0KKwkJfQ0KKwl9DQorDQorCWZvciAoaSA9IDA7IGkgPCAzOyBpKyspDQorCXsNCisJCWluZGljZXNbaV0gPSBzdWIoc3QtPmhpc3RfcHRyLCBpbmRpY2VzW2ldKTsgICAgIA0KKwkJaWYgKGluZGljZXNbaV0gPCAwKQ0KKwkJew0KKwkJCWluZGljZXNbaV0gPSBhZGQoaW5kaWNlc1tpXSwgRFRYX0hJU1RfU0laRSk7ICAgICAgIA0KKwkJfQ0KKwl9DQorDQorCS8qIElmIG1heGltdW0gZGlzdGFuY2UvTUVEX1RIUkVTSCBpcyBzbWFsbGVyIHRoYW4gbWluaW11bSBkaXN0YW5jZSAqLw0KKwkvKiB0aGVuIHRoZSBtZWRpYW4gSVNGIHZlY3RvciByZXBsYWNlbWVudCBpcyBub3QgcGVyZm9ybWVkICAgICAgICAgKi8NCisJdG1wID0gbm9ybV9sKHN1bW1heCk7DQorCXN1bW1heCA9IChzdW1tYXggPDwgdG1wKTsNCisJc3VtbWluID0gKHN1bW1pbiA8PCB0bXApOw0KKwlMX3RtcCA9IExfbXVsdCh2b3JvdW5kKHN1bW1heCksIElOVl9NRURfVEhSRVNIKTsNCisJaWYoTF90bXAgPD0gc3VtbWluKQ0KKwl7DQorCQlpbmRpY2VzWzBdID0gLTE7IA0KKwl9DQorCS8qIElmIHNlY29uZCBsYXJnZXN0IGRpc3RhbmNlL01FRF9USFJFU0ggaXMgc21hbGxlciB0aGFuICAgICAqLw0KKwkvKiBtaW5pbXVtIGRpc3RhbmNlIHRoZW4gdGhlIG1lZGlhbiBJU0YgdmVjdG9yIHJlcGxhY2VtZW50IGlzICAgICovDQorCS8qIG5vdCBwZXJmb3JtZWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJc3VtbWF4Mm5kID0gTF9zaGwoc3VtbWF4Mm5kLCB0bXApOw0KKwlMX3RtcCA9IExfbXVsdCh2b3JvdW5kKHN1bW1heDJuZCksIElOVl9NRURfVEhSRVNIKTsNCisJaWYoTF90bXAgPD0gc3VtbWluKQ0KKwl7DQorCQlpbmRpY2VzWzFdID0gLTE7ICAgICAgICAgICAgICAgICANCisJfQ0KKwlyZXR1cm47DQorfQ0KKw0KK3N0YXRpYyBXb3JkMTYgZGl0aGVyaW5nX2NvbnRyb2woDQorCQlkdHhfZW5jU3RhdGUgKiBzdA0KKwkJKQ0KK3sNCisJV29yZDE2IHRtcCwgbWVhbiwgQ05fZGl0aCwgZ2Fpbl9kaWZmOw0KKwlXb3JkMzIgaSwgSVNGX2RpZmY7DQorDQorCS8qIGRldGVybWluZSBob3cgc3RhdGlvbmFyeSB0aGUgc3BlY3RydW0gb2YgYmFja2dyb3VuZCBub2lzZSBpcyAqLw0KKwlJU0ZfZGlmZiA9IDA7DQorCWZvciAoaSA9IDA7IGkgPCA4OyBpKyspDQorCXsNCisJCUlTRl9kaWZmID0gTF9hZGQoSVNGX2RpZmYsIHN0LT5zdW1EW2ldKTsNCisJfQ0KKwlpZiAoKElTRl9kaWZmID4+IDI2KSA+IDApDQorCXsNCisJCUNOX2RpdGggPSAxOw0KKwl9IGVsc2UNCisJew0KKwkJQ05fZGl0aCA9IDA7DQorCX0NCisNCisJLyogZGV0ZXJtaW5lIGhvdyBzdGF0aW9uYXJ5IHRoZSBlbmVyZ3kgb2YgYmFja2dyb3VuZCBub2lzZSBpcyAqLw0KKwltZWFuID0gMDsNCisJZm9yIChpID0gMDsgaSA8IERUWF9ISVNUX1NJWkU7IGkrKykNCisJew0KKwkJbWVhbiA9IGFkZChtZWFuLCBzdC0+bG9nX2VuX2hpc3RbaV0pOw0KKwl9DQorCW1lYW4gPSAobWVhbiA+PiAzKTsNCisJZ2Fpbl9kaWZmID0gMDsNCisJZm9yIChpID0gMDsgaSA8IERUWF9ISVNUX1NJWkU7IGkrKykNCisJew0KKwkJdG1wID0gYWJzX3Moc3ViKHN0LT5sb2dfZW5faGlzdFtpXSwgbWVhbikpOw0KKwkJZ2Fpbl9kaWZmID0gYWRkKGdhaW5fZGlmZiwgdG1wKTsNCisJfQ0KKwlpZiAoZ2Fpbl9kaWZmID4gR0FJTl9USFIpDQorCXsNCisJCUNOX2RpdGggPSAxOw0KKwl9DQorCXJldHVybiBDTl9kaXRoOw0KK30NCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2dfcGl0Y2guYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvZ19waXRjaC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3MDEzOGUKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2dfcGl0Y2guYwpAQCAtMCwwICsxLDc5IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogICAgICBGaWxlOiBnX3BpdGNoLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyoJICAgRGVzY3JpcHRpb246Q29tcHV0ZSB0aGUgZ2FpbiBvZiBwaXRjaC4gUmVzdWx0IGluIFExMiAgICAgICAgKg0KKyoJICAgICAgICAgICAgICAgaWYoZ2FpbiA8IDApIGdhaW4gPSAwICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyoJCQkJICAgaWYoZ2FpbiA+IDEuMikgZ2FpbiA9IDEuMiAgICAgICAgICAgKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaW5jbHVkZSAidHlwZWRlZi5oIg0KKyNpbmNsdWRlICJiYXNpY19vcC5oIg0KKyNpbmNsdWRlICJtYXRoX29wLmgiDQorDQorV29yZDE2IEdfcGl0Y2goICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSBRMTQgOiBHYWluIG9mIHBpdGNoIGxhZyBzYXR1cmF0ZWQgdG8gMS4yICAgKi8NCisJCVdvcmQxNiB4bltdLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IFBpdGNoIHRhcmdldC4gICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IHkxW10sICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogZmlsdGVyZWQgYWRhcHRpdmUgY29kZWJvb2suICAgICAgICAgICovDQorCQlXb3JkMTYgZ19jb2VmZltdLCAgICAgICAgICAgICAgICAgICAgIC8qIDogQ29ycmVsYXRpb25zIG5lZWQgZm9yIGdhaW4gcXVhbnRpemF0aW9uLiAgICAgKi8NCisJCVdvcmQxNiBMX3N1YmZyICAgICAgICAgICAgICAgICAgICAgICAgLyogOiBMZW5ndGggb2Ygc3ViZnJhbWUuICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkgICAgICApDQorew0KKwlXb3JkMzIgaTsNCisJV29yZDE2IHh5LCB5eSwgZXhwX3h5LCBleHBfeXksIGdhaW47DQorCS8qIENvbXB1dGUgc2NhbGFyIHByb2R1Y3QgPHkxW10seTFbXT4gKi8NCisjaWZkZWYgQVNNX09QVCAgICAgICAgICAgICAgICAgIC8qIGFzbSBvcHRpbWl6YXRpb24gYnJhbmNoICovDQorCS8qIENvbXB1dGUgc2NhbGFyIHByb2R1Y3QgPHhuW10seTFbXT4gKi8NCisJeHkgPSBleHRyYWN0X2goRG90X3Byb2R1Y3QxMl9hc20oeG4sIHkxLCBMX3N1YmZyLCAmZXhwX3h5KSk7DQorCXl5ID0gZXh0cmFjdF9oKERvdF9wcm9kdWN0MTJfYXNtKHkxLCB5MSwgTF9zdWJmciwgJmV4cF95eSkpOw0KKw0KKyNlbHNlDQorCS8qIENvbXB1dGUgc2NhbGFyIHByb2R1Y3QgPHhuW10seTFbXT4gKi8NCisJeHkgPSBleHRyYWN0X2goRG90X3Byb2R1Y3QxMih4biwgeTEsIExfc3ViZnIsICZleHBfeHkpKTsNCisJeXkgPSBleHRyYWN0X2goRG90X3Byb2R1Y3QxMih5MSwgeTEsIExfc3ViZnIsICZleHBfeXkpKTsNCisNCisjZW5kaWYNCisNCisJZ19jb2VmZlswXSA9IHl5OyAgICAgICAgICAgICAgICAgICAgICAgDQorCWdfY29lZmZbMV0gPSBleHBfeXk7ICAgICAgICAgICAgICAgICAgIA0KKwlnX2NvZWZmWzJdID0geHk7ICAgICAgICAgICAgICAgICAgICAgICANCisJZ19jb2VmZlszXSA9IGV4cF94eTsgICAgICAgICAgICAgICAgICAgDQorDQorCS8qIElmICh4eSA8IDApIGdhaW4gPSAwICovDQorCWlmICh4eSA8IDApDQorCQlyZXR1cm4gKChXb3JkMTYpIDApOw0KKw0KKwkvKiBjb21wdXRlIGdhaW4gPSB4eS95eSAqLw0KKw0KKwl4eSA+Pj0gMTsgICAgICAgICAgICAgICAgICAgICAgIC8qIEJlIHN1cmUgeHkgPCB5eSAqLw0KKwlnYWluID0gZGl2X3MoeHksIHl5KTsNCisNCisJaSA9IGV4cF94eTsNCisJaSAtPSBleHBfeXk7DQorDQorCWdhaW4gPSBzaGwoZ2FpbiwgaSk7ICAgICAgICAgICAgICAgICAgIA0KKw0KKwkvKiBpZiAoZ2FpbiA+IDEuMikgZ2FpbiA9IDEuMiAgaW4gUTE0ICovDQorCWlmKGdhaW4gPiAxOTY2MSkNCisJew0KKwkJZ2FpbiA9IDE5NjYxOyAgICAgICAgICAgICAgICAgICAgICANCisJfQ0KKwlyZXR1cm4gKGdhaW4pOw0KK30NCisNCisNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2dwY2xpcC5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9ncGNsaXAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjNmMmY0Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9ncGNsaXAuYwpAQCAtMCwwICsxLDExMCBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqICAgICAgRmlsZTogZ3BjbGlwLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgRGVzY3JpcHRpb246VG8gYXZvaWQgdW5zdGFibGUgc3ludGhlc2lzIG9uIGZyYW1lIGVyYXN1cmUsIHRoZSBnYWluICoNCisqICAgICAgbmVlZCB0byBiZSBsaW1pdGVkKGdhaW4gcGl0Y2ggPCAxLjApIHdoZW4gdGhlIGZvbGxvd2luZyAgICAgICAgICAgICoNCisqICAgICAgY2FzZSBvY2N1cnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgYSByZXNvbmFuY2Ugb24gTFBDIGZpbHRlcihscF9kaXNwIDwgNjBIeikgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgYSBnb29kIHBpdGNoIHByZWRpY3Rpb24gKGxwX2dwID4gMC45NSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogICANCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorI2luY2x1ZGUgInR5cGVkZWYuaCINCisjaW5jbHVkZSAiYmFzaWNfb3AuaCINCisNCisjZGVmaW5lIERJU1RfSVNGX01BWCAgICAzMDcgICAgICAgICAgICAgICAgLyogMTIwIEh6ICg2NDAwSHo9MTYzODQpICovDQorI2RlZmluZSBESVNUX0lTRl9USFJFUyAgMTU0ICAgICAgICAgICAgICAgIC8qIDYwICAgICAoNjQwMEh6PTE2Mzg0KSAqLw0KKyNkZWZpbmUgR0FJTl9QSVRfVEhSRVMgIDE0NzQ2ICAgICAgICAgICAgICAvKiAwLjkgaW4gUTE0ICovDQorI2RlZmluZSBHQUlOX1BJVF9NSU4gICAgOTgzMCAgICAgICAgICAgICAgIC8qIDAuNiBpbiBRMTQgKi8NCisjZGVmaW5lIE0gICAgICAgICAgICAgICAxNg0KKw0KKw0KK3ZvaWQgSW5pdF9ncF9jbGlwKA0KKwkJV29yZDE2IG1lbVtdICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgOiBtZW1vcnkgb2YgZ2FpbiBvZiBwaXRjaCBjbGlwcGluZyBhbGdvcml0aG0gKi8NCisJCSkNCit7DQorCW1lbVswXSA9IERJU1RfSVNGX01BWDsgICAgICAgICAgICAgICAgIA0KKwltZW1bMV0gPSBHQUlOX1BJVF9NSU47ICAgICAgICAgICAgICAgICANCit9DQorDQorDQorV29yZDE2IEdwX2NsaXAoDQorCQlXb3JkMTYgbWVtW10gICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpL28pIDogbWVtb3J5IG9mIGdhaW4gb2YgcGl0Y2ggY2xpcHBpbmcgYWxnb3JpdGhtICovDQorCSAgICAgICkNCit7DQorCVdvcmQxNiBjbGlwID0gMDsNCisJaWYgKChtZW1bMF0gPCBESVNUX0lTRl9USFJFUykgJiYgKG1lbVsxXSA+IEdBSU5fUElUX1RIUkVTKSkNCisJCWNsaXAgPSAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgDQorDQorCXJldHVybiAoY2xpcCk7DQorfQ0KKw0KKw0KK3ZvaWQgR3BfY2xpcF90ZXN0X2lzZigNCisJCVdvcmQxNiBpc2ZbXSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgOiBpc2YgdmFsdWVzIChpbiBmcmVxdWVuY3kgZG9tYWluKSAgICAgICAgICAgKi8NCisJCVdvcmQxNiBtZW1bXSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkvbykgOiBtZW1vcnkgb2YgZ2FpbiBvZiBwaXRjaCBjbGlwcGluZyBhbGdvcml0aG0gKi8NCisJCSkNCit7DQorCVdvcmQxNiBkaXN0LCBkaXN0X21pbjsNCisJV29yZDMyIGk7DQorDQorCWRpc3RfbWluID0gdm9fc3ViKGlzZlsxXSwgaXNmWzBdKTsNCisNCisJZm9yIChpID0gMjsgaSA8IE0gLSAxOyBpKyspDQorCXsNCisJCWRpc3QgPSB2b19zdWIoaXNmW2ldLCBpc2ZbaSAtIDFdKTsNCisJCWlmKGRpc3QgPCBkaXN0X21pbikNCisJCXsNCisJCQlkaXN0X21pbiA9IGRpc3Q7ICAgICAgICAgICAgICAgDQorCQl9DQorCX0NCisNCisJZGlzdCA9IGV4dHJhY3RfaChMX21hYyh2b19MX211bHQoMjYyMTQsIG1lbVswXSksIDY1NTQsIGRpc3RfbWluKSk7DQorDQorCWlmIChkaXN0ID4gRElTVF9JU0ZfTUFYKQ0KKwl7DQorCQlkaXN0ID0gRElTVF9JU0ZfTUFYOyAgICAgICAgICAgICAgIA0KKwl9DQorCW1lbVswXSA9IGRpc3Q7ICAgICAgICAgICAgICAgICAgICAgICAgDQorDQorCXJldHVybjsNCit9DQorDQorDQordm9pZCBHcF9jbGlwX3Rlc3RfZ2Fpbl9waXQoDQorCQlXb3JkMTYgZ2Fpbl9waXQsICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRMTQgOiBnYWluIG9mIHF1YW50aXplZCBwaXRjaCAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBtZW1bXSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkvbykgICA6IG1lbW9yeSBvZiBnYWluIG9mIHBpdGNoIGNsaXBwaW5nIGFsZ29yaXRobSAqLw0KKwkJKQ0KK3sNCisJV29yZDE2IGdhaW47DQorCVdvcmQzMiBMX3RtcDsNCisJTF90bXAgPSAoMjk0OTEgKiBtZW1bMV0pPDwxOw0KKwlMX3RtcCArPSAoMzI3NyAqIGdhaW5fcGl0KTw8MTsNCisNCisJZ2FpbiA9IGV4dHJhY3RfaChMX3RtcCk7DQorDQorCWlmKGdhaW4gPCBHQUlOX1BJVF9NSU4pDQorCXsNCisJCWdhaW4gPSBHQUlOX1BJVF9NSU47ICAgICAgICAgICAgICANCisJfQ0KKwltZW1bMV0gPSBnYWluOyAgICAgICAgICAgICAgICAgICAgICAgICANCisJcmV0dXJuOw0KK30NCisNCisNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2hvbWluZy5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9ob21pbmcuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTU2MzNmCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9ob21pbmcuYwpAQCAtMCwwICsxLDQ2IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogICAgICAgRmlsZTogaG9taW5nLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgRGVzY3JpcHRpb246UGVyZm9ybXMgdGhlIGhvbWluZyByb3V0aW5lcyAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaW5jbHVkZSAidHlwZWRlZi5oIg0KKyNpbmNsdWRlICJjbnN0LmgiDQorI2luY2x1ZGUgImJhc2ljX29wLmgiDQorI2luY2x1ZGUgImJpdHMuaCINCisjaW5jbHVkZSAiaG9taW5nLnRhYiINCisNCitXb3JkMTYgZW5jb2Rlcl9ob21pbmdfZnJhbWVfdGVzdChXb3JkMTYgaW5wdXRfZnJhbWVbXSkNCit7DQorCVdvcmQzMiBpOw0KKwlXb3JkMTYgaiA9IDA7DQorDQorCS8qIGNoZWNrIDMyMCBpbnB1dCBzYW1wbGVzIGZvciBtYXRjaGluZyBFSEZfTUFTSzogZGVmaW5lZCBpbiBlX2hvbWluZy5oICovDQorCWZvciAoaSA9IDA7IGkgPCBMX0ZSQU1FMTZrOyBpKyspDQorCXsNCisJCWogPSAoV29yZDE2KSAoaW5wdXRfZnJhbWVbaV0gXiBFSEZfTUFTSyk7DQorDQorCQlpZiAoaikNCisJCQlicmVhazsNCisJfQ0KKw0KKwlyZXR1cm4gKFdvcmQxNikgKCFqKTsNCit9DQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9ocDQwMC5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9ocDQwMC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2M2E1M2EKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2hwNDAwLmMKQEAgLTAsMCArMSwxMDYgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiAgICAgIEZpbGU6IGhwNDAwLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgRGVzY3JpcHRpb246ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAybmQgb3JkZXIgaGlnaCBwYXNzIGZpbHRlciB3aXRoIGN1dCBvZmYgZnJlcXVlbmN5IGF0IDQwMCBIei4gICAgICAgICAgKg0KKyogRGVzaWduZWQgd2l0aCBjaGVieTIgZnVuY3Rpb24gaW4gTUFUTEFCLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqIE9wdGltaXplZCBmb3IgZml4ZWQtcG9pbnQgdG8gZ2V0IHRoZSBmb2xsb3dpbmcgZnJlcXVlbmN5IHJlc3BvbnNlOiAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogIGZyZXF1ZW5jeTogICAgIDBIeiAgIDEwMEh6ICAyMDBIeiAgMzAwSHogIDQwMEh6ICA2MzBIeiAgMS41a0h6ICAza0h6ICoNCisqICBkQiBsb3NzOiAgICAgLWluZmRCICAtMzBkQiAgLTIwZEIgIC0xMGRCICAtM2RCICAgKzZkQiAgICArMWRCICAgIDBkQiAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogQWxnb3JpdGhtOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgeVtpXSA9IGJbMF0qeFtpXSArIGJbMV0qeFtpLTFdICsgYlsyXSp4W2ktMl0gICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgKyBhWzFdKnlbaS0xXSArIGFbMl0qeVtpLTJdOyAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgV29yZDE2IGJbM10gPSB7MzY2MCwgLTczMjAsICAzNjYwfTsgICAgICAgaW4gUTEyICAgICAgICAgICAgICAgICAgICAgKg0KKyogIFdvcmQxNiBhWzNdID0gezQwOTYsICA3MzIwLCAtMzU0MH07ICAgICAgIGluIFExMiAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgZmxvYXQgLS0+ICAgYlszXSA9IHswLjg5MzU1NDY4NywgLTEuNzg3MTA5Mzc1LCAgMC44OTM1NTQ2ODd9OyAgICAgICAgKg0KKyogICAgICAgICAgICAgIGFbM10gPSB7MS4wMDAwMDAwMDAsICAxLjc4NzEwOTM3NSwgLTAuODY0MjU3ODEyfTsgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKyNpbmNsdWRlICJ0eXBlZGVmLmgiDQorI2luY2x1ZGUgImJhc2ljX29wLmgiDQorI2luY2x1ZGUgIm9wZXJfMzJiLmgiDQorI2luY2x1ZGUgImFjZWxwLmgiDQorDQorLyogZmlsdGVyIGNvZWZmaWNpZW50cyAgKi8NCitzdGF0aWMgV29yZDE2IGJbM10gPSB7OTE1LCAtMTgzMCwgOTE1fTsgICAgICAgICAvKiBRMTIgKC80KSAqLw0KK3N0YXRpYyBXb3JkMTYgYVszXSA9IHsxNjM4NCwgMjkyODAsIC0xNDE2MH07ICAgIC8qIFExMiAoeDQpICovDQorLyogSW5pdGlhbGl6YXRpb24gb2Ygc3RhdGljIHZhbHVlcyAqLw0KKw0KK3ZvaWQgSW5pdF9IUDQwMF8xMms4KFdvcmQxNiBtZW1bXSkNCit7DQorCVNldF96ZXJvKG1lbSwgNik7DQorfQ0KKw0KKw0KK3ZvaWQgSFA0MDBfMTJrOCgNCisJCVdvcmQxNiBzaWduYWxbXSwgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgc2lnbmFsIC8gb3V0cHV0IGlzIGRpdmlkZWQgYnkgMTYgKi8NCisJCVdvcmQxNiBsZywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbGVuZ2h0IG9mIHNpZ25hbCAgICAqLw0KKwkJV29yZDE2IG1lbVtdICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBmaWx0ZXIgbWVtb3J5IFs2XSAgICovDQorCSAgICAgICApDQorew0KKwlXb3JkMTYgIHgyOw0KKwlXb3JkMTYgeTJfaGksIHkyX2xvLCB5MV9oaSwgeTFfbG8sIHgwLCB4MTsNCisJV29yZDMyIExfdG1wOw0KKwlXb3JkMzIgbnVtOw0KKwl5Ml9oaSA9ICptZW0rKzsNCisJeTJfbG8gPSAqbWVtKys7DQorCXkxX2hpID0gKm1lbSsrOw0KKwl5MV9sbyA9ICptZW0rKzsNCisJeDAgPSAqbWVtKys7ICAgDQorCXgxID0gKm1lbTsgICANCisJbnVtID0gKFdvcmQzMilsZzsNCisJZG8NCisJew0KKwkJeDIgPSB4MTsNCisJCXgxID0geDA7DQorCQl4MCA9ICpzaWduYWw7DQorCQkvKiB5W2ldID0gYlswXSp4W2ldICsgYlsxXSp4W2ktMV0gKyBiMTQwWzJdKnhbaS0yXSAgKi8NCisJCS8qICsgYVsxXSp5W2ktMV0gKyBhWzJdICogeVtpLTJdOyAgKi8NCisJCUxfdG1wID0gODE5Mkw7ICAgICAgICAgICAgICAgICAgICAvKiByb3VuZGluZyB0byBtYXhpbWlzZSBwcmVjaXNpb24gKi8NCisJCUxfdG1wICs9IHkxX2xvICogYVsxXTsNCisJCUxfdG1wICs9IHkyX2xvICogYVsyXTsNCisJCUxfdG1wID0gTF90bXAgPj4gMTQ7DQorCQlMX3RtcCArPSAoeTFfaGkgKiBhWzFdICsgeTJfaGkgKiBhWzJdICsgKHgwICsgeDIpKiBiWzBdICsgeDEgKiBiWzFdKSA8PCAxOw0KKwkJTF90bXAgPDw9IDE7ICAgICAgICAgICAvKiBjb2VmZiBRMTIgLS0+IFExMyAqLw0KKwkJeTJfaGkgPSB5MV9oaTsNCisJCXkyX2xvID0geTFfbG87DQorCQl5MV9oaSA9IChXb3JkMTYpKExfdG1wPj4xNik7DQorCQl5MV9sbyA9IChXb3JkMTYpKChMX3RtcCAmIDB4ZmZmZik+PjEpOw0KKw0KKwkJLyogc2lnbmFsIGlzIGRpdmlkZWQgYnkgMTYgdG8gYXZvaWQgb3ZlcmZsb3cgaW4gZW5lcmd5IGNvbXB1dGF0aW9uICovDQorCQkqc2lnbmFsKysgPSAoTF90bXAgKyAweDgwMDApID4+IDE2Ow0KKwl9d2hpbGUoLS1udW0gIT0wKTsNCisNCisJKm1lbS0tID0geDE7DQorCSptZW0tLSA9IHgwOw0KKwkqbWVtLS0gPSB5MV9sbzsNCisJKm1lbS0tID0geTFfaGk7DQorCSptZW0tLSA9IHkyX2xvOw0KKwkqbWVtICAgPSB5Ml9oaTsgIA0KKwlyZXR1cm47DQorfQ0KKw0KKw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvaHA1MC5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9ocDUwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTNlM2Q3YgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvaHA1MC5jCkBAIC0wLDAgKzEsMTA2IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogICAgICBGaWxlOiBocDUwLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKgkgICBEZXNjcmlwdGlvbjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogMm5kIG9yZGVyIGhpZ2ggcGFzcyBmaWx0ZXIgd2l0aCBjdXQgb2ZmIGZyZXF1ZW5jeSBhdCAzMSBIei4gICAgICAgICAgICoNCisqIERlc2lnbmVkIHdpdGggY2hlYnkyIGZ1bmN0aW9uIGluIE1BVExBQi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiBPcHRpbWl6ZWQgZm9yIGZpeGVkLXBvaW50IHRvIGdldCB0aGUgZm9sbG93aW5nIGZyZXF1ZW5jeSByZXNwb25zZTogICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICBmcmVxdWVuY3k6ICAgICAwSHogICAgMTRIeiAgMjRIeiAgIDMxSHogICAzN0h6ICAgNDFIeiAgIDQ3SHogICAgICAgICAqDQorKiAgZEIgbG9zczogICAgIC1pbmZkQiAgLTE1ZEIgIC02ZEIgICAtM2RCICAtMS41ZEIgIC0xZEIgIC0wLjVkQiAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqIEFsZ29yaXRobTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogIHlbaV0gPSBiWzBdKnhbaV0gKyBiWzFdKnhbaS0xXSArIGJbMl0qeFtpLTJdICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICsgYVsxXSp5W2ktMV0gKyBhWzJdKnlbaS0yXTsgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogIFdvcmQxNiBiWzNdID0gezQwNTMsIC04MTA2LCA0MDUzfTsgICAgICAgaW4gUTEyICAgICAgICAgICAgICAgICAgICAgICoNCisqICBXb3JkMTYgYVszXSA9IHs4MTkyLCAxNjIxMSwgLTgwMjF9OyAgICAgICBpbiBRMTIgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogIGZsb2F0IC0tPiAgIGJbM10gPSB7MC45ODk1MDE5NTMsIC0xLjk3OTAwMzkwNiwgIDAuOTg5NTAxOTUzfTsgICAgICAgICoNCisqICAgICAgICAgICAgICBhWzNdID0gezEuMDAwMDAwMDAwLCAgMS45Nzg4ODE4MzYsIC0wLjk3OTEyNTk3N307ICAgICAgICAqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKyNpbmNsdWRlICJ0eXBlZGVmLmgiDQorI2luY2x1ZGUgImJhc2ljX29wLmgiDQorI2luY2x1ZGUgIm9wZXJfMzJiLmgiDQorI2luY2x1ZGUgImNuc3QuaCINCisjaW5jbHVkZSAiYWNlbHAuaCINCisNCisvKiBmaWx0ZXIgY29lZmZpY2llbnRzICAqLw0KK3N0YXRpYyBXb3JkMTYgYlszXSA9IHs0MDUzLCAtODEwNiwgNDA1M307ICAvKiBRMTIgKi8NCitzdGF0aWMgV29yZDE2IGFbM10gPSB7ODE5MiwgMTYyMTEsIC04MDIxfTsgLyogUTEyICh4MikgKi8NCisNCisvKiBJbml0aWFsaXphdGlvbiBvZiBzdGF0aWMgdmFsdWVzICovDQorDQordm9pZCBJbml0X0hQNTBfMTJrOChXb3JkMTYgbWVtW10pDQorew0KKwlTZXRfemVybyhtZW0sIDYpOw0KK30NCisNCisNCit2b2lkIEhQNTBfMTJrOCgNCisJCVdvcmQxNiBzaWduYWxbXSwgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQvb3V0cHV0IHNpZ25hbCAqLw0KKwkJV29yZDE2IGxnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBsZW5naHQgb2Ygc2lnbmFsICAgICovDQorCQlXb3JkMTYgbWVtW10gICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGZpbHRlciBtZW1vcnkgWzZdICAgKi8NCisJICAgICAgKQ0KK3sNCisJV29yZDE2IHgyOw0KKwlXb3JkMTYgeTJfaGksIHkyX2xvLCB5MV9oaSwgeTFfbG8sIHgwLCB4MTsNCisJV29yZDMyIExfdG1wOw0KKwlXb3JkMzIgbnVtOw0KKw0KKwl5Ml9oaSA9ICptZW0rKzsNCisJeTJfbG8gPSAqbWVtKys7DQorCXkxX2hpID0gKm1lbSsrOw0KKwl5MV9sbyA9ICptZW0rKzsNCisJeDAgPSAqbWVtKys7ICAgDQorCXgxID0gKm1lbTsNCisJbnVtID0gKFdvcmQzMilsZzsNCisJZG8NCisJew0KKwkJeDIgPSB4MTsNCisJCXgxID0geDA7DQorCQl4MCA9ICpzaWduYWw7DQorCQkvKiB5W2ldID0gYlswXSp4W2ldICsgYlsxXSp4W2ktMV0gKyBiMTQwWzJdKnhbaS0yXSAgKi8NCisJCS8qICsgYVsxXSp5W2ktMV0gKyBhWzJdICogeVtpLTJdOyAgKi8NCisJCUxfdG1wID0gODE5MiA7ICAgICAgICAgICAgICAgICAgICAvKiByb3VuZGluZyB0byBtYXhpbWlzZSBwcmVjaXNpb24gKi8NCisJCUxfdG1wICs9IHkxX2xvICogYVsxXTsNCisJCUxfdG1wICs9IHkyX2xvICogYVsyXTsNCisJCUxfdG1wID0gTF90bXAgPj4gMTQ7DQorCQlMX3RtcCArPSAoeTFfaGkgKiBhWzFdICsgeTJfaGkgKiBhWzJdICsgKHgwICsgeDIpICogYlswXSArIHgxICogYlsxXSkgPDwgMTsNCisJCUxfdG1wIDw8PSAyOyAgICAgICAgICAgLyogY29lZmYgUTEyIC0tPiBRMTMgKi8NCisJCXkyX2hpID0geTFfaGk7DQorCQl5Ml9sbyA9IHkxX2xvOw0KKwkJeTFfaGkgPSAoV29yZDE2KShMX3RtcD4+MTYpOw0KKwkJeTFfbG8gPSAoV29yZDE2KSgoTF90bXAgJiAweGZmZmYpPj4xKTsNCisJCSpzaWduYWwrKyA9IGV4dHJhY3RfaCgoTF9hZGQoKExfdG1wPDwxKSwgMHg4MDAwKSkpOw0KKwl9d2hpbGUoLS1udW0gIT0wKTsNCisNCisJKm1lbS0tID0geDE7DQorCSptZW0tLSA9IHgwOw0KKwkqbWVtLS0gPSB5MV9sbzsNCisJKm1lbS0tID0geTFfaGk7DQorCSptZW0tLSA9IHkyX2xvOw0KKwkqbWVtLS0gPSB5Ml9oaTsgIA0KKw0KKwlyZXR1cm47DQorfQ0KKw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvaHA2ay5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9ocDZrLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWVlNWIyMAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvaHA2ay5jCkBAIC0wLDAgKzEsOTMgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiAgICAgICBGaWxlOiBocDZrLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqCURlc2NyaXB0aW9uOjE1dGggb3JkZXIgYmFuZCBwYXNzIDZrSHogdG8gN2tIeiBGSVIgZmlsdGVyICAgICAgICAqDQorKiAgICAgICBmcmVxdWVuY3k6IDRrSHogICA1a0h6ICA1LjVrSHogIDZrSHogIDYuNWtIeiAgN2tIeiA3LjVrSHogOGtIeiAgKg0KKyoJZEIgbG9zczogIC02MGRCICAtNDVkQiAgLTEzZEIgICAtM2RCICAgMGRCICAgIC0zZEIgLTEzZEIgIC00NWRCICoNCisqCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2luY2x1ZGUgInR5cGVkZWYuaCINCisjaW5jbHVkZSAiYmFzaWNfb3AuaCINCisjaW5jbHVkZSAiYWNlbHAuaCINCisjaW5jbHVkZSAiY25zdC5oIg0KKw0KKyNkZWZpbmUgTF9GSVIgMzENCisNCisvKiBmaWx0ZXIgY29lZmZpY2llbnRzIChnYWluPTQuMCkgKi8NCisNCitXb3JkMTYgZmlyXzZrXzdrW0xfRklSXSA9DQorew0KKwktMzIsIDQ3LCAzMiwgLTI3LCAtMzY5LA0KKwkxMTIyLCAtMTQyMSwgMCwgMzc5OCwgLTg4ODAsDQorCTEyMzQ5LCAtMTA5ODQsIDM1NDgsIDc3NjYsIC0xODAwMSwNCisJMjIxMTgsIC0xODAwMSwgNzc2NiwgMzU0OCwgLTEwOTg0LA0KKwkxMjM0OSwgLTg4ODAsIDM3OTgsIDAsIC0xNDIxLA0KKwkxMTIyLCAtMzY5LCAtMjcsIDMyLCA0NywNCisJLTMyDQorfTsNCisNCisNCit2b2lkIEluaXRfRmlsdF82a183ayhXb3JkMTYgbWVtW10pICAgICAgICAgLyogbWVtWzMwXSAqLw0KK3sNCisJU2V0X3plcm8obWVtLCBMX0ZJUiAtIDEpOw0KKwlyZXR1cm47DQorfQ0KKw0KK3ZvaWQgRmlsdF82a183aygNCisJCVdvcmQxNiBzaWduYWxbXSwgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQ6ICBzaWduYWwgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IGxnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dDogIGxlbmd0aCBvZiBpbnB1dCAgICAgICAgICovDQorCQlXb3JkMTYgbWVtW10gICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGluL291dDogbWVtb3J5IChzaXplPTMwKSAgICAgICAgKi8NCisJICAgICAgICkNCit7DQorCVdvcmQxNiB4W0xfU1VCRlIxNmsgKyAoTF9GSVIgLSAxKV07DQorCVdvcmQzMiBpLCBMX3RtcDsNCisNCisJQ29weShtZW0sIHgsIExfRklSIC0gMSk7DQorCWZvciAoaSA9IGxnIC0gMTsgaSA+PSAwOyBpLS0pDQorCXsNCisJCXhbaSArIExfRklSIC0gMV0gPSBzaWduYWxbaV0gPj4gMjsgICAgICAgICAgICAgICAgICAgICAgICAgLyogZ2FpbiBvZiBmaWx0ZXIgPSA0ICovDQorCX0JDQorCWZvciAoaSA9IDA7IGkgPCBsZzsgaSsrKQ0KKwl7DQorCQlMX3RtcCA9ICAoeFtpXSArIHhbaSsgMzBdKSAqIGZpcl82a183a1swXTsNCisJCUxfdG1wICs9ICh4W2krMV0gKyB4W2kgKyAyOV0pICogZmlyXzZrXzdrWzFdOw0KKwkJTF90bXAgKz0gKHhbaSsyXSArIHhbaSArIDI4XSkgKiBmaXJfNmtfN2tbMl07DQorCQlMX3RtcCArPSAoeFtpKzNdICsgeFtpICsgMjddKSAqIGZpcl82a183a1szXTsNCisJCUxfdG1wICs9ICh4W2krNF0gKyB4W2kgKyAyNl0pICogZmlyXzZrXzdrWzRdOw0KKwkJTF90bXAgKz0gKHhbaSs1XSArIHhbaSArIDI1XSkgKiBmaXJfNmtfN2tbNV07DQorCQlMX3RtcCArPSAoeFtpKzZdICsgeFtpICsgMjRdKSAqIGZpcl82a183a1s2XTsNCisJCUxfdG1wICs9ICh4W2krN10gKyB4W2kgKyAyM10pICogZmlyXzZrXzdrWzddOw0KKwkJTF90bXAgKz0gKHhbaSs4XSArIHhbaSArIDIyXSkgKiBmaXJfNmtfN2tbOF07DQorCQlMX3RtcCArPSAoeFtpKzldICsgeFtpICsgMjFdKSAqIGZpcl82a183a1s5XTsNCisJCUxfdG1wICs9ICh4W2krMTBdICsgeFtpICsgMjBdKSAqIGZpcl82a183a1sxMF07DQorCQlMX3RtcCArPSAoeFtpKzExXSArIHhbaSArIDE5XSkgKiBmaXJfNmtfN2tbMTFdOw0KKwkJTF90bXAgKz0gKHhbaSsxMl0gKyB4W2kgKyAxOF0pICogZmlyXzZrXzdrWzEyXTsNCisJCUxfdG1wICs9ICh4W2krMTNdICsgeFtpICsgMTddKSAqIGZpcl82a183a1sxM107DQorCQlMX3RtcCArPSAoeFtpKzE0XSArIHhbaSArIDE2XSkgKiBmaXJfNmtfN2tbMTRdOw0KKwkJTF90bXAgKz0gKHhbaSsxNV0pICogZmlyXzZrXzdrWzE1XTsNCisJCXNpZ25hbFtpXSA9IChMX3RtcCArIDB4NDAwMCkgPj4gMTU7DQorCX0NCisNCisJQ29weSh4ICsgbGcsIG1lbSwgTF9GSVIgLSAxKTsNCisNCit9DQorDQorDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9ocF93c3AuYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvaHBfd3NwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2ZiNjJhNAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvaHBfd3NwLmMKQEAgLTAsMCArMSwxNDggQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiAgICAgICBGaWxlOiBocF93c3AuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgRGVzY3JpcHRpb246ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgIDNuZCBvcmRlciBoaWdoIHBhc3MgZmlsdGVyIHdpdGggY3V0IG9mZiBmcmVxdWVuY3kgYXQgMTgwSHogICAgICAqDQorKiBBbGdvcml0aG06ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICB5W2ldID0gYlswXSp4W2ldICsgYlsxXSp4W2ktMV0gKyBiWzJdKnhbaS0yXSArIGJbM10qeFtpLTNdICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICArIGFbMV0qeVtpLTFdICsgYVsyXSp5W2ktMl0gKyBhWzNdKnlbaS0zXTsgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqIGZsb2F0IGFfY29lZltIUF9PUkRFUl09IHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAtMi42NDQzNjcxMTYwMDY2NGYsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgMi4zNTA4NzM4NjYyNTM2MGYsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgLTAuNzAwMDExNTY5Mjc0MjRmfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogZmxvYXQgYl9jb2VmW0hQX09SREVSKzFdPSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAtMC44Mzc4NzA1NzUwNTY2NWYsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAyLjUwOTc1NTcwMDcxMDU4ZiwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAtMi41MDk3NTU3MDA3MTA1OGYsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgIDAuODM3ODcwNTc1MDU2NjVmfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2luY2x1ZGUgInR5cGVkZWYuaCINCisjaW5jbHVkZSAiYmFzaWNfb3AuaCINCisjaW5jbHVkZSAib3Blcl8zMmIuaCINCisjaW5jbHVkZSAiYWNlbHAuaCINCisNCisvKiBmaWx0ZXIgY29lZmZpY2llbnRzIGluIFExMiAqLw0KK3N0YXRpYyBXb3JkMTYgYVs0XSA9IHs4MTkyLCAyMTY2MywgLTE5MjU4LCA1NzM0fTsNCitzdGF0aWMgV29yZDE2IGJbNF0gPSB7LTM0MzIsICsxMDI4MCwgLTEwMjgwLCArMzQzMn07DQorDQorLyogSW5pdGlhbGl6YXRpb24gb2Ygc3RhdGljIHZhbHVlcyAqLw0KK3ZvaWQgSW5pdF9IcF93c3AoV29yZDE2IG1lbVtdKQ0KK3sNCisJU2V0X3plcm8obWVtLCA5KTsNCisNCisJcmV0dXJuOw0KK30NCisNCit2b2lkIHNjYWxlX21lbV9IcF93c3AoV29yZDE2IG1lbVtdLCBXb3JkMTYgZXhwKQ0KK3sNCisJV29yZDMyIGk7DQorCVdvcmQzMiBMX3RtcDsNCisNCisJZm9yIChpID0gMDsgaSA8IDY7IGkgKz0gMikNCisJew0KKwkJTF90bXAgPSAoKG1lbVtpXSA8PCAxNikgKyAobWVtW2kgKyAxXTw8MSkpOw0KKwkJTF90bXAgPSBMX3NobChMX3RtcCwgZXhwKTsNCisJCW1lbVtpXSA9IExfdG1wID4+IDE2Ow0KKwkJbWVtW2kgKyAxXSA9IChMX3RtcCAmIDB4ZmZmZik+PjE7DQorCX0NCisNCisJZm9yIChpID0gNjsgaSA8IDk7IGkrKykNCisJew0KKwkJTF90bXAgPSBMX2RlcG9zaXRfaChtZW1baV0pOyAgICAgICAvKiB4W2ldICovDQorCQlMX3RtcCA9IExfc2hsKExfdG1wLCBleHApOw0KKwkJbWVtW2ldID0gdm9fcm91bmQoTF90bXApOw0KKwl9DQorDQorCXJldHVybjsNCit9DQorDQorDQordm9pZCBIcF93c3AoDQorCQlXb3JkMTYgd3NwW10sICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGkgICA6IHdzcFtdICBzaWduYWwgICAgICAgKi8NCisJCVdvcmQxNiBocF93c3BbXSwgICAgICAgICAgICAgICAgICAgICAgLyogbyAgIDogaHlwYXNzIHdzcFtdICAgICAgICAqLw0KKwkJV29yZDE2IGxnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpICAgOiBsZW5naHQgb2Ygc2lnbmFsICAgICovDQorCQlXb3JkMTYgbWVtW10gICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGkvbyA6IGZpbHRlciBtZW1vcnkgWzldICAgKi8NCisJICAgKQ0KK3sNCisJV29yZDE2IHgwLCB4MSwgeDIsIHgzOw0KKwlXb3JkMTYgeTNfaGksIHkzX2xvLCB5Ml9oaSwgeTJfbG8sIHkxX2hpLCB5MV9sbzsNCisJV29yZDMyIGksIExfdG1wOw0KKw0KKwl5M19oaSA9IG1lbVswXTsgICAgICAgICAgICAgICAgICAgICAgICANCisJeTNfbG8gPSBtZW1bMV07ICAgICAgICAgICAgICAgICAgICAgICAgDQorCXkyX2hpID0gbWVtWzJdOyAgICAgICAgICAgICAgICAgICAgICAgIA0KKwl5Ml9sbyA9IG1lbVszXTsgICAgICAgICAgICAgICAgICAgICAgICANCisJeTFfaGkgPSBtZW1bNF07ICAgICAgICAgICAgICAgICAgICAgICAgDQorCXkxX2xvID0gbWVtWzVdOyAgICAgICAgICAgICAgICAgICAgICAgIA0KKwl4MCA9IG1lbVs2XTsgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJeDEgPSBtZW1bN107ICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorCXgyID0gbWVtWzhdOyAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKw0KKwlmb3IgKGkgPSAwOyBpIDwgbGc7IGkrKykNCisJew0KKwkJeDMgPSB4MjsgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJCXgyID0geDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorCQl4MSA9IHgwOyAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwkJeDAgPSB3c3BbaV07ICAgICAgICAgICAgICAgICAgICAgICANCisJCS8qIHlbaV0gPSBiWzBdKnhbaV0gKyBiWzFdKnhbaS0xXSArIGIxNDBbMl0qeFtpLTJdICsgYlszXSp4W2ktM10gICovDQorCQkvKiArIGFbMV0qeVtpLTFdICsgYVsyXSAqIHlbaS0yXSAgKyBhWzNdKnlbaS0zXSAgKi8NCisNCisJCUxfdG1wID0gMTYzODRMOyAgICAgICAgICAgICAgICAgICAgLyogcm91bmRpbmcgdG8gbWF4aW1pc2UgcHJlY2lzaW9uICovDQorCQlMX3RtcCArPSAoeTFfbG8gKiBhWzFdKTw8MTsNCisJCUxfdG1wICs9ICh5Ml9sbyAqIGFbMl0pPDwxOw0KKwkJTF90bXAgKz0gKHkzX2xvICogYVszXSk8PDE7DQorCQlMX3RtcCA9IExfdG1wID4+IDE1Ow0KKwkJTF90bXAgKz0gKHkxX2hpICogYVsxXSk8PDE7DQorCQlMX3RtcCArPSAoeTJfaGkgKiBhWzJdKTw8MTsNCisJCUxfdG1wICs9ICh5M19oaSAqIGFbM10pPDwxOw0KKwkJTF90bXAgKz0gKHgwICogYlswXSk8PDE7DQorCQlMX3RtcCArPSAoeDEgKiBiWzFdKTw8MTsNCisJCUxfdG1wICs9ICh4MiAqIGJbMl0pPDwxOw0KKwkJTF90bXAgKz0gKHgzICogYlszXSk8PDE7DQorDQorCQlMX3RtcCA9IExfdG1wIDw8IDI7DQorDQorCQl5M19oaSA9IHkyX2hpOyAgICAgICAgICAgICAgICAgICAgIA0KKwkJeTNfbG8gPSB5Ml9sbzsgICAgICAgICAgICAgICAgICAgICANCisJCXkyX2hpID0geTFfaGk7ICAgICAgICAgICAgICAgICAgICAgDQorCQl5Ml9sbyA9IHkxX2xvOyANCisJCXkxX2hpID0gTF90bXAgPj4gMTY7DQorCQl5MV9sbyA9IChMX3RtcCAmIDB4ZmZmZikgPj4xOw0KKw0KKwkJaHBfd3NwW2ldID0gKExfdG1wICsgMHg0MDAwKT4+MTU7ICAgICAgICAgIA0KKwl9DQorDQorCW1lbVswXSA9IHkzX2hpOyAgICAgICAgICAgICAgICAgICAgICAgIA0KKwltZW1bMV0gPSB5M19sbzsgICAgICAgICAgICAgICAgICAgICAgICANCisJbWVtWzJdID0geTJfaGk7ICAgICAgICAgICAgICAgICAgICAgICAgDQorCW1lbVszXSA9IHkyX2xvOyAgICAgICAgICAgICAgICAgICAgICAgIA0KKwltZW1bNF0gPSB5MV9oaTsgICAgICAgICAgICAgICAgICAgICAgICANCisJbWVtWzVdID0geTFfbG87ICAgICAgICAgICAgICAgICAgICAgICAgDQorCW1lbVs2XSA9IHgwOyAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwltZW1bN10gPSB4MTsgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJbWVtWzhdID0geDI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorDQorCXJldHVybjsNCit9DQorDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9pbnRfbHBjLmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2ludF9scGMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTFmZDBiCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9pbnRfbHBjLmMKQEAgLTAsMCArMSw2NiBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqICAgICAgRmlsZTogaW50X2xwYy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgRGVzY3JpcHRpb246SW50ZXJwb2xhdGlvbiBvZiB0aGUgTFAgcGFyYW1ldGVycyBpbiA0IHN1YmZyYW1lcy4gICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2luY2x1ZGUgInR5cGVkZWYuaCINCisjaW5jbHVkZSAiYmFzaWNfb3AuaCINCisjaW5jbHVkZSAiY25zdC5oIg0KKyNpbmNsdWRlICJhY2VscC5oIg0KKw0KKyNkZWZpbmUgTVAxIChNKzEpDQorDQorDQordm9pZCBJbnRfaXNwKA0KKwkJV29yZDE2IGlzcF9vbGRbXSwgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IGlzcHMgZnJvbSBwYXN0IGZyYW1lICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IGlzcF9uZXdbXSwgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IGlzcHMgZnJvbSBwcmVzZW50IGZyYW1lICAgICAgICAgICAqLw0KKwkJV29yZDE2IGZyYWNbXSwgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IGZyYWN0aW9uIGZvciAzIGZpcnN0IHN1YmZyIChRMTUpICAqLw0KKwkJV29yZDE2IEF6W10gICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBvdXRwdXQ6IExQIGNvZWZmaWNpZW50cyBpbiA0IHN1YmZyYW1lcyAgICAqLw0KKwkgICAgKQ0KK3sNCisJV29yZDMyIGksIGs7IA0KKwlXb3JkMTYgZmFjX29sZCwgZmFjX25ldzsNCisJV29yZDE2IGlzcFtNXTsNCisJV29yZDMyIExfdG1wOw0KKw0KKwlmb3IgKGsgPSAwOyBrIDwgMzsgaysrKQ0KKwl7DQorCQlmYWNfbmV3ID0gZnJhY1trXTsgICAgICAgICAgICAgICAgDQorCQlmYWNfb2xkID0gKDMyNzY3IC0gZmFjX25ldykgKyAxOyAgLyogMS4wIC0gZmFjX25ldyAqLw0KKw0KKwkJZm9yIChpID0gMDsgaSA8IE07IGkrKykNCisJCXsNCisJCQlMX3RtcCA9IChpc3Bfb2xkW2ldICogZmFjX29sZCk8PDE7DQorCQkJTF90bXAgKz0gKGlzcF9uZXdbaV0gKiBmYWNfbmV3KTw8MTsNCisJCQlpc3BbaV0gPSAoTF90bXAgKyAweDgwMDApPj4xNjsgICAgICAgIA0KKwkJfQ0KKwkJSXNwX0F6KGlzcCwgQXosIE0sIDApOw0KKwkJQXogKz0gTVAxOw0KKwl9DQorDQorCS8qIDR0aCBzdWJmcmFtZTogaXNwX25ldyAoZnJhYz0xLjApICovDQorCUlzcF9Beihpc3BfbmV3LCBBeiwgTSwgMCk7DQorDQorCXJldHVybjsNCit9DQorDQorDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9pc3BfYXouYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvaXNwX2F6LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2I0NGQxMgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvaXNwX2F6LmMKQEAgLTAsMCArMSwyNDcgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiAgICAgIEZpbGU6IGlzcF9hei5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgIERlc2NyaXB0aW9uOkNvbXB1dGUgdGhlIExQQyBjb2VmZmljaWVudHMgZnJvbSBpc3AgKG9yZGVyPU0pICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKyNpbmNsdWRlICJ0eXBlZGVmLmgiDQorI2luY2x1ZGUgImJhc2ljX29wLmgiDQorI2luY2x1ZGUgIm9wZXJfMzJiLmgiDQorI2luY2x1ZGUgImNuc3QuaCINCisNCisjZGVmaW5lIE5DIChNLzIpDQorI2RlZmluZSBOQzE2ayAoTTE2ay8yKQ0KKw0KKy8qIGxvY2FsIGZ1bmN0aW9uICovDQorDQorc3RhdGljIHZvaWQgR2V0X2lzcF9wb2woV29yZDE2ICogaXNwLCBXb3JkMzIgKiBmLCBXb3JkMTYgbik7DQorc3RhdGljIHZvaWQgR2V0X2lzcF9wb2xfMTZrSHooV29yZDE2ICogaXNwLCBXb3JkMzIgKiBmLCBXb3JkMTYgbik7DQorDQordm9pZCBJc3BfQXooDQorCQlXb3JkMTYgaXNwW10sICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRMTUgOiBJbW1pdHRhbmNlIHNwZWN0cmFsIHBhaXJzICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBhW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIFExMiA6IHByZWRpY3RvciBjb2VmZmljaWVudHMgKG9yZGVyID0gTSkgICAqLw0KKwkJV29yZDE2IG0sDQorCQlXb3JkMTYgYWRhcHRpdmVfc2NhbGluZyAgICAgICAgICAgICAgIC8qIChpKSAwICAgOiBhZGFwdGl2ZSBzY2FsaW5nIGRpc2FibGVkICovDQorCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAxICAgOiBhZGFwdGl2ZSBzY2FsaW5nIGVuYWJsZWQgICovDQorCSAgICkNCit7DQorCVdvcmQzMiBpLCBqOyANCisJV29yZDE2IGhpLCBsbzsNCisJV29yZDMyIGYxW05DMTZrICsgMV0sIGYyW05DMTZrXTsNCisJV29yZDE2IG5jOw0KKwlXb3JkMzIgdDA7DQorCVdvcmQxNiBxLCBxX3N1ZzsNCisJV29yZDMyIHRtYXg7DQorDQorCW5jID0gKG0gPj4gMSk7DQorCWlmKG5jID4gOCkNCisJew0KKwkJR2V0X2lzcF9wb2xfMTZrSHooJmlzcFswXSwgZjEsIG5jKTsNCisJCWZvciAoaSA9IDA7IGkgPD0gbmM7IGkrKykNCisJCXsNCisJCQlmMVtpXSA9IGYxW2ldIDw8IDI7DQorCQl9DQorCX0gZWxzZQ0KKwkJR2V0X2lzcF9wb2woJmlzcFswXSwgZjEsIG5jKTsNCisNCisJaWYgKG5jID4gOCkNCisJew0KKwkJR2V0X2lzcF9wb2xfMTZrSHooJmlzcFsxXSwgZjIsIChuYyAtIDEpKTsNCisJCWZvciAoaSA9IDA7IGkgPD0gbmMgLSAxOyBpKyspDQorCQl7DQorCQkJZjJbaV0gPSBmMltpXSA8PCAyOw0KKwkJfQ0KKwl9IGVsc2UNCisJCUdldF9pc3BfcG9sKCZpc3BbMV0sIGYyLCAobmMgLSAxKSk7DQorDQorCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCSAqICBNdWx0aXBseSBGMih6KSBieSAoMSAtIHpeLTIpICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKwlmb3IgKGkgPSAobmMgLSAxKTsgaSA+IDE7IGktLSkNCisJew0KKwkJZjJbaV0gPSB2b19MX3N1YihmMltpXSwgZjJbaSAtIDJdKTsgICAgICAgICAgLyogZjJbaV0gLT0gZjJbaS0yXTsgKi8NCisJfQ0KKw0KKwkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCSAqICBTY2FsZSBGMSh6KSBieSAoMStpc3BbbS0xXSkgIGFuZCAgRjIoeikgYnkgKDEtaXNwW20tMV0pICoNCisJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisJZm9yIChpID0gMDsgaSA8IG5jOyBpKyspDQorCXsNCisJCS8qIGYxW2ldICo9ICgxLjAgKyBpc3BbTS0xXSk7ICovDQorDQorCQloaSA9IGYxW2ldID4+IDE2Ow0KKwkJbG8gPSAoZjFbaV0gJiAweGZmZmYpPj4xOw0KKw0KKwkJdDAgPSBNcHlfMzJfMTYoaGksIGxvLCBpc3BbbSAtIDFdKTsNCisJCWYxW2ldID0gdm9fTF9hZGQoZjFbaV0sIHQwKTsgDQorDQorCQkvKiBmMltpXSAqPSAoMS4wIC0gaXNwW00tMV0pOyAqLw0KKw0KKwkJaGkgPSBmMltpXSA+PiAxNjsNCisJCWxvID0gKGYyW2ldICYgMHhmZmZmKT4+MTsNCisJCXQwID0gTXB5XzMyXzE2KGhpLCBsbywgaXNwW20gLSAxXSk7DQorCQlmMltpXSA9IHZvX0xfc3ViKGYyW2ldLCB0MCk7IA0KKwl9DQorDQorCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCSAqICBBKHopID0gKEYxKHopK0YyKHopKS8yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqICBGMSh6KSBpcyBzeW1tZXRyaWMgYW5kIEYyKHopIGlzIGFudGlzeW1tZXRyaWMgICAgICAqDQorCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKwkvKiBhWzBdID0gMS4wOyAqLw0KKwlhWzBdID0gNDA5NjsgIA0KKwl0bWF4ID0gMTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorCWZvciAoaSA9IDEsIGogPSBtIC0gMTsgaSA8IG5jOyBpKyssIGotLSkNCisJew0KKwkJLyogYVtpXSA9IDAuNSooZjFbaV0gKyBmMltpXSk7ICovDQorDQorCQl0MCA9IHZvX0xfYWRkKGYxW2ldLCBmMltpXSk7ICAgICAgICAgIC8qIGYxW2ldICsgZjJbaV0gICAgICAgICAgICAgKi8NCisJCXRtYXggfD0gTF9hYnModDApOyAgICAgICAgICAgICAgICAgDQorCQlhW2ldID0gKFdvcmQxNikodm9fTF9zaHJfcih0MCwgMTIpKTsgLyogZnJvbSBRMjMgdG8gUTEyIGFuZCAqIDAuNSAqLw0KKw0KKwkJLyogYVtqXSA9IDAuNSooZjFbaV0gLSBmMltpXSk7ICovDQorDQorCQl0MCA9IHZvX0xfc3ViKGYxW2ldLCBmMltpXSk7ICAgICAgICAgIC8qIGYxW2ldIC0gZjJbaV0gICAgICAgICAgICAgKi8NCisJCXRtYXggfD0gTF9hYnModDApOyAgICAgICAgICAgICAgICANCisJCWFbal0gPSAoV29yZDE2KSh2b19MX3Nocl9yKHQwLCAxMikpOyAvKiBmcm9tIFEyMyB0byBRMTIgYW5kICogMC41ICovDQorCX0NCisNCisJLyogcmVzY2FsZSBkYXRhIGlmIG92ZXJmbG93IGhhcyBvY2N1cmVkIGFuZCByZXByb2Nlc3MgdGhlIGxvb3AgKi8NCisJaWYoYWRhcHRpdmVfc2NhbGluZyA9PSAxKQ0KKwkJcSA9IDQgLSBub3JtX2wodG1heCk7ICAgICAgICAvKiBhZGFwdGl2ZSBzY2FsaW5nIGVuYWJsZWQgKi8NCisJZWxzZQ0KKwkJcSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYWRhcHRpdmUgc2NhbGluZyBkaXNhYmxlZCAqLw0KKw0KKwlpZiAocSA+IDApDQorCXsNCisJCXFfc3VnID0gKDEyICsgcSk7DQorCQlmb3IgKGkgPSAxLCBqID0gbSAtIDE7IGkgPCBuYzsgaSsrLCBqLS0pDQorCQl7DQorCQkJLyogYVtpXSA9IDAuNSooZjFbaV0gKyBmMltpXSk7ICovDQorCQkJdDAgPSB2b19MX2FkZChmMVtpXSwgZjJbaV0pOyAgICAgICAgICAvKiBmMVtpXSArIGYyW2ldICAgICAgICAgICAgICovDQorCQkJYVtpXSA9IChXb3JkMTYpKHZvX0xfc2hyX3IodDAsIHFfc3VnKSk7IC8qIGZyb20gUTIzIHRvIFExMiBhbmQgKiAwLjUgKi8NCisNCisJCQkvKiBhW2pdID0gMC41KihmMVtpXSAtIGYyW2ldKTsgKi8NCisJCQl0MCA9IHZvX0xfc3ViKGYxW2ldLCBmMltpXSk7ICAgICAgICAgIC8qIGYxW2ldIC0gZjJbaV0gICAgICAgICAgICAgKi8NCisJCQlhW2pdID0gKFdvcmQxNikodm9fTF9zaHJfcih0MCwgcV9zdWcpKTsgLyogZnJvbSBRMjMgdG8gUTEyIGFuZCAqIDAuNSAqLw0KKwkJfQ0KKwkJYVswXSA9IHNocihhWzBdLCBxKTsgDQorCX0NCisJZWxzZQ0KKwl7DQorCQlxX3N1ZyA9IDEyOyANCisJCXEgICAgID0gMDsgDQorCX0NCisJLyogYVtOQ10gPSAwLjUqZjFbTkNdKigxLjAgKyBpc3BbTS0xXSk7ICovDQorCWhpID0gZjFbbmNdID4+IDE2Ow0KKwlsbyA9IChmMVtuY10gJiAweGZmZmYpPj4xOw0KKwl0MCA9IE1weV8zMl8xNihoaSwgbG8sIGlzcFttIC0gMV0pOw0KKwl0MCA9IHZvX0xfYWRkKGYxW25jXSwgdDApOw0KKwlhW25jXSA9IChXb3JkMTYpKExfc2hyX3IodDAsIHFfc3VnKSk7ICAgIC8qIGZyb20gUTIzIHRvIFExMiBhbmQgKiAwLjUgKi8NCisJLyogYVttXSA9IGlzcFttLTFdOyAqLw0KKw0KKwlhW21dID0gdm9fc2hyX3IoaXNwW20gLSAxXSwgKDMgKyBxKSk7ICAgICAgICAgICAvKiBmcm9tIFExNSB0byBRMTIgICAgICAgICAgKi8NCisJcmV0dXJuOw0KK30NCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyogcHJvY2VkdXJlIEdldF9pc3BfcG9sOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICB+fn5+fn5+fn5+fiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgIEZpbmQgdGhlIHBvbHlub21pYWwgRjEoeikgb3IgRjIoeikgZnJvbSB0aGUgSVNQcy4gICAgICAgKg0KKyogVGhpcyBpcyBwZXJmb3JtZWQgYnkgZXhwYW5kaW5nIHRoZSBwcm9kdWN0IHBvbHlub21pYWxzOiAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiBGMSh6KSA9ICAgcHJvZHVjdCAgICggMSAtIDIgaXNwX2kgel4tMSArIHpeLTIgKSAgICAgICAgICAgKg0KKyogICAgICAgICBpPTAsMiw0LDYsOCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqIEYyKHopID0gICBwcm9kdWN0ICAgKCAxIC0gMiBpc3BfaSB6Xi0xICsgel4tMiApICAgICAgICAgICAqDQorKiAgICAgICAgIGk9MSwzLDUsNyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqIHdoZXJlIGlzcF9pIGFyZSB0aGUgSVNQcyBpbiB0aGUgY29zaW5lIGRvbWFpbi4gICAgICAgICAgICAqDQorKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqIFBhcmFtZXRlcnM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgaXNwW10gICA6IGlzcCB2ZWN0b3IgKGNvc2luZSBkb21haW5lKSAgICAgICAgIGluIFExNSAgICAgKg0KKyogIGZbXSAgICAgOiB0aGUgY29lZmZpY2llbnRzIG9mIEYxIG9yIEYyICAgICAgICBpbiBRMjMgICAgICoNCisqICBuICAgICAgIDogPT0gTkMgZm9yIEYxKHopOyA9PSBOQy0xIGZvciBGMih6KSAgICAgICAgICAgICAqDQorKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCitzdGF0aWMgdm9pZCBHZXRfaXNwX3BvbChXb3JkMTYgKiBpc3AsIFdvcmQzMiAqIGYsIFdvcmQxNiBuKQ0KK3sNCisJV29yZDE2IGhpLCBsbzsNCisJV29yZDMyIGksIGosIHQwOw0KKwkvKiBBbGwgY29tcHV0YXRpb24gaW4gUTIzICovDQorDQorCWZbMF0gPSB2b19MX211bHQoNDA5NiwgMTAyNCk7ICAgICAgICAgICAgICAgLyogZlswXSA9IDEuMDsgICAgICAgIGluIFEyMyAgKi8NCisJZlsxXSA9IHZvX0xfbXVsdChpc3BbMF0sIC0yNTYpOyAgICAgICAgICAgICAvKiBmWzFdID0gLTIuMCppc3BbMF0gaW4gUTIzICAqLw0KKw0KKwlmICs9IDI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFkdmFuY2UgZiBwb2ludGVyICAgICAgICAgICovDQorCWlzcCArPSAyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQWR2YW5jZSBpc3AgcG9pbnRlciAgICAgICAgKi8NCisJZm9yIChpID0gMjsgaSA8PSBuOyBpKyspDQorCXsNCisJCSpmID0gZlstMl07ICAgICAgICAgICAgICAgICAgICAgICAgDQorCQlmb3IgKGogPSAxOyBqIDwgaTsgaisrLCBmLS0pDQorCQl7DQorCQkJaGkgPSBmWy0xXT4+MTY7DQorCQkJbG8gPSAoZlstMV0gJiAweGZmZmYpPj4xOw0KKw0KKwkJCXQwID0gTXB5XzMyXzE2KGhpLCBsbywgKmlzcCk7ICAvKiB0MCA9IGZbLTFdICogaXNwICAgICovDQorCQkJdDAgPSB0MCA8PCAxOw0KKwkJCSpmID0gdm9fTF9zdWIoKmYsIHQwKTsgICAgICAgICAgICAgIC8qICpmIC09IHQwICAgICAgICAgICAgKi8NCisJCQkqZiA9IHZvX0xfYWRkKCpmLCBmWy0yXSk7ICAgICAgICAgICAvKiAqZiArPSBmWy0yXSAgICAgICAgICovDQorCQl9DQorCQkqZiAtPSAoKmlzcCA8PCA5KTsgICAgICAgICAgIC8qICpmIC09IGlzcDw8OCAgICAgICAgKi8NCisJCWYgKz0gaTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQWR2YW5jZSBmIHBvaW50ZXIgICAqLw0KKwkJaXNwICs9IDI7ICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBZHZhbmNlIGlzcCBwb2ludGVyICovDQorCX0NCisJcmV0dXJuOw0KK30NCisNCitzdGF0aWMgdm9pZCBHZXRfaXNwX3BvbF8xNmtIeihXb3JkMTYgKiBpc3AsIFdvcmQzMiAqIGYsIFdvcmQxNiBuKQ0KK3sNCisJV29yZDE2IGhpLCBsbzsNCisJV29yZDMyIGksIGosIHQwOw0KKw0KKwkvKiBBbGwgY29tcHV0YXRpb24gaW4gUTIzICovDQorCWZbMF0gPSBMX211bHQoNDA5NiwgMjU2KTsgICAgICAgICAgICAgICAgLyogZlswXSA9IDEuMDsgICAgICAgIGluIFEyMyAgKi8NCisJZlsxXSA9IExfbXVsdChpc3BbMF0sIC02NCk7ICAgICAgICAgICAgICAvKiBmWzFdID0gLTIuMCppc3BbMF0gaW4gUTIzICAqLw0KKw0KKwlmICs9IDI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFkdmFuY2UgZiBwb2ludGVyICAgICAgICAgICovDQorCWlzcCArPSAyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQWR2YW5jZSBpc3AgcG9pbnRlciAgICAgICAgKi8NCisNCisJZm9yIChpID0gMjsgaSA8PSBuOyBpKyspDQorCXsNCisJCSpmID0gZlstMl07ICAgICAgICAgICAgICAgICAgICAgICAgDQorCQlmb3IgKGogPSAxOyBqIDwgaTsgaisrLCBmLS0pDQorCQl7DQorCQkJVk9fTF9FeHRyYWN0KGZbLTFdLCAmaGksICZsbyk7DQorCQkJdDAgPSBNcHlfMzJfMTYoaGksIGxvLCAqaXNwKTsgIC8qIHQwID0gZlstMV0gKiBpc3AgICAgKi8NCisJCQl0MCA9IExfc2hsMih0MCwgMSk7DQorCQkJKmYgPSBMX3N1YigqZiwgdDApOyAgICAgICAgICAgICAgLyogKmYgLT0gdDAgICAgICAgICAgICAqLw0KKwkJCSpmID0gTF9hZGQoKmYsIGZbLTJdKTsgICAgICAgICAgIC8qICpmICs9IGZbLTJdICAgICAgICAgKi8NCisJCX0NCisJCSpmID0gTF9tc3UoKmYsICppc3AsIDY0KTsgICAgICAgICAgICAvKiAqZiAtPSBpc3A8PDggICAgICAgICovDQorCQlmICs9IGk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEFkdmFuY2UgZiBwb2ludGVyICAgKi8NCisJCWlzcCArPSAyOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogQWR2YW5jZSBpc3AgcG9pbnRlciAqLw0KKwl9DQorCXJldHVybjsNCit9DQorDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9pc3BfaXNmLmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2lzcF9pc2YuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YzZlMzg5Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9pc3BfaXNmLmMKQEAgLTAsMCArMSw5MSBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqICAgICAgIEZpbGU6IGlzcF9pc2YuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgIERlc2NyaXB0aW9uOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqCUlzcF9pc2YgICBUcmFuc2Zvcm1hdGlvbiBpc3AgdG8gaXNmICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqCUlzZl9pc3AgICBUcmFuc2Zvcm1hdGlvbiBpc2YgdG8gaXNwICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqCVRoZSB0cmFuc2Zvcm1hdGlvbiBmcm9tIGlzcFtpXSB0byBpc2ZbaV0gYW5kIGlzZltpXSB0byBpc3BbaV0gICoNCisqCWFyZSBhcHByb3hpbWF0ZWQgYnkgYSBsb29rLXVwIHRhYmxlIGFuZCBpbnRlcnBvbGF0aW9uICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2luY2x1ZGUgInR5cGVkZWYuaCINCisjaW5jbHVkZSAiYmFzaWNfb3AuaCINCisjaW5jbHVkZSAiaXNwX2lzZi50YWIiICAgICAgICAgICAgICAgICAgICAgLyogTG9vay11cCB0YWJsZSBmb3IgdHJhbnNmb3JtYXRpb25zICovDQorDQordm9pZCBJc3BfaXNmKA0KKwkJV29yZDE2IGlzcFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTE1IDogaXNwW21dIChyYW5nZTogLTE8PXZhbDwxKSAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IGlzZltdLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgUTE1IDogaXNmW21dIG5vcm1hbGl6ZWQgKHJhbmdlOiAwLjA8PXZhbDw9MC41KSAqLw0KKwkJV29yZDE2IG0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogTFBDIG9yZGVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkgICAgKQ0KK3sNCisJV29yZDMyIGksIGluZDsNCisJV29yZDMyIExfdG1wOw0KKwlpbmQgPSAxMjc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGJlZ2luZyBhdCBlbmQgb2YgdGFibGUgLTEgKi8NCisJZm9yIChpID0gKG0gLSAxKTsgaSA+PSAwOyBpLS0pDQorCXsNCisJCWlmIChpID49IChtIC0gMikpDQorCQl7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG0tMiBpcyBhIGNvbnN0YW50ICovDQorCQkJaW5kID0gMTI3OyAgICAgICAgICAgICAgICAgICAgICAgLyogYmVnaW5nIGF0IGVuZCBvZiB0YWJsZSAtMSAqLw0KKwkJfQ0KKwkJLyogZmluZCB2YWx1ZSBpbiB0YWJsZSB0aGF0IGlzIGp1c3QgZ3JlYXRlciB0aGFuIGlzcFtpXSAqLw0KKwkJd2hpbGUgKHRhYmxlW2luZF0gPCBpc3BbaV0pDQorCQkJaW5kLS07DQorCQkvKiBhY29zKGlzcFtpXSk9IGluZCoxMjggKyAoICggaXNwW2ldLXRhYmxlW2luZF0gKSAqIHNsb3BlW2luZF0gKS8yMDQ4ICovDQorCQlMX3RtcCA9IHZvX0xfbXVsdCh2b19zdWIoaXNwW2ldLCB0YWJsZVtpbmRdKSwgc2xvcGVbaW5kXSk7DQorCQlpc2ZbaV0gPSB2b19yb3VuZCgoTF90bXAgPDwgNCkpOyAgIC8qIChpc3BbaV0tdGFibGVbaW5kXSkqc2xvcGVbaW5kXSk+PjExICovDQorCQlpc2ZbaV0gPSBhZGQxKGlzZltpXSwgKGluZCA8PCA3KSk7IA0KKwl9DQorCWlzZlttIC0gMV0gPSAoaXNmW20gLSAxXSA+PiAxKTsgICAgICANCisJcmV0dXJuOw0KK30NCisNCisNCit2b2lkIElzZl9pc3AoDQorCQlXb3JkMTYgaXNmW10sICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRMTUgOiBpc2ZbbV0gbm9ybWFsaXplZCAocmFuZ2U6IDAuMDw9dmFsPD0wLjUpICovDQorCQlXb3JkMTYgaXNwW10sICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSBRMTUgOiBpc3BbbV0gKHJhbmdlOiAtMTw9dmFsPDEpICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBMUEMgb3JkZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCSAgICApDQorew0KKwlXb3JkMTYgb2Zmc2V0Ow0KKwlXb3JkMzIgaSwgaW5kLCBMX3RtcDsNCisNCisJZm9yIChpID0gMDsgaSA8IG0gLSAxOyBpKyspDQorCXsNCisJCWlzcFtpXSA9IGlzZltpXTsgICAgICAgICAgICAgICAgICANCisJfQ0KKwlpc3BbbSAtIDFdID0gKGlzZlttIC0gMV0gPDwgMSk7DQorDQorCWZvciAoaSA9IDA7IGkgPCBtOyBpKyspDQorCXsNCisJCWluZCA9IChpc3BbaV0gPj4gNyk7ICAgICAgICAgICAgICAgICAgICAgIC8qIGluZCAgICA9IGI3LWIxNSBvZiBpc2ZbaV0gKi8NCisJCW9mZnNldCA9IChXb3JkMTYpIChpc3BbaV0gJiAweDAwN2YpOyAgICAgIC8qIG9mZnNldCA9IGIwLWI2ICBvZiBpc2ZbaV0gKi8NCisNCisJCS8qIGlzcFtpXSA9IHRhYmxlW2luZF0rICgodGFibGVbaW5kKzFdLXRhYmxlW2luZF0pKm9mZnNldCkgLyAxMjggKi8NCisJCUxfdG1wID0gdm9fTF9tdWx0KHZvX3N1Yih0YWJsZVtpbmQgKyAxXSwgdGFibGVbaW5kXSksIG9mZnNldCk7DQorCQlpc3BbaV0gPSBhZGQxKHRhYmxlW2luZF0sIChXb3JkMTYpKChMX3RtcCA+PiA4KSkpOyAgIA0KKwl9DQorDQorCXJldHVybjsNCit9DQorDQorDQorDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9sYWdfd2luZC5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9sYWdfd2luZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzOTc3MDQKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2xhZ193aW5kLmMKQEAgLTAsMCArMSw0OSBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqICAgICAgRmlsZTogbGFnX3dpbmQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqCSAgIERlc2NyaXB0aW9uOiBMYWdfd2luZG93cyBvbiBhdXRvY29ycmVsYXRpb25zICAgICAgICAgICAgICAgICoNCisqCSAgICAgICAgICAgICAgICByW2ldICo9IGxhZ193aW5kW2ldICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2luY2x1ZGUgInR5cGVkZWYuaCINCisjaW5jbHVkZSAiYmFzaWNfb3AuaCINCisjaW5jbHVkZSAib3Blcl8zMmIuaCINCisjaW5jbHVkZSAibGFnX3dpbmQudGFiIg0KKw0KKw0KK3ZvaWQgTGFnX3dpbmRvdygNCisJCVdvcmQxNiByX2hbXSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkvbykgICA6IEF1dG9jb3JyZWxhdGlvbnMgIChtc2IpICAgICAgICAgICovDQorCQlXb3JkMTYgcl9sW10gICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpL28pICAgOiBBdXRvY29ycmVsYXRpb25zICAobHNiKSAgICAgICAgICAqLw0KKwkgICAgICAgKQ0KK3sNCisJV29yZDMyIGk7DQorCVdvcmQzMiB4Ow0KKw0KKwlmb3IgKGkgPSAxOyBpIDw9IE07IGkrKykNCisJew0KKwkJeCA9IE1weV8zMihyX2hbaV0sIHJfbFtpXSwgdm9sYWdfaFtpIC0gMV0sIHZvbGFnX2xbaSAtIDFdKTsNCisJCXJfaFtpXSA9IHggPj4gMTY7DQorCQlyX2xbaV0gPSAoeCAmIDB4ZmZmZik+PjE7DQorCX0NCisJcmV0dXJuOw0KK30NCisNCisNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2xldmluc29uLmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2xldmluc29uLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGJjNmY2MgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvbGV2aW5zb24uYwpAQCAtMCwwICsxLDI1MCBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqICAgICAgRmlsZTogbGV2aW5zb24uYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgRGVzY3JpcHRpb246TEVWSU5TT04tRFVSQklOIGFsZ29yaXRobSBpbiBkb3VibGUgcHJlY2lzaW9uICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorICogICAgICAgICAgICAgICAgICAgICAgICAgTEVWSU5TT04uQwkJCQkJICAgICAqDQorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICBMRVZJTlNPTi1EVVJCSU4gYWxnb3JpdGhtIGluIGRvdWJsZSBwcmVjaXNpb24gICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogQWxnb3JpdGhtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgUltpXSAgICBhdXRvY29ycmVsYXRpb25zLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgQVtpXSAgICBmaWx0ZXIgY29lZmZpY2llbnRzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgSyAgICAgICByZWZsZWN0aW9uIGNvZWZmaWNpZW50cy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgQWxwaGEgICBwcmVkaWN0aW9uIGdhaW4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgSW5pdGlhbGl6YXRpb246ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICBBWzBdID0gMSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICBLICAgID0gLVJbMV0vUlswXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICBBWzFdID0gSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICBBbHBoYSA9IFJbMF0gKiAoMS1LKioyXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgRG8gZm9yICBpID0gMiB0byBNICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICBTID0gIFNVTSAoIFJbal0qQVtpLWpdICxqPTEsaS0xICkgKyAgUltpXSAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICBLID0gLVMgLyBBbHBoYSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICBBbltqXSA9IEFbal0gKyBLKkFbaS1qXSAgIGZvciBqPTEgdG8gaS0xICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoZXJlICAgQW5baV0gPSBuZXcgQVtpXSAgICAgICAgICAgICAqDQorICogICAgICAgICAgICBBbltpXT1LICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICBBbHBoYT1BbHBoYSAqICgxLUsqKjIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgRU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogUmVtYXJrcyBvbiB0aGUgZHluYW1pY3Mgb2YgdGhlIGNhbGN1bGF0aW9ucy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgVGhlIG51bWJlcnMgdXNlZCBhcmUgaW4gZG91YmxlIHByZWNpc2lvbiBpbiB0aGUgZm9sbG93aW5nIGZvcm1hdCA6ICAqDQorICogICAgICAgQSA9IEFIIDw8MTYgKyBBTDw8MS4gIEFIIGFuZCBBTCBhcmUgMTYgYml0IHNpZ25lZCBpbnRlZ2Vycy4gICAgICAgICAqDQorICogICAgICAgU2luY2UgdGhlIExTQidzIGFsc28gY29udGFpbiBhIHNpZ24gYml0LCB0aGlzIGZvcm1hdCBkb2VzIG5vdCAgICAgICAqDQorICogICAgICAgY29ycmVzcG9uZCB0byBzdGFuZGFyZCAzMiBiaXQgaW50ZWdlcnMuICBXZSB1c2UgdGhpcyBmb3JtYXQgc2luY2UgICAqDQorICogICAgICAgaXQgYWxsb3dzIGZhc3QgZXhlY3V0aW9uIG9mIG11bHRpcGxpY2F0aW9ucyBhbmQgZGl2aXNpb25zLiAgICAgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgIkRQRiIgd2lsbCByZWZlciB0byB0aGlzIHNwZWNpYWwgZm9ybWF0IGluIHRoZSBmb2xsb3dpbmcgdGV4dC4gICAgICAqDQorICogICAgICAgU2VlIG9wZXJfMzJiLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgVGhlIFJbaV0gd2VyZSBub3JtYWxpemVkIGluIHJvdXRpbmUgQVVUTyAoaGVuY2UsIFJbaV0gPCAxLjApLiAgICAgICAqDQorICogICAgICAgVGhlIEtbaV0gYW5kIEFscGhhIGFyZSB0aGVvcmV0aWNhbGx5IDwgMS4wLiAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgVGhlIEFbaV0sIGZvciBhIHNhbXBsaW5nIGZyZXF1ZW5jeSBvZiA4IGtIeiwgYXJlIGluIHByYWN0aWNlICAgICAgICAqDQorICogICAgICAgYWx3YXlzIGluZmVyaW9yIHRvIDE2LjAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgVGhlc2UgY2hhcmFjdGVyaXN0aWNzIGFsbG93IHN0cmFpZ3RoZm9yd2FyZCBmaXhlZC1wb2ludCAgICAgICAgICAgICAqDQorICogICAgICAgaW1wbGVtZW50YXRpb24uICBXZSBjaG9vc2UgdG8gcmVwcmVzZW50IHRoZSBwYXJhbWV0ZXJzIGFzICAgICAgICAgICAqDQorICogICAgICAgZm9sbG93cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICBSW2ldICAgIFEzMSAgICstIC45OS4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICBLW2ldICAgIFEzMSAgICstIC45OS4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICBBbHBoYSAgIE5vcm1hbGl6ZWQgLT4gbWFudGlzc2EgaW4gUTMxIHBsdXMgZXhwb25lbnQgICAgICAgICAqDQorICogICAgICAgICAgICAgICBBW2ldICAgIFEyNyAgICstIDE1Ljk5OS4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgVGhlIGFkZGl0aW9ucyBhcmUgcGVyZm9ybWVkIGluIDMyIGJpdC4gIEZvciB0aGUgc3VtbWF0aW9uIHVzZWQgICAgICAqDQorICogICAgICAgdG8gY2FsY3VsYXRlIHRoZSBLW2ldLCB3ZSBtdWx0aXBseSBudW1iZXJzIGluIFEzMSBieSBudW1iZXJzICAgICAgICAqDQorICogICAgICAgaW4gUTI3LCB3aXRoIHRoZSByZXN1bHQgb2YgdGhlIG11bHRpcGxpY2F0aW9ucyBpbiBRMjcsICAgICAgICAgICAgICAqDQorICogICAgICAgcmVzdWx0aW5nIGluIGEgZHluYW1pYyBvZiArLSAxNi4gIFRoaXMgaXMgc3VmZmljaWVudCB0byBhdm9pZCAgICAgICAqDQorICogICAgICAgb3ZlcmZsb3csIHNpbmNlIHRoZSBmaW5hbCByZXN1bHQgb2YgdGhlIHN1bW1hdGlvbiBpcyAgICAgICAgICAgICAgICAqDQorICogICAgICAgbmVjZXNzYXJpbHkgPCAxLjAgYXMgYm90aCB0aGUgS1tpXSBhbmQgQWxwaGEgYXJlICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgdGhlb3JldGljYWxseSA8IDEuMC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18qLw0KKyNpbmNsdWRlICJ0eXBlZGVmLmgiDQorI2luY2x1ZGUgImJhc2ljX29wLmgiDQorI2luY2x1ZGUgIm9wZXJfMzJiLmgiDQorI2luY2x1ZGUgImFjZWxwLmgiDQorDQorI2RlZmluZSBNICAgMTYNCisjZGVmaW5lIE5DICAoTS8yKQ0KKw0KK3ZvaWQgSW5pdF9MZXZpbnNvbigNCisJCVdvcmQxNiAqIG1lbSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogb3V0cHV0ICA6c3RhdGljIG1lbW9yeSAoMTggd29yZHMpICovDQorCQkpDQorew0KKwlTZXRfemVybyhtZW0sIDE4KTsgICAgICAgICAgICAgICAgICAgICAvKiBvbGRfQVswLi5NLTFdID0gMCwgb2xkX3JjWzAuLjFdID0gMCAqLw0KKwlyZXR1cm47DQorfQ0KKw0KKw0KK3ZvaWQgTGV2aW5zb24oDQorCQlXb3JkMTYgUmhbXSwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBSaFtNKzFdIFZlY3RvciBvZiBhdXRvY29ycmVsYXRpb25zIChtc2IpICovDQorCQlXb3JkMTYgUmxbXSwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBSbFtNKzFdIFZlY3RvciBvZiBhdXRvY29ycmVsYXRpb25zIChsc2IpICovDQorCQlXb3JkMTYgQVtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSBRMTIgOiBBW01dICAgIExQQyBjb2VmZmljaWVudHMgIChtID0gMTYpICAgICAgICovDQorCQlXb3JkMTYgcmNbXSwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSBRMTUgOiByY1tNXSAgIFJlZmxlY3Rpb24gY29lZmZpY2llbnRzLiAgICAgICAgICovDQorCQlXb3JkMTYgKiBtZW0gICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpL28pICAgOnN0YXRpYyBtZW1vcnkgKDE4IHdvcmRzKSAgICAgICAgICAgICAgICAgICovDQorCSAgICAgKQ0KK3sNCisJV29yZDMyIGksIGo7DQorCVdvcmQxNiBoaSwgbG87DQorCVdvcmQxNiBLaCwgS2w7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHJlZmxlY3Rpb24gY29lZmZpY2llbnQ7IGhpIGFuZCBsbyAgICAgICAgICAgKi8NCisJV29yZDE2IGFscF9oLCBhbHBfbCwgYWxwX2V4cDsgICAgICAgICAgLyogUHJlZGljdGlvbiBnYWluOyBoaSBsbyBhbmQgZXhwb25lbnQgICAgICAgICAqLw0KKwlXb3JkMTYgQWhbTSArIDFdLCBBbFtNICsgMV07ICAgICAgICAgICAvKiBMUEMgY29lZi4gaW4gZG91YmxlIHByZWMuICAgICAgICAgICAgICAgICAgICovDQorCVdvcmQxNiBBbmhbTSArIDFdLCBBbmxbTSArIDFdOyAgICAgICAgIC8qIExQQyBjb2VmLmZvciBuZXh0IGl0ZXJhdGlvbiBpbiBkb3VibGUgcHJlYy4gKi8NCisJV29yZDMyIHQwLCB0MSwgdDI7ICAgICAgICAgICAgICAgICAgICAgLyogdGVtcG9yYXJ5IHZhcmlhYmxlICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwlXb3JkMTYgKm9sZF9BLCAqb2xkX3JjOw0KKw0KKwkvKiBMYXN0IEEoeikgZm9yIGNhc2Ugb2YgdW5zdGFibGUgZmlsdGVyICovDQorCW9sZF9BID0gbWVtOyAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwlvbGRfcmMgPSBtZW0gKyBNOyAgICAgICAgICAgICAgICAgICAgICANCisNCisJLyogSyA9IEFbMV0gPSAtUlsxXSAvIFJbMF0gKi8NCisNCisJdDEgPSAoKFJoWzFdIDw8IDE2KSArIChSbFsxXSA8PCAxKSk7ICAgLyogUlsxXSBpbiBRMzEgKi8NCisJdDIgPSBMX2Ficyh0MSk7ICAgICAgICAgICAgICAgICAgICAgICAgLyogYWJzIFJbMV0gICAgICAgICAqLw0KKwl0MCA9IERpdl8zMih0MiwgUmhbMF0sIFJsWzBdKTsgICAgICAgICAvKiBSWzFdL1JbMF0gaW4gUTMxICovDQorCWlmICh0MSA+IDApDQorCQl0MCA9IC10MDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIC1SWzFdL1JbMF0gICAgICAgKi8NCisNCisJS2ggPSB0MCA+PiAxNjsNCisJS2wgPSAodDAgJiAweGZmZmYpPj4xOw0KKwlyY1swXSA9IEtoOyAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJdDAgPSAodDAgPj4gNCk7ICAgICAgICAgICAgICAgICAgICAgICAgLyogQVsxXSBpbiBRMjcgICAgICAqLw0KKw0KKwlBaFsxXSA9IHQwID4+IDE2Ow0KKwlBbFsxXSA9ICh0MCAmIDB4ZmZmZik+PjE7DQorDQorCS8qIEFscGhhID0gUlswXSAqICgxLUsqKjIpICovDQorCXQwID0gTXB5XzMyKEtoLCBLbCwgS2gsIEtsKTsgICAgICAgICAgIC8qIEsqSyAgICAgIGluIFEzMSAqLw0KKwl0MCA9IExfYWJzKHQwKTsgICAgICAgICAgICAgICAgICAgICAgICAvKiBTb21lIGNhc2UgPDAgISEgKi8NCisJdDAgPSB2b19MX3N1YigoV29yZDMyKSAweDdmZmZmZmZmTCwgdDApOyAgLyogMSAtIEsqSyAgaW4gUTMxICovDQorDQorCWhpID0gdDAgPj4gMTY7DQorCWxvID0gKHQwICYgMHhmZmZmKT4+MTsNCisNCisJdDAgPSBNcHlfMzIoUmhbMF0sIFJsWzBdLCBoaSwgbG8pOyAgICAgLyogQWxwaGEgaW4gUTMxICAgICovDQorDQorCS8qIE5vcm1hbGl6ZSBBbHBoYSAqLw0KKwlhbHBfZXhwID0gbm9ybV9sKHQwKTsNCisJdDAgPSAodDAgPDwgYWxwX2V4cCk7DQorDQorCWFscF9oID0gdDAgPj4gMTY7DQorCWFscF9sID0gKHQwICYgMHhmZmZmKT4+MTsNCisJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJICogSVRFUkFUSU9OUyAgST0yIHRvIE0gICAgICAgICAgICAgICAgICoNCisJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorCWZvciAoaSA9IDI7IGkgPD0gTTsgaSsrKQ0KKwl7DQorCQkvKiB0MCA9IFNVTSAoIFJbal0qQVtpLWpdICxqPTEsaS0xICkgKyAgUltpXSAqLw0KKwkJdDAgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwkJZm9yIChqID0gMTsgaiA8IGk7IGorKykNCisJCQl0MCA9IHZvX0xfYWRkKHQwLCBNcHlfMzIoUmhbal0sIFJsW2pdLCBBaFtpIC0gal0sIEFsW2kgLSBqXSkpOw0KKw0KKwkJdDAgPSB0MCA8PCA0OyAgICAgICAgICAgICAgICAgLyogcmVzdWx0IGluIFEyNyAtPiBjb252ZXJ0IHRvIFEzMSAqLw0KKwkJLyogTm8gb3ZlcmZsb3cgcG9zc2libGUgICAgICAgICAgICAqLw0KKwkJdDEgPSAoKFJoW2ldIDw8IDE2KSArIChSbFtpXSA8PCAxKSk7DQorCQl0MCA9IHZvX0xfYWRkKHQwLCB0MSk7ICAgICAgICAgICAgICAgIC8qIGFkZCBSW2ldIGluIFEzMSAgICAgICAgICAgICAgICAgKi8NCisNCisJCS8qIEsgPSAtdDAgLyBBbHBoYSAqLw0KKwkJdDEgPSBMX2Ficyh0MCk7DQorCQl0MiA9IERpdl8zMih0MSwgYWxwX2gsIGFscF9sKTsgICAgIC8qIGFicyh0MCkvQWxwaGEgICAgICAgICAgICAgICAgICAgKi8NCisJCWlmICh0MCA+IDApDQorCQkJdDIgPSAtdDI7ICAgICAgICAgICAgICAgICAgIC8qIEsgPS10MC9BbHBoYSAgICAgICAgICAgICAgICAgICAgKi8NCisJCXQyID0gKHQyIDw8IGFscF9leHApOyAgICAgICAgICAgLyogZGVub3JtYWxpemU7IGNvbXBhcmUgdG8gQWxwaGEgICAqLw0KKw0KKwkJS2ggPSB0MiA+PiAxNjsNCisJCUtsID0gKHQyICYgMHhmZmZmKT4+MTsNCisNCisJCXJjW2kgLSAxXSA9IEtoOyAgICAgICAgICAgICAgICAgICANCisJCS8qIFRlc3QgZm9yIHVuc3RhYmxlIGZpbHRlci4gSWYgdW5zdGFibGUga2VlcCBvbGQgQSh6KSAqLw0KKwkJaWYgKGFic19zKEtoKSA+IDMyNzUwKQ0KKwkJew0KKwkJCUFbMF0gPSA0MDk2OyAgICAgICAgICAgICAgICAgICAgLyogQWlbMF0gbm90IHN0b3JlZCAoYWx3YXlzIDEuMCkgKi8NCisJCQlmb3IgKGogPSAwOyBqIDwgTTsgaisrKQ0KKwkJCXsNCisJCQkJQVtqICsgMV0gPSBvbGRfQVtqXTsgICAgICAgDQorCQkJfQ0KKwkJCXJjWzBdID0gb2xkX3JjWzBdOyAgICAgICAgICAgICAvKiBvbmx5IHR3byByYyBjb2VmZmljaWVudHMgYXJlIG5lZWRlZCAqLw0KKwkJCXJjWzFdID0gb2xkX3JjWzFdOw0KKwkJCXJldHVybjsNCisJCX0NCisJCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkJICogIENvbXB1dGUgbmV3IExQQyBjb2VmZi4gLT4gQW5baV0gICAgICAgICAqDQorCQkgKiAgQW5bal09IEFbal0gKyBLKkFbaS1qXSAgICAgLCBqPTEgdG8gaS0xICoNCisJCSAqICBBbltpXT0gSyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKwkJZm9yIChqID0gMTsgaiA8IGk7IGorKykNCisJCXsNCisJCQl0MCA9IE1weV8zMihLaCwgS2wsIEFoW2kgLSBqXSwgQWxbaSAtIGpdKTsNCisJCQl0MCA9IHZvX0xfYWRkKHQwLCAoKEFoW2pdIDw8IDE2KSArIChBbFtqXSA8PCAxKSkpOw0KKwkJCUFuaFtqXSA9IHQwID4+IDE2Ow0KKwkJCUFubFtqXSA9ICh0MCAmIDB4ZmZmZik+PjE7DQorCQl9DQorCQl0MiA9ICh0MiA+PiA0KTsgICAgICAgICAgICAgICAgIC8qIHQyID0gSyBpbiBRMzEgLT5jb252ZXJ0IHRvIFEyNyAgKi8NCisNCisJCVZPX0xfRXh0cmFjdCh0MiwgJkFuaFtpXSwgJkFubFtpXSk7ICAgLyogQW5baV0gaW4gUTI3ICAgICAgICAgICAgICAgICAgICAqLw0KKw0KKwkJLyogQWxwaGEgPSBBbHBoYSAqICgxLUsqKjIpICovDQorCQl0MCA9IE1weV8zMihLaCwgS2wsIEtoLCBLbCk7ICAgICAgICAgICAgICAgLyogSypLICAgICAgaW4gUTMxICovDQorCQl0MCA9IExfYWJzKHQwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU29tZSBjYXNlIDwwICEhICovDQorCQl0MCA9IHZvX0xfc3ViKChXb3JkMzIpIDB4N2ZmZmZmZmZMLCB0MCk7ICAgLyogMSAtIEsqSyAgaW4gUTMxICovDQorCQloaSA9IHQwID4+IDE2Ow0KKwkJbG8gPSAodDAgJiAweGZmZmYpPj4xOw0KKwkJdDAgPSBNcHlfMzIoYWxwX2gsIGFscF9sLCBoaSwgbG8pOyAvKiBBbHBoYSBpbiBRMzEgICAgKi8NCisNCisJCS8qIE5vcm1hbGl6ZSBBbHBoYSAqLw0KKwkJaiA9IG5vcm1fbCh0MCk7DQorCQl0MCA9ICh0MCA8PCBqKTsNCisJCWFscF9oID0gdDAgPj4gMTY7DQorCQlhbHBfbCA9ICh0MCAmIDB4ZmZmZik+PjE7DQorCQlhbHBfZXhwICs9IGo7ICAgICAgICAgLyogQWRkIG5vcm1hbGl6YXRpb24gdG8gYWxwX2V4cCAqLw0KKw0KKwkJLyogQVtqXSA9IEFuW2pdICovDQorCQlmb3IgKGogPSAxOyBqIDw9IGk7IGorKykNCisJCXsNCisJCQlBaFtqXSA9IEFuaFtqXTsgICAgICAgICAgICAgICANCisJCQlBbFtqXSA9IEFubFtqXTsgICAgICAgICAgICAgICAgDQorCQl9DQorCX0NCisJLyogVHJ1bmNhdGUgQVtpXSBpbiBRMjcgdG8gUTEyIHdpdGggcm91bmRpbmcgKi8NCisJQVswXSA9IDQwOTY7ICAgICAgICAgICAgICAgICAgICAgICAgICANCisJZm9yIChpID0gMTsgaSA8PSBNOyBpKyspDQorCXsNCisJCXQwID0gKEFoW2ldIDw8IDE2KSArIChBbFtpXSA8PCAxKTsNCisJCW9sZF9BW2kgLSAxXSA9IEFbaV0gPSB2b19yb3VuZCgodDAgPDwgMSkpOyAgICAgIA0KKwl9DQorCW9sZF9yY1swXSA9IHJjWzBdOyAgICAgICAgICAgICAgICAgICAgDQorCW9sZF9yY1sxXSA9IHJjWzFdOyAgICAgICAgICAgICAgICAgICAgDQorDQorCXJldHVybjsNCit9DQorDQorDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9sb2cyLmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2xvZzIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDNkODE1Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9sb2cyLmMKQEAgLTAsMCArMSwxMTEgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgIEZpbGUgICAgICAgICAgICAgOiBsb2cyLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgIFB1cnBvc2UgICAgICAgICAgOiBDb21wdXRlcyBsb2cyKExfeCkgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKyNpbmNsdWRlICJsb2cyLmgiDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICBJTkNMVURFIEZJTEVTDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyNpbmNsdWRlICJ0eXBlZGVmLmgiDQorI2luY2x1ZGUgImJhc2ljX29wLmgiDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgTE9DQUwgVkFSSUFCTEVTIEFORCBUQUJMRVMNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyNpbmNsdWRlICJsb2cyX3RhYi5oIiAgICAgLyogVGFibGUgZm9yIExvZzIoKSAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKg0KKyogICBGVU5DVElPTjogICBMb2cyX25vcm0oKQ0KKyoNCisqICAgUFVSUE9TRTogICBDb21wdXRlcyBsb2cyKExfeCwgZXhwKSwgIHdoZXJlICAgTF94IGlzIHBvc2l0aXZlIGFuZA0KKyogICAgICAgICAgICAgIG5vcm1hbGl6ZWQsIGFuZCBleHAgaXMgdGhlIG5vcm1hbGlzYXRpb24gZXhwb25lbnQNCisqICAgICAgICAgICAgICBJZiBMX3ggaXMgbmVnYXRpdmUgb3IgemVybywgdGhlIHJlc3VsdCBpcyAwLg0KKyoNCisqICAgREVTQ1JJUFRJT046DQorKiAgICAgICAgVGhlIGZ1bmN0aW9uIExvZzIoTF94KSBpcyBhcHByb3hpbWF0ZWQgYnkgYSB0YWJsZSBhbmQgbGluZWFyDQorKiAgICAgICAgaW50ZXJwb2xhdGlvbi4gVGhlIGZvbGxvd2luZyBzdGVwcyBhcmUgdXNlZCB0byBjb21wdXRlIExvZzIoTF94KQ0KKyoNCisqICAgICAgICAgICAxLSBleHBvbmVudCA9IDMwLW5vcm1fZXhwb25lbnQNCisqICAgICAgICAgICAyLSBpID0gYml0MjUtYjMxIG9mIExfeDsgIDMyPD1pPD02MyAgKGJlY2F1c2Ugb2Ygbm9ybWFsaXphdGlvbikuDQorKiAgICAgICAgICAgMy0gYSA9IGJpdDEwLWIyNA0KKyogICAgICAgICAgIDQtIGkgLT0zMg0KKyogICAgICAgICAgIDUtIGZyYWN0aW9uID0gdGFibGVbaV08PDE2IC0gKHRhYmxlW2ldIC0gdGFibGVbaSsxXSkgKiBhICogMg0KKyoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KK3ZvaWQgTG9nMl9ub3JtICgNCisJCVdvcmQzMiBMX3gsICAgICAgICAgLyogKGkpIDogaW5wdXQgdmFsdWUgKG5vcm1hbGl6ZWQpICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IGV4cCwgICAgICAgICAvKiAoaSkgOiBub3JtX2wgKExfeCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgKmV4cG9uZW50LCAgIC8qIChvKSA6IEludGVnZXIgcGFydCBvZiBMb2cyLiAgIChyYW5nZTogMDw9dmFsPD0zMCkgKi8NCisJCVdvcmQxNiAqZnJhY3Rpb24gICAgLyogKG8pIDogRnJhY3Rpb25hbCBwYXJ0IG9mIExvZzIuIChyYW5nZTogMDw9dmFsPDEpICAqLw0KKwkgICAgICAgKQ0KK3sNCisJV29yZDE2IGksIGEsIHRtcDsNCisJV29yZDMyIExfeTsNCisJaWYgKExfeCA8PSAoV29yZDMyKSAwKQ0KKwl7DQorCQkqZXhwb25lbnQgPSAwOyANCisJCSpmcmFjdGlvbiA9IDA7IA0KKwkJcmV0dXJuOw0KKwl9DQorCSpleHBvbmVudCA9ICgzMCAtIGV4cCk7IA0KKwlMX3ggPSAoTF94ID4+IDkpOw0KKwlpID0gZXh0cmFjdF9oIChMX3gpOyAgICAgICAgICAgICAgICAvKiBFeHRyYWN0IGIyNS1iMzEgKi8NCisJTF94ID0gKExfeCA+PiAxKTsNCisJYSA9IChXb3JkMTYpKExfeCk7ICAgICAgICAgICAgICAgIC8qIEV4dHJhY3QgYjEwLWIyNCBvZiBmcmFjdGlvbiAqLw0KKwlhID0gKFdvcmQxNikoYSAmIChXb3JkMTYpMHg3ZmZmKTsNCisJaSAtPSAzMjsNCisJTF95ID0gTF9kZXBvc2l0X2ggKHRhYmxlW2ldKTsgICAgICAgLyogdGFibGVbaV0gPDwgMTYgICAgICAgICovDQorCXRtcCA9IHZvX3N1Yih0YWJsZVtpXSwgdGFibGVbaSArIDFdKTsgLyogdGFibGVbaV0gLSB0YWJsZVtpKzFdICovDQorCUxfeSA9IHZvX0xfbXN1IChMX3ksIHRtcCwgYSk7ICAgICAgICAgIC8qIExfeSAtPSB0bXAqYSoyICAgICAgICAqLw0KKwkqZnJhY3Rpb24gPSBleHRyYWN0X2ggKExfeSk7IA0KKw0KKwlyZXR1cm47DQorfQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKg0KKyogICBGVU5DVElPTjogICBMb2cyKCkNCisqDQorKiAgIFBVUlBPU0U6ICAgQ29tcHV0ZXMgbG9nMihMX3gpLCAgd2hlcmUgICBMX3ggaXMgcG9zaXRpdmUuDQorKiAgICAgICAgICAgICAgSWYgTF94IGlzIG5lZ2F0aXZlIG9yIHplcm8sIHRoZSByZXN1bHQgaXMgMC4NCisqDQorKiAgIERFU0NSSVBUSU9OOg0KKyogICAgICAgIG5vcm1hbGl6ZXMgTF94IGFuZCB0aGVuIGNhbGxzIExvZzJfbm9ybSgpLg0KKyoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KK3ZvaWQgTG9nMiAoDQorCQlXb3JkMzIgTF94LCAgICAgICAgIC8qIChpKSA6IGlucHV0IHZhbHVlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiAqZXhwb25lbnQsICAgLyogKG8pIDogSW50ZWdlciBwYXJ0IG9mIExvZzIuICAgKHJhbmdlOiAwPD12YWw8PTMwKSAqLw0KKwkJV29yZDE2ICpmcmFjdGlvbiAgICAvKiAobykgOiBGcmFjdGlvbmFsIHBhcnQgb2YgTG9nMi4gKHJhbmdlOiAwPD12YWw8MSkgKi8NCisJICApDQorew0KKwlXb3JkMTYgZXhwOw0KKw0KKwlleHAgPSBub3JtX2woTF94KTsNCisJTG9nMl9ub3JtICgoTF94IDw8IGV4cCksIGV4cCwgZXhwb25lbnQsIGZyYWN0aW9uKTsNCit9DQorDQorDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9scF9kZWMyLmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL2xwX2RlYzIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42M2I3NDZiCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9scF9kZWMyLmMKQEAgLTAsMCArMSw3MCBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqICAgICAgIEZpbGU6IGxwX2RlYzIuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqCURlc2NyaXB0aW9uOkRlY2ltYXRlIGEgdmVjdG9yIGJ5IDIgd2l0aCAybmQgb3JkZXIgZmlyIGZpbHRlciAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2luY2x1ZGUgInR5cGVkZWYuaCINCisjaW5jbHVkZSAiYmFzaWNfb3AuaCINCisjaW5jbHVkZSAiY25zdC5oIg0KKw0KKyNkZWZpbmUgTF9GSVIgIDUNCisjZGVmaW5lIExfTUVNICAoTF9GSVItMikNCisNCisvKiBzdGF0aWMgZmxvYXQgaF9maXJbTF9GSVJdID0gezAuMTMsIDAuMjMsIDAuMjgsIDAuMjMsIDAuMTN9OyAqLw0KKy8qIGZpeGVkLXBvaW50OiBzdW0gb2YgY29lZiA9IDMyNzY3IHRvIGF2b2lkIG92ZXJmbG93IG9uIERDICovDQorc3RhdGljIFdvcmQxNiBoX2ZpcltMX0ZJUl0gPSB7NDI2MCwgNzUzNiwgOTE3NSwgNzUzNiwgNDI2MH07DQorDQordm9pZCBMUF9EZWNpbTIoDQorCQlXb3JkMTYgeFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGluL291dDogc2lnbmFsIHRvIHByb2Nlc3MgICAgICAgICAqLw0KKwkJV29yZDE2IGwsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IHNpemUgb2YgZmlsdGVyaW5nICAgICAgICAgKi8NCisJCVdvcmQxNiBtZW1bXSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW4vb3V0OiBtZW1vcnkgKHNpemU9MykgICAgICAgICAgICovDQorCSAgICAgICkNCit7DQorCVdvcmQxNiAqcF94LCB4X2J1ZltMX0ZSQU1FICsgTF9NRU1dOw0KKwlXb3JkMzIgaSwgajsNCisJV29yZDMyIExfdG1wOw0KKwkvKiBjb3B5IGluaXRpYWwgZmlsdGVyIHN0YXRlcyBpbnRvIGJ1ZmZlciAqLw0KKwlwX3ggPSB4X2J1ZjsgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJZm9yIChpID0gMDsgaSA8IExfTUVNOyBpKyspDQorCXsNCisJCSpwX3grKyA9IG1lbVtpXTsgIA0KKwkJbWVtW2ldID0geFtsIC0gTF9NRU0gKyBpXTsgIA0KKwl9DQorCWZvciAoaSA9IDA7IGkgPCBsOyBpKyspDQorCXsNCisJCSpwX3grKyA9IHhbaV07ICAgICAgICAgICAgICAgICAgICAgDQorCX0NCisJZm9yIChpID0gMCwgaiA9IDA7IGkgPCBsOyBpICs9IDIsIGorKykNCisJew0KKwkJcF94ID0gJnhfYnVmW2ldOyAgDQorCQlMX3RtcCAgPSAoKCpwX3grKykgKiBoX2ZpclswXSk7DQorCQlMX3RtcCArPSAoKCpwX3grKykgKiBoX2ZpclsxXSk7DQorCQlMX3RtcCArPSAoKCpwX3grKykgKiBoX2ZpclsyXSk7DQorCQlMX3RtcCArPSAoKCpwX3grKykgKiBoX2ZpclszXSk7DQorCQlMX3RtcCArPSAoKCpwX3grKykgKiBoX2Zpcls0XSk7DQorCQl4W2pdID0gKExfdG1wICsgMHg0MDAwKT4+MTU7ICAgICAgICAgICAgICANCisJfQ0KKwlyZXR1cm47DQorfQ0KKw0KKw0KKw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvbWF0aF9vcC5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9tYXRoX29wLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWM5NWVkMAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvbWF0aF9vcC5jCkBAIC0wLDAgKzEsMjE5IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKy8qX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICBUaGlzIGZpbGUgY29udGFpbnMgbWF0aGVtYXRpYyBvcGVyYXRpb25zIGluIGZpeGVkIHBvaW50LiAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgSXNxcnQoKSAgICAgICAgICAgICAgOiBpbnZlcnNlIHNxdWFyZSByb290ICgxNiBiaXRzIHByZWNpc2lvbikuICAgICAgICAgIHwNCit8ICBQb3cyKCkgICAgICAgICAgICAgICA6IDJeeCAgKDE2IGJpdHMgcHJlY2lzaW9uKS4gICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgIExvZzIoKSAgICAgICAgICAgICAgIDogbG9nMiAoMTYgYml0cyBwcmVjaXNpb24pLiAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgRG90X3Byb2R1Y3QoKSAgICAgICAgOiBzY2FsYXIgcHJvZHVjdCBvZiA8eFtdLHlbXT4gICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgIFRoZXNlIG9wZXJhdGlvbnMgYXJlIG5vdCBzdGFuZGFyZCBkb3VibGUgcHJlY2lzaW9uIG9wZXJhdGlvbnMuICAgICAgICAgICB8DQorfCAgVGhleSBhcmUgdXNlZCB3aGVyZSBsb3cgY29tcGxleGl0eSBpcyBpbXBvcnRhbnQgYW5kIHRoZSBmdWxsIDMyIGJpdHMgICAgIHwNCit8ICBwcmVjaXNpb24gaXMgbm90IG5lY2Vzc2FyeS4gRm9yIGV4YW1wbGUsIHRoZSBmdW5jdGlvbiBEaXZfMzIoKSBoYXMgYSAgICAgfA0KK3wgIDI0IGJpdHMgcHJlY2lzaW9uIHdoaWNoIGlzIGVub3VnaCBmb3Igb3VyIHB1cnBvc2VzLiAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICBJbiB0aGlzIGZpbGUsIHRoZSB2YWx1ZXMgdXNlIHRoZXNlcyByZXByZXNlbnRhdGlvbnM6ICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgV29yZDMyIExfMzIgICAgIDogc3RhbmRhcmQgc2lnbmVkIDMyIGJpdHMgZm9ybWF0ICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICBXb3JkMTYgaGksIGxvICAgOiBMXzMyID0gaGk8PDE2ICsgbG88PDEgIChEUEYgLSBEb3VibGUgUHJlY2lzaW9uIEZvcm1hdCkgfA0KK3wgIFdvcmQzMiBmcmFjLCBXb3JkMTYgZXhwIDogTF8zMiA9IGZyYWMgPDwgZXhwLTMxICAobm9ybWFsaXNlZCBmb3JtYXQpICAgICB8DQorfCAgV29yZDE2IGludCwgZnJhYyAgICAgICAgOiBMXzMyID0gaW50LmZyYWMgICAgICAgIChmcmFjdGlvbmFsIGZvcm1hdCkgICAgIHwNCit8X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19ffA0KKyovDQorI2luY2x1ZGUgInR5cGVkZWYuaCINCisjaW5jbHVkZSAiYmFzaWNfb3AuaCINCisjaW5jbHVkZSAibWF0aF9vcC5oIg0KKw0KKy8qX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgRnVuY3Rpb24gTmFtZSA6IElzcXJ0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICBDb21wdXRlIDEvc3FydChMX3gpLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgIGlmIExfeCBpcyBuZWdhdGl2ZSBvciB6ZXJvLCByZXN1bHQgaXMgMSAoN2ZmZmZmZmYpLiAgICAgICAgICAgICAgICAgfA0KK3wtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18DQorfCAgQWxnb3JpdGhtOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAxLSBOb3JtYWxpemF0aW9uIG9mIExfeC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIDItIGNhbGwgSXNxcnRfbihMX3gsIGV4cG9uYW50KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgMy0gTF95ID0gTF94IDw8IGV4cG9uYW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3xfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX198DQorKi8NCitXb3JkMzIgSXNxcnQoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIFEzMSA6IG91dHB1dCB2YWx1ZSAocmFuZ2U6IDA8PXZhbDwxKSAgICAgICAgICovDQorCQlXb3JkMzIgTF94ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRMCAgOiBpbnB1dCB2YWx1ZSAgKHJhbmdlOiAwPD12YWw8PTdmZmZmZmZmKSAqLw0KKwkgICAgKQ0KK3sNCisJV29yZDE2IGV4cDsNCisJV29yZDMyIExfeTsNCisJZXhwID0gbm9ybV9sKExfeCk7DQorCUxfeCA9IChMX3ggPDwgZXhwKTsgICAgICAgICAgICAgICAgIC8qIExfeCBpcyBub3JtYWxpemVkICovDQorCWV4cCA9ICgzMSAtIGV4cCk7DQorCUlzcXJ0X24oJkxfeCwgJmV4cCk7DQorCUxfeSA9IChMX3ggPDwgZXhwKTsgICAgICAgICAgICAgICAgIC8qIGRlbm9ybWFsaXphdGlvbiAgICovDQorCXJldHVybiAoTF95KTsNCit9DQorDQorLypfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBGdW5jdGlvbiBOYW1lIDogSXNxcnRfbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgIENvbXB1dGUgMS9zcXJ0KHZhbHVlKS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgaWYgdmFsdWUgaXMgbmVnYXRpdmUgb3IgemVybywgcmVzdWx0IGlzIDEgKGZyYWM9N2ZmZmZmZmYsIGV4cD0wKS4gICB8DQorfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwNCit8ICBBbGdvcml0aG06ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIFRoZSBmdW5jdGlvbiAxL3NxcnQodmFsdWUpIGlzIGFwcHJveGltYXRlZCBieSBhIHRhYmxlIGFuZCBsaW5lYXIgICAgICAgIHwNCit8ICAgaW50ZXJwb2xhdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIDEtIElmIGV4cG9uYW50IGlzIG9kZCB0aGVuIHNoaWZ0IGZyYWN0aW9uIHJpZ2h0IG9uY2UuICAgICAgICAgICAgICAgICAgIHwNCit8ICAgMi0gZXhwb25hbnQgPSAtKChleHBvbmFudC0xKT4+MSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAzLSBpID0gYml0MjUtYjMwIG9mIGZyYWN0aW9uLCAxNiA8PSBpIDw9IDYzIC0+YmVjYXVzZSBvZiBub3JtYWxpemF0aW9uLiB8DQorfCAgIDQtIGEgPSBiaXQxMC1iMjQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgNS0gaSAtPTE2ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICA2LSBmcmFjdGlvbiA9IHRhYmxlW2ldPDwxNiAtICh0YWJsZVtpXSAtIHRhYmxlW2krMV0pICogYSAqIDIgICAgICAgICAgICB8DQorfF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX3wNCisqLw0KK3N0YXRpYyBXb3JkMTYgdGFibGVfaXNxcnRbNDldID0NCit7DQorCTMyNzY3LCAzMTc5MCwgMzA4OTQsIDMwMDcwLCAyOTMwOSwgMjg2MDIsIDI3OTQ1LCAyNzMzMCwgMjY3NTUsIDI2MjE0LA0KKwkyNTcwNSwgMjUyMjUsIDI0NzcwLCAyNDMzOSwgMjM5MzAsIDIzNTQxLCAyMzE3MCwgMjI4MTcsIDIyNDc5LCAyMjE1NSwNCisJMjE4NDUsIDIxNTQ4LCAyMTI2MywgMjA5ODgsIDIwNzI0LCAyMDQ3MCwgMjAyMjUsIDE5OTg4LCAxOTc2MCwgMTk1MzksDQorCTE5MzI2LCAxOTExOSwgMTg5MTksIDE4NzI1LCAxODUzNiwgMTgzNTQsIDE4MTc2LCAxODAwNCwgMTc4MzcsIDE3Njc0LA0KKwkxNzUxNSwgMTczNjEsIDE3MjExLCAxNzA2NCwgMTY5MjEsIDE2NzgyLCAxNjY0NiwgMTY1MTQsIDE2Mzg0DQorfTsNCisNCit2b2lkIElzcXJ0X24oDQorCQlXb3JkMzIgKiBmcmFjLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpL28pIFEzMTogbm9ybWFsaXplZCB2YWx1ZSAoMS4wIDwgZnJhYyA8PSAwLjUpICovDQorCQlXb3JkMTYgKiBleHAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpL28pICAgIDogZXhwb25lbnQgKHZhbHVlID0gZnJhYyB4IDJeZXhwb25lbnQpICovDQorCSAgICApDQorew0KKwlXb3JkMTYgaSwgYSwgdG1wOw0KKw0KKwlpZiAoKmZyYWMgPD0gKFdvcmQzMikgMCkNCisJew0KKwkJKmV4cCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICANCisJCSpmcmFjID0gMHg3ZmZmZmZmZkw7ICAgICAgICAgICAgICAgDQorCQlyZXR1cm47DQorCX0NCisNCisJaWYoKCpleHAgJiAxKSA9PSAxKSAgICAgICAgICAgICAgICAgICAgICAgLypJZiBleHBvbmFudCBvZGQgLT4gc2hpZnQgcmlnaHQgKi8NCisJCSpmcmFjID0gKCpmcmFjKSA+PiAxOw0KKw0KKwkqZXhwID0gbmVnYXRlKCgqZXhwIC0gMSkgPj4gMSk7ICAgDQorDQorCSpmcmFjID0gKCpmcmFjID4+IDkpOyAgICAgICAgICAgICAgIA0KKwlpID0gZXh0cmFjdF9oKCpmcmFjKTsgICAgICAgICAgICAgICAgICAvKiBFeHRyYWN0IGIyNS1iMzEgKi8NCisJKmZyYWMgPSAoKmZyYWMgPj4gMSk7ICAgICAgICAgICAgICANCisJYSA9IChXb3JkMTYpKCpmcmFjKTsgICAgICAgICAgICAgICAgICAvKiBFeHRyYWN0IGIxMC1iMjQgKi8NCisJYSA9IChXb3JkMTYpIChhICYgKFdvcmQxNikgMHg3ZmZmKTsgICAgDQorCWkgLT0gMTY7DQorCSpmcmFjID0gTF9kZXBvc2l0X2godGFibGVfaXNxcnRbaV0pOyAgIC8qIHRhYmxlW2ldIDw8IDE2ICAgICAgICAgKi8NCisJdG1wID0gdm9fc3ViKHRhYmxlX2lzcXJ0W2ldLCB0YWJsZV9pc3FydFtpICsgMV0pOyAgICAgIC8qIHRhYmxlW2ldIC0gdGFibGVbaSsxXSkgKi8NCisJKmZyYWMgPSB2b19MX21zdSgqZnJhYywgdG1wLCBhKTsgICAgICAgICAgLyogZnJhYyAtPSAgdG1wKmEqMiAgICAgICAqLw0KKw0KKwlyZXR1cm47DQorfQ0KKw0KKy8qX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgRnVuY3Rpb24gTmFtZSA6IFBvdzIoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgTF94ID0gcG93KDIuMCwgZXhwb25hbnQuZnJhY3Rpb24pICAgICAgICAgKGV4cG9uYW50ID0gaW50ZXJnZXIgcGFydCkgIHwNCit8ICAgICAgICAgPSBwb3coMi4wLCAwLmZyYWN0aW9uKSA8PCBleHBvbmFudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18DQorfCAgQWxnb3JpdGhtOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBUaGUgZnVuY3Rpb24gUG93MihMX3gpIGlzIGFwcHJveGltYXRlZCBieSBhIHRhYmxlIGFuZCBsaW5lYXIgICAgICAgICAgICB8DQorfCAgIGludGVycG9sYXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICAxLSBpID0gYml0MTAtYjE1IG9mIGZyYWN0aW9uLCAgIDAgPD0gaSA8PSAzMSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgIDItIGEgPSBiaXQwLWI5ICAgb2YgZnJhY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgMy0gTF94ID0gdGFibGVbaV08PDE2IC0gKHRhYmxlW2ldIC0gdGFibGVbaSsxXSkgKiBhICogMiAgICAgICAgICAgICAgICAgfA0KK3wgICA0LSBMX3ggPSBMX3ggPj4gKDMwLWV4cG9uYW50KSAgICAgKHdpdGggcm91bmRpbmcpICAgICAgICAgICAgICAgICAgICAgICB8DQorfF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX3wNCisqLw0KK3N0YXRpYyBXb3JkMTYgdGFibGVfcG93MlszM10gPQ0KK3sNCisJMTYzODQsIDE2NzQzLCAxNzEwOSwgMTc0ODQsIDE3ODY3LCAxODI1OCwgMTg2NTgsIDE5MDY2LCAxOTQ4NCwgMTk5MTEsDQorCTIwMzQ3LCAyMDc5MiwgMjEyNDcsIDIxNzEzLCAyMjE4OCwgMjI2NzQsIDIzMTcwLCAyMzY3OCwgMjQxOTYsIDI0NzI2LA0KKwkyNTI2OCwgMjU4MjEsIDI2Mzg2LCAyNjk2NCwgMjc1NTQsIDI4MTU4LCAyODc3NCwgMjk0MDUsIDMwMDQ4LCAzMDcwNiwNCisJMzEzNzksIDMyMDY2LCAzMjc2Nw0KK307DQorDQorV29yZDMyIFBvdzIoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSBRMCAgOiByZXN1bHQgICAgICAgKHJhbmdlOiAwPD12YWw8PTB4N2ZmZmZmZmYpICovDQorCQlXb3JkMTYgZXhwb25hbnQsICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRMCAgOiBJbnRlZ2VyIHBhcnQuICAgICAgKHJhbmdlOiAwPD12YWw8PTMwKSAgICovDQorCQlXb3JkMTYgZnJhY3Rpb24gICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRMTUgOiBGcmFjdGlvbm5hbCBwYXJ0LiAgKHJhbmdlOiAwLjA8PXZhbDwxLjApICovDQorCSAgICkNCit7DQorCVdvcmQxNiBleHAsIGksIGEsIHRtcDsNCisJV29yZDMyIExfeDsNCisNCisJTF94ID0gdm9fTF9tdWx0KGZyYWN0aW9uLCAzMik7ICAgICAgICAgICAgLyogTF94ID0gZnJhY3Rpb248PDYgICAgICAgICAgICovDQorCWkgPSBleHRyYWN0X2goTF94KTsgICAgICAgICAgICAgICAgICAgIC8qIEV4dHJhY3QgYjEwLWIxNiBvZiBmcmFjdGlvbiAqLw0KKwlMX3ggPUxfeCA+PiAxOw0KKwlhID0gKFdvcmQxNikoTF94KTsgICAgICAgICAgICAgICAgICAgIC8qIEV4dHJhY3QgYjAtYjkgICBvZiBmcmFjdGlvbiAqLw0KKwlhID0gKFdvcmQxNikgKGEgJiAoV29yZDE2KSAweDdmZmYpOyANCisNCisJTF94ID0gTF9kZXBvc2l0X2godGFibGVfcG93MltpXSk7ICAgICAgLyogdGFibGVbaV0gPDwgMTYgICAgICAgICovDQorCXRtcCA9IHZvX3N1Yih0YWJsZV9wb3cyW2ldLCB0YWJsZV9wb3cyW2kgKyAxXSk7ICAgICAgICAvKiB0YWJsZVtpXSAtIHRhYmxlW2krMV0gKi8NCisJTF94IC09ICh0bXAgKiBhKTw8MTsgICAgICAgICAgICAgIC8qIExfeCAtPSB0bXAqYSoyICAgICAgICAqLw0KKw0KKwlleHAgPSB2b19zdWIoMzAsIGV4cG9uYW50KTsNCisJTF94ID0gdm9fTF9zaHJfcihMX3gsIGV4cCk7DQorDQorCXJldHVybiAoTF94KTsNCit9DQorDQorLypfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCit8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3wgICBGdW5jdGlvbiBOYW1lIDogRG90X3Byb2R1Y3QxMigpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgIENvbXB1dGUgc2NhbGFyIHByb2R1Y3Qgb2YgPHhbXSx5W10+IHVzaW5nIGFjY3VtdWxhdG9yLiAgICAgICAgICAgICAgfA0KK3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICBUaGUgcmVzdWx0IGlzIG5vcm1hbGl6ZWQgKGluIFEzMSkgd2l0aCBleHBvbmVudCAoMC4uMzApLiAgICAgICAgICAgIHwNCit8LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfA0KK3wgIEFsZ29yaXRobTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8DQorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwNCit8ICAgICAgIGRvdF9wcm9kdWN0ID0gc3VtKHhbaV0qeVtpXSkgICAgIGk9MC4uTi0xICAgICAgICAgICAgICAgICAgICAgICAgICAgfA0KK3xfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX198DQorKi8NCisNCitXb3JkMzIgRG90X3Byb2R1Y3QxMiggICAgICAgICAgICAgICAgICAgICAgLyogKG8pIFEzMTogbm9ybWFsaXplZCByZXN1bHQgKDEgPCB2YWwgPD0gLTEpICovDQorCQlXb3JkMTYgeFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAxMmJpdHM6IHggdmVjdG9yICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IHlbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgMTJiaXRzOiB5IHZlY3RvciAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBsZywgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgIDogdmVjdG9yIGxlbmd0aCAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgKiBleHAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSAgICA6IGV4cG9uZW50IG9mIHJlc3VsdCAoMC4uKzMwKSAgICAgICAqLw0KKwkJKQ0KK3sNCisJV29yZDE2IHNmdDsNCisJV29yZDMyIGksIExfc3VtOw0KKwlMX3N1bSA9IDA7DQorCWZvciAoaSA9IDA7IGkgPCBsZzsgaSsrKQ0KKwl7DQorCQlMX3N1bSArPSB4W2ldICogeVtpXTsNCisJfQ0KKwlMX3N1bSA9IChMX3N1bSA8PCAxKSArIDE7DQorCS8qIE5vcm1hbGl6ZSBhY2MgaW4gUTMxICovDQorCXNmdCA9IG5vcm1fbChMX3N1bSk7DQorCUxfc3VtID0gTF9zdW0gPDwgc2Z0Ow0KKwkqZXhwID0gMzAgLSBzZnQ7ICAgICAgICAgICAgLyogZXhwb25lbnQgPSAwLi4zMCAqLw0KKwlyZXR1cm4gKExfc3VtKTsNCisNCit9DQorDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9tZW1fYWxpZ24uYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvbWVtX2FsaWduLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTU4OTE1YQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvbWVtX2FsaWduLmMKQEAgLTAsMCArMSwxMDcgQEAKKy8qCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4KKyAqKgorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqKgorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqKgorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCUZpbGU6CQltZW1fYWxpZ24uYworCisJQ29udGVudDoJTWVtb3J5IGFsbG9jIGFsaWdubWVudHMgZnVuY3Rpb25zCisKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKworI2luY2x1ZGUJIm1lbV9hbGlnbi5oIgorCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogZnVuY3Rpb24gbmFtZTogbWVtX21hbGxvYworKiBkZXNjcmlwdGlvbjogIG1hbGxvYyB0aGUgYWxpZ25tZW50cyBtZW1vcnkgCisqIHJldHVybnM6ICAgICAgdGhlIHBvaW50IG9mIHRoZSBtZW1vcnkKKyoKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCit2b2lkICoKK21lbV9tYWxsb2MoVk9fTUVNX09QRVJBVE9SICpwTWVtb3AsIHVuc2lnbmVkIGludCBzaXplLCB1bnNpZ25lZCBjaGFyIGFsaWdubWVudCwgdW5zaWduZWQgaW50IENvZGVjSUQpCit7CisJaW50IHJldDsKKwl1bnNpZ25lZCBjaGFyICptZW1fcHRyOworCVZPX01FTV9JTkZPIE1lbUluZm87CisKKwlpZiAoIWFsaWdubWVudCkgeworCisJCU1lbUluZm8uRmxhZyA9IDA7CisJCU1lbUluZm8uU2l6ZSA9IHNpemUgKyAxOworCQlyZXQgPSBwTWVtb3AtPkFsbG9jKENvZGVjSUQsICZNZW1JbmZvKTsKKwkJaWYocmV0ICE9IDApCisJCQlyZXR1cm4gMDsKKwkJbWVtX3B0ciA9ICh1bnNpZ25lZCBjaGFyICopTWVtSW5mby5WQnVmZmVyOworCisJCXBNZW1vcC0+U2V0KENvZGVjSUQsIG1lbV9wdHIsIDAsIHNpemUgKyAxKTsKKworCQkqbWVtX3B0ciA9ICh1bnNpZ25lZCBjaGFyKTE7CisKKwkJcmV0dXJuICgodm9pZCAqKShtZW1fcHRyKzEpKTsKKwl9IGVsc2UgeworCQl1bnNpZ25lZCBjaGFyICp0bXA7CisKKwkJTWVtSW5mby5GbGFnID0gMDsKKwkJTWVtSW5mby5TaXplID0gc2l6ZSArIGFsaWdubWVudDsKKwkJcmV0ID0gcE1lbW9wLT5BbGxvYyhDb2RlY0lELCAmTWVtSW5mbyk7CisJCWlmKHJldCAhPSAwKQorCQkJcmV0dXJuIDA7CisKKwkJdG1wID0gKHVuc2lnbmVkIGNoYXIgKilNZW1JbmZvLlZCdWZmZXI7CisKKwkJcE1lbW9wLT5TZXQoQ29kZWNJRCwgdG1wLCAwLCBzaXplICsgYWxpZ25tZW50KTsKKworCQltZW1fcHRyID0KKwkJCSh1bnNpZ25lZCBjaGFyICopICgodW5zaWduZWQgaW50KSAodG1wICsgYWxpZ25tZW50IC0gMSkgJgorCQkJCQkofigodW5zaWduZWQgaW50KSAoYWxpZ25tZW50IC0gMSkpKSk7CisKKwkJaWYgKG1lbV9wdHIgPT0gdG1wKQorCQkJbWVtX3B0ciArPSBhbGlnbm1lbnQ7CisKKwkJKihtZW1fcHRyIC0gMSkgPSAodW5zaWduZWQgY2hhcikgKG1lbV9wdHIgLSB0bXApOworCisJCXJldHVybiAoKHZvaWQgKiltZW1fcHRyKTsKKwl9CisKKwlyZXR1cm4oMCk7Cit9CisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqCisqIGZ1bmN0aW9uIG5hbWU6IG1lbV9mcmVlCisqIGRlc2NyaXB0aW9uOiAgZnJlZSB0aGUgbWVtb3J5CisqCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwordm9pZAorbWVtX2ZyZWUoVk9fTUVNX09QRVJBVE9SICpwTWVtb3AsIHZvaWQgKm1lbV9wdHIsIHVuc2lnbmVkIGludCBDb2RlY0lEKQoreworCisJdW5zaWduZWQgY2hhciAqcHRyOworCisJaWYgKG1lbV9wdHIgPT0gMCkKKwkJcmV0dXJuOworCisJcHRyID0gbWVtX3B0cjsKKworCXB0ciAtPSAqKHB0ciAtIDEpOworCisJcE1lbW9wLT5GcmVlKENvZGVjSUQsIHB0cik7Cit9CisKKworCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL29wZXJfMzJiLmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL29wZXJfMzJiLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWYxNTIzZQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvb3Blcl8zMmIuYwpAQCAtMCwwICsxLDIyMyBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiAgVGhpcyBmaWxlIGNvbnRhaW5zIG9wZXJhdGlvbnMgaW4gZG91YmxlIHByZWNpc2lvbi4gICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgVGhlc2Ugb3BlcmF0aW9ucyBhcmUgbm90IHN0YW5kYXJkIGRvdWJsZSBwcmVjaXNpb24gb3BlcmF0aW9ucy4gICAgICAgICAgICoNCisgKiAgVGhleSBhcmUgdXNlZCB3aGVyZSBzaW5nbGUgcHJlY2lzaW9uIGlzIG5vdCBlbm91Z2ggYnV0IHRoZSBmdWxsIDMyIGJpdHMgICoNCisgKiAgcHJlY2lzaW9uIGlzIG5vdCBuZWNlc3NhcnkuIEZvciBleGFtcGxlLCB0aGUgZnVuY3Rpb24gRGl2XzMyKCkgaGFzIGEgICAgICoNCisgKiAgMjQgYml0cyBwcmVjaXNpb24gd2hpY2ggaXMgZW5vdWdoIGZvciBvdXIgcHVycG9zZXMuICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgVGhlIGRvdWJsZSBwcmVjaXNpb24gbnVtYmVycyB1c2UgYSBzcGVjaWFsIHJlcHJlc2VudGF0aW9uOiAgICAgICAgICAgICAgICoNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgTF8zMiA9IGhpPDwxNiArIGxvPDwxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgTF8zMiBpcyBhIDMyIGJpdCBpbnRlZ2VyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgaGkgYW5kIGxvIGFyZSAxNiBiaXQgc2lnbmVkIGludGVnZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgQXMgdGhlIGxvdyBwYXJ0IGFsc28gY29udGFpbnMgdGhlIHNpZ24sIHRoaXMgYWxsb3dzIGZhc3QgbXVsdGlwbGljYXRpb24uICoNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgIDB4ODAwMCAwMDAwIDw9IExfMzIgPD0gMHg3ZmZmIGZmZmUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgV2Ugd2lsbCB1c2UgRFBGIChEb3VibGUgUHJlY2lzaW9uIEZvcm1hdCApaW4gdGhpcyBmaWxlIHRvIHNwZWNpZnkgICAgICAgICoNCisgKiAgdGhpcyBzcGVjaWFsIGZvcm1hdC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqLw0KKyNpbmNsdWRlICJ0eXBlZGVmLmgiDQorI2luY2x1ZGUgImJhc2ljX29wLmgiDQorI2luY2x1ZGUgIm9wZXJfMzJiLmgiDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogIEZ1bmN0aW9uIExfRXh0cmFjdCgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogIEV4dHJhY3QgZnJvbSBhIDMyIGJpdCBpbnRlZ2VyIHR3byAxNiBiaXQgRFBGLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogIEFyZ3VtZW50czogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICBMXzMyICAgICAgOiAzMiBiaXQgaW50ZWdlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICAweDgwMDAgMDAwMCA8PSBMXzMyIDw9IDB4N2ZmZiBmZmZmLiAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICBoaSAgICAgICAgOiBiMTYgdG8gYjMxIG9mIExfMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICBsbyAgICAgICAgOiAoTF8zMiAtIGhpPDwxNik+PjEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKi8NCisNCitfX2lubGluZSB2b2lkIFZPX0xfRXh0cmFjdCAoV29yZDMyIExfMzIsIFdvcmQxNiAqaGksIFdvcmQxNiAqbG8pDQorew0KKwkqaGkgPSAoV29yZDE2KShMXzMyID4+IDE2KTsNCisJKmxvID0gKFdvcmQxNikoKExfMzIgJiAweGZmZmYpID4+IDEpOw0KKwlyZXR1cm47DQorfQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICBGdW5jdGlvbiBMX0NvbXAoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICBDb21wb3NlIGZyb20gdHdvIDE2IGJpdCBEUEYgYSAzMiBiaXQgaW50ZWdlci4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICBMXzMyID0gaGk8PDE2ICsgbG88PDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICBBcmd1bWVudHM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgaGkgICAgICAgIG1zYiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgbG8gICAgICAgIGxzZiAod2l0aCBzaWduKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgUmV0dXJuIFZhbHVlIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgIDMyIGJpdCBsb25nIHNpZ25lZCBpbnRlZ2VyIChXb3JkMzIpIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSAgKg0KKyAqICAgICAgICAgICAgIHJhbmdlIDogMHg4MDAwIDAwMDAgPD0gTF8zMiA8PSAweDdmZmYgZmZmMC4gICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyovDQorDQorV29yZDMyIExfQ29tcCAoV29yZDE2IGhpLCBXb3JkMTYgbG8pDQorew0KKwlXb3JkMzIgTF8zMjsNCisNCisJTF8zMiA9IExfZGVwb3NpdF9oIChoaSk7DQorDQorCXJldHVybiAoTF9tYWMgKExfMzIsIGxvLCAxKSk7ICAgICAgIC8qID0gaGk8PDE2ICsgbG88PDEgKi8NCit9DQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorICogRnVuY3Rpb24gTXB5XzMyKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICBNdWx0aXBseSB0d28gMzIgYml0IGludGVnZXJzIChEUEYpLiBUaGUgcmVzdWx0IGlzIGRpdmlkZWQgYnkgMioqMzEgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICBMXzMyID0gKGhpMSpoaTIpPDwxICsgKCAoaGkxKmxvMik+PjE1ICsgKGxvMSpoaTIpPj4xNSApPDwxICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICBUaGlzIG9wZXJhdGlvbiBjYW4gYWxzbyBiZSB2aWV3ZWQgYXMgdGhlIG11bHRpcGxpY2F0aW9uIG9mIHR3byBRMzEgICAgICAqDQorICogICBudW1iZXIgYW5kIHRoZSByZXN1bHQgaXMgYWxzbyBpbiBRMzEuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogQXJndW1lbnRzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogIGhpMSAgICAgICAgIGhpIHBhcnQgb2YgZmlyc3QgbnVtYmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogIGxvMSAgICAgICAgIGxvIHBhcnQgb2YgZmlyc3QgbnVtYmVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogIGhpMiAgICAgICAgIGhpIHBhcnQgb2Ygc2Vjb25kIG51bWJlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogIGxvMiAgICAgICAgIGxvIHBhcnQgb2Ygc2Vjb25kIG51bWJlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKi8NCisNCitfX2lubGluZSBXb3JkMzIgIE1weV8zMiAoV29yZDE2IGhpMSwgV29yZDE2IGxvMSwgV29yZDE2IGhpMiwgV29yZDE2IGxvMikNCit7DQorCVdvcmQzMiBMXzMyOw0KKwlMXzMyID0gKGhpMSAqIGhpMik7DQorCUxfMzIgKz0gKGhpMSAqIGxvMikgPj4gMTU7DQorCUxfMzIgKz0gKGxvMSAqIGhpMikgPj4gMTU7DQorCUxfMzIgPDw9IDE7DQorDQorCXJldHVybiAoTF8zMik7DQorfQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyAqIEZ1bmN0aW9uIE1weV8zMl8xNigpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgTXVsdGlwbHkgYSAxNiBiaXQgaW50ZWdlciBieSBhIDMyIGJpdCAoRFBGKS4gVGhlIHJlc3VsdCBpcyBkaXZpZGVkICAgICAgKg0KKyAqICAgYnkgMioqMTUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgTF8zMiA9IChoaTEqbG8yKTw8MSArICgobG8xKmxvMik+PjE1KTw8MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqIEFyZ3VtZW50czogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICBoaSAgICAgICAgICBoaSBwYXJ0IG9mIDMyIGJpdCBudW1iZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICBsbyAgICAgICAgICBsbyBwYXJ0IG9mIDMyIGJpdCBudW1iZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICBuICAgICAgICAgICAxNiBiaXQgbnVtYmVyLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyovDQorDQorX19pbmxpbmUgV29yZDMyIE1weV8zMl8xNiAoV29yZDE2IGhpLCBXb3JkMTYgbG8sIFdvcmQxNiBuKQ0KK3sNCisJV29yZDMyIExfMzI7DQorDQorCUxfMzIgPSAoaGkgKiBuKTw8MTsNCisJTF8zMiArPSAoKChsbyAqIG4pPj4xNSk8PDEpOw0KKw0KKwlyZXR1cm4gKExfMzIpOw0KK30NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgIEZ1bmN0aW9uIE5hbWUgOiBEaXZfMzIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgIFB1cnBvc2UgOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgICAgICAgICBGcmFjdGlvbmFsIGludGVnZXIgZGl2aXNpb24gb2YgdHdvIDMyIGJpdCBudW1iZXJzLiAgICAgICAgICAgICoNCisgKiAgICAgICAgICAgICBMX251bSAvIExfZGVub20uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgICAgICAgICBMX251bSBhbmQgTF9kZW5vbSBtdXN0IGJlIHBvc2l0aXZlIGFuZCBMX251bSA8IExfZGVub20uICAgICAgICoNCisgKiAgICAgICAgICAgICBMX2Rlbm9tID0gZGVub21faGk8PDE2ICsgZGVub21fbG88PDEgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgICAgICAgICBkZW5vbV9oaSBpcyBhIG5vcm1hbGl6ZSBudW1iZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgIElucHV0cyA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICBMX251bSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgICAgICAgICAzMiBiaXQgbG9uZyBzaWduZWQgaW50ZWdlciAoV29yZDMyKSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgICoNCisgKiAgICAgICAgICAgICByYW5nZSA6IDB4MDAwMCAwMDAwIDwgTF9udW0gPCBMX2Rlbm9tICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICBMX2Rlbm9tID0gZGVub21faGk8PDE2ICsgZGVub21fbG88PDEgICAgICAoRFBGKSAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgICBkZW5vbV9oaSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgICAgICAgICAxNiBiaXQgcG9zaXRpdmUgbm9ybWFsaXplZCBpbnRlZ2VyIHdob3NlIHZhbHVlIGZhbGxzIGluIHRoZSAgICoNCisgKiAgICAgICAgICAgICByYW5nZSA6IDB4NDAwMCA8IGhpIDwgMHg3ZmZmICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgICBkZW5vbV9sbyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgICAgICAgICAxNiBiaXQgcG9zaXRpdmUgaW50ZWdlciB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgICAgICAgICAgICAgICoNCisgKiAgICAgICAgICAgICByYW5nZSA6IDAgPCBsbyA8IDB4N2ZmZiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgIFJldHVybiBWYWx1ZSA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICBMX2RpdiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgICAgICAgICAzMiBiaXQgbG9uZyBzaWduZWQgaW50ZWdlciAoV29yZDMyKSB3aG9zZSB2YWx1ZSBmYWxscyBpbiB0aGUgICoNCisgKiAgICAgICAgICAgICByYW5nZSA6IDB4MDAwMCAwMDAwIDw9IExfZGl2IDw9IDB4N2ZmZiBmZmZmLiAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgQWxnb3JpdGhtOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgLSBmaW5kID0gMS9MX2Rlbm9tLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgIEZpcnN0IGFwcHJveGltYXRpb246IGFwcHJveCA9IDEgLyBkZW5vbV9oaSAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgIDEvTF9kZW5vbSA9IGFwcHJveCAqICgyLjAgLSBMX2Rlbm9tICogYXBwcm94ICkgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKiAgLSAgcmVzdWx0ID0gTF9udW0gKiAoMS9MX2Rlbm9tKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqLw0KKw0KK1dvcmQzMiBEaXZfMzIgKFdvcmQzMiBMX251bSwgV29yZDE2IGRlbm9tX2hpLCBXb3JkMTYgZGVub21fbG8pDQorew0KKwlXb3JkMTYgYXBwcm94LCBoaSwgbG8sIG5faGksIG5fbG87DQorCVdvcmQzMiBMXzMyOw0KKw0KKwkvKiBGaXJzdCBhcHByb3hpbWF0aW9uOiAxIC8gTF9kZW5vbSA9IDEvZGVub21faGkgKi8NCisNCisJYXBwcm94ID0gZGl2X3MgKChXb3JkMTYpIDB4M2ZmZiwgZGVub21faGkpOw0KKw0KKwkvKiAxL0xfZGVub20gPSBhcHByb3ggKiAoMi4wIC0gTF9kZW5vbSAqIGFwcHJveCkgKi8NCisNCisJTF8zMiA9IE1weV8zMl8xNiAoZGVub21faGksIGRlbm9tX2xvLCBhcHByb3gpOw0KKw0KKwlMXzMyID0gTF9zdWIgKChXb3JkMzIpIDB4N2ZmZmZmZmZMLCBMXzMyKTsNCisJaGkgPSBMXzMyID4+IDE2Ow0KKwlsbyA9IChMXzMyICYgMHhmZmZmKSA+PiAxOw0KKw0KKwlMXzMyID0gTXB5XzMyXzE2IChoaSwgbG8sIGFwcHJveCk7DQorDQorCS8qIExfbnVtICogKDEvTF9kZW5vbSkgKi8NCisJaGkgPSBMXzMyID4+IDE2Ow0KKwlsbyA9IChMXzMyICYgMHhmZmZmKSA+PiAxOw0KKwlWT19MX0V4dHJhY3QgKExfbnVtLCAmbl9oaSwgJm5fbG8pOw0KKwlMXzMyID0gTXB5XzMyIChuX2hpLCBuX2xvLCBoaSwgbG8pOw0KKwlMXzMyID0gTF9zaGwyKExfMzIsIDIpOw0KKw0KKwlyZXR1cm4gKExfMzIpOw0KK30NCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL3BfbWVkX29sLmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL3BfbWVkX29sLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzllZTk2NgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvcF9tZWRfb2wuYwpAQCAtMCwwICsxLDI1NiBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqICAgICAgRmlsZTogcF9tZWRfb2wuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgRGVzY3JpcHRpb246IENvbXB1dGUgdGhlIG9wZW4gbG9vcCBwaXRjaCBsYWcgICAgICAgICAgICAgICAgICAgICoNCisqCSAgICAgICAgICAgIG91dHB1dDogb3BlbiBsb29wIHBpdGNoIGxhZyAgICAgICAgICAgICAgICAgICAgICAgICogICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKyNpbmNsdWRlICJ0eXBlZGVmLmgiDQorI2luY2x1ZGUgImJhc2ljX29wLmgiDQorI2luY2x1ZGUgImFjZWxwLmgiDQorI2luY2x1ZGUgIm9wZXJfMzJiLmgiDQorI2luY2x1ZGUgIm1hdGhfb3AuaCINCisjaW5jbHVkZSAicF9tZWRfb2wudGFiIg0KKw0KK1dvcmQxNiBQaXRjaF9tZWRfb2woDQorCQkgICBXb3JkMTYgICAgICB3c3BbXSwgICAgICAgIC8qICAgaTogc2lnbmFsIHVzZWQgdG8gY29tcHV0ZSB0aGUgb3BlbiBsb29wIHBpdGNoKi8gIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAgICAgIHdzcFstcGl0X21heF0gdG8gd3NwWy0xXSBzaG91bGQgYmUga25vd24gKi8NCisJCSAgIENvZGVyX1N0YXRlICpzdCwgICAgICAgICAgLyogaS9vOiBjb2RlYyBnbG9iYWwgc3RydWN0dXJlICovDQorCQkgICBXb3JkMTYgICAgICBMX2ZyYW1lICAgICAgIC8qICAgaTogbGVuZ3RoIG9mIGZyYW1lIHRvIGNvbXB1dGUgcGl0Y2ggKi8NCisJCSkNCit7DQorCVdvcmQxNiBUbTsNCisJV29yZDE2IGhpLCBsbzsNCisJV29yZDE2ICp3dywgKndlLCAqaHBfd3NwOw0KKwlXb3JkMTYgZXhwX1IwLCBleHBfUjEsIGV4cF9SMjsNCisJV29yZDMyIGksIGosIG1heCwgUjAsIFIxLCBSMjsNCisJV29yZDE2ICpwMSwgKnAyOw0KKwlXb3JkMTYgTF9taW4gPSAxNzsgICAgICAgICAgICAgICAgICAgLyogbWluaW11bSBwaXRjaCBsYWc6IFBJVF9NSU4gLyBPUExfREVDSU0gKi8NCisJV29yZDE2IExfbWF4ID0gMTE1OyAgICAgICAgICAgICAgICAgIC8qIG1heGltdW0gcGl0Y2ggbGFnOiBQSVRfTUFYIC8gT1BMX0RFQ0lNICovDQorCVdvcmQxNiBMXzAgPSBzdC0+b2xkX1QwX21lZDsgICAgICAgICAvKiBvbGQgb3Blbi1sb29wIHBpdGNoICovDQorCVdvcmQxNiAqZ2FpbiA9ICYoc3QtPm9sX2dhaW4pOyAgICAgICAvKiBub3JtYWxpemUgY29ycmVsYXRpb24gb2YgaHBfd3NwIGZvciB0aGUgbGFnICovDQorCVdvcmQxNiAqaHBfd3NwX21lbSA9IHN0LT5ocF93c3BfbWVtOyAvKiBtZW1vcnkgb2YgdGhlIGh5cGFzcyBmaWx0ZXIgZm9yIGhwX3dzcFtdIChsZyA9IDkpKi8NCisJV29yZDE2ICpvbGRfaHBfd3NwID0gc3QtPm9sZF9ocF93c3A7IC8qIGh5cGFzcyB3c3BbXSAqLw0KKwlXb3JkMTYgd2dodF9mbGcgPSBzdC0+b2xfd2dodF9mbGc7ICAgLyogaXMgd2VpZ2h0aW5nIGZ1bmN0aW9uIHVzZWQgKi8NCisNCisJd3cgPSAmY29ycndlaWdodFsxOThdOw0KKwl3ZSA9ICZjb3Jyd2VpZ2h0Wzk4ICsgTF9tYXggLSBMXzBdOw0KKw0KKwltYXggPSBNSU5fMzI7ICAgICAgICAgICAgICAgICAgICAgICAgICANCisJVG0gPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorCWZvciAoaSA9IExfbWF4OyBpID4gTF9taW47IGktLSkNCisJew0KKwkJLyogQ29tcHV0ZSB0aGUgY29ycmVsYXRpb24gKi8NCisJCVIwID0gMDsNCisJCXAxID0gd3NwOw0KKwkJcDIgPSAmd3NwWy1pXTsNCisJCWZvciAoaiA9IDA7IGogPCBMX2ZyYW1lOyBqKz00KQ0KKwkJew0KKwkJCVIwICs9IHZvX0xfbXVsdCgoKnAxKyspLCAoKnAyKyspKTsNCisJCQlSMCArPSB2b19MX211bHQoKCpwMSsrKSwgKCpwMisrKSk7DQorCQkJUjAgKz0gdm9fTF9tdWx0KCgqcDErKyksICgqcDIrKykpOw0KKwkJCVIwICs9IHZvX0xfbXVsdCgoKnAxKyspLCAoKnAyKyspKTsgICAgIA0KKwkJfQ0KKwkJLyogV2VpZ2h0aW5nIG9mIHRoZSBjb3JyZWxhdGlvbiBmdW5jdGlvbi4gICAqLw0KKwkJaGkgPSBSMD4+MTY7DQorCQlsbyA9IChSMCAmIDB4ZmZmZik+PjE7DQorDQorCQlSMCA9IE1weV8zMl8xNihoaSwgbG8sICp3dyk7DQorCQl3dy0tOw0KKw0KKwkJaWYgKChMXzAgPiAwKSAmJiAod2dodF9mbGcgPiAwKSkNCisJCXsNCisJCQkvKiBXZWlnaHQgdGhlIG5laWdoYm91cmhvb2Qgb2YgdGhlIG9sZCBsYWcuICovDQorCQkJaGkgPSBSMD4+MTY7DQorCQkJbG8gPSAoUjAgJiAweGZmZmYpPj4xOw0KKwkJCVIwID0gTXB5XzMyXzE2KGhpLCBsbywgKndlKTsNCisJCQl3ZS0tOw0KKwkJfQ0KKwkJaWYoUjAgPj0gbWF4KQ0KKwkJew0KKwkJCW1heCA9IFIwOw0KKwkJCVRtID0gaTsNCisJCX0NCisJfQ0KKw0KKwkvKiBIeXBhc3MgdGhlIHdzcFtdIHZlY3RvciAqLw0KKwlocF93c3AgPSBvbGRfaHBfd3NwICsgTF9tYXg7ICAgICAgICAgICANCisJSHBfd3NwKHdzcCwgaHBfd3NwLCBMX2ZyYW1lLCBocF93c3BfbWVtKTsNCisNCisJLyogQ29tcHV0ZSBub3JtYWxpemUgY29ycmVsYXRpb24gYXQgZGVsYXkgVG0gKi8NCisJUjAgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorCVIxID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorCVIyID0gMDsgDQorCXAxID0gaHBfd3NwOw0KKwlwMiA9IGhwX3dzcCAtIFRtOw0KKwlmb3IgKGogPSAwOyBqIDwgTF9mcmFtZTsgais9NCkNCisJew0KKwkJUjIgKz0gdm9fbXVsdDMyKCpwMSwgKnAxKTsNCisJCVIxICs9IHZvX211bHQzMigqcDIsICpwMik7DQorCQlSMCArPSB2b19tdWx0MzIoKnAxKyssICpwMisrKTsNCisJCVIyICs9IHZvX211bHQzMigqcDEsICpwMSk7DQorCQlSMSArPSB2b19tdWx0MzIoKnAyLCAqcDIpOw0KKwkJUjAgKz0gdm9fbXVsdDMyKCpwMSsrLCAqcDIrKyk7DQorCQlSMiArPSB2b19tdWx0MzIoKnAxLCAqcDEpOw0KKwkJUjEgKz0gdm9fbXVsdDMyKCpwMiwgKnAyKTsNCisJCVIwICs9IHZvX211bHQzMigqcDErKywgKnAyKyspOw0KKwkJUjIgKz0gdm9fbXVsdDMyKCpwMSwgKnAxKTsNCisJCVIxICs9IHZvX211bHQzMigqcDIsICpwMik7DQorCQlSMCArPSB2b19tdWx0MzIoKnAxKyssICpwMisrKTsNCisJfQ0KKwlSMCA9IFIwIDw8MTsNCisJUjEgPSAoUjEgPDwxKSArIDFMOw0KKwlSMiA9IChSMiA8PDEpICsgMUw7DQorCS8qIGdhaW4gPSBSMC8gc3FydChSMSpSMikgKi8NCisNCisJZXhwX1IwID0gbm9ybV9sKFIwKTsNCisJUjAgPSAoUjAgPDwgZXhwX1IwKTsNCisNCisJZXhwX1IxID0gbm9ybV9sKFIxKTsNCisJUjEgPSAoUjEgPDwgZXhwX1IxKTsNCisNCisJZXhwX1IyID0gbm9ybV9sKFIyKTsNCisJUjIgPSAoUjIgPDwgZXhwX1IyKTsNCisNCisNCisJUjEgPSB2b19MX211bHQodm9fcm91bmQoUjEpLCB2b19yb3VuZChSMikpOw0KKw0KKwlpID0gbm9ybV9sKFIxKTsNCisJUjEgPSAoUjEgPDwgaSk7DQorDQorCWV4cF9SMSArPSBleHBfUjI7DQorCWV4cF9SMSArPSBpOw0KKwlleHBfUjEgPSA2MiAtIGV4cF9SMTsNCisNCisJSXNxcnRfbigmUjEsICZleHBfUjEpOw0KKw0KKwlSMCA9IHZvX0xfbXVsdCh2b3JvdW5kKFIwKSwgdm9yb3VuZChSMSkpOw0KKwlleHBfUjAgPSAzMSAtIGV4cF9SMDsNCisJZXhwX1IwICs9IGV4cF9SMTsNCisNCisJKmdhaW4gPSB2b19yb3VuZChMX3NobChSMCwgZXhwX1IwKSk7DQorDQorCS8qIFNoaXRmIGhwX3dzcFtdIGZvciBuZXh0IGZyYW1lICovDQorDQorCWZvciAoaSA9IDA7IGkgPCBMX21heDsgaSsrKQ0KKwl7DQorCQlvbGRfaHBfd3NwW2ldID0gb2xkX2hwX3dzcFtpICsgTF9mcmFtZV07DQorCX0NCisNCisJcmV0dXJuIChUbSk7DQorfQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqICBGdW5jdGlvbjogbWVkaWFuNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICBSZXR1cm5zIHRoZSBtZWRpYW4gb2YgdGhlIHNldCB7WFstMl0sIFhbLTFdLC4uLiwgWFsyXX0sICAgICAgICAgICoNCisqICAgICAgd2hvc2UgZWxlbWVudHMgYXJlIDE2LWJpdCBpbnRlZ2Vycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogIElucHV0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgWFstMjoyXSAgIDE2LWJpdCBpbnRlZ2Vycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogIFJldHVybjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgVGhlIG1lZGlhbiBvZiB7WFstMl0sIFhbLTFdLC4uLiwgWFsyXX0uICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KK1dvcmQxNiBtZWRpYW41KFdvcmQxNiB4W10pDQorew0KKwlXb3JkMTYgeDEsIHgyLCB4MywgeDQsIHg1Ow0KKwlXb3JkMTYgdG1wOw0KKw0KKwl4MSA9IHhbLTJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJeDIgPSB4Wy0xXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorCXgzID0geFswXTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwl4NCA9IHhbMV07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJeDUgPSB4WzJdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorDQorCWlmICh4MiA8IHgxKQ0KKwl7DQorCQl0bXAgPSB4MTsNCisJCXgxID0geDI7DQorCQl4MiA9IHRtcDsgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwl9DQorCWlmICh4MyA8IHgxKQ0KKwl7DQorCQl0bXAgPSB4MTsNCisJCXgxID0geDM7DQorCQl4MyA9IHRtcDsgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwl9DQorCWlmICh4NCA8IHgxKQ0KKwl7DQorCQl0bXAgPSB4MTsNCisJCXgxID0geDQ7DQorCQl4NCA9IHRtcDsgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwl9DQorCWlmICh4NSA8IHgxKQ0KKwl7DQorCQl4NSA9IHgxOyAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwl9DQorCWlmICh4MyA8IHgyKQ0KKwl7DQorCQl0bXAgPSB4MjsNCisJCXgyID0geDM7DQorCQl4MyA9IHRtcDsgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwl9DQorCWlmICh4NCA8IHgyKQ0KKwl7DQorCQl0bXAgPSB4MjsNCisJCXgyID0geDQ7DQorCQl4NCA9IHRtcDsgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwl9DQorCWlmICh4NSA8IHgyKQ0KKwl7DQorCQl4NSA9IHgyOyAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwl9DQorCWlmICh4NCA8IHgzKQ0KKwl7DQorCQl4MyA9IHg0OyAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwl9DQorCWlmICh4NSA8IHgzKQ0KKwl7DQorCQl4MyA9IHg1OyAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwl9DQorCXJldHVybiAoeDMpOw0KK30NCisNCisNCitXb3JkMTYgTWVkX29sYWcoICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogb3V0cHV0IDogbWVkaWFuIG9mICA1IHByZXZpb3VzIG9wZW4tbG9vcCBsYWdzICAgICAgICovDQorCQlXb3JkMTYgcHJldl9vbF9sYWcsICAgICAgICAgICAgICAgIC8qIGlucHV0ICA6IHByZXZpb3VzIG9wZW4tbG9vcCBsYWcgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IG9sZF9vbF9sYWdbNV0NCisJICAgICAgICkNCit7DQorCVdvcmQzMiBpOw0KKw0KKwkvKiBVc2UgbWVkaWFuIG9mIDUgcHJldmlvdXMgb3Blbi1sb29wIGxhZ3MgYXMgb2xkIGxhZyAqLw0KKw0KKwlmb3IgKGkgPSA0OyBpID4gMDsgaS0tKQ0KKwl7DQorCQlvbGRfb2xfbGFnW2ldID0gb2xkX29sX2xhZ1tpIC0gMV07IA0KKwl9DQorDQorCW9sZF9vbF9sYWdbMF0gPSBwcmV2X29sX2xhZzsgICAgICAgICAgIA0KKw0KKwlpID0gbWVkaWFuNSgmb2xkX29sX2xhZ1syXSk7DQorDQorCXJldHVybiBpOw0KKw0KK30NCisNCisNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL3BpdF9zaHJwLmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL3BpdF9zaHJwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzhhMjI3YwotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvcGl0X3NocnAuYwpAQCAtMCwwICsxLDQ5IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogICAgICBGaWxlOiBwaXRfc2hycC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICBEZXNjcmlwdGlvbjogUGVyZm9ybXMgUGl0Y2ggc2hhcnBlbmluZyByb3V0aW5lICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaW5jbHVkZSAidHlwZWRlZi5oIg0KKyNpbmNsdWRlICJiYXNpY19vcC5oIg0KKw0KK3ZvaWQgUGl0X3NocnAoDQorCQlXb3JkMTYgKiB4LCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGluL291dDogaW1wdWxzZSByZXNwb25zZSAob3IgYWxnZWJyYWljIGNvZGUpICovDQorCQlXb3JkMTYgcGl0X2xhZywgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogcGl0Y2ggbGFnICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgc2hhcnAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogcGl0Y2ggc2hhcnBlbmluZyBmYWN0b3IgKFExNSkgICAgICAgICovDQorCQlXb3JkMTYgTF9zdWJmciAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogc3ViZnJhbWUgc2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICovDQorCSAgICAgKQ0KK3sNCisJV29yZDMyIGk7DQorCVdvcmQzMiBMX3RtcDsNCisJV29yZDE2ICp4X3B0ciA9IHggKyBwaXRfbGFnOw0KKw0KKwlmb3IgKGkgPSBwaXRfbGFnOyBpIDwgTF9zdWJmcjsgaSsrKQ0KKwl7DQorCQlMX3RtcCA9ICgqeF9wdHIgPDwgMTUpOw0KKwkJTF90bXAgKz0gKngrKyAqIHNoYXJwOw0KKwkJKnhfcHRyKysgPSAoKExfdG1wICsgMHg0MDAwKT4+MTUpOw0KKwl9DQorDQorCXJldHVybjsNCit9DQorDQorDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9waXRjaF9mNC5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9waXRjaF9mNC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxMTViMTFiCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9waXRjaF9mNC5jCkBAIC0wLDAgKzEsMzI0IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogICAgICBGaWxlOiBwaXRjaF9mNC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICBEZXNjcmlwdGlvbjogRmluZCB0aGUgY2xvc2VkIGxvb3AgcGl0Y2ggcGVyaW9kIHdpdGggICAgICAgICAgICAgKg0KKyoJICAgICAgICAgICAgMS80IHN1YnNhbXBsZSByZXNvbHV0aW9uLiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaW5jbHVkZSAidHlwZWRlZi5oIg0KKyNpbmNsdWRlICJiYXNpY19vcC5oIg0KKyNpbmNsdWRlICJtYXRoX29wLmgiDQorI2luY2x1ZGUgImFjZWxwLmgiDQorI2luY2x1ZGUgImNuc3QuaCINCisNCisjZGVmaW5lIFVQX1NBTVAgICAgICA0DQorI2RlZmluZSBMX0lOVEVSUE9MMSAgNA0KKw0KKy8qIExvY2FsIGZ1bmN0aW9ucyAqLw0KKw0KKyNpZmRlZiBBU01fT1BUDQordm9pZCBOb3JtX2NvcnJfYXNtKA0KKwkJV29yZDE2IGV4Y1tdLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogZXhjaXRhdGlvbiBidWZmZXIgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IHhuW10sICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogdGFyZ2V0IHZlY3RvciAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IGhbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTE1IDogaW1wdWxzZSByZXNwb25zZSBvZiBzeW50aC93Z3QgZmlsdGVycyAqLw0KKwkJV29yZDE2IExfc3ViZnIsDQorCQlXb3JkMTYgdF9taW4sICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBtaW5pbXVtIHZhbHVlIG9mIHBpdGNoIGxhZy4gICAgICAgICAgICovDQorCQlXb3JkMTYgdF9tYXgsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBtYXhpbXVtIHZhbHVlIG9mIHBpdGNoIGxhZy4gICAgICAgICAgICovDQorCQlXb3JkMTYgY29ycl9ub3JtW10gICAgICAgICAgICAgICAgICAgIC8qIChvKSBRMTUgOiBub3JtYWxpemVkIGNvcnJlbGF0aW9uICAgICAgICAgICAgICAgICovDQorCQkpOw0KKyNlbHNlDQorc3RhdGljIHZvaWQgTm9ybV9Db3JyKA0KKwkJV29yZDE2IGV4Y1tdLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogZXhjaXRhdGlvbiBidWZmZXIgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IHhuW10sICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogdGFyZ2V0IHZlY3RvciAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IGhbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTE1IDogaW1wdWxzZSByZXNwb25zZSBvZiBzeW50aC93Z3QgZmlsdGVycyAqLw0KKwkJV29yZDE2IExfc3ViZnIsDQorCQlXb3JkMTYgdF9taW4sICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBtaW5pbXVtIHZhbHVlIG9mIHBpdGNoIGxhZy4gICAgICAgICAgICovDQorCQlXb3JkMTYgdF9tYXgsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBtYXhpbXVtIHZhbHVlIG9mIHBpdGNoIGxhZy4gICAgICAgICAgICovDQorCQlXb3JkMTYgY29ycl9ub3JtW10gICAgICAgICAgICAgICAgICAgIC8qIChvKSBRMTUgOiBub3JtYWxpemVkIGNvcnJlbGF0aW9uICAgICAgICAgICAgICAgICovDQorCQkpOw0KKyNlbmRpZg0KKw0KK3N0YXRpYyBXb3JkMTYgSW50ZXJwb2xfNCggICAgICAgICAgICAgICAgICAvKiAobykgIDogaW50ZXJwb2xhdGVkIHZhbHVlICAqLw0KKwkJV29yZDE2ICogeCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgIDogaW5wdXQgdmVjdG9yICAgICAgICAqLw0KKwkJV29yZDMyIGZyYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgIDogZnJhY3Rpb24gKC00Li4rMykgICAqLw0KKwkJKTsNCisNCisNCitXb3JkMTYgUGl0Y2hfZnI0KCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pICAgICA6IHBpdGNoIHBlcmlvZC4gICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBleGNbXSwgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IGV4Y2l0YXRpb24gYnVmZmVyICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiB4bltdLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IHRhcmdldCB2ZWN0b3IgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBoW10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFExNSA6IGltcHVsc2UgcmVzcG9uc2Ugb2Ygc3ludGgvd2d0IGZpbHRlcnMgKi8NCisJCVdvcmQxNiB0MF9taW4sICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IG1pbmltdW0gdmFsdWUgaW4gdGhlIHNlYXJjaGVkIHJhbmdlLiAgKi8NCisJCVdvcmQxNiB0MF9tYXgsICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IG1heGltdW0gdmFsdWUgaW4gdGhlIHNlYXJjaGVkIHJhbmdlLiAgKi8NCisJCVdvcmQxNiAqIHBpdF9mcmFjLCAgICAgICAgICAgICAgICAgICAgLyogKG8pICAgICA6IGNob3NlbiBmcmFjdGlvbiAoMCwgMSwgMiBvciAzKS4gICAgICAgKi8NCisJCVdvcmQxNiBpX3N1YmZyLCAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IGluZGljYXRvciBmb3IgZmlyc3Qgc3ViZnJhbWUuICAgICAgICAgKi8NCisJCVdvcmQxNiB0MF9mcjIsICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IG1pbmltdW0gdmFsdWUgZm9yIHJlc29sdXRpb24gMS8yICAgICAgKi8NCisJCVdvcmQxNiB0MF9mcjEsICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IG1pbmltdW0gdmFsdWUgZm9yIHJlc29sdXRpb24gMSAgICAgICAgKi8NCisJCVdvcmQxNiBMX3N1YmZyICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IExlbmd0aCBvZiBzdWJmcmFtZSAgICAgICAgICAgICAgICAgICAgKi8NCisJCSkNCit7DQorCVdvcmQzMiBmcmFjdGlvbiwgaTsNCisJV29yZDE2IHRfbWluLCB0X21heDsNCisJV29yZDE2IG1heCwgdDAsIHN0ZXAsIHRlbXA7DQorCVdvcmQxNiAqY29ycjsNCisJV29yZDE2IGNvcnJfdls0MF07ICAgICAgICAgICAgICAgICAgICAgLyogVG90YWwgbGVuZ3RoID0gdDBfbWF4LXQwX21pbisxKzIqTF9pbnRlciAqLw0KKw0KKwkvKiBGaW5kIGludGVydmFsIHRvIGNvbXB1dGUgbm9ybWFsaXplZCBjb3JyZWxhdGlvbiAqLw0KKw0KKwl0X21pbiA9IHQwX21pbiAtIExfSU5URVJQT0wxOw0KKwl0X21heCA9IHQwX21heCArIExfSU5URVJQT0wxOw0KKwljb3JyID0gJmNvcnJfdlstdF9taW5dOw0KKwkvKiBDb21wdXRlIG5vcm1hbGl6ZWQgY29ycmVsYXRpb24gYmV0d2VlbiB0YXJnZXQgYW5kIGZpbHRlcmVkIGV4Y2l0YXRpb24gKi8NCisjaWZkZWYgQVNNX09QVCAgICAgICAgICAgICAgIC8qIGFzbSBvcHRpbWl6YXRpb24gYnJhbmNoICovDQorICAgIE5vcm1fY29ycl9hc20oZXhjLCB4biwgaCwgTF9zdWJmciwgdF9taW4sIHRfbWF4LCBjb3JyKTsNCisjZWxzZQ0KKwlOb3JtX0NvcnIoZXhjLCB4biwgaCwgTF9zdWJmciwgdF9taW4sIHRfbWF4LCBjb3JyKTsNCisjZW5kaWYgDQorDQorCS8qIEZpbmQgaW50ZWdlciBwaXRjaCAqLw0KKw0KKwltYXggPSBjb3JyW3QwX21pbl07DQorCXQwID0gdDBfbWluOw0KKwlmb3IgKGkgPSB0MF9taW4gKyAxOyBpIDw9IHQwX21heDsgaSsrKQ0KKwl7DQorCQlpZiAoY29ycltpXSA+PSBtYXgpDQorCQl7DQorCQkJbWF4ID0gY29ycltpXTsgICAgICAgICAgICAgICAgIA0KKwkJCXQwID0gaTsgICAgICAgICAgICAgICAgICAgICAgICANCisJCX0NCisJfQ0KKwkvKiBJZiBmaXJzdCBzdWJmcmFtZSBhbmQgdDAgPj0gdDBfZnIxLCBkbyBub3Qgc2VhcmNoIGZyYWN0aW9ubmFsIHBpdGNoICovDQorCWlmICgoaV9zdWJmciA9PSAwKSAmJiAodDAgPj0gdDBfZnIxKSkNCisJew0KKwkJKnBpdF9mcmFjID0gMDsNCisJCXJldHVybiAodDApOw0KKwl9DQorCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkgKiBTZWFyY2ggZnJhY3Rpb25uYWwgcGl0Y2ggd2l0aCAxLzQgc3Vic2FtcGxlIHJlc29sdXRpb24uICAgICAgICAgICoNCisJICogVGVzdCB0aGUgZnJhY3Rpb25zIGFyb3VuZCB0MCBhbmQgY2hvb3NlIHRoZSBvbmUgd2hpY2ggbWF4aW1pemVzICAqDQorCSAqIHRoZSBpbnRlcnBvbGF0ZWQgbm9ybWFsaXplZCBjb3JyZWxhdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorCXN0ZXAgPSAxOyAgICAgICAgICAgICAgIC8qIDEvNCBzdWJzYW1wbGUgcmVzb2x1dGlvbiAqLw0KKwlmcmFjdGlvbiA9IC0zOw0KKwlpZiAoKHQwX2ZyMiA9PSBQSVRfTUlOKXx8KChpX3N1YmZyID09IDApICYmICh0MCA+PSB0MF9mcjIpKSkNCisJew0KKwkJc3RlcCA9IDI7ICAgICAgICAgICAgICAvKiAxLzIgc3Vic2FtcGxlIHJlc29sdXRpb24gKi8NCisJCWZyYWN0aW9uID0gLTI7DQorCX0NCisJaWYodDAgPT0gdDBfbWluKQ0KKwl7DQorCQlmcmFjdGlvbiA9IDA7DQorCX0NCisJbWF4ID0gSW50ZXJwb2xfNCgmY29yclt0MF0sIGZyYWN0aW9uKTsNCisNCisJZm9yIChpID0gZnJhY3Rpb24gKyBzdGVwOyBpIDw9IDM7IGkgKz0gc3RlcCkNCisJew0KKwkJdGVtcCA9IEludGVycG9sXzQoJmNvcnJbdDBdLCBpKTsNCisJCWlmKHRlbXAgPiBtYXgpDQorCQl7DQorCQkJbWF4ID0gdGVtcDsNCisJCQlmcmFjdGlvbiA9IGk7DQorCQl9DQorCX0NCisJLyogbGltaXQgdGhlIGZyYWN0aW9uIHZhbHVlIGluIHRoZSBpbnRlcnZhbCBbMCwxLDIsM10gKi8NCisJaWYgKGZyYWN0aW9uIDwgMCkNCisJew0KKwkJZnJhY3Rpb24gKz0gVVBfU0FNUDsNCisJCXQwIC09IDE7DQorCX0NCisJKnBpdF9mcmFjID0gZnJhY3Rpb247DQorCXJldHVybiAodDApOw0KK30NCisNCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqIEZ1bmN0aW9uOiAgTm9ybV9Db3JyKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogRGVzY3JpcHRpb246IEZpbmQgdGhlIG5vcm1hbGl6ZWQgY29ycmVsYXRpb24gYmV0d2VlbiB0aGUgdGFyZ2V0IHZlY3RvciBhbmQgdGhlICAgICoNCisqIGZpbHRlcmVkIHBhc3QgZXhjaXRhdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAoY29ycmVsYXRpb24gYmV0d2VlbiB0YXJnZXQgYW5kIGZpbHRlcmVkIGV4Y2l0YXRpb24gZGl2aWRlZCBieSB0aGUgICAgICAgICAgICAgICAgKg0KKyogIHNxdWFyZSByb290IG9mIGVuZXJneSBvZiB0YXJnZXQgYW5kIGZpbHRlcmVkIGV4Y2l0YXRpb24pLiAgICAgICAgICAgICAgICAgICAgICAgICoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorI2lmbmRlZiBBU01fT1BUDQorc3RhdGljIHZvaWQgTm9ybV9Db3JyKA0KKwkJV29yZDE2IGV4Y1tdLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogZXhjaXRhdGlvbiBidWZmZXIgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IHhuW10sICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogdGFyZ2V0IHZlY3RvciAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IGhbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTE1IDogaW1wdWxzZSByZXNwb25zZSBvZiBzeW50aC93Z3QgZmlsdGVycyAqLw0KKwkJV29yZDE2IExfc3ViZnIsDQorCQlXb3JkMTYgdF9taW4sICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBtaW5pbXVtIHZhbHVlIG9mIHBpdGNoIGxhZy4gICAgICAgICAgICovDQorCQlXb3JkMTYgdF9tYXgsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBtYXhpbXVtIHZhbHVlIG9mIHBpdGNoIGxhZy4gICAgICAgICAgICovDQorCQlXb3JkMTYgY29ycl9ub3JtW10pICAgICAgICAgICAgICAgICAgIC8qIChvKSBRMTUgOiBub3JtYWxpemVkIGNvcnJlbGF0aW9uICAgICAgICAgICAgICAgICovDQorew0KKwlXb3JkMzIgaSwgaywgdDsNCisJV29yZDMyIGNvcnIsIGV4cF9jb3JyLCBub3JtLCBleHAsIHNjYWxlOw0KKwlXb3JkMTYgZXhwX25vcm0sIGV4Y2ZbTF9TVUJGUl0sIHRtcDsNCisJV29yZDMyIExfdG1wLCBMX3RtcDEsIExfdG1wMjsNCisNCisJLyogY29tcHV0ZSB0aGUgZmlsdGVyZWQgZXhjaXRhdGlvbiBmb3IgdGhlIGZpcnN0IGRlbGF5IHRfbWluICovDQorCWsgPSAtdF9taW47DQorDQorI2lmZGVmIEFTTV9PUFQgICAgICAgICAgICAgIC8qIGFzbSBvcHRpbWl6YXRpb24gYnJhbmNoICovDQorCUNvbnZvbHZlX2FzbSgmZXhjW2tdLCBoLCBleGNmLCA2NCk7DQorI2Vsc2UNCisJQ29udm9sdmUoJmV4Y1trXSwgaCwgZXhjZiwgNjQpOw0KKyNlbmRpZg0KKw0KKwkvKiBDb21wdXRlIHJvdW5kZWQgZG93biAxL3NxcnQoZW5lcmd5IG9mIHhuW10pICovDQorCUxfdG1wID0gMDsgDQorCWZvciAoaSA9IDA7IGkgPCA2NDsgaSs9NCkNCisJew0KKwkJTF90bXAgKz0gKHhuW2ldICogeG5baV0pOw0KKwkJTF90bXAgKz0gKHhuW2krMV0gKiB4bltpKzFdKTsNCisJCUxfdG1wICs9ICh4bltpKzJdICogeG5baSsyXSk7DQorCQlMX3RtcCArPSAoeG5baSszXSAqIHhuW2krM10pOw0KKwl9DQorDQorCUxfdG1wID0gKExfdG1wIDw8IDEpICsgMTsNCisJZXhwID0gbm9ybV9sKExfdG1wKTsNCisJZXhwID0gKDMyIC0gZXhwKTsNCisJLy9leHAgPSBleHAgKyAyOyAgICAgICAgICAgICAgICAgICAgIC8qIGVuZXJneSBvZiB4bltdIHggMiArIHJvdW5kZWQgdXAgICAgICovDQorCXNjYWxlID0gLShleHAgPj4gMSk7ICAgICAgICAgICAvKiAoMTw8c2NhbGUpIDwgMS9zcXJ0KGVuZXJneSByb3VuZGVkKSAqLw0KKw0KKwkvKiBsb29wIGZvciBldmVyeSBwb3NzaWJsZSBwZXJpb2QgKi8NCisNCisJZm9yICh0ID0gdF9taW47IHQgPD0gdF9tYXg7IHQrKykNCisJew0KKwkJLyogQ29tcHV0ZSBjb3JyZWxhdGlvbiBiZXR3ZWVuIHhuW10gYW5kIGV4Y2ZbXSAqLw0KKwkJTF90bXAgID0gMDsgIA0KKwkJTF90bXAxID0gMDsNCisJCWZvciAoaSA9IDA7IGkgPCA2NDsgaSs9NCkNCisJCXsNCisJCQlMX3RtcCAgKz0gKHhuW2ldICogZXhjZltpXSk7DQorCQkJTF90bXAxICs9IChleGNmW2ldICogZXhjZltpXSk7DQorCQkJTF90bXAgICs9ICh4bltpKzFdICogZXhjZltpKzFdKTsNCisJCQlMX3RtcDEgKz0gKGV4Y2ZbaSsxXSAqIGV4Y2ZbaSsxXSk7DQorCQkJTF90bXAgICs9ICh4bltpKzJdICogZXhjZltpKzJdKTsNCisJCQlMX3RtcDEgKz0gKGV4Y2ZbaSsyXSAqIGV4Y2ZbaSsyXSk7DQorCQkJTF90bXAgICs9ICh4bltpKzNdICogZXhjZltpKzNdKTsNCisJCQlMX3RtcDEgKz0gKGV4Y2ZbaSszXSAqIGV4Y2ZbaSszXSk7DQorCQl9DQorDQorCQlMX3RtcCA9IChMX3RtcCA8PCAxKSArIDE7DQorCQlMX3RtcDEgPSAoTF90bXAxIDw8IDEpICsgMTsNCisNCisJCWV4cCA9IG5vcm1fbChMX3RtcCk7DQorCQlMX3RtcCA9IChMX3RtcCA8PCBleHApOw0KKwkJZXhwX2NvcnIgPSAoMzAgLSBleHApOw0KKwkJY29yciA9IGV4dHJhY3RfaChMX3RtcCk7DQorDQorCQlleHAgPSBub3JtX2woTF90bXAxKTsNCisJCUxfdG1wID0gKExfdG1wMSA8PCBleHApOw0KKwkJZXhwX25vcm0gPSAoMzAgLSBleHApOw0KKw0KKwkJSXNxcnRfbigmTF90bXAsICZleHBfbm9ybSk7DQorCQlub3JtID0gZXh0cmFjdF9oKExfdG1wKTsNCisNCisJCS8qIE5vcm1hbGl6ZSBjb3JyZWxhdGlvbiA9IGNvcnJlbGF0aW9uICogKDEvc3FydChlbmVyZ3kpKSAqLw0KKw0KKwkJTF90bXAgPSB2b19MX211bHQoY29yciwgbm9ybSk7DQorDQorCQlMX3RtcDIgPSBleHBfY29yciArIGV4cF9ub3JtICsgc2NhbGU7DQorCQlpZihMX3RtcDIgPCAwKQ0KKwkJew0KKwkJCUxfdG1wMiA9IC1MX3RtcDI7DQorCQkJTF90bXAgPSBMX3RtcCA+PiBMX3RtcDI7DQorCQl9DQorCQllbHNlDQorCQl7DQorCQkJTF90bXAgPSBMX3RtcCA8PCBMX3RtcDI7DQorCQl9DQorDQorCQljb3JyX25vcm1bdF0gPSB2b19yb3VuZChMX3RtcCk7ICAgICAgDQorCQkvKiBtb2RpZnkgdGhlIGZpbHRlcmVkIGV4Y2l0YXRpb24gZXhjZltdIGZvciB0aGUgbmV4dCBpdGVyYXRpb24gKi8NCisNCisJCWlmKHQgIT0gdF9tYXgpDQorCQl7DQorCQkJayA9IC0odCArIDEpOw0KKwkJCXRtcCA9IGV4Y1trXTsNCisJCQlmb3IgKGkgPSA2MzsgaSA+IDA7IGktLSkNCisJCQl7DQorCQkJCWV4Y2ZbaV0gPSBhZGQxKHZvX211bHQodG1wLCBoW2ldKSwgZXhjZltpIC0gMV0pOw0KKwkJCX0NCisJCQlleGNmWzBdID0gdm9fbXVsdCh0bXAsIGhbMF0pOw0KKwkJfQ0KKwl9DQorCXJldHVybjsNCit9DQorDQorI2VuZGlmDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogRnVuY3Rpb246IEludGVycG9sXzQoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqIERlc2NyaXB0aW9uOiBGb3IgaW50ZXJwb2xhdGluZyB0aGUgbm9ybWFsaXplZCBjb3JyZWxhdGlvbiB3aXRoIDEvNCByZXNvbHV0aW9uLiAgICAgKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKy8qIDEvNCByZXNvbHV0aW9uIGludGVycG9sYXRpb24gZmlsdGVyICgtMyBkQiBhdCAwLjc5MSpmcy8yKSBpbiBRMTQgKi8NCitzdGF0aWMgV29yZDE2IGludGVyNF8xWzRdWzhdID0NCit7DQorCXstMTIsIDQyMCwgLTE3MzIsIDU0MjksIDEzNDE4LCAtMTI0MiwgNzMsIDMyfSwNCisJey0yNiwgNDU1LCAtMjE0MiwgOTkxMCwgOTkxMCwgIC0yMTQyLCA0NTUsIC0yNn0sDQorCXszMiwgIDczLCAtMTI0MiwgMTM0MTgsIDU0MjksIC0xNzMyLCA0MjAsIC0xMn0sDQorCXsyMDYsIC03NjYsIDEzNzYsIDE0NzQ2LCAxMzc2LCAtNzY2LCAyMDYsIDB9DQorfTsNCisNCisvKioqIENvZWZmaWNpZW50cyBpbiBmbG9hdGluZyBwb2ludA0KK3N0YXRpYyBmbG9hdCBpbnRlcjRfMVtVUF9TQU1QKkxfSU5URVJQT0wxKzFdID0gew0KKzAuOTAwMDAwLA0KKzAuODE4OTU5LCAgMC42MDQ4NTAsICAwLjMzMTM3OSwgIDAuMDgzOTU4LA0KKy0wLjA3NTc5NSwgLTAuMTMwNzE3LCAtMC4xMDU2ODUsIC0wLjA0Njc3NCwNCiswLjAwNDQ2NywgIDAuMDI3Nzg5LCAgMC4wMjU2NDIsICAwLjAxMjU3MSwNCiswLjAwMTkyNywgLTAuMDAxNTcxLCAtMC4wMDA3NTMsICAwLjAwMDAwMH07DQorKioqLw0KKw0KK3N0YXRpYyBXb3JkMTYgSW50ZXJwb2xfNCggICAgICAgICAgICAgICAgICAvKiAobykgIDogaW50ZXJwb2xhdGVkIHZhbHVlICAqLw0KKwkJV29yZDE2ICogeCwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgIDogaW5wdXQgdmVjdG9yICAgICAgICAqLw0KKwkJV29yZDMyIGZyYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgIDogZnJhY3Rpb24gKC00Li4rMykgICAqLw0KKwkJKQ0KK3sNCisJV29yZDE2IHN1bTsNCisJV29yZDMyICBrLCBMX3N1bTsNCisJV29yZDE2ICpwdHI7DQorDQorCWlmIChmcmFjIDwgMCkNCisJew0KKwkJZnJhYyArPSBVUF9TQU1QOw0KKwkJeC0tOw0KKwl9DQorCXggPSB4IC0gTF9JTlRFUlBPTDEgKyAxOw0KKwlrID0gVVBfU0FNUCAtIDEgLSBmcmFjOw0KKwlwdHIgPSAmKGludGVyNF8xW2tdWzBdKTsNCisNCisJTF9zdW0gID0gdm9fbXVsdDMyKHhbMF0sICgqcHRyKyspKTsNCisJTF9zdW0gKz0gdm9fbXVsdDMyKHhbMV0sICgqcHRyKyspKTsNCisJTF9zdW0gKz0gdm9fbXVsdDMyKHhbMl0sICgqcHRyKyspKTsNCisJTF9zdW0gKz0gdm9fbXVsdDMyKHhbM10sICgqcHRyKyspKTsNCisJTF9zdW0gKz0gdm9fbXVsdDMyKHhbNF0sICgqcHRyKyspKTsgIA0KKwlMX3N1bSArPSB2b19tdWx0MzIoeFs1XSwgKCpwdHIrKykpOw0KKwlMX3N1bSArPSB2b19tdWx0MzIoeFs2XSwgKCpwdHIrKykpOw0KKwlMX3N1bSArPSB2b19tdWx0MzIoeFs3XSwgKCpwdHIrKykpOyAgIA0KKw0KKwlzdW0gPSBleHRyYWN0X2goTF9hZGQoTF9zaGwyKExfc3VtLCAyKSwgMHg4MDAwKSk7DQorCXJldHVybiAoc3VtKTsNCit9DQorDQorDQorDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9wcmVkX2x0NC5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9wcmVkX2x0NC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjMWZmMjIKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL3ByZWRfbHQ0LmMKQEAgLTAsMCArMSwxMjAgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiAgICAgIEZpbGU6IHByZWRfbHQ0LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgIERlc2NyaXB0aW9uOiBDb21wdXRlIHRoZSByZXN1bHQgb2YgbG9uZyB0ZXJtIHByZWRpY3Rpb24gd2l0aCAgICAqDQorKiAgICAgIGZyYWN0aW9uYWwgaW50ZXJwb2xhdGlvbiBvZiByZXNvbHV0aW9uIDEvNCAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgIG9uIHJldHVybiBleGNbMC4uTF9zdWJyLTFdIGNvbnRhaW5zIHRoZSBpbnRlcnBvbGF0ZWQgc2lnbmFsICAgICAqDQorKiAgICAgIChhZGFwdGl2ZSBjb2RlYm9vayBleGNpdGF0aW9uKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKyNpbmNsdWRlICJ0eXBlZGVmLmgiDQorI2luY2x1ZGUgImJhc2ljX29wLmgiDQorDQorI2RlZmluZSBVUF9TQU1QICAgICAgNA0KKyNkZWZpbmUgTF9JTlRFUlBPTDIgIDE2DQorDQorLyogMS80IHJlc29sdXRpb24gaW50ZXJwb2xhdGlvbiBmaWx0ZXIgKC0zIGRCIGF0IDAuODU2KmZzLzIpIGluIFExNCAqLw0KKw0KK1dvcmQxNiBpbnRlcjRfMls0XVszMl0gPQ0KK3sNCisJezAsLTIsNCwtMiwtMTAsMzgsLTg4LDE2NSwtMjc1LDQyNCwtNjE5LDg3MSwtMTIwNywxNjk5LC0yNTk4LDU1MzEsMTQwMzEsLTIxNDcsNzgwLC0yNDksDQorCS0xNiwxNTMsLTIxMywyMjYsLTIwOSwxNzUsLTEzMyw5MSwtNTUsMjgsLTEwLDJ9LA0KKw0KKwl7MSwtNywxOSwtMzMsNDcsLTUyLDQzLC05LC02MCwxNzUsLTM1NSw2MjYsLTEwNDQsMTc0OSwtMzI2NywxMDM1OSwxMDM1OSwtMzI2NywxNzQ5LC0xMDQ0LA0KKwk2MjYsLTM1NSwxNzUsLTYwLC05LDQzLC01Miw0NywtMzMsMTksIC03LCAxfSwNCisNCisJezIsLTEwLDI4LC01NSw5MSwtMTMzLDE3NSwtMjA5LDIyNiwtMjEzLDE1MywtMTYsLTI0OSw3ODAsLTIxNDcsMTQwMzEsNTUzMSwtMjU5OCwxNjk5LC0xMjA3LA0KKwk4NzEsLTYxOSw0MjQsLTI3NSwxNjUsLTg4LDM4LC0xMCwtMiw0LC0yLDB9LA0KKw0KKwl7MSwtNywyMiwtNDksOTIsLTE1MywyMzEsLTMyNSw0MzEsLTU0NCw2NTYsLTc2Miw4NTMsLTkyMyw5NjgsMTU0MDEsOTY4LC05MjMsODUzLC03NjIsDQorCTY1NiwtNTQ0LDQzMSwtMzI1LDIzMSwtMTUzLDkyLC00OSwyMiwtNywgMSwgMH0NCisNCit9Ow0KKw0KK3ZvaWQgUHJlZF9sdDQoDQorCQlXb3JkMTYgZXhjW10sICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGluL291dDogZXhjaXRhdGlvbiBidWZmZXIgKi8NCisJCVdvcmQxNiBUMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBpbnRlZ2VyIHBpdGNoIGxhZyAqLw0KKwkJV29yZDE2IGZyYWMsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IGZyYWN0aW9uIG9mIGxhZyAgICovDQorCQlXb3JkMTYgTF9zdWJmciAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogc3ViZnJhbWUgc2l6ZSAgICAgKi8NCisJICAgICApDQorew0KKwlXb3JkMTYgaiwgaywgKng7DQorCVdvcmQzMiBMX3N1bTsNCisJV29yZDE2ICpwdHIsICpwdHIxOw0KKwlXb3JkMTYgKnB0cjI7DQorDQorCXggPSBleGMgLSBUMDsgICANCisJZnJhYyA9IC1mcmFjOw0KKwlpZiAoZnJhYyA8IDApDQorCXsNCisJCWZyYWMgKz0gVVBfU0FNUDsNCisJCXgtLTsNCisJfSAgIA0KKwl4IC09IDE1OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB4ID0gTF9JTlRFUlBPTDIgLSAxICovDQorCWsgPSAzIC0gZnJhYzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGsgPSBVUF9TQU1QIC0gMSAtIGZyYWMgKi8NCisNCisJcHRyMiA9ICYoaW50ZXI0XzJba11bMF0pOw0KKwlmb3IgKGogPSAwOyBqIDwgTF9zdWJmcjsgaisrKQ0KKwl7DQorCQlwdHIgPSBwdHIyOw0KKwkJcHRyMSA9IHg7DQorCQlMX3N1bSAgPSB2b19tdWx0MzIoKCpwdHIxKyspLCAoKnB0cisrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCpwdHIxKyspLCAoKnB0cisrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCpwdHIxKyspLCAoKnB0cisrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCpwdHIxKyspLCAoKnB0cisrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCpwdHIxKyspLCAoKnB0cisrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCpwdHIxKyspLCAoKnB0cisrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCpwdHIxKyspLCAoKnB0cisrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCpwdHIxKyspLCAoKnB0cisrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCpwdHIxKyspLCAoKnB0cisrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCpwdHIxKyspLCAoKnB0cisrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCpwdHIxKyspLCAoKnB0cisrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCpwdHIxKyspLCAoKnB0cisrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCpwdHIxKyspLCAoKnB0cisrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCpwdHIxKyspLCAoKnB0cisrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCpwdHIxKyspLCAoKnB0cisrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCpwdHIxKyspLCAoKnB0cisrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCpwdHIxKyspLCAoKnB0cisrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCpwdHIxKyspLCAoKnB0cisrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCpwdHIxKyspLCAoKnB0cisrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCpwdHIxKyspLCAoKnB0cisrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCpwdHIxKyspLCAoKnB0cisrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCpwdHIxKyspLCAoKnB0cisrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCpwdHIxKyspLCAoKnB0cisrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCpwdHIxKyspLCAoKnB0cisrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCpwdHIxKyspLCAoKnB0cisrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCpwdHIxKyspLCAoKnB0cisrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCpwdHIxKyspLCAoKnB0cisrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCpwdHIxKyspLCAoKnB0cisrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCpwdHIxKyspLCAoKnB0cisrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCpwdHIxKyspLCAoKnB0cisrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCpwdHIxKyspLCAoKnB0cisrKSk7DQorCQlMX3N1bSArPSB2b19tdWx0MzIoKCpwdHIxKyspLCAoKnB0cisrKSk7DQorDQorCQlMX3N1bSA9IExfc2hsMihMX3N1bSwgMik7DQorCQlleGNbal0gPSBleHRyYWN0X2goTF9hZGQoTF9zdW0sIDB4ODAwMCkpOw0KKwkJeCsrOw0KKwl9DQorDQorCXJldHVybjsNCit9DQorDQorDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9wcmVlbXBoLmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL3ByZWVtcGguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNWJjZDMzCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9wcmVlbXBoLmMKQEAgLTAsMCArMSw4OCBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqICAgICAgRmlsZTogcHJlZW1waC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgIERlc2NyaXB0aW9uOiBQcmVlbXBoYXNpczogZmlsdGVyaW5nIHRocm91Z2ggMSAtIGcgel4tMSAgICAgICAgICoNCisqCSAgICAgICAgICAgUHJlZW1waDIgLS0+IHNpZ25hbCBpcyBtdWx0aXBsaWVkIGJ5IDIgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKyNpbmNsdWRlICJ0eXBlZGVmLmgiDQorI2luY2x1ZGUgImJhc2ljX29wLmgiDQorDQordm9pZCBQcmVlbXBoKA0KKwkJV29yZDE2IHhbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaS9vKSAgIDogaW5wdXQgc2lnbmFsIG92ZXJ3cml0dGVuIGJ5IHRoZSBvdXRwdXQgKi8NCisJCVdvcmQxNiBtdSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFExNSA6IHByZWVtcGhhc2lzIGNvZWZmaWNpZW50ICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgbGcsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBsZW5naHQgb2YgZmlsdGVyaW5nICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2ICogbWVtICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaS9vKSAgIDogbWVtb3J5ICh4Wy0xXSkgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJICAgICkNCit7DQorCVdvcmQxNiB0ZW1wOw0KKwlXb3JkMzIgaSwgTF90bXA7DQorDQorCXRlbXAgPSB4W2xnIC0gMV07ICAgICAgICAgICAgICAgICAgICAgDQorDQorCWZvciAoaSA9IGxnIC0gMTsgaSA+IDA7IGktLSkNCisJew0KKwkJTF90bXAgPSBMX2RlcG9zaXRfaCh4W2ldKTsNCisJCUxfdG1wIC09ICh4W2kgLSAxXSAqIG11KTw8MTsNCisJCXhbaV0gPSAoTF90bXAgKyAweDgwMDApPj4xNjsgICAgICAgICAgICAgICANCisJfQ0KKw0KKwlMX3RtcCA9IExfZGVwb3NpdF9oKHhbMF0pOw0KKwlMX3RtcCAtPSAoKCptZW0pICogbXUpPDwxOw0KKwl4WzBdID0gKExfdG1wICsgMHg4MDAwKT4+MTY7ICAgICAgICAgICAgICAgICAgIA0KKw0KKwkqbWVtID0gdGVtcDsgICAgICAgICAgICAgICAgICAgICAgICAgICANCisNCisJcmV0dXJuOw0KK30NCisNCisNCit2b2lkIFByZWVtcGgyKA0KKwkJV29yZDE2IHhbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaS9vKSAgIDogaW5wdXQgc2lnbmFsIG92ZXJ3cml0dGVuIGJ5IHRoZSBvdXRwdXQgKi8NCisJCVdvcmQxNiBtdSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFExNSA6IHByZWVtcGhhc2lzIGNvZWZmaWNpZW50ICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgbGcsICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBsZW5naHQgb2YgZmlsdGVyaW5nICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2ICogbWVtICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaS9vKSAgIDogbWVtb3J5ICh4Wy0xXSkgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJICAgICApDQorew0KKwlXb3JkMTYgdGVtcDsNCisJV29yZDMyIGksIExfdG1wOw0KKw0KKwl0ZW1wID0geFtsZyAtIDFdOyAgICAgICAgICAgICAgICAgICAgIA0KKw0KKwlmb3IgKGkgPSAoV29yZDE2KSAobGcgLSAxKTsgaSA+IDA7IGktLSkNCisJew0KKwkJTF90bXAgPSBMX2RlcG9zaXRfaCh4W2ldKTsNCisJCUxfdG1wIC09ICh4W2kgLSAxXSAqIG11KTw8MTsNCisJCUxfdG1wID0gKExfdG1wIDw8IDEpOw0KKwkJeFtpXSA9IChMX3RtcCArIDB4ODAwMCk+PjE2OyAgICAgICAgICAgICAgIA0KKwl9DQorDQorCUxfdG1wID0gTF9kZXBvc2l0X2goeFswXSk7DQorCUxfdG1wIC09ICgoKm1lbSkgKiBtdSk8PDE7DQorCUxfdG1wID0gKExfdG1wIDw8IDEpOw0KKwl4WzBdID0gKExfdG1wICsgMHg4MDAwKT4+MTY7ICAgICAgICAgICAgICAgICAgIA0KKw0KKwkqbWVtID0gdGVtcDsgICAgICAgICAgICAgICAgICAgICAgICAgICANCisNCisJcmV0dXJuOw0KK30NCisNCisNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL3FfZ2FpbjIuYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvcV9nYWluMi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5ZWVmZTQKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL3FfZ2FpbjIuYwpAQCAtMCwwICsxLDM0NiBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqICBGaWxlOiBxX2dhaW4yLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogIERlc2NyaXB0aW9uOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqIFF1YW50aXphdGlvbiBvZiBwaXRjaCBhbmQgY29kZWJvb2sgZ2FpbnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiBNQSBwcmVkaWN0aW9uIGlzIHBlcmZvcm1lZCBvbiB0aGUgaW5ub3ZhdGlvbiBlbmVyZ3kgKGluIGRCIHdpdGggbWVhbiAgICAgKg0KKyogcmVtb3ZlZCkuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqIEFuIGluaXRpYWwgcHJlZGljdGVkIGdhaW4sIGdfMCwgaXMgZmlyc3QgZGV0ZXJtaW5lZCBhbmQgdGhlIGNvcnJlY3Rpb24gICAqDQorKiBmYWN0b3IgICAgIGFscGhhID0gZ2FpbiAvIGdfMCAgICBpcyBxdWFudGl6ZWQuICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogVGhlIHBpdGNoIGdhaW4gYW5kIHRoZSBjb3JyZWN0aW9uIGZhY3RvciBhcmUgdmVjdG9yIHF1YW50aXplZCBhbmQgdGhlICAgICoNCisqIG1lYW4tc3F1YXJlZCB3ZWlnaHRlZCBlcnJvciBjcml0ZXJpb24gaXMgdXNlZCBpbiB0aGUgcXVhbnRpemVyIHNlYXJjaC4gICAqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaW5jbHVkZSAidHlwZWRlZi5oIg0KKyNpbmNsdWRlICJiYXNpY19vcC5oIg0KKyNpbmNsdWRlICJvcGVyXzMyYi5oIg0KKyNpbmNsdWRlICJtYXRoX29wLmgiDQorI2luY2x1ZGUgImxvZzIuaCINCisjaW5jbHVkZSAiYWNlbHAuaCINCisjaW5jbHVkZSAicV9nYWluMi50YWIiDQorDQorI2RlZmluZSBNRUFOX0VORVIgICAgMzANCisjZGVmaW5lIFJBTkdFICAgICAgICA2NA0KKyNkZWZpbmUgUFJFRF9PUkRFUiAgIDQNCisNCisNCisvKiBNQSBwcmVkaWN0aW9uIGNvZWZmID17MC41LCAwLjQsIDAuMywgMC4yfSBpbiBRMTMgKi8NCitzdGF0aWMgV29yZDE2IHByZWRbUFJFRF9PUkRFUl0gPSB7NDA5NiwgMzI3NywgMjQ1OCwgMTYzOH07DQorDQorDQordm9pZCBJbml0X1FfZ2FpbjIoDQorCQlXb3JkMTYgKiBtZW0gICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG91dHB1dCAgOnN0YXRpYyBtZW1vcnkgKDIgd29yZHMpICAgICAgKi8NCisJCSkNCit7DQorCVdvcmQzMiBpOw0KKw0KKwkvKiA0bmQgb3JkZXIgcXVhbnRpemVyIGVuZXJneSBwcmVkaWN0b3IgKGluaXQgdG8gLTE0LjAgaW4gUTEwKSAqLw0KKwlmb3IgKGkgPSAwOyBpIDwgUFJFRF9PUkRFUjsgaSsrKQ0KKwl7DQorCQltZW1baV0gPSAtMTQzMzY7ICAgICAgICAgICAgICAgICAgICAgLyogcGFzdF9xdWFfZW5baV0gKi8NCisJfQ0KKw0KKwlyZXR1cm47DQorfQ0KKw0KK1dvcmQxNiBRX2dhaW4yKCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSZXR1cm4gaW5kZXggb2YgcXVhbnRpemF0aW9uLiAgICAgICAgICAqLw0KKwkJV29yZDE2IHhuW10sICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUV94bjogVGFyZ2V0IHZlY3Rvci4gICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IHkxW10sICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUV94bjogQWRhcHRpdmUgY29kZWJvb2suICAgICAgICAgICAqLw0KKwkJV29yZDE2IFFfeG4sICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogeG4gYW5kIHkxIGZvcm1hdCAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IHkyW10sICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTkgIDogRmlsdGVyZWQgaW5ub3ZhdGl2ZSB2ZWN0b3IuICAqLw0KKwkJV29yZDE2IGNvZGVbXSwgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTkgIDogSW5ub3ZhdGl2ZSB2ZWN0b3IuICAgICAgICAgICAqLw0KKwkJV29yZDE2IGdfY29lZmZbXSwgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogQ29ycmVsYXRpb25zIDx4biB5MT4gPHkxIHkxPiAqLw0KKwkJLyogICAgICAgICAgIENvbXB1dGUgaW4gR19waXRjaCgpLiAgICAgICAgKi8NCisJCVdvcmQxNiBMX3N1YmZyLCAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IFN1YmZyYW1lIGxlbmdodC4gICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBuYml0cywgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IG51bWJlciBvZiBiaXRzICg2IG9yIDcpICAgICAgKi8NCisJCVdvcmQxNiAqIGdhaW5fcGl0LCAgICAgICAgICAgICAgICAgICAgLyogKGkvbylRMTQ6IFBpdGNoIGdhaW4uICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQzMiAqIGdhaW5fY29kLCAgICAgICAgICAgICAgICAgICAgLyogKG8pIFExNiA6IENvZGUgZ2Fpbi4gICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBncF9jbGlwLCAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IEdwIENsaXBwaW5nIGZsYWcgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiAqIG1lbSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkvbykgICA6IHN0YXRpYyBtZW1vcnkgKDIgd29yZHMpICAgICAgKi8NCisJICAgICAgKQ0KK3sNCisJV29yZDE2IGluZGV4LCAqcCwgbWluX2luZCwgc2l6ZTsNCisJV29yZDE2IGV4cCwgZnJhYywgZ2NvZGUwLCBleHBfZ2NvZGUwLCBlX21heCwgZXhwX2NvZGUsIHF1YV9lbmVyOw0KKwlXb3JkMTYgZ19waXRjaCwgZzJfcGl0Y2gsIGdfY29kZSwgZ19waXRfY29kLCBnMl9jb2RlLCBnMl9jb2RlX2xvOw0KKwlXb3JkMTYgY29lZmZbNV0sIGNvZWZmX2xvWzVdLCBleHBfY29lZmZbNV07DQorCVdvcmQxNiBleHBfbWF4WzVdOw0KKwlXb3JkMzIgaSwgaiwgTF90bXAsIGRpc3RfbWluOw0KKwlXb3JkMTYgKnBhc3RfcXVhX2VuLCAqdF9xdWFfZ2FpbjsNCisNCisJcGFzdF9xdWFfZW4gPSBtZW07ICAgICAgICAgICAgICAgICAgICAgDQorDQorCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCSAqIC0gRmluZCB0aGUgaW5pdGlhbCBxdWFudGl6YXRpb24gcGl0Y2ggaW5kZXggICAgICAgICAgICAgICAgICAgICAqDQorCSAqIC0gU2V0IGdhaW5zIHNlYXJjaCByYW5nZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKwlpZiAobmJpdHMgPT0gNikNCisJew0KKwkJdF9xdWFfZ2FpbiA9IHRfcXVhX2dhaW42YjsgICAgICAgICANCisJCW1pbl9pbmQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgDQorCQlzaXplID0gUkFOR0U7ICAgICAgICAgICAgICAgICAgICAgIA0KKw0KKwkJaWYoZ3BfY2xpcCA9PSAxKQ0KKwkJew0KKwkJCXNpemUgPSBzaXplIC0gMTY7ICAgICAgICAgIC8qIGxpbWl0IGdhaW4gcGl0Y2ggdG8gMS4wICovDQorCQl9DQorCX0gZWxzZQ0KKwl7DQorCQl0X3F1YV9nYWluID0gdF9xdWFfZ2FpbjdiOyAgICAgICAgIA0KKw0KKwkJcCA9IHRfcXVhX2dhaW43YiArIFJBTkdFOyAgICAgICAgICAgIC8qIHB0IGF0IDEvNHRoIG9mIHRhYmxlICovDQorDQorCQlqID0gbmJfcXVhX2dhaW43YiAtIFJBTkdFOyAgICAgICAgIA0KKw0KKwkJaWYgKGdwX2NsaXAgPT0gMSkNCisJCXsNCisJCQlqID0gaiAtIDI3OyAgICAgICAgICAgICAgICAvKiBsaW1pdCBnYWluIHBpdGNoIHRvIDEuMCAqLw0KKwkJfQ0KKwkJbWluX2luZCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICANCisJCWdfcGl0Y2ggPSAqZ2Fpbl9waXQ7ICAgICAgICAgICAgICAgDQorDQorCQlmb3IgKGkgPSAwOyBpIDwgajsgaSsrLCBwICs9IDIpDQorCQl7DQorCQkJaWYgKGdfcGl0Y2ggPiAqcCkNCisJCQl7DQorCQkJCW1pbl9pbmQgPSBtaW5faW5kICsgMTsNCisJCQl9DQorCQl9DQorCQlzaXplID0gUkFOR0U7ICAgICAgICAgICAgICAgICAgICAgIA0KKwl9DQorDQorCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkgKiAgQ29tcHV0ZSBjb2VmZmljaWVudCBuZWVkIGZvciB0aGUgcXVhbnRpemF0aW9uLiAgICAgICAgICAgICAgICAgICoNCisJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqICBjb2VmZlswXSA9ICAgIHkxIHkxICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiAgY29lZmZbMV0gPSAtMiB4biB5MSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICogIGNvZWZmWzJdID0gICAgeTIgeTIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqICBjb2VmZlszXSA9IC0yIHhuIHkyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiAgY29lZmZbNF0gPSAgMiB5MSB5MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqIFByb2R1Y3QgPHkxIHkxPiBhbmQgPHhuIHkxPiBoYXZlIGJlZW4gY29tcHV0ZSBpbiBHX3BpdGNoKCkgYW5kICAgKg0KKwkgKiBhcmUgaW4gdmVjdG9yIGdfY29lZmZbXS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKwljb2VmZlswXSA9IGdfY29lZmZbMF07ICAgICAgICAgICAgICAgICANCisJZXhwX2NvZWZmWzBdID0gZ19jb2VmZlsxXTsgICAgICAgICAgICAgDQorCWNvZWZmWzFdID0gbmVnYXRlKGdfY29lZmZbMl0pOyAgICAgICAgICAgICAgICAgICAgLyogY29lZmZbMV0gPSAtMiB4biB5MSAqLw0KKwlleHBfY29lZmZbMV0gPSBnX2NvZWZmWzNdICsgMTsgICAgIA0KKw0KKwkvKiBDb21wdXRlIHNjYWxhciBwcm9kdWN0IDx5MltdLHkyW10+ICovDQorI2lmZGVmIEFTTV9PUFQgICAgICAgICAgICAgICAgICAgLyogYXNtIG9wdGltaXphdGlvbiBicmFuY2ggKi8NCisJY29lZmZbMl0gPSBleHRyYWN0X2goRG90X3Byb2R1Y3QxMl9hc20oeTIsIHkyLCBMX3N1YmZyLCAmZXhwKSk7DQorI2Vsc2UNCisJY29lZmZbMl0gPSBleHRyYWN0X2goRG90X3Byb2R1Y3QxMih5MiwgeTIsIExfc3ViZnIsICZleHApKTsNCisjZW5kaWYNCisJZXhwX2NvZWZmWzJdID0gKGV4cCAtIDE4KSArIChRX3huIDw8IDEpOyAgICAgLyogLTE4ICh5MiBROSkgKi8NCisNCisJLyogQ29tcHV0ZSBzY2FsYXIgcHJvZHVjdCAtMio8eG5bXSx5MltdPiAqLw0KKyNpZmRlZiBBU01fT1BUICAgICAgICAgICAgICAgICAgLyogYXNtIG9wdGltaXphdGlvbiBicmFuY2ggKi8NCisJY29lZmZbM10gPSBleHRyYWN0X2goTF9uZWdhdGUoRG90X3Byb2R1Y3QxMl9hc20oeG4sIHkyLCBMX3N1YmZyLCAmZXhwKSkpOw0KKyNlbHNlDQorCWNvZWZmWzNdID0gZXh0cmFjdF9oKExfbmVnYXRlKERvdF9wcm9kdWN0MTIoeG4sIHkyLCBMX3N1YmZyLCAmZXhwKSkpOw0KKyNlbmRpZg0KKw0KKwlleHBfY29lZmZbM10gPSAoZXhwIC0gOCkgKyBRX3huOyAgLyogLTkgKHkyIFE5KSwgKzEgKDIgeG4geTIpICovDQorDQorCS8qIENvbXB1dGUgc2NhbGFyIHByb2R1Y3QgMio8eTFbXSx5MltdPiAqLw0KKyNpZmRlZiBBU01fT1BUICAgICAgICAgICAgICAgICAvKiBhc20gb3B0aW1pemF0aW9uIGJyYW5jaCAqLw0KKwljb2VmZls0XSA9IGV4dHJhY3RfaChEb3RfcHJvZHVjdDEyX2FzbSh5MSwgeTIsIExfc3ViZnIsICZleHApKTsNCisjZWxzZQ0KKwljb2VmZls0XSA9IGV4dHJhY3RfaChEb3RfcHJvZHVjdDEyKHkxLCB5MiwgTF9zdWJmciwgJmV4cCkpOw0KKyNlbmRpZg0KKwlleHBfY29lZmZbNF0gPSAoZXhwIC0gOCkgKyBRX3huOyAgLyogLTkgKHkyIFE5KSwgKzEgKDIgeTEgeTIpICovDQorDQorCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCSAqICBGaW5kIGVuZXJneSBvZiBjb2RlIGFuZCBjb21wdXRlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqICAgIExfdG1wID0gTUVBTl9FTkVSIC0gMTBsb2cxMChlbmVyZ3kgb2YgY29kZS8gTF9zdWJmcikgICAgICAgICAqDQorCSAqICAgICAgICAgID0gTUVBTl9FTkVSIC0gMy4wMTAzKmxvZzIoZW5lcmd5IG9mIGNvZGUvIExfc3ViZnIpICAgICAqDQorCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKyNpZmRlZiBBU01fT1BUICAgICAgICAgICAgICAgICAvKiBhc20gb3B0aW1pemF0aW9uIGJyYW5jaCAqLw0KKwlMX3RtcCA9IERvdF9wcm9kdWN0MTJfYXNtKGNvZGUsIGNvZGUsIExfc3ViZnIsICZleHBfY29kZSk7DQorI2Vsc2UNCisJTF90bXAgPSBEb3RfcHJvZHVjdDEyKGNvZGUsIGNvZGUsIExfc3ViZnIsICZleHBfY29kZSk7DQorI2VuZGlmDQorCS8qIGV4cF9jb2RlOiAtMTggKGNvZGUgaW4gUTkpLCAtNiAoL0xfc3ViZnIpLCAtMzEgKExfdG1wIFEzMS0+UTApICovDQorCWV4cF9jb2RlID0gKGV4cF9jb2RlIC0gKDE4ICsgNiArIDMxKSk7DQorDQorCUxvZzIoTF90bXAsICZleHAsICZmcmFjKTsNCisJZXhwICs9IGV4cF9jb2RlOw0KKwlMX3RtcCA9IE1weV8zMl8xNihleHAsIGZyYWMsIC0yNDY2MCk7ICAvKiB4IC0zLjAxMDMoUTEzKSAtPiBRMTQgKi8NCisNCisJTF90bXAgKz0gKE1FQU5fRU5FUiAqIDgxOTIpPDwxOyAvKiArIE1FQU5fRU5FUiBpbiBRMTQgKi8NCisNCisJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJICogQ29tcHV0ZSBnY29kZTAuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICogID0gU3VtKGk9MCwxKSBwcmVkW2ldKnBhc3RfcXVhX2VuW2ldICsgbWVhbl9lbmVyIC0gZW5lcl9jb2RlICAgICoNCisJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorCUxfdG1wID0gKExfdG1wIDw8IDEwKTsgICAgICAgICAgICAgIC8qIEZyb20gUTE0IHRvIFEyNCAqLw0KKwlMX3RtcCArPSAocHJlZFswXSAqIHBhc3RfcXVhX2VuWzBdKTw8MTsgICAgICAvKiBRMTMqUTEwIC0+IFEyNCAqLw0KKwlMX3RtcCArPSAocHJlZFsxXSAqIHBhc3RfcXVhX2VuWzFdKTw8MTsgICAgICAvKiBRMTMqUTEwIC0+IFEyNCAqLw0KKwlMX3RtcCArPSAocHJlZFsyXSAqIHBhc3RfcXVhX2VuWzJdKTw8MTsgICAgICAvKiBRMTMqUTEwIC0+IFEyNCAqLw0KKwlMX3RtcCArPSAocHJlZFszXSAqIHBhc3RfcXVhX2VuWzNdKTw8MTsgICAgICAvKiBRMTMqUTEwIC0+IFEyNCAqLw0KKw0KKwlnY29kZTAgPSBleHRyYWN0X2goTF90bXApOyAgICAgICAgICAgICAvKiBGcm9tIFEyNCB0byBROCAgKi8NCisNCisJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJICogZ2NvZGUwID0gcG93KDEwLjAsIGdjb2RlMC8yMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICogICAgICAgID0gcG93KDIsIDMuMzIxOTI4Kmdjb2RlMC8yMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICogICAgICAgID0gcG93KDIsIDAuMTY2MDk2Kmdjb2RlMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorCUxfdG1wID0gdm9fTF9tdWx0KGdjb2RlMCwgNTQ0Myk7ICAgICAgICAgIC8qICowLjE2NjA5NiBpbiBRMTUgLT4gUTI0ICAgICAqLw0KKwlMX3RtcCA9IExfdG1wID4+IDg7ICAgICAgICAgICAgICAgLyogRnJvbSBRMjQgdG8gUTE2ICAgICAgICAgICAgICovDQorCVZPX0xfRXh0cmFjdChMX3RtcCwgJmV4cF9nY29kZTAsICZmcmFjKTsgIC8qIEV4dHJhY3QgZXhwb25lbnQgb2YgZ2NvZGUwICAqLw0KKw0KKwlnY29kZTAgPSAoV29yZDE2KShQb3cyKDE0LCBmcmFjKSk7ICAgIC8qIFB1dCAxNCBhcyBleHBvbmVudCBzbyB0aGF0ICAqLw0KKwkvKiBvdXRwdXQgb2YgUG93MigpIHdpbGwgYmU6ICAgKi8NCisJLyogMTYzODQgPCBQb3cyKCkgPD0gMzI3NjcgICAgICovDQorCWV4cF9nY29kZTAgLT0gMTQ7DQorDQorCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJICogRmluZCB0aGUgYmVzdCBxdWFudGl6ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqIEJlZm9yZSBkb2luZyB0aGUgY29tcHV0YXRpb24gd2UgbmVlZCB0byBhbGluZyBleHBvbmVudHMgb2YgY29lZmZbXSAgICAgICoNCisJICogdG8gYmUgc3VyZSB0byBoYXZlIHRoZSBtYXhpbXVtIHByZWNpc2lvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqIEluIHRoZSB0YWJsZSB0aGUgcGl0Y2ggZ2FpbnMgYXJlIGluIFExNCwgdGhlIGNvZGUgZ2FpbnMgYXJlIGluIFExMSBhbmQgICoNCisJICogYXJlIG11bHRpcGx5IGJ5IGdjb2RlMCB3aGljaCBoYXZlIGJlZW4gbXVsdGlwbHkgYnkgMl5leHBfZ2NvZGUwLiAgICAgICAgKg0KKwkgKiBBbHNvIHdoZW4gd2UgY29tcHV0ZSBnX3BpdGNoKmdfcGl0Y2gsIGdfY29kZSpnX2NvZGUgYW5kIGdfcGl0Y2gqZ19jb2RlICAqDQorCSAqIHdlIGRpdmlkZSBieSAyXjE1LiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICogQ29uc2lkZXJpbmcgYWxsIHRoZSBzY2FsaW5nIGFib3ZlIHdlIGhhdmU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqICAgZXhwX2NvZGUgPSBleHBfZ2NvZGUwLTExKzE1ID0gZXhwX2djb2RlMCs0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiAgIGdfcGl0Y2gqZ19waXRjaCAgPSAtMTQtMTQrMTUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqICAgZ19waXRjaCAgICAgICAgICA9IC0xNCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICogICBnX2NvZGUqZ19jb2RlICAgID0gKDIqZXhwX2NvZGUpKzE1ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiAgIGdfY29kZSAgICAgICAgICAgPSBleHBfY29kZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqICAgZ19waXRjaCpnX2NvZGUgICA9IC0xNCArIGV4cF9jb2RlICsxNSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiAgIGdfcGl0Y2gqZ19waXRjaCAqIGNvZWZmWzBdICA7ZXhwX21heDAgPSBleHBfY29lZmZbMF0gLSAxMyAgICAgICAgICAgICAqDQorCSAqICAgZ19waXRjaCAgICAgICAgICogY29lZmZbMV0gIDtleHBfbWF4MSA9IGV4cF9jb2VmZlsxXSAtIDE0ICAgICAgICAgICAgICoNCisJICogICBnX2NvZGUqZ19jb2RlICAgKiBjb2VmZlsyXSAgO2V4cF9tYXgyID0gZXhwX2NvZWZmWzJdICsxNSsoMipleHBfY29kZSkgKg0KKwkgKiAgIGdfY29kZSAgICAgICAgICAqIGNvZWZmWzNdICA7ZXhwX21heDMgPSBleHBfY29lZmZbM10gKyBleHBfY29kZSAgICAgICAqDQorCSAqICAgZ19waXRjaCpnX2NvZGUgICogY29lZmZbNF0gIDtleHBfbWF4NCA9IGV4cF9jb2VmZls0XSArIDEgKyBleHBfY29kZSAgICoNCisJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisJZXhwX2NvZGUgPSAoZXhwX2djb2RlMCArIDQpOw0KKwlleHBfbWF4WzBdID0gKGV4cF9jb2VmZlswXSAtIDEzKTsgICAgDQorCWV4cF9tYXhbMV0gPSAoZXhwX2NvZWZmWzFdIC0gMTQpOyAgICANCisJZXhwX21heFsyXSA9IChleHBfY29lZmZbMl0gKyAoMTUgKyAoZXhwX2NvZGUgPDwgMSkpKTsgIA0KKwlleHBfbWF4WzNdID0gKGV4cF9jb2VmZlszXSArIGV4cF9jb2RlKTsgICANCisJZXhwX21heFs0XSA9IChleHBfY29lZmZbNF0gKyAoMSArIGV4cF9jb2RlKSk7ICANCisNCisJLyogRmluZCBtYXhpbXVtIGV4cG9uYW50ICovDQorDQorCWVfbWF4ID0gZXhwX21heFswXTsgICAgICAgICAgICAgICAgICAgDQorCWZvciAoaSA9IDE7IGkgPCA1OyBpKyspDQorCXsNCisJCWlmKGV4cF9tYXhbaV0gPiBlX21heCkNCisJCXsNCisJCQllX21heCA9IGV4cF9tYXhbaV07ICAgICAgICAgICAgDQorCQl9DQorCX0NCisNCisJLyogYWxpZ24gY29lZmZbXSBhbmQgc2F2ZSBpbiBzcGVjaWFsIDMyIGJpdCBkb3VibGUgcHJlY2lzaW9uICovDQorDQorCWZvciAoaSA9IDA7IGkgPCA1OyBpKyspDQorCXsNCisJCWogPSBhZGQxKHZvX3N1YihlX21heCwgZXhwX21heFtpXSksIDIpOy8qIC80IHRvIGF2b2lkIG92ZXJmbG93ICovDQorCQlMX3RtcCA9IExfZGVwb3NpdF9oKGNvZWZmW2ldKTsNCisJCUxfdG1wID0gTF9zaHIoTF90bXAsIGopOw0KKwkJVk9fTF9FeHRyYWN0KExfdG1wLCAmY29lZmZbaV0sICZjb2VmZl9sb1tpXSk7DQorCQljb2VmZl9sb1tpXSA9IChjb2VmZl9sb1tpXSA+PiAzKTsgICAvKiBsbyA+PiAzICovDQorCX0NCisNCisJLyogQ29kZWJvb2sgc2VhcmNoICovDQorCWRpc3RfbWluID0gTUFYXzMyOyAgICAgICAgICAgICAgICAgICAgIA0KKwlwID0gJnRfcXVhX2dhaW5bbWluX2luZCA8PCAxXTsgICAgICANCisNCisJaW5kZXggPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorCWZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspDQorCXsNCisJCWdfcGl0Y2ggPSAqcCsrOyAgICAgICAgICAgICAgICAgICAgDQorCQlnX2NvZGUgPSAqcCsrOyAgICAgICAgICAgICAgICAgICAgIA0KKw0KKwkJZ19jb2RlID0gKChnX2NvZGUgKiBnY29kZTApICsgMHg0MDAwKT4+MTU7DQorCQlnMl9waXRjaCA9ICgoZ19waXRjaCAqIGdfcGl0Y2gpICsgMHg0MDAwKT4+MTU7DQorCQlnX3BpdF9jb2QgPSAoKGdfY29kZSAqIGdfcGl0Y2gpICsgMHg0MDAwKT4+MTU7DQorCQlMX3RtcCA9IChnX2NvZGUgKiBnX2NvZGUpPDwxOw0KKwkJVk9fTF9FeHRyYWN0KExfdG1wLCAmZzJfY29kZSwgJmcyX2NvZGVfbG8pOw0KKw0KKwkJTF90bXAgPSAoY29lZmZbMl0gKiBnMl9jb2RlX2xvKTw8MTsNCisJCUxfdG1wID0gIChMX3RtcCA+PiAzKTsNCisJCUxfdG1wICs9IChjb2VmZl9sb1swXSAqIGcyX3BpdGNoKTw8MTsNCisJCUxfdG1wICs9IChjb2VmZl9sb1sxXSAqIGdfcGl0Y2gpPDwxOw0KKwkJTF90bXAgKz0gKGNvZWZmX2xvWzJdICogZzJfY29kZSk8PDE7DQorCQlMX3RtcCArPSAoY29lZmZfbG9bM10gKiBnX2NvZGUpPDwxOw0KKwkJTF90bXAgKz0gKGNvZWZmX2xvWzRdICogZ19waXRfY29kKTw8MTsNCisJCUxfdG1wID0gIChMX3RtcCA+PiAxMik7DQorCQlMX3RtcCArPSAoY29lZmZbMF0gKiBnMl9waXRjaCk8PDE7DQorCQlMX3RtcCArPSAoY29lZmZbMV0gKiBnX3BpdGNoKTw8MTsNCisJCUxfdG1wICs9IChjb2VmZlsyXSAqIGcyX2NvZGUpPDwxOw0KKwkJTF90bXAgKz0gKGNvZWZmWzNdICogZ19jb2RlKTw8MTsNCisJCUxfdG1wICs9IChjb2VmZls0XSAqIGdfcGl0X2NvZCk8PDE7DQorDQorCQlpZihMX3RtcCA8IGRpc3RfbWluKQ0KKwkJew0KKwkJCWRpc3RfbWluID0gTF90bXA7ICAgICAgICAgICAgICANCisJCQlpbmRleCA9IGk7ICAgICAgICAgICAgICAgICAgICAgDQorCQl9DQorCX0NCisNCisJLyogUmVhZCB0aGUgcXVhbnRpemVkIGdhaW5zICovDQorCWluZGV4ID0gaW5kZXggKyBtaW5faW5kOw0KKwlwID0gJnRfcXVhX2dhaW5bKGluZGV4ICsgaW5kZXgpXTsgICAgDQorCSpnYWluX3BpdCA9ICpwKys7ICAgICAgICAgICAgICAgICAgICAgICAvKiBzZWxlY3RlZCBwaXRjaCBnYWluIGluIFExNCAqLw0KKwlnX2NvZGUgPSAqcCsrOyAgICAgICAgICAgICAgICAgICAgICAgICAgLyogc2VsZWN0ZWQgY29kZSBnYWluIGluIFExMSAgKi8NCisNCisJTF90bXAgPSB2b19MX211bHQoZ19jb2RlLCBnY29kZTApOyAgICAgICAgICAgICAvKiBRMTEqUTAgLT4gUTEyICovDQorCUxfdG1wID0gTF9zaGwoTF90bXAsIChleHBfZ2NvZGUwICsgNCkpOyAgIC8qIFExMiAtPiBRMTYgKi8NCisNCisJKmdhaW5fY29kID0gTF90bXA7ICAgICAgICAgICAgICAgICAgICAgICAvKiBnYWluIG9mIGNvZGUgaW4gUTE2ICovDQorDQorCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkgKiBxdWFfZW5lciA9IDIwKmxvZzEwKGdfY29kZSkgICAgICAgICAgICAgICAgICAgICAgICoNCisJICogICAgICAgICAgPSA2LjAyMDYqbG9nMihnX2NvZGUpICAgICAgICAgICAgICAgICAgICAqDQorCSAqICAgICAgICAgID0gNi4wMjA2Kihsb2cyKGdfY29kZVExMSkgLSAxMSkgICAgICAgICAgKg0KKwkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorCUxfdG1wID0gTF9kZXBvc2l0X2woZ19jb2RlKTsNCisJTG9nMihMX3RtcCwgJmV4cCwgJmZyYWMpOw0KKwlleHAgLT0gMTE7DQorCUxfdG1wID0gTXB5XzMyXzE2KGV4cCwgZnJhYywgMjQ2NjApOyAgIC8qIHggNi4wMjA2IGluIFExMiAqLw0KKw0KKwlxdWFfZW5lciA9IChXb3JkMTYpKExfdG1wID4+IDMpOyAvKiByZXN1bHQgaW4gUTEwICovDQorDQorCS8qIHVwZGF0ZSB0YWJsZSBvZiBwYXN0IHF1YW50aXplZCBlbmVyZ2llcyAqLw0KKw0KKwlwYXN0X3F1YV9lblszXSA9IHBhc3RfcXVhX2VuWzJdOyAgICAgICANCisJcGFzdF9xdWFfZW5bMl0gPSBwYXN0X3F1YV9lblsxXTsgICAgICAgDQorCXBhc3RfcXVhX2VuWzFdID0gcGFzdF9xdWFfZW5bMF07ICAgICAgIA0KKwlwYXN0X3F1YV9lblswXSA9IHF1YV9lbmVyOyAgICAgICAgICAgICANCisNCisJcmV0dXJuIChpbmRleCk7DQorfQ0KKw0KKw0KKw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvcV9wdWxzZS5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9xX3B1bHNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTI4YmE0MAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvcV9wdWxzZS5jCkBAIC0wLDAgKzEsNDAwIEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogICAgICBGaWxlOiBxX3B1bHNlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICBEZXNjcmlwdGlvbjogQ29kaW5nIGFuZCBkZWNvZGluZyBvZiBhbGdlYnJhaWMgY29kZWJvb2sgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaW5jbHVkZSA8c3RkaW8uaD4NCisjaW5jbHVkZSAidHlwZWRlZi5oIg0KKyNpbmNsdWRlICJiYXNpY19vcC5oIg0KKyNpbmNsdWRlICJxX3B1bHNlLmgiDQorDQorI2RlZmluZSBOQl9QT1MgMTYgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHBvcyBpbiB0cmFjaywgbWFzayBmb3Igc2lnbiBiaXQgKi8NCisNCitXb3JkMzIgcXVhbnRfMXBfTjEoICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIHJldHVybiBOKzEgYml0cyAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IHBvcywgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgcG9zaXRpb24gb2YgdGhlIHB1bHNlICAgICAgICovDQorCQlXb3JkMTYgTikgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBudW1iZXIgb2YgYml0cyBmb3IgcG9zaXRpb24gKi8NCit7DQorCVdvcmQxNiBtYXNrOw0KKwlXb3JkMzIgaW5kZXg7DQorDQorCW1hc2sgPSAoMSA8PCBOKSAtIDE7ICAgICAgICAgICAgICAvKiBtYXNrID0gKCgxPDxOKS0xKTsgKi8NCisJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkgKiBRdWFudGl6YXRpb24gb2YgMSBwdWxzZSB3aXRoIE4rMSBiaXRzOiAgICAgICAgICAgICAgICAqDQorCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorCWluZGV4ID0gTF9kZXBvc2l0X2woKFdvcmQxNikgKHBvcyAmIG1hc2spKTsNCisJaWYgKChwb3MgJiBOQl9QT1MpICE9IDApDQorCXsNCisJCWluZGV4ID0gdm9fTF9hZGQoaW5kZXgsIExfZGVwb3NpdF9sKDEgPDwgTikpOyAgIC8qIGluZGV4ICs9IDEgPDwgTjsgKi8NCisJfQ0KKwlyZXR1cm4gKGluZGV4KTsNCit9DQorDQorDQorV29yZDMyIHF1YW50XzJwXzJOMSggICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSByZXR1cm4gKDIqTikrMSBiaXRzICAgICAgICAgKi8NCisJCVdvcmQxNiBwb3MxLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIHBvc2l0aW9uIG9mIHRoZSBwdWxzZSAxICAgICAqLw0KKwkJV29yZDE2IHBvczIsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgcG9zaXRpb24gb2YgdGhlIHB1bHNlIDIgICAgICovDQorCQlXb3JkMTYgTikgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBudW1iZXIgb2YgYml0cyBmb3IgcG9zaXRpb24gKi8NCit7DQorCVdvcmQxNiBtYXNrLCB0bXA7DQorCVdvcmQzMiBpbmRleDsNCisJbWFzayA9ICgxIDw8IE4pIC0gMTsgICAgICAgICAgICAgIC8qIG1hc2sgPSAoKDE8PE4pLTEpOyAqLw0KKwkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCSAqIFF1YW50aXphdGlvbiBvZiAyIHB1bHNlcyB3aXRoIDIqTisxIGJpdHM6ICAgICAgICAgICAgICoNCisJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisJaWYgKCgocG9zMiBeIHBvczEpICYgTkJfUE9TKSA9PSAwKQ0KKwl7DQorCQkvKiBzaWduIG9mIDFzdCBwdWxzZSA9PSBzaWduIG9mIDJ0aCBwdWxzZSAqLw0KKwkJaWYocG9zMSA8PSBwb3MyKSAgICAgICAgICAvKiAoKHBvczEgLSBwb3MyKSA8PSAwKSAqLw0KKwkJew0KKwkJCS8qIGluZGV4ID0gKChwb3MxICYgbWFzaykgPDwgTikgKyAocG9zMiAmIG1hc2spOyAqLw0KKwkJCWluZGV4ID0gTF9kZXBvc2l0X2woYWRkMSgoKChXb3JkMTYpIChwb3MxICYgbWFzaykpIDw8IE4pLCAoKFdvcmQxNikgKHBvczIgJiBtYXNrKSkpKTsNCisJCX0gZWxzZQ0KKwkJew0KKwkJCS8qICgocG9zMiAmIG1hc2spIDw8IE4pICsgKHBvczEgJiBtYXNrKTsgKi8NCisJCQlpbmRleCA9IExfZGVwb3NpdF9sKGFkZDEoKCgoV29yZDE2KSAocG9zMiAmIG1hc2spKSA8PCBOKSwgKChXb3JkMTYpIChwb3MxICYgbWFzaykpKSk7DQorCQl9DQorCQlpZiAoKHBvczEgJiBOQl9QT1MpICE9IDApDQorCQl7DQorCQkJdG1wID0gKE4gPDwgMSk7DQorCQkJaW5kZXggPSB2b19MX2FkZChpbmRleCwgKDFMIDw8IHRtcCkpOyAgICAgICAvKiBpbmRleCArPSAxIDw8ICgyKk4pOyAqLw0KKwkJfQ0KKwl9IGVsc2UNCisJew0KKwkJLyogc2lnbiBvZiAxc3QgcHVsc2UgIT0gc2lnbiBvZiAydGggcHVsc2UgKi8NCisJCWlmICh2b19zdWIoKFdvcmQxNikgKHBvczEgJiBtYXNrKSwgKFdvcmQxNikgKHBvczIgJiBtYXNrKSkgPD0gMCkNCisJCXsNCisJCQkvKiBpbmRleCA9ICgocG9zMiAmIG1hc2spIDw8IE4pICsgKHBvczEgJiBtYXNrKTsgKi8NCisJCQlpbmRleCA9IExfZGVwb3NpdF9sKGFkZDEoKCgoV29yZDE2KSAocG9zMiAmIG1hc2spKSA8PCBOKSwgKChXb3JkMTYpIChwb3MxICYgbWFzaykpKSk7IA0KKwkJCWlmICgocG9zMiAmIE5CX1BPUykgIT0gMCkNCisJCQl7DQorCQkJCXRtcCA9IChOIDw8IDEpOyAgICAgICAgICAgLyogaW5kZXggKz0gMSA8PCAoMipOKTsgKi8NCisJCQkJaW5kZXggPSB2b19MX2FkZChpbmRleCwgKDFMIDw8IHRtcCkpOw0KKwkJCX0NCisJCX0gZWxzZQ0KKwkJew0KKwkJCS8qIGluZGV4ID0gKChwb3MxICYgbWFzaykgPDwgTikgKyAocG9zMiAmIG1hc2spOwkgKi8NCisJCQlpbmRleCA9IExfZGVwb3NpdF9sKGFkZDEoKCgoV29yZDE2KSAocG9zMSAmIG1hc2spKSA8PCBOKSwgKChXb3JkMTYpIChwb3MyICYgbWFzaykpKSk7IA0KKwkJCWlmICgocG9zMSAmIE5CX1BPUykgIT0gMCkNCisJCQl7DQorCQkJCXRtcCA9IChOIDw8IDEpOw0KKwkJCQlpbmRleCA9IHZvX0xfYWRkKGluZGV4LCAoMSA8PCB0bXApKTsgICAgLyogaW5kZXggKz0gMSA8PCAoMipOKTsgKi8NCisJCQl9DQorCQl9DQorCX0NCisJcmV0dXJuIChpbmRleCk7DQorfQ0KKw0KKw0KK1dvcmQzMiBxdWFudF8zcF8zTjEoICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgcmV0dXJuICgzKk4pKzEgYml0cyAgICAgICAgICovDQorCQlXb3JkMTYgcG9zMSwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBwb3NpdGlvbiBvZiB0aGUgcHVsc2UgMSAgICAgKi8NCisJCVdvcmQxNiBwb3MyLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIHBvc2l0aW9uIG9mIHRoZSBwdWxzZSAyICAgICAqLw0KKwkJV29yZDE2IHBvczMsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgcG9zaXRpb24gb2YgdGhlIHB1bHNlIDMgICAgICovDQorCQlXb3JkMTYgTikgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBudW1iZXIgb2YgYml0cyBmb3IgcG9zaXRpb24gKi8NCit7DQorCVdvcmQxNiBuYl9wb3M7DQorCVdvcmQzMiBpbmRleDsNCisNCisJbmJfcG9zID0oMSA8PChOIC0gMSkpOyAgICAgICAgICAgIC8qIG5iX3BvcyA9ICgxPDwoTi0xKSk7ICovDQorCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJICogUXVhbnRpemF0aW9uIG9mIDMgcHVsc2VzIHdpdGggMypOKzEgYml0czogICAgICAgICAgICAgKg0KKwkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKwlpZiAoKChwb3MxIF4gcG9zMikgJiBuYl9wb3MpID09IDApDQorCXsNCisJCWluZGV4ID0gcXVhbnRfMnBfMk4xKHBvczEsIHBvczIsIHN1YihOLCAxKSk7ICAgIC8qIGluZGV4ID0gcXVhbnRfMnBfMk4xKHBvczEsIHBvczIsIChOLTEpKTsgKi8NCisJCS8qIGluZGV4ICs9IChwb3MxICYgbmJfcG9zKSA8PCBOOyAqLw0KKwkJaW5kZXggPSB2b19MX2FkZChpbmRleCwgKExfZGVwb3NpdF9sKChXb3JkMTYpIChwb3MxICYgbmJfcG9zKSkgPDwgTikpOyAgDQorCQkvKiBpbmRleCArPSBxdWFudF8xcF9OMShwb3MzLCBOKSA8PCAoMipOKTsgKi8NCisJCWluZGV4ID0gdm9fTF9hZGQoaW5kZXgsIChxdWFudF8xcF9OMShwb3MzLCBOKTw8KE4gPDwgMSkpKTsNCisNCisJfSBlbHNlIGlmICgoKHBvczEgXiBwb3MzKSAmIG5iX3BvcykgPT0gMCkNCisJew0KKwkJaW5kZXggPSBxdWFudF8ycF8yTjEocG9zMSwgcG9zMywgc3ViKE4sIDEpKTsgICAgLyogaW5kZXggPSBxdWFudF8ycF8yTjEocG9zMSwgcG9zMywgKE4tMSkpOyAqLw0KKwkJaW5kZXggPSB2b19MX2FkZChpbmRleCwgKExfZGVwb3NpdF9sKChXb3JkMTYpIChwb3MxICYgbmJfcG9zKSkgPDwgTikpOyANCisJCS8qIGluZGV4ICs9IChwb3MxICYgbmJfcG9zKSA8PCBOOyAqLw0KKwkJaW5kZXggPSB2b19MX2FkZChpbmRleCwgKHF1YW50XzFwX04xKHBvczIsIE4pIDw8IChOIDw8IDEpKSk7DQorCQkvKiBpbmRleCArPSBxdWFudF8xcF9OMShwb3MyLCBOKSA8PA0KKwkJICogKDIqTik7ICovDQorCX0gZWxzZQ0KKwl7DQorCQlpbmRleCA9IHF1YW50XzJwXzJOMShwb3MyLCBwb3MzLCAoTiAtIDEpKTsgICAgLyogaW5kZXggPSBxdWFudF8ycF8yTjEocG9zMiwgcG9zMywgKE4tMSkpOyAqLw0KKwkJLyogaW5kZXggKz0gKHBvczIgJiBuYl9wb3MpIDw8IE47CQkJICovDQorCQlpbmRleCA9IHZvX0xfYWRkKGluZGV4LCAoTF9kZXBvc2l0X2woKFdvcmQxNikgKHBvczIgJiBuYl9wb3MpKSA8PCBOKSk7ICANCisJCS8qIGluZGV4ICs9IHF1YW50XzFwX04xKHBvczEsIE4pIDw8ICgyKk4pOwkgKi8NCisJCWluZGV4ID0gdm9fTF9hZGQoaW5kZXgsIChxdWFudF8xcF9OMShwb3MxLCBOKSA8PCAoTiA8PCAxKSkpOw0KKwl9DQorCXJldHVybiAoaW5kZXgpOw0KK30NCisNCisNCitXb3JkMzIgcXVhbnRfNHBfNE4xKCAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIHJldHVybiAoNCpOKSsxIGJpdHMgICAgICAgICAqLw0KKwkJV29yZDE2IHBvczEsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgcG9zaXRpb24gb2YgdGhlIHB1bHNlIDEgICAgICovDQorCQlXb3JkMTYgcG9zMiwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBwb3NpdGlvbiBvZiB0aGUgcHVsc2UgMiAgICAgKi8NCisJCVdvcmQxNiBwb3MzLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIHBvc2l0aW9uIG9mIHRoZSBwdWxzZSAzICAgICAqLw0KKwkJV29yZDE2IHBvczQsICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgcG9zaXRpb24gb2YgdGhlIHB1bHNlIDQgICAgICovDQorCQlXb3JkMTYgTikgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBudW1iZXIgb2YgYml0cyBmb3IgcG9zaXRpb24gKi8NCit7DQorCVdvcmQxNiBuYl9wb3M7DQorCVdvcmQzMiBpbmRleDsNCisNCisJbmJfcG9zID0gMSA8PCAoTiAtIDEpOyAgICAgICAgICAgIC8qIG5iX3BvcyA9ICgxPDwoTi0xKSk7ICAqLw0KKwkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCSAqIFF1YW50aXphdGlvbiBvZiA0IHB1bHNlcyB3aXRoIDQqTisxIGJpdHM6ICAgICAgICAgICAgICoNCisJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisJaWYgKCgocG9zMSBeIHBvczIpICYgbmJfcG9zKSA9PSAwKQ0KKwl7DQorCQlpbmRleCA9IHF1YW50XzJwXzJOMShwb3MxLCBwb3MyLCBzdWIoTiwgMSkpOyAgICAvKiBpbmRleCA9IHF1YW50XzJwXzJOMShwb3MxLCBwb3MyLCAoTi0xKSk7ICovDQorCQkvKiBpbmRleCArPSAocG9zMSAmIG5iX3BvcykgPDwgTjsJICovDQorCQlpbmRleCA9IHZvX0xfYWRkKGluZGV4LCAoTF9kZXBvc2l0X2woKFdvcmQxNikgKHBvczEgJiBuYl9wb3MpKSA8PCBOKSk7ICANCisJCS8qIGluZGV4ICs9IHF1YW50XzJwXzJOMShwb3MzLCBwb3M0LCBOKSA8PCAoMipOKTsgKi8NCisJCWluZGV4ID0gdm9fTF9hZGQoaW5kZXgsIChxdWFudF8ycF8yTjEocG9zMywgcG9zNCwgTikgPDwgKE4gPDwgMSkpKTsNCisJfSBlbHNlIGlmICgoKHBvczEgXiBwb3MzKSAmIG5iX3BvcykgPT0gMCkNCisJew0KKwkJaW5kZXggPSBxdWFudF8ycF8yTjEocG9zMSwgcG9zMywgKE4gLSAxKSk7DQorCQkvKiBpbmRleCArPSAocG9zMSAmIG5iX3BvcykgPDwgTjsgKi8NCisJCWluZGV4ID0gdm9fTF9hZGQoaW5kZXgsIChMX2RlcG9zaXRfbCgoV29yZDE2KSAocG9zMSAmIG5iX3BvcykpIDw8IE4pKTsgIA0KKwkJLyogaW5kZXggKz0gcXVhbnRfMnBfMk4xKHBvczIsIHBvczQsIE4pIDw8ICgyKk4pOyAqLw0KKwkJaW5kZXggPSB2b19MX2FkZChpbmRleCwgKHF1YW50XzJwXzJOMShwb3MyLCBwb3M0LCBOKSA8PCAoTiA8PCAxKSkpOw0KKwl9IGVsc2UNCisJew0KKwkJaW5kZXggPSBxdWFudF8ycF8yTjEocG9zMiwgcG9zMywgKE4gLSAxKSk7DQorCQkvKiBpbmRleCArPSAocG9zMiAmIG5iX3BvcykgPDwgTjsgKi8NCisJCWluZGV4ID0gdm9fTF9hZGQoaW5kZXgsIChMX2RlcG9zaXRfbCgoV29yZDE2KSAocG9zMiAmIG5iX3BvcykpIDw8IE4pKTsgIA0KKwkJLyogaW5kZXggKz0gcXVhbnRfMnBfMk4xKHBvczEsIHBvczQsIE4pIDw8ICgyKk4pOyAqLw0KKwkJaW5kZXggPSB2b19MX2FkZChpbmRleCwgKHF1YW50XzJwXzJOMShwb3MxLCBwb3M0LCBOKSA8PCAoTiA8PCAxKSkpOw0KKwl9DQorCXJldHVybiAoaW5kZXgpOw0KK30NCisNCisNCitXb3JkMzIgcXVhbnRfNHBfNE4oICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIHJldHVybiA0Kk4gYml0cyAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IHBvc1tdLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgcG9zaXRpb24gb2YgdGhlIHB1bHNlIDEuLjQgICovDQorCQlXb3JkMTYgTikgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBudW1iZXIgb2YgYml0cyBmb3IgcG9zaXRpb24gKi8NCit7DQorCVdvcmQxNiBuYl9wb3MsIG1hc2ssIG5fMSwgdG1wOw0KKwlXb3JkMTYgcG9zQVs0XSwgcG9zQls0XTsNCisJV29yZDMyIGksIGosIGssIGluZGV4Ow0KKw0KKwluXzEgPSAoV29yZDE2KSAoTiAtIDEpOyAgICAgICAgICAgICAgICANCisJbmJfcG9zID0gKDEgPDwgbl8xKTsgICAgICAgICAgICAgICAgICAvKiBuYl9wb3MgPSAoMTw8bl8xKTsgKi8NCisJbWFzayA9IHZvX3N1YigoMSA8PCBOKSwgMSk7ICAgICAgICAgICAgICAvKiBtYXNrID0gKCgxPDxOKS0xKTsgKi8NCisNCisJaSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorCWogPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwlmb3IgKGsgPSAwOyBrIDwgNDsgaysrKQ0KKwl7DQorCQlpZiAoKHBvc1trXSAmIG5iX3BvcykgPT0gMCkNCisJCXsNCisJCQlwb3NBW2krK10gPSBwb3Nba107ICAgICAgICAgICAgDQorCQl9IGVsc2UNCisJCXsNCisJCQlwb3NCW2orK10gPSBwb3Nba107ICAgICAgICAgICAgDQorCQl9DQorCX0NCisNCisJc3dpdGNoIChpKQ0KKwl7DQorCQljYXNlIDA6DQorCQkJdG1wID0gdm9fc3ViKChOIDw8IDIpLCAzKTsgICAgICAgICAgIC8qIGluZGV4ID0gMSA8PCAoKDQqTiktMyk7ICovDQorCQkJaW5kZXggPSAoMUwgPDwgdG1wKTsNCisJCQkvKiBpbmRleCArPSBxdWFudF80cF80TjEocG9zQlswXSwgcG9zQlsxXSwgcG9zQlsyXSwgcG9zQlszXSwgbl8xKTsgKi8NCisJCQlpbmRleCA9IHZvX0xfYWRkKGluZGV4LCBxdWFudF80cF80TjEocG9zQlswXSwgcG9zQlsxXSwgcG9zQlsyXSwgcG9zQlszXSwgbl8xKSk7DQorCQkJYnJlYWs7DQorCQljYXNlIDE6DQorCQkJLyogaW5kZXggPSBxdWFudF8xcF9OMShwb3NBWzBdLCBuXzEpIDw8ICgoMypuXzEpKzEpOyAqLw0KKwkJCXRtcCA9IGFkZDEoKFdvcmQxNikoKHZvX0xfbXVsdCgzLCBuXzEpID4+IDEpKSwgMSk7DQorCQkJaW5kZXggPSBMX3NobChxdWFudF8xcF9OMShwb3NBWzBdLCBuXzEpLCB0bXApOw0KKwkJCS8qIGluZGV4ICs9IHF1YW50XzNwXzNOMShwb3NCWzBdLCBwb3NCWzFdLCBwb3NCWzJdLCBuXzEpOyAqLw0KKwkJCWluZGV4ID0gdm9fTF9hZGQoaW5kZXgsIHF1YW50XzNwXzNOMShwb3NCWzBdLCBwb3NCWzFdLCBwb3NCWzJdLCBuXzEpKTsNCisJCQlicmVhazsNCisJCWNhc2UgMjoNCisJCQl0bXAgPSAoKG5fMSA8PCAxKSArIDEpOyAgICAgICAgIC8qIGluZGV4ID0gcXVhbnRfMnBfMk4xKHBvc0FbMF0sIHBvc0FbMV0sIG5fMSkgPDwgKCgyKm5fMSkrMSk7ICovDQorCQkJaW5kZXggPSBMX3NobChxdWFudF8ycF8yTjEocG9zQVswXSwgcG9zQVsxXSwgbl8xKSwgdG1wKTsNCisJCQkvKiBpbmRleCArPSBxdWFudF8ycF8yTjEocG9zQlswXSwgcG9zQlsxXSwgbl8xKTsgKi8NCisJCQlpbmRleCA9IHZvX0xfYWRkKGluZGV4LCBxdWFudF8ycF8yTjEocG9zQlswXSwgcG9zQlsxXSwgbl8xKSk7DQorCQkJYnJlYWs7DQorCQljYXNlIDM6DQorCQkJLyogaW5kZXggPSBxdWFudF8zcF8zTjEocG9zQVswXSwgcG9zQVsxXSwgcG9zQVsyXSwgbl8xKSA8PCBOOyAqLw0KKwkJCWluZGV4ID0gTF9zaGwocXVhbnRfM3BfM04xKHBvc0FbMF0sIHBvc0FbMV0sIHBvc0FbMl0sIG5fMSksIE4pOw0KKwkJCWluZGV4ID0gdm9fTF9hZGQoaW5kZXgsIHF1YW50XzFwX04xKHBvc0JbMF0sIG5fMSkpOyAgICAgICAgLyogaW5kZXggKz0gcXVhbnRfMXBfTjEocG9zQlswXSwgbl8xKTsgKi8NCisJCQlicmVhazsNCisJCWNhc2UgNDoNCisJCQlpbmRleCA9IHF1YW50XzRwXzROMShwb3NBWzBdLCBwb3NBWzFdLCBwb3NBWzJdLCBwb3NBWzNdLCBuXzEpOw0KKwkJCWJyZWFrOw0KKwkJZGVmYXVsdDoNCisJCQlpbmRleCA9IDA7DQorCQkJZnByaW50ZihzdGRlcnIsICJFcnJvciBpbiBmdW5jdGlvbiBxdWFudF80cF80TlxuIik7DQorCX0NCisJdG1wID0gKChOIDw8IDIpIC0gMik7ICAgICAgICAgICAgICAgLyogaW5kZXggKz0gKGkgJiAzKSA8PCAoKDQqTiktMik7ICovDQorCWluZGV4ID0gdm9fTF9hZGQoaW5kZXgsIExfc2hsKChMX2RlcG9zaXRfbChpKSAmICgzTCkpLCB0bXApKTsNCisNCisJcmV0dXJuIChpbmRleCk7DQorfQ0KKw0KKw0KKw0KK1dvcmQzMiBxdWFudF81cF81TiggICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgcmV0dXJuIDUqTiBiaXRzICAgICAgICAgICAgICovDQorCQlXb3JkMTYgcG9zW10sICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBwb3NpdGlvbiBvZiB0aGUgcHVsc2UgMS4uNSAgKi8NCisJCVdvcmQxNiBOKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIG51bWJlciBvZiBiaXRzIGZvciBwb3NpdGlvbiAqLw0KK3sNCisJV29yZDE2IG5iX3Bvcywgbl8xLCB0bXA7DQorCVdvcmQxNiBwb3NBWzVdLCBwb3NCWzVdOw0KKwlXb3JkMzIgaSwgaiwgaywgaW5kZXgsIHRtcDI7DQorDQorCW5fMSA9IChXb3JkMTYpIChOIC0gMSk7ICAgICAgICAgICAgICAgIA0KKwluYl9wb3MgPSAoMSA8PCBuXzEpOyAgICAgICAgICAgICAgICAgIC8qIG5iX3BvcyA9ICgxPDxuXzEpOyAqLw0KKw0KKwlpID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJaiA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorCWZvciAoayA9IDA7IGsgPCA1OyBrKyspDQorCXsNCisJCWlmICgocG9zW2tdICYgbmJfcG9zKSA9PSAwKQ0KKwkJew0KKwkJCXBvc0FbaSsrXSA9IHBvc1trXTsgICAgICAgICAgICANCisJCX0gZWxzZQ0KKwkJew0KKwkJCXBvc0JbaisrXSA9IHBvc1trXTsgICAgICAgICAgICANCisJCX0NCisJfQ0KKw0KKwlzd2l0Y2ggKGkpDQorCXsNCisJCWNhc2UgMDoNCisJCQl0bXAgPSB2b19zdWIoKFdvcmQxNikoKHZvX0xfbXVsdCg1LCBOKSA+PiAxKSksIDEpOyAgICAgICAgLyogKCg1Kk4pLTEpKSAqLw0KKwkJCWluZGV4ID0gTF9zaGwoMUwsIHRtcCk7ICAgLyogaW5kZXggPSAxIDw8ICgoNSpOKS0xKTsgKi8NCisJCQl0bXAgPSBhZGQxKChOIDw8IDEpLCAxKTsgIC8qIGluZGV4ICs9IHF1YW50XzNwXzNOMShwb3NCWzBdLCBwb3NCWzFdLCBwb3NCWzJdLCBuXzEpIDw8ICgoMipOKSsxKTsqLw0KKwkJCXRtcDIgPSBMX3NobChxdWFudF8zcF8zTjEocG9zQlswXSwgcG9zQlsxXSwgcG9zQlsyXSwgbl8xKSwgdG1wKTsNCisJCQlpbmRleCA9IHZvX0xfYWRkKGluZGV4LCB0bXAyKTsNCisJCQlpbmRleCA9IHZvX0xfYWRkKGluZGV4LCBxdWFudF8ycF8yTjEocG9zQlszXSwgcG9zQls0XSwgTikpOyAgICAgICAgLyogaW5kZXggKz0gcXVhbnRfMnBfMk4xKHBvc0JbM10sIHBvc0JbNF0sIE4pOyAqLw0KKwkJCWJyZWFrOw0KKwkJY2FzZSAxOg0KKwkJCXRtcCA9IHZvX3N1YigoV29yZDE2KSgodm9fTF9tdWx0KDUsIE4pID4+IDEpKSwgMSk7ICAgICAgICAvKiBpbmRleCA9IDEgPDwgKCg1Kk4pLTEpOyAqLw0KKwkJCWluZGV4ID0gTF9zaGwoMUwsIHRtcCk7DQorCQkJdG1wID0gYWRkMSgoTiA8PCAxKSwgMSk7ICAgLyogaW5kZXggKz0gcXVhbnRfM3BfM04xKHBvc0JbMF0sIHBvc0JbMV0sIHBvc0JbMl0sIG5fMSkgPDwoKDIqTikrMSk7ICAqLw0KKwkJCXRtcDIgPSBMX3NobChxdWFudF8zcF8zTjEocG9zQlswXSwgcG9zQlsxXSwgcG9zQlsyXSwgbl8xKSwgdG1wKTsNCisJCQlpbmRleCA9IHZvX0xfYWRkKGluZGV4LCB0bXAyKTsNCisJCQlpbmRleCA9IHZvX0xfYWRkKGluZGV4LCBxdWFudF8ycF8yTjEocG9zQlszXSwgcG9zQVswXSwgTikpOyAgICAgICAgLyogaW5kZXggKz0gcXVhbnRfMnBfMk4xKHBvc0JbM10sIHBvc0FbMF0sIE4pOyAqLw0KKwkJCWJyZWFrOw0KKwkJY2FzZSAyOg0KKwkJCXRtcCA9IHZvX3N1YigoV29yZDE2KSgodm9fTF9tdWx0KDUsIE4pID4+IDEpKSwgMSk7ICAgICAgICAvKiAoKDUqTiktMSkpICovDQorCQkJaW5kZXggPSBMX3NobCgxTCwgdG1wKTsgICAgICAgICAgICAvKiBpbmRleCA9IDEgPDwgKCg1Kk4pLTEpOyAqLw0KKwkJCXRtcCA9IGFkZDEoKE4gPDwgMSksIDEpOyAgICAgICAgICAgLyogaW5kZXggKz0gcXVhbnRfM3BfM04xKHBvc0JbMF0sIHBvc0JbMV0sIHBvc0JbMl0sIG5fMSkgPDwgKCgyKk4pKzEpOyAgKi8NCisJCQl0bXAyID0gTF9zaGwocXVhbnRfM3BfM04xKHBvc0JbMF0sIHBvc0JbMV0sIHBvc0JbMl0sIG5fMSksIHRtcCk7DQorCQkJaW5kZXggPSB2b19MX2FkZChpbmRleCwgdG1wMik7DQorCQkJaW5kZXggPSB2b19MX2FkZChpbmRleCwgcXVhbnRfMnBfMk4xKHBvc0FbMF0sIHBvc0FbMV0sIE4pKTsgICAgICAgIC8qIGluZGV4ICs9IHF1YW50XzJwXzJOMShwb3NBWzBdLCBwb3NBWzFdLCBOKTsgKi8NCisJCQlicmVhazsNCisJCWNhc2UgMzoNCisJCQl0bXAgPSBhZGQxKChOIDw8IDEpLCAxKTsgICAgICAgICAgIC8qIGluZGV4ID0gcXVhbnRfM3BfM04xKHBvc0FbMF0sIHBvc0FbMV0sIHBvc0FbMl0sIG5fMSkgPDwgKCgyKk4pKzEpOyAgKi8NCisJCQlpbmRleCA9IExfc2hsKHF1YW50XzNwXzNOMShwb3NBWzBdLCBwb3NBWzFdLCBwb3NBWzJdLCBuXzEpLCB0bXApOw0KKwkJCWluZGV4ID0gdm9fTF9hZGQoaW5kZXgsIHF1YW50XzJwXzJOMShwb3NCWzBdLCBwb3NCWzFdLCBOKSk7ICAgICAgICAvKiBpbmRleCArPSBxdWFudF8ycF8yTjEocG9zQlswXSwgcG9zQlsxXSwgTik7ICovDQorCQkJYnJlYWs7DQorCQljYXNlIDQ6DQorCQkJdG1wID0gYWRkMSgoTiA8PCAxKSwgMSk7ICAgICAgICAgICAvKiBpbmRleCA9IHF1YW50XzNwXzNOMShwb3NBWzBdLCBwb3NBWzFdLCBwb3NBWzJdLCBuXzEpIDw8ICgoMipOKSsxKTsgICovDQorCQkJaW5kZXggPSBMX3NobChxdWFudF8zcF8zTjEocG9zQVswXSwgcG9zQVsxXSwgcG9zQVsyXSwgbl8xKSwgdG1wKTsNCisJCQlpbmRleCA9IHZvX0xfYWRkKGluZGV4LCBxdWFudF8ycF8yTjEocG9zQVszXSwgcG9zQlswXSwgTikpOyAgICAgICAgLyogaW5kZXggKz0gcXVhbnRfMnBfMk4xKHBvc0FbM10sIHBvc0JbMF0sIE4pOyAqLw0KKwkJCWJyZWFrOw0KKwkJY2FzZSA1Og0KKwkJCXRtcCA9IGFkZDEoKE4gPDwgMSksIDEpOyAgICAgICAgICAgLyogaW5kZXggPSBxdWFudF8zcF8zTjEocG9zQVswXSwgcG9zQVsxXSwgcG9zQVsyXSwgbl8xKSA8PCAoKDIqTikrMSk7ICAqLw0KKwkJCWluZGV4ID0gTF9zaGwocXVhbnRfM3BfM04xKHBvc0FbMF0sIHBvc0FbMV0sIHBvc0FbMl0sIG5fMSksIHRtcCk7DQorCQkJaW5kZXggPSB2b19MX2FkZChpbmRleCwgcXVhbnRfMnBfMk4xKHBvc0FbM10sIHBvc0FbNF0sIE4pKTsgICAgICAgIC8qIGluZGV4ICs9IHF1YW50XzJwXzJOMShwb3NBWzNdLCBwb3NBWzRdLCBOKTsgKi8NCisJCQlicmVhazsNCisJCWRlZmF1bHQ6DQorCQkJaW5kZXggPSAwOw0KKwkJCWZwcmludGYoc3RkZXJyLCAiRXJyb3IgaW4gZnVuY3Rpb24gcXVhbnRfNXBfNU5cbiIpOw0KKwl9DQorDQorCXJldHVybiAoaW5kZXgpOw0KK30NCisNCisNCitXb3JkMzIgcXVhbnRfNnBfNk5fMiggICAgICAgICAgICAgICAgICAgICAgLyogKG8pIHJldHVybiAoNipOKS0yIGJpdHMgICAgICAgICAqLw0KKwkJV29yZDE2IHBvc1tdLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgcG9zaXRpb24gb2YgdGhlIHB1bHNlIDEuLjYgICovDQorCQlXb3JkMTYgTikgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBudW1iZXIgb2YgYml0cyBmb3IgcG9zaXRpb24gKi8NCit7DQorCVdvcmQxNiBuYl9wb3MsIG5fMTsNCisJV29yZDE2IHBvc0FbNl0sIHBvc0JbNl07DQorCVdvcmQzMiBpLCBqLCBrLCBpbmRleDsNCisNCisJLyogISEgIE4gYW5kIG5fMSBhcmUgY29uc3RhbnRzIC0+IGl0IGRvZXNuJ3QgbmVlZCB0byBiZSBvcGVyYXRlZCBieSBCYXNpYyBPcGVyYXRvcnMgKi8NCisJbl8xID0gKFdvcmQxNikgKE4gLSAxKTsgICAgICAgICAgICAgICAgDQorCW5iX3BvcyA9ICgxIDw8IG5fMSk7ICAgICAgICAgICAgICAgICAgLyogbmJfcG9zID0gKDE8PG5fMSk7ICovDQorDQorCWkgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwlqID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJZm9yIChrID0gMDsgayA8IDY7IGsrKykNCisJew0KKwkJaWYgKChwb3Nba10gJiBuYl9wb3MpID09IDApDQorCQl7DQorCQkJcG9zQVtpKytdID0gcG9zW2tdOyAgICAgICAgICAgIA0KKwkJfSBlbHNlDQorCQl7DQorCQkJcG9zQltqKytdID0gcG9zW2tdOyAgICAgICAgICAgIA0KKwkJfQ0KKwl9DQorDQorCXN3aXRjaCAoaSkNCisJew0KKwkJY2FzZSAwOg0KKwkJCWluZGV4ID0gKDEgPDwgKFdvcmQxNikgKDYgKiBOIC0gNSkpOyAgICAgICAgLyogaW5kZXggPSAxIDw8ICgoNipOKS01KTsgKi8NCisJCQlpbmRleCA9IHZvX0xfYWRkKGluZGV4LCAocXVhbnRfNXBfNU4ocG9zQiwgbl8xKSA8PCBOKSk7IC8qIGluZGV4ICs9IHF1YW50XzVwXzVOKHBvc0IsIG5fMSkgPDwgTjsgKi8NCisJCQlpbmRleCA9IHZvX0xfYWRkKGluZGV4LCBxdWFudF8xcF9OMShwb3NCWzVdLCBuXzEpKTsgICAgICAgIC8qIGluZGV4ICs9IHF1YW50XzFwX04xKHBvc0JbNV0sIG5fMSk7ICovDQorCQkJYnJlYWs7DQorCQljYXNlIDE6DQorCQkJaW5kZXggPSAoMUwgPDwgKFdvcmQxNikgKDYgKiBOIC0gNSkpOyAgICAgICAgLyogaW5kZXggPSAxIDw8ICgoNipOKS01KTsgKi8NCisJCQlpbmRleCA9IHZvX0xfYWRkKGluZGV4LCAocXVhbnRfNXBfNU4ocG9zQiwgbl8xKSA8PCBOKSk7IC8qIGluZGV4ICs9IHF1YW50XzVwXzVOKHBvc0IsIG5fMSkgPDwgTjsgKi8NCisJCQlpbmRleCA9IHZvX0xfYWRkKGluZGV4LCBxdWFudF8xcF9OMShwb3NBWzBdLCBuXzEpKTsgICAgICAgIC8qIGluZGV4ICs9IHF1YW50XzFwX04xKHBvc0FbMF0sIG5fMSk7ICovDQorCQkJYnJlYWs7DQorCQljYXNlIDI6DQorCQkJaW5kZXggPSAoMUwgPDwgKFdvcmQxNikgKDYgKiBOIC0gNSkpOyAgICAgICAgLyogaW5kZXggPSAxIDw8ICgoNipOKS01KTsgKi8NCisJCQkvKiBpbmRleCArPSBxdWFudF80cF80Tihwb3NCLCBuXzEpIDw8ICgoMipuXzEpKzEpOyAqLw0KKwkJCWluZGV4ID0gdm9fTF9hZGQoaW5kZXgsIChxdWFudF80cF80Tihwb3NCLCBuXzEpIDw8IChXb3JkMTYpICgyICogbl8xICsgMSkpKTsNCisJCQlpbmRleCA9IHZvX0xfYWRkKGluZGV4LCBxdWFudF8ycF8yTjEocG9zQVswXSwgcG9zQVsxXSwgbl8xKSk7ICAgICAgLyogaW5kZXggKz0gcXVhbnRfMnBfMk4xKHBvc0FbMF0sIHBvc0FbMV0sIG5fMSk7ICovDQorCQkJYnJlYWs7DQorCQljYXNlIDM6DQorCQkJaW5kZXggPSAocXVhbnRfM3BfM04xKHBvc0FbMF0sIHBvc0FbMV0sIHBvc0FbMl0sIG5fMSkgPDwgKFdvcmQxNikgKDMgKiBuXzEgKyAxKSk7ICAgIA0KKwkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbmRleCA9IHF1YW50XzNwXzNOMShwb3NBWzBdLCBwb3NBWzFdLCBwb3NBWzJdLCBuXzEpIDw8ICgoMypuXzEpKzEpOyAqLw0KKwkJCWluZGV4ID12b19MX2FkZChpbmRleCwgcXVhbnRfM3BfM04xKHBvc0JbMF0sIHBvc0JbMV0sIHBvc0JbMl0sIG5fMSkpOyAgICAgDQorCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5kZXggKz0gcXVhbnRfM3BfM04xKHBvc0JbMF0sIHBvc0JbMV0sIHBvc0JbMl0sIG5fMSk7ICovDQorCQkJYnJlYWs7DQorCQljYXNlIDQ6DQorCQkJaSA9IDI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwkJCWluZGV4ID0gKHF1YW50XzRwXzROKHBvc0EsIG5fMSkgPDwgKFdvcmQxNikgKDIgKiBuXzEgKyAxKSk7ICAvKiBpbmRleCA9IHF1YW50XzRwXzROKHBvc0EsIG5fMSkgPDwgKCgyKm5fMSkrMSk7ICovDQorCQkJaW5kZXggPSB2b19MX2FkZChpbmRleCwgcXVhbnRfMnBfMk4xKHBvc0JbMF0sIHBvc0JbMV0sIG5fMSkpOyAgICAgIC8qIGluZGV4ICs9IHF1YW50XzJwXzJOMShwb3NCWzBdLCBwb3NCWzFdLCBuXzEpOyAqLw0KKwkJCWJyZWFrOw0KKwkJY2FzZSA1Og0KKwkJCWkgPSAxOyAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJCQlpbmRleCA9IChxdWFudF81cF81Tihwb3NBLCBuXzEpIDw8IE4pOyAgICAgICAvKiBpbmRleCA9IHF1YW50XzVwXzVOKHBvc0EsIG5fMSkgPDwgTjsgKi8NCisJCQlpbmRleCA9IHZvX0xfYWRkKGluZGV4LCBxdWFudF8xcF9OMShwb3NCWzBdLCBuXzEpKTsgICAgICAgIC8qIGluZGV4ICs9IHF1YW50XzFwX04xKHBvc0JbMF0sIG5fMSk7ICovDQorCQkJYnJlYWs7DQorCQljYXNlIDY6DQorCQkJaSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJCQlpbmRleCA9IChxdWFudF81cF81Tihwb3NBLCBuXzEpIDw8IE4pOyAgICAgICAvKiBpbmRleCA9IHF1YW50XzVwXzVOKHBvc0EsIG5fMSkgPDwgTjsgKi8NCisJCQlpbmRleCA9IHZvX0xfYWRkKGluZGV4LCBxdWFudF8xcF9OMShwb3NBWzVdLCBuXzEpKTsgICAgICAgIC8qIGluZGV4ICs9IHF1YW50XzFwX04xKHBvc0FbNV0sIG5fMSk7ICovDQorCQkJYnJlYWs7DQorCQlkZWZhdWx0Og0KKwkJCWluZGV4ID0gMDsNCisJCQlmcHJpbnRmKHN0ZGVyciwgIkVycm9yIGluIGZ1bmN0aW9uIHF1YW50XzZwXzZOXzJcbiIpOw0KKwl9DQorCWluZGV4ID0gdm9fTF9hZGQoaW5kZXgsICgoTF9kZXBvc2l0X2woaSkgJiAzTCkgPDwgKFdvcmQxNikgKDYgKiBOIC0gNCkpKTsgICAvKiBpbmRleCArPSAoaSAmIDMpIDw8ICgoNipOKS00KTsgKi8NCisNCisJcmV0dXJuIChpbmRleCk7DQorfQ0KKw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvcWlzZl9ucy5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9xaXNmX25zLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDBiMGE1MwotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvcWlzZl9ucy5jCkBAIC0wLDAgKzEsMTExIEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqICAgICAgRmlsZTogcWlzZl9ucy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICBEZXNjcmlwdGlvbjogQ29kaW5nL0RlY29kaW5nIG9mIElTRiBwYXJhbWV0ZXJzIGZvciBiYWNrZ3JvdW5kIG5vaXNlLioNCisqICAgICAgICAgICAgICAgICAgICBUaGUgSVNGIHZlY3RvciBpcyBxdWFudGl6ZWQgdXNpbmcgVlEgd2l0aCBzcGxpdC1ieS01ICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2luY2x1ZGUgInR5cGVkZWYuaCINCisjaW5jbHVkZSAiYmFzaWNfb3AuaCINCisjaW5jbHVkZSAiYWNlbHAuaCINCisjaW5jbHVkZSAicWlzZl9ucy50YWIiICAgICAgICAgICAgICAgICAgICAgLyogQ29kZWJvb2tzIG9mIElTRnMgKi8NCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisqIHJvdXRpbmU6ICAgUWlzZl9ucygpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICB+fn5+fn5+fn4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQordm9pZCBRaXNmX25zKA0KKwkJV29yZDE2ICogaXNmMSwgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IElTRiBpbiB0aGUgZnJlcXVlbmN5IGRvbWFpbiAoMC4uMC41KSAqLw0KKwkJV29yZDE2ICogaXNmX3EsICAgICAgICAgICAgICAgICAgICAgICAvKiBvdXRwdXQ6IHF1YW50aXplZCBJU0YgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2ICogaW5kaWNlICAgICAgICAgICAgICAgICAgICAgICAvKiBvdXRwdXQ6IHF1YW50aXphdGlvbiBpbmRpY2VzICAgICAgICAgICAgICAgICAqLw0KKwkgICAgKQ0KK3sNCisJV29yZDE2IGk7DQorCVdvcmQzMiB0bXA7DQorDQorCWZvciAoaSA9IDA7IGkgPCBPUkRFUjsgaSsrKQ0KKwl7DQorCQlpc2ZfcVtpXSA9IHN1Yihpc2YxW2ldLCBtZWFuX2lzZl9ub2lzZVtpXSk7ICAgICANCisJfQ0KKw0KKwlpbmRpY2VbMF0gPSBTdWJfVlEoJmlzZl9xWzBdLCBkaWNvMV9pc2Zfbm9pc2UsIDIsIFNJWkVfQktfTk9JU0UxLCAmdG1wKTsgICAgDQorCWluZGljZVsxXSA9IFN1Yl9WUSgmaXNmX3FbMl0sIGRpY28yX2lzZl9ub2lzZSwgMywgU0laRV9CS19OT0lTRTIsICZ0bXApOyAgICANCisJaW5kaWNlWzJdID0gU3ViX1ZRKCZpc2ZfcVs1XSwgZGljbzNfaXNmX25vaXNlLCAzLCBTSVpFX0JLX05PSVNFMywgJnRtcCk7ICAgIA0KKwlpbmRpY2VbM10gPSBTdWJfVlEoJmlzZl9xWzhdLCBkaWNvNF9pc2Zfbm9pc2UsIDQsIFNJWkVfQktfTk9JU0U0LCAmdG1wKTsgICAgDQorCWluZGljZVs0XSA9IFN1Yl9WUSgmaXNmX3FbMTJdLCBkaWNvNV9pc2Zfbm9pc2UsIDQsIFNJWkVfQktfTk9JU0U1LCAmdG1wKTsgICANCisNCisJLyogZGVjb2RpbmcgdGhlIElTRnMgKi8NCisNCisJRGlzZl9ucyhpbmRpY2UsIGlzZl9xKTsNCisNCisJcmV0dXJuOw0KK30NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqIEZ1bmN0aW9uOiAgIERpc2ZfbnMoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgfn5+fn5+fn5+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqIERlY29kaW5nIG9mIElTRiBwYXJhbWV0ZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisqICBBcmd1bWVudHM6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgIGluZGljZVtdIDogaW5kaWNlcyBvZiB0aGUgc2VsZWN0ZWQgY29kZWJvb2sgZW50cmllcyAgICAgICAgICAgICoNCisqICAgIGlzZltdICAgIDogcXVhbnRpemVkIElTRnMgKGluIGZyZXF1ZW5jeSBkb21haW4pICAgICAgICAgICAgICAgICoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQordm9pZCBEaXNmX25zKA0KKwkJV29yZDE2ICogaW5kaWNlLCAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dDogIHF1YW50aXphdGlvbiBpbmRpY2VzICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiAqIGlzZl9xICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBJU0YgaW4gdGhlIGZyZXF1ZW5jeSBkb21haW4gKDAuLjAuNSkgICovDQorCSAgICApDQorew0KKwlXb3JkMTYgaTsNCisNCisJZm9yIChpID0gMDsgaSA8IDI7IGkrKykNCisJew0KKwkJaXNmX3FbaV0gPSBkaWNvMV9pc2Zfbm9pc2VbaW5kaWNlWzBdICogMiArIGldOyAgDQorCX0NCisJZm9yIChpID0gMDsgaSA8IDM7IGkrKykNCisJew0KKwkJaXNmX3FbaSArIDJdID0gZGljbzJfaXNmX25vaXNlW2luZGljZVsxXSAqIDMgKyBpXTsgICAgICANCisJfQ0KKwlmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKQ0KKwl7DQorCQlpc2ZfcVtpICsgNV0gPSBkaWNvM19pc2Zfbm9pc2VbaW5kaWNlWzJdICogMyArIGldOyAgICAgIA0KKwl9DQorCWZvciAoaSA9IDA7IGkgPCA0OyBpKyspDQorCXsNCisJCWlzZl9xW2kgKyA4XSA9IGRpY280X2lzZl9ub2lzZVtpbmRpY2VbM10gKiA0ICsgaV07ICAgICAgDQorCX0NCisJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykNCisJew0KKwkJaXNmX3FbaSArIDEyXSA9IGRpY281X2lzZl9ub2lzZVtpbmRpY2VbNF0gKiA0ICsgaV07ICAgICANCisJfQ0KKw0KKwlmb3IgKGkgPSAwOyBpIDwgT1JERVI7IGkrKykNCisJew0KKwkJaXNmX3FbaV0gPSBhZGQoaXNmX3FbaV0sIG1lYW5faXNmX25vaXNlW2ldKTsgICANCisJfQ0KKw0KKwlSZW9yZGVyX2lzZihpc2ZfcSwgSVNGX0dBUCwgT1JERVIpOw0KKw0KKwlyZXR1cm47DQorfQ0KKw0KKw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvcXBpc2ZfMnMuYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvcXBpc2ZfMnMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jY2VkYjVjCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9xcGlzZl8ycy5jCkBAIC0wLDAgKzEsNTQyIEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogICAgICAgRmlsZTogYXBpc2ZfMnMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgRGVzY3JpcHRpb246IENvZGluZy9EZWNvZGVpbmcgb2YgSVNGIHBhcmFtZXRlcnMgd2l0aCBwcmVkaWNhdGlvbg0KKyogICAgICAgVGhlIElTRiB2ZWN0b3IgaXMgcXVhbnRpemVkIHVzaW5nIHR3by1zdGFnZSBWUSB3aXRoIHNwbGl0LWJ5LTIgKg0KKyogICAgICAgaW4gMXN0IHN0YWdlIGFuZCBzcGxpdC1ieS01KG9yIDMpIGluIHRoZSBzZWNvbmQgc3RhZ2UgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaW5jbHVkZSAidHlwZWRlZi5oIg0KKyNpbmNsdWRlICJiYXNpY19vcC5oIg0KKyNpbmNsdWRlICJjbnN0LmgiDQorI2luY2x1ZGUgImFjZWxwLmgiDQorI2luY2x1ZGUgInFwaXNmXzJzLnRhYiIgICAgICAgICAgICAgICAgICAgIC8qIENvZGVib29rcyBvZiBpc2ZzICovDQorDQorI2RlZmluZSBNVSAgICAgICAgIDEwOTIzICAgICAgICAgICAgICAgICAgIC8qIFByZWRpY3Rpb24gZmFjdG9yICAgKDEuMC8zLjApIGluIFExNSAqLw0KKyNkZWZpbmUgTl9TVVJWX01BWCA0ICAgICAgICAgICAgICAgICAgICAgICAvKiA0IHN1cnZpdm9ycyBtYXggKi8NCisjZGVmaW5lIEFMUEhBICAgICAgMjk0OTEgICAgICAgICAgICAgICAgICAgLyogMC4gOSBpbiBRMTUgICAgICovDQorI2RlZmluZSBPTkVfQUxQSEEgKDMyNzY4LUFMUEhBKSAgICAgICAgICAgIC8qICgxLjAgLSBBTFBIQSkgaW4gUTE1ICovDQorDQorLyogcHJpdmF0ZSBmdW5jdGlvbnMgKi8NCitzdGF0aWMgdm9pZCBWUV9zdGFnZTEoDQorCQlXb3JkMTYgKiB4LCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogSVNGIHJlc2lkdWFsIHZlY3RvciAgICAgICAgICAgKi8NCisJCVdvcmQxNiAqIGRpY28sICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBxdWFudGl6YXRpb24gY29kZWJvb2sgICAgICAgICAqLw0KKwkJV29yZDE2IGRpbSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IGRpbWVudGlvbiBvZiB2ZWN0b3IgICAgICAgICAgICovDQorCQlXb3JkMTYgZGljb19zaXplLCAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogc2l6ZSBvZiBxdWFudGl6YXRpb24gY29kZWJvb2sgKi8NCisJCVdvcmQxNiAqIGluZGV4LCAgICAgICAgICAgICAgICAgICAgICAgLyogb3V0cHV0OiBpbmRpY2VzIG9mIHN1cnZpdm9ycyAgICAgICAgICAqLw0KKwkJV29yZDE2IHN1cnYgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IG51bWJlciBvZiBzdXJ2aXZvciAgICAgICAgICAgICovDQorCQkpOw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogRnVuY3Rpb246ICAgUXBpc2ZfMnNfNDZCKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogRGVzY3JpcHRpb246IFF1YW50aXphdGlvbiBvZiBpc2YgcGFyYW1ldGVycyB3aXRoIHByZWRpY3Rpb24uICg0NiBiaXRzKSAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogVGhlIGlzZiB2ZWN0b3IgaXMgcXVhbnRpemVkIHVzaW5nIHR3by1zdGFnZSBWUSB3aXRoIHNwbGl0LWJ5LTIgaW4gICAgICAgKg0KKyogIDFzdCBzdGFnZSBhbmQgc3BsaXQtYnktNSBpbiB0aGUgc2Vjb25kIHN0YWdlLiAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCit2b2lkIFFwaXNmXzJzXzQ2YigNCisJCVdvcmQxNiAqIGlzZjEsICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpIFExNSA6IElTRiBpbiB0aGUgZnJlcXVlbmN5IGRvbWFpbiAoMC4uMC41KSAqLw0KKwkJV29yZDE2ICogaXNmX3EsICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgUTE1IDogcXVhbnRpemVkIElTRiAgICAgICAgICAgICAgICgwLi4wLjUpICovDQorCQlXb3JkMTYgKiBwYXN0X2lzZnEsICAgICAgICAgICAgICAgICAgIC8qIChpbylRMTUgOiBwYXN0IElTRiBxdWFudGl6ZXIgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiAqIGluZGljZSwgICAgICAgICAgICAgICAgICAgICAgLyogKG8pICAgICA6IHF1YW50aXphdGlvbiBpbmRpY2VzICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IG5iX3N1cnYgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogbnVtYmVyIG9mIHN1cnZpdm9yICgxLCAyLCAzIG9yIDQpICAgICovDQorCQkpDQorew0KKwlXb3JkMTYgdG1wX2luZFs1XTsNCisJV29yZDE2IHN1cnYxW05fU1VSVl9NQVhdOyAgICAgICAgICAgICAgLyogaW5kaWNlcyBvZiBzdXJ2aXZvcnMgZnJvbSAxc3Qgc3RhZ2UgKi8NCisJV29yZDMyIGksIGssIHRlbXAsIG1pbl9lcnIsIGRpc3RhbmNlOw0KKwlXb3JkMTYgaXNmW09SREVSXTsNCisJV29yZDE2IGlzZl9zdGFnZTJbT1JERVJdOw0KKw0KKwlmb3IgKGkgPSAwOyBpIDwgT1JERVI7IGkrKykNCisJew0KKwkJaXNmW2ldID0gdm9fc3ViKGlzZjFbaV0sIG1lYW5faXNmW2ldKTsNCisJCWlzZltpXSA9IHZvX3N1Yihpc2ZbaV0sIHZvX211bHQoTVUsIHBhc3RfaXNmcVtpXSkpOyANCisJfQ0KKw0KKwlWUV9zdGFnZTEoJmlzZlswXSwgZGljbzFfaXNmLCA5LCBTSVpFX0JLMSwgc3VydjEsIG5iX3N1cnYpOw0KKw0KKwlkaXN0YW5jZSA9IE1BWF8zMjsgICAgICAgICAgDQorDQorCWZvciAoayA9IDA7IGsgPCBuYl9zdXJ2OyBrKyspDQorCXsNCisJCWZvciAoaSA9IDA7IGkgPCA5OyBpKyspDQorCQl7DQorCQkJaXNmX3N0YWdlMltpXSA9IHZvX3N1Yihpc2ZbaV0sIGRpY28xX2lzZltpICsgc3VydjFba10gKiA5XSk7IA0KKwkJfQ0KKwkJdG1wX2luZFswXSA9IFN1Yl9WUSgmaXNmX3N0YWdlMlswXSwgZGljbzIxX2lzZiwgMywgU0laRV9CSzIxLCAmbWluX2Vycik7IA0KKwkJdGVtcCA9IG1pbl9lcnI7DQorCQl0bXBfaW5kWzFdID0gU3ViX1ZRKCZpc2Zfc3RhZ2UyWzNdLCBkaWNvMjJfaXNmLCAzLCBTSVpFX0JLMjIsICZtaW5fZXJyKTsgDQorCQl0ZW1wID0gdm9fTF9hZGQodGVtcCwgbWluX2Vycik7DQorCQl0bXBfaW5kWzJdID0gU3ViX1ZRKCZpc2Zfc3RhZ2UyWzZdLCBkaWNvMjNfaXNmLCAzLCBTSVpFX0JLMjMsICZtaW5fZXJyKTsgIA0KKwkJdGVtcCA9IHZvX0xfYWRkKHRlbXAsIG1pbl9lcnIpOw0KKw0KKwkJaWYodGVtcCA8IGRpc3RhbmNlKQ0KKwkJew0KKwkJCWRpc3RhbmNlID0gdGVtcDsgICAgICAgICAgICAgICANCisJCQlpbmRpY2VbMF0gPSBzdXJ2MVtrXTsgICAgICAgICAgDQorCQkJZm9yIChpID0gMDsgaSA8IDM7IGkrKykNCisJCQl7DQorCQkJCWluZGljZVtpICsgMl0gPSB0bXBfaW5kW2ldOw0KKwkJCX0NCisJCX0NCisJfQ0KKw0KKw0KKwlWUV9zdGFnZTEoJmlzZls5XSwgZGljbzJfaXNmLCA3LCBTSVpFX0JLMiwgc3VydjEsIG5iX3N1cnYpOw0KKw0KKwlkaXN0YW5jZSA9IE1BWF8zMjsgICAgICAgICAgICAgICAgICAgDQorDQorCWZvciAoayA9IDA7IGsgPCBuYl9zdXJ2OyBrKyspDQorCXsNCisJCWZvciAoaSA9IDA7IGkgPCA3OyBpKyspDQorCQl7DQorCQkJaXNmX3N0YWdlMltpXSA9IHZvX3N1Yihpc2ZbOSArIGldLCBkaWNvMl9pc2ZbaSArIHN1cnYxW2tdICogN10pOyAgICAgICANCisJCX0NCisNCisJCXRtcF9pbmRbMF0gPSBTdWJfVlEoJmlzZl9zdGFnZTJbMF0sIGRpY28yNF9pc2YsIDMsIFNJWkVfQksyNCwgJm1pbl9lcnIpOw0KKwkJdGVtcCA9IG1pbl9lcnI7IA0KKwkJdG1wX2luZFsxXSA9IFN1Yl9WUSgmaXNmX3N0YWdlMlszXSwgZGljbzI1X2lzZiwgNCwgU0laRV9CSzI1LCAmbWluX2Vycik7DQorCQl0ZW1wID0gdm9fTF9hZGQodGVtcCwgbWluX2Vycik7DQorDQorCQlpZih0ZW1wIDwgZGlzdGFuY2UpDQorCQl7DQorCQkJZGlzdGFuY2UgPSB0ZW1wOyAgICAgICAgICAgICAgIA0KKwkJCWluZGljZVsxXSA9IHN1cnYxW2tdOyAgICAgICAgICANCisJCQlmb3IgKGkgPSAwOyBpIDwgMjsgaSsrKQ0KKwkJCXsNCisJCQkJaW5kaWNlW2kgKyA1XSA9IHRtcF9pbmRbaV07DQorCQkJfQ0KKwkJfQ0KKwl9DQorDQorCURwaXNmXzJzXzQ2YihpbmRpY2UsIGlzZl9xLCBwYXN0X2lzZnEsIGlzZl9xLCBpc2ZfcSwgMCwgMCk7DQorDQorCXJldHVybjsNCit9DQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiBGdW5jdGlvbjogICBRcGlzZl8yc18zNkIoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiBEZXNjcmlwdGlvbjogUXVhbnRpemF0aW9uIG9mIGlzZiBwYXJhbWV0ZXJzIHdpdGggcHJlZGljdGlvbi4gKDM2IGJpdHMpICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiBUaGUgaXNmIHZlY3RvciBpcyBxdWFudGl6ZWQgdXNpbmcgdHdvLXN0YWdlIFZRIHdpdGggc3BsaXQtYnktMiBpbiAgICAgICAgICAqDQorKiAgMXN0IHN0YWdlIGFuZCBzcGxpdC1ieS0zIGluIHRoZSBzZWNvbmQgc3RhZ2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KK3ZvaWQgUXBpc2ZfMnNfMzZiKA0KKwkJV29yZDE2ICogaXNmMSwgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTE1IDogSVNGIGluIHRoZSBmcmVxdWVuY3kgZG9tYWluICgwLi4wLjUpICovDQorCQlXb3JkMTYgKiBpc2ZfcSwgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSBRMTUgOiBxdWFudGl6ZWQgSVNGICAgICAgICAgICAgICAgKDAuLjAuNSkgKi8NCisJCVdvcmQxNiAqIHBhc3RfaXNmcSwgICAgICAgICAgICAgICAgICAgLyogKGlvKVExNSA6IHBhc3QgSVNGIHF1YW50aXplciAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2ICogaW5kaWNlLCAgICAgICAgICAgICAgICAgICAgICAvKiAobykgICAgIDogcXVhbnRpemF0aW9uIGluZGljZXMgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgbmJfc3VydiAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBudW1iZXIgb2Ygc3Vydml2b3IgKDEsIDIsIDMgb3IgNCkgICAgKi8NCisJCSkNCit7DQorCVdvcmQxNiBpLCBrLCB0bXBfaW5kWzVdOw0KKwlXb3JkMTYgc3VydjFbTl9TVVJWX01BWF07ICAgICAgICAgICAgICAvKiBpbmRpY2VzIG9mIHN1cnZpdm9ycyBmcm9tIDFzdCBzdGFnZSAqLw0KKwlXb3JkMzIgdGVtcCwgbWluX2VyciwgZGlzdGFuY2U7DQorCVdvcmQxNiBpc2ZbT1JERVJdOw0KKwlXb3JkMTYgaXNmX3N0YWdlMltPUkRFUl07DQorDQorCWZvciAoaSA9IDA7IGkgPCBPUkRFUjsgaSsrKQ0KKwl7DQorCQlpc2ZbaV0gPSB2b19zdWIoaXNmMVtpXSwgbWVhbl9pc2ZbaV0pOw0KKwkJaXNmW2ldID0gdm9fc3ViKGlzZltpXSwgdm9fbXVsdChNVSwgcGFzdF9pc2ZxW2ldKSk7DQorCX0NCisNCisJVlFfc3RhZ2UxKCZpc2ZbMF0sIGRpY28xX2lzZiwgOSwgU0laRV9CSzEsIHN1cnYxLCBuYl9zdXJ2KTsNCisNCisJZGlzdGFuY2UgPSBNQVhfMzI7ICAgICAgICAgICAgICAgICAgDQorDQorCWZvciAoayA9IDA7IGsgPCBuYl9zdXJ2OyBrKyspDQorCXsNCisJCWZvciAoaSA9IDA7IGkgPCA5OyBpKyspDQorCQl7DQorCQkJaXNmX3N0YWdlMltpXSA9IHZvX3N1Yihpc2ZbaV0sIGRpY28xX2lzZltpICsgc3VydjFba10gKiA5XSk7IA0KKwkJfQ0KKw0KKwkJdG1wX2luZFswXSA9IFN1Yl9WUSgmaXNmX3N0YWdlMlswXSwgZGljbzIxX2lzZl8zNmIsIDUsIFNJWkVfQksyMV8zNmIsICZtaW5fZXJyKTsgICAgICAgIA0KKwkJdGVtcCA9IG1pbl9lcnI7ICAgICAgICAgICAgICAgICAgDQorCQl0bXBfaW5kWzFdID0gU3ViX1ZRKCZpc2Zfc3RhZ2UyWzVdLCBkaWNvMjJfaXNmXzM2YiwgNCwgU0laRV9CSzIyXzM2YiwgJm1pbl9lcnIpOyAgICAgICAgDQorCQl0ZW1wID0gdm9fTF9hZGQodGVtcCwgbWluX2Vycik7DQorDQorCQlpZih0ZW1wIDwgZGlzdGFuY2UpDQorCQl7DQorCQkJZGlzdGFuY2UgPSB0ZW1wOyAgICAgICAgICAgICAgIA0KKwkJCWluZGljZVswXSA9IHN1cnYxW2tdOyAgICAgICAgICANCisJCQlmb3IgKGkgPSAwOyBpIDwgMjsgaSsrKQ0KKwkJCXsNCisJCQkJaW5kaWNlW2kgKyAyXSA9IHRtcF9pbmRbaV07DQorCQkJfQ0KKwkJfQ0KKwl9DQorDQorCVZRX3N0YWdlMSgmaXNmWzldLCBkaWNvMl9pc2YsIDcsIFNJWkVfQksyLCBzdXJ2MSwgbmJfc3Vydik7DQorCWRpc3RhbmNlID0gTUFYXzMyOyAgICAgICAgICAgICAgICAgICAgDQorDQorCWZvciAoayA9IDA7IGsgPCBuYl9zdXJ2OyBrKyspDQorCXsNCisJCWZvciAoaSA9IDA7IGkgPCA3OyBpKyspDQorCQl7DQorCQkJaXNmX3N0YWdlMltpXSA9IHZvX3N1Yihpc2ZbOSArIGldLCBkaWNvMl9pc2ZbaSArIHN1cnYxW2tdICogN10pOyAgICAgDQorCQl9DQorDQorCQl0bXBfaW5kWzBdID0gU3ViX1ZRKCZpc2Zfc3RhZ2UyWzBdLCBkaWNvMjNfaXNmXzM2YiwgNywgU0laRV9CSzIzXzM2YiwgJm1pbl9lcnIpOyAgDQorCQl0ZW1wID0gbWluX2VycjsgICAgICAgICAgICAgICAgICANCisNCisJCWlmKHRlbXAgPCBkaXN0YW5jZSkNCisJCXsNCisJCQlkaXN0YW5jZSA9IHRlbXA7ICAgICAgICAgICAgICAgDQorCQkJaW5kaWNlWzFdID0gc3VydjFba107ICAgICAgICAgIA0KKwkJCWluZGljZVs0XSA9IHRtcF9pbmRbMF07ICAgICAgICANCisJCX0NCisJfQ0KKw0KKwlEcGlzZl8yc18zNmIoaW5kaWNlLCBpc2ZfcSwgcGFzdF9pc2ZxLCBpc2ZfcSwgaXNmX3EsIDAsIDApOw0KKw0KKwlyZXR1cm47DQorfQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqIEZ1bmN0aW9uOiBEcGlzZl8yc180NmIoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogRGVzY3JpcHRpb246IERlY29kaW5nIG9mIElTRiBwYXJhbWV0ZXJzICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KK3ZvaWQgRHBpc2ZfMnNfNDZiKA0KKwkJV29yZDE2ICogaW5kaWNlLCAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dDogIHF1YW50aXphdGlvbiBpbmRpY2VzICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2ICogaXNmX3EsICAgICAgICAgICAgICAgICAgICAgICAvKiBvdXRwdXQ6IHF1YW50aXplZCBJU0YgaW4gZnJlcXVlbmN5IGRvbWFpbiAoMC4uMC41KSAqLw0KKwkJV29yZDE2ICogcGFzdF9pc2ZxLCAgICAgICAgICAgICAgICAgICAvKiBpLzAgICA6IHBhc3QgSVNGIHF1YW50aXplciAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiAqIGlzZm9sZCwgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBwYXN0IHF1YW50aXplZCBJU0YgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgKiBpc2ZfYnVmLCAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogaXNmIGJ1ZmZlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBiZmksICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBCYWQgZnJhbWUgaW5kaWNhdG9yICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgZW5jX2RlYw0KKwkJKQ0KK3sNCisJV29yZDE2IHJlZl9pc2ZbTV0sIHRtcDsNCisJV29yZDMyIGksIGosIExfdG1wOw0KKw0KKwlpZiAoYmZpID09IDApICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBHb29kIGZyYW1lICovDQorCXsNCisJCWZvciAoaSA9IDA7IGkgPCA5OyBpKyspDQorCQl7DQorCQkJaXNmX3FbaV0gPSBkaWNvMV9pc2ZbaW5kaWNlWzBdICogOSArIGldOyAgICANCisJCX0NCisJCWZvciAoaSA9IDA7IGkgPCA3OyBpKyspDQorCQl7DQorCQkJaXNmX3FbaSArIDldID0gZGljbzJfaXNmW2luZGljZVsxXSAqIDcgKyBpXTsgICAgICAgDQorCQl9DQorDQorCQlmb3IgKGkgPSAwOyBpIDwgMzsgaSsrKQ0KKwkJew0KKwkJCWlzZl9xW2ldID0gYWRkMShpc2ZfcVtpXSwgZGljbzIxX2lzZltpbmRpY2VbMl0gKiAzICsgaV0pOyAgIA0KKwkJCWlzZl9xW2kgKyAzXSA9IGFkZDEoaXNmX3FbaSArIDNdLCBkaWNvMjJfaXNmW2luZGljZVszXSAqIDMgKyBpXSk7ICANCisJCQlpc2ZfcVtpICsgNl0gPSBhZGQxKGlzZl9xW2kgKyA2XSwgZGljbzIzX2lzZltpbmRpY2VbNF0gKiAzICsgaV0pOyANCisJCQlpc2ZfcVtpICsgOV0gPSBhZGQxKGlzZl9xW2kgKyA5XSwgZGljbzI0X2lzZltpbmRpY2VbNV0gKiAzICsgaV0pOyANCisJCX0NCisNCisJCWZvciAoaSA9IDA7IGkgPCA0OyBpKyspDQorCQl7DQorCQkJaXNmX3FbaSArIDEyXSA9IGFkZDEoaXNmX3FbaSArIDEyXSwgZGljbzI1X2lzZltpbmRpY2VbNl0gKiA0ICsgaV0pOyAgDQorCQl9DQorDQorCQlmb3IgKGkgPSAwOyBpIDwgT1JERVI7IGkrKykNCisJCXsNCisJCQl0bXAgPSBpc2ZfcVtpXTsgICAgICAgICAgICAgICANCisJCQlpc2ZfcVtpXSA9IGFkZDEodG1wLCBtZWFuX2lzZltpXSk7ICANCisJCQlpc2ZfcVtpXSA9IGFkZDEoaXNmX3FbaV0sIHZvX211bHQoTVUsIHBhc3RfaXNmcVtpXSkpOw0KKwkJCXBhc3RfaXNmcVtpXSA9IHRtcDsgIA0KKwkJfQ0KKw0KKwkJaWYgKGVuY19kZWMpDQorCQl7DQorCQkJZm9yIChpID0gMDsgaSA8IE07IGkrKykNCisJCQl7DQorCQkJCWZvciAoaiA9IChMX01FQU5CVUYgLSAxKTsgaiA+IDA7IGotLSkNCisJCQkJew0KKwkJCQkJaXNmX2J1ZltqICogTSArIGldID0gaXNmX2J1ZlsoaiAtIDEpICogTSArIGldOyANCisJCQkJfQ0KKwkJCQlpc2ZfYnVmW2ldID0gaXNmX3FbaV07IA0KKwkJCX0NCisJCX0NCisJfSBlbHNlDQorCXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGJhZCBmcmFtZSAqLw0KKwkJZm9yIChpID0gMDsgaSA8IE07IGkrKykNCisJCXsNCisJCQlMX3RtcCA9IG1lYW5faXNmW2ldIDw8IDE0Ow0KKwkJCWZvciAoaiA9IDA7IGogPCBMX01FQU5CVUY7IGorKykNCisJCQl7DQorCQkJCUxfdG1wICs9IChpc2ZfYnVmW2ogKiBNICsgaV0gPDwgMTQpOw0KKwkJCX0NCisJCQlyZWZfaXNmW2ldID0gdm9fcm91bmQoTF90bXApOw0KKwkJfQ0KKw0KKwkJLyogdXNlIHRoZSBwYXN0IElTRnMgc2xpZ2h0bHkgc2hpZnRlZCB0b3dhcmRzIHRoZWlyIG1lYW4gKi8NCisJCWZvciAoaSA9IDA7IGkgPCBPUkRFUjsgaSsrKQ0KKwkJew0KKwkJCWlzZl9xW2ldID0gYWRkMSh2b19tdWx0KEFMUEhBLCBpc2ZvbGRbaV0pLCB2b19tdWx0KE9ORV9BTFBIQSwgcmVmX2lzZltpXSkpOyANCisJCX0NCisNCisJCS8qIGVzdGltYXRlIHBhc3QgcXVhbnRpemVkIHJlc2lkdWFsIHRvIGJlIHVzZWQgaW4gbmV4dCBmcmFtZSAqLw0KKwkJZm9yIChpID0gMDsgaSA8IE9SREVSOyBpKyspDQorCQl7DQorCQkJdG1wID0gYWRkMShyZWZfaXNmW2ldLCB2b19tdWx0KHBhc3RfaXNmcVtpXSwgTVUpKTsgICAgICAvKiBwcmVkaWN0ZWQgSVNGICovDQorCQkJcGFzdF9pc2ZxW2ldID0gdm9fc3ViKGlzZl9xW2ldLCB0bXApOyANCisJCQlwYXN0X2lzZnFbaV0gPSAocGFzdF9pc2ZxW2ldID4+IDEpOyAgICAgICAgLyogcGFzdF9pc2ZxW2ldICo9IDAuNSAqLw0KKwkJfQ0KKwl9DQorDQorCVJlb3JkZXJfaXNmKGlzZl9xLCBJU0ZfR0FQLCBPUkRFUik7DQorCXJldHVybjsNCit9DQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogRnVuY3Rpb246ICAgRGlzZl8yc18zNmIoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiBEZXNjcmlwdGlvbjogRGVjb2Rpbmcgb2YgSVNGIHBhcmFtZXRlcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCit2b2lkIERwaXNmXzJzXzM2YigNCisJCVdvcmQxNiAqIGluZGljZSwgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQ6ICBxdWFudGl6YXRpb24gaW5kaWNlcyAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiAqIGlzZl9xLCAgICAgICAgICAgICAgICAgICAgICAgLyogb3V0cHV0OiBxdWFudGl6ZWQgSVNGIGluIGZyZXF1ZW5jeSBkb21haW4gKDAuLjAuNSkgKi8NCisJCVdvcmQxNiAqIHBhc3RfaXNmcSwgICAgICAgICAgICAgICAgICAgLyogaS8wICAgOiBwYXN0IElTRiBxdWFudGl6ZXIgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgKiBpc2ZvbGQsICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogcGFzdCBxdWFudGl6ZWQgSVNGICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2ICogaXNmX2J1ZiwgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IGlzZiBidWZmZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgYmZpLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogQmFkIGZyYW1lIGluZGljYXRvciAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IGVuY19kZWMNCisJCSkNCit7DQorCVdvcmQxNiByZWZfaXNmW01dLCB0bXA7DQorCVdvcmQzMiBpLCBqLCBMX3RtcDsNCisNCisJaWYgKGJmaSA9PSAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogR29vZCBmcmFtZSAqLw0KKwl7DQorCQlmb3IgKGkgPSAwOyBpIDwgOTsgaSsrKQ0KKwkJew0KKwkJCWlzZl9xW2ldID0gZGljbzFfaXNmW2luZGljZVswXSAqIDkgKyBpXTsgICAgDQorCQl9DQorCQlmb3IgKGkgPSAwOyBpIDwgNzsgaSsrKQ0KKwkJew0KKwkJCWlzZl9xW2kgKyA5XSA9IGRpY28yX2lzZltpbmRpY2VbMV0gKiA3ICsgaV07ICAgICAgIA0KKwkJfQ0KKw0KKwkJZm9yIChpID0gMDsgaSA8IDU7IGkrKykNCisJCXsNCisJCQlpc2ZfcVtpXSA9IGFkZDEoaXNmX3FbaV0sIGRpY28yMV9pc2ZfMzZiW2luZGljZVsyXSAqIDUgKyBpXSk7ICAgICAgIA0KKwkJfQ0KKwkJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykNCisJCXsNCisJCQlpc2ZfcVtpICsgNV0gPSBhZGQxKGlzZl9xW2kgKyA1XSwgZGljbzIyX2lzZl8zNmJbaW5kaWNlWzNdICogNCArIGldKTsgICAgICAgIA0KKwkJfQ0KKwkJZm9yIChpID0gMDsgaSA8IDc7IGkrKykNCisJCXsNCisJCQlpc2ZfcVtpICsgOV0gPSBhZGQxKGlzZl9xW2kgKyA5XSwgZGljbzIzX2lzZl8zNmJbaW5kaWNlWzRdICogNyArIGldKTsgICAgICAgDQorCQl9DQorDQorCQlmb3IgKGkgPSAwOyBpIDwgT1JERVI7IGkrKykNCisJCXsNCisJCQl0bXAgPSBpc2ZfcVtpXTsNCisJCQlpc2ZfcVtpXSA9IGFkZDEodG1wLCBtZWFuX2lzZltpXSk7ICAgDQorCQkJaXNmX3FbaV0gPSBhZGQxKGlzZl9xW2ldLCB2b19tdWx0KE1VLCBwYXN0X2lzZnFbaV0pKTsgICANCisJCQlwYXN0X2lzZnFbaV0gPSB0bXA7ICAgICAgICAgICANCisJCX0NCisNCisNCisJCWlmIChlbmNfZGVjKQ0KKwkJew0KKwkJCWZvciAoaSA9IDA7IGkgPCBNOyBpKyspDQorCQkJew0KKwkJCQlmb3IgKGogPSAoTF9NRUFOQlVGIC0gMSk7IGogPiAwOyBqLS0pDQorCQkJCXsNCisJCQkJCWlzZl9idWZbaiAqIE0gKyBpXSA9IGlzZl9idWZbKGogLSAxKSAqIE0gKyBpXTsgICAgICANCisJCQkJfQ0KKwkJCQlpc2ZfYnVmW2ldID0gaXNmX3FbaV07ICAgIA0KKwkJCX0NCisJCX0NCisJfSBlbHNlDQorCXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGJhZCBmcmFtZSAqLw0KKwkJZm9yIChpID0gMDsgaSA8IE07IGkrKykNCisJCXsNCisJCQlMX3RtcCA9IChtZWFuX2lzZltpXSA8PCAxNCk7DQorCQkJZm9yIChqID0gMDsgaiA8IExfTUVBTkJVRjsgaisrKQ0KKwkJCXsNCisJCQkJTF90bXAgKz0gKGlzZl9idWZbaiAqIE0gKyBpXSA8PCAxNCk7DQorCQkJfQ0KKwkJCXJlZl9pc2ZbaV0gPSB2b19yb3VuZChMX3RtcCk7ICAgIA0KKwkJfQ0KKw0KKwkJLyogdXNlIHRoZSBwYXN0IElTRnMgc2xpZ2h0bHkgc2hpZnRlZCB0b3dhcmRzIHRoZWlyIG1lYW4gKi8NCisJCWZvciAoaSA9IDA7IGkgPCBPUkRFUjsgaSsrKQ0KKwkJew0KKwkJCWlzZl9xW2ldID0gYWRkMSh2b19tdWx0KEFMUEhBLCBpc2ZvbGRbaV0pLCB2b19tdWx0KE9ORV9BTFBIQSwgcmVmX2lzZltpXSkpOyAgICAgICAgDQorCQl9DQorDQorCQkvKiBlc3RpbWF0ZSBwYXN0IHF1YW50aXplZCByZXNpZHVhbCB0byBiZSB1c2VkIGluIG5leHQgZnJhbWUgKi8NCisJCWZvciAoaSA9IDA7IGkgPCBPUkRFUjsgaSsrKQ0KKwkJew0KKwkJCXRtcCA9IGFkZDEocmVmX2lzZltpXSwgdm9fbXVsdChwYXN0X2lzZnFbaV0sIE1VKSk7ICAgICAgLyogcHJlZGljdGVkIElTRiAqLw0KKwkJCXBhc3RfaXNmcVtpXSA9IHZvX3N1Yihpc2ZfcVtpXSwgdG1wKTsgIA0KKwkJCXBhc3RfaXNmcVtpXSA9IHBhc3RfaXNmcVtpXSA+PiAxOyAgICAgICAgIC8qIHBhc3RfaXNmcVtpXSAqPSAwLjUgKi8NCisJCX0NCisJfQ0KKw0KKwlSZW9yZGVyX2lzZihpc2ZfcSwgSVNGX0dBUCwgT1JERVIpOw0KKw0KKwlyZXR1cm47DQorfQ0KKw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqIEZ1bmN0aW9uOiAgUmVvcmRlcl9pc2YoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogRGVzY3JpcHRpb246IFRvIG1ha2Ugc3VyZSB0aGF0IHRoZSAgaXNmcyBhcmUgcHJvcGVybHkgb3JkZXIgYW5kIHRvICAgICAgICoNCisqICAgICAgICAgICAgICBrZWVwIGEgY2VydGFpbiBtaW5pbXVtIGRpc3RhbmNlIGJldHdlZW4gY29uc2VjdXRpdmUgaXNmcy4gICAqDQorKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyogICAgQXJndW1lbnQgICAgICAgICBkZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgIGluL291dCAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgaXNmW10gICAgICAgICAgIHZlY3RvciBvZiBpc2ZzICAgICAgICAgICAgICAgICAgICBpL28gICAgICAgICAgICAgICAgKg0KKyogICAgIG1pbl9kaXN0ICAgICAgICBtaW5pbXVtIHJlcXVpcmVkIGRpc3RhbmNlICAgICAgICAgaSAgICAgICAgICAgICAgICAgICoNCisqICAgICBuICAgICAgICAgICAgICAgTFBDIG9yZGVyICAgICAgICAgICAgICAgICAgICAgICAgIGkgICAgICAgICAgICAgICAgICAqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCit2b2lkIFJlb3JkZXJfaXNmKA0KKwkJV29yZDE2ICogaXNmLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaS9vKSBRMTU6IElTRiBpbiB0aGUgZnJlcXVlbmN5IGRvbWFpbiAoMC4uMC41KSAqLw0KKwkJV29yZDE2IG1pbl9kaXN0LCAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTE1ICA6IG1pbmltdW0gZGlzdGFuY2UgdG8ga2VlcCAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgICA6IG51bWJlciBvZiBJU0YgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJKQ0KK3sNCisJV29yZDMyIGk7IA0KKwlXb3JkMTYgaXNmX21pbjsNCisNCisJaXNmX21pbiA9IG1pbl9kaXN0OyAgICAgICAgICAgICAgICAgICAgDQorCWZvciAoaSA9IDA7IGkgPCBuIC0gMTsgaSsrKQ0KKwl7DQorCQlpZihpc2ZbaV0gPCBpc2ZfbWluKQ0KKwkJew0KKwkJCWlzZltpXSA9IGlzZl9taW47ICAgICAgICAgICAgICANCisJCX0NCisJCWlzZl9taW4gPSAoaXNmW2ldICsgbWluX2Rpc3QpOw0KKwl9DQorCXJldHVybjsNCit9DQorDQorDQorV29yZDE2IFN1Yl9WUSggICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG91dHB1dDogcmV0dXJuIHF1YW50aXphdGlvbiBpbmRleCAgICAgKi8NCisJCVdvcmQxNiAqIHgsICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBJU0YgcmVzaWR1YWwgdmVjdG9yICAgICAgICAgICAqLw0KKwkJV29yZDE2ICogZGljbywgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IHF1YW50aXphdGlvbiBjb2RlYm9vayAgICAgICAgICovDQorCQlXb3JkMTYgZGltLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogZGltZW50aW9uIG9mIHZlY3RvciAgICAgICAgICAgKi8NCisJCVdvcmQxNiBkaWNvX3NpemUsICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBzaXplIG9mIHF1YW50aXphdGlvbiBjb2RlYm9vayAqLw0KKwkJV29yZDMyICogZGlzdGFuY2UgICAgICAgICAgICAgICAgICAgICAvKiBvdXRwdXQ6IGVycm9yIG9mIHF1YW50aXphdGlvbiAgICAgICAgICovDQorCSAgICAgKQ0KK3sNCisJV29yZDE2IHRlbXAsICpwX2RpY287DQorCVdvcmQzMiBpLCBqLCBpbmRleDsNCisJV29yZDMyIGRpc3RfbWluLCBkaXN0Ow0KKw0KKwlkaXN0X21pbiA9IE1BWF8zMjsgICAgICAgICAgICAgICAgICAgICANCisJcF9kaWNvID0gZGljbzsgICAgICAgICAgICAgICAgICAgICAgICAgDQorDQorCWluZGV4ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwlmb3IgKGkgPSAwOyBpIDwgZGljb19zaXplOyBpKyspDQorCXsNCisJCWRpc3QgPSAwOyAgDQorDQorCQlmb3IgKGogPSAwOyBqIDwgZGltOyBqKyspDQorCQl7DQorCQkJdGVtcCA9IHhbal0gLSAoKnBfZGljbysrKTsNCisJCQlkaXN0ICs9ICh0ZW1wICogdGVtcCk8PDE7DQorCQl9DQorDQorCQlpZihkaXN0IDwgZGlzdF9taW4pDQorCQl7DQorCQkJZGlzdF9taW4gPSBkaXN0OyAgICAgICAgICAgICAgIA0KKwkJCWluZGV4ID0gaTsgICAgICAgICAgICAgICAgICAgICANCisJCX0NCisJfQ0KKw0KKwkqZGlzdGFuY2UgPSBkaXN0X21pbjsgICAgICAgICAgICAgICAgICANCisNCisJLyogUmVhZGluZyB0aGUgc2VsZWN0ZWQgdmVjdG9yICovDQorCXBfZGljbyA9ICZkaWNvW2luZGV4ICogZGltXTsgICAgICAgICAgIA0KKwlmb3IgKGogPSAwOyBqIDwgZGltOyBqKyspDQorCXsNCisJCXhbal0gPSAqcF9kaWNvKys7ICAgICAgICAgICAgICAgICAgDQorCX0NCisNCisJcmV0dXJuIGluZGV4Ow0KK30NCisNCisNCitzdGF0aWMgdm9pZCBWUV9zdGFnZTEoDQorCQlXb3JkMTYgKiB4LCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogSVNGIHJlc2lkdWFsIHZlY3RvciAgICAgICAgICAgKi8NCisJCVdvcmQxNiAqIGRpY28sICAgICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiBxdWFudGl6YXRpb24gY29kZWJvb2sgICAgICAgICAqLw0KKwkJV29yZDE2IGRpbSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IGRpbWVudGlvbiBvZiB2ZWN0b3IgICAgICAgICAgICovDQorCQlXb3JkMTYgZGljb19zaXplLCAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogc2l6ZSBvZiBxdWFudGl6YXRpb24gY29kZWJvb2sgKi8NCisJCVdvcmQxNiAqIGluZGV4LCAgICAgICAgICAgICAgICAgICAgICAgLyogb3V0cHV0OiBpbmRpY2VzIG9mIHN1cnZpdm9ycyAgICAgICAgICAqLw0KKwkJV29yZDE2IHN1cnYgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6IG51bWJlciBvZiBzdXJ2aXZvciAgICAgICAgICAgICovDQorCQkpDQorew0KKwlXb3JkMTYgdGVtcCwgKnBfZGljbzsNCisJV29yZDMyIGksIGosIGssIGw7DQorCVdvcmQzMiBkaXN0X21pbltOX1NVUlZfTUFYXSwgZGlzdDsNCisNCisJZGlzdF9taW5bMF0gPSBNQVhfMzI7DQorCWRpc3RfbWluWzFdID0gTUFYXzMyOw0KKwlkaXN0X21pblsyXSA9IE1BWF8zMjsNCisJZGlzdF9taW5bM10gPSBNQVhfMzI7DQorCWluZGV4WzBdID0gMDsNCisJaW5kZXhbMV0gPSAxOw0KKwlpbmRleFsyXSA9IDI7DQorCWluZGV4WzNdID0gMzsNCisNCisJcF9kaWNvID0gZGljbzsgICAgICAgICAgICAgICAgICAgICAgICAgDQorDQorCWZvciAoaSA9IDA7IGkgPCBkaWNvX3NpemU7IGkrKykNCisJew0KKwkJZGlzdCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICANCisJCWZvciAoaiA9IDA7IGogPCBkaW07IGorKykNCisJCXsNCisJCQl0ZW1wID0geFtqXSAtICAoKnBfZGljbysrKTsNCisJCQlkaXN0ICs9ICh0ZW1wICogdGVtcCk8PDE7DQorCQl9DQorDQorCQlmb3IgKGsgPSAwOyBrIDwgc3VydjsgaysrKQ0KKwkJew0KKwkJCWlmKGRpc3QgPCBkaXN0X21pbltrXSkNCisJCQl7DQorCQkJCWZvciAobCA9IHN1cnYgLSAxOyBsID4gazsgbC0tKQ0KKwkJCQl7DQorCQkJCQlkaXN0X21pbltsXSA9IGRpc3RfbWluW2wgLSAxXTsgICAgICANCisJCQkJCWluZGV4W2xdID0gaW5kZXhbbCAtIDFdOyAgICANCisJCQkJfQ0KKwkJCQlkaXN0X21pbltrXSA9IGRpc3Q7ICAgICAgICANCisJCQkJaW5kZXhba10gPSBpOyAgICAgICAgICAgICAgDQorCQkJCWJyZWFrOw0KKwkJCX0NCisJCX0NCisJfQ0KKwlyZXR1cm47DQorfQ0KKw0KKw0KKw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvcmFuZG9tLmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL3JhbmRvbS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiYWE4YmYKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL3JhbmRvbS5jCkBAIC0wLDAgKzEsMzMgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiAgICAgICBGaWxlOiByYW5kb20uYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICBEZXNjcmlwdGlvbjogU2lnbmVkIDE2IGJpdHMgcmFuZG9tIGdlbmVyYXRvciAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKyNpbmNsdWRlICJ0eXBlZGVmLmgiDQorI2luY2x1ZGUgImJhc2ljX29wLmgiDQorDQorV29yZDE2IFJhbmRvbShXb3JkMTYgKiBzZWVkKQ0KK3sNCisJLyogc3RhdGljIFdvcmQxNiBzZWVkID0gMjE4NDU7ICovDQorCSpzZWVkID0gKFdvcmQxNikoTF9hZGQoKExfbXVsdCgqc2VlZCwgMzE4MjEpID4+IDEpLCAxMzg0OUwpKTsNCisJcmV0dXJuICgqc2VlZCk7DQorfQ0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvcmVzaWR1LmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL3Jlc2lkdS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4Mjk4ODIKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL3Jlc2lkdS5jCkBAIC0wLDAgKzEsNjcgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiAgRmlsZTogcmVzaWR1LmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgRGVzY3JpcHRpb246IENvbXB1dGUgdGhlIExQQyByZXNpZHVhbCBieSBmaWx0ZXJpbmcgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICB0aGUgaW5wdXQgc3BlZWNoIHRocm91Z2ggQSh6KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKyNpbmNsdWRlICJ0eXBlZGVmLmgiDQorI2luY2x1ZGUgImJhc2ljX29wLmgiDQorDQordm9pZCBSZXNpZHUoDQorCQlXb3JkMTYgYVtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRMTIgOiBwcmVkaWN0aW9uIGNvZWZmaWNpZW50cyAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgeFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBzcGVlY2ggKHZhbHVlcyB4Wy1tLi4tMV0gYXJlIG5lZWRlZCAgICAgICAgICovDQorCQlXb3JkMTYgeVtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSB4MiAgOiByZXNpZHVhbCBzaWduYWwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgbGcgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBzaXplIG9mIGZpbHRlcmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCQkpDQorew0KKwlXb3JkMTYgaSwqcDEsICpwMjsNCisJV29yZDMyIHM7DQorCWZvciAoaSA9IDA7IGkgPCBsZzsgaSsrKQ0KKwl7DQorCQlwMSA9IGE7DQorCQlwMiA9ICZ4W2ldOw0KKwkJcyAgPSB2b19tdWx0MzIoKCpwMSsrKSwgKCpwMi0tKSk7DQorCQlzICs9IHZvX211bHQzMigoKnAxKyspLCAoKnAyLS0pKTsNCisJCXMgKz0gdm9fbXVsdDMyKCgqcDErKyksICgqcDItLSkpOw0KKwkJcyArPSB2b19tdWx0MzIoKCpwMSsrKSwgKCpwMi0tKSk7DQorCQlzICs9IHZvX211bHQzMigoKnAxKyspLCAoKnAyLS0pKTsNCisJCXMgKz0gdm9fbXVsdDMyKCgqcDErKyksICgqcDItLSkpOw0KKwkJcyArPSB2b19tdWx0MzIoKCpwMSsrKSwgKCpwMi0tKSk7DQorCQlzICs9IHZvX211bHQzMigoKnAxKyspLCAoKnAyLS0pKTsNCisJCXMgKz0gdm9fbXVsdDMyKCgqcDErKyksICgqcDItLSkpOw0KKwkJcyArPSB2b19tdWx0MzIoKCpwMSsrKSwgKCpwMi0tKSk7DQorCQlzICs9IHZvX211bHQzMigoKnAxKyspLCAoKnAyLS0pKTsNCisJCXMgKz0gdm9fbXVsdDMyKCgqcDErKyksICgqcDItLSkpOw0KKwkJcyArPSB2b19tdWx0MzIoKCpwMSsrKSwgKCpwMi0tKSk7DQorCQlzICs9IHZvX211bHQzMigoKnAxKyspLCAoKnAyLS0pKTsNCisJCXMgKz0gdm9fbXVsdDMyKCgqcDErKyksICgqcDItLSkpOw0KKwkJcyArPSB2b19tdWx0MzIoKCpwMSsrKSwgKCpwMi0tKSk7DQorCQlzICs9IHZvX211bHQzMigoKnAxKSwgKCpwMikpOw0KKw0KKwkJcyA9IExfc2hsMihzLCA1KTsgDQorCQl5W2ldID0gZXh0cmFjdF9oKExfYWRkKHMsIDB4ODAwMCkpOw0KKwl9DQorDQorCXJldHVybjsNCit9DQorDQorDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9zY2FsZS5jIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9zY2FsZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmNDAxMjEKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL3NjYWxlLmMKQEAgLTAsMCArMSw1NyBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqICAgICAgIEZpbGU6IHNjYWxlLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgIERlc2NyaXB0aW9uOiBTY2FsZSBzaWduYWwgdG8gZ2V0IG1heGltdW0gb2YgZHluYW1pYyAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2luY2x1ZGUgInR5cGVkZWYuaCINCisjaW5jbHVkZSAiYmFzaWNfb3AuaCINCisNCit2b2lkIFNjYWxlX3NpZygNCisJCVdvcmQxNiB4W10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkvbykgOiBzaWduYWwgdG8gc2NhbGUgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IGxnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICA6IHNpemUgb2YgeFtdICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgZXhwICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgIDogZXhwb25lbnQ6IHggPSByb3VuZCh4IDw8IGV4cCkgKi8NCisJICAgICAgKQ0KK3sNCisJV29yZDMyIGk7DQorCVdvcmQzMiBMX3RtcDsNCisJaWYoZXhwID4gMCkNCisJew0KKwkJZm9yIChpID0gbGcgLSAxIDsgaSA+PSAwOyBpLS0pDQorCQl7DQorCQkJTF90bXAgPSBMX3NobDIoeFtpXSwgMTYgKyBleHApOyAgDQorCQkJeFtpXSA9IGV4dHJhY3RfaChMX2FkZChMX3RtcCwgMHg4MDAwKSk7ICAgICAgICAgICAgDQorCQl9DQorCX0NCisJZWxzZQ0KKwl7DQorCQlleHAgPSAtZXhwOw0KKwkJZm9yIChpID0gbGcgLSAxOyBpID49IDA7IGktLSkNCisJCXsNCisJCQlMX3RtcCA9IHhbaV0gPDwgMTY7DQorCQkJTF90bXAgPj49IGV4cDsgDQorCQkJeFtpXSA9IChMX3RtcCArIDB4ODAwMCk+PjE2OyAgICAgICAgICAgIA0KKwkJfQ0KKwl9DQorCXJldHVybjsNCit9DQorDQorDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9zdHJlYW0uYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvc3RyZWFtLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTcwODIzNQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvc3RyZWFtLmMKQEAgLTAsMCArMSw1OCBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqICAgICAgIEZpbGU6IHN0cmVhbS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgIERlc2NyaXB0aW9uOiBWT01FIEFQSSBCdWZmZXIgT3BlcmF0b3IgSW1wbGVtZW50IENvZGUgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2luY2x1ZGUgInN0cmVhbS5oIg0KKw0KK3ZvaWQgdm9BV0JfSW5pdEZyYW1lQnVmZmVyKEZyYW1lU3RyZWFtICpzdHJlYW0pDQorew0KKwlzdHJlYW0tPnNldF9wdHIgPSBOVUxMOw0KKwlzdHJlYW0tPmZyYW1lX3B0cl9iayA9IHN0cmVhbS0+ZnJhbWVfcHRyOw0KKwlzdHJlYW0tPnNldF9sZW4gPSAwOw0KKwlzdHJlYW0tPmZyYW1lYnVmZmVyX2xlbiA9IDA7DQorCXN0cmVhbS0+ZnJhbWVfc3RvcmVsZW4gPSAwOwkNCit9DQorDQordm9pZCB2b0FXQl9VcGRhdGVGcmFtZUJ1ZmZlcigNCisJCUZyYW1lU3RyZWFtICpzdHJlYW0sIA0KKwkJVk9fTUVNX09QRVJBVE9SICpwTWVtT1ANCisJCSkNCit7DQorCWludCAgbGVuOw0KKwlsZW4gID0gTUlOKEZyYW1lX01heHNpemUgLSBzdHJlYW0tPmZyYW1lX3N0b3JlbGVuLCBzdHJlYW0tPnNldF9sZW4pOw0KKwlwTWVtT1AtPkNvcHkoVk9fSU5ERVhfRU5DX0FNUldCLCBzdHJlYW0tPmZyYW1lX3B0cl9iayArIHN0cmVhbS0+ZnJhbWVfc3RvcmVsZW4gLCBzdHJlYW0tPnNldF9wdHIsIGxlbik7DQorCXN0cmVhbS0+c2V0X2xlbiAtPSBsZW47DQorCXN0cmVhbS0+c2V0X3B0ciArPSBsZW47DQorCXN0cmVhbS0+ZnJhbWVidWZmZXJfbGVuID0gc3RyZWFtLT5mcmFtZV9zdG9yZWxlbiArIGxlbjsNCisJc3RyZWFtLT5mcmFtZV9wdHIgPSBzdHJlYW0tPmZyYW1lX3B0cl9iazsNCisJc3RyZWFtLT51c2VkX2xlbiArPSBsZW47DQorfQ0KKw0KK3ZvaWQgdm9BV0JfRmx1c2hGcmFtZUJ1ZmZlcihGcmFtZVN0cmVhbSAqc3RyZWFtKQ0KK3sNCisJc3RyZWFtLT5zZXRfcHRyID0gTlVMTDsNCisJc3RyZWFtLT5mcmFtZV9wdHJfYmsgPSBzdHJlYW0tPmZyYW1lX3B0cjsNCisJc3RyZWFtLT5zZXRfbGVuID0gMDsNCisJc3RyZWFtLT5mcmFtZWJ1ZmZlcl9sZW4gPSAwOw0KKwlzdHJlYW0tPmZyYW1lX3N0b3JlbGVuID0gMDsJDQorfQ0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvc3luX2ZpbHQuYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvc3luX2ZpbHQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YzFmYjhlCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy9zeW5fZmlsdC5jCkBAIC0wLDAgKzEsMTYwIEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogICAgICAgRmlsZTogc3luX2ZpbHQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgRGVzY3JpcHRpb246IERvIHRoZSBzeW50aGVzaXMgZmlsdGVyaW5nIDEvQSh6KSAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaW5jbHVkZSAidHlwZWRlZi5oIg0KKyNpbmNsdWRlICJiYXNpY19vcC5oIg0KKyNpbmNsdWRlICJtYXRoX29wLmgiDQorI2luY2x1ZGUgImNuc3QuaCINCisNCit2b2lkIFN5bl9maWx0KA0KKwkJV29yZDE2IGFbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTEyIDogYVttKzFdIHByZWRpY3Rpb24gY29lZmZpY2llbnRzICAgICAgICAgICAqLw0KKwkJV29yZDE2IHhbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogaW5wdXQgc2lnbmFsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IHlbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgICAgIDogb3V0cHV0IHNpZ25hbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IGxnLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogc2l6ZSBvZiBmaWx0ZXJpbmcgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IG1lbVtdLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaS9vKSAgIDogbWVtb3J5IGFzc29jaWF0ZWQgd2l0aCB0aGlzIGZpbHRlcmluZy4gICAqLw0KKwkJV29yZDE2IHVwZGF0ZSAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICAgIDogMD1ubyB1cGRhdGUsIDE9dXBkYXRlIG9mIG1lbW9yeS4gICAgICAgICAqLw0KKwkgICAgICkNCit7DQorCVdvcmQzMiBpLCBhMDsNCisJV29yZDE2IHlfYnVmW0xfU1VCRlIxNmsgKyBNMTZrXTsNCisJV29yZDMyIExfdG1wOw0KKwlXb3JkMTYgKnl5LCAqcDEsICpwMjsNCisJeXkgPSAmeV9idWZbMF07ICAgICAgICAgICAgICAgICAgICAgICAgDQorCS8qIGNvcHkgaW5pdGlhbCBmaWx0ZXIgc3RhdGVzIGludG8gc3ludGhlc2lzIGJ1ZmZlciAqLw0KKwlmb3IgKGkgPSAwOyBpIDwgMTY7IGkrKykNCisJew0KKwkJKnl5KysgPSBtZW1baV07ICAgICAgICAgICAgICAgICAgICANCisJfQ0KKwlhMCA9IChhWzBdID4+IDEpOyAgICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IC8gMiAqLw0KKwkvKiBEbyB0aGUgZmlsdGVyaW5nLiAqLw0KKwlmb3IgKGkgPSAwOyBpIDwgbGc7IGkrKykNCisJew0KKwkJcDEgPSAmYVsxXTsNCisJCXAyID0gJnl5W2ktMV07DQorCQlMX3RtcCAgPSB2b19tdWx0MzIoYTAsIHhbaV0pOw0KKwkJTF90bXAgLT0gdm9fbXVsdDMyKCgqcDErKyksICgqcDItLSkpOw0KKwkJTF90bXAgLT0gdm9fbXVsdDMyKCgqcDErKyksICgqcDItLSkpOw0KKwkJTF90bXAgLT0gdm9fbXVsdDMyKCgqcDErKyksICgqcDItLSkpOw0KKwkJTF90bXAgLT0gdm9fbXVsdDMyKCgqcDErKyksICgqcDItLSkpOw0KKwkJTF90bXAgLT0gdm9fbXVsdDMyKCgqcDErKyksICgqcDItLSkpOw0KKwkJTF90bXAgLT0gdm9fbXVsdDMyKCgqcDErKyksICgqcDItLSkpOw0KKwkJTF90bXAgLT0gdm9fbXVsdDMyKCgqcDErKyksICgqcDItLSkpOw0KKwkJTF90bXAgLT0gdm9fbXVsdDMyKCgqcDErKyksICgqcDItLSkpOw0KKwkJTF90bXAgLT0gdm9fbXVsdDMyKCgqcDErKyksICgqcDItLSkpOw0KKwkJTF90bXAgLT0gdm9fbXVsdDMyKCgqcDErKyksICgqcDItLSkpOw0KKwkJTF90bXAgLT0gdm9fbXVsdDMyKCgqcDErKyksICgqcDItLSkpOw0KKwkJTF90bXAgLT0gdm9fbXVsdDMyKCgqcDErKyksICgqcDItLSkpOw0KKwkJTF90bXAgLT0gdm9fbXVsdDMyKCgqcDErKyksICgqcDItLSkpOw0KKwkJTF90bXAgLT0gdm9fbXVsdDMyKCgqcDErKyksICgqcDItLSkpOw0KKwkJTF90bXAgLT0gdm9fbXVsdDMyKCgqcDErKyksICgqcDItLSkpOw0KKwkJTF90bXAgLT0gdm9fbXVsdDMyKCgqcDEpLCAoKnAyKSk7DQorDQorCQlMX3RtcCA9IExfc2hsMihMX3RtcCwgNCk7DQorCQl5W2ldID0geXlbaV0gPSBleHRyYWN0X2goTF9hZGQoTF90bXAsIDB4ODAwMCkpOyAgDQorCX0NCisJLyogVXBkYXRlIG1lbW9yeSBpZiByZXF1aXJlZCAqLw0KKwlpZiAodXBkYXRlKQ0KKwkJZm9yIChpID0gMDsgaSA8IDE2OyBpKyspDQorCQl7DQorCQkJbWVtW2ldID0geXlbbGcgLSAxNiArIGldOw0KKwkJfQ0KKwlyZXR1cm47DQorfQ0KKw0KKw0KK3ZvaWQgU3luX2ZpbHRfMzIoDQorCQlXb3JkMTYgYVtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRMTIgOiBhW20rMV0gcHJlZGljdGlvbiBjb2VmZmljaWVudHMgKi8NCisJCVdvcmQxNiBtLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IG9yZGVyIG9mIExQIGZpbHRlciAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IGV4Y1tdLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUW5ldzogZXhjaXRhdGlvbiAoZXhjW2ldID4+IFFuZXcpICAgICovDQorCQlXb3JkMTYgUW5ldywgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBleGMgc2NhbGluZyA9IDAobWluKSB0byA4KG1heCkgKi8NCisJCVdvcmQxNiBzaWdfaGlbXSwgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIC8xNiA6IHN5bnRoZXNpcyBoaWdoICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IHNpZ19sb1tdLCAgICAgICAgICAgICAgICAgICAgICAvKiAobykgLzE2IDogc3ludGhlc2lzIGxvdyAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgbGcgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBzaXplIG9mIGZpbHRlcmluZyAgICAgICAgICAgICAgKi8NCisJCSkNCit7DQorCVdvcmQzMiBpLGEwOw0KKwlXb3JkMzIgTF90bXAsIExfdG1wMTsNCisJV29yZDE2ICpwMSwgKnAyLCAqcDM7DQorCWEwID0gYVswXSA+PiAoNCArIFFuZXcpOyAgICAgICAgICAvKiBpbnB1dCAvIDE2IGFuZCA+PlFuZXcgKi8NCisJLyogRG8gdGhlIGZpbHRlcmluZy4gKi8NCisJZm9yIChpID0gMDsgaSA8IGxnOyBpKyspDQorCXsNCisJCUxfdG1wICA9IDA7IA0KKwkJTF90bXAxID0gMDsNCisJCXAxID0gYTsNCisJCXAyID0gJnNpZ19sb1tpIC0gMV07DQorCQlwMyA9ICZzaWdfaGlbaSAtIDFdOw0KKw0KKwkJTF90bXAgIC09IHZvX211bHQzMigoKnAyLS0pLCAoKnAxKSk7DQorCQlMX3RtcDEgLT0gdm9fbXVsdDMyKCgqcDMtLSksICgqcDErKykpOw0KKwkJTF90bXAgIC09IHZvX211bHQzMigoKnAyLS0pLCAoKnAxKSk7DQorCQlMX3RtcDEgLT0gdm9fbXVsdDMyKCgqcDMtLSksICgqcDErKykpOw0KKwkJTF90bXAgIC09IHZvX211bHQzMigoKnAyLS0pLCAoKnAxKSk7DQorCQlMX3RtcDEgLT0gdm9fbXVsdDMyKCgqcDMtLSksICgqcDErKykpOw0KKwkJTF90bXAgIC09IHZvX211bHQzMigoKnAyLS0pLCAoKnAxKSk7DQorCQlMX3RtcDEgLT0gdm9fbXVsdDMyKCgqcDMtLSksICgqcDErKykpOw0KKwkJTF90bXAgIC09IHZvX211bHQzMigoKnAyLS0pLCAoKnAxKSk7DQorCQlMX3RtcDEgLT0gdm9fbXVsdDMyKCgqcDMtLSksICgqcDErKykpOw0KKwkJTF90bXAgIC09IHZvX211bHQzMigoKnAyLS0pLCAoKnAxKSk7DQorCQlMX3RtcDEgLT0gdm9fbXVsdDMyKCgqcDMtLSksICgqcDErKykpOw0KKwkJTF90bXAgIC09IHZvX211bHQzMigoKnAyLS0pLCAoKnAxKSk7DQorCQlMX3RtcDEgLT0gdm9fbXVsdDMyKCgqcDMtLSksICgqcDErKykpOw0KKwkJTF90bXAgIC09IHZvX211bHQzMigoKnAyLS0pLCAoKnAxKSk7DQorCQlMX3RtcDEgLT0gdm9fbXVsdDMyKCgqcDMtLSksICgqcDErKykpOw0KKwkJTF90bXAgIC09IHZvX211bHQzMigoKnAyLS0pLCAoKnAxKSk7DQorCQlMX3RtcDEgLT0gdm9fbXVsdDMyKCgqcDMtLSksICgqcDErKykpOw0KKwkJTF90bXAgIC09IHZvX211bHQzMigoKnAyLS0pLCAoKnAxKSk7DQorCQlMX3RtcDEgLT0gdm9fbXVsdDMyKCgqcDMtLSksICgqcDErKykpOw0KKwkJTF90bXAgIC09IHZvX211bHQzMigoKnAyLS0pLCAoKnAxKSk7DQorCQlMX3RtcDEgLT0gdm9fbXVsdDMyKCgqcDMtLSksICgqcDErKykpOw0KKwkJTF90bXAgIC09IHZvX211bHQzMigoKnAyLS0pLCAoKnAxKSk7DQorCQlMX3RtcDEgLT0gdm9fbXVsdDMyKCgqcDMtLSksICgqcDErKykpOw0KKwkJTF90bXAgIC09IHZvX211bHQzMigoKnAyLS0pLCAoKnAxKSk7DQorCQlMX3RtcDEgLT0gdm9fbXVsdDMyKCgqcDMtLSksICgqcDErKykpOw0KKwkJTF90bXAgIC09IHZvX211bHQzMigoKnAyLS0pLCAoKnAxKSk7DQorCQlMX3RtcDEgLT0gdm9fbXVsdDMyKCgqcDMtLSksICgqcDErKykpOw0KKwkJTF90bXAgIC09IHZvX211bHQzMigoKnAyLS0pLCAoKnAxKSk7DQorCQlMX3RtcDEgLT0gdm9fbXVsdDMyKCgqcDMtLSksICgqcDErKykpOw0KKwkJTF90bXAgIC09IHZvX211bHQzMigoKnAyLS0pLCAoKnAxKSk7DQorCQlMX3RtcDEgLT0gdm9fbXVsdDMyKCgqcDMtLSksICgqcDErKykpOw0KKw0KKwkJTF90bXAgPSBMX3RtcCA+PiAxMTsgICAgICANCisJCUxfdG1wICs9IHZvX0xfbXVsdChleGNbaV0sIGEwKTsNCisNCisJCS8qIHNpZ19oaSA9IGJpdDE2IHRvIGJpdDMxIG9mIHN5bnRoZXNpcyAqLw0KKwkJTF90bXAgPSBMX3RtcCAtIChMX3RtcDE8PDEpOw0KKw0KKwkJTF90bXAgPSBMX3RtcCA+PiAzOyAgICAgICAgICAgLyogYWkgaW4gUTEyICovDQorCQlzaWdfaGlbaV0gPSBleHRyYWN0X2goTF90bXApOyAgICAgIA0KKw0KKwkJLyogc2lnX2xvID0gYml0NCB0byBiaXQxNSBvZiBzeW50aGVzaXMgKi8NCisJCUxfdG1wID4+PSA0OyAgICAgICAgICAgLyogNCA6IHNpZ19sb1tpXSA+PiA0ICovDQorCQlzaWdfbG9baV0gPSAoV29yZDE2KSgoTF90bXAgLSAoc2lnX2hpW2ldIDw8IDEzKSkpOyAgDQorCX0NCisNCisJcmV0dXJuOw0KK30NCisNCisNCisNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL3VwZHRfdGFyLmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL3VwZHRfdGFyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjNlNTY1MAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvdXBkdF90YXIuYwpAQCAtMCwwICsxLDQ5IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogICAgICAgRmlsZTogdXBkdF90YXIuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgRGVzY3JpcHRpb246IFVwZGF0ZSB0aGUgdGFyZ2V0IHZlY3RvciBmb3IgY29kZWJvb2sgc2VhcmNoICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaW5jbHVkZSAidHlwZWRlZi5oIg0KKyNpbmNsdWRlICJiYXNpY19vcC5oIg0KKw0KK3ZvaWQgVXBkdF90YXIoDQorCQlXb3JkMTYgKiB4LCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRMCAgOiBvbGQgdGFyZ2V0IChmb3IgcGl0Y2ggc2VhcmNoKSAgICAgKi8NCisJCVdvcmQxNiAqIHgyLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIFEwICA6IG5ldyB0YXJnZXQgKGZvciBjb2RlYm9vayBzZWFyY2gpICAqLw0KKwkJV29yZDE2ICogeSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTAgIDogZmlsdGVyZWQgYWRhcHRpdmUgY29kZWJvb2sgdmVjdG9yICovDQorCQlXb3JkMTYgZ2FpbiwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRMTQgOiBhZGFwdGl2ZSBjb2RlYm9vayBnYWluICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBMICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgICA6IHN1YmZyYW1lIHNpemUgICAgICAgICAgICAgICAgICAgICAqLw0KKwkgICAgICkNCit7DQorCVdvcmQzMiBpOw0KKwlXb3JkMzIgTF90bXA7DQorDQorCWZvciAoaSA9IDA7IGkgPCBMOyBpKyspDQorCXsNCisJCUxfdG1wID0geFtpXSA8PCAxNTsNCisJCUxfdG1wIC09ICh5W2ldICogZ2Fpbik8PDE7DQorCQl4MltpXSA9IGV4dHJhY3RfaChMX3NobDIoTF90bXAsIDEpKTsgDQorCX0NCisNCisJcmV0dXJuOw0KK30NCisNCisNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL3V0aWwuYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvdXRpbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4MTQxZGQKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL3V0aWwuYwpAQCAtMCwwICsxLDc0IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogICAgICAgRmlsZTogdXRpbC5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgRGVzY3JpcHRpb246IFJlc2V0IGFuZCBDb3B5IGJ1ZmZlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaW5jbHVkZSAidHlwZWRlZi5oIg0KKyNpbmNsdWRlICJiYXNpY19vcC5oIg0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogRnVuY3Rpb246ICBTZXRfemVybygpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogRGVzY3JpcHRpb246IFNldCB2ZWN0b3IgeFtdIHRvIHplcm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCit2b2lkIFNldF96ZXJvKA0KKwkJV29yZDE2IHhbXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAobykgICAgOiB2ZWN0b3IgdG8gY2xlYXIgICAgICovDQorCQlXb3JkMTYgTCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICA6IGxlbmd0aCBvZiB2ZWN0b3IgICAgKi8NCisJICAgICApDQorew0KKwlXb3JkMzIgbnVtID0gKFdvcmQzMilMOw0KKwlkb3sNCisJCSp4KysgPSAwOw0KKwl9d2hpbGUoLS1udW0gIT0wKTsNCit9DQorDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogRnVuY3Rpb246IENvcHkoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiBEZXNjcmlwdGlvbjogQ29weSB2ZWN0b3IgeFtdIHRvIHlbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCit2b2lkIENvcHkoDQorCQlXb3JkMTYgeFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgIDogaW5wdXQgdmVjdG9yICAgKi8NCisJCVdvcmQxNiB5W10sICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pICAgOiBvdXRwdXQgdmVjdG9yICAqLw0KKwkJV29yZDE2IEwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgICA6IHZlY3RvciBsZW5ndGggICovDQorCSApDQorew0KKwlXb3JkMzIJdGVtcDEsdGVtcDIsbnVtOw0KKwlpZihMJjEpDQorCXsNCisJCXRlbXAxID0gKngrKzsNCisJCSp5KysgPSB0ZW1wMTsNCisJfQ0KKwludW0gPSAoV29yZDMyKShMPj4xKTsNCisJdGVtcDEgPSAqeCsrOw0KKwl0ZW1wMiA9ICp4Kys7DQorCWRvew0KKwkJKnkrKyA9IHRlbXAxOw0KKwkJKnkrKyA9IHRlbXAyOw0KKwkJdGVtcDEgPSAqeCsrOw0KKwkJdGVtcDIgPSAqeCsrOw0KKwl9d2hpbGUoLS1udW0hPTApOw0KK30NCisNCisNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL3ZvQU1SV0JFbmMuYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvdm9BTVJXQkVuYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwZDk5YTcKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL3ZvQU1SV0JFbmMuYwpAQCAtMCwwICsxLDE5NDEgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiAgICAgIEZpbGU6IHZvQU1SV0JFbmMuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgIERlc2NyaXB0aW9uOiBQZXJmb3JtcyB0aGUgbWFpbiBlbmNvZGVyIHJvdXRpbmUgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICBGaXhlZC1wb2ludCBDIHNpbXVsYXRpb24gb2YgQU1SIFdCIEFDRUxQIGNvZGluZyAgICAqDQorKgkJICAgIGFsZ29yaXRobSB3aXRoIDIwIG1zc3BlZWNoIGZyYW1lcyBmb3IgICAgICAgICAgICAgICoNCisqCQkgICAgd2lkZWJhbmQgc3BlZWNoIHNpZ25hbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaW5jbHVkZSA8c3RkaW8uaD4NCisjaW5jbHVkZSA8c3RkbGliLmg+DQorI2luY2x1ZGUgInR5cGVkZWYuaCINCisjaW5jbHVkZSAiYmFzaWNfb3AuaCINCisjaW5jbHVkZSAib3Blcl8zMmIuaCINCisjaW5jbHVkZSAibWF0aF9vcC5oIg0KKyNpbmNsdWRlICJjbnN0LmgiDQorI2luY2x1ZGUgImFjZWxwLmgiDQorI2luY2x1ZGUgImNvZF9tYWluLmgiDQorI2luY2x1ZGUgImJpdHMuaCINCisjaW5jbHVkZSAibWFpbi5oIg0KKyNpbmNsdWRlICJ2b0FNUldCLmgiDQorI2luY2x1ZGUgIm1lbV9hbGlnbi5oIg0KKyNpbmNsdWRlICJjbW5NZW1vcnkuaCINCisNCisjaWZkZWYgX19jcGx1c3BsdXMNCitleHRlcm4gIkMiIHsNCisjZW5kaWYNCisNCisvKiBMUEMgaW50ZXJwb2xhdGlvbiBjb2VmIHswLjQ1LCAwLjgsIDAuOTYsIDEuMH07IGluIFExNSAqLw0KK3N0YXRpYyBXb3JkMTYgaW50ZXJwb2xfZnJhY1tOQl9TVUJGUl0gPSB7MTQ3NDYsIDI2MjE0LCAzMTQ1NywgMzI3Njd9Ow0KKw0KKy8qIGlzcCB0YWJsZXMgZm9yIGluaXRpYWxpemF0aW9uICovDQorc3RhdGljIFdvcmQxNiBpc3BfaW5pdFtNXSA9DQorew0KKwkzMjEzOCwgMzAyNzQsIDI3MjQ2LCAyMzE3MCwgMTgyMDUsIDEyNTQwLCA2MzkzLCAwLA0KKwktNjM5MywgLTEyNTQwLCAtMTgyMDUsIC0yMzE3MCwgLTI3MjQ2LCAtMzAyNzQsIC0zMjEzOCwgMTQ3NQ0KK307DQorDQorc3RhdGljIFdvcmQxNiBpc2ZfaW5pdFtNXSA9DQorew0KKwkxMDI0LCAyMDQ4LCAzMDcyLCA0MDk2LCA1MTIwLCA2MTQ0LCA3MTY4LCA4MTkyLA0KKwk5MjE2LCAxMDI0MCwgMTEyNjQsIDEyMjg4LCAxMzMxMiwgMTQzMzYsIDE1MzYwLCAzODQwDQorfTsNCisNCisvKiBIaWdoIEJhbmQgZW5jb2RpbmcgKi8NCitzdGF0aWMgY29uc3QgV29yZDE2IEhQX2dhaW5bMTZdID0NCit7DQorCTM2MjQsIDQ2NzMsIDU1OTcsIDY0NzksIDc0MjUsIDgzNzgsIDkzMjQsIDEwMjY0LA0KKwkxMTIxMCwgMTIyMDYsIDEzMzkxLCAxNDg0NCwgMTY3NzAsIDE5NjU1LCAyNDI4OSwgMzI3MjgNCit9Ow0KKw0KKy8qIFByaXZhdGUgZnVuY3Rpb24gZGVjbGFyYXRpb24gKi8NCitzdGF0aWMgV29yZDE2IHN5bnRoZXNpcygNCisJCQlXb3JkMTYgQXFbXSwgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEEoeikgIDogcXVhbnRpemVkIEF6ICAgICAgICAgICAgICAgKi8NCisJCQlXb3JkMTYgZXhjW10sICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgIDogZXhjaXRhdGlvbiBhdCAxMmtIeiAgICAgICAgKi8NCisJCQlXb3JkMTYgUV9uZXcsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgIDogc2NhbGluZyBwZXJmb3JtZWQgb24gZXhjICAgKi8NCisJCQlXb3JkMTYgc3ludGgxNmtbXSwgICAgICAgICAgICAgICAgICAgIC8qIChvKSAgIDogMTZrSHogc3ludGhlc2lzIHNpZ25hbCAgICAgKi8NCisJCQlDb2Rlcl9TdGF0ZSAqIHN0ICAgICAgICAgICAgICAgICAgICAgIC8qIChpL28pIDogU3RhdGUgc3RydWN0dXJlICAgICAgICAgICAgKi8NCisJCQkpOw0KKw0KKy8qIENvZGVjIHNvbWUgcGFyYW1ldGVycyBpbml0aWFsaXphdGlvbiAqLw0KK3ZvaWQgUmVzZXRfZW5jb2Rlcih2b2lkICpzdCwgV29yZDE2IHJlc2V0X2FsbCkNCit7DQorCVdvcmQxNiBpOw0KKwlDb2Rlcl9TdGF0ZSAqY29kX3N0YXRlOw0KKwljb2Rfc3RhdGUgPSAoQ29kZXJfU3RhdGUgKikgc3Q7DQorCVNldF96ZXJvKGNvZF9zdGF0ZS0+b2xkX2V4YywgUElUX01BWCArIExfSU5URVJQT0wpOw0KKwlTZXRfemVybyhjb2Rfc3RhdGUtPm1lbV9zeW4sIE0pOw0KKwlTZXRfemVybyhjb2Rfc3RhdGUtPnBhc3RfaXNmcSwgTSk7DQorCWNvZF9zdGF0ZS0+bWVtX3cwID0gMDsgICAgICAgICAgICAgICAgIA0KKwljb2Rfc3RhdGUtPnRpbHRfY29kZSA9IDA7ICAgICAgICAgICAgICANCisJY29kX3N0YXRlLT5maXJzdF9mcmFtZSA9IDE7ICAgICAgICAgICAgDQorCUluaXRfZ3BfY2xpcChjb2Rfc3RhdGUtPmdwX2NsaXApOw0KKwljb2Rfc3RhdGUtPkxfZ2NfdGhyZXMgPSAwOyAgICAgICAgICAgICANCisJaWYgKHJlc2V0X2FsbCAhPSAwKQ0KKwl7DQorCQkvKiBTdGF0aWMgdmVjdG9ycyB0byB6ZXJvICovDQorCQlTZXRfemVybyhjb2Rfc3RhdGUtPm9sZF9zcGVlY2gsIExfVE9UQUwgLSBMX0ZSQU1FKTsNCisJCVNldF96ZXJvKGNvZF9zdGF0ZS0+b2xkX3dzcCwgKFBJVF9NQVggLyBPUExfREVDSU0pKTsNCisJCVNldF96ZXJvKGNvZF9zdGF0ZS0+bWVtX2RlY2ltMiwgMyk7DQorCQkvKiByb3V0aW5lcyBpbml0aWFsaXphdGlvbiAqLw0KKwkJSW5pdF9EZWNpbV8xMms4KGNvZF9zdGF0ZS0+bWVtX2RlY2ltKTsNCisJCUluaXRfSFA1MF8xMms4KGNvZF9zdGF0ZS0+bWVtX3NpZ19pbik7DQorCQlJbml0X0xldmluc29uKGNvZF9zdGF0ZS0+bWVtX2xldmluc29uKTsNCisJCUluaXRfUV9nYWluMihjb2Rfc3RhdGUtPnF1YV9nYWluKTsNCisJCUluaXRfSHBfd3NwKGNvZF9zdGF0ZS0+aHBfd3NwX21lbSk7DQorCQkvKiBpc3AgaW5pdGlhbGl6YXRpb24gKi8NCisJCUNvcHkoaXNwX2luaXQsIGNvZF9zdGF0ZS0+aXNwb2xkLCBNKTsNCisJCUNvcHkoaXNwX2luaXQsIGNvZF9zdGF0ZS0+aXNwb2xkX3EsIE0pOw0KKwkJLyogdmFyaWFibGUgaW5pdGlhbGl6YXRpb24gKi8NCisJCWNvZF9zdGF0ZS0+bWVtX3ByZWVtcGggPSAwOyAgICAgICAgDQorCQljb2Rfc3RhdGUtPm1lbV93c3AgPSAwOyAgICAgICAgICAgIA0KKwkJY29kX3N0YXRlLT5RX29sZCA9IDE1OyAgICAgICAgICAgICANCisJCWNvZF9zdGF0ZS0+UV9tYXhbMF0gPSAxNTsgICAgICAgICAgDQorCQljb2Rfc3RhdGUtPlFfbWF4WzFdID0gMTU7ICAgICAgICAgIA0KKwkJY29kX3N0YXRlLT5vbGRfd3NwX21heCA9IDA7ICAgICAgICANCisJCWNvZF9zdGF0ZS0+b2xkX3dzcF9zaGlmdCA9IDA7ICAgICAgDQorCQkvKiBwaXRjaCBvbCBpbml0aWFsaXphdGlvbiAqLw0KKwkJY29kX3N0YXRlLT5vbGRfVDBfbWVkID0gNDA7ICAgICAgICANCisJCWNvZF9zdGF0ZS0+b2xfZ2FpbiA9IDA7ICAgICAgICAgICAgDQorCQljb2Rfc3RhdGUtPmFkYV93ID0gMDsgICAgICAgICAgICAgIA0KKwkJY29kX3N0YXRlLT5vbF93Z2h0X2ZsZyA9IDA7ICAgICAgICANCisJCWZvciAoaSA9IDA7IGkgPCA1OyBpKyspDQorCQl7DQorCQkJY29kX3N0YXRlLT5vbGRfb2xfbGFnW2ldID0gNDA7IA0KKwkJfQ0KKwkJU2V0X3plcm8oY29kX3N0YXRlLT5vbGRfaHBfd3NwLCAoTF9GUkFNRSAvIDIpIC8gT1BMX0RFQ0lNICsgKFBJVF9NQVggLyBPUExfREVDSU0pKTsNCisJCVNldF96ZXJvKGNvZF9zdGF0ZS0+bWVtX3N5bl9oZiwgTSk7DQorCQlTZXRfemVybyhjb2Rfc3RhdGUtPm1lbV9zeW5faGksIE0pOw0KKwkJU2V0X3plcm8oY29kX3N0YXRlLT5tZW1fc3luX2xvLCBNKTsNCisJCUluaXRfSFA1MF8xMms4KGNvZF9zdGF0ZS0+bWVtX3NpZ19vdXQpOw0KKwkJSW5pdF9GaWx0XzZrXzdrKGNvZF9zdGF0ZS0+bWVtX2hmKTsNCisJCUluaXRfSFA0MDBfMTJrOChjb2Rfc3RhdGUtPm1lbV9ocDQwMCk7DQorCQlDb3B5KGlzZl9pbml0LCBjb2Rfc3RhdGUtPmlzZm9sZCwgTSk7DQorCQljb2Rfc3RhdGUtPm1lbV9kZWVtcGggPSAwOyAgICAgICAgIA0KKwkJY29kX3N0YXRlLT5zZWVkMiA9IDIxODQ1OyAgICAgICAgICANCisJCUluaXRfRmlsdF82a183ayhjb2Rfc3RhdGUtPm1lbV9oZjIpOw0KKwkJY29kX3N0YXRlLT5nYWluX2FscGhhID0gMzI3Njc7ICAgICANCisJCWNvZF9zdGF0ZS0+dmFkX2hpc3QgPSAwOw0KKwkJd2JfdmFkX3Jlc2V0KGNvZF9zdGF0ZS0+dmFkU3QpOw0KKwkJZHR4X2VuY19yZXNldChjb2Rfc3RhdGUtPmR0eF9lbmNTdCwgaXNmX2luaXQpOw0KKwl9DQorCXJldHVybjsNCit9DQorDQorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisqICAgRnVudGlvbiAgY29kZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgIH5+fn5+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAtPk1haW4gY29kZXIgcm91dGluZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCit2b2lkIGNvZGVyKA0KKwkJV29yZDE2ICogbW9kZSwgICAgICAgICAgICAgICAgICAgICAgICAvKiBpbnB1dCA6ICB1c2VkIG1vZGUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgc3BlZWNoMTZrW10sICAgICAgICAgICAgICAgICAgIC8qIGlucHV0IDogIDMyMCBuZXcgc3BlZWNoIHNhbXBsZXMgKGF0IDE2IGtIeikgICAgKi8NCisJCVdvcmQxNiBwcm1zW10sICAgICAgICAgICAgICAgICAgICAgICAgLyogb3V0cHV0OiAgb3V0cHV0IHBhcmFtZXRlcnMgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2ICogc2VyX3NpemUsICAgICAgICAgICAgICAgICAgICAvKiBvdXRwdXQ6ICBiaXQgcmF0ZSBvZiB0aGUgdXNlZCBtb2RlICAgICAgICAgICAgICovDQorCQl2b2lkICpzcGVfc3RhdGUsICAgICAgICAgICAgICAgICAgICAgIC8qIGkvbyAgIDogIFN0YXRlIHN0cnVjdHVyZSAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBhbGxvd19kdHggICAgICAgICAgICAgICAgICAgICAgLyogaW5wdXQgOiAgRFRYIE9OL09GRiAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkgICkNCit7DQorCS8qIENvZGVyIHN0YXRlcyAqLw0KKwlDb2Rlcl9TdGF0ZSAqc3Q7DQorCS8qIFNwZWVjaCB2ZWN0b3IgKi8NCisJV29yZDE2IG9sZF9zcGVlY2hbTF9UT1RBTF07DQorCVdvcmQxNiAqbmV3X3NwZWVjaCwgKnNwZWVjaCwgKnBfd2luZG93Ow0KKw0KKwkvKiBXZWlnaHRlZCBzcGVlY2ggdmVjdG9yICovDQorCVdvcmQxNiBvbGRfd3NwW0xfRlJBTUUgKyAoUElUX01BWCAvIE9QTF9ERUNJTSldOw0KKwlXb3JkMTYgKndzcDsNCisNCisJLyogRXhjaXRhdGlvbiB2ZWN0b3IgKi8NCisJV29yZDE2IG9sZF9leGNbKExfRlJBTUUgKyAxKSArIFBJVF9NQVggKyBMX0lOVEVSUE9MXTsNCisJV29yZDE2ICpleGM7DQorDQorCS8qIExQQyBjb2VmZmljaWVudHMgKi8NCisJV29yZDE2IHJfaFtNICsgMV0sIHJfbFtNICsgMV07ICAgICAgICAgLyogQXV0b2NvcnJlbGF0aW9ucyBvZiB3aW5kb3dlZCBzcGVlY2ggICovDQorCVdvcmQxNiByY1tNXTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJlZmxlY3Rpb24gY29lZmZpY2llbnRzLiAgICAgICAgICAgICAqLw0KKwlXb3JkMTYgQXBbTSArIDFdOyAgICAgICAgICAgICAgICAgICAgICAvKiBBKHopIHdpdGggc3BlY3RyYWwgZXhwYW5zaW9uICAgICAgICAgKi8NCisJV29yZDE2IGlzcG5ld1tNXTsgICAgICAgICAgICAgICAgICAgICAgLyogaW1taXR0YW5jZSBzcGVjdHJhbCBwYWlycyBhdCA0bmQgc2ZyICovDQorCVdvcmQxNiBpc3BuZXdfcVtNXTsgICAgICAgICAgICAgICAgICAgIC8qIHF1YW50aXplZCBJU1BzIGF0IDRuZCBzdWJmcmFtZSAgICAgICAqLw0KKwlXb3JkMTYgaXNmW01dOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBJU0YgKGZyZXF1ZW5jeSBkb21haW4pIGF0IDRuZCBzZnIgICAgKi8NCisJV29yZDE2ICpwX0EsICpwX0FxOyAgICAgICAgICAgICAgICAgICAgLyogcHRyIHRvIEEoeikgZm9yIHRoZSA0IHN1YmZyYW1lcyAgICAgICovDQorCVdvcmQxNiBBW05CX1NVQkZSICogKE0gKyAxKV07ICAgICAgICAgIC8qIEEoeikgdW5xdWFudGl6ZWQgZm9yIHRoZSA0IHN1YmZyYW1lcyAqLw0KKwlXb3JkMTYgQXFbTkJfU1VCRlIgKiAoTSArIDEpXTsgICAgICAgICAvKiBBKHopICAgcXVhbnRpemVkIGZvciB0aGUgNCBzdWJmcmFtZXMgKi8NCisNCisJLyogT3RoZXIgdmVjdG9ycyAqLw0KKwlXb3JkMTYgeG5bTF9TVUJGUl07ICAgICAgICAgICAgICAgICAgICAvKiBUYXJnZXQgdmVjdG9yIGZvciBwaXRjaCBzZWFyY2ggICAgICovDQorCVdvcmQxNiB4bjJbTF9TVUJGUl07ICAgICAgICAgICAgICAgICAgIC8qIFRhcmdldCB2ZWN0b3IgZm9yIGNvZGVib29rIHNlYXJjaCAgKi8NCisJV29yZDE2IGRuW0xfU1VCRlJdOyAgICAgICAgICAgICAgICAgICAgLyogQ29ycmVsYXRpb24gYmV0d2VlbiB4bjIgYW5kIGgxICAgICAqLw0KKwlXb3JkMTYgY25bTF9TVUJGUl07ICAgICAgICAgICAgICAgICAgICAvKiBUYXJnZXQgdmVjdG9yIGluIHJlc2lkdWFsIGRvbWFpbiAgICovDQorCVdvcmQxNiBoMVtMX1NVQkZSXTsgICAgICAgICAgICAgICAgICAgIC8qIEltcHVsc2UgcmVzcG9uc2UgdmVjdG9yICAgICAgICAgICAgKi8NCisJV29yZDE2IGgyW0xfU1VCRlJdOyAgICAgICAgICAgICAgICAgICAgLyogSW1wdWxzZSByZXNwb25zZSB2ZWN0b3IgICAgICAgICAgICAqLw0KKwlXb3JkMTYgY29kZVtMX1NVQkZSXTsgICAgICAgICAgICAgICAgICAvKiBGaXhlZCBjb2RlYm9vayBleGNpdGF0aW9uICAgICAgICAgICovDQorCVdvcmQxNiB5MVtMX1NVQkZSXTsgICAgICAgICAgICAgICAgICAgIC8qIEZpbHRlcmVkIGFkYXB0aXZlIGV4Y2l0YXRpb24gICAgICAgKi8NCisJV29yZDE2IHkyW0xfU1VCRlJdOyAgICAgICAgICAgICAgICAgICAgLyogRmlsdGVyZWQgYWRhcHRpdmUgZXhjaXRhdGlvbiAgICAgICAqLw0KKwlXb3JkMTYgZXJyb3JbTSArIExfU1VCRlJdOyAgICAgICAgICAgICAvKiBlcnJvciBvZiBxdWFudGl6YXRpb24gICAgICAgICAgICAgICovDQorCVdvcmQxNiBzeW50aFtMX1NVQkZSXTsgICAgICAgICAgICAgICAgIC8qIDEyLjhrSHogc3ludGhlc2lzIHZlY3RvciAgICAgICAgICAgKi8NCisJV29yZDE2IGV4YzJbTF9GUkFNRV07ICAgICAgICAgICAgICAgICAgLyogZXhjaXRhdGlvbiB2ZWN0b3IgICAgICAgICAgICAgICAgICAqLw0KKwlXb3JkMTYgYnVmW0xfRlJBTUVdOyAgICAgICAgICAgICAgICAgICAvKiBWQUQgYnVmZmVyICAgICAgICAgICAgICAgICAgICAgICAgICovDQorDQorCS8qIFNjYWxhcnMgKi8NCisJV29yZDMyIGksIGosIGlfc3ViZnIsIHNlbGVjdCwgcGl0X2ZsYWcsIGNsaXBfZ2FpbiwgdmFkX2ZsYWc7DQorCVdvcmQxNiBjb2RlY19tb2RlOw0KKwlXb3JkMTYgVF9vcCwgVF9vcDIsIFQwLCBUMF9taW4sIFQwX21heCwgVDBfZnJhYywgaW5kZXg7DQorCVdvcmQxNiBnYWluX3BpdCwgZ2Fpbl9jb2RlLCBnX2NvZWZmWzRdLCBnX2NvZWZmMls0XTsNCisJV29yZDE2IHRtcCwgZ2FpbjEsIGdhaW4yLCBleHAsIFFfbmV3LCBtdSwgc2hpZnQsIG1heDsNCisJV29yZDE2IHZvaWNlX2ZhYzsNCisJV29yZDE2IGluZGljZVs4XTsNCisJV29yZDMyIExfdG1wLCBMX2dhaW5fY29kZSwgTF9tYXgsIExfdG1wMTsNCisJV29yZDE2IGNvZGUyW0xfU1VCRlJdOyAgICAgICAgICAgICAgICAgICAgICAgICAvKiBGaXhlZCBjb2RlYm9vayBleGNpdGF0aW9uICAqLw0KKwlXb3JkMTYgc3RhYl9mYWMsIGZhYywgZ2Fpbl9jb2RlX2xvOw0KKw0KKwlXb3JkMTYgY29ycl9nYWluOw0KKwlXb3JkMTYgKnZvX3AwLCAqdm9fcDEsICp2b19wMiwgKnZvX3AzOw0KKw0KKwlzdCA9IChDb2Rlcl9TdGF0ZSAqKSBzcGVfc3RhdGU7DQorDQorCSpzZXJfc2l6ZSA9IG5iX29mX2JpdHNbKm1vZGVdOyAgICAgICAgIA0KKwljb2RlY19tb2RlID0gKm1vZGU7ICAgICAgICAgICAgICAgICAgICANCisNCisJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJICogICAgICAgICAgSW5pdGlhbGl6ZSBwb2ludGVycyB0byBzcGVlY2ggdmVjdG9yLiAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICogICAgICAgICAgICAgICAgICAgIHwtLS0tLS0tfC0tLS0tLS18LS0tLS0tLXwtLS0tLS0tfC0tLS0tLS18LS0tLS0tLXwgICAgICoNCisJICogICAgICAgICAgICAgICAgICAgICBwYXN0IHNwICAgc2YxICAgICBzZjIgICAgIHNmMyAgICAgc2Y0ICAgIExfTkVYVCAgICAgICoNCisJICogICAgICAgICAgICAgICAgICAgIDwtLS0tLS0tICBUb3RhbCBzcGVlY2ggYnVmZmVyIChMX1RPVEFMKSAgIC0tLS0tLT4gICAgICoNCisJICogICAgICAgICAgICAgIG9sZF9zcGVlY2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICogICAgICAgICAgICAgICAgICAgIDwtLS0tLS0tICBMUEMgYW5hbHlzaXMgd2luZG93IChMX1dJTkRPVykgIC0tLS0tLT4gICAgICoNCisJICogICAgICAgICAgICAgICAgICAgIHwgICAgICAgPC0tIHByZXNlbnQgZnJhbWUgKExfRlJBTUUpIC0tLS0+ICAgICAgICAgICAgICoNCisJICogICAgICAgICAgICAgICAgICAgcF93aW5kb3cgfCAgICAgICA8LS0tLS0gbmV3IHNwZWVjaCAoTF9GUkFNRSkgLS0tLT4gICAgICoNCisJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICogICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWVjaCAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfc3BlZWNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorCW5ld19zcGVlY2ggPSBvbGRfc3BlZWNoICsgTF9UT1RBTCAtIExfRlJBTUUgLSBMX0ZJTFQ7ICAgICAgICAgLyogTmV3IHNwZWVjaCAgICAgKi8NCisJc3BlZWNoID0gb2xkX3NwZWVjaCArIExfVE9UQUwgLSBMX0ZSQU1FIC0gTF9ORVhUOyAgICAgICAgICAgICAvKiBQcmVzZW50IGZyYW1lICAqLw0KKwlwX3dpbmRvdyA9IG9sZF9zcGVlY2ggKyBMX1RPVEFMIC0gTF9XSU5ET1c7IA0KKw0KKwlleGMgPSBvbGRfZXhjICsgUElUX01BWCArIExfSU5URVJQT0w7ICANCisJd3NwID0gb2xkX3dzcCArIChQSVRfTUFYIC8gT1BMX0RFQ0lNKTsgDQorDQorCS8qIGNvcHkgY29kZXIgbWVtb3J5IHN0YXRlIGludG8gd29ya2luZyBzcGFjZSAqLw0KKwlDb3B5KHN0LT5vbGRfc3BlZWNoLCBvbGRfc3BlZWNoLCBMX1RPVEFMIC0gTF9GUkFNRSk7DQorCUNvcHkoc3QtPm9sZF93c3AsIG9sZF93c3AsIFBJVF9NQVggLyBPUExfREVDSU0pOw0KKwlDb3B5KHN0LT5vbGRfZXhjLCBvbGRfZXhjLCBQSVRfTUFYICsgTF9JTlRFUlBPTCk7DQorDQorCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkgKiBEb3duIHNhbXBsaW5nIHNpZ25hbCBmcm9tIDE2a0h6IHRvIDEyLjhrSHogICAgICAgICAgICAgICAgICAgICoNCisJICogLT4gVGhlIHNpZ25hbCBpcyBleHRlbmRlZCBieSBMX0ZJTFQgc2FtcGxlcyAocGFkZGVkIHRvIHplcm8pICAqDQorCSAqIHRvIGF2b2lkIGFkZGl0aW9uYWwgZGVsYXkgKExfRklMVCBzYW1wbGVzKSBpbiB0aGUgY29kZXIuICAgICAgKg0KKwkgKiBUaGUgbGFzdCBMX0ZJTFQgc2FtcGxlcyBhcmUgYXBwcm94aW1hdGVkIGFmdGVyIGRlY2ltYXRpb24gYW5kICoNCisJICogYXJlIHVzZWQgKGFuZCB3aW5kb3dlZCkgb25seSBpbiBhdXRvY29ycmVsYXRpb25zLiAgICAgICAgICAgICAqDQorCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisJRGVjaW1fMTJrOChzcGVlY2gxNmssIExfRlJBTUUxNmssIG5ld19zcGVlY2gsIHN0LT5tZW1fZGVjaW0pOw0KKw0KKwkvKiBsYXN0IExfRklMVCBzYW1wbGVzIGZvciBhdXRvY29ycmVsYXRpb24gd2luZG93ICovDQorCUNvcHkoc3QtPm1lbV9kZWNpbSwgY29kZSwgMiAqIExfRklMVDE2ayk7DQorCVNldF96ZXJvKGVycm9yLCBMX0ZJTFQxNmspOyAgICAgICAgICAgIC8qIHNldCBuZXh0IHNhbXBsZSB0byB6ZXJvICovDQorCURlY2ltXzEyazgoZXJyb3IsIExfRklMVDE2aywgbmV3X3NwZWVjaCArIExfRlJBTUUsIGNvZGUpOw0KKw0KKwkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJICogUGVyZm9ybSA1MEh6IEhQIGZpbHRlcmluZyBvZiBpbnB1dCBzaWduYWwuICAgICAgICAgICAgICAgICAgICAqDQorCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisNCisJSFA1MF8xMms4KG5ld19zcGVlY2gsIExfRlJBTUUsIHN0LT5tZW1fc2lnX2luKTsNCisNCisJLyogbGFzdCBMX0ZJTFQgc2FtcGxlcyBmb3IgYXV0b2NvcnJlbGF0aW9uIHdpbmRvdyAqLw0KKwlDb3B5KHN0LT5tZW1fc2lnX2luLCBjb2RlLCA2KTsNCisJSFA1MF8xMms4KG5ld19zcGVlY2ggKyBMX0ZSQU1FLCBMX0ZJTFQsIGNvZGUpOw0KKw0KKwkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJICogUGVyZm9ybSBmaXhlZCBwcmVlbXBoYXNpcyB0aHJvdWdoIDEgLSBnIHpeLTEgICAgICAgICAgICAgICAgICAqDQorCSAqIFNjYWxlIHNpZ25hbCB0byBnZXQgbWF4aW11bSBvZiBwcmVjaXNpb24gaW4gZmlsdGVyaW5nICAgICAgICAgKg0KKwkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorCW11ID0gUFJFRU1QSF9GQUMgPj4gMTsgICAgICAgICAgICAgIC8qIFExNSAtLT4gUTE0ICovDQorDQorCS8qIGdldCBtYXggb2YgbmV3IHByZWVtcGhhc2VkIHNhbXBsZXMgKExfRlJBTUUrTF9GSUxUKSAqLw0KKwlMX3RtcCA9IG5ld19zcGVlY2hbMF0gPDwgMTU7DQorCUxfdG1wIC09IChzdC0+bWVtX3ByZWVtcGggKiBtdSk8PDE7DQorCUxfbWF4ID0gTF9hYnMoTF90bXApOw0KKw0KKwlmb3IgKGkgPSAxOyBpIDwgTF9GUkFNRSArIExfRklMVDsgaSsrKQ0KKwl7DQorCQlMX3RtcCA9IG5ld19zcGVlY2hbaV0gPDwgMTU7DQorCQlMX3RtcCAtPSAobmV3X3NwZWVjaFtpIC0gMV0gKiBtdSk8PDE7DQorCQlMX3RtcCA9IExfYWJzKExfdG1wKTsNCisJCWlmKExfdG1wID4gTF9tYXgpDQorCQl7DQorCQkJTF9tYXggPSBMX3RtcDsgICAgICAgICAgICAgICAgIA0KKwkJfQ0KKwl9DQorDQorCS8qIGdldCBzY2FsaW5nIGZhY3RvciBmb3IgbmV3IGFuZCBwcmV2aW91cyBzYW1wbGVzICovDQorCS8qIGxpbWl0IHNjYWxpbmcgdG8gUV9NQVggdG8ga2VlcCBkeW5hbWljIGZvciByaW5naW5nIGluIGxvdyBzaWduYWwgKi8NCisJLyogbGltaXQgc2NhbGluZyB0byBRX01BWCBhbHNvIHRvIGF2b2lkIGFbMF08MSBpbiBzeW5fZmlsdF8zMiAqLw0KKwl0bXAgPSBleHRyYWN0X2goTF9tYXgpOw0KKwlpZiAodG1wID09IDApDQorCXsNCisJCXNoaWZ0ID0gUV9NQVg7ICAgICAgICAgICAgICAgICAgICAgDQorCX0gZWxzZQ0KKwl7DQorCQlzaGlmdCA9IG5vcm1fcyh0bXApIC0gMTsNCisJCWlmIChzaGlmdCA8IDApDQorCQl7DQorCQkJc2hpZnQgPSAwOyAgICAgICAgICAgICAgICAgICAgIA0KKwkJfQ0KKwkJaWYgKHNoaWZ0ID4gUV9NQVgpDQorCQl7DQorCQkJc2hpZnQgPSBRX01BWDsgICAgICAgICAgICAgICAgIA0KKwkJfQ0KKwl9DQorCVFfbmV3ID0gc2hpZnQ7ICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwlpZiAoUV9uZXcgPiBzdC0+UV9tYXhbMF0pDQorCXsNCisJCVFfbmV3ID0gc3QtPlFfbWF4WzBdOyAgICAgICAgICAgICAgDQorCX0NCisJaWYgKFFfbmV3ID4gc3QtPlFfbWF4WzFdKQ0KKwl7DQorCQlRX25ldyA9IHN0LT5RX21heFsxXTsgICAgICAgICAgICAgIA0KKwl9DQorCWV4cCA9IChRX25ldyAtIHN0LT5RX29sZCk7DQorCXN0LT5RX29sZCA9IFFfbmV3OyAgICAgICAgICAgICAgICAgICAgIA0KKwlzdC0+UV9tYXhbMV0gPSBzdC0+UV9tYXhbMF07ICAgICAgICAgICANCisJc3QtPlFfbWF4WzBdID0gc2hpZnQ7ICAgICAgICAgICAgICAgICAgDQorDQorCS8qIHByZWVtcGhhc2lzIHdpdGggc2NhbGluZyAoTF9GUkFNRStMX0ZJTFQpICovDQorCXRtcCA9IG5ld19zcGVlY2hbTF9GUkFNRSAtIDFdOyAgICAgICAgIA0KKw0KKwlmb3IgKGkgPSBMX0ZSQU1FICsgTF9GSUxUIC0gMTsgaSA+IDA7IGktLSkNCisJew0KKwkJTF90bXAgPSBuZXdfc3BlZWNoW2ldIDw8IDE1Ow0KKwkJTF90bXAgLT0gKG5ld19zcGVlY2hbaSAtIDFdICogbXUpPDwxOw0KKwkJTF90bXAgPSAoTF90bXAgPDwgUV9uZXcpOw0KKwkJbmV3X3NwZWVjaFtpXSA9IHZvX3JvdW5kKExfdG1wKTsgICAgICANCisJfQ0KKw0KKwlMX3RtcCA9IG5ld19zcGVlY2hbMF0gPDwgMTU7DQorCUxfdG1wIC09IChzdC0+bWVtX3ByZWVtcGggKiBtdSk8PDE7DQorCUxfdG1wID0gKExfdG1wIDw8IFFfbmV3KTsNCisJbmV3X3NwZWVjaFswXSA9IHZvX3JvdW5kKExfdG1wKTsgICAgICAgICAgDQorDQorCXN0LT5tZW1fcHJlZW1waCA9IHRtcDsgICAgICAgICAgICAgICAgIA0KKw0KKwkvKiBzY2FsZSBwcmV2aW91cyBzYW1wbGVzIGFuZCBtZW1vcnkgKi8NCisNCisJU2NhbGVfc2lnKG9sZF9zcGVlY2gsIExfVE9UQUwgLSBMX0ZSQU1FIC0gTF9GSUxULCBleHApOw0KKwlTY2FsZV9zaWcob2xkX2V4YywgUElUX01BWCArIExfSU5URVJQT0wsIGV4cCk7DQorCVNjYWxlX3NpZyhzdC0+bWVtX3N5biwgTSwgZXhwKTsNCisJU2NhbGVfc2lnKHN0LT5tZW1fZGVjaW0yLCAzLCBleHApOw0KKwlTY2FsZV9zaWcoJihzdC0+bWVtX3dzcCksIDEsIGV4cCk7DQorCVNjYWxlX3NpZygmKHN0LT5tZW1fdzApLCAxLCBleHApOw0KKw0KKwkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJICogIENhbGwgVkFEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqICBQcmVlbXBoZXNpcyBzY2FsZSBkb3duIHNpZ25hbCBpbiBsb3cgZnJlcXVlbmN5IGFuZCBrZWVwIGR5bmFtaWMgaW4gSEYuKg0KKwkgKiAgVmFkIHdvcmsgc2xpZ2h0bHkgaW4gZnV0dXIgKG5ld19zcGVlY2ggPSBzcGVlY2ggKyBMX05FWFQgLSBMX0ZJTFQpLiAgICoNCisJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKwlDb3B5KG5ld19zcGVlY2gsIGJ1ZiwgTF9GUkFNRSk7DQorDQorI2lmZGVmIEFTTV9PUFQgICAgICAgIC8qIGFzbSBvcHRpbWl6YXRpb24gYnJhbmNoICovDQorCVNjYWxlX3NpZ19vcHQoYnVmLCBMX0ZSQU1FLCAxIC0gUV9uZXcpOw0KKyNlbHNlDQorCVNjYWxlX3NpZyhidWYsIExfRlJBTUUsIDEgLSBRX25ldyk7DQorI2VuZGlmDQorDQorCXZhZF9mbGFnID0gd2JfdmFkKHN0LT52YWRTdCwgYnVmKTsgICAgICAgICAgLyogVm9pY2UgQWN0aXZpdHkgRGV0ZWN0aW9uICovIA0KKwlpZiAodmFkX2ZsYWcgPT0gMCkNCisJew0KKwkJc3QtPnZhZF9oaXN0ID0gKHN0LT52YWRfaGlzdCArIDEpOyAgICAgICAgDQorCX0gZWxzZQ0KKwl7DQorCQlzdC0+dmFkX2hpc3QgPSAwOyAgICAgICAgICAgICANCisJfQ0KKw0KKwkvKiBEVFggcHJvY2Vzc2luZyAqLw0KKwlpZiAoYWxsb3dfZHR4ICE9IDApDQorCXsNCisJCS8qIE5vdGUgdGhhdCBtb2RlIG1heSBjaGFuZ2UgaGVyZSAqLw0KKwkJdHhfZHR4X2hhbmRsZXIoc3QtPmR0eF9lbmNTdCwgdmFkX2ZsYWcsIG1vZGUpOw0KKwkJKnNlcl9zaXplID0gbmJfb2ZfYml0c1sqbW9kZV07IA0KKwl9DQorDQorCWlmKCptb2RlICE9IE1SRFRYKQ0KKwl7DQorCQlQYXJtX3NlcmlhbCh2YWRfZmxhZywgMSwgJnBybXMpOw0KKwl9DQorCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkgKiAgUGVyZm9ybSBMUEMgYW5hbHlzaXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICogIH5+fn5+fn5+fn5+fn5+fn5+fn5+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqICAgLSBhdXRvY29ycmVsYXRpb24gKyBsYWcgd2luZG93aW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiAgIC0gTGV2aW5zb24tZHVyYmluIGFsZ29yaXRobSB0byBmaW5kIGFbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICogICAtIGNvbnZlcnQgYVtdIHRvIGlzcFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqICAgLSBjb252ZXJ0IGlzcFtdIHRvIGlzZltdIGZvciBxdWFudGl6YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiAgIC0gcXVhbnRpemUgYW5kIGNvZGUgdGhlIGlzZltdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICogICAtIGNvbnZlcnQgaXNmW10gdG8gaXNwW10gZm9yIGludGVycG9sYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqICAgLSBmaW5kIHRoZSBpbnRlcnBvbGF0ZWQgSVNQcyBhbmQgY29udmVydCB0byBhW10gZm9yIHRoZSA0IHN1YmZyYW1lcyAgKg0KKwkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorCS8qIExQIGFuYWx5c2lzIGNlbnRlcmVkIGF0IDRuZCBzdWJmcmFtZSAqLw0KKwlBdXRvY29ycihwX3dpbmRvdywgTSwgcl9oLCByX2wpOyAgICAgICAgICAgICAgICAgICAgICAgIC8qIEF1dG9jb3JyZWxhdGlvbnMgKi8NCisJTGFnX3dpbmRvdyhyX2gsIHJfbCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBMYWcgd2luZG93aW5nICAgICovDQorCUxldmluc29uKHJfaCwgcl9sLCBBLCByYywgc3QtPm1lbV9sZXZpbnNvbik7ICAgICAgICAgICAgLyogTGV2aW5zb24gRHVyYmluICAqLw0KKwlBel9pc3AoQSwgaXNwbmV3LCBzdC0+aXNwb2xkKTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIEZyb20gQSh6KSB0byBJU1AgKi8NCisNCisJLyogRmluZCB0aGUgaW50ZXJwb2xhdGVkIElTUHMgYW5kIGNvbnZlcnQgdG8gYVtdIGZvciBhbGwgc3ViZnJhbWVzICovDQorCUludF9pc3Aoc3QtPmlzcG9sZCwgaXNwbmV3LCBpbnRlcnBvbF9mcmFjLCBBKTsNCisNCisJLyogdXBkYXRlIGlzcG9sZFtdIGZvciB0aGUgbmV4dCBmcmFtZSAqLw0KKwlDb3B5KGlzcG5ldywgc3QtPmlzcG9sZCwgTSk7DQorDQorCS8qIENvbnZlcnQgSVNQcyB0byBmcmVxdWVuY3kgZG9tYWluIDAuLjY0MDAgKi8NCisJSXNwX2lzZihpc3BuZXcsIGlzZiwgTSk7DQorDQorCS8qIGNoZWNrIHJlc29uYW5jZSBmb3IgcGl0Y2ggY2xpcHBpbmcgYWxnb3JpdGhtICovDQorCUdwX2NsaXBfdGVzdF9pc2YoaXNmLCBzdC0+Z3BfY2xpcCk7DQorDQorCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJICogIFBlcmZvcm0gUElUQ0hfT0wgYW5hbHlzaXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiAgfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqIC0gRmluZCB0aGUgcmVzaWR1YWwgcmVzW10gZm9yIHRoZSB3aG9sZSBzcGVlY2ggZnJhbWUgICAgICAgICAgICAgICAgICoNCisJICogLSBGaW5kIHRoZSB3ZWlnaHRlZCBpbnB1dCBzcGVlY2ggd3NwW10gZm9yIHRoZSB3aG9sZSBzcGVlY2ggZnJhbWUgICAgKg0KKwkgKiAtIHNjYWxlIHdzcFtdIHRvIGF2b2lkIG92ZXJmbG93IGluIHBpdGNoIGVzdGltYXRpb24gICAgICAgICAgICAgICAgICAqDQorCSAqIC0gRmluZCBvcGVuIGxvb3AgcGl0Y2ggbGFnIGZvciB3aG9sZSBzcGVlY2ggZnJhbWUgICAgICAgICAgICAgICAgICAgICoNCisJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisJcF9BID0gQTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwlmb3IgKGlfc3ViZnIgPSAwOyBpX3N1YmZyIDwgTF9GUkFNRTsgaV9zdWJmciArPSBMX1NVQkZSKQ0KKwl7DQorCQkvKiBXZWlnaHRpbmcgb2YgTFBDIGNvZWZmaWNpZW50cyAqLw0KKwkJV2VpZ2h0X2EocF9BLCBBcCwgR0FNTUExLCBNKTsNCisNCisjaWZkZWYgQVNNX09QVCAgICAgICAgICAgICAgICAgICAgLyogYXNtIG9wdGltaXphdGlvbiBicmFuY2ggKi8NCisJCVJlc2lkdV9vcHQoQXAsICZzcGVlY2hbaV9zdWJmcl0sICZ3c3BbaV9zdWJmcl0sIExfU1VCRlIpOw0KKyNlbHNlDQorCQlSZXNpZHUoQXAsICZzcGVlY2hbaV9zdWJmcl0sICZ3c3BbaV9zdWJmcl0sIExfU1VCRlIpOw0KKyNlbmRpZg0KKw0KKwkJcF9BICs9IChNICsgMSk7ICAgICAgICAgICAgICAgICAgICANCisJfQ0KKw0KKwlEZWVtcGgyKHdzcCwgVElMVF9GQUMsIExfRlJBTUUsICYoc3QtPm1lbV93c3ApKTsNCisNCisJLyogZmluZCBtYXhpbXVtIHZhbHVlIG9uIHdzcFtdIGZvciAxMiBiaXRzIHNjYWxpbmcgKi8NCisJbWF4ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJZm9yIChpID0gMDsgaSA8IExfRlJBTUU7IGkrKykNCisJew0KKwkJdG1wID0gYWJzX3Mod3NwW2ldKTsNCisJCWlmKHRtcCA+IG1heCkNCisJCXsNCisJCQltYXggPSB0bXA7ICAgICAgICAgICAgICAgICAgICAgDQorCQl9DQorCX0NCisJdG1wID0gc3QtPm9sZF93c3BfbWF4OyAgICAgICAgICAgICAgICAgDQorCWlmKG1heCA+IHRtcCkNCisJew0KKwkJdG1wID0gbWF4OyAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0bXAgPSBtYXgod3NwX21heCwgb2xkX3dzcF9tYXgpICovDQorCX0NCisJc3QtPm9sZF93c3BfbWF4ID0gbWF4OyAgICAgICAgICAgICAgICANCisNCisJc2hpZnQgPSBub3JtX3ModG1wKSAtIDM7DQorCWlmIChzaGlmdCA+IDApDQorCXsNCisJCXNoaWZ0ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogc2hpZnQgPSAwLi4tMyAqLw0KKwl9DQorCS8qIGRlY2ltYXRpb24gb2Ygd3NwW10gdG8gc2VhcmNoIHBpdGNoIGluIExGIGFuZCB0byByZWR1Y2UgY29tcGxleGl0eSAqLw0KKwlMUF9EZWNpbTIod3NwLCBMX0ZSQU1FLCBzdC0+bWVtX2RlY2ltMik7DQorDQorCS8qIHNjYWxlIHdzcFtdIGluIDEyIGJpdHMgdG8gYXZvaWQgb3ZlcmZsb3cgKi8NCisjaWZkZWYgIEFTTV9PUFQgICAgICAgICAgICAgICAgICAvKiBhc20gb3B0aW1pemF0aW9uIGJyYW5jaCAqLw0KKwlTY2FsZV9zaWdfb3B0KHdzcCwgTF9GUkFNRSAvIE9QTF9ERUNJTSwgc2hpZnQpOw0KKyNlbHNlDQorCVNjYWxlX3NpZyh3c3AsIExfRlJBTUUgLyBPUExfREVDSU0sIHNoaWZ0KTsNCisjZW5kaWYNCisJLyogc2NhbGUgb2xkX3dzcCAod2FybmluZzogZXhwIG11c3QgYmUgUV9uZXctUV9vbGQpICovDQorCWV4cCA9IGV4cCArIChzaGlmdCAtIHN0LT5vbGRfd3NwX3NoaWZ0KTsNCisJc3QtPm9sZF93c3Bfc2hpZnQgPSBzaGlmdDsNCisNCisJU2NhbGVfc2lnKG9sZF93c3AsIFBJVF9NQVggLyBPUExfREVDSU0sIGV4cCk7DQorCVNjYWxlX3NpZyhzdC0+b2xkX2hwX3dzcCwgUElUX01BWCAvIE9QTF9ERUNJTSwgZXhwKTsNCisNCisJc2NhbGVfbWVtX0hwX3dzcChzdC0+aHBfd3NwX21lbSwgZXhwKTsNCisNCisJLyogRmluZCBvcGVuIGxvb3AgcGl0Y2ggbGFnIGZvciB3aG9sZSBzcGVlY2ggZnJhbWUgKi8NCisNCisJaWYoKnNlcl9zaXplID09IE5CQklUU183aykNCisJew0KKwkJLyogRmluZCBvcGVuIGxvb3AgcGl0Y2ggbGFnIGZvciB3aG9sZSBzcGVlY2ggZnJhbWUgKi8NCisJCVRfb3AgPSBQaXRjaF9tZWRfb2wod3NwLCBzdCwgTF9GUkFNRSAvIE9QTF9ERUNJTSk7DQorCX0gZWxzZQ0KKwl7DQorCQkvKiBGaW5kIG9wZW4gbG9vcCBwaXRjaCBsYWcgZm9yIGZpcnN0IDEvMiBmcmFtZSAqLw0KKwkJVF9vcCA9IFBpdGNoX21lZF9vbCh3c3AsIHN0LCAoTF9GUkFNRS8yKSAvIE9QTF9ERUNJTSk7DQorCX0NCisNCisJaWYoc3QtPm9sX2dhaW4gPiAxOTY2MSkgICAgICAgLyogMC42IGluIFExNSAqLw0KKwl7DQorCQlzdC0+b2xkX1QwX21lZCA9IE1lZF9vbGFnKFRfb3AsIHN0LT5vbGRfb2xfbGFnKTsgICAgICAgDQorCQlzdC0+YWRhX3cgPSAzMjc2NzsgICAgICAgICAgICAgICAgIA0KKwl9IGVsc2UNCisJew0KKwkJc3QtPmFkYV93ID0gdm9fbXVsdChzdC0+YWRhX3csIDI5NDkxKTsNCisJfQ0KKw0KKwlpZihzdC0+YWRhX3cgPCAyNjIxNCkNCisJCXN0LT5vbF93Z2h0X2ZsZyA9IDA7DQorCWVsc2UNCisJCXN0LT5vbF93Z2h0X2ZsZyA9IDE7DQorDQorCXdiX3ZhZF90b25lX2RldGVjdGlvbihzdC0+dmFkU3QsIHN0LT5vbF9nYWluKTsNCisJVF9vcCAqPSBPUExfREVDSU07ICAgICAgICAgICAgICAgICAgICAgDQorDQorCWlmKCpzZXJfc2l6ZSAhPSBOQkJJVFNfN2spDQorCXsNCisJCS8qIEZpbmQgb3BlbiBsb29wIHBpdGNoIGxhZyBmb3Igc2Vjb25kIDEvMiBmcmFtZSAqLw0KKwkJVF9vcDIgPSBQaXRjaF9tZWRfb2wod3NwICsgKChMX0ZSQU1FIC8gMikgLyBPUExfREVDSU0pLCBzdCwgKExfRlJBTUUvMikgLyBPUExfREVDSU0pOw0KKw0KKwkJaWYoc3QtPm9sX2dhaW4gPiAxOTY2MSkgICAvKiAwLjYgaW4gUTE1ICovDQorCQl7DQorCQkJc3QtPm9sZF9UMF9tZWQgPSBNZWRfb2xhZyhUX29wMiwgc3QtPm9sZF9vbF9sYWcpOyAgDQorCQkJc3QtPmFkYV93ID0gMzI3Njc7ICAgICAgICAgICAgIA0KKwkJfSBlbHNlDQorCQl7DQorCQkJc3QtPmFkYV93ID0gbXVsdChzdC0+YWRhX3csIDI5NDkxKTsgDQorCQl9DQorDQorCQlpZihzdC0+YWRhX3cgPCAyNjIxNCkNCisJCQlzdC0+b2xfd2dodF9mbGcgPSAwOw0KKwkJZWxzZQ0KKwkJCXN0LT5vbF93Z2h0X2ZsZyA9IDE7DQorDQorCQl3Yl92YWRfdG9uZV9kZXRlY3Rpb24oc3QtPnZhZFN0LCBzdC0+b2xfZ2Fpbik7DQorDQorCQlUX29wMiAqPSBPUExfREVDSU07ICAgICAgICAgICAgICAgIA0KKw0KKwl9IGVsc2UNCisJew0KKwkJVF9vcDIgPSBUX29wOyAgICAgICAgICAgICAgICAgICAgICANCisJfQ0KKwkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFRYLUNORyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisJaWYoKm1vZGUgPT0gTVJEVFgpICAgICAgICAgICAgLyogQ05HIG1vZGUgKi8NCisJew0KKwkJLyogQnVmZmVyIGlzZidzIGFuZCBlbmVyZ3kgKi8NCisjaWZkZWYgQVNNX09QVCAgICAgICAgICAgICAgICAgICAvKiBhc20gb3B0aW1pemF0aW9uIGJyYW5jaCAqLw0KKwkJUmVzaWR1X29wdCgmQVszICogKE0gKyAxKV0sIHNwZWVjaCwgZXhjLCBMX0ZSQU1FKTsNCisjZWxzZQ0KKwkJUmVzaWR1KCZBWzMgKiAoTSArIDEpXSwgc3BlZWNoLCBleGMsIExfRlJBTUUpOw0KKyNlbmRpZg0KKw0KKwkJZm9yIChpID0gMDsgaSA8IExfRlJBTUU7IGkrKykNCisJCXsNCisJCQlleGMyW2ldID0gc2hyKGV4Y1tpXSwgUV9uZXcpOyAgDQorCQl9DQorDQorCQlMX3RtcCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwkJZm9yIChpID0gMDsgaSA8IExfRlJBTUU7IGkrKykNCisJCQlMX3RtcCArPSAoZXhjMltpXSAqIGV4YzJbaV0pPDwxOw0KKw0KKwkJTF90bXAgPj49IDE7DQorDQorCQlkdHhfYnVmZmVyKHN0LT5kdHhfZW5jU3QsIGlzZiwgTF90bXAsIGNvZGVjX21vZGUpOw0KKw0KKwkJLyogUXVhbnRpemUgYW5kIGNvZGUgdGhlIElTRnMgKi8NCisJCWR0eF9lbmMoc3QtPmR0eF9lbmNTdCwgaXNmLCBleGMyLCAmcHJtcyk7DQorDQorCQkvKiBDb252ZXJ0IElTRnMgdG8gdGhlIGNvc2luZSBkb21haW4gKi8NCisJCUlzZl9pc3AoaXNmLCBpc3BuZXdfcSwgTSk7DQorCQlJc3BfQXooaXNwbmV3X3EsIEFxLCBNLCAwKTsNCisNCisJCWZvciAoaV9zdWJmciA9IDA7IGlfc3ViZnIgPCBMX0ZSQU1FOyBpX3N1YmZyICs9IExfU1VCRlIpDQorCQl7DQorCQkJY29ycl9nYWluID0gc3ludGhlc2lzKEFxLCAmZXhjMltpX3N1YmZyXSwgMCwgJnNwZWVjaDE2a1tpX3N1YmZyICogNSAvIDRdLCBzdCk7DQorCQl9DQorCQlDb3B5KGlzZiwgc3QtPmlzZm9sZCwgTSk7DQorDQorCQkvKiByZXNldCBzcGVlY2ggY29kZXIgbWVtb3JpZXMgKi8NCisJCVJlc2V0X2VuY29kZXIoc3QsIDApOw0KKw0KKwkJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJCSAqIFVwZGF0ZSBzaWduYWwgZm9yIG5leHQgZnJhbWUuICAgICAgICAgICAgICAgICAgICAqDQorCQkgKiAtPiBzYXZlIHBhc3Qgb2Ygc3BlZWNoW10gYW5kIHdzcFtdLiAgICAgICAgICAgICAgKg0KKwkJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorCQlDb3B5KCZvbGRfc3BlZWNoW0xfRlJBTUVdLCBzdC0+b2xkX3NwZWVjaCwgTF9UT1RBTCAtIExfRlJBTUUpOw0KKwkJQ29weSgmb2xkX3dzcFtMX0ZSQU1FIC8gT1BMX0RFQ0lNXSwgc3QtPm9sZF93c3AsIFBJVF9NQVggLyBPUExfREVDSU0pOw0KKw0KKwkJcmV0dXJuOw0KKwl9DQorCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQUNFTFAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKwkvKiBRdWFudGl6ZSBhbmQgY29kZSB0aGUgSVNGcyAqLw0KKw0KKwlpZiAoKnNlcl9zaXplIDw9IE5CQklUU183aykNCisJew0KKwkJUXBpc2ZfMnNfMzZiKGlzZiwgaXNmLCBzdC0+cGFzdF9pc2ZxLCBpbmRpY2UsIDQpOw0KKw0KKwkJUGFybV9zZXJpYWwoaW5kaWNlWzBdLCA4LCAmcHJtcyk7DQorCQlQYXJtX3NlcmlhbChpbmRpY2VbMV0sIDgsICZwcm1zKTsNCisJCVBhcm1fc2VyaWFsKGluZGljZVsyXSwgNywgJnBybXMpOw0KKwkJUGFybV9zZXJpYWwoaW5kaWNlWzNdLCA3LCAmcHJtcyk7DQorCQlQYXJtX3NlcmlhbChpbmRpY2VbNF0sIDYsICZwcm1zKTsNCisJfSBlbHNlDQorCXsNCisJCVFwaXNmXzJzXzQ2Yihpc2YsIGlzZiwgc3QtPnBhc3RfaXNmcSwgaW5kaWNlLCA0KTsNCisNCisJCVBhcm1fc2VyaWFsKGluZGljZVswXSwgOCwgJnBybXMpOw0KKwkJUGFybV9zZXJpYWwoaW5kaWNlWzFdLCA4LCAmcHJtcyk7DQorCQlQYXJtX3NlcmlhbChpbmRpY2VbMl0sIDYsICZwcm1zKTsNCisJCVBhcm1fc2VyaWFsKGluZGljZVszXSwgNywgJnBybXMpOw0KKwkJUGFybV9zZXJpYWwoaW5kaWNlWzRdLCA3LCAmcHJtcyk7DQorCQlQYXJtX3NlcmlhbChpbmRpY2VbNV0sIDUsICZwcm1zKTsNCisJCVBhcm1fc2VyaWFsKGluZGljZVs2XSwgNSwgJnBybXMpOw0KKwl9DQorDQorCS8qIENoZWNrIHN0YWJpbGl0eSBvbiBpc2YgOiBkaXN0YW5jZSBiZXR3ZWVuIG9sZCBpc2YgYW5kIGN1cnJlbnQgaXNmICovDQorDQorCUxfdG1wID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICANCisJZm9yIChpID0gMDsgaSA8IE0gLSAxOyBpKyspDQorCXsNCisJCXRtcCA9IHZvX3N1Yihpc2ZbaV0sIHN0LT5pc2ZvbGRbaV0pOw0KKwkJTF90bXAgKz0gKHRtcCAqIHRtcCk8PDE7DQorCX0NCisNCisJdG1wID0gZXh0cmFjdF9oKExfc2hsMihMX3RtcCwgOCkpOyANCisNCisJdG1wID0gdm9fbXVsdCh0bXAsIDI2MjE0KTsgICAgICAgICAgICAgICAgLyogdG1wID0gTF90bXAqMC44LzI1NiAqLw0KKwl0bXAgPSB2b19zdWIoMjA0ODAsIHRtcCk7ICAgICAgICAgICAgICAgICAvKiAxLjI1IC0gdG1wIChpbiBRMTQpICovDQorDQorCXN0YWJfZmFjID0gc2hsKHRtcCwgMSk7IA0KKw0KKwlpZiAoc3RhYl9mYWMgPCAwKQ0KKwl7DQorCQlzdGFiX2ZhYyA9IDA7ICAgICAgICAgICAgICAgICAgICAgIA0KKwl9DQorCUNvcHkoaXNmLCBzdC0+aXNmb2xkLCBNKTsNCisNCisJLyogQ29udmVydCBJU0ZzIHRvIHRoZSBjb3NpbmUgZG9tYWluICovDQorCUlzZl9pc3AoaXNmLCBpc3BuZXdfcSwgTSk7DQorDQorCWlmIChzdC0+Zmlyc3RfZnJhbWUgIT0gMCkNCisJew0KKwkJc3QtPmZpcnN0X2ZyYW1lID0gMDsgICAgICAgICAgICAgIA0KKwkJQ29weShpc3BuZXdfcSwgc3QtPmlzcG9sZF9xLCBNKTsNCisJfQ0KKwkvKiBGaW5kIHRoZSBpbnRlcnBvbGF0ZWQgSVNQcyBhbmQgY29udmVydCB0byBhW10gZm9yIGFsbCBzdWJmcmFtZXMgKi8NCisNCisJSW50X2lzcChzdC0+aXNwb2xkX3EsIGlzcG5ld19xLCBpbnRlcnBvbF9mcmFjLCBBcSk7DQorDQorCS8qIHVwZGF0ZSBpc3BvbGRbXSBmb3IgdGhlIG5leHQgZnJhbWUgKi8NCisJQ29weShpc3BuZXdfcSwgc3QtPmlzcG9sZF9xLCBNKTsNCisNCisJcF9BcSA9IEFxOw0KKwlmb3IgKGlfc3ViZnIgPSAwOyBpX3N1YmZyIDwgTF9GUkFNRTsgaV9zdWJmciArPSBMX1NVQkZSKQ0KKwl7DQorI2lmZGVmIEFTTV9PUFQgICAgICAgICAgICAgICAvKiBhc20gb3B0aW1pemF0aW9uIGJyYW5jaCAqLw0KKwkJUmVzaWR1X29wdChwX0FxLCAmc3BlZWNoW2lfc3ViZnJdLCAmZXhjW2lfc3ViZnJdLCBMX1NVQkZSKTsNCisjZWxzZQ0KKwkJUmVzaWR1KHBfQXEsICZzcGVlY2hbaV9zdWJmcl0sICZleGNbaV9zdWJmcl0sIExfU1VCRlIpOw0KKyNlbmRpZg0KKwkJcF9BcSArPSAoTSArIDEpOyAgICAgICAgICAgICAgICAgICANCisJfQ0KKw0KKwkvKiBCdWZmZXIgaXNmJ3MgYW5kIGVuZXJneSBmb3IgZHR4IG9uIG5vbi1zcGVlY2ggZnJhbWUgKi8NCisJaWYgKHZhZF9mbGFnID09IDApDQorCXsNCisJCWZvciAoaSA9IDA7IGkgPCBMX0ZSQU1FOyBpKyspDQorCQl7DQorCQkJZXhjMltpXSA9IGV4Y1tpXSA+PiBRX25ldzsNCisJCX0NCisJCUxfdG1wID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgDQorCQlmb3IgKGkgPSAwOyBpIDwgTF9GUkFNRTsgaSsrKQ0KKwkJCUxfdG1wICs9IChleGMyW2ldICogZXhjMltpXSk8PDE7DQorCQlMX3RtcCA+Pj0gMTsNCisNCisJCWR0eF9idWZmZXIoc3QtPmR0eF9lbmNTdCwgaXNmLCBMX3RtcCwgY29kZWNfbW9kZSk7DQorCX0NCisJLyogcmFuZ2UgZm9yIGNsb3NlZCBsb29wIHBpdGNoIHNlYXJjaCBpbiAxc3Qgc3ViZnJhbWUgKi8NCisNCisJVDBfbWluID0gVF9vcCAtIDg7DQorCWlmIChUMF9taW4gPCBQSVRfTUlOKQ0KKwl7DQorCQlUMF9taW4gPSBQSVRfTUlOOyAgICAgICAgICAgICAgICAgIA0KKwl9DQorCVQwX21heCA9IChUMF9taW4gKyAxNSk7DQorDQorCWlmKFQwX21heCA+IFBJVF9NQVgpDQorCXsNCisJCVQwX21heCA9IFBJVF9NQVg7ICAgICAgICAgICAgICAgICAgDQorCQlUMF9taW4gPSBUMF9tYXggLSAxNTsgICAgICAgICAgDQorCX0NCisJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCSAqICAgICAgICAgIExvb3AgZm9yIGV2ZXJ5IHN1YmZyYW1lIGluIHRoZSBhbmFseXNpcyBmcmFtZSAgICAgICAgICAgICAgICAgKg0KKwkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJICogIFRvIGZpbmQgdGhlIHBpdGNoIGFuZCBpbm5vdmF0aW9uIHBhcmFtZXRlcnMuIFRoZSBzdWJmcmFtZSBzaXplIGlzICAgICAqDQorCSAqICBMX1NVQkZSIGFuZCB0aGUgbG9vcCBpcyByZXBlYXRlZCBMX0ZSQU1FL0xfU1VCRlIgdGltZXMuICAgICAgICAgICAgICAgKg0KKwkgKiAgICAgLSBjb21wdXRlIHRoZSB0YXJnZXQgc2lnbmFsIGZvciBwaXRjaCBzZWFyY2ggICAgICAgICAgICAgICAgICAgICAgICoNCisJICogICAgIC0gY29tcHV0ZSBpbXB1bHNlIHJlc3BvbnNlIG9mIHdlaWdodGVkIHN5bnRoZXNpcyBmaWx0ZXIgKGgxW10pICAgICAqDQorCSAqICAgICAtIGZpbmQgdGhlIGNsb3NlZC1sb29wIHBpdGNoIHBhcmFtZXRlcnMgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkgKiAgICAgLSBlbmNvZGUgdGhlIHBpdGNoIGRlYWx5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICogICAgIC0gZmluZCAyIGx0IHByZWRpY3Rpb24gKHdpdGggLyB3aXRob3V0IExQIGZpbHRlciBmb3IgbHQgcHJlZCkgICAgICAqDQorCSAqICAgICAtIGZpbmQgMiBwaXRjaCBnYWlucyBhbmQgY2hvb3NlIHRoZSBiZXN0IGx0IHByZWRpY3Rpb24uICAgICAgICAgICAgKg0KKwkgKiAgICAgLSBmaW5kIHRhcmdldCB2ZWN0b3IgZm9yIGNvZGVib29rIHNlYXJjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICogICAgIC0gdXBkYXRlIHRoZSBpbXB1bHNlIHJlc3BvbnNlIGgxW10gZm9yIGNvZGVib29rIHNlYXJjaCAgICAgICAgICAgICAqDQorCSAqICAgICAtIGNvcnJlbGF0aW9uIGJldHdlZW4gdGFyZ2V0IHZlY3RvciBhbmQgaW1wdWxzZSByZXNwb25zZSAgICAgICAgICAgKg0KKwkgKiAgICAgLSBjb2RlYm9vayBzZWFyY2ggYW5kIGVuY29kaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICogICAgIC0gVlEgb2YgcGl0Y2ggYW5kIGNvZGVib29rIGdhaW5zICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqICAgICAtIGZpbmQgdm9pY2luZyBmYWN0b3IgYW5kIHRpbHQgb2YgY29kZSBmb3IgbmV4dCBzdWJmcmFtZS4gICAgICAgICAgKg0KKwkgKiAgICAgLSB1cGRhdGUgc3RhdGVzIG9mIHdlaWdodGluZyBmaWx0ZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICogICAgIC0gZmluZCBleGNpdGF0aW9uIGFuZCBzeW50aGVzaXMgc3BlZWNoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisJcF9BID0gQTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQorCXBfQXEgPSBBcTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwlmb3IgKGlfc3ViZnIgPSAwOyBpX3N1YmZyIDwgTF9GUkFNRTsgaV9zdWJmciArPSBMX1NVQkZSKQ0KKwl7DQorCQlwaXRfZmxhZyA9IGlfc3ViZnI7ICAgICAgICAgICAgICAgIA0KKwkJaWYgKChpX3N1YmZyID09IDIgKiBMX1NVQkZSKSAmJiAoKnNlcl9zaXplID4gTkJCSVRTXzdrKSkNCisJCXsNCisJCQlwaXRfZmxhZyA9IDA7ICAgICAgICAgICAgICAgICANCisJCQkvKiByYW5nZSBmb3IgY2xvc2VkIGxvb3AgcGl0Y2ggc2VhcmNoIGluIDNyZCBzdWJmcmFtZSAqLw0KKwkJCVQwX21pbiA9IChUX29wMiAtIDgpOw0KKw0KKwkJCWlmIChUMF9taW4gPCBQSVRfTUlOKQ0KKwkJCXsNCisJCQkJVDBfbWluID0gUElUX01JTjsgICAgICAgICAgDQorCQkJfQ0KKwkJCVQwX21heCA9IChUMF9taW4gKyAxNSk7DQorCQkJaWYgKFQwX21heCA+IFBJVF9NQVgpDQorCQkJew0KKwkJCQlUMF9tYXggPSBQSVRfTUFYOyAgICAgICAgIA0KKwkJCQlUMF9taW4gPSAoVDBfbWF4IC0gMTUpOw0KKwkJCX0NCisJCX0NCisJCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCQkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkJICogICAgICAgIEZpbmQgdGhlIHRhcmdldCB2ZWN0b3IgZm9yIHBpdGNoIHNlYXJjaDogICAgICAgICAgICAgICAgICAgICAgICoNCisJCSAqICAgICAgICB+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4gICAgICAgICAgICAgICAgICAgICAgICAqDQorCQkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkJICogICAgICAgICAgICAgfC0tLS0tLXwgIHJlc1tuXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJCSAqIHNwZWVjaFtuXS0tLXwgQSh6KSB8LS0tLS0tLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCQkgKiAgICAgICAgICAgICB8LS0tLS0tfCAgICAgICB8ICAgfC0tLS0tLS0tfCBlcnJvcltuXSAgfC0tLS0tLXwgICAgICAgICAgKg0KKwkJICogICAgICAgICAgICAgICAgICAgemVybyAtLSAoLSktLXwgMS9BKHopIHwtLS0tLS0tLS0tLXwgVyh6KSB8LS0gdGFyZ2V0ICoNCisJCSAqICAgICAgICAgICAgICAgICAgIGV4YyAgICAgICAgICB8LS0tLS0tLS18ICAgICAgICAgICB8LS0tLS0tfCAgICAgICAgICAqDQorCQkgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkJICogSW5zdGVhZCBvZiBzdWJ0cmFjdGluZyB0aGUgemVyby1pbnB1dCByZXNwb25zZSBvZiBmaWx0ZXJzIGZyb20gICAgICAgICoNCisJCSAqIHRoZSB3ZWlnaHRlZCBpbnB1dCBzcGVlY2gsIHRoZSBhYm92ZSBjb25maWd1cmF0aW9uIGlzIHVzZWQgdG8gICAgICAgICAqDQorCQkgKiBjb21wdXRlIHRoZSB0YXJnZXQgdmVjdG9yLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkJICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKwkJZm9yIChpID0gMDsgaSA8IE07IGkrKykNCisJCXsNCisJCQllcnJvcltpXSA9IHZvX3N1YihzcGVlY2hbaSArIGlfc3ViZnIgLSBNXSwgc3QtPm1lbV9zeW5baV0pOw0KKwkJfQ0KKw0KKyNpZmRlZiBBU01fT1BUICAgICAgICAgICAgICAvKiBhc20gb3B0aW1pemF0aW9uIGJyYW5jaCAqLw0KKwkJUmVzaWR1X29wdChwX0FxLCAmc3BlZWNoW2lfc3ViZnJdLCAmZXhjW2lfc3ViZnJdLCBMX1NVQkZSKTsNCisjZWxzZQ0KKwkJUmVzaWR1KHBfQXEsICZzcGVlY2hbaV9zdWJmcl0sICZleGNbaV9zdWJmcl0sIExfU1VCRlIpOw0KKyNlbmRpZg0KKwkJU3luX2ZpbHQocF9BcSwgJmV4Y1tpX3N1YmZyXSwgZXJyb3IgKyBNLCBMX1NVQkZSLCBlcnJvciwgMCk7DQorCQlXZWlnaHRfYShwX0EsIEFwLCBHQU1NQTEsIE0pOw0KKw0KKyNpZmRlZiBBU01fT1BUICAgICAgICAgICAgIC8qIGFzbSBvcHRpbWl6YXRpb24gYnJhbmNoICovDQorCQlSZXNpZHVfb3B0KEFwLCBlcnJvciArIE0sIHhuLCBMX1NVQkZSKTsNCisjZWxzZQ0KKwkJUmVzaWR1KEFwLCBlcnJvciArIE0sIHhuLCBMX1NVQkZSKTsNCisjZW5kaWYNCisJCURlZW1waDIoeG4sIFRJTFRfRkFDLCBMX1NVQkZSLCAmKHN0LT5tZW1fdzApKTsNCisNCisJCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJCSAqIEZpbmQgYXBwcm94LiB0YXJnZXQgaW4gcmVzaWR1YWwgZG9tYWluICJjbltdIiBmb3IgaW5vdmF0aW9uIHNlYXJjaC4gICoNCisJCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorCQkvKiBmaXJzdCBoYWxmOiB4bltdIC0tPiBjbltdICovDQorCQlTZXRfemVybyhjb2RlLCBNKTsNCisJCUNvcHkoeG4sIGNvZGUgKyBNLCBMX1NVQkZSIC8gMik7DQorCQl0bXAgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgDQorCQlQcmVlbXBoMihjb2RlICsgTSwgVElMVF9GQUMsIExfU1VCRlIgLyAyLCAmdG1wKTsNCisJCVdlaWdodF9hKHBfQSwgQXAsIEdBTU1BMSwgTSk7DQorCQlTeW5fZmlsdChBcCxjb2RlICsgTSwgY29kZSArIE0sIExfU1VCRlIgLyAyLCBjb2RlLCAwKTsNCisNCisjaWZkZWYgQVNNX09QVCAgICAgICAgICAgICAgICAvKiBhc20gb3B0aW1pemF0aW9uIGJyYW5jaCAqLw0KKwkJUmVzaWR1X29wdChwX0FxLGNvZGUgKyBNLCBjbiwgTF9TVUJGUiAvIDIpOw0KKyNlbHNlDQorCQlSZXNpZHUocF9BcSxjb2RlICsgTSwgY24sIExfU1VCRlIgLyAyKTsNCisjZW5kaWYNCisNCisJCS8qIHNlY29uZCBoYWxmOiByZXNbXSAtLT4gY25bXSAoYXBwcm94aW1hdGVkIGFuZCBmYXN0ZXIpICovDQorCQlDb3B5KCZleGNbaV9zdWJmciArIChMX1NVQkZSIC8gMildLCBjbiArIChMX1NVQkZSIC8gMiksIExfU1VCRlIgLyAyKTsNCisNCisJCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkJICogQ29tcHV0ZSBpbXB1bHNlIHJlc3BvbnNlLCBoMVtdLCBvZiB3ZWlnaHRlZCBzeW50aGVzaXMgZmlsdGVyICAqIA0KKwkJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKwkJU2V0X3plcm8oZXJyb3IsIE0gKyBMX1NVQkZSKTsNCisJCVdlaWdodF9hKHBfQSwgZXJyb3IgKyBNLCBHQU1NQTEsIE0pOw0KKw0KKwkJdm9fcDAgPSBlcnJvcitNOw0KKwkJdm9fcDMgPSBoMTsNCisJCWZvciAoaSA9IDA7IGkgPCBMX1NVQkZSOyBpKyspDQorCQl7DQorCQkJTF90bXAgPSAqdm9fcDAgPDwgMTQ7ICAgICAgICAvKiB4NCAoUTEyIHRvIFExNCkgKi8NCisJCQl2b19wMSA9IHBfQXEgKyAxOw0KKwkJCXZvX3AyID0gdm9fcDAtMTsNCisJCQlmb3IgKGogPSAxOyBqIDw9IE0vNDsgaisrKQ0KKwkJCXsNCisJCQkJTF90bXAgLT0gKnZvX3AxKysgKiAqdm9fcDItLTsNCisJCQkJTF90bXAgLT0gKnZvX3AxKysgKiAqdm9fcDItLTsNCisJCQkJTF90bXAgLT0gKnZvX3AxKysgKiAqdm9fcDItLTsNCisJCQkJTF90bXAgLT0gKnZvX3AxKysgKiAqdm9fcDItLTsNCisJCQl9DQorCQkJKnZvX3AzKysgPSAqdm9fcDArKyA9IHZvX3JvdW5kKChMX3RtcCA8PDQpKTsNCisJCX0NCisJCS8qIGRlZW1waCB3aXRob3V0IGRpdmlzaW9uIGJ5IDIgLT4gUTE0IHRvIFExNSAqLw0KKwkJdG1wID0gMDsgDQorCQlEZWVtcGgyKGgxLCBUSUxUX0ZBQywgTF9TVUJGUiwgJnRtcCk7ICAgLyogaDEgaW4gUTE0ICovDQorDQorCQkvKiBoMiBpbiBRMTIgZm9yIGNvZGVib29rIHNlYXJjaCAqLw0KKwkJQ29weShoMSwgaDIsIExfU1VCRlIpOw0KKw0KKwkJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCQkgKiBzY2FsZSB4bltdIGFuZCBoMVtdIHRvIGF2b2lkIG92ZXJmbG93IGluIGRvdF9wcm9kdWN0MTIoKSAgICAgICoNCisJCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisjaWZkZWYgIEFTTV9PUFQgICAgICAgICAgICAgICAgICAvKiBhc20gb3B0aW1pemF0aW9uIGJyYW5jaCAqLw0KKwkJU2NhbGVfc2lnX29wdChoMiwgTF9TVUJGUiwgLTIpOw0KKwkJU2NhbGVfc2lnX29wdCh4biwgTF9TVUJGUiwgc2hpZnQpOyAgICAgLyogc2NhbGluZyBvZiB4bltdIHRvIGxpbWl0IGR5bmFtaWMgYXQgMTIgYml0cyAqLw0KKwkJU2NhbGVfc2lnX29wdChoMSwgTF9TVUJGUiwgMSArIHNoaWZ0KTsgIC8qIHNldCBoMVtdIGluIFExNSB3aXRoIHNjYWxpbmcgZm9yIGNvbnZvbHV0aW9uICovDQorI2Vsc2UNCisJCVNjYWxlX3NpZyhoMiwgTF9TVUJGUiwgLTIpOw0KKwkJU2NhbGVfc2lnKHhuLCBMX1NVQkZSLCBzaGlmdCk7ICAgICAvKiBzY2FsaW5nIG9mIHhuW10gdG8gbGltaXQgZHluYW1pYyBhdCAxMiBiaXRzICovDQorCQlTY2FsZV9zaWcoaDEsIExfU1VCRlIsIDEgKyBzaGlmdCk7ICAvKiBzZXQgaDFbXSBpbiBRMTUgd2l0aCBzY2FsaW5nIGZvciBjb252b2x1dGlvbiAqLw0KKyNlbmRpZg0KKwkJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkJICogICAgICAgICAgICAgICAgIENsb3NlZC1sb29wIGZyYWN0aW9uYWwgcGl0Y2ggc2VhcmNoICAgICAgICAgICAgICAgICAgKg0KKwkJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisJCS8qIGZpbmQgY2xvc2VkIGxvb3AgZnJhY3Rpb25hbCBwaXRjaCAgbGFnICovDQorCQlpZigqc2VyX3NpemUgPD0gTkJCSVRTXzlrKQ0KKwkJew0KKwkJCVQwID0gUGl0Y2hfZnI0KCZleGNbaV9zdWJmcl0sIHhuLCBoMSwgVDBfbWluLCBUMF9tYXgsICZUMF9mcmFjLA0KKwkJCQkJcGl0X2ZsYWcsIFBJVF9NSU4sIFBJVF9GUjFfOGIsIExfU1VCRlIpOw0KKw0KKwkJCS8qIGVuY29kZSBwaXRjaCBsYWcgKi8NCisJCQlpZiAocGl0X2ZsYWcgPT0gMCkgICAgICAgICAgICAgLyogaWYgMXN0LzNyZCBzdWJmcmFtZSAqLw0KKwkJCXsNCisJCQkJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJCQkJICogVGhlIHBpdGNoIHJhbmdlIGZvciB0aGUgMXN0LzNyZCBzdWJmcmFtZSBpcyBlbmNvZGVkIHdpdGggICAgICoNCisJCQkJICogOCBiaXRzIGFuZCBpcyBkaXZpZGVkIGFzIGZvbGxvd3M6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJCQkJICogICBQSVRfTUlOIHRvIFBJVF9GUjEtMSAgcmVzb2x1dGlvbiAxLzIgKGZyYWMgPSAwIG9yIDIpICAgICAgICoNCisJCQkJICogICBQSVRfRlIxIHRvIFBJVF9NQVggICAgcmVzb2x1dGlvbiAxICAgKGZyYWMgPSAwKSAgICAgICAgICAgICoNCisJCQkJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorCQkJCWlmIChUMCA8IFBJVF9GUjFfOGIpDQorCQkJCXsNCisJCQkJCWluZGV4ID0gKChUMCA8PCAxKSArIChUMF9mcmFjID4+IDEpIC0gKFBJVF9NSU48PDEpKTsNCisJCQkJfSBlbHNlDQorCQkJCXsNCisJCQkJCWluZGV4ID0gKChUMCAtIFBJVF9GUjFfOGIpICsgKChQSVRfRlIxXzhiIC0gUElUX01JTikqMikpOw0KKwkJCQl9DQorDQorCQkJCVBhcm1fc2VyaWFsKGluZGV4LCA4LCAmcHJtcyk7DQorDQorCQkJCS8qIGZpbmQgVDBfbWluIGFuZCBUMF9tYXggZm9yIHN1YmZyYW1lIDIgYW5kIDQgKi8NCisJCQkJVDBfbWluID0gKFQwIC0gOCk7DQorCQkJCWlmIChUMF9taW4gPCBQSVRfTUlOKQ0KKwkJCQl7DQorCQkJCQlUMF9taW4gPSBQSVRfTUlOOw0KKwkJCQl9DQorCQkJCVQwX21heCA9IFQwX21pbiArIDE1Ow0KKwkJCQlpZiAoVDBfbWF4ID4gUElUX01BWCkNCisJCQkJew0KKwkJCQkJVDBfbWF4ID0gUElUX01BWDsNCisJCQkJCVQwX21pbiA9IChUMF9tYXggLSAxNSk7DQorCQkJCX0NCisJCQl9IGVsc2UNCisJCQl7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaWYgc3ViZnJhbWUgMiBvciA0ICovDQorCQkJCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCQkJCSAqIFRoZSBwaXRjaCByYW5nZSBmb3Igc3ViZnJhbWUgMiBvciA0IGlzIGVuY29kZWQgd2l0aCA1IGJpdHM6ICAqDQorCQkJCSAqICAgVDBfbWluICB0byBUMF9tYXggICAgIHJlc29sdXRpb24gMS8yIChmcmFjID0gMCBvciAyKSAgICAgICAqDQorCQkJCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKwkJCQlpID0gKFQwIC0gVDBfbWluKTsNCisJCQkJaW5kZXggPSAoaSA8PCAxKSArIChUMF9mcmFjID4+IDEpOw0KKw0KKwkJCQlQYXJtX3NlcmlhbChpbmRleCwgNSwgJnBybXMpOw0KKwkJCX0NCisJCX0gZWxzZQ0KKwkJew0KKwkJCVQwID0gUGl0Y2hfZnI0KCZleGNbaV9zdWJmcl0sIHhuLCBoMSwgVDBfbWluLCBUMF9tYXgsICZUMF9mcmFjLA0KKwkJCQkJcGl0X2ZsYWcsIFBJVF9GUjIsIFBJVF9GUjFfOWIsIExfU1VCRlIpOw0KKw0KKwkJCS8qIGVuY29kZSBwaXRjaCBsYWcgKi8NCisJCQlpZiAocGl0X2ZsYWcgPT0gMCkgICAgICAgICAgICAgLyogaWYgMXN0LzNyZCBzdWJmcmFtZSAqLw0KKwkJCXsNCisJCQkJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJCQkJICogVGhlIHBpdGNoIHJhbmdlIGZvciB0aGUgMXN0LzNyZCBzdWJmcmFtZSBpcyBlbmNvZGVkIHdpdGggICAgICoNCisJCQkJICogOSBiaXRzIGFuZCBpcyBkaXZpZGVkIGFzIGZvbGxvd3M6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJCQkJICogICBQSVRfTUlOIHRvIFBJVF9GUjItMSAgcmVzb2x1dGlvbiAxLzQgKGZyYWMgPSAwLDEsMiBvciAzKSAgICoNCisJCQkJICogICBQSVRfRlIyIHRvIFBJVF9GUjEtMSAgcmVzb2x1dGlvbiAxLzIgKGZyYWMgPSAwIG9yIDEpICAgICAgICoNCisJCQkJICogICBQSVRfRlIxIHRvIFBJVF9NQVggICAgcmVzb2x1dGlvbiAxICAgKGZyYWMgPSAwKSAgICAgICAgICAgICoNCisJCQkJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorDQorCQkJCWlmIChUMCA8IFBJVF9GUjIpDQorCQkJCXsNCisJCQkJCWluZGV4ID0gKChUMCA8PCAyKSArIFQwX2ZyYWMpIC0gKFBJVF9NSU4gPDwgMik7DQorCQkJCX0gZWxzZSBpZihUMCA8IFBJVF9GUjFfOWIpDQorCQkJCXsNCisJCQkJCWluZGV4ID0gKCgoKFQwIDw8IDEpICsgKFQwX2ZyYWMgPj4gMSkpIC0gKFBJVF9GUjI8PDEpKSArICgoUElUX0ZSMiAtIFBJVF9NSU4pPDwyKSk7DQorCQkJCX0gZWxzZQ0KKwkJCQl7DQorCQkJCQlpbmRleCA9ICgoKFQwIC0gUElUX0ZSMV85YikgKyAoKFBJVF9GUjIgLSBQSVRfTUlOKTw8MikpICsgKChQSVRfRlIxXzliIC0gUElUX0ZSMik8PDEpKTsNCisJCQkJfQ0KKw0KKwkJCQlQYXJtX3NlcmlhbChpbmRleCwgOSwgJnBybXMpOw0KKw0KKwkJCQkvKiBmaW5kIFQwX21pbiBhbmQgVDBfbWF4IGZvciBzdWJmcmFtZSAyIGFuZCA0ICovDQorDQorCQkJCVQwX21pbiA9IChUMCAtIDgpOw0KKwkJCQlpZiAoVDBfbWluIDwgUElUX01JTikNCisJCQkJew0KKwkJCQkJVDBfbWluID0gUElUX01JTjsgDQorCQkJCX0NCisJCQkJVDBfbWF4ID0gVDBfbWluICsgMTU7DQorDQorCQkJCWlmIChUMF9tYXggPiBQSVRfTUFYKQ0KKwkJCQl7DQorCQkJCQlUMF9tYXggPSBQSVRfTUFYOw0KKwkJCQkJVDBfbWluID0gKFQwX21heCAtIDE1KTsNCisJCQkJfQ0KKwkJCX0gZWxzZQ0KKwkJCXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpZiBzdWJmcmFtZSAyIG9yIDQgKi8NCisJCQkJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJCQkJICogVGhlIHBpdGNoIHJhbmdlIGZvciBzdWJmcmFtZSAyIG9yIDQgaXMgZW5jb2RlZCB3aXRoIDYgYml0czogICoNCisJCQkJICogICBUMF9taW4gIHRvIFQwX21heCAgICAgcmVzb2x1dGlvbiAxLzQgKGZyYWMgPSAwLDEsMiBvciAzKSAgICoNCisJCQkJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorCQkJCWkgPSAoVDAgLSBUMF9taW4pOw0KKwkJCQlpbmRleCA9IChpIDw8IDIpICsgVDBfZnJhYzsNCisJCQkJUGFybV9zZXJpYWwoaW5kZXgsIDYsICZwcm1zKTsNCisJCQl9DQorCQl9DQorDQorCQkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkJICogR2FpbiBjbGlwcGluZyB0ZXN0IHRvIGF2b2lkIHVuc3RhYmxlIHN5bnRoZXNpcyBvbiBmcmFtZSBlcmFzdXJlICoNCisJCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKwkJY2xpcF9nYWluID0gMDsNCisJCWlmKChzdC0+Z3BfY2xpcFswXSA8IDE1NCkgJiYgKHN0LT5ncF9jbGlwWzFdID4gMTQ3NDYpKQ0KKwkJCWNsaXBfZ2FpbiA9IDE7DQorDQorCQkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkJICogLSBmaW5kIHVuaXR5IGdhaW4gcGl0Y2ggZXhjaXRhdGlvbiAoYWRhcHRpdmUgY29kZWJvb2sgZW50cnkpICAgICoNCisJCSAqICAgd2l0aCBmcmFjdGlvbmFsIGludGVycG9sYXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCQkgKiAtIGZpbmQgZmlsdGVyZWQgcGl0Y2ggZXhjLiB5MVtdPWV4Y1tdIGNvbnZvbHZlZCB3aXRoIGgxW10pICAgICAgKg0KKwkJICogLSBjb21wdXRlIHBpdGNoIGdhaW4xICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKwkJLyogZmluZCBwaXRjaCBleGl0YXRpb24gKi8NCisjaWZkZWYgQVNNX09QVCAgICAgICAgICAgICAgICAgIC8qIGFzbSBvcHRpbWl6YXRpb24gYnJhbmNoICovDQorCQlwcmVkX2x0NF9hc20oJmV4Y1tpX3N1YmZyXSwgVDAsIFQwX2ZyYWMsIExfU1VCRlIgKyAxKTsNCisjZWxzZQ0KKwkJUHJlZF9sdDQoJmV4Y1tpX3N1YmZyXSwgVDAsIFQwX2ZyYWMsIExfU1VCRlIgKyAxKTsNCisjZW5kaWYNCisJCWlmICgqc2VyX3NpemUgPiBOQkJJVFNfOWspDQorCQl7DQorI2lmZGVmIEFTTV9PUFQgICAgICAgICAgICAgICAgICAgLyogYXNtIG9wdGltaXphdGlvbiBicmFuY2ggKi8NCisJCQlDb252b2x2ZV9hc20oJmV4Y1tpX3N1YmZyXSwgaDEsIHkxLCBMX1NVQkZSKTsNCisjZWxzZQ0KKwkJCUNvbnZvbHZlKCZleGNbaV9zdWJmcl0sIGgxLCB5MSwgTF9TVUJGUik7DQorI2VuZGlmIA0KKwkJCWdhaW4xID0gR19waXRjaCh4biwgeTEsIGdfY29lZmYsIExfU1VCRlIpOw0KKwkJCS8qIGNsaXAgZ2FpbiBpZiBuZWNlc3NhcnkgdG8gYXZvaWQgcHJvYmxlbSBhdCBkZWNvZGVyICovDQorCQkJaWYgKChjbGlwX2dhaW4gIT0gMCkgJiYgKGdhaW4xID4gR1BfQ0xJUCkpDQorCQkJew0KKwkJCQlnYWluMSA9IEdQX0NMSVA7IA0KKwkJCX0NCisJCQkvKiBmaW5kIGVuZXJneSBvZiBuZXcgdGFyZ2V0IHhuMltdICovDQorCQkJVXBkdF90YXIoeG4sIGRuLCB5MSwgZ2FpbjEsIExfU1VCRlIpOyAgICAgICAvKiBkbiB1c2VkIHRlbXBvcmFyeSAqLw0KKwkJfSBlbHNlDQorCQl7DQorCQkJZ2FpbjEgPSAwOyANCisJCX0NCisJCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCQkgKiAtIGZpbmQgcGl0Y2ggZXhjaXRhdGlvbiBmaWx0ZXJlZCBieSAxc3Qgb3JkZXIgTFAgZmlsdGVyLiAgICAgICAgKg0KKwkJICogLSBmaW5kIGZpbHRlcmVkIHBpdGNoIGV4Yy4geTJbXT1leGNbXSBjb252b2x2ZWQgd2l0aCBoMVtdKSAgICAgICoNCisJCSAqIC0gY29tcHV0ZSBwaXRjaCBnYWluMiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCQkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisJCS8qIGZpbmQgcGl0Y2ggZXhjaXRhdGlvbiB3aXRoIGxwIGZpbHRlciAqLw0KKwkJdm9fcDAgPSBleGMgKyBpX3N1YmZyLTE7DQorCQl2b19wMSA9IGNvZGU7DQorCQkvKiBmaW5kIHBpdGNoIGV4Y2l0YXRpb24gd2l0aCBscCBmaWx0ZXIgKi8NCisJCWZvciAoaSA9IDA7IGkgPCBMX1NVQkZSLzI7IGkrKykNCisJCXsNCisJCQlMX3RtcCA9IDU4OTggKiAqdm9fcDArKzsNCisJCQlMX3RtcDEgPSA1ODk4ICogKnZvX3AwOw0KKwkJCUxfdG1wICs9IDIwOTcyICogKnZvX3AwKys7DQorCQkJTF90bXAxICs9IDIwOTcyICogKnZvX3AwKys7DQorCQkJTF90bXAxICs9IDU4OTggKiAqdm9fcDAtLTsNCisJCQlMX3RtcCArPSA1ODk4ICogKnZvX3AwOw0KKwkJCSp2b19wMSsrID0gKExfdG1wICsgMHg0MDAwKT4+MTU7DQorCQkJKnZvX3AxKysgPSAoTF90bXAxICsgMHg0MDAwKT4+MTU7DQorCQl9DQorDQorI2lmZGVmIEFTTV9PUFQgICAgICAgICAgICAgICAgIC8qIGFzbSBvcHRpbWl6YXRpb24gYnJhbmNoICovDQorCQlDb252b2x2ZV9hc20oY29kZSwgaDEsIHkyLCBMX1NVQkZSKTsNCisjZWxzZQ0KKwkJQ29udm9sdmUoY29kZSwgaDEsIHkyLCBMX1NVQkZSKTsNCisjZW5kaWYgDQorDQorCQlnYWluMiA9IEdfcGl0Y2goeG4sIHkyLCBnX2NvZWZmMiwgTF9TVUJGUik7DQorDQorCQkvKiBjbGlwIGdhaW4gaWYgbmVjZXNzYXJ5IHRvIGF2b2lkIHByb2JsZW0gYXQgZGVjb2RlciAqLw0KKwkJaWYgKChjbGlwX2dhaW4gIT0gMCkgJiYgKGdhaW4yID4gR1BfQ0xJUCkpDQorCQl7DQorCQkJZ2FpbjIgPSBHUF9DTElQOw0KKwkJfQ0KKwkJLyogZmluZCBlbmVyZ3kgb2YgbmV3IHRhcmdldCB4bjJbXSAqLw0KKwkJVXBkdF90YXIoeG4sIHhuMiwgeTIsIGdhaW4yLCBMX1NVQkZSKTsNCisJCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCQkgKiB1c2UgdGhlIGJlc3QgcHJlZGljdGlvbiAobWluaW1pc2UgcXVhZHJhdGljIGVycm9yKS4gICAgICAgICAgICAgKg0KKwkJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorCQlzZWxlY3QgPSAwOyANCisJCWlmKCpzZXJfc2l6ZSA+IE5CQklUU185aykNCisJCXsNCisJCQlMX3RtcCA9IDBMOw0KKwkJCXZvX3AwID0gZG47DQorCQkJdm9fcDEgPSB4bjI7DQorCQkJZm9yIChpID0gMDsgaSA8IExfU1VCRlIvMjsgaSsrKQ0KKwkJCXsNCisJCQkJTF90bXAgKz0gKnZvX3AwICogKnZvX3AwOw0KKwkJCQl2b19wMCsrOw0KKwkJCQlMX3RtcCAtPSAqdm9fcDEgKiAqdm9fcDE7DQorCQkJCXZvX3AxKys7DQorCQkJCUxfdG1wICs9ICp2b19wMCAqICp2b19wMDsNCisJCQkJdm9fcDArKzsNCisJCQkJTF90bXAgLT0gKnZvX3AxICogKnZvX3AxOw0KKwkJCQl2b19wMSsrOw0KKwkJCX0NCisNCisJCQlpZiAoTF90bXAgPD0gMCkNCisJCQl7DQorCQkJCXNlbGVjdCA9IDE7IA0KKwkJCX0NCisJCQlQYXJtX3NlcmlhbChzZWxlY3QsIDEsICZwcm1zKTsNCisJCX0NCisJCWlmIChzZWxlY3QgPT0gMCkNCisJCXsNCisJCQkvKiB1c2UgdGhlIGxwIGZpbHRlciBmb3IgcGl0Y2ggZXhjaXRhdGlvbiBwcmVkaWN0aW9uICovDQorCQkJZ2Fpbl9waXQgPSBnYWluMjsNCisJCQlDb3B5KGNvZGUsICZleGNbaV9zdWJmcl0sIExfU1VCRlIpOw0KKwkJCUNvcHkoeTIsIHkxLCBMX1NVQkZSKTsNCisJCQlDb3B5KGdfY29lZmYyLCBnX2NvZWZmLCA0KTsNCisJCX0gZWxzZQ0KKwkJew0KKwkJCS8qIG5vIGZpbHRlciB1c2VkIGZvciBwaXRjaCBleGNpdGF0aW9uIHByZWRpY3Rpb24gKi8NCisJCQlnYWluX3BpdCA9IGdhaW4xOw0KKwkJCUNvcHkoZG4sIHhuMiwgTF9TVUJGUik7ICAgICAgICAvKiB0YXJnZXQgdmVjdG9yIGZvciBjb2RlYm9vayBzZWFyY2ggKi8NCisJCX0NCisJCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCQkgKiAtIHVwZGF0ZSBjbltdIGZvciBjb2RlYm9vayBzZWFyY2ggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKwkJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorCQlVcGR0X3RhcihjbiwgY24sICZleGNbaV9zdWJmcl0sIGdhaW5fcGl0LCBMX1NVQkZSKTsNCisNCisjaWZkZWYgIEFTTV9PUFQgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhc20gb3B0aW1pemF0aW9uIGJyYW5jaCAqLw0KKwkJU2NhbGVfc2lnX29wdChjbiwgTF9TVUJGUiwgc2hpZnQpOyAgICAgLyogc2NhbGluZyBvZiBjbltdIHRvIGxpbWl0IGR5bmFtaWMgYXQgMTIgYml0cyAqLw0KKyNlbHNlDQorCQlTY2FsZV9zaWcoY24sIExfU1VCRlIsIHNoaWZ0KTsgICAgIC8qIHNjYWxpbmcgb2YgY25bXSB0byBsaW1pdCBkeW5hbWljIGF0IDEyIGJpdHMgKi8NCisjZW5kaWYNCisJCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCQkgKiAtIGluY2x1ZGUgZml4ZWQtZ2FpbiBwaXRjaCBjb250cmlidXRpb24gaW50byBpbXB1bHNlIHJlc3AuIGgxW10gKg0KKwkJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorCQl0bXAgPSAwOw0KKwkJUHJlZW1waChoMiwgc3QtPnRpbHRfY29kZSwgTF9TVUJGUiwgJnRtcCk7DQorDQorCQlpZiAoVDBfZnJhYyA+IDIpDQorCQkJVDAgPSAoVDAgKyAxKTsNCisJCVBpdF9zaHJwKGgyLCBUMCwgUElUX1NIQVJQLCBMX1NVQkZSKTsNCisJCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCQkgKiAtIENvcnJlbGF0aW9uIGJldHdlZW4gdGFyZ2V0IHhuMltdIGFuZCBpbXB1bHNlIHJlc3BvbnNlIGgxW10gICAgKg0KKwkJICogLSBJbm5vdmF0aXZlIGNvZGVib29rIHNlYXJjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKwkJY29yX2hfeChoMiwgeG4yLCBkbik7DQorCQlpZiAoKnNlcl9zaXplIDw9IE5CQklUU183aykNCisJCXsNCisJCQlBQ0VMUF8ydDY0X2Z4KGRuLCBjbiwgaDIsIGNvZGUsIHkyLCBpbmRpY2UpOw0KKw0KKwkJCVBhcm1fc2VyaWFsKGluZGljZVswXSwgMTIsICZwcm1zKTsNCisJCX0gZWxzZSBpZigqc2VyX3NpemUgPD0gTkJCSVRTXzlrKQ0KKwkJew0KKwkJCUFDRUxQXzR0NjRfZngoZG4sIGNuLCBoMiwgY29kZSwgeTIsIDIwLCAqc2VyX3NpemUsIGluZGljZSk7DQorDQorCQkJUGFybV9zZXJpYWwoaW5kaWNlWzBdLCA1LCAmcHJtcyk7DQorCQkJUGFybV9zZXJpYWwoaW5kaWNlWzFdLCA1LCAmcHJtcyk7DQorCQkJUGFybV9zZXJpYWwoaW5kaWNlWzJdLCA1LCAmcHJtcyk7DQorCQkJUGFybV9zZXJpYWwoaW5kaWNlWzNdLCA1LCAmcHJtcyk7DQorCQl9IGVsc2UgaWYoKnNlcl9zaXplIDw9IE5CQklUU18xMmspDQorCQl7DQorCQkJQUNFTFBfNHQ2NF9meChkbiwgY24sIGgyLCBjb2RlLCB5MiwgMzYsICpzZXJfc2l6ZSwgaW5kaWNlKTsNCisNCisJCQlQYXJtX3NlcmlhbChpbmRpY2VbMF0sIDksICZwcm1zKTsNCisJCQlQYXJtX3NlcmlhbChpbmRpY2VbMV0sIDksICZwcm1zKTsNCisJCQlQYXJtX3NlcmlhbChpbmRpY2VbMl0sIDksICZwcm1zKTsNCisJCQlQYXJtX3NlcmlhbChpbmRpY2VbM10sIDksICZwcm1zKTsNCisJCX0gZWxzZSBpZigqc2VyX3NpemUgPD0gTkJCSVRTXzE0aykNCisJCXsNCisJCQlBQ0VMUF80dDY0X2Z4KGRuLCBjbiwgaDIsIGNvZGUsIHkyLCA0NCwgKnNlcl9zaXplLCBpbmRpY2UpOw0KKw0KKwkJCVBhcm1fc2VyaWFsKGluZGljZVswXSwgMTMsICZwcm1zKTsNCisJCQlQYXJtX3NlcmlhbChpbmRpY2VbMV0sIDEzLCAmcHJtcyk7DQorCQkJUGFybV9zZXJpYWwoaW5kaWNlWzJdLCA5LCAmcHJtcyk7DQorCQkJUGFybV9zZXJpYWwoaW5kaWNlWzNdLCA5LCAmcHJtcyk7DQorCQl9IGVsc2UgaWYoKnNlcl9zaXplIDw9IE5CQklUU18xNmspDQorCQl7DQorCQkJQUNFTFBfNHQ2NF9meChkbiwgY24sIGgyLCBjb2RlLCB5MiwgNTIsICpzZXJfc2l6ZSwgaW5kaWNlKTsNCisNCisJCQlQYXJtX3NlcmlhbChpbmRpY2VbMF0sIDEzLCAmcHJtcyk7DQorCQkJUGFybV9zZXJpYWwoaW5kaWNlWzFdLCAxMywgJnBybXMpOw0KKwkJCVBhcm1fc2VyaWFsKGluZGljZVsyXSwgMTMsICZwcm1zKTsNCisJCQlQYXJtX3NlcmlhbChpbmRpY2VbM10sIDEzLCAmcHJtcyk7DQorCQl9IGVsc2UgaWYoKnNlcl9zaXplIDw9IE5CQklUU18xOGspDQorCQl7DQorCQkJQUNFTFBfNHQ2NF9meChkbiwgY24sIGgyLCBjb2RlLCB5MiwgNjQsICpzZXJfc2l6ZSwgaW5kaWNlKTsNCisNCisJCQlQYXJtX3NlcmlhbChpbmRpY2VbMF0sIDIsICZwcm1zKTsNCisJCQlQYXJtX3NlcmlhbChpbmRpY2VbMV0sIDIsICZwcm1zKTsNCisJCQlQYXJtX3NlcmlhbChpbmRpY2VbMl0sIDIsICZwcm1zKTsNCisJCQlQYXJtX3NlcmlhbChpbmRpY2VbM10sIDIsICZwcm1zKTsNCisJCQlQYXJtX3NlcmlhbChpbmRpY2VbNF0sIDE0LCAmcHJtcyk7DQorCQkJUGFybV9zZXJpYWwoaW5kaWNlWzVdLCAxNCwgJnBybXMpOw0KKwkJCVBhcm1fc2VyaWFsKGluZGljZVs2XSwgMTQsICZwcm1zKTsNCisJCQlQYXJtX3NlcmlhbChpbmRpY2VbN10sIDE0LCAmcHJtcyk7DQorCQl9IGVsc2UgaWYoKnNlcl9zaXplIDw9IE5CQklUU18yMGspDQorCQl7DQorCQkJQUNFTFBfNHQ2NF9meChkbiwgY24sIGgyLCBjb2RlLCB5MiwgNzIsICpzZXJfc2l6ZSwgaW5kaWNlKTsNCisNCisJCQlQYXJtX3NlcmlhbChpbmRpY2VbMF0sIDEwLCAmcHJtcyk7DQorCQkJUGFybV9zZXJpYWwoaW5kaWNlWzFdLCAxMCwgJnBybXMpOw0KKwkJCVBhcm1fc2VyaWFsKGluZGljZVsyXSwgMiwgJnBybXMpOw0KKwkJCVBhcm1fc2VyaWFsKGluZGljZVszXSwgMiwgJnBybXMpOw0KKwkJCVBhcm1fc2VyaWFsKGluZGljZVs0XSwgMTAsICZwcm1zKTsNCisJCQlQYXJtX3NlcmlhbChpbmRpY2VbNV0sIDEwLCAmcHJtcyk7DQorCQkJUGFybV9zZXJpYWwoaW5kaWNlWzZdLCAxNCwgJnBybXMpOw0KKwkJCVBhcm1fc2VyaWFsKGluZGljZVs3XSwgMTQsICZwcm1zKTsNCisJCX0gZWxzZQ0KKwkJew0KKwkJCUFDRUxQXzR0NjRfZngoZG4sIGNuLCBoMiwgY29kZSwgeTIsIDg4LCAqc2VyX3NpemUsIGluZGljZSk7DQorDQorCQkJUGFybV9zZXJpYWwoaW5kaWNlWzBdLCAxMSwgJnBybXMpOw0KKwkJCVBhcm1fc2VyaWFsKGluZGljZVsxXSwgMTEsICZwcm1zKTsNCisJCQlQYXJtX3NlcmlhbChpbmRpY2VbMl0sIDExLCAmcHJtcyk7DQorCQkJUGFybV9zZXJpYWwoaW5kaWNlWzNdLCAxMSwgJnBybXMpOw0KKwkJCVBhcm1fc2VyaWFsKGluZGljZVs0XSwgMTEsICZwcm1zKTsNCisJCQlQYXJtX3NlcmlhbChpbmRpY2VbNV0sIDExLCAmcHJtcyk7DQorCQkJUGFybV9zZXJpYWwoaW5kaWNlWzZdLCAxMSwgJnBybXMpOw0KKwkJCVBhcm1fc2VyaWFsKGluZGljZVs3XSwgMTEsICZwcm1zKTsNCisJCX0NCisJCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJCSAqIC0gQWRkIHRoZSBmaXhlZC1nYWluIHBpdGNoIGNvbnRyaWJ1dGlvbiB0byBjb2RlW10uICAgICoNCisJCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorCQl0bXAgPSAwOyANCisJCVByZWVtcGgoY29kZSwgc3QtPnRpbHRfY29kZSwgTF9TVUJGUiwgJnRtcCk7DQorCQlQaXRfc2hycChjb2RlLCBUMCwgUElUX1NIQVJQLCBMX1NVQkZSKTsNCisJCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJCSAqICAtIENvbXB1dGUgdGhlIGZpeGVkIGNvZGVib29rIGdhaW4gICAgICAgICAgICAgICAgICAgICAgICoNCisJCSAqICAtIHF1YW50aXplIGZpeGVkIGNvZGVib29rIGdhaW4gICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorCQlpZigqc2VyX3NpemUgPD0gTkJCSVRTXzlrKQ0KKwkJew0KKwkJCWluZGV4ID0gUV9nYWluMih4biwgeTEsIFFfbmV3ICsgc2hpZnQsIHkyLCBjb2RlLCBnX2NvZWZmLCBMX1NVQkZSLCA2LA0KKwkJCQkJJmdhaW5fcGl0LCAmTF9nYWluX2NvZGUsIGNsaXBfZ2Fpbiwgc3QtPnF1YV9nYWluKTsNCisJCQlQYXJtX3NlcmlhbChpbmRleCwgNiwgJnBybXMpOw0KKwkJfSBlbHNlDQorCQl7DQorCQkJaW5kZXggPSBRX2dhaW4yKHhuLCB5MSwgUV9uZXcgKyBzaGlmdCwgeTIsIGNvZGUsIGdfY29lZmYsIExfU1VCRlIsIDcsDQorCQkJCQkmZ2Fpbl9waXQsICZMX2dhaW5fY29kZSwgY2xpcF9nYWluLCBzdC0+cXVhX2dhaW4pOw0KKwkJCVBhcm1fc2VyaWFsKGluZGV4LCA3LCAmcHJtcyk7DQorCQl9DQorCQkvKiB0ZXN0IHF1YW50aXplZCBnYWluIG9mIHBpdGNoIGZvciBwaXRjaCBjbGlwcGluZyBhbGdvcml0aG0gKi8NCisJCUdwX2NsaXBfdGVzdF9nYWluX3BpdChnYWluX3BpdCwgc3QtPmdwX2NsaXApOw0KKw0KKwkJTF90bXAgPSBMX3NobChMX2dhaW5fY29kZSwgUV9uZXcpOyANCisJCWdhaW5fY29kZSA9IGV4dHJhY3RfaChMX2FkZChMX3RtcCwgMHg4MDAwKSk7DQorDQorCQkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCQkgKiBVcGRhdGUgcGFyYW1ldGVycyBmb3IgdGhlIG5leHQgc3ViZnJhbWUuICAgICAgICAgICAgICAgICAqDQorCQkgKiAtIHRpbHQgb2YgY29kZTogMC4wICh1bnZvaWNlZCkgdG8gMC41ICh2b2ljZWQpICAgICAgICAgICAqDQorCQkgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKwkJLyogZmluZCB2b2ljZSBmYWN0b3IgaW4gUTE1ICgxPXZvaWNlZCwgLTE9dW52b2ljZWQpICovDQorCQlDb3B5KCZleGNbaV9zdWJmcl0sIGV4YzIsIExfU1VCRlIpOw0KKw0KKyNpZmRlZiBBU01fT1BUICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogYXNtIG9wdGltaXphdGlvbiBicmFuY2ggKi8NCisJCVNjYWxlX3NpZ19vcHQoZXhjMiwgTF9TVUJGUiwgc2hpZnQpOw0KKyNlbHNlDQorCQlTY2FsZV9zaWcoZXhjMiwgTF9TVUJGUiwgc2hpZnQpOw0KKyNlbmRpZg0KKwkJdm9pY2VfZmFjID0gdm9pY2VfZmFjdG9yKGV4YzIsIHNoaWZ0LCBnYWluX3BpdCwgY29kZSwgZ2Fpbl9jb2RlLCBMX1NVQkZSKTsNCisJCS8qIHRpbHQgb2YgY29kZSBmb3IgbmV4dCBzdWJmcmFtZTogMC41PXZvaWNlZCwgMD11bnZvaWNlZCAqLw0KKwkJc3QtPnRpbHRfY29kZSA9ICgodm9pY2VfZmFjID4+IDIpICsgODE5Mik7DQorCQkvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJCSAqIC0gVXBkYXRlIGZpbHRlcidzIG1lbW9yeSAibWVtX3cwIiBmb3IgZmluZGluZyB0aGUgICAgKg0KKwkJICogICB0YXJnZXQgdmVjdG9yIGluIHRoZSBuZXh0IHN1YmZyYW1lLiAgICAgICAgICAgICAgICAqDQorCQkgKiAtIEZpbmQgdGhlIHRvdGFsIGV4Y2l0YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJCSAqIC0gRmluZCBzeW50aGVzaXMgc3BlZWNoIHRvIHVwZGF0ZSBtZW1fc3luW10uICAgICAgICAgKg0KKwkJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKwkJLyogeTIgaW4gUTksIGdhaW5fcGl0IGluIFExNCAqLw0KKwkJTF90bXAgPSAoZ2Fpbl9jb2RlICogeTJbTF9TVUJGUiAtIDFdKTw8MTsNCisJCUxfdG1wID0gTF9zaGwoTF90bXAsICg1ICsgc2hpZnQpKTsNCisJCUxfdG1wID0gTF9uZWdhdGUoTF90bXApOw0KKwkJTF90bXAgKz0gKHhuW0xfU1VCRlIgLSAxXSAqIDE2Mzg0KTw8MTsNCisJCUxfdG1wIC09ICh5MVtMX1NVQkZSIC0gMV0gKiBnYWluX3BpdCk8PDE7DQorCQlMX3RtcCA9IExfc2hsKExfdG1wLCAoMSAtIHNoaWZ0KSk7DQorCQlzdC0+bWVtX3cwID0gZXh0cmFjdF9oKExfYWRkKExfdG1wLCAweDgwMDApKTsNCisNCisJCWlmICgqc2VyX3NpemUgPj0gTkJCSVRTXzI0aykNCisJCQlDb3B5KCZleGNbaV9zdWJmcl0sIGV4YzIsIExfU1VCRlIpOw0KKw0KKwkJZm9yIChpID0gMDsgaSA8IExfU1VCRlI7IGkrKykNCisJCXsNCisJCQkvKiBjb2RlIGluIFE5LCBnYWluX3BpdCBpbiBRMTQgKi8NCisJCQlMX3RtcCA9IChnYWluX2NvZGUgKiBjb2RlW2ldKTw8MTsNCisJCQlMX3RtcCA9IChMX3RtcCA8PCA1KTsNCisJCQlMX3RtcCArPSAoZXhjW2kgKyBpX3N1YmZyXSAqIGdhaW5fcGl0KTw8MTsNCisJCQlMX3RtcCA9IExfc2hsMihMX3RtcCwgMSk7IA0KKwkJCWV4Y1tpICsgaV9zdWJmcl0gPSBleHRyYWN0X2goTF9hZGQoTF90bXAsIDB4ODAwMCkpOw0KKwkJfQ0KKw0KKwkJU3luX2ZpbHQocF9BcSwmZXhjW2lfc3ViZnJdLCBzeW50aCwgTF9TVUJGUiwgc3QtPm1lbV9zeW4sIDEpOw0KKw0KKwkJaWYoKnNlcl9zaXplID49IE5CQklUU18yNGspDQorCQl7DQorCQkJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCQkJICogcGhhc2UgZGlzcGVyc2lvbiB0byBlbmhhbmNlIG5vaXNlIGluIGxvdyBiaXQgcmF0ZSAgICAgICAgICAqDQorCQkJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKwkJCS8qIExfZ2Fpbl9jb2RlIGluIFExNiAqLw0KKwkJCVZPX0xfRXh0cmFjdChMX2dhaW5fY29kZSwgJmdhaW5fY29kZSwgJmdhaW5fY29kZV9sbyk7DQorDQorCQkJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCQkJICogbm9pc2UgZW5oYW5jZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCQkJICogfn5+fn5+fn5+fn5+fn4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCQkJICogLSBFbmhhbmNlIGV4Y2l0YXRpb24gb24gbm9pc2UuIChtb2RpZnkgZ2FpbiBvZiBjb2RlKSAgICAgICAqDQorCQkJICogICBJZiBzaWduYWwgaXMgbm9pc3kgYW5kIExQQyBmaWx0ZXIgaXMgc3RhYmxlLCBtb3ZlIGdhaW4gICAqDQorCQkJICogICBvZiBjb2RlIDEuNSBkQiB0b3dhcmQgZ2FpbiBvZiBjb2RlIHRocmVzaG9sZC4gICAgICAgICAgICAqDQorCQkJICogICBUaGlzIGRlY3JlYXNlIGJ5IDMgZEIgbm9pc2UgZW5lcmd5IHZhcmlhdGlvbi4gICAgICAgICAgICAqDQorCQkJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKwkJCXRtcCA9ICgxNjM4NCAtICh2b2ljZV9mYWMgPj4gMSkpOyAgICAgICAgLyogMT11bnZvaWNlZCwgMD12b2ljZWQgKi8NCisJCQlmYWMgPSB2b19tdWx0KHN0YWJfZmFjLCB0bXApOw0KKwkJCUxfdG1wID0gTF9nYWluX2NvZGU7IA0KKwkJCWlmKExfdG1wIDwgc3QtPkxfZ2NfdGhyZXMpDQorCQkJew0KKwkJCQlMX3RtcCA9IHZvX0xfYWRkKExfdG1wLCBNcHlfMzJfMTYoZ2Fpbl9jb2RlLCBnYWluX2NvZGVfbG8sIDYyMjYpKTsNCisJCQkJaWYoTF90bXAgPiBzdC0+TF9nY190aHJlcykNCisJCQkJew0KKwkJCQkJTF90bXAgPSBzdC0+TF9nY190aHJlczsNCisJCQkJfQ0KKwkJCX0gZWxzZQ0KKwkJCXsNCisJCQkJTF90bXAgPSBNcHlfMzJfMTYoZ2Fpbl9jb2RlLCBnYWluX2NvZGVfbG8sIDI3NTM2KTsNCisJCQkJaWYoTF90bXAgPCBzdC0+TF9nY190aHJlcykNCisJCQkJew0KKwkJCQkJTF90bXAgPSBzdC0+TF9nY190aHJlczsNCisJCQkJfQ0KKwkJCX0NCisJCQlzdC0+TF9nY190aHJlcyA9IExfdG1wOw0KKw0KKwkJCUxfZ2Fpbl9jb2RlID0gTXB5XzMyXzE2KGdhaW5fY29kZSwgZ2Fpbl9jb2RlX2xvLCAoMzI3NjcgLSBmYWMpKTsNCisJCQlWT19MX0V4dHJhY3QoTF90bXAsICZnYWluX2NvZGUsICZnYWluX2NvZGVfbG8pOw0KKwkJCUxfZ2Fpbl9jb2RlID0gdm9fTF9hZGQoTF9nYWluX2NvZGUsIE1weV8zMl8xNihnYWluX2NvZGUsIGdhaW5fY29kZV9sbywgZmFjKSk7DQorDQorCQkJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qDQorCQkJICogcGl0Y2ggZW5oYW5jZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCQkJICogfn5+fn5+fn5+fn5+fn4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCQkJICogLSBFbmhhbmNlIGV4Y2l0YXRpb24gb24gdm9pY2UuIChIUCBmaWx0ZXJpbmcgb2YgY29kZSkgICAgICAqDQorCQkJICogICBPbiB2b2ljZWQgc2lnbmFsLCBmaWx0ZXJpbmcgb2YgY29kZSBieSBhIHNtb290aCBmaXIgSFAgICAqDQorCQkJICogICBmaWx0ZXIgdG8gZGVjcmVhc2UgZW5lcmd5IG9mIGNvZGUgaW4gbG93IGZyZXF1ZW5jeS4gICAgICAqDQorCQkJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KKwkJCXRtcCA9ICgodm9pY2VfZmFjID4+IDMpICsgNDA5Nik7IC8qIDAuMjU9dm9pY2VkLCAwPXVudm9pY2VkICovDQorDQorCQkJTF90bXAgPSBMX2RlcG9zaXRfaChjb2RlWzBdKTsNCisJCQlMX3RtcCAtPSAoY29kZVsxXSAqIHRtcCk8PDE7DQorCQkJY29kZTJbMF0gPSB2b19yb3VuZChMX3RtcCk7IA0KKw0KKwkJCWZvciAoaSA9IDE7IGkgPCBMX1NVQkZSIC0gMTsgaSsrKQ0KKwkJCXsNCisJCQkJTF90bXAgPSBMX2RlcG9zaXRfaChjb2RlW2ldKTsNCisJCQkJTF90bXAgLT0gKGNvZGVbaSArIDFdICogdG1wKTw8MTsNCisJCQkJTF90bXAgLT0gKGNvZGVbaSAtIDFdICogdG1wKTw8MTsNCisJCQkJY29kZTJbaV0gPSB2b19yb3VuZChMX3RtcCk7IA0KKwkJCX0NCisNCisJCQlMX3RtcCA9IExfZGVwb3NpdF9oKGNvZGVbTF9TVUJGUiAtIDFdKTsNCisJCQlMX3RtcCAtPSAoY29kZVtMX1NVQkZSIC0gMl0gKiB0bXApPDwxOw0KKwkJCWNvZGUyW0xfU1VCRlIgLSAxXSA9IHZvX3JvdW5kKExfdG1wKTsgDQorDQorCQkJLyogYnVpbGQgZXhjaXRhdGlvbiAqLw0KKwkJCWdhaW5fY29kZSA9IHZvX3JvdW5kKExfc2hsKExfZ2Fpbl9jb2RlLCBRX25ldykpOw0KKw0KKwkJCWZvciAoaSA9IDA7IGkgPCBMX1NVQkZSOyBpKyspDQorCQkJew0KKwkJCQlMX3RtcCA9IChjb2RlMltpXSAqIGdhaW5fY29kZSk8PDE7DQorCQkJCUxfdG1wID0gKExfdG1wIDw8IDUpOw0KKwkJCQlMX3RtcCArPSAoZXhjMltpXSAqIGdhaW5fcGl0KTw8MTsNCisJCQkJTF90bXAgPSAoTF90bXAgPDwgMSk7DQorCQkJCWV4YzJbaV0gPSB2b19yb3VuZChMX3RtcCk7DQorCQkJfQ0KKw0KKwkJCWNvcnJfZ2FpbiA9IHN5bnRoZXNpcyhwX0FxLCBleGMyLCBRX25ldywgJnNwZWVjaDE2a1tpX3N1YmZyICogNSAvIDRdLCBzdCk7DQorCQkJUGFybV9zZXJpYWwoY29ycl9nYWluLCA0LCAmcHJtcyk7DQorCQl9DQorCQlwX0EgKz0gKE0gKyAxKTsNCisJCXBfQXEgKz0gKE0gKyAxKTsNCisJfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogZW5kIG9mIHN1YmZyYW1lIGxvb3AgKi8NCisNCisJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoNCisJICogVXBkYXRlIHNpZ25hbCBmb3IgbmV4dCBmcmFtZS4gICAgICAgICAgICAgICAgICAgICoNCisJICogLT4gc2F2ZSBwYXN0IG9mIHNwZWVjaFtdLCB3c3BbXSBhbmQgZXhjW10uICAgICAgICoNCisJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorCUNvcHkoJm9sZF9zcGVlY2hbTF9GUkFNRV0sIHN0LT5vbGRfc3BlZWNoLCBMX1RPVEFMIC0gTF9GUkFNRSk7DQorCUNvcHkoJm9sZF93c3BbTF9GUkFNRSAvIE9QTF9ERUNJTV0sIHN0LT5vbGRfd3NwLCBQSVRfTUFYIC8gT1BMX0RFQ0lNKTsNCisJQ29weSgmb2xkX2V4Y1tMX0ZSQU1FXSwgc3QtPm9sZF9leGMsIFBJVF9NQVggKyBMX0lOVEVSUE9MKTsNCisJcmV0dXJuOw0KK30NCisNCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKyogRnVuY3Rpb24gc3ludGhlc2lzKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiBTeW50aGVzaXMgb2Ygc2lnbmFsIGF0IDE2a0h6IHdpdGggSEYgZXh0ZW5zaW9uLiAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKw0KK3N0YXRpYyBXb3JkMTYgc3ludGhlc2lzKA0KKwkJV29yZDE2IEFxW10sICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBKHopICA6IHF1YW50aXplZCBBeiAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgZXhjW10sICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgIDogZXhjaXRhdGlvbiBhdCAxMmtIeiAgICAgICAgKi8NCisJCVdvcmQxNiBRX25ldywgICAgICAgICAgICAgICAgICAgICAgICAgLyogKGkpICAgOiBzY2FsaW5nIHBlcmZvcm1lZCBvbiBleGMgICAqLw0KKwkJV29yZDE2IHN5bnRoMTZrW10sICAgICAgICAgICAgICAgICAgICAvKiAobykgICA6IDE2a0h6IHN5bnRoZXNpcyBzaWduYWwgICAgICovDQorCQlDb2Rlcl9TdGF0ZSAqIHN0ICAgICAgICAgICAgICAgICAgICAgIC8qIChpL28pIDogU3RhdGUgc3RydWN0dXJlICAgICAgICAgICAgKi8NCisJCSkNCit7DQorCVdvcmQxNiBmYWMsIHRtcCwgZXhwOw0KKwlXb3JkMTYgZW5lciwgZXhwX2VuZXI7DQorCVdvcmQzMiBMX3RtcCwgaTsNCisNCisJV29yZDE2IHN5bnRoX2hpW00gKyBMX1NVQkZSXSwgc3ludGhfbG9bTSArIExfU1VCRlJdOw0KKwlXb3JkMTYgc3ludGhbTF9TVUJGUl07DQorCVdvcmQxNiBIRltMX1NVQkZSMTZrXTsgICAgICAgICAgICAgICAgIC8qIEhpZ2ggRnJlcXVlbmN5IHZlY3RvciAgICAgICovDQorCVdvcmQxNiBBcFtNICsgMV07DQorDQorCVdvcmQxNiBIRl9TUFtMX1NVQkZSMTZrXTsgICAgICAgICAgICAgIC8qIEhpZ2ggRnJlcXVlbmN5IHZlY3RvciAoZnJvbSBvcmlnaW5hbCBzaWduYWwpICovDQorDQorCVdvcmQxNiBIUF9lc3RfZ2FpbiwgSFBfY2FsY19nYWluLCBIUF9jb3JyX2dhaW47DQorCVdvcmQxNiBkaXN0X21pbiwgZGlzdDsNCisJV29yZDE2IEhQX2dhaW5faW5kID0gMDsNCisJV29yZDE2IGdhaW4xLCBnYWluMjsNCisJV29yZDE2IHdlaWdodDEsIHdlaWdodDI7DQorDQorCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkgKiBzcGVlY2ggc3ludGhlc2lzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICogfn5+fn5+fn5+fn5+fn5+fiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqIC0gRmluZCBzeW50aGVzaXMgc3BlZWNoIGNvcnJlc3BvbmRpbmcgdG8gZXhjMltdLiAgICAgICAgICAgKg0KKwkgKiAtIFBlcmZvcm0gZml4ZWQgZGVlbXBoYXNpcyBhbmQgaHAgNTBoeiBmaWx0ZXJpbmcuICAgICAgICAgICoNCisJICogLSBPdmVyc2FtcGxpbmcgZnJvbSAxMi44a0h6IHRvIDE2a0h6LiAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8NCisJQ29weShzdC0+bWVtX3N5bl9oaSwgc3ludGhfaGksIE0pOw0KKwlDb3B5KHN0LT5tZW1fc3luX2xvLCBzeW50aF9sbywgTSk7DQorDQorI2lmZGVmIEFTTV9PUFQgICAgICAgICAgICAgICAgIC8qIGFzbSBvcHRpbWl6YXRpb24gYnJhbmNoICovDQorCVN5bl9maWx0XzMyX2FzbShBcSwgTSwgZXhjLCBRX25ldywgc3ludGhfaGkgKyBNLCBzeW50aF9sbyArIE0sIExfU1VCRlIpOw0KKyNlbHNlDQorCVN5bl9maWx0XzMyKEFxLCBNLCBleGMsIFFfbmV3LCBzeW50aF9oaSArIE0sIHN5bnRoX2xvICsgTSwgTF9TVUJGUik7DQorI2VuZGlmDQorDQorCUNvcHkoc3ludGhfaGkgKyBMX1NVQkZSLCBzdC0+bWVtX3N5bl9oaSwgTSk7DQorCUNvcHkoc3ludGhfbG8gKyBMX1NVQkZSLCBzdC0+bWVtX3N5bl9sbywgTSk7DQorDQorI2lmZGVmIEFTTV9PUFQgICAgICAgICAgICAgICAgIC8qIGFzbSBvcHRpbWl6YXRpb24gYnJhbmNoICovDQorCURlZW1waF8zMl9hc20oc3ludGhfaGkgKyBNLCBzeW50aF9sbyArIE0sIHN5bnRoLCAmKHN0LT5tZW1fZGVlbXBoKSk7DQorI2Vsc2UNCisJRGVlbXBoXzMyKHN5bnRoX2hpICsgTSwgc3ludGhfbG8gKyBNLCBzeW50aCwgUFJFRU1QSF9GQUMsIExfU1VCRlIsICYoc3QtPm1lbV9kZWVtcGgpKTsNCisjZW5kaWYNCisNCisJSFA1MF8xMms4KHN5bnRoLCBMX1NVQkZSLCBzdC0+bWVtX3NpZ19vdXQpOw0KKw0KKwkvKiBPcmlnaW5hbCBzcGVlY2ggc2lnbmFsIGFzIHJlZmVyZW5jZSBmb3IgaGlnaCBiYW5kIGdhaW4gcXVhbnRpc2F0aW9uICovDQorCWZvciAoaSA9IDA7IGkgPCBMX1NVQkZSMTZrOyBpKyspDQorCXsNCisJCUhGX1NQW2ldID0gc3ludGgxNmtbaV07IA0KKwl9DQorDQorCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkgKiBIRiBub2lzZSBzeW50aGVzaXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoNCisJICogfn5+fn5+fn5+fn5+fn5+fn5+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqIC0gR2VuZXJhdGUgSEYgbm9pc2UgYmV0d2VlbiA1LjUgYW5kIDcuNSBrSHouICAgICAgICAgKg0KKwkgKiAtIFNldCBlbmVyZ3kgb2Ygbm9pc2UgYWNjb3JkaW5nIHRvIHN5bnRoZXNpcyB0aWx0LiAgICoNCisJICogICAgIHRpbHQgPiAwLjggPT0+IC0gMTQgZEIgKHZvaWNlZCkgICAgICAgICAgICAgICAgICAqDQorCSAqICAgICB0aWx0ICAgMC41ID09PiAtIDYgZEIgICh2b2ljZWQgb3Igbm9pc2UpICAgICAgICAgKg0KKwkgKiAgICAgdGlsdCA8IDAuMCA9PT4gICAwIGRCICAobm9pc2UpICAgICAgICAgICAgICAgICAgICoNCisJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLw0KKwkvKiBnZW5lcmF0ZSB3aGl0ZSBub2lzZSB2ZWN0b3IgKi8NCisJZm9yIChpID0gMDsgaSA8IExfU1VCRlIxNms7IGkrKykNCisJew0KKwkJSEZbaV0gPSBSYW5kb20oJihzdC0+c2VlZDIpKT4+MzsNCisJfQ0KKwkvKiBlbmVyZ3kgb2YgZXhjaXRhdGlvbiAqLw0KKyNpZmRlZiBBU01fT1BUICAgICAgICAgICAgICAgICAgICAvKiBhc20gb3B0aW1pemF0aW9uIGJyYW5jaCAqLw0KKwlTY2FsZV9zaWdfb3B0KGV4YywgTF9TVUJGUiwgLTMpOw0KKwlRX25ldyA9IFFfbmV3IC0gMzsNCisJZW5lciA9IGV4dHJhY3RfaChEb3RfcHJvZHVjdDEyX2FzbShleGMsIGV4YywgTF9TVUJGUiwgJmV4cF9lbmVyKSk7DQorI2Vsc2UNCisJU2NhbGVfc2lnKGV4YywgTF9TVUJGUiwgLTMpOw0KKwlRX25ldyA9IFFfbmV3IC0gMzsNCisJZW5lciA9IGV4dHJhY3RfaChEb3RfcHJvZHVjdDEyKGV4YywgZXhjLCBMX1NVQkZSLCAmZXhwX2VuZXIpKTsNCisjZW5kaWYNCisNCisJZXhwX2VuZXIgPSBleHBfZW5lciAtIChRX25ldyArIFFfbmV3KTsNCisJLyogc2V0IGVuZXJneSBvZiB3aGl0ZSBub2lzZSB0byBlbmVyZ3kgb2YgZXhjaXRhdGlvbiAqLw0KKyNpZmRlZiBBU01fT1BUICAgICAgICAgICAgICAvKiBhc20gb3B0aW1pemF0aW9uIGJyYW5jaCAqLw0KKwl0bXAgPSBleHRyYWN0X2goRG90X3Byb2R1Y3QxMl9hc20oSEYsIEhGLCBMX1NVQkZSMTZrLCAmZXhwKSk7DQorI2Vsc2UNCisJdG1wID0gZXh0cmFjdF9oKERvdF9wcm9kdWN0MTIoSEYsIEhGLCBMX1NVQkZSMTZrLCAmZXhwKSk7DQorI2VuZGlmDQorDQorCWlmKHRtcCA+IGVuZXIpDQorCXsNCisJCXRtcCA9ICh0bXAgPj4gMSk7ICAgICAgICAgICAgICAgICAvKiBCZSBzdXJlIHRtcCA8IGVuZXIgKi8NCisJCWV4cCA9IChleHAgKyAxKTsNCisJfQ0KKwlMX3RtcCA9IExfZGVwb3NpdF9oKGRpdl9zKHRtcCwgZW5lcikpOyAvKiByZXN1bHQgaXMgbm9ybWFsaXplZCAqLw0KKwlleHAgPSAoZXhwIC0gZXhwX2VuZXIpOw0KKwlJc3FydF9uKCZMX3RtcCwgJmV4cCk7DQorCUxfdG1wID0gTF9zaGwoTF90bXAsIChleHAgKyAxKSk7ICAgICAgIC8qIExfdG1wIHggMiwgTF90bXAgaW4gUTMxICovDQorCXRtcCA9IGV4dHJhY3RfaChMX3RtcCk7ICAgICAgICAgICAgICAgIC8qIHRtcCA9IDIgeCBzcXJ0KGVuZXJfZXhjL2VuZXJfaGYpICovDQorDQorCWZvciAoaSA9IDA7IGkgPCBMX1NVQkZSMTZrOyBpKyspDQorCXsNCisJCUhGW2ldID0gdm9fbXVsdChIRltpXSwgdG1wKTsNCisJfQ0KKw0KKwkvKiBmaW5kIHRpbHQgb2Ygc3ludGhlc2lzIHNwZWVjaCAodGlsdDogMT12b2ljZWQsIC0xPXVudm9pY2VkKSAqLw0KKwlIUDQwMF8xMms4KHN5bnRoLCBMX1NVQkZSLCBzdC0+bWVtX2hwNDAwKTsNCisNCisJTF90bXAgPSAxTDsNCisJZm9yIChpID0gMDsgaSA8IExfU1VCRlI7IGkrKykNCisJCUxfdG1wICs9IChzeW50aFtpXSAqIHN5bnRoW2ldKTw8MTsNCisNCisJZXhwID0gbm9ybV9sKExfdG1wKTsNCisJZW5lciA9IGV4dHJhY3RfaChMX3RtcCA8PCBleHApOyAgIC8qIGVuZXIgPSByWzBdICovDQorDQorCUxfdG1wID0gMUw7DQorCWZvciAoaSA9IDE7IGkgPCBMX1NVQkZSOyBpKyspDQorCQlMX3RtcCArPShzeW50aFtpXSAqIHN5bnRoW2kgLSAxXSk8PDE7DQorDQorCXRtcCA9IGV4dHJhY3RfaChMX3RtcCA8PCBleHApOyAgICAvKiB0bXAgPSByWzFdICovDQorDQorCWlmICh0bXAgPiAwKQ0KKwl7DQorCQlmYWMgPSBkaXZfcyh0bXAsIGVuZXIpOw0KKwl9IGVsc2UNCisJew0KKwkJZmFjID0gMDsgDQorCX0NCisNCisJLyogbW9kaWZ5IGVuZXJneSBvZiB3aGl0ZSBub2lzZSBhY2NvcmRpbmcgdG8gc3ludGhlc2lzIHRpbHQgKi8NCisJZ2FpbjEgPSAzMjc2NyAtIGZhYzsNCisJZ2FpbjIgPSB2b19tdWx0KGdhaW4xLCAyMDQ4MCk7DQorCWdhaW4yID0gc2hsKGdhaW4yLCAxKTsNCisNCisJaWYgKHN0LT52YWRfaGlzdCA+IDApDQorCXsNCisJCXdlaWdodDEgPSAwOw0KKwkJd2VpZ2h0MiA9IDMyNzY3Ow0KKwl9IGVsc2UNCisJew0KKwkJd2VpZ2h0MSA9IDMyNzY3Ow0KKwkJd2VpZ2h0MiA9IDA7DQorCX0NCisJdG1wID0gdm9fbXVsdCh3ZWlnaHQxLCBnYWluMSk7DQorCXRtcCA9IGFkZDEodG1wLCB2b19tdWx0KHdlaWdodDIsIGdhaW4yKSk7DQorDQorCWlmICh0bXAgIT0gMCkNCisJew0KKwkJdG1wID0gKHRtcCArIDEpOw0KKwl9DQorCUhQX2VzdF9nYWluID0gdG1wOw0KKw0KKwlpZihIUF9lc3RfZ2FpbiA8IDMyNzcpDQorCXsNCisJCUhQX2VzdF9nYWluID0gMzI3NzsgICAgICAgICAgICAgICAgLyogMC4xIGluIFExNSAqLw0KKwl9DQorCS8qIHN5bnRoZXNpcyBvZiBub2lzZTogNC44a0h6Li41LjZrSHogLS0+IDZrSHouLjdrSHogKi8NCisJV2VpZ2h0X2EoQXEsIEFwLCAxOTY2MSwgTSk7ICAgICAgICAgICAgLyogZmFjPTAuNiAqLw0KKw0KKyNpZmRlZiBBU01fT1BUICAgICAgICAgICAgICAgIC8qIGFzbSBvcHRpbWl6YXRpb24gYnJhbmNoICovDQorCVN5bl9maWx0X2FzbShBcCwgSEYsIEhGLCBzdC0+bWVtX3N5bl9oZik7DQorCS8qIG5vaXNlIEhpZ2ggUGFzcyBmaWx0ZXJpbmcgKDFtcyBvZiBkZWxheSkgKi8NCisJRmlsdF82a183a19hc20oSEYsIExfU1VCRlIxNmssIHN0LT5tZW1faGYpOw0KKwkvKiBmaWx0ZXJpbmcgb2YgdGhlIG9yaWdpbmFsIHNpZ25hbCAqLw0KKwlGaWx0XzZrXzdrX2FzbShIRl9TUCwgTF9TVUJGUjE2aywgc3QtPm1lbV9oZjIpOw0KKw0KKwkvKiBjaGVjayB0aGUgZ2FpbiBkaWZmZXJlbmNlICovDQorCVNjYWxlX3NpZ19vcHQoSEZfU1AsIExfU1VCRlIxNmssIC0xKTsNCisJZW5lciA9IGV4dHJhY3RfaChEb3RfcHJvZHVjdDEyX2FzbShIRl9TUCwgSEZfU1AsIExfU1VCRlIxNmssICZleHBfZW5lcikpOw0KKwkvKiBzZXQgZW5lcmd5IG9mIHdoaXRlIG5vaXNlIHRvIGVuZXJneSBvZiBleGNpdGF0aW9uICovDQorCXRtcCA9IGV4dHJhY3RfaChEb3RfcHJvZHVjdDEyX2FzbShIRiwgSEYsIExfU1VCRlIxNmssICZleHApKTsNCisjZWxzZQ0KKwlTeW5fZmlsdChBcCwgSEYsIEhGLCBMX1NVQkZSMTZrLCBzdC0+bWVtX3N5bl9oZiwgMSk7DQorCS8qIG5vaXNlIEhpZ2ggUGFzcyBmaWx0ZXJpbmcgKDFtcyBvZiBkZWxheSkgKi8NCisJRmlsdF82a183ayhIRiwgTF9TVUJGUjE2aywgc3QtPm1lbV9oZik7DQorCS8qIGZpbHRlcmluZyBvZiB0aGUgb3JpZ2luYWwgc2lnbmFsICovDQorCUZpbHRfNmtfN2soSEZfU1AsIExfU1VCRlIxNmssIHN0LT5tZW1faGYyKTsNCisJLyogY2hlY2sgdGhlIGdhaW4gZGlmZmVyZW5jZSAqLw0KKwlTY2FsZV9zaWcoSEZfU1AsIExfU1VCRlIxNmssIC0xKTsNCisJZW5lciA9IGV4dHJhY3RfaChEb3RfcHJvZHVjdDEyKEhGX1NQLCBIRl9TUCwgTF9TVUJGUjE2aywgJmV4cF9lbmVyKSk7DQorCS8qIHNldCBlbmVyZ3kgb2Ygd2hpdGUgbm9pc2UgdG8gZW5lcmd5IG9mIGV4Y2l0YXRpb24gKi8NCisJdG1wID0gZXh0cmFjdF9oKERvdF9wcm9kdWN0MTIoSEYsIEhGLCBMX1NVQkZSMTZrLCAmZXhwKSk7DQorI2VuZGlmDQorDQorCWlmICh0bXAgPiBlbmVyKQ0KKwl7DQorCQl0bXAgPSAodG1wID4+IDEpOyAgICAgICAgICAgICAgICAgLyogQmUgc3VyZSB0bXAgPCBlbmVyICovDQorCQlleHAgPSAoZXhwICsgMSk7DQorCX0NCisJTF90bXAgPSBMX2RlcG9zaXRfaChkaXZfcyh0bXAsIGVuZXIpKTsgLyogcmVzdWx0IGlzIG5vcm1hbGl6ZWQgKi8NCisJZXhwID0gdm9fc3ViKGV4cCwgZXhwX2VuZXIpOw0KKwlJc3FydF9uKCZMX3RtcCwgJmV4cCk7DQorCUxfdG1wID0gTF9zaGwoTF90bXAsIGV4cCk7ICAgICAgICAgICAgIC8qIExfdG1wLCBMX3RtcCBpbiBRMzEgKi8NCisJSFBfY2FsY19nYWluID0gZXh0cmFjdF9oKExfdG1wKTsgICAgICAgLyogdG1wID0gc3FydChlbmVyX2lucHV0L2VuZXJfaGYpICovDQorDQorCS8qIHN0LT5nYWluX2FscGhhICo9IHN0LT5kdHhfZW5jU3QtPmR0eEhhbmdvdmVyQ291bnQvNyAqLw0KKwlMX3RtcCA9ICh2b19MX211bHQoc3QtPmR0eF9lbmNTdC0+ZHR4SGFuZ292ZXJDb3VudCwgNDY4MSkgPDwgMTUpOw0KKwlzdC0+Z2Fpbl9hbHBoYSA9IHZvX211bHQoc3QtPmdhaW5fYWxwaGEsIGV4dHJhY3RfaChMX3RtcCkpOw0KKw0KKwlpZihzdC0+ZHR4X2VuY1N0LT5kdHhIYW5nb3ZlckNvdW50ID4gNikNCisJCXN0LT5nYWluX2FscGhhID0gMzI3Njc7DQorCUhQX2VzdF9nYWluID0gSFBfZXN0X2dhaW4gPj4gMTsgICAgIC8qIEZyb20gUTE1IHRvIFExNCAqLw0KKwlIUF9jb3JyX2dhaW4gPSBhZGQxKHZvX211bHQoSFBfY2FsY19nYWluLCBzdC0+Z2Fpbl9hbHBoYSksIHZvX211bHQoKDMyNzY3IC0gc3QtPmdhaW5fYWxwaGEpLCBIUF9lc3RfZ2FpbikpOw0KKw0KKwkvKiBRdWFudGlzZSB0aGUgY29ycmVjdGlvbiBnYWluICovDQorCWRpc3RfbWluID0gMzI3Njc7DQorCWZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKQ0KKwl7DQorCQlkaXN0ID0gdm9fbXVsdCgoSFBfY29ycl9nYWluIC0gSFBfZ2FpbltpXSksIChIUF9jb3JyX2dhaW4gLSBIUF9nYWluW2ldKSk7DQorCQlpZiAoZGlzdF9taW4gPiBkaXN0KQ0KKwkJew0KKwkJCWRpc3RfbWluID0gZGlzdDsNCisJCQlIUF9nYWluX2luZCA9IGk7DQorCQl9DQorCX0NCisJSFBfY29ycl9nYWluID0gSFBfZ2FpbltIUF9nYWluX2luZF07DQorCS8qIHJldHVybiB0aGUgcXVhbnRpc2VkIGdhaW4gaW5kZXggd2hlbiB1c2luZyB0aGUgaGlnaGVzdCBtb2RlLCBvdGhlcndpc2UgemVybyAqLw0KKwlyZXR1cm4gKEhQX2dhaW5faW5kKTsNCit9DQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqDQorKiBCcmVpZjogQ29kZWMgbWFpbiBmdW5jdGlvbiANCisqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQoraW50IEFNUl9FbmNfRW5jb2RlKEhBTVJFTkMgaENvZGVjKQ0KK3sNCisJV29yZDMyIGk7DQorCUNvZGVyX1N0YXRlICpnRGF0YSA9IChDb2Rlcl9TdGF0ZSopaENvZGVjOw0KKwlXb3JkMTYgKnNpZ25hbDsNCisJV29yZDE2IHBhY2tlZF9zaXplID0gMDsNCisJV29yZDE2IHBybXNbTkJfQklUU19NQVhdOw0KKwlXb3JkMTYgY29kaW5nX21vZGUgPSAwLCBuYl9iaXRzLCBhbGxvd19kdHgsIG1vZGUsIHJlc2V0X2ZsYWc7DQorCW1vZGUgPSBnRGF0YS0+bW9kZTsNCisJY29kaW5nX21vZGUgPSBnRGF0YS0+bW9kZTsNCisJbmJfYml0cyA9IG5iX29mX2JpdHNbbW9kZV07DQorCXNpZ25hbCA9IChXb3JkMTYgKilnRGF0YS0+aW5wdXRTdHJlYW07DQorCWFsbG93X2R0eCA9IGdEYXRhLT5hbGxvd19kdHg7DQorDQorCS8qIGNoZWNrIGZvciBob21pbmcgZnJhbWUgKi8NCisJcmVzZXRfZmxhZyA9IGVuY29kZXJfaG9taW5nX2ZyYW1lX3Rlc3Qoc2lnbmFsKTsNCisNCisJZm9yIChpID0gMDsgaSA8IExfRlJBTUUxNms7IGkrKykgICAvKiBEZWxldGUgdGhlIDIgTFNCcyAoMTQtYml0IGlucHV0KSAqLw0KKwl7DQorCQkqKHNpZ25hbCArIGkpID0gKFdvcmQxNikgKCooc2lnbmFsICsgaSkgJiAweGZmZkMpOw0KKwl9DQorDQorCWNvZGVyKCZjb2RpbmdfbW9kZSwgc2lnbmFsLCBwcm1zLCAmbmJfYml0cywgZ0RhdGEsIGFsbG93X2R0eCk7DQorCXBhY2tlZF9zaXplID0gUGFja0JpdHMocHJtcywgY29kaW5nX21vZGUsIG1vZGUsIGdEYXRhKTsNCisJaWYgKHJlc2V0X2ZsYWcgIT0gMCkNCisJew0KKwkJUmVzZXRfZW5jb2RlcihnRGF0YSwgMSk7DQorCX0NCisJcmV0dXJuIHBhY2tlZF9zaXplOw0KK30NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKg0KKypCcmllZjogQ29kZWMgQVBJIGZ1bmN0aW9uIC0tLSBJbml0aWFsaXplIHRoZSBjb2RlYyBhbmQgcmV0dXJuIGEgY29kZWMgaGFuZGxlDQorKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCitWT19VMzIgVk9fQVBJIHZvQU1SV0JfSW5pdChWT19IQU5ETEUgKiBwaENvZGVjLCAgICAgICAgICAgICAgICAgICAvKiBvOiB0aGUgYXVkaW8gY29kZWMgaGFuZGxlICovDQorCQkJCQkJICAgVk9fQVVESU9fQ09ESU5HVFlQRSB2VHlwZSwgICAgICAgICAgICAgLyogaTogQ29kZWMgVHlwZSBJRCAqLw0KKwkJCQkJCSAgIFZPX0NPREVDX0lOSVRfVVNFUkRBVEEgKiBwVXNlckRhdGEgICAgIC8qIGk6IGluaXQgUGFyYW1ldGVycyAqLw0KKwkJCQkJCSAgICkNCit7DQorCUNvZGVyX1N0YXRlICpzdDsNCisJRnJhbWVTdHJlYW0gKnN0cmVhbTsNCisjaWZkZWYgVVNFX0RFQVVMVF9NRU0NCisJVk9fTUVNX09QRVJBVE9SIHZvTWVtb3ByYXRvcjsNCisjZW5kaWYNCisJVk9fTUVNX09QRVJBVE9SICpwTWVtT1A7DQorCWludCBpbnRlck1lbSA9IDA7DQorDQorCWlmKHBVc2VyRGF0YSA9PSBOVUxMIHx8IHBVc2VyRGF0YS0+bWVtZmxhZyAhPSBWT19JTUZfVVNFUk1FTU9QRVJBVE9SIHx8IHBVc2VyRGF0YS0+bWVtRGF0YSA9PSBOVUxMICkNCisJew0KKyNpZmRlZiBVU0VfREVBVUxUX01FTQ0KKwkJdm9NZW1vcHJhdG9yLkFsbG9jID0gY21uTWVtQWxsb2M7DQorCQl2b01lbW9wcmF0b3IuQ29weSA9IGNtbk1lbUNvcHk7DQorCQl2b01lbW9wcmF0b3IuRnJlZSA9IGNtbk1lbUZyZWU7DQorCQl2b01lbW9wcmF0b3IuU2V0ID0gY21uTWVtU2V0Ow0KKwkJdm9NZW1vcHJhdG9yLkNoZWNrID0gY21uTWVtQ2hlY2s7DQorCQlpbnRlck1lbSA9IDE7DQorCQlwTWVtT1AgPSAmdm9NZW1vcHJhdG9yOw0KKyNlbHNlDQorCQkqcGhDb2RlYyA9IE5VTEw7DQorCQlyZXR1cm4gVk9fRVJSX0lOVkFMSURfQVJHOw0KKyNlbmRpZg0KKwl9DQorCWVsc2UNCisJew0KKwkJcE1lbU9QID0gKFZPX01FTV9PUEVSQVRPUiAqKXBVc2VyRGF0YS0+bWVtRGF0YTsNCisJfSANCisJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKg0KKwkgKiBNZW1vcnkgYWxsb2NhdGlvbiBmb3IgY29kZXIgc3RhdGUuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovDQorCWlmICgoc3QgPSAoQ29kZXJfU3RhdGUgKiltZW1fbWFsbG9jKHBNZW1PUCwgc2l6ZW9mKENvZGVyX1N0YXRlKSwgMzIsIFZPX0lOREVYX0VOQ19BTVJXQikpID09IE5VTEwpDQorCXsNCisJCXJldHVybiBWT19FUlJfT1VUT0ZfTUVNT1JZOw0KKwl9DQorDQorCXN0LT52YWRTdCA9IE5VTEw7ICAgICAgICAgICAgICAgICAgICAgIA0KKwlzdC0+ZHR4X2VuY1N0ID0gTlVMTDsgICAgICAgICAgICAgICAgICANCisJc3QtPnNpZF91cGRhdGVfY291bnRlciA9IDM7DQorCXN0LT5zaWRfaGFuZG92ZXJfZGVidCA9IDA7DQorCXN0LT5wcmV2X2Z0ID0gVFhfU1BFRUNIOw0KKwlzdC0+aW5wdXRTdHJlYW0gPSBOVUxMOw0KKwlzdC0+aW5wdXRTaXplID0gMDsNCisNCisJLyogRGVmYXVsdCBzZXR0aW5nICovDQorCXN0LT5tb2RlID0gVk9BTVJXQl9NRDIzODU7ICAgICAgICAgICAgICAgICAgICAgICAgLyogYml0IHJhdGUgMjMuODVrYnBzICovDQorCXN0LT5mcmFtZVR5cGUgPSBWT0FNUldCX1JGQzMyNjc7ICAgICAgICAgICAgICAgICAgLyogZnJhbWUgdHlwZTogUkZDMzI2NyAqLw0KKwlzdC0+YWxsb3dfZHR4ID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGRpc2FibGUgRFRYIG1vZGUgKi8NCisNCisJc3QtPm91dHB1dFN0cmVhbSA9IE5VTEw7DQorCXN0LT5vdXRwdXRTaXplID0gMDsNCisNCisJc3QtPnN0cmVhbSA9IChGcmFtZVN0cmVhbSAqKW1lbV9tYWxsb2MocE1lbU9QLCBzaXplb2YoRnJhbWVTdHJlYW0pLCAzMiwgVk9fSU5ERVhfRU5DX0FNUldCKTsNCisJaWYoc3QtPnN0cmVhbSA9PSBOVUxMKQ0KKwkJcmV0dXJuIFZPX0VSUl9PVVRPRl9NRU1PUlk7DQorDQorCXN0LT5zdHJlYW0tPmZyYW1lX3B0ciA9ICh1bnNpZ25lZCBjaGFyICopbWVtX21hbGxvYyhwTWVtT1AsIEZyYW1lX01heHNpemUsIDMyLCBWT19JTkRFWF9FTkNfQU1SV0IpOw0KKwlpZihzdC0+c3RyZWFtLT5mcmFtZV9wdHIgPT0gTlVMTCkNCisJCXJldHVybiAgVk9fRVJSX09VVE9GX01FTU9SWTsNCisNCisJc3RyZWFtID0gc3QtPnN0cmVhbTsNCisJdm9BV0JfSW5pdEZyYW1lQnVmZmVyKHN0cmVhbSk7DQorDQorCXdiX3ZhZF9pbml0KCYoc3QtPnZhZFN0KSwgcE1lbU9QKTsNCisJZHR4X2VuY19pbml0KCYoc3QtPmR0eF9lbmNTdCksIGlzZl9pbml0LCBwTWVtT1ApOw0KKw0KKwlSZXNldF9lbmNvZGVyKCh2b2lkICopIHN0LCAxKTsNCisNCisJaWYoaW50ZXJNZW0pDQorCXsNCisJCXN0LT52b01lbW9wcmF0b3IuQWxsb2MgPSBjbW5NZW1BbGxvYzsNCisJCXN0LT52b01lbW9wcmF0b3IuQ29weSA9IGNtbk1lbUNvcHk7DQorCQlzdC0+dm9NZW1vcHJhdG9yLkZyZWUgPSBjbW5NZW1GcmVlOw0KKwkJc3QtPnZvTWVtb3ByYXRvci5TZXQgPSBjbW5NZW1TZXQ7DQorCQlzdC0+dm9NZW1vcHJhdG9yLkNoZWNrID0gY21uTWVtQ2hlY2s7DQorCQlwTWVtT1AgPSAmc3QtPnZvTWVtb3ByYXRvcjsNCisJfQ0KKw0KKwlzdC0+cHZvTWVtb3AgPSBwTWVtT1A7DQorDQorCSpwaENvZGVjID0gKHZvaWQgKikgc3Q7DQorDQorCXJldHVybiBWT19FUlJfTk9ORTsNCit9DQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqDQorKiBCcmllZjogQ29kZWMgQVBJIGZ1bmN0aW9uOiBJbnB1dCBQQ00gZGF0YQ0KKyoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCitWT19VMzIgVk9fQVBJIHZvQU1SV0JfU2V0SW5wdXREYXRhKA0KKwkJVk9fSEFORExFIGhDb2RlYywgICAgICAgICAgICAgICAgICAgLyogaS9vOiBUaGUgY29kZWMgaGFuZGxlIHdoaWNoIHdhcyBjcmVhdGVkIGJ5IEluaXQgZnVuY3Rpb24gKi8NCisJCVZPX0NPREVDQlVGRkVSICogcElucHV0ICAgICAgICAgICAgIC8qICAgaTogVGhlIGlucHV0IGJ1ZmZlciBwYXJhbWV0ZXIgICovDQorCQkpDQorew0KKwlDb2Rlcl9TdGF0ZSAgKmdEYXRhOw0KKwlGcmFtZVN0cmVhbSAgKnN0cmVhbTsNCisNCisJaWYoTlVMTCA9PSBoQ29kZWMpDQorCXsNCisJCXJldHVybiBWT19FUlJfSU5WQUxJRF9BUkc7DQorCX0NCisNCisJZ0RhdGEgPSAoQ29kZXJfU3RhdGUgKiloQ29kZWM7DQorCXN0cmVhbSA9IGdEYXRhLT5zdHJlYW07DQorDQorCWlmKE5VTEwgPT0gcElucHV0IHx8IE5VTEwgPT0gcElucHV0LT5CdWZmZXIgfHwgMCA+IHBJbnB1dC0+TGVuZ3RoKQ0KKwl7DQorCQlyZXR1cm4gVk9fRVJSX0lOVkFMSURfQVJHOw0KKwl9DQorDQorCXN0cmVhbS0+c2V0X3B0ciAgICA9IHBJbnB1dC0+QnVmZmVyOw0KKwlzdHJlYW0tPnNldF9sZW4gICAgPSBwSW5wdXQtPkxlbmd0aDsNCisJc3RyZWFtLT5mcmFtZV9wdHIgID0gc3RyZWFtLT5mcmFtZV9wdHJfYms7DQorCXN0cmVhbS0+dXNlZF9sZW4gICA9IDA7DQorDQorCXJldHVybiBWT19FUlJfTk9ORTsNCit9DQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKg0KKyogQnJpZWY6IENvZGVjIEFQSSBmdW5jdGlvbjogR2V0IHRoZSBjb21wcmVzc2lvbiBhdWRpbyBkYXRhIGZyYW1lIGJ5IGZyYW1lDQorKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCitWT19VMzIgVk9fQVBJIHZvQU1SV0JfR2V0T3V0cHV0RGF0YSgNCisJCVZPX0hBTkRMRSBoQ29kZWMsICAgICAgICAgICAgICAgICAgICAvKiBpOiBUaGUgQ29kZWMgSGFuZGxlIHdoaWNoIHdhcyBjcmVhdGVkIGJ5IEluaXQgZnVuY3Rpb24qLw0KKwkJVk9fQ09ERUNCVUZGRVIgKiBwT3V0cHV0LCAgICAgICAgICAgIC8qIG86IFRoZSBvdXRwdXQgYXVkaW8gZGF0YSAqLw0KKwkJVk9fQVVESU9fT1VUUFVUSU5GTyAqIHBBdWRpb0Zvcm1hdCAgIC8qIG86IFRoZSBlbmNvZGVyIG1vZHVsZSBmaWxsZWQgYXVkaW8gZm9ybWF0IGFuZCB1c2VkIHRoZSBpbnB1dCBzaXplKi8NCisJCSkNCit7DQorCUNvZGVyX1N0YXRlKiBnRGF0YSA9IChDb2Rlcl9TdGF0ZSopaENvZGVjOw0KKwlWT19NRU1fT1BFUkFUT1IgICpwTWVtT1A7DQorCUZyYW1lU3RyZWFtICAqc3RyZWFtID0gKEZyYW1lU3RyZWFtICopZ0RhdGEtPnN0cmVhbTsNCisJcE1lbU9QID0gKFZPX01FTV9PUEVSQVRPUiAgKilnRGF0YS0+cHZvTWVtb3A7DQorDQorCWlmKHN0cmVhbS0+ZnJhbWVidWZmZXJfbGVuICA8IEZyYW1lX01heEJ5dGUpICAgICAgICAgLyogY2hlY2sgdGhlIHdvcmsgYnVmZmVyIGxlbiAqLw0KKwl7DQorCQlzdHJlYW0tPmZyYW1lX3N0b3JlbGVuID0gc3RyZWFtLT5mcmFtZWJ1ZmZlcl9sZW47DQorCQlpZihzdHJlYW0tPmZyYW1lX3N0b3JlbGVuKQ0KKwkJew0KKwkJCXBNZW1PUC0+Q29weShWT19JTkRFWF9FTkNfQU1SV0IsIHN0cmVhbS0+ZnJhbWVfcHRyX2JrICwgc3RyZWFtLT5mcmFtZV9wdHIgLCBzdHJlYW0tPmZyYW1lX3N0b3JlbGVuKTsNCisJCX0NCisJCWlmKHN0cmVhbS0+c2V0X2xlbiA+IDApDQorCQl7DQorCQkJdm9BV0JfVXBkYXRlRnJhbWVCdWZmZXIoc3RyZWFtLCBwTWVtT1ApOw0KKwkJfQ0KKwkJaWYoc3RyZWFtLT5mcmFtZWJ1ZmZlcl9sZW4gPCBGcmFtZV9NYXhCeXRlKQ0KKwkJew0KKwkJCWlmKHBBdWRpb0Zvcm1hdCkNCisJCQkJcEF1ZGlvRm9ybWF0LT5JbnB1dFVzZWQgPSBzdHJlYW0tPnVzZWRfbGVuOw0KKwkJCXJldHVybiBWT19FUlJfSU5QVVRfQlVGRkVSX1NNQUxMOw0KKwkJfQ0KKwl9DQorDQorCWdEYXRhLT5pbnB1dFN0cmVhbSA9IHN0cmVhbS0+ZnJhbWVfcHRyOw0KKwlnRGF0YS0+b3V0cHV0U3RyZWFtID0gKHVuc2lnbmVkIHNob3J0KilwT3V0cHV0LT5CdWZmZXI7DQorDQorCWdEYXRhLT5vdXRwdXRTaXplID0gQU1SX0VuY19FbmNvZGUoZ0RhdGEpOyAgICAgICAgIC8qIGVuY29kZXIgbWFpbiBmdW5jdGlvbiAqLw0KKw0KKwlwT3V0cHV0LT5MZW5ndGggPSBnRGF0YS0+b3V0cHV0U2l6ZTsgICAgICAgICAgICAgICAvKiBnZXQgdGhlIG91dHB1dCBidWZmZXIgbGVuZ3RoICovDQorCXN0cmVhbS0+ZnJhbWVfcHRyICs9IDY0MDsgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHVwZGF0ZSB0aGUgd29yayBidWZmZXIgcHRyICovDQorCXN0cmVhbS0+ZnJhbWVidWZmZXJfbGVuICAtPSA2NDA7DQorDQorCWlmKHBBdWRpb0Zvcm1hdCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHJldHVybiBvdXRwdXQgYXVkaW8gaW5mb3JtYXRpb24gKi8NCisJew0KKwkJcEF1ZGlvRm9ybWF0LT5Gb3JtYXQuQ2hhbm5lbHMgPSAxOw0KKwkJcEF1ZGlvRm9ybWF0LT5Gb3JtYXQuU2FtcGxlUmF0ZSA9IDgwMDA7DQorCQlwQXVkaW9Gb3JtYXQtPkZvcm1hdC5TYW1wbGVCaXRzID0gMTY7CQ0KKwkJcEF1ZGlvRm9ybWF0LT5JbnB1dFVzZWQgPSBzdHJlYW0tPnVzZWRfbGVuOw0KKwl9DQorCXJldHVybiBWT19FUlJfTk9ORTsNCit9DQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqDQorKiBCcmllZjogQ29kZWMgQVBJIGZ1bmN0aW9uLS0tc2V0IHRoZSBkYXRhIGJ5IHNwZWNpZmllZCBwYXJhbWV0ZXIgSUQNCisqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisNCitWT19VMzIgVk9fQVBJIHZvQU1SV0JfU2V0UGFyYW0oDQorCQlWT19IQU5ETEUgaENvZGVjLCAgIC8qIGkvbzogVGhlIENvZGVjIEhhbmRsZSB3aGljaCB3YXMgY3JlYXRlZCBieSBJbml0IGZ1bmN0aW9uICovDQorCQlWT19TMzIgdVBhcmFtSUQsICAgIC8qICAgaTogVGhlIHBhcmFtIElEICovDQorCQlWT19QVFIgcERhdGEgICAgICAgIC8qICAgaTogVGhlIHBhcmFtIHZhbHVlIGRlcGVuZCBvbiB0aGUgSUQgKi8NCisJCSkNCit7DQorCUNvZGVyX1N0YXRlKiBnRGF0YSA9IChDb2Rlcl9TdGF0ZSopaENvZGVjOw0KKwlGcmFtZVN0cmVhbSAqc3RyZWFtID0gKEZyYW1lU3RyZWFtICopKGdEYXRhLT5zdHJlYW0pOw0KKwlpbnQgKmxWYWx1ZSA9IChpbnQqKXBEYXRhOw0KKw0KKwlzd2l0Y2godVBhcmFtSUQpDQorCXsNCisJCS8qIHNldHRpbmcgQU1SLVdCIGZyYW1lIHR5cGUqLw0KKwkJY2FzZSBWT19QSURfQU1SV0JfRlJBTUVUWVBFOg0KKwkJCWlmKCpsVmFsdWUgPCBWT0FNUldCX0RFRkFVTFQgfHwgKmxWYWx1ZSA+IFZPQU1SV0JfUkZDMzI2NykNCisJCQkJcmV0dXJuIFZPX0VSUl9XUk9OR19QQVJBTV9JRDsgDQorCQkJZ0RhdGEtPmZyYW1lVHlwZSA9ICpsVmFsdWU7DQorCQkJYnJlYWs7DQorCQkvKiBzZXR0aW5nIEFNUi1XQiBiaXQgcmF0ZSAqLw0KKwkJY2FzZSBWT19QSURfQU1SV0JfTU9ERToNCisJCQl7DQorCQkJCWlmKCpsVmFsdWUgPCBWT0FNUldCX01ENjYgfHwgKmxWYWx1ZSA+IFZPQU1SV0JfTUQyMzg1KQ0KKwkJCQkJcmV0dXJuIFZPX0VSUl9XUk9OR19QQVJBTV9JRDsgDQorCQkJCWdEYXRhLT5tb2RlID0gKmxWYWx1ZTsNCisJCQl9DQorCQkJYnJlYWs7DQorCQkvKiBlbmFibGUgb3IgZGlzYWJsZSBEVFggbW9kZSAqLw0KKwkJY2FzZSBWT19QSURfQU1SV0JfRFRYOg0KKwkJCWdEYXRhLT5hbGxvd19kdHggPSAoV29yZDE2KSgqbFZhbHVlKTsNCisJCQlicmVhazsNCisNCisJCWNhc2UgVk9fUElEX0NPTU1PTl9IRUFEREFUQToNCisJCQlicmVhazsNCisgICAgICAgIC8qIGZsdXNoIHRoZSB3b3JrIGJ1ZmZlciAqLw0KKwkJY2FzZSBWT19QSURfQ09NTU9OX0ZMVVNIOg0KKwkJCXN0cmVhbS0+c2V0X3B0ciA9IE5VTEw7DQorCQkJc3RyZWFtLT5mcmFtZV9zdG9yZWxlbiA9IDA7DQorCQkJc3RyZWFtLT5mcmFtZWJ1ZmZlcl9sZW4gPSAwOw0KKwkJCXN0cmVhbS0+c2V0X2xlbiA9IDA7DQorCQkJYnJlYWs7DQorDQorCQlkZWZhdWx0Og0KKwkJCXJldHVybiBWT19FUlJfV1JPTkdfUEFSQU1fSUQ7DQorCX0NCisJcmV0dXJuIFZPX0VSUl9OT05FOw0KK30NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqDQorKkJyaWVmOiBDb2RlYyBBUEkgZnVuY3Rpb24tLS1HZXQgdGhlIGRhdGEgYnkgc3BlY2lmaWVkIHBhcmFtZXRlciBJRA0KKyoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorVk9fVTMyIFZPX0FQSSB2b0FNUldCX0dldFBhcmFtKA0KKwkJVk9fSEFORExFIGhDb2RlYywgICAgICAvKiBpOiBUaGUgQ29kZWMgSGFuZGxlIHdoaWNoIHdhcyBjcmVhdGVkIGJ5IEluaXQgZnVuY3Rpb24gKi8NCisJCVZPX1MzMiB1UGFyYW1JRCwgICAgICAgLyogaTogVGhlIHBhcmFtIElEICovDQorCQlWT19QVFIgcERhdGEgICAgICAgICAgIC8qIG86IFRoZSBwYXJhbSB2YWx1ZSBkZXBlbmQgb24gdGhlIElEICovDQorCQkpDQorew0KKwlpbnQgICAgdGVtcDsNCisJQ29kZXJfU3RhdGUqIGdEYXRhID0gKENvZGVyX1N0YXRlKiloQ29kZWM7DQorDQorCWlmIChnRGF0YT09TlVMTCkgDQorCQlyZXR1cm4gVk9fRVJSX0lOVkFMSURfQVJHOw0KKwlzd2l0Y2godVBhcmFtSUQpDQorCXsNCisJCS8qIG91dHB1dCBhdWRpbyBmb3JtYXQgKi8NCisJCWNhc2UgVk9fUElEX0FNUldCX0ZPUk1BVDoNCisJCQl7DQorCQkJCVZPX0FVRElPX0ZPUk1BVCogZm10ID0gKFZPX0FVRElPX0ZPUk1BVCopcERhdGE7DQorCQkJCWZtdC0+Q2hhbm5lbHMgICA9IDE7DQorCQkJCWZtdC0+U2FtcGxlUmF0ZSA9IDE2MDAwOw0KKwkJCQlmbXQtPlNhbXBsZUJpdHMgPSAxNjsNCisJCQkJYnJlYWs7DQorCQkJfQ0KKyAgICAgICAgLyogb3V0cHV0IGF1ZGlvIGNoYW5uZWwgbnVtYmVyICovDQorCQljYXNlIFZPX1BJRF9BTVJXQl9DSEFOTkVMUzoNCisJCQl0ZW1wID0gMTsNCisJCQlwRGF0YSA9ICh2b2lkICopKCZ0ZW1wKTsNCisJCQlicmVhazsNCisgICAgICAgIC8qIG91dHB1dCBhdWRpbyBzYW1wbGUgcmF0ZSAqLw0KKwkJY2FzZSBWT19QSURfQU1SV0JfU0FNUExFUkFURToNCisJCQl0ZW1wID0gMTYwMDA7DQorCQkJcERhdGEgPSAodm9pZCAqKSgmdGVtcCk7DQorCQkJYnJlYWs7DQorCQkvKiBvdXRwdXQgYXVkaW8gZnJhbWUgdHlwZSAqLw0KKwkJY2FzZSBWT19QSURfQU1SV0JfRlJBTUVUWVBFOg0KKwkJCXRlbXAgPSBnRGF0YS0+ZnJhbWVUeXBlOw0KKwkJCXBEYXRhID0gKHZvaWQgKikoJnRlbXApOw0KKwkJCWJyZWFrOw0KKwkJLyogb3V0cHV0IGF1ZGlvIGJpdCByYXRlICovDQorCQljYXNlIFZPX1BJRF9BTVJXQl9NT0RFOg0KKwkJCXRlbXAgPSBnRGF0YS0+bW9kZTsNCisJCQlwRGF0YSA9ICh2b2lkICopKCZ0ZW1wKTsNCisJCQlicmVhazsNCisJCWRlZmF1bHQ6DQorCQkJcmV0dXJuIFZPX0VSUl9XUk9OR19QQVJBTV9JRDsNCisJfQ0KKw0KKwlyZXR1cm4gVk9fRVJSX05PTkU7DQorfQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyoNCisqIEJyaWVmOiBDb2RlYyBBUEkgZnVuY3Rpb24tLS1SZWxlYXNlIHRoZSBjb2RlYyBhZnRlciBhbGwgZW5jb2RlciBvcGVyYXRpb25zIGFyZSBkb25lDQorKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorVk9fVTMyIFZPX0FQSSB2b0FNUldCX1VuaW5pdChWT19IQU5ETEUgaENvZGVjICAgICAgICAgICAvKiBpL286IENvZGVjIGhhbmRsZSBwb2ludGVyICovDQorCQkJCQkJCSApDQorew0KKwlDb2Rlcl9TdGF0ZSogZ0RhdGEgPSAoQ29kZXJfU3RhdGUqKWhDb2RlYzsNCisJVk9fTUVNX09QRVJBVE9SICpwTWVtT1A7DQorCXBNZW1PUCA9IGdEYXRhLT5wdm9NZW1vcDsNCisNCisJaWYoaENvZGVjKQ0KKwl7DQorCQlpZihnRGF0YS0+c3RyZWFtKQ0KKwkJew0KKwkJCWlmKGdEYXRhLT5zdHJlYW0tPmZyYW1lX3B0cl9iaykNCisJCQl7DQorCQkJCW1lbV9mcmVlKHBNZW1PUCwgZ0RhdGEtPnN0cmVhbS0+ZnJhbWVfcHRyX2JrLCBWT19JTkRFWF9FTkNfQU1SV0IpOw0KKwkJCQlnRGF0YS0+c3RyZWFtLT5mcmFtZV9wdHJfYmsgPSBOVUxMOw0KKwkJCX0NCisJCQltZW1fZnJlZShwTWVtT1AsIGdEYXRhLT5zdHJlYW0sIFZPX0lOREVYX0VOQ19BTVJXQik7DQorCQkJZ0RhdGEtPnN0cmVhbSA9IE5VTEw7DQorCQl9DQorCQl3Yl92YWRfZXhpdCgmKCgoQ29kZXJfU3RhdGUgKikgZ0RhdGEpLT52YWRTdCksIHBNZW1PUCk7DQorCQlkdHhfZW5jX2V4aXQoJigoKENvZGVyX1N0YXRlICopIGdEYXRhKS0+ZHR4X2VuY1N0KSwgcE1lbU9QKTsNCisNCisJCW1lbV9mcmVlKHBNZW1PUCwgaENvZGVjLCBWT19JTkRFWF9FTkNfQU1SV0IpOw0KKwkJaENvZGVjID0gTlVMTDsNCisJfQ0KKw0KKwlyZXR1cm4gVk9fRVJSX05PTkU7DQorfQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyoNCisqIEJyaWVmOiB2b0dldEFNUldCRW5jQVBJIGdldHMgdGhlIEFQSSBoYW5kbGUgb2YgdGhlIGNvZGVjDQorKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KK1ZPX1MzMiBWT19BUEkgdm9HZXRBTVJXQkVuY0FQSSgNCisJCQkJCQkJICAgVk9fQVVESU9fQ09ERUNBUEkgKiBwRW5jSGFuZGxlICAgICAgLyogaS9vOiBDb2RlYyBoYW5kbGUgcG9pbnRlciAqLw0KKwkJCQkJCQkgICApDQorew0KKwlpZihOVUxMID09IHBFbmNIYW5kbGUpDQorCQlyZXR1cm4gVk9fRVJSX0lOVkFMSURfQVJHOw0KKwlwRW5jSGFuZGxlLT5Jbml0ID0gdm9BTVJXQl9Jbml0Ow0KKwlwRW5jSGFuZGxlLT5TZXRJbnB1dERhdGEgPSB2b0FNUldCX1NldElucHV0RGF0YTsNCisJcEVuY0hhbmRsZS0+R2V0T3V0cHV0RGF0YSA9IHZvQU1SV0JfR2V0T3V0cHV0RGF0YTsNCisJcEVuY0hhbmRsZS0+U2V0UGFyYW0gPSB2b0FNUldCX1NldFBhcmFtOw0KKwlwRW5jSGFuZGxlLT5HZXRQYXJhbSA9IHZvQU1SV0JfR2V0UGFyYW07DQorCXBFbmNIYW5kbGUtPlVuaW5pdCA9IHZvQU1SV0JfVW5pbml0Ow0KKw0KKwlyZXR1cm4gVk9fRVJSX05PTkU7DQorfQ0KKw0KKyNpZmRlZiBfX2NwbHVzcGx1cw0KK30NCisjZW5kaWYNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL3ZvaWNlZmFjLmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL3ZvaWNlZmFjLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTg3ZDc3NAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvdm9pY2VmYWMuYwpAQCAtMCwwICsxLDkyIEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogICBGaWxlOiB2b2ljZWZhYy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICBEZXNjcmlwdGlvbjogRmluZCB0aGUgdm9pY2luZyBmYWN0b3JzICgxID0gdm9pY2UgdG8gLTEgPSB1bnZvaWNlZCkgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICANCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2luY2x1ZGUgInR5cGVkZWYuaCINCisjaW5jbHVkZSAiYmFzaWNfb3AuaCINCisjaW5jbHVkZSAibWF0aF9vcC5oIg0KKw0KK1dvcmQxNiB2b2ljZV9mYWN0b3IoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChvKSBRMTUgICA6IGZhY3RvciAoLTE9dW52b2ljZWQgdG8gMT12b2ljZWQpICovDQorCQlXb3JkMTYgZXhjW10sICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRX2V4YyA6IHBpdGNoIGV4Y2l0YXRpb24gICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgUV9leGMsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgICA6IGV4YyBmb3JtYXQgICAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgZ2Fpbl9waXQsICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRMTQgICA6IGdhaW4gb2YgcGl0Y2ggICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgY29kZVtdLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBROSAgICA6IEZpeGVkIGNvZGVib29rIGV4Y2l0YXRpb24gICAgICAgICovDQorCQlXb3JkMTYgZ2Fpbl9jb2RlLCAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRMCAgICA6IGdhaW4gb2YgY29kZSAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgTF9zdWJmciAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgICA6IHN1YmZyYW1lIGxlbmd0aCAgICAgICAgICAgICAgICAgICovDQorCQkpDQorew0KKwlXb3JkMTYgdG1wLCBleHAsIGVuZXIxLCBleHAxLCBlbmVyMiwgZXhwMjsNCisJV29yZDMyIGksIExfdG1wOw0KKw0KKyNpZmRlZiBBU01fT1BUICAgICAgICAgICAgICAgLyogYXNtIG9wdGltaXphdGlvbiBicmFuY2ggKi8NCisJZW5lcjEgPSBleHRyYWN0X2goRG90X3Byb2R1Y3QxMl9hc20oZXhjLCBleGMsIExfc3ViZnIsICZleHAxKSk7DQorI2Vsc2UNCisJZW5lcjEgPSBleHRyYWN0X2goRG90X3Byb2R1Y3QxMihleGMsIGV4YywgTF9zdWJmciwgJmV4cDEpKTsNCisjZW5kaWYNCisJZXhwMSA9IGV4cDEgLSAoUV9leGMgKyBRX2V4Yyk7DQorCUxfdG1wID0gdm9fTF9tdWx0KGdhaW5fcGl0LCBnYWluX3BpdCk7DQorCWV4cCA9IG5vcm1fbChMX3RtcCk7DQorCXRtcCA9IGV4dHJhY3RfaChMX3RtcCA8PCBleHApOw0KKwllbmVyMSA9IHZvX211bHQoZW5lcjEsIHRtcCk7DQorCWV4cDEgPSBleHAxIC0gZXhwIC0gMTA7ICAgICAgICAvKiAxMCAtPiBnYWluX3BpdCBRMTQgdG8gUTkgKi8NCisNCisjaWZkZWYgQVNNX09QVCAgICAgICAgICAgICAgICAvKiBhc20gb3B0aW1pemF0aW9uIGJyYW5jaCAqLw0KKwllbmVyMiA9IGV4dHJhY3RfaChEb3RfcHJvZHVjdDEyX2FzbShjb2RlLCBjb2RlLCBMX3N1YmZyLCAmZXhwMikpOw0KKyNlbHNlDQorCWVuZXIyID0gZXh0cmFjdF9oKERvdF9wcm9kdWN0MTIoY29kZSwgY29kZSwgTF9zdWJmciwgJmV4cDIpKTsNCisjZW5kaWYNCisNCisJZXhwID0gbm9ybV9zKGdhaW5fY29kZSk7DQorCXRtcCA9IGdhaW5fY29kZSA8PCBleHA7DQorCXRtcCA9IHZvX211bHQodG1wLCB0bXApOw0KKwllbmVyMiA9IHZvX211bHQoZW5lcjIsIHRtcCk7DQorCWV4cDIgPSBleHAyIC0gKGV4cCArIGV4cCk7DQorDQorCWkgPSBleHAxIC0gZXhwMjsNCisNCisJaWYgKGkgPj0gMCkNCisJew0KKwkJZW5lcjEgPSBlbmVyMSA+PiAxOw0KKwkJZW5lcjIgPSBlbmVyMiA+PiAoaSArIDEpOw0KKwl9IGVsc2UNCisJew0KKwkJZW5lcjEgPSBlbmVyMSA+PiAoMSAtIGkpOw0KKwkJZW5lcjIgPSBlbmVyMiA+PiAxOw0KKwl9DQorDQorCXRtcCA9IHZvX3N1YihlbmVyMSwgZW5lcjIpOw0KKwllbmVyMSA9IGFkZDEoYWRkMShlbmVyMSwgZW5lcjIpLCAxKTsNCisNCisJaWYgKHRtcCA+PSAwKQ0KKwl7DQorCQl0bXAgPSBkaXZfcyh0bXAsIGVuZXIxKTsNCisJfSBlbHNlDQorCXsNCisJCXRtcCA9IHZvX25lZ2F0ZShkaXZfcyh2b19uZWdhdGUodG1wKSwgZW5lcjEpKTsNCisJfQ0KKw0KKwlyZXR1cm4gKHRtcCk7DQorfQ0KKw0KKw0KKw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvd2JfdmFkLmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL3diX3ZhZC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxMjY4NTMKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYW1yd2JlbmMvc3JjL3diX3ZhZC5jCkBAIC0wLDAgKzEsODA4IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogICAgICBGaWxlOiB3Yl92YWQuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICBEZXNjcmlwdGlvbjogVm9pY2UgQWN0aXZpdHkgRGV0ZWN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaW5jbHVkZSA8c3RkbGliLmg+DQorI2luY2x1ZGUgPHN0ZGlvLmg+DQorI2luY2x1ZGUgImNuc3QuaCINCisjaW5jbHVkZSAid2JfdmFkLmgiDQorI2luY2x1ZGUgInR5cGVkZWYuaCINCisjaW5jbHVkZSAiYmFzaWNfb3AuaCINCisjaW5jbHVkZSAibWF0aF9vcC5oIg0KKyNpbmNsdWRlICJ3Yl92YWRfYy5oIg0KKyNpbmNsdWRlICJtZW1fYWxpZ24uaCINCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiAgQ2FsY3VsYXRlIExvZzIgYW5kIHNjYWxlIHRoZSBzaWduYWw6DQorKg0KKyogICAgaWxvZzIoV29yZDMyIGluKSA9IC0xMDI0KmxvZzEwKGluICogMl4tMzEpL2xvZzEwKDIpLCB3aGVyZSBpbiA9IFsxLCAyXjMxLTFdDQorKg0KKyogIGlucHV0ICAgb3V0cHV0DQorKiAgMzI3NjggICAxNjM4NA0KKyogIDEgICAgICAgMzE3NDQNCisqDQorKiBXaGVuIGlucHV0IGlzIGluIHRoZSByYW5nZSBvZiBbMSwyXjE2XSwgbWF4IGVycm9yIGlzIDAuMDM4MCUuDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KK3N0YXRpYyBXb3JkMTYgaWxvZzIoICAgICAgICAgICAgICAgICAgICAgICAvKiByZXR1cm46IG91dHB1dCB2YWx1ZSBvZiB0aGUgbG9nMiAqLw0KKwkJV29yZDE2IG1hbnQgICAgICAgICAgICAgICAgICAgICAgICAvKiBpOiB2YWx1ZSB0byBiZSBjb252ZXJ0ZWQgKi8NCisJCSkNCit7DQorCVdvcmQxNiBleCwgZXgyLCByZXM7DQorCVdvcmQzMiBpLCBsX3RlbXA7DQorDQorCWlmIChtYW50IDw9IDApDQorCXsNCisJCW1hbnQgPSAxOyAgICAgICAgICAgICAgICAgICAgICAgICANCisJfQ0KKwlleCA9IG5vcm1fcyhtYW50KTsNCisJbWFudCA9IG1hbnQgPDwgZXg7DQorDQorCWZvciAoaSA9IDA7IGkgPCAzOyBpKyspDQorCQltYW50ID0gdm9fbXVsdChtYW50LCBtYW50KTsNCisJbF90ZW1wID0gdm9fTF9tdWx0KG1hbnQsIG1hbnQpOw0KKw0KKwlleDIgPSBub3JtX2wobF90ZW1wKTsNCisJbWFudCA9IGV4dHJhY3RfaChsX3RlbXAgPDwgZXgyKTsNCisNCisJcmVzID0gKGV4ICsgMTYpIDw8IDEwOw0KKwlyZXMgPSBhZGQxKHJlcywgKGV4MiA8PCA2KSk7DQorCXJlcyA9IHZvX3N1YihhZGQxKHJlcywgMTI3KSwgKG1hbnQgPj4gOCkpOw0KKwlyZXR1cm4gKHJlcyk7DQorfQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqDQorKiAgICAgRnVuY3Rpb24gICAgIDogZmlsdGVyNQ0KKyogICAgIFB1cnBvc2UgICAgICA6IEZpZnRoLW9yZGVyIGhhbGYtYmFuZCBsb3dwYXNzL2hpZ2hwYXNzIGZpbHRlciBwYWlyIHdpdGgNCisqICAgICAgICAgICAgICAgICAgICBkZWNpbWF0aW9uLg0KKyoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KK3N0YXRpYyB2b2lkIGZpbHRlcjUoDQorCQlXb3JkMTYgKiBpbjAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGkvbyA6IGlucHV0IHZhbHVlczsgb3V0cHV0IGxvdy1wYXNzIHBhcnQgICovDQorCQlXb3JkMTYgKiBpbjEsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGkvbyA6IGlucHV0IHZhbHVlczsgb3V0cHV0IGhpZ2gtcGFzcyBwYXJ0ICovDQorCQlXb3JkMTYgZGF0YVtdICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGkvbyA6IGZpbHRlciBtZW1vcnkgICAgICAgICAgICAgICAgICAgICAgICovDQorCQkpDQorew0KKwlXb3JkMTYgdGVtcDAsIHRlbXAxLCB0ZW1wMjsNCisNCisJdGVtcDAgPSB2b19zdWIoKmluMCwgdm9fbXVsdChDT0VGRjVfMSwgZGF0YVswXSkpOw0KKwl0ZW1wMSA9IGFkZDEoZGF0YVswXSwgdm9fbXVsdChDT0VGRjVfMSwgdGVtcDApKTsNCisJZGF0YVswXSA9IHRlbXAwOyAgICAgICAgICAgICAgICAgICAgICANCisNCisJdGVtcDAgPSB2b19zdWIoKmluMSwgdm9fbXVsdChDT0VGRjVfMiwgZGF0YVsxXSkpOw0KKwl0ZW1wMiA9IGFkZDEoZGF0YVsxXSwgdm9fbXVsdChDT0VGRjVfMiwgdGVtcDApKTsNCisJZGF0YVsxXSA9IHRlbXAwOyAgICAgICAgICAgICAgICAgICAgICAgDQorDQorCSppbjAgPSBleHRyYWN0X2goKHZvX0xfYWRkKHRlbXAxLCB0ZW1wMikgPDwgMTUpKTsgICANCisJKmluMSA9IGV4dHJhY3RfaCgodm9fTF9zdWIodGVtcDEsIHRlbXAyKSA8PCAxNSkpOyAgDQorfQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqDQorKiAgICAgRnVuY3Rpb24gICAgIDogZmlsdGVyMw0KKyogICAgIFB1cnBvc2UgICAgICA6IFRoaXJkLW9yZGVyIGhhbGYtYmFuZCBsb3dwYXNzL2hpZ2hwYXNzIGZpbHRlciBwYWlyIHdpdGgNCisqICAgICAgICAgICAgICAgICAgICBkZWNpbWF0aW9uLg0KKyoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KK3N0YXRpYyB2b2lkIGZpbHRlcjMoDQorCQlXb3JkMTYgKiBpbjAsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGkvbyA6IGlucHV0IHZhbHVlczsgb3V0cHV0IGxvdy1wYXNzIHBhcnQgICovDQorCQlXb3JkMTYgKiBpbjEsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGkvbyA6IGlucHV0IHZhbHVlczsgb3V0cHV0IGhpZ2gtcGFzcyBwYXJ0ICovDQorCQlXb3JkMTYgKiBkYXRhICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGkvbyA6IGZpbHRlciBtZW1vcnkgICAgICAgICAgICAgICAgICAgICAgICovDQorCQkpDQorew0KKwlXb3JkMTYgdGVtcDEsIHRlbXAyOw0KKw0KKwl0ZW1wMSA9IHZvX3N1YigqaW4xLCB2b19tdWx0KENPRUZGMywgKmRhdGEpKTsNCisJdGVtcDIgPSBhZGQxKCpkYXRhLCB2b19tdWx0KENPRUZGMywgdGVtcDEpKTsNCisJKmRhdGEgPSB0ZW1wMTsgICAgICAgICAgICAgICAgICAgICAgICANCisNCisJKmluMSA9IGV4dHJhY3RfaCgodm9fTF9zdWIoKmluMCwgdGVtcDIpIDw8IDE1KSk7ICAgDQorCSppbjAgPSBleHRyYWN0X2goKHZvX0xfYWRkKCppbjAsIHRlbXAyKSA8PCAxNSkpOyAgIA0KK30NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKg0KKyogICAgIEZ1bmN0aW9uICAgOiBsZXZlbF9jYWxjdWxhdGlvbg0KKyogICAgIFB1cnBvc2UgICAgOiBDYWxjdWxhdGUgc2lnbmFsIGxldmVsIGluIGEgc3ViLWJhbmQuIExldmVsIGlzIGNhbGN1bGF0ZWQNCisqICAgICAgICAgICAgICAgICAgYnkgc3VtbWluZyBhYnNvbHV0ZSB2YWx1ZXMgb2YgdGhlIGlucHV0IGRhdGEuDQorKg0KKyogICAgICAgICAgICAgICAgICBTaWduYWwgbGV2ZWwgY2FsY3VsYXRlZCBmcm9tIG9mIHRoZSBlbmQgb2YgdGhlIGZyYW1lDQorKiAgICAgICAgICAgICAgICAgIChkYXRhW2NvdW50MSAtIGNvdW50Ml0pIGlzIHN0b3JlZCB0byAoKnN1Yl9sZXZlbCkNCisqICAgICAgICAgICAgICAgICAgYW5kIGFkZGVkIHRvIHRoZSBsZXZlbCBvZiB0aGUgbmV4dCBmcmFtZS4NCisqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KK3N0YXRpYyBXb3JkMTYgbGV2ZWxfY2FsY3VsYXRpb24oICAgICAgICAgICAgICAgICAgICAgIC8qIHJldHVybjogc2lnbmFsIGxldmVsICovDQorCQlXb3JkMTYgZGF0YVtdLCAgICAgICAgICAgICAgICAgICAgICAgIC8qIGkgICA6IHNpZ25hbCBidWZmZXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2ICogc3ViX2xldmVsLCAgICAgICAgICAgICAgICAgICAvKiBpICAgOiBsZXZlbCBjYWxjdWxhdGVkIGF0IHRoZSBlbmQgb2YgdGhlIHByZXZpb3VzIGZyYW1lKi8NCisJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbyAgIDogbGV2ZWwgb2Ygc2lnbmFsIGNhbGN1bGF0ZWQgZnJvbSB0aGUgbGFzdCAgICAgICAgICovDQorCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qICAgICAgIChjb3VudDIgLSBjb3VudDEpIHNhbXBsZXMgICAgICAgICAgICAgICAgICAgICAgICAqLw0KKwkJV29yZDE2IGNvdW50MSwgICAgICAgICAgICAgICAgICAgICAgICAvKiBpICAgOiBudW1iZXIgb2Ygc2FtcGxlcyB0byBiZSBjb3VudGVkICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBjb3VudDIsICAgICAgICAgICAgICAgICAgICAgICAgLyogaSAgIDogbnVtYmVyIG9mIHNhbXBsZXMgdG8gYmUgY291bnRlZCAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgaW5kX20sICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGkgICA6IHN0ZXAgc2l6ZSBmb3IgdGhlIGluZGV4IG9mIHRoZSBkYXRhIGJ1ZmZlciAgICAgICAqLw0KKwkJV29yZDE2IGluZF9hLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpICAgOiBzdGFydGluZyBpbmRleCBvZiB0aGUgZGF0YSBidWZmZXIgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBzY2FsZSAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaSAgIDogc2NhbGluZyBmb3IgdGhlIGxldmVsIGNhbGN1bGF0aW9uICAgICAgICAgICAgICAgICovDQorCQkpDQorew0KKwlXb3JkMzIgaSwgbF90ZW1wMSwgbF90ZW1wMjsNCisJV29yZDE2IGxldmVsOw0KKw0KKwlsX3RlbXAxID0gMEw7ICAgICAgICAgICAgICAgICAgICAgICAgICANCisJZm9yIChpID0gY291bnQxOyBpIDwgY291bnQyOyBpKyspDQorCXsNCisJCWxfdGVtcDEgKz0gKGFic19zKGRhdGFbaW5kX20gKiBpICsgaW5kX2FdKTw8MSk7DQorCX0NCisNCisJbF90ZW1wMiA9IHZvX0xfYWRkKGxfdGVtcDEsIExfc2hsKCpzdWJfbGV2ZWwsIDE2IC0gc2NhbGUpKTsNCisJKnN1Yl9sZXZlbCA9IGV4dHJhY3RfaChMX3NobChsX3RlbXAxLCBzY2FsZSkpOyAgICAgIA0KKw0KKwlmb3IgKGkgPSAwOyBpIDwgY291bnQxOyBpKyspDQorCXsNCisJCWxfdGVtcDIgKz0gKGFic19zKGRhdGFbaW5kX20gKiBpICsgaW5kX2FdKTw8MSk7DQorCX0NCisJbGV2ZWwgPSBleHRyYWN0X2goTF9zaGwyKGxfdGVtcDIsIHNjYWxlKSk7DQorDQorCXJldHVybiBsZXZlbDsNCit9DQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyoNCisqICAgICBGdW5jdGlvbiAgICAgOiBmaWx0ZXJfYmFuaw0KKyogICAgIFB1cnBvc2UgICAgICA6IERpdmlkZSBpbnB1dCBzaWduYWwgaW50byBiYW5kcyBhbmQgY2FsY3VsYXRlIGxldmVsIG9mDQorKiAgICAgICAgICAgICAgICAgICAgdGhlIHNpZ25hbCBpbiBlYWNoIGJhbmQNCisqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCitzdGF0aWMgdm9pZCBmaWx0ZXJfYmFuaygNCisJCVZhZFZhcnMgKiBzdCwgICAgICAgICAgICAgICAgICAgICAgICAgLyogaS9vIDogU3RhdGUgc3RydWN0ICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBpbltdLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogaSAgIDogaW5wdXQgZnJhbWUgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBsZXZlbFtdICAgICAgICAgICAgICAgICAgICAgICAgLyogbyAgIDogc2lnbmFsIGxldmVscyBhdCBlYWNoIGJhbmQgKi8NCisJCSkNCit7DQorCVdvcmQzMiBpOw0KKwlXb3JkMTYgdG1wX2J1ZltGUkFNRV9MRU5dOw0KKw0KKwkvKiBzaGlmdCBpbnB1dCAxIGJpdCBkb3duIGZvciBzYWZlIHNjYWxpbmcgKi8NCisJZm9yIChpID0gMDsgaSA8IEZSQU1FX0xFTjsgaSsrKQ0KKwl7DQorCQl0bXBfYnVmW2ldID0gaW5baV0gPj4gMTsgICAgICAgDQorCX0NCisNCisJLyogcnVuIHRoZSBmaWx0ZXIgYmFuayAqLw0KKwlmb3IgKGkgPSAwOyBpIDwgMTI4OyBpKyspDQorCXsNCisJCWZpbHRlcjUoJnRtcF9idWZbMiAqIGldLCAmdG1wX2J1ZlsyICogaSArIDFdLCBzdC0+YV9kYXRhNVswXSk7DQorCX0NCisJZm9yIChpID0gMDsgaSA8IDY0OyBpKyspDQorCXsNCisJCWZpbHRlcjUoJnRtcF9idWZbNCAqIGldLCAmdG1wX2J1Zls0ICogaSArIDJdLCBzdC0+YV9kYXRhNVsxXSk7DQorCQlmaWx0ZXI1KCZ0bXBfYnVmWzQgKiBpICsgMV0sICZ0bXBfYnVmWzQgKiBpICsgM10sIHN0LT5hX2RhdGE1WzJdKTsNCisJfQ0KKwlmb3IgKGkgPSAwOyBpIDwgMzI7IGkrKykNCisJew0KKwkJZmlsdGVyNSgmdG1wX2J1Zls4ICogaV0sICZ0bXBfYnVmWzggKiBpICsgNF0sIHN0LT5hX2RhdGE1WzNdKTsNCisJCWZpbHRlcjUoJnRtcF9idWZbOCAqIGkgKyAyXSwgJnRtcF9idWZbOCAqIGkgKyA2XSwgc3QtPmFfZGF0YTVbNF0pOw0KKwkJZmlsdGVyMygmdG1wX2J1Zls4ICogaSArIDNdLCAmdG1wX2J1Zls4ICogaSArIDddLCAmc3QtPmFfZGF0YTNbMF0pOw0KKwl9DQorCWZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKQ0KKwl7DQorCQlmaWx0ZXIzKCZ0bXBfYnVmWzE2ICogaSArIDBdLCAmdG1wX2J1ZlsxNiAqIGkgKyA4XSwgJnN0LT5hX2RhdGEzWzFdKTsNCisJCWZpbHRlcjMoJnRtcF9idWZbMTYgKiBpICsgNF0sICZ0bXBfYnVmWzE2ICogaSArIDEyXSwgJnN0LT5hX2RhdGEzWzJdKTsNCisJCWZpbHRlcjMoJnRtcF9idWZbMTYgKiBpICsgNl0sICZ0bXBfYnVmWzE2ICogaSArIDE0XSwgJnN0LT5hX2RhdGEzWzNdKTsNCisJfQ0KKw0KKwlmb3IgKGkgPSAwOyBpIDwgODsgaSsrKQ0KKwl7DQorCQlmaWx0ZXIzKCZ0bXBfYnVmWzMyICogaSArIDBdLCAmdG1wX2J1ZlszMiAqIGkgKyAxNl0sICZzdC0+YV9kYXRhM1s0XSk7DQorCQlmaWx0ZXIzKCZ0bXBfYnVmWzMyICogaSArIDhdLCAmdG1wX2J1ZlszMiAqIGkgKyAyNF0sICZzdC0+YV9kYXRhM1s1XSk7DQorCX0NCisNCisJLyogY2FsY3VsYXRlIGxldmVscyBpbiBlYWNoIGZyZXF1ZW5jeSBiYW5kICovDQorDQorCS8qIDQ4MDAgLSA2NDAwIEh6ICovDQorCWxldmVsWzExXSA9IGxldmVsX2NhbGN1bGF0aW9uKHRtcF9idWYsICZzdC0+c3ViX2xldmVsWzExXSwgMTYsIDY0LCA0LCAxLCAxNCk7ICAgDQorCS8qIDQwMDAgLSA0ODAwIEh6ICovDQorCWxldmVsWzEwXSA9IGxldmVsX2NhbGN1bGF0aW9uKHRtcF9idWYsICZzdC0+c3ViX2xldmVsWzEwXSwgOCwgMzIsIDgsIDcsIDE1KTsgICANCisJLyogMzIwMCAtIDQwMDAgSHogKi8NCisJbGV2ZWxbOV0gPSBsZXZlbF9jYWxjdWxhdGlvbih0bXBfYnVmLCAmc3QtPnN1Yl9sZXZlbFs5XSw4LCAzMiwgOCwgMywgMTUpOyAgIA0KKwkvKiAyNDAwIC0gMzIwMCBIeiAqLw0KKwlsZXZlbFs4XSA9IGxldmVsX2NhbGN1bGF0aW9uKHRtcF9idWYsICZzdC0+c3ViX2xldmVsWzhdLDgsIDMyLCA4LCAyLCAxNSk7ICAgDQorCS8qIDIwMDAgLSAyNDAwIEh6ICovDQorCWxldmVsWzddID0gbGV2ZWxfY2FsY3VsYXRpb24odG1wX2J1ZiwgJnN0LT5zdWJfbGV2ZWxbN10sNCwgMTYsIDE2LCAxNCwgMTYpOyAgICAgICANCisJLyogMTYwMCAtIDIwMDAgSHogKi8NCisJbGV2ZWxbNl0gPSBsZXZlbF9jYWxjdWxhdGlvbih0bXBfYnVmLCAmc3QtPnN1Yl9sZXZlbFs2XSw0LCAxNiwgMTYsIDYsIDE2KTsgICAgICAgIA0KKwkvKiAxMjAwIC0gMTYwMCBIeiAqLw0KKwlsZXZlbFs1XSA9IGxldmVsX2NhbGN1bGF0aW9uKHRtcF9idWYsICZzdC0+c3ViX2xldmVsWzVdLDQsIDE2LCAxNiwgNCwgMTYpOyAgICAgICAgDQorCS8qIDgwMCAtIDEyMDAgSHogKi8NCisJbGV2ZWxbNF0gPSBsZXZlbF9jYWxjdWxhdGlvbih0bXBfYnVmLCAmc3QtPnN1Yl9sZXZlbFs0XSw0LCAxNiwgMTYsIDEyLCAxNik7ICAgICAgIA0KKwkvKiA2MDAgLSA4MDAgSHogKi8NCisJbGV2ZWxbM10gPSBsZXZlbF9jYWxjdWxhdGlvbih0bXBfYnVmLCAmc3QtPnN1Yl9sZXZlbFszXSwyLCA4LCAzMiwgOCwgMTcpOyANCisJLyogNDAwIC0gNjAwIEh6ICovDQorCWxldmVsWzJdID0gbGV2ZWxfY2FsY3VsYXRpb24odG1wX2J1ZiwgJnN0LT5zdWJfbGV2ZWxbMl0sMiwgOCwgMzIsIDI0LCAxNyk7ICAgICAgICANCisJLyogMjAwIC0gNDAwIEh6ICovDQorCWxldmVsWzFdID0gbGV2ZWxfY2FsY3VsYXRpb24odG1wX2J1ZiwgJnN0LT5zdWJfbGV2ZWxbMV0sMiwgOCwgMzIsIDE2LCAxNyk7ICAgICAgICANCisJLyogMCAtIDIwMCBIeiAqLw0KKwlsZXZlbFswXSA9IGxldmVsX2NhbGN1bGF0aW9uKHRtcF9idWYsICZzdC0+c3ViX2xldmVsWzBdLDIsIDgsIDMyLCAwLCAxNyk7IA0KK30NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKg0KKyogICAgIEZ1bmN0aW9uICAgOiB1cGRhdGVfY250cmwNCisqICAgICBQdXJwb3NlICAgIDogQ29udHJvbCB1cGRhdGUgb2YgdGhlIGJhY2tncm91bmQgbm9pc2UgZXN0aW1hdGUuDQorKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorc3RhdGljIHZvaWQgdXBkYXRlX2NudHJsKA0KKwkJVmFkVmFycyAqIHN0LCAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpL28gOiBTdGF0ZSBzdHJ1Y3R1cmUgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgbGV2ZWxbXSAgICAgICAgICAgICAgICAgICAgICAgIC8qIGkgICA6IHN1Yi1iYW5kIGxldmVscyBvZiB0aGUgaW5wdXQgZnJhbWUgKi8NCisJCSkNCit7DQorCVdvcmQzMiBpOw0KKwlXb3JkMTYgbnVtLCB0ZW1wLCBzdGF0X3JhdCwgZXhwLCBkZW5vbTsNCisJV29yZDE2IGFscGhhOw0KKw0KKwkvKiBpZiBhIHRvbmUgaGFzIGJlZW4gZGV0ZWN0ZWQgZm9yIGEgd2hpbGUsIGluaXRpYWxpemUgc3RhdF9jb3VudCAqLw0KKwlpZiAoc3ViKChXb3JkMTYpIChzdC0+dG9uZV9mbGFnICYgMHg3YzAwKSwgMHg3YzAwKSA9PSAwKQ0KKwl7DQorCQlzdC0+c3RhdF9jb3VudCA9IFNUQVRfQ09VTlQ7ICAgICAgDQorCX0gZWxzZQ0KKwl7DQorCQkvKiBpZiA4IGxhc3QgdmFkLWRlY2lzaW9ucyBoYXZlIGJlZW4gIjAiLCByZWluaXRpYWxpemUgc3RhdF9jb3VudCAqLw0KKwkJaWYgKChzdC0+dmFkcmVnICYgMHg3ZjgwKSA9PSAwKQ0KKwkJew0KKwkJCXN0LT5zdGF0X2NvdW50ID0gU1RBVF9DT1VOVDsgICANCisJCX0gZWxzZQ0KKwkJew0KKwkJCXN0YXRfcmF0ID0gMDsgICAgICAgICAgICAgICAgICANCisJCQlmb3IgKGkgPSAwOyBpIDwgQ09NUExFTjsgaSsrKQ0KKwkJCXsNCisJCQkJaWYobGV2ZWxbaV0gPiBzdC0+YXZlX2xldmVsW2ldKQ0KKwkJCQl7DQorCQkJCQludW0gPSBsZXZlbFtpXTsgICAgICAgIA0KKwkJCQkJZGVub20gPSBzdC0+YXZlX2xldmVsW2ldOyAgIA0KKwkJCQl9IGVsc2UNCisJCQkJew0KKwkJCQkJbnVtID0gc3QtPmF2ZV9sZXZlbFtpXTsNCisJCQkJCWRlbm9tID0gbGV2ZWxbaV07ICAgICAgDQorCQkJCX0NCisJCQkJLyogTGltaXQgbmltaW11bSB2YWx1ZSBvZiBudW0gYW5kIGRlbm9tIHRvIFNUQVRfVEhSX0xFVkVMICovDQorCQkJCWlmKG51bSA8IFNUQVRfVEhSX0xFVkVMKQ0KKwkJCQl7DQorCQkJCQludW0gPSBTVEFUX1RIUl9MRVZFTDsgIA0KKwkJCQl9DQorCQkJCWlmKGRlbm9tIDwgU1RBVF9USFJfTEVWRUwpDQorCQkJCXsNCisJCQkJCWRlbm9tID0gU1RBVF9USFJfTEVWRUw7DQorCQkJCX0NCisJCQkJZXhwID0gbm9ybV9zKGRlbm9tKTsNCisJCQkJZGVub20gPSBkZW5vbSA8PCBleHA7DQorDQorCQkJCS8qIHN0YXRfcmF0ID0gbnVtL2Rlbm9tICogNjQgKi8NCisJCQkJdGVtcCA9IGRpdl9zKG51bSA+PiAxLCBkZW5vbSk7DQorCQkJCXN0YXRfcmF0ID0gYWRkMShzdGF0X3JhdCwgc2hyKHRlbXAsICg4IC0gZXhwKSkpOw0KKwkJCX0NCisNCisJCQkvKiBjb21wYXJlIHN0YXRfcmF0IHdpdGggYSB0aHJlc2hvbGQgYW5kIHVwZGF0ZSBzdGF0X2NvdW50ICovDQorCQkJaWYoc3RhdF9yYXQgPiBTVEFUX1RIUikNCisJCQl7DQorCQkJCXN0LT5zdGF0X2NvdW50ID0gU1RBVF9DT1VOVDsgICAgDQorCQkJfSBlbHNlDQorCQkJew0KKwkJCQlpZiAoKHN0LT52YWRyZWcgJiAweDQwMDApICE9IDApDQorCQkJCXsNCisNCisJCQkJCWlmIChzdC0+c3RhdF9jb3VudCAhPSAwKQ0KKwkJCQkJew0KKwkJCQkJCXN0LT5zdGF0X2NvdW50ID0gc3QtPnN0YXRfY291bnQgLSAxOyAgICAgICANCisJCQkJCX0NCisJCQkJfQ0KKwkJCX0NCisJCX0NCisJfQ0KKw0KKwkvKiBVcGRhdGUgYXZlcmFnZSBhbXBsaXR1ZGUgZXN0aW1hdGUgZm9yIHN0YXRpb25hcml0eSBlc3RpbWF0aW9uICovDQorCWFscGhhID0gQUxQSEE0OyAgICAgICAgICAgICAgICAgICAgICAgIA0KKwlpZihzdC0+c3RhdF9jb3VudCA9PSBTVEFUX0NPVU5UKQ0KKwl7DQorCQlhbHBoYSA9IDMyNzY3OyAgICAgICAgICAgICAgICAgICAgDQorCX0gZWxzZSBpZiAoKHN0LT52YWRyZWcgJiAweDQwMDApID09IDApDQorCXsNCisJCWFscGhhID0gQUxQSEE1OyAgICAgICAgICAgICAgICAgICANCisJfQ0KKwlmb3IgKGkgPSAwOyBpIDwgQ09NUExFTjsgaSsrKQ0KKwl7DQorCQlzdC0+YXZlX2xldmVsW2ldID0gYWRkMShzdC0+YXZlX2xldmVsW2ldLCB2b19tdWx0X3IoYWxwaGEsIHZvX3N1YihsZXZlbFtpXSwgc3QtPmF2ZV9sZXZlbFtpXSkpKTsgICANCisJfQ0KK30NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKg0KKyogICAgIEZ1bmN0aW9uICAgICA6IGhhbmdvdmVyX2FkZGl0aW9uDQorKiAgICAgUHVycG9zZSAgICAgIDogQWRkIGhhbmdvdmVyIGFmdGVyIHNwZWVjaCBidXJzdHMNCisqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCitzdGF0aWMgV29yZDE2IGhhbmdvdmVyX2FkZGl0aW9uKCAgICAgICAgICAgICAgICAgICAgICAvKiByZXR1cm46IFZBRF9mbGFnIGluZGljYXRpbmcgZmluYWwgVkFEIGRlY2lzaW9uICovDQorCQlWYWRWYXJzICogc3QsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGkvbyA6IFN0YXRlIHN0cnVjdHVyZSAgICAgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgbG93X3Bvd2VyLCAgICAgICAgICAgICAgICAgICAgIC8qIGkgICA6IGZsYWcgcG93ZXIgb2YgdGhlIGlucHV0IGZyYW1lICAgICovDQorCQlXb3JkMTYgaGFuZ19sZW4sICAgICAgICAgICAgICAgICAgICAgIC8qIGkgICA6IGhhbmdvdmVyIGxlbmd0aCAqLw0KKwkJV29yZDE2IGJ1cnN0X2xlbiAgICAgICAgICAgICAgICAgICAgICAvKiBpICAgOiBtaW5pbXVtIGJ1cnN0IGxlbmd0aCBmb3IgaGFuZ292ZXIgYWRkaXRpb24gKi8NCisJCSkNCit7DQorCS8qIGlmIHRoZSBpbnB1dCBwb3dlciAocG93X3N1bSkgaXMgbG93ZXIgdGhhbiBhIHRocmVzaG9sZCwgY2xlYXIgY291bnRlcnMgYW5kIHNldCBWQURfZmxhZyB0byAiMCIgICAgICAgICAqLw0KKwlpZiAobG93X3Bvd2VyICE9IDApDQorCXsNCisJCXN0LT5idXJzdF9jb3VudCA9IDA7ICAgICAgICAgICAgICAgDQorCQlzdC0+aGFuZ19jb3VudCA9IDA7ICAgICAgICAgICAgICAgIA0KKwkJcmV0dXJuIDA7DQorCX0NCisJLyogdXBkYXRlIHRoZSBjb3VudGVycyAoaGFuZ19jb3VudCwgYnVyc3RfY291bnQpICovDQorCWlmICgoc3QtPnZhZHJlZyAmIDB4NDAwMCkgIT0gMCkNCisJew0KKwkJc3QtPmJ1cnN0X2NvdW50ID0gc3QtPmJ1cnN0X2NvdW50ICsgMTsgICAgDQorCQlpZihzdC0+YnVyc3RfY291bnQgPj0gYnVyc3RfbGVuKQ0KKwkJew0KKwkJCXN0LT5oYW5nX2NvdW50ID0gaGFuZ19sZW47ICAgICANCisJCX0NCisJCXJldHVybiAxOw0KKwl9IGVsc2UNCisJew0KKwkJc3QtPmJ1cnN0X2NvdW50ID0gMDsgICAgICAgICAgICAgICANCisJCWlmIChzdC0+aGFuZ19jb3VudCA+IDApDQorCQl7DQorCQkJc3QtPmhhbmdfY291bnQgPSBzdC0+aGFuZ19jb3VudCAtIDE7ICAgIA0KKwkJCXJldHVybiAxOw0KKwkJfQ0KKwl9DQorCXJldHVybiAwOw0KK30NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKg0KKyogICAgIEZ1bmN0aW9uICAgOiBub2lzZV9lc3RpbWF0ZV91cGRhdGUNCisqICAgICBQdXJwb3NlICAgIDogVXBkYXRlIG9mIGJhY2tncm91bmQgbm9pc2UgZXN0aW1hdGUNCisqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCitzdGF0aWMgdm9pZCBub2lzZV9lc3RpbWF0ZV91cGRhdGUoDQorCQlWYWRWYXJzICogc3QsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGkvbyA6IFN0YXRlIHN0cnVjdHVyZSAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBsZXZlbFtdICAgICAgICAgICAgICAgICAgICAgICAgLyogaSAgIDogc3ViLWJhbmQgbGV2ZWxzIG9mIHRoZSBpbnB1dCBmcmFtZSAqLw0KKwkJKQ0KK3sNCisJV29yZDMyIGk7IA0KKwlXb3JkMTYgYWxwaGFfdXAsIGFscGhhX2Rvd24sIGJja3JfYWRkID0gMjsNCisNCisJLyogQ29udHJvbCB1cGRhdGUgb2YgYmNrcl9lc3RbXSAqLw0KKwl1cGRhdGVfY250cmwoc3QsIGxldmVsKTsNCisNCisJLyogQ2hvb3NlIHVwZGF0ZSBzcGVlZCAqLw0KKwlpZiAoKDB4NzgwMCAmIHN0LT52YWRyZWcpID09IDApDQorCXsNCisJCWFscGhhX3VwID0gQUxQSEFfVVAxOyAgICAgICAgICAgICAgDQorCQlhbHBoYV9kb3duID0gQUxQSEFfRE9XTjE7ICAgICAgICAgIA0KKwl9IGVsc2UNCisJew0KKwkJaWYgKChzdC0+c3RhdF9jb3VudCA9PSAwKSkNCisJCXsNCisJCQlhbHBoYV91cCA9IEFMUEhBX1VQMjsgICAgICAgICAgDQorCQkJYWxwaGFfZG93biA9IEFMUEhBX0RPV04yOyAgICAgIA0KKwkJfSBlbHNlDQorCQl7DQorCQkJYWxwaGFfdXAgPSAwOyAgICAgICAgICAgICAgICAgIA0KKwkJCWFscGhhX2Rvd24gPSBBTFBIQTM7ICAgICAgICAgICANCisJCQliY2tyX2FkZCA9IDA7ICAgICAgICAgICAgICAgICAgDQorCQl9DQorCX0NCisNCisJLyogVXBkYXRlIG5vaXNlIGVzdGltYXRlIChiY2tyX2VzdCkgKi8NCisJZm9yIChpID0gMDsgaSA8IENPTVBMRU47IGkrKykNCisJew0KKwkJV29yZDE2IHRlbXA7DQorCQl0ZW1wID0gKHN0LT5vbGRfbGV2ZWxbaV0gLSBzdC0+YmNrcl9lc3RbaV0pOw0KKw0KKwkJaWYgKHRlbXAgPCAwKQ0KKwkJeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB1cGRhdGUgZG93bndhcmRzICovDQorCQkJc3QtPmJja3JfZXN0W2ldID0gYWRkMSgtMiwgYWRkKHN0LT5iY2tyX2VzdFtpXSx2b19tdWx0X3IoYWxwaGFfZG93biwgdGVtcCkpKTsgDQorCQkJLyogbGltaXQgbWluaW11bSB2YWx1ZSBvZiB0aGUgbm9pc2UgZXN0aW1hdGUgdG8gTk9JU0VfTUlOICovDQorCQkJaWYoc3QtPmJja3JfZXN0W2ldIDwgTk9JU0VfTUlOKQ0KKwkJCXsNCisJCQkJc3QtPmJja3JfZXN0W2ldID0gTk9JU0VfTUlOOyAgIA0KKwkJCX0NCisJCX0gZWxzZQ0KKwkJeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB1cGRhdGUgdXB3YXJkcyAqLw0KKwkJCXN0LT5iY2tyX2VzdFtpXSA9IGFkZDEoYmNrcl9hZGQsIGFkZDEoc3QtPmJja3JfZXN0W2ldLHZvX211bHRfcihhbHBoYV91cCwgdGVtcCkpKTsgICANCisNCisJCQkvKiBsaW1pdCBtYXhpbXVtIHZhbHVlIG9mIHRoZSBub2lzZSBlc3RpbWF0ZSB0byBOT0lTRV9NQVggKi8NCisJCQlpZihzdC0+YmNrcl9lc3RbaV0gPiBOT0lTRV9NQVgpDQorCQkJew0KKwkJCQlzdC0+YmNrcl9lc3RbaV0gPSBOT0lTRV9NQVg7ICAgIA0KKwkJCX0NCisJCX0NCisJfQ0KKw0KKwkvKiBVcGRhdGUgc2lnbmFsIGxldmVscyBvZiB0aGUgcHJldmlvdXMgZnJhbWUgKG9sZF9sZXZlbCkgKi8NCisJZm9yIChpID0gMDsgaSA8IENPTVBMRU47IGkrKykNCisJew0KKwkJc3QtPm9sZF9sZXZlbFtpXSA9IGxldmVsW2ldOyAgICAgIA0KKwl9DQorfQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqDQorKiAgICAgRnVuY3Rpb24gICAgIDogdmFkX2RlY2lzaW9uDQorKiAgICAgUHVycG9zZSAgICAgIDogQ2FsY3VsYXRlcyBWQURfZmxhZw0KKyoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KK3N0YXRpYyBXb3JkMTYgdmFkX2RlY2lzaW9uKCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHJldHVybiB2YWx1ZSA6IFZBRF9mbGFnICovDQorCQlWYWRWYXJzICogc3QsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGkvbyA6IFN0YXRlIHN0cnVjdHVyZSAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBsZXZlbFtDT01QTEVOXSwgICAgICAgICAgICAgICAgLyogaSAgIDogc3ViLWJhbmQgbGV2ZWxzIG9mIHRoZSBpbnB1dCBmcmFtZSAqLw0KKwkJV29yZDMyIHBvd19zdW0gICAgICAgICAgICAgICAgICAgICAgICAvKiBpICAgOiBwb3dlciBvZiB0aGUgaW5wdXQgZnJhbWUgICAgICAgICAgICovDQorCQkpDQorew0KKwlXb3JkMzIgaTsNCisJV29yZDMyIExfc25yX3N1bTsNCisJV29yZDMyIExfdGVtcDsNCisJV29yZDE2IHZhZF90aHIsIHRlbXAsIG5vaXNlX2xldmVsOw0KKwlXb3JkMTYgbG93X3Bvd2VyX2ZsYWc7DQorCVdvcmQxNiBoYW5nX2xlbiwgYnVyc3RfbGVuOw0KKwlXb3JkMTYgaWxvZzJfc3BlZWNoX2xldmVsLCBpbG9nMl9ub2lzZV9sZXZlbDsNCisJV29yZDE2IHRlbXAyOw0KKw0KKwkvKiBDYWxjdWxhdGUgc3F1YXJlZCBzdW0gb2YgdGhlIGlucHV0IGxldmVscyAobGV2ZWwpIGRpdmlkZWQgYnkgdGhlIGJhY2tncm91bmQgbm9pc2UgY29tcG9uZW50cw0KKwkgKiAoYmNrcl9lc3QpLiAqLw0KKwlMX3Nucl9zdW0gPSAwOyAgICAgICAgICAgICAgICAgICAgICAgIA0KKwlmb3IgKGkgPSAwOyBpIDwgQ09NUExFTjsgaSsrKQ0KKwl7DQorCQlXb3JkMTYgZXhwOw0KKw0KKwkJZXhwID0gbm9ybV9zKHN0LT5iY2tyX2VzdFtpXSk7DQorCQl0ZW1wID0gKHN0LT5iY2tyX2VzdFtpXSA8PCBleHApOw0KKwkJdGVtcCA9IGRpdl9zKChsZXZlbFtpXSA+PiAxKSwgdGVtcCk7DQorCQl0ZW1wID0gc2hsKHRlbXAsIChleHAgLSAoVU5JUlNIRlQgLSAxKSkpOw0KKwkJTF9zbnJfc3VtID0gTF9tYWMoTF9zbnJfc3VtLCB0ZW1wLCB0ZW1wKTsNCisJfQ0KKw0KKwkvKiBDYWxjdWxhdGUgYXZlcmFnZSBsZXZlbCBvZiBlc3RpbWF0ZWQgYmFja2dyb3VuZCBub2lzZSAqLw0KKwlMX3RlbXAgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwlmb3IgKGkgPSAxOyBpIDwgQ09NUExFTjsgaSsrKSAgICAgICAgICAvKiBpZ25vcmUgbG93ZXN0IGJhbmQgKi8NCisJew0KKwkJTF90ZW1wID0gdm9fTF9hZGQoTF90ZW1wLCBzdC0+YmNrcl9lc3RbaV0pOw0KKwl9DQorDQorCW5vaXNlX2xldmVsID0gZXh0cmFjdF9oKChMX3RlbXAgPDwgMTIpKTsNCisJLyogaWYgU05SIGlzIGxvd2VyIHRoYW4gYSB0aHJlc2hvbGQgKE1JTl9TUEVFQ0hfU05SKSwgYW5kIGluY3JlYXNlIHNwZWVjaF9sZXZlbCAqLw0KKwl0ZW1wID0gdm9fbXVsdChub2lzZV9sZXZlbCwgTUlOX1NQRUVDSF9TTlIpIDw8IDM7DQorDQorCWlmKHN0LT5zcGVlY2hfbGV2ZWwgPCB0ZW1wKQ0KKwl7DQorCQlzdC0+c3BlZWNoX2xldmVsID0gdGVtcDsgICAgICAgICAgDQorCX0NCisJaWxvZzJfbm9pc2VfbGV2ZWwgPSBpbG9nMihub2lzZV9sZXZlbCk7DQorDQorCS8qIElmIFNOUiBpcyB2ZXJ5IHBvb3IsIHNwZWVjaF9sZXZlbCBpcyBwcm9iYWJseSBjb3JydXB0ZWQgYnkgbm9pc2UgbGV2ZWwuIFRoaXMgaXMgY29ycmVjdHJlZCBieQ0KKwkgKiBzdWJ0cmFjdGluZyBNSU5fU1BFRUNIX1NOUipub2lzZV9sZXZlbCBmcm9tIHNwZWVjaCBsZXZlbCAqLw0KKwlpbG9nMl9zcGVlY2hfbGV2ZWwgPSBpbG9nMihzdC0+c3BlZWNoX2xldmVsIC0gdGVtcCk7DQorDQorCXRlbXAgPSBhZGQxKHZvX211bHQoTk9fU0xPUEUsIChpbG9nMl9ub2lzZV9sZXZlbCAtIE5PX1AxKSksIFRIUl9ISUdIKTsNCisNCisJdGVtcDIgPSBhZGQxKFNQX0NIX01JTiwgdm9fbXVsdChTUF9TTE9QRSwgKGlsb2cyX3NwZWVjaF9sZXZlbCAtIFNQX1AxKSkpOw0KKwlpZiAodGVtcDIgPCBTUF9DSF9NSU4pDQorCXsNCisJCXRlbXAyID0gU1BfQ0hfTUlOOyAgICAgICAgICAgICAgICAgDQorCX0NCisJaWYgKHRlbXAyID4gU1BfQ0hfTUFYKQ0KKwl7DQorCQl0ZW1wMiA9IFNQX0NIX01BWDsgICAgICAgICAgICAgICAgIA0KKwl9DQorCXZhZF90aHIgPSB0ZW1wICsgdGVtcDI7DQorDQorCWlmKHZhZF90aHIgPCBUSFJfTUlOKQ0KKwl7DQorCQl2YWRfdGhyID0gVEhSX01JTjsgICAgICAgICAgICAgICAgIA0KKwl9DQorCS8qIFNoaWZ0IFZBRCBkZWNpc2lvbiByZWdpc3RlciAqLw0KKwlzdC0+dmFkcmVnID0gKHN0LT52YWRyZWcgPj4gMSk7ICAgICAgIA0KKw0KKwkvKiBNYWtlIGludGVybWVkaWF0ZSBWQUQgZGVjaXNpb24gKi8NCisJaWYoTF9zbnJfc3VtID4gdm9fTF9tdWx0KHZhZF90aHIsICg1MTIgKiBDT01QTEVOKSkpDQorCXsNCisJCXN0LT52YWRyZWcgPSAoV29yZDE2KSAoc3QtPnZhZHJlZyB8IDB4NDAwMCk7IA0KKwl9DQorCS8qIGNoZWNrIGlmIHRoZSBpbnB1dCBwb3dlciAocG93X3N1bSkgaXMgbG93ZXIgdGhhbiBhIHRocmVzaG9sZCIgKi8NCisJaWYocG93X3N1bSA8IFZBRF9QT1dfTE9XKQ0KKwl7DQorCQlsb3dfcG93ZXJfZmxhZyA9IDE7ICAgICAgICAgICAgICAgDQorCX0gZWxzZQ0KKwl7DQorCQlsb3dfcG93ZXJfZmxhZyA9IDA7ICAgICAgICAgICAgICAgDQorCX0NCisJLyogVXBkYXRlIGJhY2tncm91bmQgbm9pc2UgZXN0aW1hdGVzICovDQorCW5vaXNlX2VzdGltYXRlX3VwZGF0ZShzdCwgbGV2ZWwpOw0KKw0KKwkvKiBDYWxjdWxhdGUgdmFsdWVzIGZvciBoYW5nX2xlbiBhbmQgYnVyc3RfbGVuIGJhc2VkIG9uIHZhZF90aHIgKi8NCisJaGFuZ19sZW4gPSBhZGQxKHZvX211bHQoSEFOR19TTE9QRSwgKHZhZF90aHIgLSBIQU5HX1AxKSksIEhBTkdfSElHSCk7DQorCWlmKGhhbmdfbGVuIDwgSEFOR19MT1cpDQorCXsNCisJCWhhbmdfbGVuID0gSEFOR19MT1c7ICAgICAgICAgICAgICANCisJfQ0KKwlidXJzdF9sZW4gPSBhZGQxKHZvX211bHQoQlVSU1RfU0xPUEUsICh2YWRfdGhyIC0gQlVSU1RfUDEpKSwgQlVSU1RfSElHSCk7DQorDQorCXJldHVybiAoaGFuZ292ZXJfYWRkaXRpb24oc3QsIGxvd19wb3dlcl9mbGFnLCBoYW5nX2xlbiwgYnVyc3RfbGVuKSk7DQorfQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqDQorKiAgICAgRnVuY3Rpb24gOiBFc3RpbWF0ZV9TcGVlY2goKQ0KKyogICAgIFB1cnBvc2UgIDogRXN0aW1hdGUgc3BlZWNoIGxldmVsDQorKg0KKyogTWF4aW11bSBzaWduYWwgbGV2ZWwgaXMgc2VhcmNoZWQgYW5kIHN0b3JlZCB0byB0aGUgdmFyaWFibGUgc3BfbWF4Lg0KKyogVGhlIHNwZWVjaCBmcmFtZXMgbXVzdCBsb2NhdGUgd2l0aGluIFNQX0VTVF9DT1VOVCBudW1iZXIgb2YgZnJhbWVzLg0KKyogVGh1cywgbm9pc3kgZnJhbWVzIGhhdmluZyBvY2Nhc2lvbmFsIFZBRCA9ICIxIiBkZWNpc2lvbnMgd2lsbCBub3QNCisqIGFmZmVjdCB0byB0aGUgZXN0aW1hdGVkIHNwZWVjaF9sZXZlbC4NCisqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCitzdGF0aWMgdm9pZCBFc3RpbWF0ZV9TcGVlY2goDQorCQlWYWRWYXJzICogc3QsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGkvbyA6IFN0YXRlIHN0cnVjdHVyZSAgICAqLw0KKwkJV29yZDE2IGluX2xldmVsICAgICAgICAgICAgICAgICAgICAgICAvKiBsZXZlbCBvZiB0aGUgaW5wdXQgZnJhbWUgKi8NCisJCSkNCit7DQorCVdvcmQxNiBhbHBoYTsNCisNCisJLyogaWYgdGhlIHJlcXVpcmVkIGFjdGl2aXR5IGNvdW50IGNhbm5vdCBiZSBhY2hpZXZlZCwgcmVzZXQgY291bnRlcnMgKi8NCisJaWYoKHN0LT5zcF9lc3RfY250IC0gc3QtPnNwX21heF9jbnQpID4gKFNQX0VTVF9DT1VOVCAtIFNQX0FDVElWSVRZX0NPVU5UKSkNCisJew0KKwkJc3QtPnNwX2VzdF9jbnQgPSAwOyAgICAgICAgICAgICAgICANCisJCXN0LT5zcF9tYXggPSAwOyAgICAgICAgICAgICAgICAgICAgDQorCQlzdC0+c3BfbWF4X2NudCA9IDA7ICAgICAgICAgICAgICAgIA0KKwl9DQorCXN0LT5zcF9lc3RfY250ICs9IDE7IA0KKw0KKwlpZiAoKChzdC0+dmFkcmVnICYgMHg0MDAwKXx8KGluX2xldmVsID4gc3QtPnNwZWVjaF9sZXZlbCkpICYmIChpbl9sZXZlbCA+IE1JTl9TUEVFQ0hfTEVWRUwxKSkNCisJew0KKwkJLyogdXBkYXRlIHNwX21heCAqLw0KKwkJaWYoaW5fbGV2ZWwgPiBzdC0+c3BfbWF4KQ0KKwkJew0KKwkJCXN0LT5zcF9tYXggPSBpbl9sZXZlbDsgICAgICAgICANCisJCX0NCisJCXN0LT5zcF9tYXhfY250ICs9IDE7ICAgICAgICANCisNCisJCWlmKHN0LT5zcF9tYXhfY250ID49IFNQX0FDVElWSVRZX0NPVU5UKQ0KKwkJew0KKwkJCVdvcmQxNiB0bXA7DQorCQkJLyogdXBkYXRlIHNwZWVjaCBlc3RpbWF0ZSAqLw0KKwkJCXRtcCA9IChzdC0+c3BfbWF4ID4+IDEpOyAgICAgIC8qIHNjYWxlIHRvIGdldCAiYXZlcmFnZSIgc3BlZWNoIGxldmVsICovDQorDQorCQkJLyogc2VsZWN0IHVwZGF0ZSBzcGVlZCAqLw0KKwkJCWlmKHRtcCA+IHN0LT5zcGVlY2hfbGV2ZWwpDQorCQkJew0KKwkJCQlhbHBoYSA9IEFMUEhBX1NQX1VQOyAgICAgICANCisJCQl9IGVsc2UNCisJCQl7DQorCQkJCWFscGhhID0gQUxQSEFfU1BfRE9XTjsgICAgDQorCQkJfQ0KKwkJCWlmKHRtcCA+IE1JTl9TUEVFQ0hfTEVWRUwyKQ0KKwkJCXsNCisJCQkJc3QtPnNwZWVjaF9sZXZlbCA9IGFkZDEoc3QtPnNwZWVjaF9sZXZlbCwgdm9fbXVsdF9yKGFscGhhLCB2b19zdWIodG1wLCBzdC0+c3BlZWNoX2xldmVsKSkpOyANCisJCQl9DQorCQkJLyogY2xlYXIgYWxsIGNvdW50ZXJzIHVzZWQgZm9yIHNwZWVjaCBlc3RpbWF0aW9uICovDQorCQkJc3QtPnNwX21heCA9IDA7ICAgICAgICAgICAgICAgIA0KKwkJCXN0LT5zcF9tYXhfY250ID0gMDsgICAgICAgICAgICANCisJCQlzdC0+c3BfZXN0X2NudCA9IDA7ICAgICAgICAgICAgDQorCQl9DQorCX0NCit9DQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyoNCisqICBGdW5jdGlvbjogICB3Yl92YWRfaW5pdA0KKyogIFB1cnBvc2U6ICAgIEFsbG9jYXRlcyBzdGF0ZSBtZW1vcnkgYW5kIGluaXRpYWxpemVzIHN0YXRlIG1lbW9yeQ0KKyoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KK1dvcmQxNiB3Yl92YWRfaW5pdCggICAgICAgICAgICAgICAgICAgICAgICAvKiByZXR1cm46IG5vbi16ZXJvIHdpdGggZXJyb3IsIHplcm8gZm9yIG9rLiAqLw0KKwkJVmFkVmFycyAqKiBzdGF0ZSwgICAgICAgICAgICAgICAgICAgICAvKiBpL28gOiBTdGF0ZSBzdHJ1Y3R1cmUgICAgKi8NCisJCVZPX01FTV9PUEVSQVRPUiAqcE1lbU9QDQorCQkpDQorew0KKwlWYWRWYXJzICpzOw0KKw0KKwlpZiAoc3RhdGUgPT0gKFZhZFZhcnMgKiopIE5VTEwpDQorCXsNCisJCWZwcmludGYoc3RkZXJyLCAidmFkX2luaXQ6IGludmFsaWQgcGFyYW1ldGVyXG4iKTsNCisJCXJldHVybiAtMTsNCisJfQ0KKwkqc3RhdGUgPSBOVUxMOw0KKw0KKwkvKiBhbGxvY2F0ZSBtZW1vcnkgKi8NCisJaWYgKChzID0gKFZhZFZhcnMgKikgbWVtX21hbGxvYyhwTWVtT1AsIHNpemVvZihWYWRWYXJzKSwgMzIsIFZPX0lOREVYX0VOQ19BTVJXQikpID09IE5VTEwpDQorCXsNCisJCWZwcmludGYoc3RkZXJyLCAidmFkX2luaXQ6IGNhbiBub3QgbWFsbG9jIHN0YXRlIHN0cnVjdHVyZVxuIik7DQorCQlyZXR1cm4gLTE7DQorCX0NCisJd2JfdmFkX3Jlc2V0KHMpOw0KKw0KKwkqc3RhdGUgPSBzOw0KKw0KKwlyZXR1cm4gMDsNCit9DQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyoNCisqICBGdW5jdGlvbjogICB3Yl92YWRfcmVzZXQNCisqICBQdXJwb3NlOiAgICBJbml0aWFsaXplcyBzdGF0ZSBtZW1vcnkNCisqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCitXb3JkMTYgd2JfdmFkX3Jlc2V0KCAgICAgICAgICAgICAgICAgICAgICAgLyogcmV0dXJuOiBub24temVybyB3aXRoIGVycm9yLCB6ZXJvIGZvciBvay4gKi8NCisJCVZhZFZhcnMgKiBzdGF0ZSAgICAgICAgICAgICAgICAgICAgICAgLyogaS9vIDogU3RhdGUgc3RydWN0dXJlICAgICovDQorCQkpDQorew0KKwlXb3JkMzIgaSwgajsNCisNCisJaWYgKHN0YXRlID09IChWYWRWYXJzICopIE5VTEwpDQorCXsNCisJCWZwcmludGYoc3RkZXJyLCAidmFkX3Jlc2V0OiBpbnZhbGlkIHBhcmFtZXRlclxuIik7DQorCQlyZXR1cm4gLTE7DQorCX0NCisJc3RhdGUtPnRvbmVfZmxhZyA9IDA7DQorCXN0YXRlLT52YWRyZWcgPSAwOw0KKwlzdGF0ZS0+aGFuZ19jb3VudCA9IDA7DQorCXN0YXRlLT5idXJzdF9jb3VudCA9IDA7DQorCXN0YXRlLT5oYW5nX2NvdW50ID0gMDsNCisNCisJLyogaW5pdGlhbGl6ZSBtZW1vcnkgdXNlZCBieSB0aGUgZmlsdGVyIGJhbmsgKi8NCisJZm9yIChpID0gMDsgaSA8IEZfNVRIX0NOVDsgaSsrKQ0KKwl7DQorCQlmb3IgKGogPSAwOyBqIDwgMjsgaisrKQ0KKwkJew0KKwkJCXN0YXRlLT5hX2RhdGE1W2ldW2pdID0gMDsNCisJCX0NCisJfQ0KKw0KKwlmb3IgKGkgPSAwOyBpIDwgRl8zVEhfQ05UOyBpKyspDQorCXsNCisJCXN0YXRlLT5hX2RhdGEzW2ldID0gMDsNCisJfQ0KKw0KKwkvKiBpbml0aWFsaXplIHRoZSByZXN0IG9mIHRoZSBtZW1vcnkgKi8NCisJZm9yIChpID0gMDsgaSA8IENPTVBMRU47IGkrKykNCisJew0KKwkJc3RhdGUtPmJja3JfZXN0W2ldID0gTk9JU0VfSU5JVDsNCisJCXN0YXRlLT5vbGRfbGV2ZWxbaV0gPSBOT0lTRV9JTklUOw0KKwkJc3RhdGUtPmF2ZV9sZXZlbFtpXSA9IE5PSVNFX0lOSVQ7DQorCQlzdGF0ZS0+c3ViX2xldmVsW2ldID0gMDsNCisJfQ0KKw0KKwlzdGF0ZS0+c3BfZXN0X2NudCA9IDA7DQorCXN0YXRlLT5zcF9tYXggPSAwOw0KKwlzdGF0ZS0+c3BfbWF4X2NudCA9IDA7DQorCXN0YXRlLT5zcGVlY2hfbGV2ZWwgPSBTUEVFQ0hfTEVWRUxfSU5JVDsNCisJc3RhdGUtPnByZXZfcG93X3N1bSA9IDA7DQorCXJldHVybiAwOw0KK30NCisNCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKg0KKyogIEZ1bmN0aW9uOiAgIHdiX3ZhZF9leGl0DQorKiAgUHVycG9zZTogICAgVGhlIG1lbW9yeSB1c2VkIGZvciBzdGF0ZSBtZW1vcnkgaXMgZnJlZWQNCisqDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCit2b2lkIHdiX3ZhZF9leGl0KA0KKwkJVmFkVmFycyAqKiBzdGF0ZSwgICAgICAgICAgICAgICAgICAgICAgLyogaS9vIDogU3RhdGUgc3RydWN0dXJlICAgICovDQorCQlWT19NRU1fT1BFUkFUT1IgKnBNZW1PUA0KKwkJKQ0KK3sNCisJaWYgKHN0YXRlID09IE5VTEwgfHwgKnN0YXRlID09IE5VTEwpDQorCQlyZXR1cm47DQorCS8qIGRlYWxsb2NhdGUgbWVtb3J5ICovDQorCW1lbV9mcmVlKHBNZW1PUCwgKnN0YXRlLCBWT19JTkRFWF9FTkNfQU1SV0IpOw0KKwkqc3RhdGUgPSBOVUxMOw0KKwlyZXR1cm47DQorfQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqDQorKiAgICAgRnVuY3Rpb24gICAgIDogd2JfdmFkX3RvbmVfZGV0ZWN0aW9uDQorKiAgICAgUHVycG9zZSAgICAgIDogU2VhcmNoIG1heGltdW0gcGl0Y2ggZ2FpbiBmcm9tIGEgZnJhbWUuIFNldCB0b25lIGZsYWcgaWYNCisqICAgICAgICAgICAgICAgICAgICBwaXRjaCBnYWluIGlzIGhpZ2guIFRoaXMgaXMgdXNlZCB0byBkZXRlY3QNCisqICAgICAgICAgICAgICAgICAgICBzaWduYWxpbmcgdG9uZXMgYW5kIG90aGVyIHNpZ25hbHMgd2l0aCBoaWdoIHBpdGNoIGdhaW4uDQorKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQordm9pZCB3Yl92YWRfdG9uZV9kZXRlY3Rpb24oDQorCQlWYWRWYXJzICogc3QsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGkvbyA6IFN0YXRlIHN0cnVjdCAgICAgICAgICAgICovDQorCQlXb3JkMTYgcF9nYWluICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHBpdGNoIGdhaW4gICAgICAqLw0KKwkJKQ0KK3sNCisJLyogdXBkYXRlIHRvbmUgZmxhZyAqLw0KKwlzdC0+dG9uZV9mbGFnID0gKHN0LT50b25lX2ZsYWcgPj4gMSk7DQorDQorCS8qIGlmIChwaXRjaF9nYWluID4gVE9ORV9USFIpIHNldCB0b25lIGZsYWcgKi8NCisJaWYgKHBfZ2FpbiA+IFRPTkVfVEhSKQ0KKwl7DQorCQlzdC0+dG9uZV9mbGFnID0gKFdvcmQxNikgKHN0LT50b25lX2ZsYWcgfCAweDQwMDApOw0KKwl9DQorfQ0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqDQorKiAgICAgRnVuY3Rpb24gICAgIDogd2JfdmFkDQorKiAgICAgUHVycG9zZSAgICAgIDogTWFpbiBwcm9ncmFtIGZvciBWb2ljZSBBY3Rpdml0eSBEZXRlY3Rpb24gKFZBRCkgZm9yIEFNUg0KKyoNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KK1dvcmQxNiB3Yl92YWQoICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSZXR1cm4gdmFsdWUgOiBWQUQgRGVjaXNpb24sIDEgPSBzcGVlY2gsIDAgPSBub2lzZSAqLw0KKwkJVmFkVmFycyAqIHN0LCAgICAgICAgICAgICAgICAgICAgICAgICAvKiBpL28gOiBTdGF0ZSBzdHJ1Y3R1cmUgICAgICAgICAgICAgICAgICovDQorCQlXb3JkMTYgaW5fYnVmW10gICAgICAgICAgICAgICAgICAgICAgIC8qIGkgICA6IHNhbXBsZXMgb2YgdGhlIGlucHV0IGZyYW1lICAgKi8NCisJICAgICApDQorew0KKwlXb3JkMTYgbGV2ZWxbQ09NUExFTl07DQorCVdvcmQzMiBpOw0KKwlXb3JkMTYgVkFEX2ZsYWcsIHRlbXA7DQorCVdvcmQzMiBMX3RlbXAsIHBvd19zdW07DQorDQorCS8qIENhbGN1bGF0ZSBwb3dlciBvZiB0aGUgaW5wdXQgZnJhbWUuICovDQorCUxfdGVtcCA9IDBMOyAgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwlmb3IgKGkgPSAwOyBpIDwgRlJBTUVfTEVOOyBpKyspDQorCXsNCisJCUxfdGVtcCA9IExfbWFjKExfdGVtcCwgaW5fYnVmW2ldLCBpbl9idWZbaV0pOw0KKwl9DQorDQorCS8qIHBvd19zdW0gPSBwb3dlciBvZiBjdXJyZW50IGZyYW1lIGFuZCBwcmV2aW91cyBmcmFtZSAqLw0KKwlwb3dfc3VtID0gTF9hZGQoTF90ZW1wLCBzdC0+cHJldl9wb3dfc3VtKTsgIA0KKw0KKwkvKiBzYXZlIHBvd2VyIG9mIGN1cnJlbnQgZnJhbWUgZm9yIG5leHQgY2FsbCAqLw0KKwlzdC0+cHJldl9wb3dfc3VtID0gTF90ZW1wOyAgICAgICAgICAgICANCisNCisJLyogSWYgaW5wdXQgcG93ZXIgaXMgdmVyeSBsb3csIGNsZWFyIHRvbmUgZmxhZyAqLw0KKwlpZiAocG93X3N1bSA8IFBPV19UT05FX1RIUikNCisJew0KKwkJc3QtPnRvbmVfZmxhZyA9IChXb3JkMTYpIChzdC0+dG9uZV9mbGFnICYgMHgxZmZmKTsgICAgICANCisJfQ0KKwkvKiBSdW4gdGhlIGZpbHRlciBiYW5rIGFuZCBjYWxjdWxhdGUgc2lnbmFsIGxldmVscyBhdCBlYWNoIGJhbmQgKi8NCisJZmlsdGVyX2Jhbmsoc3QsIGluX2J1ZiwgbGV2ZWwpOw0KKw0KKwkvKiBjb21wdXRlIFZBRCBkZWNpc2lvbiAqLw0KKwlWQURfZmxhZyA9IHZhZF9kZWNpc2lvbihzdCwgbGV2ZWwsIHBvd19zdW0pOw0KKw0KKwkvKiBDYWxjdWxhdGUgaW5wdXQgbGV2ZWwgKi8NCisJTF90ZW1wID0gMDsgICAgICAgICAgICAgICAgICAgICAgICAgIA0KKwlmb3IgKGkgPSAxOyBpIDwgQ09NUExFTjsgaSsrKSAgICAgICAgICAvKiBpZ25vcmUgbG93ZXN0IGJhbmQgKi8NCisJew0KKwkJTF90ZW1wID0gdm9fTF9hZGQoTF90ZW1wLCBsZXZlbFtpXSk7DQorCX0NCisNCisJdGVtcCA9IGV4dHJhY3RfaChMX3RlbXAgPDwgMTIpOw0KKw0KKwlFc3RpbWF0ZV9TcGVlY2goc3QsIHRlbXApOyAgICAgICAgICAgICAvKiBFc3RpbWF0ZSBzcGVlY2ggbGV2ZWwgKi8NCisJcmV0dXJuIChWQURfZmxhZyk7DQorfQ0KKw0KKw0KKw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvd2VpZ2h0X2EuYyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9hbXJ3YmVuYy9zcmMvd2VpZ2h0X2EuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDdiZTk3Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2FtcndiZW5jL3NyYy93ZWlnaHRfYS5jCkBAIC0wLDAgKzEsNDggQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorKiAgICAgICBGaWxlOiB3ZWlnaHRfYS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICBEZXNjcmlwdGlvbjpXZWlnaHRpbmcgb2YgTFBDIGNvZWZmaWNpZW50cyAgICAgICAgICAgICAgICAgICAgICAqDQorKgkgICAgICAgICAgICAgICBhcFtpXSA9IGFbaV0gKiAoZ2FtbWEgKiogaSkgICAgICAgICAgICAgICAgICAgICAqDQorKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIA0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaW5jbHVkZSAidHlwZWRlZi5oIg0KKyNpbmNsdWRlICJiYXNpY19vcC5oIg0KKw0KK3ZvaWQgV2VpZ2h0X2EoDQorCQlXb3JkMTYgYVtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSBRMTIgOiBhW20rMV0gIExQQyBjb2VmZmljaWVudHMgICAgICAgICAgICAgKi8NCisJCVdvcmQxNiBhcFtdLCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogKG8pIFExMiA6IFNwZWN0cmFsIGV4cGFuZGVkIExQQyBjb2VmZmljaWVudHMgICAqLw0KKwkJV29yZDE2IGdhbW1hLCAgICAgICAgICAgICAgICAgICAgICAgICAvKiAoaSkgUTE1IDogU3BlY3RyYWwgZXhwYW5zaW9uIGZhY3Rvci4gICAgICAgICAgICovDQorCQlXb3JkMTYgbSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIChpKSAgICAgOiBMUEMgb3JkZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8NCisJICAgICApDQorew0KKwlXb3JkMzIgbnVtID0gbSAtIDEsIGZhYzsNCisJKmFwKysgPSAqYSsrOw0KKwlmYWMgPSBnYW1tYTsNCisJZG97DQorCQkqYXArKyA9KFdvcmQxNikoKCh2b19MX211bHQoKCphKyspLCBmYWMpKSArIDB4ODAwMCkgPj4gMTYpOw0KKwkJZmFjID0gKHZvX0xfbXVsdChmYWMsIGdhbW1hKSArIDB4ODAwMCkgPj4gMTY7DQorCX13aGlsZSgtLW51bSAhPSAwKTsNCisNCisJKmFwKysgPSAoV29yZDE2KSgoKHZvX0xfbXVsdCgoKmErKyksIGZhYykpICsgMHg4MDAwKSA+PiAxNik7DQorCXJldHVybjsNCit9DQorDQorDQorDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2F2Yy9kZWMvQVZDRGVjb2Rlci5jcHAgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYXZjL2RlYy9BVkNEZWNvZGVyLmNwcAppbmRleCBhYTJhM2QxLi4yNGMzNjFlIDEwMDY0NAotLS0gYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYXZjL2RlYy9BVkNEZWNvZGVyLmNwcAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvYXZjL2RlYy9BVkNEZWNvZGVyLmNwcApAQCAtMzQsNiArMzQsOCBAQAogCiBuYW1lc3BhY2UgYW5kcm9pZCB7CiAKK3N0YXRpYyBjb25zdCBjaGFyIGtTdGFydENvZGVbNF0gPSB7IDB4MDAsIDB4MDAsIDB4MDAsIDB4MDEgfTsKKwogc3RhdGljIGludDMyX3QgTWFsbG9jKHZvaWQgKnVzZXJEYXRhLCBpbnQzMl90IHNpemUsIGludDMyX3QgYXR0cnMpIHsKICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDxpbnQzMl90PihtYWxsb2Moc2l6ZSkpOwogfQpAQCAtMTU0LDkgKzE1Niw3IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBzcDxNZXRhRGF0YT4gcGFyYW1zID0gbmV3IE1ldGFEYXRhOwotICAgIHBhcmFtcy0+c2V0SW50MzIoa0tleVdhbnRzTkFMRnJhZ21lbnRzLCB0cnVlKTsKLSAgICBtU291cmNlLT5zdGFydChwYXJhbXMuZ2V0KCkpOworICAgIG1Tb3VyY2UtPnN0YXJ0KCk7CiAKICAgICBtQW5jaG9yVGltZVVzID0gMDsKICAgICBtTnVtU2FtcGxlc091dHB1dCA9IDA7CkBAIC0xNjcsOSArMTY3LDEwIEBACiB9CiAKIHZvaWQgQVZDRGVjb2Rlcjo6YWRkQ29kZWNTcGVjaWZpY0RhdGEoY29uc3QgdWludDhfdCAqZGF0YSwgc2l6ZV90IHNpemUpIHsKLSAgICBNZWRpYUJ1ZmZlciAqYnVmZmVyID0gbmV3IE1lZGlhQnVmZmVyKHNpemUpOwotICAgIG1lbWNweShidWZmZXItPmRhdGEoKSwgZGF0YSwgc2l6ZSk7Ci0gICAgYnVmZmVyLT5zZXRfcmFuZ2UoMCwgc2l6ZSk7CisgICAgTWVkaWFCdWZmZXIgKmJ1ZmZlciA9IG5ldyBNZWRpYUJ1ZmZlcihzaXplICsgNCk7CisgICAgbWVtY3B5KGJ1ZmZlci0+ZGF0YSgpLCBrU3RhcnRDb2RlLCA0KTsKKyAgICBtZW1jcHkoKHVpbnQ4X3QgKilidWZmZXItPmRhdGEoKSArIDQsIGRhdGEsIHNpemUpOworICAgIGJ1ZmZlci0+c2V0X3JhbmdlKDAsIHNpemUgKyA0KTsKIAogICAgIG1Db2RlY1NwZWNpZmljRGF0YS5wdXNoKGJ1ZmZlcik7CiB9CkBAIC0yMDAsNiArMjAxLDI5IEBACiAgICAgcmV0dXJuIG1Gb3JtYXQ7CiB9CiAKK3N0YXRpYyB2b2lkIGZpbmROQUxGcmFnbWVudCgKKyAgICAgICAgY29uc3QgTWVkaWFCdWZmZXIgKmJ1ZmZlciwgY29uc3QgdWludDhfdCAqKmZyYWdQdHIsIHNpemVfdCAqZnJhZ1NpemUpIHsKKyAgICBjb25zdCB1aW50OF90ICpkYXRhID0KKyAgICAgICAgKGNvbnN0IHVpbnQ4X3QgKilidWZmZXItPmRhdGEoKSArIGJ1ZmZlci0+cmFuZ2Vfb2Zmc2V0KCk7CisKKyAgICBzaXplX3Qgc2l6ZSA9IGJ1ZmZlci0+cmFuZ2VfbGVuZ3RoKCk7CisKKyAgICBDSEVDSyhzaXplID49IDQpOworICAgIENIRUNLKCFtZW1jbXAoa1N0YXJ0Q29kZSwgZGF0YSwgNCkpOworCisgICAgc2l6ZV90IG9mZnNldCA9IDQ7CisgICAgd2hpbGUgKG9mZnNldCArIDMgPCBzaXplICYmIG1lbWNtcChrU3RhcnRDb2RlLCAmZGF0YVtvZmZzZXRdLCA0KSkgeworICAgICAgICArK29mZnNldDsKKyAgICB9CisKKyAgICAqZnJhZ1B0ciA9ICZkYXRhWzRdOworICAgIGlmIChvZmZzZXQgKyAzID49IHNpemUpIHsKKyAgICAgICAgKmZyYWdTaXplID0gc2l6ZSAtIDQ7CisgICAgfSBlbHNlIHsKKyAgICAgICAgKmZyYWdTaXplID0gb2Zmc2V0IC0gNDsKKyAgICB9Cit9CisKIHN0YXR1c190IEFWQ0RlY29kZXI6OnJlYWQoCiAgICAgICAgIE1lZGlhQnVmZmVyICoqb3V0LCBjb25zdCBSZWFkT3B0aW9ucyAqb3B0aW9ucykgewogICAgICpvdXQgPSBOVUxMOwpAQCAtMjU0LDM3ICsyNzgsMzEgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIGNvbnN0IHVpbnQ4X3QgKmluUHRyID0KLSAgICAgICAgKGNvbnN0IHVpbnQ4X3QgKiltSW5wdXRCdWZmZXItPmRhdGEoKSArIG1JbnB1dEJ1ZmZlci0+cmFuZ2Vfb2Zmc2V0KCk7CisgICAgY29uc3QgdWludDhfdCAqZnJhZ1B0cjsKKyAgICBzaXplX3QgZnJhZ1NpemU7CisgICAgZmluZE5BTEZyYWdtZW50KG1JbnB1dEJ1ZmZlciwgJmZyYWdQdHIsICZmcmFnU2l6ZSk7CisKKyAgICBib29sIHJlbGVhc2VGcmFnbWVudCA9IHRydWU7CisgICAgc3RhdHVzX3QgZXJyID0gVU5LTk9XTl9FUlJPUjsKIAogICAgIGludCBuYWxUeXBlOwogICAgIGludCBuYWxSZWZJZGM7CiAgICAgQVZDRGVjX1N0YXR1cyByZXMgPQogICAgICAgICBQVkFWQ0RlY0dldE5BTFR5cGUoCi0gICAgICAgICAgICAgICAgY29uc3RfY2FzdDx1aW50OF90ICo+KGluUHRyKSwgbUlucHV0QnVmZmVyLT5yYW5nZV9sZW5ndGgoKSwKKyAgICAgICAgICAgICAgICBjb25zdF9jYXN0PHVpbnQ4X3QgKj4oZnJhZ1B0ciksIGZyYWdTaXplLAogICAgICAgICAgICAgICAgICZuYWxUeXBlLCAmbmFsUmVmSWRjKTsKIAogICAgIGlmIChyZXMgIT0gQVZDREVDX1NVQ0NFU1MpIHsKICAgICAgICAgTE9HRSgiY2Fubm90IGRldGVybWluZSBuYWwgdHlwZSIpOwotCi0gICAgICAgIG1JbnB1dEJ1ZmZlci0+cmVsZWFzZSgpOwotICAgICAgICBtSW5wdXRCdWZmZXIgPSBOVUxMOwotCi0gICAgICAgIHJldHVybiBVTktOT1dOX0VSUk9SOwotICAgIH0KLQotICAgIHN3aXRjaCAobmFsVHlwZSkgeworICAgIH0gZWxzZSBzd2l0Y2ggKG5hbFR5cGUpIHsKICAgICAgICAgY2FzZSBBVkNfTkFMVFlQRV9TUFM6CiAgICAgICAgIHsKICAgICAgICAgICAgIHJlcyA9IFBWQVZDRGVjU2VxUGFyYW1TZXQoCi0gICAgICAgICAgICAgICAgICAgIG1IYW5kbGUsIGNvbnN0X2Nhc3Q8dWludDhfdCAqPihpblB0ciksCi0gICAgICAgICAgICAgICAgICAgIG1JbnB1dEJ1ZmZlci0+cmFuZ2VfbGVuZ3RoKCkpOworICAgICAgICAgICAgICAgICAgICBtSGFuZGxlLCBjb25zdF9jYXN0PHVpbnQ4X3QgKj4oZnJhZ1B0ciksCisgICAgICAgICAgICAgICAgICAgIGZyYWdTaXplKTsKIAogICAgICAgICAgICAgaWYgKHJlcyAhPSBBVkNERUNfU1VDQ0VTUykgewotICAgICAgICAgICAgICAgIG1JbnB1dEJ1ZmZlci0+cmVsZWFzZSgpOwotICAgICAgICAgICAgICAgIG1JbnB1dEJ1ZmZlciA9IE5VTEw7Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4gVU5LTk9XTl9FUlJPUjsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgQVZDRGVjT2JqZWN0ICpwRGVjVmlkID0gKEFWQ0RlY09iamVjdCAqKW1IYW5kbGUtPkFWQ09iamVjdDsKQEAgLTMyNCw0NyArMzQyLDUzIEBACiAKICAgICAgICAgICAgIGludDMyX3QgYWxpZ25lZF93aWR0aCA9IChjcm9wX3JpZ2h0IC0gY3JvcF9sZWZ0ICsgMSArIDE1KSAmIH4xNTsKICAgICAgICAgICAgIGludDMyX3QgYWxpZ25lZF9oZWlnaHQgPSAoY3JvcF9ib3R0b20gLSBjcm9wX3RvcCArIDEgKyAxNSkgJiB+MTU7Ci0gICAgICAgICAgICBtRm9ybWF0LT5zZXRJbnQzMihrS2V5V2lkdGgsIGFsaWduZWRfd2lkdGgpOwotICAgICAgICAgICAgbUZvcm1hdC0+c2V0SW50MzIoa0tleUhlaWdodCwgYWxpZ25lZF9oZWlnaHQpOwogCi0gICAgICAgICAgICBtSW5wdXRCdWZmZXItPnJlbGVhc2UoKTsKLSAgICAgICAgICAgIG1JbnB1dEJ1ZmZlciA9IE5VTEw7CisgICAgICAgICAgICBpbnQzMl90IG9sZFdpZHRoLCBvbGRIZWlnaHQ7CisgICAgICAgICAgICBDSEVDSyhtRm9ybWF0LT5maW5kSW50MzIoa0tleVdpZHRoLCAmb2xkV2lkdGgpKTsKKyAgICAgICAgICAgIENIRUNLKG1Gb3JtYXQtPmZpbmRJbnQzMihrS2V5SGVpZ2h0LCAmb2xkSGVpZ2h0KSk7CiAKLSAgICAgICAgICAgIHJldHVybiBJTkZPX0ZPUk1BVF9DSEFOR0VEOworICAgICAgICAgICAgaWYgKG9sZFdpZHRoICE9IGFsaWduZWRfd2lkdGggfHwgb2xkSGVpZ2h0ICE9IGFsaWduZWRfaGVpZ2h0KSB7CisgICAgICAgICAgICAgICAgbUZvcm1hdC0+c2V0SW50MzIoa0tleVdpZHRoLCBhbGlnbmVkX3dpZHRoKTsKKyAgICAgICAgICAgICAgICBtRm9ybWF0LT5zZXRJbnQzMihrS2V5SGVpZ2h0LCBhbGlnbmVkX2hlaWdodCk7CisKKyAgICAgICAgICAgICAgICBlcnIgPSBJTkZPX0ZPUk1BVF9DSEFOR0VEOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAqb3V0ID0gbmV3IE1lZGlhQnVmZmVyKDApOworICAgICAgICAgICAgICAgIGVyciA9IE9LOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAogICAgICAgICBjYXNlIEFWQ19OQUxUWVBFX1BQUzoKICAgICAgICAgewogICAgICAgICAgICAgcmVzID0gUFZBVkNEZWNQaWNQYXJhbVNldCgKLSAgICAgICAgICAgICAgICAgICAgbUhhbmRsZSwgY29uc3RfY2FzdDx1aW50OF90ICo+KGluUHRyKSwKLSAgICAgICAgICAgICAgICAgICAgbUlucHV0QnVmZmVyLT5yYW5nZV9sZW5ndGgoKSk7Ci0KLSAgICAgICAgICAgIG1JbnB1dEJ1ZmZlci0+cmVsZWFzZSgpOwotICAgICAgICAgICAgbUlucHV0QnVmZmVyID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgbUhhbmRsZSwgY29uc3RfY2FzdDx1aW50OF90ICo+KGZyYWdQdHIpLAorICAgICAgICAgICAgICAgICAgICBmcmFnU2l6ZSk7CiAKICAgICAgICAgICAgIGlmIChyZXMgIT0gQVZDREVDX1NVQ0NFU1MpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gVU5LTk9XTl9FUlJPUjsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgKm91dCA9IG5ldyBNZWRpYUJ1ZmZlcigwKTsKIAotICAgICAgICAgICAgcmV0dXJuIE9LOworICAgICAgICAgICAgZXJyID0gT0s7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgQVZDX05BTFRZUEVfU0xJQ0U6CiAgICAgICAgIGNhc2UgQVZDX05BTFRZUEVfSURSOgogICAgICAgICB7CiAgICAgICAgICAgICByZXMgPSBQVkFWQ0RlY29kZVNsaWNlKAotICAgICAgICAgICAgICAgICAgICBtSGFuZGxlLCBjb25zdF9jYXN0PHVpbnQ4X3QgKj4oaW5QdHIpLAotICAgICAgICAgICAgICAgICAgICBtSW5wdXRCdWZmZXItPnJhbmdlX2xlbmd0aCgpKTsKKyAgICAgICAgICAgICAgICAgICAgbUhhbmRsZSwgY29uc3RfY2FzdDx1aW50OF90ICo+KGZyYWdQdHIpLAorICAgICAgICAgICAgICAgICAgICBmcmFnU2l6ZSk7CiAKICAgICAgICAgICAgIGlmIChyZXMgPT0gQVZDREVDX1BJQ1RVUkVfT1VUUFVUX1JFQURZKSB7CiAgICAgICAgICAgICAgICAgaW50MzJfdCBpbmRleDsKICAgICAgICAgICAgICAgICBpbnQzMl90IFJlbGVhc2U7CiAgICAgICAgICAgICAgICAgQVZDRnJhbWVJTyBPdXRwdXQ7CiAgICAgICAgICAgICAgICAgT3V0cHV0LllDYkNyWzBdID0gT3V0cHV0LllDYkNyWzFdID0gT3V0cHV0LllDYkNyWzJdID0gTlVMTDsKLSAgICAgICAgICAgICAgICBDSEVDS19FUShQVkFWQ0RlY0dldE91dHB1dCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtSGFuZGxlLCAmaW5kZXgsICZSZWxlYXNlLCAmT3V0cHV0KSwKKworICAgICAgICAgICAgICAgIENIRUNLX0VRKFBWQVZDRGVjR2V0T3V0cHV0KG1IYW5kbGUsICZpbmRleCwgJlJlbGVhc2UsICZPdXRwdXQpLAogICAgICAgICAgICAgICAgICAgICAgICAgIEFWQ0RFQ19TVUNDRVNTKTsKIAogICAgICAgICAgICAgICAgIENIRUNLKGluZGV4ID49IDApOwpAQCAtMzc2LDQ4ICs0MDAsNDQgQEAKIAogICAgICAgICAgICAgICAgIC8vIERvIF9ub3RfIHJlbGVhc2UgaW5wdXQgYnVmZmVyIHlldC4KIAotICAgICAgICAgICAgICAgIHJldHVybiBPSzsKKyAgICAgICAgICAgICAgICByZWxlYXNlRnJhZ21lbnQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBlcnIgPSBPSzsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgbUlucHV0QnVmZmVyLT5yZWxlYXNlKCk7Ci0gICAgICAgICAgICBtSW5wdXRCdWZmZXIgPSBOVUxMOwotCiAgICAgICAgICAgICBpZiAocmVzID09IEFWQ0RFQ19QSUNUVVJFX1JFQURZIHx8IHJlcyA9PSBBVkNERUNfU1VDQ0VTUykgewogICAgICAgICAgICAgICAgICpvdXQgPSBuZXcgTWVkaWFCdWZmZXIoMCk7CiAKLSAgICAgICAgICAgICAgICByZXR1cm4gT0s7CisgICAgICAgICAgICAgICAgZXJyID0gT0s7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIExPR1YoImZhaWxlZCB0byBkZWNvZGUgZnJhbWUgKHJlcyA9ICVkKSIsIHJlcyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFVOS05PV05fRVJST1I7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgQVZDX05BTFRZUEVfU0VJOgogICAgICAgICB7CiAgICAgICAgICAgICByZXMgPSBQVkFWQ0RlY1NFSSgKLSAgICAgICAgICAgICAgICAgICAgbUhhbmRsZSwgY29uc3RfY2FzdDx1aW50OF90ICo+KGluUHRyKSwKLSAgICAgICAgICAgICAgICAgICAgbUlucHV0QnVmZmVyLT5yYW5nZV9sZW5ndGgoKSk7Ci0KLSAgICAgICAgICAgIG1JbnB1dEJ1ZmZlci0+cmVsZWFzZSgpOwotICAgICAgICAgICAgbUlucHV0QnVmZmVyID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgbUhhbmRsZSwgY29uc3RfY2FzdDx1aW50OF90ICo+KGZyYWdQdHIpLAorICAgICAgICAgICAgICAgICAgICBmcmFnU2l6ZSk7CiAKICAgICAgICAgICAgIGlmIChyZXMgIT0gQVZDREVDX1NVQ0NFU1MpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gVU5LTk9XTl9FUlJPUjsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgKm91dCA9IG5ldyBNZWRpYUJ1ZmZlcigwKTsKIAotICAgICAgICAgICAgcmV0dXJuIE9LOworICAgICAgICAgICAgZXJyID0gT0s7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCiAgICAgICAgIGNhc2UgQVZDX05BTFRZUEVfQVVEOgorICAgICAgICBjYXNlIEFWQ19OQUxUWVBFX0ZJTEw6CiAgICAgICAgIHsKLSAgICAgICAgICAgIG1JbnB1dEJ1ZmZlci0+cmVsZWFzZSgpOwotICAgICAgICAgICAgbUlucHV0QnVmZmVyID0gTlVMTDsKLQogICAgICAgICAgICAgKm91dCA9IG5ldyBNZWRpYUJ1ZmZlcigwKTsKIAotICAgICAgICAgICAgcmV0dXJuIE9LOworICAgICAgICAgICAgZXJyID0gT0s7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogCiAgICAgICAgIGRlZmF1bHQ6CkBAIC00MjgsMTAgKzQ0OCwxOSBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgbUlucHV0QnVmZmVyLT5yZWxlYXNlKCk7Ci0gICAgbUlucHV0QnVmZmVyID0gTlVMTDsKKyAgICBpZiAocmVsZWFzZUZyYWdtZW50KSB7CisgICAgICAgIHNpemVfdCBvZmZzZXQgPSBtSW5wdXRCdWZmZXItPnJhbmdlX29mZnNldCgpOworICAgICAgICBpZiAoZnJhZ1NpemUgKyA0ID09IG1JbnB1dEJ1ZmZlci0+cmFuZ2VfbGVuZ3RoKCkpIHsKKyAgICAgICAgICAgIG1JbnB1dEJ1ZmZlci0+cmVsZWFzZSgpOworICAgICAgICAgICAgbUlucHV0QnVmZmVyID0gTlVMTDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1JbnB1dEJ1ZmZlci0+c2V0X3JhbmdlKAorICAgICAgICAgICAgICAgICAgICBvZmZzZXQgKyBmcmFnU2l6ZSArIDQsCisgICAgICAgICAgICAgICAgICAgIG1JbnB1dEJ1ZmZlci0+cmFuZ2VfbGVuZ3RoKCkgLSBmcmFnU2l6ZSAtIDQpOworICAgICAgICB9CisgICAgfQogCi0gICAgcmV0dXJuIFVOS05PV05fRVJST1I7CisgICAgcmV0dXJuIGVycjsKIH0KIAogLy8gc3RhdGljCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvY29tbW9uL0FuZHJvaWQubWsgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvY29tbW9uL0FuZHJvaWQubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmZmYjJhZAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9jb21tb24vQW5kcm9pZC5tawpAQCAtMCwwICsxLDMzIEBACitMT0NBTF9QQVRIIDo9ICQoY2FsbCBteS1kaXIpCitpbmNsdWRlICQoQ0xFQVJfVkFSUykKKworTE9DQUxfUFJFTElOS19NT0RVTEUgOj0gZmFsc2UKKworTE9DQUxfU1JDX0ZJTEVTIDo9IGNtbk1lbW9yeS5jCisKK0xPQ0FMX01PRFVMRSA6PSBsaWJzdGFnZWZyaWdodF9lbmNfY29tbW9uCisKK0xPQ0FMX0FSTV9NT0RFIDo9IGFybQorCitMT0NBTF9TVEFUSUNfTElCUkFSSUVTIDo9CisKK0xPQ0FMX0NfSU5DTFVERVMgOj0gXAorCSQoTE9DQUxfUEFUSCkvaW5jbHVkZQorCitMT0NBTF9DRkxBR1MgOj0gJChWT19DRkxBR1MpCisKK2lmZXEgKCQoVk9UVCksIHY1KQorTE9DQUxfQ0ZMQUdTICs9IC1EQVJNIC1EQVNNX09QVAorTE9DQUxfQ19JTkNMVURFUyArPSAkKExPQ0FMX1BBVEgpL3NyYy9hc20vQVJNVjVFCitlbmRpZgorCitpZmVxICgkKFZPVFQpLCB2NykKK0xPQ0FMX0NGTEFHUyArPSAtREFSTSAtREFSTVY3IC1EQVNNX09QVAorTE9DQUxfQ19JTkNMVURFUyArPSAkKExPQ0FMX1BBVEgpL3NyYy9hc20vQVJNVjVFCitMT0NBTF9DX0lOQ0xVREVTICs9ICQoTE9DQUxfUEFUSCkvc3JjL2FzbS9BUk1WNworZW5kaWYKKworaW5jbHVkZSAkKEJVSUxEX1NIQVJFRF9MSUJSQVJZKQorCisKKwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2NvbW1vbi9Db25maWcubWsgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvY29tbW9uL0NvbmZpZy5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yN2ExN2MxCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2NvbW1vbi9Db25maWcubWsKQEAgLTAsMCArMSwyNCBAQAorIyANCisjIFRoaXMgY29uZmlndXJlIGZpbGUgaXMganVzdCBmb3IgTGludXggcHJvamVjdHMgYWdhaW5zdCBBbmRyb2lkDQorIw0KKw0KK1ZPUFJKIDo9IA0KK1ZPTkogOj0NCisNCisjIFdBUk5JTkc6DQorIyBVc2luZyB2NyBicmVha3MgZ2VuZXJpYyBidWlsZA0KK2lmZXEgKCQoVEFSR0VUX0FSQ0gpLGFybSkNCitWT1RUIDo9IHY1DQorZWxzZQ0KK1ZPVFQgOj0gcGMNCitlbmRpZg0KKw0KKyMgRG8gd2UgYWxzbyBuZWVkIHRvIGNoZWNrIG9uIEFSQ0hfQVJNX0hBVkVfQVJNVjdBPyAtIHByb2JhYmx5IG5vdA0KK2lmZXEgKCQoQVJDSF9BUk1fSEFWRV9ORU9OKSx0cnVlKQ0KK1ZPVFQgOj0gdjcNCitlbmRpZg0KKw0KK1ZPVEVTVCA6PSAwDQorDQorVk9fQ0ZMQUdTOj0tRExJTlVYIA0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9jb21tb24vY21uTWVtb3J5LmMgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvY29tbW9uL2Ntbk1lbW9yeS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxNzI2NGMKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvY29tbW9uL2Ntbk1lbW9yeS5jCkBAIC0wLDAgKzEsNzMgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCWNtbk1lbW9yeS5jDQorDQorCUNvbnRlbnQ6CXNhbXBsZSBjb2RlIGZvciBtZW1vcnkgb3BlcmF0b3IgaW1wbGVtZW50YXRpb24NCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyNpbmNsdWRlICJjbW5NZW1vcnkuaCINCisNCisjaW5jbHVkZSA8bWFsbG9jLmg+DQorI2lmIGRlZmluZWQgTElOVVgNCisjaW5jbHVkZSA8c3RyaW5nLmg+DQorI2VuZGlmDQorDQorLy9WT19NRU1fT1BFUkFUT1IJCWdfbWVtT1A7DQorDQorVk9fVTMyIGNtbk1lbUFsbG9jIChWT19TMzIgdUlELCAgVk9fTUVNX0lORk8gKiBwTWVtSW5mbykNCit7DQorCWlmICghcE1lbUluZm8pDQorCQlyZXR1cm4gVk9fRVJSX0lOVkFMSURfQVJHOw0KKw0KKwlwTWVtSW5mby0+VkJ1ZmZlciA9IG1hbGxvYyAocE1lbUluZm8tPlNpemUpOw0KKwlyZXR1cm4gMDsNCit9DQorDQorVk9fVTMyIGNtbk1lbUZyZWUgKFZPX1MzMiB1SUQsIFZPX1BUUiBwTWVtKQ0KK3sNCisJZnJlZSAocE1lbSk7DQorCXJldHVybiAwOw0KK30NCisNCitWT19VMzIJY21uTWVtU2V0IChWT19TMzIgdUlELCBWT19QVFIgcEJ1ZmYsIFZPX1U4IHVWYWx1ZSwgVk9fVTMyIHVTaXplKQ0KK3sNCisJbWVtc2V0IChwQnVmZiwgdVZhbHVlLCB1U2l6ZSk7DQorCXJldHVybiAwOw0KK30NCisNCitWT19VMzIJY21uTWVtQ29weSAoVk9fUzMyIHVJRCwgVk9fUFRSIHBEZXN0LCBWT19QVFIgcFNvdXJjZSwgVk9fVTMyIHVTaXplKQ0KK3sNCisJbWVtY3B5IChwRGVzdCwgcFNvdXJjZSwgdVNpemUpOw0KKwlyZXR1cm4gMDsNCit9DQorDQorVk9fVTMyCWNtbk1lbUNoZWNrIChWT19TMzIgdUlELCBWT19QVFIgcEJ1ZmZlciwgVk9fVTMyIHVTaXplKQ0KK3sNCisJcmV0dXJuIDA7DQorfQ0KKw0KK1ZPX1MzMiBjbW5NZW1Db21wYXJlIChWT19TMzIgdUlELCBWT19QVFIgcEJ1ZmZlcjEsIFZPX1BUUiBwQnVmZmVyMiwgVk9fVTMyIHVTaXplKQ0KK3sNCisJcmV0dXJuIG1lbWNtcChwQnVmZmVyMSwgcEJ1ZmZlcjIsIHVTaXplKTsNCit9DQorDQorVk9fVTMyCWNtbk1lbU1vdmUgKFZPX1MzMiB1SUQsIFZPX1BUUiBwRGVzdCwgVk9fUFRSIHBTb3VyY2UsIFZPX1UzMiB1U2l6ZSkNCit7DQorCW1lbW1vdmUgKHBEZXN0LCBwU291cmNlLCB1U2l6ZSk7DQorCXJldHVybiAwOw0KK30NCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvY29tbW9uL2luY2x1ZGUvY21uTWVtb3J5LmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvY29tbW9uL2luY2x1ZGUvY21uTWVtb3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTMxNTYwMAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9jb21tb24vaW5jbHVkZS9jbW5NZW1vcnkuaApAQCAtMCwwICsxLDEwNiBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJY21uTWVtb3J5LmgNCisNCisJQ29udGVudDoJbWVtb3J5IG9wZXJhdG9yIGltcGxlbWVudGF0aW9uIGhlYWRlciBmaWxlDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaWZuZGVmIF9fY21uTWVtb3J5X0hfXw0KKyNkZWZpbmUgX19jbW5NZW1vcnlfSF9fDQorDQorI2lmZGVmIF9fY3BsdXNwbHVzDQorZXh0ZXJuICJDIiB7DQorI2VuZGlmIC8qIF9fY3BsdXNwbHVzICovDQorDQorI2luY2x1ZGUgPHZvTWVtLmg+DQorDQorLy9leHRlcm4gVk9fTUVNX09QRVJBVE9SCWdfbWVtT1A7DQorDQorLyoqDQorICogQWxsb2NhdGUgbWVtb3J5DQorICogXHBhcmFtIHVJRCBbaW5dIG1vZHVsZSBJRA0KKyAqIFxwYXJhbSB1U2l6ZSBbaW5dIHNpemUgb2YgbWVtb3J5DQorICogXHJldHVybiB2YWx1ZSBpcyB0aGUgYWxsb2NhdGVkIG1lbW9yeSBhZGRyZXNzLiBOVUxMIGlzIGZhaWxlZC4NCisgKi8NCitWT19VMzIJY21uTWVtQWxsb2MgKFZPX1MzMiB1SUQsICBWT19NRU1fSU5GTyAqIHBNZW1JbmZvKTsNCisNCisvKioNCisgKiBGcmVlIHVwIG1lbW9yeQ0KKyAqIFxwYXJhbSB1SUQgW2luXSBtb2R1bGUgSUQNCisgKiBccGFyYW0gcE1lbSBbaW5dIGFkZHJlc3Mgb2YgbWVtb3J5DQorICogXHJldHVybiB2YWx1ZSAwLCBpZiBzdWNjZWVkZWQuDQorICovDQorVk9fVTMyCWNtbk1lbUZyZWUgKFZPX1MzMiB1SUQsIFZPX1BUUiBwQnVmZmVyKTsNCisNCisvKioNCisgKiBtZW1vcnkgc2V0IGZ1bmN0aW9uDQorICogXHBhcmFtIHVJRCBbaW5dIG1vZHVsZSBJRA0KKyAqIFxwYXJhbSBwQnVmZiBbaW4vb3V0XSBhZGRyZXNzIG9mIG1lbW9yeQ0KKyAqIFxwYXJhbSB1VmFsdWUgW2luXSB0aGUgdmFsdWUgdG8gYmUgc2V0DQorICogXHBhcmFtIHVTaXplIFtpbl0gdGhlIHNpemUgdG8gYmUgc2V0DQorICogXHJldHVybiB2YWx1ZSAwLCBpZiBzdWNjZWVkZWQuDQorICovDQorVk9fVTMyCWNtbk1lbVNldCAoVk9fUzMyIHVJRCwgVk9fUFRSIHBCdWZmLCBWT19VOCB1VmFsdWUsIFZPX1UzMiB1U2l6ZSk7DQorDQorLyoqDQorICogbWVtb3J5IGNvcHkgZnVuY3Rpb24NCisgKiBccGFyYW0gdUlEIFtpbl0gbW9kdWxlIElEDQorICogXHBhcmFtIHBEZXN0IFtpbi9vdXRdIGFkZHJlc3Mgb2YgZGVzdGluYXRpb24gbWVtb3J5DQorICogXHBhcmFtIHBTb3VyY2UgW2luXSBhZGRyZXNzIG9mIHNvdXJjZSBtZW1vcnkNCisgKiBccGFyYW0gdVNpemUgW2luXSB0aGUgc2l6ZSB0byBiZSBjb3BpZWQNCisgKiBccmV0dXJuIHZhbHVlIDAsIGlmIHN1Y2NlZWRlZC4NCisgKi8NCitWT19VMzIJY21uTWVtQ29weSAoVk9fUzMyIHVJRCwgVk9fUFRSIHBEZXN0LCBWT19QVFIgcFNvdXJjZSwgVk9fVTMyIHVTaXplKTsNCisNCisvKioNCisgKiBtZW1vcnkgY2hlY2sgZnVuY3Rpb24NCisgKiBccGFyYW0gdUlEIFtpbl0gbW9kdWxlIElEDQorICogXHBhcmFtIHBCdWZmIFtpbl0gYWRkcmVzcyBvZiBidWZmZXIgdG8gYmUgY2hlY2tlZA0KKyAqIFxwYXJhbSB1U2l6ZSBbaW5dIHRoZSBzaXplIHRvIGJlIGNoZWNrZWQNCisgKiBccmV0dXJuIHZhbHVlIDAsIGlmIHN1Y2NlZWRlZC4NCisgKi8NCitWT19VMzIJY21uTWVtQ2hlY2sgKFZPX1MzMiB1SUQsIFZPX1BUUiBwQnVmZmVyLCBWT19VMzIgdVNpemUpOw0KKw0KKy8qKg0KKyAqIG1lbW9yeSBjb21wYXJlIGZ1bmN0aW9uDQorICogXHBhcmFtIHVJRCBbaW5dIG1vZHVsZSBJRA0KKyAqIFxwYXJhbSBwQnVmZmVyMSBbaW5dIGFkZHJlc3Mgb2YgYnVmZmVyIDEgdG8gYmUgY29tcGFyZWQNCisgKiBccGFyYW0gcEJ1ZmZlcjIgW2luXSBhZGRyZXNzIG9mIGJ1ZmZlciAyIHRvIGJlIGNvbXBhcmVkDQorICogXHBhcmFtIHVTaXplIFtpbl0gdGhlIHNpemUgdG8gYmUgY29tcGFyZWQNCisgKiBccmV0dXJuIHZhbHVlOiBzYW1lIGFzIHN0YW5kYXJkIEMgcnVuLXRpbWUgbWVtY21wKCkgZnVuY3Rpb24uDQorICovDQorVk9fUzMyCWNtbk1lbUNvbXBhcmUgKFZPX1MzMiB1SUQsIFZPX1BUUiBwQnVmZmVyMSwgVk9fUFRSIHBCdWZmZXIyLCBWT19VMzIgdVNpemUpOw0KKw0KKy8qKg0KKyAqIG1lbW9yeSBtb3ZlIGZ1bmN0aW9uDQorICogXHBhcmFtIHVJRCBbaW5dIG1vZHVsZSBJRA0KKyAqIFxwYXJhbSBwRGVzdCBbaW4vb3V0XSBhZGRyZXNzIG9mIGRlc3RpbmF0aW9uIG1lbW9yeQ0KKyAqIFxwYXJhbSBwU291cmNlIFtpbl0gYWRkcmVzcyBvZiBzb3VyY2UgbWVtb3J5DQorICogXHBhcmFtIHVTaXplIFtpbl0gdGhlIHNpemUgdG8gYmUgbW92ZWQNCisgKiBccmV0dXJuIHZhbHVlIDAsIGlmIHN1Y2NlZWRlZC4NCisgKi8NCitWT19VMzIJY21uTWVtTW92ZSAoVk9fUzMyIHVJRCwgVk9fUFRSIHBEZXN0LCBWT19QVFIgcFNvdXJjZSwgVk9fVTMyIHVTaXplKTsNCisNCisNCisjaWZkZWYgX19jcGx1c3BsdXMNCit9DQorI2VuZGlmIC8qIF9fY3BsdXNwbHVzICovDQorDQorI2VuZGlmIC8vIF9fY21uTWVtb3J5X0hfXw0KKw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9jb21tb24vaW5jbHVkZS92b0FBQy5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2NvbW1vbi9pbmNsdWRlL3ZvQUFDLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDExZWQ4MwotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9jb21tb24vaW5jbHVkZS92b0FBQy5oCkBAIC0wLDAgKzEsNzQgQEAKKy8qDQorICoqIENvcHlyaWdodCAyMDAzLTIwMTAsIFZpc3VhbE9uLCBJbmMuDQorICoqDQorICoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAqKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqKg0KKyAqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoqDQorICoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisJRmlsZToJCXZvQUFDLmgNCisNCisJQ29udGVudDoJQUFDIGNvZGVjIEFQSXMgJiBkYXRhIHR5cGVzDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaWZuZGVmIF9fdm9BQUNfSF9fDQorI2RlZmluZSBfX3ZvQUFDX0hfXw0KKw0KKyNpZmRlZiBfX2NwbHVzcGx1cw0KK2V4dGVybiAiQyIgew0KKyNlbmRpZiAvKiBfX2NwbHVzcGx1cyAqLw0KKw0KKyNpbmNsdWRlICJ2b0F1ZGlvLmgiDQorDQorLyohDQorICogdGhlIGZyYW1lIHR5cGUgdGhhdCB0aGUgZGVjb2RlciBzdXBwb3J0cw0KKyAqLw0KK3R5cGVkZWYgZW51bSB7DQorCVZPQUFDX1JBV0RBVEEJCQk9IDAsCS8qITxjb250YWlucyBvbmx5IHJhdyBhYWMgZGF0YSBpbiBhIGZyYW1lKi8NCisJVk9BQUNfQURUUwkJCQk9IDEsCS8qITxjb250YWlucyBBRFRTIGhlYWRlciArIHJhdyBBQUMgZGF0YSBpbiBhIGZyYW1lKi8NCisJVk9BQUNfRlRfTUFYCQkJPSBWT19NQVhfRU5VTV9WQUxVRQ0KK30gVk9BQUNGUkFNRVRZUEU7DQorDQorLyohDQorICogdGhlIHN0cnVjdHVyZSBmb3IgQUFDIGVuY29kZXIgaW5wdXQgcGFyYW1ldGVyDQorICovDQordHlwZWRlZiAgc3RydWN0IHsNCisgIGludAkgIHNhbXBsZVJhdGU7ICAgICAgICAgIC8qISBhdWRpbyBmaWxlIHNhbXBsZSByYXRlICovDQorICBpbnQJICBiaXRSYXRlOyAgICAgICAgICAgICAvKiEgZW5jb2RlciBiaXQgcmF0ZSBpbiBiaXRzL3NlYyAqLw0KKyAgc2hvcnQgICBuQ2hhbm5lbHM7CQkgICAvKiEgbnVtYmVyIG9mIGNoYW5uZWxzIG9uIGlucHV0ICgxLDIpICovDQorICBzaG9ydCAgIGFkdHNVc2VkOwkJCSAgIC8qISB3aGV0aGVyIHdyaXRlIGFkdHMgaGVhZGVyICovDQorfSBBQUNFTkNfUEFSQU07DQorDQorLyogQUFDIFBhcmFtIElEICovDQorI2RlZmluZSBWT19QSURfQUFDX01kb3VsZQkJCQkweDQyMjExMDAwDQorI2RlZmluZSBWT19QSURfQUFDX0VOQ1BBUkFNCQkJCVZPX1BJRF9BQUNfTWRvdWxlIHwgMHgwMDQwICAvKiE8IGdldC9zZXQgQUFDIGVuY29kZXIgcGFyYW1ldGVyLCB0aGUgcGFyYW1ldGVyIGlzIGEgcG9pbnRlciB0byBBQUNFTkNfUEFSQU0gKi8NCisNCisvKiBBQUMgZGVjb2RlciBlcnJvciBJRCAqLw0KKyNkZWZpbmUgVk9fRVJSX0FBQ19NZG91bGUJCQkJMHg4MjIxMDAwMA0KKyNkZWZpbmUgVk9fRVJSX0FBQ19VTlNGSUxFRk9STUFUCQkoVk9fRVJSX0FBQ19NZG91bGUgfCAweEYwMDEpDQorI2RlZmluZSBWT19FUlJfQUFDX1VOU1BST0ZJTEUJCQkoVk9fRVJSX0FBQ19NZG91bGUgfCAweEYwMDIpDQorDQorLyoqDQorICogR2V0IGF1ZGlvIGVuY29kZXIgQVBJIGludGVyZmFjZQ0KKyAqIFxwYXJhbSBwRW5jSGFuZGxlIFtvdXRdIFJldHVybiB0aGUgQUFDIEVuY29kZXIgaGFuZGxlLg0KKyAqIFxyZXR2YWwgVk9fRVJSX09LIFN1Y2NlZWRlZC4NCisgKi8NCitWT19TMzIgVk9fQVBJIHZvR2V0QUFDRW5jQVBJIChWT19BVURJT19DT0RFQ0FQSSAqIHBFbmNIYW5kbGUpOw0KKw0KKyNpZmRlZiBfX2NwbHVzcGx1cw0KK30NCisjZW5kaWYgLyogX19jcGx1c3BsdXMgKi8NCisNCisjZW5kaWYgLy8gX192b0FBQ19IX18NCisNCisNCisNCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvY29tbW9uL2luY2x1ZGUvdm9BTVJXQi5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2NvbW1vbi9pbmNsdWRlL3ZvQU1SV0IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTkzZWI4Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2NvbW1vbi9pbmNsdWRlL3ZvQU1SV0IuaApAQCAtMCwwICsxLDg3IEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorCUZpbGU6CQl2b0FNUldCLmgNCisNCisJQ29udGVudDoJQU1SLVdCIGNvZGVjIEFQSXMgJiBkYXRhIHR5cGVzDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisjaWZuZGVmICBfX1ZPQU1SV0JfSF9fDQorI2RlZmluZSAgX19WT0FNUldCX0hfXw0KKw0KKyNpbmNsdWRlICAidm9BdWRpby5oIg0KKyNpZmRlZiBfX2NwbHVzcGx1cw0KK2V4dGVybiAiQyIgew0KKyNlbmRpZiAvKiBfX2NwbHVzcGx1cyAqLw0KKyNwcmFnbWEgcGFjayhwdXNoLCA0KQ0KKw0KKy8qISogdGhlIGJpdCByYXRlIHRoZSBjb2RlYyBzdXBwb3J0cyovDQordHlwZWRlZiBlbnVtIHsgDQorCVZPQU1SV0JfTUROT05FCQk9IC0xLAkvKiE8IEludmFsaWQgbW9kZSAqLw0KKwlWT0FNUldCX01ENjYJCT0gMCwJLyohPCA2LjYwa2JwcyAgICovDQorCVZPQU1SV0JfTUQ4ODUJCT0gMSwgICAgLyohPCA4Ljg1a2JwcyAgICovICAgICAgIA0KKwlWT0FNUldCX01EMTI2NQkJPSAyLAkvKiE8IDEyLjY1a2JwcyAgKi8NCisJVk9BTVJXQl9NRDE0MjUJCT0gMywJLyohPCAxNC4yNWticHMgICovDQorCVZPQU1SV0JfTUQxNTg1CQk9IDQsCS8qITwgMTUuODVicHMgICAqLw0KKwlWT0FNUldCX01EMTgyNQkJPSA1LAkvKiE8IDE4LjI1YnBzICAgKi8NCisJVk9BTVJXQl9NRDE5ODUJCT0gNiwJLyohPCAxOS44NWticHMgICovDQorCVZPQU1SV0JfTUQyMzA1CQk9IDcsICAgIC8qITwgMjMuMDVrYnBzICAqLw0KKwlWT0FNUldCX01EMjM4NSAgICAgICAgICA9IDgsICAgIC8qITwgMjMuODVrYnBzPiAqLwkNCisJVk9BTVJXQl9OX01PREVTIAk9IDksCS8qITwgSW52YWxpZCBtb2RlICovDQorCVZPQU1SV0JfTU9ERV9NQVggICAgPSBWT19NQVhfRU5VTV9WQUxVRQ0KKwkNCit9Vk9BTVJXQk1PREU7DQorDQorLyohKiB0aGUgZnJhbWUgZm9ybWF0IHRoZSBjb2RlYyBzdXBwb3J0cyovDQordHlwZWRlZiBlbnVtIHsNCisJVk9BTVJXQl9ERUZBVUxUICAJPSAwLAkvKiE8IHRoZSBmcmFtZSB0eXBlIGlzIHRoZSBoZWFkZXIgKGRlZmluZWQgaW4gUkZDMzI2NykgKyByYXdkYXRhKi8NCisJLypPbmUgd29yZCAoMi1ieXRlKSBmb3Igc3luYyB3b3JkICgweDZiMjEpKi8NCisJLypPbmUgd29yZCAoMi1ieXRlKSBmb3IgZnJhbWUgbGVuZ3RoIE4uKi8NCisJLypOIHdvcmRzICgyLWJ5dGUpIGNvbnRhaW5pbmcgTiBiaXRzIChiaXQgMCA9IDB4MDA3ZiwgYml0IDEgPSAweDAwODEpLiovDQorCVZPQU1SV0JfSVRVICAgICAgICAgPSAxLCANCisJLypPbmUgd29yZCAoMi1ieXRlKSBmb3Igc3luYyB3b3JkICgweDZiMjEpLiovDQorCS8qT25lIHdvcmQgKDItYnl0ZSkgdG8gaW5kaWNhdGUgdGhlIGZyYW1lIHR5cGUuKi8JDQorCS8qT25lIHdvcmQgKDItYnl0ZSkgdG8gaW5kaWNhdGUgdGhlIG1vZGUuKi8NCisJLypOIHdvcmRzICAoMi1ieXRlKSBjb250YWluaW5nIE4gYml0cyAoYml0IDAgPSAweGZmODEsIGJpdCAxID0gMHgwMDdmKS4qLw0KKwlWT0FNUldCX1JGQzMyNjcJCT0gMiwJLyogc2VlIFJGQyAzMjY3ICovICANCisgICAgVk9BTVJXQl9UTUFYICAgICAgICA9IFZPX01BWF9FTlVNX1ZBTFVFCQ0KK31WT0FNUldCRlJBTUVUWVBFOw0KKw0KKw0KKyNkZWZpbmUgICAgVk9fUElEX0FNUldCX01vZHVsZQkJCQkJCQkweDQyMjYxMDAwIA0KKyNkZWZpbmUgICAgVk9fUElEX0FNUldCX0ZPUk1BVCAgICAgICAgICAgICAgICAgICAgICAgICAgKFZPX1BJRF9BTVJXQl9Nb2R1bGUgfCAweDAwMDIpDQorI2RlZmluZSAgICBWT19QSURfQU1SV0JfQ0hBTk5FTFMgICAgICAgICAgICAgICAgICAgICAgICAoVk9fUElEX0FNUldCX01vZHVsZSB8IDB4MDAwMykNCisjZGVmaW5lICAgIFZPX1BJRF9BTVJXQl9TQU1QTEVSQVRFICAgICAgICAgICAgICAgICAgICAgIChWT19QSURfQU1SV0JfTW9kdWxlIHwgMHgwMDA0KQ0KKyNkZWZpbmUgICAgVk9fUElEX0FNUldCX0ZSQU1FVFlQRSAgICAgICAgICAgICAgICAgICAgICAgKFZPX1BJRF9BTVJXQl9Nb2R1bGUgfCAweDAwMDUpDQorI2RlZmluZSAgICBWT19QSURfQU1SV0JfTU9ERSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoVk9fUElEX0FNUldCX01vZHVsZSB8IDB4MDAwNikNCisjZGVmaW5lICAgIFZPX1BJRF9BTVJXQl9EVFggICAgICAgICAgICAgICAgICAgICAgICAgICAgIChWT19QSURfQU1SV0JfTW9kdWxlIHwgMHgwMDA3KQ0KKw0KKy8qKg0KKyAqIEdldCBhdWRpbyBjb2RlYyBBUEkgaW50ZXJmYWNlDQorICogXHBhcmFtIHBFbmNIYW5kbGUgW291dF0gUmV0dXJuIHRoZSBBTVJXQiBFbmNvZGVyIGhhbmRsZS4NCisgKiBccmV0dmFsIFZPX0VSUl9PSyBTdWNjZWVkZWQuDQorICovDQorVk9fUzMyIFZPX0FQSSB2b0dldEFNUldCRW5jQVBJKFZPX0FVRElPX0NPREVDQVBJICpwRW5jSGFuZGxlKTsNCisNCisNCisjcHJhZ21hIHBhY2socG9wKQ0KKyNpZmRlZiBfX2NwbHVzcGx1cw0KK30gLyogZXh0ZXJuICJDIiAqLw0KKyNlbmRpZiAvKiBfX2NwbHVzcGx1cyAqLw0KKw0KKw0KKyNlbmRpZiAgIC8vX19WT0FNUldCX0hfXw0KKw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9jb21tb24vaW5jbHVkZS92b0F1ZGlvLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvY29tbW9uL2luY2x1ZGUvdm9BdWRpby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0YzlkZmIKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvY29tbW9uL2luY2x1ZGUvdm9BdWRpby5oCkBAIC0wLDAgKzEsMTczIEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorCUZpbGU6CQl2b0F1ZGlvLmgNCisNCisJQ29udGVudDoJQXVkaW8gdHlwZXMgYW5kIGZ1bmN0aW9ucw0KKw0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovDQorDQorI2lmbmRlZiBfX3ZvQXVkaW9fSF9fDQorI2RlZmluZSBfX3ZvQXVkaW9fSF9fDQorDQorI2lmZGVmIF9fY3BsdXNwbHVzDQorZXh0ZXJuICJDIiB7DQorI2VuZGlmIC8qIF9fY3BsdXNwbHVzICovDQorDQorI2luY2x1ZGUgInZvSW5kZXguaCINCisjaW5jbHVkZSAidm9NZW0uaCINCisNCisjZGVmaW5lCVZPX1BJRF9BVURJT19CQVNFCQkJIDB4NDIwMDAwMDAJCQkJCQkJLyohPCBUaGUgYmFzZSBwYXJhbSBJRCBmb3IgQVVESU8gY29kZWMgKi8NCisjZGVmaW5lCVZPX1BJRF9BVURJT19GT1JNQVQJCQkoVk9fUElEX0FVRElPX0JBU0UgfCAwWDAwMDEpCQkvKiE8IFRoZSBmb3JtYXQgZGF0YSBvZiBhdWRpbyBpbiB0cmFjayAqLw0KKyNkZWZpbmUJVk9fUElEX0FVRElPX1NBTVBMRVJFQVRFCShWT19QSURfQVVESU9fQkFTRSB8IDBYMDAwMikJCS8qITwgVGhlIHNhbXBsZSByYXRlIG9mIGF1ZGlvICAqLw0KKyNkZWZpbmUJVk9fUElEX0FVRElPX0NIQU5ORUxTCQkoVk9fUElEX0FVRElPX0JBU0UgfCAwWDAwMDMpCQkvKiE8IFRoZSBjaGFubmVsIG9mIGF1ZGlvICovDQorI2RlZmluZQlWT19QSURfQVVESU9fQklUUkFURQkJKFZPX1BJRF9BVURJT19CQVNFIHwgMFgwMDA0KQkJLyohPCBUaGUgYml0IHJhdGUgb2YgYXVkaW8gKi8NCisjZGVmaW5lIFZPX1BJRF9BVURJT19DSEFOTkVMTU9ERQkoVk9fUElEX0FVRElPX0JBU0UgfCAwWDAwMDUpCQkvKiE8IFRoZSBjaGFubmVsIG1vZGUgb2YgYXVkaW8gKi8NCisNCisjZGVmaW5lCVZPX0VSUl9BVURJT19CQVNFCQkJMHg4MjAwMDAwMA0KKyNkZWZpbmUgVk9fRVJSX0FVRElPX1VOU0NIQU5ORUwJCVZPX0VSUl9BVURJT19CQVNFIHwgMHgwMDAxDQorI2RlZmluZSBWT19FUlJfQVVESU9fVU5TU0FNUExFUkFURQlWT19FUlJfQVVESU9fQkFTRSB8IDB4MDAwMg0KKyNkZWZpbmUgVk9fRVJSX0FVRElPX1VOU0ZFQVRVUkUJCVZPX0VSUl9BVURJT19CQVNFIHwgMHgwMDAzDQorDQorDQorLyoqDQorICpFbnVtZXJhdGlvbiB1c2VkIHRvIGRlZmluZSB0aGUgcG9zc2libGUgYXVkaW8gY29kaW5nIGZvcm1hdHMuDQorICovDQordHlwZWRlZiBlbnVtIFZPX0FVRElPX0NPRElOR1RZUEUgew0KKwlWT19BVURJT19Db2RpbmdVbnVzZWQgPSAwLCAgLyoqPCBQbGFjZWhvbGRlciB2YWx1ZSB3aGVuIGNvZGluZyBpcyBOL0EgICovDQorCVZPX0FVRElPX0NvZGluZ1BDTSwgICAgICAgICAvKio8IEFueSB2YXJpYW50IG9mIFBDTSBjb2RpbmcgKi8NCisJVk9fQVVESU9fQ29kaW5nQURQQ00sICAgICAgIC8qKjwgQW55IHZhcmlhbnQgb2YgQURQQ00gZW5jb2RlZCBkYXRhICovDQorCVZPX0FVRElPX0NvZGluZ0FNUk5CLCAgICAgICAvKio8IEFueSB2YXJpYW50IG9mIEFNUiBlbmNvZGVkIGRhdGEgKi8NCisJVk9fQVVESU9fQ29kaW5nQU1SV0IsICAgICAgIC8qKjwgQW55IHZhcmlhbnQgb2YgQU1SIGVuY29kZWQgZGF0YSAqLw0KKwlWT19BVURJT19Db2RpbmdBTVJXQlAsICAgICAgLyoqPCBBbnkgdmFyaWFudCBvZiBBTVIgZW5jb2RlZCBkYXRhICovDQorCVZPX0FVRElPX0NvZGluZ1FDRUxQMTMsICAgICAvKio8IEFueSB2YXJpYW50IG9mIFFDRUxQIDEza2JwcyBlbmNvZGVkIGRhdGEgKi8NCisJVk9fQVVESU9fQ29kaW5nRVZSQywgICAgICAgIC8qKjwgQW55IHZhcmlhbnQgb2YgRVZSQyBlbmNvZGVkIGRhdGEgKi8NCisJVk9fQVVESU9fQ29kaW5nQUFDLCAgICAgICAgIC8qKjwgQW55IHZhcmlhbnQgb2YgQUFDIGVuY29kZWQgZGF0YSwgMHhBMTA2IC0gSVNPL01QRUctNCBBQUMsIDB4RkYgLSBBQUMgKi8NCisJVk9fQVVESU9fQ29kaW5nQUMzLCAgICAgICAgIC8qKjwgQW55IHZhcmlhbnQgb2YgQUMzIGVuY29kZWQgZGF0YSAqLw0KKwlWT19BVURJT19Db2RpbmdGTEFDLCAgICAgICAgLyoqPCBBbnkgdmFyaWFudCBvZiBGTEFDIGVuY29kZWQgZGF0YSAqLw0KKwlWT19BVURJT19Db2RpbmdNUDEsCQkJLyoqPCBBbnkgdmFyaWFudCBvZiBNUDEgZW5jb2RlZCBkYXRhICovDQorCVZPX0FVRElPX0NvZGluZ01QMywgICAgICAgICAvKio8IEFueSB2YXJpYW50IG9mIE1QMyBlbmNvZGVkIGRhdGEgKi8NCisJVk9fQVVESU9fQ29kaW5nT0dHLCAgICAgICAgIC8qKjwgQW55IHZhcmlhbnQgb2YgT0dHIGVuY29kZWQgZGF0YSAqLw0KKwlWT19BVURJT19Db2RpbmdXTUEsICAgICAgICAgLyoqPCBBbnkgdmFyaWFudCBvZiBXTUEgZW5jb2RlZCBkYXRhICovDQorCVZPX0FVRElPX0NvZGluZ1JBLCAgICAgICAgICAvKio8IEFueSB2YXJpYW50IG9mIFJBIGVuY29kZWQgZGF0YSAqLw0KKwlWT19BVURJT19Db2RpbmdNSURJLCAgICAgICAgLyoqPCBBbnkgdmFyaWFudCBvZiBNSURJIGVuY29kZWQgZGF0YSAqLw0KKwlWT19BVURJT19Db2RpbmdEUkEsICAgICAgICAgLyoqPCBBbnkgdmFyaWFudCBvZiBkcmEgZW5jb2RlZCBkYXRhICovDQorCVZPX0FVRElPX0NvZGluZ0c3MjksICAgICAgICAvKio8IEFueSB2YXJpYW50IG9mIGRyYSBlbmNvZGVkIGRhdGEgKi8NCisJVk9fQVVESU9fQ29kaW5nX01BWAkJPSBWT19NQVhfRU5VTV9WQUxVRQ0KK30gVk9fQVVESU9fQ09ESU5HVFlQRTsNCisNCisvKiENCisqIHRoZSBjaGFubmVsIHR5cGUgdmFsdWUNCisqLw0KK3R5cGVkZWYgZW51bSB7DQorCVZPX0NIQU5ORUxfQ0VOVEVSCQkJCT0gMSwJLyohPGNlbnRlciBjaGFubmVsKi8NCisJVk9fQ0hBTk5FTF9GUk9OVF9MRUZUCQkJPSAxPDwxLAkvKiE8ZnJvbnQgbGVmdCBjaGFubmVsKi8NCisJVk9fQ0hBTk5FTF9GUk9OVF9SSUdIVAkJCT0gMTw8MiwJLyohPGZyb250IHJpZ2h0IGNoYW5uZWwqLw0KKwlWT19DSEFOTkVMX1NJREVfTEVGVCAgCQkJPSAxPDwzLCAvKiE8c2lkZSBsZWZ0IGNoYW5uZWwqLw0KKwlWT19DSEFOTkVMX1NJREVfUklHSFQJCQk9IDE8PDQsIC8qITxzaWRlIHJpZ2h0IGNoYW5uZWwqLw0KKwlWT19DSEFOTkVMX0JBQ0tfTEVGVAkJCT0gMTw8NSwJLyohPGJhY2sgbGVmdCBjaGFubmVsKi8NCisJVk9fQ0hBTk5FTF9CQUNLX1JJR0hUCQkJPSAxPDw2LAkvKiE8YmFjayByaWdodCBjaGFubmVsKi8NCisJVk9fQ0hBTk5FTF9CQUNLX0NFTlRFUgkJCT0gMTw8NywJLyohPGJhY2sgY2VudGVyIGNoYW5uZWwqLw0KKwlWT19DSEFOTkVMX0xGRV9CQVNTCQkJCT0gMTw8OCwJLyohPGxvdy1mcmVxdWVuY3kgZWZmZWN0cyBiYXNzIGNoYW5uZWwqLw0KKwlWT19DSEFOTkVMX0FMTAkJCQkJPSAweGZmZmYsLyohPFtkZWZhdWx0XSBpbmNsdWRlIGFsbCBjaGFubmVscyAqLw0KKwlWT19DSEFOTkVMX01BWAkJCQkJPSBWT19NQVhfRU5VTV9WQUxVRQ0KK30gVk9fQVVESU9fQ0hBTk5FTFRZUEU7DQorDQorLyoqDQorICogR2VuZXJhbCBhdWRpbyBmb3JtYXQgaW5mbw0KKyAqLw0KK3R5cGVkZWYgc3RydWN0DQorew0KKwlWT19TMzIJU2FtcGxlUmF0ZTsgIC8qITwgU2FtcGxlIHJhdGUgKi8NCisJVk9fUzMyCUNoYW5uZWxzOyAgICAvKiE8IENoYW5uZWwgY291bnQgKi8NCisJVk9fUzMyCVNhbXBsZUJpdHM7ICAvKiE8IEJpdHMgcGVyIHNhbXBsZSAqLw0KK30gVk9fQVVESU9fRk9STUFUOw0KKw0KKy8qKg0KKyAqIEdlbmVyYWwgYXVkaW8gb3V0cHV0IGluZm8NCisgKi8NCit0eXBlZGVmIHN0cnVjdA0KK3sNCisJVk9fQVVESU9fRk9STUFUCUZvcm1hdDsJCQkvKiE8IFNhbXBsZSByYXRlICovDQorCVZPX1UzMgkJCUlucHV0VXNlZDsJCS8qITwgQ2hhbm5lbCBjb3VudCAqLw0KKwlWT19VMzIJCQlSZXNldmVyOwkJLyohPCBSZXNldmVyZWQgKi8NCit9IFZPX0FVRElPX09VVFBVVElORk87DQorDQorLyoqDQorICogR2VuZXJhbCBhdWRpbyBjb2RlYyBmdW5jdGlvbiBzZXQNCisgKi8NCit0eXBlZGVmIHN0cnVjdCBWT19BVURJT19DT0RFQ0FQSQ0KK3sNCisJLyoqDQorCSAqIEluaXQgdGhlIGF1ZGlvIGNvZGVjIG1vZHVsZSBhbmQgcmV0dXJuIGNvZGVjIGhhbmRsZQ0KKwkgKiBccGFyYW0gcGhDb2RlYyBbT1VUXSBSZXR1cm4gdGhlIHZpZGVvIGNvZGVjIGhhbmRsZQ0KKwkgKiBccGFyYW0gdlR5cGUJW0lOXSBUaGUgY29kZWMgdHlwZSBpZiB0aGUgbW9kdWxlIHN1cHBvcnQgbXVsdGkgY29kZWMuDQorCSAqIFxwYXJhbSBwVXNlckRhdGEJW0lOXSBUaGUgaW5pdCBwYXJhbS4gSXQgaXMgZWl0aGVyIGEgbWVtb3J5IG9wZXJhdG9yIG9yIGFuIGFsbG9jYXRlZCBtZW1vcnkNCisJICogXHJldHZhbCBWT19FUlJfTk9ORSBTdWNjZWVkZWQuDQorCSAqLw0KKwlWT19VMzIgKFZPX0FQSSAqIEluaXQpIChWT19IQU5ETEUgKiBwaENvZGVjLCBWT19BVURJT19DT0RJTkdUWVBFIHZUeXBlLCBWT19DT0RFQ19JTklUX1VTRVJEQVRBICogcFVzZXJEYXRhICk7DQorDQorCS8qKg0KKwkgKiBTZXQgaW5wdXQgYXVkaW8gZGF0YS4NCisJICogXHBhcmFtIGhDb2RlYyBbSU5dXSBUaGUgY29kZWMgaGFuZGxlIHdoaWNoIHdhcyBjcmVhdGVkIGJ5IEluaXQgZnVuY3Rpb24uDQorCSAqIFxwYXJhbSBwSW5wdXQgW0lOXSBUaGUgaW5wdXQgYnVmZmVyIHBhcmFtLg0KKwkgKiBccmV0dmFsIFZPX0VSUl9OT05FIFN1Y2NlZWRlZC4NCisJICovDQorCVZPX1UzMiAoVk9fQVBJICogU2V0SW5wdXREYXRhKSAoVk9fSEFORExFIGhDb2RlYywgVk9fQ09ERUNCVUZGRVIgKiBwSW5wdXQpOw0KKw0KKwkvKioNCisJICogR2V0IHRoZSBvdXR1dCBhdWRpbyBkYXRhDQorCSAqIFxwYXJhbSBoQ29kZWMgW0lOXV0gVGhlIGNvZGVjIGhhbmRsZSB3aGljaCB3YXMgY3JlYXRlZCBieSBJbml0IGZ1bmN0aW9uLg0KKwkgKiBccGFyYW0gcE91dEJ1ZmZlciBbT1VUXSBUaGUgb3V0cHV0IGF1ZGlvIGRhdGENCisJICogXHBhcmFtIHBPdXRJbmZvIFtPVVRdIFRoZSBjb2RlYyBmaWxscyBhdWRpbyBmb3JtYXQgYW5kIHRoZSBpbnB1dCBkYXRhIHNpemUgdXNlZCBpbiBjdXJyZW50IGNhbGwuDQorCSAqCQkJCQkJIHBPdXRJbmZvLT5JbnB1dFVzZWQgaXMgdG90YWwgdXNlZCBpbnB1dCBkYXRhIHNpemUgaW4gYnl0ZS4NCisJICogXHJldHZhbCAgVk9fRVJSX05PTkUgU3VjY2VlZGVkLg0KKwkgKgkJCVZPX0VSUl9JTlBVVF9CVUZGRVJfU01BTEwuIFRoZSBpbnB1dCB3YXMgZmluaXNoZWQgb3IgdGhlIGlucHV0IGRhdGEgd2FzIG5vdCBlbm91Z2h0LiBDb250aW51ZSB0byBpbnB1dCANCisJICoJCQkJCQkJCQkJZGF0YSBiZWZvcmUgbmV4dCBjYWxsLg0KKwkgKi8NCisJVk9fVTMyIChWT19BUEkgKiBHZXRPdXRwdXREYXRhKSAoVk9fSEFORExFIGhDb2RlYywgVk9fQ09ERUNCVUZGRVIgKiBwT3V0QnVmZmVyLCBWT19BVURJT19PVVRQVVRJTkZPICogcE91dEluZm8pOw0KKw0KKwkvKioNCisJICogU2V0IHRoZSBwYXJhbWV0ZXIgZm9yIHRoZSBzcGVjaWZpZWQgcGFyYW0gSUQuDQorCSAqIFxwYXJhbSBoQ29kZWMgW0lOXV0gVGhlIGNvZGVjIGhhbmRsZSB3aGljaCB3YXMgY3JlYXRlZCBieSBJbml0IGZ1bmN0aW9uLg0KKwkgKiBccGFyYW0gdVBhcmFtSUQgW0lOXSBUaGUgcGFyYW0gSUQuDQorCSAqIFxwYXJhbSBwRGF0YSBbSU5dIFRoZSBwYXJhbSB2YWx1ZS4NCisJICogXHJldHZhbCBWT19FUlJfTk9ORSBTdWNjZWVkZWQuDQorCSAqLw0KKwlWT19VMzIgKFZPX0FQSSAqIFNldFBhcmFtKSAoVk9fSEFORExFIGhDb2RlYywgVk9fUzMyIHVQYXJhbUlELCBWT19QVFIgcERhdGEpOw0KKw0KKwkvKioNCisJICogR2V0IHRoZSBwYXJhbWV0ZXIgZm9yIHRoZSBzcGVjaWZpZWQgcGFyYW0gSUQuDQorCSAqIFxwYXJhbSBoQ29kZWMgW0lOXV0gVGhlIGNvZGVjIGhhbmRsZSB3aGljaCB3YXMgY3JlYXRlZCBieSBJbml0IGZ1bmN0aW9uLg0KKwkgKiBccGFyYW0gdVBhcmFtSUQgW0lOXSBUaGUgcGFyYW0gSUQuDQorCSAqIFxwYXJhbSBwRGF0YSBbSU5dIFRoZSBwYXJhbSB2YWx1ZS4NCisJICogXHJldHZhbCBWT19FUlJfTk9ORSBTdWNjZWVkZWQuDQorCSAqLw0KKwlWT19VMzIgKFZPX0FQSSAqIEdldFBhcmFtKSAoVk9fSEFORExFIGhDb2RlYywgVk9fUzMyIHVQYXJhbUlELCBWT19QVFIgcERhdGEpOw0KKw0KKwkvKioNCisJICogVW5pbml0IHRoZSBDb2RlYy4NCisJICogXHBhcmFtIGhDb2RlYyBbSU5dXSBUaGUgY29kZWMgaGFuZGxlIHdoaWNoIHdhcyBjcmVhdGVkIGJ5IEluaXQgZnVuY3Rpb24uDQorCSAqIFxyZXR2YWwgVk9fRVJSX05PTkUgU3VjY2VlZGVkLg0KKwkgKi8NCisJVk9fVTMyIChWT19BUEkgKiBVbmluaXQpIChWT19IQU5ETEUgaENvZGVjKTsNCit9IFZPX0FVRElPX0NPREVDQVBJOw0KKw0KKyNpZmRlZiBfX2NwbHVzcGx1cw0KK30NCisjZW5kaWYgLyogX19jcGx1c3BsdXMgKi8NCisNCisjZW5kaWYgLy8gX192b0F1ZGlvX0hfXw0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9jb21tb24vaW5jbHVkZS92b0luZGV4LmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvY29tbW9uL2luY2x1ZGUvdm9JbmRleC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0MWEwZGIKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvY29tbW9uL2luY2x1ZGUvdm9JbmRleC5oCkBAIC0wLDAgKzEsMTkzIEBACisvKg0KKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLg0KKyAqKg0KKyAqKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKioNCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqKg0KKyAqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQorCUZpbGU6CQl2b0luZGV4LmgNCisNCisJQ29udGVudDoJbW9kdWxlIGFuZCBJRCBkZWZpbml0aW9uDQorDQorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisNCisjaWZuZGVmIF9fdm9JbmRleF9IX18NCisjZGVmaW5lIF9fdm9JbmRleF9IX18NCisNCisjaWZkZWYgX19jcGx1c3BsdXMNCitleHRlcm4gIkMiIHsNCisjZW5kaWYgLyogX19jcGx1c3BsdXMgKi8NCisNCisjaW5jbHVkZSAidm9UeXBlLmgiDQorDQorLyogRGVmaW5lIHRoZSBtb2R1bGUgSUQgKi8NCisjZGVmaW5lIF9NQUtFX1NPVVJDRV9JRChpZCwgbmFtZSkgXA0KK1ZPX0lOREVYX1NSQ18jI25hbWUgPSBfVk9fSU5ERVhfU09VUkNFIHwgaWQsDQorDQorI2RlZmluZSBfTUFLRV9DT0RFQ19JRChpZCwgbmFtZSkgXA0KK1ZPX0lOREVYX0RFQ18jI25hbWUgPSBfVk9fSU5ERVhfREVDIHwgaWQsIFwNCitWT19JTkRFWF9FTkNfIyNuYW1lID0gX1ZPX0lOREVYX0VOQyB8IGlkLA0KKw0KKyNkZWZpbmUgX01BS0VfRUZGRUNUX0lEKGlkLCBuYW1lKSBcDQorVk9fSU5ERVhfRUZUXyMjbmFtZSA9IF9WT19JTkRFWF9FRkZFQ1QgfCBpZCwNCisNCisjZGVmaW5lIF9NQUtFX1NJTktfSUQoaWQsIG5hbWUpIFwNCitWT19JTkRFWF9TTktfIyNuYW1lID0gX1ZPX0lOREVYX1NJTksgfCBpZCwNCisNCisjZGVmaW5lIF9NQUtFX0ZJTFRFUl9JRChpZCwgbmFtZSkgXA0KK1ZPX0lOREVYX0ZMVF8jI25hbWUgPSBfVk9fSU5ERVhfRklMVEVSIHwgaWQsDQorDQorI2RlZmluZSBfTUFLRV9PTVhfSUQoaWQsIG5hbWUpIFwNCitWT19JTkRFWF9PTVhfIyNuYW1lID0gX1ZPX0lOREVYX09NWCB8IGlkLA0KKw0KKyNkZWZpbmUgX01BS0VfTUZXX0lEKGlkLCBuYW1lKSBcDQorVk9fSU5ERVhfTUZXXyMjbmFtZSA9IF9WT19JTkRFWF9NRlcgfCBpZCwNCisNCitlbnVtDQorew0KKwlfVk9fSU5ERVhfU09VUkNFCQk9IDB4MDEwMDAwMDAsDQorCV9WT19JTkRFWF9ERUMJCQk9IDB4MDIwMDAwMDAsDQorCV9WT19JTkRFWF9FTkMJCQk9IDB4MDMwMDAwMDAsDQorCV9WT19JTkRFWF9FRkZFQ1QJCT0gMHgwNDAwMDAwMCwNCisJX1ZPX0lOREVYX1NJTksJCQk9IDB4MDUwMDAwMDAsDQorCV9WT19JTkRFWF9GSUxURVIJCT0gMHgwNjAwMDAwMCwNCisJX1ZPX0lOREVYX09NWAkJCT0gMHgwNzAwMDAwMCwNCisJX1ZPX0lOREVYX01GVwkJCT0gMHgwODAwMDAwMCwNCisNCisJLy8gZGVmaW5lIGZpbGUgcGFyc2VyIG1vZHVsZXMNCisJX01BS0VfU09VUkNFX0lEICgweDAxMDAwMCwgTVA0KQ0KKwlfTUFLRV9TT1VSQ0VfSUQgKDB4MDIwMDAwLCBBVkkpDQorCV9NQUtFX1NPVVJDRV9JRCAoMHgwMzAwMDAsIEFTRikNCisJX01BS0VfU09VUkNFX0lEICgweDA0MDAwMCwgUkVBTCkNCisJX01BS0VfU09VUkNFX0lEICgweDA1MDAwMCwgQVVESU8pDQorCV9NQUtFX1NPVVJDRV9JRCAoMHgwNjAwMDAsIEZMQVNIKQ0KKwlfTUFLRV9TT1VSQ0VfSUQgKDB4MDcwMDAwLCBPR0cpDQorCV9NQUtFX1NPVVJDRV9JRCAoMHgwODAwMDAsIE1LVikNCisNCisJLy8gZGVmaW5lIG5ldHdvcmsgc291cmNlIG1vZHVsZXMNCisJX01BS0VfU09VUkNFX0lEICgweDExMDAwMCwgUlRTUCkNCisJX01BS0VfU09VUkNFX0lEICgweDEyMDAwMCwgSFRUUCkNCisNCisJLy8gZGVmaW5lIENNTUIgc291cmNlIG1vZHVsZXMNCisJX01BS0VfU09VUkNFX0lEICgweDIwMDAwMCwgQ01NQikNCisJX01BS0VfU09VUkNFX0lEICgweDIxMDAwMCwgQ01NQl9JTk5PKQ0KKwlfTUFLRV9TT1VSQ0VfSUQgKDB4MjIwMDAwLCBDTU1CX1RFTEUpDQorCV9NQUtFX1NPVVJDRV9JRCAoMHgyMzAwMDAsIENNTUJfU0lBTk8pDQorDQorCS8vIGRlZmluZSBEVkJUIHNvdXJjZSBtb2R1bGVzDQorCV9NQUtFX1NPVVJDRV9JRCAoMHgzMDAwMDAsIERWQlQpDQorCV9NQUtFX1NPVVJDRV9JRCAoMHgzMTAwMDAsIERWQlRfRElCQ09NKQ0KKw0KKwkvLyBkZWZpbmUgb3RoZXIgc291cmNlIG1vZHVsZXMNCisJX01BS0VfU09VUkNFX0lEICgweDQwMDAwMCwgSUQzKQ0KKw0KKwkvLyBkZWZpbmUgdmlkZW8gY29kZWMgbW9kdWxlcw0KKwlfTUFLRV9DT0RFQ19JRCAoMHgwMTAwMDAsIEgyNjQpDQorCV9NQUtFX0NPREVDX0lEICgweDAyMDAwMCwgTVBFRzQpDQorCV9NQUtFX0NPREVDX0lEICgweDAzMDAwMCwgSDI2MykNCisJX01BS0VfQ09ERUNfSUQgKDB4MDQwMDAwLCBTMjYzKQ0KKwlfTUFLRV9DT0RFQ19JRCAoMHgwNTAwMDAsIFJWKQ0KKwlfTUFLRV9DT0RFQ19JRCAoMHgwNjAwMDAsIFdNVikNCisJX01BS0VfQ09ERUNfSUQgKDB4MDcwMDAwLCBESVZYMykNCisJX01BS0VfQ09ERUNfSUQgKDB4MDgwMDAwLCBNSlBFRykNCisJX01BS0VfQ09ERUNfSUQgKDB4MDkwMDAwLCBNUEVHMikNCisJX01BS0VfQ09ERUNfSUQgKDB4MEEwMDAwLCBWUDYpDQorDQorCS8vIGRlZmluZSBhdWRpbyBjb2RlYyBtb2R1bGVzDQorCV9NQUtFX0NPREVDX0lEICgweDIxMDAwMCwgQUFDKQ0KKwlfTUFLRV9DT0RFQ19JRCAoMHgyMjAwMDAsIE1QMykNCisJX01BS0VfQ09ERUNfSUQgKDB4MjMwMDAwLCBXTUEpDQorCV9NQUtFX0NPREVDX0lEICgweDI0MDAwMCwgUkEpDQorCV9NQUtFX0NPREVDX0lEICgweDI1MDAwMCwgQU1STkIpDQorCV9NQUtFX0NPREVDX0lEICgweDI2MDAwMCwgQU1SV0IpDQorCV9NQUtFX0NPREVDX0lEICgweDI3MDAwMCwgQU1SV0JQKQ0KKwlfTUFLRV9DT0RFQ19JRCAoMHgyODAwMDAsIFFDRUxQKQ0KKwlfTUFLRV9DT0RFQ19JRCAoMHgyOTAwMDAsIEVWUkMpDQorCV9NQUtFX0NPREVDX0lEICgweDJBMDAwMCwgQURQQ00pDQorCV9NQUtFX0NPREVDX0lEICgweDJCMDAwMCwgTUlESSkNCisJX01BS0VfQ09ERUNfSUQgKDB4MkMwMDAwLCBBQzMpDQorCV9NQUtFX0NPREVDX0lEICgweDJEMDAwMCwgRkxBQykNCisJX01BS0VfQ09ERUNfSUQgKDB4MkUwMDAwLCBEUkEpDQorCV9NQUtFX0NPREVDX0lEICgweDJGMDAwMCwgT0dHKQ0KKwlfTUFLRV9DT0RFQ19JRCAoMHgzMDAwMDAsIEc3MjkpDQorDQorCS8vIGRlZmluZSBpbWFnZSBjb2RlYyBtb2R1bGVzDQorCV9NQUtFX0NPREVDX0lEICgweDQxMDAwMCwgSlBFRykNCisJX01BS0VfQ09ERUNfSUQgKDB4NDIwMDAwLCBHSUYpDQorCV9NQUtFX0NPREVDX0lEICgweDQzMDAwMCwgUE5HKQ0KKwlfTUFLRV9DT0RFQ19JRCAoMHg0NDAwMDAsIFRJRikNCisNCisJLy8gZGVmaW5lIGVmZmVjdCBtb2R1bGVzDQorCV9NQUtFX0VGRkVDVF9JRCAoMHgwMTAwMDAsIEVRKQ0KKw0KKwkvLyBkZWZpbmUgc2luayBtb2R1bGVzDQorCV9NQUtFX1NJTktfSUQgKDB4MDEwMDAwLCBWSURFTykNCisJX01BS0VfU0lOS19JRCAoMHgwMjAwMDAsIEFVRElPKQ0KKwlfTUFLRV9TSU5LX0lEICgweDAzMDAwMCwgQ0NSUlIpDQorCV9NQUtFX1NJTktfSUQgKDB4MDQwMDAwLCBDQ1JSVikNCisNCisJX01BS0VfU0lOS19JRCAoMHgxMTAwMDAsIE1QNCkNCisJX01BS0VfU0lOS19JRCAoMHgxMjAwMDAsIEFWSSkNCisJX01BS0VfU0lOS19JRCAoMHgxMzAwMDAsIEFGVykNCisNCisJLy8gZGVmaW5lIG1lZGlhIGZyYW1lIG1vZHVsZSBJRA0KKwlfTUFLRV9NRldfSUQgKDB4MDEwMDAwLCBWT01NUExBWSkNCisJX01BS0VfTUZXX0lEICgweDAyMDAwMCwgVk9NTVJFQykNCisJX01BS0VfTUZXX0lEICgweDAzMDAwMCwgVk9NRSkNCit9Ow0KKw0KKw0KKy8qIGRlZmluZSB0aGUgZXJyb3IgSUQgKi8NCisjZGVmaW5lIFZPX0VSUl9OT05FCQkJCQkJMHgwMDAwMDAwMA0KKyNkZWZpbmUgVk9fRVJSX0ZJTklTSAkJCQkJMHgwMDAwMDAwMQ0KKyNkZWZpbmUgVk9fRVJSX0JBU0UJCQkJCQkwWDgwMDAwMDAwDQorI2RlZmluZSBWT19FUlJfRkFJTEVECQkJCQkweDgwMDAwMDAxDQorI2RlZmluZSBWT19FUlJfT1VUT0ZfTUVNT1JZCQkJCTB4ODAwMDAwMDINCisjZGVmaW5lIFZPX0VSUl9OT1RfSU1QTEVNRU5UCQkJMHg4MDAwMDAwMw0KKyNkZWZpbmUgVk9fRVJSX0lOVkFMSURfQVJHCQkJCTB4ODAwMDAwMDQNCisjZGVmaW5lIFZPX0VSUl9JTlBVVF9CVUZGRVJfU01BTEwJCTB4ODAwMDAwMDUNCisjZGVmaW5lIFZPX0VSUl9PVVRQVVRfQlVGRkVSX1NNQUxMCQkweDgwMDAwMDA2DQorI2RlZmluZSBWT19FUlJfV1JPTkdfU1RBVFVTCQkJCTB4ODAwMDAwMDcNCisjZGVmaW5lIFZPX0VSUl9XUk9OR19QQVJBTV9JRAkJCTB4ODAwMDAwMDgNCisjZGVmaW5lIFZPX0VSUl9MSUNFTlNFX0VSUk9SCQkJMHg4MDAwMDAwOQ0KKw0KKy8qIHh4eCBpcyB0aGUgbW9kdWxlIElEDQorI2RlZmluZSBWT19FUlJfRkFJTEVECQkJCQkweDh4eHgwMDAxDQorI2RlZmluZSBWT19FUlJfT1VUT0ZfTUVNT1JZCQkJCTB4OHh4eDAwMDINCisjZGVmaW5lIFZPX0VSUl9OT1RfSU1QTEVNRU5UCQkJMHg4eHh4MDAwMw0KKyNkZWZpbmUgVk9fRVJSX0lOVkFMSURfQVJHCQkJCTB4OHh4eDAwMDQNCisjZGVmaW5lIFZPX0VSUl9JTlBVVF9CVUZGRVJfU01BTEwJCTB4OHh4eDAwMDUNCisjZGVmaW5lIFZPX0VSUl9PVVRQVVRfQlVGRkVSX1NNQUxMCQkweDh4eHgwMDA2DQorI2RlZmluZSBWT19FUlJfV1JPTkdfU1RBVFVTCQkJCTB4OHh4eDAwMDcNCisjZGVmaW5lIFZPX0VSUl9XUk9OR19QQVJBTV9JRAkJCTB4OHh4eDAwMDgNCisjZGVmaW5lIFZPX0VSUl9MSUNFTlNFX0VSUk9SCQkJMHg4eHh4MDAwOQ0KKy8vIE1vZHVsZSBvd24gZXJyb3IgSUQNCisjZGVmaW5lIFZPX0VSUl9Nb2R1bGUJCQkJCTB4OHh4eDBYMDANCisqLw0KKyANCisjZGVmaW5lCVZPX1BJRF9DT01NT05fQkFTRQkJCQkgMHg0MDAwMDAwMAkJCQkJCS8qITwgVGhlIGJhc2Ugb2YgY29tbW9uIHBhcmFtIElEICovDQorI2RlZmluZQlWT19QSURfQ09NTU9OX1FVRVJZTUVNCQkJKFZPX1BJRF9DT01NT05fQkFTRSB8IDBYMDAwMSkJLyohPCBRdWVyeSB0aGUgbWVtb3J5IG5lZWRlZDsgUmVzZXJ2ZWQuICovDQorI2RlZmluZQlWT19QSURfQ09NTU9OX0lOUFVUVFlQRQkJCShWT19QSURfQ09NTU9OX0JBU0UgfCAwWDAwMDIpCS8qITwgU2V0IG9yIGdldCB0aGUgaW5wdXQgYnVmZmVyIHR5cGUuIFZPX0lOUFVUX1RZUEUgKi8NCisjZGVmaW5lCVZPX1BJRF9DT01NT05fSEFTUkVTT1VSQ0UJCShWT19QSURfQ09NTU9OX0JBU0UgfCAwWDAwMDMpCS8qITwgUXVlcnkgaXQgaGFzIHJlc291cmNlIHRvIGJlIHVzZWQuIFZPX1UzMiAqLCAxIGhhdmUsIDAgTm8gKi8NCisjZGVmaW5lCVZPX1BJRF9DT01NT05fSEVBRERBVEEJCQkoVk9fUElEX0NPTU1PTl9CQVNFIHwgMFgwMDA0KQkvKiE8IERlY29kZXIgdHJhY2sgaGVhZGVyIGRhdGEuIFZPX0NPREVDQlVGRkVSICogKi8NCisjZGVmaW5lCVZPX1BJRF9DT01NT05fRkxVU0gJCQkJKFZPX1BJRF9DT01NT05fQkFTRSB8IDBYMDAwNSkJLyohPCBGbHVzaCB0aGUgY29kZWMgYnVmZmVyLiBWT19VMzIgKiwgMSBGbHVzaCwgMCBObyAqICovDQorDQorLyoNCisvLyBNb2R1bGUgUGFyYW0gSUQNCisjZGVmaW5lIFZPX0lEX01kb3VsZQkJCQkJMHgweHh4MTAwMA0KKyovDQorDQorI2lmZGVmIF9fY3BsdXNwbHVzDQorfQ0KKyNlbmRpZiAvKiBfX2NwbHVzcGx1cyAqLw0KKw0KKyNlbmRpZiAvLyBfX3ZvSW5kZXhfSF9fDQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2NvbW1vbi9pbmNsdWRlL3ZvTWVtLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvY29tbW9uL2luY2x1ZGUvdm9NZW0uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZGZiNjM0Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL2NvbW1vbi9pbmNsdWRlL3ZvTWVtLmgKQEAgLTAsMCArMSw2NSBAQAorLyoKKyAqKiBDb3B5cmlnaHQgMjAwMy0yMDEwLCBWaXN1YWxPbiwgSW5jLgorICoqCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoqCisgKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoqCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCUZpbGU6CQl2b01lbS5oCisKKwlDb250ZW50OgltZW1vcnkgZnVuY3Rpb25zICYgZGF0YSBzdHJ1Y3R1cmVzCisKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKKyNpZm5kZWYgX192b01lbV9IX18KKyNkZWZpbmUgX192b01lbV9IX18KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZiAvKiBfX2NwbHVzcGx1cyAqLworCisjaW5jbHVkZSAidm9JbmRleC5oIgorCit0eXBlZGVmIHN0cnVjdAoreworCVZPX1MzMgkJCQlTaXplOwkJCQkvKiE8IEJ1ZmZlciBzdHJpZGUgKi8KKwlWT19TMzIJCQkJRmxhZzsKKwlWT19QVFIJCQkJVkJ1ZmZlcjsJCQkvKiE8IHVzZXIgZGF0YSBwb2ludGVyICovCisJVk9fUFRSCQkJCVBCdWZmZXI7CQkJLyohPCB1c2VyIGRhdGEgcG9pbnRlciAqLworfQorVk9fTUVNX0lORk87CisKK3R5cGVkZWYgc3RydWN0IFZPX01FTV9PUEVSQVRPUgoreworCVZPX1UzMiAoVk9fQVBJICogQWxsb2MpIChWT19TMzIgdUlELCBWT19NRU1fSU5GTyAqIHBNZW1JbmZvKTsKKwlWT19VMzIgKFZPX0FQSSAqIEZyZWUpIChWT19TMzIgdUlELCBWT19QVFIgcEJ1ZmYpOworCVZPX1UzMiAoVk9fQVBJICogU2V0KSAoVk9fUzMyIHVJRCwgVk9fUFRSIHBCdWZmLCBWT19VOCB1VmFsdWUsIFZPX1UzMiB1U2l6ZSk7CisJVk9fVTMyIChWT19BUEkgKiBDb3B5KSAoVk9fUzMyIHVJRCwgVk9fUFRSIHBEZXN0LCBWT19QVFIgcFNvdXJjZSwgVk9fVTMyIHVTaXplKTsKKwlWT19VMzIgKFZPX0FQSSAqIENoZWNrKSAoVk9fUzMyIHVJRCwgVk9fUFRSIHBCdWZmZXIsIFZPX1UzMiB1U2l6ZSk7CisJVk9fUzMyIChWT19BUEkgKiBDb21wYXJlKSAoVk9fUzMyIHVJRCwgVk9fUFRSIHBCdWZmZXIxLCBWT19QVFIgcEJ1ZmZlcjIsIFZPX1UzMiB1U2l6ZSk7CisJVk9fVTMyIChWT19BUEkgKiBNb3ZlKSAoVk9fUzMyIHVJRCwgVk9fUFRSIHBEZXN0LCBWT19QVFIgcFNvdXJjZSwgVk9fVTMyIHVTaXplKTsKK30gVk9fTUVNX09QRVJBVE9SOworCisjZGVmaW5lIHZvTWVtQWxsb2MocEJ1ZmYsIHBNZW1PUCwgSUQsIG5TaXplKSBcCit7IFwKKwlWT19NRU1fSU5GTyB2b01lbUluZm87IFwKKwl2b01lbUluZm8uU2l6ZT1uU2l6ZTsgXAorCXBNZW1PUC0+QWxsb2MoSUQsICZ2b01lbUluZm8pOyBcCisJcEJ1ZmY9KFZPX1BCWVRFKXZvTWVtSW5mby5WQnVmZmVyOyBcCit9CisKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYgLyogX19jcGx1c3BsdXMgKi8KKworI2VuZGlmIC8vIF9fdm9NZW1fSF9fCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvY29tbW9uL2luY2x1ZGUvdm9UeXBlLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvY29tbW9uL2luY2x1ZGUvdm9UeXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY2OTEzNAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9jb21tb24vaW5jbHVkZS92b1R5cGUuaApAQCAtMCwwICsxLDIyMSBAQAorLyoNCisgKiogQ29weXJpZ2h0IDIwMDMtMjAxMCwgVmlzdWFsT24sIEluYy4NCisgKioNCisgKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoqDQorICoqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKioNCisgKiogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgKiogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKwlGaWxlOgkJdm9UeXBlLmgNCisNCisJQ29udGVudDoJZGF0YSB0eXBlIGRlZmluaXRpb24NCisNCisqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyNpZm5kZWYgX192b1R5cGVfSF9fDQorI2RlZmluZSBfX3ZvVHlwZV9IX18NCisNCisjaWZkZWYgX19jcGx1c3BsdXMNCitleHRlcm4gIkMiIHsNCisjZW5kaWYgLyogX19jcGx1c3BsdXMgKi8NCisNCisjaWZkZWYgX1dJTjMyDQorIwlkZWZpbmUgVk9fQVBJIF9fY2RlY2wNCisjCWRlZmluZSBWT19DQkkgX19zdGRjYWxsDQorI2Vsc2UNCisjCWRlZmluZSBWT19BUEkNCisjCWRlZmluZSBWT19DQkkNCisjZW5kaWYgLy9fV0lOMzINCisNCisvKiogVk9fSU4gaXMgdXNlZCB0byBpZGVudGlmeSBpbnB1dHMgdG8gYW4gVk8gZnVuY3Rpb24uICBUaGlzIGRlc2lnbmF0aW9uDQorICAgIHdpbGwgYWxzbyBiZSB1c2VkIGluIHRoZSBjYXNlIG9mIGEgcG9pbnRlciB0aGF0IHBvaW50cyB0byBhIHBhcmFtZXRlcg0KKyAgICB0aGF0IGlzIHVzZWQgYXMgYW4gb3V0cHV0LiAqLw0KKyNpZm5kZWYgVk9fSU4NCisjZGVmaW5lIFZPX0lODQorI2VuZGlmDQorDQorLyoqIFZPX09VVCBpcyB1c2VkIHRvIGlkZW50aWZ5IG91dHB1dHMgZnJvbSBhbiBWTyBmdW5jdGlvbi4gIFRoaXMNCisgICAgZGVzaWduYXRpb24gd2lsbCBhbHNvIGJlIHVzZWQgaW4gdGhlIGNhc2Ugb2YgYSBwb2ludGVyIHRoYXQgcG9pbnRzDQorICAgIHRvIGEgcGFyYW1ldGVyIHRoYXQgaXMgdXNlZCBhcyBhbiBpbnB1dC4gKi8NCisjaWZuZGVmIFZPX09VVA0KKyNkZWZpbmUgVk9fT1VUDQorI2VuZGlmDQorDQorLyoqIFZPX0lOT1VUIGlzIHVzZWQgdG8gaWRlbnRpZnkgcGFyYW1ldGVycyB0aGF0IG1heSBiZSBlaXRoZXIgaW5wdXRzIG9yDQorICAgIG91dHB1dHMgZnJvbSBhbiBWTyBmdW5jdGlvbiBhdCB0aGUgc2FtZSB0aW1lLiAgVGhpcyBkZXNpZ25hdGlvbiB3aWxsDQorICAgIGFsc28gYmUgdXNlZCBpbiB0aGUgY2FzZSBvZiBhIHBvaW50ZXIgdGhhdCAgcG9pbnRzIHRvIGEgcGFyYW1ldGVyIHRoYXQNCisgICAgaXMgdXNlZCBib3RoIGFzIGFuIGlucHV0IGFuZCBhbiBvdXRwdXQuICovDQorI2lmbmRlZiBWT19JTk9VVA0KKyNkZWZpbmUgVk9fSU5PVVQNCisjZW5kaWYNCisNCisjZGVmaW5lIFZPX01BWF9FTlVNX1ZBTFVFCTBYN0ZGRkZGRkYNCisNCisvKiogVk9fVk9JRCAqLw0KK3R5cGVkZWYgdm9pZCBWT19WT0lEOw0KKw0KKy8qKiBWT19VOCBpcyBhbiA4IGJpdCB1bnNpZ25lZCBxdWFudGl0eSB0aGF0IGlzIGJ5dGUgYWxpZ25lZCAqLw0KK3R5cGVkZWYgdW5zaWduZWQgY2hhciBWT19VODsNCisNCisvKiogVk9fQllURSBpcyBhbiA4IGJpdCB1bnNpZ25lZCBxdWFudGl0eSB0aGF0IGlzIGJ5dGUgYWxpZ25lZCAqLw0KK3R5cGVkZWYgdW5zaWduZWQgY2hhciBWT19CWVRFOw0KKw0KKy8qKiBWT19TOCBpcyBhbiA4IGJpdCBzaWduZWQgcXVhbnRpdHkgdGhhdCBpcyBieXRlIGFsaWduZWQgKi8NCit0eXBlZGVmIHNpZ25lZCBjaGFyIFZPX1M4Ow0KKw0KKy8qKiBWT19DSEFSIGlzIGFuIDggYml0IHNpZ25lZCBxdWFudGl0eSB0aGF0IGlzIGJ5dGUgYWxpZ25lZCAqLw0KK3R5cGVkZWYgY2hhciBWT19DSEFSOw0KKw0KKy8qKiBWT19VMTYgaXMgYSAxNiBiaXQgdW5zaWduZWQgcXVhbnRpdHkgdGhhdCBpcyAxNiBiaXQgd29yZCBhbGlnbmVkICovDQordHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBWT19VMTY7DQorDQorLyoqIFZPX1dDSEFSIGlzIGEgMTYgYml0IHVuc2lnbmVkIHF1YW50aXR5IHRoYXQgaXMgMTYgYml0IHdvcmQgYWxpZ25lZCAqLw0KKyNpZiBkZWZpbmVkIF9XSU4zMg0KK3R5cGVkZWYgdW5zaWduZWQgc2hvcnQgVk9fV0NIQVI7DQordHlwZWRlZiB1bnNpZ25lZCBzaG9ydCogVk9fUFdDSEFSOw0KKyNlbGlmIGRlZmluZWQgTElOVVgNCit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgVk9fV0NIQVI7DQordHlwZWRlZiB1bnNpZ25lZCBjaGFyKiBWT19QV0NIQVI7DQorI2VuZGlmDQorDQorLyoqIFZPX1MxNiBpcyBhIDE2IGJpdCBzaWduZWQgcXVhbnRpdHkgdGhhdCBpcyAxNiBiaXQgd29yZCBhbGlnbmVkICovDQordHlwZWRlZiBzaWduZWQgc2hvcnQgVk9fUzE2Ow0KKw0KKy8qKiBWT19VMzIgaXMgYSAzMiBiaXQgdW5zaWduZWQgcXVhbnRpdHkgdGhhdCBpcyAzMiBiaXQgd29yZCBhbGlnbmVkICovDQordHlwZWRlZiB1bnNpZ25lZCBsb25nIFZPX1UzMjsNCisNCisvKiogVk9fUzMyIGlzIGEgMzIgYml0IHNpZ25lZCBxdWFudGl0eSB0aGF0IGlzIDMyIGJpdCB3b3JkIGFsaWduZWQgKi8NCit0eXBlZGVmIHNpZ25lZCBsb25nIFZPX1MzMjsNCisNCisvKiBVc2VycyB3aXRoIGNvbXBpbGVycyB0aGF0IGNhbm5vdCBhY2NlcHQgdGhlICJsb25nIGxvbmciIGRlc2lnbmF0aW9uIHNob3VsZA0KKyAgIGRlZmluZSB0aGUgVk9fU0tJUDY0QklUIG1hY3JvLiAgSXQgc2hvdWxkIGJlIG5vdGVkIHRoYXQgdGhpcyBtYXkgY2F1c2UNCisgICBzb21lIGNvbXBvbmVudHMgdG8gZmFpbCB0byBjb21waWxlIGlmIHRoZSBjb21wb25lbnQgd2FzIHdyaXR0ZW4gdG8gcmVxdWlyZQ0KKyAgIDY0IGJpdCBpbnRlZ3JhbCB0eXBlcy4gIEhvd2V2ZXIsIHRoZXNlIGNvbXBvbmVudHMgd291bGQgTk9UIGNvbXBpbGUgYW55d2F5DQorICAgc2luY2UgdGhlIGNvbXBpbGVyIGRvZXMgbm90IHN1cHBvcnQgdGhlIHdheSB0aGUgY29tcG9uZW50IHdhcyB3cml0dGVuLg0KKyovDQorI2lmbmRlZiBWT19TS0lQNjRCSVQNCisjaWZkZWYgX1dJTjMyDQorLyoqIFZPX1U2NCBpcyBhIDY0IGJpdCB1bnNpZ25lZCBxdWFudGl0eSB0aGF0IGlzIDY0IGJpdCB3b3JkIGFsaWduZWQgKi8NCit0eXBlZGVmIHVuc2lnbmVkIF9faW50NjQgIFZPX1U2NDsNCisvKiogVk9fUzY0IGlzIGEgNjQgYml0IHNpZ25lZCBxdWFudGl0eSB0aGF0IGlzIDY0IGJpdCB3b3JkIGFsaWduZWQgKi8NCit0eXBlZGVmIHNpZ25lZCAgIF9faW50NjQgIFZPX1M2NDsNCisjZWxzZSAvLyBXSU4zMg0KKy8qKiBWT19VNjQgaXMgYSA2NCBiaXQgdW5zaWduZWQgcXVhbnRpdHkgdGhhdCBpcyA2NCBiaXQgd29yZCBhbGlnbmVkICovDQordHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgVk9fVTY0Ow0KKy8qKiBWT19TNjQgaXMgYSA2NCBiaXQgc2lnbmVkIHF1YW50aXR5IHRoYXQgaXMgNjQgYml0IHdvcmQgYWxpZ25lZCAqLw0KK3R5cGVkZWYgc2lnbmVkIGxvbmcgbG9uZyBWT19TNjQ7DQorI2VuZGlmIC8vIFdJTjMyDQorI2VuZGlmIC8vIFZPX1NLSVA2NEJJVA0KKw0KKy8qKiBUaGUgVk9fQk9PTCB0eXBlIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgdG8gcmVwcmVzZW50IGEgdHJ1ZSBvciBhIGZhbHNlDQorICAgIHZhbHVlIHdoZW4gcGFzc2luZyBwYXJhbWV0ZXJzIHRvIGFuZCBmcm9tIHRoZSBWTyBjb3JlIGFuZCBjb21wb25lbnRzLiAgVGhlDQorICAgIFZPX0JPT0wgaXMgYSAzMiBiaXQgcXVhbnRpdHkgYW5kIGlzIGFsaWduZWQgb24gYSAzMiBiaXQgd29yZCBib3VuZGFyeS4NCisgKi8NCit0eXBlZGVmIGVudW0gVk9fQk9PTCB7DQorICAgIFZPX0ZBTFNFID0gMCwNCisgICAgVk9fVFJVRSA9ICFWT19GQUxTRSwNCisJVk9fQk9PTF9NQVggPSBWT19NQVhfRU5VTV9WQUxVRQ0KK30gVk9fQk9PTDsNCisNCisvKiogVGhlIFZPX1BUUiB0eXBlIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgdG8gcGFzcyBwb2ludGVycyBiZXR3ZWVuIHRoZSBWTw0KKyAgICBhcHBsaWNhdGlvbnMgYW5kIHRoZSBWTyBDb3JlIGFuZCBjb21wb25lbnRzLiAgVGhpcyBpcyBhIDMyIGJpdCBwb2ludGVyIGFuZA0KKyAgICBpcyBhbGlnbmVkIG9uIGEgMzIgYml0IGJvdW5kYXJ5Lg0KKyAqLw0KK3R5cGVkZWYgdm9pZCogVk9fUFRSOw0KKw0KKy8qKiBUaGUgVk9fSEFORExFIHR5cGUgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCB0byBwYXNzIHBvaW50ZXJzIGJldHdlZW4gdGhlIFZPDQorICAgIGFwcGxpY2F0aW9ucyBhbmQgdGhlIFZPIENvcmUgYW5kIGNvbXBvbmVudHMuICBUaGlzIGlzIGEgMzIgYml0IHBvaW50ZXIgYW5kDQorICAgIGlzIGFsaWduZWQgb24gYSAzMiBiaXQgYm91bmRhcnkuDQorICovDQordHlwZWRlZiB2b2lkKiBWT19IQU5ETEU7DQorDQorLyoqIFRoZSBWT19TVFJJTkcgdHlwZSBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIHRvIHBhc3MgIkMiIHR5cGUgc3RyaW5ncyBiZXR3ZWVuDQorICAgIHRoZSBhcHBsaWNhdGlvbiBhbmQgdGhlIGNvcmUgYW5kIGNvbXBvbmVudC4gIFRoZSBWT19TVFJJTkcgdHlwZSBpcyBhIDMyDQorICAgIGJpdCBwb2ludGVyIHRvIGEgemVybyB0ZXJtaW5hdGVkIHN0cmluZy4gIFRoZSAgcG9pbnRlciBpcyB3b3JkIGFsaWduZWQgYW5kDQorICAgIHRoZSBzdHJpbmcgaXMgYnl0ZSBhbGlnbmVkLg0KKyAqLw0KK3R5cGVkZWYgY2hhciogVk9fUENIQVI7DQorDQorLyoqIFRoZSBWT19QQllURSB0eXBlIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgdG8gcGFzcyBhcnJheXMgb2YgYnl0ZXMgc3VjaCBhcw0KKyAgICBidWZmZXJzIGJldHdlZW4gdGhlIGFwcGxpY2F0aW9uIGFuZCB0aGUgY29tcG9uZW50IGFuZCBjb3JlLiAgVGhlIFZPX1BCWVRFDQorICAgIHR5cGUgaXMgYSAzMiBiaXQgcG9pbnRlciB0byBhIHplcm8gdGVybWluYXRlZCBzdHJpbmcuICBUaGUgIHBvaW50ZXIgaXMgd29yZA0KKyAgICBhbGlnbmVkIGFuZCB0aGUgc3RyaW5nIGlzIGJ5dGUgYWxpZ25lZC4NCisgKi8NCit0eXBlZGVmIHVuc2lnbmVkIGNoYXIqIFZPX1BCWVRFOw0KKw0KKy8qKiBUaGUgVk9fUFRDSEFSIHR5cGUgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCB0byBwYXNzIGFycmF5cyBvZiB3Y2hhciBzdWNoIGFzDQorICAgIHVuaWNvZGUgY2hhciBiZXR3ZWVuIHRoZSBhcHBsaWNhdGlvbiBhbmQgdGhlIGNvbXBvbmVudCBhbmQgY29yZS4gIFRoZSBWT19QVENIQVINCisgICAgdHlwZSBpcyBhIDMyIGJpdCBwb2ludGVyIHRvIGEgemVybyB0ZXJtaW5hdGVkIHN0cmluZy4gIFRoZSAgcG9pbnRlciBpcyB3b3JkDQorICAgIGFsaWduZWQgYW5kIHRoZSBzdHJpbmcgaXMgYnl0ZSBhbGlnbmVkLg0KKyAqLw0KKy8qDQorI2lmICFkZWZpbmVkIExJTlVYDQordHlwZWRlZiB1bnNpZ25lZCBzaG9ydCogVk9fUFRDSEFSOw0KK3R5cGVkZWYgdW5zaWduZWQgc2hvcnQqIFZPX1RDSEFSOw0KKyNlbHNlDQordHlwZWRlZiBjaGFyKiBWT19QVENIQVI7DQordHlwZWRlZiBjaGFyIFZPX1RDSEFSOw0KKyNlbmRpZg0KKyovDQorDQorI2lmbmRlZiBOVUxMDQorI2lmZGVmIF9fY3BsdXNwbHVzDQorI2RlZmluZSBOVUxMICAgIDANCisjZWxzZQ0KKyNkZWZpbmUgTlVMTCAgICAoKHZvaWQgKikwKQ0KKyNlbmRpZg0KKyNlbmRpZg0KKw0KKy8qKg0KKyAqIElucHV0IHN0cmVhbSBmb3JtYXQsIEZyYW1lIG9yIFN0cmVhbS4uDQorICovDQordHlwZWRlZiBlbnVtIHsNCisgICAgVk9fSU5QVVRfRlJBTUUJPSAxLAkvKiE8IElucHV0IGNvbnRhaW5zIGNvbXBsZXRlbHkgZnJhbWUocykgZGF0YS4gKi8NCisgICAgVk9fSU5QVVRfU1RSRUFNLAkJLyohPCBJbnB1dCBpcyBzdHJlYW0gZGF0YS4gKi8NCisJVk9fSU5QVVRfU1RSRUFNX01BWCA9IFZPX01BWF9FTlVNX1ZBTFVFDQorfSBWT19JTlBVVF9UWVBFOw0KKw0KKw0KKy8qKg0KKyAqIEdlbmVyYWwgZGF0YSBidWZmZXIsIHVzZWQgYXMgaW5wdXQgb3Igb3V0cHV0Lg0KKyAqLw0KK3R5cGVkZWYgc3RydWN0IHsNCisJVk9fUEJZVEUJQnVmZmVyOwkJLyohPCBCdWZmZXIgcG9pbnRlciAqLw0KKwlWT19VMzIJCUxlbmd0aDsJCS8qITwgQnVmZmVyIHNpemUgaW4gYnl0ZSAqLw0KKwlWT19TNjQJCVRpbWU7CQkvKiE8IFRoZSB0aW1lIG9mIHRoZSBidWZmZXIgKi8NCit9IFZPX0NPREVDQlVGRkVSOw0KKw0KKw0KKy8qKg0KKyAqIFRoZSBpbml0IG1lbWRhdGEgZmxhZy4NCisgKi8NCit0eXBlZGVmIGVudW17DQorCVZPX0lNRl9VU0VSTUVNT1BFUkFUT1IJCT0wLAkvKiE8IG1lbURhdGEgaXMgIHRoZSBwb2ludGVyIG9mIG1lbW9wZXJhdG9yIGZ1bmN0aW9uKi8NCisJVk9fSU1GX1BSRUFMTE9DQVRFREJVRkZFUgk9MSwJLyohPCBtZW1EYXRhIGlzICBwcmVhbGxvY2F0ZWQgbWVtb3J5Ki8NCisJVk9fSU1GX01BWCA9IFZPX01BWF9FTlVNX1ZBTFVFDQorfVZPX0lOSVRfTUVNX0ZsQUc7DQorDQorDQorLyoqDQorICogVGhlIGluaXQgbWVtb3J5IHN0cnVjdHVyZS4uDQorICovDQordHlwZWRlZiBzdHJ1Y3R7DQorCVZPX0lOSVRfTUVNX0ZsQUcJCQltZW1mbGFnOwkvKiE8bWVtb3J5IGZsYWcgICovDQorCVZPX1BUUgkJCQkJCW1lbURhdGE7CS8qITxhIHBvaW50ZXIgdG8gVk9fTUVNX09QRVJBVE9SIG9yIGEgcHJlYWxsb2NhdGVkIGJ1ZmZlciAgKi8NCisJVk9fVTMyCQkJCQkJcmVzZXJ2ZWQxOwkvKiE8cmVzZXJ2ZWQgICovDQorCVZPX1UzMgkJCQkJCXJlc2VydmVkMjsJLyohPHJlc2VydmVkICovDQorfVZPX0NPREVDX0lOSVRfVVNFUkRBVEE7DQorDQorDQorI2lmZGVmIF9fY3BsdXNwbHVzDQorfQ0KKyNlbmRpZiAvKiBfX2NwbHVzcGx1cyAqLw0KKw0KKyNlbmRpZiAvLyBfX3ZvVHlwZV9IX18NCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvbXAzZGVjL01QM0RlY29kZXIuY3BwIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29kZWNzL21wM2RlYy9NUDNEZWNvZGVyLmNwcAppbmRleCBlZmNiNDc2Li5mNDBiZDExIDEwMDY0NAotLS0gYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3MvbXAzZGVjL01QM0RlY29kZXIuY3BwCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9tcDNkZWMvTVAzRGVjb2Rlci5jcHAKQEAgLTI3LDEzICsyNywzNSBAQAogCiBNUDNEZWNvZGVyOjpNUDNEZWNvZGVyKGNvbnN0IHNwPE1lZGlhU291cmNlPiAmc291cmNlKQogICAgIDogbVNvdXJjZShzb3VyY2UpLAorICAgICAgbU51bUNoYW5uZWxzKDApLAogICAgICAgbVN0YXJ0ZWQoZmFsc2UpLAogICAgICAgbUJ1ZmZlckdyb3VwKE5VTEwpLAogICAgICAgbUNvbmZpZyhuZXcgdFBWTVAzRGVjb2RlckV4dGVybmFsKSwKICAgICAgIG1EZWNvZGVyQnVmKE5VTEwpLAogICAgICAgbUFuY2hvclRpbWVVcygwKSwKLSAgICAgIG1OdW1TYW1wbGVzT3V0cHV0KDApLAorICAgICAgbU51bUZyYW1lc091dHB1dCgwKSwKICAgICAgIG1JbnB1dEJ1ZmZlcihOVUxMKSB7CisgICAgaW5pdCgpOworfQorCit2b2lkIE1QM0RlY29kZXI6OmluaXQoKSB7CisgICAgc3A8TWV0YURhdGE+IHNyY0Zvcm1hdCA9IG1Tb3VyY2UtPmdldEZvcm1hdCgpOworCisgICAgaW50MzJfdCBzYW1wbGVSYXRlOworICAgIENIRUNLKHNyY0Zvcm1hdC0+ZmluZEludDMyKGtLZXlDaGFubmVsQ291bnQsICZtTnVtQ2hhbm5lbHMpKTsKKyAgICBDSEVDSyhzcmNGb3JtYXQtPmZpbmRJbnQzMihrS2V5U2FtcGxlUmF0ZSwgJnNhbXBsZVJhdGUpKTsKKworICAgIG1NZXRhID0gbmV3IE1ldGFEYXRhOworICAgIG1NZXRhLT5zZXRDU3RyaW5nKGtLZXlNSU1FVHlwZSwgTUVESUFfTUlNRVRZUEVfQVVESU9fUkFXKTsKKyAgICBtTWV0YS0+c2V0SW50MzIoa0tleUNoYW5uZWxDb3VudCwgbU51bUNoYW5uZWxzKTsKKyAgICBtTWV0YS0+c2V0SW50MzIoa0tleVNhbXBsZVJhdGUsIHNhbXBsZVJhdGUpOworCisgICAgaW50NjRfdCBkdXJhdGlvblVzOworICAgIGlmIChzcmNGb3JtYXQtPmZpbmRJbnQ2NChrS2V5RHVyYXRpb24sICZkdXJhdGlvblVzKSkgeworICAgICAgICBtTWV0YS0+c2V0SW50NjQoa0tleUR1cmF0aW9uLCBkdXJhdGlvblVzKTsKKyAgICB9CisKKyAgICBtTWV0YS0+c2V0Q1N0cmluZyhrS2V5RGVjb2RlckNvbXBvbmVudCwgIk1QM0RlY29kZXIiKTsKIH0KIAogTVAzRGVjb2Rlcjo6fk1QM0RlY29kZXIoKSB7CkBAIC02Miw3ICs4NCw3IEBACiAgICAgbVNvdXJjZS0+c3RhcnQoKTsKIAogICAgIG1BbmNob3JUaW1lVXMgPSAwOwotICAgIG1OdW1TYW1wbGVzT3V0cHV0ID0gMDsKKyAgICBtTnVtRnJhbWVzT3V0cHV0ID0gMDsKICAgICBtU3RhcnRlZCA9IHRydWU7CiAKICAgICByZXR1cm4gT0s7CkBAIC05MCwyNiArMTEyLDcgQEAKIH0KIAogc3A8TWV0YURhdGE+IE1QM0RlY29kZXI6OmdldEZvcm1hdCgpIHsKLSAgICBzcDxNZXRhRGF0YT4gc3JjRm9ybWF0ID0gbVNvdXJjZS0+Z2V0Rm9ybWF0KCk7Ci0KLSAgICBpbnQzMl90IG51bUNoYW5uZWxzOwotICAgIGludDMyX3Qgc2FtcGxlUmF0ZTsKLSAgICBDSEVDSyhzcmNGb3JtYXQtPmZpbmRJbnQzMihrS2V5Q2hhbm5lbENvdW50LCAmbnVtQ2hhbm5lbHMpKTsKLSAgICBDSEVDSyhzcmNGb3JtYXQtPmZpbmRJbnQzMihrS2V5U2FtcGxlUmF0ZSwgJnNhbXBsZVJhdGUpKTsKLQotICAgIHNwPE1ldGFEYXRhPiBtZXRhID0gbmV3IE1ldGFEYXRhOwotICAgIG1ldGEtPnNldENTdHJpbmcoa0tleU1JTUVUeXBlLCBNRURJQV9NSU1FVFlQRV9BVURJT19SQVcpOwotICAgIG1ldGEtPnNldEludDMyKGtLZXlDaGFubmVsQ291bnQsIG51bUNoYW5uZWxzKTsKLSAgICBtZXRhLT5zZXRJbnQzMihrS2V5U2FtcGxlUmF0ZSwgc2FtcGxlUmF0ZSk7Ci0KLSAgICBpbnQ2NF90IGR1cmF0aW9uVXM7Ci0gICAgaWYgKHNyY0Zvcm1hdC0+ZmluZEludDY0KGtLZXlEdXJhdGlvbiwgJmR1cmF0aW9uVXMpKSB7Ci0gICAgICAgIG1ldGEtPnNldEludDY0KGtLZXlEdXJhdGlvbiwgZHVyYXRpb25Vcyk7Ci0gICAgfQotCi0gICAgbWV0YS0+c2V0Q1N0cmluZyhrS2V5RGVjb2RlckNvbXBvbmVudCwgIk1QM0RlY29kZXIiKTsKLQotICAgIHJldHVybiBtZXRhOworICAgIHJldHVybiBtTWV0YTsKIH0KIAogc3RhdHVzX3QgTVAzRGVjb2Rlcjo6cmVhZCgKQEAgLTEyMiw3ICsxMjUsNyBAQAogICAgIGlmIChvcHRpb25zICYmIG9wdGlvbnMtPmdldFNlZWtUbygmc2Vla1RpbWVVcykpIHsKICAgICAgICAgQ0hFQ0soc2Vla1RpbWVVcyA+PSAwKTsKIAotICAgICAgICBtTnVtU2FtcGxlc091dHB1dCA9IDA7CisgICAgICAgIG1OdW1GcmFtZXNPdXRwdXQgPSAwOwogCiAgICAgICAgIGlmIChtSW5wdXRCdWZmZXIpIHsKICAgICAgICAgICAgIG1JbnB1dEJ1ZmZlci0+cmVsZWFzZSgpOwpAQCAtMTQyLDcgKzE0NSw3IEBACiAgICAgICAgIGludDY0X3QgdGltZVVzOwogICAgICAgICBpZiAobUlucHV0QnVmZmVyLT5tZXRhX2RhdGEoKS0+ZmluZEludDY0KGtLZXlUaW1lLCAmdGltZVVzKSkgewogICAgICAgICAgICAgbUFuY2hvclRpbWVVcyA9IHRpbWVVczsKLSAgICAgICAgICAgIG1OdW1TYW1wbGVzT3V0cHV0ID0gMDsKKyAgICAgICAgICAgIG1OdW1GcmFtZXNPdXRwdXQgPSAwOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gV2UgbXVzdCBoYXZlIGEgbmV3IHRpbWVzdGFtcCBhZnRlciBzZWVraW5nLgogICAgICAgICAgICAgQ0hFQ0soc2Vla1RpbWVVcyA8IDApOwpAQCAtMTc5LDcgKzE4Miw3IEBACiAKICAgICAgICAgLy8gVGhpcyBpcyByZWNvdmVyYWJsZSwganVzdCBpZ25vcmUgdGhlIGN1cnJlbnQgZnJhbWUgYW5kCiAgICAgICAgIC8vIHBsYXkgc2lsZW5jZSBpbnN0ZWFkLgotICAgICAgICBtZW1zZXQoYnVmZmVyLT5kYXRhKCksIDAsIG1Db25maWctPm91dHB1dEZyYW1lU2l6ZSk7CisgICAgICAgIG1lbXNldChidWZmZXItPmRhdGEoKSwgMCwgbUNvbmZpZy0+b3V0cHV0RnJhbWVTaXplICogc2l6ZW9mKGludDE2X3QpKTsKICAgICAgICAgbUNvbmZpZy0+aW5wdXRCdWZmZXJVc2VkTGVuZ3RoID0gbUlucHV0QnVmZmVyLT5yYW5nZV9sZW5ndGgoKTsKICAgICB9CiAKQEAgLTE5OCw5ICsyMDEsOSBAQAogICAgIGJ1ZmZlci0+bWV0YV9kYXRhKCktPnNldEludDY0KAogICAgICAgICAgICAga0tleVRpbWUsCiAgICAgICAgICAgICBtQW5jaG9yVGltZVVzCi0gICAgICAgICAgICAgICAgKyAobU51bVNhbXBsZXNPdXRwdXQgKiAxMDAwMDAwKSAvIG1Db25maWctPnNhbXBsaW5nUmF0ZSk7CisgICAgICAgICAgICAgICAgKyAobU51bUZyYW1lc091dHB1dCAqIDEwMDAwMDApIC8gbUNvbmZpZy0+c2FtcGxpbmdSYXRlKTsKIAotICAgIG1OdW1TYW1wbGVzT3V0cHV0ICs9IG1Db25maWctPm91dHB1dEZyYW1lU2l6ZSAvIHNpemVvZihpbnQxNl90KTsKKyAgICBtTnVtRnJhbWVzT3V0cHV0ICs9IG1Db25maWctPm91dHB1dEZyYW1lU2l6ZSAvIG1OdW1DaGFubmVsczsKIAogICAgICpvdXQgPSBidWZmZXI7CiAKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9vbjIvQW5kcm9pZC5tayBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9vbjIvQW5kcm9pZC5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTQzMTIwNQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9vbjIvQW5kcm9pZC5tawpAQCAtMCwwICsxLDQgQEAKK0xPQ0FMX1BBVEg6PSAkKGNhbGwgbXktZGlyKQoraW5jbHVkZSAkKENMRUFSX1ZBUlMpCisKK2luY2x1ZGUgJChjYWxsIGFsbC1tYWtlZmlsZXMtdW5kZXIsJChMT0NBTF9QQVRIKSkKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9vbjIvZGVjL0FuZHJvaWQubWsgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3Mvb24yL2RlYy9BbmRyb2lkLm1rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzZGZiNzUKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3Mvb24yL2RlYy9BbmRyb2lkLm1rCkBAIC0wLDAgKzEsMTYgQEAKK0xPQ0FMX1BBVEggOj0gJChjYWxsIG15LWRpcikKK2luY2x1ZGUgJChDTEVBUl9WQVJTKQorCitMT0NBTF9TUkNfRklMRVMgOj0gXAorICAgICAgICBWUFhEZWNvZGVyLmNwcAorCitMT0NBTF9NT0RVTEUgOj0gbGlic3RhZ2VmcmlnaHRfdnB4ZGVjCisKK0xPQ0FMX0NfSU5DTFVERVMgOj0gXAorICAgICAgICAkKFRPUCkvZnJhbWV3b3Jrcy9iYXNlL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2luY2x1ZGUgXAorICAgICAgICAkKFRPUCkvZXh0ZXJuYWwvb3BlbmNvcmUvZXh0ZXJuX2xpYnNfdjIva2hyb25vcy9vcGVubWF4L2luY2x1ZGUgXAorICAgICAgICAkKFRPUCkvZXh0ZXJuYWwvbGlidnB4IFwKKyAgICAgICAgJChUT1ApL2V4dGVybmFsL2xpYnZweC92cHhfY29kZWMgXAorICAgICAgICAkKFRPUCkvZXh0ZXJuYWwvbGlidnB4L3ZweF9wb3J0cworCitpbmNsdWRlICQoQlVJTERfU1RBVElDX0xJQlJBUlkpCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3Mvb24yL2RlYy9WUFhEZWNvZGVyLmNwcCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvZGVjcy9vbjIvZGVjL1ZQWERlY29kZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhZDg5NTYKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2RlY3Mvb24yL2RlYy9WUFhEZWNvZGVyLmNwcApAQCAtMCwwICsxLDIzMCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8vI2RlZmluZSBMT0dfTkRFQlVHIDAKKyNkZWZpbmUgTE9HX1RBRyAiVlBYRGVjb2RlciIKKyNpbmNsdWRlIDx1dGlscy9Mb2cuaD4KKworI2luY2x1ZGUgIlZQWERlY29kZXIuaCIKKworI2luY2x1ZGUgPE9NWF9Db21wb25lbnQuaD4KKworI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhQnVmZmVyR3JvdXAuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYURlYnVnLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFEZWZzLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFFcnJvcnMuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZXRhRGF0YS5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L1V0aWxzLmg+CisKKyNpbmNsdWRlICJ2cHhfY29kZWMvdnB4X2RlY29kZXIuaCIKKyNpbmNsdWRlICJ2cDgvdnA4ZHguaCIKKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitWUFhEZWNvZGVyOjpWUFhEZWNvZGVyKGNvbnN0IHNwPE1lZGlhU291cmNlPiAmc291cmNlKQorICAgIDogbVNvdXJjZShzb3VyY2UpLAorICAgICAgbVN0YXJ0ZWQoZmFsc2UpLAorICAgICAgbUJ1ZmZlclNpemUoMCksCisgICAgICBtQ3R4KE5VTEwpLAorICAgICAgbUJ1ZmZlckdyb3VwKE5VTEwpIHsKKyAgICBzcDxNZXRhRGF0YT4gaW5wdXRGb3JtYXQgPSBzb3VyY2UtPmdldEZvcm1hdCgpOworICAgIGNvbnN0IGNoYXIgKm1pbWU7CisgICAgQ0hFQ0soaW5wdXRGb3JtYXQtPmZpbmRDU3RyaW5nKGtLZXlNSU1FVHlwZSwgJm1pbWUpKTsKKyAgICBDSEVDSyghc3RyY2FzZWNtcChtaW1lLCBNRURJQV9NSU1FVFlQRV9WSURFT19WUFgpKTsKKworICAgIENIRUNLKGlucHV0Rm9ybWF0LT5maW5kSW50MzIoa0tleVdpZHRoLCAmbVdpZHRoKSk7CisgICAgQ0hFQ0soaW5wdXRGb3JtYXQtPmZpbmRJbnQzMihrS2V5SGVpZ2h0LCAmbUhlaWdodCkpOworCisgICAgbUJ1ZmZlclNpemUgPSAobVdpZHRoICogbUhlaWdodCAqIDMpIC8gMjsKKworICAgIG1Gb3JtYXQgPSBuZXcgTWV0YURhdGE7CisgICAgbUZvcm1hdC0+c2V0Q1N0cmluZyhrS2V5TUlNRVR5cGUsIE1FRElBX01JTUVUWVBFX1ZJREVPX1JBVyk7CisgICAgbUZvcm1hdC0+c2V0SW50MzIoa0tleVdpZHRoLCBtV2lkdGgpOworICAgIG1Gb3JtYXQtPnNldEludDMyKGtLZXlIZWlnaHQsIG1IZWlnaHQpOworICAgIG1Gb3JtYXQtPnNldEludDMyKGtLZXlDb2xvckZvcm1hdCwgT01YX0NPTE9SX0Zvcm1hdFlVVjQyMFBsYW5hcik7CisgICAgbUZvcm1hdC0+c2V0Q1N0cmluZyhrS2V5RGVjb2RlckNvbXBvbmVudCwgIlZQWERlY29kZXIiKTsKKworICAgIGludDY0X3QgZHVyYXRpb25VczsKKyAgICBpZiAoaW5wdXRGb3JtYXQtPmZpbmRJbnQ2NChrS2V5RHVyYXRpb24sICZkdXJhdGlvblVzKSkgeworICAgICAgICBtRm9ybWF0LT5zZXRJbnQ2NChrS2V5RHVyYXRpb24sIGR1cmF0aW9uVXMpOworICAgIH0KK30KKworVlBYRGVjb2Rlcjo6flZQWERlY29kZXIoKSB7CisgICAgaWYgKG1TdGFydGVkKSB7CisgICAgICAgIHN0b3AoKTsKKyAgICB9Cit9CisKK3N0YXR1c190IFZQWERlY29kZXI6OnN0YXJ0KE1ldGFEYXRhICopIHsKKyAgICBpZiAobVN0YXJ0ZWQpIHsKKyAgICAgICAgcmV0dXJuIFVOS05PV05fRVJST1I7CisgICAgfQorCisgICAgc3RhdHVzX3QgZXJyID0gbVNvdXJjZS0+c3RhcnQoKTsKKworICAgIGlmIChlcnIgIT0gT0spIHsKKyAgICAgICAgcmV0dXJuIGVycjsKKyAgICB9CisKKyAgICBtQ3R4ID0gbmV3IHZweF9jb2RlY19jdHhfdDsKKyAgICBpZiAodnB4X2NvZGVjX2RlY19pbml0KAorICAgICAgICAgICAgICAgICh2cHhfY29kZWNfY3R4X3QgKiltQ3R4LCAmdnB4X2NvZGVjX3ZwOF9keF9hbGdvLCBOVUxMLCAwKSkgeworICAgICAgICBMT0dFKCJvbjIgZGVjb2RlciBmYWlsZWQgdG8gaW5pdGlhbGl6ZS4iKTsKKworICAgICAgICBtU291cmNlLT5zdG9wKCk7CisKKyAgICAgICAgcmV0dXJuIFVOS05PV05fRVJST1I7CisgICAgfQorCisgICAgbUJ1ZmZlckdyb3VwID0gbmV3IE1lZGlhQnVmZmVyR3JvdXA7CisgICAgbUJ1ZmZlckdyb3VwLT5hZGRfYnVmZmVyKG5ldyBNZWRpYUJ1ZmZlcihtQnVmZmVyU2l6ZSkpOworICAgIG1CdWZmZXJHcm91cC0+YWRkX2J1ZmZlcihuZXcgTWVkaWFCdWZmZXIobUJ1ZmZlclNpemUpKTsKKworICAgIG1TdGFydGVkID0gdHJ1ZTsKKworICAgIHJldHVybiBPSzsKK30KKworc3RhdHVzX3QgVlBYRGVjb2Rlcjo6c3RvcCgpIHsKKyAgICBpZiAoIW1TdGFydGVkKSB7CisgICAgICAgIHJldHVybiBVTktOT1dOX0VSUk9SOworICAgIH0KKworICAgIGRlbGV0ZSBtQnVmZmVyR3JvdXA7CisgICAgbUJ1ZmZlckdyb3VwID0gTlVMTDsKKworICAgIHZweF9jb2RlY19kZXN0cm95KCh2cHhfY29kZWNfY3R4X3QgKiltQ3R4KTsKKyAgICBkZWxldGUgKHZweF9jb2RlY19jdHhfdCAqKW1DdHg7CisgICAgbUN0eCA9IE5VTEw7CisKKyAgICBtU291cmNlLT5zdG9wKCk7CisKKyAgICBtU3RhcnRlZCA9IGZhbHNlOworCisgICAgcmV0dXJuIE9LOworfQorCitzcDxNZXRhRGF0YT4gVlBYRGVjb2Rlcjo6Z2V0Rm9ybWF0KCkgeworICAgIHJldHVybiBtRm9ybWF0OworfQorCitzdGF0dXNfdCBWUFhEZWNvZGVyOjpyZWFkKAorICAgICAgICBNZWRpYUJ1ZmZlciAqKm91dCwgY29uc3QgUmVhZE9wdGlvbnMgKm9wdGlvbnMpIHsKKyAgICAqb3V0ID0gTlVMTDsKKworICAgIE1lZGlhQnVmZmVyICppbnB1dDsKKyAgICBzdGF0dXNfdCBlcnIgPSBtU291cmNlLT5yZWFkKCZpbnB1dCwgb3B0aW9ucyk7CisKKyAgICBpZiAoZXJyICE9IE9LKSB7CisgICAgICAgIHJldHVybiBlcnI7CisgICAgfQorCisgICAgTE9HVigicmVhZCAlZCBieXRlcyBmcm9tIHNvdXJjZVxuIiwgaW5wdXQtPnJhbmdlX2xlbmd0aCgpKTsKKworICAgIGlmICh2cHhfY29kZWNfZGVjb2RlKAorICAgICAgICAgICAgICAgICh2cHhfY29kZWNfY3R4X3QgKiltQ3R4LAorICAgICAgICAgICAgICAgICh1aW50OF90ICopaW5wdXQtPmRhdGEoKSArIGlucHV0LT5yYW5nZV9vZmZzZXQoKSwKKyAgICAgICAgICAgICAgICBpbnB1dC0+cmFuZ2VfbGVuZ3RoKCksCisgICAgICAgICAgICAgICAgTlVMTCwKKyAgICAgICAgICAgICAgICAwKSkgeworICAgICAgICBMT0dFKCJvbjIgZGVjb2RlciBmYWlsZWQgdG8gZGVjb2RlIGZyYW1lLiIpOworICAgICAgICBpbnB1dC0+cmVsZWFzZSgpOworICAgICAgICBpbnB1dCA9IE5VTEw7CisKKyAgICAgICAgcmV0dXJuIFVOS05PV05fRVJST1I7CisgICAgfQorCisgICAgTE9HVigic3VjY2Vzc2Z1bGx5IGRlY29kZWQgMSBvciBtb3JlIGZyYW1lcy4iKTsKKworICAgIGludDY0X3QgdGltZVVzOworICAgIENIRUNLKGlucHV0LT5tZXRhX2RhdGEoKS0+ZmluZEludDY0KGtLZXlUaW1lLCAmdGltZVVzKSk7CisKKyAgICBpbnB1dC0+cmVsZWFzZSgpOworICAgIGlucHV0ID0gTlVMTDsKKworICAgIHZweF9jb2RlY19pdGVyX3QgaXRlciA9IE5VTEw7CisgICAgdnB4X2ltYWdlX3QgKmltZyA9IHZweF9jb2RlY19nZXRfZnJhbWUoKHZweF9jb2RlY19jdHhfdCAqKW1DdHgsICZpdGVyKTsKKworICAgIGlmIChpbWcgPT0gTlVMTCkgeworICAgICAgICBMT0dJKCJvbjIgZGVjb2RlciBkaWQgbm90IHJldHVybiBhIGZyYW1lLiIpOworCisgICAgICAgICpvdXQgPSBuZXcgTWVkaWFCdWZmZXIoMCk7CisgICAgICAgIHJldHVybiBPSzsKKyAgICB9CisKKyAgICBDSEVDS19FUShpbWctPmZtdCwgSU1HX0ZNVF9JNDIwKTsKKworICAgIGludDMyX3Qgd2lkdGggPSBpbWctPmRfdzsKKyAgICBpbnQzMl90IGhlaWdodCA9IGltZy0+ZF9oOworCisgICAgaWYgKHdpZHRoICE9IG1XaWR0aCB8fCBoZWlnaHQgIT0gbUhlaWdodCkgeworICAgICAgICBMT0dJKCJJbWFnZSBkaW1lbnNpb25zIGNoYW5nZWQsIHdpZHRoID0gJWQsIGhlaWdodCA9ICVkIiwKKyAgICAgICAgICAgICB3aWR0aCwgaGVpZ2h0KTsKKworICAgICAgICBtV2lkdGggPSB3aWR0aDsKKyAgICAgICAgbUhlaWdodCA9IGhlaWdodDsKKyAgICAgICAgbUZvcm1hdC0+c2V0SW50MzIoa0tleVdpZHRoLCB3aWR0aCk7CisgICAgICAgIG1Gb3JtYXQtPnNldEludDMyKGtLZXlIZWlnaHQsIGhlaWdodCk7CisKKyAgICAgICAgbUJ1ZmZlclNpemUgPSAobVdpZHRoICogbUhlaWdodCAqIDMpIC8gMjsKKyAgICAgICAgZGVsZXRlIG1CdWZmZXJHcm91cDsKKyAgICAgICAgbUJ1ZmZlckdyb3VwID0gbmV3IE1lZGlhQnVmZmVyR3JvdXA7CisgICAgICAgIG1CdWZmZXJHcm91cC0+YWRkX2J1ZmZlcihuZXcgTWVkaWFCdWZmZXIobUJ1ZmZlclNpemUpKTsKKyAgICAgICAgbUJ1ZmZlckdyb3VwLT5hZGRfYnVmZmVyKG5ldyBNZWRpYUJ1ZmZlcihtQnVmZmVyU2l6ZSkpOworCisgICAgICAgIHJldHVybiBJTkZPX0ZPUk1BVF9DSEFOR0VEOworICAgIH0KKworICAgIE1lZGlhQnVmZmVyICpvdXRwdXQ7CisgICAgQ0hFQ0tfRVEobUJ1ZmZlckdyb3VwLT5hY3F1aXJlX2J1ZmZlcigmb3V0cHV0KSwgT0spOworCisgICAgY29uc3QgdWludDhfdCAqc3JjTGluZSA9IChjb25zdCB1aW50OF90ICopaW1nLT5wbGFuZXNbUExBTkVfWV07CisgICAgdWludDhfdCAqZHN0ID0gKHVpbnQ4X3QgKilvdXRwdXQtPmRhdGEoKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGltZy0+ZF9oOyArK2kpIHsKKyAgICAgICAgbWVtY3B5KGRzdCwgc3JjTGluZSwgaW1nLT5kX3cpOworCisgICAgICAgIHNyY0xpbmUgKz0gaW1nLT5zdHJpZGVbUExBTkVfWV07CisgICAgICAgIGRzdCArPSBpbWctPmRfdzsKKyAgICB9CisKKyAgICBzcmNMaW5lID0gKGNvbnN0IHVpbnQ4X3QgKilpbWctPnBsYW5lc1tQTEFORV9VXTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGltZy0+ZF9oIC8gMjsgKytpKSB7CisgICAgICAgIG1lbWNweShkc3QsIHNyY0xpbmUsIGltZy0+ZF93IC8gMik7CisKKyAgICAgICAgc3JjTGluZSArPSBpbWctPnN0cmlkZVtQTEFORV9VXTsKKyAgICAgICAgZHN0ICs9IGltZy0+ZF93IC8gMjsKKyAgICB9CisKKyAgICBzcmNMaW5lID0gKGNvbnN0IHVpbnQ4X3QgKilpbWctPnBsYW5lc1tQTEFORV9WXTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGltZy0+ZF9oIC8gMjsgKytpKSB7CisgICAgICAgIG1lbWNweShkc3QsIHNyY0xpbmUsIGltZy0+ZF93IC8gMik7CisKKyAgICAgICAgc3JjTGluZSArPSBpbWctPnN0cmlkZVtQTEFORV9WXTsKKyAgICAgICAgZHN0ICs9IGltZy0+ZF93IC8gMjsKKyAgICB9CisKKyAgICBvdXRwdXQtPnNldF9yYW5nZSgwLCAod2lkdGggKiBoZWlnaHQgKiAzKSAvIDIpOworCisgICAgb3V0cHV0LT5tZXRhX2RhdGEoKS0+c2V0SW50NjQoa0tleVRpbWUsIHRpbWVVcyk7CisKKyAgICAqb3V0ID0gb3V0cHV0OworCisgICAgcmV0dXJuIE9LOworfQorCit9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2xvcmNvbnZlcnNpb24vQ29sb3JDb252ZXJ0ZXIuY3BwIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvY29sb3Jjb252ZXJzaW9uL0NvbG9yQ29udmVydGVyLmNwcAppbmRleCBlNzQ3ODJmLi41YjE2OTk3IDEwMDY0NAotLS0gYS9tZWRpYS9saWJzdGFnZWZyaWdodC9jb2xvcmNvbnZlcnNpb24vQ29sb3JDb252ZXJ0ZXIuY3BwCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2NvbG9yY29udmVyc2lvbi9Db2xvckNvbnZlcnRlci5jcHAKQEAgLTQyLDYgKzQyLDcgQEAKICAgICAgICAgY2FzZSBPTVhfQ09MT1JfRm9ybWF0WVVWNDIwUGxhbmFyOgogICAgICAgICBjYXNlIE9NWF9DT0xPUl9Gb3JtYXRDYllDclk6CiAgICAgICAgIGNhc2UgT01YX1FDT01fQ09MT1JfRm9ybWF0WVZVNDIwU2VtaVBsYW5hcjoKKyAgICAgICAgY2FzZSBPTVhfQ09MT1JfRm9ybWF0WVVWNDIwU2VtaVBsYW5hcjoKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgICAgIGRlZmF1bHQ6CkBAIC03MSw2ICs3MiwxMSBAQAogICAgICAgICAgICAgICAgICAgICB3aWR0aCwgaGVpZ2h0LCBzcmNCaXRzLCBzcmNTa2lwLCBkc3RCaXRzLCBkc3RTa2lwKTsKICAgICAgICAgICAgIGJyZWFrOwogCisgICAgICAgIGNhc2UgT01YX0NPTE9SX0Zvcm1hdFlVVjQyMFNlbWlQbGFuYXI6CisgICAgICAgICAgICBjb252ZXJ0WVVWNDIwU2VtaVBsYW5hcigKKyAgICAgICAgICAgICAgICAgICAgd2lkdGgsIGhlaWdodCwgc3JjQml0cywgc3JjU2tpcCwgZHN0Qml0cywgZHN0U2tpcCk7CisgICAgICAgICAgICBicmVhazsKKwogICAgICAgICBkZWZhdWx0OgogICAgICAgICB7CiAgICAgICAgICAgICBDSEVDSyghIlNob3VsZCBub3QgYmUgaGVyZS4gVW5rbm93biBjb2xvciBjb252ZXJzaW9uLiIpOwpAQCAtMjc5LDYgKzI4NSw2OCBAQAogICAgIH0KIH0KIAordm9pZCBDb2xvckNvbnZlcnRlcjo6Y29udmVydFlVVjQyMFNlbWlQbGFuYXIoCisgICAgICAgIHNpemVfdCB3aWR0aCwgc2l6ZV90IGhlaWdodCwKKyAgICAgICAgY29uc3Qgdm9pZCAqc3JjQml0cywgc2l6ZV90IHNyY1NraXAsCisgICAgICAgIHZvaWQgKmRzdEJpdHMsIHNpemVfdCBkc3RTa2lwKSB7CisgICAgQ0hFQ0tfRVEoc3JjU2tpcCwgMCk7ICAvLyBEb2Vzbid0IHJlYWxseSBtYWtlIHNlbnNlIGZvciBZVVYgZm9ybWF0cy4KKyAgICBDSEVDSyhkc3RTa2lwID49IHdpZHRoICogMik7CisgICAgQ0hFQ0soKGRzdFNraXAgJiAzKSA9PSAwKTsKKworICAgIHVpbnQ4X3QgKmtBZGp1c3RlZENsaXAgPSBpbml0Q2xpcCgpOworCisgICAgdWludDMyX3QgKmRzdF9wdHIgPSAodWludDMyX3QgKilkc3RCaXRzOworICAgIGNvbnN0IHVpbnQ4X3QgKnNyY195ID0gKGNvbnN0IHVpbnQ4X3QgKilzcmNCaXRzOworCisgICAgY29uc3QgdWludDhfdCAqc3JjX3UgPQorICAgICAgICAoY29uc3QgdWludDhfdCAqKXNyY195ICsgd2lkdGggKiBoZWlnaHQ7CisKKyAgICBmb3IgKHNpemVfdCB5ID0gMDsgeSA8IGhlaWdodDsgKyt5KSB7CisgICAgICAgIGZvciAoc2l6ZV90IHggPSAwOyB4IDwgd2lkdGg7IHggKz0gMikgeworICAgICAgICAgICAgc2lnbmVkIHkxID0gKHNpZ25lZClzcmNfeVt4XSAtIDE2OworICAgICAgICAgICAgc2lnbmVkIHkyID0gKHNpZ25lZClzcmNfeVt4ICsgMV0gLSAxNjsKKworICAgICAgICAgICAgc2lnbmVkIHYgPSAoc2lnbmVkKXNyY191W3ggJiB+MV0gLSAxMjg7CisgICAgICAgICAgICBzaWduZWQgdSA9IChzaWduZWQpc3JjX3VbKHggJiB+MSkgKyAxXSAtIDEyODsKKworICAgICAgICAgICAgc2lnbmVkIHVfYiA9IHUgKiA1MTc7CisgICAgICAgICAgICBzaWduZWQgdV9nID0gLXUgKiAxMDA7CisgICAgICAgICAgICBzaWduZWQgdl9nID0gLXYgKiAyMDg7CisgICAgICAgICAgICBzaWduZWQgdl9yID0gdiAqIDQwOTsKKworICAgICAgICAgICAgc2lnbmVkIHRtcDEgPSB5MSAqIDI5ODsKKyAgICAgICAgICAgIHNpZ25lZCBiMSA9ICh0bXAxICsgdV9iKSAvIDI1NjsKKyAgICAgICAgICAgIHNpZ25lZCBnMSA9ICh0bXAxICsgdl9nICsgdV9nKSAvIDI1NjsKKyAgICAgICAgICAgIHNpZ25lZCByMSA9ICh0bXAxICsgdl9yKSAvIDI1NjsKKworICAgICAgICAgICAgc2lnbmVkIHRtcDIgPSB5MiAqIDI5ODsKKyAgICAgICAgICAgIHNpZ25lZCBiMiA9ICh0bXAyICsgdV9iKSAvIDI1NjsKKyAgICAgICAgICAgIHNpZ25lZCBnMiA9ICh0bXAyICsgdl9nICsgdV9nKSAvIDI1NjsKKyAgICAgICAgICAgIHNpZ25lZCByMiA9ICh0bXAyICsgdl9yKSAvIDI1NjsKKworICAgICAgICAgICAgdWludDMyX3QgcmdiMSA9CisgICAgICAgICAgICAgICAgKChrQWRqdXN0ZWRDbGlwW2IxXSA+PiAzKSA8PCAxMSkKKyAgICAgICAgICAgICAgICB8ICgoa0FkanVzdGVkQ2xpcFtnMV0gPj4gMikgPDwgNSkKKyAgICAgICAgICAgICAgICB8IChrQWRqdXN0ZWRDbGlwW3IxXSA+PiAzKTsKKworICAgICAgICAgICAgdWludDMyX3QgcmdiMiA9CisgICAgICAgICAgICAgICAgKChrQWRqdXN0ZWRDbGlwW2IyXSA+PiAzKSA8PCAxMSkKKyAgICAgICAgICAgICAgICB8ICgoa0FkanVzdGVkQ2xpcFtnMl0gPj4gMikgPDwgNSkKKyAgICAgICAgICAgICAgICB8IChrQWRqdXN0ZWRDbGlwW3IyXSA+PiAzKTsKKworICAgICAgICAgICAgZHN0X3B0clt4IC8gMl0gPSAocmdiMiA8PCAxNikgfCByZ2IxOworICAgICAgICB9CisKKyAgICAgICAgc3JjX3kgKz0gd2lkdGg7CisKKyAgICAgICAgaWYgKHkgJiAxKSB7CisgICAgICAgICAgICBzcmNfdSArPSB3aWR0aDsKKyAgICAgICAgfQorCisgICAgICAgIGRzdF9wdHIgKz0gZHN0U2tpcCAvIDQ7CisgICAgfQorfQorCiB1aW50OF90ICpDb2xvckNvbnZlcnRlcjo6aW5pdENsaXAoKSB7CiAgICAgc3RhdGljIGNvbnN0IHNpZ25lZCBrQ2xpcE1pbiA9IC0yNzg7CiAgICAgc3RhdGljIGNvbnN0IHNpZ25lZCBrQ2xpcE1heCA9IDUzNTsKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUF0b21pemVyLmNwcCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUF0b21pemVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iN2I5ZTlmOQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUF0b21pemVyLmNwcApAQCAtMCwwICsxLDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorCisjaW5jbHVkZSAiQUF0b21pemVyLmgiCisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworLy8gc3RhdGljCitBQXRvbWl6ZXIgQUF0b21pemVyOjpnQXRvbWl6ZXI7CisKKy8vIHN0YXRpYworY29uc3QgY2hhciAqQUF0b21pemVyOjpBdG9taXplKGNvbnN0IGNoYXIgKm5hbWUpIHsKKyAgICByZXR1cm4gZ0F0b21pemVyLmF0b21pemUobmFtZSk7Cit9CisKK0FBdG9taXplcjo6QUF0b21pemVyKCkgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMTI4OyArK2kpIHsKKyAgICAgICAgbUF0b21zLnB1c2goTGlzdDxBU3RyaW5nPigpKTsKKyAgICB9Cit9CisKK2NvbnN0IGNoYXIgKkFBdG9taXplcjo6YXRvbWl6ZShjb25zdCBjaGFyICpuYW1lKSB7CisgICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKKworICAgIGNvbnN0IHNpemVfdCBuID0gbUF0b21zLnNpemUoKTsKKyAgICBzaXplX3QgaW5kZXggPSBBQXRvbWl6ZXI6Okhhc2gobmFtZSkgJSBuOworICAgIExpc3Q8QVN0cmluZz4gJmVudHJ5ID0gbUF0b21zLmVkaXRJdGVtQXQoaW5kZXgpOworICAgIExpc3Q8QVN0cmluZz46Oml0ZXJhdG9yIGl0ID0gZW50cnkuYmVnaW4oKTsKKyAgICB3aGlsZSAoaXQgIT0gZW50cnkuZW5kKCkpIHsKKyAgICAgICAgaWYgKCgqaXQpID09IG5hbWUpIHsKKyAgICAgICAgICAgIHJldHVybiAoKml0KS5jX3N0cigpOworICAgICAgICB9CisgICAgICAgICsraXQ7CisgICAgfQorCisgICAgZW50cnkucHVzaF9iYWNrKEFTdHJpbmcobmFtZSkpOworCisgICAgcmV0dXJuICgqLS1lbnRyeS5lbmQoKSkuY19zdHIoKTsKK30KKworLy8gc3RhdGljCit1aW50MzJfdCBBQXRvbWl6ZXI6Okhhc2goY29uc3QgY2hhciAqcykgeworICAgIHVpbnQzMl90IHN1bSA9IDA7CisgICAgd2hpbGUgKCpzICE9ICdcMCcpIHsKKyAgICAgICAgc3VtID0gKHN1bSAqIDMxKSArICpzOworICAgICAgICArK3M7CisgICAgfQorCisgICAgcmV0dXJuIHN1bTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUJ1ZmZlci5jcHAgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FCdWZmZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxNzNkYjQKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FCdWZmZXIuY3BwCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaW5jbHVkZSAiQUJ1ZmZlci5oIgorCisjaW5jbHVkZSAiQURlYnVnLmgiCisjaW5jbHVkZSAiQUxvb3Blci5oIgorI2luY2x1ZGUgIkFNZXNzYWdlLmgiCisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworQUJ1ZmZlcjo6QUJ1ZmZlcihzaXplX3QgY2FwYWNpdHkpCisgICAgOiBtRGF0YShtYWxsb2MoY2FwYWNpdHkpKSwKKyAgICAgIG1DYXBhY2l0eShjYXBhY2l0eSksCisgICAgICBtUmFuZ2VPZmZzZXQoMCksCisgICAgICBtUmFuZ2VMZW5ndGgoY2FwYWNpdHkpLAorICAgICAgbUludDMyRGF0YSgwKSwKKyAgICAgIG1Pd25zRGF0YSh0cnVlKSB7Cit9CisKK0FCdWZmZXI6OkFCdWZmZXIodm9pZCAqZGF0YSwgc2l6ZV90IGNhcGFjaXR5KQorICAgIDogbURhdGEoZGF0YSksCisgICAgICBtQ2FwYWNpdHkoY2FwYWNpdHkpLAorICAgICAgbVJhbmdlT2Zmc2V0KDApLAorICAgICAgbVJhbmdlTGVuZ3RoKGNhcGFjaXR5KSwKKyAgICAgIG1JbnQzMkRhdGEoMCksCisgICAgICBtT3duc0RhdGEoZmFsc2UpIHsKK30KKworQUJ1ZmZlcjo6fkFCdWZmZXIoKSB7CisgICAgaWYgKG1Pd25zRGF0YSkgeworICAgICAgICBpZiAobURhdGEgIT0gTlVMTCkgeworICAgICAgICAgICAgZnJlZShtRGF0YSk7CisgICAgICAgICAgICBtRGF0YSA9IE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobUZhcmV3ZWxsICE9IE5VTEwpIHsKKyAgICAgICAgbUZhcmV3ZWxsLT5wb3N0KCk7CisgICAgfQorfQorCit2b2lkIEFCdWZmZXI6OnNldFJhbmdlKHNpemVfdCBvZmZzZXQsIHNpemVfdCBzaXplKSB7CisgICAgQ0hFQ0tfTEUob2Zmc2V0LCBtQ2FwYWNpdHkpOworICAgIENIRUNLX0xFKG9mZnNldCArIHNpemUsIG1DYXBhY2l0eSk7CisKKyAgICBtUmFuZ2VPZmZzZXQgPSBvZmZzZXQ7CisgICAgbVJhbmdlTGVuZ3RoID0gc2l6ZTsKK30KKwordm9pZCBBQnVmZmVyOjpzZXRGYXJld2VsbE1lc3NhZ2UoY29uc3Qgc3A8QU1lc3NhZ2U+IG1zZykgeworICAgIG1GYXJld2VsbCA9IG1zZzsKK30KKworc3A8QU1lc3NhZ2U+IEFCdWZmZXI6Om1ldGEoKSB7CisgICAgaWYgKG1NZXRhID09IE5VTEwpIHsKKyAgICAgICAgbU1ldGEgPSBuZXcgQU1lc3NhZ2U7CisgICAgfQorICAgIHJldHVybiBtTWV0YTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKKwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BRGVidWcuY3BwIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BRGVidWcuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2ZjhiMjIKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FEZWJ1Zy5jcHAKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpbmNsdWRlICJBRGVidWcuaCIKKworI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisKKyNpZmRlZiBBTkRST0lECisjaW5jbHVkZSA8Y3V0aWxzL2xvZy5oPgorI2VuZGlmCisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworTG9nZ2VyOjpMb2dnZXIoTG9nVHlwZSB0eXBlKQorICAgIDogbUxvZ1R5cGUodHlwZSkgeworICAgIHN3aXRjaCAobUxvZ1R5cGUpIHsKKyAgICAgICAgY2FzZSBWRVJCT1NFOgorICAgICAgICAgICAgbU1lc3NhZ2UgPSAiViAiOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSU5GTzoKKyAgICAgICAgICAgIG1NZXNzYWdlID0gIkkgIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdBUk5JTkc6CisgICAgICAgICAgICBtTWVzc2FnZSA9ICJXICI7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBFUlJPUjoKKyAgICAgICAgICAgIG1NZXNzYWdlID0gIkUgIjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEZBVEFMOgorICAgICAgICAgICAgbU1lc3NhZ2UgPSAiRiAiOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KK30KKworTG9nZ2VyOjp+TG9nZ2VyKCkgeworICAgIGlmIChtTG9nVHlwZSA9PSBWRVJCT1NFKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtTWVzc2FnZS5hcHBlbmQoIlxuIik7CisKKyNpZiBkZWZpbmVkKEFORFJPSUQpICYmIDEKKyAgICBMT0dfUFJJKEFORFJPSURfTE9HX0lORk8sICJBRGVidWciLCAiJXMiLCBtTWVzc2FnZS5jX3N0cigpKTsKKyNlbHNlCisgICAgZnByaW50ZihzdGRlcnIsIG1NZXNzYWdlLmNfc3RyKCkpOworICAgIGZmbHVzaChzdGRlcnIpOworI2VuZGlmCisKKyAgICBpZiAobUxvZ1R5cGUgPT0gRkFUQUwpIHsKKyAgICAgICAgYWJvcnQoKTsKKyAgICB9Cit9CisKK2NvbnN0IGNoYXIgKkxlYWZOYW1lKGNvbnN0IGNoYXIgKnMpIHsKKyAgICBjb25zdCBjaGFyICpsYXN0U2xhc2ggPSBzdHJyY2hyKHMsICcvJyk7CisgICAgcmV0dXJuIGxhc3RTbGFzaCAhPSBOVUxMID8gbGFzdFNsYXNoICsgMSA6IHM7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FIYW5kbGVyLmNwcCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUhhbmRsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkNWY3ZTk0Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BSGFuZGxlci5jcHAKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8vI2RlZmluZSBMT0dfTkRFQlVHIDAKKyNkZWZpbmUgTE9HX1RBRyAiQUhhbmRsZXIiCisjaW5jbHVkZSA8dXRpbHMvTG9nLmg+CisKKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FIYW5kbGVyLmg+CisKKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FMb29wZXJSb3N0ZXIuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitzcDxBTG9vcGVyPiBBSGFuZGxlcjo6bG9vcGVyKCkgeworICAgIGV4dGVybiBBTG9vcGVyUm9zdGVyIGdMb29wZXJSb3N0ZXI7CisKKyAgICByZXR1cm4gZ0xvb3BlclJvc3Rlci5maW5kTG9vcGVyKGlkKCkpOworfQorCit9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZApkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BTG9vcGVyLmNwcCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUxvb3Blci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Q0ZjM0OQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUxvb3Blci5jcHAKQEAgLTAsMCArMSwxOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvLyNkZWZpbmUgTE9HX05ERUJVRyAwCisjZGVmaW5lIExPR19UQUcgIkFMb29wZXIiCisjaW5jbHVkZSA8dXRpbHMvTG9nLmg+CisKKyNpbmNsdWRlIDxzeXMvdGltZS5oPgorCisjaW5jbHVkZSAiQUxvb3Blci5oIgorCisjaW5jbHVkZSAiQUhhbmRsZXIuaCIKKyNpbmNsdWRlICJBTG9vcGVyUm9zdGVyLmgiCisjaW5jbHVkZSAiQU1lc3NhZ2UuaCIKKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitBTG9vcGVyUm9zdGVyIGdMb29wZXJSb3N0ZXI7CisKK3N0cnVjdCBBTG9vcGVyOjpMb29wZXJUaHJlYWQgOiBwdWJsaWMgVGhyZWFkIHsKKyAgICBMb29wZXJUaHJlYWQoQUxvb3BlciAqbG9vcGVyLCBib29sIGNhbkNhbGxKYXZhKQorICAgICAgICA6IFRocmVhZChjYW5DYWxsSmF2YSksCisgICAgICAgICAgbUxvb3Blcihsb29wZXIpIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGJvb2wgdGhyZWFkTG9vcCgpIHsKKyAgICAgICAgcmV0dXJuIG1Mb29wZXItPmxvb3AoKTsKKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5Mb29wZXJUaHJlYWQoKSB7fQorCitwcml2YXRlOgorICAgIEFMb29wZXIgKm1Mb29wZXI7CisKKyAgICBESVNBTExPV19FVklMX0NPTlNUUlVDVE9SUyhMb29wZXJUaHJlYWQpOworfTsKKworLy8gc3RhdGljCitpbnQ2NF90IEFMb29wZXI6OkdldE5vd1VzKCkgeworICAgIHN0cnVjdCB0aW1ldmFsIHR2OworICAgIGdldHRpbWVvZmRheSgmdHYsIE5VTEwpOworCisgICAgcmV0dXJuIChpbnQ2NF90KXR2LnR2X3NlYyAqIDEwMDAwMDBsbCArIHR2LnR2X3VzZWM7Cit9CisKK0FMb29wZXI6OkFMb29wZXIoKQorICAgIDogbVJ1bm5pbmdMb2NhbGx5KGZhbHNlKSB7Cit9CisKK0FMb29wZXI6On5BTG9vcGVyKCkgeworICAgIHN0b3AoKTsKK30KKworQUxvb3Blcjo6aGFuZGxlcl9pZCBBTG9vcGVyOjpyZWdpc3RlckhhbmRsZXIoY29uc3Qgc3A8QUhhbmRsZXI+ICZoYW5kbGVyKSB7CisgICAgcmV0dXJuIGdMb29wZXJSb3N0ZXIucmVnaXN0ZXJIYW5kbGVyKHRoaXMsIGhhbmRsZXIpOworfQorCit2b2lkIEFMb29wZXI6OnVucmVnaXN0ZXJIYW5kbGVyKGhhbmRsZXJfaWQgaGFuZGxlcklEKSB7CisgICAgZ0xvb3BlclJvc3Rlci51bnJlZ2lzdGVySGFuZGxlcihoYW5kbGVySUQpOworfQorCitzdGF0dXNfdCBBTG9vcGVyOjpzdGFydChib29sIHJ1bk9uQ2FsbGluZ1RocmVhZCwgYm9vbCBjYW5DYWxsSmF2YSkgeworICAgIGlmIChydW5PbkNhbGxpbmdUaHJlYWQpIHsKKyAgICAgICAgeworICAgICAgICAgICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKKworICAgICAgICAgICAgaWYgKG1UaHJlYWQgIT0gTlVMTCB8fCBtUnVubmluZ0xvY2FsbHkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gSU5WQUxJRF9PUEVSQVRJT047CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1SdW5uaW5nTG9jYWxseSA9IHRydWU7CisgICAgICAgIH0KKworICAgICAgICBkbyB7CisgICAgICAgIH0gd2hpbGUgKGxvb3AoKSk7CisKKyAgICAgICAgcmV0dXJuIE9LOworICAgIH0KKworICAgIE11dGV4OjpBdXRvbG9jayBhdXRvTG9jayhtTG9jayk7CisKKyAgICBpZiAobVRocmVhZCAhPSBOVUxMIHx8IG1SdW5uaW5nTG9jYWxseSkgeworICAgICAgICByZXR1cm4gSU5WQUxJRF9PUEVSQVRJT047CisgICAgfQorCisgICAgbVRocmVhZCA9IG5ldyBMb29wZXJUaHJlYWQodGhpcywgY2FuQ2FsbEphdmEpOworCisgICAgc3RhdHVzX3QgZXJyID0gbVRocmVhZC0+cnVuKCJBTG9vcGVyIik7CisgICAgaWYgKGVyciAhPSBPSykgeworICAgICAgICBtVGhyZWFkLmNsZWFyKCk7CisgICAgfQorCisgICAgcmV0dXJuIGVycjsKK30KKworc3RhdHVzX3QgQUxvb3Blcjo6c3RvcCgpIHsKKyAgICBzcDxMb29wZXJUaHJlYWQ+IHRocmVhZDsKKyAgICBib29sIHJ1bm5pbmdMb2NhbGx5OworCisgICAgeworICAgICAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobUxvY2spOworCisgICAgICAgIHRocmVhZCA9IG1UaHJlYWQ7CisgICAgICAgIHJ1bm5pbmdMb2NhbGx5ID0gbVJ1bm5pbmdMb2NhbGx5OworICAgICAgICBtVGhyZWFkLmNsZWFyKCk7CisgICAgICAgIG1SdW5uaW5nTG9jYWxseSA9IGZhbHNlOworICAgIH0KKworICAgIGlmICh0aHJlYWQgPT0gTlVMTCAmJiAhcnVubmluZ0xvY2FsbHkpIHsKKyAgICAgICAgcmV0dXJuIElOVkFMSURfT1BFUkFUSU9OOworICAgIH0KKworICAgIGlmICh0aHJlYWQgIT0gTlVMTCkgeworICAgICAgICB0aHJlYWQtPnJlcXVlc3RFeGl0KCk7CisgICAgfQorCisgICAgbVF1ZXVlQ2hhbmdlZENvbmRpdGlvbi5zaWduYWwoKTsKKworICAgIGlmICghcnVubmluZ0xvY2FsbHkpIHsKKyAgICAgICAgdGhyZWFkLT5yZXF1ZXN0RXhpdEFuZFdhaXQoKTsKKyAgICB9CisKKyAgICByZXR1cm4gT0s7Cit9CisKK3ZvaWQgQUxvb3Blcjo6cG9zdChjb25zdCBzcDxBTWVzc2FnZT4gJm1zZywgaW50NjRfdCBkZWxheVVzKSB7CisgICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKKworICAgIGludDY0X3Qgd2hlblVzOworICAgIGlmIChkZWxheVVzID4gMCkgeworICAgICAgICB3aGVuVXMgPSBHZXROb3dVcygpICsgZGVsYXlVczsKKyAgICB9IGVsc2UgeworICAgICAgICB3aGVuVXMgPSBHZXROb3dVcygpOworICAgIH0KKworICAgIExpc3Q8RXZlbnQ+OjppdGVyYXRvciBpdCA9IG1FdmVudFF1ZXVlLmJlZ2luKCk7CisgICAgd2hpbGUgKGl0ICE9IG1FdmVudFF1ZXVlLmVuZCgpICYmICgqaXQpLm1XaGVuVXMgPD0gd2hlblVzKSB7CisgICAgICAgICsraXQ7CisgICAgfQorCisgICAgRXZlbnQgZXZlbnQ7CisgICAgZXZlbnQubVdoZW5VcyA9IHdoZW5VczsKKyAgICBldmVudC5tTWVzc2FnZSA9IG1zZzsKKworICAgIGlmIChpdCA9PSBtRXZlbnRRdWV1ZS5iZWdpbigpKSB7CisgICAgICAgIG1RdWV1ZUNoYW5nZWRDb25kaXRpb24uc2lnbmFsKCk7CisgICAgfQorCisgICAgbUV2ZW50UXVldWUuaW5zZXJ0KGl0LCBldmVudCk7Cit9CisKK2Jvb2wgQUxvb3Blcjo6bG9vcCgpIHsKKyAgICBFdmVudCBldmVudDsKKworICAgIHsKKyAgICAgICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKKyAgICAgICAgaWYgKG1UaHJlYWQgPT0gTlVMTCAmJiAhbVJ1bm5pbmdMb2NhbGx5KSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1FdmVudFF1ZXVlLmVtcHR5KCkpIHsKKyAgICAgICAgICAgIG1RdWV1ZUNoYW5nZWRDb25kaXRpb24ud2FpdChtTG9jayk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpbnQ2NF90IHdoZW5VcyA9ICgqbUV2ZW50UXVldWUuYmVnaW4oKSkubVdoZW5VczsKKyAgICAgICAgaW50NjRfdCBub3dVcyA9IEdldE5vd1VzKCk7CisKKyAgICAgICAgaWYgKHdoZW5VcyA+IG5vd1VzKSB7CisgICAgICAgICAgICBpbnQ2NF90IGRlbGF5VXMgPSB3aGVuVXMgLSBub3dVczsKKyAgICAgICAgICAgIG1RdWV1ZUNoYW5nZWRDb25kaXRpb24ud2FpdFJlbGF0aXZlKG1Mb2NrLCBkZWxheVVzICogMTAwMGxsKTsKKworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICBldmVudCA9ICptRXZlbnRRdWV1ZS5iZWdpbigpOworICAgICAgICBtRXZlbnRRdWV1ZS5lcmFzZShtRXZlbnRRdWV1ZS5iZWdpbigpKTsKKyAgICB9CisKKyAgICBnTG9vcGVyUm9zdGVyLmRlbGl2ZXJNZXNzYWdlKGV2ZW50Lm1NZXNzYWdlKTsKKworICAgIHJldHVybiB0cnVlOworfQorCit9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZApkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BTG9vcGVyUm9zdGVyLmNwcCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUxvb3BlclJvc3Rlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjVmNzU5MwotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUxvb3BlclJvc3Rlci5jcHAKQEAgLTAsMCArMSwxNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisvLyNkZWZpbmUgTE9HX05ERUJVRyAwCisjZGVmaW5lIExPR19UQUcgIkFMb29wZXJSb3N0ZXIiCisjaW5jbHVkZSA8dXRpbHMvTG9nLmg+CisKKyNpbmNsdWRlICJBTG9vcGVyUm9zdGVyLmgiCisKKyNpbmNsdWRlICJBRGVidWcuaCIKKyNpbmNsdWRlICJBSGFuZGxlci5oIgorI2luY2x1ZGUgIkFNZXNzYWdlLmgiCisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworQUxvb3BlclJvc3Rlcjo6QUxvb3BlclJvc3RlcigpCisgICAgOiBtTmV4dEhhbmRsZXJJRCgxKSB7Cit9CisKK0FMb29wZXI6OmhhbmRsZXJfaWQgQUxvb3BlclJvc3Rlcjo6cmVnaXN0ZXJIYW5kbGVyKAorICAgICAgICBjb25zdCBzcDxBTG9vcGVyPiBsb29wZXIsIGNvbnN0IHNwPEFIYW5kbGVyPiAmaGFuZGxlcikgeworICAgIE11dGV4OjpBdXRvbG9jayBhdXRvTG9jayhtTG9jayk7CisKKyAgICBpZiAoaGFuZGxlci0+aWQoKSAhPSAwKSB7CisgICAgICAgIENIRUNLKCEiQSBoYW5kbGVyIG11c3Qgb25seSBiZSByZWdpc3RlcmVkIG9uY2UuIik7CisgICAgICAgIHJldHVybiBJTlZBTElEX09QRVJBVElPTjsKKyAgICB9CisKKyAgICBIYW5kbGVySW5mbyBpbmZvOworICAgIGluZm8ubUxvb3BlciA9IGxvb3BlcjsKKyAgICBpbmZvLm1IYW5kbGVyID0gaGFuZGxlcjsKKyAgICBBTG9vcGVyOjpoYW5kbGVyX2lkIGhhbmRsZXJJRCA9IG1OZXh0SGFuZGxlcklEKys7CisgICAgbUhhbmRsZXJzLmFkZChoYW5kbGVySUQsIGluZm8pOworCisgICAgaGFuZGxlci0+c2V0SUQoaGFuZGxlcklEKTsKKworICAgIHJldHVybiBoYW5kbGVySUQ7Cit9CisKK3ZvaWQgQUxvb3BlclJvc3Rlcjo6dW5yZWdpc3RlckhhbmRsZXIoQUxvb3Blcjo6aGFuZGxlcl9pZCBoYW5kbGVySUQpIHsKKyAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobUxvY2spOworCisgICAgc3NpemVfdCBpbmRleCA9IG1IYW5kbGVycy5pbmRleE9mS2V5KGhhbmRsZXJJRCk7CisgICAgQ0hFQ0tfR0UoaW5kZXgsIDApOworCisgICAgY29uc3QgSGFuZGxlckluZm8gJmluZm8gPSBtSGFuZGxlcnMudmFsdWVBdChpbmRleCk7CisKKyAgICBzcDxBSGFuZGxlcj4gaGFuZGxlciA9IGluZm8ubUhhbmRsZXIucHJvbW90ZSgpOworCisgICAgaWYgKGhhbmRsZXIgIT0gTlVMTCkgeworICAgICAgICBoYW5kbGVyLT5zZXRJRCgwKTsKKyAgICB9CisKKyAgICBtSGFuZGxlcnMucmVtb3ZlSXRlbXNBdChpbmRleCk7Cit9CisKK3ZvaWQgQUxvb3BlclJvc3Rlcjo6cG9zdE1lc3NhZ2UoCisgICAgICAgIGNvbnN0IHNwPEFNZXNzYWdlPiAmbXNnLCBpbnQ2NF90IGRlbGF5VXMpIHsKKyAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobUxvY2spOworCisgICAgc3NpemVfdCBpbmRleCA9IG1IYW5kbGVycy5pbmRleE9mS2V5KG1zZy0+dGFyZ2V0KCkpOworCisgICAgaWYgKGluZGV4IDwgMCkgeworICAgICAgICBMT0coV0FSTklORykgPDwgImZhaWxlZCB0byBwb3N0IG1lc3NhZ2UuIFRhcmdldCBoYW5kbGVyIG5vdCByZWdpc3RlcmVkLiI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBjb25zdCBIYW5kbGVySW5mbyAmaW5mbyA9IG1IYW5kbGVycy52YWx1ZUF0KGluZGV4KTsKKworICAgIHNwPEFMb29wZXI+IGxvb3BlciA9IGluZm8ubUxvb3Blci5wcm9tb3RlKCk7CisKKyAgICBpZiAobG9vcGVyID09IE5VTEwpIHsKKyAgICAgICAgTE9HKFdBUk5JTkcpIDw8ICJmYWlsZWQgdG8gcG9zdCBtZXNzYWdlLiAiCisgICAgICAgICAgICAgICAgICAgICAgICAiVGFyZ2V0IGhhbmRsZXIgc3RpbGwgcmVnaXN0ZXJlZCwgYnV0IG9iamVjdCBnb25lLiI7CisKKyAgICAgICAgbUhhbmRsZXJzLnJlbW92ZUl0ZW1zQXQoaW5kZXgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbG9vcGVyLT5wb3N0KG1zZywgZGVsYXlVcyk7Cit9CisKK3ZvaWQgQUxvb3BlclJvc3Rlcjo6ZGVsaXZlck1lc3NhZ2UoY29uc3Qgc3A8QU1lc3NhZ2U+ICZtc2cpIHsKKyAgICBzcDxBSGFuZGxlcj4gaGFuZGxlcjsKKworICAgIHsKKyAgICAgICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKKworICAgICAgICBzc2l6ZV90IGluZGV4ID0gbUhhbmRsZXJzLmluZGV4T2ZLZXkobXNnLT50YXJnZXQoKSk7CisKKyAgICAgICAgaWYgKGluZGV4IDwgMCkgeworICAgICAgICAgICAgTE9HKFdBUk5JTkcpIDw8ICJmYWlsZWQgdG8gZGVsaXZlciBtZXNzYWdlLiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgPDwgIlRhcmdldCBoYW5kbGVyIG5vdCByZWdpc3RlcmVkLiI7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBjb25zdCBIYW5kbGVySW5mbyAmaW5mbyA9IG1IYW5kbGVycy52YWx1ZUF0KGluZGV4KTsKKyAgICAgICAgaGFuZGxlciA9IGluZm8ubUhhbmRsZXIucHJvbW90ZSgpOworCisgICAgICAgIGlmIChoYW5kbGVyID09IE5VTEwpIHsKKyAgICAgICAgICAgIExPRyhXQVJOSU5HKSA8PCAiZmFpbGVkIHRvIGRlbGl2ZXIgbWVzc2FnZS4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUYXJnZXQgaGFuZGxlciByZWdpc3RlcmVkLCBidXQgb2JqZWN0IGdvbmUuIjsKKworICAgICAgICAgICAgbUhhbmRsZXJzLnJlbW92ZUl0ZW1zQXQoaW5kZXgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgaGFuZGxlci0+b25NZXNzYWdlUmVjZWl2ZWQobXNnKTsKK30KKworc3A8QUxvb3Blcj4gQUxvb3BlclJvc3Rlcjo6ZmluZExvb3BlcihBTG9vcGVyOjpoYW5kbGVyX2lkIGhhbmRsZXJJRCkgeworICAgIE11dGV4OjpBdXRvbG9jayBhdXRvTG9jayhtTG9jayk7CisKKyAgICBzc2l6ZV90IGluZGV4ID0gbUhhbmRsZXJzLmluZGV4T2ZLZXkoaGFuZGxlcklEKTsKKworICAgIGlmIChpbmRleCA8IDApIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgc3A8QUxvb3Blcj4gbG9vcGVyID0gbUhhbmRsZXJzLnZhbHVlQXQoaW5kZXgpLm1Mb29wZXIucHJvbW90ZSgpOworCisgICAgaWYgKGxvb3BlciA9PSBOVUxMKSB7CisgICAgICAgIG1IYW5kbGVycy5yZW1vdmVJdGVtc0F0KGluZGV4KTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIGxvb3BlcjsKK30KKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQU1lc3NhZ2UuY3BwIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BTWVzc2FnZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjZjNmQ0MgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQU1lc3NhZ2UuY3BwCkBAIC0wLDAgKzEsMzQ0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2luY2x1ZGUgIkFNZXNzYWdlLmgiCisKKyNpbmNsdWRlIDxjdHlwZS5oPgorCisjaW5jbHVkZSAiQUF0b21pemVyLmgiCisjaW5jbHVkZSAiQURlYnVnLmgiCisjaW5jbHVkZSAiQUxvb3BlclJvc3Rlci5oIgorI2luY2x1ZGUgIkFTdHJpbmcuaCIKKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitBTWVzc2FnZTo6QU1lc3NhZ2UodWludDMyX3Qgd2hhdCwgQUxvb3Blcjo6aGFuZGxlcl9pZCB0YXJnZXQpCisgICAgOiBtV2hhdCh3aGF0KSwKKyAgICAgIG1UYXJnZXQodGFyZ2V0KSwKKyAgICAgIG1OdW1JdGVtcygwKSB7Cit9CisKK0FNZXNzYWdlOjp+QU1lc3NhZ2UoKSB7CisgICAgY2xlYXIoKTsKK30KKwordm9pZCBBTWVzc2FnZTo6c2V0V2hhdCh1aW50MzJfdCB3aGF0KSB7CisgICAgbVdoYXQgPSB3aGF0OworfQorCit1aW50MzJfdCBBTWVzc2FnZTo6d2hhdCgpIGNvbnN0IHsKKyAgICByZXR1cm4gbVdoYXQ7Cit9CisKK3ZvaWQgQU1lc3NhZ2U6OnNldFRhcmdldChBTG9vcGVyOjpoYW5kbGVyX2lkIGhhbmRsZXJJRCkgeworICAgIG1UYXJnZXQgPSBoYW5kbGVySUQ7Cit9CisKK0FMb29wZXI6OmhhbmRsZXJfaWQgQU1lc3NhZ2U6OnRhcmdldCgpIGNvbnN0IHsKKyAgICByZXR1cm4gbVRhcmdldDsKK30KKwordm9pZCBBTWVzc2FnZTo6Y2xlYXIoKSB7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtTnVtSXRlbXM7ICsraSkgeworICAgICAgICBJdGVtICppdGVtID0gJm1JdGVtc1tpXTsKKyAgICAgICAgZnJlZUl0ZW0oaXRlbSk7CisgICAgfQorICAgIG1OdW1JdGVtcyA9IDA7Cit9CisKK3ZvaWQgQU1lc3NhZ2U6OmZyZWVJdGVtKEl0ZW0gKml0ZW0pIHsKKyAgICBzd2l0Y2ggKGl0ZW0tPm1UeXBlKSB7CisgICAgICAgIGNhc2Uga1R5cGVTdHJpbmc6CisgICAgICAgIHsKKyAgICAgICAgICAgIGRlbGV0ZSBpdGVtLT51LnN0cmluZ1ZhbHVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlIGtUeXBlT2JqZWN0OgorICAgICAgICBjYXNlIGtUeXBlTWVzc2FnZToKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKGl0ZW0tPnUucmVmVmFsdWUgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGl0ZW0tPnUucmVmVmFsdWUtPmRlY1N0cm9uZyh0aGlzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KK30KKworQU1lc3NhZ2U6Okl0ZW0gKkFNZXNzYWdlOjphbGxvY2F0ZUl0ZW0oY29uc3QgY2hhciAqbmFtZSkgeworICAgIG5hbWUgPSBBQXRvbWl6ZXI6OkF0b21pemUobmFtZSk7CisKKyAgICBzaXplX3QgaSA9IDA7CisgICAgd2hpbGUgKGkgPCBtTnVtSXRlbXMgJiYgbUl0ZW1zW2ldLm1OYW1lICE9IG5hbWUpIHsKKyAgICAgICAgKytpOworICAgIH0KKworICAgIEl0ZW0gKml0ZW07CisKKyAgICBpZiAoaSA8IG1OdW1JdGVtcykgeworICAgICAgICBpdGVtID0gJm1JdGVtc1tpXTsKKyAgICAgICAgZnJlZUl0ZW0oaXRlbSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgQ0hFQ0sobU51bUl0ZW1zIDwga01heE51bUl0ZW1zKTsKKyAgICAgICAgaSA9IG1OdW1JdGVtcysrOworICAgICAgICBpdGVtID0gJm1JdGVtc1tpXTsKKworICAgICAgICBpdGVtLT5tTmFtZSA9IG5hbWU7CisgICAgfQorCisgICAgcmV0dXJuIGl0ZW07Cit9CisKK2NvbnN0IEFNZXNzYWdlOjpJdGVtICpBTWVzc2FnZTo6ZmluZEl0ZW0oCisgICAgICAgIGNvbnN0IGNoYXIgKm5hbWUsIFR5cGUgdHlwZSkgY29uc3QgeworICAgIG5hbWUgPSBBQXRvbWl6ZXI6OkF0b21pemUobmFtZSk7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1OdW1JdGVtczsgKytpKSB7CisgICAgICAgIGNvbnN0IEl0ZW0gKml0ZW0gPSAmbUl0ZW1zW2ldOworCisgICAgICAgIGlmIChpdGVtLT5tTmFtZSA9PSBuYW1lKSB7CisgICAgICAgICAgICByZXR1cm4gaXRlbS0+bVR5cGUgPT0gdHlwZSA/IGl0ZW0gOiBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIE5VTEw7Cit9CisKKyNkZWZpbmUgQkFTSUNfVFlQRShOQU1FLEZJRUxETkFNRSxUWVBFTkFNRSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK3ZvaWQgQU1lc3NhZ2U6OnNldCMjTkFNRShjb25zdCBjaGFyICpuYW1lLCBUWVBFTkFNRSB2YWx1ZSkgeyAgICAgICAgICAgIFwKKyAgICBJdGVtICppdGVtID0gYWxsb2NhdGVJdGVtKG5hbWUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpdGVtLT5tVHlwZSA9IGtUeXBlIyNOQU1FOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpdGVtLT51LkZJRUxETkFNRSA9IHZhbHVlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK2Jvb2wgQU1lc3NhZ2U6OmZpbmQjI05BTUUoY29uc3QgY2hhciAqbmFtZSwgVFlQRU5BTUUgKnZhbHVlKSBjb25zdCB7ICAgIFwKKyAgICBjb25zdCBJdGVtICppdGVtID0gZmluZEl0ZW0obmFtZSwga1R5cGUjI05BTUUpOyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoaXRlbSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgKnZhbHVlID0gaXRlbS0+dS5GSUVMRE5BTUU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIHRydWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICByZXR1cm4gZmFsc2U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30KKworQkFTSUNfVFlQRShJbnQzMixpbnQzMlZhbHVlLGludDMyX3QpCitCQVNJQ19UWVBFKEludDY0LGludDY0VmFsdWUsaW50NjRfdCkKK0JBU0lDX1RZUEUoU2l6ZSxzaXplVmFsdWUsc2l6ZV90KQorQkFTSUNfVFlQRShGbG9hdCxmbG9hdFZhbHVlLGZsb2F0KQorQkFTSUNfVFlQRShEb3VibGUsZG91YmxlVmFsdWUsZG91YmxlKQorQkFTSUNfVFlQRShQb2ludGVyLHB0clZhbHVlLHZvaWQgKikKKworI3VuZGVmIEJBU0lDX1RZUEUKKwordm9pZCBBTWVzc2FnZTo6c2V0U3RyaW5nKAorICAgICAgICBjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpzLCBzc2l6ZV90IGxlbikgeworICAgIEl0ZW0gKml0ZW0gPSBhbGxvY2F0ZUl0ZW0obmFtZSk7CisgICAgaXRlbS0+bVR5cGUgPSBrVHlwZVN0cmluZzsKKyAgICBpdGVtLT51LnN0cmluZ1ZhbHVlID0gbmV3IEFTdHJpbmcocywgbGVuIDwgMCA/IHN0cmxlbihzKSA6IGxlbik7Cit9CisKK3ZvaWQgQU1lc3NhZ2U6OnNldE9iamVjdChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBzcDxSZWZCYXNlPiAmb2JqKSB7CisgICAgSXRlbSAqaXRlbSA9IGFsbG9jYXRlSXRlbShuYW1lKTsKKyAgICBpdGVtLT5tVHlwZSA9IGtUeXBlT2JqZWN0OworCisgICAgaWYgKG9iaiAhPSBOVUxMKSB7IG9iai0+aW5jU3Ryb25nKHRoaXMpOyB9CisgICAgaXRlbS0+dS5yZWZWYWx1ZSA9IG9iai5nZXQoKTsKK30KKwordm9pZCBBTWVzc2FnZTo6c2V0TWVzc2FnZShjb25zdCBjaGFyICpuYW1lLCBjb25zdCBzcDxBTWVzc2FnZT4gJm9iaikgeworICAgIEl0ZW0gKml0ZW0gPSBhbGxvY2F0ZUl0ZW0obmFtZSk7CisgICAgaXRlbS0+bVR5cGUgPSBrVHlwZU1lc3NhZ2U7CisKKyAgICBpZiAob2JqICE9IE5VTEwpIHsgb2JqLT5pbmNTdHJvbmcodGhpcyk7IH0KKyAgICBpdGVtLT51LnJlZlZhbHVlID0gb2JqLmdldCgpOworfQorCitib29sIEFNZXNzYWdlOjpmaW5kU3RyaW5nKGNvbnN0IGNoYXIgKm5hbWUsIEFTdHJpbmcgKnZhbHVlKSBjb25zdCB7CisgICAgY29uc3QgSXRlbSAqaXRlbSA9IGZpbmRJdGVtKG5hbWUsIGtUeXBlU3RyaW5nKTsKKyAgICBpZiAoaXRlbSkgeworICAgICAgICAqdmFsdWUgPSAqaXRlbS0+dS5zdHJpbmdWYWx1ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBTWVzc2FnZTo6ZmluZE9iamVjdChjb25zdCBjaGFyICpuYW1lLCBzcDxSZWZCYXNlPiAqb2JqKSBjb25zdCB7CisgICAgY29uc3QgSXRlbSAqaXRlbSA9IGZpbmRJdGVtKG5hbWUsIGtUeXBlT2JqZWN0KTsKKyAgICBpZiAoaXRlbSkgeworICAgICAgICAqb2JqID0gaXRlbS0+dS5yZWZWYWx1ZTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBTWVzc2FnZTo6ZmluZE1lc3NhZ2UoY29uc3QgY2hhciAqbmFtZSwgc3A8QU1lc3NhZ2U+ICpvYmopIGNvbnN0IHsKKyAgICBjb25zdCBJdGVtICppdGVtID0gZmluZEl0ZW0obmFtZSwga1R5cGVNZXNzYWdlKTsKKyAgICBpZiAoaXRlbSkgeworICAgICAgICAqb2JqID0gc3RhdGljX2Nhc3Q8QU1lc3NhZ2UgKj4oaXRlbS0+dS5yZWZWYWx1ZSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKK3ZvaWQgQU1lc3NhZ2U6OnBvc3QoaW50NjRfdCBkZWxheVVzKSB7CisgICAgZXh0ZXJuIEFMb29wZXJSb3N0ZXIgZ0xvb3BlclJvc3RlcjsKKworICAgIGdMb29wZXJSb3N0ZXIucG9zdE1lc3NhZ2UodGhpcywgZGVsYXlVcyk7Cit9CisKK3NwPEFNZXNzYWdlPiBBTWVzc2FnZTo6ZHVwKCkgY29uc3QgeworICAgIHNwPEFNZXNzYWdlPiBtc2cgPSBuZXcgQU1lc3NhZ2UobVdoYXQsIG1UYXJnZXQpOworICAgIG1zZy0+bU51bUl0ZW1zID0gbU51bUl0ZW1zOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtTnVtSXRlbXM7ICsraSkgeworICAgICAgICBjb25zdCBJdGVtICpmcm9tID0gJm1JdGVtc1tpXTsKKyAgICAgICAgSXRlbSAqdG8gPSAmbXNnLT5tSXRlbXNbaV07CisKKyAgICAgICAgdG8tPm1OYW1lID0gZnJvbS0+bU5hbWU7CisgICAgICAgIHRvLT5tVHlwZSA9IGZyb20tPm1UeXBlOworCisgICAgICAgIHN3aXRjaCAoZnJvbS0+bVR5cGUpIHsKKyAgICAgICAgICAgIGNhc2Uga1R5cGVTdHJpbmc6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdG8tPnUuc3RyaW5nVmFsdWUgPQorICAgICAgICAgICAgICAgICAgICBuZXcgQVN0cmluZygqZnJvbS0+dS5zdHJpbmdWYWx1ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhc2Uga1R5cGVPYmplY3Q6CisgICAgICAgICAgICBjYXNlIGtUeXBlTWVzc2FnZToKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB0by0+dS5yZWZWYWx1ZSA9IGZyb20tPnUucmVmVmFsdWU7CisgICAgICAgICAgICAgICAgdG8tPnUucmVmVmFsdWUtPmluY1N0cm9uZyhtc2cuZ2V0KCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRvLT51ID0gZnJvbS0+dTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBtc2c7Cit9CisKK3N0YXRpYyB2b2lkIGFwcGVuZEluZGVudChBU3RyaW5nICpzLCBpbnQzMl90IGluZGVudCkgeworICAgIHN0YXRpYyBjb25zdCBjaGFyIGtXaGl0ZXNwYWNlW10gPQorICAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKKyAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiOworCisgICAgQ0hFQ0tfTFQoKHNpemVfdClpbmRlbnQsIHNpemVvZihrV2hpdGVzcGFjZSkpOworCisgICAgcy0+YXBwZW5kKGtXaGl0ZXNwYWNlLCBpbmRlbnQpOworfQorCitzdGF0aWMgYm9vbCBpc0ZvdXJjYyh1aW50MzJfdCB3aGF0KSB7CisgICAgcmV0dXJuIGlzcHJpbnQod2hhdCAmIDB4ZmYpCisgICAgICAgICYmIGlzcHJpbnQoKHdoYXQgPj4gOCkgJiAweGZmKQorICAgICAgICAmJiBpc3ByaW50KCh3aGF0ID4+IDE2KSAmIDB4ZmYpCisgICAgICAgICYmIGlzcHJpbnQoKHdoYXQgPj4gMjQpICYgMHhmZik7Cit9CisKK0FTdHJpbmcgQU1lc3NhZ2U6OmRlYnVnU3RyaW5nKGludDMyX3QgaW5kZW50KSBjb25zdCB7CisgICAgQVN0cmluZyBzID0gIkFNZXNzYWdlKHdoYXQgPSAiOworCisgICAgQVN0cmluZyB0bXA7CisgICAgaWYgKGlzRm91cmNjKG1XaGF0KSkgeworICAgICAgICB0bXAgPSBTdHJpbmdQcmludGYoCisgICAgICAgICAgICAgICAgIiclYyVjJWMlYyciLAorICAgICAgICAgICAgICAgIChjaGFyKShtV2hhdCA+PiAyNCksCisgICAgICAgICAgICAgICAgKGNoYXIpKChtV2hhdCA+PiAxNikgJiAweGZmKSwKKyAgICAgICAgICAgICAgICAoY2hhcikoKG1XaGF0ID4+IDgpICYgMHhmZiksCisgICAgICAgICAgICAgICAgKGNoYXIpKG1XaGF0ICYgMHhmZikpOworICAgIH0gZWxzZSB7CisgICAgICAgIHRtcCA9IFN0cmluZ1ByaW50ZigiMHglMDh4IiwgbVdoYXQpOworICAgIH0KKyAgICBzLmFwcGVuZCh0bXApOworCisgICAgaWYgKG1UYXJnZXQgIT0gMCkgeworICAgICAgICB0bXAgPSBTdHJpbmdQcmludGYoIiwgdGFyZ2V0ID0gJWQiLCBtVGFyZ2V0KTsKKyAgICAgICAgcy5hcHBlbmQodG1wKTsKKyAgICB9CisgICAgcy5hcHBlbmQoIikgPSB7XG4iKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbU51bUl0ZW1zOyArK2kpIHsKKyAgICAgICAgY29uc3QgSXRlbSAmaXRlbSA9IG1JdGVtc1tpXTsKKworICAgICAgICBzd2l0Y2ggKGl0ZW0ubVR5cGUpIHsKKyAgICAgICAgICAgIGNhc2Uga1R5cGVJbnQzMjoKKyAgICAgICAgICAgICAgICB0bXAgPSBTdHJpbmdQcmludGYoCisgICAgICAgICAgICAgICAgICAgICAgICAiaW50MzJfdCAlcyA9ICVkIiwgaXRlbS5tTmFtZSwgaXRlbS51LmludDMyVmFsdWUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBrVHlwZUludDY0OgorICAgICAgICAgICAgICAgIHRtcCA9IFN0cmluZ1ByaW50ZigKKyAgICAgICAgICAgICAgICAgICAgICAgICJpbnQ2NF90ICVzID0gJWxsZCIsIGl0ZW0ubU5hbWUsIGl0ZW0udS5pbnQ2NFZhbHVlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2Uga1R5cGVTaXplOgorICAgICAgICAgICAgICAgIHRtcCA9IFN0cmluZ1ByaW50ZigKKyAgICAgICAgICAgICAgICAgICAgICAgICJzaXplX3QgJXMgPSAlZCIsIGl0ZW0ubU5hbWUsIGl0ZW0udS5zaXplVmFsdWUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBrVHlwZUZsb2F0OgorICAgICAgICAgICAgICAgIHRtcCA9IFN0cmluZ1ByaW50ZigKKyAgICAgICAgICAgICAgICAgICAgICAgICJmbG9hdCAlcyA9ICVmIiwgaXRlbS5tTmFtZSwgaXRlbS51LmZsb2F0VmFsdWUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBrVHlwZURvdWJsZToKKyAgICAgICAgICAgICAgICB0bXAgPSBTdHJpbmdQcmludGYoCisgICAgICAgICAgICAgICAgICAgICAgICAiZG91YmxlICVzID0gJWYiLCBpdGVtLm1OYW1lLCBpdGVtLnUuZG91YmxlVmFsdWUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBrVHlwZVBvaW50ZXI6CisgICAgICAgICAgICAgICAgdG1wID0gU3RyaW5nUHJpbnRmKAorICAgICAgICAgICAgICAgICAgICAgICAgInZvaWQgKiVzID0gJXAiLCBpdGVtLm1OYW1lLCBpdGVtLnUucHRyVmFsdWUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBrVHlwZVN0cmluZzoKKyAgICAgICAgICAgICAgICB0bXAgPSBTdHJpbmdQcmludGYoCisgICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5nICVzID0gXCIlc1wiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ubU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnUuc3RyaW5nVmFsdWUtPmNfc3RyKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBrVHlwZU9iamVjdDoKKyAgICAgICAgICAgICAgICB0bXAgPSBTdHJpbmdQcmludGYoCisgICAgICAgICAgICAgICAgICAgICAgICAiUmVmQmFzZSAqJXMgPSAlcCIsIGl0ZW0ubU5hbWUsIGl0ZW0udS5yZWZWYWx1ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIGtUeXBlTWVzc2FnZToKKyAgICAgICAgICAgICAgICB0bXAgPSBTdHJpbmdQcmludGYoCisgICAgICAgICAgICAgICAgICAgICAgICAiQU1lc3NhZ2UgJXMgPSAlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm1OYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGljX2Nhc3Q8QU1lc3NhZ2UgKj4oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS51LnJlZlZhbHVlKS0+ZGVidWdTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGVudCArIHN0cmxlbihpdGVtLm1OYW1lKSArIDE0KS5jX3N0cigpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgVFJFU1BBU1MoKTsKKyAgICAgICAgfQorCisgICAgICAgIGFwcGVuZEluZGVudCgmcywgaW5kZW50KTsKKyAgICAgICAgcy5hcHBlbmQoIiAgIik7CisgICAgICAgIHMuYXBwZW5kKHRtcCk7CisgICAgICAgIHMuYXBwZW5kKCJcbiIpOworICAgIH0KKworICAgIGFwcGVuZEluZGVudCgmcywgaW5kZW50KTsKKyAgICBzLmFwcGVuZCgifSIpOworCisgICAgcmV0dXJuIHM7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FTdHJpbmcuY3BwIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BU3RyaW5nLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MWI3NmNmCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BU3RyaW5nLmNwcApAQCAtMCwwICsxLDMzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpbmNsdWRlIDxjdHlwZS5oPgorI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpbmNsdWRlICJBRGVidWcuaCIKKyNpbmNsdWRlICJBU3RyaW5nLmgiCisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworLy8gc3RhdGljCitjb25zdCBjaGFyICpBU3RyaW5nOjprRW1wdHlTdHJpbmcgPSAiIjsKKworQVN0cmluZzo6QVN0cmluZygpCisgICAgOiBtRGF0YSgoY2hhciAqKWtFbXB0eVN0cmluZyksCisgICAgICBtU2l6ZSgwKSwKKyAgICAgIG1BbGxvY1NpemUoMSkgeworfQorCitBU3RyaW5nOjpBU3RyaW5nKGNvbnN0IGNoYXIgKnMpCisgICAgOiBtRGF0YShOVUxMKSwKKyAgICAgIG1TaXplKDApLAorICAgICAgbUFsbG9jU2l6ZSgxKSB7CisgICAgc2V0VG8ocyk7Cit9CisKK0FTdHJpbmc6OkFTdHJpbmcoY29uc3QgY2hhciAqcywgc2l6ZV90IHNpemUpCisgICAgOiBtRGF0YShOVUxMKSwKKyAgICAgIG1TaXplKDApLAorICAgICAgbUFsbG9jU2l6ZSgxKSB7CisgICAgc2V0VG8ocywgc2l6ZSk7Cit9CisKK0FTdHJpbmc6OkFTdHJpbmcoY29uc3QgQVN0cmluZyAmZnJvbSkKKyAgICA6IG1EYXRhKE5VTEwpLAorICAgICAgbVNpemUoMCksCisgICAgICBtQWxsb2NTaXplKDEpIHsKKyAgICBzZXRUbyhmcm9tLCAwLCBmcm9tLnNpemUoKSk7Cit9CisKK0FTdHJpbmc6OkFTdHJpbmcoY29uc3QgQVN0cmluZyAmZnJvbSwgc2l6ZV90IG9mZnNldCwgc2l6ZV90IG4pCisgICAgOiBtRGF0YShOVUxMKSwKKyAgICAgIG1TaXplKDApLAorICAgICAgbUFsbG9jU2l6ZSgxKSB7CisgICAgc2V0VG8oZnJvbSwgb2Zmc2V0LCBuKTsKK30KKworQVN0cmluZzo6fkFTdHJpbmcoKSB7CisgICAgY2xlYXIoKTsKK30KKworQVN0cmluZyAmQVN0cmluZzo6b3BlcmF0b3I9KGNvbnN0IEFTdHJpbmcgJmZyb20pIHsKKyAgICBpZiAoJmZyb20gIT0gdGhpcykgeworICAgICAgICBzZXRUbyhmcm9tLCAwLCBmcm9tLnNpemUoKSk7CisgICAgfQorCisgICAgcmV0dXJuICp0aGlzOworfQorCitzaXplX3QgQVN0cmluZzo6c2l6ZSgpIGNvbnN0IHsKKyAgICByZXR1cm4gbVNpemU7Cit9CisKK2NvbnN0IGNoYXIgKkFTdHJpbmc6OmNfc3RyKCkgY29uc3QgeworICAgIHJldHVybiBtRGF0YTsKK30KKworYm9vbCBBU3RyaW5nOjplbXB0eSgpIGNvbnN0IHsKKyAgICByZXR1cm4gbVNpemUgPT0gMDsKK30KKwordm9pZCBBU3RyaW5nOjpzZXRUbyhjb25zdCBjaGFyICpzKSB7CisgICAgc2V0VG8ocywgc3RybGVuKHMpKTsKK30KKwordm9pZCBBU3RyaW5nOjpzZXRUbyhjb25zdCBjaGFyICpzLCBzaXplX3Qgc2l6ZSkgeworICAgIGNsZWFyKCk7CisgICAgYXBwZW5kKHMsIHNpemUpOworfQorCit2b2lkIEFTdHJpbmc6OnNldFRvKGNvbnN0IEFTdHJpbmcgJmZyb20sIHNpemVfdCBvZmZzZXQsIHNpemVfdCBuKSB7CisgICAgQ0hFQ0soJmZyb20gIT0gdGhpcyk7CisKKyAgICBjbGVhcigpOworICAgIHNldFRvKGZyb20ubURhdGEgKyBvZmZzZXQsIG4pOworfQorCit2b2lkIEFTdHJpbmc6OmNsZWFyKCkgeworICAgIGlmIChtRGF0YSAmJiBtRGF0YSAhPSBrRW1wdHlTdHJpbmcpIHsKKyAgICAgICAgZnJlZShtRGF0YSk7CisgICAgICAgIG1EYXRhID0gTlVMTDsKKyAgICB9CisKKyAgICBtRGF0YSA9IChjaGFyICopa0VtcHR5U3RyaW5nOworICAgIG1TaXplID0gMDsKKyAgICBtQWxsb2NTaXplID0gMTsKK30KKworc2l6ZV90IEFTdHJpbmc6Omhhc2goKSBjb25zdCB7CisgICAgc2l6ZV90IHggPSAwOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbVNpemU7ICsraSkgeworICAgICAgICB4ID0gKHggKiAzMSkgKyBtRGF0YVtpXTsKKyAgICB9CisKKyAgICByZXR1cm4geDsKK30KKworYm9vbCBBU3RyaW5nOjpvcGVyYXRvcj09KGNvbnN0IEFTdHJpbmcgJm90aGVyKSBjb25zdCB7CisgICAgcmV0dXJuIG1TaXplID09IG90aGVyLm1TaXplICYmICFtZW1jbXAobURhdGEsIG90aGVyLm1EYXRhLCBtU2l6ZSk7Cit9CisKK3ZvaWQgQVN0cmluZzo6dHJpbSgpIHsKKyAgICBtYWtlTXV0YWJsZSgpOworCisgICAgc2l6ZV90IGkgPSAwOworICAgIHdoaWxlIChpIDwgbVNpemUgJiYgaXNzcGFjZShtRGF0YVtpXSkpIHsKKyAgICAgICAgKytpOworICAgIH0KKworICAgIHNpemVfdCBqID0gbVNpemU7CisgICAgd2hpbGUgKGogPiBpICYmIGlzc3BhY2UobURhdGFbaiAtIDFdKSkgeworICAgICAgICAtLWo7CisgICAgfQorCisgICAgbWVtbW92ZShtRGF0YSwgJm1EYXRhW2ldLCBqIC0gaSk7CisgICAgbVNpemUgPSBqIC0gaTsKKyAgICBtRGF0YVttU2l6ZV0gPSAnXDAnOworfQorCit2b2lkIEFTdHJpbmc6OmVyYXNlKHNpemVfdCBzdGFydCwgc2l6ZV90IG4pIHsKKyAgICBDSEVDS19MVChzdGFydCwgbVNpemUpOworICAgIENIRUNLX0xFKHN0YXJ0ICsgbiwgbVNpemUpOworCisgICAgbWFrZU11dGFibGUoKTsKKworICAgIG1lbW1vdmUoJm1EYXRhW3N0YXJ0XSwgJm1EYXRhW3N0YXJ0ICsgbl0sIG1TaXplIC0gc3RhcnQgLSBuKTsKKyAgICBtU2l6ZSAtPSBuOworICAgIG1EYXRhW21TaXplXSA9ICdcMCc7Cit9CisKK3ZvaWQgQVN0cmluZzo6bWFrZU11dGFibGUoKSB7CisgICAgaWYgKG1EYXRhID09IGtFbXB0eVN0cmluZykgeworICAgICAgICBtRGF0YSA9IHN0cmR1cChrRW1wdHlTdHJpbmcpOworICAgIH0KK30KKwordm9pZCBBU3RyaW5nOjphcHBlbmQoY29uc3QgY2hhciAqcykgeworICAgIGFwcGVuZChzLCBzdHJsZW4ocykpOworfQorCit2b2lkIEFTdHJpbmc6OmFwcGVuZChjb25zdCBjaGFyICpzLCBzaXplX3Qgc2l6ZSkgeworICAgIG1ha2VNdXRhYmxlKCk7CisKKyAgICBpZiAobVNpemUgKyBzaXplICsgMSA+IG1BbGxvY1NpemUpIHsKKyAgICAgICAgbUFsbG9jU2l6ZSA9IChtQWxsb2NTaXplICsgc2l6ZSArIDMxKSAmIC0zMjsKKyAgICAgICAgbURhdGEgPSAoY2hhciAqKXJlYWxsb2MobURhdGEsIG1BbGxvY1NpemUpOworICAgICAgICBDSEVDSyhtRGF0YSAhPSBOVUxMKTsKKyAgICB9CisKKyAgICBtZW1jcHkoJm1EYXRhW21TaXplXSwgcywgc2l6ZSk7CisgICAgbVNpemUgKz0gc2l6ZTsKKyAgICBtRGF0YVttU2l6ZV0gPSAnXDAnOworfQorCit2b2lkIEFTdHJpbmc6OmFwcGVuZChjb25zdCBBU3RyaW5nICZmcm9tKSB7CisgICAgYXBwZW5kKGZyb20uY19zdHIoKSwgZnJvbS5zaXplKCkpOworfQorCit2b2lkIEFTdHJpbmc6OmFwcGVuZChjb25zdCBBU3RyaW5nICZmcm9tLCBzaXplX3Qgb2Zmc2V0LCBzaXplX3QgbikgeworICAgIGFwcGVuZChmcm9tLmNfc3RyKCkgKyBvZmZzZXQsIG4pOworfQorCit2b2lkIEFTdHJpbmc6OmFwcGVuZChpbnQgeCkgeworICAgIGNoYXIgc1sxNl07CisgICAgc3ByaW50ZihzLCAiJWQiLCB4KTsKKworICAgIGFwcGVuZChzKTsKK30KKwordm9pZCBBU3RyaW5nOjphcHBlbmQodW5zaWduZWQgeCkgeworICAgIGNoYXIgc1sxNl07CisgICAgc3ByaW50ZihzLCAiJXUiLCB4KTsKKworICAgIGFwcGVuZChzKTsKK30KKwordm9pZCBBU3RyaW5nOjphcHBlbmQobG9uZyB4KSB7CisgICAgY2hhciBzWzE2XTsKKyAgICBzcHJpbnRmKHMsICIlbGQiLCB4KTsKKworICAgIGFwcGVuZChzKTsKK30KKwordm9pZCBBU3RyaW5nOjphcHBlbmQodW5zaWduZWQgbG9uZyB4KSB7CisgICAgY2hhciBzWzE2XTsKKyAgICBzcHJpbnRmKHMsICIlbHUiLCB4KTsKKworICAgIGFwcGVuZChzKTsKK30KKwordm9pZCBBU3RyaW5nOjphcHBlbmQobG9uZyBsb25nIHgpIHsKKyAgICBjaGFyIHNbMzJdOworICAgIHNwcmludGYocywgIiVsbGQiLCB4KTsKKworICAgIGFwcGVuZChzKTsKK30KKwordm9pZCBBU3RyaW5nOjphcHBlbmQodW5zaWduZWQgbG9uZyBsb25nIHgpIHsKKyAgICBjaGFyIHNbMzJdOworICAgIHNwcmludGYocywgIiVsbHUiLCB4KTsKKworICAgIGFwcGVuZChzKTsKK30KKwordm9pZCBBU3RyaW5nOjphcHBlbmQoZmxvYXQgeCkgeworICAgIGNoYXIgc1sxNl07CisgICAgc3ByaW50ZihzLCAiJWYiLCB4KTsKKworICAgIGFwcGVuZChzKTsKK30KKwordm9pZCBBU3RyaW5nOjphcHBlbmQoZG91YmxlIHgpIHsKKyAgICBjaGFyIHNbMTZdOworICAgIHNwcmludGYocywgIiVmIiwgeCk7CisKKyAgICBhcHBlbmQocyk7Cit9CisKK3ZvaWQgQVN0cmluZzo6YXBwZW5kKHZvaWQgKngpIHsKKyAgICBjaGFyIHNbMTZdOworICAgIHNwcmludGYocywgIiVwIiwgeCk7CisKKyAgICBhcHBlbmQocyk7Cit9CisKK3NzaXplX3QgQVN0cmluZzo6ZmluZChjb25zdCBjaGFyICpzdWJzdHJpbmcsIHNpemVfdCBzdGFydCkgY29uc3QgeworICAgIENIRUNLX0xFKHN0YXJ0LCBzaXplKCkpOworCisgICAgY29uc3QgY2hhciAqbWF0Y2ggPSBzdHJzdHIobURhdGEgKyBzdGFydCwgc3Vic3RyaW5nKTsKKworICAgIGlmIChtYXRjaCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICByZXR1cm4gbWF0Y2ggLSBtRGF0YTsKK30KKwordm9pZCBBU3RyaW5nOjppbnNlcnQoY29uc3QgQVN0cmluZyAmZnJvbSwgc2l6ZV90IGluc2VydGlvblBvcykgeworICAgIGluc2VydChmcm9tLmNfc3RyKCksIGZyb20uc2l6ZSgpLCBpbnNlcnRpb25Qb3MpOworfQorCit2b2lkIEFTdHJpbmc6Omluc2VydChjb25zdCBjaGFyICpmcm9tLCBzaXplX3Qgc2l6ZSwgc2l6ZV90IGluc2VydGlvblBvcykgeworICAgIENIRUNLX0dFKGluc2VydGlvblBvcywgMHUpOworICAgIENIRUNLX0xFKGluc2VydGlvblBvcywgbVNpemUpOworCisgICAgbWFrZU11dGFibGUoKTsKKworICAgIGlmIChtU2l6ZSArIHNpemUgKyAxID4gbUFsbG9jU2l6ZSkgeworICAgICAgICBtQWxsb2NTaXplID0gKG1BbGxvY1NpemUgKyBzaXplICsgMzEpICYgLTMyOworICAgICAgICBtRGF0YSA9IChjaGFyICopcmVhbGxvYyhtRGF0YSwgbUFsbG9jU2l6ZSk7CisgICAgICAgIENIRUNLKG1EYXRhICE9IE5VTEwpOworICAgIH0KKworICAgIG1lbW1vdmUoJm1EYXRhW2luc2VydGlvblBvcyArIHNpemVdLAorICAgICAgICAgICAgJm1EYXRhW2luc2VydGlvblBvc10sIG1TaXplIC0gaW5zZXJ0aW9uUG9zICsgMSk7CisKKyAgICBtZW1jcHkoJm1EYXRhW2luc2VydGlvblBvc10sIGZyb20sIHNpemUpOworCisgICAgbVNpemUgKz0gc2l6ZTsKK30KKworYm9vbCBBU3RyaW5nOjpvcGVyYXRvcjwoY29uc3QgQVN0cmluZyAmb3RoZXIpIGNvbnN0IHsKKyAgICByZXR1cm4gY29tcGFyZShvdGhlcikgPCAwOworfQorCitib29sIEFTdHJpbmc6Om9wZXJhdG9yPihjb25zdCBBU3RyaW5nICZvdGhlcikgY29uc3QgeworICAgIHJldHVybiBjb21wYXJlKG90aGVyKSA+IDA7Cit9CisKK2ludCBBU3RyaW5nOjpjb21wYXJlKGNvbnN0IEFTdHJpbmcgJm90aGVyKSBjb25zdCB7CisgICAgcmV0dXJuIHN0cmNtcChtRGF0YSwgb3RoZXIubURhdGEpOworfQorCit2b2lkIEFTdHJpbmc6OnRvbG93ZXIoKSB7CisgICAgbWFrZU11dGFibGUoKTsKKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbVNpemU7ICsraSkgeworICAgICAgICBtRGF0YVtpXSA9IDo6dG9sb3dlcihtRGF0YVtpXSk7CisgICAgfQorfQorCitib29sIEFTdHJpbmc6OnN0YXJ0c1dpdGgoY29uc3QgY2hhciAqcHJlZml4KSBjb25zdCB7CisgICAgcmV0dXJuICFzdHJuY21wKG1EYXRhLCBwcmVmaXgsIHN0cmxlbihwcmVmaXgpKTsKK30KKworQVN0cmluZyBTdHJpbmdQcmludGYoY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pIHsKKyAgICB2YV9saXN0IGFwOworICAgIHZhX3N0YXJ0KGFwLCBmb3JtYXQpOworCisgICAgY2hhciAqYnVmZmVyOworICAgIHZhc3ByaW50ZigmYnVmZmVyLCBmb3JtYXQsIGFwKTsKKworICAgIHZhX2VuZChhcCk7CisKKyAgICBBU3RyaW5nIHJlc3VsdChidWZmZXIpOworCisgICAgZnJlZShidWZmZXIpOworICAgIGJ1ZmZlciA9IE5VTEw7CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FuZHJvaWQubWsgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FuZHJvaWQubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzVlZWE3ZQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQW5kcm9pZC5tawpAQCAtMCwwICsxLDM2IEBACitMT0NBTF9QQVRIOj0gJChjYWxsIG15LWRpcikKK2luY2x1ZGUgJChDTEVBUl9WQVJTKQorCitMT0NBTF9TUkNfRklMRVM6PSAgICAgICAgICAgICAgIFwKKyAgICBBQXRvbWl6ZXIuY3BwICAgICAgICAgICAgICAgXAorICAgIEFCdWZmZXIuY3BwICAgICAgICAgICAgICAgICBcCisgICAgQURlYnVnLmNwcCAgICAgICAgICAgICAgICAgIFwKKyAgICBBSGFuZGxlci5jcHAgICAgICAgICAgICAgICAgXAorICAgIEFMb29wZXIuY3BwICAgICAgICAgICAgICAgICBcCisgICAgQUxvb3BlclJvc3Rlci5jcHAgICAgICAgICAgIFwKKyAgICBBTWVzc2FnZS5jcHAgICAgICAgICAgICAgICAgXAorICAgIEFTdHJpbmcuY3BwICAgICAgICAgICAgICAgICBcCisgICAgYmFzZTY0LmNwcCAgICAgICAgICAgICAgICAgIFwKKyAgICBoZXhkdW1wLmNwcAorCitMT0NBTF9DX0lOQ0xVREVTOj0gXAorICAgIGZyYW1ld29ya3MvYmFzZS9pbmNsdWRlL21lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24KKworTE9DQUxfU0hBUkVEX0xJQlJBUklFUyA6PSBcCisgICAgICAgIGxpYmJpbmRlciAgICAgICAgIFwKKyAgICAgICAgbGlibWVkaWEgICAgICAgICAgXAorICAgICAgICBsaWJ1dGlscyAgICAgICAgICBcCisgICAgICAgIGxpYmN1dGlscyAgICAgICAgIFwKKyAgICAgICAgbGlidWkgICAgICAgICAgICAgXAorICAgICAgICBsaWJzb25pdm94ICAgICAgICBcCisgICAgICAgIGxpYnZvcmJpc2lkZWMgICAgIFwKKyAgICAgICAgbGlic3VyZmFjZWZsaW5nZXJfY2xpZW50IFwKKyAgICAgICAgbGliY2FtZXJhX2NsaWVudAorCitMT0NBTF9DRkxBR1MgKz0gLVduby1tdWx0aWNoYXIKKworTE9DQUxfTU9EVUxFOj0gbGlic3RhZ2VmcmlnaHRfZm91bmRhdGlvbgorCitMT0NBTF9QUkVMSU5LX01PRFVMRTo9IGZhbHNlCisKK2luY2x1ZGUgJChCVUlMRF9TSEFSRURfTElCUkFSWSkKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vYmFzZTY0LmNwcCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vYmFzZTY0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNWZiNGUwMQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vYmFzZTY0LmNwcApAQCAtMCwwICsxLDEzOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpbmNsdWRlICJiYXNlNjQuaCIKKworI2luY2x1ZGUgIkFCdWZmZXIuaCIKKyNpbmNsdWRlICJBRGVidWcuaCIKKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitzcDxBQnVmZmVyPiBkZWNvZGVCYXNlNjQoY29uc3QgQVN0cmluZyAmcykgeworICAgIGlmICgocy5zaXplKCkgJSA0KSAhPSAwKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHNpemVfdCBuID0gcy5zaXplKCk7CisgICAgc2l6ZV90IHBhZGRpbmcgPSAwOworICAgIGlmIChuID49IDEgJiYgcy5jX3N0cigpW24gLSAxXSA9PSAnPScpIHsKKyAgICAgICAgcGFkZGluZyA9IDE7CisKKyAgICAgICAgaWYgKG4gPj0gMiAmJiBzLmNfc3RyKClbbiAtIDJdID09ICc9JykgeworICAgICAgICAgICAgcGFkZGluZyA9IDI7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzaXplX3Qgb3V0TGVuID0gMyAqIHMuc2l6ZSgpIC8gNCAtIHBhZGRpbmc7CisKKyAgICBzcDxBQnVmZmVyPiBidWZmZXIgPSBuZXcgQUJ1ZmZlcihvdXRMZW4pOworCisgICAgdWludDhfdCAqb3V0ID0gYnVmZmVyLT5kYXRhKCk7CisgICAgc2l6ZV90IGogPSAwOworICAgIHVpbnQzMl90IGFjY3VtID0gMDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG47ICsraSkgeworICAgICAgICBjaGFyIGMgPSBzLmNfc3RyKClbaV07CisgICAgICAgIHVuc2lnbmVkIHZhbHVlOworICAgICAgICBpZiAoYyA+PSAnQScgJiYgYyA8PSAnWicpIHsKKyAgICAgICAgICAgIHZhbHVlID0gYyAtICdBJzsKKyAgICAgICAgfSBlbHNlIGlmIChjID49ICdhJyAmJiBjIDw9ICd6JykgeworICAgICAgICAgICAgdmFsdWUgPSAyNiArIGMgLSAnYSc7CisgICAgICAgIH0gZWxzZSBpZiAoYyA+PSAnMCcgJiYgYyA8PSAnOScpIHsKKyAgICAgICAgICAgIHZhbHVlID0gNTIgKyBjIC0gJzAnOworICAgICAgICB9IGVsc2UgaWYgKGMgPT0gJysnKSB7CisgICAgICAgICAgICB2YWx1ZSA9IDYyOworICAgICAgICB9IGVsc2UgaWYgKGMgPT0gJy8nKSB7CisgICAgICAgICAgICB2YWx1ZSA9IDYzOworICAgICAgICB9IGVsc2UgaWYgKGMgIT0gJz0nKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChpIDwgbiAtIHBhZGRpbmcpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdmFsdWUgPSAwOworICAgICAgICB9CisKKyAgICAgICAgYWNjdW0gPSAoYWNjdW0gPDwgNikgfCB2YWx1ZTsKKworICAgICAgICBpZiAoKChpICsgMSkgJSA0KSA9PSAwKSB7CisgICAgICAgICAgICBvdXRbaisrXSA9IChhY2N1bSA+PiAxNik7CisKKyAgICAgICAgICAgIGlmIChqIDwgb3V0TGVuKSB7IG91dFtqKytdID0gKGFjY3VtID4+IDgpICYgMHhmZjsgfSAKKyAgICAgICAgICAgIGlmIChqIDwgb3V0TGVuKSB7IG91dFtqKytdID0gYWNjdW0gJiAweGZmOyB9CisKKyAgICAgICAgICAgIGFjY3VtID0gMDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBidWZmZXI7Cit9CisKK3N0YXRpYyBjaGFyIGVuY29kZTZCaXQodW5zaWduZWQgeCkgeworICAgIGlmICh4IDw9IDI1KSB7CisgICAgICAgIHJldHVybiAnQScgKyB4OworICAgIH0gZWxzZSBpZiAoeCA8PSA1MSkgeworICAgICAgICByZXR1cm4gJ2EnICsgeCAtIDI2OworICAgIH0gZWxzZSBpZiAoeCA8PSA2MSkgeworICAgICAgICByZXR1cm4gJzAnICsgeCAtIDUyOworICAgIH0gZWxzZSBpZiAoeCA9PSA2MikgeworICAgICAgICByZXR1cm4gJysnOworICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiAnLyc7CisgICAgfQorfQorCit2b2lkIGVuY29kZUJhc2U2NCgKKyAgICAgICAgY29uc3Qgdm9pZCAqX2RhdGEsIHNpemVfdCBzaXplLCBBU3RyaW5nICpvdXQpIHsKKyAgICBvdXQtPmNsZWFyKCk7CisKKyAgICBjb25zdCB1aW50OF90ICpkYXRhID0gKGNvbnN0IHVpbnQ4X3QgKilfZGF0YTsKKworICAgIHNpemVfdCBpOworICAgIGZvciAoaSA9IDA7IGkgPCAoc2l6ZSAvIDMpICogMzsgaSArPSAzKSB7CisgICAgICAgIHVpbnQ4X3QgeDEgPSBkYXRhW2ldOworICAgICAgICB1aW50OF90IHgyID0gZGF0YVtpICsgMV07CisgICAgICAgIHVpbnQ4X3QgeDMgPSBkYXRhW2kgKyAyXTsKKworICAgICAgICBvdXQtPmFwcGVuZChlbmNvZGU2Qml0KHgxID4+IDIpKTsKKyAgICAgICAgb3V0LT5hcHBlbmQoZW5jb2RlNkJpdCgoeDEgPDwgNCB8IHgyID4+IDQpICYgMHgzZikpOworICAgICAgICBvdXQtPmFwcGVuZChlbmNvZGU2Qml0KCh4MiA8PCAyIHwgeDMgPj4gNikgJiAweDNmKSk7CisgICAgICAgIG91dC0+YXBwZW5kKGVuY29kZTZCaXQoeDMgJiAweDNmKSk7CisgICAgfQorICAgIHN3aXRjaCAoc2l6ZSAlIDMpIHsKKyAgICAgICAgY2FzZSAwOgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgMjoKKyAgICAgICAgeworICAgICAgICAgICAgdWludDhfdCB4MSA9IGRhdGFbaV07CisgICAgICAgICAgICB1aW50OF90IHgyID0gZGF0YVtpICsgMV07CisgICAgICAgICAgICBvdXQtPmFwcGVuZChlbmNvZGU2Qml0KHgxID4+IDIpKTsKKyAgICAgICAgICAgIG91dC0+YXBwZW5kKGVuY29kZTZCaXQoKHgxIDw8IDQgfCB4MiA+PiA0KSAmIDB4M2YpKTsKKyAgICAgICAgICAgIG91dC0+YXBwZW5kKGVuY29kZTZCaXQoKHgyIDw8IDIpICYgMHgzZikpOworICAgICAgICAgICAgb3V0LT5hcHBlbmQoJz0nKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgIHsKKyAgICAgICAgICAgIHVpbnQ4X3QgeDEgPSBkYXRhW2ldOworICAgICAgICAgICAgb3V0LT5hcHBlbmQoZW5jb2RlNkJpdCh4MSA+PiAyKSk7CisgICAgICAgICAgICBvdXQtPmFwcGVuZChlbmNvZGU2Qml0KCh4MSA8PCA0KSAmIDB4M2YpKTsKKyAgICAgICAgICAgIG91dC0+YXBwZW5kKCI9PSIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9mb3VuZGF0aW9uL2hleGR1bXAuY3BwIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9oZXhkdW1wLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTNiNTg3Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9oZXhkdW1wLmNwcApAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2luY2x1ZGUgImhleGR1bXAuaCIKKworI2luY2x1ZGUgIkFEZWJ1Zy5oIgorI2luY2x1ZGUgIkFTdHJpbmcuaCIKKworI2luY2x1ZGUgPGN0eXBlLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCit2b2lkIGhleGR1bXAoY29uc3Qgdm9pZCAqX2RhdGEsIHNpemVfdCBzaXplKSB7CisgICAgY29uc3QgdWludDhfdCAqZGF0YSA9IChjb25zdCB1aW50OF90ICopX2RhdGE7CisKKyAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKKyAgICB3aGlsZSAob2Zmc2V0IDwgc2l6ZSkgeworICAgICAgICBBU3RyaW5nIGxpbmU7CisKKyAgICAgICAgY2hhciB0bXBbMzJdOworICAgICAgICBzcHJpbnRmKHRtcCwgIiUwOGx4OiAgIiwgKHVuc2lnbmVkIGxvbmcpb2Zmc2V0KTsKKworICAgICAgICBsaW5lLmFwcGVuZCh0bXApOworCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMTY7ICsraSkgeworICAgICAgICAgICAgaWYgKGkgPT0gOCkgeworICAgICAgICAgICAgICAgIGxpbmUuYXBwZW5kKCcgJyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAob2Zmc2V0ICsgaSA+PSBzaXplKSB7CisgICAgICAgICAgICAgICAgbGluZS5hcHBlbmQoIiAgICIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBzcHJpbnRmKHRtcCwgIiUwMnggIiwgZGF0YVtvZmZzZXQgKyBpXSk7CisgICAgICAgICAgICAgICAgbGluZS5hcHBlbmQodG1wKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGxpbmUuYXBwZW5kKCcgJyk7CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAxNjsgKytpKSB7CisgICAgICAgICAgICBpZiAob2Zmc2V0ICsgaSA+PSBzaXplKSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChpc3ByaW50KGRhdGFbb2Zmc2V0ICsgaV0pKSB7CisgICAgICAgICAgICAgICAgbGluZS5hcHBlbmQoKGNoYXIpZGF0YVtvZmZzZXQgKyBpXSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGxpbmUuYXBwZW5kKCcuJyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBMT0coSU5GTykgPDwgbGluZTsKKworICAgICAgICBvZmZzZXQgKz0gMTY7CisgICAgfQorfQorCit9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9odHRwbGl2ZS9BbmRyb2lkLm1rIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaHR0cGxpdmUvQW5kcm9pZC5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZGUyYzgwCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaHR0cGxpdmUvQW5kcm9pZC5tawpAQCAtMCwwICsxLDIwIEBACitMT0NBTF9QQVRIOj0gJChjYWxsIG15LWRpcikKKworaW5jbHVkZSAkKENMRUFSX1ZBUlMpCisKK0xPQ0FMX1NSQ19GSUxFUzo9ICAgICAgIFwKKyAgICAgICAgTGl2ZVNvdXJjZS5jcHAgIFwKKyAgICAgICAgTTNVUGFyc2VyLmNwcCAgIFwKKworTE9DQUxfQ19JTkNMVURFUzo9IFwKKwkkKEpOSV9IX0lOQ0xVREUpIFwKKwkkKFRPUCkvZXh0ZXJuYWwvb3BlbmNvcmUvZXh0ZXJuX2xpYnNfdjIva2hyb25vcy9vcGVubWF4L2luY2x1ZGUgXAorICAgICAgICAkKFRPUCkvZnJhbWV3b3Jrcy9iYXNlL21lZGlhL2xpYnN0YWdlZnJpZ2h0CisKK0xPQ0FMX01PRFVMRTo9IGxpYnN0YWdlZnJpZ2h0X2h0dHBsaXZlCisKK2lmZXEgKCQoVEFSR0VUX0FSQ0gpLGFybSkKKyAgICBMT0NBTF9DRkxBR1MgKz0gLVduby1wc2FiaQorZW5kaWYKKworaW5jbHVkZSAkKEJVSUxEX1NUQVRJQ19MSUJSQVJZKQpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaHR0cGxpdmUvTGl2ZVNvdXJjZS5jcHAgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9odHRwbGl2ZS9MaXZlU291cmNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDFhZmM0Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaHR0cGxpdmUvTGl2ZVNvdXJjZS5jcHAKQEAgLTAsMCArMSwxODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjZGVmaW5lIExPR19UQUcgIkxpdmVTb3VyY2UiCisjaW5jbHVkZSA8dXRpbHMvTG9nLmg+CisKKyNpbmNsdWRlICJpbmNsdWRlL0xpdmVTb3VyY2UuaCIKKyNpbmNsdWRlICJpbmNsdWRlL00zVVBhcnNlci5oIgorI2luY2x1ZGUgImluY2x1ZGUvTnVIVFRQRGF0YVNvdXJjZS5oIgorCisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BQnVmZmVyLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFEZWJ1Zy5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK0xpdmVTb3VyY2U6OkxpdmVTb3VyY2UoY29uc3QgY2hhciAqdXJsKQorICAgIDogbVVSTCh1cmwpLAorICAgICAgbUluaXRDaGVjayhOT19JTklUKSwKKyAgICAgIG1QbGF5bGlzdEluZGV4KDApLAorICAgICAgbUxhc3RGZXRjaFRpbWVVcygtMSksCisgICAgICBtU291cmNlKG5ldyBOdUhUVFBEYXRhU291cmNlKSwKKyAgICAgIG1Tb3VyY2VTaXplKDApLAorICAgICAgbU9mZnNldEJpYXMoMCkgeworICAgIGlmIChzd2l0Y2hUb05leHQoKSkgeworICAgICAgICBtSW5pdENoZWNrID0gT0s7CisgICAgfQorfQorCitMaXZlU291cmNlOjp+TGl2ZVNvdXJjZSgpIHsKK30KKworc3RhdHVzX3QgTGl2ZVNvdXJjZTo6aW5pdENoZWNrKCkgY29uc3QgeworICAgIHJldHVybiBtSW5pdENoZWNrOworfQorCitib29sIExpdmVTb3VyY2U6OmxvYWRQbGF5bGlzdCgpIHsKKyAgICBtUGxheWxpc3QuY2xlYXIoKTsKKyAgICBtUGxheWxpc3RJbmRleCA9IDA7CisKKyAgICBzcDxBQnVmZmVyPiBidWZmZXI7CisgICAgc3RhdHVzX3QgZXJyID0gZmV0Y2hNM1UobVVSTC5jX3N0cigpLCAmYnVmZmVyKTsKKworICAgIGlmIChlcnIgIT0gT0spIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIG1QbGF5bGlzdCA9IG5ldyBNM1VQYXJzZXIobVVSTC5jX3N0cigpLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworCisgICAgaWYgKG1QbGF5bGlzdC0+aW5pdENoZWNrKCkgIT0gT0spIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghbVBsYXlsaXN0LT5tZXRhKCktPmZpbmRJbnQzMigKKyAgICAgICAgICAgICAgICAibWVkaWEtc2VxdWVuY2UiLCAmbUZpcnN0SXRlbVNlcXVlbmNlTnVtYmVyKSkgeworICAgICAgICBtRmlyc3RJdGVtU2VxdWVuY2VOdW1iZXIgPSAwOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgaW50NjRfdCBnZXROb3dVcygpIHsKKyAgICBzdHJ1Y3QgdGltZXZhbCB0djsKKyAgICBnZXR0aW1lb2ZkYXkoJnR2LCBOVUxMKTsKKworICAgIHJldHVybiAoaW50NjRfdCl0di50dl91c2VjICsgdHYudHZfc2VjICogMTAwMDAwMGxsOworfQorCitib29sIExpdmVTb3VyY2U6OnN3aXRjaFRvTmV4dCgpIHsKKyAgICBtT2Zmc2V0QmlhcyArPSBtU291cmNlU2l6ZTsKKyAgICBtU291cmNlU2l6ZSA9IDA7CisKKyAgICBpZiAobUxhc3RGZXRjaFRpbWVVcyA8IDAgfHwgZ2V0Tm93VXMoKSA+PSBtTGFzdEZldGNoVGltZVVzICsgMTUwMDAwMDBsbAorICAgICAgICB8fCBtUGxheWxpc3RJbmRleCA9PSBtUGxheWxpc3QtPnNpemUoKSkgeworICAgICAgICBpbnQzMl90IG5leHRTZXF1ZW5jZU51bWJlciA9CisgICAgICAgICAgICBtUGxheWxpc3RJbmRleCArIG1GaXJzdEl0ZW1TZXF1ZW5jZU51bWJlcjsKKworICAgICAgICBpZiAoIWxvYWRQbGF5bGlzdCgpKSB7CisgICAgICAgICAgICBMT0dFKCJmYWlsZWQgdG8gcmVsb2FkIHBsYXlsaXN0Iik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBpZiAobUxhc3RGZXRjaFRpbWVVcyA8IDApIHsKKyAgICAgICAgICAgIG1QbGF5bGlzdEluZGV4ID0gbVBsYXlsaXN0LT5zaXplKCkgLyAyOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKG5leHRTZXF1ZW5jZU51bWJlciA8IG1GaXJzdEl0ZW1TZXF1ZW5jZU51bWJlcgorICAgICAgICAgICAgICAgICAgICB8fCBuZXh0U2VxdWVuY2VOdW1iZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PSBtRmlyc3RJdGVtU2VxdWVuY2VOdW1iZXIgKyAoaW50MzJfdCltUGxheWxpc3QtPnNpemUoKSkgeworICAgICAgICAgICAgICAgIExPR0UoIkNhbm5vdCBmaW5kIHNlcXVlbmNlIG51bWJlciAlZCBpbiBuZXcgcGxheWxpc3QiLAorICAgICAgICAgICAgICAgICAgICAgbmV4dFNlcXVlbmNlTnVtYmVyKTsKKworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbVBsYXlsaXN0SW5kZXggPSBuZXh0U2VxdWVuY2VOdW1iZXIgLSBtRmlyc3RJdGVtU2VxdWVuY2VOdW1iZXI7CisgICAgICAgIH0KKworICAgICAgICBtTGFzdEZldGNoVGltZVVzID0gZ2V0Tm93VXMoKTsKKyAgICB9CisKKyAgICBBU3RyaW5nIHVyaTsKKyAgICBDSEVDSyhtUGxheWxpc3QtPml0ZW1BdChtUGxheWxpc3RJbmRleCwgJnVyaSkpOworICAgIExPR0koInN3aXRjaGluZyB0byAlcyIsIHVyaS5jX3N0cigpKTsKKworICAgIGlmIChtU291cmNlLT5jb25uZWN0KHVyaS5jX3N0cigpKSAhPSBPSworICAgICAgICAgICAgfHwgbVNvdXJjZS0+Z2V0U2l6ZSgmbVNvdXJjZVNpemUpICE9IE9LKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBtUGxheWxpc3RJbmRleCsrOworICAgIHJldHVybiB0cnVlOworfQorCitzc2l6ZV90IExpdmVTb3VyY2U6OnJlYWRBdChvZmZfdCBvZmZzZXQsIHZvaWQgKmRhdGEsIHNpemVfdCBzaXplKSB7CisgICAgQ0hFQ0sob2Zmc2V0ID49IG1PZmZzZXRCaWFzKTsKKyAgICBvZmZzZXQgLT0gbU9mZnNldEJpYXM7CisKKyAgICBpZiAob2Zmc2V0ID49IG1Tb3VyY2VTaXplKSB7CisgICAgICAgIENIRUNLX0VRKG9mZnNldCwgbVNvdXJjZVNpemUpOworCisgICAgICAgIG9mZnNldCAtPSBtU291cmNlU2l6ZTsKKyAgICAgICAgaWYgKCFzd2l0Y2hUb05leHQoKSkgeworICAgICAgICAgICAgcmV0dXJuIEVSUk9SX0VORF9PRl9TVFJFQU07CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzaXplX3QgbnVtUmVhZCA9IDA7CisgICAgd2hpbGUgKG51bVJlYWQgPCBzaXplKSB7CisgICAgICAgIHNzaXplX3QgbiA9IG1Tb3VyY2UtPnJlYWRBdCgKKyAgICAgICAgICAgICAgICBvZmZzZXQgKyBudW1SZWFkLCAodWludDhfdCAqKWRhdGEgKyBudW1SZWFkLCBzaXplIC0gbnVtUmVhZCk7CisKKyAgICAgICAgaWYgKG4gPD0gMCkgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBudW1SZWFkICs9IG47CisgICAgfQorCisgICAgcmV0dXJuIG51bVJlYWQ7Cit9CisKK3N0YXR1c190IExpdmVTb3VyY2U6OmZldGNoTTNVKGNvbnN0IGNoYXIgKnVybCwgc3A8QUJ1ZmZlcj4gKm91dCkgeworICAgICpvdXQgPSBOVUxMOworCisgICAgc3RhdHVzX3QgZXJyID0gbVNvdXJjZS0+Y29ubmVjdCh1cmwpOworCisgICAgaWYgKGVyciAhPSBPSykgeworICAgICAgICByZXR1cm4gZXJyOworICAgIH0KKworICAgIG9mZl90IHNpemU7CisgICAgZXJyID0gbVNvdXJjZS0+Z2V0U2l6ZSgmc2l6ZSk7CisKKyAgICBpZiAoZXJyICE9IE9LKSB7CisgICAgICAgIHJldHVybiBlcnI7CisgICAgfQorCisgICAgc3A8QUJ1ZmZlcj4gYnVmZmVyID0gbmV3IEFCdWZmZXIoc2l6ZSk7CisgICAgc2l6ZV90IG9mZnNldCA9IDA7CisgICAgd2hpbGUgKG9mZnNldCA8IChzaXplX3Qpc2l6ZSkgeworICAgICAgICBzc2l6ZV90IG4gPSBtU291cmNlLT5yZWFkQXQoCisgICAgICAgICAgICAgICAgb2Zmc2V0LCBidWZmZXItPmRhdGEoKSArIG9mZnNldCwgc2l6ZSAtIG9mZnNldCk7CisKKyAgICAgICAgaWYgKG4gPD0gMCkgeworICAgICAgICAgICAgcmV0dXJuIEVSUk9SX0lPOworICAgICAgICB9CisKKyAgICAgICAgb2Zmc2V0ICs9IG47CisgICAgfQorCisgICAgKm91dCA9IGJ1ZmZlcjsKKworICAgIHJldHVybiBPSzsKK30KKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2h0dHBsaXZlL00zVVBhcnNlci5jcHAgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9odHRwbGl2ZS9NM1VQYXJzZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkZDg2NDgKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9odHRwbGl2ZS9NM1VQYXJzZXIuY3BwCkBAIC0wLDAgKzEsMjMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2luY2x1ZGUgImluY2x1ZGUvTTNVUGFyc2VyLmgiCisKKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FNZXNzYWdlLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFEZWJ1Zy5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhRXJyb3JzLmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworTTNVUGFyc2VyOjpNM1VQYXJzZXIoCisgICAgICAgIGNvbnN0IGNoYXIgKmJhc2VVUkksIGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBzaXplKQorICAgIDogbUluaXRDaGVjayhOT19JTklUKSwKKyAgICAgIG1CYXNlVVJJKGJhc2VVUkkpLAorICAgICAgbUlzRXh0TTNVKGZhbHNlKSwKKyAgICAgIG1Jc1ZhcmlhbnRQbGF5bGlzdChmYWxzZSkgeworICAgIG1Jbml0Q2hlY2sgPSBwYXJzZShkYXRhLCBzaXplKTsKK30KKworTTNVUGFyc2VyOjp+TTNVUGFyc2VyKCkgeworfQorCitzdGF0dXNfdCBNM1VQYXJzZXI6OmluaXRDaGVjaygpIGNvbnN0IHsKKyAgICByZXR1cm4gbUluaXRDaGVjazsKK30KKworYm9vbCBNM1VQYXJzZXI6OmlzRXh0TTNVKCkgY29uc3QgeworICAgIHJldHVybiBtSXNFeHRNM1U7Cit9CisKK2Jvb2wgTTNVUGFyc2VyOjppc1ZhcmlhbnRQbGF5bGlzdCgpIGNvbnN0IHsKKyAgICByZXR1cm4gbUlzVmFyaWFudFBsYXlsaXN0OworfQorCitzcDxBTWVzc2FnZT4gTTNVUGFyc2VyOjptZXRhKCkgeworICAgIHJldHVybiBtTWV0YTsKK30KKworc2l6ZV90IE0zVVBhcnNlcjo6c2l6ZSgpIHsKKyAgICByZXR1cm4gbUl0ZW1zLnNpemUoKTsKK30KKworYm9vbCBNM1VQYXJzZXI6Oml0ZW1BdChzaXplX3QgaW5kZXgsIEFTdHJpbmcgKnVyaSwgc3A8QU1lc3NhZ2U+ICptZXRhKSB7CisgICAgdXJpLT5jbGVhcigpOworICAgIGlmIChtZXRhKSB7ICptZXRhID0gTlVMTDsgfQorCisgICAgaWYgKGluZGV4ID49IG1JdGVtcy5zaXplKCkpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgICp1cmkgPSBtSXRlbXMuaXRlbUF0KGluZGV4KS5tVVJJOworCisgICAgaWYgKG1ldGEpIHsKKyAgICAgICAgKm1ldGEgPSBtSXRlbXMuaXRlbUF0KGluZGV4KS5tTWV0YTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIGJvb2wgTWFrZVVSTChjb25zdCBjaGFyICpiYXNlVVJMLCBjb25zdCBjaGFyICp1cmwsIEFTdHJpbmcgKm91dCkgeworICAgIG91dC0+Y2xlYXIoKTsKKworICAgIGlmIChzdHJuY2FzZWNtcCgiaHR0cDovLyIsIGJhc2VVUkwsIDcpKSB7CisgICAgICAgIC8vIEJhc2UgVVJMIG11c3QgYmUgYWJzb2x1dGUKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGlmICghc3RybmNhc2VjbXAoImh0dHA6Ly8iLCB1cmwsIDcpKSB7CisgICAgICAgIC8vICJ1cmwiIGlzIGFscmVhZHkgYW4gYWJzb2x1dGUgVVJMLCBpZ25vcmUgYmFzZSBVUkwuCisgICAgICAgIG91dC0+c2V0VG8odXJsKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgc2l6ZV90IG4gPSBzdHJsZW4oYmFzZVVSTCk7CisgICAgaWYgKGJhc2VVUkxbbiAtIDFdID09ICcvJykgeworICAgICAgICBvdXQtPnNldFRvKGJhc2VVUkwpOworICAgICAgICBvdXQtPmFwcGVuZCh1cmwpOworICAgIH0gZWxzZSB7CisgICAgICAgIGNoYXIgKnNsYXNoUG9zID0gc3RycmNocihiYXNlVVJMLCAnLycpOworCisgICAgICAgIGlmIChzbGFzaFBvcyA+ICZiYXNlVVJMWzZdKSB7CisgICAgICAgICAgICBvdXQtPnNldFRvKGJhc2VVUkwsIHNsYXNoUG9zIC0gYmFzZVVSTCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBvdXQtPnNldFRvKGJhc2VVUkwpOworICAgICAgICB9CisKKyAgICAgICAgb3V0LT5hcHBlbmQoIi8iKTsKKyAgICAgICAgb3V0LT5hcHBlbmQodXJsKTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdHVzX3QgTTNVUGFyc2VyOjpwYXJzZShjb25zdCB2b2lkICpfZGF0YSwgc2l6ZV90IHNpemUpIHsKKyAgICBpbnQzMl90IGxpbmVObyA9IDA7CisKKyAgICBzcDxBTWVzc2FnZT4gaXRlbU1ldGE7CisKKyAgICBjb25zdCBjaGFyICpkYXRhID0gKGNvbnN0IGNoYXIgKilfZGF0YTsKKyAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKKyAgICB3aGlsZSAob2Zmc2V0IDwgc2l6ZSkgeworICAgICAgICBzaXplX3Qgb2Zmc2V0TEYgPSBvZmZzZXQ7CisgICAgICAgIHdoaWxlIChvZmZzZXRMRiA8IHNpemUgJiYgZGF0YVtvZmZzZXRMRl0gIT0gJ1xuJykgeworICAgICAgICAgICAgKytvZmZzZXRMRjsKKyAgICAgICAgfQorICAgICAgICBpZiAob2Zmc2V0TEYgPj0gc2l6ZSkgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBBU3RyaW5nIGxpbmU7CisgICAgICAgIGlmIChvZmZzZXRMRiA+IG9mZnNldCAmJiBkYXRhW29mZnNldExGIC0gMV0gPT0gJ1xyJykgeworICAgICAgICAgICAgbGluZS5zZXRUbygmZGF0YVtvZmZzZXRdLCBvZmZzZXRMRiAtIG9mZnNldCAtIDEpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbGluZS5zZXRUbygmZGF0YVtvZmZzZXRdLCBvZmZzZXRMRiAtIG9mZnNldCk7CisgICAgICAgIH0KKworICAgICAgICBMT0dJKCIjJXMjIiwgbGluZS5jX3N0cigpKTsKKworICAgICAgICBpZiAobGluZU5vID09IDAgJiYgbGluZSA9PSAiI0VYVE0zVSIpIHsKKyAgICAgICAgICAgIG1Jc0V4dE0zVSA9IHRydWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAobUlzRXh0TTNVKSB7CisgICAgICAgICAgICBzdGF0dXNfdCBlcnIgPSBPSzsKKworICAgICAgICAgICAgaWYgKGxpbmUuc3RhcnRzV2l0aCgiI0VYVC1YLVRBUkdFVERVUkFUSU9OIikpIHsKKyAgICAgICAgICAgICAgICBpZiAobUlzVmFyaWFudFBsYXlsaXN0KSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUl9NQUxGT1JNRUQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVyciA9IHBhcnNlTWV0YURhdGEobGluZSwgJm1NZXRhLCAidGFyZ2V0LWR1cmF0aW9uIik7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGxpbmUuc3RhcnRzV2l0aCgiI0VYVC1YLU1FRElBLVNFUVVFTkNFIikpIHsKKyAgICAgICAgICAgICAgICBpZiAobUlzVmFyaWFudFBsYXlsaXN0KSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUl9NQUxGT1JNRUQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVyciA9IHBhcnNlTWV0YURhdGEobGluZSwgJm1NZXRhLCAibWVkaWEtc2VxdWVuY2UiKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobGluZS5zdGFydHNXaXRoKCIjRVhUSU5GIikpIHsKKyAgICAgICAgICAgICAgICBpZiAobUlzVmFyaWFudFBsYXlsaXN0KSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUl9NQUxGT1JNRUQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVyciA9IHBhcnNlTWV0YURhdGEobGluZSwgJml0ZW1NZXRhLCAiZHVyYXRpb24iKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobGluZS5zdGFydHNXaXRoKCIjRVhULVgtU1RSRUFNLUlORiIpKSB7CisgICAgICAgICAgICAgICAgaWYgKG1NZXRhICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SX01BTEZPUk1FRDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbUlzVmFyaWFudFBsYXlsaXN0ID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGVyciAhPSBPSykgeworICAgICAgICAgICAgICAgIHJldHVybiBlcnI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoIWxpbmUuc3RhcnRzV2l0aCgiIyIpKSB7CisgICAgICAgICAgICBpZiAoIW1Jc1ZhcmlhbnRQbGF5bGlzdCkgeworICAgICAgICAgICAgICAgIGludDMyX3QgZHVyYXRpb25TZWNzOworICAgICAgICAgICAgICAgIGlmIChpdGVtTWV0YSA9PSBOVUxMCisgICAgICAgICAgICAgICAgICAgICAgICB8fCAhaXRlbU1ldGEtPmZpbmRJbnQzMigiZHVyYXRpb24iLCAmZHVyYXRpb25TZWNzKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JfTUFMRk9STUVEOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbUl0ZW1zLnB1c2goKTsKKyAgICAgICAgICAgIEl0ZW0gKml0ZW0gPSAmbUl0ZW1zLmVkaXRJdGVtQXQobUl0ZW1zLnNpemUoKSAtIDEpOworCisgICAgICAgICAgICBDSEVDSyhNYWtlVVJMKG1CYXNlVVJJLmNfc3RyKCksIGxpbmUuY19zdHIoKSwgJml0ZW0tPm1VUkkpKTsKKworICAgICAgICAgICAgaXRlbS0+bU1ldGEgPSBpdGVtTWV0YTsKKworICAgICAgICAgICAgaXRlbU1ldGEuY2xlYXIoKTsKKyAgICAgICAgfQorCisgICAgICAgIG9mZnNldCA9IG9mZnNldExGICsgMTsKKyAgICAgICAgKytsaW5lTm87CisgICAgfQorCisgICAgcmV0dXJuIE9LOworfQorCisvLyBzdGF0aWMKK3N0YXR1c190IE0zVVBhcnNlcjo6cGFyc2VNZXRhRGF0YSgKKyAgICAgICAgY29uc3QgQVN0cmluZyAmbGluZSwgc3A8QU1lc3NhZ2U+ICptZXRhLCBjb25zdCBjaGFyICprZXkpIHsKKyAgICBzc2l6ZV90IGNvbG9uUG9zID0gbGluZS5maW5kKCI6Iik7CisKKyAgICBpZiAoY29sb25Qb3MgPCAwKSB7CisgICAgICAgIHJldHVybiBFUlJPUl9NQUxGT1JNRUQ7CisgICAgfQorCisgICAgaW50MzJfdCB4OworICAgIHN0YXR1c190IGVyciA9IFBhcnNlSW50MzIobGluZS5jX3N0cigpICsgY29sb25Qb3MgKyAxLCAmeCk7CisKKyAgICBpZiAoZXJyICE9IE9LKSB7CisgICAgICAgIHJldHVybiBlcnI7CisgICAgfQorCisgICAgaWYgKG1ldGEtPmdldCgpID09IE5VTEwpIHsKKyAgICAgICAgKm1ldGEgPSBuZXcgQU1lc3NhZ2U7CisgICAgfQorICAgICgqbWV0YSktPnNldEludDMyKGtleSwgeCk7CisKKyAgICByZXR1cm4gT0s7Cit9CisKKy8vIHN0YXRpYworc3RhdHVzX3QgTTNVUGFyc2VyOjpQYXJzZUludDMyKGNvbnN0IGNoYXIgKnMsIGludDMyX3QgKngpIHsKKyAgICBjaGFyICplbmQ7CisgICAgbG9uZyBsdmFsID0gc3RydG9sKHMsICZlbmQsIDEwKTsKKworICAgIGlmIChlbmQgPT0gcyB8fCAoKmVuZCAhPSAnXDAnICYmICplbmQgIT0gJywnKSkgeworICAgICAgICByZXR1cm4gRVJST1JfTUFMRk9STUVEOworICAgIH0KKworICAgICp4ID0gKGludDMyX3QpbHZhbDsKKworICAgIHJldHVybiBPSzsKK30KKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2lkMy9BbmRyb2lkLm1rIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaWQzL0FuZHJvaWQubWsKaW5kZXggOTNmYWMxYy4uMjNjOGU0NCAxMDA2NDQKLS0tIGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaWQzL0FuZHJvaWQubWsKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaWQzL0FuZHJvaWQubWsKQEAgLTEsNSArMSwzIEBACi1pZmVxICgkKEJVSUxEX1dJVEhfRlVMTF9TVEFHRUZSSUdIVCksdHJ1ZSkKLQogTE9DQUxfUEFUSDo9ICQoY2FsbCBteS1kaXIpCiBpbmNsdWRlICQoQ0xFQVJfVkFSUykKIApAQCAtMjgsNSArMjYsMyBAQAogTE9DQUxfTU9EVUxFIDo9IHRlc3RpZDMKIAogaW5jbHVkZSAkKEJVSUxEX0VYRUNVVEFCTEUpCi0KLWVuZGlmCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9pbmNsdWRlL0FBQ0RlY29kZXIuaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2luY2x1ZGUvQUFDRGVjb2Rlci5oCmluZGV4IGYwOWFkZGQuLjIwMGY5M2MgMTAwNjQ0Ci0tLSBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2luY2x1ZGUvQUFDRGVjb2Rlci5oCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2luY2x1ZGUvQUFDRGVjb2Rlci5oCkBAIC0yNSw2ICsyNSw3IEBACiBuYW1lc3BhY2UgYW5kcm9pZCB7CiAKIHN0cnVjdCBNZWRpYUJ1ZmZlckdyb3VwOworc3RydWN0IE1ldGFEYXRhOwogCiBzdHJ1Y3QgQUFDRGVjb2RlciA6IHB1YmxpYyBNZWRpYVNvdXJjZSB7CiAgICAgQUFDRGVjb2Rlcihjb25zdCBzcDxNZWRpYVNvdXJjZT4gJnNvdXJjZSk7CkBAIC00MSw2ICs0Miw3IEBACiAgICAgdmlydHVhbCB+QUFDRGVjb2RlcigpOwogCiBwcml2YXRlOgorICAgIHNwPE1ldGFEYXRhPiAgICBtTWV0YTsKICAgICBzcDxNZWRpYVNvdXJjZT4gbVNvdXJjZTsKICAgICBib29sIG1TdGFydGVkOwogCkBAIC01MCw5ICs1MiwxMSBAQAogICAgIHZvaWQgKm1EZWNvZGVyQnVmOwogICAgIGludDY0X3QgbUFuY2hvclRpbWVVczsKICAgICBpbnQ2NF90IG1OdW1TYW1wbGVzT3V0cHV0OworICAgIHN0YXR1c190IG1Jbml0Q2hlY2s7CiAKICAgICBNZWRpYUJ1ZmZlciAqbUlucHV0QnVmZmVyOwogCisgICAgc3RhdHVzX3QgaW5pdENoZWNrKCk7CiAgICAgQUFDRGVjb2Rlcihjb25zdCBBQUNEZWNvZGVyICYpOwogICAgIEFBQ0RlY29kZXIgJm9wZXJhdG9yPShjb25zdCBBQUNEZWNvZGVyICYpOwogfTsKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2luY2x1ZGUvQUFDRW5jb2Rlci5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaW5jbHVkZS9BQUNFbmNvZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWNjNTMzZgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2luY2x1ZGUvQUFDRW5jb2Rlci5oCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIEFBQ19FTkNPREVSX0gKKyNkZWZpbmUgQUFDX0VOQ09ERVJfSAorCisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFTb3VyY2UuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZXRhRGF0YS5oPgorCitzdHJ1Y3QgVk9fQVVESU9fQ09ERUNBUEk7CitzdHJ1Y3QgVk9fTUVNX09QRVJBVE9SOworCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK3N0cnVjdCBNZWRpYUJ1ZmZlckdyb3VwOworCitjbGFzcyBBQUNFbmNvZGVyOiBwdWJsaWMgTWVkaWFTb3VyY2UgeworICAgIHB1YmxpYzoKKyAgICAgICAgQUFDRW5jb2Rlcihjb25zdCBzcDxNZWRpYVNvdXJjZT4gJnNvdXJjZSwgY29uc3Qgc3A8TWV0YURhdGE+ICZtZXRhKTsKKworICAgICAgICB2aXJ0dWFsIHN0YXR1c190IHN0YXJ0KE1ldGFEYXRhICpwYXJhbXMpOworICAgICAgICB2aXJ0dWFsIHN0YXR1c190IHN0b3AoKTsKKyAgICAgICAgdmlydHVhbCBzcDxNZXRhRGF0YT4gZ2V0Rm9ybWF0KCk7CisgICAgICAgIHZpcnR1YWwgc3RhdHVzX3QgcmVhZCgKKyAgICAgICAgICAgICAgICBNZWRpYUJ1ZmZlciAqKmJ1ZmZlciwgY29uc3QgUmVhZE9wdGlvbnMgKm9wdGlvbnMpOworCisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZpcnR1YWwgfkFBQ0VuY29kZXIoKTsKKworICAgIHByaXZhdGU6CisgICAgICAgIHNwPE1lZGlhU291cmNlPiAgIG1Tb3VyY2U7CisgICAgICAgIHNwPE1ldGFEYXRhPiAgICAgIG1NZXRhOworICAgICAgICBib29sICAgICAgICAgICAgICBtU3RhcnRlZDsKKyAgICAgICAgTWVkaWFCdWZmZXJHcm91cCAqbUJ1ZmZlckdyb3VwOworICAgICAgICBNZWRpYUJ1ZmZlciAgICAgICptSW5wdXRCdWZmZXI7CisgICAgICAgIHN0YXR1c190ICAgICAgICAgIG1Jbml0Q2hlY2s7CisgICAgICAgIGludDMyX3QgICAgICAgICAgIG1TYW1wbGVSYXRlOworICAgICAgICBpbnQzMl90ICAgICAgICAgICBtQ2hhbm5lbHM7CisgICAgICAgIGludDMyX3QgICAgICAgICAgIG1CaXRSYXRlOworICAgICAgICBpbnQzMl90ICAgICAgICAgICBtRnJhbWVDb3VudDsKKworICAgICAgICBpbnQ2NF90ICAgICAgICAgICBtQW5jaG9yVGltZVVzOworICAgICAgICBpbnQ2NF90ICAgICAgICAgICBtTnVtSW5wdXRTYW1wbGVzOworCisgICAgICAgIGVudW0geworICAgICAgICAgICAga051bVNhbXBsZXNQZXJGcmFtZSA9IDEwMjQsCisgICAgICAgIH07CisKKyAgICAgICAgaW50MTZfdCAgICAgICAgICAgbUlucHV0RnJhbWVba051bVNhbXBsZXNQZXJGcmFtZV07CisKKyAgICAgICAgdWludDhfdCAgICAgICAgICAgbUF1ZGlvU3BlY2lmaWNDb25maWdEYXRhWzJdOyAvLyBhdWlkbyBzcGVjaWZpYyBkYXRhCisgICAgICAgIHZvaWQgICAgICAgICAgICAgKm1FbmNvZGVySGFuZGxlOworICAgICAgICBWT19BVURJT19DT0RFQ0FQSSAqbUFwaUhhbmRsZTsKKyAgICAgICAgVk9fTUVNX09QRVJBVE9SICAqbU1lbU9wZXJhdG9yOworCisgICAgICAgIHN0YXR1c190IHNldEF1ZGlvU3BlY2lmaWNDb25maWdEYXRhKCk7CisgICAgICAgIHN0YXR1c190IGluaXRDaGVjaygpOworCisgICAgICAgIEFBQ0VuY29kZXImIG9wZXJhdG9yPShjb25zdCBBQUNFbmNvZGVyICZyaHMpOworICAgICAgICBBQUNFbmNvZGVyKGNvbnN0IEFBQ0VuY29kZXImIGNvcHkpOworCit9OworCit9CisKKyNlbmRpZiAgLy8jaWZuZGVmIEFBQ19FTkNPREVSX0gKKwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaW5jbHVkZS9BTVJOQkVuY29kZXIuaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2luY2x1ZGUvQU1STkJFbmNvZGVyLmgKaW5kZXggNzE2N2MwMC4uNzExNjBlNiAxMDA2NDQKLS0tIGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaW5jbHVkZS9BTVJOQkVuY29kZXIuaAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9pbmNsdWRlL0FNUk5CRW5jb2Rlci5oCkBAIC0xOSwxMyArMTksMTQgQEAKICNkZWZpbmUgQU1SX05CX0VOQ09ERVJfSF8KIAogI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhU291cmNlLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWV0YURhdGEuaD4KIAogbmFtZXNwYWNlIGFuZHJvaWQgewogCiBzdHJ1Y3QgTWVkaWFCdWZmZXJHcm91cDsKIAogc3RydWN0IEFNUk5CRW5jb2RlciA6IHB1YmxpYyBNZWRpYVNvdXJjZSB7Ci0gICAgQU1STkJFbmNvZGVyKGNvbnN0IHNwPE1lZGlhU291cmNlPiAmc291cmNlKTsKKyAgICBBTVJOQkVuY29kZXIoY29uc3Qgc3A8TWVkaWFTb3VyY2U+ICZzb3VyY2UsIGNvbnN0IHNwPE1ldGFEYXRhPiAmbWV0YSk7CiAKICAgICB2aXJ0dWFsIHN0YXR1c190IHN0YXJ0KE1ldGFEYXRhICpwYXJhbXMpOwogICAgIHZpcnR1YWwgc3RhdHVzX3Qgc3RvcCgpOwpAQCAtNDAsNiArNDEsNyBAQAogCiBwcml2YXRlOgogICAgIHNwPE1lZGlhU291cmNlPiBtU291cmNlOworICAgIHNwPE1ldGFEYXRhPiAgICBtTWV0YTsKICAgICBib29sIG1TdGFydGVkOwogCiAgICAgTWVkaWFCdWZmZXJHcm91cCAqbUJ1ZmZlckdyb3VwOwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaW5jbHVkZS9BTVJXQkVuY29kZXIuaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2luY2x1ZGUvQU1SV0JFbmNvZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjJkMTU1ZgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2luY2x1ZGUvQU1SV0JFbmNvZGVyLmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgQU1SX1dCX0VOQ09ERVJfSAorI2RlZmluZSBBTVJfV0JfRU5DT0RFUl9ICisKKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYVNvdXJjZS5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01ldGFEYXRhLmg+CisKK3N0cnVjdCBWT19BVURJT19DT0RFQ0FQSTsKK3N0cnVjdCBWT19NRU1fT1BFUkFUT1I7CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworc3RydWN0IE1lZGlhQnVmZmVyR3JvdXA7CisKK2NsYXNzIEFNUldCRW5jb2RlcjogcHVibGljIE1lZGlhU291cmNlIHsKKyAgICBwdWJsaWM6CisgICAgICAgIEFNUldCRW5jb2Rlcihjb25zdCBzcDxNZWRpYVNvdXJjZT4gJnNvdXJjZSwgY29uc3Qgc3A8TWV0YURhdGE+ICZtZXRhKTsKKworICAgICAgICB2aXJ0dWFsIHN0YXR1c190IHN0YXJ0KE1ldGFEYXRhICpwYXJhbXMpOworICAgICAgICB2aXJ0dWFsIHN0YXR1c190IHN0b3AoKTsKKyAgICAgICAgdmlydHVhbCBzcDxNZXRhRGF0YT4gZ2V0Rm9ybWF0KCk7CisgICAgICAgIHZpcnR1YWwgc3RhdHVzX3QgcmVhZCgKKyAgICAgICAgICAgICAgICBNZWRpYUJ1ZmZlciAqKmJ1ZmZlciwgY29uc3QgUmVhZE9wdGlvbnMgKm9wdGlvbnMpOworCisKKyAgICBwcm90ZWN0ZWQ6CisgICAgICAgIHZpcnR1YWwgfkFNUldCRW5jb2RlcigpOworCisgICAgcHJpdmF0ZToKKyAgICAgICAgc3A8TWVkaWFTb3VyY2U+ICAgbVNvdXJjZTsKKyAgICAgICAgc3A8TWV0YURhdGE+ICAgICAgbU1ldGE7CisgICAgICAgIGJvb2wgICAgICAgICAgICAgIG1TdGFydGVkOworICAgICAgICBNZWRpYUJ1ZmZlckdyb3VwICptQnVmZmVyR3JvdXA7CisgICAgICAgIE1lZGlhQnVmZmVyICAgICAgKm1JbnB1dEJ1ZmZlcjsKKyAgICAgICAgc3RhdHVzX3QgICAgICAgICAgbUluaXRDaGVjazsKKyAgICAgICAgaW50MzJfdCAgICAgICAgICAgbUJpdFJhdGU7CisgICAgICAgIHZvaWQgICAgICAgICAgICAgKm1FbmNvZGVySGFuZGxlOworICAgICAgICBWT19BVURJT19DT0RFQ0FQSSAqbUFwaUhhbmRsZTsKKyAgICAgICAgVk9fTUVNX09QRVJBVE9SICAqbU1lbU9wZXJhdG9yOworCisgICAgICAgIGludDY0X3QgbUFuY2hvclRpbWVVczsKKyAgICAgICAgaW50NjRfdCBtTnVtRnJhbWVzT3V0cHV0OworCisgICAgICAgIGludDE2X3QgbUlucHV0RnJhbWVbMzIwXTsKKyAgICAgICAgaW50MzJfdCBtTnVtSW5wdXRTYW1wbGVzOworCisgICAgICAgIHN0YXR1c190IGluaXRDaGVjaygpOworCisgICAgICAgIEFNUldCRW5jb2RlciYgb3BlcmF0b3I9KGNvbnN0IEFNUldCRW5jb2RlciAmcmhzKTsKKyAgICAgICAgQU1SV0JFbmNvZGVyKGNvbnN0IEFNUldCRW5jb2RlciYgY29weSk7CisKK307CisKK30KKworI2VuZGlmICAvLyNpZm5kZWYgQU1SX1dCX0VOQ09ERVJfSAorCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9pbmNsdWRlL0FSVFNQQ29udHJvbGxlci5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaW5jbHVkZS9BUlRTUENvbnRyb2xsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NWVmZDQxCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaW5jbHVkZS9BUlRTUENvbnRyb2xsZXIuaApAQCAtMCwwICsxLDUzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2lmbmRlZiBBX1JUU1BfQ09OVFJPTExFUl9IXworCisjZGVmaW5lIEFfUlRTUF9DT05UUk9MTEVSX0hfCisKKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FCYXNlLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFFeHRyYWN0b3IuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitzdHJ1Y3QgQUxvb3BlcjsKK3N0cnVjdCBNeUhhbmRsZXI7CisKK3N0cnVjdCBBUlRTUENvbnRyb2xsZXIgOiBwdWJsaWMgTWVkaWFFeHRyYWN0b3IgeworICAgIEFSVFNQQ29udHJvbGxlcihjb25zdCBzcDxBTG9vcGVyPiAmbG9vcGVyKTsKKworICAgIHN0YXR1c190IGNvbm5lY3QoY29uc3QgY2hhciAqdXJsKTsKKyAgICB2b2lkIGRpc2Nvbm5lY3QoKTsKKworICAgIHZpcnR1YWwgc2l6ZV90IGNvdW50VHJhY2tzKCk7CisgICAgdmlydHVhbCBzcDxNZWRpYVNvdXJjZT4gZ2V0VHJhY2soc2l6ZV90IGluZGV4KTsKKworICAgIHZpcnR1YWwgc3A8TWV0YURhdGE+IGdldFRyYWNrTWV0YURhdGEoCisgICAgICAgICAgICBzaXplX3QgaW5kZXgsIHVpbnQzMl90IGZsYWdzKTsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfkFSVFNQQ29udHJvbGxlcigpOworCitwcml2YXRlOgorICAgIHNwPEFMb29wZXI+IG1Mb29wZXI7CisgICAgc3A8TXlIYW5kbGVyPiBtSGFuZGxlcjsKKworICAgIERJU0FMTE9XX0VWSUxfQ09OU1RSVUNUT1JTKEFSVFNQQ29udHJvbGxlcik7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCisjZW5kaWYgIC8vIEFfUlRTUF9DT05UUk9MTEVSX0hfCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9pbmNsdWRlL0F3ZXNvbWVQbGF5ZXIuaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2luY2x1ZGUvQXdlc29tZVBsYXllci5oCmluZGV4IDk0NTU3NDMuLjhkMDg3N2MgMTAwNjQ0Ci0tLSBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2luY2x1ZGUvQXdlc29tZVBsYXllci5oCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2luY2x1ZGUvQXdlc29tZVBsYXllci5oCkBAIC0xOCwxMiArMTgsMTMgQEAKIAogI2RlZmluZSBBV0VTT01FX1BMQVlFUl9IXwogCisjaW5jbHVkZSAiTnVIVFRQRGF0YVNvdXJjZS5oIgogI2luY2x1ZGUgIlRpbWVkRXZlbnRRdWV1ZS5oIgogCiAjaW5jbHVkZSA8bWVkaWEvTWVkaWFQbGF5ZXJJbnRlcmZhY2UuaD4KICNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9EYXRhU291cmNlLmg+Ci0jaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvSFRUUERhdGFTb3VyY2UuaD4KICNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9PTVhDbGllbnQuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9UaW1lU291cmNlLmg+CiAjaW5jbHVkZSA8dXRpbHMvdGhyZWFkcy5oPgogCiBuYW1lc3BhY2UgYW5kcm9pZCB7CkBAIC0zMyw4ICszNCwxMCBAQAogc3RydWN0IE1lZGlhQnVmZmVyOwogc3RydWN0IE1lZGlhRXh0cmFjdG9yOwogc3RydWN0IE1lZGlhU291cmNlOwotc3RydWN0IFByZWZldGNoZXI7Ci1zdHJ1Y3QgVGltZVNvdXJjZTsKK3N0cnVjdCBOdUNhY2hlZFNvdXJjZTI7CisKK3N0cnVjdCBBTG9vcGVyOworc3RydWN0IEFSVFNQQ29udHJvbGxlcjsKIAogc3RydWN0IEF3ZXNvbWVSZW5kZXJlciA6IHB1YmxpYyBSZWZCYXNlIHsKICAgICBBd2Vzb21lUmVuZGVyZXIoKSB7fQpAQCAtOTgsNiArMTAxLDkgQEAKICAgICAgICAgUFJFUEFSRUQgICAgICAgICAgICA9IDE2LAogICAgICAgICBBVF9FT1MgICAgICAgICAgICAgID0gMzIsCiAgICAgICAgIFBSRVBBUkVfQ0FOQ0VMTEVEICAgPSA2NCwKKyAgICAgICAgQ0FDSEVfVU5ERVJSVU4gICAgICA9IDEyOCwKKyAgICAgICAgQVVESU9fQVRfRU9TICAgICAgICA9IDI1NiwKKyAgICAgICAgVklERU9fQVRfRU9TICAgICAgICA9IDUxMiwKICAgICB9OwogCiAgICAgbXV0YWJsZSBNdXRleCBtTG9jazsKQEAgLTExMSw2ICsxMTcsNyBAQAogICAgIHNwPElTdXJmYWNlPiBtSVN1cmZhY2U7CiAgICAgc3A8TWVkaWFQbGF5ZXJCYXNlOjpBdWRpb1Npbms+IG1BdWRpb1Npbms7CiAKKyAgICBTeXN0ZW1UaW1lU291cmNlIG1TeXN0ZW1UaW1lU291cmNlOwogICAgIFRpbWVTb3VyY2UgKm1UaW1lU291cmNlOwogCiAgICAgU3RyaW5nOCBtVXJpOwpAQCAtMTY2LDggKzE3MywxMSBAQAogICAgIE1lZGlhQnVmZmVyICptTGFzdFZpZGVvQnVmZmVyOwogICAgIE1lZGlhQnVmZmVyICptVmlkZW9CdWZmZXI7CiAKLSAgICBzcDxQcmVmZXRjaGVyPiBtUHJlZmV0Y2hlcjsKLSAgICBzcDxIVFRQRGF0YVNvdXJjZT4gbUNvbm5lY3RpbmdEYXRhU291cmNlOworICAgIHNwPE51SFRUUERhdGFTb3VyY2U+IG1Db25uZWN0aW5nRGF0YVNvdXJjZTsKKyAgICBzcDxOdUNhY2hlZFNvdXJjZTI+IG1DYWNoZWRTb3VyY2U7CisKKyAgICBzcDxBTG9vcGVyPiBtTG9vcGVyOworICAgIHNwPEFSVFNQQ29udHJvbGxlcj4gbVJUU1BDb250cm9sbGVyOwogCiAgICAgc3RydWN0IFN1c3BlbnNpb25TdGF0ZSB7CiAgICAgICAgIFN0cmluZzggbVVyaTsKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2luY2x1ZGUvTGl2ZVNvdXJjZS5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaW5jbHVkZS9MaXZlU291cmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzU1NTA4YwotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2luY2x1ZGUvTGl2ZVNvdXJjZS5oCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIExJVkVfU09VUkNFX0hfCisKKyNkZWZpbmUgTElWRV9TT1VSQ0VfSF8KKworI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUJhc2UuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FTdHJpbmcuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9EYXRhU291cmNlLmg+CisjaW5jbHVkZSA8dXRpbHMvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworc3RydWN0IEFCdWZmZXI7CitzdHJ1Y3QgTnVIVFRQRGF0YVNvdXJjZTsKK3N0cnVjdCBNM1VQYXJzZXI7CisKK3N0cnVjdCBMaXZlU291cmNlIDogcHVibGljIERhdGFTb3VyY2UgeworICAgIExpdmVTb3VyY2UoY29uc3QgY2hhciAqdXJsKTsKKworICAgIHZpcnR1YWwgc3RhdHVzX3QgaW5pdENoZWNrKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIHNzaXplX3QgcmVhZEF0KG9mZl90IG9mZnNldCwgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUpOworCisgICAgdmlydHVhbCB1aW50MzJfdCBmbGFncygpIHsKKyAgICAgICAgcmV0dXJuIGtXYW50c1ByZWZldGNoaW5nOworICAgIH0KKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfkxpdmVTb3VyY2UoKTsKKworcHJpdmF0ZToKKyAgICBBU3RyaW5nIG1VUkw7CisgICAgc3RhdHVzX3QgbUluaXRDaGVjazsKKworICAgIHNwPE0zVVBhcnNlcj4gbVBsYXlsaXN0OworICAgIGludDMyX3QgbUZpcnN0SXRlbVNlcXVlbmNlTnVtYmVyOworICAgIHNpemVfdCBtUGxheWxpc3RJbmRleDsKKyAgICBpbnQ2NF90IG1MYXN0RmV0Y2hUaW1lVXM7CisKKyAgICBzcDxOdUhUVFBEYXRhU291cmNlPiBtU291cmNlOworICAgIG9mZl90IG1Tb3VyY2VTaXplOworICAgIG9mZl90IG1PZmZzZXRCaWFzOworCisgICAgc3RhdHVzX3QgZmV0Y2hNM1UoY29uc3QgY2hhciAqdXJsLCBzcDxBQnVmZmVyPiAqYnVmZmVyKTsKKworICAgIGJvb2wgc3dpdGNoVG9OZXh0KCk7CisgICAgYm9vbCBsb2FkUGxheWxpc3QoKTsKKworICAgIERJU0FMTE9XX0VWSUxfQ09OU1RSVUNUT1JTKExpdmVTb3VyY2UpOworfTsKKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKKworI2VuZGlmICAvLyBMSVZFX1NPVVJDRV9IXwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaW5jbHVkZS9NM1VQYXJzZXIuaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2luY2x1ZGUvTTNVUGFyc2VyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY1NTNkZQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2luY2x1ZGUvTTNVUGFyc2VyLmgKQEAgLTAsMCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgTTNVX1BBUlNFUl9IXworCisjZGVmaW5lIE0zVV9QQVJTRVJfSF8KKworI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUJhc2UuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FNZXNzYWdlLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BU3RyaW5nLmg+CisjaW5jbHVkZSA8dXRpbHMvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworc3RydWN0IE0zVVBhcnNlciA6IHB1YmxpYyBSZWZCYXNlIHsKKyAgICBNM1VQYXJzZXIoY29uc3QgY2hhciAqYmFzZVVSSSwgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUpOworCisgICAgc3RhdHVzX3QgaW5pdENoZWNrKCkgY29uc3Q7CisKKyAgICBib29sIGlzRXh0TTNVKCkgY29uc3Q7CisgICAgYm9vbCBpc1ZhcmlhbnRQbGF5bGlzdCgpIGNvbnN0OworCisgICAgc3A8QU1lc3NhZ2U+IG1ldGEoKTsKKworICAgIHNpemVfdCBzaXplKCk7CisgICAgYm9vbCBpdGVtQXQoc2l6ZV90IGluZGV4LCBBU3RyaW5nICp1cmksIHNwPEFNZXNzYWdlPiAqbWV0YSA9IE5VTEwpOworCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+TTNVUGFyc2VyKCk7CisKK3ByaXZhdGU6CisgICAgc3RydWN0IEl0ZW0geworICAgICAgICBBU3RyaW5nIG1VUkk7CisgICAgICAgIHNwPEFNZXNzYWdlPiBtTWV0YTsKKyAgICB9OworCisgICAgc3RhdHVzX3QgbUluaXRDaGVjazsKKworICAgIEFTdHJpbmcgbUJhc2VVUkk7CisgICAgYm9vbCBtSXNFeHRNM1U7CisgICAgYm9vbCBtSXNWYXJpYW50UGxheWxpc3Q7CisKKyAgICBzcDxBTWVzc2FnZT4gbU1ldGE7CisgICAgVmVjdG9yPEl0ZW0+IG1JdGVtczsKKworICAgIHN0YXR1c190IHBhcnNlKGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBzaXplKTsKKworICAgIHN0YXRpYyBzdGF0dXNfdCBwYXJzZU1ldGFEYXRhKAorICAgICAgICAgICAgY29uc3QgQVN0cmluZyAmbGluZSwgc3A8QU1lc3NhZ2U+ICptZXRhLCBjb25zdCBjaGFyICprZXkpOworCisgICAgc3RhdGljIHN0YXR1c190IFBhcnNlSW50MzIoY29uc3QgY2hhciAqcywgaW50MzJfdCAqeCk7CisKKyAgICBESVNBTExPV19FVklMX0NPTlNUUlVDVE9SUyhNM1VQYXJzZXIpOworfTsKKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKKworI2VuZGlmICAvLyBNM1VfUEFSU0VSX0hfCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9pbmNsdWRlL01QM0RlY29kZXIuaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2luY2x1ZGUvTVAzRGVjb2Rlci5oCmluZGV4IDg4YWE0YzYuLjQwODZmYjYgMTAwNjQ0Ci0tLSBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2luY2x1ZGUvTVAzRGVjb2Rlci5oCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2luY2x1ZGUvTVAzRGVjb2Rlci5oCkBAIC00Miw2ICs0Miw5IEBACiAKIHByaXZhdGU6CiAgICAgc3A8TWVkaWFTb3VyY2U+IG1Tb3VyY2U7CisgICAgc3A8TWV0YURhdGE+IG1NZXRhOworICAgIGludDMyX3QgbU51bUNoYW5uZWxzOworCiAgICAgYm9vbCBtU3RhcnRlZDsKIAogICAgIE1lZGlhQnVmZmVyR3JvdXAgKm1CdWZmZXJHcm91cDsKQEAgLTQ5LDEwICs1MiwxMiBAQAogICAgIHRQVk1QM0RlY29kZXJFeHRlcm5hbCAqbUNvbmZpZzsKICAgICB2b2lkICptRGVjb2RlckJ1ZjsKICAgICBpbnQ2NF90IG1BbmNob3JUaW1lVXM7Ci0gICAgaW50NjRfdCBtTnVtU2FtcGxlc091dHB1dDsKKyAgICBpbnQ2NF90IG1OdW1GcmFtZXNPdXRwdXQ7CiAKICAgICBNZWRpYUJ1ZmZlciAqbUlucHV0QnVmZmVyOwogCisgICAgdm9pZCBpbml0KCk7CisKICAgICBNUDNEZWNvZGVyKGNvbnN0IE1QM0RlY29kZXIgJik7CiAgICAgTVAzRGVjb2RlciAmb3BlcmF0b3I9KGNvbnN0IE1QM0RlY29kZXIgJik7CiB9OwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaW5jbHVkZS9NUEVHMlRTRXh0cmFjdG9yLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9pbmNsdWRlL01QRUcyVFNFeHRyYWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOTY5NzNiCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaW5jbHVkZS9NUEVHMlRTRXh0cmFjdG9yLmgKQEAgLTAsMCArMSw1NCBAQAorI2lmbmRlZiBNUEVHMl9UU19FWFRSQUNUT1JfSF8KKworI2RlZmluZSBNUEVHMl9UU19FWFRSQUNUT1JfSF8KKworI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUJhc2UuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYUV4dHJhY3Rvci5oPgorI2luY2x1ZGUgPHV0aWxzL3RocmVhZHMuaD4KKyNpbmNsdWRlIDx1dGlscy9WZWN0b3IuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitzdHJ1Y3QgQW5vdGhlclBhY2tldFNvdXJjZTsKK3N0cnVjdCBBVFNQYXJzZXI7CitzdHJ1Y3QgRGF0YVNvdXJjZTsKK3N0cnVjdCBNUEVHMlRTU291cmNlOworc3RydWN0IFN0cmluZzg7CisKK3N0cnVjdCBNUEVHMlRTRXh0cmFjdG9yIDogcHVibGljIE1lZGlhRXh0cmFjdG9yIHsKKyAgICBNUEVHMlRTRXh0cmFjdG9yKGNvbnN0IHNwPERhdGFTb3VyY2U+ICZzb3VyY2UpOworCisgICAgdmlydHVhbCBzaXplX3QgY291bnRUcmFja3MoKTsKKyAgICB2aXJ0dWFsIHNwPE1lZGlhU291cmNlPiBnZXRUcmFjayhzaXplX3QgaW5kZXgpOworICAgIHZpcnR1YWwgc3A8TWV0YURhdGE+IGdldFRyYWNrTWV0YURhdGEoc2l6ZV90IGluZGV4LCB1aW50MzJfdCBmbGFncyk7CisKKyAgICB2aXJ0dWFsIHNwPE1ldGFEYXRhPiBnZXRNZXRhRGF0YSgpOworCisgICAgdmlydHVhbCB1aW50MzJfdCBmbGFncygpIGNvbnN0IHsKKyAgICAgICAgcmV0dXJuIENBTl9QQVVTRTsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIHN0cnVjdCBNUEVHMlRTU291cmNlOworCisgICAgTXV0ZXggbUxvY2s7CisKKyAgICBzcDxEYXRhU291cmNlPiBtRGF0YVNvdXJjZTsKKyAgICBzcDxBVFNQYXJzZXI+IG1QYXJzZXI7CisKKyAgICBWZWN0b3I8c3A8QW5vdGhlclBhY2tldFNvdXJjZT4gPiBtU291cmNlSW1wbHM7CisKKyAgICBvZmZfdCBtT2Zmc2V0OworCisgICAgdm9pZCBpbml0KCk7CisgICAgc3RhdHVzX3QgZmVlZE1vcmUoKTsKKworICAgIERJU0FMTE9XX0VWSUxfQ09OU1RSVUNUT1JTKE1QRUcyVFNFeHRyYWN0b3IpOworfTsKKworYm9vbCBTbmlmZk1QRUcyVFMoCisgICAgICAgIGNvbnN0IHNwPERhdGFTb3VyY2U+ICZzb3VyY2UsIFN0cmluZzggKm1pbWVUeXBlLCBmbG9hdCAqY29uZmlkZW5jZSk7CisKK30gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCisKKyNlbmRpZiAgLy8gTVBFRzJfVFNfRVhUUkFDVE9SX0hfCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9pbmNsdWRlL051Q2FjaGVkU291cmNlMi5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaW5jbHVkZS9OdUNhY2hlZFNvdXJjZTIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYTIwYzE2Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaW5jbHVkZS9OdUNhY2hlZFNvdXJjZTIuaApAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2lmbmRlZiBOVV9DQUNIRURfU09VUkNFXzJfSF8KKworI2RlZmluZSBOVV9DQUNIRURfU09VUkNFXzJfSF8KKworI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUJhc2UuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FIYW5kbGVyUmVmbGVjdG9yLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvRGF0YVNvdXJjZS5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK3N0cnVjdCBBTG9vcGVyOworc3RydWN0IFBhZ2VDYWNoZTsKKworc3RydWN0IE51Q2FjaGVkU291cmNlMiA6IHB1YmxpYyBEYXRhU291cmNlIHsKKyAgICBOdUNhY2hlZFNvdXJjZTIoY29uc3Qgc3A8RGF0YVNvdXJjZT4gJnNvdXJjZSk7CisKKyAgICB2aXJ0dWFsIHN0YXR1c190IGluaXRDaGVjaygpIGNvbnN0OworCisgICAgdmlydHVhbCBzc2l6ZV90IHJlYWRBdChvZmZfdCBvZmZzZXQsIHZvaWQgKmRhdGEsIHNpemVfdCBzaXplKTsKKworICAgIHZpcnR1YWwgc3RhdHVzX3QgZ2V0U2l6ZShvZmZfdCAqc2l6ZSk7CisgICAgdmlydHVhbCB1aW50MzJfdCBmbGFncygpOworCisgICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCisgICAgc2l6ZV90IGNhY2hlZFNpemUoKTsKKyAgICBzaXplX3QgYXBwcm94RGF0YVJlbWFpbmluZyhib29sICplb3MpOworCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+TnVDYWNoZWRTb3VyY2UyKCk7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIHN0cnVjdCBBSGFuZGxlclJlZmxlY3RvcjxOdUNhY2hlZFNvdXJjZTI+OworCisgICAgZW51bSB7CisgICAgICAgIGtQYWdlU2l6ZSAgICAgICAgICAgID0gNjU1MzYsCisgICAgICAgIGtIaWdoV2F0ZXJUaHJlc2hvbGQgID0gNSAqIDEwMjQgKiAxMDI0LAorICAgICAgICBrTG93V2F0ZXJUaHJlc2hvbGQgICA9IDUxMiAqIDEwMjQsCisKKyAgICAgICAgLy8gUmVhZCBkYXRhIGFmdGVyIGEgMTUgc2VjIHRpbWVvdXQgd2hldGhlciB3ZSdyZSBhY3RpdmVseQorICAgICAgICAvLyBmZXRjaGluZyBvciBub3QuCisgICAgICAgIGtLZWVwQWxpdmVJbnRlcnZhbFVzID0gMTUwMDAwMDAsCisgICAgfTsKKworICAgIGVudW0geworICAgICAgICBrV2hhdEZldGNoTW9yZSAgPSAnZmV0YycsCisgICAgICAgIGtXaGF0UmVhZCAgICAgICA9ICdyZWFkJywKKyAgICB9OworCisgICAgc3A8RGF0YVNvdXJjZT4gbVNvdXJjZTsKKyAgICBzcDxBSGFuZGxlclJlZmxlY3RvcjxOdUNhY2hlZFNvdXJjZTI+ID4gbVJlZmxlY3RvcjsKKyAgICBzcDxBTG9vcGVyPiBtTG9vcGVyOworCisgICAgTXV0ZXggbVNlcmlhbGl6ZXI7CisgICAgTXV0ZXggbUxvY2s7CisgICAgQ29uZGl0aW9uIG1Db25kaXRpb247CisKKyAgICBQYWdlQ2FjaGUgKm1DYWNoZTsKKyAgICBvZmZfdCBtQ2FjaGVPZmZzZXQ7CisgICAgc3RhdHVzX3QgbUZpbmFsU3RhdHVzOworICAgIG9mZl90IG1MYXN0QWNjZXNzUG9zOworICAgIHNwPEFNZXNzYWdlPiBtQXN5bmNSZXN1bHQ7CisgICAgYm9vbCBtRmV0Y2hpbmc7CisgICAgaW50NjRfdCBtTGFzdEZldGNoVGltZVVzOworCisgICAgdm9pZCBvbk1lc3NhZ2VSZWNlaXZlZChjb25zdCBzcDxBTWVzc2FnZT4gJm1zZyk7CisgICAgdm9pZCBvbkZldGNoKCk7CisgICAgdm9pZCBvblJlYWQoY29uc3Qgc3A8QU1lc3NhZ2U+ICZtc2cpOworCisgICAgdm9pZCBmZXRjaEludGVybmFsKCk7CisgICAgc3NpemVfdCByZWFkSW50ZXJuYWwob2ZmX3Qgb2Zmc2V0LCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSk7CisgICAgc3RhdHVzX3Qgc2Vla0ludGVybmFsX2wob2ZmX3Qgb2Zmc2V0KTsKKworICAgIHNpemVfdCBhcHByb3hEYXRhUmVtYWluaW5nX2woYm9vbCAqZW9zKTsKKyAgICB2b2lkIHJlc3RhcnRQcmVmZXRjaGVySWZOZWNlc3NhcnlfbCgpOworCisgICAgRElTQUxMT1dfRVZJTF9DT05TVFJVQ1RPUlMoTnVDYWNoZWRTb3VyY2UyKTsKK307CisKK30gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCisKKyNlbmRpZiAgLy8gTlVfQ0FDSEVEX1NPVVJDRV8yX0hfCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9pbmNsdWRlL051SFRUUERhdGFTb3VyY2UuaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2luY2x1ZGUvTnVIVFRQRGF0YVNvdXJjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1OTNhOTEKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9pbmNsdWRlL051SFRUUERhdGFTb3VyY2UuaApAQCAtMCwwICsxLDczIEBACisjaWZuZGVmIE5VX0hUVFBfREFUQV9TT1VSQ0VfSF8KKworI2RlZmluZSBOVV9IVFRQX0RBVEFfU09VUkNFX0hfCisKKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9EYXRhU291cmNlLmg+CisjaW5jbHVkZSA8dXRpbHMvU3RyaW5nOC5oPgorI2luY2x1ZGUgPHV0aWxzL3RocmVhZHMuaD4KKworI2luY2x1ZGUgIkhUVFBTdHJlYW0uaCIKKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitzdHJ1Y3QgTnVIVFRQRGF0YVNvdXJjZSA6IHB1YmxpYyBEYXRhU291cmNlIHsKKyAgICBOdUhUVFBEYXRhU291cmNlKCk7CisKKyAgICBzdGF0dXNfdCBjb25uZWN0KAorICAgICAgICAgICAgY29uc3QgY2hhciAqdXJpLAorICAgICAgICAgICAgY29uc3QgS2V5ZWRWZWN0b3I8U3RyaW5nOCwgU3RyaW5nOD4gKmhlYWRlcnMgPSBOVUxMLAorICAgICAgICAgICAgb2ZmX3Qgb2Zmc2V0ID0gMCk7CisKKyAgICB2b2lkIGRpc2Nvbm5lY3QoKTsKKworICAgIHZpcnR1YWwgc3RhdHVzX3QgaW5pdENoZWNrKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIHNzaXplX3QgcmVhZEF0KG9mZl90IG9mZnNldCwgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUpOworICAgIHZpcnR1YWwgc3RhdHVzX3QgZ2V0U2l6ZShvZmZfdCAqc2l6ZSk7CisgICAgdmlydHVhbCB1aW50MzJfdCBmbGFncygpOworCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+TnVIVFRQRGF0YVNvdXJjZSgpOworCitwcml2YXRlOgorICAgIGVudW0gU3RhdGUgeworICAgICAgICBESVNDT05ORUNURUQsCisgICAgICAgIENPTk5FQ1RJTkcsCisgICAgICAgIENPTk5FQ1RFRAorICAgIH07CisKKyAgICBNdXRleCBtTG9jazsKKworICAgIFN0YXRlIG1TdGF0ZTsKKworICAgIFN0cmluZzggbUhvc3Q7CisgICAgdW5zaWduZWQgbVBvcnQ7CisgICAgU3RyaW5nOCBtUGF0aDsKKyAgICBTdHJpbmc4IG1IZWFkZXJzOworCisgICAgSFRUUFN0cmVhbSBtSFRUUDsKKyAgICBvZmZfdCBtT2Zmc2V0OworICAgIG9mZl90IG1Db250ZW50TGVuZ3RoOworICAgIGJvb2wgbUNvbnRlbnRMZW5ndGhWYWxpZDsKKworICAgIHN0YXR1c190IGNvbm5lY3QoCisgICAgICAgICAgICBjb25zdCBjaGFyICp1cmksIGNvbnN0IFN0cmluZzggJmhlYWRlcnMsIG9mZl90IG9mZnNldCk7CisKKyAgICBzdGF0dXNfdCBjb25uZWN0KAorICAgICAgICAgICAgY29uc3QgY2hhciAqaG9zdCwgdW5zaWduZWQgcG9ydCwgY29uc3QgY2hhciAqcGF0aCwKKyAgICAgICAgICAgIGNvbnN0IFN0cmluZzggJmhlYWRlcnMsCisgICAgICAgICAgICBvZmZfdCBvZmZzZXQpOworCisgICAgdm9pZCBhcHBseVRpbWVvdXRSZXNwb25zZSgpOworCisgICAgc3RhdGljIHZvaWQgTWFrZUZ1bGxIZWFkZXJzKAorICAgICAgICAgICAgY29uc3QgS2V5ZWRWZWN0b3I8U3RyaW5nOCwgU3RyaW5nOD4gKm92ZXJyaWRlcywKKyAgICAgICAgICAgIFN0cmluZzggKmhlYWRlcnMpOworCisgICAgTnVIVFRQRGF0YVNvdXJjZShjb25zdCBOdUhUVFBEYXRhU291cmNlICYpOworICAgIE51SFRUUERhdGFTb3VyY2UgJm9wZXJhdG9yPShjb25zdCBOdUhUVFBEYXRhU291cmNlICYpOworfTsKKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKKworI2VuZGlmICAvLyBOVV9IVFRQX0RBVEFfU09VUkNFX0hfCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9pbmNsdWRlL09NWC5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaW5jbHVkZS9PTVguaAppbmRleCBlYTEzMWU4Li5jOTlkYTU5IDEwMDY0NAotLS0gYS9tZWRpYS9saWJzdGFnZWZyaWdodC9pbmNsdWRlL09NWC5oCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2luY2x1ZGUvT01YLmgKQEAgLTEwMiw3ICsxMDIsNyBAQAogICAgICAgICAgICAgT01YX0lOIE9NWF9VMzIgbkRhdGExLAogICAgICAgICAgICAgT01YX0lOIE9NWF9VMzIgbkRhdGEyLAogICAgICAgICAgICAgT01YX0lOIE9NWF9QVFIgcEV2ZW50RGF0YSk7Ci0gICAgICAgIAorCiAgICAgT01YX0VSUk9SVFlQRSBPbkVtcHR5QnVmZmVyRG9uZSgKICAgICAgICAgICAgIG5vZGVfaWQgbm9kZSwgT01YX0lOIE9NWF9CVUZGRVJIRUFERVJUWVBFICpwQnVmZmVyKTsKIApAQCAtMTE1LDIwICsxMTUsMTkgQEAKICAgICB2aXJ0dWFsIH5PTVgoKTsKIAogcHJpdmF0ZToKLSAgICBNdXRleCBtTG9jazsKLQotICAgIE9NWE1hc3RlciAqbU1hc3RlcjsKLQogICAgIHN0cnVjdCBDYWxsYmFja0Rpc3BhdGNoZXI7Ci0gICAgc3A8Q2FsbGJhY2tEaXNwYXRjaGVyPiBtRGlzcGF0Y2hlcjsKIAorICAgIE11dGV4IG1Mb2NrOworICAgIE9NWE1hc3RlciAqbU1hc3RlcjsKICAgICBpbnQzMl90IG1Ob2RlQ291bnRlcjsKIAogICAgIEtleWVkVmVjdG9yPHdwPElCaW5kZXI+LCBPTVhOb2RlSW5zdGFuY2UgKj4gbUxpdmVOb2RlczsKICAgICBLZXllZFZlY3Rvcjxub2RlX2lkLCBPTVhOb2RlSW5zdGFuY2UgKj4gbU5vZGVJRFRvSW5zdGFuY2U7CisgICAgS2V5ZWRWZWN0b3I8bm9kZV9pZCwgc3A8Q2FsbGJhY2tEaXNwYXRjaGVyPiA+IG1EaXNwYXRjaGVyczsKIAogICAgIG5vZGVfaWQgbWFrZU5vZGVJRChPTVhOb2RlSW5zdGFuY2UgKmluc3RhbmNlKTsKICAgICBPTVhOb2RlSW5zdGFuY2UgKmZpbmRJbnN0YW5jZShub2RlX2lkIG5vZGUpOworICAgIHNwPENhbGxiYWNrRGlzcGF0Y2hlcj4gZmluZERpc3BhdGNoZXIobm9kZV9pZCBub2RlKTsKIAogICAgIHZvaWQgaW52YWxpZGF0ZU5vZGVJRF9sKG5vZGVfaWQgbm9kZSk7CiAKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2luY2x1ZGUvUHJlZmV0Y2hlci5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaW5jbHVkZS9QcmVmZXRjaGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI0MTFkMWIuLjAwMDAwMDAKLS0tIGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaW5jbHVkZS9QcmVmZXRjaGVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotI2lmbmRlZiBQUkVGRVRDSEVSX0hfCi0KLSNkZWZpbmUgUFJFRkVUQ0hFUl9IXwotCi0jaW5jbHVkZSA8dXRpbHMvUmVmQmFzZS5oPgotI2luY2x1ZGUgPHV0aWxzL1ZlY3Rvci5oPgotI2luY2x1ZGUgPHV0aWxzL3RocmVhZHMuaD4KLQotbmFtZXNwYWNlIGFuZHJvaWQgewotCi1zdHJ1Y3QgTWVkaWFTb3VyY2U7Ci1zdHJ1Y3QgUHJlZmV0Y2hlZFNvdXJjZTsKLQotc3RydWN0IFByZWZldGNoZXIgOiBwdWJsaWMgUmVmQmFzZSB7Ci0gICAgUHJlZmV0Y2hlcigpOwotCi0gICAgLy8gR2l2ZW4gYW4gZXhpc3RpbmcgTWVkaWFTb3VyY2UgcmV0dXJucyBhIG5ldyBNZWRpYVNvdXJjZQotICAgIC8vIHRoYXQgd2lsbCBiZW5lZml0IGZyb20gcHJlZmV0Y2hpbmcvY2FjaGluZyB0aGUgb3JpZ2luYWwgb25lLgotICAgIHNwPE1lZGlhU291cmNlPiBhZGRTb3VyY2UoY29uc3Qgc3A8TWVkaWFTb3VyY2U+ICZzb3VyY2UpOwotCi0gICAgaW50NjRfdCBnZXRDYWNoZWREdXJhdGlvblVzKGJvb2wgKm5vTW9yZURhdGEgPSBOVUxMKTsKLQotICAgIC8vIElmIHByb3ZpZGVkIChub24tTlVMTCksICJjb250aW51ZUZ1bmMiIHdpbGwgYmUgY2FsbGVkIHJlcGVhdGVkbHkKLSAgICAvLyB3aGlsZSBwcmVwYXJpbmcgYW5kIHByZXBhcmF0aW9uIHdpbGwgZmluaXNoIGVhcmx5IGlmIGl0IHJldHVybnMKLSAgICAvLyBmYWxzZS4gSW4gdGhpcyBjYXNlICItRUlOVFIiIGlzIHJldHVybmVkIGFzIGEgcmVzdWx0LgotICAgIHN0YXR1c190IHByZXBhcmUoCi0gICAgICAgICAgICBib29sICgqY29udGludWVGdW5jKSh2b2lkICpjb29raWUpID0gTlVMTCwKLSAgICAgICAgICAgIHZvaWQgKmNvb2tpZSA9IE5VTEwpOwotCi1wcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB+UHJlZmV0Y2hlcigpOwotCi1wcml2YXRlOgotICAgIE11dGV4IG1Mb2NrOwotICAgIENvbmRpdGlvbiBtQ29uZGl0aW9uOwotCi0gICAgVmVjdG9yPHdwPFByZWZldGNoZWRTb3VyY2U+ID4gbVNvdXJjZXM7Ci0gICAgYW5kcm9pZF90aHJlYWRfaWRfdCBtVGhyZWFkOwotICAgIGJvb2wgbURvbmU7Ci0gICAgYm9vbCBtVGhyZWFkRXhpdGVkOwotCi0gICAgdm9pZCBzdGFydFRocmVhZCgpOwotICAgIHZvaWQgc3RvcFRocmVhZCgpOwotCi0gICAgc3RhdGljIGludCBUaHJlYWRXcmFwcGVyKHZvaWQgKm1lKTsKLSAgICB2b2lkIHRocmVhZEZ1bmMoKTsKLQotICAgIFByZWZldGNoZXIoY29uc3QgUHJlZmV0Y2hlciAmKTsKLSAgICBQcmVmZXRjaGVyICZvcGVyYXRvcj0oY29uc3QgUHJlZmV0Y2hlciAmKTsKLX07Ci0KLX0gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCi0KLSNlbmRpZiAgLy8gUFJFRkVUQ0hFUl9IXwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaW5jbHVkZS9UaHJvdHRsZWRTb3VyY2UuaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2luY2x1ZGUvVGhyb3R0bGVkU291cmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODgxNjRiMwotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2luY2x1ZGUvVGhyb3R0bGVkU291cmNlLmgKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgVEhST1RUTEVEX1NPVVJDRV9IXworCisjZGVmaW5lIFRIUk9UVExFRF9TT1VSQ0VfSF8KKworI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L0RhdGFTb3VyY2UuaD4KKyNpbmNsdWRlIDx1dGlscy90aHJlYWRzLmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworc3RydWN0IFRocm90dGxlZFNvdXJjZSA6IHB1YmxpYyBEYXRhU291cmNlIHsKKyAgICBUaHJvdHRsZWRTb3VyY2UoCisgICAgICAgICAgICBjb25zdCBzcDxEYXRhU291cmNlPiAmc291cmNlLAorICAgICAgICAgICAgaW50MzJfdCBiYW5kd2lkdGhMaW1pdEJ5dGVzUGVyU2Vjb25kKTsKKworICAgIHZpcnR1YWwgc3RhdHVzX3QgaW5pdENoZWNrKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIHNzaXplX3QgcmVhZEF0KG9mZl90IG9mZnNldCwgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUpOworCisgICAgdmlydHVhbCBzdGF0dXNfdCBnZXRTaXplKG9mZl90ICpzaXplKTsKKyAgICB2aXJ0dWFsIHVpbnQzMl90IGZsYWdzKCk7CisKK3ByaXZhdGU6CisgICAgTXV0ZXggbUxvY2s7CisKKyAgICBzcDxEYXRhU291cmNlPiBtU291cmNlOworICAgIGludDMyX3QgbUJhbmR3aWR0aExpbWl0Qnl0ZXNQZXJTZWNvbmQ7CisgICAgaW50NjRfdCBtU3RhcnRUaW1lVXM7CisgICAgc2l6ZV90IG1Ub3RhbFRyYW5zZmVycmVkOworCisgICAgVGhyb3R0bGVkU291cmNlKGNvbnN0IFRocm90dGxlZFNvdXJjZSAmKTsKKyAgICBUaHJvdHRsZWRTb3VyY2UgJm9wZXJhdG9yPShjb25zdCBUaHJvdHRsZWRTb3VyY2UgJik7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCisjZW5kaWYgIC8vIFRIUk9UVExFRF9TT1VSQ0VfSF8KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2luY2x1ZGUvVlBYRGVjb2Rlci5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvaW5jbHVkZS9WUFhEZWNvZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTUwYzYxMgotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L2luY2x1ZGUvVlBYRGVjb2Rlci5oCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIFZQWF9ERUNPREVSX0hfCisKKyNkZWZpbmUgVlBYX0RFQ09ERVJfSF8KKworI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhU291cmNlLmg+CisjaW5jbHVkZSA8dXRpbHMvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworc3RydWN0IE1lZGlhQnVmZmVyR3JvdXA7CisKK3N0cnVjdCBWUFhEZWNvZGVyIDogcHVibGljIE1lZGlhU291cmNlIHsKKyAgICBWUFhEZWNvZGVyKGNvbnN0IHNwPE1lZGlhU291cmNlPiAmc291cmNlKTsKKworICAgIHZpcnR1YWwgc3RhdHVzX3Qgc3RhcnQoTWV0YURhdGEgKnBhcmFtcyk7CisgICAgdmlydHVhbCBzdGF0dXNfdCBzdG9wKCk7CisKKyAgICB2aXJ0dWFsIHNwPE1ldGFEYXRhPiBnZXRGb3JtYXQoKTsKKworICAgIHZpcnR1YWwgc3RhdHVzX3QgcmVhZCgKKyAgICAgICAgICAgIE1lZGlhQnVmZmVyICoqYnVmZmVyLCBjb25zdCBSZWFkT3B0aW9ucyAqb3B0aW9ucyk7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5WUFhEZWNvZGVyKCk7CisKK3ByaXZhdGU6CisgICAgc3A8TWVkaWFTb3VyY2U+IG1Tb3VyY2U7CisgICAgYm9vbCBtU3RhcnRlZDsKKyAgICBpbnQzMl90IG1XaWR0aCwgbUhlaWdodDsKKyAgICBzaXplX3QgbUJ1ZmZlclNpemU7CisKKyAgICB2b2lkICptQ3R4OworICAgIE1lZGlhQnVmZmVyR3JvdXAgKm1CdWZmZXJHcm91cDsKKworICAgIHNwPE1ldGFEYXRhPiBtRm9ybWF0OworCisgICAgVlBYRGVjb2Rlcihjb25zdCBWUFhEZWNvZGVyICYpOworICAgIFZQWERlY29kZXIgJm9wZXJhdG9yPShjb25zdCBWUFhEZWNvZGVyICYpOworfTsKKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKKworI2VuZGlmICAvLyBWUFhfREVDT0RFUl9IXworCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9tYXRyb3NrYS9BbmRyb2lkLm1rIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvbWF0cm9za2EvQW5kcm9pZC5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTcyMTk4Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvbWF0cm9za2EvQW5kcm9pZC5tawpAQCAtMCwwICsxLDE2IEBACitMT0NBTF9QQVRIOj0gJChjYWxsIG15LWRpcikKK2luY2x1ZGUgJChDTEVBUl9WQVJTKQorCitMT0NBTF9TUkNfRklMRVM6PSAgICAgICAgICAgICAgICAgXAorICAgICAgICBNYXRyb3NrYUV4dHJhY3Rvci5jcHAgICAgIFwKKyAgICAgICAgbWt2cGFyc2VyLmNwcCAgICAgICAgICAgICBcCisKK0xPQ0FMX0NfSU5DTFVERVM6PSBcCisJJChKTklfSF9JTkNMVURFKSBcCisgICAgICAgICQoVE9QKS9leHRlcm5hbC9vcGVuY29yZS9leHRlcm5fbGlic192Mi9raHJvbm9zL29wZW5tYXgvaW5jbHVkZSBcCisKK0xPQ0FMX0NGTEFHUyArPSAtV25vLW11bHRpY2hhcgorCitMT0NBTF9NT0RVTEU6PSBsaWJzdGFnZWZyaWdodF9tYXRyb3NrYQorCitpbmNsdWRlICQoQlVJTERfU1RBVElDX0xJQlJBUlkpCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9tYXRyb3NrYS9NYXRyb3NrYUV4dHJhY3Rvci5jcHAgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9tYXRyb3NrYS9NYXRyb3NrYUV4dHJhY3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzM5YTdiNQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L21hdHJvc2thL01hdHJvc2thRXh0cmFjdG9yLmNwcApAQCAtMCwwICsxLDU5NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8vI2RlZmluZSBMT0dfTkRFQlVHIDAKKyNkZWZpbmUgTE9HX1RBRyAiTWF0cm9za2FFeHRyYWN0b3IiCisjaW5jbHVkZSA8dXRpbHMvTG9nLmg+CisKKyNpbmNsdWRlICJNYXRyb3NrYUV4dHJhY3Rvci5oIgorCisjaW5jbHVkZSAibWt2cGFyc2VyLmhwcCIKKworI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L0RhdGFTb3VyY2UuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYUJ1ZmZlci5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhRGVidWcuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYURlZnMuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYUVycm9ycy5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhU291cmNlLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWV0YURhdGEuaD4KKyNpbmNsdWRlIDx1dGlscy9TdHJpbmc4Lmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworc3RydWN0IERhdGFTb3VyY2VSZWFkZXIgOiBwdWJsaWMgbWt2cGFyc2VyOjpJTWt2UmVhZGVyIHsKKyAgICBEYXRhU291cmNlUmVhZGVyKGNvbnN0IHNwPERhdGFTb3VyY2U+ICZzb3VyY2UpCisgICAgICAgIDogbVNvdXJjZShzb3VyY2UpIHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGludCBSZWFkKGxvbmcgbG9uZyBwb3NpdGlvbiwgbG9uZyBsZW5ndGgsIHVuc2lnbmVkIGNoYXIqIGJ1ZmZlcikgeworICAgICAgICBDSEVDSyhwb3NpdGlvbiA+PSAwKTsKKyAgICAgICAgQ0hFQ0sobGVuZ3RoID49IDApOworCisgICAgICAgIGlmIChsZW5ndGggPT0gMCkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKworICAgICAgICBzc2l6ZV90IG4gPSBtU291cmNlLT5yZWFkQXQocG9zaXRpb24sIGJ1ZmZlciwgbGVuZ3RoKTsKKworICAgICAgICBpZiAobiA8PSAwKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICB2aXJ0dWFsIGludCBMZW5ndGgobG9uZyBsb25nKiB0b3RhbCwgbG9uZyBsb25nKiBhdmFpbGFibGUpIHsKKyAgICAgICAgb2ZmX3Qgc2l6ZTsKKyAgICAgICAgaWYgKG1Tb3VyY2UtPmdldFNpemUoJnNpemUpICE9IE9LKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICBpZiAodG90YWwpIHsKKyAgICAgICAgICAgICp0b3RhbCA9IHNpemU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYXZhaWxhYmxlKSB7CisgICAgICAgICAgICAqYXZhaWxhYmxlID0gc2l6ZTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiAwOworICAgIH0KKworcHJpdmF0ZToKKyAgICBzcDxEYXRhU291cmNlPiBtU291cmNlOworCisgICAgRGF0YVNvdXJjZVJlYWRlcihjb25zdCBEYXRhU291cmNlUmVhZGVyICYpOworICAgIERhdGFTb3VyY2VSZWFkZXIgJm9wZXJhdG9yPShjb25zdCBEYXRhU291cmNlUmVhZGVyICYpOworfTsKKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworI2luY2x1ZGUgPGN0eXBlLmg+CitzdGF0aWMgdm9pZCBoZXhkdW1wKGNvbnN0IHZvaWQgKl9kYXRhLCBzaXplX3Qgc2l6ZSkgeworICAgIGNvbnN0IHVpbnQ4X3QgKmRhdGEgPSAoY29uc3QgdWludDhfdCAqKV9kYXRhOworICAgIHNpemVfdCBvZmZzZXQgPSAwOworICAgIHdoaWxlIChvZmZzZXQgPCBzaXplKSB7CisgICAgICAgIHByaW50ZigiMHglMDR4ICAiLCBvZmZzZXQpOworCisgICAgICAgIHNpemVfdCBuID0gc2l6ZSAtIG9mZnNldDsKKyAgICAgICAgaWYgKG4gPiAxNikgeworICAgICAgICAgICAgbiA9IDE2OworICAgICAgICB9CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAxNjsgKytpKSB7CisgICAgICAgICAgICBpZiAoaSA9PSA4KSB7CisgICAgICAgICAgICAgICAgcHJpbnRmKCIgIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChvZmZzZXQgKyBpIDwgc2l6ZSkgeworICAgICAgICAgICAgICAgIHByaW50ZigiJTAyeCAiLCBkYXRhW29mZnNldCArIGldKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcHJpbnRmKCIgICAiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHByaW50ZigiICIpOworCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbjsgKytpKSB7CisgICAgICAgICAgICBpZiAoaXNwcmludChkYXRhW29mZnNldCArIGldKSkgeworICAgICAgICAgICAgICAgIHByaW50ZigiJWMiLCBkYXRhW29mZnNldCArIGldKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcHJpbnRmKCIuIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBwcmludGYoIlxuIik7CisKKyAgICAgICAgb2Zmc2V0ICs9IDE2OworICAgIH0KK30KKworc3RydWN0IEJsb2NrSXRlcmF0b3IgeworICAgIEJsb2NrSXRlcmF0b3IobWt2cGFyc2VyOjpTZWdtZW50ICpzZWdtZW50LCB1bnNpZ25lZCBsb25nIHRyYWNrTnVtKTsKKworICAgIGJvb2wgZW9zKCkgY29uc3Q7CisKKyAgICB2b2lkIGFkdmFuY2UoKTsKKyAgICB2b2lkIHJlc2V0KCk7CisgICAgdm9pZCBzZWVrKGludDY0X3Qgc2Vla1RpbWVVcyk7CisKKyAgICBjb25zdCBta3ZwYXJzZXI6OkJsb2NrICpibG9jaygpIGNvbnN0OworICAgIGludDY0X3QgYmxvY2tUaW1lVXMoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBta3ZwYXJzZXI6OlNlZ21lbnQgKm1TZWdtZW50OworICAgIHVuc2lnbmVkIGxvbmcgbVRyYWNrTnVtOworCisgICAgbWt2cGFyc2VyOjpDbHVzdGVyICptQ2x1c3RlcjsKKyAgICBjb25zdCBta3ZwYXJzZXI6OkJsb2NrRW50cnkgKm1CbG9ja0VudHJ5OworCisgICAgQmxvY2tJdGVyYXRvcihjb25zdCBCbG9ja0l0ZXJhdG9yICYpOworICAgIEJsb2NrSXRlcmF0b3IgJm9wZXJhdG9yPShjb25zdCBCbG9ja0l0ZXJhdG9yICYpOworfTsKKworc3RydWN0IE1hdHJvc2thU291cmNlIDogcHVibGljIE1lZGlhU291cmNlIHsKKyAgICBNYXRyb3NrYVNvdXJjZSgKKyAgICAgICAgICAgIGNvbnN0IHNwPE1hdHJvc2thRXh0cmFjdG9yPiAmZXh0cmFjdG9yLCBzaXplX3QgaW5kZXgpOworCisgICAgdmlydHVhbCBzdGF0dXNfdCBzdGFydChNZXRhRGF0YSAqcGFyYW1zKTsKKyAgICB2aXJ0dWFsIHN0YXR1c190IHN0b3AoKTsKKworICAgIHZpcnR1YWwgc3A8TWV0YURhdGE+IGdldEZvcm1hdCgpOworCisgICAgdmlydHVhbCBzdGF0dXNfdCByZWFkKAorICAgICAgICAgICAgTWVkaWFCdWZmZXIgKipidWZmZXIsIGNvbnN0IFJlYWRPcHRpb25zICpvcHRpb25zKTsKKworcHJpdmF0ZToKKyAgICBlbnVtIFR5cGUgeworICAgICAgICBBVkMsCisgICAgICAgIEFBQywKKyAgICAgICAgT1RIRVIKKyAgICB9OworCisgICAgc3A8TWF0cm9za2FFeHRyYWN0b3I+IG1FeHRyYWN0b3I7CisgICAgc2l6ZV90IG1UcmFja0luZGV4OworICAgIFR5cGUgbVR5cGU7CisgICAgQmxvY2tJdGVyYXRvciBtQmxvY2tJdGVyOworCisgICAgc3RhdHVzX3QgYWR2YW5jZSgpOworCisgICAgTWF0cm9za2FTb3VyY2UoY29uc3QgTWF0cm9za2FTb3VyY2UgJik7CisgICAgTWF0cm9za2FTb3VyY2UgJm9wZXJhdG9yPShjb25zdCBNYXRyb3NrYVNvdXJjZSAmKTsKK307CisKK01hdHJvc2thU291cmNlOjpNYXRyb3NrYVNvdXJjZSgKKyAgICAgICAgY29uc3Qgc3A8TWF0cm9za2FFeHRyYWN0b3I+ICZleHRyYWN0b3IsIHNpemVfdCBpbmRleCkKKyAgICA6IG1FeHRyYWN0b3IoZXh0cmFjdG9yKSwKKyAgICAgIG1UcmFja0luZGV4KGluZGV4KSwKKyAgICAgIG1UeXBlKE9USEVSKSwKKyAgICAgIG1CbG9ja0l0ZXIobUV4dHJhY3Rvci0+bVNlZ21lbnQsCisgICAgICAgICAgICAgICAgIG1FeHRyYWN0b3ItPm1UcmFja3MuaXRlbUF0KGluZGV4KS5tVHJhY2tOdW0pIHsKKyAgICBjb25zdCBjaGFyICptaW1lOworICAgIENIRUNLKG1FeHRyYWN0b3ItPm1UcmFja3MuaXRlbUF0KGluZGV4KS5tTWV0YS0+CisgICAgICAgICAgICBmaW5kQ1N0cmluZyhrS2V5TUlNRVR5cGUsICZtaW1lKSk7CisKKyAgICBpZiAoIXN0cmNhc2VjbXAobWltZSwgTUVESUFfTUlNRVRZUEVfVklERU9fQVZDKSkgeworICAgICAgICBtVHlwZSA9IEFWQzsKKyAgICB9IGVsc2UgaWYgKCFzdHJjYXNlY21wKG1pbWUsIE1FRElBX01JTUVUWVBFX0FVRElPX0FBQykpIHsKKyAgICAgICAgbVR5cGUgPSBBQUM7CisgICAgfQorfQorCitzdGF0dXNfdCBNYXRyb3NrYVNvdXJjZTo6c3RhcnQoTWV0YURhdGEgKnBhcmFtcykgeworICAgIG1CbG9ja0l0ZXIucmVzZXQoKTsKKworICAgIHJldHVybiBPSzsKK30KKworc3RhdHVzX3QgTWF0cm9za2FTb3VyY2U6OnN0b3AoKSB7CisgICAgcmV0dXJuIE9LOworfQorCitzcDxNZXRhRGF0YT4gTWF0cm9za2FTb3VyY2U6OmdldEZvcm1hdCgpIHsKKyAgICByZXR1cm4gbUV4dHJhY3Rvci0+bVRyYWNrcy5pdGVtQXQobVRyYWNrSW5kZXgpLm1NZXRhOworfQorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCitCbG9ja0l0ZXJhdG9yOjpCbG9ja0l0ZXJhdG9yKAorICAgICAgICBta3ZwYXJzZXI6OlNlZ21lbnQgKnNlZ21lbnQsIHVuc2lnbmVkIGxvbmcgdHJhY2tOdW0pCisgICAgOiBtU2VnbWVudChzZWdtZW50KSwKKyAgICAgIG1UcmFja051bSh0cmFja051bSksCisgICAgICBtQ2x1c3RlcihOVUxMKSwKKyAgICAgIG1CbG9ja0VudHJ5KE5VTEwpIHsKKyAgICByZXNldCgpOworfQorCitib29sIEJsb2NrSXRlcmF0b3I6OmVvcygpIGNvbnN0IHsKKyAgICByZXR1cm4gbUNsdXN0ZXIgPT0gTlVMTCB8fCBtQ2x1c3Rlci0+RU9TKCk7Cit9CisKK3ZvaWQgQmxvY2tJdGVyYXRvcjo6YWR2YW5jZSgpIHsKKyAgICB3aGlsZSAoIWVvcygpKSB7CisgICAgICAgIGlmIChtQmxvY2tFbnRyeSAhPSBOVUxMKSB7CisgICAgICAgICAgICBtQmxvY2tFbnRyeSA9IG1DbHVzdGVyLT5HZXROZXh0KG1CbG9ja0VudHJ5KTsKKyAgICAgICAgfSBlbHNlIGlmIChtQ2x1c3RlciAhPSBOVUxMKSB7CisgICAgICAgICAgICBtQ2x1c3RlciA9IG1TZWdtZW50LT5HZXROZXh0KG1DbHVzdGVyKTsKKworICAgICAgICAgICAgaWYgKGVvcygpKSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1CbG9ja0VudHJ5ID0gbUNsdXN0ZXItPkdldEZpcnN0KCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobUJsb2NrRW50cnkgIT0gTlVMTAorICAgICAgICAgICAgICAgICYmIG1CbG9ja0VudHJ5LT5HZXRCbG9jaygpLT5HZXRUcmFja051bWJlcigpID09IG1UcmFja051bSkgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgQmxvY2tJdGVyYXRvcjo6cmVzZXQoKSB7CisgICAgbUNsdXN0ZXIgPSBtU2VnbWVudC0+R2V0Rmlyc3QoKTsKKyAgICBtQmxvY2tFbnRyeSA9IG1DbHVzdGVyLT5HZXRGaXJzdCgpOworCisgICAgd2hpbGUgKCFlb3MoKSAmJiBibG9jaygpLT5HZXRUcmFja051bWJlcigpICE9IG1UcmFja051bSkgeworICAgICAgICBhZHZhbmNlKCk7CisgICAgfQorfQorCit2b2lkIEJsb2NrSXRlcmF0b3I6OnNlZWsoaW50NjRfdCBzZWVrVGltZVVzKSB7CisgICAgbUNsdXN0ZXIgPSBtU2VnbWVudC0+R2V0Q2x1c3RlcihzZWVrVGltZVVzICogMTAwMGxsKTsKKyAgICBtQmxvY2tFbnRyeSA9IG1DbHVzdGVyICE9IE5VTEwgPyBtQ2x1c3Rlci0+R2V0Rmlyc3QoKSA6IE5VTEw7CisKKyAgICB3aGlsZSAoIWVvcygpICYmIGJsb2NrKCktPkdldFRyYWNrTnVtYmVyKCkgIT0gbVRyYWNrTnVtKSB7CisgICAgICAgIGFkdmFuY2UoKTsKKyAgICB9CisKKyAgICB3aGlsZSAoIWVvcygpICYmICFtQmxvY2tFbnRyeS0+R2V0QmxvY2soKS0+SXNLZXkoKSkgeworICAgICAgICBhZHZhbmNlKCk7CisgICAgfQorfQorCitjb25zdCBta3ZwYXJzZXI6OkJsb2NrICpCbG9ja0l0ZXJhdG9yOjpibG9jaygpIGNvbnN0IHsKKyAgICBDSEVDSyghZW9zKCkpOworCisgICAgcmV0dXJuIG1CbG9ja0VudHJ5LT5HZXRCbG9jaygpOworfQorCitpbnQ2NF90IEJsb2NrSXRlcmF0b3I6OmJsb2NrVGltZVVzKCkgY29uc3QgeworICAgIHJldHVybiAobUJsb2NrRW50cnktPkdldEJsb2NrKCktPkdldFRpbWUobUNsdXN0ZXIpICsgNTAwbGwpIC8gMTAwMGxsOworfQorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCitzdGF0dXNfdCBNYXRyb3NrYVNvdXJjZTo6cmVhZCgKKyAgICAgICAgTWVkaWFCdWZmZXIgKipvdXQsIGNvbnN0IFJlYWRPcHRpb25zICpvcHRpb25zKSB7CisgICAgKm91dCA9IE5VTEw7CisKKyAgICBpbnQ2NF90IHNlZWtUaW1lVXM7CisgICAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy0+Z2V0U2Vla1RvKCZzZWVrVGltZVVzKSkgeworICAgICAgICBtQmxvY2tJdGVyLnNlZWsoc2Vla1RpbWVVcyk7CisgICAgfQorCisgICAgaWYgKG1CbG9ja0l0ZXIuZW9zKCkpIHsKKyAgICAgICAgcmV0dXJuIEVSUk9SX0VORF9PRl9TVFJFQU07CisgICAgfQorCisgICAgY29uc3QgbWt2cGFyc2VyOjpCbG9jayAqYmxvY2sgPSBtQmxvY2tJdGVyLmJsb2NrKCk7CisgICAgc2l6ZV90IHNpemUgPSBibG9jay0+R2V0U2l6ZSgpOworICAgIGludDY0X3QgdGltZVVzID0gbUJsb2NrSXRlci5ibG9ja1RpbWVVcygpOworCisgICAgTWVkaWFCdWZmZXIgKmJ1ZmZlciA9IG5ldyBNZWRpYUJ1ZmZlcihzaXplICsgMik7CisgICAgYnVmZmVyLT5tZXRhX2RhdGEoKS0+c2V0SW50NjQoa0tleVRpbWUsIHRpbWVVcyk7CisKKyAgICBsb25nIHJlcyA9IGJsb2NrLT5SZWFkKAorICAgICAgICAgICAgbUV4dHJhY3Rvci0+bVJlYWRlciwgKHVuc2lnbmVkIGNoYXIgKilidWZmZXItPmRhdGEoKSArIDIpOworCisgICAgaWYgKHJlcyAhPSAwKSB7CisgICAgICAgIHJldHVybiBFUlJPUl9FTkRfT0ZfU1RSRUFNOworICAgIH0KKworICAgIGJ1ZmZlci0+c2V0X3JhbmdlKDIsIHNpemUpOworCisgICAgaWYgKG1UeXBlID09IEFWQykgeworICAgICAgICBDSEVDSyhzaXplID49IDIpOworCisgICAgICAgIHVpbnQ4X3QgKmRhdGEgPSAodWludDhfdCAqKWJ1ZmZlci0+ZGF0YSgpOworCisgICAgICAgIHVuc2lnbmVkIE5BTHNpemUgPSBkYXRhWzJdIDw8IDggfCBkYXRhWzNdOworICAgICAgICBDSEVDS19FUShzaXplLCBOQUxzaXplICsgMik7CisKKyAgICAgICAgbWVtY3B5KGRhdGEsICJceDAwXHgwMFx4MDBceDAxIiwgNCk7CisgICAgICAgIGJ1ZmZlci0+c2V0X3JhbmdlKDAsIHNpemUgKyAyKTsKKyAgICB9IGVsc2UgaWYgKG1UeXBlID09IEFBQykgeworICAgICAgICAvLyBUaGVyZSdzIHN0cmFuZ2UganVuayBhdCB0aGUgYmVnaW5uaW5nLi4uCisKKyAgICAgICAgY29uc3QgdWludDhfdCAqZGF0YSA9IChjb25zdCB1aW50OF90ICopYnVmZmVyLT5kYXRhKCkgKyAyOworICAgICAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKKyAgICAgICAgd2hpbGUgKG9mZnNldCA8IHNpemUgJiYgZGF0YVtvZmZzZXRdICE9IDB4MjEpIHsKKyAgICAgICAgICAgICsrb2Zmc2V0OworICAgICAgICB9CisgICAgICAgIGJ1ZmZlci0+c2V0X3JhbmdlKDIgKyBvZmZzZXQsIHNpemUgLSBvZmZzZXQpOworICAgIH0KKworICAgICpvdXQgPSBidWZmZXI7CisKKyNpZiAwCisgICAgaGV4ZHVtcCgoY29uc3QgdWludDhfdCAqKWJ1ZmZlci0+ZGF0YSgpICsgYnVmZmVyLT5yYW5nZV9vZmZzZXQoKSwKKyAgICAgICAgICAgIGJ1ZmZlci0+cmFuZ2VfbGVuZ3RoKCkpOworI2VuZGlmCisKKyAgICBtQmxvY2tJdGVyLmFkdmFuY2UoKTsKKworICAgIHJldHVybiBPSzsKK30KKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworTWF0cm9za2FFeHRyYWN0b3I6Ok1hdHJvc2thRXh0cmFjdG9yKGNvbnN0IHNwPERhdGFTb3VyY2U+ICZzb3VyY2UpCisgICAgOiBtRGF0YVNvdXJjZShzb3VyY2UpLAorICAgICAgbVJlYWRlcihuZXcgRGF0YVNvdXJjZVJlYWRlcihtRGF0YVNvdXJjZSkpLAorICAgICAgbVNlZ21lbnQoTlVMTCksCisgICAgICBtRXh0cmFjdGVkVGh1bWJuYWlscyhmYWxzZSkgeworICAgIG1rdnBhcnNlcjo6RUJNTEhlYWRlciBlYm1sSGVhZGVyOworICAgIGxvbmcgbG9uZyBwb3M7CisgICAgaWYgKGVibWxIZWFkZXIuUGFyc2UobVJlYWRlciwgcG9zKSA8IDApIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGxvbmcgbG9uZyByZXQgPQorICAgICAgICBta3ZwYXJzZXI6OlNlZ21lbnQ6OkNyZWF0ZUluc3RhbmNlKG1SZWFkZXIsIHBvcywgbVNlZ21lbnQpOworCisgICAgaWYgKHJldCkgeworICAgICAgICBDSEVDSyhtU2VnbWVudCA9PSBOVUxMKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHJldCA9IG1TZWdtZW50LT5Mb2FkKCk7CisKKyAgICBpZiAocmV0IDwgMCkgeworICAgICAgICBkZWxldGUgbVNlZ21lbnQ7CisgICAgICAgIG1TZWdtZW50ID0gTlVMTDsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGFkZFRyYWNrcygpOworfQorCitNYXRyb3NrYUV4dHJhY3Rvcjo6fk1hdHJvc2thRXh0cmFjdG9yKCkgeworICAgIGRlbGV0ZSBtU2VnbWVudDsKKyAgICBtU2VnbWVudCA9IE5VTEw7CisKKyAgICBkZWxldGUgbVJlYWRlcjsKKyAgICBtUmVhZGVyID0gTlVMTDsKK30KKworc2l6ZV90IE1hdHJvc2thRXh0cmFjdG9yOjpjb3VudFRyYWNrcygpIHsKKyAgICByZXR1cm4gbVRyYWNrcy5zaXplKCk7Cit9CisKK3NwPE1lZGlhU291cmNlPiBNYXRyb3NrYUV4dHJhY3Rvcjo6Z2V0VHJhY2soc2l6ZV90IGluZGV4KSB7CisgICAgaWYgKGluZGV4ID49IG1UcmFja3Muc2l6ZSgpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBuZXcgTWF0cm9za2FTb3VyY2UodGhpcywgaW5kZXgpOworfQorCitzcDxNZXRhRGF0YT4gTWF0cm9za2FFeHRyYWN0b3I6OmdldFRyYWNrTWV0YURhdGEoCisgICAgICAgIHNpemVfdCBpbmRleCwgdWludDMyX3QgZmxhZ3MpIHsKKyAgICBpZiAoaW5kZXggPj0gbVRyYWNrcy5zaXplKCkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKChmbGFncyAmIGtJbmNsdWRlRXh0ZW5zaXZlTWV0YURhdGEpICYmICFtRXh0cmFjdGVkVGh1bWJuYWlscykgeworICAgICAgICBmaW5kVGh1bWJuYWlscygpOworICAgICAgICBtRXh0cmFjdGVkVGh1bWJuYWlscyA9IHRydWU7CisgICAgfQorCisgICAgcmV0dXJuIG1UcmFja3MuaXRlbUF0KGluZGV4KS5tTWV0YTsKK30KKworc3RhdGljIHZvaWQgYWRkRVNEU0Zyb21BdWRpb1NwZWNpZmljSW5mbygKKyAgICAgICAgY29uc3Qgc3A8TWV0YURhdGE+ICZtZXRhLCBjb25zdCB2b2lkICphc2ksIHNpemVfdCBhc2lTaXplKSB7CisgICAgc3RhdGljIGNvbnN0IHVpbnQ4X3Qga1N0YXRpY0VTRFNbXSA9IHsKKyAgICAgICAgMHgwMywgMjIsCisgICAgICAgIDB4MDAsIDB4MDAsICAgICAvLyBFU19JRAorICAgICAgICAweDAwLCAgICAgICAgICAgLy8gc3RyZWFtRGVwZW5kZW5jZUZsYWcsIFVSTF9GbGFnLCBPQ1JzdHJlYW1GbGFnCisKKyAgICAgICAgMHgwNCwgMTcsCisgICAgICAgIDB4NDAsICAgICAgICAgICAgICAgICAgICAgICAvLyBBdWRpbyBJU08vSUVDIDE0NDk2LTMKKyAgICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKyAgICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKyAgICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKworICAgICAgICAweDA1LAorICAgICAgICAvLyBBdWRpb1NwZWNpZmljSW5mbyAod2l0aCBzaXplIHByZWZpeCkgZm9sbG93cworICAgIH07CisKKyAgICBDSEVDSyhhc2lTaXplIDwgMTI4KTsKKyAgICBzaXplX3QgZXNkc1NpemUgPSBzaXplb2Yoa1N0YXRpY0VTRFMpICsgYXNpU2l6ZSArIDE7CisgICAgdWludDhfdCAqZXNkcyA9IG5ldyB1aW50OF90W2VzZHNTaXplXTsKKyAgICBtZW1jcHkoZXNkcywga1N0YXRpY0VTRFMsIHNpemVvZihrU3RhdGljRVNEUykpOworICAgIHVpbnQ4X3QgKnB0ciA9IGVzZHMgKyBzaXplb2Yoa1N0YXRpY0VTRFMpOworICAgICpwdHIrKyA9IGFzaVNpemU7CisgICAgbWVtY3B5KHB0ciwgYXNpLCBhc2lTaXplKTsKKworICAgIG1ldGEtPnNldERhdGEoa0tleUVTRFMsIDAsIGVzZHMsIGVzZHNTaXplKTsKKworICAgIGRlbGV0ZVtdIGVzZHM7CisgICAgZXNkcyA9IE5VTEw7Cit9CisKK3ZvaWQgYWRkVm9yYmlzQ29kZWNJbmZvKAorICAgICAgICBjb25zdCBzcDxNZXRhRGF0YT4gJm1ldGEsCisgICAgICAgIGNvbnN0IHZvaWQgKl9jb2RlY1ByaXZhdGUsIHNpemVfdCBjb2RlY1ByaXZhdGVTaXplKSB7CisgICAgLy8gcHJpbnRmKCJ2b3JiaXMgcHJpdmF0ZSBkYXRhIGZvbGxvd3M6XG4iKTsKKyAgICAvLyBoZXhkdW1wKF9jb2RlY1ByaXZhdGUsIGNvZGVjUHJpdmF0ZVNpemUpOworCisgICAgQ0hFQ0soY29kZWNQcml2YXRlU2l6ZSA+PSAzKTsKKworICAgIGNvbnN0IHVpbnQ4X3QgKmNvZGVjUHJpdmF0ZSA9IChjb25zdCB1aW50OF90ICopX2NvZGVjUHJpdmF0ZTsKKyAgICBDSEVDSyhjb2RlY1ByaXZhdGVbMF0gPT0gMHgwMik7CisKKyAgICBzaXplX3QgbGVuMSA9IGNvZGVjUHJpdmF0ZVsxXTsKKyAgICBzaXplX3QgbGVuMiA9IGNvZGVjUHJpdmF0ZVsyXTsKKworICAgIENIRUNLKGNvZGVjUHJpdmF0ZVNpemUgPiAzICsgbGVuMSArIGxlbjIpOworCisgICAgQ0hFQ0soY29kZWNQcml2YXRlWzNdID09IDB4MDEpOworICAgIG1ldGEtPnNldERhdGEoa0tleVZvcmJpc0luZm8sIDAsICZjb2RlY1ByaXZhdGVbM10sIGxlbjEpOworCisgICAgQ0hFQ0soY29kZWNQcml2YXRlW2xlbjEgKyAzXSA9PSAweDAzKTsKKworICAgIENIRUNLKGNvZGVjUHJpdmF0ZVtsZW4xICsgbGVuMiArIDNdID09IDB4MDUpOworICAgIG1ldGEtPnNldERhdGEoCisgICAgICAgICAgICBrS2V5Vm9yYmlzQm9va3MsIDAsICZjb2RlY1ByaXZhdGVbbGVuMSArIGxlbjIgKyAzXSwKKyAgICAgICAgICAgIGNvZGVjUHJpdmF0ZVNpemUgLSBsZW4xIC0gbGVuMiAtIDMpOworfQorCit2b2lkIE1hdHJvc2thRXh0cmFjdG9yOjphZGRUcmFja3MoKSB7CisgICAgY29uc3QgbWt2cGFyc2VyOjpUcmFja3MgKnRyYWNrcyA9IG1TZWdtZW50LT5HZXRUcmFja3MoKTsKKworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCB0cmFja3MtPkdldFRyYWNrc0NvdW50KCk7ICsraW5kZXgpIHsKKyAgICAgICAgY29uc3QgbWt2cGFyc2VyOjpUcmFjayAqdHJhY2sgPSB0cmFja3MtPkdldFRyYWNrQnlJbmRleChpbmRleCk7CisKKyAgICAgICAgY29uc3QgY2hhciAqY29uc3QgY29kZWNJRCA9IHRyYWNrLT5HZXRDb2RlY0lkKCk7CisgICAgICAgIExPR1YoImNvZGVjIGlkID0gJXMiLCBjb2RlY0lEKTsKKyAgICAgICAgTE9HVigiY29kZWMgbmFtZSA9ICVzIiwgdHJhY2stPkdldENvZGVjTmFtZUFzVVRGOCgpKTsKKworICAgICAgICBzaXplX3QgY29kZWNQcml2YXRlU2l6ZTsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqY29kZWNQcml2YXRlID0KKyAgICAgICAgICAgIHRyYWNrLT5HZXRDb2RlY1ByaXZhdGUoJmNvZGVjUHJpdmF0ZVNpemUpOworCisgICAgICAgIGVudW0geyBWSURFT19UUkFDSyA9IDEsIEFVRElPX1RSQUNLID0gMiB9OworCisgICAgICAgIHNwPE1ldGFEYXRhPiBtZXRhID0gbmV3IE1ldGFEYXRhOworCisgICAgICAgIHN3aXRjaCAodHJhY2stPkdldFR5cGUoKSkgeworICAgICAgICAgICAgY2FzZSBWSURFT19UUkFDSzoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zdCBta3ZwYXJzZXI6OlZpZGVvVHJhY2sgKnZ0cmFjayA9CisgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IG1rdnBhcnNlcjo6VmlkZW9UcmFjayAqPih0cmFjayk7CisKKyAgICAgICAgICAgICAgICBpZiAoIXN0cmNtcCgiVl9NUEVHNC9JU08vQVZDIiwgY29kZWNJRCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbWV0YS0+c2V0Q1N0cmluZyhrS2V5TUlNRVR5cGUsIE1FRElBX01JTUVUWVBFX1ZJREVPX0FWQyk7CisgICAgICAgICAgICAgICAgICAgIG1ldGEtPnNldERhdGEoa0tleUFWQ0MsIDAsIGNvZGVjUHJpdmF0ZSwgY29kZWNQcml2YXRlU2l6ZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghc3RyY21wKCJWX1ZQOCIsIGNvZGVjSUQpKSB7CisgICAgICAgICAgICAgICAgICAgIG1ldGEtPnNldENTdHJpbmcoa0tleU1JTUVUeXBlLCBNRURJQV9NSU1FVFlQRV9WSURFT19WUFgpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIG1ldGEtPnNldEludDMyKGtLZXlXaWR0aCwgdnRyYWNrLT5HZXRXaWR0aCgpKTsKKyAgICAgICAgICAgICAgICBtZXRhLT5zZXRJbnQzMihrS2V5SGVpZ2h0LCB2dHJhY2stPkdldEhlaWdodCgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FzZSBBVURJT19UUkFDSzoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBjb25zdCBta3ZwYXJzZXI6OkF1ZGlvVHJhY2sgKmF0cmFjayA9CisgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGNvbnN0IG1rdnBhcnNlcjo6QXVkaW9UcmFjayAqPih0cmFjayk7CisKKyAgICAgICAgICAgICAgICBpZiAoIXN0cmNtcCgiQV9BQUMiLCBjb2RlY0lEKSkgeworICAgICAgICAgICAgICAgICAgICBtZXRhLT5zZXRDU3RyaW5nKGtLZXlNSU1FVHlwZSwgTUVESUFfTUlNRVRZUEVfQVVESU9fQUFDKTsKKyAgICAgICAgICAgICAgICAgICAgQ0hFQ0soY29kZWNQcml2YXRlU2l6ZSA+PSAyKTsKKworICAgICAgICAgICAgICAgICAgICBhZGRFU0RTRnJvbUF1ZGlvU3BlY2lmaWNJbmZvKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGEsIGNvZGVjUHJpdmF0ZSwgY29kZWNQcml2YXRlU2l6ZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghc3RyY21wKCJBX1ZPUkJJUyIsIGNvZGVjSUQpKSB7CisgICAgICAgICAgICAgICAgICAgIG1ldGEtPnNldENTdHJpbmcoa0tleU1JTUVUeXBlLCBNRURJQV9NSU1FVFlQRV9BVURJT19WT1JCSVMpOworCisgICAgICAgICAgICAgICAgICAgIGFkZFZvcmJpc0NvZGVjSW5mbyhtZXRhLCBjb2RlY1ByaXZhdGUsIGNvZGVjUHJpdmF0ZVNpemUpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIG1ldGEtPnNldEludDMyKGtLZXlTYW1wbGVSYXRlLCBhdHJhY2stPkdldFNhbXBsaW5nUmF0ZSgpKTsKKyAgICAgICAgICAgICAgICBtZXRhLT5zZXRJbnQzMihrS2V5Q2hhbm5lbENvdW50LCBhdHJhY2stPkdldENoYW5uZWxzKCkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgbG9uZyBsb25nIGR1cmF0aW9uTnMgPSBtU2VnbWVudC0+R2V0RHVyYXRpb24oKTsKKyAgICAgICAgbWV0YS0+c2V0SW50NjQoa0tleUR1cmF0aW9uLCAoZHVyYXRpb25OcyArIDUwMCkgLyAxMDAwKTsKKworICAgICAgICBtVHJhY2tzLnB1c2goKTsKKyAgICAgICAgVHJhY2tJbmZvICp0cmFja0luZm8gPSAmbVRyYWNrcy5lZGl0SXRlbUF0KG1UcmFja3Muc2l6ZSgpIC0gMSk7CisgICAgICAgIHRyYWNrSW5mby0+bVRyYWNrTnVtID0gdHJhY2stPkdldE51bWJlcigpOworICAgICAgICB0cmFja0luZm8tPm1NZXRhID0gbWV0YTsKKyAgICB9Cit9CisKK3ZvaWQgTWF0cm9za2FFeHRyYWN0b3I6OmZpbmRUaHVtYm5haWxzKCkgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbVRyYWNrcy5zaXplKCk7ICsraSkgeworICAgICAgICBUcmFja0luZm8gKmluZm8gPSAmbVRyYWNrcy5lZGl0SXRlbUF0KGkpOworCisgICAgICAgIGNvbnN0IGNoYXIgKm1pbWU7CisgICAgICAgIENIRUNLKGluZm8tPm1NZXRhLT5maW5kQ1N0cmluZyhrS2V5TUlNRVR5cGUsICZtaW1lKSk7CisKKyAgICAgICAgaWYgKHN0cm5jYXNlY21wKG1pbWUsICJ2aWRlby8iLCA2KSkgeworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBCbG9ja0l0ZXJhdG9yIGl0ZXIobVNlZ21lbnQsIGluZm8tPm1UcmFja051bSk7CisgICAgICAgIGludDMyX3QgaSA9IDA7CisgICAgICAgIGludDY0X3QgdGh1bWJuYWlsVGltZVVzID0gMDsKKyAgICAgICAgc2l6ZV90IG1heEJsb2NrU2l6ZSA9IDA7CisgICAgICAgIHdoaWxlICghaXRlci5lb3MoKSAmJiBpIDwgMjApIHsKKyAgICAgICAgICAgIGlmIChpdGVyLmJsb2NrKCktPklzS2V5KCkpIHsKKyAgICAgICAgICAgICAgICArK2k7CisKKyAgICAgICAgICAgICAgICBzaXplX3QgYmxvY2tTaXplID0gaXRlci5ibG9jaygpLT5HZXRTaXplKCk7CisgICAgICAgICAgICAgICAgaWYgKGJsb2NrU2l6ZSA+IG1heEJsb2NrU2l6ZSkgeworICAgICAgICAgICAgICAgICAgICBtYXhCbG9ja1NpemUgPSBibG9ja1NpemU7CisgICAgICAgICAgICAgICAgICAgIHRodW1ibmFpbFRpbWVVcyA9IGl0ZXIuYmxvY2tUaW1lVXMoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpdGVyLmFkdmFuY2UoKTsKKyAgICAgICAgfQorICAgICAgICBpbmZvLT5tTWV0YS0+c2V0SW50NjQoa0tleVRodW1ibmFpbFRpbWUsIHRodW1ibmFpbFRpbWVVcyk7CisgICAgfQorfQorCitzcDxNZXRhRGF0YT4gTWF0cm9za2FFeHRyYWN0b3I6OmdldE1ldGFEYXRhKCkgeworICAgIHNwPE1ldGFEYXRhPiBtZXRhID0gbmV3IE1ldGFEYXRhOworICAgIG1ldGEtPnNldENTdHJpbmcoa0tleU1JTUVUeXBlLCBNRURJQV9NSU1FVFlQRV9DT05UQUlORVJfTUFUUk9TS0EpOworCisgICAgcmV0dXJuIG1ldGE7Cit9CisKK2Jvb2wgU25pZmZNYXRyb3NrYSgKKyAgICAgICAgY29uc3Qgc3A8RGF0YVNvdXJjZT4gJnNvdXJjZSwgU3RyaW5nOCAqbWltZVR5cGUsIGZsb2F0ICpjb25maWRlbmNlKSB7CisgICAgRGF0YVNvdXJjZVJlYWRlciByZWFkZXIoc291cmNlKTsKKyAgICBta3ZwYXJzZXI6OkVCTUxIZWFkZXIgZWJtbEhlYWRlcjsKKyAgICBsb25nIGxvbmcgcG9zOworICAgIGlmIChlYm1sSGVhZGVyLlBhcnNlKCZyZWFkZXIsIHBvcykgPCAwKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBtaW1lVHlwZS0+c2V0VG8oTUVESUFfTUlNRVRZUEVfQ09OVEFJTkVSX01BVFJPU0tBKTsKKyAgICAqY29uZmlkZW5jZSA9IDAuNjsKKworICAgIHJldHVybiB0cnVlOworfQorCit9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZApkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvbWF0cm9za2EvTWF0cm9za2FFeHRyYWN0b3IuaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L21hdHJvc2thL01hdHJvc2thRXh0cmFjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQ3MTg0OAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L21hdHJvc2thL01hdHJvc2thRXh0cmFjdG9yLmgKQEAgLTAsMCArMSw3NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgTUFUUk9TS0FfRVhUUkFDVE9SX0hfCisKKyNkZWZpbmUgTUFUUk9TS0FfRVhUUkFDVE9SX0hfCisKKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYUV4dHJhY3Rvci5oPgorI2luY2x1ZGUgPHV0aWxzL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgbWt2cGFyc2VyIHsKK3N0cnVjdCBTZWdtZW50OworfTsKKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitjbGFzcyBTdHJpbmc4OworCitzdHJ1Y3QgRGF0YVNvdXJjZVJlYWRlcjsKK3N0cnVjdCBNYXRyb3NrYVNvdXJjZTsKKworc3RydWN0IE1hdHJvc2thRXh0cmFjdG9yIDogcHVibGljIE1lZGlhRXh0cmFjdG9yIHsKKyAgICBNYXRyb3NrYUV4dHJhY3Rvcihjb25zdCBzcDxEYXRhU291cmNlPiAmc291cmNlKTsKKworICAgIHZpcnR1YWwgc2l6ZV90IGNvdW50VHJhY2tzKCk7CisKKyAgICB2aXJ0dWFsIHNwPE1lZGlhU291cmNlPiBnZXRUcmFjayhzaXplX3QgaW5kZXgpOworCisgICAgdmlydHVhbCBzcDxNZXRhRGF0YT4gZ2V0VHJhY2tNZXRhRGF0YSgKKyAgICAgICAgICAgIHNpemVfdCBpbmRleCwgdWludDMyX3QgZmxhZ3MpOworCisgICAgdmlydHVhbCBzcDxNZXRhRGF0YT4gZ2V0TWV0YURhdGEoKTsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfk1hdHJvc2thRXh0cmFjdG9yKCk7CisKK3ByaXZhdGU6CisgICAgZnJpZW5kIHN0cnVjdCBNYXRyb3NrYVNvdXJjZTsKKworICAgIHN0cnVjdCBUcmFja0luZm8geworICAgICAgICB1bnNpZ25lZCBsb25nIG1UcmFja051bTsKKyAgICAgICAgc3A8TWV0YURhdGE+IG1NZXRhOworICAgIH07CisgICAgVmVjdG9yPFRyYWNrSW5mbz4gbVRyYWNrczsKKworICAgIHNwPERhdGFTb3VyY2U+IG1EYXRhU291cmNlOworICAgIERhdGFTb3VyY2VSZWFkZXIgKm1SZWFkZXI7CisgICAgbWt2cGFyc2VyOjpTZWdtZW50ICptU2VnbWVudDsKKyAgICBib29sIG1FeHRyYWN0ZWRUaHVtYm5haWxzOworCisgICAgdm9pZCBhZGRUcmFja3MoKTsKKyAgICB2b2lkIGZpbmRUaHVtYm5haWxzKCk7CisKKyAgICBNYXRyb3NrYUV4dHJhY3Rvcihjb25zdCBNYXRyb3NrYUV4dHJhY3RvciAmKTsKKyAgICBNYXRyb3NrYUV4dHJhY3RvciAmb3BlcmF0b3I9KGNvbnN0IE1hdHJvc2thRXh0cmFjdG9yICYpOworfTsKKworYm9vbCBTbmlmZk1hdHJvc2thKAorICAgICAgICBjb25zdCBzcDxEYXRhU291cmNlPiAmc291cmNlLCBTdHJpbmc4ICptaW1lVHlwZSwgZmxvYXQgKmNvbmZpZGVuY2UpOworCit9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCisjZW5kaWYgIC8vIE1BVFJPU0tBX0VYVFJBQ1RPUl9IXwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvbWF0cm9za2EvbWt2cGFyc2VyLmNwcCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L21hdHJvc2thL21rdnBhcnNlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGU1MTAwNAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L21hdHJvc2thL21rdnBhcnNlci5jcHAKQEAgLTAsMCArMSwzMTAzIEBACisjaW5jbHVkZSAibWt2cGFyc2VyLmhwcCIKKyNpbmNsdWRlIDxjYXNzZXJ0PgorI2luY2x1ZGUgPGNzdHJpbmc+CisKK21rdnBhcnNlcjo6SU1rdlJlYWRlcjo6fklNa3ZSZWFkZXIoKQoreworfQorCitsb25nIGxvbmcgbWt2cGFyc2VyOjpSZWFkVUludChJTWt2UmVhZGVyKiBwUmVhZGVyLCBsb25nIGxvbmcgcG9zLCBsb25nJiBsZW4pCit7CisgICAgYXNzZXJ0KHBSZWFkZXIpOworICAgIGFzc2VydChwb3MgPj0gMCk7CisgICAgCisgICAgbG9uZyBsb25nIHRvdGFsLCBhdmFpbGFibGU7CisKKyAgICBsb25nIGhyID0gcFJlYWRlci0+TGVuZ3RoKCZ0b3RhbCwgJmF2YWlsYWJsZSk7CisgICAgYXNzZXJ0KGhyID49IDApOworICAgIGFzc2VydChwb3MgPCBhdmFpbGFibGUpOworICAgIGFzc2VydCgoYXZhaWxhYmxlIC0gcG9zKSA+PSAxKTsgIC8vYXNzdW1lIGhlcmUgbWF4IHUtaW50IGxlbiBpcyA4CisgICAgCisgICAgdW5zaWduZWQgY2hhciBiOworCisgICAgaHIgPSBwUmVhZGVyLT5SZWFkKHBvcywgMSwgJmIpOworICAgIGlmIChociA8IDApCisgICAgICAgIHJldHVybiBocjsKKyAgICAgICAgCisgICAgYXNzZXJ0KGhyID09IDBMKTsKKyAgICAKKyAgICBpZiAoYiAmIDB4ODApICAgICAgIC8vMTAwMCAwMDAwCisgICAgeworICAgICAgICBsZW4gPSAxOworICAgICAgICBiICY9IDB4N0Y7ICAgICAgLy8wMTExIDExMTEKKyAgICB9ICAgICAgICAKKyAgICBlbHNlIGlmIChiICYgMHg0MCkgIC8vMDEwMCAwMDAwCisgICAgeworICAgICAgICBsZW4gPSAyOworICAgICAgICBiICY9IDB4M0Y7ICAgICAgLy8wMDExIDExMTEKKyAgICB9CisgICAgZWxzZSBpZiAoYiAmIDB4MjApICAvLzAwMTAgMDAwMAorICAgIHsKKyAgICAgICAgbGVuID0gMzsKKyAgICAgICAgYiAmPSAweDFGOyAgICAgIC8vMDAwMSAxMTExCisgICAgfQorICAgIGVsc2UgaWYgKGIgJiAweDEwKSAgLy8wMDAxIDAwMDAKKyAgICB7CisgICAgICAgIGxlbiA9IDQ7CisgICAgICAgIGIgJj0gMHgwRjsgICAgICAvLzAwMDAgMTExMQorICAgIH0KKyAgICBlbHNlIGlmIChiICYgMHgwOCkgIC8vMDAwMCAxMDAwCisgICAgeworICAgICAgICBsZW4gPSA1OworICAgICAgICBiICY9IDB4MDc7ICAgICAgLy8wMDAwIDAxMTEKKyAgICB9CisgICAgZWxzZSBpZiAoYiAmIDB4MDQpICAvLzAwMDAgMDEwMAorICAgIHsKKyAgICAgICAgbGVuID0gNjsKKyAgICAgICAgYiAmPSAweDAzOyAgICAgIC8vMDAwMCAwMDExCisgICAgfQorICAgIGVsc2UgaWYgKGIgJiAweDAyKSAgLy8wMDAwIDAwMTAKKyAgICB7CisgICAgICAgIGxlbiA9IDc7CisgICAgICAgIGIgJj0gMHgwMTsgICAgICAvLzAwMDAgMDAwMQorICAgIH0KKyAgICBlbHNlIAorICAgIHsKKyAgICAgICAgYXNzZXJ0KGIgJiAweDAxKTsgIC8vMDAwMCAwMDAxCisgICAgICAgIGxlbiA9IDg7CisgICAgICAgIGIgPSAwOyAgICAgICAgICAgICAvLzAwMDAgMDAwMAorICAgIH0KKyAgICAKKyAgICBhc3NlcnQoKGF2YWlsYWJsZSAtIHBvcykgPj0gbGVuKTsKKyAgICAKKyAgICBsb25nIGxvbmcgcmVzdWx0ID0gYjsKKyAgICArK3BvczsKKyAgICBmb3IgKGxvbmcgaSA9IDE7IGkgPCBsZW47ICsraSkKKyAgICB7CisgICAgICAgIGhyID0gcFJlYWRlci0+UmVhZChwb3MsIDEsICZiKTsKKyAgICAgICAgCisgICAgICAgIGlmIChociA8IDApCisgICAgICAgICAgICByZXR1cm4gaHI7CisgICAgICAgICAgICAKKyAgICAgICAgYXNzZXJ0KGhyID09IDBMKTsKKyAgICAgICAgCisgICAgICAgIHJlc3VsdCA8PD0gODsKKyAgICAgICAgcmVzdWx0IHw9IGI7CisgICAgICAgIAorICAgICAgICArK3BvczsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKyAgICAKKyAgICAKK2xvbmcgbG9uZyBta3ZwYXJzZXI6OkdldFVJbnRMZW5ndGgoCisgICAgSU1rdlJlYWRlciogcFJlYWRlciwKKyAgICBsb25nIGxvbmcgcG9zLCAKKyAgICBsb25nJiBsZW4pCit7CisgICAgYXNzZXJ0KHBSZWFkZXIpOworICAgIGFzc2VydChwb3MgPj0gMCk7CisgICAgCisgICAgbG9uZyBsb25nIHRvdGFsLCBhdmFpbGFibGU7CisKKyAgICBsb25nIGhyID0gcFJlYWRlci0+TGVuZ3RoKCZ0b3RhbCwgJmF2YWlsYWJsZSk7CisgICAgYXNzZXJ0KGhyID49IDApOworICAgIGFzc2VydChhdmFpbGFibGUgPD0gdG90YWwpOworICAgIAorICAgIGlmIChwb3MgPj0gYXZhaWxhYmxlKQorICAgICAgICByZXR1cm4gcG9zOyAgLy90b28gZmV3IGJ5dGVzIGF2YWlsYWJsZQorICAgIAorICAgIHVuc2lnbmVkIGNoYXIgYjsKKyAgICAKKyAgICBociA9IHBSZWFkZXItPlJlYWQocG9zLCAxLCAmYik7CisgICAgCisgICAgaWYgKGhyIDwgMCkKKyAgICAgICAgcmV0dXJuIGhyOworCisgICAgYXNzZXJ0KGhyID09IDBMKTsKKyAgICAKKyAgICBpZiAoYiA9PSAwKSAgLy93ZSBjYW4ndCBoYW5kbGUgdS1pbnQgdmFsdWVzIGxhcmdlciB0aGFuIDggYnl0ZXMKKyAgICAgICAgcmV0dXJuIEVfRklMRV9GT1JNQVRfSU5WQUxJRDsKKyAgICAKKyAgICB1bnNpZ25lZCBjaGFyIG0gPSAweDgwOworICAgIGxlbiA9IDE7CisgICAgCisgICAgd2hpbGUgKCEoYiAmIG0pKQorICAgIHsKKyAgICAgICAgbSA+Pj0gMTsKKyAgICAgICAgKytsZW47CisgICAgfQorICAgIAorICAgIHJldHVybiAwOyAgLy9zdWNjZXNzCit9CisKKworbG9uZyBsb25nIG1rdnBhcnNlcjo6U3luY1JlYWRVSW50KAorICAgIElNa3ZSZWFkZXIqIHBSZWFkZXIsCisgICAgbG9uZyBsb25nIHBvcywgCisgICAgbG9uZyBsb25nIHN0b3AsCisgICAgbG9uZyYgbGVuKQoreworICAgIGFzc2VydChwUmVhZGVyKTsKKworICAgIGlmIChwb3MgPj0gc3RvcCkKKyAgICAgICAgcmV0dXJuIEVfRklMRV9GT1JNQVRfSU5WQUxJRDsKKyAgICAKKyAgICB1bnNpZ25lZCBjaGFyIGI7CisgICAgCisgICAgbG9uZyBociA9IHBSZWFkZXItPlJlYWQocG9zLCAxLCAmYik7CisgICAgCisgICAgaWYgKGhyIDwgMCkKKyAgICAgICAgcmV0dXJuIGhyOworICAgICAgICAKKyAgICBpZiAoaHIgIT0gMEwpCisgICAgICAgIHJldHVybiBFX0JVRkZFUl9OT1RfRlVMTDsKKworICAgIGlmIChiID09IDApICAvL3dlIGNhbid0IGhhbmRsZSB1LWludCB2YWx1ZXMgbGFyZ2VyIHRoYW4gOCBieXRlcworICAgICAgICByZXR1cm4gRV9GSUxFX0ZPUk1BVF9JTlZBTElEOworICAgIAorICAgIHVuc2lnbmVkIGNoYXIgbSA9IDB4ODA7CisgICAgbGVuID0gMTsKKyAgICAgICAgCisgICAgd2hpbGUgKCEoYiAmIG0pKQorICAgIHsKKyAgICAgICAgbSA+Pj0gMTsKKyAgICAgICAgKytsZW47CisgICAgfQorICAgIAorICAgIGlmICgocG9zICsgbGVuKSA+IHN0b3ApCisgICAgICAgIHJldHVybiBFX0ZJTEVfRk9STUFUX0lOVkFMSUQ7CisgICAgICAgIAorICAgIGxvbmcgbG9uZyByZXN1bHQgPSBiICYgKH5tKTsKKyAgICArK3BvczsKKyAgICAKKyAgICBmb3IgKGludCBpID0gMTsgaSA8IGxlbjsgKytpKQorICAgIHsKKyAgICAgICAgaHIgPSBwUmVhZGVyLT5SZWFkKHBvcywgMSwgJmIpOworICAgICAgICAKKyAgICAgICAgaWYgKGhyIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBocjsKKyAgICAgICAgICAgCisgICAgICAgIGlmIChociAhPSAwTCkKKyAgICAgICAgICAgIHJldHVybiBFX0JVRkZFUl9OT1RfRlVMTDsKKyAgICAgICAgICAgIAorICAgICAgICByZXN1bHQgPDw9IDg7CisgICAgICAgIHJlc3VsdCB8PSBiOworICAgICAgICAKKyAgICAgICAgKytwb3M7CisgICAgfQorICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworbG9uZyBsb25nIG1rdnBhcnNlcjo6VW5zZXJpYWxpemVVSW50KAorICAgIElNa3ZSZWFkZXIqIHBSZWFkZXIsIAorICAgIGxvbmcgbG9uZyBwb3MsCisgICAgbG9uZyBsb25nIHNpemUpCit7CisgICAgYXNzZXJ0KHBSZWFkZXIpOworICAgIGFzc2VydChwb3MgPj0gMCk7CisgICAgYXNzZXJ0KHNpemUgPiAwKTsKKyAgICBhc3NlcnQoc2l6ZSA8PSA4KTsKKyAgICAKKyAgICBsb25nIGxvbmcgcmVzdWx0ID0gMDsKKyAgICAKKyAgICBmb3IgKGxvbmcgbG9uZyBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICB7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgYjsKKyAgICAgICAgCisgICAgICAgIGNvbnN0IGxvbmcgaHIgPSBwUmVhZGVyLT5SZWFkKHBvcywgMSwgJmIpOworICAgICAgICAKKyAgICAgICAgaWYgKGhyIDwgMCkgICAgICAKKyAgICAgICAgICAgIHJldHVybiBocjsKKyAgICAgICAgcmVzdWx0IDw8PSA4OworICAgICAgICByZXN1bHQgfD0gYjsKKyAgICAgICAgCisgICAgICAgICsrcG9zOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCisKK2Zsb2F0IG1rdnBhcnNlcjo6VW5zZXJpYWxpemU0RmxvYXQoCisgICAgSU1rdlJlYWRlciogcFJlYWRlciwgCisgICAgbG9uZyBsb25nIHBvcykKK3sKKyAgICBhc3NlcnQocFJlYWRlcik7CisgICAgYXNzZXJ0KHBvcyA+PSAwKTsKKyAgICAKKyAgICBsb25nIGxvbmcgdG90YWwsIGF2YWlsYWJsZTsKKyAgICAKKyAgICBsb25nIGhyID0gcFJlYWRlci0+TGVuZ3RoKCZ0b3RhbCwgJmF2YWlsYWJsZSk7CisgICAgYXNzZXJ0KGhyID49IDApOworICAgIGFzc2VydChhdmFpbGFibGUgPD0gdG90YWwpOworICAgIGFzc2VydCgocG9zICsgNCkgPD0gYXZhaWxhYmxlKTsKKyAgICAKKyAgICBmbG9hdCByZXN1bHQ7CisgICAgCisgICAgdW5zaWduZWQgY2hhciogY29uc3QgcCA9ICh1bnNpZ25lZCBjaGFyKikmcmVzdWx0OworICAgIHVuc2lnbmVkIGNoYXIqIHEgPSBwICsgNDsKKyAgICAKKyAgICBmb3IgKDs7KQorICAgIHsKKyAgICAgICAgaHIgPSBwUmVhZGVyLT5SZWFkKHBvcywgMSwgLS1xKTsKKyAgICAgICAgYXNzZXJ0KGhyID09IDBMKTsKKyAgICAgICAgCisgICAgICAgIGlmIChxID09IHApCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAgICAgICArK3BvczsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCitkb3VibGUgbWt2cGFyc2VyOjpVbnNlcmlhbGl6ZThEb3VibGUoCisgICAgSU1rdlJlYWRlciogcFJlYWRlciwgCisgICAgbG9uZyBsb25nIHBvcykKK3sKKyAgICBhc3NlcnQocFJlYWRlcik7CisgICAgYXNzZXJ0KHBvcyA+PSAwKTsKKyAgICAKKyAgICBkb3VibGUgcmVzdWx0OworICAgIAorICAgIHVuc2lnbmVkIGNoYXIqIGNvbnN0IHAgPSAodW5zaWduZWQgY2hhciopJnJlc3VsdDsKKyAgICB1bnNpZ25lZCBjaGFyKiBxID0gcCArIDg7CisgICAgCisgICAgZm9yICg7OykKKyAgICB7CisgICAgICAgIGNvbnN0IGxvbmcgaHIgPSBwUmVhZGVyLT5SZWFkKHBvcywgMSwgLS1xKTsKKyAgICAgICAgYXNzZXJ0KGhyID09IDBMKTsKKyAgICAgICAgCisgICAgICAgIGlmIChxID09IHApCisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIAorICAgICAgICArK3BvczsKKyAgICB9CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc2lnbmVkIGNoYXIgbWt2cGFyc2VyOjpVbnNlcmlhbGl6ZTFTSW50KAorICAgIElNa3ZSZWFkZXIqIHBSZWFkZXIsCisgICAgbG9uZyBsb25nIHBvcykKK3sKKyAgICBhc3NlcnQocFJlYWRlcik7CisgICAgYXNzZXJ0KHBvcyA+PSAwKTsKKyAKKyAgICBsb25nIGxvbmcgdG90YWwsIGF2YWlsYWJsZTsKKworICAgIGxvbmcgaHIgPSBwUmVhZGVyLT5MZW5ndGgoJnRvdGFsLCAmYXZhaWxhYmxlKTsKKyAgICBhc3NlcnQoaHIgPT0gMCk7ICAgCisgICAgYXNzZXJ0KGF2YWlsYWJsZSA8PSB0b3RhbCk7CisgICAgYXNzZXJ0KHBvcyA8IGF2YWlsYWJsZSk7CisKKyAgICBzaWduZWQgY2hhciByZXN1bHQ7CisKKyAgICBociA9IHBSZWFkZXItPlJlYWQocG9zLCAxLCAodW5zaWduZWQgY2hhciopJnJlc3VsdCk7CisgICAgYXNzZXJ0KGhyID09IDApOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc2hvcnQgbWt2cGFyc2VyOjpVbnNlcmlhbGl6ZTJTSW50KAorICAgIElNa3ZSZWFkZXIqIHBSZWFkZXIsIAorICAgIGxvbmcgbG9uZyBwb3MpCit7CisgICAgYXNzZXJ0KHBSZWFkZXIpOworICAgIGFzc2VydChwb3MgPj0gMCk7CisgICAgCisgICAgbG9uZyBsb25nIHRvdGFsLCBhdmFpbGFibGU7CisgICAgCisgICAgbG9uZyBociA9IHBSZWFkZXItPkxlbmd0aCgmdG90YWwsICZhdmFpbGFibGUpOworICAgIGFzc2VydChociA+PSAwKTsKKyAgICBhc3NlcnQoYXZhaWxhYmxlIDw9IHRvdGFsKTsKKyAgICBhc3NlcnQoKHBvcyArIDIpIDw9IGF2YWlsYWJsZSk7CisgICAgCisgICAgc2hvcnQgcmVzdWx0OworICAgIAorICAgIHVuc2lnbmVkIGNoYXIqIGNvbnN0IHAgPSAodW5zaWduZWQgY2hhciopJnJlc3VsdDsKKyAgICB1bnNpZ25lZCBjaGFyKiBxID0gcCArIDI7CisgICAgCisgICAgZm9yICg7OykKKyAgICB7CisgICAgICAgIGhyID0gcFJlYWRlci0+UmVhZChwb3MsIDEsIC0tcSk7CisgICAgICAgIGFzc2VydChociA9PSAwTCk7CisgICAgICAgIAorICAgICAgICBpZiAocSA9PSBwKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAKKyAgICAgICAgKytwb3M7CisgICAgfQorICAgIAorICAgIHJldHVybiByZXN1bHQ7Cit9CisKKworYm9vbCBta3ZwYXJzZXI6Ok1hdGNoKAorICAgIElNa3ZSZWFkZXIqIHBSZWFkZXIsCisgICAgbG9uZyBsb25nJiBwb3MsCisgICAgdW5zaWduZWQgbG9uZyBpZF8sCisgICAgbG9uZyBsb25nJiB2YWwpCisKK3sKKyAgICBhc3NlcnQocFJlYWRlcik7CisgICAgYXNzZXJ0KHBvcyA+PSAwKTsKKyAgICAKKyAgICBsb25nIGxvbmcgdG90YWwsIGF2YWlsYWJsZTsKKworICAgIGxvbmcgaHIgPSBwUmVhZGVyLT5MZW5ndGgoJnRvdGFsLCAmYXZhaWxhYmxlKTsKKyAgICBhc3NlcnQoaHIgPj0gMCk7CisgICAgYXNzZXJ0KGF2YWlsYWJsZSA8PSB0b3RhbCk7CisgICAgCisgICAgbG9uZyBsZW47CisKKyAgICBjb25zdCBsb25nIGxvbmcgaWQgPSBSZWFkVUludChwUmVhZGVyLCBwb3MsIGxlbik7CisgICAgYXNzZXJ0KGlkID49IDApOworICAgIGFzc2VydChsZW4gPiAwKTsKKyAgICBhc3NlcnQobGVuIDw9IDgpOworICAgIGFzc2VydCgocG9zICsgbGVuKSA8PSBhdmFpbGFibGUpOworICAgIAorICAgIGlmICgodW5zaWduZWQgbG9uZylpZCAhPSBpZF8pCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAgcG9zICs9IGxlbjsgIC8vY29uc3VtZSBpZAorICAgIAorICAgIGNvbnN0IGxvbmcgbG9uZyBzaXplID0gUmVhZFVJbnQocFJlYWRlciwgcG9zLCBsZW4pOworICAgIGFzc2VydChzaXplID49IDApOworICAgIGFzc2VydChzaXplIDw9IDgpOworICAgIGFzc2VydChsZW4gPiAwKTsKKyAgICBhc3NlcnQobGVuIDw9IDgpOworICAgIGFzc2VydCgocG9zICsgbGVuKSA8PSBhdmFpbGFibGUpOworICAgIAorICAgIHBvcyArPSBsZW47ICAvL2NvbnN1bWUgbGVuZ3RoIG9mIHNpemUgb2YgcGF5bG9hZAorICAgIAorICAgIHZhbCA9IFVuc2VyaWFsaXplVUludChwUmVhZGVyLCBwb3MsIHNpemUpOworICAgIGFzc2VydCh2YWwgPj0gMCk7CisgICAgCisgICAgcG9zICs9IHNpemU7ICAvL2NvbnN1bWUgc2l6ZSBvZiBwYXlsb2FkCisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2Jvb2wgbWt2cGFyc2VyOjpNYXRjaCgKKyAgICBJTWt2UmVhZGVyKiBwUmVhZGVyLAorICAgIGxvbmcgbG9uZyYgcG9zLAorICAgIHVuc2lnbmVkIGxvbmcgaWRfLAorICAgIGNoYXIqJiB2YWwpCit7CisgICAgYXNzZXJ0KHBSZWFkZXIpOworICAgIGFzc2VydChwb3MgPj0gMCk7CisgICAgCisgICAgbG9uZyBsb25nIHRvdGFsLCBhdmFpbGFibGU7CisKKyAgICBsb25nIGhyID0gcFJlYWRlci0+TGVuZ3RoKCZ0b3RhbCwgJmF2YWlsYWJsZSk7CisgICAgYXNzZXJ0KGhyID49IDApOworICAgIGFzc2VydChhdmFpbGFibGUgPD0gdG90YWwpOworICAgIAorICAgIGxvbmcgbGVuOworCisgICAgY29uc3QgbG9uZyBsb25nIGlkID0gUmVhZFVJbnQocFJlYWRlciwgcG9zLCBsZW4pOworICAgIGFzc2VydChpZCA+PSAwKTsKKyAgICBhc3NlcnQobGVuID4gMCk7CisgICAgYXNzZXJ0KGxlbiA8PSA4KTsKKyAgICBhc3NlcnQoKHBvcyArIGxlbikgPD0gYXZhaWxhYmxlKTsKKyAgICAKKyAgICBpZiAoKHVuc2lnbmVkIGxvbmcpaWQgIT0gaWRfKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgcG9zICs9IGxlbjsgIC8vY29uc3VtZSBpZAorICAgIAorICAgIGNvbnN0IGxvbmcgbG9uZyBzaXplXyA9IFJlYWRVSW50KHBSZWFkZXIsIHBvcywgbGVuKTsKKyAgICBhc3NlcnQoc2l6ZV8gPj0gMCk7CisgICAgYXNzZXJ0KGxlbiA+IDApOworICAgIGFzc2VydChsZW4gPD0gOCk7CisgICAgYXNzZXJ0KChwb3MgKyBsZW4pIDw9IGF2YWlsYWJsZSk7CisgICAgCisgICAgcG9zICs9IGxlbjsgIC8vY29uc3VtZSBsZW5ndGggb2Ygc2l6ZSBvZiBwYXlsb2FkCisgICAgYXNzZXJ0KChwb3MgKyBzaXplXykgPD0gYXZhaWxhYmxlKTsKKworICAgIGNvbnN0IHNpemVfdCBzaXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihzaXplXyk7ICAgIAorICAgIHZhbCA9IG5ldyBjaGFyW3NpemUrMV07CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkKKyAgICB7CisgICAgICAgIGNoYXIgYzsKKworICAgICAgICBociA9IHBSZWFkZXItPlJlYWQocG9zICsgaSwgMSwgKHVuc2lnbmVkIGNoYXIqKSZjKTsKKyAgICAgICAgYXNzZXJ0KGhyID09IDBMKTsKKyAgICAgICAgICAgIAorICAgICAgICB2YWxbaV0gPSBjOworICAgCisgICAgICAgIGlmIChjID09ICdcMCcpCisgICAgICAgICAgICBicmVhazsgICAgIAorICAgCisgICAgfQorCisgICAgdmFsW3NpemVdID0gJ1wwJzsKKyAgICBwb3MgKz0gc2l6ZV87ICAvL2NvbnN1bWUgc2l6ZSBvZiBwYXlsb2FkCisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKKyNpZiAwCitib29sIG1rdnBhcnNlcjo6TWF0Y2goCisgICAgSU1rdlJlYWRlciogcFJlYWRlciwKKyAgICBsb25nIGxvbmcmIHBvcywKKyAgICB1bnNpZ25lZCBsb25nIGlkLAorICAgIHdjaGFyX3QqJiB2YWwpCit7CisgICAgY2hhciogc3RyOworICAgIAorICAgIGlmICghTWF0Y2gocFJlYWRlciwgcG9zLCBpZCwgc3RyKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgY29uc3Qgc2l6ZV90IHNpemUgPSBtYnN0b3djcyhOVUxMLCBzdHIsIDApOworICAgICAgIAorICAgIGlmIChzaXplID09IDApIAorICAgICAgICB2YWwgPSBOVUxMOworICAgIGVsc2UgCisgICAgeyAKKyAgICAgICAgdmFsID0gbmV3IHdjaGFyX3Rbc2l6ZSsxXTsKKyAgICAgICAgbWJzdG93Y3ModmFsLCBzdHIsIHNpemUpOworICAgICAgICB2YWxbc2l6ZV0gPSBMJ1wwJzsKKyAgICB9CisKKyAgICBkZWxldGVbXSBzdHI7CisgICAgcmV0dXJuIHRydWU7ICAgIAorfQorI2VuZGlmCisKKworYm9vbCBta3ZwYXJzZXI6Ok1hdGNoKAorICAgIElNa3ZSZWFkZXIqIHBSZWFkZXIsCisgICAgbG9uZyBsb25nJiBwb3MsCisgICAgdW5zaWduZWQgbG9uZyBpZF8sCisgICAgdW5zaWduZWQgY2hhciomIHZhbCwKKyAgICBzaXplX3QgKm9wdGlvbmFsU2l6ZSkKK3sKKyAgICBhc3NlcnQocFJlYWRlcik7CisgICAgYXNzZXJ0KHBvcyA+PSAwKTsKKyAgICAKKyAgICBsb25nIGxvbmcgdG90YWwsIGF2YWlsYWJsZTsKKworICAgIGxvbmcgaHIgPSBwUmVhZGVyLT5MZW5ndGgoJnRvdGFsLCAmYXZhaWxhYmxlKTsKKyAgICBhc3NlcnQoaHIgPj0gMCk7CisgICAgYXNzZXJ0KGF2YWlsYWJsZSA8PSB0b3RhbCk7CisgICAgCisgICAgbG9uZyBsZW47CisgICAgY29uc3QgbG9uZyBsb25nIGlkID0gUmVhZFVJbnQocFJlYWRlciwgcG9zLCBsZW4pOworICAgIGFzc2VydChpZCA+PSAwKTsKKyAgICBhc3NlcnQobGVuID4gMCk7CisgICAgYXNzZXJ0KGxlbiA8PSA4KTsKKyAgICBhc3NlcnQoKHBvcyArIGxlbikgPD0gYXZhaWxhYmxlKTsKKyAgICAKKyAgICBpZiAoKHVuc2lnbmVkIGxvbmcpaWQgIT0gaWRfKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgIHBvcyArPSBsZW47ICAvL2NvbnN1bWUgaWQKKyAgICAKKyAgICBjb25zdCBsb25nIGxvbmcgc2l6ZV8gPSBSZWFkVUludChwUmVhZGVyLCBwb3MsIGxlbik7CisgICAgYXNzZXJ0KHNpemVfID49IDApOworICAgIGFzc2VydChsZW4gPiAwKTsKKyAgICBhc3NlcnQobGVuIDw9IDgpOworICAgIGFzc2VydCgocG9zICsgbGVuKSA8PSBhdmFpbGFibGUpOworICAgIAorICAgIHBvcyArPSBsZW47ICAvL2NvbnN1bWUgbGVuZ3RoIG9mIHNpemUgb2YgcGF5bG9hZAorICAgIGFzc2VydCgocG9zICsgc2l6ZV8pIDw9IGF2YWlsYWJsZSk7CisKKyAgICBjb25zdCBzaXplX3Qgc2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4oc2l6ZV8pOyAgICAKKyAgICB2YWwgPSBuZXcgdW5zaWduZWQgY2hhcltzaXplXTsKKyAKKyAgICBpZiAob3B0aW9uYWxTaXplKSB7CisgICAgICAgICpvcHRpb25hbFNpemUgPSBzaXplOworICAgIH0KKworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgc2l6ZTsgKytpKQorICAgIHsKKyAgICAgICAgdW5zaWduZWQgY2hhciBiOworCisgICAgICAgIGhyID0gcFJlYWRlci0+UmVhZChwb3MgKyBpLCAxLCAmYik7CisgICAgICAgIGFzc2VydChociA9PSAwTCk7CisKKyAgICAgICAgdmFsW2ldID0gYjsgCisgICAgfQorICAgIAorICAgIHBvcyArPSBzaXplXzsgIC8vY29uc3VtZSBzaXplIG9mIHBheWxvYWQgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKKworYm9vbCBta3ZwYXJzZXI6Ok1hdGNoKAorICAgIElNa3ZSZWFkZXIqIHBSZWFkZXIsCisgICAgbG9uZyBsb25nJiBwb3MsCisgICAgdW5zaWduZWQgbG9uZyBpZF8sCisgICAgZG91YmxlJiB2YWwpCit7CisgICAgYXNzZXJ0KHBSZWFkZXIpOworICAgIGFzc2VydChwb3MgPj0gMCk7CisgICAgCisgICAgbG9uZyBsb25nIHRvdGFsLCBhdmFpbGFibGU7CisKKyAgICBsb25nIGhyID0gcFJlYWRlci0+TGVuZ3RoKCZ0b3RhbCwgJmF2YWlsYWJsZSk7CisgICAgYXNzZXJ0KGhyID49IDApOworICAgIGFzc2VydChhdmFpbGFibGUgPD0gdG90YWwpOworICAgIGxvbmcgaWRsZW47CisgICAgY29uc3QgbG9uZyBsb25nIGlkID0gUmVhZFVJbnQocFJlYWRlciwgcG9zLCBpZGxlbik7CisgICAgYXNzZXJ0KGlkID49IDApOyAgLy9UT0RPCisgICAgCisgICAgaWYgKCh1bnNpZ25lZCBsb25nKWlkICE9IGlkXykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgbG9uZyBzaXplbGVuOworICAgIGNvbnN0IGxvbmcgbG9uZyBzaXplID0gUmVhZFVJbnQocFJlYWRlciwgcG9zICsgaWRsZW4sIHNpemVsZW4pOworCisgICAgc3dpdGNoIChzaXplKQorICAgIHsJCisgICAgICAgIGNhc2UgNDoKKyAgICAgICAgY2FzZSA4OgorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcG9zICs9IGlkbGVuICsgc2l6ZWxlbjsgIC8vY29uc3VtZSBpZCBhbmQgc2l6ZSBmaWVsZHMKKyAgICBhc3NlcnQoKHBvcyArIHNpemUpIDw9IGF2YWlsYWJsZSk7CisKKyAgICBpZiAoc2l6ZSA9PSA0KQorICAgICAgICB2YWwgPSBVbnNlcmlhbGl6ZTRGbG9hdChwUmVhZGVyLCBwb3MpOworICAgIGVsc2UKKyAgICB7CisgICAgICAgIGFzc2VydChzaXplID09IDgpOworICAgICAgICB2YWwgPSBVbnNlcmlhbGl6ZThEb3VibGUocFJlYWRlciwgcG9zKTsKKyAgICB9CisgICAgCisgICAgcG9zICs9IHNpemU7ICAvL2NvbnN1bWUgc2l6ZSBvZiBwYXlsb2FkCisgICAgCisgICAgcmV0dXJuIHRydWU7Cit9CisKKworYm9vbCBta3ZwYXJzZXI6Ok1hdGNoKAorICAgIElNa3ZSZWFkZXIqIHBSZWFkZXIsCisgICAgbG9uZyBsb25nJiBwb3MsCisgICAgdW5zaWduZWQgbG9uZyBpZF8sCisgICAgc2hvcnQmIHZhbCkKK3sKKyAgICBhc3NlcnQocFJlYWRlcik7CisgICAgYXNzZXJ0KHBvcyA+PSAwKTsKKyAgICAKKyAgICBsb25nIGxvbmcgdG90YWwsIGF2YWlsYWJsZTsKKworICAgIGxvbmcgaHIgPSBwUmVhZGVyLT5MZW5ndGgoJnRvdGFsLCAmYXZhaWxhYmxlKTsKKyAgICBhc3NlcnQoaHIgPj0gMCk7CisgICAgYXNzZXJ0KGF2YWlsYWJsZSA8PSB0b3RhbCk7CisgICAgCisgICAgbG9uZyBsZW47CisgICAgY29uc3QgbG9uZyBsb25nIGlkID0gUmVhZFVJbnQocFJlYWRlciwgcG9zLCBsZW4pOworICAgIGFzc2VydChpZCA+PSAwKTsKKyAgICBhc3NlcnQoKHBvcyArIGxlbikgPD0gYXZhaWxhYmxlKTsKKyAgICAKKyAgICBpZiAoKHVuc2lnbmVkIGxvbmcpaWQgIT0gaWRfKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIAorICAgIHBvcyArPSBsZW47ICAvL2NvbnN1bWUgaWQKKyAgICAKKyAgICBjb25zdCBsb25nIGxvbmcgc2l6ZSA9IFJlYWRVSW50KHBSZWFkZXIsIHBvcywgbGVuKTsKKyAgICBhc3NlcnQoc2l6ZSA8PSAyKTsKKyAgICBhc3NlcnQoKHBvcyArIGxlbikgPD0gYXZhaWxhYmxlKTsKKyAgIAorICAgIHBvcyArPSBsZW47ICAvL2NvbnN1bWUgbGVuZ3RoIG9mIHNpemUgb2YgcGF5bG9hZAorICAgIGFzc2VydCgocG9zICsgc2l6ZSkgPD0gYXZhaWxhYmxlKTsKKworICAgIC8vVE9ETzoKKyAgICAvLyBHZW5lcmFsaXplIHRoaXMgdG8gd29yayBmb3IgYW55IHNpemUgc2lnbmVkIGludAorICAgIGlmIChzaXplID09IDEpCisgICAgICAgIHZhbCA9IFVuc2VyaWFsaXplMVNJbnQocFJlYWRlciwgcG9zKTsKKyAgICBlbHNlIAorICAgICAgICB2YWwgPSBVbnNlcmlhbGl6ZTJTSW50KHBSZWFkZXIsIHBvcyk7CisgICAgICAgIAorICAgIHBvcyArPSBzaXplOyAgLy9jb25zdW1lIHNpemUgb2YgcGF5bG9hZAorICAgIAorICAgIHJldHVybiB0cnVlOworfQorCisKK25hbWVzcGFjZSBta3ZwYXJzZXIKK3sKKworRUJNTEhlYWRlcjo6RUJNTEhlYWRlcigpOgorICAgIG1fZG9jVHlwZShOVUxMKQoreworfQorCitFQk1MSGVhZGVyOjp+RUJNTEhlYWRlcigpCit7CisgICAgZGVsZXRlW10gbV9kb2NUeXBlOworfQorCitsb25nIGxvbmcgRUJNTEhlYWRlcjo6UGFyc2UoCisgICAgSU1rdlJlYWRlciogcFJlYWRlciwKKyAgICBsb25nIGxvbmcmIHBvcykKK3sKKyAgICBhc3NlcnQocFJlYWRlcik7CisgICAgCisgICAgbG9uZyBsb25nIHRvdGFsLCBhdmFpbGFibGU7CisgICAgCisgICAgbG9uZyBociA9IHBSZWFkZXItPkxlbmd0aCgmdG90YWwsICZhdmFpbGFibGUpOworICAgIAorICAgIGlmIChociA8IDApIAorICAgICAgICByZXR1cm4gaHI7CisgICAgCisgICAgcG9zID0gMDsgICAgCisgICAgbG9uZyBsb25nIGVuZCA9ICgxMDI0IDwgYXZhaWxhYmxlKT8gMTAyNDogYXZhaWxhYmxlOyAgICAKKworICAgIGZvciAoOzspCisgICAgeyAgICAKKyAgICAgICAgdW5zaWduZWQgY2hhciBiID0gMDsKKyAgICAKKyAgICAgICAgd2hpbGUgKHBvcyA8IGVuZCkKKyAgICAgICAgeworICAgICAgICAgICAgaHIgPSBwUmVhZGVyLT5SZWFkKHBvcywgMSwgJmIpOworICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChociA8IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIGhyOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoYiA9PSAweDFBKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgKytwb3M7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgaWYgKGIgIT0gMHgxQSkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKChwb3MgPj0gMTAyNCkgfHwKKyAgICAgICAgICAgICAgICAoYXZhaWxhYmxlID49IHRvdGFsKSB8fCAKKyAgICAgICAgICAgICAgICAoKHRvdGFsIC0gYXZhaWxhYmxlKSA8IDUpKQorICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgcmV0dXJuIGF2YWlsYWJsZSArIDU7ICAvLzUgPSA0LWJ5dGUgSUQgKyAxc3QgYnl0ZSBvZiBzaXplCisgICAgICAgIH0KKyAgICAKKyAgICAgICAgaWYgKCh0b3RhbCAtIHBvcykgPCA1KQorICAgICAgICAgICAgcmV0dXJuIEVfRklMRV9GT1JNQVRfSU5WQUxJRDsKKyAgICAgICAgICAgIAorICAgICAgICBpZiAoKGF2YWlsYWJsZSAtIHBvcykgPCA1KQorICAgICAgICAgICAgcmV0dXJuIHBvcyArIDU7ICAvL3RyeSBhZ2FpbiBsYXRlcgorCisgICAgICAgIGxvbmcgbGVuOyAgICAgICAgICAgIAorCisgICAgICAgIGNvbnN0IGxvbmcgbG9uZyByZXN1bHQgPSBSZWFkVUludChwUmVhZGVyLCBwb3MsIGxlbik7CisgICAgICAgIAorICAgICAgICBpZiAocmVzdWx0IDwgMCkgIC8vZXJyb3IKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICAKKyAgICAgICAgaWYgKHJlc3VsdCA9PSAweDBBNDVERkEzKSAgLy9SZWFkSWQgbWFza3Mtb2ZmIGxlbmd0aCBpbmRpY2F0b3IgYml0cworICAgICAgICB7CisgICAgICAgICAgICBhc3NlcnQobGVuID09IDQpOworICAgICAgICAgICAgcG9zICs9IGxlbjsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgKytwb3M7ICAvL3Rocm93IGF3YXkganVzdCB0aGUgMHgxQSBieXRlLCBhbmQgdHJ5IGFnYWluCisgICAgfQorICAgICAgICAKKyAgICBsb25nIGxlbjsKKyAgICBsb25nIGxvbmcgcmVzdWx0ID0gR2V0VUludExlbmd0aChwUmVhZGVyLCBwb3MsIGxlbik7CisgICAgCisgICAgaWYgKHJlc3VsdCA8IDApICAvL2Vycm9yCisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIAorICAgIGlmIChyZXN1bHQgPiAwKSAgLy9uZWVkIG1vcmUgZGF0YQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAKKyAgICBhc3NlcnQobGVuID4gMCk7CisgICAgYXNzZXJ0KGxlbiA8PSA4KTsKKyAgICAKKyAgICBpZiAoKHRvdGFsIC0gIHBvcykgPCBsZW4pCisgICAgICAgIHJldHVybiBFX0ZJTEVfRk9STUFUX0lOVkFMSUQ7CisgICAgaWYgKChhdmFpbGFibGUgLSBwb3MpIDwgbGVuKQorICAgICAgICByZXR1cm4gcG9zICsgbGVuOyAgLy90cnkgYWdhaW4gbGF0ZXIKKyAgICAgICAgCisgICAgcmVzdWx0ID0gUmVhZFVJbnQocFJlYWRlciwgcG9zLCBsZW4pOworICAgIAorICAgIGlmIChyZXN1bHQgPCAwKSAgLy9lcnJvcgorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAKKyAgICBwb3MgKz0gbGVuOyAgLy9jb25zdW1lIHUtaW50CisgICAgCisgICAgaWYgKCh0b3RhbCAtIHBvcykgPCByZXN1bHQpCisgICAgICAgIHJldHVybiBFX0ZJTEVfRk9STUFUX0lOVkFMSUQ7CisKKyAgICBpZiAoKGF2YWlsYWJsZSAtIHBvcykgPCByZXN1bHQpCisgICAgICAgIHJldHVybiBwb3MgKyByZXN1bHQ7CisgICAgICAgIAorICAgIGVuZCA9IHBvcyArIHJlc3VsdDsKKyAgICAKKyAgICBtX3ZlcnNpb24gPSAxOworICAgIG1fcmVhZFZlcnNpb24gPSAxOworICAgIG1fbWF4SWRMZW5ndGggPSA0OworICAgIG1fbWF4U2l6ZUxlbmd0aCA9IDg7CisgICAgbV9kb2NUeXBlVmVyc2lvbiA9IDE7CisgICAgbV9kb2NUeXBlUmVhZFZlcnNpb24gPSAxOworCisgICAgd2hpbGUgKHBvcyA8IGVuZCkKKyAgICB7CisgICAgICAgIGlmIChNYXRjaChwUmVhZGVyLCBwb3MsIDB4MDI4NiwgbV92ZXJzaW9uKSkgICAKKyAgICAgICAgICAgIDsKKyAgICAgICAgZWxzZSBpZiAoTWF0Y2gocFJlYWRlciwgcG9zLCAweDAyRjcsIG1fcmVhZFZlcnNpb24pKSAgICAgICAgCisgICAgICAgICAgICA7CisgICAgICAgIGVsc2UgaWYgKE1hdGNoKHBSZWFkZXIsIHBvcywgMHgwMkYyLCBtX21heElkTGVuZ3RoKSkgICAgICAgIAorICAgICAgICAgICAgOworICAgICAgICBlbHNlIGlmIChNYXRjaChwUmVhZGVyLCBwb3MsIDB4MDJGMywgbV9tYXhTaXplTGVuZ3RoKSkgICAgICAKKyAgICAgICAgICAgIDsKKyAgICAgICAgZWxzZSBpZiAoTWF0Y2gocFJlYWRlciwgcG9zLCAweDAyODIsIG1fZG9jVHlwZSkpICAgICAgICAgICAgCisgICAgICAgICAgICA7IAorICAgICAgICBlbHNlIGlmIChNYXRjaChwUmVhZGVyLCBwb3MsIDB4MDI4NywgbV9kb2NUeXBlVmVyc2lvbikpICAgICAKKyAgICAgICAgICAgIDsKKyAgICAgICAgZWxzZSBpZiAoTWF0Y2gocFJlYWRlciwgcG9zLCAweDAyODUsIG1fZG9jVHlwZVJlYWRWZXJzaW9uKSkgCisgICAgICAgICAgICA7CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgcmVzdWx0ID0gUmVhZFVJbnQocFJlYWRlciwgcG9zLCBsZW4pOworICAgICAgICAgICAgYXNzZXJ0KHJlc3VsdCA+IDApOworICAgICAgICAgICAgYXNzZXJ0KGxlbiA+IDApOworICAgICAgICAgICAgYXNzZXJ0KGxlbiA8PSA4KTsKKyAgICAgICAgCisgICAgICAgICAgICBwb3MgKz0gbGVuOworICAgICAgICAgICAgYXNzZXJ0KHBvcyA8IGVuZCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJlc3VsdCA9IFJlYWRVSW50KHBSZWFkZXIsIHBvcywgbGVuKTsKKyAgICAgICAgICAgIGFzc2VydChyZXN1bHQgPj0gMCk7CisgICAgICAgICAgICBhc3NlcnQobGVuID4gMCk7CisgICAgICAgICAgICBhc3NlcnQobGVuIDw9IDgpOworICAgICAgICAgICAgCisgICAgICAgICAgICBwb3MgKz0gbGVuICsgcmVzdWx0OworICAgICAgICAgICAgYXNzZXJ0KHBvcyA8PSBlbmQpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIGFzc2VydChwb3MgPT0gZW5kKTsKKyAgICAgICAgCisgICAgcmV0dXJuIDA7ICAgIAorfQorCisKK1NlZ21lbnQ6OlNlZ21lbnQoCisgICAgSU1rdlJlYWRlciogcFJlYWRlciwKKyAgICBsb25nIGxvbmcgc3RhcnQsCisgICAgbG9uZyBsb25nIHNpemUpIDoKKyAgICBtX3BSZWFkZXIocFJlYWRlciksCisgICAgbV9zdGFydChzdGFydCksCisgICAgbV9zaXplKHNpemUpLAorICAgIG1fcG9zKHN0YXJ0KSwKKyAgICBtX3BJbmZvKE5VTEwpLAorICAgIG1fcFRyYWNrcyhOVUxMKSwKKyAgICBtX2NsdXN0ZXJDb3VudCgwKQorICAgIC8vbV9jbHVzdGVyTnVtYmVyKDApCit7Cit9CisKKworU2VnbWVudDo6flNlZ21lbnQoKQoreworICAgIENsdXN0ZXIqKiBpID0gbV9jbHVzdGVyczsKKyAgICBDbHVzdGVyKiogaiA9IG1fY2x1c3RlcnMgKyBtX2NsdXN0ZXJDb3VudDsKKworICAgIHdoaWxlIChpICE9IGopCisgICAgeworICAgICAgICBDbHVzdGVyKiBwID0gKmkrKzsKKyAgICAgICAgYXNzZXJ0KHApOwkJCisgICAgICAgIGRlbGV0ZSBwOworICAgIH0gCisgICAgCisgICAgZGVsZXRlW10gbV9jbHVzdGVyczsKKyAgICAgICAKKyAgICBkZWxldGUgbV9wVHJhY2tzOworICAgIGRlbGV0ZSBtX3BJbmZvOworfQorCisKK2xvbmcgbG9uZyBTZWdtZW50OjpDcmVhdGVJbnN0YW5jZSgKKyAgICBJTWt2UmVhZGVyKiBwUmVhZGVyLAorICAgIGxvbmcgbG9uZyBwb3MsCisgICAgU2VnbWVudComIHBTZWdtZW50KQoreworICAgIGFzc2VydChwUmVhZGVyKTsKKyAgICBhc3NlcnQocG9zID49IDApOworICAgIAorICAgIHBTZWdtZW50ID0gTlVMTDsKKyAgICAKKyAgICBsb25nIGxvbmcgdG90YWwsIGF2YWlsYWJsZTsKKyAgICAKKyAgICBsb25nIGhyID0gcFJlYWRlci0+TGVuZ3RoKCZ0b3RhbCwgJmF2YWlsYWJsZSk7CisgICAgYXNzZXJ0KGhyID49IDApOworICAgIGFzc2VydChhdmFpbGFibGUgPD0gdG90YWwpOworICAgIAorICAgIC8vSSB3b3VsZCBhc3N1bWUgdGhhdCBpbiBwcmFjdGljZSB0aGlzIGxvb3Agd291bGQgZXhlY3V0ZQorICAgIC8vZXhhY3RseSBvbmNlLCBidXQgd2UgYWxsb3cgZm9yIG90aGVyIGVsZW1lbnRzIChlLmcuIFZvaWQpCisgICAgLy90byBpbW1lZGlhdGVseSBmb2xsb3cgdGhlIEVCTUwgaGVhZGVyLiAgVGhpcyBpcyBmaW5lIGZvcgorICAgIC8vdGhlIHNvdXJjZSBmaWx0ZXIgY2FzZSAoc2luY2UgdGhlIGVudGlyZSBmaWxlIGlzIGF2YWlsYWJsZSksCisgICAgLy9idXQgaW4gdGhlIHNwbGl0dGVyIGNhc2Ugb3ZlciBhIG5ldHdvcmsgd2Ugc2hvdWxkIHByb2JhYmx5CisgICAgLy9qdXN0IGdpdmUgdXAgZWFybHkuICBXZSBjb3VsZCBmb3IgZXhhbXBsZSBkZWNpZGUgb25seSB0bworICAgIC8vZXhlY3V0ZSB0aGlzIGxvb3AgYSBtYXhpbXVtIG9mLCBzYXksIDEwIHRpbWVzLgorICAgIAorICAgIHdoaWxlIChwb3MgPCB0b3RhbCkKKyAgICB7ICAgIAorICAgICAgICAvL1JlYWQgSUQKKyAgICAgICAgCisgICAgICAgIGxvbmcgbGVuOworICAgICAgICBsb25nIGxvbmcgcmVzdWx0ID0gR2V0VUludExlbmd0aChwUmVhZGVyLCBwb3MsIGxlbik7CisgICAgICAgIAorICAgICAgICBpZiAocmVzdWx0KSAgLy9lcnJvciwgb3IgdG9vIGZldyBhdmFpbGFibGUgYnl0ZXMKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgICAgICAKKyAgICAgICAgaWYgKChwb3MgKyBsZW4pID4gdG90YWwpCisgICAgICAgICAgICByZXR1cm4gRV9GSUxFX0ZPUk1BVF9JTlZBTElEOworICAgICAgICAgICAgCisgICAgICAgIGlmICgocG9zICsgbGVuKSA+IGF2YWlsYWJsZSkKKyAgICAgICAgICAgIHJldHVybiBwb3MgKyBsZW47CisKKyAgICAgICAgLy9UT0RPOiBpZiB3ZSBsaWJlcmFsaXplIHRoZSBiZWhhdmlvciBvZiBSZWFkVUludCwgd2UgY2FuCisgICAgICAgIC8vcHJvYmFibHkgZWxpbWluYXRlIGhhdmluZyB0byB1c2UgR2V0VUludExlbmd0aCBoZXJlLgorICAgICAgICBjb25zdCBsb25nIGxvbmcgaWQgPSBSZWFkVUludChwUmVhZGVyLCBwb3MsIGxlbik7CisgICAgICAgIAorICAgICAgICBpZiAoaWQgPCAwKSAgLy9lcnJvcgorICAgICAgICAgICAgcmV0dXJuIGlkOworICAgICAgICAgICAgCisgICAgICAgIHBvcyArPSBsZW47ICAvL2NvbnN1bWUgSUQKKyAgICAgICAgCisgICAgICAgIC8vUmVhZCBTaXplCisgICAgICAgIAorICAgICAgICByZXN1bHQgPSBHZXRVSW50TGVuZ3RoKHBSZWFkZXIsIHBvcywgbGVuKTsKKyAgICAgICAgCisgICAgICAgIGlmIChyZXN1bHQpICAvL2Vycm9yLCBvciB0b28gZmV3IGF2YWlsYWJsZSBieXRlcworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIAorICAgICAgICBpZiAoKHBvcyArIGxlbikgPiB0b3RhbCkKKyAgICAgICAgICAgIHJldHVybiBFX0ZJTEVfRk9STUFUX0lOVkFMSUQ7CisgICAgICAgICAgICAKKyAgICAgICAgaWYgKChwb3MgKyBsZW4pID4gYXZhaWxhYmxlKQorICAgICAgICAgICAgcmV0dXJuIHBvcyArIGxlbjsKKworICAgICAgICAvL1RPRE86IGlmIHdlIGxpYmVyYWxpemUgdGhlIGJlaGF2aW9yIG9mIFJlYWRVSW50LCB3ZSBjYW4KKyAgICAgICAgLy9wcm9iYWJseSBlbGltaW5hdGUgaGF2aW5nIHRvIHVzZSBHZXRVSW50TGVuZ3RoIGhlcmUuCisgICAgICAgIGNvbnN0IGxvbmcgbG9uZyBzaXplID0gUmVhZFVJbnQocFJlYWRlciwgcG9zLCBsZW4pOworICAgICAgICAKKyAgICAgICAgaWYgKHNpemUgPCAwKQorICAgICAgICAgICAgcmV0dXJuIHNpemU7CisgICAgICAgICAgICAKKyAgICAgICAgcG9zICs9IGxlbjsgIC8vY29uc3VtZSBsZW5ndGggb2Ygc2l6ZSBvZiBlbGVtZW50CisgICAgICAgIAorICAgICAgICAvL1BvcyBub3cgcG9pbnRzIHRvIHN0YXJ0IG9mIHBheWxvYWQKKyAgICAgICAgCisgICAgICAgIGlmICgocG9zICsgc2l6ZSkgPiB0b3RhbCkKKyAgICAgICAgICAgIHJldHVybiBFX0ZJTEVfRk9STUFUX0lOVkFMSUQ7CisgICAgICAgIAorICAgICAgICBpZiAoaWQgPT0gMHgwODUzODA2NykgIC8vU2VnbWVudCBJRAorICAgICAgICB7CisgICAgICAgICAgICBwU2VnbWVudCA9IG5ldyAgU2VnbWVudChwUmVhZGVyLCBwb3MsIHNpemUpOyAKKyAgICAgICAgICAgIGFzc2VydChwU2VnbWVudCk7ICAvL1RPRE8gICAKKworICAgICAgICAgICAgcmV0dXJuIDA7ICAgIC8vc3VjY2VzcworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwb3MgKz0gc2l6ZTsgIC8vY29uc3VtZSBwYXlsb2FkCisgICAgfQorICAgIAorICAgIGFzc2VydChwb3MgPT0gdG90YWwpOworICAgIAorICAgIHBTZWdtZW50ID0gbmV3IFNlZ21lbnQocFJlYWRlciwgcG9zLCAwKTsgCisgICAgYXNzZXJ0KHBTZWdtZW50KTsgIC8vVE9ETyAgIAorCisgICAgcmV0dXJuIDA7ICAvL3N1Y2Nlc3MgKHNvcnQgb2YpCit9CisKKworbG9uZyBsb25nIFNlZ21lbnQ6OlBhcnNlSGVhZGVycygpCit7CisgICAgLy9PdXRlcm1vc3QgKGxldmVsIDApIHNlZ21lbnQgb2JqZWN0IGhhcyBiZWVuIGNvbnN0cnVjdGVkLCAKKyAgICAvL2FuZCBwb3MgZGVzaWduYXRlcyBzdGFydCBvZiBwYXlsb2FkLiAgV2UgbmVlZCB0byBmaW5kIHRoZQorICAgIC8vaW5uZXIgKGxldmVsIDEpIGVsZW1lbnRzLgorICAgIGxvbmcgbG9uZyB0b3RhbCwgYXZhaWxhYmxlOworICAgIAorICAgIGxvbmcgaHIgPSBtX3BSZWFkZXItPkxlbmd0aCgmdG90YWwsICZhdmFpbGFibGUpOworICAgIGFzc2VydChociA+PSAwKTsKKyAgICBhc3NlcnQoYXZhaWxhYmxlIDw9IHRvdGFsKTsKKyAgICAKKyAgICBjb25zdCBsb25nIGxvbmcgc3RvcCA9IG1fc3RhcnQgKyBtX3NpemU7CisgICAgYXNzZXJ0KHN0b3AgPD0gdG90YWwpOworICAgIGFzc2VydChtX3BvcyA8PSBzdG9wKTsKKyAgICAKKyAgICBib29sIGJRdWl0ID0gZmFsc2U7CisgICAgd2hpbGUgKChtX3BvcyA8IHN0b3ApICYmICFiUXVpdCkKKyAgICB7CisgICAgICAgIGxvbmcgbG9uZyBwb3MgPSBtX3BvczsKKyAgICAgICAgCisgICAgICAgIGxvbmcgbGVuOworICAgICAgICBsb25nIGxvbmcgcmVzdWx0ID0gR2V0VUludExlbmd0aChtX3BSZWFkZXIsIHBvcywgbGVuKTsKKyAgICAgICAgCisgICAgICAgIGlmIChyZXN1bHQpICAvL2Vycm9yLCBvciB0b28gZmV3IGF2YWlsYWJsZSBieXRlcworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIAorICAgICAgICBpZiAoKHBvcyArIGxlbikgPiBzdG9wKQorICAgICAgICAgICAgcmV0dXJuIEVfRklMRV9GT1JNQVRfSU5WQUxJRDsKKyAgICAgICAgICAgIAorICAgICAgICBpZiAoKHBvcyArIGxlbikgPiBhdmFpbGFibGUpCisgICAgICAgICAgICByZXR1cm4gcG9zICsgbGVuOworICAgICAgICAgICAgCisgICAgICAgIGNvbnN0IGxvbmcgbG9uZyBpZHBvcyA9IHBvczsKKyAgICAgICAgY29uc3QgbG9uZyBsb25nIGlkID0gUmVhZFVJbnQobV9wUmVhZGVyLCBpZHBvcywgbGVuKTsKKyAgICAgICAgCisgICAgICAgIGlmIChpZCA8IDApICAvL2Vycm9yCisgICAgICAgICAgICByZXR1cm4gaWQ7CisgICAgICAgICAgICAKKyAgICAgICAgcG9zICs9IGxlbjsgIC8vY29uc3VtZSBJRAorICAgICAgICAKKyAgICAgICAgLy9SZWFkIFNpemUKKyAgICAgICAgcmVzdWx0ID0gR2V0VUludExlbmd0aChtX3BSZWFkZXIsIHBvcywgbGVuKTsKKyAgICAgICAgCisgICAgICAgIGlmIChyZXN1bHQpICAvL2Vycm9yLCBvciB0b28gZmV3IGF2YWlsYWJsZSBieXRlcworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIAorICAgICAgICBpZiAoKHBvcyArIGxlbikgPiBzdG9wKQorICAgICAgICAgICAgcmV0dXJuIEVfRklMRV9GT1JNQVRfSU5WQUxJRDsKKyAgICAgICAgICAgIAorICAgICAgICBpZiAoKHBvcyArIGxlbikgPiBhdmFpbGFibGUpCisgICAgICAgICAgICByZXR1cm4gcG9zICsgbGVuOworCisgICAgICAgIGNvbnN0IGxvbmcgbG9uZyBzaXplID0gUmVhZFVJbnQobV9wUmVhZGVyLCBwb3MsIGxlbik7CisgICAgICAgIAorICAgICAgICBpZiAoc2l6ZSA8IDApCisgICAgICAgICAgICByZXR1cm4gc2l6ZTsKKyAgICAgICAgICAgIAorICAgICAgICBwb3MgKz0gbGVuOyAgLy9jb25zdW1lIGxlbmd0aCBvZiBzaXplIG9mIGVsZW1lbnQKKyAgICAgICAgCisgICAgICAgIC8vUG9zIG5vdyBwb2ludHMgdG8gc3RhcnQgb2YgcGF5bG9hZAorICAgICAgICAKKyAgICAgICAgaWYgKChwb3MgKyBzaXplKSA+IHN0b3ApCisgICAgICAgICAgICByZXR1cm4gRV9GSUxFX0ZPUk1BVF9JTlZBTElEOworICAgICAgICAgICAgCisgICAgICAgIC8vV2UgcmVhZCBFQk1MIGVsZW1lbnRzIGVpdGhlciBpbiB0b3RhbCBvciBub3RoaW5nIGF0IGFsbC4KKyAgICAgICAgICAgIAorICAgICAgICBpZiAoKHBvcyArIHNpemUpID4gYXZhaWxhYmxlKQorICAgICAgICAgICAgcmV0dXJuIHBvcyArIHNpemU7CisgICAgICAgIAorICAgICAgICBpZiAoaWQgPT0gMHgwNTQ5QTk2NikgIC8vU2VnbWVudCBJbmZvIElECisgICAgICAgIHsKKyAgICAgICAgICAgIGFzc2VydChtX3BJbmZvID09IE5VTEwpOworICAgICAgICAgICAgbV9wSW5mbyA9IG5ldyAgU2VnbWVudEluZm8odGhpcywgcG9zLCBzaXplKTsKKyAgICAgICAgICAgIGFzc2VydChtX3BJbmZvKTsgIC8vVE9ETworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAobV9wVHJhY2tzKQorICAgICAgICAgICAgICAgIGJRdWl0ID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChpZCA9PSAweDA2NTRBRTZCKSAgLy9UcmFja3MgSUQKKyAgICAgICAgeworICAgICAgICAgICAgYXNzZXJ0KG1fcFRyYWNrcyA9PSBOVUxMKTsKKyAgICAgICAgICAgIG1fcFRyYWNrcyA9IG5ldyAgVHJhY2tzKHRoaXMsIHBvcywgc2l6ZSk7CisgICAgICAgICAgICBhc3NlcnQobV9wVHJhY2tzKTsgIC8vVE9ETworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAobV9wSW5mbykKKyAgICAgICAgICAgICAgICBiUXVpdCA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoaWQgPT0gMHgwRjQzQjY3NSkgIC8vQ2x1c3RlciBJRAorICAgICAgICB7CisjaWYgMAorICAgICAgICAgICAgaWYgKG1fcEluZm8gPT0gTlVMTCkgIC8vVE9ETzogbGliZXJhbGl6ZQorICAgICAgICAgICAgICAgIDsgIAorICAgICAgICAgICAgZWxzZSBpZiAobV9wVHJhY2tzID09IE5VTEwpCisgICAgICAgICAgICAgICAgOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIC8vUGFyc2VDbHVzdGVyKGlkcG9zLCBwb3MsIHNpemUpOyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIENsdXN0ZXI6OlBhcnNlKHRoaXMsIG1fY2x1c3RlcnMsIHBvcywgc2l6ZSk7CisjZW5kaWYKKyAgICAgICAgICAgIGJRdWl0ID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbV9wb3MgPSBwb3MgKyBzaXplOyAgLy9jb25zdW1lIHBheWxvYWQKKyAgICB9CisgICAgCisgICAgYXNzZXJ0KG1fcG9zIDw9IHN0b3ApOworICAgIAorICAgIHJldHVybiAwOyAgLy9zdWNjZXNzCit9CisKKworbG9uZyBTZWdtZW50OjpQYXJzZUNsdXN0ZXIoQ2x1c3RlciomIHBDbHVzdGVyLCBsb25nIGxvbmcmIHBvc18pIGNvbnN0Cit7CisgICAgcENsdXN0ZXIgPSBOVUxMOworICAgIHBvc18gPSAtMTsKKyAgICAKKyAgICBjb25zdCBsb25nIGxvbmcgc3RvcCA9IG1fc3RhcnQgKyBtX3NpemU7CisgICAgYXNzZXJ0KG1fcG9zIDw9IHN0b3ApOworICAgIAorICAgIGxvbmcgbG9uZyBwb3MgPSBtX3BvczsKKyAgICBsb25nIGxvbmcgb2ZmID0gLTE7CisgICAKKyAKKyAgICB3aGlsZSAocG9zIDwgc3RvcCkKKyAgICB7CisgICAgICAgIGxvbmcgbGVuOworICAgICAgICBjb25zdCBsb25nIGxvbmcgaWRwb3MgPSBwb3M7CisgICAgICAgIAorICAgICAgICBjb25zdCBsb25nIGxvbmcgaWQgPSBTeW5jUmVhZFVJbnQobV9wUmVhZGVyLCBwb3MsIHN0b3AsIGxlbik7CisgICAgICAgIAorICAgICAgICBpZiAoaWQgPCAwKSAgLy9lcnJvcgorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGxvbmc+KGlkKTsKKyAgICAgICAgICAgIAorICAgICAgICBpZiAoaWQgPT0gMCkKKyAgICAgICAgICAgIHJldHVybiBFX0ZJTEVfRk9STUFUX0lOVkFMSUQ7CisgICAgICAgICAgICAKKyAgICAgICAgcG9zICs9IGxlbjsgIC8vY29uc3VtZSBpZCAgICAgICAgCisgICAgICAgIGFzc2VydChwb3MgPCBzdG9wKTsKKworICAgICAgICBjb25zdCBsb25nIGxvbmcgc2l6ZSA9IFN5bmNSZWFkVUludChtX3BSZWFkZXIsIHBvcywgc3RvcCwgbGVuKTsKKyAgICAgICAgCisgICAgICAgIGlmIChzaXplIDwgMCkgIC8vZXJyb3IKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxsb25nPihzaXplKTsKKyAgICAgICAgICAgIAorICAgICAgICBwb3MgKz0gbGVuOyAgLy9jb25zdW1lIHNpemUKKyAgICAgICAgYXNzZXJ0KHBvcyA8PSBzdG9wKTsKKyAgICAgICAgICAgIAorICAgICAgICBpZiAoc2l6ZSA9PSAwKSAgLy93ZWlyZAorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAKKyAgICAgICAgLy9wb3Mgbm93IHBvaW50cyB0byBzdGFydCBvZiBwYXlsb2FkCisgICAgICAgICAgICAKKyAgICAgICAgcG9zICs9IHNpemU7ICAvL2NvbnN1bWUgcGF5bG9hZAorICAgICAgICBhc3NlcnQocG9zIDw9IHN0b3ApOworCisgICAgICAgIGlmIChvZmYgPj0gMCkKKyAgICAgICAgeworICAgICAgICAgICAgcG9zXyA9IGlkcG9zOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaWQgPT0gMHgwRjQzQjY3NSkgIC8vQ2x1c3RlciBJRAorICAgICAgICAgICAgb2ZmID0gaWRwb3MgLSBtX3N0YXJ0OworICAgIH0KKyAgICAKKyAgICBTZWdtZW50KiBjb25zdCB0aGlzXyA9IGNvbnN0X2Nhc3Q8U2VnbWVudCo+KHRoaXMpOworICAgIGNvbnN0IHNpemVfdCBpZHggPSBtX2NsdXN0ZXJDb3VudDsKKyAgICAKKyAgICBpZiAocG9zID49IHN0b3ApCisgICAgeworICAgICAgICBwb3NfID0gc3RvcDsKKyAgICAgICAgCisjaWYgMCAgICAgICAgCisgICAgICAgIGlmIChvZmYgPCAwKQorICAgICAgICB7CisgICAgICAgICAgICBwQ2x1c3RlciA9IENsdXN0ZXI6OkNyZWF0ZUVuZE9mU3RyZWFtKHRoaXNfLCBpZHgpOworICAgICAgICAgICAgcmV0dXJuIDFMOworICAgICAgICB9CisjZWxzZQorICAgICAgICBpZiAob2ZmIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAxTDsKKyNlbmRpZgorICAgICAgICAgICAgICAgIAorICAgICAgICAvL1JlYWRpbmcgMCBieXRlcyBhdCBwb3MgbWlnaHQgd29yayB0b28gLS0gaXQgd291bGQgZGVwZW5kIAorICAgICAgICAvL29uIGhvdyB0aGUgcmVhZGVyIGlzIGltcGxlbWVudGVkLgorICAgICAgICAKKyAgICAgICAgdW5zaWduZWQgY2hhciBiOworCisgICAgICAgIGNvbnN0IGxvbmcgaHIgPSBtX3BSZWFkZXItPlJlYWQocG9zIC0gMSwgMSwgJmIpOworICAgICAgICAKKyAgICAgICAgaWYgKGhyIDwgMCkKKyAgICAgICAgICAgIHJldHVybiBocjsKKyAgICAgICAgICAgIAorICAgICAgICBpZiAoaHIgIT0gMEwpCisgICAgICAgICAgICByZXR1cm4gRV9CVUZGRVJfTk9UX0ZVTEw7CisgICAgfQorICAgIAorICAgIGFzc2VydChvZmYgPj0gMCk7CisgICAgYXNzZXJ0KHBvc18gPj0gbV9zdGFydCk7CisgICAgYXNzZXJ0KHBvc18gPD0gc3RvcCk7CisKKyAgICBwQ2x1c3RlciA9IENsdXN0ZXI6OlBhcnNlKHRoaXNfLCBpZHgsIG9mZik7CisgICAgcmV0dXJuIDBMOworfQorCisKK2Jvb2wgU2VnbWVudDo6QWRkQ2x1c3RlcihDbHVzdGVyKiBwQ2x1c3RlciwgbG9uZyBsb25nIHBvcykKK3sKKyAgICBhc3NlcnQocG9zID49IG1fc3RhcnQpOworICAgIAorICAgIGNvbnN0IGxvbmcgbG9uZyBzdG9wID0gbV9zdGFydCArIG1fc2l6ZTsKKyAgICBhc3NlcnQocG9zIDw9IHN0b3ApOworCisgICAgaWYgKHBDbHVzdGVyKSAgICAKKyAgICAgICAgbV9jbHVzdGVyc1twb3NdID0gcENsdXN0ZXI7CisgICAgICAgIAorICAgIG1fcG9zID0gcG9zOyAgLy9tX3BvcyA+PSBzdG9wIGlzIG5vdyB3ZSBrbm93IHdlIGhhdmUgYWxsIGNsdXN0ZXJzCisgICAgCisgICAgcmV0dXJuIChwb3MgPj0gc3RvcCk7Cit9CisKKworbG9uZyBTZWdtZW50OjpMb2FkKCkKK3sKKyAgICAvL091dGVybW9zdCAobGV2ZWwgMCkgc2VnbWVudCBvYmplY3QgaGFzIGJlZW4gY29uc3RydWN0ZWQsIAorICAgIC8vYW5kIHBvcyBkZXNpZ25hdGVzIHN0YXJ0IG9mIHBheWxvYWQuICBXZSBuZWVkIHRvIGZpbmQgdGhlCisgICAgLy9pbm5lciAobGV2ZWwgMSkgZWxlbWVudHMuCisgICAgY29uc3QgbG9uZyBsb25nIHN0b3AgPSBtX3N0YXJ0ICsgbV9zaXplOworI2lmZGVmIF9ERUJVRworICAgIHsKKyAgICAgICAgbG9uZyBsb25nIHRvdGFsLCBhdmFpbGFibGU7CisgICAgICAgIAorICAgICAgICBsb25nIGhyID0gbV9wUmVhZGVyLT5MZW5ndGgoJnRvdGFsLCAmYXZhaWxhYmxlKTsKKyAgICAgICAgYXNzZXJ0KGhyID49IDApOworICAgICAgICBhc3NlcnQoYXZhaWxhYmxlID49IHRvdGFsKTsKKyAgICAgICAgYXNzZXJ0KHN0b3AgPD0gdG90YWwpOworICAgIH0KKyNlbmRpZgorICAgIGxvbmcgbG9uZyBpbmRleCA9IG1fcG9zOworICAgIAorICAgIG1fY2x1c3RlckNvdW50ID0gMDsKKworICAgIHdoaWxlIChpbmRleCA8IHN0b3ApCisgICAgeworICAgICAgICBsb25nIGxlbiA9IDA7CisKKyAgICAgICAgbG9uZyBsb25nIHJlc3VsdCA9IEdldFVJbnRMZW5ndGgobV9wUmVhZGVyLCBpbmRleCwgbGVuKTsKKyAgICAgICAKKyAgICAgICAgaWYgKHJlc3VsdCA8IDApICAvL2Vycm9yCisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8bG9uZz4ocmVzdWx0KTsKKyAgICAgICAgICAgIAorICAgICAgICBpZiAoKGluZGV4ICsgbGVuKSA+IHN0b3ApCisgICAgICAgICAgICByZXR1cm4gRV9GSUxFX0ZPUk1BVF9JTlZBTElEOworICAgICAgICAgICAgCisgICAgICAgIGNvbnN0IGxvbmcgbG9uZyBpZHBvcyA9IGluZGV4OworICAgICAgICBjb25zdCBsb25nIGxvbmcgaWQgPSBSZWFkVUludChtX3BSZWFkZXIsIGlkcG9zLCBsZW4pOworICAgICAgICAKKyAgICAgICAgaWYgKGlkIDwgMCkgIC8vZXJyb3IKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxsb25nPihpZCk7CisgICAgICAgICAgICAKKyAgICAgICAgaW5kZXggKz0gbGVuOyAgLy9jb25zdW1lIElECisgICAgICAgIAorICAgICAgICAvL1JlYWQgU2l6ZQorICAgICAgICByZXN1bHQgPSBHZXRVSW50TGVuZ3RoKG1fcFJlYWRlciwgaW5kZXgsIGxlbik7CisgICAgICAgIAorICAgICAgICBpZiAocmVzdWx0IDwgMCkgIC8vZXJyb3IKKyAgICAgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxsb25nPihyZXN1bHQpOworICAgICAgICAgICAgCisgICAgICAgIGlmICgoaW5kZXggKyBsZW4pID4gc3RvcCkKKyAgICAgICAgICAgIHJldHVybiBFX0ZJTEVfRk9STUFUX0lOVkFMSUQ7CisgICAgICAgICAgICAKKyAgICAgICAgY29uc3QgbG9uZyBsb25nIHNpemUgPSBSZWFkVUludChtX3BSZWFkZXIsIGluZGV4LCBsZW4pOworICAgICAgICAKKyAgICAgICAgaWYgKHNpemUgPCAwKSAgLy9lcnJvcgorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGxvbmc+KHNpemUpOworICAgICAgICAgICAgCisgICAgICAgIGluZGV4ICs9IGxlbjsgIC8vY29uc3VtZSBsZW5ndGggb2Ygc2l6ZSBvZiBlbGVtZW50CisgCisgICAgICAgIGlmIChpZCA9PSAweDBGNDNCNjc1KSAvLyBDbHVzdGVyIElEIAorICAgICAgICAgICAgYnJlYWs7CisJCisgICAgICAgIGlmIChpZCA9PSAweDAxNEQ5Qjc0KSAvLyBTZWVrSGVhZCBJRCAKKyAgICAgICAgeworICAgICAgICAgICAgUGFyc2VTZWVrSGVhZChpbmRleCwgc2l6ZSwgTlVMTCk7IAorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaW5kZXggKz0gc2l6ZTsKKyAgICB9CisgICAgICAgIAorICAgIGlmIChtX2NsdXN0ZXJDb3VudCA9PSAwKQorICAgICAgICByZXR1cm4gLTFMOworCisgICAgd2hpbGUgKG1fcG9zIDwgc3RvcCkKKyAgICB7CisgICAgICAgIGxvbmcgbG9uZyBwb3MgPSBtX3BvczsKKyAgICAgICAgCisgICAgICAgIGxvbmcgbGVuOworCisgICAgICAgIGxvbmcgbG9uZyByZXN1bHQgPSBHZXRVSW50TGVuZ3RoKG1fcFJlYWRlciwgcG9zLCBsZW4pOworICAgICAgICAKKyAgICAgICAgaWYgKHJlc3VsdCA8IDApICAvL2Vycm9yCisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8bG9uZz4ocmVzdWx0KTsKKyAgICAgICAgICAgIAorICAgICAgICBpZiAoKHBvcyArIGxlbikgPiBzdG9wKQorICAgICAgICAgICAgcmV0dXJuIEVfRklMRV9GT1JNQVRfSU5WQUxJRDsKKyAgICAgICAgICAgIAorICAgICAgICBjb25zdCBsb25nIGxvbmcgaWRwb3MgPSBwb3M7CisgICAgICAgIGNvbnN0IGxvbmcgbG9uZyBpZCA9IFJlYWRVSW50KG1fcFJlYWRlciwgaWRwb3MsIGxlbik7CisgICAgICAgIAorICAgICAgICBpZiAoaWQgPCAwKSAgLy9lcnJvcgorICAgICAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PGxvbmc+KGlkKTsKKyAgICAgICAgICAgIAorICAgICAgICBwb3MgKz0gbGVuOyAgLy9jb25zdW1lIElECisgICAgICAgIAorICAgICAgICAvL1JlYWQgU2l6ZQorICAgICAgICByZXN1bHQgPSBHZXRVSW50TGVuZ3RoKG1fcFJlYWRlciwgcG9zLCBsZW4pOworICAgICAgICAKKyAgICAgICAgaWYgKHJlc3VsdCA8IDApICAvL2Vycm9yCisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8bG9uZz4ocmVzdWx0KTsKKyAgICAgICAgICAgIAorICAgICAgICBpZiAoKHBvcyArIGxlbikgPiBzdG9wKQorCSAgICAgICAgcmV0dXJuIEVfRklMRV9GT1JNQVRfSU5WQUxJRDsKKyAgICAgICAgICAgIAorICAgICAgICBjb25zdCBsb25nIGxvbmcgc2l6ZSA9IFJlYWRVSW50KG1fcFJlYWRlciwgcG9zLCBsZW4pOworICAgICAgIAorICAgICAgICBpZiAoc2l6ZSA8IDApICAvL2Vycm9yCisgICAgICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8bG9uZz4oc2l6ZSk7CisgICAgICAgICAgICAKKyAgICAgICAgcG9zICs9IGxlbjsgIC8vY29uc3VtZSBsZW5ndGggb2Ygc2l6ZSBvZiBlbGVtZW50CisgICAgICAgIAorICAgICAgICAvL1BvcyBub3cgcG9pbnRzIHRvIHN0YXJ0IG9mIHBheWxvYWQKKyAgICAgICAgCisgICAgICAgIGlmICgocG9zICsgc2l6ZSkgPiBzdG9wKQorICAgICAgICAgICAgcmV0dXJuIEVfRklMRV9GT1JNQVRfSU5WQUxJRDsKKyAgICAgICAgICAgIAorICAgICAgICBpZiAoaWQgPT0gMHgwRjQzQjY3NSkgIC8vQ2x1c3RlciBJRAorICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgaWYgKGlkID09IDB4MDE0RDlCNzQpICAvL1NlZWtIZWFkIElECisgICAgICAgIHsKKyAgICAgICAgICAgIG1fY2x1c3RlcnMgPSBuZXcgQ2x1c3RlcipbbV9jbHVzdGVyQ291bnRdOyAgIAorICAgICAgICAgICAgc2l6ZV90IGluZGV4ID0gMDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgUGFyc2VTZWVrSGVhZChwb3MsIHNpemUsICZpbmRleCk7ICAgICAgICAgICAgCisgICAgICAgICAgICBhc3NlcnQoaW5kZXggPT0gbV9jbHVzdGVyQ291bnQpOworICAgICAgICB9ICAgICAgICAgICAgCisgICAgICAgIGVsc2UgaWYgKGlkID09IDB4MDU0OUE5NjYpICAvL1NlZ21lbnQgSW5mbyBJRAorICAgICAgICB7CisgICAgICAgICAgICBhc3NlcnQobV9wSW5mbyA9PSBOVUxMKTsKKyAgICAgICAgICAgIG1fcEluZm8gPSBuZXcgIFNlZ21lbnRJbmZvKHRoaXMsIHBvcywgc2l6ZSk7CisgICAgICAgICAgICBhc3NlcnQobV9wSW5mbyk7ICAvL1RPRE8KKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChpZCA9PSAweDA2NTRBRTZCKSAgLy9UcmFja3MgSUQKKyAgICAgICAgeworICAgICAgICAgICAgYXNzZXJ0KG1fcFRyYWNrcyA9PSBOVUxMKTsKKyAgICAgICAgICAgIG1fcFRyYWNrcyA9IG5ldyBUcmFja3ModGhpcywgcG9zLCBzaXplKTsKKyAgICAgICAgICAgIGFzc2VydChtX3BUcmFja3MpOyAgLy9UT0RPCisgICAgICAgIH0KKworICAgICAgICBtX3BvcyA9IHBvcyArIHNpemU7ICAvL2NvbnN1bWUgcGF5bG9hZAorICAgIH0KKyAgICAKKyAgICBhc3NlcnQobV9jbHVzdGVycyk7CisgICAgCisgICAgLy9UT0RPOiBzZWUgbm90ZXMgYWJvdmUuICBUaGlzIGNoZWNrIGlzIGhlcmUgKHRlbXBvcmFyaWx5KSB0byBlbnN1cmUKKyAgICAvL3RoYXQgdGhlIGZpcnN0IHNlZWtoZWFkIGhhcyBlbnRyaWVzIGZvciB0aGUgY2x1c3RlcnMgKGJlY2F1c2UgdGhhdCdzCisgICAgLy93aGVuIHRoZXkncmUgbG9hZGVkKS4gIEluIGNhc2Ugd2UgYXJlIGdpdmVuIGEgZmlsZSB0aGF0IGxpc3RzIHRoZQorICAgIC8vY2x1c3RlcnMgaW4gYSBzZWNvbmQgc2Vla2hlYWQsIHRoZSB3b3JzdCB0aGluZyB0aGF0IGhhcHBlbnMgaXMgdGhhdAorICAgIC8vd2UgdHJlYXQgdGhpcyBhcyBhbiBpbnZhbGlkIGZpbGUgKHdoaWNoIGlzIGJldHRlciB0aGVuIHNpbXBseQorICAgIC8vYXNzZXJ0aW5nIHNvbWV3aGVyZSkuICBCdXQgdGhhdCdzIG9ubHkgYSB3b3JrLWFyb3VuZC4gIFdoYXQgd2UgbmVlZAorICAgIC8vdG8gZG8gaXMgYmUgYWJsZSB0byBoYW5kbGUgaGF2aW5nIG11bHRpcGxlIHNlZWtoZWFkcywgYW5kIGhhdmluZworICAgIC8vY2x1c3RlcnMgbGlzdGVkIHNvbWV3aGVyZSBiZXNpZGVzIHRoZSBmaXJzdCBzZWVraGVhZC4KKyAgICAvLyAgICAKKyAgICAvL2lmIChtX2NsdXN0ZXJzID09IE5VTEwpCisgICAgLy8gICAgcmV0dXJuIEVfRklMRV9GT1JNQVRfSU5WQUxJRDsKKyAgICAgICAgCisgICAgLy9OT1RFOiB3ZSBzdG9wIHBhcnNpbmcgd2hlbiB3ZSByZWFjaCB0aGUgZmlyc3QgY2x1c3RlciwgdW5kZXIgdGhlCisgICAgLy9hc3N1bXB0aW9uIGFsbCBjbHVzdGVycyBhcmUgbmFtZWQgaW4gc29tZSBTZWVrSGVhZC4gIENsdXN0ZXJzCisgICAgLy93aWxsIGhhdmUgYmVlbiAocHJlKWxvYWRlZCwgc28gd2UgaW5kaWNhdGUgdGhhdCB3ZSBoYXZlIGFsbCBjbHVzdGVycworICAgIC8vYnkgYWRqdXN0aW5nIHRoZSBwYXJzZSBwb3NpdGlvbjoKKyAgICBtX3BvcyA9IHN0b3A7ICAvL21lYW5zICJ3ZSBoYXZlIGFsbCBjbHVzdGVycyIKKworICAgIHJldHVybiAwTDsKK30KKworCit2b2lkIFNlZ21lbnQ6OlBhcnNlU2Vla0hlYWQobG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgc2l6ZV8sIHNpemVfdCogcEluZGV4KQoreworICAgIGxvbmcgbG9uZyBwb3MgPSBzdGFydDsKKyAgICBjb25zdCBsb25nIGxvbmcgc3RvcCA9IHN0YXJ0ICsgc2l6ZV87CisgICAgd2hpbGUgKHBvcyA8IHN0b3ApCisgICAgeworICAgICAgICBsb25nIGxlbjsKKyAgICAgICAgCisgICAgICAgIGNvbnN0IGxvbmcgbG9uZyBpZCA9IFJlYWRVSW50KG1fcFJlYWRlciwgcG9zLCBsZW4pOworICAgICAgICBhc3NlcnQoaWQgPj0gMCk7ICAvL1RPRE8KKyAgICAgICAgYXNzZXJ0KChwb3MgKyBsZW4pIDw9IHN0b3ApOworICAgICAgICAKKyAgICAgICAgcG9zICs9IGxlbjsgIC8vY29uc3VtZSBJRAorICAgICAgICAKKyAgICAgICAgY29uc3QgbG9uZyBsb25nIHNpemUgPSBSZWFkVUludChtX3BSZWFkZXIsIHBvcywgbGVuKTsKKyAgICAgICAgYXNzZXJ0KHNpemUgPj0gMCk7CisgICAgICAgIGFzc2VydCgocG9zICsgbGVuKSA8PSBzdG9wKTsKKyAgICAgICAgCisgICAgICAgIHBvcyArPSBsZW47ICAvL2NvbnN1bWUgU2l6ZSBmaWVsZAorICAgICAgICBhc3NlcnQoKHBvcyArIHNpemUpIDw9IHN0b3ApOworCisgICAgICAgIGlmIChpZCA9PSAweDBEQkIpICAvL1NlZWtFbnRyeSBJRAorICAgICAgICAgICAgUGFyc2VTZWVrRW50cnkocG9zLCBzaXplLCBwSW5kZXgpOworICAgICAgICAKKyAgICAgICAgcG9zICs9IHNpemU7ICAvL2NvbnN1bWUgcGF5bG9hZAorICAgICAgICBhc3NlcnQocG9zIDw9IHN0b3ApOworICAgIH0KKyAgICAKKyAgICBhc3NlcnQocG9zID09IHN0b3ApOworfQorCisKK3ZvaWQgU2VnbWVudDo6UGFyc2VTZWNvbmRhcnlTZWVrSGVhZChsb25nIGxvbmcgb2ZmLCBzaXplX3QqIHBJbmRleCkKK3sKKyAgICBhc3NlcnQob2ZmID49IDApOworICAgIGFzc2VydChvZmYgPCBtX3NpemUpOworCisgICAgbG9uZyBsb25nIHBvcyA9IG1fc3RhcnQgKyBvZmY7CisgICAgY29uc3QgbG9uZyBsb25nIHN0b3AgPSBtX3N0YXJ0ICsgbV9zaXplOworICAgIAorICAgIGxvbmcgbGVuOworCisgICAgbG9uZyBsb25nIHJlc3VsdCA9IEdldFVJbnRMZW5ndGgobV9wUmVhZGVyLCBwb3MsIGxlbik7CisgICAgYXNzZXJ0KHJlc3VsdCA9PSAwKTsKKyAgICBhc3NlcnQoKHBvcyArIGxlbikgPD0gc3RvcCk7CisgICAgCisgICAgY29uc3QgbG9uZyBsb25nIGlkcG9zID0gcG9zOworCisgICAgY29uc3QgbG9uZyBsb25nIGlkID0gUmVhZFVJbnQobV9wUmVhZGVyLCBpZHBvcywgbGVuKTsKKyAgICBhc3NlcnQoaWQgPT0gMHgwMTREOUI3NCk7ICAvL1NlZWtIZWFkIElECisgICAgCisgICAgcG9zICs9IGxlbjsgIC8vY29uc3VtZSBJRAorICAgIGFzc2VydChwb3MgPCBzdG9wKTsKKyAgICAKKyAgICAvL1JlYWQgU2l6ZQorICAgIAorICAgIHJlc3VsdCA9IEdldFVJbnRMZW5ndGgobV9wUmVhZGVyLCBwb3MsIGxlbik7CisgICAgYXNzZXJ0KHJlc3VsdCA9PSAwKTsKKyAgICBhc3NlcnQoKHBvcyArIGxlbikgPD0gc3RvcCk7CisgICAgCisgICAgY29uc3QgbG9uZyBsb25nIHNpemUgPSBSZWFkVUludChtX3BSZWFkZXIsIHBvcywgbGVuKTsKKyAgICBhc3NlcnQoc2l6ZSA+PSAwKTsKKyAgICAKKyAgICBwb3MgKz0gbGVuOyAgLy9jb25zdW1lIGxlbmd0aCBvZiBzaXplIG9mIGVsZW1lbnQKKyAgICBhc3NlcnQoKHBvcyArIHNpemUpIDw9IHN0b3ApOworICAgIAorICAgIC8vUG9zIG5vdyBwb2ludHMgdG8gc3RhcnQgb2YgcGF5bG9hZAorICAgIAorICAgIFBhcnNlU2Vla0hlYWQocG9zLCBzaXplLCBwSW5kZXgpOworfQorCisKK3ZvaWQgU2VnbWVudDo6UGFyc2VTZWVrRW50cnkobG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgc2l6ZV8sIHNpemVfdCogcEluZGV4KQoreworICAgIGxvbmcgbG9uZyBwb3MgPSBzdGFydDsKKworICAgIGNvbnN0IGxvbmcgbG9uZyBzdG9wID0gc3RhcnQgKyBzaXplXzsKKyAgICAKKyAgICBsb25nIGxlbjsKKyAgICAKKyAgICBjb25zdCBsb25nIGxvbmcgc2Vla0lkSWQgPSBSZWFkVUludChtX3BSZWFkZXIsIHBvcywgbGVuKTsKKyAgICAvL3NlZWtJZElkOworICAgIGFzc2VydChzZWVrSWRJZCA9PSAweDEzQUIpOyAgLy9TZWVrSUQgSUQKKyAgICBhc3NlcnQoKHBvcyArIGxlbikgPD0gc3RvcCk7CisgICAgCisgICAgcG9zICs9IGxlbjsgIC8vY29uc3VtZSBpZAorCisgICAgY29uc3QgbG9uZyBsb25nIHNlZWtJZFNpemUgPSBSZWFkVUludChtX3BSZWFkZXIsIHBvcywgbGVuKTsKKyAgICBhc3NlcnQoc2Vla0lkU2l6ZSA+PSAwKTsKKyAgICBhc3NlcnQoKHBvcyArIGxlbikgPD0gc3RvcCk7CisgICAgCisgICAgcG9zICs9IGxlbjsgIC8vY29uc3VtZSBzaXplCisgICAgCisgICAgY29uc3QgbG9uZyBsb25nIHNlZWtJZCA9IFJlYWRVSW50KG1fcFJlYWRlciwgcG9zLCBsZW4pOyAgLy9wYXlsb2FkCisgICAgYXNzZXJ0KHNlZWtJZCA+PSAwKTsKKyAgICBhc3NlcnQobGVuID09IHNlZWtJZFNpemUpOworICAgIGFzc2VydCgocG9zICsgbGVuKSA8PSBzdG9wKTsKKyAgICAKKyAgICBwb3MgKz0gc2Vla0lkU2l6ZTsgIC8vY29uc3VtZSBwYXlsb2FkCisgICAgCisgICAgY29uc3QgbG9uZyBsb25nIHNlZWtQb3NJZCA9IFJlYWRVSW50KG1fcFJlYWRlciwgcG9zLCBsZW4pOworICAgIC8vc2Vla1Bvc0lkOworICAgIGFzc2VydChzZWVrUG9zSWQgPT0gMHgxM0FDKTsgIC8vU2Vla1BvcyBJRAorICAgIGFzc2VydCgocG9zICsgbGVuKSA8PSBzdG9wKTsKKyAgICAKKyAgICBwb3MgKz0gbGVuOyAgLy9jb25zdW1lIGlkCisgICAgCisgICAgY29uc3QgbG9uZyBsb25nIHNlZWtQb3NTaXplID0gUmVhZFVJbnQobV9wUmVhZGVyLCBwb3MsIGxlbik7CisgICAgYXNzZXJ0KHNlZWtQb3NTaXplID49IDApOworICAgIGFzc2VydCgocG9zICsgbGVuKSA8PSBzdG9wKTsKKworICAgIHBvcyArPSBsZW47ICAvL2NvbnN1bWUgc2l6ZQorICAgIGFzc2VydCgocG9zICsgc2Vla1Bvc1NpemUpIDw9IHN0b3ApOworICAgICAgICAKKyAgICBjb25zdCBsb25nIGxvbmcgc2Vla09mZiA9IFVuc2VyaWFsaXplVUludChtX3BSZWFkZXIsIHBvcywgc2Vla1Bvc1NpemUpOworICAgIGFzc2VydChzZWVrT2ZmID49IDApOworICAgIGFzc2VydChzZWVrT2ZmIDwgbV9zaXplKTsKKyAgICAKKyAgICBwb3MgKz0gc2Vla1Bvc1NpemU7ICAvL2NvbnN1bWUgcGF5bG9hZAorICAgIGFzc2VydChwb3MgPT0gc3RvcCk7CisgICAgCisgICAgY29uc3QgbG9uZyBsb25nIHNlZWtQb3MgPSBtX3N0YXJ0ICsgc2Vla09mZjsKKyAgICBhc3NlcnQoc2Vla1BvcyA8IChtX3N0YXJ0ICsgbV9zaXplKSk7CisgICAKKyAgICBpZiAoc2Vla0lkID09IDB4MEY0M0I2NzUpICAvL2NsdXN0ZXIgaWQKKyAgICB7ICAgICAgIAorICAgICAgICBpZiAocEluZGV4ID09IE5VTEwpCisgICAgICAgICAgICArK21fY2x1c3RlckNvdW50OyAKKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBhc3NlcnQobV9jbHVzdGVycyk7CisgICAgICAgICAgICBhc3NlcnQobV9jbHVzdGVyQ291bnQgPiAwKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgc2l6ZV90JiBpbmRleCA9ICpwSW5kZXg7CisgICAgICAgICAgICBhc3NlcnQoaW5kZXggPCBtX2NsdXN0ZXJDb3VudCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIENsdXN0ZXIqJiBwQ2x1c3RlciA9IG1fY2x1c3RlcnNbaW5kZXhdOworICAgICAgICAgICAgCisgICAgICAgICAgICBwQ2x1c3RlciA9IENsdXN0ZXI6OlBhcnNlKHRoaXMsIGluZGV4LCBzZWVrT2ZmKTsKKyAgICAgICAgICAgIGFzc2VydChwQ2x1c3Rlcik7ICAvL1RPRE8KKyAgICAgICAgICAgIAorICAgICAgICAgICAgKytpbmRleDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChzZWVrSWQgPT0gMHgwMTREOUI3NCkgIC8vU2Vla0hlYWQgSUQKKyAgICB7CisgICAgICAgIFBhcnNlU2Vjb25kYXJ5U2Vla0hlYWQoc2Vla09mZiwgcEluZGV4KTsKKyAgICB9Cit9CisKKworbG9uZyBsb25nIFNlZ21lbnQ6OlVucGFyc2VkKCkgY29uc3QKK3sKKyAgICBjb25zdCBsb25nIGxvbmcgc3RvcCA9IG1fc3RhcnQgKyBtX3NpemU7CisKKyAgICBjb25zdCBsb25nIGxvbmcgcmVzdWx0ID0gc3RvcCAtIG1fcG9zOworICAgIGFzc2VydChyZXN1bHQgPj0gMCk7CisgICAgCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworCisjaWYgMCAgLy9OT1RFOiB0b28gaW5lZmZpY2llbnQKK2xvbmcgbG9uZyBTZWdtZW50OjpMb2FkKGxvbmcgbG9uZyB0aW1lX25zKQoreworICAgIGlmIChVbnBhcnNlZCgpIDw9IDApCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIHdoaWxlIChtX2NsdXN0ZXJzLmVtcHR5KCkpCisgICAgeworICAgICAgICBjb25zdCBsb25nIGxvbmcgcmVzdWx0ID0gUGFyc2UoKTsKKyAgICAgICAgCisgICAgICAgIGlmIChyZXN1bHQpICAvL2Vycm9yLCBvciBub3QgZW5vdWdoIGJ5dGVzIGF2YWlsYWJsZQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgICAgIAorICAgICAgICBpZiAoVW5wYXJzZWQoKSA8PSAwKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIAorICAgIHdoaWxlIChtX2NsdXN0ZXJzLmJhY2soKS0+R2V0VGltZSgpIDwgdGltZV9ucykKKyAgICB7CisgICAgICAgIGNvbnN0IGxvbmcgbG9uZyByZXN1bHQgPSBQYXJzZSgpOworICAgICAgICAKKyAgICAgICAgaWYgKHJlc3VsdCkgIC8vZXJyb3IsIG9yIG5vdCBlbm91Z2ggYnl0ZXMgYXZhaWxhYmxlCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgCisgICAgICAgIGlmIChVbnBhcnNlZCgpIDw9IDApCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICB9ICAgICAgICAKKworICAgIHJldHVybiAwOyAgICAgICAgCit9CisjZW5kaWYKKworCitDbHVzdGVyKiBTZWdtZW50OjpHZXRGaXJzdCgpCit7CisgICAgaWYgKChtX2NsdXN0ZXJzID09IE5VTEwpIHx8IChtX2NsdXN0ZXJDb3VudCA8PSAwKSkKKyAgICAgICByZXR1cm4gJm1fZW9zOworCisgICAgQ2x1c3RlciogY29uc3QgcENsdXN0ZXIgPSBtX2NsdXN0ZXJzWzBdOworICAgIGFzc2VydChwQ2x1c3Rlcik7CisgICAgICAgIAorICAgIHJldHVybiBwQ2x1c3RlcjsKK30KKworCitDbHVzdGVyKiBTZWdtZW50OjpHZXRMYXN0KCkKK3sKKyAgICBpZiAoKG1fY2x1c3RlcnMgPT0gTlVMTCkgfHwgKG1fY2x1c3RlckNvdW50IDw9IDApKQorICAgICAgICByZXR1cm4gJm1fZW9zOworCisgICAgY29uc3Qgc2l6ZV90IGlkeCA9IG1fY2x1c3RlckNvdW50IC0gMTsgICAgCisgICAgQ2x1c3RlciogY29uc3QgcENsdXN0ZXIgPSBtX2NsdXN0ZXJzW2lkeF07CisgICAgYXNzZXJ0KHBDbHVzdGVyKTsKKyAgICAgICAgCisgICAgcmV0dXJuIHBDbHVzdGVyOworfQorCisKK3Vuc2lnbmVkIGxvbmcgU2VnbWVudDo6R2V0Q291bnQoKSBjb25zdAoreworICAgIC8vVE9ETzogbV9jbHVzdGVyQ291bnQgc2hvdWxkIG5vdCBiZSBsb25nIGxvbmcuCisgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KG1fY2x1c3RlckNvdW50KTsKK30KKworCitDbHVzdGVyKiBTZWdtZW50OjpHZXROZXh0KGNvbnN0IENsdXN0ZXIqIHBDdXJyKQoreworICAgIGFzc2VydChwQ3Vycik7CisgICAgYXNzZXJ0KHBDdXJyICE9ICZtX2Vvcyk7CisgICAgYXNzZXJ0KG1fY2x1c3RlcnMpOworICAgIGFzc2VydChtX2NsdXN0ZXJDb3VudCA+IDApOworCisgICAgc2l6ZV90IGlkeCA9ICBwQ3Vyci0+bV9pbmRleDsKKyAgICBhc3NlcnQoaWR4IDwgbV9jbHVzdGVyQ291bnQpOworICAgIGFzc2VydChwQ3VyciA9PSBtX2NsdXN0ZXJzW2lkeF0pOworICAgIAorICAgIGlkeCsrOworICAgIAorICAgIGlmIChpZHggPj0gbV9jbHVzdGVyQ291bnQpIAorICAgICAgICByZXR1cm4gJm1fZW9zOworICAgICAgICAKKyAgICBDbHVzdGVyKiBjb25zdCBwTmV4dCA9IG1fY2x1c3RlcnNbaWR4XTsKKyAgICBhc3NlcnQocE5leHQpOworICAgIAorICAgIHJldHVybiBwTmV4dDsKK30KKworCitDbHVzdGVyKiBTZWdtZW50OjpHZXRDbHVzdGVyKGxvbmcgbG9uZyB0aW1lX25zKQoreworICAgIGlmICgobV9jbHVzdGVycyA9PSBOVUxMKSB8fCAobV9jbHVzdGVyQ291bnQgPD0gMCkpCisgICAgICAgIHJldHVybiAmbV9lb3M7CisgICAgICAgIAorICAgIHsKKyAgICAgICAgQ2x1c3RlciogY29uc3QgcENsdXN0ZXIgPSBtX2NsdXN0ZXJzWzBdOworICAgICAgICBhc3NlcnQocENsdXN0ZXIpOworICAgICAgICBhc3NlcnQocENsdXN0ZXItPm1faW5kZXggPT0gMCk7CisgICAgICAgIAorICAgICAgICBpZiAodGltZV9ucyA8PSBwQ2x1c3Rlci0+R2V0VGltZSgpKQorICAgICAgICAgICAgcmV0dXJuIHBDbHVzdGVyOworICAgIH0KKyAgICAKKyAgICAvL0JpbmFyeSBzZWFyY2ggb2YgY2x1c3RlciBhcnJheQorICAgICAgIAorICAgIHNpemVfdCBpID0gMDsKKyAgICBzaXplX3QgaiA9IG1fY2x1c3RlckNvdW50OworICAgIAorICAgIHdoaWxlIChpIDwgaikKKyAgICB7CisgICAgICAgIC8vSU5WQVJJQU5UOgorICAgICAgICAvL1swLCBpKSA8PSB0aW1lX25zCisgICAgICAgIC8vW2ksIGopID8KKyAgICAgICAgLy9baiwgbV9jbHVzdGVyQ291bnQpICA+IHRpbWVfbnMKKyAgICAgICAgCisgICAgICAgIGNvbnN0IHNpemVfdCBrID0gaSArIChqIC0gaSkgLyAyOworICAgICAgICBhc3NlcnQoayA8IG1fY2x1c3RlckNvdW50KTsKKworICAgICAgICBDbHVzdGVyKiBjb25zdCBwQ2x1c3RlciA9IG1fY2x1c3RlcnNba107CisgICAgICAgIGFzc2VydChwQ2x1c3Rlcik7CisgICAgICAgIGFzc2VydChwQ2x1c3Rlci0+bV9pbmRleCA9PSBrKTsKKyAgICAgICAgCisgICAgICAgIGNvbnN0IGxvbmcgbG9uZyB0ID0gcENsdXN0ZXItPkdldFRpbWUoKTsKKyAgICAgICAgCisgICAgICAgIGlmICh0IDw9IHRpbWVfbnMpCisgICAgICAgICAgICBpID0gayArIDE7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGogPSBrOworICAgICAgICAgICAgCisgICAgICAgIGFzc2VydChpIDw9IGopOworICAgIH0KKyAgICAKKyAgICBhc3NlcnQoaSA9PSBqKTsKKyAgICBhc3NlcnQoaSA+IDApOworICAgIGFzc2VydChpIDw9IG1fY2x1c3RlckNvdW50KTsKKyAgICAKKyAgICBjb25zdCBzaXplX3QgayA9IGkgLSAxOworICAgIAorICAgIENsdXN0ZXIqIGNvbnN0IHBDbHVzdGVyID0gbV9jbHVzdGVyc1trXTsKKyAgICBhc3NlcnQocENsdXN0ZXIpOworICAgIGFzc2VydChwQ2x1c3Rlci0+bV9pbmRleCA9PSBrKTsKKyAgICBhc3NlcnQocENsdXN0ZXItPkdldFRpbWUoKSA8PSB0aW1lX25zKTsKKyAgICAKKyAgICByZXR1cm4gcENsdXN0ZXI7Cit9CisKKworVHJhY2tzKiBTZWdtZW50OjpHZXRUcmFja3MoKSBjb25zdAoreworICAgIHJldHVybiBtX3BUcmFja3M7Cit9CisKKworY29uc3QgU2VnbWVudEluZm8qIGNvbnN0IFNlZ21lbnQ6OkdldEluZm8oKSBjb25zdAoreworICAgIHJldHVybiBtX3BJbmZvOworfQorCisKK2xvbmcgbG9uZyBTZWdtZW50OjpHZXREdXJhdGlvbigpIGNvbnN0Cit7CisgICAgYXNzZXJ0KG1fcEluZm8pOworICAgIHJldHVybiBtX3BJbmZvLT5HZXREdXJhdGlvbigpOworfQorCisKK1NlZ21lbnRJbmZvOjpTZWdtZW50SW5mbyhTZWdtZW50KiBwU2VnbWVudCwgbG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgc2l6ZV8pIDoKKyAgICBtX3BTZWdtZW50KHBTZWdtZW50KSwKKyAgICBtX3N0YXJ0KHN0YXJ0KSwKKyAgICBtX3NpemUoc2l6ZV8pLAorICAgIG1fcE11eGluZ0FwcEFzVVRGOChOVUxMKSwKKyAgICBtX3BXcml0aW5nQXBwQXNVVEY4KE5VTEwpLAorICAgIG1fcFRpdGxlQXNVVEY4KE5VTEwpCit7CisgICAgSU1rdlJlYWRlciogY29uc3QgcFJlYWRlciA9IG1fcFNlZ21lbnQtPm1fcFJlYWRlcjsKKyAgIAorICAgIGxvbmcgbG9uZyBwb3MgPSBzdGFydDsKKyAgICBjb25zdCBsb25nIGxvbmcgc3RvcCA9IHN0YXJ0ICsgc2l6ZV87CisgICAgCisgICAgbV90aW1lY29kZVNjYWxlID0gMTAwMDAwMDsKKyAgICBtX2R1cmF0aW9uID0gMDsKKyAgICAKKyAgICAKKyAgICB3aGlsZSAocG9zIDwgc3RvcCkKKyAgICB7CisgICAgICAgIGlmIChNYXRjaChwUmVhZGVyLCBwb3MsIDB4MEFEN0IxLCBtX3RpbWVjb2RlU2NhbGUpKQorICAgICAgICAgICAgYXNzZXJ0KG1fdGltZWNvZGVTY2FsZSA+IDApOworCisgICAgICAgIGVsc2UgaWYgKE1hdGNoKHBSZWFkZXIsIHBvcywgMHgwNDg5LCBtX2R1cmF0aW9uKSkKKyAgICAgICAgICAgIGFzc2VydChtX2R1cmF0aW9uID49IDApOworCisgICAgICAgIGVsc2UgaWYgKE1hdGNoKHBSZWFkZXIsIHBvcywgMHgwRDgwLCBtX3BNdXhpbmdBcHBBc1VURjgpKSAgIC8vWzREXVs4MF0gCisgICAgICAgICAgICBhc3NlcnQobV9wTXV4aW5nQXBwQXNVVEY4KTsKKworICAgICAgICBlbHNlIGlmIChNYXRjaChwUmVhZGVyLCBwb3MsIDB4MTc0MSwgbV9wV3JpdGluZ0FwcEFzVVRGOCkpICAvL1s1N11bNDFdCisgICAgICAgICAgICBhc3NlcnQobV9wV3JpdGluZ0FwcEFzVVRGOCk7CisgICAgICAgICAgICAKKyAgICAgICAgZWxzZSBpZiAoTWF0Y2gocFJlYWRlciwgcG9zLCAweDNCQTksIG1fcFRpdGxlQXNVVEY4KSkgICAgICAgIC8vWzdCXVtBOV0KKyAgICAgICAgICAgIGFzc2VydChtX3BUaXRsZUFzVVRGOCk7CisKKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBsb25nIGxlbjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgY29uc3QgbG9uZyBsb25nIGlkID0gUmVhZFVJbnQocFJlYWRlciwgcG9zLCBsZW4pOworICAgICAgICAgICAgLy9pZDsKKyAgICAgICAgICAgIGFzc2VydChpZCA+PSAwKTsKKyAgICAgICAgICAgIGFzc2VydCgocG9zICsgbGVuKSA8PSBzdG9wKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgcG9zICs9IGxlbjsgIC8vY29uc3VtZSBpZAorICAgICAgICAgICAgYXNzZXJ0KChzdG9wIC0gcG9zKSA+IDApOworICAgICAgICAgICAgCisgICAgICAgICAgICBjb25zdCBsb25nIGxvbmcgc2l6ZSA9IFJlYWRVSW50KHBSZWFkZXIsIHBvcywgbGVuKTsKKyAgICAgICAgICAgIGFzc2VydChzaXplID49IDApOworICAgICAgICAgICAgYXNzZXJ0KChwb3MgKyBsZW4pIDw9IHN0b3ApOworICAgICAgICAgICAgCisgICAgICAgICAgICBwb3MgKz0gbGVuICsgc2l6ZTsgIC8vY29uc3VtZSBzaXplIGFuZCBwYXlsb2FkCisgICAgICAgICAgICBhc3NlcnQocG9zIDw9IHN0b3ApOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIGFzc2VydChwb3MgPT0gc3RvcCk7Cit9CisKK1NlZ21lbnRJbmZvOjp+U2VnbWVudEluZm8oKQoreworICAgIGlmIChtX3BNdXhpbmdBcHBBc1VURjgpCisgICAgeworICAgICAgICBkZWxldGVbXSBtX3BNdXhpbmdBcHBBc1VURjg7CisgICAgICAgIG1fcE11eGluZ0FwcEFzVVRGOCA9IE5VTEw7CisgICAgfQorCisgICAgaWYgKG1fcFdyaXRpbmdBcHBBc1VURjgpCisgICAgeworICAgICAgICBkZWxldGVbXSBtX3BXcml0aW5nQXBwQXNVVEY4OworICAgICAgICBtX3BXcml0aW5nQXBwQXNVVEY4ID0gTlVMTDsKKyAgICB9CisgICAKKyAgICBpZiAobV9wVGl0bGVBc1VURjgpCisgICAgeworICAgICAgICBkZWxldGVbXSBtX3BUaXRsZUFzVVRGODsKKyAgICAgICAgbV9wVGl0bGVBc1VURjggPSBOVUxMOworICAgIH0KK30KKworbG9uZyBsb25nIFNlZ21lbnRJbmZvOjpHZXRUaW1lQ29kZVNjYWxlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV90aW1lY29kZVNjYWxlOworfQorCisKK2xvbmcgbG9uZyBTZWdtZW50SW5mbzo6R2V0RHVyYXRpb24oKSBjb25zdAoreworICAgIGFzc2VydChtX2R1cmF0aW9uID49IDApOyAgICAKKyAgICBhc3NlcnQobV90aW1lY29kZVNjYWxlID49IDEpOworICAgIAorICAgIGNvbnN0IGRvdWJsZSBkZCA9IGRvdWJsZShtX2R1cmF0aW9uKSAqIGRvdWJsZShtX3RpbWVjb2RlU2NhbGUpOworICAgIGNvbnN0IGxvbmcgbG9uZyBkID0gc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihkZCk7CisgICAgCisgICAgcmV0dXJuIGQ7Cit9CisKK2NvbnN0IGNoYXIqIFNlZ21lbnRJbmZvOjpHZXRNdXhpbmdBcHBBc1VURjgoKSBjb25zdAoreworICAgIHJldHVybiBtX3BNdXhpbmdBcHBBc1VURjg7Cit9CisKK2NvbnN0IGNoYXIqIFNlZ21lbnRJbmZvOjpHZXRXcml0aW5nQXBwQXNVVEY4KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wV3JpdGluZ0FwcEFzVVRGODsKK30KKworY29uc3QgY2hhciogU2VnbWVudEluZm86OkdldFRpdGxlQXNVVEY4KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wVGl0bGVBc1VURjg7Cit9CisKK1RyYWNrOjpUcmFjayhTZWdtZW50KiBwU2VnbWVudCwgY29uc3QgSW5mbyYgaSkgOgorICAgIG1fcFNlZ21lbnQocFNlZ21lbnQpLAorICAgIG1faW5mbyhpKQoreworfQorCitUcmFjazo6flRyYWNrKCkKK3sKKyAgICBJbmZvJiBpbmZvID0gY29uc3RfY2FzdDxJbmZvJj4obV9pbmZvKTsKKyAgICBpbmZvLkNsZWFyKCk7Cit9CisKK1RyYWNrOjpJbmZvOjpJbmZvKCk6CisgICAgdHlwZSgtMSksCisgICAgbnVtYmVyKC0xKSwKKyAgICB1aWQoLTEpLAorICAgIG5hbWVBc1VURjgoTlVMTCksCisgICAgY29kZWNJZChOVUxMKSwKKyAgICBjb2RlY1ByaXZhdGUoTlVMTCksCisgICAgY29kZWNQcml2YXRlU2l6ZSgwKSwKKyAgICBjb2RlY05hbWVBc1VURjgoTlVMTCkKK3sKK30KKwordm9pZCBUcmFjazo6SW5mbzo6Q2xlYXIoKSAKK3sKKyAgICBkZWxldGVbXSBuYW1lQXNVVEY4OworICAgIG5hbWVBc1VURjggPSBOVUxMOworCisgICAgZGVsZXRlW10gY29kZWNJZDsKKyAgICBjb2RlY0lkID0gTlVMTDsKKworICAgIGRlbGV0ZVtdIGNvZGVjUHJpdmF0ZTsKKyAgICBjb2RlY1ByaXZhdGUgPSBOVUxMOworCisgICAgZGVsZXRlW10gY29kZWNOYW1lQXNVVEY4OworICAgIGNvZGVjTmFtZUFzVVRGOCA9IE5VTEw7Cit9CisKK2NvbnN0IEJsb2NrRW50cnkqIFRyYWNrOjpHZXRFT1MoKSBjb25zdAoreworICAgIHJldHVybiAmbV9lb3M7Cit9CisKK2xvbmcgbG9uZyBUcmFjazo6R2V0VHlwZSgpIGNvbnN0Cit7CisgICAgY29uc3QgdW5zaWduZWQgbG9uZyByZXN1bHQgPSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihtX2luZm8udHlwZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordW5zaWduZWQgbG9uZyBUcmFjazo6R2V0TnVtYmVyKCkgY29uc3QKK3sKKyAgICBhc3NlcnQobV9pbmZvLm51bWJlciA+PSAwKTsKKyAgICBjb25zdCB1bnNpZ25lZCBsb25nIHJlc3VsdCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGxvbmc+KG1faW5mby5udW1iZXIpOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK2NvbnN0IGNoYXIqIFRyYWNrOjpHZXROYW1lQXNVVEY4KCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9pbmZvLm5hbWVBc1VURjg7Cit9CisKK2NvbnN0IGNoYXIqIFRyYWNrOjpHZXRDb2RlY05hbWVBc1VURjgoKSBjb25zdAoreyAgCisgICAgcmV0dXJuIG1faW5mby5jb2RlY05hbWVBc1VURjg7Cit9CisKKworY29uc3QgY2hhciogVHJhY2s6OkdldENvZGVjSWQoKSBjb25zdAoreworICAgIHJldHVybiBtX2luZm8uY29kZWNJZDsKK30KKworCitjb25zdCB1bnNpZ25lZCBjaGFyKiBUcmFjazo6R2V0Q29kZWNQcml2YXRlKHNpemVfdCAqb3B0aW9uYWxTaXplKSBjb25zdAoreworICAgIGlmIChvcHRpb25hbFNpemUpIHsKKyAgICAgICAgKm9wdGlvbmFsU2l6ZSA9IG1faW5mby5jb2RlY1ByaXZhdGVTaXplOworICAgIH0KKyAgICByZXR1cm4gbV9pbmZvLmNvZGVjUHJpdmF0ZTsKK30KKworCitsb25nIFRyYWNrOjpHZXRGaXJzdChjb25zdCBCbG9ja0VudHJ5KiYgcEJsb2NrRW50cnkpIGNvbnN0Cit7CisgICAgQ2x1c3RlciogY29uc3QgcENsdXN0ZXIgPSBtX3BTZWdtZW50LT5HZXRGaXJzdCgpOworICAgIAorICAgIC8vSWYgU2VnbWVudDo6R2V0Rmlyc3QgcmV0dXJucyBOVUxMLCB0aGVuIHRoaXMgbXVzdCBiZSBhIG5ldHdvcmsgCisgICAgLy9kb3dubG9hZCwgYW5kIHdlIGhhdmVuJ3QgbG9hZGVkIGFueSBjbHVzdGVycyB5ZXQuICBJbiB0aGlzIGNhc2UsCisgICAgLy9yZXR1cm5pbmcgTlVMTCBmcm9tIFRyYWNrOjpHZXRGaXJzdCBtZWFucyB0aGUgc2FtZSB0aGluZy4KKworICAgIGlmICgocENsdXN0ZXIgPT0gTlVMTCkgfHwgcENsdXN0ZXItPkVPUygpKQorICAgIHsKKyAgICAgICAgcEJsb2NrRW50cnkgPSBOVUxMOworICAgICAgICByZXR1cm4gRV9CVUZGRVJfTk9UX0ZVTEw7ICAvL3JldHVybiAxTCBpbnN0ZWFkPworICAgIH0KKyAgICAgICAgCisgICAgcEJsb2NrRW50cnkgPSBwQ2x1c3Rlci0+R2V0Rmlyc3QoKTsKKyAgICAKKyAgICB3aGlsZSAocEJsb2NrRW50cnkpCisgICAgeworICAgICAgICBjb25zdCBCbG9jayogY29uc3QgcEJsb2NrID0gcEJsb2NrRW50cnktPkdldEJsb2NrKCk7CisgICAgICAgIGFzc2VydChwQmxvY2spOworICAgICAgICAKKyAgICAgICAgaWYgKHBCbG9jay0+R2V0VHJhY2tOdW1iZXIoKSA9PSAodW5zaWduZWQgbG9uZyltX2luZm8ubnVtYmVyKQorICAgICAgICAgICAgcmV0dXJuIDBMOworICAgICAgICAgICAgCisgICAgICAgIHBCbG9ja0VudHJ5ID0gcENsdXN0ZXItPkdldE5leHQocEJsb2NrRW50cnkpOworICAgIH0KKyAgICAKKyAgICAvL05PVEU6IGlmIHdlIGdldCBoZXJlLCBpdCBtZWFucyB0aGF0IHdlIGRpZG4ndCBmaW5kIGEgYmxvY2sgd2l0aAorICAgIC8vYSBtYXRjaGluZyB0cmFjayBudW1iZXIuICBXZSBpbnRlcnByZXQgdGhhdCBhcyBhbiBlcnJvciAod2hpY2gKKyAgICAvL21pZ2h0IGJlIHRvbyBjb25zZXJ2YXRpdmUpLgorCisgICAgcEJsb2NrRW50cnkgPSBHZXRFT1MoKTsgIC8vc28gd2UgY2FuIHJldHVybiBhIG5vbi1OVUxMIHZhbHVlCisgICAgcmV0dXJuIDFMOworfQorCisKK2xvbmcgVHJhY2s6OkdldE5leHQoY29uc3QgQmxvY2tFbnRyeSogcEN1cnJFbnRyeSwgY29uc3QgQmxvY2tFbnRyeSomIHBOZXh0RW50cnkpIGNvbnN0Cit7CisgICAgYXNzZXJ0KHBDdXJyRW50cnkpOworICAgIGFzc2VydCghcEN1cnJFbnRyeS0+RU9TKCkpOyAgLy8/CisgICAgYXNzZXJ0KHBDdXJyRW50cnktPkdldEJsb2NrKCktPkdldFRyYWNrTnVtYmVyKCkgPT0gKHVuc2lnbmVkIGxvbmcpbV9pbmZvLm51bWJlcik7ICAgIAorICAgIAorICAgIGNvbnN0IENsdXN0ZXIqIGNvbnN0IHBDdXJyQ2x1c3RlciA9IHBDdXJyRW50cnktPkdldENsdXN0ZXIoKTsKKyAgICBhc3NlcnQocEN1cnJDbHVzdGVyKTsKKyAgICBhc3NlcnQoIXBDdXJyQ2x1c3Rlci0+RU9TKCkpOworICAgIAorICAgIHBOZXh0RW50cnkgPSBwQ3VyckNsdXN0ZXItPkdldE5leHQocEN1cnJFbnRyeSk7CisgICAgICAgICAgICAKKyAgICB3aGlsZSAocE5leHRFbnRyeSkKKyAgICB7ICAgIAorICAgICAgICBjb25zdCBCbG9jayogY29uc3QgcE5leHRCbG9jayA9IHBOZXh0RW50cnktPkdldEJsb2NrKCk7CisgICAgICAgIGFzc2VydChwTmV4dEJsb2NrKTsKKyAgICAKKyAgICAgICAgaWYgKHBOZXh0QmxvY2stPkdldFRyYWNrTnVtYmVyKCkgPT0gKHVuc2lnbmVkIGxvbmcpbV9pbmZvLm51bWJlcikKKyAgICAgICAgICAgIHJldHVybiAwTDsKKyAgICAgICAgICAgIAorICAgICAgICBwTmV4dEVudHJ5ID0gcEN1cnJDbHVzdGVyLT5HZXROZXh0KHBOZXh0RW50cnkpOworICAgIH0KKworICAgIFNlZ21lbnQqIHBTZWdtZW50ID0gcEN1cnJDbHVzdGVyLT5tX3BTZWdtZW50OyAgICAKKyAgICBDbHVzdGVyKiBjb25zdCBwTmV4dENsdXN0ZXIgPSBwU2VnbWVudC0+R2V0TmV4dChwQ3VyckNsdXN0ZXIpOworICAgIAorICAgIGlmICgocE5leHRDbHVzdGVyID09IE5VTEwpIHx8IHBOZXh0Q2x1c3Rlci0+RU9TKCkpCisgICAgeworICAgICAgICBpZiAocFNlZ21lbnQtPlVucGFyc2VkKCkgPD0gMCkgICAvL2FsbCBjbHVzdGVycyBoYXZlIGJlZW4gbG9hZGVkCisgICAgICAgIHsKKyAgICAgICAgICAgIHBOZXh0RW50cnkgPSBHZXRFT1MoKTsKKyAgICAgICAgICAgIHJldHVybiAxTDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcE5leHRFbnRyeSA9IE5VTEw7CisgICAgICAgIHJldHVybiBFX0JVRkZFUl9OT1RfRlVMTDsKKyAgICB9CisgICAgICAgIAorICAgIHBOZXh0RW50cnkgPSBwTmV4dENsdXN0ZXItPkdldEZpcnN0KCk7CisgICAgCisgICAgd2hpbGUgKHBOZXh0RW50cnkpCisgICAgeworICAgICAgICBjb25zdCBCbG9jayogY29uc3QgcE5leHRCbG9jayA9IHBOZXh0RW50cnktPkdldEJsb2NrKCk7CisgICAgICAgIGFzc2VydChwTmV4dEJsb2NrKTsKKyAgICAgICAgCisgICAgICAgIGlmIChwTmV4dEJsb2NrLT5HZXRUcmFja051bWJlcigpID09ICh1bnNpZ25lZCBsb25nKW1faW5mby5udW1iZXIpCisgICAgICAgICAgICByZXR1cm4gMEw7CisgICAgICAgICAgICAKKyAgICAgICAgcE5leHRFbnRyeSA9IHBOZXh0Q2x1c3Rlci0+R2V0TmV4dChwTmV4dEVudHJ5KTsKKyAgICB9CisgICAgCisgICAgLy9UT0RPOiB3aGF0IGhhcyBoYXBwZW5lZCBoZXJlIGlzIHRoYXQgd2UgZGlkIG5vdCBmaW5kIGEgYmxvY2sKKyAgICAvL3dpdGggYSBtYXRjaGluZyB0cmFjayBudW1iZXIgb24gdGhlIG5leHQgY2x1c3Rlci4gIEl0IG1pZ2h0CisgICAgLy9iZSB0aGUgY2FzZSB0aGF0IHNvbWUgY2x1c3RlciBiZXlvbmQgdGhlIG5leHQgY2x1c3RlciAKKyAgICAvL2NvbnRhaW5zIGEgYmxvY2sgaGF2aW5nIGEgbWF0Y2hpbmcgdHJhY2sgbnVtYmVyLCBidXQgZm9yCisgICAgLy9ub3cgd2UgdGVybWluYXRlIHRoZSBzZWFyY2ggaW1tZWRpYXRlbHkuICBXZSBkbyB0aGlzIHNvIHRoYXQKKyAgICAvL3dlIGRvbid0IGVuZCB1cCBzZWFyY2hpbmcgdGhlIGVudGlyZSBmaWxlIGxvb2tpbmcgZm9yIHRoZQorICAgIC8vbmV4dCBibG9jay4gIEFub3RoZXIgcG9zc2liaWxpdHkgaXMgdG8gdHJ5IHNlYXJjaGluZyBmb3IgdGhlIG5leHQKKyAgICAvL2Jsb2NrIGluIGEgc21hbGwsIGZpeGVkIG51bWJlciBvZiBjbHVzdGVycyAoaW50ZWFkIHNlYXJjaGluZworICAgIC8vanVzdCB0aGUgbmV4dCBvbmUpLCBvciB0byB0ZXJtaW5hdGUgdGhlIHNlYXJjaCB3aGVuIHdoZW4gdGhlCisgICAgLy90aGVyZSBpcyBhIGxhcmdlIGdhcCBpbiB0aW1lLCBvciBsYXJnZSBnYXAgaW4gZmlsZSBwb3NpdGlvbi4gIEl0CisgICAgLy9taWdodCB2ZXJ5IHdlbGwgYmUgdGhlIGNhc2UgdGhhdCB0aGUgYXBwcm9hY2ggd2UgdXNlIGhlcmUgaXMKKyAgICAvL3VubmVjZXNzYXJpbHkgY29uc2VydmF0aXZlLgorICAgIAorICAgIC8vVE9ETzogYWdhaW4sIGhlcmUncyBhIGNhc2Ugd2hlcmUgd2UgbmVlZCB0byByZXR1cm4gdGhlIHNwZWNpYWwKKyAgICAvL0VPUyBibG9jay4gIE9yIHNvbWV0aGluZy4gIEl0J3MgT0sgaWYgcE5leHQgaXMgTlVMTCwgYmVjYXVzZQorICAgIC8vd2Ugb25seSBuZWVkIGl0IHRvIHNldCB0aGUgc3RvcCB0aW1lIG9mIHRoZSBtZWRpYSBzYW1wbGUuCisgICAgLy8oVGhlIHN0YXJ0IHRpbWUgaXMgZGV0ZXJtaW5lZCBmcm9tIHBDdXJyLCB3aGljaCBpcyBub24tTlVMTAorICAgIC8vYW5kIG5vbi1FT1MuKSAgVGhlIHByb2JsZW0gaXMgd2hlbiB3ZSBzZXQgcEN1cnI9cE5leHQ7IHdoZW4KKyAgICAvL3BDdXJyIGhhcyB0aGUgdmFsdWUgTlVMTCB3ZSBpbnRlcnByZXQgdGhhdCB0byBtZWFuIHRoYXQgd2UKKyAgICAvL2hhdmVuJ3QgZnVsbHkgaW5pdGlhbGl6ZWQgcEN1cnIgYW5kIHdlIGF0dGVtcHQgdG8gc2V0IGl0IHRvCisgICAgLy9wb2ludCB0byB0aGUgZmlyc3QgYmxvY2sgZm9yIHRoaXMgdHJhY2suICBCdXQgdGhhdCdzIG5vdCB3aGF0CisgICAgLy93ZSB3YW50IGF0IGFsbDsgd2Ugd2FudCB0aGUgbmV4dCBjYWxsIHRvIFBvcHVsYXRlU2FtcGxlIHRvCisgICAgLy9yZXR1cm4gZW5kLW9mLXN0cmVhbSwgbm90IChyZSlzdGFydCBmcm9tIHRoZSBiZWdpbm5pbmcuCisgICAgLy8KKyAgICAvL09uZSB3b3JrLWFyb3VuZCBpcyB0byBzZW5kIEVPUyBpbW1lZGlhdGVseS4gIFdlIHdvdWxkIHNlbmQgCisgICAgLy90aGUgRU9TIHRoZSBuZXh0IHBhc3MgYW55d2F5LCBzbyBtYXliZSBpdCdzIG5vIGdyZWF0IGxvc3MuICBUaGUgCisgICAgLy9vbmx5IHByb2JsZW0gaXMgdGhhdCBpZiB0aGlzIHRoZSBzdHJlYW0gcmVhbGx5IGRvZXMgZW5kIG9uZQorICAgIC8vY2x1c3RlciBlYXJseSAocmVsYXRpdmUgdG8gb3RoZXIgdHJhY2tzKSwgb3IgdGhlIGxhc3QgZnJhbWUKKyAgICAvL2hhcHBlbnMgdG8gYmUgYSBrZXlmcmFtZSAoIkNhblNlZWtUb0VuZCIpLgorICAgIC8vCisgICAgLy9UaGUgcHJvYmxlbSBpcyB0aGF0IHdlIG5lZWQgYSB3YXkgdG8gbWFyayBhcyBzdHJlYW0gYXMKKyAgICAvLyJhdCBlbmQgb2Ygc3RyZWFtIiB3aXRob3V0IGFjdHVhbGx5IGJlaW5nIGF0IGVuZCBvZiBzdHJlYW0uCisgICAgLy9XZSBuZWVkIHRvIGdpdmUgcEN1cnIgc29tZSB2YWx1ZSB0aGF0IG1lYW5zICJ5b3UndmUgcmVhY2hlZCBFT1MiLgorICAgIC8vV2UgY2FuJ3Qgc3ludGhlc2l6ZSB0aGUgc3BlY2lhbCBFT1MgQ2x1c3RlciBpbW1lZGlhdGVseQorICAgIC8vKHdoZW4gd2UgZmlyc3Qgb3BlbiB0aGUgZmlsZSwgc2F5KSwgYmVjYXVzZSB3ZSB1c2UgdGhlIGV4aXN0YW5jZQorICAgIC8vb2YgdGhhdCBzcGVjaWFsIGNsdXN0ZXIgdmFsdWUgdG8gbWVhbiB0aGF0IHdlJ3ZlIHJlYWQgYWxsIG9mIAorICAgIC8vdGhlIGNsdXN0ZXJzICh0aGlzIGlzIGEgbmV0d29yayBkb3dubG9hZCwgc28gd2UgY2FuJ3Qga25vdyBhcHJpb3JpCisgICAgLy9ob3cgbWFueSB3ZSBoYXZlKS4KKyAgICAvLworICAgIC8vT3IsIHdlIGNvdWxkIHJldHVybiBFX0ZBSUwsIGFuZCBzZXQgYW5vdGhlciBiaXQgaW4gdGhlIHN0cmVhbQorICAgIC8vb2JqZWN0IGl0c2VsZiwgdG8gaW5kaWNhdGUgdGhhdCBpdCBzaG91bGQgc2VuZCBFT1MgZWFybGllcgorICAgIC8vdGhhbiB3aGVuIChwQ3Vycj1wU3RvcCkuCisgICAgLy8KKyAgICAvL09yLCBwcm9iYWJseSB0aGUgYmVzdCBzb2x1dGlvbiwgd2hlbiB3ZSBhY3R1YWxseSBsb2FkIHRoZSAKKyAgICAvL2Jsb2NrcyBpbnRvIGEgY2x1c3RlcjogaWYgd2Ugbm90aWNlIHRoYXQgdGhlcmUncyBubyBibG9jaworICAgIC8vZm9yIGEgdHJhY2ssIHdlIHN5bnRoZXNpemUgYSBub25jZSBFT1MgYmxvY2sgZm9yIHRoYXQgdHJhY2suCisgICAgLy9UaGF0IHdheSB3ZSBhbHdheXMgaGF2ZSBzb21ldGhpbmcgdG8gcmV0dXJuLiAgQnV0IHRoYXQgd2lsbAorICAgIC8vb25seSB3b3JrIGZvciBzZXF1ZW50aWFsIHNjYW4/Pz8KKworICAgIC8vcE5leHQgPSBOVUxMOyAgICAKKyAgICAvL3JldHVybiBFX0ZBSUw7CisgICAgcE5leHRFbnRyeSA9IEdldEVPUygpOworICAgIHJldHVybiAxTDsKK30KKworCitUcmFjazo6RU9TQmxvY2s6OkVPU0Jsb2NrKCkKK3sKK30KKworCitib29sIFRyYWNrOjpFT1NCbG9jazo6RU9TKCkgY29uc3QKK3sKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworCitDbHVzdGVyKiBUcmFjazo6RU9TQmxvY2s6OkdldENsdXN0ZXIoKSBjb25zdAoreworICAgIHJldHVybiBOVUxMOworfQorCisKK3NpemVfdCBUcmFjazo6RU9TQmxvY2s6OkdldEluZGV4KCkgY29uc3QKK3sKKyAgICByZXR1cm4gMDsKK30KKworCitjb25zdCBCbG9jayogVHJhY2s6OkVPU0Jsb2NrOjpHZXRCbG9jaygpIGNvbnN0Cit7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKworYm9vbCBUcmFjazo6RU9TQmxvY2s6OklzQkZyYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKworVmlkZW9UcmFjazo6VmlkZW9UcmFjayhTZWdtZW50KiBwU2VnbWVudCwgY29uc3QgSW5mbyYgaSkgOgorICAgIFRyYWNrKHBTZWdtZW50LCBpKSwKKyAgICBtX3dpZHRoKC0xKSwKKyAgICBtX2hlaWdodCgtMSksCisgICAgbV9yYXRlKC0xKQoreworICAgIGFzc2VydChpLnR5cGUgPT0gMSk7CisgICAgYXNzZXJ0KGkubnVtYmVyID4gMCk7CisgICAgCisgICAgSU1rdlJlYWRlciogY29uc3QgcFJlYWRlciA9IHBTZWdtZW50LT5tX3BSZWFkZXI7CisgICAgCisgICAgY29uc3QgU2V0dGluZ3MmIHMgPSBpLnNldHRpbmdzOworICAgIGFzc2VydChzLnN0YXJ0ID49IDApOworICAgIGFzc2VydChzLnNpemUgPj0gMCk7CisgICAgCisgICAgbG9uZyBsb25nIHBvcyA9IHMuc3RhcnQ7CisgICAgYXNzZXJ0KHBvcyA+PSAwKTsKKyAgICAKKyAgICBjb25zdCBsb25nIGxvbmcgc3RvcCA9IHBvcyArIHMuc2l6ZTsKKyAgICAKKyAgICB3aGlsZSAocG9zIDwgc3RvcCkKKyAgICB7CisjaWZkZWYgX0RFQlVHCisgICAgICAgIGxvbmcgbGVuOworICAgICAgICBjb25zdCBsb25nIGxvbmcgaWQgPSBSZWFkVUludChwUmVhZGVyLCBwb3MsIGxlbik7CisgICAgICAgIGFzc2VydChpZCA+PSAwKTsgIC8vVE9ETzogaGFuZGxlIGVycm9yIGNhc2UKKyAgICAgICAgYXNzZXJ0KChwb3MgKyBsZW4pIDw9IHN0b3ApOworI2VuZGlmCisgICAgICAgIGlmIChNYXRjaChwUmVhZGVyLCBwb3MsIDB4MzAsIG1fd2lkdGgpKSAgICAgICAgIAorICAgICAgICAgICAgOworICAgICAgICBlbHNlIGlmIChNYXRjaChwUmVhZGVyLCBwb3MsIDB4M0EsIG1faGVpZ2h0KSkgICAKKyAgICAgICAgICAgIDsKKyAgICAgICAgZWxzZSBpZiAoTWF0Y2gocFJlYWRlciwgcG9zLCAweDAzODNFMywgbV9yYXRlKSkgCisgICAgICAgICAgICA7CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgbG9uZyBsZW47CisgICAgICAgICAgICBjb25zdCBsb25nIGxvbmcgaWQgPSBSZWFkVUludChwUmVhZGVyLCBwb3MsIGxlbik7CisgICAgICAgICAgICBhc3NlcnQoaWQgPj0gMCk7ICAvL1RPRE86IGhhbmRsZSBlcnJvciBjYXNlCisgICAgICAgICAgICBhc3NlcnQoKHBvcyArIGxlbikgPD0gc3RvcCk7CisgICAgICAgIAorICAgICAgICAgICAgcG9zICs9IGxlbjsgIC8vY29uc3VtZSBpZAorICAgICAgICAgICAgCisgICAgICAgICAgICBjb25zdCBsb25nIGxvbmcgc2l6ZSA9IFJlYWRVSW50KHBSZWFkZXIsIHBvcywgbGVuKTsKKyAgICAgICAgICAgIGFzc2VydChzaXplID49IDApOyAgLy9UT0RPOiBoYW5kbGUgZXJyb3IgY2FzZQorICAgICAgICAgICAgYXNzZXJ0KChwb3MgKyBsZW4pIDw9IHN0b3ApOworICAgICAgICAgICAgCisgICAgICAgICAgICBwb3MgKz0gbGVuOyAgLy9jb25zdW1lIGxlbmd0aCBvZiBzaXplCisgICAgICAgICAgICBhc3NlcnQoKHBvcyArIHNpemUpIDw9IHN0b3ApOworICAgICAgICAgICAgCisgICAgICAgICAgICAvL3BvcyBub3cgZGVzaWduYXRlcyBzdGFydCBvZiBwYXlsb2FkCisgICAgICAgICAgICAKKyAgICAgICAgICAgIHBvcyArPSBzaXplOyAgLy9jb25zdW1lIHBheWxvYWQKKyAgICAgICAgICAgIGFzc2VydChwb3MgPD0gc3RvcCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcmV0dXJuOworfQorCisKK2Jvb2wgVmlkZW9UcmFjazo6VmV0RW50cnkoY29uc3QgQmxvY2tFbnRyeSogcEJsb2NrRW50cnkpIGNvbnN0Cit7CisgICAgYXNzZXJ0KHBCbG9ja0VudHJ5KTsKKyAgICAKKyAgICBjb25zdCBCbG9jayogY29uc3QgcEJsb2NrID0gcEJsb2NrRW50cnktPkdldEJsb2NrKCk7CisgICAgYXNzZXJ0KHBCbG9jayk7ICAgIAorICAgIGFzc2VydChwQmxvY2stPkdldFRyYWNrTnVtYmVyKCkgPT0gKHVuc2lnbmVkIGxvbmcpbV9pbmZvLm51bWJlcik7CisgICAgCisgICAgcmV0dXJuIHBCbG9jay0+SXNLZXkoKTsKK30KKworCisKK2xvbmcgbG9uZyBWaWRlb1RyYWNrOjpHZXRXaWR0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fd2lkdGg7Cit9CisKKworbG9uZyBsb25nIFZpZGVvVHJhY2s6OkdldEhlaWdodCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faGVpZ2h0OworfQorCisKK2RvdWJsZSBWaWRlb1RyYWNrOjpHZXRGcmFtZVJhdGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3JhdGU7Cit9CisKKworQXVkaW9UcmFjazo6QXVkaW9UcmFjayhTZWdtZW50KiBwU2VnbWVudCwgY29uc3QgSW5mbyYgaSkgOgorICAgIFRyYWNrKHBTZWdtZW50LCBpKQoreworICAgIGFzc2VydChpLnR5cGUgPT0gMik7CisgICAgYXNzZXJ0KGkubnVtYmVyID4gMCk7CisKKyAgICBJTWt2UmVhZGVyKiBjb25zdCBwUmVhZGVyID0gcFNlZ21lbnQtPm1fcFJlYWRlcjsKKyAgICAKKyAgICBjb25zdCBTZXR0aW5ncyYgcyA9IGkuc2V0dGluZ3M7CisgICAgYXNzZXJ0KHMuc3RhcnQgPj0gMCk7CisgICAgYXNzZXJ0KHMuc2l6ZSA+PSAwKTsKKyAgICAKKyAgICBsb25nIGxvbmcgcG9zID0gcy5zdGFydDsKKyAgICBhc3NlcnQocG9zID49IDApOworICAgIAorICAgIGNvbnN0IGxvbmcgbG9uZyBzdG9wID0gcG9zICsgcy5zaXplOworICAgIAorICAgIHdoaWxlIChwb3MgPCBzdG9wKQorICAgIHsKKyNpZmRlZiBfREVCVUcKKyAgICAgICAgbG9uZyBsZW47CisgICAgICAgIGNvbnN0IGxvbmcgbG9uZyBpZCA9IFJlYWRVSW50KHBSZWFkZXIsIHBvcywgbGVuKTsKKyAgICAgICAgYXNzZXJ0KGlkID49IDApOyAgLy9UT0RPOiBoYW5kbGUgZXJyb3IgY2FzZQorICAgICAgICBhc3NlcnQoKHBvcyArIGxlbikgPD0gc3RvcCk7CisjZW5kaWYKKyAgICAgICAgaWYgKE1hdGNoKHBSZWFkZXIsIHBvcywgMHgzNSwgbV9yYXRlKSkgICAgICAgICAgICAKKyAgICAgICAgICAgIDsKKyAgICAgICAgZWxzZSBpZiAoTWF0Y2gocFJlYWRlciwgcG9zLCAweDFGLCBtX2NoYW5uZWxzKSkgICAKKyAgICAgICAgICAgIDsKKyAgICAgICAgZWxzZSBpZiAoTWF0Y2gocFJlYWRlciwgcG9zLCAweDIyNjQsIG1fYml0RGVwdGgpKSAgCisgICAgICAgICAgICA7ICAgICAgICAgICAgCisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgbG9uZyBsZW47CisgICAgICAgICAgICBjb25zdCBsb25nIGxvbmcgaWQgPSBSZWFkVUludChwUmVhZGVyLCBwb3MsIGxlbik7CisgICAgICAgICAgICBhc3NlcnQoaWQgPj0gMCk7ICAvL1RPRE86IGhhbmRsZSBlcnJvciBjYXNlCisgICAgICAgICAgICBhc3NlcnQoKHBvcyArIGxlbikgPD0gc3RvcCk7CisgICAgICAgIAorICAgICAgICAgICAgcG9zICs9IGxlbjsgIC8vY29uc3VtZSBpZAorICAgICAgICAgICAgCisgICAgICAgICAgICBjb25zdCBsb25nIGxvbmcgc2l6ZSA9IFJlYWRVSW50KHBSZWFkZXIsIHBvcywgbGVuKTsKKyAgICAgICAgICAgIGFzc2VydChzaXplID49IDApOyAgLy9UT0RPOiBoYW5kbGUgZXJyb3IgY2FzZQorICAgICAgICAgICAgYXNzZXJ0KChwb3MgKyBsZW4pIDw9IHN0b3ApOworICAgICAgICAgICAgCisgICAgICAgICAgICBwb3MgKz0gbGVuOyAgLy9jb25zdW1lIGxlbmd0aCBvZiBzaXplCisgICAgICAgICAgICBhc3NlcnQoKHBvcyArIHNpemUpIDw9IHN0b3ApOworICAgICAgICAgICAgCisgICAgICAgICAgICAvL3BvcyBub3cgZGVzaWduYXRlcyBzdGFydCBvZiBwYXlsb2FkCisgICAgICAgICAgICAKKyAgICAgICAgICAgIHBvcyArPSBzaXplOyAgLy9jb25zdW1lIHBheWxvYWQKKyAgICAgICAgICAgIGFzc2VydChwb3MgPD0gc3RvcCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm47Cit9CisKK2Jvb2wgQXVkaW9UcmFjazo6VmV0RW50cnkoY29uc3QgQmxvY2tFbnRyeSogcEJsb2NrRW50cnkpIGNvbnN0Cit7CisgICAgYXNzZXJ0KHBCbG9ja0VudHJ5KTsKKyAgICAKKyAgICBjb25zdCBCbG9jayogY29uc3QgcEJsb2NrID0gcEJsb2NrRW50cnktPkdldEJsb2NrKCk7CisgICAgYXNzZXJ0KHBCbG9jayk7CisgICAgYXNzZXJ0KHBCbG9jay0+R2V0VHJhY2tOdW1iZXIoKSA9PSAodW5zaWduZWQgbG9uZyltX2luZm8ubnVtYmVyKTsKKworICAgIHJldHVybiB0cnVlOworfQorCisKK2RvdWJsZSBBdWRpb1RyYWNrOjpHZXRTYW1wbGluZ1JhdGUoKSBjb25zdAoreworICAgIHJldHVybiBtX3JhdGU7Cit9CisKKworbG9uZyBsb25nIEF1ZGlvVHJhY2s6OkdldENoYW5uZWxzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9jaGFubmVsczsKK30KKworbG9uZyBsb25nIEF1ZGlvVHJhY2s6OkdldEJpdERlcHRoKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9iaXREZXB0aDsKK30KKworVHJhY2tzOjpUcmFja3MoU2VnbWVudCogcFNlZ21lbnQsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIHNpemVfKSA6CisgICAgbV9wU2VnbWVudChwU2VnbWVudCksCisgICAgbV9zdGFydChzdGFydCksCisgICAgbV9zaXplKHNpemVfKSwKKyAgICBtX3RyYWNrRW50cmllcyhOVUxMKSwKKyAgICBtX3RyYWNrRW50cmllc0VuZChOVUxMKQoreworICAgIGxvbmcgbG9uZyBzdG9wID0gbV9zdGFydCArIG1fc2l6ZTsKKyAgICBJTWt2UmVhZGVyKiBjb25zdCBwUmVhZGVyID0gbV9wU2VnbWVudC0+bV9wUmVhZGVyOworICAgIAorICAgIGxvbmcgbG9uZyBwb3MxID0gbV9zdGFydDsKKyAgICBpbnQgY291bnQgPSAwOworICAgIAorICAgIHdoaWxlIChwb3MxIDwgc3RvcCkKKyAgICB7CisgICAgICAgIGxvbmcgbGVuOworICAgICAgICBjb25zdCBsb25nIGxvbmcgaWQgPSBSZWFkVUludChwUmVhZGVyLCBwb3MxLCBsZW4pOworICAgICAgICBhc3NlcnQoaWQgPj0gMCk7CisgICAgICAgIGFzc2VydCgocG9zMSArIGxlbikgPD0gc3RvcCk7CisgICAgICAgIAorICAgICAgICBwb3MxICs9IGxlbjsgIC8vY29uc3VtZSBpZAorICAgICAgICAKKyAgICAgICAgY29uc3QgbG9uZyBsb25nIHNpemUgPSBSZWFkVUludChwUmVhZGVyLCBwb3MxLCBsZW4pOworICAgICAgICBhc3NlcnQoc2l6ZSA+PSAwKTsKKyAgICAgICAgYXNzZXJ0KChwb3MxICsgbGVuKSA8PSBzdG9wKTsKKyAgICAgICAgCisgICAgICAgIHBvczEgKz0gbGVuOyAgLy9jb25zdW1lIGxlbmd0aCBvZiBzaXplCisgICAgICAgIAorICAgICAgICAvL3BvcyBub3cgZGVzaW5hdGVzIHN0YXJ0IG9mIGVsZW1lbnQKKyAgICAgICAgaWYgKGlkID09IDB4MkUpICAvL1RyYWNrRW50cnkgSUQKKyAgICAgICAgICAgICsrY291bnQ7CisgICAgICAgICAgICAKKyAgICAgICAgcG9zMSArPSBzaXplOyAgLy9jb25zdW1lIHBheWxvYWQKKyAgICAgICAgYXNzZXJ0KHBvczEgPD0gc3RvcCk7CisgICAgfSAgICAKKworICAgIGlmIChjb3VudCA8PSAwKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3RyYWNrRW50cmllcyA9IG5ldyBUcmFjaypbY291bnRdOworICAgIG1fdHJhY2tFbnRyaWVzRW5kID0gbV90cmFja0VudHJpZXM7CisKKyAgICBsb25nIGxvbmcgcG9zID0gbV9zdGFydDsKKworICAgIHdoaWxlIChwb3MgPCBzdG9wKQorICAgIHsKKyAgICAgICAgbG9uZyBsZW47CisgICAgICAgIGNvbnN0IGxvbmcgbG9uZyBpZCA9IFJlYWRVSW50KHBSZWFkZXIsIHBvcywgbGVuKTsKKyAgICAgICAgYXNzZXJ0KGlkID49IDApOworICAgICAgICBhc3NlcnQoKHBvcyArIGxlbikgPD0gc3RvcCk7CisgICAgICAgIAorICAgICAgICBwb3MgKz0gbGVuOyAgLy9jb25zdW1lIGlkCisgICAgICAgIAorICAgICAgICBjb25zdCBsb25nIGxvbmcgc2l6ZTEgPSBSZWFkVUludChwUmVhZGVyLCBwb3MsIGxlbik7CisgICAgICAgIGFzc2VydChzaXplMSA+PSAwKTsKKyAgICAgICAgYXNzZXJ0KChwb3MgKyBsZW4pIDw9IHN0b3ApOworICAgICAgICAKKyAgICAgICAgcG9zICs9IGxlbjsgIC8vY29uc3VtZSBsZW5ndGggb2Ygc2l6ZQorICAgICAgICAKKyAgICAgICAgLy9wb3Mgbm93IGRlc2luYXRlcyBzdGFydCBvZiBlbGVtZW50CisgICAgICAgIAorICAgICAgICBpZiAoaWQgPT0gMHgyRSkgIC8vVHJhY2tFbnRyeSBJRAorICAgICAgICAgICAgUGFyc2VUcmFja0VudHJ5KHBvcywgc2l6ZTEsICptX3RyYWNrRW50cmllc0VuZCsrKTsKKyAgICAgICAgICAgIAorICAgICAgICBwb3MgKz0gc2l6ZTE7ICAvL2NvbnN1bWUgcGF5bG9hZAorICAgICAgICBhc3NlcnQocG9zIDw9IHN0b3ApOworICAgIH0gICAgCit9CisKK3Vuc2lnbmVkIGxvbmcgVHJhY2tzOjpHZXRUcmFja3NDb3VudCgpIGNvbnN0Cit7CisgICAgY29uc3QgcHRyZGlmZl90IHJlc3VsdCA9IG1fdHJhY2tFbnRyaWVzRW5kIC0gbV90cmFja0VudHJpZXM7CisgICAgYXNzZXJ0KHJlc3VsdCA+PSAwKTsKKyAgICAKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4ocmVzdWx0KTsKK30KKworCit2b2lkIFRyYWNrczo6UGFyc2VUcmFja0VudHJ5KAorICAgIGxvbmcgbG9uZyBzdGFydCwKKyAgICBsb25nIGxvbmcgc2l6ZSwKKyAgICBUcmFjayomIHBUcmFjaykKK3sKKyAgICBJTWt2UmVhZGVyKiBjb25zdCBwUmVhZGVyID0gbV9wU2VnbWVudC0+bV9wUmVhZGVyOworICAgIAorICAgIGxvbmcgbG9uZyBwb3MgPSBzdGFydDsKKyAgICBjb25zdCBsb25nIGxvbmcgc3RvcCA9IHN0YXJ0ICsgc2l6ZTsKKworICAgIFRyYWNrOjpJbmZvIGk7CisgICAgCisgICAgVHJhY2s6OlNldHRpbmdzIHZpZGVvU2V0dGluZ3M7CisgICAgdmlkZW9TZXR0aW5ncy5zdGFydCA9IC0xOworICAgIAorICAgIFRyYWNrOjpTZXR0aW5ncyBhdWRpb1NldHRpbmdzOworICAgIGF1ZGlvU2V0dGluZ3Muc3RhcnQgPSAtMTsKKyAgICAKKyAgICB3aGlsZSAocG9zIDwgc3RvcCkKKyAgICB7CisjaWZkZWYgX0RFQlVHCisgICAgICAgIGxvbmcgbGVuOworICAgICAgICBjb25zdCBsb25nIGxvbmcgaWQgPSBSZWFkVUludChwUmVhZGVyLCBwb3MsIGxlbik7CisgICAgICAgIGxlbjsKKyAgICAgICAgaWQ7CisjZW5kaWYKKyAgICAgICAgaWYgKE1hdGNoKHBSZWFkZXIsIHBvcywgMHg1NywgaS5udW1iZXIpKQorICAgICAgICAgICAgYXNzZXJ0KGkubnVtYmVyID4gMCk7CisKKyAgICAgICAgZWxzZSBpZiAoTWF0Y2gocFJlYWRlciwgcG9zLCAweDMzQzUsIGkudWlkKSkgICAgICAgICAgIAorICAgICAgICAgICAgOyAgCisKKyAgICAgICAgZWxzZSBpZiAoTWF0Y2gocFJlYWRlciwgcG9zLCAweDAzLCBpLnR5cGUpKSAgICAgICAgICAgIAorICAgICAgICAgICAgOyAgCisKKyAgICAgICAgZWxzZSBpZiAoTWF0Y2gocFJlYWRlciwgcG9zLCAweDEzNkUsIGkubmFtZUFzVVRGOCkpICAgICAgICAgIAorICAgICAgICAgICAgYXNzZXJ0KGkubmFtZUFzVVRGOCk7ICAKKworICAgICAgICBlbHNlIGlmIChNYXRjaChwUmVhZGVyLCBwb3MsIDB4MDYsIGkuY29kZWNJZCkpICAgICAgICAgCisgICAgICAgICAgICA7ICAKKworICAgICAgICBlbHNlIGlmIChNYXRjaChwUmVhZGVyLCBwb3MsIDB4MjNBMiwgaS5jb2RlY1ByaXZhdGUsICZpLmNvZGVjUHJpdmF0ZVNpemUpKSAgCisgICAgICAgICAgICA7ICAKKworICAgICAgICBlbHNlIGlmIChNYXRjaChwUmVhZGVyLCBwb3MsIDB4MDU4Njg4LCBpLmNvZGVjTmFtZUFzVVRGOCkpICAgCisgICAgICAgICAgICBhc3NlcnQoaS5jb2RlY05hbWVBc1VURjgpOyAgCisKKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBsb25nIGxlbjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgY29uc3QgbG9uZyBsb25nIGlkID0gUmVhZFVJbnQocFJlYWRlciwgcG9zLCBsZW4pOworICAgICAgICAgICAgYXNzZXJ0KGlkID49IDApOyAgLy9UT0RPOiBoYW5kbGUgZXJyb3IgY2FzZQorICAgICAgICAgICAgYXNzZXJ0KChwb3MgKyBsZW4pIDw9IHN0b3ApOworICAgICAgICAgICAgCisgICAgICAgICAgICBwb3MgKz0gbGVuOyAgLy9jb25zdW1lIGlkCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGNvbnN0IGxvbmcgbG9uZyBzaXplID0gUmVhZFVJbnQocFJlYWRlciwgcG9zLCBsZW4pOworICAgICAgICAgICAgYXNzZXJ0KHNpemUgPj0gMCk7ICAvL1RPRE86IGhhbmRsZSBlcnJvciBjYXNlCisgICAgICAgICAgICBhc3NlcnQoKHBvcyArIGxlbikgPD0gc3RvcCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHBvcyArPSBsZW47ICAvL2NvbnN1bWUgbGVuZ3RoIG9mIHNpemUKKyAgICAgICAgICAgIGNvbnN0IGxvbmcgbG9uZyBzdGFydCA9IHBvczsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgcG9zICs9IHNpemU7ICAvL2NvbnN1bWUgcGF5bG9hZAorICAgICAgICAgICAgYXNzZXJ0KHBvcyA8PSBzdG9wKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGlkID09IDB4NjApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdmlkZW9TZXR0aW5ncy5zdGFydCA9IHN0YXJ0OworICAgICAgICAgICAgICAgIHZpZGVvU2V0dGluZ3Muc2l6ZSA9IHNpemU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChpZCA9PSAweDYxKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGF1ZGlvU2V0dGluZ3Muc3RhcnQgPSBzdGFydDsKKyAgICAgICAgICAgICAgICBhdWRpb1NldHRpbmdzLnNpemUgPSBzaXplOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIGFzc2VydChwb3MgPT0gc3RvcCk7CisgICAgLy9UT0RPOiBwcm9wZXJ0bHkgdmV0IGluZm8ubnVtYmVyLCB0byBlbnN1cmUgYm90aCBpdHMgZXhpc3RlbmNlLAorICAgIC8vYW5kIHRoYXQgaXQgaXMgdW5pcXVlIGFtb25nIGFsbCB0cmFja3MuCisgICAgYXNzZXJ0KGkubnVtYmVyID4gMCk7CisKKyAgICAvL1RPRE86IHZldCBzZXR0aW5ncywgdG8gZW5zdXJlIHRoYXQgdmlkZW8gc2V0dGluZ3MgKDB4NjApCisgICAgLy93ZXJlIHNwZWNpZmllZCB3aGVuIHR5cGUgPSAxLCBhbmQgdGhhdCBhdWRpbyBzZXR0aW5ncyAoMHg2MSkKKyAgICAvL3dlcmUgc3BlY2lmaWVkIHdoZW4gdHlwZSA9IDIuICAgIAorICAgIGlmIChpLnR5cGUgPT0gMSkgIC8vdmlkZW8KKyAgICB7CisgICAgICAgIGFzc2VydChhdWRpb1NldHRpbmdzLnN0YXJ0IDwgMCk7CisgICAgICAgIGFzc2VydCh2aWRlb1NldHRpbmdzLnN0YXJ0ID49IDApOworICAgICAgICAKKyAgICAgICAgaS5zZXR0aW5ncyA9IHZpZGVvU2V0dGluZ3M7CisgICAgICAgIAorICAgICAgICBWaWRlb1RyYWNrKiBjb25zdCB0ID0gbmV3IFZpZGVvVHJhY2sobV9wU2VnbWVudCwgaSk7CisgICAgICAgIGFzc2VydCh0KTsgIC8vVE9ETworICAgICAgICBwVHJhY2sgPSB0OyAgICAKKyAgICB9CisgICAgZWxzZSBpZiAoaS50eXBlID09IDIpICAvL2F1ZGlvCisgICAgeworICAgICAgICBhc3NlcnQodmlkZW9TZXR0aW5ncy5zdGFydCA8IDApOworICAgICAgICBhc3NlcnQoYXVkaW9TZXR0aW5ncy5zdGFydCA+PSAwKTsKKyAgICAgICAgCisgICAgICAgIGkuc2V0dGluZ3MgPSBhdWRpb1NldHRpbmdzOworICAgICAgICAKKyAgICAgICAgQXVkaW9UcmFjayogY29uc3QgdCA9IG5ldyAgQXVkaW9UcmFjayhtX3BTZWdtZW50LCBpKTsKKyAgICAgICAgYXNzZXJ0KHQpOyAgLy9UT0RPCisgICAgICAgIHBUcmFjayA9IHQ7ICAKKyAgICB9CisgICAgZWxzZQorICAgIHsKKyAgICAgICAgLy8gZm9yIG5vdyB3ZSBkbyBub3Qgc3VwcG9ydCBvdGhlciB0cmFjayB0eXBlcyB5ZXQuCisgICAgICAgIC8vIFRPRE86IHN1cHBvcnQgb3RoZXIgdHJhY2sgdHlwZXMKKyAgICAgICAgaS5DbGVhcigpOworICAKKyAgICAgICAgcFRyYWNrID0gTlVMTDsKKyAgICB9CisgICAgCisgICAgcmV0dXJuOworfQorCisKK1RyYWNrczo6flRyYWNrcygpCit7CisgICAgVHJhY2sqKiBpID0gbV90cmFja0VudHJpZXM7CisgICAgVHJhY2sqKiBjb25zdCBqID0gbV90cmFja0VudHJpZXNFbmQ7CisgICAgCisgICAgd2hpbGUgKGkgIT0gaikKKyAgICB7CisgICAgICAgIFRyYWNrKiBwVHJhY2sgPSAqaSsrOworICAgICAgICBkZWxldGUgcFRyYWNrOworICAgICAgICBwVHJhY2sgPSBOVUxMOyAgICAKKyAgICB9CisKKyAgICBkZWxldGVbXSBtX3RyYWNrRW50cmllczsKK30KKworCitUcmFjayogVHJhY2tzOjpHZXRUcmFja0J5TnVtYmVyKHVuc2lnbmVkIGxvbmcgdG4pIGNvbnN0Cit7CisgICAgVHJhY2sqKiBpID0gbV90cmFja0VudHJpZXM7CisgICAgVHJhY2sqKiBjb25zdCBqID0gbV90cmFja0VudHJpZXNFbmQ7CisKKyAgICB3aGlsZSAoaSAhPSBqKQorICAgIHsKKyAgICAgICAgVHJhY2sqIGNvbnN0IHBUcmFjayA9ICppKys7CisgICAgICAgCisgICAgICAgIGlmIChwVHJhY2sgPT0gTlVMTCkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGlmICh0biA9PSBwVHJhY2stPkdldE51bWJlcigpKQorICAgICAgICAgICAgcmV0dXJuIHBUcmFjazsKKyAgICB9CisKKyAgICByZXR1cm4gTlVMTDsgIC8vbm90IGZvdW5kCit9CisKKworVHJhY2sqIFRyYWNrczo6R2V0VHJhY2tCeUluZGV4KHVuc2lnbmVkIGxvbmcgaWR4KSBjb25zdAoreworICAgIGNvbnN0IHB0cmRpZmZfdCBjb3VudCA9IG1fdHJhY2tFbnRyaWVzRW5kIC0gbV90cmFja0VudHJpZXM7CisgICAgICAgCisgICAgaWYgKGlkeCA+PSBzdGF0aWNfY2FzdDx1bnNpZ25lZCBsb25nPihjb3VudCkpCisgICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIHJldHVybiBtX3RyYWNrRW50cmllc1tpZHhdOworfQorCisKK3ZvaWQgQ2x1c3Rlcjo6TG9hZCgpCit7CisgICAgYXNzZXJ0KG1fcFNlZ21lbnQpOworICAgIAorICAgIGlmIChtX3N0YXJ0ID4gMCkKKyAgICB7CisgICAgICAgIGFzc2VydChtX3NpemUgPiAwKTsKKyAgICAgICAgYXNzZXJ0KG1fdGltZWNvZGUgPj0gMCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgCisgICAgYXNzZXJ0KG1fc2l6ZSA9PSAwKTsKKyAgICBhc3NlcnQobV90aW1lY29kZSA8IDApOworICAgIAorICAgIElNa3ZSZWFkZXIqIGNvbnN0IHBSZWFkZXIgPSBtX3BTZWdtZW50LT5tX3BSZWFkZXI7CisKKyAgICBjb25zdCBsb25nIGxvbmcgb2ZmID0gLW1fc3RhcnQ7ICAvL3JlbGF0aXZlIHRvIHNlZ21lbnQKKyAgICBsb25nIGxvbmcgcG9zID0gbV9wU2VnbWVudC0+bV9zdGFydCArIG9mZjsgIC8vYWJzb2x1dGUKKyAgICAKKyAgICBsb25nIGxlbjsKKworICAgIGNvbnN0IGxvbmcgbG9uZyBpZF8gPSBSZWFkVUludChwUmVhZGVyLCBwb3MsIGxlbik7CisgICAgYXNzZXJ0KGlkXyA+PSAwKTsKKyAgICBhc3NlcnQoaWRfID09IDB4MEY0M0I2NzUpOyAgLy9DbHVzdGVyIElECisgICAgCisgICAgcG9zICs9IGxlbjsgIC8vY29uc3VtZSBpZAorICAgIAorICAgIGNvbnN0IGxvbmcgbG9uZyBzaXplXyA9IFJlYWRVSW50KHBSZWFkZXIsIHBvcywgbGVuKTsKKyAgICBhc3NlcnQoc2l6ZV8gPj0gMCk7CisgICAgCisgICAgcG9zICs9IGxlbjsgIC8vY29uc3VtZSBzaXplCisgICAgCisgICAgbV9zdGFydCA9IHBvczsKKyAgICBtX3NpemUgPSBzaXplXzsKKyAgICAKKyAgICBjb25zdCBsb25nIGxvbmcgc3RvcCA9IG1fc3RhcnQgKyBzaXplXzsKKyAgICAKKyAgICBsb25nIGxvbmcgdGltZWNvZGUgPSAtMTsKKyAgICAKKyAgICB3aGlsZSAocG9zIDwgc3RvcCkKKyAgICB7CisgICAgICAgIGlmIChNYXRjaChwUmVhZGVyLCBwb3MsIDB4NjcsIHRpbWVjb2RlKSkKKyAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgIAorICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGNvbnN0IGxvbmcgbG9uZyBpZCA9IFJlYWRVSW50KHBSZWFkZXIsIHBvcywgbGVuKTsKKyAgICAgICAgICAgIGFzc2VydChpZCA+PSAwKTsgIC8vVE9ETworICAgICAgICAgICAgYXNzZXJ0KChwb3MgKyBsZW4pIDw9IHN0b3ApOworICAgICAgICAgICAgCisgICAgICAgICAgICBwb3MgKz0gbGVuOyAgLy9jb25zdW1lIGlkCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGNvbnN0IGxvbmcgbG9uZyBzaXplID0gUmVhZFVJbnQocFJlYWRlciwgcG9zLCBsZW4pOworICAgICAgICAgICAgYXNzZXJ0KHNpemUgPj0gMCk7ICAvL1RPRE8KKyAgICAgICAgICAgIGFzc2VydCgocG9zICsgbGVuKSA8PSBzdG9wKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgcG9zICs9IGxlbjsgIC8vY29uc3VtZSBzaXplCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChpZCA9PSAweDIwKSAgLy9CbG9ja0dyb3VwIElECisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoaWQgPT0gMHgyMykgIC8vU2ltcGxlQmxvY2sgSUQKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgcG9zICs9IHNpemU7ICAvL2NvbnN1bWUgcGF5bG9hZAorICAgICAgICAgICAgYXNzZXJ0KHBvcyA8PSBzdG9wKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBhc3NlcnQocG9zIDw9IHN0b3ApOworICAgIGFzc2VydCh0aW1lY29kZSA+PSAwKTsKKyAgICAKKyAgICBtX3RpbWVjb2RlID0gdGltZWNvZGU7Cit9CisKKworQ2x1c3RlciogQ2x1c3Rlcjo6UGFyc2UoCisgICAgU2VnbWVudCogcFNlZ21lbnQsCisgICAgc2l6ZV90IGlkeCwKKyAgICBsb25nIGxvbmcgb2ZmKQoreworICAgIGFzc2VydChwU2VnbWVudCk7CisgICAgYXNzZXJ0KG9mZiA+PSAwKTsKKyAgICBhc3NlcnQob2ZmIDwgcFNlZ21lbnQtPm1fc2l6ZSk7CisgICAgQ2x1c3RlciogY29uc3QgcENsdXN0ZXIgPSBuZXcgQ2x1c3RlcihwU2VnbWVudCwgaWR4LCAtb2ZmKTsKKyAgICBhc3NlcnQocENsdXN0ZXIpOworICAgIAorICAgIHJldHVybiBwQ2x1c3RlcjsKK30KKworCitDbHVzdGVyOjpDbHVzdGVyKCkgOgorICAgIG1fcFNlZ21lbnQoTlVMTCksCisgICAgbV9pbmRleCgwKSwKKyAgICBtX3N0YXJ0KDApLAorICAgIG1fc2l6ZSgwKSwKKyAgICBtX3RpbWVjb2RlKDApLAorICAgIG1fcEVudHJpZXMoTlVMTCksCisgICAgbV9lbnRyaWVzQ291bnQoMCkKK3sKK30KKworQ2x1c3Rlcjo6Q2x1c3RlcigKKyAgICBTZWdtZW50KiBwU2VnbWVudCwKKyAgICBzaXplX3QgaWR4LAorICAgIGxvbmcgbG9uZyBvZmYpIDoKKyAgICBtX3BTZWdtZW50KHBTZWdtZW50KSwKKyAgICBtX2luZGV4KGlkeCksCisgICAgbV9zdGFydChvZmYpLAorICAgIG1fc2l6ZSgwKSwKKyAgICBtX3RpbWVjb2RlKC0xKSwKKyAgICBtX3BFbnRyaWVzKE5VTEwpLAorICAgIG1fZW50cmllc0NvdW50KDApCit7Cit9CisKKworQ2x1c3Rlcjo6fkNsdXN0ZXIoKQoreworI2lmIDAKKyAgICB3aGlsZSAoIW1fcEVudHJpZXMuZW1wdHkoKSkKKyAgICB7CisgICAgICAgIEJsb2NrRW50cnkqIHBCbG9ja0VudHJ5ID0gbV9wRW50cmllcy5mcm9udCgpOworICAgICAgICBhc3NlcnQocEJsb2NrRW50cnkpOworICAgICAgICAKKyAgICAgICAgbV9wRW50cmllcy5wb3BfZnJvbnQoKTsKKyAgICAgICAgZGVsZXRlIHBCbG9ja0VudHJ5OworICAgIH0KKyNlbHNlCisgICAgQmxvY2tFbnRyeSoqIGkgPSBtX3BFbnRyaWVzOworICAgIEJsb2NrRW50cnkqKiBjb25zdCBqID0gbV9wRW50cmllcyArIG1fZW50cmllc0NvdW50OworICAgIHdoaWxlIChpICE9IGopCisgICAgeworICAgICAgICAgQmxvY2tFbnRyeSogcCA9ICppKys7CisgICAKKyAgICAgICAgIGFzc2VydChwKTsKKyAgICAgICAgIGRlbGV0ZSBwOworICAgIH0KKyAKKyAgICBkZWxldGVbXSBtX3BFbnRyaWVzOworI2VuZGlmCisKK30KKworYm9vbCBDbHVzdGVyOjpFT1MoKSBjb25zdAoreworICAgIHJldHVybiAobV9wU2VnbWVudCA9PSAwKTsKK30KKworCit2b2lkIENsdXN0ZXI6OkxvYWRCbG9ja0VudHJpZXMoKQoreworICAgIGlmIChtX3BFbnRyaWVzKQorICAgICAgICByZXR1cm47CisKKyAgICBMb2FkKCk7ICAgIAorICAgIGFzc2VydChtX3RpbWVjb2RlID49IDApOworICAgIGFzc2VydChtX3N0YXJ0ID4gMCk7CisgICAgYXNzZXJ0KG1fc2l6ZSA+IDApOworICAgIAorICAgIElNa3ZSZWFkZXIqIGNvbnN0IHBSZWFkZXIgPSBtX3BTZWdtZW50LT5tX3BSZWFkZXI7CisgICAgCisgICAgbG9uZyBsb25nIHBvcyA9IG1fc3RhcnQ7CisgICAgY29uc3QgbG9uZyBsb25nIHN0b3AgPSBtX3N0YXJ0ICsgbV9zaXplOworICAgIGxvbmcgbG9uZyB0aW1lY29kZSA9IC0xOworICAgCisgICAgbG9uZyBsb25nIGlkeCA9IHBvczsKKworICAgIG1fZW50cmllc0NvdW50ID0gMDsKKyAgICAKKyAgICB3aGlsZSAoaWR4IDwgc3RvcCkKKyAgICB7CisgICAgICAgIGlmIChNYXRjaChwUmVhZGVyLCBpZHgsIDB4NjcsIHRpbWVjb2RlKSkKKyAgICAgICAgICAgIGFzc2VydCh0aW1lY29kZSA9PSBtX3RpbWVjb2RlKTsKKyAgICAgICAgZWxzZSAKKyAgICAgICAgeworICAgICAgICAgICAgbG9uZyBsZW47CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGNvbnN0IGxvbmcgbG9uZyBpZCA9IFJlYWRVSW50KHBSZWFkZXIsIGlkeCwgbGVuKTsKKyAgICAgICAgICAgIGFzc2VydChpZCA+PSAwKTsgIC8vVE9ETworICAgICAgICAgICAgYXNzZXJ0KChpZHggKyBsZW4pIDw9IHN0b3ApOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZHggKz0gbGVuOyAgLy9jb25zdW1lIGlkCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGNvbnN0IGxvbmcgbG9uZyBzaXplID0gUmVhZFVJbnQocFJlYWRlciwgaWR4LCBsZW4pOworICAgICAgICAgICAgYXNzZXJ0KHNpemUgPj0gMCk7ICAvL1RPRE8KKyAgICAgICAgICAgIGFzc2VydCgoaWR4ICsgbGVuKSA8PSBzdG9wKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWR4ICs9IGxlbjsgIC8vY29uc3VtZSBzaXplCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChpZCA9PSAweDIwKSAgLy9CbG9ja0dyb3VwIElECisgICAgICAgICAgICAgICAgKyttX2VudHJpZXNDb3VudDsKKyAgICAgICAgICAgIGVsc2UgaWYgKGlkID09IDB4MjMpICAvL1NpbXBsZUJsb2NrIElECisgICAgICAgICAgICAgICAgKyttX2VudHJpZXNDb3VudDsKKworICAgICAgICAgICAgaWR4ICs9IHNpemU7ICAvL2NvbnN1bWUgcGF5bG9hZAorCisgICAgICAgICAgICBhc3NlcnQoaWR4IDw9IHN0b3ApOworICAgICAgICB9ICAKKyAgICB9CisKKyAgICBpZiAobV9lbnRyaWVzQ291bnQgPT0gMCkKKyAgICAgICAgcmV0dXJuOworICAgICAKKyAgICBtX3BFbnRyaWVzID0gbmV3IEJsb2NrRW50cnkqW21fZW50cmllc0NvdW50XTsKKyAgICBzaXplX3QgaW5kZXggPSAwOworICAgIAorICAgIHdoaWxlIChwb3MgPCBzdG9wKQorICAgIHsKKyAgICAgICAgaWYgKE1hdGNoKHBSZWFkZXIsIHBvcywgMHg2NywgdGltZWNvZGUpKQorICAgICAgICAgICAgYXNzZXJ0KHRpbWVjb2RlID09IG1fdGltZWNvZGUpOworICAgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICAgIGxvbmcgbGVuOworICAgICAgICAgICAgY29uc3QgbG9uZyBsb25nIGlkID0gUmVhZFVJbnQocFJlYWRlciwgcG9zLCBsZW4pOworICAgICAgICAgICAgYXNzZXJ0KGlkID49IDApOyAgLy9UT0RPCisgICAgICAgICAgICBhc3NlcnQoKHBvcyArIGxlbikgPD0gc3RvcCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHBvcyArPSBsZW47ICAvL2NvbnN1bWUgaWQKKyAgICAgICAgICAgIAorICAgICAgICAgICAgY29uc3QgbG9uZyBsb25nIHNpemUgPSBSZWFkVUludChwUmVhZGVyLCBwb3MsIGxlbik7CisgICAgICAgICAgICBhc3NlcnQoc2l6ZSA+PSAwKTsgIC8vVE9ETworICAgICAgICAgICAgYXNzZXJ0KChwb3MgKyBsZW4pIDw9IHN0b3ApOworICAgICAgICAgICAgCisgICAgICAgICAgICBwb3MgKz0gbGVuOyAgLy9jb25zdW1lIHNpemUKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGlkID09IDB4MjApICAvL0Jsb2NrR3JvdXAgSUQKKyAgICAgICAgICAgICAgICBQYXJzZUJsb2NrR3JvdXAocG9zLCBzaXplLCBpbmRleCsrKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKGlkID09IDB4MjMpICAvL1NpbXBsZUJsb2NrIElECisgICAgICAgICAgICAgICAgUGFyc2VTaW1wbGVCbG9jayhwb3MsIHNpemUsIGluZGV4KyspOworCisgICAgICAgICAgICBwb3MgKz0gc2l6ZTsgIC8vY29uc3VtZSBwYXlsb2FkCisgICAgICAgICAgICBhc3NlcnQocG9zIDw9IHN0b3ApOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIGFzc2VydChwb3MgPT0gc3RvcCk7CisgICAgYXNzZXJ0KHRpbWVjb2RlID49IDApOworICAgIGFzc2VydChpbmRleCA9PSBtX2VudHJpZXNDb3VudCk7Cit9CisKKworCitsb25nIGxvbmcgQ2x1c3Rlcjo6R2V0VGltZUNvZGUoKQoreworICAgIExvYWQoKTsKKyAgICByZXR1cm4gbV90aW1lY29kZTsKK30KKworCitsb25nIGxvbmcgQ2x1c3Rlcjo6R2V0VGltZSgpCit7CisgICAgY29uc3QgbG9uZyBsb25nIHRjID0gR2V0VGltZUNvZGUoKTsKKyAgICBhc3NlcnQodGMgPj0gMCk7CisgICAgCisgICAgY29uc3QgU2VnbWVudEluZm8qIGNvbnN0IHBJbmZvID0gbV9wU2VnbWVudC0+R2V0SW5mbygpOworICAgIGFzc2VydChwSW5mbyk7CisgICAgCisgICAgY29uc3QgbG9uZyBsb25nIHNjYWxlID0gcEluZm8tPkdldFRpbWVDb2RlU2NhbGUoKTsKKyAgICBhc3NlcnQoc2NhbGUgPj0gMSk7CisgICAgCisgICAgY29uc3QgbG9uZyBsb25nIHQgPSBtX3RpbWVjb2RlICogc2NhbGU7CisKKyAgICByZXR1cm4gdDsKK30KKworCit2b2lkIENsdXN0ZXI6OlBhcnNlQmxvY2tHcm91cChsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBzaXplLCBzaXplX3QgaW5kZXgpCit7CisgICAgYXNzZXJ0KG1fcEVudHJpZXMpOworICAgIGFzc2VydChtX2VudHJpZXNDb3VudCk7CisgICAgYXNzZXJ0KGluZGV4IDwgbV9lbnRyaWVzQ291bnQpOworICAgIAorICAgIEJsb2NrR3JvdXAqIGNvbnN0IHBHcm91cCA9IG5ldyBCbG9ja0dyb3VwKHRoaXMsIGluZGV4LCBzdGFydCwgc2l6ZSk7CisgICAgYXNzZXJ0KHBHcm91cCk7ICAvL1RPRE8KKyAgICAgICAgCisgICAgbV9wRW50cmllc1tpbmRleF0gPSBwR3JvdXA7Cit9CisKKworCit2b2lkIENsdXN0ZXI6OlBhcnNlU2ltcGxlQmxvY2sobG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgc2l6ZSwgc2l6ZV90IGluZGV4KQoreworICAgIGFzc2VydChtX3BFbnRyaWVzKTsKKyAgICBhc3NlcnQobV9lbnRyaWVzQ291bnQpOworICAgIGFzc2VydChpbmRleCA8IG1fZW50cmllc0NvdW50KTsKKworICAgIFNpbXBsZUJsb2NrKiBjb25zdCBwU2ltcGxlQmxvY2sgPSBuZXcgU2ltcGxlQmxvY2sodGhpcywgaW5kZXgsIHN0YXJ0LCBzaXplKTsKKyAgICBhc3NlcnQocFNpbXBsZUJsb2NrKTsgIC8vVE9ETworICAgICAgICAKKyAgICBtX3BFbnRyaWVzW2luZGV4XSA9IHBTaW1wbGVCbG9jazsKK30KKworCitjb25zdCBCbG9ja0VudHJ5KiBDbHVzdGVyOjpHZXRGaXJzdCgpCit7CisgICAgTG9hZEJsb2NrRW50cmllcygpOworICAgIAorICAgIHJldHVybiBtX3BFbnRyaWVzWzBdOworfQorCisgICAgICAgIAorY29uc3QgQmxvY2tFbnRyeSogQ2x1c3Rlcjo6R2V0TGFzdCgpCit7IAorICAgIGlmIChtX2VudHJpZXNDb3VudCA9PSAwKQorICAgICAgICByZXR1cm4gbV9wRW50cmllc1swXTsKKyAgICAKKyAgICByZXR1cm4gbV9wRW50cmllc1ttX2VudHJpZXNDb3VudC0xXTsKK30KKworICAgICAgICAKK2NvbnN0IEJsb2NrRW50cnkqIENsdXN0ZXI6OkdldE5leHQoY29uc3QgQmxvY2tFbnRyeSogcEVudHJ5KSBjb25zdAoreworICAgIGFzc2VydChwRW50cnkpOworICAgIAorICAgIHNpemVfdCBpZHggPSBwRW50cnktPkdldEluZGV4KCk7CisgICAgCisgICAgKytpZHg7CisKKyAgICBpZiAoaWR4ID09IG1fZW50cmllc0NvdW50KSAKKyAgICAgIHJldHVybiBOVUxMOworCisgICAgcmV0dXJuIG1fcEVudHJpZXNbaWR4XTsKKworfQorCisKK2NvbnN0IEJsb2NrRW50cnkqIENsdXN0ZXI6OkdldEVudHJ5KGNvbnN0IFRyYWNrKiBwVHJhY2spCit7CisKKyAgICBhc3NlcnQocFRyYWNrKTsKKyAgICAKKyAgICBpZiAobV9wU2VnbWVudCA9PSBOVUxMKSAgLy9FT1MKKyAgICAgICAgcmV0dXJuIHBUcmFjay0+R2V0RU9TKCk7CisgICAgCisgICAgTG9hZEJsb2NrRW50cmllcygpOworICAgIAorICAgIEJsb2NrRW50cnkqIGkgPSAqbV9wRW50cmllczsKKyAgICBCbG9ja0VudHJ5KiBqID0gKm1fcEVudHJpZXMgKyBtX2VudHJpZXNDb3VudDsKKyAgICB3aGlsZSAoaSAhPSBqKQorICAgIHsKKyAgICAgICAgQmxvY2tFbnRyeSogcEVudHJ5ID0gaTsKKyAgICAgICAgaSsrOworICAgICAgICBhc3NlcnQocEVudHJ5KTsKKyAgICAgICAgYXNzZXJ0KCFwRW50cnktPkVPUygpKTsKKyAgICAgICAgCisgICAgICAgIGNvbnN0IEJsb2NrKiBjb25zdCBwQmxvY2sgPSBwRW50cnktPkdldEJsb2NrKCk7CisgICAgICAgIGFzc2VydChwQmxvY2spOworICAgICAgICAKKyAgICAgICAgaWYgKHBCbG9jay0+R2V0VHJhY2tOdW1iZXIoKSAhPSBwVHJhY2stPkdldE51bWJlcigpKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgaWYgKHBUcmFjay0+VmV0RW50cnkocEVudHJ5KSkKKyAgICAgICAgICAgIHJldHVybiBwRW50cnk7CisgICAgfQorICAgIAorICAgIHJldHVybiBwVHJhY2stPkdldEVPUygpOyAgLy9ubyBzYXRpc2ZhY3RvcnkgYmxvY2sgZm91bmQKK30KKworCitCbG9ja0VudHJ5OjpCbG9ja0VudHJ5KCkKK3sKK30KKworCitCbG9ja0VudHJ5Ojp+QmxvY2tFbnRyeSgpCit7Cit9CisKKworCitTaW1wbGVCbG9jazo6U2ltcGxlQmxvY2soCisgICAgQ2x1c3RlciogcENsdXN0ZXIsIAorICAgIHNpemVfdCBpZHgsIAorICAgIGxvbmcgbG9uZyBzdGFydCwgCisgICAgbG9uZyBsb25nIHNpemUpIDoKKyAgICBtX3BDbHVzdGVyKHBDbHVzdGVyKSwKKyAgICBtX2luZGV4KGlkeCksCisgICAgbV9ibG9jayhzdGFydCwgc2l6ZSwgcENsdXN0ZXItPm1fcFNlZ21lbnQtPm1fcFJlYWRlcikKK3sKK30KKworCitib29sIFNpbXBsZUJsb2NrOjpFT1MoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKworCitDbHVzdGVyKiBTaW1wbGVCbG9jazo6R2V0Q2x1c3RlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcENsdXN0ZXI7Cit9CisKKworc2l6ZV90IFNpbXBsZUJsb2NrOjpHZXRJbmRleCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1faW5kZXg7Cit9CisKKworY29uc3QgQmxvY2sqIFNpbXBsZUJsb2NrOjpHZXRCbG9jaygpIGNvbnN0Cit7CisgICAgcmV0dXJuICZtX2Jsb2NrOworfQorCisKK2Jvb2wgU2ltcGxlQmxvY2s6OklzQkZyYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKworQmxvY2tHcm91cDo6QmxvY2tHcm91cCgKKyAgICBDbHVzdGVyKiBwQ2x1c3RlciwgCisgICAgc2l6ZV90IGlkeCwgCisgICAgbG9uZyBsb25nIHN0YXJ0LCAKKyAgICBsb25nIGxvbmcgc2l6ZV8pIDoKKyAgICBtX3BDbHVzdGVyKHBDbHVzdGVyKSwKKyAgICBtX2luZGV4KGlkeCksCisgICAgbV9wcmV2VGltZUNvZGUoMCksCisgICAgbV9uZXh0VGltZUNvZGUoMCksCisgICAgbV9wQmxvY2soTlVMTCkgIC8vVE9ETzogYWNjZXB0IG11bHRpcGxlIGJsb2NrcyB3aXRoaW4gYSBibG9jayBncm91cAoreworICAgIElNa3ZSZWFkZXIqIGNvbnN0IHBSZWFkZXIgPSBtX3BDbHVzdGVyLT5tX3BTZWdtZW50LT5tX3BSZWFkZXI7CisgICAgCisgICAgbG9uZyBsb25nIHBvcyA9IHN0YXJ0OworICAgIGNvbnN0IGxvbmcgbG9uZyBzdG9wID0gc3RhcnQgKyBzaXplXzsKKyAKKyAgICBib29sIGJTaW1wbGVCbG9jayA9IGZhbHNlOworICAgIAorICAgIHdoaWxlIChwb3MgPCBzdG9wKQorICAgIHsKKyAgICAgICAgc2hvcnQgdDsKKyAgICAKKyAgICAgICAgaWYgKE1hdGNoKHBSZWFkZXIsIHBvcywgMHg3QiwgdCkpCisgICAgICAgIHsgICAgCisgICAgICAgICAgICBpZiAodCA8IDApCisgICAgICAgICAgICAgICAgbV9wcmV2VGltZUNvZGUgPSB0OworICAgICAgICAgICAgZWxzZSBpZiAodCA+IDApCisgICAgICAgICAgICAgICAgbV9uZXh0VGltZUNvZGUgPSB0OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGFzc2VydChmYWxzZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgICBsb25nIGxlbjsKKyAgICAgICAgICAgIGNvbnN0IGxvbmcgbG9uZyBpZCA9IFJlYWRVSW50KHBSZWFkZXIsIHBvcywgbGVuKTsKKyAgICAgICAgICAgIGFzc2VydChpZCA+PSAwKTsgIC8vVE9ETworICAgICAgICAgICAgYXNzZXJ0KChwb3MgKyBsZW4pIDw9IHN0b3ApOworICAgICAgICAgICAgCisgICAgICAgICAgICBwb3MgKz0gbGVuOyAgLy9jb25zdW1lIElECisgICAgICAgICAgICAKKyAgICAgICAgICAgIGNvbnN0IGxvbmcgbG9uZyBzaXplID0gUmVhZFVJbnQocFJlYWRlciwgcG9zLCBsZW4pOworICAgICAgICAgICAgYXNzZXJ0KHNpemUgPj0gMCk7ICAvL1RPRE8KKyAgICAgICAgICAgIGFzc2VydCgocG9zICsgbGVuKSA8PSBzdG9wKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgcG9zICs9IGxlbjsgIC8vY29uc3VtZSBzaXplCisgICAgICAgICAgICAKKyAgICAgICAgICAgIHN3aXRjaCAoaWQpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgY2FzZSAweDIzOiAgLy9TaW1wbGVCbG9jayBJRAorICAgICAgICAgICAgICAgICAgICBiU2ltcGxlQmxvY2sgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAvL1lFUywgRkFMTCBUSFJPVUdIIFRPIE5FWFQgQ0FTRQorCisgICAgICAgICAgICAgICAgY2FzZSAweDIxOiAgLy9CbG9jayBJRAorICAgICAgICAgICAgICAgICAgICBQYXJzZUJsb2NrKHBvcywgc2l6ZSk7ICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgcG9zICs9IHNpemU7ICAvL2NvbnN1bWUgcGF5bG9hZAorICAgICAgICAgICAgYXNzZXJ0KHBvcyA8PSBzdG9wKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBhc3NlcnQocG9zID09IHN0b3ApOworICAgIGFzc2VydChtX3BCbG9jayk7CisgICAgCisgICAgaWYgKCFiU2ltcGxlQmxvY2spCisgICAgICAgIG1fcEJsb2NrLT5TZXRLZXkobV9wcmV2VGltZUNvZGUgPj0gMCk7Cit9CisKKworQmxvY2tHcm91cDo6fkJsb2NrR3JvdXAoKQoreworICAgIGRlbGV0ZSBtX3BCbG9jazsKK30KKworCit2b2lkIEJsb2NrR3JvdXA6OlBhcnNlQmxvY2sobG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgc2l6ZSkKK3sgICAKKyAgICBJTWt2UmVhZGVyKiBjb25zdCBwUmVhZGVyID0gbV9wQ2x1c3Rlci0+bV9wU2VnbWVudC0+bV9wUmVhZGVyOworICAgIAorICAgIEJsb2NrKiBjb25zdCBwQmxvY2sgPSBuZXcgQmxvY2soc3RhcnQsIHNpemUsIHBSZWFkZXIpOworICAgIGFzc2VydChwQmxvY2spOyAgLy9UT0RPCisKKyAgICAvL1RPRE86IHRoZSBNYXRyb3NrYSBzcGVjIHNheXMgeW91IGhhdmUgbXVsdGlwbGUgYmxvY2tzIHdpdGhpbiB0aGUgCisgICAgLy9zYW1lIGJsb2NrIGdyb3VwLCB3aXRoIGJsb2NrcyByYW5rZWQgYnkgcHJpb3JpdHkgKHRoZSBmbGFnIGJpdHMpLgorICAgIC8vSSBoYXZlbid0IGV2ZXIgc2VlbiBzdWNoIGEgZmlsZSAobWt2bXV4IGNlcnRhaW5seSBkb2Vzbid0IG1ha2UKKyAgICAvL29uZSksIHNvIHVudGlsIHRoZW4gSSdsbCBqdXN0IGFzc3VtZSBibG9jayBncm91cHMgY29udGFpbiBhIHNpbmdsZQorICAgIC8vYmxvY2suCisjaWYgMCAgICAKKyAgICBtX2Jsb2Nrcy5wdXNoX2JhY2socEJsb2NrKTsKKyNlbHNlCisgICAgYXNzZXJ0KG1fcEJsb2NrID09IE5VTEwpOworICAgIG1fcEJsb2NrID0gcEJsb2NrOworI2VuZGlmCisKKyNpZiAwCisgICAgVHJhY2sqIGNvbnN0IHBUcmFjayA9IHBCbG9jay0+R2V0VHJhY2soKTsKKyAgICBhc3NlcnQocFRyYWNrKTsKKyAgICAKKyAgICBwVHJhY2stPkluc2VydChwQmxvY2spOworI2VuZGlmCit9CisKKworYm9vbCBCbG9ja0dyb3VwOjpFT1MoKSBjb25zdAoreworICAgIHJldHVybiBmYWxzZTsKK30KKworCitDbHVzdGVyKiBCbG9ja0dyb3VwOjpHZXRDbHVzdGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9wQ2x1c3RlcjsKK30KKworCitzaXplX3QgQmxvY2tHcm91cDo6R2V0SW5kZXgoKSBjb25zdAoreworICAgIHJldHVybiBtX2luZGV4OworfQorCisKK2NvbnN0IEJsb2NrKiBCbG9ja0dyb3VwOjpHZXRCbG9jaygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcEJsb2NrOworfQorCisKK3Nob3J0IEJsb2NrR3JvdXA6OkdldFByZXZUaW1lQ29kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJldlRpbWVDb2RlOworfQorCisKK3Nob3J0IEJsb2NrR3JvdXA6OkdldE5leHRUaW1lQ29kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbmV4dFRpbWVDb2RlOworfSAgICAKKworCitib29sIEJsb2NrR3JvdXA6OklzQkZyYW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gKG1fbmV4dFRpbWVDb2RlID4gMCk7Cit9CisKKworCitCbG9jazo6QmxvY2sobG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgc2l6ZV8sIElNa3ZSZWFkZXIqIHBSZWFkZXIpIDoKKyAgICBtX3N0YXJ0KHN0YXJ0KSwKKyAgICBtX3NpemUoc2l6ZV8pCit7CisgICAgbG9uZyBsb25nIHBvcyA9IHN0YXJ0OworICAgIGNvbnN0IGxvbmcgbG9uZyBzdG9wID0gc3RhcnQgKyBzaXplXzsKKworICAgIGxvbmcgbGVuOworICAgIAorICAgIG1fdHJhY2sgPSBSZWFkVUludChwUmVhZGVyLCBwb3MsIGxlbik7CisgICAgYXNzZXJ0KG1fdHJhY2sgPiAwKTsKKyAgICBhc3NlcnQoKHBvcyArIGxlbikgPD0gc3RvcCk7CisgICAgCisgICAgcG9zICs9IGxlbjsgIC8vY29uc3VtZSB0cmFjayBudW1iZXIKKyAgICBhc3NlcnQoKHN0b3AgLSBwb3MpID49IDIpOworICAgIAorICAgIG1fdGltZWNvZGUgPSBVbnNlcmlhbGl6ZTJTSW50KHBSZWFkZXIsIHBvcyk7CisKKyAgICBwb3MgKz0gMjsKKyAgICBhc3NlcnQoKHN0b3AgLSBwb3MpID49IDEpOworICAgIAorICAgIGNvbnN0IGxvbmcgaHIgPSBwUmVhZGVyLT5SZWFkKHBvcywgMSwgJm1fZmxhZ3MpOworICAgIGFzc2VydChociA9PSAwTCk7CisKKyAgICArK3BvczsKKyAgICBhc3NlcnQocG9zIDw9IHN0b3ApOworICAgIAorICAgIG1fZnJhbWVPZmYgPSBwb3M7CisgICAgCisgICAgY29uc3QgbG9uZyBsb25nIGZyYW1lX3NpemUgPSBzdG9wIC0gcG9zOworCisgICAgYXNzZXJ0KGZyYW1lX3NpemUgPD0gMjE0NzQ4MzY0N0wpOworICAgIAorICAgIG1fZnJhbWVTaXplID0gc3RhdGljX2Nhc3Q8bG9uZz4oZnJhbWVfc2l6ZSk7Cit9CisKKworbG9uZyBsb25nIEJsb2NrOjpHZXRUaW1lQ29kZShDbHVzdGVyKiBwQ2x1c3RlcikgY29uc3QKK3sKKyAgICBhc3NlcnQocENsdXN0ZXIpOworICAgIAorICAgIGNvbnN0IGxvbmcgbG9uZyB0YzAgPSBwQ2x1c3Rlci0+R2V0VGltZUNvZGUoKTsKKyAgICBhc3NlcnQodGMwID49IDApOworICAgIAorICAgIGNvbnN0IGxvbmcgbG9uZyB0YyA9IHRjMCArIHN0YXRpY19jYXN0PGxvbmcgbG9uZz4obV90aW1lY29kZSk7CisgICAgYXNzZXJ0KHRjID49IDApOworICAgIAorICAgIHJldHVybiB0YzsgIC8vdW5zY2FsZWQgdGltZWNvZGUgdW5pdHMKK30KKworCitsb25nIGxvbmcgQmxvY2s6OkdldFRpbWUoQ2x1c3RlciogcENsdXN0ZXIpIGNvbnN0Cit7CisgICAgYXNzZXJ0KHBDbHVzdGVyKTsKKyAgICAKKyAgICBjb25zdCBsb25nIGxvbmcgdGMgPSBHZXRUaW1lQ29kZShwQ2x1c3Rlcik7CisgICAgCisgICAgY29uc3QgU2VnbWVudCogY29uc3QgcFNlZ21lbnQgPSBwQ2x1c3Rlci0+bV9wU2VnbWVudDsKKyAgICBjb25zdCBTZWdtZW50SW5mbyogY29uc3QgcEluZm8gPSBwU2VnbWVudC0+R2V0SW5mbygpOworICAgIGFzc2VydChwSW5mbyk7CisgICAgCisgICAgY29uc3QgbG9uZyBsb25nIHNjYWxlID0gcEluZm8tPkdldFRpbWVDb2RlU2NhbGUoKTsKKyAgICBhc3NlcnQoc2NhbGUgPj0gMSk7CisgICAgCisgICAgY29uc3QgbG9uZyBsb25nIG5zID0gdGMgKiBzY2FsZTsKKworICAgIHJldHVybiBuczsKK30KKworCit1bnNpZ25lZCBsb25nIEJsb2NrOjpHZXRUcmFja051bWJlcigpIGNvbnN0Cit7CisgICAgYXNzZXJ0KG1fdHJhY2sgPiAwKTsKKyAgICAKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQgbG9uZz4obV90cmFjayk7Cit9CisKKworYm9vbCBCbG9jazo6SXNLZXkoKSBjb25zdAoreworICAgIHJldHVybiAoKG1fZmxhZ3MgJiBzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPigxIDw8IDcpKSAhPSAwKTsKK30KKworCit2b2lkIEJsb2NrOjpTZXRLZXkoYm9vbCBiS2V5KQoreworICAgIGlmIChiS2V5KQorICAgICAgICBtX2ZsYWdzIHw9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KDEgPDwgNyk7CisgICAgZWxzZQorICAgICAgICBtX2ZsYWdzICY9IDB4N0Y7Cit9CisKKworbG9uZyBCbG9jazo6R2V0U2l6ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZnJhbWVTaXplOworfQorCisKK2xvbmcgQmxvY2s6OlJlYWQoSU1rdlJlYWRlciogcFJlYWRlciwgdW5zaWduZWQgY2hhciogYnVmKSBjb25zdAoreworCisgICAgYXNzZXJ0KHBSZWFkZXIpOworICAgIGFzc2VydChidWYpOworICAgIAorICAgIGNvbnN0IGxvbmcgaHIgPSBwUmVhZGVyLT5SZWFkKG1fZnJhbWVPZmYsIG1fZnJhbWVTaXplLCBidWYpOworICAgIAorICAgIHJldHVybiBocjsKK30KKworCit9ICAvL2VuZCBuYW1lc3BhY2UgbWt2cGFyc2VyCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9tYXRyb3NrYS9ta3ZwYXJzZXIuaHBwIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvbWF0cm9za2EvbWt2cGFyc2VyLmhwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDMxMWI0Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvbWF0cm9za2EvbWt2cGFyc2VyLmhwcApAQCAtMCwwICsxLDQyOCBAQAorI2lmbmRlZiBNS1ZQQVJTRVJfSFBQCisjZGVmaW5lIE1LVlBBUlNFUl9IUFAKKworI2luY2x1ZGUgPGNzdGRsaWI+CisjaW5jbHVkZSA8Y3N0ZGlvPgorCituYW1lc3BhY2UgbWt2cGFyc2VyCit7CisKK2NvbnN0IGludCBFX0ZJTEVfRk9STUFUX0lOVkFMSUQgPSAtMjsKK2NvbnN0IGludCBFX0JVRkZFUl9OT1RfRlVMTCA9IC0zOworCitjbGFzcyBJTWt2UmVhZGVyCit7CitwdWJsaWM6CisgICAgdmlydHVhbCBpbnQgUmVhZChsb25nIGxvbmcgcG9zaXRpb24sIGxvbmcgbGVuZ3RoLCB1bnNpZ25lZCBjaGFyKiBidWZmZXIpID0gMDsKKyAgICB2aXJ0dWFsIGludCBMZW5ndGgobG9uZyBsb25nKiB0b3RhbCwgbG9uZyBsb25nKiBhdmFpbGFibGUpID0gMDsgCQorcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfklNa3ZSZWFkZXIoKTsKK307CisKK2xvbmcgbG9uZyBHZXRVSW50TGVuZ3RoKElNa3ZSZWFkZXIqLCBsb25nIGxvbmcsIGxvbmcmKTsKK2xvbmcgbG9uZyBSZWFkVUludChJTWt2UmVhZGVyKiwgbG9uZyBsb25nLCBsb25nJik7Citsb25nIGxvbmcgU3luY1JlYWRVSW50KElNa3ZSZWFkZXIqLCBsb25nIGxvbmcgcG9zLCBsb25nIGxvbmcgc3RvcCwgbG9uZyYpOworbG9uZyBsb25nIFVuc2VyaWFsaXplVUludChJTWt2UmVhZGVyKiwgbG9uZyBsb25nIHBvcywgbG9uZyBsb25nIHNpemUpOworZmxvYXQgVW5zZXJpYWxpemU0RmxvYXQoSU1rdlJlYWRlciosIGxvbmcgbG9uZyk7Citkb3VibGUgVW5zZXJpYWxpemU4RG91YmxlKElNa3ZSZWFkZXIqLCBsb25nIGxvbmcpOworc2hvcnQgVW5zZXJpYWxpemUyU0ludChJTWt2UmVhZGVyKiwgbG9uZyBsb25nKTsKK3NpZ25lZCBjaGFyIFVuc2VyaWFsaXplMVNJbnQoSU1rdlJlYWRlciosIGxvbmcgbG9uZyk7Citib29sIE1hdGNoKElNa3ZSZWFkZXIqLCBsb25nIGxvbmcmLCB1bnNpZ25lZCBsb25nLCBsb25nIGxvbmcmKTsKK2Jvb2wgTWF0Y2goSU1rdlJlYWRlciosIGxvbmcgbG9uZyYsIHVuc2lnbmVkIGxvbmcsIGNoYXIqJik7Citib29sIE1hdGNoKElNa3ZSZWFkZXIqLCBsb25nIGxvbmcmLCB1bnNpZ25lZCBsb25nLHVuc2lnbmVkIGNoYXIqJiwKKyAgICAgICAgICAgc2l6ZV90ICpvcHRpb25hbFNpemUgPSBOVUxMKTsKK2Jvb2wgTWF0Y2goSU1rdlJlYWRlciosIGxvbmcgbG9uZyYsIHVuc2lnbmVkIGxvbmcsIGRvdWJsZSYpOworYm9vbCBNYXRjaChJTWt2UmVhZGVyKiwgbG9uZyBsb25nJiwgdW5zaWduZWQgbG9uZywgc2hvcnQmKTsKKworCitzdHJ1Y3QgRUJNTEhlYWRlcgoreworICAgIEVCTUxIZWFkZXIoKTsKKyAgICB+RUJNTEhlYWRlcigpOyAgCisgICAgbG9uZyBsb25nIG1fdmVyc2lvbjsKKyAgICBsb25nIGxvbmcgbV9yZWFkVmVyc2lvbjsKKyAgICBsb25nIGxvbmcgbV9tYXhJZExlbmd0aDsKKyAgICBsb25nIGxvbmcgbV9tYXhTaXplTGVuZ3RoOworICAgIGNoYXIqIG1fZG9jVHlwZTsKKyAgICBsb25nIGxvbmcgbV9kb2NUeXBlVmVyc2lvbjsKKyAgICBsb25nIGxvbmcgbV9kb2NUeXBlUmVhZFZlcnNpb247CisgICAgCisgICAgbG9uZyBsb25nIFBhcnNlKElNa3ZSZWFkZXIqLCBsb25nIGxvbmcmKTsKK307CisKKworY2xhc3MgU2VnbWVudDsKK2NsYXNzIFRyYWNrOworY2xhc3MgQ2x1c3RlcjsKKworY2xhc3MgQmxvY2sKK3sKKyAgICBCbG9jayhjb25zdCBCbG9jayYpOworICAgIEJsb2NrJiBvcGVyYXRvcj0oY29uc3QgQmxvY2smKTsKKworcHVibGljOgorICAgIGNvbnN0IGxvbmcgbG9uZyBtX3N0YXJ0OworICAgIGNvbnN0IGxvbmcgbG9uZyBtX3NpemU7CisgICAgCisgICAgQmxvY2sobG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgc2l6ZSwgSU1rdlJlYWRlciopOworICAgIAorICAgIHVuc2lnbmVkIGxvbmcgR2V0VHJhY2tOdW1iZXIoKSBjb25zdDsKKyAgICAKKyAgICBsb25nIGxvbmcgR2V0VGltZUNvZGUoQ2x1c3RlciopIGNvbnN0OyAgLy9hYnNvbHV0ZSwgYnV0IG5vdCBzY2FsZWQKKyAgICBsb25nIGxvbmcgR2V0VGltZShDbHVzdGVyKikgY29uc3Q7ICAgICAgLy9hYnNvbHV0ZSwgYW5kIHNjYWxlZCAobmFub3NlY29uZCB1bml0cykKKyAgICBib29sIElzS2V5KCkgY29uc3Q7CisgICAgdm9pZCBTZXRLZXkoYm9vbCk7CisKKyAgICBsb25nIEdldFNpemUoKSBjb25zdDsKKyAgICBsb25nIFJlYWQoSU1rdlJlYWRlciosIHVuc2lnbmVkIGNoYXIqKSBjb25zdDsKKyAgICAKK3ByaXZhdGU6CisgICAgbG9uZyBsb25nIG1fdHJhY2s7ICAgLy9UcmFjazo6TnVtYmVyKCkKKyAgICBzaG9ydCBtX3RpbWVjb2RlOyAgLy9yZWxhdGl2ZSB0byBjbHVzdGVyCisgICAgdW5zaWduZWQgY2hhciBtX2ZsYWdzOworICAgIGxvbmcgbG9uZyBtX2ZyYW1lT2ZmOworICAgIGxvbmcgbV9mcmFtZVNpemU7ICAgIAorCit9OworCisKK2NsYXNzIEJsb2NrRW50cnkKK3sKKyAgICBCbG9ja0VudHJ5KGNvbnN0IEJsb2NrRW50cnkmKTsKKyAgICBCbG9ja0VudHJ5JiBvcGVyYXRvcj0oY29uc3QgQmxvY2tFbnRyeSYpOworICAgIAorcHVibGljOgorICAgIHZpcnR1YWwgfkJsb2NrRW50cnkoKTsKKyAgICB2aXJ0dWFsIGJvb2wgRU9TKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgQ2x1c3RlciogR2V0Q2x1c3RlcigpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIHNpemVfdCBHZXRJbmRleCgpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGNvbnN0IEJsb2NrKiBHZXRCbG9jaygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIGJvb2wgSXNCRnJhbWUoKSBjb25zdCA9IDA7CisgICAgCitwcm90ZWN0ZWQ6CisgICAgQmxvY2tFbnRyeSgpOworCit9OworCisKK2NsYXNzIFNpbXBsZUJsb2NrIDogcHVibGljIEJsb2NrRW50cnkKK3sKKyAgICBTaW1wbGVCbG9jayhjb25zdCBTaW1wbGVCbG9jayYpOworICAgIFNpbXBsZUJsb2NrJiBvcGVyYXRvcj0oY29uc3QgU2ltcGxlQmxvY2smKTsKKworcHVibGljOgorICAgIFNpbXBsZUJsb2NrKENsdXN0ZXIqLCBzaXplX3QsIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIHNpemUpOworCisgICAgYm9vbCBFT1MoKSBjb25zdDsKKyAgICBDbHVzdGVyKiBHZXRDbHVzdGVyKCkgY29uc3Q7IAorICAgIHNpemVfdCBHZXRJbmRleCgpIGNvbnN0OworICAgIGNvbnN0IEJsb2NrKiBHZXRCbG9jaygpIGNvbnN0OworICAgIGJvb2wgSXNCRnJhbWUoKSBjb25zdDsKKworcHJvdGVjdGVkOgorICAgIENsdXN0ZXIqIGNvbnN0IG1fcENsdXN0ZXI7CisgICAgY29uc3Qgc2l6ZV90IG1faW5kZXg7CisgICAgQmxvY2sgbV9ibG9jazsKKyAgICAKK307CisKKworY2xhc3MgQmxvY2tHcm91cCA6IHB1YmxpYyBCbG9ja0VudHJ5Cit7CisgICAgQmxvY2tHcm91cChjb25zdCBCbG9ja0dyb3VwJik7CisgICAgQmxvY2tHcm91cCYgb3BlcmF0b3I9KGNvbnN0IEJsb2NrR3JvdXAmKTsKKworcHVibGljOgorICAgIEJsb2NrR3JvdXAoQ2x1c3RlciosIHNpemVfdCwgbG9uZyBsb25nLCBsb25nIGxvbmcpOworICAgIH5CbG9ja0dyb3VwKCk7CisgICAgCisgICAgYm9vbCBFT1MoKSBjb25zdDsKKyAgICBDbHVzdGVyKiBHZXRDbHVzdGVyKCkgY29uc3Q7IAorICAgIHNpemVfdCBHZXRJbmRleCgpIGNvbnN0OworICAgIGNvbnN0IEJsb2NrKiBHZXRCbG9jaygpIGNvbnN0OworICAgIGJvb2wgSXNCRnJhbWUoKSBjb25zdDsKKyAgICAKKyAgICBzaG9ydCBHZXRQcmV2VGltZUNvZGUoKSBjb25zdDsgIC8vcmVsYXRpdmUgdG8gYmxvY2sncyB0aW1lCisgICAgc2hvcnQgR2V0TmV4dFRpbWVDb2RlKCkgY29uc3Q7ICAvL2FzIGFib3ZlCisgICAgCitwcm90ZWN0ZWQ6CisgICAgQ2x1c3RlciogY29uc3QgbV9wQ2x1c3RlcjsKKyAgICBjb25zdCBzaXplX3QgbV9pbmRleDsKKyAgICAKK3ByaXZhdGU6CisgICAgQmxvY2tHcm91cChDbHVzdGVyKiwgc2l6ZV90LCB1bnNpZ25lZCBsb25nKTsKKyAgICB2b2lkIFBhcnNlQmxvY2sobG9uZyBsb25nIHN0YXJ0LCBsb25nIGxvbmcgc2l6ZSk7CisKKyAgICBzaG9ydCBtX3ByZXZUaW1lQ29kZTsKKyAgICBzaG9ydCBtX25leHRUaW1lQ29kZTsKKyAgICAKKyAgICAvL1RPRE86IHRoZSBNYXRyb3NrYSBzcGVjIHNheXMgeW91IGNhbiBoYXZlIG11bHRpcGxlIGJsb2NrcyB3aXRoaW4gdGhlIAorICAgIC8vc2FtZSBibG9jayBncm91cCwgd2l0aCBibG9ja3MgcmFua2VkIGJ5IHByaW9yaXR5ICh0aGUgZmxhZyBiaXRzKS4KKyAgICAvL0ZvciBub3cgd2UganVzdCBjYWNoZSBhIHNpbmdsZSBibG9jay4KKyNpZiAwCisgICAgdHlwZWRlZiBzdGQ6OmRlcXVlPEJsb2NrKj4gYmxvY2tzX3Q7CisgICAgYmxvY2tzX3QgbV9ibG9ja3M7ICAvL0luIHByYWN0aWNlIHNob3VsZCBjb250YWluIG9ubHkgYSBzaW5nbGUgZWxlbWVudC4KKyNlbHNlCisgICAgQmxvY2sqIG1fcEJsb2NrOworI2VuZGlmCisgICAgCit9OworCisKK2NsYXNzIFRyYWNrCit7CisgICAgVHJhY2soY29uc3QgVHJhY2smKTsKKyAgICBUcmFjayYgb3BlcmF0b3I9KGNvbnN0IFRyYWNrJik7CisKK3B1YmxpYzogICAgCisgICAgU2VnbWVudCogY29uc3QgbV9wU2VnbWVudDsKKyAgICB2aXJ0dWFsIH5UcmFjaygpOworICAgIAorICAgIGxvbmcgbG9uZyBHZXRUeXBlKCkgY29uc3Q7IAorICAgIHVuc2lnbmVkIGxvbmcgR2V0TnVtYmVyKCkgY29uc3Q7CisgICAgY29uc3QgY2hhciogR2V0TmFtZUFzVVRGOCgpIGNvbnN0OworICAgIGNvbnN0IGNoYXIqIEdldENvZGVjTmFtZUFzVVRGOCgpIGNvbnN0OworICAgIGNvbnN0IGNoYXIqIEdldENvZGVjSWQoKSBjb25zdDsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyKiBHZXRDb2RlY1ByaXZhdGUoCisgICAgICAgICAgICBzaXplX3QgKm9wdGlvbmFsU2l6ZSA9IE5VTEwpIGNvbnN0OworICAgIAorICAgIGNvbnN0IEJsb2NrRW50cnkqIEdldEVPUygpIGNvbnN0OworICAgIAorICAgIHN0cnVjdCBTZXR0aW5ncyAKKyAgICB7CisgICAgICAgIGxvbmcgbG9uZyBzdGFydDsKKyAgICAgICAgbG9uZyBsb25nIHNpemU7CisgICAgfTsKKyAgICAKKyAgICBzdHJ1Y3QgSW5mbworICAgIHsKKyAgICAgICAgbG9uZyBsb25nIHR5cGU7CisgICAgICAgIGxvbmcgbG9uZyBudW1iZXI7CisgICAgICAgIGxvbmcgbG9uZyB1aWQ7CisgICAgICAgIGNoYXIqIG5hbWVBc1VURjg7CisgICAgICAgIGNoYXIqIGNvZGVjSWQ7CisgICAgICAgIHVuc2lnbmVkIGNoYXIqIGNvZGVjUHJpdmF0ZTsKKyAgICAgICAgc2l6ZV90IGNvZGVjUHJpdmF0ZVNpemU7CisgICAgICAgIGNoYXIqIGNvZGVjTmFtZUFzVVRGODsKKyAgICAgICAgU2V0dGluZ3Mgc2V0dGluZ3M7CisgICAgICAgIEluZm8oKTsKKyAgICAgICAgdm9pZCBDbGVhcigpOworICAgIH07CisgICAgCisgICAgbG9uZyBHZXRGaXJzdChjb25zdCBCbG9ja0VudHJ5KiYpIGNvbnN0OworICAgIGxvbmcgR2V0TmV4dChjb25zdCBCbG9ja0VudHJ5KiBwQ3VyciwgY29uc3QgQmxvY2tFbnRyeSomIHBOZXh0KSBjb25zdDsKKyAgICB2aXJ0dWFsIGJvb2wgVmV0RW50cnkoY29uc3QgQmxvY2tFbnRyeSopIGNvbnN0ID0gMDsKKyAgICAgICAgCitwcm90ZWN0ZWQ6CisgICAgVHJhY2soU2VnbWVudCosIGNvbnN0IEluZm8mKTsgICAgICAgIAorICAgIGNvbnN0IEluZm8gbV9pbmZvOworCisgICAgY2xhc3MgRU9TQmxvY2sgOiBwdWJsaWMgQmxvY2tFbnRyeQorICAgIHsKKyAgICBwdWJsaWM6CisgICAgICAgIEVPU0Jsb2NrKCk7CisKKyAgICAgICAgYm9vbCBFT1MoKSBjb25zdDsgICAgCisgICAgICAgIENsdXN0ZXIqIEdldENsdXN0ZXIoKSBjb25zdDsKKyAgICAgICAgc2l6ZV90IEdldEluZGV4KCkgY29uc3Q7CisgICAgICAgIGNvbnN0IEJsb2NrKiBHZXRCbG9jaygpIGNvbnN0OworICAgICAgICBib29sIElzQkZyYW1lKCkgY29uc3Q7CisgICAgfTsKKyAgICAKKyAgICBFT1NCbG9jayBtX2VvczsKKyAgICAKK307CisKKworY2xhc3MgVmlkZW9UcmFjayA6IHB1YmxpYyBUcmFjaworeworICAgIFZpZGVvVHJhY2soY29uc3QgVmlkZW9UcmFjayYpOworICAgIFZpZGVvVHJhY2smIG9wZXJhdG9yPShjb25zdCBWaWRlb1RyYWNrJik7CisgICAgCitwdWJsaWM6CisgICAgVmlkZW9UcmFjayhTZWdtZW50KiwgY29uc3QgSW5mbyYpOyAgICAKKyAgICBsb25nIGxvbmcgR2V0V2lkdGgoKSBjb25zdDsKKyAgICBsb25nIGxvbmcgR2V0SGVpZ2h0KCkgY29uc3Q7CisgICAgZG91YmxlIEdldEZyYW1lUmF0ZSgpIGNvbnN0OworICAgIAorICAgIGJvb2wgVmV0RW50cnkoY29uc3QgQmxvY2tFbnRyeSopIGNvbnN0OworCitwcml2YXRlOgorICAgIGxvbmcgbG9uZyBtX3dpZHRoOworICAgIGxvbmcgbG9uZyBtX2hlaWdodDsKKyAgICBkb3VibGUgbV9yYXRlOworICAgIAorfTsKKworCitjbGFzcyBBdWRpb1RyYWNrIDogcHVibGljIFRyYWNrCit7CisgICAgQXVkaW9UcmFjayhjb25zdCBBdWRpb1RyYWNrJik7CisgICAgQXVkaW9UcmFjayYgb3BlcmF0b3I9KGNvbnN0IEF1ZGlvVHJhY2smKTsKKworcHVibGljOgorICAgIEF1ZGlvVHJhY2soU2VnbWVudCosIGNvbnN0IEluZm8mKTsgICAgCisgICAgZG91YmxlIEdldFNhbXBsaW5nUmF0ZSgpIGNvbnN0OworICAgIGxvbmcgbG9uZyBHZXRDaGFubmVscygpIGNvbnN0OworICAgIGxvbmcgbG9uZyBHZXRCaXREZXB0aCgpIGNvbnN0OyAgICAKKyAgICBib29sIFZldEVudHJ5KGNvbnN0IEJsb2NrRW50cnkqKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBkb3VibGUgbV9yYXRlOworICAgIGxvbmcgbG9uZyBtX2NoYW5uZWxzOworICAgIGxvbmcgbG9uZyBtX2JpdERlcHRoOworfTsKKworCitjbGFzcyBUcmFja3MKK3sKKyAgICBUcmFja3MoY29uc3QgVHJhY2tzJik7CisgICAgVHJhY2tzJiBvcGVyYXRvcj0oY29uc3QgVHJhY2tzJik7CisKK3B1YmxpYzoKKyAgICBTZWdtZW50KiBjb25zdCBtX3BTZWdtZW50OworICAgIGNvbnN0IGxvbmcgbG9uZyBtX3N0YXJ0OworICAgIGNvbnN0IGxvbmcgbG9uZyBtX3NpemU7CisgICAgCisgICAgVHJhY2tzKFNlZ21lbnQqLCBsb25nIGxvbmcgc3RhcnQsIGxvbmcgbG9uZyBzaXplKTsKKyAgICB2aXJ0dWFsIH5UcmFja3MoKTsKKworICAgIFRyYWNrKiBHZXRUcmFja0J5TnVtYmVyKHVuc2lnbmVkIGxvbmcgdG4pIGNvbnN0OworICAgIFRyYWNrKiBHZXRUcmFja0J5SW5kZXgodW5zaWduZWQgbG9uZyBpZHgpIGNvbnN0OworICAgIAorcHJpdmF0ZToKKyAgICBUcmFjayoqIG1fdHJhY2tFbnRyaWVzOyAKKyAgICBUcmFjayoqIG1fdHJhY2tFbnRyaWVzRW5kOworCisgICAgdm9pZCBQYXJzZVRyYWNrRW50cnkobG9uZyBsb25nLCBsb25nIGxvbmcsIFRyYWNrKiYpOworICAgIAorcHVibGljOgorICAgIHVuc2lnbmVkIGxvbmcgR2V0VHJhY2tzQ291bnQoKSBjb25zdDsKK307CisKKworY2xhc3MgU2VnbWVudEluZm8KK3sKKyAgICBTZWdtZW50SW5mbyhjb25zdCBTZWdtZW50SW5mbyYpOworICAgIFNlZ21lbnRJbmZvJiBvcGVyYXRvcj0oY29uc3QgU2VnbWVudEluZm8mKTsKKyAgICAKK3B1YmxpYzoKKyAgICBTZWdtZW50KiBjb25zdCBtX3BTZWdtZW50OworICAgIGNvbnN0IGxvbmcgbG9uZyBtX3N0YXJ0OworICAgIGNvbnN0IGxvbmcgbG9uZyBtX3NpemU7CisgICAgCisgICAgU2VnbWVudEluZm8oU2VnbWVudCosIGxvbmcgbG9uZyBzdGFydCwgbG9uZyBsb25nIHNpemUpOworICAgIH5TZWdtZW50SW5mbygpOworICAgIGxvbmcgbG9uZyBHZXRUaW1lQ29kZVNjYWxlKCkgY29uc3Q7CisgICAgbG9uZyBsb25nIEdldER1cmF0aW9uKCkgY29uc3Q7ICAvL3NjYWxlZAorICAgIGNvbnN0IGNoYXIqIEdldE11eGluZ0FwcEFzVVRGOCgpIGNvbnN0OworICAgIGNvbnN0IGNoYXIqIEdldFdyaXRpbmdBcHBBc1VURjgoKSBjb25zdDsKKyAgICBjb25zdCBjaGFyKiBHZXRUaXRsZUFzVVRGOCgpIGNvbnN0OworICAgIAorcHJpdmF0ZToKKyAgICBsb25nIGxvbmcgbV90aW1lY29kZVNjYWxlOworICAgIGRvdWJsZSBtX2R1cmF0aW9uOworICAgIGNoYXIqIG1fcE11eGluZ0FwcEFzVVRGODsKKyAgICBjaGFyKiBtX3BXcml0aW5nQXBwQXNVVEY4OworICAgIGNoYXIqIG1fcFRpdGxlQXNVVEY4OworfTsKKworCitjbGFzcyBDbHVzdGVyCit7CisgICAgQ2x1c3Rlcihjb25zdCBDbHVzdGVyJik7CisgICAgQ2x1c3RlciYgb3BlcmF0b3I9KGNvbnN0IENsdXN0ZXImKTsKKworcHVibGljOgorICAgIFNlZ21lbnQqIGNvbnN0IG1fcFNlZ21lbnQ7CisgICAgY29uc3Qgc2l6ZV90IG1faW5kZXg7CisgICAgCitwdWJsaWM6ICAgIAorICAgIHN0YXRpYyBDbHVzdGVyKiBQYXJzZShTZWdtZW50Kiwgc2l6ZV90LCBsb25nIGxvbmcgb2ZmKTsKKworICAgIENsdXN0ZXIoKTsgIC8vRW5kT2ZTdHJlYW0KKyAgICB+Q2x1c3RlcigpOworICAgIAorICAgIGJvb2wgRU9TKCkgY29uc3Q7CisgICAgCisgICAgbG9uZyBsb25nIEdldFRpbWVDb2RlKCk7ICAvL2Fic29sdXRlLCBidXQgbm90IHNjYWxlZAorICAgIGxvbmcgbG9uZyBHZXRUaW1lKCk7ICAgICAgLy9hYnNvbHV0ZSwgYW5kIHNjYWxlZCAobmFub3NlY29uZCB1bml0cykKKworICAgIGNvbnN0IEJsb2NrRW50cnkqIEdldEZpcnN0KCk7CisgICAgY29uc3QgQmxvY2tFbnRyeSogR2V0TGFzdCgpOworICAgIGNvbnN0IEJsb2NrRW50cnkqIEdldE5leHQoY29uc3QgQmxvY2tFbnRyeSopIGNvbnN0OyAgICAKKyAgICBjb25zdCBCbG9ja0VudHJ5KiBHZXRFbnRyeShjb25zdCBUcmFjayopOworcHJvdGVjdGVkOiAgICAKKyAgICBDbHVzdGVyKFNlZ21lbnQqLCBzaXplX3QsIGxvbmcgbG9uZyBvZmYpOworICAgIAorcHJpdmF0ZToKKyAgICBsb25nIGxvbmcgbV9zdGFydDsKKyAgICBsb25nIGxvbmcgbV9zaXplOyAgICAKKyAgICBsb25nIGxvbmcgbV90aW1lY29kZTsKKyAgICBCbG9ja0VudHJ5KiogbV9wRW50cmllczsKKyAgICBzaXplX3QgbV9lbnRyaWVzQ291bnQ7CisgICAKKyAgICB2b2lkIExvYWQoKTsKKyAgICB2b2lkIExvYWRCbG9ja0VudHJpZXMoKTsKKyAgICB2b2lkIFBhcnNlQmxvY2tHcm91cChsb25nIGxvbmcsIGxvbmcgbG9uZywgc2l6ZV90KTsKKyAgICB2b2lkIFBhcnNlU2ltcGxlQmxvY2sobG9uZyBsb25nLCBsb25nIGxvbmcsIHNpemVfdCk7CisgICAgCit9OworCisKK2NsYXNzIFNlZ21lbnQKK3sKKyAgICBTZWdtZW50KGNvbnN0IFNlZ21lbnQmKTsKKyAgICBTZWdtZW50JiBvcGVyYXRvcj0oY29uc3QgU2VnbWVudCYpOworCitwcml2YXRlOgorICAgIFNlZ21lbnQoSU1rdlJlYWRlciosIGxvbmcgbG9uZyBwb3MsIGxvbmcgbG9uZyBzaXplKTsKKworcHVibGljOgorICAgIElNa3ZSZWFkZXIqIGNvbnN0IG1fcFJlYWRlcjsKKyAgICBjb25zdCBsb25nIGxvbmcgbV9zdGFydDsgIC8vcG9zbiBvZiBzZWdtZW50IHBheWxvYWQKKyAgICBjb25zdCBsb25nIGxvbmcgbV9zaXplOyAgIC8vc2l6ZSBvZiBzZWdtZW50IHBheWxvYWQKKyAgICBDbHVzdGVyIG1fZW9zOyAgLy9UT0RPOiBtYWtlIHByaXZhdGU/CisgICAgCisgICAgc3RhdGljIGxvbmcgbG9uZyBDcmVhdGVJbnN0YW5jZShJTWt2UmVhZGVyKiwgbG9uZyBsb25nLCBTZWdtZW50KiYpOworICAgIH5TZWdtZW50KCk7CisKKyAgICAvL2ZvciBiaWctYmFuZyBsb2FkaW5nIChzb3VyY2UgZmlsdGVyKQorICAgIGxvbmcgTG9hZCgpOworCisgICAgLy9mb3IgaW5jcmVtZW50YWwgbG9hZGluZyAoc3BsaXR0ZXIpICAgIAorICAgIGxvbmcgbG9uZyBVbnBhcnNlZCgpIGNvbnN0OworICAgIGxvbmcgbG9uZyBQYXJzZUhlYWRlcnMoKTsKKyAgICBsb25nIFBhcnNlQ2x1c3RlcihDbHVzdGVyKiYsIGxvbmcgbG9uZyYgbmV3cG9zKSBjb25zdDsKKyAgICBib29sIEFkZENsdXN0ZXIoQ2x1c3RlciosIGxvbmcgbG9uZyk7CisKKyAgICBUcmFja3MqIEdldFRyYWNrcygpIGNvbnN0OyAgICAKKyAgICBjb25zdCBTZWdtZW50SW5mbyogY29uc3QgR2V0SW5mbygpIGNvbnN0OworICAgIGxvbmcgbG9uZyBHZXREdXJhdGlvbigpIGNvbnN0OworICAgIAorICAgIC8vTk9URTogdGhpcyB0dXJuZWQgb3V0IHRvIGJlIHRvbyBpbmVmZmljaWVudC4KKyAgICAvL2xvbmcgbG9uZyBMb2FkKGxvbmcgbG9uZyB0aW1lX25hbm9zZWNvbmRzKTsKKworICAgIENsdXN0ZXIqIEdldEZpcnN0KCk7CisgICAgQ2x1c3RlciogR2V0TGFzdCgpOworICAgIHVuc2lnbmVkIGxvbmcgR2V0Q291bnQoKSBjb25zdDsKKyAgICAKKyAgICBDbHVzdGVyKiBHZXROZXh0KGNvbnN0IENsdXN0ZXIqKTsKKyAgICBDbHVzdGVyKiBHZXRDbHVzdGVyKGxvbmcgbG9uZyB0aW1lX25hbm9zZWNvbmRzKTsKKyAgICAKK3ByaXZhdGU6CisgICAgbG9uZyBsb25nIG1fcG9zOyAgLy9hYnNvbHV0ZSBmaWxlIHBvc247IHdoYXQgaGFzIGJlZW4gY29uc3VtZWQgc28gZmFyICAgIAorICAgIFNlZ21lbnRJbmZvKiBtX3BJbmZvOworICAgIFRyYWNrcyogbV9wVHJhY2tzOyAgICAKKyAgICBDbHVzdGVyKiogbV9jbHVzdGVyczsKKyAgICBzaXplX3QgbV9jbHVzdGVyQ291bnQ7CisKKyAgICB2b2lkIFBhcnNlU2Vla0hlYWQobG9uZyBsb25nIHBvcywgbG9uZyBsb25nIHNpemUsIHNpemVfdCopOworICAgIHZvaWQgUGFyc2VTZWVrRW50cnkobG9uZyBsb25nIHBvcywgbG9uZyBsb25nIHNpemUsIHNpemVfdCopOworICAgIHZvaWQgUGFyc2VTZWNvbmRhcnlTZWVrSGVhZChsb25nIGxvbmcgb2ZmLCBzaXplX3QqKTsKK307CisKKworfSAgLy9lbmQgbmFtZXNwYWNlIG1rdnBhcnNlcgorCisjZW5kaWYgIC8vTUtWUEFSU0VSX0hQUApkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvbXBlZzJ0cy9BQml0UmVhZGVyLmNwcCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L21wZWcydHMvQUJpdFJlYWRlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjRjOGRmOAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L21wZWcydHMvQUJpdFJlYWRlci5jcHAKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpbmNsdWRlICJBQml0UmVhZGVyLmgiCisKKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FEZWJ1Zy5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK0FCaXRSZWFkZXI6OkFCaXRSZWFkZXIoY29uc3QgdWludDhfdCAqZGF0YSwgc2l6ZV90IHNpemUpCisgICAgOiBtRGF0YShkYXRhKSwKKyAgICAgIG1TaXplKHNpemUpLAorICAgICAgbVJlc2Vydm9pcigwKSwKKyAgICAgIG1OdW1CaXRzTGVmdCgwKSB7Cit9CisKK3ZvaWQgQUJpdFJlYWRlcjo6ZmlsbFJlc2Vydm9pcigpIHsKKyAgICBDSEVDS19HVChtU2l6ZSwgMHUpOworCisgICAgbVJlc2Vydm9pciA9IDA7CisgICAgc2l6ZV90IGk7CisgICAgZm9yIChpID0gMDsgbVNpemUgPiAwICYmIGkgPCA0OyArK2kpIHsKKyAgICAgICAgbVJlc2Vydm9pciA9IChtUmVzZXJ2b2lyIDw8IDgpIHwgKm1EYXRhOworCisgICAgICAgICsrbURhdGE7CisgICAgICAgIC0tbVNpemU7CisgICAgfQorCisgICAgbU51bUJpdHNMZWZ0ID0gOCAqIGk7CisgICAgbVJlc2Vydm9pciA8PD0gMzIgLSBtTnVtQml0c0xlZnQ7Cit9CisKK3VpbnQzMl90IEFCaXRSZWFkZXI6OmdldEJpdHMoc2l6ZV90IG4pIHsKKyAgICBDSEVDS19MRShuLCAzMnUpOworCisgICAgdWludDMyX3QgcmVzdWx0ID0gMDsKKyAgICB3aGlsZSAobiA+IDApIHsKKyAgICAgICAgaWYgKG1OdW1CaXRzTGVmdCA9PSAwKSB7CisgICAgICAgICAgICBmaWxsUmVzZXJ2b2lyKCk7CisgICAgICAgIH0KKworICAgICAgICBzaXplX3QgbSA9IG47CisgICAgICAgIGlmIChtID4gbU51bUJpdHNMZWZ0KSB7CisgICAgICAgICAgICBtID0gbU51bUJpdHNMZWZ0OworICAgICAgICB9CisKKyAgICAgICAgcmVzdWx0ID0gKHJlc3VsdCA8PCBtKSB8IChtUmVzZXJ2b2lyID4+ICgzMiAtIG0pKTsKKyAgICAgICAgbVJlc2Vydm9pciA8PD0gbTsKKyAgICAgICAgbU51bUJpdHNMZWZ0IC09IG07CisKKyAgICAgICAgbiAtPSBtOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgQUJpdFJlYWRlcjo6c2tpcEJpdHMoc2l6ZV90IG4pIHsKKyAgICB3aGlsZSAobiA+IDMyKSB7CisgICAgICAgIGdldEJpdHMoMzIpOworICAgICAgICBuIC09IDMyOworICAgIH0KKworICAgIGlmIChuID4gMCkgeworICAgICAgICBnZXRCaXRzKG4pOworICAgIH0KK30KKwordm9pZCBBQml0UmVhZGVyOjpwdXRCaXRzKHVpbnQzMl90IHgsIHNpemVfdCBuKSB7CisgICAgQ0hFQ0tfTEUobU51bUJpdHNMZWZ0ICsgbiwgMzJ1KTsKKworICAgIG1SZXNlcnZvaXIgPSAobVJlc2Vydm9pciA+PiBuKSB8ICh4IDw8ICgzMiAtIG4pKTsKKyAgICBtTnVtQml0c0xlZnQgKz0gbjsKK30KKworc2l6ZV90IEFCaXRSZWFkZXI6Om51bUJpdHNMZWZ0KCkgY29uc3QgeworICAgIHJldHVybiBtU2l6ZSAqIDggKyBtTnVtQml0c0xlZnQ7Cit9CisKK2NvbnN0IHVpbnQ4X3QgKkFCaXRSZWFkZXI6OmRhdGEoKSBjb25zdCB7CisgICAgQ0hFQ0tfRVEobU51bUJpdHNMZWZ0ICUgOCwgMHUpOworCisgICAgcmV0dXJuIG1EYXRhIC0gbU51bUJpdHNMZWZ0IC8gODsKK30KKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L21wZWcydHMvQUJpdFJlYWRlci5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvbXBlZzJ0cy9BQml0UmVhZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTEzNTIxMQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L21wZWcydHMvQUJpdFJlYWRlci5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIEFfQklUX1JFQURFUl9IXworCisjZGVmaW5lIEFfQklUX1JFQURFUl9IXworCisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BQmFzZS5oPgorCisjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjaW5jbHVkZSA8c3RkaW50Lmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworc3RydWN0IEFCaXRSZWFkZXIgeworICAgIEFCaXRSZWFkZXIoY29uc3QgdWludDhfdCAqZGF0YSwgc2l6ZV90IHNpemUpOworCisgICAgdWludDMyX3QgZ2V0Qml0cyhzaXplX3Qgbik7CisgICAgdm9pZCBza2lwQml0cyhzaXplX3Qgbik7CisKKyAgICBzaXplX3QgbnVtQml0c0xlZnQoKSBjb25zdDsKKworICAgIGNvbnN0IHVpbnQ4X3QgKmRhdGEoKSBjb25zdDsKKworcHJpdmF0ZToKKyAgICBjb25zdCB1aW50OF90ICptRGF0YTsKKyAgICBzaXplX3QgbVNpemU7CisKKyAgICB1aW50MzJfdCBtUmVzZXJ2b2lyOyAgLy8gbGVmdC1hbGlnbmVkIGJpdHMKKyAgICBzaXplX3QgbU51bUJpdHNMZWZ0OworCisgICAgdm9pZCBmaWxsUmVzZXJ2b2lyKCk7CisgICAgdm9pZCBwdXRCaXRzKHVpbnQzMl90IHgsIHNpemVfdCBuKTsKKworICAgIERJU0FMTE9XX0VWSUxfQ09OU1RSVUNUT1JTKEFCaXRSZWFkZXIpOworfTsKKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKKworI2VuZGlmICAvLyBBX0JJVF9SRUFERVJfSF8KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L21wZWcydHMvQVRTUGFyc2VyLmNwcCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L21wZWcydHMvQVRTUGFyc2VyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDU5NzVkCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvbXBlZzJ0cy9BVFNQYXJzZXIuY3BwCkBAIC0wLDAgKzEsOTQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2luY2x1ZGUgIkFUU1BhcnNlci5oIgorCisjaW5jbHVkZSAiQUJpdFJlYWRlci5oIgorI2luY2x1ZGUgIkFub3RoZXJQYWNrZXRTb3VyY2UuaCIKKworI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUJ1ZmZlci5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQURlYnVnLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BTWVzc2FnZS5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vaGV4ZHVtcC5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhRGVmcy5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhRXJyb3JzLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWV0YURhdGEuaD4KKyNpbmNsdWRlIDx1dGlscy9LZXllZFZlY3Rvci5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK3N0YXRpYyBjb25zdCBzaXplX3Qga1RTUGFja2V0U2l6ZSA9IDE4ODsKKworc3RydWN0IEFUU1BhcnNlcjo6UHJvZ3JhbSA6IHB1YmxpYyBSZWZCYXNlIHsKKyAgICBQcm9ncmFtKHVuc2lnbmVkIHByb2dyYW1NYXBQSUQpOworCisgICAgYm9vbCBwYXJzZVBJRCgKKyAgICAgICAgICAgIHVuc2lnbmVkIHBpZCwgdW5zaWduZWQgcGF5bG9hZF91bml0X3N0YXJ0X2luZGljYXRvciwKKyAgICAgICAgICAgIEFCaXRSZWFkZXIgKmJyKTsKKworICAgIHNwPE1lZGlhU291cmNlPiBnZXRTb3VyY2UoU291cmNlVHlwZSB0eXBlKTsKKworcHJpdmF0ZToKKyAgICB1bnNpZ25lZCBtUHJvZ3JhbU1hcFBJRDsKKyAgICBLZXllZFZlY3Rvcjx1bnNpZ25lZCwgc3A8U3RyZWFtPiA+IG1TdHJlYW1zOworCisgICAgdm9pZCBwYXJzZVByb2dyYW1NYXAoQUJpdFJlYWRlciAqYnIpOworCisgICAgRElTQUxMT1dfRVZJTF9DT05TVFJVQ1RPUlMoUHJvZ3JhbSk7Cit9OworCitzdHJ1Y3QgQVRTUGFyc2VyOjpTdHJlYW0gOiBwdWJsaWMgUmVmQmFzZSB7CisgICAgU3RyZWFtKHVuc2lnbmVkIGVsZW1lbnRhcnlQSUQsIHVuc2lnbmVkIHN0cmVhbVR5cGUpOworCisgICAgdm9pZCBwYXJzZSgKKyAgICAgICAgICAgIHVuc2lnbmVkIHBheWxvYWRfdW5pdF9zdGFydF9pbmRpY2F0b3IsCisgICAgICAgICAgICBBQml0UmVhZGVyICpicik7CisKKyAgICBzcDxNZWRpYVNvdXJjZT4gZ2V0U291cmNlKFNvdXJjZVR5cGUgdHlwZSk7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5TdHJlYW0oKTsKKworcHJpdmF0ZToKKyAgICB1bnNpZ25lZCBtRWxlbWVudGFyeVBJRDsKKyAgICB1bnNpZ25lZCBtU3RyZWFtVHlwZTsKKworICAgIHNwPEFCdWZmZXI+IG1CdWZmZXI7CisgICAgc3A8QW5vdGhlclBhY2tldFNvdXJjZT4gbVNvdXJjZTsKKyAgICBib29sIG1QYXlsb2FkU3RhcnRlZDsKKworICAgIHZvaWQgZmx1c2goKTsKKyAgICB2b2lkIHBhcnNlUEVTKEFCaXRSZWFkZXIgKmJyKTsKKworICAgIHZvaWQgb25QYXlsb2FkRGF0YSgKKyAgICAgICAgICAgIHVuc2lnbmVkIFBUU19EVFNfZmxhZ3MsIHVpbnQ2NF90IFBUUywgdWludDY0X3QgRFRTLAorICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZGF0YSwgc2l6ZV90IHNpemUpOworCisgICAgRElTQUxMT1dfRVZJTF9DT05TVFJVQ1RPUlMoU3RyZWFtKTsKK307CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK0FUU1BhcnNlcjo6UHJvZ3JhbTo6UHJvZ3JhbSh1bnNpZ25lZCBwcm9ncmFtTWFwUElEKQorICAgIDogbVByb2dyYW1NYXBQSUQocHJvZ3JhbU1hcFBJRCkgeworfQorCitib29sIEFUU1BhcnNlcjo6UHJvZ3JhbTo6cGFyc2VQSUQoCisgICAgICAgIHVuc2lnbmVkIHBpZCwgdW5zaWduZWQgcGF5bG9hZF91bml0X3N0YXJ0X2luZGljYXRvciwKKyAgICAgICAgQUJpdFJlYWRlciAqYnIpIHsKKyAgICBpZiAocGlkID09IG1Qcm9ncmFtTWFwUElEKSB7CisgICAgICAgIGlmIChwYXlsb2FkX3VuaXRfc3RhcnRfaW5kaWNhdG9yKSB7CisgICAgICAgICAgICB1bnNpZ25lZCBza2lwID0gYnItPmdldEJpdHMoOCk7CisgICAgICAgICAgICBici0+c2tpcEJpdHMoc2tpcCAqIDgpOworICAgICAgICB9CisKKyAgICAgICAgcGFyc2VQcm9ncmFtTWFwKGJyKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgc3NpemVfdCBpbmRleCA9IG1TdHJlYW1zLmluZGV4T2ZLZXkocGlkKTsKKyAgICBpZiAoaW5kZXggPCAwKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBtU3RyZWFtcy5lZGl0VmFsdWVBdChpbmRleCktPnBhcnNlKAorICAgICAgICAgICAgcGF5bG9hZF91bml0X3N0YXJ0X2luZGljYXRvciwgYnIpOworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3ZvaWQgQVRTUGFyc2VyOjpQcm9ncmFtOjpwYXJzZVByb2dyYW1NYXAoQUJpdFJlYWRlciAqYnIpIHsKKyAgICB1bnNpZ25lZCB0YWJsZV9pZCA9IGJyLT5nZXRCaXRzKDgpOworICAgIExPRyhWRVJCT1NFKSA8PCAiICB0YWJsZV9pZCA9ICIgPDwgdGFibGVfaWQ7CisgICAgQ0hFQ0tfRVEodGFibGVfaWQsIDB4MDJ1KTsKKworICAgIHVuc2lnbmVkIHNlY3Rpb25fc3ludGF4X2luZGljdG9yID0gYnItPmdldEJpdHMoMSk7CisgICAgTE9HKFZFUkJPU0UpIDw8ICIgIHNlY3Rpb25fc3ludGF4X2luZGljdG9yID0gIiA8PCBzZWN0aW9uX3N5bnRheF9pbmRpY3RvcjsKKyAgICBDSEVDS19FUShzZWN0aW9uX3N5bnRheF9pbmRpY3RvciwgMXUpOworCisgICAgQ0hFQ0tfRVEoYnItPmdldEJpdHMoMSksIDB1KTsKKyAgICBMT0coVkVSQk9TRSkgPDwgIiAgcmVzZXJ2ZWQgPSAiIDw8IGJyLT5nZXRCaXRzKDIpOworCisgICAgdW5zaWduZWQgc2VjdGlvbl9sZW5ndGggPSBici0+Z2V0Qml0cygxMik7CisgICAgTE9HKFZFUkJPU0UpIDw8ICIgIHNlY3Rpb25fbGVuZ3RoID0gIiA8PCBzZWN0aW9uX2xlbmd0aDsKKyAgICBDSEVDSygoc2VjdGlvbl9sZW5ndGggJiAweGMwMCkgPT0gMCk7CisgICAgQ0hFQ0tfTEUoc2VjdGlvbl9sZW5ndGgsIDEwMjF1KTsKKworICAgIExPRyhWRVJCT1NFKSA8PCAiICBwcm9ncmFtX251bWJlciA9ICIgPDwgYnItPmdldEJpdHMoMTYpOworICAgIExPRyhWRVJCT1NFKSA8PCAiICByZXNlcnZlZCA9ICIgPDwgYnItPmdldEJpdHMoMik7CisgICAgTE9HKFZFUkJPU0UpIDw8ICIgIHZlcnNpb25fbnVtYmVyID0gIiA8PCBici0+Z2V0Qml0cyg1KTsKKyAgICBMT0coVkVSQk9TRSkgPDwgIiAgY3VycmVudF9uZXh0X2luZGljYXRvciA9ICIgPDwgYnItPmdldEJpdHMoMSk7CisgICAgTE9HKFZFUkJPU0UpIDw8ICIgIHNlY3Rpb25fbnVtYmVyID0gIiA8PCBici0+Z2V0Qml0cyg4KTsKKyAgICBMT0coVkVSQk9TRSkgPDwgIiAgbGFzdF9zZWN0aW9uX251bWJlciA9ICIgPDwgYnItPmdldEJpdHMoOCk7CisgICAgTE9HKFZFUkJPU0UpIDw8ICIgIHJlc2VydmVkID0gIiA8PCBici0+Z2V0Qml0cygzKTsKKworICAgIExPRyhWRVJCT1NFKSA8PCAiICBQQ1JfUElEID0gIgorICAgICAgICAgICAgICA8PCBTdHJpbmdQcmludGYoIjB4JTA0eCIsIGJyLT5nZXRCaXRzKDEzKSk7CisKKyAgICBMT0coVkVSQk9TRSkgPDwgIiAgcmVzZXJ2ZWQgPSAiIDw8IGJyLT5nZXRCaXRzKDQpOworCisgICAgdW5zaWduZWQgcHJvZ3JhbV9pbmZvX2xlbmd0aCA9IGJyLT5nZXRCaXRzKDEyKTsKKyAgICBMT0coVkVSQk9TRSkgPDwgIiAgcHJvZ3JhbV9pbmZvX2xlbmd0aCA9ICIgPDwgcHJvZ3JhbV9pbmZvX2xlbmd0aDsKKyAgICBDSEVDSygocHJvZ3JhbV9pbmZvX2xlbmd0aCAmIDB4YzAwKSA9PSAwKTsKKworICAgIGJyLT5za2lwQml0cyhwcm9ncmFtX2luZm9fbGVuZ3RoICogOCk7ICAvLyBza2lwIGRlc2NyaXB0b3JzCisKKyAgICAvLyBpbmZvQnl0ZXNSZW1haW5pbmcgaXMgdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IG1ha2UgdXAgdGhlCisgICAgLy8gdmFyaWFibGUgbGVuZ3RoIHNlY3Rpb24gb2YgRVNfaW5mb3MuIEl0IGRvZXMgbm90IGluY2x1ZGUgdGhlCisgICAgLy8gZmluYWwgQ1JDLgorICAgIHNpemVfdCBpbmZvQnl0ZXNSZW1haW5pbmcgPSBzZWN0aW9uX2xlbmd0aCAtIDkgLSBwcm9ncmFtX2luZm9fbGVuZ3RoIC0gNDsKKworICAgIHdoaWxlIChpbmZvQnl0ZXNSZW1haW5pbmcgPiAwKSB7CisgICAgICAgIENIRUNLX0dFKGluZm9CeXRlc1JlbWFpbmluZywgNXUpOworCisgICAgICAgIHVuc2lnbmVkIHN0cmVhbVR5cGUgPSBici0+Z2V0Qml0cyg4KTsKKyAgICAgICAgTE9HKFZFUkJPU0UpIDw8ICIgICAgc3RyZWFtX3R5cGUgPSAiCisgICAgICAgICAgICAgICAgICA8PCBTdHJpbmdQcmludGYoIjB4JTAyeCIsIHN0cmVhbVR5cGUpOworCisgICAgICAgIExPRyhWRVJCT1NFKSA8PCAiICAgIHJlc2VydmVkID0gIiA8PCBici0+Z2V0Qml0cygzKTsKKworICAgICAgICB1bnNpZ25lZCBlbGVtZW50YXJ5UElEID0gYnItPmdldEJpdHMoMTMpOworICAgICAgICBMT0coVkVSQk9TRSkgPDwgIiAgICBlbGVtZW50YXJ5X1BJRCA9ICIKKyAgICAgICAgICAgICAgICAgIDw8IFN0cmluZ1ByaW50ZigiMHglMDR4IiwgZWxlbWVudGFyeVBJRCk7CisKKyAgICAgICAgTE9HKFZFUkJPU0UpIDw8ICIgICAgcmVzZXJ2ZWQgPSAiIDw8IGJyLT5nZXRCaXRzKDQpOworCisgICAgICAgIHVuc2lnbmVkIEVTX2luZm9fbGVuZ3RoID0gYnItPmdldEJpdHMoMTIpOworICAgICAgICBMT0coVkVSQk9TRSkgPDwgIiAgICBFU19pbmZvX2xlbmd0aCA9ICIgPDwgRVNfaW5mb19sZW5ndGg7CisgICAgICAgIENIRUNLKChFU19pbmZvX2xlbmd0aCAmIDB4YzAwKSA9PSAwKTsKKworICAgICAgICBDSEVDS19HRShpbmZvQnl0ZXNSZW1haW5pbmcgLSA1LCBFU19pbmZvX2xlbmd0aCk7CisKKyNpZiAwCisgICAgICAgIGJyLT5za2lwQml0cyhFU19pbmZvX2xlbmd0aCAqIDgpOyAgLy8gc2tpcCBkZXNjcmlwdG9ycworI2Vsc2UKKyAgICAgICAgdW5zaWduZWQgaW5mb19ieXRlc19yZW1haW5pbmcgPSBFU19pbmZvX2xlbmd0aDsKKyAgICAgICAgd2hpbGUgKGluZm9fYnl0ZXNfcmVtYWluaW5nID49IDIpIHsKKyAgICAgICAgICAgIExPRyhWRVJCT1NFKSA8PCAiICAgICAgdGFnID0gIiA8PCBTdHJpbmdQcmludGYoIjB4JTAyeCIsIGJyLT5nZXRCaXRzKDgpKTsKKworICAgICAgICAgICAgdW5zaWduZWQgZGVzY0xlbmd0aCA9IGJyLT5nZXRCaXRzKDgpOworICAgICAgICAgICAgTE9HKFZFUkJPU0UpIDw8ICIgICAgICBsZW4gPSAiIDw8IGRlc2NMZW5ndGg7CisKKyAgICAgICAgICAgIENIRUNLX0dFKGluZm9fYnl0ZXNfcmVtYWluaW5nLCAyICsgZGVzY0xlbmd0aCk7CisKKyAgICAgICAgICAgIGJyLT5za2lwQml0cyhkZXNjTGVuZ3RoICogOCk7CisKKyAgICAgICAgICAgIGluZm9fYnl0ZXNfcmVtYWluaW5nIC09IGRlc2NMZW5ndGggKyAyOworICAgICAgICB9CisgICAgICAgIENIRUNLX0VRKGluZm9fYnl0ZXNfcmVtYWluaW5nLCAwdSk7CisjZW5kaWYKKworICAgICAgICBzc2l6ZV90IGluZGV4ID0gbVN0cmVhbXMuaW5kZXhPZktleShlbGVtZW50YXJ5UElEKTsKKyNpZiAwICAvLyBYWFggcmV2aXNpdAorICAgICAgICBDSEVDS19MVChpbmRleCwgMCk7CisgICAgICAgIG1TdHJlYW1zLmFkZChlbGVtZW50YXJ5UElELCBuZXcgU3RyZWFtKGVsZW1lbnRhcnlQSUQsIHN0cmVhbVR5cGUpKTsKKyNlbHNlCisgICAgICAgIGlmIChpbmRleCA8IDApIHsKKyAgICAgICAgICAgIG1TdHJlYW1zLmFkZChlbGVtZW50YXJ5UElELCBuZXcgU3RyZWFtKGVsZW1lbnRhcnlQSUQsIHN0cmVhbVR5cGUpKTsKKyAgICAgICAgfQorI2VuZGlmCisKKyAgICAgICAgaW5mb0J5dGVzUmVtYWluaW5nIC09IDUgKyBFU19pbmZvX2xlbmd0aDsKKyAgICB9CisKKyAgICBDSEVDS19FUShpbmZvQnl0ZXNSZW1haW5pbmcsIDB1KTsKKworICAgIExPRyhWRVJCT1NFKSA8PCAiICBDUkMgPSAiIDw8IFN0cmluZ1ByaW50ZigiMHglMDh4IiwgYnItPmdldEJpdHMoMzIpKTsKK30KKworc3A8TWVkaWFTb3VyY2U+IEFUU1BhcnNlcjo6UHJvZ3JhbTo6Z2V0U291cmNlKFNvdXJjZVR5cGUgdHlwZSkgeworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbVN0cmVhbXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgc3A8TWVkaWFTb3VyY2U+IHNvdXJjZSA9IG1TdHJlYW1zLmVkaXRWYWx1ZUF0KGkpLT5nZXRTb3VyY2UodHlwZSk7CisgICAgICAgIGlmIChzb3VyY2UgIT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIHNvdXJjZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBOVUxMOworfQorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCitBVFNQYXJzZXI6OlN0cmVhbTo6U3RyZWFtKHVuc2lnbmVkIGVsZW1lbnRhcnlQSUQsIHVuc2lnbmVkIHN0cmVhbVR5cGUpCisgICAgOiBtRWxlbWVudGFyeVBJRChlbGVtZW50YXJ5UElEKSwKKyAgICAgIG1TdHJlYW1UeXBlKHN0cmVhbVR5cGUpLAorICAgICAgbUJ1ZmZlcihuZXcgQUJ1ZmZlcig2NTUzNikpLAorICAgICAgbVBheWxvYWRTdGFydGVkKGZhbHNlKSB7CisgICAgbUJ1ZmZlci0+c2V0UmFuZ2UoMCwgMCk7Cit9CisKK0FUU1BhcnNlcjo6U3RyZWFtOjp+U3RyZWFtKCkgeworfQorCit2b2lkIEFUU1BhcnNlcjo6U3RyZWFtOjpwYXJzZSgKKyAgICAgICAgdW5zaWduZWQgcGF5bG9hZF91bml0X3N0YXJ0X2luZGljYXRvciwgQUJpdFJlYWRlciAqYnIpIHsKKyAgICBpZiAocGF5bG9hZF91bml0X3N0YXJ0X2luZGljYXRvcikgeworICAgICAgICBpZiAobVBheWxvYWRTdGFydGVkKSB7CisgICAgICAgICAgICAvLyBPdGhlcndpc2Ugd2UgcnVuIHRoZSBkYW5nZXIgb2YgcmVjZWl2aW5nIHRoZSB0cmFpbGluZyBieXRlcworICAgICAgICAgICAgLy8gb2YgYSBQRVMgcGFja2V0IHRoYXQgd2UgbmV2ZXIgc2F3IHRoZSBzdGFydCBvZiBhbmQgYXNzdW1pbmcKKyAgICAgICAgICAgIC8vIHdlIGhhdmUgYSBhIGNvbXBsZXRlIFBFUyBwYWNrZXQuCisKKyAgICAgICAgICAgIGZsdXNoKCk7CisgICAgICAgIH0KKworICAgICAgICBtUGF5bG9hZFN0YXJ0ZWQgPSB0cnVlOworICAgIH0KKworICAgIGlmICghbVBheWxvYWRTdGFydGVkKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzaXplX3QgcGF5bG9hZFNpemVCaXRzID0gYnItPm51bUJpdHNMZWZ0KCk7CisgICAgQ0hFQ0tfRVEocGF5bG9hZFNpemVCaXRzICUgOCwgMHUpOworCisgICAgQ0hFQ0tfTEUobUJ1ZmZlci0+c2l6ZSgpICsgcGF5bG9hZFNpemVCaXRzIC8gOCwgbUJ1ZmZlci0+Y2FwYWNpdHkoKSk7CisKKyAgICBtZW1jcHkobUJ1ZmZlci0+ZGF0YSgpICsgbUJ1ZmZlci0+c2l6ZSgpLCBici0+ZGF0YSgpLCBwYXlsb2FkU2l6ZUJpdHMgLyA4KTsKKyAgICBtQnVmZmVyLT5zZXRSYW5nZSgwLCBtQnVmZmVyLT5zaXplKCkgKyBwYXlsb2FkU2l6ZUJpdHMgLyA4KTsKK30KKwordm9pZCBBVFNQYXJzZXI6OlN0cmVhbTo6cGFyc2VQRVMoQUJpdFJlYWRlciAqYnIpIHsKKyAgICB1bnNpZ25lZCBwYWNrZXRfc3RhcnRjb2RlX3ByZWZpeCA9IGJyLT5nZXRCaXRzKDI0KTsKKworICAgIExPRyhWRVJCT1NFKSA8PCAicGFja2V0X3N0YXJ0Y29kZV9wcmVmaXggPSAiCisgICAgICAgICAgICAgIDw8IFN0cmluZ1ByaW50ZigiMHglMDh4IiwgcGFja2V0X3N0YXJ0Y29kZV9wcmVmaXgpOworCisgICAgQ0hFQ0tfRVEocGFja2V0X3N0YXJ0Y29kZV9wcmVmaXgsIDB4MDAwMDAxdSk7CisKKyAgICB1bnNpZ25lZCBzdHJlYW1faWQgPSBici0+Z2V0Qml0cyg4KTsKKyAgICBMT0coVkVSQk9TRSkgPDwgInN0cmVhbV9pZCA9ICIgPDwgU3RyaW5nUHJpbnRmKCIweCUwMngiLCBzdHJlYW1faWQpOworCisgICAgdW5zaWduZWQgUEVTX3BhY2tldF9sZW5ndGggPSBici0+Z2V0Qml0cygxNik7CisgICAgTE9HKFZFUkJPU0UpIDw8ICJQRVNfcGFja2V0X2xlbmd0aCA9ICIgPDwgUEVTX3BhY2tldF9sZW5ndGg7CisKKyAgICBpZiAoc3RyZWFtX2lkICE9IDB4YmMgIC8vIHByb2dyYW1fc3RyZWFtX21hcAorICAgICAgICAgICAgJiYgc3RyZWFtX2lkICE9IDB4YmUgIC8vIHBhZGRpbmdfc3RyZWFtCisgICAgICAgICAgICAmJiBzdHJlYW1faWQgIT0gMHhiZiAgLy8gcHJpdmF0ZV9zdHJlYW1fMgorICAgICAgICAgICAgJiYgc3RyZWFtX2lkICE9IDB4ZjAgIC8vIEVDTQorICAgICAgICAgICAgJiYgc3RyZWFtX2lkICE9IDB4ZjEgIC8vIEVNTQorICAgICAgICAgICAgJiYgc3RyZWFtX2lkICE9IDB4ZmYgIC8vIHByb2dyYW1fc3RyZWFtX2RpcmVjdG9yeQorICAgICAgICAgICAgJiYgc3RyZWFtX2lkICE9IDB4ZjIgIC8vIERTTUNDCisgICAgICAgICAgICAmJiBzdHJlYW1faWQgIT0gMHhmOCkgeyAgLy8gSC4yMjIuMSB0eXBlIEUKKyAgICAgICAgQ0hFQ0tfRVEoYnItPmdldEJpdHMoMiksIDJ1KTsKKworICAgICAgICBMT0coVkVSQk9TRSkgPDwgIlBFU19zY3JhbWJsaW5nX2NvbnRyb2wgPSAiIDw8IGJyLT5nZXRCaXRzKDIpOworICAgICAgICBMT0coVkVSQk9TRSkgPDwgIlBFU19wcmlvcml0eSA9ICIgPDwgYnItPmdldEJpdHMoMSk7CisgICAgICAgIExPRyhWRVJCT1NFKSA8PCAiZGF0YV9hbGlnbm1lbnRfaW5kaWNhdG9yID0gIiA8PCBici0+Z2V0Qml0cygxKTsKKyAgICAgICAgTE9HKFZFUkJPU0UpIDw8ICJjb3B5cmlnaHQgPSAiIDw8IGJyLT5nZXRCaXRzKDEpOworICAgICAgICBMT0coVkVSQk9TRSkgPDwgIm9yaWdpbmFsX29yX2NvcHkgPSAiIDw8IGJyLT5nZXRCaXRzKDEpOworCisgICAgICAgIHVuc2lnbmVkIFBUU19EVFNfZmxhZ3MgPSBici0+Z2V0Qml0cygyKTsKKyAgICAgICAgTE9HKFZFUkJPU0UpIDw8ICJQVFNfRFRTX2ZsYWdzID0gIiA8PCBQVFNfRFRTX2ZsYWdzOworCisgICAgICAgIHVuc2lnbmVkIEVTQ1JfZmxhZyA9IGJyLT5nZXRCaXRzKDEpOworICAgICAgICBMT0coVkVSQk9TRSkgPDwgIkVTQ1JfZmxhZyA9ICIgPDwgRVNDUl9mbGFnOworCisgICAgICAgIHVuc2lnbmVkIEVTX3JhdGVfZmxhZyA9IGJyLT5nZXRCaXRzKDEpOworICAgICAgICBMT0coVkVSQk9TRSkgPDwgIkVTX3JhdGVfZmxhZyA9ICIgPDwgRVNfcmF0ZV9mbGFnOworCisgICAgICAgIHVuc2lnbmVkIERTTV90cmlja19tb2RlX2ZsYWcgPSBici0+Z2V0Qml0cygxKTsKKyAgICAgICAgTE9HKFZFUkJPU0UpIDw8ICJEU01fdHJpY2tfbW9kZV9mbGFnID0gIiA8PCBEU01fdHJpY2tfbW9kZV9mbGFnOworCisgICAgICAgIHVuc2lnbmVkIGFkZGl0aW9uYWxfY29weV9pbmZvX2ZsYWcgPSBici0+Z2V0Qml0cygxKTsKKyAgICAgICAgTE9HKFZFUkJPU0UpIDw8ICJhZGRpdGlvbmFsX2NvcHlfaW5mb19mbGFnID0gIgorICAgICAgICAgICAgICAgICAgPDwgYWRkaXRpb25hbF9jb3B5X2luZm9fZmxhZzsKKworICAgICAgICBMT0coVkVSQk9TRSkgPDwgIlBFU19DUkNfZmxhZyA9ICIgPDwgYnItPmdldEJpdHMoMSk7CisgICAgICAgIExPRyhWRVJCT1NFKSA8PCAiUEVTX2V4dGVuc2lvbl9mbGFnID0gIiA8PCBici0+Z2V0Qml0cygxKTsKKworICAgICAgICB1bnNpZ25lZCBQRVNfaGVhZGVyX2RhdGFfbGVuZ3RoID0gYnItPmdldEJpdHMoOCk7CisgICAgICAgIExPRyhWRVJCT1NFKSA8PCAiUEVTX2hlYWRlcl9kYXRhX2xlbmd0aCA9ICIgPDwgUEVTX2hlYWRlcl9kYXRhX2xlbmd0aDsKKworICAgICAgICB1bnNpZ25lZCBvcHRpb25hbF9ieXRlc19yZW1haW5pbmcgPSBQRVNfaGVhZGVyX2RhdGFfbGVuZ3RoOworCisgICAgICAgIHVpbnQ2NF90IFBUUyA9IDAsIERUUyA9IDA7CisKKyAgICAgICAgaWYgKFBUU19EVFNfZmxhZ3MgPT0gMiB8fCBQVFNfRFRTX2ZsYWdzID09IDMpIHsKKyAgICAgICAgICAgIENIRUNLX0dFKG9wdGlvbmFsX2J5dGVzX3JlbWFpbmluZywgNXUpOworCisgICAgICAgICAgICBDSEVDS19FUShici0+Z2V0Qml0cyg0KSwgUFRTX0RUU19mbGFncyk7CisKKyAgICAgICAgICAgIFBUUyA9ICgodWludDY0X3QpYnItPmdldEJpdHMoMykpIDw8IDMwOworICAgICAgICAgICAgQ0hFQ0tfRVEoYnItPmdldEJpdHMoMSksIDF1KTsKKyAgICAgICAgICAgIFBUUyB8PSAoKHVpbnQ2NF90KWJyLT5nZXRCaXRzKDE1KSkgPDwgMTU7CisgICAgICAgICAgICBDSEVDS19FUShici0+Z2V0Qml0cygxKSwgMXUpOworICAgICAgICAgICAgUFRTIHw9IGJyLT5nZXRCaXRzKDE1KTsKKyAgICAgICAgICAgIENIRUNLX0VRKGJyLT5nZXRCaXRzKDEpLCAxdSk7CisKKyAgICAgICAgICAgIExPRyhWRVJCT1NFKSA8PCAiUFRTID0gIiA8PCBQVFM7CisgICAgICAgICAgICAvLyBMT0coSU5GTykgPDwgIlBUUyA9ICIgPDwgUFRTIC8gOTAwMDAuMGYgPDwgIiBzZWNzIjsKKworICAgICAgICAgICAgb3B0aW9uYWxfYnl0ZXNfcmVtYWluaW5nIC09IDU7CisKKyAgICAgICAgICAgIGlmIChQVFNfRFRTX2ZsYWdzID09IDMpIHsKKyAgICAgICAgICAgICAgICBDSEVDS19HRShvcHRpb25hbF9ieXRlc19yZW1haW5pbmcsIDV1KTsKKworICAgICAgICAgICAgICAgIENIRUNLX0VRKGJyLT5nZXRCaXRzKDQpLCAxdSk7CisKKyAgICAgICAgICAgICAgICBEVFMgPSAoKHVpbnQ2NF90KWJyLT5nZXRCaXRzKDMpKSA8PCAzMDsKKyAgICAgICAgICAgICAgICBDSEVDS19FUShici0+Z2V0Qml0cygxKSwgMXUpOworICAgICAgICAgICAgICAgIERUUyB8PSAoKHVpbnQ2NF90KWJyLT5nZXRCaXRzKDE1KSkgPDwgMTU7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEoYnItPmdldEJpdHMoMSksIDF1KTsKKyAgICAgICAgICAgICAgICBEVFMgfD0gYnItPmdldEJpdHMoMTUpOworICAgICAgICAgICAgICAgIENIRUNLX0VRKGJyLT5nZXRCaXRzKDEpLCAxdSk7CisKKyAgICAgICAgICAgICAgICBMT0coVkVSQk9TRSkgPDwgIkRUUyA9ICIgPDwgRFRTOworCisgICAgICAgICAgICAgICAgb3B0aW9uYWxfYnl0ZXNfcmVtYWluaW5nIC09IDU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoRVNDUl9mbGFnKSB7CisgICAgICAgICAgICBDSEVDS19HRShvcHRpb25hbF9ieXRlc19yZW1haW5pbmcsIDZ1KTsKKworICAgICAgICAgICAgYnItPmdldEJpdHMoMik7CisKKyAgICAgICAgICAgIHVpbnQ2NF90IEVTQ1IgPSAoKHVpbnQ2NF90KWJyLT5nZXRCaXRzKDMpKSA8PCAzMDsKKyAgICAgICAgICAgIENIRUNLX0VRKGJyLT5nZXRCaXRzKDEpLCAxdSk7CisgICAgICAgICAgICBFU0NSIHw9ICgodWludDY0X3QpYnItPmdldEJpdHMoMTUpKSA8PCAxNTsKKyAgICAgICAgICAgIENIRUNLX0VRKGJyLT5nZXRCaXRzKDEpLCAxdSk7CisgICAgICAgICAgICBFU0NSIHw9IGJyLT5nZXRCaXRzKDE1KTsKKyAgICAgICAgICAgIENIRUNLX0VRKGJyLT5nZXRCaXRzKDEpLCAxdSk7CisKKyAgICAgICAgICAgIExPRyhWRVJCT1NFKSA8PCAiRVNDUiA9ICIgPDwgRVNDUjsKKyAgICAgICAgICAgIExPRyhWRVJCT1NFKSA8PCAiRVNDUl9leHRlbnNpb24gPSAiIDw8IGJyLT5nZXRCaXRzKDkpOworCisgICAgICAgICAgICBDSEVDS19FUShici0+Z2V0Qml0cygxKSwgMXUpOworCisgICAgICAgICAgICBvcHRpb25hbF9ieXRlc19yZW1haW5pbmcgLT0gNjsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChFU19yYXRlX2ZsYWcpIHsKKyAgICAgICAgICAgIENIRUNLX0dFKG9wdGlvbmFsX2J5dGVzX3JlbWFpbmluZywgM3UpOworCisgICAgICAgICAgICBDSEVDS19FUShici0+Z2V0Qml0cygxKSwgMXUpOworICAgICAgICAgICAgTE9HKFZFUkJPU0UpIDw8ICJFU19yYXRlID0gIiA8PCBici0+Z2V0Qml0cygyMik7CisgICAgICAgICAgICBDSEVDS19FUShici0+Z2V0Qml0cygxKSwgMXUpOworCisgICAgICAgICAgICBvcHRpb25hbF9ieXRlc19yZW1haW5pbmcgLT0gMzsKKyAgICAgICAgfQorCisgICAgICAgIGJyLT5za2lwQml0cyhvcHRpb25hbF9ieXRlc19yZW1haW5pbmcgKiA4KTsKKworICAgICAgICAvLyBFUyBkYXRhIGZvbGxvd3MuCisKKyAgICAgICAgb25QYXlsb2FkRGF0YSgKKyAgICAgICAgICAgICAgICBQVFNfRFRTX2ZsYWdzLCBQVFMsIERUUywKKyAgICAgICAgICAgICAgICBici0+ZGF0YSgpLCBici0+bnVtQml0c0xlZnQoKSAvIDgpOworCisgICAgICAgIGlmIChQRVNfcGFja2V0X2xlbmd0aCAhPSAwKSB7CisgICAgICAgICAgICBDSEVDS19HRShQRVNfcGFja2V0X2xlbmd0aCwgUEVTX2hlYWRlcl9kYXRhX2xlbmd0aCArIDMpOworCisgICAgICAgICAgICB1bnNpZ25lZCBkYXRhTGVuZ3RoID0KKyAgICAgICAgICAgICAgICBQRVNfcGFja2V0X2xlbmd0aCAtIDMgLSBQRVNfaGVhZGVyX2RhdGFfbGVuZ3RoOworCisgICAgICAgICAgICBDSEVDS19FUShici0+bnVtQml0c0xlZnQoKSwgZGF0YUxlbmd0aCAqIDgpOworCisgICAgICAgICAgICBici0+c2tpcEJpdHMoZGF0YUxlbmd0aCAqIDgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2l6ZV90IHBheWxvYWRTaXplQml0cyA9IGJyLT5udW1CaXRzTGVmdCgpOworICAgICAgICAgICAgQ0hFQ0soKHBheWxvYWRTaXplQml0cyAlIDgpID09IDApOworCisgICAgICAgICAgICBMT0coVkVSQk9TRSkgPDwgIlRoZXJlJ3MgIiA8PCAocGF5bG9hZFNpemVCaXRzIC8gOCkKKyAgICAgICAgICAgICAgICAgICAgICAgICA8PCAiIGJ5dGVzIG9mIHBheWxvYWQuIjsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoc3RyZWFtX2lkID09IDB4YmUpIHsgIC8vIHBhZGRpbmdfc3RyZWFtCisgICAgICAgIENIRUNLX05FKFBFU19wYWNrZXRfbGVuZ3RoLCAwdSk7CisgICAgICAgIGJyLT5za2lwQml0cyhQRVNfcGFja2V0X2xlbmd0aCAqIDgpOworICAgIH0gZWxzZSB7CisgICAgICAgIENIRUNLX05FKFBFU19wYWNrZXRfbGVuZ3RoLCAwdSk7CisgICAgICAgIGJyLT5za2lwQml0cyhQRVNfcGFja2V0X2xlbmd0aCAqIDgpOworICAgIH0KK30KKwordm9pZCBBVFNQYXJzZXI6OlN0cmVhbTo6Zmx1c2goKSB7CisgICAgaWYgKG1CdWZmZXItPnNpemUoKSA9PSAwKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBMT0coVkVSQk9TRSkgPDwgImZsdXNoaW5nIHN0cmVhbSAiCisgICAgICAgICAgICAgICAgIDw8IFN0cmluZ1ByaW50ZigiMHglMDR4IiwgbUVsZW1lbnRhcnlQSUQpCisgICAgICAgICAgICAgICAgIDw8ICIgc2l6ZSA9ICIgPDwgbUJ1ZmZlci0+c2l6ZSgpOworCisgICAgQUJpdFJlYWRlciBicihtQnVmZmVyLT5kYXRhKCksIG1CdWZmZXItPnNpemUoKSk7CisgICAgcGFyc2VQRVMoJmJyKTsKKworICAgIG1CdWZmZXItPnNldFJhbmdlKDAsIDApOworfQorCitzdGF0aWMgc3A8QUJ1ZmZlcj4gRmluZE5BTCgKKyAgICAgICAgY29uc3QgdWludDhfdCAqZGF0YSwgc2l6ZV90IHNpemUsIHVuc2lnbmVkIG5hbFR5cGUsCisgICAgICAgIHNpemVfdCAqc3RvcE9mZnNldCkgeworICAgIGJvb2wgZm91bmRTdGFydCA9IGZhbHNlOworICAgIHNpemVfdCBzdGFydE9mZnNldCA9IDA7CisKKyAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIHdoaWxlIChvZmZzZXQgKyAzIDwgc2l6ZQorICAgICAgICAgICAgICAgICYmIG1lbWNtcCgiXHgwMFx4MDBceDAwXHgwMSIsICZkYXRhW29mZnNldF0sIDQpKSB7CisgICAgICAgICAgICArK29mZnNldDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChmb3VuZFN0YXJ0KSB7CisgICAgICAgICAgICBzaXplX3QgbmFsU2l6ZTsKKyAgICAgICAgICAgIGlmIChvZmZzZXQgKyAzID49IHNpemUpIHsKKyAgICAgICAgICAgICAgICBuYWxTaXplID0gc2l6ZSAtIHN0YXJ0T2Zmc2V0OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBuYWxTaXplID0gb2Zmc2V0IC0gc3RhcnRPZmZzZXQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNwPEFCdWZmZXI+IG5hbCA9IG5ldyBBQnVmZmVyKG5hbFNpemUpOworICAgICAgICAgICAgbWVtY3B5KG5hbC0+ZGF0YSgpLCAmZGF0YVtzdGFydE9mZnNldF0sIG5hbFNpemUpOworCisgICAgICAgICAgICBpZiAoc3RvcE9mZnNldCAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgKnN0b3BPZmZzZXQgPSBzdGFydE9mZnNldCArIG5hbFNpemU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBuYWw7CisgICAgICAgIH0KKworICAgICAgICBpZiAob2Zmc2V0ICsgNCA+PSBzaXplKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorCisgICAgICAgIGlmICgoZGF0YVtvZmZzZXQgKyA0XSAmIDB4MWYpID09IG5hbFR5cGUpIHsKKyAgICAgICAgICAgIGZvdW5kU3RhcnQgPSB0cnVlOworICAgICAgICAgICAgc3RhcnRPZmZzZXQgPSBvZmZzZXQgKyA0OworICAgICAgICB9CisKKyAgICAgICAgb2Zmc2V0ICs9IDQ7CisgICAgfQorfQorCitzdGF0aWMgdW5zaWduZWQgcGFyc2VVRShBQml0UmVhZGVyICpicikgeworICAgIHVuc2lnbmVkIG51bVplcm9lcyA9IDA7CisgICAgd2hpbGUgKGJyLT5nZXRCaXRzKDEpID09IDApIHsKKyAgICAgICAgKytudW1aZXJvZXM7CisgICAgfQorCisgICAgdW5zaWduZWQgeCA9IGJyLT5nZXRCaXRzKG51bVplcm9lcyk7CisKKyAgICByZXR1cm4geCArICgxdSA8PCBudW1aZXJvZXMpIC0gMTsKK30KKworLy8gRGV0ZXJtaW5lIHZpZGVvIGRpbWVuc2lvbnMgZnJvbSB0aGUgc2VxdWVuY2UgcGFyYW1ldGVyc2V0Lgorc3RhdGljIHZvaWQgRmluZERpbWVuc2lvbnMoCisgICAgICAgIGNvbnN0IHNwPEFCdWZmZXI+IHNlcVBhcmFtU2V0LCBpbnQzMl90ICp3aWR0aCwgaW50MzJfdCAqaGVpZ2h0KSB7CisgICAgQUJpdFJlYWRlciBicihzZXFQYXJhbVNldC0+ZGF0YSgpICsgMSwgc2VxUGFyYW1TZXQtPnNpemUoKSAtIDEpOworCisgICAgdW5zaWduZWQgcHJvZmlsZV9pZGMgPSBici5nZXRCaXRzKDgpOworICAgIGJyLnNraXBCaXRzKDE2KTsKKyAgICBwYXJzZVVFKCZicik7ICAvLyBzZXFfcGFyYW1ldGVyX3NldF9pZAorCisgICAgaWYgKHByb2ZpbGVfaWRjID09IDEwMCB8fCBwcm9maWxlX2lkYyA9PSAxMTAKKyAgICAgICAgICAgIHx8IHByb2ZpbGVfaWRjID09IDEyMiB8fCBwcm9maWxlX2lkYyA9PSAxNDQpIHsKKyAgICAgICAgVFJFU1BBU1MoKTsKKyAgICB9CisKKyAgICBwYXJzZVVFKCZicik7ICAvLyBsb2cyX21heF9mcmFtZV9udW1fbWludXM0CisgICAgdW5zaWduZWQgcGljX29yZGVyX2NudF90eXBlID0gcGFyc2VVRSgmYnIpOworCisgICAgaWYgKHBpY19vcmRlcl9jbnRfdHlwZSA9PSAwKSB7CisgICAgICAgIHBhcnNlVUUoJmJyKTsgIC8vIGxvZzJfbWF4X3BpY19vcmRlcl9jbnRfbHNiX21pbnVzNAorICAgIH0gZWxzZSBpZiAocGljX29yZGVyX2NudF90eXBlID09IDEpIHsKKyAgICAgICAgYnIuZ2V0Qml0cygxKTsgIC8vIGRlbHRhX3BpY19vcmRlcl9hbHdheXNfemVyb19mbGFnCisgICAgICAgIHBhcnNlVUUoJmJyKTsgIC8vIG9mZnNldF9mb3Jfbm9uX3JlZl9waWMKKyAgICAgICAgcGFyc2VVRSgmYnIpOyAgLy8gb2Zmc2V0X2Zvcl90b3BfdG9fYm90dG9tX2ZpZWxkCisKKyAgICAgICAgdW5zaWduZWQgbnVtX3JlZl9mcmFtZXNfaW5fcGljX29yZGVyX2NudF9jeWNsZSA9IHBhcnNlVUUoJmJyKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG51bV9yZWZfZnJhbWVzX2luX3BpY19vcmRlcl9jbnRfY3ljbGU7ICsraSkgeworICAgICAgICAgICAgcGFyc2VVRSgmYnIpOyAgLy8gb2Zmc2V0X2Zvcl9yZWZfZnJhbWUKKyAgICAgICAgfQorICAgIH0KKworICAgIHBhcnNlVUUoJmJyKTsgIC8vIG51bV9yZWZfZnJhbWVzCisgICAgYnIuZ2V0Qml0cygxKTsgIC8vIGdhcHNfaW5fZnJhbWVfbnVtX3ZhbHVlX2FsbG93ZWRfZmxhZworCisgICAgdW5zaWduZWQgcGljX3dpZHRoX2luX21ic19taW51czEgPSBwYXJzZVVFKCZicik7CisgICAgdW5zaWduZWQgcGljX2hlaWdodF9pbl9tYXBfdW5pdHNfbWludXMxID0gcGFyc2VVRSgmYnIpOworICAgIHVuc2lnbmVkIGZyYW1lX21ic19vbmx5X2ZsYWcgPSBici5nZXRCaXRzKDEpOworCisgICAgKndpZHRoID0gcGljX3dpZHRoX2luX21ic19taW51czEgKiAxNiArIDE2OworCisgICAgKmhlaWdodCA9ICgyIC0gZnJhbWVfbWJzX29ubHlfZmxhZykKKyAgICAgICAgKiAocGljX2hlaWdodF9pbl9tYXBfdW5pdHNfbWludXMxICogMTYgKyAxNik7Cit9CisKK3N0YXRpYyBzcDxBQnVmZmVyPiBNYWtlQVZDQ29kZWNTcGVjaWZpY0RhdGEoCisgICAgICAgIGNvbnN0IHNwPEFCdWZmZXI+ICZidWZmZXIsIGludDMyX3QgKndpZHRoLCBpbnQzMl90ICpoZWlnaHQpIHsKKyAgICBjb25zdCB1aW50OF90ICpkYXRhID0gYnVmZmVyLT5kYXRhKCk7CisgICAgc2l6ZV90IHNpemUgPSBidWZmZXItPnNpemUoKTsKKworICAgIHNwPEFCdWZmZXI+IHNlcVBhcmFtU2V0ID0gRmluZE5BTChkYXRhLCBzaXplLCA3LCBOVUxMKTsKKyAgICBpZiAoc2VxUGFyYW1TZXQgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBGaW5kRGltZW5zaW9ucyhzZXFQYXJhbVNldCwgd2lkdGgsIGhlaWdodCk7CisKKyAgICBzaXplX3Qgc3RvcE9mZnNldDsKKyAgICBzcDxBQnVmZmVyPiBwaWNQYXJhbVNldCA9IEZpbmROQUwoZGF0YSwgc2l6ZSwgOCwgJnN0b3BPZmZzZXQpOworICAgIENIRUNLKHBpY1BhcmFtU2V0ICE9IE5VTEwpOworCisgICAgYnVmZmVyLT5zZXRSYW5nZShzdG9wT2Zmc2V0LCBzaXplIC0gc3RvcE9mZnNldCk7CisgICAgTE9HKElORk8pIDw8ICJidWZmZXIgaGFzICIgPDwgYnVmZmVyLT5zaXplKCkgPDwgIiBieXRlcyBsZWZ0LiI7CisKKyAgICBzaXplX3QgY3NkU2l6ZSA9CisgICAgICAgIDEgKyAzICsgMSArIDEKKyAgICAgICAgKyAyICogMSArIHNlcVBhcmFtU2V0LT5zaXplKCkKKyAgICAgICAgKyAxICsgMiAqIDEgKyBwaWNQYXJhbVNldC0+c2l6ZSgpOworCisgICAgc3A8QUJ1ZmZlcj4gY3NkID0gbmV3IEFCdWZmZXIoY3NkU2l6ZSk7CisgICAgdWludDhfdCAqb3V0ID0gY3NkLT5kYXRhKCk7CisKKyAgICAqb3V0KysgPSAweDAxOyAgLy8gY29uZmlndXJhdGlvblZlcnNpb24KKyAgICBtZW1jcHkob3V0LCBzZXFQYXJhbVNldC0+ZGF0YSgpICsgMSwgMyk7ICAvLyBwcm9maWxlL2xldmVsLi4uCisgICAgb3V0ICs9IDM7CisgICAgKm91dCsrID0gKDB4M2YgPDwgMikgfCAxOyAgLy8gbGVuZ3RoU2l6ZSA9PSAyIGJ5dGVzCisgICAgKm91dCsrID0gMHhlMCB8IDE7CisKKyAgICAqb3V0KysgPSBzZXFQYXJhbVNldC0+c2l6ZSgpID4+IDg7CisgICAgKm91dCsrID0gc2VxUGFyYW1TZXQtPnNpemUoKSAmIDB4ZmY7CisgICAgbWVtY3B5KG91dCwgc2VxUGFyYW1TZXQtPmRhdGEoKSwgc2VxUGFyYW1TZXQtPnNpemUoKSk7CisgICAgb3V0ICs9IHNlcVBhcmFtU2V0LT5zaXplKCk7CisKKyAgICAqb3V0KysgPSAxOworCisgICAgKm91dCsrID0gcGljUGFyYW1TZXQtPnNpemUoKSA+PiA4OworICAgICpvdXQrKyA9IHBpY1BhcmFtU2V0LT5zaXplKCkgJiAweGZmOworICAgIG1lbWNweShvdXQsIHBpY1BhcmFtU2V0LT5kYXRhKCksIHBpY1BhcmFtU2V0LT5zaXplKCkpOworCisgICAgcmV0dXJuIGNzZDsKK30KKworc3RhdGljIGJvb2wgZ2V0TmV4dE5BTFVuaXQoCisgICAgICAgIGNvbnN0IHVpbnQ4X3QgKipfZGF0YSwgc2l6ZV90ICpfc2l6ZSwKKyAgICAgICAgY29uc3QgdWludDhfdCAqKm5hbFN0YXJ0LCBzaXplX3QgKm5hbFNpemUpIHsKKyAgICBjb25zdCB1aW50OF90ICpkYXRhID0gKl9kYXRhOworICAgIHNpemVfdCBzaXplID0gKl9zaXplOworCisgICAgKm5hbFN0YXJ0ID0gTlVMTDsKKyAgICAqbmFsU2l6ZSA9IDA7CisKKyAgICBpZiAoc2l6ZSA9PSAwKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIENIRUNLX0xUKG9mZnNldCArIDIsIHNpemUpOworCisgICAgICAgIGlmICghbWVtY21wKCJceDAwXHgwMFx4MDEiLCAmZGF0YVtvZmZzZXRdLCAzKSkgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBDSEVDS19FUSgodW5zaWduZWQpZGF0YVtvZmZzZXRdLCAweDAwdSk7CisgICAgICAgICsrb2Zmc2V0OworICAgIH0KKworICAgIG9mZnNldCArPSAzOworICAgIHNpemVfdCBzdGFydE9mZnNldCA9IG9mZnNldDsKKworICAgIHdoaWxlIChvZmZzZXQgKyAyIDwgc2l6ZQorICAgICAgICAgICAgJiYgbWVtY21wKCJceDAwXHgwMFx4MDAiLCAmZGF0YVtvZmZzZXRdLCAzKQorICAgICAgICAgICAgJiYgbWVtY21wKCJceDAwXHgwMFx4MDEiLCAmZGF0YVtvZmZzZXRdLCAzKSkgeworICAgICAgICArK29mZnNldDsKKyAgICB9CisKKyAgICBpZiAob2Zmc2V0ICsgMiA+PSBzaXplKSB7CisgICAgICAgICpuYWxTdGFydCA9ICZkYXRhW3N0YXJ0T2Zmc2V0XTsKKyAgICAgICAgKm5hbFNpemUgPSBzaXplIC0gc3RhcnRPZmZzZXQ7CisKKyAgICAgICAgKl9kYXRhID0gTlVMTDsKKyAgICAgICAgKl9zaXplID0gMDsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBzaXplX3QgZW5kT2Zmc2V0ID0gb2Zmc2V0OworCisgICAgd2hpbGUgKG9mZnNldCArIDIgPCBzaXplICYmIG1lbWNtcCgiXHgwMFx4MDBceDAxIiwgJmRhdGFbb2Zmc2V0XSwgMykpIHsKKyAgICAgICAgQ0hFQ0tfRVEoKHVuc2lnbmVkKWRhdGFbb2Zmc2V0XSwgMHgwMHUpOworICAgICAgICArK29mZnNldDsKKyAgICB9CisKKyAgICBDSEVDS19MVChvZmZzZXQgKyAyLCBzaXplKTsKKworICAgICpuYWxTdGFydCA9ICZkYXRhW3N0YXJ0T2Zmc2V0XTsKKyAgICAqbmFsU2l6ZSA9IGVuZE9mZnNldCAtIHN0YXJ0T2Zmc2V0OworCisgICAgKl9kYXRhID0gJmRhdGFbb2Zmc2V0XTsKKyAgICAqX3NpemUgPSBzaXplIC0gb2Zmc2V0OworCisgICAgcmV0dXJuIHRydWU7Cit9CisKK3NwPEFCdWZmZXI+IE1ha2VDbGVhbkFWQ0RhdGEoY29uc3QgdWludDhfdCAqZGF0YSwgc2l6ZV90IHNpemUpIHsKKyAgICBjb25zdCB1aW50OF90ICp0bXBEYXRhID0gZGF0YTsKKyAgICBzaXplX3QgdG1wU2l6ZSA9IHNpemU7CisKKyAgICBzaXplX3QgdG90YWxTaXplID0gMDsKKyAgICBjb25zdCB1aW50OF90ICpuYWxTdGFydDsKKyAgICBzaXplX3QgbmFsU2l6ZTsKKyAgICB3aGlsZSAoZ2V0TmV4dE5BTFVuaXQoJnRtcERhdGEsICZ0bXBTaXplLCAmbmFsU3RhcnQsICZuYWxTaXplKSkgeworICAgICAgICB0b3RhbFNpemUgKz0gNCArIG5hbFNpemU7CisgICAgfQorCisgICAgc3A8QUJ1ZmZlcj4gYnVmZmVyID0gbmV3IEFCdWZmZXIodG90YWxTaXplKTsKKyAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKKyAgICB3aGlsZSAoZ2V0TmV4dE5BTFVuaXQoJmRhdGEsICZzaXplLCAmbmFsU3RhcnQsICZuYWxTaXplKSkgeworICAgICAgICBtZW1jcHkoYnVmZmVyLT5kYXRhKCkgKyBvZmZzZXQsICJceDAwXHgwMFx4MDBceDAxIiwgNCk7CisgICAgICAgIG1lbWNweShidWZmZXItPmRhdGEoKSArIG9mZnNldCArIDQsIG5hbFN0YXJ0LCBuYWxTaXplKTsKKworICAgICAgICBvZmZzZXQgKz0gNCArIG5hbFNpemU7CisgICAgfQorCisgICAgcmV0dXJuIGJ1ZmZlcjsKK30KKworc3RhdGljIHNwPEFCdWZmZXI+IEZpbmRNUEVHMkFEVFNDb25maWcoCisgICAgICAgIGNvbnN0IHNwPEFCdWZmZXI+ICZidWZmZXIsIGludDMyX3QgKnNhbXBsZVJhdGUsIGludDMyX3QgKmNoYW5uZWxDb3VudCkgeworICAgIEFCaXRSZWFkZXIgYnIoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKworICAgIENIRUNLX0VRKGJyLmdldEJpdHMoMTIpLCAweGZmZnUpOworICAgIENIRUNLX0VRKGJyLmdldEJpdHMoMSksIDB1KTsKKyAgICBDSEVDS19FUShici5nZXRCaXRzKDIpLCAwdSk7CisgICAgYnIuZ2V0Qml0cygxKTsgIC8vIHByb3RlY3Rpb25fYWJzZW50CisgICAgdW5zaWduZWQgcHJvZmlsZSA9IGJyLmdldEJpdHMoMik7CisgICAgTE9HKElORk8pIDw8ICJwcm9maWxlID0gIiA8PCBwcm9maWxlOworICAgIENIRUNLX05FKHByb2ZpbGUsIDN1KTsKKyAgICB1bnNpZ25lZCBzYW1wbGluZ19mcmVxX2luZGV4ID0gYnIuZ2V0Qml0cyg0KTsKKyAgICBici5nZXRCaXRzKDEpOyAgLy8gcHJpdmF0ZV9iaXQKKyAgICB1bnNpZ25lZCBjaGFubmVsX2NvbmZpZ3VyYXRpb24gPSBici5nZXRCaXRzKDMpOworICAgIENIRUNLX05FKGNoYW5uZWxfY29uZmlndXJhdGlvbiwgMHUpOworCisgICAgTE9HKElORk8pIDw8ICJzYW1wbGluZ19mcmVxX2luZGV4ID0gIiA8PCBzYW1wbGluZ19mcmVxX2luZGV4OworICAgIExPRyhJTkZPKSA8PCAiY2hhbm5lbF9jb25maWd1cmF0aW9uID0gIiA8PCBjaGFubmVsX2NvbmZpZ3VyYXRpb247CisKKyAgICBDSEVDS19MRShzYW1wbGluZ19mcmVxX2luZGV4LCAxMXUpOworICAgIHN0YXRpYyBjb25zdCBpbnQzMl90IGtTYW1wbGluZ0ZyZXFbXSA9IHsKKyAgICAgICAgOTYwMDAsIDg4MjAwLCA2NDAwMCwgNDgwMDAsIDQ0MTAwLCAzMjAwMCwgMjQwMDAsIDIyMDUwLAorICAgICAgICAxNjAwMCwgMTIwMDAsIDExMDI1LCA4MDAwCisgICAgfTsKKyAgICAqc2FtcGxlUmF0ZSA9IGtTYW1wbGluZ0ZyZXFbc2FtcGxpbmdfZnJlcV9pbmRleF07CisKKyAgICAqY2hhbm5lbENvdW50ID0gY2hhbm5lbF9jb25maWd1cmF0aW9uOworCisgICAgc3RhdGljIGNvbnN0IHVpbnQ4X3Qga1N0YXRpY0VTRFNbXSA9IHsKKyAgICAgICAgMHgwMywgMjIsCisgICAgICAgIDB4MDAsIDB4MDAsICAgICAvLyBFU19JRAorICAgICAgICAweDAwLCAgICAgICAgICAgLy8gc3RyZWFtRGVwZW5kZW5jZUZsYWcsIFVSTF9GbGFnLCBPQ1JzdHJlYW1GbGFnCisKKyAgICAgICAgMHgwNCwgMTcsCisgICAgICAgIDB4NDAsICAgICAgICAgICAgICAgICAgICAgICAvLyBBdWRpbyBJU08vSUVDIDE0NDk2LTMKKyAgICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKyAgICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKyAgICAgICAgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwKKworICAgICAgICAweDA1LCAyLAorICAgICAgICAvLyBBdWRpb1NwZWNpZmljSW5mbyBmb2xsb3dzCisKKyAgICAgICAgLy8gb29vbyBvZmZmIGZjY2MgYzAwMAorICAgICAgICAvLyBvIC0gYXVkaW9PYmplY3RUeXBlCisgICAgICAgIC8vIGYgLSBzYW1wbGluZ0ZyZXFJbmRleAorICAgICAgICAvLyBjIC0gY2hhbm5lbENvbmZpZworICAgIH07CisgICAgc3A8QUJ1ZmZlcj4gY3NkID0gbmV3IEFCdWZmZXIoc2l6ZW9mKGtTdGF0aWNFU0RTKSArIDIpOworICAgIG1lbWNweShjc2QtPmRhdGEoKSwga1N0YXRpY0VTRFMsIHNpemVvZihrU3RhdGljRVNEUykpOworCisgICAgY3NkLT5kYXRhKClbc2l6ZW9mKGtTdGF0aWNFU0RTKV0gPQorICAgICAgICAoKHByb2ZpbGUgKyAxKSA8PCAzKSB8IChzYW1wbGluZ19mcmVxX2luZGV4ID4+IDEpOworCisgICAgY3NkLT5kYXRhKClbc2l6ZW9mKGtTdGF0aWNFU0RTKSArIDFdID0KKyAgICAgICAgKChzYW1wbGluZ19mcmVxX2luZGV4IDw8IDcpICYgMHg4MCkgfCAoY2hhbm5lbF9jb25maWd1cmF0aW9uIDw8IDMpOworCisgICAgaGV4ZHVtcChjc2QtPmRhdGEoKSwgY3NkLT5zaXplKCkpOworICAgIHJldHVybiBjc2Q7Cit9CisKK3ZvaWQgQVRTUGFyc2VyOjpTdHJlYW06Om9uUGF5bG9hZERhdGEoCisgICAgICAgIHVuc2lnbmVkIFBUU19EVFNfZmxhZ3MsIHVpbnQ2NF90IFBUUywgdWludDY0X3QgRFRTLAorICAgICAgICBjb25zdCB1aW50OF90ICpkYXRhLCBzaXplX3Qgc2l6ZSkgeworICAgIExPRyhWRVJCT1NFKSA8PCAib25QYXlsb2FkRGF0YSBtU3RyZWFtVHlwZT0iCisgICAgICAgICAgICAgICAgIDw8IFN0cmluZ1ByaW50ZigiMHglMDJ4IiwgbVN0cmVhbVR5cGUpOworCisgICAgc3A8QUJ1ZmZlcj4gYnVmZmVyOworCisgICAgaWYgKG1TdHJlYW1UeXBlID09IDB4MWIpIHsKKyAgICAgICAgYnVmZmVyID0gTWFrZUNsZWFuQVZDRGF0YShkYXRhLCBzaXplKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBoZXhkdW1wKGRhdGEsIHNpemUpOworCisgICAgICAgIGJ1ZmZlciA9IG5ldyBBQnVmZmVyKHNpemUpOworICAgICAgICBtZW1jcHkoYnVmZmVyLT5kYXRhKCksIGRhdGEsIHNpemUpOworICAgIH0KKworICAgIGlmIChtU291cmNlID09IE5VTEwpIHsKKyAgICAgICAgc3A8TWV0YURhdGE+IG1ldGEgPSBuZXcgTWV0YURhdGE7CisKKyAgICAgICAgaWYgKG1TdHJlYW1UeXBlID09IDB4MWIpIHsKKyAgICAgICAgICAgIG1ldGEtPnNldENTdHJpbmcoa0tleU1JTUVUeXBlLCBNRURJQV9NSU1FVFlQRV9WSURFT19BVkMpOworCisgICAgICAgICAgICBpbnQzMl90IHdpZHRoLCBoZWlnaHQ7CisgICAgICAgICAgICBzcDxBQnVmZmVyPiBjc2QgPSBNYWtlQVZDQ29kZWNTcGVjaWZpY0RhdGEoYnVmZmVyLCAmd2lkdGgsICZoZWlnaHQpOworCisgICAgICAgICAgICBpZiAoY3NkID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1ldGEtPnNldERhdGEoa0tleUFWQ0MsIDAsIGNzZC0+ZGF0YSgpLCBjc2QtPnNpemUoKSk7CisgICAgICAgICAgICBtZXRhLT5zZXRJbnQzMihrS2V5V2lkdGgsIHdpZHRoKTsKKyAgICAgICAgICAgIG1ldGEtPnNldEludDMyKGtLZXlIZWlnaHQsIGhlaWdodCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBDSEVDS19FUShtU3RyZWFtVHlwZSwgMHgwZnUpOworCisgICAgICAgICAgICBtZXRhLT5zZXRDU3RyaW5nKGtLZXlNSU1FVHlwZSwgTUVESUFfTUlNRVRZUEVfQVVESU9fQUFDKTsKKworICAgICAgICAgICAgaW50MzJfdCBzYW1wbGVSYXRlLCBjaGFubmVsQ291bnQ7CisgICAgICAgICAgICBzcDxBQnVmZmVyPiBjc2QgPQorICAgICAgICAgICAgICAgIEZpbmRNUEVHMkFEVFNDb25maWcoYnVmZmVyLCAmc2FtcGxlUmF0ZSwgJmNoYW5uZWxDb3VudCk7CisKKyAgICAgICAgICAgIExPRyhJTkZPKSA8PCAic2FtcGxlUmF0ZSA9ICIgPDwgc2FtcGxlUmF0ZTsKKyAgICAgICAgICAgIExPRyhJTkZPKSA8PCAiY2hhbm5lbENvdW50ID0gIiA8PCBjaGFubmVsQ291bnQ7CisKKyAgICAgICAgICAgIG1ldGEtPnNldEludDMyKGtLZXlTYW1wbGVSYXRlLCBzYW1wbGVSYXRlKTsKKyAgICAgICAgICAgIG1ldGEtPnNldEludDMyKGtLZXlDaGFubmVsQ291bnQsIGNoYW5uZWxDb3VudCk7CisKKyAgICAgICAgICAgIG1ldGEtPnNldERhdGEoa0tleUVTRFMsIDAsIGNzZC0+ZGF0YSgpLCBjc2QtPnNpemUoKSk7CisgICAgICAgIH0KKworICAgICAgICBMT0coSU5GTykgPDwgImNyZWF0ZWQgc291cmNlISI7CisgICAgICAgIG1Tb3VyY2UgPSBuZXcgQW5vdGhlclBhY2tldFNvdXJjZShtZXRhKTsKKworICAgICAgICAvLyBmYWxsIHRocm91Z2gKKyAgICB9CisKKyAgICBDSEVDSyhQVFNfRFRTX2ZsYWdzID09IDIgfHwgUFRTX0RUU19mbGFncyA9PSAzKTsKKyAgICBidWZmZXItPm1ldGEoKS0+c2V0SW50NjQoInRpbWUiLCAoUFRTICogMTAwKSAvIDkpOworCisgICAgaWYgKG1TdHJlYW1UeXBlID09IDB4MGYpIHsKKyAgICAgICAgLy8gV0hZPz8/CisgICAgICAgIGJ1ZmZlci0+c2V0UmFuZ2UoNywgYnVmZmVyLT5zaXplKCkgLSA3KTsKKyAgICB9CisKKyAgICBtU291cmNlLT5xdWV1ZUFjY2Vzc1VuaXQoYnVmZmVyKTsKK30KKworc3A8TWVkaWFTb3VyY2U+IEFUU1BhcnNlcjo6U3RyZWFtOjpnZXRTb3VyY2UoU291cmNlVHlwZSB0eXBlKSB7CisgICAgaWYgKCh0eXBlID09IEFWQ19WSURFTyAmJiBtU3RyZWFtVHlwZSA9PSAweDFiKQorICAgICAgICB8fCAodHlwZSA9PSBNUEVHMkFEVFNfQVVESU8gJiYgbVN0cmVhbVR5cGUgPT0gMHgwZikpIHsKKyAgICAgICAgcmV0dXJuIG1Tb3VyY2U7CisgICAgfQorCisgICAgcmV0dXJuIE5VTEw7Cit9CisKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK0FUU1BhcnNlcjo6QVRTUGFyc2VyKCkgeworfQorCitBVFNQYXJzZXI6On5BVFNQYXJzZXIoKSB7Cit9CisKK3ZvaWQgQVRTUGFyc2VyOjpmZWVkVFNQYWNrZXQoY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUpIHsKKyAgICBDSEVDS19FUShzaXplLCBrVFNQYWNrZXRTaXplKTsKKworICAgIEFCaXRSZWFkZXIgYnIoKGNvbnN0IHVpbnQ4X3QgKilkYXRhLCBrVFNQYWNrZXRTaXplKTsKKyAgICBwYXJzZVRTKCZicik7Cit9CisKK3ZvaWQgQVRTUGFyc2VyOjpwYXJzZVByb2dyYW1Bc3NvY2lhdGlvblRhYmxlKEFCaXRSZWFkZXIgKmJyKSB7CisgICAgdW5zaWduZWQgdGFibGVfaWQgPSBici0+Z2V0Qml0cyg4KTsKKyAgICBMT0coVkVSQk9TRSkgPDwgIiAgdGFibGVfaWQgPSAiIDw8IHRhYmxlX2lkOworICAgIENIRUNLX0VRKHRhYmxlX2lkLCAweDAwdSk7CisKKyAgICB1bnNpZ25lZCBzZWN0aW9uX3N5bnRheF9pbmRpY3RvciA9IGJyLT5nZXRCaXRzKDEpOworICAgIExPRyhWRVJCT1NFKSA8PCAiICBzZWN0aW9uX3N5bnRheF9pbmRpY3RvciA9ICIgPDwgc2VjdGlvbl9zeW50YXhfaW5kaWN0b3I7CisgICAgQ0hFQ0tfRVEoc2VjdGlvbl9zeW50YXhfaW5kaWN0b3IsIDF1KTsKKworICAgIENIRUNLX0VRKGJyLT5nZXRCaXRzKDEpLCAwdSk7CisgICAgTE9HKFZFUkJPU0UpIDw8ICIgIHJlc2VydmVkID0gIiA8PCBici0+Z2V0Qml0cygyKTsKKworICAgIHVuc2lnbmVkIHNlY3Rpb25fbGVuZ3RoID0gYnItPmdldEJpdHMoMTIpOworICAgIExPRyhWRVJCT1NFKSA8PCAiICBzZWN0aW9uX2xlbmd0aCA9ICIgPDwgc2VjdGlvbl9sZW5ndGg7CisgICAgQ0hFQ0soKHNlY3Rpb25fbGVuZ3RoICYgMHhjMDApID09IDApOworCisgICAgTE9HKFZFUkJPU0UpIDw8ICIgIHRyYW5zcG9ydF9zdHJlYW1faWQgPSAiIDw8IGJyLT5nZXRCaXRzKDE2KTsKKyAgICBMT0coVkVSQk9TRSkgPDwgIiAgcmVzZXJ2ZWQgPSAiIDw8IGJyLT5nZXRCaXRzKDIpOworICAgIExPRyhWRVJCT1NFKSA8PCAiICB2ZXJzaW9uX251bWJlciA9ICIgPDwgYnItPmdldEJpdHMoNSk7CisgICAgTE9HKFZFUkJPU0UpIDw8ICIgIGN1cnJlbnRfbmV4dF9pbmRpY2F0b3IgPSAiIDw8IGJyLT5nZXRCaXRzKDEpOworICAgIExPRyhWRVJCT1NFKSA8PCAiICBzZWN0aW9uX251bWJlciA9ICIgPDwgYnItPmdldEJpdHMoOCk7CisgICAgTE9HKFZFUkJPU0UpIDw8ICIgIGxhc3Rfc2VjdGlvbl9udW1iZXIgPSAiIDw8IGJyLT5nZXRCaXRzKDgpOworCisgICAgc2l6ZV90IG51bVByb2dyYW1CeXRlcyA9IChzZWN0aW9uX2xlbmd0aCAtIDUgLyogaGVhZGVyICovIC0gNCAvKiBjcmMgKi8pOworICAgIENIRUNLX0VRKChudW1Qcm9ncmFtQnl0ZXMgJSA0KSwgMHUpOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1Qcm9ncmFtQnl0ZXMgLyA0OyArK2kpIHsKKyAgICAgICAgdW5zaWduZWQgcHJvZ3JhbV9udW1iZXIgPSBici0+Z2V0Qml0cygxNik7CisgICAgICAgIExPRyhWRVJCT1NFKSA8PCAiICAgIHByb2dyYW1fbnVtYmVyID0gIiA8PCBwcm9ncmFtX251bWJlcjsKKworICAgICAgICBMT0coVkVSQk9TRSkgPDwgIiAgICByZXNlcnZlZCA9ICIgPDwgYnItPmdldEJpdHMoMyk7CisKKyAgICAgICAgaWYgKHByb2dyYW1fbnVtYmVyID09IDApIHsKKyAgICAgICAgICAgIExPRyhWRVJCT1NFKSA8PCAiICAgIG5ldHdvcmtfUElEID0gIgorICAgICAgICAgICAgICAgICAgICAgIDw8IFN0cmluZ1ByaW50ZigiMHglMDR4IiwgYnItPmdldEJpdHMoMTMpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHVuc2lnbmVkIHByb2dyYW1NYXBQSUQgPSBici0+Z2V0Qml0cygxMyk7CisKKyAgICAgICAgICAgIExPRyhWRVJCT1NFKSA8PCAiICAgIHByb2dyYW1fbWFwX1BJRCA9ICIKKyAgICAgICAgICAgICAgICAgICAgICA8PCBTdHJpbmdQcmludGYoIjB4JTA0eCIsIHByb2dyYW1NYXBQSUQpOworCisgICAgICAgICAgICBtUHJvZ3JhbXMucHVzaChuZXcgUHJvZ3JhbShwcm9ncmFtTWFwUElEKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBMT0coVkVSQk9TRSkgPDwgIiAgQ1JDID0gIiA8PCBTdHJpbmdQcmludGYoIjB4JTA4eCIsIGJyLT5nZXRCaXRzKDMyKSk7Cit9CisKK3ZvaWQgQVRTUGFyc2VyOjpwYXJzZVBJRCgKKyAgICAgICAgQUJpdFJlYWRlciAqYnIsIHVuc2lnbmVkIFBJRCwKKyAgICAgICAgdW5zaWduZWQgcGF5bG9hZF91bml0X3N0YXJ0X2luZGljYXRvcikgeworICAgIGlmIChQSUQgPT0gMCkgeworICAgICAgICBpZiAocGF5bG9hZF91bml0X3N0YXJ0X2luZGljYXRvcikgeworICAgICAgICAgICAgdW5zaWduZWQgc2tpcCA9IGJyLT5nZXRCaXRzKDgpOworICAgICAgICAgICAgYnItPnNraXBCaXRzKHNraXAgKiA4KTsKKyAgICAgICAgfQorICAgICAgICBwYXJzZVByb2dyYW1Bc3NvY2lhdGlvblRhYmxlKGJyKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGJvb2wgaGFuZGxlZCA9IGZhbHNlOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbVByb2dyYW1zLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChtUHJvZ3JhbXMuZWRpdEl0ZW1BdChpKS0+cGFyc2VQSUQoCisgICAgICAgICAgICAgICAgICAgIFBJRCwgcGF5bG9hZF91bml0X3N0YXJ0X2luZGljYXRvciwgYnIpKSB7CisgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKCFoYW5kbGVkKSB7CisgICAgICAgIExPRyhXQVJOSU5HKSA8PCAiUElEICIgPDwgU3RyaW5nUHJpbnRmKCIweCUwNHgiLCBQSUQpCisgICAgICAgICAgICAgICAgICAgICA8PCAiIG5vdCBoYW5kbGVkLiI7CisgICAgfQorfQorCit2b2lkIEFUU1BhcnNlcjo6cGFyc2VBZGFwdGF0aW9uRmllbGQoQUJpdFJlYWRlciAqYnIpIHsKKyAgICB1bnNpZ25lZCBhZGFwdGF0aW9uX2ZpZWxkX2xlbmd0aCA9IGJyLT5nZXRCaXRzKDgpOworICAgIGlmIChhZGFwdGF0aW9uX2ZpZWxkX2xlbmd0aCA+IDApIHsKKyAgICAgICAgYnItPnNraXBCaXRzKGFkYXB0YXRpb25fZmllbGRfbGVuZ3RoICogOCk7ICAvLyBYWFgKKyAgICB9Cit9CisKK3ZvaWQgQVRTUGFyc2VyOjpwYXJzZVRTKEFCaXRSZWFkZXIgKmJyKSB7CisgICAgTE9HKFZFUkJPU0UpIDw8ICItLS0iOworCisgICAgdW5zaWduZWQgc3luY19ieXRlID0gYnItPmdldEJpdHMoOCk7CisgICAgQ0hFQ0tfRVEoc3luY19ieXRlLCAweDQ3dSk7CisKKyAgICBMT0coVkVSQk9TRSkgPDwgInRyYW5zcG9ydF9lcnJvcl9pbmRpY2F0b3IgPSAiIDw8IGJyLT5nZXRCaXRzKDEpOworCisgICAgdW5zaWduZWQgcGF5bG9hZF91bml0X3N0YXJ0X2luZGljYXRvciA9IGJyLT5nZXRCaXRzKDEpOworICAgIExPRyhWRVJCT1NFKSA8PCAicGF5bG9hZF91bml0X3N0YXJ0X2luZGljYXRvciA9ICIKKyAgICAgICAgICAgICAgICAgPDwgcGF5bG9hZF91bml0X3N0YXJ0X2luZGljYXRvcjsKKworICAgIExPRyhWRVJCT1NFKSA8PCAidHJhbnNwb3J0X3ByaW9yaXR5ID0gIiA8PCBici0+Z2V0Qml0cygxKTsKKworICAgIHVuc2lnbmVkIFBJRCA9IGJyLT5nZXRCaXRzKDEzKTsKKyAgICBMT0coVkVSQk9TRSkgPDwgIlBJRCA9ICIgPDwgU3RyaW5nUHJpbnRmKCIweCUwNHgiLCBQSUQpOworCisgICAgTE9HKFZFUkJPU0UpIDw8ICJ0cmFuc3BvcnRfc2NyYW1ibGluZ19jb250cm9sID0gIiA8PCBici0+Z2V0Qml0cygyKTsKKworICAgIHVuc2lnbmVkIGFkYXB0YXRpb25fZmllbGRfY29udHJvbCA9IGJyLT5nZXRCaXRzKDIpOworICAgIExPRyhWRVJCT1NFKSA8PCAiYWRhcHRhdGlvbl9maWVsZF9jb250cm9sID0gIiA8PCBhZGFwdGF0aW9uX2ZpZWxkX2NvbnRyb2w7CisKKyAgICBMT0coVkVSQk9TRSkgPDwgImNvbnRpbnVpdHlfY291bnRlciA9ICIgPDwgYnItPmdldEJpdHMoNCk7CisKKyAgICBpZiAoYWRhcHRhdGlvbl9maWVsZF9jb250cm9sID09IDIgfHwgYWRhcHRhdGlvbl9maWVsZF9jb250cm9sID09IDMpIHsKKyAgICAgICAgcGFyc2VBZGFwdGF0aW9uRmllbGQoYnIpOworICAgIH0KKworICAgIGlmIChhZGFwdGF0aW9uX2ZpZWxkX2NvbnRyb2wgPT0gMSB8fCBhZGFwdGF0aW9uX2ZpZWxkX2NvbnRyb2wgPT0gMykgeworICAgICAgICBwYXJzZVBJRChiciwgUElELCBwYXlsb2FkX3VuaXRfc3RhcnRfaW5kaWNhdG9yKTsKKyAgICB9Cit9CisKK3NwPE1lZGlhU291cmNlPiBBVFNQYXJzZXI6OmdldFNvdXJjZShTb3VyY2VUeXBlIHR5cGUpIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1Qcm9ncmFtcy5zaXplKCk7ICsraSkgeworICAgICAgICBzcDxNZWRpYVNvdXJjZT4gc291cmNlID0gbVByb2dyYW1zLmVkaXRJdGVtQXQoaSktPmdldFNvdXJjZSh0eXBlKTsKKworICAgICAgICBpZiAoc291cmNlICE9IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBzb3VyY2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gTlVMTDsKK30KKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L21wZWcydHMvQVRTUGFyc2VyLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9tcGVnMnRzL0FUU1BhcnNlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlMjJlN2IKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9tcGVnMnRzL0FUU1BhcnNlci5oCkBAIC0wLDAgKzEsNjggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIEFfVFNfUEFSU0VSX0hfCisKKyNkZWZpbmUgQV9UU19QQVJTRVJfSF8KKworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorCisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BQmFzZS5oPgorI2luY2x1ZGUgPHV0aWxzL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHV0aWxzL1JlZkJhc2UuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitzdHJ1Y3QgQUJpdFJlYWRlcjsKK3N0cnVjdCBNZWRpYVNvdXJjZTsKKworc3RydWN0IEFUU1BhcnNlciA6IHB1YmxpYyBSZWZCYXNlIHsKKyAgICBBVFNQYXJzZXIoKTsKKworICAgIHZvaWQgZmVlZFRTUGFja2V0KGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBzaXplKTsKKworICAgIGVudW0gU291cmNlVHlwZSB7CisgICAgICAgIEFWQ19WSURFTywKKyAgICAgICAgTVBFRzJBRFRTX0FVRElPCisgICAgfTsKKyAgICBzcDxNZWRpYVNvdXJjZT4gZ2V0U291cmNlKFNvdXJjZVR5cGUgdHlwZSk7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5BVFNQYXJzZXIoKTsKKworcHJpdmF0ZToKKyAgICBzdHJ1Y3QgUHJvZ3JhbTsKKyAgICBzdHJ1Y3QgU3RyZWFtOworCisgICAgVmVjdG9yPHNwPFByb2dyYW0+ID4gbVByb2dyYW1zOworCisgICAgdm9pZCBwYXJzZVByb2dyYW1Bc3NvY2lhdGlvblRhYmxlKEFCaXRSZWFkZXIgKmJyKTsKKyAgICB2b2lkIHBhcnNlUHJvZ3JhbU1hcChBQml0UmVhZGVyICpicik7CisgICAgdm9pZCBwYXJzZVBFUyhBQml0UmVhZGVyICpicik7CisKKyAgICB2b2lkIHBhcnNlUElEKAorICAgICAgICBBQml0UmVhZGVyICpiciwgdW5zaWduZWQgUElELAorICAgICAgICB1bnNpZ25lZCBwYXlsb2FkX3VuaXRfc3RhcnRfaW5kaWNhdG9yKTsKKworICAgIHZvaWQgcGFyc2VBZGFwdGF0aW9uRmllbGQoQUJpdFJlYWRlciAqYnIpOworICAgIHZvaWQgcGFyc2VUUyhBQml0UmVhZGVyICpicik7CisKKyAgICBESVNBTExPV19FVklMX0NPTlNUUlVDVE9SUyhBVFNQYXJzZXIpOworfTsKKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKKworI2VuZGlmICAvLyBBX1RTX1BBUlNFUl9IXwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvbXBlZzJ0cy9BbmRyb2lkLm1rIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvbXBlZzJ0cy9BbmRyb2lkLm1rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2NzcyZWIKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9tcGVnMnRzL0FuZHJvaWQubWsKQEAgLTAsMCArMSwyMiBAQAorTE9DQUxfUEFUSDo9ICQoY2FsbCBteS1kaXIpCisKK2luY2x1ZGUgJChDTEVBUl9WQVJTKQorCitMT0NBTF9TUkNfRklMRVM6PSAgICAgICAgICAgICAgICAgXAorICAgICAgICBBQml0UmVhZGVyLmNwcCAgICAgICAgICAgIFwKKyAgICAgICAgQW5vdGhlclBhY2tldFNvdXJjZS5jcHAgICBcCisgICAgICAgIEFUU1BhcnNlci5jcHAgICAgICAgICAgICAgXAorICAgICAgICBNUEVHMlRTRXh0cmFjdG9yLmNwcCAgICAgIFwKKworTE9DQUxfQ19JTkNMVURFUzo9IFwKKwkkKEpOSV9IX0lOQ0xVREUpIFwKKwkkKFRPUCkvZXh0ZXJuYWwvb3BlbmNvcmUvZXh0ZXJuX2xpYnNfdjIva2hyb25vcy9vcGVubWF4L2luY2x1ZGUgXAorICAgICAgICAkKFRPUCkvZnJhbWV3b3Jrcy9iYXNlL21lZGlhL2xpYnN0YWdlZnJpZ2h0CisKK0xPQ0FMX01PRFVMRTo9IGxpYnN0YWdlZnJpZ2h0X21wZWcydHMKKworaWZlcSAoJChUQVJHRVRfQVJDSCksYXJtKQorICAgIExPQ0FMX0NGTEFHUyArPSAtV25vLXBzYWJpCitlbmRpZgorCitpbmNsdWRlICQoQlVJTERfU1RBVElDX0xJQlJBUlkpCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9tcGVnMnRzL0Fub3RoZXJQYWNrZXRTb3VyY2UuY3BwIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvbXBlZzJ0cy9Bbm90aGVyUGFja2V0U291cmNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZDUxMTc3Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvbXBlZzJ0cy9Bbm90aGVyUGFja2V0U291cmNlLmNwcApAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpbmNsdWRlICJBbm90aGVyUGFja2V0U291cmNlLmgiCisKKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FCdWZmZXIuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FEZWJ1Zy5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQU1lc3NhZ2UuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FTdHJpbmcuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL2hleGR1bXAuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYUJ1ZmZlci5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhRGVmcy5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01ldGFEYXRhLmg+CisjaW5jbHVkZSA8dXRpbHMvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworQW5vdGhlclBhY2tldFNvdXJjZTo6QW5vdGhlclBhY2tldFNvdXJjZShjb25zdCBzcDxNZXRhRGF0YT4gJm1ldGEpCisgICAgOiBtRm9ybWF0KG1ldGEpLAorICAgICAgbUVPU1Jlc3VsdChPSykgeworfQorCitBbm90aGVyUGFja2V0U291cmNlOjp+QW5vdGhlclBhY2tldFNvdXJjZSgpIHsKK30KKworc3RhdHVzX3QgQW5vdGhlclBhY2tldFNvdXJjZTo6c3RhcnQoTWV0YURhdGEgKnBhcmFtcykgeworICAgIHJldHVybiBPSzsKK30KKworc3RhdHVzX3QgQW5vdGhlclBhY2tldFNvdXJjZTo6c3RvcCgpIHsKKyAgICByZXR1cm4gT0s7Cit9CisKK3NwPE1ldGFEYXRhPiBBbm90aGVyUGFja2V0U291cmNlOjpnZXRGb3JtYXQoKSB7CisgICAgcmV0dXJuIG1Gb3JtYXQ7Cit9CisKK3N0YXR1c190IEFub3RoZXJQYWNrZXRTb3VyY2U6OnJlYWQoCisgICAgICAgIE1lZGlhQnVmZmVyICoqb3V0LCBjb25zdCBSZWFkT3B0aW9ucyAqKSB7CisgICAgKm91dCA9IE5VTEw7CisKKyAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobUxvY2spOworICAgIHdoaWxlIChtRU9TUmVzdWx0ID09IE9LICYmIG1CdWZmZXJzLmVtcHR5KCkpIHsKKyAgICAgICAgbUNvbmRpdGlvbi53YWl0KG1Mb2NrKTsKKyAgICB9CisKKyAgICBpZiAoIW1CdWZmZXJzLmVtcHR5KCkpIHsKKyAgICAgICAgY29uc3Qgc3A8QUJ1ZmZlcj4gYnVmZmVyID0gKm1CdWZmZXJzLmJlZ2luKCk7CisKKyAgICAgICAgdWludDY0X3QgdGltZVVzOworICAgICAgICBDSEVDSyhidWZmZXItPm1ldGEoKS0+ZmluZEludDY0KAorICAgICAgICAgICAgICAgICAgICAidGltZSIsIChpbnQ2NF90ICopJnRpbWVVcykpOworCisgICAgICAgIE1lZGlhQnVmZmVyICptZWRpYUJ1ZmZlciA9IG5ldyBNZWRpYUJ1ZmZlcihidWZmZXItPnNpemUoKSk7CisgICAgICAgIG1lZGlhQnVmZmVyLT5tZXRhX2RhdGEoKS0+c2V0SW50NjQoa0tleVRpbWUsIHRpbWVVcyk7CisKKyAgICAgICAgLy8gaGV4ZHVtcChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworCisgICAgICAgIG1lbWNweShtZWRpYUJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworICAgICAgICAqb3V0ID0gbWVkaWFCdWZmZXI7CisKKyAgICAgICAgbUJ1ZmZlcnMuZXJhc2UobUJ1ZmZlcnMuYmVnaW4oKSk7CisgICAgICAgIHJldHVybiBPSzsKKyAgICB9CisKKyAgICByZXR1cm4gbUVPU1Jlc3VsdDsKK30KKwordm9pZCBBbm90aGVyUGFja2V0U291cmNlOjpxdWV1ZUFjY2Vzc1VuaXQoY29uc3Qgc3A8QUJ1ZmZlcj4gJmJ1ZmZlcikgeworICAgIGludDMyX3QgZGFtYWdlZDsKKyAgICBpZiAoYnVmZmVyLT5tZXRhKCktPmZpbmRJbnQzMigiZGFtYWdlZCIsICZkYW1hZ2VkKSAmJiBkYW1hZ2VkKSB7CisgICAgICAgIC8vIExPRyhWRVJCT1NFKSA8PCAiZGlzY2FyZGluZyBkYW1hZ2VkIEFVIjsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIE11dGV4OjpBdXRvbG9jayBhdXRvTG9jayhtTG9jayk7CisgICAgbUJ1ZmZlcnMucHVzaF9iYWNrKGJ1ZmZlcik7CisgICAgbUNvbmRpdGlvbi5zaWduYWwoKTsKK30KKwordm9pZCBBbm90aGVyUGFja2V0U291cmNlOjpzaWduYWxFT1Moc3RhdHVzX3QgcmVzdWx0KSB7CisgICAgQ0hFQ0socmVzdWx0ICE9IE9LKTsKKworICAgIE11dGV4OjpBdXRvbG9jayBhdXRvTG9jayhtTG9jayk7CisgICAgbUVPU1Jlc3VsdCA9IHJlc3VsdDsKKyAgICBtQ29uZGl0aW9uLnNpZ25hbCgpOworfQorCitib29sIEFub3RoZXJQYWNrZXRTb3VyY2U6Omhhc0J1ZmZlckF2YWlsYWJsZShzdGF0dXNfdCAqZmluYWxSZXN1bHQpIHsKKyAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobUxvY2spOworICAgIGlmICghbUJ1ZmZlcnMuZW1wdHkoKSkgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAqZmluYWxSZXN1bHQgPSBtRU9TUmVzdWx0OworICAgIHJldHVybiBmYWxzZTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L21wZWcydHMvQW5vdGhlclBhY2tldFNvdXJjZS5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvbXBlZzJ0cy9Bbm90aGVyUGFja2V0U291cmNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2U4M2QyMQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L21wZWcydHMvQW5vdGhlclBhY2tldFNvdXJjZS5oCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIEFOT1RIRVJfUEFDS0VUX1NPVVJDRV9IXworCisjZGVmaW5lIEFOT1RIRVJfUEFDS0VUX1NPVVJDRV9IXworCisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BQmFzZS5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhU291cmNlLmg+CisjaW5jbHVkZSA8dXRpbHMvdGhyZWFkcy5oPgorI2luY2x1ZGUgPHV0aWxzL0xpc3QuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitzdHJ1Y3QgQUJ1ZmZlcjsKKworc3RydWN0IEFub3RoZXJQYWNrZXRTb3VyY2UgOiBwdWJsaWMgTWVkaWFTb3VyY2UgeworICAgIEFub3RoZXJQYWNrZXRTb3VyY2UoY29uc3Qgc3A8TWV0YURhdGE+ICZtZXRhKTsKKworICAgIHZpcnR1YWwgc3RhdHVzX3Qgc3RhcnQoTWV0YURhdGEgKnBhcmFtcyA9IE5VTEwpOworICAgIHZpcnR1YWwgc3RhdHVzX3Qgc3RvcCgpOworICAgIHZpcnR1YWwgc3A8TWV0YURhdGE+IGdldEZvcm1hdCgpOworCisgICAgdmlydHVhbCBzdGF0dXNfdCByZWFkKAorICAgICAgICAgICAgTWVkaWFCdWZmZXIgKipidWZmZXIsIGNvbnN0IFJlYWRPcHRpb25zICpvcHRpb25zID0gTlVMTCk7CisKKyAgICBib29sIGhhc0J1ZmZlckF2YWlsYWJsZShzdGF0dXNfdCAqZmluYWxSZXN1bHQpOworCisgICAgdm9pZCBxdWV1ZUFjY2Vzc1VuaXQoY29uc3Qgc3A8QUJ1ZmZlcj4gJmJ1ZmZlcik7CisgICAgdm9pZCBzaWduYWxFT1Moc3RhdHVzX3QgcmVzdWx0KTsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfkFub3RoZXJQYWNrZXRTb3VyY2UoKTsKKworcHJpdmF0ZToKKyAgICBNdXRleCBtTG9jazsKKyAgICBDb25kaXRpb24gbUNvbmRpdGlvbjsKKworICAgIHNwPE1ldGFEYXRhPiBtRm9ybWF0OworICAgIExpc3Q8c3A8QUJ1ZmZlcj4gPiBtQnVmZmVyczsKKyAgICBzdGF0dXNfdCBtRU9TUmVzdWx0OworCisgICAgRElTQUxMT1dfRVZJTF9DT05TVFJVQ1RPUlMoQW5vdGhlclBhY2tldFNvdXJjZSk7Cit9OworCisKK30gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCisKKyNlbmRpZiAgLy8gQU5PVEhFUl9QQUNLRVRfU09VUkNFX0hfCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9tcGVnMnRzL01QRUcyVFNFeHRyYWN0b3IuY3BwIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvbXBlZzJ0cy9NUEVHMlRTRXh0cmFjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjg3Yzk1Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvbXBlZzJ0cy9NUEVHMlRTRXh0cmFjdG9yLmNwcApAQCAtMCwwICsxLDE5NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKy8vI2RlZmluZSBMT0dfTkRFQlVHIDAKKyNkZWZpbmUgTE9HX1RBRyAiTVBFRzJUU0V4dHJhY3RvciIKKyNpbmNsdWRlIDx1dGlscy9Mb2cuaD4KKworI2luY2x1ZGUgImluY2x1ZGUvTVBFRzJUU0V4dHJhY3Rvci5oIgorCisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvRGF0YVNvdXJjZS5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhRGVmcy5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhRXJyb3JzLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFTb3VyY2UuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZXRhRGF0YS5oPgorI2luY2x1ZGUgPHV0aWxzL1N0cmluZzguaD4KKworI2luY2x1ZGUgIkFub3RoZXJQYWNrZXRTb3VyY2UuaCIKKyNpbmNsdWRlICJBVFNQYXJzZXIuaCIKKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitzdHJ1Y3QgTVBFRzJUU1NvdXJjZSA6IHB1YmxpYyBNZWRpYVNvdXJjZSB7CisgICAgTVBFRzJUU1NvdXJjZSgKKyAgICAgICAgICAgIGNvbnN0IHNwPE1QRUcyVFNFeHRyYWN0b3I+ICZleHRyYWN0b3IsCisgICAgICAgICAgICBjb25zdCBzcDxBbm90aGVyUGFja2V0U291cmNlPiAmaW1wbCk7CisKKyAgICB2aXJ0dWFsIHN0YXR1c190IHN0YXJ0KE1ldGFEYXRhICpwYXJhbXMgPSBOVUxMKTsKKyAgICB2aXJ0dWFsIHN0YXR1c190IHN0b3AoKTsKKyAgICB2aXJ0dWFsIHNwPE1ldGFEYXRhPiBnZXRGb3JtYXQoKTsKKworICAgIHZpcnR1YWwgc3RhdHVzX3QgcmVhZCgKKyAgICAgICAgICAgIE1lZGlhQnVmZmVyICoqYnVmZmVyLCBjb25zdCBSZWFkT3B0aW9ucyAqb3B0aW9ucyA9IE5VTEwpOworCitwcml2YXRlOgorICAgIHNwPE1QRUcyVFNFeHRyYWN0b3I+IG1FeHRyYWN0b3I7CisgICAgc3A8QW5vdGhlclBhY2tldFNvdXJjZT4gbUltcGw7CisKKyAgICBESVNBTExPV19FVklMX0NPTlNUUlVDVE9SUyhNUEVHMlRTU291cmNlKTsKK307CisKK01QRUcyVFNTb3VyY2U6Ok1QRUcyVFNTb3VyY2UoCisgICAgICAgIGNvbnN0IHNwPE1QRUcyVFNFeHRyYWN0b3I+ICZleHRyYWN0b3IsCisgICAgICAgIGNvbnN0IHNwPEFub3RoZXJQYWNrZXRTb3VyY2U+ICZpbXBsKQorICAgIDogbUV4dHJhY3RvcihleHRyYWN0b3IpLAorICAgICAgbUltcGwoaW1wbCkgeworfQorCitzdGF0dXNfdCBNUEVHMlRTU291cmNlOjpzdGFydChNZXRhRGF0YSAqcGFyYW1zKSB7CisgICAgcmV0dXJuIG1JbXBsLT5zdGFydChwYXJhbXMpOworfQorCitzdGF0dXNfdCBNUEVHMlRTU291cmNlOjpzdG9wKCkgeworICAgIHJldHVybiBtSW1wbC0+c3RvcCgpOworfQorCitzcDxNZXRhRGF0YT4gTVBFRzJUU1NvdXJjZTo6Z2V0Rm9ybWF0KCkgeworICAgIHJldHVybiBtSW1wbC0+Z2V0Rm9ybWF0KCk7Cit9CisKK3N0YXR1c190IE1QRUcyVFNTb3VyY2U6OnJlYWQoCisgICAgICAgIE1lZGlhQnVmZmVyICoqb3V0LCBjb25zdCBSZWFkT3B0aW9ucyAqb3B0aW9ucykgeworICAgICpvdXQgPSBOVUxMOworCisgICAgc3RhdHVzX3QgZmluYWxSZXN1bHQ7CisgICAgd2hpbGUgKCFtSW1wbC0+aGFzQnVmZmVyQXZhaWxhYmxlKCZmaW5hbFJlc3VsdCkpIHsKKyAgICAgICAgaWYgKGZpbmFsUmVzdWx0ICE9IE9LKSB7CisgICAgICAgICAgICByZXR1cm4gRVJST1JfRU5EX09GX1NUUkVBTTsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXR1c190IGVyciA9IG1FeHRyYWN0b3ItPmZlZWRNb3JlKCk7CisgICAgICAgIGlmIChlcnIgIT0gT0spIHsKKyAgICAgICAgICAgIG1JbXBsLT5zaWduYWxFT1MoZXJyKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBtSW1wbC0+cmVhZChvdXQsIG9wdGlvbnMpOworfQorCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworCitNUEVHMlRTRXh0cmFjdG9yOjpNUEVHMlRTRXh0cmFjdG9yKGNvbnN0IHNwPERhdGFTb3VyY2U+ICZzb3VyY2UpCisgICAgOiBtRGF0YVNvdXJjZShzb3VyY2UpLAorICAgICAgbVBhcnNlcihuZXcgQVRTUGFyc2VyKSwKKyAgICAgIG1PZmZzZXQoMCkgeworICAgIGluaXQoKTsKK30KKworc2l6ZV90IE1QRUcyVFNFeHRyYWN0b3I6OmNvdW50VHJhY2tzKCkgeworICAgIHJldHVybiBtU291cmNlSW1wbHMuc2l6ZSgpOworfQorCitzcDxNZWRpYVNvdXJjZT4gTVBFRzJUU0V4dHJhY3Rvcjo6Z2V0VHJhY2soc2l6ZV90IGluZGV4KSB7CisgICAgaWYgKGluZGV4ID49IG1Tb3VyY2VJbXBscy5zaXplKCkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmV0dXJuIG5ldyBNUEVHMlRTU291cmNlKHRoaXMsIG1Tb3VyY2VJbXBscy5lZGl0SXRlbUF0KGluZGV4KSk7Cit9CisKK3NwPE1ldGFEYXRhPiBNUEVHMlRTRXh0cmFjdG9yOjpnZXRUcmFja01ldGFEYXRhKAorICAgICAgICBzaXplX3QgaW5kZXgsIHVpbnQzMl90IGZsYWdzKSB7CisgICAgcmV0dXJuIGluZGV4IDwgbVNvdXJjZUltcGxzLnNpemUoKQorICAgICAgICA/IG1Tb3VyY2VJbXBscy5lZGl0SXRlbUF0KGluZGV4KS0+Z2V0Rm9ybWF0KCkgOiBOVUxMOworfQorCitzcDxNZXRhRGF0YT4gTVBFRzJUU0V4dHJhY3Rvcjo6Z2V0TWV0YURhdGEoKSB7CisgICAgc3A8TWV0YURhdGE+IG1ldGEgPSBuZXcgTWV0YURhdGE7CisgICAgbWV0YS0+c2V0Q1N0cmluZyhrS2V5TUlNRVR5cGUsIE1FRElBX01JTUVUWVBFX0NPTlRBSU5FUl9NUEVHMlRTKTsKKworICAgIHJldHVybiBtZXRhOworfQorCit2b2lkIE1QRUcyVFNFeHRyYWN0b3I6OmluaXQoKSB7CisgICAgYm9vbCBoYXZlQXVkaW8gPSBmYWxzZTsKKyAgICBib29sIGhhdmVWaWRlbyA9IGZhbHNlOworCisgICAgd2hpbGUgKGZlZWRNb3JlKCkgPT0gT0spIHsKKyAgICAgICAgQVRTUGFyc2VyOjpTb3VyY2VUeXBlIHR5cGU7CisgICAgICAgIGlmIChoYXZlQXVkaW8gJiYgaGF2ZVZpZGVvKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBpZiAoaGF2ZVZpZGVvKSB7CisgICAgICAgICAgICB0eXBlID0gQVRTUGFyc2VyOjpNUEVHMkFEVFNfQVVESU87CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0eXBlID0gQVRTUGFyc2VyOjpBVkNfVklERU87CisgICAgICAgIH0KKyAgICAgICAgc3A8QW5vdGhlclBhY2tldFNvdXJjZT4gaW1wbCA9CisgICAgICAgICAgICAoQW5vdGhlclBhY2tldFNvdXJjZSAqKW1QYXJzZXItPmdldFNvdXJjZSh0eXBlKS5nZXQoKTsKKworICAgICAgICBpZiAoaW1wbCAhPSBOVUxMKSB7CisgICAgICAgICAgICBpZiAodHlwZSA9PSBBVFNQYXJzZXI6Ok1QRUcyQURUU19BVURJTykgeworICAgICAgICAgICAgICAgIGhhdmVBdWRpbyA9IHRydWU7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGhhdmVWaWRlbyA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtU291cmNlSW1wbHMucHVzaChpbXBsKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIExPR0koImhhdmVBdWRpbz0lZCwgaGF2ZVZpZGVvPSVkIiwgaGF2ZUF1ZGlvLCBoYXZlVmlkZW8pOworfQorCitzdGF0dXNfdCBNUEVHMlRTRXh0cmFjdG9yOjpmZWVkTW9yZSgpIHsKKyAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobUxvY2spOworCisgICAgc3RhdGljIGNvbnN0IHNpemVfdCBrVFNQYWNrZXRTaXplID0gMTg4OworCisgICAgdWludDhfdCBwYWNrZXRba1RTUGFja2V0U2l6ZV07CisgICAgc3NpemVfdCBuID0gbURhdGFTb3VyY2UtPnJlYWRBdChtT2Zmc2V0LCBwYWNrZXQsIGtUU1BhY2tldFNpemUpOworCisgICAgaWYgKG4gPCAoc3NpemVfdClrVFNQYWNrZXRTaXplKSB7CisgICAgICAgIHJldHVybiAobiA8IDApID8gKHN0YXR1c190KW4gOiBFUlJPUl9FTkRfT0ZfU1RSRUFNOworICAgIH0KKworICAgIG1PZmZzZXQgKz0ga1RTUGFja2V0U2l6ZTsKKyAgICBtUGFyc2VyLT5mZWVkVFNQYWNrZXQocGFja2V0LCBrVFNQYWNrZXRTaXplKTsKKworICAgIHJldHVybiBPSzsKK30KKworLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworYm9vbCBTbmlmZk1QRUcyVFMoCisgICAgICAgIGNvbnN0IHNwPERhdGFTb3VyY2U+ICZzb3VyY2UsIFN0cmluZzggKm1pbWVUeXBlLCBmbG9hdCAqY29uZmlkZW5jZSkgeworI2lmIDAKKyAgICBjaGFyIGhlYWRlcjsKKyAgICBpZiAoc291cmNlLT5yZWFkQXQoMCwgJmhlYWRlciwgMSkgIT0gMSB8fCBoZWFkZXIgIT0gMHg0NykgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgKmNvbmZpZGVuY2UgPSAwLjA1ZjsKKyAgICBtaW1lVHlwZS0+c2V0VG8oTUVESUFfTUlNRVRZUEVfQ09OVEFJTkVSX01QRUcyVFMpOworCisgICAgcmV0dXJuIHRydWU7CisjZWxzZQorICAgIC8vIEZvciBub3cgd2UncmUgZ29pbmcgdG8gbmV2ZXIgaWRlbnRpZnkgdGhpcyB0eXBlIG9mIHN0cmVhbSwgc2luY2Ugd2UnZAorICAgIC8vIGp1c3QgYmFzZSBvdXIgZGVjaXNpb24gb24gYSBzaW5nbGUgYnl0ZS4uLgorICAgIC8vIEluc3RlYWQgeW91IGNhbiBpbnN0YW50aWF0ZSBhbiBNUEVHMlRTRXh0cmFjdG9yIGJ5IGV4cGxpY2l0bHkgc3RhdGluZworICAgIC8vIGl0cyBwcm9wZXIgbWltZSB0eXBlIGluIHRoZSBjYWxsIHRvIE1lZGlhRXh0cmFjdG9yOjpDcmVhdGUoLi4uKS4KKyAgICByZXR1cm4gZmFsc2U7CisjZW5kaWYKK30KKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L29teC9PTVguY3BwIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvb214L09NWC5jcHAKaW5kZXggMTMyZTMxYi4uNmRlNzYxZiAxMDA2NDQKLS0tIGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvb214L09NWC5jcHAKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvb214L09NWC5jcHAKQEAgLTQzLDcgKzQzLDcgQEAKIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCiAKIHN0cnVjdCBPTVg6OkNhbGxiYWNrRGlzcGF0Y2hlciA6IHB1YmxpYyBSZWZCYXNlIHsKLSAgICBDYWxsYmFja0Rpc3BhdGNoZXIoT01YICpvd25lcik7CisgICAgQ2FsbGJhY2tEaXNwYXRjaGVyKE9NWE5vZGVJbnN0YW5jZSAqb3duZXIpOwogCiAgICAgdm9pZCBwb3N0KGNvbnN0IG9teF9tZXNzYWdlICZtc2cpOwogCkBAIC01Myw3ICs1Myw3IEBACiBwcml2YXRlOgogICAgIE11dGV4IG1Mb2NrOwogCi0gICAgT01YICptT3duZXI7CisgICAgT01YTm9kZUluc3RhbmNlICptT3duZXI7CiAgICAgYm9vbCBtRG9uZTsKICAgICBDb25kaXRpb24gbVF1ZXVlQ2hhbmdlZDsKICAgICBMaXN0PG9teF9tZXNzYWdlPiBtUXVldWU7CkBAIC02OSw3ICs2OSw3IEBACiAgICAgQ2FsbGJhY2tEaXNwYXRjaGVyICZvcGVyYXRvcj0oY29uc3QgQ2FsbGJhY2tEaXNwYXRjaGVyICYpOwogfTsKIAotT01YOjpDYWxsYmFja0Rpc3BhdGNoZXI6OkNhbGxiYWNrRGlzcGF0Y2hlcihPTVggKm93bmVyKQorT01YOjpDYWxsYmFja0Rpc3BhdGNoZXI6OkNhbGxiYWNrRGlzcGF0Y2hlcihPTVhOb2RlSW5zdGFuY2UgKm93bmVyKQogICAgIDogbU93bmVyKG93bmVyKSwKICAgICAgIG1Eb25lKGZhbHNlKSB7CiAgICAgcHRocmVhZF9hdHRyX3QgYXR0cjsKQEAgLTEwMSwxMiArMTAxLDExIEBACiB9CiAKIHZvaWQgT01YOjpDYWxsYmFja0Rpc3BhdGNoZXI6OmRpc3BhdGNoKGNvbnN0IG9teF9tZXNzYWdlICZtc2cpIHsKLSAgICBPTVhOb2RlSW5zdGFuY2UgKmluc3RhbmNlID0gbU93bmVyLT5maW5kSW5zdGFuY2UobXNnLm5vZGUpOwotICAgIGlmIChpbnN0YW5jZSA9PSBOVUxMKSB7CisgICAgaWYgKG1Pd25lciA9PSBOVUxMKSB7CiAgICAgICAgIExPR1YoIldvdWxkIGhhdmUgZGlzcGF0Y2hlZCBhIG1lc3NhZ2UgdG8gYSBub2RlIHRoYXQncyBhbHJlYWR5IGdvbmUuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaW5zdGFuY2UtPm9uTWVzc2FnZShtc2cpOworICAgIG1Pd25lci0+b25NZXNzYWdlKG1zZyk7CiB9CiAKIC8vIHN0YXRpYwpAQCAtMTQ1LDcgKzE0NCw2IEBACiAKIE9NWDo6T01YKCkKICAgICA6IG1NYXN0ZXIobmV3IE9NWE1hc3RlciksCi0gICAgICBtRGlzcGF0Y2hlcihuZXcgQ2FsbGJhY2tEaXNwYXRjaGVyKHRoaXMpKSwKICAgICAgIG1Ob2RlQ291bnRlcigwKSB7CiB9CiAKQEAgLTE2Niw2ICsxNjQsMTAgQEAKICAgICAgICAgaW5zdGFuY2UgPSBtTGl2ZU5vZGVzLmVkaXRWYWx1ZUF0KGluZGV4KTsKICAgICAgICAgbUxpdmVOb2Rlcy5yZW1vdmVJdGVtc0F0KGluZGV4KTsKIAorICAgICAgICBpbmRleCA9IG1EaXNwYXRjaGVycy5pbmRleE9mS2V5KGluc3RhbmNlLT5ub2RlSUQoKSk7CisgICAgICAgIENIRUNLKGluZGV4ID49IDApOworICAgICAgICBtRGlzcGF0Y2hlcnMucmVtb3ZlSXRlbXNBdChpbmRleCk7CisKICAgICAgICAgaW52YWxpZGF0ZU5vZGVJRF9sKGluc3RhbmNlLT5ub2RlSUQoKSk7CiAgICAgfQogCkBAIC0yMjYsNiArMjI4LDcgQEAKICAgICB9CiAKICAgICAqbm9kZSA9IG1ha2VOb2RlSUQoaW5zdGFuY2UpOworICAgIG1EaXNwYXRjaGVycy5hZGQoKm5vZGUsIG5ldyBDYWxsYmFja0Rpc3BhdGNoZXIoaW5zdGFuY2UpKTsKIAogICAgIGluc3RhbmNlLT5zZXRIYW5kbGUoKm5vZGUsIGhhbmRsZSk7CiAKQEAgLTI0MSw2ICsyNDQsMTEgQEAKICAgICBzc2l6ZV90IGluZGV4ID0gbUxpdmVOb2Rlcy5pbmRleE9mS2V5KGluc3RhbmNlLT5vYnNlcnZlcigpLT5hc0JpbmRlcigpKTsKICAgICBDSEVDSyhpbmRleCA+PSAwKTsKICAgICBtTGl2ZU5vZGVzLnJlbW92ZUl0ZW1zQXQoaW5kZXgpOworCisgICAgaW5kZXggPSBtRGlzcGF0Y2hlcnMuaW5kZXhPZktleShub2RlKTsKKyAgICBDSEVDSyhpbmRleCA+PSAwKTsKKyAgICBtRGlzcGF0Y2hlcnMucmVtb3ZlSXRlbXNBdChpbmRleCk7CisKICAgICBpbnN0YW5jZS0+b2JzZXJ2ZXIoKS0+YXNCaW5kZXIoKS0+dW5saW5rVG9EZWF0aCh0aGlzKTsKIAogICAgIHJldHVybiBpbnN0YW5jZS0+ZnJlZU5vZGUobU1hc3Rlcik7CkBAIC0zNDEsNyArMzQ5LDcgQEAKICAgICBtc2cudS5ldmVudF9kYXRhLmRhdGExID0gbkRhdGExOwogICAgIG1zZy51LmV2ZW50X2RhdGEuZGF0YTIgPSBuRGF0YTI7CiAKLSAgICBtRGlzcGF0Y2hlci0+cG9zdChtc2cpOworICAgIGZpbmREaXNwYXRjaGVyKG5vZGUpLT5wb3N0KG1zZyk7CiAKICAgICByZXR1cm4gT01YX0Vycm9yTm9uZTsKIH0KQEAgLTM1NSw3ICszNjMsNyBAQAogICAgIG1zZy5ub2RlID0gbm9kZTsKICAgICBtc2cudS5idWZmZXJfZGF0YS5idWZmZXIgPSBwQnVmZmVyOwogCi0gICAgbURpc3BhdGNoZXItPnBvc3QobXNnKTsKKyAgICBmaW5kRGlzcGF0Y2hlcihub2RlKS0+cG9zdChtc2cpOwogCiAgICAgcmV0dXJuIE9NWF9FcnJvck5vbmU7CiB9CkBAIC0zNzUsNyArMzgzLDcgQEAKICAgICBtc2cudS5leHRlbmRlZF9idWZmZXJfZGF0YS5wbGF0Zm9ybV9wcml2YXRlID0gcEJ1ZmZlci0+cFBsYXRmb3JtUHJpdmF0ZTsKICAgICBtc2cudS5leHRlbmRlZF9idWZmZXJfZGF0YS5kYXRhX3B0ciA9IHBCdWZmZXItPnBCdWZmZXI7CiAKLSAgICBtRGlzcGF0Y2hlci0+cG9zdChtc2cpOworICAgIGZpbmREaXNwYXRjaGVyKG5vZGUpLT5wb3N0KG1zZyk7CiAKICAgICByZXR1cm4gT01YX0Vycm9yTm9uZTsKIH0KQEAgLTM5Nyw2ICs0MDUsMTQgQEAKICAgICByZXR1cm4gaW5kZXggPCAwID8gTlVMTCA6IG1Ob2RlSURUb0luc3RhbmNlLnZhbHVlQXQoaW5kZXgpOwogfQogCitzcDxPTVg6OkNhbGxiYWNrRGlzcGF0Y2hlcj4gT01YOjpmaW5kRGlzcGF0Y2hlcihub2RlX2lkIG5vZGUpIHsKKyAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobUxvY2spOworCisgICAgc3NpemVfdCBpbmRleCA9IG1EaXNwYXRjaGVycy5pbmRleE9mS2V5KG5vZGUpOworCisgICAgcmV0dXJuIGluZGV4IDwgMCA/IE5VTEwgOiBtRGlzcGF0Y2hlcnMudmFsdWVBdChpbmRleCk7Cit9CisKIHZvaWQgT01YOjppbnZhbGlkYXRlTm9kZUlEKG5vZGVfaWQgbm9kZSkgewogICAgIE11dGV4OjpBdXRvbG9jayBhdXRvTG9jayhtTG9jayk7CiAgICAgaW52YWxpZGF0ZU5vZGVJRF9sKG5vZGUpOwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvb214L09NWE1hc3Rlci5jcHAgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9vbXgvT01YTWFzdGVyLmNwcAppbmRleCA5YTQ1YmVhLi41NmIxNjlhIDEwMDY0NAotLS0gYS9tZWRpYS9saWJzdGFnZWZyaWdodC9vbXgvT01YTWFzdGVyLmNwcAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9vbXgvT01YTWFzdGVyLmNwcApAQCAtMTQsNiArMTQsMTAgQEAKICAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogICovCiAKKy8vI2RlZmluZSBMT0dfTkRFQlVHIDAKKyNkZWZpbmUgTE9HX1RBRyAiT01YTWFzdGVyIgorI2luY2x1ZGUgPHV0aWxzL0xvZy5oPgorCiAjaW5jbHVkZSAiT01YTWFzdGVyLmgiCiAKICNpbmNsdWRlIDxkbGZjbi5oPgpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvb214L09NWE5vZGVJbnN0YW5jZS5jcHAgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9vbXgvT01YTm9kZUluc3RhbmNlLmNwcAppbmRleCBjMWEwMTBjLi41ZGI1MTZlIDEwMDY0NAotLS0gYS9tZWRpYS9saWJzdGFnZWZyaWdodC9vbXgvT01YTm9kZUluc3RhbmNlLmNwcAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9vbXgvT01YTm9kZUluc3RhbmNlLmNwcApAQCAtMjY0LDYgKzI2NCw4IEBACiAgICAgICAgIHJldHVybiBVTktOT1dOX0VSUk9SOwogICAgIH0KIAorICAgIENIRUNLX0VRKGhlYWRlci0+cEFwcFByaXZhdGUsIGJ1ZmZlcl9tZXRhKTsKKwogICAgICpidWZmZXIgPSBoZWFkZXI7CiAKICAgICBhZGRBY3RpdmVCdWZmZXIocG9ydEluZGV4LCAqYnVmZmVyKTsKQEAgLTI5NCw2ICsyOTYsOCBAQAogICAgICAgICByZXR1cm4gVU5LTk9XTl9FUlJPUjsKICAgICB9CiAKKyAgICBDSEVDS19FUShoZWFkZXItPnBBcHBQcml2YXRlLCBidWZmZXJfbWV0YSk7CisKICAgICAqYnVmZmVyID0gaGVhZGVyOwogICAgICpidWZmZXJfZGF0YSA9IGhlYWRlci0+cEJ1ZmZlcjsKIApAQCAtMzI1LDYgKzMyOSw4IEBACiAgICAgICAgIHJldHVybiBVTktOT1dOX0VSUk9SOwogICAgIH0KIAorICAgIENIRUNLX0VRKGhlYWRlci0+cEFwcFByaXZhdGUsIGJ1ZmZlcl9tZXRhKTsKKwogICAgICpidWZmZXIgPSBoZWFkZXI7CiAKICAgICBhZGRBY3RpdmVCdWZmZXIocG9ydEluZGV4LCAqYnVmZmVyKTsKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L29teC90ZXN0cy9BbmRyb2lkLm1rIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvb214L3Rlc3RzL0FuZHJvaWQubWsKaW5kZXggZWUxMTdlNS4uOGJmNDMzNiAxMDA2NDQKLS0tIGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvb214L3Rlc3RzL0FuZHJvaWQubWsKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvb214L3Rlc3RzL0FuZHJvaWQubWsKQEAgLTEsNSArMSwzIEBACi1pZmVxICgkKEJVSUxEX1dJVEhfRlVMTF9TVEFHRUZSSUdIVCksdHJ1ZSkKLQogTE9DQUxfUEFUSDo9ICQoY2FsbCBteS1kaXIpCiBpbmNsdWRlICQoQ0xFQVJfVkFSUykKIApAQCAtMTcsNyArMTUsMyBAQAogTE9DQUxfTU9EVUxFOj0gb214X3Rlc3RzCiAKIGluY2x1ZGUgJChCVUlMRF9FWEVDVVRBQkxFKQotCi1lbmRpZgotCi0KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L3J0c3AvQUFWQ0Fzc2VtYmxlci5jcHAgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9ydHNwL0FBVkNBc3NlbWJsZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkZmIyMDAKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9ydHNwL0FBVkNBc3NlbWJsZXIuY3BwCkBAIC0wLDAgKzEsMzg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2luY2x1ZGUgIkFBVkNBc3NlbWJsZXIuaCIKKworI2luY2x1ZGUgIkFSVFBTb3VyY2UuaCIKKworI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUJ1ZmZlci5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQURlYnVnLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BTWVzc2FnZS5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vaGV4ZHVtcC5oPgorCisjaW5jbHVkZSA8c3RkaW50Lmg+CisKKyNkZWZpbmUgQkVfVkVSQk9TRSAgICAgIDAKKworbmFtZXNwYWNlIGFuZHJvaWQgeworCisvLyBzdGF0aWMKK0FBVkNBc3NlbWJsZXI6OkFBVkNBc3NlbWJsZXIoY29uc3Qgc3A8QU1lc3NhZ2U+ICZub3RpZnkpCisgICAgOiBtTm90aWZ5TXNnKG5vdGlmeSksCisgICAgICBtQWNjZXNzVW5pdFJUUFRpbWUoMCksCisgICAgICBtTmV4dEV4cGVjdGVkU2VxTm9WYWxpZChmYWxzZSksCisgICAgICBtTmV4dEV4cGVjdGVkU2VxTm8oMCksCisgICAgICBtQWNjZXNzVW5pdERhbWFnZWQoZmFsc2UpIHsKK30KKworQUFWQ0Fzc2VtYmxlcjo6fkFBVkNBc3NlbWJsZXIoKSB7Cit9CisKK0FSVFBBc3NlbWJsZXI6OkFzc2VtYmx5U3RhdHVzIEFBVkNBc3NlbWJsZXI6OmFkZE5BTFVuaXQoCisgICAgICAgIGNvbnN0IHNwPEFSVFBTb3VyY2U+ICZzb3VyY2UpIHsKKyAgICBMaXN0PHNwPEFCdWZmZXI+ID4gKnF1ZXVlID0gc291cmNlLT5xdWV1ZSgpOworCisgICAgaWYgKHF1ZXVlLT5lbXB0eSgpKSB7CisgICAgICAgIHJldHVybiBOT1RfRU5PVUdIX0RBVEE7CisgICAgfQorCisgICAgaWYgKG1OZXh0RXhwZWN0ZWRTZXFOb1ZhbGlkKSB7CisgICAgICAgIExpc3Q8c3A8QUJ1ZmZlcj4gPjo6aXRlcmF0b3IgaXQgPSBxdWV1ZS0+YmVnaW4oKTsKKyAgICAgICAgd2hpbGUgKGl0ICE9IHF1ZXVlLT5lbmQoKSkgeworICAgICAgICAgICAgaWYgKCh1aW50MzJfdCkoKml0KS0+aW50MzJEYXRhKCkgPj0gbU5leHRFeHBlY3RlZFNlcU5vKSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGl0ID0gcXVldWUtPmVyYXNlKGl0KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChxdWV1ZS0+ZW1wdHkoKSkgeworICAgICAgICAgICAgcmV0dXJuIE5PVF9FTk9VR0hfREFUQTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHNwPEFCdWZmZXI+IGJ1ZmZlciA9ICpxdWV1ZS0+YmVnaW4oKTsKKworICAgIGlmICghbU5leHRFeHBlY3RlZFNlcU5vVmFsaWQpIHsKKyAgICAgICAgbU5leHRFeHBlY3RlZFNlcU5vVmFsaWQgPSB0cnVlOworICAgICAgICBtTmV4dEV4cGVjdGVkU2VxTm8gPSAodWludDMyX3QpYnVmZmVyLT5pbnQzMkRhdGEoKTsKKyAgICB9IGVsc2UgaWYgKCh1aW50MzJfdClidWZmZXItPmludDMyRGF0YSgpICE9IG1OZXh0RXhwZWN0ZWRTZXFObykgeworI2lmIEJFX1ZFUkJPU0UKKyAgICAgICAgTE9HKFZFUkJPU0UpIDw8ICJOb3QgdGhlIHNlcXVlbmNlIG51bWJlciBJIGV4cGVjdGVkIjsKKyNlbmRpZgorCisgICAgICAgIHJldHVybiBXUk9OR19TRVFVRU5DRV9OVU1CRVI7CisgICAgfQorCisgICAgY29uc3QgdWludDhfdCAqZGF0YSA9IGJ1ZmZlci0+ZGF0YSgpOworICAgIHNpemVfdCBzaXplID0gYnVmZmVyLT5zaXplKCk7CisKKyAgICBpZiAoc2l6ZSA8IDEgfHwgKGRhdGFbMF0gJiAweDgwKSkgeworICAgICAgICAvLyBDb3JydXB0LgorCisgICAgICAgIExPRyhFUlJPUikgPDwgIklnbm9yaW5nIGNvcnJ1cHQgYnVmZmVyLiI7CisgICAgICAgIHF1ZXVlLT5lcmFzZShxdWV1ZS0+YmVnaW4oKSk7CisKKyAgICAgICAgKyttTmV4dEV4cGVjdGVkU2VxTm87CisgICAgICAgIHJldHVybiBNQUxGT1JNRURfUEFDS0VUOworICAgIH0KKworICAgIHVuc2lnbmVkIG5hbFR5cGUgPSBkYXRhWzBdICYgMHgxZjsKKyAgICBpZiAobmFsVHlwZSA+PSAxICYmIG5hbFR5cGUgPD0gMjMpIHsKKyAgICAgICAgYWRkU2luZ2xlTkFMVW5pdChidWZmZXIpOworICAgICAgICBxdWV1ZS0+ZXJhc2UocXVldWUtPmJlZ2luKCkpOworICAgICAgICArK21OZXh0RXhwZWN0ZWRTZXFObzsKKyAgICAgICAgcmV0dXJuIE9LOworICAgIH0gZWxzZSBpZiAobmFsVHlwZSA9PSAyOCkgeworICAgICAgICAvLyBGVS1BCisgICAgICAgIHJldHVybiBhZGRGcmFnbWVudGVkTkFMVW5pdChxdWV1ZSk7CisgICAgfSBlbHNlIGlmIChuYWxUeXBlID09IDI0KSB7CisgICAgICAgIC8vIFNUQVAtQQorICAgICAgICBib29sIHN1Y2Nlc3MgPSBhZGRTaW5nbGVUaW1lQWdncmVnYXRpb25QYWNrZXQoYnVmZmVyKTsKKyAgICAgICAgcXVldWUtPmVyYXNlKHF1ZXVlLT5iZWdpbigpKTsKKyAgICAgICAgKyttTmV4dEV4cGVjdGVkU2VxTm87CisKKyAgICAgICAgcmV0dXJuIHN1Y2Nlc3MgPyBPSyA6IE1BTEZPUk1FRF9QQUNLRVQ7CisgICAgfSBlbHNlIHsKKyAgICAgICAgTE9HKEVSUk9SKSA8PCAiSWdub3JpbmcgdW5zdXBwb3J0ZWQgYnVmZmVyIChuYWxUeXBlPSIgPDwgbmFsVHlwZSA8PCAiKSI7CisKKyAgICAgICAgcXVldWUtPmVyYXNlKHF1ZXVlLT5iZWdpbigpKTsKKyAgICAgICAgKyttTmV4dEV4cGVjdGVkU2VxTm87CisKKyAgICAgICAgcmV0dXJuIE1BTEZPUk1FRF9QQUNLRVQ7CisgICAgfQorfQorCit2b2lkIEFBVkNBc3NlbWJsZXI6OmFkZFNpbmdsZU5BTFVuaXQoY29uc3Qgc3A8QUJ1ZmZlcj4gJmJ1ZmZlcikgeworI2lmIEJFX1ZFUkJPU0UKKyAgICBMT0coVkVSQk9TRSkgPDwgImFkZFNpbmdsZU5BTFVuaXQgb2Ygc2l6ZSAiIDw8IGJ1ZmZlci0+c2l6ZSgpOworICAgIGhleGR1bXAoYnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+c2l6ZSgpKTsKKyNlbmRpZgorCisgICAgdWludDMyX3QgcnRwVGltZTsKKyAgICBDSEVDSyhidWZmZXItPm1ldGEoKS0+ZmluZEludDMyKCJydHAtdGltZSIsIChpbnQzMl90ICopJnJ0cFRpbWUpKTsKKworICAgIGlmICghbU5BTFVuaXRzLmVtcHR5KCkgJiYgcnRwVGltZSAhPSBtQWNjZXNzVW5pdFJUUFRpbWUpIHsKKyAgICAgICAgc3VibWl0QWNjZXNzVW5pdCgpOworICAgIH0KKyAgICBtQWNjZXNzVW5pdFJUUFRpbWUgPSBydHBUaW1lOworCisgICAgbU5BTFVuaXRzLnB1c2hfYmFjayhidWZmZXIpOworfQorCitib29sIEFBVkNBc3NlbWJsZXI6OmFkZFNpbmdsZVRpbWVBZ2dyZWdhdGlvblBhY2tldChjb25zdCBzcDxBQnVmZmVyPiAmYnVmZmVyKSB7CisgICAgY29uc3QgdWludDhfdCAqZGF0YSA9IGJ1ZmZlci0+ZGF0YSgpOworICAgIHNpemVfdCBzaXplID0gYnVmZmVyLT5zaXplKCk7CisKKyAgICBpZiAoc2l6ZSA8IDMpIHsKKyAgICAgICAgTE9HKEVSUk9SKSA8PCAiRGlzY2FyZGluZyB0b28gc21hbGwgU1RBUC1BIHBhY2tldC4iOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgKytkYXRhOworICAgIC0tc2l6ZTsKKyAgICB3aGlsZSAoc2l6ZSA+PSAyKSB7CisgICAgICAgIHNpemVfdCBuYWxTaXplID0gKGRhdGFbMF0gPDwgOCkgfCBkYXRhWzFdOworCisgICAgICAgIGlmIChzaXplIDwgbmFsU2l6ZSArIDIpIHsKKyAgICAgICAgICAgIExPRyhFUlJPUikgPDwgIkRpc2NhcmRpbmcgbWFsZm9ybWVkIFNUQVAtQSBwYWNrZXQuIjsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHNwPEFCdWZmZXI+IHVuaXQgPSBuZXcgQUJ1ZmZlcihuYWxTaXplKTsKKyAgICAgICAgbWVtY3B5KHVuaXQtPmRhdGEoKSwgJmRhdGFbMl0sIG5hbFNpemUpOworCisgICAgICAgIFByb3BhZ2F0ZVRpbWVzKGJ1ZmZlciwgdW5pdCk7CisKKyAgICAgICAgYWRkU2luZ2xlTkFMVW5pdCh1bml0KTsKKworICAgICAgICBkYXRhICs9IDIgKyBuYWxTaXplOworICAgICAgICBzaXplIC09IDIgKyBuYWxTaXplOworICAgIH0KKworICAgIGlmIChzaXplICE9IDApIHsKKyAgICAgICAgTE9HKFdBUk5JTkcpIDw8ICJVbmV4cGVjdGVkIHBhZGRpbmcgYXQgZW5kIG9mIFNUQVAtQSBwYWNrZXQuIjsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworQVJUUEFzc2VtYmxlcjo6QXNzZW1ibHlTdGF0dXMgQUFWQ0Fzc2VtYmxlcjo6YWRkRnJhZ21lbnRlZE5BTFVuaXQoCisgICAgICAgIExpc3Q8c3A8QUJ1ZmZlcj4gPiAqcXVldWUpIHsKKyAgICBDSEVDSyghcXVldWUtPmVtcHR5KCkpOworCisgICAgc3A8QUJ1ZmZlcj4gYnVmZmVyID0gKnF1ZXVlLT5iZWdpbigpOworICAgIGNvbnN0IHVpbnQ4X3QgKmRhdGEgPSBidWZmZXItPmRhdGEoKTsKKyAgICBzaXplX3Qgc2l6ZSA9IGJ1ZmZlci0+c2l6ZSgpOworCisgICAgQ0hFQ0soc2l6ZSA+IDApOworICAgIHVuc2lnbmVkIGluZGljYXRvciA9IGRhdGFbMF07CisKKyAgICBDSEVDSygoaW5kaWNhdG9yICYgMHgxZikgPT0gMjgpOworCisgICAgaWYgKHNpemUgPCAyKSB7CisgICAgICAgIExPRyhFUlJPUikgPDwgIklnbm9yaW5nIG1hbGZvcm1lZCBGVSBidWZmZXIgKHNpemUgPSAiIDw8IHNpemUgPDwgIikiOworCisgICAgICAgIHF1ZXVlLT5lcmFzZShxdWV1ZS0+YmVnaW4oKSk7CisgICAgICAgICsrbU5leHRFeHBlY3RlZFNlcU5vOworICAgICAgICByZXR1cm4gTUFMRk9STUVEX1BBQ0tFVDsKKyAgICB9CisKKyAgICBpZiAoIShkYXRhWzFdICYgMHg4MCkpIHsKKyAgICAgICAgLy8gU3RhcnQgYml0IG5vdCBzZXQgb24gdGhlIGZpcnN0IGJ1ZmZlci4KKworI2lmIEJFX1ZFUkJPU0UKKyAgICAgICAgTE9HKEVSUk9SKSA8PCAiU3RhcnQgYml0IG5vdCBzZXQgb24gZmlyc3QgYnVmZmVyIjsKKyNlbmRpZgorCisgICAgICAgIHF1ZXVlLT5lcmFzZShxdWV1ZS0+YmVnaW4oKSk7CisgICAgICAgICsrbU5leHRFeHBlY3RlZFNlcU5vOworICAgICAgICByZXR1cm4gTUFMRk9STUVEX1BBQ0tFVDsKKyAgICB9CisKKyAgICB1aW50MzJfdCBuYWxUeXBlID0gZGF0YVsxXSAmIDB4MWY7CisgICAgdWludDMyX3QgbnJpID0gKGRhdGFbMF0gPj4gNSkgJiAzOworCisgICAgdWludDMyX3QgZXhwZWN0ZWRTZXFObyA9ICh1aW50MzJfdClidWZmZXItPmludDMyRGF0YSgpICsgMTsKKyAgICBzaXplX3QgdG90YWxTaXplID0gc2l6ZSAtIDI7CisgICAgc2l6ZV90IHRvdGFsQ291bnQgPSAxOworICAgIGJvb2wgY29tcGxldGUgPSBmYWxzZTsKKworICAgIGlmIChkYXRhWzFdICYgMHg0MCkgeworICAgICAgICAvLyBIdWg/IEVuZCBiaXQgYWxzbyBzZXQgb24gdGhlIGZpcnN0IGJ1ZmZlci4KKworI2lmIEJFX1ZFUkJPU0UKKyAgICAgICAgTE9HKFdBUk5JTkcpIDw8ICJHcnJyLiBUaGlzIGlzbid0IGZyYWdtZW50ZWQgYXQgYWxsLiI7CisjZW5kaWYKKworICAgICAgICBjb21wbGV0ZSA9IHRydWU7CisgICAgfSBlbHNlIHsKKyAgICAgICAgTGlzdDxzcDxBQnVmZmVyPiA+OjppdGVyYXRvciBpdCA9ICsrcXVldWUtPmJlZ2luKCk7CisgICAgICAgIHdoaWxlIChpdCAhPSBxdWV1ZS0+ZW5kKCkpIHsKKyNpZiBCRV9WRVJCT1NFCisgICAgICAgICAgICBMT0coVkVSQk9TRSkgPDwgInNlcXVlbmNlIGxlbmd0aCAiIDw8IHRvdGFsQ291bnQ7CisjZW5kaWYKKworICAgICAgICAgICAgY29uc3Qgc3A8QUJ1ZmZlcj4gJmJ1ZmZlciA9ICppdDsKKworICAgICAgICAgICAgY29uc3QgdWludDhfdCAqZGF0YSA9IGJ1ZmZlci0+ZGF0YSgpOworICAgICAgICAgICAgc2l6ZV90IHNpemUgPSBidWZmZXItPnNpemUoKTsKKworICAgICAgICAgICAgaWYgKCh1aW50MzJfdClidWZmZXItPmludDMyRGF0YSgpICE9IGV4cGVjdGVkU2VxTm8pIHsKKyNpZiBCRV9WRVJCT1NFCisgICAgICAgICAgICAgICAgTE9HKFZFUkJPU0UpIDw8ICJzZXF1ZW5jZSBub3QgY29tcGxldGUsIGV4cGVjdGVkIHNlcU5vICIKKyAgICAgICAgICAgICAgICAgICAgIDw8IGV4cGVjdGVkU2VxTm8gPDwgIiwgZ290ICIKKyAgICAgICAgICAgICAgICAgICAgIDw8ICh1aW50MzJfdClidWZmZXItPmludDMyRGF0YSgpOworI2VuZGlmCisKKyAgICAgICAgICAgICAgICByZXR1cm4gV1JPTkdfU0VRVUVOQ0VfTlVNQkVSOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoc2l6ZSA8IDIKKyAgICAgICAgICAgICAgICAgICAgfHwgZGF0YVswXSAhPSBpbmRpY2F0b3IKKyAgICAgICAgICAgICAgICAgICAgfHwgKGRhdGFbMV0gJiAweDFmKSAhPSBuYWxUeXBlCisgICAgICAgICAgICAgICAgICAgIHx8IChkYXRhWzFdICYgMHg4MCkpIHsKKyAgICAgICAgICAgICAgICBMT0coRVJST1IpIDw8ICJJZ25vcmluZyBtYWxmb3JtZWQgRlUgYnVmZmVyLlxuIjsKKworICAgICAgICAgICAgICAgIC8vIERlbGV0ZSB0aGUgd2hvbGUgc3RhcnQgb2YgdGhlIEZVLgorCisgICAgICAgICAgICAgICAgaXQgPSBxdWV1ZS0+YmVnaW4oKTsKKyAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8PSB0b3RhbENvdW50OyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgaXQgPSBxdWV1ZS0+ZXJhc2UoaXQpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIG1OZXh0RXhwZWN0ZWRTZXFObyA9IGV4cGVjdGVkU2VxTm8gKyAxOworCisgICAgICAgICAgICAgICAgcmV0dXJuIE1BTEZPUk1FRF9QQUNLRVQ7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRvdGFsU2l6ZSArPSBzaXplIC0gMjsKKyAgICAgICAgICAgICsrdG90YWxDb3VudDsKKworICAgICAgICAgICAgZXhwZWN0ZWRTZXFObyA9IGV4cGVjdGVkU2VxTm8gKyAxOworCisgICAgICAgICAgICBpZiAoZGF0YVsxXSAmIDB4NDApIHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBsYXN0IGZyYWdtZW50LgorICAgICAgICAgICAgICAgIGNvbXBsZXRlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgKytpdDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICghY29tcGxldGUpIHsKKyAgICAgICAgcmV0dXJuIE5PVF9FTk9VR0hfREFUQTsKKyAgICB9CisKKyAgICBtTmV4dEV4cGVjdGVkU2VxTm8gPSBleHBlY3RlZFNlcU5vOworCisgICAgLy8gV2UgZm91bmQgYWxsIHRoZSBmcmFnbWVudHMgdGhhdCBtYWtlIHVwIHRoZSBjb21wbGV0ZSBOQUwgdW5pdC4KKworICAgIC8vIExlYXZlIHJvb20gZm9yIHRoZSBoZWFkZXIuIFNvIGZhciB0b3RhbFNpemUgZGlkIG5vdCBpbmNsdWRlIHRoZQorICAgIC8vIGhlYWRlciBieXRlLgorICAgICsrdG90YWxTaXplOworCisgICAgc3A8QUJ1ZmZlcj4gdW5pdCA9IG5ldyBBQnVmZmVyKHRvdGFsU2l6ZSk7CisgICAgUHJvcGFnYXRlVGltZXMoYnVmZmVyLCB1bml0KTsKKworICAgIHVuaXQtPmRhdGEoKVswXSA9IChucmkgPDwgNSkgfCBuYWxUeXBlOworCisgICAgc2l6ZV90IG9mZnNldCA9IDE7CisgICAgTGlzdDxzcDxBQnVmZmVyPiA+OjppdGVyYXRvciBpdCA9IHF1ZXVlLT5iZWdpbigpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgdG90YWxDb3VudDsgKytpKSB7CisgICAgICAgIGNvbnN0IHNwPEFCdWZmZXI+ICZidWZmZXIgPSAqaXQ7CisKKyNpZiBCRV9WRVJCT1NFCisgICAgICAgIExPRyhWRVJCT1NFKSA8PCAicGllY2UgIyIgPDwgKGkgKyAxKSA8PCAiLyIgPDwgdG90YWxDb3VudDsKKyAgICAgICAgaGV4ZHVtcChidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCkpOworI2VuZGlmCisKKyAgICAgICAgbWVtY3B5KHVuaXQtPmRhdGEoKSArIG9mZnNldCwgYnVmZmVyLT5kYXRhKCkgKyAyLCBidWZmZXItPnNpemUoKSAtIDIpOworICAgICAgICBvZmZzZXQgKz0gYnVmZmVyLT5zaXplKCkgLSAyOworCisgICAgICAgIGl0ID0gcXVldWUtPmVyYXNlKGl0KTsKKyAgICB9CisKKyAgICB1bml0LT5zZXRSYW5nZSgwLCB0b3RhbFNpemUpOworCisgICAgYWRkU2luZ2xlTkFMVW5pdCh1bml0KTsKKworI2lmIEJFX1ZFUkJPU0UKKyAgICBMT0coVkVSQk9TRSkgPDwgInN1Y2Nlc3NmdWxseSBhc3NlbWJsZWQgYSBOQUwgdW5pdCBmcm9tIGZyYWdtZW50cy4iOworI2VuZGlmCisKKyAgICByZXR1cm4gT0s7Cit9CisKK3ZvaWQgQUFWQ0Fzc2VtYmxlcjo6c3VibWl0QWNjZXNzVW5pdCgpIHsKKyAgICBDSEVDSyghbU5BTFVuaXRzLmVtcHR5KCkpOworCisjaWYgQkVfVkVSQk9TRQorICAgIExPRyhWRVJCT1NFKSA8PCAiQWNjZXNzIHVuaXQgY29tcGxldGUgKCIgPDwgbU5BTFVuaXRzLnNpemUoKSA8PCAiIG5hbCB1bml0cykiOworI2VuZGlmCisKKyAgICB1aW50NjRfdCBudHBUaW1lOworICAgIENIRUNLKCgqbU5BTFVuaXRzLmJlZ2luKCkpLT5tZXRhKCktPmZpbmRJbnQ2NCgKKyAgICAgICAgICAgICAgICAibnRwLXRpbWUiLCAoaW50NjRfdCAqKSZudHBUaW1lKSk7CisKKyAgICBzaXplX3QgdG90YWxTaXplID0gMDsKKyAgICBmb3IgKExpc3Q8c3A8QUJ1ZmZlcj4gPjo6aXRlcmF0b3IgaXQgPSBtTkFMVW5pdHMuYmVnaW4oKTsKKyAgICAgICAgIGl0ICE9IG1OQUxVbml0cy5lbmQoKTsgKytpdCkgeworICAgICAgICB0b3RhbFNpemUgKz0gNCArICgqaXQpLT5zaXplKCk7CisgICAgfQorCisgICAgc3A8QUJ1ZmZlcj4gYWNjZXNzVW5pdCA9IG5ldyBBQnVmZmVyKHRvdGFsU2l6ZSk7CisgICAgc2l6ZV90IG9mZnNldCA9IDA7CisgICAgZm9yIChMaXN0PHNwPEFCdWZmZXI+ID46Oml0ZXJhdG9yIGl0ID0gbU5BTFVuaXRzLmJlZ2luKCk7CisgICAgICAgICBpdCAhPSBtTkFMVW5pdHMuZW5kKCk7ICsraXQpIHsKKyAgICAgICAgbWVtY3B5KGFjY2Vzc1VuaXQtPmRhdGEoKSArIG9mZnNldCwgIlx4MDBceDAwXHgwMFx4MDEiLCA0KTsKKyAgICAgICAgb2Zmc2V0ICs9IDQ7CisKKyAgICAgICAgc3A8QUJ1ZmZlcj4gbmFsID0gKml0OworICAgICAgICBtZW1jcHkoYWNjZXNzVW5pdC0+ZGF0YSgpICsgb2Zmc2V0LCBuYWwtPmRhdGEoKSwgbmFsLT5zaXplKCkpOworICAgICAgICBvZmZzZXQgKz0gbmFsLT5zaXplKCk7CisgICAgfQorCisgICAgYWNjZXNzVW5pdC0+bWV0YSgpLT5zZXRJbnQ2NCgibnRwLXRpbWUiLCBudHBUaW1lKTsKKworI2lmIDAKKyAgICBwcmludGYobUFjY2Vzc1VuaXREYW1hZ2VkID8gIlgiIDogIi4iKTsKKyAgICBmZmx1c2goc3Rkb3V0KTsKKyNlbmRpZgorCisgICAgaWYgKG1BY2Nlc3NVbml0RGFtYWdlZCkgeworICAgICAgICBhY2Nlc3NVbml0LT5tZXRhKCktPnNldEludDMyKCJkYW1hZ2VkIiwgdHJ1ZSk7CisgICAgfQorCisgICAgbU5BTFVuaXRzLmNsZWFyKCk7CisgICAgbUFjY2Vzc1VuaXREYW1hZ2VkID0gZmFsc2U7CisKKyAgICBzcDxBTWVzc2FnZT4gbXNnID0gbU5vdGlmeU1zZy0+ZHVwKCk7CisgICAgbXNnLT5zZXRPYmplY3QoImFjY2Vzcy11bml0IiwgYWNjZXNzVW5pdCk7CisgICAgbXNnLT5wb3N0KCk7Cit9CisKK0FSVFBBc3NlbWJsZXI6OkFzc2VtYmx5U3RhdHVzIEFBVkNBc3NlbWJsZXI6OmFzc2VtYmxlTW9yZSgKKyAgICAgICAgY29uc3Qgc3A8QVJUUFNvdXJjZT4gJnNvdXJjZSkgeworICAgIEFzc2VtYmx5U3RhdHVzIHN0YXR1cyA9IGFkZE5BTFVuaXQoc291cmNlKTsKKyAgICBpZiAoc3RhdHVzID09IE1BTEZPUk1FRF9QQUNLRVQpIHsKKyAgICAgICAgbUFjY2Vzc1VuaXREYW1hZ2VkID0gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIHN0YXR1czsKK30KKwordm9pZCBBQVZDQXNzZW1ibGVyOjpwYWNrZXRMb3N0KCkgeworICAgIENIRUNLKG1OZXh0RXhwZWN0ZWRTZXFOb1ZhbGlkKTsKKyAgICArK21OZXh0RXhwZWN0ZWRTZXFObzsKKworICAgIG1BY2Nlc3NVbml0RGFtYWdlZCA9IHRydWU7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9ydHNwL0FBVkNBc3NlbWJsZXIuaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L3J0c3AvQUFWQ0Fzc2VtYmxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlOTc1MjAKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9ydHNwL0FBVkNBc3NlbWJsZXIuaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2lmbmRlZiBBX0FWQ19BU1NFTUJMRVJfSF8KKworI2RlZmluZSBBX0FWQ19BU1NFTUJMRVJfSF8KKworI2luY2x1ZGUgIkFSVFBBc3NlbWJsZXIuaCIKKworI2luY2x1ZGUgPHV0aWxzL0xpc3QuaD4KKyNpbmNsdWRlIDx1dGlscy9SZWZCYXNlLmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworc3RydWN0IEFCdWZmZXI7CitzdHJ1Y3QgQU1lc3NhZ2U7CisKK3N0cnVjdCBBQVZDQXNzZW1ibGVyIDogcHVibGljIEFSVFBBc3NlbWJsZXIgeworICAgIEFBVkNBc3NlbWJsZXIoY29uc3Qgc3A8QU1lc3NhZ2U+ICZub3RpZnkpOworCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB+QUFWQ0Fzc2VtYmxlcigpOworCisgICAgdmlydHVhbCBBc3NlbWJseVN0YXR1cyBhc3NlbWJsZU1vcmUoY29uc3Qgc3A8QVJUUFNvdXJjZT4gJnNvdXJjZSk7CisgICAgdmlydHVhbCB2b2lkIHBhY2tldExvc3QoKTsKKworcHJpdmF0ZToKKyAgICBzcDxBTWVzc2FnZT4gbU5vdGlmeU1zZzsKKworICAgIHVpbnQzMl90IG1BY2Nlc3NVbml0UlRQVGltZTsKKyAgICBib29sIG1OZXh0RXhwZWN0ZWRTZXFOb1ZhbGlkOworICAgIHVpbnQzMl90IG1OZXh0RXhwZWN0ZWRTZXFObzsKKyAgICBib29sIG1BY2Nlc3NVbml0RGFtYWdlZDsKKyAgICBMaXN0PHNwPEFCdWZmZXI+ID4gbU5BTFVuaXRzOworCisgICAgQXNzZW1ibHlTdGF0dXMgYWRkTkFMVW5pdChjb25zdCBzcDxBUlRQU291cmNlPiAmc291cmNlKTsKKyAgICB2b2lkIGFkZFNpbmdsZU5BTFVuaXQoY29uc3Qgc3A8QUJ1ZmZlcj4gJmJ1ZmZlcik7CisgICAgQXNzZW1ibHlTdGF0dXMgYWRkRnJhZ21lbnRlZE5BTFVuaXQoTGlzdDxzcDxBQnVmZmVyPiA+ICpxdWV1ZSk7CisgICAgYm9vbCBhZGRTaW5nbGVUaW1lQWdncmVnYXRpb25QYWNrZXQoY29uc3Qgc3A8QUJ1ZmZlcj4gJmJ1ZmZlcik7CisKKyAgICB2b2lkIHN1Ym1pdEFjY2Vzc1VuaXQoKTsKKworICAgIERJU0FMTE9XX0VWSUxfQ09OU1RSVUNUT1JTKEFBVkNBc3NlbWJsZXIpOworfTsKKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKKworI2VuZGlmICAvLyBBX0FWQ19BU1NFTUJMRVJfSF8KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L3J0c3AvQU1QRUc0QXVkaW9Bc3NlbWJsZXIuY3BwIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvcnRzcC9BTVBFRzRBdWRpb0Fzc2VtYmxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDU0OWQ4NAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L3J0c3AvQU1QRUc0QXVkaW9Bc3NlbWJsZXIuY3BwCkBAIC0wLDAgKzEsMTY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2luY2x1ZGUgIkFNUEVHNEF1ZGlvQXNzZW1ibGVyLmgiCisKKyNpbmNsdWRlICJBUlRQU291cmNlLmgiCisKKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FCdWZmZXIuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FEZWJ1Zy5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQU1lc3NhZ2UuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitBTVBFRzRBdWRpb0Fzc2VtYmxlcjo6QU1QRUc0QXVkaW9Bc3NlbWJsZXIoY29uc3Qgc3A8QU1lc3NhZ2U+ICZub3RpZnkpCisgICAgOiBtTm90aWZ5TXNnKG5vdGlmeSksCisgICAgICBtQWNjZXNzVW5pdFJUUFRpbWUoMCksCisgICAgICBtTmV4dEV4cGVjdGVkU2VxTm9WYWxpZChmYWxzZSksCisgICAgICBtTmV4dEV4cGVjdGVkU2VxTm8oMCksCisgICAgICBtQWNjZXNzVW5pdERhbWFnZWQoZmFsc2UpIHsKK30KKworQU1QRUc0QXVkaW9Bc3NlbWJsZXI6On5BTVBFRzRBdWRpb0Fzc2VtYmxlcigpIHsKK30KKworQVJUUEFzc2VtYmxlcjo6QXNzZW1ibHlTdGF0dXMgQU1QRUc0QXVkaW9Bc3NlbWJsZXI6OmFzc2VtYmxlTW9yZSgKKyAgICAgICAgY29uc3Qgc3A8QVJUUFNvdXJjZT4gJnNvdXJjZSkgeworICAgIEFzc2VtYmx5U3RhdHVzIHN0YXR1cyA9IGFkZFBhY2tldChzb3VyY2UpOworICAgIGlmIChzdGF0dXMgPT0gTUFMRk9STUVEX1BBQ0tFVCkgeworICAgICAgICBtQWNjZXNzVW5pdERhbWFnZWQgPSB0cnVlOworICAgIH0KKyAgICByZXR1cm4gc3RhdHVzOworfQorCitBUlRQQXNzZW1ibGVyOjpBc3NlbWJseVN0YXR1cyBBTVBFRzRBdWRpb0Fzc2VtYmxlcjo6YWRkUGFja2V0KAorICAgICAgICBjb25zdCBzcDxBUlRQU291cmNlPiAmc291cmNlKSB7CisgICAgTGlzdDxzcDxBQnVmZmVyPiA+ICpxdWV1ZSA9IHNvdXJjZS0+cXVldWUoKTsKKworICAgIGlmIChxdWV1ZS0+ZW1wdHkoKSkgeworICAgICAgICByZXR1cm4gTk9UX0VOT1VHSF9EQVRBOworICAgIH0KKworICAgIGlmIChtTmV4dEV4cGVjdGVkU2VxTm9WYWxpZCkgeworICAgICAgICBMaXN0PHNwPEFCdWZmZXI+ID46Oml0ZXJhdG9yIGl0ID0gcXVldWUtPmJlZ2luKCk7CisgICAgICAgIHdoaWxlIChpdCAhPSBxdWV1ZS0+ZW5kKCkpIHsKKyAgICAgICAgICAgIGlmICgodWludDMyX3QpKCppdCktPmludDMyRGF0YSgpID49IG1OZXh0RXhwZWN0ZWRTZXFObykgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpdCA9IHF1ZXVlLT5lcmFzZShpdCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAocXVldWUtPmVtcHR5KCkpIHsKKyAgICAgICAgICAgIHJldHVybiBOT1RfRU5PVUdIX0RBVEE7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzcDxBQnVmZmVyPiBidWZmZXIgPSAqcXVldWUtPmJlZ2luKCk7CisKKyAgICBpZiAoIW1OZXh0RXhwZWN0ZWRTZXFOb1ZhbGlkKSB7CisgICAgICAgIG1OZXh0RXhwZWN0ZWRTZXFOb1ZhbGlkID0gdHJ1ZTsKKyAgICAgICAgbU5leHRFeHBlY3RlZFNlcU5vID0gKHVpbnQzMl90KWJ1ZmZlci0+aW50MzJEYXRhKCk7CisgICAgfSBlbHNlIGlmICgodWludDMyX3QpYnVmZmVyLT5pbnQzMkRhdGEoKSAhPSBtTmV4dEV4cGVjdGVkU2VxTm8pIHsKKyNpZiBWRVJCT1NFCisgICAgICAgIExPRyhWRVJCT1NFKSA8PCAiTm90IHRoZSBzZXF1ZW5jZSBudW1iZXIgSSBleHBlY3RlZCI7CisjZW5kaWYKKworICAgICAgICByZXR1cm4gV1JPTkdfU0VRVUVOQ0VfTlVNQkVSOworICAgIH0KKworICAgIHVpbnQzMl90IHJ0cFRpbWU7CisgICAgQ0hFQ0soYnVmZmVyLT5tZXRhKCktPmZpbmRJbnQzMigicnRwLXRpbWUiLCAoaW50MzJfdCAqKSZydHBUaW1lKSk7CisKKyAgICBpZiAobVBhY2tldHMuc2l6ZSgpID4gMCAmJiBydHBUaW1lICE9IG1BY2Nlc3NVbml0UlRQVGltZSkgeworICAgICAgICBzdWJtaXRBY2Nlc3NVbml0KCk7CisgICAgfQorICAgIG1BY2Nlc3NVbml0UlRQVGltZSA9IHJ0cFRpbWU7CisKKyAgICBtUGFja2V0cy5wdXNoX2JhY2soYnVmZmVyKTsKKworICAgIHF1ZXVlLT5lcmFzZShxdWV1ZS0+YmVnaW4oKSk7CisgICAgKyttTmV4dEV4cGVjdGVkU2VxTm87CisKKyAgICByZXR1cm4gT0s7Cit9CisKK3ZvaWQgQU1QRUc0QXVkaW9Bc3NlbWJsZXI6OnN1Ym1pdEFjY2Vzc1VuaXQoKSB7CisgICAgQ0hFQ0soIW1QYWNrZXRzLmVtcHR5KCkpOworCisjaWYgVkVSQk9TRQorICAgIExPRyhWRVJCT1NFKSA8PCAiQWNjZXNzIHVuaXQgY29tcGxldGUgKCIgPDwgbVBhY2tldHMuc2l6ZSgpIDw8ICIgcGFja2V0cykiOworI2VuZGlmCisKKyAgICB1aW50NjRfdCBudHBUaW1lOworICAgIENIRUNLKCgqbVBhY2tldHMuYmVnaW4oKSktPm1ldGEoKS0+ZmluZEludDY0KAorICAgICAgICAgICAgICAgICJudHAtdGltZSIsIChpbnQ2NF90ICopJm50cFRpbWUpKTsKKworICAgIHNpemVfdCB0b3RhbFNpemUgPSAwOworICAgIExpc3Q8c3A8QUJ1ZmZlcj4gPjo6aXRlcmF0b3IgaXQgPSBtUGFja2V0cy5iZWdpbigpOworICAgIHdoaWxlIChpdCAhPSBtUGFja2V0cy5lbmQoKSkgeworICAgICAgICBjb25zdCBzcDxBQnVmZmVyPiAmdW5pdCA9ICppdDsKKworICAgICAgICBzaXplX3QgbiA9IDA7CisgICAgICAgIHdoaWxlICh1bml0LT5kYXRhKClbbl0gPT0gMHhmZikgeworICAgICAgICAgICAgKytuOworICAgICAgICB9CisgICAgICAgICsrbjsKKworICAgICAgICB0b3RhbFNpemUgKz0gdW5pdC0+c2l6ZSgpIC0gbjsKKyAgICAgICAgKytpdDsKKyAgICB9CisKKyAgICBzcDxBQnVmZmVyPiBhY2Nlc3NVbml0ID0gbmV3IEFCdWZmZXIodG90YWxTaXplKTsKKyAgICBzaXplX3Qgb2Zmc2V0ID0gMDsKKyAgICBpdCA9IG1QYWNrZXRzLmJlZ2luKCk7CisgICAgd2hpbGUgKGl0ICE9IG1QYWNrZXRzLmVuZCgpKSB7CisgICAgICAgIGNvbnN0IHNwPEFCdWZmZXI+ICZ1bml0ID0gKml0OworCisgICAgICAgIHNpemVfdCBuID0gMDsKKyAgICAgICAgd2hpbGUgKHVuaXQtPmRhdGEoKVtuXSA9PSAweGZmKSB7CisgICAgICAgICAgICArK247CisgICAgICAgIH0KKyAgICAgICAgKytuOworCisgICAgICAgIG1lbWNweSgodWludDhfdCAqKWFjY2Vzc1VuaXQtPmRhdGEoKSArIG9mZnNldCwKKyAgICAgICAgICAgICAgIHVuaXQtPmRhdGEoKSArIG4sIHVuaXQtPnNpemUoKSAtIG4pOworCisgICAgICAgIG9mZnNldCArPSB1bml0LT5zaXplKCkgLSBuOworCisgICAgICAgICsraXQ7CisgICAgfQorCisgICAgYWNjZXNzVW5pdC0+bWV0YSgpLT5zZXRJbnQ2NCgibnRwLXRpbWUiLCBudHBUaW1lKTsKKworICAgIGlmIChtQWNjZXNzVW5pdERhbWFnZWQpIHsKKyAgICAgICAgYWNjZXNzVW5pdC0+bWV0YSgpLT5zZXRJbnQzMigiZGFtYWdlZCIsIHRydWUpOworICAgIH0KKworICAgIG1QYWNrZXRzLmNsZWFyKCk7CisgICAgbUFjY2Vzc1VuaXREYW1hZ2VkID0gZmFsc2U7CisKKyAgICBzcDxBTWVzc2FnZT4gbXNnID0gbU5vdGlmeU1zZy0+ZHVwKCk7CisgICAgbXNnLT5zZXRPYmplY3QoImFjY2Vzcy11bml0IiwgYWNjZXNzVW5pdCk7CisgICAgbXNnLT5wb3N0KCk7Cit9CisKK3ZvaWQgQU1QRUc0QXVkaW9Bc3NlbWJsZXI6OnBhY2tldExvc3QoKSB7CisgICAgQ0hFQ0sobU5leHRFeHBlY3RlZFNlcU5vVmFsaWQpOworICAgICsrbU5leHRFeHBlY3RlZFNlcU5vOworCisgICAgbUFjY2Vzc1VuaXREYW1hZ2VkID0gdHJ1ZTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L3J0c3AvQU1QRUc0QXVkaW9Bc3NlbWJsZXIuaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L3J0c3AvQU1QRUc0QXVkaW9Bc3NlbWJsZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YzJhMmRkCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvcnRzcC9BTVBFRzRBdWRpb0Fzc2VtYmxlci5oCkBAIC0wLDAgKzEsNTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIEFfTVBFRzRfQVVESU9fQVNTRU1CTEVSX0hfCisKKyNkZWZpbmUgQV9NUEVHNF9BVURJT19BU1NFTUJMRVJfSF8KKworI2luY2x1ZGUgIkFSVFBBc3NlbWJsZXIuaCIKKworI2luY2x1ZGUgPHV0aWxzL0xpc3QuaD4KKworI2luY2x1ZGUgPHN0ZGludC5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK3N0cnVjdCBBTWVzc2FnZTsKKworc3RydWN0IEFNUEVHNEF1ZGlvQXNzZW1ibGVyIDogcHVibGljIEFSVFBBc3NlbWJsZXIgeworICAgIEFNUEVHNEF1ZGlvQXNzZW1ibGVyKGNvbnN0IHNwPEFNZXNzYWdlPiAmbm90aWZ5KTsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfkFNUEVHNEF1ZGlvQXNzZW1ibGVyKCk7CisKKyAgICB2aXJ0dWFsIEFzc2VtYmx5U3RhdHVzIGFzc2VtYmxlTW9yZShjb25zdCBzcDxBUlRQU291cmNlPiAmc291cmNlKTsKKyAgICB2aXJ0dWFsIHZvaWQgcGFja2V0TG9zdCgpOworCitwcml2YXRlOgorICAgIHNwPEFNZXNzYWdlPiBtTm90aWZ5TXNnOworICAgIHVpbnQzMl90IG1BY2Nlc3NVbml0UlRQVGltZTsKKyAgICBib29sIG1OZXh0RXhwZWN0ZWRTZXFOb1ZhbGlkOworICAgIHVpbnQzMl90IG1OZXh0RXhwZWN0ZWRTZXFObzsKKyAgICBib29sIG1BY2Nlc3NVbml0RGFtYWdlZDsKKyAgICBMaXN0PHNwPEFCdWZmZXI+ID4gbVBhY2tldHM7CisKKyAgICBBc3NlbWJseVN0YXR1cyBhZGRQYWNrZXQoY29uc3Qgc3A8QVJUUFNvdXJjZT4gJnNvdXJjZSk7CisgICAgdm9pZCBzdWJtaXRBY2Nlc3NVbml0KCk7CisKKyAgICBESVNBTExPV19FVklMX0NPTlNUUlVDVE9SUyhBTVBFRzRBdWRpb0Fzc2VtYmxlcik7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCisjZW5kaWYgIC8vIEFfTVBFRzRfQVVESU9fQVNTRU1CTEVSX0hfCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9ydHNwL0FQYWNrZXRTb3VyY2UuY3BwIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvcnRzcC9BUGFja2V0U291cmNlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODY5ZDU0Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvcnRzcC9BUGFja2V0U291cmNlLmNwcApAQCAtMCwwICsxLDM0NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpbmNsdWRlICJBUGFja2V0U291cmNlLmgiCisKKyNpbmNsdWRlICJBU2Vzc2lvbkRlc2NyaXB0aW9uLmgiCisKKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FCdWZmZXIuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FEZWJ1Zy5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQU1lc3NhZ2UuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FTdHJpbmcuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL2Jhc2U2NC5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vaGV4ZHVtcC5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01lZGlhQnVmZmVyLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFEZWZzLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWV0YURhdGEuaD4KKyNpbmNsdWRlIDx1dGlscy9WZWN0b3IuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitzdGF0aWMgYm9vbCBHZXRBdHRyaWJ1dGUoY29uc3QgY2hhciAqcywgY29uc3QgY2hhciAqa2V5LCBBU3RyaW5nICp2YWx1ZSkgeworICAgIHZhbHVlLT5jbGVhcigpOworCisgICAgc2l6ZV90IGtleUxlbiA9IHN0cmxlbihrZXkpOworCisgICAgZm9yICg7OykgeworICAgICAgICBjb25zdCBjaGFyICpjb2xvblBvcyA9IHN0cmNocihzLCAnOycpOworCisgICAgICAgIHNpemVfdCBsZW4gPQorICAgICAgICAgICAgKGNvbG9uUG9zID09IE5VTEwpID8gc3RybGVuKHMpIDogY29sb25Qb3MgLSBzOworCisgICAgICAgIGlmIChsZW4gPj0ga2V5TGVuICsgMSAmJiBzW2tleUxlbl0gPT0gJz0nICYmICFzdHJuY21wKHMsIGtleSwga2V5TGVuKSkgeworICAgICAgICAgICAgdmFsdWUtPnNldFRvKCZzW2tleUxlbiArIDFdLCBsZW4gLSBrZXlMZW4gLSAxKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNvbG9uUG9zID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHMgPSBjb2xvblBvcyArIDE7CisgICAgfQorfQorCitzdGF0aWMgc3A8QUJ1ZmZlcj4gZGVjb2RlSGV4KGNvbnN0IEFTdHJpbmcgJnMpIHsKKyAgICBpZiAoKHMuc2l6ZSgpICUgMikgIT0gMCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBzaXplX3Qgb3V0TGVuID0gcy5zaXplKCkgLyAyOworICAgIHNwPEFCdWZmZXI+IGJ1ZmZlciA9IG5ldyBBQnVmZmVyKG91dExlbik7CisgICAgdWludDhfdCAqb3V0ID0gYnVmZmVyLT5kYXRhKCk7CisKKyAgICB1aW50OF90IGFjY3VtID0gMDsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgY2hhciBjID0gcy5jX3N0cigpW2ldOworICAgICAgICB1bnNpZ25lZCB2YWx1ZTsKKyAgICAgICAgaWYgKGMgPj0gJzAnICYmIGMgPD0gJzknKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGMgLSAnMCc7CisgICAgICAgIH0gZWxzZSBpZiAoYyA+PSAnYScgJiYgYyA8PSAnZicpIHsKKyAgICAgICAgICAgIHZhbHVlID0gYyAtICdhJyArIDEwOworICAgICAgICB9IGVsc2UgaWYgKGMgPj0gJ0EnICYmIGMgPD0gJ0YnKSB7CisgICAgICAgICAgICB2YWx1ZSA9IGMgLSAnQScgKyAxMDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgYWNjdW0gPSAoYWNjdW0gPDwgNCkgfCB2YWx1ZTsKKworICAgICAgICBpZiAoaSAmIDEpIHsKKyAgICAgICAgICAgICpvdXQrKyA9IGFjY3VtOworCisgICAgICAgICAgICBhY2N1bSA9IDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gYnVmZmVyOworfQorCitzdGF0aWMgc3A8QUJ1ZmZlcj4gTWFrZUFWQ0NvZGVjU3BlY2lmaWNEYXRhKGNvbnN0IGNoYXIgKnBhcmFtcykgeworICAgIEFTdHJpbmcgdmFsOworICAgIENIRUNLKEdldEF0dHJpYnV0ZShwYXJhbXMsICJwcm9maWxlLWxldmVsLWlkIiwgJnZhbCkpOworCisgICAgc3A8QUJ1ZmZlcj4gcHJvZmlsZUxldmVsSUQgPSBkZWNvZGVIZXgodmFsKTsKKyAgICBDSEVDSyhwcm9maWxlTGV2ZWxJRCAhPSBOVUxMKTsKKyAgICBDSEVDS19FUShwcm9maWxlTGV2ZWxJRC0+c2l6ZSgpLCAzdSk7CisKKyAgICBWZWN0b3I8c3A8QUJ1ZmZlcj4gPiBwYXJhbVNldHM7CisKKyAgICBzaXplX3QgbnVtU2VxUGFyYW1ldGVyU2V0cyA9IDA7CisgICAgc2l6ZV90IHRvdGFsU2VxUGFyYW1ldGVyU2V0U2l6ZSA9IDA7CisgICAgc2l6ZV90IG51bVBpY1BhcmFtZXRlclNldHMgPSAwOworICAgIHNpemVfdCB0b3RhbFBpY1BhcmFtZXRlclNldFNpemUgPSAwOworCisgICAgQ0hFQ0soR2V0QXR0cmlidXRlKHBhcmFtcywgInNwcm9wLXBhcmFtZXRlci1zZXRzIiwgJnZhbCkpOworICAgIHNpemVfdCBzdGFydCA9IDA7CisgICAgZm9yICg7OykgeworICAgICAgICBzc2l6ZV90IGNvbW1hUG9zID0gdmFsLmZpbmQoIiwiLCBzdGFydCk7CisgICAgICAgIHNpemVfdCBlbmQgPSAoY29tbWFQb3MgPCAwKSA/IHZhbC5zaXplKCkgOiBjb21tYVBvczsKKworICAgICAgICBBU3RyaW5nIG5hbFN0cmluZyh2YWwsIHN0YXJ0LCBlbmQgLSBzdGFydCk7CisgICAgICAgIHNwPEFCdWZmZXI+IG5hbCA9IGRlY29kZUJhc2U2NChuYWxTdHJpbmcpOworICAgICAgICBDSEVDSyhuYWwgIT0gTlVMTCk7CisgICAgICAgIENIRUNLX0dUKG5hbC0+c2l6ZSgpLCAwdSk7CisgICAgICAgIENIRUNLX0xFKG5hbC0+c2l6ZSgpLCA2NTUzNXUpOworCisgICAgICAgIHVpbnQ4X3QgbmFsVHlwZSA9IG5hbC0+ZGF0YSgpWzBdICYgMHgxZjsKKyAgICAgICAgaWYgKG51bVNlcVBhcmFtZXRlclNldHMgPT0gMCkgeworICAgICAgICAgICAgQ0hFQ0tfRVEoKHVuc2lnbmVkKW5hbFR5cGUsIDd1KTsKKyAgICAgICAgfSBlbHNlIGlmIChudW1QaWNQYXJhbWV0ZXJTZXRzID4gMCkgeworICAgICAgICAgICAgQ0hFQ0tfRVEoKHVuc2lnbmVkKW5hbFR5cGUsIDh1KTsKKyAgICAgICAgfQorICAgICAgICBpZiAobmFsVHlwZSA9PSA3KSB7CisgICAgICAgICAgICArK251bVNlcVBhcmFtZXRlclNldHM7CisgICAgICAgICAgICB0b3RhbFNlcVBhcmFtZXRlclNldFNpemUgKz0gbmFsLT5zaXplKCk7CisgICAgICAgIH0gZWxzZSAgeworICAgICAgICAgICAgQ0hFQ0tfRVEoKHVuc2lnbmVkKW5hbFR5cGUsIDh1KTsKKyAgICAgICAgICAgICsrbnVtUGljUGFyYW1ldGVyU2V0czsKKyAgICAgICAgICAgIHRvdGFsUGljUGFyYW1ldGVyU2V0U2l6ZSArPSBuYWwtPnNpemUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHBhcmFtU2V0cy5wdXNoKG5hbCk7CisKKyAgICAgICAgaWYgKGNvbW1hUG9zIDwgMCkgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBzdGFydCA9IGNvbW1hUG9zICsgMTsKKyAgICB9CisKKyAgICBDSEVDS19MVChudW1TZXFQYXJhbWV0ZXJTZXRzLCAzMnUpOworICAgIENIRUNLX0xFKG51bVBpY1BhcmFtZXRlclNldHMsIDI1NXUpOworCisgICAgc2l6ZV90IGNzZFNpemUgPQorICAgICAgICAxICsgMyArIDEgKyAxCisgICAgICAgICsgMiAqIG51bVNlcVBhcmFtZXRlclNldHMgKyB0b3RhbFNlcVBhcmFtZXRlclNldFNpemUKKyAgICAgICAgKyAxICsgMiAqIG51bVBpY1BhcmFtZXRlclNldHMgKyB0b3RhbFBpY1BhcmFtZXRlclNldFNpemU7CisKKyAgICBzcDxBQnVmZmVyPiBjc2QgPSBuZXcgQUJ1ZmZlcihjc2RTaXplKTsKKyAgICB1aW50OF90ICpvdXQgPSBjc2QtPmRhdGEoKTsKKworICAgICpvdXQrKyA9IDB4MDE7ICAvLyBjb25maWd1cmF0aW9uVmVyc2lvbgorICAgIG1lbWNweShvdXQsIHByb2ZpbGVMZXZlbElELT5kYXRhKCksIDMpOworICAgIG91dCArPSAzOworICAgICpvdXQrKyA9ICgweDNmIDw8IDIpIHwgMTsgIC8vIGxlbmd0aFNpemUgPT0gMiBieXRlcworICAgICpvdXQrKyA9IDB4ZTAgfCBudW1TZXFQYXJhbWV0ZXJTZXRzOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1TZXFQYXJhbWV0ZXJTZXRzOyArK2kpIHsKKyAgICAgICAgc3A8QUJ1ZmZlcj4gbmFsID0gcGFyYW1TZXRzLmVkaXRJdGVtQXQoaSk7CisKKyAgICAgICAgKm91dCsrID0gbmFsLT5zaXplKCkgPj4gODsKKyAgICAgICAgKm91dCsrID0gbmFsLT5zaXplKCkgJiAweGZmOworCisgICAgICAgIG1lbWNweShvdXQsIG5hbC0+ZGF0YSgpLCBuYWwtPnNpemUoKSk7CisKKyAgICAgICAgb3V0ICs9IG5hbC0+c2l6ZSgpOworICAgIH0KKworICAgICpvdXQrKyA9IG51bVBpY1BhcmFtZXRlclNldHM7CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bVBpY1BhcmFtZXRlclNldHM7ICsraSkgeworICAgICAgICBzcDxBQnVmZmVyPiBuYWwgPSBwYXJhbVNldHMuZWRpdEl0ZW1BdChpICsgbnVtU2VxUGFyYW1ldGVyU2V0cyk7CisKKyAgICAgICAgKm91dCsrID0gbmFsLT5zaXplKCkgPj4gODsKKyAgICAgICAgKm91dCsrID0gbmFsLT5zaXplKCkgJiAweGZmOworCisgICAgICAgIG1lbWNweShvdXQsIG5hbC0+ZGF0YSgpLCBuYWwtPnNpemUoKSk7CisKKyAgICAgICAgb3V0ICs9IG5hbC0+c2l6ZSgpOworICAgIH0KKworICAgIGhleGR1bXAoY3NkLT5kYXRhKCksIGNzZC0+c2l6ZSgpKTsKKworICAgIHJldHVybiBjc2Q7Cit9CisKK3NwPEFCdWZmZXI+IE1ha2VBQUNDb2RlY1NwZWNpZmljRGF0YShjb25zdCBjaGFyICpwYXJhbXMpIHsKKyAgICBBU3RyaW5nIHZhbDsKKyAgICBDSEVDSyhHZXRBdHRyaWJ1dGUocGFyYW1zLCAiY29uZmlnIiwgJnZhbCkpOworCisgICAgc3A8QUJ1ZmZlcj4gY29uZmlnID0gZGVjb2RlSGV4KHZhbCk7CisgICAgQ0hFQ0soY29uZmlnICE9IE5VTEwpOworICAgIENIRUNLX0dFKGNvbmZpZy0+c2l6ZSgpLCA0dSk7CisKKyAgICBjb25zdCB1aW50OF90ICpkYXRhID0gY29uZmlnLT5kYXRhKCk7CisgICAgdWludDMyX3QgeCA9IGRhdGFbMF0gPDwgMjQgfCBkYXRhWzFdIDw8IDE2IHwgZGF0YVsyXSA8PCA4IHwgZGF0YVszXTsKKyAgICB4ID0gKHggPj4gMSkgJiAweGZmZmY7CisKKyAgICBzdGF0aWMgY29uc3QgdWludDhfdCBrU3RhdGljRVNEU1tdID0geworICAgICAgICAweDAzLCAyMiwKKyAgICAgICAgMHgwMCwgMHgwMCwgICAgIC8vIEVTX0lECisgICAgICAgIDB4MDAsICAgICAgICAgICAvLyBzdHJlYW1EZXBlbmRlbmNlRmxhZywgVVJMX0ZsYWcsIE9DUnN0cmVhbUZsYWcKKworICAgICAgICAweDA0LCAxNywKKyAgICAgICAgMHg0MCwgICAgICAgICAgICAgICAgICAgICAgIC8vIEF1ZGlvIElTTy9JRUMgMTQ0OTYtMworICAgICAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLAorICAgICAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLAorICAgICAgICAweDAwLCAweDAwLCAweDAwLCAweDAwLAorCisgICAgICAgIDB4MDUsIDIsCisgICAgICAgIC8vIEF1ZGlvU3BlY2lmaWNJbmZvIGZvbGxvd3MKKyAgICB9OworCisgICAgc3A8QUJ1ZmZlcj4gY3NkID0gbmV3IEFCdWZmZXIoc2l6ZW9mKGtTdGF0aWNFU0RTKSArIDIpOworICAgIG1lbWNweShjc2QtPmRhdGEoKSwga1N0YXRpY0VTRFMsIHNpemVvZihrU3RhdGljRVNEUykpOworICAgIGNzZC0+ZGF0YSgpW3NpemVvZihrU3RhdGljRVNEUyldID0gKHggPj4gOCkgJiAweGZmOworICAgIGNzZC0+ZGF0YSgpW3NpemVvZihrU3RhdGljRVNEUykgKyAxXSA9IHggJiAweGZmOworCisgICAgaGV4ZHVtcChjc2QtPmRhdGEoKSwgY3NkLT5zaXplKCkpOworCisgICAgcmV0dXJuIGNzZDsKK30KKworQVBhY2tldFNvdXJjZTo6QVBhY2tldFNvdXJjZSgKKyAgICAgICAgY29uc3Qgc3A8QVNlc3Npb25EZXNjcmlwdGlvbj4gJnNlc3Npb25EZXNjLCBzaXplX3QgaW5kZXgpCisgICAgOiBtRm9ybWF0KG5ldyBNZXRhRGF0YSksCisgICAgICBtRU9TUmVzdWx0KE9LKSB7CisgICAgdW5zaWduZWQgbG9uZyBQVDsKKyAgICBBU3RyaW5nIGRlc2M7CisgICAgQVN0cmluZyBwYXJhbXM7CisgICAgc2Vzc2lvbkRlc2MtPmdldEZvcm1hdFR5cGUoaW5kZXgsICZQVCwgJmRlc2MsICZwYXJhbXMpOworCisgICAgaW50NjRfdCBkdXJhdGlvblVzOworICAgIGlmIChzZXNzaW9uRGVzYy0+Z2V0RHVyYXRpb25VcygmZHVyYXRpb25VcykpIHsKKyAgICAgICAgbUZvcm1hdC0+c2V0SW50NjQoa0tleUR1cmF0aW9uLCBkdXJhdGlvblVzKTsKKyAgICB9IGVsc2UgeworICAgICAgICBtRm9ybWF0LT5zZXRJbnQ2NChrS2V5RHVyYXRpb24sIDYwICogNjAgKiAxMDAwMDAwbGwpOworICAgIH0KKworICAgIGlmICghc3RybmNtcChkZXNjLmNfc3RyKCksICJIMjY0LyIsIDUpKSB7CisgICAgICAgIG1Gb3JtYXQtPnNldENTdHJpbmcoa0tleU1JTUVUeXBlLCBNRURJQV9NSU1FVFlQRV9WSURFT19BVkMpOworCisgICAgICAgIGludDMyX3Qgd2lkdGgsIGhlaWdodDsKKyAgICAgICAgc2Vzc2lvbkRlc2MtPmdldERpbWVuc2lvbnMoaW5kZXgsIFBULCAmd2lkdGgsICZoZWlnaHQpOworCisgICAgICAgIG1Gb3JtYXQtPnNldEludDMyKGtLZXlXaWR0aCwgd2lkdGgpOworICAgICAgICBtRm9ybWF0LT5zZXRJbnQzMihrS2V5SGVpZ2h0LCBoZWlnaHQpOworCisgICAgICAgIHNwPEFCdWZmZXI+IGNvZGVjU3BlY2lmaWNEYXRhID0KKyAgICAgICAgICAgIE1ha2VBVkNDb2RlY1NwZWNpZmljRGF0YShwYXJhbXMuY19zdHIoKSk7CisKKyAgICAgICAgbUZvcm1hdC0+c2V0RGF0YSgKKyAgICAgICAgICAgICAgICBrS2V5QVZDQywgMCwKKyAgICAgICAgICAgICAgICBjb2RlY1NwZWNpZmljRGF0YS0+ZGF0YSgpLCBjb2RlY1NwZWNpZmljRGF0YS0+c2l6ZSgpKTsKKworICAgIH0gZWxzZSBpZiAoIXN0cm5jbXAoZGVzYy5jX3N0cigpLCAiTVA0QS1MQVRNIiwgOSkpIHsKKyAgICAgICAgbUZvcm1hdC0+c2V0Q1N0cmluZyhrS2V5TUlNRVR5cGUsIE1FRElBX01JTUVUWVBFX0FVRElPX0FBQyk7CisKKyAgICAgICAgaW50MzJfdCBzYW1wbGVSYXRlLCBudW1DaGFubmVsczsKKyAgICAgICAgQVNlc3Npb25EZXNjcmlwdGlvbjo6UGFyc2VGb3JtYXREZXNjKAorICAgICAgICAgICAgICAgIGRlc2MuY19zdHIoKSwgJnNhbXBsZVJhdGUsICZudW1DaGFubmVscyk7CisKKyAgICAgICAgbUZvcm1hdC0+c2V0SW50MzIoa0tleVNhbXBsZVJhdGUsIHNhbXBsZVJhdGUpOworICAgICAgICBtRm9ybWF0LT5zZXRJbnQzMihrS2V5Q2hhbm5lbENvdW50LCBudW1DaGFubmVscyk7CisKKyAgICAgICAgc3A8QUJ1ZmZlcj4gY29kZWNTcGVjaWZpY0RhdGEgPQorICAgICAgICAgICAgTWFrZUFBQ0NvZGVjU3BlY2lmaWNEYXRhKHBhcmFtcy5jX3N0cigpKTsKKworICAgICAgICBtRm9ybWF0LT5zZXREYXRhKAorICAgICAgICAgICAgICAgIGtLZXlFU0RTLCAwLAorICAgICAgICAgICAgICAgIGNvZGVjU3BlY2lmaWNEYXRhLT5kYXRhKCksIGNvZGVjU3BlY2lmaWNEYXRhLT5zaXplKCkpOworICAgIH0gZWxzZSB7CisgICAgICAgIFRSRVNQQVNTKCk7CisgICAgfQorfQorCitBUGFja2V0U291cmNlOjp+QVBhY2tldFNvdXJjZSgpIHsKK30KKworc3RhdHVzX3QgQVBhY2tldFNvdXJjZTo6c3RhcnQoTWV0YURhdGEgKnBhcmFtcykgeworICAgIHJldHVybiBPSzsKK30KKworc3RhdHVzX3QgQVBhY2tldFNvdXJjZTo6c3RvcCgpIHsKKyAgICByZXR1cm4gT0s7Cit9CisKK3NwPE1ldGFEYXRhPiBBUGFja2V0U291cmNlOjpnZXRGb3JtYXQoKSB7CisgICAgcmV0dXJuIG1Gb3JtYXQ7Cit9CisKK3N0YXR1c190IEFQYWNrZXRTb3VyY2U6OnJlYWQoCisgICAgICAgIE1lZGlhQnVmZmVyICoqb3V0LCBjb25zdCBSZWFkT3B0aW9ucyAqKSB7CisgICAgKm91dCA9IE5VTEw7CisKKyAgICBNdXRleDo6QXV0b2xvY2sgYXV0b0xvY2sobUxvY2spOworICAgIHdoaWxlIChtRU9TUmVzdWx0ID09IE9LICYmIG1CdWZmZXJzLmVtcHR5KCkpIHsKKyAgICAgICAgbUNvbmRpdGlvbi53YWl0KG1Mb2NrKTsKKyAgICB9CisKKyAgICBpZiAoIW1CdWZmZXJzLmVtcHR5KCkpIHsKKyAgICAgICAgY29uc3Qgc3A8QUJ1ZmZlcj4gYnVmZmVyID0gKm1CdWZmZXJzLmJlZ2luKCk7CisKKyAgICAgICAgdWludDY0X3QgbnRwVGltZTsKKyAgICAgICAgQ0hFQ0soYnVmZmVyLT5tZXRhKCktPmZpbmRJbnQ2NCgKKyAgICAgICAgICAgICAgICAgICAgIm50cC10aW1lIiwgKGludDY0X3QgKikmbnRwVGltZSkpOworCisgICAgICAgIGludDY0X3QgdGltZVVzID0gKGludDY0X3QpKG50cFRpbWUgKiAxRTYgLyAoMWxsIDw8IDMyKSk7CisKKyAgICAgICAgTWVkaWFCdWZmZXIgKm1lZGlhQnVmZmVyID0gbmV3IE1lZGlhQnVmZmVyKGJ1ZmZlci0+c2l6ZSgpKTsKKyAgICAgICAgbWVkaWFCdWZmZXItPm1ldGFfZGF0YSgpLT5zZXRJbnQ2NChrS2V5VGltZSwgdGltZVVzKTsKKyAgICAgICAgbWVtY3B5KG1lZGlhQnVmZmVyLT5kYXRhKCksIGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUoKSk7CisgICAgICAgICpvdXQgPSBtZWRpYUJ1ZmZlcjsKKworICAgICAgICBtQnVmZmVycy5lcmFzZShtQnVmZmVycy5iZWdpbigpKTsKKyAgICAgICAgcmV0dXJuIE9LOworICAgIH0KKworICAgIHJldHVybiBtRU9TUmVzdWx0OworfQorCit2b2lkIEFQYWNrZXRTb3VyY2U6OnF1ZXVlQWNjZXNzVW5pdChjb25zdCBzcDxBQnVmZmVyPiAmYnVmZmVyKSB7CisgICAgaW50MzJfdCBkYW1hZ2VkOworICAgIGlmIChidWZmZXItPm1ldGEoKS0+ZmluZEludDMyKCJkYW1hZ2VkIiwgJmRhbWFnZWQpICYmIGRhbWFnZWQpIHsKKyAgICAgICAgLy8gTE9HKFZFUkJPU0UpIDw8ICJkaXNjYXJkaW5nIGRhbWFnZWQgQVUiOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKKyAgICBtQnVmZmVycy5wdXNoX2JhY2soYnVmZmVyKTsKKyAgICBtQ29uZGl0aW9uLnNpZ25hbCgpOworfQorCit2b2lkIEFQYWNrZXRTb3VyY2U6OnNpZ25hbEVPUyhzdGF0dXNfdCByZXN1bHQpIHsKKyAgICBDSEVDSyhyZXN1bHQgIT0gT0spOworCisgICAgTXV0ZXg6OkF1dG9sb2NrIGF1dG9Mb2NrKG1Mb2NrKTsKKyAgICBtRU9TUmVzdWx0ID0gcmVzdWx0OworICAgIG1Db25kaXRpb24uc2lnbmFsKCk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9ydHNwL0FQYWNrZXRTb3VyY2UuaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L3J0c3AvQVBhY2tldFNvdXJjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwNDBlZWUKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9ydHNwL0FQYWNrZXRTb3VyY2UuaApAQCAtMCwwICsxLDYxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2lmbmRlZiBBX1BBQ0tFVF9TT1VSQ0VfSF8KKworI2RlZmluZSBBX1BBQ0tFVF9TT1VSQ0VfSF8KKworI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUJhc2UuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYVNvdXJjZS5oPgorI2luY2x1ZGUgPHV0aWxzL3RocmVhZHMuaD4KKyNpbmNsdWRlIDx1dGlscy9MaXN0Lmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworc3RydWN0IEFCdWZmZXI7CitzdHJ1Y3QgQVNlc3Npb25EZXNjcmlwdGlvbjsKKworc3RydWN0IEFQYWNrZXRTb3VyY2UgOiBwdWJsaWMgTWVkaWFTb3VyY2UgeworICAgIEFQYWNrZXRTb3VyY2UoY29uc3Qgc3A8QVNlc3Npb25EZXNjcmlwdGlvbj4gJnNlc3Npb25EZXNjLCBzaXplX3QgaW5kZXgpOworCisgICAgdmlydHVhbCBzdGF0dXNfdCBzdGFydChNZXRhRGF0YSAqcGFyYW1zID0gTlVMTCk7CisgICAgdmlydHVhbCBzdGF0dXNfdCBzdG9wKCk7CisgICAgdmlydHVhbCBzcDxNZXRhRGF0YT4gZ2V0Rm9ybWF0KCk7CisKKyAgICB2aXJ0dWFsIHN0YXR1c190IHJlYWQoCisgICAgICAgICAgICBNZWRpYUJ1ZmZlciAqKmJ1ZmZlciwgY29uc3QgUmVhZE9wdGlvbnMgKm9wdGlvbnMgPSBOVUxMKTsKKworICAgIHZvaWQgcXVldWVBY2Nlc3NVbml0KGNvbnN0IHNwPEFCdWZmZXI+ICZidWZmZXIpOworICAgIHZvaWQgc2lnbmFsRU9TKHN0YXR1c190IHJlc3VsdCk7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5BUGFja2V0U291cmNlKCk7CisKK3ByaXZhdGU6CisgICAgTXV0ZXggbUxvY2s7CisgICAgQ29uZGl0aW9uIG1Db25kaXRpb247CisKKyAgICBzcDxNZXRhRGF0YT4gbUZvcm1hdDsKKyAgICBMaXN0PHNwPEFCdWZmZXI+ID4gbUJ1ZmZlcnM7CisgICAgc3RhdHVzX3QgbUVPU1Jlc3VsdDsKKworICAgIERJU0FMTE9XX0VWSUxfQ09OU1RSVUNUT1JTKEFQYWNrZXRTb3VyY2UpOworfTsKKworCit9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCisjZW5kaWYgIC8vIEFfUEFDS0VUX1NPVVJDRV9IXwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvcnRzcC9BUlRQQXNzZW1ibGVyLmNwcCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L3J0c3AvQVJUUEFzc2VtYmxlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQyMjViOAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L3J0c3AvQVJUUEFzc2VtYmxlci5jcHAKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpbmNsdWRlICJBUlRQQXNzZW1ibGVyLmgiCisKKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FCdWZmZXIuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FEZWJ1Zy5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQU1lc3NhZ2UuaD4KKworI2luY2x1ZGUgPHN0ZGludC5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK3N0YXRpYyBpbnQ2NF90IGdldE5vd1VzKCkgeworICAgIHN0cnVjdCB0aW1ldmFsIHR2OworICAgIGdldHRpbWVvZmRheSgmdHYsIE5VTEwpOworCisgICAgcmV0dXJuIChpbnQ2NF90KXR2LnR2X3VzZWMgKyB0di50dl9zZWMgKiAxMDAwMDAwbGw7Cit9CisKK0FSVFBBc3NlbWJsZXI6OkFSVFBBc3NlbWJsZXIoKQorICAgIDogbUZpcnN0RmFpbHVyZVRpbWVVcygtMSkgeworfQorCit2b2lkIEFSVFBBc3NlbWJsZXI6OlByb3BhZ2F0ZVRpbWVzKAorICAgICAgICBjb25zdCBzcDxBQnVmZmVyPiAmZnJvbSwgY29uc3Qgc3A8QUJ1ZmZlcj4gJnRvKSB7CisgICAgdWludDMyX3QgcnRwVGltZTsKKyAgICBDSEVDSyhmcm9tLT5tZXRhKCktPmZpbmRJbnQzMigicnRwLXRpbWUiLCAoaW50MzJfdCAqKSZydHBUaW1lKSk7CisKKyAgICB1aW50NjRfdCBudHBUaW1lID0gMDsKKyAgICBDSEVDSyhmcm9tLT5tZXRhKCktPmZpbmRJbnQ2NCgibnRwLXRpbWUiLCAoaW50NjRfdCAqKSZudHBUaW1lKSk7CisKKyAgICB0by0+bWV0YSgpLT5zZXRJbnQzMigicnRwLXRpbWUiLCBydHBUaW1lKTsKKyAgICB0by0+bWV0YSgpLT5zZXRJbnQ2NCgibnRwLXRpbWUiLCBudHBUaW1lKTsKK30KKwordm9pZCBBUlRQQXNzZW1ibGVyOjpvblBhY2tldFJlY2VpdmVkKGNvbnN0IHNwPEFSVFBTb3VyY2U+ICZzb3VyY2UpIHsKKyAgICBBc3NlbWJseVN0YXR1cyBzdGF0dXM7CisgICAgZm9yICg7OykgeworICAgICAgICBzdGF0dXMgPSBhc3NlbWJsZU1vcmUoc291cmNlKTsKKworICAgICAgICBpZiAoc3RhdHVzID09IFdST05HX1NFUVVFTkNFX05VTUJFUikgeworICAgICAgICAgICAgaWYgKG1GaXJzdEZhaWx1cmVUaW1lVXMgPj0gMCkgeworICAgICAgICAgICAgICAgIGlmIChnZXROb3dVcygpIC0gbUZpcnN0RmFpbHVyZVRpbWVVcyA+IDEwMDAwbGwpIHsKKyAgICAgICAgICAgICAgICAgICAgbUZpcnN0RmFpbHVyZVRpbWVVcyA9IC0xOworCisgICAgICAgICAgICAgICAgICAgIC8vIExPRyhWRVJCT1NFKSA8PCAid2FpdGVkIHRvbyBsb25nIGZvciBwYWNrZXQuIjsKKyAgICAgICAgICAgICAgICAgICAgcGFja2V0TG9zdCgpOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1GaXJzdEZhaWx1cmVUaW1lVXMgPSBnZXROb3dVcygpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtRmlyc3RGYWlsdXJlVGltZVVzID0gLTE7CisKKyAgICAgICAgICAgIGlmIChzdGF0dXMgPT0gTk9UX0VOT1VHSF9EQVRBKSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9ydHNwL0FSVFBBc3NlbWJsZXIuaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L3J0c3AvQVJUUEFzc2VtYmxlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5MmJkNjUKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9ydHNwL0FSVFBBc3NlbWJsZXIuaApAQCAtMCwwICsxLDU2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2lmbmRlZiBBX1JUUF9BU1NFTUJMRVJfSF8KKworI2RlZmluZSBBX1JUUF9BU1NFTUJMRVJfSF8KKworI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUJhc2UuaD4KKyNpbmNsdWRlIDx1dGlscy9SZWZCYXNlLmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworc3RydWN0IEFCdWZmZXI7CitzdHJ1Y3QgQVJUUFNvdXJjZTsKKworc3RydWN0IEFSVFBBc3NlbWJsZXIgOiBwdWJsaWMgUmVmQmFzZSB7CisgICAgZW51bSBBc3NlbWJseVN0YXR1cyB7CisgICAgICAgIE1BTEZPUk1FRF9QQUNLRVQsCisgICAgICAgIFdST05HX1NFUVVFTkNFX05VTUJFUiwKKyAgICAgICAgTk9UX0VOT1VHSF9EQVRBLAorICAgICAgICBPSworICAgIH07CisKKyAgICBBUlRQQXNzZW1ibGVyKCk7CisKKyAgICB2b2lkIG9uUGFja2V0UmVjZWl2ZWQoY29uc3Qgc3A8QVJUUFNvdXJjZT4gJnNvdXJjZSk7CisKK3Byb3RlY3RlZDoKKyAgICBzdGF0aWMgdm9pZCBQcm9wYWdhdGVUaW1lcygKKyAgICAgICAgY29uc3Qgc3A8QUJ1ZmZlcj4gJmZyb20sIGNvbnN0IHNwPEFCdWZmZXI+ICZ0byk7CisKKyAgICB2aXJ0dWFsIEFzc2VtYmx5U3RhdHVzIGFzc2VtYmxlTW9yZShjb25zdCBzcDxBUlRQU291cmNlPiAmc291cmNlKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBhY2tldExvc3QoKSA9IDA7CisKK3ByaXZhdGU6CisgICAgaW50NjRfdCBtRmlyc3RGYWlsdXJlVGltZVVzOworCisgICAgRElTQUxMT1dfRVZJTF9DT05TVFJVQ1RPUlMoQVJUUEFzc2VtYmxlcik7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCisjZW5kaWYgIC8vIEFfUlRQX0FTU0VNQkxFUl9IXwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvcnRzcC9BUlRQQ29ubmVjdGlvbi5jcHAgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9ydHNwL0FSVFBDb25uZWN0aW9uLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDQxM2YwCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvcnRzcC9BUlRQQ29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSw0OTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaW5jbHVkZSAiQVJUUENvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgIkFSVFBTb3VyY2UuaCIKKyNpbmNsdWRlICJBU2Vzc2lvbkRlc2NyaXB0aW9uLmgiCisKKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FCdWZmZXIuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FEZWJ1Zy5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQU1lc3NhZ2UuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FTdHJpbmcuaD4KKworI2luY2x1ZGUgPGFycGEvaW5ldC5oPgorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKworI2RlZmluZSBWRVJCT1NFICAgICAgICAgMAorCisjaWYgVkVSQk9TRQorI2luY2x1ZGUgImhleGR1bXAuaCIKKyNlbmRpZgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK3N0YXRpYyB1aW50MTZfdCB1MTZhdChjb25zdCB1aW50OF90ICpkYXRhKSB7CisgICAgcmV0dXJuIGRhdGFbMF0gPDwgOCB8IGRhdGFbMV07Cit9CisKK3N0YXRpYyB1aW50MzJfdCB1MzJhdChjb25zdCB1aW50OF90ICpkYXRhKSB7CisgICAgcmV0dXJuIHUxNmF0KGRhdGEpIDw8IDE2IHwgdTE2YXQoJmRhdGFbMl0pOworfQorCitzdGF0aWMgdWludDY0X3QgdTY0YXQoY29uc3QgdWludDhfdCAqZGF0YSkgeworICAgIHJldHVybiAodWludDY0X3QpKHUzMmF0KGRhdGEpKSA8PCAzMiB8IHUzMmF0KCZkYXRhWzRdKTsKK30KKworLy8gc3RhdGljCitjb25zdCBpbnQ2NF90IEFSVFBDb25uZWN0aW9uOjprU2VsZWN0VGltZW91dFVzID0gMTAwMGxsOworCitzdHJ1Y3QgQVJUUENvbm5lY3Rpb246OlN0cmVhbUluZm8geworICAgIGludCBtUlRQU29ja2V0OworICAgIGludCBtUlRDUFNvY2tldDsKKyAgICBzcDxBU2Vzc2lvbkRlc2NyaXB0aW9uPiBtU2Vzc2lvbkRlc2M7CisgICAgc2l6ZV90IG1JbmRleDsKKyAgICBzcDxBTWVzc2FnZT4gbU5vdGlmeU1zZzsKK307CisKK0FSVFBDb25uZWN0aW9uOjpBUlRQQ29ubmVjdGlvbigpCisgICAgOiBtUG9sbEV2ZW50UGVuZGluZyhmYWxzZSkgeworfQorCitBUlRQQ29ubmVjdGlvbjo6fkFSVFBDb25uZWN0aW9uKCkgeworfQorCit2b2lkIEFSVFBDb25uZWN0aW9uOjphZGRTdHJlYW0oCisgICAgICAgIGludCBydHBTb2NrZXQsIGludCBydGNwU29ja2V0LAorICAgICAgICBjb25zdCBzcDxBU2Vzc2lvbkRlc2NyaXB0aW9uPiAmc2Vzc2lvbkRlc2MsCisgICAgICAgIHNpemVfdCBpbmRleCwKKyAgICAgICAgY29uc3Qgc3A8QU1lc3NhZ2U+ICZub3RpZnkpIHsKKyAgICBzcDxBTWVzc2FnZT4gbXNnID0gbmV3IEFNZXNzYWdlKGtXaGF0QWRkU3RyZWFtLCBpZCgpKTsKKyAgICBtc2ctPnNldEludDMyKCJydHAtc29ja2V0IiwgcnRwU29ja2V0KTsKKyAgICBtc2ctPnNldEludDMyKCJydGNwLXNvY2tldCIsIHJ0Y3BTb2NrZXQpOworICAgIG1zZy0+c2V0T2JqZWN0KCJzZXNzaW9uLWRlc2MiLCBzZXNzaW9uRGVzYyk7CisgICAgbXNnLT5zZXRTaXplKCJpbmRleCIsIGluZGV4KTsKKyAgICBtc2ctPnNldE1lc3NhZ2UoIm5vdGlmeSIsIG5vdGlmeSk7CisgICAgbXNnLT5wb3N0KCk7Cit9CisKK3ZvaWQgQVJUUENvbm5lY3Rpb246OnJlbW92ZVN0cmVhbShpbnQgcnRwU29ja2V0LCBpbnQgcnRjcFNvY2tldCkgeworICAgIHNwPEFNZXNzYWdlPiBtc2cgPSBuZXcgQU1lc3NhZ2Uoa1doYXRSZW1vdmVTdHJlYW0sIGlkKCkpOworICAgIG1zZy0+c2V0SW50MzIoInJ0cC1zb2NrZXQiLCBydHBTb2NrZXQpOworICAgIG1zZy0+c2V0SW50MzIoInJ0Y3Atc29ja2V0IiwgcnRjcFNvY2tldCk7CisgICAgbXNnLT5wb3N0KCk7Cit9CisKK3N0YXRpYyB2b2lkIGJ1bXBTb2NrZXRCdWZmZXJTaXplKGludCBzKSB7CisgICAgaW50IHNpemUgPSAyNTYgKiAxMDI0OworICAgIENIRUNLX0VRKHNldHNvY2tvcHQocywgU09MX1NPQ0tFVCwgU09fUkNWQlVGLCAmc2l6ZSwgc2l6ZW9mKHNpemUpKSwgMCk7Cit9CisKKy8vIHN0YXRpYwordm9pZCBBUlRQQ29ubmVjdGlvbjo6TWFrZVBvcnRQYWlyKAorICAgICAgICBpbnQgKnJ0cFNvY2tldCwgaW50ICpydGNwU29ja2V0LCB1bnNpZ25lZCAqcnRwUG9ydCkgeworICAgICpydHBTb2NrZXQgPSBzb2NrZXQoQUZfSU5FVCwgU09DS19ER1JBTSwgMCk7CisgICAgQ0hFQ0tfR0UoKnJ0cFNvY2tldCwgMCk7CisKKyAgICBidW1wU29ja2V0QnVmZmVyU2l6ZSgqcnRwU29ja2V0KTsKKworICAgICpydGNwU29ja2V0ID0gc29ja2V0KEFGX0lORVQsIFNPQ0tfREdSQU0sIDApOworICAgIENIRUNLX0dFKCpydGNwU29ja2V0LCAwKTsKKworICAgIGJ1bXBTb2NrZXRCdWZmZXJTaXplKCpydGNwU29ja2V0KTsKKworICAgIHVuc2lnbmVkIHN0YXJ0ID0gKHJhbmQoKSAqIDEwMDApLyBSQU5EX01BWCArIDE1NTUwOworICAgIHN0YXJ0ICY9IH4xOworCisgICAgZm9yICh1bnNpZ25lZCBwb3J0ID0gc3RhcnQ7IHBvcnQgPCA2NTUzNjsgcG9ydCArPSAyKSB7CisgICAgICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBhZGRyOworICAgICAgICBtZW1zZXQoYWRkci5zaW5femVybywgMCwgc2l6ZW9mKGFkZHIuc2luX3plcm8pKTsKKyAgICAgICAgYWRkci5zaW5fZmFtaWx5ID0gQUZfSU5FVDsKKyAgICAgICAgYWRkci5zaW5fYWRkci5zX2FkZHIgPSBJTkFERFJfQU5ZOworICAgICAgICBhZGRyLnNpbl9wb3J0ID0gaHRvbnMocG9ydCk7CisKKyAgICAgICAgaWYgKGJpbmQoKnJ0cFNvY2tldCwKKyAgICAgICAgICAgICAgICAgKGNvbnN0IHN0cnVjdCBzb2NrYWRkciAqKSZhZGRyLCBzaXplb2YoYWRkcikpIDwgMCkgeworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICBhZGRyLnNpbl9wb3J0ID0gaHRvbnMocG9ydCArIDEpOworCisgICAgICAgIGlmIChiaW5kKCpydGNwU29ja2V0LAorICAgICAgICAgICAgICAgICAoY29uc3Qgc3RydWN0IHNvY2thZGRyICopJmFkZHIsIHNpemVvZihhZGRyKSkgPT0gMCkgeworICAgICAgICAgICAgKnJ0cFBvcnQgPSBwb3J0OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCisgICAgVFJFU1BBU1MoKTsKK30KKwordm9pZCBBUlRQQ29ubmVjdGlvbjo6b25NZXNzYWdlUmVjZWl2ZWQoY29uc3Qgc3A8QU1lc3NhZ2U+ICZtc2cpIHsKKyAgICBzd2l0Y2ggKG1zZy0+d2hhdCgpKSB7CisgICAgICAgIGNhc2Uga1doYXRBZGRTdHJlYW06CisgICAgICAgIHsKKyAgICAgICAgICAgIG9uQWRkU3RyZWFtKG1zZyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Uga1doYXRSZW1vdmVTdHJlYW06CisgICAgICAgIHsKKyAgICAgICAgICAgIG9uUmVtb3ZlU3RyZWFtKG1zZyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGNhc2Uga1doYXRQb2xsU3RyZWFtczoKKyAgICAgICAgeworICAgICAgICAgICAgb25Qb2xsU3RyZWFtcygpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBkZWZhdWx0OgorICAgICAgICB7CisgICAgICAgICAgICBUUkVTUEFTUygpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9Cit9CisKK3ZvaWQgQVJUUENvbm5lY3Rpb246Om9uQWRkU3RyZWFtKGNvbnN0IHNwPEFNZXNzYWdlPiAmbXNnKSB7CisgICAgbVN0cmVhbXMucHVzaF9iYWNrKFN0cmVhbUluZm8oKSk7CisgICAgU3RyZWFtSW5mbyAqaW5mbyA9ICYqLS1tU3RyZWFtcy5lbmQoKTsKKworICAgIGludDMyX3QgczsKKyAgICBDSEVDSyhtc2ctPmZpbmRJbnQzMigicnRwLXNvY2tldCIsICZzKSk7CisgICAgaW5mby0+bVJUUFNvY2tldCA9IHM7CisgICAgQ0hFQ0sobXNnLT5maW5kSW50MzIoInJ0Y3Atc29ja2V0IiwgJnMpKTsKKyAgICBpbmZvLT5tUlRDUFNvY2tldCA9IHM7CisKKyAgICBzcDxSZWZCYXNlPiBvYmo7CisgICAgQ0hFQ0sobXNnLT5maW5kT2JqZWN0KCJzZXNzaW9uLWRlc2MiLCAmb2JqKSk7CisgICAgaW5mby0+bVNlc3Npb25EZXNjID0gc3RhdGljX2Nhc3Q8QVNlc3Npb25EZXNjcmlwdGlvbiAqPihvYmouZ2V0KCkpOworCisgICAgQ0hFQ0sobXNnLT5maW5kU2l6ZSgiaW5kZXgiLCAmaW5mby0+bUluZGV4KSk7CisgICAgQ0hFQ0sobXNnLT5maW5kTWVzc2FnZSgibm90aWZ5IiwgJmluZm8tPm1Ob3RpZnlNc2cpKTsKKworICAgIHBvc3RQb2xsRXZlbnQoKTsKK30KKwordm9pZCBBUlRQQ29ubmVjdGlvbjo6b25SZW1vdmVTdHJlYW0oY29uc3Qgc3A8QU1lc3NhZ2U+ICZtc2cpIHsKKyAgICBpbnQzMl90IHJ0cFNvY2tldCwgcnRjcFNvY2tldDsKKyAgICBDSEVDSyhtc2ctPmZpbmRJbnQzMigicnRwLXNvY2tldCIsICZydHBTb2NrZXQpKTsKKyAgICBDSEVDSyhtc2ctPmZpbmRJbnQzMigicnRjcC1zb2NrZXQiLCAmcnRjcFNvY2tldCkpOworCisgICAgTGlzdDxTdHJlYW1JbmZvPjo6aXRlcmF0b3IgaXQgPSBtU3RyZWFtcy5iZWdpbigpOworICAgIHdoaWxlIChpdCAhPSBtU3RyZWFtcy5lbmQoKQorICAgICAgICAgICAmJiAoaXQtPm1SVFBTb2NrZXQgIT0gcnRwU29ja2V0IHx8IGl0LT5tUlRDUFNvY2tldCAhPSBydGNwU29ja2V0KSkgeworICAgICAgICArK2l0OworICAgIH0KKworICAgIGlmIChpdCA9PSBtU3RyZWFtcy5lbmQoKSkgeworICAgICAgICBUUkVTUEFTUygpOworICAgIH0KKworICAgIG1TdHJlYW1zLmVyYXNlKGl0KTsKK30KKwordm9pZCBBUlRQQ29ubmVjdGlvbjo6cG9zdFBvbGxFdmVudCgpIHsKKyAgICBpZiAobVBvbGxFdmVudFBlbmRpbmcpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNwPEFNZXNzYWdlPiBtc2cgPSBuZXcgQU1lc3NhZ2Uoa1doYXRQb2xsU3RyZWFtcywgaWQoKSk7CisgICAgbXNnLT5wb3N0KCk7CisKKyAgICBtUG9sbEV2ZW50UGVuZGluZyA9IHRydWU7Cit9CisKK3ZvaWQgQVJUUENvbm5lY3Rpb246Om9uUG9sbFN0cmVhbXMoKSB7CisgICAgbVBvbGxFdmVudFBlbmRpbmcgPSBmYWxzZTsKKworICAgIGlmIChtU3RyZWFtcy5lbXB0eSgpKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzdHJ1Y3QgdGltZXZhbCB0djsKKyAgICB0di50dl9zZWMgPSAwOworICAgIHR2LnR2X3VzZWMgPSBrU2VsZWN0VGltZW91dFVzOworCisgICAgZmRfc2V0IHJzOworICAgIEZEX1pFUk8oJnJzKTsKKworICAgIGludCBtYXhTb2NrZXQgPSAtMTsKKyAgICBmb3IgKExpc3Q8U3RyZWFtSW5mbz46Oml0ZXJhdG9yIGl0ID0gbVN0cmVhbXMuYmVnaW4oKTsKKyAgICAgICAgIGl0ICE9IG1TdHJlYW1zLmVuZCgpOyArK2l0KSB7CisgICAgICAgIEZEX1NFVChpdC0+bVJUUFNvY2tldCwgJnJzKTsKKyAgICAgICAgRkRfU0VUKGl0LT5tUlRDUFNvY2tldCwgJnJzKTsKKworICAgICAgICBpZiAoaXQtPm1SVFBTb2NrZXQgPiBtYXhTb2NrZXQpIHsKKyAgICAgICAgICAgIG1heFNvY2tldCA9IGl0LT5tUlRQU29ja2V0OworICAgICAgICB9CisgICAgICAgIGlmIChpdC0+bVJUQ1BTb2NrZXQgPiBtYXhTb2NrZXQpIHsKKyAgICAgICAgICAgIG1heFNvY2tldCA9IGl0LT5tUlRDUFNvY2tldDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGludCByZXMgPSBzZWxlY3QobWF4U29ja2V0ICsgMSwgJnJzLCBOVUxMLCBOVUxMLCAmdHYpOworICAgIENIRUNLX0dFKHJlcywgMCk7CisKKyAgICBpZiAocmVzID4gMCkgeworICAgICAgICBmb3IgKExpc3Q8U3RyZWFtSW5mbz46Oml0ZXJhdG9yIGl0ID0gbVN0cmVhbXMuYmVnaW4oKTsKKyAgICAgICAgICAgICBpdCAhPSBtU3RyZWFtcy5lbmQoKTsgKytpdCkgeworICAgICAgICAgICAgaWYgKEZEX0lTU0VUKGl0LT5tUlRQU29ja2V0LCAmcnMpKSB7CisgICAgICAgICAgICAgICAgcmVjZWl2ZSgmKml0LCB0cnVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChGRF9JU1NFVChpdC0+bVJUQ1BTb2NrZXQsICZycykpIHsKKyAgICAgICAgICAgICAgICByZWNlaXZlKCYqaXQsIGZhbHNlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHBvc3RQb2xsRXZlbnQoKTsKK30KKworc3RhdHVzX3QgQVJUUENvbm5lY3Rpb246OnJlY2VpdmUoU3RyZWFtSW5mbyAqcywgYm9vbCByZWNlaXZlUlRQKSB7CisgICAgc3A8QUJ1ZmZlcj4gYnVmZmVyID0gbmV3IEFCdWZmZXIoNjU1MzYpOworCisgICAgc3RydWN0IHNvY2thZGRyX2luIGZyb207CisgICAgc29ja2xlbl90IGZyb21TaXplID0gc2l6ZW9mKGZyb20pOworCisgICAgc3NpemVfdCBuYnl0ZXMgPSByZWN2ZnJvbSgKKyAgICAgICAgICAgIHJlY2VpdmVSVFAgPyBzLT5tUlRQU29ja2V0IDogcy0+bVJUQ1BTb2NrZXQsCisgICAgICAgICAgICBidWZmZXItPmRhdGEoKSwKKyAgICAgICAgICAgIGJ1ZmZlci0+Y2FwYWNpdHkoKSwKKyAgICAgICAgICAgIDAsCisgICAgICAgICAgICAoc3RydWN0IHNvY2thZGRyICopJmZyb20sCisgICAgICAgICAgICAmZnJvbVNpemUpOworCisgICAgaWYgKG5ieXRlcyA8IDApIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGJ1ZmZlci0+c2V0UmFuZ2UoMCwgbmJ5dGVzKTsKKworICAgIHN0YXR1c190IGVycjsKKyAgICBpZiAocmVjZWl2ZVJUUCkgeworICAgICAgICBlcnIgPSBwYXJzZVJUUChzLCBidWZmZXIpOworICAgIH0gZWxzZSB7CisgICAgICAgIGVyciA9IHBhcnNlUlRDUChzLCBidWZmZXIpOworICAgIH0KKworICAgIHJldHVybiBlcnI7Cit9CisKK3N0YXR1c190IEFSVFBDb25uZWN0aW9uOjpwYXJzZVJUUChTdHJlYW1JbmZvICpzLCBjb25zdCBzcDxBQnVmZmVyPiAmYnVmZmVyKSB7CisgICAgc2l6ZV90IHNpemUgPSBidWZmZXItPnNpemUoKTsKKworICAgIGlmIChzaXplIDwgMTIpIHsKKyAgICAgICAgLy8gVG9vIHNob3J0IHRvIGJlIGEgdmFsaWQgUlRQIGhlYWRlci4KKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGNvbnN0IHVpbnQ4X3QgKmRhdGEgPSBidWZmZXItPmRhdGEoKTsKKworICAgIGlmICgoZGF0YVswXSA+PiA2KSAhPSAyKSB7CisgICAgICAgIC8vIFVuc3VwcG9ydGVkIHZlcnNpb24uCisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoZGF0YVswXSAmIDB4MjApIHsKKyAgICAgICAgLy8gUGFkZGluZyBwcmVzZW50LgorCisgICAgICAgIHNpemVfdCBwYWRkaW5nTGVuZ3RoID0gZGF0YVtzaXplIC0gMV07CisKKyAgICAgICAgaWYgKHBhZGRpbmdMZW5ndGggKyAxMiA+IHNpemUpIHsKKyAgICAgICAgICAgIC8vIElmIHdlIHJlbW92ZWQgdGhpcyBtdWNoIHBhZGRpbmcgd2UnZCBlbmQgdXAgd2l0aCBzb21ldGhpbmcKKyAgICAgICAgICAgIC8vIHRoYXQncyB0b28gc2hvcnQgdG8gYmUgYSB2YWxpZCBSVFAgaGVhZGVyLgorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisKKyAgICAgICAgc2l6ZSAtPSBwYWRkaW5nTGVuZ3RoOworICAgIH0KKworICAgIGludCBudW1DU1JDcyA9IGRhdGFbMF0gJiAweDBmOworCisgICAgc2l6ZV90IHBheWxvYWRPZmZzZXQgPSAxMiArIDQgKiBudW1DU1JDczsKKworICAgIGlmIChzaXplIDwgcGF5bG9hZE9mZnNldCkgeworICAgICAgICAvLyBOb3QgZW5vdWdoIGRhdGEgdG8gZml0IHRoZSBiYXNpYyBoZWFkZXIgYW5kIGFsbCB0aGUgQ1NSQyBlbnRyaWVzLgorICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKGRhdGFbMF0gJiAweDEwKSB7CisgICAgICAgIC8vIEhlYWRlciBlWHRlbnNpb24gcHJlc2VudC4KKworICAgICAgICBpZiAoc2l6ZSA8IHBheWxvYWRPZmZzZXQgKyA0KSB7CisgICAgICAgICAgICAvLyBOb3QgZW5vdWdoIGRhdGEgdG8gZml0IHRoZSBiYXNpYyBoZWFkZXIsIGFsbCBDU1JDIGVudHJpZXMKKyAgICAgICAgICAgIC8vIGFuZCB0aGUgZmlyc3QgNCBieXRlcyBvZiB0aGUgZXh0ZW5zaW9uIGhlYWRlci4KKworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisKKyAgICAgICAgY29uc3QgdWludDhfdCAqZXh0ZW5zaW9uRGF0YSA9ICZkYXRhW3BheWxvYWRPZmZzZXRdOworCisgICAgICAgIHNpemVfdCBleHRlbnNpb25MZW5ndGggPQorICAgICAgICAgICAgNCAqIChleHRlbnNpb25EYXRhWzJdIDw8IDggfCBleHRlbnNpb25EYXRhWzNdKTsKKworICAgICAgICBpZiAoc2l6ZSA8IHBheWxvYWRPZmZzZXQgKyA0ICsgZXh0ZW5zaW9uTGVuZ3RoKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICBwYXlsb2FkT2Zmc2V0ICs9IDQgKyBleHRlbnNpb25MZW5ndGg7CisgICAgfQorCisgICAgdWludDMyX3Qgc3JjSWQgPSB1MzJhdCgmZGF0YVs4XSk7CisKKyAgICBzcDxBUlRQU291cmNlPiBzb3VyY2U7CisgICAgc3NpemVfdCBpbmRleCA9IG1Tb3VyY2VzLmluZGV4T2ZLZXkoc3JjSWQpOworICAgIGlmIChpbmRleCA8IDApIHsKKyAgICAgICAgaW5kZXggPSBtU291cmNlcy5zaXplKCk7CisKKyAgICAgICAgc291cmNlID0gbmV3IEFSVFBTb3VyY2UoCisgICAgICAgICAgICAgICAgc3JjSWQsIHMtPm1TZXNzaW9uRGVzYywgcy0+bUluZGV4LCBzLT5tTm90aWZ5TXNnKTsKKworICAgICAgICBtU291cmNlcy5hZGQoc3JjSWQsIHNvdXJjZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc291cmNlID0gbVNvdXJjZXMudmFsdWVBdChpbmRleCk7CisgICAgfQorCisgICAgdWludDMyX3QgcnRwVGltZSA9IHUzMmF0KCZkYXRhWzRdKTsKKworICAgIHNwPEFNZXNzYWdlPiBtZXRhID0gYnVmZmVyLT5tZXRhKCk7CisgICAgbWV0YS0+c2V0SW50MzIoInNzcmMiLCBzcmNJZCk7CisgICAgbWV0YS0+c2V0SW50MzIoInJ0cC10aW1lIiwgcnRwVGltZSk7CisgICAgbWV0YS0+c2V0SW50MzIoIlBUIiwgZGF0YVsxXSAmIDB4N2YpOworICAgIG1ldGEtPnNldEludDMyKCJNIiwgZGF0YVsxXSA+PiA3KTsKKworICAgIGJ1ZmZlci0+c2V0SW50MzJEYXRhKHUxNmF0KCZkYXRhWzJdKSk7CisKKyNpZiBWRVJCT1NFCisgICAgcHJpbnRmKCJSVFAgPSB7XG4iCisgICAgICAgICAgICIgIFBUOiAlZFxuIgorICAgICAgICAgICAiICBzZXF1ZW5jZSBudW1iZXI6ICVkXG4iCisgICAgICAgICAgICIgIFJUUC10aW1lOiAweCUwOHhcbiIKKyAgICAgICAgICAgIiAgTTogJWRcbiIKKyAgICAgICAgICAgIiAgU1NSQzogMHglMDh4XG4iCisgICAgICAgICAgICJ9XG4iLAorICAgICAgICAgICBkYXRhWzFdICYgMHg3ZiwKKyAgICAgICAgICAgdTE2YXQoJmRhdGFbMl0pLAorICAgICAgICAgICBydHBUaW1lLAorICAgICAgICAgICBkYXRhWzFdID4+IDcsCisgICAgICAgICAgIHNyY0lkKTsKKworICAgIC8vIGhleGR1bXAoJmRhdGFbcGF5bG9hZE9mZnNldF0sIHNpemUgLSBwYXlsb2FkT2Zmc2V0KTsKKyNlbmRpZgorCisgICAgYnVmZmVyLT5zZXRSYW5nZShwYXlsb2FkT2Zmc2V0LCBzaXplIC0gcGF5bG9hZE9mZnNldCk7CisKKyAgICBzb3VyY2UtPnByb2Nlc3NSVFBQYWNrZXQoYnVmZmVyKTsKKworICAgIHJldHVybiBPSzsKK30KKworc3RhdHVzX3QgQVJUUENvbm5lY3Rpb246OnBhcnNlUlRDUChTdHJlYW1JbmZvICpzLCBjb25zdCBzcDxBQnVmZmVyPiAmYnVmZmVyKSB7CisgICAgY29uc3QgdWludDhfdCAqZGF0YSA9IGJ1ZmZlci0+ZGF0YSgpOworICAgIHNpemVfdCBzaXplID0gYnVmZmVyLT5zaXplKCk7CisKKyAgICB3aGlsZSAoc2l6ZSA+IDApIHsKKyAgICAgICAgaWYgKHNpemUgPCA4KSB7CisgICAgICAgICAgICAvLyBUb28gc2hvcnQgdG8gYmUgYSB2YWxpZCBSVENQIGhlYWRlcgorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisKKyAgICAgICAgaWYgKChkYXRhWzBdID4+IDYpICE9IDIpIHsKKyAgICAgICAgICAgIC8vIFVuc3VwcG9ydGVkIHZlcnNpb24uCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICBpZiAoZGF0YVswXSAmIDB4MjApIHsKKyAgICAgICAgICAgIC8vIFBhZGRpbmcgcHJlc2VudC4KKworICAgICAgICAgICAgc2l6ZV90IHBhZGRpbmdMZW5ndGggPSBkYXRhW3NpemUgLSAxXTsKKworICAgICAgICAgICAgaWYgKHBhZGRpbmdMZW5ndGggKyAxMiA+IHNpemUpIHsKKyAgICAgICAgICAgICAgICAvLyBJZiB3ZSByZW1vdmVkIHRoaXMgbXVjaCBwYWRkaW5nIHdlJ2QgZW5kIHVwIHdpdGggc29tZXRoaW5nCisgICAgICAgICAgICAgICAgLy8gdGhhdCdzIHRvbyBzaG9ydCB0byBiZSBhIHZhbGlkIFJUUCBoZWFkZXIuCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzaXplIC09IHBhZGRpbmdMZW5ndGg7CisgICAgICAgIH0KKworICAgICAgICBzaXplX3QgaGVhZGVyTGVuZ3RoID0gNCAqIChkYXRhWzJdIDw8IDggfCBkYXRhWzNdKSArIDQ7CisKKyAgICAgICAgaWYgKHNpemUgPCBoZWFkZXJMZW5ndGgpIHsKKyAgICAgICAgICAgIC8vIE9ubHkgcmVjZWl2ZWQgYSBwYXJ0aWFsIHBhY2tldD8KKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgIHN3aXRjaCAoZGF0YVsxXSkgeworICAgICAgICAgICAgY2FzZSAyMDA6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcGFyc2VTUihzLCBkYXRhLCBoZWFkZXJMZW5ndGgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgeworI2lmIFZFUkJPU0UKKyAgICAgICAgICAgICAgICBwcmludGYoIlVua25vd24gUlRDUCBwYWNrZXQgdHlwZSAlZCBvZiBzaXplICVsZFxuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgZGF0YVsxXSwgaGVhZGVyTGVuZ3RoKTsKKworICAgICAgICAgICAgICAgIGhleGR1bXAoZGF0YSwgaGVhZGVyTGVuZ3RoKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZGF0YSArPSBoZWFkZXJMZW5ndGg7CisgICAgICAgIHNpemUgLT0gaGVhZGVyTGVuZ3RoOworICAgIH0KKworICAgIHJldHVybiBPSzsKK30KKworc3RhdHVzX3QgQVJUUENvbm5lY3Rpb246OnBhcnNlU1IoCisgICAgICAgIFN0cmVhbUluZm8gKnMsIGNvbnN0IHVpbnQ4X3QgKmRhdGEsIHNpemVfdCBzaXplKSB7CisgICAgc2l6ZV90IFJDID0gZGF0YVswXSAmIDB4MWY7CisKKyAgICBpZiAoc2l6ZSA8ICg3ICsgUkMgKiA2KSAqIDQpIHsKKyAgICAgICAgLy8gUGFja2V0IHRvbyBzaG9ydCBmb3IgdGhlIG1pbmltYWwgU1IgaGVhZGVyLgorICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgdWludDMyX3QgaWQgPSB1MzJhdCgmZGF0YVs0XSk7CisgICAgdWludDY0X3QgbnRwVGltZSA9IHU2NGF0KCZkYXRhWzhdKTsKKyAgICB1aW50MzJfdCBydHBUaW1lID0gdTMyYXQoJmRhdGFbMTZdKTsKKworI2lmIFZFUkJPU0UKKyAgICBwcmludGYoIlNSID0ge1xuIgorICAgICAgICAgICAiICBTU1JDOiAgICAgIDB4JTA4eFxuIgorICAgICAgICAgICAiICBOVFAtdGltZTogIDB4JTAxNmxseFxuIgorICAgICAgICAgICAiICBSVFAtdGltZTogIDB4JTA4eFxuIgorICAgICAgICAgICAifVxuIiwKKyAgICAgICAgICAgaWQsIG50cFRpbWUsIHJ0cFRpbWUpOworI2VuZGlmCisKKyAgICBzcDxBUlRQU291cmNlPiBzb3VyY2U7CisgICAgc3NpemVfdCBpbmRleCA9IG1Tb3VyY2VzLmluZGV4T2ZLZXkoaWQpOworICAgIGlmIChpbmRleCA8IDApIHsKKyAgICAgICAgaW5kZXggPSBtU291cmNlcy5zaXplKCk7CisKKyAgICAgICAgc291cmNlID0gbmV3IEFSVFBTb3VyY2UoCisgICAgICAgICAgICAgICAgaWQsIHMtPm1TZXNzaW9uRGVzYywgcy0+bUluZGV4LCBzLT5tTm90aWZ5TXNnKTsKKworICAgICAgICBtU291cmNlcy5hZGQoaWQsIHNvdXJjZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgc291cmNlID0gbVNvdXJjZXMudmFsdWVBdChpbmRleCk7CisgICAgfQorCisgICAgc291cmNlLT50aW1lVXBkYXRlKHJ0cFRpbWUsIG50cFRpbWUpOworCisgICAgcmV0dXJuIDA7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCisKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L3J0c3AvQVJUUENvbm5lY3Rpb24uaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L3J0c3AvQVJUUENvbm5lY3Rpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzdlM2E0Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvcnRzcC9BUlRQQ29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIEFfUlRQX0NPTk5FQ1RJT05fSF8KKworI2RlZmluZSBBX1JUUF9DT05ORUNUSU9OX0hfCisKKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FIYW5kbGVyLmg+CisjaW5jbHVkZSA8dXRpbHMvTGlzdC5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK3N0cnVjdCBBQnVmZmVyOworc3RydWN0IEFSVFBTb3VyY2U7CitzdHJ1Y3QgQVNlc3Npb25EZXNjcmlwdGlvbjsKKworc3RydWN0IEFSVFBDb25uZWN0aW9uIDogcHVibGljIEFIYW5kbGVyIHsKKyAgICBBUlRQQ29ubmVjdGlvbigpOworCisgICAgdm9pZCBhZGRTdHJlYW0oCisgICAgICAgICAgICBpbnQgcnRwU29ja2V0LCBpbnQgcnRjcFNvY2tldCwKKyAgICAgICAgICAgIGNvbnN0IHNwPEFTZXNzaW9uRGVzY3JpcHRpb24+ICZzZXNzaW9uRGVzYywgc2l6ZV90IGluZGV4LAorICAgICAgICAgICAgY29uc3Qgc3A8QU1lc3NhZ2U+ICZub3RpZnkpOworCisgICAgdm9pZCByZW1vdmVTdHJlYW0oaW50IHJ0cFNvY2tldCwgaW50IHJ0Y3BTb2NrZXQpOworCisgICAgLy8gQ3JlYXRlcyBhIHBhaXIgb2YgVURQIGRhdGFncmFtIHNvY2tldHMgYm91bmQgdG8gYWRqYWNlbnQgcG9ydHMKKyAgICAvLyAodGhlIHJ0cFNvY2tldCBpcyBib3VuZCB0byBhbiBldmVuIHBvcnQsIHRoZSBydGNwU29ja2V0IHRvIHRoZQorICAgIC8vIG5leHQgaGlnaGVyIHBvcnQpLgorICAgIHN0YXRpYyB2b2lkIE1ha2VQb3J0UGFpcigKKyAgICAgICAgICAgIGludCAqcnRwU29ja2V0LCBpbnQgKnJ0Y3BTb2NrZXQsIHVuc2lnbmVkICpydHBQb3J0KTsKKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgfkFSVFBDb25uZWN0aW9uKCk7CisgICAgdmlydHVhbCB2b2lkIG9uTWVzc2FnZVJlY2VpdmVkKGNvbnN0IHNwPEFNZXNzYWdlPiAmbXNnKTsKKworcHJpdmF0ZToKKyAgICBlbnVtIHsKKyAgICAgICAga1doYXRBZGRTdHJlYW0sCisgICAgICAgIGtXaGF0UmVtb3ZlU3RyZWFtLAorICAgICAgICBrV2hhdFBvbGxTdHJlYW1zLAorICAgIH07CisKKyAgICBzdGF0aWMgY29uc3QgaW50NjRfdCBrU2VsZWN0VGltZW91dFVzOworCisgICAgc3RydWN0IFN0cmVhbUluZm87CisgICAgTGlzdDxTdHJlYW1JbmZvPiBtU3RyZWFtczsKKworICAgIEtleWVkVmVjdG9yPHVpbnQzMl90LCBzcDxBUlRQU291cmNlPiA+IG1Tb3VyY2VzOworCisgICAgYm9vbCBtUG9sbEV2ZW50UGVuZGluZzsKKworICAgIHZvaWQgb25BZGRTdHJlYW0oY29uc3Qgc3A8QU1lc3NhZ2U+ICZtc2cpOworICAgIHZvaWQgb25SZW1vdmVTdHJlYW0oY29uc3Qgc3A8QU1lc3NhZ2U+ICZtc2cpOworICAgIHZvaWQgb25Qb2xsU3RyZWFtcygpOworCisgICAgc3RhdHVzX3QgcmVjZWl2ZShTdHJlYW1JbmZvICppbmZvLCBib29sIHJlY2VpdmVSVFApOworCisgICAgc3RhdHVzX3QgcGFyc2VSVFAoU3RyZWFtSW5mbyAqaW5mbywgY29uc3Qgc3A8QUJ1ZmZlcj4gJmJ1ZmZlcik7CisgICAgc3RhdHVzX3QgcGFyc2VSVENQKFN0cmVhbUluZm8gKmluZm8sIGNvbnN0IHNwPEFCdWZmZXI+ICZidWZmZXIpOworICAgIHN0YXR1c190IHBhcnNlU1IoU3RyZWFtSW5mbyAqaW5mbywgY29uc3QgdWludDhfdCAqZGF0YSwgc2l6ZV90IHNpemUpOworCisgICAgdm9pZCBwb3N0UG9sbEV2ZW50KCk7CisKKyAgICBESVNBTExPV19FVklMX0NPTlNUUlVDVE9SUyhBUlRQQ29ubmVjdGlvbik7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCisjZW5kaWYgIC8vIEFfUlRQX0NPTk5FQ1RJT05fSF8KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L3J0c3AvQVJUUFNvdXJjZS5jcHAgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9ydHNwL0FSVFBTb3VyY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwNWRhYTgKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9ydHNwL0FSVFBTb3VyY2UuY3BwCkBAIC0wLDAgKzEsMjUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2luY2x1ZGUgIkFSVFBTb3VyY2UuaCIKKworI2luY2x1ZGUgIkFBVkNBc3NlbWJsZXIuaCIKKyNpbmNsdWRlICJBTVBFRzRBdWRpb0Fzc2VtYmxlci5oIgorI2luY2x1ZGUgIkFTZXNzaW9uRGVzY3JpcHRpb24uaCIKKworI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUJ1ZmZlci5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQURlYnVnLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BTWVzc2FnZS5oPgorCisjZGVmaW5lIFZFUkJPU0UgICAgICAgICAwCisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworQVJUUFNvdXJjZTo6QVJUUFNvdXJjZSgKKyAgICAgICAgdWludDMyX3QgaWQsCisgICAgICAgIGNvbnN0IHNwPEFTZXNzaW9uRGVzY3JpcHRpb24+ICZzZXNzaW9uRGVzYywgc2l6ZV90IGluZGV4LAorICAgICAgICBjb25zdCBzcDxBTWVzc2FnZT4gJm5vdGlmeSkKKyAgICA6IG1JRChpZCksCisgICAgICBtSGlnaGVzdFNlcU51bWJlcigwKSwKKyAgICAgIG1OdW1CdWZmZXJzUmVjZWl2ZWQoMCksCisgICAgICBtTnVtVGltZXMoMCkgeworICAgIHVuc2lnbmVkIGxvbmcgUFQ7CisgICAgQVN0cmluZyBkZXNjOworICAgIEFTdHJpbmcgcGFyYW1zOworICAgIHNlc3Npb25EZXNjLT5nZXRGb3JtYXRUeXBlKGluZGV4LCAmUFQsICZkZXNjLCAmcGFyYW1zKTsKKworICAgIGlmICghc3RybmNtcChkZXNjLmNfc3RyKCksICJIMjY0LyIsIDUpKSB7CisgICAgICAgIG1Bc3NlbWJsZXIgPSBuZXcgQUFWQ0Fzc2VtYmxlcihub3RpZnkpOworICAgIH0gZWxzZSBpZiAoIXN0cm5jbXAoZGVzYy5jX3N0cigpLCAiTVA0QS1MQVRNIiwgOSkpIHsKKyAgICAgICAgbUFzc2VtYmxlciA9IG5ldyBBTVBFRzRBdWRpb0Fzc2VtYmxlcihub3RpZnkpOworICAgIH0gZWxzZSB7CisgICAgICAgIFRSRVNQQVNTKCk7CisgICAgfQorfQorCitzdGF0aWMgdWludDMyX3QgQWJzRGlmZih1aW50MzJfdCBzZXExLCB1aW50MzJfdCBzZXEyKSB7CisgICAgcmV0dXJuIHNlcTEgPiBzZXEyID8gc2VxMSAtIHNlcTIgOiBzZXEyIC0gc2VxMTsKK30KKwordm9pZCBBUlRQU291cmNlOjpwcm9jZXNzUlRQUGFja2V0KGNvbnN0IHNwPEFCdWZmZXI+ICZidWZmZXIpIHsKKyAgICBpZiAocXVldWVQYWNrZXQoYnVmZmVyKSAmJiBtTnVtVGltZXMgPT0gMiAmJiBtQXNzZW1ibGVyICE9IE5VTEwpIHsKKyAgICAgICAgbUFzc2VtYmxlci0+b25QYWNrZXRSZWNlaXZlZCh0aGlzKTsKKyAgICB9CisKKyAgICBkdW1wKCk7Cit9CisKK3ZvaWQgQVJUUFNvdXJjZTo6dGltZVVwZGF0ZSh1aW50MzJfdCBydHBUaW1lLCB1aW50NjRfdCBudHBUaW1lKSB7CisjaWYgVkVSQk9TRQorICAgIExPRyhWRVJCT1NFKSA8PCAidGltZVVwZGF0ZSI7CisjZW5kaWYKKworICAgIGlmIChtTnVtVGltZXMgPT0gMikgeworICAgICAgICBtTlRQVGltZVswXSA9IG1OVFBUaW1lWzFdOworICAgICAgICBtUlRQVGltZVswXSA9IG1SVFBUaW1lWzFdOworICAgICAgICBtTnVtVGltZXMgPSAxOworICAgIH0KKyAgICBtTlRQVGltZVttTnVtVGltZXNdID0gbnRwVGltZTsKKyAgICBtUlRQVGltZVttTnVtVGltZXMrK10gPSBydHBUaW1lOworCisgICAgaWYgKG1OdW1UaW1lcyA9PSAyKSB7CisgICAgICAgIGZvciAoTGlzdDxzcDxBQnVmZmVyPiA+OjppdGVyYXRvciBpdCA9IG1RdWV1ZS5iZWdpbigpOworICAgICAgICAgICAgIGl0ICE9IG1RdWV1ZS5lbmQoKTsgKytpdCkgeworICAgICAgICAgICAgc3A8QU1lc3NhZ2U+IG1ldGEgPSAoKml0KS0+bWV0YSgpOworCisgICAgICAgICAgICB1aW50MzJfdCBydHBUaW1lOworICAgICAgICAgICAgQ0hFQ0sobWV0YS0+ZmluZEludDMyKCJydHAtdGltZSIsIChpbnQzMl90ICopJnJ0cFRpbWUpKTsKKworICAgICAgICAgICAgbWV0YS0+c2V0SW50NjQoIm50cC10aW1lIiwgUlRQMk5UUChydHBUaW1lKSk7CisgICAgICAgIH0KKyAgICB9Cit9CisKK2Jvb2wgQVJUUFNvdXJjZTo6cXVldWVQYWNrZXQoY29uc3Qgc3A8QUJ1ZmZlcj4gJmJ1ZmZlcikgeworICAgIHVpbnQzMl90IHNlcU51bSA9ICh1aW50MzJfdClidWZmZXItPmludDMyRGF0YSgpOworCisgICAgaWYgKG1OdW1UaW1lcyA9PSAyKSB7CisgICAgICAgIHNwPEFNZXNzYWdlPiBtZXRhID0gYnVmZmVyLT5tZXRhKCk7CisKKyAgICAgICAgdWludDMyX3QgcnRwVGltZTsKKyAgICAgICAgQ0hFQ0sobWV0YS0+ZmluZEludDMyKCJydHAtdGltZSIsIChpbnQzMl90ICopJnJ0cFRpbWUpKTsKKworICAgICAgICBtZXRhLT5zZXRJbnQ2NCgibnRwLXRpbWUiLCBSVFAyTlRQKHJ0cFRpbWUpKTsKKyAgICB9CisKKyAgICBpZiAobU51bUJ1ZmZlcnNSZWNlaXZlZCsrID09IDApIHsKKyAgICAgICAgbUhpZ2hlc3RTZXFOdW1iZXIgPSBzZXFOdW07CisgICAgICAgIG1RdWV1ZS5wdXNoX2JhY2soYnVmZmVyKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLy8gT25seSB0aGUgbG93ZXIgMTYtYml0IG9mIHRoZSBzZXF1ZW5jZSBudW1iZXJzIGFyZSB0cmFuc21pdHRlZCwKKyAgICAvLyBkZXJpdmUgdGhlIGhpZ2gtb3JkZXIgYml0cyBieSBjaG9vc2luZyB0aGUgY2FuZGlkYXRlIGNsb3Nlc3QKKyAgICAvLyB0byB0aGUgaGlnaGVzdCBzZXF1ZW5jZSBudW1iZXIgKGV4dGVuZGVkIHRvIDMyIGJpdHMpIHJlY2VpdmVkIHNvIGZhci4KKworICAgIHVpbnQzMl90IHNlcTEgPSBzZXFOdW0gfCAobUhpZ2hlc3RTZXFOdW1iZXIgJiAweGZmZmYwMDAwKTsKKyAgICB1aW50MzJfdCBzZXEyID0gc2VxTnVtIHwgKChtSGlnaGVzdFNlcU51bWJlciAmIDB4ZmZmZjAwMDApICsgMHgxMDAwMCk7CisgICAgdWludDMyX3Qgc2VxMyA9IHNlcU51bSB8ICgobUhpZ2hlc3RTZXFOdW1iZXIgJiAweGZmZmYwMDAwKSAtIDB4MTAwMDApOworICAgIHVpbnQzMl90IGRpZmYxID0gQWJzRGlmZihzZXExLCBtSGlnaGVzdFNlcU51bWJlcik7CisgICAgdWludDMyX3QgZGlmZjIgPSBBYnNEaWZmKHNlcTIsIG1IaWdoZXN0U2VxTnVtYmVyKTsKKyAgICB1aW50MzJfdCBkaWZmMyA9IEFic0RpZmYoc2VxMywgbUhpZ2hlc3RTZXFOdW1iZXIpOworCisgICAgaWYgKGRpZmYxIDwgZGlmZjIpIHsKKyAgICAgICAgaWYgKGRpZmYxIDwgZGlmZjMpIHsKKyAgICAgICAgICAgIC8vIGRpZmYxIDwgZGlmZjIgXiBkaWZmMSA8IGRpZmYzCisgICAgICAgICAgICBzZXFOdW0gPSBzZXExOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gZGlmZjMgPD0gZGlmZjEgPCBkaWZmMgorICAgICAgICAgICAgc2VxTnVtID0gc2VxMzsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAoZGlmZjIgPCBkaWZmMykgeworICAgICAgICAvLyBkaWZmMiA8PSBkaWZmMSBeIGRpZmYyIDwgZGlmZjMKKyAgICAgICAgc2VxTnVtID0gc2VxMjsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBkaWZmMyA8PSBkaWZmMiA8PSBkaWZmMQorICAgICAgICBzZXFOdW0gPSBzZXEzOworICAgIH0KKworICAgIGlmIChzZXFOdW0gPiBtSGlnaGVzdFNlcU51bWJlcikgeworICAgICAgICBtSGlnaGVzdFNlcU51bWJlciA9IHNlcU51bTsKKyAgICB9CisKKyAgICBidWZmZXItPnNldEludDMyRGF0YShzZXFOdW0pOworCisgICAgTGlzdDxzcDxBQnVmZmVyPiA+OjppdGVyYXRvciBpdCA9IG1RdWV1ZS5iZWdpbigpOworICAgIHdoaWxlIChpdCAhPSBtUXVldWUuZW5kKCkgJiYgKHVpbnQzMl90KSgqaXQpLT5pbnQzMkRhdGEoKSA8IHNlcU51bSkgeworICAgICAgICArK2l0OworICAgIH0KKworICAgIGlmIChpdCAhPSBtUXVldWUuZW5kKCkgJiYgKHVpbnQzMl90KSgqaXQpLT5pbnQzMkRhdGEoKSA9PSBzZXFOdW0pIHsKKyAgICAgICAgTE9HKFdBUk5JTkcpIDw8ICJEaXNjYXJkaW5nIGR1cGxpY2F0ZSBidWZmZXIiOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgbVF1ZXVlLmluc2VydChpdCwgYnVmZmVyKTsKKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEFSVFBTb3VyY2U6OmR1bXAoKSBjb25zdCB7CisgICAgaWYgKChtTnVtQnVmZmVyc1JlY2VpdmVkICUgMTI4KSAhPSAwKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyNpZiAwCisgICAgaWYgKG1Bc3NlbWJsZXIgPT0gTlVMTCkgeworICAgICAgICBjaGFyIHRtcFsyMF07CisgICAgICAgIHNwcmludGYodG1wLCAiMHglMDh4IiwgbUlEKTsKKworICAgICAgICBpbnQzMl90IG51bU1pc3NpbmcgPSAwOworCisgICAgICAgIGlmICghbVF1ZXVlLmVtcHR5KCkpIHsKKyAgICAgICAgICAgIExpc3Q8c3A8QUJ1ZmZlcj4gPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtUXVldWUuYmVnaW4oKTsKKyAgICAgICAgICAgIHVpbnQzMl90IGV4cGVjdGVkU2VxTnVtID0gKHVpbnQzMl90KSgqaXQpLT5pbnQzMkRhdGEoKTsKKyAgICAgICAgICAgICsrZXhwZWN0ZWRTZXFOdW07CisgICAgICAgICAgICArK2l0OworCisgICAgICAgICAgICBmb3IgKDsgaXQgIT0gbVF1ZXVlLmVuZCgpOyArK2l0KSB7CisgICAgICAgICAgICAgICAgdWludDMyX3Qgc2VxTnVtID0gKHVpbnQzMl90KSgqaXQpLT5pbnQzMkRhdGEoKTsKKyAgICAgICAgICAgICAgICBDSEVDS19HRShzZXFOdW0sIGV4cGVjdGVkU2VxTnVtKTsKKworICAgICAgICAgICAgICAgIGlmIChzZXFOdW0gIT0gZXhwZWN0ZWRTZXFOdW0pIHsKKyAgICAgICAgICAgICAgICAgICAgbnVtTWlzc2luZyArPSBzZXFOdW0gLSBleHBlY3RlZFNlcU51bTsKKyAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRTZXFOdW0gPSBzZXFOdW07CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgKytleHBlY3RlZFNlcU51bTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIExPRyhWRVJCT1NFKSA8PCAiWyIgPDwgdG1wIDw8ICJdIE1pc3NpbmcgIiA8PCBudW1NaXNzaW5nCisgICAgICAgICAgICAgPDwgIiAvICIgPDwgKG1OdW1CdWZmZXJzUmVjZWl2ZWQgKyBudW1NaXNzaW5nKSA8PCAiIHBhY2tldHMuICgiCisgICAgICAgICAgICAgPDwgKDEwMC4wICogbnVtTWlzc2luZyAvIChtTnVtQnVmZmVyc1JlY2VpdmVkICsgbnVtTWlzc2luZykpCisgICAgICAgICAgICAgPDwgIiAlJSkiOworICAgIH0KKyNlbmRpZgorCisjaWYgMAorICAgIEFTdHJpbmcgb3V0OworICAgIAorICAgIG91dC5hcHBlbmQodG1wKTsKKyAgICBvdXQuYXBwZW5kKCIgWyIpOworCisgICAgTGlzdDxzcDxBQnVmZmVyPiA+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1RdWV1ZS5iZWdpbigpOworICAgIHdoaWxlIChpdCAhPSBtUXVldWUuZW5kKCkpIHsKKyAgICAgICAgdWludDMyX3Qgc3RhcnQgPSAodWludDMyX3QpKCppdCktPmludDMyRGF0YSgpOworCisgICAgICAgIG91dC5hcHBlbmQoc3RhcnQpOworCisgICAgICAgICsraXQ7CisgICAgICAgIHVpbnQzMl90IGV4cGVjdGVkID0gc3RhcnQgKyAxOworCisgICAgICAgIHdoaWxlIChpdCAhPSBtUXVldWUuZW5kKCkpIHsKKyAgICAgICAgICAgIHVpbnQzMl90IHNlcU51bSA9ICh1aW50MzJfdCkoKml0KS0+aW50MzJEYXRhKCk7CisKKyAgICAgICAgICAgIGlmIChzZXFOdW0gIT0gZXhwZWN0ZWQpIHsKKyAgICAgICAgICAgICAgICBpZiAoZXhwZWN0ZWQgPiBzdGFydCArIDEpIHsKKyAgICAgICAgICAgICAgICAgICAgb3V0LmFwcGVuZCgiLSIpOworICAgICAgICAgICAgICAgICAgICBvdXQuYXBwZW5kKGV4cGVjdGVkIC0gMSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG91dC5hcHBlbmQoIiwgIik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICsraXQ7CisgICAgICAgICAgICArK2V4cGVjdGVkOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGl0ID09IG1RdWV1ZS5lbmQoKSkgeworICAgICAgICAgICAgaWYgKGV4cGVjdGVkID4gc3RhcnQgKyAxKSB7CisgICAgICAgICAgICAgICAgb3V0LmFwcGVuZCgiLSIpOworICAgICAgICAgICAgICAgIG91dC5hcHBlbmQoZXhwZWN0ZWQgLSAxKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIG91dC5hcHBlbmQoIl0iKTsKKworICAgIExPRyhWRVJCT1NFKSA8PCBvdXQ7CisjZW5kaWYKK30KKwordWludDY0X3QgQVJUUFNvdXJjZTo6UlRQMk5UUCh1aW50MzJfdCBydHBUaW1lKSBjb25zdCB7CisgICAgQ0hFQ0tfRVEobU51bVRpbWVzLCAydSk7CisKKyAgICByZXR1cm4gbU5UUFRpbWVbMF0gKyAoZG91YmxlKShtTlRQVGltZVsxXSAtIG1OVFBUaW1lWzBdKQorICAgICAgICAgICAgKiAoKGRvdWJsZSlydHBUaW1lIC0gKGRvdWJsZSltUlRQVGltZVswXSkKKyAgICAgICAgICAgIC8gKGRvdWJsZSkobVJUUFRpbWVbMV0gLSBtUlRQVGltZVswXSk7Cit9CisKK30gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCisKKwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvcnRzcC9BUlRQU291cmNlLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9ydHNwL0FSVFBTb3VyY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTNjZDU2Ci0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvcnRzcC9BUlRQU291cmNlLmgKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgQV9SVFBfU09VUkNFX0hfCisKKyNkZWZpbmUgQV9SVFBfU09VUkNFX0hfCisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKworI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUJhc2UuaD4KKyNpbmNsdWRlIDx1dGlscy9MaXN0Lmg+CisjaW5jbHVkZSA8dXRpbHMvUmVmQmFzZS5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK3N0cnVjdCBBQnVmZmVyOworc3RydWN0IEFNZXNzYWdlOworc3RydWN0IEFSVFBBc3NlbWJsZXI7CitzdHJ1Y3QgQVNlc3Npb25EZXNjcmlwdGlvbjsKKworc3RydWN0IEFSVFBTb3VyY2UgOiBwdWJsaWMgUmVmQmFzZSB7CisgICAgQVJUUFNvdXJjZSgKKyAgICAgICAgICAgIHVpbnQzMl90IGlkLAorICAgICAgICAgICAgY29uc3Qgc3A8QVNlc3Npb25EZXNjcmlwdGlvbj4gJnNlc3Npb25EZXNjLCBzaXplX3QgaW5kZXgsCisgICAgICAgICAgICBjb25zdCBzcDxBTWVzc2FnZT4gJm5vdGlmeSk7CisKKyAgICB2b2lkIHByb2Nlc3NSVFBQYWNrZXQoY29uc3Qgc3A8QUJ1ZmZlcj4gJmJ1ZmZlcik7CisgICAgdm9pZCB0aW1lVXBkYXRlKHVpbnQzMl90IHJ0cFRpbWUsIHVpbnQ2NF90IG50cFRpbWUpOworCisgICAgTGlzdDxzcDxBQnVmZmVyPiA+ICpxdWV1ZSgpIHsgcmV0dXJuICZtUXVldWU7IH0KKworcHJpdmF0ZToKKyAgICB1aW50MzJfdCBtSUQ7CisgICAgdWludDMyX3QgbUhpZ2hlc3RTZXFOdW1iZXI7CisgICAgaW50MzJfdCBtTnVtQnVmZmVyc1JlY2VpdmVkOworCisgICAgTGlzdDxzcDxBQnVmZmVyPiA+IG1RdWV1ZTsKKyAgICBzcDxBUlRQQXNzZW1ibGVyPiBtQXNzZW1ibGVyOworCisgICAgc2l6ZV90IG1OdW1UaW1lczsKKyAgICB1aW50NjRfdCBtTlRQVGltZVsyXTsKKyAgICB1aW50MzJfdCBtUlRQVGltZVsyXTsKKworICAgIHVpbnQ2NF90IFJUUDJOVFAodWludDMyX3QgcnRwVGltZSkgY29uc3Q7CisKKyAgICBib29sIHF1ZXVlUGFja2V0KGNvbnN0IHNwPEFCdWZmZXI+ICZidWZmZXIpOworICAgIHZvaWQgZHVtcCgpIGNvbnN0OworCisgICAgRElTQUxMT1dfRVZJTF9DT05TVFJVQ1RPUlMoQVJUUFNvdXJjZSk7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCisjZW5kaWYgIC8vIEFfUlRQX1NPVVJDRV9IXwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvcnRzcC9BUlRTUENvbm5lY3Rpb24uY3BwIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvcnRzcC9BUlRTUENvbm5lY3Rpb24uY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5MTYyYzAKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9ydHNwL0FSVFNQQ29ubmVjdGlvbi5jcHAKQEAgLTAsMCArMSw1NDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaW5jbHVkZSAiQVJUU1BDb25uZWN0aW9uLmgiCisKKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FCdWZmZXIuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FEZWJ1Zy5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQU1lc3NhZ2UuaD4KKworI2luY2x1ZGUgPGFycGEvaW5ldC5oPgorI2luY2x1ZGUgPGZjbnRsLmg+CisjaW5jbHVkZSA8bmV0ZGIuaD4KKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworLy8gc3RhdGljCitjb25zdCBpbnQ2NF90IEFSVFNQQ29ubmVjdGlvbjo6a1NlbGVjdFRpbWVvdXRVcyA9IDEwMDBsbDsKKworQVJUU1BDb25uZWN0aW9uOjpBUlRTUENvbm5lY3Rpb24oKQorICAgIDogbVN0YXRlKERJU0NPTk5FQ1RFRCksCisgICAgICBtU29ja2V0KC0xKSwKKyAgICAgIG1Db25uZWN0aW9uSUQoMCksCisgICAgICBtTmV4dENTZXEoMCksCisgICAgICBtUmVjZWl2ZVJlc3BvbnNlRXZlbnRQZW5kaW5nKGZhbHNlKSB7Cit9CisKK0FSVFNQQ29ubmVjdGlvbjo6fkFSVFNQQ29ubmVjdGlvbigpIHsKKyAgICBpZiAobVNvY2tldCA+PSAwKSB7CisgICAgICAgIExPRyhFUlJPUikgPDwgIkNvbm5lY3Rpb24gaXMgc3RpbGwgb3BlbiwgY2xvc2luZyB0aGUgc29ja2V0LiI7CisgICAgICAgIGNsb3NlKG1Tb2NrZXQpOworICAgICAgICBtU29ja2V0ID0gLTE7CisgICAgfQorfQorCit2b2lkIEFSVFNQQ29ubmVjdGlvbjo6Y29ubmVjdChjb25zdCBjaGFyICp1cmwsIGNvbnN0IHNwPEFNZXNzYWdlPiAmcmVwbHkpIHsKKyAgICBzcDxBTWVzc2FnZT4gbXNnID0gbmV3IEFNZXNzYWdlKGtXaGF0Q29ubmVjdCwgaWQoKSk7CisgICAgbXNnLT5zZXRTdHJpbmcoInVybCIsIHVybCk7CisgICAgbXNnLT5zZXRNZXNzYWdlKCJyZXBseSIsIHJlcGx5KTsKKyAgICBtc2ctPnBvc3QoKTsKK30KKwordm9pZCBBUlRTUENvbm5lY3Rpb246OmRpc2Nvbm5lY3QoY29uc3Qgc3A8QU1lc3NhZ2U+ICZyZXBseSkgeworICAgIHNwPEFNZXNzYWdlPiBtc2cgPSBuZXcgQU1lc3NhZ2Uoa1doYXREaXNjb25uZWN0LCBpZCgpKTsKKyAgICBtc2ctPnNldE1lc3NhZ2UoInJlcGx5IiwgcmVwbHkpOworICAgIG1zZy0+cG9zdCgpOworfQorCit2b2lkIEFSVFNQQ29ubmVjdGlvbjo6c2VuZFJlcXVlc3QoCisgICAgICAgIGNvbnN0IGNoYXIgKnJlcXVlc3QsIGNvbnN0IHNwPEFNZXNzYWdlPiAmcmVwbHkpIHsKKyAgICBzcDxBTWVzc2FnZT4gbXNnID0gbmV3IEFNZXNzYWdlKGtXaGF0U2VuZFJlcXVlc3QsIGlkKCkpOworICAgIG1zZy0+c2V0U3RyaW5nKCJyZXF1ZXN0IiwgcmVxdWVzdCk7CisgICAgbXNnLT5zZXRNZXNzYWdlKCJyZXBseSIsIHJlcGx5KTsKKyAgICBtc2ctPnBvc3QoKTsKK30KKwordm9pZCBBUlRTUENvbm5lY3Rpb246Om9uTWVzc2FnZVJlY2VpdmVkKGNvbnN0IHNwPEFNZXNzYWdlPiAmbXNnKSB7CisgICAgc3dpdGNoIChtc2ctPndoYXQoKSkgeworICAgICAgICBjYXNlIGtXaGF0Q29ubmVjdDoKKyAgICAgICAgICAgIG9uQ29ubmVjdChtc2cpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBrV2hhdERpc2Nvbm5lY3Q6CisgICAgICAgICAgICBvbkRpc2Nvbm5lY3QobXNnKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2Uga1doYXRDb21wbGV0ZUNvbm5lY3Rpb246CisgICAgICAgICAgICBvbkNvbXBsZXRlQ29ubmVjdGlvbihtc2cpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBrV2hhdFNlbmRSZXF1ZXN0OgorICAgICAgICAgICAgb25TZW5kUmVxdWVzdChtc2cpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBrV2hhdFJlY2VpdmVSZXNwb25zZToKKyAgICAgICAgICAgIG9uUmVjZWl2ZVJlc3BvbnNlKCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgVFJFU1BBU1MoKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KK30KKworLy8gc3RhdGljCitib29sIEFSVFNQQ29ubmVjdGlvbjo6UGFyc2VVUkwoCisgICAgICAgIGNvbnN0IGNoYXIgKnVybCwgQVN0cmluZyAqaG9zdCwgdW5zaWduZWQgKnBvcnQsIEFTdHJpbmcgKnBhdGgpIHsKKyAgICBob3N0LT5jbGVhcigpOworICAgICpwb3J0ID0gMDsKKyAgICBwYXRoLT5jbGVhcigpOworCisgICAgaWYgKHN0cm5jYXNlY21wKCJydHNwOi8vIiwgdXJsLCA3KSkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgY29uc3QgY2hhciAqc2xhc2hQb3MgPSBzdHJjaHIoJnVybFs3XSwgJy8nKTsKKworICAgIGlmIChzbGFzaFBvcyA9PSBOVUxMKSB7CisgICAgICAgIGhvc3QtPnNldFRvKCZ1cmxbN10pOworICAgICAgICBwYXRoLT5zZXRUbygiLyIpOworICAgIH0gZWxzZSB7CisgICAgICAgIGhvc3QtPnNldFRvKCZ1cmxbN10sIHNsYXNoUG9zIC0gJnVybFs3XSk7CisgICAgICAgIHBhdGgtPnNldFRvKHNsYXNoUG9zKTsKKyAgICB9CisKKyAgICBjaGFyICpjb2xvblBvcyA9IHN0cmNocihob3N0LT5jX3N0cigpLCAnOicpOworCisgICAgaWYgKGNvbG9uUG9zICE9IE5VTEwpIHsKKyAgICAgICAgdW5zaWduZWQgbG9uZyB4OworICAgICAgICBpZiAoIVBhcnNlU2luZ2xlVW5zaWduZWRMb25nKGNvbG9uUG9zICsgMSwgJngpIHx8IHggPj0gNjU1MzYpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgICpwb3J0ID0geDsKKworICAgICAgICBzaXplX3QgY29sb25PZmZzZXQgPSBjb2xvblBvcyAtIGhvc3QtPmNfc3RyKCk7CisgICAgICAgIHNpemVfdCB0cmFpbGluZyA9IGhvc3QtPnNpemUoKSAtIGNvbG9uT2Zmc2V0OworICAgICAgICBob3N0LT5lcmFzZShjb2xvbk9mZnNldCwgdHJhaWxpbmcpOworICAgIH0gZWxzZSB7CisgICAgICAgICpwb3J0ID0gNTU0OworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEFSVFNQQ29ubmVjdGlvbjo6b25Db25uZWN0KGNvbnN0IHNwPEFNZXNzYWdlPiAmbXNnKSB7CisgICAgKyttQ29ubmVjdGlvbklEOworCisgICAgaWYgKG1TdGF0ZSAhPSBESVNDT05ORUNURUQpIHsKKyAgICAgICAgY2xvc2UobVNvY2tldCk7CisgICAgICAgIG1Tb2NrZXQgPSAtMTsKKworICAgICAgICBmbHVzaFBlbmRpbmdSZXF1ZXN0cygpOworICAgIH0KKworICAgIG1TdGF0ZSA9IENPTk5FQ1RJTkc7CisKKyAgICBtU29ja2V0ID0gc29ja2V0KEFGX0lORVQsIFNPQ0tfU1RSRUFNLCAwKTsKKworICAgIC8vIE1ha2Ugc29ja2V0IG5vbi1ibG9ja2luZy4KKyAgICBpbnQgZmxhZ3MgPSBmY250bChtU29ja2V0LCBGX0dFVEZMLCAwKTsKKyAgICBDSEVDS19ORShmbGFncywgLTEpOworICAgIENIRUNLX05FKGZjbnRsKG1Tb2NrZXQsIEZfU0VURkwsIGZsYWdzIHwgT19OT05CTE9DSyksIC0xKTsKKworICAgIEFTdHJpbmcgdXJsOworICAgIENIRUNLKG1zZy0+ZmluZFN0cmluZygidXJsIiwgJnVybCkpOworCisgICAgQVN0cmluZyBob3N0LCBwYXRoOworICAgIHVuc2lnbmVkIHBvcnQ7CisgICAgQ0hFQ0soUGFyc2VVUkwodXJsLmNfc3RyKCksICZob3N0LCAmcG9ydCwgJnBhdGgpKTsKKworICAgIHN0cnVjdCBob3N0ZW50ICplbnQgPSBnZXRob3N0YnluYW1lKGhvc3QuY19zdHIoKSk7CisgICAgQ0hFQ0soZW50ICE9IE5VTEwpOworCisgICAgc3RydWN0IHNvY2thZGRyX2luIHJlbW90ZTsKKyAgICBtZW1zZXQocmVtb3RlLnNpbl96ZXJvLCAwLCBzaXplb2YocmVtb3RlLnNpbl96ZXJvKSk7CisgICAgcmVtb3RlLnNpbl9mYW1pbHkgPSBBRl9JTkVUOworICAgIHJlbW90ZS5zaW5fYWRkci5zX2FkZHIgPSAqKGluX2FkZHJfdCAqKWVudC0+aF9hZGRyOworICAgIHJlbW90ZS5zaW5fcG9ydCA9IGh0b25zKHBvcnQpOworCisgICAgaW50IGVyciA9IDo6Y29ubmVjdCgKKyAgICAgICAgICAgIG1Tb2NrZXQsIChjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKikmcmVtb3RlLCBzaXplb2YocmVtb3RlKSk7CisKKyAgICBzcDxBTWVzc2FnZT4gcmVwbHk7CisgICAgQ0hFQ0sobXNnLT5maW5kTWVzc2FnZSgicmVwbHkiLCAmcmVwbHkpKTsKKworICAgIHJlcGx5LT5zZXRJbnQzMigic2VydmVyLWlwIiwgbnRvaGwocmVtb3RlLnNpbl9hZGRyLnNfYWRkcikpOworCisgICAgaWYgKGVyciA8IDApIHsKKyAgICAgICAgaWYgKGVycm5vID09IEVJTlBST0dSRVNTKSB7CisgICAgICAgICAgICBzcDxBTWVzc2FnZT4gbXNnID0gbmV3IEFNZXNzYWdlKGtXaGF0Q29tcGxldGVDb25uZWN0aW9uLCBpZCgpKTsKKyAgICAgICAgICAgIG1zZy0+c2V0TWVzc2FnZSgicmVwbHkiLCByZXBseSk7CisgICAgICAgICAgICBtc2ctPnNldEludDMyKCJjb25uZWN0aW9uLWlkIiwgbUNvbm5lY3Rpb25JRCk7CisgICAgICAgICAgICBtc2ctPnBvc3QoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHJlcGx5LT5zZXRJbnQzMigicmVzdWx0IiwgLWVycm5vKTsKKyAgICAgICAgbVN0YXRlID0gRElTQ09OTkVDVEVEOworCisgICAgICAgIGNsb3NlKG1Tb2NrZXQpOworICAgICAgICBtU29ja2V0ID0gLTE7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmVwbHktPnNldEludDMyKCJyZXN1bHQiLCBPSyk7CisgICAgICAgIG1TdGF0ZSA9IENPTk5FQ1RFRDsKKyAgICAgICAgbU5leHRDU2VxID0gMTsKKworICAgICAgICBwb3N0UmVjZWl2ZVJlcG9uc2VFdmVudCgpOworICAgIH0KKworICAgIHJlcGx5LT5wb3N0KCk7Cit9CisKK3ZvaWQgQVJUU1BDb25uZWN0aW9uOjpvbkRpc2Nvbm5lY3QoY29uc3Qgc3A8QU1lc3NhZ2U+ICZtc2cpIHsKKyAgICBpZiAobVN0YXRlID09IENPTk5FQ1RFRCB8fCBtU3RhdGUgPT0gQ09OTkVDVElORykgeworICAgICAgICBjbG9zZShtU29ja2V0KTsKKyAgICAgICAgbVNvY2tldCA9IC0xOworCisgICAgICAgIGZsdXNoUGVuZGluZ1JlcXVlc3RzKCk7CisgICAgfSAKKworICAgIHNwPEFNZXNzYWdlPiByZXBseTsKKyAgICBDSEVDSyhtc2ctPmZpbmRNZXNzYWdlKCJyZXBseSIsICZyZXBseSkpOworCisgICAgcmVwbHktPnNldEludDMyKCJyZXN1bHQiLCBPSyk7CisgICAgbVN0YXRlID0gRElTQ09OTkVDVEVEOworCisgICAgcmVwbHktPnBvc3QoKTsKK30KKwordm9pZCBBUlRTUENvbm5lY3Rpb246Om9uQ29tcGxldGVDb25uZWN0aW9uKGNvbnN0IHNwPEFNZXNzYWdlPiAmbXNnKSB7CisgICAgc3A8QU1lc3NhZ2U+IHJlcGx5OworICAgIENIRUNLKG1zZy0+ZmluZE1lc3NhZ2UoInJlcGx5IiwgJnJlcGx5KSk7CisKKyAgICBpbnQzMl90IGNvbm5lY3Rpb25JRDsKKyAgICBDSEVDSyhtc2ctPmZpbmRJbnQzMigiY29ubmVjdGlvbi1pZCIsICZjb25uZWN0aW9uSUQpKTsKKworICAgIGlmICgoY29ubmVjdGlvbklEICE9IG1Db25uZWN0aW9uSUQpIHx8IG1TdGF0ZSAhPSBDT05ORUNUSU5HKSB7CisgICAgICAgIC8vIFdoaWxlIHdlIHdlcmUgYXR0ZW1wdGluZyB0byBjb25uZWN0LCB0aGUgYXR0ZW1wdCB3YXMKKyAgICAgICAgLy8gY2FuY2VsbGVkLgorICAgICAgICByZXBseS0+c2V0SW50MzIoInJlc3VsdCIsIC1FQ09OTkFCT1JURUQpOworICAgICAgICByZXBseS0+cG9zdCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3RydWN0IHRpbWV2YWwgdHY7CisgICAgdHYudHZfc2VjID0gMDsKKyAgICB0di50dl91c2VjID0ga1NlbGVjdFRpbWVvdXRVczsKKworICAgIGZkX3NldCB3czsKKyAgICBGRF9aRVJPKCZ3cyk7CisgICAgRkRfU0VUKG1Tb2NrZXQsICZ3cyk7CisKKyAgICBpbnQgcmVzID0gc2VsZWN0KG1Tb2NrZXQgKyAxLCBOVUxMLCAmd3MsIE5VTEwsICZ0dik7CisgICAgQ0hFQ0tfR0UocmVzLCAwKTsKKworICAgIGlmIChyZXMgPT0gMCkgeworICAgICAgICAvLyBUaW1lZCBvdXQuIE5vdCB5ZXQgY29ubmVjdGVkLgorCisgICAgICAgIG1zZy0+cG9zdCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaW50IGVycjsKKyAgICBzb2NrbGVuX3Qgb3B0aW9uTGVuID0gc2l6ZW9mKGVycik7CisgICAgQ0hFQ0tfRVEoZ2V0c29ja29wdChtU29ja2V0LCBTT0xfU09DS0VULCBTT19FUlJPUiwgJmVyciwgJm9wdGlvbkxlbiksIDApOworICAgIENIRUNLX0VRKG9wdGlvbkxlbiwgKHNvY2tsZW5fdClzaXplb2YoZXJyKSk7CisKKyAgICBpZiAoZXJyICE9IDApIHsKKyAgICAgICAgTE9HKEVSUk9SKSA8PCAiZXJyID0gIiA8PCBlcnIgPDwgIiAoIiA8PCBzdHJlcnJvcihlcnIpIDw8ICIpIjsKKworICAgICAgICByZXBseS0+c2V0SW50MzIoInJlc3VsdCIsIC1lcnIpOworCisgICAgICAgIG1TdGF0ZSA9IERJU0NPTk5FQ1RFRDsKKyAgICAgICAgY2xvc2UobVNvY2tldCk7CisgICAgICAgIG1Tb2NrZXQgPSAtMTsKKyAgICB9IGVsc2UgeworICAgICAgICByZXBseS0+c2V0SW50MzIoInJlc3VsdCIsIE9LKTsKKyAgICAgICAgbVN0YXRlID0gQ09OTkVDVEVEOworICAgICAgICBtTmV4dENTZXEgPSAxOworCisgICAgICAgIHBvc3RSZWNlaXZlUmVwb25zZUV2ZW50KCk7CisgICAgfQorCisgICAgcmVwbHktPnBvc3QoKTsKK30KKwordm9pZCBBUlRTUENvbm5lY3Rpb246Om9uU2VuZFJlcXVlc3QoY29uc3Qgc3A8QU1lc3NhZ2U+ICZtc2cpIHsKKyAgICBzcDxBTWVzc2FnZT4gcmVwbHk7CisgICAgQ0hFQ0sobXNnLT5maW5kTWVzc2FnZSgicmVwbHkiLCAmcmVwbHkpKTsKKworICAgIGlmIChtU3RhdGUgIT0gQ09OTkVDVEVEKSB7CisgICAgICAgIHJlcGx5LT5zZXRJbnQzMigicmVzdWx0IiwgLUVOT1RDT05OKTsKKyAgICAgICAgcmVwbHktPnBvc3QoKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIEFTdHJpbmcgcmVxdWVzdDsKKyAgICBDSEVDSyhtc2ctPmZpbmRTdHJpbmcoInJlcXVlc3QiLCAmcmVxdWVzdCkpOworCisgICAgLy8gRmluZCB0aGUgYm91bmRhcnkgYmV0d2VlbiBoZWFkZXJzIGFuZCB0aGUgYm9keS4KKyAgICBzc2l6ZV90IGkgPSByZXF1ZXN0LmZpbmQoIlxyXG5cclxuIik7CisgICAgQ0hFQ0tfR0UoaSwgMCk7CisKKyAgICBpbnQzMl90IGNzZXEgPSBtTmV4dENTZXErKzsKKworICAgIEFTdHJpbmcgY3NlcUhlYWRlciA9ICJDU2VxOiAiOworICAgIGNzZXFIZWFkZXIuYXBwZW5kKGNzZXEpOworICAgIGNzZXFIZWFkZXIuYXBwZW5kKCJcclxuIik7CisKKyAgICByZXF1ZXN0Lmluc2VydChjc2VxSGVhZGVyLCBpICsgMik7CisKKyAgICBMT0coVkVSQk9TRSkgPDwgcmVxdWVzdDsKKworICAgIHNpemVfdCBudW1CeXRlc1NlbnQgPSAwOworICAgIHdoaWxlIChudW1CeXRlc1NlbnQgPCByZXF1ZXN0LnNpemUoKSkgeworICAgICAgICBzc2l6ZV90IG4gPQorICAgICAgICAgICAgc2VuZChtU29ja2V0LCByZXF1ZXN0LmNfc3RyKCkgKyBudW1CeXRlc1NlbnQsCisgICAgICAgICAgICAgICAgIHJlcXVlc3Quc2l6ZSgpIC0gbnVtQnl0ZXNTZW50LCAwKTsKKworICAgICAgICBpZiAobiA9PSAwKSB7CisgICAgICAgICAgICAvLyBTZXJ2ZXIgY2xvc2VkIHRoZSBjb25uZWN0aW9uLgorICAgICAgICAgICAgVFJFU1BBU1MoKTsKKyAgICAgICAgfSBlbHNlIGlmIChuIDwgMCkgeworICAgICAgICAgICAgaWYgKGVycm5vID09IEVJTlRSKSB7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFRSRVNQQVNTKCk7CisgICAgICAgIH0KKworICAgICAgICBudW1CeXRlc1NlbnQgKz0gKHNpemVfdCluOworICAgIH0KKworICAgIG1QZW5kaW5nUmVxdWVzdHMuYWRkKGNzZXEsIHJlcGx5KTsKK30KKwordm9pZCBBUlRTUENvbm5lY3Rpb246Om9uUmVjZWl2ZVJlc3BvbnNlKCkgeworICAgIG1SZWNlaXZlUmVzcG9uc2VFdmVudFBlbmRpbmcgPSBmYWxzZTsKKworICAgIGlmIChtU3RhdGUgIT0gQ09OTkVDVEVEKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBzdHJ1Y3QgdGltZXZhbCB0djsKKyAgICB0di50dl9zZWMgPSAwOworICAgIHR2LnR2X3VzZWMgPSBrU2VsZWN0VGltZW91dFVzOworCisgICAgZmRfc2V0IHJzOworICAgIEZEX1pFUk8oJnJzKTsKKyAgICBGRF9TRVQobVNvY2tldCwgJnJzKTsKKworICAgIGludCByZXMgPSBzZWxlY3QobVNvY2tldCArIDEsICZycywgTlVMTCwgTlVMTCwgJnR2KTsKKyAgICBDSEVDS19HRShyZXMsIDApOworCisgICAgaWYgKHJlcyA9PSAxKSB7CisgICAgICAgIGlmICghcmVjZWl2ZVJUU1BSZXBvbnNlKCkpIHsKKyAgICAgICAgICAgIC8vIFNvbWV0aGluZyBob3JyaWJsZSwgaXJyZXBhcmFibGUgaGFzIGhhcHBlbmVkLgorICAgICAgICAgICAgZmx1c2hQZW5kaW5nUmVxdWVzdHMoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHBvc3RSZWNlaXZlUmVwb25zZUV2ZW50KCk7Cit9CisKK3ZvaWQgQVJUU1BDb25uZWN0aW9uOjpmbHVzaFBlbmRpbmdSZXF1ZXN0cygpIHsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1QZW5kaW5nUmVxdWVzdHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgc3A8QU1lc3NhZ2U+IHJlcGx5ID0gbVBlbmRpbmdSZXF1ZXN0cy52YWx1ZUF0KGkpOworCisgICAgICAgIHJlcGx5LT5zZXRJbnQzMigicmVzdWx0IiwgLUVDT05OQUJPUlRFRCk7CisgICAgICAgIHJlcGx5LT5wb3N0KCk7CisgICAgfQorCisgICAgbVBlbmRpbmdSZXF1ZXN0cy5jbGVhcigpOworfQorCit2b2lkIEFSVFNQQ29ubmVjdGlvbjo6cG9zdFJlY2VpdmVSZXBvbnNlRXZlbnQoKSB7CisgICAgaWYgKG1SZWNlaXZlUmVzcG9uc2VFdmVudFBlbmRpbmcpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHNwPEFNZXNzYWdlPiBtc2cgPSBuZXcgQU1lc3NhZ2Uoa1doYXRSZWNlaXZlUmVzcG9uc2UsIGlkKCkpOworICAgIG1zZy0+cG9zdCgpOworCisgICAgbVJlY2VpdmVSZXNwb25zZUV2ZW50UGVuZGluZyA9IHRydWU7Cit9CisKK2Jvb2wgQVJUU1BDb25uZWN0aW9uOjpyZWNlaXZlTGluZShBU3RyaW5nICpsaW5lKSB7CisgICAgbGluZS0+Y2xlYXIoKTsKKworICAgIGJvb2wgc2F3Q1IgPSBmYWxzZTsKKyAgICBmb3IgKDs7KSB7CisgICAgICAgIGNoYXIgYzsKKyAgICAgICAgc3NpemVfdCBuID0gcmVjdihtU29ja2V0LCAmYywgMSwgMCk7CisgICAgICAgIGlmIChuID09IDApIHsKKyAgICAgICAgICAgIC8vIFNlcnZlciBjbG9zZWQgdGhlIGNvbm5lY3Rpb24uCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0gZWxzZSBpZiAobiA8IDApIHsKKyAgICAgICAgICAgIGlmIChlcnJubyA9PSBFSU5UUikgeworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBUUkVTUEFTUygpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHNhd0NSICYmIGMgPT0gJ1xuJykgeworICAgICAgICAgICAgbGluZS0+ZXJhc2UobGluZS0+c2l6ZSgpIC0gMSwgMSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGxpbmUtPmFwcGVuZCgmYywgMSk7CisKKyAgICAgICAgc2F3Q1IgPSAoYyA9PSAnXHInKTsKKyAgICB9Cit9CisKK2Jvb2wgQVJUU1BDb25uZWN0aW9uOjpyZWNlaXZlUlRTUFJlcG9uc2UoKSB7CisgICAgc3A8QVJUU1BSZXNwb25zZT4gcmVzcG9uc2UgPSBuZXcgQVJUU1BSZXNwb25zZTsKKworICAgIGlmICghcmVjZWl2ZUxpbmUoJnJlc3BvbnNlLT5tU3RhdHVzTGluZSkpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIExPRyhJTkZPKSA8PCAic3RhdHVzOiAiIDw8IHJlc3BvbnNlLT5tU3RhdHVzTGluZTsKKworICAgIHNzaXplX3Qgc3BhY2UxID0gcmVzcG9uc2UtPm1TdGF0dXNMaW5lLmZpbmQoIiAiKTsKKyAgICBpZiAoc3BhY2UxIDwgMCkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHNzaXplX3Qgc3BhY2UyID0gcmVzcG9uc2UtPm1TdGF0dXNMaW5lLmZpbmQoIiAiLCBzcGFjZTEgKyAxKTsKKyAgICBpZiAoc3BhY2UyIDwgMCkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgQVN0cmluZyBzdGF0dXNDb2RlU3RyKAorICAgICAgICAgICAgcmVzcG9uc2UtPm1TdGF0dXNMaW5lLCBzcGFjZTEgKyAxLCBzcGFjZTIgLSBzcGFjZTEgLSAxKTsKKworICAgIGlmICghUGFyc2VTaW5nbGVVbnNpZ25lZExvbmcoCisgICAgICAgICAgICAgICAgc3RhdHVzQ29kZVN0ci5jX3N0cigpLCAmcmVzcG9uc2UtPm1TdGF0dXNDb2RlKQorICAgICAgICAgICAgfHwgcmVzcG9uc2UtPm1TdGF0dXNDb2RlIDwgMTAwIHx8IHJlc3BvbnNlLT5tU3RhdHVzQ29kZSA+IDk5OSkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgQVN0cmluZyBsaW5lOworICAgIGZvciAoOzspIHsKKyAgICAgICAgaWYgKCFyZWNlaXZlTGluZSgmbGluZSkpIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGxpbmUuZW1wdHkoKSkgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBMT0coVkVSQk9TRSkgPDwgImxpbmU6ICIgPDwgbGluZTsKKworICAgICAgICBzc2l6ZV90IGNvbG9uUG9zID0gbGluZS5maW5kKCI6Iik7CisgICAgICAgIGlmIChjb2xvblBvcyA8IDApIHsKKyAgICAgICAgICAgIC8vIE1hbGZvcm1lZCBoZWFkZXIgbGluZS4KKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIEFTdHJpbmcga2V5KGxpbmUsIDAsIGNvbG9uUG9zKTsKKyAgICAgICAga2V5LnRyaW0oKTsKKyAgICAgICAga2V5LnRvbG93ZXIoKTsKKworICAgICAgICBsaW5lLmVyYXNlKDAsIGNvbG9uUG9zICsgMSk7CisgICAgICAgIGxpbmUudHJpbSgpOworCisgICAgICAgIHJlc3BvbnNlLT5tSGVhZGVycy5hZGQoa2V5LCBsaW5lKTsKKyAgICB9CisKKyAgICB1bnNpZ25lZCBsb25nIGNvbnRlbnRMZW5ndGggPSAwOworCisgICAgc3NpemVfdCBpID0gcmVzcG9uc2UtPm1IZWFkZXJzLmluZGV4T2ZLZXkoImNvbnRlbnQtbGVuZ3RoIik7CisKKyAgICBpZiAoaSA+PSAwKSB7CisgICAgICAgIEFTdHJpbmcgdmFsdWUgPSByZXNwb25zZS0+bUhlYWRlcnMudmFsdWVBdChpKTsKKyAgICAgICAgaWYgKCFQYXJzZVNpbmdsZVVuc2lnbmVkTG9uZyh2YWx1ZS5jX3N0cigpLCAmY29udGVudExlbmd0aCkpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChjb250ZW50TGVuZ3RoID4gMCkgeworICAgICAgICByZXNwb25zZS0+bUNvbnRlbnQgPSBuZXcgQUJ1ZmZlcihjb250ZW50TGVuZ3RoKTsKKworICAgICAgICBzaXplX3QgbnVtQnl0ZXNSZWFkID0gMDsKKyAgICAgICAgd2hpbGUgKG51bUJ5dGVzUmVhZCA8IGNvbnRlbnRMZW5ndGgpIHsKKyAgICAgICAgICAgIHNzaXplX3QgbiA9IHJlY3YoCisgICAgICAgICAgICAgICAgICAgIG1Tb2NrZXQsIHJlc3BvbnNlLT5tQ29udGVudC0+ZGF0YSgpICsgbnVtQnl0ZXNSZWFkLAorICAgICAgICAgICAgICAgICAgICBjb250ZW50TGVuZ3RoIC0gbnVtQnl0ZXNSZWFkLCAwKTsKKworICAgICAgICAgICAgaWYgKG4gPT0gMCkgeworICAgICAgICAgICAgICAgIC8vIFNlcnZlciBjbG9zZWQgdGhlIGNvbm5lY3Rpb24uCisgICAgICAgICAgICAgICAgVFJFU1BBU1MoKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobiA8IDApIHsKKyAgICAgICAgICAgICAgICBpZiAoZXJybm8gPT0gRUlOVFIpIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgVFJFU1BBU1MoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbnVtQnl0ZXNSZWFkICs9IChzaXplX3QpbjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBub3RpZnlSZXNwb25zZUxpc3RlbmVyKHJlc3BvbnNlKTsKK30KKworLy8gc3RhdGljCitib29sIEFSVFNQQ29ubmVjdGlvbjo6UGFyc2VTaW5nbGVVbnNpZ25lZExvbmcoCisgICAgICAgIGNvbnN0IGNoYXIgKmZyb20sIHVuc2lnbmVkIGxvbmcgKngpIHsKKyAgICBjaGFyICplbmQ7CisgICAgKnggPSBzdHJ0b3VsKGZyb20sICZlbmQsIDEwKTsKKworICAgIGlmIChlbmQgPT0gZnJvbSB8fCAqZW5kICE9ICdcMCcpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEFSVFNQQ29ubmVjdGlvbjo6bm90aWZ5UmVzcG9uc2VMaXN0ZW5lcigKKyAgICAgICAgY29uc3Qgc3A8QVJUU1BSZXNwb25zZT4gJnJlc3BvbnNlKSB7CisgICAgc3NpemVfdCBpID0gcmVzcG9uc2UtPm1IZWFkZXJzLmluZGV4T2ZLZXkoImNzZXEiKTsKKworICAgIGlmIChpIDwgMCkgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBBU3RyaW5nIHZhbHVlID0gcmVzcG9uc2UtPm1IZWFkZXJzLnZhbHVlQXQoaSk7CisKKyAgICB1bnNpZ25lZCBsb25nIGNzZXE7CisgICAgaWYgKCFQYXJzZVNpbmdsZVVuc2lnbmVkTG9uZyh2YWx1ZS5jX3N0cigpLCAmY3NlcSkpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIGkgPSBtUGVuZGluZ1JlcXVlc3RzLmluZGV4T2ZLZXkoY3NlcSk7CisKKyAgICBpZiAoaSA8IDApIHsKKyAgICAgICAgLy8gVW5zb2xpY2l0ZWQgcmVzcG9uc2U/CisgICAgICAgIFRSRVNQQVNTKCk7CisgICAgfQorCisgICAgc3A8QU1lc3NhZ2U+IHJlcGx5ID0gbVBlbmRpbmdSZXF1ZXN0cy52YWx1ZUF0KGkpOworICAgIG1QZW5kaW5nUmVxdWVzdHMucmVtb3ZlSXRlbXNBdChpKTsKKworICAgIHJlcGx5LT5zZXRJbnQzMigicmVzdWx0IiwgT0spOworICAgIHJlcGx5LT5zZXRPYmplY3QoInJlc3BvbnNlIiwgcmVzcG9uc2UpOworICAgIHJlcGx5LT5wb3N0KCk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L3J0c3AvQVJUU1BDb25uZWN0aW9uLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9ydHNwL0FSVFNQQ29ubmVjdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1NzdhMmYKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9ydHNwL0FSVFNQQ29ubmVjdGlvbi5oCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIEFfUlRTUF9DT05ORUNUSU9OX0hfCisKKyNkZWZpbmUgQV9SVFNQX0NPTk5FQ1RJT05fSF8KKworI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUhhbmRsZXIuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FTdHJpbmcuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitzdHJ1Y3QgQUJ1ZmZlcjsKKworc3RydWN0IEFSVFNQUmVzcG9uc2UgOiBwdWJsaWMgUmVmQmFzZSB7CisgICAgdW5zaWduZWQgbG9uZyBtU3RhdHVzQ29kZTsKKyAgICBBU3RyaW5nIG1TdGF0dXNMaW5lOworICAgIEtleWVkVmVjdG9yPEFTdHJpbmcsQVN0cmluZz4gbUhlYWRlcnM7CisgICAgc3A8QUJ1ZmZlcj4gbUNvbnRlbnQ7Cit9OworCitzdHJ1Y3QgQVJUU1BDb25uZWN0aW9uIDogcHVibGljIEFIYW5kbGVyIHsKKyAgICBBUlRTUENvbm5lY3Rpb24oKTsKKworICAgIHZvaWQgY29ubmVjdChjb25zdCBjaGFyICp1cmwsIGNvbnN0IHNwPEFNZXNzYWdlPiAmcmVwbHkpOworICAgIHZvaWQgZGlzY29ubmVjdChjb25zdCBzcDxBTWVzc2FnZT4gJnJlcGx5KTsKKworICAgIHZvaWQgc2VuZFJlcXVlc3QoY29uc3QgY2hhciAqcmVxdWVzdCwgY29uc3Qgc3A8QU1lc3NhZ2U+ICZyZXBseSk7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5BUlRTUENvbm5lY3Rpb24oKTsKKyAgICB2aXJ0dWFsIHZvaWQgb25NZXNzYWdlUmVjZWl2ZWQoY29uc3Qgc3A8QU1lc3NhZ2U+ICZtc2cpOworCitwcml2YXRlOgorICAgIGVudW0gU3RhdGUgeworICAgICAgICBESVNDT05ORUNURUQsCisgICAgICAgIENPTk5FQ1RJTkcsCisgICAgICAgIENPTk5FQ1RFRCwKKyAgICB9OworCisgICAgZW51bSB7CisgICAgICAgIGtXaGF0Q29ubmVjdCAgICAgICAgICAgID0gJ2Nvbm4nLAorICAgICAgICBrV2hhdERpc2Nvbm5lY3QgICAgICAgICA9ICdkaXNjJywKKyAgICAgICAga1doYXRDb21wbGV0ZUNvbm5lY3Rpb24gPSAnY29tYycsCisgICAgICAgIGtXaGF0U2VuZFJlcXVlc3QgICAgICAgID0gJ3NyZXEnLAorICAgICAgICBrV2hhdFJlY2VpdmVSZXNwb25zZSAgICA9ICdycmVzJywKKyAgICB9OworCisgICAgc3RhdGljIGNvbnN0IGludDY0X3Qga1NlbGVjdFRpbWVvdXRVczsKKworICAgIFN0YXRlIG1TdGF0ZTsKKyAgICBpbnQgbVNvY2tldDsKKyAgICBpbnQzMl90IG1Db25uZWN0aW9uSUQ7CisgICAgaW50MzJfdCBtTmV4dENTZXE7CisgICAgYm9vbCBtUmVjZWl2ZVJlc3BvbnNlRXZlbnRQZW5kaW5nOworCisgICAgS2V5ZWRWZWN0b3I8aW50MzJfdCwgc3A8QU1lc3NhZ2U+ID4gbVBlbmRpbmdSZXF1ZXN0czsKKworICAgIHZvaWQgb25Db25uZWN0KGNvbnN0IHNwPEFNZXNzYWdlPiAmbXNnKTsKKyAgICB2b2lkIG9uRGlzY29ubmVjdChjb25zdCBzcDxBTWVzc2FnZT4gJm1zZyk7CisgICAgdm9pZCBvbkNvbXBsZXRlQ29ubmVjdGlvbihjb25zdCBzcDxBTWVzc2FnZT4gJm1zZyk7CisgICAgdm9pZCBvblNlbmRSZXF1ZXN0KGNvbnN0IHNwPEFNZXNzYWdlPiAmbXNnKTsKKyAgICB2b2lkIG9uUmVjZWl2ZVJlc3BvbnNlKCk7CisKKyAgICB2b2lkIGZsdXNoUGVuZGluZ1JlcXVlc3RzKCk7CisgICAgdm9pZCBwb3N0UmVjZWl2ZVJlcG9uc2VFdmVudCgpOworCisgICAgLy8gUmV0dXJuIGZhbHNlIGlmZiBzb21ldGhpbmcgd2VudCB1bnJlY292ZXJhYmx5IHdyb25nLgorICAgIGJvb2wgcmVjZWl2ZVJUU1BSZXBvbnNlKCk7CisgICAgYm9vbCByZWNlaXZlTGluZShBU3RyaW5nICpsaW5lKTsKKyAgICBib29sIG5vdGlmeVJlc3BvbnNlTGlzdGVuZXIoY29uc3Qgc3A8QVJUU1BSZXNwb25zZT4gJnJlc3BvbnNlKTsKKworICAgIHN0YXRpYyBib29sIFBhcnNlVVJMKAorICAgICAgICAgICAgY29uc3QgY2hhciAqdXJsLCBBU3RyaW5nICpob3N0LCB1bnNpZ25lZCAqcG9ydCwgQVN0cmluZyAqcGF0aCk7CisKKyAgICBzdGF0aWMgYm9vbCBQYXJzZVNpbmdsZVVuc2lnbmVkTG9uZygKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZyb20sIHVuc2lnbmVkIGxvbmcgKngpOworCisgICAgRElTQUxMT1dfRVZJTF9DT05TVFJVQ1RPUlMoQVJUU1BDb25uZWN0aW9uKTsKK307CisKK30gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCisKKyNlbmRpZiAgLy8gQV9SVFNQX0NPTk5FQ1RJT05fSF8KZGlmZiAtLWdpdCBhL21lZGlhL2xpYnN0YWdlZnJpZ2h0L3J0c3AvQVJUU1BDb250cm9sbGVyLmNwcCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L3J0c3AvQVJUU1BDb250cm9sbGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Yjg3ZDQyCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvcnRzcC9BUlRTUENvbnRyb2xsZXIuY3BwCkBAIC0wLDAgKzEsNzUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaW5jbHVkZSAiQVJUU1BDb250cm9sbGVyLmgiCisKKyNpbmNsdWRlICJNeUhhbmRsZXIuaCIKKworI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQURlYnVnLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFFcnJvcnMuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYVNvdXJjZS5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L01ldGFEYXRhLmg+CisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworQVJUU1BDb250cm9sbGVyOjpBUlRTUENvbnRyb2xsZXIoY29uc3Qgc3A8QUxvb3Blcj4gJmxvb3BlcikKKyAgICA6IG1Mb29wZXIobG9vcGVyKSB7Cit9CisKK0FSVFNQQ29udHJvbGxlcjo6fkFSVFNQQ29udHJvbGxlcigpIHsKK30KKworc3RhdHVzX3QgQVJUU1BDb250cm9sbGVyOjpjb25uZWN0KGNvbnN0IGNoYXIgKnVybCkgeworICAgIGlmIChtSGFuZGxlciAhPSBOVUxMKSB7CisgICAgICAgIHJldHVybiBFUlJPUl9BTFJFQURZX0NPTk5FQ1RFRDsKKyAgICB9CisKKyAgICBtSGFuZGxlciA9IG5ldyBNeUhhbmRsZXIodXJsLCBtTG9vcGVyKTsKKyAgICBzbGVlcCgxMCk7CisKKyAgICByZXR1cm4gT0s7Cit9CisKK3ZvaWQgQVJUU1BDb250cm9sbGVyOjpkaXNjb25uZWN0KCkgeworICAgIGlmIChtSGFuZGxlciA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBtSGFuZGxlci5jbGVhcigpOworfQorCitzaXplX3QgQVJUU1BDb250cm9sbGVyOjpjb3VudFRyYWNrcygpIHsKKyAgICBpZiAobUhhbmRsZXIgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICByZXR1cm4gbUhhbmRsZXItPmNvdW50VHJhY2tzKCk7Cit9CisKK3NwPE1lZGlhU291cmNlPiBBUlRTUENvbnRyb2xsZXI6OmdldFRyYWNrKHNpemVfdCBpbmRleCkgeworICAgIENIRUNLKG1IYW5kbGVyICE9IE5VTEwpOworCisgICAgcmV0dXJuIG1IYW5kbGVyLT5nZXRQYWNrZXRTb3VyY2UoaW5kZXgpOworfQorCitzcDxNZXRhRGF0YT4gQVJUU1BDb250cm9sbGVyOjpnZXRUcmFja01ldGFEYXRhKAorICAgICAgICBzaXplX3QgaW5kZXgsIHVpbnQzMl90IGZsYWdzKSB7CisgICAgQ0hFQ0sobUhhbmRsZXIgIT0gTlVMTCk7CisKKyAgICByZXR1cm4gbUhhbmRsZXItPmdldFBhY2tldFNvdXJjZShpbmRleCktPmdldEZvcm1hdCgpOworfQorCit9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZApkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvcnRzcC9BU2Vzc2lvbkRlc2NyaXB0aW9uLmNwcCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L3J0c3AvQVNlc3Npb25EZXNjcmlwdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2E0YzU1ZQotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L3J0c3AvQVNlc3Npb25EZXNjcmlwdGlvbi5jcHAKQEAgLTAsMCArMSwyNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaW5jbHVkZSAiQVNlc3Npb25EZXNjcmlwdGlvbi5oIgorCisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9BRGVidWcuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FTdHJpbmcuaD4KKworI2luY2x1ZGUgPHN0ZGxpYi5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK0FTZXNzaW9uRGVzY3JpcHRpb246OkFTZXNzaW9uRGVzY3JpcHRpb24oKQorICAgIDogbUlzVmFsaWQoZmFsc2UpIHsKK30KKworQVNlc3Npb25EZXNjcmlwdGlvbjo6fkFTZXNzaW9uRGVzY3JpcHRpb24oKSB7Cit9CisKK2Jvb2wgQVNlc3Npb25EZXNjcmlwdGlvbjo6c2V0VG8oY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUpIHsKKyAgICBtSXNWYWxpZCA9IHBhcnNlKGRhdGEsIHNpemUpOworCisgICAgaWYgKCFtSXNWYWxpZCkgeworICAgICAgICBtVHJhY2tzLmNsZWFyKCk7CisgICAgICAgIG1Gb3JtYXRzLmNsZWFyKCk7CisgICAgfQorCisgICAgcmV0dXJuIG1Jc1ZhbGlkOworfQorCitib29sIEFTZXNzaW9uRGVzY3JpcHRpb246OnBhcnNlKGNvbnN0IHZvaWQgKmRhdGEsIHNpemVfdCBzaXplKSB7CisgICAgbVRyYWNrcy5jbGVhcigpOworICAgIG1Gb3JtYXRzLmNsZWFyKCk7CisKKyAgICBtVHJhY2tzLnB1c2goQXR0cmlicygpKTsKKyAgICBtRm9ybWF0cy5wdXNoKEFTdHJpbmcoIltyb290XSIpKTsKKworICAgIEFTdHJpbmcgZGVzYygoY29uc3QgY2hhciAqKWRhdGEsIHNpemUpOworICAgIExPRyhWRVJCT1NFKSA8PCBkZXNjOworCisgICAgc2l6ZV90IGkgPSAwOworICAgIGZvciAoOzspIHsKKyAgICAgICAgc3NpemVfdCBlb2xQb3MgPSBkZXNjLmZpbmQoIlxyXG4iLCBpKTsKKyAgICAgICAgaWYgKGVvbFBvcyA8IDApIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgQVN0cmluZyBsaW5lKGRlc2MsIGksIGVvbFBvcyAtIGkpOworCisgICAgICAgIGlmIChsaW5lLnNpemUoKSA8IDIgfHwgbGluZS5jX3N0cigpWzFdICE9ICc9JykgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoIChsaW5lLmNfc3RyKClbMF0pIHsKKyAgICAgICAgICAgIGNhc2UgJ3YnOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGlmIChzdHJjbXAobGluZS5jX3N0cigpLCAidj0wIikpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FzZSAnYSc6CisgICAgICAgICAgICBjYXNlICdiJzoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBBU3RyaW5nIGtleSwgdmFsdWU7CisKKyAgICAgICAgICAgICAgICBzc2l6ZV90IGNvbG9uUG9zID0gbGluZS5maW5kKCI6IiwgMik7CisgICAgICAgICAgICAgICAgaWYgKGNvbG9uUG9zIDwgMCkgeworICAgICAgICAgICAgICAgICAgICBrZXkgPSBsaW5lOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGtleS5zZXRUbyhsaW5lLCAwLCBjb2xvblBvcyk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGtleSA9PSAiYT1mbXRwIiB8fCBrZXkgPT0gImE9cnRwbWFwIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGtleSA9PSAiYT1mcmFtZXNpemUiKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzc2l6ZV90IHNwYWNlUG9zID0gbGluZS5maW5kKCIgIiwgY29sb25Qb3MgKyAxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzcGFjZVBvcyA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGtleS5zZXRUbyhsaW5lLCAwLCBzcGFjZVBvcyk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9uUG9zID0gc3BhY2VQb3M7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICB2YWx1ZS5zZXRUbyhsaW5lLCBjb2xvblBvcyArIDEsIGxpbmUuc2l6ZSgpIC0gY29sb25Qb3MgLSAxKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBrZXkudHJpbSgpOworICAgICAgICAgICAgICAgIHZhbHVlLnRyaW0oKTsKKworICAgICAgICAgICAgICAgIExPRyhWRVJCT1NFKSA8PCAiYWRkaW5nICciIDw8IGtleSA8PCAiJyA9PiAnIiA8PCB2YWx1ZSA8PCAiJyI7CisKKyAgICAgICAgICAgICAgICBtVHJhY2tzLmVkaXRJdGVtQXQobVRyYWNrcy5zaXplKCkgLSAxKS5hZGQoa2V5LCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhc2UgJ20nOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIExPRyhWRVJCT1NFKSA8PCAibmV3IHNlY3Rpb24gJyIgPDwgQVN0cmluZyhsaW5lLCAyLCBsaW5lLnNpemUoKSAtIDIpIDw8ICInIjsKKworICAgICAgICAgICAgICAgIG1UcmFja3MucHVzaChBdHRyaWJzKCkpOworICAgICAgICAgICAgICAgIG1Gb3JtYXRzLnB1c2goQVN0cmluZyhsaW5lLCAyLCBsaW5lLnNpemUoKSAtIDIpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGkgPSBlb2xQb3MgKyAyOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCitib29sIEFTZXNzaW9uRGVzY3JpcHRpb246OmlzVmFsaWQoKSBjb25zdCB7CisgICAgcmV0dXJuIG1Jc1ZhbGlkOworfQorCitzaXplX3QgQVNlc3Npb25EZXNjcmlwdGlvbjo6Y291bnRUcmFja3MoKSBjb25zdCB7CisgICAgcmV0dXJuIG1UcmFja3Muc2l6ZSgpOworfQorCit2b2lkIEFTZXNzaW9uRGVzY3JpcHRpb246OmdldEZvcm1hdChzaXplX3QgaW5kZXgsIEFTdHJpbmcgKnZhbHVlKSBjb25zdCB7CisgICAgQ0hFQ0tfR0UoaW5kZXgsIDB1KTsKKyAgICBDSEVDS19MVChpbmRleCwgbVRyYWNrcy5zaXplKCkpOworCisgICAgKnZhbHVlID0gbUZvcm1hdHMuaXRlbUF0KGluZGV4KTsKK30KKworYm9vbCBBU2Vzc2lvbkRlc2NyaXB0aW9uOjpmaW5kQXR0cmlidXRlKAorICAgICAgICBzaXplX3QgaW5kZXgsIGNvbnN0IGNoYXIgKmtleSwgQVN0cmluZyAqdmFsdWUpIGNvbnN0IHsKKyAgICBDSEVDS19HRShpbmRleCwgMHUpOworICAgIENIRUNLX0xUKGluZGV4LCBtVHJhY2tzLnNpemUoKSk7CisKKyAgICB2YWx1ZS0+Y2xlYXIoKTsKKworICAgIGNvbnN0IEF0dHJpYnMgJnRyYWNrID0gbVRyYWNrcy5pdGVtQXQoaW5kZXgpOworICAgIHNzaXplX3QgaSA9IHRyYWNrLmluZGV4T2ZLZXkoQVN0cmluZyhrZXkpKTsKKworICAgIGlmIChpIDwgMCkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgKnZhbHVlID0gdHJhY2sudmFsdWVBdChpKTsKKworICAgIHJldHVybiB0cnVlOworfQorCit2b2lkIEFTZXNzaW9uRGVzY3JpcHRpb246OmdldEZvcm1hdFR5cGUoCisgICAgICAgIHNpemVfdCBpbmRleCwgdW5zaWduZWQgbG9uZyAqUFQsCisgICAgICAgIEFTdHJpbmcgKmRlc2MsIEFTdHJpbmcgKnBhcmFtcykgY29uc3QgeworICAgIEFTdHJpbmcgZm9ybWF0OworICAgIGdldEZvcm1hdChpbmRleCwgJmZvcm1hdCk7CisKKyAgICBjaGFyICpsYXN0U3BhY2VQb3MgPSBzdHJyY2hyKGZvcm1hdC5jX3N0cigpLCAnICcpOworICAgIENIRUNLKGxhc3RTcGFjZVBvcyAhPSBOVUxMKTsKKworICAgIGNoYXIgKmVuZDsKKyAgICB1bnNpZ25lZCBsb25nIHggPSBzdHJ0b3VsKGxhc3RTcGFjZVBvcyArIDEsICZlbmQsIDEwKTsKKyAgICBDSEVDS19HVChlbmQsIGxhc3RTcGFjZVBvcyArIDEpOworICAgIENIRUNLX0VRKCplbmQsICdcMCcpOworCisgICAgKlBUID0geDsKKworICAgIGNoYXIga2V5WzIwXTsKKyAgICBzcHJpbnRmKGtleSwgImE9cnRwbWFwOiVsdSIsIHgpOworCisgICAgQ0hFQ0soZmluZEF0dHJpYnV0ZShpbmRleCwga2V5LCBkZXNjKSk7CisKKyAgICBzcHJpbnRmKGtleSwgImE9Zm10cDolbHUiLCB4KTsKKyAgICBpZiAoIWZpbmRBdHRyaWJ1dGUoaW5kZXgsIGtleSwgcGFyYW1zKSkgeworICAgICAgICBwYXJhbXMtPmNsZWFyKCk7CisgICAgfQorfQorCit2b2lkIEFTZXNzaW9uRGVzY3JpcHRpb246OmdldERpbWVuc2lvbnMoCisgICAgICAgIHNpemVfdCBpbmRleCwgdW5zaWduZWQgbG9uZyBQVCwKKyAgICAgICAgaW50MzJfdCAqd2lkdGgsIGludDMyX3QgKmhlaWdodCkgY29uc3QgeworICAgIGNoYXIga2V5WzIwXTsKKyAgICBzcHJpbnRmKGtleSwgImE9ZnJhbWVzaXplOiVsdSIsIFBUKTsKKyAgICBBU3RyaW5nIHZhbHVlOworICAgIENIRUNLKGZpbmRBdHRyaWJ1dGUoaW5kZXgsIGtleSwgJnZhbHVlKSk7CisKKyAgICBjb25zdCBjaGFyICpzID0gdmFsdWUuY19zdHIoKTsKKyAgICBjaGFyICplbmQ7CisgICAgKndpZHRoID0gc3RydG91bChzLCAmZW5kLCAxMCk7CisgICAgQ0hFQ0tfR1QoZW5kLCBzKTsKKyAgICBDSEVDS19FUSgqZW5kLCAnLScpOworCisgICAgcyA9IGVuZCArIDE7CisgICAgKmhlaWdodCA9IHN0cnRvdWwocywgJmVuZCwgMTApOworICAgIENIRUNLX0dUKGVuZCwgcyk7CisgICAgQ0hFQ0tfRVEoKmVuZCwgJ1wwJyk7Cit9CisKK2Jvb2wgQVNlc3Npb25EZXNjcmlwdGlvbjo6Z2V0RHVyYXRpb25VcyhpbnQ2NF90ICpkdXJhdGlvblVzKSBjb25zdCB7CisgICAgKmR1cmF0aW9uVXMgPSAwOworCisgICAgQ0hFQ0sobUlzVmFsaWQpOworCisgICAgQVN0cmluZyB2YWx1ZTsKKyAgICBpZiAoIWZpbmRBdHRyaWJ1dGUoMCwgImE9cmFuZ2UiLCAmdmFsdWUpKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBpZiAodmFsdWUgPT0gIm5wdD1ub3ctIikgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgaWYgKHN0cm5jbXAodmFsdWUuY19zdHIoKSwgIm5wdD0iLCA0KSkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgY29uc3QgY2hhciAqcyA9IHZhbHVlLmNfc3RyKCkgKyA0OworICAgIGNoYXIgKmVuZDsKKyAgICBkb3VibGUgZnJvbSA9IHN0cnRvZChzLCAmZW5kKTsKKyAgICBDSEVDS19HVChlbmQsIHMpOworICAgIENIRUNLX0VRKCplbmQsICctJyk7CisKKyAgICBzID0gZW5kICsgMTsKKyAgICBkb3VibGUgdG8gPSBzdHJ0b2QocywgJmVuZCk7CisgICAgQ0hFQ0tfR1QoZW5kLCBzKTsKKyAgICBDSEVDS19FUSgqZW5kLCAnXDAnKTsKKworICAgIENIRUNLX0dFKHRvLCBmcm9tKTsKKworICAgICpkdXJhdGlvblVzID0gKGludDY0X3QpKCh0byAtIGZyb20pICogMUU2KTsKKworICAgIHJldHVybiB0cnVlOworfQorCisvLyBzdGF0aWMKK3ZvaWQgQVNlc3Npb25EZXNjcmlwdGlvbjo6UGFyc2VGb3JtYXREZXNjKAorICAgICAgICBjb25zdCBjaGFyICpkZXNjLCBpbnQzMl90ICp0aW1lc2NhbGUsIGludDMyX3QgKm51bUNoYW5uZWxzKSB7CisgICAgY29uc3QgY2hhciAqc2xhc2gxID0gc3RyY2hyKGRlc2MsICcvJyk7CisgICAgQ0hFQ0soc2xhc2gxICE9IE5VTEwpOworCisgICAgY29uc3QgY2hhciAqcyA9IHNsYXNoMSArIDE7CisgICAgY2hhciAqZW5kOworICAgIHVuc2lnbmVkIGxvbmcgeCA9IHN0cnRvdWwocywgJmVuZCwgMTApOworICAgIENIRUNLX0dUKGVuZCwgcyk7CisgICAgQ0hFQ0soKmVuZCA9PSAnXDAnIHx8ICplbmQgPT0gJy8nKTsKKworICAgICp0aW1lc2NhbGUgPSB4OworICAgICpudW1DaGFubmVscyA9IDE7CisKKyAgICBpZiAoKmVuZCA9PSAnLycpIHsKKyAgICAgICAgcyA9IGVuZCArIDE7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgeCA9IHN0cnRvdWwocywgJmVuZCwgMTApOworICAgICAgICBDSEVDS19HVChlbmQsIHMpOworICAgICAgICBDSEVDS19FUSgqZW5kLCAnXDAnKTsKKworICAgICAgICAqbnVtQ2hhbm5lbHMgPSB4OworICAgIH0KK30KKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKKwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvcnRzcC9BU2Vzc2lvbkRlc2NyaXB0aW9uLmggYi9tZWRpYS9saWJzdGFnZWZyaWdodC9ydHNwL0FTZXNzaW9uRGVzY3JpcHRpb24uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjY5ODBmCi0tLSAvZGV2L251bGwKKysrIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvcnRzcC9BU2Vzc2lvbkRlc2NyaXB0aW9uLmgKQEAgLTAsMCArMSw3NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgQV9TRVNTSU9OX0RFU0NSSVBUSU9OX0hfCisKKyNkZWZpbmUgQV9TRVNTSU9OX0RFU0NSSVBUSU9OX0hfCisKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKworI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUJhc2UuaD4KKyNpbmNsdWRlIDx1dGlscy9LZXllZFZlY3Rvci5oPgorI2luY2x1ZGUgPHV0aWxzL1JlZkJhc2UuaD4KKyNpbmNsdWRlIDx1dGlscy9WZWN0b3IuaD4KKworbmFtZXNwYWNlIGFuZHJvaWQgeworCitzdHJ1Y3QgQVN0cmluZzsKKworc3RydWN0IEFTZXNzaW9uRGVzY3JpcHRpb24gOiBwdWJsaWMgUmVmQmFzZSB7CisgICAgQVNlc3Npb25EZXNjcmlwdGlvbigpOworCisgICAgYm9vbCBzZXRUbyhjb25zdCB2b2lkICpkYXRhLCBzaXplX3Qgc2l6ZSk7CisgICAgYm9vbCBpc1ZhbGlkKCkgY29uc3Q7CisKKyAgICAvLyBBY3R1YWxseSwgMSArIG51bWJlciBvZiB0cmFja3MsIGFzIGluZGV4IDAgaXMgcmVzZXJ2ZWQgZm9yIHRoZQorICAgIC8vIHNlc3Npb24gZGVzY3JpcHRpb24gcm9vdC1sZXZlbCBhdHRyaWJ1dGVzLgorICAgIHNpemVfdCBjb3VudFRyYWNrcygpIGNvbnN0OworICAgIHZvaWQgZ2V0Rm9ybWF0KHNpemVfdCBpbmRleCwgQVN0cmluZyAqdmFsdWUpIGNvbnN0OworCisgICAgdm9pZCBnZXRGb3JtYXRUeXBlKAorICAgICAgICAgICAgc2l6ZV90IGluZGV4LCB1bnNpZ25lZCBsb25nICpQVCwKKyAgICAgICAgICAgIEFTdHJpbmcgKmRlc2MsIEFTdHJpbmcgKnBhcmFtcykgY29uc3Q7CisKKyAgICB2b2lkIGdldERpbWVuc2lvbnMoCisgICAgICAgICAgICBzaXplX3QgaW5kZXgsIHVuc2lnbmVkIGxvbmcgUFQsCisgICAgICAgICAgICBpbnQzMl90ICp3aWR0aCwgaW50MzJfdCAqaGVpZ2h0KSBjb25zdDsKKworICAgIGJvb2wgZ2V0RHVyYXRpb25VcyhpbnQ2NF90ICpkdXJhdGlvblVzKSBjb25zdDsKKworICAgIHN0YXRpYyB2b2lkIFBhcnNlRm9ybWF0RGVzYygKKyAgICAgICAgICAgIGNvbnN0IGNoYXIgKmRlc2MsIGludDMyX3QgKnRpbWVzY2FsZSwgaW50MzJfdCAqbnVtQ2hhbm5lbHMpOworCisgICAgYm9vbCBmaW5kQXR0cmlidXRlKHNpemVfdCBpbmRleCwgY29uc3QgY2hhciAqa2V5LCBBU3RyaW5nICp2YWx1ZSkgY29uc3Q7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5BU2Vzc2lvbkRlc2NyaXB0aW9uKCk7CisKK3ByaXZhdGU6CisgICAgdHlwZWRlZiBLZXllZFZlY3RvcjxBU3RyaW5nLEFTdHJpbmc+IEF0dHJpYnM7CisKKyAgICBib29sIG1Jc1ZhbGlkOworICAgIFZlY3RvcjxBdHRyaWJzPiBtVHJhY2tzOworICAgIFZlY3RvcjxBU3RyaW5nPiBtRm9ybWF0czsKKworICAgIGJvb2wgcGFyc2UoY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUpOworCisgICAgRElTQUxMT1dfRVZJTF9DT05TVFJVQ1RPUlMoQVNlc3Npb25EZXNjcmlwdGlvbik7Cit9OworCit9ICAvLyBuYW1lc3BhY2UgYW5kcm9pZAorCisjZW5kaWYgIC8vIEFfU0VTU0lPTl9ERVNDUklQVElPTl9IXwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvcnRzcC9BbmRyb2lkLm1rIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvcnRzcC9BbmRyb2lkLm1rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2MDhmYTAKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9ydHNwL0FuZHJvaWQubWsKQEAgLTAsMCArMSwyOCBAQAorTE9DQUxfUEFUSDo9ICQoY2FsbCBteS1kaXIpCisKK2luY2x1ZGUgJChDTEVBUl9WQVJTKQorCitMT0NBTF9TUkNfRklMRVM6PSAgICAgICBcCisgICAgICAgIEFSVFNQQ29udHJvbGxlci5jcHAgICAgICAgICBcCisgICAgICAgIEFBVkNBc3NlbWJsZXIuY3BwICAgICAgICAgICBcCisgICAgICAgIEFNUEVHNEF1ZGlvQXNzZW1ibGVyLmNwcCAgICBcCisgICAgICAgIEFQYWNrZXRTb3VyY2UuY3BwICAgICAgICAgICBcCisgICAgICAgIEFSVFBBc3NlbWJsZXIuY3BwICAgICAgICAgICBcCisgICAgICAgIEFSVFBDb25uZWN0aW9uLmNwcCAgICAgICAgICBcCisgICAgICAgIEFSVFBTb3VyY2UuY3BwICAgICAgICAgICAgICBcCisgICAgICAgIEFSVFNQQ29ubmVjdGlvbi5jcHAgICAgICAgICBcCisgICAgICAgIEFTZXNzaW9uRGVzY3JpcHRpb24uY3BwICAgICBcCisKK0xPQ0FMX0NfSU5DTFVERVM6PSBcCisJJChKTklfSF9JTkNMVURFKSBcCisJJChUT1ApL2V4dGVybmFsL29wZW5jb3JlL2V4dGVybl9saWJzX3YyL2tocm9ub3Mvb3Blbm1heC9pbmNsdWRlIFwKKyAgICAgICAgJChUT1ApL2ZyYW1ld29ya3MvYmFzZS9tZWRpYS9saWJzdGFnZWZyaWdodC9pbmNsdWRlIFwKKworTE9DQUxfTU9EVUxFOj0gbGlic3RhZ2VmcmlnaHRfcnRzcAorCitpZmVxICgkKFRBUkdFVF9BUkNIKSxhcm0pCisgICAgTE9DQUxfQ0ZMQUdTICs9IC1Xbm8tcHNhYmkKK2VuZGlmCisKK2luY2x1ZGUgJChCVUlMRF9TVEFUSUNfTElCUkFSWSkKKwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvcnRzcC9NeUhhbmRsZXIuaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L3J0c3AvTXlIYW5kbGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzRiYjc5OAotLS0gL2Rldi9udWxsCisrKyBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L3J0c3AvTXlIYW5kbGVyLmgKQEAgLTAsMCArMSw0NDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIE1ZX0hBTkRMRVJfSF8KKworI2RlZmluZSBNWV9IQU5ETEVSX0hfCisKKyNpbmNsdWRlICJBUGFja2V0U291cmNlLmgiCisjaW5jbHVkZSAiQVJUUENvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJBUlRTUENvbm5lY3Rpb24uaCIKKyNpbmNsdWRlICJBU2Vzc2lvbkRlc2NyaXB0aW9uLmgiCisKKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FCdWZmZXIuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FEZWJ1Zy5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQUxvb3Blci5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vQU1lc3NhZ2UuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYUVycm9ycy5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK3N0cnVjdCBNeUhhbmRsZXIgOiBwdWJsaWMgQUhhbmRsZXIgeworICAgIE15SGFuZGxlcihjb25zdCBjaGFyICp1cmwsIGNvbnN0IHNwPEFMb29wZXI+ICZsb29wZXIpCisgICAgICAgIDogbUxvb3Blcihsb29wZXIpLAorICAgICAgICAgIG1Db25uKG5ldyBBUlRTUENvbm5lY3Rpb24pLAorICAgICAgICAgIG1SVFBDb25uKG5ldyBBUlRQQ29ubmVjdGlvbiksCisgICAgICAgICAgbVNlc3Npb25VUkwodXJsKSwKKyAgICAgICAgICBtU2V0dXBUcmFja3NTdWNjZXNzZnVsKGZhbHNlKSwKKyAgICAgICAgICBtRmlyc3RBY2Nlc3NVbml0KHRydWUpLAorICAgICAgICAgIG1GaXJzdEFjY2Vzc1VuaXROVFAoLTEpIHsKKyAgICAgICAgbUxvb3Blci0+cmVnaXN0ZXJIYW5kbGVyKHRoaXMpOworICAgICAgICBtTG9vcGVyLT5yZWdpc3RlckhhbmRsZXIobUNvbm4pOworICAgICAgICBtTG9vcGVyLT5yZWdpc3RlckhhbmRsZXIobVJUUENvbm4pOworICAgICAgICBzcDxBTWVzc2FnZT4gcmVwbHkgPSBuZXcgQU1lc3NhZ2UoJ2Nvbm4nLCBpZCgpKTsKKyAgICAgICAgbUNvbm4tPmNvbm5lY3QobVNlc3Npb25VUkwuY19zdHIoKSwgcmVwbHkpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBvbk1lc3NhZ2VSZWNlaXZlZChjb25zdCBzcDxBTWVzc2FnZT4gJm1zZykgeworICAgICAgICBzd2l0Y2ggKG1zZy0+d2hhdCgpKSB7CisgICAgICAgICAgICBjYXNlICdjb25uJzoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpbnQzMl90IHJlc3VsdDsKKyAgICAgICAgICAgICAgICBDSEVDSyhtc2ctPmZpbmRJbnQzMigicmVzdWx0IiwgJnJlc3VsdCkpOworCisgICAgICAgICAgICAgICAgTE9HKElORk8pIDw8ICJjb25uZWN0aW9uIHJlcXVlc3QgY29tcGxldGVkIHdpdGggcmVzdWx0ICIKKyAgICAgICAgICAgICAgICAgICAgIDw8IHJlc3VsdCA8PCAiICgiIDw8IHN0cmVycm9yKC1yZXN1bHQpIDw8ICIpIjsKKworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gT0spIHsKKyAgICAgICAgICAgICAgICAgICAgQVN0cmluZyByZXF1ZXN0OworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0ID0gIkRFU0NSSUJFICI7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuYXBwZW5kKG1TZXNzaW9uVVJMKTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5hcHBlbmQoIiBSVFNQLzEuMFxyXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5hcHBlbmQoIkFjY2VwdDogYXBwbGljYXRpb24vc2RwXHJcbiIpOworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmFwcGVuZCgiXHJcbiIpOworCisgICAgICAgICAgICAgICAgICAgIHNwPEFNZXNzYWdlPiByZXBseSA9IG5ldyBBTWVzc2FnZSgnZGVzYycsIGlkKCkpOworICAgICAgICAgICAgICAgICAgICBtQ29ubi0+c2VuZFJlcXVlc3QocmVxdWVzdC5jX3N0cigpLCByZXBseSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNlICdkaXNjJzoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBMT0coSU5GTykgPDwgImRpc2Nvbm5lY3QgY29tcGxldGVkIjsKKworICAgICAgICAgICAgICAgIChuZXcgQU1lc3NhZ2UoJ3F1aXQnLCBpZCgpKSktPnBvc3QoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FzZSAnZGVzYyc6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaW50MzJfdCByZXN1bHQ7CisgICAgICAgICAgICAgICAgQ0hFQ0sobXNnLT5maW5kSW50MzIoInJlc3VsdCIsICZyZXN1bHQpKTsKKworICAgICAgICAgICAgICAgIExPRyhJTkZPKSA8PCAiREVTQ1JJQkUgY29tcGxldGVkIHdpdGggcmVzdWx0ICIKKyAgICAgICAgICAgICAgICAgICAgIDw8IHJlc3VsdCA8PCAiICgiIDw8IHN0cmVycm9yKC1yZXN1bHQpIDw8ICIpIjsKKworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gT0spIHsKKyAgICAgICAgICAgICAgICAgICAgc3A8UmVmQmFzZT4gb2JqOworICAgICAgICAgICAgICAgICAgICBDSEVDSyhtc2ctPmZpbmRPYmplY3QoInJlc3BvbnNlIiwgJm9iaikpOworICAgICAgICAgICAgICAgICAgICBzcDxBUlRTUFJlc3BvbnNlPiByZXNwb25zZSA9CisgICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxBUlRTUFJlc3BvbnNlICo+KG9iai5nZXQoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLT5tU3RhdHVzQ29kZSA9PSAzMDIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNzaXplX3QgaSA9IHJlc3BvbnNlLT5tSGVhZGVycy5pbmRleE9mS2V5KCJsb2NhdGlvbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgQ0hFQ0tfR0UoaSwgMCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIG1TZXNzaW9uVVJMID0gcmVzcG9uc2UtPm1IZWFkZXJzLnZhbHVlQXQoaSk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIEFTdHJpbmcgcmVxdWVzdDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QgPSAiREVTQ1JJQkUgIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuYXBwZW5kKG1TZXNzaW9uVVJMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuYXBwZW5kKCIgUlRTUC8xLjBcclxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmFwcGVuZCgiQWNjZXB0OiBhcHBsaWNhdGlvbi9zZHBcclxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmFwcGVuZCgiXHJcbiIpOworCisgICAgICAgICAgICAgICAgICAgICAgICBzcDxBTWVzc2FnZT4gcmVwbHkgPSBuZXcgQU1lc3NhZ2UoJ2Rlc2MnLCBpZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1Db25uLT5zZW5kUmVxdWVzdChyZXF1ZXN0LmNfc3RyKCksIHJlcGx5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgQ0hFQ0tfRVEocmVzcG9uc2UtPm1TdGF0dXNDb2RlLCAyMDB1KTsKKworICAgICAgICAgICAgICAgICAgICBtU2Vzc2lvbkRlc2MgPSBuZXcgQVNlc3Npb25EZXNjcmlwdGlvbjsKKworICAgICAgICAgICAgICAgICAgICBtU2Vzc2lvbkRlc2MtPnNldFRvKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLT5tQ29udGVudC0+ZGF0YSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLT5tQ29udGVudC0+c2l6ZSgpKTsKKworICAgICAgICAgICAgICAgICAgICBDSEVDSyhtU2Vzc2lvbkRlc2MtPmlzVmFsaWQoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgc3NpemVfdCBpID0gcmVzcG9uc2UtPm1IZWFkZXJzLmluZGV4T2ZLZXkoImNvbnRlbnQtYmFzZSIpOworICAgICAgICAgICAgICAgICAgICBpZiAoaSA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtQmFzZVVSTCA9IHJlc3BvbnNlLT5tSGVhZGVycy52YWx1ZUF0KGkpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHJlc3BvbnNlLT5tSGVhZGVycy5pbmRleE9mS2V5KCJjb250ZW50LWxvY2F0aW9uIik7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUJhc2VVUkwgPSByZXNwb25zZS0+bUhlYWRlcnMudmFsdWVBdChpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUJhc2VVUkwgPSBtU2Vzc2lvblVSTDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIENIRUNLX0dUKG1TZXNzaW9uRGVzYy0+Y291bnRUcmFja3MoKSwgMXUpOworICAgICAgICAgICAgICAgICAgICBzZXR1cFRyYWNrKDEpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHNwPEFNZXNzYWdlPiByZXBseSA9IG5ldyBBTWVzc2FnZSgnZGlzYycsIGlkKCkpOworICAgICAgICAgICAgICAgICAgICBtQ29ubi0+ZGlzY29ubmVjdChyZXBseSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNlICdzZXR1JzoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBzaXplX3QgaW5kZXg7CisgICAgICAgICAgICAgICAgQ0hFQ0sobXNnLT5maW5kU2l6ZSgiaW5kZXgiLCAmaW5kZXgpKTsKKworICAgICAgICAgICAgICAgIHNpemVfdCB0cmFja0luZGV4OworICAgICAgICAgICAgICAgIENIRUNLKG1zZy0+ZmluZFNpemUoInRyYWNrLWluZGV4IiwgJnRyYWNrSW5kZXgpKTsKKworICAgICAgICAgICAgICAgIGludDMyX3QgcmVzdWx0OworICAgICAgICAgICAgICAgIENIRUNLKG1zZy0+ZmluZEludDMyKCJyZXN1bHQiLCAmcmVzdWx0KSk7CisKKyAgICAgICAgICAgICAgICBMT0coSU5GTykgPDwgIlNFVFVQKCIgPDwgaW5kZXggPDwgIikgY29tcGxldGVkIHdpdGggcmVzdWx0ICIKKyAgICAgICAgICAgICAgICAgICAgIDw8IHJlc3VsdCA8PCAiICgiIDw8IHN0cmVycm9yKC1yZXN1bHQpIDw8ICIpIjsKKworICAgICAgICAgICAgICAgIFRyYWNrSW5mbyAqdHJhY2sgPSAmbVRyYWNrcy5lZGl0SXRlbUF0KHRyYWNrSW5kZXgpOworCisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBPSykgeworICAgICAgICAgICAgICAgICAgICBzcDxSZWZCYXNlPiBvYmo7CisgICAgICAgICAgICAgICAgICAgIENIRUNLKG1zZy0+ZmluZE9iamVjdCgicmVzcG9uc2UiLCAmb2JqKSk7CisgICAgICAgICAgICAgICAgICAgIHNwPEFSVFNQUmVzcG9uc2U+IHJlc3BvbnNlID0KKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEFSVFNQUmVzcG9uc2UgKj4ob2JqLmdldCgpKTsKKworICAgICAgICAgICAgICAgICAgICBDSEVDS19FUShyZXNwb25zZS0+bVN0YXR1c0NvZGUsIDIwMHUpOworCisgICAgICAgICAgICAgICAgICAgIHNzaXplX3QgaSA9IHJlc3BvbnNlLT5tSGVhZGVycy5pbmRleE9mS2V5KCJzZXNzaW9uIik7CisgICAgICAgICAgICAgICAgICAgIENIRUNLX0dFKGksIDApOworCisgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA9PSAxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtU2Vzc2lvbklEID0gcmVzcG9uc2UtPm1IZWFkZXJzLnZhbHVlQXQoaSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpID0gbVNlc3Npb25JRC5maW5kKCI7Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUmVtb3ZlIG9wdGlvbnMsIGkuZS4gIjt0aW1lb3V0PTkwIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TZXNzaW9uSUQuZXJhc2UoaSwgbVNlc3Npb25JRC5zaXplKCkgLSBpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIHNwPEFNZXNzYWdlPiBub3RpZnkgPSBuZXcgQU1lc3NhZ2UoJ2FjY3UnLCBpZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgbm90aWZ5LT5zZXRTaXplKCJ0cmFjay1pbmRleCIsIHRyYWNrSW5kZXgpOworCisgICAgICAgICAgICAgICAgICAgIG1SVFBDb25uLT5hZGRTdHJlYW0oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2stPm1SVFBTb2NrZXQsIHRyYWNrLT5tUlRDUFNvY2tldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU2Vzc2lvbkRlc2MsIGluZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdGlmeSk7CisKKyAgICAgICAgICAgICAgICAgICAgdHJhY2stPm1QYWNrZXRTb3VyY2UgPQorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IEFQYWNrZXRTb3VyY2UobVNlc3Npb25EZXNjLCBpbmRleCk7CisKKyAgICAgICAgICAgICAgICAgICAgbVNldHVwVHJhY2tzU3VjY2Vzc2Z1bCA9IHRydWU7CisKKyAgICAgICAgICAgICAgICAgICAgKytpbmRleDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4IDwgbVNlc3Npb25EZXNjLT5jb3VudFRyYWNrcygpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzZXR1cFRyYWNrKGluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgY2xvc2UodHJhY2stPm1SVFBTb2NrZXQpOworICAgICAgICAgICAgICAgICAgICBjbG9zZSh0cmFjay0+bVJUQ1BTb2NrZXQpOworCisgICAgICAgICAgICAgICAgICAgIG1UcmFja3MucmVtb3ZlSXRlbXNBdChtVHJhY2tzLnNpemUoKSAtIDEpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChtU2V0dXBUcmFja3NTdWNjZXNzZnVsKSB7CisgICAgICAgICAgICAgICAgICAgIEFTdHJpbmcgcmVxdWVzdCA9ICJQTEFZICI7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuYXBwZW5kKG1TZXNzaW9uVVJMKTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5hcHBlbmQoIiBSVFNQLzEuMFxyXG4iKTsKKworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmFwcGVuZCgiU2Vzc2lvbjogIik7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuYXBwZW5kKG1TZXNzaW9uSUQpOworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmFwcGVuZCgiXHJcbiIpOworCisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuYXBwZW5kKCJcclxuIik7CisKKyAgICAgICAgICAgICAgICAgICAgc3A8QU1lc3NhZ2U+IHJlcGx5ID0gbmV3IEFNZXNzYWdlKCdwbGF5JywgaWQoKSk7CisgICAgICAgICAgICAgICAgICAgIG1Db25uLT5zZW5kUmVxdWVzdChyZXF1ZXN0LmNfc3RyKCksIHJlcGx5KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBzcDxBTWVzc2FnZT4gcmVwbHkgPSBuZXcgQU1lc3NhZ2UoJ2Rpc2MnLCBpZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgbUNvbm4tPmRpc2Nvbm5lY3QocmVwbHkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FzZSAncGxheSc6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaW50MzJfdCByZXN1bHQ7CisgICAgICAgICAgICAgICAgQ0hFQ0sobXNnLT5maW5kSW50MzIoInJlc3VsdCIsICZyZXN1bHQpKTsKKworICAgICAgICAgICAgICAgIExPRyhJTkZPKSA8PCAiUExBWSBjb21wbGV0ZWQgd2l0aCByZXN1bHQgIgorICAgICAgICAgICAgICAgICAgICAgPDwgcmVzdWx0IDw8ICIgKCIgPDwgc3RyZXJyb3IoLXJlc3VsdCkgPDwgIikiOworCisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBPSykgeworICAgICAgICAgICAgICAgICAgICBzcDxSZWZCYXNlPiBvYmo7CisgICAgICAgICAgICAgICAgICAgIENIRUNLKG1zZy0+ZmluZE9iamVjdCgicmVzcG9uc2UiLCAmb2JqKSk7CisgICAgICAgICAgICAgICAgICAgIHNwPEFSVFNQUmVzcG9uc2U+IHJlc3BvbnNlID0KKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PEFSVFNQUmVzcG9uc2UgKj4ob2JqLmdldCgpKTsKKworICAgICAgICAgICAgICAgICAgICBDSEVDS19FUShyZXNwb25zZS0+bVN0YXR1c0NvZGUsIDIwMHUpOworCisgICAgICAgICAgICAgICAgICAgIHNwPEFNZXNzYWdlPiBtc2cgPSBuZXcgQU1lc3NhZ2UoJ2Fib3InLCBpZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgbXNnLT5wb3N0KDYwMDAwMDAwbGwpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHNwPEFNZXNzYWdlPiByZXBseSA9IG5ldyBBTWVzc2FnZSgnZGlzYycsIGlkKCkpOworICAgICAgICAgICAgICAgICAgICBtQ29ubi0+ZGlzY29ubmVjdChyZXBseSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhc2UgJ2Fib3InOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbVRyYWNrcy5zaXplKCk7ICsraSkgeworICAgICAgICAgICAgICAgICAgICBtVHJhY2tzLmVkaXRJdGVtQXQoaSkubVBhY2tldFNvdXJjZS0+c2lnbmFsRU9TKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVSUk9SX0VORF9PRl9TVFJFQU0pOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHNwPEFNZXNzYWdlPiByZXBseSA9IG5ldyBBTWVzc2FnZSgndGVhcicsIGlkKCkpOworCisgICAgICAgICAgICAgICAgQVN0cmluZyByZXF1ZXN0OworICAgICAgICAgICAgICAgIHJlcXVlc3QgPSAiVEVBUkRPV04gIjsKKworICAgICAgICAgICAgICAgIC8vIFhYWCBzaG91bGQgdXNlIGFnZ3JlZ2F0ZSB1cmwgZnJvbSBTRFAgaGVyZS4uLgorICAgICAgICAgICAgICAgIHJlcXVlc3QuYXBwZW5kKG1TZXNzaW9uVVJMKTsKKyAgICAgICAgICAgICAgICByZXF1ZXN0LmFwcGVuZCgiIFJUU1AvMS4wXHJcbiIpOworCisgICAgICAgICAgICAgICAgcmVxdWVzdC5hcHBlbmQoIlNlc3Npb246ICIpOworICAgICAgICAgICAgICAgIHJlcXVlc3QuYXBwZW5kKG1TZXNzaW9uSUQpOworICAgICAgICAgICAgICAgIHJlcXVlc3QuYXBwZW5kKCJcclxuIik7CisKKyAgICAgICAgICAgICAgICByZXF1ZXN0LmFwcGVuZCgiXHJcbiIpOworCisgICAgICAgICAgICAgICAgbUNvbm4tPnNlbmRSZXF1ZXN0KHJlcXVlc3QuY19zdHIoKSwgcmVwbHkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNlICd0ZWFyJzoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpbnQzMl90IHJlc3VsdDsKKyAgICAgICAgICAgICAgICBDSEVDSyhtc2ctPmZpbmRJbnQzMigicmVzdWx0IiwgJnJlc3VsdCkpOworCisgICAgICAgICAgICAgICAgTE9HKElORk8pIDw8ICJURUFSRE9XTiBjb21wbGV0ZWQgd2l0aCByZXN1bHQgIgorICAgICAgICAgICAgICAgICAgICAgPDwgcmVzdWx0IDw8ICIgKCIgPDwgc3RyZXJyb3IoLXJlc3VsdCkgPDwgIikiOworCisgICAgICAgICAgICAgICAgc3A8QU1lc3NhZ2U+IHJlcGx5ID0gbmV3IEFNZXNzYWdlKCdkaXNjJywgaWQoKSk7CisgICAgICAgICAgICAgICAgbUNvbm4tPmRpc2Nvbm5lY3QocmVwbHkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNlICdxdWl0JzoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBtTG9vcGVyLT5zdG9wKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhc2UgJ2FjY3UnOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHNpemVfdCB0cmFja0luZGV4OworICAgICAgICAgICAgICAgIENIRUNLKG1zZy0+ZmluZFNpemUoInRyYWNrLWluZGV4IiwgJnRyYWNrSW5kZXgpKTsKKworICAgICAgICAgICAgICAgIHNwPFJlZkJhc2U+IG9iajsKKyAgICAgICAgICAgICAgICBDSEVDSyhtc2ctPmZpbmRPYmplY3QoImFjY2Vzcy11bml0IiwgJm9iaikpOworCisgICAgICAgICAgICAgICAgc3A8QUJ1ZmZlcj4gYWNjZXNzVW5pdCA9IHN0YXRpY19jYXN0PEFCdWZmZXIgKj4ob2JqLmdldCgpKTsKKworICAgICAgICAgICAgICAgIHVpbnQ2NF90IG50cFRpbWU7CisgICAgICAgICAgICAgICAgQ0hFQ0soYWNjZXNzVW5pdC0+bWV0YSgpLT5maW5kSW50NjQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm50cC10aW1lIiwgKGludDY0X3QgKikmbnRwVGltZSkpOworCisgICAgICAgICAgICAgICAgaWYgKG1GaXJzdEFjY2Vzc1VuaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgbUZpcnN0QWNjZXNzVW5pdCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBtRmlyc3RBY2Nlc3NVbml0TlRQID0gbnRwVGltZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG50cFRpbWUgPiBtRmlyc3RBY2Nlc3NVbml0TlRQKSB7CisgICAgICAgICAgICAgICAgICAgIG50cFRpbWUgLT0gbUZpcnN0QWNjZXNzVW5pdE5UUDsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBudHBUaW1lID0gMDsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBhY2Nlc3NVbml0LT5tZXRhKCktPnNldEludDY0KCJudHAtdGltZSIsIG50cFRpbWUpOworCisgICAgICAgICAgICAgICAgVHJhY2tJbmZvICp0cmFjayA9ICZtVHJhY2tzLmVkaXRJdGVtQXQodHJhY2tJbmRleCk7CisgICAgICAgICAgICAgICAgdHJhY2stPm1QYWNrZXRTb3VyY2UtPnF1ZXVlQWNjZXNzVW5pdChhY2Nlc3NVbml0KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBUUkVTUEFTUygpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgc3A8QVBhY2tldFNvdXJjZT4gZ2V0UGFja2V0U291cmNlKHNpemVfdCBpbmRleCkgeworICAgICAgICBDSEVDS19HRShpbmRleCwgMHUpOworICAgICAgICBDSEVDS19MVChpbmRleCwgbVRyYWNrcy5zaXplKCkpOworCisgICAgICAgIHJldHVybiBtVHJhY2tzLmVkaXRJdGVtQXQoaW5kZXgpLm1QYWNrZXRTb3VyY2U7CisgICAgfQorCisgICAgc2l6ZV90IGNvdW50VHJhY2tzKCkgY29uc3QgeworICAgICAgICByZXR1cm4gbVRyYWNrcy5zaXplKCk7CisgICAgfQorCitwcml2YXRlOgorICAgIHNwPEFMb29wZXI+IG1Mb29wZXI7CisgICAgc3A8QVJUU1BDb25uZWN0aW9uPiBtQ29ubjsKKyAgICBzcDxBUlRQQ29ubmVjdGlvbj4gbVJUUENvbm47CisgICAgc3A8QVNlc3Npb25EZXNjcmlwdGlvbj4gbVNlc3Npb25EZXNjOworICAgIEFTdHJpbmcgbVNlc3Npb25VUkw7CisgICAgQVN0cmluZyBtQmFzZVVSTDsKKyAgICBBU3RyaW5nIG1TZXNzaW9uSUQ7CisgICAgYm9vbCBtU2V0dXBUcmFja3NTdWNjZXNzZnVsOworICAgIGJvb2wgbUZpcnN0QWNjZXNzVW5pdDsKKyAgICB1aW50NjRfdCBtRmlyc3RBY2Nlc3NVbml0TlRQOworCisgICAgc3RydWN0IFRyYWNrSW5mbyB7CisgICAgICAgIGludCBtUlRQU29ja2V0OworICAgICAgICBpbnQgbVJUQ1BTb2NrZXQ7CisKKyAgICAgICAgc3A8QVBhY2tldFNvdXJjZT4gbVBhY2tldFNvdXJjZTsKKyAgICB9OworICAgIFZlY3RvcjxUcmFja0luZm8+IG1UcmFja3M7CisKKyAgICB2b2lkIHNldHVwVHJhY2soc2l6ZV90IGluZGV4KSB7CisgICAgICAgIEFTdHJpbmcgdXJsOworICAgICAgICBDSEVDSyhtU2Vzc2lvbkRlc2MtPmZpbmRBdHRyaWJ1dGUoaW5kZXgsICJhPWNvbnRyb2wiLCAmdXJsKSk7CisKKyAgICAgICAgQVN0cmluZyB0cmFja1VSTDsKKyAgICAgICAgQ0hFQ0soTWFrZVVSTChtQmFzZVVSTC5jX3N0cigpLCB1cmwuY19zdHIoKSwgJnRyYWNrVVJMKSk7CisKKyAgICAgICAgbVRyYWNrcy5wdXNoKFRyYWNrSW5mbygpKTsKKyAgICAgICAgVHJhY2tJbmZvICppbmZvID0gJm1UcmFja3MuZWRpdEl0ZW1BdChtVHJhY2tzLnNpemUoKSAtIDEpOworCisgICAgICAgIHVuc2lnbmVkIHJ0cFBvcnQ7CisgICAgICAgIEFSVFBDb25uZWN0aW9uOjpNYWtlUG9ydFBhaXIoCisgICAgICAgICAgICAgICAgJmluZm8tPm1SVFBTb2NrZXQsICZpbmZvLT5tUlRDUFNvY2tldCwgJnJ0cFBvcnQpOworCisgICAgICAgIEFTdHJpbmcgcmVxdWVzdCA9ICJTRVRVUCAiOworICAgICAgICByZXF1ZXN0LmFwcGVuZCh0cmFja1VSTCk7CisgICAgICAgIHJlcXVlc3QuYXBwZW5kKCIgUlRTUC8xLjBcclxuIik7CisKKyAgICAgICAgcmVxdWVzdC5hcHBlbmQoIlRyYW5zcG9ydDogUlRQL0FWUC9VRFA7dW5pY2FzdDtjbGllbnRfcG9ydD0iKTsKKyAgICAgICAgcmVxdWVzdC5hcHBlbmQocnRwUG9ydCk7CisgICAgICAgIHJlcXVlc3QuYXBwZW5kKCItIik7CisgICAgICAgIHJlcXVlc3QuYXBwZW5kKHJ0cFBvcnQgKyAxKTsKKyAgICAgICAgcmVxdWVzdC5hcHBlbmQoIlxyXG4iKTsKKworICAgICAgICBpZiAoaW5kZXggPiAxKSB7CisgICAgICAgICAgICByZXF1ZXN0LmFwcGVuZCgiU2Vzc2lvbjogIik7CisgICAgICAgICAgICByZXF1ZXN0LmFwcGVuZChtU2Vzc2lvbklEKTsKKyAgICAgICAgICAgIHJlcXVlc3QuYXBwZW5kKCJcclxuIik7CisgICAgICAgIH0KKworICAgICAgICByZXF1ZXN0LmFwcGVuZCgiXHJcbiIpOworCisgICAgICAgIHNwPEFNZXNzYWdlPiByZXBseSA9IG5ldyBBTWVzc2FnZSgnc2V0dScsIGlkKCkpOworICAgICAgICByZXBseS0+c2V0U2l6ZSgiaW5kZXgiLCBpbmRleCk7CisgICAgICAgIHJlcGx5LT5zZXRTaXplKCJ0cmFjay1pbmRleCIsIG1UcmFja3Muc2l6ZSgpIC0gMSk7CisgICAgICAgIG1Db25uLT5zZW5kUmVxdWVzdChyZXF1ZXN0LmNfc3RyKCksIHJlcGx5KTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBNYWtlVVJMKGNvbnN0IGNoYXIgKmJhc2VVUkwsIGNvbnN0IGNoYXIgKnVybCwgQVN0cmluZyAqb3V0KSB7CisgICAgICAgIG91dC0+Y2xlYXIoKTsKKworICAgICAgICBpZiAoc3RybmNhc2VjbXAoInJ0c3A6Ly8iLCBiYXNlVVJMLCA3KSkgeworICAgICAgICAgICAgLy8gQmFzZSBVUkwgbXVzdCBiZSBhYnNvbHV0ZQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFzdHJuY2FzZWNtcCgicnRzcDovLyIsIHVybCwgNykpIHsKKyAgICAgICAgICAgIC8vICJ1cmwiIGlzIGFscmVhZHkgYW4gYWJzb2x1dGUgVVJMLCBpZ25vcmUgYmFzZSBVUkwuCisgICAgICAgICAgICBvdXQtPnNldFRvKHVybCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHNpemVfdCBuID0gc3RybGVuKGJhc2VVUkwpOworICAgICAgICBpZiAoYmFzZVVSTFtuIC0gMV0gPT0gJy8nKSB7CisgICAgICAgICAgICBvdXQtPnNldFRvKGJhc2VVUkwpOworICAgICAgICAgICAgb3V0LT5hcHBlbmQodXJsKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNoYXIgKnNsYXNoUG9zID0gc3RycmNocihiYXNlVVJMLCAnLycpOworCisgICAgICAgICAgICBpZiAoc2xhc2hQb3MgPiAmYmFzZVVSTFs2XSkgeworICAgICAgICAgICAgICAgIG91dC0+c2V0VG8oYmFzZVVSTCwgc2xhc2hQb3MgLSBiYXNlVVJMKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgb3V0LT5zZXRUbyhiYXNlVVJMKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgb3V0LT5hcHBlbmQoIi8iKTsKKyAgICAgICAgICAgIG91dC0+YXBwZW5kKHVybCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBESVNBTExPV19FVklMX0NPTlNUUlVDVE9SUyhNeUhhbmRsZXIpOworfTsKKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKKworI2VuZGlmICAvLyBNWV9IQU5ETEVSX0hfCmRpZmYgLS1naXQgYS9tZWRpYS9saWJzdGFnZWZyaWdodC9ydHNwL015VHJhbnNtaXR0ZXIuaCBiL21lZGlhL2xpYnN0YWdlZnJpZ2h0L3J0c3AvTXlUcmFuc21pdHRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwOWEzYjEKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9ydHNwL015VHJhbnNtaXR0ZXIuaApAQCAtMCwwICsxLDk4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgTVlfVFJBTlNNSVRURVJfSF8KKworI2RlZmluZSBNWV9UUkFOU01JVFRFUl9IXworCisjaW5jbHVkZSAiQVJUUENvbm5lY3Rpb24uaCIKKworI2luY2x1ZGUgPGFycGEvaW5ldC5oPgorI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKworI2luY2x1ZGUgPG9wZW5zc2wvbWQ1Lmg+CisKKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9mb3VuZGF0aW9uL0FEZWJ1Zy5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L2ZvdW5kYXRpb24vYmFzZTY0Lmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvZm91bmRhdGlvbi9oZXhkdW1wLmg+CisKKyNpZmRlZiBBTkRST0lECisjaW5jbHVkZSAiVmlkZW9Tb3VyY2UuaCIKKworI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L09NWENsaWVudC5oPgorI2luY2x1ZGUgPG1lZGlhL3N0YWdlZnJpZ2h0L09NWENvZGVjLmg+CisjZW5kaWYKKworbmFtZXNwYWNlIGFuZHJvaWQgeworCisjZGVmaW5lIFRSQUNLX1NVRkZJWCAgICAidHJhY2tpZD0xIgorI2RlZmluZSBQVCAgICAgICAgICAgICAgOTYKKyNkZWZpbmUgUFRfU1RSICAgICAgICAgICI5NiIKKworI2RlZmluZSBVU0VSTkFNRSAgICAgICAgImJjYXN0IgorI2RlZmluZSBQQVNTV09SRCAgICAgICAgInRlc3QiCisKK3N0YXRpYyBpbnQgdW5pZm9ybVJhbmQoaW50IGxpbWl0KSB7CisgICAgcmV0dXJuICgoZG91YmxlKXJhbmQoKSAqIGxpbWl0KSAvIFJBTkRfTUFYOworfQorCitzdGF0aWMgYm9vbCBHZXRBdHRyaWJ1dGUoY29uc3QgY2hhciAqcywgY29uc3QgY2hhciAqa2V5LCBBU3RyaW5nICp2YWx1ZSkgeworICAgIHZhbHVlLT5jbGVhcigpOworCisgICAgc2l6ZV90IGtleUxlbiA9IHN0cmxlbihrZXkpOworCisgICAgZm9yICg7OykgeworICAgICAgICBjb25zdCBjaGFyICpjb2xvblBvcyA9IHN0cmNocihzLCAnOycpOworCisgICAgICAgIHNpemVfdCBsZW4gPQorICAgICAgICAgICAgKGNvbG9uUG9zID09IE5VTEwpID8gc3RybGVuKHMpIDogY29sb25Qb3MgLSBzOworCisgICAgICAgIGlmIChsZW4gPj0ga2V5TGVuICsgMSAmJiBzW2tleUxlbl0gPT0gJz0nICYmICFzdHJuY21wKHMsIGtleSwga2V5TGVuKSkgeworICAgICAgICAgICAgdmFsdWUtPnNldFRvKCZzW2tleUxlbiArIDFdLCBsZW4gLSBrZXlMZW4gLSAxKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNvbG9uUG9zID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIHMgPSBjb2xvblBvcyArIDE7CisgICAgfQorfQorCitzdHJ1Y3QgTXlUcmFuc21pdHRlciA6IHB1YmxpYyBBSGFuZGxlciB7CisgICAgTXlUcmFuc21pdHRlcihjb25zdCBjaGFyICp1cmwsIGNvbnN0IHNwPEFMb29wZXI+ICZsb29wZXIpCisgICAgICAgIDogbVNlcnZlclVSTCh1cmwpLAorICAgICAgICAgIG1Mb29wZXIobG9vcGVyKSwKKyAgICAgICAgICBtQ29ubihuZXcgQVJUU1BDb25uZWN0aW9uKSwKKyAgICAgICAgICBtQ29ubmVjdGVkKGZhbHNlKSwKKyAgICAgICAgICBtQXV0aFR5cGUoTk9ORSksCisgICAgICAgICAgbVJUUFNvY2tldCgtMSksCisgICAgICAgICAgbVJUQ1BTb2NrZXQoLTEpLAorICAgICAgICAgIG1Tb3VyY2VJRChyYW5kKCkpLAorICAgICAgICAgIG1TZXFObyh1bmlmb3JtUmFuZCg2NTUzNikpLAorICAgICAgICAgIG1SVFBUaW1lQmFzZShyYW5kKCkpLAorICAgICAgICAgIG1OdW1TYW1wbGVzU2VudCgwKSwKKyAgICAgICAgICBtTnVtUlRQU2VudCgwKSwKKyAgICAgICAgICBtTnVtUlRQT2N0ZXRzU2VudCgwKSwKKyAgICAgICAgICBtTGFzdFJUUFRpbWUoMCksCisgICAgICAgICAgbUxhc3ROVFBUaW1lKDApIHsKKyAgICAgICAgbVN0cmVhbVVSTCA9IG1TZXJ2ZXJVUkw7CisgICAgICAgIG1TdHJlYW1VUkwuYXBwZW5kKCIvYmF6b25nLnNkcCIpOworCisgICAgICAgIG1UcmFja1VSTCA9IG1TdHJlYW1VUkw7CisgICAgICAgIG1UcmFja1VSTC5hcHBlbmQoIi8iKTsKKyAgICAgICAgbVRyYWNrVVJMLmFwcGVuZChUUkFDS19TVUZGSVgpOworCisgICAgICAgIG1Mb29wZXItPnJlZ2lzdGVySGFuZGxlcih0aGlzKTsKKyAgICAgICAgbUxvb3Blci0+cmVnaXN0ZXJIYW5kbGVyKG1Db25uKTsKKworICAgICAgICBzcDxBTWVzc2FnZT4gcmVwbHkgPSBuZXcgQU1lc3NhZ2UoJ2Nvbm4nLCBpZCgpKTsKKyAgICAgICAgbUNvbm4tPmNvbm5lY3QobVNlcnZlclVSTC5jX3N0cigpLCByZXBseSk7CisKKyNpZmRlZiBBTkRST0lECisgICAgICAgIGludCB3aWR0aCA9IDY0MDsKKyAgICAgICAgaW50IGhlaWdodCA9IDQ4MDsKKworICAgICAgICBzcDxNZWRpYVNvdXJjZT4gc291cmNlID0gbmV3IFZpZGVvU291cmNlKHdpZHRoLCBoZWlnaHQpOworCisgICAgICAgIHNwPE1ldGFEYXRhPiBlbmNNZXRhID0gbmV3IE1ldGFEYXRhOworICAgICAgICBlbmNNZXRhLT5zZXRDU3RyaW5nKGtLZXlNSU1FVHlwZSwgTUVESUFfTUlNRVRZUEVfVklERU9fQVZDKTsKKyAgICAgICAgZW5jTWV0YS0+c2V0SW50MzIoa0tleVdpZHRoLCB3aWR0aCk7CisgICAgICAgIGVuY01ldGEtPnNldEludDMyKGtLZXlIZWlnaHQsIGhlaWdodCk7CisKKyAgICAgICAgT01YQ2xpZW50IGNsaWVudDsKKyAgICAgICAgY2xpZW50LmNvbm5lY3QoKTsKKworICAgICAgICBtRW5jb2RlciA9IE9NWENvZGVjOjpDcmVhdGUoCisgICAgICAgICAgICAgICAgY2xpZW50LmludGVyZmFjZSgpLCBlbmNNZXRhLAorICAgICAgICAgICAgICAgIHRydWUgLyogY3JlYXRlRW5jb2RlciAqLywgc291cmNlKTsKKworICAgICAgICBtRW5jb2Rlci0+c3RhcnQoKTsKKworICAgICAgICBNZWRpYUJ1ZmZlciAqYnVmZmVyOworICAgICAgICBDSEVDS19FUShtRW5jb2Rlci0+cmVhZCgmYnVmZmVyKSwgKHN0YXR1c190KU9LKTsKKyAgICAgICAgQ0hFQ0soYnVmZmVyICE9IE5VTEwpOworCisgICAgICAgIG1ha2VIMjY0U1Byb3BQYXJhbVNldHMoYnVmZmVyKTsKKworICAgICAgICBidWZmZXItPnJlbGVhc2UoKTsKKyAgICAgICAgYnVmZmVyID0gTlVMTDsKKyNlbmRpZgorICAgIH0KKworICAgIHVpbnQ2NF90IG50cFRpbWUoKSB7CisgICAgICAgIHN0cnVjdCB0aW1ldmFsIHR2OworICAgICAgICBnZXR0aW1lb2ZkYXkoJnR2LCBOVUxMKTsKKworICAgICAgICB1aW50NjRfdCBub3dVcyA9IHR2LnR2X3NlYyAqIDEwMDAwMDBsbCArIHR2LnR2X3VzZWM7CisKKyAgICAgICAgbm93VXMgKz0gKCg3MGxsICogMzY1ICsgMTcpICogMjQpICogNjAgKiA2MCAqIDEwMDAwMDBsbDsKKworICAgICAgICB1aW50NjRfdCBoaSA9IG5vd1VzIC8gMTAwMDAwMGxsOworICAgICAgICB1aW50NjRfdCBsbyA9ICgoMWxsIDw8IDMyKSAqIChub3dVcyAlIDEwMDAwMDBsbCkpIC8gMTAwMDAwMGxsOworCisgICAgICAgIHJldHVybiAoaGkgPDwgMzIpIHwgbG87CisgICAgfQorCisgICAgdm9pZCBpc3N1ZUFubm91bmNlKCkgeworICAgICAgICBBU3RyaW5nIHNkcDsKKyAgICAgICAgc2RwID0gInY9MFxyXG4iOworCisgICAgICAgIHNkcC5hcHBlbmQoIm89LSAiKTsKKworICAgICAgICB1aW50NjRfdCBudHAgPSBudHBUaW1lKCk7CisgICAgICAgIHNkcC5hcHBlbmQobnRwKTsKKyAgICAgICAgc2RwLmFwcGVuZCgiICIpOworICAgICAgICBzZHAuYXBwZW5kKG50cCk7CisgICAgICAgIHNkcC5hcHBlbmQoIiBJTiBJUDQgMTI3LjAuMC4wXHJcbiIpOworCisgICAgICAgIHNkcC5hcHBlbmQoCisgICAgICAgICAgICAgICJzPVNhbXBsZVxyXG4iCisgICAgICAgICAgICAgICJpPVBsYXlpbmcgYXJvdW5kIHdpdGggQU5OT1VOQ0VcclxuIgorICAgICAgICAgICAgICAiYz1JTiBJUDQgIik7CisKKyAgICAgICAgc3RydWN0IGluX2FkZHIgYWRkcjsKKyAgICAgICAgYWRkci5zX2FkZHIgPSBodG9ubChtU2VydmVySVApOworCisgICAgICAgIHNkcC5hcHBlbmQoaW5ldF9udG9hKGFkZHIpKTsKKworICAgICAgICBzZHAuYXBwZW5kKAorICAgICAgICAgICAgICAiXHJcbiIKKyAgICAgICAgICAgICAgInQ9MCAwXHJcbiIKKyAgICAgICAgICAgICAgImE9cmFuZ2U6bnB0PW5vdy1cclxuIik7CisKKyNpZmRlZiBBTkRST0lECisgICAgICAgIHNwPE1ldGFEYXRhPiBtZXRhID0gbUVuY29kZXItPmdldEZvcm1hdCgpOworICAgICAgICBpbnQzMl90IHdpZHRoLCBoZWlnaHQ7CisgICAgICAgIENIRUNLKG1ldGEtPmZpbmRJbnQzMihrS2V5V2lkdGgsICZ3aWR0aCkpOworICAgICAgICBDSEVDSyhtZXRhLT5maW5kSW50MzIoa0tleUhlaWdodCwgJmhlaWdodCkpOworCisgICAgICAgIHNkcC5hcHBlbmQoCisgICAgICAgICAgICAgICJtPXZpZGVvIDAgUlRQL0FWUCAiIFBUX1NUUiAiXHJcbiIKKyAgICAgICAgICAgICAgImI9QVMgMzIwMDAwXHJcbiIKKyAgICAgICAgICAgICAgImE9cnRwbWFwOiIgUFRfU1RSICIgSDI2NC85MDAwMFxyXG4iKTsKKworICAgICAgICBzZHAuYXBwZW5kKCJhPWNsaXByZWN0IDAsMCwiKTsKKyAgICAgICAgc2RwLmFwcGVuZChoZWlnaHQpOworICAgICAgICBzZHAuYXBwZW5kKCIsIik7CisgICAgICAgIHNkcC5hcHBlbmQod2lkdGgpOworICAgICAgICBzZHAuYXBwZW5kKCJcclxuIik7CisKKyAgICAgICAgc2RwLmFwcGVuZCgKKyAgICAgICAgICAgICAgImE9ZnJhbWVzaXplOiIgUFRfU1RSICIgIik7CisgICAgICAgIHNkcC5hcHBlbmQod2lkdGgpOworICAgICAgICBzZHAuYXBwZW5kKCItIik7CisgICAgICAgIHNkcC5hcHBlbmQoaGVpZ2h0KTsKKyAgICAgICAgc2RwLmFwcGVuZCgiXHJcbiIpOworCisgICAgICAgIHNkcC5hcHBlbmQoCisgICAgICAgICAgICAgICJhPWZtdHA6IiBQVF9TVFIgIiBwcm9maWxlLWxldmVsLWlkPTQyQzAxNTtzcHJvcC1wYXJhbWV0ZXItc2V0cz0iKTsKKworICAgICAgICBzZHAuYXBwZW5kKG1TZXFQYXJhbVNldCk7CisgICAgICAgIHNkcC5hcHBlbmQoIiwiKTsKKyAgICAgICAgc2RwLmFwcGVuZChtUGljUGFyYW1TZXQpOworICAgICAgICBzZHAuYXBwZW5kKCI7cGFja2V0aXphdGlvbi1tb2RlPTFcclxuIik7CisjZWxzZQorICAgICAgICBzZHAuYXBwZW5kKAorICAgICAgICAgICAgICAgICJtPWF1ZGlvIDAgUlRQL0FWUCAiIFBUX1NUUiAiXHJcbiIKKyAgICAgICAgICAgICAgICAiYT1ydHBtYXA6IiBQVF9TVFIgIiBMOC84MDAwLzFcclxuIik7CisjZW5kaWYKKworICAgICAgICBzZHAuYXBwZW5kKCJhPWNvbnRyb2w6IiBUUkFDS19TVUZGSVggIlxyXG4iKTsKKworICAgICAgICBBU3RyaW5nIHJlcXVlc3Q7CisgICAgICAgIHJlcXVlc3QuYXBwZW5kKCJBTk5PVU5DRSAiKTsKKyAgICAgICAgcmVxdWVzdC5hcHBlbmQobVN0cmVhbVVSTCk7CisgICAgICAgIHJlcXVlc3QuYXBwZW5kKCIgUlRTUC8xLjBcclxuIik7CisKKyAgICAgICAgYWRkQXV0aGVudGljYXRpb24oJnJlcXVlc3QsICJBTk5PVU5DRSIsIG1TdHJlYW1VUkwuY19zdHIoKSk7CisKKyAgICAgICAgcmVxdWVzdC5hcHBlbmQoIkNvbnRlbnQtVHlwZTogYXBwbGljYXRpb24vc2RwXHJcbiIpOworICAgICAgICByZXF1ZXN0LmFwcGVuZCgiQ29udGVudC1MZW5ndGg6ICIpOworICAgICAgICByZXF1ZXN0LmFwcGVuZChzZHAuc2l6ZSgpKTsKKyAgICAgICAgcmVxdWVzdC5hcHBlbmQoIlxyXG4iKTsKKworICAgICAgICByZXF1ZXN0LmFwcGVuZCgiXHJcbiIpOworICAgICAgICByZXF1ZXN0LmFwcGVuZChzZHApOworCisgICAgICAgIHNwPEFNZXNzYWdlPiByZXBseSA9IG5ldyBBTWVzc2FnZSgnYW5ubycsIGlkKCkpOworICAgICAgICBtQ29ubi0+c2VuZFJlcXVlc3QocmVxdWVzdC5jX3N0cigpLCByZXBseSk7CisgICAgfQorCisgICAgdm9pZCBIKGNvbnN0IEFTdHJpbmcgJnMsIEFTdHJpbmcgKm91dCkgeworICAgICAgICBvdXQtPmNsZWFyKCk7CisKKyAgICAgICAgTUQ1X0NUWCBtOworICAgICAgICBNRDVfSW5pdCgmbSk7CisgICAgICAgIE1ENV9VcGRhdGUoJm0sIHMuY19zdHIoKSwgcy5zaXplKCkpOworCisgICAgICAgIHVpbnQ4X3Qga2V5WzE2XTsKKyAgICAgICAgTUQ1X0ZpbmFsKGtleSwgJm0pOworCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgMTY7ICsraSkgeworICAgICAgICAgICAgY2hhciBuaWJibGUgPSBrZXlbaV0gPj4gNDsKKyAgICAgICAgICAgIGlmIChuaWJibGUgPD0gOSkgeworICAgICAgICAgICAgICAgIG5pYmJsZSArPSAnMCc7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG5pYmJsZSArPSAnYScgLSAxMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG91dC0+YXBwZW5kKCZuaWJibGUsIDEpOworCisgICAgICAgICAgICBuaWJibGUgPSBrZXlbaV0gJiAweDBmOworICAgICAgICAgICAgaWYgKG5pYmJsZSA8PSA5KSB7CisgICAgICAgICAgICAgICAgbmliYmxlICs9ICcwJzsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbmliYmxlICs9ICdhJyAtIDEwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgb3V0LT5hcHBlbmQoJm5pYmJsZSwgMSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIGF1dGhlbnRpY2F0ZShjb25zdCBzcDxBUlRTUFJlc3BvbnNlPiAmcmVzcG9uc2UpIHsKKyAgICAgICAgc3NpemVfdCBpID0gcmVzcG9uc2UtPm1IZWFkZXJzLmluZGV4T2ZLZXkoInd3dy1hdXRoZW50aWNhdGUiKTsKKyAgICAgICAgQ0hFQ0tfR0UoaSwgMCk7CisKKyAgICAgICAgQVN0cmluZyB2YWx1ZSA9IHJlc3BvbnNlLT5tSGVhZGVycy52YWx1ZUF0KGkpOworCisgICAgICAgIGlmICghc3RybmNtcCh2YWx1ZS5jX3N0cigpLCAiQmFzaWMiLCA1KSkgeworICAgICAgICAgICAgbUF1dGhUeXBlID0gQkFTSUM7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBDSEVDSyghc3RybmNtcCh2YWx1ZS5jX3N0cigpLCAiRGlnZXN0IiwgNikpOworICAgICAgICAgICAgbUF1dGhUeXBlID0gRElHRVNUOworCisgICAgICAgICAgICBpID0gdmFsdWUuZmluZCgibm9uY2U9Iik7CisgICAgICAgICAgICBDSEVDS19HRShpLCAwKTsKKyAgICAgICAgICAgIENIRUNLX0VRKHZhbHVlLmNfc3RyKClbaSArIDZdLCAnXCInKTsKKyAgICAgICAgICAgIHNzaXplX3QgaiA9IHZhbHVlLmZpbmQoIlwiIiwgaSArIDcpOworICAgICAgICAgICAgQ0hFQ0tfR0UoaiwgMCk7CisKKyAgICAgICAgICAgIG1Ob25jZS5zZXRUbyh2YWx1ZSwgaSArIDcsIGogLSBpIC0gNyk7CisgICAgICAgIH0KKworICAgICAgICBpc3N1ZUFubm91bmNlKCk7CisgICAgfQorCisgICAgdm9pZCBhZGRBdXRoZW50aWNhdGlvbigKKyAgICAgICAgICAgIEFTdHJpbmcgKnJlcXVlc3QsIGNvbnN0IGNoYXIgKm1ldGhvZCwgY29uc3QgY2hhciAqdXJsKSB7CisgICAgICAgIGlmIChtQXV0aFR5cGUgPT0gTk9ORSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1BdXRoVHlwZSA9PSBCQVNJQykgeworICAgICAgICAgICAgcmVxdWVzdC0+YXBwZW5kKCJBdXRob3JpemF0aW9uOiBCYXNpYyBZbU5oYzNRNmRHVnpkQW89XHJcbiIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgQ0hFQ0tfRVEoKGludCltQXV0aFR5cGUsIChpbnQpRElHRVNUKTsKKworICAgICAgICBBU3RyaW5nIEExOworICAgICAgICBBMS5hcHBlbmQoVVNFUk5BTUUpOworICAgICAgICBBMS5hcHBlbmQoIjoiKTsKKyAgICAgICAgQTEuYXBwZW5kKCJTdHJlYW1pbmcgU2VydmVyIik7CisgICAgICAgIEExLmFwcGVuZCgiOiIpOworICAgICAgICBBMS5hcHBlbmQoUEFTU1dPUkQpOworCisgICAgICAgIEFTdHJpbmcgQTI7CisgICAgICAgIEEyLmFwcGVuZChtZXRob2QpOworICAgICAgICBBMi5hcHBlbmQoIjoiKTsKKyAgICAgICAgQTIuYXBwZW5kKHVybCk7CisKKyAgICAgICAgQVN0cmluZyBIQTEsIEhBMjsKKyAgICAgICAgSChBMSwgJkhBMSk7CisgICAgICAgIEgoQTIsICZIQTIpOworCisgICAgICAgIEFTdHJpbmcgdG1wOworICAgICAgICB0bXAuYXBwZW5kKEhBMSk7CisgICAgICAgIHRtcC5hcHBlbmQoIjoiKTsKKyAgICAgICAgdG1wLmFwcGVuZChtTm9uY2UpOworICAgICAgICB0bXAuYXBwZW5kKCI6Iik7CisgICAgICAgIHRtcC5hcHBlbmQoSEEyKTsKKworICAgICAgICBBU3RyaW5nIGRpZ2VzdDsKKyAgICAgICAgSCh0bXAsICZkaWdlc3QpOworCisgICAgICAgIHJlcXVlc3QtPmFwcGVuZCgiQXV0aG9yaXphdGlvbjogRGlnZXN0ICIpOworICAgICAgICByZXF1ZXN0LT5hcHBlbmQoIm5vbmNlPVwiIik7CisgICAgICAgIHJlcXVlc3QtPmFwcGVuZChtTm9uY2UpOworICAgICAgICByZXF1ZXN0LT5hcHBlbmQoIlwiLCAiKTsKKyAgICAgICAgcmVxdWVzdC0+YXBwZW5kKCJ1c2VybmFtZT1cIiIgVVNFUk5BTUUgIlwiLCAiKTsKKyAgICAgICAgcmVxdWVzdC0+YXBwZW5kKCJ1cmk9XCIiKTsKKyAgICAgICAgcmVxdWVzdC0+YXBwZW5kKHVybCk7CisgICAgICAgIHJlcXVlc3QtPmFwcGVuZCgiXCIsICIpOworICAgICAgICByZXF1ZXN0LT5hcHBlbmQoInJlc3BvbnNlPVwiIik7CisgICAgICAgIHJlcXVlc3QtPmFwcGVuZChkaWdlc3QpOworICAgICAgICByZXF1ZXN0LT5hcHBlbmQoIlwiIik7CisgICAgICAgIHJlcXVlc3QtPmFwcGVuZCgiXHJcbiIpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBvbk1lc3NhZ2VSZWNlaXZlZChjb25zdCBzcDxBTWVzc2FnZT4gJm1zZykgeworICAgICAgICBzd2l0Y2ggKG1zZy0+d2hhdCgpKSB7CisgICAgICAgICAgICBjYXNlICdjb25uJzoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpbnQzMl90IHJlc3VsdDsKKyAgICAgICAgICAgICAgICBDSEVDSyhtc2ctPmZpbmRJbnQzMigicmVzdWx0IiwgJnJlc3VsdCkpOworCisgICAgICAgICAgICAgICAgTE9HKElORk8pIDw8ICJjb25uZWN0aW9uIHJlcXVlc3QgY29tcGxldGVkIHdpdGggcmVzdWx0ICIKKyAgICAgICAgICAgICAgICAgICAgIDw8IHJlc3VsdCA8PCAiICgiIDw8IHN0cmVycm9yKC1yZXN1bHQpIDw8ICIpIjsKKworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gT0spIHsKKyAgICAgICAgICAgICAgICAgICAgKG5ldyBBTWVzc2FnZSgncXVpdCcsIGlkKCkpKS0+cG9zdCgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBtQ29ubmVjdGVkID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgIENIRUNLKG1zZy0+ZmluZEludDMyKCJzZXJ2ZXItaXAiLCAoaW50MzJfdCAqKSZtU2VydmVySVApKTsKKworICAgICAgICAgICAgICAgIGlzc3VlQW5ub3VuY2UoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FzZSAnYW5ubyc6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaW50MzJfdCByZXN1bHQ7CisgICAgICAgICAgICAgICAgQ0hFQ0sobXNnLT5maW5kSW50MzIoInJlc3VsdCIsICZyZXN1bHQpKTsKKworICAgICAgICAgICAgICAgIExPRyhJTkZPKSA8PCAiQU5OT1VOQ0UgY29tcGxldGVkIHdpdGggcmVzdWx0ICIKKyAgICAgICAgICAgICAgICAgICAgIDw8IHJlc3VsdCA8PCAiICgiIDw8IHN0cmVycm9yKC1yZXN1bHQpIDw8ICIpIjsKKworICAgICAgICAgICAgICAgIHNwPFJlZkJhc2U+IG9iajsKKyAgICAgICAgICAgICAgICBDSEVDSyhtc2ctPmZpbmRPYmplY3QoInJlc3BvbnNlIiwgJm9iaikpOworICAgICAgICAgICAgICAgIHNwPEFSVFNQUmVzcG9uc2U+IHJlc3BvbnNlOworCisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBPSykgeworICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IHN0YXRpY19jYXN0PEFSVFNQUmVzcG9uc2UgKj4ob2JqLmdldCgpKTsKKyAgICAgICAgICAgICAgICAgICAgQ0hFQ0socmVzcG9uc2UgIT0gTlVMTCk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3BvbnNlLT5tU3RhdHVzQ29kZSA9PSA0MDEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtQXV0aFR5cGUgIT0gTk9ORSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIExPRyhJTkZPKSA8PCAiRkFJTEVEIHRvIGF1dGhlbnRpY2F0ZSI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5ldyBBTWVzc2FnZSgncXVpdCcsIGlkKCkpKS0+cG9zdCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgICAgICBhdXRoZW50aWNhdGUocmVzcG9uc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IE9LIHx8IHJlc3BvbnNlLT5tU3RhdHVzQ29kZSAhPSAyMDApIHsKKyAgICAgICAgICAgICAgICAgICAgKG5ldyBBTWVzc2FnZSgncXVpdCcsIGlkKCkpKS0+cG9zdCgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB1bnNpZ25lZCBydHBQb3J0OworICAgICAgICAgICAgICAgIEFSVFBDb25uZWN0aW9uOjpNYWtlUG9ydFBhaXIoJm1SVFBTb2NrZXQsICZtUlRDUFNvY2tldCwgJnJ0cFBvcnQpOworCisgICAgICAgICAgICAgICAgLy8gKG5ldyBBTWVzc2FnZSgncG9sbCcsIGlkKCkpKS0+cG9zdCgpOworCisgICAgICAgICAgICAgICAgQVN0cmluZyByZXF1ZXN0OworICAgICAgICAgICAgICAgIHJlcXVlc3QuYXBwZW5kKCJTRVRVUCAiKTsKKyAgICAgICAgICAgICAgICByZXF1ZXN0LmFwcGVuZChtVHJhY2tVUkwpOworICAgICAgICAgICAgICAgIHJlcXVlc3QuYXBwZW5kKCIgUlRTUC8xLjBcclxuIik7CisKKyAgICAgICAgICAgICAgICBhZGRBdXRoZW50aWNhdGlvbigmcmVxdWVzdCwgIlNFVFVQIiwgbVRyYWNrVVJMLmNfc3RyKCkpOworCisgICAgICAgICAgICAgICAgcmVxdWVzdC5hcHBlbmQoIlRyYW5zcG9ydDogUlRQL0FWUDt1bmljYXN0O2NsaWVudF9wb3J0PSIpOworICAgICAgICAgICAgICAgIHJlcXVlc3QuYXBwZW5kKHJ0cFBvcnQpOworICAgICAgICAgICAgICAgIHJlcXVlc3QuYXBwZW5kKCItIik7CisgICAgICAgICAgICAgICAgcmVxdWVzdC5hcHBlbmQocnRwUG9ydCArIDEpOworICAgICAgICAgICAgICAgIHJlcXVlc3QuYXBwZW5kKCI7bW9kZT1yZWNvcmRcclxuIik7CisgICAgICAgICAgICAgICAgcmVxdWVzdC5hcHBlbmQoIlxyXG4iKTsKKworICAgICAgICAgICAgICAgIHNwPEFNZXNzYWdlPiByZXBseSA9IG5ldyBBTWVzc2FnZSgnc2V0dScsIGlkKCkpOworICAgICAgICAgICAgICAgIG1Db25uLT5zZW5kUmVxdWVzdChyZXF1ZXN0LmNfc3RyKCksIHJlcGx5KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworI2lmIDAKKyAgICAgICAgICAgIGNhc2UgJ3BvbGwnOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGZkX3NldCByczsKKyAgICAgICAgICAgICAgICBGRF9aRVJPKCZycyk7CisgICAgICAgICAgICAgICAgRkRfU0VUKG1SVENQU29ja2V0LCAmcnMpOworCisgICAgICAgICAgICAgICAgc3RydWN0IHRpbWV2YWwgdHY7CisgICAgICAgICAgICAgICAgdHYudHZfc2VjID0gMDsKKyAgICAgICAgICAgICAgICB0di50dl91c2VjID0gMDsKKworICAgICAgICAgICAgICAgIGludCByZXMgPSBzZWxlY3QobVJUQ1BTb2NrZXQgKyAxLCAmcnMsIE5VTEwsIE5VTEwsICZ0dik7CisKKyAgICAgICAgICAgICAgICBpZiAocmVzID09IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgc3A8QUJ1ZmZlcj4gYnVmZmVyID0gbmV3IEFCdWZmZXIoNjU1MzYpOworICAgICAgICAgICAgICAgICAgICBzc2l6ZV90IG4gPSByZWN2KG1SVENQU29ja2V0LCBidWZmZXItPmRhdGEoKSwgYnVmZmVyLT5zaXplKCksIDApOworCisgICAgICAgICAgICAgICAgICAgIGlmIChuIDw9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIExPRyhFUlJPUikgPDwgInJlY3YgcmV0dXJuZWQgIiA8PCBuOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgTE9HKElORk8pIDw8ICJyZWN2IHJldHVybmVkICIgPDwgbiA8PCAiIGJ5dGVzIG9mIGRhdGEuIjsKKworICAgICAgICAgICAgICAgICAgICAgICAgaGV4ZHVtcChidWZmZXItPmRhdGEoKSwgbik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBtc2ctPnBvc3QoNTAwMDApOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorI2VuZGlmCisKKyAgICAgICAgICAgIGNhc2UgJ3NldHUnOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGludDMyX3QgcmVzdWx0OworICAgICAgICAgICAgICAgIENIRUNLKG1zZy0+ZmluZEludDMyKCJyZXN1bHQiLCAmcmVzdWx0KSk7CisKKyAgICAgICAgICAgICAgICBMT0coSU5GTykgPDwgIlNFVFVQIGNvbXBsZXRlZCB3aXRoIHJlc3VsdCAiCisgICAgICAgICAgICAgICAgICAgICA8PCByZXN1bHQgPDwgIiAoIiA8PCBzdHJlcnJvcigtcmVzdWx0KSA8PCAiKSI7CisKKyAgICAgICAgICAgICAgICBzcDxSZWZCYXNlPiBvYmo7CisgICAgICAgICAgICAgICAgQ0hFQ0sobXNnLT5maW5kT2JqZWN0KCJyZXNwb25zZSIsICZvYmopKTsKKyAgICAgICAgICAgICAgICBzcDxBUlRTUFJlc3BvbnNlPiByZXNwb25zZTsKKworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gT0spIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBzdGF0aWNfY2FzdDxBUlRTUFJlc3BvbnNlICo+KG9iai5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIENIRUNLKHJlc3BvbnNlICE9IE5VTEwpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gT0sgfHwgcmVzcG9uc2UtPm1TdGF0dXNDb2RlICE9IDIwMCkgeworICAgICAgICAgICAgICAgICAgICAobmV3IEFNZXNzYWdlKCdxdWl0JywgaWQoKSkpLT5wb3N0KCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHNzaXplX3QgaSA9IHJlc3BvbnNlLT5tSGVhZGVycy5pbmRleE9mS2V5KCJzZXNzaW9uIik7CisgICAgICAgICAgICAgICAgQ0hFQ0tfR0UoaSwgMCk7CisgICAgICAgICAgICAgICAgbVNlc3Npb25JRCA9IHJlc3BvbnNlLT5tSGVhZGVycy52YWx1ZUF0KGkpOworICAgICAgICAgICAgICAgIGkgPSBtU2Vzc2lvbklELmZpbmQoIjsiKTsKKyAgICAgICAgICAgICAgICBpZiAoaSA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFJlbW92ZSBvcHRpb25zLCBpLmUuICI7dGltZW91dD05MCIKKyAgICAgICAgICAgICAgICAgICAgbVNlc3Npb25JRC5lcmFzZShpLCBtU2Vzc2lvbklELnNpemUoKSAtIGkpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGkgPSByZXNwb25zZS0+bUhlYWRlcnMuaW5kZXhPZktleSgidHJhbnNwb3J0Iik7CisgICAgICAgICAgICAgICAgQ0hFQ0tfR0UoaSwgMCk7CisgICAgICAgICAgICAgICAgQVN0cmluZyB0cmFuc3BvcnQgPSByZXNwb25zZS0+bUhlYWRlcnMudmFsdWVBdChpKTsKKworICAgICAgICAgICAgICAgIExPRyhJTkZPKSA8PCAidHJhbnNwb3J0ID0gJyIgPDwgdHJhbnNwb3J0IDw8ICInIjsKKworICAgICAgICAgICAgICAgIEFTdHJpbmcgdmFsdWU7CisgICAgICAgICAgICAgICAgQ0hFQ0soR2V0QXR0cmlidXRlKHRyYW5zcG9ydC5jX3N0cigpLCAic2VydmVyX3BvcnQiLCAmdmFsdWUpKTsKKworICAgICAgICAgICAgICAgIHVuc2lnbmVkIHJ0cFBvcnQsIHJ0Y3BQb3J0OworICAgICAgICAgICAgICAgIENIRUNLX0VRKHNzY2FuZih2YWx1ZS5jX3N0cigpLCAiJXUtJXUiLCAmcnRwUG9ydCwgJnJ0Y3BQb3J0KSwgMik7CisKKyAgICAgICAgICAgICAgICBDSEVDSyhHZXRBdHRyaWJ1dGUodHJhbnNwb3J0LmNfc3RyKCksICJzb3VyY2UiLCAmdmFsdWUpKTsKKworICAgICAgICAgICAgICAgIG1lbXNldChtUmVtb3RlQWRkci5zaW5femVybywgMCwgc2l6ZW9mKG1SZW1vdGVBZGRyLnNpbl96ZXJvKSk7CisgICAgICAgICAgICAgICAgbVJlbW90ZUFkZHIuc2luX2ZhbWlseSA9IEFGX0lORVQ7CisgICAgICAgICAgICAgICAgbVJlbW90ZUFkZHIuc2luX2FkZHIuc19hZGRyID0gaW5ldF9hZGRyKHZhbHVlLmNfc3RyKCkpOworICAgICAgICAgICAgICAgIG1SZW1vdGVBZGRyLnNpbl9wb3J0ID0gaHRvbnMocnRwUG9ydCk7CisKKyAgICAgICAgICAgICAgICBtUmVtb3RlUlRDUEFkZHIgPSBtUmVtb3RlQWRkcjsKKyAgICAgICAgICAgICAgICBtUmVtb3RlUlRDUEFkZHIuc2luX3BvcnQgPSBodG9ucyhydHBQb3J0ICsgMSk7CisKKyAgICAgICAgICAgICAgICBDSEVDS19FUSgwLCBjb25uZWN0KG1SVFBTb2NrZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3Qgc3RydWN0IHNvY2thZGRyICopJm1SZW1vdGVBZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKG1SZW1vdGVBZGRyKSkpOworCisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEoMCwgY29ubmVjdChtUlRDUFNvY2tldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKikmbVJlbW90ZVJUQ1BBZGRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKG1SZW1vdGVSVENQQWRkcikpKTsKKworICAgICAgICAgICAgICAgIHVpbnQzMl90IHggPSBudG9obChtUmVtb3RlQWRkci5zaW5fYWRkci5zX2FkZHIpOworICAgICAgICAgICAgICAgIExPRyhJTkZPKSA8PCAic2VuZGluZyBkYXRhIHRvICIKKyAgICAgICAgICAgICAgICAgICAgIDw8ICh4ID4+IDI0KQorICAgICAgICAgICAgICAgICAgICAgPDwgIi4iCisgICAgICAgICAgICAgICAgICAgICA8PCAoKHggPj4gMTYpICYgMHhmZikKKyAgICAgICAgICAgICAgICAgICAgIDw8ICIuIgorICAgICAgICAgICAgICAgICAgICAgPDwgKCh4ID4+IDgpICYgMHhmZikKKyAgICAgICAgICAgICAgICAgICAgIDw8ICIuIgorICAgICAgICAgICAgICAgICAgICAgPDwgKHggJiAweGZmKQorICAgICAgICAgICAgICAgICAgICAgPDwgIjoiCisgICAgICAgICAgICAgICAgICAgICA8PCBydHBQb3J0OworCisgICAgICAgICAgICAgICAgQVN0cmluZyByZXF1ZXN0OworICAgICAgICAgICAgICAgIHJlcXVlc3QuYXBwZW5kKCJSRUNPUkQgIik7CisgICAgICAgICAgICAgICAgcmVxdWVzdC5hcHBlbmQobVN0cmVhbVVSTCk7CisgICAgICAgICAgICAgICAgcmVxdWVzdC5hcHBlbmQoIiBSVFNQLzEuMFxyXG4iKTsKKworICAgICAgICAgICAgICAgIGFkZEF1dGhlbnRpY2F0aW9uKCZyZXF1ZXN0LCAiUkVDT1JEIiwgbVN0cmVhbVVSTC5jX3N0cigpKTsKKworICAgICAgICAgICAgICAgIHJlcXVlc3QuYXBwZW5kKCJTZXNzaW9uOiAiKTsKKyAgICAgICAgICAgICAgICByZXF1ZXN0LmFwcGVuZChtU2Vzc2lvbklEKTsKKyAgICAgICAgICAgICAgICByZXF1ZXN0LmFwcGVuZCgiXHJcbiIpOworICAgICAgICAgICAgICAgIHJlcXVlc3QuYXBwZW5kKCJcclxuIik7CisKKyAgICAgICAgICAgICAgICBzcDxBTWVzc2FnZT4gcmVwbHkgPSBuZXcgQU1lc3NhZ2UoJ3JlY28nLCBpZCgpKTsKKyAgICAgICAgICAgICAgICBtQ29ubi0+c2VuZFJlcXVlc3QocmVxdWVzdC5jX3N0cigpLCByZXBseSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhc2UgJ3JlY28nOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGludDMyX3QgcmVzdWx0OworICAgICAgICAgICAgICAgIENIRUNLKG1zZy0+ZmluZEludDMyKCJyZXN1bHQiLCAmcmVzdWx0KSk7CisKKyAgICAgICAgICAgICAgICBMT0coSU5GTykgPDwgIlJFQ09SRCBjb21wbGV0ZWQgd2l0aCByZXN1bHQgIgorICAgICAgICAgICAgICAgICAgICAgPDwgcmVzdWx0IDw8ICIgKCIgPDwgc3RyZXJyb3IoLXJlc3VsdCkgPDwgIikiOworCisgICAgICAgICAgICAgICAgc3A8UmVmQmFzZT4gb2JqOworICAgICAgICAgICAgICAgIENIRUNLKG1zZy0+ZmluZE9iamVjdCgicmVzcG9uc2UiLCAmb2JqKSk7CisgICAgICAgICAgICAgICAgc3A8QVJUU1BSZXNwb25zZT4gcmVzcG9uc2U7CisKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IE9LKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlID0gc3RhdGljX2Nhc3Q8QVJUU1BSZXNwb25zZSAqPihvYmouZ2V0KCkpOworICAgICAgICAgICAgICAgICAgICBDSEVDSyhyZXNwb25zZSAhPSBOVUxMKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ICE9IE9LKSB7CisgICAgICAgICAgICAgICAgICAgIChuZXcgQU1lc3NhZ2UoJ3F1aXQnLCBpZCgpKSktPnBvc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgKG5ldyBBTWVzc2FnZSgnbW9yZScsIGlkKCkpKS0+cG9zdCgpOworICAgICAgICAgICAgICAgIChuZXcgQU1lc3NhZ2UoJ3NyICAnLCBpZCgpKSktPnBvc3QoKTsKKyAgICAgICAgICAgICAgICAobmV3IEFNZXNzYWdlKCdhbGl2JywgaWQoKSkpLT5wb3N0KDMwMDAwMDAwbGwpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNlICdhbGl2JzoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAoIW1Db25uZWN0ZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgQVN0cmluZyByZXF1ZXN0OworICAgICAgICAgICAgICAgIHJlcXVlc3QuYXBwZW5kKCJPUFRJT05TICIpOworICAgICAgICAgICAgICAgIHJlcXVlc3QuYXBwZW5kKG1TdHJlYW1VUkwpOworICAgICAgICAgICAgICAgIHJlcXVlc3QuYXBwZW5kKCIgUlRTUC8xLjBcclxuIik7CisKKyAgICAgICAgICAgICAgICBhZGRBdXRoZW50aWNhdGlvbigmcmVxdWVzdCwgIlJFQ09SRCIsIG1TdHJlYW1VUkwuY19zdHIoKSk7CisKKyAgICAgICAgICAgICAgICByZXF1ZXN0LmFwcGVuZCgiU2Vzc2lvbjogIik7CisgICAgICAgICAgICAgICAgcmVxdWVzdC5hcHBlbmQobVNlc3Npb25JRCk7CisgICAgICAgICAgICAgICAgcmVxdWVzdC5hcHBlbmQoIlxyXG4iKTsKKyAgICAgICAgICAgICAgICByZXF1ZXN0LmFwcGVuZCgiXHJcbiIpOworCisgICAgICAgICAgICAgICAgc3A8QU1lc3NhZ2U+IHJlcGx5ID0gbmV3IEFNZXNzYWdlKCdvcHRzJywgaWQoKSk7CisgICAgICAgICAgICAgICAgbUNvbm4tPnNlbmRSZXF1ZXN0KHJlcXVlc3QuY19zdHIoKSwgcmVwbHkpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNlICdvcHRzJzoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpbnQzMl90IHJlc3VsdDsKKyAgICAgICAgICAgICAgICBDSEVDSyhtc2ctPmZpbmRJbnQzMigicmVzdWx0IiwgJnJlc3VsdCkpOworCisgICAgICAgICAgICAgICAgTE9HKElORk8pIDw8ICJPUFRJT05TIGNvbXBsZXRlZCB3aXRoIHJlc3VsdCAiCisgICAgICAgICAgICAgICAgICAgICA8PCByZXN1bHQgPDwgIiAoIiA8PCBzdHJlcnJvcigtcmVzdWx0KSA8PCAiKSI7CisKKyAgICAgICAgICAgICAgICBpZiAoIW1Db25uZWN0ZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgKG5ldyBBTWVzc2FnZSgnYWxpdicsIGlkKCkpKS0+cG9zdCgzMDAwMDAwMGxsKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FzZSAnbW9yZSc6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKCFtQ29ubmVjdGVkKSB7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHNwPEFCdWZmZXI+IGJ1ZmZlciA9IG5ldyBBQnVmZmVyKDY1NTM2KTsKKyAgICAgICAgICAgICAgICB1aW50OF90ICpkYXRhID0gYnVmZmVyLT5kYXRhKCk7CisgICAgICAgICAgICAgICAgZGF0YVswXSA9IDB4ODA7CisgICAgICAgICAgICAgICAgZGF0YVsxXSA9ICgxIDw8IDcpIHwgUFQ7ICAvLyBNLWJpdAorICAgICAgICAgICAgICAgIGRhdGFbMl0gPSAobVNlcU5vID4+IDgpICYgMHhmZjsKKyAgICAgICAgICAgICAgICBkYXRhWzNdID0gbVNlcU5vICYgMHhmZjsKKyAgICAgICAgICAgICAgICBkYXRhWzhdID0gbVNvdXJjZUlEID4+IDI0OworICAgICAgICAgICAgICAgIGRhdGFbOV0gPSAobVNvdXJjZUlEID4+IDE2KSAmIDB4ZmY7CisgICAgICAgICAgICAgICAgZGF0YVsxMF0gPSAobVNvdXJjZUlEID4+IDgpICYgMHhmZjsKKyAgICAgICAgICAgICAgICBkYXRhWzExXSA9IG1Tb3VyY2VJRCAmIDB4ZmY7CisKKyNpZmRlZiBBTkRST0lECisgICAgICAgICAgICAgICAgTWVkaWFCdWZmZXIgKm1lZGlhQnVmID0gTlVMTDsKKyAgICAgICAgICAgICAgICBmb3IgKDs7KSB7CisgICAgICAgICAgICAgICAgICAgIENIRUNLX0VRKG1FbmNvZGVyLT5yZWFkKCZtZWRpYUJ1ZiksIChzdGF0dXNfdClPSyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChtZWRpYUJ1Zi0+cmFuZ2VfbGVuZ3RoKCkgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBtZWRpYUJ1Zi0+cmVsZWFzZSgpOworICAgICAgICAgICAgICAgICAgICBtZWRpYUJ1ZiA9IE5VTEw7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaW50NjRfdCB0aW1lVXM7CisgICAgICAgICAgICAgICAgQ0hFQ0sobWVkaWFCdWYtPm1ldGFfZGF0YSgpLT5maW5kSW50NjQoa0tleVRpbWUsICZ0aW1lVXMpKTsKKworICAgICAgICAgICAgICAgIHVpbnQzMl90IHJ0cFRpbWUgPSBtUlRQVGltZUJhc2UgKyAodGltZVVzICogOSAvIDEwMGxsKTsKKworICAgICAgICAgICAgICAgIGNvbnN0IHVpbnQ4X3QgKm1lZGlhRGF0YSA9CisgICAgICAgICAgICAgICAgICAgIChjb25zdCB1aW50OF90ICopbWVkaWFCdWYtPmRhdGEoKSArIG1lZGlhQnVmLT5yYW5nZV9vZmZzZXQoKTsKKworICAgICAgICAgICAgICAgIENIRUNLKCFtZW1jbXAoIlx4MDBceDAwXHgwMFx4MDEiLCBtZWRpYURhdGEsIDQpKTsKKworICAgICAgICAgICAgICAgIENIRUNLX0xFKG1lZGlhQnVmLT5yYW5nZV9sZW5ndGgoKSAtIDQgKyAxMiwgYnVmZmVyLT5zaXplKCkpOworCisgICAgICAgICAgICAgICAgbWVtY3B5KCZkYXRhWzEyXSwKKyAgICAgICAgICAgICAgICAgICAgICAgbWVkaWFEYXRhICsgNCwgbWVkaWFCdWYtPnJhbmdlX2xlbmd0aCgpIC0gNCk7CisKKyAgICAgICAgICAgICAgICBidWZmZXItPnNldFJhbmdlKDAsIG1lZGlhQnVmLT5yYW5nZV9sZW5ndGgoKSAtIDQgKyAxMik7CisKKyAgICAgICAgICAgICAgICBtZWRpYUJ1Zi0+cmVsZWFzZSgpOworICAgICAgICAgICAgICAgIG1lZGlhQnVmID0gTlVMTDsKKyNlbHNlCisgICAgICAgICAgICAgICAgdWludDMyX3QgcnRwVGltZSA9IG1SVFBUaW1lQmFzZSArIG1OdW1SVFBTZW50ICogMTI4OworICAgICAgICAgICAgICAgIG1lbXNldCgmZGF0YVsxMl0sIDAsIDEyOCk7CisgICAgICAgICAgICAgICAgYnVmZmVyLT5zZXRSYW5nZSgwLCAxMiArIDEyOCk7CisjZW5kaWYKKworICAgICAgICAgICAgICAgIGRhdGFbNF0gPSBydHBUaW1lID4+IDI0OworICAgICAgICAgICAgICAgIGRhdGFbNV0gPSAocnRwVGltZSA+PiAxNikgJiAweGZmOworICAgICAgICAgICAgICAgIGRhdGFbNl0gPSAocnRwVGltZSA+PiA4KSAmIDB4ZmY7CisgICAgICAgICAgICAgICAgZGF0YVs3XSA9IHJ0cFRpbWUgJiAweGZmOworCisgICAgICAgICAgICAgICAgc3NpemVfdCBuID0gc2VuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1SVFBTb2NrZXQsIGRhdGEsIGJ1ZmZlci0+c2l6ZSgpLCAwKTsKKyAgICAgICAgICAgICAgICBpZiAobiA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgTE9HKEVSUk9SKSA8PCAic2VuZCBmYWlsZWQgKCIgPDwgc3RyZXJyb3IoZXJybm8pIDw8ICIpIjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEobiwgKHNzaXplX3QpYnVmZmVyLT5zaXplKCkpOworCisgICAgICAgICAgICAgICAgKyttU2VxTm87CisKKyAgICAgICAgICAgICAgICArK21OdW1SVFBTZW50OworICAgICAgICAgICAgICAgIG1OdW1SVFBPY3RldHNTZW50ICs9IGJ1ZmZlci0+c2l6ZSgpIC0gMTI7CisKKyAgICAgICAgICAgICAgICBtTGFzdFJUUFRpbWUgPSBydHBUaW1lOworICAgICAgICAgICAgICAgIG1MYXN0TlRQVGltZSA9IG50cFRpbWUoKTsKKworI2lmZGVmIEFORFJPSUQKKyAgICAgICAgICAgICAgICBpZiAobU51bVJUUFNlbnQgPCA2MCAqIDI1KSB7ICAvLyA2MCBzZWNzIHdvcnRoCisgICAgICAgICAgICAgICAgICAgIG1zZy0+cG9zdCg0MDAwMCk7CisjZWxzZQorICAgICAgICAgICAgICAgIGlmIChtTnVtUlRQT2N0ZXRzU2VudCA8IDgwMDAgKiA2MCkgeworICAgICAgICAgICAgICAgICAgICBtc2ctPnBvc3QoMTAwMDAwMGxsICogMTI4IC8gODAwMCk7CisjZW5kaWYKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBMT0coSU5GTykgPDwgIlRoYXQncyBlbm91Z2gsIHBhdXNpbmcuIjsKKworICAgICAgICAgICAgICAgICAgICBBU3RyaW5nIHJlcXVlc3Q7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuYXBwZW5kKCJQQVVTRSAiKTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5hcHBlbmQobVN0cmVhbVVSTCk7CisgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuYXBwZW5kKCIgUlRTUC8xLjBcclxuIik7CisKKyAgICAgICAgICAgICAgICAgICAgYWRkQXV0aGVudGljYXRpb24oJnJlcXVlc3QsICJQQVVTRSIsIG1TdHJlYW1VUkwuY19zdHIoKSk7CisKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5hcHBlbmQoIlNlc3Npb246ICIpOworICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmFwcGVuZChtU2Vzc2lvbklEKTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5hcHBlbmQoIlxyXG4iKTsKKyAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5hcHBlbmQoIlxyXG4iKTsKKworICAgICAgICAgICAgICAgICAgICBzcDxBTWVzc2FnZT4gcmVwbHkgPSBuZXcgQU1lc3NhZ2UoJ3BhdXMnLCBpZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgbUNvbm4tPnNlbmRSZXF1ZXN0KHJlcXVlc3QuY19zdHIoKSwgcmVwbHkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FzZSAnc3IgICc6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgaWYgKCFtQ29ubmVjdGVkKSB7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHNwPEFCdWZmZXI+IGJ1ZmZlciA9IG5ldyBBQnVmZmVyKDY1NTM2KTsKKyAgICAgICAgICAgICAgICBidWZmZXItPnNldFJhbmdlKDAsIDApOworCisgICAgICAgICAgICAgICAgYWRkU1IoYnVmZmVyKTsKKyAgICAgICAgICAgICAgICBhZGRTREVTKGJ1ZmZlcik7CisKKyAgICAgICAgICAgICAgICB1aW50OF90ICpkYXRhID0gYnVmZmVyLT5kYXRhKCk7CisgICAgICAgICAgICAgICAgc3NpemVfdCBuID0gc2VuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIG1SVENQU29ja2V0LCBkYXRhLCBidWZmZXItPnNpemUoKSwgMCk7CisgICAgICAgICAgICAgICAgQ0hFQ0tfRVEobiwgKHNzaXplX3QpYnVmZmVyLT5zaXplKCkpOworCisgICAgICAgICAgICAgICAgbXNnLT5wb3N0KDMwMDAwMDApOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNlICdwYXVzJzoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpbnQzMl90IHJlc3VsdDsKKyAgICAgICAgICAgICAgICBDSEVDSyhtc2ctPmZpbmRJbnQzMigicmVzdWx0IiwgJnJlc3VsdCkpOworCisgICAgICAgICAgICAgICAgTE9HKElORk8pIDw8ICJQQVVTRSBjb21wbGV0ZWQgd2l0aCByZXN1bHQgIgorICAgICAgICAgICAgICAgICAgICAgPDwgcmVzdWx0IDw8ICIgKCIgPDwgc3RyZXJyb3IoLXJlc3VsdCkgPDwgIikiOworCisgICAgICAgICAgICAgICAgc3A8UmVmQmFzZT4gb2JqOworICAgICAgICAgICAgICAgIENIRUNLKG1zZy0+ZmluZE9iamVjdCgicmVzcG9uc2UiLCAmb2JqKSk7CisgICAgICAgICAgICAgICAgc3A8QVJUU1BSZXNwb25zZT4gcmVzcG9uc2U7CisKKyAgICAgICAgICAgICAgICBBU3RyaW5nIHJlcXVlc3Q7CisgICAgICAgICAgICAgICAgcmVxdWVzdC5hcHBlbmQoIlRFQVJET1dOICIpOworICAgICAgICAgICAgICAgIHJlcXVlc3QuYXBwZW5kKG1TdHJlYW1VUkwpOworICAgICAgICAgICAgICAgIHJlcXVlc3QuYXBwZW5kKCIgUlRTUC8xLjBcclxuIik7CisKKyAgICAgICAgICAgICAgICBhZGRBdXRoZW50aWNhdGlvbigmcmVxdWVzdCwgIlRFQVJET1dOIiwgbVN0cmVhbVVSTC5jX3N0cigpKTsKKworICAgICAgICAgICAgICAgIHJlcXVlc3QuYXBwZW5kKCJTZXNzaW9uOiAiKTsKKyAgICAgICAgICAgICAgICByZXF1ZXN0LmFwcGVuZChtU2Vzc2lvbklEKTsKKyAgICAgICAgICAgICAgICByZXF1ZXN0LmFwcGVuZCgiXHJcbiIpOworICAgICAgICAgICAgICAgIHJlcXVlc3QuYXBwZW5kKCJcclxuIik7CisKKyAgICAgICAgICAgICAgICBzcDxBTWVzc2FnZT4gcmVwbHkgPSBuZXcgQU1lc3NhZ2UoJ3RlYXInLCBpZCgpKTsKKyAgICAgICAgICAgICAgICBtQ29ubi0+c2VuZFJlcXVlc3QocmVxdWVzdC5jX3N0cigpLCByZXBseSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhc2UgJ3RlYXInOgorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIGludDMyX3QgcmVzdWx0OworICAgICAgICAgICAgICAgIENIRUNLKG1zZy0+ZmluZEludDMyKCJyZXN1bHQiLCAmcmVzdWx0KSk7CisKKyAgICAgICAgICAgICAgICBMT0coSU5GTykgPDwgIlRFQVJET1dOIGNvbXBsZXRlZCB3aXRoIHJlc3VsdCAiCisgICAgICAgICAgICAgICAgICAgICA8PCByZXN1bHQgPDwgIiAoIiA8PCBzdHJlcnJvcigtcmVzdWx0KSA8PCAiKSI7CisKKyAgICAgICAgICAgICAgICBzcDxSZWZCYXNlPiBvYmo7CisgICAgICAgICAgICAgICAgQ0hFQ0sobXNnLT5maW5kT2JqZWN0KCJyZXNwb25zZSIsICZvYmopKTsKKyAgICAgICAgICAgICAgICBzcDxBUlRTUFJlc3BvbnNlPiByZXNwb25zZTsKKworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gT0spIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBzdGF0aWNfY2FzdDxBUlRTUFJlc3BvbnNlICo+KG9iai5nZXQoKSk7CisgICAgICAgICAgICAgICAgICAgIENIRUNLKHJlc3BvbnNlICE9IE5VTEwpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIChuZXcgQU1lc3NhZ2UoJ3F1aXQnLCBpZCgpKSktPnBvc3QoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FzZSAnZGlzYyc6CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgTE9HKElORk8pIDw8ICJkaXNjb25uZWN0IGNvbXBsZXRlZCI7CisKKyAgICAgICAgICAgICAgICBtQ29ubmVjdGVkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgKG5ldyBBTWVzc2FnZSgncXVpdCcsIGlkKCkpKS0+cG9zdCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNlICdxdWl0JzoKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBpZiAobUNvbm5lY3RlZCkgeworICAgICAgICAgICAgICAgICAgICBtQ29ubi0+ZGlzY29ubmVjdChuZXcgQU1lc3NhZ2UoJ2Rpc2MnLCBpZCgpKSk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChtUlRQU29ja2V0ID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgY2xvc2UobVJUUFNvY2tldCk7CisgICAgICAgICAgICAgICAgICAgIG1SVFBTb2NrZXQgPSAtMTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAobVJUQ1BTb2NrZXQgPj0gMCkgeworICAgICAgICAgICAgICAgICAgICBjbG9zZShtUlRDUFNvY2tldCk7CisgICAgICAgICAgICAgICAgICAgIG1SVENQU29ja2V0ID0gLTE7CisgICAgICAgICAgICAgICAgfQorCisjaWZkZWYgQU5EUk9JRAorICAgICAgICAgICAgICAgIG1FbmNvZGVyLT5zdG9wKCk7CisgICAgICAgICAgICAgICAgbUVuY29kZXIuY2xlYXIoKTsKKyNlbmRpZgorCisgICAgICAgICAgICAgICAgbUxvb3Blci0+c3RvcCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIFRSRVNQQVNTKCk7CisgICAgICAgIH0KKyAgICB9CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5NeVRyYW5zbWl0dGVyKCkgeworICAgIH0KKworcHJpdmF0ZToKKyAgICBlbnVtIEF1dGhUeXBlIHsKKyAgICAgICAgTk9ORSwKKyAgICAgICAgQkFTSUMsCisgICAgICAgIERJR0VTVAorICAgIH07CisKKyAgICBBU3RyaW5nIG1TZXJ2ZXJVUkw7CisgICAgQVN0cmluZyBtVHJhY2tVUkw7CisgICAgQVN0cmluZyBtU3RyZWFtVVJMOworCisgICAgc3A8QUxvb3Blcj4gbUxvb3BlcjsKKyAgICBzcDxBUlRTUENvbm5lY3Rpb24+IG1Db25uOworICAgIGJvb2wgbUNvbm5lY3RlZDsKKyAgICB1aW50MzJfdCBtU2VydmVySVA7CisgICAgQXV0aFR5cGUgbUF1dGhUeXBlOworICAgIEFTdHJpbmcgbU5vbmNlOworICAgIEFTdHJpbmcgbVNlc3Npb25JRDsKKyAgICBpbnQgbVJUUFNvY2tldCwgbVJUQ1BTb2NrZXQ7CisgICAgdWludDMyX3QgbVNvdXJjZUlEOworICAgIHVpbnQzMl90IG1TZXFObzsKKyAgICB1aW50MzJfdCBtUlRQVGltZUJhc2U7CisgICAgc3RydWN0IHNvY2thZGRyX2luIG1SZW1vdGVBZGRyOworICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBtUmVtb3RlUlRDUEFkZHI7CisgICAgc2l6ZV90IG1OdW1TYW1wbGVzU2VudDsKKyAgICB1aW50MzJfdCBtTnVtUlRQU2VudDsKKyAgICB1aW50MzJfdCBtTnVtUlRQT2N0ZXRzU2VudDsKKyAgICB1aW50MzJfdCBtTGFzdFJUUFRpbWU7CisgICAgdWludDY0X3QgbUxhc3ROVFBUaW1lOworCisjaWZkZWYgQU5EUk9JRAorICAgIHNwPE1lZGlhU291cmNlPiBtRW5jb2RlcjsKKyAgICBBU3RyaW5nIG1TZXFQYXJhbVNldDsKKyAgICBBU3RyaW5nIG1QaWNQYXJhbVNldDsKKworICAgIHZvaWQgbWFrZUgyNjRTUHJvcFBhcmFtU2V0cyhNZWRpYUJ1ZmZlciAqYnVmZmVyKSB7CisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyIGtTdGFydENvZGVbXSA9ICJceDAwXHgwMFx4MDBceDAxIjsKKworICAgICAgICBjb25zdCB1aW50OF90ICpkYXRhID0KKyAgICAgICAgICAgIChjb25zdCB1aW50OF90ICopYnVmZmVyLT5kYXRhKCkgKyBidWZmZXItPnJhbmdlX29mZnNldCgpOworICAgICAgICBzaXplX3Qgc2l6ZSA9IGJ1ZmZlci0+cmFuZ2VfbGVuZ3RoKCk7CisKKyAgICAgICAgQ0hFQ0tfR0Uoc2l6ZSwgMHUpOworICAgICAgICBDSEVDSyghbWVtY21wKGtTdGFydENvZGUsIGRhdGEsIDQpKTsKKworICAgICAgICBkYXRhICs9IDQ7CisgICAgICAgIHNpemUgLT0gNDsKKworICAgICAgICBzaXplX3Qgc3RhcnRDb2RlUG9zID0gMDsKKyAgICAgICAgd2hpbGUgKHN0YXJ0Q29kZVBvcyArIDMgPCBzaXplCisgICAgICAgICAgICAgICAgJiYgbWVtY21wKGtTdGFydENvZGUsICZkYXRhW3N0YXJ0Q29kZVBvc10sIDQpKSB7CisgICAgICAgICAgICArK3N0YXJ0Q29kZVBvczsKKyAgICAgICAgfQorCisgICAgICAgIENIRUNLX0xUKHN0YXJ0Q29kZVBvcyArIDMsIHNpemUpOworCisgICAgICAgIGVuY29kZUJhc2U2NChkYXRhLCBzdGFydENvZGVQb3MsICZtU2VxUGFyYW1TZXQpOworCisgICAgICAgIGVuY29kZUJhc2U2NCgmZGF0YVtzdGFydENvZGVQb3MgKyA0XSwgc2l6ZSAtIHN0YXJ0Q29kZVBvcyAtIDQsCisgICAgICAgICAgICAgICAgICAgICAmbVBpY1BhcmFtU2V0KTsKKyAgICB9CisjZW5kaWYKKworICAgIHZvaWQgYWRkU1IoY29uc3Qgc3A8QUJ1ZmZlcj4gJmJ1ZmZlcikgeworICAgICAgICB1aW50OF90ICpkYXRhID0gYnVmZmVyLT5kYXRhKCkgKyBidWZmZXItPnNpemUoKTsKKworICAgICAgICBkYXRhWzBdID0gMHg4MCB8IDA7CisgICAgICAgIGRhdGFbMV0gPSAyMDA7ICAvLyBTUgorICAgICAgICBkYXRhWzJdID0gMDsKKyAgICAgICAgZGF0YVszXSA9IDY7CisgICAgICAgIGRhdGFbNF0gPSBtU291cmNlSUQgPj4gMjQ7CisgICAgICAgIGRhdGFbNV0gPSAobVNvdXJjZUlEID4+IDE2KSAmIDB4ZmY7CisgICAgICAgIGRhdGFbNl0gPSAobVNvdXJjZUlEID4+IDgpICYgMHhmZjsKKyAgICAgICAgZGF0YVs3XSA9IG1Tb3VyY2VJRCAmIDB4ZmY7CisKKyAgICAgICAgZGF0YVs4XSA9IG1MYXN0TlRQVGltZSA+PiAoNjQgLSA4KTsKKyAgICAgICAgZGF0YVs5XSA9IChtTGFzdE5UUFRpbWUgPj4gKDY0IC0gMTYpKSAmIDB4ZmY7CisgICAgICAgIGRhdGFbMTBdID0gKG1MYXN0TlRQVGltZSA+PiAoNjQgLSAyNCkpICYgMHhmZjsKKyAgICAgICAgZGF0YVsxMV0gPSAobUxhc3ROVFBUaW1lID4+IDMyKSAmIDB4ZmY7CisgICAgICAgIGRhdGFbMTJdID0gKG1MYXN0TlRQVGltZSA+PiAyNCkgJiAweGZmOworICAgICAgICBkYXRhWzEzXSA9IChtTGFzdE5UUFRpbWUgPj4gMTYpICYgMHhmZjsKKyAgICAgICAgZGF0YVsxNF0gPSAobUxhc3ROVFBUaW1lID4+IDgpICYgMHhmZjsKKyAgICAgICAgZGF0YVsxNV0gPSBtTGFzdE5UUFRpbWUgJiAweGZmOworCisgICAgICAgIGRhdGFbMTZdID0gKG1MYXN0UlRQVGltZSA+PiAyNCkgJiAweGZmOworICAgICAgICBkYXRhWzE3XSA9IChtTGFzdFJUUFRpbWUgPj4gMTYpICYgMHhmZjsKKyAgICAgICAgZGF0YVsxOF0gPSAobUxhc3RSVFBUaW1lID4+IDgpICYgMHhmZjsKKyAgICAgICAgZGF0YVsxOV0gPSBtTGFzdFJUUFRpbWUgJiAweGZmOworCisgICAgICAgIGRhdGFbMjBdID0gbU51bVJUUFNlbnQgPj4gMjQ7CisgICAgICAgIGRhdGFbMjFdID0gKG1OdW1SVFBTZW50ID4+IDE2KSAmIDB4ZmY7CisgICAgICAgIGRhdGFbMjJdID0gKG1OdW1SVFBTZW50ID4+IDgpICYgMHhmZjsKKyAgICAgICAgZGF0YVsyM10gPSBtTnVtUlRQU2VudCAmIDB4ZmY7CisKKyAgICAgICAgZGF0YVsyNF0gPSBtTnVtUlRQT2N0ZXRzU2VudCA+PiAyNDsKKyAgICAgICAgZGF0YVsyNV0gPSAobU51bVJUUE9jdGV0c1NlbnQgPj4gMTYpICYgMHhmZjsKKyAgICAgICAgZGF0YVsyNl0gPSAobU51bVJUUE9jdGV0c1NlbnQgPj4gOCkgJiAweGZmOworICAgICAgICBkYXRhWzI3XSA9IG1OdW1SVFBPY3RldHNTZW50ICYgMHhmZjsKKworICAgICAgICBidWZmZXItPnNldFJhbmdlKGJ1ZmZlci0+b2Zmc2V0KCksIGJ1ZmZlci0+c2l6ZSgpICsgMjgpOworICAgIH0KKworICAgIHZvaWQgYWRkU0RFUyhjb25zdCBzcDxBQnVmZmVyPiAmYnVmZmVyKSB7CisgICAgICAgIHVpbnQ4X3QgKmRhdGEgPSBidWZmZXItPmRhdGEoKSArIGJ1ZmZlci0+c2l6ZSgpOworICAgICAgICBkYXRhWzBdID0gMHg4MCB8IDE7CisgICAgICAgIGRhdGFbMV0gPSAyMDI7ICAvLyBTREVTCisgICAgICAgIGRhdGFbNF0gPSBtU291cmNlSUQgPj4gMjQ7CisgICAgICAgIGRhdGFbNV0gPSAobVNvdXJjZUlEID4+IDE2KSAmIDB4ZmY7CisgICAgICAgIGRhdGFbNl0gPSAobVNvdXJjZUlEID4+IDgpICYgMHhmZjsKKyAgICAgICAgZGF0YVs3XSA9IG1Tb3VyY2VJRCAmIDB4ZmY7CisKKyAgICAgICAgc2l6ZV90IG9mZnNldCA9IDg7CisKKyAgICAgICAgZGF0YVtvZmZzZXQrK10gPSAxOyAgLy8gQ05BTUUKKworICAgICAgICBzdGF0aWMgY29uc3QgY2hhciAqa0NOQU1FID0gImFuZGloQGxhcHRvcCI7CisgICAgICAgIGRhdGFbb2Zmc2V0KytdID0gc3RybGVuKGtDTkFNRSk7CisKKyAgICAgICAgbWVtY3B5KCZkYXRhW29mZnNldF0sIGtDTkFNRSwgc3RybGVuKGtDTkFNRSkpOworICAgICAgICBvZmZzZXQgKz0gc3RybGVuKGtDTkFNRSk7CisKKyAgICAgICAgZGF0YVtvZmZzZXQrK10gPSA3OyAgLy8gTk9URQorCisgICAgICAgIHN0YXRpYyBjb25zdCBjaGFyICprTk9URSA9ICJIZWxsJ3MgZnJvemVuIG92ZXIuIjsKKyAgICAgICAgZGF0YVtvZmZzZXQrK10gPSBzdHJsZW4oa05PVEUpOworCisgICAgICAgIG1lbWNweSgmZGF0YVtvZmZzZXRdLCBrTk9URSwgc3RybGVuKGtOT1RFKSk7CisgICAgICAgIG9mZnNldCArPSBzdHJsZW4oa05PVEUpOworCisgICAgICAgIGRhdGFbb2Zmc2V0KytdID0gMDsKKworICAgICAgICBpZiAoKG9mZnNldCAlIDQpID4gMCkgeworICAgICAgICAgICAgc2l6ZV90IGNvdW50ID0gNCAtIChvZmZzZXQgJSA0KTsKKyAgICAgICAgICAgIHN3aXRjaCAoY291bnQpIHsKKyAgICAgICAgICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICAgICAgICAgIGRhdGFbb2Zmc2V0KytdID0gMDsKKyAgICAgICAgICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAgICAgICAgIGRhdGFbb2Zmc2V0KytdID0gMDsKKyAgICAgICAgICAgICAgICBjYXNlIDE6CisgICAgICAgICAgICAgICAgICAgIGRhdGFbb2Zmc2V0KytdID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHNpemVfdCBudW1Xb3JkcyA9IChvZmZzZXQgLyA0KSAtIDE7CisgICAgICAgIGRhdGFbMl0gPSBudW1Xb3JkcyA+PiA4OworICAgICAgICBkYXRhWzNdID0gbnVtV29yZHMgJiAweGZmOworCisgICAgICAgIGJ1ZmZlci0+c2V0UmFuZ2UoYnVmZmVyLT5vZmZzZXQoKSwgYnVmZmVyLT5zaXplKCkgKyBvZmZzZXQpOworICAgIH0KKworICAgIERJU0FMTE9XX0VWSUxfQ09OU1RSVUNUT1JTKE15VHJhbnNtaXR0ZXIpOworfTsKKworfSAgLy8gbmFtZXNwYWNlIGFuZHJvaWQKKworI2VuZGlmICAvLyBNWV9UUkFOU01JVFRFUl9IXwpkaWZmIC0tZ2l0IGEvbWVkaWEvbGlic3RhZ2VmcmlnaHQvcnRzcC9WaWRlb1NvdXJjZS5oIGIvbWVkaWEvbGlic3RhZ2VmcmlnaHQvcnRzcC9WaWRlb1NvdXJjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlMGM4NWIKLS0tIC9kZXYvbnVsbAorKysgYi9tZWRpYS9saWJzdGFnZWZyaWdodC9ydHNwL1ZpZGVvU291cmNlLmgKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgVklERU9fU09VUkNFX0hfCisKKyNkZWZpbmUgVklERU9fU09VUkNFX0hfCisKKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZWRpYUJ1ZmZlckdyb3VwLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFEZWZzLmg+CisjaW5jbHVkZSA8bWVkaWEvc3RhZ2VmcmlnaHQvTWVkaWFTb3VyY2UuaD4KKyNpbmNsdWRlIDxtZWRpYS9zdGFnZWZyaWdodC9NZXRhRGF0YS5oPgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK2NsYXNzIFZpZGVvU291cmNlIDogcHVibGljIE1lZGlhU291cmNlIHsKKyAgICBzdGF0aWMgY29uc3QgaW50MzJfdCBrRnJhbWVyYXRlID0gMjQ7ICAvLyBmcHMKKworcHVibGljOgorICAgIFZpZGVvU291cmNlKGludCB3aWR0aCwgaW50IGhlaWdodCkKKyAgICAgICAgOiBtV2lkdGgod2lkdGgpLAorICAgICAgICAgIG1IZWlnaHQoaGVpZ2h0KSwKKyAgICAgICAgICBtU2l6ZSgod2lkdGggKiBoZWlnaHQgKiAzKSAvIDIpIHsKKyAgICAgICAgbUdyb3VwLmFkZF9idWZmZXIobmV3IE1lZGlhQnVmZmVyKG1TaXplKSk7CisgICAgfQorCisgICAgdmlydHVhbCBzcDxNZXRhRGF0YT4gZ2V0Rm9ybWF0KCkgeworICAgICAgICBzcDxNZXRhRGF0YT4gbWV0YSA9IG5ldyBNZXRhRGF0YTsKKyAgICAgICAgbWV0YS0+c2V0SW50MzIoa0tleVdpZHRoLCBtV2lkdGgpOworICAgICAgICBtZXRhLT5zZXRJbnQzMihrS2V5SGVpZ2h0LCBtSGVpZ2h0KTsKKyAgICAgICAgbWV0YS0+c2V0Q1N0cmluZyhrS2V5TUlNRVR5cGUsIE1FRElBX01JTUVUWVBFX1ZJREVPX1JBVyk7CisKKyAgICAgICAgcmV0dXJuIG1ldGE7CisgICAgfQorCisgICAgdmlydHVhbCBzdGF0dXNfdCBzdGFydChNZXRhRGF0YSAqcGFyYW1zKSB7CisgICAgICAgIG1OdW1GcmFtZXNPdXRwdXQgPSAwOworICAgICAgICByZXR1cm4gT0s7CisgICAgfQorCisgICAgdmlydHVhbCBzdGF0dXNfdCBzdG9wKCkgeworICAgICAgICByZXR1cm4gT0s7CisgICAgfQorCisgICAgdmlydHVhbCBzdGF0dXNfdCByZWFkKAorICAgICAgICAgICAgTWVkaWFCdWZmZXIgKipidWZmZXIsIGNvbnN0IE1lZGlhU291cmNlOjpSZWFkT3B0aW9ucyAqb3B0aW9ucykgeworICAgICAgICBpZiAobU51bUZyYW1lc091dHB1dCA9PSBrRnJhbWVyYXRlICogMTAwKSB7CisgICAgICAgICAgICAvLyBTdG9wIHJldHVybmluZyBkYXRhIGFmdGVyIDEwIHNlY3MuCisgICAgICAgICAgICByZXR1cm4gRVJST1JfRU5EX09GX1NUUkVBTTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIHByaW50ZigiVmlkZW9Tb3VyY2U6OnJlYWRcbiIpOworICAgICAgICBzdGF0dXNfdCBlcnIgPSBtR3JvdXAuYWNxdWlyZV9idWZmZXIoYnVmZmVyKTsKKyAgICAgICAgaWYgKGVyciAhPSBPSykgeworICAgICAgICAgICAgcmV0dXJuIGVycjsKKyAgICAgICAgfQorCisgICAgICAgIGNoYXIgeCA9IChjaGFyKSgoZG91YmxlKXJhbmQoKSAvIFJBTkRfTUFYICogMjU1KTsKKyAgICAgICAgbWVtc2V0KCgqYnVmZmVyKS0+ZGF0YSgpLCB4LCBtU2l6ZSk7CisgICAgICAgICgqYnVmZmVyKS0+c2V0X3JhbmdlKDAsIG1TaXplKTsKKyAgICAgICAgKCpidWZmZXIpLT5tZXRhX2RhdGEoKS0+Y2xlYXIoKTsKKyAgICAgICAgKCpidWZmZXIpLT5tZXRhX2RhdGEoKS0+c2V0SW50NjQoCisgICAgICAgICAgICAgICAga0tleVRpbWUsIChtTnVtRnJhbWVzT3V0cHV0ICogMTAwMDAwMCkgLyBrRnJhbWVyYXRlKTsKKyAgICAgICAgKyttTnVtRnJhbWVzT3V0cHV0OworCisgICAgICAgIC8vIHByaW50ZigiVmlkZW9Tb3VyY2U6OnJlYWQgLSByZXR1cm5pbmcgYnVmZmVyXG4iKTsKKyAgICAgICAgLy8gTE9HKElORk8pKCJWaWRlb1NvdXJjZTo6cmVhZCAtIHJldHVybmluZyBidWZmZXIiKTsKKyAgICAgICAgcmV0dXJuIE9LOworICAgIH0KKworcHJvdGVjdGVkOgorICAgIHZpcnR1YWwgflZpZGVvU291cmNlKCkge30KKworcHJpdmF0ZToKKyAgICBNZWRpYUJ1ZmZlckdyb3VwIG1Hcm91cDsKKyAgICBpbnQgbVdpZHRoLCBtSGVpZ2h0OworICAgIHNpemVfdCBtU2l6ZTsKKyAgICBpbnQ2NF90IG1OdW1GcmFtZXNPdXRwdXQ7OworCisgICAgVmlkZW9Tb3VyY2UoY29uc3QgVmlkZW9Tb3VyY2UgJik7CisgICAgVmlkZW9Tb3VyY2UgJm9wZXJhdG9yPShjb25zdCBWaWRlb1NvdXJjZSAmKTsKK307CisKK30gIC8vIG5hbWVzcGFjZSBhbmRyb2lkCisKKyNlbmRpZiAgLy8gVklERU9fU09VUkNFX0hfCmRpZmYgLS1naXQgYS9tZWRpYS90ZXN0cy9NZWRpYUZyYW1ld29ya1Rlc3Qvc3JjL2NvbS9hbmRyb2lkL21lZGlhZnJhbWV3b3JrdGVzdC9NZWRpYVByb2ZpbGVSZWFkZXIuamF2YSBiL21lZGlhL3Rlc3RzL01lZGlhRnJhbWV3b3JrVGVzdC9zcmMvY29tL2FuZHJvaWQvbWVkaWFmcmFtZXdvcmt0ZXN0L01lZGlhUHJvZmlsZVJlYWRlci5qYXZhCmluZGV4IDA1NjUzN2QuLmIxYWQzMTUgMTAwNjQ0Ci0tLSBhL21lZGlhL3Rlc3RzL01lZGlhRnJhbWV3b3JrVGVzdC9zcmMvY29tL2FuZHJvaWQvbWVkaWFmcmFtZXdvcmt0ZXN0L01lZGlhUHJvZmlsZVJlYWRlci5qYXZhCisrKyBiL21lZGlhL3Rlc3RzL01lZGlhRnJhbWV3b3JrVGVzdC9zcmMvY29tL2FuZHJvaWQvbWVkaWFmcmFtZXdvcmt0ZXN0L01lZGlhUHJvZmlsZVJlYWRlci5qYXZhCkBAIC0zNCwxMCArMzQsMTIgQEAKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBMaXN0PEF1ZGlvRGVjb2Rlcj4gYXVkaW9EZWNvZGVycyA9IERlY29kZXJDYXBhYmlsaXRpZXMuZ2V0QXVkaW9EZWNvZGVycygpOwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExpc3Q8VmlkZW9FbmNvZGVyQ2FwPiB2aWRlb0VuY29kZXJzID0gRW5jb2RlckNhcGFiaWxpdGllcy5nZXRWaWRlb0VuY29kZXJzKCk7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTGlzdDxBdWRpb0VuY29kZXJDYXA+IGF1ZGlvRW5jb2RlcnMgPSBFbmNvZGVyQ2FwYWJpbGl0aWVzLmdldEF1ZGlvRW5jb2RlcnMoKTsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBIYXNoTWFwPEludGVnZXIsIFN0cmluZz4gZW5jb2Rlck1hcCA9IG5ldyBIYXNoTWFwPEludGVnZXIsIFN0cmluZz4oKTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBIYXNoTWFwPEludGVnZXIsIFN0cmluZz4gdmlkZW9FbmNvZGVyTWFwID0gbmV3IEhhc2hNYXA8SW50ZWdlciwgU3RyaW5nPigpOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIEhhc2hNYXA8SW50ZWdlciwgU3RyaW5nPiBhdWRpb0VuY29kZXJNYXAgPSBuZXcgSGFzaE1hcDxJbnRlZ2VyLCBTdHJpbmc+KCk7CiAKICAgICBzdGF0aWMgewotICAgICAgICBpbml0RW5jb2Rlck1hcCgpOworICAgICAgICBpbml0QXVkaW9FbmNvZGVyTWFwKCk7CisgICAgICAgIGluaXRWaWRlb0VuY29kZXJNYXAoKTsKICAgICB9OwogCiAgICAgcHVibGljIHN0YXRpYyBMaXN0PFZpZGVvRW5jb2RlckNhcD4gZ2V0VmlkZW9FbmNvZGVycygpIHsKQEAgLTc5LDcgKzgxLDcgQEAKICAgICAgICAgICAgIHZpZGVvRW5jb2RlciAhPSBNZWRpYVJlY29yZGVyLlZpZGVvRW5jb2Rlci5NUEVHXzRfU1ApIHsKICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlVuc3VwcG9ydGVkIHZpZGVvIGVuY29kZXIgIiArIHZpZGVvRW5jb2Rlcik7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGVuY29kZXJNYXAuZ2V0KHZpZGVvRW5jb2Rlcik7CisgICAgICAgIHJldHVybiB2aWRlb0VuY29kZXJNYXAuZ2V0KHZpZGVvRW5jb2Rlcik7CiAgICAgfQogCiAgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0QXVkaW9Db2RlY05hbWUoaW50IGF1ZGlvRW5jb2RlcikgewpAQCAtOTAsMjIgKzkyLDI0IEBACiAgICAgICAgICAgICBhdWRpb0VuY29kZXIgIT0gTWVkaWFSZWNvcmRlci5BdWRpb0VuY29kZXIuRUFBQ19QTFVTKSB7CiAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJVbnN1cHBvcnRlZCBhdWRpbyBlbmNvZGVlciAiICsgYXVkaW9FbmNvZGVyKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gZW5jb2Rlck1hcC5nZXQoYXVkaW9FbmNvZGVyKTsKKyAgICAgICAgcmV0dXJuIGF1ZGlvRW5jb2Rlck1hcC5nZXQoYXVkaW9FbmNvZGVyKTsKICAgICB9CiAKICAgICBwcml2YXRlIE1lZGlhUHJvZmlsZVJlYWRlcigpIHt9IC8vIERvbid0IGNhbGwgbWUKIAotICAgIHByaXZhdGUgc3RhdGljIHZvaWQgaW5pdEVuY29kZXJNYXAoKSB7CisgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBpbml0VmlkZW9FbmNvZGVyTWFwKCkgewogICAgICAgICAvLyB2aWRlbyBlbmNvZGVycwotICAgICAgICBlbmNvZGVyTWFwLnB1dChNZWRpYVJlY29yZGVyLlZpZGVvRW5jb2Rlci5IMjYzLCAiaDI2MyIpOwotICAgICAgICBlbmNvZGVyTWFwLnB1dChNZWRpYVJlY29yZGVyLlZpZGVvRW5jb2Rlci5IMjY0LCAiaDI2NCIpOwotICAgICAgICBlbmNvZGVyTWFwLnB1dChNZWRpYVJlY29yZGVyLlZpZGVvRW5jb2Rlci5NUEVHXzRfU1AsICJtNHYiKTsKKyAgICAgICAgdmlkZW9FbmNvZGVyTWFwLnB1dChNZWRpYVJlY29yZGVyLlZpZGVvRW5jb2Rlci5IMjYzLCAiaDI2MyIpOworICAgICAgICB2aWRlb0VuY29kZXJNYXAucHV0KE1lZGlhUmVjb3JkZXIuVmlkZW9FbmNvZGVyLkgyNjQsICJoMjY0Iik7CisgICAgICAgIHZpZGVvRW5jb2Rlck1hcC5wdXQoTWVkaWFSZWNvcmRlci5WaWRlb0VuY29kZXIuTVBFR180X1NQLCAibTR2Iik7CisgICAgfQogCisgICAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBpbml0QXVkaW9FbmNvZGVyTWFwKCkgewogICAgICAgICAvLyBhdWRpbyBlbmNvZGVycwotICAgICAgICBlbmNvZGVyTWFwLnB1dChNZWRpYVJlY29yZGVyLkF1ZGlvRW5jb2Rlci5BTVJfTkIsICJhbXJuYiIpOwotICAgICAgICBlbmNvZGVyTWFwLnB1dChNZWRpYVJlY29yZGVyLkF1ZGlvRW5jb2Rlci5BTVJfV0IsICJhbXJ3YiIpOwotICAgICAgICBlbmNvZGVyTWFwLnB1dChNZWRpYVJlY29yZGVyLkF1ZGlvRW5jb2Rlci5BQUMsICJhYWMiKTsKLSAgICAgICAgZW5jb2Rlck1hcC5wdXQoTWVkaWFSZWNvcmRlci5BdWRpb0VuY29kZXIuQUFDX1BMVVMsICJhYWNwbHVzIik7Ci0gICAgICAgIGVuY29kZXJNYXAucHV0KE1lZGlhUmVjb3JkZXIuQXVkaW9FbmNvZGVyLkVBQUNfUExVUywgImVhYWNwbHVzIik7CisgICAgICAgIGF1ZGlvRW5jb2Rlck1hcC5wdXQoTWVkaWFSZWNvcmRlci5BdWRpb0VuY29kZXIuQU1SX05CLCAiYW1ybmIiKTsKKyAgICAgICAgYXVkaW9FbmNvZGVyTWFwLnB1dChNZWRpYVJlY29yZGVyLkF1ZGlvRW5jb2Rlci5BTVJfV0IsICJhbXJ3YiIpOworICAgICAgICBhdWRpb0VuY29kZXJNYXAucHV0KE1lZGlhUmVjb3JkZXIuQXVkaW9FbmNvZGVyLkFBQywgImFhYyIpOworICAgICAgICBhdWRpb0VuY29kZXJNYXAucHV0KE1lZGlhUmVjb3JkZXIuQXVkaW9FbmNvZGVyLkFBQ19QTFVTLCAiYWFjcGx1cyIpOworICAgICAgICBhdWRpb0VuY29kZXJNYXAucHV0KE1lZGlhUmVjb3JkZXIuQXVkaW9FbmNvZGVyLkVBQUNfUExVUywgImVhYWNwbHVzIik7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvbWVkaWEvdGVzdHMvTWVkaWFGcmFtZXdvcmtUZXN0L3NyYy9jb20vYW5kcm9pZC9tZWRpYWZyYW1ld29ya3Rlc3QvZnVuY3Rpb25hbC9DYW1lcmFUZXN0LmphdmEgYi9tZWRpYS90ZXN0cy9NZWRpYUZyYW1ld29ya1Rlc3Qvc3JjL2NvbS9hbmRyb2lkL21lZGlhZnJhbWV3b3JrdGVzdC9mdW5jdGlvbmFsL0NhbWVyYVRlc3QuamF2YQppbmRleCAyZTU5OWYyLi5iYmQ2YmVhIDEwMDY0NAotLS0gYS9tZWRpYS90ZXN0cy9NZWRpYUZyYW1ld29ya1Rlc3Qvc3JjL2NvbS9hbmRyb2lkL21lZGlhZnJhbWV3b3JrdGVzdC9mdW5jdGlvbmFsL0NhbWVyYVRlc3QuamF2YQorKysgYi9tZWRpYS90ZXN0cy9NZWRpYUZyYW1ld29ya1Rlc3Qvc3JjL2NvbS9hbmRyb2lkL21lZGlhZnJhbWV3b3JrdGVzdC9mdW5jdGlvbmFsL0NhbWVyYVRlc3QuamF2YQpAQCAtMTksMjEgKzE5LDIwIEBACiBpbXBvcnQgY29tLmFuZHJvaWQubWVkaWFmcmFtZXdvcmt0ZXN0Lk1lZGlhRnJhbWV3b3JrVGVzdDsKIGltcG9ydCBjb20uYW5kcm9pZC5tZWRpYWZyYW1ld29ya3Rlc3QuTWVkaWFOYW1lczsKIAotaW1wb3J0IGphdmEuaW8uKjsKLQogaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OwogaW1wb3J0IGFuZHJvaWQuaGFyZHdhcmUuQ2FtZXJhOwogaW1wb3J0IGFuZHJvaWQuaGFyZHdhcmUuQ2FtZXJhLlBpY3R1cmVDYWxsYmFjazsKIGltcG9ydCBhbmRyb2lkLmhhcmR3YXJlLkNhbWVyYS5QcmV2aWV3Q2FsbGJhY2s7CiBpbXBvcnQgYW5kcm9pZC5oYXJkd2FyZS5DYW1lcmEuU2h1dHRlckNhbGxiYWNrOworaW1wb3J0IGFuZHJvaWQub3MuQ29uZGl0aW9uVmFyaWFibGU7CitpbXBvcnQgYW5kcm9pZC5vcy5FbnZpcm9ubWVudDsKK2ltcG9ydCBhbmRyb2lkLm9zLkxvb3BlcjsKIGltcG9ydCBhbmRyb2lkLnRlc3QuQWN0aXZpdHlJbnN0cnVtZW50YXRpb25UZXN0Q2FzZTsKK2ltcG9ydCBhbmRyb2lkLnRlc3Quc3VpdGVidWlsZGVyLmFubm90YXRpb24uTGFyZ2VUZXN0OwogaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CiBpbXBvcnQgYW5kcm9pZC52aWV3LlN1cmZhY2VIb2xkZXI7CiAKLWltcG9ydCBhbmRyb2lkLm9zLkNvbmRpdGlvblZhcmlhYmxlOwotaW1wb3J0IGFuZHJvaWQub3MuTG9vcGVyOwotCi1pbXBvcnQgYW5kcm9pZC50ZXN0LnN1aXRlYnVpbGRlci5hbm5vdGF0aW9uLkxhcmdlVGVzdDsKK2ltcG9ydCBqYXZhLmlvLio7CiAKIC8qKgogICogSnVuaXQgLyBJbnN0cnVtZW50YXRpb24gdGVzdCBjYXNlIGZvciB0aGUgY2FtZXJhIGFwaQpAQCAtMTUzLDcgKzE1Miw4IEBACiAgICAgICAgICAgICB0cnkgeyAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmIChyYXdEYXRhICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgaW50IHJhd0RhdGFMZW5ndGggPSByYXdEYXRhLmxlbmd0aDsKLSAgICAgICAgICAgICAgICAgICAgRmlsZSByYXdvdXRwdXQgPSBuZXcgRmlsZSgiL3NkY2FyZC90ZXN0LmJtcCIpOworICAgICAgICAgICAgICAgICAgICBGaWxlIHJhd291dHB1dCA9IG5ldyBGaWxlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVudmlyb25tZW50LmdldEV4dGVybmFsU3RvcmFnZURpcmVjdG9yeSgpLnRvU3RyaW5nKCksICIvdGVzdC5ibXAiKTsKICAgICAgICAgICAgICAgICAgICAgRmlsZU91dHB1dFN0cmVhbSBvdXRzdHJlYW0gPSBuZXcgRmlsZU91dHB1dFN0cmVhbShyYXdvdXRwdXQpOwogICAgICAgICAgICAgICAgICAgICBvdXRzdHJlYW0ud3JpdGUocmF3RGF0YSk7ICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICBMb2cudihUQUcsICJKcGVnUGljdHVyZUNhbGxiYWNrIHJhd0RhdGFMZW5ndGggPSAiICsgcmF3RGF0YUxlbmd0aCk7CmRpZmYgLS1naXQgYS9tZWRpYS90ZXN0cy9NZWRpYUZyYW1ld29ya1Rlc3Qvc3JjL2NvbS9hbmRyb2lkL21lZGlhZnJhbWV3b3JrdGVzdC9mdW5jdGlvbmFsL01lZGlhUmVjb3JkZXJUZXN0LmphdmEgYi9tZWRpYS90ZXN0cy9NZWRpYUZyYW1ld29ya1Rlc3Qvc3JjL2NvbS9hbmRyb2lkL21lZGlhZnJhbWV3b3JrdGVzdC9mdW5jdGlvbmFsL01lZGlhUmVjb3JkZXJUZXN0LmphdmEKaW5kZXggYTUyZmQ3Ni4uMjMzMjY1NyAxMDA2NDQKLS0tIGEvbWVkaWEvdGVzdHMvTWVkaWFGcmFtZXdvcmtUZXN0L3NyYy9jb20vYW5kcm9pZC9tZWRpYWZyYW1ld29ya3Rlc3QvZnVuY3Rpb25hbC9NZWRpYVJlY29yZGVyVGVzdC5qYXZhCisrKyBiL21lZGlhL3Rlc3RzL01lZGlhRnJhbWV3b3JrVGVzdC9zcmMvY29tL2FuZHJvaWQvbWVkaWFmcmFtZXdvcmt0ZXN0L2Z1bmN0aW9uYWwvTWVkaWFSZWNvcmRlclRlc3QuamF2YQpAQCAtMTIxLDggKzEyMSw4IEBACiAgICAgICAgIG1TdXJmYWNlSG9sZGVyID0gTWVkaWFGcmFtZXdvcmtUZXN0Lm1TdXJmYWNlVmlldy5nZXRIb2xkZXIoKTsKICAgICAgICAgU3RyaW5nIGZpbGVuYW1lID0gKCIvc2RjYXJkLyIgKyB2aWRlb0VuY29kZXIgKyAiXyIgKyBhdWRpb0VuY29kZXIgKyAiXyIgKyBoaWdoUXVhbGl0eSArICIuM2dwIik7CiAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBMb2cudihUQUcsICJ2aWRlbyBlbmNvZGVyIDoiICsgdmlkZW9FbmNvZGVyKTsKLSAgICAgICAgICAgIExvZy52KFRBRywgImF1ZGlvIGVuY29kZXIgOiIgKyBhdWRpb0VuY29kZXIpOworICAgICAgICAgICAgTG9nLnYoVEFHLCAidmlkZW8gZW5jb2RlciA6ICIgKyB2aWRlb0VuY29kZXIpOworICAgICAgICAgICAgTG9nLnYoVEFHLCAiYXVkaW8gZW5jb2RlciA6ICIgKyBhdWRpb0VuY29kZXIpOwogICAgICAgICAgICAgTG9nLnYoVEFHLCAicXVhbGl0eSA6ICIgKyAoaGlnaFF1YWxpdHk/ImhpZ2giOiAibG93IikpOwogICAgICAgICAgICAgTG9nLnYoVEFHLCAiZW5jb2RlciA6ICIgKyBNZWRpYVByb2ZpbGVSZWFkZXIuZ2V0VmlkZW9Db2RlY05hbWUodmlkZW9FbmNvZGVyKSk7CiAgICAgICAgICAgICBMb2cudihUQUcsICJhdWRpbyA6ICIgKyBNZWRpYVByb2ZpbGVSZWFkZXIuZ2V0QXVkaW9Db2RlY05hbWUoYXVkaW9FbmNvZGVyKSk7CmRpZmYgLS1naXQgYS9tZWRpYS90ZXN0cy9vbXhqcGVnZGVjb2Rlci9BbmRyb2lkLm1rIGIvbWVkaWEvdGVzdHMvb214anBlZ2RlY29kZXIvQW5kcm9pZC5tawppbmRleCBiN2MxOGJjLi5mOTdmOGViIDEwMDY0NAotLS0gYS9tZWRpYS90ZXN0cy9vbXhqcGVnZGVjb2Rlci9BbmRyb2lkLm1rCisrKyBiL21lZGlhL3Rlc3RzL29teGpwZWdkZWNvZGVyL0FuZHJvaWQubWsKQEAgLTExLDcgKzExLDYgQEAKICMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAjIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKICMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi1pZmVxICgkKEJVSUxEX1dJVEhfRlVMTF9TVEFHRUZSSUdIVCksdHJ1ZSkKIAogTE9DQUxfUEFUSDo9ICQoY2FsbCBteS1kaXIpCiAKQEAgLTU0LDUgKzUzLDMgQEAKIExPQ0FMX01PRFVMRV9UQUdTIDo9IG9wdGlvbmFsCiAKIGluY2x1ZGUgJChCVUlMRF9FWEVDVVRBQkxFKQotCi1lbmRpZgpkaWZmIC0tZ2l0IGEvbmF0aXZlL2FuZHJvaWQvQW5kcm9pZC5tayBiL25hdGl2ZS9hbmRyb2lkL0FuZHJvaWQubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTA5YTM3OQotLS0gL2Rldi9udWxsCisrKyBiL25hdGl2ZS9hbmRyb2lkL0FuZHJvaWQubWsKQEAgLTAsMCArMSwyOSBAQAorQkFTRV9QQVRIIDo9ICQoY2FsbCBteS1kaXIpCitMT0NBTF9QQVRIOj0gJChjYWxsIG15LWRpcikKKworaW5jbHVkZSAkKENMRUFSX1ZBUlMpCisKKyMgb3VyIHNvdXJjZSBmaWxlcworIworTE9DQUxfU1JDX0ZJTEVTOj0gXAorICAgIGlucHV0LmNwcCBcCisgICAgbG9vcGVyLmNwcCBcCisgICAgbmF0aXZlX2FjdGl2aXR5LmNwcCBcCisgICAgbmF0aXZlX3dpbmRvdy5jcHAKKworTE9DQUxfU0hBUkVEX0xJQlJBUklFUyA6PSBcCisgICAgbGliY3V0aWxzIFwKKyAgICBsaWJ1dGlscyBcCisgICAgbGliYmluZGVyIFwKKyAgICBsaWJ1aSBcCisgICAgbGlic3VyZmFjZWZsaW5nZXJfY2xpZW50IFwKKyAgICBsaWJhbmRyb2lkX3J1bnRpbWUKKworTE9DQUxfQ19JTkNMVURFUyArPSBcCisgICAgZnJhbWV3b3Jrcy9iYXNlL25hdGl2ZS9pbmNsdWRlIFwKKyAgICBmcmFtZXdvcmtzL2Jhc2UvY29yZS9qbmkvYW5kcm9pZCBcCisgICAgZGFsdmlrL2xpYm5hdGl2ZWhlbHBlci9pbmNsdWRlL25hdGl2ZWhlbHBlcgorCitMT0NBTF9NT0RVTEU6PSBsaWJhbmRyb2lkCisKK2luY2x1ZGUgJChCVUlMRF9TSEFSRURfTElCUkFSWSkKZGlmZiAtLWdpdCBhL25hdGl2ZS9hbmRyb2lkL2lucHV0LmNwcCBiL25hdGl2ZS9hbmRyb2lkL2lucHV0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OWQ1M2UyCi0tLSAvZGV2L251bGwKKysrIGIvbmF0aXZlL2FuZHJvaWQvaW5wdXQuY3BwCkBAIC0wLDAgKzEsMjUxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2RlZmluZSBMT0dfVEFHICJpbnB1dCIKKyNpbmNsdWRlIDx1dGlscy9Mb2cuaD4KKworI2luY2x1ZGUgPGFuZHJvaWQvaW5wdXQuaD4KKyNpbmNsdWRlIDx1aS9JbnB1dC5oPgorI2luY2x1ZGUgPHVpL0lucHV0VHJhbnNwb3J0Lmg+CisjaW5jbHVkZSA8dXRpbHMvUG9sbExvb3AuaD4KKworI2luY2x1ZGUgPHBvbGwuaD4KKwordXNpbmcgYW5kcm9pZDo6SW5wdXRFdmVudDsKK3VzaW5nIGFuZHJvaWQ6OktleUV2ZW50OwordXNpbmcgYW5kcm9pZDo6TW90aW9uRXZlbnQ7CisKK2ludDMyX3QgQUlucHV0RXZlbnRfZ2V0VHlwZShjb25zdCBBSW5wdXRFdmVudCogZXZlbnQpIHsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSW5wdXRFdmVudCo+KGV2ZW50KS0+Z2V0VHlwZSgpOworfQorCitpbnQzMl90IEFJbnB1dEV2ZW50X2dldERldmljZUlkKGNvbnN0IEFJbnB1dEV2ZW50KiBldmVudCkgeworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBJbnB1dEV2ZW50Kj4oZXZlbnQpLT5nZXREZXZpY2VJZCgpOworfQorCitpbnQzMl90IEFJbnB1dEV2ZW50X2dldE5hdHVyZShjb25zdCBBSW5wdXRFdmVudCogZXZlbnQpIHsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgSW5wdXRFdmVudCo+KGV2ZW50KS0+Z2V0TmF0dXJlKCk7Cit9CisKK2ludDMyX3QgQUtleUV2ZW50X2dldEFjdGlvbihjb25zdCBBSW5wdXRFdmVudCoga2V5X2V2ZW50KSB7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IEtleUV2ZW50Kj4oa2V5X2V2ZW50KS0+Z2V0QWN0aW9uKCk7Cit9CisKK2ludDMyX3QgQUtleUV2ZW50X2dldEZsYWdzKGNvbnN0IEFJbnB1dEV2ZW50KiBrZXlfZXZlbnQpIHsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgS2V5RXZlbnQqPihrZXlfZXZlbnQpLT5nZXRGbGFncygpOworfQorCitpbnQzMl90IEFLZXlFdmVudF9nZXRLZXlDb2RlKGNvbnN0IEFJbnB1dEV2ZW50KiBrZXlfZXZlbnQpIHsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgS2V5RXZlbnQqPihrZXlfZXZlbnQpLT5nZXRLZXlDb2RlKCk7Cit9CisKK2ludDMyX3QgQUtleUV2ZW50X2dldFNjYW5Db2RlKGNvbnN0IEFJbnB1dEV2ZW50KiBrZXlfZXZlbnQpIHsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgS2V5RXZlbnQqPihrZXlfZXZlbnQpLT5nZXRTY2FuQ29kZSgpOworfQorCitpbnQzMl90IEFLZXlFdmVudF9nZXRNZXRhU3RhdGUoY29uc3QgQUlucHV0RXZlbnQqIGtleV9ldmVudCkgeworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBLZXlFdmVudCo+KGtleV9ldmVudCktPmdldE1ldGFTdGF0ZSgpOworfQoraW50MzJfdCBBS2V5RXZlbnRfZ2V0UmVwZWF0Q291bnQoY29uc3QgQUlucHV0RXZlbnQqIGtleV9ldmVudCkgeworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBLZXlFdmVudCo+KGtleV9ldmVudCktPmdldFJlcGVhdENvdW50KCk7Cit9CisKK2ludDY0X3QgQUtleUV2ZW50X2dldERvd25UaW1lKGNvbnN0IEFJbnB1dEV2ZW50KiBrZXlfZXZlbnQpIHsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgS2V5RXZlbnQqPihrZXlfZXZlbnQpLT5nZXREb3duVGltZSgpOworfQorCitpbnQ2NF90IEFLZXlFdmVudF9nZXRFdmVudFRpbWUoY29uc3QgQUlucHV0RXZlbnQqIGtleV9ldmVudCkgeworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBLZXlFdmVudCo+KGtleV9ldmVudCktPmdldEV2ZW50VGltZSgpOworfQorCitpbnQzMl90IEFNb3Rpb25FdmVudF9nZXRBY3Rpb24oY29uc3QgQUlucHV0RXZlbnQqIG1vdGlvbl9ldmVudCkgeworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBNb3Rpb25FdmVudCo+KG1vdGlvbl9ldmVudCktPmdldEFjdGlvbigpOworfQorCitpbnQzMl90IEFNb3Rpb25FdmVudF9nZXRNZXRhU3RhdGUoY29uc3QgQUlucHV0RXZlbnQqIG1vdGlvbl9ldmVudCkgeworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBNb3Rpb25FdmVudCo+KG1vdGlvbl9ldmVudCktPmdldE1ldGFTdGF0ZSgpOworfQorCitpbnQzMl90IEFNb3Rpb25FdmVudF9nZXRFZGdlRmxhZ3MoY29uc3QgQUlucHV0RXZlbnQqIG1vdGlvbl9ldmVudCkgeworICAgIHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IE1vdGlvbkV2ZW50Kj4obW90aW9uX2V2ZW50KS0+Z2V0RWRnZUZsYWdzKCk7Cit9CisKK2ludDY0X3QgQU1vdGlvbkV2ZW50X2dldERvd25UaW1lKGNvbnN0IEFJbnB1dEV2ZW50KiBtb3Rpb25fZXZlbnQpIHsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgTW90aW9uRXZlbnQqPihtb3Rpb25fZXZlbnQpLT5nZXREb3duVGltZSgpOworfQorCitpbnQ2NF90IEFNb3Rpb25FdmVudF9nZXRFdmVudFRpbWUoY29uc3QgQUlucHV0RXZlbnQqIG1vdGlvbl9ldmVudCkgeworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBNb3Rpb25FdmVudCo+KG1vdGlvbl9ldmVudCktPmdldEV2ZW50VGltZSgpOworfQorCitmbG9hdCBBTW90aW9uRXZlbnRfZ2V0WE9mZnNldChjb25zdCBBSW5wdXRFdmVudCogbW90aW9uX2V2ZW50KSB7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IE1vdGlvbkV2ZW50Kj4obW90aW9uX2V2ZW50KS0+Z2V0WE9mZnNldCgpOworfQorCitmbG9hdCBBTW90aW9uRXZlbnRfZ2V0WU9mZnNldChjb25zdCBBSW5wdXRFdmVudCogbW90aW9uX2V2ZW50KSB7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IE1vdGlvbkV2ZW50Kj4obW90aW9uX2V2ZW50KS0+Z2V0WU9mZnNldCgpOworfQorCitmbG9hdCBBTW90aW9uRXZlbnRfZ2V0WFByZWNpc2lvbihjb25zdCBBSW5wdXRFdmVudCogbW90aW9uX2V2ZW50KSB7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IE1vdGlvbkV2ZW50Kj4obW90aW9uX2V2ZW50KS0+Z2V0WFByZWNpc2lvbigpOworfQorCitmbG9hdCBBTW90aW9uRXZlbnRfZ2V0WVByZWNpc2lvbihjb25zdCBBSW5wdXRFdmVudCogbW90aW9uX2V2ZW50KSB7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IE1vdGlvbkV2ZW50Kj4obW90aW9uX2V2ZW50KS0+Z2V0WVByZWNpc2lvbigpOworfQorCitzaXplX3QgQU1vdGlvbkV2ZW50X2dldFBvaW50ZXJDb3VudChjb25zdCBBSW5wdXRFdmVudCogbW90aW9uX2V2ZW50KSB7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IE1vdGlvbkV2ZW50Kj4obW90aW9uX2V2ZW50KS0+Z2V0UG9pbnRlckNvdW50KCk7Cit9CisKK2ludDMyX3QgQU1vdGlvbkV2ZW50X2dldFBvaW50ZXJJZChjb25zdCBBSW5wdXRFdmVudCogbW90aW9uX2V2ZW50LCBzaXplX3QgcG9pbnRlcl9pbmRleCkgeworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBNb3Rpb25FdmVudCo+KG1vdGlvbl9ldmVudCktPmdldFBvaW50ZXJJZChwb2ludGVyX2luZGV4KTsKK30KKworZmxvYXQgQU1vdGlvbkV2ZW50X2dldFJhd1goY29uc3QgQUlucHV0RXZlbnQqIG1vdGlvbl9ldmVudCwgc2l6ZV90IHBvaW50ZXJfaW5kZXgpIHsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgTW90aW9uRXZlbnQqPihtb3Rpb25fZXZlbnQpLT5nZXRSYXdYKHBvaW50ZXJfaW5kZXgpOworfQorCitmbG9hdCBBTW90aW9uRXZlbnRfZ2V0UmF3WShjb25zdCBBSW5wdXRFdmVudCogbW90aW9uX2V2ZW50LCBzaXplX3QgcG9pbnRlcl9pbmRleCkgeworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBNb3Rpb25FdmVudCo+KG1vdGlvbl9ldmVudCktPmdldFJhd1kocG9pbnRlcl9pbmRleCk7Cit9CisKK2Zsb2F0IEFNb3Rpb25FdmVudF9nZXRYKGNvbnN0IEFJbnB1dEV2ZW50KiBtb3Rpb25fZXZlbnQsIHNpemVfdCBwb2ludGVyX2luZGV4KSB7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IE1vdGlvbkV2ZW50Kj4obW90aW9uX2V2ZW50KS0+Z2V0WChwb2ludGVyX2luZGV4KTsKK30KKworZmxvYXQgQU1vdGlvbkV2ZW50X2dldFkoY29uc3QgQUlucHV0RXZlbnQqIG1vdGlvbl9ldmVudCwgc2l6ZV90IHBvaW50ZXJfaW5kZXgpIHsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgTW90aW9uRXZlbnQqPihtb3Rpb25fZXZlbnQpLT5nZXRZKHBvaW50ZXJfaW5kZXgpOworfQorCitmbG9hdCBBTW90aW9uRXZlbnRfZ2V0UHJlc3N1cmUoY29uc3QgQUlucHV0RXZlbnQqIG1vdGlvbl9ldmVudCwgc2l6ZV90IHBvaW50ZXJfaW5kZXgpIHsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgTW90aW9uRXZlbnQqPihtb3Rpb25fZXZlbnQpLT5nZXRQcmVzc3VyZShwb2ludGVyX2luZGV4KTsKK30KKworZmxvYXQgQU1vdGlvbkV2ZW50X2dldFNpemUoY29uc3QgQUlucHV0RXZlbnQqIG1vdGlvbl9ldmVudCwgc2l6ZV90IHBvaW50ZXJfaW5kZXgpIHsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgTW90aW9uRXZlbnQqPihtb3Rpb25fZXZlbnQpLT5nZXRTaXplKHBvaW50ZXJfaW5kZXgpOworfQorCitzaXplX3QgQU1vdGlvbkV2ZW50X2dldEhpc3RvcnlTaXplKGNvbnN0IEFJbnB1dEV2ZW50KiBtb3Rpb25fZXZlbnQpIHsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgTW90aW9uRXZlbnQqPihtb3Rpb25fZXZlbnQpLT5nZXRIaXN0b3J5U2l6ZSgpOworfQorCitpbnQ2NF90IEFNb3Rpb25FdmVudF9nZXRIaXN0b3JpY2FsRXZlbnRUaW1lKEFJbnB1dEV2ZW50KiBtb3Rpb25fZXZlbnQsCisgICAgICAgIHNpemVfdCBoaXN0b3J5X2luZGV4KSB7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IE1vdGlvbkV2ZW50Kj4obW90aW9uX2V2ZW50KS0+Z2V0SGlzdG9yaWNhbEV2ZW50VGltZSgKKyAgICAgICAgICAgIGhpc3RvcnlfaW5kZXgpOworfQorCitmbG9hdCBBTW90aW9uRXZlbnRfZ2V0SGlzdG9yaWNhbFJhd1goQUlucHV0RXZlbnQqIG1vdGlvbl9ldmVudCwgc2l6ZV90IHBvaW50ZXJfaW5kZXgsCisgICAgICAgIHNpemVfdCBoaXN0b3J5X2luZGV4KSB7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IE1vdGlvbkV2ZW50Kj4obW90aW9uX2V2ZW50KS0+Z2V0SGlzdG9yaWNhbFJhd1goCisgICAgICAgICAgICBwb2ludGVyX2luZGV4LCBoaXN0b3J5X2luZGV4KTsKK30KKworZmxvYXQgQU1vdGlvbkV2ZW50X2dldEhpc3RvcmljYWxSYXdZKEFJbnB1dEV2ZW50KiBtb3Rpb25fZXZlbnQsIHNpemVfdCBwb2ludGVyX2luZGV4LAorICAgICAgICBzaXplX3QgaGlzdG9yeV9pbmRleCkgeworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBNb3Rpb25FdmVudCo+KG1vdGlvbl9ldmVudCktPmdldEhpc3RvcmljYWxSYXdZKAorICAgICAgICAgICAgcG9pbnRlcl9pbmRleCwgaGlzdG9yeV9pbmRleCk7Cit9CisKK2Zsb2F0IEFNb3Rpb25FdmVudF9nZXRIaXN0b3JpY2FsWChBSW5wdXRFdmVudCogbW90aW9uX2V2ZW50LCBzaXplX3QgcG9pbnRlcl9pbmRleCwKKyAgICAgICAgc2l6ZV90IGhpc3RvcnlfaW5kZXgpIHsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgTW90aW9uRXZlbnQqPihtb3Rpb25fZXZlbnQpLT5nZXRIaXN0b3JpY2FsWCgKKyAgICAgICAgICAgIHBvaW50ZXJfaW5kZXgsIGhpc3RvcnlfaW5kZXgpOworfQorCitmbG9hdCBBTW90aW9uRXZlbnRfZ2V0SGlzdG9yaWNhbFkoQUlucHV0RXZlbnQqIG1vdGlvbl9ldmVudCwgc2l6ZV90IHBvaW50ZXJfaW5kZXgsCisgICAgICAgIHNpemVfdCBoaXN0b3J5X2luZGV4KSB7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IE1vdGlvbkV2ZW50Kj4obW90aW9uX2V2ZW50KS0+Z2V0SGlzdG9yaWNhbFkoCisgICAgICAgICAgICBwb2ludGVyX2luZGV4LCBoaXN0b3J5X2luZGV4KTsKK30KKworZmxvYXQgQU1vdGlvbkV2ZW50X2dldEhpc3RvcmljYWxQcmVzc3VyZShBSW5wdXRFdmVudCogbW90aW9uX2V2ZW50LCBzaXplX3QgcG9pbnRlcl9pbmRleCwKKyAgICAgICAgc2l6ZV90IGhpc3RvcnlfaW5kZXgpIHsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgTW90aW9uRXZlbnQqPihtb3Rpb25fZXZlbnQpLT5nZXRIaXN0b3JpY2FsUHJlc3N1cmUoCisgICAgICAgICAgICBwb2ludGVyX2luZGV4LCBoaXN0b3J5X2luZGV4KTsKK30KKworZmxvYXQgQU1vdGlvbkV2ZW50X2dldEhpc3RvcmljYWxTaXplKEFJbnB1dEV2ZW50KiBtb3Rpb25fZXZlbnQsIHNpemVfdCBwb2ludGVyX2luZGV4LAorICAgICAgICBzaXplX3QgaGlzdG9yeV9pbmRleCkgeworICAgIHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBNb3Rpb25FdmVudCo+KG1vdGlvbl9ldmVudCktPmdldEhpc3RvcmljYWxTaXplKAorICAgICAgICAgICAgcG9pbnRlcl9pbmRleCwgaGlzdG9yeV9pbmRleCk7Cit9CisKK3ZvaWQgQUlucHV0UXVldWVfYXR0YWNoTG9vcGVyKEFJbnB1dFF1ZXVlKiBxdWV1ZSwgQUxvb3BlciogbG9vcGVyLAorICAgICAgICBBTG9vcGVyX2NhbGxiYWNrRnVuYyogY2FsbGJhY2ssIHZvaWQqIGRhdGEpIHsKKyAgICBxdWV1ZS0+c2V0UG9sbExvb3Aoc3RhdGljX2Nhc3Q8YW5kcm9pZDo6UG9sbExvb3AqPihsb29wZXIpKTsKKyAgICBBTG9vcGVyX2FkZEZkKGxvb3BlciwgcXVldWUtPmdldENvbnN1bWVyKCkuZ2V0Q2hhbm5lbCgpLT5nZXRSZWNlaXZlUGlwZUZkKCksCisgICAgICAgICAgICBQT0xMSU4sIGNhbGxiYWNrLCBkYXRhKTsKK30KKwordm9pZCBBSW5wdXRRdWV1ZV9kZXRhY2hMb29wZXIoQUlucHV0UXVldWUqIHF1ZXVlKSB7CisgICAgcXVldWUtPmdldFBvbGxMb29wKCktPnJlbW92ZUNhbGxiYWNrKAorICAgICAgICAgICAgcXVldWUtPmdldENvbnN1bWVyKCkuZ2V0Q2hhbm5lbCgpLT5nZXRSZWNlaXZlUGlwZUZkKCkpOworfQorCitpbnQgQUlucHV0UXVldWVfaGFzRXZlbnRzKEFJbnB1dFF1ZXVlKiBxdWV1ZSkgeworICAgIHN0cnVjdCBwb2xsZmQgcGZkOworICAgIAorICAgIHBmZC5mZCA9IHF1ZXVlLT5nZXRDb25zdW1lcigpLmdldENoYW5uZWwoKS0+Z2V0UmVjZWl2ZVBpcGVGZCgpOworICAgIHBmZC5ldmVudHMgPSBQT0xMSU47CisgICAgcGZkLnJldmVudHMgPSAwOworICAgIAorICAgIGludCBuZmQgPSBwb2xsKCZwZmQsIDEsIDApOworICAgIGlmIChuZmQgPD0gMCkgcmV0dXJuIG5mZDsKKyAgICByZXR1cm4gcGZkLnJldmVudHMgPT0gUE9MTElOID8gMSA6IC0xOworfQorCitpbnQzMl90IEFJbnB1dFF1ZXVlX2dldEV2ZW50KEFJbnB1dFF1ZXVlKiBxdWV1ZSwgQUlucHV0RXZlbnQqKiBvdXRFdmVudCkgeworICAgICpvdXRFdmVudCA9IE5VTEw7CisgICAgCisgICAgaW50MzJfdCByZXMgPSBxdWV1ZS0+Z2V0Q29uc3VtZXIoKS5yZWNlaXZlRGlzcGF0Y2hTaWduYWwoKTsKKyAgICBpZiAocmVzICE9IGFuZHJvaWQ6Ok9LKSB7CisgICAgICAgIExPR0UoImNoYW5uZWwgJyVzJyB+IEZhaWxlZCB0byByZWNlaXZlIGRpc3BhdGNoIHNpZ25hbC4gIHN0YXR1cz0lZCIsCisgICAgICAgICAgICAgICAgcXVldWUtPmdldENvbnN1bWVyKCkuZ2V0Q2hhbm5lbCgpLT5nZXROYW1lKCkuc3RyaW5nKCksIHJlcyk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgCisgICAgSW5wdXRFdmVudCogbXlFdmVudCA9IE5VTEw7CisgICAgcmVzID0gcXVldWUtPmNvbnN1bWUoJm15RXZlbnQpOworICAgIGlmIChyZXMgIT0gYW5kcm9pZDo6T0spIHsKKyAgICAgICAgTE9HVygiY2hhbm5lbCAnJXMnIH4gRmFpbGVkIHRvIGNvbnN1bWUgaW5wdXQgZXZlbnQuICBzdGF0dXM9JWQiLAorICAgICAgICAgICAgICAgIHF1ZXVlLT5nZXRDb25zdW1lcigpLmdldENoYW5uZWwoKS0+Z2V0TmFtZSgpLnN0cmluZygpLCByZXMpOworICAgICAgICBxdWV1ZS0+Z2V0Q29uc3VtZXIoKS5zZW5kRmluaXNoZWRTaWduYWwoKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICAKKyAgICAqb3V0RXZlbnQgPSBteUV2ZW50OworICAgIHJldHVybiAwOworfQorCit2b2lkIEFJbnB1dFF1ZXVlX2ZpbmlzaEV2ZW50KEFJbnB1dFF1ZXVlKiBxdWV1ZSwgQUlucHV0RXZlbnQqIGV2ZW50LAorICAgICAgICBpbnQgaGFuZGxlZCkgeworICAgIGlmICghaGFuZGxlZCAmJiAoKElucHV0RXZlbnQqKWV2ZW50KS0+Z2V0VHlwZSgpID09IElOUFVUX0VWRU5UX1RZUEVfS0VZCisgICAgICAgICAgICAmJiAoKEtleUV2ZW50KilldmVudCktPmhhc0RlZmF1bHRBY3Rpb24oKSkgeworICAgICAgICAvLyBUaGUgYXBwIGRpZG4ndCBoYW5kbGUgdGhpcywgYnV0IGl0IG1heSBoYXZlIGEgZGVmYXVsdCBhY3Rpb24KKyAgICAgICAgLy8gYXNzb2NpYXRlZCB3aXRoIGl0LiAgV2UgbmVlZCB0byBoYW5kIHRoaXMgYmFjayB0byBKYXZhIHRvIGJlCisgICAgICAgIC8vIGV4ZWN1dGVkLgorICAgICAgICBxdWV1ZS0+ZG9EZWZhdWx0S2V5KChLZXlFdmVudCopZXZlbnQpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIAorICAgIGludDMyX3QgcmVzID0gcXVldWUtPmdldENvbnN1bWVyKCkuc2VuZEZpbmlzaGVkU2lnbmFsKCk7CisgICAgaWYgKHJlcyAhPSBhbmRyb2lkOjpPSykgeworICAgICAgICBMT0dXKCJGYWlsZWQgdG8gc2VuZCBmaW5pc2hlZCBzaWduYWwgb24gY2hhbm5lbCAnJXMnLiAgc3RhdHVzPSVkIiwKKyAgICAgICAgICAgICAgICBxdWV1ZS0+Z2V0Q29uc3VtZXIoKS5nZXRDaGFubmVsKCktPmdldE5hbWUoKS5zdHJpbmcoKSwgcmVzKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9uYXRpdmUvYW5kcm9pZC9sb29wZXIuY3BwIGIvbmF0aXZlL2FuZHJvaWQvbG9vcGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNTY0YzQ3Ci0tLSAvZGV2L251bGwKKysrIGIvbmF0aXZlL2FuZHJvaWQvbG9vcGVyLmNwcApAQCAtMCwwICsxLDgyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2RlZmluZSBMT0dfVEFHICJBTG9vcGVyIgorI2luY2x1ZGUgPHV0aWxzL0xvZy5oPgorCisjaW5jbHVkZSA8YW5kcm9pZC9sb29wZXIuaD4KKyNpbmNsdWRlIDx1dGlscy9Qb2xsTG9vcC5oPgorCit1c2luZyBhbmRyb2lkOjpQb2xsTG9vcDsKK3VzaW5nIGFuZHJvaWQ6OnNwOworCitBTG9vcGVyKiBBTG9vcGVyX2ZvclRocmVhZCgpIHsKKyAgICByZXR1cm4gUG9sbExvb3A6OmdldEZvclRocmVhZCgpLmdldCgpOworfQorCitBTG9vcGVyKiBBTG9vcGVyX3ByZXBhcmUoaW50MzJfdCBvcHRzKSB7CisgICAgYm9vbCBhbGxvd0ZkcyA9IChvcHRzJkFMT09QRVJfUFJFUEFSRV9BTExPV19OT05fQ0FMTEJBQ0tTKSAhPSAwOworICAgIHNwPFBvbGxMb29wPiBsb29wID0gUG9sbExvb3A6OmdldEZvclRocmVhZCgpOworICAgIGlmIChsb29wID09IE5VTEwpIHsKKyAgICAgICAgbG9vcCA9IG5ldyBQb2xsTG9vcChhbGxvd0Zkcyk7CisgICAgICAgIFBvbGxMb29wOjpzZXRGb3JUaHJlYWQobG9vcCk7CisgICAgfQorICAgIGlmIChsb29wLT5nZXRBbGxvd05vbkNhbGxiYWNrcygpICE9IGFsbG93RmRzKSB7CisgICAgICAgIExPR1coIkFMb29wZXJfcHJlcGFyZSBhZ2FpbiB3aXRoIGRpZmZlcmVudCBBTE9PUEVSX1BSRVBBUkVfQUxMT1dfTk9OX0NBTExCQUNLUyIpOworICAgIH0KKyAgICByZXR1cm4gbG9vcC5nZXQoKTsKK30KKworaW50MzJfdCBBTG9vcGVyX3BvbGxPbmNlKGludCB0aW1lb3V0TWlsbGlzLCBpbnQqIG91dEV2ZW50cywgdm9pZCoqIG91dERhdGEpIHsKKyAgICBzcDxQb2xsTG9vcD4gbG9vcCA9IFBvbGxMb29wOjpnZXRGb3JUaHJlYWQoKTsKKyAgICBpZiAobG9vcCA9PSBOVUxMKSB7CisgICAgICAgIExPR1coIkFMb29wZXJfcG9sbE9uY2U6IE5vIGxvb3BlciBmb3IgdGhpcyB0aHJlYWQhIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIGxvb3AtPnBvbGxPbmNlKHRpbWVvdXRNaWxsaXMsIG91dEV2ZW50cywgb3V0RGF0YSk7Cit9CisKK2ludDMyX3QgQUxvb3Blcl9wb2xsQWxsKGludCB0aW1lb3V0TWlsbGlzLCBpbnQqIG91dEV2ZW50cywgdm9pZCoqIG91dERhdGEpIHsKKyAgICBzcDxQb2xsTG9vcD4gbG9vcCA9IFBvbGxMb29wOjpnZXRGb3JUaHJlYWQoKTsKKyAgICBpZiAobG9vcCA9PSBOVUxMKSB7CisgICAgICAgIExPR1coIkFMb29wZXJfcG9sbE9uY2U6IE5vIGxvb3BlciBmb3IgdGhpcyB0aHJlYWQhIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgCisgICAgaW50MzJfdCByZXN1bHQ7CisgICAgd2hpbGUgKChyZXN1bHQgPSBsb29wLT5wb2xsT25jZSh0aW1lb3V0TWlsbGlzLCBvdXRFdmVudHMsIG91dERhdGEpKSA9PSBBTE9PUEVSX1BPTExfQ0FMTEJBQ0spIHsKKyAgICAgICAgOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit2b2lkIEFMb29wZXJfYWNxdWlyZShBTG9vcGVyKiBsb29wZXIpIHsKKyAgICBzdGF0aWNfY2FzdDxQb2xsTG9vcCo+KGxvb3BlciktPmluY1N0cm9uZygodm9pZCopQUxvb3Blcl9hY3F1aXJlKTsKK30KKwordm9pZCBBTG9vcGVyX3JlbGVhc2UoQUxvb3BlciogbG9vcGVyKSB7CisgICAgc3RhdGljX2Nhc3Q8UG9sbExvb3AqPihsb29wZXIpLT5kZWNTdHJvbmcoKHZvaWQqKUFMb29wZXJfYWNxdWlyZSk7Cit9CisKK3ZvaWQgQUxvb3Blcl9hZGRGZChBTG9vcGVyKiBsb29wZXIsIGludCBmZCwgaW50IGV2ZW50cywKKyAgICAgICAgQUxvb3Blcl9jYWxsYmFja0Z1bmMqIGNhbGxiYWNrLCB2b2lkKiBkYXRhKSB7CisgICAgc3RhdGljX2Nhc3Q8UG9sbExvb3AqPihsb29wZXIpLT5zZXRMb29wZXJDYWxsYmFjayhmZCwgZXZlbnRzLCBjYWxsYmFjaywgZGF0YSk7Cit9CisKK2ludDMyX3QgQUxvb3Blcl9yZW1vdmVGZChBTG9vcGVyKiBsb29wZXIsIGludCBmZCkgeworICAgIHJldHVybiBzdGF0aWNfY2FzdDxQb2xsTG9vcCo+KGxvb3BlciktPnJlbW92ZUNhbGxiYWNrKGZkKSA/IDEgOiAwOworfQpkaWZmIC0tZ2l0IGEvbmF0aXZlL2FuZHJvaWQvbmF0aXZlX2FjdGl2aXR5LmNwcCBiL25hdGl2ZS9hbmRyb2lkL25hdGl2ZV9hY3Rpdml0eS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTA5Y2MzMwotLS0gL2Rldi9udWxsCisrKyBiL25hdGl2ZS9hbmRyb2lkL25hdGl2ZV9hY3Rpdml0eS5jcHAKQEAgLTAsMCArMSwzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNkZWZpbmUgTE9HX1RBRyAibmF0aXZlX2FjdGl2aXR5IgorI2luY2x1ZGUgPHV0aWxzL0xvZy5oPgorCisjaW5jbHVkZSA8YW5kcm9pZF9ydW50aW1lL2FuZHJvaWRfYXBwX05hdGl2ZUFjdGl2aXR5Lmg+CisKK3VzaW5nIG5hbWVzcGFjZSBhbmRyb2lkOworCit2b2lkIEFOYXRpdmVBY3Rpdml0eV9zZXRXaW5kb3dGb3JtYXQoQU5hdGl2ZUFjdGl2aXR5KiBhY3Rpdml0eSwgaW50MzJfdCBmb3JtYXQpIHsKKwlhbmRyb2lkX05hdGl2ZUFjdGl2aXR5X3NldFdpbmRvd0Zvcm1hdChhY3Rpdml0eSwgZm9ybWF0KTsKK30KKwordm9pZCBBTmF0aXZlQWN0aXZpdHlfc2V0V2luZG93RmxhZ3MoQU5hdGl2ZUFjdGl2aXR5KiBhY3Rpdml0eSwKKwkJdWludDMyX3QgYWRkRmxhZ3MsIHVpbnQzMl90IHJlbW92ZUZsYWdzKSB7CisJYW5kcm9pZF9OYXRpdmVBY3Rpdml0eV9zZXRXaW5kb3dGbGFncyhhY3Rpdml0eSwgYWRkRmxhZ3MsIGFkZEZsYWdzfHJlbW92ZUZsYWdzKTsKK30KZGlmZiAtLWdpdCBhL25hdGl2ZS9hbmRyb2lkL25hdGl2ZV93aW5kb3cuY3BwIGIvbmF0aXZlL2FuZHJvaWQvbmF0aXZlX3dpbmRvdy5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmFkYTA3OAotLS0gL2Rldi9udWxsCisrKyBiL25hdGl2ZS9hbmRyb2lkL25hdGl2ZV93aW5kb3cuY3BwCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjZGVmaW5lIExPR19UQUcgIlN1cmZhY2UiCisjaW5jbHVkZSA8dXRpbHMvTG9nLmg+CisKKyNpbmNsdWRlIDxhbmRyb2lkL25hdGl2ZV93aW5kb3dfam5pLmg+CisjaW5jbHVkZSA8c3VyZmFjZWZsaW5nZXIvU3VyZmFjZS5oPgorI2luY2x1ZGUgPGFuZHJvaWRfcnVudGltZS9hbmRyb2lkX3ZpZXdfU3VyZmFjZS5oPgorCit1c2luZyBuYW1lc3BhY2UgYW5kcm9pZDsKKworQU5hdGl2ZVdpbmRvdyogQU5hdGl2ZVdpbmRvd19mcm9tU3VyZmFjZShKTklFbnYqIGVudiwgam9iamVjdCBzdXJmYWNlKSB7CisgICAgc3A8QU5hdGl2ZVdpbmRvdz4gd2luID0gYW5kcm9pZF9TdXJmYWNlX2dldE5hdGl2ZVdpbmRvdyhlbnYsIHN1cmZhY2UpOworICAgIGlmICh3aW4gIT0gTlVMTCkgeworICAgICAgICB3aW4tPmluY1N0cm9uZygodm9pZCopQU5hdGl2ZVdpbmRvd19hY3F1aXJlKTsKKyAgICB9CisgICAgcmV0dXJuIHdpbi5nZXQoKTsKK30KKwordm9pZCBBTmF0aXZlV2luZG93X2FjcXVpcmUoQU5hdGl2ZVdpbmRvdyogd2luZG93KSB7CisgICAgd2luZG93LT5pbmNTdHJvbmcoKHZvaWQqKUFOYXRpdmVXaW5kb3dfYWNxdWlyZSk7Cit9CisKK3ZvaWQgQU5hdGl2ZVdpbmRvd19yZWxlYXNlKEFOYXRpdmVXaW5kb3cqIHdpbmRvdykgeworICAgIHdpbmRvdy0+ZGVjU3Ryb25nKCh2b2lkKilBTmF0aXZlV2luZG93X2FjcXVpcmUpOworfQorCitzdGF0aWMgaW50MzJfdCBnZXRXaW5kb3dQcm9wKEFOYXRpdmVXaW5kb3cqIHdpbmRvdywgaW50IHdoYXQpIHsKKyAgICBpbnQgdmFsdWU7CisgICAgaW50IHJlcyA9IHdpbmRvdy0+cXVlcnkod2luZG93LCB3aGF0LCAmdmFsdWUpOworICAgIHJldHVybiByZXMgPCAwID8gcmVzIDogdmFsdWU7Cit9CisKK2ludDMyX3QgQU5hdGl2ZVdpbmRvd19nZXRXaWR0aChBTmF0aXZlV2luZG93KiB3aW5kb3cpIHsKKyAgICByZXR1cm4gZ2V0V2luZG93UHJvcCh3aW5kb3csIE5BVElWRV9XSU5ET1dfV0lEVEgpOworfQorCitpbnQzMl90IEFOYXRpdmVXaW5kb3dfZ2V0SGVpZ2h0KEFOYXRpdmVXaW5kb3cqIHdpbmRvdykgeworICAgIHJldHVybiBnZXRXaW5kb3dQcm9wKHdpbmRvdywgTkFUSVZFX1dJTkRPV19IRUlHSFQpOworfQorCitpbnQzMl90IEFOYXRpdmVXaW5kb3dfZ2V0Rm9ybWF0KEFOYXRpdmVXaW5kb3cqIHdpbmRvdykgeworICAgIHJldHVybiBnZXRXaW5kb3dQcm9wKHdpbmRvdywgTkFUSVZFX1dJTkRPV19GT1JNQVQpOworfQorCitpbnQzMl90IEFOYXRpdmVXaW5kb3dfc2V0QnVmZmVyc0dlb21ldHJ5KEFOYXRpdmVXaW5kb3cqIHdpbmRvdywgaW50MzJfdCB3aWR0aCwKKyAgICAgICAgaW50MzJfdCBoZWlnaHQpIHsKKyAgICBuYXRpdmVfd2luZG93X3NldF9idWZmZXJzX2dlb21ldHJ5KHdpbmRvdywgd2lkdGgsIGhlaWdodCwgMCk7CisgICAgcmV0dXJuIDA7Cit9CisKK2ludDMyX3QgQU5hdGl2ZVdpbmRvd19sb2NrKEFOYXRpdmVXaW5kb3cqIHdpbmRvdywgQU5hdGl2ZVdpbmRvd19CdWZmZXIqIG91dEJ1ZmZlciwKKyAgICAgICAgQVJlY3QqIGluT3V0RGlydHlCb3VuZHMpIHsKKyAgICBSZWdpb24gZGlydHlSZWdpb247CisgICAgUmVnaW9uKiBkaXJ0eVBhcmFtID0gTlVMTDsKKyAgICBpZiAoaW5PdXREaXJ0eUJvdW5kcyAhPSBOVUxMKSB7CisgICAgICAgIGRpcnR5UmVnaW9uLnNldCgqKFJlY3QqKWluT3V0RGlydHlCb3VuZHMpOworICAgICAgICBkaXJ0eVBhcmFtID0gJmRpcnR5UmVnaW9uOworICAgIH0KKyAgICAKKyAgICBTdXJmYWNlOjpTdXJmYWNlSW5mbyBpbmZvOworICAgIHN0YXR1c190IHJlcyA9IHN0YXRpY19jYXN0PFN1cmZhY2UqPih3aW5kb3cpLT5sb2NrKCZpbmZvLCBkaXJ0eVBhcmFtKTsKKyAgICBpZiAocmVzICE9IE9LKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgCisgICAgb3V0QnVmZmVyLT53aWR0aCA9IChpbnQzMl90KWluZm8udzsKKyAgICBvdXRCdWZmZXItPmhlaWdodCA9IChpbnQzMl90KWluZm8uaDsKKyAgICBvdXRCdWZmZXItPnN0cmlkZSA9IChpbnQzMl90KWluZm8uczsKKyAgICBvdXRCdWZmZXItPmZvcm1hdCA9IChpbnQzMl90KWluZm8uZm9ybWF0OworICAgIG91dEJ1ZmZlci0+Yml0cyA9IGluZm8uYml0czsKKyAgICAKKyAgICBpZiAoaW5PdXREaXJ0eUJvdW5kcyAhPSBOVUxMKSB7CisgICAgICAgICppbk91dERpcnR5Qm91bmRzID0gZGlydHlSZWdpb24uZ2V0Qm91bmRzKCk7CisgICAgfQorICAgIAorICAgIHJldHVybiAwOworfQorCitpbnQzMl90IEFOYXRpdmVXaW5kb3dfdW5sb2NrQW5kUG9zdChBTmF0aXZlV2luZG93KiB3aW5kb3cpIHsKKyAgICBzdGF0dXNfdCByZXMgPSBzdGF0aWNfY2FzdDxTdXJmYWNlKj4od2luZG93KS0+dW5sb2NrQW5kUG9zdCgpOworICAgIHJldHVybiByZXMgPT0gYW5kcm9pZDo6T0sgPyAwIDogLTE7Cit9CmRpZmYgLS1naXQgYS9uYXRpdmUvZ2x1ZS90aHJlYWRlZF9hcHAvQW5kcm9pZC5tayBiL25hdGl2ZS9nbHVlL3RocmVhZGVkX2FwcC9BbmRyb2lkLm1rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmYzliMmEKLS0tIC9kZXYvbnVsbAorKysgYi9uYXRpdmUvZ2x1ZS90aHJlYWRlZF9hcHAvQW5kcm9pZC5tawpAQCAtMCwwICsxLDE4IEBACitCQVNFX1BBVEggOj0gJChjYWxsIG15LWRpcikKK0xPQ0FMX1BBVEg6PSAkKGNhbGwgbXktZGlyKQorCitpbmNsdWRlICQoQ0xFQVJfVkFSUykKKworIyBvdXIgc291cmNlIGZpbGVzCisjCitMT0NBTF9TUkNfRklMRVM6PSBcCisgICAgdGhyZWFkZWRfYXBwLmMKKworTE9DQUxfQ19JTkNMVURFUyArPSBcCisgICAgZnJhbWV3b3Jrcy9iYXNlL25hdGl2ZS9pbmNsdWRlIFwKKyAgICBmcmFtZXdvcmtzL2Jhc2UvY29yZS9qbmkvYW5kcm9pZCBcCisgICAgZGFsdmlrL2xpYm5hdGl2ZWhlbHBlci9pbmNsdWRlL25hdGl2ZWhlbHBlcgorCitMT0NBTF9NT0RVTEU6PSBsaWJ0aHJlYWRlZF9hcHAKKworaW5jbHVkZSAkKEJVSUxEX1NUQVRJQ19MSUJSQVJZKQpkaWZmIC0tZ2l0IGEvbmF0aXZlL2dsdWUvdGhyZWFkZWRfYXBwL3RocmVhZGVkX2FwcC5jIGIvbmF0aXZlL2dsdWUvdGhyZWFkZWRfYXBwL3RocmVhZGVkX2FwcC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0MTFlOTMKLS0tIC9kZXYvbnVsbAorKysgYi9uYXRpdmUvZ2x1ZS90aHJlYWRlZF9hcHAvdGhyZWFkZWRfYXBwLmMKQEAgLTAsMCArMSwyNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqCisgKi8KKworI2luY2x1ZGUgPGpuaS5oPgorCisjaW5jbHVkZSA8ZXJybm8uaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyNpbmNsdWRlIDxzeXMvcmVzb3VyY2UuaD4KKworI2luY2x1ZGUgPGFuZHJvaWRfZ2x1ZS90aHJlYWRlZF9hcHAuaD4KKworI2luY2x1ZGUgPGFuZHJvaWQvbG9nLmg+CisKKyNkZWZpbmUgTE9HSSguLi4pICgodm9pZClfX2FuZHJvaWRfbG9nX3ByaW50KEFORFJPSURfTE9HX0lORk8sICJ0aHJlYWRlZF9hcHAiLCBfX1ZBX0FSR1NfXykpCisjZGVmaW5lIExPR1coLi4uKSAoKHZvaWQpX19hbmRyb2lkX2xvZ19wcmludChBTkRST0lEX0xPR19XQVJOLCAidGhyZWFkZWRfYXBwIiwgX19WQV9BUkdTX18pKQorCitpbnQ4X3QgYW5kcm9pZF9hcHBfcmVhZF9jbWQoc3RydWN0IGFuZHJvaWRfYXBwKiBhbmRyb2lkX2FwcCkgeworICAgIGludDhfdCBjbWQ7CisgICAgaWYgKHJlYWQoYW5kcm9pZF9hcHAtPm1zZ3JlYWQsICZjbWQsIHNpemVvZihjbWQpKSA9PSBzaXplb2YoY21kKSkgeworICAgICAgICByZXR1cm4gY21kOworICAgIH0gZWxzZSB7CisgICAgICAgIExPR1coIk5vIGRhdGEgb24gY29tbWFuZCBwaXBlISIpOworICAgIH0KKyAgICByZXR1cm4gLTE7Cit9CisKK2ludDMyX3QgYW5kcm9pZF9hcHBfZXhlY19jbWQoc3RydWN0IGFuZHJvaWRfYXBwKiBhbmRyb2lkX2FwcCwgaW50OF90IGNtZCkgeworICAgIHN3aXRjaCAoY21kKSB7CisgICAgICAgIGNhc2UgQVBQX0NNRF9JTlBVVF9DSEFOR0VEOgorICAgICAgICAgICAgTE9HSSgiQVBQX0NNRF9JTlBVVF9DSEFOR0VEXG4iKTsKKyAgICAgICAgICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmYW5kcm9pZF9hcHAtPm11dGV4KTsKKyAgICAgICAgICAgIGlmIChhbmRyb2lkX2FwcC0+aW5wdXRRdWV1ZSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgQUlucHV0UXVldWVfZGV0YWNoTG9vcGVyKGFuZHJvaWRfYXBwLT5pbnB1dFF1ZXVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFuZHJvaWRfYXBwLT5pbnB1dFF1ZXVlID0gYW5kcm9pZF9hcHAtPnBlbmRpbmdJbnB1dFF1ZXVlOworICAgICAgICAgICAgaWYgKGFuZHJvaWRfYXBwLT5pbnB1dFF1ZXVlICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBMT0dJKCJBdHRhY2hpbmcgaW5wdXQgcXVldWUgdG8gbG9vcGVyIik7CisgICAgICAgICAgICAgICAgQUlucHV0UXVldWVfYXR0YWNoTG9vcGVyKGFuZHJvaWRfYXBwLT5pbnB1dFF1ZXVlLAorICAgICAgICAgICAgICAgICAgICAgICAgYW5kcm9pZF9hcHAtPmxvb3BlciwgTlVMTCwgKHZvaWQqKUxPT1BFUl9JRF9FVkVOVCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwdGhyZWFkX2NvbmRfYnJvYWRjYXN0KCZhbmRyb2lkX2FwcC0+Y29uZCk7CisgICAgICAgICAgICBwdGhyZWFkX211dGV4X3VubG9jaygmYW5kcm9pZF9hcHAtPm11dGV4KTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgQVBQX0NNRF9XSU5ET1dfQ0hBTkdFRDoKKyAgICAgICAgICAgIExPR0koIkFQUF9DTURfV0lORE9XX0NIQU5HRURcbiIpOworICAgICAgICAgICAgcHRocmVhZF9tdXRleF9sb2NrKCZhbmRyb2lkX2FwcC0+bXV0ZXgpOworICAgICAgICAgICAgYW5kcm9pZF9hcHAtPndpbmRvdyA9IGFuZHJvaWRfYXBwLT5wZW5kaW5nV2luZG93OworICAgICAgICAgICAgcHRocmVhZF9jb25kX2Jyb2FkY2FzdCgmYW5kcm9pZF9hcHAtPmNvbmQpOworICAgICAgICAgICAgcHRocmVhZF9tdXRleF91bmxvY2soJmFuZHJvaWRfYXBwLT5tdXRleCk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIEFQUF9DTURfU1RBUlQ6CisgICAgICAgIGNhc2UgQVBQX0NNRF9SRVNVTUU6CisgICAgICAgIGNhc2UgQVBQX0NNRF9QQVVTRToKKyAgICAgICAgY2FzZSBBUFBfQ01EX1NUT1A6CisgICAgICAgICAgICBMT0dJKCJhY3Rpdml0eVN0YXRlPSVkXG4iLCBjbWQpOworICAgICAgICAgICAgcHRocmVhZF9tdXRleF9sb2NrKCZhbmRyb2lkX2FwcC0+bXV0ZXgpOworICAgICAgICAgICAgYW5kcm9pZF9hcHAtPmFjdGl2aXR5U3RhdGUgPSBjbWQ7CisgICAgICAgICAgICBwdGhyZWFkX2NvbmRfYnJvYWRjYXN0KCZhbmRyb2lkX2FwcC0+Y29uZCk7CisgICAgICAgICAgICBwdGhyZWFkX211dGV4X3VubG9jaygmYW5kcm9pZF9hcHAtPm11dGV4KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgCisgICAgICAgIGNhc2UgQVBQX0NNRF9ERVNUUk9ZOgorICAgICAgICAgICAgTE9HSSgiQVBQX0NNRF9ERVNUUk9ZXG4iKTsKKyAgICAgICAgICAgIGFuZHJvaWRfYXBwLT5kZXN0cm95UmVxdWVzdGVkID0gMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICAKKyAgICByZXR1cm4gYW5kcm9pZF9hcHAtPmRlc3Ryb3lSZXF1ZXN0ZWQgPyAwIDogMTsKK30KKworc3RhdGljIHZvaWQgYW5kcm9pZF9hcHBfZGVzdHJveShzdHJ1Y3QgYW5kcm9pZF9hcHAqIGFuZHJvaWRfYXBwKSB7CisgICAgTE9HSSgiYW5kcm9pZF9hcHBfZGVzdHJveSEiKTsKKyAgICBwdGhyZWFkX211dGV4X2xvY2soJmFuZHJvaWRfYXBwLT5tdXRleCk7CisgICAgaWYgKGFuZHJvaWRfYXBwLT5pbnB1dFF1ZXVlICE9IE5VTEwpIHsKKyAgICAgICAgQUlucHV0UXVldWVfZGV0YWNoTG9vcGVyKGFuZHJvaWRfYXBwLT5pbnB1dFF1ZXVlKTsKKyAgICB9CisgICAgYW5kcm9pZF9hcHAtPmRlc3Ryb3llZCA9IDE7CisgICAgcHRocmVhZF9jb25kX2Jyb2FkY2FzdCgmYW5kcm9pZF9hcHAtPmNvbmQpOworICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZhbmRyb2lkX2FwcC0+bXV0ZXgpOworICAgIC8vIENhbid0IHRvdWNoIGFuZHJvaWRfYXBwIG9iamVjdCBhZnRlciB0aGlzLgorfQorCitzdGF0aWMgdm9pZCogYW5kcm9pZF9hcHBfZW50cnkodm9pZCogcGFyYW0pIHsKKyAgICBzdHJ1Y3QgYW5kcm9pZF9hcHAqIGFuZHJvaWRfYXBwID0gKHN0cnVjdCBhbmRyb2lkX2FwcCopcGFyYW07CisgICAgCisgICAgQUxvb3BlciogbG9vcGVyID0gQUxvb3Blcl9wcmVwYXJlKEFMT09QRVJfUFJFUEFSRV9BTExPV19OT05fQ0FMTEJBQ0tTKTsKKyAgICBBTG9vcGVyX2FkZEZkKGxvb3BlciwgYW5kcm9pZF9hcHAtPm1zZ3JlYWQsIFBPTExJTiwgTlVMTCwgKHZvaWQqKUxPT1BFUl9JRF9NQUlOKTsKKyAgICBhbmRyb2lkX2FwcC0+bG9vcGVyID0gbG9vcGVyOworICAgIAorICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmYW5kcm9pZF9hcHAtPm11dGV4KTsKKyAgICBhbmRyb2lkX2FwcC0+cnVubmluZyA9IDE7CisgICAgcHRocmVhZF9jb25kX2Jyb2FkY2FzdCgmYW5kcm9pZF9hcHAtPmNvbmQpOworICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZhbmRyb2lkX2FwcC0+bXV0ZXgpOworICAgIAorICAgIGFuZHJvaWRfbWFpbihhbmRyb2lkX2FwcCk7CisgICAgCisgICAgYW5kcm9pZF9hcHBfZGVzdHJveShhbmRyb2lkX2FwcCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBOYXRpdmUgYWN0aXZpdHkgaW50ZXJhY3Rpb24gKGNhbGxlZCBmcm9tIG1haW4gdGhyZWFkKQorLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworc3RhdGljIHN0cnVjdCBhbmRyb2lkX2FwcCogYW5kcm9pZF9hcHBfY3JlYXRlKEFOYXRpdmVBY3Rpdml0eSogYWN0aXZpdHkpIHsKKyAgICBzdHJ1Y3QgYW5kcm9pZF9hcHAqIGFuZHJvaWRfYXBwID0gKHN0cnVjdCBhbmRyb2lkX2FwcCopbWFsbG9jKHNpemVvZihzdHJ1Y3QgYW5kcm9pZF9hcHApKTsKKyAgICBtZW1zZXQoYW5kcm9pZF9hcHAsIDAsIHNpemVvZihzdHJ1Y3QgYW5kcm9pZF9hcHApKTsKKyAgICBhbmRyb2lkX2FwcC0+YWN0aXZpdHkgPSBhY3Rpdml0eTsKKyAgICAKKyAgICBwdGhyZWFkX211dGV4X2luaXQoJmFuZHJvaWRfYXBwLT5tdXRleCwgTlVMTCk7CisgICAgcHRocmVhZF9jb25kX2luaXQoJmFuZHJvaWRfYXBwLT5jb25kLCBOVUxMKTsKKyAgICAKKyAgICBpbnQgbXNncGlwZVsyXTsKKyAgICBpZiAocGlwZShtc2dwaXBlKSkgeworICAgICAgICBMT0dJKCJjb3VsZCBub3QgY3JlYXRlIHBpcGU6ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICB9CisgICAgYW5kcm9pZF9hcHAtPm1zZ3JlYWQgPSBtc2dwaXBlWzBdOworICAgIGFuZHJvaWRfYXBwLT5tc2d3cml0ZSA9IG1zZ3BpcGVbMV07CisgICAgCisgICAgcHRocmVhZF9hdHRyX3QgYXR0cjsgCisgICAgcHRocmVhZF9hdHRyX2luaXQoJmF0dHIpOworICAgIHB0aHJlYWRfYXR0cl9zZXRkZXRhY2hzdGF0ZSgmYXR0ciwgUFRIUkVBRF9DUkVBVEVfREVUQUNIRUQpOworICAgIHB0aHJlYWRfY3JlYXRlKCZhbmRyb2lkX2FwcC0+dGhyZWFkLCAmYXR0ciwgYW5kcm9pZF9hcHBfZW50cnksIGFuZHJvaWRfYXBwKTsKKyAgICAKKyAgICAvLyBXYWl0IGZvciB0aHJlYWQgdG8gc3RhcnQuCisgICAgcHRocmVhZF9tdXRleF9sb2NrKCZhbmRyb2lkX2FwcC0+bXV0ZXgpOworICAgIHdoaWxlICghYW5kcm9pZF9hcHAtPnJ1bm5pbmcpIHsKKyAgICAgICAgcHRocmVhZF9jb25kX3dhaXQoJmFuZHJvaWRfYXBwLT5jb25kLCAmYW5kcm9pZF9hcHAtPm11dGV4KTsKKyAgICB9CisgICAgcHRocmVhZF9tdXRleF91bmxvY2soJmFuZHJvaWRfYXBwLT5tdXRleCk7CisgICAgCisgICAgcmV0dXJuIGFuZHJvaWRfYXBwOworfQorCitzdGF0aWMgdm9pZCBhbmRyb2lkX2FwcF93cml0ZV9jbWQoc3RydWN0IGFuZHJvaWRfYXBwKiBhbmRyb2lkX2FwcCwgaW50OF90IGNtZCkgeworICAgIGlmICh3cml0ZShhbmRyb2lkX2FwcC0+bXNnd3JpdGUsICZjbWQsIHNpemVvZihjbWQpKSAhPSBzaXplb2YoY21kKSkgeworICAgICAgICBMT0dJKCJGYWlsdXJlIHdyaXRpbmcgYW5kcm9pZF9hcHAgY21kOiAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGFuZHJvaWRfYXBwX3NldF9pbnB1dChzdHJ1Y3QgYW5kcm9pZF9hcHAqIGFuZHJvaWRfYXBwLCBBSW5wdXRRdWV1ZSogaW5wdXRRdWV1ZSkgeworICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmYW5kcm9pZF9hcHAtPm11dGV4KTsKKyAgICBhbmRyb2lkX2FwcC0+cGVuZGluZ0lucHV0UXVldWUgPSBpbnB1dFF1ZXVlOworICAgIGFuZHJvaWRfYXBwX3dyaXRlX2NtZChhbmRyb2lkX2FwcCwgQVBQX0NNRF9JTlBVVF9DSEFOR0VEKTsKKyAgICB3aGlsZSAoYW5kcm9pZF9hcHAtPmlucHV0UXVldWUgIT0gYW5kcm9pZF9hcHAtPnBlbmRpbmdJbnB1dFF1ZXVlKSB7CisgICAgICAgIHB0aHJlYWRfY29uZF93YWl0KCZhbmRyb2lkX2FwcC0+Y29uZCwgJmFuZHJvaWRfYXBwLT5tdXRleCk7CisgICAgfQorICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZhbmRyb2lkX2FwcC0+bXV0ZXgpOworfQorCitzdGF0aWMgdm9pZCBhbmRyb2lkX2FwcF9zZXRfd2luZG93KHN0cnVjdCBhbmRyb2lkX2FwcCogYW5kcm9pZF9hcHAsIEFOYXRpdmVXaW5kb3cqIHdpbmRvdykgeworICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmYW5kcm9pZF9hcHAtPm11dGV4KTsKKyAgICBhbmRyb2lkX2FwcC0+cGVuZGluZ1dpbmRvdyA9IHdpbmRvdzsKKyAgICBhbmRyb2lkX2FwcF93cml0ZV9jbWQoYW5kcm9pZF9hcHAsIEFQUF9DTURfV0lORE9XX0NIQU5HRUQpOworICAgIHdoaWxlIChhbmRyb2lkX2FwcC0+d2luZG93ICE9IGFuZHJvaWRfYXBwLT5wZW5kaW5nV2luZG93KSB7CisgICAgICAgIHB0aHJlYWRfY29uZF93YWl0KCZhbmRyb2lkX2FwcC0+Y29uZCwgJmFuZHJvaWRfYXBwLT5tdXRleCk7CisgICAgfQorICAgIHB0aHJlYWRfbXV0ZXhfdW5sb2NrKCZhbmRyb2lkX2FwcC0+bXV0ZXgpOworfQorCitzdGF0aWMgdm9pZCBhbmRyb2lkX2FwcF9zZXRfYWN0aXZpdHlfc3RhdGUoc3RydWN0IGFuZHJvaWRfYXBwKiBhbmRyb2lkX2FwcCwgaW50OF90IGNtZCkgeworICAgIHB0aHJlYWRfbXV0ZXhfbG9jaygmYW5kcm9pZF9hcHAtPm11dGV4KTsKKyAgICBhbmRyb2lkX2FwcF93cml0ZV9jbWQoYW5kcm9pZF9hcHAsIGNtZCk7CisgICAgd2hpbGUgKGFuZHJvaWRfYXBwLT5hY3Rpdml0eVN0YXRlICE9IGNtZCkgeworICAgICAgICBwdGhyZWFkX2NvbmRfd2FpdCgmYW5kcm9pZF9hcHAtPmNvbmQsICZhbmRyb2lkX2FwcC0+bXV0ZXgpOworICAgIH0KKyAgICBwdGhyZWFkX211dGV4X3VubG9jaygmYW5kcm9pZF9hcHAtPm11dGV4KTsKK30KKworc3RhdGljIHZvaWQgYW5kcm9pZF9hcHBfZnJlZShzdHJ1Y3QgYW5kcm9pZF9hcHAqIGFuZHJvaWRfYXBwKSB7CisgICAgcHRocmVhZF9tdXRleF9sb2NrKCZhbmRyb2lkX2FwcC0+bXV0ZXgpOworICAgIGFuZHJvaWRfYXBwX3dyaXRlX2NtZChhbmRyb2lkX2FwcCwgQVBQX0NNRF9ERVNUUk9ZKTsKKyAgICB3aGlsZSAoIWFuZHJvaWRfYXBwLT5kZXN0cm95ZWQpIHsKKyAgICAgICAgcHRocmVhZF9jb25kX3dhaXQoJmFuZHJvaWRfYXBwLT5jb25kLCAmYW5kcm9pZF9hcHAtPm11dGV4KTsKKyAgICB9CisgICAgcHRocmVhZF9tdXRleF91bmxvY2soJmFuZHJvaWRfYXBwLT5tdXRleCk7CisgICAgCisgICAgY2xvc2UoYW5kcm9pZF9hcHAtPm1zZ3JlYWQpOworICAgIGNsb3NlKGFuZHJvaWRfYXBwLT5tc2d3cml0ZSk7CisgICAgcHRocmVhZF9jb25kX2Rlc3Ryb3koJmFuZHJvaWRfYXBwLT5jb25kKTsKKyAgICBwdGhyZWFkX211dGV4X2Rlc3Ryb3koJmFuZHJvaWRfYXBwLT5tdXRleCk7CisgICAgZnJlZShhbmRyb2lkX2FwcCk7Cit9CisKK3N0YXRpYyB2b2lkIG9uRGVzdHJveShBTmF0aXZlQWN0aXZpdHkqIGFjdGl2aXR5KSB7CisgICAgTE9HSSgiRGVzdHJveTogJXBcbiIsIGFjdGl2aXR5KTsKKyAgICBhbmRyb2lkX2FwcF9mcmVlKChzdHJ1Y3QgYW5kcm9pZF9hcHAqKWFjdGl2aXR5LT5pbnN0YW5jZSk7Cit9CisKK3N0YXRpYyB2b2lkIG9uU3RhcnQoQU5hdGl2ZUFjdGl2aXR5KiBhY3Rpdml0eSkgeworICAgIExPR0koIlN0YXJ0OiAlcFxuIiwgYWN0aXZpdHkpOworICAgIGFuZHJvaWRfYXBwX3NldF9hY3Rpdml0eV9zdGF0ZSgoc3RydWN0IGFuZHJvaWRfYXBwKilhY3Rpdml0eS0+aW5zdGFuY2UsIEFQUF9DTURfU1RBUlQpOworfQorCitzdGF0aWMgdm9pZCBvblJlc3VtZShBTmF0aXZlQWN0aXZpdHkqIGFjdGl2aXR5KSB7CisgICAgTE9HSSgiUmVzdW1lOiAlcFxuIiwgYWN0aXZpdHkpOworICAgIGFuZHJvaWRfYXBwX3NldF9hY3Rpdml0eV9zdGF0ZSgoc3RydWN0IGFuZHJvaWRfYXBwKilhY3Rpdml0eS0+aW5zdGFuY2UsIEFQUF9DTURfUkVTVU1FKTsKK30KKworc3RhdGljIHZvaWQqIG9uU2F2ZUluc3RhbmNlU3RhdGUoQU5hdGl2ZUFjdGl2aXR5KiBhY3Rpdml0eSwgc2l6ZV90KiBvdXRMZW4pIHsKKyAgICBMT0dJKCJTYXZlSW5zdGFuY2VTdGF0ZTogJXBcbiIsIGFjdGl2aXR5KTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIHZvaWQgb25QYXVzZShBTmF0aXZlQWN0aXZpdHkqIGFjdGl2aXR5KSB7CisgICAgTE9HSSgiUGF1c2U6ICVwXG4iLCBhY3Rpdml0eSk7CisgICAgYW5kcm9pZF9hcHBfc2V0X2FjdGl2aXR5X3N0YXRlKChzdHJ1Y3QgYW5kcm9pZF9hcHAqKWFjdGl2aXR5LT5pbnN0YW5jZSwgQVBQX0NNRF9QQVVTRSk7Cit9CisKK3N0YXRpYyB2b2lkIG9uU3RvcChBTmF0aXZlQWN0aXZpdHkqIGFjdGl2aXR5KSB7CisgICAgTE9HSSgiU3RvcDogJXBcbiIsIGFjdGl2aXR5KTsKKyAgICBhbmRyb2lkX2FwcF9zZXRfYWN0aXZpdHlfc3RhdGUoKHN0cnVjdCBhbmRyb2lkX2FwcCopYWN0aXZpdHktPmluc3RhbmNlLCBBUFBfQ01EX1NUT1ApOworfQorCitzdGF0aWMgdm9pZCBvbkxvd01lbW9yeShBTmF0aXZlQWN0aXZpdHkqIGFjdGl2aXR5KSB7CisgICAgTE9HSSgiTG93TWVtb3J5OiAlcFxuIiwgYWN0aXZpdHkpOworfQorCitzdGF0aWMgdm9pZCBvbldpbmRvd0ZvY3VzQ2hhbmdlZChBTmF0aXZlQWN0aXZpdHkqIGFjdGl2aXR5LCBpbnQgZm9jdXNlZCkgeworICAgIExPR0koIldpbmRvd0ZvY3VzQ2hhbmdlZDogJXAgLS0gJWRcbiIsIGFjdGl2aXR5LCBmb2N1c2VkKTsKKyAgICBhbmRyb2lkX2FwcF93cml0ZV9jbWQoKHN0cnVjdCBhbmRyb2lkX2FwcCopYWN0aXZpdHktPmluc3RhbmNlLAorICAgICAgICAgICAgZm9jdXNlZCA/IEFQUF9DTURfR0FJTkVEX0ZPQ1VTIDogQVBQX0NNRF9MT1NUX0ZPQ1VTKTsKK30KKworc3RhdGljIHZvaWQgb25OYXRpdmVXaW5kb3dDcmVhdGVkKEFOYXRpdmVBY3Rpdml0eSogYWN0aXZpdHksIEFOYXRpdmVXaW5kb3cqIHdpbmRvdykgeworICAgIExPR0koIk5hdGl2ZVdpbmRvd0NyZWF0ZWQ6ICVwIC0tICVwXG4iLCBhY3Rpdml0eSwgd2luZG93KTsKKyAgICBhbmRyb2lkX2FwcF9zZXRfd2luZG93KChzdHJ1Y3QgYW5kcm9pZF9hcHAqKWFjdGl2aXR5LT5pbnN0YW5jZSwgd2luZG93KTsKK30KKworc3RhdGljIHZvaWQgb25OYXRpdmVXaW5kb3dEZXN0cm95ZWQoQU5hdGl2ZUFjdGl2aXR5KiBhY3Rpdml0eSwgQU5hdGl2ZVdpbmRvdyogd2luZG93KSB7CisgICAgTE9HSSgiTmF0aXZlV2luZG93RGVzdHJveWVkOiAlcCAtLSAlcFxuIiwgYWN0aXZpdHksIHdpbmRvdyk7CisgICAgYW5kcm9pZF9hcHBfc2V0X3dpbmRvdygoc3RydWN0IGFuZHJvaWRfYXBwKilhY3Rpdml0eS0+aW5zdGFuY2UsIE5VTEwpOworfQorCitzdGF0aWMgdm9pZCBvbklucHV0UXVldWVDcmVhdGVkKEFOYXRpdmVBY3Rpdml0eSogYWN0aXZpdHksIEFJbnB1dFF1ZXVlKiBxdWV1ZSkgeworICAgIExPR0koIklucHV0UXVldWVDcmVhdGVkOiAlcCAtLSAlcFxuIiwgYWN0aXZpdHksIHF1ZXVlKTsKKyAgICBhbmRyb2lkX2FwcF9zZXRfaW5wdXQoKHN0cnVjdCBhbmRyb2lkX2FwcCopYWN0aXZpdHktPmluc3RhbmNlLCBxdWV1ZSk7Cit9CisKK3N0YXRpYyB2b2lkIG9uSW5wdXRRdWV1ZURlc3Ryb3llZChBTmF0aXZlQWN0aXZpdHkqIGFjdGl2aXR5LCBBSW5wdXRRdWV1ZSogcXVldWUpIHsKKyAgICBMT0dJKCJJbnB1dFF1ZXVlRGVzdHJveWVkOiAlcCAtLSAlcFxuIiwgYWN0aXZpdHksIHF1ZXVlKTsKKyAgICBhbmRyb2lkX2FwcF9zZXRfaW5wdXQoKHN0cnVjdCBhbmRyb2lkX2FwcCopYWN0aXZpdHktPmluc3RhbmNlLCBOVUxMKTsKK30KKwordm9pZCBBTmF0aXZlQWN0aXZpdHlfb25DcmVhdGUoQU5hdGl2ZUFjdGl2aXR5KiBhY3Rpdml0eSwKKyAgICAgICAgdm9pZCogc2F2ZWRTdGF0ZSwgc2l6ZV90IHNhdmVkU3RhdGVTaXplKSB7CisgICAgTE9HSSgiQ3JlYXRpbmc6ICVwXG4iLCBhY3Rpdml0eSk7CisgICAgYWN0aXZpdHktPmNhbGxiYWNrcy0+b25EZXN0cm95ID0gb25EZXN0cm95OworICAgIGFjdGl2aXR5LT5jYWxsYmFja3MtPm9uU3RhcnQgPSBvblN0YXJ0OworICAgIGFjdGl2aXR5LT5jYWxsYmFja3MtPm9uUmVzdW1lID0gb25SZXN1bWU7CisgICAgYWN0aXZpdHktPmNhbGxiYWNrcy0+b25TYXZlSW5zdGFuY2VTdGF0ZSA9IG9uU2F2ZUluc3RhbmNlU3RhdGU7CisgICAgYWN0aXZpdHktPmNhbGxiYWNrcy0+b25QYXVzZSA9IG9uUGF1c2U7CisgICAgYWN0aXZpdHktPmNhbGxiYWNrcy0+b25TdG9wID0gb25TdG9wOworICAgIGFjdGl2aXR5LT5jYWxsYmFja3MtPm9uTG93TWVtb3J5ID0gb25Mb3dNZW1vcnk7CisgICAgYWN0aXZpdHktPmNhbGxiYWNrcy0+b25XaW5kb3dGb2N1c0NoYW5nZWQgPSBvbldpbmRvd0ZvY3VzQ2hhbmdlZDsKKyAgICBhY3Rpdml0eS0+Y2FsbGJhY2tzLT5vbk5hdGl2ZVdpbmRvd0NyZWF0ZWQgPSBvbk5hdGl2ZVdpbmRvd0NyZWF0ZWQ7CisgICAgYWN0aXZpdHktPmNhbGxiYWNrcy0+b25OYXRpdmVXaW5kb3dEZXN0cm95ZWQgPSBvbk5hdGl2ZVdpbmRvd0Rlc3Ryb3llZDsKKyAgICBhY3Rpdml0eS0+Y2FsbGJhY2tzLT5vbklucHV0UXVldWVDcmVhdGVkID0gb25JbnB1dFF1ZXVlQ3JlYXRlZDsKKyAgICBhY3Rpdml0eS0+Y2FsbGJhY2tzLT5vbklucHV0UXVldWVEZXN0cm95ZWQgPSBvbklucHV0UXVldWVEZXN0cm95ZWQ7CisgICAgCisgICAgYWN0aXZpdHktPmluc3RhbmNlID0gYW5kcm9pZF9hcHBfY3JlYXRlKGFjdGl2aXR5KTsKK30KZGlmZiAtLWdpdCBhL25hdGl2ZS9pbmNsdWRlL2FuZHJvaWQvaW5wdXQuaCBiL25hdGl2ZS9pbmNsdWRlL2FuZHJvaWQvaW5wdXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTRiNmEzCi0tLSAvZGV2L251bGwKKysrIGIvbmF0aXZlL2luY2x1ZGUvYW5kcm9pZC9pbnB1dC5oCkBAIC0wLDAgKzEsNTcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2lmbmRlZiBfQU5EUk9JRF9JTlBVVF9ICisjZGVmaW5lIF9BTkRST0lEX0lOUFVUX0gKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorICoKKyAqIElNUE9SVEFOVCBOT1RJQ0U6CisgKgorICogICBUaGlzIGZpbGUgaXMgcGFydCBvZiBBbmRyb2lkJ3Mgc2V0IG9mIHN0YWJsZSBzeXN0ZW0gaGVhZGVycworICogICBleHBvc2VkIGJ5IHRoZSBBbmRyb2lkIE5ESyAoTmF0aXZlIERldmVsb3BtZW50IEtpdCkuCisgKgorICogICBUaGlyZC1wYXJ0eSBzb3VyY2UgQU5EIGJpbmFyeSBjb2RlIHJlbGllcyBvbiB0aGUgZGVmaW5pdGlvbnMKKyAqICAgaGVyZSB0byBiZSBGUk9aRU4gT04gQUxMIFVQQ09NSU5HIFBMQVRGT1JNIFJFTEVBU0VTLgorICoKKyAqICAgLSBETyBOT1QgTU9ESUZZIEVOVU1TIChFWENFUFQgSUYgWU9VIEFERCBORVcgMzItQklUIFZBTFVFUykKKyAqICAgLSBETyBOT1QgTU9ESUZZIENPTlNUQU5UUyBPUiBGVU5DVElPTkFMIE1BQ1JPUworICogICAtIERPIE5PVCBDSEFOR0UgVEhFIFNJR05BVFVSRSBPRiBGVU5DVElPTlMgSU4gQU5ZIFdBWQorICogICAtIERPIE5PVCBDSEFOR0UgVEhFIExBWU9VVCBPUiBTSVpFIE9GIFNUUlVDVFVSRVMKKyAqLworCisvKgorICogU3RydWN0dXJlcyBhbmQgZnVuY3Rpb25zIHRvIHJlY2VpdmUgYW5kIHByb2Nlc3MgaW5wdXQgZXZlbnRzIGluCisgKiBuYXRpdmUgY29kZS4KKyAqCisgKiBOT1RFOiBUaGVzZSBmdW5jdGlvbnMgTVVTVCBiZSBpbXBsZW1lbnRlZCBieSAvc3lzdGVtL2xpYi9saWJ1aS5zbworICovCisKKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyNpbmNsdWRlIDxhbmRyb2lkL2tleWNvZGVzLmg+CisjaW5jbHVkZSA8YW5kcm9pZC9sb29wZXIuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKgorICogSW5wdXQgZGV2aWNlIGNsYXNzZXMuCisgKi8KK2VudW0geworICAgIC8qIFRoZSBpbnB1dCBkZXZpY2UgaXMgYSBrZXlib2FyZC4gKi8KKyAgICBJTlBVVF9ERVZJQ0VfQ0xBU1NfS0VZQk9BUkQgICAgICA9IDB4MDAwMDAwMDEsCisKKyAgICAvKiBUaGUgaW5wdXQgZGV2aWNlIGlzIGFuIGFscGhhLW51bWVyaWMga2V5Ym9hcmQgKG5vdCBqdXN0IGEgZGlhbCBwYWQpLiAqLworICAgIElOUFVUX0RFVklDRV9DTEFTU19BTFBIQUtFWSAgICAgID0gMHgwMDAwMDAwMiwKKworICAgIC8qIFRoZSBpbnB1dCBkZXZpY2UgaXMgYSB0b3VjaHNjcmVlbiAoZWl0aGVyIHNpbmdsZS10b3VjaCBvciBtdWx0aS10b3VjaCkuICovCisgICAgSU5QVVRfREVWSUNFX0NMQVNTX1RPVUNIU0NSRUVOICAgPSAweDAwMDAwMDA0LAorCisgICAgLyogVGhlIGlucHV0IGRldmljZSBpcyBhIHRyYWNrYmFsbC4gKi8KKyAgICBJTlBVVF9ERVZJQ0VfQ0xBU1NfVFJBQ0tCQUxMICAgICA9IDB4MDAwMDAwMDgsCisKKyAgICAvKiBUaGUgaW5wdXQgZGV2aWNlIGlzIGEgbXVsdGktdG91Y2ggdG91Y2hzY3JlZW4uICovCisgICAgSU5QVVRfREVWSUNFX0NMQVNTX1RPVUNIU0NSRUVOX01UPSAweDAwMDAwMDEwLAorCisgICAgLyogVGhlIGlucHV0IGRldmljZSBpcyBhIGRpcmVjdGlvbmFsIHBhZC4gKi8KKyAgICBJTlBVVF9ERVZJQ0VfQ0xBU1NfRFBBRCAgICAgICAgICA9IDB4MDAwMDAwMjAKK307CisKKy8qCisgKiBLZXkgc3RhdGVzIChtYXkgYmUgcmV0dXJuZWQgYnkgcXVlcmllcyBhYm91dCB0aGUgY3VycmVudCBzdGF0ZSBvZiBhCisgKiBwYXJ0aWN1bGFyIGtleSBjb2RlLCBzY2FuIGNvZGUgb3Igc3dpdGNoKS4KKyAqCisgKiBYWFggc2hvdWxkIHdlIGNhbGwgdGhpcyBCVVRUT05fU1RBVEVfWFhYPworICovCitlbnVtIHsKKyAgICAvKiBUaGUga2V5IHN0YXRlIGlzIHVua25vd24gb3IgdGhlIHJlcXVlc3RlZCBrZXkgaXRzZWxmIGlzIG5vdCBzdXBwb3J0ZWQuICovCisgICAgS0VZX1NUQVRFX1VOS05PV04gPSAtMSwKKworICAgIC8qIFRoZSBrZXkgaXMgdXAuICovCisgICAgS0VZX1NUQVRFX1VQID0gMCwKKworICAgIC8qIFRoZSBrZXkgaXMgZG93bi4gKi8KKyAgICBLRVlfU1RBVEVfRE9XTiA9IDEsCisKKyAgICAvKiBUaGUga2V5IGlzIGRvd24gYnV0IGlzIGEgdmlydHVhbCBrZXkgcHJlc3MgdGhhdCBpcyBiZWluZyBlbXVsYXRlZCBieSB0aGUgc3lzdGVtLiAqLworICAgIEtFWV9TVEFURV9WSVJUVUFMID0gMgorfTsKKworLyoKKyAqIE1ldGEga2V5IC8gbW9kaWZlciBzdGF0ZS4KKyAqLworZW51bSB7CisgICAgLyogTm8gbWV0YSBrZXlzIGFyZSBwcmVzc2VkLiAqLworICAgIE1FVEFfTk9ORSA9IDAsCisKKyAgICAvKiBUaGlzIG1hc2sgaXMgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9uZSBvZiB0aGUgQUxUIG1ldGEga2V5cyBpcyBwcmVzc2VkLiAqLworICAgIE1FVEFfQUxUX09OID0gMHgwMiwKKworICAgIC8qIFRoaXMgbWFzayBpcyB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgdGhlIGxlZnQgQUxUIG1ldGEga2V5IGlzIHByZXNzZWQuICovCisgICAgTUVUQV9BTFRfTEVGVF9PTiA9IDB4MTAsCisKKyAgICAvKiBUaGlzIG1hc2sgaXMgdXNlZCB0byBjaGVjayB3aGV0aGVyIHRoZSByaWdodCBBTFQgbWV0YSBrZXkgaXMgcHJlc3NlZC4gKi8KKyAgICBNRVRBX0FMVF9SSUdIVF9PTiA9IDB4MjAsCisKKyAgICAvKiBUaGlzIG1hc2sgaXMgdXNlZCB0byBjaGVjayB3aGV0aGVyIG9uZSBvZiB0aGUgU0hJRlQgbWV0YSBrZXlzIGlzIHByZXNzZWQuICovCisgICAgTUVUQV9TSElGVF9PTiA9IDB4MDEsCisKKyAgICAvKiBUaGlzIG1hc2sgaXMgdXNlZCB0byBjaGVjayB3aGV0aGVyIHRoZSBsZWZ0IFNISUZUIG1ldGEga2V5IGlzIHByZXNzZWQuICovCisgICAgTUVUQV9TSElGVF9MRUZUX09OID0gMHg0MCwKKworICAgIC8qIFRoaXMgbWFzayBpcyB1c2VkIHRvIGNoZWNrIHdoZXRoZXIgdGhlIHJpZ2h0IFNISUZUIG1ldGEga2V5IGlzIHByZXNzZWQuICovCisgICAgTUVUQV9TSElGVF9SSUdIVF9PTiA9IDB4ODAsCisKKyAgICAvKiBUaGlzIG1hc2sgaXMgdXNlZCB0byBjaGVjayB3aGV0aGVyIHRoZSBTWU0gbWV0YSBrZXkgaXMgcHJlc3NlZC4gKi8KKyAgICBNRVRBX1NZTV9PTiA9IDB4MDQKK307CisKKy8qCisgKiBJbnB1dCBldmVudHMuCisgKgorICogSW5wdXQgZXZlbnRzIGFyZSBvcGFxdWUgc3RydWN0dXJlcy4gIFVzZSB0aGUgcHJvdmlkZWQgYWNjZXNzb3JzIGZ1bmN0aW9ucyB0bworICogcmVhZCB0aGVpciBwcm9wZXJ0aWVzLgorICovCitzdHJ1Y3QgQUlucHV0RXZlbnQ7Cit0eXBlZGVmIHN0cnVjdCBBSW5wdXRFdmVudCBBSW5wdXRFdmVudDsKKworLyoKKyAqIElucHV0IGV2ZW50IHR5cGVzLgorICovCitlbnVtIHsKKyAgICAvKiBJbmRpY2F0ZXMgdGhhdCB0aGUgaW5wdXQgZXZlbnQgaXMgYSBrZXkgZXZlbnQuICovCisgICAgSU5QVVRfRVZFTlRfVFlQRV9LRVkgPSAxLAorCisgICAgLyogSW5kaWNhdGVzIHRoYXQgdGhlIGlucHV0IGV2ZW50IGlzIGEgbW90aW9uIGV2ZW50LiAqLworICAgIElOUFVUX0VWRU5UX1RZUEVfTU9USU9OID0gMgorfTsKKworLyoKKyAqIEtleSBldmVudCBhY3Rpb25zLgorICovCitlbnVtIHsKKyAgICAvKiBUaGUga2V5IGhhcyBiZWVuIHByZXNzZWQgZG93bi4gKi8KKyAgICBLRVlfRVZFTlRfQUNUSU9OX0RPV04gPSAwLAorCisgICAgLyogVGhlIGtleSBoYXMgYmVlbiByZWxlYXNlZC4gKi8KKyAgICBLRVlfRVZFTlRfQUNUSU9OX1VQID0gMSwKKworICAgIC8qIE11bHRpcGxlIGR1cGxpY2F0ZSBrZXkgZXZlbnRzIGhhdmUgb2NjdXJyZWQgaW4gYSByb3csIG9yIGEgY29tcGxleCBzdHJpbmcgaXMKKyAgICAgKiBiZWluZyBkZWxpdmVyZWQuICBUaGUgcmVwZWF0X2NvdW50IHByb3BlcnR5IG9mIHRoZSBrZXkgZXZlbnQgY29udGFpbnMgdGhlIG51bWJlcgorICAgICAqIG9mIHRpbWVzIHRoZSBnaXZlbiBrZXkgY29kZSBzaG91bGQgYmUgZXhlY3V0ZWQuCisgICAgICovCisgICAgS0VZX0VWRU5UX0FDVElPTl9NVUxUSVBMRSA9IDIKK307CisKKy8qCisgKiBLZXkgZXZlbnQgZmxhZ3MuCisgKi8KK2VudW0geworICAgIC8qIFRoaXMgbWFzayBpcyBzZXQgaWYgdGhlIGRldmljZSB3b2tlIGJlY2F1c2Ugb2YgdGhpcyBrZXkgZXZlbnQuICovCisgICAgS0VZX0VWRU5UX0ZMQUdfV09LRV9IRVJFID0gMHgxLAorCisgICAgLyogVGhpcyBtYXNrIGlzIHNldCBpZiB0aGUga2V5IGV2ZW50IHdhcyBnZW5lcmF0ZWQgYnkgYSBzb2Z0d2FyZSBrZXlib2FyZC4gKi8KKyAgICBLRVlfRVZFTlRfRkxBR19TT0ZUX0tFWUJPQVJEID0gMHgyLAorCisgICAgLyogVGhpcyBtYXNrIGlzIHNldCBpZiB3ZSBkb24ndCB3YW50IHRoZSBrZXkgZXZlbnQgdG8gY2F1c2UgdXMgdG8gbGVhdmUgdG91Y2ggbW9kZS4gKi8KKyAgICBLRVlfRVZFTlRfRkxBR19LRUVQX1RPVUNIX01PREUgPSAweDQsCisKKyAgICAvKiBUaGlzIG1hc2sgaXMgc2V0IGlmIGFuIGV2ZW50IHdhcyBrbm93biB0byBjb21lIGZyb20gYSB0cnVzdGVkIHBhcnQKKyAgICAgKiBvZiB0aGUgc3lzdGVtLiAgVGhhdCBpcywgdGhlIGV2ZW50IGlzIGtub3duIHRvIGNvbWUgZnJvbSB0aGUgdXNlciwKKyAgICAgKiBhbmQgY291bGQgbm90IGhhdmUgYmVlbiBzcG9vZmVkIGJ5IGEgdGhpcmQgcGFydHkgY29tcG9uZW50LiAqLworICAgIEtFWV9FVkVOVF9GTEFHX0ZST01fU1lTVEVNID0gMHg4LAorCisgICAgLyogVGhpcyBtYXNrIGlzIHVzZWQgZm9yIGNvbXBhdGliaWxpdHksIHRvIGlkZW50aWZ5IGVudGVyIGtleXMgdGhhdCBhcmUKKyAgICAgKiBjb21pbmcgZnJvbSBhbiBJTUUgd2hvc2UgZW50ZXIga2V5IGhhcyBiZWVuIGF1dG8tbGFiZWxsZWQgIm5leHQiIG9yCisgICAgICogImRvbmUiLiAgVGhpcyBhbGxvd3MgVGV4dFZpZXcgdG8gZGlzcGF0Y2ggdGhlc2UgYXMgbm9ybWFsIGVudGVyIGtleXMKKyAgICAgKiBmb3Igb2xkIGFwcGxpY2F0aW9ucywgYnV0IHN0aWxsIGRvIHRoZSBhcHByb3ByaWF0ZSBhY3Rpb24gd2hlbgorICAgICAqIHJlY2VpdmluZyB0aGVtLiAqLworICAgIEtFWV9FVkVOVF9GTEFHX0VESVRPUl9BQ1RJT04gPSAweDEwLAorCisgICAgLyogV2hlbiBhc3NvY2lhdGVkIHdpdGggdXAga2V5IGV2ZW50cywgdGhpcyBpbmRpY2F0ZXMgdGhhdCB0aGUga2V5IHByZXNzCisgICAgICogaGFzIGJlZW4gY2FuY2VsZWQuICBUeXBpY2FsbHkgdGhpcyBpcyB1c2VkIHdpdGggdmlydHVhbCB0b3VjaCBzY3JlZW4KKyAgICAgKiBrZXlzLCB3aGVyZSB0aGUgdXNlciBjYW4gc2xpZGUgZnJvbSB0aGUgdmlydHVhbCBrZXkgYXJlYSBvbiB0byB0aGUKKyAgICAgKiBkaXNwbGF5OiBpbiB0aGF0IGNhc2UsIHRoZSBhcHBsaWNhdGlvbiB3aWxsIHJlY2VpdmUgYSBjYW5jZWxlZCB1cAorICAgICAqIGV2ZW50IGFuZCBzaG91bGQgbm90IHBlcmZvcm0gdGhlIGFjdGlvbiBub3JtYWxseSBhc3NvY2lhdGVkIHdpdGggdGhlCisgICAgICoga2V5LiAgTm90ZSB0aGF0IGZvciB0aGlzIHRvIHdvcmssIHRoZSBhcHBsaWNhdGlvbiBjYW4gbm90IHBlcmZvcm0gYW4KKyAgICAgKiBhY3Rpb24gZm9yIGEga2V5IHVudGlsIGl0IHJlY2VpdmVzIGFuIHVwIG9yIHRoZSBsb25nIHByZXNzIHRpbWVvdXQgaGFzCisgICAgICogZXhwaXJlZC4gKi8KKyAgICBLRVlfRVZFTlRfRkxBR19DQU5DRUxFRCA9IDB4MjAsCisKKyAgICAvKiBUaGlzIGtleSBldmVudCB3YXMgZ2VuZXJhdGVkIGJ5IGEgdmlydHVhbCAob24tc2NyZWVuKSBoYXJkIGtleSBhcmVhLgorICAgICAqIFR5cGljYWxseSB0aGlzIGlzIGFuIGFyZWEgb2YgdGhlIHRvdWNoc2NyZWVuLCBvdXRzaWRlIG9mIHRoZSByZWd1bGFyCisgICAgICogZGlzcGxheSwgZGVkaWNhdGVkIHRvICJoYXJkd2FyZSIgYnV0dG9ucy4gKi8KKyAgICBLRVlfRVZFTlRfRkxBR19WSVJUVUFMX0hBUkRfS0VZID0gMHg0MCwKKworICAgIC8qIFRoaXMgZmxhZyBpcyBzZXQgZm9yIHRoZSBmaXJzdCBrZXkgcmVwZWF0IHRoYXQgb2NjdXJzIGFmdGVyIHRoZQorICAgICAqIGxvbmcgcHJlc3MgdGltZW91dC4gKi8KKyAgICBLRVlfRVZFTlRfRkxBR19MT05HX1BSRVNTID0gMHg4MCwKKworICAgIC8qIFNldCB3aGVuIGEga2V5IGV2ZW50IGhhcyBLRVlfRVZFTlRfRkxBR19DQU5DRUxFRCBzZXQgYmVjYXVzZSBhIGxvbmcKKyAgICAgKiBwcmVzcyBhY3Rpb24gd2FzIGV4ZWN1dGVkIHdoaWxlIGl0IHdhcyBkb3duLiAqLworICAgIEtFWV9FVkVOVF9GTEFHX0NBTkNFTEVEX0xPTkdfUFJFU1MgPSAweDEwMCwKKworICAgIC8qIFNldCBmb3IgS0VZX0VWRU5UX0FDVElPTl9VUCB3aGVuIHRoaXMgZXZlbnQncyBrZXkgY29kZSBpcyBzdGlsbCBiZWluZworICAgICAqIHRyYWNrZWQgZnJvbSBpdHMgaW5pdGlhbCBkb3duLiAgVGhhdCBpcywgc29tZWJvZHkgcmVxdWVzdGVkIHRoYXQgdHJhY2tpbmcKKyAgICAgKiBzdGFydGVkIG9uIHRoZSBrZXkgZG93biBhbmQgYSBsb25nIHByZXNzIGhhcyBub3QgY2F1c2VkCisgICAgICogdGhlIHRyYWNraW5nIHRvIGJlIGNhbmNlbGVkLiAqLworICAgIEtFWV9FVkVOVF9GTEFHX1RSQUNLSU5HID0gMHgyMDAKK307CisKKy8qCisgKiBNb3Rpb24gZXZlbnQgYWN0aW9ucy4KKyAqLworCisvKiBCaXQgc2hpZnQgZm9yIHRoZSBhY3Rpb24gYml0cyBob2xkaW5nIHRoZSBwb2ludGVyIGluZGV4IGFzCisgKiBkZWZpbmVkIGJ5IE1PVElPTl9FVkVOVF9BQ1RJT05fUE9JTlRFUl9JTkRFWF9NQVNLLgorICovCisjZGVmaW5lIE1PVElPTl9FVkVOVF9BQ1RJT05fUE9JTlRFUl9JTkRFWF9TSElGVCA4CisKK2VudW0geworICAgIC8qIEJpdCBtYXNrIG9mIHRoZSBwYXJ0cyBvZiB0aGUgYWN0aW9uIGNvZGUgdGhhdCBhcmUgdGhlIGFjdGlvbiBpdHNlbGYuCisgICAgICovCisgICAgTU9USU9OX0VWRU5UX0FDVElPTl9NQVNLID0gMHhmZiwKKworICAgIC8qIEJpdHMgaW4gdGhlIGFjdGlvbiBjb2RlIHRoYXQgcmVwcmVzZW50IGEgcG9pbnRlciBpbmRleCwgdXNlZCB3aXRoCisgICAgICogTU9USU9OX0VWRU5UX0FDVElPTl9QT0lOVEVSX0RPV04gYW5kIE1PVElPTl9FVkVOVF9BQ1RJT05fUE9JTlRFUl9VUC4gIFNoaWZ0aW5nCisgICAgICogZG93biBieSBNT1RJT05fRVZFTlRfQUNUSU9OX1BPSU5URVJfSU5ERVhfU0hJRlQgcHJvdmlkZXMgdGhlIGFjdHVhbCBwb2ludGVyCisgICAgICogaW5kZXggd2hlcmUgdGhlIGRhdGEgZm9yIHRoZSBwb2ludGVyIGdvaW5nIHVwIG9yIGRvd24gY2FuIGJlIGZvdW5kLgorICAgICAqLworICAgIE1PVElPTl9FVkVOVF9BQ1RJT05fUE9JTlRFUl9JTkRFWF9NQVNLICA9IDB4ZmYwMCwKKworICAgIC8qIEEgcHJlc3NlZCBnZXN0dXJlIGhhcyBzdGFydGVkLCB0aGUgbW90aW9uIGNvbnRhaW5zIHRoZSBpbml0aWFsIHN0YXJ0aW5nIGxvY2F0aW9uLgorICAgICAqLworICAgIE1PVElPTl9FVkVOVF9BQ1RJT05fRE9XTiA9IDAsCisKKyAgICAvKiBBIHByZXNzZWQgZ2VzdHVyZSBoYXMgZmluaXNoZWQsIHRoZSBtb3Rpb24gY29udGFpbnMgdGhlIGZpbmFsIHJlbGVhc2UgbG9jYXRpb24KKyAgICAgKiBhcyB3ZWxsIGFzIGFueSBpbnRlcm1lZGlhdGUgcG9pbnRzIHNpbmNlIHRoZSBsYXN0IGRvd24gb3IgbW92ZSBldmVudC4KKyAgICAgKi8KKyAgICBNT1RJT05fRVZFTlRfQUNUSU9OX1VQID0gMSwKKworICAgIC8qIEEgY2hhbmdlIGhhcyBoYXBwZW5lZCBkdXJpbmcgYSBwcmVzcyBnZXN0dXJlIChiZXR3ZWVuIE1PVElPTl9FVkVOVF9BQ1RJT05fRE9XTiBhbmQKKyAgICAgKiBNT1RJT05fRVZFTlRfQUNUSU9OX1VQKS4gIFRoZSBtb3Rpb24gY29udGFpbnMgdGhlIG1vc3QgcmVjZW50IHBvaW50LCBhcyB3ZWxsIGFzCisgICAgICogYW55IGludGVybWVkaWF0ZSBwb2ludHMgc2luY2UgdGhlIGxhc3QgZG93biBvciBtb3ZlIGV2ZW50LgorICAgICAqLworICAgIE1PVElPTl9FVkVOVF9BQ1RJT05fTU9WRSA9IDIsCisKKyAgICAvKiBUaGUgY3VycmVudCBnZXN0dXJlIGhhcyBiZWVuIGFib3J0ZWQuCisgICAgICogWW91IHdpbGwgbm90IHJlY2VpdmUgYW55IG1vcmUgcG9pbnRzIGluIGl0LiAgWW91IHNob3VsZCB0cmVhdCB0aGlzIGFzCisgICAgICogYW4gdXAgZXZlbnQsIGJ1dCBub3QgcGVyZm9ybSBhbnkgYWN0aW9uIHRoYXQgeW91IG5vcm1hbGx5IHdvdWxkLgorICAgICAqLworICAgIE1PVElPTl9FVkVOVF9BQ1RJT05fQ0FOQ0VMID0gMywKKworICAgIC8qIEEgbW92ZW1lbnQgaGFzIGhhcHBlbmVkIG91dHNpZGUgb2YgdGhlIG5vcm1hbCBib3VuZHMgb2YgdGhlIFVJIGVsZW1lbnQuCisgICAgICogVGhpcyBkb2VzIG5vdCBwcm92aWRlIGEgZnVsbCBnZXN0dXJlLCBidXQgb25seSB0aGUgaW5pdGlhbCBsb2NhdGlvbiBvZiB0aGUgbW92ZW1lbnQvdG91Y2guCisgICAgICovCisgICAgTU9USU9OX0VWRU5UX0FDVElPTl9PVVRTSURFID0gNCwKKworICAgIC8qIEEgbm9uLXByaW1hcnkgcG9pbnRlciBoYXMgZ29uZSBkb3duLgorICAgICAqIFRoZSBiaXRzIGluIE1PVElPTl9FVkVOVF9BQ1RJT05fUE9JTlRFUl9JTkRFWF9NQVNLIGluZGljYXRlIHdoaWNoIHBvaW50ZXIgY2hhbmdlZC4KKyAgICAgKi8KKyAgICBNT1RJT05fRVZFTlRfQUNUSU9OX1BPSU5URVJfRE9XTiA9IDUsCisKKyAgICAvKiBBIG5vbi1wcmltYXJ5IHBvaW50ZXIgaGFzIGdvbmUgdXAuCisgICAgICogVGhlIGJpdHMgaW4gTU9USU9OX0VWRU5UX0FDVElPTl9QT0lOVEVSX0lOREVYX01BU0sgaW5kaWNhdGUgd2hpY2ggcG9pbnRlciBjaGFuZ2VkLgorICAgICAqLworICAgIE1PVElPTl9FVkVOVF9BQ1RJT05fUE9JTlRFUl9VUCA9IDYKK307CisKKy8qCisgKiBNb3Rpb24gZXZlbnQgZWRnZSB0b3VjaCBmbGFncy4KKyAqLworZW51bSB7CisgICAgLyogTm8gZWRnZXMgaW50ZXJzZWN0ZWQgKi8KKyAgICBNT1RJT05fRVZFTlRfRURHRV9GTEFHX05PTkUgPSAwLAorCisgICAgLyogRmxhZyBpbmRpY2F0aW5nIHRoZSBtb3Rpb24gZXZlbnQgaW50ZXJzZWN0ZWQgdGhlIHRvcCBlZGdlIG9mIHRoZSBzY3JlZW4uICovCisgICAgTU9USU9OX0VWRU5UX0VER0VfRkxBR19UT1AgPSAweDAxLAorCisgICAgLyogRmxhZyBpbmRpY2F0aW5nIHRoZSBtb3Rpb24gZXZlbnQgaW50ZXJzZWN0ZWQgdGhlIGJvdHRvbSBlZGdlIG9mIHRoZSBzY3JlZW4uICovCisgICAgTU9USU9OX0VWRU5UX0VER0VfRkxBR19CT1RUT00gPSAweDAyLAorCisgICAgLyogRmxhZyBpbmRpY2F0aW5nIHRoZSBtb3Rpb24gZXZlbnQgaW50ZXJzZWN0ZWQgdGhlIGxlZnQgZWRnZSBvZiB0aGUgc2NyZWVuLiAqLworICAgIE1PVElPTl9FVkVOVF9FREdFX0ZMQUdfTEVGVCA9IDB4MDQsCisKKyAgICAvKiBGbGFnIGluZGljYXRpbmcgdGhlIG1vdGlvbiBldmVudCBpbnRlcnNlY3RlZCB0aGUgcmlnaHQgZWRnZSBvZiB0aGUgc2NyZWVuLiAqLworICAgIE1PVElPTl9FVkVOVF9FREdFX0ZMQUdfUklHSFQgPSAweDA4Cit9OworCisvKgorICogU3BlY2lmaWVzIHRoZSBsb2dpY2FsIG5hdHVyZSBvZiBhbiBpbnB1dCBldmVudC4KKyAqIEZvciBleGFtcGxlLCB0aGUgbmF0dXJlIGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiBtb3Rpb24gZXZlbnRzIHRoYXQgcmVwcmVzZW50IHRvdWNoZXMgYW5kCisgKiB0aG9zZSB0aGF0IHJlcHJlc2VudCB0cmFja2JhbGwgbW92ZXMuCisgKgorICogWFhYIFRoaXMgY29uY2VwdCBpcyB0ZW50YXRpdmUuICBBbm90aGVyIGlkZWEgd291bGQgYmUgdG8gYXNzb2NpYXRlIGV2ZW50cyB3aXRoIGxvZ2ljYWwKKyAqICAgICBjb250cm9sbGVycyByYXRoZXIgdGhhbiBwaHlzaWNhbCBkZXZpY2VzLiAgIFRoZSBpbnRlcnByZXRhdGlvbiBvZiBhbiBldmVudCB3b3VsZAorICogICAgIGJlIG1hZGUgd2l0aCByZXNwZWN0IHRvIHRoZSBuYXR1cmUgb2YgdGhlIGNvbnRyb2xsZXIgdGhhdCBpcyBjb25zaWRlcmVkIHRoZSBsb2dpY2FsCisgKiAgICAgc291cmNlIG9mIGFuIGV2ZW50LiAgVGhlIGRlY291cGxpbmcgaXMgYmVuZWZpY2lhbCBzaW5jZSBtdWx0aXBsZSBwaHlzaWNhbCAoYW5kIHZpcnR1YWwpCisgKiAgICAgZGV2aWNlcyBjb3VsZCBiZSByZXNwb25zaWJsZSBmb3IgcHJvZHVjaW5nIGV2ZW50cyB0aGF0IHdvdWxkIGJlIGFzc29jaWF0ZWQgd2l0aAorICogICAgIHZhcmlvdXMgbG9naWNhbCBjb250cm9sbGVycy4gIEZvciBleGFtcGxlLCB0aGUgaGFyZCBrZXlib2FyZCwgb24gc2NyZWVuIGtleWJvYXJkLAorICogICAgIGFuZCBwZXJpcGhlcmFsIGtleWJvYXJkIGNvdWxkIGJlIG1hcHBlZCBvbnRvIGEgc2luZ2xlIGxvZ2ljYWwgImtleWJvYXJkIiBjb250cm9sbGVyCisgKiAgICAgKG9yIHRyZWF0ZWQgaW5kZXBlbmRlbnRseSwgaWYgZGVzaXJlZCkuCisgKi8KK2VudW0geworICAgIElOUFVUX0VWRU5UX05BVFVSRV9LRVkgPSAxLAorICAgIElOUFVUX0VWRU5UX05BVFVSRV9UT1VDSCA9IDIsCisgICAgSU5QVVRfRVZFTlRfTkFUVVJFX1RSQUNLQkFMTCA9IDMKK307CisKKy8qCisgKiBJbnB1dCBldmVudCBhY2Nlc3NvcnMuCisgKgorICogTm90ZSB0aGF0IG1vc3QgZnVuY3Rpb25zIGNhbiBvbmx5IGJlIHVzZWQgb24gaW5wdXQgZXZlbnRzIHRoYXQgYXJlIG9mIGEgZ2l2ZW4gdHlwZS4KKyAqIENhbGxpbmcgdGhlc2UgZnVuY3Rpb25zIG9uIGlucHV0IGV2ZW50cyBvZiBvdGhlciB0eXBlcyB3aWxsIHlpZWxkIHVuZGVmaW5lZCBiZWhhdmlvci4KKyAqLworCisvKioqIEFjY2Vzc29ycyBmb3IgYWxsIGlucHV0IGV2ZW50cy4gKioqLworCisvKiBHZXQgdGhlIGlucHV0IGV2ZW50IHR5cGUuICovCitpbnQzMl90IEFJbnB1dEV2ZW50X2dldFR5cGUoY29uc3QgQUlucHV0RXZlbnQqIGV2ZW50KTsKKworLyogR2V0IHRoZSBpZCBmb3IgdGhlIGRldmljZSB0aGF0IGFuIGlucHV0IGV2ZW50IGNhbWUgZnJvbS4KKyAqCisgKiBJbnB1dCBldmVudHMgY2FuIGJlIGdlbmVyYXRlZCBieSBtdWx0aXBsZSBkaWZmZXJlbnQgaW5wdXQgZGV2aWNlcy4KKyAqIFVzZSB0aGUgaW5wdXQgZGV2aWNlIGlkIHRvIG9idGFpbiBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaW5wdXQKKyAqIGRldmljZSB0aGF0IHdhcyByZXNwb25zaWJsZSBmb3IgZ2VuZXJhdGluZyBhIHBhcnRpY3VsYXIgZXZlbnQuCisgKgorICogQW4gaW5wdXQgZGV2aWNlIGlkIG9mIDAgaW5kaWNhdGVzIHRoYXQgdGhlIGV2ZW50IGRpZG4ndCBjb21lIGZyb20gYSBwaHlzaWNhbCBkZXZpY2U7CisgKiBvdGhlciBudW1iZXJzIGFyZSBhcmJpdHJhcnkgYW5kIHlvdSBzaG91bGRuJ3QgZGVwZW5kIG9uIHRoZSB2YWx1ZXMuCisgKiBVc2UgdGhlIHByb3ZpZGVkIGlucHV0IGRldmljZSBxdWVyeSBBUEkgdG8gb2J0YWluIGluZm9ybWF0aW9uIGFib3V0IGlucHV0IGRldmljZXMuCisgKi8KK2ludDMyX3QgQUlucHV0RXZlbnRfZ2V0RGV2aWNlSWQoY29uc3QgQUlucHV0RXZlbnQqIGV2ZW50KTsKKworLyogR2V0IHRoZSBpbnB1dCBldmVudCBuYXR1cmUuICovCitpbnQzMl90IEFJbnB1dEV2ZW50X2dldE5hdHVyZShjb25zdCBBSW5wdXRFdmVudCogZXZlbnQpOworCisvKioqIEFjY2Vzc29ycyBmb3Iga2V5IGV2ZW50cyBvbmx5LiAqKiovCisKKy8qIEdldCB0aGUga2V5IGV2ZW50IGFjdGlvbi4gKi8KK2ludDMyX3QgQUtleUV2ZW50X2dldEFjdGlvbihjb25zdCBBSW5wdXRFdmVudCoga2V5X2V2ZW50KTsKKworLyogR2V0IHRoZSBrZXkgZXZlbnQgZmxhZ3MuICovCitpbnQzMl90IEFLZXlFdmVudF9nZXRGbGFncyhjb25zdCBBSW5wdXRFdmVudCoga2V5X2V2ZW50KTsKKworLyogR2V0IHRoZSBrZXkgY29kZSBvZiB0aGUga2V5IGV2ZW50LgorICogVGhpcyBpcyB0aGUgcGh5c2ljYWwga2V5IHRoYXQgd2FzIHByZXNzZWQsIG5vdCB0aGUgVW5pY29kZSBjaGFyYWN0ZXIuICovCitpbnQzMl90IEFLZXlFdmVudF9nZXRLZXlDb2RlKGNvbnN0IEFJbnB1dEV2ZW50KiBrZXlfZXZlbnQpOworCisvKiBHZXQgdGhlIGhhcmR3YXJlIGtleSBpZCBvZiB0aGlzIGtleSBldmVudC4KKyAqIFRoZXNlIHZhbHVlcyBhcmUgbm90IHJlbGlhYmxlIGFuZCB2YXJ5IGZyb20gZGV2aWNlIHRvIGRldmljZS4gKi8KK2ludDMyX3QgQUtleUV2ZW50X2dldFNjYW5Db2RlKGNvbnN0IEFJbnB1dEV2ZW50KiBrZXlfZXZlbnQpOworCisvKiBHZXQgdGhlIG1ldGEga2V5IHN0YXRlLiAqLworaW50MzJfdCBBS2V5RXZlbnRfZ2V0TWV0YVN0YXRlKGNvbnN0IEFJbnB1dEV2ZW50KiBrZXlfZXZlbnQpOworCisvKiBHZXQgdGhlIHJlcGVhdCBjb3VudCBvZiB0aGUgZXZlbnQuCisgKiBGb3IgYm90aCBrZXkgdXAgYW4ga2V5IGRvd24gZXZlbnRzLCB0aGlzIGlzIHRoZSBudW1iZXIgb2YgdGltZXMgdGhlIGtleSBoYXMKKyAqIHJlcGVhdGVkIHdpdGggdGhlIGZpcnN0IGRvd24gc3RhcnRpbmcgYXQgMCBhbmQgY291bnRpbmcgdXAgZnJvbSB0aGVyZS4gIEZvcgorICogbXVsdGlwbGUga2V5IGV2ZW50cywgdGhpcyBpcyB0aGUgbnVtYmVyIG9mIGRvd24vdXAgcGFpcnMgdGhhdCBoYXZlIG9jY3VycmVkLiAqLworaW50MzJfdCBBS2V5RXZlbnRfZ2V0UmVwZWF0Q291bnQoY29uc3QgQUlucHV0RXZlbnQqIGtleV9ldmVudCk7CisKKy8qIEdldCB0aGUgdGltZSBvZiB0aGUgbW9zdCByZWNlbnQga2V5IGRvd24gZXZlbnQsIGluIHRoZQorICogamF2YS5sYW5nLlN5c3RlbS5uYW5vVGltZSgpIHRpbWUgYmFzZS4gIElmIHRoaXMgaXMgYSBkb3duIGV2ZW50LAorICogdGhpcyB3aWxsIGJlIHRoZSBzYW1lIGFzIGV2ZW50VGltZS4KKyAqIE5vdGUgdGhhdCB3aGVuIGNob3JkaW5nIGtleXMsIHRoaXMgdmFsdWUgaXMgdGhlIGRvd24gdGltZSBvZiB0aGUgbW9zdCByZWNlbnRseQorICogcHJlc3NlZCBrZXksIHdoaWNoIG1heSBub3QgYmUgdGhlIHNhbWUgcGh5c2ljYWwga2V5IG9mIHRoaXMgZXZlbnQuICovCitpbnQ2NF90IEFLZXlFdmVudF9nZXREb3duVGltZShjb25zdCBBSW5wdXRFdmVudCoga2V5X2V2ZW50KTsKKworLyogR2V0IHRoZSB0aW1lIHRoaXMgZXZlbnQgb2NjdXJyZWQsIGluIHRoZQorICogamF2YS5sYW5nLlN5c3RlbS5uYW5vVGltZSgpIHRpbWUgYmFzZS4gKi8KK2ludDY0X3QgQUtleUV2ZW50X2dldEV2ZW50VGltZShjb25zdCBBSW5wdXRFdmVudCoga2V5X2V2ZW50KTsKKworLyoqKiBBY2Nlc3NvcnMgZm9yIG1vdGlvbiBldmVudHMgb25seS4gKioqLworCisvKiBHZXQgdGhlIGNvbWJpbmVkIG1vdGlvbiBldmVudCBhY3Rpb24gY29kZSBhbmQgcG9pbnRlciBpbmRleC4gKi8KK2ludDMyX3QgQU1vdGlvbkV2ZW50X2dldEFjdGlvbihjb25zdCBBSW5wdXRFdmVudCogbW90aW9uX2V2ZW50KTsKKworLyogR2V0IHRoZSBzdGF0ZSBvZiBhbnkgbWV0YSAvIG1vZGlmaWVyIGtleXMgdGhhdCB3ZXJlIGluIGVmZmVjdCB3aGVuIHRoZQorICogZXZlbnQgd2FzIGdlbmVyYXRlZC4gKi8KK2ludDMyX3QgQU1vdGlvbkV2ZW50X2dldE1ldGFTdGF0ZShjb25zdCBBSW5wdXRFdmVudCogbW90aW9uX2V2ZW50KTsKKworLyogR2V0IGEgYml0ZmllbGQgaW5kaWNhdGluZyB3aGljaCBlZGdlcywgaWYgYW55LCB3ZXJlIHRvdWNoZWQgYnkgdGhpcyBtb3Rpb24gZXZlbnQuCisgKiBGb3IgdG91Y2ggZXZlbnRzLCBjbGllbnRzIGNhbiB1c2UgdGhpcyB0byBkZXRlcm1pbmUgaWYgdGhlIHVzZXIncyBmaW5nZXIgd2FzCisgKiB0b3VjaGluZyB0aGUgZWRnZSBvZiB0aGUgZGlzcGxheS4gKi8KK2ludDMyX3QgQU1vdGlvbkV2ZW50X2dldEVkZ2VGbGFncyhjb25zdCBBSW5wdXRFdmVudCogbW90aW9uX2V2ZW50KTsKKworLyogR2V0IHRoZSB0aW1lIHdoZW4gdGhlIHVzZXIgb3JpZ2luYWxseSBwcmVzc2VkIGRvd24gdG8gc3RhcnQgYSBzdHJlYW0gb2YKKyAqIHBvc2l0aW9uIGV2ZW50cywgaW4gdGhlIGphdmEubGFuZy5TeXN0ZW0ubmFub1RpbWUoKSB0aW1lIGJhc2UuICovCitpbnQ2NF90IEFNb3Rpb25FdmVudF9nZXREb3duVGltZShjb25zdCBBSW5wdXRFdmVudCogbW90aW9uX2V2ZW50KTsKKworLyogR2V0IHRoZSB0aW1lIHdoZW4gdGhpcyBzcGVjaWZpYyBldmVudCB3YXMgZ2VuZXJhdGVkLAorICogaW4gdGhlIGphdmEubGFuZy5TeXN0ZW0ubmFub1RpbWUoKSB0aW1lIGJhc2UuICovCitpbnQ2NF90IEFNb3Rpb25FdmVudF9nZXRFdmVudFRpbWUoY29uc3QgQUlucHV0RXZlbnQqIG1vdGlvbl9ldmVudCk7CisKKy8qIEdldCB0aGUgWCBjb29yZGluYXRlIG9mZnNldC4KKyAqIEZvciB0b3VjaCBldmVudHMgb24gdGhlIHNjcmVlbiwgdGhpcyBpcyB0aGUgZGVsdGEgdGhhdCB3YXMgYWRkZWQgdG8gdGhlIHJhdworICogc2NyZWVuIGNvb3JkaW5hdGVzIHRvIGFkanVzdCBmb3IgdGhlIGFic29sdXRlIHBvc2l0aW9uIG9mIHRoZSBjb250YWluaW5nIHdpbmRvd3MKKyAqIGFuZCB2aWV3cy4gKi8KK2Zsb2F0IEFNb3Rpb25FdmVudF9nZXRYT2Zmc2V0KGNvbnN0IEFJbnB1dEV2ZW50KiBtb3Rpb25fZXZlbnQpOworCisvKiBHZXQgdGhlIHByZWNpc2lvbiBvZiB0aGUgWSBjb29yZGluYXRlcyBiZWluZyByZXBvcnRlZC4KKyAqIEZvciB0b3VjaCBldmVudHMgb24gdGhlIHNjcmVlbiwgdGhpcyBpcyB0aGUgZGVsdGEgdGhhdCB3YXMgYWRkZWQgdG8gdGhlIHJhdworICogc2NyZWVuIGNvb3JkaW5hdGVzIHRvIGFkanVzdCBmb3IgdGhlIGFic29sdXRlIHBvc2l0aW9uIG9mIHRoZSBjb250YWluaW5nIHdpbmRvd3MKKyAqIGFuZCB2aWV3cy4gKi8KK2Zsb2F0IEFNb3Rpb25FdmVudF9nZXRZT2Zmc2V0KGNvbnN0IEFJbnB1dEV2ZW50KiBtb3Rpb25fZXZlbnQpOworCisvKiBHZXQgdGhlIHByZWNpc2lvbiBvZiB0aGUgWCBjb29yZGluYXRlcyBiZWluZyByZXBvcnRlZC4KKyAqIFlvdSBjYW4gbXVsdGlwbHkgdGhpcyBudW1iZXIgd2l0aCBhbiBYIGNvb3JkaW5hdGUgc2FtcGxlIHRvIGZpbmQgdGhlCisgKiBhY3R1YWwgaGFyZHdhcmUgdmFsdWUgb2YgdGhlIFggY29vcmRpbmF0ZS4gKi8KK2Zsb2F0IEFNb3Rpb25FdmVudF9nZXRYUHJlY2lzaW9uKGNvbnN0IEFJbnB1dEV2ZW50KiBtb3Rpb25fZXZlbnQpOworCisvKiBHZXQgdGhlIHByZWNpc2lvbiBvZiB0aGUgWSBjb29yZGluYXRlcyBiZWluZyByZXBvcnRlZC4KKyAqIFlvdSBjYW4gbXVsdGlwbHkgdGhpcyBudW1iZXIgd2l0aCBhIFkgY29vcmRpbmF0ZSBzYW1wbGUgdG8gZmluZCB0aGUKKyAqIGFjdHVhbCBoYXJkd2FyZSB2YWx1ZSBvZiB0aGUgWSBjb29yZGluYXRlLiAqLworZmxvYXQgQU1vdGlvbkV2ZW50X2dldFlQcmVjaXNpb24oY29uc3QgQUlucHV0RXZlbnQqIG1vdGlvbl9ldmVudCk7CisKKy8qIEdldCB0aGUgbnVtYmVyIG9mIHBvaW50ZXJzIG9mIGRhdGEgY29udGFpbmVkIGluIHRoaXMgZXZlbnQuCisgKiBBbHdheXMgPj0gMS4gKi8KK3NpemVfdCBBTW90aW9uRXZlbnRfZ2V0UG9pbnRlckNvdW50KGNvbnN0IEFJbnB1dEV2ZW50KiBtb3Rpb25fZXZlbnQpOworCisvKiBHZXQgdGhlIHBvaW50ZXIgaWRlbnRpZmllciBhc3NvY2lhdGVkIHdpdGggYSBwYXJ0aWN1bGFyIHBvaW50ZXIKKyAqIGRhdGEgaW5kZXggaXMgdGhpcyBldmVudC4gIFRoZSBpZGVudGlmaWVyIHRlbGxzIHlvdSB0aGUgYWN0dWFsIHBvaW50ZXIKKyAqIG51bWJlciBhc3NvY2lhdGVkIHdpdGggdGhlIGRhdGEsIGFjY291bnRpbmcgZm9yIGluZGl2aWR1YWwgcG9pbnRlcnMKKyAqIGdvaW5nIHVwIGFuZCBkb3duIHNpbmNlIHRoZSBzdGFydCBvZiB0aGUgY3VycmVudCBnZXN0dXJlLiAqLworaW50MzJfdCBBTW90aW9uRXZlbnRfZ2V0UG9pbnRlcklkKGNvbnN0IEFJbnB1dEV2ZW50KiBtb3Rpb25fZXZlbnQsIHNpemVfdCBwb2ludGVyX2luZGV4KTsKKworLyogR2V0IHRoZSBvcmlnaW5hbCByYXcgWCBjb29yZGluYXRlIG9mIHRoaXMgZXZlbnQuCisgKiBGb3IgdG91Y2ggZXZlbnRzIG9uIHRoZSBzY3JlZW4sIHRoaXMgaXMgdGhlIG9yaWdpbmFsIGxvY2F0aW9uIG9mIHRoZSBldmVudAorICogb24gdGhlIHNjcmVlbiwgYmVmb3JlIGl0IGhhZCBiZWVuIGFkanVzdGVkIGZvciB0aGUgY29udGFpbmluZyB3aW5kb3cKKyAqIGFuZCB2aWV3cy4gKi8KK2Zsb2F0IEFNb3Rpb25FdmVudF9nZXRSYXdYKGNvbnN0IEFJbnB1dEV2ZW50KiBtb3Rpb25fZXZlbnQsIHNpemVfdCBwb2ludGVyX2luZGV4KTsKKworLyogR2V0IHRoZSBvcmlnaW5hbCByYXcgWCBjb29yZGluYXRlIG9mIHRoaXMgZXZlbnQuCisgKiBGb3IgdG91Y2ggZXZlbnRzIG9uIHRoZSBzY3JlZW4sIHRoaXMgaXMgdGhlIG9yaWdpbmFsIGxvY2F0aW9uIG9mIHRoZSBldmVudAorICogb24gdGhlIHNjcmVlbiwgYmVmb3JlIGl0IGhhZCBiZWVuIGFkanVzdGVkIGZvciB0aGUgY29udGFpbmluZyB3aW5kb3cKKyAqIGFuZCB2aWV3cy4gKi8KK2Zsb2F0IEFNb3Rpb25FdmVudF9nZXRSYXdZKGNvbnN0IEFJbnB1dEV2ZW50KiBtb3Rpb25fZXZlbnQsIHNpemVfdCBwb2ludGVyX2luZGV4KTsKKworLyogR2V0IHRoZSBjdXJyZW50IFggY29vcmRpbmF0ZSBvZiB0aGlzIGV2ZW50IGZvciB0aGUgZ2l2ZW4gcG9pbnRlciBpbmRleC4KKyAqIFdob2xlIG51bWJlcnMgYXJlIHBpeGVsczsgdGhlIHZhbHVlIG1heSBoYXZlIGEgZnJhY3Rpb24gZm9yIGlucHV0IGRldmljZXMKKyAqIHRoYXQgYXJlIHN1Yi1waXhlbCBwcmVjaXNlLiAqLworZmxvYXQgQU1vdGlvbkV2ZW50X2dldFgoY29uc3QgQUlucHV0RXZlbnQqIG1vdGlvbl9ldmVudCwgc2l6ZV90IHBvaW50ZXJfaW5kZXgpOworCisvKiBHZXQgdGhlIGN1cnJlbnQgWSBjb29yZGluYXRlIG9mIHRoaXMgZXZlbnQgZm9yIHRoZSBnaXZlbiBwb2ludGVyIGluZGV4LgorICogV2hvbGUgbnVtYmVycyBhcmUgcGl4ZWxzOyB0aGUgdmFsdWUgbWF5IGhhdmUgYSBmcmFjdGlvbiBmb3IgaW5wdXQgZGV2aWNlcworICogdGhhdCBhcmUgc3ViLXBpeGVsIHByZWNpc2UuICovCitmbG9hdCBBTW90aW9uRXZlbnRfZ2V0WShjb25zdCBBSW5wdXRFdmVudCogbW90aW9uX2V2ZW50LCBzaXplX3QgcG9pbnRlcl9pbmRleCk7CisKKy8qIEdldCB0aGUgY3VycmVudCBwcmVzc3VyZSBvZiB0aGlzIGV2ZW50IGZvciB0aGUgZ2l2ZW4gcG9pbnRlciBpbmRleC4KKyAqIFRoZSBwcmVzc3VyZSBnZW5lcmFsbHkgcmFuZ2VzIGZyb20gMCAobm8gcHJlc3N1cmUgYXQgYWxsKSB0byAxIChub3JtYWwgcHJlc3N1cmUpLAorICogaG93ZXZlciB2YWx1ZXMgaGlnaGVyIHRoYW4gMSBtYXkgYmUgZ2VuZXJhdGVkIGRlcGVuZGluZyBvbiB0aGUgY2FsaWJyYXRpb24gb2YKKyAqIHRoZSBpbnB1dCBkZXZpY2UuICovCitmbG9hdCBBTW90aW9uRXZlbnRfZ2V0UHJlc3N1cmUoY29uc3QgQUlucHV0RXZlbnQqIG1vdGlvbl9ldmVudCwgc2l6ZV90IHBvaW50ZXJfaW5kZXgpOworCisvKiBHZXQgdGhlIGN1cnJlbnQgc2NhbGVkIHZhbHVlIG9mIHRoZSBhcHByb3hpbWF0ZSBzaXplIGZvciB0aGUgZ2l2ZW4gcG9pbnRlciBpbmRleC4KKyAqIFRoaXMgcmVwcmVzZW50cyBzb21lIGFwcHJveGltYXRpb24gb2YgdGhlIGFyZWEgb2YgdGhlIHNjcmVlbiBiZWluZworICogcHJlc3NlZDsgdGhlIGFjdHVhbCB2YWx1ZSBpbiBwaXhlbHMgY29ycmVzcG9uZGluZyB0byB0aGUKKyAqIHRvdWNoIGlzIG5vcm1hbGl6ZWQgd2l0aCB0aGUgZGV2aWNlIHNwZWNpZmljIHJhbmdlIG9mIHZhbHVlcworICogYW5kIHNjYWxlZCB0byBhIHZhbHVlIGJldHdlZW4gMCBhbmQgMS4gIFRoZSB2YWx1ZSBvZiBzaXplIGNhbiBiZSB1c2VkIHRvCisgKiBkZXRlcm1pbmUgZmF0IHRvdWNoIGV2ZW50cy4gKi8KK2Zsb2F0IEFNb3Rpb25FdmVudF9nZXRTaXplKGNvbnN0IEFJbnB1dEV2ZW50KiBtb3Rpb25fZXZlbnQsIHNpemVfdCBwb2ludGVyX2luZGV4KTsKKworLyogR2V0IHRoZSBudW1iZXIgb2YgaGlzdG9yaWNhbCBwb2ludHMgaW4gdGhpcyBldmVudC4gIFRoZXNlIGFyZSBtb3ZlbWVudHMgdGhhdAorICogaGF2ZSBvY2N1cnJlZCBiZXR3ZWVuIHRoaXMgZXZlbnQgYW5kIHRoZSBwcmV2aW91cyBldmVudC4gIFRoaXMgb25seSBhcHBsaWVzCisgKiB0byBNT1RJT05fRVZFTlRfQUNUSU9OX01PVkUgZXZlbnRzIC0tIGFsbCBvdGhlciBhY3Rpb25zIHdpbGwgaGF2ZSBhIHNpemUgb2YgMC4KKyAqIEhpc3RvcmljYWwgc2FtcGxlcyBhcmUgaW5kZXhlZCBmcm9tIG9sZGVzdCB0byBuZXdlc3QuICovCitzaXplX3QgQU1vdGlvbkV2ZW50X2dldF9oaXN0b3J5X3NpemUoY29uc3QgQUlucHV0RXZlbnQqIG1vdGlvbl9ldmVudCk7CisKKy8qIEdldCB0aGUgdGltZSB0aGF0IGEgaGlzdG9yaWNhbCBtb3ZlbWVudCBvY2N1cnJlZCBiZXR3ZWVuIHRoaXMgZXZlbnQgYW5kCisgKiB0aGUgcHJldmlvdXMgZXZlbnQsIGluIHRoZSBqYXZhLmxhbmcuU3lzdGVtLm5hbm9UaW1lKCkgdGltZSBiYXNlLiAqLworaW50NjRfdCBBTW90aW9uRXZlbnRfZ2V0SGlzdG9yaWNhbEV2ZW50VGltZShBSW5wdXRFdmVudCogbW90aW9uX2V2ZW50LAorICAgICAgICBzaXplX3QgaGlzdG9yeV9pbmRleCk7CisKKy8qIEdldCB0aGUgaGlzdG9yaWNhbCByYXcgWCBjb29yZGluYXRlIG9mIHRoaXMgZXZlbnQgZm9yIHRoZSBnaXZlbiBwb2ludGVyIGluZGV4IHRoYXQKKyAqIG9jY3VycmVkIGJldHdlZW4gdGhpcyBldmVudCBhbmQgdGhlIHByZXZpb3VzIG1vdGlvbiBldmVudC4KKyAqIEZvciB0b3VjaCBldmVudHMgb24gdGhlIHNjcmVlbiwgdGhpcyBpcyB0aGUgb3JpZ2luYWwgbG9jYXRpb24gb2YgdGhlIGV2ZW50CisgKiBvbiB0aGUgc2NyZWVuLCBiZWZvcmUgaXQgaGFkIGJlZW4gYWRqdXN0ZWQgZm9yIHRoZSBjb250YWluaW5nIHdpbmRvdworICogYW5kIHZpZXdzLgorICogV2hvbGUgbnVtYmVycyBhcmUgcGl4ZWxzOyB0aGUgdmFsdWUgbWF5IGhhdmUgYSBmcmFjdGlvbiBmb3IgaW5wdXQgZGV2aWNlcworICogdGhhdCBhcmUgc3ViLXBpeGVsIHByZWNpc2UuICovCitmbG9hdCBBTW90aW9uRXZlbnRfZ2V0SGlzdG9yaWNhbFJhd1goY29uc3QgQUlucHV0RXZlbnQqIG1vdGlvbl9ldmVudCwgc2l6ZV90IHBvaW50ZXJfaW5kZXgpOworCisvKiBHZXQgdGhlIGhpc3RvcmljYWwgcmF3IFkgY29vcmRpbmF0ZSBvZiB0aGlzIGV2ZW50IGZvciB0aGUgZ2l2ZW4gcG9pbnRlciBpbmRleCB0aGF0CisgKiBvY2N1cnJlZCBiZXR3ZWVuIHRoaXMgZXZlbnQgYW5kIHRoZSBwcmV2aW91cyBtb3Rpb24gZXZlbnQuCisgKiBGb3IgdG91Y2ggZXZlbnRzIG9uIHRoZSBzY3JlZW4sIHRoaXMgaXMgdGhlIG9yaWdpbmFsIGxvY2F0aW9uIG9mIHRoZSBldmVudAorICogb24gdGhlIHNjcmVlbiwgYmVmb3JlIGl0IGhhZCBiZWVuIGFkanVzdGVkIGZvciB0aGUgY29udGFpbmluZyB3aW5kb3cKKyAqIGFuZCB2aWV3cy4KKyAqIFdob2xlIG51bWJlcnMgYXJlIHBpeGVsczsgdGhlIHZhbHVlIG1heSBoYXZlIGEgZnJhY3Rpb24gZm9yIGlucHV0IGRldmljZXMKKyAqIHRoYXQgYXJlIHN1Yi1waXhlbCBwcmVjaXNlLiAqLworZmxvYXQgQU1vdGlvbkV2ZW50X2dldEhpc3RvcmljYWxSYXdZKGNvbnN0IEFJbnB1dEV2ZW50KiBtb3Rpb25fZXZlbnQsIHNpemVfdCBwb2ludGVyX2luZGV4KTsKKworLyogR2V0IHRoZSBoaXN0b3JpY2FsIFggY29vcmRpbmF0ZSBvZiB0aGlzIGV2ZW50IGZvciB0aGUgZ2l2ZW4gcG9pbnRlciBpbmRleCB0aGF0CisgKiBvY2N1cnJlZCBiZXR3ZWVuIHRoaXMgZXZlbnQgYW5kIHRoZSBwcmV2aW91cyBtb3Rpb24gZXZlbnQuCisgKiBXaG9sZSBudW1iZXJzIGFyZSBwaXhlbHM7IHRoZSB2YWx1ZSBtYXkgaGF2ZSBhIGZyYWN0aW9uIGZvciBpbnB1dCBkZXZpY2VzCisgKiB0aGF0IGFyZSBzdWItcGl4ZWwgcHJlY2lzZS4gKi8KK2Zsb2F0IEFNb3Rpb25FdmVudF9nZXRIaXN0b3JpY2FsWChBSW5wdXRFdmVudCogbW90aW9uX2V2ZW50LCBzaXplX3QgcG9pbnRlcl9pbmRleCwKKyAgICAgICAgc2l6ZV90IGhpc3RvcnlfaW5kZXgpOworCisvKiBHZXQgdGhlIGhpc3RvcmljYWwgWSBjb29yZGluYXRlIG9mIHRoaXMgZXZlbnQgZm9yIHRoZSBnaXZlbiBwb2ludGVyIGluZGV4IHRoYXQKKyAqIG9jY3VycmVkIGJldHdlZW4gdGhpcyBldmVudCBhbmQgdGhlIHByZXZpb3VzIG1vdGlvbiBldmVudC4KKyAqIFdob2xlIG51bWJlcnMgYXJlIHBpeGVsczsgdGhlIHZhbHVlIG1heSBoYXZlIGEgZnJhY3Rpb24gZm9yIGlucHV0IGRldmljZXMKKyAqIHRoYXQgYXJlIHN1Yi1waXhlbCBwcmVjaXNlLiAqLworZmxvYXQgQU1vdGlvbkV2ZW50X2dldEhpc3RvcmljYWxZKEFJbnB1dEV2ZW50KiBtb3Rpb25fZXZlbnQsIHNpemVfdCBwb2ludGVyX2luZGV4LAorICAgICAgICBzaXplX3QgaGlzdG9yeV9pbmRleCk7CisKKy8qIEdldCB0aGUgaGlzdG9yaWNhbCBwcmVzc3VyZSBvZiB0aGlzIGV2ZW50IGZvciB0aGUgZ2l2ZW4gcG9pbnRlciBpbmRleCB0aGF0CisgKiBvY2N1cnJlZCBiZXR3ZWVuIHRoaXMgZXZlbnQgYW5kIHRoZSBwcmV2aW91cyBtb3Rpb24gZXZlbnQuCisgKiBUaGUgcHJlc3N1cmUgZ2VuZXJhbGx5IHJhbmdlcyBmcm9tIDAgKG5vIHByZXNzdXJlIGF0IGFsbCkgdG8gMSAobm9ybWFsIHByZXNzdXJlKSwKKyAqIGhvd2V2ZXIgdmFsdWVzIGhpZ2hlciB0aGFuIDEgbWF5IGJlIGdlbmVyYXRlZCBkZXBlbmRpbmcgb24gdGhlIGNhbGlicmF0aW9uIG9mCisgKiB0aGUgaW5wdXQgZGV2aWNlLiAqLworZmxvYXQgQU1vdGlvbkV2ZW50X2dldEhpc3RvcmljYWxQcmVzc3VyZShBSW5wdXRFdmVudCogbW90aW9uX2V2ZW50LCBzaXplX3QgcG9pbnRlcl9pbmRleCwKKyAgICAgICAgc2l6ZV90IGhpc3RvcnlfaW5kZXgpOworCisvKiBHZXQgdGhlIGN1cnJlbnQgc2NhbGVkIHZhbHVlIG9mIHRoZSBhcHByb3hpbWF0ZSBzaXplIGZvciB0aGUgZ2l2ZW4gcG9pbnRlciBpbmRleCB0aGF0CisgKiBvY2N1cnJlZCBiZXR3ZWVuIHRoaXMgZXZlbnQgYW5kIHRoZSBwcmV2aW91cyBtb3Rpb24gZXZlbnQuCisgKiBUaGlzIHJlcHJlc2VudHMgc29tZSBhcHByb3hpbWF0aW9uIG9mIHRoZSBhcmVhIG9mIHRoZSBzY3JlZW4gYmVpbmcKKyAqIHByZXNzZWQ7IHRoZSBhY3R1YWwgdmFsdWUgaW4gcGl4ZWxzIGNvcnJlc3BvbmRpbmcgdG8gdGhlCisgKiB0b3VjaCBpcyBub3JtYWxpemVkIHdpdGggdGhlIGRldmljZSBzcGVjaWZpYyByYW5nZSBvZiB2YWx1ZXMKKyAqIGFuZCBzY2FsZWQgdG8gYSB2YWx1ZSBiZXR3ZWVuIDAgYW5kIDEuICBUaGUgdmFsdWUgb2Ygc2l6ZSBjYW4gYmUgdXNlZCB0bworICogZGV0ZXJtaW5lIGZhdCB0b3VjaCBldmVudHMuICovCitmbG9hdCBBTW90aW9uRXZlbnRfZ2V0SGlzdG9yaWNhbFNpemUoQUlucHV0RXZlbnQqIG1vdGlvbl9ldmVudCwgc2l6ZV90IHBvaW50ZXJfaW5kZXgsCisgICAgICAgIHNpemVfdCBoaXN0b3J5X2luZGV4KTsKKworLyoKKyAqIElucHV0IHF1ZXVlCisgKgorICogQW4gaW5wdXQgcXVldWUgaXMgdGhlIGZhY2lsaXR5IHRocm91Z2ggd2hpY2ggeW91IHJldHJpZXZlIGlucHV0CisgKiBldmVudHMuCisgKi8KK3N0cnVjdCBBSW5wdXRRdWV1ZTsKK3R5cGVkZWYgc3RydWN0IEFJbnB1dFF1ZXVlIEFJbnB1dFF1ZXVlOworCisvKgorICogQWRkIHRoaXMgaW5wdXQgcXVldWUgdG8gYSBsb29wZXIgZm9yIHByb2Nlc3NpbmcuICBTZWUKKyAqIEFMb29wZXJfYWRkRmQoKSBmb3IgaW5mb3JtYXRpb24gb24gdGhlIGNhbGxiYWNrIGFuZCBkYXRhIHBhcmFtcy4KKyAqLwordm9pZCBBSW5wdXRRdWV1ZV9hdHRhY2hMb29wZXIoQUlucHV0UXVldWUqIHF1ZXVlLCBBTG9vcGVyKiBsb29wZXIsCisgICAgICAgIEFMb29wZXJfY2FsbGJhY2tGdW5jKiBjYWxsYmFjaywgdm9pZCogZGF0YSk7CisKKy8qCisgKiBSZW1vdmUgdGhlIGlucHV0IHF1ZXVlIGZyb20gdGhlIGxvb3BlciBpdCBpcyBjdXJyZW50bHkgYXR0YWNoZWQgdG8uCisgKi8KK3ZvaWQgQUlucHV0UXVldWVfZGV0YWNoTG9vcGVyKEFJbnB1dFF1ZXVlKiBxdWV1ZSk7CisKKy8qCisgKiBSZXR1cm5zIHRydWUgaWYgdGhlcmUgYXJlIG9uZSBvciBtb3JlIGV2ZW50cyBhdmFpbGFibGUgaW4gdGhlCisgKiBpbnB1dCBxdWV1ZS4gIFJldHVybnMgMSBpZiB0aGUgcXVldWUgaGFzIGV2ZW50czsgMCBpZgorICogaXQgZG9lcyBub3QgaGF2ZSBldmVudHM7IGFuZCBhIG5lZ2F0aXZlIHZhbHVlIGlmIHRoZXJlIGlzIGFuIGVycm9yLgorICovCitpbnQgQUlucHV0UXVldWVfaGFzRXZlbnRzKEFJbnB1dFF1ZXVlKiBxdWV1ZSk7CisKKy8qCisgKiBSZXR1cm5zIHRoZSBuZXh0IGF2YWlsYWJsZSBldmVudCBmcm9tIHRoZSBxdWV1ZS4gIFJldHVybnMgYSBuZWdhdGl2ZQorICogdmFsdWUgaWYgbm8gZXZlbnRzIGFyZSBhdmFpbGFibGUgb3IgYW4gZXJyb3IgaGFzIG9jY3VycmVkLgorICovCitpbnQzMl90IEFJbnB1dFF1ZXVlX2dldEV2ZW50KEFJbnB1dFF1ZXVlKiBxdWV1ZSwgQUlucHV0RXZlbnQqKiBvdXRFdmVudCk7CisKKy8qCisgKiBSZXBvcnQgdGhhdCBkaXNwYXRjaGluZyBoYXMgZmluaXNoZWQgd2l0aCB0aGUgZ2l2ZW4gZXZlbnQuCisgKiBUaGlzIG11c3QgYmUgY2FsbGVkIGFmdGVyIHJlY2VpdmluZyBhbiBldmVudCB3aXRoIEFJbnB1dFF1ZXVlX2dldF9ldmVudCgpLgorICovCit2b2lkIEFJbnB1dFF1ZXVlX2ZpbmlzaEV2ZW50KEFJbnB1dFF1ZXVlKiBxdWV1ZSwgQUlucHV0RXZlbnQqIGV2ZW50LCBpbnQgaGFuZGxlZCk7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfQorI2VuZGlmCisKKyNlbmRpZiAvLyBfQU5EUk9JRF9JTlBVVF9ICmRpZmYgLS1naXQgYS9uYXRpdmUvaW5jbHVkZS9hbmRyb2lkL2tleWNvZGVzLmggYi9uYXRpdmUvaW5jbHVkZS9hbmRyb2lkL2tleWNvZGVzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzY4NTVjNQotLS0gL2Rldi9udWxsCisrKyBiL25hdGl2ZS9pbmNsdWRlL2FuZHJvaWQva2V5Y29kZXMuaApAQCAtMCwwICsxLDE1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgX0FORFJPSURfS0VZQ09ERVNfSAorI2RlZmluZSBfQU5EUk9JRF9LRVlDT0RFU19ICisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyAqCisgKiBJTVBPUlRBTlQgTk9USUNFOgorICoKKyAqICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgQW5kcm9pZCdzIHNldCBvZiBzdGFibGUgc3lzdGVtIGhlYWRlcnMKKyAqICAgZXhwb3NlZCBieSB0aGUgQW5kcm9pZCBOREsgKE5hdGl2ZSBEZXZlbG9wbWVudCBLaXQpLgorICoKKyAqICAgVGhpcmQtcGFydHkgc291cmNlIEFORCBiaW5hcnkgY29kZSByZWxpZXMgb24gdGhlIGRlZmluaXRpb25zCisgKiAgIGhlcmUgdG8gYmUgRlJPWkVOIE9OIEFMTCBVUENPTUlORyBQTEFURk9STSBSRUxFQVNFUy4KKyAqCisgKiAgIC0gRE8gTk9UIE1PRElGWSBFTlVNUyAoRVhDRVBUIElGIFlPVSBBREQgTkVXIDMyLUJJVCBWQUxVRVMpCisgKiAgIC0gRE8gTk9UIE1PRElGWSBDT05TVEFOVFMgT1IgRlVOQ1RJT05BTCBNQUNST1MKKyAqICAgLSBETyBOT1QgQ0hBTkdFIFRIRSBTSUdOQVRVUkUgT0YgRlVOQ1RJT05TIElOIEFOWSBXQVkKKyAqICAgLSBETyBOT1QgQ0hBTkdFIFRIRSBMQVlPVVQgT1IgU0laRSBPRiBTVFJVQ1RVUkVTCisgKi8KKworI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8qCisgKiBLZXkgY29kZXMuCisgKgorICogWFhYOiBUaGUgZGVjbGFyYXRpb25zIGluIDx1aS9LZXljb2RlTGFiZWwuaD4gc2hvdWxkIGJlIHVwZGF0ZWQgdG8gdXNlIHRoZXNlIGluc3RlYWQuCisgKiAgICAgIFdlIHNob3VsZCBwcm9iYWJseSBtb3ZlIHRoaXMgaW50byBhbmRyb2lkL2tleWNvZGVzLmggYW5kIGFkZCBzb21lIG5ldyBBUEkgZm9yCisgKiAgICAgIGdldHRpbmcgbGFiZWxzIHNvIHRoYXQgd2UgY2FuIHJlbW92ZSB0aGUgb3RoZXIgdGFibGVzIGFsc28gaW4gS2V5Y29kZUxhYmVsLmguCisgKi8KK2VudW0geworICAgIEtFWUNPREVfVU5LTk9XTiAgICAgICAgID0gMCwKKyAgICBLRVlDT0RFX1NPRlRfTEVGVCAgICAgICA9IDEsCisgICAgS0VZQ09ERV9TT0ZUX1JJR0hUICAgICAgPSAyLAorICAgIEtFWUNPREVfSE9NRSAgICAgICAgICAgID0gMywKKyAgICBLRVlDT0RFX0JBQ0sgICAgICAgICAgICA9IDQsCisgICAgS0VZQ09ERV9DQUxMICAgICAgICAgICAgPSA1LAorICAgIEtFWUNPREVfRU5EQ0FMTCAgICAgICAgID0gNiwKKyAgICBLRVlDT0RFXzAgICAgICAgICAgICAgICA9IDcsCisgICAgS0VZQ09ERV8xICAgICAgICAgICAgICAgPSA4LAorICAgIEtFWUNPREVfMiAgICAgICAgICAgICAgID0gOSwKKyAgICBLRVlDT0RFXzMgICAgICAgICAgICAgICA9IDEwLAorICAgIEtFWUNPREVfNCAgICAgICAgICAgICAgID0gMTEsCisgICAgS0VZQ09ERV81ICAgICAgICAgICAgICAgPSAxMiwKKyAgICBLRVlDT0RFXzYgICAgICAgICAgICAgICA9IDEzLAorICAgIEtFWUNPREVfNyAgICAgICAgICAgICAgID0gMTQsCisgICAgS0VZQ09ERV84ICAgICAgICAgICAgICAgPSAxNSwKKyAgICBLRVlDT0RFXzkgICAgICAgICAgICAgICA9IDE2LAorICAgIEtFWUNPREVfU1RBUiAgICAgICAgICAgID0gMTcsCisgICAgS0VZQ09ERV9QT1VORCAgICAgICAgICAgPSAxOCwKKyAgICBLRVlDT0RFX0RQQURfVVAgICAgICAgICA9IDE5LAorICAgIEtFWUNPREVfRFBBRF9ET1dOICAgICAgID0gMjAsCisgICAgS0VZQ09ERV9EUEFEX0xFRlQgICAgICAgPSAyMSwKKyAgICBLRVlDT0RFX0RQQURfUklHSFQgICAgICA9IDIyLAorICAgIEtFWUNPREVfRFBBRF9DRU5URVIgICAgID0gMjMsCisgICAgS0VZQ09ERV9WT0xVTUVfVVAgICAgICAgPSAyNCwKKyAgICBLRVlDT0RFX1ZPTFVNRV9ET1dOICAgICA9IDI1LAorICAgIEtFWUNPREVfUE9XRVIgICAgICAgICAgID0gMjYsCisgICAgS0VZQ09ERV9DQU1FUkEgICAgICAgICAgPSAyNywKKyAgICBLRVlDT0RFX0NMRUFSICAgICAgICAgICA9IDI4LAorICAgIEtFWUNPREVfQSAgICAgICAgICAgICAgID0gMjksCisgICAgS0VZQ09ERV9CICAgICAgICAgICAgICAgPSAzMCwKKyAgICBLRVlDT0RFX0MgICAgICAgICAgICAgICA9IDMxLAorICAgIEtFWUNPREVfRCAgICAgICAgICAgICAgID0gMzIsCisgICAgS0VZQ09ERV9FICAgICAgICAgICAgICAgPSAzMywKKyAgICBLRVlDT0RFX0YgICAgICAgICAgICAgICA9IDM0LAorICAgIEtFWUNPREVfRyAgICAgICAgICAgICAgID0gMzUsCisgICAgS0VZQ09ERV9IICAgICAgICAgICAgICAgPSAzNiwKKyAgICBLRVlDT0RFX0kgICAgICAgICAgICAgICA9IDM3LAorICAgIEtFWUNPREVfSiAgICAgICAgICAgICAgID0gMzgsCisgICAgS0VZQ09ERV9LICAgICAgICAgICAgICAgPSAzOSwKKyAgICBLRVlDT0RFX0wgICAgICAgICAgICAgICA9IDQwLAorICAgIEtFWUNPREVfTSAgICAgICAgICAgICAgID0gNDEsCisgICAgS0VZQ09ERV9OICAgICAgICAgICAgICAgPSA0MiwKKyAgICBLRVlDT0RFX08gICAgICAgICAgICAgICA9IDQzLAorICAgIEtFWUNPREVfUCAgICAgICAgICAgICAgID0gNDQsCisgICAgS0VZQ09ERV9RICAgICAgICAgICAgICAgPSA0NSwKKyAgICBLRVlDT0RFX1IgICAgICAgICAgICAgICA9IDQ2LAorICAgIEtFWUNPREVfUyAgICAgICAgICAgICAgID0gNDcsCisgICAgS0VZQ09ERV9UICAgICAgICAgICAgICAgPSA0OCwKKyAgICBLRVlDT0RFX1UgICAgICAgICAgICAgICA9IDQ5LAorICAgIEtFWUNPREVfViAgICAgICAgICAgICAgID0gNTAsCisgICAgS0VZQ09ERV9XICAgICAgICAgICAgICAgPSA1MSwKKyAgICBLRVlDT0RFX1ggICAgICAgICAgICAgICA9IDUyLAorICAgIEtFWUNPREVfWSAgICAgICAgICAgICAgID0gNTMsCisgICAgS0VZQ09ERV9aICAgICAgICAgICAgICAgPSA1NCwKKyAgICBLRVlDT0RFX0NPTU1BICAgICAgICAgICA9IDU1LAorICAgIEtFWUNPREVfUEVSSU9EICAgICAgICAgID0gNTYsCisgICAgS0VZQ09ERV9BTFRfTEVGVCAgICAgICAgPSA1NywKKyAgICBLRVlDT0RFX0FMVF9SSUdIVCAgICAgICA9IDU4LAorICAgIEtFWUNPREVfU0hJRlRfTEVGVCAgICAgID0gNTksCisgICAgS0VZQ09ERV9TSElGVF9SSUdIVCAgICAgPSA2MCwKKyAgICBLRVlDT0RFX1RBQiAgICAgICAgICAgICA9IDYxLAorICAgIEtFWUNPREVfU1BBQ0UgICAgICAgICAgID0gNjIsCisgICAgS0VZQ09ERV9TWU0gICAgICAgICAgICAgPSA2MywKKyAgICBLRVlDT0RFX0VYUExPUkVSICAgICAgICA9IDY0LAorICAgIEtFWUNPREVfRU5WRUxPUEUgICAgICAgID0gNjUsCisgICAgS0VZQ09ERV9FTlRFUiAgICAgICAgICAgPSA2NiwKKyAgICBLRVlDT0RFX0RFTCAgICAgICAgICAgICA9IDY3LAorICAgIEtFWUNPREVfR1JBVkUgICAgICAgICAgID0gNjgsCisgICAgS0VZQ09ERV9NSU5VUyAgICAgICAgICAgPSA2OSwKKyAgICBLRVlDT0RFX0VRVUFMUyAgICAgICAgICA9IDcwLAorICAgIEtFWUNPREVfTEVGVF9CUkFDS0VUICAgID0gNzEsCisgICAgS0VZQ09ERV9SSUdIVF9CUkFDS0VUICAgPSA3MiwKKyAgICBLRVlDT0RFX0JBQ0tTTEFTSCAgICAgICA9IDczLAorICAgIEtFWUNPREVfU0VNSUNPTE9OICAgICAgID0gNzQsCisgICAgS0VZQ09ERV9BUE9TVFJPUEhFICAgICAgPSA3NSwKKyAgICBLRVlDT0RFX1NMQVNIICAgICAgICAgICA9IDc2LAorICAgIEtFWUNPREVfQVQgICAgICAgICAgICAgID0gNzcsCisgICAgS0VZQ09ERV9OVU0gICAgICAgICAgICAgPSA3OCwKKyAgICBLRVlDT0RFX0hFQURTRVRIT09LICAgICA9IDc5LAorICAgIEtFWUNPREVfRk9DVVMgICAgICAgICAgID0gODAsICAgLy8gKkNhbWVyYSogZm9jdXMKKyAgICBLRVlDT0RFX1BMVVMgICAgICAgICAgICA9IDgxLAorICAgIEtFWUNPREVfTUVOVSAgICAgICAgICAgID0gODIsCisgICAgS0VZQ09ERV9OT1RJRklDQVRJT04gICAgPSA4MywKKyAgICBLRVlDT0RFX1NFQVJDSCAgICAgICAgICA9IDg0LAorICAgIEtFWUNPREVfTUVESUFfUExBWV9QQVVTRT0gODUsCisgICAgS0VZQ09ERV9NRURJQV9TVE9QICAgICAgPSA4NiwKKyAgICBLRVlDT0RFX01FRElBX05FWFQgICAgICA9IDg3LAorICAgIEtFWUNPREVfTUVESUFfUFJFVklPVVMgID0gODgsCisgICAgS0VZQ09ERV9NRURJQV9SRVdJTkQgICAgPSA4OSwKKyAgICBLRVlDT0RFX01FRElBX0ZBU1RfRk9SV0FSRCA9IDkwLAorICAgIEtFWUNPREVfTVVURSAgICAgICAgICAgID0gOTEsCisgICAgS0VZQ09ERV9QQUdFX1VQICAgICAgICAgPSA5MiwKKyAgICBLRVlDT0RFX1BBR0VfRE9XTiAgICAgICA9IDkzCisKKyAgICAvKiBOT1RFOiBJZiB5b3UgYWRkIGEgbmV3IGtleWNvZGUgaGVyZSB5b3UgbXVzdCBhbHNvIGFkZCBpdCB0bzoKKyAgICAgKiAgbmF0aXZlL2luY2x1ZGUvYW5kcm9pZC9rZXljb2Rlcy5oCisgICAgICogIGZyYW1ld29ya3MvYmFzZS9pbmNsdWRlL3VpL0tleWNvZGVMYWJlbHMuaAorICAgICAqICAgZnJhbWV3b3Jrcy9iYXNlL2NvcmUvamF2YS9hbmRyb2lkL3ZpZXcvS2V5RXZlbnQuamF2YQorICAgICAqICAgdG9vbHMvcHVwcGV0X21hc3Rlci9QdXBwZXRNYXN0ZXIubmF2X2tleXMucHkKKyAgICAgKiAgIGZyYW1ld29ya3MvYmFzZS9jb3JlL3Jlcy9yZXMvdmFsdWVzL2F0dHJzLnhtbAorICAgICAqLworfTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKworI2VuZGlmIC8vIF9BTkRST0lEX0tFWUNPREVTX0gKZGlmZiAtLWdpdCBhL25hdGl2ZS9pbmNsdWRlL2FuZHJvaWQvbG9vcGVyLmggYi9uYXRpdmUvaW5jbHVkZS9hbmRyb2lkL2xvb3Blci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5MTcyMTYKLS0tIC9kZXYvbnVsbAorKysgYi9uYXRpdmUvaW5jbHVkZS9hbmRyb2lkL2xvb3Blci5oCkBAIC0wLDAgKzEsMTc3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworCisjaWZuZGVmIEFORFJPSURfTE9PUEVSX0gKKyNkZWZpbmUgQU5EUk9JRF9MT09QRVJfSAorCisjaW5jbHVkZSA8cG9sbC5oPgorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKKy8qKgorICogQUxvb3BlcgorICoKKyAqIEEgbG9vcGVyIGlzIHRoZSBzdGF0ZSB0cmFja2luZyBhbiBldmVudCBsb29wIGZvciBhIHRocmVhZC4KKyAqIExvb3BlcnMgZG8gbm90IGRlZmluZSBldmVudCBzdHJ1Y3R1cmVzIG9yIG90aGVyIHN1Y2ggdGhpbmdzOyByYXRoZXIKKyAqIHRoZXkgYXJlIGEgbG93ZXItbGV2ZWwgZmFjaWxpdHkgdG8gYXR0YWNoIG9uZSBvciBtb3JlIGRpc2NyZXRlIG9iamVjdHMKKyAqIGxpc3RlbmluZyBmb3IgYW4gZXZlbnQuICBBbiAiZXZlbnQiIGhlcmUgaXMgc2ltcGx5IGRhdGEgYXZhaWxhYmxlIG9uCisgKiBhIGZpbGUgZGVzY3JpcHRvcjogZWFjaCBhdHRhY2hlZCBvYmplY3QgaGFzIGFuIGFzc29jaWF0ZWQgZmlsZSBkZXNjcmlwdG9yLAorICogYW5kIHdhaXRpbmcgZm9yICJldmVudHMiIG1lYW5zIChpbnRlcm5hbGx5KSBwb2xsaW5nIG9uIGFsbCBvZiB0aGVzZSBmaWxlCisgKiBkZXNjcmlwdG9ycyB1bnRpbCBvbmUgb3IgbW9yZSBvZiB0aGVtIGhhdmUgZGF0YSBhdmFpbGFibGUuCisgKgorICogQSB0aHJlYWQgY2FuIGhhdmUgb25seSBvbmUgQUxvb3BlciBhc3NvY2lhdGVkIHdpdGggaXQuCisgKi8KK3N0cnVjdCBBTG9vcGVyOwordHlwZWRlZiBzdHJ1Y3QgQUxvb3BlciBBTG9vcGVyOworCisvKioKKyAqIEZvciBjYWxsYmFjay1iYXNlZCBldmVudCBsb29wcywgdGhpcyBpcyB0aGUgcHJvdG90eXBlIG9mIHRoZSBmdW5jdGlvbgorICogdGhhdCBpcyBjYWxsZWQuICBJdCBpcyBnaXZlbiB0aGUgZmlsZSBkZXNjcmlwdG9yIGl0IGlzIGFzc29jaWF0ZWQgd2l0aCwKKyAqIGEgYml0bWFzayBvZiB0aGUgcG9sbCBldmVudHMgdGhhdCB3ZXJlIHRyaWdnZXJlZCAodHlwaWNhbGx5IFBPTExJTiksIGFuZAorICogdGhlIGRhdGEgcG9pbnRlciB0aGF0IHdhcyBvcmlnaW5hbGx5IHN1cHBsaWVkLgorICoKKyAqIEltcGxlbWVudGF0aW9ucyBzaG91bGQgcmV0dXJuIDEgdG8gY29udGludWUgcmVjZWl2aW5nIGNhbGxiYWNrcywgb3IgMAorICogdG8gaGF2ZSB0aGlzIGZpbGUgZGVzY3JpcHRvciBhbmQgY2FsbGJhY2sgdW5yZWdpc3RlcmVkIGZyb20gdGhlIGxvb3Blci4KKyAqLwordHlwZWRlZiBpbnQgQUxvb3Blcl9jYWxsYmFja0Z1bmMoaW50IGZkLCBpbnQgZXZlbnRzLCB2b2lkKiBkYXRhKTsKKworLyoqCisgKiBSZXR1cm4gdGhlIEFMb29wZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBjYWxsaW5nIHRocmVhZCwgb3IgTlVMTCBpZgorICogdGhlcmUgaXMgbm90IG9uZS4KKyAqLworQUxvb3BlciogQUxvb3Blcl9mb3JUaHJlYWQoKTsKKworZW51bSB7CisgICAgLyoqCisgICAgICogT3B0aW9uIGZvciBBTG9vcGVyX3ByZXBhcmU6IHRoaXMgQUxvb3BlciB3aWxsIGFjY2VwdCBjYWxscyB0bworICAgICAqIEFMb29wZXJfYWRkRmQoKSB0aGF0IGRvIG5vdCBoYXZlIGEgY2FsbGJhY2sgKHRoYXQgaXMgcHJvdmlkZSBOVUxMCisgICAgICogZm9yIHRoZSBjYWxsYmFjaykuICBJbiB0aGlzIGNhc2UgdGhlIGNhbGxlciBvZiBBTG9vcGVyX3BvbGxPbmNlKCkKKyAgICAgKiBvciBBTG9vcGVyX3BvbGxBbGwoKSBNVVNUIGNoZWNrIHRoZSByZXR1cm4gZnJvbSB0aGVzZSBmdW5jdGlvbnMgdG8KKyAgICAgKiBkaXNjb3ZlciB3aGVuIGRhdGEgaXMgYXZhaWxhYmxlIG9uIHN1Y2ggZmRzIGFuZCBwcm9jZXNzIGl0LgorICAgICAqLworICAgIEFMT09QRVJfUFJFUEFSRV9BTExPV19OT05fQ0FMTEJBQ0tTID0gMTw8MAorfTsKKworLyoqCisgKiBQcmVwYXJlIGFuIEFMb29wZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBjYWxsaW5nIHRocmVhZCwgYW5kIHJldHVybiBpdC4KKyAqIElmIHRoZSB0aHJlYWQgYWxyZWFkeSBoYXMgYW4gQUxvb3BlciwgaXQgaXMgcmV0dXJuZWQuICBPdGhlcndpc2UsIGEgbmV3CisgKiBvbmUgaXMgY3JlYXRlZCwgYXNzb2NpYXRlZCB3aXRoIHRoZSB0aHJlYWQsIGFuZCByZXR1cm5lZC4KKyAqCisgKiBUaGUgb3B0cyBtYXkgYmUgQUxPT1BFUl9QUkVQQVJFX0FMTE9XX05PTl9DQUxMQkFDS1Mgb3IgMC4KKyAqLworQUxvb3BlciogQUxvb3Blcl9wcmVwYXJlKGludDMyX3Qgb3B0cyk7CisKK2VudW0geworICAgIC8qKgorICAgICAqIFJlc3VsdCBmcm9tIEFMb29wZXJfcG9sbE9uY2UoKSBhbmQgQUxvb3Blcl9wb2xsQWxsKCk6IG9uZSBvcgorICAgICAqIG1vcmUgY2FsbGJhY2tzIHdlcmUgZXhlY3V0ZWQuCisgICAgICovCisgICAgQUxPT1BFUl9QT0xMX0NBTExCQUNLID0gLTEsCisgICAgCisgICAgLyoqCisgICAgICogUmVzdWx0IGZyb20gQUxvb3Blcl9wb2xsT25jZSgpIGFuZCBBTG9vcGVyX3BvbGxBbGwoKTogdGhlCisgICAgICogdGltZW91dCBleHBpcmVkLgorICAgICAqLworICAgIEFMT09QRVJfUE9MTF9USU1FT1VUID0gLTIsCisgICAgCisgICAgLyoqCisgICAgICogUmVzdWx0IGZyb20gQUxvb3Blcl9wb2xsT25jZSgpIGFuZCBBTG9vcGVyX3BvbGxBbGwoKTogYW4gZXJyb3IKKyAgICAgKiBvY2N1cnJlZC4KKyAgICAgKi8KKyAgICBBTE9PUEVSX1BPTExfRVJST1IgPSAtMywKK307CisKKy8qKgorICogV2FpdCBmb3IgZXZlbnRzIHRvIGJlIGF2YWlsYWJsZSwgd2l0aCBvcHRpb25hbCB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcy4KKyAqIEludm9rZXMgY2FsbGJhY2tzIGZvciBhbGwgZmlsZSBkZXNjcmlwdG9ycyBvbiB3aGljaCBhbiBldmVudCBvY2N1cnJlZC4KKyAqCisgKiBJZiB0aGUgdGltZW91dCBpcyB6ZXJvLCByZXR1cm5zIGltbWVkaWF0ZWx5IHdpdGhvdXQgYmxvY2tpbmcuCisgKiBJZiB0aGUgdGltZW91dCBpcyBuZWdhdGl2ZSwgd2FpdHMgaW5kZWZpbml0ZWx5IHVudGlsIGFuIGV2ZW50IGFwcGVhcnMuCisgKgorICogUmV0dXJucyBBTE9PUEVSX1BPTExfQ0FMTEJBQ0sgaWYgYSBjYWxsYmFjayB3YXMgaW52b2tlZC4KKyAqCisgKiBSZXR1cm5zIEFMT09QRVJfUE9MTF9USU1FT1VUIGlmIHRoZXJlIHdhcyBubyBkYXRhIGJlZm9yZSB0aGUgZ2l2ZW4KKyAqIHRpbWVvdXQgZXhwaXJlZC4KKyAqCisgKiBSZXR1cm5zIEFMT1BFUl9QT0xMX0VSUk9SIGlmIGFuIGVycm9yIG9jY3VycmVkLgorICoKKyAqIFJldHVybnMgYSB2YWx1ZSA+PSAwIGNvbnRhaW5pbmcgYSBmaWxlIGRlc2NyaXB0b3IgaWYgaXQgaGFzIGRhdGEKKyAqIGFuZCBpdCBoYXMgbm8gY2FsbGJhY2sgZnVuY3Rpb24gKHJlcXVpcmluZyB0aGUgY2FsbGVyIGhlcmUgdG8gaGFuZGxlIGl0KS4KKyAqIEluIHRoaXMgKGFuZCBvbmx5IHRoaXMpIGNhc2Ugb3V0RXZlbnRzIGFuZCBvdXREYXRhIHdpbGwgY29udGFpbiB0aGUgcG9sbAorICogZXZlbnRzIGFuZCBkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgZmQuCisgKgorICogVGhpcyBtZXRob2QgZG9lcyBub3QgcmV0dXJuIHVudGlsIGl0IGhhcyBmaW5pc2hlZCBpbnZva2luZyB0aGUgYXBwcm9wcmlhdGUgY2FsbGJhY2tzCisgKiBmb3IgYWxsIGZpbGUgZGVzY3JpcHRvcnMgdGhhdCB3ZXJlIHNpZ25hbGxlZC4KKyAqLworaW50MzJfdCBBTG9vcGVyX3BvbGxPbmNlKGludCB0aW1lb3V0TWlsbGlzLCBpbnQqIG91dEV2ZW50cywgdm9pZCoqIG91dERhdGEpOworCisvKioKKyAqIExpa2UgQUxvb3Blcl9wb2xsT25jZSgpLCBidXQgcGVyZm9ybXMgYWxsIHBlbmRpbmcgY2FsbGJhY2tzIHVudGlsIGFsbAorICogZGF0YSBoYXMgYmVlbiBjb25zdW1lZCBvciBhIGZpbGUgZGVzY3JpcHRvciBpcyBhdmFpbGFibGUgd2l0aCBubyBjYWxsYmFjay4KKyAqIFRoaXMgZnVuY3Rpb24gd2lsbCBuZXZlciByZXR1cm4gQUxPT1BFUl9QT0xMX0NBTExCQUNLLgorICovCitpbnQzMl90IEFMb29wZXJfcG9sbEFsbChpbnQgdGltZW91dE1pbGxpcywgaW50KiBvdXRFdmVudHMsIHZvaWQqKiBvdXREYXRhKTsKKworLyoqCisgKiBBY3F1aXJlIGEgcmVmZXJlbmNlIG9uIHRoZSBnaXZlbiBBTG9vcGVyIG9iamVjdC4gIFRoaXMgcHJldmVudHMgdGhlIG9iamVjdAorICogZnJvbSBiZWluZyBkZWxldGVkIHVudGlsIHRoZSByZWZlcmVuY2UgaXMgcmVtb3ZlZC4gIFRoaXMgaXMgb25seSBuZWVkZWQKKyAqIHRvIHNhZmVseSBoYW5kIGFuIEFMb29wZXIgZnJvbSBvbmUgdGhyZWFkIHRvIGFub3RoZXIuCisgKi8KK3ZvaWQgQUxvb3Blcl9hY3F1aXJlKEFMb29wZXIqIGxvb3Blcik7CisKKy8qKgorICogUmVtb3ZlIGEgcmVmZXJlbmNlIHRoYXQgd2FzIHByZXZpb3VzbHkgYWNxdWlyZWQgd2l0aCBBTG9vcGVyX2FjcXVpcmUoKS4KKyAqLwordm9pZCBBTG9vcGVyX3JlbGVhc2UoQUxvb3BlciogbG9vcGVyKTsKKworLyoqCisgKiBBZGQgYSBuZXcgZmlsZSBkZXNjcmlwdG9yIHRvIGJlIHBvbGxlZCBieSB0aGUgbG9vcGVyLiAgSWYgdGhlIHNhbWUgZmlsZQorICogZGVzY3JpcHRvciB3YXMgcHJldmlvdXNseSBhZGRlZCwgaXQgaXMgcmVwbGFjZWQuCisgKgorICogImZkIiBpcyB0aGUgZmlsZSBkZXNjcmlwdG9yIHRvIGJlIGFkZGVkLgorICogImV2ZW50cyIgYXJlIHRoZSBwb2xsIGV2ZW50cyB0byB3YWtlIHVwIG9uLiAgVHlwaWNhbGx5IHRoaXMgaXMgUE9MTElOLgorICogImNhbGxiYWNrIiBpcyB0aGUgZnVuY3Rpb24gdG8gY2FsbCB3aGVuIHRoZXJlIGlzIGFuIGV2ZW50IG9uIHRoZSBmaWxlCisgKiBkZXNjcmlwdG9yLgorICogImlkIiBpcyBhbiBpZGVudGlmaWVyIHRvIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGZpbGUgZGVzY3JpcHRvciwgb3IgMC4KKyAqICJkYXRhIiBpcyBhIHByaXZhdGUgZGF0YSBwb2ludGVyIHRvIHN1cHBseSB0byB0aGUgY2FsbGJhY2suCisgKgorICogVGhlcmUgYXJlIHR3byBtYWluIHVzZXMgb2YgdGhpcyBmdW5jdGlvbjoKKyAqCisgKiAoMSkgSWYgImNhbGxiYWNrIiBpcyBub24tTlVMTCwgdGhlbgorICogdGhpcyBmdW5jdGlvbiB3aWxsIGJlIGNhbGxlZCB3aGVuIHRoZXJlIGlzIGRhdGEgb24gdGhlIGZpbGUgZGVzY3JpcHRvci4gIEl0CisgKiBzaG91bGQgZXhlY3V0ZSBhbnkgZXZlbnRzIGl0IGhhcyBwZW5kaW5nLCBhcHByb3ByaWF0ZWx5IHJlYWRpbmcgZnJvbSB0aGUKKyAqIGZpbGUgZGVzY3JpcHRvci4KKyAqCisgKiAoMikgSWYgImNhbGxiYWNrIiBpcyBOVUxMLCB0aGUgZmQgd2lsbCBiZSByZXR1cm5lZCBieSBBTG9vcGVyX3BvbGxPbmNlCisgKiB3aGVuIGl0IGhhcyBkYXRhIGF2YWlsYWJsZSwgcmVxdWlyaW5nIHRoZSBjYWxsZXIgdG8gdGFrZSBjYXJlIG9mIHByb2Nlc3NpbmcKKyAqIGl0LgorICovCit2b2lkIEFMb29wZXJfYWRkRmQoQUxvb3BlciogbG9vcGVyLCBpbnQgZmQsIGludCBldmVudHMsCisgICAgICAgIEFMb29wZXJfY2FsbGJhY2tGdW5jKiBjYWxsYmFjaywgdm9pZCogZGF0YSk7CisKKy8qKgorICogUmVtb3ZlIGEgcHJldmlvdXNseSBhZGRlZCBmaWxlIGRlc2NyaXB0b3IgZnJvbSB0aGUgbG9vcGVyLgorICovCitpbnQzMl90IEFMb29wZXJfcmVtb3ZlRmQoQUxvb3BlciogbG9vcGVyLCBpbnQgZmQpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK307CisjZW5kaWYKKworI2VuZGlmIC8vIEFORFJPSURfTkFUSVZFX1dJTkRPV19ICmRpZmYgLS1naXQgYS9uYXRpdmUvaW5jbHVkZS9hbmRyb2lkL25hdGl2ZV9hY3Rpdml0eS5oIGIvbmF0aXZlL2luY2x1ZGUvYW5kcm9pZC9uYXRpdmVfYWN0aXZpdHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMGZmMDUyCi0tLSAvZGV2L251bGwKKysrIGIvbmF0aXZlL2luY2x1ZGUvYW5kcm9pZC9uYXRpdmVfYWN0aXZpdHkuaApAQCAtMCwwICsxLDIwNSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKworI2lmbmRlZiBBTkRST0lEX05BVElWRV9BQ1RJVklUWV9ICisjZGVmaW5lIEFORFJPSURfTkFUSVZFX0FDVElWSVRZX0gKKworI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorCisjaW5jbHVkZSA8am5pLmg+CisKKyNpbmNsdWRlIDxhbmRyb2lkL2lucHV0Lmg+CisjaW5jbHVkZSA8YW5kcm9pZC9uYXRpdmVfd2luZG93Lmg+CisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworc3RydWN0IEFOYXRpdmVBY3Rpdml0eUNhbGxiYWNrczsKKworLyoqCisgKiBUaGlzIHN0cnVjdHVyZSBkZWZpbmVzIHRoZSBuYXRpdmUgc2lkZSBvZiBhbiBhbmRyb2lkLmFwcC5OYXRpdmVBY3Rpdml0eS4KKyAqIEl0IGlzIGNyZWF0ZWQgYnkgdGhlIGZyYW1ld29yaywgYW5kIGhhbmRlZCB0byB0aGUgYXBwbGljYXRpb24ncyBuYXRpdmUKKyAqIGNvZGUgYXMgaXQgaXMgYmVpbmcgbGF1bmNoZWQuCisgKi8KK3R5cGVkZWYgc3RydWN0IEFOYXRpdmVBY3Rpdml0eSB7CisgICAgLyoqCisgICAgICogUG9pbnRlciB0byB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gdGFibGUgb2YgdGhlIG5hdGl2ZSBhcHBsaWNhdGlvbi4KKyAgICAgKiBZb3UgY2FuIHNldCB0aGUgZnVuY3Rpb25zIGhlcmUgdG8geW91ciBvd24gY2FsbGJhY2tzLiAgVGhlIGNhbGxiYWNrcworICAgICAqIHBvaW50ZXIgaXRzZWxmIGhlcmUgc2hvdWxkIG5vdCBiZSBjaGFuZ2VkOyBpdCBpcyBhbGxvY2F0ZWQgYW5kIG1hbmFnZWQKKyAgICAgKiBmb3IgeW91IGJ5IHRoZSBmcmFtZXdvcmsuCisgICAgICovCisgICAgc3RydWN0IEFOYXRpdmVBY3Rpdml0eUNhbGxiYWNrcyogY2FsbGJhY2tzOworCisgICAgLyoqCisgICAgICogVGhlIGdsb2JhbCBoYW5kbGUgb24gdGhlIHByb2Nlc3MncyBKYXZhIFZNLgorICAgICAqLworICAgIEphdmFWTSogdm07CisKKyAgICAvKioKKyAgICAgKiBKTkkgY29udGV4dCBmb3IgdGhlIG1haW4gdGhyZWFkIG9mIHRoZSBhcHAuICBOb3RlIHRoYXQgdGhpcyBmaWVsZAorICAgICAqIGNhbiBPTkxZIGJlIHVzZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQgb2YgdGhlIHByb2Nlc3M7IHRoYXQgaXMsIHRoZQorICAgICAqIHRocmVhZCB0aGF0IGNhbGxzIGludG8gdGhlIEFOYXRpdmVBY3Rpdml0eUNhbGxiYWNrcy4KKyAgICAgKi8KKyAgICBKTklFbnYqIGVudjsKKworICAgIC8qKgorICAgICAqIFRoZSBOYXRpdmVBY3Rpdml0eSBKYXZhIGNsYXNzLgorICAgICAqLworICAgIGpvYmplY3QgY2xheno7CisKKyAgICAvKioKKyAgICAgKiBQYXRoIHRvIHRoaXMgYXBwbGljYXRpb24ncyBpbnRlcm5hbCBkYXRhIGRpcmVjdG9yeS4KKyAgICAgKi8KKyAgICBjb25zdCBjaGFyKiBpbnRlcm5hbERhdGFQYXRoOworICAgIAorICAgIC8qKgorICAgICAqIFBhdGggdG8gdGhpcyBhcHBsaWNhdGlvbidzIGV4dGVybmFsIChyZW1vdmFibGUvbW91bnRhYmxlKSBkYXRhIGRpcmVjdG9yeS4KKyAgICAgKi8KKyAgICBjb25zdCBjaGFyKiBleHRlcm5hbERhdGFQYXRoOworICAgIAorICAgIC8qKgorICAgICAqIFRoZSBwbGF0Zm9ybSdzIFNESyB2ZXJzaW9uIGNvZGUuCisgICAgICovCisgICAgaW50MzJfdCBzZGtWZXJzaW9uOworICAgIAorICAgIC8qKgorICAgICAqIFRoaXMgaXMgdGhlIG5hdGl2ZSBpbnN0YW5jZSBvZiB0aGUgYXBwbGljYXRpb24uICBJdCBpcyBub3QgdXNlZCBieQorICAgICAqIHRoZSBmcmFtZXdvcmssIGJ1dCBjYW4gYmUgc2V0IGJ5IHRoZSBhcHBsaWNhdGlvbiB0byBpdHMgb3duIGluc3RhbmNlCisgICAgICogc3RhdGUuCisgICAgICovCisgICAgdm9pZCogaW5zdGFuY2U7Cit9IEFOYXRpdmVBY3Rpdml0eTsKKworLyoqCisgKiBUaGVzZSBhcmUgdGhlIGNhbGxiYWNrcyB0aGUgZnJhbWV3b3JrIG1ha2VzIGludG8gYSBuYXRpdmUgYXBwbGljYXRpb24uCisgKiBBbGwgb2YgdGhlc2UgY2FsbGJhY2tzIGhhcHBlbiBvbiB0aGUgbWFpbiB0aHJlYWQgb2YgdGhlIGFwcGxpY2F0aW9uLgorICogQnkgZGVmYXVsdCwgYWxsIGNhbGxiYWNrcyBhcmUgTlVMTDsgc2V0IHRvIGEgcG9pbnRlciB0byB5b3VyIG93biBmdW5jdGlvbgorICogdG8gaGF2ZSBpdCBjYWxsZWQuCisgKi8KK3R5cGVkZWYgc3RydWN0IEFOYXRpdmVBY3Rpdml0eUNhbGxiYWNrcyB7CisgICAgLyoqCisgICAgICogTmF0aXZlQWN0aXZpdHkgaGFzIHN0YXJ0ZWQuICBTZWUgSmF2YSBkb2N1bWVudGF0aW9uIGZvciBBY3Rpdml0eS5vblN0YXJ0KCkKKyAgICAgKiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgKi8KKyAgICB2b2lkICgqb25TdGFydCkoQU5hdGl2ZUFjdGl2aXR5KiBhY3Rpdml0eSk7CisgICAgCisgICAgLyoqCisgICAgICogTmF0aXZlQWN0aXZpdHkgaGFzIHJlc3VtZWQuICBTZWUgSmF2YSBkb2N1bWVudGF0aW9uIGZvciBBY3Rpdml0eS5vblJlc3VtZSgpCisgICAgICogZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICovCisgICAgdm9pZCAoKm9uUmVzdW1lKShBTmF0aXZlQWN0aXZpdHkqIGFjdGl2aXR5KTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBGcmFtZXdvcmsgaXMgYXNraW5nIE5hdGl2ZUFjdGl2aXR5IHRvIHNhdmUgaXRzIGN1cnJlbnQgaW5zdGFuY2Ugc3RhdGUuCisgICAgICogU2VlIEphdmEgZG9jdW1lbnRhdGlvbiBmb3IgQWN0aXZpdHkub25TYXZlSW5zdGFuY2VTdGF0ZSgpIGZvciBtb3JlCisgICAgICogaW5mb3JtYXRpb24uICBUaGUgcmV0dXJuZWQgcG9pbnRlciBuZWVkcyB0byBiZSBjcmVhdGVkIHdpdGggbWFsbG9jKCk7CisgICAgICogdGhlIGZyYW1ld29yayB3aWxsIGNhbGwgZnJlZSgpIG9uIGl0IGZvciB5b3UuICBZb3UgYWxzbyBtdXN0IGZpbGwgaW4KKyAgICAgKiBvdXRTaXplIHdpdGggdGhlIG51bWJlciBvZiBieXRlcyBpbiB0aGUgYWxsb2NhdGlvbi4gIE5vdGUgdGhhdCB0aGUKKyAgICAgKiBzYXZlZCBzdGF0ZSB3aWxsIGJlIHBlcnNpc3RlZCwgc28gaXQgY2FuIG5vdCBjb250YWluIGFueSBhY3RpdmUKKyAgICAgKiBlbnRpdGllcyAocG9pbnRlcnMgdG8gbWVtb3J5LCBmaWxlIGRlc2NyaXB0b3JzLCBldGMpLgorICAgICAqLworICAgIHZvaWQqICgqb25TYXZlSW5zdGFuY2VTdGF0ZSkoQU5hdGl2ZUFjdGl2aXR5KiBhY3Rpdml0eSwgc2l6ZV90KiBvdXRTaXplKTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBOYXRpdmVBY3Rpdml0eSBoYXMgcGF1c2VkLiAgU2VlIEphdmEgZG9jdW1lbnRhdGlvbiBmb3IgQWN0aXZpdHkub25QYXVzZSgpCisgICAgICogZm9yIG1vcmUgaW5mb3JtYXRpb24uCisgICAgICovCisgICAgdm9pZCAoKm9uUGF1c2UpKEFOYXRpdmVBY3Rpdml0eSogYWN0aXZpdHkpOworICAgIAorICAgIC8qKgorICAgICAqIE5hdGl2ZUFjdGl2aXR5IGhhcyBzdG9wcGVkLiAgU2VlIEphdmEgZG9jdW1lbnRhdGlvbiBmb3IgQWN0aXZpdHkub25TdG9wKCkKKyAgICAgKiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KKyAgICAgKi8KKyAgICB2b2lkICgqb25TdG9wKShBTmF0aXZlQWN0aXZpdHkqIGFjdGl2aXR5KTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBOYXRpdmVBY3Rpdml0eSBpcyBiZWluZyBkZXN0cm95ZWQuICBTZWUgSmF2YSBkb2N1bWVudGF0aW9uIGZvciBBY3Rpdml0eS5vbkRlc3Ryb3koKQorICAgICAqIGZvciBtb3JlIGluZm9ybWF0aW9uLgorICAgICAqLworICAgIHZvaWQgKCpvbkRlc3Ryb3kpKEFOYXRpdmVBY3Rpdml0eSogYWN0aXZpdHkpOworCisgICAgLyoqCisgICAgICogRm9jdXMgaGFzIGNoYW5nZWQgaW4gdGhpcyBOYXRpdmVBY3Rpdml0eSdzIHdpbmRvdy4gIFRoaXMgaXMgb2Z0ZW4gdXNlZCwKKyAgICAgKiBmb3IgZXhhbXBsZSwgdG8gcGF1c2UgYSBnYW1lIHdoZW4gaXQgbG9zZXMgaW5wdXQgZm9jdXMuCisgICAgICovCisgICAgdm9pZCAoKm9uV2luZG93Rm9jdXNDaGFuZ2VkKShBTmF0aXZlQWN0aXZpdHkqIGFjdGl2aXR5LCBpbnQgaGFzRm9jdXMpOworICAgIAorICAgIC8qKgorICAgICAqIFRoZSBkcmF3aW5nIHdpbmRvdyBmb3IgdGhpcyBuYXRpdmUgYWN0aXZpdHkgaGFzIGJlZW4gY3JlYXRlZC4gIFlvdQorICAgICAqIGNhbiB1c2UgdGhlIGdpdmVuIG5hdGl2ZSB3aW5kb3cgb2JqZWN0IHRvIHN0YXJ0IGRyYXdpbmcuCisgICAgICovCisgICAgdm9pZCAoKm9uTmF0aXZlV2luZG93Q3JlYXRlZCkoQU5hdGl2ZUFjdGl2aXR5KiBhY3Rpdml0eSwgQU5hdGl2ZVdpbmRvdyogd2luZG93KTsKKworICAgIC8qKgorICAgICAqIFRoZSBkcmF3aW5nIHdpbmRvdyBmb3IgdGhpcyBuYXRpdmUgYWN0aXZpdHkgaXMgZ29pbmcgdG8gYmUgZGVzdHJveWVkLgorICAgICAqIFlvdSBNVVNUIGVuc3VyZSB0aGF0IHlvdSBkbyBub3QgdG91Y2ggdGhlIHdpbmRvdyBvYmplY3QgYWZ0ZXIgcmV0dXJuaW5nCisgICAgICogZnJvbSB0aGlzIGZ1bmN0aW9uOiBpbiB0aGUgY29tbW9uIGNhc2Ugb2YgZHJhd2luZyB0byB0aGUgd2luZG93IGZyb20KKyAgICAgKiBhbm90aGVyIHRocmVhZCwgdGhhdCBtZWFucyB0aGUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBjYWxsYmFjayBtdXN0CisgICAgICogcHJvcGVybHkgc3luY2hyb25pemUgd2l0aCB0aGUgb3RoZXIgdGhyZWFkIHRvIHN0b3AgaXRzIGRyYXdpbmcgYmVmb3JlCisgICAgICogcmV0dXJuaW5nIGZyb20gaGVyZS4KKyAgICAgKi8KKyAgICB2b2lkICgqb25OYXRpdmVXaW5kb3dEZXN0cm95ZWQpKEFOYXRpdmVBY3Rpdml0eSogYWN0aXZpdHksIEFOYXRpdmVXaW5kb3cqIHdpbmRvdyk7CisgICAgCisgICAgLyoqCisgICAgICogVGhlIGlucHV0IHF1ZXVlIGZvciB0aGlzIG5hdGl2ZSBhY3Rpdml0eSdzIHdpbmRvdyBoYXMgYmVlbiBjcmVhdGVkLgorICAgICAqIFlvdSBjYW4gdXNlIHRoZSBnaXZlbiBpbnB1dCBxdWV1ZSB0byBzdGFydCByZXRyaWV2aW5nIGlucHV0IGV2ZW50cy4KKyAgICAgKi8KKyAgICB2b2lkICgqb25JbnB1dFF1ZXVlQ3JlYXRlZCkoQU5hdGl2ZUFjdGl2aXR5KiBhY3Rpdml0eSwgQUlucHV0UXVldWUqIHF1ZXVlKTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBUaGUgaW5wdXQgcXVldWUgZm9yIHRoaXMgbmF0aXZlIGFjdGl2aXR5J3Mgd2luZG93IGlzIGJlaW5nIGRlc3Ryb3llZC4KKyAgICAgKiBZb3Ugc2hvdWxkIG5vIGxvbmdlciB0cnkgdG8gcmVmZXJlbmNlIHRoaXMgb2JqZWN0IHVwb24gcmV0dXJuaW5nIGZyb20gdGhpcworICAgICAqIGZ1bmN0aW9uLgorICAgICAqLworICAgIHZvaWQgKCpvbklucHV0UXVldWVEZXN0cm95ZWQpKEFOYXRpdmVBY3Rpdml0eSogYWN0aXZpdHksIEFJbnB1dFF1ZXVlKiBxdWV1ZSk7CisKKyAgICAvKioKKyAgICAgKiBUaGUgc3lzdGVtIGlzIHJ1bm5pbmcgbG93IG9uIG1lbW9yeS4gIFVzZSB0aGlzIGNhbGxiYWNrIHRvIHJlbGVhc2UKKyAgICAgKiByZXNvdXJjZXMgeW91IGRvIG5vdCBuZWVkLCB0byBoZWxwIHRoZSBzeXN0ZW0gYXZvaWQga2lsbGluZyBtb3JlCisgICAgICogaW1wb3J0YW50IHByb2Nlc3Nlcy4KKyAgICAgKi8KKyAgICB2b2lkICgqb25Mb3dNZW1vcnkpKEFOYXRpdmVBY3Rpdml0eSogYWN0aXZpdHkpOworfSBBTmF0aXZlQWN0aXZpdHlDYWxsYmFja3M7CisKKy8qKgorICogVGhpcyBpcyB0aGUgZnVuY3Rpb24gdGhhdCBtdXN0IGJlIGluIHRoZSBuYXRpdmUgY29kZSB0byBpbnN0YW50aWF0ZSB0aGUKKyAqIGFwcGxpY2F0aW9uJ3MgbmF0aXZlIGFjdGl2aXR5LiAgSXQgaXMgY2FsbGVkIHdpdGggdGhlIGFjdGl2aXR5IGluc3RhbmNlIChzZWUKKyAqIGFib3ZlKTsgaWYgdGhlIGNvZGUgaXMgYmVpbmcgaW5zdGFudGlhdGVkIGZyb20gYSBwcmV2aW91c2x5IHNhdmVkIGluc3RhbmNlLAorICogdGhlIHNhdmVkU3RhdGUgd2lsbCBiZSBub24tTlVMTCBhbmQgcG9pbnQgdG8gdGhlIHNhdmVkIGRhdGEuCisgKi8KK3R5cGVkZWYgdm9pZCBBTmF0aXZlQWN0aXZpdHlfY3JlYXRlRnVuYyhBTmF0aXZlQWN0aXZpdHkqIGFjdGl2aXR5LAorICAgICAgICB2b2lkKiBzYXZlZFN0YXRlLCBzaXplX3Qgc2F2ZWRTdGF0ZVNpemUpOworCisvKioKKyAqIFRoZSBuYW1lIG9mIHRoZSBmdW5jdGlvbiB0aGF0IE5hdGl2ZUluc3RhbmNlIGxvb2tzIGZvciB3aGVuIGxhdW5jaGluZyBpdHMKKyAqIG5hdGl2ZSBjb2RlLgorICovCitleHRlcm4gQU5hdGl2ZUFjdGl2aXR5X2NyZWF0ZUZ1bmMgQU5hdGl2ZUFjdGl2aXR5X29uQ3JlYXRlOworCit2b2lkIEFOYXRpdmVBY3Rpdml0eV9zZXRXaW5kb3dGb3JtYXQoQU5hdGl2ZUFjdGl2aXR5KiBhY3Rpdml0eSwgaW50MzJfdCBmb3JtYXQpOworCit2b2lkIEFOYXRpdmVBY3Rpdml0eV9zZXRXaW5kb3dGbGFncyhBTmF0aXZlQWN0aXZpdHkqIGFjdGl2aXR5LAorICAgICAgICB1aW50MzJfdCBhZGRGbGFncywgdWludDMyX3QgcmVtb3ZlRmxhZ3MpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK307CisjZW5kaWYKKworI2VuZGlmIC8vIEFORFJPSURfTkFUSVZFX0FDVElWSVRZX0gKKwpkaWZmIC0tZ2l0IGEvbmF0aXZlL2luY2x1ZGUvYW5kcm9pZC9uYXRpdmVfd2luZG93LmggYi9uYXRpdmUvaW5jbHVkZS9hbmRyb2lkL25hdGl2ZV93aW5kb3cuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NTk5ZDdlCi0tLSAvZGV2L251bGwKKysrIGIvbmF0aXZlL2luY2x1ZGUvYW5kcm9pZC9uYXRpdmVfd2luZG93LmgKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisjaWZuZGVmIEFORFJPSURfTkFUSVZFX1dJTkRPV19ICisjZGVmaW5lIEFORFJPSURfTkFUSVZFX1dJTkRPV19ICisKKyNpbmNsdWRlIDxhbmRyb2lkL3JlY3QuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKgorICogUGl4ZWwgZm9ybWF0cyB0aGF0IGEgd2luZG93IGNhbiB1c2UuCisgKi8KK2VudW0geworICAgIFdJTkRPV19GT1JNQVRfUkdCQV84ODg4ICAgICAgICAgID0gMSwKKyAgICBXSU5ET1dfRk9STUFUX1JHQlhfODg4OCAgICAgICAgICA9IDIsCisgICAgV0lORE9XX0ZPUk1BVF9SR0JfNTY1ICAgICAgICAgICAgPSA0LAorfTsKKworc3RydWN0IEFOYXRpdmVXaW5kb3c7Cit0eXBlZGVmIHN0cnVjdCBBTmF0aXZlV2luZG93IEFOYXRpdmVXaW5kb3c7CisKK3R5cGVkZWYgc3RydWN0IEFOYXRpdmVXaW5kb3dfQnVmZmVyIHsKKyAgICBpbnQzMl90IHdpZHRoOworICAgIGludDMyX3QgaGVpZ2h0OworICAgIGludDMyX3Qgc3RyaWRlOworICAgIGludDMyX3QgZm9ybWF0OworICAgIHZvaWQqIGJpdHM7CisgICAgCisgICAgdWludDMyX3QgcmVzZXJ2ZWRbNl07Cit9IEFOYXRpdmVXaW5kb3dfQnVmZmVyOworCisvKioKKyAqIEFjcXVpcmUgYSByZWZlcmVuY2Ugb24gdGhlIGdpdmVuIEFOYXRpdmVXaW5kb3cgb2JqZWN0LiAgVGhpcyBwcmV2ZW50cyB0aGUgb2JqZWN0CisgKiBmcm9tIGJlaW5nIGRlbGV0ZWQgdW50aWwgdGhlIHJlZmVyZW5jZSBpcyByZW1vdmVkLgorICovCit2b2lkIEFOYXRpdmVXaW5kb3dfYWNxdWlyZShBTmF0aXZlV2luZG93KiB3aW5kb3cpOworCisvKioKKyAqIFJlbW92ZSBhIHJlZmVyZW5jZSB0aGF0IHdhcyBwcmV2aW91c2x5IGFjcXVpcmVkIHdpdGggQU5hdGl2ZVdpbmRvd19hY3F1aXJlKCkuCisgKi8KK3ZvaWQgQU5hdGl2ZVdpbmRvd19yZWxlYXNlKEFOYXRpdmVXaW5kb3cqIHdpbmRvdyk7CisKKy8qCisgKiBSZXR1cm4gdGhlIGN1cnJlbnQgd2lkdGggaW4gcGl4ZWxzIG9mIHRoZSB3aW5kb3cgc3VyZmFjZS4gIFJldHVybnMgYQorICogbmVnYXRpdmUgdmFsdWUgb24gZXJyb3IuCisgKi8KK2ludDMyX3QgQU5hdGl2ZVdpbmRvd19nZXRXaWR0aChBTmF0aXZlV2luZG93KiB3aW5kb3cpOworCisvKgorICogUmV0dXJuIHRoZSBjdXJyZW50IGhlaWdodCBpbiBwaXhlbHMgb2YgdGhlIHdpbmRvdyBzdXJmYWNlLiAgUmV0dXJucyBhCisgKiBuZWdhdGl2ZSB2YWx1ZSBvbiBlcnJvci4KKyAqLworaW50MzJfdCBBTmF0aXZlV2luZG93X2dldEhlaWdodChBTmF0aXZlV2luZG93KiB3aW5kb3cpOworCisvKgorICogUmV0dXJuIHRoZSBjdXJyZW50IHBpeGVsIGZvcm1hdCBvZiB0aGUgd2luZG93IHN1cmZhY2UuICBSZXR1cm5zIGEKKyAqIG5lZ2F0aXZlIHZhbHVlIG9uIGVycm9yLgorICovCitpbnQzMl90IEFOYXRpdmVXaW5kb3dfZ2V0Rm9ybWF0KEFOYXRpdmVXaW5kb3cqIHdpbmRvdyk7CisKKy8qCisgKiBDaGFuZ2UgdGhlIGZvcm1hdCBhbmQgc2l6ZSBvZiB0aGUgd2luZG93IGJ1ZmZlcnMuCisgKgorICogVGhlIHdpZHRoIGFuZCBoZWlnaHQgY29udHJvbCB0aGUgbnVtYmVyIG9mIHBpeGVscyBpbiB0aGUgYnVmZmVycywgbm90IHRoZQorICogZGltZW5zaW9ucyBvZiB0aGUgd2luZG93IG9uIHNjcmVlbi4gIElmIHRoZXNlIGFyZSBkaWZmZXJlbnQgdGhhbiB0aGUKKyAqIHdpbmRvdydzIHBoeXNpY2FsIHNpemUsIHRoZW4gaXQgYnVmZmVyIHdpbGwgYmUgc2NhbGVkIHRvIG1hdGNoIHRoYXQgc2l6ZQorICogd2hlbiBjb21wb3NpdGluZyBpdCB0byB0aGUgc2NyZWVuLgorICoKKyAqIEZvciBhbGwgb2YgdGhlc2UgcGFyYW1ldGVycywgaWYgMCBpcyBzdXBwbGllZCB0aGVuIHRoZSB3aW5kb3cncyBiYXNlCisgKiB2YWx1ZSB3aWxsIGNvbWUgYmFjayBpbiBmb3JjZS4KKyAqLworaW50MzJfdCBBTmF0aXZlV2luZG93X3NldEJ1ZmZlcnNHZW9tZXRyeShBTmF0aXZlV2luZG93KiB3aW5kb3csIGludDMyX3Qgd2lkdGgsIGludDMyX3QgaGVpZ2h0KTsKKworLyoqCisgKiBMb2NrIHRoZSB3aW5kb3cncyBuZXh0IGRyYXdpbmcgc3VyZmFjZSBmb3Igd3JpdGluZy4KKyAqLworaW50MzJfdCBBTmF0aXZlV2luZG93X2xvY2soQU5hdGl2ZVdpbmRvdyogd2luZG93LCBBTmF0aXZlV2luZG93X0J1ZmZlciogb3V0QnVmZmVyLAorICAgICAgICBBUmVjdCogaW5PdXREaXJ0eUJvdW5kcyk7CisKKy8qKgorICogVW5sb2NrIHRoZSB3aW5kb3cncyBkcmF3aW5nIHN1cmZhY2UgYWZ0ZXIgcHJldmlvdXNseSBsb2NraW5nIGl0LAorICogcG9zdGluZyB0aGUgbmV3IGJ1ZmZlciB0byB0aGUgZGlzcGxheS4KKyAqLworaW50MzJfdCBBTmF0aXZlV2luZG93X3VubG9ja0FuZFBvc3QoQU5hdGl2ZVdpbmRvdyogd2luZG93KTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9OworI2VuZGlmCisKKyNlbmRpZiAvLyBBTkRST0lEX05BVElWRV9XSU5ET1dfSApkaWZmIC0tZ2l0IGEvbmF0aXZlL2luY2x1ZGUvYW5kcm9pZC9uYXRpdmVfd2luZG93X2puaS5oIGIvbmF0aXZlL2luY2x1ZGUvYW5kcm9pZC9uYXRpdmVfd2luZG93X2puaS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5ZTcyZWYKLS0tIC9kZXYvbnVsbAorKysgYi9uYXRpdmUvaW5jbHVkZS9hbmRyb2lkL25hdGl2ZV93aW5kb3dfam5pLmgKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgQU5EUk9JRF9OQVRJVkVfV0lORE9XX0pOSV9ICisjZGVmaW5lIEFORFJPSURfTkFUSVZFX1dJTkRPV19KTklfSAorCisjaW5jbHVkZSA8YW5kcm9pZC9uYXRpdmVfd2luZG93Lmg+CisKKyNpbmNsdWRlIDxqbmkuaD4KKworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiIHsKKyNlbmRpZgorCisvKioKKyAqIFJldHVybiB0aGUgQU5hdGl2ZVdpbmRvdyBhc3NvY2lhdGVkIHdpdGggYSBKYXZhIFN1cmZhY2Ugb2JqZWN0LAorICogZm9yIGludGVyYWN0aW5nIHdpdGggaXQgdGhyb3VnaCBuYXRpdmUgY29kZS4gIFRoaXMgYWNxdWlyZXMgYSByZWZlcmVuY2UKKyAqIG9uIHRoZSBBTmF0aXZlV2luZG93IHRoYXQgaXMgcmV0dXJuZWQ7IGJlIHN1cmUgdG8gdXNlIEFOYXRpdmVXaW5kb3dfcmVsZWFzZSgpCisgKiB3aGVuIGRvbmUgd2l0aCBpdCBzbyB0aGF0IGl0IGRvZXNuJ3QgbGVhay4KKyAqLworQU5hdGl2ZVdpbmRvdyogQU5hdGl2ZVdpbmRvd19mcm9tU3VyZmFjZShKTklFbnYqIGVudiwgam9iamVjdCBzdXJmYWNlKTsKKworI2lmZGVmIF9fY3BsdXNwbHVzCit9OworI2VuZGlmCisKKyNlbmRpZiAvLyBBTkRST0lEX05BVElWRV9XSU5ET1dfSApkaWZmIC0tZ2l0IGEvbmF0aXZlL2luY2x1ZGUvYW5kcm9pZC9yZWN0LmggYi9uYXRpdmUvaW5jbHVkZS9hbmRyb2lkL3JlY3QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTgxZjUzCi0tLSAvZGV2L251bGwKKysrIGIvbmF0aXZlL2luY2x1ZGUvYW5kcm9pZC9yZWN0LmgKQEAgLTAsMCArMSwzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKworI2lmbmRlZiBBTkRST0lEX1JFQ1RfSAorI2RlZmluZSBBTkRST0lEX1JFQ1RfSAorCisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK3R5cGVkZWYgc3RydWN0IEFSZWN0IHsKKyAgICBpbnQzMl90IGxlZnQ7CisgICAgaW50MzJfdCB0b3A7CisgICAgaW50MzJfdCByaWdodDsKKyAgICBpbnQzMl90IGJvdHRvbTsKK30gQVJlY3Q7CisKKyNpZmRlZiBfX2NwbHVzcGx1cworfTsKKyNlbmRpZgorCisjZW5kaWYgLy8gQU5EUk9JRF9SRUNUX0gKZGlmZiAtLWdpdCBhL25hdGl2ZS9pbmNsdWRlL2FuZHJvaWQvd2luZG93LmggYi9uYXRpdmUvaW5jbHVkZS9hbmRyb2lkL3dpbmRvdy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhYjE5MmIKLS0tIC9kZXYvbnVsbAorKysgYi9uYXRpdmUvaW5jbHVkZS9hbmRyb2lkL3dpbmRvdy5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCisKKyNpZm5kZWYgQU5EUk9JRF9XSU5ET1dfSAorI2RlZmluZSBBTkRST0lEX1dJTkRPV19ICisKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworLyoqCisgKiBXaW5kb3cgZmxhZ3MsIGFzIHBlciB0aGUgSmF2YSBBUEkgYXQgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLgorICovCitlbnVtIHsKKyAgICBBV0lORE9XX0ZMQUdfQUxMT1dfTE9DS19XSElMRV9TQ1JFRU5fT04gPSAweDAwMDAwMDAxLAorICAgIEFXSU5ET1dfRkxBR19ESU1fQkVISU5EICAgICAgICAgICAgICAgICA9IDB4MDAwMDAwMDIsCisgICAgQVdJTkRPV19GTEFHX0JMVVJfQkVISU5EICAgICAgICAgICAgICAgID0gMHgwMDAwMDAwNCwKKyAgICBBV0lORE9XX0ZMQUdfTk9UX0ZPQ1VTQUJMRSAgICAgICAgICAgICAgPSAweDAwMDAwMDA4LAorICAgIEFXSU5ET1dfRkxBR19OT1RfVE9VQ0hBQkxFICAgICAgICAgICAgICA9IDB4MDAwMDAwMTAsCisgICAgQVdJTkRPV19GTEFHX05PVF9UT1VDSF9NT0RBTCAgICAgICAgICAgID0gMHgwMDAwMDAyMCwKKyAgICBBV0lORE9XX0ZMQUdfVE9VQ0hBQkxFX1dIRU5fV0FLSU5HICAgICAgPSAweDAwMDAwMDQwLAorICAgIEFXSU5ET1dfRkxBR19LRUVQX1NDUkVFTl9PTiAgICAgICAgICAgICA9IDB4MDAwMDAwODAsCisgICAgQVdJTkRPV19GTEFHX0xBWU9VVF9JTl9TQ1JFRU4gICAgICAgICAgID0gMHgwMDAwMDEwMCwKKyAgICBBV0lORE9XX0ZMQUdfTEFZT1VUX05PX0xJTUlUUyAgICAgICAgICAgPSAweDAwMDAwMjAwLAorICAgIEFXSU5ET1dfRkxBR19GVUxMU0NSRUVOICAgICAgICAgICAgICAgICA9IDB4MDAwMDA0MDAsCisgICAgQVdJTkRPV19GTEFHX0ZPUkNFX05PVF9GVUxMU0NSRUVOICAgICAgID0gMHgwMDAwMDgwMCwKKyAgICBBV0lORE9XX0ZMQUdfRElUSEVSICAgICAgICAgICAgICAgICAgICAgPSAweDAwMDAxMDAwLAorICAgIEFXSU5ET1dfRkxBR19TRUNVUkUgICAgICAgICAgICAgICAgICAgICA9IDB4MDAwMDIwMDAsCisgICAgQVdJTkRPV19GTEFHX1NDQUxFRCAgICAgICAgICAgICAgICAgICAgID0gMHgwMDAwNDAwMCwKKyAgICBBV0lORE9XX0ZMQUdfSUdOT1JFX0NIRUVLX1BSRVNTRVMgICAgICAgPSAweDAwMDA4MDAwLAorICAgIEFXSU5ET1dfRkxBR19MQVlPVVRfSU5TRVRfREVDT1IgICAgICAgICA9IDB4MDAwMTAwMDAsCisgICAgQVdJTkRPV19GTEFHX0FMVF9GT0NVU0FCTEVfSU0gICAgICAgICAgID0gMHgwMDAyMDAwMCwKKyAgICBBV0lORE9XX0ZMQUdfV0FUQ0hfT1VUU0lERV9UT1VDSCAgICAgICAgPSAweDAwMDQwMDAwLAorICAgIEFXSU5ET1dfRkxBR19TSE9XX1dIRU5fTE9DS0VEICAgICAgICAgICA9IDB4MDAwODAwMDAsCisgICAgQVdJTkRPV19GTEFHX1NIT1dfV0FMTFBBUEVSICAgICAgICAgICAgID0gMHgwMDEwMDAwMCwKKyAgICBBV0lORE9XX0ZMQUdfVFVSTl9TQ1JFRU5fT04gICAgICAgICAgICAgPSAweDAwMjAwMDAwLAorICAgIEFXSU5ET1dfRkxBR19ESVNNSVNTX0tFWUdVQVJEICAgICAgICAgICA9IDB4MDA0MDAwMDAsCit9OworCisjaWZkZWYgX19jcGx1c3BsdXMKK307CisjZW5kaWYKKworI2VuZGlmIC8vIEFORFJPSURfV0lORE9XX0gKZGlmZiAtLWdpdCBhL25hdGl2ZS9pbmNsdWRlL2FuZHJvaWRfZ2x1ZS90aHJlYWRlZF9hcHAuaCBiL25hdGl2ZS9pbmNsdWRlL2FuZHJvaWRfZ2x1ZS90aHJlYWRlZF9hcHAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZGZkYmVhCi0tLSAvZGV2L251bGwKKysrIGIvbmF0aXZlL2luY2x1ZGUvYW5kcm9pZF9nbHVlL3RocmVhZGVkX2FwcC5oCkBAIC0wLDAgKzEsMTY1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICovCisKKyNpbmNsdWRlIDxwb2xsLmg+CisjaW5jbHVkZSA8cHRocmVhZC5oPgorI2luY2x1ZGUgPHNjaGVkLmg+CisKKyNpbmNsdWRlIDxhbmRyb2lkL25hdGl2ZV9hY3Rpdml0eS5oPgorI2luY2x1ZGUgPGFuZHJvaWQvbG9vcGVyLmg+CisKKy8qKgorICogVGhpcyBpcyB0aGUgaW50ZXJmYWNlIGZvciB0aGUgc3RhbmRhcmQgZ2x1ZSBjb2RlIG9mIGEgdGhyZWFkZWQKKyAqIGFwcGxpY2F0aW9uLiAgSW4gdGhpcyBtb2RlbCwgdGhlIGFwcGxpY2F0aW9uJ3MgY29kZSBpcyBydW5uaW5nCisgKiBpbiBpdHMgb3duIHRocmVhZCBzZXBhcmF0ZSBmcm9tIHRoZSBtYWluIHRocmVhZCBvZiB0aGUgcHJvY2Vzcy4KKyAqIEl0IGlzIG5vdCByZXF1aXJlZCB0aGF0IHRoaXMgdGhyZWFkIGJlIGFzc29jaWF0ZWQgd2l0aCB0aGUgSmF2YQorICogVk0sIGFsdGhvdWdoIGl0IHdpbGwgbmVlZCB0byBiZSBpbiBvcmRlciB0byBtYWtlIEpOSSBjYWxscyBhbnkKKyAqIEphdmEgb2JqZWN0cy4KKyAqLworc3RydWN0IGFuZHJvaWRfYXBwIHsKKyAgICAvLyBUaGUgYXBwbGljYXRpb24gY2FuIHBsYWNlIGEgcG9pbnRlciB0byBpdHMgb3duIHN0YXRlIG9iamVjdAorICAgIC8vIGhlcmUgaWYgaXQgbGlrZXMuCisgICAgdm9pZCogdXNlckRhdGE7CisKKyAgICAvLyBUaGUgQU5hdGl2ZUFjdGl2aXR5IG9iamVjdCBpbnN0YW5jZSB0aGF0IHRoaXMgYXBwIGlzIHJ1bm5pbmcgaW4uCisgICAgQU5hdGl2ZUFjdGl2aXR5KiBhY3Rpdml0eTsKKworICAgIC8vIFRoZSBBTG9vcGVyIGFzc29jaWF0ZWQgd2l0aCB0aGUgYXBwJ3MgdGhyZWFkLgorICAgIEFMb29wZXIqIGxvb3BlcjsKKworICAgIC8vIFdoZW4gbm9uLU5VTEwsIHRoaXMgaXMgdGhlIGlucHV0IHF1ZXVlIGZyb20gd2hpY2ggdGhlIGFwcCB3aWxsCisgICAgLy8gcmVjZWl2ZSB1c2VyIGlucHV0IGV2ZW50cy4KKyAgICBBSW5wdXRRdWV1ZSogaW5wdXRRdWV1ZTsKKworICAgIC8vIFdoZW4gbm9uLU5VTEwsIHRoaXMgaXMgdGhlIHdpbmRvdyBzdXJmYWNlIHRoYXQgdGhlIGFwcCBjYW4gZHJhdyBpbi4KKyAgICBBTmF0aXZlV2luZG93KiB3aW5kb3c7CisKKyAgICAvLyBDdXJyZW50IHN0YXRlIG9mIHRoZSBhcHAncyBhY3Rpdml0eS4gIE1heSBiZSBlaXRoZXIgQVBQX0NNRF9TVEFSVCwKKyAgICAvLyBBUFBfQ01EX1JFU1VNRSwgQVBQX0NNRF9QQVVTRSwgb3IgQVBQX0NNRF9TVE9QOyBzZWUgYmVsb3cuCisgICAgaW50IGFjdGl2aXR5U3RhdGU7CisKKyAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICAgLy8gQmVsb3cgYXJlICJwcml2YXRlIiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgZ2x1ZSBjb2RlLgorCisgICAgcHRocmVhZF9tdXRleF90IG11dGV4OworICAgIHB0aHJlYWRfY29uZF90IGNvbmQ7CisKKyAgICBpbnQgbXNncmVhZDsKKyAgICBpbnQgbXNnd3JpdGU7CisKKyAgICBwdGhyZWFkX3QgdGhyZWFkOworCisgICAgLy8gVGhpcyBpcyBub24temVybyB3aGVuIHRoZSBhcHBsaWNhdGlvbidzIE5hdGl2ZUFjdGl2aXR5IGlzIGJlaW5nCisgICAgLy8gZGVzdHJveWVkIGFuZCB3YWl0aW5nIGZvciB0aGUgYXBwIHRocmVhZCB0byBjb21wbGV0ZS4KKyAgICBpbnQgZGVzdHJveVJlcXVlc3RlZDsKKworICAgIGludCBydW5uaW5nOworICAgIGludCBkZXN0cm95ZWQ7CisgICAgQUlucHV0UXVldWUqIHBlbmRpbmdJbnB1dFF1ZXVlOworICAgIEFOYXRpdmVXaW5kb3cqIHBlbmRpbmdXaW5kb3c7Cit9OworCitlbnVtIHsKKyAgICAvKioKKyAgICAgKiBMb29wZXIgZGF0YSBJRCBvZiBjb21tYW5kcyBjb21pbmcgZnJvbSB0aGUgYXBwJ3MgbWFpbiB0aHJlYWQuCisgICAgICogVGhlc2UgY2FuIGJlIHJldHJpZXZlZCBhbmQgcHJvY2Vzc2VkIHdpdGggYW5kcm9pZF9hcHBfcmVhZF9jbWQoKQorICAgICAqIGFuZCBhbmRyb2lkX2FwcF9leGVjX2NtZCgpLgorICAgICAqLworICAgIExPT1BFUl9JRF9NQUlOID0gMSwKKworICAgIC8qKgorICAgICAqIExvb3BlciBkYXRhIElEIG9mIGV2ZW50cyBjb21pbmcgZnJvbSB0aGUgQUlucHV0UXVldWUgb2YgdGhlCisgICAgICogYXBwbGljYXRpb24ncyB3aW5kb3cuICBUaGVzZSBjYW4gYmUgcmVhZCB2aWEgdGhlIGlucHV0UXVldWUKKyAgICAgKiBvYmplY3Qgb2YgYW5kcm9pZF9hcHAuCisgICAgICovCisgICAgTE9PUEVSX0lEX0VWRU5UID0gMgorfTsKKworZW51bSB7CisgICAgLyoqCisgICAgICogQ29tbWFuZCBmcm9tIG1haW4gdGhyZWFkOiB0aGUgQUlucHV0UXVldWUgaGFzIGNoYW5nZWQuICBVcG9uIHByb2Nlc3NpbmcKKyAgICAgKiB0aGlzIGNvbW1hbmQsIGFuZHJvaWRfYXBwLT5pbnB1dFF1ZXVlIHdpbGwgYmUgdXBkYXRlZCB0byB0aGUgbmV3IHF1ZXVlCisgICAgICogKG9yIE5VTEwpLgorICAgICAqLworICAgIEFQUF9DTURfSU5QVVRfQ0hBTkdFRCwKKworICAgIC8qKgorICAgICAqIENvbW1hbmQgZnJvbSBtYWluIHRocmVhZDogdGhlIEFOYXRpdmVXaW5kb3cgaGFzIGNoYW5nZWQuICBVcG9uIHByb2Nlc3NpbmcKKyAgICAgKiB0aGlzIGNvbW1hbmQsIGFuZHJvaWRfYXBwLT53aW5kb3cgd2lsbCBiZSB1cGRhdGVkIHRvIHRoZSBuZXcgd2luZG93IHN1cmZhY2UKKyAgICAgKiAob3IgTlVMTCkuCisgICAgICovCisgICAgQVBQX0NNRF9XSU5ET1dfQ0hBTkdFRCwKKworICAgIC8qKgorICAgICAqIENvbW1hbmQgZnJvbSBtYWluIHRocmVhZDogdGhlIGFwcCdzIGFjdGl2aXR5IHdpbmRvdyBoYXMgZ2FpbmVkCisgICAgICogaW5wdXQgZm9jdXMuCisgICAgICovCisgICAgQVBQX0NNRF9HQUlORURfRk9DVVMsCisKKyAgICAvKioKKyAgICAgKiBDb21tYW5kIGZyb20gbWFpbiB0aHJlYWQ6IHRoZSBhcHAncyBhY3Rpdml0eSB3aW5kb3cgaGFzIGxvc3QKKyAgICAgKiBpbnB1dCBmb2N1cy4KKyAgICAgKi8KKyAgICBBUFBfQ01EX0xPU1RfRk9DVVMsCisKKyAgICAvKioKKyAgICAgKiBDb21tYW5kIGZyb20gbWFpbiB0aHJlYWQ6IHRoZSBhcHAncyBhY3Rpdml0eSBoYXMgYmVlbiBzdGFydGVkLgorICAgICAqLworICAgIEFQUF9DTURfU1RBUlQsCisKKyAgICAvKioKKyAgICAgKiBDb21tYW5kIGZyb20gbWFpbiB0aHJlYWQ6IHRoZSBhcHAncyBhY3Rpdml0eSBoYXMgYmVlbiByZXN1bWVkLgorICAgICAqLworICAgIEFQUF9DTURfUkVTVU1FLAorCisgICAgLyoqCisgICAgICogQ29tbWFuZCBmcm9tIG1haW4gdGhyZWFkOiB0aGUgYXBwJ3MgYWN0aXZpdHkgaGFzIGJlZW4gcGF1c2VkLgorICAgICAqLworICAgIEFQUF9DTURfUEFVU0UsCisKKyAgICAvKioKKyAgICAgKiBDb21tYW5kIGZyb20gbWFpbiB0aHJlYWQ6IHRoZSBhcHAncyBhY3Rpdml0eSBoYXMgYmVlbiBzdG9wcGVkLgorICAgICAqLworICAgIEFQUF9DTURfU1RPUCwKKworICAgIC8qKgorICAgICAqIENvbW1hbmQgZnJvbSBtYWluIHRocmVhZDogdGhlIGFwcCdzIGFjdGl2aXR5IGlzIGJlaW5nIGRlc3Ryb3llZCwKKyAgICAgKiBhbmQgd2FpdGluZyBmb3IgdGhlIGFwcCB0aHJlYWQgdG8gY2xlYW4gdXAgYW5kIGV4aXQgYmVmb3JlIHByb2NlZWRpbmcuCisgICAgICovCisgICAgQVBQX0NNRF9ERVNUUk9ZLAorfTsKKworLyoqCisgKiBDYWxsIHdoZW4gQUxvb3Blcl9wb2xsQWxsKCkgcmV0dXJucyBMT09QRVJfSURfTUFJTiwgcmVhZGluZyB0aGUgbmV4dAorICogYXBwIGNvbW1hbmQgbWVzc2FnZS4KKyAqLworaW50OF90IGFuZHJvaWRfYXBwX3JlYWRfY21kKHN0cnVjdCBhbmRyb2lkX2FwcCogYW5kcm9pZF9hcHApOworCisvKioKKyAqIENhbGwgd2l0aCB0aGUgY29tbWFuZCByZXR1cm5lZCBieSBhbmRyb2lkX2FwcF9yZWFkX2NtZCgpIHRvIGRvIHRoZQorICogZGVmYXVsdCBwcm9jZXNzaW5nIG9mIHRoZSBnaXZlbiBjb21tYW5kLgorICoKKyAqIEltcG9ydGFudDogcmV0dXJucyAwIGlmIHRoZSBhcHAgc2hvdWxkIGV4aXQuICBZb3UgbXVzdCBBTFdBWVMgY2hlY2sgZm9yCisgKiBhIHplcm8gcmV0dXJuIGFuZCwgaWYgZm91bmQsIGV4aXQgeW91ciBhbmRyb2lkX21haW4oKSBmdW5jdGlvbi4KKyAqLworaW50MzJfdCBhbmRyb2lkX2FwcF9leGVjX2NtZChzdHJ1Y3QgYW5kcm9pZF9hcHAqIGFuZHJvaWRfYXBwLCBpbnQ4X3QgY21kKTsKKworLyoqCisgKiBUaGlzIGlzIHRoZSBmdW5jdGlvbiB0aGF0IGFwcGxpY2F0aW9uIGNvZGUgbXVzdCBpbXBsZW1lbnQsIHJlcHJlc2VudGluZworICogdGhlIG1haW4gZW50cnkgdG8gdGhlIGFwcC4KKyAqLworZXh0ZXJuIHZvaWQgYW5kcm9pZF9tYWluKHN0cnVjdCBhbmRyb2lkX2FwcCogYXBwKTsKZGlmZiAtLWdpdCBhL29wZW5nbC9pbmNsdWRlL0VHTC9lZ2wuaCBiL29wZW5nbC9pbmNsdWRlL0VHTC9lZ2wuaAppbmRleCBjMjY5OTc2Li45OWVhMzQyIDEwMDY0NAotLS0gYS9vcGVuZ2wvaW5jbHVkZS9FR0wvZWdsLmgKKysrIGIvb3BlbmdsL2luY2x1ZGUvRUdML2VnbC5oCkBAIC0xLDcgKzEsNyBAQAogLyogLSotIG1vZGU6IGM7IHRhYi13aWR0aDogODsgLSotICovCiAvKiB2aTogc2V0IHN3PTQgdHM9ODogKi8KIC8qIFJlZmVyZW5jZSB2ZXJzaW9uIG9mIGVnbC5oIGZvciBFR0wgMS40LgotICogJFJldmlzaW9uOiA3MjQ0ICQgb24gJERhdGU6IDIwMDktMDEtMjAgMTc6MDY6NTkgLTA4MDAgKFR1ZSwgMjAgSmFuIDIwMDkpICQKKyAqICRSZXZpc2lvbjogOTM1NiAkIG9uICREYXRlOiAyMDA5LTEwLTIxIDAyOjUyOjI1IC0wNzAwIChXZWQsIDIxIE9jdCAyMDA5KSAkCiAgKi8KIAogLyoKQEAgLTEwOSw3ICsxMDksNiBAQAogI2RlZmluZSBFR0xfTkFUSVZFX1JFTkRFUkFCTEUJCTB4MzAyRAogI2RlZmluZSBFR0xfTkFUSVZFX1ZJU1VBTF9JRAkJMHgzMDJFCiAjZGVmaW5lIEVHTF9OQVRJVkVfVklTVUFMX1RZUEUJCTB4MzAyRgotI2RlZmluZSBFR0xfUFJFU0VSVkVEX1JFU09VUkNFUwkJMHgzMDMwCiAjZGVmaW5lIEVHTF9TQU1QTEVTCQkJMHgzMDMxCiAjZGVmaW5lIEVHTF9TQU1QTEVfQlVGRkVSUwkJMHgzMDMyCiAjZGVmaW5lIEVHTF9TVVJGQUNFX1RZUEUJCTB4MzAzMwpkaWZmIC0tZ2l0IGEvb3BlbmdsL2luY2x1ZGUvRUdML2VnbGV4dC5oIGIvb3BlbmdsL2luY2x1ZGUvRUdML2VnbGV4dC5oCmluZGV4IDU0NWZkMGUuLmIxMjExNTggMTAwNjQ0Ci0tLSBhL29wZW5nbC9pbmNsdWRlL0VHTC9lZ2xleHQuaAorKysgYi9vcGVuZ2wvaW5jbHVkZS9FR0wvZWdsZXh0LmgKQEAgLTYsNyArNiw3IEBACiAjZW5kaWYKIAogLyoKLSoqIENvcHlyaWdodCAoYykgMjAwNy0yMDA5IFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KKyoqIENvcHlyaWdodCAoYykgMjAwNy0yMDEwIFRoZSBLaHJvbm9zIEdyb3VwIEluYy4KICoqCiAqKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQogKiogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZC9vciBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQpAQCAtMzQsOCArMzQsOCBAQAogCiAvKiBIZWFkZXIgZmlsZSB2ZXJzaW9uIG51bWJlciAqLwogLyogQ3VycmVudCB2ZXJzaW9uIGF0IGh0dHA6Ly93d3cua2hyb25vcy5vcmcvcmVnaXN0cnkvZWdsLyAqLwotLyogJFJldmlzaW9uOiA3MjQ0ICQgb24gJERhdGU6IDIwMDktMDEtMjAgMTc6MDY6NTkgLTA4MDAgKFR1ZSwgMjAgSmFuIDIwMDkpICQgKi8KLSNkZWZpbmUgRUdMX0VHTEVYVF9WRVJTSU9OIDMKKy8qICRSZXZpc2lvbjogMTEyNDkgJCBvbiAkRGF0ZTogMjAxMC0wNS0wNSAwOTo1NDoyOCAtMDcwMCAoV2VkLCAwNSBNYXkgMjAxMCkgJCAqLworI2RlZmluZSBFR0xfRUdMRVhUX1ZFUlNJT04gNQogCiAjaWZuZGVmIEVHTF9LSFJfY29uZmlnX2F0dHJpYnMKICNkZWZpbmUgRUdMX0tIUl9jb25maWdfYXR0cmlicyAxCkBAIC0xMjAsNiArMTIwLDM2IEBACiAjZGVmaW5lIEVHTF9HTF9SRU5ERVJCVUZGRVJfS0hSCQkJMHgzMEI5CS8qIGVnbENyZWF0ZUltYWdlS0hSIHRhcmdldCAqLwogI2VuZGlmCiAKKyNpZm5kZWYgRUdMX0tIUl9yZXVzYWJsZV9zeW5jCisjZGVmaW5lIEVHTF9LSFJfcmV1c2FibGVfc3luYyAxCisKK3R5cGVkZWYgdm9pZCogRUdMU3luY0tIUjsKK3R5cGVkZWYga2hyb25vc191dGltZV9uYW5vc2Vjb25kc190IEVHTFRpbWVLSFI7CisKKyNkZWZpbmUgRUdMX1NZTkNfU1RBVFVTX0tIUgkJCTB4MzBGMQorI2RlZmluZSBFR0xfU0lHTkFMRURfS0hSCQkJMHgzMEYyCisjZGVmaW5lIEVHTF9VTlNJR05BTEVEX0tIUgkJCTB4MzBGMworI2RlZmluZSBFR0xfVElNRU9VVF9FWFBJUkVEX0tIUgkJCTB4MzBGNQorI2RlZmluZSBFR0xfQ09ORElUSU9OX1NBVElTRklFRF9LSFIJCTB4MzBGNgorI2RlZmluZSBFR0xfU1lOQ19UWVBFX0tIUgkJCTB4MzBGNworI2RlZmluZSBFR0xfU1lOQ19SRVVTQUJMRV9LSFIJCQkweDMwRkEKKyNkZWZpbmUgRUdMX1NZTkNfRkxVU0hfQ09NTUFORFNfQklUX0tIUgkJMHgwMDAxCS8qIGVnbENsaWVudFdhaXRTeW5jS0hSIDxmbGFncz4gYml0ZmllbGQgKi8KKyNkZWZpbmUgRUdMX0ZPUkVWRVJfS0hSCQkJCTB4RkZGRkZGRkZGRkZGRkZGRnVsbAorI2RlZmluZSBFR0xfTk9fU1lOQ19LSFIJCQkJKChFR0xTeW5jS0hSKTApCisjaWZkZWYgRUdMX0VHTEVYVF9QUk9UT1RZUEVTCitFR0xBUEkgRUdMU3luY0tIUiBFR0xBUElFTlRSWSBlZ2xDcmVhdGVTeW5jS0hSKEVHTERpc3BsYXkgZHB5LCBFR0xlbnVtIHR5cGUsIGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QpOworRUdMQVBJIEVHTEJvb2xlYW4gRUdMQVBJRU5UUlkgZWdsRGVzdHJveVN5bmNLSFIoRUdMRGlzcGxheSBkcHksIEVHTFN5bmNLSFIgc3luYyk7CitFR0xBUEkgRUdMaW50IEVHTEFQSUVOVFJZIGVnbENsaWVudFdhaXRTeW5jS0hSKEVHTERpc3BsYXkgZHB5LCBFR0xTeW5jS0hSIHN5bmMsIEVHTGludCBmbGFncywgRUdMVGltZUtIUiB0aW1lb3V0KTsKK0VHTEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbFNpZ25hbFN5bmNLSFIoRUdMRGlzcGxheSBkcHksIEVHTFN5bmNLSFIgc3luYywgRUdMZW51bSBtb2RlKTsKK0VHTEFQSSBFR0xCb29sZWFuIEVHTEFQSUVOVFJZIGVnbEdldFN5bmNBdHRyaWJLSFIoRUdMRGlzcGxheSBkcHksIEVHTFN5bmNLSFIgc3luYywgRUdMaW50IGF0dHJpYnV0ZSwgRUdMaW50ICp2YWx1ZSk7CisjZW5kaWYgLyogRUdMX0VHTEVYVF9QUk9UT1RZUEVTICovCit0eXBlZGVmIEVHTFN5bmNLSFIgKEVHTEFQSUVOVFJZUCBQRk5FR0xDUkVBVEVTWU5DS0hSUFJPQykgKEVHTERpc3BsYXkgZHB5LCBFR0xlbnVtIHR5cGUsIGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QpOwordHlwZWRlZiBFR0xCb29sZWFuIChFR0xBUElFTlRSWVAgUEZORUdMREVTVFJPWVNZTkNLSFJQUk9DKSAoRUdMRGlzcGxheSBkcHksIEVHTFN5bmNLSFIgc3luYyk7Cit0eXBlZGVmIEVHTGludCAoRUdMQVBJRU5UUllQIFBGTkVHTENMSUVOVFdBSVRTWU5DS0hSUFJPQykgKEVHTERpc3BsYXkgZHB5LCBFR0xTeW5jS0hSIHN5bmMsIEVHTGludCBmbGFncywgRUdMVGltZUtIUiB0aW1lb3V0KTsKK3R5cGVkZWYgRUdMQm9vbGVhbiAoRUdMQVBJRU5UUllQIFBGTkVHTFNJR05BTFNZTkNLSFJQUk9DKSAoRUdMRGlzcGxheSBkcHksIEVHTFN5bmNLSFIgc3luYywgRUdMZW51bSBtb2RlKTsKK3R5cGVkZWYgRUdMQm9vbGVhbiAoRUdMQVBJRU5UUllQIFBGTkVHTEdFVFNZTkNBVFRSSUJLSFJQUk9DKSAoRUdMRGlzcGxheSBkcHksIEVHTFN5bmNLSFIgc3luYywgRUdMaW50IGF0dHJpYnV0ZSwgRUdMaW50ICp2YWx1ZSk7CisjZW5kaWYKKwogI2lmbmRlZiBFR0xfS0hSX2ltYWdlX2Jhc2UKICNkZWZpbmUgRUdMX0tIUl9pbWFnZV9iYXNlIDEKIC8qIE1vc3QgaW50ZXJmYWNlcyBkZWZpbmVkIGJ5IEVHTF9LSFJfaW1hZ2VfcGl4bWFwIGFib3ZlICovCkBAIC0xMzEsNiArMTYxLDY3IEBACiAvKiBJbnRlcmZhY2VzIGRlZmluZWQgYnkgRUdMX0tIUl9pbWFnZSBhYm92ZSAqLwogI2VuZGlmCiAKKyNpZm5kZWYgRUdMX0lNR19jb250ZXh0X3ByaW9yaXR5CisjZGVmaW5lIEVHTF9JTUdfY29udGV4dF9wcmlvcml0eSAxCisjZGVmaW5lIEVHTF9DT05URVhUX1BSSU9SSVRZX0xFVkVMX0lNRwkJMHgzMTAwCisjZGVmaW5lIEVHTF9DT05URVhUX1BSSU9SSVRZX0hJR0hfSU1HCQkweDMxMDEKKyNkZWZpbmUgRUdMX0NPTlRFWFRfUFJJT1JJVFlfTUVESVVNX0lNRwkJMHgzMTAyCisjZGVmaW5lIEVHTF9DT05URVhUX1BSSU9SSVRZX0xPV19JTUcJCTB4MzEwMworI2VuZGlmCisKKyNpZm5kZWYgRUdMX05WX2NvdmVyYWdlX3NhbXBsZQorI2RlZmluZSBFR0xfTlZfY292ZXJhZ2Vfc2FtcGxlIDEKKyNkZWZpbmUgRUdMX0NPVkVSQUdFX0JVRkZFUlNfTlYgMHgzMEUwCisjZGVmaW5lIEVHTF9DT1ZFUkFHRV9TQU1QTEVTX05WIDB4MzBFMQorI2VuZGlmCisKKyNpZm5kZWYgRUdMX05WX2RlcHRoX25vbmxpbmVhcgorI2RlZmluZSBFR0xfTlZfZGVwdGhfbm9ubGluZWFyIDEKKyNkZWZpbmUgRUdMX0RFUFRIX0VOQ09ESU5HX05WIDB4MzBFMgorI2RlZmluZSBFR0xfREVQVEhfRU5DT0RJTkdfTk9ORV9OViAwCisjZGVmaW5lIEVHTF9ERVBUSF9FTkNPRElOR19OT05MSU5FQVJfTlYgMHgzMEUzCisjZW5kaWYKKworI2lmbmRlZiBFR0xfTlZfc3luYworI2RlZmluZSBFR0xfTlZfc3luYyAxCisjZGVmaW5lIEVHTF9TWU5DX1BSSU9SX0NPTU1BTkRTX0NPTVBMRVRFX05WCTB4MzBFNgorI2RlZmluZSBFR0xfU1lOQ19TVEFUVVNfTlYJCQkweDMwRTcKKyNkZWZpbmUgRUdMX1NJR05BTEVEX05WCQkJCTB4MzBFOAorI2RlZmluZSBFR0xfVU5TSUdOQUxFRF9OVgkJCTB4MzBFOQorI2RlZmluZSBFR0xfU1lOQ19GTFVTSF9DT01NQU5EU19CSVRfTlYJCTB4MDAwMQorI2RlZmluZSBFR0xfRk9SRVZFUl9OVgkJCQkweEZGRkZGRkZGRkZGRkZGRkZ1bGwKKyNkZWZpbmUgRUdMX0FMUkVBRFlfU0lHTkFMRURfTlYJCQkweDMwRUEKKyNkZWZpbmUgRUdMX1RJTUVPVVRfRVhQSVJFRF9OVgkJCTB4MzBFQgorI2RlZmluZSBFR0xfQ09ORElUSU9OX1NBVElTRklFRF9OVgkJMHgzMEVDCisjZGVmaW5lIEVHTF9TWU5DX1RZUEVfTlYJCQkweDMwRUQKKyNkZWZpbmUgRUdMX1NZTkNfQ09ORElUSU9OX05WCQkJMHgzMEVFCisjZGVmaW5lIEVHTF9TWU5DX0ZFTkNFX05WCQkJMHgzMEVGCisjZGVmaW5lIEVHTF9OT19TWU5DX05WCQkJCSgoRUdMU3luY05WKTApCit0eXBlZGVmIHZvaWQqIEVHTFN5bmNOVjsKK3R5cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIEVHTFRpbWVOVjsKKyNpZmRlZiBFR0xfRUdMRVhUX1BST1RPVFlQRVMKK0VHTFN5bmNOViBlZ2xDcmVhdGVGZW5jZVN5bmNOViAoRUdMRGlzcGxheSBkcHksIEVHTGVudW0gY29uZGl0aW9uLCBjb25zdCBFR0xpbnQgKmF0dHJpYl9saXN0KTsKK0VHTEJvb2xlYW4gZWdsRGVzdHJveVN5bmNOViAoRUdMU3luY05WIHN5bmMpOworRUdMQm9vbGVhbiBlZ2xGZW5jZU5WIChFR0xTeW5jTlYgc3luYyk7CitFR0xpbnQgZWdsQ2xpZW50V2FpdFN5bmNOViAoRUdMU3luY05WIHN5bmMsIEVHTGludCBmbGFncywgRUdMVGltZU5WIHRpbWVvdXQpOworRUdMQm9vbGVhbiBlZ2xTaWduYWxTeW5jTlYgKEVHTFN5bmNOViBzeW5jLCBFR0xlbnVtIG1vZGUpOworRUdMQm9vbGVhbiBlZ2xHZXRTeW5jQXR0cmliTlYgKEVHTFN5bmNOViBzeW5jLCBFR0xpbnQgYXR0cmlidXRlLCBFR0xpbnQgKnZhbHVlKTsKKyNlbmRpZiAvKiBFR0xfRUdMRVhUX1BST1RPVFlQRVMgKi8KK3R5cGVkZWYgRUdMU3luY05WIChFR0xBUElFTlRSWVAgUEZORUdMQ1JFQVRFRkVOQ0VTWU5DTlZQUk9DKSAoRUdMRGlzcGxheSBkcHksIEVHTGVudW0gY29uZGl0aW9uLCBjb25zdCBFR0xpbnQgKmF0dHJpYl9saXN0KTsKK3R5cGVkZWYgRUdMQm9vbGVhbiAoRUdMQVBJRU5UUllQIFBGTkVHTERFU1RST1lTWU5DTlZQUk9DKSAoRUdMU3luY05WIHN5bmMpOwordHlwZWRlZiBFR0xCb29sZWFuIChFR0xBUElFTlRSWVAgUEZORUdMRkVOQ0VOVlBST0MpIChFR0xTeW5jTlYgc3luYyk7Cit0eXBlZGVmIEVHTGludCAoRUdMQVBJRU5UUllQIFBGTkVHTENMSUVOVFdBSVRTWU5DTlZQUk9DKSAoRUdMU3luY05WIHN5bmMsIEVHTGludCBmbGFncywgRUdMVGltZU5WIHRpbWVvdXQpOwordHlwZWRlZiBFR0xCb29sZWFuIChFR0xBUElFTlRSWVAgUEZORUdMU0lHTkFMU1lOQ05WUFJPQykgKEVHTFN5bmNOViBzeW5jLCBFR0xlbnVtIG1vZGUpOwordHlwZWRlZiBFR0xCb29sZWFuIChFR0xBUElFTlRSWVAgUEZORUdMR0VUU1lOQ0FUVFJJQk5WUFJPQykgKEVHTFN5bmNOViBzeW5jLCBFR0xpbnQgYXR0cmlidXRlLCBFR0xpbnQgKnZhbHVlKTsKKyNlbmRpZgorCisjaWZuZGVmIEVHTF9LSFJfZmVuY2Vfc3luYworI2RlZmluZSBFR0xfS0hSX2ZlbmNlX3N5bmMgMQorLyogUmV1c2VzIG1vc3QgdG9rZW5zIGFuZCBlbnRyeSBwb2ludHMgZnJvbSBFR0xfS0hSX3JldXNhYmxlX3N5bmMgKi8KKyNkZWZpbmUgRUdMX1NZTkNfUFJJT1JfQ09NTUFORFNfQ09NUExFVEVfS0hSCTB4MzBGMAorI2RlZmluZSBFR0xfU1lOQ19DT05ESVRJT05fS0hSCQkJMHgzMEY4CisjZGVmaW5lIEVHTF9TWU5DX0ZFTkNFX0tIUgkJCTB4MzBGOQorI2VuZGlmCiAKICNpZm5kZWYgRUdMX0FORFJPSURfaW1hZ2VfbmF0aXZlX2J1ZmZlcgogI2RlZmluZSBFR0xfQU5EUk9JRF9pbWFnZV9uYXRpdmVfYnVmZmVyIDEKQEAgLTE1NCw3ICsyNDUsNiBAQAogdHlwZWRlZiBFR0xCb29sZWFuIChFR0xBUElFTlRSWVAgUEZORUdMU0VUU1dBUFJFQ1RBTkdMRUFORFJPSURQUk9DKSAoRUdMRGlzcGxheSBkcHksIEVHTFN1cmZhY2UgZHJhdywgRUdMaW50IGxlZnQsIEVHTGludCB0b3AsIEVHTGludCB3aWR0aCwgRUdMaW50IGhlaWdodCk7CiAjZW5kaWYKIAotCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvb3BlbmdsL2luY2x1ZGUvRUdML2VnbHBsYXRmb3JtLmggYi9vcGVuZ2wvaW5jbHVkZS9FR0wvZWdscGxhdGZvcm0uaAppbmRleCA1M2U5ZTYxMTYuLjI1ZDc2OTcgMTAwNjQ0Ci0tLSBhL29wZW5nbC9pbmNsdWRlL0VHTC9lZ2xwbGF0Zm9ybS5oCisrKyBiL29wZW5nbC9pbmNsdWRlL0VHTC9lZ2xwbGF0Zm9ybS5oCkBAIC0yNSw3ICsyNSw3IEBACiAqLwogCiAvKiBQbGF0Zm9ybS1zcGVjaWZpYyB0eXBlcyBhbmQgZGVmaW5pdGlvbnMgZm9yIGVnbC5oCi0gKiAkUmV2aXNpb246IDcyNDQgJCBvbiAkRGF0ZTogMjAwOS0wMS0yMCAxNzowNjo1OSAtMDgwMCAoVHVlLCAyMCBKYW4gMjAwOSkgJAorICogJFJldmlzaW9uOiA5NzI0ICQgb24gJERhdGU6IDIwMDktMTItMDIgMDI6MDU6MzMgLTA4MDAgKFdlZCwgMDIgRGVjIDIwMDkpICQKICAqCiAgKiBBZG9wdGVycyBtYXkgbW9kaWZ5IGtocnBsYXRmb3JtLmggYW5kIHRoaXMgZmlsZSB0byBzdWl0IHRoZWlyIHBsYXRmb3JtLgogICogWW91IGFyZSBlbmNvdXJhZ2VkIHRvIHN1Ym1pdCBhbGwgbW9kaWZpY2F0aW9ucyB0byB0aGUgS2hyb25vcyBncm91cCBzbyB0aGF0CkBAIC01MCw4ICs1MCwxMCBAQAogI2RlZmluZSBFR0xBUEkgS0hST05PU19BUElDQUxMCiAjZW5kaWYKIAorI2lmbmRlZiBFR0xBUElFTlRSWQogI2RlZmluZSBFR0xBUElFTlRSWSAgS0hST05PU19BUElFTlRSWQotI2RlZmluZSBFR0xBUElFTlRSWVAgS0hST05PU19BUElFTlRSWSoKKyNlbmRpZgorI2RlZmluZSBFR0xBUElFTlRSWVAgRUdMQVBJRU5UUlkqCiAKIC8qIFRoZSB0eXBlcyBOYXRpdmVEaXNwbGF5VHlwZSwgTmF0aXZlV2luZG93VHlwZSwgYW5kIE5hdGl2ZVBpeG1hcFR5cGUKICAqIGFyZSBhbGlhc2VzIG9mIHdpbmRvdy1zeXN0ZW0tZGVwZW5kZW50IHR5cGVzLCBzdWNoIGFzIFggRGlzcGxheSAqIG9yCkBAIC04OSwxMCArOTEsMTEgQEAKIAogI2VsaWYgZGVmaW5lZChBTkRST0lEKQogCi1zdHJ1Y3QgYW5kcm9pZF9uYXRpdmVfd2luZG93X3Q7CisjaW5jbHVkZSA8YW5kcm9pZC9uYXRpdmVfd2luZG93Lmg+CisKIHN0cnVjdCBlZ2xfbmF0aXZlX3BpeG1hcF90OwogCi10eXBlZGVmIHN0cnVjdCBhbmRyb2lkX25hdGl2ZV93aW5kb3dfdCogRUdMTmF0aXZlV2luZG93VHlwZTsKK3R5cGVkZWYgc3RydWN0IEFOYXRpdmVXaW5kb3cqICAgICAgICAgICBFR0xOYXRpdmVXaW5kb3dUeXBlOwogdHlwZWRlZiBzdHJ1Y3QgZWdsX25hdGl2ZV9waXhtYXBfdCogICAgIEVHTE5hdGl2ZVBpeG1hcFR5cGU7CiB0eXBlZGVmIHZvaWQqICAgICAgICAgICAgICAgICAgICAgICAgICAgRUdMTmF0aXZlRGlzcGxheVR5cGU7CiAKZGlmZiAtLWdpdCBhL29wZW5nbC9pbmNsdWRlL0dMRVMvZ2wuaCBiL29wZW5nbC9pbmNsdWRlL0dMRVMvZ2wuaAppbmRleCAyZThiOTcxLi41YjhkODVhIDEwMDY0NAotLS0gYS9vcGVuZ2wvaW5jbHVkZS9HTEVTL2dsLmgKKysrIGIvb3BlbmdsL2luY2x1ZGUvR0xFUy9nbC5oCkBAIC0xLDcgKzEsNyBAQAogI2lmbmRlZiBfX2dsX2hfCiAjZGVmaW5lIF9fZ2xfaF8KIAotLyogJFJldmlzaW9uOiA3MTcyICQgb24gJERhdGU6OiAyMDA5LTAxLTA5IDExOjE3OjQxIC0wODAwICMkICovCisvKiAkUmV2aXNpb246IDEwNjAxICQgb24gJERhdGU6OiAyMDEwLTAzLTA0IDIyOjE1OjI3IC0wODAwICMkICovCiAKICNpbmNsdWRlIDxHTEVTL2dscGxhdGZvcm0uaD4KIApAQCAtMTUsNiArMTUsNyBAQAogICovCiAKIHR5cGVkZWYgdm9pZCAgICAgICAgICAgICBHTHZvaWQ7Cit0eXBlZGVmIGNoYXIgICAgICAgICAgICAgR0xjaGFyOwogdHlwZWRlZiB1bnNpZ25lZCBpbnQgICAgIEdMZW51bTsKIHR5cGVkZWYgdW5zaWduZWQgY2hhciAgICBHTGJvb2xlYW47CiB0eXBlZGVmIHVuc2lnbmVkIGludCAgICAgR0xiaXRmaWVsZDsKQEAgLTY3OCw3ICs2NzksNyBAQAogR0xfQVBJIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRJbnRlZ2VydiAoR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKIEdMX0FQSSB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0TGlnaHR4diAoR0xlbnVtIGxpZ2h0LCBHTGVudW0gcG5hbWUsIEdMZml4ZWQgKnBhcmFtcyk7CiBHTF9BUEkgdm9pZCBHTF9BUElFTlRSWSBnbEdldE1hdGVyaWFseHYgKEdMZW51bSBmYWNlLCBHTGVudW0gcG5hbWUsIEdMZml4ZWQgKnBhcmFtcyk7Ci1HTF9BUEkgdm9pZCBHTF9BUElFTlRSWSBnbEdldFBvaW50ZXJ2IChHTGVudW0gcG5hbWUsIHZvaWQgKipwYXJhbXMpOworR0xfQVBJIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRQb2ludGVydiAoR0xlbnVtIHBuYW1lLCBHTHZvaWQgKipwYXJhbXMpOwogR0xfQVBJIGNvbnN0IEdMdWJ5dGUgKiBHTF9BUElFTlRSWSBnbEdldFN0cmluZyAoR0xlbnVtIG5hbWUpOwogR0xfQVBJIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRUZXhFbnZpdiAoR0xlbnVtIGVudiwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKTsKIEdMX0FQSSB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0VGV4RW52eHYgKEdMZW51bSBlbnYsIEdMZW51bSBwbmFtZSwgR0xmaXhlZCAqcGFyYW1zKTsKZGlmZiAtLWdpdCBhL29wZW5nbC9pbmNsdWRlL0dMRVMvZ2xleHQuaCBiL29wZW5nbC9pbmNsdWRlL0dMRVMvZ2xleHQuaAppbmRleCBhOGZlMmU5Li5hNWIzZWFkIDEwMDY0NAotLS0gYS9vcGVuZ2wvaW5jbHVkZS9HTEVTL2dsZXh0LmgKKysrIGIvb3BlbmdsL2luY2x1ZGUvR0xFUy9nbGV4dC5oCkBAIC0xLDcgKzEsNyBAQAogI2lmbmRlZiBfX2dsZXh0X2hfCiAjZGVmaW5lIF9fZ2xleHRfaF8KIAotLyogJFJldmlzaW9uOiA3MTcyICQgb24gJERhdGU6OiAyMDA5LTAxLTA5IDExOjE3OjQxIC0wODAwICMkICovCisvKiAkUmV2aXNpb246IDEwOTY1ICQgb24gJERhdGU6OiAyMDEwLTA0LTA5IDAyOjExOjI5IC0wNzAwICMkICovCiAKICNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CkBAIC02OCw2ICs2OCwxMSBAQAogdHlwZWRlZiB2b2lkKiBHTGVnbEltYWdlT0VTOwogI2VuZGlmCiAKKy8qIEdMX09FU19lbGVtZW50X2luZGV4X3VpbnQgKi8KKyNpZm5kZWYgR0xfT0VTX2VsZW1lbnRfaW5kZXhfdWludAorI2RlZmluZSBHTF9VTlNJR05FRF9JTlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTQwNQorI2VuZGlmCisKIC8qIEdMX09FU19maXhlZF9wb2ludCAqLwogI2lmbmRlZiBHTF9PRVNfZml4ZWRfcG9pbnQKICNkZWZpbmUgR0xfRklYRURfT0VTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE0MEMKQEAgLTIwMSw2ICsyMDYsMTYgQEAKICNkZWZpbmUgR0xfTUlSUk9SRURfUkVQRUFUX09FUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgzNzAKICNlbmRpZgogCisvKiBHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCAqLworI2lmbmRlZiBHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdAorI2RlZmluZSBHTF9WRVJURVhfQVJSQVlfQklORElOR19PRVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODVCNQorI2VuZGlmCisKKy8qIEdMX09FU190ZXh0dXJlX2V4dGVybmFsICovCisjaWZuZGVmIEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTCisjZGVmaW5lIEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4RDY1CisjZW5kaWYKKwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qCiAgKiBBTUQgZXh0ZW5zaW9uIHRva2VucwogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtMjE5LDE1ICsyMzQsMTkxIEBACiAjZW5kaWYKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qCisgKiBBUFBMRSBleHRlbnNpb24gdG9rZW5zCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKy8qIEdMX0FQUExFX3RleHR1cmVfMkRfbGltaXRlZF9ucG90ICovCisvKiBObyBuZXcgdG9rZW5zIGludHJvZHVjZWQgYnkgdGhpcyBleHRlbnNpb24uICovCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKgogICogRVhUIGV4dGVuc2lvbiB0b2tlbnMKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAorLyogR0xfRVhUX2JsZW5kX21pbm1heCAqLworI2lmbmRlZiBHTF9FWFRfYmxlbmRfbWlubWF4CisjZGVmaW5lIEdMX01JTl9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MDA3CisjZGVmaW5lIEdMX01BWF9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MDA4CisjZW5kaWYKKworLyogR0xfRVhUX2Rpc2NhcmRfZnJhbWVidWZmZXIgKi8KKyNpZm5kZWYgR0xfRVhUX2Rpc2NhcmRfZnJhbWVidWZmZXIKKyNkZWZpbmUgR0xfQ09MT1JfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4MDAKKyNkZWZpbmUgR0xfREVQVEhfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4MDEKKyNkZWZpbmUgR0xfU1RFTkNJTF9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4MDIKKyNlbmRpZgorCisvKiBHTF9FWFRfbXVsdGlfZHJhd19hcnJheXMgKi8KKy8qIE5vIG5ldyB0b2tlbnMgaW50cm9kdWNlZCBieSB0aGlzIGV4dGVuc2lvbi4gKi8KKworLyogR0xfRVhUX3JlYWRfZm9ybWF0X2JncmEgKi8KKyNpZm5kZWYgR0xfRVhUX3JlYWRfZm9ybWF0X2JncmEKKyNkZWZpbmUgR0xfQkdSQV9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwRTEKKyNkZWZpbmUgR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNF9SRVZfRVhUICAgICAgICAgICAgICAgICAgICAgICAweDgzNjUKKyNkZWZpbmUgR0xfVU5TSUdORURfU0hPUlRfMV81XzVfNV9SRVZfRVhUICAgICAgICAgICAgICAgICAgICAgICAweDgzNjYKKyNlbmRpZgorCiAvKiBHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMgKi8KICNpZm5kZWYgR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljCiAjZGVmaW5lIEdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NEZFCiAjZGVmaW5lIEdMX01BWF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCAgICAgICAgICAgICAgICAgICAgICAgMHg4NEZGCiAjZW5kaWYKIAorLyogR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4ICovCisjaWZuZGVmIEdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OAorI2RlZmluZSBHTF9CR1JBX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODBFMQorI2VuZGlmCisKKy8qIEdMX0VYVF90ZXh0dXJlX2xvZF9iaWFzICovCisjaWZuZGVmIEdMX0VYVF90ZXh0dXJlX2xvZF9iaWFzCisjZGVmaW5lIEdMX01BWF9URVhUVVJFX0xPRF9CSUFTX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NEZECisjZGVmaW5lIEdMX1RFWFRVUkVfRklMVEVSX0NPTlRST0xfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NTAwCisjZGVmaW5lIEdMX1RFWFRVUkVfTE9EX0JJQVNfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NTAxCisjZW5kaWYKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qCisgKiBJTUcgZXh0ZW5zaW9uIHRva2VucworICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisvKiBHTF9JTUdfcmVhZF9mb3JtYXQgKi8KKyNpZm5kZWYgR0xfSU1HX3JlYWRfZm9ybWF0CisjZGVmaW5lIEdMX0JHUkFfSU1HICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MEUxCisjZGVmaW5lIEdMX1VOU0lHTkVEX1NIT1JUXzRfNF80XzRfUkVWX0lNRyAgICAgICAgICAgICAgICAgICAgICAgMHg4MzY1CisjZW5kaWYKKworLyogR0xfSU1HX3RleHR1cmVfY29tcHJlc3Npb25fcHZydGMgKi8KKyNpZm5kZWYgR0xfSU1HX3RleHR1cmVfY29tcHJlc3Npb25fcHZydGMKKyNkZWZpbmUgR0xfQ09NUFJFU1NFRF9SR0JfUFZSVENfNEJQUFYxX0lNRyAgICAgICAgICAgICAgICAgICAgICAweDhDMDAKKyNkZWZpbmUgR0xfQ09NUFJFU1NFRF9SR0JfUFZSVENfMkJQUFYxX0lNRyAgICAgICAgICAgICAgICAgICAgICAweDhDMDEKKyNkZWZpbmUgR0xfQ09NUFJFU1NFRF9SR0JBX1BWUlRDXzRCUFBWMV9JTUcgICAgICAgICAgICAgICAgICAgICAweDhDMDIKKyNkZWZpbmUgR0xfQ09NUFJFU1NFRF9SR0JBX1BWUlRDXzJCUFBWMV9JTUcgICAgICAgICAgICAgICAgICAgICAweDhDMDMKKyNlbmRpZgorCisvKiBHTF9JTUdfdGV4dHVyZV9lbnZfZW5oYW5jZWRfZml4ZWRfZnVuY3Rpb24gKi8KKyNpZm5kZWYgR0xfSU1HX3RleHR1cmVfZW52X2VuaGFuY2VkX2ZpeGVkX2Z1bmN0aW9uCisjZGVmaW5lIEdMX01PRFVMQVRFX0NPTE9SX0lNRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4QzA0CisjZGVmaW5lIEdMX1JFQ0lQX0FERF9TSUdORURfQUxQSEFfSU1HICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4QzA1CisjZGVmaW5lIEdMX1RFWFRVUkVfQUxQSEFfTU9EVUxBVEVfSU1HICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4QzA2CisjZGVmaW5lIEdMX0ZBQ1RPUl9BTFBIQV9NT0RVTEFURV9JTUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4QzA3CisjZGVmaW5lIEdMX0ZSQUdNRU5UX0FMUEhBX01PRFVMQVRFX0lNRyAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4QzA4CisjZGVmaW5lIEdMX0FERF9CTEVORF9JTUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4QzA5CisjZGVmaW5lIEdMX0RPVDNfUkdCQV9JTUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NkFGCisjZW5kaWYKKworLyogR0xfSU1HX3VzZXJfY2xpcF9wbGFuZSAqLworI2lmbmRlZiBHTF9JTUdfdXNlcl9jbGlwX3BsYW5lCisjZGVmaW5lIEdMX0NMSVBfUExBTkUwX0lNRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMDAwCisjZGVmaW5lIEdMX0NMSVBfUExBTkUxX0lNRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMDAxCisjZGVmaW5lIEdMX0NMSVBfUExBTkUyX0lNRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMDAyCisjZGVmaW5lIEdMX0NMSVBfUExBTkUzX0lNRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMDAzCisjZGVmaW5lIEdMX0NMSVBfUExBTkU0X0lNRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMDA0CisjZGVmaW5lIEdMX0NMSVBfUExBTkU1X0lNRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgzMDA1CisjZGVmaW5lIEdMX01BWF9DTElQX1BMQU5FU19JTUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwRDMyCisjZW5kaWYKKworLyogR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSAqLworI2lmbmRlZiBHTF9JTUdfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlCisjZGVmaW5lIEdMX1JFTkRFUkJVRkZFUl9TQU1QTEVTX0lNRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MTMzCisjZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTVVMVElTQU1QTEVfSU1HICAgICAgICAgICAgICAgMHg5MTM0CisjZGVmaW5lIEdMX01BWF9TQU1QTEVTX0lNRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MTM1CisjZGVmaW5lIEdMX1RFWFRVUkVfU0FNUExFU19JTUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MTM2CisjZW5kaWYKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qCisgKiBOViBleHRlbnNpb24gdG9rZW5zCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKy8qIEdMX05WX2ZlbmNlICovCisjaWZuZGVmIEdMX05WX2ZlbmNlCisjZGVmaW5lIEdMX0FMTF9DT01QTEVURURfTlYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NEYyCisjZGVmaW5lIEdMX0ZFTkNFX1NUQVRVU19OViAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NEYzCisjZGVmaW5lIEdMX0ZFTkNFX0NPTkRJVElPTl9OViAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NEY0CisjZW5kaWYKKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qCisgKiBRQ09NIGV4dGVuc2lvbiB0b2tlbnMKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLyogR0xfUUNPTV9kcml2ZXJfY29udHJvbCAqLworLyogTm8gbmV3IHRva2VucyBpbnRyb2R1Y2VkIGJ5IHRoaXMgZXh0ZW5zaW9uLiAqLworCisvKiBHTF9RQ09NX2V4dGVuZGVkX2dldCAqLworI2lmbmRlZiBHTF9RQ09NX2V4dGVuZGVkX2dldAorI2RlZmluZSBHTF9URVhUVVJFX1dJRFRIX1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEJEMgorI2RlZmluZSBHTF9URVhUVVJFX0hFSUdIVF9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEJEMworI2RlZmluZSBHTF9URVhUVVJFX0RFUFRIX1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEJENAorI2RlZmluZSBHTF9URVhUVVJFX0lOVEVSTkFMX0ZPUk1BVF9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEJENQorI2RlZmluZSBHTF9URVhUVVJFX0ZPUk1BVF9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEJENgorI2RlZmluZSBHTF9URVhUVVJFX1RZUEVfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEJENworI2RlZmluZSBHTF9URVhUVVJFX0lNQUdFX1ZBTElEX1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEJEOAorI2RlZmluZSBHTF9URVhUVVJFX05VTV9MRVZFTFNfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEJEOQorI2RlZmluZSBHTF9URVhUVVJFX1RBUkdFVF9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEJEQQorI2RlZmluZSBHTF9URVhUVVJFX09CSkVDVF9WQUxJRF9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEJEQgorI2RlZmluZSBHTF9TVEFURV9SRVNUT1JFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEJEQworI2VuZGlmCisKKy8qIEdMX1FDT01fZXh0ZW5kZWRfZ2V0MiAqLworLyogTm8gbmV3IHRva2VucyBpbnRyb2R1Y2VkIGJ5IHRoaXMgZXh0ZW5zaW9uLiAqLworCisvKiBHTF9RQ09NX3BlcmZtb25fZ2xvYmFsX21vZGUgKi8KKyNpZm5kZWYgR0xfUUNPTV9wZXJmbW9uX2dsb2JhbF9tb2RlCisjZGVmaW5lIEdMX1BFUkZNT05fR0xPQkFMX01PREVfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4RkEwCisjZW5kaWYKKworLyogR0xfUUNPTV93cml0ZW9ubHlfcmVuZGVyaW5nICovCisjaWZuZGVmIEdMX1FDT01fd3JpdGVvbmx5X3JlbmRlcmluZworI2RlZmluZSBHTF9XUklURU9OTFlfUkVOREVSSU5HX1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODgyMworI2VuZGlmCisKKy8qIEdMX1FDT01fdGlsZWRfcmVuZGVyaW5nICovCisjaWZuZGVmIEdMX1FDT01fdGlsZWRfcmVuZGVyaW5nCisjZGVmaW5lIEdMX0NPTE9SX0JVRkZFUl9CSVQwX1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwMQorI2RlZmluZSBHTF9DT0xPUl9CVUZGRVJfQklUMV9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIKKyNkZWZpbmUgR0xfQ09MT1JfQlVGRkVSX0JJVDJfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDA0CisjZGVmaW5lIEdMX0NPTE9SX0JVRkZFUl9CSVQzX1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwOAorI2RlZmluZSBHTF9DT0xPUl9CVUZGRVJfQklUNF9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMTAKKyNkZWZpbmUgR0xfQ09MT1JfQlVGRkVSX0JJVDVfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDIwCisjZGVmaW5lIEdMX0NPTE9SX0JVRkZFUl9CSVQ2X1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDA0MAorI2RlZmluZSBHTF9DT0xPUl9CVUZGRVJfQklUN19RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwODAKKyNkZWZpbmUgR0xfREVQVEhfQlVGRkVSX0JJVDBfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMTAwCisjZGVmaW5lIEdMX0RFUFRIX0JVRkZFUl9CSVQxX1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDIwMAorI2RlZmluZSBHTF9ERVBUSF9CVUZGRVJfQklUMl9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDA0MDAKKyNkZWZpbmUgR0xfREVQVEhfQlVGRkVSX0JJVDNfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwODAwCisjZGVmaW5lIEdMX0RFUFRIX0JVRkZFUl9CSVQ0X1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMTAwMAorI2RlZmluZSBHTF9ERVBUSF9CVUZGRVJfQklUNV9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDIwMDAKKyNkZWZpbmUgR0xfREVQVEhfQlVGRkVSX0JJVDZfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDA0MDAwCisjZGVmaW5lIEdMX0RFUFRIX0JVRkZFUl9CSVQ3X1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwODAwMAorI2RlZmluZSBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQwX1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMTAwMDAKKyNkZWZpbmUgR0xfU1RFTkNJTF9CVUZGRVJfQklUMV9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDIwMDAwCisjZGVmaW5lIEdMX1NURU5DSUxfQlVGRkVSX0JJVDJfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDA0MDAwMAorI2RlZmluZSBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQzX1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwODAwMDAKKyNkZWZpbmUgR0xfU1RFTkNJTF9CVUZGRVJfQklUNF9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMTAwMDAwCisjZGVmaW5lIEdMX1NURU5DSUxfQlVGRkVSX0JJVDVfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDIwMDAwMAorI2RlZmluZSBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQ2X1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDA0MDAwMDAKKyNkZWZpbmUgR0xfU1RFTkNJTF9CVUZGRVJfQklUN19RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwODAwMDAwCisjZGVmaW5lIEdMX01VTFRJU0FNUExFX0JVRkZFUl9CSVQwX1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgMHgwMTAwMDAwMAorI2RlZmluZSBHTF9NVUxUSVNBTVBMRV9CVUZGRVJfQklUMV9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDIwMDAwMDAKKyNkZWZpbmUgR0xfTVVMVElTQU1QTEVfQlVGRkVSX0JJVDJfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAweDA0MDAwMDAwCisjZGVmaW5lIEdMX01VTFRJU0FNUExFX0JVRkZFUl9CSVQzX1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgMHgwODAwMDAwMAorI2RlZmluZSBHTF9NVUxUSVNBTVBMRV9CVUZGRVJfQklUNF9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgIDB4MTAwMDAwMDAKKyNkZWZpbmUgR0xfTVVMVElTQU1QTEVfQlVGRkVSX0JJVDVfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAweDIwMDAwMDAwCisjZGVmaW5lIEdMX01VTFRJU0FNUExFX0JVRkZFUl9CSVQ2X1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgMHg0MDAwMDAwMAorI2RlZmluZSBHTF9NVUxUSVNBTVBMRV9CVUZGRVJfQklUN19RQ09NICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAwMDAwMDAKKyNlbmRpZgorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoKKyAqIEVuZCBvZiBleHRlbnNpb24gdG9rZW5zLCBzdGFydCBvZiBjb3JyZXNwb25kaW5nIGV4dGVuc2lvbiBmdW5jdGlvbnMKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qCiAgKiBPRVMgZXh0ZW5zaW9uIGZ1bmN0aW9ucwogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtNDU2LDExICs2NDcsMTEgQEAKICNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCiBHTF9BUEkgdm9pZCogR0xfQVBJRU5UUlkgZ2xNYXBCdWZmZXJPRVMgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBhY2Nlc3MpOwogR0xfQVBJIEdMYm9vbGVhbiBHTF9BUElFTlRSWSBnbFVubWFwQnVmZmVyT0VTIChHTGVudW0gdGFyZ2V0KTsKLUdMX0FQSSB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0QnVmZmVyUG9pbnRlcnZPRVMgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgdm9pZCoqIHBhcmFtcyk7CitHTF9BUEkgdm9pZCBHTF9BUElFTlRSWSBnbEdldEJ1ZmZlclBvaW50ZXJ2T0VTIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMdm9pZCAqKiBwYXJhbXMpOwogI2VuZGlmCiB0eXBlZGVmIHZvaWQqIChHTF9BUElFTlRSWVAgUEZOR0xNQVBCVUZGRVJPRVNQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGFjY2Vzcyk7CiB0eXBlZGVmIEdMYm9vbGVhbiAoR0xfQVBJRU5UUllQIFBGTkdMVU5NQVBCVUZGRVJPRVNQUk9DKSAoR0xlbnVtIHRhcmdldCk7Ci10eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVEJVRkZFUlBPSU5URVJWT0VTUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgdm9pZCoqIHBhcmFtcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVEJVRkZFUlBPSU5URVJWT0VTUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0x2b2lkICoqIHBhcmFtcyk7CiAjZW5kaWYKIAogLyogR0xfT0VTX21hdHJpeF9nZXQgKi8KQEAgLTU3Niw2ICs3NjcsMjYgQEAKICNkZWZpbmUgR0xfT0VTX3RleHR1cmVfbWlycm9yZWRfcmVwZWF0IDEKICNlbmRpZgogCisvKiBHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCAqLworI2lmbmRlZiBHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdAorI2RlZmluZSBHTF9PRVNfdmVydGV4X2FycmF5X29iamVjdCAxCisjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUworR0xfQVBJIHZvaWQgR0xfQVBJRU5UUlkgZ2xCaW5kVmVydGV4QXJyYXlPRVMgKEdMdWludCBhcnJheSk7CitHTF9BUEkgdm9pZCBHTF9BUElFTlRSWSBnbERlbGV0ZVZlcnRleEFycmF5c09FUyAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmFycmF5cyk7CitHTF9BUEkgdm9pZCBHTF9BUElFTlRSWSBnbEdlblZlcnRleEFycmF5c09FUyAoR0xzaXplaSBuLCBHTHVpbnQgKmFycmF5cyk7CitHTF9BUEkgR0xib29sZWFuIEdMX0FQSUVOVFJZIGdsSXNWZXJ0ZXhBcnJheU9FUyAoR0x1aW50IGFycmF5KTsKKyNlbmRpZgordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xCSU5EVkVSVEVYQVJSQVlPRVNQUk9DKSAoR0x1aW50IGFycmF5KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMREVMRVRFVkVSVEVYQVJSQVlTT0VTUFJPQykgKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICphcnJheXMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRU5WRVJURVhBUlJBWVNPRVNQUk9DKSAoR0xzaXplaSBuLCBHTHVpbnQgKmFycmF5cyk7Cit0eXBlZGVmIEdMYm9vbGVhbiAoR0xfQVBJRU5UUllQIFBGTkdMSVNWRVJURVhBUlJBWU9FU1BST0MpIChHTHVpbnQgYXJyYXkpOworI2VuZGlmCisKKy8qIEdMX09FU190ZXh0dXJlX2V4dGVybmFsICovCisjaWZuZGVmIEdMX09FU190ZXh0dXJlX2V4dGVybmFsCisjZGVmaW5lIEdMX09FU190ZXh0dXJlX2V4dGVybmFsIDEKKyNlbmRpZgorCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoKICAqIEFNRCBleHRlbnNpb24gZnVuY3Rpb25zCiAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC01OTEsMTQgKzgwMiwyMDcgQEAKICNlbmRpZgogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoKKyAqIEFQUExFIGV4dGVuc2lvbiBmdW5jdGlvbnMKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLyogR0xfQVBQTEVfdGV4dHVyZV8yRF9saW1pdGVkX25wb3QgKi8KKyNpZm5kZWYgR0xfQVBQTEVfdGV4dHVyZV8yRF9saW1pdGVkX25wb3QKKyNkZWZpbmUgR0xfQVBQTEVfdGV4dHVyZV8yRF9saW1pdGVkX25wb3QgMQorI2VuZGlmCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKgogICogRVhUIGV4dGVuc2lvbiBmdW5jdGlvbnMKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAorLyogR0xfRVhUX2JsZW5kX21pbm1heCAqLworI2lmbmRlZiBHTF9FWFRfYmxlbmRfbWlubWF4CisjZGVmaW5lIEdMX0VYVF9ibGVuZF9taW5tYXggMQorI2VuZGlmCisKKy8qIEdMX0VYVF9kaXNjYXJkX2ZyYW1lYnVmZmVyICovCisjaWZuZGVmIEdMX0VYVF9kaXNjYXJkX2ZyYW1lYnVmZmVyCisjZGVmaW5lIEdMX0VYVF9kaXNjYXJkX2ZyYW1lYnVmZmVyIDEKKyNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCitHTF9BUEkgdm9pZCBHTF9BUElFTlRSWSBnbERpc2NhcmRGcmFtZWJ1ZmZlckVYVCAoR0xlbnVtIHRhcmdldCwgR0xzaXplaSBudW1BdHRhY2htZW50cywgY29uc3QgR0xlbnVtICphdHRhY2htZW50cyk7CisjZW5kaWYKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRElTQ0FSREZSQU1FQlVGRkVSRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbnVtQXR0YWNobWVudHMsIGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMpOworI2VuZGlmCisKKy8qIEdMX0VYVF9tdWx0aV9kcmF3X2FycmF5cyAqLworI2lmbmRlZiBHTF9FWFRfbXVsdGlfZHJhd19hcnJheXMKKyNkZWZpbmUgR0xfRVhUX211bHRpX2RyYXdfYXJyYXlzIDEKKyNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCitHTF9BUEkgdm9pZCBHTF9BUElFTlRSWSBnbE11bHRpRHJhd0FycmF5c0VYVCAoR0xlbnVtIG1vZGUsIEdMaW50ICpmaXJzdCwgR0xzaXplaSAqY291bnQsIEdMc2l6ZWkgcHJpbWNvdW50KTsKK0dMX0FQSSB2b2lkIEdMX0FQSUVOVFJZIGdsTXVsdGlEcmF3RWxlbWVudHNFWFQgKEdMZW51bSBtb2RlLCBjb25zdCBHTHNpemVpICpjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCogKmluZGljZXMsIEdMc2l6ZWkgcHJpbWNvdW50KTsKKyNlbmRpZiAvKiBHTF9HTEVYVF9QUk9UT1RZUEVTICovCit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTE1VTFRJRFJBV0FSUkFZU0VYVFBST0MpIChHTGVudW0gbW9kZSwgR0xpbnQgKmZpcnN0LCBHTHNpemVpICpjb3VudCwgR0xzaXplaSBwcmltY291bnQpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xNVUxUSURSQVdFTEVNRU5UU0VYVFBST0MpIChHTGVudW0gbW9kZSwgY29uc3QgR0xzaXplaSAqY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQqICppbmRpY2VzLCBHTHNpemVpIHByaW1jb3VudCk7CisjZW5kaWYKKworLyogR0xfRVhUX3JlYWRfZm9ybWF0X2JncmEgKi8KKyNpZm5kZWYgR0xfRVhUX3JlYWRfZm9ybWF0X2JncmEKKyNkZWZpbmUgR0xfRVhUX3JlYWRfZm9ybWF0X2JncmEgMQorI2VuZGlmCisKIC8qIEdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyAqLwogI2lmbmRlZiBHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMKICNkZWZpbmUgR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIDEKICNlbmRpZgogCisvKiBHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODggKi8KKyNpZm5kZWYgR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4CisjZGVmaW5lIEdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCAxCisjZW5kaWYKKworLyogR0xfRVhUX3RleHR1cmVfbG9kX2JpYXMgKi8KKyNpZm5kZWYgR0xfRVhUX3RleHR1cmVfbG9kX2JpYXMKKyNkZWZpbmUgR0xfRVhUX3RleHR1cmVfbG9kX2JpYXMgMQorI2VuZGlmCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKgorICogSU1HIGV4dGVuc2lvbiBmdW5jdGlvbnMKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLyogR0xfSU1HX3JlYWRfZm9ybWF0ICovCisjaWZuZGVmIEdMX0lNR19yZWFkX2Zvcm1hdAorI2RlZmluZSBHTF9JTUdfcmVhZF9mb3JtYXQgMQorI2VuZGlmCisKKy8qIEdMX0lNR190ZXh0dXJlX2NvbXByZXNzaW9uX3B2cnRjICovCisjaWZuZGVmIEdMX0lNR190ZXh0dXJlX2NvbXByZXNzaW9uX3B2cnRjCisjZGVmaW5lIEdMX0lNR190ZXh0dXJlX2NvbXByZXNzaW9uX3B2cnRjIDEKKyNlbmRpZgorCisvKiBHTF9JTUdfdGV4dHVyZV9lbnZfZW5oYW5jZWRfZml4ZWRfZnVuY3Rpb24gKi8KKyNpZm5kZWYgR0xfSU1HX3RleHR1cmVfZW52X2VuaGFuY2VkX2ZpeGVkX2Z1bmN0aW9uCisjZGVmaW5lIEdMX0lNR190ZXh0dXJlX2Vudl9lbmhhbmNlZF9maXhlZF9mdW5jdGlvbiAxCisjZW5kaWYKKworLyogR0xfSU1HX3VzZXJfY2xpcF9wbGFuZSAqLworI2lmbmRlZiBHTF9JTUdfdXNlcl9jbGlwX3BsYW5lCisjZGVmaW5lIEdMX0lNR191c2VyX2NsaXBfcGxhbmUgMQorI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKK0dMX0FQSSB2b2lkIEdMX0FQSUVOVFJZIGdsQ2xpcFBsYW5lZklNRyAoR0xlbnVtIHAsIGNvbnN0IEdMZmxvYXQgKmVxbik7CitHTF9BUEkgdm9pZCBHTF9BUElFTlRSWSBnbENsaXBQbGFuZXhJTUcgKEdMZW51bSBwLCBjb25zdCBHTGZpeGVkICplcW4pOworI2VuZGlmCit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTENMSVBQTEFORUZJTUdQUk9DKSAoR0xlbnVtIHAsIGNvbnN0IEdMZmxvYXQgKmVxbik7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTENMSVBQTEFORVhJTUdQUk9DKSAoR0xlbnVtIHAsIGNvbnN0IEdMZml4ZWQgKmVxbik7CisjZW5kaWYKKworLyogR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSAqLworI2lmbmRlZiBHTF9JTUdfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlCisjZGVmaW5lIEdMX0lNR19tdWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUgMQorI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKK0dMX0FQSSB2b2lkIEdMX0FQSUVOVFJZIGdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlSU1HIChHTGVudW0gdGFyZ2V0LCBHTHNpemVpIHNhbXBsZXMsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOworR0xfQVBJIHZvaWQgR0xfQVBJRU5UUlkgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRE11bHRpc2FtcGxlSU1HIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNobWVudCwgR0xlbnVtIHRleHRhcmdldCwgR0x1aW50IHRleHR1cmUsIEdMaW50IGxldmVsLCBHTHNpemVpIHNhbXBsZXMpOworI2VuZGlmCit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFJFTkRFUkJVRkZFUlNUT1JBR0VNVUxUSVNBTVBMRUlNRykgKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgc2FtcGxlcywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEZSQU1FQlVGRkVSVEVYVFVSRTJETVVMVElTQU1QTEVJTUcpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNobWVudCwgR0xlbnVtIHRleHRhcmdldCwgR0x1aW50IHRleHR1cmUsIEdMaW50IGxldmVsLCBHTHNpemVpIHNhbXBsZXMpOworI2VuZGlmCisKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKgorICogTlYgZXh0ZW5zaW9uIGZ1bmN0aW9ucworICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisvKiBOVl9mZW5jZSAqLworI2lmbmRlZiBHTF9OVl9mZW5jZQorI2RlZmluZSBHTF9OVl9mZW5jZSAxCisjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUworR0xfQVBJIHZvaWQgR0xfQVBJRU5UUlkgZ2xEZWxldGVGZW5jZXNOViAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmZlbmNlcyk7CitHTF9BUEkgdm9pZCBHTF9BUElFTlRSWSBnbEdlbkZlbmNlc05WIChHTHNpemVpIG4sIEdMdWludCAqZmVuY2VzKTsKK0dMX0FQSSBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgZ2xJc0ZlbmNlTlYgKEdMdWludCBmZW5jZSk7CitHTF9BUEkgR0xib29sZWFuIEdMX0FQSUVOVFJZIGdsVGVzdEZlbmNlTlYgKEdMdWludCBmZW5jZSk7CitHTF9BUEkgdm9pZCBHTF9BUElFTlRSWSBnbEdldEZlbmNlaXZOViAoR0x1aW50IGZlbmNlLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOworR0xfQVBJIHZvaWQgR0xfQVBJRU5UUlkgZ2xGaW5pc2hGZW5jZU5WIChHTHVpbnQgZmVuY2UpOworR0xfQVBJIHZvaWQgR0xfQVBJRU5UUlkgZ2xTZXRGZW5jZU5WIChHTHVpbnQgZmVuY2UsIEdMZW51bSBjb25kaXRpb24pOworI2VuZGlmCit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTERFTEVURUZFTkNFU05WUFJPQykgKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICpmZW5jZXMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRU5GRU5DRVNOVlBST0MpIChHTHNpemVpIG4sIEdMdWludCAqZmVuY2VzKTsKK3R5cGVkZWYgR0xib29sZWFuIChHTF9BUElFTlRSWVAgUEZOR0xJU0ZFTkNFTlZQUk9DKSAoR0x1aW50IGZlbmNlKTsKK3R5cGVkZWYgR0xib29sZWFuIChHTF9BUElFTlRSWVAgUEZOR0xURVNURkVOQ0VOVlBST0MpIChHTHVpbnQgZmVuY2UpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRGRU5DRUlWTlZQUk9DKSAoR0x1aW50IGZlbmNlLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xGSU5JU0hGRU5DRU5WUFJPQykgKEdMdWludCBmZW5jZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFNFVEZFTkNFTlZQUk9DKSAoR0x1aW50IGZlbmNlLCBHTGVudW0gY29uZGl0aW9uKTsKKyNlbmRpZgorCisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoKKyAqIFFDT00gZXh0ZW5zaW9uIGZ1bmN0aW9ucworICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisvKiBHTF9RQ09NX2RyaXZlcl9jb250cm9sICovCisjaWZuZGVmIEdMX1FDT01fZHJpdmVyX2NvbnRyb2wKKyNkZWZpbmUgR0xfUUNPTV9kcml2ZXJfY29udHJvbCAxCisjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUworR0xfQVBJIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXREcml2ZXJDb250cm9sc1FDT00gKEdMaW50ICpudW0sIEdMc2l6ZWkgc2l6ZSwgR0x1aW50ICpkcml2ZXJDb250cm9scyk7CitHTF9BUEkgdm9pZCBHTF9BUElFTlRSWSBnbEdldERyaXZlckNvbnRyb2xTdHJpbmdRQ09NIChHTHVpbnQgZHJpdmVyQ29udHJvbCwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMY2hhciAqZHJpdmVyQ29udHJvbFN0cmluZyk7CitHTF9BUEkgdm9pZCBHTF9BUElFTlRSWSBnbEVuYWJsZURyaXZlckNvbnRyb2xRQ09NIChHTHVpbnQgZHJpdmVyQ29udHJvbCk7CitHTF9BUEkgdm9pZCBHTF9BUElFTlRSWSBnbERpc2FibGVEcml2ZXJDb250cm9sUUNPTSAoR0x1aW50IGRyaXZlckNvbnRyb2wpOworI2VuZGlmCit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVERSSVZFUkNPTlRST0xTUUNPTVBST0MpIChHTGludCAqbnVtLCBHTHNpemVpIHNpemUsIEdMdWludCAqZHJpdmVyQ29udHJvbHMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVREUklWRVJDT05UUk9MU1RSSU5HUUNPTVBST0MpIChHTHVpbnQgZHJpdmVyQ29udHJvbCwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMY2hhciAqZHJpdmVyQ29udHJvbFN0cmluZyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEVOQUJMRURSSVZFUkNPTlRST0xRQ09NUFJPQykgKEdMdWludCBkcml2ZXJDb250cm9sKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRElTQUJMRURSSVZFUkNPTlRST0xRQ09NUFJPQykgKEdMdWludCBkcml2ZXJDb250cm9sKTsKKyNlbmRpZgorCisvKiBHTF9RQ09NX2V4dGVuZGVkX2dldCAqLworI2lmbmRlZiBHTF9RQ09NX2V4dGVuZGVkX2dldAorI2RlZmluZSBHTF9RQ09NX2V4dGVuZGVkX2dldCAxCisjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUworR0xfQVBJIHZvaWQgR0xfQVBJRU5UUlkgZ2xFeHRHZXRUZXh0dXJlc1FDT00gKEdMdWludCAqdGV4dHVyZXMsIEdMaW50IG1heFRleHR1cmVzLCBHTGludCAqbnVtVGV4dHVyZXMpOworR0xfQVBJIHZvaWQgR0xfQVBJRU5UUlkgZ2xFeHRHZXRCdWZmZXJzUUNPTSAoR0x1aW50ICpidWZmZXJzLCBHTGludCBtYXhCdWZmZXJzLCBHTGludCAqbnVtQnVmZmVycyk7CitHTF9BUEkgdm9pZCBHTF9BUElFTlRSWSBnbEV4dEdldFJlbmRlcmJ1ZmZlcnNRQ09NIChHTHVpbnQgKnJlbmRlcmJ1ZmZlcnMsIEdMaW50IG1heFJlbmRlcmJ1ZmZlcnMsIEdMaW50ICpudW1SZW5kZXJidWZmZXJzKTsKK0dMX0FQSSB2b2lkIEdMX0FQSUVOVFJZIGdsRXh0R2V0RnJhbWVidWZmZXJzUUNPTSAoR0x1aW50ICpmcmFtZWJ1ZmZlcnMsIEdMaW50IG1heEZyYW1lYnVmZmVycywgR0xpbnQgKm51bUZyYW1lYnVmZmVycyk7CitHTF9BUEkgdm9pZCBHTF9BUElFTlRSWSBnbEV4dEdldFRleExldmVsUGFyYW1ldGVyaXZRQ09NIChHTHVpbnQgdGV4dHVyZSwgR0xlbnVtIGZhY2UsIEdMaW50IGxldmVsLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOworR0xfQVBJIHZvaWQgR0xfQVBJRU5UUlkgZ2xFeHRUZXhPYmplY3RTdGF0ZU92ZXJyaWRlaVFDT00gKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pOworR0xfQVBJIHZvaWQgR0xfQVBJRU5UUlkgZ2xFeHRHZXRUZXhTdWJJbWFnZVFDT00gKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMdm9pZCAqdGV4ZWxzKTsKK0dMX0FQSSB2b2lkIEdMX0FQSUVOVFJZIGdsRXh0R2V0QnVmZmVyUG9pbnRlcnZRQ09NIChHTGVudW0gdGFyZ2V0LCBHTHZvaWQgKipwYXJhbXMpOworI2VuZGlmCit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEVYVEdFVFRFWFRVUkVTUUNPTVBST0MpIChHTHVpbnQgKnRleHR1cmVzLCBHTGludCBtYXhUZXh0dXJlcywgR0xpbnQgKm51bVRleHR1cmVzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRVhUR0VUQlVGRkVSU1FDT01QUk9DKSAoR0x1aW50ICpidWZmZXJzLCBHTGludCBtYXhCdWZmZXJzLCBHTGludCAqbnVtQnVmZmVycyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEVYVEdFVFJFTkRFUkJVRkZFUlNRQ09NUFJPQykgKEdMdWludCAqcmVuZGVyYnVmZmVycywgR0xpbnQgbWF4UmVuZGVyYnVmZmVycywgR0xpbnQgKm51bVJlbmRlcmJ1ZmZlcnMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xFWFRHRVRGUkFNRUJVRkZFUlNRQ09NUFJPQykgKEdMdWludCAqZnJhbWVidWZmZXJzLCBHTGludCBtYXhGcmFtZWJ1ZmZlcnMsIEdMaW50ICpudW1GcmFtZWJ1ZmZlcnMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xFWFRHRVRURVhMRVZFTFBBUkFNRVRFUklWUUNPTVBST0MpIChHTHVpbnQgdGV4dHVyZSwgR0xlbnVtIGZhY2UsIEdMaW50IGxldmVsLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xFWFRURVhPQkpFQ1RTVEFURU9WRVJSSURFSVFDT01QUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEVYVEdFVFRFWFNVQklNQUdFUUNPTVBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgem9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHZvaWQgKnRleGVscyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEVYVEdFVEJVRkZFUlBPSU5URVJWUUNPTVBST0MpIChHTGVudW0gdGFyZ2V0LCBHTHZvaWQgKipwYXJhbXMpOworI2VuZGlmCisKKy8qIEdMX1FDT01fZXh0ZW5kZWRfZ2V0MiAqLworI2lmbmRlZiBHTF9RQ09NX2V4dGVuZGVkX2dldDIKKyNkZWZpbmUgR0xfUUNPTV9leHRlbmRlZF9nZXQyIDEKKyNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCitHTF9BUEkgdm9pZCBHTF9BUElFTlRSWSBnbEV4dEdldFNoYWRlcnNRQ09NIChHTHVpbnQgKnNoYWRlcnMsIEdMaW50IG1heFNoYWRlcnMsIEdMaW50ICpudW1TaGFkZXJzKTsKK0dMX0FQSSB2b2lkIEdMX0FQSUVOVFJZIGdsRXh0R2V0UHJvZ3JhbXNRQ09NIChHTHVpbnQgKnByb2dyYW1zLCBHTGludCBtYXhQcm9ncmFtcywgR0xpbnQgKm51bVByb2dyYW1zKTsKK0dMX0FQSSBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgZ2xFeHRJc1Byb2dyYW1CaW5hcnlRQ09NIChHTHVpbnQgcHJvZ3JhbSk7CitHTF9BUEkgdm9pZCBHTF9BUElFTlRSWSBnbEV4dEdldFByb2dyYW1CaW5hcnlTb3VyY2VRQ09NIChHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIHNoYWRlcnR5cGUsIEdMY2hhciAqc291cmNlLCBHTGludCAqbGVuZ3RoKTsKKyNlbmRpZgordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xFWFRHRVRTSEFERVJTUUNPTVBST0MpIChHTHVpbnQgKnNoYWRlcnMsIEdMaW50IG1heFNoYWRlcnMsIEdMaW50ICpudW1TaGFkZXJzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRVhUR0VUUFJPR1JBTVNRQ09NUFJPQykgKEdMdWludCAqcHJvZ3JhbXMsIEdMaW50IG1heFByb2dyYW1zLCBHTGludCAqbnVtUHJvZ3JhbXMpOwordHlwZWRlZiBHTGJvb2xlYW4gKEdMX0FQSUVOVFJZUCBQRk5HTEVYVElTUFJPR1JBTUJJTkFSWVFDT01QUk9DKSAoR0x1aW50IHByb2dyYW0pOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xFWFRHRVRQUk9HUkFNQklOQVJZU09VUkNFUUNPTVBST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIHNoYWRlcnR5cGUsIEdMY2hhciAqc291cmNlLCBHTGludCAqbGVuZ3RoKTsKKyNlbmRpZgorCisvKiBHTF9RQ09NX3BlcmZtb25fZ2xvYmFsX21vZGUgKi8KKyNpZm5kZWYgR0xfUUNPTV9wZXJmbW9uX2dsb2JhbF9tb2RlCisjZGVmaW5lIEdMX1FDT01fcGVyZm1vbl9nbG9iYWxfbW9kZSAxCisjZW5kaWYKKworLyogR0xfUUNPTV93cml0ZW9ubHlfcmVuZGVyaW5nICovCisjaWZuZGVmIEdMX1FDT01fd3JpdGVvbmx5X3JlbmRlcmluZworI2RlZmluZSBHTF9RQ09NX3dyaXRlb25seV9yZW5kZXJpbmcgMQorI2VuZGlmCisKKy8qIEdMX1FDT01fdGlsZWRfcmVuZGVyaW5nICovCisjaWZuZGVmIEdMX1FDT01fdGlsZWRfcmVuZGVyaW5nCisjZGVmaW5lIEdMX1FDT01fdGlsZWRfcmVuZGVyaW5nIDEKKyNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCitHTF9BUEkgdm9pZCBHTF9BUElFTlRSWSBnbFN0YXJ0VGlsaW5nUUNPTSAoR0x1aW50IHgsIEdMdWludCB5LCBHTHVpbnQgd2lkdGgsIEdMdWludCBoZWlnaHQsIEdMYml0ZmllbGQgcHJlc2VydmVNYXNrKTsKK0dMX0FQSSB2b2lkIEdMX0FQSUVOVFJZIGdsRW5kVGlsaW5nUUNPTSAoR0xiaXRmaWVsZCBwcmVzZXJ2ZU1hc2spOworI2VuZGlmCit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFNUQVJUVElMSU5HUUNPTVBST0MpIChHTHVpbnQgeCwgR0x1aW50IHksIEdMdWludCB3aWR0aCwgR0x1aW50IGhlaWdodCwgR0xiaXRmaWVsZCBwcmVzZXJ2ZU1hc2spOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xFTkRUSUxJTkdRQ09NUFJPQykgKEdMYml0ZmllbGQgcHJlc2VydmVNYXNrKTsKKyNlbmRpZgorCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvb3BlbmdsL2luY2x1ZGUvR0xFUy9nbHBsYXRmb3JtLmggYi9vcGVuZ2wvaW5jbHVkZS9HTEVTL2dscGxhdGZvcm0uaAppbmRleCAxOThlNjc5Li4yZGI2ZWUyIDEwMDY0NAotLS0gYS9vcGVuZ2wvaW5jbHVkZS9HTEVTL2dscGxhdGZvcm0uaAorKysgYi9vcGVuZ2wvaW5jbHVkZS9HTEVTL2dscGxhdGZvcm0uaApAQCAtMSw3ICsxLDcgQEAKICNpZm5kZWYgX19nbHBsYXRmb3JtX2hfCiAjZGVmaW5lIF9fZ2xwbGF0Zm9ybV9oXwogCi0vKiAkUmV2aXNpb246IDcxNzIgJCBvbiAkRGF0ZTo6IDIwMDktMDEtMDkgMTE6MTc6NDEgLTA4MDAgIyQgKi8KKy8qICRSZXZpc2lvbjogMTA2MDEgJCBvbiAkRGF0ZTo6IDIwMTAtMDMtMDQgMjI6MTU6MjcgLTA4MDAgIyQgKi8KIAogLyoKICAqIFRoaXMgZG9jdW1lbnQgaXMgbGljZW5zZWQgdW5kZXIgdGhlIFNHSSBGcmVlIFNvZnR3YXJlIEIgTGljZW5zZSBWZXJzaW9uCkBAIC05LDcgKzksNiBAQAogICovCiAKIC8qIFBsYXRmb3JtLXNwZWNpZmljIHR5cGVzIGFuZCBkZWZpbml0aW9ucyBmb3IgT3BlbkdMIEVTIDEuWCAgZ2wuaAotICogTGFzdCBtb2RpZmllZCBvbiAyMDA4LzEyLzE5CiAgKgogICogQWRvcHRlcnMgbWF5IG1vZGlmeSBraHJwbGF0Zm9ybS5oIGFuZCB0aGlzIGZpbGUgdG8gc3VpdCB0aGVpciBwbGF0Zm9ybS4KICAqIFlvdSBhcmUgZW5jb3VyYWdlZCB0byBzdWJtaXQgYWxsIG1vZGlmaWNhdGlvbnMgdG8gdGhlIEtocm9ub3MgZ3JvdXAgc28gdGhhdApAQCAtMjQsMTAgKzIzLDggQEAKICNkZWZpbmUgR0xfQVBJICAgICAgS0hST05PU19BUElDQUxMCiAjZW5kaWYKIAotI2lmIGRlZmluZWQoQU5EUk9JRCkKLQorI2lmbmRlZiBHTF9BUElFTlRSWQogI2RlZmluZSBHTF9BUElFTlRSWSBLSFJPTk9TX0FQSUVOVFJZCi0KICNlbmRpZgogCiAjZW5kaWYgLyogX19nbHBsYXRmb3JtX2hfICovCmRpZmYgLS1naXQgYS9vcGVuZ2wvaW5jbHVkZS9HTEVTMi9nbDIuaCBiL29wZW5nbC9pbmNsdWRlL0dMRVMyL2dsMi5oCmluZGV4IDAxODJhNjcuLmUxZDNiODcgMTAwNjQ0Ci0tLSBhL29wZW5nbC9pbmNsdWRlL0dMRVMyL2dsMi5oCisrKyBiL29wZW5nbC9pbmNsdWRlL0dMRVMyL2dsMi5oCkBAIC0xLDcgKzEsNyBAQAogI2lmbmRlZiBfX2dsMl9oXwogI2RlZmluZSBfX2dsMl9oXwogCi0vKiAkUmV2aXNpb246IDcxNzMgJCBvbiAkRGF0ZTo6IDIwMDktMDEtMDkgMTE6MTg6MjEgLTA4MDAgIyQgKi8KKy8qICRSZXZpc2lvbjogMTA2MDIgJCBvbiAkRGF0ZTo6IDIwMTAtMDMtMDQgMjI6MzU6MzQgLTA4MDAgIyQgKi8KIAogI2luY2x1ZGUgPEdMRVMyL2dsMnBsYXRmb3JtLmg+CiAKQEAgLTE5LDYgKzE5LDcgQEAKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCiB0eXBlZGVmIHZvaWQgICAgICAgICAgICAgR0x2b2lkOwordHlwZWRlZiBjaGFyICAgICAgICAgICAgIEdMY2hhcjsKIHR5cGVkZWYgdW5zaWduZWQgaW50ICAgICBHTGVudW07CiB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgICAgR0xib29sZWFuOwogdHlwZWRlZiB1bnNpZ25lZCBpbnQgICAgIEdMYml0ZmllbGQ7CkBAIC00NzIsNyArNDczLDcgQEAKIAogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xBY3RpdmVUZXh0dXJlIChHTGVudW0gdGV4dHVyZSk7CiBHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbEF0dGFjaFNoYWRlciAoR0x1aW50IHByb2dyYW0sIEdMdWludCBzaGFkZXIpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xCaW5kQXR0cmliTG9jYXRpb24gKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgaW5kZXgsIGNvbnN0IGNoYXIqIG5hbWUpOworR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xCaW5kQXR0cmliTG9jYXRpb24gKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMY2hhciogbmFtZSk7CiBHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbEJpbmRCdWZmZXIgKEdMZW51bSB0YXJnZXQsIEdMdWludCBidWZmZXIpOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xCaW5kRnJhbWVidWZmZXIgKEdMZW51bSB0YXJnZXQsIEdMdWludCBmcmFtZWJ1ZmZlcik7CiBHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbEJpbmRSZW5kZXJidWZmZXIgKEdMZW51bSB0YXJnZXQsIEdMdWludCByZW5kZXJidWZmZXIpOwpAQCAtNDgyLDggKzQ4Myw4IEBACiBHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbEJsZW5kRXF1YXRpb25TZXBhcmF0ZSAoR0xlbnVtIG1vZGVSR0IsIEdMZW51bSBtb2RlQWxwaGEpOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xCbGVuZEZ1bmMgKEdMZW51bSBzZmFjdG9yLCBHTGVudW0gZGZhY3Rvcik7CiBHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbEJsZW5kRnVuY1NlcGFyYXRlIChHTGVudW0gc3JjUkdCLCBHTGVudW0gZHN0UkdCLCBHTGVudW0gc3JjQWxwaGEsIEdMZW51bSBkc3RBbHBoYSk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbEJ1ZmZlckRhdGEgKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWlwdHIgc2l6ZSwgY29uc3Qgdm9pZCogZGF0YSwgR0xlbnVtIHVzYWdlKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsQnVmZmVyU3ViRGF0YSAoR0xlbnVtIHRhcmdldCwgR0xpbnRwdHIgb2Zmc2V0LCBHTHNpemVpcHRyIHNpemUsIGNvbnN0IHZvaWQqIGRhdGEpOworR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xCdWZmZXJEYXRhIChHTGVudW0gdGFyZ2V0LCBHTHNpemVpcHRyIHNpemUsIGNvbnN0IEdMdm9pZCogZGF0YSwgR0xlbnVtIHVzYWdlKTsKK0dMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsQnVmZmVyU3ViRGF0YSAoR0xlbnVtIHRhcmdldCwgR0xpbnRwdHIgb2Zmc2V0LCBHTHNpemVpcHRyIHNpemUsIGNvbnN0IEdMdm9pZCogZGF0YSk7CiBHTF9BUElDQUxMIEdMZW51bSAgICAgICBHTF9BUElFTlRSWSBnbENoZWNrRnJhbWVidWZmZXJTdGF0dXMgKEdMZW51bSB0YXJnZXQpOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xDbGVhciAoR0xiaXRmaWVsZCBtYXNrKTsKIEdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsQ2xlYXJDb2xvciAoR0xjbGFtcGYgcmVkLCBHTGNsYW1wZiBncmVlbiwgR0xjbGFtcGYgYmx1ZSwgR0xjbGFtcGYgYWxwaGEpOwpAQCAtNDkxLDggKzQ5Miw4IEBACiBHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbENsZWFyU3RlbmNpbCAoR0xpbnQgcyk7CiBHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbENvbG9yTWFzayAoR0xib29sZWFuIHJlZCwgR0xib29sZWFuIGdyZWVuLCBHTGJvb2xlYW4gYmx1ZSwgR0xib29sZWFuIGFscGhhKTsKIEdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsQ29tcGlsZVNoYWRlciAoR0x1aW50IHNoYWRlcik7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbENvbXByZXNzZWRUZXhJbWFnZTJEIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xpbnQgYm9yZGVyLCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbENvbXByZXNzZWRUZXhTdWJJbWFnZTJEIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKTsKK0dMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsQ29tcHJlc3NlZFRleEltYWdlMkQgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIsIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCBHTHZvaWQqIGRhdGEpOworR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2b2lkKiBkYXRhKTsKIEdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsQ29weVRleEltYWdlMkQgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIpOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xDb3B5VGV4U3ViSW1hZ2UyRCAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKIEdMX0FQSUNBTEwgR0x1aW50ICAgICAgIEdMX0FQSUVOVFJZIGdsQ3JlYXRlUHJvZ3JhbSAodm9pZCk7CkBAIC01MTEsNyArNTEyLDcgQEAKIEdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsRGlzYWJsZSAoR0xlbnVtIGNhcCk7CiBHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbERpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSAoR0x1aW50IGluZGV4KTsKIEdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsRHJhd0FycmF5cyAoR0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50KTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsRHJhd0VsZW1lbnRzIChHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIGluZGljZXMpOworR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xEcmF3RWxlbWVudHMgKEdMZW51bSBtb2RlLCBHTHNpemVpIGNvdW50LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkKiBpbmRpY2VzKTsKIEdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsRW5hYmxlIChHTGVudW0gY2FwKTsKIEdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsRW5hYmxlVmVydGV4QXR0cmliQXJyYXkgKEdMdWludCBpbmRleCk7CiBHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbEZpbmlzaCAodm9pZCk7CkBAIC01MjQsMTAgKzUyNSwxMCBAQAogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xHZW5GcmFtZWJ1ZmZlcnMgKEdMc2l6ZWkgbiwgR0x1aW50KiBmcmFtZWJ1ZmZlcnMpOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xHZW5SZW5kZXJidWZmZXJzIChHTHNpemVpIG4sIEdMdWludCogcmVuZGVyYnVmZmVycyk7CiBHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbEdlblRleHR1cmVzIChHTHNpemVpIG4sIEdMdWludCogdGV4dHVyZXMpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xHZXRBY3RpdmVBdHRyaWIgKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgYnVmc2l6ZSwgR0xzaXplaSogbGVuZ3RoLCBHTGludCogc2l6ZSwgR0xlbnVtKiB0eXBlLCBjaGFyKiBuYW1lKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsR2V0QWN0aXZlVW5pZm9ybSAoR0x1aW50IHByb2dyYW0sIEdMdWludCBpbmRleCwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpKiBsZW5ndGgsIEdMaW50KiBzaXplLCBHTGVudW0qIHR5cGUsIGNoYXIqIG5hbWUpOworR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xHZXRBY3RpdmVBdHRyaWIgKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgYnVmc2l6ZSwgR0xzaXplaSogbGVuZ3RoLCBHTGludCogc2l6ZSwgR0xlbnVtKiB0eXBlLCBHTGNoYXIqIG5hbWUpOworR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xHZXRBY3RpdmVVbmlmb3JtIChHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IGluZGV4LCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkqIGxlbmd0aCwgR0xpbnQqIHNpemUsIEdMZW51bSogdHlwZSwgR0xjaGFyKiBuYW1lKTsKIEdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsR2V0QXR0YWNoZWRTaGFkZXJzIChHTHVpbnQgcHJvZ3JhbSwgR0xzaXplaSBtYXhjb3VudCwgR0xzaXplaSogY291bnQsIEdMdWludCogc2hhZGVycyk7Ci1HTF9BUElDQUxMIGludCAgICAgICAgICBHTF9BUElFTlRSWSBnbEdldEF0dHJpYkxvY2F0aW9uIChHTHVpbnQgcHJvZ3JhbSwgY29uc3QgY2hhciogbmFtZSk7CitHTF9BUElDQUxMIGludCAgICAgICAgICBHTF9BUElFTlRSWSBnbEdldEF0dHJpYkxvY2F0aW9uIChHTHVpbnQgcHJvZ3JhbSwgY29uc3QgR0xjaGFyKiBuYW1lKTsKIEdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsR2V0Qm9vbGVhbnYgKEdMZW51bSBwbmFtZSwgR0xib29sZWFuKiBwYXJhbXMpOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xHZXRCdWZmZXJQYXJhbWV0ZXJpdiAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCogcGFyYW1zKTsKIEdMX0FQSUNBTEwgR0xlbnVtICAgICAgIEdMX0FQSUVOVFJZIGdsR2V0RXJyb3IgKHZvaWQpOwpAQCAtNTM1LDIxICs1MzYsMjEgQEAKIEdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsR2V0RnJhbWVidWZmZXJBdHRhY2htZW50UGFyYW1ldGVyaXYgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LCBHTGVudW0gcG5hbWUsIEdMaW50KiBwYXJhbXMpOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xHZXRJbnRlZ2VydiAoR0xlbnVtIHBuYW1lLCBHTGludCogcGFyYW1zKTsKIEdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsR2V0UHJvZ3JhbWl2IChHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIHBuYW1lLCBHTGludCogcGFyYW1zKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsR2V0UHJvZ3JhbUluZm9Mb2cgKEdMdWludCBwcm9ncmFtLCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkqIGxlbmd0aCwgY2hhciogaW5mb2xvZyk7CitHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbEdldFByb2dyYW1JbmZvTG9nIChHTHVpbnQgcHJvZ3JhbSwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpKiBsZW5ndGgsIEdMY2hhciogaW5mb2xvZyk7CiBHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbEdldFJlbmRlcmJ1ZmZlclBhcmFtZXRlcml2IChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50KiBwYXJhbXMpOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xHZXRTaGFkZXJpdiAoR0x1aW50IHNoYWRlciwgR0xlbnVtIHBuYW1lLCBHTGludCogcGFyYW1zKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsR2V0U2hhZGVySW5mb0xvZyAoR0x1aW50IHNoYWRlciwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpKiBsZW5ndGgsIGNoYXIqIGluZm9sb2cpOworR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xHZXRTaGFkZXJJbmZvTG9nIChHTHVpbnQgc2hhZGVyLCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkqIGxlbmd0aCwgR0xjaGFyKiBpbmZvbG9nKTsKIEdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsR2V0U2hhZGVyUHJlY2lzaW9uRm9ybWF0IChHTGVudW0gc2hhZGVydHlwZSwgR0xlbnVtIHByZWNpc2lvbnR5cGUsIEdMaW50KiByYW5nZSwgR0xpbnQqIHByZWNpc2lvbik7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbEdldFNoYWRlclNvdXJjZSAoR0x1aW50IHNoYWRlciwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpKiBsZW5ndGgsIGNoYXIqIHNvdXJjZSk7CitHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbEdldFNoYWRlclNvdXJjZSAoR0x1aW50IHNoYWRlciwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpKiBsZW5ndGgsIEdMY2hhciogc291cmNlKTsKIEdMX0FQSUNBTEwgY29uc3QgR0x1Ynl0ZSogR0xfQVBJRU5UUlkgZ2xHZXRTdHJpbmcgKEdMZW51bSBuYW1lKTsKIEdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsR2V0VGV4UGFyYW1ldGVyZnYgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCogcGFyYW1zKTsKIEdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsR2V0VGV4UGFyYW1ldGVyaXYgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcyk7CiBHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbEdldFVuaWZvcm1mdiAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0KiBwYXJhbXMpOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xHZXRVbmlmb3JtaXYgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0xpbnQqIHBhcmFtcyk7Ci1HTF9BUElDQUxMIGludCAgICAgICAgICBHTF9BUElFTlRSWSBnbEdldFVuaWZvcm1Mb2NhdGlvbiAoR0x1aW50IHByb2dyYW0sIGNvbnN0IGNoYXIqIG5hbWUpOworR0xfQVBJQ0FMTCBpbnQgICAgICAgICAgR0xfQVBJRU5UUlkgZ2xHZXRVbmlmb3JtTG9jYXRpb24gKEdMdWludCBwcm9ncmFtLCBjb25zdCBHTGNoYXIqIG5hbWUpOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xHZXRWZXJ0ZXhBdHRyaWJmdiAoR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQqIHBhcmFtcyk7CiBHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbEdldFZlcnRleEF0dHJpYml2IChHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcyk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2IChHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgdm9pZCoqIHBvaW50ZXIpOworR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydiAoR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMdm9pZCoqIHBvaW50ZXIpOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xIaW50IChHTGVudW0gdGFyZ2V0LCBHTGVudW0gbW9kZSk7CiBHTF9BUElDQUxMIEdMYm9vbGVhbiAgICBHTF9BUElFTlRSWSBnbElzQnVmZmVyIChHTHVpbnQgYnVmZmVyKTsKIEdMX0FQSUNBTEwgR0xib29sZWFuICAgIEdMX0FQSUVOVFJZIGdsSXNFbmFibGVkIChHTGVudW0gY2FwKTsKQEAgLTU2MiwyNSArNTYzLDI1IEBACiBHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbExpbmtQcm9ncmFtIChHTHVpbnQgcHJvZ3JhbSk7CiBHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbFBpeGVsU3RvcmVpIChHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKIEdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsUG9seWdvbk9mZnNldCAoR0xmbG9hdCBmYWN0b3IsIEdMZmxvYXQgdW5pdHMpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xSZWFkUGl4ZWxzIChHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIHZvaWQqIHBpeGVscyk7CitHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbFJlYWRQaXhlbHMgKEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0x2b2lkKiBwaXhlbHMpOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xSZWxlYXNlU2hhZGVyQ29tcGlsZXIgKHZvaWQpOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xSZW5kZXJidWZmZXJTdG9yYWdlIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKIEdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsU2FtcGxlQ292ZXJhZ2UgKEdMY2xhbXBmIHZhbHVlLCBHTGJvb2xlYW4gaW52ZXJ0KTsKIEdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsU2Npc3NvciAoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwotR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xTaGFkZXJCaW5hcnkgKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50KiBzaGFkZXJzLCBHTGVudW0gYmluYXJ5Zm9ybWF0LCBjb25zdCB2b2lkKiBiaW5hcnksIEdMc2l6ZWkgbGVuZ3RoKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsU2hhZGVyU291cmNlIChHTHVpbnQgc2hhZGVyLCBHTHNpemVpIGNvdW50LCBjb25zdCBjaGFyKiogc3RyaW5nLCBjb25zdCBHTGludCogbGVuZ3RoKTsKK0dMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsU2hhZGVyQmluYXJ5IChHTHNpemVpIG4sIGNvbnN0IEdMdWludCogc2hhZGVycywgR0xlbnVtIGJpbmFyeWZvcm1hdCwgY29uc3QgR0x2b2lkKiBiaW5hcnksIEdMc2l6ZWkgbGVuZ3RoKTsKK0dMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsU2hhZGVyU291cmNlIChHTHVpbnQgc2hhZGVyLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGNoYXIqKiBzdHJpbmcsIGNvbnN0IEdMaW50KiBsZW5ndGgpOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xTdGVuY2lsRnVuYyAoR0xlbnVtIGZ1bmMsIEdMaW50IHJlZiwgR0x1aW50IG1hc2spOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xTdGVuY2lsRnVuY1NlcGFyYXRlIChHTGVudW0gZmFjZSwgR0xlbnVtIGZ1bmMsIEdMaW50IHJlZiwgR0x1aW50IG1hc2spOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xTdGVuY2lsTWFzayAoR0x1aW50IG1hc2spOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xTdGVuY2lsTWFza1NlcGFyYXRlIChHTGVudW0gZmFjZSwgR0x1aW50IG1hc2spOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xTdGVuY2lsT3AgKEdMZW51bSBmYWlsLCBHTGVudW0gemZhaWwsIEdMZW51bSB6cGFzcyk7CiBHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbFN0ZW5jaWxPcFNlcGFyYXRlIChHTGVudW0gZmFjZSwgR0xlbnVtIGZhaWwsIEdMZW51bSB6ZmFpbCwgR0xlbnVtIHpwYXNzKTsKLUdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsVGV4SW1hZ2UyRCAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IGludGVybmFsZm9ybWF0LCAgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMaW50IGJvcmRlciwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCogcGl4ZWxzKTsKK0dMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsVGV4SW1hZ2UyRCAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xpbnQgYm9yZGVyLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkKiBwaXhlbHMpOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xUZXhQYXJhbWV0ZXJmIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xUZXhQYXJhbWV0ZXJmdiAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0KiBwYXJhbXMpOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xUZXhQYXJhbWV0ZXJpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKIEdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsVGV4UGFyYW1ldGVyaXYgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQqIHBhcmFtcyk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbFRleFN1YkltYWdlMkQgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscyk7CitHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbFRleFN1YkltYWdlMkQgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCogcGl4ZWxzKTsKIEdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsVW5pZm9ybTFmIChHTGludCBsb2NhdGlvbiwgR0xmbG9hdCB4KTsKIEdMX0FQSUNBTEwgdm9pZCAgICAgICAgIEdMX0FQSUVOVFJZIGdsVW5pZm9ybTFmdiAoR0xpbnQgbG9jYXRpb24sIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMZmxvYXQqIHYpOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xVbmlmb3JtMWkgKEdMaW50IGxvY2F0aW9uLCBHTGludCB4KTsKQEAgLTYxMCw3ICs2MTEsNyBAQAogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xWZXJ0ZXhBdHRyaWIzZnYgKEdMdWludCBpbmR4LCBjb25zdCBHTGZsb2F0KiB2YWx1ZXMpOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xWZXJ0ZXhBdHRyaWI0ZiAoR0x1aW50IGluZHgsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHosIEdMZmxvYXQgdyk7CiBHTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbFZlcnRleEF0dHJpYjRmdiAoR0x1aW50IGluZHgsIGNvbnN0IEdMZmxvYXQqIHZhbHVlcyk7Ci1HTF9BUElDQUxMIHZvaWQgICAgICAgICBHTF9BUElFTlRSWSBnbFZlcnRleEF0dHJpYlBvaW50ZXIgKEdMdWludCBpbmR4LCBHTGludCBzaXplLCBHTGVudW0gdHlwZSwgR0xib29sZWFuIG5vcm1hbGl6ZWQsIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCB2b2lkKiBwdHIpOworR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyIChHTHVpbnQgaW5keCwgR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMYm9vbGVhbiBub3JtYWxpemVkLCBHTHNpemVpIHN0cmlkZSwgY29uc3QgR0x2b2lkKiBwdHIpOwogR0xfQVBJQ0FMTCB2b2lkICAgICAgICAgR0xfQVBJRU5UUlkgZ2xWaWV3cG9ydCAoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwogCiAjaWZkZWYgX19jcGx1c3BsdXMKZGlmZiAtLWdpdCBhL29wZW5nbC9pbmNsdWRlL0dMRVMyL2dsMmV4dC5oIGIvb3BlbmdsL2luY2x1ZGUvR0xFUzIvZ2wyZXh0LmgKaW5kZXggNzJmMWFlNy4uZGU1ZDY1YSAxMDA2NDQKLS0tIGEvb3BlbmdsL2luY2x1ZGUvR0xFUzIvZ2wyZXh0LmgKKysrIGIvb3BlbmdsL2luY2x1ZGUvR0xFUzIvZ2wyZXh0LmgKQEAgLTEsNyArMSw3IEBACiAjaWZuZGVmIF9fZ2wyZXh0X2hfCiAjZGVmaW5lIF9fZ2wyZXh0X2hfCiAKLS8qICRSZXZpc2lvbjogODI3MSAkIG9uICREYXRlOjogMjAwOS0wNS0yMSAwOTozMzo0MCAtMDcwMCAjJCAqLworLyogJFJldmlzaW9uOiAxMDk2OSAkIG9uICREYXRlOjogMjAxMC0wNC0wOSAwMjoyNzoxNSAtMDcwMCAjJCAqLwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAiQyIgewpAQCAtNTcsNiArNTcsMTEgQEAKIHR5cGVkZWYgdm9pZCogR0xlZ2xJbWFnZU9FUzsKICNlbmRpZgogCisvKiBHTF9PRVNfZWxlbWVudF9pbmRleF91aW50ICovCisjaWZuZGVmIEdMX09FU19lbGVtZW50X2luZGV4X3VpbnQKKyNkZWZpbmUgR0xfVU5TSUdORURfSU5UICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE0MDUKKyNlbmRpZgorCiAvKiBHTF9PRVNfZ2V0X3Byb2dyYW1fYmluYXJ5ICovCiAjaWZuZGVmIEdMX09FU19nZXRfcHJvZ3JhbV9iaW5hcnkKICNkZWZpbmUgR0xfUFJPR1JBTV9CSU5BUllfTEVOR1RIX09FUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg3NDEKQEAgLTEwMCw4ICsxMDUsOCBAQAogI2RlZmluZSBHTF9TVEVOQ0lMX0lOREVYNF9PRVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEQ0NwogI2VuZGlmCiAKLS8qIEdMX09FU190ZXh0dXJlM0QgKi8KLSNpZm5kZWYgR0xfT0VTX3RleHR1cmUzRAorLyogR0xfT0VTX3RleHR1cmVfM0QgKi8KKyNpZm5kZWYgR0xfT0VTX3RleHR1cmVfM0QKICNkZWZpbmUgR0xfVEVYVFVSRV9XUkFQX1JfT0VTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwNzIKICNkZWZpbmUgR0xfVEVYVFVSRV8zRF9PRVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwNkYKICNkZWZpbmUgR0xfVEVYVFVSRV9CSU5ESU5HXzNEX09FUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwNkEKQEAgLTExMCwxMSArMTE1LDI4IEBACiAjZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0FUVEFDSE1FTlRfVEVYVFVSRV8zRF9aT0ZGU0VUX09FUyAgICAgICAgMHg4Q0Q0CiAjZW5kaWYKIAorLyogR0xfT0VTX3RleHR1cmVfZmxvYXQgKi8KKy8qIE5vIG5ldyB0b2tlbnMgaW50cm9kdWNlZCBieSB0aGlzIGV4dGVuc2lvbi4gKi8KKworLyogR0xfT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyICovCisvKiBObyBuZXcgdG9rZW5zIGludHJvZHVjZWQgYnkgdGhpcyBleHRlbnNpb24uICovCisKIC8qIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQgKi8KICNpZm5kZWYgR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdAogI2RlZmluZSBHTF9IQUxGX0ZMT0FUX09FUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEQ2MQogI2VuZGlmCiAKKy8qIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyICovCisvKiBObyBuZXcgdG9rZW5zIGludHJvZHVjZWQgYnkgdGhpcyBleHRlbnNpb24uICovCisKKy8qIEdMX09FU190ZXh0dXJlX25wb3QgKi8KKy8qIE5vIG5ldyB0b2tlbnMgaW50cm9kdWNlZCBieSB0aGlzIGV4dGVuc2lvbi4gKi8KKworLyogR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QgKi8KKyNpZm5kZWYgR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QKKyNkZWZpbmUgR0xfVkVSVEVYX0FSUkFZX0JJTkRJTkdfT0VTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg1QjUKKyNlbmRpZgorCiAvKiBHTF9PRVNfdmVydGV4X2hhbGZfZmxvYXQgKi8KIC8qIEdMX0hBTEZfRkxPQVRfT0VTIGRlZmluZWQgaW4gR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCBhbHJlYWR5LiAqLwogCkBAIC0xMjQsNiArMTQ2LDExIEBACiAjZGVmaW5lIEdMX0lOVF8xMF8xMF8xMF8yX09FUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4REY3CiAjZW5kaWYKIAorLyogR0xfT0VTX3RleHR1cmVfZXh0ZXJuYWwgKi8KKyNpZm5kZWYgR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMKKyNkZWZpbmUgR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhENjUKKyNlbmRpZgorCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoKICAqIEFNRCBleHRlbnNpb24gdG9rZW5zCiAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC0xNDEsMTEgKzE2OCw2IEBACiAjZGVmaW5lIEdMX0FUQ19SR0JBX0lOVEVSUE9MQVRFRF9BTFBIQV9BTUQgICAgICAgICAgICAgICAgICAgICAgMHg4N0VFCiAjZW5kaWYKIAotLyogR0xfQU1EX3Byb2dyYW1fYmluYXJ5X1o0MDAgKi8KLSNpZm5kZWYgR0xfQU1EX3Byb2dyYW1fYmluYXJ5X1o0MDAKLSNkZWZpbmUgR0xfWjQwMF9CSU5BUllfQU1EICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg3NDAKLSNlbmRpZgotCiAvKiBHTF9BTURfcGVyZm9ybWFuY2VfbW9uaXRvciAqLwogI2lmbmRlZiBHTF9BTURfcGVyZm9ybWFuY2VfbW9uaXRvcgogI2RlZmluZSBHTF9DT1VOVEVSX1RZUEVfQU1EICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEJDMApAQCAtMTU3LDM1ICsxNzksNzggQEAKICNkZWZpbmUgR0xfUEVSRk1PTl9SRVNVTFRfQU1EICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhCQzYKICNlbmRpZgogCisvKiBHTF9BTURfcHJvZ3JhbV9iaW5hcnlfWjQwMCAqLworI2lmbmRlZiBHTF9BTURfcHJvZ3JhbV9iaW5hcnlfWjQwMAorI2RlZmluZSBHTF9aNDAwX0JJTkFSWV9BTUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODc0MAorI2VuZGlmCisKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKgogICogRVhUIGV4dGVuc2lvbiB0b2tlbnMKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAorLyogR0xfRVhUX2JsZW5kX21pbm1heCAqLworI2lmbmRlZiBHTF9FWFRfYmxlbmRfbWlubWF4CisjZGVmaW5lIEdMX01JTl9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MDA3CisjZGVmaW5lIEdMX01BWF9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4MDA4CisjZW5kaWYKKworLyogR0xfRVhUX2Rpc2NhcmRfZnJhbWVidWZmZXIgKi8KKyNpZm5kZWYgR0xfRVhUX2Rpc2NhcmRfZnJhbWVidWZmZXIKKyNkZWZpbmUgR0xfQ09MT1JfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4MDAKKyNkZWZpbmUgR0xfREVQVEhfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4MDEKKyNkZWZpbmUgR0xfU1RFTkNJTF9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDE4MDIKKyNlbmRpZgorCisvKiBHTF9FWFRfbXVsdGlfZHJhd19hcnJheXMgKi8KKy8qIE5vIG5ldyB0b2tlbnMgaW50cm9kdWNlZCBieSB0aGlzIGV4dGVuc2lvbi4gKi8KKworLyogR0xfRVhUX3JlYWRfZm9ybWF0X2JncmEgKi8KKyNpZm5kZWYgR0xfRVhUX3JlYWRfZm9ybWF0X2JncmEKKyNkZWZpbmUgR0xfQkdSQV9FWFQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwRTEKKyNkZWZpbmUgR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNF9SRVZfRVhUICAgICAgICAgICAgICAgICAgICAgICAweDgzNjUKKyNkZWZpbmUgR0xfVU5TSUdORURfU0hPUlRfMV81XzVfNV9SRVZfRVhUICAgICAgICAgICAgICAgICAgICAgICAweDgzNjYKKyNlbmRpZgorCiAvKiBHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMgKi8KICNpZm5kZWYgR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljCiAjZGVmaW5lIEdMX1RFWFRVUkVfTUFYX0FOSVNPVFJPUFlfRVhUICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NEZFCiAjZGVmaW5lIEdMX01BWF9URVhUVVJFX01BWF9BTklTT1RST1BZX0VYVCAgICAgICAgICAgICAgICAgICAgICAgMHg4NEZGCiAjZW5kaWYKIAorLyogR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4ICovCisjaWZuZGVmIEdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OAorI2RlZmluZSBHTF9CR1JBX0VYVCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODBFMQorI2VuZGlmCisKIC8qIEdMX0VYVF90ZXh0dXJlX3R5cGVfMl8xMF8xMF8xMF9SRVYgKi8KICNpZm5kZWYgR0xfRVhUX3RleHR1cmVfdHlwZV8yXzEwXzEwXzEwX1JFVgogI2RlZmluZSBHTF9VTlNJR05FRF9JTlRfMl8xMF8xMF8xMF9SRVZfRVhUICAgICAgICAgICAgICAgICAgICAgIDB4ODM2OAogI2VuZGlmCiAKLS8qIEdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OCAqLwotI2lmbmRlZiBHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODgKLSNkZWZpbmUgR0xfQkdSQSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwRTEKKy8qIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEgKi8KKyNpZm5kZWYgR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MQorI2RlZmluZSBHTF9DT01QUkVTU0VEX1JHQl9TM1RDX0RYVDFfRVhUICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODNGMAorI2RlZmluZSBHTF9DT01QUkVTU0VEX1JHQkFfUzNUQ19EWFQxX0VYVCAgICAgICAgICAgICAgICAgICAgICAgIDB4ODNGMQogI2VuZGlmCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKgogICogSU1HIGV4dGVuc2lvbiB0b2tlbnMKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAorLyogR0xfSU1HX3Byb2dyYW1fYmluYXJ5ICovCisjaWZuZGVmIEdMX0lNR19wcm9ncmFtX2JpbmFyeQorI2RlZmluZSBHTF9TR1hfUFJPR1JBTV9CSU5BUllfSU1HICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OTEzMAorI2VuZGlmCisKIC8qIEdMX0lNR19yZWFkX2Zvcm1hdCAqLwogI2lmbmRlZiBHTF9JTUdfcmVhZF9mb3JtYXQKLSNkZWZpbmUgR0xfQkdSQSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwRTEKLSNkZWZpbmUgR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNF9SRVYgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgzNjUKLSNkZWZpbmUgR0xfVU5TSUdORURfU0hPUlRfMV81XzVfNV9SRVYgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgzNjYKKyNkZWZpbmUgR0xfQkdSQV9JTUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDgwRTEKKyNkZWZpbmUgR0xfVU5TSUdORURfU0hPUlRfNF80XzRfNF9SRVZfSU1HICAgICAgICAgICAgICAgICAgICAgICAweDgzNjUKKyNlbmRpZgorCisvKiBHTF9JTUdfc2hhZGVyX2JpbmFyeSAqLworI2lmbmRlZiBHTF9JTUdfc2hhZGVyX2JpbmFyeQorI2RlZmluZSBHTF9TR1hfQklOQVJZX0lNRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEMwQQogI2VuZGlmCiAKIC8qIEdMX0lNR190ZXh0dXJlX2NvbXByZXNzaW9uX3B2cnRjICovCkBAIC0xOTYsNiArMjYxLDE0IEBACiAjZGVmaW5lIEdMX0NPTVBSRVNTRURfUkdCQV9QVlJUQ18yQlBQVjFfSU1HICAgICAgICAgICAgICAgICAgICAgMHg4QzAzCiAjZW5kaWYKIAorLyogR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSAqLworI2lmbmRlZiBHTF9JTUdfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlCisjZGVmaW5lIEdMX1JFTkRFUkJVRkZFUl9TQU1QTEVTX0lNRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MTMzCisjZGVmaW5lIEdMX0ZSQU1FQlVGRkVSX0lOQ09NUExFVEVfTVVMVElTQU1QTEVfSU1HICAgICAgICAgICAgICAgMHg5MTM0CisjZGVmaW5lIEdMX01BWF9TQU1QTEVTX0lNRyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MTM1CisjZGVmaW5lIEdMX1RFWFRVUkVfU0FNUExFU19JTUcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg5MTM2CisjZW5kaWYKKwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qCiAgKiBOViBleHRlbnNpb24gdG9rZW5zCiAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC0yMDcsNiArMjgwLDI0IEBACiAjZGVmaW5lIEdMX0ZFTkNFX0NPTkRJVElPTl9OViAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHg4NEY0CiAjZW5kaWYKIAorLyogR0xfTlZfY292ZXJhZ2Vfc2FtcGxlICovCisjaWZuZGVmIEdMX05WX2NvdmVyYWdlX3NhbXBsZQorI2RlZmluZSBHTF9DT1ZFUkFHRV9DT01QT05FTlRfTlYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEVEMAorI2RlZmluZSBHTF9DT1ZFUkFHRV9DT01QT05FTlQ0X05WICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEVEMQorI2RlZmluZSBHTF9DT1ZFUkFHRV9BVFRBQ0hNRU5UX05WICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEVEMgorI2RlZmluZSBHTF9DT1ZFUkFHRV9CVUZGRVJTX05WICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEVEMworI2RlZmluZSBHTF9DT1ZFUkFHRV9TQU1QTEVTX05WICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEVENAorI2RlZmluZSBHTF9DT1ZFUkFHRV9BTExfRlJBR01FTlRTX05WICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEVENQorI2RlZmluZSBHTF9DT1ZFUkFHRV9FREdFX0ZSQUdNRU5UU19OViAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEVENgorI2RlZmluZSBHTF9DT1ZFUkFHRV9BVVRPTUFUSUNfTlYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEVENworI2RlZmluZSBHTF9DT1ZFUkFHRV9CVUZGRVJfQklUX05WICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4ODAwMAorI2VuZGlmCisKKy8qIEdMX05WX2RlcHRoX25vbmxpbmVhciAqLworI2lmbmRlZiBHTF9OVl9kZXB0aF9ub25saW5lYXIKKyNkZWZpbmUgR0xfREVQVEhfQ09NUE9ORU5UMTZfTk9OTElORUFSX05WICAgICAgICAgICAgICAgICAgICAgICAweDhFMkMKKyNlbmRpZgorCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSoKICAqIFFDT00gZXh0ZW5zaW9uIHRva2VucwogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwpAQCAtMjE0LDExICszMDUsNzAgQEAKIC8qIEdMX1FDT01fZHJpdmVyX2NvbnRyb2wgKi8KIC8qIE5vIG5ldyB0b2tlbnMgaW50cm9kdWNlZCBieSB0aGlzIGV4dGVuc2lvbi4gKi8KIAorLyogR0xfUUNPTV9leHRlbmRlZF9nZXQgKi8KKyNpZm5kZWYgR0xfUUNPTV9leHRlbmRlZF9nZXQKKyNkZWZpbmUgR0xfVEVYVFVSRV9XSURUSF9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhCRDIKKyNkZWZpbmUgR0xfVEVYVFVSRV9IRUlHSFRfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhCRDMKKyNkZWZpbmUgR0xfVEVYVFVSRV9ERVBUSF9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhCRDQKKyNkZWZpbmUgR0xfVEVYVFVSRV9JTlRFUk5BTF9GT1JNQVRfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAweDhCRDUKKyNkZWZpbmUgR0xfVEVYVFVSRV9GT1JNQVRfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhCRDYKKyNkZWZpbmUgR0xfVEVYVFVSRV9UWVBFX1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhCRDcKKyNkZWZpbmUgR0xfVEVYVFVSRV9JTUFHRV9WQUxJRF9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhCRDgKKyNkZWZpbmUgR0xfVEVYVFVSRV9OVU1fTEVWRUxTX1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhCRDkKKyNkZWZpbmUgR0xfVEVYVFVSRV9UQVJHRVRfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhCREEKKyNkZWZpbmUgR0xfVEVYVFVSRV9PQkpFQ1RfVkFMSURfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhCREIKKyNkZWZpbmUgR0xfU1RBVEVfUkVTVE9SRSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDhCREMKKyNlbmRpZgorCisvKiBHTF9RQ09NX2V4dGVuZGVkX2dldDIgKi8KKy8qIE5vIG5ldyB0b2tlbnMgaW50cm9kdWNlZCBieSB0aGlzIGV4dGVuc2lvbi4gKi8KKwogLyogR0xfUUNPTV9wZXJmbW9uX2dsb2JhbF9tb2RlICovCiAjaWZuZGVmIEdMX1FDT01fcGVyZm1vbl9nbG9iYWxfbW9kZQogI2RlZmluZSBHTF9QRVJGTU9OX0dMT0JBTF9NT0RFX1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4OEZBMAogI2VuZGlmCiAKKy8qIEdMX1FDT01fd3JpdGVvbmx5X3JlbmRlcmluZyAqLworI2lmbmRlZiBHTF9RQ09NX3dyaXRlb25seV9yZW5kZXJpbmcKKyNkZWZpbmUgR0xfV1JJVEVPTkxZX1JFTkRFUklOR19RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDg4MjMKKyNlbmRpZgorCisvKiBHTF9RQ09NX3RpbGVkX3JlbmRlcmluZyAqLworI2lmbmRlZiBHTF9RQ09NX3RpbGVkX3JlbmRlcmluZworI2RlZmluZSBHTF9DT0xPUl9CVUZGRVJfQklUMF9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEKKyNkZWZpbmUgR0xfQ09MT1JfQlVGRkVSX0JJVDFfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDAyCisjZGVmaW5lIEdMX0NPTE9SX0JVRkZFUl9CSVQyX1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAwNAorI2RlZmluZSBHTF9DT0xPUl9CVUZGRVJfQklUM19RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDgKKyNkZWZpbmUgR0xfQ09MT1JfQlVGRkVSX0JJVDRfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDEwCisjZGVmaW5lIEdMX0NPTE9SX0JVRkZFUl9CSVQ1X1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDAyMAorI2RlZmluZSBHTF9DT0xPUl9CVUZGRVJfQklUNl9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAwNDAKKyNkZWZpbmUgR0xfQ09MT1JfQlVGRkVSX0JJVDdfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwMDgwCisjZGVmaW5lIEdMX0RFUFRIX0JVRkZFUl9CSVQwX1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDEwMAorI2RlZmluZSBHTF9ERVBUSF9CVUZGRVJfQklUMV9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDAyMDAKKyNkZWZpbmUgR0xfREVQVEhfQlVGRkVSX0JJVDJfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAwNDAwCisjZGVmaW5lIEdMX0RFUFRIX0JVRkZFUl9CSVQzX1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwMDgwMAorI2RlZmluZSBHTF9ERVBUSF9CVUZGRVJfQklUNF9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDEwMDAKKyNkZWZpbmUgR0xfREVQVEhfQlVGRkVSX0JJVDVfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDAyMDAwCisjZGVmaW5lIEdMX0RFUFRIX0JVRkZFUl9CSVQ2X1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAwNDAwMAorI2RlZmluZSBHTF9ERVBUSF9CVUZGRVJfQklUN19RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwMDgwMDAKKyNkZWZpbmUgR0xfU1RFTkNJTF9CVUZGRVJfQklUMF9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDEwMDAwCisjZGVmaW5lIEdMX1NURU5DSUxfQlVGRkVSX0JJVDFfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDAyMDAwMAorI2RlZmluZSBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQyX1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAwNDAwMDAKKyNkZWZpbmUgR0xfU1RFTkNJTF9CVUZGRVJfQklUM19RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwMDgwMDAwCisjZGVmaW5lIEdMX1NURU5DSUxfQlVGRkVSX0JJVDRfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDEwMDAwMAorI2RlZmluZSBHTF9TVEVOQ0lMX0JVRkZFUl9CSVQ1X1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDAyMDAwMDAKKyNkZWZpbmUgR0xfU1RFTkNJTF9CVUZGRVJfQklUNl9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgICAgICAweDAwNDAwMDAwCisjZGVmaW5lIEdMX1NURU5DSUxfQlVGRkVSX0JJVDdfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMHgwMDgwMDAwMAorI2RlZmluZSBHTF9NVUxUSVNBTVBMRV9CVUZGRVJfQklUMF9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDEwMDAwMDAKKyNkZWZpbmUgR0xfTVVMVElTQU1QTEVfQlVGRkVSX0JJVDFfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAweDAyMDAwMDAwCisjZGVmaW5lIEdMX01VTFRJU0FNUExFX0JVRkZFUl9CSVQyX1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgMHgwNDAwMDAwMAorI2RlZmluZSBHTF9NVUxUSVNBTVBMRV9CVUZGRVJfQklUM19RQ09NICAgICAgICAgICAgICAgICAgICAgICAgIDB4MDgwMDAwMDAKKyNkZWZpbmUgR0xfTVVMVElTQU1QTEVfQlVGRkVSX0JJVDRfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAweDEwMDAwMDAwCisjZGVmaW5lIEdMX01VTFRJU0FNUExFX0JVRkZFUl9CSVQ1X1FDT00gICAgICAgICAgICAgICAgICAgICAgICAgMHgyMDAwMDAwMAorI2RlZmluZSBHTF9NVUxUSVNBTVBMRV9CVUZGRVJfQklUNl9RQ09NICAgICAgICAgICAgICAgICAgICAgICAgIDB4NDAwMDAwMDAKKyNkZWZpbmUgR0xfTVVMVElTQU1QTEVfQlVGRkVSX0JJVDdfUUNPTSAgICAgICAgICAgICAgICAgICAgICAgICAweDgwMDAwMDAwCisjZW5kaWYKKwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qCiAgKiBFbmQgb2YgZXh0ZW5zaW9uIHRva2Vucywgc3RhcnQgb2YgY29ycmVzcG9uZGluZyBleHRlbnNpb24gZnVuY3Rpb25zCiAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC0yMzcsMTcgKzM4Nyw2IEBACiAjZGVmaW5lIEdMX09FU19jb21wcmVzc2VkX3BhbGV0dGVkX3RleHR1cmUgMQogI2VuZGlmCiAKLS8qIEdMX09FU19FR0xfaW1hZ2UgKi8KLSNpZm5kZWYgR0xfT0VTX0VHTF9pbWFnZQotI2RlZmluZSBHTF9PRVNfRUdMX2ltYWdlIDEKLSNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCi1HTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xFR0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyAoR0xlbnVtIHRhcmdldCwgR0xlZ2xJbWFnZU9FUyBpbWFnZSk7Ci1HTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xFR0xJbWFnZVRhcmdldFJlbmRlcmJ1ZmZlclN0b3JhZ2VPRVMgKEdMZW51bSB0YXJnZXQsIEdMZWdsSW1hZ2VPRVMgaW1hZ2UpOwotI2VuZGlmCi10eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEVHTElNQUdFVEFSR0VUVEVYVFVSRTJET0VTUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZWdsSW1hZ2VPRVMgaW1hZ2UpOwotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xFR0xJTUFHRVRBUkdFVFJFTkRFUkJVRkZFUlNUT1JBR0VPRVNQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlZ2xJbWFnZU9FUyBpbWFnZSk7Ci0jZW5kaWYKLQogLyogR0xfT0VTX2RlcHRoMjQgKi8KICNpZm5kZWYgR0xfT0VTX2RlcHRoMjQKICNkZWZpbmUgR0xfT0VTX2RlcHRoMjQgMQpAQCAtMjYzLDYgKzQwMiwxNyBAQAogI2RlZmluZSBHTF9PRVNfZGVwdGhfdGV4dHVyZSAxCiAjZW5kaWYKIAorLyogR0xfT0VTX0VHTF9pbWFnZSAqLworI2lmbmRlZiBHTF9PRVNfRUdMX2ltYWdlCisjZGVmaW5lIEdMX09FU19FR0xfaW1hZ2UgMQorI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEVHTEltYWdlVGFyZ2V0VGV4dHVyZTJET0VTIChHTGVudW0gdGFyZ2V0LCBHTGVnbEltYWdlT0VTIGltYWdlKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEVHTEltYWdlVGFyZ2V0UmVuZGVyYnVmZmVyU3RvcmFnZU9FUyAoR0xlbnVtIHRhcmdldCwgR0xlZ2xJbWFnZU9FUyBpbWFnZSk7CisjZW5kaWYKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRUdMSU1BR0VUQVJHRVRURVhUVVJFMkRPRVNQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlZ2xJbWFnZU9FUyBpbWFnZSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEVHTElNQUdFVEFSR0VUUkVOREVSQlVGRkVSU1RPUkFHRU9FU1BST0MpIChHTGVudW0gdGFyZ2V0LCBHTGVnbEltYWdlT0VTIGltYWdlKTsKKyNlbmRpZgorCiAvKiBHTF9PRVNfZWxlbWVudF9pbmRleF91aW50ICovCiAjaWZuZGVmIEdMX09FU19lbGVtZW50X2luZGV4X3VpbnQKICNkZWZpbmUgR0xfT0VTX2VsZW1lbnRfaW5kZXhfdWludCAxCkBAIC0yODIsMTEgKzQzMiwxMSBAQAogI2lmbmRlZiBHTF9PRVNfZ2V0X3Byb2dyYW1fYmluYXJ5CiAjZGVmaW5lIEdMX09FU19nZXRfcHJvZ3JhbV9iaW5hcnkgMQogI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKLUdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFByb2dyYW1CaW5hcnlPRVMgKEdMdWludCBwcm9ncmFtLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xlbnVtICpiaW5hcnlGb3JtYXQsIHZvaWQgKmJpbmFyeSk7Ci1HTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xQcm9ncmFtQmluYXJ5T0VTIChHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIGJpbmFyeUZvcm1hdCwgY29uc3Qgdm9pZCAqYmluYXJ5LCBHTGludCBsZW5ndGgpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0UHJvZ3JhbUJpbmFyeU9FUyAoR0x1aW50IHByb2dyYW0sIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGVudW0gKmJpbmFyeUZvcm1hdCwgR0x2b2lkICpiaW5hcnkpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsUHJvZ3JhbUJpbmFyeU9FUyAoR0x1aW50IHByb2dyYW0sIEdMZW51bSBiaW5hcnlGb3JtYXQsIGNvbnN0IEdMdm9pZCAqYmluYXJ5LCBHTGludCBsZW5ndGgpOwogI2VuZGlmCi10eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFBST0dSQU1CSU5BUllPRVNQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGVudW0gKmJpbmFyeUZvcm1hdCwgdm9pZCAqYmluYXJ5KTsKLXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JBTUJJTkFSWU9FU1BST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIGJpbmFyeUZvcm1hdCwgY29uc3Qgdm9pZCAqYmluYXJ5LCBHTGludCBsZW5ndGgpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRQUk9HUkFNQklOQVJZT0VTUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xlbnVtICpiaW5hcnlGb3JtYXQsIEdMdm9pZCAqYmluYXJ5KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUFJPR1JBTUJJTkFSWU9FU1BST0MpIChHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIGJpbmFyeUZvcm1hdCwgY29uc3QgR0x2b2lkICpiaW5hcnksIEdMaW50IGxlbmd0aCk7CiAjZW5kaWYKIAogLyogR0xfT0VTX21hcGJ1ZmZlciAqLwpAQCAtMjk1LDExICs0NDUsMTEgQEAKICNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCiBHTF9BUElDQUxMIHZvaWQqIEdMX0FQSUVOVFJZIGdsTWFwQnVmZmVyT0VTIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gYWNjZXNzKTsKIEdMX0FQSUNBTEwgR0xib29sZWFuIEdMX0FQSUVOVFJZIGdsVW5tYXBCdWZmZXJPRVMgKEdMZW51bSB0YXJnZXQpOwotR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0QnVmZmVyUG9pbnRlcnZPRVMgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgdm9pZCoqIHBhcmFtcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRCdWZmZXJQb2ludGVydk9FUyAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTHZvaWQqKiBwYXJhbXMpOwogI2VuZGlmCiB0eXBlZGVmIHZvaWQqIChHTF9BUElFTlRSWVAgUEZOR0xNQVBCVUZGRVJPRVNQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGFjY2Vzcyk7CiB0eXBlZGVmIEdMYm9vbGVhbiAoR0xfQVBJRU5UUllQIFBGTkdMVU5NQVBCVUZGRVJPRVNQUk9DKSAoR0xlbnVtIHRhcmdldCk7Ci10eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVEJVRkZFUlBPSU5URVJWT0VTUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgdm9pZCoqIHBhcmFtcyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVEJVRkZFUlBPSU5URVJWT0VTUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0x2b2lkKiogcGFyYW1zKTsKICNlbmRpZgogCiAvKiBHTF9PRVNfcGFja2VkX2RlcHRoX3N0ZW5jaWwgKi8KQEAgLTMzMSw0NiArNDgxLDYxIEBACiAjaWZuZGVmIEdMX09FU190ZXh0dXJlXzNECiAjZGVmaW5lIEdMX09FU190ZXh0dXJlXzNEIDEKICNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCi1HTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xUZXhJbWFnZTNET0VTIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xpbnQgYm9yZGVyLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3Qgdm9pZCogcGl4ZWxzKTsKLUdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFRleFN1YkltYWdlM0RPRVMgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xUZXhJbWFnZTNET0VTIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xpbnQgYm9yZGVyLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkKiBwaXhlbHMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsVGV4U3ViSW1hZ2UzRE9FUyAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHpvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkKiBwaXhlbHMpOwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQ29weVRleFN1YkltYWdlM0RPRVMgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCk7Ci1HTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xDb21wcmVzc2VkVGV4SW1hZ2UzRE9FUyAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMaW50IGJvcmRlciwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpOwotR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQ29tcHJlc3NlZFRleFN1YkltYWdlM0RPRVMgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQ29tcHJlc3NlZFRleEltYWdlM0RPRVMgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBHTGludCBib3JkZXIsIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCBHTHZvaWQqIGRhdGEpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQ29tcHJlc3NlZFRleFN1YkltYWdlM0RPRVMgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IEdMdm9pZCogZGF0YSk7CiBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xGcmFtZWJ1ZmZlclRleHR1cmUzRE9FUyAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dGFjaG1lbnQsIEdMZW51bSB0ZXh0YXJnZXQsIEdMdWludCB0ZXh0dXJlLCBHTGludCBsZXZlbCwgR0xpbnQgem9mZnNldCk7CiAjZW5kaWYKIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMVEVYSU1BR0UzRE9FU1BST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xpbnQgYm9yZGVyLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkKiBwaXhlbHMpOwotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xURVhTVUJJTUFHRTNET0VTUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFRFWFNVQklNQUdFM0RPRVNQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHpvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkKiBwaXhlbHMpOwogdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xDT1BZVEVYU1VCSU1BR0UzRE9FU1BST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgem9mZnNldCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpOwotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xDT01QUkVTU0VEVEVYSU1BR0UzRE9FU1BST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xpbnQgYm9yZGVyLCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSk7Ci10eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTENPTVBSRVNTRURURVhTVUJJTUFHRTNET0VTUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xDT01QUkVTU0VEVEVYSU1BR0UzRE9FU1BST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xpbnQgYm9yZGVyLCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2b2lkKiBkYXRhKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQ09NUFJFU1NFRFRFWFNVQklNQUdFM0RPRVNQUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHpvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2b2lkKiBkYXRhKTsKIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRlJBTUVCVUZGRVJURVhUVVJFM0RPRVMpIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNobWVudCwgR0xlbnVtIHRleHRhcmdldCwgR0x1aW50IHRleHR1cmUsIEdMaW50IGxldmVsLCBHTGludCB6b2Zmc2V0KTsKICNlbmRpZgogCi0vKiBHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIgKi8KLSNpZm5kZWYgR0xfT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyCi0jZGVmaW5lIEdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciAxCi0jZW5kaWYKLQotLyogR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIgKi8KLSNpZm5kZWYgR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIKLSNkZWZpbmUgR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdF9saW5lYXIgMQotI2VuZGlmCi0KIC8qIEdMX09FU190ZXh0dXJlX2Zsb2F0ICovCiAjaWZuZGVmIEdMX09FU190ZXh0dXJlX2Zsb2F0CiAjZGVmaW5lIEdMX09FU190ZXh0dXJlX2Zsb2F0IDEKICNlbmRpZgogCisvKiBHTF9PRVNfdGV4dHVyZV9mbG9hdF9saW5lYXIgKi8KKyNpZm5kZWYgR0xfT0VTX3RleHR1cmVfZmxvYXRfbGluZWFyCisjZGVmaW5lIEdMX09FU190ZXh0dXJlX2Zsb2F0X2xpbmVhciAxCisjZW5kaWYKKwogLyogR0xfT0VTX3RleHR1cmVfaGFsZl9mbG9hdCAqLwogI2lmbmRlZiBHTF9PRVNfdGV4dHVyZV9oYWxmX2Zsb2F0CiAjZGVmaW5lIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXQgMQogI2VuZGlmCiAKKy8qIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyICovCisjaWZuZGVmIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyCisjZGVmaW5lIEdMX09FU190ZXh0dXJlX2hhbGZfZmxvYXRfbGluZWFyIDEKKyNlbmRpZgorCiAvKiBHTF9PRVNfdGV4dHVyZV9ucG90ICovCiAjaWZuZGVmIEdMX09FU190ZXh0dXJlX25wb3QKICNkZWZpbmUgR0xfT0VTX3RleHR1cmVfbnBvdCAxCiAjZW5kaWYKIAorLyogR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QgKi8KKyNpZm5kZWYgR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QKKyNkZWZpbmUgR0xfT0VTX3ZlcnRleF9hcnJheV9vYmplY3QgMQorI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEJpbmRWZXJ0ZXhBcnJheU9FUyAoR0x1aW50IGFycmF5KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbERlbGV0ZVZlcnRleEFycmF5c09FUyAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmFycmF5cyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZW5WZXJ0ZXhBcnJheXNPRVMgKEdMc2l6ZWkgbiwgR0x1aW50ICphcnJheXMpOworR0xfQVBJQ0FMTCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgZ2xJc1ZlcnRleEFycmF5T0VTIChHTHVpbnQgYXJyYXkpOworI2VuZGlmCit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEJJTkRWRVJURVhBUlJBWU9FU1BST0MpIChHTHVpbnQgYXJyYXkpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xERUxFVEVWRVJURVhBUlJBWVNPRVNQUk9DKSAoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmFycmF5cyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFTlZFUlRFWEFSUkFZU09FU1BST0MpIChHTHNpemVpIG4sIEdMdWludCAqYXJyYXlzKTsKK3R5cGVkZWYgR0xib29sZWFuIChHTF9BUElFTlRSWVAgUEZOR0xJU1ZFUlRFWEFSUkFZT0VTUFJPQykgKEdMdWludCBhcnJheSk7CisjZW5kaWYKKwogLyogR0xfT0VTX3ZlcnRleF9oYWxmX2Zsb2F0ICovCiAjaWZuZGVmIEdMX09FU192ZXJ0ZXhfaGFsZl9mbG9hdAogI2RlZmluZSBHTF9PRVNfdmVydGV4X2hhbGZfZmxvYXQgMQpAQCAtMzgxLDYgKzU0NiwxMSBAQAogI2RlZmluZSBHTF9PRVNfdmVydGV4X3R5cGVfMTBfMTBfMTBfMiAxCiAjZW5kaWYKIAorLyogR0xfT0VTX3RleHR1cmVfZXh0ZXJuYWwgKi8KKyNpZm5kZWYgR0xfT0VTX3RleHR1cmVfZXh0ZXJuYWwKKyNkZWZpbmUgR0xfT0VTX3RleHR1cmVfZXh0ZXJuYWwgMQorI2VuZGlmCisKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKgogICogQU1EIGV4dGVuc2lvbiBmdW5jdGlvbnMKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KQEAgLTM5NSwyMCArNTY1LDE1IEBACiAjZGVmaW5lIEdMX0FNRF9jb21wcmVzc2VkX0FUQ190ZXh0dXJlIDEKICNlbmRpZgogCi0vKiBHTF9BTURfcHJvZ3JhbV9iaW5hcnlfWjQwMCAqLwotI2lmbmRlZiBHTF9BTURfcHJvZ3JhbV9iaW5hcnlfWjQwMAotI2RlZmluZSBHTF9BTURfcHJvZ3JhbV9iaW5hcnlfWjQwMCAxCi0jZW5kaWYKLQogLyogQU1EX3BlcmZvcm1hbmNlX21vbml0b3IgKi8KICNpZm5kZWYgR0xfQU1EX3BlcmZvcm1hbmNlX21vbml0b3IKICNkZWZpbmUgR0xfQU1EX3BlcmZvcm1hbmNlX21vbml0b3IgMQogI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFBlcmZNb25pdG9yR3JvdXBzQU1EIChHTGludCAqbnVtR3JvdXBzLCBHTHNpemVpIGdyb3Vwc1NpemUsIEdMdWludCAqZ3JvdXBzKTsKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldFBlcmZNb25pdG9yQ291bnRlcnNBTUQgKEdMdWludCBncm91cCwgR0xpbnQgKm51bUNvdW50ZXJzLCBHTGludCAqbWF4QWN0aXZlQ291bnRlcnMsIEdMc2l6ZWkgY291bnRlclNpemUsIEdMdWludCAqY291bnRlcnMpOwotR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0UGVyZk1vbml0b3JHcm91cFN0cmluZ0FNRCAoR0x1aW50IGdyb3VwLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgY2hhciAqZ3JvdXBTdHJpbmcpOwotR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0UGVyZk1vbml0b3JDb3VudGVyU3RyaW5nQU1EIChHTHVpbnQgZ3JvdXAsIEdMdWludCBjb3VudGVyLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgY2hhciAqY291bnRlclN0cmluZyk7Ci1HTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRQZXJmTW9uaXRvckNvdW50ZXJJbmZvQU1EIChHTHVpbnQgZ3JvdXAsIEdMdWludCBjb3VudGVyLCBHTGVudW0gcG5hbWUsIHZvaWQgKmRhdGEpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0UGVyZk1vbml0b3JHcm91cFN0cmluZ0FNRCAoR0x1aW50IGdyb3VwLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xjaGFyICpncm91cFN0cmluZyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xHZXRQZXJmTW9uaXRvckNvdW50ZXJTdHJpbmdBTUQgKEdMdWludCBncm91cCwgR0x1aW50IGNvdW50ZXIsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGNoYXIgKmNvdW50ZXJTdHJpbmcpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0UGVyZk1vbml0b3JDb3VudGVySW5mb0FNRCAoR0x1aW50IGdyb3VwLCBHTHVpbnQgY291bnRlciwgR0xlbnVtIHBuYW1lLCBHTHZvaWQgKmRhdGEpOwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2VuUGVyZk1vbml0b3JzQU1EIChHTHNpemVpIG4sIEdMdWludCAqbW9uaXRvcnMpOwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRGVsZXRlUGVyZk1vbml0b3JzQU1EIChHTHNpemVpIG4sIEdMdWludCAqbW9uaXRvcnMpOwogR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsU2VsZWN0UGVyZk1vbml0b3JDb3VudGVyc0FNRCAoR0x1aW50IG1vbml0b3IsIEdMYm9vbGVhbiBlbmFibGUsIEdMdWludCBncm91cCwgR0xpbnQgbnVtQ291bnRlcnMsIEdMdWludCAqY291bnRlcnNMaXN0KTsKQEAgLTQxOCw5ICs1ODMsOSBAQAogI2VuZGlmCiB0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFBFUkZNT05JVE9SR1JPVVBTQU1EUFJPQykgKEdMaW50ICpudW1Hcm91cHMsIEdMc2l6ZWkgZ3JvdXBzU2l6ZSwgR0x1aW50ICpncm91cHMpOwogdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRQRVJGTU9OSVRPUkNPVU5URVJTQU1EUFJPQykgKEdMdWludCBncm91cCwgR0xpbnQgKm51bUNvdW50ZXJzLCBHTGludCAqbWF4QWN0aXZlQ291bnRlcnMsIEdMc2l6ZWkgY291bnRlclNpemUsIEdMdWludCAqY291bnRlcnMpOwotdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRQRVJGTU9OSVRPUkdST1VQU1RSSU5HQU1EUFJPQykgKEdMdWludCBncm91cCwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIGNoYXIgKmdyb3VwU3RyaW5nKTsKLXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUUEVSRk1PTklUT1JDT1VOVEVSU1RSSU5HQU1EUFJPQykgKEdMdWludCBncm91cCwgR0x1aW50IGNvdW50ZXIsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBjaGFyICpjb3VudGVyU3RyaW5nKTsKLXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VUUEVSRk1PTklUT1JDT1VOVEVSSU5GT0FNRFBST0MpIChHTHVpbnQgZ3JvdXAsIEdMdWludCBjb3VudGVyLCBHTGVudW0gcG5hbWUsIHZvaWQgKmRhdGEpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRQRVJGTU9OSVRPUkdST1VQU1RSSU5HQU1EUFJPQykgKEdMdWludCBncm91cCwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMY2hhciAqZ3JvdXBTdHJpbmcpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRQRVJGTU9OSVRPUkNPVU5URVJTVFJJTkdBTURQUk9DKSAoR0x1aW50IGdyb3VwLCBHTHVpbnQgY291bnRlciwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMY2hhciAqY291bnRlclN0cmluZyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFBFUkZNT05JVE9SQ09VTlRFUklORk9BTURQUk9DKSAoR0x1aW50IGdyb3VwLCBHTHVpbnQgY291bnRlciwgR0xlbnVtIHBuYW1lLCBHTHZvaWQgKmRhdGEpOwogdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRU5QRVJGTU9OSVRPUlNBTURQUk9DKSAoR0xzaXplaSBuLCBHTHVpbnQgKm1vbml0b3JzKTsKIHR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMREVMRVRFUEVSRk1PTklUT1JTQU1EUFJPQykgKEdMc2l6ZWkgbiwgR0x1aW50ICptb25pdG9ycyk7CiB0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFNFTEVDVFBFUkZNT05JVE9SQ09VTlRFUlNBTURQUk9DKSAoR0x1aW50IG1vbml0b3IsIEdMYm9vbGVhbiBlbmFibGUsIEdMdWludCBncm91cCwgR0xpbnQgbnVtQ291bnRlcnMsIEdMdWludCAqY291bnRlcnNMaXN0KTsKQEAgLTQyOSwzOSArNTk0LDk5IEBACiB0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVFBFUkZNT05JVE9SQ09VTlRFUkRBVEFBTURQUk9DKSAoR0x1aW50IG1vbml0b3IsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBkYXRhU2l6ZSwgR0x1aW50ICpkYXRhLCBHTGludCAqYnl0ZXNXcml0dGVuKTsKICNlbmRpZgogCisvKiBHTF9BTURfcHJvZ3JhbV9iaW5hcnlfWjQwMCAqLworI2lmbmRlZiBHTF9BTURfcHJvZ3JhbV9iaW5hcnlfWjQwMAorI2RlZmluZSBHTF9BTURfcHJvZ3JhbV9iaW5hcnlfWjQwMCAxCisjZW5kaWYKKwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qCiAgKiBFWFQgZXh0ZW5zaW9uIGZ1bmN0aW9ucwogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCisvKiBHTF9FWFRfYmxlbmRfbWlubWF4ICovCisjaWZuZGVmIEdMX0VYVF9ibGVuZF9taW5tYXgKKyNkZWZpbmUgR0xfRVhUX2JsZW5kX21pbm1heCAxCisjZW5kaWYKKworLyogR0xfRVhUX2Rpc2NhcmRfZnJhbWVidWZmZXIgKi8KKyNpZm5kZWYgR0xfRVhUX2Rpc2NhcmRfZnJhbWVidWZmZXIKKyNkZWZpbmUgR0xfRVhUX2Rpc2NhcmRfZnJhbWVidWZmZXIgMQorI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbERpc2NhcmRGcmFtZWJ1ZmZlckVYVCAoR0xlbnVtIHRhcmdldCwgR0xzaXplaSBudW1BdHRhY2htZW50cywgY29uc3QgR0xlbnVtICphdHRhY2htZW50cyk7CisjZW5kaWYKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRElTQ0FSREZSQU1FQlVGRkVSRVhUUFJPQykgKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbnVtQXR0YWNobWVudHMsIGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMpOworI2VuZGlmCisKKyNpZm5kZWYgR0xfRVhUX211bHRpX2RyYXdfYXJyYXlzCisjZGVmaW5lIEdMX0VYVF9tdWx0aV9kcmF3X2FycmF5cyAxCisjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsTXVsdGlEcmF3QXJyYXlzRVhUIChHTGVudW0gbW9kZSwgR0xpbnQgKmZpcnN0LCBHTHNpemVpICpjb3VudCwgR0xzaXplaSBwcmltY291bnQpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsTXVsdGlEcmF3RWxlbWVudHNFWFQgKEdMZW51bSBtb2RlLCBjb25zdCBHTHNpemVpICpjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCogKmluZGljZXMsIEdMc2l6ZWkgcHJpbWNvdW50KTsKKyNlbmRpZiAvKiBHTF9HTEVYVF9QUk9UT1RZUEVTICovCit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTE1VTFRJRFJBV0FSUkFZU0VYVFBST0MpIChHTGVudW0gbW9kZSwgR0xpbnQgKmZpcnN0LCBHTHNpemVpICpjb3VudCwgR0xzaXplaSBwcmltY291bnQpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xNVUxUSURSQVdFTEVNRU5UU0VYVFBST0MpIChHTGVudW0gbW9kZSwgY29uc3QgR0xzaXplaSAqY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQqICppbmRpY2VzLCBHTHNpemVpIHByaW1jb3VudCk7CisjZW5kaWYKKworLyogR0xfRVhUX3JlYWRfZm9ybWF0X2JncmEgKi8KKyNpZm5kZWYgR0xfRVhUX3JlYWRfZm9ybWF0X2JncmEKKyNkZWZpbmUgR0xfRVhUX3JlYWRfZm9ybWF0X2JncmEgMQorI2VuZGlmCisKIC8qIEdMX0VYVF90ZXh0dXJlX2ZpbHRlcl9hbmlzb3Ryb3BpYyAqLwogI2lmbmRlZiBHTF9FWFRfdGV4dHVyZV9maWx0ZXJfYW5pc290cm9waWMKICNkZWZpbmUgR0xfRVhUX3RleHR1cmVfZmlsdGVyX2FuaXNvdHJvcGljIDEKICNlbmRpZgogCi0vKiBHTF9FWFRfdGV4dHVyZV90eXBlXzJfMTBfMTBfMTBfUkVWICovCi0jaWZuZGVmIEdMX0VYVF90ZXh0dXJlX3R5cGVfMl8xMF8xMF8xMF9SRVYKLSNkZWZpbmUgR0xfRVhUX3RleHR1cmVfdHlwZV8yXzEwXzEwXzEwX1JFViAxCi0jZW5kaWYKLQogLyogR0xfRVhUX3RleHR1cmVfZm9ybWF0X0JHUkE4ODg4ICovCiAjaWZuZGVmIEdMX0VYVF90ZXh0dXJlX2Zvcm1hdF9CR1JBODg4OAogI2RlZmluZSBHTF9FWFRfdGV4dHVyZV9mb3JtYXRfQkdSQTg4ODggMQogI2VuZGlmCiAKKy8qIEdMX0VYVF90ZXh0dXJlX3R5cGVfMl8xMF8xMF8xMF9SRVYgKi8KKyNpZm5kZWYgR0xfRVhUX3RleHR1cmVfdHlwZV8yXzEwXzEwXzEwX1JFVgorI2RlZmluZSBHTF9FWFRfdGV4dHVyZV90eXBlXzJfMTBfMTBfMTBfUkVWIDEKKyNlbmRpZgorCisvKiBHTF9FWFRfdGV4dHVyZV9jb21wcmVzc2lvbl9keHQxICovCisjaWZuZGVmIEdMX0VYVF90ZXh0dXJlX2NvbXByZXNzaW9uX2R4dDEKKyNkZWZpbmUgR0xfRVhUX3RleHR1cmVfY29tcHJlc3Npb25fZHh0MSAxCisjZW5kaWYKKwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qCiAgKiBJTUcgZXh0ZW5zaW9uIGZ1bmN0aW9ucwogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCisvKiBHTF9JTUdfcHJvZ3JhbV9iaW5hcnkgKi8KKyNpZm5kZWYgR0xfSU1HX3Byb2dyYW1fYmluYXJ5CisjZGVmaW5lIEdMX0lNR19wcm9ncmFtX2JpbmFyeSAxCisjZW5kaWYKKwogLyogR0xfSU1HX3JlYWRfZm9ybWF0ICovCiAjaWZuZGVmIEdMX0lNR19yZWFkX2Zvcm1hdAogI2RlZmluZSBHTF9JTUdfcmVhZF9mb3JtYXQgMQogI2VuZGlmCiAKKy8qIEdMX0lNR19zaGFkZXJfYmluYXJ5ICovCisjaWZuZGVmIEdMX0lNR19zaGFkZXJfYmluYXJ5CisjZGVmaW5lIEdMX0lNR19zaGFkZXJfYmluYXJ5IDEKKyNlbmRpZgorCiAvKiBHTF9JTUdfdGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0YyAqLwogI2lmbmRlZiBHTF9JTUdfdGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0YwogI2RlZmluZSBHTF9JTUdfdGV4dHVyZV9jb21wcmVzc2lvbl9wdnJ0YyAxCiAjZW5kaWYKIAorLyogR0xfSU1HX211bHRpc2FtcGxlZF9yZW5kZXJfdG9fdGV4dHVyZSAqLworI2lmbmRlZiBHTF9JTUdfbXVsdGlzYW1wbGVkX3JlbmRlcl90b190ZXh0dXJlCisjZGVmaW5lIEdMX0lNR19tdWx0aXNhbXBsZWRfcmVuZGVyX3RvX3RleHR1cmUgMQorI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUlNRyAoR0xlbnVtIHRhcmdldCwgR0xzaXplaSBzYW1wbGVzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEZyYW1lYnVmZmVyVGV4dHVyZTJETXVsdGlzYW1wbGVJTUcgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LCBHTGVudW0gdGV4dGFyZ2V0LCBHTHVpbnQgdGV4dHVyZSwgR0xpbnQgbGV2ZWwsIEdMc2l6ZWkgc2FtcGxlcyk7CisjZW5kaWYKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMUkVOREVSQlVGRkVSU1RPUkFHRU1VTFRJU0FNUExFSU1HKSAoR0xlbnVtIHRhcmdldCwgR0xzaXplaSBzYW1wbGVzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRlJBTUVCVUZGRVJURVhUVVJFMkRNVUxUSVNBTVBMRUlNRykgKEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LCBHTGVudW0gdGV4dGFyZ2V0LCBHTHVpbnQgdGV4dHVyZSwgR0xpbnQgbGV2ZWwsIEdMc2l6ZWkgc2FtcGxlcyk7CisjZW5kaWYKKwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qCiAgKiBOViBleHRlbnNpb24gZnVuY3Rpb25zCiAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCkBAIC00ODcsNiArNzEyLDIyIEBACiB0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFNFVEZFTkNFTlZQUk9DKSAoR0x1aW50IGZlbmNlLCBHTGVudW0gY29uZGl0aW9uKTsKICNlbmRpZgogCisvKiBHTF9OVl9jb3ZlcmFnZV9zYW1wbGUgKi8KKyNpZm5kZWYgR0xfTlZfY292ZXJhZ2Vfc2FtcGxlCisjZGVmaW5lIEdMX05WX2NvdmVyYWdlX3NhbXBsZSAxCisjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsQ292ZXJhZ2VNYXNrTlYgKEdMYm9vbGVhbiBtYXNrKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbENvdmVyYWdlT3BlcmF0aW9uTlYgKEdMZW51bSBvcGVyYXRpb24pOworI2VuZGlmCit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTENPVkVSQUdFTUFTS05WUFJPQykgKEdMYm9vbGVhbiBtYXNrKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMQ09WRVJBR0VPUEVSQVRJT05OVlBST0MpIChHTGVudW0gb3BlcmF0aW9uKTsKKyNlbmRpZgorCisvKiBHTF9OVl9kZXB0aF9ub25saW5lYXIgKi8KKyNpZm5kZWYgR0xfTlZfZGVwdGhfbm9ubGluZWFyCisjZGVmaW5lIEdMX05WX2RlcHRoX25vbmxpbmVhciAxCisjZW5kaWYKKwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qCiAgKiBRQ09NIGV4dGVuc2lvbiBmdW5jdGlvbnMKICAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KQEAgLTQ5NiwyMSArNzM3LDc1IEBACiAjZGVmaW5lIEdMX1FDT01fZHJpdmVyX2NvbnRyb2wgMQogI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldERyaXZlckNvbnRyb2xzUUNPTSAoR0xpbnQgKm51bSwgR0xzaXplaSBzaXplLCBHTHVpbnQgKmRyaXZlckNvbnRyb2xzKTsKLUdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldERyaXZlckNvbnRyb2xTdHJpbmdRQ09NIChHTHVpbnQgZHJpdmVyQ29udHJvbCwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIGNoYXIgKmRyaXZlckNvbnRyb2xTdHJpbmcpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0RHJpdmVyQ29udHJvbFN0cmluZ1FDT00gKEdMdWludCBkcml2ZXJDb250cm9sLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xjaGFyICpkcml2ZXJDb250cm9sU3RyaW5nKTsKIEdMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEVuYWJsZURyaXZlckNvbnRyb2xRQ09NIChHTHVpbnQgZHJpdmVyQ29udHJvbCk7CiBHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xEaXNhYmxlRHJpdmVyQ29udHJvbFFDT00gKEdMdWludCBkcml2ZXJDb250cm9sKTsKICNlbmRpZgogdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVREUklWRVJDT05UUk9MU1FDT01QUk9DKSAoR0xpbnQgKm51bSwgR0xzaXplaSBzaXplLCBHTHVpbnQgKmRyaXZlckNvbnRyb2xzKTsKLXR5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VURFJJVkVSQ09OVFJPTFNUUklOR1FDT01QUk9DKSAoR0x1aW50IGRyaXZlckNvbnRyb2wsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBjaGFyICpkcml2ZXJDb250cm9sU3RyaW5nKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMR0VURFJJVkVSQ09OVFJPTFNUUklOR1FDT01QUk9DKSAoR0x1aW50IGRyaXZlckNvbnRyb2wsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGNoYXIgKmRyaXZlckNvbnRyb2xTdHJpbmcpOwogdHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xFTkFCTEVEUklWRVJDT05UUk9MUUNPTVBST0MpIChHTHVpbnQgZHJpdmVyQ29udHJvbCk7CiB0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTERJU0FCTEVEUklWRVJDT05UUk9MUUNPTVBST0MpIChHTHVpbnQgZHJpdmVyQ29udHJvbCk7CiAjZW5kaWYKIAorLyogR0xfUUNPTV9leHRlbmRlZF9nZXQgKi8KKyNpZm5kZWYgR0xfUUNPTV9leHRlbmRlZF9nZXQKKyNkZWZpbmUgR0xfUUNPTV9leHRlbmRlZF9nZXQgMQorI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEV4dEdldFRleHR1cmVzUUNPTSAoR0x1aW50ICp0ZXh0dXJlcywgR0xpbnQgbWF4VGV4dHVyZXMsIEdMaW50ICpudW1UZXh0dXJlcyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xFeHRHZXRCdWZmZXJzUUNPTSAoR0x1aW50ICpidWZmZXJzLCBHTGludCBtYXhCdWZmZXJzLCBHTGludCAqbnVtQnVmZmVycyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xFeHRHZXRSZW5kZXJidWZmZXJzUUNPTSAoR0x1aW50ICpyZW5kZXJidWZmZXJzLCBHTGludCBtYXhSZW5kZXJidWZmZXJzLCBHTGludCAqbnVtUmVuZGVyYnVmZmVycyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xFeHRHZXRGcmFtZWJ1ZmZlcnNRQ09NIChHTHVpbnQgKmZyYW1lYnVmZmVycywgR0xpbnQgbWF4RnJhbWVidWZmZXJzLCBHTGludCAqbnVtRnJhbWVidWZmZXJzKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEV4dEdldFRleExldmVsUGFyYW1ldGVyaXZRQ09NIChHTHVpbnQgdGV4dHVyZSwgR0xlbnVtIGZhY2UsIEdMaW50IGxldmVsLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRXh0VGV4T2JqZWN0U3RhdGVPdmVycmlkZWlRQ09NIChHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEV4dEdldFRleFN1YkltYWdlUUNPTSAoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHpvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgR0x2b2lkICp0ZXhlbHMpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRXh0R2V0QnVmZmVyUG9pbnRlcnZRQ09NIChHTGVudW0gdGFyZ2V0LCBHTHZvaWQgKipwYXJhbXMpOworI2VuZGlmCit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEVYVEdFVFRFWFRVUkVTUUNPTVBST0MpIChHTHVpbnQgKnRleHR1cmVzLCBHTGludCBtYXhUZXh0dXJlcywgR0xpbnQgKm51bVRleHR1cmVzKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRVhUR0VUQlVGRkVSU1FDT01QUk9DKSAoR0x1aW50ICpidWZmZXJzLCBHTGludCBtYXhCdWZmZXJzLCBHTGludCAqbnVtQnVmZmVycyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEVYVEdFVFJFTkRFUkJVRkZFUlNRQ09NUFJPQykgKEdMdWludCAqcmVuZGVyYnVmZmVycywgR0xpbnQgbWF4UmVuZGVyYnVmZmVycywgR0xpbnQgKm51bVJlbmRlcmJ1ZmZlcnMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xFWFRHRVRGUkFNRUJVRkZFUlNRQ09NUFJPQykgKEdMdWludCAqZnJhbWVidWZmZXJzLCBHTGludCBtYXhGcmFtZWJ1ZmZlcnMsIEdMaW50ICpudW1GcmFtZWJ1ZmZlcnMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xFWFRHRVRURVhMRVZFTFBBUkFNRVRFUklWUUNPTVBST0MpIChHTHVpbnQgdGV4dHVyZSwgR0xlbnVtIGZhY2UsIEdMaW50IGxldmVsLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xFWFRURVhPQkpFQ1RTVEFURU9WRVJSSURFSVFDT01QUk9DKSAoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEVYVEdFVFRFWFNVQklNQUdFUUNPTVBST0MpIChHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgem9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHZvaWQgKnRleGVscyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEVYVEdFVEJVRkZFUlBPSU5URVJWUUNPTVBST0MpIChHTGVudW0gdGFyZ2V0LCBHTHZvaWQgKipwYXJhbXMpOworI2VuZGlmCisKKy8qIEdMX1FDT01fZXh0ZW5kZWRfZ2V0MiAqLworI2lmbmRlZiBHTF9RQ09NX2V4dGVuZGVkX2dldDIKKyNkZWZpbmUgR0xfUUNPTV9leHRlbmRlZF9nZXQyIDEKKyNpZmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xFeHRHZXRTaGFkZXJzUUNPTSAoR0x1aW50ICpzaGFkZXJzLCBHTGludCBtYXhTaGFkZXJzLCBHTGludCAqbnVtU2hhZGVycyk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xFeHRHZXRQcm9ncmFtc1FDT00gKEdMdWludCAqcHJvZ3JhbXMsIEdMaW50IG1heFByb2dyYW1zLCBHTGludCAqbnVtUHJvZ3JhbXMpOworR0xfQVBJQ0FMTCBHTGJvb2xlYW4gR0xfQVBJRU5UUlkgZ2xFeHRJc1Byb2dyYW1CaW5hcnlRQ09NIChHTHVpbnQgcHJvZ3JhbSk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xFeHRHZXRQcm9ncmFtQmluYXJ5U291cmNlUUNPTSAoR0x1aW50IHByb2dyYW0sIEdMZW51bSBzaGFkZXJ0eXBlLCBHTGNoYXIgKnNvdXJjZSwgR0xpbnQgKmxlbmd0aCk7CisjZW5kaWYKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRVhUR0VUU0hBREVSU1FDT01QUk9DKSAoR0x1aW50ICpzaGFkZXJzLCBHTGludCBtYXhTaGFkZXJzLCBHTGludCAqbnVtU2hhZGVycyk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEVYVEdFVFBST0dSQU1TUUNPTVBST0MpIChHTHVpbnQgKnByb2dyYW1zLCBHTGludCBtYXhQcm9ncmFtcywgR0xpbnQgKm51bVByb2dyYW1zKTsKK3R5cGVkZWYgR0xib29sZWFuIChHTF9BUElFTlRSWVAgUEZOR0xFWFRJU1BST0dSQU1CSU5BUllRQ09NUFJPQykgKEdMdWludCBwcm9ncmFtKTsKK3R5cGVkZWYgdm9pZCAoR0xfQVBJRU5UUllQIFBGTkdMRVhUR0VUUFJPR1JBTUJJTkFSWVNPVVJDRVFDT01QUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMZW51bSBzaGFkZXJ0eXBlLCBHTGNoYXIgKnNvdXJjZSwgR0xpbnQgKmxlbmd0aCk7CisjZW5kaWYKKwogLyogR0xfUUNPTV9wZXJmbW9uX2dsb2JhbF9tb2RlICovCiAjaWZuZGVmIEdMX1FDT01fcGVyZm1vbl9nbG9iYWxfbW9kZQogI2RlZmluZSBHTF9RQ09NX3BlcmZtb25fZ2xvYmFsX21vZGUgMQogI2VuZGlmCiAKKy8qIEdMX1FDT01fd3JpdGVvbmx5X3JlbmRlcmluZyAqLworI2lmbmRlZiBHTF9RQ09NX3dyaXRlb25seV9yZW5kZXJpbmcKKyNkZWZpbmUgR0xfUUNPTV93cml0ZW9ubHlfcmVuZGVyaW5nIDEKKyNlbmRpZgorCisvKiBHTF9RQ09NX3RpbGVkX3JlbmRlcmluZyAqLworI2lmbmRlZiBHTF9RQ09NX3RpbGVkX3JlbmRlcmluZworI2RlZmluZSBHTF9RQ09NX3RpbGVkX3JlbmRlcmluZyAxCisjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsU3RhcnRUaWxpbmdRQ09NIChHTHVpbnQgeCwgR0x1aW50IHksIEdMdWludCB3aWR0aCwgR0x1aW50IGhlaWdodCwgR0xiaXRmaWVsZCBwcmVzZXJ2ZU1hc2spOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsRW5kVGlsaW5nUUNPTSAoR0xiaXRmaWVsZCBwcmVzZXJ2ZU1hc2spOworI2VuZGlmCit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTFNUQVJUVElMSU5HUUNPTVBST0MpIChHTHVpbnQgeCwgR0x1aW50IHksIEdMdWludCB3aWR0aCwgR0x1aW50IGhlaWdodCwgR0xiaXRmaWVsZCBwcmVzZXJ2ZU1hc2spOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xFTkRUSUxJTkdRQ09NUFJPQykgKEdMYml0ZmllbGQgcHJlc2VydmVNYXNrKTsKKyNlbmRpZgorCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvb3BlbmdsL2luY2x1ZGUvR0xFUzIvZ2wycGxhdGZvcm0uaCBiL29wZW5nbC9pbmNsdWRlL0dMRVMyL2dsMnBsYXRmb3JtLmgKaW5kZXggM2U5MDM2Yy4uYzlmYTNjNCAxMDA2NDQKLS0tIGEvb3BlbmdsL2luY2x1ZGUvR0xFUzIvZ2wycGxhdGZvcm0uaAorKysgYi9vcGVuZ2wvaW5jbHVkZS9HTEVTMi9nbDJwbGF0Zm9ybS5oCkBAIC0xLDcgKzEsNyBAQAogI2lmbmRlZiBfX2dsMnBsYXRmb3JtX2hfCiAjZGVmaW5lIF9fZ2wycGxhdGZvcm1faF8KIAotLyogJFJldmlzaW9uOiA3MTczICQgb24gJERhdGU6OiAyMDA5LTAxLTA5IDExOjE4OjIxIC0wODAwICMkICovCisvKiAkUmV2aXNpb246IDEwNjAyICQgb24gJERhdGU6OiAyMDEwLTAzLTA0IDIyOjM1OjM0IC0wODAwICMkICovCiAKIC8qCiAgKiBUaGlzIGRvY3VtZW50IGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBTR0kgRnJlZSBTb2Z0d2FyZSBCIExpY2Vuc2UgVmVyc2lvbgpAQCAtOSw3ICs5LDYgQEAKICAqLwogCiAvKiBQbGF0Zm9ybS1zcGVjaWZpYyB0eXBlcyBhbmQgZGVmaW5pdGlvbnMgZm9yIE9wZW5HTCBFUyAyLlggIGdsMi5oCi0gKiBMYXN0IG1vZGlmaWVkIG9uIDIwMDgvMTIvMTkKICAqCiAgKiBBZG9wdGVycyBtYXkgbW9kaWZ5IGtocnBsYXRmb3JtLmggYW5kIHRoaXMgZmlsZSB0byBzdWl0IHRoZWlyIHBsYXRmb3JtLgogICogWW91IGFyZSBlbmNvdXJhZ2VkIHRvIHN1Ym1pdCBhbGwgbW9kaWZpY2F0aW9ucyB0byB0aGUgS2hyb25vcyBncm91cCBzbyB0aGF0CkBAIC0yNCw2ICsyMyw4IEBACiAjZGVmaW5lIEdMX0FQSUNBTEwgIEtIUk9OT1NfQVBJQ0FMTAogI2VuZGlmCiAKKyNpZm5kZWYgR0xfQVBJRU5UUlkKICNkZWZpbmUgR0xfQVBJRU5UUlkgS0hST05PU19BUElFTlRSWQorI2VuZGlmCiAKICNlbmRpZiAvKiBfX2dsMnBsYXRmb3JtX2hfICovCmRpZmYgLS1naXQgYS9vcGVuZ2wvamF2YS9hbmRyb2lkL29wZW5nbC9HTEVTMTAuamF2YSBiL29wZW5nbC9qYXZhL2FuZHJvaWQvb3BlbmdsL0dMRVMxMC5qYXZhCmluZGV4IGRiNTJiODIuLjc5MGFjYmQgMTAwNjQ0Ci0tLSBhL29wZW5nbC9qYXZhL2FuZHJvaWQvb3BlbmdsL0dMRVMxMC5qYXZhCisrKyBiL29wZW5nbC9qYXZhL2FuZHJvaWQvb3BlbmdsL0dMRVMxMC5qYXZhCkBAIC02NjksNiArNjY5LDIyIEBACiAgICAgICAgIGphdmEubmlvLkludEJ1ZmZlciBwYXJhbXMKICAgICApOwogCisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKwogICAgIC8vIEMgZnVuY3Rpb24gY29uc3QgR0x1Ynl0ZSAqIGdsR2V0U3RyaW5nICggR0xlbnVtIG5hbWUgKQogCiAgICAgcHVibGljIHN0YXRpYyBuYXRpdmUgU3RyaW5nIGdsR2V0U3RyaW5nKApkaWZmIC0tZ2l0IGEvb3BlbmdsL2phdmEvYW5kcm9pZC9vcGVuZ2wvR0xFUzIwLmphdmEgYi9vcGVuZ2wvamF2YS9hbmRyb2lkL29wZW5nbC9HTEVTMjAuamF2YQppbmRleCBiOGFhYzBlLi42MzVmODExIDEwMDY0NAotLS0gYS9vcGVuZ2wvamF2YS9hbmRyb2lkL29wZW5nbC9HTEVTMjAuamF2YQorKysgYi9vcGVuZ2wvamF2YS9hbmRyb2lkL29wZW5nbC9HTEVTMjAuamF2YQpAQCAtNjcwLDYgKzY3MCwxNSBAQAogICAgICAgICBpbnQgY291bnQKICAgICApOwogCisgICAgLy8gQyBmdW5jdGlvbiB2b2lkIGdsRHJhd0VsZW1lbnRzICggR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBHTGludCBvZmZzZXQgKQorCisgICAgcHVibGljIHN0YXRpYyBuYXRpdmUgdm9pZCBnbERyYXdFbGVtZW50cygKKyAgICAgICAgaW50IG1vZGUsCisgICAgICAgIGludCBjb3VudCwKKyAgICAgICAgaW50IHR5cGUsCisgICAgICAgIGludCBvZmZzZXQKKyAgICApOworCiAgICAgLy8gQyBmdW5jdGlvbiB2b2lkIGdsRHJhd0VsZW1lbnRzICggR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKmluZGljZXMgKQogCiAgICAgcHVibGljIHN0YXRpYyBuYXRpdmUgdm9pZCBnbERyYXdFbGVtZW50cygKQEAgLTk3OCw2ICs5ODcsMjIgQEAKICAgICAgICAgamF2YS5uaW8uSW50QnVmZmVyIHBhcmFtcwogICAgICk7CiAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCiAgICAgLy8gQyBmdW5jdGlvbiB2b2lkIGdsR2V0UHJvZ3JhbUluZm9Mb2coIEdMdWludCBwcm9ncmFtLCBHTHNpemVpIG1heExlbmd0aCwgR0xzaXplaSAqIGxlbmd0aCwKICAJLy8gICAgIEdMY2hhciAqIGluZm9Mb2cpOwogCkBAIC0xMDE4LDYgKzEwNDMsMjIgQEAKICAgICAgICAgamF2YS5uaW8uSW50QnVmZmVyIHBhcmFtcwogICAgICk7CiAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCiAgICAgLy8gQyBmdW5jdGlvbiB2b2lkIGdsR2V0U2hhZGVySW5mb0xvZyggR0x1aW50IHNoYWRlciwgR0xzaXplaSBtYXhMZW5ndGgsIEdMc2l6ZWkgKiBsZW5ndGgsCiAgCS8vICAgICBHTGNoYXIgKiBpbmZvTG9nKTsKIApAQCAtMTA2NCw2ICsxMTA1LDIyIEBACiAgICAgICAgIGJ5dGUgc291cmNlCiAgICAgKTsKIAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKICAgICAvLyBDIGZ1bmN0aW9uIGNvbnN0IEdMdWJ5dGUgKiBnbEdldFN0cmluZyAoIEdMZW51bSBuYW1lICkKIAogICAgIHB1YmxpYyBzdGF0aWMgbmF0aXZlIFN0cmluZyBnbEdldFN0cmluZygKQEAgLTEzMTYsNiArMTM3MywyMiBAQAogICAgICAgICBpbnQgbGVuZ3RoCiAgICAgKTsKIAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKICAgICAvLyBDIGZ1bmN0aW9uIHZvaWQgZ2xTaGFkZXJTb3VyY2UgKCBHTHVpbnQgc2hhZGVyLCBHTHNpemVpIGNvdW50LCBjb25zdCBHTGNoYXIgKiogc3RyaW5nLCBjb25zdCBHTGludCogbGVuZ3RoICkKIAogICAgIHB1YmxpYyBzdGF0aWMgbmF0aXZlIHZvaWQgZ2xTaGFkZXJTb3VyY2UoCkBAIC0xODE0LDYgKzE4ODcsMTcgQEAKICAgICAgICAgamF2YS5uaW8uRmxvYXRCdWZmZXIgdmFsdWVzCiAgICAgKTsKIAorICAgIC8vIEMgZnVuY3Rpb24gdm9pZCBnbFZlcnRleEF0dHJpYlBvaW50ZXIgKCBHTHVpbnQgaW5keCwgR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMYm9vbGVhbiBub3JtYWxpemVkLCBHTHNpemVpIHN0cmlkZSwgR0xpbnQgb2Zmc2V0ICkKKworICAgIHB1YmxpYyBzdGF0aWMgbmF0aXZlIHZvaWQgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKAorICAgICAgICBpbnQgaW5keCwKKyAgICAgICAgaW50IHNpemUsCisgICAgICAgIGludCB0eXBlLAorICAgICAgICBib29sZWFuIG5vcm1hbGl6ZWQsCisgICAgICAgIGludCBzdHJpZGUsCisgICAgICAgIGludCBvZmZzZXQKKyAgICApOworCiAgICAgLy8gQyBmdW5jdGlvbiB2b2lkIGdsVmVydGV4QXR0cmliUG9pbnRlciAoIEdMdWludCBpbmR4LCBHTGludCBzaXplLCBHTGVudW0gdHlwZSwgR0xib29sZWFuIG5vcm1hbGl6ZWQsIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCBHTHZvaWQgKnB0ciApCiAKICAgICBwcml2YXRlIHN0YXRpYyBuYXRpdmUgdm9pZCBnbFZlcnRleEF0dHJpYlBvaW50ZXJCb3VuZHMoCmRpZmYgLS1naXQgYS9vcGVuZ2wvamF2YS9hbmRyb2lkL29wZW5nbC9HTFN1cmZhY2VWaWV3LmphdmEgYi9vcGVuZ2wvamF2YS9hbmRyb2lkL29wZW5nbC9HTFN1cmZhY2VWaWV3LmphdmEKaW5kZXggZjkwNGNkZi4uMmZmMjMxZCAxMDA2NDQKLS0tIGEvb3BlbmdsL2phdmEvYW5kcm9pZC9vcGVuZ2wvR0xTdXJmYWNlVmlldy5qYXZhCisrKyBiL29wZW5nbC9qYXZhL2FuZHJvaWQvb3BlbmdsL0dMU3VyZmFjZVZpZXcuamF2YQpAQCAtMjIyLDcgKzIyMiw2IEBACiAgICAgICAgIC8vIHVuZGVybHlpbmcgc3VyZmFjZSBpcyBjcmVhdGVkIGFuZCBkZXN0cm95ZWQKICAgICAgICAgU3VyZmFjZUhvbGRlciBob2xkZXIgPSBnZXRIb2xkZXIoKTsKICAgICAgICAgaG9sZGVyLmFkZENhbGxiYWNrKHRoaXMpOwotICAgICAgICBob2xkZXIuc2V0Rm9ybWF0KFBpeGVsRm9ybWF0LlJHQl81NjUpOwogICAgICAgICAvLyBzZXRUeXBlIGlzIG5vdCBuZWVkZWQgZm9yIFNESyAyLjAgb3IgbmV3ZXIuIFVuY29tbWVudCB0aGlzCiAgICAgICAgIC8vIHN0YXRlbWVudCBpZiBiYWNrLXBvcnRpbmcgdGhpcyBjb2RlIHRvIG9sZGVyIFNES3MuCiAgICAgICAgIC8vIGhvbGRlci5zZXRUeXBlKFN1cmZhY2VIb2xkZXIuU1VSRkFDRV9UWVBFX0dQVSk7CmRpZmYgLS1naXQgYS9vcGVuZ2wvamF2YS9jb20vZ29vZ2xlL2FuZHJvaWQvZ2xlc19qbmkvR0xJbXBsLmphdmEgYi9vcGVuZ2wvamF2YS9jb20vZ29vZ2xlL2FuZHJvaWQvZ2xlc19qbmkvR0xJbXBsLmphdmEKaW5kZXggMzBiOTMyNS4uMDkwYzBjYjcgMTAwNjQ0Ci0tLSBhL29wZW5nbC9qYXZhL2NvbS9nb29nbGUvYW5kcm9pZC9nbGVzX2puaS9HTEltcGwuamF2YQorKysgYi9vcGVuZ2wvamF2YS9jb20vZ29vZ2xlL2FuZHJvaWQvZ2xlc19qbmkvR0xJbXBsLmphdmEKQEAgLTE5LDcgKzE5LDcgQEAKIAogcGFja2FnZSBjb20uZ29vZ2xlLmFuZHJvaWQuZ2xlc19qbmk7CiAKLWltcG9ydCBhbmRyb2lkLmFwcC5BY3Rpdml0eVRocmVhZDsKK2ltcG9ydCBhbmRyb2lkLmFwcC5BcHBHbG9iYWxzOwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5BcHBsaWNhdGlvbkluZm87CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLklQYWNrYWdlTWFuYWdlcjsKIGltcG9ydCBhbmRyb2lkLm9zLkJ1aWxkOwpAQCAtNjUsNyArNjUsNyBAQAogICAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gYWxsb3dJbmRpcmVjdEJ1ZmZlcnMoU3RyaW5nIGFwcE5hbWUpIHsKICAgICAgICAgYm9vbGVhbiByZXN1bHQgPSBmYWxzZTsKICAgICAgICAgaW50IHZlcnNpb24gPSAwOwotICAgICAgICBJUGFja2FnZU1hbmFnZXIgcG0gPSBBY3Rpdml0eVRocmVhZC5nZXRQYWNrYWdlTWFuYWdlcigpOworICAgICAgICBJUGFja2FnZU1hbmFnZXIgcG0gPSBBcHBHbG9iYWxzLmdldFBhY2thZ2VNYW5hZ2VyKCk7CiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBBcHBsaWNhdGlvbkluZm8gYXBwbGljYXRpb25JbmZvID0gcG0uZ2V0QXBwbGljYXRpb25JbmZvKGFwcE5hbWUsIDApOwogICAgICAgICAgICAgaWYgKGFwcGxpY2F0aW9uSW5mbyAhPSBudWxsKSB7CmRpZmYgLS1naXQgYS9vcGVuZ2wvbGliYWdsL0FuZHJvaWQubWsgYi9vcGVuZ2wvbGliYWdsL0FuZHJvaWQubWsKaW5kZXggNmNiMTQ2Yy4uOGFiZDY0OTkgMTAwNjQ0Ci0tLSBhL29wZW5nbC9saWJhZ2wvQW5kcm9pZC5taworKysgYi9vcGVuZ2wvbGliYWdsL0FuZHJvaWQubWsKQEAgLTM3LDYgKzM3LDEwIEBACiAJTE9DQUxfQ0ZMQUdTICs9IC1mc3RyaWN0LWFsaWFzaW5nCiBlbmRpZgogCitpZmVxICgkKEFSQ0hfQVJNX0hBVkVfVExTX1JFR0lTVEVSKSx0cnVlKQorICAgIExPQ0FMX0NGTEFHUyArPSAtREhBVkVfQVJNX1RMU19SRUdJU1RFUgorZW5kaWYKKwogaWZuZXEgKCQoVEFSR0VUX1NJTVVMQVRPUiksdHJ1ZSkKICAgICAjIHdlIG5lZWQgdG8gYWNjZXNzIHRoZSBwcml2YXRlIEJpb25pYyBoZWFkZXIgPGJpb25pY190bHMuaD4KICAgICAjIG9uIEFSTSBwbGF0Zm9ybXMsIHdlIG5lZWQgdG8gbWlycm9yIHRoZSBBUkNIX0FSTV9IQVZFX1RMU19SRUdJU1RFUgpkaWZmIC0tZ2l0IGEvb3BlbmdsL2xpYmFnbC9lZ2wuY3BwIGIvb3BlbmdsL2xpYmFnbC9lZ2wuY3BwCmluZGV4IGI2ZTBhYWUuLjU0ZDczMDcgMTAwNjQ0Ci0tLSBhL29wZW5nbC9saWJhZ2wvZWdsLmNwcAorKysgYi9vcGVuZ2wvbGliYWdsL2VnbC5jcHAKQEAgLTIxMyw3ICsyMTMsNyBAQAogICAgIGVnbF93aW5kb3dfc3VyZmFjZV92Ml90KAogICAgICAgICAgICAgRUdMRGlzcGxheSBkcHksIEVHTENvbmZpZyBjb25maWcsCiAgICAgICAgICAgICBpbnQzMl90IGRlcHRoRm9ybWF0LAotICAgICAgICAgICAgYW5kcm9pZF9uYXRpdmVfd2luZG93X3QqIHdpbmRvdyk7CisgICAgICAgICAgICBBTmF0aXZlV2luZG93KiB3aW5kb3cpOwogCiAgICAgfmVnbF93aW5kb3dfc3VyZmFjZV92Ml90KCk7CiAKQEAgLTIzNSw3ICsyMzUsNyBAQAogcHJpdmF0ZToKICAgICBzdGF0dXNfdCBsb2NrKGFuZHJvaWRfbmF0aXZlX2J1ZmZlcl90KiBidWYsIGludCB1c2FnZSwgdm9pZCoqIHZhZGRyKTsKICAgICBzdGF0dXNfdCB1bmxvY2soYW5kcm9pZF9uYXRpdmVfYnVmZmVyX3QqIGJ1Zik7Ci0gICAgYW5kcm9pZF9uYXRpdmVfd2luZG93X3QqICAgbmF0aXZlV2luZG93OworICAgIEFOYXRpdmVXaW5kb3cqICAgbmF0aXZlV2luZG93OwogICAgIGFuZHJvaWRfbmF0aXZlX2J1ZmZlcl90KiAgIGJ1ZmZlcjsKICAgICBhbmRyb2lkX25hdGl2ZV9idWZmZXJfdCogICBwcmV2aW91c0J1ZmZlcjsKICAgICBncmFsbG9jX21vZHVsZV90IGNvbnN0KiAgICBtb2R1bGU7CkBAIC0zNTUsNyArMzU1LDcgQEAKIGVnbF93aW5kb3dfc3VyZmFjZV92Ml90OjplZ2xfd2luZG93X3N1cmZhY2VfdjJfdChFR0xEaXNwbGF5IGRweSwKICAgICAgICAgRUdMQ29uZmlnIGNvbmZpZywKICAgICAgICAgaW50MzJfdCBkZXB0aEZvcm1hdCwKLSAgICAgICAgYW5kcm9pZF9uYXRpdmVfd2luZG93X3QqIHdpbmRvdykKKyAgICAgICAgQU5hdGl2ZVdpbmRvdyogd2luZG93KQogICAgIDogZWdsX3N1cmZhY2VfdChkcHksIGNvbmZpZywgZGVwdGhGb3JtYXQpLCAKICAgICBuYXRpdmVXaW5kb3cod2luZG93KSwgYnVmZmVyKDApLCBwcmV2aW91c0J1ZmZlcigwKSwgbW9kdWxlKDApLAogICAgIGJsaXRlbmdpbmUoMCksIGJpdHMoTlVMTCkKQEAgLTEzMDAsNyArMTMwMCw3IEBACiAgICAgaWYgKCEoc3VyZmFjZVR5cGUgJiBFR0xfV0lORE9XX0JJVCkpCiAgICAgICAgIHJldHVybiBzZXRFcnJvcihFR0xfQkFEX01BVENILCBFR0xfTk9fU1VSRkFDRSk7CiAKLSAgICBpZiAoc3RhdGljX2Nhc3Q8YW5kcm9pZF9uYXRpdmVfd2luZG93X3QqPih3aW5kb3cpLT5jb21tb24ubWFnaWMgIT0KKyAgICBpZiAoc3RhdGljX2Nhc3Q8QU5hdGl2ZVdpbmRvdyo+KHdpbmRvdyktPmNvbW1vbi5tYWdpYyAhPQogICAgICAgICAgICAgQU5EUk9JRF9OQVRJVkVfV0lORE9XX01BR0lDKSB7CiAgICAgICAgIHJldHVybiBzZXRFcnJvcihFR0xfQkFEX05BVElWRV9XSU5ET1csIEVHTF9OT19TVVJGQUNFKTsKICAgICB9CkBAIC0xMzIzLDcgKzEzMjMsNyBAQAogCiAgICAgZWdsX3N1cmZhY2VfdCogc3VyZmFjZTsKICAgICBzdXJmYWNlID0gbmV3IGVnbF93aW5kb3dfc3VyZmFjZV92Ml90KGRweSwgY29uZmlnLCBkZXB0aEZvcm1hdCwKLSAgICAgICAgICAgIHN0YXRpY19jYXN0PGFuZHJvaWRfbmF0aXZlX3dpbmRvd190Kj4od2luZG93KSk7CisgICAgICAgICAgICBzdGF0aWNfY2FzdDxBTmF0aXZlV2luZG93Kj4od2luZG93KSk7CiAKICAgICBpZiAoIXN1cmZhY2UtPmluaXRDaGVjaygpKSB7CiAgICAgICAgIC8vIHRoZXJlIHdhcyBhIHByb2JsZW0gaW4gdGhlIGN0b3IsIHRoZSBlcnJvcgpAQCAtMTUyNSw4ICsxNTI1LDEzIEBACiAgICAgfQogCiAgICAgaWYgKGdnbF91bmxpa2VseShhdHRyaWJfbGlzdD09MCkpIHsKLSAgICAgICAgKm51bV9jb25maWcgPSAwOwotICAgICAgICByZXR1cm4gRUdMX1RSVUU7CisgICAgICAgIC8qCisgICAgICAgICAqIEEgTlVMTCBhdHRyaWJfbGlzdCBzaG91bGQgYmUgdHJlYXRlZCBhcyB0aG91Z2ggaXQgd2FzIGFuIGVtcHR5CisgICAgICAgICAqIG9uZSAodGVybWluYXRlZCB3aXRoIEVHTF9OT05FKSBhcyBkZWZpbmVkIGluCisgICAgICAgICAqIHNlY3Rpb24gMy40LjEgIlF1ZXJ5aW5nIENvbmZpZ3VyYXRpb25zIiBpbiB0aGUgRUdMIHNwZWNpZmljYXRpb24uCisgICAgICAgICAqLworICAgICAgICBzdGF0aWMgY29uc3QgRUdMaW50IGR1bW15ID0gRUdMX05PTkU7CisgICAgICAgIGF0dHJpYl9saXN0ID0gJmR1bW15OwogICAgIH0KIAogICAgIGludCBudW1BdHRyaWJ1dGVzID0gMDsKZGlmZiAtLWdpdCBhL29wZW5nbC9saWJhZ2wvdGV4dHVyZS5jcHAgYi9vcGVuZ2wvbGliYWdsL3RleHR1cmUuY3BwCmluZGV4IDk0MDdiZDUuLmQ2NzYxMmUgMTAwNjQ0Ci0tLSBhL29wZW5nbC9saWJhZ2wvdGV4dHVyZS5jcHAKKysrIGIvb3BlbmdsL2xpYmFnbC90ZXh0dXJlLmNwcApAQCAtMTUxNSw3ICsxNTE1LDcgQEAKICAgICAgICAgb2dsZXNfZXJyb3IoYywgR0xfSU5WQUxJRF9WQUxVRSk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaWYgKHg8MCB8fCB4PDApIHsKKyAgICBpZiAoeDwwIHx8IHk8MCkgewogICAgICAgICBvZ2xlc19lcnJvcihjLCBHTF9JTlZBTElEX1ZBTFVFKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL29wZW5nbC9saWJzL0VHTC9lZ2wuY3BwIGIvb3BlbmdsL2xpYnMvRUdML2VnbC5jcHAKaW5kZXggODliM2UxZi4uNzE0ZmQzZSAxMDA2NDQKLS0tIGEvb3BlbmdsL2xpYnMvRUdML2VnbC5jcHAKKysrIGIvb3BlbmdsL2xpYnMvRUdML2VnbC5jcHAKQEAgLTIzOSw3ICsyMzksNyBAQAogCiAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKLWVnbF9jb25uZWN0aW9uX3QgZ0VHTEltcGxbSU1QTF9OVU1fSU1QTEVNRU5UQVRJT05TXTsKK3N0YXRpYyBlZ2xfY29ubmVjdGlvbl90IGdFR0xJbXBsW0lNUExfTlVNX0lNUExFTUVOVEFUSU9OU107CiBzdGF0aWMgZWdsX2Rpc3BsYXlfdCBnRGlzcGxheVtOVU1fRElTUExBWVNdOwogc3RhdGljIHB0aHJlYWRfbXV0ZXhfdCBnVGhyZWFkTG9jYWxTdG9yYWdlS2V5TXV0ZXggPSBQVEhSRUFEX01VVEVYX0lOSVRJQUxJWkVSOwogc3RhdGljIHB0aHJlYWRfa2V5X3QgZ0VHTFRocmVhZExvY2FsU3RvcmFnZUtleSA9IC0xOwpAQCAtODQzLDEwICs4NDMsMTIgQEAKICAgICBFR0xpbnQgcGF0Y2hfaW5kZXggPSAtMTsKICAgICBHTGludCBhdHRyOwogICAgIHNpemVfdCBzaXplID0gMDsKLSAgICB3aGlsZSAoKGF0dHI9YXR0cmliX2xpc3Rbc2l6ZV0pICE9IEVHTF9OT05FKSB7Ci0gICAgICAgIGlmIChhdHRyID09IEVHTF9DT05GSUdfSUQpCi0gICAgICAgICAgICBwYXRjaF9pbmRleCA9IHNpemU7Ci0gICAgICAgIHNpemUgKz0gMjsKKyAgICBpZiAoYXR0cmliX2xpc3QpIHsKKyAgICAgICAgd2hpbGUgKChhdHRyPWF0dHJpYl9saXN0W3NpemVdKSAhPSBFR0xfTk9ORSkgeworICAgICAgICAgICAgaWYgKGF0dHIgPT0gRUdMX0NPTkZJR19JRCkKKyAgICAgICAgICAgICAgICBwYXRjaF9pbmRleCA9IHNpemU7CisgICAgICAgICAgICBzaXplICs9IDI7CisgICAgICAgIH0KICAgICB9CiAgICAgaWYgKHBhdGNoX2luZGV4ID49IDApIHsKICAgICAgICAgc2l6ZSArPSAyOyAvLyB3ZSBuZWVkIGNvcHkgdGhlIHNlbnRpbmVsIGFzIHdlbGwKQEAgLTEwNDMsNiArMTA0NSwxMCBAQAogICAgIGludCBpPTAsIGluZGV4PTA7CiAgICAgZWdsX2Nvbm5lY3Rpb25fdCogY254ID0gdmFsaWRhdGVfZGlzcGxheV9jb25maWcoZHB5LCBjb25maWcsIGRwLCBpLCBpbmRleCk7CiAgICAgaWYgKGNueCkgeworICAgICAgICBpZiAoc2hhcmVfbGlzdCAhPSBFR0xfTk9fQ09OVEVYVCkgeworICAgICAgICAgICAgZWdsX2NvbnRleHRfdCogY29uc3QgYyA9IGdldF9jb250ZXh0KHNoYXJlX2xpc3QpOworICAgICAgICAgICAgc2hhcmVfbGlzdCA9IGMtPmNvbnRleHQ7CisgICAgICAgIH0KICAgICAgICAgRUdMQ29udGV4dCBjb250ZXh0ID0gY254LT5lZ2wuZWdsQ3JlYXRlQ29udGV4dCgKICAgICAgICAgICAgICAgICBkcC0+ZGlzcFtpXS5kcHksIGRwLT5kaXNwW2ldLmNvbmZpZ1tpbmRleF0sCiAgICAgICAgICAgICAgICAgc2hhcmVfbGlzdCwgYXR0cmliX2xpc3QpOwpkaWZmIC0tZ2l0IGEvb3BlbmdsL2xpYnMvR0xFUzIvZ2wyX2FwaS5pbiBiL29wZW5nbC9saWJzL0dMRVMyL2dsMl9hcGkuaW4KaW5kZXggOWMyZTY5YS4uNTE2NDQ1MCAxMDA2NDQKLS0tIGEvb3BlbmdsL2xpYnMvR0xFUzIvZ2wyX2FwaS5pbgorKysgYi9vcGVuZ2wvbGlicy9HTEVTMi9nbDJfYXBpLmluCkBAIC00LDcgKzQsNyBAQAogdm9pZCBBUElfRU5UUlkoZ2xBdHRhY2hTaGFkZXIpKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgc2hhZGVyKSB7CiAgICAgQ0FMTF9HTF9BUEkoZ2xBdHRhY2hTaGFkZXIsIHByb2dyYW0sIHNoYWRlcik7CiB9Ci12b2lkIEFQSV9FTlRSWShnbEJpbmRBdHRyaWJMb2NhdGlvbikoR0x1aW50IHByb2dyYW0sIEdMdWludCBpbmRleCwgY29uc3QgY2hhciogbmFtZSkgewordm9pZCBBUElfRU5UUlkoZ2xCaW5kQXR0cmliTG9jYXRpb24pKEdMdWludCBwcm9ncmFtLCBHTHVpbnQgaW5kZXgsIGNvbnN0IEdMY2hhciogbmFtZSkgewogICAgIENBTExfR0xfQVBJKGdsQmluZEF0dHJpYkxvY2F0aW9uLCBwcm9ncmFtLCBpbmRleCwgbmFtZSk7CiB9CiB2b2lkIEFQSV9FTlRSWShnbEJpbmRCdWZmZXIpKEdMZW51bSB0YXJnZXQsIEdMdWludCBidWZmZXIpIHsKQEAgLTM0LDEwICszNCwxMCBAQAogdm9pZCBBUElfRU5UUlkoZ2xCbGVuZEZ1bmNTZXBhcmF0ZSkoR0xlbnVtIHNyY1JHQiwgR0xlbnVtIGRzdFJHQiwgR0xlbnVtIHNyY0FscGhhLCBHTGVudW0gZHN0QWxwaGEpIHsKICAgICBDQUxMX0dMX0FQSShnbEJsZW5kRnVuY1NlcGFyYXRlLCBzcmNSR0IsIGRzdFJHQiwgc3JjQWxwaGEsIGRzdEFscGhhKTsKIH0KLXZvaWQgQVBJX0VOVFJZKGdsQnVmZmVyRGF0YSkoR0xlbnVtIHRhcmdldCwgR0xzaXplaXB0ciBzaXplLCBjb25zdCB2b2lkKiBkYXRhLCBHTGVudW0gdXNhZ2UpIHsKK3ZvaWQgQVBJX0VOVFJZKGdsQnVmZmVyRGF0YSkoR0xlbnVtIHRhcmdldCwgR0xzaXplaXB0ciBzaXplLCBjb25zdCBHTHZvaWQqIGRhdGEsIEdMZW51bSB1c2FnZSkgewogICAgIENBTExfR0xfQVBJKGdsQnVmZmVyRGF0YSwgdGFyZ2V0LCBzaXplLCBkYXRhLCB1c2FnZSk7CiB9Ci12b2lkIEFQSV9FTlRSWShnbEJ1ZmZlclN1YkRhdGEpKEdMZW51bSB0YXJnZXQsIEdMaW50cHRyIG9mZnNldCwgR0xzaXplaXB0ciBzaXplLCBjb25zdCB2b2lkKiBkYXRhKSB7Cit2b2lkIEFQSV9FTlRSWShnbEJ1ZmZlclN1YkRhdGEpKEdMZW51bSB0YXJnZXQsIEdMaW50cHRyIG9mZnNldCwgR0xzaXplaXB0ciBzaXplLCBjb25zdCBHTHZvaWQqIGRhdGEpIHsKICAgICBDQUxMX0dMX0FQSShnbEJ1ZmZlclN1YkRhdGEsIHRhcmdldCwgb2Zmc2V0LCBzaXplLCBkYXRhKTsKIH0KIEdMZW51bSBBUElfRU5UUlkoZ2xDaGVja0ZyYW1lYnVmZmVyU3RhdHVzKShHTGVudW0gdGFyZ2V0KSB7CkBAIC02MSwxMCArNjEsMTAgQEAKIHZvaWQgQVBJX0VOVFJZKGdsQ29tcGlsZVNoYWRlcikoR0x1aW50IHNoYWRlcikgewogICAgIENBTExfR0xfQVBJKGdsQ29tcGlsZVNoYWRlciwgc2hhZGVyKTsKIH0KLXZvaWQgQVBJX0VOVFJZKGdsQ29tcHJlc3NlZFRleEltYWdlMkQpKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIsIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCB2b2lkKiBkYXRhKSB7Cit2b2lkIEFQSV9FTlRSWShnbENvbXByZXNzZWRUZXhJbWFnZTJEKShHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xpbnQgYm9yZGVyLCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2b2lkKiBkYXRhKSB7CiAgICAgQ0FMTF9HTF9BUEkoZ2xDb21wcmVzc2VkVGV4SW1hZ2UyRCwgdGFyZ2V0LCBsZXZlbCwgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIGJvcmRlciwgaW1hZ2VTaXplLCBkYXRhKTsKIH0KLXZvaWQgQVBJX0VOVFJZKGdsQ29tcHJlc3NlZFRleFN1YkltYWdlMkQpKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpIHsKK3ZvaWQgQVBJX0VOVFJZKGdsQ29tcHJlc3NlZFRleFN1YkltYWdlMkQpKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IEdMdm9pZCogZGF0YSkgewogICAgIENBTExfR0xfQVBJKGdsQ29tcHJlc3NlZFRleFN1YkltYWdlMkQsIHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgaW1hZ2VTaXplLCBkYXRhKTsKIH0KIHZvaWQgQVBJX0VOVFJZKGdsQ29weVRleEltYWdlMkQpKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIpIHsKQEAgLTEyMSw3ICsxMjEsNyBAQAogdm9pZCBBUElfRU5UUlkoZ2xEcmF3QXJyYXlzKShHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQpIHsKICAgICBDQUxMX0dMX0FQSShnbERyYXdBcnJheXMsIG1vZGUsIGZpcnN0LCBjb3VudCk7CiB9Ci12b2lkIEFQSV9FTlRSWShnbERyYXdFbGVtZW50cykoR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBpbmRpY2VzKSB7Cit2b2lkIEFQSV9FTlRSWShnbERyYXdFbGVtZW50cykoR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQqIGluZGljZXMpIHsKICAgICBDQUxMX0dMX0FQSShnbERyYXdFbGVtZW50cywgbW9kZSwgY291bnQsIHR5cGUsIGluZGljZXMpOwogfQogdm9pZCBBUElfRU5UUlkoZ2xFbmFibGUpKEdMZW51bSBjYXApIHsKQEAgLTE2MCwxNiArMTYwLDE2IEBACiB2b2lkIEFQSV9FTlRSWShnbEdlblRleHR1cmVzKShHTHNpemVpIG4sIEdMdWludCogdGV4dHVyZXMpIHsKICAgICBDQUxMX0dMX0FQSShnbEdlblRleHR1cmVzLCBuLCB0ZXh0dXJlcyk7CiB9Ci12b2lkIEFQSV9FTlRSWShnbEdldEFjdGl2ZUF0dHJpYikoR0x1aW50IHByb2dyYW0sIEdMdWludCBpbmRleCwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpKiBsZW5ndGgsIEdMaW50KiBzaXplLCBHTGVudW0qIHR5cGUsIGNoYXIqIG5hbWUpIHsKK3ZvaWQgQVBJX0VOVFJZKGdsR2V0QWN0aXZlQXR0cmliKShHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IGluZGV4LCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkqIGxlbmd0aCwgR0xpbnQqIHNpemUsIEdMZW51bSogdHlwZSwgR0xjaGFyKiBuYW1lKSB7CiAgICAgQ0FMTF9HTF9BUEkoZ2xHZXRBY3RpdmVBdHRyaWIsIHByb2dyYW0sIGluZGV4LCBidWZzaXplLCBsZW5ndGgsIHNpemUsIHR5cGUsIG5hbWUpOwogfQotdm9pZCBBUElfRU5UUlkoZ2xHZXRBY3RpdmVVbmlmb3JtKShHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IGluZGV4LCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkqIGxlbmd0aCwgR0xpbnQqIHNpemUsIEdMZW51bSogdHlwZSwgY2hhciogbmFtZSkgewordm9pZCBBUElfRU5UUlkoZ2xHZXRBY3RpdmVVbmlmb3JtKShHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IGluZGV4LCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkqIGxlbmd0aCwgR0xpbnQqIHNpemUsIEdMZW51bSogdHlwZSwgR0xjaGFyKiBuYW1lKSB7CiAgICAgQ0FMTF9HTF9BUEkoZ2xHZXRBY3RpdmVVbmlmb3JtLCBwcm9ncmFtLCBpbmRleCwgYnVmc2l6ZSwgbGVuZ3RoLCBzaXplLCB0eXBlLCBuYW1lKTsKIH0KIHZvaWQgQVBJX0VOVFJZKGdsR2V0QXR0YWNoZWRTaGFkZXJzKShHTHVpbnQgcHJvZ3JhbSwgR0xzaXplaSBtYXhjb3VudCwgR0xzaXplaSogY291bnQsIEdMdWludCogc2hhZGVycykgewogICAgIENBTExfR0xfQVBJKGdsR2V0QXR0YWNoZWRTaGFkZXJzLCBwcm9ncmFtLCBtYXhjb3VudCwgY291bnQsIHNoYWRlcnMpOwogfQotaW50IEFQSV9FTlRSWShnbEdldEF0dHJpYkxvY2F0aW9uKShHTHVpbnQgcHJvZ3JhbSwgY29uc3QgY2hhciogbmFtZSkgeworaW50IEFQSV9FTlRSWShnbEdldEF0dHJpYkxvY2F0aW9uKShHTHVpbnQgcHJvZ3JhbSwgY29uc3QgR0xjaGFyKiBuYW1lKSB7CiAgICAgQ0FMTF9HTF9BUElfUkVUVVJOKGdsR2V0QXR0cmliTG9jYXRpb24sIHByb2dyYW0sIG5hbWUpOwogfQogdm9pZCBBUElfRU5UUlkoZ2xHZXRCb29sZWFudikoR0xlbnVtIHBuYW1lLCBHTGJvb2xlYW4qIHBhcmFtcykgewpAQCAtMTkzLDcgKzE5Myw3IEBACiB2b2lkIEFQSV9FTlRSWShnbEdldFByb2dyYW1pdikoR0x1aW50IHByb2dyYW0sIEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcykgewogICAgIENBTExfR0xfQVBJKGdsR2V0UHJvZ3JhbWl2LCBwcm9ncmFtLCBwbmFtZSwgcGFyYW1zKTsKIH0KLXZvaWQgQVBJX0VOVFJZKGdsR2V0UHJvZ3JhbUluZm9Mb2cpKEdMdWludCBwcm9ncmFtLCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkqIGxlbmd0aCwgY2hhciogaW5mb2xvZykgewordm9pZCBBUElfRU5UUlkoZ2xHZXRQcm9ncmFtSW5mb0xvZykoR0x1aW50IHByb2dyYW0sIEdMc2l6ZWkgYnVmc2l6ZSwgR0xzaXplaSogbGVuZ3RoLCBHTGNoYXIqIGluZm9sb2cpIHsKICAgICBDQUxMX0dMX0FQSShnbEdldFByb2dyYW1JbmZvTG9nLCBwcm9ncmFtLCBidWZzaXplLCBsZW5ndGgsIGluZm9sb2cpOwogfQogdm9pZCBBUElfRU5UUlkoZ2xHZXRSZW5kZXJidWZmZXJQYXJhbWV0ZXJpdikoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCogcGFyYW1zKSB7CkBAIC0yMDIsMTMgKzIwMiwxMyBAQAogdm9pZCBBUElfRU5UUlkoZ2xHZXRTaGFkZXJpdikoR0x1aW50IHNoYWRlciwgR0xlbnVtIHBuYW1lLCBHTGludCogcGFyYW1zKSB7CiAgICAgQ0FMTF9HTF9BUEkoZ2xHZXRTaGFkZXJpdiwgc2hhZGVyLCBwbmFtZSwgcGFyYW1zKTsKIH0KLXZvaWQgQVBJX0VOVFJZKGdsR2V0U2hhZGVySW5mb0xvZykoR0x1aW50IHNoYWRlciwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpKiBsZW5ndGgsIGNoYXIqIGluZm9sb2cpIHsKK3ZvaWQgQVBJX0VOVFJZKGdsR2V0U2hhZGVySW5mb0xvZykoR0x1aW50IHNoYWRlciwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpKiBsZW5ndGgsIEdMY2hhciogaW5mb2xvZykgewogICAgIENBTExfR0xfQVBJKGdsR2V0U2hhZGVySW5mb0xvZywgc2hhZGVyLCBidWZzaXplLCBsZW5ndGgsIGluZm9sb2cpOwogfQogdm9pZCBBUElfRU5UUlkoZ2xHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQpKEdMZW51bSBzaGFkZXJ0eXBlLCBHTGVudW0gcHJlY2lzaW9udHlwZSwgR0xpbnQqIHJhbmdlLCBHTGludCogcHJlY2lzaW9uKSB7CiAgICAgQ0FMTF9HTF9BUEkoZ2xHZXRTaGFkZXJQcmVjaXNpb25Gb3JtYXQsIHNoYWRlcnR5cGUsIHByZWNpc2lvbnR5cGUsIHJhbmdlLCBwcmVjaXNpb24pOwogfQotdm9pZCBBUElfRU5UUlkoZ2xHZXRTaGFkZXJTb3VyY2UpKEdMdWludCBzaGFkZXIsIEdMc2l6ZWkgYnVmc2l6ZSwgR0xzaXplaSogbGVuZ3RoLCBjaGFyKiBzb3VyY2UpIHsKK3ZvaWQgQVBJX0VOVFJZKGdsR2V0U2hhZGVyU291cmNlKShHTHVpbnQgc2hhZGVyLCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkqIGxlbmd0aCwgR0xjaGFyKiBzb3VyY2UpIHsKICAgICBDQUxMX0dMX0FQSShnbEdldFNoYWRlclNvdXJjZSwgc2hhZGVyLCBidWZzaXplLCBsZW5ndGgsIHNvdXJjZSk7CiB9CiBjb25zdCBHTHVieXRlKiBBUElfRU5UUlkoZ2xHZXRTdHJpbmcpKEdMZW51bSBuYW1lKSB7CkBAIC0yMjYsNyArMjI2LDcgQEAKIHZvaWQgQVBJX0VOVFJZKGdsR2V0VW5pZm9ybWl2KShHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdMaW50KiBwYXJhbXMpIHsKICAgICBDQUxMX0dMX0FQSShnbEdldFVuaWZvcm1pdiwgcHJvZ3JhbSwgbG9jYXRpb24sIHBhcmFtcyk7CiB9Ci1pbnQgQVBJX0VOVFJZKGdsR2V0VW5pZm9ybUxvY2F0aW9uKShHTHVpbnQgcHJvZ3JhbSwgY29uc3QgY2hhciogbmFtZSkgeworaW50IEFQSV9FTlRSWShnbEdldFVuaWZvcm1Mb2NhdGlvbikoR0x1aW50IHByb2dyYW0sIGNvbnN0IEdMY2hhciogbmFtZSkgewogICAgIENBTExfR0xfQVBJX1JFVFVSTihnbEdldFVuaWZvcm1Mb2NhdGlvbiwgcHJvZ3JhbSwgbmFtZSk7CiB9CiB2b2lkIEFQSV9FTlRSWShnbEdldFZlcnRleEF0dHJpYmZ2KShHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCogcGFyYW1zKSB7CkBAIC0yMzUsNyArMjM1LDcgQEAKIHZvaWQgQVBJX0VOVFJZKGdsR2V0VmVydGV4QXR0cmliaXYpKEdMdWludCBpbmRleCwgR0xlbnVtIHBuYW1lLCBHTGludCogcGFyYW1zKSB7CiAgICAgQ0FMTF9HTF9BUEkoZ2xHZXRWZXJ0ZXhBdHRyaWJpdiwgaW5kZXgsIHBuYW1lLCBwYXJhbXMpOwogfQotdm9pZCBBUElfRU5UUlkoZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydikoR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIHZvaWQqKiBwb2ludGVyKSB7Cit2b2lkIEFQSV9FTlRSWShnbEdldFZlcnRleEF0dHJpYlBvaW50ZXJ2KShHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0x2b2lkKiogcG9pbnRlcikgewogICAgIENBTExfR0xfQVBJKGdsR2V0VmVydGV4QXR0cmliUG9pbnRlcnYsIGluZGV4LCBwbmFtZSwgcG9pbnRlcik7CiB9CiB2b2lkIEFQSV9FTlRSWShnbEhpbnQpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBtb2RlKSB7CkBAIC0yNzQsNyArMjc0LDcgQEAKIHZvaWQgQVBJX0VOVFJZKGdsUG9seWdvbk9mZnNldCkoR0xmbG9hdCBmYWN0b3IsIEdMZmxvYXQgdW5pdHMpIHsKICAgICBDQUxMX0dMX0FQSShnbFBvbHlnb25PZmZzZXQsIGZhY3RvciwgdW5pdHMpOwogfQotdm9pZCBBUElfRU5UUlkoZ2xSZWFkUGl4ZWxzKShHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIHZvaWQqIHBpeGVscykgewordm9pZCBBUElfRU5UUlkoZ2xSZWFkUGl4ZWxzKShHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMdm9pZCogcGl4ZWxzKSB7CiAgICAgQ0FMTF9HTF9BUEkoZ2xSZWFkUGl4ZWxzLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7CiB9CiB2b2lkIEFQSV9FTlRSWShnbFJlbGVhc2VTaGFkZXJDb21waWxlcikodm9pZCkgewpAQCAtMjg5LDEwICsyODksMTAgQEAKIHZvaWQgQVBJX0VOVFJZKGdsU2Npc3NvcikoR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpIHsKICAgICBDQUxMX0dMX0FQSShnbFNjaXNzb3IsIHgsIHksIHdpZHRoLCBoZWlnaHQpOwogfQotdm9pZCBBUElfRU5UUlkoZ2xTaGFkZXJCaW5hcnkpKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50KiBzaGFkZXJzLCBHTGVudW0gYmluYXJ5Zm9ybWF0LCBjb25zdCB2b2lkKiBiaW5hcnksIEdMc2l6ZWkgbGVuZ3RoKSB7Cit2b2lkIEFQSV9FTlRSWShnbFNoYWRlckJpbmFyeSkoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQqIHNoYWRlcnMsIEdMZW51bSBiaW5hcnlmb3JtYXQsIGNvbnN0IEdMdm9pZCogYmluYXJ5LCBHTHNpemVpIGxlbmd0aCkgewogICAgIENBTExfR0xfQVBJKGdsU2hhZGVyQmluYXJ5LCBuLCBzaGFkZXJzLCBiaW5hcnlmb3JtYXQsIGJpbmFyeSwgbGVuZ3RoKTsKIH0KLXZvaWQgQVBJX0VOVFJZKGdsU2hhZGVyU291cmNlKShHTHVpbnQgc2hhZGVyLCBHTHNpemVpIGNvdW50LCBjb25zdCBjaGFyKiogc3RyaW5nLCBjb25zdCBHTGludCogbGVuZ3RoKSB7Cit2b2lkIEFQSV9FTlRSWShnbFNoYWRlclNvdXJjZSkoR0x1aW50IHNoYWRlciwgR0xzaXplaSBjb3VudCwgY29uc3QgR0xjaGFyKiogc3RyaW5nLCBjb25zdCBHTGludCogbGVuZ3RoKSB7CiAgICAgQ0FMTF9HTF9BUEkoZ2xTaGFkZXJTb3VyY2UsIHNoYWRlciwgY291bnQsIHN0cmluZywgbGVuZ3RoKTsKIH0KIHZvaWQgQVBJX0VOVFJZKGdsU3RlbmNpbEZ1bmMpKEdMZW51bSBmdW5jLCBHTGludCByZWYsIEdMdWludCBtYXNrKSB7CkBAIC0zMTMsNyArMzEzLDcgQEAKIHZvaWQgQVBJX0VOVFJZKGdsU3RlbmNpbE9wU2VwYXJhdGUpKEdMZW51bSBmYWNlLCBHTGVudW0gZmFpbCwgR0xlbnVtIHpmYWlsLCBHTGVudW0genBhc3MpIHsKICAgICBDQUxMX0dMX0FQSShnbFN0ZW5jaWxPcFNlcGFyYXRlLCBmYWNlLCBmYWlsLCB6ZmFpbCwgenBhc3MpOwogfQotdm9pZCBBUElfRU5UUlkoZ2xUZXhJbWFnZTJEKShHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgaW50ZXJuYWxmb3JtYXQsICBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xpbnQgYm9yZGVyLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkKiBwaXhlbHMpIHsKK3ZvaWQgQVBJX0VOVFJZKGdsVGV4SW1hZ2UyRCkoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xpbnQgYm9yZGVyLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkKiBwaXhlbHMpIHsKICAgICBDQUxMX0dMX0FQSShnbFRleEltYWdlMkQsIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBib3JkZXIsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKIH0KIHZvaWQgQVBJX0VOVFJZKGdsVGV4UGFyYW1ldGVyZikoR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKSB7CkBAIC0zMjgsNyArMzI4LDcgQEAKIHZvaWQgQVBJX0VOVFJZKGdsVGV4UGFyYW1ldGVyaXYpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xpbnQqIHBhcmFtcykgewogICAgIENBTExfR0xfQVBJKGdsVGV4UGFyYW1ldGVyaXYsIHRhcmdldCwgcG5hbWUsIHBhcmFtcyk7CiB9Ci12b2lkIEFQSV9FTlRSWShnbFRleFN1YkltYWdlMkQpKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykgewordm9pZCBBUElfRU5UUlkoZ2xUZXhTdWJJbWFnZTJEKShHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQqIHBpeGVscykgewogICAgIENBTExfR0xfQVBJKGdsVGV4U3ViSW1hZ2UyRCwgdGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMpOwogfQogdm9pZCBBUElfRU5UUlkoZ2xVbmlmb3JtMWYpKEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0IHgpIHsKQEAgLTQxOCw3ICs0MTgsNyBAQAogdm9pZCBBUElfRU5UUlkoZ2xWZXJ0ZXhBdHRyaWI0ZnYpKEdMdWludCBpbmR4LCBjb25zdCBHTGZsb2F0KiB2YWx1ZXMpIHsKICAgICBDQUxMX0dMX0FQSShnbFZlcnRleEF0dHJpYjRmdiwgaW5keCwgdmFsdWVzKTsKIH0KLXZvaWQgQVBJX0VOVFJZKGdsVmVydGV4QXR0cmliUG9pbnRlcikoR0x1aW50IGluZHgsIEdMaW50IHNpemUsIEdMZW51bSB0eXBlLCBHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IHZvaWQqIHB0cikgewordm9pZCBBUElfRU5UUlkoZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyKShHTHVpbnQgaW5keCwgR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMYm9vbGVhbiBub3JtYWxpemVkLCBHTHNpemVpIHN0cmlkZSwgY29uc3QgR0x2b2lkKiBwdHIpIHsKICAgICBDQUxMX0dMX0FQSShnbFZlcnRleEF0dHJpYlBvaW50ZXIsIGluZHgsIHNpemUsIHR5cGUsIG5vcm1hbGl6ZWQsIHN0cmlkZSwgcHRyKTsKIH0KIHZvaWQgQVBJX0VOVFJZKGdsVmlld3BvcnQpKEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KSB7CmRpZmYgLS1naXQgYS9vcGVuZ2wvbGlicy9HTEVTMi9nbDJleHRfYXBpLmluIGIvb3BlbmdsL2xpYnMvR0xFUzIvZ2wyZXh0X2FwaS5pbgppbmRleCA2ZWVlY2IzLi5lOTY1NjI1IDEwMDY0NAotLS0gYS9vcGVuZ2wvbGlicy9HTEVTMi9nbDJleHRfYXBpLmluCisrKyBiL29wZW5nbC9saWJzL0dMRVMyL2dsMmV4dF9hcGkuaW4KQEAgLTQsMTAgKzQsMTAgQEAKIHZvaWQgQVBJX0VOVFJZKF9fZ2xFR0xJbWFnZVRhcmdldFJlbmRlcmJ1ZmZlclN0b3JhZ2VPRVMpKEdMZW51bSB0YXJnZXQsIEdMZWdsSW1hZ2VPRVMgaW1hZ2UpIHsKICAgICBDQUxMX0dMX0FQSShnbEVHTEltYWdlVGFyZ2V0UmVuZGVyYnVmZmVyU3RvcmFnZU9FUywgdGFyZ2V0LCBpbWFnZSk7CiB9Ci12b2lkIEFQSV9FTlRSWShnbEdldFByb2dyYW1CaW5hcnlPRVMpKEdMdWludCBwcm9ncmFtLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xlbnVtICpiaW5hcnlGb3JtYXQsIHZvaWQgKmJpbmFyeSkgewordm9pZCBBUElfRU5UUlkoZ2xHZXRQcm9ncmFtQmluYXJ5T0VTKShHTHVpbnQgcHJvZ3JhbSwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMZW51bSAqYmluYXJ5Rm9ybWF0LCBHTHZvaWQgKmJpbmFyeSkgewogICAgIENBTExfR0xfQVBJKGdsR2V0UHJvZ3JhbUJpbmFyeU9FUywgcHJvZ3JhbSwgYnVmU2l6ZSwgbGVuZ3RoLCBiaW5hcnlGb3JtYXQsIGJpbmFyeSk7CiB9Ci12b2lkIEFQSV9FTlRSWShnbFByb2dyYW1CaW5hcnlPRVMpKEdMdWludCBwcm9ncmFtLCBHTGVudW0gYmluYXJ5Rm9ybWF0LCBjb25zdCB2b2lkICpiaW5hcnksIEdMaW50IGxlbmd0aCkgewordm9pZCBBUElfRU5UUlkoZ2xQcm9ncmFtQmluYXJ5T0VTKShHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIGJpbmFyeUZvcm1hdCwgY29uc3QgR0x2b2lkICpiaW5hcnksIEdMaW50IGxlbmd0aCkgewogICAgIENBTExfR0xfQVBJKGdsUHJvZ3JhbUJpbmFyeU9FUywgcHJvZ3JhbSwgYmluYXJ5Rm9ybWF0LCBiaW5hcnksIGxlbmd0aCk7CiB9CiB2b2lkKiBBUElfRU5UUlkoZ2xNYXBCdWZmZXJPRVMpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBhY2Nlc3MpIHsKQEAgLTE2LDQwICsxNiw1MiBAQAogR0xib29sZWFuIEFQSV9FTlRSWShnbFVubWFwQnVmZmVyT0VTKShHTGVudW0gdGFyZ2V0KSB7CiAgICAgQ0FMTF9HTF9BUElfUkVUVVJOKGdsVW5tYXBCdWZmZXJPRVMsIHRhcmdldCk7CiB9Ci12b2lkIEFQSV9FTlRSWShnbEdldEJ1ZmZlclBvaW50ZXJ2T0VTKShHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIHZvaWQqKiBwYXJhbXMpIHsKK3ZvaWQgQVBJX0VOVFJZKGdsR2V0QnVmZmVyUG9pbnRlcnZPRVMpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0x2b2lkKiogcGFyYW1zKSB7CiAgICAgQ0FMTF9HTF9BUEkoZ2xHZXRCdWZmZXJQb2ludGVydk9FUywgdGFyZ2V0LCBwbmFtZSwgcGFyYW1zKTsKIH0KLXZvaWQgQVBJX0VOVFJZKGdsVGV4SW1hZ2UzRE9FUykoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMaW50IGJvcmRlciwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykgewordm9pZCBBUElfRU5UUlkoZ2xUZXhJbWFnZTNET0VTKShHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xpbnQgYm9yZGVyLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkKiBwaXhlbHMpIHsKICAgICBDQUxMX0dMX0FQSShnbFRleEltYWdlM0RPRVMsIHRhcmdldCwgbGV2ZWwsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgYm9yZGVyLCBmb3JtYXQsIHR5cGUsIHBpeGVscyk7CiB9Ci12b2lkIEFQSV9FTlRSWShnbFRleFN1YkltYWdlM0RPRVMpKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykgewordm9pZCBBUElfRU5UUlkoZ2xUZXhTdWJJbWFnZTNET0VTKShHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgem9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQqIHBpeGVscykgewogICAgIENBTExfR0xfQVBJKGdsVGV4U3ViSW1hZ2UzRE9FUywgdGFyZ2V0LCBsZXZlbCwgeG9mZnNldCwgeW9mZnNldCwgem9mZnNldCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGZvcm1hdCwgdHlwZSwgcGl4ZWxzKTsKIH0KIHZvaWQgQVBJX0VOVFJZKGdsQ29weVRleFN1YkltYWdlM0RPRVMpKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkgewogICAgIENBTExfR0xfQVBJKGdsQ29weVRleFN1YkltYWdlM0RPRVMsIHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHgsIHksIHdpZHRoLCBoZWlnaHQpOwogfQotdm9pZCBBUElfRU5UUlkoZ2xDb21wcmVzc2VkVGV4SW1hZ2UzRE9FUykoR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMaW50IGJvcmRlciwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpIHsKK3ZvaWQgQVBJX0VOVFJZKGdsQ29tcHJlc3NlZFRleEltYWdlM0RPRVMpKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBHTGludCBib3JkZXIsIEdMc2l6ZWkgaW1hZ2VTaXplLCBjb25zdCBHTHZvaWQqIGRhdGEpIHsKICAgICBDQUxMX0dMX0FQSShnbENvbXByZXNzZWRUZXhJbWFnZTNET0VTLCB0YXJnZXQsIGxldmVsLCBpbnRlcm5hbGZvcm1hdCwgd2lkdGgsIGhlaWdodCwgZGVwdGgsIGJvcmRlciwgaW1hZ2VTaXplLCBkYXRhKTsKIH0KLXZvaWQgQVBJX0VOVFJZKGdsQ29tcHJlc3NlZFRleFN1YkltYWdlM0RPRVMpKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpIHsKK3ZvaWQgQVBJX0VOVFJZKGdsQ29tcHJlc3NlZFRleFN1YkltYWdlM0RPRVMpKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IEdMdm9pZCogZGF0YSkgewogICAgIENBTExfR0xfQVBJKGdsQ29tcHJlc3NlZFRleFN1YkltYWdlM0RPRVMsIHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIGltYWdlU2l6ZSwgZGF0YSk7CiB9CiB2b2lkIEFQSV9FTlRSWShnbEZyYW1lYnVmZmVyVGV4dHVyZTNET0VTKShHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNobWVudCwgR0xlbnVtIHRleHRhcmdldCwgR0x1aW50IHRleHR1cmUsIEdMaW50IGxldmVsLCBHTGludCB6b2Zmc2V0KSB7CiAgICAgQ0FMTF9HTF9BUEkoZ2xGcmFtZWJ1ZmZlclRleHR1cmUzRE9FUywgdGFyZ2V0LCBhdHRhY2htZW50LCB0ZXh0YXJnZXQsIHRleHR1cmUsIGxldmVsLCB6b2Zmc2V0KTsKIH0KK3ZvaWQgQVBJX0VOVFJZKGdsQmluZFZlcnRleEFycmF5T0VTKShHTHVpbnQgYXJyYXkpIHsKKyAgICBDQUxMX0dMX0FQSShnbEJpbmRWZXJ0ZXhBcnJheU9FUywgYXJyYXkpOworfQordm9pZCBBUElfRU5UUlkoZ2xEZWxldGVWZXJ0ZXhBcnJheXNPRVMpKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICphcnJheXMpIHsKKyAgICBDQUxMX0dMX0FQSShnbERlbGV0ZVZlcnRleEFycmF5c09FUywgbiwgYXJyYXlzKTsKK30KK3ZvaWQgQVBJX0VOVFJZKGdsR2VuVmVydGV4QXJyYXlzT0VTKShHTHNpemVpIG4sIEdMdWludCAqYXJyYXlzKSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xHZW5WZXJ0ZXhBcnJheXNPRVMsIG4sIGFycmF5cyk7Cit9CitHTGJvb2xlYW4gQVBJX0VOVFJZKGdsSXNWZXJ0ZXhBcnJheU9FUykoR0x1aW50IGFycmF5KSB7CisgICAgQ0FMTF9HTF9BUElfUkVUVVJOKGdsSXNWZXJ0ZXhBcnJheU9FUywgYXJyYXkpOworfQogdm9pZCBBUElfRU5UUlkoZ2xHZXRQZXJmTW9uaXRvckdyb3Vwc0FNRCkoR0xpbnQgKm51bUdyb3VwcywgR0xzaXplaSBncm91cHNTaXplLCBHTHVpbnQgKmdyb3VwcykgewogICAgIENBTExfR0xfQVBJKGdsR2V0UGVyZk1vbml0b3JHcm91cHNBTUQsIG51bUdyb3VwcywgZ3JvdXBzU2l6ZSwgZ3JvdXBzKTsKIH0KIHZvaWQgQVBJX0VOVFJZKGdsR2V0UGVyZk1vbml0b3JDb3VudGVyc0FNRCkoR0x1aW50IGdyb3VwLCBHTGludCAqbnVtQ291bnRlcnMsIEdMaW50ICptYXhBY3RpdmVDb3VudGVycywgR0xzaXplaSBjb3VudGVyU2l6ZSwgR0x1aW50ICpjb3VudGVycykgewogICAgIENBTExfR0xfQVBJKGdsR2V0UGVyZk1vbml0b3JDb3VudGVyc0FNRCwgZ3JvdXAsIG51bUNvdW50ZXJzLCBtYXhBY3RpdmVDb3VudGVycywgY291bnRlclNpemUsIGNvdW50ZXJzKTsKIH0KLXZvaWQgQVBJX0VOVFJZKGdsR2V0UGVyZk1vbml0b3JHcm91cFN0cmluZ0FNRCkoR0x1aW50IGdyb3VwLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgY2hhciAqZ3JvdXBTdHJpbmcpIHsKK3ZvaWQgQVBJX0VOVFJZKGdsR2V0UGVyZk1vbml0b3JHcm91cFN0cmluZ0FNRCkoR0x1aW50IGdyb3VwLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xjaGFyICpncm91cFN0cmluZykgewogICAgIENBTExfR0xfQVBJKGdsR2V0UGVyZk1vbml0b3JHcm91cFN0cmluZ0FNRCwgZ3JvdXAsIGJ1ZlNpemUsIGxlbmd0aCwgZ3JvdXBTdHJpbmcpOwogfQotdm9pZCBBUElfRU5UUlkoZ2xHZXRQZXJmTW9uaXRvckNvdW50ZXJTdHJpbmdBTUQpKEdMdWludCBncm91cCwgR0x1aW50IGNvdW50ZXIsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBjaGFyICpjb3VudGVyU3RyaW5nKSB7Cit2b2lkIEFQSV9FTlRSWShnbEdldFBlcmZNb25pdG9yQ291bnRlclN0cmluZ0FNRCkoR0x1aW50IGdyb3VwLCBHTHVpbnQgY291bnRlciwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMY2hhciAqY291bnRlclN0cmluZykgewogICAgIENBTExfR0xfQVBJKGdsR2V0UGVyZk1vbml0b3JDb3VudGVyU3RyaW5nQU1ELCBncm91cCwgY291bnRlciwgYnVmU2l6ZSwgbGVuZ3RoLCBjb3VudGVyU3RyaW5nKTsKIH0KLXZvaWQgQVBJX0VOVFJZKGdsR2V0UGVyZk1vbml0b3JDb3VudGVySW5mb0FNRCkoR0x1aW50IGdyb3VwLCBHTHVpbnQgY291bnRlciwgR0xlbnVtIHBuYW1lLCB2b2lkICpkYXRhKSB7Cit2b2lkIEFQSV9FTlRSWShnbEdldFBlcmZNb25pdG9yQ291bnRlckluZm9BTUQpKEdMdWludCBncm91cCwgR0x1aW50IGNvdW50ZXIsIEdMZW51bSBwbmFtZSwgR0x2b2lkICpkYXRhKSB7CiAgICAgQ0FMTF9HTF9BUEkoZ2xHZXRQZXJmTW9uaXRvckNvdW50ZXJJbmZvQU1ELCBncm91cCwgY291bnRlciwgcG5hbWUsIGRhdGEpOwogfQogdm9pZCBBUElfRU5UUlkoZ2xHZW5QZXJmTW9uaXRvcnNBTUQpKEdMc2l6ZWkgbiwgR0x1aW50ICptb25pdG9ycykgewpAQCAtNzAsNiArODIsMjEgQEAKIHZvaWQgQVBJX0VOVFJZKGdsR2V0UGVyZk1vbml0b3JDb3VudGVyRGF0YUFNRCkoR0x1aW50IG1vbml0b3IsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBkYXRhU2l6ZSwgR0x1aW50ICpkYXRhLCBHTGludCAqYnl0ZXNXcml0dGVuKSB7CiAgICAgQ0FMTF9HTF9BUEkoZ2xHZXRQZXJmTW9uaXRvckNvdW50ZXJEYXRhQU1ELCBtb25pdG9yLCBwbmFtZSwgZGF0YVNpemUsIGRhdGEsIGJ5dGVzV3JpdHRlbik7CiB9Cit2b2lkIEFQSV9FTlRSWShnbERpc2NhcmRGcmFtZWJ1ZmZlckVYVCkoR0xlbnVtIHRhcmdldCwgR0xzaXplaSBudW1BdHRhY2htZW50cywgY29uc3QgR0xlbnVtICphdHRhY2htZW50cykgeworICAgIENBTExfR0xfQVBJKGdsRGlzY2FyZEZyYW1lYnVmZmVyRVhULCB0YXJnZXQsIG51bUF0dGFjaG1lbnRzLCBhdHRhY2htZW50cyk7Cit9Cit2b2lkIEFQSV9FTlRSWShnbE11bHRpRHJhd0FycmF5c0VYVCkoR0xlbnVtIG1vZGUsIEdMaW50ICpmaXJzdCwgR0xzaXplaSAqY291bnQsIEdMc2l6ZWkgcHJpbWNvdW50KSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xNdWx0aURyYXdBcnJheXNFWFQsIG1vZGUsIGZpcnN0LCBjb3VudCwgcHJpbWNvdW50KTsKK30KK3ZvaWQgQVBJX0VOVFJZKGdsTXVsdGlEcmF3RWxlbWVudHNFWFQpKEdMZW51bSBtb2RlLCBjb25zdCBHTHNpemVpICpjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCogKmluZGljZXMsIEdMc2l6ZWkgcHJpbWNvdW50KSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xNdWx0aURyYXdFbGVtZW50c0VYVCwgbW9kZSwgY291bnQsIHR5cGUsIGluZGljZXMsIHByaW1jb3VudCk7Cit9Cit2b2lkIEFQSV9FTlRSWShnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUlNRykoR0xlbnVtIHRhcmdldCwgR0xzaXplaSBzYW1wbGVzLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVJTUcsIHRhcmdldCwgc2FtcGxlcywgaW50ZXJuYWxmb3JtYXQsIHdpZHRoLCBoZWlnaHQpOworfQordm9pZCBBUElfRU5UUlkoZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRE11bHRpc2FtcGxlSU1HKShHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNobWVudCwgR0xlbnVtIHRleHRhcmdldCwgR0x1aW50IHRleHR1cmUsIEdMaW50IGxldmVsLCBHTHNpemVpIHNhbXBsZXMpIHsKKyAgICBDQUxMX0dMX0FQSShnbEZyYW1lYnVmZmVyVGV4dHVyZTJETXVsdGlzYW1wbGVJTUcsIHRhcmdldCwgYXR0YWNobWVudCwgdGV4dGFyZ2V0LCB0ZXh0dXJlLCBsZXZlbCwgc2FtcGxlcyk7Cit9CiB2b2lkIEFQSV9FTlRSWShnbERlbGV0ZUZlbmNlc05WKShHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqZmVuY2VzKSB7CiAgICAgQ0FMTF9HTF9BUEkoZ2xEZWxldGVGZW5jZXNOViwgbiwgZmVuY2VzKTsKIH0KQEAgLTkxLDEwICsxMTgsMTYgQEAKIHZvaWQgQVBJX0VOVFJZKGdsU2V0RmVuY2VOVikoR0x1aW50IGZlbmNlLCBHTGVudW0gY29uZGl0aW9uKSB7CiAgICAgQ0FMTF9HTF9BUEkoZ2xTZXRGZW5jZU5WLCBmZW5jZSwgY29uZGl0aW9uKTsKIH0KK3ZvaWQgQVBJX0VOVFJZKGdsQ292ZXJhZ2VNYXNrTlYpKEdMYm9vbGVhbiBtYXNrKSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xDb3ZlcmFnZU1hc2tOViwgbWFzayk7Cit9Cit2b2lkIEFQSV9FTlRSWShnbENvdmVyYWdlT3BlcmF0aW9uTlYpKEdMZW51bSBvcGVyYXRpb24pIHsKKyAgICBDQUxMX0dMX0FQSShnbENvdmVyYWdlT3BlcmF0aW9uTlYsIG9wZXJhdGlvbik7Cit9CiB2b2lkIEFQSV9FTlRSWShnbEdldERyaXZlckNvbnRyb2xzUUNPTSkoR0xpbnQgKm51bSwgR0xzaXplaSBzaXplLCBHTHVpbnQgKmRyaXZlckNvbnRyb2xzKSB7CiAgICAgQ0FMTF9HTF9BUEkoZ2xHZXREcml2ZXJDb250cm9sc1FDT00sIG51bSwgc2l6ZSwgZHJpdmVyQ29udHJvbHMpOwogfQotdm9pZCBBUElfRU5UUlkoZ2xHZXREcml2ZXJDb250cm9sU3RyaW5nUUNPTSkoR0x1aW50IGRyaXZlckNvbnRyb2wsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBjaGFyICpkcml2ZXJDb250cm9sU3RyaW5nKSB7Cit2b2lkIEFQSV9FTlRSWShnbEdldERyaXZlckNvbnRyb2xTdHJpbmdRQ09NKShHTHVpbnQgZHJpdmVyQ29udHJvbCwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMY2hhciAqZHJpdmVyQ29udHJvbFN0cmluZykgewogICAgIENBTExfR0xfQVBJKGdsR2V0RHJpdmVyQ29udHJvbFN0cmluZ1FDT00sIGRyaXZlckNvbnRyb2wsIGJ1ZlNpemUsIGxlbmd0aCwgZHJpdmVyQ29udHJvbFN0cmluZyk7CiB9CiB2b2lkIEFQSV9FTlRSWShnbEVuYWJsZURyaXZlckNvbnRyb2xRQ09NKShHTHVpbnQgZHJpdmVyQ29udHJvbCkgewpAQCAtMTAzLDMgKzEzNiw0NSBAQAogdm9pZCBBUElfRU5UUlkoZ2xEaXNhYmxlRHJpdmVyQ29udHJvbFFDT00pKEdMdWludCBkcml2ZXJDb250cm9sKSB7CiAgICAgQ0FMTF9HTF9BUEkoZ2xEaXNhYmxlRHJpdmVyQ29udHJvbFFDT00sIGRyaXZlckNvbnRyb2wpOwogfQordm9pZCBBUElfRU5UUlkoZ2xFeHRHZXRUZXh0dXJlc1FDT00pKEdMdWludCAqdGV4dHVyZXMsIEdMaW50IG1heFRleHR1cmVzLCBHTGludCAqbnVtVGV4dHVyZXMpIHsKKyAgICBDQUxMX0dMX0FQSShnbEV4dEdldFRleHR1cmVzUUNPTSwgdGV4dHVyZXMsIG1heFRleHR1cmVzLCBudW1UZXh0dXJlcyk7Cit9Cit2b2lkIEFQSV9FTlRSWShnbEV4dEdldEJ1ZmZlcnNRQ09NKShHTHVpbnQgKmJ1ZmZlcnMsIEdMaW50IG1heEJ1ZmZlcnMsIEdMaW50ICpudW1CdWZmZXJzKSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xFeHRHZXRCdWZmZXJzUUNPTSwgYnVmZmVycywgbWF4QnVmZmVycywgbnVtQnVmZmVycyk7Cit9Cit2b2lkIEFQSV9FTlRSWShnbEV4dEdldFJlbmRlcmJ1ZmZlcnNRQ09NKShHTHVpbnQgKnJlbmRlcmJ1ZmZlcnMsIEdMaW50IG1heFJlbmRlcmJ1ZmZlcnMsIEdMaW50ICpudW1SZW5kZXJidWZmZXJzKSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xFeHRHZXRSZW5kZXJidWZmZXJzUUNPTSwgcmVuZGVyYnVmZmVycywgbWF4UmVuZGVyYnVmZmVycywgbnVtUmVuZGVyYnVmZmVycyk7Cit9Cit2b2lkIEFQSV9FTlRSWShnbEV4dEdldEZyYW1lYnVmZmVyc1FDT00pKEdMdWludCAqZnJhbWVidWZmZXJzLCBHTGludCBtYXhGcmFtZWJ1ZmZlcnMsIEdMaW50ICpudW1GcmFtZWJ1ZmZlcnMpIHsKKyAgICBDQUxMX0dMX0FQSShnbEV4dEdldEZyYW1lYnVmZmVyc1FDT00sIGZyYW1lYnVmZmVycywgbWF4RnJhbWVidWZmZXJzLCBudW1GcmFtZWJ1ZmZlcnMpOworfQordm9pZCBBUElfRU5UUlkoZ2xFeHRHZXRUZXhMZXZlbFBhcmFtZXRlcml2UUNPTSkoR0x1aW50IHRleHR1cmUsIEdMZW51bSBmYWNlLCBHTGludCBsZXZlbCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xFeHRHZXRUZXhMZXZlbFBhcmFtZXRlcml2UUNPTSwgdGV4dHVyZSwgZmFjZSwgbGV2ZWwsIHBuYW1lLCBwYXJhbXMpOworfQordm9pZCBBUElfRU5UUlkoZ2xFeHRUZXhPYmplY3RTdGF0ZU92ZXJyaWRlaVFDT00pKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pIHsKKyAgICBDQUxMX0dMX0FQSShnbEV4dFRleE9iamVjdFN0YXRlT3ZlcnJpZGVpUUNPTSwgdGFyZ2V0LCBwbmFtZSwgcGFyYW0pOworfQordm9pZCBBUElfRU5UUlkoZ2xFeHRHZXRUZXhTdWJJbWFnZVFDT00pKEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMdm9pZCAqdGV4ZWxzKSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xFeHRHZXRUZXhTdWJJbWFnZVFDT00sIHRhcmdldCwgbGV2ZWwsIHhvZmZzZXQsIHlvZmZzZXQsIHpvZmZzZXQsIHdpZHRoLCBoZWlnaHQsIGRlcHRoLCBmb3JtYXQsIHR5cGUsIHRleGVscyk7Cit9Cit2b2lkIEFQSV9FTlRSWShnbEV4dEdldEJ1ZmZlclBvaW50ZXJ2UUNPTSkoR0xlbnVtIHRhcmdldCwgR0x2b2lkICoqcGFyYW1zKSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xFeHRHZXRCdWZmZXJQb2ludGVydlFDT00sIHRhcmdldCwgcGFyYW1zKTsKK30KK3ZvaWQgQVBJX0VOVFJZKGdsRXh0R2V0U2hhZGVyc1FDT00pKEdMdWludCAqc2hhZGVycywgR0xpbnQgbWF4U2hhZGVycywgR0xpbnQgKm51bVNoYWRlcnMpIHsKKyAgICBDQUxMX0dMX0FQSShnbEV4dEdldFNoYWRlcnNRQ09NLCBzaGFkZXJzLCBtYXhTaGFkZXJzLCBudW1TaGFkZXJzKTsKK30KK3ZvaWQgQVBJX0VOVFJZKGdsRXh0R2V0UHJvZ3JhbXNRQ09NKShHTHVpbnQgKnByb2dyYW1zLCBHTGludCBtYXhQcm9ncmFtcywgR0xpbnQgKm51bVByb2dyYW1zKSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xFeHRHZXRQcm9ncmFtc1FDT00sIHByb2dyYW1zLCBtYXhQcm9ncmFtcywgbnVtUHJvZ3JhbXMpOworfQorR0xib29sZWFuIEFQSV9FTlRSWShnbEV4dElzUHJvZ3JhbUJpbmFyeVFDT00pKEdMdWludCBwcm9ncmFtKSB7CisgICAgQ0FMTF9HTF9BUElfUkVUVVJOKGdsRXh0SXNQcm9ncmFtQmluYXJ5UUNPTSwgcHJvZ3JhbSk7Cit9Cit2b2lkIEFQSV9FTlRSWShnbEV4dEdldFByb2dyYW1CaW5hcnlTb3VyY2VRQ09NKShHTHVpbnQgcHJvZ3JhbSwgR0xlbnVtIHNoYWRlcnR5cGUsIEdMY2hhciAqc291cmNlLCBHTGludCAqbGVuZ3RoKSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xFeHRHZXRQcm9ncmFtQmluYXJ5U291cmNlUUNPTSwgcHJvZ3JhbSwgc2hhZGVydHlwZSwgc291cmNlLCBsZW5ndGgpOworfQordm9pZCBBUElfRU5UUlkoZ2xTdGFydFRpbGluZ1FDT00pKEdMdWludCB4LCBHTHVpbnQgeSwgR0x1aW50IHdpZHRoLCBHTHVpbnQgaGVpZ2h0LCBHTGJpdGZpZWxkIHByZXNlcnZlTWFzaykgeworICAgIENBTExfR0xfQVBJKGdsU3RhcnRUaWxpbmdRQ09NLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBwcmVzZXJ2ZU1hc2spOworfQordm9pZCBBUElfRU5UUlkoZ2xFbmRUaWxpbmdRQ09NKShHTGJpdGZpZWxkIHByZXNlcnZlTWFzaykgeworICAgIENBTExfR0xfQVBJKGdsRW5kVGlsaW5nUUNPTSwgcHJlc2VydmVNYXNrKTsKK30KZGlmZiAtLWdpdCBhL29wZW5nbC9saWJzL0dMRVNfQ00vZ2xfYXBpLmluIGIvb3BlbmdsL2xpYnMvR0xFU19DTS9nbF9hcGkuaW4KaW5kZXggNTQzN2Q0Ny4uN2YyMGM0ZiAxMDA2NDQKLS0tIGEvb3BlbmdsL2xpYnMvR0xFU19DTS9nbF9hcGkuaW4KKysrIGIvb3BlbmdsL2xpYnMvR0xFU19DTS9nbF9hcGkuaW4KQEAgLTI1OSw3ICsyNTksNyBAQAogdm9pZCBBUElfRU5UUlkoZ2xHZXRNYXRlcmlhbHh2KShHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBHTGZpeGVkICpwYXJhbXMpIHsKICAgICBDQUxMX0dMX0FQSShnbEdldE1hdGVyaWFseHYsIGZhY2UsIHBuYW1lLCBwYXJhbXMpOwogfQotdm9pZCBBUElfRU5UUlkoZ2xHZXRQb2ludGVydikoR0xlbnVtIHBuYW1lLCB2b2lkICoqcGFyYW1zKSB7Cit2b2lkIEFQSV9FTlRSWShnbEdldFBvaW50ZXJ2KShHTGVudW0gcG5hbWUsIEdMdm9pZCAqKnBhcmFtcykgewogICAgIENBTExfR0xfQVBJKGdsR2V0UG9pbnRlcnYsIHBuYW1lLCBwYXJhbXMpOwogfQogY29uc3QgR0x1Ynl0ZSAqIEFQSV9FTlRSWShnbEdldFN0cmluZykoR0xlbnVtIG5hbWUpIHsKZGlmZiAtLWdpdCBhL29wZW5nbC9saWJzL0dMRVNfQ00vZ2xleHRfYXBpLmluIGIvb3BlbmdsL2xpYnMvR0xFU19DTS9nbGV4dF9hcGkuaW4KaW5kZXggMmM4NjQ4ZS4uNTM5M2ZhNiAxMDA2NDQKLS0tIGEvb3BlbmdsL2xpYnMvR0xFU19DTS9nbGV4dF9hcGkuaW4KKysrIGIvb3BlbmdsL2xpYnMvR0xFU19DTS9nbGV4dF9hcGkuaW4KQEAgLTIwNSw3ICsyMDUsNyBAQAogR0xib29sZWFuIEFQSV9FTlRSWShnbFVubWFwQnVmZmVyT0VTKShHTGVudW0gdGFyZ2V0KSB7CiAgICAgQ0FMTF9HTF9BUElfUkVUVVJOKGdsVW5tYXBCdWZmZXJPRVMsIHRhcmdldCk7CiB9Ci12b2lkIEFQSV9FTlRSWShnbEdldEJ1ZmZlclBvaW50ZXJ2T0VTKShHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIHZvaWQqKiBwYXJhbXMpIHsKK3ZvaWQgQVBJX0VOVFJZKGdsR2V0QnVmZmVyUG9pbnRlcnZPRVMpKEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0x2b2lkICoqIHBhcmFtcykgewogICAgIENBTExfR0xfQVBJKGdsR2V0QnVmZmVyUG9pbnRlcnZPRVMsIHRhcmdldCwgcG5hbWUsIHBhcmFtcyk7CiB9CiB2b2lkIEFQSV9FTlRSWShnbEN1cnJlbnRQYWxldHRlTWF0cml4T0VTKShHTHVpbnQgbWF0cml4cGFsZXR0ZWluZGV4KSB7CkBAIC0yNjgsMyArMjY4LDExMSBAQAogdm9pZCBBUElfRU5UUlkoZ2xHZXRUZXhHZW54dk9FUykoR0xlbnVtIGNvb3JkLCBHTGVudW0gcG5hbWUsIEdMZml4ZWQgKnBhcmFtcykgewogICAgIENBTExfR0xfQVBJKGdsR2V0VGV4R2VueHZPRVMsIGNvb3JkLCBwbmFtZSwgcGFyYW1zKTsKIH0KK3ZvaWQgQVBJX0VOVFJZKGdsQmluZFZlcnRleEFycmF5T0VTKShHTHVpbnQgYXJyYXkpIHsKKyAgICBDQUxMX0dMX0FQSShnbEJpbmRWZXJ0ZXhBcnJheU9FUywgYXJyYXkpOworfQordm9pZCBBUElfRU5UUlkoZ2xEZWxldGVWZXJ0ZXhBcnJheXNPRVMpKEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICphcnJheXMpIHsKKyAgICBDQUxMX0dMX0FQSShnbERlbGV0ZVZlcnRleEFycmF5c09FUywgbiwgYXJyYXlzKTsKK30KK3ZvaWQgQVBJX0VOVFJZKGdsR2VuVmVydGV4QXJyYXlzT0VTKShHTHNpemVpIG4sIEdMdWludCAqYXJyYXlzKSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xHZW5WZXJ0ZXhBcnJheXNPRVMsIG4sIGFycmF5cyk7Cit9CitHTGJvb2xlYW4gQVBJX0VOVFJZKGdsSXNWZXJ0ZXhBcnJheU9FUykoR0x1aW50IGFycmF5KSB7CisgICAgQ0FMTF9HTF9BUElfUkVUVVJOKGdsSXNWZXJ0ZXhBcnJheU9FUywgYXJyYXkpOworfQordm9pZCBBUElfRU5UUlkoZ2xEaXNjYXJkRnJhbWVidWZmZXJFWFQpKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgbnVtQXR0YWNobWVudHMsIGNvbnN0IEdMZW51bSAqYXR0YWNobWVudHMpIHsKKyAgICBDQUxMX0dMX0FQSShnbERpc2NhcmRGcmFtZWJ1ZmZlckVYVCwgdGFyZ2V0LCBudW1BdHRhY2htZW50cywgYXR0YWNobWVudHMpOworfQordm9pZCBBUElfRU5UUlkoZ2xNdWx0aURyYXdBcnJheXNFWFQpKEdMZW51bSBtb2RlLCBHTGludCAqZmlyc3QsIEdMc2l6ZWkgKmNvdW50LCBHTHNpemVpIHByaW1jb3VudCkgeworICAgIENBTExfR0xfQVBJKGdsTXVsdGlEcmF3QXJyYXlzRVhULCBtb2RlLCBmaXJzdCwgY291bnQsIHByaW1jb3VudCk7Cit9Cit2b2lkIEFQSV9FTlRSWShnbE11bHRpRHJhd0VsZW1lbnRzRVhUKShHTGVudW0gbW9kZSwgY29uc3QgR0xzaXplaSAqY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQqICppbmRpY2VzLCBHTHNpemVpIHByaW1jb3VudCkgeworICAgIENBTExfR0xfQVBJKGdsTXVsdGlEcmF3RWxlbWVudHNFWFQsIG1vZGUsIGNvdW50LCB0eXBlLCBpbmRpY2VzLCBwcmltY291bnQpOworfQordm9pZCBBUElfRU5UUlkoZ2xDbGlwUGxhbmVmSU1HKShHTGVudW0gcCwgY29uc3QgR0xmbG9hdCAqZXFuKSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xDbGlwUGxhbmVmSU1HLCBwLCBlcW4pOworfQordm9pZCBBUElfRU5UUlkoZ2xDbGlwUGxhbmV4SU1HKShHTGVudW0gcCwgY29uc3QgR0xmaXhlZCAqZXFuKSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xDbGlwUGxhbmV4SU1HLCBwLCBlcW4pOworfQordm9pZCBBUElfRU5UUlkoZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVJTUcpKEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgc2FtcGxlcywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkgeworICAgIENBTExfR0xfQVBJKGdsUmVuZGVyYnVmZmVyU3RvcmFnZU11bHRpc2FtcGxlSU1HLCB0YXJnZXQsIHNhbXBsZXMsIGludGVybmFsZm9ybWF0LCB3aWR0aCwgaGVpZ2h0KTsKK30KK3ZvaWQgQVBJX0VOVFJZKGdsRnJhbWVidWZmZXJUZXh0dXJlMkRNdWx0aXNhbXBsZUlNRykoR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dGFjaG1lbnQsIEdMZW51bSB0ZXh0YXJnZXQsIEdMdWludCB0ZXh0dXJlLCBHTGludCBsZXZlbCwgR0xzaXplaSBzYW1wbGVzKSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRE11bHRpc2FtcGxlSU1HLCB0YXJnZXQsIGF0dGFjaG1lbnQsIHRleHRhcmdldCwgdGV4dHVyZSwgbGV2ZWwsIHNhbXBsZXMpOworfQordm9pZCBBUElfRU5UUlkoZ2xEZWxldGVGZW5jZXNOVikoR0xzaXplaSBuLCBjb25zdCBHTHVpbnQgKmZlbmNlcykgeworICAgIENBTExfR0xfQVBJKGdsRGVsZXRlRmVuY2VzTlYsIG4sIGZlbmNlcyk7Cit9Cit2b2lkIEFQSV9FTlRSWShnbEdlbkZlbmNlc05WKShHTHNpemVpIG4sIEdMdWludCAqZmVuY2VzKSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xHZW5GZW5jZXNOViwgbiwgZmVuY2VzKTsKK30KK0dMYm9vbGVhbiBBUElfRU5UUlkoZ2xJc0ZlbmNlTlYpKEdMdWludCBmZW5jZSkgeworICAgIENBTExfR0xfQVBJX1JFVFVSTihnbElzRmVuY2VOViwgZmVuY2UpOworfQorR0xib29sZWFuIEFQSV9FTlRSWShnbFRlc3RGZW5jZU5WKShHTHVpbnQgZmVuY2UpIHsKKyAgICBDQUxMX0dMX0FQSV9SRVRVUk4oZ2xUZXN0RmVuY2VOViwgZmVuY2UpOworfQordm9pZCBBUElfRU5UUlkoZ2xHZXRGZW5jZWl2TlYpKEdMdWludCBmZW5jZSwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xHZXRGZW5jZWl2TlYsIGZlbmNlLCBwbmFtZSwgcGFyYW1zKTsKK30KK3ZvaWQgQVBJX0VOVFJZKGdsRmluaXNoRmVuY2VOVikoR0x1aW50IGZlbmNlKSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xGaW5pc2hGZW5jZU5WLCBmZW5jZSk7Cit9Cit2b2lkIEFQSV9FTlRSWShnbFNldEZlbmNlTlYpKEdMdWludCBmZW5jZSwgR0xlbnVtIGNvbmRpdGlvbikgeworICAgIENBTExfR0xfQVBJKGdsU2V0RmVuY2VOViwgZmVuY2UsIGNvbmRpdGlvbik7Cit9Cit2b2lkIEFQSV9FTlRSWShnbEdldERyaXZlckNvbnRyb2xzUUNPTSkoR0xpbnQgKm51bSwgR0xzaXplaSBzaXplLCBHTHVpbnQgKmRyaXZlckNvbnRyb2xzKSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xHZXREcml2ZXJDb250cm9sc1FDT00sIG51bSwgc2l6ZSwgZHJpdmVyQ29udHJvbHMpOworfQordm9pZCBBUElfRU5UUlkoZ2xHZXREcml2ZXJDb250cm9sU3RyaW5nUUNPTSkoR0x1aW50IGRyaXZlckNvbnRyb2wsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGNoYXIgKmRyaXZlckNvbnRyb2xTdHJpbmcpIHsKKyAgICBDQUxMX0dMX0FQSShnbEdldERyaXZlckNvbnRyb2xTdHJpbmdRQ09NLCBkcml2ZXJDb250cm9sLCBidWZTaXplLCBsZW5ndGgsIGRyaXZlckNvbnRyb2xTdHJpbmcpOworfQordm9pZCBBUElfRU5UUlkoZ2xFbmFibGVEcml2ZXJDb250cm9sUUNPTSkoR0x1aW50IGRyaXZlckNvbnRyb2wpIHsKKyAgICBDQUxMX0dMX0FQSShnbEVuYWJsZURyaXZlckNvbnRyb2xRQ09NLCBkcml2ZXJDb250cm9sKTsKK30KK3ZvaWQgQVBJX0VOVFJZKGdsRGlzYWJsZURyaXZlckNvbnRyb2xRQ09NKShHTHVpbnQgZHJpdmVyQ29udHJvbCkgeworICAgIENBTExfR0xfQVBJKGdsRGlzYWJsZURyaXZlckNvbnRyb2xRQ09NLCBkcml2ZXJDb250cm9sKTsKK30KK3ZvaWQgQVBJX0VOVFJZKGdsRXh0R2V0VGV4dHVyZXNRQ09NKShHTHVpbnQgKnRleHR1cmVzLCBHTGludCBtYXhUZXh0dXJlcywgR0xpbnQgKm51bVRleHR1cmVzKSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xFeHRHZXRUZXh0dXJlc1FDT00sIHRleHR1cmVzLCBtYXhUZXh0dXJlcywgbnVtVGV4dHVyZXMpOworfQordm9pZCBBUElfRU5UUlkoZ2xFeHRHZXRCdWZmZXJzUUNPTSkoR0x1aW50ICpidWZmZXJzLCBHTGludCBtYXhCdWZmZXJzLCBHTGludCAqbnVtQnVmZmVycykgeworICAgIENBTExfR0xfQVBJKGdsRXh0R2V0QnVmZmVyc1FDT00sIGJ1ZmZlcnMsIG1heEJ1ZmZlcnMsIG51bUJ1ZmZlcnMpOworfQordm9pZCBBUElfRU5UUlkoZ2xFeHRHZXRSZW5kZXJidWZmZXJzUUNPTSkoR0x1aW50ICpyZW5kZXJidWZmZXJzLCBHTGludCBtYXhSZW5kZXJidWZmZXJzLCBHTGludCAqbnVtUmVuZGVyYnVmZmVycykgeworICAgIENBTExfR0xfQVBJKGdsRXh0R2V0UmVuZGVyYnVmZmVyc1FDT00sIHJlbmRlcmJ1ZmZlcnMsIG1heFJlbmRlcmJ1ZmZlcnMsIG51bVJlbmRlcmJ1ZmZlcnMpOworfQordm9pZCBBUElfRU5UUlkoZ2xFeHRHZXRGcmFtZWJ1ZmZlcnNRQ09NKShHTHVpbnQgKmZyYW1lYnVmZmVycywgR0xpbnQgbWF4RnJhbWVidWZmZXJzLCBHTGludCAqbnVtRnJhbWVidWZmZXJzKSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xFeHRHZXRGcmFtZWJ1ZmZlcnNRQ09NLCBmcmFtZWJ1ZmZlcnMsIG1heEZyYW1lYnVmZmVycywgbnVtRnJhbWVidWZmZXJzKTsKK30KK3ZvaWQgQVBJX0VOVFJZKGdsRXh0R2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlFDT00pKEdMdWludCB0ZXh0dXJlLCBHTGVudW0gZmFjZSwgR0xpbnQgbGV2ZWwsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykgeworICAgIENBTExfR0xfQVBJKGdsRXh0R2V0VGV4TGV2ZWxQYXJhbWV0ZXJpdlFDT00sIHRleHR1cmUsIGZhY2UsIGxldmVsLCBwbmFtZSwgcGFyYW1zKTsKK30KK3ZvaWQgQVBJX0VOVFJZKGdsRXh0VGV4T2JqZWN0U3RhdGVPdmVycmlkZWlRQ09NKShHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50IHBhcmFtKSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xFeHRUZXhPYmplY3RTdGF0ZU92ZXJyaWRlaVFDT00sIHRhcmdldCwgcG5hbWUsIHBhcmFtKTsKK30KK3ZvaWQgQVBJX0VOVFJZKGdsRXh0R2V0VGV4U3ViSW1hZ2VRQ09NKShHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgem9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHZvaWQgKnRleGVscykgeworICAgIENBTExfR0xfQVBJKGdsRXh0R2V0VGV4U3ViSW1hZ2VRQ09NLCB0YXJnZXQsIGxldmVsLCB4b2Zmc2V0LCB5b2Zmc2V0LCB6b2Zmc2V0LCB3aWR0aCwgaGVpZ2h0LCBkZXB0aCwgZm9ybWF0LCB0eXBlLCB0ZXhlbHMpOworfQordm9pZCBBUElfRU5UUlkoZ2xFeHRHZXRCdWZmZXJQb2ludGVydlFDT00pKEdMZW51bSB0YXJnZXQsIEdMdm9pZCAqKnBhcmFtcykgeworICAgIENBTExfR0xfQVBJKGdsRXh0R2V0QnVmZmVyUG9pbnRlcnZRQ09NLCB0YXJnZXQsIHBhcmFtcyk7Cit9Cit2b2lkIEFQSV9FTlRSWShnbEV4dEdldFNoYWRlcnNRQ09NKShHTHVpbnQgKnNoYWRlcnMsIEdMaW50IG1heFNoYWRlcnMsIEdMaW50ICpudW1TaGFkZXJzKSB7CisgICAgQ0FMTF9HTF9BUEkoZ2xFeHRHZXRTaGFkZXJzUUNPTSwgc2hhZGVycywgbWF4U2hhZGVycywgbnVtU2hhZGVycyk7Cit9Cit2b2lkIEFQSV9FTlRSWShnbEV4dEdldFByb2dyYW1zUUNPTSkoR0x1aW50ICpwcm9ncmFtcywgR0xpbnQgbWF4UHJvZ3JhbXMsIEdMaW50ICpudW1Qcm9ncmFtcykgeworICAgIENBTExfR0xfQVBJKGdsRXh0R2V0UHJvZ3JhbXNRQ09NLCBwcm9ncmFtcywgbWF4UHJvZ3JhbXMsIG51bVByb2dyYW1zKTsKK30KK0dMYm9vbGVhbiBBUElfRU5UUlkoZ2xFeHRJc1Byb2dyYW1CaW5hcnlRQ09NKShHTHVpbnQgcHJvZ3JhbSkgeworICAgIENBTExfR0xfQVBJX1JFVFVSTihnbEV4dElzUHJvZ3JhbUJpbmFyeVFDT00sIHByb2dyYW0pOworfQordm9pZCBBUElfRU5UUlkoZ2xFeHRHZXRQcm9ncmFtQmluYXJ5U291cmNlUUNPTSkoR0x1aW50IHByb2dyYW0sIEdMZW51bSBzaGFkZXJ0eXBlLCBHTGNoYXIgKnNvdXJjZSwgR0xpbnQgKmxlbmd0aCkgeworICAgIENBTExfR0xfQVBJKGdsRXh0R2V0UHJvZ3JhbUJpbmFyeVNvdXJjZVFDT00sIHByb2dyYW0sIHNoYWRlcnR5cGUsIHNvdXJjZSwgbGVuZ3RoKTsKK30KK3ZvaWQgQVBJX0VOVFJZKGdsU3RhcnRUaWxpbmdRQ09NKShHTHVpbnQgeCwgR0x1aW50IHksIEdMdWludCB3aWR0aCwgR0x1aW50IGhlaWdodCwgR0xiaXRmaWVsZCBwcmVzZXJ2ZU1hc2spIHsKKyAgICBDQUxMX0dMX0FQSShnbFN0YXJ0VGlsaW5nUUNPTSwgeCwgeSwgd2lkdGgsIGhlaWdodCwgcHJlc2VydmVNYXNrKTsKK30KK3ZvaWQgQVBJX0VOVFJZKGdsRW5kVGlsaW5nUUNPTSkoR0xiaXRmaWVsZCBwcmVzZXJ2ZU1hc2spIHsKKyAgICBDQUxMX0dMX0FQSShnbEVuZFRpbGluZ1FDT00sIHByZXNlcnZlTWFzayk7Cit9CmRpZmYgLS1naXQgYS9vcGVuZ2wvbGlicy9lZ2xfaW1wbC5oIGIvb3BlbmdsL2xpYnMvZWdsX2ltcGwuaAppbmRleCAxZmJhMjA5ZjcuLmM4ZjUyOWEgMTAwNjQ0Ci0tLSBhL29wZW5nbC9saWJzL2VnbF9pbXBsLmgKKysrIGIvb3BlbmdsL2xpYnMvZWdsX2ltcGwuaApAQCAtMzEsNiArMzEsNyBAQAogCiBzdHJ1Y3QgZWdsX2Nvbm5lY3Rpb25fdAogeworICAgIGlubGluZSBlZ2xfY29ubmVjdGlvbl90KCkgOiBkc28oMCkgeyB9CiAgICAgdm9pZCAqICAgICAgICAgICAgICBkc287CiAgICAgZ2xfaG9va3NfdCAqICAgICAgICBob29rc1syXTsKICAgICBFR0xpbnQgICAgICAgICAgICAgIG1ham9yOwpkaWZmIC0tZ2l0IGEvb3BlbmdsL2xpYnMvZW50cmllcy5pbiBiL29wZW5nbC9saWJzL2VudHJpZXMuaW4KaW5kZXggYmJlM2UyMy4uNjFhY2I1ZiAxMDA2NDQKLS0tIGEvb3BlbmdsL2xpYnMvZW50cmllcy5pbgorKysgYi9vcGVuZ2wvbGlicy9lbnRyaWVzLmluCkBAIC00LDEzICs0LDE0IEBACiBHTF9FTlRSWSh2b2lkLCBnbEFscGhhRnVuY3hPRVMsIEdMZW51bSBmdW5jLCBHTGNsYW1weCByZWYpCiBHTF9FTlRSWSh2b2lkLCBnbEF0dGFjaFNoYWRlciwgR0x1aW50IHByb2dyYW0sIEdMdWludCBzaGFkZXIpCiBHTF9FTlRSWSh2b2lkLCBnbEJlZ2luUGVyZk1vbml0b3JBTUQsIEdMdWludCBtb25pdG9yKQotR0xfRU5UUlkodm9pZCwgZ2xCaW5kQXR0cmliTG9jYXRpb24sIEdMdWludCBwcm9ncmFtLCBHTHVpbnQgaW5kZXgsIGNvbnN0IGNoYXIqIG5hbWUpCitHTF9FTlRSWSh2b2lkLCBnbEJpbmRBdHRyaWJMb2NhdGlvbiwgR0x1aW50IHByb2dyYW0sIEdMdWludCBpbmRleCwgY29uc3QgR0xjaGFyKiBuYW1lKQogR0xfRU5UUlkodm9pZCwgZ2xCaW5kQnVmZmVyLCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgYnVmZmVyKQogR0xfRU5UUlkodm9pZCwgZ2xCaW5kRnJhbWVidWZmZXIsIEdMZW51bSB0YXJnZXQsIEdMdWludCBmcmFtZWJ1ZmZlcikKIEdMX0VOVFJZKHZvaWQsIGdsQmluZEZyYW1lYnVmZmVyT0VTLCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgZnJhbWVidWZmZXIpCiBHTF9FTlRSWSh2b2lkLCBnbEJpbmRSZW5kZXJidWZmZXIsIEdMZW51bSB0YXJnZXQsIEdMdWludCByZW5kZXJidWZmZXIpCiBHTF9FTlRSWSh2b2lkLCBnbEJpbmRSZW5kZXJidWZmZXJPRVMsIEdMZW51bSB0YXJnZXQsIEdMdWludCByZW5kZXJidWZmZXIpCiBHTF9FTlRSWSh2b2lkLCBnbEJpbmRUZXh0dXJlLCBHTGVudW0gdGFyZ2V0LCBHTHVpbnQgdGV4dHVyZSkKK0dMX0VOVFJZKHZvaWQsIGdsQmluZFZlcnRleEFycmF5T0VTLCBHTHVpbnQgYXJyYXkpCiBHTF9FTlRSWSh2b2lkLCBnbEJsZW5kQ29sb3IsIEdMY2xhbXBmIHJlZCwgR0xjbGFtcGYgZ3JlZW4sIEdMY2xhbXBmIGJsdWUsIEdMY2xhbXBmIGFscGhhKQogR0xfRU5UUlkodm9pZCwgZ2xCbGVuZEVxdWF0aW9uLCAgR0xlbnVtIG1vZGUgKQogR0xfRU5UUlkodm9pZCwgZ2xCbGVuZEVxdWF0aW9uT0VTLCBHTGVudW0gbW9kZSkKQEAgLTM0LDggKzM1LDEwIEBACiBHTF9FTlRSWSh2b2lkLCBnbENsZWFyU3RlbmNpbCwgR0xpbnQgcykKIEdMX0VOVFJZKHZvaWQsIGdsQ2xpZW50QWN0aXZlVGV4dHVyZSwgR0xlbnVtIHRleHR1cmUpCiBHTF9FTlRSWSh2b2lkLCBnbENsaXBQbGFuZWYsIEdMZW51bSBwbGFuZSwgY29uc3QgR0xmbG9hdCAqZXF1YXRpb24pCitHTF9FTlRSWSh2b2lkLCBnbENsaXBQbGFuZWZJTUcsIEdMZW51bSBwLCBjb25zdCBHTGZsb2F0ICplcW4pCiBHTF9FTlRSWSh2b2lkLCBnbENsaXBQbGFuZWZPRVMsIEdMZW51bSBwbGFuZSwgY29uc3QgR0xmbG9hdCAqZXF1YXRpb24pCiBHTF9FTlRSWSh2b2lkLCBnbENsaXBQbGFuZXgsIEdMZW51bSBwbGFuZSwgY29uc3QgR0xmaXhlZCAqZXF1YXRpb24pCitHTF9FTlRSWSh2b2lkLCBnbENsaXBQbGFuZXhJTUcsIEdMZW51bSBwLCBjb25zdCBHTGZpeGVkICplcW4pCiBHTF9FTlRSWSh2b2lkLCBnbENsaXBQbGFuZXhPRVMsIEdMZW51bSBwbGFuZSwgY29uc3QgR0xmaXhlZCAqZXF1YXRpb24pCiBHTF9FTlRSWSh2b2lkLCBnbENvbG9yNGYsIEdMZmxvYXQgcmVkLCBHTGZsb2F0IGdyZWVuLCBHTGZsb2F0IGJsdWUsIEdMZmxvYXQgYWxwaGEpCiBHTF9FTlRSWSh2b2lkLCBnbENvbG9yNHViLCBHTHVieXRlIHJlZCwgR0x1Ynl0ZSBncmVlbiwgR0x1Ynl0ZSBibHVlLCBHTHVieXRlIGFscGhhKQpAQCAtNDUsMTIgKzQ4LDE0IEBACiBHTF9FTlRSWSh2b2lkLCBnbENvbG9yUG9pbnRlciwgR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMc2l6ZWkgc3RyaWRlLCBjb25zdCBHTHZvaWQgKnBvaW50ZXIpCiBHTF9FTlRSWSh2b2lkLCBnbENvbXBpbGVTaGFkZXIsIEdMdWludCBzaGFkZXIpCiBHTF9FTlRSWSh2b2lkLCBnbENvbXByZXNzZWRUZXhJbWFnZTJELCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xpbnQgYm9yZGVyLCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2b2lkICpkYXRhKQotR0xfRU5UUlkodm9pZCwgZ2xDb21wcmVzc2VkVGV4SW1hZ2UzRE9FUywgR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMaW50IGJvcmRlciwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IHZvaWQqIGRhdGEpCitHTF9FTlRSWSh2b2lkLCBnbENvbXByZXNzZWRUZXhJbWFnZTNET0VTLCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xpbnQgYm9yZGVyLCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2b2lkKiBkYXRhKQogR0xfRU5UUlkodm9pZCwgZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UyRCwgR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3QgR0x2b2lkICpkYXRhKQotR0xfRU5UUlkodm9pZCwgZ2xDb21wcmVzc2VkVGV4U3ViSW1hZ2UzRE9FUywgR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IHhvZmZzZXQsIEdMaW50IHlvZmZzZXQsIEdMaW50IHpvZmZzZXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBHTGVudW0gZm9ybWF0LCBHTHNpemVpIGltYWdlU2l6ZSwgY29uc3Qgdm9pZCogZGF0YSkKK0dMX0VOVFJZKHZvaWQsIGdsQ29tcHJlc3NlZFRleFN1YkltYWdlM0RPRVMsIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xlbnVtIGZvcm1hdCwgR0xzaXplaSBpbWFnZVNpemUsIGNvbnN0IEdMdm9pZCogZGF0YSkKIEdMX0VOVFJZKHZvaWQsIGdsQ29weVRleEltYWdlMkQsIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIpCiBHTF9FTlRSWSh2b2lkLCBnbENvcHlUZXhTdWJJbWFnZTJELCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpCiBHTF9FTlRSWSh2b2lkLCBnbENvcHlUZXhTdWJJbWFnZTNET0VTLCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgem9mZnNldCwgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQpCitHTF9FTlRSWSh2b2lkLCBnbENvdmVyYWdlTWFza05WLCBHTGJvb2xlYW4gbWFzaykKK0dMX0VOVFJZKHZvaWQsIGdsQ292ZXJhZ2VPcGVyYXRpb25OViwgR0xlbnVtIG9wZXJhdGlvbikKIEdMX0VOVFJZKEdMdWludCwgZ2xDcmVhdGVQcm9ncmFtLCB2b2lkKQogR0xfRU5UUlkoR0x1aW50LCBnbENyZWF0ZVNoYWRlciwgR0xlbnVtIHR5cGUpCiBHTF9FTlRSWSh2b2lkLCBnbEN1bGxGYWNlLCBHTGVudW0gbW9kZSkKQEAgLTY1LDYgKzcwLDcgQEAKIEdMX0VOVFJZKHZvaWQsIGdsRGVsZXRlUmVuZGVyYnVmZmVyc09FUywgR0xzaXplaSBuLCBjb25zdCBHTHVpbnQqIHJlbmRlcmJ1ZmZlcnMpCiBHTF9FTlRSWSh2b2lkLCBnbERlbGV0ZVNoYWRlciwgR0x1aW50IHNoYWRlcikKIEdMX0VOVFJZKHZvaWQsIGdsRGVsZXRlVGV4dHVyZXMsIEdMc2l6ZWkgbiwgY29uc3QgR0x1aW50ICp0ZXh0dXJlcykKK0dMX0VOVFJZKHZvaWQsIGdsRGVsZXRlVmVydGV4QXJyYXlzT0VTLCBHTHNpemVpIG4sIGNvbnN0IEdMdWludCAqYXJyYXlzKQogR0xfRU5UUlkodm9pZCwgZ2xEZXB0aEZ1bmMsIEdMZW51bSBmdW5jKQogR0xfRU5UUlkodm9pZCwgZ2xEZXB0aE1hc2ssIEdMYm9vbGVhbiBmbGFnKQogR0xfRU5UUlkodm9pZCwgZ2xEZXB0aFJhbmdlZiwgR0xjbGFtcGYgek5lYXIsIEdMY2xhbXBmIHpGYXIpCkBAIC03Niw2ICs4Miw3IEBACiBHTF9FTlRSWSh2b2lkLCBnbERpc2FibGVDbGllbnRTdGF0ZSwgR0xlbnVtIGFycmF5KQogR0xfRU5UUlkodm9pZCwgZ2xEaXNhYmxlRHJpdmVyQ29udHJvbFFDT00sIEdMdWludCBkcml2ZXJDb250cm9sKQogR0xfRU5UUlkodm9pZCwgZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXksIEdMdWludCBpbmRleCkKK0dMX0VOVFJZKHZvaWQsIGdsRGlzY2FyZEZyYW1lYnVmZmVyRVhULCBHTGVudW0gdGFyZ2V0LCBHTHNpemVpIG51bUF0dGFjaG1lbnRzLCBjb25zdCBHTGVudW0gKmF0dGFjaG1lbnRzKQogR0xfRU5UUlkodm9pZCwgZ2xEcmF3QXJyYXlzLCBHTGVudW0gbW9kZSwgR0xpbnQgZmlyc3QsIEdMc2l6ZWkgY291bnQpCiBHTF9FTlRSWSh2b2lkLCBnbERyYXdFbGVtZW50cywgR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQgKmluZGljZXMpCiBHTF9FTlRSWSh2b2lkLCBnbERyYXdUZXhmT0VTLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6LCBHTGZsb2F0IHdpZHRoLCBHTGZsb2F0IGhlaWdodCkKQEAgLTkzLDYgKzEwMCwxOSBAQAogR0xfRU5UUlkodm9pZCwgZ2xFbmFibGVEcml2ZXJDb250cm9sUUNPTSwgR0x1aW50IGRyaXZlckNvbnRyb2wpCiBHTF9FTlRSWSh2b2lkLCBnbEVuYWJsZVZlcnRleEF0dHJpYkFycmF5LCBHTHVpbnQgaW5kZXgpCiBHTF9FTlRSWSh2b2lkLCBnbEVuZFBlcmZNb25pdG9yQU1ELCBHTHVpbnQgbW9uaXRvcikKK0dMX0VOVFJZKHZvaWQsIGdsRW5kVGlsaW5nUUNPTSwgR0xiaXRmaWVsZCBwcmVzZXJ2ZU1hc2spCitHTF9FTlRSWSh2b2lkLCBnbEV4dEdldEJ1ZmZlclBvaW50ZXJ2UUNPTSwgR0xlbnVtIHRhcmdldCwgR0x2b2lkICoqcGFyYW1zKQorR0xfRU5UUlkodm9pZCwgZ2xFeHRHZXRCdWZmZXJzUUNPTSwgR0x1aW50ICpidWZmZXJzLCBHTGludCBtYXhCdWZmZXJzLCBHTGludCAqbnVtQnVmZmVycykKK0dMX0VOVFJZKHZvaWQsIGdsRXh0R2V0RnJhbWVidWZmZXJzUUNPTSwgR0x1aW50ICpmcmFtZWJ1ZmZlcnMsIEdMaW50IG1heEZyYW1lYnVmZmVycywgR0xpbnQgKm51bUZyYW1lYnVmZmVycykKK0dMX0VOVFJZKHZvaWQsIGdsRXh0R2V0UHJvZ3JhbUJpbmFyeVNvdXJjZVFDT00sIEdMdWludCBwcm9ncmFtLCBHTGVudW0gc2hhZGVydHlwZSwgR0xjaGFyICpzb3VyY2UsIEdMaW50ICpsZW5ndGgpCitHTF9FTlRSWSh2b2lkLCBnbEV4dEdldFByb2dyYW1zUUNPTSwgR0x1aW50ICpwcm9ncmFtcywgR0xpbnQgbWF4UHJvZ3JhbXMsIEdMaW50ICpudW1Qcm9ncmFtcykKK0dMX0VOVFJZKHZvaWQsIGdsRXh0R2V0UmVuZGVyYnVmZmVyc1FDT00sIEdMdWludCAqcmVuZGVyYnVmZmVycywgR0xpbnQgbWF4UmVuZGVyYnVmZmVycywgR0xpbnQgKm51bVJlbmRlcmJ1ZmZlcnMpCitHTF9FTlRSWSh2b2lkLCBnbEV4dEdldFNoYWRlcnNRQ09NLCBHTHVpbnQgKnNoYWRlcnMsIEdMaW50IG1heFNoYWRlcnMsIEdMaW50ICpudW1TaGFkZXJzKQorR0xfRU5UUlkodm9pZCwgZ2xFeHRHZXRUZXhMZXZlbFBhcmFtZXRlcml2UUNPTSwgR0x1aW50IHRleHR1cmUsIEdMZW51bSBmYWNlLCBHTGludCBsZXZlbCwgR0xlbnVtIHBuYW1lLCBHTGludCAqcGFyYW1zKQorR0xfRU5UUlkodm9pZCwgZ2xFeHRHZXRUZXhTdWJJbWFnZVFDT00sIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIEdMdm9pZCAqdGV4ZWxzKQorR0xfRU5UUlkodm9pZCwgZ2xFeHRHZXRUZXh0dXJlc1FDT00sIEdMdWludCAqdGV4dHVyZXMsIEdMaW50IG1heFRleHR1cmVzLCBHTGludCAqbnVtVGV4dHVyZXMpCitHTF9FTlRSWShHTGJvb2xlYW4sIGdsRXh0SXNQcm9ncmFtQmluYXJ5UUNPTSwgR0x1aW50IHByb2dyYW0pCitHTF9FTlRSWSh2b2lkLCBnbEV4dFRleE9iamVjdFN0YXRlT3ZlcnJpZGVpUUNPTSwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGludCBwYXJhbSkKIEdMX0VOVFJZKHZvaWQsIGdsRmluaXNoLCB2b2lkKQogR0xfRU5UUlkodm9pZCwgZ2xGaW5pc2hGZW5jZU5WLCBHTHVpbnQgZmVuY2UpCiBHTF9FTlRSWSh2b2lkLCBnbEZsdXNoLCB2b2lkKQpAQCAtMTA1LDYgKzEyNSw3IEBACiBHTF9FTlRSWSh2b2lkLCBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyLCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gYXR0YWNobWVudCwgR0xlbnVtIHJlbmRlcmJ1ZmZlcnRhcmdldCwgR0x1aW50IHJlbmRlcmJ1ZmZlcikKIEdMX0VOVFJZKHZvaWQsIGdsRnJhbWVidWZmZXJSZW5kZXJidWZmZXJPRVMsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LCBHTGVudW0gcmVuZGVyYnVmZmVydGFyZ2V0LCBHTHVpbnQgcmVuZGVyYnVmZmVyKQogR0xfRU5UUlkodm9pZCwgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRCwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dGFjaG1lbnQsIEdMZW51bSB0ZXh0YXJnZXQsIEdMdWludCB0ZXh0dXJlLCBHTGludCBsZXZlbCkKK0dMX0VOVFJZKHZvaWQsIGdsRnJhbWVidWZmZXJUZXh0dXJlMkRNdWx0aXNhbXBsZUlNRywgR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dGFjaG1lbnQsIEdMZW51bSB0ZXh0YXJnZXQsIEdMdWludCB0ZXh0dXJlLCBHTGludCBsZXZlbCwgR0xzaXplaSBzYW1wbGVzKQogR0xfRU5UUlkodm9pZCwgZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRE9FUywgR0xlbnVtIHRhcmdldCwgR0xlbnVtIGF0dGFjaG1lbnQsIEdMZW51bSB0ZXh0YXJnZXQsIEdMdWludCB0ZXh0dXJlLCBHTGludCBsZXZlbCkKIEdMX0VOVFJZKHZvaWQsIGdsRnJhbWVidWZmZXJUZXh0dXJlM0RPRVMsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBhdHRhY2htZW50LCBHTGVudW0gdGV4dGFyZ2V0LCBHTHVpbnQgdGV4dHVyZSwgR0xpbnQgbGV2ZWwsIEdMaW50IHpvZmZzZXQpCiBHTF9FTlRSWSh2b2lkLCBnbEZyb250RmFjZSwgR0xlbnVtIG1vZGUpCkBAIC0xMjAsMjAgKzE0MSwyMSBAQAogR0xfRU5UUlkodm9pZCwgZ2xHZW5SZW5kZXJidWZmZXJzLCBHTHNpemVpIG4sIEdMdWludCogcmVuZGVyYnVmZmVycykKIEdMX0VOVFJZKHZvaWQsIGdsR2VuUmVuZGVyYnVmZmVyc09FUywgR0xzaXplaSBuLCBHTHVpbnQqIHJlbmRlcmJ1ZmZlcnMpCiBHTF9FTlRSWSh2b2lkLCBnbEdlblRleHR1cmVzLCBHTHNpemVpIG4sIEdMdWludCAqdGV4dHVyZXMpCitHTF9FTlRSWSh2b2lkLCBnbEdlblZlcnRleEFycmF5c09FUywgR0xzaXplaSBuLCBHTHVpbnQgKmFycmF5cykKIEdMX0VOVFJZKHZvaWQsIGdsR2VuZXJhdGVNaXBtYXAsIEdMZW51bSB0YXJnZXQpCiBHTF9FTlRSWSh2b2lkLCBnbEdlbmVyYXRlTWlwbWFwT0VTLCBHTGVudW0gdGFyZ2V0KQotR0xfRU5UUlkodm9pZCwgZ2xHZXRBY3RpdmVBdHRyaWIsIEdMdWludCBwcm9ncmFtLCBHTHVpbnQgaW5kZXgsIEdMc2l6ZWkgYnVmc2l6ZSwgR0xzaXplaSogbGVuZ3RoLCBHTGludCogc2l6ZSwgR0xlbnVtKiB0eXBlLCBjaGFyKiBuYW1lKQotR0xfRU5UUlkodm9pZCwgZ2xHZXRBY3RpdmVVbmlmb3JtLCBHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IGluZGV4LCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkqIGxlbmd0aCwgR0xpbnQqIHNpemUsIEdMZW51bSogdHlwZSwgY2hhciogbmFtZSkKK0dMX0VOVFJZKHZvaWQsIGdsR2V0QWN0aXZlQXR0cmliLCBHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IGluZGV4LCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkqIGxlbmd0aCwgR0xpbnQqIHNpemUsIEdMZW51bSogdHlwZSwgR0xjaGFyKiBuYW1lKQorR0xfRU5UUlkodm9pZCwgZ2xHZXRBY3RpdmVVbmlmb3JtLCBHTHVpbnQgcHJvZ3JhbSwgR0x1aW50IGluZGV4LCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkqIGxlbmd0aCwgR0xpbnQqIHNpemUsIEdMZW51bSogdHlwZSwgR0xjaGFyKiBuYW1lKQogR0xfRU5UUlkodm9pZCwgZ2xHZXRBdHRhY2hlZFNoYWRlcnMsIEdMdWludCBwcm9ncmFtLCBHTHNpemVpIG1heGNvdW50LCBHTHNpemVpKiBjb3VudCwgR0x1aW50KiBzaGFkZXJzKQotR0xfRU5UUlkoaW50LCBnbEdldEF0dHJpYkxvY2F0aW9uLCBHTHVpbnQgcHJvZ3JhbSwgY29uc3QgY2hhciogbmFtZSkKK0dMX0VOVFJZKGludCwgZ2xHZXRBdHRyaWJMb2NhdGlvbiwgR0x1aW50IHByb2dyYW0sIGNvbnN0IEdMY2hhciogbmFtZSkKIEdMX0VOVFJZKHZvaWQsIGdsR2V0Qm9vbGVhbnYsIEdMZW51bSBwbmFtZSwgR0xib29sZWFuICpwYXJhbXMpCiBHTF9FTlRSWSh2b2lkLCBnbEdldEJ1ZmZlclBhcmFtZXRlcml2LCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCi1HTF9FTlRSWSh2b2lkLCBnbEdldEJ1ZmZlclBvaW50ZXJ2T0VTLCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIHZvaWQqKiBwYXJhbXMpCitHTF9FTlRSWSh2b2lkLCBnbEdldEJ1ZmZlclBvaW50ZXJ2T0VTLCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gcG5hbWUsIEdMdm9pZCAqKiBwYXJhbXMpCiBHTF9FTlRSWSh2b2lkLCBnbEdldENsaXBQbGFuZWYsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBlcW5bNF0pCiBHTF9FTlRSWSh2b2lkLCBnbEdldENsaXBQbGFuZWZPRVMsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCBlcW5bNF0pCiBHTF9FTlRSWSh2b2lkLCBnbEdldENsaXBQbGFuZXgsIEdMZW51bSBwbmFtZSwgR0xmaXhlZCBlcW5bNF0pCiBHTF9FTlRSWSh2b2lkLCBnbEdldENsaXBQbGFuZXhPRVMsIEdMZW51bSBwbmFtZSwgR0xmaXhlZCBlcW5bNF0pCi1HTF9FTlRSWSh2b2lkLCBnbEdldERyaXZlckNvbnRyb2xTdHJpbmdRQ09NLCBHTHVpbnQgZHJpdmVyQ29udHJvbCwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIGNoYXIgKmRyaXZlckNvbnRyb2xTdHJpbmcpCitHTF9FTlRSWSh2b2lkLCBnbEdldERyaXZlckNvbnRyb2xTdHJpbmdRQ09NLCBHTHVpbnQgZHJpdmVyQ29udHJvbCwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIEdMY2hhciAqZHJpdmVyQ29udHJvbFN0cmluZykKIEdMX0VOVFJZKHZvaWQsIGdsR2V0RHJpdmVyQ29udHJvbHNRQ09NLCBHTGludCAqbnVtLCBHTHNpemVpIHNpemUsIEdMdWludCAqZHJpdmVyQ29udHJvbHMpCiBHTF9FTlRSWShHTGVudW0sIGdsR2V0RXJyb3IsIHZvaWQpCiBHTF9FTlRSWSh2b2lkLCBnbEdldEZlbmNlaXZOViwgR0x1aW50IGZlbmNlLCBHTGVudW0gcG5hbWUsIEdMaW50ICpwYXJhbXMpCkBAIC0xNTAsMjAgKzE3MiwyMCBAQAogR0xfRU5UUlkodm9pZCwgZ2xHZXRNYXRlcmlhbHh2LCBHTGVudW0gZmFjZSwgR0xlbnVtIHBuYW1lLCBHTGZpeGVkICpwYXJhbXMpCiBHTF9FTlRSWSh2b2lkLCBnbEdldE1hdGVyaWFseHZPRVMsIEdMZW51bSBmYWNlLCBHTGVudW0gcG5hbWUsIEdMZml4ZWQgKnBhcmFtcykKIEdMX0VOVFJZKHZvaWQsIGdsR2V0UGVyZk1vbml0b3JDb3VudGVyRGF0YUFNRCwgR0x1aW50IG1vbml0b3IsIEdMZW51bSBwbmFtZSwgR0xzaXplaSBkYXRhU2l6ZSwgR0x1aW50ICpkYXRhLCBHTGludCAqYnl0ZXNXcml0dGVuKQotR0xfRU5UUlkodm9pZCwgZ2xHZXRQZXJmTW9uaXRvckNvdW50ZXJJbmZvQU1ELCBHTHVpbnQgZ3JvdXAsIEdMdWludCBjb3VudGVyLCBHTGVudW0gcG5hbWUsIHZvaWQgKmRhdGEpCi1HTF9FTlRSWSh2b2lkLCBnbEdldFBlcmZNb25pdG9yQ291bnRlclN0cmluZ0FNRCwgR0x1aW50IGdyb3VwLCBHTHVpbnQgY291bnRlciwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIGNoYXIgKmNvdW50ZXJTdHJpbmcpCitHTF9FTlRSWSh2b2lkLCBnbEdldFBlcmZNb25pdG9yQ291bnRlckluZm9BTUQsIEdMdWludCBncm91cCwgR0x1aW50IGNvdW50ZXIsIEdMZW51bSBwbmFtZSwgR0x2b2lkICpkYXRhKQorR0xfRU5UUlkodm9pZCwgZ2xHZXRQZXJmTW9uaXRvckNvdW50ZXJTdHJpbmdBTUQsIEdMdWludCBncm91cCwgR0x1aW50IGNvdW50ZXIsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGNoYXIgKmNvdW50ZXJTdHJpbmcpCiBHTF9FTlRSWSh2b2lkLCBnbEdldFBlcmZNb25pdG9yQ291bnRlcnNBTUQsIEdMdWludCBncm91cCwgR0xpbnQgKm51bUNvdW50ZXJzLCBHTGludCAqbWF4QWN0aXZlQ291bnRlcnMsIEdMc2l6ZWkgY291bnRlclNpemUsIEdMdWludCAqY291bnRlcnMpCi1HTF9FTlRSWSh2b2lkLCBnbEdldFBlcmZNb25pdG9yR3JvdXBTdHJpbmdBTUQsIEdMdWludCBncm91cCwgR0xzaXplaSBidWZTaXplLCBHTHNpemVpICpsZW5ndGgsIGNoYXIgKmdyb3VwU3RyaW5nKQorR0xfRU5UUlkodm9pZCwgZ2xHZXRQZXJmTW9uaXRvckdyb3VwU3RyaW5nQU1ELCBHTHVpbnQgZ3JvdXAsIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGNoYXIgKmdyb3VwU3RyaW5nKQogR0xfRU5UUlkodm9pZCwgZ2xHZXRQZXJmTW9uaXRvckdyb3Vwc0FNRCwgR0xpbnQgKm51bUdyb3VwcywgR0xzaXplaSBncm91cHNTaXplLCBHTHVpbnQgKmdyb3VwcykKLUdMX0VOVFJZKHZvaWQsIGdsR2V0UG9pbnRlcnYsIEdMZW51bSBwbmFtZSwgdm9pZCAqKnBhcmFtcykKLUdMX0VOVFJZKHZvaWQsIGdsR2V0UHJvZ3JhbUJpbmFyeU9FUywgR0x1aW50IHByb2dyYW0sIEdMc2l6ZWkgYnVmU2l6ZSwgR0xzaXplaSAqbGVuZ3RoLCBHTGVudW0gKmJpbmFyeUZvcm1hdCwgdm9pZCAqYmluYXJ5KQotR0xfRU5UUlkodm9pZCwgZ2xHZXRQcm9ncmFtSW5mb0xvZywgR0x1aW50IHByb2dyYW0sIEdMc2l6ZWkgYnVmc2l6ZSwgR0xzaXplaSogbGVuZ3RoLCBjaGFyKiBpbmZvbG9nKQorR0xfRU5UUlkodm9pZCwgZ2xHZXRQb2ludGVydiwgR0xlbnVtIHBuYW1lLCBHTHZvaWQgKipwYXJhbXMpCitHTF9FTlRSWSh2b2lkLCBnbEdldFByb2dyYW1CaW5hcnlPRVMsIEdMdWludCBwcm9ncmFtLCBHTHNpemVpIGJ1ZlNpemUsIEdMc2l6ZWkgKmxlbmd0aCwgR0xlbnVtICpiaW5hcnlGb3JtYXQsIEdMdm9pZCAqYmluYXJ5KQorR0xfRU5UUlkodm9pZCwgZ2xHZXRQcm9ncmFtSW5mb0xvZywgR0x1aW50IHByb2dyYW0sIEdMc2l6ZWkgYnVmc2l6ZSwgR0xzaXplaSogbGVuZ3RoLCBHTGNoYXIqIGluZm9sb2cpCiBHTF9FTlRSWSh2b2lkLCBnbEdldFByb2dyYW1pdiwgR0x1aW50IHByb2dyYW0sIEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcykKIEdMX0VOVFJZKHZvaWQsIGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXYsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcykKIEdMX0VOVFJZKHZvaWQsIGdsR2V0UmVuZGVyYnVmZmVyUGFyYW1ldGVyaXZPRVMsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQqIHBhcmFtcykKLUdMX0VOVFJZKHZvaWQsIGdsR2V0U2hhZGVySW5mb0xvZywgR0x1aW50IHNoYWRlciwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpKiBsZW5ndGgsIGNoYXIqIGluZm9sb2cpCitHTF9FTlRSWSh2b2lkLCBnbEdldFNoYWRlckluZm9Mb2csIEdMdWludCBzaGFkZXIsIEdMc2l6ZWkgYnVmc2l6ZSwgR0xzaXplaSogbGVuZ3RoLCBHTGNoYXIqIGluZm9sb2cpCiBHTF9FTlRSWSh2b2lkLCBnbEdldFNoYWRlclByZWNpc2lvbkZvcm1hdCwgR0xlbnVtIHNoYWRlcnR5cGUsIEdMZW51bSBwcmVjaXNpb250eXBlLCBHTGludCogcmFuZ2UsIEdMaW50KiBwcmVjaXNpb24pCi1HTF9FTlRSWSh2b2lkLCBnbEdldFNoYWRlclNvdXJjZSwgR0x1aW50IHNoYWRlciwgR0xzaXplaSBidWZzaXplLCBHTHNpemVpKiBsZW5ndGgsIGNoYXIqIHNvdXJjZSkKK0dMX0VOVFJZKHZvaWQsIGdsR2V0U2hhZGVyU291cmNlLCBHTHVpbnQgc2hhZGVyLCBHTHNpemVpIGJ1ZnNpemUsIEdMc2l6ZWkqIGxlbmd0aCwgR0xjaGFyKiBzb3VyY2UpCiBHTF9FTlRSWSh2b2lkLCBnbEdldFNoYWRlcml2LCBHTHVpbnQgc2hhZGVyLCBHTGVudW0gcG5hbWUsIEdMaW50KiBwYXJhbXMpCiBHTF9FTlRSWShjb25zdCBHTHVieXRlICosIGdsR2V0U3RyaW5nLCBHTGVudW0gbmFtZSkKIEdMX0VOVFJZKHZvaWQsIGdsR2V0VGV4RW52ZnYsIEdMZW51bSBlbnYsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCAqcGFyYW1zKQpAQCAtMTc3LDEwICsxOTksMTAgQEAKIEdMX0VOVFJZKHZvaWQsIGdsR2V0VGV4UGFyYW1ldGVyaXYsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgKnBhcmFtcykKIEdMX0VOVFJZKHZvaWQsIGdsR2V0VGV4UGFyYW1ldGVyeHYsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xmaXhlZCAqcGFyYW1zKQogR0xfRU5UUlkodm9pZCwgZ2xHZXRUZXhQYXJhbWV0ZXJ4dk9FUywgR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZpeGVkICpwYXJhbXMpCi1HTF9FTlRSWShpbnQsIGdsR2V0VW5pZm9ybUxvY2F0aW9uLCBHTHVpbnQgcHJvZ3JhbSwgY29uc3QgY2hhciogbmFtZSkKK0dMX0VOVFJZKGludCwgZ2xHZXRVbmlmb3JtTG9jYXRpb24sIEdMdWludCBwcm9ncmFtLCBjb25zdCBHTGNoYXIqIG5hbWUpCiBHTF9FTlRSWSh2b2lkLCBnbEdldFVuaWZvcm1mdiwgR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGZsb2F0KiBwYXJhbXMpCiBHTF9FTlRSWSh2b2lkLCBnbEdldFVuaWZvcm1pdiwgR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHTGludCogcGFyYW1zKQotR0xfRU5UUlkodm9pZCwgZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydiwgR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIHZvaWQqKiBwb2ludGVyKQorR0xfRU5UUlkodm9pZCwgZ2xHZXRWZXJ0ZXhBdHRyaWJQb2ludGVydiwgR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMdm9pZCoqIHBvaW50ZXIpCiBHTF9FTlRSWSh2b2lkLCBnbEdldFZlcnRleEF0dHJpYmZ2LCBHTHVpbnQgaW5kZXgsIEdMZW51bSBwbmFtZSwgR0xmbG9hdCogcGFyYW1zKQogR0xfRU5UUlkodm9pZCwgZ2xHZXRWZXJ0ZXhBdHRyaWJpdiwgR0x1aW50IGluZGV4LCBHTGVudW0gcG5hbWUsIEdMaW50KiBwYXJhbXMpCiBHTF9FTlRSWSh2b2lkLCBnbEhpbnQsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBtb2RlKQpAQCAtMTk0LDYgKzIxNiw3IEBACiBHTF9FTlRSWShHTGJvb2xlYW4sIGdsSXNSZW5kZXJidWZmZXJPRVMsIEdMdWludCByZW5kZXJidWZmZXIpCiBHTF9FTlRSWShHTGJvb2xlYW4sIGdsSXNTaGFkZXIsIEdMdWludCBzaGFkZXIpCiBHTF9FTlRSWShHTGJvb2xlYW4sIGdsSXNUZXh0dXJlLCBHTHVpbnQgdGV4dHVyZSkKK0dMX0VOVFJZKEdMYm9vbGVhbiwgZ2xJc1ZlcnRleEFycmF5T0VTLCBHTHVpbnQgYXJyYXkpCiBHTF9FTlRSWSh2b2lkLCBnbExpZ2h0TW9kZWxmLCBHTGVudW0gcG5hbWUsIEdMZmxvYXQgcGFyYW0pCiBHTF9FTlRSWSh2b2lkLCBnbExpZ2h0TW9kZWxmdiwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpCiBHTF9FTlRSWSh2b2lkLCBnbExpZ2h0TW9kZWx4LCBHTGVudW0gcG5hbWUsIEdMZml4ZWQgcGFyYW0pCkBAIC0yMjgsNiArMjUxLDggQEAKIEdMX0VOVFJZKHZvaWQsIGdsTXVsdE1hdHJpeGYsIGNvbnN0IEdMZmxvYXQgKm0pCiBHTF9FTlRSWSh2b2lkLCBnbE11bHRNYXRyaXh4LCBjb25zdCBHTGZpeGVkICptKQogR0xfRU5UUlkodm9pZCwgZ2xNdWx0TWF0cml4eE9FUywgY29uc3QgR0xmaXhlZCAqbSkKK0dMX0VOVFJZKHZvaWQsIGdsTXVsdGlEcmF3QXJyYXlzRVhULCBHTGVudW0gbW9kZSwgR0xpbnQgKmZpcnN0LCBHTHNpemVpICpjb3VudCwgR0xzaXplaSBwcmltY291bnQpCitHTF9FTlRSWSh2b2lkLCBnbE11bHRpRHJhd0VsZW1lbnRzRVhULCBHTGVudW0gbW9kZSwgY29uc3QgR0xzaXplaSAqY291bnQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQqICppbmRpY2VzLCBHTHNpemVpIHByaW1jb3VudCkKIEdMX0VOVFJZKHZvaWQsIGdsTXVsdGlUZXhDb29yZDRmLCBHTGVudW0gdGFyZ2V0LCBHTGZsb2F0IHMsIEdMZmxvYXQgdCwgR0xmbG9hdCByLCBHTGZsb2F0IHEpCiBHTF9FTlRSWSh2b2lkLCBnbE11bHRpVGV4Q29vcmQ0eCwgR0xlbnVtIHRhcmdldCwgR0xmaXhlZCBzLCBHTGZpeGVkIHQsIEdMZml4ZWQgciwgR0xmaXhlZCBxKQogR0xfRU5UUlkodm9pZCwgZ2xNdWx0aVRleENvb3JkNHhPRVMsIEdMZW51bSB0YXJnZXQsIEdMZml4ZWQgcywgR0xmaXhlZCB0LCBHTGZpeGVkIHIsIEdMZml4ZWQgcSkKQEAgLTI1NCwxMiArMjc5LDEzIEBACiBHTF9FTlRSWSh2b2lkLCBnbFBvbHlnb25PZmZzZXR4LCBHTGZpeGVkIGZhY3RvciwgR0xmaXhlZCB1bml0cykKIEdMX0VOVFJZKHZvaWQsIGdsUG9seWdvbk9mZnNldHhPRVMsIEdMZml4ZWQgZmFjdG9yLCBHTGZpeGVkIHVuaXRzKQogR0xfRU5UUlkodm9pZCwgZ2xQb3BNYXRyaXgsIHZvaWQpCi1HTF9FTlRSWSh2b2lkLCBnbFByb2dyYW1CaW5hcnlPRVMsIEdMdWludCBwcm9ncmFtLCBHTGVudW0gYmluYXJ5Rm9ybWF0LCBjb25zdCB2b2lkICpiaW5hcnksIEdMaW50IGxlbmd0aCkKK0dMX0VOVFJZKHZvaWQsIGdsUHJvZ3JhbUJpbmFyeU9FUywgR0x1aW50IHByb2dyYW0sIEdMZW51bSBiaW5hcnlGb3JtYXQsIGNvbnN0IEdMdm9pZCAqYmluYXJ5LCBHTGludCBsZW5ndGgpCiBHTF9FTlRSWSh2b2lkLCBnbFB1c2hNYXRyaXgsIHZvaWQpCiBHTF9FTlRSWShHTGJpdGZpZWxkLCBnbFF1ZXJ5TWF0cml4eE9FUywgR0xmaXhlZCBtYW50aXNzYVsxNl0sIEdMaW50IGV4cG9uZW50WzE2XSkKIEdMX0VOVFJZKHZvaWQsIGdsUmVhZFBpeGVscywgR0xpbnQgeCwgR0xpbnQgeSwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBHTHZvaWQgKnBpeGVscykKIEdMX0VOVFJZKHZvaWQsIGdsUmVsZWFzZVNoYWRlckNvbXBpbGVyLCB2b2lkKQogR0xfRU5UUlkodm9pZCwgZ2xSZW5kZXJidWZmZXJTdG9yYWdlLCBHTGVudW0gdGFyZ2V0LCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KQorR0xfRU5UUlkodm9pZCwgZ2xSZW5kZXJidWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVJTUcsIEdMZW51bSB0YXJnZXQsIEdMc2l6ZWkgc2FtcGxlcywgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkKIEdMX0VOVFJZKHZvaWQsIGdsUmVuZGVyYnVmZmVyU3RvcmFnZU9FUywgR0xlbnVtIHRhcmdldCwgR0xlbnVtIGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCkKIEdMX0VOVFJZKHZvaWQsIGdsUm90YXRlZiwgR0xmbG9hdCBhbmdsZSwgR0xmbG9hdCB4LCBHTGZsb2F0IHksIEdMZmxvYXQgeikKIEdMX0VOVFJZKHZvaWQsIGdsUm90YXRleCwgR0xmaXhlZCBhbmdsZSwgR0xmaXhlZCB4LCBHTGZpeGVkIHksIEdMZml4ZWQgeikKQEAgLTI3NCw4ICszMDAsOSBAQAogR0xfRU5UUlkodm9pZCwgZ2xTZWxlY3RQZXJmTW9uaXRvckNvdW50ZXJzQU1ELCBHTHVpbnQgbW9uaXRvciwgR0xib29sZWFuIGVuYWJsZSwgR0x1aW50IGdyb3VwLCBHTGludCBudW1Db3VudGVycywgR0x1aW50ICpjb3VudGVyc0xpc3QpCiBHTF9FTlRSWSh2b2lkLCBnbFNldEZlbmNlTlYsIEdMdWludCBmZW5jZSwgR0xlbnVtIGNvbmRpdGlvbikKIEdMX0VOVFJZKHZvaWQsIGdsU2hhZGVNb2RlbCwgR0xlbnVtIG1vZGUpCi1HTF9FTlRSWSh2b2lkLCBnbFNoYWRlckJpbmFyeSwgR0xzaXplaSBuLCBjb25zdCBHTHVpbnQqIHNoYWRlcnMsIEdMZW51bSBiaW5hcnlmb3JtYXQsIGNvbnN0IHZvaWQqIGJpbmFyeSwgR0xzaXplaSBsZW5ndGgpCi1HTF9FTlRSWSh2b2lkLCBnbFNoYWRlclNvdXJjZSwgR0x1aW50IHNoYWRlciwgR0xzaXplaSBjb3VudCwgY29uc3QgY2hhcioqIHN0cmluZywgY29uc3QgR0xpbnQqIGxlbmd0aCkKK0dMX0VOVFJZKHZvaWQsIGdsU2hhZGVyQmluYXJ5LCBHTHNpemVpIG4sIGNvbnN0IEdMdWludCogc2hhZGVycywgR0xlbnVtIGJpbmFyeWZvcm1hdCwgY29uc3QgR0x2b2lkKiBiaW5hcnksIEdMc2l6ZWkgbGVuZ3RoKQorR0xfRU5UUlkodm9pZCwgZ2xTaGFkZXJTb3VyY2UsIEdMdWludCBzaGFkZXIsIEdMc2l6ZWkgY291bnQsIGNvbnN0IEdMY2hhcioqIHN0cmluZywgY29uc3QgR0xpbnQqIGxlbmd0aCkKK0dMX0VOVFJZKHZvaWQsIGdsU3RhcnRUaWxpbmdRQ09NLCBHTHVpbnQgeCwgR0x1aW50IHksIEdMdWludCB3aWR0aCwgR0x1aW50IGhlaWdodCwgR0xiaXRmaWVsZCBwcmVzZXJ2ZU1hc2spCiBHTF9FTlRSWSh2b2lkLCBnbFN0ZW5jaWxGdW5jLCBHTGVudW0gZnVuYywgR0xpbnQgcmVmLCBHTHVpbnQgbWFzaykKIEdMX0VOVFJZKHZvaWQsIGdsU3RlbmNpbEZ1bmNTZXBhcmF0ZSwgR0xlbnVtIGZhY2UsIEdMZW51bSBmdW5jLCBHTGludCByZWYsIEdMdWludCBtYXNrKQogR0xfRU5UUlkodm9pZCwgZ2xTdGVuY2lsTWFzaywgR0x1aW50IG1hc2spCkBAIC0yOTgsOCArMzI1LDggQEAKIEdMX0VOVFJZKHZvaWQsIGdsVGV4R2VuaXZPRVMsIEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGludCAqcGFyYW1zKQogR0xfRU5UUlkodm9pZCwgZ2xUZXhHZW54T0VTLCBHTGVudW0gY29vcmQsIEdMZW51bSBwbmFtZSwgR0xmaXhlZCBwYXJhbSkKIEdMX0VOVFJZKHZvaWQsIGdsVGV4R2VueHZPRVMsIEdMZW51bSBjb29yZCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZpeGVkICpwYXJhbXMpCi1HTF9FTlRSWSh2b2lkLCBnbFRleEltYWdlMkQsIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCBpbnRlcm5hbGZvcm1hdCwgIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTGludCBib3JkZXIsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQqIHBpeGVscykKLUdMX0VOVFJZKHZvaWQsIGdsVGV4SW1hZ2UzRE9FUywgR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMZW51bSBpbnRlcm5hbGZvcm1hdCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMaW50IGJvcmRlciwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IHZvaWQqIHBpeGVscykKK0dMX0VOVFJZKHZvaWQsIGdsVGV4SW1hZ2UyRCwgR0xlbnVtIHRhcmdldCwgR0xpbnQgbGV2ZWwsIEdMaW50IGludGVybmFsZm9ybWF0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xpbnQgYm9yZGVyLCBHTGVudW0gZm9ybWF0LCBHTGVudW0gdHlwZSwgY29uc3QgR0x2b2lkICpwaXhlbHMpCitHTF9FTlRSWSh2b2lkLCBnbFRleEltYWdlM0RPRVMsIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGVudW0gaW50ZXJuYWxmb3JtYXQsIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0LCBHTHNpemVpIGRlcHRoLCBHTGludCBib3JkZXIsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCBHTHZvaWQqIHBpeGVscykKIEdMX0VOVFJZKHZvaWQsIGdsVGV4UGFyYW1ldGVyZiwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBHTGZsb2F0IHBhcmFtKQogR0xfRU5UUlkodm9pZCwgZ2xUZXhQYXJhbWV0ZXJmdiwgR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZsb2F0ICpwYXJhbXMpCiBHTF9FTlRSWSh2b2lkLCBnbFRleFBhcmFtZXRlcmksIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgR0xpbnQgcGFyYW0pCkBAIC0zMDksNyArMzM2LDcgQEAKIEdMX0VOVFJZKHZvaWQsIGdsVGV4UGFyYW1ldGVyeHYsIEdMZW51bSB0YXJnZXQsIEdMZW51bSBwbmFtZSwgY29uc3QgR0xmaXhlZCAqcGFyYW1zKQogR0xfRU5UUlkodm9pZCwgZ2xUZXhQYXJhbWV0ZXJ4dk9FUywgR0xlbnVtIHRhcmdldCwgR0xlbnVtIHBuYW1lLCBjb25zdCBHTGZpeGVkICpwYXJhbXMpCiBHTF9FTlRSWSh2b2lkLCBnbFRleFN1YkltYWdlMkQsIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqcGl4ZWxzKQotR0xfRU5UUlkodm9pZCwgZ2xUZXhTdWJJbWFnZTNET0VTLCBHTGVudW0gdGFyZ2V0LCBHTGludCBsZXZlbCwgR0xpbnQgeG9mZnNldCwgR0xpbnQgeW9mZnNldCwgR0xpbnQgem9mZnNldCwgR0xzaXplaSB3aWR0aCwgR0xzaXplaSBoZWlnaHQsIEdMc2l6ZWkgZGVwdGgsIEdMZW51bSBmb3JtYXQsIEdMZW51bSB0eXBlLCBjb25zdCB2b2lkKiBwaXhlbHMpCitHTF9FTlRSWSh2b2lkLCBnbFRleFN1YkltYWdlM0RPRVMsIEdMZW51bSB0YXJnZXQsIEdMaW50IGxldmVsLCBHTGludCB4b2Zmc2V0LCBHTGludCB5b2Zmc2V0LCBHTGludCB6b2Zmc2V0LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCwgR0xzaXplaSBkZXB0aCwgR0xlbnVtIGZvcm1hdCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCogcGl4ZWxzKQogR0xfRU5UUlkodm9pZCwgZ2xUcmFuc2xhdGVmLCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6KQogR0xfRU5UUlkodm9pZCwgZ2xUcmFuc2xhdGV4LCBHTGZpeGVkIHgsIEdMZml4ZWQgeSwgR0xmaXhlZCB6KQogR0xfRU5UUlkodm9pZCwgZ2xUcmFuc2xhdGV4T0VTLCBHTGZpeGVkIHgsIEdMZml4ZWQgeSwgR0xmaXhlZCB6KQpAQCAtMzQzLDcgKzM3MCw3IEBACiBHTF9FTlRSWSh2b2lkLCBnbFZlcnRleEF0dHJpYjNmdiwgR0x1aW50IGluZHgsIGNvbnN0IEdMZmxvYXQqIHZhbHVlcykKIEdMX0VOVFJZKHZvaWQsIGdsVmVydGV4QXR0cmliNGYsIEdMdWludCBpbmR4LCBHTGZsb2F0IHgsIEdMZmxvYXQgeSwgR0xmbG9hdCB6LCBHTGZsb2F0IHcpCiBHTF9FTlRSWSh2b2lkLCBnbFZlcnRleEF0dHJpYjRmdiwgR0x1aW50IGluZHgsIGNvbnN0IEdMZmxvYXQqIHZhbHVlcykKLUdMX0VOVFJZKHZvaWQsIGdsVmVydGV4QXR0cmliUG9pbnRlciwgR0x1aW50IGluZHgsIEdMaW50IHNpemUsIEdMZW51bSB0eXBlLCBHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IHZvaWQqIHB0cikKK0dMX0VOVFJZKHZvaWQsIGdsVmVydGV4QXR0cmliUG9pbnRlciwgR0x1aW50IGluZHgsIEdMaW50IHNpemUsIEdMZW51bSB0eXBlLCBHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IEdMdm9pZCogcHRyKQogR0xfRU5UUlkodm9pZCwgZ2xWZXJ0ZXhQb2ludGVyLCBHTGludCBzaXplLCBHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IEdMdm9pZCAqcG9pbnRlcikKIEdMX0VOVFJZKHZvaWQsIGdsVmlld3BvcnQsIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0KQogR0xfRU5UUlkodm9pZCwgZ2xXZWlnaHRQb2ludGVyT0VTLCBHTGludCBzaXplLCBHTGVudW0gdHlwZSwgR0xzaXplaSBzdHJpZGUsIGNvbnN0IEdMdm9pZCAqcG9pbnRlcikKZGlmZiAtLWdpdCBhL29wZW5nbC90ZXN0cy9nbDJfYmFzaWMvZ2wyX2Jhc2ljLmNwcCBiL29wZW5nbC90ZXN0cy9nbDJfYmFzaWMvZ2wyX2Jhc2ljLmNwcAppbmRleCAyMzYxZGI1Li5mMjc0YzdjIDEwMDY0NAotLS0gYS9vcGVuZ2wvdGVzdHMvZ2wyX2Jhc2ljL2dsMl9iYXNpYy5jcHAKKysrIGIvb3BlbmdsL3Rlc3RzL2dsMl9iYXNpYy9nbDJfYmFzaWMuY3BwCkBAIC0xOTUsNyArMTk1LDYgQEAKICAgICBYKEVHTF9OQVRJVkVfUkVOREVSQUJMRSksCiAgICAgWChFR0xfTkFUSVZFX1ZJU1VBTF9JRCksCiAgICAgWChFR0xfTkFUSVZFX1ZJU1VBTF9UWVBFKSwKLSAgICBYKEVHTF9QUkVTRVJWRURfUkVTT1VSQ0VTKSwKICAgICBYKEVHTF9TQU1QTEVTKSwKICAgICBYKEVHTF9TQU1QTEVfQlVGRkVSUyksCiAgICAgWChFR0xfU1VSRkFDRV9UWVBFKSwKZGlmZiAtLWdpdCBhL29wZW5nbC90ZXN0cy9nbF9iYXNpYy9nbF9iYXNpYy5jcHAgYi9vcGVuZ2wvdGVzdHMvZ2xfYmFzaWMvZ2xfYmFzaWMuY3BwCmluZGV4IGZlYjk2NGEuLjBjYzgzOTggMTAwNjQ0Ci0tLSBhL29wZW5nbC90ZXN0cy9nbF9iYXNpYy9nbF9iYXNpYy5jcHAKKysrIGIvb3BlbmdsL3Rlc3RzL2dsX2Jhc2ljL2dsX2Jhc2ljLmNwcApAQCAtMTE0LDcgKzExNCw2IEBACiAgICAgWChFR0xfTkFUSVZFX1JFTkRFUkFCTEUpLAogICAgIFgoRUdMX05BVElWRV9WSVNVQUxfSUQpLAogICAgIFgoRUdMX05BVElWRV9WSVNVQUxfVFlQRSksCi0gICAgWChFR0xfUFJFU0VSVkVEX1JFU09VUkNFUyksCiAgICAgWChFR0xfU0FNUExFUyksCiAgICAgWChFR0xfU0FNUExFX0JVRkZFUlMpLAogICAgIFgoRUdMX1NVUkZBQ0VfVFlQRSksCmRpZmYgLS1naXQgYS9vcGVuZ2wvdGVzdHMvZ2xfam5pL2puaS9nbF9jb2RlLmNwcCBiL29wZW5nbC90ZXN0cy9nbF9qbmkvam5pL2dsX2NvZGUuY3BwCmluZGV4IDMzYjI1YWIuLmYwMzFjNzkgMTAwNjQ0Ci0tLSBhL29wZW5nbC90ZXN0cy9nbF9qbmkvam5pL2dsX2NvZGUuY3BwCisrKyBiL29wZW5nbC90ZXN0cy9nbF9qbmkvam5pL2dsX2NvZGUuY3BwCkBAIC0xODAsNCArMTgwLDUgQEAKIEpOSUVYUE9SVCB2b2lkIEpOSUNBTEwgSmF2YV9jb21fYW5kcm9pZF9nbGpuaV9HTEpOSUxpYl9jaGFuZ2VCYWNrZ3JvdW5kKEpOSUVudiAqIGVudiwgam9iamVjdCBvYmopCiB7CiAgICAgYmFja2dyb3VuZCA9IDEuMGYgLSBiYWNrZ3JvdW5kOwotfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK30KKwpkaWZmIC0tZ2l0IGEvb3BlbmdsL3Rvb2xzL2dsZ2VuL3NwZWNzL2dsZXMxMS9HTEVTMjAuc3BlYyBiL29wZW5nbC90b29scy9nbGdlbi9zcGVjcy9nbGVzMTEvR0xFUzIwLnNwZWMKaW5kZXggNjEwOTRkMS4uZWU4OGY1OSAxMDA2NDQKLS0tIGEvb3BlbmdsL3Rvb2xzL2dsZ2VuL3NwZWNzL2dsZXMxMS9HTEVTMjAuc3BlYworKysgYi9vcGVuZ2wvdG9vbHMvZ2xnZW4vc3BlY3MvZ2xlczExL0dMRVMyMC5zcGVjCkBAIC0zOSw2ICszOSw3IEBACiB2b2lkIGdsRGlzYWJsZSAoIEdMZW51bSBjYXAgKQ0KIHZvaWQgZ2xEaXNhYmxlVmVydGV4QXR0cmliQXJyYXkgKCBHTHVpbnQgaW5kZXggKQ0KIHZvaWQgZ2xEcmF3QXJyYXlzICggR0xlbnVtIG1vZGUsIEdMaW50IGZpcnN0LCBHTHNpemVpIGNvdW50ICkNCit2b2lkIGdsRHJhd0VsZW1lbnRzICggR0xlbnVtIG1vZGUsIEdMc2l6ZWkgY291bnQsIEdMZW51bSB0eXBlLCBHTGludCBvZmZzZXQgKQ0KIHZvaWQgZ2xEcmF3RWxlbWVudHMgKCBHTGVudW0gbW9kZSwgR0xzaXplaSBjb3VudCwgR0xlbnVtIHR5cGUsIGNvbnN0IEdMdm9pZCAqaW5kaWNlcyApDQogdm9pZCBnbEVuYWJsZSAoIEdMZW51bSBjYXAgKQ0KIHZvaWQgZ2xFbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSAoIEdMdWludCBpbmRleCApDQpAQCAtMTM4LDUgKzEzOSw2IEBACiB2b2lkIGdsVmVydGV4QXR0cmliM2Z2ICggR0x1aW50IGluZHgsIGNvbnN0IEdMZmxvYXQgKnZhbHVlcyApDQogdm9pZCBnbFZlcnRleEF0dHJpYjRmICggR0x1aW50IGluZHgsIEdMZmxvYXQgeCwgR0xmbG9hdCB5LCBHTGZsb2F0IHosIEdMZmxvYXQgdyApDQogdm9pZCBnbFZlcnRleEF0dHJpYjRmdiAoIEdMdWludCBpbmR4LCBjb25zdCBHTGZsb2F0ICp2YWx1ZXMgKQ0KK3ZvaWQgZ2xWZXJ0ZXhBdHRyaWJQb2ludGVyICggR0x1aW50IGluZHgsIEdMaW50IHNpemUsIEdMZW51bSB0eXBlLCBHTGJvb2xlYW4gbm9ybWFsaXplZCwgR0xzaXplaSBzdHJpZGUsIEdMaW50IG9mZnNldCApDQogdm9pZCBnbFZlcnRleEF0dHJpYlBvaW50ZXIgKCBHTHVpbnQgaW5keCwgR0xpbnQgc2l6ZSwgR0xlbnVtIHR5cGUsIEdMYm9vbGVhbiBub3JtYWxpemVkLCBHTHNpemVpIHN0cmlkZSwgY29uc3QgR0x2b2lkICpwdHIgKQ0KLXZvaWQgZ2xWaWV3cG9ydCAoIEdMaW50IHgsIEdMaW50IHksIEdMc2l6ZWkgd2lkdGgsIEdMc2l6ZWkgaGVpZ2h0ICkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCit2b2lkIGdsVmlld3BvcnQgKCBHTGludCB4LCBHTGludCB5LCBHTHNpemVpIHdpZHRoLCBHTHNpemVpIGhlaWdodCApDQpkaWZmIC0tZ2l0IGEvb3BlbmdsL3Rvb2xzL2dsZ2VuL3NyYy9KbmlDb2RlRW1pdHRlci5qYXZhIGIvb3BlbmdsL3Rvb2xzL2dsZ2VuL3NyYy9KbmlDb2RlRW1pdHRlci5qYXZhCmluZGV4IGViYWNhOTAuLjlkOGM1YTAgMTAwNjQ0Ci0tLSBhL29wZW5nbC90b29scy9nbGdlbi9zcmMvSm5pQ29kZUVtaXR0ZXIuamF2YQorKysgYi9vcGVuZ2wvdG9vbHMvZ2xnZW4vc3JjL0puaUNvZGVFbWl0dGVyLmphdmEKQEAgLTY5NSw3ICs2OTUsNyBAQAogICAgICAgICBib29sZWFuIGlzUG9pbnRlckZ1bmMgPSBpc1BvaW50ZXJGdW5jKGpmdW5jKTsKICAgICAgICAgYm9vbGVhbiBpc1ZCT1BvaW50ZXJGdW5jID0gKG91dE5hbWUuZW5kc1dpdGgoIlBvaW50ZXIiKSB8fAogICAgICAgICAgICAgICAgIG91dE5hbWUuZW5kc1dpdGgoIlBvaW50ZXJPRVMiKSB8fAotICAgICAgICAgICAgb3V0TmFtZS5lbmRzV2l0aCgiRHJhd0VsZW1lbnRzIikpICYmCisgICAgICAgICAgICBvdXROYW1lLmVuZHNXaXRoKCJEcmF3RWxlbWVudHMiKSB8fCBvdXROYW1lLmVuZHNXaXRoKCJWZXJ0ZXhBdHRyaWJQb2ludGVyIikpICYmCiAgICAgICAgICAgICAhamZ1bmMuZ2V0Q0Z1bmMoKS5oYXNQb2ludGVyQXJnKCk7CiAgICAgICAgIGlmIChpc1BvaW50ZXJGdW5jKSB7CiAgICAgICAgICAgICBvdXROYW1lICs9ICJCb3VuZHMiOwpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU2V0dGluZ3NQcm92aWRlci9BbmRyb2lkTWFuaWZlc3QueG1sIGIvcGFja2FnZXMvU2V0dGluZ3NQcm92aWRlci9BbmRyb2lkTWFuaWZlc3QueG1sCmluZGV4IGQwNTdhYjcuLmRkMGQwNjQgMTAwNjQ0Ci0tLSBhL3BhY2thZ2VzL1NldHRpbmdzUHJvdmlkZXIvQW5kcm9pZE1hbmlmZXN0LnhtbAorKysgYi9wYWNrYWdlcy9TZXR0aW5nc1Byb3ZpZGVyL0FuZHJvaWRNYW5pZmVzdC54bWwKQEAgLTgsNiArOCw4IEBACiAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6YmFja3VwQWdlbnQ9IlNldHRpbmdzQmFja3VwQWdlbnQiCiAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6a2lsbEFmdGVyUmVzdG9yZT0iZmFsc2UiCiAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6aWNvbj0iQGRyYXdhYmxlL2ljX2xhdW5jaGVyX3NldHRpbmdzIj4KKyAgICAgICAgICAgICAgICAgCisgICAgPCEtLSB0b2RvIGFkZDogYW5kcm9pZDpuZXZlckVuY3J5cHQ9InRydWUiIC0tPgogCiAgICAgICAgIDxwcm92aWRlciBhbmRyb2lkOm5hbWU9IlNldHRpbmdzUHJvdmlkZXIiIGFuZHJvaWQ6YXV0aG9yaXRpZXM9InNldHRpbmdzIgogICAgICAgICAgICAgICAgICAgYW5kcm9pZDptdWx0aXByb2Nlc3M9ImZhbHNlIgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU2V0dGluZ3NQcm92aWRlci9zcmMvY29tL2FuZHJvaWQvcHJvdmlkZXJzL3NldHRpbmdzL0RhdGFiYXNlSGVscGVyLmphdmEgYi9wYWNrYWdlcy9TZXR0aW5nc1Byb3ZpZGVyL3NyYy9jb20vYW5kcm9pZC9wcm92aWRlcnMvc2V0dGluZ3MvRGF0YWJhc2VIZWxwZXIuamF2YQppbmRleCAyYjQ3MTRkLi5jZDRmOTZkIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TZXR0aW5nc1Byb3ZpZGVyL3NyYy9jb20vYW5kcm9pZC9wcm92aWRlcnMvc2V0dGluZ3MvRGF0YWJhc2VIZWxwZXIuamF2YQorKysgYi9wYWNrYWdlcy9TZXR0aW5nc1Byb3ZpZGVyL3NyYy9jb20vYW5kcm9pZC9wcm92aWRlcnMvc2V0dGluZ3MvRGF0YWJhc2VIZWxwZXIuamF2YQpAQCAtOTUyLDcgKzk1Miw3IEBACiAgICAgICAgICAgICBpbnQgdmlicmF0ZSA9IDA7CiAgICAgICAgICAgICB2aWJyYXRlID0gQXVkaW9TZXJ2aWNlLmdldFZhbHVlRm9yVmlicmF0ZVNldHRpbmcodmlicmF0ZSwKICAgICAgICAgICAgICAgICAgICAgQXVkaW9NYW5hZ2VyLlZJQlJBVEVfVFlQRV9OT1RJRklDQVRJT04sIEF1ZGlvTWFuYWdlci5WSUJSQVRFX1NFVFRJTkdfT04pOwotICAgICAgICAgICAgdmlicmF0ZSA9IEF1ZGlvU2VydmljZS5nZXRWYWx1ZUZvclZpYnJhdGVTZXR0aW5nKHZpYnJhdGUsCisgICAgICAgICAgICB2aWJyYXRlIHw9IEF1ZGlvU2VydmljZS5nZXRWYWx1ZUZvclZpYnJhdGVTZXR0aW5nKHZpYnJhdGUsCiAgICAgICAgICAgICAgICAgICAgIEF1ZGlvTWFuYWdlci5WSUJSQVRFX1RZUEVfUklOR0VSLCBBdWRpb01hbmFnZXIuVklCUkFURV9TRVRUSU5HX09GRik7CiAgICAgICAgICAgICBsb2FkU2V0dGluZyhzdG10LCBTZXR0aW5ncy5TeXN0ZW0uVklCUkFURV9PTiwgdmlicmF0ZSk7CiAgICAgICAgIH0gZmluYWxseSB7CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TZXR0aW5nc1Byb3ZpZGVyL3NyYy9jb20vYW5kcm9pZC9wcm92aWRlcnMvc2V0dGluZ3MvU2V0dGluZ3NQcm92aWRlci5qYXZhIGIvcGFja2FnZXMvU2V0dGluZ3NQcm92aWRlci9zcmMvY29tL2FuZHJvaWQvcHJvdmlkZXJzL3NldHRpbmdzL1NldHRpbmdzUHJvdmlkZXIuamF2YQppbmRleCAxYjRiYTgxLi4xMDE5ZmE4IDEwMDY0NAotLS0gYS9wYWNrYWdlcy9TZXR0aW5nc1Byb3ZpZGVyL3NyYy9jb20vYW5kcm9pZC9wcm92aWRlcnMvc2V0dGluZ3MvU2V0dGluZ3NQcm92aWRlci5qYXZhCisrKyBiL3BhY2thZ2VzL1NldHRpbmdzUHJvdmlkZXIvc3JjL2NvbS9hbmRyb2lkL3Byb3ZpZGVycy9zZXR0aW5ncy9TZXR0aW5nc1Byb3ZpZGVyLmphdmEKQEAgLTM5OSw5ICszOTksMTIgQEAKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocHJlZml4ID09ICctJyAmJiBpbmRleCA+PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIHJlbW92ZSB0aGUgcHJvdmlkZXIgZnJvbSB0aGUgbGlzdCBpZiBwcmVzZW50Ci0gICAgICAgICAgICAgICAgICAgIC8vIHJlbW92ZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBjb21tYXMKLSAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID4gMCkgaW5kZXgtLTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGVuZCA8IHByb3ZpZGVycy5sZW5ndGgoKSkgZW5kKys7CisgICAgICAgICAgICAgICAgICAgIC8vIHJlbW92ZSBsZWFkaW5nIG9yIHRyYWlsaW5nIGNvbW1hCisgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4LS07CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZW5kIDwgcHJvdmlkZXJzLmxlbmd0aCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBlbmQrKzsKKyAgICAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgIG5ld1Byb3ZpZGVycyA9IHByb3ZpZGVycy5zdWJzdHJpbmcoMCwgaW5kZXgpOwogICAgICAgICAgICAgICAgICAgICBpZiAoZW5kIDwgcHJvdmlkZXJzLmxlbmd0aCgpKSB7CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9BbmRyb2lkLm1rIGIvcGFja2FnZXMvU3lzdGVtVUkvQW5kcm9pZC5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzgzNzY4Ci0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvQW5kcm9pZC5tawpAQCAtMCwwICsxLDEzIEBACitMT0NBTF9QQVRIOj0gJChjYWxsIG15LWRpcikKK2luY2x1ZGUgJChDTEVBUl9WQVJTKQorCitMT0NBTF9NT0RVTEVfVEFHUyA6PSBvcHRpb25hbAorCitMT0NBTF9TUkNfRklMRVMgOj0gJChjYWxsIGFsbC1zdWJkaXItamF2YS1maWxlcykKKworTE9DQUxfSkFWQV9MSUJSQVJJRVMgOj0gc2VydmljZXMKKworTE9DQUxfUEFDS0FHRV9OQU1FIDo9IFN5c3RlbVVJCitMT0NBTF9DRVJUSUZJQ0FURSA6PSBwbGF0Zm9ybQorCitpbmNsdWRlICQoQlVJTERfUEFDS0FHRSkKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL0FuZHJvaWRNYW5pZmVzdC54bWwgYi9wYWNrYWdlcy9TeXN0ZW1VSS9BbmRyb2lkTWFuaWZlc3QueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1MDQ1ZDcKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9BbmRyb2lkTWFuaWZlc3QueG1sCkBAIC0wLDAgKzEsMjQgQEAKKzxtYW5pZmVzdCB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAgICAgIHBhY2thZ2U9ImNvbS5hbmRyb2lkLnN5c3RlbXVpIgorICAgICAgICBhbmRyb2lkOnNoYXJlZFVzZXJJZD0iYW5kcm9pZC51aWQuc3lzdGVtIgorICAgICAgICBhbmRyb2lkOnByb2Nlc3M9InN5c3RlbSIKKyAgICAgICAgPgorCisgICAgPHVzZXMtcGVybWlzc2lvbiBhbmRyb2lkOm5hbWU9ImFuZHJvaWQucGVybWlzc2lvbi5TVEFUVVNfQkFSX1NFUlZJQ0UiIC8+CisKKyAgICA8YXBwbGljYXRpb24KKyAgICAgICAgYW5kcm9pZDphbGxvd0NsZWFyVXNlckRhdGE9ImZhbHNlIgorICAgICAgICBhbmRyb2lkOmxhYmVsPSJAc3RyaW5nL2FwcF9sYWJlbCIKKyAgICAgICAgYW5kcm9pZDppY29uPSJAZHJhd2FibGUvaWNfbGF1bmNoZXJfc2V0dGluZ3MiPgorICAgICAgICAgICAgICAgICAKKyAgICAgICAgPHNlcnZpY2UKKyAgICAgICAgICAgIGFuZHJvaWQ6bmFtZT0iLnN0YXR1c2Jhci5TdGF0dXNCYXJTZXJ2aWNlIgorICAgICAgICAgICAgYW5kcm9pZDpleHBvcnRlZD0iZmFsc2UiCisgICAgICAgICAgICAvPgorCisgICAgICAgIDxhY3Rpdml0eSBhbmRyb2lkOm5hbWU9Ii51c2IuVXNiU3RvcmFnZUFjdGl2aXR5IgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6ZXhjbHVkZUZyb21SZWNlbnRzPSJ0cnVlIj4KKyAgICAgICAgPC9hY3Rpdml0eT4KKworICAgIDwvYXBwbGljYXRpb24+Cis8L21hbmlmZXN0PgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvTU9EVUxFX0xJQ0VOU0VfQVBBQ0hFMiBiL3BhY2thZ2VzL1N5c3RlbVVJL01PRFVMRV9MSUNFTlNFX0FQQUNIRTIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL01PRFVMRV9MSUNFTlNFX0FQQUNIRTIKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL05PVElDRSBiL3BhY2thZ2VzL1N5c3RlbVVJL05PVElDRQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNWIxZWZhCi0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvTk9USUNFCkBAIC0wLDAgKzEsMTkwIEBACisKKyAgIENvcHlyaWdodCAoYykgMjAwNS0yMDA4LCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorCisgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcGFjaGUgTGljZW5zZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAyLjAsIEphbnVhcnkgMjAwNAorICAgICAgICAgICAgICAgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzLworCisgICBURVJNUyBBTkQgQ09ORElUSU9OUyBGT1IgVVNFLCBSRVBST0RVQ1RJT04sIEFORCBESVNUUklCVVRJT04KKworICAgMS4gRGVmaW5pdGlvbnMuCisKKyAgICAgICJMaWNlbnNlIiBzaGFsbCBtZWFuIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBmb3IgdXNlLCByZXByb2R1Y3Rpb24sCisgICAgICBhbmQgZGlzdHJpYnV0aW9uIGFzIGRlZmluZWQgYnkgU2VjdGlvbnMgMSB0aHJvdWdoIDkgb2YgdGhpcyBkb2N1bWVudC4KKworICAgICAgIkxpY2Vuc29yIiBzaGFsbCBtZWFuIHRoZSBjb3B5cmlnaHQgb3duZXIgb3IgZW50aXR5IGF1dGhvcml6ZWQgYnkKKyAgICAgIHRoZSBjb3B5cmlnaHQgb3duZXIgdGhhdCBpcyBncmFudGluZyB0aGUgTGljZW5zZS4KKworICAgICAgIkxlZ2FsIEVudGl0eSIgc2hhbGwgbWVhbiB0aGUgdW5pb24gb2YgdGhlIGFjdGluZyBlbnRpdHkgYW5kIGFsbAorICAgICAgb3RoZXIgZW50aXRpZXMgdGhhdCBjb250cm9sLCBhcmUgY29udHJvbGxlZCBieSwgb3IgYXJlIHVuZGVyIGNvbW1vbgorICAgICAgY29udHJvbCB3aXRoIHRoYXQgZW50aXR5LiBGb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwKKyAgICAgICJjb250cm9sIiBtZWFucyAoaSkgdGhlIHBvd2VyLCBkaXJlY3Qgb3IgaW5kaXJlY3QsIHRvIGNhdXNlIHRoZQorICAgICAgZGlyZWN0aW9uIG9yIG1hbmFnZW1lbnQgb2Ygc3VjaCBlbnRpdHksIHdoZXRoZXIgYnkgY29udHJhY3Qgb3IKKyAgICAgIG90aGVyd2lzZSwgb3IgKGlpKSBvd25lcnNoaXAgb2YgZmlmdHkgcGVyY2VudCAoNTAlKSBvciBtb3JlIG9mIHRoZQorICAgICAgb3V0c3RhbmRpbmcgc2hhcmVzLCBvciAoaWlpKSBiZW5lZmljaWFsIG93bmVyc2hpcCBvZiBzdWNoIGVudGl0eS4KKworICAgICAgIllvdSIgKG9yICJZb3VyIikgc2hhbGwgbWVhbiBhbiBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0eQorICAgICAgZXhlcmNpc2luZyBwZXJtaXNzaW9ucyBncmFudGVkIGJ5IHRoaXMgTGljZW5zZS4KKworICAgICAgIlNvdXJjZSIgZm9ybSBzaGFsbCBtZWFuIHRoZSBwcmVmZXJyZWQgZm9ybSBmb3IgbWFraW5nIG1vZGlmaWNhdGlvbnMsCisgICAgICBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIHNvZnR3YXJlIHNvdXJjZSBjb2RlLCBkb2N1bWVudGF0aW9uCisgICAgICBzb3VyY2UsIGFuZCBjb25maWd1cmF0aW9uIGZpbGVzLgorCisgICAgICAiT2JqZWN0IiBmb3JtIHNoYWxsIG1lYW4gYW55IGZvcm0gcmVzdWx0aW5nIGZyb20gbWVjaGFuaWNhbAorICAgICAgdHJhbnNmb3JtYXRpb24gb3IgdHJhbnNsYXRpb24gb2YgYSBTb3VyY2UgZm9ybSwgaW5jbHVkaW5nIGJ1dAorICAgICAgbm90IGxpbWl0ZWQgdG8gY29tcGlsZWQgb2JqZWN0IGNvZGUsIGdlbmVyYXRlZCBkb2N1bWVudGF0aW9uLAorICAgICAgYW5kIGNvbnZlcnNpb25zIHRvIG90aGVyIG1lZGlhIHR5cGVzLgorCisgICAgICAiV29yayIgc2hhbGwgbWVhbiB0aGUgd29yayBvZiBhdXRob3JzaGlwLCB3aGV0aGVyIGluIFNvdXJjZSBvcgorICAgICAgT2JqZWN0IGZvcm0sIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSBMaWNlbnNlLCBhcyBpbmRpY2F0ZWQgYnkgYQorICAgICAgY29weXJpZ2h0IG5vdGljZSB0aGF0IGlzIGluY2x1ZGVkIGluIG9yIGF0dGFjaGVkIHRvIHRoZSB3b3JrCisgICAgICAoYW4gZXhhbXBsZSBpcyBwcm92aWRlZCBpbiB0aGUgQXBwZW5kaXggYmVsb3cpLgorCisgICAgICAiRGVyaXZhdGl2ZSBXb3JrcyIgc2hhbGwgbWVhbiBhbnkgd29yaywgd2hldGhlciBpbiBTb3VyY2Ugb3IgT2JqZWN0CisgICAgICBmb3JtLCB0aGF0IGlzIGJhc2VkIG9uIChvciBkZXJpdmVkIGZyb20pIHRoZSBXb3JrIGFuZCBmb3Igd2hpY2ggdGhlCisgICAgICBlZGl0b3JpYWwgcmV2aXNpb25zLCBhbm5vdGF0aW9ucywgZWxhYm9yYXRpb25zLCBvciBvdGhlciBtb2RpZmljYXRpb25zCisgICAgICByZXByZXNlbnQsIGFzIGEgd2hvbGUsIGFuIG9yaWdpbmFsIHdvcmsgb2YgYXV0aG9yc2hpcC4gRm9yIHRoZSBwdXJwb3NlcworICAgICAgb2YgdGhpcyBMaWNlbnNlLCBEZXJpdmF0aXZlIFdvcmtzIHNoYWxsIG5vdCBpbmNsdWRlIHdvcmtzIHRoYXQgcmVtYWluCisgICAgICBzZXBhcmFibGUgZnJvbSwgb3IgbWVyZWx5IGxpbmsgKG9yIGJpbmQgYnkgbmFtZSkgdG8gdGhlIGludGVyZmFjZXMgb2YsCisgICAgICB0aGUgV29yayBhbmQgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mLgorCisgICAgICAiQ29udHJpYnV0aW9uIiBzaGFsbCBtZWFuIGFueSB3b3JrIG9mIGF1dGhvcnNoaXAsIGluY2x1ZGluZworICAgICAgdGhlIG9yaWdpbmFsIHZlcnNpb24gb2YgdGhlIFdvcmsgYW5kIGFueSBtb2RpZmljYXRpb25zIG9yIGFkZGl0aW9ucworICAgICAgdG8gdGhhdCBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiwgdGhhdCBpcyBpbnRlbnRpb25hbGx5CisgICAgICBzdWJtaXR0ZWQgdG8gTGljZW5zb3IgZm9yIGluY2x1c2lvbiBpbiB0aGUgV29yayBieSB0aGUgY29weXJpZ2h0IG93bmVyCisgICAgICBvciBieSBhbiBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0eSBhdXRob3JpemVkIHRvIHN1Ym1pdCBvbiBiZWhhbGYgb2YKKyAgICAgIHRoZSBjb3B5cmlnaHQgb3duZXIuIEZvciB0aGUgcHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9uLCAic3VibWl0dGVkIgorICAgICAgbWVhbnMgYW55IGZvcm0gb2YgZWxlY3Ryb25pYywgdmVyYmFsLCBvciB3cml0dGVuIGNvbW11bmljYXRpb24gc2VudAorICAgICAgdG8gdGhlIExpY2Vuc29yIG9yIGl0cyByZXByZXNlbnRhdGl2ZXMsIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8KKyAgICAgIGNvbW11bmljYXRpb24gb24gZWxlY3Ryb25pYyBtYWlsaW5nIGxpc3RzLCBzb3VyY2UgY29kZSBjb250cm9sIHN5c3RlbXMsCisgICAgICBhbmQgaXNzdWUgdHJhY2tpbmcgc3lzdGVtcyB0aGF0IGFyZSBtYW5hZ2VkIGJ5LCBvciBvbiBiZWhhbGYgb2YsIHRoZQorICAgICAgTGljZW5zb3IgZm9yIHRoZSBwdXJwb3NlIG9mIGRpc2N1c3NpbmcgYW5kIGltcHJvdmluZyB0aGUgV29yaywgYnV0CisgICAgICBleGNsdWRpbmcgY29tbXVuaWNhdGlvbiB0aGF0IGlzIGNvbnNwaWN1b3VzbHkgbWFya2VkIG9yIG90aGVyd2lzZQorICAgICAgZGVzaWduYXRlZCBpbiB3cml0aW5nIGJ5IHRoZSBjb3B5cmlnaHQgb3duZXIgYXMgIk5vdCBhIENvbnRyaWJ1dGlvbi4iCisKKyAgICAgICJDb250cmlidXRvciIgc2hhbGwgbWVhbiBMaWNlbnNvciBhbmQgYW55IGluZGl2aWR1YWwgb3IgTGVnYWwgRW50aXR5CisgICAgICBvbiBiZWhhbGYgb2Ygd2hvbSBhIENvbnRyaWJ1dGlvbiBoYXMgYmVlbiByZWNlaXZlZCBieSBMaWNlbnNvciBhbmQKKyAgICAgIHN1YnNlcXVlbnRseSBpbmNvcnBvcmF0ZWQgd2l0aGluIHRoZSBXb3JrLgorCisgICAyLiBHcmFudCBvZiBDb3B5cmlnaHQgTGljZW5zZS4gU3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YKKyAgICAgIHRoaXMgTGljZW5zZSwgZWFjaCBDb250cmlidXRvciBoZXJlYnkgZ3JhbnRzIHRvIFlvdSBhIHBlcnBldHVhbCwKKyAgICAgIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlCisgICAgICBjb3B5cmlnaHQgbGljZW5zZSB0byByZXByb2R1Y2UsIHByZXBhcmUgRGVyaXZhdGl2ZSBXb3JrcyBvZiwKKyAgICAgIHB1YmxpY2x5IGRpc3BsYXksIHB1YmxpY2x5IHBlcmZvcm0sIHN1YmxpY2Vuc2UsIGFuZCBkaXN0cmlidXRlIHRoZQorICAgICAgV29yayBhbmQgc3VjaCBEZXJpdmF0aXZlIFdvcmtzIGluIFNvdXJjZSBvciBPYmplY3QgZm9ybS4KKworICAgMy4gR3JhbnQgb2YgUGF0ZW50IExpY2Vuc2UuIFN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mCisgICAgICB0aGlzIExpY2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJwZXR1YWwsCisgICAgICB3b3JsZHdpZGUsIG5vbi1leGNsdXNpdmUsIG5vLWNoYXJnZSwgcm95YWx0eS1mcmVlLCBpcnJldm9jYWJsZQorICAgICAgKGV4Y2VwdCBhcyBzdGF0ZWQgaW4gdGhpcyBzZWN0aW9uKSBwYXRlbnQgbGljZW5zZSB0byBtYWtlLCBoYXZlIG1hZGUsCisgICAgICB1c2UsIG9mZmVyIHRvIHNlbGwsIHNlbGwsIGltcG9ydCwgYW5kIG90aGVyd2lzZSB0cmFuc2ZlciB0aGUgV29yaywKKyAgICAgIHdoZXJlIHN1Y2ggbGljZW5zZSBhcHBsaWVzIG9ubHkgdG8gdGhvc2UgcGF0ZW50IGNsYWltcyBsaWNlbnNhYmxlCisgICAgICBieSBzdWNoIENvbnRyaWJ1dG9yIHRoYXQgYXJlIG5lY2Vzc2FyaWx5IGluZnJpbmdlZCBieSB0aGVpcgorICAgICAgQ29udHJpYnV0aW9uKHMpIGFsb25lIG9yIGJ5IGNvbWJpbmF0aW9uIG9mIHRoZWlyIENvbnRyaWJ1dGlvbihzKQorICAgICAgd2l0aCB0aGUgV29yayB0byB3aGljaCBzdWNoIENvbnRyaWJ1dGlvbihzKSB3YXMgc3VibWl0dGVkLiBJZiBZb3UKKyAgICAgIGluc3RpdHV0ZSBwYXRlbnQgbGl0aWdhdGlvbiBhZ2FpbnN0IGFueSBlbnRpdHkgKGluY2x1ZGluZyBhCisgICAgICBjcm9zcy1jbGFpbSBvciBjb3VudGVyY2xhaW0gaW4gYSBsYXdzdWl0KSBhbGxlZ2luZyB0aGF0IHRoZSBXb3JrCisgICAgICBvciBhIENvbnRyaWJ1dGlvbiBpbmNvcnBvcmF0ZWQgd2l0aGluIHRoZSBXb3JrIGNvbnN0aXR1dGVzIGRpcmVjdAorICAgICAgb3IgY29udHJpYnV0b3J5IHBhdGVudCBpbmZyaW5nZW1lbnQsIHRoZW4gYW55IHBhdGVudCBsaWNlbnNlcworICAgICAgZ3JhbnRlZCB0byBZb3UgdW5kZXIgdGhpcyBMaWNlbnNlIGZvciB0aGF0IFdvcmsgc2hhbGwgdGVybWluYXRlCisgICAgICBhcyBvZiB0aGUgZGF0ZSBzdWNoIGxpdGlnYXRpb24gaXMgZmlsZWQuCisKKyAgIDQuIFJlZGlzdHJpYnV0aW9uLiBZb3UgbWF5IHJlcHJvZHVjZSBhbmQgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlCisgICAgICBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiBpbiBhbnkgbWVkaXVtLCB3aXRoIG9yIHdpdGhvdXQKKyAgICAgIG1vZGlmaWNhdGlvbnMsIGFuZCBpbiBTb3VyY2Ugb3IgT2JqZWN0IGZvcm0sIHByb3ZpZGVkIHRoYXQgWW91CisgICAgICBtZWV0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKworICAgICAgKGEpIFlvdSBtdXN0IGdpdmUgYW55IG90aGVyIHJlY2lwaWVudHMgb2YgdGhlIFdvcmsgb3IKKyAgICAgICAgICBEZXJpdmF0aXZlIFdvcmtzIGEgY29weSBvZiB0aGlzIExpY2Vuc2U7IGFuZAorCisgICAgICAoYikgWW91IG11c3QgY2F1c2UgYW55IG1vZGlmaWVkIGZpbGVzIHRvIGNhcnJ5IHByb21pbmVudCBub3RpY2VzCisgICAgICAgICAgc3RhdGluZyB0aGF0IFlvdSBjaGFuZ2VkIHRoZSBmaWxlczsgYW5kCisKKyAgICAgIChjKSBZb3UgbXVzdCByZXRhaW4sIGluIHRoZSBTb3VyY2UgZm9ybSBvZiBhbnkgRGVyaXZhdGl2ZSBXb3JrcworICAgICAgICAgIHRoYXQgWW91IGRpc3RyaWJ1dGUsIGFsbCBjb3B5cmlnaHQsIHBhdGVudCwgdHJhZGVtYXJrLCBhbmQKKyAgICAgICAgICBhdHRyaWJ1dGlvbiBub3RpY2VzIGZyb20gdGhlIFNvdXJjZSBmb3JtIG9mIHRoZSBXb3JrLAorICAgICAgICAgIGV4Y2x1ZGluZyB0aG9zZSBub3RpY2VzIHRoYXQgZG8gbm90IHBlcnRhaW4gdG8gYW55IHBhcnQgb2YKKyAgICAgICAgICB0aGUgRGVyaXZhdGl2ZSBXb3JrczsgYW5kCisKKyAgICAgIChkKSBJZiB0aGUgV29yayBpbmNsdWRlcyBhICJOT1RJQ0UiIHRleHQgZmlsZSBhcyBwYXJ0IG9mIGl0cworICAgICAgICAgIGRpc3RyaWJ1dGlvbiwgdGhlbiBhbnkgRGVyaXZhdGl2ZSBXb3JrcyB0aGF0IFlvdSBkaXN0cmlidXRlIG11c3QKKyAgICAgICAgICBpbmNsdWRlIGEgcmVhZGFibGUgY29weSBvZiB0aGUgYXR0cmlidXRpb24gbm90aWNlcyBjb250YWluZWQKKyAgICAgICAgICB3aXRoaW4gc3VjaCBOT1RJQ0UgZmlsZSwgZXhjbHVkaW5nIHRob3NlIG5vdGljZXMgdGhhdCBkbyBub3QKKyAgICAgICAgICBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtzLCBpbiBhdCBsZWFzdCBvbmUKKyAgICAgICAgICBvZiB0aGUgZm9sbG93aW5nIHBsYWNlczogd2l0aGluIGEgTk9USUNFIHRleHQgZmlsZSBkaXN0cmlidXRlZAorICAgICAgICAgIGFzIHBhcnQgb2YgdGhlIERlcml2YXRpdmUgV29ya3M7IHdpdGhpbiB0aGUgU291cmNlIGZvcm0gb3IKKyAgICAgICAgICBkb2N1bWVudGF0aW9uLCBpZiBwcm92aWRlZCBhbG9uZyB3aXRoIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyBvciwKKyAgICAgICAgICB3aXRoaW4gYSBkaXNwbGF5IGdlbmVyYXRlZCBieSB0aGUgRGVyaXZhdGl2ZSBXb3JrcywgaWYgYW5kCisgICAgICAgICAgd2hlcmV2ZXIgc3VjaCB0aGlyZC1wYXJ0eSBub3RpY2VzIG5vcm1hbGx5IGFwcGVhci4gVGhlIGNvbnRlbnRzCisgICAgICAgICAgb2YgdGhlIE5PVElDRSBmaWxlIGFyZSBmb3IgaW5mb3JtYXRpb25hbCBwdXJwb3NlcyBvbmx5IGFuZAorICAgICAgICAgIGRvIG5vdCBtb2RpZnkgdGhlIExpY2Vuc2UuIFlvdSBtYXkgYWRkIFlvdXIgb3duIGF0dHJpYnV0aW9uCisgICAgICAgICAgbm90aWNlcyB3aXRoaW4gRGVyaXZhdGl2ZSBXb3JrcyB0aGF0IFlvdSBkaXN0cmlidXRlLCBhbG9uZ3NpZGUKKyAgICAgICAgICBvciBhcyBhbiBhZGRlbmR1bSB0byB0aGUgTk9USUNFIHRleHQgZnJvbSB0aGUgV29yaywgcHJvdmlkZWQKKyAgICAgICAgICB0aGF0IHN1Y2ggYWRkaXRpb25hbCBhdHRyaWJ1dGlvbiBub3RpY2VzIGNhbm5vdCBiZSBjb25zdHJ1ZWQKKyAgICAgICAgICBhcyBtb2RpZnlpbmcgdGhlIExpY2Vuc2UuCisKKyAgICAgIFlvdSBtYXkgYWRkIFlvdXIgb3duIGNvcHlyaWdodCBzdGF0ZW1lbnQgdG8gWW91ciBtb2RpZmljYXRpb25zIGFuZAorICAgICAgbWF5IHByb3ZpZGUgYWRkaXRpb25hbCBvciBkaWZmZXJlbnQgbGljZW5zZSB0ZXJtcyBhbmQgY29uZGl0aW9ucworICAgICAgZm9yIHVzZSwgcmVwcm9kdWN0aW9uLCBvciBkaXN0cmlidXRpb24gb2YgWW91ciBtb2RpZmljYXRpb25zLCBvcgorICAgICAgZm9yIGFueSBzdWNoIERlcml2YXRpdmUgV29ya3MgYXMgYSB3aG9sZSwgcHJvdmlkZWQgWW91ciB1c2UsCisgICAgICByZXByb2R1Y3Rpb24sIGFuZCBkaXN0cmlidXRpb24gb2YgdGhlIFdvcmsgb3RoZXJ3aXNlIGNvbXBsaWVzIHdpdGgKKyAgICAgIHRoZSBjb25kaXRpb25zIHN0YXRlZCBpbiB0aGlzIExpY2Vuc2UuCisKKyAgIDUuIFN1Ym1pc3Npb24gb2YgQ29udHJpYnV0aW9ucy4gVW5sZXNzIFlvdSBleHBsaWNpdGx5IHN0YXRlIG90aGVyd2lzZSwKKyAgICAgIGFueSBDb250cmlidXRpb24gaW50ZW50aW9uYWxseSBzdWJtaXR0ZWQgZm9yIGluY2x1c2lvbiBpbiB0aGUgV29yaworICAgICAgYnkgWW91IHRvIHRoZSBMaWNlbnNvciBzaGFsbCBiZSB1bmRlciB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YKKyAgICAgIHRoaXMgTGljZW5zZSwgd2l0aG91dCBhbnkgYWRkaXRpb25hbCB0ZXJtcyBvciBjb25kaXRpb25zLgorICAgICAgTm90d2l0aHN0YW5kaW5nIHRoZSBhYm92ZSwgbm90aGluZyBoZXJlaW4gc2hhbGwgc3VwZXJzZWRlIG9yIG1vZGlmeQorICAgICAgdGhlIHRlcm1zIG9mIGFueSBzZXBhcmF0ZSBsaWNlbnNlIGFncmVlbWVudCB5b3UgbWF5IGhhdmUgZXhlY3V0ZWQKKyAgICAgIHdpdGggTGljZW5zb3IgcmVnYXJkaW5nIHN1Y2ggQ29udHJpYnV0aW9ucy4KKworICAgNi4gVHJhZGVtYXJrcy4gVGhpcyBMaWNlbnNlIGRvZXMgbm90IGdyYW50IHBlcm1pc3Npb24gdG8gdXNlIHRoZSB0cmFkZQorICAgICAgbmFtZXMsIHRyYWRlbWFya3MsIHNlcnZpY2UgbWFya3MsIG9yIHByb2R1Y3QgbmFtZXMgb2YgdGhlIExpY2Vuc29yLAorICAgICAgZXhjZXB0IGFzIHJlcXVpcmVkIGZvciByZWFzb25hYmxlIGFuZCBjdXN0b21hcnkgdXNlIGluIGRlc2NyaWJpbmcgdGhlCisgICAgICBvcmlnaW4gb2YgdGhlIFdvcmsgYW5kIHJlcHJvZHVjaW5nIHRoZSBjb250ZW50IG9mIHRoZSBOT1RJQ0UgZmlsZS4KKworICAgNy4gRGlzY2xhaW1lciBvZiBXYXJyYW50eS4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yCisgICAgICBhZ3JlZWQgdG8gaW4gd3JpdGluZywgTGljZW5zb3IgcHJvdmlkZXMgdGhlIFdvcmsgKGFuZCBlYWNoCisgICAgICBDb250cmlidXRvciBwcm92aWRlcyBpdHMgQ29udHJpYnV0aW9ucykgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvcgorICAgICAgaW1wbGllZCwgaW5jbHVkaW5nLCB3aXRob3V0IGxpbWl0YXRpb24sIGFueSB3YXJyYW50aWVzIG9yIGNvbmRpdGlvbnMKKyAgICAgIG9mIFRJVExFLCBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFksIG9yIEZJVE5FU1MgRk9SIEEKKyAgICAgIFBBUlRJQ1VMQVIgUFVSUE9TRS4gWW91IGFyZSBzb2xlbHkgcmVzcG9uc2libGUgZm9yIGRldGVybWluaW5nIHRoZQorICAgICAgYXBwcm9wcmlhdGVuZXNzIG9mIHVzaW5nIG9yIHJlZGlzdHJpYnV0aW5nIHRoZSBXb3JrIGFuZCBhc3N1bWUgYW55CisgICAgICByaXNrcyBhc3NvY2lhdGVkIHdpdGggWW91ciBleGVyY2lzZSBvZiBwZXJtaXNzaW9ucyB1bmRlciB0aGlzIExpY2Vuc2UuCisKKyAgIDguIExpbWl0YXRpb24gb2YgTGlhYmlsaXR5LiBJbiBubyBldmVudCBhbmQgdW5kZXIgbm8gbGVnYWwgdGhlb3J5LAorICAgICAgd2hldGhlciBpbiB0b3J0IChpbmNsdWRpbmcgbmVnbGlnZW5jZSksIGNvbnRyYWN0LCBvciBvdGhlcndpc2UsCisgICAgICB1bmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgKHN1Y2ggYXMgZGVsaWJlcmF0ZSBhbmQgZ3Jvc3NseQorICAgICAgbmVnbGlnZW50IGFjdHMpIG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzaGFsbCBhbnkgQ29udHJpYnV0b3IgYmUKKyAgICAgIGxpYWJsZSB0byBZb3UgZm9yIGRhbWFnZXMsIGluY2x1ZGluZyBhbnkgZGlyZWN0LCBpbmRpcmVjdCwgc3BlY2lhbCwKKyAgICAgIGluY2lkZW50YWwsIG9yIGNvbnNlcXVlbnRpYWwgZGFtYWdlcyBvZiBhbnkgY2hhcmFjdGVyIGFyaXNpbmcgYXMgYQorICAgICAgcmVzdWx0IG9mIHRoaXMgTGljZW5zZSBvciBvdXQgb2YgdGhlIHVzZSBvciBpbmFiaWxpdHkgdG8gdXNlIHRoZQorICAgICAgV29yayAoaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byBkYW1hZ2VzIGZvciBsb3NzIG9mIGdvb2R3aWxsLAorICAgICAgd29yayBzdG9wcGFnZSwgY29tcHV0ZXIgZmFpbHVyZSBvciBtYWxmdW5jdGlvbiwgb3IgYW55IGFuZCBhbGwKKyAgICAgIG90aGVyIGNvbW1lcmNpYWwgZGFtYWdlcyBvciBsb3NzZXMpLCBldmVuIGlmIHN1Y2ggQ29udHJpYnV0b3IKKyAgICAgIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHN1Y2ggZGFtYWdlcy4KKworICAgOS4gQWNjZXB0aW5nIFdhcnJhbnR5IG9yIEFkZGl0aW9uYWwgTGlhYmlsaXR5LiBXaGlsZSByZWRpc3RyaWJ1dGluZworICAgICAgdGhlIFdvcmsgb3IgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mLCBZb3UgbWF5IGNob29zZSB0byBvZmZlciwKKyAgICAgIGFuZCBjaGFyZ2UgYSBmZWUgZm9yLCBhY2NlcHRhbmNlIG9mIHN1cHBvcnQsIHdhcnJhbnR5LCBpbmRlbW5pdHksCisgICAgICBvciBvdGhlciBsaWFiaWxpdHkgb2JsaWdhdGlvbnMgYW5kL29yIHJpZ2h0cyBjb25zaXN0ZW50IHdpdGggdGhpcworICAgICAgTGljZW5zZS4gSG93ZXZlciwgaW4gYWNjZXB0aW5nIHN1Y2ggb2JsaWdhdGlvbnMsIFlvdSBtYXkgYWN0IG9ubHkKKyAgICAgIG9uIFlvdXIgb3duIGJlaGFsZiBhbmQgb24gWW91ciBzb2xlIHJlc3BvbnNpYmlsaXR5LCBub3Qgb24gYmVoYWxmCisgICAgICBvZiBhbnkgb3RoZXIgQ29udHJpYnV0b3IsIGFuZCBvbmx5IGlmIFlvdSBhZ3JlZSB0byBpbmRlbW5pZnksCisgICAgICBkZWZlbmQsIGFuZCBob2xkIGVhY2ggQ29udHJpYnV0b3IgaGFybWxlc3MgZm9yIGFueSBsaWFiaWxpdHkKKyAgICAgIGluY3VycmVkIGJ5LCBvciBjbGFpbXMgYXNzZXJ0ZWQgYWdhaW5zdCwgc3VjaCBDb250cmlidXRvciBieSByZWFzb24KKyAgICAgIG9mIHlvdXIgYWNjZXB0aW5nIGFueSBzdWNoIHdhcnJhbnR5IG9yIGFkZGl0aW9uYWwgbGlhYmlsaXR5LgorCisgICBFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKKwpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvYWxlcnRfYmFyX2JhY2tncm91bmRfbm9ybWFsLjkucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvYWxlcnRfYmFyX2JhY2tncm91bmRfbm9ybWFsLjkucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjMTI3YmQKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9hbGVydF9iYXJfYmFja2dyb3VuZF9ub3JtYWwuOS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvYWxlcnRfYmFyX2JhY2tncm91bmRfcHJlc3NlZC45LnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL2FsZXJ0X2Jhcl9iYWNrZ3JvdW5kX3ByZXNzZWQuOS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTlhZjgwNAotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL2FsZXJ0X2Jhcl9iYWNrZ3JvdW5kX3ByZXNzZWQuOS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvYmF0dGVyeV9sb3dfYmF0dGVyeS5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9iYXR0ZXJ5X2xvd19iYXR0ZXJ5LnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvYmF0dGVyeV9sb3dfYmF0dGVyeS5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL2JhdHRlcnlfbG93X2JhdHRlcnkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL2J0bl9kZWZhdWx0X3NtYWxsX25vcm1hbC45LnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL2J0bl9kZWZhdWx0X3NtYWxsX25vcm1hbC45LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWFmZWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvYnRuX2RlZmF1bHRfc21hbGxfbm9ybWFsLjkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL2J0bl9kZWZhdWx0X3NtYWxsX25vcm1hbF9kaXNhYmxlLjkucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvYnRuX2RlZmF1bHRfc21hbGxfbm9ybWFsX2Rpc2FibGUuOS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTc1MTk3YgotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL2J0bl9kZWZhdWx0X3NtYWxsX25vcm1hbF9kaXNhYmxlLjkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL2J0bl9kZWZhdWx0X3NtYWxsX25vcm1hbF9kaXNhYmxlX2ZvY3VzZWQuOS5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9idG5fZGVmYXVsdF9zbWFsbF9ub3JtYWxfZGlzYWJsZV9mb2N1c2VkLjkucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjMWZlZmYKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9idG5fZGVmYXVsdF9zbWFsbF9ub3JtYWxfZGlzYWJsZV9mb2N1c2VkLjkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL2J0bl9kZWZhdWx0X3NtYWxsX3ByZXNzZWQuOS5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9idG5fZGVmYXVsdF9zbWFsbF9wcmVzc2VkLjkucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxZjlhMGYKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9idG5fZGVmYXVsdF9zbWFsbF9wcmVzc2VkLjkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL2J0bl9kZWZhdWx0X3NtYWxsX3NlbGVjdGVkLjkucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvYnRuX2RlZmF1bHRfc21hbGxfc2VsZWN0ZWQuOS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGVhM2Y0MAotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL2J0bl9kZWZhdWx0X3NtYWxsX3NlbGVjdGVkLjkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL2ljX2xhdW5jaGVyX3NldHRpbmdzLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL2ljX2xhdW5jaGVyX3NldHRpbmdzLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjM0YTdmCi0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvaWNfbGF1bmNoZXJfc2V0dGluZ3MucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL2ljX25vdGlmaWNhdGlvbl9vdmVybGF5LjkucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvaWNfbm90aWZpY2F0aW9uX292ZXJsYXkuOS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQ0MTc4ZgotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL2ljX25vdGlmaWNhdGlvbl9vdmVybGF5LjkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3NoYWRlX2JnLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3NoYWRlX2JnLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZDAwY2QwCi0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc2hhZGVfYmcucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3NoYWRlX2hhbmRsZWJhci45LnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3NoYWRlX2hhbmRsZWJhci45LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzEzZmZiCi0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc2hhZGVfaGFuZGxlYmFyLjkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3NoYWRlX2hlYWRlcl9iYWNrZ3JvdW5kLjkucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc2hhZGVfaGVhZGVyX2JhY2tncm91bmQuOS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzdiNWZlZgotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3NoYWRlX2hlYWRlcl9iYWNrZ3JvdW5kLjkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfbm90aWZ5X2FsYXJtLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfbm90aWZ5X2FsYXJtLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9ub3RpZnlfYWxhcm0ucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X25vdGlmeV9hbGFybS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9ub3RpZnlfbW9yZS5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X25vdGlmeV9tb3JlLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xYzdmOWRiCi0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9ub3RpZnlfbW9yZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9ibHVldG9vdGgucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9ibHVldG9vdGgucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2ZGMwODUKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX2JsdWV0b290aC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9ibHVldG9vdGhfY29ubmVjdGVkLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfYmx1ZXRvb3RoX2Nvbm5lY3RlZC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfYmx1ZXRvb3RoX2Nvbm5lY3RlZC5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfYmx1ZXRvb3RoX2Nvbm5lY3RlZC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9jb25uZWN0ZWRfMXgucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9jb25uZWN0ZWRfMXgucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX2Nvbm5lY3RlZF8xeC5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfY29ubmVjdGVkXzF4LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX2Nvbm5lY3RlZF8zZy5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX2Nvbm5lY3RlZF8zZy5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfY29ubmVjdGVkXzNnLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9jb25uZWN0ZWRfM2cucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfY29ubmVjdGVkX2UucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9jb25uZWN0ZWRfZS5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfY29ubmVjdGVkX2UucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX2Nvbm5lY3RlZF9lLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX2Nvbm5lY3RlZF9nLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfY29ubmVjdGVkX2cucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX2Nvbm5lY3RlZF9nLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9jb25uZWN0ZWRfZy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9jb25uZWN0ZWRfaC5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX2Nvbm5lY3RlZF9oLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9jb25uZWN0ZWRfaC5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfY29ubmVjdGVkX2gucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfaW5fMXgucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9pbl8xeC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfaW5fMXgucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX2luXzF4LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX2luXzNnLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfaW5fM2cucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX2luXzNnLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9pbl8zZy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9pbl9lLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfaW5fZS5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfaW5fZS5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfaW5fZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9pbl9nLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfaW5fZy5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfaW5fZy5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfaW5fZy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9pbl9oLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfaW5faC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfaW5faC5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfaW5faC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF8xeC5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX2luYW5kb3V0XzF4LnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF8xeC5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfaW5hbmRvdXRfMXgucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfaW5hbmRvdXRfM2cucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF8zZy5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfaW5hbmRvdXRfM2cucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX2luYW5kb3V0XzNnLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX2luYW5kb3V0X2UucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF9lLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF9lLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF9lLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX2luYW5kb3V0X2cucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF9nLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF9nLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF9nLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX2luYW5kb3V0X2gucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF9oLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF9oLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF9oLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX291dF8xeC5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX291dF8xeC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfb3V0XzF4LnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9vdXRfMXgucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfb3V0XzNnLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfb3V0XzNnLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9vdXRfM2cucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX291dF8zZy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9vdXRfZS5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX291dF9lLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9vdXRfZS5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfb3V0X2UucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfb3V0X2cucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9vdXRfZy5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfb3V0X2cucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX291dF9nLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX291dF9oLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2RhdGFfb3V0X2gucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19kYXRhX291dF9oLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZGF0YV9vdXRfaC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZ3BzX2FjcXVpcmluZy5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19ncHNfYWNxdWlyaW5nLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfZ3BzX2FjcXVpcmluZy5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX2dwc19hY3F1aXJpbmcucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX25vX3NpbS5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19ub19zaW0ucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19ub19zaW0ucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19ub19zaW0ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3Jfc2lnbmFsXzAucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfcl9zaWduYWxfMC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3Jfc2lnbmFsXzAucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19yX3NpZ25hbF8wLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19yX3NpZ25hbF8xLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3Jfc2lnbmFsXzEucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19yX3NpZ25hbF8xLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfcl9zaWduYWxfMS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfcl9zaWduYWxfMi5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19yX3NpZ25hbF8yLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfcl9zaWduYWxfMi5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3Jfc2lnbmFsXzIucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3Jfc2lnbmFsXzMucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfcl9zaWduYWxfMy5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3Jfc2lnbmFsXzMucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19yX3NpZ25hbF8zLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19yX3NpZ25hbF80LnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3Jfc2lnbmFsXzQucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19yX3NpZ25hbF80LnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfcl9zaWduYWxfNC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfcmluZ2VyX3NpbGVudC5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19yaW5nZXJfc2lsZW50LnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfcmluZ2VyX3NpbGVudC5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3Jpbmdlcl9zaWxlbnQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3Jpbmdlcl92aWJyYXRlLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3Jpbmdlcl92aWJyYXRlLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfcmluZ2VyX3ZpYnJhdGUucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19yaW5nZXJfdmlicmF0ZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19yb2FtaW5nX2NkbWFfMC5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19yb2FtaW5nX2NkbWFfZmxhc2hfYW5pbTAucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfcm9hbWluZ19jZG1hX2ZsYXNoX2FuaW0wLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfcm9hbWluZ19jZG1hX2ZsYXNoX2FuaW0wLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfcm9hbWluZ19jZG1hX2ZsYXNoX2FuaW0wLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19yb2FtaW5nX2NkbWFfZmxhc2hfYW5pbTEucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfcm9hbWluZ19jZG1hX2ZsYXNoX2FuaW0xLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfcm9hbWluZ19jZG1hX2ZsYXNoX2FuaW0xLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfcm9hbWluZ19jZG1hX2ZsYXNoX2FuaW0xLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19zaWduYWxfMC5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19zaWduYWxfMC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3NpZ25hbF8wLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfc2lnbmFsXzAucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3NpZ25hbF8xLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3NpZ25hbF8xLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfc2lnbmFsXzEucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19zaWduYWxfMS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfc2lnbmFsXzIucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfc2lnbmFsXzIucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19zaWduYWxfMi5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3NpZ25hbF8yLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19zaWduYWxfMy5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19zaWduYWxfMy5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3NpZ25hbF8zLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfc2lnbmFsXzMucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3NpZ25hbF80LnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3NpZ25hbF80LnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfc2lnbmFsXzQucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19zaWduYWxfNC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfc2lnbmFsX2ZsaWdodG1vZGUucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfc2lnbmFsX2ZsaWdodG1vZGUucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19zaWduYWxfZmxpZ2h0bW9kZS5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3NpZ25hbF9mbGlnaHRtb2RlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19zaWduYWxfbnVsbC5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c19zaWduYWxfbnVsbC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3NpZ25hbF9udWxsLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfc2lnbmFsX251bGwucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3R0eV9tb2RlLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3R0eV9tb2RlLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfdHR5X21vZGUucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c190dHlfbW9kZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfd2lmaV9zaWduYWxfMC5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c193aWZpX3NpZ25hbF8wLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfd2lmaV9zaWduYWxfMC5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3dpZmlfc2lnbmFsXzAucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3dpZmlfc2lnbmFsXzEucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfd2lmaV9zaWduYWxfMS5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3dpZmlfc2lnbmFsXzEucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c193aWZpX3NpZ25hbF8xLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c193aWZpX3NpZ25hbF8yLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3dpZmlfc2lnbmFsXzIucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c193aWZpX3NpZ25hbF8yLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfd2lmaV9zaWduYWxfMi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfd2lmaV9zaWduYWxfMy5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c193aWZpX3NpZ25hbF8zLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfd2lmaV9zaWduYWxfMy5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3dpZmlfc2lnbmFsXzMucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3dpZmlfc2lnbmFsXzQucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfd2lmaV9zaWduYWxfNC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3dpZmlfc2lnbmFsXzQucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c193aWZpX3NpZ25hbF80LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0dXNfYmFyX2JhY2tncm91bmQuOS5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0dXNfYmFyX2JhY2tncm91bmQuOS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTRiZTI5OAotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXR1c19iYXJfYmFja2dyb3VuZC45LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS9zdGF0dXNfYmFyX2l0ZW1fYXBwX2JhY2tncm91bmRfbm9ybWFsLjkucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdHVzX2Jhcl9pdGVtX2FwcF9iYWNrZ3JvdW5kX25vcm1hbC45LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZmJmYTRmCi0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdHVzX2Jhcl9pdGVtX2FwcF9iYWNrZ3JvdW5kX25vcm1hbC45LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS90aXRsZV9iYXJfcG9ydHJhaXQuOS5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS90aXRsZV9iYXJfcG9ydHJhaXQuOS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzBmN2NjMgotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1oZHBpL3RpdGxlX2Jhcl9wb3J0cmFpdC45LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtaGRwaS90aXRsZV9iYXJfc2hhZG93LjkucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvdGl0bGVfYmFyX3NoYWRvdy45LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNmRhYjYzCi0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLWhkcGkvdGl0bGVfYmFyX3NoYWRvdy45LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9hbGVydF9iYXJfYmFja2dyb3VuZF9ub3JtYWwuOS5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9hbGVydF9iYXJfYmFja2dyb3VuZF9ub3JtYWwuOS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjU4ZGUxMwotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL2FsZXJ0X2Jhcl9iYWNrZ3JvdW5kX25vcm1hbC45LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9hbGVydF9iYXJfYmFja2dyb3VuZF9wcmVzc2VkLjkucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvYWxlcnRfYmFyX2JhY2tncm91bmRfcHJlc3NlZC45LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNThkZTEzCi0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvYWxlcnRfYmFyX2JhY2tncm91bmRfcHJlc3NlZC45LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9iYXR0ZXJ5X2xvd19iYXR0ZXJ5LnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL2JhdHRlcnlfbG93X2JhdHRlcnkucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9iYXR0ZXJ5X2xvd19iYXR0ZXJ5LnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvYmF0dGVyeV9sb3dfYmF0dGVyeS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvYnRuX2RlZmF1bHRfc21hbGxfbm9ybWFsLjkucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvYnRuX2RlZmF1bHRfc21hbGxfbm9ybWFsLjkucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjZWRkNWYKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9idG5fZGVmYXVsdF9zbWFsbF9ub3JtYWwuOS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvYnRuX2RlZmF1bHRfc21hbGxfbm9ybWFsX2Rpc2FibGUuOS5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9idG5fZGVmYXVsdF9zbWFsbF9ub3JtYWxfZGlzYWJsZS45LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzYyNjBmCi0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvYnRuX2RlZmF1bHRfc21hbGxfbm9ybWFsX2Rpc2FibGUuOS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvYnRuX2RlZmF1bHRfc21hbGxfbm9ybWFsX2Rpc2FibGVfZm9jdXNlZC45LnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL2J0bl9kZWZhdWx0X3NtYWxsX25vcm1hbF9kaXNhYmxlX2ZvY3VzZWQuOS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGVlMWIzZgotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL2J0bl9kZWZhdWx0X3NtYWxsX25vcm1hbF9kaXNhYmxlX2ZvY3VzZWQuOS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvYnRuX2RlZmF1bHRfc21hbGxfcHJlc3NlZC45LnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL2J0bl9kZWZhdWx0X3NtYWxsX3ByZXNzZWQuOS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjVlMzhmNAotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL2J0bl9kZWZhdWx0X3NtYWxsX3ByZXNzZWQuOS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvYnRuX2RlZmF1bHRfc21hbGxfc2VsZWN0ZWQuOS5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9idG5fZGVmYXVsdF9zbWFsbF9zZWxlY3RlZC45LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYzIwOWM2Ci0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvYnRuX2RlZmF1bHRfc21hbGxfc2VsZWN0ZWQuOS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvaWNfbGF1bmNoZXJfc2V0dGluZ3MucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvaWNfbGF1bmNoZXJfc2V0dGluZ3MucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwOGFkM2IKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9pY19sYXVuY2hlcl9zZXR0aW5ncy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvaWNfbm90aWZpY2F0aW9uX292ZXJsYXkuOS5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9pY19ub3RpZmljYXRpb25fb3ZlcmxheS45LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTMwNjNjNAotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL2ljX25vdGlmaWNhdGlvbl9vdmVybGF5LjkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3NoYWRlX2JnLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3NoYWRlX2JnLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NDFkM2IxCi0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc2hhZGVfYmcucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3NoYWRlX2hhbmRsZWJhci45LnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3NoYWRlX2hhbmRsZWJhci45LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Y2JkOWZlCi0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc2hhZGVfaGFuZGxlYmFyLjkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3NoYWRlX2hlYWRlcl9iYWNrZ3JvdW5kLjkucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc2hhZGVfaGVhZGVyX2JhY2tncm91bmQuOS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmE5YTkwYwotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3NoYWRlX2hlYWRlcl9iYWNrZ3JvdW5kLjkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfbm90aWZ5X2FsYXJtLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfbm90aWZ5X2FsYXJtLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9ub3RpZnlfYWxhcm0ucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X25vdGlmeV9hbGFybS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9ub3RpZnlfbW9yZS5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X25vdGlmeV9tb3JlLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTI5YmE5Ci0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9ub3RpZnlfbW9yZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9ibHVldG9vdGhfY29ubmVjdGVkLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfYmx1ZXRvb3RoX2Nvbm5lY3RlZC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfYmx1ZXRvb3RoX2Nvbm5lY3RlZC5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfYmx1ZXRvb3RoX2Nvbm5lY3RlZC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9jb25uZWN0ZWRfMXgucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9jb25uZWN0ZWRfMXgucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19kYXRhX2Nvbm5lY3RlZF8xeC5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfY29ubmVjdGVkXzF4LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19kYXRhX2Nvbm5lY3RlZF8zZy5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19kYXRhX2Nvbm5lY3RlZF8zZy5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfY29ubmVjdGVkXzNnLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9jb25uZWN0ZWRfM2cucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfY29ubmVjdGVkX2UucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9jb25uZWN0ZWRfZS5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfY29ubmVjdGVkX2UucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19kYXRhX2Nvbm5lY3RlZF9lLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19kYXRhX2Nvbm5lY3RlZF9nLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfY29ubmVjdGVkX2cucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19kYXRhX2Nvbm5lY3RlZF9nLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9jb25uZWN0ZWRfZy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9jb25uZWN0ZWRfaC5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19kYXRhX2Nvbm5lY3RlZF9oLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9jb25uZWN0ZWRfaC5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfY29ubmVjdGVkX2gucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfaW5fMXgucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9pbl8xeC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfaW5fMXgucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19kYXRhX2luXzF4LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19kYXRhX2luXzNnLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfaW5fM2cucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19kYXRhX2luXzNnLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9pbl8zZy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9pbl9lLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfaW5fZS5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfaW5fZS5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfaW5fZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9pbl9nLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfaW5fZy5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfaW5fZy5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfaW5fZy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9pbl9oLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfaW5faC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfaW5faC5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfaW5faC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF8xeC5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19kYXRhX2luYW5kb3V0XzF4LnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF8xeC5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfaW5hbmRvdXRfMXgucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfaW5hbmRvdXRfM2cucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF8zZy5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfaW5hbmRvdXRfM2cucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19kYXRhX2luYW5kb3V0XzNnLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19kYXRhX2luYW5kb3V0X2UucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF9lLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF9lLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF9lLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19kYXRhX2luYW5kb3V0X2cucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF9nLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF9nLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF9nLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19kYXRhX2luYW5kb3V0X2gucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF9oLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF9oLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9pbmFuZG91dF9oLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19kYXRhX291dF8xeC5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19kYXRhX291dF8xeC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfb3V0XzF4LnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9vdXRfMXgucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfb3V0XzNnLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfb3V0XzNnLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9vdXRfM2cucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19kYXRhX291dF8zZy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9vdXRfZS5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19kYXRhX291dF9lLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9vdXRfZS5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfb3V0X2UucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfb3V0X2cucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9vdXRfZy5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfb3V0X2cucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19kYXRhX291dF9nLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19kYXRhX291dF9oLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2RhdGFfb3V0X2gucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19kYXRhX291dF9oLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZGF0YV9vdXRfaC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZ3BzX2FjcXVpcmluZy5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19ncHNfYWNxdWlyaW5nLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfZ3BzX2FjcXVpcmluZy5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX2dwc19hY3F1aXJpbmcucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX25vX3NpbS5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19ub19zaW0ucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19ub19zaW0ucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19ub19zaW0ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3Jfc2lnbmFsXzAucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfcl9zaWduYWxfMC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3Jfc2lnbmFsXzAucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19yX3NpZ25hbF8wLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19yX3NpZ25hbF8xLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3Jfc2lnbmFsXzEucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19yX3NpZ25hbF8xLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfcl9zaWduYWxfMS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfcl9zaWduYWxfMi5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19yX3NpZ25hbF8yLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfcl9zaWduYWxfMi5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3Jfc2lnbmFsXzIucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3Jfc2lnbmFsXzMucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfcl9zaWduYWxfMy5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3Jfc2lnbmFsXzMucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19yX3NpZ25hbF8zLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19yX3NpZ25hbF80LnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3Jfc2lnbmFsXzQucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19yX3NpZ25hbF80LnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfcl9zaWduYWxfNC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfcmluZ2VyX3NpbGVudC5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19yaW5nZXJfc2lsZW50LnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfcmluZ2VyX3NpbGVudC5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3Jpbmdlcl9zaWxlbnQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3Jpbmdlcl92aWJyYXRlLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3Jpbmdlcl92aWJyYXRlLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfcmluZ2VyX3ZpYnJhdGUucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19yaW5nZXJfdmlicmF0ZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19yb2FtaW5nX2NkbWFfMC5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19yb2FtaW5nX2NkbWFfZmxhc2hfYW5pbTAucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfcm9hbWluZ19jZG1hX2ZsYXNoX2FuaW0wLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfcm9hbWluZ19jZG1hX2ZsYXNoX2FuaW0wLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfcm9hbWluZ19jZG1hX2ZsYXNoX2FuaW0wLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19yb2FtaW5nX2NkbWFfZmxhc2hfYW5pbTEucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfcm9hbWluZ19jZG1hX2ZsYXNoX2FuaW0xLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfcm9hbWluZ19jZG1hX2ZsYXNoX2FuaW0xLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfcm9hbWluZ19jZG1hX2ZsYXNoX2FuaW0xLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19zaWduYWxfMC5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19zaWduYWxfMC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3NpZ25hbF8wLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfc2lnbmFsXzAucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3NpZ25hbF8xLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3NpZ25hbF8xLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfc2lnbmFsXzEucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19zaWduYWxfMS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfc2lnbmFsXzIucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfc2lnbmFsXzIucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19zaWduYWxfMi5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3NpZ25hbF8yLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19zaWduYWxfMy5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19zaWduYWxfMy5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3NpZ25hbF8zLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfc2lnbmFsXzMucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3NpZ25hbF80LnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3NpZ25hbF80LnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfc2lnbmFsXzQucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19zaWduYWxfNC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfc2lnbmFsX2ZsaWdodG1vZGUucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfc2lnbmFsX2ZsaWdodG1vZGUucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19zaWduYWxfZmxpZ2h0bW9kZS5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3NpZ25hbF9mbGlnaHRtb2RlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19zaWduYWxfbnVsbC5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c19zaWduYWxfbnVsbC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3NpZ25hbF9udWxsLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfc2lnbmFsX251bGwucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3R0eV9tb2RlLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3R0eV9tb2RlLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfdHR5X21vZGUucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c190dHlfbW9kZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfd2lmaV9zaWduYWxfMC5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c193aWZpX3NpZ25hbF8wLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfd2lmaV9zaWduYWxfMC5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3dpZmlfc2lnbmFsXzAucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3dpZmlfc2lnbmFsXzEucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfd2lmaV9zaWduYWxfMS5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3dpZmlfc2lnbmFsXzEucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c193aWZpX3NpZ25hbF8xLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c193aWZpX3NpZ25hbF8yLnBuZyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3dpZmlfc2lnbmFsXzIucG5nCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c193aWZpX3NpZ25hbF8yLnBuZwpyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfd2lmaV9zaWduYWxfMi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfd2lmaV9zaWduYWxfMy5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c193aWZpX3NpZ25hbF8zLnBuZwpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfd2lmaV9zaWduYWxfMy5wbmcKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3dpZmlfc2lnbmFsXzMucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2NvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3dpZmlfc2lnbmFsXzQucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfd2lmaV9zaWduYWxfNC5wbmcKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGNvcmUvcmVzL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3dpZmlfc2lnbmFsXzQucG5nCnJlbmFtZSB0byBwYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c193aWZpX3NpZ25hbF80LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0dXNfYmFyX2JhY2tncm91bmQuOS5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0dXNfYmFyX2JhY2tncm91bmQuOS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWI3YzFhNAotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXR1c19iYXJfYmFja2dyb3VuZC45LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS9zdGF0dXNfYmFyX2l0ZW1fYXBwX2JhY2tncm91bmRfbm9ybWFsLjkucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdHVzX2Jhcl9pdGVtX2FwcF9iYWNrZ3JvdW5kX25vcm1hbC45LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDc5NjE1Ci0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdHVzX2Jhcl9pdGVtX2FwcF9iYWNrZ3JvdW5kX25vcm1hbC45LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS90aXRsZV9iYXJfcG9ydHJhaXQuOS5wbmcgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS90aXRsZV9iYXJfcG9ydHJhaXQuOS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTNiMThkOAotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS1tZHBpL3RpdGxlX2Jhcl9wb3J0cmFpdC45LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUtbWRwaS90aXRsZV9iYXJfc2hhZG93LjkucG5nIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvdGl0bGVfYmFyX3NoYWRvdy45LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYmNlZmVlCi0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlLW1kcGkvdGl0bGVfYmFyX3NoYWRvdy45LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUvYWxlcnRfYmFyX2JhY2tncm91bmQueG1sIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlL2FsZXJ0X2Jhcl9iYWNrZ3JvdW5kLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGI2YWEzCi0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2RyYXdhYmxlL2FsZXJ0X2Jhcl9iYWNrZ3JvdW5kLnhtbApAQCAtMCwwICsxLDIzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLSBDb3B5cmlnaHQgKEMpIDIwMDggVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorCisgICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy0tPgorCis8c2VsZWN0b3IgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIj4KKyAgICA8aXRlbSBhbmRyb2lkOnN0YXRlX3ByZXNzZWQ9InRydWUiIAorICAgICAgICBhbmRyb2lkOmRyYXdhYmxlPSJAZHJhd2FibGUvYWxlcnRfYmFyX2JhY2tncm91bmRfcHJlc3NlZCIgLz4KKyAgICA8aXRlbQorICAgICAgICAgYW5kcm9pZDpkcmF3YWJsZT0iQGRyYXdhYmxlL2FsZXJ0X2Jhcl9iYWNrZ3JvdW5kX25vcm1hbCIgLz4KKzwvc2VsZWN0b3I+CisKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS9idG5fZGVmYXVsdF9zbWFsbC54bWwgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUvYnRuX2RlZmF1bHRfc21hbGwueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0ODVlYTAKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUvYnRuX2RlZmF1bHRfc21hbGwueG1sCkBAIC0wLDAgKzEsMzMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKzxzZWxlY3RvciB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiPgorICAgIDxpdGVtIGFuZHJvaWQ6c3RhdGVfd2luZG93X2ZvY3VzZWQ9ImZhbHNlIiBhbmRyb2lkOnN0YXRlX2VuYWJsZWQ9InRydWUiCisgICAgICAgIGFuZHJvaWQ6ZHJhd2FibGU9IkBkcmF3YWJsZS9idG5fZGVmYXVsdF9zbWFsbF9ub3JtYWwiIC8+CisgICAgPGl0ZW0gYW5kcm9pZDpzdGF0ZV93aW5kb3dfZm9jdXNlZD0iZmFsc2UiIGFuZHJvaWQ6c3RhdGVfZW5hYmxlZD0iZmFsc2UiCisgICAgICAgIGFuZHJvaWQ6ZHJhd2FibGU9IkBkcmF3YWJsZS9idG5fZGVmYXVsdF9zbWFsbF9ub3JtYWxfZGlzYWJsZSIgLz4KKyAgICA8aXRlbSBhbmRyb2lkOnN0YXRlX3ByZXNzZWQ9InRydWUiIAorICAgICAgICBhbmRyb2lkOmRyYXdhYmxlPSJAZHJhd2FibGUvYnRuX2RlZmF1bHRfc21hbGxfcHJlc3NlZCIgLz4KKyAgICA8aXRlbSBhbmRyb2lkOnN0YXRlX2ZvY3VzZWQ9InRydWUiIGFuZHJvaWQ6c3RhdGVfZW5hYmxlZD0idHJ1ZSIKKyAgICAgICAgYW5kcm9pZDpkcmF3YWJsZT0iQGRyYXdhYmxlL2J0bl9kZWZhdWx0X3NtYWxsX3NlbGVjdGVkIiAvPgorICAgIDxpdGVtIGFuZHJvaWQ6c3RhdGVfZW5hYmxlZD0idHJ1ZSIKKyAgICAgICAgYW5kcm9pZDpkcmF3YWJsZT0iQGRyYXdhYmxlL2J0bl9kZWZhdWx0X3NtYWxsX25vcm1hbCIgLz4KKyAgICA8aXRlbSBhbmRyb2lkOnN0YXRlX2ZvY3VzZWQ9InRydWUiCisgICAgICAgIGFuZHJvaWQ6ZHJhd2FibGU9IkBkcmF3YWJsZS9idG5fZGVmYXVsdF9zbWFsbF9ub3JtYWxfZGlzYWJsZV9mb2N1c2VkIiAvPgorICAgIDxpdGVtCisgICAgICAgICBhbmRyb2lkOmRyYXdhYmxlPSJAZHJhd2FibGUvYnRuX2RlZmF1bHRfc21hbGxfbm9ybWFsX2Rpc2FibGUiIC8+Cis8L3NlbGVjdG9yPgorCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUvc3RhdF9zeXNfZ3BzX2FjcXVpcmluZ19hbmltLnhtbCBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS9zdGF0X3N5c19ncHNfYWNxdWlyaW5nX2FuaW0ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5MzY5N2MKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUvc3RhdF9zeXNfZ3BzX2FjcXVpcmluZ19hbmltLnhtbApAQCAtMCwwICsxLDI1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLQorLyoKKyoqCisqKiBDb3B5cmlnaHQgMjAwOCwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorKioKKyoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorKiogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisqKgorKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorKioKKyoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyoqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyoqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorKi8KKy0tPgorPGFuaW1hdGlvbi1saXN0CisgICAgICAgIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICAgICAgYW5kcm9pZDpvbmVzaG90PSJmYWxzZSI+CisgICAgPGl0ZW0gYW5kcm9pZDpkcmF3YWJsZT0iQGRyYXdhYmxlL3N0YXRfc3lzX2dwc19hY3F1aXJpbmciIGFuZHJvaWQ6ZHVyYXRpb249IjUwMCIgLz4KKyAgICA8aXRlbSBhbmRyb2lkOmRyYXdhYmxlPSJAKmFuZHJvaWQ6ZHJhd2FibGUvc3RhdF9zeXNfZ3BzX29uIiBhbmRyb2lkOmR1cmF0aW9uPSI1MDAiIC8+Cis8L2FuaW1hdGlvbi1saXN0PgpkaWZmIC0tZ2l0IGEvY29yZS9yZXMvcmVzL2RyYXdhYmxlL3N0YXRfc3lzX3JvYW1pbmdfY2RtYV9mbGFzaC54bWwgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvZHJhd2FibGUvc3RhdF9zeXNfcm9hbWluZ19jZG1hX2ZsYXNoLnhtbApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gY29yZS9yZXMvcmVzL2RyYXdhYmxlL3N0YXRfc3lzX3JvYW1pbmdfY2RtYV9mbGFzaC54bWwKcmVuYW1lIHRvIHBhY2thZ2VzL1N5c3RlbVVJL3Jlcy9kcmF3YWJsZS9zdGF0X3N5c19yb2FtaW5nX2NkbWFfZmxhc2gueG1sCmRpZmYgLS1naXQgYS9jb3JlL3Jlcy9yZXMvbGF5b3V0L2JhdHRlcnlfbG93LnhtbCBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9sYXlvdXQvYmF0dGVyeV9sb3cueG1sCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBjb3JlL3Jlcy9yZXMvbGF5b3V0L2JhdHRlcnlfbG93LnhtbApyZW5hbWUgdG8gcGFja2FnZXMvU3lzdGVtVUkvcmVzL2xheW91dC9iYXR0ZXJ5X2xvdy54bWwKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9sYXlvdXQvaW50cnVkZXJfYWxlcnQueG1sIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2xheW91dC9pbnRydWRlcl9hbGVydC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmE0YTc3NAotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9sYXlvdXQvaW50cnVkZXJfYWxlcnQueG1sCkBAIC0wLDAgKzEsNTggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tCisvKiBhcHBzL2NvbW1vbi9hc3NldHMvZGVmYXVsdC9kZWZhdWx0L3NraW5zL1N0YXR1c0Jhci54bWwKKyoqCisqKiBDb3B5cmlnaHQgMjAwNiwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorKioKKyoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOyAKKyoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gCisqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQgCisqKgorKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMCAKKyoqCisqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlIAorKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywgCisqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gCisqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIAorKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisqLworLS0+CisKKzwhLS0gICAgYW5kcm9pZDpiYWNrZ3JvdW5kPSJAZHJhd2FibGUvc3RhdHVzX2Jhcl9jbG9zZWRfZGVmYXVsdF9iYWNrZ3JvdW5kIiAtLT4KKzxGcmFtZUxheW91dAorICAgIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IjMyZGlwIgorICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCisgICAgYW5kcm9pZDpwYWRkaW5nTGVmdD0iOGRpcCIKKyAgICBhbmRyb2lkOnBhZGRpbmdSaWdodD0iOGRpcCIKKyAgICA+CisgICAgICAgIAorICAgIDxMaW5lYXJMYXlvdXQgCisgICAgICAgIGFuZHJvaWQ6aWQ9IkAraWQvaW50cnVkZXJfYWxlcnRfY29udGVudCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJtYXRjaF9wYXJlbnQiCisgICAgICAgIGFuZHJvaWQ6Z3Jhdml0eT0iY2VudGVyIgorICAgICAgICBhbmRyb2lkOmFuaW1hdGlvbkNhY2hlPSJmYWxzZSIKKyAgICAgICAgYW5kcm9pZDpvcmllbnRhdGlvbj0iaG9yaXpvbnRhbCIKKyAgICAgICAgYW5kcm9pZDpiYWNrZ3JvdW5kPSJAZHJhd2FibGUvYWxlcnRfYmFyX2JhY2tncm91bmQiCisgICAgICAgIGFuZHJvaWQ6Y2xpY2thYmxlPSJ0cnVlIgorICAgICAgICBhbmRyb2lkOmZvY3VzYWJsZT0idHJ1ZSIKKyAgICAgICAgYW5kcm9pZDpkZXNjZW5kYW50Rm9jdXNhYmlsaXR5PSJhZnRlckRlc2NlbmRhbnRzIgorICAgICAgICA+CisKKyAgICAgICAgPEltYWdlVmlldworICAgICAgICAgICAgYW5kcm9pZDppZD0iQCtpZC9hbGVydEljb24iCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0iMjVkaXAiCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IjI1ZGlwIgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luTGVmdD0iNmRpcCIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X21hcmdpblJpZ2h0PSI4ZGlwIgorICAgICAgICAgICAgLz4KKyAgICAgICAgPFRleHRWaWV3CisgICAgICAgICAgICBhbmRyb2lkOmlkPSJAK2lkL2FsZXJ0VGV4dCIKKyAgICAgICAgICAgIGFuZHJvaWQ6dGV4dEFwcGVhcmFuY2U9IkBzdHlsZS9UZXh0QXBwZWFyYW5jZS5TdGF0dXNCYXIuSW50cnVkZXJBbGVydCIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKKyAgICAgICAgICAgIGFuZHJvaWQ6c2luZ2xlTGluZT0idHJ1ZSIKKyAgICAgICAgICAgIC8+CisgICAgPC9MaW5lYXJMYXlvdXQ+Cis8L0ZyYW1lTGF5b3V0PgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2xheW91dC9zdGF0dXNfYmFyLnhtbCBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9sYXlvdXQvc3RhdHVzX2Jhci54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWZlOGU3OQotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9sYXlvdXQvc3RhdHVzX2Jhci54bWwKQEAgLTAsMCArMSwxMTUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tCisvKiBhcHBzL2NvbW1vbi9hc3NldHMvZGVmYXVsdC9kZWZhdWx0L3NraW5zL1N0YXR1c0Jhci54bWwKKyoqCisqKiBDb3B5cmlnaHQgMjAwNiwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorKioKKyoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOyAKKyoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gCisqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQgCisqKgorKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMCAKKyoqCisqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlIAorKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywgCisqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gCisqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIAorKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisqLworLS0+CisKKzwhLS0gICAgYW5kcm9pZDpiYWNrZ3JvdW5kPSJAZHJhd2FibGUvc3RhdHVzX2Jhcl9jbG9zZWRfZGVmYXVsdF9iYWNrZ3JvdW5kIiAtLT4KKzxjb20uYW5kcm9pZC5zeXN0ZW11aS5zdGF0dXNiYXIuU3RhdHVzQmFyVmlldworICAgIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICBhbmRyb2lkOmJhY2tncm91bmQ9IkBkcmF3YWJsZS9zdGF0dXNfYmFyX2JhY2tncm91bmQiCisgICAgYW5kcm9pZDpvcmllbnRhdGlvbj0idmVydGljYWwiCisgICAgYW5kcm9pZDpmb2N1c2FibGU9InRydWUiCisgICAgYW5kcm9pZDpkZXNjZW5kYW50Rm9jdXNhYmlsaXR5PSJhZnRlckRlc2NlbmRhbnRzIgorICAgID4KKworICAgIDxMaW5lYXJMYXlvdXQgYW5kcm9pZDppZD0iQCtpZC9pY29ucyIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJtYXRjaF9wYXJlbnQiCisgICAgICAgIGFuZHJvaWQ6b3JpZW50YXRpb249Imhvcml6b250YWwiPgorICAgICAgICAgICAgCisgICAgICAgIDxjb20uYW5kcm9pZC5zeXN0ZW11aS5zdGF0dXNiYXIuSWNvbk1lcmdlciBhbmRyb2lkOmlkPSJAK2lkL25vdGlmaWNhdGlvbkljb25zIgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IjBkaXAiCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93ZWlnaHQ9IjEiCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9Im1hdGNoX3BhcmVudCIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2FsaWduUGFyZW50TGVmdD0idHJ1ZSIKKyAgICAgICAgICAgIGFuZHJvaWQ6cGFkZGluZ0xlZnQ9IjZkaXAiCisgICAgICAgICAgICBhbmRyb2lkOmdyYXZpdHk9ImNlbnRlcl92ZXJ0aWNhbCIKKyAgICAgICAgICAgIGFuZHJvaWQ6b3JpZW50YXRpb249Imhvcml6b250YWwiLz4gIAorICAgICAgICAgICAgCisgICAgICAgIDxMaW5lYXJMYXlvdXQgYW5kcm9pZDppZD0iQCtpZC9zdGF0dXNJY29ucyIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJ3cmFwX2NvbnRlbnQiCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9Im1hdGNoX3BhcmVudCIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2FsaWduUGFyZW50UmlnaHQ9InRydWUiCisgICAgICAgICAgICBhbmRyb2lkOnBhZGRpbmdSaWdodD0iNmRpcCIKKyAgICAgICAgICAgIGFuZHJvaWQ6Z3Jhdml0eT0iY2VudGVyX3ZlcnRpY2FsIgorICAgICAgICAgICAgYW5kcm9pZDpvcmllbnRhdGlvbj0iaG9yaXpvbnRhbCIvPiAgICAKKworICAgICAgICA8Y29tLmFuZHJvaWQuc3lzdGVtdWkuc3RhdHVzYmFyLkNsb2NrCisgICAgICAgICAgICBhbmRyb2lkOnRleHRBcHBlYXJhbmNlPSJAKmFuZHJvaWQ6c3R5bGUvVGV4dEFwcGVhcmFuY2UuU3RhdHVzQmFyLkljb24iCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0id3JhcF9jb250ZW50IgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJtYXRjaF9wYXJlbnQiCisgICAgICAgICAgICBhbmRyb2lkOnNpbmdsZUxpbmU9InRydWUiCisgICAgICAgICAgICBhbmRyb2lkOnBhZGRpbmdSaWdodD0iNmRpcCIKKyAgICAgICAgICAgIGFuZHJvaWQ6dGV4dFNpemU9IjE2c3AiCisgICAgICAgICAgICBhbmRyb2lkOnRleHRTdHlsZT0iYm9sZCIKKyAgICAgICAgICAgIGFuZHJvaWQ6Z3Jhdml0eT0iY2VudGVyX3ZlcnRpY2FsfGxlZnQiCisgICAgICAgICAgICAvPgorICAgIDwvTGluZWFyTGF5b3V0PgorICAgICAgICAKKyAgICA8TGluZWFyTGF5b3V0IGFuZHJvaWQ6aWQ9IkAraWQvdGlja2VyIgorICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgorICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9Im1hdGNoX3BhcmVudCIKKyAgICAgICAgYW5kcm9pZDpwYWRkaW5nTGVmdD0iNmRpcCIKKyAgICAgICAgYW5kcm9pZDphbmltYXRpb25DYWNoZT0iZmFsc2UiCisgICAgICAgIGFuZHJvaWQ6b3JpZW50YXRpb249Imhvcml6b250YWwiID4KKyAgICAgICAgPEltYWdlU3dpdGNoZXIgYW5kcm9pZDppZD0iQCtpZC90aWNrZXJJY29uIgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IndyYXBfY29udGVudCIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0ibWF0Y2hfcGFyZW50IgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luUmlnaHQ9IjhkaXAiCisgICAgICAgICAgICA+CisgICAgICAgICAgICA8Y29tLmFuZHJvaWQuc3lzdGVtdWkuc3RhdHVzYmFyLkFuaW1hdGVkSW1hZ2VWaWV3CisgICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IjI1ZGlwIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0iMjVkaXAiCisgICAgICAgICAgICAgICAgLz4KKyAgICAgICAgICAgIDxjb20uYW5kcm9pZC5zeXN0ZW11aS5zdGF0dXNiYXIuQW5pbWF0ZWRJbWFnZVZpZXcKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0iMjVkaXAiCisgICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSIyNWRpcCIKKyAgICAgICAgICAgICAgICAvPgorICAgICAgICA8L0ltYWdlU3dpdGNoZXI+CisgICAgICAgIDxjb20uYW5kcm9pZC5zeXN0ZW11aS5zdGF0dXNiYXIuVGlja2VyVmlldyBhbmRyb2lkOmlkPSJAK2lkL3RpY2tlclRleHQiCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0iMGRpcCIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dlaWdodD0iMSIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgICAgICAgICAgYW5kcm9pZDpwYWRkaW5nVG9wPSIyZGlwIgorICAgICAgICAgICAgYW5kcm9pZDpwYWRkaW5nUmlnaHQ9IjEwZGlwIj4KKyAgICAgICAgICAgIDxUZXh0VmlldworICAgICAgICAgICAgICAgIGFuZHJvaWQ6dGV4dEFwcGVhcmFuY2U9IkAqYW5kcm9pZDpzdHlsZS9UZXh0QXBwZWFyYW5jZS5TdGF0dXNCYXIuVGlja2VyIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCisgICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisgICAgICAgICAgICAgICAgYW5kcm9pZDpzaW5nbGVMaW5lPSJ0cnVlIgorICAgICAgICAgICAgICAgIC8+CisgICAgICAgICAgICA8VGV4dFZpZXcKKyAgICAgICAgICAgICAgICBhbmRyb2lkOnRleHRBcHBlYXJhbmNlPSJAKmFuZHJvaWQ6c3R5bGUvVGV4dEFwcGVhcmFuY2UuU3RhdHVzQmFyLlRpY2tlciIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6c2luZ2xlTGluZT0idHJ1ZSIKKyAgICAgICAgICAgICAgICAvPgorICAgICAgICA8L2NvbS5hbmRyb2lkLnN5c3RlbXVpLnN0YXR1c2Jhci5UaWNrZXJWaWV3PgorICAgIDwvTGluZWFyTGF5b3V0PgorCisgICAgPGNvbS5hbmRyb2lkLnN5c3RlbXVpLnN0YXR1c2Jhci5EYXRlVmlldyBhbmRyb2lkOmlkPSJAK2lkL2RhdGUiCisgICAgICAgIGFuZHJvaWQ6dGV4dEFwcGVhcmFuY2U9IkAqYW5kcm9pZDpzdHlsZS9UZXh0QXBwZWFyYW5jZS5TdGF0dXNCYXIuSWNvbiIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IndyYXBfY29udGVudCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJtYXRjaF9wYXJlbnQiCisgICAgICAgIGFuZHJvaWQ6c2luZ2xlTGluZT0idHJ1ZSIKKyAgICAgICAgYW5kcm9pZDpncmF2aXR5PSJjZW50ZXJfdmVydGljYWx8bGVmdCIKKyAgICAgICAgYW5kcm9pZDpwYWRkaW5nTGVmdD0iNnB4IgorICAgICAgICBhbmRyb2lkOnBhZGRpbmdSaWdodD0iNnB4IgorICAgICAgICBhbmRyb2lkOmJhY2tncm91bmQ9IkBkcmF3YWJsZS9zdGF0dXNfYmFyX2JhY2tncm91bmQiCisgICAgICAgIC8+Cis8L2NvbS5hbmRyb2lkLnN5c3RlbXVpLnN0YXR1c2Jhci5TdGF0dXNCYXJWaWV3PgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2xheW91dC9zdGF0dXNfYmFyX2V4cGFuZGVkLnhtbCBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9sYXlvdXQvc3RhdHVzX2Jhcl9leHBhbmRlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjViMWI1MAotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9sYXlvdXQvc3RhdHVzX2Jhcl9leHBhbmRlZC54bWwKQEAgLTAsMCArMSwxMjkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tCisvKiBhcHBzL2NvbW1vbi9hc3NldHMvZGVmYXVsdC9kZWZhdWx0L3NraW5zL1N0YXR1c0Jhci54bWwKKyoqCisqKiBDb3B5cmlnaHQgMjAwNiwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorKioKKyoqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOyAKKyoqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gCisqKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQgCisqKgorKiogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMCAKKyoqCisqKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlIAorKiogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywgCisqKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gCisqKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIAorKiogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisqLworLS0+CisKKzxjb20uYW5kcm9pZC5zeXN0ZW11aS5zdGF0dXNiYXIuRXhwYW5kZWRWaWV3IHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICBhbmRyb2lkOm9yaWVudGF0aW9uPSJ2ZXJ0aWNhbCIKKyAgICBhbmRyb2lkOmZvY3VzYWJsZT0idHJ1ZSIKKyAgICBhbmRyb2lkOmRlc2NlbmRhbnRGb2N1c2FiaWxpdHk9ImFmdGVyRGVzY2VuZGFudHMiCisgICAgPgorCisgICAgPExpbmVhckxheW91dAorICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgorICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKKyAgICAgICAgYW5kcm9pZDpvcmllbnRhdGlvbj0iaG9yaXpvbnRhbCIKKyAgICAgICAgYW5kcm9pZDpwYWRkaW5nVG9wPSIzZHAiCisgICAgICAgIGFuZHJvaWQ6cGFkZGluZ0JvdHRvbT0iNWRwIgorICAgICAgICBhbmRyb2lkOnBhZGRpbmdSaWdodD0iM2RwIgorICAgICAgICBhbmRyb2lkOmJhY2tncm91bmQ9IkBkcmF3YWJsZS9zaGFkZV9oZWFkZXJfYmFja2dyb3VuZCIKKyAgICAgICAgPgorICAgICAgICA8Y29tLmFuZHJvaWQuc3lzdGVtdWkuc3RhdHVzYmFyLkNhcnJpZXJMYWJlbAorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IjBkcCIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2VpZ2h0PSIxIgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luVG9wPSIxZHAiCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9tYXJnaW5MZWZ0PSI1ZHAiCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9ncmF2aXR5PSJjZW50ZXJfdmVydGljYWwiCisgICAgICAgICAgICBhbmRyb2lkOnBhZGRpbmdCb3R0b209IjFkcCIKKyAgICAgICAgICAgIGFuZHJvaWQ6cGFkZGluZ0xlZnQ9IjRkcCIKKyAgICAgICAgICAgIGFuZHJvaWQ6dGV4dEFwcGVhcmFuY2U9Ij9hbmRyb2lkOmF0dHIvdGV4dEFwcGVhcmFuY2VMYXJnZSIKKyAgICAgICAgICAgIGFuZHJvaWQ6dGV4dENvbG9yPSI/YW5kcm9pZDphdHRyL3RleHRDb2xvclNlY29uZGFyeSIKKyAgICAgICAgICAgIC8+CisgICAgICAgIDxUZXh0VmlldyBhbmRyb2lkOmlkPSJAK2lkL2NsZWFyX2FsbF9idXR0b24iCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0id3JhcF9jb250ZW50IgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9ncmF2aXR5PSJjZW50ZXJfdmVydGljYWwiCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9tYXJnaW5Ub3A9IjRkcCIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X21hcmdpbkJvdHRvbT0iMWRwIgorICAgICAgICAgICAgYW5kcm9pZDp0ZXh0U2l6ZT0iMTRzcCIKKyAgICAgICAgICAgIGFuZHJvaWQ6dGV4dENvbG9yPSIjZmYwMDAwMDAiCisgICAgICAgICAgICBhbmRyb2lkOnRleHQ9IkBzdHJpbmcvc3RhdHVzX2Jhcl9jbGVhcl9hbGxfYnV0dG9uIgorICAgICAgICAgICAgc3R5bGU9Ij9hbmRyb2lkOmF0dHIvYnV0dG9uU3R5bGUiCisgICAgICAgICAgICBhbmRyb2lkOnBhZGRpbmdMZWZ0PSIxNWRwIgorICAgICAgICAgICAgYW5kcm9pZDpwYWRkaW5nUmlnaHQ9IjE1ZHAiCisgICAgICAgICAgICBhbmRyb2lkOmJhY2tncm91bmQ9IkBkcmF3YWJsZS9idG5fZGVmYXVsdF9zbWFsbCIKKyAgICAgICAgICAgIC8+CisgICAgPC9MaW5lYXJMYXlvdXQ+CisKKyAgICA8RnJhbWVMYXlvdXQKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIgCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgICAgICBhbmRyb2lkOmxheW91dF93ZWlnaHQ9IjEiCisgICAgICAgID4KKyAgICAgICAgPFNjcm9sbFZpZXcKKyAgICAgICAgICAgIGFuZHJvaWQ6aWQ9IkAraWQvc2Nyb2xsIgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0ibWF0Y2hfcGFyZW50IgorICAgICAgICAgICAgYW5kcm9pZDpmYWRpbmdFZGdlPSJub25lIgorICAgICAgICAgICAgPgorICAgICAgICAgICAgPGNvbS5hbmRyb2lkLnN5c3RlbXVpLnN0YXR1c2Jhci5Ob3RpZmljYXRpb25MaW5lYXJMYXlvdXQKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmlkPSJAK2lkL25vdGlmaWNhdGlvbkxpbmVhckxheW91dCIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6b3JpZW50YXRpb249InZlcnRpY2FsIgorICAgICAgICAgICAgICAgID4KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICA8VGV4dFZpZXcgYW5kcm9pZDppZD0iQCtpZC9ub05vdGlmaWNhdGlvbnNUaXRsZSIKKyAgICAgICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKKyAgICAgICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisgICAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6YmFja2dyb3VuZD0iQGRyYXdhYmxlL3RpdGxlX2Jhcl9wb3J0cmFpdCIKKyAgICAgICAgICAgICAgICAgICAgYW5kcm9pZDpwYWRkaW5nTGVmdD0iNWRwIgorICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOnRleHRBcHBlYXJhbmNlPSJAc3R5bGUvVGV4dEFwcGVhcmFuY2UuU3RhdHVzQmFyLlRpdGxlIgorICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOnRleHQ9IkBzdHJpbmcvc3RhdHVzX2Jhcl9ub19ub3RpZmljYXRpb25zX3RpdGxlIgorICAgICAgICAgICAgICAgICAgICAvPgorCisgICAgICAgICAgICAgICAgPFRleHRWaWV3IGFuZHJvaWQ6aWQ9IkAraWQvb25nb2luZ1RpdGxlIgorICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgorICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKKyAgICAgICAgICAgICAgICAgICAgYW5kcm9pZDpiYWNrZ3JvdW5kPSJAZHJhd2FibGUvdGl0bGVfYmFyX3BvcnRyYWl0IgorICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOnBhZGRpbmdMZWZ0PSI1ZHAiCisgICAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6dGV4dEFwcGVhcmFuY2U9IkBzdHlsZS9UZXh0QXBwZWFyYW5jZS5TdGF0dXNCYXIuVGl0bGUiCisgICAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6dGV4dD0iQHN0cmluZy9zdGF0dXNfYmFyX29uZ29pbmdfZXZlbnRzX3RpdGxlIgorICAgICAgICAgICAgICAgICAgICAvPgorICAgICAgICAgICAgICAgIDxMaW5lYXJMYXlvdXQgYW5kcm9pZDppZD0iQCtpZC9vbmdvaW5nSXRlbXMiCisgICAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCisgICAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOm9yaWVudGF0aW9uPSJ2ZXJ0aWNhbCIKKyAgICAgICAgICAgICAgICAgICAgLz4KKworICAgICAgICAgICAgICAgIDxUZXh0VmlldyBhbmRyb2lkOmlkPSJAK2lkL2xhdGVzdFRpdGxlIgorICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgorICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKKyAgICAgICAgICAgICAgICAgICAgYW5kcm9pZDpiYWNrZ3JvdW5kPSJAZHJhd2FibGUvdGl0bGVfYmFyX3BvcnRyYWl0IgorICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOnBhZGRpbmdMZWZ0PSI1ZHAiCisgICAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6dGV4dEFwcGVhcmFuY2U9IkBzdHlsZS9UZXh0QXBwZWFyYW5jZS5TdGF0dXNCYXIuVGl0bGUiCisgICAgICAgICAgICAgICAgICAgIGFuZHJvaWQ6dGV4dD0iQHN0cmluZy9zdGF0dXNfYmFyX2xhdGVzdF9ldmVudHNfdGl0bGUiCisgICAgICAgICAgICAgICAgICAgIC8+CisgICAgICAgICAgICAgICAgPExpbmVhckxheW91dCBhbmRyb2lkOmlkPSJAK2lkL2xhdGVzdEl0ZW1zIgorICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgorICAgICAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKKyAgICAgICAgICAgICAgICAgICAgYW5kcm9pZDpvcmllbnRhdGlvbj0idmVydGljYWwiCisgICAgICAgICAgICAgICAgICAgIC8+CisgICAgICAgICAgICA8L2NvbS5hbmRyb2lkLnN5c3RlbXVpLnN0YXR1c2Jhci5Ob3RpZmljYXRpb25MaW5lYXJMYXlvdXQ+CisgICAgICAgIDwvU2Nyb2xsVmlldz4KKworICAgICAgICA8SW1hZ2VWaWV3CisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJtYXRjaF9wYXJlbnQiCisgICAgICAgICAgICBhbmRyb2lkOnNyYz0iQGRyYXdhYmxlL3RpdGxlX2Jhcl9zaGFkb3ciCisgICAgICAgICAgICBhbmRyb2lkOnNjYWxlVHlwZT0iZml0WFkiCisgICAgICAgIC8+CisKKyAgICA8L0ZyYW1lTGF5b3V0PgorPC9jb20uYW5kcm9pZC5zeXN0ZW11aS5zdGF0dXNiYXIuRXhwYW5kZWRWaWV3PgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2xheW91dC9zdGF0dXNfYmFyX2ljb24ueG1sIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2xheW91dC9zdGF0dXNfYmFyX2ljb24ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxZDYwNmYKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvbGF5b3V0L3N0YXR1c19iYXJfaWNvbi54bWwKQEAgLTAsMCArMSw0NiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0KKy8qIGFwcHMvY29tbW9uL2Fzc2V0cy9kZWZhdWx0L2RlZmF1bHQvc2tpbnMvU3RhdHVzQmFyLnhtbAorKioKKyoqIENvcHlyaWdodCAyMDA2LCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisqKgorKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7IAorKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiAKKyoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdCAKKyoqCisqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIAorKioKKyoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUgCisqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLCAKKyoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAKKyoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgCisqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyovCistLT4KKworPCEtLSBUaGUgaWNvbnMgYXJlIGEgZml4ZWQgc2l6ZSBzbyBhbiBhcHAgY2FuJ3QgbWVzcyBldmVyeXRoaW5nIHVwIHdpdGggYm9ndXMgaW1hZ2VzIC0tPgorPCEtLSBUT0RPOiB0aGUgaWNvbnMgYXJlIGhhcmQgY29kZWQgdG8gMjV4MjUgcGl4ZWxzLiAgVGhlaXIgc2l6ZSBzaG91bGQgY29tZSBmcm9lbSBhIHRoZW1lIC0tPgorPEZyYW1lTGF5b3V0IHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIgCisgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IjI1ZHAiIAorICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0iMjVkcCIKKyAgICA+CisKKyAgICA8Y29tLmFuZHJvaWQuc3lzdGVtdWkuc3RhdHVzYmFyLkFuaW1hdGVkSW1hZ2VWaWV3IGFuZHJvaWQ6aWQ9IkAraWQvaW1hZ2UiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiIAorICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9Im1hdGNoX3BhcmVudCIKKyAgICAgICAgLz4KKworICAgIDxUZXh0VmlldyBhbmRyb2lkOmlkPSJAK2lkL251bWJlciIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IndyYXBfY29udGVudCIgCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgICAgICBhbmRyb2lkOmxheW91dF9ncmF2aXR5PSJyaWdodHxib3R0b20iCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X21hcmdpblJpZ2h0PSIxZHAiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X21hcmdpbkJvdHRvbT0iMWRwIgorICAgICAgICBhbmRyb2lkOnRleHRTaXplPSIxMHNwIgorICAgICAgICBhbmRyb2lkOnRleHRDb2xvcj0iI2ZmZmZmZmZmIgorICAgICAgICBhbmRyb2lkOmJhY2tncm91bmQ9IkBkcmF3YWJsZS9pY19ub3RpZmljYXRpb25fb3ZlcmxheSIKKyAgICAgICAgYW5kcm9pZDpncmF2aXR5PSJjZW50ZXIiCisgICAgICAgIGFuZHJvaWQ6dGV4dFN0eWxlPSJib2xkIgorICAgICAgICAvPgorCis8L0ZyYW1lTGF5b3V0PgpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2xheW91dC9zdGF0dXNfYmFyX2xhdGVzdF9ldmVudC54bWwgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvbGF5b3V0L3N0YXR1c19iYXJfbGF0ZXN0X2V2ZW50LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OGQ5NzM5Ci0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL2xheW91dC9zdGF0dXNfYmFyX2xhdGVzdF9ldmVudC54bWwKQEAgLTAsMCArMSwyNCBAQAorPExpbmVhckxheW91dCB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKKyAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IjY1c3AiCisgICAgYW5kcm9pZDpvcmllbnRhdGlvbj0idmVydGljYWwiCisgICAgPgorCisgICAgPGNvbS5hbmRyb2lkLnN5c3RlbXVpLnN0YXR1c2Jhci5MYXRlc3RJdGVtVmlldyBhbmRyb2lkOmlkPSJAK2lkL2NvbnRlbnQiCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSI2NHNwIgorICAgICAgICAgICAgYW5kcm9pZDpiYWNrZ3JvdW5kPSJAYW5kcm9pZDpkcmF3YWJsZS9zdGF0dXNfYmFyX2l0ZW1fYmFja2dyb3VuZCIKKyAgICAgICAgICAgIGFuZHJvaWQ6Zm9jdXNhYmxlPSJ0cnVlIgorICAgICAgICAgICAgYW5kcm9pZDpjbGlja2FibGU9InRydWUiCisgICAgICAgICAgICBhbmRyb2lkOnBhZGRpbmdSaWdodD0iNnNwIgorICAgICAgICAgICAgPgorICAgIDwvY29tLmFuZHJvaWQuc3lzdGVtdWkuc3RhdHVzYmFyLkxhdGVzdEl0ZW1WaWV3PgorCisgICAgPFZpZXcKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSIxc3AiCisgICAgICAgIGFuZHJvaWQ6YmFja2dyb3VuZD0iQGFuZHJvaWQ6ZHJhd2FibGUvZGl2aWRlcl9ob3Jpem9udGFsX2JyaWdodCIKKyAgICAgICAgLz4KKworPC9MaW5lYXJMYXlvdXQ+CisKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy9sYXlvdXQvc3RhdHVzX2Jhcl90cmFja2luZy54bWwgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvbGF5b3V0L3N0YXR1c19iYXJfdHJhY2tpbmcueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyYjQwZTYKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvbGF5b3V0L3N0YXR1c19iYXJfdHJhY2tpbmcueG1sCkBAIC0wLDAgKzEsNTAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tCisgICAgQ29weXJpZ2h0IChDKSAyMDA4IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKzxjb20uYW5kcm9pZC5zeXN0ZW11aS5zdGF0dXNiYXIuVHJhY2tpbmdWaWV3CisgICAgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAgIGFuZHJvaWQ6b3JpZW50YXRpb249InZlcnRpY2FsIgorICAgIGFuZHJvaWQ6dmlzaWJpbGl0eT0iZ29uZSIKKyAgICBhbmRyb2lkOmZvY3VzYWJsZT0idHJ1ZSIKKyAgICBhbmRyb2lkOmRlc2NlbmRhbnRGb2N1c2FiaWxpdHk9ImFmdGVyRGVzY2VuZGFudHMiCisgICAgYW5kcm9pZDpwYWRkaW5nQm90dG9tPSIwcHgiCisgICAgYW5kcm9pZDpwYWRkaW5nTGVmdD0iMHB4IgorICAgIGFuZHJvaWQ6cGFkZGluZ1JpZ2h0PSIwcHgiCisgICAgPgorCisgICAgPGNvbS5hbmRyb2lkLnN5c3RlbXVpLnN0YXR1c2Jhci5UcmFja2luZ1BhdHRlcm5WaWV3CisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgICAgICBhbmRyb2lkOmxheW91dF93ZWlnaHQ9IjEiCisgICAgICAgIC8+CisKKyAgICA8Y29tLmFuZHJvaWQuc3lzdGVtdWkuc3RhdHVzYmFyLkNsb3NlRHJhZ0hhbmRsZSBhbmRyb2lkOmlkPSJAK2lkL2Nsb3NlIgorICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgorICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKKyAgICAgICAgYW5kcm9pZDpvcmllbnRhdGlvbj0idmVydGljYWwiCisgICAgICAgID4KKyAgICAgICAgPEltYWdlVmlldworICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9Im1hdGNoX3BhcmVudCIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfZ3Jhdml0eT0iYm90dG9tIgorICAgICAgICAgICAgYW5kcm9pZDpzY2FsZVR5cGU9ImZpdFhZIgorICAgICAgICAgICAgYW5kcm9pZDpzcmM9IkBkcmF3YWJsZS9zaGFkZV9oYW5kbGViYXIiCisgICAgICAgICAgICAvPgorCisgICAgPC9jb20uYW5kcm9pZC5zeXN0ZW11aS5zdGF0dXNiYXIuQ2xvc2VEcmFnSGFuZGxlPgorCis8L2NvbS5hbmRyb2lkLnN5c3RlbXVpLnN0YXR1c2Jhci5UcmFja2luZ1ZpZXc+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzL2NvbmZpZy54bWwgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzL2NvbmZpZy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGVhNDZlNQotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMvY29uZmlnLnhtbApAQCAtMCwwICsxLDI2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLQorLyoKKyoqIENvcHlyaWdodCAyMDA5LCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisqKgorKiogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7IAorKiogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiAKKyoqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdCAKKyoqCisqKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIAorKioKKyoqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUgCisqKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLCAKKyoqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAKKyoqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgCisqKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyovCistLT4KKworPCEtLSBUaGVzZSByZXNvdXJjZXMgYXJlIGFyb3VuZCBqdXN0IHRvIGFsbG93IHRoZWlyIHZhbHVlcyB0byBiZSBjdXN0b21pemVkCisgICAgIGZvciBkaWZmZXJlbnQgaGFyZHdhcmUgYW5kIHByb2R1Y3QgYnVpbGRzLiAtLT4KKzxyZXNvdXJjZXM+CisgICAgPCEtLSBDb250cm9sIHdoZXRoZXIgc3RhdHVzIGJhciBzaG91bGQgZGlzdGluZ3Vpc2ggSFNQQSBkYXRhIGljb24gZm9ybSBVTVRTIGRhdGEgaWNvbiBvbiBkZXZpY2VzIC0tPgorICAgIDxib29sIG5hbWU9ImNvbmZpZ19oc3BhX2RhdGFfZGlzdGluZ3Vpc2hhYmxlIj5mYWxzZTwvYm9vbD4KKzwvcmVzb3VyY2VzPgorCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzL2RlZmF1bHRzLnhtbCBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMvZGVmYXVsdHMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0MzAyYzQKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMvdmFsdWVzL2RlZmF1bHRzLnhtbApAQCAtMCwwICsxLDc4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLQorLyoqCisgKiBDb3B5cmlnaHQgKGMpIDIwMDksIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsgCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIAorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0IAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAgCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZSAKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsIAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIAorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCAKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCistLT4KKzxyZXNvdXJjZXM+CisgICAgPGJvb2wgbmFtZT0iZGVmX2RpbV9zY3JlZW4iPnRydWU8L2Jvb2w+CisgICAgPGludGVnZXIgbmFtZT0iZGVmX3NjcmVlbl9vZmZfdGltZW91dCI+NjAwMDA8L2ludGVnZXI+CisgICAgPGJvb2wgbmFtZT0iZGVmX2FpcnBsYW5lX21vZGVfb24iPmZhbHNlPC9ib29sPgorICAgIDwhLS0gQ29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgYmx1ZXRvb3RoLCB3aWZpLCBhbmQgY2VsbC4gLS0+CisgICAgPHN0cmluZyBuYW1lPSJkZWZfYWlycGxhbmVfbW9kZV9yYWRpb3MiIHRyYW5zbGF0YWJsZT0iZmFsc2UiPmNlbGwsYmx1ZXRvb3RoLHdpZmk8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImFpcnBsYW5lX21vZGVfdG9nZ2xlYWJsZV9yYWRpb3MiIHRyYW5zbGF0YWJsZT0iZmFsc2UiPndpZmk8L3N0cmluZz4KKyAgICA8Ym9vbCBuYW1lPSJkZWZfYXV0b190aW1lIj50cnVlPC9ib29sPgorICAgIDxib29sIG5hbWU9ImRlZl9hY2NlbGVyb21ldGVyX3JvdGF0aW9uIj50cnVlPC9ib29sPgorICAgIDwhLS0gRGVmYXVsdCBzY3JlZW4gYnJpZ2h0bmVzcywgZnJvbSAwIHRvIDI1NS4gIDEwMiBpcyA0MCUuIC0tPgorICAgIDxpbnRlZ2VyIG5hbWU9ImRlZl9zY3JlZW5fYnJpZ2h0bmVzcyI+MTAyPC9pbnRlZ2VyPgorICAgIDxib29sIG5hbWU9ImRlZl9zY3JlZW5fYnJpZ2h0bmVzc19hdXRvbWF0aWNfbW9kZSI+ZmFsc2U8L2Jvb2w+CisgICAgPGZyYWN0aW9uIG5hbWU9ImRlZl93aW5kb3dfYW5pbWF0aW9uX3NjYWxlIj4xMDAlPC9mcmFjdGlvbj4KKyAgICA8ZnJhY3Rpb24gbmFtZT0iZGVmX3dpbmRvd190cmFuc2l0aW9uX3NjYWxlIj4xMDAlPC9mcmFjdGlvbj4KKyAgICA8Ym9vbCBuYW1lPSJkZWZfaGFwdGljX2ZlZWRiYWNrIj50cnVlPC9ib29sPgorICAgIAorICAgIDxib29sIG5hbWU9ImRlZl9ibHVldG9vdGhfb24iPmZhbHNlPC9ib29sPgorICAgIDxib29sIG5hbWU9ImRlZl9pbnN0YWxsX25vbl9tYXJrZXRfYXBwcyI+ZmFsc2U8L2Jvb2w+CisgICAgPCEtLSBDb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBsb2NhdGlvbiBwcm92aWRlcnMuIAorICAgICAgICAgTmV0d29yayBsb2NhdGlvbiBpcyBvZmYgYnkgZGVmYXVsdCBiZWNhdXNlIGl0IHJlcXVpcmVzCisgICAgICAgICB1c2VyIG9wdC1pbiB2aWEgU2V0dXAgV2l6YXJkIG9yIFNldHRpbmdzLiAgCisgICAgLS0+CisgICAgPHN0cmluZyBuYW1lPSJkZWZfbG9jYXRpb25fcHJvdmlkZXJzX2FsbG93ZWQiIHRyYW5zbGF0YWJsZT0iZmFsc2UiPmdwczwvc3RyaW5nPgorICAgIDxib29sIG5hbWU9ImFzc2lzdGVkX2dwc19lbmFibGVkIj50cnVlPC9ib29sPgorICAgIDwhLS0gIDAgPT0gbW9iaWxlLCAxID09IHdpZmkuIC0tPgorICAgIDxpbnRlZ2VyIG5hbWU9ImRlZl9uZXR3b3JrX3ByZWZlcmVuY2UiPjE8L2ludGVnZXI+CisgICAgPGJvb2wgbmFtZT0iZGVmX3VzYl9tYXNzX3N0b3JhZ2VfZW5hYmxlZCI+dHJ1ZTwvYm9vbD4KKyAgICA8Ym9vbCBuYW1lPSJkZWZfd2lmaV9vbiI+ZmFsc2U8L2Jvb2w+CisgICAgPGJvb2wgbmFtZT0iZGVmX25ldHdvcmtzX2F2YWlsYWJsZV9ub3RpZmljYXRpb25fb24iPnRydWU8L2Jvb2w+CisgICAgCisgICAgPGJvb2wgbmFtZT0iZGVmX2JhY2t1cF9lbmFibGVkIj5mYWxzZTwvYm9vbD4KKyAgICA8c3RyaW5nIG5hbWU9ImRlZl9iYWNrdXBfdHJhbnNwb3J0IiB0cmFuc2xhdGFibGU9ImZhbHNlIj48L3N0cmluZz4KKyAgICA8IS0tIERlZmF1bHQgdmFsdWUgZm9yIHdoZXRoZXIgb3Igbm90IHRvIHB1bHNlIHRoZSBub3RpZmljYXRpb24gTEVEIHdoZW4gdGhlcmUgaXMgYSAKKyAgICAgICAgIHBlbmRpbmcgbm90aWZpY2F0aW9uIC0tPgorICAgIDxib29sIG5hbWU9ImRlZl9ub3RpZmljYXRpb25fcHVsc2UiPnRydWU8L2Jvb2w+CisKKyAgICA8Ym9vbCBuYW1lPSJkZWZfbW91bnRfcGxheV9ub3RpZmljYXRpb25fc25kIj50cnVlPC9ib29sPgorICAgIDxib29sIG5hbWU9ImRlZl9tb3VudF91bXNfYXV0b3N0YXJ0Ij5mYWxzZTwvYm9vbD4KKyAgICA8Ym9vbCBuYW1lPSJkZWZfbW91bnRfdW1zX3Byb21wdCI+dHJ1ZTwvYm9vbD4KKyAgICA8Ym9vbCBuYW1lPSJkZWZfbW91bnRfdW1zX25vdGlmeV9lbmFibGVkIj50cnVlPC9ib29sPgorICAgIDwhLS0gRW5hYmxlIFVzZXIgcHJlZmVyZW5jZSBmb3Igc2V0dGluZyBpbnN0YWxsIGxvY2F0aW9uIC0tPgorICAgIDxib29sIG5hbWU9InNldF9pbnN0YWxsX2xvY2F0aW9uIj50cnVlPC9ib29sPgorICAgIDwhLS0gRGVmYXVsdCBpbnN0YWxsIGxvY2F0aW9uIGlmIHVzZXIgcHJlZmVyZW5jZSBmb3Igc2V0dGluZyBpbnN0YWxsIGxvY2F0aW9uIGlzIHR1cm5lZCBvbi4gLS0+CisgICAgPGludGVnZXIgbmFtZT0iZGVmX2luc3RhbGxfbG9jYXRpb24iPjI8L2ludGVnZXI+CisKKyAgICA8IS0tIHVzZXIgaW50ZXJmYWNlIHNvdW5kIGVmZmVjdHMgLS0+CisgICAgPGludGVnZXIgbmFtZT0iZGVmX3Bvd2VyX3NvdW5kc19lbmFibGVkIj4xPC9pbnRlZ2VyPgorICAgIDxzdHJpbmcgbmFtZT0iZGVmX2xvd19iYXR0ZXJ5X3NvdW5kIiB0cmFuc2xhdGFibGU9ImZhbHNlIj4vc3lzdGVtL21lZGlhL2F1ZGlvL3VpL0xvd0JhdHRlcnkub2dnPC9zdHJpbmc+CisgICAgPGludGVnZXIgbmFtZT0iZGVmX2RvY2tfc291bmRzX2VuYWJsZWQiPjA8L2ludGVnZXI+CisgICAgPHN0cmluZyBuYW1lPSJkZWZfZGVza19kb2NrX3NvdW5kIiB0cmFuc2xhdGFibGU9ImZhbHNlIj4vc3lzdGVtL21lZGlhL2F1ZGlvL3VpL0RvY2sub2dnPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJkZWZfZGVza191bmRvY2tfc291bmQiIHRyYW5zbGF0YWJsZT0iZmFsc2UiPi9zeXN0ZW0vbWVkaWEvYXVkaW8vdWkvVW5kb2NrLm9nZzwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iZGVmX2Nhcl9kb2NrX3NvdW5kIiB0cmFuc2xhdGFibGU9ImZhbHNlIj4vc3lzdGVtL21lZGlhL2F1ZGlvL3VpL0RvY2sub2dnPC9zdHJpbmc+CisgICAgPHN0cmluZyBuYW1lPSJkZWZfY2FyX3VuZG9ja19zb3VuZCIgdHJhbnNsYXRhYmxlPSJmYWxzZSI+L3N5c3RlbS9tZWRpYS9hdWRpby91aS9VbmRvY2sub2dnPC9zdHJpbmc+CisgICAgPGludGVnZXIgbmFtZT0iZGVmX2xvY2tzY3JlZW5fc291bmRzX2VuYWJsZWQiPjA8L2ludGVnZXI+CisgICAgPHN0cmluZyBuYW1lPSJkZWZfbG9ja19zb3VuZCIgdHJhbnNsYXRhYmxlPSJmYWxzZSI+L3N5c3RlbS9tZWRpYS9hdWRpby91aS9Mb2NrLm9nZzwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iZGVmX3VubG9ja19zb3VuZCIgdHJhbnNsYXRhYmxlPSJmYWxzZSI+L3N5c3RlbS9tZWRpYS9hdWRpby91aS9VbmxvY2sub2dnPC9zdHJpbmc+CisKKyAgICA8IS0tIERlZmF1bHQgZm9yIFNldHRpbmdzLlN5c3RlbS5WSUJSQVRFX0lOX1NJTEVOVCAtLT4KKyAgICA8Ym9vbCBuYW1lPSJkZWZfdmlicmF0ZV9pbl9zaWxlbnQiPnRydWU8L2Jvb2w+Cis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMvZGltZW5zLnhtbCBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMvZGltZW5zLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45M2NmMzc3Ci0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy9kaW1lbnMueG1sCkBAIC0wLDAgKzEsMjIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tCisgKiBDb3B5cmlnaHQgKGMpIDIwMDYsIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsgCisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIAorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0IAorICoKKyAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAgCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZSAKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsIAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIAorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCAKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorKi8KKy0tPgorPHJlc291cmNlcz4KKyAgICA8IS0tIE1hcmdpbiBhdCB0aGUgZWRnZSBvZiB0aGUgc2NyZWVuIHRvIGlnbm9yZSB0b3VjaCBldmVudHMgZm9yIGluIHRoZSB3aW5kb3dzaGFkZS4gLS0+CisgICAgPGRpbWVuIG5hbWU9InN0YXR1c19iYXJfZWRnZV9pZ25vcmUiPjVkcDwvZGltZW4+Cis8L3Jlc291cmNlcz4KKwpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvcmVzL3ZhbHVlcy9zdHJpbmdzLnhtbCBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMvc3RyaW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmEzYTNkMQotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMvc3RyaW5ncy54bWwKQEAgLTAsMCArMSw1NCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0KKy8qKgorICogQ29weXJpZ2h0IChjKSAyMDA5LCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7IAorICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLiAKKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdCAKKyAqCisgKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUgCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLCAKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAKKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworLS0+Cis8cmVzb3VyY2VzIHhtbG5zOnhsaWZmPSJ1cm46b2FzaXM6bmFtZXM6dGM6eGxpZmY6ZG9jdW1lbnQ6MS4yIj4KKyAgICA8IS0tIE5hbWUgb2YgdGhlIHN0YXR1cyBiYXIgYXMgc2VlbiBpbiB0aGUgYXBwbGljYXRpb25zIGluZm8gc2V0dGluZ3MgcGFnZS4gLS0+CisgICAgPHN0cmluZyBuYW1lPSJhcHBfbGFiZWwiPlN0YXR1cyBCYXI8L3N0cmluZz4KKworICAgIDwhLS0gVGhlIHRleHQgZm9yIHRoZSBidXR0b24gaW4gdGhlIG5vdGlmaWNhdGlvbiB3aW5kb3ctc2hhZGUgdGhhdCBjbGVhcnMKKyAgICAgICAgIGFsbCBvZiB0aGUgY3VycmVudGx5IHZpc2libGUgbm90aWZpY2F0aW9ucy4gLS0+CisgICAgPHN0cmluZyBuYW1lPSJzdGF0dXNfYmFyX2NsZWFyX2FsbF9idXR0b24iPkNsZWFyPC9zdHJpbmc+CisKKyAgICA8IS0tIFRoZSBsYWJlbCBpbiB0aGUgYmFyIGF0IHRoZSB0b3Agb2YgdGhlIHN0YXR1cyBiYXIgd2hlbiB0aGVyZSBhcmUgbm8gbm90aWZpY2F0aW9ucworICAgICAgICAgc2hvd2luZy4gLS0+CisgICAgPHN0cmluZyBuYW1lPSJzdGF0dXNfYmFyX25vX25vdGlmaWNhdGlvbnNfdGl0bGUiPk5vIG5vdGlmaWNhdGlvbnM8L3N0cmluZz4KKworICAgIDwhLS0gVGhlIGxhYmVsIGZvciB0aGUgZ3JvdXAgb2Ygbm90aWZpY2F0aW9ucyBmb3Igb25nb2luZyBldmVudHMgaW4gdGhlIG9wZW5lZCB2ZXJzaW9uIG9mCisgICAgICAgICB0aGUgc3RhdHVzIGJhci4gIEFuIG9uZ29pbmcgY2FsbCBpcyB0aGUgcHJpbWUgZXhhbXBsZSBvZiB0aGlzLiAgVGhlIE1QMyBtdXNpYyBwbGF5ZXIKKyAgICAgICAgIG1pZ2h0IGJlIGFub3RoZXIgZXhhbXBsZS4gIC0tPgorICAgIDxzdHJpbmcgbmFtZT0ic3RhdHVzX2Jhcl9vbmdvaW5nX2V2ZW50c190aXRsZSI+T25nb2luZzwvc3RyaW5nPgorCisgICAgPCEtLSBUaGUgbGFiZWwgZm9yIHRoZSBncm91cCBvZiBub3RpZmljYXRpb25zIGZvciByZWNlbnQgZXZlbnRzIGluIHRoZSBvcGVuZWQgdmVyc2lvbiBvZgorICAgICAgICAgdGhlIHN0YXR1cyBiYXIuICBSZWNlbnRseSByZWNlaXZlZCB0ZXh0IG1lc3NzYWdlcyAoU01TKSwgZW1haWxzLCBjYWxlbmRhciBhbGVydHMsIGV0Yy4gLS0+CisgICAgPHN0cmluZyBuYW1lPSJzdGF0dXNfYmFyX2xhdGVzdF9ldmVudHNfdGl0bGUiPk5vdGlmaWNhdGlvbnM8L3N0cmluZz4KKworICAgIDwhLS0gV2hlbiB0aGUgYmF0dGVyeSBpcyBsb3csIHRoaXMgaXMgZGlzcGxheWVkIHRvIHRoZSB1c2VyIGluIGEgZGlhbG9nLiAgVGhlIHRpdGxlIG9mIHRoZSBsb3cgYmF0dGVyeSBhbGVydC4gLS0+CisgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X2xvd190aXRsZSI+UGxlYXNlIGNvbm5lY3QgY2hhcmdlcjwvc3RyaW5nPgorCisgICAgPCEtLSBXaGVuIHRoZSBiYXR0ZXJ5IGlzIGxvdywgdGhpcyBpcyBkaXNwbGF5ZWQgdG8gdGhlIHVzZXIgaW4gYSBkaWFsb2cuIFRoZSBzdWJ0aXRsZSBvZiB0aGUgbG93IGJhdHRlcnkgYWxlcnQuIC0tPgorICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9sb3dfc3VidGl0bGUiPlRoZSBiYXR0ZXJ5IGlzIGdldHRpbmcgbG93Ojwvc3RyaW5nPgorCisgICAgPCEtLSBBIG1lc3NhZ2UgdGhhdCBhcHBlYXJzIHdoZW4gdGhlIGJhdHRlcnkgbGV2ZWwgaXMgZ2V0dGluZyBsb3cgaW4gYSBkaWFsb2cuICBUaGlzIGlzIGFwcGVuZWQgdG8gdGhlIHN1YnRpdGxlIG9mIHRoZSBsb3cgYmF0dGVyeSBhbGVydC4gLS0+CisgICAgPHN0cmluZyBuYW1lPSJiYXR0ZXJ5X2xvd19wZXJjZW50X2Zvcm1hdCI+PHhsaWZmOmcgaWQ9Im51bWJlciI+JWQlJTwveGxpZmY6Zz4KKyAgICBvciBsZXNzIHJlbWFpbmluZy48L3N0cmluZz4KKworICAgIDwhLS0gV2hlbiB0aGUgYmF0dGVyeSBpcyBsb3csIHRoaXMgaXMgdGhlIGxhYmVsIG9mIHRoZSBidXR0b24gdG8gZ28gdG8gdGhlCisgICAgICAgICBwb3dlciB1c2FnZSBhY3Rpdml0eSB0byBmaW5kIG91dCB3aGF0IGRyYWluZWQgdGhlIGJhdHRlcnkuIC0tPgorICAgIDxzdHJpbmcgbmFtZT0iYmF0dGVyeV9sb3dfd2h5Ij5CYXR0ZXJ5IHVzZTwvc3RyaW5nPgorCis8L3Jlc291cmNlcz4KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMvc3R5bGVzLnhtbCBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMvc3R5bGVzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTZmMzRhNAotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy92YWx1ZXMvc3R5bGVzLnhtbApAQCAtMCwwICsxLDI4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLSBDb3B5cmlnaHQgKEMpIDIwMDYgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorCisgICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgCisgICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworPHJlc291cmNlcyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiPgorCisgICAgPHN0eWxlIG5hbWU9IlRleHRBcHBlYXJhbmNlLlN0YXR1c0Jhci5UaXRsZSIgcGFyZW50PSJAYW5kcm9pZDpzdHlsZS9UZXh0QXBwZWFyYW5jZS5TdGF0dXNCYXIiPgorICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOnRleHRBcHBlYXJhbmNlIj4/YW5kcm9pZDphdHRyL3RleHRBcHBlYXJhbmNlU21hbGw8L2l0ZW0+CisgICAgICAgIDxpdGVtIG5hbWU9ImFuZHJvaWQ6dGV4dFN0eWxlIj5ib2xkPC9pdGVtPgorICAgICAgICA8aXRlbSBuYW1lPSJhbmRyb2lkOnRleHRDb2xvciI+P2FuZHJvaWQ6YXR0ci90ZXh0Q29sb3JQcmltYXJ5PC9pdGVtPgorICAgIDwvc3R5bGU+CisKKyAgICA8c3R5bGUgbmFtZT0iVGV4dEFwcGVhcmFuY2UuU3RhdHVzQmFyLkludHJ1ZGVyQWxlcnQiCisgICAgICAgIHBhcmVudD0iQGFuZHJvaWQ6c3R5bGUvVGV4dEFwcGVhcmFuY2UuU3RhdHVzQmFyIj4KKyAgICA8L3N0eWxlPgorPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMveG1sL2Jvb2ttYXJrcy54bWwgYi9wYWNrYWdlcy9TeXN0ZW1VSS9yZXMveG1sL2Jvb2ttYXJrcy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGZhZWVhZgotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3Jlcy94bWwvYm9va21hcmtzLnhtbApAQCAtMCwwICsxLDU2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLSBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorCisgICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgCisgICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworPGJvb2ttYXJrcz4KKyAgICA8Ym9va21hcmsKKyAgICAgICAgcGFja2FnZT0iY29tLmFuZHJvaWQuYnJvd3NlciIKKyAgICAgICAgY2xhc3M9ImNvbS5hbmRyb2lkLmJyb3dzZXIuQnJvd3NlckFjdGl2aXR5IgorICAgICAgICBzaG9ydGN1dD0iYiIgLz4KKyAgICA8Ym9va21hcmsKKyAgICAgICAgcGFja2FnZT0iY29tLmFuZHJvaWQuY29udGFjdHMiCisgICAgICAgIGNsYXNzPSJjb20uYW5kcm9pZC5jb250YWN0cy5EaWFsdGFjdHNDb250YWN0c0VudHJ5QWN0aXZpdHkiCisgICAgICAgIHNob3J0Y3V0PSJjIiAvPgorICAgIDxib29rbWFyaworICAgICAgICBwYWNrYWdlPSJjb20uYW5kcm9pZC5lbWFpbCIKKyAgICAgICAgY2xhc3M9ImNvbS5hbmRyb2lkLmVtYWlsLmFjdGl2aXR5LldlbGNvbWUiCisgICAgICAgIHNob3J0Y3V0PSJlIiAvPgorICAgIDxib29rbWFyaworICAgICAgICBwYWNrYWdlPSJjb20uZ29vZ2xlLmFuZHJvaWQuZ20iCisgICAgICAgIGNsYXNzPSJjb20uZ29vZ2xlLmFuZHJvaWQuZ20uQ29udmVyc2F0aW9uTGlzdEFjdGl2aXR5R21haWwiCisgICAgICAgIHNob3J0Y3V0PSJnIiAvPgorICAgIDxib29rbWFyaworICAgICAgICBwYWNrYWdlPSJjb20uYW5kcm9pZC5pbSIKKyAgICAgICAgY2xhc3M9ImNvbS5hbmRyb2lkLmltLmFwcC5MYW5kaW5nUGFnZSIKKyAgICAgICAgc2hvcnRjdXQ9ImkiIC8+CisgICAgPGJvb2ttYXJrCisgICAgICAgIHBhY2thZ2U9ImNvbS5hbmRyb2lkLmNhbGVuZGFyIgorICAgICAgICBjbGFzcz0iY29tLmFuZHJvaWQuY2FsZW5kYXIuTGF1bmNoQWN0aXZpdHkiCisgICAgICAgIHNob3J0Y3V0PSJsIiAvPgorPCEtLQorICAgIDxib29rbWFyaworICAgICAgICBwYWNrYWdlPSJjb20uZ29vZ2xlLmFuZHJvaWQuYXBwcy5tYXBzIgorICAgICAgICBjbGFzcz0iY29tLmdvb2dsZS5hbmRyb2lkLm1hcHMuTWFwc0FjdGl2aXR5IgorICAgICAgICBzaG9ydGN1dD0ibSIgLz4KKy0tPgorICAgIDxib29rbWFyaworICAgICAgICBwYWNrYWdlPSJjb20uYW5kcm9pZC5tdXNpYyIKKyAgICAgICAgY2xhc3M9ImNvbS5hbmRyb2lkLm11c2ljLk11c2ljQnJvd3NlckFjdGl2aXR5IgorICAgICAgICBzaG9ydGN1dD0icCIgLz4KKyAgICA8Ym9va21hcmsKKyAgICAgICAgcGFja2FnZT0iY29tLmFuZHJvaWQubW1zIgorICAgICAgICBjbGFzcz0iY29tLmFuZHJvaWQubW1zLnVpLkNvbnZlcnNhdGlvbkxpc3QiCisgICAgICAgIHNob3J0Y3V0PSJzIiAvPgorPC9ib29rbWFya3M+CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL0FuaW1hdGVkSW1hZ2VWaWV3LmphdmEgYi9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL0FuaW1hdGVkSW1hZ2VWaWV3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzBkNGQ2YQotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvQW5pbWF0ZWRJbWFnZVZpZXcuamF2YQpAQCAtMCwwICsxLDg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5zeXN0ZW11aS5zdGF0dXNiYXI7CisKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkFuaW1hdGlvbkRyYXdhYmxlOworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGU7CitpbXBvcnQgYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldDsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5JbWFnZVZpZXc7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuUmVtb3RlVmlld3MuUmVtb3RlVmlldzsKKworQFJlbW90ZVZpZXcKK3B1YmxpYyBjbGFzcyBBbmltYXRlZEltYWdlVmlldyBleHRlbmRzIEltYWdlVmlldyB7CisgICAgQW5pbWF0aW9uRHJhd2FibGUgbUFuaW07CisgICAgYm9vbGVhbiBtQXR0YWNoZWQ7CisKKyAgICBwdWJsaWMgQW5pbWF0ZWRJbWFnZVZpZXcoQ29udGV4dCBjb250ZXh0KSB7CisgICAgICAgIHN1cGVyKGNvbnRleHQpOworICAgIH0KKworICAgIHB1YmxpYyBBbmltYXRlZEltYWdlVmlldyhDb250ZXh0IGNvbnRleHQsIEF0dHJpYnV0ZVNldCBhdHRycykgeworICAgICAgICBzdXBlcihjb250ZXh0LCBhdHRycyk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHVwZGF0ZUFuaW0oKSB7CisgICAgICAgIERyYXdhYmxlIGRyYXdhYmxlID0gZ2V0RHJhd2FibGUoKTsKKyAgICAgICAgaWYgKG1BdHRhY2hlZCAmJiBtQW5pbSAhPSBudWxsKSB7CisgICAgICAgICAgICBtQW5pbS5zdG9wKCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGRyYXdhYmxlIGluc3RhbmNlb2YgQW5pbWF0aW9uRHJhd2FibGUpIHsKKyAgICAgICAgICAgIG1BbmltID0gKEFuaW1hdGlvbkRyYXdhYmxlKWRyYXdhYmxlOworICAgICAgICAgICAgaWYgKG1BdHRhY2hlZCkgeworICAgICAgICAgICAgICAgIG1BbmltLnN0YXJ0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtQW5pbSA9IG51bGw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBzZXRJbWFnZURyYXdhYmxlKERyYXdhYmxlIGRyYXdhYmxlKSB7CisgICAgICAgIHN1cGVyLnNldEltYWdlRHJhd2FibGUoZHJhd2FibGUpOworICAgICAgICB1cGRhdGVBbmltKCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgQGFuZHJvaWQudmlldy5SZW1vdGFibGVWaWV3TWV0aG9kCisgICAgcHVibGljIHZvaWQgc2V0SW1hZ2VSZXNvdXJjZShpbnQgcmVzaWQpIHsKKyAgICAgICAgc3VwZXIuc2V0SW1hZ2VSZXNvdXJjZShyZXNpZCk7CisgICAgICAgIHVwZGF0ZUFuaW0oKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBvbkF0dGFjaGVkVG9XaW5kb3coKSB7CisgICAgICAgIHN1cGVyLm9uQXR0YWNoZWRUb1dpbmRvdygpOworICAgICAgICBpZiAobUFuaW0gIT0gbnVsbCkgeworICAgICAgICAgICAgbUFuaW0uc3RhcnQoKTsKKyAgICAgICAgfQorICAgICAgICBtQXR0YWNoZWQgPSB0cnVlOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIG9uRGV0YWNoZWRGcm9tV2luZG93KCkgeworICAgICAgICBzdXBlci5vbkRldGFjaGVkRnJvbVdpbmRvdygpOworICAgICAgICBpZiAobUFuaW0gIT0gbnVsbCkgeworICAgICAgICAgICAgbUFuaW0uc3RvcCgpOworICAgICAgICB9CisgICAgICAgIG1BdHRhY2hlZCA9IGZhbHNlOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YXR1c2Jhci9DYXJyaWVyTGFiZWwuamF2YSBiL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvQ2FycmllckxhYmVsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDg5ZDA5MwotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvQ2FycmllckxhYmVsLmphdmEKQEAgLTAsMCArMSwxMTcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLnN5c3RlbXVpLnN0YXR1c2JhcjsKKworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Ccm9hZGNhc3RSZWNlaXZlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnRGaWx0ZXI7CitpbXBvcnQgYW5kcm9pZC5wcm92aWRlci5UZWxlcGhvbnk7CitpbXBvcnQgYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldDsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuU2xvZzsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuVmlldzsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5UZXh0VmlldzsKKworaW1wb3J0IGphdmEudGV4dC5TaW1wbGVEYXRlRm9ybWF0OworaW1wb3J0IGphdmEudXRpbC5DYWxlbmRhcjsKK2ltcG9ydCBqYXZhLnV0aWwuVGltZVpvbmU7CisKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SOworCisvKioKKyAqIFRoaXMgd2lkZ2V0IGRpc3BsYXkgYW4gYW5hbG9naWMgY2xvY2sgd2l0aCB0d28gaGFuZHMgZm9yIGhvdXJzIGFuZAorICogbWludXRlcy4KKyAqLworcHVibGljIGNsYXNzIENhcnJpZXJMYWJlbCBleHRlbmRzIFRleHRWaWV3IHsKKyAgICBwcml2YXRlIGJvb2xlYW4gbUF0dGFjaGVkOworCisgICAgcHVibGljIENhcnJpZXJMYWJlbChDb250ZXh0IGNvbnRleHQpIHsKKyAgICAgICAgdGhpcyhjb250ZXh0LCBudWxsKTsKKyAgICB9CisKKyAgICBwdWJsaWMgQ2FycmllckxhYmVsKENvbnRleHQgY29udGV4dCwgQXR0cmlidXRlU2V0IGF0dHJzKSB7CisgICAgICAgIHRoaXMoY29udGV4dCwgYXR0cnMsIDApOworICAgIH0KKworICAgIHB1YmxpYyBDYXJyaWVyTGFiZWwoQ29udGV4dCBjb250ZXh0LCBBdHRyaWJ1dGVTZXQgYXR0cnMsIGludCBkZWZTdHlsZSkgeworICAgICAgICBzdXBlcihjb250ZXh0LCBhdHRycywgZGVmU3R5bGUpOworICAgICAgICB1cGRhdGVOZXR3b3JrTmFtZShmYWxzZSwgbnVsbCwgZmFsc2UsIG51bGwpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIG9uQXR0YWNoZWRUb1dpbmRvdygpIHsKKyAgICAgICAgc3VwZXIub25BdHRhY2hlZFRvV2luZG93KCk7CisKKyAgICAgICAgaWYgKCFtQXR0YWNoZWQpIHsKKyAgICAgICAgICAgIG1BdHRhY2hlZCA9IHRydWU7CisgICAgICAgICAgICBJbnRlbnRGaWx0ZXIgZmlsdGVyID0gbmV3IEludGVudEZpbHRlcigpOworICAgICAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihUZWxlcGhvbnkuSW50ZW50cy5TUE5fU1RSSU5HU19VUERBVEVEX0FDVElPTik7CisgICAgICAgICAgICBnZXRDb250ZXh0KCkucmVnaXN0ZXJSZWNlaXZlcihtSW50ZW50UmVjZWl2ZXIsIGZpbHRlciwgbnVsbCwgZ2V0SGFuZGxlcigpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIG9uRGV0YWNoZWRGcm9tV2luZG93KCkgeworICAgICAgICBzdXBlci5vbkRldGFjaGVkRnJvbVdpbmRvdygpOworICAgICAgICBpZiAobUF0dGFjaGVkKSB7CisgICAgICAgICAgICBnZXRDb250ZXh0KCkudW5yZWdpc3RlclJlY2VpdmVyKG1JbnRlbnRSZWNlaXZlcik7CisgICAgICAgICAgICBtQXR0YWNoZWQgPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgZmluYWwgQnJvYWRjYXN0UmVjZWl2ZXIgbUludGVudFJlY2VpdmVyID0gbmV3IEJyb2FkY2FzdFJlY2VpdmVyKCkgeworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHZvaWQgb25SZWNlaXZlKENvbnRleHQgY29udGV4dCwgSW50ZW50IGludGVudCkgeworICAgICAgICAgICAgU3RyaW5nIGFjdGlvbiA9IGludGVudC5nZXRBY3Rpb24oKTsKKyAgICAgICAgICAgIGlmIChUZWxlcGhvbnkuSW50ZW50cy5TUE5fU1RSSU5HU19VUERBVEVEX0FDVElPTi5lcXVhbHMoYWN0aW9uKSkgeworICAgICAgICAgICAgICAgIHVwZGF0ZU5ldHdvcmtOYW1lKGludGVudC5nZXRCb29sZWFuRXh0cmEoVGVsZXBob255LkludGVudHMuRVhUUkFfU0hPV19TUE4sIGZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludGVudC5nZXRTdHJpbmdFeHRyYShUZWxlcGhvbnkuSW50ZW50cy5FWFRSQV9TUE4pLAorICAgICAgICAgICAgICAgICAgICAgICAgaW50ZW50LmdldEJvb2xlYW5FeHRyYShUZWxlcGhvbnkuSW50ZW50cy5FWFRSQV9TSE9XX1BMTU4sIGZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludGVudC5nZXRTdHJpbmdFeHRyYShUZWxlcGhvbnkuSW50ZW50cy5FWFRSQV9QTE1OKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworCisgICAgdm9pZCB1cGRhdGVOZXR3b3JrTmFtZShib29sZWFuIHNob3dTcG4sIFN0cmluZyBzcG4sIGJvb2xlYW4gc2hvd1BsbW4sIFN0cmluZyBwbG1uKSB7CisgICAgICAgIGlmIChmYWxzZSkgeworICAgICAgICAgICAgU2xvZy5kKCJDYXJyaWVyTGFiZWwiLCAidXBkYXRlTmV0d29ya05hbWUgc2hvd1Nwbj0iICsgc2hvd1NwbiArICIgc3BuPSIgKyBzcG4KKyAgICAgICAgICAgICAgICAgICAgKyAiIHNob3dQbG1uPSIgKyBzaG93UGxtbiArICIgcGxtbj0iICsgcGxtbik7CisgICAgICAgIH0KKyAgICAgICAgU3RyaW5nQnVpbGRlciBzdHIgPSBuZXcgU3RyaW5nQnVpbGRlcigpOworICAgICAgICBib29sZWFuIHNvbWV0aGluZyA9IGZhbHNlOworICAgICAgICBpZiAoc2hvd1BsbW4gJiYgcGxtbiAhPSBudWxsKSB7CisgICAgICAgICAgICBzdHIuYXBwZW5kKHBsbW4pOworICAgICAgICAgICAgc29tZXRoaW5nID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoc2hvd1NwbiAmJiBzcG4gIT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKHNvbWV0aGluZykgeworICAgICAgICAgICAgICAgIHN0ci5hcHBlbmQoJyAnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0ci5hcHBlbmQoc3BuKTsKKyAgICAgICAgICAgIHNvbWV0aGluZyA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNvbWV0aGluZykgeworICAgICAgICAgICAgc2V0VGV4dChzdHIudG9TdHJpbmcoKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzZXRUZXh0KGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLmxvY2tzY3JlZW5fY2Fycmllcl9kZWZhdWx0KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIAorfQorCisKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvQ2xvY2suamF2YSBiL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvQ2xvY2suamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZmM4ZGY1Ci0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YXR1c2Jhci9DbG9jay5qYXZhCkBAIC0wLDAgKzEsMjA4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5zeXN0ZW11aS5zdGF0dXNiYXI7CisKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQnJvYWRjYXN0UmVjZWl2ZXI7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50RmlsdGVyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5yZXMuVHlwZWRBcnJheTsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLkNhbnZhczsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLlR5cGVmYWNlOworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGU7CitpbXBvcnQgYW5kcm9pZC50ZXh0LlNwYW5uYWJsZTsKK2ltcG9ydCBhbmRyb2lkLnRleHQuU3Bhbm5hYmxlU3RyaW5nQnVpbGRlcjsKK2ltcG9ydCBhbmRyb2lkLnRleHQuZm9ybWF0LkRhdGVGb3JtYXQ7CitpbXBvcnQgYW5kcm9pZC50ZXh0LnN0eWxlLkNoYXJhY3RlclN0eWxlOworaW1wb3J0IGFuZHJvaWQudGV4dC5zdHlsZS5Gb3JlZ3JvdW5kQ29sb3JTcGFuOworaW1wb3J0IGFuZHJvaWQudGV4dC5zdHlsZS5SZWxhdGl2ZVNpemVTcGFuOworaW1wb3J0IGFuZHJvaWQudGV4dC5zdHlsZS5SZWxhdGl2ZVNpemVTcGFuOworaW1wb3J0IGFuZHJvaWQudGV4dC5zdHlsZS5TdHlsZVNwYW47CitpbXBvcnQgYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldDsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuVmlldzsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5UZXh0VmlldzsKKworaW1wb3J0IGphdmEudGV4dC5TaW1wbGVEYXRlRm9ybWF0OworaW1wb3J0IGphdmEudXRpbC5DYWxlbmRhcjsKK2ltcG9ydCBqYXZhLnV0aWwuVGltZVpvbmU7CisKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SOworCisvKioKKyAqIFRoaXMgd2lkZ2V0IGRpc3BsYXkgYW4gYW5hbG9naWMgY2xvY2sgd2l0aCB0d28gaGFuZHMgZm9yIGhvdXJzIGFuZAorICogbWludXRlcy4KKyAqLworcHVibGljIGNsYXNzIENsb2NrIGV4dGVuZHMgVGV4dFZpZXcgeworICAgIHByaXZhdGUgYm9vbGVhbiBtQXR0YWNoZWQ7CisgICAgcHJpdmF0ZSBDYWxlbmRhciBtQ2FsZW5kYXI7CisgICAgcHJpdmF0ZSBTdHJpbmcgbUNsb2NrRm9ybWF0U3RyaW5nOworICAgIHByaXZhdGUgU2ltcGxlRGF0ZUZvcm1hdCBtQ2xvY2tGb3JtYXQ7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQU1fUE1fU1RZTEVfTk9STUFMICA9IDA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEFNX1BNX1NUWUxFX1NNQUxMICAgPSAxOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBBTV9QTV9TVFlMRV9HT05FICAgID0gMjsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBBTV9QTV9TVFlMRSA9IEFNX1BNX1NUWUxFX0dPTkU7CisKKyAgICBwdWJsaWMgQ2xvY2soQ29udGV4dCBjb250ZXh0KSB7CisgICAgICAgIHRoaXMoY29udGV4dCwgbnVsbCk7CisgICAgfQorCisgICAgcHVibGljIENsb2NrKENvbnRleHQgY29udGV4dCwgQXR0cmlidXRlU2V0IGF0dHJzKSB7CisgICAgICAgIHRoaXMoY29udGV4dCwgYXR0cnMsIDApOworICAgIH0KKworICAgIHB1YmxpYyBDbG9jayhDb250ZXh0IGNvbnRleHQsIEF0dHJpYnV0ZVNldCBhdHRycywgaW50IGRlZlN0eWxlKSB7CisgICAgICAgIHN1cGVyKGNvbnRleHQsIGF0dHJzLCBkZWZTdHlsZSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgb25BdHRhY2hlZFRvV2luZG93KCkgeworICAgICAgICBzdXBlci5vbkF0dGFjaGVkVG9XaW5kb3coKTsKKworICAgICAgICBpZiAoIW1BdHRhY2hlZCkgeworICAgICAgICAgICAgbUF0dGFjaGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIEludGVudEZpbHRlciBmaWx0ZXIgPSBuZXcgSW50ZW50RmlsdGVyKCk7CisKKyAgICAgICAgICAgIGZpbHRlci5hZGRBY3Rpb24oSW50ZW50LkFDVElPTl9USU1FX1RJQ0spOworICAgICAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihJbnRlbnQuQUNUSU9OX1RJTUVfQ0hBTkdFRCk7CisgICAgICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKEludGVudC5BQ1RJT05fVElNRVpPTkVfQ0hBTkdFRCk7CisgICAgICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKEludGVudC5BQ1RJT05fQ09ORklHVVJBVElPTl9DSEFOR0VEKTsKKworICAgICAgICAgICAgZ2V0Q29udGV4dCgpLnJlZ2lzdGVyUmVjZWl2ZXIobUludGVudFJlY2VpdmVyLCBmaWx0ZXIsIG51bGwsIGdldEhhbmRsZXIoKSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBOT1RFOiBJdCdzIHNhZmUgdG8gZG8gdGhlc2UgYWZ0ZXIgcmVnaXN0ZXJpbmcgdGhlIHJlY2VpdmVyIHNpbmNlIHRoZSByZWNlaXZlciBhbHdheXMgcnVucworICAgICAgICAvLyBpbiB0aGUgbWFpbiB0aHJlYWQsIHRoZXJlZm9yZSB0aGUgcmVjZWl2ZXIgY2FuJ3QgcnVuIGJlZm9yZSB0aGlzIG1ldGhvZCByZXR1cm5zLgorCisgICAgICAgIC8vIFRoZSB0aW1lIHpvbmUgbWF5IGhhdmUgY2hhbmdlZCB3aGlsZSB0aGUgcmVjZWl2ZXIgd2Fzbid0IHJlZ2lzdGVyZWQsIHNvIHVwZGF0ZSB0aGUgVGltZQorICAgICAgICBtQ2FsZW5kYXIgPSBDYWxlbmRhci5nZXRJbnN0YW5jZShUaW1lWm9uZS5nZXREZWZhdWx0KCkpOworCisgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSB1cGRhdGUgdG8gdGhlIGN1cnJlbnQgdGltZQorICAgICAgICB1cGRhdGVDbG9jaygpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIG9uRGV0YWNoZWRGcm9tV2luZG93KCkgeworICAgICAgICBzdXBlci5vbkRldGFjaGVkRnJvbVdpbmRvdygpOworICAgICAgICBpZiAobUF0dGFjaGVkKSB7CisgICAgICAgICAgICBnZXRDb250ZXh0KCkudW5yZWdpc3RlclJlY2VpdmVyKG1JbnRlbnRSZWNlaXZlcik7CisgICAgICAgICAgICBtQXR0YWNoZWQgPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgZmluYWwgQnJvYWRjYXN0UmVjZWl2ZXIgbUludGVudFJlY2VpdmVyID0gbmV3IEJyb2FkY2FzdFJlY2VpdmVyKCkgeworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHZvaWQgb25SZWNlaXZlKENvbnRleHQgY29udGV4dCwgSW50ZW50IGludGVudCkgeworICAgICAgICAgICAgU3RyaW5nIGFjdGlvbiA9IGludGVudC5nZXRBY3Rpb24oKTsKKyAgICAgICAgICAgIGlmIChhY3Rpb24uZXF1YWxzKEludGVudC5BQ1RJT05fVElNRVpPTkVfQ0hBTkdFRCkpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgdHogPSBpbnRlbnQuZ2V0U3RyaW5nRXh0cmEoInRpbWUtem9uZSIpOworICAgICAgICAgICAgICAgIG1DYWxlbmRhciA9IENhbGVuZGFyLmdldEluc3RhbmNlKFRpbWVab25lLmdldFRpbWVab25lKHR6KSk7CisgICAgICAgICAgICAgICAgaWYgKG1DbG9ja0Zvcm1hdCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIG1DbG9ja0Zvcm1hdC5zZXRUaW1lWm9uZShtQ2FsZW5kYXIuZ2V0VGltZVpvbmUoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgdXBkYXRlQ2xvY2soKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBmaW5hbCB2b2lkIHVwZGF0ZUNsb2NrKCkgeworICAgICAgICBtQ2FsZW5kYXIuc2V0VGltZUluTWlsbGlzKFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpKTsKKyAgICAgICAgc2V0VGV4dChnZXRTbWFsbFRpbWUoKSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBmaW5hbCBDaGFyU2VxdWVuY2UgZ2V0U21hbGxUaW1lKCkgeworICAgICAgICBDb250ZXh0IGNvbnRleHQgPSBnZXRDb250ZXh0KCk7CisgICAgICAgIGJvb2xlYW4gYjI0ID0gRGF0ZUZvcm1hdC5pczI0SG91ckZvcm1hdChjb250ZXh0KTsKKyAgICAgICAgaW50IHJlczsKKworICAgICAgICBpZiAoYjI0KSB7CisgICAgICAgICAgICByZXMgPSBSLnN0cmluZy50d2VudHlfZm91cl9ob3VyX3RpbWVfZm9ybWF0OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmVzID0gUi5zdHJpbmcudHdlbHZlX2hvdXJfdGltZV9mb3JtYXQ7CisgICAgICAgIH0KKworICAgICAgICBmaW5hbCBjaGFyIE1BR0lDMSA9ICdcdUVGMDAnOworICAgICAgICBmaW5hbCBjaGFyIE1BR0lDMiA9ICdcdUVGMDEnOworCisgICAgICAgIFNpbXBsZURhdGVGb3JtYXQgc2RmOworICAgICAgICBTdHJpbmcgZm9ybWF0ID0gY29udGV4dC5nZXRTdHJpbmcocmVzKTsKKyAgICAgICAgaWYgKCFmb3JtYXQuZXF1YWxzKG1DbG9ja0Zvcm1hdFN0cmluZykpIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBTZWFyY2ggZm9yIGFuIHVucXVvdGVkICJhIiBpbiB0aGUgZm9ybWF0IHN0cmluZywgc28gd2UgY2FuCisgICAgICAgICAgICAgKiBhZGQgZHVtbXkgY2hhcmFjdGVycyBhcm91bmQgaXQgdG8gbGV0IHVzIGZpbmQgaXQgYWdhaW4gYWZ0ZXIKKyAgICAgICAgICAgICAqIGZvcm1hdHRpbmcgYW5kIGNoYW5nZSBpdHMgc2l6ZS4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKEFNX1BNX1NUWUxFICE9IEFNX1BNX1NUWUxFX05PUk1BTCkgeworICAgICAgICAgICAgICAgIGludCBhID0gLTE7CisgICAgICAgICAgICAgICAgYm9vbGVhbiBxdW90ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGZvcm1hdC5sZW5ndGgoKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGNoYXIgYyA9IGZvcm1hdC5jaGFyQXQoaSk7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ1wnJykgeworICAgICAgICAgICAgICAgICAgICAgICAgcXVvdGVkID0gIXF1b3RlZDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoIXF1b3RlZCAmJiBjID09ICdhJykgeworICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChhID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gTW92ZSBhIGJhY2sgc28gYW55IHdoaXRlc3BhY2UgYmVmb3JlIEFNL1BNIGlzIGFsc28gaW4gdGhlIGFsdGVybmF0ZSBzaXplLgorICAgICAgICAgICAgICAgICAgICBmaW5hbCBpbnQgYiA9IGE7CisgICAgICAgICAgICAgICAgICAgIHdoaWxlIChhID4gMCAmJiBDaGFyYWN0ZXIuaXNXaGl0ZXNwYWNlKGZvcm1hdC5jaGFyQXQoYS0xKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGEtLTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBmb3JtYXQgPSBmb3JtYXQuc3Vic3RyaW5nKDAsIGEpICsgTUFHSUMxICsgZm9ybWF0LnN1YnN0cmluZyhhLCBiKQorICAgICAgICAgICAgICAgICAgICAgICAgKyAiYSIgKyBNQUdJQzIgKyBmb3JtYXQuc3Vic3RyaW5nKGIgKyAxKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1DbG9ja0Zvcm1hdCA9IHNkZiA9IG5ldyBTaW1wbGVEYXRlRm9ybWF0KGZvcm1hdCk7CisgICAgICAgICAgICBtQ2xvY2tGb3JtYXRTdHJpbmcgPSBmb3JtYXQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzZGYgPSBtQ2xvY2tGb3JtYXQ7CisgICAgICAgIH0KKyAgICAgICAgU3RyaW5nIHJlc3VsdCA9IHNkZi5mb3JtYXQobUNhbGVuZGFyLmdldFRpbWUoKSk7CisKKyAgICAgICAgaWYgKEFNX1BNX1NUWUxFICE9IEFNX1BNX1NUWUxFX05PUk1BTCkgeworICAgICAgICAgICAgaW50IG1hZ2ljMSA9IHJlc3VsdC5pbmRleE9mKE1BR0lDMSk7CisgICAgICAgICAgICBpbnQgbWFnaWMyID0gcmVzdWx0LmluZGV4T2YoTUFHSUMyKTsKKyAgICAgICAgICAgIGlmIChtYWdpYzEgPj0gMCAmJiBtYWdpYzIgPiBtYWdpYzEpIHsKKyAgICAgICAgICAgICAgICBTcGFubmFibGVTdHJpbmdCdWlsZGVyIGZvcm1hdHRlZCA9IG5ldyBTcGFubmFibGVTdHJpbmdCdWlsZGVyKHJlc3VsdCk7CisgICAgICAgICAgICAgICAgaWYgKEFNX1BNX1NUWUxFID09IEFNX1BNX1NUWUxFX0dPTkUpIHsKKyAgICAgICAgICAgICAgICAgICAgZm9ybWF0dGVkLmRlbGV0ZShtYWdpYzEsIG1hZ2ljMisxKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAoQU1fUE1fU1RZTEUgPT0gQU1fUE1fU1RZTEVfU01BTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIENoYXJhY3RlclN0eWxlIHN0eWxlID0gbmV3IFJlbGF0aXZlU2l6ZVNwYW4oMC43Zik7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWQuc2V0U3BhbihzdHlsZSwgbWFnaWMxLCBtYWdpYzIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTcGFubmFibGUuU1BBTl9FWENMVVNJVkVfSU5DTFVTSVZFKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBmb3JtYXR0ZWQuZGVsZXRlKG1hZ2ljMiwgbWFnaWMyICsgMSk7CisgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZC5kZWxldGUobWFnaWMxLCBtYWdpYzEgKyAxKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIGZvcm1hdHRlZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorIAorICAgICAgICByZXR1cm4gcmVzdWx0OworCisgICAgfQorfQorCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL0Nsb3NlRHJhZ0hhbmRsZS5qYXZhIGIvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YXR1c2Jhci9DbG9zZURyYWdIYW5kbGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDVjYWY1MQotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvQ2xvc2VEcmFnSGFuZGxlLmphdmEKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuc3lzdGVtdWkuc3RhdHVzYmFyOworCitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CitpbXBvcnQgYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldDsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQ7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuTGluZWFyTGF5b3V0OworCisKK3B1YmxpYyBjbGFzcyBDbG9zZURyYWdIYW5kbGUgZXh0ZW5kcyBMaW5lYXJMYXlvdXQgeworICAgIFN0YXR1c0JhclNlcnZpY2UgbVNlcnZpY2U7CisKKyAgICBwdWJsaWMgQ2xvc2VEcmFnSGFuZGxlKENvbnRleHQgY29udGV4dCwgQXR0cmlidXRlU2V0IGF0dHJzKSB7CisgICAgICAgIHN1cGVyKGNvbnRleHQsIGF0dHJzKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBFbnN1cmUgdGhhdCwgaWYgdGhlcmUgaXMgbm8gdGFyZ2V0IHVuZGVyIHVzIHRvIHJlY2VpdmUgdGhlIHRvdWNoLAorICAgICAqIHRoYXQgd2UgcHJvY2VzcyBpdCBvdXJzZWxmLiAgVGhpcyBtYWtlcyBzdXJlIHRoYXQgb25JbnRlcmNlcHRUb3VjaEV2ZW50KCkKKyAgICAgKiBpcyBhbHdheXMgY2FsbGVkIGZvciB0aGUgZW50aXJlIGdlc3R1cmUuCisgICAgICovCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGJvb2xlYW4gb25Ub3VjaEV2ZW50KE1vdGlvbkV2ZW50IGV2ZW50KSB7CisgICAgICAgIGlmIChldmVudC5nZXRBY3Rpb24oKSAhPSBNb3Rpb25FdmVudC5BQ1RJT05fRE9XTikgeworICAgICAgICAgICAgbVNlcnZpY2UuaW50ZXJjZXB0VG91Y2hFdmVudChldmVudCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGJvb2xlYW4gb25JbnRlcmNlcHRUb3VjaEV2ZW50KE1vdGlvbkV2ZW50IGV2ZW50KSB7CisgICAgICAgIHJldHVybiBtU2VydmljZS5pbnRlcmNlcHRUb3VjaEV2ZW50KGV2ZW50KQorICAgICAgICAgICAgICAgID8gdHJ1ZSA6IHN1cGVyLm9uSW50ZXJjZXB0VG91Y2hFdmVudChldmVudCk7CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL0NvbW1hbmRRdWV1ZS5qYXZhIGIvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YXR1c2Jhci9Db21tYW5kUXVldWUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTM0N2IxCi0tLSAvZGV2L251bGwKKysrIGIvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YXR1c2Jhci9Db21tYW5kUXVldWUuamF2YQpAQCAtMCwwICsxLDIwMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuc3lzdGVtdWkuc3RhdHVzYmFyOworCitpbXBvcnQgYW5kcm9pZC5vcy5IYW5kbGVyOworaW1wb3J0IGFuZHJvaWQub3MuSUJpbmRlcjsKK2ltcG9ydCBhbmRyb2lkLm9zLk1lc3NhZ2U7CisKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5zdGF0dXNiYXIuSVN0YXR1c0JhcjsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5zdGF0dXNiYXIuU3RhdHVzQmFySWNvbjsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5zdGF0dXNiYXIuU3RhdHVzQmFySWNvbkxpc3Q7CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuc3RhdHVzYmFyLlN0YXR1c0Jhck5vdGlmaWNhdGlvbjsKKworLyoqCisgKiBUaGlzIGNsYXNzIHRha2VzIHRoZSBmdW5jdGlvbnMgZnJvbSBJU3RhdHVzQmFyIHRoYXQgY29tZSBpbiBvbgorICogYmluZGVyIHBvb2wgdGhyZWFkcyBhbmQgcG9zdHMgbWVzc2FnZXMgdG8gZ2V0IHRoZW0gb250byB0aGUgbWFpbgorICogdGhyZWFkLCBhbmQgY2FsbHMgb250byBDYWxsYmFja3MuICBJdCBhbHNvIHRha2VzIGNhcmUgb2YKKyAqIGNvYWxlc2NpbmcgdGhlc2UgY2FsbHMgc28gdGhleSBkb24ndCBzdGFjayB1cC4gIEZvciB0aGUgY2FsbHMKKyAqIGFyZSBjb2FsZXNjZWQsIG5vdGUgdGhhdCB0aGV5IGFyZSBhbGwgaWRlbXBvdGVudC4KKyAqLworY2xhc3MgQ29tbWFuZFF1ZXVlIGV4dGVuZHMgSVN0YXR1c0Jhci5TdHViIHsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gIlN0YXR1c0Jhci5Db21tYW5kUXVldWUiOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1TR19NQVNLID0gMHhmZmZmMDAwMDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgSU5ERVhfTUFTSyA9IDB4MDAwMGZmZmY7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTVNHX0lDT04gPSAweDAwMDEwMDAwOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBPUF9TRVRfSUNPTiA9IDE7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE9QX1JFTU9WRV9JQ09OID0gMjsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNU0dfQUREX05PVElGSUNBVElPTiA9IDB4MDAwMjAwMDA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1TR19VUERBVEVfTk9USUZJQ0FUSU9OID0gMHgwMDAzMDAwMDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTVNHX1JFTU9WRV9OT1RJRklDQVRJT04gPSAweDAwMDQwMDAwOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1TR19ESVNBQkxFID0gMHgwMDA1MDAwMDsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNU0dfU0VUX1ZJU0lCSUxJVFkgPSAweDAwMDYwMDAwOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBPUF9FWFBBTkQgPSAxOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBPUF9DT0xMQVBTRSA9IDI7CisKKyAgICBwcml2YXRlIFN0YXR1c0Jhckljb25MaXN0IG1MaXN0OworICAgIHByaXZhdGUgQ2FsbGJhY2tzIG1DYWxsYmFja3M7CisgICAgcHJpdmF0ZSBIYW5kbGVyIG1IYW5kbGVyID0gbmV3IEgoKTsKKworICAgIHByaXZhdGUgY2xhc3MgTm90aWZpY2F0aW9uUXVldWVFbnRyeSB7CisgICAgICAgIElCaW5kZXIga2V5OworICAgICAgICBTdGF0dXNCYXJOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCBiYWNrIG9uIHRoZSBtYWluIHRocmVhZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50ZXJmYWNlIENhbGxiYWNrcyB7CisgICAgICAgIHB1YmxpYyB2b2lkIGFkZEljb24oU3RyaW5nIHNsb3QsIGludCBpbmRleCwgaW50IHZpZXdJbmRleCwgU3RhdHVzQmFySWNvbiBpY29uKTsKKyAgICAgICAgcHVibGljIHZvaWQgdXBkYXRlSWNvbihTdHJpbmcgc2xvdCwgaW50IGluZGV4LCBpbnQgdmlld0luZGV4LAorICAgICAgICAgICAgICAgIFN0YXR1c0Jhckljb24gb2xkLCBTdGF0dXNCYXJJY29uIGljb24pOworICAgICAgICBwdWJsaWMgdm9pZCByZW1vdmVJY29uKFN0cmluZyBzbG90LCBpbnQgaW5kZXgsIGludCB2aWV3SW5kZXgpOworICAgICAgICBwdWJsaWMgdm9pZCBhZGROb3RpZmljYXRpb24oSUJpbmRlciBrZXksIFN0YXR1c0Jhck5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pOworICAgICAgICBwdWJsaWMgdm9pZCB1cGRhdGVOb3RpZmljYXRpb24oSUJpbmRlciBrZXksIFN0YXR1c0Jhck5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pOworICAgICAgICBwdWJsaWMgdm9pZCByZW1vdmVOb3RpZmljYXRpb24oSUJpbmRlciBrZXkpOworICAgICAgICBwdWJsaWMgdm9pZCBkaXNhYmxlKGludCBzdGF0ZSk7CisgICAgICAgIHB1YmxpYyB2b2lkIGFuaW1hdGVFeHBhbmQoKTsKKyAgICAgICAgcHVibGljIHZvaWQgYW5pbWF0ZUNvbGxhcHNlKCk7CisgICAgfQorCisgICAgcHVibGljIENvbW1hbmRRdWV1ZShDYWxsYmFja3MgY2FsbGJhY2tzLCBTdGF0dXNCYXJJY29uTGlzdCBsaXN0KSB7CisgICAgICAgIG1DYWxsYmFja3MgPSBjYWxsYmFja3M7CisgICAgICAgIG1MaXN0ID0gbGlzdDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRJY29uKGludCBpbmRleCwgU3RhdHVzQmFySWNvbiBpY29uKSB7CisgICAgICAgIHN5bmNocm9uaXplZCAobUxpc3QpIHsKKyAgICAgICAgICAgIGludCB3aGF0ID0gTVNHX0lDT04gfCBpbmRleDsKKyAgICAgICAgICAgIG1IYW5kbGVyLnJlbW92ZU1lc3NhZ2VzKHdoYXQpOworICAgICAgICAgICAgbUhhbmRsZXIub2J0YWluTWVzc2FnZSh3aGF0LCBPUF9TRVRfSUNPTiwgMCwgaWNvbi5jbG9uZSgpKS5zZW5kVG9UYXJnZXQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHJlbW92ZUljb24oaW50IGluZGV4KSB7CisgICAgICAgIHN5bmNocm9uaXplZCAobUxpc3QpIHsKKyAgICAgICAgICAgIGludCB3aGF0ID0gTVNHX0lDT04gfCBpbmRleDsKKyAgICAgICAgICAgIG1IYW5kbGVyLnJlbW92ZU1lc3NhZ2VzKHdoYXQpOworICAgICAgICAgICAgbUhhbmRsZXIub2J0YWluTWVzc2FnZSh3aGF0LCBPUF9SRU1PVkVfSUNPTiwgMCwgbnVsbCkuc2VuZFRvVGFyZ2V0KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBhZGROb3RpZmljYXRpb24oSUJpbmRlciBrZXksIFN0YXR1c0Jhck5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pIHsKKyAgICAgICAgc3luY2hyb25pemVkIChtTGlzdCkgeworICAgICAgICAgICAgTm90aWZpY2F0aW9uUXVldWVFbnRyeSBuZSA9IG5ldyBOb3RpZmljYXRpb25RdWV1ZUVudHJ5KCk7CisgICAgICAgICAgICBuZS5rZXkgPSBrZXk7CisgICAgICAgICAgICBuZS5ub3RpZmljYXRpb24gPSBub3RpZmljYXRpb247CisgICAgICAgICAgICBtSGFuZGxlci5vYnRhaW5NZXNzYWdlKE1TR19BRERfTk9USUZJQ0FUSU9OLCAwLCAwLCBuZSkuc2VuZFRvVGFyZ2V0KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB1cGRhdGVOb3RpZmljYXRpb24oSUJpbmRlciBrZXksIFN0YXR1c0Jhck5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pIHsKKyAgICAgICAgc3luY2hyb25pemVkIChtTGlzdCkgeworICAgICAgICAgICAgTm90aWZpY2F0aW9uUXVldWVFbnRyeSBuZSA9IG5ldyBOb3RpZmljYXRpb25RdWV1ZUVudHJ5KCk7CisgICAgICAgICAgICBuZS5rZXkgPSBrZXk7CisgICAgICAgICAgICBuZS5ub3RpZmljYXRpb24gPSBub3RpZmljYXRpb247CisgICAgICAgICAgICBtSGFuZGxlci5vYnRhaW5NZXNzYWdlKE1TR19VUERBVEVfTk9USUZJQ0FUSU9OLCAwLCAwLCBuZSkuc2VuZFRvVGFyZ2V0KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCByZW1vdmVOb3RpZmljYXRpb24oSUJpbmRlciBrZXkpIHsKKyAgICAgICAgc3luY2hyb25pemVkIChtTGlzdCkgeworICAgICAgICAgICAgbUhhbmRsZXIub2J0YWluTWVzc2FnZShNU0dfUkVNT1ZFX05PVElGSUNBVElPTiwgMCwgMCwga2V5KS5zZW5kVG9UYXJnZXQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGRpc2FibGUoaW50IHN0YXRlKSB7CisgICAgICAgIHN5bmNocm9uaXplZCAobUxpc3QpIHsKKyAgICAgICAgICAgIG1IYW5kbGVyLnJlbW92ZU1lc3NhZ2VzKE1TR19ESVNBQkxFKTsKKyAgICAgICAgICAgIG1IYW5kbGVyLm9idGFpbk1lc3NhZ2UoTVNHX0RJU0FCTEUsIHN0YXRlLCAwLCBudWxsKS5zZW5kVG9UYXJnZXQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGFuaW1hdGVFeHBhbmQoKSB7CisgICAgICAgIHN5bmNocm9uaXplZCAobUxpc3QpIHsKKyAgICAgICAgICAgIG1IYW5kbGVyLnJlbW92ZU1lc3NhZ2VzKE1TR19TRVRfVklTSUJJTElUWSk7CisgICAgICAgICAgICBtSGFuZGxlci5vYnRhaW5NZXNzYWdlKE1TR19TRVRfVklTSUJJTElUWSwgT1BfRVhQQU5ELCAwLCBudWxsKS5zZW5kVG9UYXJnZXQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGFuaW1hdGVDb2xsYXBzZSgpIHsKKyAgICAgICAgc3luY2hyb25pemVkIChtTGlzdCkgeworICAgICAgICAgICAgbUhhbmRsZXIucmVtb3ZlTWVzc2FnZXMoTVNHX1NFVF9WSVNJQklMSVRZKTsKKyAgICAgICAgICAgIG1IYW5kbGVyLm9idGFpbk1lc3NhZ2UoTVNHX1NFVF9WSVNJQklMSVRZLCBPUF9DT0xMQVBTRSwgMCwgbnVsbCkuc2VuZFRvVGFyZ2V0KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIGZpbmFsIGNsYXNzIEggZXh0ZW5kcyBIYW5kbGVyIHsKKyAgICAgICAgcHVibGljIHZvaWQgaGFuZGxlTWVzc2FnZShNZXNzYWdlIG1zZykgeworICAgICAgICAgICAgZmluYWwgaW50IHdoYXQgPSBtc2cud2hhdCAmIE1TR19NQVNLOworICAgICAgICAgICAgc3dpdGNoICh3aGF0KSB7CisgICAgICAgICAgICAgICAgY2FzZSBNU0dfSUNPTjogeworICAgICAgICAgICAgICAgICAgICBmaW5hbCBpbnQgaW5kZXggPSBtc2cud2hhdCAmIElOREVYX01BU0s7CisgICAgICAgICAgICAgICAgICAgIGZpbmFsIGludCB2aWV3SW5kZXggPSBtTGlzdC5nZXRWaWV3SW5kZXgoaW5kZXgpOworICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKG1zZy5hcmcxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIE9QX1NFVF9JQ09OOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzQmFySWNvbiBpY29uID0gKFN0YXR1c0Jhckljb24pbXNnLm9iajsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdGF0dXNCYXJJY29uIG9sZCA9IG1MaXN0LmdldEljb24oaW5kZXgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvbGQgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtTGlzdC5zZXRJY29uKGluZGV4LCBpY29uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUNhbGxiYWNrcy5hZGRJY29uKG1MaXN0LmdldFNsb3QoaW5kZXgpLCBpbmRleCwgdmlld0luZGV4LCBpY29uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtTGlzdC5zZXRJY29uKGluZGV4LCBpY29uKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUNhbGxiYWNrcy51cGRhdGVJY29uKG1MaXN0LmdldFNsb3QoaW5kZXgpLCBpbmRleCwgdmlld0luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9sZCwgaWNvbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBPUF9SRU1PVkVfSUNPTjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtTGlzdC5yZW1vdmVJY29uKGluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQ2FsbGJhY2tzLnJlbW92ZUljb24obUxpc3QuZ2V0U2xvdChpbmRleCksIGluZGV4LCB2aWV3SW5kZXgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIE1TR19BRERfTk9USUZJQ0FUSU9OOiB7CisgICAgICAgICAgICAgICAgICAgIGZpbmFsIE5vdGlmaWNhdGlvblF1ZXVlRW50cnkgbmUgPSAoTm90aWZpY2F0aW9uUXVldWVFbnRyeSltc2cub2JqOworICAgICAgICAgICAgICAgICAgICBtQ2FsbGJhY2tzLmFkZE5vdGlmaWNhdGlvbihuZS5rZXksIG5lLm5vdGlmaWNhdGlvbik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIE1TR19VUERBVEVfTk9USUZJQ0FUSU9OOiB7CisgICAgICAgICAgICAgICAgICAgIGZpbmFsIE5vdGlmaWNhdGlvblF1ZXVlRW50cnkgbmUgPSAoTm90aWZpY2F0aW9uUXVldWVFbnRyeSltc2cub2JqOworICAgICAgICAgICAgICAgICAgICBtQ2FsbGJhY2tzLnVwZGF0ZU5vdGlmaWNhdGlvbihuZS5rZXksIG5lLm5vdGlmaWNhdGlvbik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIE1TR19SRU1PVkVfTk9USUZJQ0FUSU9OOiB7CisgICAgICAgICAgICAgICAgICAgIG1DYWxsYmFja3MucmVtb3ZlTm90aWZpY2F0aW9uKChJQmluZGVyKW1zZy5vYmopOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBNU0dfRElTQUJMRToKKyAgICAgICAgICAgICAgICAgICAgbUNhbGxiYWNrcy5kaXNhYmxlKG1zZy5hcmcxKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBNU0dfU0VUX1ZJU0lCSUxJVFk6CisgICAgICAgICAgICAgICAgICAgIGlmIChtc2cuYXJnMSA9PSBPUF9FWFBBTkQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1DYWxsYmFja3MuYW5pbWF0ZUV4cGFuZCgpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgbUNhbGxiYWNrcy5hbmltYXRlQ29sbGFwc2UoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL0RhdGVWaWV3LmphdmEgYi9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL0RhdGVWaWV3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTZkM2E3ZQotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvRGF0ZVZpZXcuamF2YQpAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5zeXN0ZW11aS5zdGF0dXNiYXI7CisKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQnJvYWRjYXN0UmVjZWl2ZXI7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50RmlsdGVyOworaW1wb3J0IGFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQ7CitpbXBvcnQgYW5kcm9pZC51dGlsLlNsb2c7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuVGV4dFZpZXc7CitpbXBvcnQgYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50OworCitpbXBvcnQgamF2YS50ZXh0LkRhdGVGb3JtYXQ7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CisKK3B1YmxpYyBmaW5hbCBjbGFzcyBEYXRlVmlldyBleHRlbmRzIFRleHRWaWV3IHsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gIkRhdGVWaWV3IjsKKworICAgIHByaXZhdGUgYm9vbGVhbiBtVXBkYXRpbmcgPSBmYWxzZTsKKworICAgIHByaXZhdGUgQnJvYWRjYXN0UmVjZWl2ZXIgbUludGVudFJlY2VpdmVyID0gbmV3IEJyb2FkY2FzdFJlY2VpdmVyKCkgeworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHZvaWQgb25SZWNlaXZlKENvbnRleHQgY29udGV4dCwgSW50ZW50IGludGVudCkgeworICAgICAgICAgICAgU3RyaW5nIGFjdGlvbiA9IGludGVudC5nZXRBY3Rpb24oKTsKKyAgICAgICAgICAgIGlmIChhY3Rpb24uZXF1YWxzKEludGVudC5BQ1RJT05fVElNRV9USUNLKQorICAgICAgICAgICAgICAgICAgICB8fCBhY3Rpb24uZXF1YWxzKEludGVudC5BQ1RJT05fVElNRVpPTkVfQ0hBTkdFRCkpIHsKKyAgICAgICAgICAgICAgICB1cGRhdGVDbG9jaygpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfTsKKworICAgIHB1YmxpYyBEYXRlVmlldyhDb250ZXh0IGNvbnRleHQsIEF0dHJpYnV0ZVNldCBhdHRycykgeworICAgICAgICBzdXBlcihjb250ZXh0LCBhdHRycyk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgb25BdHRhY2hlZFRvV2luZG93KCkgeworICAgICAgICBzdXBlci5vbkF0dGFjaGVkVG9XaW5kb3coKTsKKyAgICB9CisgICAgCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgb25EZXRhY2hlZEZyb21XaW5kb3coKSB7CisgICAgICAgIHN1cGVyLm9uRGV0YWNoZWRGcm9tV2luZG93KCk7CisgICAgICAgIHNldFVwZGF0ZXMoZmFsc2UpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCBpbnQgZ2V0U3VnZ2VzdGVkTWluaW11bVdpZHRoKCkgeworICAgICAgICAvLyBtYWtlcyB0aGUgbGFyZ2UgYmFja2dyb3VuZCBiaXRtYXAgbm90IGZvcmNlIHVzIHRvIGZ1bGwgd2lkdGgKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgcHJpdmF0ZSBmaW5hbCB2b2lkIHVwZGF0ZUNsb2NrKCkgeworICAgICAgICBEYXRlIG5vdyA9IG5ldyBEYXRlKCk7CisgICAgICAgIHNldFRleHQoRGF0ZUZvcm1hdC5nZXREYXRlSW5zdGFuY2UoRGF0ZUZvcm1hdC5MT05HKS5mb3JtYXQobm93KSk7CisgICAgfQorCisgICAgdm9pZCBzZXRVcGRhdGVzKGJvb2xlYW4gdXBkYXRlKSB7CisgICAgICAgIGlmICh1cGRhdGUgIT0gbVVwZGF0aW5nKSB7CisgICAgICAgICAgICBtVXBkYXRpbmcgPSB1cGRhdGU7CisgICAgICAgICAgICBpZiAodXBkYXRlKSB7CisgICAgICAgICAgICAgICAgLy8gUmVnaXN0ZXIgZm9yIEludGVudCBicm9hZGNhc3RzIGZvciB0aGUgY2xvY2sgYW5kIGJhdHRlcnkKKyAgICAgICAgICAgICAgICBJbnRlbnRGaWx0ZXIgZmlsdGVyID0gbmV3IEludGVudEZpbHRlcigpOworICAgICAgICAgICAgICAgIGZpbHRlci5hZGRBY3Rpb24oSW50ZW50LkFDVElPTl9USU1FX1RJQ0spOworICAgICAgICAgICAgICAgIGZpbHRlci5hZGRBY3Rpb24oSW50ZW50LkFDVElPTl9USU1FWk9ORV9DSEFOR0VEKTsKKyAgICAgICAgICAgICAgICBtQ29udGV4dC5yZWdpc3RlclJlY2VpdmVyKG1JbnRlbnRSZWNlaXZlciwgZmlsdGVyLCBudWxsLCBudWxsKTsKKyAgICAgICAgICAgICAgICB1cGRhdGVDbG9jaygpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtQ29udGV4dC51bnJlZ2lzdGVyUmVjZWl2ZXIobUludGVudFJlY2VpdmVyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YXR1c2Jhci9FeHBhbmRlZFZpZXcuamF2YSBiL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvRXhwYW5kZWRWaWV3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Q4NWYyNwotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvRXhwYW5kZWRWaWV3LmphdmEKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuc3lzdGVtdWkuc3RhdHVzYmFyOworCitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CitpbXBvcnQgYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldDsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuRGlzcGxheTsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuS2V5RXZlbnQ7CitpbXBvcnQgYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50OworaW1wb3J0IGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkxpbmVhckxheW91dDsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuU2xvZzsKKworCitwdWJsaWMgY2xhc3MgRXhwYW5kZWRWaWV3IGV4dGVuZHMgTGluZWFyTGF5b3V0IHsKKyAgICBTdGF0dXNCYXJTZXJ2aWNlIG1TZXJ2aWNlOworICAgIGludCBtUHJldkhlaWdodCA9IC0xOworCisgICAgcHVibGljIEV4cGFuZGVkVmlldyhDb250ZXh0IGNvbnRleHQsIEF0dHJpYnV0ZVNldCBhdHRycykgeworICAgICAgICBzdXBlcihjb250ZXh0LCBhdHRycyk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgb25GaW5pc2hJbmZsYXRlKCkgeworICAgICAgICBzdXBlci5vbkZpbmlzaEluZmxhdGUoKTsKKyAgICB9CisKKyAgICAvKiogV2Ugd2FudCB0byBzaHJpbmsgZG93biB0byAwLCBhbmQgaWdub3JlIHRoZSBiYWNrZ3JvdW5kLiAqLworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBpbnQgZ2V0U3VnZ2VzdGVkTWluaW11bUhlaWdodCgpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgIHByb3RlY3RlZCB2b2lkIG9uTGF5b3V0KGJvb2xlYW4gY2hhbmdlZCwgaW50IGxlZnQsIGludCB0b3AsIGludCByaWdodCwgaW50IGJvdHRvbSkgeworICAgICAgICAgc3VwZXIub25MYXlvdXQoY2hhbmdlZCwgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tKTsKKyAgICAgICAgIGludCBoZWlnaHQgPSBib3R0b20gLSB0b3A7CisgICAgICAgICBpZiAoaGVpZ2h0ICE9IG1QcmV2SGVpZ2h0KSB7CisgICAgICAgICAgICAgLy9TbG9nLmQoU3RhdHVzQmFyU2VydmljZS5UQUcsICJoZWlnaHQgY2hhbmdlZCBvbGQ9IiArIG1QcmV2SGVpZ2h0CisgICAgICAgICAgICAgLy8gICAgICsgIiBuZXc9IiArIGhlaWdodCk7CisgICAgICAgICAgICAgbVByZXZIZWlnaHQgPSBoZWlnaHQ7CisgICAgICAgICAgICAgbVNlcnZpY2UudXBkYXRlRXhwYW5kZWRWaWV3UG9zKFN0YXR1c0JhclNlcnZpY2UuRVhQQU5ERURfTEVBVkVfQUxPTkUpOworICAgICAgICAgfQorICAgICB9Cit9CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL0ZpeGVkU2l6ZURyYXdhYmxlLmphdmEgYi9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL0ZpeGVkU2l6ZURyYXdhYmxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWIyMmI2MQotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvRml4ZWRTaXplRHJhd2FibGUuamF2YQpAQCAtMCwwICsxLDY2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5zeXN0ZW11aS5zdGF0dXNiYXI7CisKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlOworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzOworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuQ29sb3JGaWx0ZXI7CitpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5SZWN0OworaW1wb3J0IGFuZHJvaWQudXRpbC5TbG9nOworCitjbGFzcyBGaXhlZFNpemVEcmF3YWJsZSBleHRlbmRzIERyYXdhYmxlIHsKKyAgICBEcmF3YWJsZSBtRHJhd2FibGU7CisgICAgaW50IG1MZWZ0OworICAgIGludCBtVG9wOworICAgIGludCBtUmlnaHQ7CisgICAgaW50IG1Cb3R0b207CisKKyAgICBGaXhlZFNpemVEcmF3YWJsZShEcmF3YWJsZSB0aGF0KSB7CisgICAgICAgIG1EcmF3YWJsZSA9IHRoYXQ7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0Rml4ZWRCb3VuZHMoaW50IGwsIGludCB0LCBpbnQgciwgaW50IGIpIHsKKyAgICAgICAgbUxlZnQgPSBsOworICAgICAgICBtVG9wID0gdDsKKyAgICAgICAgbVJpZ2h0ID0gcjsKKyAgICAgICAgbUJvdHRvbSA9IGI7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0Qm91bmRzKFJlY3QgYm91bmRzKSB7CisgICAgICAgIG1EcmF3YWJsZS5zZXRCb3VuZHMobUxlZnQsIG1Ub3AsIG1SaWdodCwgbUJvdHRvbSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0Qm91bmRzKGludCBsLCBpbnQgdCwgaW50IHIsIGludCBiKSB7CisgICAgICAgIG1EcmF3YWJsZS5zZXRCb3VuZHMobUxlZnQsIG1Ub3AsIG1SaWdodCwgbUJvdHRvbSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgZHJhdyhDYW52YXMgY2FudmFzKSB7CisgICAgICAgIG1EcmF3YWJsZS5kcmF3KGNhbnZhcyk7CisgICAgfQorCisgICAgcHVibGljIGludCBnZXRPcGFjaXR5KCkgeworICAgICAgICByZXR1cm4gbURyYXdhYmxlLmdldE9wYWNpdHkoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRBbHBoYShpbnQgYWxwaGEpIHsKKyAgICAgICAgbURyYXdhYmxlLnNldEFscGhhKGFscGhhKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRDb2xvckZpbHRlcihDb2xvckZpbHRlciBjZikgeworICAgICAgICBtRHJhd2FibGUuc2V0Q29sb3JGaWx0ZXIoY2YpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvSWNvbk1lcmdlci5qYXZhIGIvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YXR1c2Jhci9JY29uTWVyZ2VyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDI3YmVkNGEKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL0ljb25NZXJnZXIuamF2YQpAQCAtMCwwICsxLDE1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuc3lzdGVtdWkuc3RhdHVzYmFyOworCitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CitpbXBvcnQgYW5kcm9pZC5vcy5IYW5kbGVyOworaW1wb3J0IGFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQ7CitpbXBvcnQgYW5kcm9pZC51dGlsLlNsb2c7CitpbXBvcnQgYW5kcm9pZC52aWV3LlZpZXc7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuTGluZWFyTGF5b3V0OworCitpbXBvcnQgY29tLmFuZHJvaWQuc3lzdGVtdWkuUjsKKworCitwdWJsaWMgY2xhc3MgSWNvbk1lcmdlciBleHRlbmRzIExpbmVhckxheW91dCB7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9ICJJY29uTWVyZ2VyIjsKKworICAgIHByaXZhdGUgU3RhdHVzQmFySWNvblZpZXcgbU1vcmVWaWV3OworCisgICAgcHVibGljIEljb25NZXJnZXIoQ29udGV4dCBjb250ZXh0LCBBdHRyaWJ1dGVTZXQgYXR0cnMpIHsKKyAgICAgICAgc3VwZXIoY29udGV4dCwgYXR0cnMpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGFkZE1vcmVWaWV3KFN0YXR1c0Jhckljb25WaWV3IHYsIExpbmVhckxheW91dC5MYXlvdXRQYXJhbXMgbHApIHsKKyAgICAgICAgc3VwZXIuYWRkVmlldyh2LCBscCk7CisgICAgICAgIG1Nb3JlVmlldyA9IHY7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgYWRkVmlldyhTdGF0dXNCYXJJY29uVmlldyB2LCBpbnQgaW5kZXgsIExpbmVhckxheW91dC5MYXlvdXRQYXJhbXMgbHApIHsKKyAgICAgICAgaWYgKGluZGV4ID09IDApIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJBdHRlbXB0IHRvIHB1dCB2aWV3IGJlZm9yZSB0aGUgbW9yZSB2aWV3OiAiICsgdik7CisgICAgICAgIH0KKyAgICAgICAgc3VwZXIuYWRkVmlldyh2LCBpbmRleCwgbHApOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIG9uTGF5b3V0KGJvb2xlYW4gY2hhbmdlZCwgaW50IGwsIGludCB0LCBpbnQgciwgaW50IGIpIHsKKyAgICAgICAgc3VwZXIub25MYXlvdXQoY2hhbmdlZCwgbCwgdCwgciwgYik7CisKKyAgICAgICAgZmluYWwgaW50IG1heFdpZHRoID0gciAtIGw7CisgICAgICAgIGZpbmFsIGludCBOID0gZ2V0Q2hpbGRDb3VudCgpOworICAgICAgICBpbnQgaTsKKworICAgICAgICAvLyBnZXQgdGhlIHJpZ2h0bW9zdCBvbmUsIGFuZCBzZWUgaWYgd2UgZXZlbiBuZWVkIHRvIGRvIGFueXRoaW5nCisgICAgICAgIGludCBmaXRSaWdodCA9IC0xOworICAgICAgICBmb3IgKGk9Ti0xOyBpPj0wOyBpLS0pIHsKKyAgICAgICAgICAgIGZpbmFsIFZpZXcgY2hpbGQgPSBnZXRDaGlsZEF0KGkpOworICAgICAgICAgICAgaWYgKGNoaWxkLmdldFZpc2liaWxpdHkoKSAhPSBHT05FKSB7CisgICAgICAgICAgICAgICAgZml0UmlnaHQgPSBjaGlsZC5nZXRSaWdodCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gZmluZCB0aGUgZmlyc3QgdmlzaWJsZSBvbmUgdGhhdCBpc24ndCB0aGUgbW9yZSBpY29uCisgICAgICAgIGZpbmFsIFN0YXR1c0Jhckljb25WaWV3IG1vcmVWaWV3ID0gbU1vcmVWaWV3OworICAgICAgICBpbnQgZml0TGVmdCA9IC0xOworICAgICAgICBpbnQgc3RhcnRJbmRleCA9IC0xOworICAgICAgICBmb3IgKGk9MDsgaTxOOyBpKyspIHsKKyAgICAgICAgICAgIGZpbmFsIFZpZXcgY2hpbGQgPSBnZXRDaGlsZEF0KGkpOworICAgICAgICAgICAgaWYgKGNoaWxkID09IG1vcmVWaWV3KSB7CisgICAgICAgICAgICAgICAgc3RhcnRJbmRleCA9IGkrMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGNoaWxkLmdldFZpc2liaWxpdHkoKSAhPSBHT05FKSB7CisgICAgICAgICAgICAgICAgZml0TGVmdCA9IGNoaWxkLmdldExlZnQoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChtb3JlVmlldyA9PSBudWxsIHx8IHN0YXJ0SW5kZXggPCAwKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIlN0YXR1cyBCYXIgLyBJY29uTWVyZ2VyIG1vcmVWaWV3ID09ICIgKyBtb3JlVmlldworICAgICAgICAgICAgICAgICAgICArICIgc3RhcnRJbmRleD0iICsgc3RhcnRJbmRleCk7CisgICAgICAgICAgICAqLworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBpZiBpdCBmaXRzIHdpdGhvdXQgdGhlIG1vcmUgaWNvbiwgdGhlbiBoaWRlIHRoZSBtb3JlIGljb24gYW5kIHVwZGF0ZSBmaXRMZWZ0CisgICAgICAgIC8vIHNvIGV2ZXJ5dGhpbmcgZ2V0cyBwdXNoZWQgbGVmdAorICAgICAgICBpbnQgYWRqdXN0ID0gMDsKKyAgICAgICAgaWYgKGZpdFJpZ2h0IC0gZml0TGVmdCA8PSBtYXhXaWR0aCkgeworICAgICAgICAgICAgYWRqdXN0ID0gZml0TGVmdCAtIG1vcmVWaWV3LmdldExlZnQoKTsKKyAgICAgICAgICAgIGZpdExlZnQgLT0gYWRqdXN0OworICAgICAgICAgICAgZml0UmlnaHQgLT0gYWRqdXN0OworICAgICAgICAgICAgbW9yZVZpZXcubGF5b3V0KDAsIG1vcmVWaWV3LmdldFRvcCgpLCAwLCBtb3JlVmlldy5nZXRCb3R0b20oKSk7CisgICAgICAgIH0KKyAgICAgICAgaW50IGV4dHJhID0gZml0UmlnaHQgLSByOworICAgICAgICBpbnQgc2hpZnQgPSAtMTsKKworICAgICAgICBpbnQgYnJlYWtpbmdQb2ludCA9IGZpdExlZnQgKyBleHRyYSArIGFkanVzdDsKKyAgICAgICAgaW50IG51bWJlciA9IDA7CisgICAgICAgIGZvciAoaT1zdGFydEluZGV4OyBpPE47IGkrKykgeworICAgICAgICAgICAgZmluYWwgU3RhdHVzQmFySWNvblZpZXcgY2hpbGQgPSAoU3RhdHVzQmFySWNvblZpZXcpZ2V0Q2hpbGRBdChpKTsKKyAgICAgICAgICAgIGlmIChjaGlsZC5nZXRWaXNpYmlsaXR5KCkgIT0gR09ORSkgeworICAgICAgICAgICAgICAgIGludCBjaGlsZExlZnQgPSBjaGlsZC5nZXRMZWZ0KCk7CisgICAgICAgICAgICAgICAgaW50IGNoaWxkUmlnaHQgPSBjaGlsZC5nZXRSaWdodCgpOworICAgICAgICAgICAgICAgIGlmIChjaGlsZExlZnQgPCBicmVha2luZ1BvaW50KSB7CisgICAgICAgICAgICAgICAgICAgIC8vIGhpZGUgdGhpcyBvbmUKKyAgICAgICAgICAgICAgICAgICAgY2hpbGQubGF5b3V0KDAsIGNoaWxkLmdldFRvcCgpLCAwLCBjaGlsZC5nZXRCb3R0b20oKSk7CisgICAgICAgICAgICAgICAgICAgIGludCBuID0gY2hpbGQuZ2V0U3RhdHVzQmFySWNvbigpLm51bWJlcjsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG4gPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyICs9IDE7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobiA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG51bWJlciArPSBuOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gZGVjaWRlIGhvdyBtdWNoIHRvIHNoaWZ0IGJ5CisgICAgICAgICAgICAgICAgICAgIGlmIChzaGlmdCA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNoaWZ0ID0gY2hpbGRMZWZ0IC0gZml0TGVmdDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAvLyBzaGlmdCB0aGlzIGxlZnQgYnkgc2hpZnQKKyAgICAgICAgICAgICAgICAgICAgY2hpbGQubGF5b3V0KGNoaWxkTGVmdC1zaGlmdCwgY2hpbGQuZ2V0VG9wKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZFJpZ2h0LXNoaWZ0LCBjaGlsZC5nZXRCb3R0b20oKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBCVUc6IFVwZGF0aW5nIHRoZSB0ZXh0IGR1cmluZyB0aGUgbGF5b3V0IGhlcmUgZG9lc24ndCBzZWVtIHRvIGNhdXNlCisgICAgICAgIC8vIHRoZSB2aWV3IHRvIGJlIHJlZHJhd24gZnVsbHkuICBUaGUgdGV4dCB2aWV3IGdldHMgcmVzaXplZCBjb3JyZWN0bHksIGJ1dCB0aGUKKyAgICAgICAgLy8gdGV4dCBjb250ZW50cyBhcmVuJ3QgZHJhd24gcHJvcGVybHkuICBUbyB3b3JrIGFyb3VuZCB0aGlzLCB3ZSBwb3N0IGEgbWVzc2FnZQorICAgICAgICAvLyBhbmQgcHJvdmlkZSB0aGUgdmFsdWUgbGF0ZXIuICBXZSdyZSB0aGUgb25seSBvbmUgY2hhbmdpbmcgdGhpcyB2YWx1ZSBzaG93IGl0CisgICAgICAgIC8vIHNob3VsZCBiZSBvcmRlcmVkIGNvcnJlY3RseS4KKyAgICAgICAgaWYgKGZhbHNlKSB7CisgICAgICAgICAgICAvLyBUT0RPIHRoaXMubW9yZUljb24udXBkYXRlKG51bWJlcik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtQnVnV29ya2Fyb3VuZE51bWJlciA9IG51bWJlcjsKKyAgICAgICAgICAgIG1CdWdXb3JrYXJvdW5kSGFuZGxlci5wb3N0KG1CdWdXb3JrYXJvdW5kUnVubmFibGUpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBpbnQgbUJ1Z1dvcmthcm91bmROdW1iZXI7CisgICAgcHJpdmF0ZSBIYW5kbGVyIG1CdWdXb3JrYXJvdW5kSGFuZGxlciA9IG5ldyBIYW5kbGVyKCk7CisgICAgcHJpdmF0ZSBSdW5uYWJsZSBtQnVnV29ya2Fyb3VuZFJ1bm5hYmxlID0gbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAvKiBUT0RPCisgICAgICAgICAgICBJY29uTWVyZ2VyLnRoaXMubW9yZUljb24udXBkYXRlKG1CdWdXb3JrYXJvdW5kTnVtYmVyKTsKKyAgICAgICAgICAgIEljb25NZXJnZXIudGhpcy5tb3JlSWNvbi52aWV3LmludmFsaWRhdGUoKTsKKyAgICAgICAgICAgICovCisgICAgICAgIH0KKyAgICB9OworfQpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YXR1c2Jhci9MYXRlc3RJdGVtVmlldy5qYXZhIGIvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YXR1c2Jhci9MYXRlc3RJdGVtVmlldy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlODk2MjQKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL0xhdGVzdEl0ZW1WaWV3LmphdmEKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuc3lzdGVtdWkuc3RhdHVzYmFyOworCitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CitpbXBvcnQgYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldDsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuU2xvZzsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQ7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuRnJhbWVMYXlvdXQ7CisKK3B1YmxpYyBjbGFzcyBMYXRlc3RJdGVtVmlldyBleHRlbmRzIEZyYW1lTGF5b3V0IHsKKworICAgIHB1YmxpYyBMYXRlc3RJdGVtVmlldyhDb250ZXh0IGNvbnRleHQsIEF0dHJpYnV0ZVNldCBhdHRycykgeworICAgICAgICBzdXBlcihjb250ZXh0LCBhdHRycyk7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gZGlzcGF0Y2hUb3VjaEV2ZW50KE1vdGlvbkV2ZW50IGV2KSB7CisgICAgICAgIHJldHVybiBvblRvdWNoRXZlbnQoZXYpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvTm90aWZpY2F0aW9uRGF0YS5qYXZhIGIvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YXR1c2Jhci9Ob3RpZmljYXRpb25EYXRhLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2E4MjI2NwotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvTm90aWZpY2F0aW9uRGF0YS5qYXZhCkBAIC0wLDAgKzEsMTI2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5zeXN0ZW11aS5zdGF0dXNiYXI7CisKK2ltcG9ydCBhbmRyb2lkLmFwcC5Ob3RpZmljYXRpb247CitpbXBvcnQgYW5kcm9pZC5vcy5JQmluZGVyOworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OworCitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuc3RhdHVzYmFyLlN0YXR1c0Jhck5vdGlmaWNhdGlvbjsKKworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CisKKy8qKgorICogVGhlIGxpc3Qgb2YgY3VycmVudGx5IGRpc3BsYXlpbmcgbm90aWZpY2F0aW9ucy4KKyAqLworcHVibGljIGNsYXNzIE5vdGlmaWNhdGlvbkRhdGEgeworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgY2xhc3MgRW50cnkgeworICAgICAgICBwdWJsaWMgSUJpbmRlciBrZXk7CisgICAgICAgIHB1YmxpYyBTdGF0dXNCYXJOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uOworICAgICAgICBwdWJsaWMgU3RhdHVzQmFySWNvblZpZXcgaWNvbjsKKyAgICAgICAgcHVibGljIFZpZXcgcm93OyAvLyB0aGUgb3V0ZXIgZXhwYW5kZWQgdmlldworICAgICAgICBwdWJsaWMgVmlldyBjb250ZW50OyAvLyB0YWtlcyB0aGUgY2xpY2sgZXZlbnRzIGFuZCBzZW5kcyB0aGUgUGVuZGluZ0ludGVudAorICAgICAgICBwdWJsaWMgVmlldyBleHBhbmRlZDsgLy8gdGhlIGluZmxhdGVkIFJlbW90ZVZpZXdzCisgICAgfQorICAgIHByaXZhdGUgZmluYWwgQXJyYXlMaXN0PEVudHJ5PiBtRW50cmllcyA9IG5ldyBBcnJheUxpc3Q8RW50cnk+KCk7CisKKyAgICBwdWJsaWMgaW50IHNpemUoKSB7CisgICAgICAgIHJldHVybiBtRW50cmllcy5zaXplKCk7CisgICAgfQorCisgICAgcHVibGljIEVudHJ5IGdldEVudHJ5QXQoaW50IGluZGV4KSB7CisgICAgICAgIHJldHVybiBtRW50cmllcy5nZXQoaW5kZXgpOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgZmluZEVudHJ5KElCaW5kZXIga2V5KSB7CisgICAgICAgIGZpbmFsIGludCBOID0gbUVudHJpZXMuc2l6ZSgpOworICAgICAgICBmb3IgKGludCBpPTA7IGk8TjsgaSsrKSB7CisgICAgICAgICAgICBFbnRyeSBlbnRyeSA9IG1FbnRyaWVzLmdldChpKTsKKyAgICAgICAgICAgIGlmIChlbnRyeS5rZXkgPT0ga2V5KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgYWRkKElCaW5kZXIga2V5LCBTdGF0dXNCYXJOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uLCBWaWV3IHJvdywgVmlldyBjb250ZW50LAorICAgICAgICAgICAgVmlldyBleHBhbmRlZCwgU3RhdHVzQmFySWNvblZpZXcgaWNvbikgeworICAgICAgICBFbnRyeSBlbnRyeSA9IG5ldyBFbnRyeSgpOworICAgICAgICBlbnRyeS5rZXkgPSBrZXk7CisgICAgICAgIGVudHJ5Lm5vdGlmaWNhdGlvbiA9IG5vdGlmaWNhdGlvbjsKKyAgICAgICAgZW50cnkucm93ID0gcm93OworICAgICAgICBlbnRyeS5jb250ZW50ID0gY29udGVudDsKKyAgICAgICAgZW50cnkuZXhwYW5kZWQgPSBleHBhbmRlZDsKKyAgICAgICAgZW50cnkuaWNvbiA9IGljb247CisgICAgICAgIGZpbmFsIGludCBpbmRleCA9IGNob29zZUluZGV4KG5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb24ud2hlbik7CisgICAgICAgIG1FbnRyaWVzLmFkZChpbmRleCwgZW50cnkpOworICAgICAgICByZXR1cm4gaW5kZXg7CisgICAgfQorCisgICAgcHVibGljIEVudHJ5IHJlbW92ZShJQmluZGVyIGtleSkgeworICAgICAgICBmaW5hbCBpbnQgTiA9IG1FbnRyaWVzLnNpemUoKTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPE47IGkrKykgeworICAgICAgICAgICAgRW50cnkgZW50cnkgPSBtRW50cmllcy5nZXQoaSk7CisgICAgICAgICAgICBpZiAoZW50cnkua2V5ID09IGtleSkgeworICAgICAgICAgICAgICAgIG1FbnRyaWVzLnJlbW92ZShpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZW50cnk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgcHJpdmF0ZSBpbnQgY2hvb3NlSW5kZXgoZmluYWwgbG9uZyB3aGVuKSB7CisgICAgICAgIGZpbmFsIGludCBOID0gbUVudHJpZXMuc2l6ZSgpOworICAgICAgICBmb3IgKGludCBpPTA7IGk8TjsgaSsrKSB7CisgICAgICAgICAgICBFbnRyeSBlbnRyeSA9IG1FbnRyaWVzLmdldChpKTsKKyAgICAgICAgICAgIGlmIChlbnRyeS5ub3RpZmljYXRpb24ubm90aWZpY2F0aW9uLndoZW4gPiB3aGVuKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIE47CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJuIHdoZXRoZXIgdGhlcmUgYXJlIGFueSB2aXNpYmxlIGl0ZW1zIChpLmUuIGl0ZW1zIHdpdGhvdXQgYW4gZXJyb3IpLgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGhhc1Zpc2libGVJdGVtcygpIHsKKyAgICAgICAgZmluYWwgaW50IE4gPSBtRW50cmllcy5zaXplKCk7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxOOyBpKyspIHsKKyAgICAgICAgICAgIEVudHJ5IGVudHJ5ID0gbUVudHJpZXMuZ2V0KGkpOworICAgICAgICAgICAgaWYgKGVudHJ5LmV4cGFuZGVkICE9IG51bGwpIHsgLy8gdGhlIHZpZXcgc3VjY2Vzc2Z1bGx5IGluZmxhdGVkCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybiB3aGV0aGVyIHRoZXJlIGFyZSBhbnkgY2xlYXJhYmxlIGl0ZW1zICh0aGF0IGFyZW4ndCBlcnJvcnMpLgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGhhc0NsZWFyYWJsZUl0ZW1zKCkgeworICAgICAgICBmaW5hbCBpbnQgTiA9IG1FbnRyaWVzLnNpemUoKTsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPE47IGkrKykgeworICAgICAgICAgICAgRW50cnkgZW50cnkgPSBtRW50cmllcy5nZXQoaSk7CisgICAgICAgICAgICBpZiAoZW50cnkuZXhwYW5kZWQgIT0gbnVsbCkgeyAvLyB0aGUgdmlldyBzdWNjZXNzZnVsbHkgaW5mbGF0ZWQKKyAgICAgICAgICAgICAgICBpZiAoKGVudHJ5Lm5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb24uZmxhZ3MgJiBOb3RpZmljYXRpb24uRkxBR19OT19DTEVBUikgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvTm90aWZpY2F0aW9uTGluZWFyTGF5b3V0LmphdmEgYi9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL05vdGlmaWNhdGlvbkxpbmVhckxheW91dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxMDUzNTIKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL05vdGlmaWNhdGlvbkxpbmVhckxheW91dC5qYXZhCkBAIC0wLDAgKzEsMjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLnN5c3RlbXVpLnN0YXR1c2JhcjsKKworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQ7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuTGluZWFyTGF5b3V0OworCisKK3B1YmxpYyBjbGFzcyBOb3RpZmljYXRpb25MaW5lYXJMYXlvdXQgZXh0ZW5kcyBMaW5lYXJMYXlvdXQgeworICAgIHB1YmxpYyBOb3RpZmljYXRpb25MaW5lYXJMYXlvdXQoQ29udGV4dCBjb250ZXh0LCBBdHRyaWJ1dGVTZXQgYXR0cnMpIHsKKyAgICAgICAgc3VwZXIoY29udGV4dCwgYXR0cnMpOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YXR1c2Jhci9TdGF0dXNCYXJJY29uVmlldy5qYXZhIGIvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YXR1c2Jhci9TdGF0dXNCYXJJY29uVmlldy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5OGJkN2QKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL1N0YXR1c0Jhckljb25WaWV3LmphdmEKQEAgLTAsMCArMSwxMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLnN5c3RlbXVpLnN0YXR1c2JhcjsKKworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlczsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlOworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzOworaW1wb3J0IGFuZHJvaWQudXRpbC5TbG9nOworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3RGVidWc7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuRnJhbWVMYXlvdXQ7CisKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5zdGF0dXNiYXIuU3RhdHVzQmFySWNvbjsKKworcHVibGljIGNsYXNzIFN0YXR1c0Jhckljb25WaWV3IGV4dGVuZHMgQW5pbWF0ZWRJbWFnZVZpZXcgeworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSAiU3RhdHVzQmFySWNvblZpZXciOworCisgICAgcHJpdmF0ZSBTdGF0dXNCYXJJY29uIG1JY29uOworICAgIEBWaWV3RGVidWcuRXhwb3J0ZWRQcm9wZXJ0eSBwcml2YXRlIFN0cmluZyBtU2xvdDsKKworICAgIHB1YmxpYyBTdGF0dXNCYXJJY29uVmlldyhDb250ZXh0IGNvbnRleHQsIFN0cmluZyBzbG90KSB7CisgICAgICAgIHN1cGVyKGNvbnRleHQpOworICAgICAgICBtU2xvdCA9IHNsb3Q7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgYm9vbGVhbiBzdHJlcShTdHJpbmcgYSwgU3RyaW5nIGIpIHsKKyAgICAgICAgaWYgKGEgPT0gYikgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGEgPT0gbnVsbCAmJiBiICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoYSAhPSBudWxsICYmIGIgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBhLmVxdWFscyhiKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHdoZXRoZXIgdGhlIHNldCBzdWNjZWVkZWQuCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gc2V0KFN0YXR1c0Jhckljb24gaWNvbikgeworICAgICAgICBmaW5hbCBib29sZWFuIGljb25FcXVhbHMgPSBtSWNvbiAhPSBudWxsCisgICAgICAgICAgICAgICAgJiYgc3RyZXEobUljb24uaWNvblBhY2thZ2UsIGljb24uaWNvblBhY2thZ2UpCisgICAgICAgICAgICAgICAgJiYgbUljb24uaWNvbklkID09IGljb24uaWNvbklkOworICAgICAgICBmaW5hbCBib29sZWFuIGxldmVsRXF1YWxzID0gaWNvbkVxdWFscworICAgICAgICAgICAgICAgICYmIG1JY29uLmljb25MZXZlbCA9PSBpY29uLmljb25MZXZlbDsKKyAgICAgICAgZmluYWwgYm9vbGVhbiB2aXNpYmlsaXR5RXF1YWxzID0gbUljb24gIT0gbnVsbAorICAgICAgICAgICAgICAgICYmIG1JY29uLnZpc2libGUgPT0gaWNvbi52aXNpYmxlOworICAgICAgICBpZiAoIWljb25FcXVhbHMpIHsKKyAgICAgICAgICAgIERyYXdhYmxlIGRyYXdhYmxlID0gZ2V0SWNvbihpY29uKTsKKyAgICAgICAgICAgIGlmIChkcmF3YWJsZSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgU2xvZy53KFN0YXR1c0JhclNlcnZpY2UuVEFHLCAiTm8gaWNvbiBmb3Igc2xvdCAiICsgbVNsb3QpOworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNldEltYWdlRHJhd2FibGUoZHJhd2FibGUpOworICAgICAgICB9CisgICAgICAgIGlmICghbGV2ZWxFcXVhbHMpIHsKKyAgICAgICAgICAgIHNldEltYWdlTGV2ZWwoaWNvbi5pY29uTGV2ZWwpOworICAgICAgICB9CisgICAgICAgIGlmICghdmlzaWJpbGl0eUVxdWFscykgeworICAgICAgICAgICAgc2V0VmlzaWJpbGl0eShpY29uLnZpc2libGUgPyBWSVNJQkxFIDogR09ORSk7CisgICAgICAgIH0KKyAgICAgICAgbUljb24gPSBpY29uLmNsb25lKCk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHByaXZhdGUgRHJhd2FibGUgZ2V0SWNvbihTdGF0dXNCYXJJY29uIGljb24pIHsKKyAgICAgICAgcmV0dXJuIGdldEljb24oZ2V0Q29udGV4dCgpLCBpY29uKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSByaWdodCBpY29uIHRvIHVzZSBmb3IgdGhpcyBpdGVtLCByZXNwZWN0aW5nIHRoZSBpY29uSWQgYW5kCisgICAgICogaWNvblBhY2thZ2UgKGlmIHNldCkKKyAgICAgKiAKKyAgICAgKiBAcGFyYW0gY29udGV4dCBDb250ZXh0IHRvIHVzZSB0byBnZXQgcmVzb3VyY2VzIGlmIGljb25QYWNrYWdlIGlzIG5vdCBzZXQKKyAgICAgKiBAcmV0dXJuIERyYXdhYmxlIGZvciB0aGlzIGl0ZW0sIG9yIG51bGwgaWYgdGhlIHBhY2thZ2Ugb3IgaXRlbSBjb3VsZCBub3QKKyAgICAgKiAgICAgICAgIGJlIGZvdW5kCisgICAgICovCisgICAgcHVibGljIHN0YXRpYyBEcmF3YWJsZSBnZXRJY29uKENvbnRleHQgY29udGV4dCwgU3RhdHVzQmFySWNvbiBpY29uKSB7CisgICAgICAgIFJlc291cmNlcyByID0gbnVsbDsKKworICAgICAgICBpZiAoaWNvbi5pY29uUGFja2FnZSAhPSBudWxsKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHIgPSBjb250ZXh0LmdldFBhY2thZ2VNYW5hZ2VyKCkuZ2V0UmVzb3VyY2VzRm9yQXBwbGljYXRpb24oaWNvbi5pY29uUGFja2FnZSk7CisgICAgICAgICAgICB9IGNhdGNoIChQYWNrYWdlTWFuYWdlci5OYW1lTm90Rm91bmRFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgICAgICBTbG9nLmUoU3RhdHVzQmFyU2VydmljZS5UQUcsICJJY29uIHBhY2thZ2Ugbm90IGZvdW5kOiAiICsgaWNvbi5pY29uUGFja2FnZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByID0gY29udGV4dC5nZXRSZXNvdXJjZXMoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChpY29uLmljb25JZCA9PSAwKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJldHVybiByLmdldERyYXdhYmxlKGljb24uaWNvbklkKTsKKyAgICAgICAgfSBjYXRjaCAoUnVudGltZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBTbG9nLncoU3RhdHVzQmFyU2VydmljZS5UQUcsICJJY29uIG5vdCBmb3VuZCBpbiAiCisgICAgICAgICAgICAgICAgICArIChpY29uLmljb25QYWNrYWdlICE9IG51bGwgPyBpY29uLmljb25JZCA6ICI8c3lzdGVtPiIpCisgICAgICAgICAgICAgICAgICArICI6ICIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKGljb24uaWNvbklkKSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICBwdWJsaWMgU3RhdHVzQmFySWNvbiBnZXRTdGF0dXNCYXJJY29uKCkgeworICAgICAgICByZXR1cm4gbUljb247CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YXR1c2Jhci9TdGF0dXNCYXJQb2xpY3kuamF2YSBiL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvU3RhdHVzQmFyUG9saWN5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGYzOWVlNAotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvU3RhdHVzQmFyUG9saWN5LmphdmEKQEAgLTAsMCArMSwxMTYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5zeXN0ZW11aS5zdGF0dXNiYXIucG9saWN5OworCitpbXBvcnQgYW5kcm9pZC5hcHAuU3RhdHVzQmFyTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLmFwcC5BbGVydERpYWxvZzsKK2ltcG9ydCBhbmRyb2lkLmJsdWV0b290aC5CbHVldG9vdGhBMmRwOworaW1wb3J0IGFuZHJvaWQuYmx1ZXRvb3RoLkJsdWV0b290aEFkYXB0ZXI7CitpbXBvcnQgYW5kcm9pZC5ibHVldG9vdGguQmx1ZXRvb3RoSGVhZHNldDsKK2ltcG9ydCBhbmRyb2lkLmJsdWV0b290aC5CbHVldG9vdGhQYmFwOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Ccm9hZGNhc3RSZWNlaXZlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2U7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50RmlsdGVyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5yZXMuVHlwZWRBcnJheTsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLlBpeGVsRm9ybWF0OworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuVHlwZWZhY2U7CitpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZTsKK2ltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLm1lZGlhLkF1ZGlvTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLm1lZGlhLlJpbmd0b25lOworaW1wb3J0IGFuZHJvaWQubWVkaWEuUmluZ3RvbmVNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQubmV0Lk5ldHdvcmtJbmZvOworaW1wb3J0IGFuZHJvaWQubmV0LlVyaTsKK2ltcG9ydCBhbmRyb2lkLm5ldC53aWZpLldpZmlNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQub3MuQmluZGVyOworaW1wb3J0IGFuZHJvaWQub3MuSGFuZGxlcjsKK2ltcG9ydCBhbmRyb2lkLm9zLk1lc3NhZ2U7CitpbXBvcnQgYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb247CitpbXBvcnQgYW5kcm9pZC5vcy5zdG9yYWdlLlN0b3JhZ2VNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQucHJvdmlkZXIuU2V0dGluZ3M7CitpbXBvcnQgYW5kcm9pZC50ZWxlcGhvbnkuUGhvbmVTdGF0ZUxpc3RlbmVyOworaW1wb3J0IGFuZHJvaWQudGVsZXBob255LlNlcnZpY2VTdGF0ZTsKK2ltcG9ydCBhbmRyb2lkLnRlbGVwaG9ueS5TaWduYWxTdHJlbmd0aDsKK2ltcG9ydCBhbmRyb2lkLnRlbGVwaG9ueS5UZWxlcGhvbnlNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQudGV4dC5mb3JtYXQuRGF0ZUZvcm1hdDsKK2ltcG9ydCBhbmRyb2lkLnRleHQuc3R5bGUuQ2hhcmFjdGVyU3R5bGU7CitpbXBvcnQgYW5kcm9pZC50ZXh0LnN0eWxlLlJlbGF0aXZlU2l6ZVNwYW47CitpbXBvcnQgYW5kcm9pZC50ZXh0LnN0eWxlLkZvcmVncm91bmRDb2xvclNwYW47CitpbXBvcnQgYW5kcm9pZC50ZXh0LnN0eWxlLlN0eWxlU3BhbjsKK2ltcG9ydCBhbmRyb2lkLnRleHQuU3Bhbm5hYmxlOworaW1wb3J0IGFuZHJvaWQudGV4dC5TcGFubmFibGVTdHJpbmdCdWlsZGVyOworaW1wb3J0IGFuZHJvaWQudXRpbC5TbG9nOworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3R3JvdXA7CitpbXBvcnQgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXJJbXBsOworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkltYWdlVmlldzsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5MaW5lYXJMYXlvdXQ7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuVGV4dFZpZXc7CisKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5hcHAuSUJhdHRlcnlTdGF0czsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuSWNjQ2FyZDsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuVGVsZXBob255SW50ZW50czsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuY2RtYS5FcmlJbmZvOworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5jZG1hLlR0eUludGVudDsKK2ltcG9ydCBjb20uYW5kcm9pZC5zZXJ2ZXIuYW0uQmF0dGVyeVN0YXRzU2VydmljZTsKKworaW1wb3J0IGNvbS5hbmRyb2lkLnN5c3RlbXVpLlI7CisKKy8qKgorICogVGhpcyBjbGFzcyBjb250YWlucyBhbGwgb2YgdGhlIHBvbGljeSBhYm91dCB3aGljaCBpY29ucyBhcmUgaW5zdGFsbGVkIGluIHRoZSBzdGF0dXMKKyAqIGJhciBhdCBib290IHRpbWUuICBJdCBnb2VzIHRocm91Z2ggdGhlIG5vcm1hbCBBUEkgZm9yIGljb25zLCBldmVuIHRob3VnaCBpdCBwcm9iYWJseQorICogc3RyaWN0bHkgZG9lc24ndCBuZWVkIHRvLgorICovCitwdWJsaWMgY2xhc3MgU3RhdHVzQmFyUG9saWN5IHsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gIlN0YXR1c0JhclBvbGljeSI7CisKKyAgICAvLyBtZXNzYWdlIGNvZGVzIGZvciB0aGUgaGFuZGxlcgorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBFVkVOVF9CQVRURVJZX0NMT1NFID0gNDsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBBTV9QTV9TVFlMRV9OT1JNQUwgID0gMDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQU1fUE1fU1RZTEVfU01BTEwgICA9IDE7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEFNX1BNX1NUWUxFX0dPTkUgICAgPSAyOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEFNX1BNX1NUWUxFID0gQU1fUE1fU1RZTEVfR09ORTsKKworICAgIHByaXZhdGUgZmluYWwgQ29udGV4dCBtQ29udGV4dDsKKyAgICBwcml2YXRlIGZpbmFsIFN0YXR1c0Jhck1hbmFnZXIgbVNlcnZpY2U7CisgICAgcHJpdmF0ZSBmaW5hbCBIYW5kbGVyIG1IYW5kbGVyID0gbmV3IFN0YXR1c0JhckhhbmRsZXIoKTsKKyAgICBwcml2YXRlIGZpbmFsIElCYXR0ZXJ5U3RhdHMgbUJhdHRlcnlTdGF0czsKKworICAgIC8vIHN0b3JhZ2UKKyAgICBwcml2YXRlIFN0b3JhZ2VNYW5hZ2VyIG1TdG9yYWdlTWFuYWdlcjsKKworICAgIC8vIGJhdHRlcnkKKyAgICBwcml2YXRlIGJvb2xlYW4gbUJhdHRlcnlGaXJzdCA9IHRydWU7CisgICAgcHJpdmF0ZSBib29sZWFuIG1CYXR0ZXJ5UGx1Z2dlZDsKKyAgICBwcml2YXRlIGludCBtQmF0dGVyeUxldmVsOworICAgIHByaXZhdGUgQWxlcnREaWFsb2cgbUxvd0JhdHRlcnlEaWFsb2c7CisgICAgcHJpdmF0ZSBUZXh0VmlldyBtQmF0dGVyeUxldmVsVGV4dFZpZXc7CisgICAgcHJpdmF0ZSBWaWV3IG1CYXR0ZXJ5VmlldzsKKyAgICBwcml2YXRlIGludCBtQmF0dGVyeVZpZXdTZXF1ZW5jZTsKKyAgICBwcml2YXRlIGJvb2xlYW4gbUJhdHRlcnlTaG93TG93T25FbmRDYWxsID0gZmFsc2U7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBTSE9XX0xPV19CQVRURVJZX1dBUk5JTkcgPSB0cnVlOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gU0hPV19CQVRURVJZX1dBUk5JTkdTX0lOX0NBTEwgPSB0cnVlOworCisgICAgLy8gcGhvbmUKKyAgICBwcml2YXRlIFRlbGVwaG9ueU1hbmFnZXIgbVBob25lOworICAgIHByaXZhdGUgaW50IG1QaG9uZVNpZ25hbEljb25JZDsKKworICAgIC8vKioqKiogU2lnbmFsIHN0cmVuZ3RoIGljb25zCisgICAgLy9HU00vVU1UUworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludFtdIHNTaWduYWxJbWFnZXMgPSBuZXcgaW50W10geworICAgICAgICBSLmRyYXdhYmxlLnN0YXRfc3lzX3NpZ25hbF8wLAorICAgICAgICBSLmRyYXdhYmxlLnN0YXRfc3lzX3NpZ25hbF8xLAorICAgICAgICBSLmRyYXdhYmxlLnN0YXRfc3lzX3NpZ25hbF8yLAorICAgICAgICBSLmRyYXdhYmxlLnN0YXRfc3lzX3NpZ25hbF8zLAorICAgICAgICBSLmRyYXdhYmxlLnN0YXRfc3lzX3NpZ25hbF80CisgICAgfTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnRbXSBzU2lnbmFsSW1hZ2VzX3IgPSBuZXcgaW50W10geworICAgICAgICBSLmRyYXdhYmxlLnN0YXRfc3lzX3Jfc2lnbmFsXzAsCisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcl9zaWduYWxfMSwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yX3NpZ25hbF8yLAorICAgICAgICBSLmRyYXdhYmxlLnN0YXRfc3lzX3Jfc2lnbmFsXzMsCisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcl9zaWduYWxfNAorICAgIH07CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50W10gc1JvYW1pbmdJbmRpY2F0b3JJbWFnZXNfY2RtYSA9IG5ldyBpbnRbXSB7CisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsIC8vU3RhbmRhcmQgUm9hbWluZyBJbmRpY2F0b3IKKyAgICAgICAgLy8gMSBpcyBTdGFuZGFyZCBSb2FtaW5nIEluZGljYXRvciBPRkYKKyAgICAgICAgLy8gVE9ETyBUOiBpbWFnZSBuZXZlciB1c2VkLCByZW1vdmUgYW5kIHB1dCAwIGluc3RlYWQ/CisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCisKKyAgICAgICAgLy8gMiBpcyBTdGFuZGFyZCBSb2FtaW5nIEluZGljYXRvciBGTEFTSElORworICAgICAgICAvLyBUT0RPIFQ6IGltYWdlIG5ldmVyIHVzZWQsIHJlbW92ZSBhbmQgcHV0IDAgaW5zdGVhZD8KKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKworICAgICAgICAvLyAzLTEyIFN0YW5kYXJkIEVSSQorICAgICAgICBSLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLCAvLzMKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKworICAgICAgICAvLyAxMy02MyBSZXNlcnZlZCBmb3IgU3RhbmRhcmQgRVJJCisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsIC8vMTMKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKyAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwKKworICAgICAgICAvLyA2NC0xMjcgUmVzZXJ2ZWQgZm9yIE5vbiBTdGFuZGFyZCAoT3BlcmF0b3IgU3BlY2lmaWMpIEVSSQorICAgICAgICBSLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLCAvLzY0CisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAgLy84MworCisgICAgICAgIC8vIDEyOC0yNTUgUmVzZXJ2ZWQKKyAgICB9OworCisgICAgLy8qKioqKiBEYXRhIGNvbm5lY3Rpb24gaWNvbnMKKyAgICBwcml2YXRlIGludFtdIG1EYXRhSWNvbkxpc3QgPSBzRGF0YU5ldFR5cGVfZzsKKyAgICAvL0dTTS9VTVRTCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50W10gc0RhdGFOZXRUeXBlX2cgPSBuZXcgaW50W10geworICAgICAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19kYXRhX2Nvbm5lY3RlZF9nLAorICAgICAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19kYXRhX2luX2csCisgICAgICAgICAgICBSLmRyYXdhYmxlLnN0YXRfc3lzX2RhdGFfb3V0X2csCisgICAgICAgICAgICBSLmRyYXdhYmxlLnN0YXRfc3lzX2RhdGFfaW5hbmRvdXRfZywKKyAgICAgICAgfTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnRbXSBzRGF0YU5ldFR5cGVfM2cgPSBuZXcgaW50W10geworICAgICAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19kYXRhX2Nvbm5lY3RlZF8zZywKKyAgICAgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfZGF0YV9pbl8zZywKKyAgICAgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfZGF0YV9vdXRfM2csCisgICAgICAgICAgICBSLmRyYXdhYmxlLnN0YXRfc3lzX2RhdGFfaW5hbmRvdXRfM2csCisgICAgICAgIH07CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50W10gc0RhdGFOZXRUeXBlX2UgPSBuZXcgaW50W10geworICAgICAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19kYXRhX2Nvbm5lY3RlZF9lLAorICAgICAgICAgICAgUi5kcmF3YWJsZS5zdGF0X3N5c19kYXRhX2luX2UsCisgICAgICAgICAgICBSLmRyYXdhYmxlLnN0YXRfc3lzX2RhdGFfb3V0X2UsCisgICAgICAgICAgICBSLmRyYXdhYmxlLnN0YXRfc3lzX2RhdGFfaW5hbmRvdXRfZSwKKyAgICAgICAgfTsKKyAgICAvLzMuNUcKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnRbXSBzRGF0YU5ldFR5cGVfaCA9IG5ldyBpbnRbXSB7CisgICAgICAgICAgICBSLmRyYXdhYmxlLnN0YXRfc3lzX2RhdGFfY29ubmVjdGVkX2gsCisgICAgICAgICAgICBSLmRyYXdhYmxlLnN0YXRfc3lzX2RhdGFfaW5faCwKKyAgICAgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfZGF0YV9vdXRfaCwKKyAgICAgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfZGF0YV9pbmFuZG91dF9oLAorICAgIH07CisKKyAgICAvL0NETUEKKyAgICAvLyBVc2UgM0cgaWNvbnMgZm9yIEVWRE8gZGF0YSBhbmQgMXggaWNvbnMgZm9yIDFYUlRUIGRhdGEKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnRbXSBzRGF0YU5ldFR5cGVfMXggPSBuZXcgaW50W10geworICAgICAgICBSLmRyYXdhYmxlLnN0YXRfc3lzX2RhdGFfY29ubmVjdGVkXzF4LAorICAgICAgICBSLmRyYXdhYmxlLnN0YXRfc3lzX2RhdGFfaW5fMXgsCisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfZGF0YV9vdXRfMXgsCisgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfZGF0YV9pbmFuZG91dF8xeCwKKyAgICB9OworCisgICAgLy8gQXNzdW1lIGl0J3MgYWxsIGdvb2QgdW5sZXNzIHdlIGhlYXIgb3RoZXJ3aXNlLiAgV2UgZG9uJ3QgYWx3YXlzIHNlZW0KKyAgICAvLyB0byBnZXQgYnJvYWRjYXN0cyB0aGF0IGl0ICppcyogdGhlcmUuCisgICAgSWNjQ2FyZC5TdGF0ZSBtU2ltU3RhdGUgPSBJY2NDYXJkLlN0YXRlLlJFQURZOworICAgIGludCBtUGhvbmVTdGF0ZSA9IFRlbGVwaG9ueU1hbmFnZXIuQ0FMTF9TVEFURV9JRExFOworICAgIGludCBtRGF0YVN0YXRlID0gVGVsZXBob255TWFuYWdlci5EQVRBX0RJU0NPTk5FQ1RFRDsKKyAgICBpbnQgbURhdGFBY3Rpdml0eSA9IFRlbGVwaG9ueU1hbmFnZXIuREFUQV9BQ1RJVklUWV9OT05FOworICAgIFNlcnZpY2VTdGF0ZSBtU2VydmljZVN0YXRlOworICAgIFNpZ25hbFN0cmVuZ3RoIG1TaWduYWxTdHJlbmd0aDsKKworICAgIC8vIGRhdGEgY29ubmVjdGlvbgorICAgIHByaXZhdGUgYm9vbGVhbiBtRGF0YUljb25WaXNpYmxlOworICAgIHByaXZhdGUgYm9vbGVhbiBtSHNwYURhdGFEaXN0aW5ndWlzaGFibGU7CisKKyAgICAvLyByaW5nZXIgdm9sdW1lCisgICAgcHJpdmF0ZSBib29sZWFuIG1Wb2x1bWVWaXNpYmxlOworCisgICAgLy8gYmx1ZXRvb3RoIGRldmljZSBzdGF0dXMKKyAgICBwcml2YXRlIGludCBtQmx1ZXRvb3RoSGVhZHNldFN0YXRlOworICAgIHByaXZhdGUgYm9vbGVhbiBtQmx1ZXRvb3RoQTJkcENvbm5lY3RlZDsKKyAgICBwcml2YXRlIGludCBtQmx1ZXRvb3RoUGJhcFN0YXRlOworICAgIHByaXZhdGUgYm9vbGVhbiBtQmx1ZXRvb3RoRW5hYmxlZDsKKworICAgIC8vIHdpZmkKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnRbXSBzV2lmaVNpZ25hbEltYWdlcyA9IG5ldyBpbnRbXSB7CisgICAgICAgICAgICBSLmRyYXdhYmxlLnN0YXRfc3lzX3dpZmlfc2lnbmFsXzEsCisgICAgICAgICAgICBSLmRyYXdhYmxlLnN0YXRfc3lzX3dpZmlfc2lnbmFsXzIsCisgICAgICAgICAgICBSLmRyYXdhYmxlLnN0YXRfc3lzX3dpZmlfc2lnbmFsXzMsCisgICAgICAgICAgICBSLmRyYXdhYmxlLnN0YXRfc3lzX3dpZmlfc2lnbmFsXzQsCisgICAgICAgIH07CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IHNXaWZpVGVtcG9yYXJpbHlOb3RDb25uZWN0ZWRJbWFnZSA9CisgICAgICAgICAgICBSLmRyYXdhYmxlLnN0YXRfc3lzX3dpZmlfc2lnbmFsXzA7CisKKyAgICBwcml2YXRlIGludCBtTGFzdFdpZmlTaWduYWxMZXZlbCA9IC0xOworICAgIHByaXZhdGUgYm9vbGVhbiBtSXNXaWZpQ29ubmVjdGVkID0gZmFsc2U7CisKKyAgICAvLyBzeW5jIHN0YXRlCisgICAgLy8gSWYgc3luYyBpcyBhY3RpdmUgdGhlIFN5bmNBY3RpdmUgaWNvbiBpcyBkaXNwbGF5ZWQuIElmIHN5bmMgaXMgbm90IGFjdGl2ZSBidXQKKyAgICAvLyBzeW5jIGlzIGZhaWxpbmcgdGhlIFN5bmNGYWlsaW5nIGljb24gaXMgZGlzcGxheWVkLiBPdGhlcndpc2UgbmVpdGhlciBhcmUgZGlzcGxheWVkLgorCisgICAgcHJpdmF0ZSBCcm9hZGNhc3RSZWNlaXZlciBtSW50ZW50UmVjZWl2ZXIgPSBuZXcgQnJvYWRjYXN0UmVjZWl2ZXIoKSB7CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBvblJlY2VpdmUoQ29udGV4dCBjb250ZXh0LCBJbnRlbnQgaW50ZW50KSB7CisgICAgICAgICAgICBTdHJpbmcgYWN0aW9uID0gaW50ZW50LmdldEFjdGlvbigpOworICAgICAgICAgICAgaWYgKGFjdGlvbi5lcXVhbHMoSW50ZW50LkFDVElPTl9CQVRURVJZX0NIQU5HRUQpKSB7CisgICAgICAgICAgICAgICAgdXBkYXRlQmF0dGVyeShpbnRlbnQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoYWN0aW9uLmVxdWFscyhJbnRlbnQuQUNUSU9OX0FMQVJNX0NIQU5HRUQpKSB7CisgICAgICAgICAgICAgICAgdXBkYXRlQWxhcm0oaW50ZW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGFjdGlvbi5lcXVhbHMoSW50ZW50LkFDVElPTl9TWU5DX1NUQVRFX0NIQU5HRUQpKSB7CisgICAgICAgICAgICAgICAgdXBkYXRlU3luY1N0YXRlKGludGVudCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKEludGVudC5BQ1RJT05fQkFUVEVSWV9MT1cpKSB7CisgICAgICAgICAgICAgICAgb25CYXR0ZXJ5TG93KGludGVudCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKEludGVudC5BQ1RJT05fQkFUVEVSWV9PS0FZKQorICAgICAgICAgICAgICAgICAgICB8fCBhY3Rpb24uZXF1YWxzKEludGVudC5BQ1RJT05fUE9XRVJfQ09OTkVDVEVEKSkgeworICAgICAgICAgICAgICAgIG9uQmF0dGVyeU9rYXkoaW50ZW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGFjdGlvbi5lcXVhbHMoQmx1ZXRvb3RoQWRhcHRlci5BQ1RJT05fU1RBVEVfQ0hBTkdFRCkgfHwKKyAgICAgICAgICAgICAgICAgICAgYWN0aW9uLmVxdWFscyhCbHVldG9vdGhIZWFkc2V0LkFDVElPTl9TVEFURV9DSEFOR0VEKSB8fAorICAgICAgICAgICAgICAgICAgICBhY3Rpb24uZXF1YWxzKEJsdWV0b290aEEyZHAuQUNUSU9OX1NJTktfU1RBVEVfQ0hBTkdFRCkgfHwKKyAgICAgICAgICAgICAgICAgICAgYWN0aW9uLmVxdWFscyhCbHVldG9vdGhQYmFwLlBCQVBfU1RBVEVfQ0hBTkdFRF9BQ1RJT04pKSB7CisgICAgICAgICAgICAgICAgdXBkYXRlQmx1ZXRvb3RoKGludGVudCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKFdpZmlNYW5hZ2VyLk5FVFdPUktfU1RBVEVfQ0hBTkdFRF9BQ1RJT04pIHx8CisgICAgICAgICAgICAgICAgICAgIGFjdGlvbi5lcXVhbHMoV2lmaU1hbmFnZXIuV0lGSV9TVEFURV9DSEFOR0VEX0FDVElPTikgfHwKKyAgICAgICAgICAgICAgICAgICAgYWN0aW9uLmVxdWFscyhXaWZpTWFuYWdlci5SU1NJX0NIQU5HRURfQUNUSU9OKSkgeworICAgICAgICAgICAgICAgIHVwZGF0ZVdpZmkoaW50ZW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGFjdGlvbi5lcXVhbHMoTG9jYXRpb25NYW5hZ2VyLkdQU19FTkFCTEVEX0NIQU5HRV9BQ1RJT04pIHx8CisgICAgICAgICAgICAgICAgICAgIGFjdGlvbi5lcXVhbHMoTG9jYXRpb25NYW5hZ2VyLkdQU19GSVhfQ0hBTkdFX0FDVElPTikpIHsKKyAgICAgICAgICAgICAgICB1cGRhdGVHcHMoaW50ZW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGFjdGlvbi5lcXVhbHMoQXVkaW9NYW5hZ2VyLlJJTkdFUl9NT0RFX0NIQU5HRURfQUNUSU9OKSB8fAorICAgICAgICAgICAgICAgICAgICBhY3Rpb24uZXF1YWxzKEF1ZGlvTWFuYWdlci5WSUJSQVRFX1NFVFRJTkdfQ0hBTkdFRF9BQ1RJT04pKSB7CisgICAgICAgICAgICAgICAgdXBkYXRlVm9sdW1lKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKFRlbGVwaG9ueUludGVudHMuQUNUSU9OX1NJTV9TVEFURV9DSEFOR0VEKSkgeworICAgICAgICAgICAgICAgIHVwZGF0ZVNpbVN0YXRlKGludGVudCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKFR0eUludGVudC5UVFlfRU5BQkxFRF9DSEFOR0VfQUNUSU9OKSkgeworICAgICAgICAgICAgICAgIHVwZGF0ZVRUWShpbnRlbnQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfTsKKworICAgIHB1YmxpYyBTdGF0dXNCYXJQb2xpY3koQ29udGV4dCBjb250ZXh0KSB7CisgICAgICAgIG1Db250ZXh0ID0gY29udGV4dDsKKyAgICAgICAgbVNlcnZpY2UgPSAoU3RhdHVzQmFyTWFuYWdlciljb250ZXh0LmdldFN5c3RlbVNlcnZpY2UoQ29udGV4dC5TVEFUVVNfQkFSX1NFUlZJQ0UpOworICAgICAgICBtU2lnbmFsU3RyZW5ndGggPSBuZXcgU2lnbmFsU3RyZW5ndGgoKTsKKyAgICAgICAgbUJhdHRlcnlTdGF0cyA9IEJhdHRlcnlTdGF0c1NlcnZpY2UuZ2V0U2VydmljZSgpOworCisgICAgICAgIC8vIHN0b3JhZ2UKKyAgICAgICAgbVN0b3JhZ2VNYW5hZ2VyID0gKFN0b3JhZ2VNYW5hZ2VyKSBjb250ZXh0LmdldFN5c3RlbVNlcnZpY2UoQ29udGV4dC5TVE9SQUdFX1NFUlZJQ0UpOworICAgICAgICBtU3RvcmFnZU1hbmFnZXIucmVnaXN0ZXJMaXN0ZW5lcigKKyAgICAgICAgICAgICAgICBuZXcgY29tLmFuZHJvaWQuc3lzdGVtdWkudXNiLlN0b3JhZ2VOb3RpZmljYXRpb24oY29udGV4dCkpOworCisgICAgICAgIC8vIGJhdHRlcnkKKyAgICAgICAgbVNlcnZpY2Uuc2V0SWNvbigiYmF0dGVyeSIsIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfYmF0dGVyeV91bmtub3duLCAwKTsKKworICAgICAgICAvLyBwaG9uZV9zaWduYWwKKyAgICAgICAgbVBob25lID0gKFRlbGVwaG9ueU1hbmFnZXIpY29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuVEVMRVBIT05ZX1NFUlZJQ0UpOworICAgICAgICBtUGhvbmVTaWduYWxJY29uSWQgPSBSLmRyYXdhYmxlLnN0YXRfc3lzX3NpZ25hbF9udWxsOworICAgICAgICBtU2VydmljZS5zZXRJY29uKCJwaG9uZV9zaWduYWwiLCBtUGhvbmVTaWduYWxJY29uSWQsIDApOworCisgICAgICAgIC8vIHJlZ2lzdGVyIGZvciBwaG9uZSBzdGF0ZSBub3RpZmljYXRpb25zLgorICAgICAgICAoKFRlbGVwaG9ueU1hbmFnZXIpbUNvbnRleHQuZ2V0U3lzdGVtU2VydmljZShDb250ZXh0LlRFTEVQSE9OWV9TRVJWSUNFKSkKKyAgICAgICAgICAgICAgICAubGlzdGVuKG1QaG9uZVN0YXRlTGlzdGVuZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIFBob25lU3RhdGVMaXN0ZW5lci5MSVNURU5fU0VSVklDRV9TVEFURQorICAgICAgICAgICAgICAgICAgICAgICAgfCBQaG9uZVN0YXRlTGlzdGVuZXIuTElTVEVOX1NJR05BTF9TVFJFTkdUSFMKKyAgICAgICAgICAgICAgICAgICAgICAgIHwgUGhvbmVTdGF0ZUxpc3RlbmVyLkxJU1RFTl9DQUxMX1NUQVRFCisgICAgICAgICAgICAgICAgICAgICAgICB8IFBob25lU3RhdGVMaXN0ZW5lci5MSVNURU5fREFUQV9DT05ORUNUSU9OX1NUQVRFCisgICAgICAgICAgICAgICAgICAgICAgICB8IFBob25lU3RhdGVMaXN0ZW5lci5MSVNURU5fREFUQV9BQ1RJVklUWSk7CisKKyAgICAgICAgLy8gZGF0YV9jb25uZWN0aW9uCisgICAgICAgIG1TZXJ2aWNlLnNldEljb24oImRhdGFfY29ubmVjdGlvbiIsIFIuZHJhd2FibGUuc3RhdF9zeXNfZGF0YV9jb25uZWN0ZWRfZywgMCk7CisgICAgICAgIG1TZXJ2aWNlLnNldEljb25WaXNpYmlsaXR5KCJkYXRhX2Nvbm5lY3Rpb24iLCBmYWxzZSk7CisKKyAgICAgICAgLy8gd2lmaQorICAgICAgICBtU2VydmljZS5zZXRJY29uKCJ3aWZpIiwgc1dpZmlTaWduYWxJbWFnZXNbMF0sIDApOworICAgICAgICBtU2VydmljZS5zZXRJY29uVmlzaWJpbGl0eSgid2lmaSIsIGZhbHNlKTsKKyAgICAgICAgLy8gd2lmaSB3aWxsIGdldCB1cGRhdGVkIGJ5IHRoZSBzdGlja3kgaW50ZW50cworCisgICAgICAgIC8vIFRUWSBzdGF0dXMKKyAgICAgICAgbVNlcnZpY2Uuc2V0SWNvbigidHR5IiwgIFIuZHJhd2FibGUuc3RhdF9zeXNfdHR5X21vZGUsIDApOworICAgICAgICBtU2VydmljZS5zZXRJY29uVmlzaWJpbGl0eSgidHR5IiwgZmFsc2UpOworCisgICAgICAgIC8vIENkbWEgUm9hbWluZyBJbmRpY2F0b3IsIEVSSQorICAgICAgICBtU2VydmljZS5zZXRJY29uKCJjZG1hX2VyaSIsIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsIDApOworICAgICAgICBtU2VydmljZS5zZXRJY29uVmlzaWJpbGl0eSgiY2RtYV9lcmkiLCBmYWxzZSk7CisKKyAgICAgICAgLy8gYmx1ZXRvb3RoIHN0YXR1cworICAgICAgICBtU2VydmljZS5zZXRJY29uKCJibHVldG9vdGgiLCBSLmRyYXdhYmxlLnN0YXRfc3lzX2RhdGFfYmx1ZXRvb3RoLCAwKTsKKyAgICAgICAgQmx1ZXRvb3RoQWRhcHRlciBhZGFwdGVyID0gQmx1ZXRvb3RoQWRhcHRlci5nZXREZWZhdWx0QWRhcHRlcigpOworICAgICAgICBpZiAoYWRhcHRlciAhPSBudWxsKSB7CisgICAgICAgICAgICBtQmx1ZXRvb3RoRW5hYmxlZCA9IGFkYXB0ZXIuaXNFbmFibGVkKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtQmx1ZXRvb3RoRW5hYmxlZCA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIG1CbHVldG9vdGhBMmRwQ29ubmVjdGVkID0gZmFsc2U7CisgICAgICAgIG1CbHVldG9vdGhIZWFkc2V0U3RhdGUgPSBCbHVldG9vdGhIZWFkc2V0LlNUQVRFX0RJU0NPTk5FQ1RFRDsKKyAgICAgICAgbUJsdWV0b290aFBiYXBTdGF0ZSA9IEJsdWV0b290aFBiYXAuU1RBVEVfRElTQ09OTkVDVEVEOworICAgICAgICBtU2VydmljZS5zZXRJY29uVmlzaWJpbGl0eSgiYmx1ZXRvb3RoIiwgbUJsdWV0b290aEVuYWJsZWQpOworCisgICAgICAgIC8vIEdwcyBzdGF0dXMKKyAgICAgICAgbVNlcnZpY2Uuc2V0SWNvbigiZ3BzIiwgUi5kcmF3YWJsZS5zdGF0X3N5c19ncHNfYWNxdWlyaW5nX2FuaW0sIDApOworICAgICAgICBtU2VydmljZS5zZXRJY29uVmlzaWJpbGl0eSgiZ3BzIiwgZmFsc2UpOworCisgICAgICAgIC8vIEFsYXJtIGNsb2NrCisgICAgICAgIG1TZXJ2aWNlLnNldEljb24oImFsYXJtX2Nsb2NrIiwgUi5kcmF3YWJsZS5zdGF0X25vdGlmeV9hbGFybSwgMCk7CisgICAgICAgIG1TZXJ2aWNlLnNldEljb25WaXNpYmlsaXR5KCJhbGFybV9jbG9jayIsIGZhbHNlKTsKKworICAgICAgICAvLyBTeW5jIHN0YXRlCisgICAgICAgIG1TZXJ2aWNlLnNldEljb24oInN5bmNfYWN0aXZlIiwgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X25vdGlmeV9zeW5jX2FuaW0wLCAwKTsKKyAgICAgICAgbVNlcnZpY2Uuc2V0SWNvbigic3luY19mYWlsaW5nIiwgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X25vdGlmeV9zeW5jX2Vycm9yLCAwKTsKKyAgICAgICAgbVNlcnZpY2Uuc2V0SWNvblZpc2liaWxpdHkoInN5bmNfYWN0aXZlIiwgZmFsc2UpOworICAgICAgICBtU2VydmljZS5zZXRJY29uVmlzaWJpbGl0eSgic3luY19mYWlsaW5nIiwgZmFsc2UpOworCisgICAgICAgIC8vIHZvbHVtZQorICAgICAgICBtU2VydmljZS5zZXRJY29uKCJ2b2x1bWUiLCBSLmRyYXdhYmxlLnN0YXRfc3lzX3Jpbmdlcl9zaWxlbnQsIDApOworICAgICAgICBtU2VydmljZS5zZXRJY29uVmlzaWJpbGl0eSgidm9sdW1lIiwgZmFsc2UpOworICAgICAgICB1cGRhdGVWb2x1bWUoKTsKKworICAgICAgICBJbnRlbnRGaWx0ZXIgZmlsdGVyID0gbmV3IEludGVudEZpbHRlcigpOworCisgICAgICAgIC8vIFJlZ2lzdGVyIGZvciBJbnRlbnQgYnJvYWRjYXN0cyBmb3IuLi4KKyAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihJbnRlbnQuQUNUSU9OX0JBVFRFUllfQ0hBTkdFRCk7CisgICAgICAgIGZpbHRlci5hZGRBY3Rpb24oSW50ZW50LkFDVElPTl9CQVRURVJZX0xPVyk7CisgICAgICAgIGZpbHRlci5hZGRBY3Rpb24oSW50ZW50LkFDVElPTl9CQVRURVJZX09LQVkpOworICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKEludGVudC5BQ1RJT05fUE9XRVJfQ09OTkVDVEVEKTsKKyAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihJbnRlbnQuQUNUSU9OX0FMQVJNX0NIQU5HRUQpOworICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKEludGVudC5BQ1RJT05fU1lOQ19TVEFURV9DSEFOR0VEKTsKKyAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihBdWRpb01hbmFnZXIuUklOR0VSX01PREVfQ0hBTkdFRF9BQ1RJT04pOworICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKEF1ZGlvTWFuYWdlci5WSUJSQVRFX1NFVFRJTkdfQ0hBTkdFRF9BQ1RJT04pOworICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKEJsdWV0b290aEFkYXB0ZXIuQUNUSU9OX1NUQVRFX0NIQU5HRUQpOworICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKEJsdWV0b290aEhlYWRzZXQuQUNUSU9OX1NUQVRFX0NIQU5HRUQpOworICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKEJsdWV0b290aEEyZHAuQUNUSU9OX1NJTktfU1RBVEVfQ0hBTkdFRCk7CisgICAgICAgIGZpbHRlci5hZGRBY3Rpb24oQmx1ZXRvb3RoUGJhcC5QQkFQX1NUQVRFX0NIQU5HRURfQUNUSU9OKTsKKyAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihXaWZpTWFuYWdlci5XSUZJX1NUQVRFX0NIQU5HRURfQUNUSU9OKTsKKyAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihXaWZpTWFuYWdlci5TVVBQTElDQU5UX0NPTk5FQ1RJT05fQ0hBTkdFX0FDVElPTik7CisgICAgICAgIGZpbHRlci5hZGRBY3Rpb24oV2lmaU1hbmFnZXIuTkVUV09SS19TVEFURV9DSEFOR0VEX0FDVElPTik7CisgICAgICAgIGZpbHRlci5hZGRBY3Rpb24oV2lmaU1hbmFnZXIuUlNTSV9DSEFOR0VEX0FDVElPTik7CisgICAgICAgIGZpbHRlci5hZGRBY3Rpb24oTG9jYXRpb25NYW5hZ2VyLkdQU19FTkFCTEVEX0NIQU5HRV9BQ1RJT04pOworICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKExvY2F0aW9uTWFuYWdlci5HUFNfRklYX0NIQU5HRV9BQ1RJT04pOworICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKFRlbGVwaG9ueUludGVudHMuQUNUSU9OX1NJTV9TVEFURV9DSEFOR0VEKTsKKyAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihUdHlJbnRlbnQuVFRZX0VOQUJMRURfQ0hBTkdFX0FDVElPTik7CisgICAgICAgIG1Db250ZXh0LnJlZ2lzdGVyUmVjZWl2ZXIobUludGVudFJlY2VpdmVyLCBmaWx0ZXIsIG51bGwsIG1IYW5kbGVyKTsKKworICAgICAgICAvLyBsb2FkIGNvbmZpZyB0byBkZXRlcm1pbmUgaWYgdG8gZGlzdGluZ3Vpc2ggSHNwYSBkYXRhIGljb24KKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG1Ic3BhRGF0YURpc3Rpbmd1aXNoYWJsZSA9IG1Db250ZXh0LmdldFJlc291cmNlcygpLmdldEJvb2xlYW4oCisgICAgICAgICAgICAgICAgICAgIFIuYm9vbC5jb25maWdfaHNwYV9kYXRhX2Rpc3Rpbmd1aXNoYWJsZSk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBtSHNwYURhdGFEaXN0aW5ndWlzaGFibGUgPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgZmluYWwgdm9pZCB1cGRhdGVBbGFybShJbnRlbnQgaW50ZW50KSB7CisgICAgICAgIGJvb2xlYW4gYWxhcm1TZXQgPSBpbnRlbnQuZ2V0Qm9vbGVhbkV4dHJhKCJhbGFybVNldCIsIGZhbHNlKTsKKyAgICAgICAgbVNlcnZpY2Uuc2V0SWNvblZpc2liaWxpdHkoImFsYXJtX2Nsb2NrIiwgYWxhcm1TZXQpOworICAgIH0KKworICAgIHByaXZhdGUgZmluYWwgdm9pZCB1cGRhdGVTeW5jU3RhdGUoSW50ZW50IGludGVudCkgeworICAgICAgICBib29sZWFuIGlzQWN0aXZlID0gaW50ZW50LmdldEJvb2xlYW5FeHRyYSgiYWN0aXZlIiwgZmFsc2UpOworICAgICAgICBib29sZWFuIGlzRmFpbGluZyA9IGludGVudC5nZXRCb29sZWFuRXh0cmEoImZhaWxpbmciLCBmYWxzZSk7CisgICAgICAgIG1TZXJ2aWNlLnNldEljb25WaXNpYmlsaXR5KCJzeW5jX2FjdGl2ZSIsIGlzQWN0aXZlKTsKKyAgICAgICAgLy8gRG9uJ3QgZGlzcGxheSBzeW5jIGZhaWxpbmcgaWNvbjogQlVHIDEyOTc5NjMgU2V0IHN5bmMgZXJyb3IgdGltZW91dCB0byAibmV2ZXIiCisgICAgICAgIC8vbVNlcnZpY2Uuc2V0SWNvblZpc2liaWxpdHkoInN5bmNfZmFpbGluZyIsIGlzRmFpbGluZyAmJiAhaXNBY3RpdmUpOworICAgIH0KKworICAgIHByaXZhdGUgZmluYWwgdm9pZCB1cGRhdGVCYXR0ZXJ5KEludGVudCBpbnRlbnQpIHsKKyAgICAgICAgZmluYWwgaW50IGlkID0gaW50ZW50LmdldEludEV4dHJhKCJpY29uLXNtYWxsIiwgMCk7CisgICAgICAgIGludCBsZXZlbCA9IGludGVudC5nZXRJbnRFeHRyYSgibGV2ZWwiLCAwKTsKKyAgICAgICAgbVNlcnZpY2Uuc2V0SWNvbigiYmF0dGVyeSIsIGlkLCBsZXZlbCk7CisKKyAgICAgICAgYm9vbGVhbiBwbHVnZ2VkID0gaW50ZW50LmdldEludEV4dHJhKCJwbHVnZ2VkIiwgMCkgIT0gMDsKKyAgICAgICAgbGV2ZWwgPSBpbnRlbnQuZ2V0SW50RXh0cmEoImxldmVsIiwgLTEpOworICAgICAgICBpZiAoZmFsc2UpIHsKKyAgICAgICAgICAgIFNsb2cuZChUQUcsICJ1cGRhdGVCYXR0ZXJ5IGxldmVsPSIgKyBsZXZlbAorICAgICAgICAgICAgICAgICAgICArICIgcGx1Z2dlZD0iICsgcGx1Z2dlZAorICAgICAgICAgICAgICAgICAgICArICIgbUJhdHRlcnlQbHVnZ2VkPSIgKyBtQmF0dGVyeVBsdWdnZWQKKyAgICAgICAgICAgICAgICAgICAgKyAiIG1CYXR0ZXJ5TGV2ZWw9IiArIG1CYXR0ZXJ5TGV2ZWwKKyAgICAgICAgICAgICAgICAgICAgKyAiIG1CYXR0ZXJ5Rmlyc3Q9IiArIG1CYXR0ZXJ5Rmlyc3QpOworICAgICAgICB9CisKKyAgICAgICAgYm9vbGVhbiBvbGRQbHVnZ2VkID0gbUJhdHRlcnlQbHVnZ2VkOworCisgICAgICAgIG1CYXR0ZXJ5UGx1Z2dlZCA9IHBsdWdnZWQ7CisgICAgICAgIG1CYXR0ZXJ5TGV2ZWwgPSBsZXZlbDsKKworICAgICAgICBpZiAobUJhdHRlcnlGaXJzdCkgeworICAgICAgICAgICAgbUJhdHRlcnlGaXJzdCA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIC8qCisgICAgICAgICAqIE5vIGxvbmdlciBzaG93aW5nIHRoZSBiYXR0ZXJ5IHZpZXcgYmVjYXVzZSBpdCBkcmF3cyBhdHRlbnRpb24gYXdheQorICAgICAgICAgKiBmcm9tIHRoZSBVU0Igc3RvcmFnZSBub3RpZmljYXRpb24uIFdlIGNvdWxkIHN0aWxsIHNob3cgaXQgd2hlbgorICAgICAgICAgKiBjb25uZWN0ZWQgdG8gYSBicmljaywgYnV0IHRoYXQgY291bGQgbGVhZCB0byB0aGUgdXNlciBpbnRvIHRoaW5raW5nCisgICAgICAgICAqIHRoZSBkZXZpY2UgZG9lcyBub3QgY2hhcmdlIHdoZW4gcGx1Z2dlZCBpbnRvIFVTQiAoc2luY2UgaGUvc2hlIHdvdWxkCisgICAgICAgICAqIG5vdCBzZWUgdGhlIHNhbWUgYmF0dGVyeSBzY3JlZW4gb24gVVNCIGFzIGhlIHNlZXMgb24gYnJpY2spLgorICAgICAgICAgKi8KKyAgICAgICAgaWYgKGZhbHNlKSB7CisgICAgICAgICAgICBTbG9nLmQoVEFHLCAicGx1Z2dlZD0iICsgcGx1Z2dlZCArICIgb2xkUGx1Z2dlZD0iICsgb2xkUGx1Z2dlZCArICIgbGV2ZWw9IiArIGxldmVsKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBvbkJhdHRlcnlMb3coSW50ZW50IGludGVudCkgeworICAgICAgICBpZiAoU0hPV19MT1dfQkFUVEVSWV9XQVJOSU5HKSB7CisgICAgICAgICAgICBpZiAoZmFsc2UpIHsKKyAgICAgICAgICAgICAgICBTbG9nLmQoVEFHLCAibVBob25lU3RhdGU9IiArIG1QaG9uZVN0YXRlCisgICAgICAgICAgICAgICAgICAgICAgKyAiIG1Mb3dCYXR0ZXJ5RGlhbG9nPSIgKyBtTG93QmF0dGVyeURpYWxvZworICAgICAgICAgICAgICAgICAgICAgICsgIiBtQmF0dGVyeVNob3dMb3dPbkVuZENhbGw9IiArIG1CYXR0ZXJ5U2hvd0xvd09uRW5kQ2FsbCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChTSE9XX0JBVFRFUllfV0FSTklOR1NfSU5fQ0FMTCB8fCBtUGhvbmVTdGF0ZSA9PSBUZWxlcGhvbnlNYW5hZ2VyLkNBTExfU1RBVEVfSURMRSkgeworICAgICAgICAgICAgICAgIHNob3dMb3dCYXR0ZXJ5V2FybmluZygpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtQmF0dGVyeVNob3dMb3dPbkVuZENhbGwgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIG9uQmF0dGVyeU9rYXkoSW50ZW50IGludGVudCkgeworICAgICAgICBpZiAobUxvd0JhdHRlcnlEaWFsb2cgIT0gbnVsbAorICAgICAgICAgICAgICAgICYmIFNIT1dfTE9XX0JBVFRFUllfV0FSTklORykgeworICAgICAgICAgICAgbUxvd0JhdHRlcnlEaWFsb2cuZGlzbWlzcygpOworICAgICAgICAgICAgbUJhdHRlcnlTaG93TG93T25FbmRDYWxsID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgc2V0QmF0dGVyeUxldmVsKFZpZXcgcGFyZW50LCBpbnQgaWQsIGludCBoZWlnaHQsIGludCBiYWNrZ3JvdW5kLCBpbnQgbGV2ZWwpIHsKKyAgICAgICAgSW1hZ2VWaWV3IHYgPSAoSW1hZ2VWaWV3KXBhcmVudC5maW5kVmlld0J5SWQoaWQpOworICAgICAgICBMaW5lYXJMYXlvdXQuTGF5b3V0UGFyYW1zIGxwID0gKExpbmVhckxheW91dC5MYXlvdXRQYXJhbXMpdi5nZXRMYXlvdXRQYXJhbXMoKTsKKyAgICAgICAgbHAud2VpZ2h0ID0gaGVpZ2h0OworICAgICAgICBpZiAoYmFja2dyb3VuZCAhPSAwKSB7CisgICAgICAgICAgICB2LnNldEJhY2tncm91bmRSZXNvdXJjZShiYWNrZ3JvdW5kKTsKKyAgICAgICAgICAgIERyYXdhYmxlIGJrZyA9IHYuZ2V0QmFja2dyb3VuZCgpOworICAgICAgICAgICAgYmtnLnNldExldmVsKGxldmVsKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBzaG93TG93QmF0dGVyeVdhcm5pbmcoKSB7CisgICAgICAgIGNsb3NlTGFzdEJhdHRlcnlWaWV3KCk7CisKKyAgICAgICAgLy8gU2hvdyBleGFjdCBiYXR0ZXJ5IGxldmVsLgorICAgICAgICBDaGFyU2VxdWVuY2UgbGV2ZWxUZXh0ID0gbUNvbnRleHQuZ2V0U3RyaW5nKAorICAgICAgICAgICAgICAgICAgICBSLnN0cmluZy5iYXR0ZXJ5X2xvd19wZXJjZW50X2Zvcm1hdCwgbUJhdHRlcnlMZXZlbCk7CisKKyAgICAgICAgaWYgKG1CYXR0ZXJ5TGV2ZWxUZXh0VmlldyAhPSBudWxsKSB7CisgICAgICAgICAgICBtQmF0dGVyeUxldmVsVGV4dFZpZXcuc2V0VGV4dChsZXZlbFRleHQpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgVmlldyB2ID0gVmlldy5pbmZsYXRlKG1Db250ZXh0LCBSLmxheW91dC5iYXR0ZXJ5X2xvdywgbnVsbCk7CisgICAgICAgICAgICBtQmF0dGVyeUxldmVsVGV4dFZpZXc9KFRleHRWaWV3KXYuZmluZFZpZXdCeUlkKFIuaWQubGV2ZWxfcGVyY2VudCk7CisKKyAgICAgICAgICAgIG1CYXR0ZXJ5TGV2ZWxUZXh0Vmlldy5zZXRUZXh0KGxldmVsVGV4dCk7CisKKyAgICAgICAgICAgIEFsZXJ0RGlhbG9nLkJ1aWxkZXIgYiA9IG5ldyBBbGVydERpYWxvZy5CdWlsZGVyKG1Db250ZXh0KTsKKyAgICAgICAgICAgICAgICBiLnNldENhbmNlbGFibGUodHJ1ZSk7CisgICAgICAgICAgICAgICAgYi5zZXRUaXRsZShSLnN0cmluZy5iYXR0ZXJ5X2xvd190aXRsZSk7CisgICAgICAgICAgICAgICAgYi5zZXRWaWV3KHYpOworICAgICAgICAgICAgICAgIGIuc2V0SWNvbihhbmRyb2lkLlIuZHJhd2FibGUuaWNfZGlhbG9nX2FsZXJ0KTsKKyAgICAgICAgICAgICAgICBiLnNldFBvc2l0aXZlQnV0dG9uKGFuZHJvaWQuUi5zdHJpbmcub2ssIG51bGwpOworCisgICAgICAgICAgICAgICAgZmluYWwgSW50ZW50IGludGVudCA9IG5ldyBJbnRlbnQoSW50ZW50LkFDVElPTl9QT1dFUl9VU0FHRV9TVU1NQVJZKTsKKyAgICAgICAgICAgICAgICBpbnRlbnQuc2V0RmxhZ3MoSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX1RBU0sKKyAgICAgICAgICAgICAgICAgICAgICAgIHwgSW50ZW50LkZMQUdfQUNUSVZJVFlfTVVMVElQTEVfVEFTSworICAgICAgICAgICAgICAgICAgICAgICAgfCBJbnRlbnQuRkxBR19BQ1RJVklUWV9FWENMVURFX0ZST01fUkVDRU5UUworICAgICAgICAgICAgICAgICAgICAgICAgfCBJbnRlbnQuRkxBR19BQ1RJVklUWV9OT19ISVNUT1JZKTsKKyAgICAgICAgICAgICAgICBpZiAoaW50ZW50LnJlc29sdmVBY3Rpdml0eShtQ29udGV4dC5nZXRQYWNrYWdlTWFuYWdlcigpKSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIGIuc2V0TmVnYXRpdmVCdXR0b24oUi5zdHJpbmcuYmF0dGVyeV9sb3dfd2h5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBEaWFsb2dJbnRlcmZhY2UuT25DbGlja0xpc3RlbmVyKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgb25DbGljayhEaWFsb2dJbnRlcmZhY2UgZGlhbG9nLCBpbnQgd2hpY2gpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQ29udGV4dC5zdGFydEFjdGl2aXR5KGludGVudCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1Mb3dCYXR0ZXJ5RGlhbG9nICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUxvd0JhdHRlcnlEaWFsb2cuZGlzbWlzcygpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICBBbGVydERpYWxvZyBkID0gYi5jcmVhdGUoKTsKKyAgICAgICAgICAgIGQuc2V0T25EaXNtaXNzTGlzdGVuZXIobUxvd0JhdHRlcnlMaXN0ZW5lcik7CisgICAgICAgICAgICBkLmdldFdpbmRvdygpLnNldFR5cGUoV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuVFlQRV9TWVNURU1fQUxFUlQpOworICAgICAgICAgICAgZC5zaG93KCk7CisgICAgICAgICAgICBtTG93QmF0dGVyeURpYWxvZyA9IGQ7CisgICAgICAgIH0KKworICAgICAgICBmaW5hbCBDb250ZW50UmVzb2x2ZXIgY3IgPSBtQ29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKTsKKyAgICAgICAgaWYgKFNldHRpbmdzLlN5c3RlbS5nZXRJbnQoY3IsCisgICAgICAgICAgICAgICAgU2V0dGluZ3MuU3lzdGVtLlBPV0VSX1NPVU5EU19FTkFCTEVELCAxKSA9PSAxKQorICAgICAgICB7CisgICAgICAgICAgICBmaW5hbCBTdHJpbmcgc291bmRQYXRoID0gU2V0dGluZ3MuU3lzdGVtLmdldFN0cmluZyhjciwKKyAgICAgICAgICAgICAgICBTZXR0aW5ncy5TeXN0ZW0uTE9XX0JBVFRFUllfU09VTkQpOworICAgICAgICAgICAgaWYgKHNvdW5kUGF0aCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgZmluYWwgVXJpIHNvdW5kVXJpID0gVXJpLnBhcnNlKCJmaWxlOi8vIiArIHNvdW5kUGF0aCk7CisgICAgICAgICAgICAgICAgaWYgKHNvdW5kVXJpICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgUmluZ3RvbmUgc2Z4ID0gUmluZ3RvbmVNYW5hZ2VyLmdldFJpbmd0b25lKG1Db250ZXh0LCBzb3VuZFVyaSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChzZnggIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc2Z4LnNldFN0cmVhbVR5cGUoQXVkaW9NYW5hZ2VyLlNUUkVBTV9TWVNURU0pOworICAgICAgICAgICAgICAgICAgICAgICAgc2Z4LnBsYXkoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgZmluYWwgdm9pZCB1cGRhdGVDYWxsU3RhdGUoaW50IHN0YXRlKSB7CisgICAgICAgIG1QaG9uZVN0YXRlID0gc3RhdGU7CisgICAgICAgIGlmIChmYWxzZSkgeworICAgICAgICAgICAgU2xvZy5kKFRBRywgIm1QaG9uZVN0YXRlPSIgKyBtUGhvbmVTdGF0ZQorICAgICAgICAgICAgICAgICAgICArICIgbUxvd0JhdHRlcnlEaWFsb2c9IiArIG1Mb3dCYXR0ZXJ5RGlhbG9nCisgICAgICAgICAgICAgICAgICAgICsgIiBtQmF0dGVyeVNob3dMb3dPbkVuZENhbGw9IiArIG1CYXR0ZXJ5U2hvd0xvd09uRW5kQ2FsbCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1QaG9uZVN0YXRlID09IFRlbGVwaG9ueU1hbmFnZXIuQ0FMTF9TVEFURV9JRExFKSB7CisgICAgICAgICAgICBpZiAobUJhdHRlcnlTaG93TG93T25FbmRDYWxsKSB7CisgICAgICAgICAgICAgICAgaWYgKCFtQmF0dGVyeVBsdWdnZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgc2hvd0xvd0JhdHRlcnlXYXJuaW5nKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1CYXR0ZXJ5U2hvd0xvd09uRW5kQ2FsbCA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKG1Mb3dCYXR0ZXJ5RGlhbG9nICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBtTG93QmF0dGVyeURpYWxvZy5kaXNtaXNzKCk7CisgICAgICAgICAgICAgICAgbUJhdHRlcnlTaG93TG93T25FbmRDYWxsID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgRGlhbG9nSW50ZXJmYWNlLk9uRGlzbWlzc0xpc3RlbmVyIG1Mb3dCYXR0ZXJ5TGlzdGVuZXIKKyAgICAgICAgICAgID0gbmV3IERpYWxvZ0ludGVyZmFjZS5PbkRpc21pc3NMaXN0ZW5lcigpIHsKKyAgICAgICAgcHVibGljIHZvaWQgb25EaXNtaXNzKERpYWxvZ0ludGVyZmFjZSBkaWFsb2cpIHsKKyAgICAgICAgICAgIG1Mb3dCYXR0ZXJ5RGlhbG9nID0gbnVsbDsKKyAgICAgICAgICAgIG1CYXR0ZXJ5TGV2ZWxUZXh0VmlldyA9IG51bGw7CisgICAgICAgIH0KKyAgICB9OworCisgICAgcHJpdmF0ZSB2b2lkIHNjaGVkdWxlQ2xvc2VCYXR0ZXJ5VmlldygpIHsKKyAgICAgICAgTWVzc2FnZSBtID0gbUhhbmRsZXIub2J0YWluTWVzc2FnZShFVkVOVF9CQVRURVJZX0NMT1NFKTsKKyAgICAgICAgbS5hcmcxID0gKCsrbUJhdHRlcnlWaWV3U2VxdWVuY2UpOworICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZURlbGF5ZWQobSwgMzAwMCk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGNsb3NlTGFzdEJhdHRlcnlWaWV3KCkgeworICAgICAgICBpZiAobUJhdHRlcnlWaWV3ICE9IG51bGwpIHsKKyAgICAgICAgICAgIC8vbUJhdHRlcnlWaWV3LmRlYnVnKCk7CisgICAgICAgICAgICBXaW5kb3dNYW5hZ2VySW1wbC5nZXREZWZhdWx0KCkucmVtb3ZlVmlldyhtQmF0dGVyeVZpZXcpOworICAgICAgICAgICAgbUJhdHRlcnlWaWV3ID0gbnVsbDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgUGhvbmVTdGF0ZUxpc3RlbmVyIG1QaG9uZVN0YXRlTGlzdGVuZXIgPSBuZXcgUGhvbmVTdGF0ZUxpc3RlbmVyKCkgeworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHZvaWQgb25TaWduYWxTdHJlbmd0aHNDaGFuZ2VkKFNpZ25hbFN0cmVuZ3RoIHNpZ25hbFN0cmVuZ3RoKSB7CisgICAgICAgICAgICBtU2lnbmFsU3RyZW5ndGggPSBzaWduYWxTdHJlbmd0aDsKKyAgICAgICAgICAgIHVwZGF0ZVNpZ25hbFN0cmVuZ3RoKCk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHZvaWQgb25TZXJ2aWNlU3RhdGVDaGFuZ2VkKFNlcnZpY2VTdGF0ZSBzdGF0ZSkgeworICAgICAgICAgICAgbVNlcnZpY2VTdGF0ZSA9IHN0YXRlOworICAgICAgICAgICAgdXBkYXRlU2lnbmFsU3RyZW5ndGgoKTsKKyAgICAgICAgICAgIHVwZGF0ZUNkbWFSb2FtaW5nSWNvbihzdGF0ZSk7CisgICAgICAgICAgICB1cGRhdGVEYXRhSWNvbigpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyB2b2lkIG9uQ2FsbFN0YXRlQ2hhbmdlZChpbnQgc3RhdGUsIFN0cmluZyBpbmNvbWluZ051bWJlcikgeworICAgICAgICAgICAgdXBkYXRlQ2FsbFN0YXRlKHN0YXRlKTsKKyAgICAgICAgICAgIC8vIEluIGNkbWEsIGlmIGEgdm9pY2UgY2FsbCBpcyBtYWRlLCBSU1NJIHNob3VsZCBzd2l0Y2ggdG8gMXguCisgICAgICAgICAgICBpZiAoaXNDZG1hKCkpIHsKKyAgICAgICAgICAgICAgICB1cGRhdGVTaWduYWxTdHJlbmd0aCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyB2b2lkIG9uRGF0YUNvbm5lY3Rpb25TdGF0ZUNoYW5nZWQoaW50IHN0YXRlLCBpbnQgbmV0d29ya1R5cGUpIHsKKyAgICAgICAgICAgIG1EYXRhU3RhdGUgPSBzdGF0ZTsKKyAgICAgICAgICAgIHVwZGF0ZURhdGFOZXRUeXBlKG5ldHdvcmtUeXBlKTsKKyAgICAgICAgICAgIHVwZGF0ZURhdGFJY29uKCk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHZvaWQgb25EYXRhQWN0aXZpdHkoaW50IGRpcmVjdGlvbikgeworICAgICAgICAgICAgbURhdGFBY3Rpdml0eSA9IGRpcmVjdGlvbjsKKyAgICAgICAgICAgIHVwZGF0ZURhdGFJY29uKCk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgcHJpdmF0ZSBmaW5hbCB2b2lkIHVwZGF0ZVNpbVN0YXRlKEludGVudCBpbnRlbnQpIHsKKyAgICAgICAgU3RyaW5nIHN0YXRlRXh0cmEgPSBpbnRlbnQuZ2V0U3RyaW5nRXh0cmEoSWNjQ2FyZC5JTlRFTlRfS0VZX0lDQ19TVEFURSk7CisgICAgICAgIGlmIChJY2NDYXJkLklOVEVOVF9WQUxVRV9JQ0NfQUJTRU5ULmVxdWFscyhzdGF0ZUV4dHJhKSkgeworICAgICAgICAgICAgbVNpbVN0YXRlID0gSWNjQ2FyZC5TdGF0ZS5BQlNFTlQ7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoSWNjQ2FyZC5JTlRFTlRfVkFMVUVfSUNDX1JFQURZLmVxdWFscyhzdGF0ZUV4dHJhKSkgeworICAgICAgICAgICAgbVNpbVN0YXRlID0gSWNjQ2FyZC5TdGF0ZS5SRUFEWTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChJY2NDYXJkLklOVEVOVF9WQUxVRV9JQ0NfTE9DS0VELmVxdWFscyhzdGF0ZUV4dHJhKSkgeworICAgICAgICAgICAgZmluYWwgU3RyaW5nIGxvY2tlZFJlYXNvbiA9IGludGVudC5nZXRTdHJpbmdFeHRyYShJY2NDYXJkLklOVEVOVF9LRVlfTE9DS0VEX1JFQVNPTik7CisgICAgICAgICAgICBpZiAoSWNjQ2FyZC5JTlRFTlRfVkFMVUVfTE9DS0VEX09OX1BJTi5lcXVhbHMobG9ja2VkUmVhc29uKSkgeworICAgICAgICAgICAgICAgIG1TaW1TdGF0ZSA9IEljY0NhcmQuU3RhdGUuUElOX1JFUVVJUkVEOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoSWNjQ2FyZC5JTlRFTlRfVkFMVUVfTE9DS0VEX09OX1BVSy5lcXVhbHMobG9ja2VkUmVhc29uKSkgeworICAgICAgICAgICAgICAgIG1TaW1TdGF0ZSA9IEljY0NhcmQuU3RhdGUuUFVLX1JFUVVJUkVEOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgbVNpbVN0YXRlID0gSWNjQ2FyZC5TdGF0ZS5ORVRXT1JLX0xPQ0tFRDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1TaW1TdGF0ZSA9IEljY0NhcmQuU3RhdGUuVU5LTk9XTjsKKyAgICAgICAgfQorICAgICAgICB1cGRhdGVEYXRhSWNvbigpOworICAgIH0KKworICAgIHByaXZhdGUgYm9vbGVhbiBpc0NkbWEoKSB7CisgICAgICAgIHJldHVybiAobVNpZ25hbFN0cmVuZ3RoICE9IG51bGwpICYmICFtU2lnbmFsU3RyZW5ndGguaXNHc20oKTsKKyAgICB9CisKKyAgICBwcml2YXRlIGJvb2xlYW4gaXNFdmRvKCkgeworICAgICAgICByZXR1cm4gKCAobVNlcnZpY2VTdGF0ZSAhPSBudWxsKQorICAgICAgICAgICAgICAgICAmJiAoKG1TZXJ2aWNlU3RhdGUuZ2V0UmFkaW9UZWNobm9sb2d5KCkKKyAgICAgICAgICAgICAgICAgICAgICAgID09IFNlcnZpY2VTdGF0ZS5SQURJT19URUNITk9MT0dZX0VWRE9fMCkKKyAgICAgICAgICAgICAgICAgICAgIHx8IChtU2VydmljZVN0YXRlLmdldFJhZGlvVGVjaG5vbG9neSgpCisgICAgICAgICAgICAgICAgICAgICAgICA9PSBTZXJ2aWNlU3RhdGUuUkFESU9fVEVDSE5PTE9HWV9FVkRPX0EpCisgICAgICAgICAgICAgICAgICAgICB8fCAobVNlcnZpY2VTdGF0ZS5nZXRSYWRpb1RlY2hub2xvZ3koKQorICAgICAgICAgICAgICAgICAgICAgICAgPT0gU2VydmljZVN0YXRlLlJBRElPX1RFQ0hOT0xPR1lfRVZET19CKSkpOworICAgIH0KKworICAgIHByaXZhdGUgYm9vbGVhbiBoYXNTZXJ2aWNlKCkgeworICAgICAgICBpZiAobVNlcnZpY2VTdGF0ZSAhPSBudWxsKSB7CisgICAgICAgICAgICBzd2l0Y2ggKG1TZXJ2aWNlU3RhdGUuZ2V0U3RhdGUoKSkgeworICAgICAgICAgICAgICAgIGNhc2UgU2VydmljZVN0YXRlLlNUQVRFX09VVF9PRl9TRVJWSUNFOgorICAgICAgICAgICAgICAgIGNhc2UgU2VydmljZVN0YXRlLlNUQVRFX1BPV0VSX09GRjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBmaW5hbCB2b2lkIHVwZGF0ZVNpZ25hbFN0cmVuZ3RoKCkgeworICAgICAgICBpbnQgaWNvbkxldmVsID0gLTE7CisgICAgICAgIGludFtdIGljb25MaXN0OworCisgICAgICAgIC8vIERpc3BsYXkgc2lnbmFsIHN0cmVuZ3RoIHdoaWxlIGluICJlbWVyZ2VuY3kgY2FsbHMgb25seSIgbW9kZQorICAgICAgICBpZiAoIWhhc1NlcnZpY2UoKSAmJiAhbVNlcnZpY2VTdGF0ZS5pc0VtZXJnZW5jeU9ubHkoKSkgeworICAgICAgICAgICAgLy9TbG9nLmQoVEFHLCAidXBkYXRlU2lnbmFsU3RyZW5ndGg6IG5vIHNlcnZpY2UiKTsKKyAgICAgICAgICAgIGlmIChTZXR0aW5ncy5TeXN0ZW0uZ2V0SW50KG1Db250ZXh0LmdldENvbnRlbnRSZXNvbHZlcigpLAorICAgICAgICAgICAgICAgICAgICBTZXR0aW5ncy5TeXN0ZW0uQUlSUExBTkVfTU9ERV9PTiwgMCkgPT0gMSkgeworICAgICAgICAgICAgICAgIG1QaG9uZVNpZ25hbEljb25JZCA9IFIuZHJhd2FibGUuc3RhdF9zeXNfc2lnbmFsX2ZsaWdodG1vZGU7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1QaG9uZVNpZ25hbEljb25JZCA9IFIuZHJhd2FibGUuc3RhdF9zeXNfc2lnbmFsX251bGw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtU2VydmljZS5zZXRJY29uKCJwaG9uZV9zaWduYWwiLCBtUGhvbmVTaWduYWxJY29uSWQsIDApOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFpc0NkbWEoKSkgeworICAgICAgICAgICAgaW50IGFzdSA9IG1TaWduYWxTdHJlbmd0aC5nZXRHc21TaWduYWxTdHJlbmd0aCgpOworCisgICAgICAgICAgICAvLyBBU1UgcmFuZ2VzIGZyb20gMCB0byAzMSAtIFRTIDI3LjAwNyBTZWMgOC41CisgICAgICAgICAgICAvLyBhc3UgPSAwICgtMTEzZEIgb3IgbGVzcykgaXMgdmVyeSB3ZWFrCisgICAgICAgICAgICAvLyBzaWduYWwsIGl0cyBiZXR0ZXIgdG8gc2hvdyAwIGJhcnMgdG8gdGhlIHVzZXIgaW4gc3VjaCBjYXNlcy4KKyAgICAgICAgICAgIC8vIGFzdSA9IDk5IGlzIGEgc3BlY2lhbCBjYXNlLCB3aGVyZSB0aGUgc2lnbmFsIHN0cmVuZ3RoIGlzIHVua25vd24uCisgICAgICAgICAgICBpZiAoYXN1IDw9IDIgfHwgYXN1ID09IDk5KSBpY29uTGV2ZWwgPSAwOworICAgICAgICAgICAgZWxzZSBpZiAoYXN1ID49IDEyKSBpY29uTGV2ZWwgPSA0OworICAgICAgICAgICAgZWxzZSBpZiAoYXN1ID49IDgpICBpY29uTGV2ZWwgPSAzOworICAgICAgICAgICAgZWxzZSBpZiAoYXN1ID49IDUpICBpY29uTGV2ZWwgPSAyOworICAgICAgICAgICAgZWxzZSBpY29uTGV2ZWwgPSAxOworCisgICAgICAgICAgICAvLyBUaG91Z2ggbVBob25lIGlzIGEgTWFuYWdlciwgdGhpcyBjYWxsIGlzIG5vdCBhbiBJUEMKKyAgICAgICAgICAgIGlmIChtUGhvbmUuaXNOZXR3b3JrUm9hbWluZygpKSB7CisgICAgICAgICAgICAgICAgaWNvbkxpc3QgPSBzU2lnbmFsSW1hZ2VzX3I7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGljb25MaXN0ID0gc1NpZ25hbEltYWdlczsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGljb25MaXN0ID0gdGhpcy5zU2lnbmFsSW1hZ2VzOworCisgICAgICAgICAgICAvLyBJZiAzRyhFVikgYW5kIDF4IG5ldHdvcmsgYXJlIGF2YWlsYWJsZSB0aGFuIDNHIHNob3VsZCBiZQorICAgICAgICAgICAgLy8gZGlzcGxheWVkLCBkaXNwbGF5ZWQgUlNTSSBzaG91bGQgYmUgZnJvbSB0aGUgRVYgc2lkZS4KKyAgICAgICAgICAgIC8vIElmIGEgdm9pY2UgY2FsbCBpcyBtYWRlIHRoZW4gUlNTSSBzaG91bGQgc3dpdGNoIHRvIDF4LgorICAgICAgICAgICAgaWYgKChtUGhvbmVTdGF0ZSA9PSBUZWxlcGhvbnlNYW5hZ2VyLkNBTExfU1RBVEVfSURMRSkgJiYgaXNFdmRvKCkpeworICAgICAgICAgICAgICAgIGljb25MZXZlbCA9IGdldEV2ZG9MZXZlbCgpOworICAgICAgICAgICAgICAgIGlmIChmYWxzZSkgeworICAgICAgICAgICAgICAgICAgICBTbG9nLmQoVEFHLCAidXNlIEV2ZG8gbGV2ZWw9IiArIGljb25MZXZlbCArICIgdG8gcmVwbGFjZSBDZG1hIExldmVsPSIgKyBnZXRDZG1hTGV2ZWwoKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpY29uTGV2ZWwgPSBnZXRDZG1hTGV2ZWwoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBtUGhvbmVTaWduYWxJY29uSWQgPSBpY29uTGlzdFtpY29uTGV2ZWxdOworICAgICAgICBtU2VydmljZS5zZXRJY29uKCJwaG9uZV9zaWduYWwiLCBtUGhvbmVTaWduYWxJY29uSWQsIDApOworICAgIH0KKworICAgIHByaXZhdGUgaW50IGdldENkbWFMZXZlbCgpIHsKKyAgICAgICAgZmluYWwgaW50IGNkbWFEYm0gPSBtU2lnbmFsU3RyZW5ndGguZ2V0Q2RtYURibSgpOworICAgICAgICBmaW5hbCBpbnQgY2RtYUVjaW8gPSBtU2lnbmFsU3RyZW5ndGguZ2V0Q2RtYUVjaW8oKTsKKyAgICAgICAgaW50IGxldmVsRGJtID0gMDsKKyAgICAgICAgaW50IGxldmVsRWNpbyA9IDA7CisKKyAgICAgICAgaWYgKGNkbWFEYm0gPj0gLTc1KSBsZXZlbERibSA9IDQ7CisgICAgICAgIGVsc2UgaWYgKGNkbWFEYm0gPj0gLTg1KSBsZXZlbERibSA9IDM7CisgICAgICAgIGVsc2UgaWYgKGNkbWFEYm0gPj0gLTk1KSBsZXZlbERibSA9IDI7CisgICAgICAgIGVsc2UgaWYgKGNkbWFEYm0gPj0gLTEwMCkgbGV2ZWxEYm0gPSAxOworICAgICAgICBlbHNlIGxldmVsRGJtID0gMDsKKworICAgICAgICAvLyBFYy9JbyBhcmUgaW4gZEIqMTAKKyAgICAgICAgaWYgKGNkbWFFY2lvID49IC05MCkgbGV2ZWxFY2lvID0gNDsKKyAgICAgICAgZWxzZSBpZiAoY2RtYUVjaW8gPj0gLTExMCkgbGV2ZWxFY2lvID0gMzsKKyAgICAgICAgZWxzZSBpZiAoY2RtYUVjaW8gPj0gLTEzMCkgbGV2ZWxFY2lvID0gMjsKKyAgICAgICAgZWxzZSBpZiAoY2RtYUVjaW8gPj0gLTE1MCkgbGV2ZWxFY2lvID0gMTsKKyAgICAgICAgZWxzZSBsZXZlbEVjaW8gPSAwOworCisgICAgICAgIHJldHVybiAobGV2ZWxEYm0gPCBsZXZlbEVjaW8pID8gbGV2ZWxEYm0gOiBsZXZlbEVjaW87CisgICAgfQorCisgICAgcHJpdmF0ZSBpbnQgZ2V0RXZkb0xldmVsKCkgeworICAgICAgICBpbnQgZXZkb0RibSA9IG1TaWduYWxTdHJlbmd0aC5nZXRFdmRvRGJtKCk7CisgICAgICAgIGludCBldmRvU25yID0gbVNpZ25hbFN0cmVuZ3RoLmdldEV2ZG9TbnIoKTsKKyAgICAgICAgaW50IGxldmVsRXZkb0RibSA9IDA7CisgICAgICAgIGludCBsZXZlbEV2ZG9TbnIgPSAwOworCisgICAgICAgIGlmIChldmRvRGJtID49IC02NSkgbGV2ZWxFdmRvRGJtID0gNDsKKyAgICAgICAgZWxzZSBpZiAoZXZkb0RibSA+PSAtNzUpIGxldmVsRXZkb0RibSA9IDM7CisgICAgICAgIGVsc2UgaWYgKGV2ZG9EYm0gPj0gLTkwKSBsZXZlbEV2ZG9EYm0gPSAyOworICAgICAgICBlbHNlIGlmIChldmRvRGJtID49IC0xMDUpIGxldmVsRXZkb0RibSA9IDE7CisgICAgICAgIGVsc2UgbGV2ZWxFdmRvRGJtID0gMDsKKworICAgICAgICBpZiAoZXZkb1NuciA+PSA3KSBsZXZlbEV2ZG9TbnIgPSA0OworICAgICAgICBlbHNlIGlmIChldmRvU25yID49IDUpIGxldmVsRXZkb1NuciA9IDM7CisgICAgICAgIGVsc2UgaWYgKGV2ZG9TbnIgPj0gMykgbGV2ZWxFdmRvU25yID0gMjsKKyAgICAgICAgZWxzZSBpZiAoZXZkb1NuciA+PSAxKSBsZXZlbEV2ZG9TbnIgPSAxOworICAgICAgICBlbHNlIGxldmVsRXZkb1NuciA9IDA7CisKKyAgICAgICAgcmV0dXJuIChsZXZlbEV2ZG9EYm0gPCBsZXZlbEV2ZG9TbnIpID8gbGV2ZWxFdmRvRGJtIDogbGV2ZWxFdmRvU25yOworICAgIH0KKworICAgIHByaXZhdGUgZmluYWwgdm9pZCB1cGRhdGVEYXRhTmV0VHlwZShpbnQgbmV0KSB7CisgICAgICAgIHN3aXRjaCAobmV0KSB7CisgICAgICAgIGNhc2UgVGVsZXBob255TWFuYWdlci5ORVRXT1JLX1RZUEVfRURHRToKKyAgICAgICAgICAgIG1EYXRhSWNvbkxpc3QgPSBzRGF0YU5ldFR5cGVfZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRlbGVwaG9ueU1hbmFnZXIuTkVUV09SS19UWVBFX1VNVFM6CisgICAgICAgICAgICBtRGF0YUljb25MaXN0ID0gc0RhdGFOZXRUeXBlXzNnOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVGVsZXBob255TWFuYWdlci5ORVRXT1JLX1RZUEVfSFNEUEE6CisgICAgICAgIGNhc2UgVGVsZXBob255TWFuYWdlci5ORVRXT1JLX1RZUEVfSFNVUEE6CisgICAgICAgIGNhc2UgVGVsZXBob255TWFuYWdlci5ORVRXT1JLX1RZUEVfSFNQQToKKyAgICAgICAgICAgIGlmIChtSHNwYURhdGFEaXN0aW5ndWlzaGFibGUpIHsKKyAgICAgICAgICAgICAgICBtRGF0YUljb25MaXN0ID0gc0RhdGFOZXRUeXBlX2g7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1EYXRhSWNvbkxpc3QgPSBzRGF0YU5ldFR5cGVfM2c7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUZWxlcGhvbnlNYW5hZ2VyLk5FVFdPUktfVFlQRV9DRE1BOgorICAgICAgICAgICAgLy8gZGlzcGxheSAxeFJUVCBmb3IgSVM5NUEvQgorICAgICAgICAgICAgbURhdGFJY29uTGlzdCA9IHRoaXMuc0RhdGFOZXRUeXBlXzF4OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgVGVsZXBob255TWFuYWdlci5ORVRXT1JLX1RZUEVfMXhSVFQ6CisgICAgICAgICAgICBtRGF0YUljb25MaXN0ID0gdGhpcy5zRGF0YU5ldFR5cGVfMXg7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUZWxlcGhvbnlNYW5hZ2VyLk5FVFdPUktfVFlQRV9FVkRPXzA6IC8vZmFsbCB0aHJvdWdoCisgICAgICAgIGNhc2UgVGVsZXBob255TWFuYWdlci5ORVRXT1JLX1RZUEVfRVZET19BOgorICAgICAgICBjYXNlIFRlbGVwaG9ueU1hbmFnZXIuTkVUV09SS19UWVBFX0VWRE9fQjoKKyAgICAgICAgICAgIG1EYXRhSWNvbkxpc3QgPSBzRGF0YU5ldFR5cGVfM2c7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIG1EYXRhSWNvbkxpc3QgPSBzRGF0YU5ldFR5cGVfZzsKKyAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIGZpbmFsIHZvaWQgdXBkYXRlRGF0YUljb24oKSB7CisgICAgICAgIGludCBpY29uSWQ7CisgICAgICAgIGJvb2xlYW4gdmlzaWJsZSA9IHRydWU7CisKKyAgICAgICAgaWYgKCFpc0NkbWEoKSkgeworICAgICAgICAgICAgLy8gR1NNIGNhc2UsIHdlIGhhdmUgdG8gY2hlY2sgYWxzbyB0aGUgc2ltIHN0YXRlCisgICAgICAgICAgICBpZiAobVNpbVN0YXRlID09IEljY0NhcmQuU3RhdGUuUkVBRFkgfHwgbVNpbVN0YXRlID09IEljY0NhcmQuU3RhdGUuVU5LTk9XTikgeworICAgICAgICAgICAgICAgIGlmIChoYXNTZXJ2aWNlKCkgJiYgbURhdGFTdGF0ZSA9PSBUZWxlcGhvbnlNYW5hZ2VyLkRBVEFfQ09OTkVDVEVEKSB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobURhdGFBY3Rpdml0eSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBUZWxlcGhvbnlNYW5hZ2VyLkRBVEFfQUNUSVZJVFlfSU46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbklkID0gbURhdGFJY29uTGlzdFsxXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgVGVsZXBob255TWFuYWdlci5EQVRBX0FDVElWSVRZX09VVDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uSWQgPSBtRGF0YUljb25MaXN0WzJdOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBUZWxlcGhvbnlNYW5hZ2VyLkRBVEFfQUNUSVZJVFlfSU5PVVQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbklkID0gbURhdGFJY29uTGlzdFszXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbklkID0gbURhdGFJY29uTGlzdFswXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBtU2VydmljZS5zZXRJY29uKCJkYXRhX2Nvbm5lY3Rpb24iLCBpY29uSWQsIDApOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHZpc2libGUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGljb25JZCA9IFIuZHJhd2FibGUuc3RhdF9zeXNfbm9fc2ltOworICAgICAgICAgICAgICAgIG1TZXJ2aWNlLnNldEljb24oImRhdGFfY29ubmVjdGlvbiIsIGljb25JZCwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBDRE1BIGNhc2UsIG1EYXRhQWN0aXZpdHkgY2FuIGJlIGFsc28gREFUQV9BQ1RJVklUWV9ET1JNQU5UCisgICAgICAgICAgICBpZiAoaGFzU2VydmljZSgpICYmIG1EYXRhU3RhdGUgPT0gVGVsZXBob255TWFuYWdlci5EQVRBX0NPTk5FQ1RFRCkgeworICAgICAgICAgICAgICAgIHN3aXRjaCAobURhdGFBY3Rpdml0eSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIFRlbGVwaG9ueU1hbmFnZXIuREFUQV9BQ1RJVklUWV9JTjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGljb25JZCA9IG1EYXRhSWNvbkxpc3RbMV07CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBUZWxlcGhvbnlNYW5hZ2VyLkRBVEFfQUNUSVZJVFlfT1VUOgorICAgICAgICAgICAgICAgICAgICAgICAgaWNvbklkID0gbURhdGFJY29uTGlzdFsyXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIFRlbGVwaG9ueU1hbmFnZXIuREFUQV9BQ1RJVklUWV9JTk9VVDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGljb25JZCA9IG1EYXRhSWNvbkxpc3RbM107CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBUZWxlcGhvbnlNYW5hZ2VyLkRBVEFfQUNUSVZJVFlfRE9STUFOVDoKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGljb25JZCA9IG1EYXRhSWNvbkxpc3RbMF07CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbVNlcnZpY2Uuc2V0SWNvbigiZGF0YV9jb25uZWN0aW9uIiwgaWNvbklkLCAwKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdmlzaWJsZSA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgbG9uZyBpZGVudCA9IEJpbmRlci5jbGVhckNhbGxpbmdJZGVudGl0eSgpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgbUJhdHRlcnlTdGF0cy5ub3RlUGhvbmVEYXRhQ29ubmVjdGlvblN0YXRlKG1QaG9uZS5nZXROZXR3b3JrVHlwZSgpLCB2aXNpYmxlKTsKKyAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgIEJpbmRlci5yZXN0b3JlQ2FsbGluZ0lkZW50aXR5KGlkZW50KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtRGF0YUljb25WaXNpYmxlICE9IHZpc2libGUpIHsKKyAgICAgICAgICAgIG1TZXJ2aWNlLnNldEljb25WaXNpYmlsaXR5KCJkYXRhX2Nvbm5lY3Rpb24iLCB2aXNpYmxlKTsKKyAgICAgICAgICAgIG1EYXRhSWNvblZpc2libGUgPSB2aXNpYmxlOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBmaW5hbCB2b2lkIHVwZGF0ZVZvbHVtZSgpIHsKKyAgICAgICAgQXVkaW9NYW5hZ2VyIGF1ZGlvTWFuYWdlciA9IChBdWRpb01hbmFnZXIpIG1Db250ZXh0LmdldFN5c3RlbVNlcnZpY2UoQ29udGV4dC5BVURJT19TRVJWSUNFKTsKKyAgICAgICAgZmluYWwgaW50IHJpbmdlck1vZGUgPSBhdWRpb01hbmFnZXIuZ2V0UmluZ2VyTW9kZSgpOworICAgICAgICBmaW5hbCBib29sZWFuIHZpc2libGUgPSByaW5nZXJNb2RlID09IEF1ZGlvTWFuYWdlci5SSU5HRVJfTU9ERV9TSUxFTlQgfHwKKyAgICAgICAgICAgICAgICByaW5nZXJNb2RlID09IEF1ZGlvTWFuYWdlci5SSU5HRVJfTU9ERV9WSUJSQVRFOworICAgICAgICBmaW5hbCBpbnQgaWNvbklkID0gYXVkaW9NYW5hZ2VyLnNob3VsZFZpYnJhdGUoQXVkaW9NYW5hZ2VyLlZJQlJBVEVfVFlQRV9SSU5HRVIpCisgICAgICAgICAgICAgICAgPyBSLmRyYXdhYmxlLnN0YXRfc3lzX3Jpbmdlcl92aWJyYXRlCisgICAgICAgICAgICAgICAgOiBSLmRyYXdhYmxlLnN0YXRfc3lzX3Jpbmdlcl9zaWxlbnQ7CisKKyAgICAgICAgaWYgKHZpc2libGUpIHsKKyAgICAgICAgICAgIG1TZXJ2aWNlLnNldEljb24oInZvbHVtZSIsIGljb25JZCwgMCk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZpc2libGUgIT0gbVZvbHVtZVZpc2libGUpIHsKKyAgICAgICAgICAgIG1TZXJ2aWNlLnNldEljb25WaXNpYmlsaXR5KCJ2b2x1bWUiLCB2aXNpYmxlKTsKKyAgICAgICAgICAgIG1Wb2x1bWVWaXNpYmxlID0gdmlzaWJsZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgZmluYWwgdm9pZCB1cGRhdGVCbHVldG9vdGgoSW50ZW50IGludGVudCkgeworICAgICAgICBpbnQgaWNvbklkID0gUi5kcmF3YWJsZS5zdGF0X3N5c19kYXRhX2JsdWV0b290aDsKKyAgICAgICAgU3RyaW5nIGFjdGlvbiA9IGludGVudC5nZXRBY3Rpb24oKTsKKyAgICAgICAgaWYgKGFjdGlvbi5lcXVhbHMoQmx1ZXRvb3RoQWRhcHRlci5BQ1RJT05fU1RBVEVfQ0hBTkdFRCkpIHsKKyAgICAgICAgICAgIGludCBzdGF0ZSA9IGludGVudC5nZXRJbnRFeHRyYShCbHVldG9vdGhBZGFwdGVyLkVYVFJBX1NUQVRFLCBCbHVldG9vdGhBZGFwdGVyLkVSUk9SKTsKKyAgICAgICAgICAgIG1CbHVldG9vdGhFbmFibGVkID0gc3RhdGUgPT0gQmx1ZXRvb3RoQWRhcHRlci5TVEFURV9PTjsKKyAgICAgICAgfSBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKEJsdWV0b290aEhlYWRzZXQuQUNUSU9OX1NUQVRFX0NIQU5HRUQpKSB7CisgICAgICAgICAgICBtQmx1ZXRvb3RoSGVhZHNldFN0YXRlID0gaW50ZW50LmdldEludEV4dHJhKEJsdWV0b290aEhlYWRzZXQuRVhUUkFfU1RBVEUsCisgICAgICAgICAgICAgICAgICAgIEJsdWV0b290aEhlYWRzZXQuU1RBVEVfRVJST1IpOworICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbi5lcXVhbHMoQmx1ZXRvb3RoQTJkcC5BQ1RJT05fU0lOS19TVEFURV9DSEFOR0VEKSkgeworICAgICAgICAgICAgQmx1ZXRvb3RoQTJkcCBhMmRwID0gbmV3IEJsdWV0b290aEEyZHAobUNvbnRleHQpOworICAgICAgICAgICAgaWYgKGEyZHAuZ2V0Q29ubmVjdGVkU2lua3MoKS5zaXplKCkgIT0gMCkgeworICAgICAgICAgICAgICAgIG1CbHVldG9vdGhBMmRwQ29ubmVjdGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbUJsdWV0b290aEEyZHBDb25uZWN0ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKEJsdWV0b290aFBiYXAuUEJBUF9TVEFURV9DSEFOR0VEX0FDVElPTikpIHsKKyAgICAgICAgICAgIG1CbHVldG9vdGhQYmFwU3RhdGUgPSBpbnRlbnQuZ2V0SW50RXh0cmEoQmx1ZXRvb3RoUGJhcC5QQkFQX1NUQVRFLAorICAgICAgICAgICAgICAgICAgICBCbHVldG9vdGhQYmFwLlNUQVRFX0RJU0NPTk5FQ1RFRCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAobUJsdWV0b290aEhlYWRzZXRTdGF0ZSA9PSBCbHVldG9vdGhIZWFkc2V0LlNUQVRFX0NPTk5FQ1RFRCB8fCBtQmx1ZXRvb3RoQTJkcENvbm5lY3RlZCB8fAorICAgICAgICAgICAgICAgIG1CbHVldG9vdGhQYmFwU3RhdGUgPT0gQmx1ZXRvb3RoUGJhcC5TVEFURV9DT05ORUNURUQpIHsKKyAgICAgICAgICAgIGljb25JZCA9IFIuZHJhd2FibGUuc3RhdF9zeXNfZGF0YV9ibHVldG9vdGhfY29ubmVjdGVkOworICAgICAgICB9CisKKyAgICAgICAgbVNlcnZpY2Uuc2V0SWNvbigiYmx1ZXRvb3RoIiwgaWNvbklkLCAwKTsKKyAgICAgICAgbVNlcnZpY2Uuc2V0SWNvblZpc2liaWxpdHkoImJsdWV0b290aCIsIG1CbHVldG9vdGhFbmFibGVkKTsKKyAgICB9CisKKyAgICBwcml2YXRlIGZpbmFsIHZvaWQgdXBkYXRlV2lmaShJbnRlbnQgaW50ZW50KSB7CisgICAgICAgIGZpbmFsIFN0cmluZyBhY3Rpb24gPSBpbnRlbnQuZ2V0QWN0aW9uKCk7CisgICAgICAgIGlmIChhY3Rpb24uZXF1YWxzKFdpZmlNYW5hZ2VyLldJRklfU1RBVEVfQ0hBTkdFRF9BQ1RJT04pKSB7CisKKyAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gZW5hYmxlZCA9IGludGVudC5nZXRJbnRFeHRyYShXaWZpTWFuYWdlci5FWFRSQV9XSUZJX1NUQVRFLAorICAgICAgICAgICAgICAgICAgICBXaWZpTWFuYWdlci5XSUZJX1NUQVRFX1VOS05PV04pID09IFdpZmlNYW5hZ2VyLldJRklfU1RBVEVfRU5BQkxFRDsKKworICAgICAgICAgICAgaWYgKCFlbmFibGVkKSB7CisgICAgICAgICAgICAgICAgLy8gSWYgZGlzYWJsZWQsIGhpZGUgdGhlIGljb24uIChXZSBzaG93IGljb24gd2hlbiBjb25uZWN0ZWQuKQorICAgICAgICAgICAgICAgIG1TZXJ2aWNlLnNldEljb25WaXNpYmlsaXR5KCJ3aWZpIiwgZmFsc2UpOworICAgICAgICAgICAgfQorCisgICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uLmVxdWFscyhXaWZpTWFuYWdlci5TVVBQTElDQU5UX0NPTk5FQ1RJT05fQ0hBTkdFX0FDVElPTikpIHsKKyAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gZW5hYmxlZCA9IGludGVudC5nZXRCb29sZWFuRXh0cmEoV2lmaU1hbmFnZXIuRVhUUkFfU1VQUExJQ0FOVF9DT05ORUNURUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKTsKKyAgICAgICAgICAgIGlmICghZW5hYmxlZCkgeworICAgICAgICAgICAgICAgIG1TZXJ2aWNlLnNldEljb25WaXNpYmlsaXR5KCJ3aWZpIiwgZmFsc2UpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbi5lcXVhbHMoV2lmaU1hbmFnZXIuTkVUV09SS19TVEFURV9DSEFOR0VEX0FDVElPTikpIHsKKworICAgICAgICAgICAgZmluYWwgTmV0d29ya0luZm8gbmV0d29ya0luZm8gPSAoTmV0d29ya0luZm8pCisgICAgICAgICAgICAgICAgICAgIGludGVudC5nZXRQYXJjZWxhYmxlRXh0cmEoV2lmaU1hbmFnZXIuRVhUUkFfTkVUV09SS19JTkZPKTsKKworICAgICAgICAgICAgaW50IGljb25JZDsKKyAgICAgICAgICAgIGlmIChuZXR3b3JrSW5mbyAhPSBudWxsICYmIG5ldHdvcmtJbmZvLmlzQ29ubmVjdGVkKCkpIHsKKyAgICAgICAgICAgICAgICBtSXNXaWZpQ29ubmVjdGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBpZiAobUxhc3RXaWZpU2lnbmFsTGV2ZWwgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAgICAgaWNvbklkID0gc1dpZmlTaWduYWxJbWFnZXNbMF07CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaWNvbklkID0gc1dpZmlTaWduYWxJbWFnZXNbbUxhc3RXaWZpU2lnbmFsTGV2ZWxdOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIFNob3cgdGhlIGljb24gc2luY2Ugd2ktZmkgaXMgY29ubmVjdGVkCisgICAgICAgICAgICAgICAgbVNlcnZpY2Uuc2V0SWNvblZpc2liaWxpdHkoIndpZmkiLCB0cnVlKTsKKworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtTGFzdFdpZmlTaWduYWxMZXZlbCA9IC0xOworICAgICAgICAgICAgICAgIG1Jc1dpZmlDb25uZWN0ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBpY29uSWQgPSBzV2lmaVNpZ25hbEltYWdlc1swXTsKKworICAgICAgICAgICAgICAgIC8vIEhpZGUgdGhlIGljb24gc2luY2Ugd2UncmUgbm90IGNvbm5lY3RlZAorICAgICAgICAgICAgICAgIG1TZXJ2aWNlLnNldEljb25WaXNpYmlsaXR5KCJ3aWZpIiwgZmFsc2UpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtU2VydmljZS5zZXRJY29uKCJ3aWZpIiwgaWNvbklkLCAwKTsKKyAgICAgICAgfSBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKFdpZmlNYW5hZ2VyLlJTU0lfQ0hBTkdFRF9BQ1RJT04pKSB7CisgICAgICAgICAgICBpbnQgaWNvbklkOworICAgICAgICAgICAgZmluYWwgaW50IG5ld1Jzc2kgPSBpbnRlbnQuZ2V0SW50RXh0cmEoV2lmaU1hbmFnZXIuRVhUUkFfTkVXX1JTU0ksIC0yMDApOworICAgICAgICAgICAgaW50IG5ld1NpZ25hbExldmVsID0gV2lmaU1hbmFnZXIuY2FsY3VsYXRlU2lnbmFsTGV2ZWwobmV3UnNzaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNXaWZpU2lnbmFsSW1hZ2VzLmxlbmd0aCk7CisgICAgICAgICAgICBpZiAobmV3U2lnbmFsTGV2ZWwgIT0gbUxhc3RXaWZpU2lnbmFsTGV2ZWwpIHsKKyAgICAgICAgICAgICAgICBtTGFzdFdpZmlTaWduYWxMZXZlbCA9IG5ld1NpZ25hbExldmVsOworICAgICAgICAgICAgICAgIGlmIChtSXNXaWZpQ29ubmVjdGVkKSB7CisgICAgICAgICAgICAgICAgICAgIGljb25JZCA9IHNXaWZpU2lnbmFsSW1hZ2VzW25ld1NpZ25hbExldmVsXTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpY29uSWQgPSBzV2lmaVRlbXBvcmFyaWx5Tm90Q29ubmVjdGVkSW1hZ2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1TZXJ2aWNlLnNldEljb24oIndpZmkiLCBpY29uSWQsIDApOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBmaW5hbCB2b2lkIHVwZGF0ZUdwcyhJbnRlbnQgaW50ZW50KSB7CisgICAgICAgIGZpbmFsIFN0cmluZyBhY3Rpb24gPSBpbnRlbnQuZ2V0QWN0aW9uKCk7CisgICAgICAgIGZpbmFsIGJvb2xlYW4gZW5hYmxlZCA9IGludGVudC5nZXRCb29sZWFuRXh0cmEoTG9jYXRpb25NYW5hZ2VyLkVYVFJBX0dQU19FTkFCTEVELCBmYWxzZSk7CisKKyAgICAgICAgaWYgKGFjdGlvbi5lcXVhbHMoTG9jYXRpb25NYW5hZ2VyLkdQU19GSVhfQ0hBTkdFX0FDVElPTikgJiYgZW5hYmxlZCkgeworICAgICAgICAgICAgLy8gR1BTIGlzIGdldHRpbmcgZml4ZXMKKyAgICAgICAgICAgIG1TZXJ2aWNlLnNldEljb24oImdwcyIsIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfZ3BzX29uLCAwKTsKKyAgICAgICAgICAgIG1TZXJ2aWNlLnNldEljb25WaXNpYmlsaXR5KCJncHMiLCB0cnVlKTsKKyAgICAgICAgfSBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKExvY2F0aW9uTWFuYWdlci5HUFNfRU5BQkxFRF9DSEFOR0VfQUNUSU9OKSAmJiAhZW5hYmxlZCkgeworICAgICAgICAgICAgLy8gR1BTIGlzIG9mZgorICAgICAgICAgICAgbVNlcnZpY2Uuc2V0SWNvblZpc2liaWxpdHkoImdwcyIsIGZhbHNlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIEdQUyBpcyBvbiwgYnV0IG5vdCByZWNlaXZpbmcgZml4ZXMKKyAgICAgICAgICAgIG1TZXJ2aWNlLnNldEljb24oImdwcyIsIFIuZHJhd2FibGUuc3RhdF9zeXNfZ3BzX2FjcXVpcmluZ19hbmltLCAwKTsKKyAgICAgICAgICAgIG1TZXJ2aWNlLnNldEljb25WaXNpYmlsaXR5KCJncHMiLCB0cnVlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgZmluYWwgdm9pZCB1cGRhdGVUVFkoSW50ZW50IGludGVudCkgeworICAgICAgICBmaW5hbCBTdHJpbmcgYWN0aW9uID0gaW50ZW50LmdldEFjdGlvbigpOworICAgICAgICBmaW5hbCBib29sZWFuIGVuYWJsZWQgPSBpbnRlbnQuZ2V0Qm9vbGVhbkV4dHJhKFR0eUludGVudC5UVFlfRU5BQkxFRCwgZmFsc2UpOworCisgICAgICAgIGlmIChmYWxzZSkgU2xvZy52KFRBRywgInVwZGF0ZVRUWTogZW5hYmxlZDogIiArIGVuYWJsZWQpOworCisgICAgICAgIGlmIChlbmFibGVkKSB7CisgICAgICAgICAgICAvLyBUVFkgaXMgb24KKyAgICAgICAgICAgIGlmIChmYWxzZSkgU2xvZy52KFRBRywgInVwZGF0ZVRUWTogc2V0IFRUWSBvbiIpOworICAgICAgICAgICAgbVNlcnZpY2Uuc2V0SWNvbigidHR5IiwgUi5kcmF3YWJsZS5zdGF0X3N5c190dHlfbW9kZSwgMCk7CisgICAgICAgICAgICBtU2VydmljZS5zZXRJY29uVmlzaWJpbGl0eSgidHR5IiwgdHJ1ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBUVFkgaXMgb2ZmCisgICAgICAgICAgICBpZiAoZmFsc2UpIFNsb2cudihUQUcsICJ1cGRhdGVUVFk6IHNldCBUVFkgb2ZmIik7CisgICAgICAgICAgICBtU2VydmljZS5zZXRJY29uVmlzaWJpbGl0eSgidHR5IiwgZmFsc2UpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBmaW5hbCB2b2lkIHVwZGF0ZUNkbWFSb2FtaW5nSWNvbihTZXJ2aWNlU3RhdGUgc3RhdGUpIHsKKyAgICAgICAgaWYgKCFoYXNTZXJ2aWNlKCkpIHsKKyAgICAgICAgICAgIG1TZXJ2aWNlLnNldEljb25WaXNpYmlsaXR5KCJjZG1hX2VyaSIsIGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGlmICghaXNDZG1hKCkpIHsKKyAgICAgICAgICAgIG1TZXJ2aWNlLnNldEljb25WaXNpYmlsaXR5KCJjZG1hX2VyaSIsIGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGludFtdIGljb25MaXN0ID0gc1JvYW1pbmdJbmRpY2F0b3JJbWFnZXNfY2RtYTsKKyAgICAgICAgaW50IGljb25JbmRleCA9IHN0YXRlLmdldENkbWFFcmlJY29uSW5kZXgoKTsKKyAgICAgICAgaW50IGljb25Nb2RlID0gc3RhdGUuZ2V0Q2RtYUVyaUljb25Nb2RlKCk7CisKKyAgICAgICAgaWYgKGljb25JbmRleCA9PSAtMSkgeworICAgICAgICAgICAgU2xvZy5lKFRBRywgImdldENkbWFFcmlJY29uSW5kZXggcmV0dXJuZWQgbnVsbCwgc2tpcHBpbmcgRVJJIGljb24gdXBkYXRlIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoaWNvbk1vZGUgPT0gLTEpIHsKKyAgICAgICAgICAgIFNsb2cuZShUQUcsICJnZXRDZG1lRXJpSWNvbk1vZGUgcmV0dXJuZWQgbnVsbCwgc2tpcHBpbmcgRVJJIGljb24gdXBkYXRlIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAoaWNvbkluZGV4ID09IEVyaUluZm8uUk9BTUlOR19JTkRJQ0FUT1JfT0ZGKSB7CisgICAgICAgICAgICBpZiAoZmFsc2UpIFNsb2cudihUQUcsICJDZG1hIFJPQU1JTkdfSU5ESUNBVE9SX09GRiwgcmVtb3ZpbmcgRVJJIGljb24iKTsKKyAgICAgICAgICAgIG1TZXJ2aWNlLnNldEljb25WaXNpYmlsaXR5KCJjZG1hX2VyaSIsIGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHN3aXRjaCAoaWNvbk1vZGUpIHsKKyAgICAgICAgICAgIGNhc2UgRXJpSW5mby5ST0FNSU5HX0lDT05fTU9ERV9OT1JNQUw6CisgICAgICAgICAgICAgICAgbVNlcnZpY2Uuc2V0SWNvbigiY2RtYV9lcmkiLCBpY29uTGlzdFtpY29uSW5kZXhdLCAwKTsKKyAgICAgICAgICAgICAgICBtU2VydmljZS5zZXRJY29uVmlzaWJpbGl0eSgiY2RtYV9lcmkiLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgRXJpSW5mby5ST0FNSU5HX0lDT05fTU9ERV9GTEFTSDoKKyAgICAgICAgICAgICAgICBtU2VydmljZS5zZXRJY29uKCJjZG1hX2VyaSIsIFIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hX2ZsYXNoLCAwKTsKKyAgICAgICAgICAgICAgICBtU2VydmljZS5zZXRJY29uVmlzaWJpbGl0eSgiY2RtYV9lcmkiLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICB9CisgICAgICAgIG1TZXJ2aWNlLnNldEljb24oInBob25lX3NpZ25hbCIsIG1QaG9uZVNpZ25hbEljb25JZCwgMCk7CisgICAgfQorCisKKyAgICBwcml2YXRlIGNsYXNzIFN0YXR1c0JhckhhbmRsZXIgZXh0ZW5kcyBIYW5kbGVyIHsKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyB2b2lkIGhhbmRsZU1lc3NhZ2UoTWVzc2FnZSBtc2cpIHsKKyAgICAgICAgICAgIHN3aXRjaCAobXNnLndoYXQpIHsKKyAgICAgICAgICAgIGNhc2UgRVZFTlRfQkFUVEVSWV9DTE9TRToKKyAgICAgICAgICAgICAgICBpZiAobXNnLmFyZzEgPT0gbUJhdHRlcnlWaWV3U2VxdWVuY2UpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xvc2VMYXN0QmF0dGVyeVZpZXcoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL1N0YXR1c0JhclNlcnZpY2UuamF2YSBiL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvU3RhdHVzQmFyU2VydmljZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3YmNjZTcKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL1N0YXR1c0JhclNlcnZpY2UuamF2YQpAQCAtMCwwICsxLDE2MDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLnN5c3RlbXVpLnN0YXR1c2JhcjsKKworaW1wb3J0IGFuZHJvaWQuYXBwLlNlcnZpY2U7CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuc3RhdHVzYmFyLklTdGF0dXNCYXI7CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuc3RhdHVzYmFyLklTdGF0dXNCYXJTZXJ2aWNlOworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnN0YXR1c2Jhci5TdGF0dXNCYXJJY29uOworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnN0YXR1c2Jhci5TdGF0dXNCYXJJY29uTGlzdDsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5zdGF0dXNiYXIuU3RhdHVzQmFyTm90aWZpY2F0aW9uOworCitpbXBvcnQgYW5kcm9pZC5hcHAuQWN0aXZpdHlNYW5hZ2VyTmF0aXZlOworaW1wb3J0IGFuZHJvaWQuYXBwLkRpYWxvZzsKK2ltcG9ydCBhbmRyb2lkLmFwcC5Ob3RpZmljYXRpb247CitpbXBvcnQgYW5kcm9pZC5hcHAuUGVuZGluZ0ludGVudDsKK2ltcG9ydCBhbmRyb2lkLmFwcC5TZXJ2aWNlOworaW1wb3J0IGFuZHJvaWQuYXBwLlN0YXR1c0Jhck1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkJyb2FkY2FzdFJlY2VpdmVyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudEZpbHRlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXM7CitpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5QaXhlbEZvcm1hdDsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLlJlY3Q7CitpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZTsKK2ltcG9ydCBhbmRyb2lkLm5ldC5Vcmk7CitpbXBvcnQgYW5kcm9pZC5vcy5JQmluZGVyOworaW1wb3J0IGFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uOworaW1wb3J0IGFuZHJvaWQub3MuQmluZGVyOworaW1wb3J0IGFuZHJvaWQub3MuSGFuZGxlcjsKK2ltcG9ydCBhbmRyb2lkLm9zLk1lc3NhZ2U7CitpbXBvcnQgYW5kcm9pZC5vcy5TZXJ2aWNlTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLm9zLlN5c3RlbUNsb2NrOworaW1wb3J0IGFuZHJvaWQudXRpbC5TbG9nOworaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CitpbXBvcnQgYW5kcm9pZC52aWV3LkRpc3BsYXk7CitpbXBvcnQgYW5kcm9pZC52aWV3LkdyYXZpdHk7CitpbXBvcnQgYW5kcm9pZC52aWV3LktleUV2ZW50OworaW1wb3J0IGFuZHJvaWQudmlldy5MYXlvdXRJbmZsYXRlcjsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQ7CitpbXBvcnQgYW5kcm9pZC52aWV3LlZlbG9jaXR5VHJhY2tlcjsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuVmlldzsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuVmlld0dyb3VwOworaW1wb3J0IGFuZHJvaWQudmlldy5XaW5kb3c7CitpbXBvcnQgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXJJbXBsOworaW1wb3J0IGFuZHJvaWQudmlldy5hbmltYXRpb24uQW5pbWF0aW9uOworaW1wb3J0IGFuZHJvaWQudmlldy5hbmltYXRpb24uQW5pbWF0aW9uVXRpbHM7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuSW1hZ2VWaWV3OworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkxpbmVhckxheW91dDsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5SZW1vdGVWaWV3czsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5TY3JvbGxWaWV3OworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LlRleHRWaWV3OworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkZyYW1lTGF5b3V0OworCitpbXBvcnQgamF2YS5pby5GaWxlRGVzY3JpcHRvcjsKK2ltcG9ydCBqYXZhLmlvLlByaW50V3JpdGVyOworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CitpbXBvcnQgamF2YS51dGlsLlNldDsKKworaW1wb3J0IGNvbS5hbmRyb2lkLnN5c3RlbXVpLlI7CitpbXBvcnQgY29tLmFuZHJvaWQuc3lzdGVtdWkuc3RhdHVzYmFyLnBvbGljeS5TdGF0dXNCYXJQb2xpY3k7CisKKworCitwdWJsaWMgY2xhc3MgU3RhdHVzQmFyU2VydmljZSBleHRlbmRzIFNlcnZpY2UgaW1wbGVtZW50cyBDb21tYW5kUXVldWUuQ2FsbGJhY2tzIHsKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9ICJTdGF0dXNCYXJTZXJ2aWNlIjsKKyAgICBzdGF0aWMgZmluYWwgYm9vbGVhbiBTUEVXID0gZmFsc2U7CisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBBQ1RJT05fU1RBVFVTQkFSX1NUQVJUCisgICAgICAgICAgICA9ICJjb20uYW5kcm9pZC5pbnRlcm5hbC5wb2xpY3kuc3RhdHVzYmFyLlNUQVJUIjsKKworICAgIHN0YXRpYyBmaW5hbCBpbnQgRVhQQU5ERURfTEVBVkVfQUxPTkUgPSAtMTAwMDA7CisgICAgc3RhdGljIGZpbmFsIGludCBFWFBBTkRFRF9GVUxMX09QRU4gPSAtMTAwMDE7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTVNHX0FOSU1BVEUgPSAxMDAwOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNU0dfQU5JTUFURV9SRVZFQUwgPSAxMDAxOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNU0dfU0hPV19JTlRSVURFUiA9IDEwMDI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1TR19ISURFX0lOVFJVREVSID0gMTAwMzsKKworICAgIC8vIHdpbGwgbGlrZWx5IG1vdmUgdG8gYSByZXNvdXJjZSBvciBvdGhlciB0dW5hYmxlIHBhcmFtIGF0IHNvbWUgcG9pbnQKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgSU5UUlVERVJfQUxFUlRfREVDQVlfTVMgPSAxMDAwMDsKKworICAgIFN0YXR1c0JhclBvbGljeSBtSWNvblBvbGljeTsKKworICAgIENvbW1hbmRRdWV1ZSBtQ29tbWFuZFF1ZXVlOworICAgIElTdGF0dXNCYXJTZXJ2aWNlIG1CYXJTZXJ2aWNlOworCisgICAgaW50IG1JY29uU2l6ZTsKKyAgICBEaXNwbGF5IG1EaXNwbGF5OworICAgIFN0YXR1c0JhclZpZXcgbVN0YXR1c0JhclZpZXc7CisgICAgaW50IG1QaXhlbEZvcm1hdDsKKyAgICBIIG1IYW5kbGVyID0gbmV3IEgoKTsKKyAgICBPYmplY3QgbVF1ZXVlTG9jayA9IG5ldyBPYmplY3QoKTsKKworICAgIC8vIGljb25zCisgICAgTGluZWFyTGF5b3V0IG1JY29uczsKKyAgICBJY29uTWVyZ2VyIG1Ob3RpZmljYXRpb25JY29uczsKKyAgICBMaW5lYXJMYXlvdXQgbVN0YXR1c0ljb25zOworCisgICAgLy8gZXhwYW5kZWQgbm90aWZpY2F0aW9ucworICAgIERpYWxvZyBtRXhwYW5kZWREaWFsb2c7CisgICAgRXhwYW5kZWRWaWV3IG1FeHBhbmRlZFZpZXc7CisgICAgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMgbUV4cGFuZGVkUGFyYW1zOworICAgIFNjcm9sbFZpZXcgbVNjcm9sbFZpZXc7CisgICAgVmlldyBtTm90aWZpY2F0aW9uTGluZWFyTGF5b3V0OworICAgIFZpZXcgbUV4cGFuZGVkQ29udGVudHM7CisgICAgLy8gdG9wIGJhcgorICAgIFRleHRWaWV3IG1Ob05vdGlmaWNhdGlvbnNUaXRsZTsKKyAgICBUZXh0VmlldyBtQ2xlYXJCdXR0b247CisgICAgLy8gZHJhZyBiYXIKKyAgICBDbG9zZURyYWdIYW5kbGUgbUNsb3NlVmlldzsKKyAgICAvLyBvbmdvaW5nCisgICAgTm90aWZpY2F0aW9uRGF0YSBtT25nb2luZyA9IG5ldyBOb3RpZmljYXRpb25EYXRhKCk7CisgICAgVGV4dFZpZXcgbU9uZ29pbmdUaXRsZTsKKyAgICBMaW5lYXJMYXlvdXQgbU9uZ29pbmdJdGVtczsKKyAgICAvLyBsYXRlc3QKKyAgICBOb3RpZmljYXRpb25EYXRhIG1MYXRlc3QgPSBuZXcgTm90aWZpY2F0aW9uRGF0YSgpOworICAgIFRleHRWaWV3IG1MYXRlc3RUaXRsZTsKKyAgICBMaW5lYXJMYXlvdXQgbUxhdGVzdEl0ZW1zOworICAgIC8vIHBvc2l0aW9uCisgICAgaW50W10gbVBvc2l0aW9uVG1wID0gbmV3IGludFsyXTsKKyAgICBib29sZWFuIG1FeHBhbmRlZDsKKyAgICBib29sZWFuIG1FeHBhbmRlZFZpc2libGU7CisKKyAgICAvLyB0aGUgZGF0ZSB2aWV3CisgICAgRGF0ZVZpZXcgbURhdGVWaWV3OworCisgICAgLy8gdGhlIHRyYWNrZXIgdmlldworICAgIFRyYWNraW5nVmlldyBtVHJhY2tpbmdWaWV3OworICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIG1UcmFja2luZ1BhcmFtczsKKyAgICBpbnQgbVRyYWNraW5nUG9zaXRpb247IC8vIHRoZSBwb3NpdGlvbiBvZiB0aGUgdG9wIG9mIHRoZSB0cmFja2luZyB2aWV3LgorICAgIHByaXZhdGUgYm9vbGVhbiBtUGFuZWxTbGlnaHRseVZpc2libGU7CisKKyAgICAvLyB0aWNrZXIKKyAgICBwcml2YXRlIFRpY2tlciBtVGlja2VyOworICAgIHByaXZhdGUgVmlldyBtVGlja2VyVmlldzsKKyAgICBwcml2YXRlIGJvb2xlYW4gbVRpY2tpbmc7CisKKyAgICAvLyBUcmFja2luZyBmaW5nZXIgZm9yIG9wZW5pbmcvY2xvc2luZy4KKyAgICBpbnQgbUVkZ2VCb3JkZXI7IC8vIGNvcnJlc3BvbmRzIHRvIFIuZGltZW4uc3RhdHVzX2Jhcl9lZGdlX2lnbm9yZQorICAgIGJvb2xlYW4gbVRyYWNraW5nOworICAgIFZlbG9jaXR5VHJhY2tlciBtVmVsb2NpdHlUcmFja2VyOworCisgICAgc3RhdGljIGZpbmFsIGludCBBTklNX0ZSQU1FX0RVUkFUSU9OID0gKDEwMDAvNjApOworCisgICAgYm9vbGVhbiBtQW5pbWF0aW5nOworICAgIGxvbmcgbUN1ckFuaW1hdGlvblRpbWU7CisgICAgZmxvYXQgbURpc3BsYXlIZWlnaHQ7CisgICAgZmxvYXQgbUFuaW1ZOworICAgIGZsb2F0IG1BbmltVmVsOworICAgIGZsb2F0IG1BbmltQWNjZWw7CisgICAgbG9uZyBtQW5pbUxhc3RUaW1lOworICAgIGJvb2xlYW4gbUFuaW1hdGluZ1JldmVhbCA9IGZhbHNlOworICAgIGludCBtVmlld0RlbHRhOworICAgIGludFtdIG1BYnNQb3MgPSBuZXcgaW50WzJdOworCisgICAgLy8gZm9yIGRpc2FibGluZyB0aGUgc3RhdHVzIGJhcgorICAgIGludCBtRGlzYWJsZWQgPSAwOworCisgICAgcHJpdmF0ZSBjbGFzcyBFeHBhbmRlZERpYWxvZyBleHRlbmRzIERpYWxvZyB7CisgICAgICAgIEV4cGFuZGVkRGlhbG9nKENvbnRleHQgY29udGV4dCkgeworICAgICAgICAgICAgc3VwZXIoY29udGV4dCwgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZS5UaGVtZV9MaWdodF9Ob1RpdGxlQmFyKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgYm9vbGVhbiBkaXNwYXRjaEtleUV2ZW50KEtleUV2ZW50IGV2ZW50KSB7CisgICAgICAgICAgICBib29sZWFuIGRvd24gPSBldmVudC5nZXRBY3Rpb24oKSA9PSBLZXlFdmVudC5BQ1RJT05fRE9XTjsKKyAgICAgICAgICAgIHN3aXRjaCAoZXZlbnQuZ2V0S2V5Q29kZSgpKSB7CisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfQkFDSzoKKyAgICAgICAgICAgICAgICBpZiAoIWRvd24pIHsKKyAgICAgICAgICAgICAgICAgICAgYW5pbWF0ZUNvbGxhcHNlKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmRpc3BhdGNoS2V5RXZlbnQoZXZlbnQpOworICAgICAgICB9CisgICAgfQorCisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBvbkNyZWF0ZSgpIHsKKyAgICAgICAgLy8gRmlyc3Qgc2V0IHVwIG91ciB2aWV3cyBhbmQgc3R1ZmYuCisgICAgICAgIG1EaXNwbGF5ID0gKChXaW5kb3dNYW5hZ2VyKWdldFN5c3RlbVNlcnZpY2UoQ29udGV4dC5XSU5ET1dfU0VSVklDRSkpLmdldERlZmF1bHREaXNwbGF5KCk7CisgICAgICAgIG1ha2VTdGF0dXNCYXJWaWV3KHRoaXMpOworCisgICAgICAgIC8vIENvbm5lY3QgaW4gdG8gdGhlIHN0YXR1cyBiYXIgbWFuYWdlciBzZXJ2aWNlCisgICAgICAgIFN0YXR1c0Jhckljb25MaXN0IGljb25MaXN0ID0gbmV3IFN0YXR1c0Jhckljb25MaXN0KCk7CisgICAgICAgIEFycmF5TGlzdDxJQmluZGVyPiBub3RpZmljYXRpb25LZXlzID0gbmV3IEFycmF5TGlzdDxJQmluZGVyPigpOworICAgICAgICBBcnJheUxpc3Q8U3RhdHVzQmFyTm90aWZpY2F0aW9uPiBub3RpZmljYXRpb25zID0gbmV3IEFycmF5TGlzdDxTdGF0dXNCYXJOb3RpZmljYXRpb24+KCk7CisgICAgICAgIG1Db21tYW5kUXVldWUgPSBuZXcgQ29tbWFuZFF1ZXVlKHRoaXMsIGljb25MaXN0KTsKKyAgICAgICAgbUJhclNlcnZpY2UgPSBJU3RhdHVzQmFyU2VydmljZS5TdHViLmFzSW50ZXJmYWNlKAorICAgICAgICAgICAgICAgIFNlcnZpY2VNYW5hZ2VyLmdldFNlcnZpY2UoQ29udGV4dC5TVEFUVVNfQkFSX1NFUlZJQ0UpKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG1CYXJTZXJ2aWNlLnJlZ2lzdGVyU3RhdHVzQmFyKG1Db21tYW5kUXVldWUsIGljb25MaXN0LCBub3RpZmljYXRpb25LZXlzLCBub3RpZmljYXRpb25zKTsKKyAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICAvLyBJZiB0aGUgc3lzdGVtIHByb2Nlc3MgaXNuJ3QgdGhlcmUgd2UncmUgZG9vbWVkIGFueXdheS4KKyAgICAgICAgfQorCisgICAgICAgIC8vIFNldCB1cCB0aGUgaW5pdGlhbCBpY29uIHN0YXRlCisgICAgICAgIGludCBOID0gaWNvbkxpc3Quc2l6ZSgpOworICAgICAgICBpbnQgdmlld0luZGV4ID0gMDsKKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPE47IGkrKykgeworICAgICAgICAgICAgU3RhdHVzQmFySWNvbiBpY29uID0gaWNvbkxpc3QuZ2V0SWNvbihpKTsKKyAgICAgICAgICAgIGlmIChpY29uICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBhZGRJY29uKGljb25MaXN0LmdldFNsb3QoaSksIGksIHZpZXdJbmRleCwgaWNvbik7CisgICAgICAgICAgICAgICAgdmlld0luZGV4Kys7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBTZXQgdXAgdGhlIGluaXRpYWwgbm90aWZpY2F0aW9uIHN0YXRlCisgICAgICAgIE4gPSBub3RpZmljYXRpb25LZXlzLnNpemUoKTsKKyAgICAgICAgaWYgKE4gPT0gbm90aWZpY2F0aW9ucy5zaXplKCkpIHsKKyAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxOOyBpKyspIHsKKyAgICAgICAgICAgICAgICBhZGROb3RpZmljYXRpb24obm90aWZpY2F0aW9uS2V5cy5nZXQoaSksIG5vdGlmaWNhdGlvbnMuZ2V0KGkpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIExvZy53dGYoVEFHLCAiTm90aWZpY2F0aW9uIGxpc3QgbGVuZ3RoIG1pc21hdGNoOiBrZXlzPSIgKyBOCisgICAgICAgICAgICAgICAgICAgICsgIiBub3RpZmljYXRpb25zPSIgKyBub3RpZmljYXRpb25zLnNpemUoKSk7CisgICAgICAgIH0KKworICAgICAgICAvLyBQdXQgdXAgdGhlIHZpZXcKKyAgICAgICAgYWRkU3RhdHVzQmFyVmlldygpOworCisgICAgICAgIC8vIExhc3RseSwgY2FsbCB0byB0aGUgaWNvbiBwb2xpY3kgdG8gaW5zdGFsbC91cGRhdGUgYWxsIHRoZSBpY29ucy4KKyAgICAgICAgbUljb25Qb2xpY3kgPSBuZXcgU3RhdHVzQmFyUG9saWN5KHRoaXMpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIG9uRGVzdHJveSgpIHsKKyAgICAgICAgLy8gd2UncmUgbmV2ZXIgZGVzdHJveWVkCisgICAgfQorCisgICAgLy8gZm9yIGltbWVyc2l2ZSBhY3Rpdml0aWVzCisgICAgcHJpdmF0ZSBWaWV3IG1JbnRydWRlckFsZXJ0VmlldzsKKworICAgIC8qKgorICAgICAqIE5vYm9keSBiaW5kcyB0byB1cy4KKyAgICAgKi8KKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgSUJpbmRlciBvbkJpbmQoSW50ZW50IGludGVudCkgeworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8vIENvbnN0cnVjdGluZyB0aGUgdmlldworICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgcHJpdmF0ZSB2b2lkIG1ha2VTdGF0dXNCYXJWaWV3KENvbnRleHQgY29udGV4dCkgeworICAgICAgICBSZXNvdXJjZXMgcmVzID0gY29udGV4dC5nZXRSZXNvdXJjZXMoKTsKKworICAgICAgICBtSWNvblNpemUgPSByZXMuZ2V0RGltZW5zaW9uUGl4ZWxTaXplKGNvbS5hbmRyb2lkLmludGVybmFsLlIuZGltZW4uc3RhdHVzX2Jhcl9pY29uX3NpemUpOworCisgICAgICAgIEV4cGFuZGVkVmlldyBleHBhbmRlZCA9IChFeHBhbmRlZFZpZXcpVmlldy5pbmZsYXRlKGNvbnRleHQsCisgICAgICAgICAgICAgICAgUi5sYXlvdXQuc3RhdHVzX2Jhcl9leHBhbmRlZCwgbnVsbCk7CisgICAgICAgIGV4cGFuZGVkLm1TZXJ2aWNlID0gdGhpczsKKworICAgICAgICBtSW50cnVkZXJBbGVydFZpZXcgPSBWaWV3LmluZmxhdGUoY29udGV4dCwgUi5sYXlvdXQuaW50cnVkZXJfYWxlcnQsIG51bGwpOworICAgICAgICBtSW50cnVkZXJBbGVydFZpZXcuc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOworICAgICAgICBtSW50cnVkZXJBbGVydFZpZXcuc2V0Q2xpY2thYmxlKHRydWUpOworCisgICAgICAgIFN0YXR1c0JhclZpZXcgc2IgPSAoU3RhdHVzQmFyVmlldylWaWV3LmluZmxhdGUoY29udGV4dCwgUi5sYXlvdXQuc3RhdHVzX2JhciwgbnVsbCk7CisgICAgICAgIHNiLm1TZXJ2aWNlID0gdGhpczsKKworICAgICAgICAvLyBmaWd1cmUgb3V0IHdoaWNoIHBpeGVsLWZvcm1hdCB0byB1c2UgZm9yIHRoZSBzdGF0dXMgYmFyLgorICAgICAgICBtUGl4ZWxGb3JtYXQgPSBQaXhlbEZvcm1hdC5UUkFOU0xVQ0VOVDsKKyAgICAgICAgRHJhd2FibGUgYmcgPSBzYi5nZXRCYWNrZ3JvdW5kKCk7CisgICAgICAgIGlmIChiZyAhPSBudWxsKSB7CisgICAgICAgICAgICBtUGl4ZWxGb3JtYXQgPSBiZy5nZXRPcGFjaXR5KCk7CisgICAgICAgIH0KKworICAgICAgICBtU3RhdHVzQmFyVmlldyA9IHNiOworICAgICAgICBtU3RhdHVzSWNvbnMgPSAoTGluZWFyTGF5b3V0KXNiLmZpbmRWaWV3QnlJZChSLmlkLnN0YXR1c0ljb25zKTsKKyAgICAgICAgbU5vdGlmaWNhdGlvbkljb25zID0gKEljb25NZXJnZXIpc2IuZmluZFZpZXdCeUlkKFIuaWQubm90aWZpY2F0aW9uSWNvbnMpOworICAgICAgICBtSWNvbnMgPSAoTGluZWFyTGF5b3V0KXNiLmZpbmRWaWV3QnlJZChSLmlkLmljb25zKTsKKyAgICAgICAgbVRpY2tlclZpZXcgPSBzYi5maW5kVmlld0J5SWQoUi5pZC50aWNrZXIpOworICAgICAgICBtRGF0ZVZpZXcgPSAoRGF0ZVZpZXcpc2IuZmluZFZpZXdCeUlkKFIuaWQuZGF0ZSk7CisKKyAgICAgICAgbUV4cGFuZGVkRGlhbG9nID0gbmV3IEV4cGFuZGVkRGlhbG9nKGNvbnRleHQpOworICAgICAgICBtRXhwYW5kZWRWaWV3ID0gZXhwYW5kZWQ7CisgICAgICAgIG1FeHBhbmRlZENvbnRlbnRzID0gZXhwYW5kZWQuZmluZFZpZXdCeUlkKFIuaWQubm90aWZpY2F0aW9uTGluZWFyTGF5b3V0KTsKKyAgICAgICAgbU9uZ29pbmdUaXRsZSA9IChUZXh0VmlldylleHBhbmRlZC5maW5kVmlld0J5SWQoUi5pZC5vbmdvaW5nVGl0bGUpOworICAgICAgICBtT25nb2luZ0l0ZW1zID0gKExpbmVhckxheW91dClleHBhbmRlZC5maW5kVmlld0J5SWQoUi5pZC5vbmdvaW5nSXRlbXMpOworICAgICAgICBtTGF0ZXN0VGl0bGUgPSAoVGV4dFZpZXcpZXhwYW5kZWQuZmluZFZpZXdCeUlkKFIuaWQubGF0ZXN0VGl0bGUpOworICAgICAgICBtTGF0ZXN0SXRlbXMgPSAoTGluZWFyTGF5b3V0KWV4cGFuZGVkLmZpbmRWaWV3QnlJZChSLmlkLmxhdGVzdEl0ZW1zKTsKKyAgICAgICAgbU5vTm90aWZpY2F0aW9uc1RpdGxlID0gKFRleHRWaWV3KWV4cGFuZGVkLmZpbmRWaWV3QnlJZChSLmlkLm5vTm90aWZpY2F0aW9uc1RpdGxlKTsKKyAgICAgICAgbUNsZWFyQnV0dG9uID0gKFRleHRWaWV3KWV4cGFuZGVkLmZpbmRWaWV3QnlJZChSLmlkLmNsZWFyX2FsbF9idXR0b24pOworICAgICAgICBtQ2xlYXJCdXR0b24uc2V0T25DbGlja0xpc3RlbmVyKG1DbGVhckJ1dHRvbkxpc3RlbmVyKTsKKyAgICAgICAgbVNjcm9sbFZpZXcgPSAoU2Nyb2xsVmlldylleHBhbmRlZC5maW5kVmlld0J5SWQoUi5pZC5zY3JvbGwpOworICAgICAgICBtTm90aWZpY2F0aW9uTGluZWFyTGF5b3V0ID0gZXhwYW5kZWQuZmluZFZpZXdCeUlkKFIuaWQubm90aWZpY2F0aW9uTGluZWFyTGF5b3V0KTsKKworICAgICAgICBtT25nb2luZ1RpdGxlLnNldFZpc2liaWxpdHkoVmlldy5HT05FKTsKKyAgICAgICAgbUxhdGVzdFRpdGxlLnNldFZpc2liaWxpdHkoVmlldy5HT05FKTsKKworICAgICAgICBtVGlja2VyID0gbmV3IE15VGlja2VyKGNvbnRleHQsIHNiKTsKKworICAgICAgICBUaWNrZXJWaWV3IHRpY2tlclZpZXcgPSAoVGlja2VyVmlldylzYi5maW5kVmlld0J5SWQoUi5pZC50aWNrZXJUZXh0KTsKKyAgICAgICAgdGlja2VyVmlldy5tVGlja2VyID0gbVRpY2tlcjsKKworICAgICAgICBtVHJhY2tpbmdWaWV3ID0gKFRyYWNraW5nVmlldylWaWV3LmluZmxhdGUoY29udGV4dCwgUi5sYXlvdXQuc3RhdHVzX2Jhcl90cmFja2luZywgbnVsbCk7CisgICAgICAgIG1UcmFja2luZ1ZpZXcubVNlcnZpY2UgPSB0aGlzOworICAgICAgICBtQ2xvc2VWaWV3ID0gKENsb3NlRHJhZ0hhbmRsZSltVHJhY2tpbmdWaWV3LmZpbmRWaWV3QnlJZChSLmlkLmNsb3NlKTsKKyAgICAgICAgbUNsb3NlVmlldy5tU2VydmljZSA9IHRoaXM7CisKKyAgICAgICAgbUVkZ2VCb3JkZXIgPSByZXMuZ2V0RGltZW5zaW9uUGl4ZWxTaXplKFIuZGltZW4uc3RhdHVzX2Jhcl9lZGdlX2lnbm9yZSk7CisKKyAgICAgICAgLy8gdGhlIG1vcmUgbm90aWZpY2F0aW9ucyBpY29uCisgICAgICAgIFN0YXR1c0Jhckljb25WaWV3IG1vcmVWaWV3ID0gbmV3IFN0YXR1c0Jhckljb25WaWV3KHRoaXMsICJtb3JlIik7CisgICAgICAgIG1vcmVWaWV3LnNldChuZXcgU3RhdHVzQmFySWNvbihudWxsLCBSLmRyYXdhYmxlLnN0YXRfbm90aWZ5X21vcmUsIDApKTsKKyAgICAgICAgbU5vdGlmaWNhdGlvbkljb25zLmFkZE1vcmVWaWV3KG1vcmVWaWV3LAorICAgICAgICAgICAgICAgIG5ldyBMaW5lYXJMYXlvdXQuTGF5b3V0UGFyYW1zKG1JY29uU2l6ZSwgbUljb25TaXplKSk7CisKKyAgICAgICAgLy8gc2V0IHRoZSBpbml0YWwgdmlldyB2aXNpYmlsaXR5CisgICAgICAgIHNldEFyZVRoZXJlTm90aWZpY2F0aW9ucygpOworICAgICAgICBtRGF0ZVZpZXcuc2V0VmlzaWJpbGl0eShWaWV3LklOVklTSUJMRSk7CisKKyAgICAgICAgLy8gcmVjZWl2ZSBicm9hZGNhc3RzCisgICAgICAgIEludGVudEZpbHRlciBmaWx0ZXIgPSBuZXcgSW50ZW50RmlsdGVyKCk7CisgICAgICAgIGZpbHRlci5hZGRBY3Rpb24oSW50ZW50LkFDVElPTl9DT05GSUdVUkFUSU9OX0NIQU5HRUQpOworICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKEludGVudC5BQ1RJT05fQ0xPU0VfU1lTVEVNX0RJQUxPR1MpOworICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKEludGVudC5BQ1RJT05fU0NSRUVOX09GRik7CisgICAgICAgIGNvbnRleHQucmVnaXN0ZXJSZWNlaXZlcihtQnJvYWRjYXN0UmVjZWl2ZXIsIGZpbHRlcik7CisgICAgfQorCisgICAgcHJvdGVjdGVkIHZvaWQgYWRkU3RhdHVzQmFyVmlldygpIHsKKyAgICAgICAgUmVzb3VyY2VzIHJlcyA9IGdldFJlc291cmNlcygpOworICAgICAgICBmaW5hbCBpbnQgaGVpZ2h0PSByZXMuZ2V0RGltZW5zaW9uUGl4ZWxTaXplKGNvbS5hbmRyb2lkLmludGVybmFsLlIuZGltZW4uc3RhdHVzX2Jhcl9oZWlnaHQpOworCisgICAgICAgIGZpbmFsIFN0YXR1c0JhclZpZXcgdmlldyA9IG1TdGF0dXNCYXJWaWV3OworICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcyBscCA9IG5ldyBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcygKKyAgICAgICAgICAgICAgICBWaWV3R3JvdXAuTGF5b3V0UGFyYW1zLk1BVENIX1BBUkVOVCwKKyAgICAgICAgICAgICAgICBoZWlnaHQsCisgICAgICAgICAgICAgICAgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuVFlQRV9TVEFUVVNfQkFSLAorICAgICAgICAgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfTk9UX0ZPQ1VTQUJMRQorICAgICAgICAgICAgICAgICAgICB8IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfVE9VQ0hBQkxFX1dIRU5fV0FLSU5HLAorICAgICAgICAgICAgICAgIFBpeGVsRm9ybWF0LlJHQlhfODg4OCk7CisgICAgICAgIGxwLmdyYXZpdHkgPSBHcmF2aXR5LlRPUCB8IEdyYXZpdHkuRklMTF9IT1JJWk9OVEFMOworICAgICAgICBscC5zZXRUaXRsZSgiU3RhdHVzQmFyIik7CisgICAgICAgIC8vIFRPRE8gbHAud2luZG93QW5pbWF0aW9ucyA9IFIuc3R5bGUuQW5pbWF0aW9uX1N0YXR1c0JhcjsKKworICAgICAgICBXaW5kb3dNYW5hZ2VySW1wbC5nZXREZWZhdWx0KCkuYWRkVmlldyh2aWV3LCBscCk7CisKKyAgICAgICAgbHAgPSBuZXcgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMoCisgICAgICAgICAgICAgICAgVmlld0dyb3VwLkxheW91dFBhcmFtcy5NQVRDSF9QQVJFTlQsCisgICAgICAgICAgICAgICAgVmlld0dyb3VwLkxheW91dFBhcmFtcy5XUkFQX0NPTlRFTlQsCisgICAgICAgICAgICAgICAgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuVFlQRV9TVEFUVVNfQkFSX1BBTkVMLAorICAgICAgICAgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfTEFZT1VUX0lOX1NDUkVFTgorICAgICAgICAgICAgICAgICAgICB8IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfTEFZT1VUX05PX0xJTUlUUworICAgICAgICAgICAgICAgICAgICB8IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfTk9UX1RPVUNIX01PREFMCisgICAgICAgICAgICAgICAgICAgIHwgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19OT1RfRk9DVVNBQkxFCisgICAgICAgICAgICAgICAgICAgIHwgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19BTFRfRk9DVVNBQkxFX0lNLAorICAgICAgICAgICAgICAgIFBpeGVsRm9ybWF0LlRSQU5TTFVDRU5UKTsKKyAgICAgICAgbHAuZ3Jhdml0eSA9IEdyYXZpdHkuVE9QIHwgR3Jhdml0eS5GSUxMX0hPUklaT05UQUw7CisgICAgICAgIGxwLnkgKz0gaGVpZ2h0ICogMS41OyAvLyBGSVhNRQorICAgICAgICBscC5zZXRUaXRsZSgiSW50cnVkZXJBbGVydCIpOworICAgICAgICBscC53aW5kb3dBbmltYXRpb25zID0gY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZS5BbmltYXRpb25fU3RhdHVzQmFyX0ludHJ1ZGVyQWxlcnQ7CisKKyAgICAgICAgV2luZG93TWFuYWdlckltcGwuZ2V0RGVmYXVsdCgpLmFkZFZpZXcobUludHJ1ZGVyQWxlcnRWaWV3LCBscCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgYWRkSWNvbihTdHJpbmcgc2xvdCwgaW50IGluZGV4LCBpbnQgdmlld0luZGV4LCBTdGF0dXNCYXJJY29uIGljb24pIHsKKyAgICAgICAgaWYgKFNQRVcpIFNsb2cuZChUQUcsICJhZGRJY29uIHNsb3Q9IiArIHNsb3QgKyAiIGluZGV4PSIgKyBpbmRleCArICIgdmlld0luZGV4PSIgKyB2aWV3SW5kZXgKKyAgICAgICAgICAgICAgICArICIgaWNvbj0iICsgaWNvbik7CisgICAgICAgIFN0YXR1c0Jhckljb25WaWV3IHZpZXcgPSBuZXcgU3RhdHVzQmFySWNvblZpZXcodGhpcywgc2xvdCk7CisgICAgICAgIHZpZXcuc2V0KGljb24pOworICAgICAgICBtU3RhdHVzSWNvbnMuYWRkVmlldyh2aWV3LCB2aWV3SW5kZXgsIG5ldyBMaW5lYXJMYXlvdXQuTGF5b3V0UGFyYW1zKG1JY29uU2l6ZSwgbUljb25TaXplKSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdXBkYXRlSWNvbihTdHJpbmcgc2xvdCwgaW50IGluZGV4LCBpbnQgdmlld0luZGV4LAorICAgICAgICAgICAgU3RhdHVzQmFySWNvbiBvbGQsIFN0YXR1c0Jhckljb24gaWNvbikgeworICAgICAgICBpZiAoU1BFVykgU2xvZy5kKFRBRywgInVwZGF0ZUljb24gc2xvdD0iICsgc2xvdCArICIgaW5kZXg9IiArIGluZGV4ICsgIiB2aWV3SW5kZXg9IiArIHZpZXdJbmRleAorICAgICAgICAgICAgICAgICsgIiBvbGQ9IiArIG9sZCArICIgaWNvbj0iICsgaWNvbik7CisgICAgICAgIFN0YXR1c0Jhckljb25WaWV3IHZpZXcgPSAoU3RhdHVzQmFySWNvblZpZXcpbVN0YXR1c0ljb25zLmdldENoaWxkQXQodmlld0luZGV4KTsKKyAgICAgICAgdmlldy5zZXQoaWNvbik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgcmVtb3ZlSWNvbihTdHJpbmcgc2xvdCwgaW50IGluZGV4LCBpbnQgdmlld0luZGV4KSB7CisgICAgICAgIGlmIChTUEVXKSBTbG9nLmQoVEFHLCAicmVtb3ZlSWNvbiBzbG90PSIgKyBzbG90ICsgIiBpbmRleD0iICsgaW5kZXggKyAiIHZpZXdJbmRleD0iICsgdmlld0luZGV4KTsKKyAgICAgICAgbVN0YXR1c0ljb25zLnJlbW92ZVZpZXdBdCh2aWV3SW5kZXgpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGFkZE5vdGlmaWNhdGlvbihJQmluZGVyIGtleSwgU3RhdHVzQmFyTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikgeworICAgICAgICBTdGF0dXNCYXJJY29uVmlldyBpY29uVmlldyA9IGFkZE5vdGlmaWNhdGlvblZpZXdzKGtleSwgbm90aWZpY2F0aW9uKTsKKyAgICAgICAgaWYgKGljb25WaWV3ID09IG51bGwpIHJldHVybjsKKworICAgICAgICBib29sZWFuIGltbWVyc2l2ZSA9IGZhbHNlOworICAgICAgICB0cnkgeworICAgICAgICAgICAgaW1tZXJzaXZlID0gQWN0aXZpdHlNYW5hZ2VyTmF0aXZlLmdldERlZmF1bHQoKS5pc1RvcEFjdGl2aXR5SW1tZXJzaXZlKCk7CisgICAgICAgICAgICBTbG9nLmQoVEFHLCAiVG9wIGFjdGl2aXR5IGlzICIgKyAoaW1tZXJzaXZlPyJpbW1lcnNpdmUiOiJub3QgaW1tZXJzaXZlIikpOworICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgfQorICAgICAgICBpZiAoaW1tZXJzaXZlKSB7CisgICAgICAgICAgICBpZiAoKG5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb24uZmxhZ3MgJiBOb3RpZmljYXRpb24uRkxBR19ISUdIX1BSSU9SSVRZKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgU2xvZy5kKFRBRywgIlByZXNlbnRpbmcgaGlnaC1wcmlvcml0eSBub3RpZmljYXRpb24gaW4gaW1tZXJzaXZlIGFjdGl2aXR5Iik7CisgICAgICAgICAgICAgICAgLy8gQEBAIHNwZWNpYWwgbmV3IHRyYW5zaWVudCB0aWNrZXIgbW9kZQorICAgICAgICAgICAgICAgIC8vIDEuIFBvcHVsYXRlIG1JbnRydWRlckFsZXJ0VmlldworCisgICAgICAgICAgICAgICAgSW1hZ2VWaWV3IGFsZXJ0SWNvbiA9IChJbWFnZVZpZXcpIG1JbnRydWRlckFsZXJ0Vmlldy5maW5kVmlld0J5SWQoUi5pZC5hbGVydEljb24pOworICAgICAgICAgICAgICAgIFRleHRWaWV3IGFsZXJ0VGV4dCA9IChUZXh0VmlldykgbUludHJ1ZGVyQWxlcnRWaWV3LmZpbmRWaWV3QnlJZChSLmlkLmFsZXJ0VGV4dCk7CisgICAgICAgICAgICAgICAgYWxlcnRJY29uLnNldEltYWdlRHJhd2FibGUoU3RhdHVzQmFySWNvblZpZXcuZ2V0SWNvbigKKyAgICAgICAgICAgICAgICAgICAgYWxlcnRJY29uLmdldENvbnRleHQoKSwKKyAgICAgICAgICAgICAgICAgICAgaWNvblZpZXcuZ2V0U3RhdHVzQmFySWNvbigpKSk7CisgICAgICAgICAgICAgICAgYWxlcnRUZXh0LnNldFRleHQobm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvbi50aWNrZXJUZXh0KTsKKworICAgICAgICAgICAgICAgIFZpZXcgYnV0dG9uID0gbUludHJ1ZGVyQWxlcnRWaWV3LmZpbmRWaWV3QnlJZChSLmlkLmludHJ1ZGVyX2FsZXJ0X2NvbnRlbnQpOworICAgICAgICAgICAgICAgIGJ1dHRvbi5zZXRPbkNsaWNrTGlzdGVuZXIoCisgICAgICAgICAgICAgICAgICAgIG5ldyBMYXVuY2hlcihub3RpZmljYXRpb24ubm90aWZpY2F0aW9uLmNvbnRlbnRJbnRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICBub3RpZmljYXRpb24ucGtnLCBub3RpZmljYXRpb24udGFnLCBub3RpZmljYXRpb24uaWQpKTsKKworICAgICAgICAgICAgICAgIC8vIDIuIEFuaW1hdGUgbUludHJ1ZGVyQWxlcnRWaWV3IGluCisgICAgICAgICAgICAgICAgbUhhbmRsZXIuc2VuZEVtcHR5TWVzc2FnZShNU0dfU0hPV19JTlRSVURFUik7CisKKyAgICAgICAgICAgICAgICAvLyAzLiBTZXQgYWxhcm0gdG8gYWdlIHRoZSBub3RpZmljYXRpb24gb2ZmIChUT0RPKQorICAgICAgICAgICAgICAgIG1IYW5kbGVyLnJlbW92ZU1lc3NhZ2VzKE1TR19ISURFX0lOVFJVREVSKTsKKyAgICAgICAgICAgICAgICBtSGFuZGxlci5zZW5kRW1wdHlNZXNzYWdlRGVsYXllZChNU0dfSElERV9JTlRSVURFUiwgSU5UUlVERVJfQUxFUlRfREVDQVlfTVMpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKG5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb24uZnVsbFNjcmVlbkludGVudCAhPSBudWxsKSB7CisgICAgICAgICAgICAvLyBub3QgaW1tZXJzaXZlICYgYSBmdWxsLXNjcmVlbiBhbGVydCBzaG91bGQgYmUgc2hvd24KKyAgICAgICAgICAgIFNsb2cuZChUQUcsICJOb3RpZmljYXRpb24gaGFzIGZ1bGxTY3JlZW5JbnRlbnQgYW5kIGFjdGl2aXR5IGlzIG5vdCBpbW1lcnNpdmU7IgorICAgICAgICAgICAgICAgICAgICArICIgc2VuZGluZyBmdWxsU2NyZWVuSW50ZW50Iik7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb24uZnVsbFNjcmVlbkludGVudC5zZW5kKCk7CisgICAgICAgICAgICB9IGNhdGNoIChQZW5kaW5nSW50ZW50LkNhbmNlbGVkRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIHVzdWFsIGNhc2U6IHN0YXR1cyBiYXIgdmlzaWJsZSAmIG5vdCBpbW1lcnNpdmUKKworICAgICAgICAgICAgLy8gc2hvdyB0aGUgdGlja2VyCisgICAgICAgICAgICB0aWNrKG5vdGlmaWNhdGlvbik7CisgICAgICAgIH0KKworICAgICAgICAvLyBSZWNhbGN1bGF0ZSB0aGUgcG9zaXRpb24gb2YgdGhlIHNsaWRpbmcgd2luZG93cyBhbmQgdGhlIHRpdGxlcy4KKyAgICAgICAgc2V0QXJlVGhlcmVOb3RpZmljYXRpb25zKCk7CisgICAgICAgIHVwZGF0ZUV4cGFuZGVkVmlld1BvcyhFWFBBTkRFRF9MRUFWRV9BTE9ORSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdXBkYXRlTm90aWZpY2F0aW9uKElCaW5kZXIga2V5LCBTdGF0dXNCYXJOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKSB7CisgICAgICAgIFNsb2cuZChUQUcsICJ1cGRhdGVOb3RpZmljYXRpb24ga2V5PSIgKyBrZXkgKyAiIG5vdGlmaWNhdGlvbj0iICsgbm90aWZpY2F0aW9uKTsKKworICAgICAgICBOb3RpZmljYXRpb25EYXRhIG9sZExpc3Q7CisgICAgICAgIGludCBvbGRJbmRleCA9IG1PbmdvaW5nLmZpbmRFbnRyeShrZXkpOworICAgICAgICBpZiAob2xkSW5kZXggPj0gMCkgeworICAgICAgICAgICAgb2xkTGlzdCA9IG1PbmdvaW5nOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgb2xkSW5kZXggPSBtTGF0ZXN0LmZpbmRFbnRyeShrZXkpOworICAgICAgICAgICAgaWYgKG9sZEluZGV4IDwgMCkgeworICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsICJ1cGRhdGVOb3RpZmljYXRpb24gZm9yIHVua25vd24ga2V5OiAiICsga2V5KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBvbGRMaXN0ID0gbUxhdGVzdDsKKyAgICAgICAgfQorICAgICAgICBmaW5hbCBOb3RpZmljYXRpb25EYXRhLkVudHJ5IG9sZEVudHJ5ID0gb2xkTGlzdC5nZXRFbnRyeUF0KG9sZEluZGV4KTsKKyAgICAgICAgZmluYWwgU3RhdHVzQmFyTm90aWZpY2F0aW9uIG9sZE5vdGlmaWNhdGlvbiA9IG9sZEVudHJ5Lm5vdGlmaWNhdGlvbjsKKyAgICAgICAgZmluYWwgUmVtb3RlVmlld3Mgb2xkQ29udGVudFZpZXcgPSBvbGROb3RpZmljYXRpb24ubm90aWZpY2F0aW9uLmNvbnRlbnRWaWV3OworCisgICAgICAgIGZpbmFsIFJlbW90ZVZpZXdzIGNvbnRlbnRWaWV3ID0gbm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvbi5jb250ZW50VmlldzsKKworICAgICAgICBpZiAoZmFsc2UpIHsKKyAgICAgICAgICAgIFNsb2cuZChUQUcsICJvbGQgbm90aWZpY2F0aW9uOiB3aGVuPSIgKyBvbGROb3RpZmljYXRpb24ubm90aWZpY2F0aW9uLndoZW4KKyAgICAgICAgICAgICAgICAgICAgKyAiIG9uZ29pbmc9IiArIG9sZE5vdGlmaWNhdGlvbi5pc09uZ29pbmcoKQorICAgICAgICAgICAgICAgICAgICArICIgZXhwYW5kZWQ9IiArIG9sZEVudHJ5LmV4cGFuZGVkCisgICAgICAgICAgICAgICAgICAgICsgIiBjb250ZW50Vmlldz0iICsgb2xkQ29udGVudFZpZXcpOworICAgICAgICAgICAgU2xvZy5kKFRBRywgIm5ldyBub3RpZmljYXRpb246IHdoZW49IiArIG5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb24ud2hlbgorICAgICAgICAgICAgICAgICAgICArICIgb25nb2luZz0iICsgb2xkTm90aWZpY2F0aW9uLmlzT25nb2luZygpCisgICAgICAgICAgICAgICAgICAgICsgIiBjb250ZW50Vmlldz0iICsgY29udGVudFZpZXcpOworICAgICAgICB9CisKKyAgICAgICAgLy8gQ2FuIHdlIGp1c3QgcmVhcHBseSB0aGUgUmVtb3RlVmlld3MgaW4gcGxhY2U/ICBJZiB3aGVuIGRpZG4ndCBjaGFuZ2UsIHRoZSBvcmRlcgorICAgICAgICAvLyBkaWRuJ3QgY2hhbmdlLgorICAgICAgICBpZiAobm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvbi53aGVuID09IG9sZE5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb24ud2hlbgorICAgICAgICAgICAgICAgICYmIG5vdGlmaWNhdGlvbi5pc09uZ29pbmcoKSA9PSBvbGROb3RpZmljYXRpb24uaXNPbmdvaW5nKCkKKyAgICAgICAgICAgICAgICAmJiBvbGRFbnRyeS5leHBhbmRlZCAhPSBudWxsCisgICAgICAgICAgICAgICAgJiYgY29udGVudFZpZXcgIT0gbnVsbCAmJiBvbGRDb250ZW50VmlldyAhPSBudWxsCisgICAgICAgICAgICAgICAgJiYgY29udGVudFZpZXcuZ2V0UGFja2FnZSgpICE9IG51bGwKKyAgICAgICAgICAgICAgICAmJiBvbGRDb250ZW50Vmlldy5nZXRQYWNrYWdlKCkgIT0gbnVsbAorICAgICAgICAgICAgICAgICYmIG9sZENvbnRlbnRWaWV3LmdldFBhY2thZ2UoKS5lcXVhbHMoY29udGVudFZpZXcuZ2V0UGFja2FnZSgpKQorICAgICAgICAgICAgICAgICYmIG9sZENvbnRlbnRWaWV3LmdldExheW91dElkKCkgPT0gY29udGVudFZpZXcuZ2V0TGF5b3V0SWQoKSkgeworICAgICAgICAgICAgaWYgKFNQRVcpIFNsb2cuZChUQUcsICJyZXVzaW5nIG5vdGlmaWNhdGlvbiIpOworICAgICAgICAgICAgb2xkRW50cnkubm90aWZpY2F0aW9uID0gbm90aWZpY2F0aW9uOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAvLyBSZWFwcGx5IHRoZSBSZW1vdGVWaWV3cworICAgICAgICAgICAgICAgIGNvbnRlbnRWaWV3LnJlYXBwbHkodGhpcywgb2xkRW50cnkuY29udGVudCk7CisgICAgICAgICAgICAgICAgLy8gdXBkYXRlIHRoZSBjb250ZW50SW50ZW50CisgICAgICAgICAgICAgICAgZmluYWwgUGVuZGluZ0ludGVudCBjb250ZW50SW50ZW50ID0gbm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvbi5jb250ZW50SW50ZW50OworICAgICAgICAgICAgICAgIGlmIChjb250ZW50SW50ZW50ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgb2xkRW50cnkuY29udGVudC5zZXRPbkNsaWNrTGlzdGVuZXIobmV3IExhdW5jaGVyKGNvbnRlbnRJbnRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbi5wa2csIG5vdGlmaWNhdGlvbi50YWcsIG5vdGlmaWNhdGlvbi5pZCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvLyBVcGRhdGUgdGhlIGljb24uCisgICAgICAgICAgICAgICAgZmluYWwgU3RhdHVzQmFySWNvbiBpYyA9IG5ldyBTdGF0dXNCYXJJY29uKG5vdGlmaWNhdGlvbi5wa2csCisgICAgICAgICAgICAgICAgICAgICAgICBub3RpZmljYXRpb24ubm90aWZpY2F0aW9uLmljb24sIG5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb24uaWNvbkxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgbm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvbi5udW1iZXIpOworICAgICAgICAgICAgICAgIGlmICghb2xkRW50cnkuaWNvbi5zZXQoaWMpKSB7CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZU5vdGlmaWNhdGlvbkVycm9yKGtleSwgbm90aWZpY2F0aW9uLCAiQ291bGRuJ3QgdXBkYXRlIGljb246ICIgKyBpYyk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXRjaCAoUnVudGltZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgLy8gSXQgZmFpbGVkIHRvIGFkZCBjbGVhbmx5LiAgTG9nLCBhbmQgcmVtb3ZlIHRoZSB2aWV3IGZyb20gdGhlIHBhbmVsLgorICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsICJDb3VsZG4ndCByZWFwcGx5IHZpZXdzIGZvciBwYWNrYWdlICIgKyBjb250ZW50Vmlldy5nZXRQYWNrYWdlKCksIGUpOworICAgICAgICAgICAgICAgIHJlbW92ZU5vdGlmaWNhdGlvblZpZXdzKGtleSk7CisgICAgICAgICAgICAgICAgYWRkTm90aWZpY2F0aW9uVmlld3Moa2V5LCBub3RpZmljYXRpb24pOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKFNQRVcpIFNsb2cuZChUQUcsICJub3QgcmV1c2luZyBub3RpZmljYXRpb24iKTsKKyAgICAgICAgICAgIHJlbW92ZU5vdGlmaWNhdGlvblZpZXdzKGtleSk7CisgICAgICAgICAgICBhZGROb3RpZmljYXRpb25WaWV3cyhrZXksIG5vdGlmaWNhdGlvbik7CisgICAgICAgIH0KKworICAgICAgICAvLyBSZXN0YXJ0IHRoZSB0aWNrZXIgaWYgaXQncyBzdGlsbCBydW5uaW5nCisgICAgICAgIHRpY2sobm90aWZpY2F0aW9uKTsKKworICAgICAgICAvLyBSZWNhbGN1bGF0ZSB0aGUgcG9zaXRpb24gb2YgdGhlIHNsaWRpbmcgd2luZG93cyBhbmQgdGhlIHRpdGxlcy4KKyAgICAgICAgc2V0QXJlVGhlcmVOb3RpZmljYXRpb25zKCk7CisgICAgICAgIHVwZGF0ZUV4cGFuZGVkVmlld1BvcyhFWFBBTkRFRF9MRUFWRV9BTE9ORSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgcmVtb3ZlTm90aWZpY2F0aW9uKElCaW5kZXIga2V5KSB7CisgICAgICAgIGlmIChTUEVXKSBTbG9nLmQoVEFHLCAicmVtb3ZlTm90aWZpY2F0aW9uIGtleT0iICsga2V5KTsKKyAgICAgICAgU3RhdHVzQmFyTm90aWZpY2F0aW9uIG9sZCA9IHJlbW92ZU5vdGlmaWNhdGlvblZpZXdzKGtleSk7CisKKyAgICAgICAgaWYgKG9sZCAhPSBudWxsKSB7CisgICAgICAgICAgICAvLyBDYW5jZWwgdGhlIHRpY2tlciBpZiBpdCdzIHN0aWxsIHJ1bm5pbmcKKyAgICAgICAgICAgIG1UaWNrZXIucmVtb3ZlRW50cnkob2xkKTsKKworICAgICAgICAgICAgLy8gUmVjYWxjdWxhdGUgdGhlIHBvc2l0aW9uIG9mIHRoZSBzbGlkaW5nIHdpbmRvd3MgYW5kIHRoZSB0aXRsZXMuCisgICAgICAgICAgICBzZXRBcmVUaGVyZU5vdGlmaWNhdGlvbnMoKTsKKyAgICAgICAgICAgIHVwZGF0ZUV4cGFuZGVkVmlld1BvcyhFWFBBTkRFRF9MRUFWRV9BTE9ORSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIGludCBjaG9vc2VJY29uSW5kZXgoYm9vbGVhbiBpc09uZ29pbmcsIGludCB2aWV3SW5kZXgpIHsKKyAgICAgICAgZmluYWwgaW50IGxhdGVzdFNpemUgPSBtTGF0ZXN0LnNpemUoKTsKKyAgICAgICAgaWYgKGlzT25nb2luZykgeworICAgICAgICAgICAgcmV0dXJuIGxhdGVzdFNpemUgKyAobU9uZ29pbmcuc2l6ZSgpIC0gdmlld0luZGV4KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBsYXRlc3RTaXplIC0gdmlld0luZGV4OworICAgICAgICB9CisgICAgfQorCisgICAgVmlld1tdIG1ha2VOb3RpZmljYXRpb25WaWV3KFN0YXR1c0Jhck5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24sIFZpZXdHcm91cCBwYXJlbnQpIHsKKyAgICAgICAgTm90aWZpY2F0aW9uIG4gPSBub3RpZmljYXRpb24ubm90aWZpY2F0aW9uOworICAgICAgICBSZW1vdGVWaWV3cyByZW1vdGVWaWV3cyA9IG4uY29udGVudFZpZXc7CisgICAgICAgIGlmIChyZW1vdGVWaWV3cyA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGNyZWF0ZSB0aGUgcm93IHZpZXcKKyAgICAgICAgTGF5b3V0SW5mbGF0ZXIgaW5mbGF0ZXIgPSAoTGF5b3V0SW5mbGF0ZXIpZ2V0U3lzdGVtU2VydmljZShDb250ZXh0LkxBWU9VVF9JTkZMQVRFUl9TRVJWSUNFKTsKKyAgICAgICAgVmlldyByb3cgPSBpbmZsYXRlci5pbmZsYXRlKFIubGF5b3V0LnN0YXR1c19iYXJfbGF0ZXN0X2V2ZW50LCBwYXJlbnQsIGZhbHNlKTsKKworICAgICAgICAvLyBiaW5kIHRoZSBjbGljayBldmVudCB0byB0aGUgY29udGVudCBhcmVhCisgICAgICAgIFZpZXdHcm91cCBjb250ZW50ID0gKFZpZXdHcm91cClyb3cuZmluZFZpZXdCeUlkKFIuaWQuY29udGVudCk7CisgICAgICAgIGNvbnRlbnQuc2V0RGVzY2VuZGFudEZvY3VzYWJpbGl0eShWaWV3R3JvdXAuRk9DVVNfQkxPQ0tfREVTQ0VOREFOVFMpOworICAgICAgICBjb250ZW50LnNldE9uRm9jdXNDaGFuZ2VMaXN0ZW5lcihtRm9jdXNDaGFuZ2VMaXN0ZW5lcik7CisgICAgICAgIFBlbmRpbmdJbnRlbnQgY29udGVudEludGVudCA9IG4uY29udGVudEludGVudDsKKyAgICAgICAgaWYgKGNvbnRlbnRJbnRlbnQgIT0gbnVsbCkgeworICAgICAgICAgICAgY29udGVudC5zZXRPbkNsaWNrTGlzdGVuZXIobmV3IExhdW5jaGVyKGNvbnRlbnRJbnRlbnQsIG5vdGlmaWNhdGlvbi5wa2csCisgICAgICAgICAgICAgICAgICAgICAgICBub3RpZmljYXRpb24udGFnLCBub3RpZmljYXRpb24uaWQpKTsKKyAgICAgICAgfQorCisgICAgICAgIFZpZXcgZXhwYW5kZWQgPSBudWxsOworICAgICAgICBFeGNlcHRpb24gZXhjZXB0aW9uID0gbnVsbDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGV4cGFuZGVkID0gcmVtb3RlVmlld3MuYXBwbHkodGhpcywgY29udGVudCk7CisgICAgICAgIH0KKyAgICAgICAgY2F0Y2ggKFJ1bnRpbWVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgZXhjZXB0aW9uID0gZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoZXhwYW5kZWQgPT0gbnVsbCkgeworICAgICAgICAgICAgU3RyaW5nIGlkZW50ID0gbm90aWZpY2F0aW9uLnBrZyArICIvMHgiICsgSW50ZWdlci50b0hleFN0cmluZyhub3RpZmljYXRpb24uaWQpOworICAgICAgICAgICAgU2xvZy5lKFRBRywgImNvdWxkbid0IGluZmxhdGUgdmlldyBmb3Igbm90aWZpY2F0aW9uICIgKyBpZGVudCwgZXhjZXB0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY29udGVudC5hZGRWaWV3KGV4cGFuZGVkKTsKKyAgICAgICAgICAgIHJvdy5zZXREcmF3aW5nQ2FjaGVFbmFibGVkKHRydWUpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG5ldyBWaWV3W10geyByb3csIGNvbnRlbnQsIGV4cGFuZGVkIH07CisgICAgfQorCisgICAgU3RhdHVzQmFySWNvblZpZXcgYWRkTm90aWZpY2F0aW9uVmlld3MoSUJpbmRlciBrZXksIFN0YXR1c0Jhck5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pIHsKKyAgICAgICAgTm90aWZpY2F0aW9uRGF0YSBsaXN0OworICAgICAgICBWaWV3R3JvdXAgcGFyZW50OworICAgICAgICBmaW5hbCBib29sZWFuIGlzT25nb2luZyA9IG5vdGlmaWNhdGlvbi5pc09uZ29pbmcoKTsKKyAgICAgICAgaWYgKGlzT25nb2luZykgeworICAgICAgICAgICAgbGlzdCA9IG1PbmdvaW5nOworICAgICAgICAgICAgcGFyZW50ID0gbU9uZ29pbmdJdGVtczsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxpc3QgPSBtTGF0ZXN0OworICAgICAgICAgICAgcGFyZW50ID0gbUxhdGVzdEl0ZW1zOworICAgICAgICB9CisgICAgICAgIC8vIENvbnN0cnVjdCB0aGUgZXhwYW5kZWQgdmlldy4KKyAgICAgICAgZmluYWwgVmlld1tdIHZpZXdzID0gbWFrZU5vdGlmaWNhdGlvblZpZXcobm90aWZpY2F0aW9uLCBwYXJlbnQpOworICAgICAgICBpZiAodmlld3MgPT0gbnVsbCkgeworICAgICAgICAgICAgaGFuZGxlTm90aWZpY2F0aW9uRXJyb3Ioa2V5LCBub3RpZmljYXRpb24sICJDb3VsZG4ndCBleHBhbmQgUmVtb3RlVmlld3MgZm9yOiAiCisgICAgICAgICAgICAgICAgICAgICsgbm90aWZpY2F0aW9uKTsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisgICAgICAgIGZpbmFsIFZpZXcgcm93ID0gdmlld3NbMF07CisgICAgICAgIGZpbmFsIFZpZXcgY29udGVudCA9IHZpZXdzWzFdOworICAgICAgICBmaW5hbCBWaWV3IGV4cGFuZGVkID0gdmlld3NbMl07CisgICAgICAgIC8vIENvbnN0cnVjdCB0aGUgaWNvbi4KKyAgICAgICAgZmluYWwgU3RhdHVzQmFySWNvblZpZXcgaWNvblZpZXcgPSBuZXcgU3RhdHVzQmFySWNvblZpZXcodGhpcywKKyAgICAgICAgICAgICAgICBub3RpZmljYXRpb24ucGtnICsgIi8weCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG5vdGlmaWNhdGlvbi5pZCkpOworICAgICAgICBmaW5hbCBTdGF0dXNCYXJJY29uIGljID0gbmV3IFN0YXR1c0Jhckljb24obm90aWZpY2F0aW9uLnBrZywgbm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvbi5pY29uLAorICAgICAgICAgICAgICAgICAgICBub3RpZmljYXRpb24ubm90aWZpY2F0aW9uLmljb25MZXZlbCwgbm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvbi5udW1iZXIpOworICAgICAgICBpZiAoIWljb25WaWV3LnNldChpYykpIHsKKyAgICAgICAgICAgIGhhbmRsZU5vdGlmaWNhdGlvbkVycm9yKGtleSwgbm90aWZpY2F0aW9uLCAiQ291bGRpbmcgY3JlYXRlIGljb246ICIgKyBpYyk7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAgICAgICAvLyBBZGQgdGhlIGV4cGFuZGVkIHZpZXcuCisgICAgICAgIGZpbmFsIGludCB2aWV3SW5kZXggPSBsaXN0LmFkZChrZXksIG5vdGlmaWNhdGlvbiwgcm93LCBjb250ZW50LCBleHBhbmRlZCwgaWNvblZpZXcpOworICAgICAgICBwYXJlbnQuYWRkVmlldyhyb3csIHZpZXdJbmRleCk7CisgICAgICAgIC8vIEFkZCB0aGUgaWNvbi4KKyAgICAgICAgZmluYWwgaW50IGljb25JbmRleCA9IGNob29zZUljb25JbmRleChpc09uZ29pbmcsIHZpZXdJbmRleCk7CisgICAgICAgIG1Ob3RpZmljYXRpb25JY29ucy5hZGRWaWV3KGljb25WaWV3LCBpY29uSW5kZXgsCisgICAgICAgICAgICAgICAgbmV3IExpbmVhckxheW91dC5MYXlvdXRQYXJhbXMobUljb25TaXplLCBtSWNvblNpemUpKTsKKyAgICAgICAgcmV0dXJuIGljb25WaWV3OworICAgIH0KKworICAgIFN0YXR1c0Jhck5vdGlmaWNhdGlvbiByZW1vdmVOb3RpZmljYXRpb25WaWV3cyhJQmluZGVyIGtleSkgeworICAgICAgICBOb3RpZmljYXRpb25EYXRhLkVudHJ5IGVudHJ5ID0gbU9uZ29pbmcucmVtb3ZlKGtleSk7CisgICAgICAgIGlmIChlbnRyeSA9PSBudWxsKSB7CisgICAgICAgICAgICBlbnRyeSA9IG1MYXRlc3QucmVtb3ZlKGtleSk7CisgICAgICAgICAgICBpZiAoZW50cnkgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsICJyZW1vdmVOb3RpZmljYXRpb24gZm9yIHVua25vd24ga2V5OiAiICsga2V5KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAvLyBSZW1vdmUgdGhlIGV4cGFuZGVkIHZpZXcuCisgICAgICAgICgoVmlld0dyb3VwKWVudHJ5LnJvdy5nZXRQYXJlbnQoKSkucmVtb3ZlVmlldyhlbnRyeS5yb3cpOworICAgICAgICAvLyBSZW1vdmUgdGhlIGljb24uCisgICAgICAgICgoVmlld0dyb3VwKWVudHJ5Lmljb24uZ2V0UGFyZW50KCkpLnJlbW92ZVZpZXcoZW50cnkuaWNvbik7CisKKyAgICAgICAgcmV0dXJuIGVudHJ5Lm5vdGlmaWNhdGlvbjsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgc2V0QXJlVGhlcmVOb3RpZmljYXRpb25zKCkgeworICAgICAgICBib29sZWFuIG9uZ29pbmcgPSBtT25nb2luZy5oYXNWaXNpYmxlSXRlbXMoKTsKKyAgICAgICAgYm9vbGVhbiBsYXRlc3QgPSBtTGF0ZXN0Lmhhc1Zpc2libGVJdGVtcygpOworCisgICAgICAgIC8vIChubyBvbmdvaW5nIG5vdGlmaWNhdGlvbnMgYXJlIGNsZWFyYWJsZSkKKyAgICAgICAgaWYgKG1MYXRlc3QuaGFzQ2xlYXJhYmxlSXRlbXMoKSkgeworICAgICAgICAgICAgbUNsZWFyQnV0dG9uLnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1DbGVhckJ1dHRvbi5zZXRWaXNpYmlsaXR5KFZpZXcuSU5WSVNJQkxFKTsKKyAgICAgICAgfQorCisgICAgICAgIG1PbmdvaW5nVGl0bGUuc2V0VmlzaWJpbGl0eShvbmdvaW5nID8gVmlldy5WSVNJQkxFIDogVmlldy5HT05FKTsKKyAgICAgICAgbUxhdGVzdFRpdGxlLnNldFZpc2liaWxpdHkobGF0ZXN0ID8gVmlldy5WSVNJQkxFIDogVmlldy5HT05FKTsKKworICAgICAgICBpZiAob25nb2luZyB8fCBsYXRlc3QpIHsKKyAgICAgICAgICAgIG1Ob05vdGlmaWNhdGlvbnNUaXRsZS5zZXRWaXNpYmlsaXR5KFZpZXcuR09ORSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtTm9Ob3RpZmljYXRpb25zVGl0bGUuc2V0VmlzaWJpbGl0eShWaWV3LlZJU0lCTEUpOworICAgICAgICB9CisgICAgfQorCisKKyAgICAvKioKKyAgICAgKiBTdGF0ZSBpcyBvbmUgb3IgbW9yZSBvZiB0aGUgRElTQUJMRSBjb25zdGFudHMgZnJvbSBTdGF0dXNCYXJNYW5hZ2VyLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGRpc2FibGUoaW50IHN0YXRlKSB7CisgICAgICAgIGZpbmFsIGludCBvbGQgPSBtRGlzYWJsZWQ7CisgICAgICAgIGZpbmFsIGludCBkaWZmID0gc3RhdGUgXiBvbGQ7CisgICAgICAgIG1EaXNhYmxlZCA9IHN0YXRlOworCisgICAgICAgIGlmICgoZGlmZiAmIFN0YXR1c0Jhck1hbmFnZXIuRElTQUJMRV9FWFBBTkQpICE9IDApIHsKKyAgICAgICAgICAgIGlmICgoc3RhdGUgJiBTdGF0dXNCYXJNYW5hZ2VyLkRJU0FCTEVfRVhQQU5EKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgU2xvZy5kKFRBRywgIkRJU0FCTEVfRVhQQU5EOiB5ZXMiKTsKKyAgICAgICAgICAgICAgICBhbmltYXRlQ29sbGFwc2UoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoKGRpZmYgJiBTdGF0dXNCYXJNYW5hZ2VyLkRJU0FCTEVfTk9USUZJQ0FUSU9OX0lDT05TKSAhPSAwKSB7CisgICAgICAgICAgICBpZiAoKHN0YXRlICYgU3RhdHVzQmFyTWFuYWdlci5ESVNBQkxFX05PVElGSUNBVElPTl9JQ09OUykgIT0gMCkgeworICAgICAgICAgICAgICAgIFNsb2cuZChUQUcsICJESVNBQkxFX05PVElGSUNBVElPTl9JQ09OUzogeWVzIik7CisgICAgICAgICAgICAgICAgaWYgKG1UaWNraW5nKSB7CisgICAgICAgICAgICAgICAgICAgIG1UaWNrZXIuaGFsdCgpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHNldE5vdGlmaWNhdGlvbkljb25WaXNpYmlsaXR5KGZhbHNlLCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmFuaW0uZmFkZV9vdXQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgU2xvZy5kKFRBRywgIkRJU0FCTEVfTk9USUZJQ0FUSU9OX0lDT05TOiBubyIpOworICAgICAgICAgICAgICAgIGlmICghbUV4cGFuZGVkVmlzaWJsZSkgeworICAgICAgICAgICAgICAgICAgICBzZXROb3RpZmljYXRpb25JY29uVmlzaWJpbGl0eSh0cnVlLCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmFuaW0uZmFkZV9pbik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKChkaWZmICYgU3RhdHVzQmFyTWFuYWdlci5ESVNBQkxFX05PVElGSUNBVElPTl9USUNLRVIpICE9IDApIHsKKyAgICAgICAgICAgIGlmIChtVGlja2luZyAmJiAoc3RhdGUgJiBTdGF0dXNCYXJNYW5hZ2VyLkRJU0FCTEVfTk9USUZJQ0FUSU9OX1RJQ0tFUikgIT0gMCkgeworICAgICAgICAgICAgICAgIFNsb2cuZChUQUcsICJESVNBQkxFX05PVElGSUNBVElPTl9USUNLRVI6IHllcyIpOworICAgICAgICAgICAgICAgIG1UaWNrZXIuaGFsdCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQWxsIGNoYW5nZXMgdG8gdGhlIHN0YXR1cyBiYXIgYW5kIG5vdGlmaWNhdGlvbnMgZnVubmVsIHRocm91Z2ggaGVyZSBhbmQgYXJlIGJhdGNoZWQuCisgICAgICovCisgICAgcHJpdmF0ZSBjbGFzcyBIIGV4dGVuZHMgSGFuZGxlciB7CisgICAgICAgIHB1YmxpYyB2b2lkIGhhbmRsZU1lc3NhZ2UoTWVzc2FnZSBtKSB7CisgICAgICAgICAgICBzd2l0Y2ggKG0ud2hhdCkgeworICAgICAgICAgICAgICAgIGNhc2UgTVNHX0FOSU1BVEU6CisgICAgICAgICAgICAgICAgICAgIGRvQW5pbWF0aW9uKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgTVNHX0FOSU1BVEVfUkVWRUFMOgorICAgICAgICAgICAgICAgICAgICBkb1JldmVhbEFuaW1hdGlvbigpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIE1TR19TSE9XX0lOVFJVREVSOgorICAgICAgICAgICAgICAgICAgICBzZXRJbnRydWRlckFsZXJ0VmlzaWJpbGl0eSh0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBNU0dfSElERV9JTlRSVURFUjoKKyAgICAgICAgICAgICAgICAgICAgc2V0SW50cnVkZXJBbGVydFZpc2liaWxpdHkoZmFsc2UpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIFZpZXcuT25Gb2N1c0NoYW5nZUxpc3RlbmVyIG1Gb2N1c0NoYW5nZUxpc3RlbmVyID0gbmV3IFZpZXcuT25Gb2N1c0NoYW5nZUxpc3RlbmVyKCkgeworICAgICAgICBwdWJsaWMgdm9pZCBvbkZvY3VzQ2hhbmdlKFZpZXcgdiwgYm9vbGVhbiBoYXNGb2N1cykgeworICAgICAgICAgICAgLy8gQmVjYXVzZSAndicgaXMgYSBWaWV3R3JvdXAsIGFsbCBpdHMgY2hpbGRyZW4gd2lsbCBiZSAodW4pc2VsZWN0ZWQKKyAgICAgICAgICAgIC8vIHRvbywgd2hpY2ggYWxsb3dzIG1hcnF1ZWVpbmcgdG8gd29yay4KKyAgICAgICAgICAgIHYuc2V0U2VsZWN0ZWQoaGFzRm9jdXMpOworICAgICAgICB9CisgICAgfTsKKworICAgIHByaXZhdGUgdm9pZCBtYWtlRXhwYW5kZWRWaXNpYmxlKCkgeworICAgICAgICBpZiAoU1BFVykgU2xvZy5kKFRBRywgIk1ha2UgZXhwYW5kZWQgdmlzaWJsZTogZXhwYW5kZWQgdmlzaWJsZT0iICsgbUV4cGFuZGVkVmlzaWJsZSk7CisgICAgICAgIGlmIChtRXhwYW5kZWRWaXNpYmxlKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbUV4cGFuZGVkVmlzaWJsZSA9IHRydWU7CisgICAgICAgIHZpc2liaWxpdHlDaGFuZ2VkKHRydWUpOworCisgICAgICAgIHVwZGF0ZUV4cGFuZGVkVmlld1BvcyhFWFBBTkRFRF9MRUFWRV9BTE9ORSk7CisgICAgICAgIG1FeHBhbmRlZFBhcmFtcy5mbGFncyAmPSB+V2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19OT1RfRk9DVVNBQkxFOworICAgICAgICBtRXhwYW5kZWRQYXJhbXMuZmxhZ3MgfD0gV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19BTFRfRk9DVVNBQkxFX0lNOworICAgICAgICBtRXhwYW5kZWREaWFsb2cuZ2V0V2luZG93KCkuc2V0QXR0cmlidXRlcyhtRXhwYW5kZWRQYXJhbXMpOworICAgICAgICBtRXhwYW5kZWRWaWV3LnJlcXVlc3RGb2N1cyhWaWV3LkZPQ1VTX0ZPUldBUkQpOworICAgICAgICBtVHJhY2tpbmdWaWV3LnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKKworICAgICAgICBpZiAoIW1UaWNraW5nKSB7CisgICAgICAgICAgICBzZXREYXRlVmlld1Zpc2liaWxpdHkodHJ1ZSwgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5hbmltLmZhZGVfaW4pOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgYW5pbWF0ZUV4cGFuZCgpIHsKKyAgICAgICAgaWYgKFNQRVcpIFNsb2cuZChUQUcsICJBbmltYXRlIGV4cGFuZDogZXhwYW5kZWQ9IiArIG1FeHBhbmRlZCk7CisgICAgICAgIGlmICgobURpc2FibGVkICYgU3RhdHVzQmFyTWFuYWdlci5ESVNBQkxFX0VYUEFORCkgIT0gMCkgeworICAgICAgICAgICAgcmV0dXJuIDsKKyAgICAgICAgfQorICAgICAgICBpZiAobUV4cGFuZGVkKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBwcmVwYXJlVHJhY2tpbmcoMCwgdHJ1ZSk7CisgICAgICAgIHBlcmZvcm1GbGluZygwLCAyMDAwLjBmLCB0cnVlKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBhbmltYXRlQ29sbGFwc2UoKSB7CisgICAgICAgIGlmIChTUEVXKSB7CisgICAgICAgICAgICBTbG9nLmQoVEFHLCAiYW5pbWF0ZUNvbGxhcHNlKCk6IG1FeHBhbmRlZD0iICsgbUV4cGFuZGVkCisgICAgICAgICAgICAgICAgICAgICsgIiBtRXhwYW5kZWRWaXNpYmxlPSIgKyBtRXhwYW5kZWRWaXNpYmxlCisgICAgICAgICAgICAgICAgICAgICsgIiBtRXhwYW5kZWQ9IiArIG1FeHBhbmRlZAorICAgICAgICAgICAgICAgICAgICArICIgbUFuaW1hdGluZz0iICsgbUFuaW1hdGluZworICAgICAgICAgICAgICAgICAgICArICIgbUFuaW1ZPSIgKyBtQW5pbVkKKyAgICAgICAgICAgICAgICAgICAgKyAiIG1BbmltVmVsPSIgKyBtQW5pbVZlbCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW1FeHBhbmRlZFZpc2libGUpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGludCB5OworICAgICAgICBpZiAobUFuaW1hdGluZykgeworICAgICAgICAgICAgeSA9IChpbnQpbUFuaW1ZOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgeSA9IG1EaXNwbGF5LmdldEhlaWdodCgpLTE7CisgICAgICAgIH0KKyAgICAgICAgLy8gTGV0IHRoZSBmbGluZyB0aGluayB0aGF0IHdlJ3JlIG9wZW4gc28gaXQgZ29lcyBpbiB0aGUgcmlnaHQgZGlyZWN0aW9uCisgICAgICAgIC8vIGFuZCBkb2Vzbid0IHRyeSB0byByZS1vcGVuIHRoZSB3aW5kb3dzaGFkZS4KKyAgICAgICAgbUV4cGFuZGVkID0gdHJ1ZTsKKyAgICAgICAgcHJlcGFyZVRyYWNraW5nKHksIGZhbHNlKTsKKyAgICAgICAgcGVyZm9ybUZsaW5nKHksIC0yMDAwLjBmLCB0cnVlKTsKKyAgICB9CisKKyAgICB2b2lkIHBlcmZvcm1FeHBhbmQoKSB7CisgICAgICAgIGlmIChTUEVXKSBTbG9nLmQoVEFHLCAicGVyZm9ybUV4cGFuZDogbUV4cGFuZGVkPSIgKyBtRXhwYW5kZWQpOworICAgICAgICBpZiAoKG1EaXNhYmxlZCAmIFN0YXR1c0Jhck1hbmFnZXIuRElTQUJMRV9FWFBBTkQpICE9IDApIHsKKyAgICAgICAgICAgIHJldHVybiA7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1FeHBhbmRlZCkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgbUV4cGFuZGVkID0gdHJ1ZTsKKyAgICAgICAgbWFrZUV4cGFuZGVkVmlzaWJsZSgpOworICAgICAgICB1cGRhdGVFeHBhbmRlZFZpZXdQb3MoRVhQQU5ERURfRlVMTF9PUEVOKTsKKworICAgICAgICBpZiAoZmFsc2UpIHBvc3RTdGFydFRyYWNpbmcoKTsKKyAgICB9CisKKyAgICB2b2lkIHBlcmZvcm1Db2xsYXBzZSgpIHsKKyAgICAgICAgaWYgKFNQRVcpIFNsb2cuZChUQUcsICJwZXJmb3JtQ29sbGFwc2U6IG1FeHBhbmRlZD0iICsgbUV4cGFuZGVkCisgICAgICAgICAgICAgICAgKyAiIG1FeHBhbmRlZFZpc2libGU9IiArIG1FeHBhbmRlZFZpc2libGUpOworCisgICAgICAgIGlmICghbUV4cGFuZGVkVmlzaWJsZSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG1FeHBhbmRlZFZpc2libGUgPSBmYWxzZTsKKyAgICAgICAgdmlzaWJpbGl0eUNoYW5nZWQoZmFsc2UpOworICAgICAgICBtRXhwYW5kZWRQYXJhbXMuZmxhZ3MgfD0gV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19OT1RfRk9DVVNBQkxFOworICAgICAgICBtRXhwYW5kZWRQYXJhbXMuZmxhZ3MgJj0gfldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfQUxUX0ZPQ1VTQUJMRV9JTTsKKyAgICAgICAgbUV4cGFuZGVkRGlhbG9nLmdldFdpbmRvdygpLnNldEF0dHJpYnV0ZXMobUV4cGFuZGVkUGFyYW1zKTsKKyAgICAgICAgbVRyYWNraW5nVmlldy5zZXRWaXNpYmlsaXR5KFZpZXcuR09ORSk7CisKKyAgICAgICAgaWYgKChtRGlzYWJsZWQgJiBTdGF0dXNCYXJNYW5hZ2VyLkRJU0FCTEVfTk9USUZJQ0FUSU9OX0lDT05TKSA9PSAwKSB7CisgICAgICAgICAgICBzZXROb3RpZmljYXRpb25JY29uVmlzaWJpbGl0eSh0cnVlLCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmFuaW0uZmFkZV9pbik7CisgICAgICAgIH0KKyAgICAgICAgc2V0RGF0ZVZpZXdWaXNpYmlsaXR5KGZhbHNlLCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmFuaW0uZmFkZV9vdXQpOworCisgICAgICAgIGlmICghbUV4cGFuZGVkKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbUV4cGFuZGVkID0gZmFsc2U7CisgICAgfQorCisgICAgdm9pZCBkb0FuaW1hdGlvbigpIHsKKyAgICAgICAgaWYgKG1BbmltYXRpbmcpIHsKKyAgICAgICAgICAgIGlmIChTUEVXKSBTbG9nLmQoVEFHLCAiZG9BbmltYXRpb24iKTsKKyAgICAgICAgICAgIGlmIChTUEVXKSBTbG9nLmQoVEFHLCAiZG9BbmltYXRpb24gYmVmb3JlIG1BbmltWT0iICsgbUFuaW1ZKTsKKyAgICAgICAgICAgIGluY3JlbWVudEFuaW0oKTsKKyAgICAgICAgICAgIGlmIChTUEVXKSBTbG9nLmQoVEFHLCAiZG9BbmltYXRpb24gYWZ0ZXIgIG1BbmltWT0iICsgbUFuaW1ZKTsKKyAgICAgICAgICAgIGlmIChtQW5pbVkgPj0gbURpc3BsYXkuZ2V0SGVpZ2h0KCktMSkgeworICAgICAgICAgICAgICAgIGlmIChTUEVXKSBTbG9nLmQoVEFHLCAiQW5pbWF0aW9uIGNvbXBsZXRlZCB0byBleHBhbmRlZCBzdGF0ZS4iKTsKKyAgICAgICAgICAgICAgICBtQW5pbWF0aW5nID0gZmFsc2U7CisgICAgICAgICAgICAgICAgdXBkYXRlRXhwYW5kZWRWaWV3UG9zKEVYUEFOREVEX0ZVTExfT1BFTik7CisgICAgICAgICAgICAgICAgcGVyZm9ybUV4cGFuZCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAobUFuaW1ZIDwgbVN0YXR1c0JhclZpZXcuZ2V0SGVpZ2h0KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoU1BFVykgU2xvZy5kKFRBRywgIkFuaW1hdGlvbiBjb21wbGV0ZWQgdG8gY29sbGFwc2VkIHN0YXRlLiIpOworICAgICAgICAgICAgICAgIG1BbmltYXRpbmcgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB1cGRhdGVFeHBhbmRlZFZpZXdQb3MoMCk7CisgICAgICAgICAgICAgICAgcGVyZm9ybUNvbGxhcHNlKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICB1cGRhdGVFeHBhbmRlZFZpZXdQb3MoKGludCltQW5pbVkpOworICAgICAgICAgICAgICAgIG1DdXJBbmltYXRpb25UaW1lICs9IEFOSU1fRlJBTUVfRFVSQVRJT047CisgICAgICAgICAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2VBdFRpbWUobUhhbmRsZXIub2J0YWluTWVzc2FnZShNU0dfQU5JTUFURSksIG1DdXJBbmltYXRpb25UaW1lKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgc3RvcFRyYWNraW5nKCkgeworICAgICAgICBtVHJhY2tpbmcgPSBmYWxzZTsKKyAgICAgICAgbVZlbG9jaXR5VHJhY2tlci5yZWN5Y2xlKCk7CisgICAgICAgIG1WZWxvY2l0eVRyYWNrZXIgPSBudWxsOworICAgIH0KKworICAgIHZvaWQgaW5jcmVtZW50QW5pbSgpIHsKKyAgICAgICAgbG9uZyBub3cgPSBTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKTsKKyAgICAgICAgZmxvYXQgdCA9ICgoZmxvYXQpKG5vdyAtIG1BbmltTGFzdFRpbWUpKSAvIDEwMDA7ICAgICAgICAgICAgLy8gbXMgLT4gcworICAgICAgICBmaW5hbCBmbG9hdCB5ID0gbUFuaW1ZOworICAgICAgICBmaW5hbCBmbG9hdCB2ID0gbUFuaW1WZWw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBweC9zCisgICAgICAgIGZpbmFsIGZsb2F0IGEgPSBtQW5pbUFjY2VsOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHB4L3MvcworICAgICAgICBtQW5pbVkgPSB5ICsgKHYqdCkgKyAoMC41ZiphKnQqdCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBweAorICAgICAgICBtQW5pbVZlbCA9IHYgKyAoYSp0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBweC9zCisgICAgICAgIG1BbmltTGFzdFRpbWUgPSBub3c7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1zCisgICAgICAgIC8vU2xvZy5kKFRBRywgInk9IiArIHkgKyAiIHY9IiArIHYgKyAiIGE9IiArIGEgKyAiIHQ9IiArIHQgKyAiIG1BbmltWT0iICsgbUFuaW1ZCisgICAgICAgIC8vICAgICAgICArICIgbUFuaW1BY2NlbD0iICsgbUFuaW1BY2NlbCk7CisgICAgfQorCisgICAgdm9pZCBkb1JldmVhbEFuaW1hdGlvbigpIHsKKyAgICAgICAgZmluYWwgaW50IGggPSBtQ2xvc2VWaWV3LmdldEhlaWdodCgpICsgbVN0YXR1c0JhclZpZXcuZ2V0SGVpZ2h0KCk7CisgICAgICAgIGlmIChtQW5pbWF0aW5nUmV2ZWFsICYmIG1BbmltYXRpbmcgJiYgbUFuaW1ZIDwgaCkgeworICAgICAgICAgICAgaW5jcmVtZW50QW5pbSgpOworICAgICAgICAgICAgaWYgKG1BbmltWSA+PSBoKSB7CisgICAgICAgICAgICAgICAgbUFuaW1ZID0gaDsKKyAgICAgICAgICAgICAgICB1cGRhdGVFeHBhbmRlZFZpZXdQb3MoKGludCltQW5pbVkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB1cGRhdGVFeHBhbmRlZFZpZXdQb3MoKGludCltQW5pbVkpOworICAgICAgICAgICAgICAgIG1DdXJBbmltYXRpb25UaW1lICs9IEFOSU1fRlJBTUVfRFVSQVRJT047CisgICAgICAgICAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2VBdFRpbWUobUhhbmRsZXIub2J0YWluTWVzc2FnZShNU0dfQU5JTUFURV9SRVZFQUwpLAorICAgICAgICAgICAgICAgICAgICAgICAgbUN1ckFuaW1hdGlvblRpbWUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBwcmVwYXJlVHJhY2tpbmcoaW50IHksIGJvb2xlYW4gb3BlbmluZykgeworICAgICAgICBtVHJhY2tpbmcgPSB0cnVlOworICAgICAgICBtVmVsb2NpdHlUcmFja2VyID0gVmVsb2NpdHlUcmFja2VyLm9idGFpbigpOworICAgICAgICBpZiAob3BlbmluZykgeworICAgICAgICAgICAgbUFuaW1BY2NlbCA9IDIwMDAuMGY7CisgICAgICAgICAgICBtQW5pbVZlbCA9IDIwMDsKKyAgICAgICAgICAgIG1BbmltWSA9IG1TdGF0dXNCYXJWaWV3LmdldEhlaWdodCgpOworICAgICAgICAgICAgdXBkYXRlRXhwYW5kZWRWaWV3UG9zKChpbnQpbUFuaW1ZKTsKKyAgICAgICAgICAgIG1BbmltYXRpbmcgPSB0cnVlOworICAgICAgICAgICAgbUFuaW1hdGluZ1JldmVhbCA9IHRydWU7CisgICAgICAgICAgICBtSGFuZGxlci5yZW1vdmVNZXNzYWdlcyhNU0dfQU5JTUFURSk7CisgICAgICAgICAgICBtSGFuZGxlci5yZW1vdmVNZXNzYWdlcyhNU0dfQU5JTUFURV9SRVZFQUwpOworICAgICAgICAgICAgbG9uZyBub3cgPSBTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKTsKKyAgICAgICAgICAgIG1BbmltTGFzdFRpbWUgPSBub3c7CisgICAgICAgICAgICBtQ3VyQW5pbWF0aW9uVGltZSA9IG5vdyArIEFOSU1fRlJBTUVfRFVSQVRJT047CisgICAgICAgICAgICBtQW5pbWF0aW5nID0gdHJ1ZTsKKyAgICAgICAgICAgIG1IYW5kbGVyLnNlbmRNZXNzYWdlQXRUaW1lKG1IYW5kbGVyLm9idGFpbk1lc3NhZ2UoTVNHX0FOSU1BVEVfUkVWRUFMKSwKKyAgICAgICAgICAgICAgICAgICAgbUN1ckFuaW1hdGlvblRpbWUpOworICAgICAgICAgICAgbWFrZUV4cGFuZGVkVmlzaWJsZSgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gaXQncyBvcGVuLCBjbG9zZSBpdD8KKyAgICAgICAgICAgIGlmIChtQW5pbWF0aW5nKSB7CisgICAgICAgICAgICAgICAgbUFuaW1hdGluZyA9IGZhbHNlOworICAgICAgICAgICAgICAgIG1IYW5kbGVyLnJlbW92ZU1lc3NhZ2VzKE1TR19BTklNQVRFKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHVwZGF0ZUV4cGFuZGVkVmlld1Bvcyh5ICsgbVZpZXdEZWx0YSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHBlcmZvcm1GbGluZyhpbnQgeSwgZmxvYXQgdmVsLCBib29sZWFuIGFsd2F5cykgeworICAgICAgICBtQW5pbWF0aW5nUmV2ZWFsID0gZmFsc2U7CisgICAgICAgIG1EaXNwbGF5SGVpZ2h0ID0gbURpc3BsYXkuZ2V0SGVpZ2h0KCk7CisKKyAgICAgICAgbUFuaW1ZID0geTsKKyAgICAgICAgbUFuaW1WZWwgPSB2ZWw7CisKKyAgICAgICAgLy9TbG9nLmQoVEFHLCAic3RhcnRpbmcgd2l0aCBtQW5pbVk9IiArIG1BbmltWSArICIgbUFuaW1WZWw9IiArIG1BbmltVmVsKTsKKworICAgICAgICBpZiAobUV4cGFuZGVkKSB7CisgICAgICAgICAgICBpZiAoIWFsd2F5cyAmJiAoCisgICAgICAgICAgICAgICAgICAgIHZlbCA+IDIwMC4wZgorICAgICAgICAgICAgICAgICAgICB8fCAoeSA+IChtRGlzcGxheUhlaWdodC0yNSkgJiYgdmVsID4gLTIwMC4wZikpKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgYXJlIGV4cGFuZGVkLCBidXQgdGhleSBkaWRuJ3QgbW92ZSBzdWZmaWNpZW50bHkgdG8gY2F1c2UKKyAgICAgICAgICAgICAgICAvLyB1cyB0byByZXRyYWN0LiAgQW5pbWF0ZSBiYWNrIHRvIHRoZSBleHBhbmRlZCBwb3NpdGlvbi4KKyAgICAgICAgICAgICAgICBtQW5pbUFjY2VsID0gMjAwMC4wZjsKKyAgICAgICAgICAgICAgICBpZiAodmVsIDwgMCkgeworICAgICAgICAgICAgICAgICAgICBtQW5pbVZlbCA9IDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gV2UgYXJlIGV4cGFuZGVkIGFuZCBhcmUgbm93IGdvaW5nIHRvIGFuaW1hdGUgYXdheS4KKyAgICAgICAgICAgICAgICBtQW5pbUFjY2VsID0gLTIwMDAuMGY7CisgICAgICAgICAgICAgICAgaWYgKHZlbCA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgbUFuaW1WZWwgPSAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChhbHdheXMgfHwgKAorICAgICAgICAgICAgICAgICAgICB2ZWwgPiAyMDAuMGYKKyAgICAgICAgICAgICAgICAgICAgfHwgKHkgPiAobURpc3BsYXlIZWlnaHQvMikgJiYgdmVsID4gLTIwMC4wZikpKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgYXJlIGNvbGxhcHNlZCwgYW5kIHRoZXkgbW92ZWQgZW5vdWdoIHRvIGFsbG93IHVzIHRvCisgICAgICAgICAgICAgICAgLy8gZXhwYW5kLiAgQW5pbWF0ZSBpbiB0aGUgbm90aWZpY2F0aW9ucy4KKyAgICAgICAgICAgICAgICBtQW5pbUFjY2VsID0gMjAwMC4wZjsKKyAgICAgICAgICAgICAgICBpZiAodmVsIDwgMCkgeworICAgICAgICAgICAgICAgICAgICBtQW5pbVZlbCA9IDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gV2UgYXJlIGNvbGxhcHNlZCwgYnV0IHRoZXkgZGlkbid0IG1vdmUgc3VmZmljaWVudGx5IHRvIGNhdXNlCisgICAgICAgICAgICAgICAgLy8gdXMgdG8gcmV0cmFjdC4gIEFuaW1hdGUgYmFjayB0byB0aGUgY29sbGFwc2VkIHBvc2l0aW9uLgorICAgICAgICAgICAgICAgIG1BbmltQWNjZWwgPSAtMjAwMC4wZjsKKyAgICAgICAgICAgICAgICBpZiAodmVsID4gMCkgeworICAgICAgICAgICAgICAgICAgICBtQW5pbVZlbCA9IDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIC8vU2xvZy5kKFRBRywgIm1BbmltWT0iICsgbUFuaW1ZICsgIiBtQW5pbVZlbD0iICsgbUFuaW1WZWwKKyAgICAgICAgLy8gICAgICAgICsgIiBtQW5pbUFjY2VsPSIgKyBtQW5pbUFjY2VsKTsKKworICAgICAgICBsb25nIG5vdyA9IFN5c3RlbUNsb2NrLnVwdGltZU1pbGxpcygpOworICAgICAgICBtQW5pbUxhc3RUaW1lID0gbm93OworICAgICAgICBtQ3VyQW5pbWF0aW9uVGltZSA9IG5vdyArIEFOSU1fRlJBTUVfRFVSQVRJT047CisgICAgICAgIG1BbmltYXRpbmcgPSB0cnVlOworICAgICAgICBtSGFuZGxlci5yZW1vdmVNZXNzYWdlcyhNU0dfQU5JTUFURSk7CisgICAgICAgIG1IYW5kbGVyLnJlbW92ZU1lc3NhZ2VzKE1TR19BTklNQVRFX1JFVkVBTCk7CisgICAgICAgIG1IYW5kbGVyLnNlbmRNZXNzYWdlQXRUaW1lKG1IYW5kbGVyLm9idGFpbk1lc3NhZ2UoTVNHX0FOSU1BVEUpLCBtQ3VyQW5pbWF0aW9uVGltZSk7CisgICAgICAgIHN0b3BUcmFja2luZygpOworICAgIH0KKworICAgIGJvb2xlYW4gaW50ZXJjZXB0VG91Y2hFdmVudChNb3Rpb25FdmVudCBldmVudCkgeworICAgICAgICBpZiAoU1BFVykgeworICAgICAgICAgICAgU2xvZy5kKFRBRywgIlRvdWNoOiByYXdZPSIgKyBldmVudC5nZXRSYXdZKCkgKyAiIGV2ZW50PSIgKyBldmVudCArICIgbURpc2FibGVkPSIKKyAgICAgICAgICAgICAgICArIG1EaXNhYmxlZCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoKG1EaXNhYmxlZCAmIFN0YXR1c0Jhck1hbmFnZXIuRElTQUJMRV9FWFBBTkQpICE9IDApIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGZpbmFsIGludCBzdGF0dXNCYXJTaXplID0gbVN0YXR1c0JhclZpZXcuZ2V0SGVpZ2h0KCk7CisgICAgICAgIGZpbmFsIGludCBoaXRTaXplID0gc3RhdHVzQmFyU2l6ZSoyOworICAgICAgICBpZiAoZXZlbnQuZ2V0QWN0aW9uKCkgPT0gTW90aW9uRXZlbnQuQUNUSU9OX0RPV04pIHsKKyAgICAgICAgICAgIGZpbmFsIGludCB5ID0gKGludClldmVudC5nZXRSYXdZKCk7CisKKyAgICAgICAgICAgIGlmICghbUV4cGFuZGVkKSB7CisgICAgICAgICAgICAgICAgbVZpZXdEZWx0YSA9IHN0YXR1c0JhclNpemUgLSB5OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtVHJhY2tpbmdWaWV3LmdldExvY2F0aW9uT25TY3JlZW4obUFic1Bvcyk7CisgICAgICAgICAgICAgICAgbVZpZXdEZWx0YSA9IG1BYnNQb3NbMV0gKyBtVHJhY2tpbmdWaWV3LmdldEhlaWdodCgpIC0geTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgoIW1FeHBhbmRlZCAmJiB5IDwgaGl0U2l6ZSkgfHwKKyAgICAgICAgICAgICAgICAgICAgKG1FeHBhbmRlZCAmJiB5ID4gKG1EaXNwbGF5LmdldEhlaWdodCgpLWhpdFNpemUpKSkgeworCisgICAgICAgICAgICAgICAgLy8gV2UgZHJvcCBldmVudHMgYXQgdGhlIGVkZ2Ugb2YgdGhlIHNjcmVlbiB0byBtYWtlIHRoZSB3aW5kb3dzaGFkZSBjb21lCisgICAgICAgICAgICAgICAgLy8gZG93biBieSBhY2NpZGVudCBsZXNzLCBlc3BlY2lhbGx5IHdoZW4gcHVzaGluZyBvcGVuIGEgZGV2aWNlIHdpdGggYSBrZXlib2FyZAorICAgICAgICAgICAgICAgIC8vIHRoYXQgcm90YXRlcyAobGlrZSBnMSBhbmQgZHJvaWQpCisgICAgICAgICAgICAgICAgaW50IHggPSAoaW50KWV2ZW50LmdldFJhd1goKTsKKyAgICAgICAgICAgICAgICBmaW5hbCBpbnQgZWRnZUJvcmRlciA9IG1FZGdlQm9yZGVyOworICAgICAgICAgICAgICAgIGlmICh4ID49IGVkZ2VCb3JkZXIgJiYgeCA8IG1EaXNwbGF5LmdldFdpZHRoKCkgLSBlZGdlQm9yZGVyKSB7CisgICAgICAgICAgICAgICAgICAgIHByZXBhcmVUcmFja2luZyh5LCAhbUV4cGFuZGVkKTsvLyBvcGVuaW5nIGlmIHdlJ3JlIG5vdCBhbHJlYWR5IGZ1bGx5IHZpc2libGUKKyAgICAgICAgICAgICAgICAgICAgbVZlbG9jaXR5VHJhY2tlci5hZGRNb3ZlbWVudChldmVudCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKG1UcmFja2luZykgeworICAgICAgICAgICAgbVZlbG9jaXR5VHJhY2tlci5hZGRNb3ZlbWVudChldmVudCk7CisgICAgICAgICAgICBmaW5hbCBpbnQgbWluWSA9IHN0YXR1c0JhclNpemUgKyBtQ2xvc2VWaWV3LmdldEhlaWdodCgpOworICAgICAgICAgICAgaWYgKGV2ZW50LmdldEFjdGlvbigpID09IE1vdGlvbkV2ZW50LkFDVElPTl9NT1ZFKSB7CisgICAgICAgICAgICAgICAgaW50IHkgPSAoaW50KWV2ZW50LmdldFJhd1koKTsKKyAgICAgICAgICAgICAgICBpZiAobUFuaW1hdGluZ1JldmVhbCAmJiB5IDwgbWluWSkgeworICAgICAgICAgICAgICAgICAgICAvLyBub3RoaW5nCisgICAgICAgICAgICAgICAgfSBlbHNlICB7CisgICAgICAgICAgICAgICAgICAgIG1BbmltYXRpbmdSZXZlYWwgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgdXBkYXRlRXhwYW5kZWRWaWV3UG9zKHkgKyBtVmlld0RlbHRhKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmdldEFjdGlvbigpID09IE1vdGlvbkV2ZW50LkFDVElPTl9VUCkgeworICAgICAgICAgICAgICAgIG1WZWxvY2l0eVRyYWNrZXIuY29tcHV0ZUN1cnJlbnRWZWxvY2l0eSgxMDAwKTsKKworICAgICAgICAgICAgICAgIGZsb2F0IHlWZWwgPSBtVmVsb2NpdHlUcmFja2VyLmdldFlWZWxvY2l0eSgpOworICAgICAgICAgICAgICAgIGJvb2xlYW4gbmVnYXRpdmUgPSB5VmVsIDwgMDsKKworICAgICAgICAgICAgICAgIGZsb2F0IHhWZWwgPSBtVmVsb2NpdHlUcmFja2VyLmdldFhWZWxvY2l0eSgpOworICAgICAgICAgICAgICAgIGlmICh4VmVsIDwgMCkgeworICAgICAgICAgICAgICAgICAgICB4VmVsID0gLXhWZWw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICh4VmVsID4gMTUwLjBmKSB7CisgICAgICAgICAgICAgICAgICAgIHhWZWwgPSAxNTAuMGY7IC8vIGxpbWl0IGhvdyBtdWNoIHdlIGNhcmUgYWJvdXQgdGhlIHggYXhpcworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGZsb2F0IHZlbCA9IChmbG9hdClNYXRoLmh5cG90KHlWZWwsIHhWZWwpOworICAgICAgICAgICAgICAgIGlmIChuZWdhdGl2ZSkgeworICAgICAgICAgICAgICAgICAgICB2ZWwgPSAtdmVsOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHBlcmZvcm1GbGluZygoaW50KWV2ZW50LmdldFJhd1koKSwgdmVsLCBmYWxzZSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcHJpdmF0ZSBjbGFzcyBMYXVuY2hlciBpbXBsZW1lbnRzIFZpZXcuT25DbGlja0xpc3RlbmVyIHsKKyAgICAgICAgcHJpdmF0ZSBQZW5kaW5nSW50ZW50IG1JbnRlbnQ7CisgICAgICAgIHByaXZhdGUgU3RyaW5nIG1Qa2c7CisgICAgICAgIHByaXZhdGUgU3RyaW5nIG1UYWc7CisgICAgICAgIHByaXZhdGUgaW50IG1JZDsKKworICAgICAgICBMYXVuY2hlcihQZW5kaW5nSW50ZW50IGludGVudCwgU3RyaW5nIHBrZywgU3RyaW5nIHRhZywgaW50IGlkKSB7CisgICAgICAgICAgICBtSW50ZW50ID0gaW50ZW50OworICAgICAgICAgICAgbVBrZyA9IHBrZzsKKyAgICAgICAgICAgIG1UYWcgPSB0YWc7CisgICAgICAgICAgICBtSWQgPSBpZDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIG9uQ2xpY2soVmlldyB2KSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIC8vIFRoZSBpbnRlbnQgd2UgYXJlIHNlbmRpbmcgaXMgZm9yIHRoZSBhcHBsaWNhdGlvbiwgd2hpY2gKKyAgICAgICAgICAgICAgICAvLyB3b24ndCBoYXZlIHBlcm1pc3Npb24gdG8gaW1tZWRpYXRlbHkgc3RhcnQgYW4gYWN0aXZpdHkgYWZ0ZXIKKyAgICAgICAgICAgICAgICAvLyB0aGUgdXNlciBzd2l0Y2hlcyB0byBob21lLiAgV2Uga25vdyBpdCBpcyBzYWZlIHRvIGRvIGF0IHRoaXMKKyAgICAgICAgICAgICAgICAvLyBwb2ludCwgc28gbWFrZSBzdXJlIG5ldyBhY3Rpdml0eSBzd2l0Y2hlcyBhcmUgbm93IGFsbG93ZWQuCisgICAgICAgICAgICAgICAgQWN0aXZpdHlNYW5hZ2VyTmF0aXZlLmdldERlZmF1bHQoKS5yZXN1bWVBcHBTd2l0Y2hlcygpOworICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1JbnRlbnQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGludFtdIHBvcyA9IG5ldyBpbnRbMl07CisgICAgICAgICAgICAgICAgdi5nZXRMb2NhdGlvbk9uU2NyZWVuKHBvcyk7CisgICAgICAgICAgICAgICAgSW50ZW50IG92ZXJsYXkgPSBuZXcgSW50ZW50KCk7CisgICAgICAgICAgICAgICAgb3ZlcmxheS5zZXRTb3VyY2VCb3VuZHMoCisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgUmVjdChwb3NbMF0sIHBvc1sxXSwgcG9zWzBdK3YuZ2V0V2lkdGgoKSwgcG9zWzFdK3YuZ2V0SGVpZ2h0KCkpKTsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBtSW50ZW50LnNlbmQoU3RhdHVzQmFyU2VydmljZS50aGlzLCAwLCBvdmVybGF5KTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChQZW5kaW5nSW50ZW50LkNhbmNlbGVkRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHN0YWNrIHRyYWNlIGlzbid0IHZlcnkgaGVscGZ1bCBoZXJlLiAgSnVzdCBsb2cgdGhlIGV4Y2VwdGlvbiBtZXNzYWdlLgorICAgICAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiU2VuZGluZyBjb250ZW50SW50ZW50IGZhaWxlZDogIiArIGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBtQmFyU2VydmljZS5vbk5vdGlmaWNhdGlvbkNsaWNrKG1Qa2csIG1UYWcsIG1JZCk7CisgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgICAgICAvLyBzeXN0ZW0gcHJvY2VzcyBpcyBkZWFkIGlmIHdlJ3JlIGhlcmUuCisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIGNsb3NlIHRoZSBzaGFkZSBpZiBpdCB3YXMgb3BlbgorICAgICAgICAgICAgYW5pbWF0ZUNvbGxhcHNlKCk7CisKKyAgICAgICAgICAgIC8vIElmIHRoaXMgY2xpY2sgd2FzIG9uIHRoZSBpbnRydWRlciBhbGVydCwgaGlkZSB0aGF0IGluc3RlYWQKKyAgICAgICAgICAgIG1IYW5kbGVyLnNlbmRFbXB0eU1lc3NhZ2UoTVNHX0hJREVfSU5UUlVERVIpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHRpY2soU3RhdHVzQmFyTm90aWZpY2F0aW9uIG4pIHsKKyAgICAgICAgLy8gU2hvdyB0aGUgdGlja2VyIGlmIG9uZSBpcyByZXF1ZXN0ZWQuIEFsc28gZG9uJ3QgZG8gdGhpcworICAgICAgICAvLyB1bnRpbCBzdGF0dXMgYmFyIHdpbmRvdyBpcyBhdHRhY2hlZCB0byB0aGUgd2luZG93IG1hbmFnZXIsCisgICAgICAgIC8vIGJlY2F1c2UuLi4gIHdlbGwsIHdoYXQncyB0aGUgcG9pbnQgb3RoZXJ3aXNlPyAgQW5kIHRyeWluZyB0bworICAgICAgICAvLyBydW4gYSB0aWNrZXIgd2l0aG91dCBiZWluZyBhdHRhY2hlZCB3aWxsIGNyYXNoIQorICAgICAgICBpZiAobi5ub3RpZmljYXRpb24udGlja2VyVGV4dCAhPSBudWxsICYmIG1TdGF0dXNCYXJWaWV3LmdldFdpbmRvd1Rva2VuKCkgIT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKDAgPT0gKG1EaXNhYmxlZCAmIChTdGF0dXNCYXJNYW5hZ2VyLkRJU0FCTEVfTk9USUZJQ0FUSU9OX0lDT05TCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBTdGF0dXNCYXJNYW5hZ2VyLkRJU0FCTEVfTk9USUZJQ0FUSU9OX1RJQ0tFUikpKSB7CisgICAgICAgICAgICAgICAgbVRpY2tlci5hZGRFbnRyeShuKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIENhbmNlbCB0aGlzIG5vdGlmaWNhdGlvbiBhbmQgdGVsbCB0aGUgU3RhdHVzQmFyTWFuYWdlclNlcnZpY2UgLyBOb3RpZmljYXRpb25NYW5hZ2VyU2VydmljZQorICAgICAqIGFib3V0IHRoZSBmYWlsdXJlLgorICAgICAqCisgICAgICogV0FSTklORzogdGhpcyB3aWxsIGNhbGwgYmFjayBpbnRvIHVzLiAgRG9uJ3QgaG9sZCBhbnkgbG9ja3MuCisgICAgICovCisgICAgdm9pZCBoYW5kbGVOb3RpZmljYXRpb25FcnJvcihJQmluZGVyIGtleSwgU3RhdHVzQmFyTm90aWZpY2F0aW9uIG4sIFN0cmluZyBtZXNzYWdlKSB7CisgICAgICAgIHJlbW92ZU5vdGlmaWNhdGlvbihrZXkpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgbUJhclNlcnZpY2Uub25Ob3RpZmljYXRpb25FcnJvcihuLnBrZywgbi50YWcsIG4uaWQsIG4udWlkLCBuLmluaXRpYWxQaWQsIG1lc3NhZ2UpOworICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgIC8vIFRoZSBlbmQgaXMgbmlnaC4KKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgY2xhc3MgTXlUaWNrZXIgZXh0ZW5kcyBUaWNrZXIgeworICAgICAgICBNeVRpY2tlcihDb250ZXh0IGNvbnRleHQsIFN0YXR1c0JhclZpZXcgc2IpIHsKKyAgICAgICAgICAgIHN1cGVyKGNvbnRleHQsIHNiKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICB2b2lkIHRpY2tlclN0YXJ0aW5nKCkgeworICAgICAgICAgICAgbVRpY2tpbmcgPSB0cnVlOworICAgICAgICAgICAgbUljb25zLnNldFZpc2liaWxpdHkoVmlldy5HT05FKTsKKyAgICAgICAgICAgIG1UaWNrZXJWaWV3LnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKKyAgICAgICAgICAgIG1UaWNrZXJWaWV3LnN0YXJ0QW5pbWF0aW9uKGxvYWRBbmltKGNvbS5hbmRyb2lkLmludGVybmFsLlIuYW5pbS5wdXNoX3VwX2luLCBudWxsKSk7CisgICAgICAgICAgICBtSWNvbnMuc3RhcnRBbmltYXRpb24obG9hZEFuaW0oY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5hbmltLnB1c2hfdXBfb3V0LCBudWxsKSk7CisgICAgICAgICAgICBpZiAobUV4cGFuZGVkVmlzaWJsZSkgeworICAgICAgICAgICAgICAgIHNldERhdGVWaWV3VmlzaWJpbGl0eShmYWxzZSwgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5hbmltLnB1c2hfdXBfb3V0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICB2b2lkIHRpY2tlckRvbmUoKSB7CisgICAgICAgICAgICBtSWNvbnMuc2V0VmlzaWJpbGl0eShWaWV3LlZJU0lCTEUpOworICAgICAgICAgICAgbVRpY2tlclZpZXcuc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOworICAgICAgICAgICAgbUljb25zLnN0YXJ0QW5pbWF0aW9uKGxvYWRBbmltKGNvbS5hbmRyb2lkLmludGVybmFsLlIuYW5pbS5wdXNoX2Rvd25faW4sIG51bGwpKTsKKyAgICAgICAgICAgIG1UaWNrZXJWaWV3LnN0YXJ0QW5pbWF0aW9uKGxvYWRBbmltKGNvbS5hbmRyb2lkLmludGVybmFsLlIuYW5pbS5wdXNoX2Rvd25fb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgbVRpY2tpbmdEb25lTGlzdGVuZXIpKTsKKyAgICAgICAgICAgIGlmIChtRXhwYW5kZWRWaXNpYmxlKSB7CisgICAgICAgICAgICAgICAgc2V0RGF0ZVZpZXdWaXNpYmlsaXR5KHRydWUsIGNvbS5hbmRyb2lkLmludGVybmFsLlIuYW5pbS5wdXNoX2Rvd25faW4pOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgdm9pZCB0aWNrZXJIYWx0aW5nKCkgeworICAgICAgICAgICAgbUljb25zLnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKKyAgICAgICAgICAgIG1UaWNrZXJWaWV3LnNldFZpc2liaWxpdHkoVmlldy5HT05FKTsKKyAgICAgICAgICAgIG1JY29ucy5zdGFydEFuaW1hdGlvbihsb2FkQW5pbShjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmFuaW0uZmFkZV9pbiwgbnVsbCkpOworICAgICAgICAgICAgbVRpY2tlclZpZXcuc3RhcnRBbmltYXRpb24obG9hZEFuaW0oY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5hbmltLmZhZGVfb3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgbVRpY2tpbmdEb25lTGlzdGVuZXIpKTsKKyAgICAgICAgICAgIGlmIChtRXhwYW5kZWRWaXNpYmxlKSB7CisgICAgICAgICAgICAgICAgc2V0RGF0ZVZpZXdWaXNpYmlsaXR5KHRydWUsIGNvbS5hbmRyb2lkLmludGVybmFsLlIuYW5pbS5mYWRlX2luKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIEFuaW1hdGlvbi5BbmltYXRpb25MaXN0ZW5lciBtVGlja2luZ0RvbmVMaXN0ZW5lciA9IG5ldyBBbmltYXRpb24uQW5pbWF0aW9uTGlzdGVuZXIoKSB7OworICAgICAgICBwdWJsaWMgdm9pZCBvbkFuaW1hdGlvbkVuZChBbmltYXRpb24gYW5pbWF0aW9uKSB7CisgICAgICAgICAgICBtVGlja2luZyA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIHB1YmxpYyB2b2lkIG9uQW5pbWF0aW9uUmVwZWF0KEFuaW1hdGlvbiBhbmltYXRpb24pIHsKKyAgICAgICAgfQorICAgICAgICBwdWJsaWMgdm9pZCBvbkFuaW1hdGlvblN0YXJ0KEFuaW1hdGlvbiBhbmltYXRpb24pIHsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBwcml2YXRlIEFuaW1hdGlvbiBsb2FkQW5pbShpbnQgaWQsIEFuaW1hdGlvbi5BbmltYXRpb25MaXN0ZW5lciBsaXN0ZW5lcikgeworICAgICAgICBBbmltYXRpb24gYW5pbSA9IEFuaW1hdGlvblV0aWxzLmxvYWRBbmltYXRpb24oU3RhdHVzQmFyU2VydmljZS50aGlzLCBpZCk7CisgICAgICAgIGlmIChsaXN0ZW5lciAhPSBudWxsKSB7CisgICAgICAgICAgICBhbmltLnNldEFuaW1hdGlvbkxpc3RlbmVyKGxpc3RlbmVyKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYW5pbTsKKyAgICB9CisKKyAgICBwdWJsaWMgU3RyaW5nIHZpZXdJbmZvKFZpZXcgdikgeworICAgICAgICByZXR1cm4gIigiICsgdi5nZXRMZWZ0KCkgKyAiLCIgKyB2LmdldFRvcCgpICsgIikoIiArIHYuZ2V0UmlnaHQoKSArICIsIiArIHYuZ2V0Qm90dG9tKCkKKyAgICAgICAgICAgICAgICArICIgIiArIHYuZ2V0V2lkdGgoKSArICJ4IiArIHYuZ2V0SGVpZ2h0KCkgKyAiKSI7CisgICAgfQorCisgICAgcHJvdGVjdGVkIHZvaWQgZHVtcChGaWxlRGVzY3JpcHRvciBmZCwgUHJpbnRXcml0ZXIgcHcsIFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgaWYgKGNoZWNrQ2FsbGluZ09yU2VsZlBlcm1pc3Npb24oYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uLkRVTVApCisgICAgICAgICAgICAgICAgIT0gUGFja2FnZU1hbmFnZXIuUEVSTUlTU0lPTl9HUkFOVEVEKSB7CisgICAgICAgICAgICBwdy5wcmludGxuKCJQZXJtaXNzaW9uIERlbmlhbDogY2FuJ3QgZHVtcCBTdGF0dXNCYXIgZnJvbSBmcm9tIHBpZD0iCisgICAgICAgICAgICAgICAgICAgICsgQmluZGVyLmdldENhbGxpbmdQaWQoKQorICAgICAgICAgICAgICAgICAgICArICIsIHVpZD0iICsgQmluZGVyLmdldENhbGxpbmdVaWQoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBzeW5jaHJvbml6ZWQgKG1RdWV1ZUxvY2spIHsKKyAgICAgICAgICAgIHB3LnByaW50bG4oIkN1cnJlbnQgU3RhdHVzIEJhciBzdGF0ZToiKTsKKyAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbUV4cGFuZGVkPSIgKyBtRXhwYW5kZWQKKyAgICAgICAgICAgICAgICAgICAgKyAiLCBtRXhwYW5kZWRWaXNpYmxlPSIgKyBtRXhwYW5kZWRWaXNpYmxlKTsKKyAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbVRpY2tpbmc9IiArIG1UaWNraW5nKTsKKyAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbVRyYWNraW5nPSIgKyBtVHJhY2tpbmcpOworICAgICAgICAgICAgcHcucHJpbnRsbigiICBtQW5pbWF0aW5nPSIgKyBtQW5pbWF0aW5nCisgICAgICAgICAgICAgICAgICAgICsgIiwgbUFuaW1ZPSIgKyBtQW5pbVkgKyAiLCBtQW5pbVZlbD0iICsgbUFuaW1WZWwKKyAgICAgICAgICAgICAgICAgICAgKyAiLCBtQW5pbUFjY2VsPSIgKyBtQW5pbUFjY2VsKTsKKyAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbUN1ckFuaW1hdGlvblRpbWU9IiArIG1DdXJBbmltYXRpb25UaW1lCisgICAgICAgICAgICAgICAgICAgICsgIiBtQW5pbUxhc3RUaW1lPSIgKyBtQW5pbUxhc3RUaW1lKTsKKyAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbURpc3BsYXlIZWlnaHQ9IiArIG1EaXNwbGF5SGVpZ2h0CisgICAgICAgICAgICAgICAgICAgICsgIiBtQW5pbWF0aW5nUmV2ZWFsPSIgKyBtQW5pbWF0aW5nUmV2ZWFsCisgICAgICAgICAgICAgICAgICAgICsgIiBtVmlld0RlbHRhPSIgKyBtVmlld0RlbHRhKTsKKyAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbURpc3BsYXlIZWlnaHQ9IiArIG1EaXNwbGF5SGVpZ2h0KTsKKyAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbUV4cGFuZGVkUGFyYW1zOiAiICsgbUV4cGFuZGVkUGFyYW1zKTsKKyAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbUV4cGFuZGVkVmlldzogIiArIHZpZXdJbmZvKG1FeHBhbmRlZFZpZXcpKTsKKyAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbUV4cGFuZGVkRGlhbG9nOiAiICsgbUV4cGFuZGVkRGlhbG9nKTsKKyAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbVRyYWNraW5nUGFyYW1zOiAiICsgbVRyYWNraW5nUGFyYW1zKTsKKyAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbVRyYWNraW5nVmlldzogIiArIHZpZXdJbmZvKG1UcmFja2luZ1ZpZXcpKTsKKyAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbU9uZ29pbmdUaXRsZTogIiArIHZpZXdJbmZvKG1PbmdvaW5nVGl0bGUpKTsKKyAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbU9uZ29pbmdJdGVtczogIiArIHZpZXdJbmZvKG1PbmdvaW5nSXRlbXMpKTsKKyAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbUxhdGVzdFRpdGxlOiAiICsgdmlld0luZm8obUxhdGVzdFRpdGxlKSk7CisgICAgICAgICAgICBwdy5wcmludGxuKCIgIG1MYXRlc3RJdGVtczogIiArIHZpZXdJbmZvKG1MYXRlc3RJdGVtcykpOworICAgICAgICAgICAgcHcucHJpbnRsbigiICBtTm9Ob3RpZmljYXRpb25zVGl0bGU6ICIgKyB2aWV3SW5mbyhtTm9Ob3RpZmljYXRpb25zVGl0bGUpKTsKKyAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbUNsb3NlVmlldzogIiArIHZpZXdJbmZvKG1DbG9zZVZpZXcpKTsKKyAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbVRpY2tlclZpZXc6ICIgKyB2aWV3SW5mbyhtVGlja2VyVmlldykpOworICAgICAgICAgICAgcHcucHJpbnRsbigiICBtU2Nyb2xsVmlldzogIiArIHZpZXdJbmZvKG1TY3JvbGxWaWV3KQorICAgICAgICAgICAgICAgICAgICArICIgc2Nyb2xsICIgKyBtU2Nyb2xsVmlldy5nZXRTY3JvbGxYKCkgKyAiLCIgKyBtU2Nyb2xsVmlldy5nZXRTY3JvbGxZKCkpOworICAgICAgICAgICAgcHcucHJpbnRsbigibU5vdGlmaWNhdGlvbkxpbmVhckxheW91dDogIiArIHZpZXdJbmZvKG1Ob3RpZmljYXRpb25MaW5lYXJMYXlvdXQpKTsKKyAgICAgICAgfQorICAgICAgICAvKgorICAgICAgICBzeW5jaHJvbml6ZWQgKG1Ob3RpZmljYXRpb25EYXRhKSB7CisgICAgICAgICAgICBpbnQgTiA9IG1Ob3RpZmljYXRpb25EYXRhLm9uZ29pbmdDb3VudCgpOworICAgICAgICAgICAgcHcucHJpbnRsbigiICBvbmdvaW5nQ291bnQuc2l6ZT0iICsgTik7CisgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8TjsgaSsrKSB7CisgICAgICAgICAgICAgICAgU3RhdHVzQmFyTm90aWZpY2F0aW9uIG4gPSBtTm90aWZpY2F0aW9uRGF0YS5nZXRPbmdvaW5nKGkpOworICAgICAgICAgICAgICAgIHB3LnByaW50bG4oIiAgICBbIiArIGkgKyAiXSBrZXk9IiArIG4ua2V5ICsgIiB2aWV3PSIgKyBuLnZpZXcpOworICAgICAgICAgICAgICAgIHB3LnByaW50bG4oIiAgICAgICAgICAgZGF0YT0iICsgbi5kYXRhKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIE4gPSBtTm90aWZpY2F0aW9uRGF0YS5sYXRlc3RDb3VudCgpOworICAgICAgICAgICAgcHcucHJpbnRsbigiICBvbmdvaW5nQ291bnQuc2l6ZT0iICsgTik7CisgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8TjsgaSsrKSB7CisgICAgICAgICAgICAgICAgU3RhdHVzQmFyTm90aWZpY2F0aW9uIG4gPSBtTm90aWZpY2F0aW9uRGF0YS5nZXRMYXRlc3QoaSk7CisgICAgICAgICAgICAgICAgcHcucHJpbnRsbigiICAgIFsiICsgaSArICJdIGtleT0iICsgbi5rZXkgKyAiIHZpZXc9IiArIG4udmlldyk7CisgICAgICAgICAgICAgICAgcHcucHJpbnRsbigiICAgICAgICAgICBkYXRhPSIgKyBuLmRhdGEpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgICovCisKKyAgICAgICAgaWYgKGZhbHNlKSB7CisgICAgICAgICAgICBwdy5wcmludGxuKCJzZWUgdGhlIGxvZ2NhdCBmb3IgYSBkdW1wIG9mIHRoZSB2aWV3cyB3ZSBoYXZlIGNyZWF0ZWQuIik7CisgICAgICAgICAgICAvLyBtdXN0IGhhcHBlbiBvbiB1aSB0aHJlYWQKKyAgICAgICAgICAgIG1IYW5kbGVyLnBvc3QobmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtU3RhdHVzQmFyVmlldy5nZXRMb2NhdGlvbk9uU2NyZWVuKG1BYnNQb3MpOworICAgICAgICAgICAgICAgICAgICAgICAgU2xvZy5kKFRBRywgIm1TdGF0dXNCYXJWaWV3OiAtLS0tLSAoIiArIG1BYnNQb3NbMF0gKyAiLCIgKyBtQWJzUG9zWzFdCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIikgIiArIG1TdGF0dXNCYXJWaWV3LmdldFdpZHRoKCkgKyAieCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBtU3RhdHVzQmFyVmlldy5nZXRIZWlnaHQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBtU3RhdHVzQmFyVmlldy5kZWJ1ZygpOworCisgICAgICAgICAgICAgICAgICAgICAgICBtRXhwYW5kZWRWaWV3LmdldExvY2F0aW9uT25TY3JlZW4obUFic1Bvcyk7CisgICAgICAgICAgICAgICAgICAgICAgICBTbG9nLmQoVEFHLCAibUV4cGFuZGVkVmlldzogLS0tLS0gKCIgKyBtQWJzUG9zWzBdICsgIiwiICsgbUFic1Bvc1sxXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIpICIgKyBtRXhwYW5kZWRWaWV3LmdldFdpZHRoKCkgKyAieCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBtRXhwYW5kZWRWaWV3LmdldEhlaWdodCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1FeHBhbmRlZFZpZXcuZGVidWcoKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgbVRyYWNraW5nVmlldy5nZXRMb2NhdGlvbk9uU2NyZWVuKG1BYnNQb3MpOworICAgICAgICAgICAgICAgICAgICAgICAgU2xvZy5kKFRBRywgIm1UcmFja2luZ1ZpZXc6IC0tLS0tICgiICsgbUFic1Bvc1swXSArICIsIiArIG1BYnNQb3NbMV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiKSAiICsgbVRyYWNraW5nVmlldy5nZXRXaWR0aCgpICsgIngiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgbVRyYWNraW5nVmlldy5nZXRIZWlnaHQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBtVHJhY2tpbmdWaWV3LmRlYnVnKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgb25CYXJWaWV3QXR0YWNoZWQoKSB7CisgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIGxwOworICAgICAgICBpbnQgcGl4ZWxGb3JtYXQ7CisgICAgICAgIERyYXdhYmxlIGJnOworCisgICAgICAgIC8vLyAtLS0tLS0tLS0tIFRyYWNraW5nIFZpZXcgLS0tLS0tLS0tLS0tLS0KKyAgICAgICAgcGl4ZWxGb3JtYXQgPSBQaXhlbEZvcm1hdC5SR0JYXzg4ODg7CisgICAgICAgIGJnID0gbVRyYWNraW5nVmlldy5nZXRCYWNrZ3JvdW5kKCk7CisgICAgICAgIGlmIChiZyAhPSBudWxsKSB7CisgICAgICAgICAgICBwaXhlbEZvcm1hdCA9IGJnLmdldE9wYWNpdHkoKTsKKyAgICAgICAgfQorCisgICAgICAgIGxwID0gbmV3IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zKAorICAgICAgICAgICAgICAgIFZpZXdHcm91cC5MYXlvdXRQYXJhbXMuTUFUQ0hfUEFSRU5ULAorICAgICAgICAgICAgICAgIFZpZXdHcm91cC5MYXlvdXRQYXJhbXMuTUFUQ0hfUEFSRU5ULAorICAgICAgICAgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLlRZUEVfU1RBVFVTX0JBUl9QQU5FTCwKKyAgICAgICAgICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX0xBWU9VVF9JTl9TQ1JFRU4KKyAgICAgICAgICAgICAgICB8IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfTEFZT1VUX05PX0xJTUlUUworICAgICAgICAgICAgICAgIHwgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19BTFRfRk9DVVNBQkxFX0lNLAorICAgICAgICAgICAgICAgIHBpeGVsRm9ybWF0KTsKKy8vICAgICAgICBscC50b2tlbiA9IG1TdGF0dXNCYXJWaWV3LmdldFdpbmRvd1Rva2VuKCk7CisgICAgICAgIGxwLmdyYXZpdHkgPSBHcmF2aXR5LlRPUCB8IEdyYXZpdHkuRklMTF9IT1JJWk9OVEFMOworICAgICAgICBscC5zZXRUaXRsZSgiVHJhY2tpbmdWaWV3Iik7CisgICAgICAgIGxwLnkgPSBtVHJhY2tpbmdQb3NpdGlvbjsKKyAgICAgICAgbVRyYWNraW5nUGFyYW1zID0gbHA7CisKKyAgICAgICAgV2luZG93TWFuYWdlckltcGwuZ2V0RGVmYXVsdCgpLmFkZFZpZXcobVRyYWNraW5nVmlldywgbHApOworICAgIH0KKworICAgIHZvaWQgb25UcmFja2luZ1ZpZXdBdHRhY2hlZCgpIHsKKyAgICAgICAgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMgbHA7CisgICAgICAgIGludCBwaXhlbEZvcm1hdDsKKyAgICAgICAgRHJhd2FibGUgYmc7CisKKyAgICAgICAgLy8vIC0tLS0tLS0tLS0gRXhwYW5kZWQgVmlldyAtLS0tLS0tLS0tLS0tLQorICAgICAgICBwaXhlbEZvcm1hdCA9IFBpeGVsRm9ybWF0LlRSQU5TTFVDRU5UOworCisgICAgICAgIGZpbmFsIGludCBkaXNwaCA9IG1EaXNwbGF5LmdldEhlaWdodCgpOworICAgICAgICBscCA9IG1FeHBhbmRlZERpYWxvZy5nZXRXaW5kb3coKS5nZXRBdHRyaWJ1dGVzKCk7CisgICAgICAgIGxwLndpZHRoID0gVmlld0dyb3VwLkxheW91dFBhcmFtcy5NQVRDSF9QQVJFTlQ7CisgICAgICAgIGxwLmhlaWdodCA9IGdldEV4cGFuZGVkSGVpZ2h0KCk7CisgICAgICAgIGxwLnggPSAwOworICAgICAgICBtVHJhY2tpbmdQb3NpdGlvbiA9IGxwLnkgPSAtZGlzcGg7IC8vIHN1ZmZpY2llbnRseSBsYXJnZSBuZWdhdGl2ZQorICAgICAgICBscC50eXBlID0gV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuVFlQRV9TVEFUVVNfQkFSX1BBTkVMOworICAgICAgICBscC5mbGFncyA9IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfTEFZT1VUX0lOX1NDUkVFTgorICAgICAgICAgICAgICAgIHwgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19MQVlPVVRfTk9fTElNSVRTCisgICAgICAgICAgICAgICAgfCBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX05PVF9UT1VDSF9NT0RBTAorICAgICAgICAgICAgICAgIHwgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19ESVRIRVIKKyAgICAgICAgICAgICAgICB8IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfTk9UX0ZPQ1VTQUJMRTsKKyAgICAgICAgbHAuZm9ybWF0ID0gcGl4ZWxGb3JtYXQ7CisgICAgICAgIGxwLmdyYXZpdHkgPSBHcmF2aXR5LlRPUCB8IEdyYXZpdHkuRklMTF9IT1JJWk9OVEFMOworICAgICAgICBscC5zZXRUaXRsZSgiU3RhdHVzQmFyRXhwYW5kZWQiKTsKKyAgICAgICAgbUV4cGFuZGVkRGlhbG9nLmdldFdpbmRvdygpLnNldEF0dHJpYnV0ZXMobHApOworICAgICAgICBtRXhwYW5kZWREaWFsb2cuZ2V0V2luZG93KCkuc2V0Rm9ybWF0KHBpeGVsRm9ybWF0KTsKKyAgICAgICAgbUV4cGFuZGVkUGFyYW1zID0gbHA7CisKKyAgICAgICAgbUV4cGFuZGVkRGlhbG9nLmdldFdpbmRvdygpLnJlcXVlc3RGZWF0dXJlKFdpbmRvdy5GRUFUVVJFX05PX1RJVExFKTsKKyAgICAgICAgbUV4cGFuZGVkRGlhbG9nLnNldENvbnRlbnRWaWV3KG1FeHBhbmRlZFZpZXcsCisgICAgICAgICAgICAgICAgbmV3IFZpZXdHcm91cC5MYXlvdXRQYXJhbXMoVmlld0dyb3VwLkxheW91dFBhcmFtcy5NQVRDSF9QQVJFTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlld0dyb3VwLkxheW91dFBhcmFtcy5NQVRDSF9QQVJFTlQpKTsKKyAgICAgICAgbUV4cGFuZGVkRGlhbG9nLmdldFdpbmRvdygpLnNldEJhY2tncm91bmREcmF3YWJsZShudWxsKTsKKyAgICAgICAgbUV4cGFuZGVkRGlhbG9nLnNob3coKTsKKyAgICAgICAgRnJhbWVMYXlvdXQgaGFjayA9IChGcmFtZUxheW91dCltRXhwYW5kZWRWaWV3LmdldFBhcmVudCgpOworICAgIH0KKworICAgIHZvaWQgc2V0RGF0ZVZpZXdWaXNpYmlsaXR5KGJvb2xlYW4gdmlzaWJsZSwgaW50IGFuaW0pIHsKKyAgICAgICAgbURhdGVWaWV3LnNldFVwZGF0ZXModmlzaWJsZSk7CisgICAgICAgIG1EYXRlVmlldy5zZXRWaXNpYmlsaXR5KHZpc2libGUgPyBWaWV3LlZJU0lCTEUgOiBWaWV3LklOVklTSUJMRSk7CisgICAgICAgIG1EYXRlVmlldy5zdGFydEFuaW1hdGlvbihsb2FkQW5pbShhbmltLCBudWxsKSk7CisgICAgfQorCisgICAgdm9pZCBzZXROb3RpZmljYXRpb25JY29uVmlzaWJpbGl0eShib29sZWFuIHZpc2libGUsIGludCBhbmltKSB7CisgICAgICAgIGludCBvbGQgPSBtTm90aWZpY2F0aW9uSWNvbnMuZ2V0VmlzaWJpbGl0eSgpOworICAgICAgICBpbnQgdiA9IHZpc2libGUgPyBWaWV3LlZJU0lCTEUgOiBWaWV3LklOVklTSUJMRTsKKyAgICAgICAgaWYgKG9sZCAhPSB2KSB7CisgICAgICAgICAgICBtTm90aWZpY2F0aW9uSWNvbnMuc2V0VmlzaWJpbGl0eSh2KTsKKyAgICAgICAgICAgIG1Ob3RpZmljYXRpb25JY29ucy5zdGFydEFuaW1hdGlvbihsb2FkQW5pbShhbmltLCBudWxsKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHVwZGF0ZUV4cGFuZGVkVmlld1BvcyhpbnQgZXhwYW5kZWRQb3NpdGlvbikgeworICAgICAgICBpZiAoU1BFVykgeworICAgICAgICAgICAgU2xvZy5kKFRBRywgInVwZGF0ZUV4cGFuZGVkVmlld1BvcyBiZWZvcmUgZXhwYW5kZWRQb3NpdGlvbj0iICsgZXhwYW5kZWRQb3NpdGlvbgorICAgICAgICAgICAgICAgICAgICArICIgbVRyYWNraW5nUGFyYW1zLnk9IiArIG1UcmFja2luZ1BhcmFtcy55CisgICAgICAgICAgICAgICAgICAgICsgIiBtVHJhY2tpbmdQb3NpdGlvbj0iICsgbVRyYWNraW5nUG9zaXRpb24pOworICAgICAgICB9CisKKyAgICAgICAgaW50IGggPSBtU3RhdHVzQmFyVmlldy5nZXRIZWlnaHQoKTsKKyAgICAgICAgaW50IGRpc3BoID0gbURpc3BsYXkuZ2V0SGVpZ2h0KCk7CisKKyAgICAgICAgLy8gSWYgdGhlIGV4cGFuZGVkIHZpZXcgaXMgbm90IHZpc2libGUsIG1ha2Ugc3VyZSB0aGV5J3JlIHN0aWxsIG9mZiBzY3JlZW4uCisgICAgICAgIC8vIE1heWJlIHRoZSB2aWV3IHdhcyByZXNpemVkLgorICAgICAgICBpZiAoIW1FeHBhbmRlZFZpc2libGUpIHsKKyAgICAgICAgICAgIGlmIChtVHJhY2tpbmdWaWV3ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBtVHJhY2tpbmdQb3NpdGlvbiA9IC1kaXNwaDsKKyAgICAgICAgICAgICAgICBpZiAobVRyYWNraW5nUGFyYW1zICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgbVRyYWNraW5nUGFyYW1zLnkgPSBtVHJhY2tpbmdQb3NpdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgV2luZG93TWFuYWdlckltcGwuZ2V0RGVmYXVsdCgpLnVwZGF0ZVZpZXdMYXlvdXQobVRyYWNraW5nVmlldywgbVRyYWNraW5nUGFyYW1zKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobUV4cGFuZGVkUGFyYW1zICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBtRXhwYW5kZWRQYXJhbXMueSA9IC1kaXNwaDsKKyAgICAgICAgICAgICAgICBtRXhwYW5kZWREaWFsb2cuZ2V0V2luZG93KCkuc2V0QXR0cmlidXRlcyhtRXhwYW5kZWRQYXJhbXMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gdHJhY2tpbmcgdmlldy4uLgorICAgICAgICBpbnQgcG9zOworICAgICAgICBpZiAoZXhwYW5kZWRQb3NpdGlvbiA9PSBFWFBBTkRFRF9GVUxMX09QRU4pIHsKKyAgICAgICAgICAgIHBvcyA9IGg7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZXhwYW5kZWRQb3NpdGlvbiA9PSBFWFBBTkRFRF9MRUFWRV9BTE9ORSkgeworICAgICAgICAgICAgcG9zID0gbVRyYWNraW5nUG9zaXRpb247CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoZXhwYW5kZWRQb3NpdGlvbiA8PSBkaXNwaCkgeworICAgICAgICAgICAgICAgIHBvcyA9IGV4cGFuZGVkUG9zaXRpb247CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHBvcyA9IGRpc3BoOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcG9zIC09IGRpc3BoLWg7CisgICAgICAgIH0KKyAgICAgICAgbVRyYWNraW5nUG9zaXRpb24gPSBtVHJhY2tpbmdQYXJhbXMueSA9IHBvczsKKyAgICAgICAgbVRyYWNraW5nUGFyYW1zLmhlaWdodCA9IGRpc3BoLWg7CisgICAgICAgIFdpbmRvd01hbmFnZXJJbXBsLmdldERlZmF1bHQoKS51cGRhdGVWaWV3TGF5b3V0KG1UcmFja2luZ1ZpZXcsIG1UcmFja2luZ1BhcmFtcyk7CisKKyAgICAgICAgaWYgKG1FeHBhbmRlZFBhcmFtcyAhPSBudWxsKSB7CisgICAgICAgICAgICBtQ2xvc2VWaWV3LmdldExvY2F0aW9uSW5XaW5kb3cobVBvc2l0aW9uVG1wKTsKKyAgICAgICAgICAgIGZpbmFsIGludCBjbG9zZVBvcyA9IG1Qb3NpdGlvblRtcFsxXTsKKworICAgICAgICAgICAgbUV4cGFuZGVkQ29udGVudHMuZ2V0TG9jYXRpb25JbldpbmRvdyhtUG9zaXRpb25UbXApOworICAgICAgICAgICAgZmluYWwgaW50IGNvbnRlbnRzQm90dG9tID0gbVBvc2l0aW9uVG1wWzFdICsgbUV4cGFuZGVkQ29udGVudHMuZ2V0SGVpZ2h0KCk7CisKKyAgICAgICAgICAgIG1FeHBhbmRlZFBhcmFtcy55ID0gcG9zICsgbVRyYWNraW5nVmlldy5nZXRIZWlnaHQoKQorICAgICAgICAgICAgICAgICAgICAtIChtVHJhY2tpbmdQYXJhbXMuaGVpZ2h0LWNsb3NlUG9zKSAtIGNvbnRlbnRzQm90dG9tOworICAgICAgICAgICAgaW50IG1heCA9IGg7CisgICAgICAgICAgICBpZiAobUV4cGFuZGVkUGFyYW1zLnkgPiBtYXgpIHsKKyAgICAgICAgICAgICAgICBtRXhwYW5kZWRQYXJhbXMueSA9IG1heDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGludCBtaW4gPSBtVHJhY2tpbmdQb3NpdGlvbjsKKyAgICAgICAgICAgIGlmIChtRXhwYW5kZWRQYXJhbXMueSA8IG1pbikgeworICAgICAgICAgICAgICAgIG1FeHBhbmRlZFBhcmFtcy55ID0gbWluOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBib29sZWFuIHZpc2libGUgPSAobVRyYWNraW5nUG9zaXRpb24gKyBtVHJhY2tpbmdWaWV3LmdldEhlaWdodCgpKSA+IGg7CisgICAgICAgICAgICBpZiAoIXZpc2libGUpIHsKKyAgICAgICAgICAgICAgICAvLyBpZiB0aGUgY29udGVudHMgYXJlbid0IHZpc2libGUsIG1vdmUgdGhlIGV4cGFuZGVkIHZpZXcgd2F5IG9mZiBzY3JlZW4KKyAgICAgICAgICAgICAgICAvLyBiZWNhdXNlIHRoZSB3aW5kb3cgaXRzZWxmIGV4dGVuZHMgYmVsb3cgdGhlIGNvbnRlbnQgdmlldy4KKyAgICAgICAgICAgICAgICBtRXhwYW5kZWRQYXJhbXMueSA9IC1kaXNwaDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1FeHBhbmRlZERpYWxvZy5nZXRXaW5kb3coKS5zZXRBdHRyaWJ1dGVzKG1FeHBhbmRlZFBhcmFtcyk7CisKKyAgICAgICAgICAgIC8vIEFzIGxvbmcgYXMgdGhpcyBpc24ndCBqdXN0IGEgcmVwb3NpdGlvbmluZyB0aGF0J3Mgbm90IHN1cHBvc2VkIHRvIGFmZmVjdAorICAgICAgICAgICAgLy8gdGhlIHVzZXIncyBwZXJjZXB0aW9uIG9mIHdoYXQncyBzaG93aW5nLCBjYWxsIHRvIHNheSB0aGF0IHRoZSB2aXNpYmlsaXR5CisgICAgICAgICAgICAvLyBoYXMgY2hhbmdlZC4gKE90aGVyd2lzZSwgc29tZW9uZSBlbHNlIHdpbGwgY2FsbCB0byBkbyB0aGF0KS4KKyAgICAgICAgICAgIGlmIChleHBhbmRlZFBvc2l0aW9uICE9IEVYUEFOREVEX0xFQVZFX0FMT05FKSB7CisgICAgICAgICAgICAgICAgaWYgKFNQRVcpIFNsb2cuZChUQUcsICJ1cGRhdGVFeHBhbmRlZFZpZXdQb3MgdmlzaWJpbGl0eUNoYW5nZWQoIiArIHZpc2libGUgKyAiKSIpOworICAgICAgICAgICAgICAgIHZpc2liaWxpdHlDaGFuZ2VkKHZpc2libGUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKFNQRVcpIHsKKyAgICAgICAgICAgIFNsb2cuZChUQUcsICJ1cGRhdGVFeHBhbmRlZFZpZXdQb3MgYWZ0ZXIgIGV4cGFuZGVkUG9zaXRpb249IiArIGV4cGFuZGVkUG9zaXRpb24KKyAgICAgICAgICAgICAgICAgICAgKyAiIG1UcmFja2luZ1BhcmFtcy55PSIgKyBtVHJhY2tpbmdQYXJhbXMueQorICAgICAgICAgICAgICAgICAgICArICIgbVRyYWNraW5nUG9zaXRpb249IiArIG1UcmFja2luZ1Bvc2l0aW9uCisgICAgICAgICAgICAgICAgICAgICsgIiBtRXhwYW5kZWRQYXJhbXMueT0iICsgbUV4cGFuZGVkUGFyYW1zLnkKKyAgICAgICAgICAgICAgICAgICAgKyAiIG1FeHBhbmRlZFBhcmFtcy5oZWlnaHQ9IiArIG1FeHBhbmRlZFBhcmFtcy5oZWlnaHQpOworICAgICAgICB9CisgICAgfQorCisgICAgaW50IGdldEV4cGFuZGVkSGVpZ2h0KCkgeworICAgICAgICByZXR1cm4gbURpc3BsYXkuZ2V0SGVpZ2h0KCkgLSBtU3RhdHVzQmFyVmlldy5nZXRIZWlnaHQoKSAtIG1DbG9zZVZpZXcuZ2V0SGVpZ2h0KCk7CisgICAgfQorCisgICAgdm9pZCB1cGRhdGVFeHBhbmRlZEhlaWdodCgpIHsKKyAgICAgICAgaWYgKG1FeHBhbmRlZFZpZXcgIT0gbnVsbCkgeworICAgICAgICAgICAgbUV4cGFuZGVkUGFyYW1zLmhlaWdodCA9IGdldEV4cGFuZGVkSGVpZ2h0KCk7CisgICAgICAgICAgICBtRXhwYW5kZWREaWFsb2cuZ2V0V2luZG93KCkuc2V0QXR0cmlidXRlcyhtRXhwYW5kZWRQYXJhbXMpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhlIExFRHMgYXJlIHR1cm5lZCBvKWZmIHdoZW4gdGhlIG5vdGlmaWNhdGlvbiBwYW5lbCBpcyBzaG93biwgZXZlbiBqdXN0IGEgbGl0dGxlIGJpdC4KKyAgICAgKiBUaGlzIHdhcyBhZGRlZCBsYXN0LW1pbnV0ZSBhbmQgaXMgaW5jb25zaXN0ZW50IHdpdGggdGhlIHdheSB0aGUgcmVzdCBvZiB0aGUgbm90aWZpY2F0aW9ucworICAgICAqIGFyZSBoYW5kbGVkLCBiZWNhdXNlIHRoZSBub3RpZmljYXRpb24gaXNuJ3QgcmVhbGx5IGNhbmNlbGxlZC4gIFRoZSBsaWdodHMgYXJlIGp1c3QKKyAgICAgKiB0dXJuZWQgb2ZmLiAgSWYgYW55IG90aGVyIG5vdGlmaWNhdGlvbnMgaGFwcGVuLCB0aGUgbGlnaHRzIHdpbGwgdHVybiBiYWNrIG9uLiAgU3RldmUgc2F5cworICAgICAqIHRoaXMgaXMgd2hhdCBoZSB3YW50cy4gKHNlZSBidWcgMTEzMTQ2MSkKKyAgICAgKi8KKyAgICB2b2lkIHZpc2liaWxpdHlDaGFuZ2VkKGJvb2xlYW4gdmlzaWJsZSkgeworICAgICAgICBpZiAobVBhbmVsU2xpZ2h0bHlWaXNpYmxlICE9IHZpc2libGUpIHsKKyAgICAgICAgICAgIG1QYW5lbFNsaWdodGx5VmlzaWJsZSA9IHZpc2libGU7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIG1CYXJTZXJ2aWNlLm9uUGFuZWxSZXZlYWxlZCgpOworICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICAgICAgLy8gV29uJ3QgZmFpbCB1bmxlc3MgdGhlIHdvcmxkIGhhcyBlbmRlZC4KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgcGVyZm9ybURpc2FibGVBY3Rpb25zKGludCBuZXQpIHsKKyAgICAgICAgaW50IG9sZCA9IG1EaXNhYmxlZDsKKyAgICAgICAgaW50IGRpZmYgPSBuZXQgXiBvbGQ7CisgICAgICAgIG1EaXNhYmxlZCA9IG5ldDsKKworICAgICAgICAvLyBhY3QgYWNjb3JkaW5nbHkKKyAgICAgICAgaWYgKChkaWZmICYgU3RhdHVzQmFyTWFuYWdlci5ESVNBQkxFX0VYUEFORCkgIT0gMCkgeworICAgICAgICAgICAgaWYgKChuZXQgJiBTdGF0dXNCYXJNYW5hZ2VyLkRJU0FCTEVfRVhQQU5EKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgU2xvZy5kKFRBRywgIkRJU0FCTEVfRVhQQU5EOiB5ZXMiKTsKKyAgICAgICAgICAgICAgICBhbmltYXRlQ29sbGFwc2UoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoKGRpZmYgJiBTdGF0dXNCYXJNYW5hZ2VyLkRJU0FCTEVfTk9USUZJQ0FUSU9OX0lDT05TKSAhPSAwKSB7CisgICAgICAgICAgICBpZiAoKG5ldCAmIFN0YXR1c0Jhck1hbmFnZXIuRElTQUJMRV9OT1RJRklDQVRJT05fSUNPTlMpICE9IDApIHsKKyAgICAgICAgICAgICAgICBTbG9nLmQoVEFHLCAiRElTQUJMRV9OT1RJRklDQVRJT05fSUNPTlM6IHllcyIpOworICAgICAgICAgICAgICAgIGlmIChtVGlja2luZykgeworICAgICAgICAgICAgICAgICAgICBtTm90aWZpY2F0aW9uSWNvbnMuc2V0VmlzaWJpbGl0eShWaWV3LklOVklTSUJMRSk7CisgICAgICAgICAgICAgICAgICAgIG1UaWNrZXIuaGFsdCgpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHNldE5vdGlmaWNhdGlvbkljb25WaXNpYmlsaXR5KGZhbHNlLCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmFuaW0uZmFkZV9vdXQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgU2xvZy5kKFRBRywgIkRJU0FCTEVfTk9USUZJQ0FUSU9OX0lDT05TOiBubyIpOworICAgICAgICAgICAgICAgIGlmICghbUV4cGFuZGVkVmlzaWJsZSkgeworICAgICAgICAgICAgICAgICAgICBzZXROb3RpZmljYXRpb25JY29uVmlzaWJpbGl0eSh0cnVlLCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmFuaW0uZmFkZV9pbik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKChkaWZmICYgU3RhdHVzQmFyTWFuYWdlci5ESVNBQkxFX05PVElGSUNBVElPTl9USUNLRVIpICE9IDApIHsKKyAgICAgICAgICAgIGlmIChtVGlja2luZyAmJiAobmV0ICYgU3RhdHVzQmFyTWFuYWdlci5ESVNBQkxFX05PVElGSUNBVElPTl9USUNLRVIpICE9IDApIHsKKyAgICAgICAgICAgICAgICBtVGlja2VyLmhhbHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgVmlldy5PbkNsaWNrTGlzdGVuZXIgbUNsZWFyQnV0dG9uTGlzdGVuZXIgPSBuZXcgVmlldy5PbkNsaWNrTGlzdGVuZXIoKSB7CisgICAgICAgIHB1YmxpYyB2b2lkIG9uQ2xpY2soVmlldyB2KSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIG1CYXJTZXJ2aWNlLm9uQ2xlYXJBbGxOb3RpZmljYXRpb25zKCk7CisgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgICAgICAvLyBzeXN0ZW0gcHJvY2VzcyBpcyBkZWFkIGlmIHdlJ3JlIGhlcmUuCisgICAgICAgICAgICB9CisgICAgICAgICAgICBhbmltYXRlQ29sbGFwc2UoKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICBwcml2YXRlIEJyb2FkY2FzdFJlY2VpdmVyIG1Ccm9hZGNhc3RSZWNlaXZlciA9IG5ldyBCcm9hZGNhc3RSZWNlaXZlcigpIHsKKyAgICAgICAgcHVibGljIHZvaWQgb25SZWNlaXZlKENvbnRleHQgY29udGV4dCwgSW50ZW50IGludGVudCkgeworICAgICAgICAgICAgU3RyaW5nIGFjdGlvbiA9IGludGVudC5nZXRBY3Rpb24oKTsKKyAgICAgICAgICAgIGlmIChJbnRlbnQuQUNUSU9OX0NMT1NFX1NZU1RFTV9ESUFMT0dTLmVxdWFscyhhY3Rpb24pCisgICAgICAgICAgICAgICAgICAgIHx8IEludGVudC5BQ1RJT05fU0NSRUVOX09GRi5lcXVhbHMoYWN0aW9uKSkgeworICAgICAgICAgICAgICAgIC8vY29sbGFwc2UoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKEludGVudC5BQ1RJT05fQ09ORklHVVJBVElPTl9DSEFOR0VELmVxdWFscyhhY3Rpb24pKSB7CisgICAgICAgICAgICAgICAgdXBkYXRlUmVzb3VyY2VzKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworCisgICAgcHJpdmF0ZSB2b2lkIHNldEludHJ1ZGVyQWxlcnRWaXNpYmlsaXR5KGJvb2xlYW4gdmlzKSB7CisgICAgICAgIG1JbnRydWRlckFsZXJ0Vmlldy5zZXRWaXNpYmlsaXR5KHZpcyA/IFZpZXcuVklTSUJMRSA6IFZpZXcuR09ORSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVsb2FkIHNvbWUgb2Ygb3VyIHJlc291cmNlcyB3aGVuIHRoZSBjb25maWd1cmF0aW9uIGNoYW5nZXMuCisgICAgICoKKyAgICAgKiBXZSBkb24ndCByZWxvYWQgZXZlcnl0aGluZyB3aGVuIHRoZSBjb25maWd1cmF0aW9uIGNoYW5nZXMgLS0gd2UgcHJvYmFibHkKKyAgICAgKiBzaG91bGQsIGJ1dCBnZXR0aW5nIHRoYXQgc21vb3RoIGlzIHRvdWdoLiAgU29tZWRheSB3ZSdsbCBmaXggdGhhdC4gIEluIHRoZQorICAgICAqIG1lYW50aW1lLCBqdXN0IHVwZGF0ZSB0aGUgdGhpbmdzIHRoYXQgd2Uga25vdyBjaGFuZ2UuCisgICAgICovCisgICAgdm9pZCB1cGRhdGVSZXNvdXJjZXMoKSB7CisgICAgICAgIFJlc291cmNlcyByZXMgPSBnZXRSZXNvdXJjZXMoKTsKKworICAgICAgICBtQ2xlYXJCdXR0b24uc2V0VGV4dChnZXRUZXh0KFIuc3RyaW5nLnN0YXR1c19iYXJfY2xlYXJfYWxsX2J1dHRvbikpOworICAgICAgICBtT25nb2luZ1RpdGxlLnNldFRleHQoZ2V0VGV4dChSLnN0cmluZy5zdGF0dXNfYmFyX29uZ29pbmdfZXZlbnRzX3RpdGxlKSk7CisgICAgICAgIG1MYXRlc3RUaXRsZS5zZXRUZXh0KGdldFRleHQoUi5zdHJpbmcuc3RhdHVzX2Jhcl9sYXRlc3RfZXZlbnRzX3RpdGxlKSk7CisgICAgICAgIG1Ob05vdGlmaWNhdGlvbnNUaXRsZS5zZXRUZXh0KGdldFRleHQoUi5zdHJpbmcuc3RhdHVzX2Jhcl9ub19ub3RpZmljYXRpb25zX3RpdGxlKSk7CisKKyAgICAgICAgbUVkZ2VCb3JkZXIgPSByZXMuZ2V0RGltZW5zaW9uUGl4ZWxTaXplKFIuZGltZW4uc3RhdHVzX2Jhcl9lZGdlX2lnbm9yZSk7CisKKyAgICAgICAgaWYgKGZhbHNlKSBTbG9nLnYoVEFHLCAidXBkYXRlUmVzb3VyY2VzIik7CisgICAgfQorCisgICAgLy8KKyAgICAvLyB0cmFjaW5nCisgICAgLy8KKworICAgIHZvaWQgcG9zdFN0YXJ0VHJhY2luZygpIHsKKyAgICAgICAgbUhhbmRsZXIucG9zdERlbGF5ZWQobVN0YXJ0VHJhY2luZywgMzAwMCk7CisgICAgfQorCisgICAgdm9pZCB2aWJyYXRlKCkgeworICAgICAgICBhbmRyb2lkLm9zLlZpYnJhdG9yIHZpYiA9IChhbmRyb2lkLm9zLlZpYnJhdG9yKWdldFN5c3RlbVNlcnZpY2UoQ29udGV4dC5WSUJSQVRPUl9TRVJWSUNFKTsKKyAgICAgICAgdmliLnZpYnJhdGUoMjUwKTsKKyAgICB9CisKKyAgICBSdW5uYWJsZSBtU3RhcnRUcmFjaW5nID0gbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICB2aWJyYXRlKCk7CisgICAgICAgICAgICBTeXN0ZW1DbG9jay5zbGVlcCgyNTApOworICAgICAgICAgICAgU2xvZy5kKFRBRywgInN0YXJ0VHJhY2luZyIpOworICAgICAgICAgICAgYW5kcm9pZC5vcy5EZWJ1Zy5zdGFydE1ldGhvZFRyYWNpbmcoIi9kYXRhL3N0YXR1c2Jhci10cmFjZXMvdHJhY2UiKTsKKyAgICAgICAgICAgIG1IYW5kbGVyLnBvc3REZWxheWVkKG1TdG9wVHJhY2luZywgMTAwMDApOworICAgICAgICB9CisgICAgfTsKKworICAgIFJ1bm5hYmxlIG1TdG9wVHJhY2luZyA9IG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgYW5kcm9pZC5vcy5EZWJ1Zy5zdG9wTWV0aG9kVHJhY2luZygpOworICAgICAgICAgICAgU2xvZy5kKFRBRywgInN0b3BUcmFjaW5nIik7CisgICAgICAgICAgICB2aWJyYXRlKCk7CisgICAgICAgIH0KKyAgICB9OworfQorCmRpZmYgLS1naXQgYS9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL1N0YXR1c0JhclZpZXcuamF2YSBiL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvU3RhdHVzQmFyVmlldy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlMTQwYjkKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL1N0YXR1c0JhclZpZXcuamF2YQpAQCAtMCwwICsxLDE5MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuc3lzdGVtdWkuc3RhdHVzYmFyOworCitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnJlcy5Db25maWd1cmF0aW9uOworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzOworaW1wb3J0IGFuZHJvaWQub3MuU3lzdGVtQ2xvY2s7CitpbXBvcnQgYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldDsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQ7CitpbXBvcnQgYW5kcm9pZC52aWV3LlZpZXc7CitpbXBvcnQgYW5kcm9pZC52aWV3LlZpZXdHcm91cDsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuVmlld1BhcmVudDsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5GcmFtZUxheW91dDsKKworaW1wb3J0IGNvbS5hbmRyb2lkLnN5c3RlbXVpLlI7CisKK3B1YmxpYyBjbGFzcyBTdGF0dXNCYXJWaWV3IGV4dGVuZHMgRnJhbWVMYXlvdXQgeworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSAiU3RhdHVzQmFyVmlldyI7CisKKyAgICBzdGF0aWMgZmluYWwgaW50IERJTV9BTklNX1RJTUUgPSA0MDA7CisgICAgCisgICAgU3RhdHVzQmFyU2VydmljZSBtU2VydmljZTsKKyAgICBib29sZWFuIG1UcmFja2luZzsKKyAgICBpbnQgbVN0YXJ0WCwgbVN0YXJ0WTsKKyAgICBWaWV3R3JvdXAgbU5vdGlmaWNhdGlvbkljb25zOworICAgIFZpZXdHcm91cCBtU3RhdHVzSWNvbnM7CisgICAgVmlldyBtRGF0ZTsKKyAgICBGaXhlZFNpemVEcmF3YWJsZSBtQmFja2dyb3VuZDsKKyAgICAKKyAgICBib29sZWFuIG1OaWdodE1vZGUgPSBmYWxzZTsKKyAgICBpbnQgbVN0YXJ0QWxwaGEgPSAwLCBtRW5kQWxwaGEgPSAwOworICAgIGxvbmcgbUVuZFRpbWUgPSAwOworCisgICAgcHVibGljIFN0YXR1c0JhclZpZXcoQ29udGV4dCBjb250ZXh0LCBBdHRyaWJ1dGVTZXQgYXR0cnMpIHsKKyAgICAgICAgc3VwZXIoY29udGV4dCwgYXR0cnMpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIG9uRmluaXNoSW5mbGF0ZSgpIHsKKyAgICAgICAgc3VwZXIub25GaW5pc2hJbmZsYXRlKCk7CisgICAgICAgIG1Ob3RpZmljYXRpb25JY29ucyA9IChWaWV3R3JvdXApZmluZFZpZXdCeUlkKFIuaWQubm90aWZpY2F0aW9uSWNvbnMpOworICAgICAgICBtU3RhdHVzSWNvbnMgPSAoVmlld0dyb3VwKWZpbmRWaWV3QnlJZChSLmlkLnN0YXR1c0ljb25zKTsKKyAgICAgICAgbURhdGUgPSBmaW5kVmlld0J5SWQoUi5pZC5kYXRlKTsKKworICAgICAgICBtQmFja2dyb3VuZCA9IG5ldyBGaXhlZFNpemVEcmF3YWJsZShtRGF0ZS5nZXRCYWNrZ3JvdW5kKCkpOworICAgICAgICBtQmFja2dyb3VuZC5zZXRGaXhlZEJvdW5kcygwLCAwLCAwLCAwKTsKKyAgICAgICAgbURhdGUuc2V0QmFja2dyb3VuZERyYXdhYmxlKG1CYWNrZ3JvdW5kKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCBvbkF0dGFjaGVkVG9XaW5kb3coKSB7CisgICAgICAgIHN1cGVyLm9uQXR0YWNoZWRUb1dpbmRvdygpOworICAgICAgICBtU2VydmljZS5vbkJhclZpZXdBdHRhY2hlZCgpOworICAgIH0KKyAgICAKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCBvbkNvbmZpZ3VyYXRpb25DaGFuZ2VkKENvbmZpZ3VyYXRpb24gbmV3Q29uZmlnKSB7CisgICAgICAgIHN1cGVyLm9uQ29uZmlndXJhdGlvbkNoYW5nZWQobmV3Q29uZmlnKTsKKyAgICAgICAgYm9vbGVhbiBuaWdodE1vZGUgPSAobmV3Q29uZmlnLnVpTW9kZSAmIENvbmZpZ3VyYXRpb24uVUlfTU9ERV9OSUdIVF9NQVNLKQorICAgICAgICAgICAgICAgID09IENvbmZpZ3VyYXRpb24uVUlfTU9ERV9OSUdIVF9ZRVM7CisgICAgICAgIGlmIChtTmlnaHRNb2RlICE9IG5pZ2h0TW9kZSkgeworICAgICAgICAgICAgbU5pZ2h0TW9kZSA9IG5pZ2h0TW9kZTsKKyAgICAgICAgICAgIG1TdGFydEFscGhhID0gZ2V0Q3VyQWxwaGEoKTsKKyAgICAgICAgICAgIG1FbmRBbHBoYSA9IG1OaWdodE1vZGUgPyAweDgwIDogMHgwMDsKKyAgICAgICAgICAgIG1FbmRUaW1lID0gU3lzdGVtQ2xvY2sudXB0aW1lTWlsbGlzKCkgKyBESU1fQU5JTV9USU1FOworICAgICAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICB9CisgICAgfQorCisgICAgaW50IGdldEN1ckFscGhhKCkgeworICAgICAgICBsb25nIHRpbWUgPSBTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKTsKKyAgICAgICAgaWYgKHRpbWUgPiBtRW5kVGltZSkgeworICAgICAgICAgICAgcmV0dXJuIG1FbmRBbHBoYTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbUVuZEFscGhhCisgICAgICAgICAgICAgICAgLSAoaW50KSgoKG1FbmRBbHBoYS1tU3RhcnRBbHBoYSkgKiAobUVuZFRpbWUtdGltZSkgLyBESU1fQU5JTV9USU1FKSk7CisgICAgfQorICAgIAorICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIG9uU2l6ZUNoYW5nZWQoaW50IHcsIGludCBoLCBpbnQgb2xkdywgaW50IG9sZGgpIHsKKyAgICAgICAgc3VwZXIub25TaXplQ2hhbmdlZCh3LCBoLCBvbGR3LCBvbGRoKTsKKyAgICAgICAgbVNlcnZpY2UudXBkYXRlRXhwYW5kZWRWaWV3UG9zKFN0YXR1c0JhclNlcnZpY2UuRVhQQU5ERURfTEVBVkVfQUxPTkUpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIG9uTGF5b3V0KGJvb2xlYW4gY2hhbmdlZCwgaW50IGwsIGludCB0LCBpbnQgciwgaW50IGIpIHsKKyAgICAgICAgc3VwZXIub25MYXlvdXQoY2hhbmdlZCwgbCwgdCwgciwgYik7CisKKyAgICAgICAgLy8gcHV0IHRoZSBkYXRlIGRhdGUgdmlldyBxdWFudGl6ZWQgdG8gdGhlIGljb25zCisgICAgICAgIGludCBvbGREYXRlUmlnaHQgPSBtRGF0ZS5nZXRSaWdodCgpOworICAgICAgICBpbnQgbmV3RGF0ZVJpZ2h0OworCisgICAgICAgIG5ld0RhdGVSaWdodCA9IGdldERhdGVTaXplKG1Ob3RpZmljYXRpb25JY29ucywgb2xkRGF0ZVJpZ2h0LAorICAgICAgICAgICAgICAgIGdldFZpZXdPZmZzZXQobU5vdGlmaWNhdGlvbkljb25zKSk7CisgICAgICAgIGlmIChuZXdEYXRlUmlnaHQgPCAwKSB7CisgICAgICAgICAgICBpbnQgb2Zmc2V0ID0gZ2V0Vmlld09mZnNldChtU3RhdHVzSWNvbnMpOworICAgICAgICAgICAgaWYgKG9sZERhdGVSaWdodCA8IG9mZnNldCkgeworICAgICAgICAgICAgICAgIG5ld0RhdGVSaWdodCA9IG9sZERhdGVSaWdodDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbmV3RGF0ZVJpZ2h0ID0gZ2V0RGF0ZVNpemUobVN0YXR1c0ljb25zLCBvbGREYXRlUmlnaHQsIG9mZnNldCk7CisgICAgICAgICAgICAgICAgaWYgKG5ld0RhdGVSaWdodCA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgbmV3RGF0ZVJpZ2h0ID0gcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaW50IG1heCA9IHIgLSBnZXRQYWRkaW5nUmlnaHQoKTsKKyAgICAgICAgaWYgKG5ld0RhdGVSaWdodCA+IG1heCkgeworICAgICAgICAgICAgbmV3RGF0ZVJpZ2h0ID0gbWF4OworICAgICAgICB9CisKKyAgICAgICAgbURhdGUubGF5b3V0KG1EYXRlLmdldExlZnQoKSwgbURhdGUuZ2V0VG9wKCksIG5ld0RhdGVSaWdodCwgbURhdGUuZ2V0Qm90dG9tKCkpOworICAgICAgICBtQmFja2dyb3VuZC5zZXRGaXhlZEJvdW5kcygtbURhdGUuZ2V0TGVmdCgpLCAtbURhdGUuZ2V0VG9wKCksIChyLWwpLCAoYi10KSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgZGlzcGF0Y2hEcmF3KENhbnZhcyBjYW52YXMpIHsKKyAgICAgICAgc3VwZXIuZGlzcGF0Y2hEcmF3KGNhbnZhcyk7CisgICAgICAgIGludCBhbHBoYSA9IGdldEN1ckFscGhhKCk7CisgICAgICAgIGlmIChhbHBoYSAhPSAwKSB7CisgICAgICAgICAgICBjYW52YXMuZHJhd0FSR0IoYWxwaGEsIDAsIDAsIDApOworICAgICAgICB9CisgICAgICAgIGlmIChhbHBoYSAhPSBtRW5kQWxwaGEpIHsKKyAgICAgICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgdGhlIGxlZnQgcG9zaXRpb24gb2YgdiBpbiB0aGlzIHZpZXcuICBUaHJvd3MgaWYgdiBpcyBub3QKKyAgICAgKiBhIGNoaWxkIG9mIHRoaXMuCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgZ2V0Vmlld09mZnNldChWaWV3IHYpIHsKKyAgICAgICAgaW50IG9mZnNldCA9IDA7CisgICAgICAgIHdoaWxlICh2ICE9IHRoaXMpIHsKKyAgICAgICAgICAgIG9mZnNldCArPSB2LmdldExlZnQoKTsKKyAgICAgICAgICAgIFZpZXdQYXJlbnQgcCA9IHYuZ2V0UGFyZW50KCk7CisgICAgICAgICAgICBpZiAodiBpbnN0YW5jZW9mIFZpZXcpIHsKKyAgICAgICAgICAgICAgICB2ID0gKFZpZXcpcDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24odiArICIgaXMgbm90IGEgY2hpbGQgb2YgIiArIHRoaXMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBvZmZzZXQ7CisgICAgfQorCisgICAgcHJpdmF0ZSBpbnQgZ2V0RGF0ZVNpemUoVmlld0dyb3VwIGcsIGludCB3LCBpbnQgb2Zmc2V0KSB7CisgICAgICAgIGZpbmFsIGludCBOID0gZy5nZXRDaGlsZENvdW50KCk7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxOOyBpKyspIHsKKyAgICAgICAgICAgIFZpZXcgdiA9IGcuZ2V0Q2hpbGRBdChpKTsKKyAgICAgICAgICAgIGludCBsID0gdi5nZXRMZWZ0KCkgKyBvZmZzZXQ7CisgICAgICAgICAgICBpbnQgciA9IHYuZ2V0UmlnaHQoKSArIG9mZnNldDsKKyAgICAgICAgICAgIGlmICh3ID49IGwgJiYgdyA8PSByKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIC8qKgorICAgICAqIEVuc3VyZSB0aGF0LCBpZiB0aGVyZSBpcyBubyB0YXJnZXQgdW5kZXIgdXMgdG8gcmVjZWl2ZSB0aGUgdG91Y2gsCisgICAgICogdGhhdCB3ZSBwcm9jZXNzIGl0IG91cnNlbGYuICBUaGlzIG1ha2VzIHN1cmUgdGhhdCBvbkludGVyY2VwdFRvdWNoRXZlbnQoKQorICAgICAqIGlzIGFsd2F5cyBjYWxsZWQgZm9yIHRoZSBlbnRpcmUgZ2VzdHVyZS4KKyAgICAgKi8KKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgYm9vbGVhbiBvblRvdWNoRXZlbnQoTW90aW9uRXZlbnQgZXZlbnQpIHsKKyAgICAgICAgaWYgKGV2ZW50LmdldEFjdGlvbigpICE9IE1vdGlvbkV2ZW50LkFDVElPTl9ET1dOKSB7CisgICAgICAgICAgICBtU2VydmljZS5pbnRlcmNlcHRUb3VjaEV2ZW50KGV2ZW50KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgYm9vbGVhbiBvbkludGVyY2VwdFRvdWNoRXZlbnQoTW90aW9uRXZlbnQgZXZlbnQpIHsKKyAgICAgICAgcmV0dXJuIG1TZXJ2aWNlLmludGVyY2VwdFRvdWNoRXZlbnQoZXZlbnQpCisgICAgICAgICAgICAgICAgPyB0cnVlIDogc3VwZXIub25JbnRlcmNlcHRUb3VjaEV2ZW50KGV2ZW50KTsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvVGlja2VyLmphdmEgYi9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL1RpY2tlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3ZTg2NTMKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL1RpY2tlci5qYXZhCkBAIC0wLDAgKzEsMjczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5zeXN0ZW11aS5zdGF0dXNiYXI7CisKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlOworaW1wb3J0IGFuZHJvaWQub3MuSGFuZGxlcjsKK2ltcG9ydCBhbmRyb2lkLnRleHQuU3RhdGljTGF5b3V0OworaW1wb3J0IGFuZHJvaWQudGV4dC5MYXlvdXQuQWxpZ25tZW50OworaW1wb3J0IGFuZHJvaWQudGV4dC5UZXh0UGFpbnQ7CitpbXBvcnQgYW5kcm9pZC50ZXh0LlRleHRVdGlsczsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuU2xvZzsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuVmlldzsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFuaW1hdGlvbjsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFuaW1hdGlvblV0aWxzOworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LlRleHRTd2l0Y2hlcjsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5UZXh0VmlldzsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5JbWFnZVN3aXRjaGVyOworCitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKKworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnN0YXR1c2Jhci5TdGF0dXNCYXJJY29uOworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnN0YXR1c2Jhci5TdGF0dXNCYXJOb3RpZmljYXRpb247CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudXRpbC5DaGFyU2VxdWVuY2VzOworaW1wb3J0IGNvbS5hbmRyb2lkLnN5c3RlbXVpLlI7CisKK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBUaWNrZXIgeworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBUSUNLRVJfU0VHTUVOVF9ERUxBWSA9IDMwMDA7CisgICAgCisgICAgcHJpdmF0ZSBDb250ZXh0IG1Db250ZXh0OworICAgIHByaXZhdGUgSGFuZGxlciBtSGFuZGxlciA9IG5ldyBIYW5kbGVyKCk7CisgICAgcHJpdmF0ZSBBcnJheUxpc3Q8U2VnbWVudD4gbVNlZ21lbnRzID0gbmV3IEFycmF5TGlzdCgpOworICAgIHByaXZhdGUgVGV4dFBhaW50IG1QYWludDsKKyAgICBwcml2YXRlIFZpZXcgbVRpY2tlclZpZXc7CisgICAgcHJpdmF0ZSBJbWFnZVN3aXRjaGVyIG1JY29uU3dpdGNoZXI7CisgICAgcHJpdmF0ZSBUZXh0U3dpdGNoZXIgbVRleHRTd2l0Y2hlcjsKKworICAgIHByaXZhdGUgZmluYWwgY2xhc3MgU2VnbWVudCB7CisgICAgICAgIFN0YXR1c0Jhck5vdGlmaWNhdGlvbiBub3RpZmljYXRpb247CisgICAgICAgIERyYXdhYmxlIGljb247CisgICAgICAgIENoYXJTZXF1ZW5jZSB0ZXh0OworICAgICAgICBpbnQgY3VycmVudDsKKyAgICAgICAgaW50IG5leHQ7CisgICAgICAgIGJvb2xlYW4gZmlyc3Q7CisKKyAgICAgICAgU3RhdGljTGF5b3V0IGdldExheW91dChDaGFyU2VxdWVuY2Ugc3Vic3RyKSB7CisgICAgICAgICAgICBpbnQgdyA9IG1UZXh0U3dpdGNoZXIuZ2V0V2lkdGgoKSAtIG1UZXh0U3dpdGNoZXIuZ2V0UGFkZGluZ0xlZnQoKQorICAgICAgICAgICAgICAgICAgICAtIG1UZXh0U3dpdGNoZXIuZ2V0UGFkZGluZ1JpZ2h0KCk7CisgICAgICAgICAgICByZXR1cm4gbmV3IFN0YXRpY0xheW91dChzdWJzdHIsIG1QYWludCwgdywgQWxpZ25tZW50LkFMSUdOX05PUk1BTCwgMSwgMCwgdHJ1ZSk7CisgICAgICAgIH0KKworICAgICAgICBDaGFyU2VxdWVuY2UgcnRyaW0oQ2hhclNlcXVlbmNlIHN1YnN0ciwgaW50IHN0YXJ0LCBpbnQgZW5kKSB7CisgICAgICAgICAgICB3aGlsZSAoZW5kID4gc3RhcnQgJiYgIVRleHRVdGlscy5pc0dyYXBoaWMoc3Vic3RyLmNoYXJBdChlbmQtMSkpKSB7CisgICAgICAgICAgICAgICAgZW5kLS07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZW5kID4gc3RhcnQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3Vic3RyLnN1YlNlcXVlbmNlKHN0YXJ0LCBlbmQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKworICAgICAgICAvKiogcmV0dXJucyBudWxsIGlmIHRoZXJlIGlzIG5vIG1vcmUgdGV4dCAqLworICAgICAgICBDaGFyU2VxdWVuY2UgZ2V0VGV4dCgpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnQgPiB0aGlzLnRleHQubGVuZ3RoKCkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIENoYXJTZXF1ZW5jZSBzdWJzdHIgPSB0aGlzLnRleHQuc3ViU2VxdWVuY2UodGhpcy5jdXJyZW50LCB0aGlzLnRleHQubGVuZ3RoKCkpOworICAgICAgICAgICAgU3RhdGljTGF5b3V0IGwgPSBnZXRMYXlvdXQoc3Vic3RyKTsKKyAgICAgICAgICAgIGludCBsaW5lQ291bnQgPSBsLmdldExpbmVDb3VudCgpOworICAgICAgICAgICAgaWYgKGxpbmVDb3VudCA+IDApIHsKKyAgICAgICAgICAgICAgICBpbnQgc3RhcnQgPSBsLmdldExpbmVTdGFydCgwKTsKKyAgICAgICAgICAgICAgICBpbnQgZW5kID0gbC5nZXRMaW5lRW5kKDApOworICAgICAgICAgICAgICAgIHRoaXMubmV4dCA9IHRoaXMuY3VycmVudCArIGVuZDsKKyAgICAgICAgICAgICAgICByZXR1cm4gcnRyaW0oc3Vic3RyLCBzdGFydCwgZW5kKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oImxpbmVDb3VudD0iICsgbGluZUNvdW50ICsgIiBjdXJyZW50PSIgKyBjdXJyZW50ICsKKyAgICAgICAgICAgICAgICAgICAgICAgICIgdGV4dD0iICsgdGV4dCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvKiogcmV0dXJucyBudWxsIGlmIHRoZXJlIGlzIG5vIG1vcmUgdGV4dCAqLworICAgICAgICBDaGFyU2VxdWVuY2UgYWR2YW5jZSgpIHsKKyAgICAgICAgICAgIHRoaXMuZmlyc3QgPSBmYWxzZTsKKyAgICAgICAgICAgIGludCBpbmRleCA9IHRoaXMubmV4dDsKKyAgICAgICAgICAgIGZpbmFsIGludCBsZW4gPSB0aGlzLnRleHQubGVuZ3RoKCk7CisgICAgICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW4gJiYgIVRleHRVdGlscy5pc0dyYXBoaWModGhpcy50ZXh0LmNoYXJBdChpbmRleCkpKSB7CisgICAgICAgICAgICAgICAgaW5kZXgrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpbmRleCA+PSBsZW4pIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgQ2hhclNlcXVlbmNlIHN1YnN0ciA9IHRoaXMudGV4dC5zdWJTZXF1ZW5jZShpbmRleCwgdGhpcy50ZXh0Lmxlbmd0aCgpKTsKKyAgICAgICAgICAgIFN0YXRpY0xheW91dCBsID0gZ2V0TGF5b3V0KHN1YnN0cik7CisgICAgICAgICAgICBmaW5hbCBpbnQgbGluZUNvdW50ID0gbC5nZXRMaW5lQ291bnQoKTsKKyAgICAgICAgICAgIGludCBpOworICAgICAgICAgICAgZm9yIChpPTA7IGk8bGluZUNvdW50OyBpKyspIHsKKyAgICAgICAgICAgICAgICBpbnQgc3RhcnQgPSBsLmdldExpbmVTdGFydChpKTsKKyAgICAgICAgICAgICAgICBpbnQgZW5kID0gbC5nZXRMaW5lRW5kKGkpOworICAgICAgICAgICAgICAgIGlmIChpID09IGxpbmVDb3VudC0xKSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMubmV4dCA9IGxlbjsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICB0aGlzLm5leHQgPSBpbmRleCArIGwuZ2V0TGluZVN0YXJ0KGkrMSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIENoYXJTZXF1ZW5jZSByZXN1bHQgPSBydHJpbShzdWJzdHIsIHN0YXJ0LCBlbmQpOworICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnQgPSBpbmRleCArIHN0YXJ0OworICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRoaXMuY3VycmVudCA9IGxlbjsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgU2VnbWVudChTdGF0dXNCYXJOb3RpZmljYXRpb24gbiwgRHJhd2FibGUgaWNvbiwgQ2hhclNlcXVlbmNlIHRleHQpIHsKKyAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uID0gbjsKKyAgICAgICAgICAgIHRoaXMuaWNvbiA9IGljb247CisgICAgICAgICAgICB0aGlzLnRleHQgPSB0ZXh0OworICAgICAgICAgICAgaW50IGluZGV4ID0gMDsKKyAgICAgICAgICAgIGZpbmFsIGludCBsZW4gPSB0ZXh0Lmxlbmd0aCgpOworICAgICAgICAgICAgd2hpbGUgKGluZGV4IDwgbGVuICYmICFUZXh0VXRpbHMuaXNHcmFwaGljKHRleHQuY2hhckF0KGluZGV4KSkpIHsKKyAgICAgICAgICAgICAgICBpbmRleCsrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdGhpcy5jdXJyZW50ID0gaW5kZXg7CisgICAgICAgICAgICB0aGlzLm5leHQgPSBpbmRleDsKKyAgICAgICAgICAgIHRoaXMuZmlyc3QgPSB0cnVlOworICAgICAgICB9CisgICAgfTsKKworICAgIFRpY2tlcihDb250ZXh0IGNvbnRleHQsIFN0YXR1c0JhclZpZXcgc2IpIHsKKyAgICAgICAgbUNvbnRleHQgPSBjb250ZXh0OworICAgICAgICBtVGlja2VyVmlldyA9IHNiLmZpbmRWaWV3QnlJZChSLmlkLnRpY2tlcik7CisKKyAgICAgICAgbUljb25Td2l0Y2hlciA9IChJbWFnZVN3aXRjaGVyKXNiLmZpbmRWaWV3QnlJZChSLmlkLnRpY2tlckljb24pOworICAgICAgICBtSWNvblN3aXRjaGVyLnNldEluQW5pbWF0aW9uKAorICAgICAgICAgICAgICAgICAgICBBbmltYXRpb25VdGlscy5sb2FkQW5pbWF0aW9uKGNvbnRleHQsIGNvbS5hbmRyb2lkLmludGVybmFsLlIuYW5pbS5wdXNoX3VwX2luKSk7CisgICAgICAgIG1JY29uU3dpdGNoZXIuc2V0T3V0QW5pbWF0aW9uKAorICAgICAgICAgICAgICAgICAgICBBbmltYXRpb25VdGlscy5sb2FkQW5pbWF0aW9uKGNvbnRleHQsIGNvbS5hbmRyb2lkLmludGVybmFsLlIuYW5pbS5wdXNoX3VwX291dCkpOworCisgICAgICAgIG1UZXh0U3dpdGNoZXIgPSAoVGV4dFN3aXRjaGVyKXNiLmZpbmRWaWV3QnlJZChSLmlkLnRpY2tlclRleHQpOworICAgICAgICBtVGV4dFN3aXRjaGVyLnNldEluQW5pbWF0aW9uKAorICAgICAgICAgICAgICAgICAgICBBbmltYXRpb25VdGlscy5sb2FkQW5pbWF0aW9uKGNvbnRleHQsIGNvbS5hbmRyb2lkLmludGVybmFsLlIuYW5pbS5wdXNoX3VwX2luKSk7CisgICAgICAgIG1UZXh0U3dpdGNoZXIuc2V0T3V0QW5pbWF0aW9uKAorICAgICAgICAgICAgICAgICAgICBBbmltYXRpb25VdGlscy5sb2FkQW5pbWF0aW9uKGNvbnRleHQsIGNvbS5hbmRyb2lkLmludGVybmFsLlIuYW5pbS5wdXNoX3VwX291dCkpOworCisgICAgICAgIC8vIENvcHkgdGhlIHBhaW50IHN0eWxlIG9mIG9uZSBvZiB0aGUgVGV4dFN3aXRjaGVycyBjaGlsZHJlbiB0byB1c2UgbGF0ZXIgZm9yIG1lYXN1cmluZworICAgICAgICBUZXh0VmlldyB0ZXh0ID0gKFRleHRWaWV3KW1UZXh0U3dpdGNoZXIuZ2V0Q2hpbGRBdCgwKTsKKyAgICAgICAgbVBhaW50ID0gdGV4dC5nZXRQYWludCgpOworICAgIH0KKworCisgICAgdm9pZCBhZGRFbnRyeShTdGF0dXNCYXJOb3RpZmljYXRpb24gbikgeworICAgICAgICBpbnQgaW5pdGlhbENvdW50ID0gbVNlZ21lbnRzLnNpemUoKTsKKworICAgICAgICAvLyBJZiB3aGF0J3MgYmVpbmcgZGlzcGxheWVkIGhhcyB0aGUgc2FtZSB0ZXh0IGFuZCBpY29uLCBqdXN0IGRyb3AgaXQKKyAgICAgICAgLy8gKHdoaWNoIHdpbGwgbGV0IHRoZSBjdXJyZW50IG9uZSBmaW5pc2gsIHRoaXMgaGFwcGVucyB3aGVuIGFwcHMgZG8KKyAgICAgICAgLy8gYSBub3RpZmljYXRpb24gc3Rvcm0pLgorICAgICAgICBpZiAoaW5pdGlhbENvdW50ID4gMCkgeworICAgICAgICAgICAgZmluYWwgU2VnbWVudCBzZWcgPSBtU2VnbWVudHMuZ2V0KDApOworICAgICAgICAgICAgaWYgKG4ucGtnLmVxdWFscyhzZWcubm90aWZpY2F0aW9uLnBrZykKKyAgICAgICAgICAgICAgICAgICAgJiYgbi5ub3RpZmljYXRpb24uaWNvbiA9PSBzZWcubm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvbi5pY29uCisgICAgICAgICAgICAgICAgICAgICYmIG4ubm90aWZpY2F0aW9uLmljb25MZXZlbCA9PSBzZWcubm90aWZpY2F0aW9uLm5vdGlmaWNhdGlvbi5pY29uTGV2ZWwKKyAgICAgICAgICAgICAgICAgICAgJiYgQ2hhclNlcXVlbmNlcy5lcXVhbHMoc2VnLm5vdGlmaWNhdGlvbi5ub3RpZmljYXRpb24udGlja2VyVGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgIG4ubm90aWZpY2F0aW9uLnRpY2tlclRleHQpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZmluYWwgRHJhd2FibGUgaWNvbiA9IFN0YXR1c0Jhckljb25WaWV3LmdldEljb24obUNvbnRleHQsCisgICAgICAgICAgICAgICAgbmV3IFN0YXR1c0Jhckljb24obi5wa2csIG4ubm90aWZpY2F0aW9uLmljb24sIG4ubm90aWZpY2F0aW9uLmljb25MZXZlbCwgMCkpOworICAgICAgICBmaW5hbCBTZWdtZW50IG5ld1NlZ21lbnQgPSBuZXcgU2VnbWVudChuLCBpY29uLCBuLm5vdGlmaWNhdGlvbi50aWNrZXJUZXh0KTsKKworICAgICAgICAvLyBJZiB0aGVyZSdzIGFscmVhZHkgYSBub3RpZmljYXRpb24gc2NoZWR1bGUgZm9yIHRoaXMgcGFja2FnZSBhbmQgaWQsIHJlbW92ZSBpdC4KKyAgICAgICAgZm9yIChpbnQgaT0wOyBpPGluaXRpYWxDb3VudDsgaSsrKSB7CisgICAgICAgICAgICBTZWdtZW50IHNlZyA9IG1TZWdtZW50cy5nZXQoaSk7CisgICAgICAgICAgICBpZiAobi5pZCA9PSBzZWcubm90aWZpY2F0aW9uLmlkICYmIG4ucGtnLmVxdWFscyhzZWcubm90aWZpY2F0aW9uLnBrZykpIHsKKyAgICAgICAgICAgICAgICAvLyBqdXN0IHVwZGF0ZSB0aGF0IG9uZSB0byB1c2UgdGhpcyBuZXcgZGF0YSBpbnN0ZWFkCisgICAgICAgICAgICAgICAgbVNlZ21lbnRzLnJlbW92ZShpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIG1TZWdtZW50cy5hZGQobmV3U2VnbWVudCk7CisKKyAgICAgICAgaWYgKGluaXRpYWxDb3VudCA9PSAwICYmIG1TZWdtZW50cy5zaXplKCkgPiAwKSB7CisgICAgICAgICAgICBTZWdtZW50IHNlZyA9IG1TZWdtZW50cy5nZXQoMCk7CisgICAgICAgICAgICBzZWcuZmlyc3QgPSBmYWxzZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgbUljb25Td2l0Y2hlci5zZXRBbmltYXRlRmlyc3RWaWV3KGZhbHNlKTsKKyAgICAgICAgICAgIG1JY29uU3dpdGNoZXIucmVzZXQoKTsKKyAgICAgICAgICAgIG1JY29uU3dpdGNoZXIuc2V0SW1hZ2VEcmF3YWJsZShzZWcuaWNvbik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1UZXh0U3dpdGNoZXIuc2V0QW5pbWF0ZUZpcnN0VmlldyhmYWxzZSk7CisgICAgICAgICAgICBtVGV4dFN3aXRjaGVyLnJlc2V0KCk7CisgICAgICAgICAgICBtVGV4dFN3aXRjaGVyLnNldFRleHQoc2VnLmdldFRleHQoKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRpY2tlclN0YXJ0aW5nKCk7CisgICAgICAgICAgICBzY2hlZHVsZUFkdmFuY2UoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgcmVtb3ZlRW50cnkoU3RhdHVzQmFyTm90aWZpY2F0aW9uIG4pIHsKKyAgICAgICAgZm9yIChpbnQgaT1tU2VnbWVudHMuc2l6ZSgpLTE7IGk+PTA7IGktLSkgeworICAgICAgICAgICAgU2VnbWVudCBzZWcgPSBtU2VnbWVudHMuZ2V0KGkpOworICAgICAgICAgICAgaWYgKG4uaWQgPT0gc2VnLm5vdGlmaWNhdGlvbi5pZCAmJiBuLnBrZy5lcXVhbHMoc2VnLm5vdGlmaWNhdGlvbi5wa2cpKSB7CisgICAgICAgICAgICAgICAgbVNlZ21lbnRzLnJlbW92ZShpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgaGFsdCgpIHsKKyAgICAgICAgbUhhbmRsZXIucmVtb3ZlQ2FsbGJhY2tzKG1BZHZhbmNlVGlja2VyKTsKKyAgICAgICAgbVNlZ21lbnRzLmNsZWFyKCk7CisgICAgICAgIHRpY2tlckhhbHRpbmcoKTsKKyAgICB9CisKKyAgICB2b2lkIHJlZmxvd1RleHQoKSB7CisgICAgICAgIGlmIChtU2VnbWVudHMuc2l6ZSgpID4gMCkgeworICAgICAgICAgICAgU2VnbWVudCBzZWcgPSBtU2VnbWVudHMuZ2V0KDApOworICAgICAgICAgICAgQ2hhclNlcXVlbmNlIHRleHQgPSBzZWcuZ2V0VGV4dCgpOworICAgICAgICAgICAgbVRleHRTd2l0Y2hlci5zZXRDdXJyZW50VGV4dCh0ZXh0KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgUnVubmFibGUgbUFkdmFuY2VUaWNrZXIgPSBuZXcgUnVubmFibGUoKSB7CisgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgIHdoaWxlIChtU2VnbWVudHMuc2l6ZSgpID4gMCkgeworICAgICAgICAgICAgICAgIFNlZ21lbnQgc2VnID0gbVNlZ21lbnRzLmdldCgwKTsKKworICAgICAgICAgICAgICAgIGlmIChzZWcuZmlyc3QpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gdGhpcyBtYWtlcyB0aGUgaWNvbiBzbGlkZSBpbiBmb3IgdGhlIGZpcnN0IG9uZSBmb3IgYSBnaXZlbgorICAgICAgICAgICAgICAgICAgICAvLyBub3RpZmljYXRpb24gZXZlbiBpZiB0aGVyZSBhcmUgdHdvIG5vdGlmaWNhdGlvbnMgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICAgICAgLy8gc2FtZSBpY29uIGluIGEgcm93CisgICAgICAgICAgICAgICAgICAgIG1JY29uU3dpdGNoZXIuc2V0SW1hZ2VEcmF3YWJsZShzZWcuaWNvbik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIENoYXJTZXF1ZW5jZSB0ZXh0ID0gc2VnLmFkdmFuY2UoKTsKKyAgICAgICAgICAgICAgICBpZiAodGV4dCA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIG1TZWdtZW50cy5yZW1vdmUoMCk7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtVGV4dFN3aXRjaGVyLnNldFRleHQodGV4dCk7CisKKyAgICAgICAgICAgICAgICBzY2hlZHVsZUFkdmFuY2UoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtU2VnbWVudHMuc2l6ZSgpID09IDApIHsKKyAgICAgICAgICAgICAgICB0aWNrZXJEb25lKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworCisgICAgcHJpdmF0ZSB2b2lkIHNjaGVkdWxlQWR2YW5jZSgpIHsKKyAgICAgICAgbUhhbmRsZXIucG9zdERlbGF5ZWQobUFkdmFuY2VUaWNrZXIsIFRJQ0tFUl9TRUdNRU5UX0RFTEFZKTsKKyAgICB9CisKKyAgICBhYnN0cmFjdCB2b2lkIHRpY2tlclN0YXJ0aW5nKCk7CisgICAgYWJzdHJhY3Qgdm9pZCB0aWNrZXJEb25lKCk7CisgICAgYWJzdHJhY3Qgdm9pZCB0aWNrZXJIYWx0aW5nKCk7Cit9CisKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvVGlja2VyVmlldy5qYXZhIGIvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YXR1c2Jhci9UaWNrZXJWaWV3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTc0OWFlNAotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvVGlja2VyVmlldy5qYXZhCkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLnN5c3RlbXVpLnN0YXR1c2JhcjsKKworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQ7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuVGV4dFN3aXRjaGVyOworCisKK3B1YmxpYyBjbGFzcyBUaWNrZXJWaWV3IGV4dGVuZHMgVGV4dFN3aXRjaGVyCit7CisgICAgVGlja2VyIG1UaWNrZXI7CisKKyAgICBwdWJsaWMgVGlja2VyVmlldyhDb250ZXh0IGNvbnRleHQsIEF0dHJpYnV0ZVNldCBhdHRycykgeworICAgICAgICBzdXBlcihjb250ZXh0LCBhdHRycyk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgb25TaXplQ2hhbmdlZChpbnQgdywgaW50IGgsIGludCBvbGR3LCBpbnQgb2xkaCkgeworICAgICAgICBzdXBlci5vblNpemVDaGFuZ2VkKHcsIGgsIG9sZHcsIG9sZGgpOworICAgICAgICBtVGlja2VyLnJlZmxvd1RleHQoKTsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvVHJhY2tpbmdQYXR0ZXJuVmlldy5qYXZhIGIvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3N0YXR1c2Jhci9UcmFja2luZ1BhdHRlcm5WaWV3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmE2ZjE1ZAotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvVHJhY2tpbmdQYXR0ZXJuVmlldy5qYXZhCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLnN5c3RlbXVpLnN0YXR1c2JhcjsKKworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5yZXMuVHlwZWRBcnJheTsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0OworaW1wb3J0IGFuZHJvaWQudXRpbC5TbG9nOworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwRmFjdG9yeTsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcDsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLlBhaW50OworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzOworCitwdWJsaWMgY2xhc3MgVHJhY2tpbmdQYXR0ZXJuVmlldyBleHRlbmRzIFZpZXcgeworICAgIHByaXZhdGUgQml0bWFwIG1UZXh0dXJlOworICAgIHByaXZhdGUgUGFpbnQgbVBhaW50OworICAgIHByaXZhdGUgaW50IG1UZXh0dXJlV2lkdGg7CisgICAgcHJpdmF0ZSBpbnQgbVRleHR1cmVIZWlnaHQ7CisgICAgCisgICAgcHVibGljIFRyYWNraW5nUGF0dGVyblZpZXcoQ29udGV4dCBjb250ZXh0LCBBdHRyaWJ1dGVTZXQgYXR0cnMpIHsKKyAgICAgICAgc3VwZXIoY29udGV4dCwgYXR0cnMpOworCisgICAgICAgIG1UZXh0dXJlID0gQml0bWFwRmFjdG9yeS5kZWNvZGVSZXNvdXJjZShnZXRSZXNvdXJjZXMoKSwgCisgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0dXNfYmFyX2JhY2tncm91bmQpOworICAgICAgICBtVGV4dHVyZVdpZHRoID0gbVRleHR1cmUuZ2V0V2lkdGgoKTsKKyAgICAgICAgbVRleHR1cmVIZWlnaHQgPSBtVGV4dHVyZS5nZXRIZWlnaHQoKTsKKworICAgICAgICBtUGFpbnQgPSBuZXcgUGFpbnQoKTsKKyAgICAgICAgbVBhaW50LnNldERpdGhlcihmYWxzZSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgb25EcmF3KENhbnZhcyBjYW52YXMpIHsKKyAgICAgICAgZmluYWwgQml0bWFwIHRleHR1cmUgPSBtVGV4dHVyZTsKKyAgICAgICAgZmluYWwgUGFpbnQgcGFpbnQgPSBtUGFpbnQ7CisKKyAgICAgICAgZmluYWwgaW50IHdpZHRoID0gZ2V0V2lkdGgoKTsKKyAgICAgICAgZmluYWwgaW50IGhlaWdodCA9IGdldEhlaWdodCgpOworCisgICAgICAgIGZpbmFsIGludCB0ZXh0dXJlV2lkdGggPSBtVGV4dHVyZVdpZHRoOworICAgICAgICBmaW5hbCBpbnQgdGV4dHVyZUhlaWdodCA9IG1UZXh0dXJlSGVpZ2h0OworCisgICAgICAgIGludCB4ID0gMDsKKyAgICAgICAgaW50IHk7CisKKyAgICAgICAgd2hpbGUgKHggPCB3aWR0aCkgeworICAgICAgICAgICAgeSA9IDA7CisgICAgICAgICAgICB3aGlsZSAoeSA8IGhlaWdodCkgeworICAgICAgICAgICAgICAgIGNhbnZhcy5kcmF3Qml0bWFwKHRleHR1cmUsIHgsIHksIHBhaW50KTsKKyAgICAgICAgICAgICAgICB5ICs9IHRleHR1cmVIZWlnaHQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB4ICs9IHRleHR1cmVXaWR0aDsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS9zdGF0dXNiYXIvVHJhY2tpbmdWaWV3LmphdmEgYi9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL1RyYWNraW5nVmlldy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxMDhlZWUKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvc3RhdHVzYmFyL1RyYWNraW5nVmlldy5qYXZhCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLnN5c3RlbXVpLnN0YXR1c2JhcjsKKworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQ7CitpbXBvcnQgYW5kcm9pZC52aWV3LkRpc3BsYXk7CitpbXBvcnQgYW5kcm9pZC52aWV3LktleUV2ZW50OworaW1wb3J0IGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkxpbmVhckxheW91dDsKKworCitwdWJsaWMgY2xhc3MgVHJhY2tpbmdWaWV3IGV4dGVuZHMgTGluZWFyTGF5b3V0IHsKKyAgICBmaW5hbCBEaXNwbGF5IG1EaXNwbGF5OworICAgIFN0YXR1c0JhclNlcnZpY2UgbVNlcnZpY2U7CisgICAgYm9vbGVhbiBtVHJhY2tpbmc7CisgICAgaW50IG1TdGFydFgsIG1TdGFydFk7CisKKyAgICBwdWJsaWMgVHJhY2tpbmdWaWV3KENvbnRleHQgY29udGV4dCwgQXR0cmlidXRlU2V0IGF0dHJzKSB7CisgICAgICAgIHN1cGVyKGNvbnRleHQsIGF0dHJzKTsKKyAgICAgICAgbURpc3BsYXkgPSAoKFdpbmRvd01hbmFnZXIpY29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKAorICAgICAgICAgICAgICAgIENvbnRleHQuV0lORE9XX1NFUlZJQ0UpKS5nZXREZWZhdWx0RGlzcGxheSgpOworICAgIH0KKyAgICAKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCBvbkxheW91dChib29sZWFuIGNoYW5nZWQsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQgcmlnaHQsIGludCBib3R0b20pIHsKKyAgICAgICAgc3VwZXIub25MYXlvdXQoY2hhbmdlZCwgbGVmdCwgdG9wLCByaWdodCwgYm90dG9tKTsKKyAgICAgICAgbVNlcnZpY2UudXBkYXRlRXhwYW5kZWRIZWlnaHQoKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgYm9vbGVhbiBkaXNwYXRjaEtleUV2ZW50KEtleUV2ZW50IGV2ZW50KSB7CisgICAgICAgIGJvb2xlYW4gZG93biA9IGV2ZW50LmdldEFjdGlvbigpID09IEtleUV2ZW50LkFDVElPTl9ET1dOOworICAgICAgICBzd2l0Y2ggKGV2ZW50LmdldEtleUNvZGUoKSkgeworICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfQkFDSzoKKyAgICAgICAgICAgIGlmIChkb3duKSB7CisgICAgICAgICAgICAgICAgLy9tU2VydmljZS5kZWFjdGl2YXRlKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc3VwZXIuZGlzcGF0Y2hLZXlFdmVudChldmVudCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgb25BdHRhY2hlZFRvV2luZG93KCkgeworICAgICAgICBzdXBlci5vbkF0dGFjaGVkVG9XaW5kb3coKTsKKyAgICAgICAgbVNlcnZpY2Uub25UcmFja2luZ1ZpZXdBdHRhY2hlZCgpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS91c2IvU3RvcmFnZU5vdGlmaWNhdGlvbi5qYXZhIGIvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3VzYi9TdG9yYWdlTm90aWZpY2F0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjllOTE1YTQKLS0tIC9kZXYvbnVsbAorKysgYi9wYWNrYWdlcy9TeXN0ZW1VSS9zcmMvY29tL2FuZHJvaWQvc3lzdGVtdWkvdXNiL1N0b3JhZ2VOb3RpZmljYXRpb24uamF2YQpAQCAtMCwwICsxLDM5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLnN5c3RlbXVpLnVzYjsKKworaW1wb3J0IGFuZHJvaWQuYXBwLkFjdGl2aXR5OworaW1wb3J0IGFuZHJvaWQuYXBwLk5vdGlmaWNhdGlvbjsKK2ltcG9ydCBhbmRyb2lkLmFwcC5Ob3RpZmljYXRpb25NYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkJyb2FkY2FzdFJlY2VpdmVyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2U7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50RmlsdGVyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlczsKK2ltcG9ydCBhbmRyb2lkLm9zLkJ1bmRsZTsKK2ltcG9ydCBhbmRyb2lkLm9zLkVudmlyb25tZW50OworaW1wb3J0IGFuZHJvaWQub3MuSGFuZGxlcjsKK2ltcG9ydCBhbmRyb2lkLm9zLnN0b3JhZ2UuSU1vdW50U2VydmljZTsKK2ltcG9ydCBhbmRyb2lkLm9zLk1lc3NhZ2U7CitpbXBvcnQgYW5kcm9pZC5vcy5TZXJ2aWNlTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLm9zLnN0b3JhZ2UuU3RvcmFnZUV2ZW50TGlzdGVuZXI7CitpbXBvcnQgYW5kcm9pZC5vcy5zdG9yYWdlLlN0b3JhZ2VNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQub3Muc3RvcmFnZS5TdG9yYWdlUmVzdWx0Q29kZTsKK2ltcG9ydCBhbmRyb2lkLnByb3ZpZGVyLlNldHRpbmdzOworaW1wb3J0IGFuZHJvaWQudXRpbC5TbG9nOworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkJ1dHRvbjsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5JbWFnZVZpZXc7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuVGV4dFZpZXc7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuVG9hc3Q7CisKK3B1YmxpYyBjbGFzcyBTdG9yYWdlTm90aWZpY2F0aW9uIGV4dGVuZHMgU3RvcmFnZUV2ZW50TGlzdGVuZXIgeworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSAiU3RvcmFnZU5vdGlmaWNhdGlvbiI7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIFBPUF9VTVNfQUNUSVZJVFlfT05fQ09OTkVDVCA9IHRydWU7CisKKyAgICAvKioKKyAgICAgKiBCaW5kZXIgY29udGV4dCBmb3IgdGhpcyBzZXJ2aWNlCisgICAgICovCisgICAgcHJpdmF0ZSBDb250ZXh0IG1Db250ZXh0OworICAgIAorICAgIC8qKgorICAgICAqIFRoZSBub3RpZmljYXRpb24gdGhhdCBpcyBzaG93biB3aGVuIGEgVVNCIG1hc3Mgc3RvcmFnZSBob3N0CisgICAgICogaXMgY29ubmVjdGVkLiAKKyAgICAgKiA8cD4KKyAgICAgKiBUaGlzIGlzIGxhemlseSBjcmVhdGVkLCBzbyB1c2Uge0BsaW5rICNzZXRVc2JTdG9yYWdlTm90aWZpY2F0aW9uKCl9LgorICAgICAqLworICAgIHByaXZhdGUgTm90aWZpY2F0aW9uIG1Vc2JTdG9yYWdlTm90aWZpY2F0aW9uOworCisgICAgLyoqCisgICAgICogVGhlIG5vdGlmaWNhdGlvbiB0aGF0IGlzIHNob3duIHdoZW4gdGhlIGZvbGxvd2luZyBtZWRpYSBldmVudHMgb2NjdXI6CisgICAgICogICAgIC0gTWVkaWEgaXMgYmVpbmcgY2hlY2tlZAorICAgICAqICAgICAtIE1lZGlhIGlzIGJsYW5rIChvciB1bmtub3duIGZpbGVzeXN0ZW0pCisgICAgICogICAgIC0gTWVkaWEgaXMgY29ycnVwdAorICAgICAqICAgICAtIE1lZGlhIGlzIHNhZmUgdG8gdW5tb3VudAorICAgICAqICAgICAtIE1lZGlhIGlzIG1pc3NpbmcKKyAgICAgKiA8cD4KKyAgICAgKiBUaGlzIGlzIGxhemlseSBjcmVhdGVkLCBzbyB1c2Uge0BsaW5rICNzZXRNZWRpYVN0b3JhZ2VOb3RpZmljYXRpb24oKX0uCisgICAgICovCisgICAgcHJpdmF0ZSBOb3RpZmljYXRpb24gICBtTWVkaWFTdG9yYWdlTm90aWZpY2F0aW9uOworICAgIHByaXZhdGUgYm9vbGVhbiAgICAgICAgbVVtc0F2YWlsYWJsZTsKKyAgICBwcml2YXRlIFN0b3JhZ2VNYW5hZ2VyIG1TdG9yYWdlTWFuYWdlcjsKKworICAgIHB1YmxpYyBTdG9yYWdlTm90aWZpY2F0aW9uKENvbnRleHQgY29udGV4dCkgeworICAgICAgICBtQ29udGV4dCA9IGNvbnRleHQ7CisKKyAgICAgICAgbVN0b3JhZ2VNYW5hZ2VyID0gKFN0b3JhZ2VNYW5hZ2VyKSBjb250ZXh0LmdldFN5c3RlbVNlcnZpY2UoQ29udGV4dC5TVE9SQUdFX1NFUlZJQ0UpOworICAgICAgICBmaW5hbCBib29sZWFuIGNvbm5lY3RlZCA9IG1TdG9yYWdlTWFuYWdlci5pc1VzYk1hc3NTdG9yYWdlQ29ubmVjdGVkKCk7CisgICAgICAgIFNsb2cuZChUQUcsIFN0cmluZy5mb3JtYXQoICJTdGFydHVwIHdpdGggVU1TIGNvbm5lY3Rpb24gJXMgKG1lZGlhIHN0YXRlICVzKSIsIG1VbXNBdmFpbGFibGUsCisgICAgICAgICAgICAgICAgRW52aXJvbm1lbnQuZ2V0RXh0ZXJuYWxTdG9yYWdlU3RhdGUoKSkpOworICAgICAgICBvblVzYk1hc3NTdG9yYWdlQ29ubmVjdGlvbkNoYW5nZWQoY29ubmVjdGVkKTsKKyAgICB9CisKKyAgICAvKgorICAgICAqIEBvdmVycmlkZSBjb20uYW5kcm9pZC5vcy5zdG9yYWdlLlN0b3JhZ2VFdmVudExpc3RlbmVyCisgICAgICovCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgb25Vc2JNYXNzU3RvcmFnZUNvbm5lY3Rpb25DaGFuZ2VkKGJvb2xlYW4gY29ubmVjdGVkKSB7CisgICAgICAgIG1VbXNBdmFpbGFibGUgPSBjb25uZWN0ZWQ7CisgICAgICAgIC8qCisgICAgICAgICAqIEV2ZW4gdGhvdWdoIHdlIG1heSBoYXZlIGEgVU1TIGhvc3QgY29ubmVjdGVkLCB3ZSB0aGUgU0QgY2FyZAorICAgICAgICAgKiBtYXkgbm90IGJlIGluIGEgc3RhdGUgZm9yIGV4cG9ydC4KKyAgICAgICAgICovCisgICAgICAgIFN0cmluZyBzdCA9IEVudmlyb25tZW50LmdldEV4dGVybmFsU3RvcmFnZVN0YXRlKCk7CisKKyAgICAgICAgU2xvZy5pKFRBRywgU3RyaW5nLmZvcm1hdCgiVU1TIGNvbm5lY3Rpb24gY2hhbmdlZCB0byAlcyAobWVkaWEgc3RhdGUgJXMpIiwgY29ubmVjdGVkLCBzdCkpOworCisgICAgICAgIGlmIChjb25uZWN0ZWQgJiYgKHN0LmVxdWFscygKKyAgICAgICAgICAgICAgICBFbnZpcm9ubWVudC5NRURJQV9SRU1PVkVEKSB8fCBzdC5lcXVhbHMoRW52aXJvbm1lbnQuTUVESUFfQ0hFQ0tJTkcpKSkgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIE5vIGNhcmQgb3IgY2FyZCBiZWluZyBjaGVja2VkID0gZG9uJ3QgZGlzcGxheQorICAgICAgICAgICAgICovCisgICAgICAgICAgICBjb25uZWN0ZWQgPSBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICB1cGRhdGVVc2JNYXNzU3RvcmFnZU5vdGlmaWNhdGlvbihjb25uZWN0ZWQpOworICAgIH0KKworICAgIC8qCisgICAgICogQG92ZXJyaWRlIGNvbS5hbmRyb2lkLm9zLnN0b3JhZ2UuU3RvcmFnZUV2ZW50TGlzdGVuZXIKKyAgICAgKi8KKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBvblN0b3JhZ2VTdGF0ZUNoYW5nZWQoU3RyaW5nIHBhdGgsIFN0cmluZyBvbGRTdGF0ZSwgU3RyaW5nIG5ld1N0YXRlKSB7CisgICAgICAgIFNsb2cuaShUQUcsIFN0cmluZy5mb3JtYXQoCisgICAgICAgICAgICAgICAgIk1lZGlhIHslc30gc3RhdGUgY2hhbmdlZCBmcm9tIHslc30gLT4geyVzfSIsIHBhdGgsIG9sZFN0YXRlLCBuZXdTdGF0ZSkpOworICAgICAgICBpZiAobmV3U3RhdGUuZXF1YWxzKEVudmlyb25tZW50Lk1FRElBX1NIQVJFRCkpIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBTdG9yYWdlIGlzIG5vdyBzaGFyZWQuIE1vZGlmeSB0aGUgVU1TIG5vdGlmaWNhdGlvbgorICAgICAgICAgICAgICogZm9yIHN0b3BwaW5nIFVNUy4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgSW50ZW50IGludGVudCA9IG5ldyBJbnRlbnQoKTsKKyAgICAgICAgICAgIGludGVudC5zZXRDbGFzcyhtQ29udGV4dCwgY29tLmFuZHJvaWQuc3lzdGVtdWkudXNiLlVzYlN0b3JhZ2VBY3Rpdml0eS5jbGFzcyk7CisgICAgICAgICAgICBQZW5kaW5nSW50ZW50IHBpID0gUGVuZGluZ0ludGVudC5nZXRBY3Rpdml0eShtQ29udGV4dCwgMCwgaW50ZW50LCAwKTsKKyAgICAgICAgICAgIHNldFVzYlN0b3JhZ2VOb3RpZmljYXRpb24oCisgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLnVzYl9zdG9yYWdlX3N0b3Bfbm90aWZpY2F0aW9uX3RpdGxlLAorICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy51c2Jfc3RvcmFnZV9zdG9wX25vdGlmaWNhdGlvbl9tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3dhcm5pbmcsIGZhbHNlLCB0cnVlLCBwaSk7CisgICAgICAgIH0gZWxzZSBpZiAobmV3U3RhdGUuZXF1YWxzKEVudmlyb25tZW50Lk1FRElBX0NIRUNLSU5HKSkgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIFN0b3JhZ2UgaXMgbm93IGNoZWNraW5nLiBVcGRhdGUgbWVkaWEgbm90aWZpY2F0aW9uIGFuZCBkaXNhYmxlCisgICAgICAgICAgICAgKiBVTVMgbm90aWZpY2F0aW9uLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBzZXRNZWRpYVN0b3JhZ2VOb3RpZmljYXRpb24oCisgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLmV4dF9tZWRpYV9jaGVja2luZ19ub3RpZmljYXRpb25fdGl0bGUsCisgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLmV4dF9tZWRpYV9jaGVja2luZ19ub3RpZmljYXRpb25fbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X25vdGlmeV9zZGNhcmRfcHJlcGFyZSwgdHJ1ZSwgZmFsc2UsIG51bGwpOworICAgICAgICAgICAgdXBkYXRlVXNiTWFzc1N0b3JhZ2VOb3RpZmljYXRpb24oZmFsc2UpOworICAgICAgICB9IGVsc2UgaWYgKG5ld1N0YXRlLmVxdWFscyhFbnZpcm9ubWVudC5NRURJQV9NT1VOVEVEKSkgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIFN0b3JhZ2UgaXMgbm93IG1vdW50ZWQuIERpc21pc3MgYW55IG1lZGlhIG5vdGlmaWNhdGlvbnMsCisgICAgICAgICAgICAgKiBhbmQgZW5hYmxlIFVNUyBub3RpZmljYXRpb24gaWYgY29ubmVjdGVkLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBzZXRNZWRpYVN0b3JhZ2VOb3RpZmljYXRpb24oMCwgMCwgMCwgZmFsc2UsIGZhbHNlLCBudWxsKTsKKyAgICAgICAgICAgIHVwZGF0ZVVzYk1hc3NTdG9yYWdlTm90aWZpY2F0aW9uKG1VbXNBdmFpbGFibGUpOworICAgICAgICB9IGVsc2UgaWYgKG5ld1N0YXRlLmVxdWFscyhFbnZpcm9ubWVudC5NRURJQV9VTk1PVU5URUQpKSB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogU3RvcmFnZSBpcyBub3cgdW5tb3VudGVkLiBXZSBtYXkgaGF2ZSBiZWVuIHVubW91bnRlZAorICAgICAgICAgICAgICogYmVjYXVzZSB0aGUgdXNlciBpcyBlbmFibGluZy9kaXNhYmxpbmcgVU1TLCBpbiB3aGljaCBjYXNlIHdlIGRvbid0CisgICAgICAgICAgICAgKiB3YW50IHRvIGRpc3BsYXkgdGhlICdzYWZlIHRvIHVubW91bnQnIG5vdGlmaWNhdGlvbi4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKCFtU3RvcmFnZU1hbmFnZXIuaXNVc2JNYXNzU3RvcmFnZUVuYWJsZWQoKSkgeworICAgICAgICAgICAgICAgIGlmIChvbGRTdGF0ZS5lcXVhbHMoRW52aXJvbm1lbnQuTUVESUFfU0hBUkVEKSkgeworICAgICAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAgICAgKiBUaGUgdW5tb3VudCB3YXMgZHVlIHRvIFVNUyBiZWluZyBlbmFibGVkLiBEaXNtaXNzIGFueQorICAgICAgICAgICAgICAgICAgICAgKiBtZWRpYSBub3RpZmljYXRpb25zLCBhbmQgZW5hYmxlIFVNUyBub3RpZmljYXRpb24gaWYgY29ubmVjdGVkCisgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICBzZXRNZWRpYVN0b3JhZ2VOb3RpZmljYXRpb24oMCwgMCwgMCwgZmFsc2UsIGZhbHNlLCBudWxsKTsKKyAgICAgICAgICAgICAgICAgICAgdXBkYXRlVXNiTWFzc1N0b3JhZ2VOb3RpZmljYXRpb24obVVtc0F2YWlsYWJsZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgICAgICogU2hvdyBzYWZlIHRvIHVubW91bnQgbWVkaWEgbm90aWZpY2F0aW9uLCBhbmQgZW5hYmxlIFVNUworICAgICAgICAgICAgICAgICAgICAgKiBub3RpZmljYXRpb24gaWYgY29ubmVjdGVkLgorICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgc2V0TWVkaWFTdG9yYWdlTm90aWZpY2F0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLmV4dF9tZWRpYV9zYWZlX3VubW91bnRfbm90aWZpY2F0aW9uX3RpdGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLmV4dF9tZWRpYV9zYWZlX3VubW91bnRfbm90aWZpY2F0aW9uX21lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X25vdGlmeV9zZGNhcmQsIHRydWUsIHRydWUsIG51bGwpOworICAgICAgICAgICAgICAgICAgICB1cGRhdGVVc2JNYXNzU3RvcmFnZU5vdGlmaWNhdGlvbihtVW1zQXZhaWxhYmxlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogVGhlIHVubW91bnQgd2FzIGR1ZSB0byBVTVMgYmVpbmcgZW5hYmxlZC4gRGlzbWlzcyBhbnkKKyAgICAgICAgICAgICAgICAgKiBtZWRpYSBub3RpZmljYXRpb25zLCBhbmQgZGlzYWJsZSB0aGUgVU1TIG5vdGlmaWNhdGlvbgorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIHNldE1lZGlhU3RvcmFnZU5vdGlmaWNhdGlvbigwLCAwLCAwLCBmYWxzZSwgZmFsc2UsIG51bGwpOworICAgICAgICAgICAgICAgIHVwZGF0ZVVzYk1hc3NTdG9yYWdlTm90aWZpY2F0aW9uKGZhbHNlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChuZXdTdGF0ZS5lcXVhbHMoRW52aXJvbm1lbnQuTUVESUFfTk9GUykpIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBTdG9yYWdlIGhhcyBubyBmaWxlc3lzdGVtLiBTaG93IGJsYW5rIG1lZGlhIG5vdGlmaWNhdGlvbiwKKyAgICAgICAgICAgICAqIGFuZCBlbmFibGUgVU1TIG5vdGlmaWNhdGlvbiBpZiBjb25uZWN0ZWQuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIEludGVudCBpbnRlbnQgPSBuZXcgSW50ZW50KCk7CisgICAgICAgICAgICBpbnRlbnQuc2V0Q2xhc3MobUNvbnRleHQsIGNvbS5hbmRyb2lkLmludGVybmFsLmFwcC5FeHRlcm5hbE1lZGlhRm9ybWF0QWN0aXZpdHkuY2xhc3MpOworICAgICAgICAgICAgUGVuZGluZ0ludGVudCBwaSA9IFBlbmRpbmdJbnRlbnQuZ2V0QWN0aXZpdHkobUNvbnRleHQsIDAsIGludGVudCwgMCk7CisKKyAgICAgICAgICAgIHNldE1lZGlhU3RvcmFnZU5vdGlmaWNhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcuZXh0X21lZGlhX25vZnNfbm90aWZpY2F0aW9uX3RpdGxlLAorICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy5leHRfbWVkaWFfbm9mc19ub3RpZmljYXRpb25fbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X25vdGlmeV9zZGNhcmRfdXNiLCB0cnVlLCBmYWxzZSwgcGkpOworICAgICAgICAgICAgdXBkYXRlVXNiTWFzc1N0b3JhZ2VOb3RpZmljYXRpb24obVVtc0F2YWlsYWJsZSk7CisgICAgICAgIH0gZWxzZSBpZiAobmV3U3RhdGUuZXF1YWxzKEVudmlyb25tZW50Lk1FRElBX1VOTU9VTlRBQkxFKSkgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIFN0b3JhZ2UgaXMgY29ycnVwdC4gU2hvdyBjb3JydXB0IG1lZGlhIG5vdGlmaWNhdGlvbiwKKyAgICAgICAgICAgICAqIGFuZCBlbmFibGUgVU1TIG5vdGlmaWNhdGlvbiBpZiBjb25uZWN0ZWQuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIEludGVudCBpbnRlbnQgPSBuZXcgSW50ZW50KCk7CisgICAgICAgICAgICBpbnRlbnQuc2V0Q2xhc3MobUNvbnRleHQsIGNvbS5hbmRyb2lkLmludGVybmFsLmFwcC5FeHRlcm5hbE1lZGlhRm9ybWF0QWN0aXZpdHkuY2xhc3MpOworICAgICAgICAgICAgUGVuZGluZ0ludGVudCBwaSA9IFBlbmRpbmdJbnRlbnQuZ2V0QWN0aXZpdHkobUNvbnRleHQsIDAsIGludGVudCwgMCk7CisKKyAgICAgICAgICAgIHNldE1lZGlhU3RvcmFnZU5vdGlmaWNhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcuZXh0X21lZGlhX3VubW91bnRhYmxlX25vdGlmaWNhdGlvbl90aXRsZSwKKyAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcuZXh0X21lZGlhX3VubW91bnRhYmxlX25vdGlmaWNhdGlvbl9tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfbm90aWZ5X3NkY2FyZF91c2IsIHRydWUsIGZhbHNlLCBwaSk7IAorICAgICAgICAgICAgdXBkYXRlVXNiTWFzc1N0b3JhZ2VOb3RpZmljYXRpb24obVVtc0F2YWlsYWJsZSk7CisgICAgICAgIH0gZWxzZSBpZiAobmV3U3RhdGUuZXF1YWxzKEVudmlyb25tZW50Lk1FRElBX1JFTU9WRUQpKSB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogU3RvcmFnZSBoYXMgYmVlbiByZW1vdmVkLiBTaG93IG5vbWVkaWEgbWVkaWEgbm90aWZpY2F0aW9uLAorICAgICAgICAgICAgICogYW5kIGRpc2FibGUgVU1TIG5vdGlmaWNhdGlvbiByZWdhcmRsZXNzIG9mIGNvbm5lY3Rpb24gc3RhdGUuCisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHNldE1lZGlhU3RvcmFnZU5vdGlmaWNhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcuZXh0X21lZGlhX25vbWVkaWFfbm90aWZpY2F0aW9uX3RpdGxlLAorICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy5leHRfbWVkaWFfbm9tZWRpYV9ub3RpZmljYXRpb25fbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X25vdGlmeV9zZGNhcmRfdXNiLAorICAgICAgICAgICAgICAgICAgICB0cnVlLCBmYWxzZSwgbnVsbCk7CisgICAgICAgICAgICB1cGRhdGVVc2JNYXNzU3RvcmFnZU5vdGlmaWNhdGlvbihmYWxzZSk7CisgICAgICAgIH0gZWxzZSBpZiAobmV3U3RhdGUuZXF1YWxzKEVudmlyb25tZW50Lk1FRElBX0JBRF9SRU1PVkFMKSkgeworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIFN0b3JhZ2UgaGFzIGJlZW4gcmVtb3ZlZCB1bnNhZmVseS4gU2hvdyBiYWQgcmVtb3ZhbCBtZWRpYSBub3RpZmljYXRpb24sCisgICAgICAgICAgICAgKiBhbmQgZGlzYWJsZSBVTVMgbm90aWZpY2F0aW9uIHJlZ2FyZGxlc3Mgb2YgY29ubmVjdGlvbiBzdGF0ZS4KKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgc2V0TWVkaWFTdG9yYWdlTm90aWZpY2F0aW9uKAorICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy5leHRfbWVkaWFfYmFkcmVtb3ZhbF9ub3RpZmljYXRpb25fdGl0bGUsCisgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLmV4dF9tZWRpYV9iYWRyZW1vdmFsX25vdGlmaWNhdGlvbl9tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3dhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgIHRydWUsIHRydWUsIG51bGwpOworICAgICAgICAgICAgdXBkYXRlVXNiTWFzc1N0b3JhZ2VOb3RpZmljYXRpb24oZmFsc2UpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgU2xvZy53KFRBRywgU3RyaW5nLmZvcm1hdCgiSWdub3JpbmcgdW5rbm93biBzdGF0ZSB7JXN9IiwgbmV3U3RhdGUpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFVwZGF0ZSB0aGUgc3RhdGUgb2YgdGhlIFVTQiBtYXNzIHN0b3JhZ2Ugbm90aWZpY2F0aW9uCisgICAgICovCisgICAgdm9pZCB1cGRhdGVVc2JNYXNzU3RvcmFnZU5vdGlmaWNhdGlvbihib29sZWFuIGF2YWlsYWJsZSkgeworCisgICAgICAgIGlmIChhdmFpbGFibGUpIHsKKyAgICAgICAgICAgIEludGVudCBpbnRlbnQgPSBuZXcgSW50ZW50KCk7CisgICAgICAgICAgICBpbnRlbnQuc2V0Q2xhc3MobUNvbnRleHQsIGNvbS5hbmRyb2lkLnN5c3RlbXVpLnVzYi5Vc2JTdG9yYWdlQWN0aXZpdHkuY2xhc3MpOworICAgICAgICAgICAgaW50ZW50LnNldEZsYWdzKEludGVudC5GTEFHX0FDVElWSVRZX05FV19UQVNLKTsKKworICAgICAgICAgICAgUGVuZGluZ0ludGVudCBwaSA9IFBlbmRpbmdJbnRlbnQuZ2V0QWN0aXZpdHkobUNvbnRleHQsIDAsIGludGVudCwgMCk7CisgICAgICAgICAgICBzZXRVc2JTdG9yYWdlTm90aWZpY2F0aW9uKAorICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy51c2Jfc3RvcmFnZV9ub3RpZmljYXRpb25fdGl0bGUsCisgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLnVzYl9zdG9yYWdlX25vdGlmaWNhdGlvbl9tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX2RhdGFfdXNiLAorICAgICAgICAgICAgICAgICAgICBmYWxzZSwgdHJ1ZSwgcGkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2V0VXNiU3RvcmFnZU5vdGlmaWNhdGlvbigwLCAwLCAwLCBmYWxzZSwgZmFsc2UsIG51bGwpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogU2V0cyB0aGUgVVNCIHN0b3JhZ2Ugbm90aWZpY2F0aW9uLgorICAgICAqLworICAgIHByaXZhdGUgc3luY2hyb25pemVkIHZvaWQgc2V0VXNiU3RvcmFnZU5vdGlmaWNhdGlvbihpbnQgdGl0bGVJZCwgaW50IG1lc3NhZ2VJZCwgaW50IGljb24sCisgICAgICAgICAgICBib29sZWFuIHNvdW5kLCBib29sZWFuIHZpc2libGUsIFBlbmRpbmdJbnRlbnQgcGkpIHsKKworICAgICAgICBpZiAoIXZpc2libGUgJiYgbVVzYlN0b3JhZ2VOb3RpZmljYXRpb24gPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgTm90aWZpY2F0aW9uTWFuYWdlciBub3RpZmljYXRpb25NYW5hZ2VyID0gKE5vdGlmaWNhdGlvbk1hbmFnZXIpIG1Db250ZXh0CisgICAgICAgICAgICAgICAgLmdldFN5c3RlbVNlcnZpY2UoQ29udGV4dC5OT1RJRklDQVRJT05fU0VSVklDRSk7CisKKyAgICAgICAgaWYgKG5vdGlmaWNhdGlvbk1hbmFnZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAodmlzaWJsZSkgeworICAgICAgICAgICAgUmVzb3VyY2VzIHIgPSBSZXNvdXJjZXMuZ2V0U3lzdGVtKCk7CisgICAgICAgICAgICBDaGFyU2VxdWVuY2UgdGl0bGUgPSByLmdldFRleHQodGl0bGVJZCk7CisgICAgICAgICAgICBDaGFyU2VxdWVuY2UgbWVzc2FnZSA9IHIuZ2V0VGV4dChtZXNzYWdlSWQpOworCisgICAgICAgICAgICBpZiAobVVzYlN0b3JhZ2VOb3RpZmljYXRpb24gPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIG1Vc2JTdG9yYWdlTm90aWZpY2F0aW9uID0gbmV3IE5vdGlmaWNhdGlvbigpOworICAgICAgICAgICAgICAgIG1Vc2JTdG9yYWdlTm90aWZpY2F0aW9uLmljb24gPSBpY29uOworICAgICAgICAgICAgICAgIG1Vc2JTdG9yYWdlTm90aWZpY2F0aW9uLndoZW4gPSAwOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoc291bmQpIHsKKyAgICAgICAgICAgICAgICBtVXNiU3RvcmFnZU5vdGlmaWNhdGlvbi5kZWZhdWx0cyB8PSBOb3RpZmljYXRpb24uREVGQVVMVF9TT1VORDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbVVzYlN0b3JhZ2VOb3RpZmljYXRpb24uZGVmYXVsdHMgJj0gfk5vdGlmaWNhdGlvbi5ERUZBVUxUX1NPVU5EOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgbVVzYlN0b3JhZ2VOb3RpZmljYXRpb24uZmxhZ3MgPSBOb3RpZmljYXRpb24uRkxBR19PTkdPSU5HX0VWRU5UOworCisgICAgICAgICAgICBtVXNiU3RvcmFnZU5vdGlmaWNhdGlvbi50aWNrZXJUZXh0ID0gdGl0bGU7CisgICAgICAgICAgICBpZiAocGkgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIEludGVudCBpbnRlbnQgPSBuZXcgSW50ZW50KCk7CisgICAgICAgICAgICAgICAgcGkgPSBQZW5kaW5nSW50ZW50LmdldEJyb2FkY2FzdChtQ29udGV4dCwgMCwgaW50ZW50LCAwKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbVVzYlN0b3JhZ2VOb3RpZmljYXRpb24uc2V0TGF0ZXN0RXZlbnRJbmZvKG1Db250ZXh0LCB0aXRsZSwgbWVzc2FnZSwgcGkpOworICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBhZGJPbiA9IDEgPT0gU2V0dGluZ3MuU2VjdXJlLmdldEludCgKKyAgICAgICAgICAgICAgICBtQ29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKSwKKyAgICAgICAgICAgICAgICBTZXR0aW5ncy5TZWN1cmUuQURCX0VOQUJMRUQsCisgICAgICAgICAgICAgICAgMCk7CisKKyAgICAgICAgICAgIGlmIChQT1BfVU1TX0FDVElWSVRZX09OX0NPTk5FQ1QgJiYgIWFkYk9uKSB7CisgICAgICAgICAgICAgICAgLy8gUG9wIHVwIGEgZnVsbC1zY3JlZW4gYWxlcnQgdG8gY29hY2ggdGhlIHVzZXIgdGhyb3VnaCBlbmFibGluZyBVTVMuIFRoZSBhdmVyYWdlCisgICAgICAgICAgICAgICAgLy8gdXNlciBoYXMgYXR0YWNoZWQgdGhlIGRldmljZSB0byBVU0IgZWl0aGVyIHRvIGNoYXJnZSB0aGUgcGhvbmUgKGluIHdoaWNoIGNhc2UKKyAgICAgICAgICAgICAgICAvLyB0aGlzIGlzIGhhcm1sZXNzKSBvciB0cmFuc2ZlciBmaWxlcywgYW5kIGluIHRoZSBsYXR0ZXIgY2FzZSB0aGlzIGFsZXJ0IHNhdmVzCisgICAgICAgICAgICAgICAgLy8gc2V2ZXJhbCBzdGVwcyAoYXMgd2VsbCBhcyBzdWJ0bHkgaW5kaWNhdGVzIHRoYXQgeW91IHNob3VsZG4ndCBtaXggVU1TIHdpdGggb3RoZXIKKyAgICAgICAgICAgICAgICAvLyBhY3Rpdml0aWVzIG9uIHRoZSBkZXZpY2UpLgorICAgICAgICAgICAgICAgIC8vCisgICAgICAgICAgICAgICAgLy8gSWYgQURCIGlzIGVuYWJsZWQsIGhvd2V2ZXIsIHdlIHN1cHByZXNzIHRoaXMgZGlhbG9nICh1bmRlciB0aGUgYXNzdW1wdGlvbiB0aGF0IGEKKyAgICAgICAgICAgICAgICAvLyBkZXZlbG9wZXIgKGEpIGtub3dzIGhvdyB0byBlbmFibGUgVU1TLCBhbmQgKGIpIGlzIHByb2JhYmx5IHVzaW5nIFVTQiB0byBpbnN0YWxsCisgICAgICAgICAgICAgICAgLy8gYnVpbGRzIG9yIHVzZSBhZGIgY29tbWFuZHMuCisgICAgICAgICAgICAgICAgbVVzYlN0b3JhZ2VOb3RpZmljYXRpb24uZnVsbFNjcmVlbkludGVudCA9IHBpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgCisgICAgICAgIGZpbmFsIGludCBub3RpZmljYXRpb25JZCA9IG1Vc2JTdG9yYWdlTm90aWZpY2F0aW9uLmljb247CisgICAgICAgIGlmICh2aXNpYmxlKSB7CisgICAgICAgICAgICBub3RpZmljYXRpb25NYW5hZ2VyLm5vdGlmeShub3RpZmljYXRpb25JZCwgbVVzYlN0b3JhZ2VOb3RpZmljYXRpb24pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbm90aWZpY2F0aW9uTWFuYWdlci5jYW5jZWwobm90aWZpY2F0aW9uSWQpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBzeW5jaHJvbml6ZWQgYm9vbGVhbiBnZXRNZWRpYVN0b3JhZ2VOb3RpZmljYXRpb25EaXNtaXNzYWJsZSgpIHsKKyAgICAgICAgaWYgKChtTWVkaWFTdG9yYWdlTm90aWZpY2F0aW9uICE9IG51bGwpICYmCisgICAgICAgICAgICAoKG1NZWRpYVN0b3JhZ2VOb3RpZmljYXRpb24uZmxhZ3MgJiBOb3RpZmljYXRpb24uRkxBR19BVVRPX0NBTkNFTCkgPT0KKyAgICAgICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uLkZMQUdfQVVUT19DQU5DRUwpKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldHMgdGhlIG1lZGlhIHN0b3JhZ2Ugbm90aWZpY2F0aW9uLgorICAgICAqLworICAgIHByaXZhdGUgc3luY2hyb25pemVkIHZvaWQgc2V0TWVkaWFTdG9yYWdlTm90aWZpY2F0aW9uKGludCB0aXRsZUlkLCBpbnQgbWVzc2FnZUlkLCBpbnQgaWNvbiwgYm9vbGVhbiB2aXNpYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gZGlzbWlzc2FibGUsIFBlbmRpbmdJbnRlbnQgcGkpIHsKKworICAgICAgICBpZiAoIXZpc2libGUgJiYgbU1lZGlhU3RvcmFnZU5vdGlmaWNhdGlvbiA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBOb3RpZmljYXRpb25NYW5hZ2VyIG5vdGlmaWNhdGlvbk1hbmFnZXIgPSAoTm90aWZpY2F0aW9uTWFuYWdlcikgbUNvbnRleHQKKyAgICAgICAgICAgICAgICAuZ2V0U3lzdGVtU2VydmljZShDb250ZXh0Lk5PVElGSUNBVElPTl9TRVJWSUNFKTsKKworICAgICAgICBpZiAobm90aWZpY2F0aW9uTWFuYWdlciA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBpZiAobU1lZGlhU3RvcmFnZU5vdGlmaWNhdGlvbiAhPSBudWxsICYmIHZpc2libGUpIHsKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgKiBEaXNtaXNzIHRoZSBwcmV2aW91cyBub3RpZmljYXRpb24gLSB3ZSdyZSBhYm91dCB0bworICAgICAgICAgICAgICogcmUtdXNlIGl0LgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBmaW5hbCBpbnQgbm90aWZpY2F0aW9uSWQgPSBtTWVkaWFTdG9yYWdlTm90aWZpY2F0aW9uLmljb247CisgICAgICAgICAgICBub3RpZmljYXRpb25NYW5hZ2VyLmNhbmNlbChub3RpZmljYXRpb25JZCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmICh2aXNpYmxlKSB7CisgICAgICAgICAgICBSZXNvdXJjZXMgciA9IFJlc291cmNlcy5nZXRTeXN0ZW0oKTsKKyAgICAgICAgICAgIENoYXJTZXF1ZW5jZSB0aXRsZSA9IHIuZ2V0VGV4dCh0aXRsZUlkKTsKKyAgICAgICAgICAgIENoYXJTZXF1ZW5jZSBtZXNzYWdlID0gci5nZXRUZXh0KG1lc3NhZ2VJZCk7CisKKyAgICAgICAgICAgIGlmIChtTWVkaWFTdG9yYWdlTm90aWZpY2F0aW9uID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBtTWVkaWFTdG9yYWdlTm90aWZpY2F0aW9uID0gbmV3IE5vdGlmaWNhdGlvbigpOworICAgICAgICAgICAgICAgIG1NZWRpYVN0b3JhZ2VOb3RpZmljYXRpb24ud2hlbiA9IDA7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1NZWRpYVN0b3JhZ2VOb3RpZmljYXRpb24uZGVmYXVsdHMgJj0gfk5vdGlmaWNhdGlvbi5ERUZBVUxUX1NPVU5EOworCisgICAgICAgICAgICBpZiAoZGlzbWlzc2FibGUpIHsKKyAgICAgICAgICAgICAgICBtTWVkaWFTdG9yYWdlTm90aWZpY2F0aW9uLmZsYWdzID0gTm90aWZpY2F0aW9uLkZMQUdfQVVUT19DQU5DRUw7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1NZWRpYVN0b3JhZ2VOb3RpZmljYXRpb24uZmxhZ3MgPSBOb3RpZmljYXRpb24uRkxBR19PTkdPSU5HX0VWRU5UOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtTWVkaWFTdG9yYWdlTm90aWZpY2F0aW9uLnRpY2tlclRleHQgPSB0aXRsZTsKKyAgICAgICAgICAgIGlmIChwaSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgSW50ZW50IGludGVudCA9IG5ldyBJbnRlbnQoKTsKKyAgICAgICAgICAgICAgICBwaSA9IFBlbmRpbmdJbnRlbnQuZ2V0QnJvYWRjYXN0KG1Db250ZXh0LCAwLCBpbnRlbnQsIDApOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtTWVkaWFTdG9yYWdlTm90aWZpY2F0aW9uLmljb24gPSBpY29uOworICAgICAgICAgICAgbU1lZGlhU3RvcmFnZU5vdGlmaWNhdGlvbi5zZXRMYXRlc3RFdmVudEluZm8obUNvbnRleHQsIHRpdGxlLCBtZXNzYWdlLCBwaSk7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgZmluYWwgaW50IG5vdGlmaWNhdGlvbklkID0gbU1lZGlhU3RvcmFnZU5vdGlmaWNhdGlvbi5pY29uOworICAgICAgICBpZiAodmlzaWJsZSkgeworICAgICAgICAgICAgbm90aWZpY2F0aW9uTWFuYWdlci5ub3RpZnkobm90aWZpY2F0aW9uSWQsIG1NZWRpYVN0b3JhZ2VOb3RpZmljYXRpb24pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbm90aWZpY2F0aW9uTWFuYWdlci5jYW5jZWwobm90aWZpY2F0aW9uSWQpOworICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvcGFja2FnZXMvU3lzdGVtVUkvc3JjL2NvbS9hbmRyb2lkL3N5c3RlbXVpL3VzYi9Vc2JTdG9yYWdlQWN0aXZpdHkuamF2YSBiL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS91c2IvVXNiU3RvcmFnZUFjdGl2aXR5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTVkMzFlYwotLS0gL2Rldi9udWxsCisrKyBiL3BhY2thZ2VzL1N5c3RlbVVJL3NyYy9jb20vYW5kcm9pZC9zeXN0ZW11aS91c2IvVXNiU3RvcmFnZUFjdGl2aXR5LmphdmEKQEAgLTAsMCArMSwyNzIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgR29vZ2xlIEluYy4KKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5zeXN0ZW11aS51c2I7CisKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SOworaW1wb3J0IGFuZHJvaWQuYXBwLkFjdGl2aXR5OworaW1wb3J0IGFuZHJvaWQuYXBwLkFjdGl2aXR5TWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLmFwcC5BbGVydERpYWxvZzsKK2ltcG9ydCBhbmRyb2lkLmFwcC5EaWFsb2c7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkJyb2FkY2FzdFJlY2VpdmVyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2U7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50RmlsdGVyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UuT25DYW5jZWxMaXN0ZW5lcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uQXBwbGljYXRpb25JbmZvOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uOworaW1wb3J0IGFuZHJvaWQub3MuQnVuZGxlOworaW1wb3J0IGFuZHJvaWQub3MuRW52aXJvbm1lbnQ7CitpbXBvcnQgYW5kcm9pZC5vcy5IYW5kbGVyOworaW1wb3J0IGFuZHJvaWQub3MuSUJpbmRlcjsKK2ltcG9ydCBhbmRyb2lkLm9zLnN0b3JhZ2UuSU1vdW50U2VydmljZTsKK2ltcG9ydCBhbmRyb2lkLm9zLnN0b3JhZ2UuU3RvcmFnZU1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5vcy5zdG9yYWdlLlN0b3JhZ2VFdmVudExpc3RlbmVyOworaW1wb3J0IGFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uOworaW1wb3J0IGFuZHJvaWQub3MuU2VydmljZU1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuSW1hZ2VWaWV3OworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkJ1dHRvbjsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5Qcm9ncmVzc0JhcjsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5UZXh0VmlldzsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuVmlldzsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuV2luZG93OworaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworLyoqCisgKiBUaGlzIGFjdGl2aXR5IGlzIHNob3duIHRvIHRoZSB1c2VyIGZvciBoaW0vaGVyIHRvIGVuYWJsZSBVU0IgbWFzcyBzdG9yYWdlCisgKiBvbi1kZW1hbmQgKHRoYXQgaXMsIHdoZW4gdGhlIFVTQiBjYWJsZSBpcyBjb25uZWN0ZWQpLiBJdCB1c2VzIHRoZSBhbGVydAorICogZGlhbG9nIHN0eWxlLiBJdCB3aWxsIGJlIGxhdW5jaGVkIGZyb20gYSBub3RpZmljYXRpb24uCisgKi8KK3B1YmxpYyBjbGFzcyBVc2JTdG9yYWdlQWN0aXZpdHkgZXh0ZW5kcyBBY3Rpdml0eQorICAgICAgICBpbXBsZW1lbnRzIFZpZXcuT25DbGlja0xpc3RlbmVyLCBPbkNhbmNlbExpc3RlbmVyIHsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gIlVzYlN0b3JhZ2VBY3Rpdml0eSI7CisKKyAgICBwcml2YXRlIEJ1dHRvbiBtTW91bnRCdXR0b247CisgICAgcHJpdmF0ZSBCdXR0b24gbVVubW91bnRCdXR0b247CisgICAgcHJpdmF0ZSBQcm9ncmVzc0JhciBtUHJvZ3Jlc3NCYXI7CisgICAgcHJpdmF0ZSBUZXh0VmlldyBtQmFubmVyOworICAgIHByaXZhdGUgVGV4dFZpZXcgbU1lc3NhZ2U7CisgICAgcHJpdmF0ZSBJbWFnZVZpZXcgbUljb247CisgICAgcHJpdmF0ZSBTdG9yYWdlTWFuYWdlciBtU3RvcmFnZU1hbmFnZXIgPSBudWxsOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBETEdfQ09ORklSTV9LSUxMX1NUT1JBR0VfVVNFUlMgPSAxOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBETEdfRVJST1JfU0hBUklORyA9IDI7CisgICAgc3RhdGljIGZpbmFsIGJvb2xlYW4gbG9jYWxMT0dWID0gZmFsc2U7CisKKyAgICAvKiogVXNlZCB0byBkZXRlY3Qgd2hlbiB0aGUgVVNCIGNhYmxlIGlzIHVucGx1Z2dlZCwgc28gd2UgY2FuIGNhbGwgZmluaXNoKCkgKi8KKyAgICBwcml2YXRlIEJyb2FkY2FzdFJlY2VpdmVyIG1CYXR0ZXJ5UmVjZWl2ZXIgPSBuZXcgQnJvYWRjYXN0UmVjZWl2ZXIoKSB7CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBvblJlY2VpdmUoQ29udGV4dCBjb250ZXh0LCBJbnRlbnQgaW50ZW50KSB7CisgICAgICAgICAgICBpZiAoaW50ZW50LmdldEFjdGlvbigpID09IEludGVudC5BQ1RJT05fQkFUVEVSWV9DSEFOR0VEKSB7CisgICAgICAgICAgICAgICAgaGFuZGxlQmF0dGVyeUNoYW5nZWQoaW50ZW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH07CisKKyAgICBwcml2YXRlIFN0b3JhZ2VFdmVudExpc3RlbmVyIG1TdG9yYWdlTGlzdGVuZXIgPSBuZXcgU3RvcmFnZUV2ZW50TGlzdGVuZXIoKSB7CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBvblN0b3JhZ2VTdGF0ZUNoYW5nZWQoU3RyaW5nIHBhdGgsIFN0cmluZyBvbGRTdGF0ZSwgU3RyaW5nIG5ld1N0YXRlKSB7CisgICAgICAgICAgICBmaW5hbCBib29sZWFuIG9uID0gbmV3U3RhdGUuZXF1YWxzKEVudmlyb25tZW50Lk1FRElBX1NIQVJFRCk7CisgICAgICAgICAgICBzd2l0Y2hEaXNwbGF5KG9uKTsKKyAgICAgICAgfQorICAgIH07CisgICAgCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgb25DcmVhdGUoQnVuZGxlIHNhdmVkSW5zdGFuY2VTdGF0ZSkgeworICAgICAgICBzdXBlci5vbkNyZWF0ZShzYXZlZEluc3RhbmNlU3RhdGUpOworCisgICAgICAgIGlmIChtU3RvcmFnZU1hbmFnZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgbVN0b3JhZ2VNYW5hZ2VyID0gKFN0b3JhZ2VNYW5hZ2VyKSBnZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuU1RPUkFHRV9TRVJWSUNFKTsKKyAgICAgICAgICAgIGlmIChtU3RvcmFnZU1hbmFnZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIExvZy53KFRBRywgIkZhaWxlZCB0byBnZXQgU3RvcmFnZU1hbmFnZXIiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJlcXVlc3RXaW5kb3dGZWF0dXJlKFdpbmRvdy5GRUFUVVJFX0lOREVURVJNSU5BVEVfUFJPR1JFU1MpOworICAgICAgICBzZXRQcm9ncmVzc0JhckluZGV0ZXJtaW5hdGVWaXNpYmlsaXR5KHRydWUpOworCisgICAgICAgIHNldFRpdGxlKGdldFN0cmluZyhjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy51c2Jfc3RvcmFnZV9hY3Rpdml0eV90aXRsZSkpOworCisgICAgICAgIHNldENvbnRlbnRWaWV3KGNvbS5hbmRyb2lkLmludGVybmFsLlIubGF5b3V0LnVzYl9zdG9yYWdlX2FjdGl2aXR5KTsKKworICAgICAgICBtSWNvbiA9IChJbWFnZVZpZXcpIGZpbmRWaWV3QnlJZChjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmlkLmljb24pOworICAgICAgICBtQmFubmVyID0gKFRleHRWaWV3KSBmaW5kVmlld0J5SWQoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5pZC5iYW5uZXIpOworICAgICAgICBtTWVzc2FnZSA9IChUZXh0VmlldykgZmluZFZpZXdCeUlkKGNvbS5hbmRyb2lkLmludGVybmFsLlIuaWQubWVzc2FnZSk7CisKKyAgICAgICAgbU1vdW50QnV0dG9uID0gKEJ1dHRvbikgZmluZFZpZXdCeUlkKGNvbS5hbmRyb2lkLmludGVybmFsLlIuaWQubW91bnRfYnV0dG9uKTsKKyAgICAgICAgbU1vdW50QnV0dG9uLnNldE9uQ2xpY2tMaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgbVVubW91bnRCdXR0b24gPSAoQnV0dG9uKSBmaW5kVmlld0J5SWQoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5pZC51bm1vdW50X2J1dHRvbik7CisgICAgICAgIG1Vbm1vdW50QnV0dG9uLnNldE9uQ2xpY2tMaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgbVByb2dyZXNzQmFyID0gKFByb2dyZXNzQmFyKSBmaW5kVmlld0J5SWQoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5pZC5wcm9ncmVzcyk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHN3aXRjaERpc3BsYXkoYm9vbGVhbiB1c2JTdG9yYWdlSW5Vc2UpIHsKKyAgICAgICAgaWYgKHVzYlN0b3JhZ2VJblVzZSkgeworICAgICAgICAgICAgbVByb2dyZXNzQmFyLnNldFZpc2liaWxpdHkoVmlldy5HT05FKTsKKyAgICAgICAgICAgIG1Vbm1vdW50QnV0dG9uLnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKKyAgICAgICAgICAgIG1Nb3VudEJ1dHRvbi5zZXRWaXNpYmlsaXR5KFZpZXcuR09ORSk7CisgICAgICAgICAgICBtSWNvbi5zZXRJbWFnZVJlc291cmNlKGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUudXNiX2FuZHJvaWRfY29ubmVjdGVkKTsKKyAgICAgICAgICAgIG1CYW5uZXIuc2V0VGV4dChjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy51c2Jfc3RvcmFnZV9zdG9wX3RpdGxlKTsKKyAgICAgICAgICAgIG1NZXNzYWdlLnNldFRleHQoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcudXNiX3N0b3JhZ2Vfc3RvcF9tZXNzYWdlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1Qcm9ncmVzc0Jhci5zZXRWaXNpYmlsaXR5KFZpZXcuR09ORSk7CisgICAgICAgICAgICBtVW5tb3VudEJ1dHRvbi5zZXRWaXNpYmlsaXR5KFZpZXcuR09ORSk7CisgICAgICAgICAgICBtTW91bnRCdXR0b24uc2V0VmlzaWJpbGl0eShWaWV3LlZJU0lCTEUpOworICAgICAgICAgICAgbUljb24uc2V0SW1hZ2VSZXNvdXJjZShjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnVzYl9hbmRyb2lkKTsKKyAgICAgICAgICAgIG1CYW5uZXIuc2V0VGV4dChjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy51c2Jfc3RvcmFnZV90aXRsZSk7CisgICAgICAgICAgICBtTWVzc2FnZS5zZXRUZXh0KGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLnVzYl9zdG9yYWdlX21lc3NhZ2UpOworICAgICAgICB9CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgb25SZXN1bWUoKSB7CisgICAgICAgIHN1cGVyLm9uUmVzdW1lKCk7CisKKyAgICAgICAgbVN0b3JhZ2VNYW5hZ2VyLnJlZ2lzdGVyTGlzdGVuZXIobVN0b3JhZ2VMaXN0ZW5lcik7CisgICAgICAgIHJlZ2lzdGVyUmVjZWl2ZXIobUJhdHRlcnlSZWNlaXZlciwgbmV3IEludGVudEZpbHRlcihJbnRlbnQuQUNUSU9OX0JBVFRFUllfQ0hBTkdFRCkpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgc3dpdGNoRGlzcGxheShtU3RvcmFnZU1hbmFnZXIuaXNVc2JNYXNzU3RvcmFnZUVuYWJsZWQoKSk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgTG9nLmUoVEFHLCAiRmFpbGVkIHRvIHJlYWQgVU1TIGVuYWJsZSBzdGF0ZSIsIGV4KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIG9uUGF1c2UoKSB7CisgICAgICAgIHN1cGVyLm9uUGF1c2UoKTsKKyAgICAgICAgCisgICAgICAgIHVucmVnaXN0ZXJSZWNlaXZlcihtQmF0dGVyeVJlY2VpdmVyKTsKKyAgICAgICAgaWYgKG1TdG9yYWdlTWFuYWdlciA9PSBudWxsICYmIG1TdG9yYWdlTGlzdGVuZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgbVN0b3JhZ2VNYW5hZ2VyLnVucmVnaXN0ZXJMaXN0ZW5lcihtU3RvcmFnZUxpc3RlbmVyKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBoYW5kbGVCYXR0ZXJ5Q2hhbmdlZChJbnRlbnQgaW50ZW50KSB7CisgICAgICAgIGludCBwbHVnZ2VkVHlwZSA9IGludGVudC5nZXRJbnRFeHRyYSgicGx1Z2dlZCIsIDApOworICAgICAgICBpZiAocGx1Z2dlZFR5cGUgPT0gMCkgeworICAgICAgICAgICAgLy8gSXQgd2FzIGRpc2Nvbm5lY3RlZCBmcm9tIHRoZSBwbHVnLCBzbyBmaW5pc2gKKyAgICAgICAgICAgIGZpbmlzaCgpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBJTW91bnRTZXJ2aWNlIGdldE1vdW50U2VydmljZSgpIHsKKyAgICAgICAgSUJpbmRlciBzZXJ2aWNlID0gU2VydmljZU1hbmFnZXIuZ2V0U2VydmljZSgibW91bnQiKTsKKyAgICAgICAgaWYgKHNlcnZpY2UgIT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIElNb3VudFNlcnZpY2UuU3R1Yi5hc0ludGVyZmFjZShzZXJ2aWNlKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgRGlhbG9nIG9uQ3JlYXRlRGlhbG9nKGludCBpZCwgQnVuZGxlIGFyZ3MpIHsKKyAgICAgICAgc3dpdGNoIChpZCkgeworICAgICAgICBjYXNlIERMR19DT05GSVJNX0tJTExfU1RPUkFHRV9VU0VSUzoKKyAgICAgICAgICAgIHJldHVybiBuZXcgQWxlcnREaWFsb2cuQnVpbGRlcih0aGlzKQorICAgICAgICAgICAgICAgICAgICAuc2V0VGl0bGUoUi5zdHJpbmcuZGxnX2NvbmZpcm1fa2lsbF9zdG9yYWdlX3VzZXJzX3RpdGxlKQorICAgICAgICAgICAgICAgICAgICAuc2V0UG9zaXRpdmVCdXR0b24oUi5zdHJpbmcuZGxnX29rLCBuZXcgRGlhbG9nSW50ZXJmYWNlLk9uQ2xpY2tMaXN0ZW5lcigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIG9uQ2xpY2soRGlhbG9nSW50ZXJmYWNlIGRpYWxvZywgaW50IHdoaWNoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoVXNiTWFzc1N0b3JhZ2VBc3luYyh0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH19KQorICAgICAgICAgICAgICAgICAgICAuc2V0TmVnYXRpdmVCdXR0b24oUi5zdHJpbmcuY2FuY2VsLCBudWxsKQorICAgICAgICAgICAgICAgICAgICAuc2V0TWVzc2FnZShSLnN0cmluZy5kbGdfY29uZmlybV9raWxsX3N0b3JhZ2VfdXNlcnNfdGV4dCkKKyAgICAgICAgICAgICAgICAgICAgLnNldE9uQ2FuY2VsTGlzdGVuZXIodGhpcykKKyAgICAgICAgICAgICAgICAgICAgLmNyZWF0ZSgpOworICAgICAgICBjYXNlIERMR19FUlJPUl9TSEFSSU5HOgorICAgICAgICAgICAgcmV0dXJuIG5ldyBBbGVydERpYWxvZy5CdWlsZGVyKHRoaXMpCisgICAgICAgICAgICAgICAgICAgIC5zZXRUaXRsZShSLnN0cmluZy5kbGdfZXJyb3JfdGl0bGUpCisgICAgICAgICAgICAgICAgICAgIC5zZXROZXV0cmFsQnV0dG9uKFIuc3RyaW5nLmRsZ19vaywgbnVsbCkKKyAgICAgICAgICAgICAgICAgICAgLnNldE1lc3NhZ2UoUi5zdHJpbmcudXNiX3N0b3JhZ2VfZXJyb3JfbWVzc2FnZSkKKyAgICAgICAgICAgICAgICAgICAgLnNldE9uQ2FuY2VsTGlzdGVuZXIodGhpcykKKyAgICAgICAgICAgICAgICAgICAgLmNyZWF0ZSgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBzaG93RGlhbG9nSW5uZXIoaW50IGlkKSB7CisgICAgICAgIHJlbW92ZURpYWxvZyhpZCk7CisgICAgICAgIHNob3dEaWFsb2coaWQpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBzd2l0Y2hVc2JNYXNzU3RvcmFnZUFzeW5jKGJvb2xlYW4gb24pIHsKKyAgICAgICAgbVVubW91bnRCdXR0b24uc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOworICAgICAgICBtTW91bnRCdXR0b24uc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOworCisgICAgICAgIG1Qcm9ncmVzc0Jhci5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7CisgICAgICAgIC8vIHdpbGwgYmUgaGlkZGVuIG9uY2UgVVNCIG1hc3Mgc3RvcmFnZSBraWNrcyBpbiAob3IgZmFpbHMpCisgICAgICAgIAorICAgICAgICBmaW5hbCBib29sZWFuIF9vbiA9IG9uOworICAgICAgICBuZXcgVGhyZWFkKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgIGlmIChfb24pIHsKKyAgICAgICAgICAgICAgICAgICAgbVN0b3JhZ2VNYW5hZ2VyLmVuYWJsZVVzYk1hc3NTdG9yYWdlKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbVN0b3JhZ2VNYW5hZ2VyLmRpc2FibGVVc2JNYXNzU3RvcmFnZSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfS5zdGFydCgpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBjaGVja1N0b3JhZ2VVc2VycygpIHsKKyAgICAgICAgSU1vdW50U2VydmljZSBpbXMgPSBnZXRNb3VudFNlcnZpY2UoKTsKKyAgICAgICAgaWYgKGltcyA9PSBudWxsKSB7CisgICAgICAgICAgICAvLyBEaXNwbGF5IGVycm9yIGRpYWxvZworICAgICAgICAgICAgc2hvd0RpYWxvZ0lubmVyKERMR19FUlJPUl9TSEFSSU5HKTsKKyAgICAgICAgfQorICAgICAgICBTdHJpbmcgZXh0U3RvcmFnZVBhdGggPSBFbnZpcm9ubWVudC5nZXRFeHRlcm5hbFN0b3JhZ2VEaXJlY3RvcnkoKS50b1N0cmluZygpOworICAgICAgICBib29sZWFuIHNob3dEaWFsb2cgPSBmYWxzZTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGludFtdIHN0VXNlcnMgPSBpbXMuZ2V0U3RvcmFnZVVzZXJzKGV4dFN0b3JhZ2VQYXRoKTsKKyAgICAgICAgICAgIGlmIChzdFVzZXJzICE9IG51bGwgJiYgc3RVc2Vycy5sZW5ndGggPiAwKSB7CisgICAgICAgICAgICAgICAgc2hvd0RpYWxvZyA9IHRydWU7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIExpc3Qgb2YgYXBwbGljYXRpb25zIG9uIHNkY2FyZC4KKyAgICAgICAgICAgICAgICBBY3Rpdml0eU1hbmFnZXIgYW0gPSAoQWN0aXZpdHlNYW5hZ2VyKWdldFN5c3RlbVNlcnZpY2UoQ29udGV4dC5BQ1RJVklUWV9TRVJWSUNFKTsKKyAgICAgICAgICAgICAgICBMaXN0PEFwcGxpY2F0aW9uSW5mbz4gaW5mb0xpc3QgPSBhbS5nZXRSdW5uaW5nRXh0ZXJuYWxBcHBsaWNhdGlvbnMoKTsKKyAgICAgICAgICAgICAgICBpZiAoaW5mb0xpc3QgIT0gbnVsbCAmJiBpbmZvTGlzdC5zaXplKCkgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgIHNob3dEaWFsb2cgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIC8vIERpc3BsYXkgZXJyb3IgZGlhbG9nCisgICAgICAgICAgICBzaG93RGlhbG9nSW5uZXIoRExHX0VSUk9SX1NIQVJJTkcpOworICAgICAgICB9CisgICAgICAgIGlmIChzaG93RGlhbG9nKSB7CisgICAgICAgICAgICAvLyBEaXNwbGF5IGRpYWxvZyB0byB1c2VyCisgICAgICAgICAgICBzaG93RGlhbG9nSW5uZXIoRExHX0NPTkZJUk1fS0lMTF9TVE9SQUdFX1VTRVJTKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChsb2NhbExPR1YpIExvZy5pKFRBRywgIkVuYWJsaW5nIFVNUyIpOworICAgICAgICAgICAgc3dpdGNoVXNiTWFzc1N0b3JhZ2VBc3luYyh0cnVlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG9uQ2xpY2soVmlldyB2KSB7CisgICAgICAgIGlmICh2ID09IG1Nb3VudEJ1dHRvbikgeworICAgICAgICAgICAvLyBDaGVjayBmb3IgbGlzdCBvZiBzdG9yYWdlIHVzZXJzIGFuZCBkaXNwbGF5IGRpYWxvZyBpZiBuZWVkZWQuCisgICAgICAgICAgICBjaGVja1N0b3JhZ2VVc2VycygpOworICAgICAgICB9IGVsc2UgaWYgKHYgPT0gbVVubW91bnRCdXR0b24pIHsKKyAgICAgICAgICAgIGlmIChsb2NhbExPR1YpIExvZy5pKFRBRywgIkRpc2FibGluZyBVTVMiKTsKKyAgICAgICAgICAgIHN3aXRjaFVzYk1hc3NTdG9yYWdlQXN5bmMoZmFsc2UpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgb25DYW5jZWwoRGlhbG9nSW50ZXJmYWNlIGRpYWxvZykgeworICAgICAgICBmaW5pc2goKTsKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL3BhY2thZ2VzL1ZwblNlcnZpY2VzL3NyYy9jb20vYW5kcm9pZC9zZXJ2ZXIvdnBuL1ZwblNlcnZpY2VCaW5kZXIuamF2YSBiL3BhY2thZ2VzL1ZwblNlcnZpY2VzL3NyYy9jb20vYW5kcm9pZC9zZXJ2ZXIvdnBuL1ZwblNlcnZpY2VCaW5kZXIuamF2YQppbmRleCA1NjcyYTAxLi5lZWFmZDVhIDEwMDY0NAotLS0gYS9wYWNrYWdlcy9WcG5TZXJ2aWNlcy9zcmMvY29tL2FuZHJvaWQvc2VydmVyL3Zwbi9WcG5TZXJ2aWNlQmluZGVyLmphdmEKKysrIGIvcGFja2FnZXMvVnBuU2VydmljZXMvc3JjL2NvbS9hbmRyb2lkL3NlcnZlci92cG4vVnBuU2VydmljZUJpbmRlci5qYXZhCkBAIC01Miw4ICs1MiwxMSBAQAogICAgIC8vIFRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24gaXMgZGVsZWdhdGVkIHRvIHRoZSBWcG5TZXJ2aWNlIGNsYXNzLgogICAgIHByaXZhdGUgVnBuU2VydmljZTw/IGV4dGVuZHMgVnBuUHJvZmlsZT4gbVNlcnZpY2U7CiAKKyAgICAvLyBUT0RPKG9hbSk6IFRlc3QgVlBOIHdoZW4gRUZTIGlzIGVuYWJsZWQgKHdpbGwgZG8gbGF0ZXIpLi4uCiAgICAgcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIGdldFN0YXRlRmlsZVBhdGgoKSB7Ci0JcmV0dXJuIEVudmlyb25tZW50LmdldERhdGFEaXJlY3RvcnkoKS5nZXRQYXRoKCkgKyBTVEFURVNfRklMRV9SRUxBVElWRV9QQVRIOworICAgICAgICAvLyBUaGlzIGNhbGwgd2lsbCByZXR1cm4gdGhlIGNvcnJlY3UgZGlyZWN0b3J5IHdoZXRoZXIgRW5jcnlwdGVkIEZTIGlzIGVuYWJsZWQgb3Igbm90CisgICAgICAgIC8vIERpc2FibGVkOiAvZGF0YS9taXNjL3Zwbi8uc3RhdGVzICAgRW5hYmxlZDogL2RhdGEvc2VjdXJlL21pc2MvdnBuLy5zdGF0ZXMKKwlyZXR1cm4gRW52aXJvbm1lbnQuZ2V0U2VjdXJlRGF0YURpcmVjdG9yeSgpLmdldFBhdGgoKSArIFNUQVRFU19GSUxFX1JFTEFUSVZFX1BBVEg7CiAgICAgfQogCiAgICAgcHJpdmF0ZSBmaW5hbCBJQmluZGVyIG1CaW5kZXIgPSBuZXcgSVZwblNlcnZpY2UuU3R1YigpIHsKZGlmZiAtLWdpdCBhL3BvbGljeS9BbmRyb2lkLm1rIGIvcG9saWN5L0FuZHJvaWQubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDdkOGZiOAotLS0gL2Rldi9udWxsCisrKyBiL3BvbGljeS9BbmRyb2lkLm1rCkBAIC0wLDAgKzEsMTQgQEAKK0xPQ0FMX1BBVEg6PSAkKGNhbGwgbXktZGlyKQorCisjIHRoZSBsaWJyYXJ5CisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoraW5jbHVkZSAkKENMRUFSX1ZBUlMpCisKK0xPQ0FMX1NSQ19GSUxFUyA6PSAkKGNhbGwgYWxsLWphdmEtZmlsZXMtdW5kZXIsIHNyYykKKyAgICAgICAgICAgIAorTE9DQUxfTU9EVUxFIDo9IGFuZHJvaWQucG9saWN5CisKK2luY2x1ZGUgJChCVUlMRF9KQVZBX0xJQlJBUlkpCisKKyMgYWRkaXRpb25hbGx5LCBidWlsZCB1bml0IHRlc3RzIGluIGEgc2VwYXJhdGUgLmFwaworaW5jbHVkZSAkKGNhbGwgYWxsLW1ha2VmaWxlcy11bmRlciwkKExPQ0FMX1BBVEgpKQpkaWZmIC0tZ2l0IGEvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9BY2NvdW50VW5sb2NrU2NyZWVuLmphdmEgYi9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL0FjY291bnRVbmxvY2tTY3JlZW4uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NDBjNWUxCi0tLSAvZGV2L251bGwKKysrIGIvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9BY2NvdW50VW5sb2NrU2NyZWVuLmphdmEKQEAgLTAsMCArMSwzNDcgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLmludGVybmFsLnBvbGljeS5pbXBsOworCitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuUjsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC53aWRnZXQuTG9ja1BhdHRlcm5VdGlsczsKKworaW1wb3J0IGFuZHJvaWQuYWNjb3VudHMuQWNjb3VudDsKK2ltcG9ydCBhbmRyb2lkLmFjY291bnRzLkFjY291bnRNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQuYWNjb3VudHMuT3BlcmF0aW9uQ2FuY2VsZWRFeGNlcHRpb247CitpbXBvcnQgYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50TWFuYWdlckZ1dHVyZTsKK2ltcG9ydCBhbmRyb2lkLmFjY291bnRzLkF1dGhlbnRpY2F0b3JFeGNlcHRpb247CitpbXBvcnQgYW5kcm9pZC5hY2NvdW50cy5BY2NvdW50TWFuYWdlckNhbGxiYWNrOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnJlcy5Db25maWd1cmF0aW9uOworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuUmVjdDsKK2ltcG9ydCBhbmRyb2lkLnRleHQuRWRpdGFibGU7CitpbXBvcnQgYW5kcm9pZC50ZXh0LklucHV0RmlsdGVyOworaW1wb3J0IGFuZHJvaWQudGV4dC5Mb2dpbkZpbHRlcjsKK2ltcG9ydCBhbmRyb2lkLnRleHQuVGV4dFdhdGNoZXI7CitpbXBvcnQgYW5kcm9pZC52aWV3LktleUV2ZW50OworaW1wb3J0IGFuZHJvaWQudmlldy5MYXlvdXRJbmZsYXRlcjsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuVmlldzsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5CdXR0b247CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuRWRpdFRleHQ7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuUmVsYXRpdmVMYXlvdXQ7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuVGV4dFZpZXc7CitpbXBvcnQgYW5kcm9pZC5hcHAuRGlhbG9nOworaW1wb3J0IGFuZHJvaWQuYXBwLlByb2dyZXNzRGlhbG9nOworaW1wb3J0IGFuZHJvaWQub3MuQnVuZGxlOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKKworLyoqCisgKiBXaGVuIHRoZSB1c2VyIGZvcmdldHMgdGhlaXIgcGFzc3dvcmQgYSBidW5jaCBvZiB0aW1lcywgd2UgZmFsbCBiYWNrIG9uIHRoZWlyCisgKiBhY2NvdW50J3MgbG9naW4vcGFzc3dvcmQgdG8gdW5sb2NrIHRoZSBwaG9uZSAoYW5kIHJlc2V0IHRoZWlyIGxvY2sgcGF0dGVybikuCisgKi8KK3B1YmxpYyBjbGFzcyBBY2NvdW50VW5sb2NrU2NyZWVuIGV4dGVuZHMgUmVsYXRpdmVMYXlvdXQgaW1wbGVtZW50cyBLZXlndWFyZFNjcmVlbiwKKyAgICAgICAgS2V5Z3VhcmRVcGRhdGVNb25pdG9yLkluZm9DYWxsYmFjayxWaWV3Lk9uQ2xpY2tMaXN0ZW5lciwgVGV4dFdhdGNoZXIgeworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBMT0NLX1BBVFRFUk5fUEFDS0FHRSA9ICJjb20uYW5kcm9pZC5zZXR0aW5ncyI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIExPQ0tfUEFUVEVSTl9DTEFTUyA9CisgICAgICAgICAgICAiY29tLmFuZHJvaWQuc2V0dGluZ3MuQ2hvb3NlTG9ja1BhdHRlcm4iOworCisgICAgLyoqCisgICAgICogVGhlIGFtb3VudCBvZiBtaWxsaXMgdG8gc3RheSBhd2FrZSBvbmNlIHRoaXMgc2NyZWVuIGRldGVjdHMgYWN0aXZpdHkKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQVdBS0VfUE9LRV9NSUxMSVMgPSAzMDAwMDsKKworICAgIHByaXZhdGUgZmluYWwgS2V5Z3VhcmRTY3JlZW5DYWxsYmFjayBtQ2FsbGJhY2s7CisgICAgcHJpdmF0ZSBmaW5hbCBMb2NrUGF0dGVyblV0aWxzIG1Mb2NrUGF0dGVyblV0aWxzOworICAgIHByaXZhdGUgS2V5Z3VhcmRVcGRhdGVNb25pdG9yIG1VcGRhdGVNb25pdG9yOworCisgICAgcHJpdmF0ZSBUZXh0VmlldyBtVG9wSGVhZGVyOworICAgIHByaXZhdGUgVGV4dFZpZXcgbUluc3RydWN0aW9uczsKKyAgICBwcml2YXRlIEVkaXRUZXh0IG1Mb2dpbjsKKyAgICBwcml2YXRlIEVkaXRUZXh0IG1QYXNzd29yZDsKKyAgICBwcml2YXRlIEJ1dHRvbiBtT2s7CisgICAgcHJpdmF0ZSBCdXR0b24gbUVtZXJnZW5jeUNhbGw7CisKKyAgICAvKioKKyAgICAgKiBTaG93biB3aGlsZSBtYWtpbmcgYXN5bmNocm9ub3VzIGNoZWNrIG9mIHBhc3N3b3JkLgorICAgICAqLworICAgIHByaXZhdGUgUHJvZ3Jlc3NEaWFsb2cgbUNoZWNraW5nRGlhbG9nOworCisgICAgLyoqCisgICAgICogQWNjb3VudFVubG9ja1NjcmVlbiBjb25zdHJ1Y3Rvci4KKyAgICAgKiBAcGFyYW0gY29uZmlndXJhdGlvbgorICAgICAqIEBwYXJhbSB1cGRhdGVNb25pdG9yCisgICAgICovCisgICAgcHVibGljIEFjY291bnRVbmxvY2tTY3JlZW4oQ29udGV4dCBjb250ZXh0LENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgIEtleWd1YXJkVXBkYXRlTW9uaXRvciB1cGRhdGVNb25pdG9yLCBLZXlndWFyZFNjcmVlbkNhbGxiYWNrIGNhbGxiYWNrLAorICAgICAgICAgICAgTG9ja1BhdHRlcm5VdGlscyBsb2NrUGF0dGVyblV0aWxzKSB7CisgICAgICAgIHN1cGVyKGNvbnRleHQpOworICAgICAgICBtQ2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICAgICAgbUxvY2tQYXR0ZXJuVXRpbHMgPSBsb2NrUGF0dGVyblV0aWxzOworCisgICAgICAgIExheW91dEluZmxhdGVyLmZyb20oY29udGV4dCkuaW5mbGF0ZSgKKyAgICAgICAgICAgICAgICBSLmxheW91dC5rZXlndWFyZF9zY3JlZW5fZ2xvZ2luX3VubG9jaywgdGhpcywgdHJ1ZSk7CisKKyAgICAgICAgbVRvcEhlYWRlciA9IChUZXh0VmlldykgZmluZFZpZXdCeUlkKFIuaWQudG9wSGVhZGVyKTsKKyAgICAgICAgbVRvcEhlYWRlci5zZXRUZXh0KG1Mb2NrUGF0dGVyblV0aWxzLmlzUGVybWFuZW50bHlMb2NrZWQoKSA/CisgICAgICAgICAgICAgICAgUi5zdHJpbmcubG9ja3NjcmVlbl9nbG9naW5fdG9vX21hbnlfYXR0ZW1wdHMgOgorICAgICAgICAgICAgICAgIFIuc3RyaW5nLmxvY2tzY3JlZW5fZ2xvZ2luX2ZvcmdvdF9wYXR0ZXJuKTsKKworICAgICAgICBtSW5zdHJ1Y3Rpb25zID0gKFRleHRWaWV3KSBmaW5kVmlld0J5SWQoUi5pZC5pbnN0cnVjdGlvbnMpOworCisgICAgICAgIG1Mb2dpbiA9IChFZGl0VGV4dCkgZmluZFZpZXdCeUlkKFIuaWQubG9naW4pOworICAgICAgICBtTG9naW4uc2V0RmlsdGVycyhuZXcgSW5wdXRGaWx0ZXJbXSB7IG5ldyBMb2dpbkZpbHRlci5Vc2VybmFtZUZpbHRlckdlbmVyaWMoKSB9ICk7CisgICAgICAgIG1Mb2dpbi5hZGRUZXh0Q2hhbmdlZExpc3RlbmVyKHRoaXMpOworCisgICAgICAgIG1QYXNzd29yZCA9IChFZGl0VGV4dCkgZmluZFZpZXdCeUlkKFIuaWQucGFzc3dvcmQpOworICAgICAgICBtUGFzc3dvcmQuYWRkVGV4dENoYW5nZWRMaXN0ZW5lcih0aGlzKTsKKworICAgICAgICBtT2sgPSAoQnV0dG9uKSBmaW5kVmlld0J5SWQoUi5pZC5vayk7CisgICAgICAgIG1Pay5zZXRPbkNsaWNrTGlzdGVuZXIodGhpcyk7CisKKyAgICAgICAgbUVtZXJnZW5jeUNhbGwgPSAoQnV0dG9uKSBmaW5kVmlld0J5SWQoUi5pZC5lbWVyZ2VuY3lDYWxsKTsKKyAgICAgICAgbUVtZXJnZW5jeUNhbGwuc2V0T25DbGlja0xpc3RlbmVyKHRoaXMpOworICAgICAgICBtTG9ja1BhdHRlcm5VdGlscy51cGRhdGVFbWVyZ2VuY3lDYWxsQnV0dG9uU3RhdGUobUVtZXJnZW5jeUNhbGwpOworCisgICAgICAgIG1VcGRhdGVNb25pdG9yID0gdXBkYXRlTW9uaXRvcjsKKyAgICAgICAgbVVwZGF0ZU1vbml0b3IucmVnaXN0ZXJJbmZvQ2FsbGJhY2sodGhpcyk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgYWZ0ZXJUZXh0Q2hhbmdlZChFZGl0YWJsZSBzKSB7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgYmVmb3JlVGV4dENoYW5nZWQoQ2hhclNlcXVlbmNlIHMsIGludCBzdGFydCwgaW50IGNvdW50LCBpbnQgYWZ0ZXIpIHsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBvblRleHRDaGFuZ2VkKENoYXJTZXF1ZW5jZSBzLCBpbnQgc3RhcnQsIGludCBiZWZvcmUsIGludCBjb3VudCkgeworICAgICAgICBtQ2FsbGJhY2sucG9rZVdha2Vsb2NrKEFXQUtFX1BPS0VfTUlMTElTKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgYm9vbGVhbiBvblJlcXVlc3RGb2N1c0luRGVzY2VuZGFudHMoaW50IGRpcmVjdGlvbiwKKyAgICAgICAgICAgIFJlY3QgcHJldmlvdXNseUZvY3VzZWRSZWN0KSB7CisgICAgICAgIC8vIHNlbmQgZm9jdXMgdG8gdGhlIGxvZ2luIGZpZWxkCisgICAgICAgIHJldHVybiBtTG9naW4ucmVxdWVzdEZvY3VzKGRpcmVjdGlvbiwgcHJldmlvdXNseUZvY3VzZWRSZWN0KTsKKyAgICB9CisKKyAgICAvKioge0Bpbmhlcml0RG9jfSAqLworICAgIHB1YmxpYyBib29sZWFuIG5lZWRzSW5wdXQoKSB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIHZvaWQgb25QYXVzZSgpIHsKKworICAgIH0KKworICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIHZvaWQgb25SZXN1bWUoKSB7CisgICAgICAgIC8vIHN0YXJ0IGZyZXNoCisgICAgICAgIG1Mb2dpbi5zZXRUZXh0KCIiKTsKKyAgICAgICAgbVBhc3N3b3JkLnNldFRleHQoIiIpOworICAgICAgICBtTG9naW4ucmVxdWVzdEZvY3VzKCk7CisgICAgICAgIG1Mb2NrUGF0dGVyblV0aWxzLnVwZGF0ZUVtZXJnZW5jeUNhbGxCdXR0b25TdGF0ZShtRW1lcmdlbmN5Q2FsbCk7CisgICAgfQorCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgdm9pZCBjbGVhblVwKCkgeworICAgICAgICBpZiAobUNoZWNraW5nRGlhbG9nICE9IG51bGwpIHsKKyAgICAgICAgICAgIG1DaGVja2luZ0RpYWxvZy5oaWRlKCk7CisgICAgICAgIH0KKyAgICAgICAgbVVwZGF0ZU1vbml0b3IucmVtb3ZlQ2FsbGJhY2sodGhpcyk7CisgICAgfQorCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgdm9pZCBvbkNsaWNrKFZpZXcgdikgeworICAgICAgICBtQ2FsbGJhY2sucG9rZVdha2Vsb2NrKCk7CisgICAgICAgIGlmICh2ID09IG1PaykgeworICAgICAgICAgICAgYXN5bmNDaGVja1Bhc3N3b3JkKCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAodiA9PSBtRW1lcmdlbmN5Q2FsbCkgeworICAgICAgICAgICAgbUNhbGxiYWNrLnRha2VFbWVyZ2VuY3lDYWxsQWN0aW9uKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgcG9zdE9uQ2hlY2tQYXNzd29yZFJlc3VsdChmaW5hbCBib29sZWFuIHN1Y2Nlc3MpIHsKKyAgICAgICAgLy8gZW5zdXJlIHRoaXMgcnVucyBvbiBVSSB0aHJlYWQKKyAgICAgICAgbUxvZ2luLnBvc3QobmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgIGlmIChzdWNjZXNzKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIGNsZWFyIG91dCBmb3Jnb3R0ZW4gcGFzc3dvcmQKKyAgICAgICAgICAgICAgICAgICAgbUxvY2tQYXR0ZXJuVXRpbHMuc2V0UGVybWFuZW50bHlMb2NrZWQoZmFsc2UpOworICAgICAgICAgICAgICAgICAgICBtTG9ja1BhdHRlcm5VdGlscy5zZXRMb2NrUGF0dGVybkVuYWJsZWQoZmFsc2UpOworICAgICAgICAgICAgICAgICAgICBtTG9ja1BhdHRlcm5VdGlscy5zYXZlTG9ja1BhdHRlcm4obnVsbCk7CisKKyAgICAgICAgICAgICAgICAgICAgLy8gbGF1bmNoIHRoZSAnY2hvb3NlIGxvY2sgcGF0dGVybicgYWN0aXZpdHkgc28KKyAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHVzZXIgY2FuIHBpY2sgYSBuZXcgb25lIGlmIHRoZXkgd2FudCB0bworICAgICAgICAgICAgICAgICAgICBJbnRlbnQgaW50ZW50ID0gbmV3IEludGVudCgpOworICAgICAgICAgICAgICAgICAgICBpbnRlbnQuc2V0Q2xhc3NOYW1lKExPQ0tfUEFUVEVSTl9QQUNLQUdFLCBMT0NLX1BBVFRFUk5fQ0xBU1MpOworICAgICAgICAgICAgICAgICAgICBpbnRlbnQuc2V0RmxhZ3MoSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX1RBU0spOworICAgICAgICAgICAgICAgICAgICBtQ29udGV4dC5zdGFydEFjdGl2aXR5KGludGVudCk7CisgICAgICAgICAgICAgICAgICAgIG1DYWxsYmFjay5yZXBvcnRTdWNjZXNzZnVsVW5sb2NrQXR0ZW1wdCgpOworCisgICAgICAgICAgICAgICAgICAgIC8vIGNsb3NlIHRoZSBrZXlndWFyZAorICAgICAgICAgICAgICAgICAgICBtQ2FsbGJhY2sua2V5Z3VhcmREb25lKHRydWUpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIG1JbnN0cnVjdGlvbnMuc2V0VGV4dChSLnN0cmluZy5sb2Nrc2NyZWVuX2dsb2dpbl9pbnZhbGlkX2lucHV0KTsKKyAgICAgICAgICAgICAgICAgICAgbVBhc3N3b3JkLnNldFRleHQoIiIpOworICAgICAgICAgICAgICAgICAgICBtQ2FsbGJhY2sucmVwb3J0RmFpbGVkVW5sb2NrQXR0ZW1wdCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGJvb2xlYW4gZGlzcGF0Y2hLZXlFdmVudChLZXlFdmVudCBldmVudCkgeworICAgICAgICBpZiAoZXZlbnQuZ2V0QWN0aW9uKCkgPT0gS2V5RXZlbnQuQUNUSU9OX0RPV04KKyAgICAgICAgICAgICAgICAmJiBldmVudC5nZXRLZXlDb2RlKCkgPT0gS2V5RXZlbnQuS0VZQ09ERV9CQUNLKSB7CisgICAgICAgICAgICBpZiAobUxvY2tQYXR0ZXJuVXRpbHMuaXNQZXJtYW5lbnRseUxvY2tlZCgpKSB7CisgICAgICAgICAgICAgICAgbUNhbGxiYWNrLmdvVG9Mb2NrU2NyZWVuKCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1DYWxsYmFjay5mb3Jnb3RQYXR0ZXJuKGZhbHNlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBzdXBlci5kaXNwYXRjaEtleUV2ZW50KGV2ZW50KTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHaXZlbiB0aGUgc3RyaW5nIHRoZSB1c2VyIGVudGVyZWQgaW4gdGhlICd1c2VybmFtZScgZmllbGQsIGZpbmQKKyAgICAgKiB0aGUgc3RvcmVkIGFjY291bnQgdGhhdCB0aGV5IHByb2JhYmx5IGludGVuZGVkLiAgUHJlZmVyLCBpbiBvcmRlcjoKKyAgICAgKgorICAgICAqICAgLSBhbiBleGFjdCBtYXRjaCBmb3Igd2hhdCB3YXMgdHlwZWQsIG9yCisgICAgICogICAtIGEgY2FzZS1pbnNlbnNpdGl2ZSBtYXRjaCBmb3Igd2hhdCB3YXMgdHlwZWQsIG9yCisgICAgICogICAtIGlmIHRoZXkgZGlkbid0IGluY2x1ZGUgYSBkb21haW4sIGFuIGV4YWN0IG1hdGNoIG9mIHRoZSB1c2VybmFtZSwgb3IKKyAgICAgKiAgIC0gaWYgdGhleSBkaWRuJ3QgaW5jbHVkZSBhIGRvbWFpbiwgYSBjYXNlLWluc2Vuc2l0aXZlCisgICAgICogICAgIG1hdGNoIG9mIHRoZSB1c2VybmFtZS4KKyAgICAgKgorICAgICAqIElmIHRoZXJlIGlzIGEgdGllIGZvciB0aGUgYmVzdCBtYXRjaCwgY2hvb3NlIG5laXRoZXIgLS0KKyAgICAgKiB0aGUgdXNlciBuZWVkcyB0byBiZSBtb3JlIHNwZWNpZmljLgorICAgICAqCisgICAgICogQHJldHVybiBhbiBhY2NvdW50IG5hbWUgZnJvbSB0aGUgZGF0YWJhc2UsIG9yIG51bGwgaWYgd2UgY2FuJ3QKKyAgICAgKiBmaW5kIGEgc2luZ2xlIGJlc3QgbWF0Y2guCisgICAgICovCisgICAgcHJpdmF0ZSBBY2NvdW50IGZpbmRJbnRlbmRlZEFjY291bnQoU3RyaW5nIHVzZXJuYW1lKSB7CisgICAgICAgIEFjY291bnRbXSBhY2NvdW50cyA9IEFjY291bnRNYW5hZ2VyLmdldChtQ29udGV4dCkuZ2V0QWNjb3VudHNCeVR5cGUoImNvbS5nb29nbGUiKTsKKworICAgICAgICAvLyBUcnkgdG8gZmlndXJlIG91dCB3aGljaCBhY2NvdW50IHRoZXkgbWVhbnQgaWYgdGhleQorICAgICAgICAvLyB0eXBlZCBvbmx5IHRoZSB1c2VybmFtZSAoYW5kIG5vdCB0aGUgZG9tYWluKSwgb3IgZ290CisgICAgICAgIC8vIHRoZSBjYXNlIHdyb25nLgorCisgICAgICAgIEFjY291bnQgYmVzdEFjY291bnQgPSBudWxsOworICAgICAgICBpbnQgYmVzdFNjb3JlID0gMDsKKyAgICAgICAgZm9yIChBY2NvdW50IGE6IGFjY291bnRzKSB7CisgICAgICAgICAgICBpbnQgc2NvcmUgPSAwOworICAgICAgICAgICAgaWYgKHVzZXJuYW1lLmVxdWFscyhhLm5hbWUpKSB7CisgICAgICAgICAgICAgICAgc2NvcmUgPSA0OworICAgICAgICAgICAgfSBlbHNlIGlmICh1c2VybmFtZS5lcXVhbHNJZ25vcmVDYXNlKGEubmFtZSkpIHsKKyAgICAgICAgICAgICAgICBzY29yZSA9IDM7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHVzZXJuYW1lLmluZGV4T2YoJ0AnKSA8IDApIHsKKyAgICAgICAgICAgICAgICBpbnQgaSA9IGEubmFtZS5pbmRleE9mKCdAJyk7CisgICAgICAgICAgICAgICAgaWYgKGkgPj0gMCkgeworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgYVVzZXJuYW1lID0gYS5uYW1lLnN1YnN0cmluZygwLCBpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHVzZXJuYW1lLmVxdWFscyhhVXNlcm5hbWUpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzY29yZSA9IDI7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodXNlcm5hbWUuZXF1YWxzSWdub3JlQ2FzZShhVXNlcm5hbWUpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzY29yZSA9IDE7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoc2NvcmUgPiBiZXN0U2NvcmUpIHsKKyAgICAgICAgICAgICAgICBiZXN0QWNjb3VudCA9IGE7CisgICAgICAgICAgICAgICAgYmVzdFNjb3JlID0gc2NvcmU7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHNjb3JlID09IGJlc3RTY29yZSkgeworICAgICAgICAgICAgICAgIGJlc3RBY2NvdW50ID0gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYmVzdEFjY291bnQ7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGFzeW5jQ2hlY2tQYXNzd29yZCgpIHsKKyAgICAgICAgbUNhbGxiYWNrLnBva2VXYWtlbG9jayhBV0FLRV9QT0tFX01JTExJUyk7CisgICAgICAgIGZpbmFsIFN0cmluZyBsb2dpbiA9IG1Mb2dpbi5nZXRUZXh0KCkudG9TdHJpbmcoKTsKKyAgICAgICAgZmluYWwgU3RyaW5nIHBhc3N3b3JkID0gbVBhc3N3b3JkLmdldFRleHQoKS50b1N0cmluZygpOworICAgICAgICBBY2NvdW50IGFjY291bnQgPSBmaW5kSW50ZW5kZWRBY2NvdW50KGxvZ2luKTsKKyAgICAgICAgaWYgKGFjY291bnQgPT0gbnVsbCkgeworICAgICAgICAgICAgcG9zdE9uQ2hlY2tQYXNzd29yZFJlc3VsdChmYWxzZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZ2V0UHJvZ3Jlc3NEaWFsb2coKS5zaG93KCk7CisgICAgICAgIEJ1bmRsZSBvcHRpb25zID0gbmV3IEJ1bmRsZSgpOworICAgICAgICBvcHRpb25zLnB1dFN0cmluZyhBY2NvdW50TWFuYWdlci5LRVlfUEFTU1dPUkQsIHBhc3N3b3JkKTsKKyAgICAgICAgQWNjb3VudE1hbmFnZXIuZ2V0KG1Db250ZXh0KS5jb25maXJtQ3JlZGVudGlhbHMoYWNjb3VudCwgb3B0aW9ucywgbnVsbCAvKiBhY3Rpdml0eSAqLywKKyAgICAgICAgICAgICAgICBuZXcgQWNjb3VudE1hbmFnZXJDYWxsYmFjazxCdW5kbGU+KCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKEFjY291bnRNYW5hZ2VyRnV0dXJlPEJ1bmRsZT4gZnV0dXJlKSB7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgbUNhbGxiYWNrLnBva2VXYWtlbG9jayhBV0FLRV9QT0tFX01JTExJUyk7CisgICAgICAgICAgICAgICAgICAgIGZpbmFsIEJ1bmRsZSByZXN1bHQgPSBmdXR1cmUuZ2V0UmVzdWx0KCk7CisgICAgICAgICAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gdmVyaWZpZWQgPSByZXN1bHQuZ2V0Qm9vbGVhbihBY2NvdW50TWFuYWdlci5LRVlfQk9PTEVBTl9SRVNVTFQpOworICAgICAgICAgICAgICAgICAgICBwb3N0T25DaGVja1Bhc3N3b3JkUmVzdWx0KHZlcmlmaWVkKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChPcGVyYXRpb25DYW5jZWxlZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgIHBvc3RPbkNoZWNrUGFzc3dvcmRSZXN1bHQoZmFsc2UpOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgcG9zdE9uQ2hlY2tQYXNzd29yZFJlc3VsdChmYWxzZSk7CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoQXV0aGVudGljYXRvckV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgIHBvc3RPbkNoZWNrUGFzc3dvcmRSZXN1bHQoZmFsc2UpOworICAgICAgICAgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICAgICAgICAgIG1Mb2dpbi5wb3N0KG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRQcm9ncmVzc0RpYWxvZygpLmhpZGUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9LCBudWxsIC8qIGhhbmRsZXIgKi8pOworICAgIH0KKworICAgIHByaXZhdGUgRGlhbG9nIGdldFByb2dyZXNzRGlhbG9nKCkgeworICAgICAgICBpZiAobUNoZWNraW5nRGlhbG9nID09IG51bGwpIHsKKyAgICAgICAgICAgIG1DaGVja2luZ0RpYWxvZyA9IG5ldyBQcm9ncmVzc0RpYWxvZyhtQ29udGV4dCk7CisgICAgICAgICAgICBtQ2hlY2tpbmdEaWFsb2cuc2V0TWVzc2FnZSgKKyAgICAgICAgICAgICAgICAgICAgbUNvbnRleHQuZ2V0U3RyaW5nKFIuc3RyaW5nLmxvY2tzY3JlZW5fZ2xvZ2luX2NoZWNraW5nX3Bhc3N3b3JkKSk7CisgICAgICAgICAgICBtQ2hlY2tpbmdEaWFsb2cuc2V0SW5kZXRlcm1pbmF0ZSh0cnVlKTsKKyAgICAgICAgICAgIG1DaGVja2luZ0RpYWxvZy5zZXRDYW5jZWxhYmxlKGZhbHNlKTsKKyAgICAgICAgICAgIG1DaGVja2luZ0RpYWxvZy5nZXRXaW5kb3coKS5zZXRUeXBlKAorICAgICAgICAgICAgICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5UWVBFX0tFWUdVQVJEX0RJQUxPRyk7CisgICAgICAgICAgICBpZiAoIW1Db250ZXh0LmdldFJlc291cmNlcygpLmdldEJvb2xlYW4oCisgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuYm9vbC5jb25maWdfc2Zfc2xvd0JsdXIpKSB7CisgICAgICAgICAgICAgICAgbUNoZWNraW5nRGlhbG9nLmdldFdpbmRvdygpLnNldEZsYWdzKAorICAgICAgICAgICAgICAgICAgICAgICAgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19CTFVSX0JFSElORCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfQkxVUl9CRUhJTkQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBtQ2hlY2tpbmdEaWFsb2c7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgb25QaG9uZVN0YXRlQ2hhbmdlZChTdHJpbmcgbmV3U3RhdGUpIHsKKyAgICAgICAgbUxvY2tQYXR0ZXJuVXRpbHMudXBkYXRlRW1lcmdlbmN5Q2FsbEJ1dHRvblN0YXRlKG1FbWVyZ2VuY3lDYWxsKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBvblJlZnJlc2hCYXR0ZXJ5SW5mbyhib29sZWFuIHNob3dCYXR0ZXJ5SW5mbywgYm9vbGVhbiBwbHVnZ2VkSW4sIGludCBiYXR0ZXJ5TGV2ZWwpIHsKKworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG9uUmVmcmVzaENhcnJpZXJJbmZvKENoYXJTZXF1ZW5jZSBwbG1uLCBDaGFyU2VxdWVuY2Ugc3BuKSB7CisKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBvblJpbmdlck1vZGVDaGFuZ2VkKGludCBzdGF0ZSkgeworCisgICAgfQorCisgICAgcHVibGljIHZvaWQgb25UaW1lQ2hhbmdlZCgpIHsKKworICAgIH0KK30KZGlmZiAtLWdpdCBhL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvR2xvYmFsQWN0aW9ucy5qYXZhIGIvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9HbG9iYWxBY3Rpb25zLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWYwNmRjYwotLS0gL2Rldi9udWxsCisrKyBiL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvR2xvYmFsQWN0aW9ucy5qYXZhCkBAIC0wLDAgKzEsNTc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5pbnRlcm5hbC5wb2xpY3kuaW1wbDsKKworaW1wb3J0IGFuZHJvaWQuYXBwLkFjdGl2aXR5OworaW1wb3J0IGFuZHJvaWQuYXBwLkFsZXJ0RGlhbG9nOworaW1wb3J0IGFuZHJvaWQuYXBwLlN0YXR1c0Jhck1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkJyb2FkY2FzdFJlY2VpdmVyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2U7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50RmlsdGVyOworaW1wb3J0IGFuZHJvaWQubWVkaWEuQXVkaW9NYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQub3MuSGFuZGxlcjsKK2ltcG9ydCBhbmRyb2lkLm9zLk1lc3NhZ2U7CitpbXBvcnQgYW5kcm9pZC5vcy5TeXN0ZW1Qcm9wZXJ0aWVzOworaW1wb3J0IGFuZHJvaWQucHJvdmlkZXIuU2V0dGluZ3M7CitpbXBvcnQgYW5kcm9pZC50ZWxlcGhvbnkuUGhvbmVTdGF0ZUxpc3RlbmVyOworaW1wb3J0IGFuZHJvaWQudGVsZXBob255LlNlcnZpY2VTdGF0ZTsKK2ltcG9ydCBhbmRyb2lkLnRlbGVwaG9ueS5UZWxlcGhvbnlNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CitpbXBvcnQgYW5kcm9pZC52aWV3LkxheW91dEluZmxhdGVyOworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3R3JvdXA7CitpbXBvcnQgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuQmFzZUFkYXB0ZXI7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuSW1hZ2VWaWV3OworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LlRleHRWaWV3OworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLlI7CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuYXBwLlNodXRkb3duVGhyZWFkOworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5UZWxlcGhvbnlJbnRlbnRzOworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5UZWxlcGhvbnlQcm9wZXJ0aWVzOworaW1wb3J0IGNvbS5nb29nbGUuYW5kcm9pZC5jb2xsZWN0Lkxpc3RzOworCitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKKworLyoqCisgKiBIZWxwZXIgdG8gc2hvdyB0aGUgZ2xvYmFsIGFjdGlvbnMgZGlhbG9nLiAgRWFjaCBpdGVtIGlzIGFuIHtAbGluayBBY3Rpb259IHRoYXQKKyAqIG1heSBzaG93IGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSBrZXlndWFyZCBpcyBzaG93aW5nLCBhbmQgd2hldGhlciB0aGUgZGV2aWNlCisgKiBpcyBwcm92aXNpb25lZC4KKyAqLworY2xhc3MgR2xvYmFsQWN0aW9ucyBpbXBsZW1lbnRzIERpYWxvZ0ludGVyZmFjZS5PbkRpc21pc3NMaXN0ZW5lciwgRGlhbG9nSW50ZXJmYWNlLk9uQ2xpY2tMaXN0ZW5lciAgeworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9ICJHbG9iYWxBY3Rpb25zIjsKKworICAgIHByaXZhdGUgU3RhdHVzQmFyTWFuYWdlciBtU3RhdHVzQmFyOworCisgICAgcHJpdmF0ZSBmaW5hbCBDb250ZXh0IG1Db250ZXh0OworICAgIHByaXZhdGUgZmluYWwgQXVkaW9NYW5hZ2VyIG1BdWRpb01hbmFnZXI7CisKKyAgICBwcml2YXRlIEFycmF5TGlzdDxBY3Rpb24+IG1JdGVtczsKKyAgICBwcml2YXRlIEFsZXJ0RGlhbG9nIG1EaWFsb2c7CisKKyAgICBwcml2YXRlIFRvZ2dsZUFjdGlvbiBtU2lsZW50TW9kZVRvZ2dsZTsKKyAgICBwcml2YXRlIFRvZ2dsZUFjdGlvbiBtQWlycGxhbmVNb2RlT247CisKKyAgICBwcml2YXRlIE15QWRhcHRlciBtQWRhcHRlcjsKKworICAgIHByaXZhdGUgYm9vbGVhbiBtS2V5Z3VhcmRTaG93aW5nID0gZmFsc2U7CisgICAgcHJpdmF0ZSBib29sZWFuIG1EZXZpY2VQcm92aXNpb25lZCA9IGZhbHNlOworICAgIHByaXZhdGUgVG9nZ2xlQWN0aW9uLlN0YXRlIG1BaXJwbGFuZVN0YXRlID0gVG9nZ2xlQWN0aW9uLlN0YXRlLk9mZjsKKyAgICBwcml2YXRlIGJvb2xlYW4gbUlzV2FpdGluZ0ZvckVjbUV4aXQgPSBmYWxzZTsKKworICAgIC8qKgorICAgICAqIEBwYXJhbSBjb250ZXh0IGV2ZXJ5dGhpbmcgbmVlZHMgYSBjb250ZXh0IDooCisgICAgICovCisgICAgcHVibGljIEdsb2JhbEFjdGlvbnMoQ29udGV4dCBjb250ZXh0KSB7CisgICAgICAgIG1Db250ZXh0ID0gY29udGV4dDsKKyAgICAgICAgbUF1ZGlvTWFuYWdlciA9IChBdWRpb01hbmFnZXIpIG1Db250ZXh0LmdldFN5c3RlbVNlcnZpY2UoQ29udGV4dC5BVURJT19TRVJWSUNFKTsKKworICAgICAgICAvLyByZWNlaXZlIGJyb2FkY2FzdHMKKyAgICAgICAgSW50ZW50RmlsdGVyIGZpbHRlciA9IG5ldyBJbnRlbnRGaWx0ZXIoKTsKKyAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihJbnRlbnQuQUNUSU9OX0NMT1NFX1NZU1RFTV9ESUFMT0dTKTsKKyAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihJbnRlbnQuQUNUSU9OX1NDUkVFTl9PRkYpOworICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKFRlbGVwaG9ueUludGVudHMuQUNUSU9OX0VNRVJHRU5DWV9DQUxMQkFDS19NT0RFX0NIQU5HRUQpOworICAgICAgICBjb250ZXh0LnJlZ2lzdGVyUmVjZWl2ZXIobUJyb2FkY2FzdFJlY2VpdmVyLCBmaWx0ZXIpOworCisgICAgICAgIC8vIGdldCBub3RpZmllZCBvZiBwaG9uZSBzdGF0ZSBjaGFuZ2VzCisgICAgICAgIFRlbGVwaG9ueU1hbmFnZXIgdGVsZXBob255TWFuYWdlciA9CisgICAgICAgICAgICAgICAgKFRlbGVwaG9ueU1hbmFnZXIpIGNvbnRleHQuZ2V0U3lzdGVtU2VydmljZShDb250ZXh0LlRFTEVQSE9OWV9TRVJWSUNFKTsKKyAgICAgICAgdGVsZXBob255TWFuYWdlci5saXN0ZW4obVBob25lU3RhdGVMaXN0ZW5lciwgUGhvbmVTdGF0ZUxpc3RlbmVyLkxJU1RFTl9TRVJWSUNFX1NUQVRFKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTaG93IHRoZSBnbG9iYWwgYWN0aW9ucyBkaWFsb2cgKGNyZWF0aW5nIGlmIG5lY2Vzc2FyeSkKKyAgICAgKiBAcGFyYW0ga2V5Z3VhcmRTaG93aW5nIFRydWUgaWYga2V5Z3VhcmQgaXMgc2hvd2luZworICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNob3dEaWFsb2coYm9vbGVhbiBrZXlndWFyZFNob3dpbmcsIGJvb2xlYW4gaXNEZXZpY2VQcm92aXNpb25lZCkgeworICAgICAgICBtS2V5Z3VhcmRTaG93aW5nID0ga2V5Z3VhcmRTaG93aW5nOworICAgICAgICBtRGV2aWNlUHJvdmlzaW9uZWQgPSBpc0RldmljZVByb3Zpc2lvbmVkOworICAgICAgICBpZiAobURpYWxvZyA9PSBudWxsKSB7CisgICAgICAgICAgICBtU3RhdHVzQmFyID0gKFN0YXR1c0Jhck1hbmFnZXIpbUNvbnRleHQuZ2V0U3lzdGVtU2VydmljZShDb250ZXh0LlNUQVRVU19CQVJfU0VSVklDRSk7CisgICAgICAgICAgICBtRGlhbG9nID0gY3JlYXRlRGlhbG9nKCk7CisgICAgICAgIH0KKyAgICAgICAgcHJlcGFyZURpYWxvZygpOworCisgICAgICAgIG1TdGF0dXNCYXIuZGlzYWJsZShTdGF0dXNCYXJNYW5hZ2VyLkRJU0FCTEVfRVhQQU5EKTsKKyAgICAgICAgbURpYWxvZy5zaG93KCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ3JlYXRlIHRoZSBnbG9iYWwgYWN0aW9ucyBkaWFsb2cuCisgICAgICogQHJldHVybiBBIG5ldyBkaWFsb2cuCisgICAgICovCisgICAgcHJpdmF0ZSBBbGVydERpYWxvZyBjcmVhdGVEaWFsb2coKSB7CisgICAgICAgIG1TaWxlbnRNb2RlVG9nZ2xlID0gbmV3IFRvZ2dsZUFjdGlvbigKKyAgICAgICAgICAgICAgICBSLmRyYXdhYmxlLmljX2xvY2tfc2lsZW50X21vZGUsCisgICAgICAgICAgICAgICAgUi5kcmF3YWJsZS5pY19sb2NrX3NpbGVudF9tb2RlX29mZiwKKyAgICAgICAgICAgICAgICBSLnN0cmluZy5nbG9iYWxfYWN0aW9uX3RvZ2dsZV9zaWxlbnRfbW9kZSwKKyAgICAgICAgICAgICAgICBSLnN0cmluZy5nbG9iYWxfYWN0aW9uX3NpbGVudF9tb2RlX29uX3N0YXR1cywKKyAgICAgICAgICAgICAgICBSLnN0cmluZy5nbG9iYWxfYWN0aW9uX3NpbGVudF9tb2RlX29mZl9zdGF0dXMpIHsKKworICAgICAgICAgICAgdm9pZCB3aWxsQ3JlYXRlKCkgeworICAgICAgICAgICAgICAgIC8vIFhYWDogRklYTUU6IHN3aXRjaCB0byBpY19sb2NrX3ZpYnJhdGVfbW9kZSB3aGVuIGF2YWlsYWJsZQorICAgICAgICAgICAgICAgIG1FbmFibGVkSWNvblJlc0lkID0gKFNldHRpbmdzLlN5c3RlbS5nZXRJbnQobUNvbnRleHQuZ2V0Q29udGVudFJlc29sdmVyKCksCisgICAgICAgICAgICAgICAgICAgICAgICBTZXR0aW5ncy5TeXN0ZW0uVklCUkFURV9JTl9TSUxFTlQsIDEpID09IDEpCisgICAgICAgICAgICAgICAgICAgID8gUi5kcmF3YWJsZS5pY19sb2NrX3NpbGVudF9tb2RlX3ZpYnJhdGUKKyAgICAgICAgICAgICAgICAgICAgOiBSLmRyYXdhYmxlLmljX2xvY2tfc2lsZW50X21vZGU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZvaWQgb25Ub2dnbGUoYm9vbGVhbiBvbikgeworICAgICAgICAgICAgICAgIGlmIChvbikgeworICAgICAgICAgICAgICAgICAgICBtQXVkaW9NYW5hZ2VyLnNldFJpbmdlck1vZGUoKFNldHRpbmdzLlN5c3RlbS5nZXRJbnQobUNvbnRleHQuZ2V0Q29udGVudFJlc29sdmVyKCksCisgICAgICAgICAgICAgICAgICAgICAgICBTZXR0aW5ncy5TeXN0ZW0uVklCUkFURV9JTl9TSUxFTlQsIDEpID09IDEpCisgICAgICAgICAgICAgICAgICAgICAgICA/IEF1ZGlvTWFuYWdlci5SSU5HRVJfTU9ERV9WSUJSQVRFCisgICAgICAgICAgICAgICAgICAgICAgICA6IEF1ZGlvTWFuYWdlci5SSU5HRVJfTU9ERV9TSUxFTlQpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIG1BdWRpb01hbmFnZXIuc2V0UmluZ2VyTW9kZShBdWRpb01hbmFnZXIuUklOR0VSX01PREVfTk9STUFMKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyBib29sZWFuIHNob3dEdXJpbmdLZXlndWFyZCgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcHVibGljIGJvb2xlYW4gc2hvd0JlZm9yZVByb3Zpc2lvbmluZygpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgbUFpcnBsYW5lTW9kZU9uID0gbmV3IFRvZ2dsZUFjdGlvbigKKyAgICAgICAgICAgICAgICBSLmRyYXdhYmxlLmljX2xvY2tfYWlycGxhbmVfbW9kZSwKKyAgICAgICAgICAgICAgICBSLmRyYXdhYmxlLmljX2xvY2tfYWlycGxhbmVfbW9kZV9vZmYsCisgICAgICAgICAgICAgICAgUi5zdHJpbmcuZ2xvYmFsX2FjdGlvbnNfdG9nZ2xlX2FpcnBsYW5lX21vZGUsCisgICAgICAgICAgICAgICAgUi5zdHJpbmcuZ2xvYmFsX2FjdGlvbnNfYWlycGxhbmVfbW9kZV9vbl9zdGF0dXMsCisgICAgICAgICAgICAgICAgUi5zdHJpbmcuZ2xvYmFsX2FjdGlvbnNfYWlycGxhbmVfbW9kZV9vZmZfc3RhdHVzKSB7CisKKyAgICAgICAgICAgIHZvaWQgb25Ub2dnbGUoYm9vbGVhbiBvbikgeworICAgICAgICAgICAgICAgIGlmIChCb29sZWFuLnBhcnNlQm9vbGVhbigKKyAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbVByb3BlcnRpZXMuZ2V0KFRlbGVwaG9ueVByb3BlcnRpZXMuUFJPUEVSVFlfSU5FQ01fTU9ERSkpKSB7CisgICAgICAgICAgICAgICAgICAgIG1Jc1dhaXRpbmdGb3JFY21FeGl0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgLy8gTGF1bmNoIEVDTSBleGl0IGRpYWxvZworICAgICAgICAgICAgICAgICAgICBJbnRlbnQgZWNtRGlhbG9nSW50ZW50ID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgSW50ZW50KFRlbGVwaG9ueUludGVudHMuQUNUSU9OX1NIT1dfTk9USUNFX0VDTV9CTE9DS19PVEhFUlMsIG51bGwpOworICAgICAgICAgICAgICAgICAgICBlY21EaWFsb2dJbnRlbnQuYWRkRmxhZ3MoSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX1RBU0spOworICAgICAgICAgICAgICAgICAgICBtQ29udGV4dC5zdGFydEFjdGl2aXR5KGVjbURpYWxvZ0ludGVudCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlQWlycGxhbmVNb2RlU3lzdGVtU2V0dGluZyhvbik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgICAgIHByb3RlY3RlZCB2b2lkIGNoYW5nZVN0YXRlRnJvbVByZXNzKGJvb2xlYW4gYnV0dG9uT24pIHsKKyAgICAgICAgICAgICAgICAvLyBJbiBFQ00gbW9kZSBhaXJwbGFuZSBzdGF0ZSBjYW5ub3QgYmUgY2hhbmdlZAorICAgICAgICAgICAgICAgIGlmICghKEJvb2xlYW4ucGFyc2VCb29sZWFuKAorICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtUHJvcGVydGllcy5nZXQoVGVsZXBob255UHJvcGVydGllcy5QUk9QRVJUWV9JTkVDTV9NT0RFKSkpKSB7CisgICAgICAgICAgICAgICAgICAgIG1TdGF0ZSA9IGJ1dHRvbk9uID8gU3RhdGUuVHVybmluZ09uIDogU3RhdGUuVHVybmluZ09mZjsKKyAgICAgICAgICAgICAgICAgICAgbUFpcnBsYW5lU3RhdGUgPSBtU3RhdGU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwdWJsaWMgYm9vbGVhbiBzaG93RHVyaW5nS2V5Z3VhcmQoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyBib29sZWFuIHNob3dCZWZvcmVQcm92aXNpb25pbmcoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9OworCisgICAgICAgIG1JdGVtcyA9IExpc3RzLm5ld0FycmF5TGlzdCgKKyAgICAgICAgICAgICAgICAvLyBzaWxlbnQgbW9kZQorICAgICAgICAgICAgICAgIG1TaWxlbnRNb2RlVG9nZ2xlLAorICAgICAgICAgICAgICAgIC8vIG5leHQ6IGFpcnBsYW5lIG1vZGUKKyAgICAgICAgICAgICAgICBtQWlycGxhbmVNb2RlT24sCisgICAgICAgICAgICAgICAgLy8gbGFzdDogcG93ZXIgb2ZmCisgICAgICAgICAgICAgICAgbmV3IFNpbmdsZVByZXNzQWN0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5pY19sb2NrX3Bvd2VyX29mZiwKKyAgICAgICAgICAgICAgICAgICAgICAgIFIuc3RyaW5nLmdsb2JhbF9hY3Rpb25fcG93ZXJfb2ZmKSB7CisKKyAgICAgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgb25QcmVzcygpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNodXRkb3duIGJ5IG1ha2luZyBzdXJlIHJhZGlvIGFuZCBwb3dlciBhcmUgaGFuZGxlZCBhY2NvcmRpbmdseS4KKyAgICAgICAgICAgICAgICAgICAgICAgIFNodXRkb3duVGhyZWFkLnNodXRkb3duKG1Db250ZXh0LCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBib29sZWFuIHNob3dEdXJpbmdLZXlndWFyZCgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgcHVibGljIGJvb2xlYW4gc2hvd0JlZm9yZVByb3Zpc2lvbmluZygpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgbUFkYXB0ZXIgPSBuZXcgTXlBZGFwdGVyKCk7CisKKyAgICAgICAgZmluYWwgQWxlcnREaWFsb2cuQnVpbGRlciBhYiA9IG5ldyBBbGVydERpYWxvZy5CdWlsZGVyKG1Db250ZXh0KTsKKworICAgICAgICBhYi5zZXRBZGFwdGVyKG1BZGFwdGVyLCB0aGlzKQorICAgICAgICAgICAgICAgIC5zZXRJbnZlcnNlQmFja2dyb3VuZEZvcmNlZCh0cnVlKQorICAgICAgICAgICAgICAgIC5zZXRUaXRsZShSLnN0cmluZy5nbG9iYWxfYWN0aW9ucyk7CisKKyAgICAgICAgZmluYWwgQWxlcnREaWFsb2cgZGlhbG9nID0gYWIuY3JlYXRlKCk7CisgICAgICAgIGRpYWxvZy5nZXRXaW5kb3coKS5zZXRUeXBlKFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLlRZUEVfU1lTVEVNX0RJQUxPRyk7CisgICAgICAgIGlmICghbUNvbnRleHQuZ2V0UmVzb3VyY2VzKCkuZ2V0Qm9vbGVhbigKKyAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmJvb2wuY29uZmlnX3NmX3Nsb3dCbHVyKSkgeworICAgICAgICAgICAgZGlhbG9nLmdldFdpbmRvdygpLnNldEZsYWdzKFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfQkxVUl9CRUhJTkQsCisgICAgICAgICAgICAgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfQkxVUl9CRUhJTkQpOworICAgICAgICB9CisKKyAgICAgICAgZGlhbG9nLnNldE9uRGlzbWlzc0xpc3RlbmVyKHRoaXMpOworCisgICAgICAgIHJldHVybiBkaWFsb2c7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHByZXBhcmVEaWFsb2coKSB7CisgICAgICAgIGZpbmFsIGJvb2xlYW4gc2lsZW50TW9kZU9uID0KKyAgICAgICAgICAgICAgICBtQXVkaW9NYW5hZ2VyLmdldFJpbmdlck1vZGUoKSAhPSBBdWRpb01hbmFnZXIuUklOR0VSX01PREVfTk9STUFMOworICAgICAgICBtU2lsZW50TW9kZVRvZ2dsZS51cGRhdGVTdGF0ZSgKKyAgICAgICAgICAgICAgICBzaWxlbnRNb2RlT24gPyBUb2dnbGVBY3Rpb24uU3RhdGUuT24gOiBUb2dnbGVBY3Rpb24uU3RhdGUuT2ZmKTsKKyAgICAgICAgbUFpcnBsYW5lTW9kZU9uLnVwZGF0ZVN0YXRlKG1BaXJwbGFuZVN0YXRlKTsKKyAgICAgICAgbUFkYXB0ZXIubm90aWZ5RGF0YVNldENoYW5nZWQoKTsKKyAgICAgICAgaWYgKG1LZXlndWFyZFNob3dpbmcpIHsKKyAgICAgICAgICAgIG1EaWFsb2cuZ2V0V2luZG93KCkuc2V0VHlwZShXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5UWVBFX0tFWUdVQVJEX0RJQUxPRyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtRGlhbG9nLmdldFdpbmRvdygpLnNldFR5cGUoV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuVFlQRV9TWVNURU1fRElBTE9HKTsKKyAgICAgICAgfQorICAgIH0KKworCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgdm9pZCBvbkRpc21pc3MoRGlhbG9nSW50ZXJmYWNlIGRpYWxvZykgeworICAgICAgICBtU3RhdHVzQmFyLmRpc2FibGUoU3RhdHVzQmFyTWFuYWdlci5ESVNBQkxFX05PTkUpOworICAgIH0KKworICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIHZvaWQgb25DbGljayhEaWFsb2dJbnRlcmZhY2UgZGlhbG9nLCBpbnQgd2hpY2gpIHsKKyAgICAgICAgZGlhbG9nLmRpc21pc3MoKTsKKyAgICAgICAgbUFkYXB0ZXIuZ2V0SXRlbSh3aGljaCkub25QcmVzcygpOworICAgIH0KKworCisgICAgLyoqCisgICAgICogVGhlIGFkYXB0ZXIgdXNlZCBmb3IgdGhlIGxpc3Qgd2l0aGluIHRoZSBnbG9iYWwgYWN0aW9ucyBkaWFsb2csIHRha2luZworICAgICAqIGludG8gYWNjb3VudCB3aGV0aGVyIHRoZSBrZXlndWFyZCBpcyBzaG93aW5nIHZpYQorICAgICAqIHtAbGluayBHbG9iYWxBY3Rpb25zI21LZXlndWFyZFNob3dpbmd9IGFuZCB3aGV0aGVyIHRoZSBkZXZpY2UgaXMgcHJvdmlzaW9uZWQKKyAgICAgKiB2aWEge0BsaW5rIEdsb2JhbEFjdGlvbnMjbURldmljZVByb3Zpc2lvbmVkfS4KKyAgICAgKi8KKyAgICBwcml2YXRlIGNsYXNzIE15QWRhcHRlciBleHRlbmRzIEJhc2VBZGFwdGVyIHsKKworICAgICAgICBwdWJsaWMgaW50IGdldENvdW50KCkgeworICAgICAgICAgICAgaW50IGNvdW50ID0gMDsKKworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtSXRlbXMuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBBY3Rpb24gYWN0aW9uID0gbUl0ZW1zLmdldChpKTsKKworICAgICAgICAgICAgICAgIGlmIChtS2V5Z3VhcmRTaG93aW5nICYmICFhY3Rpb24uc2hvd0R1cmluZ0tleWd1YXJkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICghbURldmljZVByb3Zpc2lvbmVkICYmICFhY3Rpb24uc2hvd0JlZm9yZVByb3Zpc2lvbmluZygpKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjb3VudCsrOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGNvdW50OworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBib29sZWFuIGlzRW5hYmxlZChpbnQgcG9zaXRpb24pIHsKKyAgICAgICAgICAgIHJldHVybiBnZXRJdGVtKHBvc2l0aW9uKS5pc0VuYWJsZWQoKTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgYm9vbGVhbiBhcmVBbGxJdGVtc0VuYWJsZWQoKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgQWN0aW9uIGdldEl0ZW0oaW50IHBvc2l0aW9uKSB7CisKKyAgICAgICAgICAgIGludCBmaWx0ZXJlZFBvcyA9IDA7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1JdGVtcy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgICAgIGZpbmFsIEFjdGlvbiBhY3Rpb24gPSBtSXRlbXMuZ2V0KGkpOworICAgICAgICAgICAgICAgIGlmIChtS2V5Z3VhcmRTaG93aW5nICYmICFhY3Rpb24uc2hvd0R1cmluZ0tleWd1YXJkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICghbURldmljZVByb3Zpc2lvbmVkICYmICFhY3Rpb24uc2hvd0JlZm9yZVByb3Zpc2lvbmluZygpKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoZmlsdGVyZWRQb3MgPT0gcG9zaXRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGFjdGlvbjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZmlsdGVyZWRQb3MrKzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigicG9zaXRpb24gIiArIHBvc2l0aW9uICsgIiBvdXQgb2YgIgorICAgICAgICAgICAgICAgICAgICArICJyYW5nZSBvZiBzaG93YWJsZSBhY3Rpb25zLCBmaWx0ZXJlZCBjb3VudCA9ICIKKyAgICAgICAgICAgICAgICAgICAgKyAiPSAiICsgZ2V0Q291bnQoKSArICIsIGtleWd1YXJkc2hvd2luZz0iICsgbUtleWd1YXJkU2hvd2luZworICAgICAgICAgICAgICAgICAgICArICIsIHByb3Zpc2lvbmVkPSIgKyBtRGV2aWNlUHJvdmlzaW9uZWQpOworICAgICAgICB9CisKKworICAgICAgICBwdWJsaWMgbG9uZyBnZXRJdGVtSWQoaW50IHBvc2l0aW9uKSB7CisgICAgICAgICAgICByZXR1cm4gcG9zaXRpb247CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgVmlldyBnZXRWaWV3KGludCBwb3NpdGlvbiwgVmlldyBjb252ZXJ0VmlldywgVmlld0dyb3VwIHBhcmVudCkgeworICAgICAgICAgICAgQWN0aW9uIGFjdGlvbiA9IGdldEl0ZW0ocG9zaXRpb24pOworICAgICAgICAgICAgcmV0dXJuIGFjdGlvbi5jcmVhdGUobUNvbnRleHQsIGNvbnZlcnRWaWV3LCBwYXJlbnQsIExheW91dEluZmxhdGVyLmZyb20obUNvbnRleHQpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIG5vdGU6IHRoZSBzY2hlbWUgYmVsb3cgbWFkZSBtb3JlIHNlbnNlIHdoZW4gd2Ugd2VyZSBwbGFubmluZyBvbiBoYXZpbmcKKyAgICAvLyA4IGRpZmZlcmVudCB0aGluZ3MgaW4gdGhlIGdsb2JhbCBhY3Rpb25zIGRpYWxvZy4gIHNlZW1zIG92ZXJraWxsIHdpdGgKKyAgICAvLyBvbmx5IDMgaXRlbXMgbm93LCBidXQgbWF5IGFzIHdlbGwga2VlcCB0aGlzIGZsZXhpYmxlIGFwcHJvYWNoIHNvIGl0IHdpbGwKKyAgICAvLyBiZSBlYXN5IHNob3VsZCBzb21lb25lIGRlY2lkZSBhdCB0aGUgbGFzdCBtaW51dGUgdG8gaW5jbHVkZSBzb21ldGhpbmcKKyAgICAvLyBlbHNlLCBzdWNoIGFzICdlbmFibGUgd2lmaScsIG9yICdlbmFibGUgYmx1ZXRvb3RoJworCisgICAgLyoqCisgICAgICogV2hhdCBlYWNoIGl0ZW0gaW4gdGhlIGdsb2JhbCBhY3Rpb25zIGRpYWxvZyBtdXN0IGJlIGFibGUgdG8gc3VwcG9ydC4KKyAgICAgKi8KKyAgICBwcml2YXRlIGludGVyZmFjZSBBY3Rpb24geworICAgICAgICBWaWV3IGNyZWF0ZShDb250ZXh0IGNvbnRleHQsIFZpZXcgY29udmVydFZpZXcsIFZpZXdHcm91cCBwYXJlbnQsIExheW91dEluZmxhdGVyIGluZmxhdGVyKTsKKworICAgICAgICB2b2lkIG9uUHJlc3MoKTsKKworICAgICAgICAvKioKKyAgICAgICAgICogQHJldHVybiB3aGV0aGVyIHRoaXMgYWN0aW9uIHNob3VsZCBhcHBlYXIgaW4gdGhlIGRpYWxvZyB3aGVuIHRoZSBrZXlnYXVyZAorICAgICAgICAgKiAgICBpcyBzaG93aW5nLgorICAgICAgICAgKi8KKyAgICAgICAgYm9vbGVhbiBzaG93RHVyaW5nS2V5Z3VhcmQoKTsKKworICAgICAgICAvKioKKyAgICAgICAgICogQHJldHVybiB3aGV0aGVyIHRoaXMgYWN0aW9uIHNob3VsZCBhcHBlYXIgaW4gdGhlIGRpYWxvZyBiZWZvcmUgdGhlCisgICAgICAgICAqICAgZGV2aWNlIGlzIHByb3Zpc2lvbmVkLgorICAgICAgICAgKi8KKyAgICAgICAgYm9vbGVhbiBzaG93QmVmb3JlUHJvdmlzaW9uaW5nKCk7CisKKyAgICAgICAgYm9vbGVhbiBpc0VuYWJsZWQoKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBIHNpbmdsZSBwcmVzcyBhY3Rpb24gbWFpbnRhaW5zIG5vIHN0YXRlLCBqdXN0IHJlc3BvbmRzIHRvIGEgcHJlc3MKKyAgICAgKiBhbmQgdGFrZXMgYW4gYWN0aW9uLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGFic3RyYWN0IGNsYXNzIFNpbmdsZVByZXNzQWN0aW9uIGltcGxlbWVudHMgQWN0aW9uIHsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBpbnQgbUljb25SZXNJZDsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBpbnQgbU1lc3NhZ2VSZXNJZDsKKworICAgICAgICBwcm90ZWN0ZWQgU2luZ2xlUHJlc3NBY3Rpb24oaW50IGljb25SZXNJZCwgaW50IG1lc3NhZ2VSZXNJZCkgeworICAgICAgICAgICAgbUljb25SZXNJZCA9IGljb25SZXNJZDsKKyAgICAgICAgICAgIG1NZXNzYWdlUmVzSWQgPSBtZXNzYWdlUmVzSWQ7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgYm9vbGVhbiBpc0VuYWJsZWQoKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGFic3RyYWN0IHB1YmxpYyB2b2lkIG9uUHJlc3MoKTsKKworICAgICAgICBwdWJsaWMgVmlldyBjcmVhdGUoCisgICAgICAgICAgICAgICAgQ29udGV4dCBjb250ZXh0LCBWaWV3IGNvbnZlcnRWaWV3LCBWaWV3R3JvdXAgcGFyZW50LCBMYXlvdXRJbmZsYXRlciBpbmZsYXRlcikgeworICAgICAgICAgICAgVmlldyB2ID0gKGNvbnZlcnRWaWV3ICE9IG51bGwpID8KKyAgICAgICAgICAgICAgICAgICAgY29udmVydFZpZXcgOgorICAgICAgICAgICAgICAgICAgICBpbmZsYXRlci5pbmZsYXRlKFIubGF5b3V0Lmdsb2JhbF9hY3Rpb25zX2l0ZW0sIHBhcmVudCwgZmFsc2UpOworCisgICAgICAgICAgICBJbWFnZVZpZXcgaWNvbiA9IChJbWFnZVZpZXcpIHYuZmluZFZpZXdCeUlkKFIuaWQuaWNvbik7CisgICAgICAgICAgICBUZXh0VmlldyBtZXNzYWdlVmlldyA9IChUZXh0Vmlldykgdi5maW5kVmlld0J5SWQoUi5pZC5tZXNzYWdlKTsKKworICAgICAgICAgICAgdi5maW5kVmlld0J5SWQoUi5pZC5zdGF0dXMpLnNldFZpc2liaWxpdHkoVmlldy5HT05FKTsKKworICAgICAgICAgICAgaWNvbi5zZXRJbWFnZURyYXdhYmxlKGNvbnRleHQuZ2V0UmVzb3VyY2VzKCkuZ2V0RHJhd2FibGUobUljb25SZXNJZCkpOworICAgICAgICAgICAgbWVzc2FnZVZpZXcuc2V0VGV4dChtTWVzc2FnZVJlc0lkKTsKKworICAgICAgICAgICAgcmV0dXJuIHY7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBIHRvZ2dsZSBhY3Rpb24ga25vd3Mgd2hldGhlciBpdCBpcyBvbiBvciBvZmYsIGFuZCBkaXNwbGF5cyBhbiBpY29uCisgICAgICogYW5kIHN0YXR1cyBtZXNzYWdlIGFjY29yZGluZ2x5LgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGFic3RyYWN0IGNsYXNzIFRvZ2dsZUFjdGlvbiBpbXBsZW1lbnRzIEFjdGlvbiB7CisKKyAgICAgICAgZW51bSBTdGF0ZSB7CisgICAgICAgICAgICBPZmYoZmFsc2UpLAorICAgICAgICAgICAgVHVybmluZ09uKHRydWUpLAorICAgICAgICAgICAgVHVybmluZ09mZih0cnVlKSwKKyAgICAgICAgICAgIE9uKGZhbHNlKTsKKworICAgICAgICAgICAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIGluVHJhbnNpdGlvbjsKKworICAgICAgICAgICAgU3RhdGUoYm9vbGVhbiBpbnRlcm1lZGlhdGUpIHsKKyAgICAgICAgICAgICAgICBpblRyYW5zaXRpb24gPSBpbnRlcm1lZGlhdGU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyBib29sZWFuIGluVHJhbnNpdGlvbigpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gaW5UcmFuc2l0aW9uOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcHJvdGVjdGVkIFN0YXRlIG1TdGF0ZSA9IFN0YXRlLk9mZjsKKworICAgICAgICAvLyBwcmVmcworICAgICAgICBwcm90ZWN0ZWQgaW50IG1FbmFibGVkSWNvblJlc0lkOworICAgICAgICBwcm90ZWN0ZWQgaW50IG1EaXNhYmxlZEljb25SZXNpZDsKKyAgICAgICAgcHJvdGVjdGVkIGludCBtTWVzc2FnZVJlc0lkOworICAgICAgICBwcm90ZWN0ZWQgaW50IG1FbmFibGVkU3RhdHVzTWVzc2FnZVJlc0lkOworICAgICAgICBwcm90ZWN0ZWQgaW50IG1EaXNhYmxlZFN0YXR1c01lc3NhZ2VSZXNJZDsKKworICAgICAgICAvKioKKyAgICAgICAgICogQHBhcmFtIGVuYWJsZWRJY29uUmVzSWQgVGhlIGljb24gZm9yIHdoZW4gdGhpcyBhY3Rpb24gaXMgb24uCisgICAgICAgICAqIEBwYXJhbSBkaXNhYmxlZEljb25SZXNpZCBUaGUgaWNvbiBmb3Igd2hlbiB0aGlzIGFjdGlvbiBpcyBvZmYuCisgICAgICAgICAqIEBwYXJhbSBlc3NhZ2UgVGhlIGdlbmVyYWwgaW5mb3JtYXRpb24gbWVzc2FnZSwgZS5nICdTaWxlbnQgTW9kZScKKyAgICAgICAgICogQHBhcmFtIGVuYWJsZWRTdGF0dXNNZXNzYWdlUmVzSWQgVGhlIG9uIHN0YXR1cyBtZXNzYWdlLCBlLmcgJ3NvdW5kIGRpc2FibGVkJworICAgICAgICAgKiBAcGFyYW0gZGlzYWJsZWRTdGF0dXNNZXNzYWdlUmVzSWQgVGhlIG9mZiBzdGF0dXMgbWVzc2FnZSwgZS5nLiAnc291bmQgZW5hYmxlZCcKKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBUb2dnbGVBY3Rpb24oaW50IGVuYWJsZWRJY29uUmVzSWQsCisgICAgICAgICAgICAgICAgaW50IGRpc2FibGVkSWNvblJlc2lkLAorICAgICAgICAgICAgICAgIGludCBlc3NhZ2UsCisgICAgICAgICAgICAgICAgaW50IGVuYWJsZWRTdGF0dXNNZXNzYWdlUmVzSWQsCisgICAgICAgICAgICAgICAgaW50IGRpc2FibGVkU3RhdHVzTWVzc2FnZVJlc0lkKSB7CisgICAgICAgICAgICBtRW5hYmxlZEljb25SZXNJZCA9IGVuYWJsZWRJY29uUmVzSWQ7CisgICAgICAgICAgICBtRGlzYWJsZWRJY29uUmVzaWQgPSBkaXNhYmxlZEljb25SZXNpZDsKKyAgICAgICAgICAgIG1NZXNzYWdlUmVzSWQgPSBlc3NhZ2U7CisgICAgICAgICAgICBtRW5hYmxlZFN0YXR1c01lc3NhZ2VSZXNJZCA9IGVuYWJsZWRTdGF0dXNNZXNzYWdlUmVzSWQ7CisgICAgICAgICAgICBtRGlzYWJsZWRTdGF0dXNNZXNzYWdlUmVzSWQgPSBkaXNhYmxlZFN0YXR1c01lc3NhZ2VSZXNJZDsKKyAgICAgICAgfQorCisgICAgICAgIC8qKgorICAgICAgICAgKiBPdmVycmlkZSB0byBtYWtlIGNoYW5nZXMgdG8gcmVzb3VyY2UgSURzIGp1c3QgYmVmb3JlIGNyZWF0aW5nIHRoZQorICAgICAgICAgKiBWaWV3LgorICAgICAgICAgKi8KKyAgICAgICAgdm9pZCB3aWxsQ3JlYXRlKCkgeworCisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgVmlldyBjcmVhdGUoQ29udGV4dCBjb250ZXh0LCBWaWV3IGNvbnZlcnRWaWV3LCBWaWV3R3JvdXAgcGFyZW50LAorICAgICAgICAgICAgICAgIExheW91dEluZmxhdGVyIGluZmxhdGVyKSB7CisgICAgICAgICAgICB3aWxsQ3JlYXRlKCk7CisKKyAgICAgICAgICAgIFZpZXcgdiA9IChjb252ZXJ0VmlldyAhPSBudWxsKSA/CisgICAgICAgICAgICAgICAgICAgIGNvbnZlcnRWaWV3IDoKKyAgICAgICAgICAgICAgICAgICAgaW5mbGF0ZXIuaW5mbGF0ZShSCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmxheW91dC5nbG9iYWxfYWN0aW9uc19pdGVtLCBwYXJlbnQsIGZhbHNlKTsKKworICAgICAgICAgICAgSW1hZ2VWaWV3IGljb24gPSAoSW1hZ2VWaWV3KSB2LmZpbmRWaWV3QnlJZChSLmlkLmljb24pOworICAgICAgICAgICAgVGV4dFZpZXcgbWVzc2FnZVZpZXcgPSAoVGV4dFZpZXcpIHYuZmluZFZpZXdCeUlkKFIuaWQubWVzc2FnZSk7CisgICAgICAgICAgICBUZXh0VmlldyBzdGF0dXNWaWV3ID0gKFRleHRWaWV3KSB2LmZpbmRWaWV3QnlJZChSLmlkLnN0YXR1cyk7CisKKyAgICAgICAgICAgIG1lc3NhZ2VWaWV3LnNldFRleHQobU1lc3NhZ2VSZXNJZCk7CisKKyAgICAgICAgICAgIGJvb2xlYW4gb24gPSAoKG1TdGF0ZSA9PSBTdGF0ZS5PbikgfHwgKG1TdGF0ZSA9PSBTdGF0ZS5UdXJuaW5nT24pKTsKKyAgICAgICAgICAgIGljb24uc2V0SW1hZ2VEcmF3YWJsZShjb250ZXh0LmdldFJlc291cmNlcygpLmdldERyYXdhYmxlKAorICAgICAgICAgICAgICAgICAgICAob24gPyBtRW5hYmxlZEljb25SZXNJZCA6IG1EaXNhYmxlZEljb25SZXNpZCkpKTsKKyAgICAgICAgICAgIHN0YXR1c1ZpZXcuc2V0VGV4dChvbiA/IG1FbmFibGVkU3RhdHVzTWVzc2FnZVJlc0lkIDogbURpc2FibGVkU3RhdHVzTWVzc2FnZVJlc0lkKTsKKyAgICAgICAgICAgIHN0YXR1c1ZpZXcuc2V0VmlzaWJpbGl0eShWaWV3LlZJU0lCTEUpOworCisgICAgICAgICAgICBmaW5hbCBib29sZWFuIGVuYWJsZWQgPSBpc0VuYWJsZWQoKTsKKyAgICAgICAgICAgIG1lc3NhZ2VWaWV3LnNldEVuYWJsZWQoZW5hYmxlZCk7CisgICAgICAgICAgICBzdGF0dXNWaWV3LnNldEVuYWJsZWQoZW5hYmxlZCk7CisgICAgICAgICAgICBpY29uLnNldEVuYWJsZWQoZW5hYmxlZCk7CisgICAgICAgICAgICB2LnNldEVuYWJsZWQoZW5hYmxlZCk7CisKKyAgICAgICAgICAgIHJldHVybiB2OworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGZpbmFsIHZvaWQgb25QcmVzcygpIHsKKyAgICAgICAgICAgIGlmIChtU3RhdGUuaW5UcmFuc2l0aW9uKCkpIHsKKyAgICAgICAgICAgICAgICBMb2cudyhUQUcsICJzaG91bGRuJ3QgYmUgYWJsZSB0byB0b2dnbGUgd2hlbiBpbiB0cmFuc2l0aW9uIik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmaW5hbCBib29sZWFuIG5vd09uID0gIShtU3RhdGUgPT0gU3RhdGUuT24pOworICAgICAgICAgICAgb25Ub2dnbGUobm93T24pOworICAgICAgICAgICAgY2hhbmdlU3RhdGVGcm9tUHJlc3Mobm93T24pOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGJvb2xlYW4gaXNFbmFibGVkKCkgeworICAgICAgICAgICAgcmV0dXJuICFtU3RhdGUuaW5UcmFuc2l0aW9uKCk7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogSW1wbGVtZW50YXRpb25zIG1heSBvdmVycmlkZSB0aGlzIGlmIHRoZWlyIHN0YXRlIGNhbiBiZSBpbiBvbiBvZiB0aGUgaW50ZXJtZWRpYXRlCisgICAgICAgICAqIHN0YXRlcyB1bnRpbCBzb21lIG5vdGlmaWNhdGlvbiBpcyByZWNlaXZlZCAoZS5nIGFpcnBsYW5lIG1vZGUgaXMgJ3R1cm5pbmcgb2ZmJyB1bnRpbAorICAgICAgICAgKiB3ZSBrbm93IHRoZSB3aXJlbGVzcyBjb25uZWN0aW9ucyBhcmUgYmFjayBvbmxpbmUKKyAgICAgICAgICogQHBhcmFtIGJ1dHRvbk9uIFdoZXRoZXIgdGhlIGJ1dHRvbiB3YXMgdHVybmVkIG9uIG9yIG9mZgorICAgICAgICAgKi8KKyAgICAgICAgcHJvdGVjdGVkIHZvaWQgY2hhbmdlU3RhdGVGcm9tUHJlc3MoYm9vbGVhbiBidXR0b25PbikgeworICAgICAgICAgICAgbVN0YXRlID0gYnV0dG9uT24gPyBTdGF0ZS5PbiA6IFN0YXRlLk9mZjsKKyAgICAgICAgfQorCisgICAgICAgIGFic3RyYWN0IHZvaWQgb25Ub2dnbGUoYm9vbGVhbiBvbik7CisKKyAgICAgICAgcHVibGljIHZvaWQgdXBkYXRlU3RhdGUoU3RhdGUgc3RhdGUpIHsKKyAgICAgICAgICAgIG1TdGF0ZSA9IHN0YXRlOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBCcm9hZGNhc3RSZWNlaXZlciBtQnJvYWRjYXN0UmVjZWl2ZXIgPSBuZXcgQnJvYWRjYXN0UmVjZWl2ZXIoKSB7CisgICAgICAgIHB1YmxpYyB2b2lkIG9uUmVjZWl2ZShDb250ZXh0IGNvbnRleHQsIEludGVudCBpbnRlbnQpIHsKKyAgICAgICAgICAgIFN0cmluZyBhY3Rpb24gPSBpbnRlbnQuZ2V0QWN0aW9uKCk7CisgICAgICAgICAgICBpZiAoSW50ZW50LkFDVElPTl9DTE9TRV9TWVNURU1fRElBTE9HUy5lcXVhbHMoYWN0aW9uKQorICAgICAgICAgICAgICAgICAgICB8fCBJbnRlbnQuQUNUSU9OX1NDUkVFTl9PRkYuZXF1YWxzKGFjdGlvbikpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgcmVhc29uID0gaW50ZW50LmdldFN0cmluZ0V4dHJhKFBob25lV2luZG93TWFuYWdlci5TWVNURU1fRElBTE9HX1JFQVNPTl9LRVkpOworICAgICAgICAgICAgICAgIGlmICghUGhvbmVXaW5kb3dNYW5hZ2VyLlNZU1RFTV9ESUFMT0dfUkVBU09OX0dMT0JBTF9BQ1RJT05TLmVxdWFscyhyZWFzb24pKSB7CisgICAgICAgICAgICAgICAgICAgIG1IYW5kbGVyLnNlbmRFbXB0eU1lc3NhZ2UoTUVTU0FHRV9ESVNNSVNTKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKFRlbGVwaG9ueUludGVudHMuQUNUSU9OX0VNRVJHRU5DWV9DQUxMQkFDS19NT0RFX0NIQU5HRUQuZXF1YWxzKGFjdGlvbikpIHsKKyAgICAgICAgICAgICAgICAvLyBBaXJwbGFuZSBtb2RlIGNhbiBiZSBjaGFuZ2VkIGFmdGVyIEVDTSBleGl0cyBpZiBhaXJwbGFuZSB0b2dnbGUgYnV0dG9uCisgICAgICAgICAgICAgICAgLy8gaXMgcHJlc3NlZCBkdXJpbmcgRUNNIG1vZGUKKyAgICAgICAgICAgICAgICBpZiAoIShpbnRlbnQuZ2V0Qm9vbGVhbkV4dHJhKCJQSE9ORV9JTl9FQ01fU1RBVEUiLCBmYWxzZSkpICYmCisgICAgICAgICAgICAgICAgICAgICAgICBtSXNXYWl0aW5nRm9yRWNtRXhpdCkgeworICAgICAgICAgICAgICAgICAgICBtSXNXYWl0aW5nRm9yRWNtRXhpdCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBjaGFuZ2VBaXJwbGFuZU1vZGVTeXN0ZW1TZXR0aW5nKHRydWUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH07CisKKyAgICBQaG9uZVN0YXRlTGlzdGVuZXIgbVBob25lU3RhdGVMaXN0ZW5lciA9IG5ldyBQaG9uZVN0YXRlTGlzdGVuZXIoKSB7CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBvblNlcnZpY2VTdGF0ZUNoYW5nZWQoU2VydmljZVN0YXRlIHNlcnZpY2VTdGF0ZSkgeworICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBpbkFpcnBsYW5lTW9kZSA9IHNlcnZpY2VTdGF0ZS5nZXRTdGF0ZSgpID09IFNlcnZpY2VTdGF0ZS5TVEFURV9QT1dFUl9PRkY7CisgICAgICAgICAgICBtQWlycGxhbmVTdGF0ZSA9IGluQWlycGxhbmVNb2RlID8gVG9nZ2xlQWN0aW9uLlN0YXRlLk9uIDogVG9nZ2xlQWN0aW9uLlN0YXRlLk9mZjsKKyAgICAgICAgICAgIG1BaXJwbGFuZU1vZGVPbi51cGRhdGVTdGF0ZShtQWlycGxhbmVTdGF0ZSk7CisgICAgICAgICAgICBtQWRhcHRlci5ub3RpZnlEYXRhU2V0Q2hhbmdlZCgpOworICAgICAgICB9CisgICAgfTsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNRVNTQUdFX0RJU01JU1MgPSAwOworICAgIHByaXZhdGUgSGFuZGxlciBtSGFuZGxlciA9IG5ldyBIYW5kbGVyKCkgeworICAgICAgICBwdWJsaWMgdm9pZCBoYW5kbGVNZXNzYWdlKE1lc3NhZ2UgbXNnKSB7CisgICAgICAgICAgICBpZiAobXNnLndoYXQgPT0gTUVTU0FHRV9ESVNNSVNTKSB7CisgICAgICAgICAgICAgICAgaWYgKG1EaWFsb2cgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBtRGlhbG9nLmRpc21pc3MoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworCisgICAgLyoqCisgICAgICogQ2hhbmdlIHRoZSBhaXJwbGFuZSBtb2RlIHN5c3RlbSBzZXR0aW5nCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIGNoYW5nZUFpcnBsYW5lTW9kZVN5c3RlbVNldHRpbmcoYm9vbGVhbiBvbikgeworICAgICAgICBTZXR0aW5ncy5TeXN0ZW0ucHV0SW50KAorICAgICAgICAgICAgICAgIG1Db250ZXh0LmdldENvbnRlbnRSZXNvbHZlcigpLAorICAgICAgICAgICAgICAgIFNldHRpbmdzLlN5c3RlbS5BSVJQTEFORV9NT0RFX09OLAorICAgICAgICAgICAgICAgIG9uID8gMSA6IDApOworICAgICAgICBJbnRlbnQgaW50ZW50ID0gbmV3IEludGVudChJbnRlbnQuQUNUSU9OX0FJUlBMQU5FX01PREVfQ0hBTkdFRCk7CisgICAgICAgIGludGVudC5hZGRGbGFncyhJbnRlbnQuRkxBR19SRUNFSVZFUl9SRVBMQUNFX1BFTkRJTkcpOworICAgICAgICBpbnRlbnQucHV0RXh0cmEoInN0YXRlIiwgb24pOworICAgICAgICBtQ29udGV4dC5zZW5kQnJvYWRjYXN0KGludGVudCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9JY29uVXRpbGl0aWVzLmphdmEgYi9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL0ljb25VdGlsaXRpZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTA1NWNmCi0tLSAvZGV2L251bGwKKysrIGIvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9JY29uVXRpbGl0aWVzLmphdmEKQEAgLTAsMCArMSwxOTIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLmludGVybmFsLnBvbGljeS5pbXBsOworCitpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5CaXRtYXBEcmF3YWJsZTsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlOworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuUGFpbnREcmF3YWJsZTsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLlN0YXRlTGlzdERyYXdhYmxlOworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwOworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuQmx1ck1hc2tGaWx0ZXI7CitpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5DYW52YXM7CitpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5Db2xvck1hdHJpeDsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLkNvbG9yTWF0cml4Q29sb3JGaWx0ZXI7CitpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5QYWludDsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLlBhaW50RmxhZ3NEcmF3RmlsdGVyOworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuUGl4ZWxGb3JtYXQ7CitpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5Qb3J0ZXJEdWZmOworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuUmVjdDsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLlJlY3RGOworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuVGFibGVNYXNrRmlsdGVyOworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuVHlwZWZhY2U7CitpbXBvcnQgYW5kcm9pZC50ZXh0LkxheW91dC5BbGlnbm1lbnQ7CitpbXBvcnQgYW5kcm9pZC50ZXh0LlN0YXRpY0xheW91dDsKK2ltcG9ydCBhbmRyb2lkLnRleHQuVGV4dFBhaW50OworaW1wb3J0IGFuZHJvaWQudXRpbC5EaXNwbGF5TWV0cmljczsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworCisvKioKKyAqIFZhcmlvdXMgdXRpbGl0aWVzIHNoYXJlZCBhbW9uZ3N0IHRoZSBMYXVuY2hlcidzIGNsYXNzZXMuCisgKi8KK2ZpbmFsIGNsYXNzIEljb25VdGlsaXRpZXMgeworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSAiSWNvblV0aWxpdGllcyI7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgc0NvbG9yc1tdID0geyAweGZmZmYwMDAwLCAweGZmMDBmZjAwLCAweGZmMDAwMGZmIH07CisKKyAgICBwcml2YXRlIGludCBtSWNvbldpZHRoID0gLTE7CisgICAgcHJpdmF0ZSBpbnQgbUljb25IZWlnaHQgPSAtMTsKKyAgICBwcml2YXRlIGludCBtSWNvblRleHR1cmVXaWR0aCA9IC0xOworICAgIHByaXZhdGUgaW50IG1JY29uVGV4dHVyZUhlaWdodCA9IC0xOworCisgICAgcHJpdmF0ZSBmaW5hbCBQYWludCBtUGFpbnQgPSBuZXcgUGFpbnQoKTsKKyAgICBwcml2YXRlIGZpbmFsIFBhaW50IG1CbHVyUGFpbnQgPSBuZXcgUGFpbnQoKTsKKyAgICBwcml2YXRlIGZpbmFsIFBhaW50IG1HbG93Q29sb3JQcmVzc2VkUGFpbnQgPSBuZXcgUGFpbnQoKTsKKyAgICBwcml2YXRlIGZpbmFsIFBhaW50IG1HbG93Q29sb3JGb2N1c2VkUGFpbnQgPSBuZXcgUGFpbnQoKTsKKyAgICBwcml2YXRlIGZpbmFsIFJlY3QgbU9sZEJvdW5kcyA9IG5ldyBSZWN0KCk7CisgICAgcHJpdmF0ZSBmaW5hbCBDYW52YXMgbUNhbnZhcyA9IG5ldyBDYW52YXMoKTsKKyAgICBwcml2YXRlIGZpbmFsIERpc3BsYXlNZXRyaWNzIG1EaXNwbGF5TWV0cmljczsKKworICAgIHByaXZhdGUgaW50IG1Db2xvckluZGV4ID0gMDsKKworICAgIHB1YmxpYyBJY29uVXRpbGl0aWVzKENvbnRleHQgY29udGV4dCkgeworICAgICAgICBmaW5hbCBSZXNvdXJjZXMgcmVzb3VyY2VzID0gY29udGV4dC5nZXRSZXNvdXJjZXMoKTsKKyAgICAgICAgRGlzcGxheU1ldHJpY3MgbWV0cmljcyA9IG1EaXNwbGF5TWV0cmljcyA9IHJlc291cmNlcy5nZXREaXNwbGF5TWV0cmljcygpOworICAgICAgICBmaW5hbCBmbG9hdCBkZW5zaXR5ID0gbWV0cmljcy5kZW5zaXR5OworICAgICAgICBmaW5hbCBmbG9hdCBibHVyUHggPSA1ICogZGVuc2l0eTsKKworICAgICAgICBtSWNvbldpZHRoID0gbUljb25IZWlnaHQgPSAoaW50KSByZXNvdXJjZXMuZ2V0RGltZW5zaW9uKGFuZHJvaWQuUi5kaW1lbi5hcHBfaWNvbl9zaXplKTsKKyAgICAgICAgbUljb25UZXh0dXJlV2lkdGggPSBtSWNvblRleHR1cmVIZWlnaHQgPSBtSWNvbldpZHRoICsgKGludCkoYmx1clB4KjIpOworCisgICAgICAgIG1CbHVyUGFpbnQuc2V0TWFza0ZpbHRlcihuZXcgQmx1ck1hc2tGaWx0ZXIoYmx1clB4LCBCbHVyTWFza0ZpbHRlci5CbHVyLk5PUk1BTCkpOworICAgICAgICBtR2xvd0NvbG9yUHJlc3NlZFBhaW50LnNldENvbG9yKDB4ZmZmZmMzMDApOworICAgICAgICBtR2xvd0NvbG9yUHJlc3NlZFBhaW50LnNldE1hc2tGaWx0ZXIoVGFibGVNYXNrRmlsdGVyLkNyZWF0ZUNsaXBUYWJsZSgwLCAzMCkpOworICAgICAgICBtR2xvd0NvbG9yRm9jdXNlZFBhaW50LnNldENvbG9yKDB4ZmZmZjhlMDApOworICAgICAgICBtR2xvd0NvbG9yRm9jdXNlZFBhaW50LnNldE1hc2tGaWx0ZXIoVGFibGVNYXNrRmlsdGVyLkNyZWF0ZUNsaXBUYWJsZSgwLCAzMCkpOworCisgICAgICAgIENvbG9yTWF0cml4IGNtID0gbmV3IENvbG9yTWF0cml4KCk7CisgICAgICAgIGNtLnNldFNhdHVyYXRpb24oMC4yZik7CisKKyAgICAgICAgbUNhbnZhcy5zZXREcmF3RmlsdGVyKG5ldyBQYWludEZsYWdzRHJhd0ZpbHRlcihQYWludC5ESVRIRVJfRkxBRywKKyAgICAgICAgICAgICAgICBQYWludC5GSUxURVJfQklUTUFQX0ZMQUcpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgRHJhd2FibGUgY3JlYXRlSWNvbkRyYXdhYmxlKERyYXdhYmxlIHNyYykgeworICAgICAgICBCaXRtYXAgc2NhbGVkID0gY3JlYXRlSWNvbkJpdG1hcChzcmMpOworCisgICAgICAgIFN0YXRlTGlzdERyYXdhYmxlIHJlc3VsdCA9IG5ldyBTdGF0ZUxpc3REcmF3YWJsZSgpOworCisgICAgICAgIHJlc3VsdC5hZGRTdGF0ZShuZXcgaW50W10geyBhbmRyb2lkLlIuYXR0ci5zdGF0ZV9mb2N1c2VkIH0sCisgICAgICAgICAgICAgICAgbmV3IEJpdG1hcERyYXdhYmxlKGNyZWF0ZVNlbGVjdGVkQml0bWFwKHNjYWxlZCwgZmFsc2UpKSk7CisgICAgICAgIHJlc3VsdC5hZGRTdGF0ZShuZXcgaW50W10geyBhbmRyb2lkLlIuYXR0ci5zdGF0ZV9wcmVzc2VkIH0sCisgICAgICAgICAgICAgICAgbmV3IEJpdG1hcERyYXdhYmxlKGNyZWF0ZVNlbGVjdGVkQml0bWFwKHNjYWxlZCwgdHJ1ZSkpKTsKKyAgICAgICAgcmVzdWx0LmFkZFN0YXRlKG5ldyBpbnRbMF0sIG5ldyBCaXRtYXBEcmF3YWJsZShzY2FsZWQpKTsKKworICAgICAgICByZXN1bHQuc2V0Qm91bmRzKDAsIDAsIG1JY29uVGV4dHVyZVdpZHRoLCBtSWNvblRleHR1cmVIZWlnaHQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgYSBiaXRtYXAgc3VpdGFibGUgZm9yIHRoZSBhbGwgYXBwcyB2aWV3LiAgVGhlIGJpdG1hcCB3aWxsIGJlIGEgcG93ZXIKKyAgICAgKiBvZiB0d28gc2l6ZWQgQVJHQl84ODg4IGJpdG1hcCB0aGF0IGNhbiBiZSB1c2VkIGFzIGEgZ2wgdGV4dHVyZS4KKyAgICAgKi8KKyAgICBwcml2YXRlIEJpdG1hcCBjcmVhdGVJY29uQml0bWFwKERyYXdhYmxlIGljb24pIHsKKyAgICAgICAgaW50IHdpZHRoID0gbUljb25XaWR0aDsKKyAgICAgICAgaW50IGhlaWdodCA9IG1JY29uSGVpZ2h0OworCisgICAgICAgIGlmIChpY29uIGluc3RhbmNlb2YgUGFpbnREcmF3YWJsZSkgeworICAgICAgICAgICAgUGFpbnREcmF3YWJsZSBwYWludGVyID0gKFBhaW50RHJhd2FibGUpIGljb247CisgICAgICAgICAgICBwYWludGVyLnNldEludHJpbnNpY1dpZHRoKHdpZHRoKTsKKyAgICAgICAgICAgIHBhaW50ZXIuc2V0SW50cmluc2ljSGVpZ2h0KGhlaWdodCk7CisgICAgICAgIH0gZWxzZSBpZiAoaWNvbiBpbnN0YW5jZW9mIEJpdG1hcERyYXdhYmxlKSB7CisgICAgICAgICAgICAvLyBFbnN1cmUgdGhlIGJpdG1hcCBoYXMgYSBkZW5zaXR5LgorICAgICAgICAgICAgQml0bWFwRHJhd2FibGUgYml0bWFwRHJhd2FibGUgPSAoQml0bWFwRHJhd2FibGUpIGljb247CisgICAgICAgICAgICBCaXRtYXAgYml0bWFwID0gYml0bWFwRHJhd2FibGUuZ2V0Qml0bWFwKCk7CisgICAgICAgICAgICBpZiAoYml0bWFwLmdldERlbnNpdHkoKSA9PSBCaXRtYXAuREVOU0lUWV9OT05FKSB7CisgICAgICAgICAgICAgICAgYml0bWFwRHJhd2FibGUuc2V0VGFyZ2V0RGVuc2l0eShtRGlzcGxheU1ldHJpY3MpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGludCBzb3VyY2VXaWR0aCA9IGljb24uZ2V0SW50cmluc2ljV2lkdGgoKTsKKyAgICAgICAgaW50IHNvdXJjZUhlaWdodCA9IGljb24uZ2V0SW50cmluc2ljSGVpZ2h0KCk7CisKKyAgICAgICAgaWYgKHNvdXJjZVdpZHRoID4gMCAmJiBzb3VyY2VXaWR0aCA+IDApIHsKKyAgICAgICAgICAgIC8vIFRoZXJlIGFyZSBpbnRyaW5zaWMgc2l6ZXMuCisgICAgICAgICAgICBpZiAod2lkdGggPCBzb3VyY2VXaWR0aCB8fCBoZWlnaHQgPCBzb3VyY2VIZWlnaHQpIHsKKyAgICAgICAgICAgICAgICAvLyBJdCdzIHRvbyBiaWcsIHNjYWxlIGl0IGRvd24uCisgICAgICAgICAgICAgICAgZmluYWwgZmxvYXQgcmF0aW8gPSAoZmxvYXQpIHNvdXJjZVdpZHRoIC8gc291cmNlSGVpZ2h0OworICAgICAgICAgICAgICAgIGlmIChzb3VyY2VXaWR0aCA+IHNvdXJjZUhlaWdodCkgeworICAgICAgICAgICAgICAgICAgICBoZWlnaHQgPSAoaW50KSAod2lkdGggLyByYXRpbyk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzb3VyY2VIZWlnaHQgPiBzb3VyY2VXaWR0aCkgeworICAgICAgICAgICAgICAgICAgICB3aWR0aCA9IChpbnQpIChoZWlnaHQgKiByYXRpbyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChzb3VyY2VXaWR0aCA8IHdpZHRoICYmIHNvdXJjZUhlaWdodCA8IGhlaWdodCkgeworICAgICAgICAgICAgICAgIC8vIEl0J3Mgc21hbGwsIHVzZSB0aGUgc2l6ZSB0aGV5IGdhdmUgdXMuCisgICAgICAgICAgICAgICAgd2lkdGggPSBzb3VyY2VXaWR0aDsKKyAgICAgICAgICAgICAgICBoZWlnaHQgPSBzb3VyY2VIZWlnaHQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBubyBpbnRyaW5zaWMgc2l6ZSAtLT4gdXNlIGRlZmF1bHQgc2l6ZQorICAgICAgICBpbnQgdGV4dHVyZVdpZHRoID0gbUljb25UZXh0dXJlV2lkdGg7CisgICAgICAgIGludCB0ZXh0dXJlSGVpZ2h0ID0gbUljb25UZXh0dXJlSGVpZ2h0OworCisgICAgICAgIGZpbmFsIEJpdG1hcCBiaXRtYXAgPSBCaXRtYXAuY3JlYXRlQml0bWFwKHRleHR1cmVXaWR0aCwgdGV4dHVyZUhlaWdodCwKKyAgICAgICAgICAgICAgICBCaXRtYXAuQ29uZmlnLkFSR0JfODg4OCk7CisgICAgICAgIGZpbmFsIENhbnZhcyBjYW52YXMgPSBtQ2FudmFzOworICAgICAgICBjYW52YXMuc2V0Qml0bWFwKGJpdG1hcCk7CisKKyAgICAgICAgZmluYWwgaW50IGxlZnQgPSAodGV4dHVyZVdpZHRoLXdpZHRoKSAvIDI7CisgICAgICAgIGZpbmFsIGludCB0b3AgPSAodGV4dHVyZUhlaWdodC1oZWlnaHQpIC8gMjsKKworICAgICAgICBpZiAoZmFsc2UpIHsKKyAgICAgICAgICAgIC8vIGRyYXcgYSBiaWcgYm94IGZvciB0aGUgaWNvbiBmb3IgZGVidWdnaW5nCisgICAgICAgICAgICBjYW52YXMuZHJhd0NvbG9yKHNDb2xvcnNbbUNvbG9ySW5kZXhdKTsKKyAgICAgICAgICAgIGlmICgrK21Db2xvckluZGV4ID49IHNDb2xvcnMubGVuZ3RoKSBtQ29sb3JJbmRleCA9IDA7CisgICAgICAgICAgICBQYWludCBkZWJ1Z1BhaW50ID0gbmV3IFBhaW50KCk7CisgICAgICAgICAgICBkZWJ1Z1BhaW50LnNldENvbG9yKDB4ZmZjY2NjMDApOworICAgICAgICAgICAgY2FudmFzLmRyYXdSZWN0KGxlZnQsIHRvcCwgbGVmdCt3aWR0aCwgdG9wK2hlaWdodCwgZGVidWdQYWludCk7CisgICAgICAgIH0KKworICAgICAgICBtT2xkQm91bmRzLnNldChpY29uLmdldEJvdW5kcygpKTsKKyAgICAgICAgaWNvbi5zZXRCb3VuZHMobGVmdCwgdG9wLCBsZWZ0K3dpZHRoLCB0b3AraGVpZ2h0KTsKKyAgICAgICAgaWNvbi5kcmF3KGNhbnZhcyk7CisgICAgICAgIGljb24uc2V0Qm91bmRzKG1PbGRCb3VuZHMpOworCisgICAgICAgIHJldHVybiBiaXRtYXA7CisgICAgfQorCisgICAgcHJpdmF0ZSBCaXRtYXAgY3JlYXRlU2VsZWN0ZWRCaXRtYXAoQml0bWFwIHNyYywgYm9vbGVhbiBwcmVzc2VkKSB7CisgICAgICAgIGZpbmFsIEJpdG1hcCByZXN1bHQgPSBCaXRtYXAuY3JlYXRlQml0bWFwKG1JY29uVGV4dHVyZVdpZHRoLCBtSWNvblRleHR1cmVIZWlnaHQsCisgICAgICAgICAgICAgICAgQml0bWFwLkNvbmZpZy5BUkdCXzg4ODgpOworICAgICAgICBmaW5hbCBDYW52YXMgZGVzdCA9IG5ldyBDYW52YXMocmVzdWx0KTsKKworICAgICAgICBkZXN0LmRyYXdDb2xvcigwLCBQb3J0ZXJEdWZmLk1vZGUuQ0xFQVIpOworCisgICAgICAgIGludFtdIHh5ID0gbmV3IGludFsyXTsKKyAgICAgICAgQml0bWFwIG1hc2sgPSBzcmMuZXh0cmFjdEFscGhhKG1CbHVyUGFpbnQsIHh5KTsKKworICAgICAgICBkZXN0LmRyYXdCaXRtYXAobWFzaywgeHlbMF0sIHh5WzFdLAorICAgICAgICAgICAgICAgIHByZXNzZWQgPyBtR2xvd0NvbG9yUHJlc3NlZFBhaW50IDogbUdsb3dDb2xvckZvY3VzZWRQYWludCk7CisKKyAgICAgICAgbWFzay5yZWN5Y2xlKCk7CisKKyAgICAgICAgZGVzdC5kcmF3Qml0bWFwKHNyYywgMCwgMCwgbVBhaW50KTsKKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KK30KZGlmZiAtLWdpdCBhL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvS2V5Z3VhcmRTY3JlZW4uamF2YSBiL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvS2V5Z3VhcmRTY3JlZW4uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYmI2ODc1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9LZXlndWFyZFNjcmVlbi5qYXZhCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLmludGVybmFsLnBvbGljeS5pbXBsOworCisvKioKKyAqIENvbW1vbiBpbnRlcmZhY2Ugb2YgZWFjaCB7QGxpbmsgYW5kcm9pZC52aWV3LlZpZXd9IHRoYXQgaXMgYSBzY3JlZW4gb2YKKyAqIHtAbGluayBMb2NrUGF0dGVybktleWd1YXJkVmlld30uCisgKi8KK3B1YmxpYyBpbnRlcmZhY2UgS2V5Z3VhcmRTY3JlZW4geworCisgICAgLyoqCisgICAgICogUmV0dXJuIHRydWUgaWYgeW91ciB2aWV3IG5lZWRzIGlucHV0LCBzbyBzaG91bGQgYWxsb3cgdGhlIHNvZnQKKyAgICAgKiBrZXlib2FyZCB0byBiZSBkaXNwbGF5ZWQuCisgICAgICovCisgICAgYm9vbGVhbiBuZWVkc0lucHV0KCk7CisgICAgCisgICAgLyoqCisgICAgICogVGhpcyBzY3JlZW4gaXMgbm8gbG9uZ2VyIGluIGZyb250IG9mIHRoZSB1c2VyLgorICAgICAqLworICAgIHZvaWQgb25QYXVzZSgpOworCisgICAgLyoqCisgICAgICogVGhpcyBzY3JlZW4gaXMgZ29pbmcgdG8gYmUgaW4gZnJvbnQgb2YgdGhlIHVzZXIuCisgICAgICovCisgICAgdm9pZCBvblJlc3VtZSgpOworCisgICAgLyoqCisgICAgICogVGhpcyB2aWV3IGlzIGdvaW5nIGF3YXk7IGEgaG9vayB0byBkbyBjbGVhbnVwLgorICAgICAqLworICAgIHZvaWQgY2xlYW5VcCgpOworfQpkaWZmIC0tZ2l0IGEvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9LZXlndWFyZFNjcmVlbkNhbGxiYWNrLmphdmEgYi9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL0tleWd1YXJkU2NyZWVuQ2FsbGJhY2suamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODQzNjAzCi0tLSAvZGV2L251bGwKKysrIGIvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9LZXlndWFyZFNjcmVlbkNhbGxiYWNrLmphdmEKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGw7CisKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucmVzLkNvbmZpZ3VyYXRpb247CisKKy8qKgorICogV2l0aGluIGEga2V5Z3VhcmQsIHRoZXJlIG1heSBiZSBzZXZlcmFsIHNjcmVlbnMgdGhhdCBuZWVkIGEgY2FsbGJhY2sKKyAqIHRvIHRoZSBob3N0IGtleWd1YXJkIHZpZXcuCisgKi8KK3B1YmxpYyBpbnRlcmZhY2UgS2V5Z3VhcmRTY3JlZW5DYWxsYmFjayBleHRlbmRzIEtleWd1YXJkVmlld0NhbGxiYWNrIHsKKworICAgIC8qKgorICAgICAqIFRyYW5zaXRpb24gdG8gdGhlIGxvY2sgc2NyZWVuLgorICAgICAqLworICAgIHZvaWQgZ29Ub0xvY2tTY3JlZW4oKTsKKworICAgIC8qKgorICAgICAqIFRyYW5zaXRpb24gdG8gdGhlIHVubG9jayBzY3JlZW4uCisgICAgICovCisgICAgdm9pZCBnb1RvVW5sb2NrU2NyZWVuKCk7CisKKyAgICAvKioKKyAgICAgKiBUaGUgdXNlciByZXBvcnRlZCB0aGF0IHRoZXkgZm9yZ290IHRoZWlyIHBhdHRlcm4gKG9yIG5vdCwgd2hlbiB0aGV5IHdhbnQgdG8gYmFjayBvdXQgb2YgdGhlCisgICAgICogZm9yZ290IHBhdHRlcm4gc2NyZWVuKS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBpc0ZvcmdvdHRlbiBUcnVlIGlmIHRoZSB1c2VyIGhpdCB0aGUgZm9yZ290IHBhdHRlcm4sIGZhbHNlIGlmIHRoZXkgd2FudCB0byBiYWNrIG91dAorICAgICAqICAgICAgICBvZiB0aGUgYWNjb3VudCBzY3JlZW4uCisgICAgICovCisgICAgdm9pZCBmb3Jnb3RQYXR0ZXJuKGJvb2xlYW4gaXNGb3Jnb3R0ZW4pOworCisgICAgLyoqCisgICAgICogQHJldHVybiBXaGV0aGVyIHRoZSBrZXlndWFyZCByZXF1aXJlcyBzb21lIHNvcnQgb2YgUElOLgorICAgICAqLworICAgIGJvb2xlYW4gaXNTZWN1cmUoKTsKKworICAgIC8qKgorICAgICAqIEByZXR1cm4gV2hldGhlciB3ZSBhcmUgaW4gYSBtb2RlIHdoZXJlIHdlIG9ubHkgd2FudCB0byB2ZXJpZnkgdGhlCisgICAgICogICB1c2VyIGNhbiBnZXQgcGFzdCB0aGUga2V5Z3VhcmQuCisgICAgICovCisgICAgYm9vbGVhbiBpc1ZlcmlmeVVubG9ja09ubHkoKTsKKworICAgIC8qKgorICAgICAqIFN0YXkgb24gbWUsIGJ1dCByZWNyZWF0ZSBtZSAoc28gSSBjYW4gdXNlIGEgZGlmZmVyZW50IGxheW91dCkuCisgICAgICovCisgICAgdm9pZCByZWNyZWF0ZU1lKENvbmZpZ3VyYXRpb24gY29uZmlnKTsKKworICAgIC8qKgorICAgICAqIFRha2UgYWN0aW9uIHRvIHNlbmQgYW4gZW1lcmdlbmN5IGNhbGwuCisgICAgICovCisgICAgdm9pZCB0YWtlRW1lcmdlbmN5Q2FsbEFjdGlvbigpOworCisgICAgLyoqCisgICAgICogUmVwb3J0IHRoYXQgdGhlIHVzZXIgaGFkIGEgZmFpbGVkIGF0dGVtcHQgdG8gdW5sb2NrIHdpdGggcGFzc3dvcmQgb3IgcGF0dGVybi4KKyAgICAgKi8KKyAgICB2b2lkIHJlcG9ydEZhaWxlZFVubG9ja0F0dGVtcHQoKTsKKworICAgIC8qKgorICAgICAqIFJlcG9ydCB0aGF0IHRoZSB1c2VyIHN1Y2Nlc3NmdWxseSBlbnRlcmVkIHRoZWlyIHBhc3N3b3JkIG9yIHBhdHRlcm4uCisgICAgICovCisgICAgdm9pZCByZXBvcnRTdWNjZXNzZnVsVW5sb2NrQXR0ZW1wdCgpOworCisgICAgLyoqCisgICAgICogUmVwb3J0IHdoZXRoZXIgd2UgdGhlcmUncyBhbm90aGVyIHdheSB0byB1bmxvY2sgdGhlIGRldmljZS4KKyAgICAgKiBAcmV0dXJuIHRydWUKKyAgICAgKi8KKyAgICBib29sZWFuIGRvZXNGYWxsYmFja1VubG9ja1NjcmVlbkV4aXN0KCk7Cit9CmRpZmYgLS1naXQgYS9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL0tleWd1YXJkVXBkYXRlTW9uaXRvci5qYXZhIGIvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9LZXlndWFyZFVwZGF0ZU1vbml0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjI1ZTU2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9LZXlndWFyZFVwZGF0ZU1vbml0b3IuamF2YQpAQCAtMCwwICsxLDUyNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGw7CisKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQnJvYWRjYXN0UmVjZWl2ZXI7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50RmlsdGVyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5yZXMuQ29uZmlndXJhdGlvbjsKK2ltcG9ydCBhbmRyb2lkLmRhdGFiYXNlLkNvbnRlbnRPYnNlcnZlcjsKK2ltcG9ydCBzdGF0aWMgYW5kcm9pZC5vcy5CYXR0ZXJ5TWFuYWdlci5CQVRURVJZX1NUQVRVU19DSEFSR0lORzsKK2ltcG9ydCBzdGF0aWMgYW5kcm9pZC5vcy5CYXR0ZXJ5TWFuYWdlci5CQVRURVJZX1NUQVRVU19GVUxMOworaW1wb3J0IHN0YXRpYyBhbmRyb2lkLm9zLkJhdHRlcnlNYW5hZ2VyLkJBVFRFUllfU1RBVFVTX1VOS05PV047CitpbXBvcnQgYW5kcm9pZC5tZWRpYS5BdWRpb01hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5vcy5IYW5kbGVyOworaW1wb3J0IGFuZHJvaWQub3MuTWVzc2FnZTsKK2ltcG9ydCBhbmRyb2lkLm9zLlN5c3RlbUNsb2NrOworaW1wb3J0IGFuZHJvaWQucHJvdmlkZXIuU2V0dGluZ3M7CitpbXBvcnQgYW5kcm9pZC5wcm92aWRlci5UZWxlcGhvbnk7CitpbXBvcnQgc3RhdGljIGFuZHJvaWQucHJvdmlkZXIuVGVsZXBob255LkludGVudHMuRVhUUkFfUExNTjsKK2ltcG9ydCBzdGF0aWMgYW5kcm9pZC5wcm92aWRlci5UZWxlcGhvbnkuSW50ZW50cy5FWFRSQV9TSE9XX1BMTU47CitpbXBvcnQgc3RhdGljIGFuZHJvaWQucHJvdmlkZXIuVGVsZXBob255LkludGVudHMuRVhUUkFfU0hPV19TUE47CitpbXBvcnQgc3RhdGljIGFuZHJvaWQucHJvdmlkZXIuVGVsZXBob255LkludGVudHMuRVhUUkFfU1BOOworaW1wb3J0IHN0YXRpYyBhbmRyb2lkLnByb3ZpZGVyLlRlbGVwaG9ueS5JbnRlbnRzLlNQTl9TVFJJTkdTX1VQREFURURfQUNUSU9OOworCitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LkljY0NhcmQ7CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LlRlbGVwaG9ueUludGVudHM7CisKK2ltcG9ydCBhbmRyb2lkLnRlbGVwaG9ueS5UZWxlcGhvbnlNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuUjsKK2ltcG9ydCBjb20uZ29vZ2xlLmFuZHJvaWQuY29sbGVjdC5MaXN0czsKKworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CisKKy8qKgorICogV2F0Y2hlcyBmb3IgdXBkYXRlcyB0aGF0IG1heSBiZSBpbnRlcmVzdGluZyB0byB0aGUga2V5Z3VhcmQsIGFuZCBwcm92aWRlcworICogdGhlIHVwIHRvIGRhdGUgaW5mb3JtYXRpb24gYXMgd2VsbCBhcyBhIHJlZ2lzdHJhdGlvbiBmb3IgY2FsbGJhY2tzIHRoYXQgY2FyZQorICogdG8gYmUgdXBkYXRlZC4KKyAqCisgKiBOb3RlOiB1bmRlciB0aW1lIGNydW5jaCwgdGhpcyBoYXMgYmVlbiBleHRlbmRlZCB0byBpbmNsdWRlIHNvbWUgc3R1ZmYgdGhhdAorICogZG9lc24ndCByZWFsbHkgYmVsb25nIGhlcmUuICBzZWUge0BsaW5rICNoYW5kbGVCYXR0ZXJ5VXBkYXRlfSB3aGVyZSBpdCBzaHV0ZG93bnMKKyAqIHRoZSBkZXZpY2UsIGFuZCB7QGxpbmsgI2dldEZhaWxlZEF0dGVtcHRzKCl9LCB7QGxpbmsgI3JlcG9ydEZhaWxlZEF0dGVtcHQoKX0KKyAqIGFuZCB7QGxpbmsgI2NsZWFyRmFpbGVkQXR0ZW1wdHMoKX0uICBNYXliZSB3ZSBzaG91bGQgcmVuYW1lIHRoaXMgJ0tleWd1YXJkQ29udGV4dCcuLi4KKyAqLworcHVibGljIGNsYXNzIEtleWd1YXJkVXBkYXRlTW9uaXRvciB7CisKKyAgICBzdGF0aWMgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgVEFHID0gIktleWd1YXJkVXBkYXRlTW9uaXRvciI7CisgICAgc3RhdGljIHByaXZhdGUgZmluYWwgYm9vbGVhbiBERUJVRyA9IGZhbHNlOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IExPV19CQVRURVJZX1RIUkVTSE9MRCA9IDIwOworCisgICAgcHJpdmF0ZSBmaW5hbCBDb250ZXh0IG1Db250ZXh0OworCisgICAgcHJpdmF0ZSBJY2NDYXJkLlN0YXRlIG1TaW1TdGF0ZSA9IEljY0NhcmQuU3RhdGUuUkVBRFk7CisKKyAgICBwcml2YXRlIGJvb2xlYW4gbUtleWd1YXJkQnlwYXNzRW5hYmxlZDsKKworICAgIHByaXZhdGUgYm9vbGVhbiBtRGV2aWNlUGx1Z2dlZEluOworCisgICAgcHJpdmF0ZSBib29sZWFuIG1EZXZpY2VQcm92aXNpb25lZDsKKworICAgIHByaXZhdGUgaW50IG1CYXR0ZXJ5TGV2ZWw7CisKKyAgICBwcml2YXRlIENoYXJTZXF1ZW5jZSBtVGVsZXBob255UGxtbjsKKyAgICBwcml2YXRlIENoYXJTZXF1ZW5jZSBtVGVsZXBob255U3BuOworCisgICAgcHJpdmF0ZSBpbnQgbUZhaWxlZEF0dGVtcHRzID0gMDsKKworICAgIHByaXZhdGUgSGFuZGxlciBtSGFuZGxlcjsKKworICAgIHByaXZhdGUgQXJyYXlMaXN0PEluZm9DYWxsYmFjaz4gbUluZm9DYWxsYmFja3MgPSBMaXN0cy5uZXdBcnJheUxpc3QoKTsKKyAgICBwcml2YXRlIEFycmF5TGlzdDxTaW1TdGF0ZUNhbGxiYWNrPiBtU2ltU3RhdGVDYWxsYmFja3MgPSBMaXN0cy5uZXdBcnJheUxpc3QoKTsKKyAgICBwcml2YXRlIENvbnRlbnRPYnNlcnZlciBtQ29udGVudE9ic2VydmVyOworCisgICAgLy8gbWVzc2FnZXMgZm9yIHRoZSBoYW5kbGVyCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1TR19USU1FX1VQREFURSA9IDMwMTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTVNHX0JBVFRFUllfVVBEQVRFID0gMzAyOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNU0dfQ0FSUklFUl9JTkZPX1VQREFURSA9IDMwMzsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTVNHX1NJTV9TVEFURV9DSEFOR0UgPSAzMDQ7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1TR19SSU5HRVJfTU9ERV9DSEFOR0VEID0gMzA1OworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNU0dfUEhPTkVfU1RBVEVfQ0hBTkdFRCA9IDMwNjsKKworCisgICAgLyoqCisgICAgICogV2hlbiB3ZSByZWNlaXZlIGEKKyAgICAgKiB7QGxpbmsgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LlRlbGVwaG9ueUludGVudHMjQUNUSU9OX1NJTV9TVEFURV9DSEFOR0VEfSBicm9hZGNhc3QsCisgICAgICogYW5kIHRoZW4gcGFzcyBhIHJlc3VsdCB2aWEgb3VyIGhhbmRsZXIgdG8ge0BsaW5rIEtleWd1YXJkVXBkYXRlTW9uaXRvciNoYW5kbGVTaW1TdGF0ZUNoYW5nZX0sCisgICAgICogd2UgbmVlZCBhIHNpbmdsZSBvYmplY3QgdG8gcGFzcyB0byB0aGUgaGFuZGxlci4gIFRoaXMgY2xhc3MgaGVscHMgZGVjb2RlCisgICAgICogdGhlIGludGVudCBhbmQgcHJvdmlkZSBhIHtAbGluayBTaW1DYXJkLlN0YXRlfSByZXN1bHQuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgU2ltQXJncyB7CisKKyAgICAgICAgcHVibGljIGZpbmFsIEljY0NhcmQuU3RhdGUgc2ltU3RhdGU7CisKKyAgICAgICAgcHJpdmF0ZSBTaW1BcmdzKEludGVudCBpbnRlbnQpIHsKKyAgICAgICAgICAgIGlmICghVGVsZXBob255SW50ZW50cy5BQ1RJT05fU0lNX1NUQVRFX0NIQU5HRUQuZXF1YWxzKGludGVudC5nZXRBY3Rpb24oKSkpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJvbmx5IGhhbmRsZXMgaW50ZW50IEFDVElPTl9TSU1fU1RBVEVfQ0hBTkdFRCIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgU3RyaW5nIHN0YXRlRXh0cmEgPSBpbnRlbnQuZ2V0U3RyaW5nRXh0cmEoSWNjQ2FyZC5JTlRFTlRfS0VZX0lDQ19TVEFURSk7CisgICAgICAgICAgICBpZiAoSWNjQ2FyZC5JTlRFTlRfVkFMVUVfSUNDX0FCU0VOVC5lcXVhbHMoc3RhdGVFeHRyYSkpIHsKKyAgICAgICAgICAgICAgICB0aGlzLnNpbVN0YXRlID0gSWNjQ2FyZC5TdGF0ZS5BQlNFTlQ7CisgICAgICAgICAgICB9IGVsc2UgaWYgKEljY0NhcmQuSU5URU5UX1ZBTFVFX0lDQ19SRUFEWS5lcXVhbHMoc3RhdGVFeHRyYSkpIHsKKyAgICAgICAgICAgICAgICB0aGlzLnNpbVN0YXRlID0gSWNjQ2FyZC5TdGF0ZS5SRUFEWTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoSWNjQ2FyZC5JTlRFTlRfVkFMVUVfSUNDX0xPQ0tFRC5lcXVhbHMoc3RhdGVFeHRyYSkpIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBTdHJpbmcgbG9ja2VkUmVhc29uID0gaW50ZW50CisgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0U3RyaW5nRXh0cmEoSWNjQ2FyZC5JTlRFTlRfS0VZX0xPQ0tFRF9SRUFTT04pOworICAgICAgICAgICAgICAgIGlmIChJY2NDYXJkLklOVEVOVF9WQUxVRV9MT0NLRURfT05fUElOLmVxdWFscyhsb2NrZWRSZWFzb24pKSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuc2ltU3RhdGUgPSBJY2NDYXJkLlN0YXRlLlBJTl9SRVFVSVJFRDsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKEljY0NhcmQuSU5URU5UX1ZBTFVFX0xPQ0tFRF9PTl9QVUsuZXF1YWxzKGxvY2tlZFJlYXNvbikpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5zaW1TdGF0ZSA9IEljY0NhcmQuU3RhdGUuUFVLX1JFUVVJUkVEOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuc2ltU3RhdGUgPSBJY2NDYXJkLlN0YXRlLlVOS05PV047CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChJY2NDYXJkLklOVEVOVF9WQUxVRV9MT0NLRURfTkVUV09SSy5lcXVhbHMoc3RhdGVFeHRyYSkpIHsKKyAgICAgICAgICAgICAgICB0aGlzLnNpbVN0YXRlID0gSWNjQ2FyZC5TdGF0ZS5ORVRXT1JLX0xPQ0tFRDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdGhpcy5zaW1TdGF0ZSA9IEljY0NhcmQuU3RhdGUuVU5LTk9XTjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgICAgICByZXR1cm4gc2ltU3RhdGUudG9TdHJpbmcoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBLZXlndWFyZFVwZGF0ZU1vbml0b3IoQ29udGV4dCBjb250ZXh0KSB7CisgICAgICAgIG1Db250ZXh0ID0gY29udGV4dDsKKworICAgICAgICBtSGFuZGxlciA9IG5ldyBIYW5kbGVyKCkgeworICAgICAgICAgICAgQE92ZXJyaWRlCisgICAgICAgICAgICBwdWJsaWMgdm9pZCBoYW5kbGVNZXNzYWdlKE1lc3NhZ2UgbXNnKSB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChtc2cud2hhdCkgeworICAgICAgICAgICAgICAgICAgICBjYXNlIE1TR19USU1FX1VQREFURToKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVRpbWVVcGRhdGUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIE1TR19CQVRURVJZX1VQREFURToKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUJhdHRlcnlVcGRhdGUobXNnLmFyZzEsICBtc2cuYXJnMik7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBNU0dfQ0FSUklFUl9JTkZPX1VQREFURToKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZUNhcnJpZXJJbmZvVXBkYXRlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBNU0dfU0lNX1NUQVRFX0NIQU5HRToKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNpbVN0YXRlQ2hhbmdlKChTaW1BcmdzKSBtc2cub2JqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlIE1TR19SSU5HRVJfTU9ERV9DSEFOR0VEOgorICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlUmluZ2VyTW9kZUNoYW5nZShtc2cuYXJnMSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBNU0dfUEhPTkVfU1RBVEVfQ0hBTkdFRDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVBob25lU3RhdGVDaGFuZ2VkKChTdHJpbmcpbXNnLm9iaik7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH07CisKKyAgICAgICAgbUtleWd1YXJkQnlwYXNzRW5hYmxlZCA9IGNvbnRleHQuZ2V0UmVzb3VyY2VzKCkuZ2V0Qm9vbGVhbigKKyAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmJvb2wuY29uZmlnX2J5cGFzc19rZXlndWFyZF9pZl9zbGlkZXJfb3Blbik7CisKKyAgICAgICAgbURldmljZVByb3Zpc2lvbmVkID0gU2V0dGluZ3MuU2VjdXJlLmdldEludCgKKyAgICAgICAgICAgICAgICBtQ29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKSwgU2V0dGluZ3MuU2VjdXJlLkRFVklDRV9QUk9WSVNJT05FRCwgMCkgIT0gMDsKKworICAgICAgICAvLyBTaW5jZSBkZXZpY2UgY2FuJ3QgYmUgdW4tcHJvdmlzaW9uZWQsIHdlIG9ubHkgbmVlZCB0byByZWdpc3RlciBhIGNvbnRlbnQgb2JzZXJ2ZXIKKyAgICAgICAgLy8gdG8gdXBkYXRlIG1EZXZpY2VQcm92aXNpb25lZCB3aGVuIHdlIGFyZS4uLgorICAgICAgICBpZiAoIW1EZXZpY2VQcm92aXNpb25lZCkgeworICAgICAgICAgICAgbUNvbnRlbnRPYnNlcnZlciA9IG5ldyBDb250ZW50T2JzZXJ2ZXIobUhhbmRsZXIpIHsKKyAgICAgICAgICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCBvbkNoYW5nZShib29sZWFuIHNlbGZDaGFuZ2UpIHsKKyAgICAgICAgICAgICAgICAgICAgc3VwZXIub25DaGFuZ2Uoc2VsZkNoYW5nZSk7CisgICAgICAgICAgICAgICAgICAgIG1EZXZpY2VQcm92aXNpb25lZCA9IFNldHRpbmdzLlNlY3VyZS5nZXRJbnQobUNvbnRleHQuZ2V0Q29udGVudFJlc29sdmVyKCksCisgICAgICAgICAgICAgICAgICAgICAgICBTZXR0aW5ncy5TZWN1cmUuREVWSUNFX1BST1ZJU0lPTkVELCAwKSAhPSAwOworICAgICAgICAgICAgICAgICAgICBpZiAobURldmljZVByb3Zpc2lvbmVkICYmIG1Db250ZW50T2JzZXJ2ZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0aGUgb2JzZXJ2ZXIgYW55bW9yZS4uLgorICAgICAgICAgICAgICAgICAgICAgICAgbUNvbnRleHQuZ2V0Q29udGVudFJlc29sdmVyKCkudW5yZWdpc3RlckNvbnRlbnRPYnNlcnZlcihtQ29udGVudE9ic2VydmVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1Db250ZW50T2JzZXJ2ZXIgPSBudWxsOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAiREVWSUNFX1BST1ZJU0lPTkVEIHN0YXRlID0gIiArIG1EZXZpY2VQcm92aXNpb25lZCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfTsKKworICAgICAgICAgICAgbUNvbnRleHQuZ2V0Q29udGVudFJlc29sdmVyKCkucmVnaXN0ZXJDb250ZW50T2JzZXJ2ZXIoCisgICAgICAgICAgICAgICAgICAgIFNldHRpbmdzLlNlY3VyZS5nZXRVcmlGb3IoU2V0dGluZ3MuU2VjdXJlLkRFVklDRV9QUk9WSVNJT05FRCksCisgICAgICAgICAgICAgICAgICAgIGZhbHNlLCBtQ29udGVudE9ic2VydmVyKTsKKworICAgICAgICAgICAgLy8gcHJldmVudCBhIHJhY2UgY29uZGl0aW9uIGJldHdlZW4gd2hlcmUgd2UgY2hlY2sgdGhlIGZsYWcgYW5kIHdoZXJlIHdlIHJlZ2lzdGVyIHRoZQorICAgICAgICAgICAgLy8gb2JzZXJ2ZXIgYnkgZ3JhYmJpbmcgdGhlIHZhbHVlIG9uY2UgYWdhaW4uLi4KKyAgICAgICAgICAgIG1EZXZpY2VQcm92aXNpb25lZCA9IFNldHRpbmdzLlNlY3VyZS5nZXRJbnQobUNvbnRleHQuZ2V0Q29udGVudFJlc29sdmVyKCksCisgICAgICAgICAgICAgICAgU2V0dGluZ3MuU2VjdXJlLkRFVklDRV9QUk9WSVNJT05FRCwgMCkgIT0gMDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIHRha2UgYSBndWVzcyB0byBzdGFydAorICAgICAgICBtU2ltU3RhdGUgPSBJY2NDYXJkLlN0YXRlLlJFQURZOworICAgICAgICBtRGV2aWNlUGx1Z2dlZEluID0gdHJ1ZTsKKyAgICAgICAgbUJhdHRlcnlMZXZlbCA9IDEwMDsKKworICAgICAgICBtVGVsZXBob255UGxtbiA9IGdldERlZmF1bHRQbG1uKCk7CisKKyAgICAgICAgLy8gc2V0dXAgcmVjZWl2ZXIKKyAgICAgICAgZmluYWwgSW50ZW50RmlsdGVyIGZpbHRlciA9IG5ldyBJbnRlbnRGaWx0ZXIoKTsKKyAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihJbnRlbnQuQUNUSU9OX1RJTUVfVElDSyk7CisgICAgICAgIGZpbHRlci5hZGRBY3Rpb24oSW50ZW50LkFDVElPTl9USU1FX0NIQU5HRUQpOworICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKEludGVudC5BQ1RJT05fQkFUVEVSWV9DSEFOR0VEKTsKKyAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihJbnRlbnQuQUNUSU9OX1RJTUVaT05FX0NIQU5HRUQpOworICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKFRlbGVwaG9ueUludGVudHMuQUNUSU9OX1NJTV9TVEFURV9DSEFOR0VEKTsKKyAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihUZWxlcGhvbnlNYW5hZ2VyLkFDVElPTl9QSE9ORV9TVEFURV9DSEFOR0VEKTsKKyAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihTUE5fU1RSSU5HU19VUERBVEVEX0FDVElPTik7CisgICAgICAgIGZpbHRlci5hZGRBY3Rpb24oQXVkaW9NYW5hZ2VyLlJJTkdFUl9NT0RFX0NIQU5HRURfQUNUSU9OKTsKKyAgICAgICAgY29udGV4dC5yZWdpc3RlclJlY2VpdmVyKG5ldyBCcm9hZGNhc3RSZWNlaXZlcigpIHsKKworICAgICAgICAgICAgcHVibGljIHZvaWQgb25SZWNlaXZlKENvbnRleHQgY29udGV4dCwgSW50ZW50IGludGVudCkgeworICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZyBhY3Rpb24gPSBpbnRlbnQuZ2V0QWN0aW9uKCk7CisgICAgICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJyZWNlaXZlZCBicm9hZGNhc3QgIiArIGFjdGlvbik7CisKKyAgICAgICAgICAgICAgICBpZiAoSW50ZW50LkFDVElPTl9USU1FX1RJQ0suZXF1YWxzKGFjdGlvbikKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IEludGVudC5BQ1RJT05fVElNRV9DSEFOR0VELmVxdWFscyhhY3Rpb24pCisgICAgICAgICAgICAgICAgICAgICAgICB8fCBJbnRlbnQuQUNUSU9OX1RJTUVaT05FX0NIQU5HRUQuZXF1YWxzKGFjdGlvbikpIHsKKyAgICAgICAgICAgICAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2UobUhhbmRsZXIub2J0YWluTWVzc2FnZShNU0dfVElNRV9VUERBVEUpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFNQTl9TVFJJTkdTX1VQREFURURfQUNUSU9OLmVxdWFscyhhY3Rpb24pKSB7CisgICAgICAgICAgICAgICAgICAgIG1UZWxlcGhvbnlQbG1uID0gZ2V0VGVsZXBob255UGxtbkZyb20oaW50ZW50KTsKKyAgICAgICAgICAgICAgICAgICAgbVRlbGVwaG9ueVNwbiA9IGdldFRlbGVwaG9ueVNwbkZyb20oaW50ZW50KTsKKyAgICAgICAgICAgICAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2UobUhhbmRsZXIub2J0YWluTWVzc2FnZShNU0dfQ0FSUklFUl9JTkZPX1VQREFURSkpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoSW50ZW50LkFDVElPTl9CQVRURVJZX0NIQU5HRUQuZXF1YWxzKGFjdGlvbikpIHsKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgaW50IHBsdWdnZWRJblN0YXR1cyA9IGludGVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXRJbnRFeHRyYSgic3RhdHVzIiwgQkFUVEVSWV9TVEFUVVNfVU5LTk9XTik7CisgICAgICAgICAgICAgICAgICAgIGludCBiYXR0ZXJ5TGV2ZWwgPSBpbnRlbnQuZ2V0SW50RXh0cmEoImxldmVsIiwgMCk7CisgICAgICAgICAgICAgICAgICAgIGZpbmFsIE1lc3NhZ2UgbXNnID0gbUhhbmRsZXIub2J0YWluTWVzc2FnZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBNU0dfQkFUVEVSWV9VUERBVEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGx1Z2dlZEluU3RhdHVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhdHRlcnlMZXZlbCk7CisgICAgICAgICAgICAgICAgICAgIG1IYW5kbGVyLnNlbmRNZXNzYWdlKG1zZyk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChUZWxlcGhvbnlJbnRlbnRzLkFDVElPTl9TSU1fU1RBVEVfQ0hBTkdFRC5lcXVhbHMoYWN0aW9uKSkgeworICAgICAgICAgICAgICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZShtSGFuZGxlci5vYnRhaW5NZXNzYWdlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1TR19TSU1fU1RBVEVfQ0hBTkdFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBTaW1BcmdzKGludGVudCkpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKEF1ZGlvTWFuYWdlci5SSU5HRVJfTU9ERV9DSEFOR0VEX0FDVElPTi5lcXVhbHMoYWN0aW9uKSkgeworICAgICAgICAgICAgICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZShtSGFuZGxlci5vYnRhaW5NZXNzYWdlKE1TR19SSU5HRVJfTU9ERV9DSEFOR0VELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVudC5nZXRJbnRFeHRyYShBdWRpb01hbmFnZXIuRVhUUkFfUklOR0VSX01PREUsIC0xKSwgMCkpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoVGVsZXBob255TWFuYWdlci5BQ1RJT05fUEhPTkVfU1RBVEVfQ0hBTkdFRC5lcXVhbHMoYWN0aW9uKSkgeworICAgICAgICAgICAgICAgICAgICBTdHJpbmcgc3RhdGUgPSBpbnRlbnQuZ2V0U3RyaW5nRXh0cmEoVGVsZXBob255TWFuYWdlci5FWFRSQV9TVEFURSk7CisgICAgICAgICAgICAgICAgICAgIG1IYW5kbGVyLnNlbmRNZXNzYWdlKG1IYW5kbGVyLm9idGFpbk1lc3NhZ2UoTVNHX1BIT05FX1NUQVRFX0NIQU5HRUQsIHN0YXRlKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9LCBmaWx0ZXIpOworICAgIH0KKworICAgIHByb3RlY3RlZCB2b2lkIGhhbmRsZVBob25lU3RhdGVDaGFuZ2VkKFN0cmluZyBuZXdTdGF0ZSkgeworICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgImhhbmRsZVBob25lU3RhdGVDaGFuZ2VkKCIgKyBuZXdTdGF0ZSArICIpIik7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbUluZm9DYWxsYmFja3Muc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgIG1JbmZvQ2FsbGJhY2tzLmdldChpKS5vblBob25lU3RhdGVDaGFuZ2VkKG5ld1N0YXRlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByb3RlY3RlZCB2b2lkIGhhbmRsZVJpbmdlck1vZGVDaGFuZ2UoaW50IG1vZGUpIHsKKyAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJoYW5kbGVSaW5nZXJNb2RlQ2hhbmdlKCIgKyBtb2RlICsgIikiKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBtSW5mb0NhbGxiYWNrcy5zaXplKCk7IGkrKykgeworICAgICAgICAgICAgbUluZm9DYWxsYmFja3MuZ2V0KGkpLm9uUmluZ2VyTW9kZUNoYW5nZWQobW9kZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBIYW5kbGUge0BsaW5rICNNU0dfVElNRV9VUERBVEV9CisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIGhhbmRsZVRpbWVVcGRhdGUoKSB7CisgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAiaGFuZGxlVGltZVVwZGF0ZSIpOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1JbmZvQ2FsbGJhY2tzLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICBtSW5mb0NhbGxiYWNrcy5nZXQoaSkub25UaW1lQ2hhbmdlZCgpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogSGFuZGxlIHtAbGluayAjTVNHX0JBVFRFUllfVVBEQVRFfQorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBoYW5kbGVCYXR0ZXJ5VXBkYXRlKGludCBwbHVnZ2VkSW5TdGF0dXMsIGludCBiYXR0ZXJ5TGV2ZWwpIHsKKyAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJoYW5kbGVCYXR0ZXJ5VXBkYXRlIik7CisgICAgICAgIGZpbmFsIGJvb2xlYW4gcGx1Z2dlZEluID0gaXNQbHVnZ2VkSW4ocGx1Z2dlZEluU3RhdHVzKTsKKworICAgICAgICBpZiAoaXNCYXR0ZXJ5VXBkYXRlSW50ZXJlc3RpbmcocGx1Z2dlZEluLCBiYXR0ZXJ5TGV2ZWwpKSB7CisgICAgICAgICAgICBtQmF0dGVyeUxldmVsID0gYmF0dGVyeUxldmVsOworICAgICAgICAgICAgbURldmljZVBsdWdnZWRJbiA9IHBsdWdnZWRJbjsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbUluZm9DYWxsYmFja3Muc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgICAgICBtSW5mb0NhbGxiYWNrcy5nZXQoaSkub25SZWZyZXNoQmF0dGVyeUluZm8oCisgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGRTaG93QmF0dGVyeUluZm8oKSwgcGx1Z2dlZEluLCBiYXR0ZXJ5TGV2ZWwpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogSGFuZGxlIHtAbGluayAjTVNHX0NBUlJJRVJfSU5GT19VUERBVEV9CisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIGhhbmRsZUNhcnJpZXJJbmZvVXBkYXRlKCkgeworICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgImhhbmRsZUNhcnJpZXJJbmZvVXBkYXRlOiBwbG1uID0gIiArIG1UZWxlcGhvbnlQbG1uCisgICAgICAgICAgICArICIsIHNwbiA9ICIgKyBtVGVsZXBob255U3BuKTsKKworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1JbmZvQ2FsbGJhY2tzLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICBtSW5mb0NhbGxiYWNrcy5nZXQoaSkub25SZWZyZXNoQ2FycmllckluZm8obVRlbGVwaG9ueVBsbW4sIG1UZWxlcGhvbnlTcG4pOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogSGFuZGxlIHtAbGluayAjTVNHX1NJTV9TVEFURV9DSEFOR0V9CisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIGhhbmRsZVNpbVN0YXRlQ2hhbmdlKFNpbUFyZ3Mgc2ltQXJncykgeworICAgICAgICBmaW5hbCBJY2NDYXJkLlN0YXRlIHN0YXRlID0gc2ltQXJncy5zaW1TdGF0ZTsKKworICAgICAgICBpZiAoREVCVUcpIHsKKyAgICAgICAgICAgIExvZy5kKFRBRywgImhhbmRsZVNpbVN0YXRlQ2hhbmdlOiBpbnRlbnRWYWx1ZSA9ICIgKyBzaW1BcmdzICsgIiAiCisgICAgICAgICAgICAgICAgICAgICsgInN0YXRlIHJlc29sdmVkIHRvICIgKyBzdGF0ZS50b1N0cmluZygpKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzdGF0ZSAhPSBJY2NDYXJkLlN0YXRlLlVOS05PV04gJiYgc3RhdGUgIT0gbVNpbVN0YXRlKSB7CisgICAgICAgICAgICBtU2ltU3RhdGUgPSBzdGF0ZTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbVNpbVN0YXRlQ2FsbGJhY2tzLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgbVNpbVN0YXRlQ2FsbGJhY2tzLmdldChpKS5vblNpbVN0YXRlQ2hhbmdlZChzdGF0ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gc3RhdHVzIE9uZSBvZiB0aGUgc3RhdHVzZXMgb2Yge0BsaW5rIGFuZHJvaWQub3MuQmF0dGVyeU1hbmFnZXJ9CisgICAgICogQHJldHVybiBXaGV0aGVyIHRoZSBzdGF0dXMgbWFwcyB0byBhIHN0YXR1cyBmb3IgYmVpbmcgcGx1Z2dlZCBpbi4KKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gaXNQbHVnZ2VkSW4oaW50IHN0YXR1cykgeworICAgICAgICByZXR1cm4gc3RhdHVzID09IEJBVFRFUllfU1RBVFVTX0NIQVJHSU5HIHx8IHN0YXR1cyA9PSBCQVRURVJZX1NUQVRVU19GVUxMOworICAgIH0KKworICAgIHByaXZhdGUgYm9vbGVhbiBpc0JhdHRlcnlVcGRhdGVJbnRlcmVzdGluZyhib29sZWFuIHBsdWdnZWRJbiwgaW50IGJhdHRlcnlMZXZlbCkgeworICAgICAgICAvLyBjaGFuZ2UgaW4gcGx1ZyBpcyBhbHdheXMgaW50ZXJlc3RpbmcKKyAgICAgICAgaWYgKG1EZXZpY2VQbHVnZ2VkSW4gIT0gcGx1Z2dlZEluKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGNoYW5nZSBpbiBiYXR0ZXJ5IGxldmVsIHdoaWxlIHBsdWdnZWQgaW4KKyAgICAgICAgaWYgKHBsdWdnZWRJbiAmJiBtQmF0dGVyeUxldmVsICE9IGJhdHRlcnlMZXZlbCkgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIXBsdWdnZWRJbikgeworICAgICAgICAgICAgLy8gbm90IHBsdWdnZWQgaW4gYW5kIGJlbG93IHRocmVzaG9sZAorICAgICAgICAgICAgaWYgKGJhdHRlcnlMZXZlbCA8IExPV19CQVRURVJZX1RIUkVTSE9MRCAmJiBiYXR0ZXJ5TGV2ZWwgIT0gbUJhdHRlcnlMZXZlbCkgeworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gaW50ZW50IFRoZSBpbnRlbnQgd2l0aCBhY3Rpb24ge0BsaW5rIFRlbGVwaG9ueS5JbnRlbnRzI1NQTl9TVFJJTkdTX1VQREFURURfQUNUSU9OfQorICAgICAqIEByZXR1cm4gVGhlIHN0cmluZyB0byB1c2UgZm9yIHRoZSBwbG1uLCBvciBudWxsIGlmIGl0IHNob3VsZCBub3QgYmUgc2hvd24uCisgICAgICovCisgICAgcHJpdmF0ZSBDaGFyU2VxdWVuY2UgZ2V0VGVsZXBob255UGxtbkZyb20oSW50ZW50IGludGVudCkgeworICAgICAgICBpZiAoaW50ZW50LmdldEJvb2xlYW5FeHRyYShFWFRSQV9TSE9XX1BMTU4sIGZhbHNlKSkgeworICAgICAgICAgICAgZmluYWwgU3RyaW5nIHBsbW4gPSBpbnRlbnQuZ2V0U3RyaW5nRXh0cmEoRVhUUkFfUExNTik7CisgICAgICAgICAgICBpZiAocGxtbiAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHBsbW47CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiBnZXREZWZhdWx0UGxtbigpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIC8qKgorICAgICAqIEByZXR1cm4gVGhlIGRlZmF1bHQgcGxtbiAobm8gc2VydmljZSkKKyAgICAgKi8KKyAgICBwcml2YXRlIENoYXJTZXF1ZW5jZSBnZXREZWZhdWx0UGxtbigpIHsKKyAgICAgICAgcmV0dXJuIG1Db250ZXh0LmdldFJlc291cmNlcygpLmdldFRleHQoCisgICAgICAgICAgICAgICAgICAgICAgICBSLnN0cmluZy5sb2Nrc2NyZWVuX2NhcnJpZXJfZGVmYXVsdCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQHBhcmFtIGludGVudCBUaGUgaW50ZW50IHdpdGggYWN0aW9uIHtAbGluayBUZWxlcGhvbnkuSW50ZW50cyNTUE5fU1RSSU5HU19VUERBVEVEX0FDVElPTn0KKyAgICAgKiBAcmV0dXJuIFRoZSBzdHJpbmcgdG8gdXNlIGZvciB0aGUgcGxtbiwgb3IgbnVsbCBpZiBpdCBzaG91bGQgbm90IGJlIHNob3duLgorICAgICAqLworICAgIHByaXZhdGUgQ2hhclNlcXVlbmNlIGdldFRlbGVwaG9ueVNwbkZyb20oSW50ZW50IGludGVudCkgeworICAgICAgICBpZiAoaW50ZW50LmdldEJvb2xlYW5FeHRyYShFWFRSQV9TSE9XX1NQTiwgZmFsc2UpKSB7CisgICAgICAgICAgICBmaW5hbCBTdHJpbmcgc3BuID0gaW50ZW50LmdldFN0cmluZ0V4dHJhKEVYVFJBX1NQTik7CisgICAgICAgICAgICBpZiAoc3BuICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3BuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJlbW92ZSB0aGUgZ2l2ZW4gb2JzZXJ2ZXIgZnJvbSBiZWluZyByZWdpc3RlcmVkIGZyb20gYW55IG9mIHRoZSBraW5kcworICAgICAqIG9mIGNhbGxiYWNrcy4KKyAgICAgKiBAcGFyYW0gb2JzZXJ2ZXIgVGhlIG9ic2VydmVyIHRvIHJlbW92ZSAoYW4gaW5zdGFuY2Ugb2Yge0BsaW5rIENvbmZpZ3VyYXRpb25DaGFuZ2VDYWxsYmFja30sCisgICAgICogICB7QGxpbmsgSW5mb0NhbGxiYWNrfSBvciB7QGxpbmsgU2ltU3RhdGVDYWxsYmFja30KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCByZW1vdmVDYWxsYmFjayhPYmplY3Qgb2JzZXJ2ZXIpIHsKKyAgICAgICAgbUluZm9DYWxsYmFja3MucmVtb3ZlKG9ic2VydmVyKTsKKyAgICAgICAgbVNpbVN0YXRlQ2FsbGJhY2tzLnJlbW92ZShvYnNlcnZlcik7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ2FsbGJhY2sgZm9yIGdlbmVyYWwgaW5mb3JtYXRpb24gcmVsZXZhbnQgdG8gbG9jayBzY3JlZW4uCisgICAgICovCisgICAgaW50ZXJmYWNlIEluZm9DYWxsYmFjayB7CisgICAgICAgIHZvaWQgb25SZWZyZXNoQmF0dGVyeUluZm8oYm9vbGVhbiBzaG93QmF0dGVyeUluZm8sIGJvb2xlYW4gcGx1Z2dlZEluLCBpbnQgYmF0dGVyeUxldmVsKTsKKyAgICAgICAgdm9pZCBvblRpbWVDaGFuZ2VkKCk7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIEBwYXJhbSBwbG1uIFRoZSBvcGVyYXRvciBuYW1lIG9mIHRoZSByZWdpc3RlcmVkIG5ldHdvcmsuICBNYXkgYmUgbnVsbCBpZiBpdCBzaG91bGRuJ3QKKyAgICAgICAgICogICBiZSBkaXNwbGF5ZWQuCisgICAgICAgICAqIEBwYXJhbSBzcG4gVGhlIHNlcnZpY2UgcHJvdmlkZXIgbmFtZS4gIE1heSBiZSBudWxsIGlmIGl0IHNob3VsZG4ndCBiZSBkaXNwbGF5ZWQuCisgICAgICAgICAqLworICAgICAgICB2b2lkIG9uUmVmcmVzaENhcnJpZXJJbmZvKENoYXJTZXF1ZW5jZSBwbG1uLCBDaGFyU2VxdWVuY2Ugc3BuKTsKKworICAgICAgICAvKioKKyAgICAgICAgICogQ2FsbGVkIHdoZW4gdGhlIHJpbmdlciBtb2RlIGNoYW5nZXMuCisgICAgICAgICAqIEBwYXJhbSBzdGF0ZSB0aGUgY3VycmVudCByaW5nZXIgc3RhdGUsIGFzIGRlZmluZWQgaW4KKyAgICAgICAgICoge0BsaW5rIEF1ZGlvTWFuYWdlciNSSU5HRVJfTU9ERV9DSEFOR0VEX0FDVElPTn0KKyAgICAgICAgICovCisgICAgICAgIHZvaWQgb25SaW5nZXJNb2RlQ2hhbmdlZChpbnQgc3RhdGUpOworCisgICAgICAgIC8qKgorICAgICAgICAgKiBDYWxsZWQgd2hlbiB0aGUgcGhvbmUgc3RhdGUgY2hhbmdlcy4gU3RyaW5nIHdpbGwgYmUgb25lIG9mOgorICAgICAgICAgKiB7QGxpbmsgVGVsZXBob255TWFuYWdlciNFWFRSQV9TVEFURV9JRExFfQorICAgICAgICAgKiB7QGxpbmsgVGVsZXBob255TWFuYWdlckBFWFRSQV9TVEFURV9SSU5HSU5HfQorICAgICAgICAgKiB7QGxpbmsgVGVsZXBob255TWFuYWdlciNFWFRSQV9TVEFURV9PRkZIT09LCisgICAgICAgICAqLworICAgICAgICB2b2lkIG9uUGhvbmVTdGF0ZUNoYW5nZWQoU3RyaW5nIG5ld1N0YXRlKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDYWxsYmFjayB0byBub3RpZnkgb2Ygc2ltIHN0YXRlIGNoYW5nZS4KKyAgICAgKi8KKyAgICBpbnRlcmZhY2UgU2ltU3RhdGVDYWxsYmFjayB7CisgICAgICAgIHZvaWQgb25TaW1TdGF0ZUNoYW5nZWQoSWNjQ2FyZC5TdGF0ZSBzaW1TdGF0ZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVnaXN0ZXIgdG8gcmVjZWl2ZSBub3RpZmljYXRpb25zIGFib3V0IGdlbmVyYWwga2V5Z3VhcmQgaW5mb3JtYXRpb24KKyAgICAgKiAoc2VlIHtAbGluayBJbmZvQ2FsbGJhY2t9LgorICAgICAqIEBwYXJhbSBjYWxsYmFjayBUaGUgY2FsbGJhY2suCisgICAgICovCisgICAgcHVibGljIHZvaWQgcmVnaXN0ZXJJbmZvQ2FsbGJhY2soSW5mb0NhbGxiYWNrIGNhbGxiYWNrKSB7CisgICAgICAgIGlmICghbUluZm9DYWxsYmFja3MuY29udGFpbnMoY2FsbGJhY2spKSB7CisgICAgICAgICAgICBtSW5mb0NhbGxiYWNrcy5hZGQoY2FsbGJhY2spOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgTG9nLmUoVEFHLCAiT2JqZWN0IHRyaWVkIHRvIGFkZCBhbm90aGVyIElORk8gY2FsbGJhY2siLCBuZXcgRXhjZXB0aW9uKCJXaG9vcHMiKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZWdpc3RlciB0byBiZSBub3RpZmllZCBvZiBzaW0gc3RhdGUgY2hhbmdlcy4KKyAgICAgKiBAcGFyYW0gY2FsbGJhY2sgVGhlIGNhbGxiYWNrLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHJlZ2lzdGVyU2ltU3RhdGVDYWxsYmFjayhTaW1TdGF0ZUNhbGxiYWNrIGNhbGxiYWNrKSB7CisgICAgICAgIGlmICghbVNpbVN0YXRlQ2FsbGJhY2tzLmNvbnRhaW5zKGNhbGxiYWNrKSkgeworICAgICAgICAgICAgbVNpbVN0YXRlQ2FsbGJhY2tzLmFkZChjYWxsYmFjayk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBMb2cuZShUQUcsICJPYmplY3QgdHJpZWQgdG8gYWRkIGFub3RoZXIgU0lNIGNhbGxiYWNrIiwgbmV3IEV4Y2VwdGlvbigiV2hvb3BzIikpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIEljY0NhcmQuU3RhdGUgZ2V0U2ltU3RhdGUoKSB7CisgICAgICAgIHJldHVybiBtU2ltU3RhdGU7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVwb3J0IHRoYXQgdGhlIHVzZXIgc3VjY2VzZnVsbHkgZW50ZXJlZCB0aGUgc2ltIHBpbiBzbyB3ZQorICAgICAqIGhhdmUgdGhlIGluZm9ybWF0aW9uIGVhcmxpZXIgdGhhbiB3YWl0aW5nIGZvciB0aGUgaW50ZW50CisgICAgICogYnJvYWRjYXN0IGZyb20gdGhlIHRlbGVwaG9ueSBjb2RlLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHJlcG9ydFNpbVBpblVubG9ja2VkKCkgeworICAgICAgICBtU2ltU3RhdGUgPSBJY2NDYXJkLlN0YXRlLlJFQURZOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGlzS2V5Z3VhcmRCeXBhc3NFbmFibGVkKCkgeworICAgICAgICByZXR1cm4gbUtleWd1YXJkQnlwYXNzRW5hYmxlZDsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBpc0RldmljZVBsdWdnZWRJbigpIHsKKyAgICAgICAgcmV0dXJuIG1EZXZpY2VQbHVnZ2VkSW47CisgICAgfQorCisgICAgcHVibGljIGludCBnZXRCYXR0ZXJ5TGV2ZWwoKSB7CisgICAgICAgIHJldHVybiBtQmF0dGVyeUxldmVsOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIHNob3VsZFNob3dCYXR0ZXJ5SW5mbygpIHsKKyAgICAgICAgcmV0dXJuIG1EZXZpY2VQbHVnZ2VkSW4gfHwgbUJhdHRlcnlMZXZlbCA8IExPV19CQVRURVJZX1RIUkVTSE9MRDsKKyAgICB9CisKKyAgICBwdWJsaWMgQ2hhclNlcXVlbmNlIGdldFRlbGVwaG9ueVBsbW4oKSB7CisgICAgICAgIHJldHVybiBtVGVsZXBob255UGxtbjsKKyAgICB9CisKKyAgICBwdWJsaWMgQ2hhclNlcXVlbmNlIGdldFRlbGVwaG9ueVNwbigpIHsKKyAgICAgICAgcmV0dXJuIG1UZWxlcGhvbnlTcG47CisgICAgfQorCisgICAgLyoqCisgICAgICogQHJldHVybiBXaGV0aGVyIHRoZSBkZXZpY2UgaXMgcHJvdmlzaW9uZWQgKHdoZXRoZXIgdGhleSBoYXZlIGdvbmUgdGhyb3VnaAorICAgICAqICAgdGhlIHNldHVwIHdpemFyZCkKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBpc0RldmljZVByb3Zpc2lvbmVkKCkgeworICAgICAgICByZXR1cm4gbURldmljZVByb3Zpc2lvbmVkOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgZ2V0RmFpbGVkQXR0ZW1wdHMoKSB7CisgICAgICAgIHJldHVybiBtRmFpbGVkQXR0ZW1wdHM7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgY2xlYXJGYWlsZWRBdHRlbXB0cygpIHsKKyAgICAgICAgbUZhaWxlZEF0dGVtcHRzID0gMDsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCByZXBvcnRGYWlsZWRBdHRlbXB0KCkgeworICAgICAgICBtRmFpbGVkQXR0ZW1wdHMrKzsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL0tleWd1YXJkVmlld0Jhc2UuamF2YSBiL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvS2V5Z3VhcmRWaWV3QmFzZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkY2JjYjYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL0tleWd1YXJkVmlld0Jhc2UuamF2YQpAQCAtMCwwICsxLDIwOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGw7CisKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50OworaW1wb3J0IGFuZHJvaWQubWVkaWEuQXVkaW9NYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQudGVsZXBob255LlRlbGVwaG9ueU1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC52aWV3LktleUV2ZW50OworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OworaW1wb3J0IGFuZHJvaWQudmlldy5HcmF2aXR5OworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkZyYW1lTGF5b3V0OworaW1wb3J0IGFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQ7CisKKy8qKgorICogQmFzZSBjbGFzcyBmb3Iga2V5Z3VhcmQgdmlld3MuICB7QGxpbmsgI3Jlc2V0fSBpcyB3aGVyZSB5b3Ugc2hvdWxkCisgKiByZXNldCB0aGUgc3RhdGUgb2YgeW91ciB2aWV3LiAgVXNlIHRoZSB7QGxpbmsgS2V5Z3VhcmRWaWV3Q2FsbGJhY2t9IHZpYQorICoge0BsaW5rICNnZXRDYWxsYmFjaygpfSB0byBzZW5kIGluZm9ybWF0aW9uIGJhY2sgKHN1Y2ggYXMgcG9raW5nIHRoZSB3YWtlIGxvY2ssCisgKiBvciBmaW5pc2hpbmcgdGhlIGtleWd1YXJkKS4KKyAqCisgKiBIYW5kbGVzIGludGVyY2VwdGluZyBvZiBtZWRpYSBrZXlzIHRoYXQgc3RpbGwgd29yayB3aGVuIHRoZSBrZXlndWFyZCBpcworICogc2hvd2luZy4KKyAqLworcHVibGljIGFic3RyYWN0IGNsYXNzIEtleWd1YXJkVmlld0Jhc2UgZXh0ZW5kcyBGcmFtZUxheW91dCB7CisKKyAgICBwcml2YXRlIEtleWd1YXJkVmlld0NhbGxiYWNrIG1DYWxsYmFjazsKKyAgICBwcml2YXRlIEF1ZGlvTWFuYWdlciBtQXVkaW9NYW5hZ2VyOworICAgIHByaXZhdGUgVGVsZXBob255TWFuYWdlciBtVGVsZXBob255TWFuYWdlciA9IG51bGw7CisKKyAgICBwdWJsaWMgS2V5Z3VhcmRWaWV3QmFzZShDb250ZXh0IGNvbnRleHQpIHsKKyAgICAgICAgc3VwZXIoY29udGV4dCk7CisKKyAgICAgICAgLy8gZHJvcCBzaGFkb3cgYmVsb3cgc3RhdHVzIGJhciBpbiBrZXlndWFyZCB0b28KKyAgICAgICAgbUZvcmVncm91bmRJblBhZGRpbmcgPSBmYWxzZTsKKyAgICAgICAgc2V0Rm9yZWdyb3VuZEdyYXZpdHkoR3Jhdml0eS5GSUxMX0hPUklaT05UQUwgfCBHcmF2aXR5LlRPUCk7CisgICAgICAgIHNldEZvcmVncm91bmQoCisgICAgICAgICAgICAgICAgY29udGV4dC5nZXRSZXNvdXJjZXMoKS5nZXREcmF3YWJsZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUudGl0bGVfYmFyX3NoYWRvdykpOworICAgIH0KKworICAgIC8vIHVzZWQgdG8gaW5qZWN0IGNhbGxiYWNrCisgICAgdm9pZCBzZXRDYWxsYmFjayhLZXlndWFyZFZpZXdDYWxsYmFjayBjYWxsYmFjaykgeworICAgICAgICBtQ2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICB9CisKKyAgICBwdWJsaWMgS2V5Z3VhcmRWaWV3Q2FsbGJhY2sgZ2V0Q2FsbGJhY2soKSB7CisgICAgICAgIHJldHVybiBtQ2FsbGJhY2s7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ2FsbGVkIHdoZW4geW91IG5lZWQgdG8gcmVzZXQgdGhlIHN0YXRlIG9mIHlvdXIgdmlldy4KKyAgICAgKi8KKyAgICBhYnN0cmFjdCBwdWJsaWMgdm9pZCByZXNldCgpOworCisgICAgLyoqCisgICAgICogQ2FsbGVkIHdoZW4gdGhlIHNjcmVlbiB0dXJuZWQgb2ZmLgorICAgICAqLworICAgIGFic3RyYWN0IHB1YmxpYyB2b2lkIG9uU2NyZWVuVHVybmVkT2ZmKCk7CisKKyAgICAvKioKKyAgICAgKiBDYWxsZWQgd2hlbiB0aGUgc2NyZWVuIHR1cm5lZCBvbi4KKyAgICAgKi8KKyAgICBhYnN0cmFjdCBwdWJsaWMgdm9pZCBvblNjcmVlblR1cm5lZE9uKCk7CisKKyAgICAvKioKKyAgICAgKiBDYWxsZWQgd2hlbiBhIGtleSBoYXMgd29rZW4gdGhlIGRldmljZSB0byBnaXZlIHVzIGEgY2hhbmNlIHRvIGFkanVzdCBvdXIKKyAgICAgKiBzdGF0ZSBhY2NvcmRpbmcgdGhlIHRoZSBrZXkuICBXZSBhcmUgcmVzcG9uc2libGUgZm9yIHdha2luZyB0aGUgZGV2aWNlCisgICAgICogKGJ5IHBva2luZyB0aGUgd2FrZSBsb2NrKSBvbmNlIHdlIGFyZSByZWFkeS4KKyAgICAgKgorICAgICAqIFRoZSAnVHEnIHN1ZmZpeCBpcyBwZXIgdGhlIGRvY3VtZW50YXRpb24gaW4ge0BsaW5rIGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyUG9saWN5fS4KKyAgICAgKiBCZSBzdXJlIG5vdCB0byB0YWtlIGFueSBhY3Rpb24gdGhhdCB0YWtlcyBhIGxvbmcgdGltZTsgYW55IHNpZ25pZmljYW50CisgICAgICogYWN0aW9uIHNob3VsZCBiZSBwb3N0ZWQgdG8gYSBoYW5kbGVyLgorICAgICAqCisgICAgICogQHBhcmFtIGtleUNvZGUgVGhlIHdha2Uga2V5LCB3aGljaCBtYXkgYmUgcmVsZXZhbnQgZm9yIGNvbmZpZ3VyaW5nIHRoZQorICAgICAqICAga2V5Z3VhcmQuCisgICAgICovCisgICAgYWJzdHJhY3QgcHVibGljIHZvaWQgd2FrZVdoZW5SZWFkeVRxKGludCBrZXlDb2RlKTsKKworICAgIC8qKgorICAgICAqIFZlcmlmeSB0aGF0IHRoZSB1c2VyIGNhbiBnZXQgcGFzdCB0aGUga2V5Z3VhcmQgc2VjdXJlbHkuICBUaGlzIGlzIGNhbGxlZCwKKyAgICAgKiBmb3IgZXhhbXBsZSwgd2hlbiB0aGUgcGhvbmUgZGlzYWJsZXMgdGhlIGtleWd1YXJkIGJ1dCB0aGVuIHdhbnRzIHRvIGxhdW5jaAorICAgICAqIHNvbWV0aGluZyBlbHNlIHRoYXQgcmVxdWlyZXMgc2VjdXJlIGFjY2Vzcy4KKyAgICAgKgorICAgICAqIFRoZSByZXN1bHQgd2lsbCBiZSBwcm9wb2dhdGVkIGJhY2sgdmlhIHtAbGluayBLZXlndWFyZFZpZXdDYWxsYmFjayNrZXlndWFyZERvbmUoYm9vbGVhbil9CisgICAgICovCisgICAgYWJzdHJhY3QgcHVibGljIHZvaWQgdmVyaWZ5VW5sb2NrKCk7CisKKyAgICAvKioKKyAgICAgKiBDYWxsZWQgYmVmb3JlIHRoaXMgdmlldyBpcyBiZWluZyByZW1vdmVkLgorICAgICAqLworICAgIGFic3RyYWN0IHB1YmxpYyB2b2lkIGNsZWFuVXAoKTsKKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBib29sZWFuIGRpc3BhdGNoS2V5RXZlbnQoS2V5RXZlbnQgZXZlbnQpIHsKKyAgICAgICAgaWYgKHNob3VsZEV2ZW50S2VlcFNjcmVlbk9uV2hpbGVLZXlndWFyZFNob3dpbmcoZXZlbnQpKSB7CisgICAgICAgICAgICBtQ2FsbGJhY2sucG9rZVdha2Vsb2NrKCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaW50ZXJjZXB0TWVkaWFLZXkoZXZlbnQpKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc3VwZXIuZGlzcGF0Y2hLZXlFdmVudChldmVudCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBib29sZWFuIHNob3VsZEV2ZW50S2VlcFNjcmVlbk9uV2hpbGVLZXlndWFyZFNob3dpbmcoS2V5RXZlbnQgZXZlbnQpIHsKKyAgICAgICAgaWYgKGV2ZW50LmdldEFjdGlvbigpICE9IEtleUV2ZW50LkFDVElPTl9ET1dOKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgc3dpdGNoIChldmVudC5nZXRLZXlDb2RlKCkpIHsKKyAgICAgICAgICAgIGNhc2UgS2V5RXZlbnQuS0VZQ09ERV9EUEFEX0RPV046CisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfRFBBRF9MRUZUOgorICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5LRVlDT0RFX0RQQURfUklHSFQ6CisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfRFBBRF9VUDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQWxsb3dzIHRoZSBtZWRpYSBrZXlzIHRvIHdvcmsgd2hlbiB0aGUga2V5Z3VhcmQgaXMgc2hvd2luZy4KKyAgICAgKiBUaGUgbWVkaWEga2V5cyBzaG91bGQgYmUgb2Ygbm8gaW50ZXJlc3QgdG8gdGhlIGFjdHVhbCBrZXlndWFyZCB2aWV3KHMpLAorICAgICAqIHNvIGludGVyY2VwdGluZyB0aGVtIGhlcmUgc2hvdWxkIG5vdCBiZSBvZiBhbnkgaGFybS4KKyAgICAgKiBAcGFyYW0gZXZlbnQgVGhlIGtleSBldmVudAorICAgICAqIEByZXR1cm4gd2hldGhlciB0aGUgZXZlbnQgd2FzIGNvbnN1bWVkIGFzIGEgbWVkaWEga2V5LgorICAgICAqLworICAgIHByaXZhdGUgYm9vbGVhbiBpbnRlcmNlcHRNZWRpYUtleShLZXlFdmVudCBldmVudCkgeworICAgICAgICBmaW5hbCBpbnQga2V5Q29kZSA9IGV2ZW50LmdldEtleUNvZGUoKTsKKyAgICAgICAgaWYgKGV2ZW50LmdldEFjdGlvbigpID09IEtleUV2ZW50LkFDVElPTl9ET1dOKSB7CisgICAgICAgICAgICBzd2l0Y2ggKGtleUNvZGUpIHsKKyAgICAgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfTUVESUFfUExBWV9QQVVTRToKKyAgICAgICAgICAgICAgICAgICAgLyogU3VwcHJlc3MgUExBWVBBVVNFIHRvZ2dsZSB3aGVuIHBob25lIGlzIHJpbmdpbmcgb3IKKyAgICAgICAgICAgICAgICAgICAgICogaW4tY2FsbCB0byBhdm9pZCBtdXNpYyBwbGF5YmFjayAqLworICAgICAgICAgICAgICAgICAgICBpZiAobVRlbGVwaG9ueU1hbmFnZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbVRlbGVwaG9ueU1hbmFnZXIgPSAoVGVsZXBob255TWFuYWdlcikgZ2V0Q29udGV4dCgpLmdldFN5c3RlbVNlcnZpY2UoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRleHQuVEVMRVBIT05ZX1NFUlZJQ0UpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChtVGVsZXBob255TWFuYWdlciAhPSBudWxsICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVRlbGVwaG9ueU1hbmFnZXIuZ2V0Q2FsbFN0YXRlKCkgIT0gVGVsZXBob255TWFuYWdlci5DQUxMX1NUQVRFX0lETEUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOyAgLy8gc3VwcHJlc3Mga2V5IGV2ZW50CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfSEVBRFNFVEhPT0s6IAorICAgICAgICAgICAgICAgIGNhc2UgS2V5RXZlbnQuS0VZQ09ERV9NRURJQV9TVE9QOiAKKyAgICAgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfTUVESUFfTkVYVDogCisgICAgICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5LRVlDT0RFX01FRElBX1BSRVZJT1VTOiAKKyAgICAgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfTUVESUFfUkVXSU5EOiAKKyAgICAgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfTUVESUFfRkFTVF9GT1JXQVJEOiB7CisgICAgICAgICAgICAgICAgICAgIEludGVudCBpbnRlbnQgPSBuZXcgSW50ZW50KEludGVudC5BQ1RJT05fTUVESUFfQlVUVE9OLCBudWxsKTsKKyAgICAgICAgICAgICAgICAgICAgaW50ZW50LnB1dEV4dHJhKEludGVudC5FWFRSQV9LRVlfRVZFTlQsIGV2ZW50KTsKKyAgICAgICAgICAgICAgICAgICAgZ2V0Q29udGV4dCgpLnNlbmRPcmRlcmVkQnJvYWRjYXN0KGludGVudCwgbnVsbCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGNhc2UgS2V5RXZlbnQuS0VZQ09ERV9WT0xVTUVfVVA6CisgICAgICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5LRVlDT0RFX1ZPTFVNRV9ET1dOOiB7CisgICAgICAgICAgICAgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1BdWRpb01hbmFnZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1BdWRpb01hbmFnZXIgPSAoQXVkaW9NYW5hZ2VyKSBnZXRDb250ZXh0KCkuZ2V0U3lzdGVtU2VydmljZSgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRleHQuQVVESU9fU0VSVklDRSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgLy8gVm9sdW1lIGJ1dHRvbnMgc2hvdWxkIG9ubHkgZnVuY3Rpb24gZm9yIG11c2ljLgorICAgICAgICAgICAgICAgICAgICBpZiAobUF1ZGlvTWFuYWdlci5pc011c2ljQWN0aXZlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1BdWRpb01hbmFnZXIuYWRqdXN0U3RyZWFtVm9sdW1lKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXVkaW9NYW5hZ2VyLlNUUkVBTV9NVVNJQywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleUNvZGUgPT0gS2V5RXZlbnQuS0VZQ09ERV9WT0xVTUVfVVAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBBdWRpb01hbmFnZXIuQURKVVNUX1JBSVNFCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogQXVkaW9NYW5hZ2VyLkFESlVTVF9MT1dFUiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIC8vIERvbid0IGV4ZWN1dGUgZGVmYXVsdCB2b2x1bWUgYmVoYXZpb3IKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmdldEFjdGlvbigpID09IEtleUV2ZW50LkFDVElPTl9VUCkgeworICAgICAgICAgICAgc3dpdGNoIChrZXlDb2RlKSB7CisgICAgICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5LRVlDT0RFX01VVEU6CisgICAgICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5LRVlDT0RFX0hFQURTRVRIT09LOiAKKyAgICAgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfTUVESUFfUExBWV9QQVVTRTogCisgICAgICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5LRVlDT0RFX01FRElBX1NUT1A6IAorICAgICAgICAgICAgICAgIGNhc2UgS2V5RXZlbnQuS0VZQ09ERV9NRURJQV9ORVhUOiAKKyAgICAgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfTUVESUFfUFJFVklPVVM6IAorICAgICAgICAgICAgICAgIGNhc2UgS2V5RXZlbnQuS0VZQ09ERV9NRURJQV9SRVdJTkQ6IAorICAgICAgICAgICAgICAgIGNhc2UgS2V5RXZlbnQuS0VZQ09ERV9NRURJQV9GQVNUX0ZPUldBUkQ6IHsKKyAgICAgICAgICAgICAgICAgICAgSW50ZW50IGludGVudCA9IG5ldyBJbnRlbnQoSW50ZW50LkFDVElPTl9NRURJQV9CVVRUT04sIG51bGwpOworICAgICAgICAgICAgICAgICAgICBpbnRlbnQucHV0RXh0cmEoSW50ZW50LkVYVFJBX0tFWV9FVkVOVCwgZXZlbnQpOworICAgICAgICAgICAgICAgICAgICBnZXRDb250ZXh0KCkuc2VuZE9yZGVyZWRCcm9hZGNhc3QoaW50ZW50LCBudWxsKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvS2V5Z3VhcmRWaWV3Q2FsbGJhY2suamF2YSBiL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvS2V5Z3VhcmRWaWV3Q2FsbGJhY2suamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzc2ZDY1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9LZXlndWFyZFZpZXdDYWxsYmFjay5qYXZhCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLmludGVybmFsLnBvbGljeS5pbXBsOworCisvKioKKyAqIFRoZSBjYWxsYmFjayB1c2VkIGJ5IHRoZSBrZXlndWFyZCB2aWV3IHRvIHRlbGwgdGhlIHtAbGluayBLZXlndWFyZFZpZXdNZWRpYXRvcn0gCisgKiB2YXJpb3VzIHRoaW5ncy4KKyAqLworcHVibGljIGludGVyZmFjZSBLZXlndWFyZFZpZXdDYWxsYmFjayB7CisKKyAgICAvKioKKyAgICAgKiBSZXF1ZXN0IHRoZSB3YWtlbG9jayB0byBiZSBwb2tlZCBmb3IgdGhlIGRlZmF1bHQgYW1vdW50IG9mIHRpbWUuCisgICAgICovCisgICAgdm9pZCBwb2tlV2FrZWxvY2soKTsKKworICAgIC8qKgorICAgICAqIFJlcXVlc3QgdGhlIHdha2Vsb2NrIHRvIGJlIHBva2VkIGZvciBhIHNwZWNpZmljIGFtb3VudCBvZiB0aW1lLgorICAgICAqIEBwYXJhbSBtaWxsaXMgVGhlIGFtb3VudCBvZiB0aW1lIGluIG1pbGxpcy4KKyAgICAgKi8KKyAgICB2b2lkIHBva2VXYWtlbG9jayhpbnQgbWlsbGlzKTsKKworICAgIC8qKgorICAgICAqIFJlcG9ydCB0aGF0IHRoZSBrZXlndWFyZCBpcyBkb25lLgorICAgICAqIEBwYXJhbSBhdXRoZW50aWNhdGVkIFdoZXRoZXIgdGhlIHVzZXIgc2VjdXJlbHkgZ290IHBhc3QgdGhlIGtleWd1YXJkLgorICAgICAqICAgdGhlIG9ubHkgcmVhc29uIGZvciB0aGlzIHRvIGJlIGZhbHNlIGlzIGlmIHRoZSBrZXlndWFyZCB3YXMgaW5zdHJ1Y3RlZAorICAgICAqICAgdG8gYXBwZWFyIHRlbXBvcmFyaWx5IHRvIHZlcmlmeSB0aGUgdXNlciBpcyBzdXBwb3NlZCB0byBnZXQgcGFzdCB0aGUKKyAgICAgKiAgIGtleWd1YXJkLCBhbmQgdGhlIHVzZXIgZmFpbHMgdG8gZG8gc28uCisgICAgICovCisgICAgdm9pZCBrZXlndWFyZERvbmUoYm9vbGVhbiBhdXRoZW50aWNhdGVkKTsKKworICAgIC8qKgorICAgICAqIFJlcG9ydCB0aGF0IHRoZSBrZXlndWFyZCBpcyBkb25lIGRyYXdpbmcuCisgICAgICovCisgICAgdm9pZCBrZXlndWFyZERvbmVEcmF3aW5nKCk7Cit9CmRpZmYgLS1naXQgYS9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL0tleWd1YXJkVmlld01hbmFnZXIuamF2YSBiL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvS2V5Z3VhcmRWaWV3TWFuYWdlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhMWQ3ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL0tleWd1YXJkVmlld01hbmFnZXIuamF2YQpAQCAtMCwwICsxLDI0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGw7CisKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SOworCitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLkFjdGl2aXR5SW5mbzsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLlBpeGVsRm9ybWF0OworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzOworaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CitpbXBvcnQgYW5kcm9pZC52aWV3LlZpZXc7CitpbXBvcnQgYW5kcm9pZC52aWV3LlZpZXdHcm91cDsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuVmlld01hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuRnJhbWVMYXlvdXQ7CisKKy8qKgorICogTWFuYWdlcyBjcmVhdGluZywgc2hvd2luZywgaGlkaW5nIGFuZCByZXNldHRpbmcgdGhlIGtleWd1YXJkLiAgQ2FsbHMgYmFjaworICogdmlhIHtAbGluayBjb20uYW5kcm9pZC5pbnRlcm5hbC5wb2xpY3kuaW1wbC5LZXlndWFyZFZpZXdDYWxsYmFja30gdG8gcG9rZQorICogdGhlIHdha2UgbG9jayBhbmQgcmVwb3J0IHRoYXQgdGhlIGtleWd1YXJkIGlzIGRvbmUsIHdoaWNoIGlzIGluIHR1cm4sCisgKiByZXBvcnRlZCB0byB0aGlzIGNsYXNzIGJ5IHRoZSBjdXJyZW50IHtAbGluayBLZXlndWFyZFZpZXdCYXNlfS4KKyAqLworcHVibGljIGNsYXNzIEtleWd1YXJkVmlld01hbmFnZXIgaW1wbGVtZW50cyBLZXlndWFyZFdpbmRvd0NvbnRyb2xsZXIgeworICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGJvb2xlYW4gREVCVUcgPSBmYWxzZTsKKyAgICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgVEFHID0gIktleWd1YXJkVmlld01hbmFnZXIiOworCisgICAgcHJpdmF0ZSBmaW5hbCBDb250ZXh0IG1Db250ZXh0OworICAgIHByaXZhdGUgZmluYWwgVmlld01hbmFnZXIgbVZpZXdNYW5hZ2VyOworICAgIHByaXZhdGUgZmluYWwgS2V5Z3VhcmRWaWV3Q2FsbGJhY2sgbUNhbGxiYWNrOworICAgIHByaXZhdGUgZmluYWwgS2V5Z3VhcmRWaWV3UHJvcGVydGllcyBtS2V5Z3VhcmRWaWV3UHJvcGVydGllczsKKworICAgIHByaXZhdGUgZmluYWwgS2V5Z3VhcmRVcGRhdGVNb25pdG9yIG1VcGRhdGVNb25pdG9yOworCisgICAgcHJpdmF0ZSBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcyBtV2luZG93TGF5b3V0UGFyYW1zOworICAgIHByaXZhdGUgYm9vbGVhbiBtTmVlZHNJbnB1dCA9IGZhbHNlOworCisgICAgcHJpdmF0ZSBGcmFtZUxheW91dCBtS2V5Z3VhcmRIb3N0OworICAgIHByaXZhdGUgS2V5Z3VhcmRWaWV3QmFzZSBtS2V5Z3VhcmRWaWV3OworCisgICAgcHJpdmF0ZSBib29sZWFuIG1TY3JlZW5PbiA9IGZhbHNlOworCisgICAgLyoqCisgICAgICogQHBhcmFtIGNvbnRleHQgVXNlZCB0byBjcmVhdGUgdmlld3MuCisgICAgICogQHBhcmFtIHZpZXdNYW5hZ2VyIEtleWd1YXJkIHdpbGwgYmUgYXR0YWNoZWQgdG8gdGhpcy4KKyAgICAgKiBAcGFyYW0gY2FsbGJhY2sgVXNlZCB0byBub3RpZnkgb2YgY2hhbmdlcy4KKyAgICAgKi8KKyAgICBwdWJsaWMgS2V5Z3VhcmRWaWV3TWFuYWdlcihDb250ZXh0IGNvbnRleHQsIFZpZXdNYW5hZ2VyIHZpZXdNYW5hZ2VyLAorICAgICAgICAgICAgS2V5Z3VhcmRWaWV3Q2FsbGJhY2sgY2FsbGJhY2ssIEtleWd1YXJkVmlld1Byb3BlcnRpZXMga2V5Z3VhcmRWaWV3UHJvcGVydGllcywgS2V5Z3VhcmRVcGRhdGVNb25pdG9yIHVwZGF0ZU1vbml0b3IpIHsKKyAgICAgICAgbUNvbnRleHQgPSBjb250ZXh0OworICAgICAgICBtVmlld01hbmFnZXIgPSB2aWV3TWFuYWdlcjsKKyAgICAgICAgbUNhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgICAgIG1LZXlndWFyZFZpZXdQcm9wZXJ0aWVzID0ga2V5Z3VhcmRWaWV3UHJvcGVydGllczsKKworICAgICAgICBtVXBkYXRlTW9uaXRvciA9IHVwZGF0ZU1vbml0b3I7CisgICAgfQorCisgICAgLyoqCisgICAgICogSGVscGVyIGNsYXNzIHRvIGhvc3QgdGhlIGtleWd1YXJkIHZpZXcuCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgS2V5Z3VhcmRWaWV3SG9zdCBleHRlbmRzIEZyYW1lTGF5b3V0IHsKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBLZXlndWFyZFZpZXdDYWxsYmFjayBtQ2FsbGJhY2s7CisKKyAgICAgICAgcHJpdmF0ZSBLZXlndWFyZFZpZXdIb3N0KENvbnRleHQgY29udGV4dCwgS2V5Z3VhcmRWaWV3Q2FsbGJhY2sgY2FsbGJhY2spIHsKKyAgICAgICAgICAgIHN1cGVyKGNvbnRleHQpOworICAgICAgICAgICAgbUNhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHJvdGVjdGVkIHZvaWQgZGlzcGF0Y2hEcmF3KENhbnZhcyBjYW52YXMpIHsKKyAgICAgICAgICAgIHN1cGVyLmRpc3BhdGNoRHJhdyhjYW52YXMpOworICAgICAgICAgICAgbUNhbGxiYWNrLmtleWd1YXJkRG9uZURyYXdpbmcoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFNob3cgdGhlIGtleWd1YXJkLiAgV2lsbCBoYW5kbGUgY3JlYXRpbmcgYW5kIGF0dGFjaGluZyB0byB0aGUgdmlldyBtYW5hZ2VyCisgICAgICogbGF6aWx5LgorICAgICAqLworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgdm9pZCBzaG93KCkgeworICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgInNob3coKTsgbUtleWd1YXJkVmlldz09IiArIG1LZXlndWFyZFZpZXcpOworCisgICAgICAgIGlmIChtS2V5Z3VhcmRIb3N0ID09IG51bGwpIHsKKyAgICAgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAia2V5Z3VhcmQgaG9zdCBpcyBudWxsLCBjcmVhdGluZyBpdC4uLiIpOworCisgICAgICAgICAgICBtS2V5Z3VhcmRIb3N0ID0gbmV3IEtleWd1YXJkVmlld0hvc3QobUNvbnRleHQsIG1DYWxsYmFjayk7CisKKyAgICAgICAgICAgIGZpbmFsIGludCBzdHJldGNoID0gVmlld0dyb3VwLkxheW91dFBhcmFtcy5NQVRDSF9QQVJFTlQ7CisgICAgICAgICAgICBpbnQgZmxhZ3MgPSBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX0ZPUkNFX05PVF9GVUxMU0NSRUVOCisgICAgICAgICAgICAgICAgICAgIHwgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19TSE9XX1dBTExQQVBFUgorICAgICAgICAgICAgICAgICAgICB8IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfS0VFUF9TVVJGQUNFX1dISUxFX0FOSU1BVElORworICAgICAgICAgICAgICAgICAgICAvKnwgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19MQVlPVVRfSU5fU0NSRUVOCisgICAgICAgICAgICAgICAgICAgIHwgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19MQVlPVVRfSU5TRVRfREVDT1IqLyA7CisgICAgICAgICAgICBpZiAoIW1OZWVkc0lucHV0KSB7CisgICAgICAgICAgICAgICAgZmxhZ3MgfD0gV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19BTFRfRk9DVVNBQkxFX0lNOworICAgICAgICAgICAgfQorICAgICAgICAgICAgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMgbHAgPSBuZXcgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMoCisgICAgICAgICAgICAgICAgICAgIHN0cmV0Y2gsIHN0cmV0Y2gsIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLlRZUEVfS0VZR1VBUkQsCisgICAgICAgICAgICAgICAgICAgIGZsYWdzLCBQaXhlbEZvcm1hdC5UUkFOU0xVQ0VOVCk7CisgICAgICAgICAgICBscC5zb2Z0SW5wdXRNb2RlID0gV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuU09GVF9JTlBVVF9BREpVU1RfUEFOOworICAgICAgICAgICAgbHAud2luZG93QW5pbWF0aW9ucyA9IGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGUuQW5pbWF0aW9uX0xvY2tTY3JlZW47CisgICAgICAgICAgICBscC5zY3JlZW5PcmllbnRhdGlvbiA9IEFjdGl2aXR5SW5mby5TQ1JFRU5fT1JJRU5UQVRJT05fTk9TRU5TT1I7CisgICAgICAgICAgICBscC5zZXRUaXRsZSgiS2V5Z3VhcmQiKTsKKyAgICAgICAgICAgIG1XaW5kb3dMYXlvdXRQYXJhbXMgPSBscDsKKworICAgICAgICAgICAgbVZpZXdNYW5hZ2VyLmFkZFZpZXcobUtleWd1YXJkSG9zdCwgbHApOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1LZXlndWFyZFZpZXcgPT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJrZXlndWFyZCB2aWV3IGlzIG51bGwsIGNyZWF0aW5nIGl0Li4uIik7CisgICAgICAgICAgICBtS2V5Z3VhcmRWaWV3ID0gbUtleWd1YXJkVmlld1Byb3BlcnRpZXMuY3JlYXRlS2V5Z3VhcmRWaWV3KG1Db250ZXh0LCBtVXBkYXRlTW9uaXRvciwgdGhpcyk7CisgICAgICAgICAgICBtS2V5Z3VhcmRWaWV3LnNldElkKFIuaWQubG9ja19zY3JlZW4pOworICAgICAgICAgICAgbUtleWd1YXJkVmlldy5zZXRDYWxsYmFjayhtQ2FsbGJhY2spOworCisgICAgICAgICAgICBmaW5hbCBWaWV3R3JvdXAuTGF5b3V0UGFyYW1zIGxwID0gbmV3IEZyYW1lTGF5b3V0LkxheW91dFBhcmFtcygKKyAgICAgICAgICAgICAgICAgICAgVmlld0dyb3VwLkxheW91dFBhcmFtcy5NQVRDSF9QQVJFTlQsCisgICAgICAgICAgICAgICAgICAgIFZpZXdHcm91cC5MYXlvdXRQYXJhbXMuTUFUQ0hfUEFSRU5UKTsKKworICAgICAgICAgICAgbUtleWd1YXJkSG9zdC5hZGRWaWV3KG1LZXlndWFyZFZpZXcsIGxwKTsKKworICAgICAgICAgICAgaWYgKG1TY3JlZW5PbikgeworICAgICAgICAgICAgICAgIG1LZXlndWFyZFZpZXcub25TY3JlZW5UdXJuZWRPbigpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgbUtleWd1YXJkSG9zdC5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7CisgICAgICAgIG1LZXlndWFyZFZpZXcucmVxdWVzdEZvY3VzKCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0TmVlZHNJbnB1dChib29sZWFuIG5lZWRzSW5wdXQpIHsKKyAgICAgICAgbU5lZWRzSW5wdXQgPSBuZWVkc0lucHV0OworICAgICAgICBpZiAobVdpbmRvd0xheW91dFBhcmFtcyAhPSBudWxsKSB7CisgICAgICAgICAgICBpZiAobmVlZHNJbnB1dCkgeworICAgICAgICAgICAgICAgIG1XaW5kb3dMYXlvdXRQYXJhbXMuZmxhZ3MgJj0KKyAgICAgICAgICAgICAgICAgICAgfldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfQUxUX0ZPQ1VTQUJMRV9JTTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbVdpbmRvd0xheW91dFBhcmFtcy5mbGFncyB8PQorICAgICAgICAgICAgICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX0FMVF9GT0NVU0FCTEVfSU07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtVmlld01hbmFnZXIudXBkYXRlVmlld0xheW91dChtS2V5Z3VhcmRIb3N0LCBtV2luZG93TGF5b3V0UGFyYW1zKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFJlc2V0IHRoZSBzdGF0ZSBvZiB0aGUgdmlldy4KKyAgICAgKi8KKyAgICBwdWJsaWMgc3luY2hyb25pemVkIHZvaWQgcmVzZXQoKSB7CisgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAicmVzZXQoKSIpOworICAgICAgICBpZiAobUtleWd1YXJkVmlldyAhPSBudWxsKSB7CisgICAgICAgICAgICBtS2V5Z3VhcmRWaWV3LnJlc2V0KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIHZvaWQgb25TY3JlZW5UdXJuZWRPZmYoKSB7CisgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAib25TY3JlZW5UdXJuZWRPZmYoKSIpOworICAgICAgICBtU2NyZWVuT24gPSBmYWxzZTsKKyAgICAgICAgaWYgKG1LZXlndWFyZFZpZXcgIT0gbnVsbCkgeworICAgICAgICAgICAgbUtleWd1YXJkVmlldy5vblNjcmVlblR1cm5lZE9mZigpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHN5bmNocm9uaXplZCB2b2lkIG9uU2NyZWVuVHVybmVkT24oKSB7CisgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAib25TY3JlZW5UdXJuZWRPbigpIik7CisgICAgICAgIG1TY3JlZW5PbiA9IHRydWU7CisgICAgICAgIGlmIChtS2V5Z3VhcmRWaWV3ICE9IG51bGwpIHsKKyAgICAgICAgICAgIG1LZXlndWFyZFZpZXcub25TY3JlZW5UdXJuZWRPbigpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHN5bmNocm9uaXplZCB2b2lkIHZlcmlmeVVubG9jaygpIHsKKyAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJ2ZXJpZnlVbmxvY2soKSIpOworICAgICAgICBzaG93KCk7CisgICAgICAgIG1LZXlndWFyZFZpZXcudmVyaWZ5VW5sb2NrKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQSBrZXkgaGFzIHdva2VuIHRoZSBkZXZpY2UuICBXZSB1c2UgdGhpcyB0byBwb3RlbnRpYWxseSBhZGp1c3QgdGhlIHN0YXRlCisgICAgICogb2YgdGhlIGxvY2sgc2NyZWVuIGJhc2VkIG9uIHRoZSBrZXkuCisgICAgICoKKyAgICAgKiBUaGUgJ1RxJyBzdWZmaXggaXMgcGVyIHRoZSBkb2N1bWVudGF0aW9uIGluIHtAbGluayBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlclBvbGljeX0uCisgICAgICogQmUgc3VyZSBub3QgdG8gdGFrZSBhbnkgYWN0aW9uIHRoYXQgdGFrZXMgYSBsb25nIHRpbWU7IGFueSBzaWduaWZpY2FudAorICAgICAqIGFjdGlvbiBzaG91bGQgYmUgcG9zdGVkIHRvIGEgaGFuZGxlci4KKyAgICAgKgorICAgICAqIEBwYXJhbSBrZXlDb2RlIFRoZSB3YWtlIGtleS4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiB3YWtlV2hlblJlYWR5VHEoaW50IGtleUNvZGUpIHsKKyAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJ3YWtlV2hlblJlYWR5KCIgKyBrZXlDb2RlICsgIikiKTsKKyAgICAgICAgaWYgKG1LZXlndWFyZFZpZXcgIT0gbnVsbCkgeworICAgICAgICAgICAgbUtleWd1YXJkVmlldy53YWtlV2hlblJlYWR5VHEoa2V5Q29kZSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIExvZy53KFRBRywgIm1LZXlndWFyZFZpZXcgaXMgbnVsbCBpbiB3YWtlV2hlblJlYWR5VHEiKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEhpZGVzIHRoZSBrZXlndWFyZCB2aWV3CisgICAgICovCisgICAgcHVibGljIHN5bmNocm9uaXplZCB2b2lkIGhpZGUoKSB7CisgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAiaGlkZSgpIik7CisgICAgICAgIGlmIChtS2V5Z3VhcmRIb3N0ICE9IG51bGwpIHsKKyAgICAgICAgICAgIG1LZXlndWFyZEhvc3Quc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOworICAgICAgICAgICAgLy8gRG9uJ3QgZG8gdGhpcyByaWdodCBhd2F5LCBzbyB3ZSBjYW4gbGV0IHRoZSB2aWV3IGNvbnRpbnVlIHRvIGFuaW1hdGUKKyAgICAgICAgICAgIC8vIGFzIGl0IGdvZXMgYXdheS4KKyAgICAgICAgICAgIGlmIChtS2V5Z3VhcmRWaWV3ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBLZXlndWFyZFZpZXdCYXNlIGxhc3RWaWV3ID0gbUtleWd1YXJkVmlldzsKKyAgICAgICAgICAgICAgICBtS2V5Z3VhcmRWaWV3ID0gbnVsbDsKKyAgICAgICAgICAgICAgICBtS2V5Z3VhcmRIb3N0LnBvc3REZWxheWVkKG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc3luY2hyb25pemVkIChLZXlndWFyZFZpZXdNYW5hZ2VyLnRoaXMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtS2V5Z3VhcmRIb3N0LnJlbW92ZVZpZXcobGFzdFZpZXcpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RWaWV3LmNsZWFuVXAoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0sIDUwMCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIFdoZXRoZXIgdGhlIGtleWd1YXJkIGlzIHNob3dpbmcKKyAgICAgKi8KKyAgICBwdWJsaWMgc3luY2hyb25pemVkIGJvb2xlYW4gaXNTaG93aW5nKCkgeworICAgICAgICByZXR1cm4gKG1LZXlndWFyZEhvc3QgIT0gbnVsbCAmJiBtS2V5Z3VhcmRIb3N0LmdldFZpc2liaWxpdHkoKSA9PSBWaWV3LlZJU0lCTEUpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvS2V5Z3VhcmRWaWV3TWVkaWF0b3IuamF2YSBiL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvS2V5Z3VhcmRWaWV3TWVkaWF0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODIwM2MzCi0tLSAvZGV2L251bGwKKysrIGIvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9LZXlndWFyZFZpZXdNZWRpYXRvci5qYXZhCkBAIC0wLDAgKzEsMTEzNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGw7CisKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuSWNjQ2FyZDsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC53aWRnZXQuTG9ja1BhdHRlcm5VdGlsczsKKworaW1wb3J0IGFuZHJvaWQuYXBwLkFjdGl2aXR5TWFuYWdlck5hdGl2ZTsKK2ltcG9ydCBhbmRyb2lkLmFwcC5BbGFybU1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5hcHAuUGVuZGluZ0ludGVudDsKK2ltcG9ydCBhbmRyb2lkLmFwcC5TdGF0dXNCYXJNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Ccm9hZGNhc3RSZWNlaXZlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudEZpbHRlcjsKK2ltcG9ydCBhbmRyb2lkLm1lZGlhLkF1ZGlvTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLm1lZGlhLlJpbmd0b25lOworaW1wb3J0IGFuZHJvaWQubWVkaWEuUmluZ3RvbmVNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQubmV0LlVyaTsKK2ltcG9ydCBhbmRyb2lkLm9zLkhhbmRsZXI7CitpbXBvcnQgYW5kcm9pZC5vcy5JQmluZGVyOworaW1wb3J0IGFuZHJvaWQub3MuTG9jYWxQb3dlck1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5vcy5NZXNzYWdlOworaW1wb3J0IGFuZHJvaWQub3MuUG93ZXJNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uOworaW1wb3J0IGFuZHJvaWQub3MuU3lzdGVtQ2xvY2s7CitpbXBvcnQgYW5kcm9pZC5vcy5TeXN0ZW1Qcm9wZXJ0aWVzOworaW1wb3J0IGFuZHJvaWQucHJvdmlkZXIuU2V0dGluZ3M7CitpbXBvcnQgYW5kcm9pZC50ZWxlcGhvbnkuVGVsZXBob255TWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuQ29uZmlnOworaW1wb3J0IGFuZHJvaWQudXRpbC5FdmVudExvZzsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOworaW1wb3J0IGFuZHJvaWQudmlldy5LZXlFdmVudDsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlckltcGw7CitpbXBvcnQgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXJQb2xpY3k7CisKKworLyoqCisgKiBNZWRpYXRlcyByZXF1ZXN0cyByZWxhdGVkIHRvIHRoZSBrZXlndWFyZC4gIFRoaXMgaW5jbHVkZXMgcXVlcmllcyBhYm91dCB0aGUKKyAqIHN0YXRlIG9mIHRoZSBrZXlndWFyZCwgcG93ZXIgbWFuYWdlbWVudCBldmVudHMgdGhhdCBlZmZlY3Qgd2hldGhlciB0aGUga2V5Z3VhcmQKKyAqIHNob3VsZCBiZSBzaG93biBvciByZXNldCwgY2FsbGJhY2tzIHRvIHRoZSBwaG9uZSB3aW5kb3cgbWFuYWdlciB0byBub3RpZnkKKyAqIGl0IG9mIHdoZW4gdGhlIGtleWd1YXJkIGlzIHNob3dpbmcsIGFuZCBldmVudHMgZnJvbSB0aGUga2V5Z3VhcmQgdmlldyBpdHNlbGYKKyAqIHN0YXRpbmcgdGhhdCB0aGUga2V5Z3VhcmQgd2FzIHN1Y2Nlc2Z1bGx5IHVubG9ja2VkLgorICoKKyAqIE5vdGUgdGhhdCB0aGUga2V5Z3VhcmQgdmlldyBpcyBzaG93biB3aGVuIHRoZSBzY3JlZW4gaXMgb2ZmIChhcyBhcHByb3ByaWF0ZSkKKyAqIHNvIHRoYXQgb25jZSB0aGUgc2NyZWVuIGNvbWVzIG9uLCBpdCB3aWxsIGJlIHJlYWR5IGltbWVkaWF0ZWx5LgorICoKKyAqIEV4YW1wbGUgcXVlcmllcyBhYm91dCB0aGUga2V5Z3VhcmQ6CisgKiAtIGlzIHttb3ZlbWVudCwga2V5fSBvbmUgdGhhdCBzaG91bGQgd2FrZSB0aGUga2V5Z2F1cmQ/CisgKiAtIGlzIHRoZSBrZXlndWFyZCBzaG93aW5nPworICogLSBhcmUgaW5wdXQgZXZlbnRzIHJlc3RyaWN0ZWQgZHVlIHRvIHRoZSBzdGF0ZSBvZiB0aGUga2V5Z3VhcmQ/CisgKgorICogQ2FsbGJhY2tzIHRvIHRoZSBwaG9uZSB3aW5kb3cgbWFuYWdlcjoKKyAqIC0gdGhlIGtleWd1YXJkIGlzIHNob3dpbmcKKyAqCisgKiBFeGFtcGxlIGV4dGVybmFsIGV2ZW50cyB0aGF0IHRyYW5zbGF0ZSB0byBrZXlndWFyZCB2aWV3IGNoYW5nZXM6CisgKiAtIHNjcmVlbiB0dXJuZWQgb2ZmIC0+IHJlc2V0IHRoZSBrZXlndWFyZCwgYW5kIHNob3cgaXQgc28gaXQgd2lsbCBiZSByZWFkeQorICogICBuZXh0IHRpbWUgdGhlIHNjcmVlbiB0dXJucyBvbgorICogLSBrZXlib2FyZCBpcyBzbGlkIG9wZW4gLT4gaWYgdGhlIGtleWd1YXJkIGlzIG5vdCBzZWN1cmUsIGhpZGUgaXQKKyAqCisgKiBFdmVudHMgZnJvbSB0aGUga2V5Z3VhcmQgdmlldzoKKyAqIC0gdXNlciBzdWNjZXNmdWxseSB1bmxvY2tlZCBrZXlndWFyZCAtPiBoaWRlIGtleWd1YXJkIHZpZXcsIGFuZCBubyBsb25nZXIKKyAqICAgcmVzdHJpY3QgaW5wdXQgZXZlbnRzLgorICoKKyAqIE5vdGU6IGluIGFkZGl0aW9uIHRvIG5vcm1hbCBwb3dlciBtYW5hZ21lbnQgZXZlbnRzIHRoYXQgZWZmZWN0IHRoZSBzdGF0ZSBvZgorICogd2hldGhlciB0aGUga2V5Z3VhcmQgc2hvdWxkIGJlIHNob3dpbmcsIGV4dGVybmFsIGFwcHMgYW5kIHNlcnZpY2VzIG1heSByZXF1ZXN0CisgKiB0aGF0IHRoZSBrZXlndWFyZCBiZSBkaXNhYmxlZCB2aWEge0BsaW5rICNzZXRLZXlndWFyZEVuYWJsZWQoYm9vbGVhbil9LiAgV2hlbgorICogZmFsc2UsIHRoaXMgd2lsbCBvdmVycmlkZSBhbGwgb3RoZXIgY29uZGl0aW9ucyBmb3IgdHVybmluZyBvbiB0aGUga2V5Z3VhcmQuCisgKgorICogVGhyZWFkaW5nIGFuZCBzeW5jaHJvbml6YXRpb246CisgKiBUaGlzIGNsYXNzIGlzIGNyZWF0ZWQgYnkgdGhlIGluaXRpYWxpemF0aW9uIHJvdXRpbmUgb2YgdGhlIHtAbGluayBXaW5kb3dNYW5hZ2VyUG9saWN5fSwKKyAqIGFuZCBydW5zIG9uIGl0cyB0aHJlYWQuICBUaGUga2V5Z3VhcmQgVUkgaXMgY3JlYXRlZCBmcm9tIHRoYXQgdGhyZWFkIGluIHRoZQorICogY29uc3RydWN0b3Igb2YgdGhpcyBjbGFzcy4gIFRoZSBhcGlzIG1heSBiZSBjYWxsZWQgZnJvbSBvdGhlciB0aHJlYWRzLCBpbmNsdWRpbmcgdGhlCisgKiB7QGxpbmsgY29tLmFuZHJvaWQuc2VydmVyLklucHV0TWFuYWdlcn0ncyBhbmQge0BsaW5rIGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyfSdzLgorICogVGhlcmVmb3JlLCBtZXRob2RzIG9uIHRoaXMgY2xhc3MgYXJlIHN5bmNocm9uaXplZCwgYW5kIGFueSBhY3Rpb24gdGhhdCBpcyBwb2ludGVkCisgKiBkaXJlY3RseSB0byB0aGUga2V5Z3VhcmQgVUkgaXMgcG9zdGVkIHRvIGEge0BsaW5rIEhhbmRsZXJ9IHRvIGVuc3VyZSBpdCBpcyB0YWtlbiBvbiB0aGUgVUkKKyAqIHRocmVhZCBvZiB0aGUga2V5Z3VhcmQuCisgKi8KK3B1YmxpYyBjbGFzcyBLZXlndWFyZFZpZXdNZWRpYXRvciBpbXBsZW1lbnRzIEtleWd1YXJkVmlld0NhbGxiYWNrLAorICAgICAgICBLZXlndWFyZFVwZGF0ZU1vbml0b3IuU2ltU3RhdGVDYWxsYmFjayB7CisgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgYm9vbGVhbiBERUJVRyA9IGZhbHNlICYmIENvbmZpZy5MT0dEOworICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGJvb2xlYW4gREJHX1dBS0UgPSBERUJVRyB8fCB0cnVlOworCisgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgU3RyaW5nIFRBRyA9ICJLZXlndWFyZFZpZXdNZWRpYXRvciI7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgREVMQVlFRF9LRVlHVUFSRF9BQ1RJT04gPQorICAgICAgICAiY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGwuUGhvbmVXaW5kb3dNYW5hZ2VyLkRFTEFZRURfS0VZR1VBUkQiOworCisgICAgLy8gdXNlZCBmb3IgaGFuZGxlciBtZXNzYWdlcworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBUSU1FT1VUID0gMTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgU0hPVyA9IDI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEhJREUgPSAzOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBSRVNFVCA9IDQ7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFZFUklGWV9VTkxPQ0sgPSA1OworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBOT1RJRllfU0NSRUVOX09GRiA9IDY7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE5PVElGWV9TQ1JFRU5fT04gPSA3OworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBXQUtFX1dIRU5fUkVBRFkgPSA4OworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBLRVlHVUFSRF9ET05FID0gOTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgS0VZR1VBUkRfRE9ORV9EUkFXSU5HID0gMTA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEtFWUdVQVJEX0RPTkVfQVVUSEVOVElDQVRJTkcgPSAxMTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgU0VUX0hJRERFTiA9IDEyOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBLRVlHVUFSRF9USU1FT1VUID0gMTM7CisKKyAgICAvKioKKyAgICAgKiBUaGUgZGVmYXVsdCBhbW91bnQgb2YgdGltZSB3ZSBzdGF5IGF3YWtlICh1c2VkIGZvciBhbGwga2V5IGlucHV0KQorICAgICAqLworICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgaW50IEFXQUtFX0lOVEVSVkFMX0RFRkFVTFRfTVMgPSA1MDAwOworCisKKyAgICAvKioKKyAgICAgKiBUaGUgZGVmYXVsdCBhbW91bnQgb2YgdGltZSB3ZSBzdGF5IGF3YWtlICh1c2VkIGZvciBhbGwga2V5IGlucHV0KSB3aGVuCisgICAgICogdGhlIGtleWJvYXJkIGlzIG9wZW4KKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIGludCBBV0FLRV9JTlRFUlZBTF9ERUZBVUxUX0tFWUJPQVJEX09QRU5fTVMgPSAxMDAwMDsKKworICAgIC8qKgorICAgICAqIEhvdyBsb25nIHRvIHdhaXQgYWZ0ZXIgdGhlIHNjcmVlbiB0dXJucyBvZmYgZHVlIHRvIHRpbWVvdXQgYmVmb3JlCisgICAgICogdHVybmluZyBvbiB0aGUga2V5Z3VhcmQgKGkuZSwgdGhlIHVzZXIgaGFzIHRoaXMgbXVjaCB0aW1lIHRvIHR1cm4KKyAgICAgKiB0aGUgc2NyZWVuIGJhY2sgb24gd2l0aG91dCBoYXZpbmcgdG8gZmFjZSB0aGUga2V5Z3VhcmQpLgorICAgICAqLworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBLRVlHVUFSRF9ERUxBWV9NUyA9IDUwMDA7CisKKyAgICAvKioKKyAgICAgKiBIb3cgbG9uZyB3ZSdsbCB3YWl0IGZvciB0aGUge0BsaW5rIEtleWd1YXJkVmlld0NhbGxiYWNrI2tleWd1YXJkRG9uZURyYXdpbmcoKX0KKyAgICAgKiBjYWxsYmFjayBiZWZvcmUgdW5ibG9ja2luZyBhIGNhbGwgdG8ge0BsaW5rICNzZXRLZXlndWFyZEVuYWJsZWQoYm9vbGVhbil9CisgICAgICogdGhhdCBpcyByZWVuYWJsaW5nIHRoZSBrZXlndWFyZC4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgS0VZR1VBUkRfRE9ORV9EUkFXSU5HX1RJTUVPVVRfTVMgPSAyMDAwOworCisgICAgcHJpdmF0ZSBDb250ZXh0IG1Db250ZXh0OworICAgIHByaXZhdGUgQWxhcm1NYW5hZ2VyIG1BbGFybU1hbmFnZXI7CisgICAgcHJpdmF0ZSBTdGF0dXNCYXJNYW5hZ2VyIG1TdGF0dXNCYXJNYW5hZ2VyOworICAgIHByaXZhdGUgYm9vbGVhbiBtU2hvd0xvY2tJY29uOworICAgIHByaXZhdGUgYm9vbGVhbiBtU2hvd2luZ0xvY2tJY29uOworCisgICAgcHJpdmF0ZSBib29sZWFuIG1TeXN0ZW1SZWFkeTsKKworICAgIC8vIFdoZXRoZXIgdGhlIG5leHQgY2FsbCB0byBwbGF5U291bmRzKCkgc2hvdWxkIGJlIHNraXBwZWQuICBEZWZhdWx0cyB0bworICAgIC8vIHRydWUgYmVjYXVzZSB0aGUgZmlyc3QgbG9jayAob24gYm9vdCkgc2hvdWxkIGJlIHNpbGVudC4KKyAgICBwcml2YXRlIGJvb2xlYW4gbVN1cHByZXNzTmV4dExvY2tTb3VuZCA9IHRydWU7CisKKworICAgIC8qKiBMb3cgbGV2ZWwgYWNjZXNzIHRvIHRoZSBwb3dlciBtYW5hZ2VyIGZvciBlbmFibGVVc2VyQWN0aXZpdHkuICBIYXZpbmcgdGhpcworICAgICAqIHJlcXVpcmVzIHRoYXQgd2UgcnVuIGluIHRoZSBzeXN0ZW0gcHJvY2Vzcy4gICovCisgICAgTG9jYWxQb3dlck1hbmFnZXIgbVJlYWxQb3dlck1hbmFnZXI7CisKKyAgICAvKiogSGlnaCBsZXZlbCBhY2Nlc3MgdG8gdGhlIHBvd2VyIG1hbmFnZXIgZm9yIFdha2VMb2NrcyAqLworICAgIHByaXZhdGUgUG93ZXJNYW5hZ2VyIG1QTTsKKworICAgIC8qKgorICAgICAqIFVzZWQgdG8ga2VlcCB0aGUgZGV2aWNlIGF3YWtlIHdoaWxlIHRoZSBrZXlndWFyZCBpcyBzaG93aW5nLCBpLmUgZm9yCisgICAgICogY2FsbHMgdG8ge0BsaW5rICNwb2tlV2FrZWxvY2soKX0KKyAgICAgKi8KKyAgICBwcml2YXRlIFBvd2VyTWFuYWdlci5XYWtlTG9jayBtV2FrZUxvY2s7CisKKyAgICAvKioKKyAgICAgKiBVc2VkIHRvIGtlZXAgdGhlIGRldmljZSBhd2FrZSB3aGlsZSB0byBlbnN1cmUgdGhlIGtleWd1YXJkIGZpbmlzaGVzIG9wZW5pbmcgYmVmb3JlCisgICAgICogd2Ugc2xlZXAuCisgICAgICovCisgICAgcHJpdmF0ZSBQb3dlck1hbmFnZXIuV2FrZUxvY2sgbVNob3dLZXlndWFyZFdha2VMb2NrOworCisgICAgLyoqCisgICAgICogRG9lcyBub3QgdHVybiBvbiBzY3JlZW4sIGhlbGQgd2hpbGUgYSBjYWxsIHRvIHtAbGluayBLZXlndWFyZFZpZXdNYW5hZ2VyI3dha2VXaGVuUmVhZHlUcShpbnQpfQorICAgICAqIGlzIGNhbGxlZCB0byBtYWtlIHN1cmUgdGhlIGRldmljZSBkb2Vzbid0IHNsZWVwIGJlZm9yZSBpdCBoYXMgYSBjaGFuY2UgdG8gcG9rZQorICAgICAqIHRoZSB3YWtlIGxvY2suCisgICAgICogQHNlZSAjd2FrZVdoZW5SZWFkeUxvY2tlZChpbnQpCisgICAgICovCisgICAgcHJpdmF0ZSBQb3dlck1hbmFnZXIuV2FrZUxvY2sgbVdha2VBbmRIYW5kT2ZmOworCisgICAgcHJpdmF0ZSBLZXlndWFyZFZpZXdNYW5hZ2VyIG1LZXlndWFyZFZpZXdNYW5hZ2VyOworCisgICAgLy8gdGhlc2UgYXJlIHByb3RlY3RlZCBieSBzeW5jaHJvbml6ZWQgKHRoaXMpCisKKyAgICAvKioKKyAgICAgKiBFeHRlcm5hbCBhcHBzIChsaWtlIHRoZSBwaG9uZSBhcHApIGNhbiB0ZWxsIHVzIHRvIGRpc2FibGUgdGhlIGtleWdhdXJkLgorICAgICAqLworICAgIHByaXZhdGUgYm9vbGVhbiBtRXh0ZXJuYWxseUVuYWJsZWQgPSB0cnVlOworCisgICAgLyoqCisgICAgICogUmVtZW1iZXIgaWYgYW4gZXh0ZXJuYWwgY2FsbCB0byB7QGxpbmsgI3NldEtleWd1YXJkRW5hYmxlZH0gd2l0aCB2YWx1ZQorICAgICAqIGZhbHNlIGNhdXNlZCB1cyB0byBoaWRlIHRoZSBrZXlndWFyZCwgc28gdGhhdCB3ZSBuZWVkIHRvIHJlc2hvdyBpdCBvbmNlCisgICAgICogdGhlIGtleWdhdXJkIGlzIHJlZW5hYmxlZCB3aXRoIGFub3RoZXIgY2FsbCB3aXRoIHZhbHVlIHRydWUuCisgICAgICovCisgICAgcHJpdmF0ZSBib29sZWFuIG1OZWVkVG9SZXNob3dXaGVuUmVlbmFibGVkID0gZmFsc2U7CisKKyAgICAvLyBjYWNoZWQgdmFsdWUgb2Ygd2hldGhlciB3ZSBhcmUgc2hvd2luZyAobmVlZCB0byBrbm93IHRoaXMgdG8gcXVpY2tseQorICAgIC8vIGFuc3dlciB3aGV0aGVyIHRoZSBpbnB1dCBzaG91bGQgYmUgcmVzdHJpY3RlZCkKKyAgICBwcml2YXRlIGJvb2xlYW4gbVNob3dpbmcgPSBmYWxzZTsKKworICAgIC8vIHRydWUgaWYgdGhlIGtleWd1YXJkIGlzIGhpZGRlbiBieSBhbm90aGVyIHdpbmRvdworICAgIHByaXZhdGUgYm9vbGVhbiBtSGlkZGVuID0gZmFsc2U7CisKKyAgICAvKioKKyAgICAgKiBIZWxwcyByZW1lbWJlciB3aGV0aGVyIHRoZSBzY3JlZW4gaGFzIHR1cm5lZCBvbiBzaW5jZSB0aGUgbGFzdCB0aW1lCisgICAgICogaXQgdHVybmVkIG9mZiBkdWUgdG8gdGltZW91dC4gc2VlIHtAbGluayAjb25TY3JlZW5UdXJuZWRPZmYoaW50KX0KKyAgICAgKi8KKyAgICBwcml2YXRlIGludCBtRGVsYXllZFNob3dpbmdTZXF1ZW5jZTsKKworICAgIHByaXZhdGUgaW50IG1XYWtlbG9ja1NlcXVlbmNlOworCisgICAgcHJpdmF0ZSBQaG9uZVdpbmRvd01hbmFnZXIgbUNhbGxiYWNrOworCisgICAgLyoqCisgICAgICogSWYgdGhlIHVzZXIgaGFzIGRpc2FibGVkIHRoZSBrZXlndWFyZCwgdGhlbiByZXF1ZXN0cyB0byBleGl0LCB0aGlzIGlzCisgICAgICogaG93IHdlJ2xsIHVsdGltYXRlbHkgbGV0IHRoZW0ga25vdyB3aGV0aGVyIGl0IHdhcyBzdWNjZXNzZnVsLiAgV2UgdXNlIHRoaXMKKyAgICAgKiB2YXIgYmVpbmcgbm9uLW51bGwgYXMgYW4gaW5kaWNhdG9yIHRoYXQgdGhlcmUgaXMgYW4gaW4gcHJvZ3Jlc3MgcmVxdWVzdC4KKyAgICAgKi8KKyAgICBwcml2YXRlIFdpbmRvd01hbmFnZXJQb2xpY3kuT25LZXlndWFyZEV4aXRSZXN1bHQgbUV4aXRTZWN1cmVDYWxsYmFjazsKKworICAgIC8vIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSBrZXlndWFyZAorICAgIHByaXZhdGUgS2V5Z3VhcmRWaWV3UHJvcGVydGllcyBtS2V5Z3VhcmRWaWV3UHJvcGVydGllczsKKworICAgIHByaXZhdGUgS2V5Z3VhcmRVcGRhdGVNb25pdG9yIG1VcGRhdGVNb25pdG9yOworCisgICAgcHJpdmF0ZSBib29sZWFuIG1LZXlib2FyZE9wZW4gPSBmYWxzZTsKKworICAgIHByaXZhdGUgYm9vbGVhbiBtU2NyZWVuT24gPSBmYWxzZTsKKworICAgIC8vIGxhc3Qga25vd24gc3RhdGUgb2YgdGhlIGNlbGx1bGFyIGNvbm5lY3Rpb24KKyAgICBwcml2YXRlIFN0cmluZyBtUGhvbmVTdGF0ZSA9IFRlbGVwaG9ueU1hbmFnZXIuRVhUUkFfU1RBVEVfSURMRTsKKworICAgIC8qKgorICAgICAqIHdlIHNlbmQgdGhpcyBpbnRlbnQgd2hlbiB0aGUga2V5Z3VhcmQgaXMgZGlzbWlzc2VkLgorICAgICAqLworICAgIHByaXZhdGUgSW50ZW50IG1Vc2VyUHJlc2VudEludGVudDsKKworICAgIC8qKgorICAgICAqIHtAbGluayAjc2V0S2V5Z3VhcmRFbmFibGVkfSB3YWl0cyBvbiB0aGlzIGNvbmRpdGlvbiB3aGVuIGl0IHJlZW5hYmxlcworICAgICAqIHRoZSBrZXlndWFyZC4KKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gbVdhaXRpbmdVbnRpbEtleWd1YXJkVmlzaWJsZSA9IGZhbHNlOworCisgICAgcHVibGljIEtleWd1YXJkVmlld01lZGlhdG9yKENvbnRleHQgY29udGV4dCwgUGhvbmVXaW5kb3dNYW5hZ2VyIGNhbGxiYWNrLAorICAgICAgICAgICAgTG9jYWxQb3dlck1hbmFnZXIgcG93ZXJNYW5hZ2VyKSB7CisgICAgICAgIG1Db250ZXh0ID0gY29udGV4dDsKKworICAgICAgICBtUmVhbFBvd2VyTWFuYWdlciA9IHBvd2VyTWFuYWdlcjsKKyAgICAgICAgbVBNID0gKFBvd2VyTWFuYWdlcikgY29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuUE9XRVJfU0VSVklDRSk7CisgICAgICAgIG1XYWtlTG9jayA9IG1QTS5uZXdXYWtlTG9jaygKKyAgICAgICAgICAgICAgICBQb3dlck1hbmFnZXIuRlVMTF9XQUtFX0xPQ0sgfCBQb3dlck1hbmFnZXIuQUNRVUlSRV9DQVVTRVNfV0FLRVVQLAorICAgICAgICAgICAgICAgICJrZXlndWFyZCIpOworICAgICAgICBtV2FrZUxvY2suc2V0UmVmZXJlbmNlQ291bnRlZChmYWxzZSk7CisgICAgICAgIG1TaG93S2V5Z3VhcmRXYWtlTG9jayA9IG1QTS5uZXdXYWtlTG9jayhQb3dlck1hbmFnZXIuUEFSVElBTF9XQUtFX0xPQ0ssICJzaG93IGtleWd1YXJkIik7CisgICAgICAgIG1TaG93S2V5Z3VhcmRXYWtlTG9jay5zZXRSZWZlcmVuY2VDb3VudGVkKGZhbHNlKTsKKworICAgICAgICBtV2FrZUFuZEhhbmRPZmYgPSBtUE0ubmV3V2FrZUxvY2soCisgICAgICAgICAgICAgICAgUG93ZXJNYW5hZ2VyLlBBUlRJQUxfV0FLRV9MT0NLLAorICAgICAgICAgICAgICAgICJrZXlndWFyZFdha2VBbmRIYW5kT2ZmIik7CisgICAgICAgIG1XYWtlQW5kSGFuZE9mZi5zZXRSZWZlcmVuY2VDb3VudGVkKGZhbHNlKTsKKworICAgICAgICBJbnRlbnRGaWx0ZXIgZmlsdGVyID0gbmV3IEludGVudEZpbHRlcigpOworICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKERFTEFZRURfS0VZR1VBUkRfQUNUSU9OKTsKKyAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihUZWxlcGhvbnlNYW5hZ2VyLkFDVElPTl9QSE9ORV9TVEFURV9DSEFOR0VEKTsKKyAgICAgICAgY29udGV4dC5yZWdpc3RlclJlY2VpdmVyKG1Ccm9hZENhc3RSZWNlaXZlciwgZmlsdGVyKTsKKyAgICAgICAgbUFsYXJtTWFuYWdlciA9IChBbGFybU1hbmFnZXIpIGNvbnRleHQKKyAgICAgICAgICAgICAgICAuZ2V0U3lzdGVtU2VydmljZShDb250ZXh0LkFMQVJNX1NFUlZJQ0UpOworICAgICAgICBtQ2FsbGJhY2sgPSBjYWxsYmFjazsKKworICAgICAgICBtVXBkYXRlTW9uaXRvciA9IG5ldyBLZXlndWFyZFVwZGF0ZU1vbml0b3IoY29udGV4dCk7CisKKyAgICAgICAgbVVwZGF0ZU1vbml0b3IucmVnaXN0ZXJTaW1TdGF0ZUNhbGxiYWNrKHRoaXMpOworCisgICAgICAgIG1LZXlndWFyZFZpZXdQcm9wZXJ0aWVzID0gbmV3IExvY2tQYXR0ZXJuS2V5Z3VhcmRWaWV3UHJvcGVydGllcygKKyAgICAgICAgICAgICAgICBuZXcgTG9ja1BhdHRlcm5VdGlscyhtQ29udGV4dCksIG1VcGRhdGVNb25pdG9yKTsKKworICAgICAgICBtS2V5Z3VhcmRWaWV3TWFuYWdlciA9IG5ldyBLZXlndWFyZFZpZXdNYW5hZ2VyKAorICAgICAgICAgICAgICAgIGNvbnRleHQsIFdpbmRvd01hbmFnZXJJbXBsLmdldERlZmF1bHQoKSwgdGhpcywKKyAgICAgICAgICAgICAgICBtS2V5Z3VhcmRWaWV3UHJvcGVydGllcywgbVVwZGF0ZU1vbml0b3IpOworCisgICAgICAgIG1Vc2VyUHJlc2VudEludGVudCA9IG5ldyBJbnRlbnQoSW50ZW50LkFDVElPTl9VU0VSX1BSRVNFTlQpOworICAgICAgICBtVXNlclByZXNlbnRJbnRlbnQuYWRkRmxhZ3MoSW50ZW50LkZMQUdfUkVDRUlWRVJfUkVQTEFDRV9QRU5ESU5HKTsKKworICAgICAgICBmaW5hbCBDb250ZW50UmVzb2x2ZXIgY3IgPSBtQ29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKTsKKyAgICAgICAgbVNob3dMb2NrSWNvbiA9IChTZXR0aW5ncy5TeXN0ZW0uZ2V0SW50KGNyLCAic2hvd19zdGF0dXNfYmFyX2xvY2siLCAwKSA9PSAxKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBMZXQgdXMga25vdyB0aGF0IHRoZSBzeXN0ZW0gaXMgcmVhZHkgYWZ0ZXIgc3RhcnR1cC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBvblN5c3RlbVJlYWR5KCkgeworICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKKyAgICAgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAib25TeXN0ZW1SZWFkeSIpOworICAgICAgICAgICAgbVN5c3RlbVJlYWR5ID0gdHJ1ZTsKKyAgICAgICAgICAgIGRvS2V5Z3VhcmQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIENhbGxlZCB0byBsZXQgdXMga25vdyB0aGUgc2NyZWVuIHdhcyB0dXJuZWQgb2ZmLgorICAgICAqIEBwYXJhbSB3aHkgZWl0aGVyIHtAbGluayBXaW5kb3dNYW5hZ2VyUG9saWN5I09GRl9CRUNBVVNFX09GX1VTRVJ9LAorICAgICAqICAge0BsaW5rIFdpbmRvd01hbmFnZXJQb2xpY3kjT0ZGX0JFQ0FVU0VfT0ZfVElNRU9VVH0gb3IKKyAgICAgKiAgIHtAbGluayBXaW5kb3dNYW5hZ2VyUG9saWN5I09GRl9CRUNBVVNFX09GX1BST1hfU0VOU09SfS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBvblNjcmVlblR1cm5lZE9mZihpbnQgd2h5KSB7CisgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgeworICAgICAgICAgICAgbVNjcmVlbk9uID0gZmFsc2U7CisgICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgIm9uU2NyZWVuVHVybmVkT2ZmKCIgKyB3aHkgKyAiKSIpOworCisgICAgICAgICAgICBpZiAobUV4aXRTZWN1cmVDYWxsYmFjayAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJwZW5kaW5nIGV4aXQgc2VjdXJlIGNhbGxiYWNrIGNhbmNlbGxlZCIpOworICAgICAgICAgICAgICAgIG1FeGl0U2VjdXJlQ2FsbGJhY2sub25LZXlndWFyZEV4aXRSZXN1bHQoZmFsc2UpOworICAgICAgICAgICAgICAgIG1FeGl0U2VjdXJlQ2FsbGJhY2sgPSBudWxsOworICAgICAgICAgICAgICAgIGlmICghbUV4dGVybmFsbHlFbmFibGVkKSB7CisgICAgICAgICAgICAgICAgICAgIGhpZGVMb2NrZWQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKG1TaG93aW5nKSB7CisgICAgICAgICAgICAgICAgbm90aWZ5U2NyZWVuT2ZmTG9ja2VkKCk7CisgICAgICAgICAgICAgICAgcmVzZXRTdGF0ZUxvY2tlZCgpOworICAgICAgICAgICAgfSBlbHNlIGlmICh3aHkgPT0gV2luZG93TWFuYWdlclBvbGljeS5PRkZfQkVDQVVTRV9PRl9USU1FT1VUKSB7CisgICAgICAgICAgICAgICAgLy8gaWYgdGhlIHNjcmVlbiB0dXJuZWQgb2ZmIGJlY2F1c2Ugb2YgdGltZW91dCwgc2V0IGFuIGFsYXJtCisgICAgICAgICAgICAgICAgLy8gdG8gZW5hYmxlIGl0IGEgbGl0dGxlIGJpdCBsYXRlciAoaS5lLCBnaXZlIHRoZSB1c2VyIGEgY2hhbmNlCisgICAgICAgICAgICAgICAgLy8gdG8gdHVybiB0aGUgc2NyZWVuIGJhY2sgb24gd2l0aGluIGEgY2VydGFpbiB3aW5kb3cgd2l0aG91dAorICAgICAgICAgICAgICAgIC8vIGhhdmluZyB0byB1bmxvY2sgdGhlIHNjcmVlbikKKyAgICAgICAgICAgICAgICBsb25nIHdoZW4gPSBTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKSArIEtFWUdVQVJEX0RFTEFZX01TOworICAgICAgICAgICAgICAgIEludGVudCBpbnRlbnQgPSBuZXcgSW50ZW50KERFTEFZRURfS0VZR1VBUkRfQUNUSU9OKTsKKyAgICAgICAgICAgICAgICBpbnRlbnQucHV0RXh0cmEoInNlcSIsIG1EZWxheWVkU2hvd2luZ1NlcXVlbmNlKTsKKyAgICAgICAgICAgICAgICBQZW5kaW5nSW50ZW50IHNlbmRlciA9IFBlbmRpbmdJbnRlbnQuZ2V0QnJvYWRjYXN0KG1Db250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgMCwgaW50ZW50LCBQZW5kaW5nSW50ZW50LkZMQUdfQ0FOQ0VMX0NVUlJFTlQpOworICAgICAgICAgICAgICAgIG1BbGFybU1hbmFnZXIuc2V0KEFsYXJtTWFuYWdlci5FTEFQU0VEX1JFQUxUSU1FX1dBS0VVUCwgd2hlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRlcik7CisgICAgICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJzZXR0aW5nIGFsYXJtIHRvIHR1cm4gb2ZmIGtleWd1YXJkLCBzZXEgPSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIG1EZWxheWVkU2hvd2luZ1NlcXVlbmNlKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAod2h5ID09IFdpbmRvd01hbmFnZXJQb2xpY3kuT0ZGX0JFQ0FVU0VfT0ZfUFJPWF9TRU5TT1IpIHsKKyAgICAgICAgICAgICAgICAvLyBEbyBub3QgZW5hYmxlIHRoZSBrZXlndWFyZCBpZiB0aGUgcHJveCBzZW5zb3IgZm9yY2VkIHRoZSBzY3JlZW4gb2ZmLgorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBkb0tleWd1YXJkKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBMZXQncyB1cyBrbm93IHRoZSBzY3JlZW4gd2FzIHR1cm5lZCBvbi4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBvblNjcmVlblR1cm5lZE9uKCkgeworICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKKyAgICAgICAgICAgIG1TY3JlZW5PbiA9IHRydWU7CisgICAgICAgICAgICBtRGVsYXllZFNob3dpbmdTZXF1ZW5jZSsrOworICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJvblNjcmVlblR1cm5lZE9uLCBzZXEgPSAiICsgbURlbGF5ZWRTaG93aW5nU2VxdWVuY2UpOworICAgICAgICAgICAgbm90aWZ5U2NyZWVuT25Mb2NrZWQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFNhbWUgc2VtYW50aWNzIGFzIHtAbGluayBXaW5kb3dNYW5hZ2VyUG9saWN5I2VuYWJsZUtleWd1YXJkfTsgcHJvdmlkZQorICAgICAqIGEgd2F5IGZvciBleHRlcm5hbCBzdHVmZiB0byBvdmVycmlkZSBub3JtYWwga2V5Z3VhcmQgYmVoYXZpb3IuICBGb3IgaW5zdGFuY2UKKyAgICAgKiB0aGUgcGhvbmUgYXBwIGRpc2FibGVzIHRoZSBrZXlndWFyZCB3aGVuIGl0IHJlY2VpdmVzIGluY29taW5nIGNhbGxzLgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldEtleWd1YXJkRW5hYmxlZChib29sZWFuIGVuYWJsZWQpIHsKKyAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7CisgICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgInNldEtleWd1YXJkRW5hYmxlZCgiICsgZW5hYmxlZCArICIpIik7CisKKworICAgICAgICAgICAgbUV4dGVybmFsbHlFbmFibGVkID0gZW5hYmxlZDsKKworICAgICAgICAgICAgaWYgKCFlbmFibGVkICYmIG1TaG93aW5nKSB7CisgICAgICAgICAgICAgICAgaWYgKG1FeGl0U2VjdXJlQ2FsbGJhY2sgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgImluIHByb2Nlc3Mgb2YgdmVyaWZ5VW5sb2NrIHJlcXVlc3QsIGlnbm9yaW5nIik7CisgICAgICAgICAgICAgICAgICAgIC8vIHdlJ3JlIGluIHRoZSBwcm9jZXNzIG9mIGhhbmRsaW5nIGEgcmVxdWVzdCB0byB2ZXJpZnkgdGhlIHVzZXIKKyAgICAgICAgICAgICAgICAgICAgLy8gY2FuIGdldCBwYXN0IHRoZSBrZXlndWFyZC4gaWdub3JlIGV4dHJhbmVvdXMgcmVxdWVzdHMgdG8gZGlzYWJsZSAvIHJlZW5hYmxlCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBoaWRpbmcga2V5Z3VhcmQgdGhhdCBpcyBzaG93aW5nLCByZW1lbWJlciB0byByZXNob3cgbGF0ZXIKKyAgICAgICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgInJlbWVtYmVyaW5nIHRvIHJlc2hvdywgaGlkaW5nIGtleWd1YXJkLCAiCisgICAgICAgICAgICAgICAgICAgICAgICArICJkaXNhYmxpbmcgc3RhdHVzIGJhciBleHBhbnNpb24iKTsKKyAgICAgICAgICAgICAgICBtTmVlZFRvUmVzaG93V2hlblJlZW5hYmxlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgaGlkZUxvY2tlZCgpOworICAgICAgICAgICAgfSBlbHNlIGlmIChlbmFibGVkICYmIG1OZWVkVG9SZXNob3dXaGVuUmVlbmFibGVkKSB7CisgICAgICAgICAgICAgICAgLy8gcmVlbmFibGVkIGFmdGVyIHByZXZpb3VzbHkgaGlkZGVuLCByZXNob3cKKyAgICAgICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgInByZXZpb3VzbHkgaGlkZGVuLCByZXNob3dpbmcsIHJlZW5hYmxpbmcgIgorICAgICAgICAgICAgICAgICAgICAgICAgKyAic3RhdHVzIGJhciBleHBhbnNpb24iKTsKKyAgICAgICAgICAgICAgICBtTmVlZFRvUmVzaG93V2hlblJlZW5hYmxlZCA9IGZhbHNlOworCisgICAgICAgICAgICAgICAgaWYgKG1FeGl0U2VjdXJlQ2FsbGJhY2sgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgIm9uS2V5Z3VhcmRFeGl0UmVzdWx0KGZhbHNlKSwgcmVzZXR0aW5nIik7CisgICAgICAgICAgICAgICAgICAgIG1FeGl0U2VjdXJlQ2FsbGJhY2sub25LZXlndWFyZEV4aXRSZXN1bHQoZmFsc2UpOworICAgICAgICAgICAgICAgICAgICBtRXhpdFNlY3VyZUNhbGxiYWNrID0gbnVsbDsKKyAgICAgICAgICAgICAgICAgICAgcmVzZXRTdGF0ZUxvY2tlZCgpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHNob3dMb2NrZWQoKTsKKworICAgICAgICAgICAgICAgICAgICAvLyBibG9jayB1bnRpbCB3ZSBrbm93IHRoZSBrZXlnYXVyZCBpcyBkb25lIGRyYXdpbmcgKGFuZCBwb3N0IGEgbWVzc2FnZQorICAgICAgICAgICAgICAgICAgICAvLyB0byB1bmJsb2NrIHVzIGFmdGVyIGEgdGltZW91dCBzbyB3ZSBkb24ndCByaXNrIGJsb2NraW5nIHRvbyBsb25nCisgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBjYXVzaW5nIGFuIEFOUikuCisgICAgICAgICAgICAgICAgICAgIG1XYWl0aW5nVW50aWxLZXlndWFyZFZpc2libGUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBtSGFuZGxlci5zZW5kRW1wdHlNZXNzYWdlRGVsYXllZChLRVlHVUFSRF9ET05FX0RSQVdJTkcsIEtFWUdVQVJEX0RPTkVfRFJBV0lOR19USU1FT1VUX01TKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJ3YWl0aW5nIHVudGlsIG1XYWl0aW5nVW50aWxLZXlndWFyZFZpc2libGUgaXMgZmFsc2UiKTsKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgKG1XYWl0aW5nVW50aWxLZXlndWFyZFZpc2libGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FpdCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoSW50ZXJydXB0ZWRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRocmVhZC5jdXJyZW50VGhyZWFkKCkuaW50ZXJydXB0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJkb25lIHdhaXRpbmcgZm9yIG1XYWl0aW5nVW50aWxLZXlndWFyZFZpc2libGUiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAc2VlIGFuZHJvaWQuYXBwLktleWd1YXJkTWFuYWdlciNleGl0S2V5Z3VhcmRTZWN1cmVseQorICAgICAqLworICAgIHB1YmxpYyB2b2lkIHZlcmlmeVVubG9jayhXaW5kb3dNYW5hZ2VyUG9saWN5Lk9uS2V5Z3VhcmRFeGl0UmVzdWx0IGNhbGxiYWNrKSB7CisgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgeworICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJ2ZXJpZnlVbmxvY2siKTsKKyAgICAgICAgICAgIGlmICghbVVwZGF0ZU1vbml0b3IuaXNEZXZpY2VQcm92aXNpb25lZCgpKSB7CisgICAgICAgICAgICAgICAgLy8gZG9uJ3QgYWxsb3cgdGhpcyBhcGkgd2hlbiB0aGUgZGV2aWNlIGlzbid0IHByb3Zpc2lvbmVkCisgICAgICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJpZ25vcmluZyBiZWNhdXNlIGRldmljZSBpc24ndCBwcm92aXNpb25lZCIpOworICAgICAgICAgICAgICAgIGNhbGxiYWNrLm9uS2V5Z3VhcmRFeGl0UmVzdWx0KGZhbHNlKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobUV4dGVybmFsbHlFbmFibGVkKSB7CisgICAgICAgICAgICAgICAgLy8gdGhpcyBvbmx5IGFwcGxpZXMgd2hlbiB0aGUgdXNlciBoYXMgZXh0ZXJuYWxseSBkaXNhYmxlZCB0aGUKKyAgICAgICAgICAgICAgICAvLyBrZXlndWFyZC4gIHRoaXMgaXMgdW5leHBlY3RlZCBhbmQgbWVhbnMgdGhlIHVzZXIgaXMgbm90CisgICAgICAgICAgICAgICAgLy8gdXNpbmcgdGhlIGFwaSBwcm9wZXJseS4KKyAgICAgICAgICAgICAgICBMb2cudyhUQUcsICJ2ZXJpZnlVbmxvY2sgY2FsbGVkIHdoZW4gbm90IGV4dGVybmFsbHkgZGlzYWJsZWQiKTsKKyAgICAgICAgICAgICAgICBjYWxsYmFjay5vbktleWd1YXJkRXhpdFJlc3VsdChmYWxzZSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKG1FeGl0U2VjdXJlQ2FsbGJhY2sgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIC8vIGFscmVhZHkgaW4gcHJvZ3Jlc3Mgd2l0aCBzb21lb25lIGVsc2UKKyAgICAgICAgICAgICAgICBjYWxsYmFjay5vbktleWd1YXJkRXhpdFJlc3VsdChmYWxzZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1FeGl0U2VjdXJlQ2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICAgICAgICAgICAgICB2ZXJpZnlVbmxvY2tMb2NrZWQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIElzIHRoZSBrZXlndWFyZCBjdXJyZW50bHkgc2hvd2luZz8KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBpc1Nob3dpbmcoKSB7CisgICAgICAgIHJldHVybiBtU2hvd2luZzsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJcyB0aGUga2V5Z3VhcmQgY3VycmVudGx5IHNob3dpbmcgYW5kIG5vdCBiZWluZyBmb3JjZSBoaWRkZW4/CisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gaXNTaG93aW5nQW5kTm90SGlkZGVuKCkgeworICAgICAgICByZXR1cm4gbVNob3dpbmcgJiYgIW1IaWRkZW47CisgICAgfQorCisgICAgLyoqCisgICAgICogTm90aWZ5IHVzIHdoZW4gdGhlIGtleWd1YXJkIGlzIGhpZGRlbiBieSBhbm90aGVyIHdpbmRvdworICAgICAqLworICAgIHB1YmxpYyB2b2lkIHNldEhpZGRlbihib29sZWFuIGlzSGlkZGVuKSB7CisgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAic2V0SGlkZGVuICIgKyBpc0hpZGRlbik7CisgICAgICAgIG1IYW5kbGVyLnJlbW92ZU1lc3NhZ2VzKFNFVF9ISURERU4pOworICAgICAgICBNZXNzYWdlIG1zZyA9IG1IYW5kbGVyLm9idGFpbk1lc3NhZ2UoU0VUX0hJRERFTiwgKGlzSGlkZGVuID8gMSA6IDApLCAwKTsKKyAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2UobXNnKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBIYW5kbGVzIFNFVF9ISURERU4gbWVzc2FnZSBzZW50IGJ5IHNldEhpZGRlbigpCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIGhhbmRsZVNldEhpZGRlbihib29sZWFuIGlzSGlkZGVuKSB7CisgICAgICAgIHN5bmNocm9uaXplZCAoS2V5Z3VhcmRWaWV3TWVkaWF0b3IudGhpcykgeworICAgICAgICAgICAgaWYgKG1IaWRkZW4gIT0gaXNIaWRkZW4pIHsKKyAgICAgICAgICAgICAgICBtSGlkZGVuID0gaXNIaWRkZW47CisgICAgICAgICAgICAgICAgYWRqdXN0VXNlckFjdGl2aXR5TG9ja2VkKCk7CisgICAgICAgICAgICAgICAgYWRqdXN0U3RhdHVzQmFyTG9ja2VkKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBVc2VkIGJ5IFBob25lV2luZG93TWFuYWdlciB0byBlbmFibGUgdGhlIGtleWd1YXJkIGR1ZSB0byBhIHVzZXIgYWN0aXZpdHkgdGltZW91dC4KKyAgICAgKiBUaGlzIG11c3QgYmUgc2FmZSB0byBjYWxsIGZyb20gYW55IHRocmVhZCBhbmQgd2l0aCBhbnkgd2luZG93IG1hbmFnZXIgbG9ja3MgaGVsZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBkb0tleWd1YXJkVGltZW91dCgpIHsKKyAgICAgICAgbUhhbmRsZXIucmVtb3ZlTWVzc2FnZXMoS0VZR1VBUkRfVElNRU9VVCk7CisgICAgICAgIE1lc3NhZ2UgbXNnID0gbUhhbmRsZXIub2J0YWluTWVzc2FnZShLRVlHVUFSRF9USU1FT1VUKTsKKyAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2UobXNnKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHaXZlbiB0aGUgc3RhdGUgb2YgdGhlIGtleWd1YXJkLCBpcyB0aGUgaW5wdXQgcmVzdHJpY3RlZD8KKyAgICAgKiBJbnB1dCBpcyByZXN0cmljdGVkIHdoZW4gdGhlIGtleWd1YXJkIGlzIHNob3dpbmcsIG9yIHdoZW4gdGhlIGtleWd1YXJkCisgICAgICogd2FzIHN1cHByZXNzZWQgYnkgYW4gYXBwIHRoYXQgZGlzYWJsZWQgdGhlIGtleWd1YXJkIG9yIHdlIGhhdmVuJ3QgYmVlbiBwcm92aXNpb25lZCB5ZXQuCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gaXNJbnB1dFJlc3RyaWN0ZWQoKSB7CisgICAgICAgIHJldHVybiBtU2hvd2luZyB8fCBtTmVlZFRvUmVzaG93V2hlblJlZW5hYmxlZCB8fCAhbVVwZGF0ZU1vbml0b3IuaXNEZXZpY2VQcm92aXNpb25lZCgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgY2hhbmdlIGlzIHJlc3VsdGluZyBpbiB0aGUga2V5Z3VhcmQgYmVpZ24gZGlzbWlzc2VkLAorICAgICAqIG1lYW5pbmcgdGhlIHNjcmVlbiBjYW4gdHVybiBvbiBpbW1lZGlhdGVseS4gIE90aGVyd2lzZSByZXR1cm5zIGZhbHNlLgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGRvTGlkQ2hhbmdlVHEoYm9vbGVhbiBpc0xpZE9wZW4pIHsKKyAgICAgICAgbUtleWJvYXJkT3BlbiA9IGlzTGlkT3BlbjsKKworICAgICAgICBpZiAobVVwZGF0ZU1vbml0b3IuaXNLZXlndWFyZEJ5cGFzc0VuYWJsZWQoKSAmJiBtS2V5Ym9hcmRPcGVuCisgICAgICAgICAgICAgICAgJiYgIW1LZXlndWFyZFZpZXdQcm9wZXJ0aWVzLmlzU2VjdXJlKCkgJiYgbUtleWd1YXJkVmlld01hbmFnZXIuaXNTaG93aW5nKCkpIHsKKyAgICAgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAiYnlwYXNzaW5nIGtleWd1YXJkIG9uIHNsaWRpbmcgb3BlbiBvZiBrZXlib2FyZCB3aXRoIG5vbi1zZWN1cmUga2V5Z3VhcmQiKTsKKyAgICAgICAgICAgIG1IYW5kbGVyLnNlbmRFbXB0eU1lc3NhZ2UoS0VZR1VBUkRfRE9ORV9BVVRIRU5USUNBVElORyk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLyoqCisgICAgICogRW5hYmxlIHRoZSBrZXlndWFyZCBpZiB0aGUgc2V0dGluZ3MgYXJlIGFwcHJvcHJpYXRlLgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBkb0tleWd1YXJkKCkgeworICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKKyAgICAgICAgICAgIC8vIGlmIGFub3RoZXIgYXBwIGlzIGRpc2FibGluZyB1cywgZG9uJ3Qgc2hvdworICAgICAgICAgICAgaWYgKCFtRXh0ZXJuYWxseUVuYWJsZWQpIHsKKyAgICAgICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgImRvS2V5Z3VhcmQ6IG5vdCBzaG93aW5nIGJlY2F1c2UgZXh0ZXJuYWxseSBkaXNhYmxlZCIpOworCisgICAgICAgICAgICAgICAgLy8gbm90ZTogd2UgKnNob3VsZCogc2V0IG1OZWVkVG9SZXNob3dXaGVuUmVlbmFibGVkPXRydWUgaGVyZSwgYnV0IHRoYXQgbWFrZXMKKyAgICAgICAgICAgICAgICAvLyBmb3IgYW4gb2NjYXNpb25hbCB1Z2x5IGZsaWNrZXIgaW4gdGhpcyBzaXR1YXRpb246CisgICAgICAgICAgICAgICAgLy8gMSkgcmVjZWl2ZSBhIGNhbGwgd2l0aCB0aGUgc2NyZWVuIG9uIChubyBrZXlndWFyZCkgb3IgbWFrZSBhIGNhbGwKKyAgICAgICAgICAgICAgICAvLyAyKSBzY3JlZW4gdGltZXMgb3V0CisgICAgICAgICAgICAgICAgLy8gMykgdXNlciBoaXRzIGtleSB0byB0dXJuIHNjcmVlbiBiYWNrIG9uCisgICAgICAgICAgICAgICAgLy8gaW5zdGVhZCwgd2UgcmVlbmFibGUgdGhlIGtleWd1YXJkIHdoZW4gd2Uga25vdyB0aGUgc2NyZWVuIGlzIG9mZiBhbmQgdGhlIGNhbGwKKyAgICAgICAgICAgICAgICAvLyBlbmRzIChzZWUgdGhlIGJyb2FkY2FzdCByZWNlaXZlciBiZWxvdykKKyAgICAgICAgICAgICAgICAvLyBUT0RPOiBjbGVhbiB0aGlzIHVwIHdoZW4gd2UgaGF2ZSBiZXR0ZXIgc3VwcG9ydCBhdCB0aGUgd2luZG93IG1hbmFnZXIgbGV2ZWwKKyAgICAgICAgICAgICAgICAvLyBmb3IgYXBwcyB0aGF0IHdpc2ggdG8gYmUgb24gdG9wIG9mIHRoZSBrZXlndWFyZAorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gaWYgdGhlIGtleWd1YXJkIGlzIGFscmVhZHkgc2hvd2luZywgZG9uJ3QgYm90aGVyCisgICAgICAgICAgICBpZiAobUtleWd1YXJkVmlld01hbmFnZXIuaXNTaG93aW5nKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgImRvS2V5Z3VhcmQ6IG5vdCBzaG93aW5nIGJlY2F1c2UgaXQgaXMgYWxyZWFkeSBzaG93aW5nIik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBpZiB0aGUgc2V0dXAgd2l6YXJkIGhhc24ndCBydW4geWV0LCBkb24ndCBzaG93CisgICAgICAgICAgICBmaW5hbCBib29sZWFuIHJlcXVpcmVTaW0gPSAhU3lzdGVtUHJvcGVydGllcy5nZXRCb29sZWFuKCJrZXlndWFyZC5ub19yZXF1aXJlX3NpbSIsCisgICAgICAgICAgICAgICAgICAgIGZhbHNlKTsKKyAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gcHJvdmlzaW9uZWQgPSBtVXBkYXRlTW9uaXRvci5pc0RldmljZVByb3Zpc2lvbmVkKCk7CisgICAgICAgICAgICBmaW5hbCBJY2NDYXJkLlN0YXRlIHN0YXRlID0gbVVwZGF0ZU1vbml0b3IuZ2V0U2ltU3RhdGUoKTsKKyAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gbG9ja2VkT3JNaXNzaW5nID0gc3RhdGUuaXNQaW5Mb2NrZWQoKQorICAgICAgICAgICAgICAgICAgICB8fCAoKHN0YXRlID09IEljY0NhcmQuU3RhdGUuQUJTRU5UKSAmJiByZXF1aXJlU2ltKTsKKworICAgICAgICAgICAgaWYgKCFsb2NrZWRPck1pc3NpbmcgJiYgIXByb3Zpc2lvbmVkKSB7CisgICAgICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJkb0tleWd1YXJkOiBub3Qgc2hvd2luZyBiZWNhdXNlIGRldmljZSBpc24ndCBwcm92aXNpb25lZCIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgIiBhbmQgdGhlIHNpbSBpcyBub3QgbG9ja2VkIG9yIG1pc3NpbmciKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAiZG9LZXlndWFyZDogc2hvd2luZyB0aGUgbG9jayBzY3JlZW4iKTsKKyAgICAgICAgICAgIHNob3dMb2NrZWQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFNlbmQgbWVzc2FnZSB0byBrZXlndWFyZCB0ZWxsaW5nIGl0IHRvIHJlc2V0IGl0cyBzdGF0ZS4KKyAgICAgKiBAc2VlICNoYW5kbGVSZXNldCgpCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIHJlc2V0U3RhdGVMb2NrZWQoKSB7CisgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAicmVzZXRTdGF0ZUxvY2tlZCIpOworICAgICAgICBNZXNzYWdlIG1zZyA9IG1IYW5kbGVyLm9idGFpbk1lc3NhZ2UoUkVTRVQpOworICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZShtc2cpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNlbmQgbWVzc2FnZSB0byBrZXlndWFyZCB0ZWxsaW5nIGl0IHRvIHZlcmlmeSB1bmxvY2sKKyAgICAgKiBAc2VlICNoYW5kbGVWZXJpZnlVbmxvY2soKQorICAgICAqLworICAgIHByaXZhdGUgdm9pZCB2ZXJpZnlVbmxvY2tMb2NrZWQoKSB7CisgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAidmVyaWZ5VW5sb2NrTG9ja2VkIik7CisgICAgICAgIG1IYW5kbGVyLnNlbmRFbXB0eU1lc3NhZ2UoVkVSSUZZX1VOTE9DSyk7CisgICAgfQorCisKKyAgICAvKioKKyAgICAgKiBTZW5kIGEgbWVzc2FnZSB0byBrZXlndWFyZCB0ZWxsaW5nIGl0IHRoZSBzY3JlZW4ganVzdCB0dXJuZWQgb24uCisgICAgICogQHNlZSAjb25TY3JlZW5UdXJuZWRPZmYoaW50KQorICAgICAqIEBzZWUgI2hhbmRsZU5vdGlmeVNjcmVlbk9mZgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBub3RpZnlTY3JlZW5PZmZMb2NrZWQoKSB7CisgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAibm90aWZ5U2NyZWVuT2ZmTG9ja2VkIik7CisgICAgICAgIG1IYW5kbGVyLnNlbmRFbXB0eU1lc3NhZ2UoTk9USUZZX1NDUkVFTl9PRkYpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNlbmQgYSBtZXNzYWdlIHRvIGtleWd1YXJkIHRlbGxpbmcgaXQgdGhlIHNjcmVlbiBqdXN0IHR1cm5lZCBvbi4KKyAgICAgKiBAc2VlICNvblNjcmVlblR1cm5lZE9uKCkKKyAgICAgKiBAc2VlICNoYW5kbGVOb3RpZnlTY3JlZW5PbgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBub3RpZnlTY3JlZW5PbkxvY2tlZCgpIHsKKyAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJub3RpZnlTY3JlZW5PbkxvY2tlZCIpOworICAgICAgICBtSGFuZGxlci5zZW5kRW1wdHlNZXNzYWdlKE5PVElGWV9TQ1JFRU5fT04pOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNlbmQgbWVzc2FnZSB0byBrZXlndWFyZCB0ZWxsaW5nIGl0IGFib3V0IGEgd2FrZSBrZXkgc28gaXQgY2FuIGFkanVzdAorICAgICAqIGl0cyBzdGF0ZSBhY2NvcmRpbmdseSBhbmQgdGhlbiBwb2tlIHRoZSB3YWtlIGxvY2sgd2hlbiBpdCBpcyByZWFkeS4KKyAgICAgKiBAcGFyYW0ga2V5Q29kZSBUaGUgd2FrZSBrZXkuCisgICAgICogQHNlZSAjaGFuZGxlV2FrZVdoZW5SZWFkeQorICAgICAqIEBzZWUgI29uV2FrZUtleVdoZW5LZXlndWFyZFNob3dpbmdUcShpbnQpCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIHdha2VXaGVuUmVhZHlMb2NrZWQoaW50IGtleUNvZGUpIHsKKyAgICAgICAgaWYgKERCR19XQUtFKSBMb2cuZChUQUcsICJ3YWtlV2hlblJlYWR5TG9ja2VkKCIgKyBrZXlDb2RlICsgIikiKTsKKworICAgICAgICAvKioKKyAgICAgICAgICogYWNxdWlyZSB0aGUgaGFuZG9mZiBsb2NrIHRoYXQgd2lsbCBrZWVwIHRoZSBjcHUgcnVubmluZy4gIHRoaXMgd2lsbAorICAgICAgICAgKiBiZSByZWxlYXNlZCBvbmNlIHRoZSBrZXlndWFyZCBoYXMgc2V0IGl0c2VsZiB1cCBhbmQgcG9rZWQgdGhlIG90aGVyIHdha2Vsb2NrCisgICAgICAgICAqIGluIHtAbGluayAjaGFuZGxlV2FrZVdoZW5SZWFkeShpbnQpfQorICAgICAgICAgKi8KKyAgICAgICAgbVdha2VBbmRIYW5kT2ZmLmFjcXVpcmUoKTsKKworICAgICAgICBNZXNzYWdlIG1zZyA9IG1IYW5kbGVyLm9idGFpbk1lc3NhZ2UoV0FLRV9XSEVOX1JFQURZLCBrZXlDb2RlLCAwKTsKKyAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2UobXNnKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZW5kIG1lc3NhZ2UgdG8ga2V5Z3VhcmQgdGVsbGluZyBpdCB0byBzaG93IGl0c2VsZgorICAgICAqIEBzZWUgI2hhbmRsZVNob3coKQorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBzaG93TG9ja2VkKCkgeworICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgInNob3dMb2NrZWQiKTsKKyAgICAgICAgLy8gZW5zdXJlIHdlIHN0YXkgYXdha2UgdW50aWwgd2UgYXJlIGZpbmlzaGVkIGRpc3BsYXlpbmcgdGhlIGtleWd1YXJkCisgICAgICAgIG1TaG93S2V5Z3VhcmRXYWtlTG9jay5hY3F1aXJlKCk7CisgICAgICAgIE1lc3NhZ2UgbXNnID0gbUhhbmRsZXIub2J0YWluTWVzc2FnZShTSE9XKTsKKyAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2UobXNnKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTZW5kIG1lc3NhZ2UgdG8ga2V5Z3VhcmQgdGVsbGluZyBpdCB0byBoaWRlIGl0c2VsZgorICAgICAqIEBzZWUgI2hhbmRsZUhpZGUoKQorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBoaWRlTG9ja2VkKCkgeworICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgImhpZGVMb2NrZWQiKTsKKyAgICAgICAgTWVzc2FnZSBtc2cgPSBtSGFuZGxlci5vYnRhaW5NZXNzYWdlKEhJREUpOworICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZShtc2cpOworICAgIH0KKworICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIHZvaWQgb25TaW1TdGF0ZUNoYW5nZWQoSWNjQ2FyZC5TdGF0ZSBzaW1TdGF0ZSkgeworICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgIm9uU2ltU3RhdGVDaGFuZ2VkOiAiICsgc2ltU3RhdGUpOworCisgICAgICAgIHN3aXRjaCAoc2ltU3RhdGUpIHsKKyAgICAgICAgICAgIGNhc2UgQUJTRU5UOgorICAgICAgICAgICAgICAgIC8vIG9ubHkgZm9yY2UgbG9jayBzY3JlZW4gaW4gY2FzZSBvZiBtaXNzaW5nIHNpbSBpZiB1c2VyIGhhc24ndAorICAgICAgICAgICAgICAgIC8vIGdvbmUgdGhyb3VnaCBzZXR1cCB3aXphcmQKKyAgICAgICAgICAgICAgICBpZiAoIW1VcGRhdGVNb25pdG9yLmlzRGV2aWNlUHJvdmlzaW9uZWQoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIWlzU2hvd2luZygpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgIklOVEVOVF9WQUxVRV9JQ0NfQUJTRU5UIGFuZCBrZXlnYXVyZCBpc24ndCBzaG93aW5nLCB3ZSBuZWVkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAidG8gc2hvdyB0aGUga2V5Z3VhcmQgc2luY2UgdGhlIGRldmljZSBpc24ndCBwcm92aXNpb25lZCB5ZXQuIik7CisgICAgICAgICAgICAgICAgICAgICAgICBkb0tleWd1YXJkKCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXNldFN0YXRlTG9ja2VkKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFBJTl9SRVFVSVJFRDoKKyAgICAgICAgICAgIGNhc2UgUFVLX1JFUVVJUkVEOgorICAgICAgICAgICAgICAgIGlmICghaXNTaG93aW5nKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJJTlRFTlRfVkFMVUVfSUNDX0xPQ0tFRCBhbmQga2V5Z2F1cmQgaXNuJ3Qgc2hvd2luZywgd2UgbmVlZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAidG8gc2hvdyB0aGUga2V5Z3VhcmQgc28gdGhlIHVzZXIgY2FuIGVudGVyIHRoZWlyIHNpbSBwaW4iKTsKKyAgICAgICAgICAgICAgICAgICAgZG9LZXlndWFyZCgpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHJlc2V0U3RhdGVMb2NrZWQoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgUkVBRFk6CisgICAgICAgICAgICAgICAgaWYgKGlzU2hvd2luZygpKSB7CisgICAgICAgICAgICAgICAgICAgIHJlc2V0U3RhdGVMb2NrZWQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBpc1NlY3VyZSgpIHsKKyAgICAgICAgcmV0dXJuIG1LZXlndWFyZFZpZXdQcm9wZXJ0aWVzLmlzU2VjdXJlKCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBCcm9hZGNhc3RSZWNlaXZlciBtQnJvYWRDYXN0UmVjZWl2ZXIgPSBuZXcgQnJvYWRjYXN0UmVjZWl2ZXIoKSB7CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBvblJlY2VpdmUoQ29udGV4dCBjb250ZXh0LCBJbnRlbnQgaW50ZW50KSB7CisgICAgICAgICAgICBmaW5hbCBTdHJpbmcgYWN0aW9uID0gaW50ZW50LmdldEFjdGlvbigpOworICAgICAgICAgICAgaWYgKGFjdGlvbi5lcXVhbHMoREVMQVlFRF9LRVlHVUFSRF9BQ1RJT04pKSB7CisKKyAgICAgICAgICAgICAgICBpbnQgc2VxdWVuY2UgPSBpbnRlbnQuZ2V0SW50RXh0cmEoInNlcSIsIDApOworCisgICAgICAgICAgICAgICAgaWYgKGZhbHNlKSBMb2cuZChUQUcsICJyZWNlaXZlZCBERUxBWUVEX0tFWUdVQVJEX0FDVElPTiB3aXRoIHNlcSA9ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgc2VxdWVuY2UgKyAiLCBtRGVsYXllZFNob3dpbmdTZXF1ZW5jZSA9ICIgKyBtRGVsYXllZFNob3dpbmdTZXF1ZW5jZSk7CisKKyAgICAgICAgICAgICAgICBpZiAobURlbGF5ZWRTaG93aW5nU2VxdWVuY2UgPT0gc2VxdWVuY2UpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gRG9uJ3QgcGxheSBsb2Nrc2NyZWVuIFNGWCBpZiB0aGUgc2NyZWVuIHdlbnQgb2ZmIGR1ZSB0bworICAgICAgICAgICAgICAgICAgICAvLyB0aW1lb3V0LgorICAgICAgICAgICAgICAgICAgICBtU3VwcHJlc3NOZXh0TG9ja1NvdW5kID0gdHJ1ZTsKKworICAgICAgICAgICAgICAgICAgICBkb0tleWd1YXJkKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChUZWxlcGhvbnlNYW5hZ2VyLkFDVElPTl9QSE9ORV9TVEFURV9DSEFOR0VELmVxdWFscyhhY3Rpb24pKSB7CisgICAgICAgICAgICAgICAgbVBob25lU3RhdGUgPSBpbnRlbnQuZ2V0U3RyaW5nRXh0cmEoVGVsZXBob255TWFuYWdlci5FWFRSQV9TVEFURSk7CisKKyAgICAgICAgICAgICAgICBpZiAoVGVsZXBob255TWFuYWdlci5FWFRSQV9TVEFURV9JRExFLmVxdWFscyhtUGhvbmVTdGF0ZSkgIC8vIGNhbGwgZW5kaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAmJiAhbVNjcmVlbk9uICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2NyZWVuIG9mZgorICAgICAgICAgICAgICAgICAgICAgICAgJiYgbUV4dGVybmFsbHlFbmFibGVkKSB7ICAgICAgICAgICAgICAgIC8vIG5vdCBkaXNhYmxlZCBieSBhbnkgYXBwCisKKyAgICAgICAgICAgICAgICAgICAgLy8gbm90ZTogdGhpcyBpcyBhIHdheSB0byBncmFjZWZ1bGx5IHJlZW5hYmxlIHRoZSBrZXlndWFyZCB3aGVuIHRoZSBjYWxsCisgICAgICAgICAgICAgICAgICAgIC8vIGVuZHMgYW5kIHRoZSBzY3JlZW4gaXMgb2ZmIHdpdGhvdXQgYWx3YXlzIHJlZW5hYmxpbmcgdGhlIGtleWd1YXJkCisgICAgICAgICAgICAgICAgICAgIC8vIGVhY2ggdGltZSB0aGUgc2NyZWVuIHR1cm5zIG9mZiB3aGlsZSBpbiBjYWxsIChhbmQgaGF2aW5nIGFuIG9jY2FzaW9uYWwgdWdseQorICAgICAgICAgICAgICAgICAgICAvLyBmbGlja2VyIHdoaWxlIHR1cm5pbmcgYmFjayBvbiB0aGUgc2NyZWVuIGFuZCBkaXNhYmxpbmcgdGhlIGtleWd1YXJkIGFnYWluKS4KKyAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJzY3JlZW4gaXMgb2ZmIGFuZCBjYWxsIGVuZGVkLCBsZXQncyBtYWtlIHN1cmUgdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArICJrZXlndWFyZCBpcyBzaG93aW5nIik7CisgICAgICAgICAgICAgICAgICAgIGRvS2V5Z3VhcmQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworCisKKyAgICAvKioKKyAgICAgKiBXaGVuIGEga2V5IGlzIHJlY2VpdmVkIHdoZW4gdGhlIHNjcmVlbiBpcyBvZmYgYW5kIHRoZSBrZXlndWFyZCBpcyBzaG93aW5nLAorICAgICAqIHdlIG5lZWQgdG8gZGVjaWRlIHdoZXRoZXIgdG8gYWN0dWFsbHkgdHVybiBvbiB0aGUgc2NyZWVuLCBhbmQgaWYgc28sIHRlbGwKKyAgICAgKiB0aGUga2V5Z3VhcmQgdG8gcHJlcGFyZSBpdHNlbGYgYW5kIHBva2UgdGhlIHdha2UgbG9jayB3aGVuIGl0IGlzIHJlYWR5LgorICAgICAqCisgICAgICogVGhlICdUcScgc3VmZml4IGlzIHBlciB0aGUgZG9jdW1lbnRhdGlvbiBpbiB7QGxpbmsgV2luZG93TWFuYWdlclBvbGljeX0uCisgICAgICogQmUgc3VyZSBub3QgdG8gdGFrZSBhbnkgYWN0aW9uIHRoYXQgdGFrZXMgYSBsb25nIHRpbWU7IGFueSBzaWduaWZpY2FudAorICAgICAqIGFjdGlvbiBzaG91bGQgYmUgcG9zdGVkIHRvIGEgaGFuZGxlci4KKyAgICAgKgorICAgICAqIEBwYXJhbSBrZXlDb2RlIFRoZSBrZXljb2RlIG9mIHRoZSBrZXkgdGhhdCB3b2tlIHRoZSBkZXZpY2UKKyAgICAgKiBAcmV0dXJuIFdoZXRoZXIgd2UgcG9rZWQgdGhlIHdha2UgbG9jayAoYW5kIHR1cm5lZCB0aGUgc2NyZWVuIG9uKQorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIG9uV2FrZUtleVdoZW5LZXlndWFyZFNob3dpbmdUcShpbnQga2V5Q29kZSkgeworICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgIm9uV2FrZUtleVdoZW5LZXlndWFyZFNob3dpbmcoIiArIGtleUNvZGUgKyAiKSIpOworCisgICAgICAgIGlmIChpc1dha2VLZXlXaGVuS2V5Z3VhcmRTaG93aW5nKGtleUNvZGUpKSB7CisgICAgICAgICAgICAvLyBnaXZlIHRoZSBrZXlndWFyZCB2aWV3IG1hbmFnZXIgYSBjaGFuY2UgdG8gYWRqdXN0IHRoZSBzdGF0ZSBvZiB0aGUKKyAgICAgICAgICAgIC8vIGtleWd1YXJkIGJhc2VkIG9uIHRoZSBrZXkgdGhhdCB3b2tlIHRoZSBkZXZpY2UgYmVmb3JlIHBva2luZworICAgICAgICAgICAgLy8gdGhlIHdha2UgbG9jaworICAgICAgICAgICAgd2FrZVdoZW5SZWFkeUxvY2tlZChrZXlDb2RlKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBib29sZWFuIGlzV2FrZUtleVdoZW5LZXlndWFyZFNob3dpbmcoaW50IGtleUNvZGUpIHsKKyAgICAgICAgc3dpdGNoIChrZXlDb2RlKSB7CisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfVk9MVU1FX1VQOgorICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5LRVlDT0RFX1ZPTFVNRV9ET1dOOgorICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5LRVlDT0RFX01VVEU6CisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfSEVBRFNFVEhPT0s6CisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfTUVESUFfUExBWV9QQVVTRToKKyAgICAgICAgICAgIGNhc2UgS2V5RXZlbnQuS0VZQ09ERV9NRURJQV9TVE9QOgorICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5LRVlDT0RFX01FRElBX05FWFQ6CisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfTUVESUFfUFJFVklPVVM6CisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfTUVESUFfUkVXSU5EOgorICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5LRVlDT0RFX01FRElBX0ZBU1RfRk9SV0FSRDoKKyAgICAgICAgICAgIGNhc2UgS2V5RXZlbnQuS0VZQ09ERV9DQU1FUkE6CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8qKgorICAgICAqIENhbGxiYWNrcyBmcm9tIHtAbGluayBLZXlndWFyZFZpZXdNYW5hZ2VyfS4KKyAgICAgKi8KKworICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIHZvaWQgcG9rZVdha2Vsb2NrKCkgeworICAgICAgICBwb2tlV2FrZWxvY2sobUtleWJvYXJkT3BlbiA/CisgICAgICAgICAgICAgICAgQVdBS0VfSU5URVJWQUxfREVGQVVMVF9LRVlCT0FSRF9PUEVOX01TIDogQVdBS0VfSU5URVJWQUxfREVGQVVMVF9NUyk7CisgICAgfQorCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgdm9pZCBwb2tlV2FrZWxvY2soaW50IGhvbGRNcykgeworICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKKyAgICAgICAgICAgIGlmIChEQkdfV0FLRSkgTG9nLmQoVEFHLCAicG9rZVdha2Vsb2NrKCIgKyBob2xkTXMgKyAiKSIpOworICAgICAgICAgICAgbVdha2VMb2NrLmFjcXVpcmUoKTsKKyAgICAgICAgICAgIG1IYW5kbGVyLnJlbW92ZU1lc3NhZ2VzKFRJTUVPVVQpOworICAgICAgICAgICAgbVdha2Vsb2NrU2VxdWVuY2UrKzsKKyAgICAgICAgICAgIE1lc3NhZ2UgbXNnID0gbUhhbmRsZXIub2J0YWluTWVzc2FnZShUSU1FT1VULCBtV2FrZWxvY2tTZXF1ZW5jZSwgMCk7CisgICAgICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZURlbGF5ZWQobXNnLCBob2xkTXMpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICoge0Bpbmhlcml0RG9jfQorICAgICAqCisgICAgICogQHNlZSAjaGFuZGxlS2V5Z3VhcmREb25lCisgICAgICovCisgICAgcHVibGljIHZvaWQga2V5Z3VhcmREb25lKGJvb2xlYW4gYXV0aGVudGljYXRlZCkgeworICAgICAgICBrZXlndWFyZERvbmUoYXV0aGVudGljYXRlZCwgdHJ1ZSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQga2V5Z3VhcmREb25lKGJvb2xlYW4gYXV0aGVudGljYXRlZCwgYm9vbGVhbiB3YWtldXApIHsKKyAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7CisgICAgICAgICAgICBFdmVudExvZy53cml0ZUV2ZW50KDcwMDAwLCAyKTsKKyAgICAgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAia2V5Z3VhcmREb25lKCIgKyBhdXRoZW50aWNhdGVkICsgIikiKTsKKyAgICAgICAgICAgIE1lc3NhZ2UgbXNnID0gbUhhbmRsZXIub2J0YWluTWVzc2FnZShLRVlHVUFSRF9ET05FKTsKKyAgICAgICAgICAgIG1zZy5hcmcxID0gd2FrZXVwID8gMSA6IDA7CisgICAgICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZShtc2cpOworCisgICAgICAgICAgICBpZiAoYXV0aGVudGljYXRlZCkgeworICAgICAgICAgICAgICAgIG1VcGRhdGVNb25pdG9yLmNsZWFyRmFpbGVkQXR0ZW1wdHMoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1FeGl0U2VjdXJlQ2FsbGJhY2sgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIG1FeGl0U2VjdXJlQ2FsbGJhY2sub25LZXlndWFyZEV4aXRSZXN1bHQoYXV0aGVudGljYXRlZCk7CisgICAgICAgICAgICAgICAgbUV4aXRTZWN1cmVDYWxsYmFjayA9IG51bGw7CisKKyAgICAgICAgICAgICAgICBpZiAoYXV0aGVudGljYXRlZCkgeworICAgICAgICAgICAgICAgICAgICAvLyBhZnRlciBzdWNjZXNmdWxseSBleGl0aW5nIHNlY3VyZWx5LCBubyBuZWVkIHRvIHJlc2hvdworICAgICAgICAgICAgICAgICAgICAvLyB0aGUga2V5Z3VhcmQgd2hlbiB0aGV5J3ZlIHJlbGVhc2VkIHRoZSBsb2NrCisgICAgICAgICAgICAgICAgICAgIG1FeHRlcm5hbGx5RW5hYmxlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIG1OZWVkVG9SZXNob3dXaGVuUmVlbmFibGVkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICoge0Bpbmhlcml0RG9jfQorICAgICAqCisgICAgICogQHNlZSAjaGFuZGxlS2V5Z3VhcmREb25lRHJhd2luZworICAgICAqLworICAgIHB1YmxpYyB2b2lkIGtleWd1YXJkRG9uZURyYXdpbmcoKSB7CisgICAgICAgIG1IYW5kbGVyLnNlbmRFbXB0eU1lc3NhZ2UoS0VZR1VBUkRfRE9ORV9EUkFXSU5HKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUaGlzIGhhbmRsZXIgd2lsbCBiZSBhc3NvY2lhdGVkIHdpdGggdGhlIHBvbGljeSB0aHJlYWQsIHdoaWNoIHdpbGwgYWxzbworICAgICAqIGJlIHRoZSBVSSB0aHJlYWQgb2YgdGhlIGtleWd1YXJkLiAgU2luY2UgdGhlIGFwaXMgb2YgdGhlIHBvbGljeSwgYW5kIHRoZXJlZm9yZQorICAgICAqIHRoaXMgY2xhc3MsIGNhbiBiZSBjYWxsZWQgYnkgb3RoZXIgdGhyZWFkcywgYW55IGFjdGlvbiB0aGF0IGRpcmVjdGx5CisgICAgICogaW50ZXJhY3RzIHdpdGggdGhlIGtleWd1YXJkIHVpIHNob3VsZCBiZSBwb3N0ZWQgdG8gdGhpcyBoYW5kbGVyLCByYXRoZXIKKyAgICAgKiB0aGFuIGNhbGxlZCBkaXJlY3RseS4KKyAgICAgKi8KKyAgICBwcml2YXRlIEhhbmRsZXIgbUhhbmRsZXIgPSBuZXcgSGFuZGxlcigpIHsKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyB2b2lkIGhhbmRsZU1lc3NhZ2UoTWVzc2FnZSBtc2cpIHsKKyAgICAgICAgICAgIHN3aXRjaCAobXNnLndoYXQpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFRJTUVPVVQ6CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZVRpbWVvdXQobXNnLmFyZzEpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gOworICAgICAgICAgICAgICAgIGNhc2UgU0hPVzoKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlU2hvdygpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gOworICAgICAgICAgICAgICAgIGNhc2UgSElERToKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlSGlkZSgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gOworICAgICAgICAgICAgICAgIGNhc2UgUkVTRVQ6CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZVJlc2V0KCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiA7CisgICAgICAgICAgICAgICAgY2FzZSBWRVJJRllfVU5MT0NLOgorICAgICAgICAgICAgICAgICAgICBoYW5kbGVWZXJpZnlVbmxvY2soKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIGNhc2UgTk9USUZZX1NDUkVFTl9PRkY6CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZU5vdGlmeVNjcmVlbk9mZigpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgY2FzZSBOT1RJRllfU0NSRUVOX09OOgorICAgICAgICAgICAgICAgICAgICBoYW5kbGVOb3RpZnlTY3JlZW5PbigpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgY2FzZSBXQUtFX1dIRU5fUkVBRFk6CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZVdha2VXaGVuUmVhZHkobXNnLmFyZzEpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgY2FzZSBLRVlHVUFSRF9ET05FOgorICAgICAgICAgICAgICAgICAgICBoYW5kbGVLZXlndWFyZERvbmUobXNnLmFyZzEgIT0gMCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBjYXNlIEtFWUdVQVJEX0RPTkVfRFJBV0lORzoKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlS2V5Z3VhcmREb25lRHJhd2luZygpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgY2FzZSBLRVlHVUFSRF9ET05FX0FVVEhFTlRJQ0FUSU5HOgorICAgICAgICAgICAgICAgICAgICBrZXlndWFyZERvbmUodHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBjYXNlIFNFVF9ISURERU46CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZVNldEhpZGRlbihtc2cuYXJnMSAhPSAwKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBLRVlHVUFSRF9USU1FT1VUOgorICAgICAgICAgICAgICAgICAgICBkb0tleWd1YXJkKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgorICAgICAqIEBzZWUgI2tleWd1YXJkRG9uZQorICAgICAqIEBzZWUgI0tFWUdVQVJEX0RPTkUKKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgaGFuZGxlS2V5Z3VhcmREb25lKGJvb2xlYW4gd2FrZXVwKSB7CisgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAiaGFuZGxlS2V5Z3VhcmREb25lIik7CisgICAgICAgIGhhbmRsZUhpZGUoKTsKKyAgICAgICAgaWYgKHdha2V1cCkgeworICAgICAgICAgICAgbVBNLnVzZXJBY3Rpdml0eShTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKSwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICAgICAgbVdha2VMb2NrLnJlbGVhc2UoKTsKKyAgICAgICAgbUNvbnRleHQuc2VuZEJyb2FkY2FzdChtVXNlclByZXNlbnRJbnRlbnQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEBzZWUgI2tleWd1YXJkRG9uZURyYXdpbmcKKyAgICAgKiBAc2VlICNLRVlHVUFSRF9ET05FX0RSQVdJTkcKKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgaGFuZGxlS2V5Z3VhcmREb25lRHJhd2luZygpIHsKKyAgICAgICAgc3luY2hyb25pemVkKHRoaXMpIHsKKyAgICAgICAgICAgIGlmIChmYWxzZSkgTG9nLmQoVEFHLCAiaGFuZGxlS2V5Z3VhcmREb25lRHJhd2luZyIpOworICAgICAgICAgICAgaWYgKG1XYWl0aW5nVW50aWxLZXlndWFyZFZpc2libGUpIHsKKyAgICAgICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgImhhbmRsZUtleWd1YXJkRG9uZURyYXdpbmc6IG5vdGlmeWluZyBtV2FpdGluZ1VudGlsS2V5Z3VhcmRWaXNpYmxlIik7CisgICAgICAgICAgICAgICAgbVdhaXRpbmdVbnRpbEtleWd1YXJkVmlzaWJsZSA9IGZhbHNlOworICAgICAgICAgICAgICAgIG5vdGlmeUFsbCgpOworCisgICAgICAgICAgICAgICAgLy8gdGhlcmUgd2lsbCB1c3VhbGx5IGJlIHR3byBvZiB0aGVzZSBzZW50LCBvbmUgYXMgYSB0aW1lb3V0LCBhbmQgb25lCisgICAgICAgICAgICAgICAgLy8gYXMgYSByZXN1bHQgb2YgdGhlIGNhbGxiYWNrLCBzbyByZW1vdmUgYW55IHJlbWFpbmluZyBtZXNzYWdlcyBmcm9tCisgICAgICAgICAgICAgICAgLy8gdGhlIHF1ZXVlCisgICAgICAgICAgICAgICAgbUhhbmRsZXIucmVtb3ZlTWVzc2FnZXMoS0VZR1VBUkRfRE9ORV9EUkFXSU5HKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEhhbmRsZXMgdGhlIG1lc3NhZ2Ugc2VudCBieSB7QGxpbmsgI3Bva2VXYWtlbG9ja30KKyAgICAgKiBAcGFyYW0gc2VxIHVzZWQgdG8gZGV0ZXJtaW5lIGlmIGFueXRoaW5nIGhhcyBjaGFuZ2VkIHNpbmNlIHRoZSBtZXNzYWdlCisgICAgICogICB3YXMgc2VudC4KKyAgICAgKiBAc2VlICNUSU1FT1VUCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIGhhbmRsZVRpbWVvdXQoaW50IHNlcSkgeworICAgICAgICBzeW5jaHJvbml6ZWQgKEtleWd1YXJkVmlld01lZGlhdG9yLnRoaXMpIHsKKyAgICAgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAiaGFuZGxlVGltZW91dCIpOworICAgICAgICAgICAgaWYgKHNlcSA9PSBtV2FrZWxvY2tTZXF1ZW5jZSkgeworICAgICAgICAgICAgICAgIG1XYWtlTG9jay5yZWxlYXNlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgcGxheVNvdW5kcyhib29sZWFuIGxvY2tlZCkgeworICAgICAgICAvLyBVc2VyIGZlZWRiYWNrIGZvciBrZXlndWFyZC4KKworICAgICAgICBpZiAobVN1cHByZXNzTmV4dExvY2tTb3VuZCkgeworICAgICAgICAgICAgbVN1cHByZXNzTmV4dExvY2tTb3VuZCA9IGZhbHNlOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZmluYWwgQ29udGVudFJlc29sdmVyIGNyID0gbUNvbnRleHQuZ2V0Q29udGVudFJlc29sdmVyKCk7CisgICAgICAgIGlmIChTZXR0aW5ncy5TeXN0ZW0uZ2V0SW50KGNyLCBTZXR0aW5ncy5TeXN0ZW0uTE9DS1NDUkVFTl9TT1VORFNfRU5BQkxFRCwgMSkgPT0gMSkKKyAgICAgICAgeworICAgICAgICAgICAgZmluYWwgU3RyaW5nIHdoaWNoU291bmQgPSBsb2NrZWQKKyAgICAgICAgICAgICAgICA/IFNldHRpbmdzLlN5c3RlbS5MT0NLX1NPVU5ECisgICAgICAgICAgICAgICAgOiBTZXR0aW5ncy5TeXN0ZW0uVU5MT0NLX1NPVU5EOworICAgICAgICAgICAgZmluYWwgU3RyaW5nIHNvdW5kUGF0aCA9IFNldHRpbmdzLlN5c3RlbS5nZXRTdHJpbmcoY3IsIHdoaWNoU291bmQpOworICAgICAgICAgICAgaWYgKHNvdW5kUGF0aCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgZmluYWwgVXJpIHNvdW5kVXJpID0gVXJpLnBhcnNlKCJmaWxlOi8vIiArIHNvdW5kUGF0aCk7CisgICAgICAgICAgICAgICAgaWYgKHNvdW5kVXJpICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgUmluZ3RvbmUgc2Z4ID0gUmluZ3RvbmVNYW5hZ2VyLmdldFJpbmd0b25lKG1Db250ZXh0LCBzb3VuZFVyaSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChzZnggIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc2Z4LnNldFN0cmVhbVR5cGUoQXVkaW9NYW5hZ2VyLlNUUkVBTV9TWVNURU0pOworICAgICAgICAgICAgICAgICAgICAgICAgc2Z4LnBsYXkoKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIExvZy5kKFRBRywgInBsYXlTb3VuZHM6IGZhaWxlZCB0byBsb2FkIHJpbmd0b25lIGZyb20gdXJpOiAiICsgc291bmRVcmkpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgTG9nLmQoVEFHLCAicGxheVNvdW5kczogY291bGQgbm90IHBhcnNlIFVyaTogIiArIHNvdW5kUGF0aCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBMb2cuZChUQUcsICJwbGF5U291bmRzOiB3aGljaFNvdW5kID0gIiArIHdoaWNoU291bmQgKyAiOyBzb3VuZFBhdGggd2FzIG51bGwiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0gICAgICAgIAorCisgICAgLyoqCisgICAgICogSGFuZGxlIG1lc3NhZ2Ugc2VudCBieSB7QGxpbmsgI3Nob3dMb2NrZWR9LgorICAgICAqIEBzZWUgI1NIT1cKKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgaGFuZGxlU2hvdygpIHsKKyAgICAgICAgc3luY2hyb25pemVkIChLZXlndWFyZFZpZXdNZWRpYXRvci50aGlzKSB7CisgICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgImhhbmRsZVNob3ciKTsKKyAgICAgICAgICAgIGlmICghbVN5c3RlbVJlYWR5KSByZXR1cm47CisKKyAgICAgICAgICAgIHBsYXlTb3VuZHModHJ1ZSk7CisKKyAgICAgICAgICAgIG1LZXlndWFyZFZpZXdNYW5hZ2VyLnNob3coKTsKKyAgICAgICAgICAgIG1TaG93aW5nID0gdHJ1ZTsKKyAgICAgICAgICAgIGFkanVzdFVzZXJBY3Rpdml0eUxvY2tlZCgpOworICAgICAgICAgICAgYWRqdXN0U3RhdHVzQmFyTG9ja2VkKCk7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIEFjdGl2aXR5TWFuYWdlck5hdGl2ZS5nZXREZWZhdWx0KCkuY2xvc2VTeXN0ZW1EaWFsb2dzKCJsb2NrIik7CisgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgfQorICAgICAgICAgICAgbVNob3dLZXlndWFyZFdha2VMb2NrLnJlbGVhc2UoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEhhbmRsZSBtZXNzYWdlIHNlbnQgYnkge0BsaW5rICNoaWRlTG9ja2VkKCl9CisgICAgICogQHNlZSAjSElERQorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBoYW5kbGVIaWRlKCkgeworICAgICAgICBzeW5jaHJvbml6ZWQgKEtleWd1YXJkVmlld01lZGlhdG9yLnRoaXMpIHsKKyAgICAgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAiaGFuZGxlSGlkZSIpOworICAgICAgICAgICAgaWYgKG1XYWtlQW5kSGFuZE9mZi5pc0hlbGQoKSkgeworICAgICAgICAgICAgICAgIExvZy53KFRBRywgImF0dGVtcHQgdG8gaGlkZSB0aGUga2V5Z3VhcmQgd2hpbGUgd2FraW5nLCBpZ25vcmVkIik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBvbmx5IHBsYXkgInVubG9jayIgbm9pc2VzIGlmIG5vdCBvbiBhIGNhbGwgKHNpbmNlIHRoZSBpbmNhbGwgVUkKKyAgICAgICAgICAgIC8vIGRpc2FibGVzIHRoZSBrZXlndWFyZCkKKyAgICAgICAgICAgIGlmIChUZWxlcGhvbnlNYW5hZ2VyLkVYVFJBX1NUQVRFX0lETEUuZXF1YWxzKG1QaG9uZVN0YXRlKSkgeworICAgICAgICAgICAgICAgIHBsYXlTb3VuZHMoZmFsc2UpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtS2V5Z3VhcmRWaWV3TWFuYWdlci5oaWRlKCk7CisgICAgICAgICAgICBtU2hvd2luZyA9IGZhbHNlOworICAgICAgICAgICAgYWRqdXN0VXNlckFjdGl2aXR5TG9ja2VkKCk7CisgICAgICAgICAgICBhZGp1c3RTdGF0dXNCYXJMb2NrZWQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBhZGp1c3RVc2VyQWN0aXZpdHlMb2NrZWQoKSB7CisgICAgICAgIC8vIGRpc2FibGUgdXNlciBhY3Rpdml0eSBpZiB3ZSBhcmUgc2hvd24gYW5kIG5vdCBoaWRkZW4KKyAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJhZGp1c3RVc2VyQWN0aXZpdHlMb2NrZWQgbVNob3dpbmc6ICIgKyBtU2hvd2luZyArICIgbUhpZGRlbjogIiArIG1IaWRkZW4pOworICAgICAgICBib29sZWFuIGVuYWJsZWQgPSAhbVNob3dpbmcgfHwgbUhpZGRlbjsKKyAgICAgICAgbVJlYWxQb3dlck1hbmFnZXIuZW5hYmxlVXNlckFjdGl2aXR5KGVuYWJsZWQpOworICAgICAgICBpZiAoIWVuYWJsZWQgJiYgbVNjcmVlbk9uKSB7CisgICAgICAgICAgICAvLyByZWluc3RhdGUgb3VyIHNob3J0IHNjcmVlbiB0aW1lb3V0IHBvbGljeQorICAgICAgICAgICAgcG9rZVdha2Vsb2NrKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgYWRqdXN0U3RhdHVzQmFyTG9ja2VkKCkgeworICAgICAgICBpZiAobVN0YXR1c0Jhck1hbmFnZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgbVN0YXR1c0Jhck1hbmFnZXIgPSAoU3RhdHVzQmFyTWFuYWdlcikKKyAgICAgICAgICAgICAgICAgICAgbUNvbnRleHQuZ2V0U3lzdGVtU2VydmljZShDb250ZXh0LlNUQVRVU19CQVJfU0VSVklDRSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1TdGF0dXNCYXJNYW5hZ2VyID09IG51bGwpIHsKKyAgICAgICAgICAgIExvZy53KFRBRywgIkNvdWxkIG5vdCBnZXQgc3RhdHVzIGJhciBtYW5hZ2VyIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAobVNob3dMb2NrSWNvbikgeworICAgICAgICAgICAgICAgIC8vIEdpdmUgZmVlZGJhY2sgdG8gdXNlciB3aGVuIHNlY3VyZSBrZXlndWFyZCBpcyBhY3RpdmUgYW5kIGVuZ2FnZWQKKyAgICAgICAgICAgICAgICBpZiAobVNob3dpbmcgJiYgaXNTZWN1cmUoKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIW1TaG93aW5nTG9ja0ljb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1TdGF0dXNCYXJNYW5hZ2VyLnNldEljb24oInNlY3VyZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfc2VjdXJlLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1TaG93aW5nTG9ja0ljb24gPSB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1TaG93aW5nTG9ja0ljb24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1TdGF0dXNCYXJNYW5hZ2VyLnJlbW92ZUljb24oInNlY3VyZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgbVNob3dpbmdMb2NrSWNvbiA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBpZiB0aGUga2V5Z3VhcmQgaXMgc2hvd24sIGFsbG93IHRoZSBzdGF0dXMgYmFyIHRvIG9wZW4KKyAgICAgICAgICAgIC8vIG9ubHkgaWYgdGhlIGtleWd1YXJkIGlzIGluc2VjdXJlIGFuZCBpcyBjb3ZlcmVkIGJ5IGFub3RoZXIgd2luZG93CisgICAgICAgICAgICBib29sZWFuIGVuYWJsZSA9ICFtU2hvd2luZyB8fCAobUhpZGRlbiAmJiAhaXNTZWN1cmUoKSk7CisgICAgICAgICAgICBtU3RhdHVzQmFyTWFuYWdlci5kaXNhYmxlKGVuYWJsZSA/CisgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzQmFyTWFuYWdlci5ESVNBQkxFX05PTkUgOgorICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXR1c0Jhck1hbmFnZXIuRElTQUJMRV9FWFBBTkQpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogSGFuZGxlIG1lc3NhZ2Ugc2VudCBieSB7QGxpbmsgI3dha2VXaGVuUmVhZHlMb2NrZWQoaW50KX0KKyAgICAgKiBAcGFyYW0ga2V5Q29kZSBUaGUga2V5IHRoYXQgd29rZSB0aGUgZGV2aWNlLgorICAgICAqIEBzZWUgI1dBS0VfV0hFTl9SRUFEWQorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBoYW5kbGVXYWtlV2hlblJlYWR5KGludCBrZXlDb2RlKSB7CisgICAgICAgIHN5bmNocm9uaXplZCAoS2V5Z3VhcmRWaWV3TWVkaWF0b3IudGhpcykgeworICAgICAgICAgICAgaWYgKERCR19XQUtFKSBMb2cuZChUQUcsICJoYW5kbGVXYWtlV2hlblJlYWR5KCIgKyBrZXlDb2RlICsgIikiKTsKKworICAgICAgICAgICAgLy8gdGhpcyBzaG91bGQgcmVzdWx0IGluIGEgY2FsbCB0byAncG9rZSB3YWtlbG9jaycgd2hpY2ggd2lsbCBzZXQgYSB0aW1lb3V0CisgICAgICAgICAgICAvLyBvbiByZWxlYXNpbmcgdGhlIHdha2Vsb2NrCisgICAgICAgICAgICBpZiAoIW1LZXlndWFyZFZpZXdNYW5hZ2VyLndha2VXaGVuUmVhZHlUcShrZXlDb2RlKSkgeworICAgICAgICAgICAgICAgIC8vIHBva2Ugd2FrZWxvY2sgb3Vyc2VsdmVzIGlmIGtleWd1YXJkIGlzIG5vIGxvbmdlciBhY3RpdmUKKyAgICAgICAgICAgICAgICBMb2cudyhUQUcsICJtS2V5Z3VhcmRWaWV3TWFuYWdlci53YWtlV2hlblJlYWR5VHEgZGlkIG5vdCBwb2tlIHdha2UgbG9jaywgc28gcG9rZSBpdCBvdXJzZWx2ZXMiKTsKKyAgICAgICAgICAgICAgICBwb2tlV2FrZWxvY2soKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyoqCisgICAgICAgICAgICAgKiBOb3cgdGhhdCB0aGUga2V5Z3VhcmQgaXMgcmVhZHkgYW5kIGhhcyBwb2tlZCB0aGUgd2FrZSBsb2NrLCB3ZSBjYW4KKyAgICAgICAgICAgICAqIHJlbGVhc2UgdGhlIGhhbmRvZmYgd2FrZWxvY2sKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgbVdha2VBbmRIYW5kT2ZmLnJlbGVhc2UoKTsKKworICAgICAgICAgICAgaWYgKCFtV2FrZUxvY2suaXNIZWxkKCkpIHsKKyAgICAgICAgICAgICAgICBMb2cudyhUQUcsICJtV2FrZUxvY2sgbm90IGhlbGQgaW4gbUtleWd1YXJkVmlld01hbmFnZXIud2FrZVdoZW5SZWFkeVRxIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBIYW5kbGUgbWVzc2FnZSBzZW50IGJ5IHtAbGluayAjcmVzZXRTdGF0ZUxvY2tlZCgpfQorICAgICAqIEBzZWUgI1JFU0VUCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIGhhbmRsZVJlc2V0KCkgeworICAgICAgICBzeW5jaHJvbml6ZWQgKEtleWd1YXJkVmlld01lZGlhdG9yLnRoaXMpIHsKKyAgICAgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAiaGFuZGxlUmVzZXQiKTsKKyAgICAgICAgICAgIG1LZXlndWFyZFZpZXdNYW5hZ2VyLnJlc2V0KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBIYW5kbGUgbWVzc2FnZSBzZW50IGJ5IHtAbGluayAjdmVyaWZ5VW5sb2NrfQorICAgICAqIEBzZWUgI1JFU0VUCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIGhhbmRsZVZlcmlmeVVubG9jaygpIHsKKyAgICAgICAgc3luY2hyb25pemVkIChLZXlndWFyZFZpZXdNZWRpYXRvci50aGlzKSB7CisgICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgImhhbmRsZVZlcmlmeVVubG9jayIpOworICAgICAgICAgICAgbUtleWd1YXJkVmlld01hbmFnZXIudmVyaWZ5VW5sb2NrKCk7CisgICAgICAgICAgICBtU2hvd2luZyA9IHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBIYW5kbGUgbWVzc2FnZSBzZW50IGJ5IHtAbGluayAjbm90aWZ5U2NyZWVuT2ZmTG9ja2VkKCl9CisgICAgICogQHNlZSAjTk9USUZZX1NDUkVFTl9PRkYKKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgaGFuZGxlTm90aWZ5U2NyZWVuT2ZmKCkgeworICAgICAgICBzeW5jaHJvbml6ZWQgKEtleWd1YXJkVmlld01lZGlhdG9yLnRoaXMpIHsKKyAgICAgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAiaGFuZGxlTm90aWZ5U2NyZWVuT2ZmIik7CisgICAgICAgICAgICBtS2V5Z3VhcmRWaWV3TWFuYWdlci5vblNjcmVlblR1cm5lZE9mZigpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogSGFuZGxlIG1lc3NhZ2Ugc2VudCBieSB7QGxpbmsgI25vdGlmeVNjcmVlbk9uTG9ja2VkKCl9CisgICAgICogQHNlZSAjTk9USUZZX1NDUkVFTl9PTgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBoYW5kbGVOb3RpZnlTY3JlZW5PbigpIHsKKyAgICAgICAgc3luY2hyb25pemVkIChLZXlndWFyZFZpZXdNZWRpYXRvci50aGlzKSB7CisgICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgImhhbmRsZU5vdGlmeVNjcmVlbk9uIik7CisgICAgICAgICAgICBtS2V5Z3VhcmRWaWV3TWFuYWdlci5vblNjcmVlblR1cm5lZE9uKCk7CisgICAgICAgIH0KKyAgICB9Cit9CisKKwpkaWZmIC0tZ2l0IGEvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9LZXlndWFyZFZpZXdQcm9wZXJ0aWVzLmphdmEgYi9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL0tleWd1YXJkVmlld1Byb3BlcnRpZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZGEwOGViCi0tLSAvZGV2L251bGwKKysrIGIvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9LZXlndWFyZFZpZXdQcm9wZXJ0aWVzLmphdmEKQEAgLTAsMCArMSw0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGw7CisKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKKworLyoqCisgKiBEZWZpbmVzIG9wZXJhdGlvbnMgbmVjZXNzYXJ5IGZvciBzaG93aW5nIGEga2V5Z3VhcmQsIGluY2x1ZGluZyBob3cgdG8gY3JlYXRlCisgKiBpdCwgYW5kIHZhcmlvdXMgcHJvcGVydGllcyB0aGF0IGFyZSB1c2VmdWwgdG8gYmUgYWJsZSB0byBxdWVyeSBpbmRlcGVuZGFudAorICogb2Ygd2hldGhlciB0aGUga2V5Z3VhcmQgaW5zdGFuY2UgaXMgYXJvdW5kIG9yIG5vdC4KKyAqLworcHVibGljIGludGVyZmFjZSBLZXlndWFyZFZpZXdQcm9wZXJ0aWVzIHsKKyAgICAKKyAgICAvKioKKyAgICAgKiBDcmVhdGUgYSBrZXlndWFyZCB2aWV3LgorICAgICAqIEBwYXJhbSBjb250ZXh0IHRoZSBjb250ZXh0IHRvIHVzZSB3aGVuIGNyZWF0aW5nIHRoZSB2aWV3LgorICAgICAqIEBwYXJhbSB1cGRhdGVNb25pdG9yIGNvbmZpZ3VyYXRpb24gbWF5IGJlIGJhc2VkIG9uIHRoaXMuCisgICAgICogQHBhcmFtIGNvbnRyb2xsZXIgZm9yIHRhbGtpbmcgYmFjayB3aXRoIHRoZSBjb250YWluaW5nIHdpbmRvdy4KKyAgICAgKiBAcmV0dXJuIHRoZSB2aWV3LgorICAgICAqLworICAgIEtleWd1YXJkVmlld0Jhc2UgY3JlYXRlS2V5Z3VhcmRWaWV3KENvbnRleHQgY29udGV4dCwKKyAgICAgICAgICAgIEtleWd1YXJkVXBkYXRlTW9uaXRvciB1cGRhdGVNb25pdG9yLAorICAgICAgICAgICAgS2V5Z3VhcmRXaW5kb3dDb250cm9sbGVyIGNvbnRyb2xsZXIpOworCisgICAgLyoqCisgICAgICogV291bGQgdGhlIGtleWd1YXJkIGJlIHNlY3VyZSByaWdodCBub3c/CisgICAgICogQHJldHVybiBXaGV0aGVyIHRoZSBrZXlndWFyZCBpcyBjdXJyZW50bHkgc2VjdXJlLCBtZWFuaW5nIGl0IHdpbGwgYmxvY2sKKyAgICAgKiAgIHRoZSB1c2VyIGZyb20gZ2V0dGluZyBwYXN0IGl0IHVudGlsIHRoZSB1c2VyIGVudGVycyBzb21lIHNvcnQgb2YgUElOLgorICAgICAqLworICAgIGJvb2xlYW4gaXNTZWN1cmUoKTsKKworfQpkaWZmIC0tZ2l0IGEvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9LZXlndWFyZFdpbmRvd0NvbnRyb2xsZXIuamF2YSBiL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvS2V5Z3VhcmRXaW5kb3dDb250cm9sbGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGFkNDhmYgotLS0gL2Rldi9udWxsCisrKyBiL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvS2V5Z3VhcmRXaW5kb3dDb250cm9sbGVyLmphdmEKQEAgLTAsMCArMSwyOSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGw7CisKKy8qKgorICogSW50ZXJmYWNlIHBhc3NlZCB0byB0aGUga2V5Z3VhcmQgdmlldywgZm9yIGl0IHRvIGNhbGwgdXAgdG8gY29udHJvbAorICogaXRzIGNvbnRhaW5pbmcgd2luZG93LgorICovCitwdWJsaWMgaW50ZXJmYWNlIEtleWd1YXJkV2luZG93Q29udHJvbGxlciB7CisgICAgLyoqCisgICAgICogQ29udHJvbCB3aGV0aGVyIHRoZSB3aW5kb3cgbmVlZHMgaW5wdXQgLS0gdGhhdCBpcyBpZiBpdCBoYXMKKyAgICAgKiB0ZXh0IGZpZWxkcyBhbmQgdGh1cyBzaG91bGQgYWxsb3cgaW5wdXQgbWV0aG9kIGludGVyYWN0aW9uLgorICAgICAqLworICAgIHZvaWQgc2V0TmVlZHNJbnB1dChib29sZWFuIG5lZWRzSW5wdXQpOworfQpkaWZmIC0tZ2l0IGEvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9Mb2NrUGF0dGVybktleWd1YXJkVmlldy5qYXZhIGIvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9Mb2NrUGF0dGVybktleWd1YXJkVmlldy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3NzA2ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL0xvY2tQYXR0ZXJuS2V5Z3VhcmRWaWV3LmphdmEKQEAgLTAsMCArMSw3OTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLmludGVybmFsLnBvbGljeS5pbXBsOworCitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuUjsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuSWNjQ2FyZDsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC53aWRnZXQuTG9ja1BhdHRlcm5VdGlsczsKKworaW1wb3J0IGFuZHJvaWQuYWNjb3VudHMuQWNjb3VudDsKK2ltcG9ydCBhbmRyb2lkLmFjY291bnRzLkFjY291bnRNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQuYWNjb3VudHMuQWNjb3VudE1hbmFnZXJDYWxsYmFjazsKK2ltcG9ydCBhbmRyb2lkLmFjY291bnRzLkFjY291bnRNYW5hZ2VyRnV0dXJlOworaW1wb3J0IGFuZHJvaWQuYWNjb3VudHMuQXV0aGVudGljYXRvckV4Y2VwdGlvbjsKK2ltcG9ydCBhbmRyb2lkLmFjY291bnRzLk9wZXJhdGlvbkNhbmNlbGVkRXhjZXB0aW9uOworaW1wb3J0IGFuZHJvaWQuYXBwLkFsZXJ0RGlhbG9nOworaW1wb3J0IGFuZHJvaWQuYXBwLmFkbWluLkRldmljZVBvbGljeU1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucmVzLkNvbmZpZ3VyYXRpb247CitpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5CaXRtYXA7CitpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5DYW52YXM7CitpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5Db2xvckZpbHRlcjsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLlBpeGVsRm9ybWF0OworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGU7CitpbXBvcnQgYW5kcm9pZC5vcy5CdW5kbGU7CitpbXBvcnQgYW5kcm9pZC5vcy5TeXN0ZW1DbG9jazsKK2ltcG9ydCBhbmRyb2lkLm9zLlN5c3RlbVByb3BlcnRpZXM7CitpbXBvcnQgYW5kcm9pZC50ZWxlcGhvbnkuVGVsZXBob255TWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLnRleHQuVGV4dFV0aWxzOworaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CitpbXBvcnQgYW5kcm9pZC52aWV3LktleUV2ZW50OworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OworaW1wb3J0IGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKKworLyoqCisgKiBUaGUgaG9zdCB2aWV3IGZvciBhbGwgb2YgdGhlIHNjcmVlbnMgb2YgdGhlIHBhdHRlcm4gdW5sb2NrIHNjcmVlbi4gIFRoZXJlIGFyZQorICogdHdvIHtAbGluayBNb2RlfXMgb2Ygb3BlcmF0aW9uLCBsb2NrIGFuZCB1bmxvY2suICBUaGlzIHdpbGwgc2hvdyB0aGUgYXBwcm9wcmlhdGUKKyAqIHNjcmVlbiwgYW5kIGxpc3RlbiBmb3IgY2FsbGJhY2tzIHZpYQorICoge0BsaW5rIGNvbS5hbmRyb2lkLmludGVybmFsLnBvbGljeS5pbXBsLktleWd1YXJkU2NyZWVuQ2FsbGJhY2t9CisgKiBmcm9tIHRoZSBjdXJyZW50IHNjcmVlbi4KKyAqCisgKiBUaGlzIHZpZXcsIGluIHR1cm4sIGNvbW11bmljYXRlcyBiYWNrIHRvCisgKiB7QGxpbmsgY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGwuS2V5Z3VhcmRWaWV3TWFuYWdlcn0KKyAqIHZpYSBpdHMge0BsaW5rIGNvbS5hbmRyb2lkLmludGVybmFsLnBvbGljeS5pbXBsLktleWd1YXJkVmlld0NhbGxiYWNrfSwgYXMgYXBwcm9wcmlhdGUuCisgKi8KK3B1YmxpYyBjbGFzcyBMb2NrUGF0dGVybktleWd1YXJkVmlldyBleHRlbmRzIEtleWd1YXJkVmlld0Jhc2UgeworCisgICAgc3RhdGljIGZpbmFsIGJvb2xlYW4gREVCVUdfQ09ORklHVVJBVElPTiA9IGZhbHNlOworCisgICAgLy8gdGltZSBhZnRlciBsYXVuY2hpbmcgRW1lcmdlbmN5RGlhbGVyIGJlZm9yZSB0aGUgc2NyZWVuIGdvZXMgYmxhbmsuCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEVNRVJHRU5DWV9DQUxMX1RJTUVPVVQgPSAxMDAwMDsKKworICAgIC8vIGludGVudCBhY3Rpb24gZm9yIGxhdW5jaGluZyBlbWVyZ2VuY3kgZGlhbGVyIGFjdGl2aXR5LgorICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQUNUSU9OX0VNRVJHRU5DWV9ESUFMID0gImNvbS5hbmRyb2lkLnBob25lLkVtZXJnZW5jeURpYWxlci5ESUFMIjsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gREVCVUcgPSBmYWxzZTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gIkxvY2tQYXR0ZXJuS2V5Z3VhcmRWaWV3IjsKKworICAgIHByaXZhdGUgZmluYWwgS2V5Z3VhcmRVcGRhdGVNb25pdG9yIG1VcGRhdGVNb25pdG9yOworICAgIHByaXZhdGUgZmluYWwgS2V5Z3VhcmRXaW5kb3dDb250cm9sbGVyIG1XaW5kb3dDb250cm9sbGVyOworCisgICAgcHJpdmF0ZSBWaWV3IG1Mb2NrU2NyZWVuOworICAgIHByaXZhdGUgVmlldyBtVW5sb2NrU2NyZWVuOworCisgICAgcHJpdmF0ZSBib29sZWFuIG1TY3JlZW5PbiA9IGZhbHNlOworICAgIHByaXZhdGUgYm9vbGVhbiBtRW5hYmxlRmFsbGJhY2sgPSBmYWxzZTsgLy8gYXNzdW1lIG5vIGZhbGxiYWNrIFVJIHVudGlsIHdlIGtub3cgYmV0dGVyCisKKyAgICAvKioKKyAgICAgKiBUaGUgY3VycmVudCB7QGxpbmsgS2V5Z3VhcmRTY3JlZW59IHdpbGwgdXNlIHRoaXMgdG8gY29tbXVuaWNhdGUgYmFjayB0byB1cy4KKyAgICAgKi8KKyAgICBLZXlndWFyZFNjcmVlbkNhbGxiYWNrIG1LZXlndWFyZFNjcmVlbkNhbGxiYWNrOworCisKKyAgICBwcml2YXRlIGJvb2xlYW4gbVJlcXVpcmVzU2ltOworCisKKyAgICAvKioKKyAgICAgKiBFaXRoZXIgYSBsb2NrIHNjcmVlbiAoYW4gaW5mb3JtYXRpb25hbCBrZXlndWFyZCBzY3JlZW4pLCBvciBhbiB1bmxvY2sKKyAgICAgKiBzY3JlZW4gKGEgbWVhbnMgZm9yIHVubG9ja2luZyB0aGUgZGV2aWNlKSBpcyBzaG93biBhdCBhbnkgZ2l2ZW4gdGltZS4KKyAgICAgKi8KKyAgICBlbnVtIE1vZGUgeworICAgICAgICBMb2NrU2NyZWVuLAorICAgICAgICBVbmxvY2tTY3JlZW4KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUaGUgZGlmZmVyZW50IHR5cGVzIHNjcmVlbnMgYXZhaWxhYmxlIGZvciB7QGxpbmsgTW9kZSNVbmxvY2tTY3JlZW59LgorICAgICAqIEBzZWUgY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGwuTG9ja1BhdHRlcm5LZXlndWFyZFZpZXcjZ2V0VW5sb2NrTW9kZSgpCisgICAgICovCisgICAgZW51bSBVbmxvY2tNb2RlIHsKKworICAgICAgICAvKioKKyAgICAgICAgICogVW5sb2NrIGJ5IGRyYXdpbmcgYSBwYXR0ZXJuLgorICAgICAgICAgKi8KKyAgICAgICAgUGF0dGVybiwKKworICAgICAgICAvKioKKyAgICAgICAgICogVW5sb2NrIGJ5IGVudGVyaW5nIGEgc2ltIHBpbi4KKyAgICAgICAgICovCisgICAgICAgIFNpbVBpbiwKKworICAgICAgICAvKioKKyAgICAgICAgICogVW5sb2NrIGJ5IGVudGVyaW5nIGFuIGFjY291bnQncyBsb2dpbiBhbmQgcGFzc3dvcmQuCisgICAgICAgICAqLworICAgICAgICBBY2NvdW50LAorCisgICAgICAgIC8qKgorICAgICAgICAgKiBVbmxvY2sgYnkgZW50ZXJpbmcgYSBwYXNzd29yZCBvciBQSU4KKyAgICAgICAgICovCisgICAgICAgIFBhc3N3b3JkLAorCisgICAgICAgIC8qKgorICAgICAgICAgKiBVbmtub3duICh1bmluaXRpYWxpemVkKSB2YWx1ZQorICAgICAgICAgKi8KKyAgICAgICAgVW5rbm93bgorICAgIH0KKworICAgIC8qKgorICAgICAqIFRoZSBjdXJyZW50IG1vZGUuCisgICAgICovCisgICAgcHJpdmF0ZSBNb2RlIG1Nb2RlID0gTW9kZS5Mb2NrU2NyZWVuOworCisgICAgLyoqCisgICAgICogS2VlcHMgdHJhY2sgb2Ygd2hhdCBtb2RlIHRoZSBjdXJyZW50IHVubG9jayBzY3JlZW4gaXMgKGNhY2hlZCBmcm9tIG1vc3QgcmVjZW50IGNvbXB1dGF0aW9uIGluCisgICAgICoge0BsaW5rICNnZXRVbmxvY2tNb2RlfSkuCisgICAgICovCisgICAgcHJpdmF0ZSBVbmxvY2tNb2RlIG1VbmxvY2tTY3JlZW5Nb2RlOworCisgICAgcHJpdmF0ZSBib29sZWFuIG1Gb3Jnb3RQYXR0ZXJuOworCisgICAgLyoqCisgICAgICogSWYgdHJ1ZSwgaXQgbWVhbnMgd2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIHZlcmlmeWluZyB0aGF0IHRoZSB1c2VyCisgICAgICogY2FuIGdldCBwYXN0IHRoZSBsb2NrIHNjcmVlbiBwZXIge0BsaW5rICN2ZXJpZnlVbmxvY2soKX0KKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gbUlzVmVyaWZ5VW5sb2NrT25seSA9IGZhbHNlOworCisKKyAgICAvKioKKyAgICAgKiBVc2VkIHRvIGxvb2t1cCB0aGUgc3RhdGUgb2YgdGhlIGxvY2sgcGF0dGVybgorICAgICAqLworICAgIHByaXZhdGUgZmluYWwgTG9ja1BhdHRlcm5VdGlscyBtTG9ja1BhdHRlcm5VdGlsczsKKworICAgIHByaXZhdGUgVW5sb2NrTW9kZSBtQ3VycmVudFVubG9ja01vZGUgPSBVbmxvY2tNb2RlLlVua25vd247CisKKyAgICAvKioKKyAgICAgKiBUaGUgY3VycmVudCBjb25maWd1cmF0aW9uLgorICAgICAqLworICAgIHByaXZhdGUgQ29uZmlndXJhdGlvbiBtQ29uZmlndXJhdGlvbjsKKworICAgIC8qKgorICAgICAqIEByZXR1cm4gV2hldGhlciB3ZSBhcmUgc3R1Y2sgb24gdGhlIGxvY2sgc2NyZWVuIGJlY2F1c2UgdGhlIHNpbSBpcworICAgICAqICAgbWlzc2luZy4KKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gc3R1Y2tPbkxvY2tTY3JlZW5CZWNhdXNlU2ltTWlzc2luZygpIHsKKyAgICAgICAgcmV0dXJuIG1SZXF1aXJlc1NpbQorICAgICAgICAgICAgICAgICYmICghbVVwZGF0ZU1vbml0b3IuaXNEZXZpY2VQcm92aXNpb25lZCgpKQorICAgICAgICAgICAgICAgICYmIChtVXBkYXRlTW9uaXRvci5nZXRTaW1TdGF0ZSgpID09IEljY0NhcmQuU3RhdGUuQUJTRU5UKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gY29udGV4dCBVc2VkIHRvIGluZmxhdGUsIGFuZCBjcmVhdGUgdmlld3MuCisgICAgICogQHBhcmFtIHVwZGF0ZU1vbml0b3IgS25vd3MgdGhlIHN0YXRlIG9mIHRoZSB3b3JsZCwgYW5kIHBhc3NlZCBhbG9uZyB0byBlYWNoCisgICAgICogICBzY3JlZW4gc28gdGhleSBjYW4gdXNlIHRoZSBrbm93bGVkZ2UsIGFuZCBhbHNvIHJlZ2lzdGVyIGZvciBjYWxsYmFja3MKKyAgICAgKiAgIG9uIGR5bmFtaWMgaW5mb3JtYXRpb24uCisgICAgICogQHBhcmFtIGxvY2tQYXR0ZXJuVXRpbHMgVXNlZCB0byBsb29rIHVwIHN0YXRlIG9mIGxvY2sgcGF0dGVybi4KKyAgICAgKi8KKyAgICBwdWJsaWMgTG9ja1BhdHRlcm5LZXlndWFyZFZpZXcoCisgICAgICAgICAgICBDb250ZXh0IGNvbnRleHQsCisgICAgICAgICAgICBLZXlndWFyZFVwZGF0ZU1vbml0b3IgdXBkYXRlTW9uaXRvciwKKyAgICAgICAgICAgIExvY2tQYXR0ZXJuVXRpbHMgbG9ja1BhdHRlcm5VdGlscywKKyAgICAgICAgICAgIEtleWd1YXJkV2luZG93Q29udHJvbGxlciBjb250cm9sbGVyKSB7CisgICAgICAgIHN1cGVyKGNvbnRleHQpOworCisgICAgICAgIG1Db25maWd1cmF0aW9uID0gY29udGV4dC5nZXRSZXNvdXJjZXMoKS5nZXRDb25maWd1cmF0aW9uKCk7CisgICAgICAgIG1FbmFibGVGYWxsYmFjayA9IGZhbHNlOworCisgICAgICAgIG1SZXF1aXJlc1NpbSA9CisgICAgICAgICAgICAgICAgVGV4dFV0aWxzLmlzRW1wdHkoU3lzdGVtUHJvcGVydGllcy5nZXQoImtleWd1YXJkLm5vX3JlcXVpcmVfc2ltIikpOworCisgICAgICAgIG1VcGRhdGVNb25pdG9yID0gdXBkYXRlTW9uaXRvcjsKKyAgICAgICAgbUxvY2tQYXR0ZXJuVXRpbHMgPSBsb2NrUGF0dGVyblV0aWxzOworICAgICAgICBtV2luZG93Q29udHJvbGxlciA9IGNvbnRyb2xsZXI7CisKKyAgICAgICAgbU1vZGUgPSBnZXRJbml0aWFsTW9kZSgpOworCisgICAgICAgIG1LZXlndWFyZFNjcmVlbkNhbGxiYWNrID0gbmV3IEtleWd1YXJkU2NyZWVuQ2FsbGJhY2soKSB7CisKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGdvVG9Mb2NrU2NyZWVuKCkgeworICAgICAgICAgICAgICAgIG1Gb3Jnb3RQYXR0ZXJuID0gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKG1Jc1ZlcmlmeVVubG9ja09ubHkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gbmF2aWdhdGluZyBhd2F5IGZyb20gdW5sb2NrIHNjcmVlbiBkdXJpbmcgdmVyaWZ5IG1vZGUgbWVhbnMKKyAgICAgICAgICAgICAgICAgICAgLy8gd2UgYXJlIGRvbmUgYW5kIHRoZSB1c2VyIGZhaWxlZCB0byBhdXRoZW50aWNhdGUuCisgICAgICAgICAgICAgICAgICAgIG1Jc1ZlcmlmeVVubG9ja09ubHkgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgZ2V0Q2FsbGJhY2soKS5rZXlndWFyZERvbmUoZmFsc2UpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVNjcmVlbihNb2RlLkxvY2tTY3JlZW4pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcHVibGljIHZvaWQgZ29Ub1VubG9ja1NjcmVlbigpIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBJY2NDYXJkLlN0YXRlIHNpbVN0YXRlID0gbVVwZGF0ZU1vbml0b3IuZ2V0U2ltU3RhdGUoKTsKKyAgICAgICAgICAgICAgICBpZiAoc3R1Y2tPbkxvY2tTY3JlZW5CZWNhdXNlU2ltTWlzc2luZygpCisgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKHNpbVN0YXRlID09IEljY0NhcmQuU3RhdGUuUFVLX1JFUVVJUkVEKSl7CisgICAgICAgICAgICAgICAgICAgIC8vIHN0dWNrIG9uIGxvY2sgc2NyZWVuIHdoZW4gc2ltIG1pc3Npbmcgb3IgcHVrJ2QKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoIWlzU2VjdXJlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgZ2V0Q2FsbGJhY2soKS5rZXlndWFyZERvbmUodHJ1ZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdXBkYXRlU2NyZWVuKE1vZGUuVW5sb2NrU2NyZWVuKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGZvcmdvdFBhdHRlcm4oYm9vbGVhbiBpc0ZvcmdvdHRlbikgeworICAgICAgICAgICAgICAgIGlmIChtRW5hYmxlRmFsbGJhY2spIHsKKyAgICAgICAgICAgICAgICAgICAgbUZvcmdvdFBhdHRlcm4gPSBpc0ZvcmdvdHRlbjsKKyAgICAgICAgICAgICAgICAgICAgdXBkYXRlU2NyZWVuKE1vZGUuVW5sb2NrU2NyZWVuKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyBib29sZWFuIGlzU2VjdXJlKCkgeworICAgICAgICAgICAgICAgIHJldHVybiBMb2NrUGF0dGVybktleWd1YXJkVmlldy50aGlzLmlzU2VjdXJlKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyBib29sZWFuIGlzVmVyaWZ5VW5sb2NrT25seSgpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbUlzVmVyaWZ5VW5sb2NrT25seTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcHVibGljIHZvaWQgcmVjcmVhdGVNZShDb25maWd1cmF0aW9uIGNvbmZpZykgeworICAgICAgICAgICAgICAgIG1Db25maWd1cmF0aW9uID0gY29uZmlnOworICAgICAgICAgICAgICAgIHJlY3JlYXRlU2NyZWVucygpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwdWJsaWMgdm9pZCB0YWtlRW1lcmdlbmN5Q2FsbEFjdGlvbigpIHsKKyAgICAgICAgICAgICAgICBwb2tlV2FrZWxvY2soRU1FUkdFTkNZX0NBTExfVElNRU9VVCk7CisgICAgICAgICAgICAgICAgaWYgKFRlbGVwaG9ueU1hbmFnZXIuZ2V0RGVmYXVsdCgpLmdldENhbGxTdGF0ZSgpCisgICAgICAgICAgICAgICAgICAgICAgICA9PSBUZWxlcGhvbnlNYW5hZ2VyLkNBTExfU1RBVEVfT0ZGSE9PSykgeworICAgICAgICAgICAgICAgICAgICBtTG9ja1BhdHRlcm5VdGlscy5yZXN1bWVDYWxsKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgSW50ZW50IGludGVudCA9IG5ldyBJbnRlbnQoQUNUSU9OX0VNRVJHRU5DWV9ESUFMKTsKKyAgICAgICAgICAgICAgICAgICAgaW50ZW50LnNldEZsYWdzKEludGVudC5GTEFHX0FDVElWSVRZX05FV19UQVNLCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBJbnRlbnQuRkxBR19BQ1RJVklUWV9FWENMVURFX0ZST01fUkVDRU5UUyk7CisgICAgICAgICAgICAgICAgICAgIGdldENvbnRleHQoKS5zdGFydEFjdGl2aXR5KGludGVudCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwdWJsaWMgdm9pZCBwb2tlV2FrZWxvY2soKSB7CisgICAgICAgICAgICAgICAgZ2V0Q2FsbGJhY2soKS5wb2tlV2FrZWxvY2soKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcHVibGljIHZvaWQgcG9rZVdha2Vsb2NrKGludCBtaWxsaXMpIHsKKyAgICAgICAgICAgICAgICBnZXRDYWxsYmFjaygpLnBva2VXYWtlbG9jayhtaWxsaXMpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwdWJsaWMgdm9pZCBrZXlndWFyZERvbmUoYm9vbGVhbiBhdXRoZW50aWNhdGVkKSB7CisgICAgICAgICAgICAgICAgZ2V0Q2FsbGJhY2soKS5rZXlndWFyZERvbmUoYXV0aGVudGljYXRlZCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIGtleWd1YXJkRG9uZURyYXdpbmcoKSB7CisgICAgICAgICAgICAgICAgLy8gaXJyZWxldmFudCB0byBrZXlndWFyZCBzY3JlZW4sIHRoZXkgc2hvdWxkbid0IGJlIGNhbGxpbmcgdGhpcworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBwdWJsaWMgdm9pZCByZXBvcnRGYWlsZWRVbmxvY2tBdHRlbXB0KCkgeworICAgICAgICAgICAgICAgIG1VcGRhdGVNb25pdG9yLnJlcG9ydEZhaWxlZEF0dGVtcHQoKTsKKyAgICAgICAgICAgICAgICBmaW5hbCBpbnQgZmFpbGVkQXR0ZW1wdHMgPSBtVXBkYXRlTW9uaXRvci5nZXRGYWlsZWRBdHRlbXB0cygpOworICAgICAgICAgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLAorICAgICAgICAgICAgICAgICAgICAicmVwb3J0RmFpbGVkUGF0dGVybkF0dGVtcHQ6ICMiICsgZmFpbGVkQXR0ZW1wdHMgKworICAgICAgICAgICAgICAgICAgICAiIChlbmFibGVGYWxsYmFjaz0iICsgbUVuYWJsZUZhbGxiYWNrICsgIikiKTsKKyAgICAgICAgICAgICAgICBmaW5hbCBib29sZWFuIHVzaW5nTG9ja1BhdHRlcm4gPSBtTG9ja1BhdHRlcm5VdGlscy5nZXRLZXlndWFyZFN0b3JlZFBhc3N3b3JkUXVhbGl0eSgpCisgICAgICAgICAgICAgICAgICAgICAgICA9PSBEZXZpY2VQb2xpY3lNYW5hZ2VyLlBBU1NXT1JEX1FVQUxJVFlfU09NRVRISU5HOworICAgICAgICAgICAgICAgIGlmICh1c2luZ0xvY2tQYXR0ZXJuICYmIG1FbmFibGVGYWxsYmFjayAmJiBmYWlsZWRBdHRlbXB0cyA9PQorICAgICAgICAgICAgICAgICAgICAgICAgKExvY2tQYXR0ZXJuVXRpbHMuRkFJTEVEX0FUVEVNUFRTX0JFRk9SRV9SRVNFVAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIExvY2tQYXR0ZXJuVXRpbHMuRkFJTEVEX0FUVEVNUFRTX0JFRk9SRV9USU1FT1VUKSkgeworICAgICAgICAgICAgICAgICAgICBzaG93QWxtb3N0QXRBY2NvdW50TG9naW5EaWFsb2coKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHVzaW5nTG9ja1BhdHRlcm4gJiYgbUVuYWJsZUZhbGxiYWNrCisgICAgICAgICAgICAgICAgICAgICAgICAmJiBmYWlsZWRBdHRlbXB0cyA+PSBMb2NrUGF0dGVyblV0aWxzLkZBSUxFRF9BVFRFTVBUU19CRUZPUkVfUkVTRVQpIHsKKyAgICAgICAgICAgICAgICAgICAgbUxvY2tQYXR0ZXJuVXRpbHMuc2V0UGVybWFuZW50bHlMb2NrZWQodHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVNjcmVlbihtTW9kZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgoZmFpbGVkQXR0ZW1wdHMgJSBMb2NrUGF0dGVyblV0aWxzLkZBSUxFRF9BVFRFTVBUU19CRUZPUkVfVElNRU9VVCkKKyAgICAgICAgICAgICAgICAgICAgICAgID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgc2hvd1RpbWVvdXREaWFsb2coKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbUxvY2tQYXR0ZXJuVXRpbHMucmVwb3J0RmFpbGVkUGFzc3dvcmRBdHRlbXB0KCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyBib29sZWFuIGRvZXNGYWxsYmFja1VubG9ja1NjcmVlbkV4aXN0KCkgeworICAgICAgICAgICAgICAgIHJldHVybiBtRW5hYmxlRmFsbGJhY2s7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJlcG9ydFN1Y2Nlc3NmdWxVbmxvY2tBdHRlbXB0KCkgeworICAgICAgICAgICAgICAgIG1Mb2NrUGF0dGVyblV0aWxzLnJlcG9ydFN1Y2Nlc3NmdWxQYXNzd29yZEF0dGVtcHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICAvKioKKyAgICAgICAgICogV2UnbGwgZ2V0IGtleSBldmVudHMgdGhlIGN1cnJlbnQgc2NyZWVuIGRvZXNuJ3QgdXNlLiBzZWUKKyAgICAgICAgICoge0BsaW5rIEtleWd1YXJkVmlld0Jhc2Ujb25LZXlEb3duKGludCwgYW5kcm9pZC52aWV3LktleUV2ZW50KX0KKyAgICAgICAgICovCisgICAgICAgIHNldEZvY3VzYWJsZUluVG91Y2hNb2RlKHRydWUpOworICAgICAgICBzZXREZXNjZW5kYW50Rm9jdXNhYmlsaXR5KEZPQ1VTX0FGVEVSX0RFU0NFTkRBTlRTKTsKKworICAgICAgICAvLyBjcmVhdGUgYm90aCB0aGUgbG9jayBhbmQgdW5sb2NrIHNjcmVlbiBzbyB0aGV5IGFyZSBxdWlja2x5IGF2YWlsYWJsZQorICAgICAgICAvLyB3aGVuIHRoZSBzY3JlZW4gdHVybnMgb24KKyAgICAgICAgbUxvY2tTY3JlZW4gPSBjcmVhdGVMb2NrU2NyZWVuKCk7CisgICAgICAgIGFkZFZpZXcobUxvY2tTY3JlZW4pOworICAgICAgICBmaW5hbCBVbmxvY2tNb2RlIHVubG9ja01vZGUgPSBnZXRVbmxvY2tNb2RlKCk7CisgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLAorICAgICAgICAgICAgIkxvY2tQYXR0ZXJuS2V5Z3VhcmRWaWV3IGN0b3I6IGFib3V0IHRvIGNyZWF0ZVVubG9ja1NjcmVlbkZvcjsgbUVuYWJsZUZhbGxiYWNrPSIKKyAgICAgICAgICAgICsgbUVuYWJsZUZhbGxiYWNrKTsKKyAgICAgICAgbVVubG9ja1NjcmVlbiA9IGNyZWF0ZVVubG9ja1NjcmVlbkZvcih1bmxvY2tNb2RlKTsKKyAgICAgICAgbVVubG9ja1NjcmVlbk1vZGUgPSB1bmxvY2tNb2RlOworCisgICAgICAgIG1heWJlRW5hYmxlRmFsbGJhY2soY29udGV4dCk7CisKKyAgICAgICAgYWRkVmlldyhtVW5sb2NrU2NyZWVuKTsKKyAgICAgICAgdXBkYXRlU2NyZWVuKG1Nb2RlKTsKKyAgICB9CisKKyAgICBwcml2YXRlIGNsYXNzIEFjY291bnRBbmFseXplciBpbXBsZW1lbnRzIEFjY291bnRNYW5hZ2VyQ2FsbGJhY2s8QnVuZGxlPiB7CisgICAgICAgIHByaXZhdGUgZmluYWwgQWNjb3VudE1hbmFnZXIgbUFjY291bnRNYW5hZ2VyOworICAgICAgICBwcml2YXRlIGZpbmFsIEFjY291bnRbXSBtQWNjb3VudHM7CisgICAgICAgIHByaXZhdGUgaW50IG1BY2NvdW50SW5kZXg7CisKKyAgICAgICAgcHJpdmF0ZSBBY2NvdW50QW5hbHl6ZXIoQWNjb3VudE1hbmFnZXIgYWNjb3VudE1hbmFnZXIpIHsKKyAgICAgICAgICAgIG1BY2NvdW50TWFuYWdlciA9IGFjY291bnRNYW5hZ2VyOworICAgICAgICAgICAgbUFjY291bnRzID0gYWNjb3VudE1hbmFnZXIuZ2V0QWNjb3VudHNCeVR5cGUoImNvbS5nb29nbGUiKTsKKyAgICAgICAgfQorCisgICAgICAgIHByaXZhdGUgdm9pZCBuZXh0KCkgeworICAgICAgICAgICAgLy8gaWYgd2UgYXJlIHJlYWR5IHRvIGVuYWJsZSB0aGUgZmFsbGJhY2sgb3IgaWYgd2UgZGVwbGV0ZWQgdGhlIGxpc3Qgb2YgYWNjb3VudHMKKyAgICAgICAgICAgIC8vIHRoZW4gZmluaXNoIGFuZCBnZXQgb3V0CisgICAgICAgICAgICBpZiAobUVuYWJsZUZhbGxiYWNrIHx8IG1BY2NvdW50SW5kZXggPj0gbUFjY291bnRzLmxlbmd0aCkgeworICAgICAgICAgICAgICAgIGlmIChtVW5sb2NrU2NyZWVuID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgTG9nLncoVEFHLCAibm8gdW5sb2NrIHNjcmVlbiB3aGVuIHRyeWluZyB0byBlbmFibGUgZmFsbGJhY2siKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1VbmxvY2tTY3JlZW4gaW5zdGFuY2VvZiBQYXR0ZXJuVW5sb2NrU2NyZWVuKSB7CisgICAgICAgICAgICAgICAgICAgICgoUGF0dGVyblVubG9ja1NjcmVlbiltVW5sb2NrU2NyZWVuKS5zZXRFbmFibGVGYWxsYmFjayhtRW5hYmxlRmFsbGJhY2spOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIGxvb2t1cCB0aGUgY29uZmlybUNyZWRlbnRpYWxzIGludGVudCBmb3IgdGhlIGN1cnJlbnQgYWNjb3VudAorICAgICAgICAgICAgbUFjY291bnRNYW5hZ2VyLmNvbmZpcm1DcmVkZW50aWFscyhtQWNjb3VudHNbbUFjY291bnRJbmRleF0sIG51bGwsIG51bGwsIHRoaXMsIG51bGwpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgc3RhcnQoKSB7CisgICAgICAgICAgICBtRW5hYmxlRmFsbGJhY2sgPSBmYWxzZTsKKyAgICAgICAgICAgIG1BY2NvdW50SW5kZXggPSAwOworICAgICAgICAgICAgbmV4dCgpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgcnVuKEFjY291bnRNYW5hZ2VyRnV0dXJlPEJ1bmRsZT4gZnV0dXJlKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIEJ1bmRsZSByZXN1bHQgPSBmdXR1cmUuZ2V0UmVzdWx0KCk7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5nZXRQYXJjZWxhYmxlKEFjY291bnRNYW5hZ2VyLktFWV9JTlRFTlQpICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgbUVuYWJsZUZhbGxiYWNrID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGNhdGNoIChPcGVyYXRpb25DYW5jZWxlZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgLy8ganVzdCBza2lwIHRoZSBhY2NvdW50IGlmIHdlIGFyZSB1bmFibGUgdG8gcXVlcnkgaXQKKyAgICAgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAvLyBqdXN0IHNraXAgdGhlIGFjY291bnQgaWYgd2UgYXJlIHVuYWJsZSB0byBxdWVyeSBpdAorICAgICAgICAgICAgfSBjYXRjaCAoQXV0aGVudGljYXRvckV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgLy8ganVzdCBza2lwIHRoZSBhY2NvdW50IGlmIHdlIGFyZSB1bmFibGUgdG8gcXVlcnkgaXQKKyAgICAgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICAgICAgbUFjY291bnRJbmRleCsrOworICAgICAgICAgICAgICAgIG5leHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBtYXliZUVuYWJsZUZhbGxiYWNrKENvbnRleHQgY29udGV4dCkgeworICAgICAgICAvLyBBc2sgdGhlIGFjY291bnQgbWFuYWdlciBpZiB3ZSBoYXZlIGFuIGFjY291bnQgdGhhdCBjYW4gYmUgdXNlZCBhcyBhCisgICAgICAgIC8vIGZhbGxiYWNrIGluIGNhc2UgdGhlIHVzZXIgZm9yZ2V0cyBoaXMgcGF0dGVybi4KKyAgICAgICAgQWNjb3VudEFuYWx5emVyIGFjY291bnRBbmFseXplciA9IG5ldyBBY2NvdW50QW5hbHl6ZXIoQWNjb3VudE1hbmFnZXIuZ2V0KGNvbnRleHQpKTsKKyAgICAgICAgYWNjb3VudEFuYWx5emVyLnN0YXJ0KCk7CisgICAgfQorCisKKyAgICAvLyBUT0RPOgorICAgIC8vIFRoaXMgb3ZlcmxvYWRlZCBtZXRob2Qgd2FzIGFkZGVkIHRvIHdvcmthcm91bmQgYSByYWNlIGNvbmRpdGlvbiBpbiB0aGUgZnJhbWV3b3JrIGJldHdlZW4KKyAgICAvLyBub3RpZmljYXRpb24gZm9yIG9yaWVudGF0aW9uIGNoYW5nZWQsIGxheW91dCgpIGFuZCBzd2l0Y2hpbmcgcmVzb3VyY2VzLiAgVGhpcyBjb2RlIGF0dGVtcHRzCisgICAgLy8gdG8gYXZvaWQgZHJhd2luZyB0aGUgaW5jb3JyZWN0IGxheW91dCB3aGlsZSB0aGluZ3MgYXJlIGluIHRyYW5zaXRpb24uICBUaGUgbWV0aG9kIGNhbiBqdXN0CisgICAgLy8gYmUgcmVtb3ZlZCBvbmNlIHRoZSByYWNlIGNvbmRpdGlvbiBpcyBmaXhlZC4gU2VlIGJ1Z3MgMjI2MjU3OCBhbmQgMjI5MjcxMy4KKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCBkaXNwYXRjaERyYXcoQ2FudmFzIGNhbnZhcykgeworICAgICAgICBpZiAoREVCVUcpIExvZy52KFRBRywgIioqKiBkaXNwYXRjaERyYXcoKSB0aW1lOiAiICsgU3lzdGVtQ2xvY2suZWxhcHNlZFJlYWx0aW1lKCkpOworICAgICAgICBzdXBlci5kaXNwYXRjaERyYXcoY2FudmFzKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCByZXNldCgpIHsKKyAgICAgICAgbUlzVmVyaWZ5VW5sb2NrT25seSA9IGZhbHNlOworICAgICAgICBtRm9yZ290UGF0dGVybiA9IGZhbHNlOworICAgICAgICB1cGRhdGVTY3JlZW4oZ2V0SW5pdGlhbE1vZGUoKSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgb25TY3JlZW5UdXJuZWRPZmYoKSB7CisgICAgICAgIG1TY3JlZW5PbiA9IGZhbHNlOworICAgICAgICBtRm9yZ290UGF0dGVybiA9IGZhbHNlOworICAgICAgICBpZiAobU1vZGUgPT0gTW9kZS5Mb2NrU2NyZWVuKSB7CisgICAgICAgICAgICgoS2V5Z3VhcmRTY3JlZW4pIG1Mb2NrU2NyZWVuKS5vblBhdXNlKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAoKEtleWd1YXJkU2NyZWVuKSBtVW5sb2NrU2NyZWVuKS5vblBhdXNlKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBvblNjcmVlblR1cm5lZE9uKCkgeworICAgICAgICBtU2NyZWVuT24gPSB0cnVlOworICAgICAgICBpZiAobU1vZGUgPT0gTW9kZS5Mb2NrU2NyZWVuKSB7CisgICAgICAgICAgICgoS2V5Z3VhcmRTY3JlZW4pIG1Mb2NrU2NyZWVuKS5vblJlc3VtZSgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgKChLZXlndWFyZFNjcmVlbikgbVVubG9ja1NjcmVlbikub25SZXN1bWUoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCByZWNyZWF0ZUxvY2tTY3JlZW4oKSB7CisgICAgICAgIGlmIChtTG9ja1NjcmVlbi5nZXRWaXNpYmlsaXR5KCkgPT0gVmlldy5WSVNJQkxFKSB7CisgICAgICAgICAgICAoKEtleWd1YXJkU2NyZWVuKSBtTG9ja1NjcmVlbikub25QYXVzZSgpOworICAgICAgICB9CisgICAgICAgICgoS2V5Z3VhcmRTY3JlZW4pIG1Mb2NrU2NyZWVuKS5jbGVhblVwKCk7CisgICAgICAgIHJlbW92ZVZpZXcobUxvY2tTY3JlZW4pOworCisgICAgICAgIG1Mb2NrU2NyZWVuID0gY3JlYXRlTG9ja1NjcmVlbigpOworICAgICAgICBtTG9ja1NjcmVlbi5zZXRWaXNpYmlsaXR5KFZpZXcuSU5WSVNJQkxFKTsKKyAgICAgICAgYWRkVmlldyhtTG9ja1NjcmVlbik7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHJlY3JlYXRlVW5sb2NrU2NyZWVuKCkgeworICAgICAgICBpZiAobVVubG9ja1NjcmVlbi5nZXRWaXNpYmlsaXR5KCkgPT0gVmlldy5WSVNJQkxFKSB7CisgICAgICAgICAgICAoKEtleWd1YXJkU2NyZWVuKSBtVW5sb2NrU2NyZWVuKS5vblBhdXNlKCk7CisgICAgICAgIH0KKyAgICAgICAgKChLZXlndWFyZFNjcmVlbikgbVVubG9ja1NjcmVlbikuY2xlYW5VcCgpOworICAgICAgICByZW1vdmVWaWV3KG1VbmxvY2tTY3JlZW4pOworCisgICAgICAgIGZpbmFsIFVubG9ja01vZGUgdW5sb2NrTW9kZSA9IGdldFVubG9ja01vZGUoKTsKKyAgICAgICAgbVVubG9ja1NjcmVlbiA9IGNyZWF0ZVVubG9ja1NjcmVlbkZvcih1bmxvY2tNb2RlKTsKKyAgICAgICAgbVVubG9ja1NjcmVlbi5zZXRWaXNpYmlsaXR5KFZpZXcuSU5WSVNJQkxFKTsKKyAgICAgICAgbVVubG9ja1NjcmVlbk1vZGUgPSB1bmxvY2tNb2RlOworICAgICAgICBhZGRWaWV3KG1VbmxvY2tTY3JlZW4pOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCByZWNyZWF0ZVNjcmVlbnMoKSB7CisgICAgICAgIHJlY3JlYXRlTG9ja1NjcmVlbigpOworICAgICAgICByZWNyZWF0ZVVubG9ja1NjcmVlbigpOworICAgICAgICB1cGRhdGVTY3JlZW4obU1vZGUpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIHdha2VXaGVuUmVhZHlUcShpbnQga2V5Q29kZSkgeworICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgIm9uV2FrZUtleSIpOworICAgICAgICBpZiAoa2V5Q29kZSA9PSBLZXlFdmVudC5LRVlDT0RFX01FTlUgJiYgaXNTZWN1cmUoKSAmJiAobU1vZGUgPT0gTW9kZS5Mb2NrU2NyZWVuKQorICAgICAgICAgICAgICAgICYmIChtVXBkYXRlTW9uaXRvci5nZXRTaW1TdGF0ZSgpICE9IEljY0NhcmQuU3RhdGUuUFVLX1JFUVVJUkVEKSkgeworICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJzd2l0Y2hpbmcgc2NyZWVucyB0byB1bmxvY2sgc2NyZWVuIGJlY2F1c2Ugd2FrZSBrZXkgd2FzIE1FTlUiKTsKKyAgICAgICAgICAgIHVwZGF0ZVNjcmVlbihNb2RlLlVubG9ja1NjcmVlbik7CisgICAgICAgICAgICBnZXRDYWxsYmFjaygpLnBva2VXYWtlbG9jaygpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJwb2tpbmcgd2FrZSBsb2NrIGltbWVkaWF0ZWx5Iik7CisgICAgICAgICAgICBnZXRDYWxsYmFjaygpLnBva2VXYWtlbG9jaygpOworICAgICAgICB9CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgdmVyaWZ5VW5sb2NrKCkgeworICAgICAgICBpZiAoIWlzU2VjdXJlKCkpIHsKKyAgICAgICAgICAgIC8vIG5vbi1zZWN1cmUga2V5Z3VhcmQgc2NyZWVucyBhcmUgc3VjY2Vzc2Z1bGwgYnkgZGVmYXVsdAorICAgICAgICAgICAgZ2V0Q2FsbGJhY2soKS5rZXlndWFyZERvbmUodHJ1ZSk7CisgICAgICAgIH0gZWxzZSBpZiAobVVubG9ja1NjcmVlbk1vZGUgIT0gVW5sb2NrTW9kZS5QYXR0ZXJuKSB7CisgICAgICAgICAgICAvLyBjYW4gb25seSB2ZXJpZnkgdW5sb2NrIHdoZW4gaW4gcGF0dGVybiBtb2RlCisgICAgICAgICAgICBnZXRDYWxsYmFjaygpLmtleWd1YXJkRG9uZShmYWxzZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBvdGhlcndpc2UsIGdvIHRvIHRoZSB1bmxvY2sgc2NyZWVuLCBzZWUgaWYgdGhleSBjYW4gdmVyaWZ5IGl0CisgICAgICAgICAgICBtSXNWZXJpZnlVbmxvY2tPbmx5ID0gdHJ1ZTsKKyAgICAgICAgICAgIHVwZGF0ZVNjcmVlbihNb2RlLlVubG9ja1NjcmVlbik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBjbGVhblVwKCkgeworICAgICAgICAoKEtleWd1YXJkU2NyZWVuKSBtTG9ja1NjcmVlbikub25QYXVzZSgpOworICAgICAgICAoKEtleWd1YXJkU2NyZWVuKSBtTG9ja1NjcmVlbikuY2xlYW5VcCgpOworICAgICAgICAoKEtleWd1YXJkU2NyZWVuKSBtVW5sb2NrU2NyZWVuKS5vblBhdXNlKCk7CisgICAgICAgICgoS2V5Z3VhcmRTY3JlZW4pIG1VbmxvY2tTY3JlZW4pLmNsZWFuVXAoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIGJvb2xlYW4gaXNTZWN1cmUoKSB7CisgICAgICAgIFVubG9ja01vZGUgdW5sb2NrTW9kZSA9IGdldFVubG9ja01vZGUoKTsKKyAgICAgICAgYm9vbGVhbiBzZWN1cmUgPSBmYWxzZTsKKyAgICAgICAgc3dpdGNoICh1bmxvY2tNb2RlKSB7CisgICAgICAgICAgICBjYXNlIFBhdHRlcm46CisgICAgICAgICAgICAgICAgc2VjdXJlID0gbUxvY2tQYXR0ZXJuVXRpbHMuaXNMb2NrUGF0dGVybkVuYWJsZWQoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU2ltUGluOgorICAgICAgICAgICAgICAgIHNlY3VyZSA9IG1VcGRhdGVNb25pdG9yLmdldFNpbVN0YXRlKCkgPT0gSWNjQ2FyZC5TdGF0ZS5QSU5fUkVRVUlSRUQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBtVXBkYXRlTW9uaXRvci5nZXRTaW1TdGF0ZSgpID09IEljY0NhcmQuU3RhdGUuUFVLX1JFUVVJUkVEOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBBY2NvdW50OgorICAgICAgICAgICAgICAgIHNlY3VyZSA9IHRydWU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFBhc3N3b3JkOgorICAgICAgICAgICAgICAgIHNlY3VyZSA9IG1Mb2NrUGF0dGVyblV0aWxzLmlzTG9ja1Bhc3N3b3JkRW5hYmxlZCgpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJ1bmtub3duIHVubG9jayBtb2RlICIgKyB1bmxvY2tNb2RlKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gc2VjdXJlOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCB1cGRhdGVTY3JlZW4oZmluYWwgTW9kZSBtb2RlKSB7CisKKyAgICAgICAgaWYgKERFQlVHX0NPTkZJR1VSQVRJT04pIExvZy52KFRBRywgIioqKiogVVBEQVRFIFNDUkVFTjogbW9kZT0iICsgbW9kZQorICAgICAgICAgICAgICAgICsgIiBsYXN0IG1vZGU9IiArIG1Nb2RlLCBuZXcgUnVudGltZUV4Y2VwdGlvbigpKTsKKworICAgICAgICBtTW9kZSA9IG1vZGU7CisKKyAgICAgICAgLy8gUmUtY3JlYXRlIHRoZSB1bmxvY2sgc2NyZWVuIGlmIG5lY2Vzc2FyeS4gVGhpcyBpcyBwcmltYXJpbHkgcmVxdWlyZWQgdG8gcHJvcGVybHkgaGFuZGxlCisgICAgICAgIC8vIFNJTSBzdGF0ZSBjaGFuZ2VzLiBUaGlzIHR5cGljYWxseSBoYXBwZW5zIHdoZW4gdGhpcyBtZXRob2QgaXMgY2FsbGVkIGJ5IHJlc2V0KCkKKyAgICAgICAgaWYgKG1vZGUgPT0gTW9kZS5VbmxvY2tTY3JlZW4gJiYgbUN1cnJlbnRVbmxvY2tNb2RlICE9IGdldFVubG9ja01vZGUoKSkgeworICAgICAgICAgICAgcmVjcmVhdGVVbmxvY2tTY3JlZW4oKTsKKyAgICAgICAgfQorCisgICAgICAgIGZpbmFsIFZpZXcgZ29uZVNjcmVlbiA9IChtb2RlID09IE1vZGUuTG9ja1NjcmVlbikgPyBtVW5sb2NrU2NyZWVuIDogbUxvY2tTY3JlZW47CisgICAgICAgIGZpbmFsIFZpZXcgdmlzaWJsZVNjcmVlbiA9IChtb2RlID09IE1vZGUuTG9ja1NjcmVlbikgPyBtTG9ja1NjcmVlbiA6IG1VbmxvY2tTY3JlZW47CisKKyAgICAgICAgLy8gZG8gdGhpcyBiZWZvcmUgY2hhbmdpbmcgdmlzaWJpbGl0eSBzbyBmb2N1cyBpc24ndCByZXF1ZXN0ZWQgYmVmb3JlIHRoZSBpbnB1dAorICAgICAgICAvLyBmbGFnIGlzIHNldAorICAgICAgICBtV2luZG93Q29udHJvbGxlci5zZXROZWVkc0lucHV0KCgoS2V5Z3VhcmRTY3JlZW4pdmlzaWJsZVNjcmVlbikubmVlZHNJbnB1dCgpKTsKKworICAgICAgICBpZiAoREVCVUdfQ09ORklHVVJBVElPTikgeworICAgICAgICAgICAgTG9nLnYoVEFHLCAiR29uZT0iICsgZ29uZVNjcmVlbik7CisgICAgICAgICAgICBMb2cudihUQUcsICJWaXNpYmxlPSIgKyB2aXNpYmxlU2NyZWVuKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChtU2NyZWVuT24pIHsKKyAgICAgICAgICAgIGlmIChnb25lU2NyZWVuLmdldFZpc2liaWxpdHkoKSA9PSBWaWV3LlZJU0lCTEUpIHsKKyAgICAgICAgICAgICAgICAoKEtleWd1YXJkU2NyZWVuKSBnb25lU2NyZWVuKS5vblBhdXNlKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodmlzaWJsZVNjcmVlbi5nZXRWaXNpYmlsaXR5KCkgIT0gVmlldy5WSVNJQkxFKSB7CisgICAgICAgICAgICAgICAgKChLZXlndWFyZFNjcmVlbikgdmlzaWJsZVNjcmVlbikub25SZXN1bWUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGdvbmVTY3JlZW4uc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOworICAgICAgICB2aXNpYmxlU2NyZWVuLnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKKyAgICAgICAgcmVxdWVzdExheW91dCgpOworCisgICAgICAgIGlmICghdmlzaWJsZVNjcmVlbi5yZXF1ZXN0Rm9jdXMoKSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigia2V5Z3VhcmQgc2NyZWVuIG11c3QgYmUgYWJsZSB0byB0YWtlICIKKyAgICAgICAgICAgICAgICAgICAgKyAiZm9jdXMgd2hlbiBzaG93biAiICsgdmlzaWJsZVNjcmVlbi5nZXRDbGFzcygpLmdldENhbm9uaWNhbE5hbWUoKSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBWaWV3IGNyZWF0ZUxvY2tTY3JlZW4oKSB7CisgICAgICAgIHJldHVybiBuZXcgTG9ja1NjcmVlbigKKyAgICAgICAgICAgICAgICBtQ29udGV4dCwKKyAgICAgICAgICAgICAgICBtQ29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgICAgICBtTG9ja1BhdHRlcm5VdGlscywKKyAgICAgICAgICAgICAgICBtVXBkYXRlTW9uaXRvciwKKyAgICAgICAgICAgICAgICBtS2V5Z3VhcmRTY3JlZW5DYWxsYmFjayk7CisgICAgfQorCisgICAgVmlldyBjcmVhdGVVbmxvY2tTY3JlZW5Gb3IoVW5sb2NrTW9kZSB1bmxvY2tNb2RlKSB7CisgICAgICAgIFZpZXcgdW5sb2NrVmlldyA9IG51bGw7CisgICAgICAgIGlmICh1bmxvY2tNb2RlID09IFVubG9ja01vZGUuUGF0dGVybikgeworICAgICAgICAgICAgUGF0dGVyblVubG9ja1NjcmVlbiB2aWV3ID0gbmV3IFBhdHRlcm5VbmxvY2tTY3JlZW4oCisgICAgICAgICAgICAgICAgICAgIG1Db250ZXh0LAorICAgICAgICAgICAgICAgICAgICBtQ29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgbUxvY2tQYXR0ZXJuVXRpbHMsCisgICAgICAgICAgICAgICAgICAgIG1VcGRhdGVNb25pdG9yLAorICAgICAgICAgICAgICAgICAgICBtS2V5Z3VhcmRTY3JlZW5DYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgbVVwZGF0ZU1vbml0b3IuZ2V0RmFpbGVkQXR0ZW1wdHMoKSk7CisgICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywKKyAgICAgICAgICAgICAgICAiY3JlYXRlVW5sb2NrU2NyZWVuRm9yKCIgKyB1bmxvY2tNb2RlICsgIik6IG1FbmFibGVGYWxsYmFjaz0iICsgbUVuYWJsZUZhbGxiYWNrKTsKKyAgICAgICAgICAgIHZpZXcuc2V0RW5hYmxlRmFsbGJhY2sobUVuYWJsZUZhbGxiYWNrKTsKKyAgICAgICAgICAgIHVubG9ja1ZpZXcgPSB2aWV3OworICAgICAgICB9IGVsc2UgaWYgKHVubG9ja01vZGUgPT0gVW5sb2NrTW9kZS5TaW1QaW4pIHsKKyAgICAgICAgICAgIHVubG9ja1ZpZXcgPSBuZXcgU2ltVW5sb2NrU2NyZWVuKAorICAgICAgICAgICAgICAgICAgICBtQ29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgbUNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICAgICAgICAgIG1VcGRhdGVNb25pdG9yLAorICAgICAgICAgICAgICAgICAgICBtS2V5Z3VhcmRTY3JlZW5DYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgbUxvY2tQYXR0ZXJuVXRpbHMpOworICAgICAgICB9IGVsc2UgaWYgKHVubG9ja01vZGUgPT0gVW5sb2NrTW9kZS5BY2NvdW50KSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHVubG9ja1ZpZXcgPSBuZXcgQWNjb3VudFVubG9ja1NjcmVlbigKKyAgICAgICAgICAgICAgICAgICAgICAgIG1Db250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgbUNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICBtVXBkYXRlTW9uaXRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1LZXlndWFyZFNjcmVlbkNhbGxiYWNrLAorICAgICAgICAgICAgICAgICAgICAgICAgbUxvY2tQYXR0ZXJuVXRpbHMpOworICAgICAgICAgICAgfSBjYXRjaCAoSWxsZWdhbFN0YXRlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBMb2cuaShUQUcsICJDb3VsZG4ndCBpbnN0YW50aWF0ZSBBY2NvdW50VW5sb2NrU2NyZWVuIgorICAgICAgICAgICAgICAgICAgICAgICsgIiAoSUFjY291bnRzU2VydmljZSBpc24ndCBhdmFpbGFibGUpIik7CisgICAgICAgICAgICAgICAgLy8gVE9ETzogTmVlZCBhIG1vcmUgZ2VuZXJhbCB3YXkgdG8gcHJvdmlkZSBhCisgICAgICAgICAgICAgICAgLy8gcGxhdGZvcm0tc3BlY2lmaWMgZmFsbGJhY2sgVUkgaGVyZS4KKyAgICAgICAgICAgICAgICAvLyBGb3Igbm93LCBpZiB3ZSBjYW4ndCBkaXNwbGF5IHRoZSBhY2NvdW50IGxvZ2luCisgICAgICAgICAgICAgICAgLy8gdW5sb2NrIFVJLCBqdXN0IGJyaW5nIGJhY2sgdGhlIHJlZ3VsYXIgIlBhdHRlcm4iIHVubG9jayBtb2RlLgorCisgICAgICAgICAgICAgICAgLy8gKFdlIGRvIHRoaXMgYnkgc2ltcGx5IHJldHVybmluZyBhIHJlZ3VsYXIgVW5sb2NrU2NyZWVuCisgICAgICAgICAgICAgICAgLy8gaGVyZS4gIFRoaXMgbWVhbnMgdGhhdCB0aGUgdXNlciB3aWxsIHN0aWxsIHNlZSB0aGUKKyAgICAgICAgICAgICAgICAvLyByZWd1bGFyIHBhdHRlcm4gdW5sb2NrIFVJLCByZWdhcmRsZXNzIG9mIHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgICAgIC8vIG1VbmxvY2tTY3JlZW5Nb2RlIG9yIHdoZXRoZXIgb3Igbm90IHdlJ3JlIGluIHRoZQorICAgICAgICAgICAgICAgIC8vICJwZXJtYW5lbnRseSBsb2NrZWQiIHN0YXRlLikKKyAgICAgICAgICAgICAgICB1bmxvY2tWaWV3ID0gY3JlYXRlVW5sb2NrU2NyZWVuRm9yKFVubG9ja01vZGUuUGF0dGVybik7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAodW5sb2NrTW9kZSA9PSBVbmxvY2tNb2RlLlBhc3N3b3JkKSB7CisgICAgICAgICAgICB1bmxvY2tWaWV3ID0gbmV3IFBhc3N3b3JkVW5sb2NrU2NyZWVuKAorICAgICAgICAgICAgICAgICAgICBtQ29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgbUNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICAgICAgICAgIG1Mb2NrUGF0dGVyblV0aWxzLAorICAgICAgICAgICAgICAgICAgICBtVXBkYXRlTW9uaXRvciwKKyAgICAgICAgICAgICAgICAgICAgbUtleWd1YXJkU2NyZWVuQ2FsbGJhY2spOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigidW5rbm93biB1bmxvY2sgbW9kZSAiICsgdW5sb2NrTW9kZSk7CisgICAgICAgIH0KKyAgICAgICAgbUN1cnJlbnRVbmxvY2tNb2RlID0gdW5sb2NrTW9kZTsKKyAgICAgICAgcmV0dXJuIHVubG9ja1ZpZXc7CisgICAgfQorCisgICAgLyoqCisgICAgICogR2l2ZW4gdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhpbmdzLCB3aGF0IHNob3VsZCBiZSB0aGUgaW5pdGlhbCBtb2RlIG9mCisgICAgICogdGhlIGxvY2sgc2NyZWVuIChsb2NrIG9yIHVubG9jaykuCisgICAgICovCisgICAgcHJpdmF0ZSBNb2RlIGdldEluaXRpYWxNb2RlKCkgeworICAgICAgICBmaW5hbCBJY2NDYXJkLlN0YXRlIHNpbVN0YXRlID0gbVVwZGF0ZU1vbml0b3IuZ2V0U2ltU3RhdGUoKTsKKyAgICAgICAgaWYgKHN0dWNrT25Mb2NrU2NyZWVuQmVjYXVzZVNpbU1pc3NpbmcoKSB8fCAoc2ltU3RhdGUgPT0gSWNjQ2FyZC5TdGF0ZS5QVUtfUkVRVUlSRUQpKSB7CisgICAgICAgICAgICByZXR1cm4gTW9kZS5Mb2NrU2NyZWVuOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gU2hvdyBMb2NrU2NyZWVuIGZpcnN0IGZvciBhbnkgc2NyZWVuIG90aGVyIHRoYW4gUGF0dGVybiB1bmxvY2suCisgICAgICAgICAgICBmaW5hbCBib29sZWFuIHVzaW5nTG9ja1BhdHRlcm4gPSBtTG9ja1BhdHRlcm5VdGlscy5nZXRLZXlndWFyZFN0b3JlZFBhc3N3b3JkUXVhbGl0eSgpCisgICAgICAgICAgICAgICAgICAgID09IERldmljZVBvbGljeU1hbmFnZXIuUEFTU1dPUkRfUVVBTElUWV9TT01FVEhJTkc7CisgICAgICAgICAgICBpZiAoaXNTZWN1cmUoKSAmJiB1c2luZ0xvY2tQYXR0ZXJuKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIE1vZGUuVW5sb2NrU2NyZWVuOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTW9kZS5Mb2NrU2NyZWVuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogR2l2ZW4gdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhpbmdzLCB3aGF0IHNob3VsZCB0aGUgdW5sb2NrIHNjcmVlbiBiZT8KKyAgICAgKi8KKyAgICBwcml2YXRlIFVubG9ja01vZGUgZ2V0VW5sb2NrTW9kZSgpIHsKKyAgICAgICAgZmluYWwgSWNjQ2FyZC5TdGF0ZSBzaW1TdGF0ZSA9IG1VcGRhdGVNb25pdG9yLmdldFNpbVN0YXRlKCk7CisgICAgICAgIFVubG9ja01vZGUgY3VycmVudE1vZGU7CisgICAgICAgIGlmIChzaW1TdGF0ZSA9PSBJY2NDYXJkLlN0YXRlLlBJTl9SRVFVSVJFRCB8fCBzaW1TdGF0ZSA9PSBJY2NDYXJkLlN0YXRlLlBVS19SRVFVSVJFRCkgeworICAgICAgICAgICAgY3VycmVudE1vZGUgPSBVbmxvY2tNb2RlLlNpbVBpbjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGZpbmFsIGludCBtb2RlID0gbUxvY2tQYXR0ZXJuVXRpbHMuZ2V0S2V5Z3VhcmRTdG9yZWRQYXNzd29yZFF1YWxpdHkoKTsKKyAgICAgICAgICAgIHN3aXRjaCAobW9kZSkgeworICAgICAgICAgICAgICAgIGNhc2UgRGV2aWNlUG9saWN5TWFuYWdlci5QQVNTV09SRF9RVUFMSVRZX05VTUVSSUM6CisgICAgICAgICAgICAgICAgY2FzZSBEZXZpY2VQb2xpY3lNYW5hZ2VyLlBBU1NXT1JEX1FVQUxJVFlfQUxQSEFCRVRJQzoKKyAgICAgICAgICAgICAgICBjYXNlIERldmljZVBvbGljeU1hbmFnZXIuUEFTU1dPUkRfUVVBTElUWV9BTFBIQU5VTUVSSUM6CisgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRNb2RlID0gVW5sb2NrTW9kZS5QYXNzd29yZDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBEZXZpY2VQb2xpY3lNYW5hZ2VyLlBBU1NXT1JEX1FVQUxJVFlfU09NRVRISU5HOgorICAgICAgICAgICAgICAgIGNhc2UgRGV2aWNlUG9saWN5TWFuYWdlci5QQVNTV09SRF9RVUFMSVRZX1VOU1BFQ0lGSUVEOgorICAgICAgICAgICAgICAgICAgICAvLyAiZm9yZ290IHBhdHRlcm4iIGJ1dHRvbiBpcyBvbmx5IGF2YWlsYWJsZSBpbiB0aGUgcGF0dGVybiBtb2RlLi4uCisgICAgICAgICAgICAgICAgICAgIGlmIChtRm9yZ290UGF0dGVybiB8fCBtTG9ja1BhdHRlcm5VdGlscy5pc1Blcm1hbmVudGx5TG9ja2VkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRNb2RlID0gVW5sb2NrTW9kZS5BY2NvdW50OworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudE1vZGUgPSBVbmxvY2tNb2RlLlBhdHRlcm47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJVbmtub3duIHVubG9jayBtb2RlOiIgKyBtb2RlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gY3VycmVudE1vZGU7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHNob3dUaW1lb3V0RGlhbG9nKCkgeworICAgICAgICBpbnQgdGltZW91dEluU2Vjb25kcyA9IChpbnQpIExvY2tQYXR0ZXJuVXRpbHMuRkFJTEVEX0FUVEVNUFRfVElNRU9VVF9NUyAvIDEwMDA7CisgICAgICAgIFN0cmluZyBtZXNzYWdlID0gbUNvbnRleHQuZ2V0U3RyaW5nKAorICAgICAgICAgICAgICAgIFIuc3RyaW5nLmxvY2tzY3JlZW5fdG9vX21hbnlfZmFpbGVkX2F0dGVtcHRzX2RpYWxvZ19tZXNzYWdlLAorICAgICAgICAgICAgICAgIG1VcGRhdGVNb25pdG9yLmdldEZhaWxlZEF0dGVtcHRzKCksCisgICAgICAgICAgICAgICAgdGltZW91dEluU2Vjb25kcyk7CisgICAgICAgIGZpbmFsIEFsZXJ0RGlhbG9nIGRpYWxvZyA9IG5ldyBBbGVydERpYWxvZy5CdWlsZGVyKG1Db250ZXh0KQorICAgICAgICAgICAgICAgIC5zZXRUaXRsZShudWxsKQorICAgICAgICAgICAgICAgIC5zZXRNZXNzYWdlKG1lc3NhZ2UpCisgICAgICAgICAgICAgICAgLnNldE5ldXRyYWxCdXR0b24oUi5zdHJpbmcub2ssIG51bGwpCisgICAgICAgICAgICAgICAgLmNyZWF0ZSgpOworICAgICAgICBkaWFsb2cuZ2V0V2luZG93KCkuc2V0VHlwZShXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5UWVBFX0tFWUdVQVJEX0RJQUxPRyk7CisgICAgICAgIGlmICghbUNvbnRleHQuZ2V0UmVzb3VyY2VzKCkuZ2V0Qm9vbGVhbigKKyAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmJvb2wuY29uZmlnX3NmX3Nsb3dCbHVyKSkgeworICAgICAgICAgICAgZGlhbG9nLmdldFdpbmRvdygpLnNldEZsYWdzKAorICAgICAgICAgICAgICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX0JMVVJfQkVISU5ELAorICAgICAgICAgICAgICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX0JMVVJfQkVISU5EKTsKKyAgICAgICAgfQorICAgICAgICBkaWFsb2cuc2hvdygpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBzaG93QWxtb3N0QXRBY2NvdW50TG9naW5EaWFsb2coKSB7CisgICAgICAgIGludCB0aW1lb3V0SW5TZWNvbmRzID0gKGludCkgTG9ja1BhdHRlcm5VdGlscy5GQUlMRURfQVRURU1QVF9USU1FT1VUX01TIC8gMTAwMDsKKyAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSBtQ29udGV4dC5nZXRTdHJpbmcoCisgICAgICAgICAgICAgICAgUi5zdHJpbmcubG9ja3NjcmVlbl9mYWlsZWRfYXR0ZW1wdHNfYWxtb3N0X2dsb2dpbiwKKyAgICAgICAgICAgICAgICBMb2NrUGF0dGVyblV0aWxzLkZBSUxFRF9BVFRFTVBUU19CRUZPUkVfUkVTRVQKKyAgICAgICAgICAgICAgICAtIExvY2tQYXR0ZXJuVXRpbHMuRkFJTEVEX0FUVEVNUFRTX0JFRk9SRV9USU1FT1VULAorICAgICAgICAgICAgICAgIExvY2tQYXR0ZXJuVXRpbHMuRkFJTEVEX0FUVEVNUFRTX0JFRk9SRV9USU1FT1VULAorICAgICAgICAgICAgICAgIHRpbWVvdXRJblNlY29uZHMpOworICAgICAgICBmaW5hbCBBbGVydERpYWxvZyBkaWFsb2cgPSBuZXcgQWxlcnREaWFsb2cuQnVpbGRlcihtQ29udGV4dCkKKyAgICAgICAgICAgICAgICAuc2V0VGl0bGUobnVsbCkKKyAgICAgICAgICAgICAgICAuc2V0TWVzc2FnZShtZXNzYWdlKQorICAgICAgICAgICAgICAgIC5zZXROZXV0cmFsQnV0dG9uKFIuc3RyaW5nLm9rLCBudWxsKQorICAgICAgICAgICAgICAgIC5jcmVhdGUoKTsKKyAgICAgICAgZGlhbG9nLmdldFdpbmRvdygpLnNldFR5cGUoV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuVFlQRV9LRVlHVUFSRF9ESUFMT0cpOworICAgICAgICBpZiAoIW1Db250ZXh0LmdldFJlc291cmNlcygpLmdldEJvb2xlYW4oCisgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5ib29sLmNvbmZpZ19zZl9zbG93Qmx1cikpIHsKKyAgICAgICAgICAgIGRpYWxvZy5nZXRXaW5kb3coKS5zZXRGbGFncygKKyAgICAgICAgICAgICAgICAgICAgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19CTFVSX0JFSElORCwKKyAgICAgICAgICAgICAgICAgICAgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19CTFVSX0JFSElORCk7CisgICAgICAgIH0KKyAgICAgICAgZGlhbG9nLnNob3coKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBVc2VkIHRvIHB1dCB3YWxscGFwZXIgb24gdGhlIGJhY2tncm91bmQgb2YgdGhlIGxvY2sgc2NyZWVuLiAgQ2VudGVycyBpdAorICAgICAqIEhvcml6b250YWxseSBhbmQgcGlucyB0aGUgYm90dG9tIChhc3N1bWluZyB0aGF0IHRoZSBsb2NrIHNjcmVlbiBpcyBhbGlnbmVkCisgICAgICogd2l0aCB0aGUgYm90dG9tLCBzbyB0aGUgd2FsbHBhcGVyIHNob3VsZCBleHRlbmQgYWJvdmUgdGhlIHRvcCBpbnRvIHRoZQorICAgICAqIHN0YXR1cyBiYXIpLgorICAgICAqLworICAgIHN0YXRpYyBwcml2YXRlIGNsYXNzIEZhc3RCaXRtYXBEcmF3YWJsZSBleHRlbmRzIERyYXdhYmxlIHsKKyAgICAgICAgcHJpdmF0ZSBCaXRtYXAgbUJpdG1hcDsKKyAgICAgICAgcHJpdmF0ZSBpbnQgbU9wYWNpdHk7CisKKyAgICAgICAgcHJpdmF0ZSBGYXN0Qml0bWFwRHJhd2FibGUoQml0bWFwIGJpdG1hcCkgeworICAgICAgICAgICAgbUJpdG1hcCA9IGJpdG1hcDsKKyAgICAgICAgICAgIG1PcGFjaXR5ID0gbUJpdG1hcC5oYXNBbHBoYSgpID8gUGl4ZWxGb3JtYXQuVFJBTlNMVUNFTlQgOiBQaXhlbEZvcm1hdC5PUEFRVUU7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHZvaWQgZHJhdyhDYW52YXMgY2FudmFzKSB7CisgICAgICAgICAgICBjYW52YXMuZHJhd0JpdG1hcCgKKyAgICAgICAgICAgICAgICAgICAgbUJpdG1hcCwKKyAgICAgICAgICAgICAgICAgICAgKGdldEJvdW5kcygpLndpZHRoKCkgLSBtQml0bWFwLmdldFdpZHRoKCkpIC8gMiwKKyAgICAgICAgICAgICAgICAgICAgKGdldEJvdW5kcygpLmhlaWdodCgpIC0gbUJpdG1hcC5nZXRIZWlnaHQoKSksCisgICAgICAgICAgICAgICAgICAgIG51bGwpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBpbnQgZ2V0T3BhY2l0eSgpIHsKKyAgICAgICAgICAgIHJldHVybiBtT3BhY2l0eTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBzZXRBbHBoYShpbnQgYWxwaGEpIHsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBzZXRDb2xvckZpbHRlcihDb2xvckZpbHRlciBjZikgeworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBpbnQgZ2V0SW50cmluc2ljV2lkdGgoKSB7CisgICAgICAgICAgICByZXR1cm4gbUJpdG1hcC5nZXRXaWR0aCgpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBpbnQgZ2V0SW50cmluc2ljSGVpZ2h0KCkgeworICAgICAgICAgICAgcmV0dXJuIG1CaXRtYXAuZ2V0SGVpZ2h0KCk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIGludCBnZXRNaW5pbXVtV2lkdGgoKSB7CisgICAgICAgICAgICByZXR1cm4gbUJpdG1hcC5nZXRXaWR0aCgpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBpbnQgZ2V0TWluaW11bUhlaWdodCgpIHsKKyAgICAgICAgICAgIHJldHVybiBtQml0bWFwLmdldEhlaWdodCgpOworICAgICAgICB9CisgICAgfQorfQorCmRpZmYgLS1naXQgYS9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL0xvY2tQYXR0ZXJuS2V5Z3VhcmRWaWV3UHJvcGVydGllcy5qYXZhIGIvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9Mb2NrUGF0dGVybktleWd1YXJkVmlld1Byb3BlcnRpZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDVhMDU4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9Mb2NrUGF0dGVybktleWd1YXJkVmlld1Byb3BlcnRpZXMuamF2YQpAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5pbnRlcm5hbC5wb2xpY3kuaW1wbDsKKworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLndpZGdldC5Mb2NrUGF0dGVyblV0aWxzOworCitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LkljY0NhcmQ7CisKKy8qKgorICogS25vd3MgaG93IHRvIGNyZWF0ZSBhIGxvY2sgcGF0dGVybiBrZXlndWFyZCB2aWV3LCBhbmQgYW5zd2VyIHF1ZXN0aW9ucyBhYm91dAorICogaXQgKGV2ZW4gaWYgaXQgaGFzbid0IGJlZW4gY3JlYXRlZCwgcGVyIHRoZSBpbnRlcmZhY2Ugc3BlY3MpLgorICovCitwdWJsaWMgY2xhc3MgTG9ja1BhdHRlcm5LZXlndWFyZFZpZXdQcm9wZXJ0aWVzIGltcGxlbWVudHMgS2V5Z3VhcmRWaWV3UHJvcGVydGllcyB7CisKKyAgICBwcml2YXRlIGZpbmFsIExvY2tQYXR0ZXJuVXRpbHMgbUxvY2tQYXR0ZXJuVXRpbHM7CisgICAgcHJpdmF0ZSBmaW5hbCBLZXlndWFyZFVwZGF0ZU1vbml0b3IgbVVwZGF0ZU1vbml0b3I7CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gbG9ja1BhdHRlcm5VdGlscyBVc2VkIHRvIGtub3cgd2hldGhlciB0aGUgcGF0dGVybiBlbmFibGVkLCBhbmQgcGFzc2VkCisgICAgICogICBvbnRvIHRoZSBrZXlnYXVyZCB2aWV3IHdoZW4gaXQgaXMgY3JlYXRlZC4KKyAgICAgKiBAcGFyYW0gdXBkYXRlTW9uaXRvciBVc2VkIHRvIGtub3cgd2hldGhlciB0aGUgc2ltIHBpbiBpcyBlbmFibGVkLCBhbmQgcGFzc2VkCisgICAgICogICBvbnRvIHRoZSBrZXlndWFyZCB2aWV3IHdoZW4gaXQgaXMgY3JlYXRlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgTG9ja1BhdHRlcm5LZXlndWFyZFZpZXdQcm9wZXJ0aWVzKExvY2tQYXR0ZXJuVXRpbHMgbG9ja1BhdHRlcm5VdGlscywKKyAgICAgICAgICAgIEtleWd1YXJkVXBkYXRlTW9uaXRvciB1cGRhdGVNb25pdG9yKSB7CisgICAgICAgIG1Mb2NrUGF0dGVyblV0aWxzID0gbG9ja1BhdHRlcm5VdGlsczsKKyAgICAgICAgbVVwZGF0ZU1vbml0b3IgPSB1cGRhdGVNb25pdG9yOworICAgIH0KKworICAgIHB1YmxpYyBLZXlndWFyZFZpZXdCYXNlIGNyZWF0ZUtleWd1YXJkVmlldyhDb250ZXh0IGNvbnRleHQsCisgICAgICAgICAgICBLZXlndWFyZFVwZGF0ZU1vbml0b3IgdXBkYXRlTW9uaXRvciwKKyAgICAgICAgICAgIEtleWd1YXJkV2luZG93Q29udHJvbGxlciBjb250cm9sbGVyKSB7CisgICAgICAgIHJldHVybiBuZXcgTG9ja1BhdHRlcm5LZXlndWFyZFZpZXcoY29udGV4dCwgdXBkYXRlTW9uaXRvciwKKyAgICAgICAgICAgICAgICBtTG9ja1BhdHRlcm5VdGlscywgY29udHJvbGxlcik7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gaXNTZWN1cmUoKSB7CisgICAgICAgIHJldHVybiBtTG9ja1BhdHRlcm5VdGlscy5pc1NlY3VyZSgpIHx8IGlzU2ltUGluU2VjdXJlKCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBib29sZWFuIGlzU2ltUGluU2VjdXJlKCkgeworICAgICAgICBmaW5hbCBJY2NDYXJkLlN0YXRlIHNpbVN0YXRlID0gbVVwZGF0ZU1vbml0b3IuZ2V0U2ltU3RhdGUoKTsKKyAgICAgICAgcmV0dXJuIChzaW1TdGF0ZSA9PSBJY2NDYXJkLlN0YXRlLlBJTl9SRVFVSVJFRCB8fCBzaW1TdGF0ZSA9PSBJY2NDYXJkLlN0YXRlLlBVS19SRVFVSVJFRAorICAgICAgICAgICAgfHwgc2ltU3RhdGUgPT0gSWNjQ2FyZC5TdGF0ZS5BQlNFTlQpOworICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9Mb2NrU2NyZWVuLmphdmEgYi9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL0xvY2tTY3JlZW4uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNWVmMWZhCi0tLSAvZGV2L251bGwKKysrIGIvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9Mb2NrU2NyZWVuLmphdmEKQEAgLTAsMCArMSw2ODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLmludGVybmFsLnBvbGljeS5pbXBsOworCitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuUjsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuSWNjQ2FyZDsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC53aWRnZXQuTG9ja1BhdHRlcm5VdGlsczsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC53aWRnZXQuU2xpZGluZ1RhYjsKKworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5yZXMuQ29uZmlndXJhdGlvbjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlczsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucmVzLkNvbG9yU3RhdGVMaXN0OworaW1wb3J0IGFuZHJvaWQudGV4dC5mb3JtYXQuRGF0ZUZvcm1hdDsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuS2V5RXZlbnQ7CitpbXBvcnQgYW5kcm9pZC52aWV3LkxheW91dEluZmxhdGVyOworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3R3JvdXA7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuKjsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlOworaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CitpbXBvcnQgYW5kcm9pZC5tZWRpYS5BdWRpb01hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5vcy5TeXN0ZW1DbG9jazsKK2ltcG9ydCBhbmRyb2lkLm9zLlN5c3RlbVByb3BlcnRpZXM7CitpbXBvcnQgYW5kcm9pZC5wcm92aWRlci5TZXR0aW5nczsKKworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEuaW8uRmlsZTsKKworLyoqCisgKiBUaGUgc2NyZWVuIHdpdGhpbiB7QGxpbmsgTG9ja1BhdHRlcm5LZXlndWFyZFZpZXd9IHRoYXQgc2hvd3MgZ2VuZXJhbAorICogaW5mb3JtYXRpb24gYWJvdXQgdGhlIGRldmljZSBkZXBlbmRpbmcgb24gaXRzIHN0YXRlLCBhbmQgaG93IHRvIGdldAorICogcGFzdCBpdCwgYXMgYXBwbGljYWJsZS4KKyAqLworY2xhc3MgTG9ja1NjcmVlbiBleHRlbmRzIExpbmVhckxheW91dCBpbXBsZW1lbnRzIEtleWd1YXJkU2NyZWVuLCBLZXlndWFyZFVwZGF0ZU1vbml0b3IuSW5mb0NhbGxiYWNrLAorICAgICAgICBLZXlndWFyZFVwZGF0ZU1vbml0b3IuU2ltU3RhdGVDYWxsYmFjaywgU2xpZGluZ1RhYi5PblRyaWdnZXJMaXN0ZW5lciB7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIERCRyA9IGZhbHNlOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSAiTG9ja1NjcmVlbiI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEVOQUJMRV9NRU5VX0tFWV9GSUxFID0gIi9kYXRhL2xvY2FsL2VuYWJsZV9tZW51X2tleSI7CisKKyAgICBwcml2YXRlIFN0YXR1cyBtU3RhdHVzID0gU3RhdHVzLk5vcm1hbDsKKworICAgIHByaXZhdGUgZmluYWwgTG9ja1BhdHRlcm5VdGlscyBtTG9ja1BhdHRlcm5VdGlsczsKKyAgICBwcml2YXRlIGZpbmFsIEtleWd1YXJkVXBkYXRlTW9uaXRvciBtVXBkYXRlTW9uaXRvcjsKKyAgICBwcml2YXRlIGZpbmFsIEtleWd1YXJkU2NyZWVuQ2FsbGJhY2sgbUNhbGxiYWNrOworCisgICAgcHJpdmF0ZSBUZXh0VmlldyBtQ2FycmllcjsKKyAgICBwcml2YXRlIFNsaWRpbmdUYWIgbVNlbGVjdG9yOworICAgIHByaXZhdGUgVGV4dFZpZXcgbVRpbWU7CisgICAgcHJpdmF0ZSBUZXh0VmlldyBtRGF0ZTsKKyAgICBwcml2YXRlIFRleHRWaWV3IG1TdGF0dXMxOworICAgIHByaXZhdGUgVGV4dFZpZXcgbVN0YXR1czI7CisgICAgcHJpdmF0ZSBUZXh0VmlldyBtU2NyZWVuTG9ja2VkOworICAgIHByaXZhdGUgVGV4dFZpZXcgbUVtZXJnZW5jeUNhbGxUZXh0OworICAgIHByaXZhdGUgQnV0dG9uIG1FbWVyZ2VuY3lDYWxsQnV0dG9uOworCisgICAgLy8gY3VycmVudCBjb25maWd1cmF0aW9uIHN0YXRlIG9mIGtleWJvYXJkIGFuZCBkaXNwbGF5CisgICAgcHJpdmF0ZSBpbnQgbUtleWJvYXJkSGlkZGVuOworICAgIHByaXZhdGUgaW50IG1DcmVhdGlvbk9yaWVudGF0aW9uOworCisgICAgLy8gYXJlIHdlIHNob3dpbmcgYmF0dGVyeSBpbmZvcm1hdGlvbj8KKyAgICBwcml2YXRlIGJvb2xlYW4gbVNob3dpbmdCYXR0ZXJ5SW5mbyA9IGZhbHNlOworCisgICAgLy8gbGFzdCBrbm93biBwbHVnZ2VkIGluIHN0YXRlCisgICAgcHJpdmF0ZSBib29sZWFuIG1QbHVnZ2VkSW4gPSBmYWxzZTsKKworICAgIC8vIGxhc3Qga25vd24gYmF0dGVyeSBsZXZlbAorICAgIHByaXZhdGUgaW50IG1CYXR0ZXJ5TGV2ZWwgPSAxMDA7CisKKyAgICBwcml2YXRlIFN0cmluZyBtTmV4dEFsYXJtID0gbnVsbDsKKyAgICBwcml2YXRlIERyYXdhYmxlIG1BbGFybUljb24gPSBudWxsOworICAgIHByaXZhdGUgU3RyaW5nIG1DaGFyZ2luZyA9IG51bGw7CisgICAgcHJpdmF0ZSBEcmF3YWJsZSBtQ2hhcmdpbmdJY29uID0gbnVsbDsKKworICAgIHByaXZhdGUgYm9vbGVhbiBtU2lsZW50TW9kZTsKKyAgICBwcml2YXRlIEF1ZGlvTWFuYWdlciBtQXVkaW9NYW5hZ2VyOworICAgIHByaXZhdGUgU3RyaW5nIG1EYXRlRm9ybWF0U3RyaW5nOworICAgIHByaXZhdGUgamF2YS50ZXh0LkRhdGVGb3JtYXQgbVRpbWVGb3JtYXQ7CisgICAgcHJpdmF0ZSBib29sZWFuIG1FbmFibGVNZW51S2V5SW5Mb2NrU2NyZWVuOworCisgICAgLyoqCisgICAgICogVGhlIHN0YXR1cyBvZiB0aGlzIGxvY2sgc2NyZWVuLgorICAgICAqLworICAgIGVudW0gU3RhdHVzIHsKKyAgICAgICAgLyoqCisgICAgICAgICAqIE5vcm1hbCBjYXNlIChzaW0gY2FyZCBwcmVzZW50LCBpdCdzIG5vdCBsb2NrZWQpCisgICAgICAgICAqLworICAgICAgICBOb3JtYWwodHJ1ZSksCisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFRoZSBzaW0gY2FyZCBpcyAnbmV0d29yayBsb2NrZWQnLgorICAgICAgICAgKi8KKyAgICAgICAgTmV0d29ya0xvY2tlZCh0cnVlKSwKKworICAgICAgICAvKioKKyAgICAgICAgICogVGhlIHNpbSBjYXJkIGlzIG1pc3NpbmcuCisgICAgICAgICAqLworICAgICAgICBTaW1NaXNzaW5nKGZhbHNlKSwKKworICAgICAgICAvKioKKyAgICAgICAgICogVGhlIHNpbSBjYXJkIGlzIG1pc3NpbmcsIGFuZCB0aGlzIGlzIHRoZSBkZXZpY2UgaXNuJ3QgcHJvdmlzaW9uZWQsIHNvIHdlIGRvbid0IGxldAorICAgICAgICAgKiB0aGVtIGdldCBwYXN0IHRoZSBzY3JlZW4uCisgICAgICAgICAqLworICAgICAgICBTaW1NaXNzaW5nTG9ja2VkKGZhbHNlKSwKKworICAgICAgICAvKioKKyAgICAgICAgICogVGhlIHNpbSBjYXJkIGlzIFBVSyBsb2NrZWQsIG1lYW5pbmcgdGhleSd2ZSBlbnRlcmVkIHRoZSB3cm9uZyBzaW0gdW5sb2NrIGNvZGUgdG9vIG1hbnkKKyAgICAgICAgICogdGltZXMuCisgICAgICAgICAqLworICAgICAgICBTaW1QdWtMb2NrZWQoZmFsc2UpLAorCisgICAgICAgIC8qKgorICAgICAgICAgKiBUaGUgc2ltIGNhcmQgaXMgbG9ja2VkLgorICAgICAgICAgKi8KKyAgICAgICAgU2ltTG9ja2VkKHRydWUpOworCisgICAgICAgIHByaXZhdGUgZmluYWwgYm9vbGVhbiBtU2hvd1N0YXR1c0xpbmVzOworCisgICAgICAgIFN0YXR1cyhib29sZWFuIG1TaG93U3RhdHVzTGluZXMpIHsKKyAgICAgICAgICAgIHRoaXMubVNob3dTdGF0dXNMaW5lcyA9IG1TaG93U3RhdHVzTGluZXM7CisgICAgICAgIH0KKworICAgICAgICAvKioKKyAgICAgICAgICogQHJldHVybiBXaGV0aGVyIHRoZSBzdGF0dXMgbGluZXMgKGJhdHRlcnkgbGV2ZWwgYW5kIC8gb3IgbmV4dCBhbGFybSkgYXJlIHNob3duIHdoaWxlCisgICAgICAgICAqICAgICAgICAgaW4gdGhpcyBzdGF0ZS4gIE1vc3RseSBkaWN0YXRlZCBieSB3aGV0aGVyIHRoaXMgaXMgcm9vbSBmb3IgdGhlbS4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBib29sZWFuIHNob3dTdGF0dXNMaW5lcygpIHsKKyAgICAgICAgICAgIHJldHVybiBtU2hvd1N0YXR1c0xpbmVzOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogSW4gZ2VuZXJhbCwgd2UgZW5hYmxlIHVubG9ja2luZyB0aGUgaW5zZWN1cmUga2V5IGd1YXJkIHdpdGggdGhlIG1lbnUga2V5LiBIb3dldmVyLCB0aGVyZSBhcmUKKyAgICAgKiBzb21lIGNhc2VzIHdoZXJlIHdlIHdpc2ggdG8gZGlzYWJsZSBpdCwgbm90YWJseSB3aGVuIHRoZSBtZW51IGJ1dHRvbiBwbGFjZW1lbnQgb3IgdGVjaG5vbG9neQorICAgICAqIGlzIHByb25lIHRvIGZhbHNlIHBvc2l0aXZlcy4KKyAgICAgKgorICAgICAqIEByZXR1cm4gdHJ1ZSBpZiB0aGUgbWVudSBrZXkgc2hvdWxkIGJlIGVuYWJsZWQKKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gc2hvdWxkRW5hYmxlTWVudUtleSgpIHsKKyAgICAgICAgZmluYWwgUmVzb3VyY2VzIHJlcyA9IGdldFJlc291cmNlcygpOworICAgICAgICBmaW5hbCBib29sZWFuIGNvbmZpZ0Rpc2FibGVkID0gcmVzLmdldEJvb2xlYW4oUi5ib29sLmNvbmZpZ19kaXNhYmxlTWVudUtleUluTG9ja1NjcmVlbik7CisgICAgICAgIGZpbmFsIGJvb2xlYW4gaXNNb25rZXkgPSBTeXN0ZW1Qcm9wZXJ0aWVzLmdldEJvb2xlYW4oInJvLm1vbmtleSIsIGZhbHNlKTsKKyAgICAgICAgZmluYWwgYm9vbGVhbiBmaWxlT3ZlcnJpZGUgPSAobmV3IEZpbGUoRU5BQkxFX01FTlVfS0VZX0ZJTEUpKS5leGlzdHMoKTsKKyAgICAgICAgcmV0dXJuICFjb25maWdEaXNhYmxlZCB8fCBpc01vbmtleSB8fCBmaWxlT3ZlcnJpZGU7CisgICAgfQorCisgICAgLyoqCisgICAgICogQHBhcmFtIGNvbnRleHQgVXNlZCB0byBzZXR1cCB0aGUgdmlldy4KKyAgICAgKiBAcGFyYW0gY29uZmlndXJhdGlvbiBUaGUgY3VycmVudCBjb25maWd1cmF0aW9uLiBVc2VkIHRvIHVzZSB3aGVuIHNlbGVjdGluZyBsYXlvdXQsIGV0Yy4KKyAgICAgKiBAcGFyYW0gbG9ja1BhdHRlcm5VdGlscyBVc2VkIHRvIGtub3cgdGhlIHN0YXRlIG9mIHRoZSBsb2NrIHBhdHRlcm4gc2V0dGluZ3MuCisgICAgICogQHBhcmFtIHVwZGF0ZU1vbml0b3IgVXNlZCB0byByZWdpc3RlciBmb3IgdXBkYXRlcyBvbiB2YXJpb3VzIGtleWd1YXJkIHJlbGF0ZWQKKyAgICAgKiAgICBzdGF0ZSwgYW5kIHF1ZXJ5IHRoZSBpbml0aWFsIHN0YXRlIGF0IHNldHVwLgorICAgICAqIEBwYXJhbSBjYWxsYmFjayBVc2VkIHRvIGNvbW11bmljYXRlIGJhY2sgdG8gdGhlIGhvc3Qga2V5Z3VhcmQgdmlldy4KKyAgICAgKi8KKyAgICBMb2NrU2NyZWVuKENvbnRleHQgY29udGV4dCwgQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uLCBMb2NrUGF0dGVyblV0aWxzIGxvY2tQYXR0ZXJuVXRpbHMsCisgICAgICAgICAgICBLZXlndWFyZFVwZGF0ZU1vbml0b3IgdXBkYXRlTW9uaXRvciwKKyAgICAgICAgICAgIEtleWd1YXJkU2NyZWVuQ2FsbGJhY2sgY2FsbGJhY2spIHsKKyAgICAgICAgc3VwZXIoY29udGV4dCk7CisgICAgICAgIG1Mb2NrUGF0dGVyblV0aWxzID0gbG9ja1BhdHRlcm5VdGlsczsKKyAgICAgICAgbVVwZGF0ZU1vbml0b3IgPSB1cGRhdGVNb25pdG9yOworICAgICAgICBtQ2FsbGJhY2sgPSBjYWxsYmFjazsKKworICAgICAgICBtRW5hYmxlTWVudUtleUluTG9ja1NjcmVlbiA9IHNob3VsZEVuYWJsZU1lbnVLZXkoKTsKKworICAgICAgICBtQ3JlYXRpb25PcmllbnRhdGlvbiA9IGNvbmZpZ3VyYXRpb24ub3JpZW50YXRpb247CisKKyAgICAgICAgbUtleWJvYXJkSGlkZGVuID0gY29uZmlndXJhdGlvbi5oYXJkS2V5Ym9hcmRIaWRkZW47CisKKyAgICAgICAgaWYgKExvY2tQYXR0ZXJuS2V5Z3VhcmRWaWV3LkRFQlVHX0NPTkZJR1VSQVRJT04pIHsKKyAgICAgICAgICAgIExvZy52KFRBRywgIioqKioqIENSRUFUSU5HIExPQ0sgU0NSRUVOIiwgbmV3IFJ1bnRpbWVFeGNlcHRpb24oKSk7CisgICAgICAgICAgICBMb2cudihUQUcsICJDdXIgb3JpZW50PSIgKyBtQ3JlYXRpb25PcmllbnRhdGlvbgorICAgICAgICAgICAgICAgICAgICArICIgcmVzIG9yaWVudD0iICsgY29udGV4dC5nZXRSZXNvdXJjZXMoKS5nZXRDb25maWd1cmF0aW9uKCkub3JpZW50YXRpb24pOworICAgICAgICB9CisKKyAgICAgICAgZmluYWwgTGF5b3V0SW5mbGF0ZXIgaW5mbGF0ZXIgPSBMYXlvdXRJbmZsYXRlci5mcm9tKGNvbnRleHQpOworICAgICAgICBpZiAoREJHKSBMb2cudihUQUcsICJDcmVhdGlvbiBvcmllbnRhdGlvbiA9ICIgKyBtQ3JlYXRpb25PcmllbnRhdGlvbik7CisgICAgICAgIGlmIChtQ3JlYXRpb25PcmllbnRhdGlvbiAhPSBDb25maWd1cmF0aW9uLk9SSUVOVEFUSU9OX0xBTkRTQ0FQRSkgeworICAgICAgICAgICAgaW5mbGF0ZXIuaW5mbGF0ZShSLmxheW91dC5rZXlndWFyZF9zY3JlZW5fdGFiX3VubG9jaywgdGhpcywgdHJ1ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpbmZsYXRlci5pbmZsYXRlKFIubGF5b3V0LmtleWd1YXJkX3NjcmVlbl90YWJfdW5sb2NrX2xhbmQsIHRoaXMsIHRydWUpOworICAgICAgICB9CisKKyAgICAgICAgbUNhcnJpZXIgPSAoVGV4dFZpZXcpIGZpbmRWaWV3QnlJZChSLmlkLmNhcnJpZXIpOworICAgICAgICAvLyBSZXF1aXJlZCBmb3IgTWFycXVlZSB0byB3b3JrCisgICAgICAgIG1DYXJyaWVyLnNldFNlbGVjdGVkKHRydWUpOworICAgICAgICBtQ2Fycmllci5zZXRUZXh0Q29sb3IoMHhmZmZmZmZmZik7CisKKyAgICAgICAgbURhdGUgPSAoVGV4dFZpZXcpIGZpbmRWaWV3QnlJZChSLmlkLmRhdGUpOworICAgICAgICBtU3RhdHVzMSA9IChUZXh0VmlldykgZmluZFZpZXdCeUlkKFIuaWQuc3RhdHVzMSk7CisgICAgICAgIG1TdGF0dXMyID0gKFRleHRWaWV3KSBmaW5kVmlld0J5SWQoUi5pZC5zdGF0dXMyKTsKKworICAgICAgICBtU2NyZWVuTG9ja2VkID0gKFRleHRWaWV3KSBmaW5kVmlld0J5SWQoUi5pZC5zY3JlZW5Mb2NrZWQpOworICAgICAgICBtU2VsZWN0b3IgPSAoU2xpZGluZ1RhYikgZmluZFZpZXdCeUlkKFIuaWQudGFiX3NlbGVjdG9yKTsKKyAgICAgICAgbVNlbGVjdG9yLnNldEhvbGRBZnRlclRyaWdnZXIodHJ1ZSwgZmFsc2UpOworICAgICAgICBtU2VsZWN0b3Iuc2V0TGVmdEhpbnRUZXh0KFIuc3RyaW5nLmxvY2tzY3JlZW5fdW5sb2NrX2xhYmVsKTsKKworICAgICAgICBtRW1lcmdlbmN5Q2FsbFRleHQgPSAoVGV4dFZpZXcpIGZpbmRWaWV3QnlJZChSLmlkLmVtZXJnZW5jeUNhbGxUZXh0KTsKKyAgICAgICAgbUVtZXJnZW5jeUNhbGxCdXR0b24gPSAoQnV0dG9uKSBmaW5kVmlld0J5SWQoUi5pZC5lbWVyZ2VuY3lDYWxsQnV0dG9uKTsKKyAgICAgICAgbUVtZXJnZW5jeUNhbGxCdXR0b24uc2V0VGV4dChSLnN0cmluZy5sb2Nrc2NyZWVuX2VtZXJnZW5jeV9jYWxsKTsKKworICAgICAgICBtTG9ja1BhdHRlcm5VdGlscy51cGRhdGVFbWVyZ2VuY3lDYWxsQnV0dG9uU3RhdGUobUVtZXJnZW5jeUNhbGxCdXR0b24pOworICAgICAgICBtRW1lcmdlbmN5Q2FsbEJ1dHRvbi5zZXRPbkNsaWNrTGlzdGVuZXIobmV3IFZpZXcuT25DbGlja0xpc3RlbmVyKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgb25DbGljayhWaWV3IHYpIHsKKyAgICAgICAgICAgICAgICBtQ2FsbGJhY2sudGFrZUVtZXJnZW5jeUNhbGxBY3Rpb24oKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisKKworICAgICAgICBzZXRGb2N1c2FibGUodHJ1ZSk7CisgICAgICAgIHNldEZvY3VzYWJsZUluVG91Y2hNb2RlKHRydWUpOworICAgICAgICBzZXREZXNjZW5kYW50Rm9jdXNhYmlsaXR5KFZpZXdHcm91cC5GT0NVU19CTE9DS19ERVNDRU5EQU5UUyk7CisKKyAgICAgICAgdXBkYXRlTW9uaXRvci5yZWdpc3RlckluZm9DYWxsYmFjayh0aGlzKTsKKyAgICAgICAgdXBkYXRlTW9uaXRvci5yZWdpc3RlclNpbVN0YXRlQ2FsbGJhY2sodGhpcyk7CisKKyAgICAgICAgbUF1ZGlvTWFuYWdlciA9IChBdWRpb01hbmFnZXIpIGdldENvbnRleHQoKS5nZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuQVVESU9fU0VSVklDRSk7CisgICAgICAgIG1TaWxlbnRNb2RlID0gaXNTaWxlbnRNb2RlKCk7CisKKyAgICAgICAgbVNlbGVjdG9yLnNldExlZnRUYWJSZXNvdXJjZXMoCisgICAgICAgICAgICAgICAgUi5kcmF3YWJsZS5pY19qb2dfZGlhbF91bmxvY2ssCisgICAgICAgICAgICAgICAgUi5kcmF3YWJsZS5qb2dfdGFiX3RhcmdldF9ncmVlbiwKKyAgICAgICAgICAgICAgICBSLmRyYXdhYmxlLmpvZ190YWJfYmFyX2xlZnRfdW5sb2NrLAorICAgICAgICAgICAgICAgIFIuZHJhd2FibGUuam9nX3RhYl9sZWZ0X3VubG9jayk7CisKKyAgICAgICAgdXBkYXRlUmlnaHRUYWJSZXNvdXJjZXMoKTsKKworICAgICAgICBtU2VsZWN0b3Iuc2V0T25UcmlnZ2VyTGlzdGVuZXIodGhpcyk7CisKKyAgICAgICAgcmVzZXRTdGF0dXNJbmZvKHVwZGF0ZU1vbml0b3IpOworICAgIH0KKworICAgIHByaXZhdGUgYm9vbGVhbiBpc1NpbGVudE1vZGUoKSB7CisgICAgICAgIHJldHVybiBtQXVkaW9NYW5hZ2VyLmdldFJpbmdlck1vZGUoKSAhPSBBdWRpb01hbmFnZXIuUklOR0VSX01PREVfTk9STUFMOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCB1cGRhdGVSaWdodFRhYlJlc291cmNlcygpIHsKKyAgICAgICAgYm9vbGVhbiB2aWJlID0gbVNpbGVudE1vZGUKKyAgICAgICAgICAgICYmIChtQXVkaW9NYW5hZ2VyLmdldFJpbmdlck1vZGUoKSA9PSBBdWRpb01hbmFnZXIuUklOR0VSX01PREVfVklCUkFURSk7CisKKyAgICAgICAgbVNlbGVjdG9yLnNldFJpZ2h0VGFiUmVzb3VyY2VzKAorICAgICAgICAgICAgICAgIG1TaWxlbnRNb2RlID8gKCB2aWJlID8gUi5kcmF3YWJsZS5pY19qb2dfZGlhbF92aWJyYXRlX29uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBSLmRyYXdhYmxlLmljX2pvZ19kaWFsX3NvdW5kX29mZiApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBSLmRyYXdhYmxlLmljX2pvZ19kaWFsX3NvdW5kX29uLAorICAgICAgICAgICAgICAgIG1TaWxlbnRNb2RlID8gUi5kcmF3YWJsZS5qb2dfdGFiX3RhcmdldF95ZWxsb3cKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFIuZHJhd2FibGUuam9nX3RhYl90YXJnZXRfZ3JheSwKKyAgICAgICAgICAgICAgICBtU2lsZW50TW9kZSA/IFIuZHJhd2FibGUuam9nX3RhYl9iYXJfcmlnaHRfc291bmRfb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFIuZHJhd2FibGUuam9nX3RhYl9iYXJfcmlnaHRfc291bmRfb2ZmLAorICAgICAgICAgICAgICAgIG1TaWxlbnRNb2RlID8gUi5kcmF3YWJsZS5qb2dfdGFiX3JpZ2h0X3NvdW5kX29uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBSLmRyYXdhYmxlLmpvZ190YWJfcmlnaHRfc291bmRfb2ZmKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgcmVzZXRTdGF0dXNJbmZvKEtleWd1YXJkVXBkYXRlTW9uaXRvciB1cGRhdGVNb25pdG9yKSB7CisgICAgICAgIG1TaG93aW5nQmF0dGVyeUluZm8gPSB1cGRhdGVNb25pdG9yLnNob3VsZFNob3dCYXR0ZXJ5SW5mbygpOworICAgICAgICBtUGx1Z2dlZEluID0gdXBkYXRlTW9uaXRvci5pc0RldmljZVBsdWdnZWRJbigpOworICAgICAgICBtQmF0dGVyeUxldmVsID0gdXBkYXRlTW9uaXRvci5nZXRCYXR0ZXJ5TGV2ZWwoKTsKKworICAgICAgICBtU3RhdHVzID0gZ2V0Q3VycmVudFN0YXR1cyh1cGRhdGVNb25pdG9yLmdldFNpbVN0YXRlKCkpOworICAgICAgICB1cGRhdGVMYXlvdXQobVN0YXR1cyk7CisKKyAgICAgICAgcmVmcmVzaEJhdHRlcnlTdHJpbmdBbmRJY29uKCk7CisgICAgICAgIHJlZnJlc2hBbGFybURpc3BsYXkoKTsKKworICAgICAgICBtVGltZUZvcm1hdCA9IERhdGVGb3JtYXQuZ2V0VGltZUZvcm1hdChnZXRDb250ZXh0KCkpOworICAgICAgICBtRGF0ZUZvcm1hdFN0cmluZyA9IGdldENvbnRleHQoKS5nZXRTdHJpbmcoUi5zdHJpbmcuZnVsbF93ZGF5X21vbnRoX2RheV9ub195ZWFyKTsKKyAgICAgICAgcmVmcmVzaFRpbWVBbmREYXRlRGlzcGxheSgpOworICAgICAgICB1cGRhdGVTdGF0dXNMaW5lcygpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBib29sZWFuIG9uS2V5RG93bihpbnQga2V5Q29kZSwgS2V5RXZlbnQgZXZlbnQpIHsKKyAgICAgICAgaWYgKGtleUNvZGUgPT0gS2V5RXZlbnQuS0VZQ09ERV9NRU5VICYmIG1FbmFibGVNZW51S2V5SW5Mb2NrU2NyZWVuKSB7CisgICAgICAgICAgICBtQ2FsbGJhY2suZ29Ub1VubG9ja1NjcmVlbigpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvKioge0Bpbmhlcml0RG9jfSAqLworICAgIHB1YmxpYyB2b2lkIG9uVHJpZ2dlcihWaWV3IHYsIGludCB3aGljaEhhbmRsZSkgeworICAgICAgICBpZiAod2hpY2hIYW5kbGUgPT0gU2xpZGluZ1RhYi5PblRyaWdnZXJMaXN0ZW5lci5MRUZUX0hBTkRMRSkgeworICAgICAgICAgICAgbUNhbGxiYWNrLmdvVG9VbmxvY2tTY3JlZW4oKTsKKyAgICAgICAgfSBlbHNlIGlmICh3aGljaEhhbmRsZSA9PSBTbGlkaW5nVGFiLk9uVHJpZ2dlckxpc3RlbmVyLlJJR0hUX0hBTkRMRSkgeworICAgICAgICAgICAgLy8gdG9nZ2xlIHNpbGVudCBtb2RlCisgICAgICAgICAgICBtU2lsZW50TW9kZSA9ICFtU2lsZW50TW9kZTsKKyAgICAgICAgICAgIGlmIChtU2lsZW50TW9kZSkgeworICAgICAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gdmliZSA9IChTZXR0aW5ncy5TeXN0ZW0uZ2V0SW50KAorICAgICAgICAgICAgICAgICAgICBnZXRDb250ZXh0KCkuZ2V0Q29udGVudFJlc29sdmVyKCksCisgICAgICAgICAgICAgICAgICAgIFNldHRpbmdzLlN5c3RlbS5WSUJSQVRFX0lOX1NJTEVOVCwgMSkgPT0gMSk7CisKKyAgICAgICAgICAgICAgICBtQXVkaW9NYW5hZ2VyLnNldFJpbmdlck1vZGUodmliZQorICAgICAgICAgICAgICAgICAgICA/IEF1ZGlvTWFuYWdlci5SSU5HRVJfTU9ERV9WSUJSQVRFCisgICAgICAgICAgICAgICAgICAgIDogQXVkaW9NYW5hZ2VyLlJJTkdFUl9NT0RFX1NJTEVOVCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1BdWRpb01hbmFnZXIuc2V0UmluZ2VyTW9kZShBdWRpb01hbmFnZXIuUklOR0VSX01PREVfTk9STUFMKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdXBkYXRlUmlnaHRUYWJSZXNvdXJjZXMoKTsKKworICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSBtU2lsZW50TW9kZSA/CisgICAgICAgICAgICAgICAgICAgIGdldENvbnRleHQoKS5nZXRTdHJpbmcoUi5zdHJpbmcuZ2xvYmFsX2FjdGlvbl9zaWxlbnRfbW9kZV9vbl9zdGF0dXMpIDoKKyAgICAgICAgICAgICAgICAgICAgZ2V0Q29udGV4dCgpLmdldFN0cmluZyhSLnN0cmluZy5nbG9iYWxfYWN0aW9uX3NpbGVudF9tb2RlX29mZl9zdGF0dXMpOworCisgICAgICAgICAgICBmaW5hbCBpbnQgdG9hc3RJY29uID0gbVNpbGVudE1vZGUKKyAgICAgICAgICAgICAgICA/IFIuZHJhd2FibGUuaWNfbG9ja19yaW5nZXJfb2ZmCisgICAgICAgICAgICAgICAgOiBSLmRyYXdhYmxlLmljX2xvY2tfcmluZ2VyX29uOworCisgICAgICAgICAgICBmaW5hbCBpbnQgdG9hc3RDb2xvciA9IG1TaWxlbnRNb2RlCisgICAgICAgICAgICAgICAgPyBnZXRDb250ZXh0KCkuZ2V0UmVzb3VyY2VzKCkuZ2V0Q29sb3IoUi5jb2xvci5rZXlndWFyZF90ZXh0X2NvbG9yX3NvdW5kb2ZmKQorICAgICAgICAgICAgICAgIDogZ2V0Q29udGV4dCgpLmdldFJlc291cmNlcygpLmdldENvbG9yKFIuY29sb3Iua2V5Z3VhcmRfdGV4dF9jb2xvcl9zb3VuZG9uKTsKKyAgICAgICAgICAgIHRvYXN0TWVzc2FnZShtU2NyZWVuTG9ja2VkLCBtZXNzYWdlLCB0b2FzdENvbG9yLCB0b2FzdEljb24pOworICAgICAgICAgICAgbUNhbGxiYWNrLnBva2VXYWtlbG9jaygpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgdm9pZCBvbkdyYWJiZWRTdGF0ZUNoYW5nZShWaWV3IHYsIGludCBncmFiYmVkU3RhdGUpIHsKKyAgICAgICAgaWYgKGdyYWJiZWRTdGF0ZSA9PSBTbGlkaW5nVGFiLk9uVHJpZ2dlckxpc3RlbmVyLlJJR0hUX0hBTkRMRSkgeworICAgICAgICAgICAgbVNpbGVudE1vZGUgPSBpc1NpbGVudE1vZGUoKTsKKyAgICAgICAgICAgIG1TZWxlY3Rvci5zZXRSaWdodEhpbnRUZXh0KG1TaWxlbnRNb2RlID8gUi5zdHJpbmcubG9ja3NjcmVlbl9zb3VuZF9vbl9sYWJlbAorICAgICAgICAgICAgICAgICAgICA6IFIuc3RyaW5nLmxvY2tzY3JlZW5fc291bmRfb2ZmX2xhYmVsKTsKKyAgICAgICAgfQorICAgICAgICBtQ2FsbGJhY2sucG9rZVdha2Vsb2NrKCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogRGlzcGxheXMgYSBtZXNzYWdlIGluIGEgdGV4dCB2aWV3IGFuZCB0aGVuIHJlc3RvcmVzIHRoZSBwcmV2aW91cyB0ZXh0LgorICAgICAqIEBwYXJhbSB0ZXh0VmlldyBUaGUgdGV4dCB2aWV3LgorICAgICAqIEBwYXJhbSB0ZXh0IFRoZSB0ZXh0LgorICAgICAqIEBwYXJhbSBjb2xvciBUaGUgY29sb3IgdG8gYXBwbHkgdG8gdGhlIHRleHQsIG9yIDAgaWYgdGhlIGV4aXN0aW5nIGNvbG9yIHNob3VsZCBiZSB1c2VkLgorICAgICAqIEBwYXJhbSBpY29uUmVzb3VyY2VJZCBUaGUgbGVmdCBoYW5kIGljb24uCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIHRvYXN0TWVzc2FnZShmaW5hbCBUZXh0VmlldyB0ZXh0VmlldywgZmluYWwgU3RyaW5nIHRleHQsIGZpbmFsIGludCBjb2xvciwgZmluYWwgaW50IGljb25SZXNvdXJjZUlkKSB7CisgICAgICAgIGlmIChtUGVuZGluZ1IxICE9IG51bGwpIHsKKyAgICAgICAgICAgIHRleHRWaWV3LnJlbW92ZUNhbGxiYWNrcyhtUGVuZGluZ1IxKTsKKyAgICAgICAgICAgIG1QZW5kaW5nUjEgPSBudWxsOworICAgICAgICB9CisgICAgICAgIGlmIChtUGVuZGluZ1IyICE9IG51bGwpIHsKKyAgICAgICAgICAgIG1QZW5kaW5nUjIucnVuKCk7IC8vIGZpcmUgaW1tZWRpYXRlbHksIHJlc3RvcmluZyBub24tdG9hc3RlZCBhcHBlYXJhbmNlCisgICAgICAgICAgICB0ZXh0Vmlldy5yZW1vdmVDYWxsYmFja3MobVBlbmRpbmdSMik7CisgICAgICAgICAgICBtUGVuZGluZ1IyID0gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIGZpbmFsIFN0cmluZyBvbGRUZXh0ID0gdGV4dFZpZXcuZ2V0VGV4dCgpLnRvU3RyaW5nKCk7CisgICAgICAgIGZpbmFsIENvbG9yU3RhdGVMaXN0IG9sZENvbG9ycyA9IHRleHRWaWV3LmdldFRleHRDb2xvcnMoKTsKKworICAgICAgICBtUGVuZGluZ1IxID0gbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgeworICAgICAgICAgICAgICAgIHRleHRWaWV3LnNldFRleHQodGV4dCk7CisgICAgICAgICAgICAgICAgaWYgKGNvbG9yICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgdGV4dFZpZXcuc2V0VGV4dENvbG9yKGNvbG9yKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdGV4dFZpZXcuc2V0Q29tcG91bmREcmF3YWJsZXNXaXRoSW50cmluc2ljQm91bmRzKGljb25SZXNvdXJjZUlkLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICB0ZXh0Vmlldy5wb3N0RGVsYXllZChtUGVuZGluZ1IxLCAwKTsKKyAgICAgICAgbVBlbmRpbmdSMiA9IG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICB0ZXh0Vmlldy5zZXRUZXh0KG9sZFRleHQpOworICAgICAgICAgICAgICAgIHRleHRWaWV3LnNldFRleHRDb2xvcihvbGRDb2xvcnMpOworICAgICAgICAgICAgICAgIHRleHRWaWV3LnNldENvbXBvdW5kRHJhd2FibGVzV2l0aEludHJpbnNpY0JvdW5kcygwLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKyAgICAgICAgdGV4dFZpZXcucG9zdERlbGF5ZWQobVBlbmRpbmdSMiwgMzUwMCk7CisgICAgfQorICAgIHByaXZhdGUgUnVubmFibGUgbVBlbmRpbmdSMTsKKyAgICBwcml2YXRlIFJ1bm5hYmxlIG1QZW5kaW5nUjI7CisKKyAgICBwcml2YXRlIHZvaWQgcmVmcmVzaEFsYXJtRGlzcGxheSgpIHsKKyAgICAgICAgbU5leHRBbGFybSA9IG1Mb2NrUGF0dGVyblV0aWxzLmdldE5leHRBbGFybSgpOworICAgICAgICBpZiAobU5leHRBbGFybSAhPSBudWxsKSB7CisgICAgICAgICAgICBtQWxhcm1JY29uID0gZ2V0Q29udGV4dCgpLmdldFJlc291cmNlcygpLmdldERyYXdhYmxlKFIuZHJhd2FibGUuaWNfbG9ja19pZGxlX2FsYXJtKTsKKyAgICAgICAgfQorICAgICAgICB1cGRhdGVTdGF0dXNMaW5lcygpOworICAgIH0KKworICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIHZvaWQgb25SZWZyZXNoQmF0dGVyeUluZm8oYm9vbGVhbiBzaG93QmF0dGVyeUluZm8sIGJvb2xlYW4gcGx1Z2dlZEluLAorICAgICAgICAgICAgaW50IGJhdHRlcnlMZXZlbCkgeworICAgICAgICBpZiAoREJHKSBMb2cuZChUQUcsICJvblJlZnJlc2hCYXR0ZXJ5SW5mbygiICsgc2hvd0JhdHRlcnlJbmZvICsgIiwgIiArIHBsdWdnZWRJbiArICIpIik7CisgICAgICAgIG1TaG93aW5nQmF0dGVyeUluZm8gPSBzaG93QmF0dGVyeUluZm87CisgICAgICAgIG1QbHVnZ2VkSW4gPSBwbHVnZ2VkSW47CisgICAgICAgIG1CYXR0ZXJ5TGV2ZWwgPSBiYXR0ZXJ5TGV2ZWw7CisKKyAgICAgICAgcmVmcmVzaEJhdHRlcnlTdHJpbmdBbmRJY29uKCk7CisgICAgICAgIHVwZGF0ZVN0YXR1c0xpbmVzKCk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHJlZnJlc2hCYXR0ZXJ5U3RyaW5nQW5kSWNvbigpIHsKKyAgICAgICAgaWYgKCFtU2hvd2luZ0JhdHRlcnlJbmZvKSB7CisgICAgICAgICAgICBtQ2hhcmdpbmcgPSBudWxsOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1DaGFyZ2luZ0ljb24gPT0gbnVsbCkgeworICAgICAgICAgICAgbUNoYXJnaW5nSWNvbiA9CisgICAgICAgICAgICAgICAgICAgIGdldENvbnRleHQoKS5nZXRSZXNvdXJjZXMoKS5nZXREcmF3YWJsZShSLmRyYXdhYmxlLmljX2xvY2tfaWRsZV9jaGFyZ2luZyk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobVBsdWdnZWRJbikgeworICAgICAgICAgICAgaWYgKG1CYXR0ZXJ5TGV2ZWwgPj0gMTAwKSB7CisgICAgICAgICAgICAgICAgbUNoYXJnaW5nID0gZ2V0Q29udGV4dCgpLmdldFN0cmluZyhSLnN0cmluZy5sb2Nrc2NyZWVuX2NoYXJnZWQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtQ2hhcmdpbmcgPSBnZXRDb250ZXh0KCkuZ2V0U3RyaW5nKFIuc3RyaW5nLmxvY2tzY3JlZW5fcGx1Z2dlZF9pbiwgbUJhdHRlcnlMZXZlbCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtQ2hhcmdpbmcgPSBnZXRDb250ZXh0KCkuZ2V0U3RyaW5nKFIuc3RyaW5nLmxvY2tzY3JlZW5fbG93X2JhdHRlcnkpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgdm9pZCBvblRpbWVDaGFuZ2VkKCkgeworICAgICAgICByZWZyZXNoVGltZUFuZERhdGVEaXNwbGF5KCk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHJlZnJlc2hUaW1lQW5kRGF0ZURpc3BsYXkoKSB7CisgICAgICAgIG1EYXRlLnNldFRleHQoRGF0ZUZvcm1hdC5mb3JtYXQobURhdGVGb3JtYXRTdHJpbmcsIG5ldyBEYXRlKCkpKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgdXBkYXRlU3RhdHVzTGluZXMoKSB7CisgICAgICAgIGlmICghbVN0YXR1cy5zaG93U3RhdHVzTGluZXMoKQorICAgICAgICAgICAgICAgIHx8IChtQ2hhcmdpbmcgPT0gbnVsbCAmJiBtTmV4dEFsYXJtID09IG51bGwpKSB7CisgICAgICAgICAgICBtU3RhdHVzMS5zZXRWaXNpYmlsaXR5KFZpZXcuSU5WSVNJQkxFKTsKKyAgICAgICAgICAgIG1TdGF0dXMyLnNldFZpc2liaWxpdHkoVmlldy5JTlZJU0lCTEUpOworICAgICAgICB9IGVsc2UgaWYgKG1DaGFyZ2luZyAhPSBudWxsICYmIG1OZXh0QWxhcm0gPT0gbnVsbCkgeworICAgICAgICAgICAgLy8gY2hhcmdpbmcgb25seQorICAgICAgICAgICAgbVN0YXR1czEuc2V0VmlzaWJpbGl0eShWaWV3LlZJU0lCTEUpOworICAgICAgICAgICAgbVN0YXR1czIuc2V0VmlzaWJpbGl0eShWaWV3LklOVklTSUJMRSk7CisKKyAgICAgICAgICAgIG1TdGF0dXMxLnNldFRleHQobUNoYXJnaW5nKTsKKyAgICAgICAgICAgIG1TdGF0dXMxLnNldENvbXBvdW5kRHJhd2FibGVzV2l0aEludHJpbnNpY0JvdW5kcyhtQ2hhcmdpbmdJY29uLCBudWxsLCBudWxsLCBudWxsKTsKKyAgICAgICAgfSBlbHNlIGlmIChtTmV4dEFsYXJtICE9IG51bGwgJiYgbUNoYXJnaW5nID09IG51bGwpIHsKKyAgICAgICAgICAgIC8vIG5leHQgYWxhcm0gb25seQorICAgICAgICAgICAgbVN0YXR1czEuc2V0VmlzaWJpbGl0eShWaWV3LlZJU0lCTEUpOworICAgICAgICAgICAgbVN0YXR1czIuc2V0VmlzaWJpbGl0eShWaWV3LklOVklTSUJMRSk7CisKKyAgICAgICAgICAgIG1TdGF0dXMxLnNldFRleHQobU5leHRBbGFybSk7CisgICAgICAgICAgICBtU3RhdHVzMS5zZXRDb21wb3VuZERyYXdhYmxlc1dpdGhJbnRyaW5zaWNCb3VuZHMobUFsYXJtSWNvbiwgbnVsbCwgbnVsbCwgbnVsbCk7CisgICAgICAgIH0gZWxzZSBpZiAobUNoYXJnaW5nICE9IG51bGwgJiYgbU5leHRBbGFybSAhPSBudWxsKSB7CisgICAgICAgICAgICAvLyBib3RoIGNoYXJnaW5nIGFuZCBuZXh0IGFsYXJtCisgICAgICAgICAgICBtU3RhdHVzMS5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7CisgICAgICAgICAgICBtU3RhdHVzMi5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7CisKKyAgICAgICAgICAgIG1TdGF0dXMxLnNldFRleHQobUNoYXJnaW5nKTsKKyAgICAgICAgICAgIG1TdGF0dXMxLnNldENvbXBvdW5kRHJhd2FibGVzV2l0aEludHJpbnNpY0JvdW5kcyhtQ2hhcmdpbmdJY29uLCBudWxsLCBudWxsLCBudWxsKTsKKyAgICAgICAgICAgIG1TdGF0dXMyLnNldFRleHQobU5leHRBbGFybSk7CisgICAgICAgICAgICBtU3RhdHVzMi5zZXRDb21wb3VuZERyYXdhYmxlc1dpdGhJbnRyaW5zaWNCb3VuZHMobUFsYXJtSWNvbiwgbnVsbCwgbnVsbCwgbnVsbCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioge0Bpbmhlcml0RG9jfSAqLworICAgIHB1YmxpYyB2b2lkIG9uUmVmcmVzaENhcnJpZXJJbmZvKENoYXJTZXF1ZW5jZSBwbG1uLCBDaGFyU2VxdWVuY2Ugc3BuKSB7CisgICAgICAgIGlmIChEQkcpIExvZy5kKFRBRywgIm9uUmVmcmVzaENhcnJpZXJJbmZvKCIgKyBwbG1uICsgIiwgIiArIHNwbiArICIpIik7CisgICAgICAgIHVwZGF0ZUxheW91dChtU3RhdHVzKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBEZXRlcm1pbmUgdGhlIGN1cnJlbnQgc3RhdHVzIG9mIHRoZSBsb2NrIHNjcmVlbiBnaXZlbiB0aGUgc2ltIHN0YXRlIGFuZCBvdGhlciBzdHVmZi4KKyAgICAgKi8KKyAgICBwcml2YXRlIFN0YXR1cyBnZXRDdXJyZW50U3RhdHVzKEljY0NhcmQuU3RhdGUgc2ltU3RhdGUpIHsKKyAgICAgICAgYm9vbGVhbiBtaXNzaW5nQW5kTm90UHJvdmlzaW9uZWQgPSAoIW1VcGRhdGVNb25pdG9yLmlzRGV2aWNlUHJvdmlzaW9uZWQoKQorICAgICAgICAgICAgICAgICYmIHNpbVN0YXRlID09IEljY0NhcmQuU3RhdGUuQUJTRU5UKTsKKyAgICAgICAgaWYgKG1pc3NpbmdBbmROb3RQcm92aXNpb25lZCkgeworICAgICAgICAgICAgcmV0dXJuIFN0YXR1cy5TaW1NaXNzaW5nTG9ja2VkOworICAgICAgICB9CisKKyAgICAgICAgc3dpdGNoIChzaW1TdGF0ZSkgeworICAgICAgICAgICAgY2FzZSBBQlNFTlQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIFN0YXR1cy5TaW1NaXNzaW5nOworICAgICAgICAgICAgY2FzZSBORVRXT1JLX0xPQ0tFRDoKKyAgICAgICAgICAgICAgICByZXR1cm4gU3RhdHVzLlNpbU1pc3NpbmdMb2NrZWQ7CisgICAgICAgICAgICBjYXNlIE5PVF9SRUFEWToKKyAgICAgICAgICAgICAgICByZXR1cm4gU3RhdHVzLlNpbU1pc3Npbmc7CisgICAgICAgICAgICBjYXNlIFBJTl9SRVFVSVJFRDoKKyAgICAgICAgICAgICAgICByZXR1cm4gU3RhdHVzLlNpbUxvY2tlZDsKKyAgICAgICAgICAgIGNhc2UgUFVLX1JFUVVJUkVEOgorICAgICAgICAgICAgICAgIHJldHVybiBTdGF0dXMuU2ltUHVrTG9ja2VkOworICAgICAgICAgICAgY2FzZSBSRUFEWToKKyAgICAgICAgICAgICAgICByZXR1cm4gU3RhdHVzLk5vcm1hbDsKKyAgICAgICAgICAgIGNhc2UgVU5LTk9XTjoKKyAgICAgICAgICAgICAgICByZXR1cm4gU3RhdHVzLlNpbU1pc3Npbmc7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFN0YXR1cy5TaW1NaXNzaW5nOworICAgIH0KKworICAgIC8qKgorICAgICAqIFVwZGF0ZSB0aGUgbGF5b3V0IHRvIG1hdGNoIHRoZSBjdXJyZW50IHN0YXR1cy4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgdXBkYXRlTGF5b3V0KFN0YXR1cyBzdGF0dXMpIHsKKyAgICAgICAgLy8gVGhlIGVtZXJnZW5jeSBjYWxsIGJ1dHRvbiBubyBsb25nZXIgYXBwZWFycyBvbiB0aGlzIHNjcmVlbi4KKyAgICAgICAgaWYgKERCRykgTG9nLmQoVEFHLCAidXBkYXRlTGF5b3V0OiBzdGF0dXM9IiArIHN0YXR1cyk7CisKKyAgICAgICAgbUVtZXJnZW5jeUNhbGxCdXR0b24uc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOyAvLyBpbiBhbG1vc3QgYWxsIGNhc2VzCisKKyAgICAgICAgc3dpdGNoIChzdGF0dXMpIHsKKyAgICAgICAgICAgIGNhc2UgTm9ybWFsOgorICAgICAgICAgICAgICAgIC8vIHRleHQKKyAgICAgICAgICAgICAgICBtQ2Fycmllci5zZXRUZXh0KAorICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Q2FycmllclN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVVwZGF0ZU1vbml0b3IuZ2V0VGVsZXBob255UGxtbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVXBkYXRlTW9uaXRvci5nZXRUZWxlcGhvbnlTcG4oKSkpOworCisgICAgICAgICAgICAgICAgLy8gRW1wdHkgbm93LCBidXQgdXNlZCBmb3Igc2xpZGluZyB0YWIgZmVlZGJhY2sKKyAgICAgICAgICAgICAgICBtU2NyZWVuTG9ja2VkLnNldFRleHQoIiIpOworCisgICAgICAgICAgICAgICAgLy8gbGF5b3V0CisgICAgICAgICAgICAgICAgbVNjcmVlbkxvY2tlZC5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7CisgICAgICAgICAgICAgICAgbVNlbGVjdG9yLnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKKyAgICAgICAgICAgICAgICBtRW1lcmdlbmN5Q2FsbFRleHQuc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBOZXR3b3JrTG9ja2VkOgorICAgICAgICAgICAgICAgIC8vIFRoZSBjYXJyaWVyIHN0cmluZyBzaG93cyBib3RoIHNpbSBjYXJkIHN0YXR1cyAoaS5lLiBObyBTaW0gQ2FyZCkgYW5kCisgICAgICAgICAgICAgICAgLy8gY2FycmllcidzIG5hbWUgYW5kL29yICJFbWVyZ2VuY3kgQ2FsbHMgT25seSIgc3RhdHVzCisgICAgICAgICAgICAgICAgbUNhcnJpZXIuc2V0VGV4dCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGdldENhcnJpZXJTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1VcGRhdGVNb25pdG9yLmdldFRlbGVwaG9ueVBsbW4oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Q29udGV4dCgpLmdldFRleHQoUi5zdHJpbmcubG9ja3NjcmVlbl9uZXR3b3JrX2xvY2tlZF9tZXNzYWdlKSkpOworICAgICAgICAgICAgICAgIG1TY3JlZW5Mb2NrZWQuc2V0VGV4dChSLnN0cmluZy5sb2Nrc2NyZWVuX2luc3RydWN0aW9uc193aGVuX3BhdHRlcm5fZGlzYWJsZWQpOworCisgICAgICAgICAgICAgICAgLy8gbGF5b3V0CisgICAgICAgICAgICAgICAgbVNjcmVlbkxvY2tlZC5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7CisgICAgICAgICAgICAgICAgbVNlbGVjdG9yLnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKKyAgICAgICAgICAgICAgICBtRW1lcmdlbmN5Q2FsbFRleHQuc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBTaW1NaXNzaW5nOgorICAgICAgICAgICAgICAgIC8vIHRleHQKKyAgICAgICAgICAgICAgICBtQ2Fycmllci5zZXRUZXh0KFIuc3RyaW5nLmxvY2tzY3JlZW5fbWlzc2luZ19zaW1fbWVzc2FnZV9zaG9ydCk7CisgICAgICAgICAgICAgICAgbVNjcmVlbkxvY2tlZC5zZXRUZXh0KFIuc3RyaW5nLmxvY2tzY3JlZW5fbWlzc2luZ19zaW1faW5zdHJ1Y3Rpb25zKTsKKworICAgICAgICAgICAgICAgIC8vIGxheW91dAorICAgICAgICAgICAgICAgIG1TY3JlZW5Mb2NrZWQuc2V0VmlzaWJpbGl0eShWaWV3LlZJU0lCTEUpOworICAgICAgICAgICAgICAgIG1TZWxlY3Rvci5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7CisgICAgICAgICAgICAgICAgbUVtZXJnZW5jeUNhbGxUZXh0LnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKKyAgICAgICAgICAgICAgICAvLyBkbyBub3QgbmVlZCB0byBzaG93IHRoZSBlLWNhbGwgYnV0dG9uOyB1c2VyIG1heSB1bmxvY2sKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU2ltTWlzc2luZ0xvY2tlZDoKKyAgICAgICAgICAgICAgICAvLyB0ZXh0CisgICAgICAgICAgICAgICAgbUNhcnJpZXIuc2V0VGV4dCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGdldENhcnJpZXJTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1VcGRhdGVNb25pdG9yLmdldFRlbGVwaG9ueVBsbW4oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Q29udGV4dCgpLmdldFRleHQoUi5zdHJpbmcubG9ja3NjcmVlbl9taXNzaW5nX3NpbV9tZXNzYWdlX3Nob3J0KSkpOworICAgICAgICAgICAgICAgIG1TY3JlZW5Mb2NrZWQuc2V0VGV4dChSLnN0cmluZy5sb2Nrc2NyZWVuX21pc3Npbmdfc2ltX2luc3RydWN0aW9ucyk7CisKKyAgICAgICAgICAgICAgICAvLyBsYXlvdXQKKyAgICAgICAgICAgICAgICBtU2NyZWVuTG9ja2VkLnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKKyAgICAgICAgICAgICAgICBtU2VsZWN0b3Iuc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOyAvLyBjYW5ub3QgdW5sb2NrCisgICAgICAgICAgICAgICAgbUVtZXJnZW5jeUNhbGxUZXh0LnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKKyAgICAgICAgICAgICAgICBtRW1lcmdlbmN5Q2FsbEJ1dHRvbi5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFNpbUxvY2tlZDoKKyAgICAgICAgICAgICAgICAvLyB0ZXh0CisgICAgICAgICAgICAgICAgbUNhcnJpZXIuc2V0VGV4dCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGdldENhcnJpZXJTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1VcGRhdGVNb25pdG9yLmdldFRlbGVwaG9ueVBsbW4oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Q29udGV4dCgpLmdldFRleHQoUi5zdHJpbmcubG9ja3NjcmVlbl9zaW1fbG9ja2VkX21lc3NhZ2UpKSk7CisKKyAgICAgICAgICAgICAgICAvLyBsYXlvdXQKKyAgICAgICAgICAgICAgICBtU2NyZWVuTG9ja2VkLnNldFZpc2liaWxpdHkoVmlldy5JTlZJU0lCTEUpOworICAgICAgICAgICAgICAgIG1TZWxlY3Rvci5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7CisgICAgICAgICAgICAgICAgbUVtZXJnZW5jeUNhbGxUZXh0LnNldFZpc2liaWxpdHkoVmlldy5HT05FKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgU2ltUHVrTG9ja2VkOgorICAgICAgICAgICAgICAgIC8vIHRleHQKKyAgICAgICAgICAgICAgICBtQ2Fycmllci5zZXRUZXh0KAorICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Q2FycmllclN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVVwZGF0ZU1vbml0b3IuZ2V0VGVsZXBob255UGxtbigpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRDb250ZXh0KCkuZ2V0VGV4dChSLnN0cmluZy5sb2Nrc2NyZWVuX3NpbV9wdWtfbG9ja2VkX21lc3NhZ2UpKSk7CisgICAgICAgICAgICAgICAgbVNjcmVlbkxvY2tlZC5zZXRUZXh0KFIuc3RyaW5nLmxvY2tzY3JlZW5fc2ltX3B1a19sb2NrZWRfaW5zdHJ1Y3Rpb25zKTsKKworICAgICAgICAgICAgICAgIC8vIGxheW91dAorICAgICAgICAgICAgICAgIG1TY3JlZW5Mb2NrZWQuc2V0VmlzaWJpbGl0eShWaWV3LlZJU0lCTEUpOworICAgICAgICAgICAgICAgIG1TZWxlY3Rvci5zZXRWaXNpYmlsaXR5KFZpZXcuR09ORSk7IC8vIGNhbm5vdCB1bmxvY2sKKyAgICAgICAgICAgICAgICBtRW1lcmdlbmN5Q2FsbFRleHQuc2V0VmlzaWJpbGl0eShWaWV3LlZJU0lCTEUpOworICAgICAgICAgICAgICAgIG1FbWVyZ2VuY3lDYWxsQnV0dG9uLnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIHN0YXRpYyBDaGFyU2VxdWVuY2UgZ2V0Q2FycmllclN0cmluZyhDaGFyU2VxdWVuY2UgdGVsZXBob255UGxtbiwgQ2hhclNlcXVlbmNlIHRlbGVwaG9ueVNwbikgeworICAgICAgICBpZiAodGVsZXBob255UGxtbiAhPSBudWxsICYmIHRlbGVwaG9ueVNwbiA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gdGVsZXBob255UGxtbjsKKyAgICAgICAgfSBlbHNlIGlmICh0ZWxlcGhvbnlQbG1uICE9IG51bGwgJiYgdGVsZXBob255U3BuICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiB0ZWxlcGhvbnlQbG1uICsgInwiICsgdGVsZXBob255U3BuOworICAgICAgICB9IGVsc2UgaWYgKHRlbGVwaG9ueVBsbW4gPT0gbnVsbCAmJiB0ZWxlcGhvbnlTcG4gIT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIHRlbGVwaG9ueVNwbjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiAiIjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG9uU2ltU3RhdGVDaGFuZ2VkKEljY0NhcmQuU3RhdGUgc2ltU3RhdGUpIHsKKyAgICAgICAgaWYgKERCRykgTG9nLmQoVEFHLCAib25TaW1TdGF0ZUNoYW5nZWQoIiArIHNpbVN0YXRlICsgIikiKTsKKyAgICAgICAgbVN0YXR1cyA9IGdldEN1cnJlbnRTdGF0dXMoc2ltU3RhdGUpOworICAgICAgICB1cGRhdGVMYXlvdXQobVN0YXR1cyk7CisgICAgICAgIHVwZGF0ZVN0YXR1c0xpbmVzKCk7CisgICAgfQorCisgICAgdm9pZCB1cGRhdGVDb25maWd1cmF0aW9uKCkgeworICAgICAgICBDb25maWd1cmF0aW9uIG5ld0NvbmZpZyA9IGdldFJlc291cmNlcygpLmdldENvbmZpZ3VyYXRpb24oKTsKKyAgICAgICAgaWYgKG5ld0NvbmZpZy5vcmllbnRhdGlvbiAhPSBtQ3JlYXRpb25PcmllbnRhdGlvbikgeworICAgICAgICAgICAgbUNhbGxiYWNrLnJlY3JlYXRlTWUobmV3Q29uZmlnKTsKKyAgICAgICAgfSBlbHNlIGlmIChuZXdDb25maWcuaGFyZEtleWJvYXJkSGlkZGVuICE9IG1LZXlib2FyZEhpZGRlbikgeworICAgICAgICAgICAgbUtleWJvYXJkSGlkZGVuID0gbmV3Q29uZmlnLmhhcmRLZXlib2FyZEhpZGRlbjsKKyAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gaXNLZXlib2FyZE9wZW4gPSBtS2V5Ym9hcmRIaWRkZW4gPT0gQ29uZmlndXJhdGlvbi5IQVJES0VZQk9BUkRISURERU5fTk87CisgICAgICAgICAgICBpZiAobVVwZGF0ZU1vbml0b3IuaXNLZXlndWFyZEJ5cGFzc0VuYWJsZWQoKSAmJiBpc0tleWJvYXJkT3BlbikgeworICAgICAgICAgICAgICAgIG1DYWxsYmFjay5nb1RvVW5sb2NrU2NyZWVuKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCBvbkF0dGFjaGVkVG9XaW5kb3coKSB7CisgICAgICAgIHN1cGVyLm9uQXR0YWNoZWRUb1dpbmRvdygpOworICAgICAgICBpZiAoTG9ja1BhdHRlcm5LZXlndWFyZFZpZXcuREVCVUdfQ09ORklHVVJBVElPTikgeworICAgICAgICAgICAgTG9nLnYoVEFHLCAiKioqKiogTE9DSyBBVFRBQ0hFRCBUTyBXSU5ET1ciKTsKKyAgICAgICAgICAgIExvZy52KFRBRywgIkN1ciBvcmllbnQ9IiArIG1DcmVhdGlvbk9yaWVudGF0aW9uCisgICAgICAgICAgICAgICAgICAgICsgIiwgbmV3IGNvbmZpZz0iICsgZ2V0UmVzb3VyY2VzKCkuZ2V0Q29uZmlndXJhdGlvbigpKTsKKyAgICAgICAgfQorICAgICAgICB1cGRhdGVDb25maWd1cmF0aW9uKCk7CisgICAgfQorCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCBvbkNvbmZpZ3VyYXRpb25DaGFuZ2VkKENvbmZpZ3VyYXRpb24gbmV3Q29uZmlnKSB7CisgICAgICAgIHN1cGVyLm9uQ29uZmlndXJhdGlvbkNoYW5nZWQobmV3Q29uZmlnKTsKKyAgICAgICAgaWYgKExvY2tQYXR0ZXJuS2V5Z3VhcmRWaWV3LkRFQlVHX0NPTkZJR1VSQVRJT04pIHsKKyAgICAgICAgICAgIExvZy53KFRBRywgIioqKioqIExPQ0sgQ09ORklHIENIQU5HSU5HIiwgbmV3IFJ1bnRpbWVFeGNlcHRpb24oKSk7CisgICAgICAgICAgICBMb2cudihUQUcsICJDdXIgb3JpZW50PSIgKyBtQ3JlYXRpb25PcmllbnRhdGlvbgorICAgICAgICAgICAgICAgICAgICArICIsIG5ldyBjb25maWc9IiArIG5ld0NvbmZpZyk7CisgICAgICAgIH0KKyAgICAgICAgdXBkYXRlQ29uZmlndXJhdGlvbigpOworICAgIH0KKworICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIGJvb2xlYW4gbmVlZHNJbnB1dCgpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIHZvaWQgb25QYXVzZSgpIHsKKworICAgIH0KKworICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIHZvaWQgb25SZXN1bWUoKSB7CisgICAgICAgIHJlc2V0U3RhdHVzSW5mbyhtVXBkYXRlTW9uaXRvcik7CisgICAgICAgIG1Mb2NrUGF0dGVyblV0aWxzLnVwZGF0ZUVtZXJnZW5jeUNhbGxCdXR0b25TdGF0ZShtRW1lcmdlbmN5Q2FsbEJ1dHRvbik7CisgICAgfQorCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgdm9pZCBjbGVhblVwKCkgeworICAgICAgICBtVXBkYXRlTW9uaXRvci5yZW1vdmVDYWxsYmFjayh0aGlzKTsKKyAgICB9CisKKyAgICAvKioge0Bpbmhlcml0RG9jfSAqLworICAgIHB1YmxpYyB2b2lkIG9uUmluZ2VyTW9kZUNoYW5nZWQoaW50IHN0YXRlKSB7CisgICAgICAgIGJvb2xlYW4gc2lsZW50ID0gQXVkaW9NYW5hZ2VyLlJJTkdFUl9NT0RFX05PUk1BTCAhPSBzdGF0ZTsKKyAgICAgICAgaWYgKHNpbGVudCAhPSBtU2lsZW50TW9kZSkgeworICAgICAgICAgICAgbVNpbGVudE1vZGUgPSBzaWxlbnQ7CisgICAgICAgICAgICB1cGRhdGVSaWdodFRhYlJlc291cmNlcygpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgb25QaG9uZVN0YXRlQ2hhbmdlZChTdHJpbmcgbmV3U3RhdGUpIHsKKyAgICAgICAgbUxvY2tQYXR0ZXJuVXRpbHMudXBkYXRlRW1lcmdlbmN5Q2FsbEJ1dHRvblN0YXRlKG1FbWVyZ2VuY3lDYWxsQnV0dG9uKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL1Bhc3N3b3JkVW5sb2NrU2NyZWVuLmphdmEgYi9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL1Bhc3N3b3JkVW5sb2NrU2NyZWVuLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzlmMjkxNwotLS0gL2Rldi9udWxsCisrKyBiL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvUGFzc3dvcmRVbmxvY2tTY3JlZW4uamF2YQpAQCAtMCwwICsxLDI2NyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGw7CisKK2ltcG9ydCBhbmRyb2lkLmFwcC5hZG1pbi5EZXZpY2VQb2xpY3lNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5yZXMuQ29uZmlndXJhdGlvbjsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLlJlY3Q7CisKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5wb2xpY3kuaW1wbC5QYXR0ZXJuVW5sb2NrU2NyZWVuLkZvb3Rlck1vZGU7CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwud2lkZ2V0LkxvY2tQYXR0ZXJuVXRpbHM7CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwud2lkZ2V0LlBhc3N3b3JkRW50cnlLZXlib2FyZFZpZXc7CisKK2ltcG9ydCBhbmRyb2lkLm9zLkNvdW50RG93blRpbWVyOworaW1wb3J0IGFuZHJvaWQub3MuU3lzdGVtQ2xvY2s7CitpbXBvcnQgYW5kcm9pZC50ZWxlcGhvbnkuVGVsZXBob255TWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLnRleHQubWV0aG9kLkRpZ2l0c0tleUxpc3RlbmVyOworaW1wb3J0IGFuZHJvaWQudGV4dC5tZXRob2QuVGV4dEtleUxpc3RlbmVyOworaW1wb3J0IGFuZHJvaWQudmlldy5LZXlFdmVudDsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuTGF5b3V0SW5mbGF0ZXI7CitpbXBvcnQgYW5kcm9pZC52aWV3LlZpZXc7CitpbXBvcnQgYW5kcm9pZC52aWV3LmlucHV0bWV0aG9kLkVkaXRvckluZm87CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuQnV0dG9uOworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkVkaXRUZXh0OworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkxpbmVhckxheW91dDsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5UZXh0VmlldzsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5UZXh0Vmlldy5PbkVkaXRvckFjdGlvbkxpc3RlbmVyOworCitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuUjsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC53aWRnZXQuUGFzc3dvcmRFbnRyeUtleWJvYXJkSGVscGVyOworCisvKioKKyAqIERpc3BsYXlzIGEgZGlhbGVyLWxpa2UgaW50ZXJmYWNlIG9yIGFscGhhbnVtZXJpYyAobGF0aW4tMSkga2V5IGVudHJ5IGZvciB0aGUgdXNlciB0byBlbnRlcgorICogYW4gdW5sb2NrIHBhc3N3b3JkCisgKi8KK3B1YmxpYyBjbGFzcyBQYXNzd29yZFVubG9ja1NjcmVlbiBleHRlbmRzIExpbmVhckxheW91dCBpbXBsZW1lbnRzIEtleWd1YXJkU2NyZWVuLAorICAgICAgICBWaWV3Lk9uQ2xpY2tMaXN0ZW5lciwgS2V5Z3VhcmRVcGRhdGVNb25pdG9yLkluZm9DYWxsYmFjaywgT25FZGl0b3JBY3Rpb25MaXN0ZW5lciB7CisKKyAgICBwcml2YXRlIGZpbmFsIEtleWd1YXJkVXBkYXRlTW9uaXRvciBtVXBkYXRlTW9uaXRvcjsKKyAgICBwcml2YXRlIGZpbmFsIEtleWd1YXJkU2NyZWVuQ2FsbGJhY2sgbUNhbGxiYWNrOworCisgICAgcHJpdmF0ZSBFZGl0VGV4dCBtUGFzc3dvcmRFbnRyeTsKKyAgICBwcml2YXRlIEJ1dHRvbiBtRW1lcmdlbmN5Q2FsbEJ1dHRvbjsKKyAgICBwcml2YXRlIExvY2tQYXR0ZXJuVXRpbHMgbUxvY2tQYXR0ZXJuVXRpbHM7CisgICAgcHJpdmF0ZSBQYXNzd29yZEVudHJ5S2V5Ym9hcmRWaWV3IG1LZXlib2FyZFZpZXc7CisgICAgcHJpdmF0ZSBQYXNzd29yZEVudHJ5S2V5Ym9hcmRIZWxwZXIgbUtleWJvYXJkSGVscGVyOworCisgICAgcHJpdmF0ZSBpbnQgbUNyZWF0aW9uT3JpZW50YXRpb247CisgICAgcHJpdmF0ZSBpbnQgbUNyZWF0aW9uSGFyZEtleWJvYXJkSGlkZGVuOworICAgIHByaXZhdGUgQ291bnREb3duVGltZXIgbUNvdW50ZG93blRpbWVyOworICAgIHByaXZhdGUgVGV4dFZpZXcgbVRpdGxlOworCisgICAgLy8gVG8gYXZvaWQgYWNjaWRlbnRhbCBsb2Nrb3V0IGR1ZSB0byBldmVudHMgd2hpbGUgdGhlIGRldmljZSBpbiBpbiB0aGUgcG9ja2V0LCBpZ25vcmUKKyAgICAvLyBhbnkgcGFzc3dvcmRzIHdpdGggbGVuZ3RoIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGlzIGxlbmd0aC4KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTUlOSU1VTV9QQVNTV09SRF9MRU5HVEhfQkVGT1JFX1JFUE9SVCA9IDM7CisKKyAgICBwdWJsaWMgUGFzc3dvcmRVbmxvY2tTY3JlZW4oQ29udGV4dCBjb250ZXh0LCBDb25maWd1cmF0aW9uIGNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICBMb2NrUGF0dGVyblV0aWxzIGxvY2tQYXR0ZXJuVXRpbHMsIEtleWd1YXJkVXBkYXRlTW9uaXRvciB1cGRhdGVNb25pdG9yLAorICAgICAgICAgICAgS2V5Z3VhcmRTY3JlZW5DYWxsYmFjayBjYWxsYmFjaykgeworICAgICAgICBzdXBlcihjb250ZXh0KTsKKworICAgICAgICBtQ3JlYXRpb25IYXJkS2V5Ym9hcmRIaWRkZW4gPSBjb25maWd1cmF0aW9uLmhhcmRLZXlib2FyZEhpZGRlbjsKKyAgICAgICAgbUNyZWF0aW9uT3JpZW50YXRpb24gPSBjb25maWd1cmF0aW9uLm9yaWVudGF0aW9uOworICAgICAgICBtVXBkYXRlTW9uaXRvciA9IHVwZGF0ZU1vbml0b3I7CisgICAgICAgIG1DYWxsYmFjayA9IGNhbGxiYWNrOworICAgICAgICBtTG9ja1BhdHRlcm5VdGlscyA9IGxvY2tQYXR0ZXJuVXRpbHM7CisKKyAgICAgICAgTGF5b3V0SW5mbGF0ZXIgbGF5b3V0SW5mbGF0ZXIgPSBMYXlvdXRJbmZsYXRlci5mcm9tKGNvbnRleHQpOworICAgICAgICBpZiAobUNyZWF0aW9uT3JpZW50YXRpb24gIT0gQ29uZmlndXJhdGlvbi5PUklFTlRBVElPTl9MQU5EU0NBUEUpIHsKKyAgICAgICAgICAgIGxheW91dEluZmxhdGVyLmluZmxhdGUoUi5sYXlvdXQua2V5Z3VhcmRfc2NyZWVuX3Bhc3N3b3JkX3BvcnRyYWl0LCB0aGlzLCB0cnVlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxheW91dEluZmxhdGVyLmluZmxhdGUoUi5sYXlvdXQua2V5Z3VhcmRfc2NyZWVuX3Bhc3N3b3JkX2xhbmRzY2FwZSwgdGhpcywgdHJ1ZSk7CisgICAgICAgIH0KKworICAgICAgICBmaW5hbCBpbnQgcXVhbGl0eSA9IGxvY2tQYXR0ZXJuVXRpbHMuZ2V0S2V5Z3VhcmRTdG9yZWRQYXNzd29yZFF1YWxpdHkoKTsKKyAgICAgICAgZmluYWwgYm9vbGVhbiBpc0FscGhhID0gRGV2aWNlUG9saWN5TWFuYWdlci5QQVNTV09SRF9RVUFMSVRZX0FMUEhBQkVUSUMgPT0gcXVhbGl0eQorICAgICAgICAgICAgICAgIHx8IERldmljZVBvbGljeU1hbmFnZXIuUEFTU1dPUkRfUVVBTElUWV9BTFBIQU5VTUVSSUMgPT0gcXVhbGl0eTsKKworICAgICAgICBtS2V5Ym9hcmRWaWV3ID0gKFBhc3N3b3JkRW50cnlLZXlib2FyZFZpZXcpIGZpbmRWaWV3QnlJZChSLmlkLmtleWJvYXJkKTsKKyAgICAgICAgbVBhc3N3b3JkRW50cnkgPSAoRWRpdFRleHQpIGZpbmRWaWV3QnlJZChSLmlkLnBhc3N3b3JkRW50cnkpOworICAgICAgICBtUGFzc3dvcmRFbnRyeS5zZXRPbkVkaXRvckFjdGlvbkxpc3RlbmVyKHRoaXMpOworICAgICAgICBtRW1lcmdlbmN5Q2FsbEJ1dHRvbiA9IChCdXR0b24pIGZpbmRWaWV3QnlJZChSLmlkLmVtZXJnZW5jeUNhbGwpOworICAgICAgICBtRW1lcmdlbmN5Q2FsbEJ1dHRvbi5zZXRPbkNsaWNrTGlzdGVuZXIodGhpcyk7CisgICAgICAgIG1Mb2NrUGF0dGVyblV0aWxzLnVwZGF0ZUVtZXJnZW5jeUNhbGxCdXR0b25TdGF0ZShtRW1lcmdlbmN5Q2FsbEJ1dHRvbik7CisgICAgICAgIG1UaXRsZSA9IChUZXh0VmlldykgZmluZFZpZXdCeUlkKFIuaWQuZW50ZXJfcGFzc3dvcmRfbGFiZWwpOworCisgICAgICAgIG1LZXlib2FyZEhlbHBlciA9IG5ldyBQYXNzd29yZEVudHJ5S2V5Ym9hcmRIZWxwZXIoY29udGV4dCwgbUtleWJvYXJkVmlldywgdGhpcyk7CisgICAgICAgIG1LZXlib2FyZEhlbHBlci5zZXRLZXlib2FyZE1vZGUoaXNBbHBoYSA/IFBhc3N3b3JkRW50cnlLZXlib2FyZEhlbHBlci5LRVlCT0FSRF9NT0RFX0FMUEhBCisgICAgICAgICAgICAgICAgOiBQYXNzd29yZEVudHJ5S2V5Ym9hcmRIZWxwZXIuS0VZQk9BUkRfTU9ERV9OVU1FUklDKTsKKworICAgICAgICBtS2V5Ym9hcmRWaWV3LnNldFZpc2liaWxpdHkobUNyZWF0aW9uSGFyZEtleWJvYXJkSGlkZGVuID09IENvbmZpZ3VyYXRpb24uSEFSREtFWUJPQVJESElEREVOX05PCisgICAgICAgICAgICAgICAgPyBWaWV3LklOVklTSUJMRSA6IFZpZXcuVklTSUJMRSk7CisgICAgICAgIG1QYXNzd29yZEVudHJ5LnJlcXVlc3RGb2N1cygpOworCisgICAgICAgIC8vIFRoaXMgYWxsb3dzIGtleWJvYXJkcyB3aXRoIG92ZXJsYXBwaW5nIHF3ZXJ0eS9udW1lcmljIGtleXMgdG8gY2hvb3NlIGp1c3QgdGhlCisgICAgICAgIC8vIG51bWVyaWMga2V5cy4KKyAgICAgICAgaWYgKGlzQWxwaGEpIHsKKyAgICAgICAgICAgIG1QYXNzd29yZEVudHJ5LnNldEtleUxpc3RlbmVyKFRleHRLZXlMaXN0ZW5lci5nZXRJbnN0YW5jZSgpKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1QYXNzd29yZEVudHJ5LnNldEtleUxpc3RlbmVyKERpZ2l0c0tleUxpc3RlbmVyLmdldEluc3RhbmNlKCkpOworICAgICAgICB9CisKKyAgICAgICAgbUtleWJvYXJkSGVscGVyLnNldFZpYnJhdGVQYXR0ZXJuKG1Mb2NrUGF0dGVyblV0aWxzLmlzVGFjdGlsZUZlZWRiYWNrRW5hYmxlZCgpID8KKyAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmFycmF5LmNvbmZpZ192aXJ0dWFsS2V5VmliZVBhdHRlcm4gOiAwKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgYm9vbGVhbiBvblJlcXVlc3RGb2N1c0luRGVzY2VuZGFudHMoaW50IGRpcmVjdGlvbiwgUmVjdCBwcmV2aW91c2x5Rm9jdXNlZFJlY3QpIHsKKyAgICAgICAgLy8gc2VuZCBmb2N1cyB0byB0aGUgcGFzc3dvcmQgZmllbGQKKyAgICAgICAgcmV0dXJuIG1QYXNzd29yZEVudHJ5LnJlcXVlc3RGb2N1cyhkaXJlY3Rpb24sIHByZXZpb3VzbHlGb2N1c2VkUmVjdCk7CisgICAgfQorCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBuZWVkc0lucHV0KCkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgdm9pZCBvblBhdXNlKCkgeworCisgICAgfQorCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgdm9pZCBvblJlc3VtZSgpIHsKKyAgICAgICAgLy8gc3RhcnQgZnJlc2gKKyAgICAgICAgbVBhc3N3b3JkRW50cnkuc2V0VGV4dCgiIik7CisgICAgICAgIG1QYXNzd29yZEVudHJ5LnJlcXVlc3RGb2N1cygpOworICAgICAgICBtTG9ja1BhdHRlcm5VdGlscy51cGRhdGVFbWVyZ2VuY3lDYWxsQnV0dG9uU3RhdGUobUVtZXJnZW5jeUNhbGxCdXR0b24pOworCisgICAgICAgIC8vIGlmIHRoZSB1c2VyIGlzIGN1cnJlbnRseSBsb2NrZWQgb3V0LCBlbmZvcmNlIGl0LgorICAgICAgICBsb25nIGRlYWRsaW5lID0gbUxvY2tQYXR0ZXJuVXRpbHMuZ2V0TG9ja291dEF0dGVtcHREZWFkbGluZSgpOworICAgICAgICBpZiAoZGVhZGxpbmUgIT0gMCkgeworICAgICAgICAgICAgaGFuZGxlQXR0ZW1wdExvY2tvdXQoZGVhZGxpbmUpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgdm9pZCBjbGVhblVwKCkgeworICAgICAgICBtVXBkYXRlTW9uaXRvci5yZW1vdmVDYWxsYmFjayh0aGlzKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBvbkNsaWNrKFZpZXcgdikgeworICAgICAgICBpZiAodiA9PSBtRW1lcmdlbmN5Q2FsbEJ1dHRvbikgeworICAgICAgICAgICAgbUNhbGxiYWNrLnRha2VFbWVyZ2VuY3lDYWxsQWN0aW9uKCk7CisgICAgICAgIH0KKyAgICAgICAgbUNhbGxiYWNrLnBva2VXYWtlbG9jaygpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCB2ZXJpZnlQYXNzd29yZEFuZFVubG9jaygpIHsKKyAgICAgICAgU3RyaW5nIGVudHJ5ID0gbVBhc3N3b3JkRW50cnkuZ2V0VGV4dCgpLnRvU3RyaW5nKCk7CisgICAgICAgIGlmIChtTG9ja1BhdHRlcm5VdGlscy5jaGVja1Bhc3N3b3JkKGVudHJ5KSkgeworICAgICAgICAgICAgbUNhbGxiYWNrLmtleWd1YXJkRG9uZSh0cnVlKTsKKyAgICAgICAgICAgIG1DYWxsYmFjay5yZXBvcnRTdWNjZXNzZnVsVW5sb2NrQXR0ZW1wdCgpOworICAgICAgICB9IGVsc2UgaWYgKGVudHJ5Lmxlbmd0aCgpID4gTUlOSU1VTV9QQVNTV09SRF9MRU5HVEhfQkVGT1JFX1JFUE9SVCApIHsKKyAgICAgICAgICAgIC8vIHRvIGF2b2lkIGFjY2lkZW50YWwgbG9ja291dCwgb25seSBjb3VudCBhdHRlbXB0cyB0aGF0IGFyZSBsb25nIGVub3VnaCB0byBiZSBhCisgICAgICAgICAgICAvLyByZWFsIHBhc3N3b3JkLiBUaGlzIG1heSByZXF1aXJlIHNvbWUgdHdlYWtpbmcuCisgICAgICAgICAgICBtQ2FsbGJhY2sucmVwb3J0RmFpbGVkVW5sb2NrQXR0ZW1wdCgpOworICAgICAgICAgICAgaWYgKDAgPT0gKG1VcGRhdGVNb25pdG9yLmdldEZhaWxlZEF0dGVtcHRzKCkKKyAgICAgICAgICAgICAgICAgICAgJSBMb2NrUGF0dGVyblV0aWxzLkZBSUxFRF9BVFRFTVBUU19CRUZPUkVfVElNRU9VVCkpIHsKKyAgICAgICAgICAgICAgICBsb25nIGRlYWRsaW5lID0gbUxvY2tQYXR0ZXJuVXRpbHMuc2V0TG9ja291dEF0dGVtcHREZWFkbGluZSgpOworICAgICAgICAgICAgICAgIGhhbmRsZUF0dGVtcHRMb2Nrb3V0KGRlYWRsaW5lKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBtUGFzc3dvcmRFbnRyeS5zZXRUZXh0KCIiKTsKKyAgICB9CisKKyAgICAvLyBQcmV2ZW50IHVzZXIgZnJvbSB1c2luZyB0aGUgUElOL1Bhc3N3b3JkIGVudHJ5IHVudGlsIHNjaGVkdWxlZCBkZWFkbGluZS4KKyAgICBwcml2YXRlIHZvaWQgaGFuZGxlQXR0ZW1wdExvY2tvdXQobG9uZyBlbGFwc2VkUmVhbHRpbWVEZWFkbGluZSkgeworICAgICAgICBtUGFzc3dvcmRFbnRyeS5zZXRFbmFibGVkKGZhbHNlKTsKKyAgICAgICAgbUtleWJvYXJkVmlldy5zZXRFbmFibGVkKGZhbHNlKTsKKyAgICAgICAgbG9uZyBlbGFwc2VkUmVhbHRpbWUgPSBTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKTsKKyAgICAgICAgbUNvdW50ZG93blRpbWVyID0gbmV3IENvdW50RG93blRpbWVyKGVsYXBzZWRSZWFsdGltZURlYWRsaW5lIC0gZWxhcHNlZFJlYWx0aW1lLCAxMDAwKSB7CisKKyAgICAgICAgICAgIEBPdmVycmlkZQorICAgICAgICAgICAgcHVibGljIHZvaWQgb25UaWNrKGxvbmcgbWlsbGlzVW50aWxGaW5pc2hlZCkgeworICAgICAgICAgICAgICAgIGludCBzZWNvbmRzUmVtYWluaW5nID0gKGludCkgKG1pbGxpc1VudGlsRmluaXNoZWQgLyAxMDAwKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgaW5zdHJ1Y3Rpb25zID0gZ2V0Q29udGV4dCgpLmdldFN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgIFIuc3RyaW5nLmxvY2tzY3JlZW5fdG9vX21hbnlfZmFpbGVkX2F0dGVtcHRzX2NvdW50ZG93biwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZHNSZW1haW5pbmcpOworICAgICAgICAgICAgICAgIG1UaXRsZS5zZXRUZXh0KGluc3RydWN0aW9ucyk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEBPdmVycmlkZQorICAgICAgICAgICAgcHVibGljIHZvaWQgb25GaW5pc2goKSB7CisgICAgICAgICAgICAgICAgbVBhc3N3b3JkRW50cnkuc2V0RW5hYmxlZCh0cnVlKTsKKyAgICAgICAgICAgICAgICBtVGl0bGUuc2V0VGV4dChSLnN0cmluZy5rZXlndWFyZF9wYXNzd29yZF9lbnRlcl9wYXNzd29yZF9jb2RlKTsKKyAgICAgICAgICAgICAgICBtS2V5Ym9hcmRWaWV3LnNldEVuYWJsZWQodHJ1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0uc3RhcnQoKTsKKyAgICB9CisKKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBib29sZWFuIG9uS2V5RG93bihpbnQga2V5Q29kZSwgS2V5RXZlbnQgZXZlbnQpIHsKKyAgICAgICAgbUNhbGxiYWNrLnBva2VXYWtlbG9jaygpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgb25BdHRhY2hlZFRvV2luZG93KCkgeworICAgICAgICBzdXBlci5vbkF0dGFjaGVkVG9XaW5kb3coKTsKKyAgICAgICAgQ29uZmlndXJhdGlvbiBjb25maWcgPSBnZXRSZXNvdXJjZXMoKS5nZXRDb25maWd1cmF0aW9uKCk7CisgICAgICAgIGlmIChjb25maWcub3JpZW50YXRpb24gIT0gbUNyZWF0aW9uT3JpZW50YXRpb24KKyAgICAgICAgICAgICAgICB8fCBjb25maWcuaGFyZEtleWJvYXJkSGlkZGVuICE9IG1DcmVhdGlvbkhhcmRLZXlib2FyZEhpZGRlbikgeworICAgICAgICAgICAgbUNhbGxiYWNrLnJlY3JlYXRlTWUoY29uZmlnKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgb25Db25maWd1cmF0aW9uQ2hhbmdlZChDb25maWd1cmF0aW9uIG5ld0NvbmZpZykgeworICAgICAgICBzdXBlci5vbkNvbmZpZ3VyYXRpb25DaGFuZ2VkKG5ld0NvbmZpZyk7CisgICAgICAgIGlmIChuZXdDb25maWcub3JpZW50YXRpb24gIT0gbUNyZWF0aW9uT3JpZW50YXRpb24KKyAgICAgICAgICAgICAgICB8fCBuZXdDb25maWcuaGFyZEtleWJvYXJkSGlkZGVuICE9IG1DcmVhdGlvbkhhcmRLZXlib2FyZEhpZGRlbikgeworICAgICAgICAgICAgbUNhbGxiYWNrLnJlY3JlYXRlTWUobmV3Q29uZmlnKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG9uS2V5Ym9hcmRDaGFuZ2UoYm9vbGVhbiBpc0tleWJvYXJkT3BlbikgeworICAgICAgICAvLyBEb24ndCBzaG93IHRoZSBzb2Z0IGtleWJvYXJkIHdoZW4gdGhlIHJlYWwga2V5Ym9hcmQgaXMgb3BlbgorICAgICAgICBtS2V5Ym9hcmRWaWV3LnNldFZpc2liaWxpdHkoaXNLZXlib2FyZE9wZW4gPyBWaWV3LklOVklTSUJMRSA6IFZpZXcuVklTSUJMRSk7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gb25FZGl0b3JBY3Rpb24oVGV4dFZpZXcgdiwgaW50IGFjdGlvbklkLCBLZXlFdmVudCBldmVudCkgeworICAgICAgICAvLyBDaGVjayBpZiB0aGlzIHdhcyB0aGUgcmVzdWx0IG9mIGhpdHRpbmcgdGhlIGVudGVyIGtleQorICAgICAgICBpZiAoYWN0aW9uSWQgPT0gRWRpdG9ySW5mby5JTUVfTlVMTCkgeworICAgICAgICAgICAgdmVyaWZ5UGFzc3dvcmRBbmRVbmxvY2soKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBvblBob25lU3RhdGVDaGFuZ2VkKFN0cmluZyBuZXdTdGF0ZSkgeworICAgICAgICBtTG9ja1BhdHRlcm5VdGlscy51cGRhdGVFbWVyZ2VuY3lDYWxsQnV0dG9uU3RhdGUobUVtZXJnZW5jeUNhbGxCdXR0b24pOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG9uUmVmcmVzaEJhdHRlcnlJbmZvKGJvb2xlYW4gc2hvd0JhdHRlcnlJbmZvLCBib29sZWFuIHBsdWdnZWRJbiwgaW50IGJhdHRlcnlMZXZlbCkgeworCisgICAgfQorCisgICAgcHVibGljIHZvaWQgb25SZWZyZXNoQ2FycmllckluZm8oQ2hhclNlcXVlbmNlIHBsbW4sIENoYXJTZXF1ZW5jZSBzcG4pIHsKKworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG9uUmluZ2VyTW9kZUNoYW5nZWQoaW50IHN0YXRlKSB7CisKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBvblRpbWVDaGFuZ2VkKCkgeworCisgICAgfQorCit9CmRpZmYgLS1naXQgYS9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL1BhdHRlcm5VbmxvY2tTY3JlZW4uamF2YSBiL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvUGF0dGVyblVubG9ja1NjcmVlbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxOGUyNDMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL1BhdHRlcm5VbmxvY2tTY3JlZW4uamF2YQpAQCAtMCwwICsxLDU4MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGw7CisKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucmVzLkNvbmZpZ3VyYXRpb247CitpbXBvcnQgYW5kcm9pZC5vcy5Db3VudERvd25UaW1lcjsKK2ltcG9ydCBhbmRyb2lkLm9zLlN5c3RlbUNsb2NrOworaW1wb3J0IGFuZHJvaWQudmlldy5MYXlvdXRJbmZsYXRlcjsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuVmlldzsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuVmlld0dyb3VwOworaW1wb3J0IGFuZHJvaWQudmlldy5Nb3Rpb25FdmVudDsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5CdXR0b247CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuVGV4dFZpZXc7CitpbXBvcnQgYW5kcm9pZC50ZXh0LmZvcm1hdC5EYXRlRm9ybWF0OworaW1wb3J0IGFuZHJvaWQudGV4dC5UZXh0VXRpbHM7CitpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SOworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5JY2NDYXJkOworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLndpZGdldC5MaW5lYXJMYXlvdXRXaXRoRGVmYXVsdFRvdWNoUmVjZXBpZW50OworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLndpZGdldC5Mb2NrUGF0dGVyblV0aWxzOworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLndpZGdldC5Mb2NrUGF0dGVyblZpZXc7CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwud2lkZ2V0LkxvY2tQYXR0ZXJuVmlldy5DZWxsOworCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CisKKy8qKgorICogVGhpcyBpcyB0aGUgc2NyZWVuIHRoYXQgc2hvd3MgdGhlIDkgY2lyY2xlIHVubG9jayB3aWRnZXQgYW5kIGluc3RydWN0cworICogdGhlIHVzZXIgaG93IHRvIHVubG9jayB0aGVpciBkZXZpY2UsIG9yIG1ha2UgYW4gZW1lcmdlbmN5IGNhbGwuCisgKi8KK2NsYXNzIFBhdHRlcm5VbmxvY2tTY3JlZW4gZXh0ZW5kcyBMaW5lYXJMYXlvdXRXaXRoRGVmYXVsdFRvdWNoUmVjZXBpZW50CisgICAgICAgIGltcGxlbWVudHMgS2V5Z3VhcmRTY3JlZW4sIEtleWd1YXJkVXBkYXRlTW9uaXRvci5JbmZvQ2FsbGJhY2ssCisgICAgICAgIEtleWd1YXJkVXBkYXRlTW9uaXRvci5TaW1TdGF0ZUNhbGxiYWNrIHsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gREVCVUcgPSBmYWxzZTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gIlVubG9ja1NjcmVlbiI7CisKKyAgICAvLyBob3cgbG9uZyBiZWZvcmUgd2UgY2xlYXIgdGhlIHdyb25nIHBhdHRlcm4KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgUEFUVEVSTl9DTEVBUl9USU1FT1VUX01TID0gMjAwMDsKKworICAgIC8vIGhvdyBsb25nIHdlIHN0YXkgYXdha2UgYWZ0ZXIgZWFjaCBrZXkgYmV5b25kIE1JTl9QQVRURVJOX0JFRk9SRV9QT0tFX1dBS0VMT0NLCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFVOTE9DS19QQVRURVJOX1dBS0VfSU5URVJWQUxfTVMgPSA3MDAwOworCisgICAgLy8gaG93IGxvbmcgd2Ugc3RheSBhd2FrZSBhZnRlciB0aGUgdXNlciBoaXRzIHRoZSBmaXJzdCBkb3QuCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFVOTE9DS19QQVRURVJOX1dBS0VfSU5URVJWQUxfRklSU1RfRE9UU19NUyA9IDIwMDA7CisKKyAgICAvLyBob3cgbWFueSBjZWxscyB0aGUgdXNlciBoYXMgdG8gY3Jvc3MgYmVmb3JlIHdlIHBva2UgdGhlIHdha2Vsb2NrCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1JTl9QQVRURVJOX0JFRk9SRV9QT0tFX1dBS0VMT0NLID0gMjsKKworICAgIHByaXZhdGUgaW50IG1GYWlsZWRQYXR0ZXJuQXR0ZW1wdHNTaW5jZUxhc3RUaW1lb3V0ID0gMDsKKyAgICBwcml2YXRlIGludCBtVG90YWxGYWlsZWRQYXR0ZXJuQXR0ZW1wdHMgPSAwOworICAgIHByaXZhdGUgQ291bnREb3duVGltZXIgbUNvdW50ZG93blRpbWVyID0gbnVsbDsKKworICAgIHByaXZhdGUgZmluYWwgTG9ja1BhdHRlcm5VdGlscyBtTG9ja1BhdHRlcm5VdGlsczsKKyAgICBwcml2YXRlIGZpbmFsIEtleWd1YXJkVXBkYXRlTW9uaXRvciBtVXBkYXRlTW9uaXRvcjsKKyAgICBwcml2YXRlIGZpbmFsIEtleWd1YXJkU2NyZWVuQ2FsbGJhY2sgbUNhbGxiYWNrOworCisgICAgLyoqCisgICAgICogd2hldGhlciB0aGVyZSBpcyBhIGZhbGxiYWNrIG9wdGlvbiBhdmFpbGFibGUgd2hlbiB0aGUgcGF0dGVybiBpcyBmb3Jnb3R0ZW4uCisgICAgICovCisgICAgcHJpdmF0ZSBib29sZWFuIG1FbmFibGVGYWxsYmFjazsKKworICAgIHByaXZhdGUgU3RyaW5nIG1EYXRlRm9ybWF0U3RyaW5nOworCisgICAgcHJpdmF0ZSBUZXh0VmlldyBtQ2FycmllcjsKKyAgICBwcml2YXRlIFRleHRWaWV3IG1EYXRlOworCisgICAgLy8gYXJlIHdlIHNob3dpbmcgYmF0dGVyeSBpbmZvcm1hdGlvbj8KKyAgICBwcml2YXRlIGJvb2xlYW4gbVNob3dpbmdCYXR0ZXJ5SW5mbyA9IGZhbHNlOworCisgICAgLy8gbGFzdCBrbm93biBwbHVnZ2VkIGluIHN0YXRlCisgICAgcHJpdmF0ZSBib29sZWFuIG1QbHVnZ2VkSW4gPSBmYWxzZTsKKworICAgIC8vIGxhc3Qga25vd24gYmF0dGVyeSBsZXZlbAorICAgIHByaXZhdGUgaW50IG1CYXR0ZXJ5TGV2ZWwgPSAxMDA7CisKKyAgICBwcml2YXRlIFN0cmluZyBtTmV4dEFsYXJtID0gbnVsbDsKKworICAgIHByaXZhdGUgU3RyaW5nIG1JbnN0cnVjdGlvbnMgPSBudWxsOworICAgIHByaXZhdGUgVGV4dFZpZXcgbVN0YXR1czE7CisgICAgcHJpdmF0ZSBUZXh0VmlldyBtU3RhdHVzU2VwOworICAgIHByaXZhdGUgVGV4dFZpZXcgbVN0YXR1czI7CisKKworICAgIHByaXZhdGUgTG9ja1BhdHRlcm5WaWV3IG1Mb2NrUGF0dGVyblZpZXc7CisKKyAgICBwcml2YXRlIFZpZXdHcm91cCBtRm9vdGVyTm9ybWFsOworICAgIHByaXZhdGUgVmlld0dyb3VwIG1Gb290ZXJGb3Jnb3RQYXR0ZXJuOworCisgICAgLyoqCisgICAgICogS2VlcHMgdHJhY2sgb2YgdGhlIGxhc3QgdGltZSB3ZSBwb2tlZCB0aGUgd2FrZSBsb2NrIGR1cmluZyBkaXNwYXRjaGluZworICAgICAqIG9mIHRoZSB0b3VjaCBldmVudCwgaW5pdGFsaXplZCB0byBzb21ldGhpbmcgZ2F1cmFudGVlZCB0byBtYWtlIHVzCisgICAgICogcG9rZSBpdCB3aGVuIHRoZSB1c2VyIHN0YXJ0cyBkcmF3aW5nIHRoZSBwYXR0ZXJuLgorICAgICAqIEBzZWUgI2Rpc3BhdGNoVG91Y2hFdmVudChhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQpCisgICAgICovCisgICAgcHJpdmF0ZSBsb25nIG1MYXN0UG9rZVRpbWUgPSAtVU5MT0NLX1BBVFRFUk5fV0FLRV9JTlRFUlZBTF9NUzsKKworICAgIC8qKgorICAgICAqIFVzZWZ1bCBmb3IgY2xlYXJpbmcgb3V0IHRoZSB3cm9uZyBwYXR0ZXJuIGFmdGVyIGEgZGVsYXkKKyAgICAgKi8KKyAgICBwcml2YXRlIFJ1bm5hYmxlIG1DYW5jZWxQYXR0ZXJuUnVubmFibGUgPSBuZXcgUnVubmFibGUoKSB7CisgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgIG1Mb2NrUGF0dGVyblZpZXcuY2xlYXJQYXR0ZXJuKCk7CisgICAgICAgIH0KKyAgICB9OworCisgICAgcHJpdmF0ZSBCdXR0b24gbUZvcmdvdFBhdHRlcm5CdXR0b247CisgICAgcHJpdmF0ZSBCdXR0b24gbUVtZXJnZW5jeUFsb25lOworICAgIHByaXZhdGUgQnV0dG9uIG1FbWVyZ2VuY3lUb2dldGhlcjsKKyAgICBwcml2YXRlIGludCBtQ3JlYXRpb25PcmllbnRhdGlvbjsKKworICAgIGVudW0gRm9vdGVyTW9kZSB7CisgICAgICAgIE5vcm1hbCwKKyAgICAgICAgRm9yZ290TG9ja1BhdHRlcm4sCisgICAgICAgIFZlcmlmeVVubG9ja2VkCisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHVwZGF0ZUZvb3RlcihGb290ZXJNb2RlIG1vZGUpIHsKKyAgICAgICAgc3dpdGNoIChtb2RlKSB7CisgICAgICAgICAgICBjYXNlIE5vcm1hbDoKKyAgICAgICAgICAgICAgICBtRm9vdGVyTm9ybWFsLnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKKyAgICAgICAgICAgICAgICBtRm9vdGVyRm9yZ290UGF0dGVybi5zZXRWaXNpYmlsaXR5KFZpZXcuR09ORSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZvcmdvdExvY2tQYXR0ZXJuOgorICAgICAgICAgICAgICAgIG1Gb290ZXJOb3JtYWwuc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOworICAgICAgICAgICAgICAgIG1Gb290ZXJGb3Jnb3RQYXR0ZXJuLnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKKyAgICAgICAgICAgICAgICBtRm9yZ290UGF0dGVybkJ1dHRvbi5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFZlcmlmeVVubG9ja2VkOgorICAgICAgICAgICAgICAgIG1Gb290ZXJOb3JtYWwuc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOworICAgICAgICAgICAgICAgIG1Gb290ZXJGb3Jnb3RQYXR0ZXJuLnNldFZpc2liaWxpdHkoVmlldy5HT05FKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEBwYXJhbSBjb250ZXh0IFRoZSBjb250ZXh0LgorICAgICAqIEBwYXJhbSBjb25maWd1cmF0aW9uCisgICAgICogQHBhcmFtIGxvY2tQYXR0ZXJuVXRpbHMgVXNlZCB0byBsb29rdXAgbG9jayBwYXR0ZXJuIHNldHRpbmdzLgorICAgICAqIEBwYXJhbSB1cGRhdGVNb25pdG9yIFVzZWQgdG8gbG9va3VwIHN0YXRlIGFmZmVjdGluZyBrZXlndWFyZC4KKyAgICAgKiBAcGFyYW0gY2FsbGJhY2sgVXNlZCB0byBub3RpZnkgdGhlIG1hbmFnZXIgd2hlbiB3ZSdyZSBkb25lLCBldGMuCisgICAgICogQHBhcmFtIHRvdGFsRmFpbGVkQXR0ZW1wdHMgVGhlIGN1cnJlbnQgbnVtYmVyIG9mIGZhaWxlZCBhdHRlbXB0cy4KKyAgICAgKiBAcGFyYW0gZW5hYmxlRmFsbGJhY2sgVHJ1ZSBpZiBhIGJhY2t1cCB1bmxvY2sgb3B0aW9uIGlzIGF2YWlsYWJsZSB3aGVuIHRoZSB1c2VyIGhhcyBmb3Jnb3R0ZW4KKyAgICAgKiAgICAgICAgdGhlaXIgcGF0dGVybiAoZS5nIHRoZXkgaGF2ZSBhIGdvb2dsZSBhY2NvdW50IHNvIHdlIGNhbiBzaG93IHRoZW0gdGhlIGFjY291bnQgYmFzZWQKKyAgICAgKiAgICAgICAgYmFja3VwIG9wdGlvbikuCisgICAgICovCisgICAgUGF0dGVyblVubG9ja1NjcmVlbihDb250ZXh0IGNvbnRleHQsCisgICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiwgTG9ja1BhdHRlcm5VdGlscyBsb2NrUGF0dGVyblV0aWxzLAorICAgICAgICAgICAgICAgICBLZXlndWFyZFVwZGF0ZU1vbml0b3IgdXBkYXRlTW9uaXRvciwKKyAgICAgICAgICAgICAgICAgS2V5Z3VhcmRTY3JlZW5DYWxsYmFjayBjYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgaW50IHRvdGFsRmFpbGVkQXR0ZW1wdHMpIHsKKyAgICAgICAgc3VwZXIoY29udGV4dCk7CisgICAgICAgIG1Mb2NrUGF0dGVyblV0aWxzID0gbG9ja1BhdHRlcm5VdGlsczsKKyAgICAgICAgbVVwZGF0ZU1vbml0b3IgPSB1cGRhdGVNb25pdG9yOworICAgICAgICBtQ2FsbGJhY2sgPSBjYWxsYmFjazsKKyAgICAgICAgbVRvdGFsRmFpbGVkUGF0dGVybkF0dGVtcHRzID0gdG90YWxGYWlsZWRBdHRlbXB0czsKKyAgICAgICAgbUZhaWxlZFBhdHRlcm5BdHRlbXB0c1NpbmNlTGFzdFRpbWVvdXQgPQorICAgICAgICAgICAgdG90YWxGYWlsZWRBdHRlbXB0cyAlIExvY2tQYXR0ZXJuVXRpbHMuRkFJTEVEX0FUVEVNUFRTX0JFRk9SRV9USU1FT1VUOworCisgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLAorICAgICAgICAgICAgIlVubG9ja1NjcmVlbigpIGN0b3I6IHRvdGFsRmFpbGVkQXR0ZW1wdHM9IgorICAgICAgICAgICAgICAgICArIHRvdGFsRmFpbGVkQXR0ZW1wdHMgKyAiLCBtRmFpbGVkUGF0Li4uPSIKKyAgICAgICAgICAgICAgICAgKyBtRmFpbGVkUGF0dGVybkF0dGVtcHRzU2luY2VMYXN0VGltZW91dAorICAgICAgICAgICAgICAgICApOworCisgICAgICAgIG1DcmVhdGlvbk9yaWVudGF0aW9uID0gY29uZmlndXJhdGlvbi5vcmllbnRhdGlvbjsKKworICAgICAgICBMYXlvdXRJbmZsYXRlciBpbmZsYXRlciA9IExheW91dEluZmxhdGVyLmZyb20oY29udGV4dCk7CisgICAgICAgIGlmIChtQ3JlYXRpb25PcmllbnRhdGlvbiAhPSBDb25maWd1cmF0aW9uLk9SSUVOVEFUSU9OX0xBTkRTQ0FQRSkgeworICAgICAgICAgICAgaW5mbGF0ZXIuaW5mbGF0ZShSLmxheW91dC5rZXlndWFyZF9zY3JlZW5fdW5sb2NrX3BvcnRyYWl0LCB0aGlzLCB0cnVlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGluZmxhdGVyLmluZmxhdGUoUi5sYXlvdXQua2V5Z3VhcmRfc2NyZWVuX3VubG9ja19sYW5kc2NhcGUsIHRoaXMsIHRydWUpOworICAgICAgICB9CisKKyAgICAgICAgbUNhcnJpZXIgPSAoVGV4dFZpZXcpIGZpbmRWaWV3QnlJZChSLmlkLmNhcnJpZXIpOworICAgICAgICBtRGF0ZSA9IChUZXh0VmlldykgZmluZFZpZXdCeUlkKFIuaWQuZGF0ZSk7CisKKyAgICAgICAgbURhdGVGb3JtYXRTdHJpbmcgPSBnZXRDb250ZXh0KCkuZ2V0U3RyaW5nKFIuc3RyaW5nLmZ1bGxfd2RheV9tb250aF9kYXlfbm9feWVhcik7CisgICAgICAgIHJlZnJlc2hUaW1lQW5kRGF0ZURpc3BsYXkoKTsKKworICAgICAgICBtU3RhdHVzMSA9IChUZXh0VmlldykgZmluZFZpZXdCeUlkKFIuaWQuc3RhdHVzMSk7CisgICAgICAgIG1TdGF0dXNTZXAgPSAoVGV4dFZpZXcpIGZpbmRWaWV3QnlJZChSLmlkLnN0YXR1c1NlcCk7CisgICAgICAgIG1TdGF0dXMyID0gKFRleHRWaWV3KSBmaW5kVmlld0J5SWQoUi5pZC5zdGF0dXMyKTsKKworICAgICAgICByZXNldFN0YXR1c0luZm8oKTsKKworCisgICAgICAgIG1Mb2NrUGF0dGVyblZpZXcgPSAoTG9ja1BhdHRlcm5WaWV3KSBmaW5kVmlld0J5SWQoUi5pZC5sb2NrUGF0dGVybik7CisKKyAgICAgICAgbUZvb3Rlck5vcm1hbCA9IChWaWV3R3JvdXApIGZpbmRWaWV3QnlJZChSLmlkLmZvb3Rlck5vcm1hbCk7CisgICAgICAgIG1Gb290ZXJGb3Jnb3RQYXR0ZXJuID0gKFZpZXdHcm91cCkgZmluZFZpZXdCeUlkKFIuaWQuZm9vdGVyRm9yZ290UGF0dGVybik7CisKKyAgICAgICAgLy8gZW1lcmdlbmN5IGNhbGwgYnV0dG9ucworICAgICAgICBmaW5hbCBPbkNsaWNrTGlzdGVuZXIgZW1lcmdlbmN5Q2xpY2sgPSBuZXcgT25DbGlja0xpc3RlbmVyKCkgeworICAgICAgICAgICAgcHVibGljIHZvaWQgb25DbGljayhWaWV3IHYpIHsKKyAgICAgICAgICAgICAgICBtQ2FsbGJhY2sudGFrZUVtZXJnZW5jeUNhbGxBY3Rpb24oKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfTsKKworICAgICAgICBtRW1lcmdlbmN5QWxvbmUgPSAoQnV0dG9uKSBmaW5kVmlld0J5SWQoUi5pZC5lbWVyZ2VuY3lDYWxsQWxvbmUpOworICAgICAgICBtRW1lcmdlbmN5QWxvbmUuc2V0Rm9jdXNhYmxlKGZhbHNlKTsgLy8gdG91Y2ggb25seSEKKyAgICAgICAgbUVtZXJnZW5jeUFsb25lLnNldE9uQ2xpY2tMaXN0ZW5lcihlbWVyZ2VuY3lDbGljayk7CisgICAgICAgIG1FbWVyZ2VuY3lUb2dldGhlciA9IChCdXR0b24pIGZpbmRWaWV3QnlJZChSLmlkLmVtZXJnZW5jeUNhbGxUb2dldGhlcik7CisgICAgICAgIG1FbWVyZ2VuY3lUb2dldGhlci5zZXRGb2N1c2FibGUoZmFsc2UpOworICAgICAgICBtRW1lcmdlbmN5VG9nZXRoZXIuc2V0T25DbGlja0xpc3RlbmVyKGVtZXJnZW5jeUNsaWNrKTsKKyAgICAgICAgcmVmcmVzaEVtZXJnZW5jeUJ1dHRvblRleHQoKTsKKworICAgICAgICBtRm9yZ290UGF0dGVybkJ1dHRvbiA9IChCdXR0b24pIGZpbmRWaWV3QnlJZChSLmlkLmZvcmdvdFBhdHRlcm4pOworICAgICAgICBtRm9yZ290UGF0dGVybkJ1dHRvbi5zZXRUZXh0KFIuc3RyaW5nLmxvY2tzY3JlZW5fZm9yZ290X3BhdHRlcm5fYnV0dG9uX3RleHQpOworICAgICAgICBtRm9yZ290UGF0dGVybkJ1dHRvbi5zZXRPbkNsaWNrTGlzdGVuZXIobmV3IE9uQ2xpY2tMaXN0ZW5lcigpIHsKKworICAgICAgICAgICAgcHVibGljIHZvaWQgb25DbGljayhWaWV3IHYpIHsKKyAgICAgICAgICAgICAgICBtQ2FsbGJhY2suZm9yZ290UGF0dGVybih0cnVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisKKyAgICAgICAgLy8gbWFrZSBpdCBzbyB1bmhhbmRsZWQgdG91Y2ggZXZlbnRzIHdpdGhpbiB0aGUgdW5sb2NrIHNjcmVlbiBnbyB0byB0aGUKKyAgICAgICAgLy8gbG9jayBwYXR0ZXJuIHZpZXcuCisgICAgICAgIHNldERlZmF1bHRUb3VjaFJlY2VwaWVudChtTG9ja1BhdHRlcm5WaWV3KTsKKworICAgICAgICBtTG9ja1BhdHRlcm5WaWV3LnNldFNhdmVFbmFibGVkKGZhbHNlKTsKKyAgICAgICAgbUxvY2tQYXR0ZXJuVmlldy5zZXRGb2N1c2FibGUoZmFsc2UpOworICAgICAgICBtTG9ja1BhdHRlcm5WaWV3LnNldE9uUGF0dGVybkxpc3RlbmVyKG5ldyBVbmxvY2tQYXR0ZXJuTGlzdGVuZXIoKSk7CisKKyAgICAgICAgLy8gc3RlYWx0aCBtb2RlIHdpbGwgYmUgdGhlIHNhbWUgZm9yIHRoZSBsaWZlIG9mIHRoaXMgc2NyZWVuCisgICAgICAgIG1Mb2NrUGF0dGVyblZpZXcuc2V0SW5TdGVhbHRoTW9kZSghbUxvY2tQYXR0ZXJuVXRpbHMuaXNWaXNpYmxlUGF0dGVybkVuYWJsZWQoKSk7CisKKyAgICAgICAgLy8gdmlicmF0ZSBtb2RlIHdpbGwgYmUgdGhlIHNhbWUgZm9yIHRoZSBsaWZlIG9mIHRoaXMgc2NyZWVuCisgICAgICAgIG1Mb2NrUGF0dGVyblZpZXcuc2V0VGFjdGlsZUZlZWRiYWNrRW5hYmxlZChtTG9ja1BhdHRlcm5VdGlscy5pc1RhY3RpbGVGZWVkYmFja0VuYWJsZWQoKSk7CisKKyAgICAgICAgLy8gYXNzdW1lIG5vcm1hbCBmb290ZXIgbW9kZSBmb3Igbm93CisgICAgICAgIHVwZGF0ZUZvb3RlcihGb290ZXJNb2RlLk5vcm1hbCk7CisKKyAgICAgICAgdXBkYXRlTW9uaXRvci5yZWdpc3RlckluZm9DYWxsYmFjayh0aGlzKTsKKyAgICAgICAgdXBkYXRlTW9uaXRvci5yZWdpc3RlclNpbVN0YXRlQ2FsbGJhY2sodGhpcyk7CisgICAgICAgIHNldEZvY3VzYWJsZUluVG91Y2hNb2RlKHRydWUpOworCisgICAgICAgIC8vIFJlcXVpcmVkIHRvIGdldCBNYXJxdWVlIHRvIHdvcmsuCisgICAgICAgIG1DYXJyaWVyLnNldFNlbGVjdGVkKHRydWUpOworICAgICAgICBtQ2Fycmllci5zZXRUZXh0Q29sb3IoMHhmZmZmZmZmZik7CisKKyAgICAgICAgLy8gdW50aWwgd2UgZ2V0IGFuIHVwZGF0ZS4uLgorICAgICAgICBtQ2Fycmllci5zZXRUZXh0KAorICAgICAgICAgICAgICAgIExvY2tTY3JlZW4uZ2V0Q2FycmllclN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgIG1VcGRhdGVNb25pdG9yLmdldFRlbGVwaG9ueVBsbW4oKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1VcGRhdGVNb25pdG9yLmdldFRlbGVwaG9ueVNwbigpKSk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHJlZnJlc2hFbWVyZ2VuY3lCdXR0b25UZXh0KCkgeworICAgICAgICBtTG9ja1BhdHRlcm5VdGlscy51cGRhdGVFbWVyZ2VuY3lDYWxsQnV0dG9uU3RhdGUobUVtZXJnZW5jeUFsb25lKTsKKyAgICAgICAgbUxvY2tQYXR0ZXJuVXRpbHMudXBkYXRlRW1lcmdlbmN5Q2FsbEJ1dHRvblN0YXRlKG1FbWVyZ2VuY3lUb2dldGhlcik7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0RW5hYmxlRmFsbGJhY2soYm9vbGVhbiBzdGF0ZSkgeworICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgInNldEVuYWJsZUZhbGxiYWNrKCIgKyBzdGF0ZSArICIpIik7CisgICAgICAgIG1FbmFibGVGYWxsYmFjayA9IHN0YXRlOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCByZXNldFN0YXR1c0luZm8oKSB7CisgICAgICAgIG1JbnN0cnVjdGlvbnMgPSBudWxsOworICAgICAgICBtU2hvd2luZ0JhdHRlcnlJbmZvID0gbVVwZGF0ZU1vbml0b3Iuc2hvdWxkU2hvd0JhdHRlcnlJbmZvKCk7CisgICAgICAgIG1QbHVnZ2VkSW4gPSBtVXBkYXRlTW9uaXRvci5pc0RldmljZVBsdWdnZWRJbigpOworICAgICAgICBtQmF0dGVyeUxldmVsID0gbVVwZGF0ZU1vbml0b3IuZ2V0QmF0dGVyeUxldmVsKCk7CisgICAgICAgIG1OZXh0QWxhcm0gPSBtTG9ja1BhdHRlcm5VdGlscy5nZXROZXh0QWxhcm0oKTsKKyAgICAgICAgdXBkYXRlU3RhdHVzTGluZXMoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgdXBkYXRlU3RhdHVzTGluZXMoKSB7CisgICAgICAgIGlmIChtSW5zdHJ1Y3Rpb25zICE9IG51bGwpIHsKKyAgICAgICAgICAgIC8vIGluc3RydWN0aW9ucyBvbmx5CisgICAgICAgICAgICBtU3RhdHVzMS5zZXRUZXh0KG1JbnN0cnVjdGlvbnMpOworICAgICAgICAgICAgaWYgKFRleHRVdGlscy5pc0VtcHR5KG1JbnN0cnVjdGlvbnMpKSB7CisgICAgICAgICAgICAgICAgbVN0YXR1czEuc2V0Q29tcG91bmREcmF3YWJsZXNXaXRoSW50cmluc2ljQm91bmRzKDAsIDAsIDAsIDApOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtU3RhdHVzMS5zZXRDb21wb3VuZERyYXdhYmxlc1dpdGhJbnRyaW5zaWNCb3VuZHMoCisgICAgICAgICAgICAgICAgICAgICAgICBSLmRyYXdhYmxlLmljX2xvY2tfaWRsZV9sb2NrLCAwLCAwLCAwKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbVN0YXR1czEuc2V0VmlzaWJpbGl0eShWaWV3LlZJU0lCTEUpOworICAgICAgICAgICAgbVN0YXR1c1NlcC5zZXRWaXNpYmlsaXR5KFZpZXcuR09ORSk7CisgICAgICAgICAgICBtU3RhdHVzMi5zZXRWaXNpYmlsaXR5KFZpZXcuR09ORSk7CisgICAgICAgIH0gZWxzZSBpZiAobVNob3dpbmdCYXR0ZXJ5SW5mbyAmJiBtTmV4dEFsYXJtID09IG51bGwpIHsKKyAgICAgICAgICAgIC8vIGJhdHRlcnkgb25seQorICAgICAgICAgICAgaWYgKG1QbHVnZ2VkSW4pIHsKKyAgICAgICAgICAgICAgaWYgKG1CYXR0ZXJ5TGV2ZWwgPj0gMTAwKSB7CisgICAgICAgICAgICAgICAgbVN0YXR1czEuc2V0VGV4dChnZXRDb250ZXh0KCkuZ2V0U3RyaW5nKFIuc3RyaW5nLmxvY2tzY3JlZW5fY2hhcmdlZCkpOworICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgbVN0YXR1czEuc2V0VGV4dChnZXRDb250ZXh0KCkuZ2V0U3RyaW5nKFIuc3RyaW5nLmxvY2tzY3JlZW5fcGx1Z2dlZF9pbiwgbUJhdHRlcnlMZXZlbCkpOworICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1TdGF0dXMxLnNldFRleHQoZ2V0Q29udGV4dCgpLmdldFN0cmluZyhSLnN0cmluZy5sb2Nrc2NyZWVuX2xvd19iYXR0ZXJ5KSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtU3RhdHVzMS5zZXRDb21wb3VuZERyYXdhYmxlc1dpdGhJbnRyaW5zaWNCb3VuZHMoUi5kcmF3YWJsZS5pY19sb2NrX2lkbGVfY2hhcmdpbmcsIDAsIDAsIDApOworCisgICAgICAgICAgICBtU3RhdHVzMS5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7CisgICAgICAgICAgICBtU3RhdHVzU2VwLnNldFZpc2liaWxpdHkoVmlldy5HT05FKTsKKyAgICAgICAgICAgIG1TdGF0dXMyLnNldFZpc2liaWxpdHkoVmlldy5HT05FKTsKKworICAgICAgICB9IGVsc2UgaWYgKG1OZXh0QWxhcm0gIT0gbnVsbCAmJiAhbVNob3dpbmdCYXR0ZXJ5SW5mbykgeworICAgICAgICAgICAgLy8gYWxhcm0gb25seQorICAgICAgICAgICAgbVN0YXR1czEuc2V0VGV4dChtTmV4dEFsYXJtKTsKKyAgICAgICAgICAgIG1TdGF0dXMxLnNldENvbXBvdW5kRHJhd2FibGVzV2l0aEludHJpbnNpY0JvdW5kcyhSLmRyYXdhYmxlLmljX2xvY2tfaWRsZV9hbGFybSwgMCwgMCwgMCk7CisKKyAgICAgICAgICAgIG1TdGF0dXMxLnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKKyAgICAgICAgICAgIG1TdGF0dXNTZXAuc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOworICAgICAgICAgICAgbVN0YXR1czIuc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOworICAgICAgICB9IGVsc2UgaWYgKG1OZXh0QWxhcm0gIT0gbnVsbCAmJiBtU2hvd2luZ0JhdHRlcnlJbmZvKSB7CisgICAgICAgICAgICAvLyBib3RoIGJhdHRlcnkgYW5kIG5leHQgYWxhcm0KKyAgICAgICAgICAgIG1TdGF0dXMxLnNldFRleHQobU5leHRBbGFybSk7CisgICAgICAgICAgICBtU3RhdHVzU2VwLnNldFRleHQoInwiKTsKKyAgICAgICAgICAgIG1TdGF0dXMyLnNldFRleHQoZ2V0Q29udGV4dCgpLmdldFN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgUi5zdHJpbmcubG9ja3NjcmVlbl9iYXR0ZXJ5X3Nob3J0LAorICAgICAgICAgICAgICAgICAgICBNYXRoLm1pbigxMDAsIG1CYXR0ZXJ5TGV2ZWwpKSk7CisgICAgICAgICAgICBtU3RhdHVzMS5zZXRDb21wb3VuZERyYXdhYmxlc1dpdGhJbnRyaW5zaWNCb3VuZHMoUi5kcmF3YWJsZS5pY19sb2NrX2lkbGVfYWxhcm0sIDAsIDAsIDApOworICAgICAgICAgICAgaWYgKG1QbHVnZ2VkSW4pIHsKKyAgICAgICAgICAgICAgICBtU3RhdHVzMi5zZXRDb21wb3VuZERyYXdhYmxlc1dpdGhJbnRyaW5zaWNCb3VuZHMoUi5kcmF3YWJsZS5pY19sb2NrX2lkbGVfY2hhcmdpbmcsIDAsIDAsIDApOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtU3RhdHVzMi5zZXRDb21wb3VuZERyYXdhYmxlc1dpdGhJbnRyaW5zaWNCb3VuZHMoMCwgMCwgMCwgMCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1TdGF0dXMxLnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKKyAgICAgICAgICAgIG1TdGF0dXNTZXAuc2V0VmlzaWJpbGl0eShWaWV3LlZJU0lCTEUpOworICAgICAgICAgICAgbVN0YXR1czIuc2V0VmlzaWJpbGl0eShWaWV3LlZJU0lCTEUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gbm90aGluZyBzcGVjaWZpYyB0byBzaG93OyBzaG93IGdlbmVyYWwgaW5zdHJ1Y3Rpb25zCisgICAgICAgICAgICBtU3RhdHVzMS5zZXRUZXh0KFIuc3RyaW5nLmxvY2tzY3JlZW5fcGF0dGVybl9pbnN0cnVjdGlvbnMpOworICAgICAgICAgICAgbVN0YXR1czEuc2V0Q29tcG91bmREcmF3YWJsZXNXaXRoSW50cmluc2ljQm91bmRzKFIuZHJhd2FibGUuaWNfbG9ja19pZGxlX2xvY2ssIDAsIDAsIDApOworCisgICAgICAgICAgICBtU3RhdHVzMS5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7CisgICAgICAgICAgICBtU3RhdHVzU2VwLnNldFZpc2liaWxpdHkoVmlldy5HT05FKTsKKyAgICAgICAgICAgIG1TdGF0dXMyLnNldFZpc2liaWxpdHkoVmlldy5HT05FKTsKKyAgICAgICAgfQorICAgIH0KKworCisgICAgcHJpdmF0ZSB2b2lkIHJlZnJlc2hUaW1lQW5kRGF0ZURpc3BsYXkoKSB7CisgICAgICAgIG1EYXRlLnNldFRleHQoRGF0ZUZvcm1hdC5mb3JtYXQobURhdGVGb3JtYXRTdHJpbmcsIG5ldyBEYXRlKCkpKTsKKyAgICB9CisKKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBib29sZWFuIGRpc3BhdGNoVG91Y2hFdmVudChNb3Rpb25FdmVudCBldikgeworICAgICAgICAvLyBhcyBsb25nIGFzIHRoZSB1c2VyIGlzIGVudGVyaW5nIGEgcGF0dGVybiAoaS5lIHNlbmRpbmcgYSB0b3VjaAorICAgICAgICAvLyBldmVudCB0aGF0IHdhcyBoYW5kbGVkIGJ5IHRoaXMgc2NyZWVuKSwga2VlcCBwb2tpbmcgdGhlCisgICAgICAgIC8vIHdha2UgbG9jayBzbyB0aGF0IHRoZSBzY3JlZW4gd2lsbCBzdGF5IG9uLgorICAgICAgICBmaW5hbCBib29sZWFuIHJlc3VsdCA9IHN1cGVyLmRpc3BhdGNoVG91Y2hFdmVudChldik7CisgICAgICAgIGlmIChyZXN1bHQgJiYKKyAgICAgICAgICAgICAgICAoKFN5c3RlbUNsb2NrLmVsYXBzZWRSZWFsdGltZSgpIC0gbUxhc3RQb2tlVGltZSkKKyAgICAgICAgICAgICAgICAgICAgICAgID4gIChVTkxPQ0tfUEFUVEVSTl9XQUtFX0lOVEVSVkFMX01TIC0gMTAwKSkpIHsKKyAgICAgICAgICAgIG1MYXN0UG9rZVRpbWUgPSBTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworCisgICAgLy8gLS0tLS0tLS0tLSBJbmZvQ2FsbGJhY2sKKworICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIHZvaWQgb25SZWZyZXNoQmF0dGVyeUluZm8oYm9vbGVhbiBzaG93QmF0dGVyeUluZm8sIGJvb2xlYW4gcGx1Z2dlZEluLCBpbnQgYmF0dGVyeUxldmVsKSB7CisgICAgICAgIG1TaG93aW5nQmF0dGVyeUluZm8gPSBzaG93QmF0dGVyeUluZm87CisgICAgICAgIG1QbHVnZ2VkSW4gPSBwbHVnZ2VkSW47CisgICAgICAgIG1CYXR0ZXJ5TGV2ZWwgPSBiYXR0ZXJ5TGV2ZWw7CisgICAgICAgIHVwZGF0ZVN0YXR1c0xpbmVzKCk7CisgICAgfQorCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgdm9pZCBvblRpbWVDaGFuZ2VkKCkgeworICAgICAgICByZWZyZXNoVGltZUFuZERhdGVEaXNwbGF5KCk7CisgICAgfQorCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgdm9pZCBvblJlZnJlc2hDYXJyaWVySW5mbyhDaGFyU2VxdWVuY2UgcGxtbiwgQ2hhclNlcXVlbmNlIHNwbikgeworICAgICAgICBtQ2Fycmllci5zZXRUZXh0KExvY2tTY3JlZW4uZ2V0Q2FycmllclN0cmluZyhwbG1uLCBzcG4pKTsKKyAgICB9CisKKyAgICAvKioge0Bpbmhlcml0RG9jfSAqLworICAgIHB1YmxpYyB2b2lkIG9uUmluZ2VyTW9kZUNoYW5nZWQoaW50IHN0YXRlKSB7CisgICAgICAgIC8vIG5vdCBjdXJyZW50bHkgdXNlZAorICAgIH0KKworICAgIC8vIC0tLS0tLS0tLS0gU2ltU3RhdGVDYWxsYmFjaworCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgdm9pZCBvblNpbVN0YXRlQ2hhbmdlZChJY2NDYXJkLlN0YXRlIHNpbVN0YXRlKSB7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgb25BdHRhY2hlZFRvV2luZG93KCkgeworICAgICAgICBzdXBlci5vbkF0dGFjaGVkVG9XaW5kb3coKTsKKyAgICAgICAgaWYgKExvY2tQYXR0ZXJuS2V5Z3VhcmRWaWV3LkRFQlVHX0NPTkZJR1VSQVRJT04pIHsKKyAgICAgICAgICAgIExvZy52KFRBRywgIioqKioqIFBBVFRFUk4gQVRUQUNIRUQgVE8gV0lORE9XIik7CisgICAgICAgICAgICBMb2cudihUQUcsICJDdXIgb3JpZW50PSIgKyBtQ3JlYXRpb25PcmllbnRhdGlvbgorICAgICAgICAgICAgICAgICAgICArICIsIG5ldyBjb25maWc9IiArIGdldFJlc291cmNlcygpLmdldENvbmZpZ3VyYXRpb24oKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGdldFJlc291cmNlcygpLmdldENvbmZpZ3VyYXRpb24oKS5vcmllbnRhdGlvbiAhPSBtQ3JlYXRpb25PcmllbnRhdGlvbikgeworICAgICAgICAgICAgbUNhbGxiYWNrLnJlY3JlYXRlTWUoZ2V0UmVzb3VyY2VzKCkuZ2V0Q29uZmlndXJhdGlvbigpKTsKKyAgICAgICAgfQorICAgIH0KKworCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCBvbkNvbmZpZ3VyYXRpb25DaGFuZ2VkKENvbmZpZ3VyYXRpb24gbmV3Q29uZmlnKSB7CisgICAgICAgIHN1cGVyLm9uQ29uZmlndXJhdGlvbkNoYW5nZWQobmV3Q29uZmlnKTsKKyAgICAgICAgaWYgKExvY2tQYXR0ZXJuS2V5Z3VhcmRWaWV3LkRFQlVHX0NPTkZJR1VSQVRJT04pIHsKKyAgICAgICAgICAgIExvZy52KFRBRywgIioqKioqIFBBVFRFUk4gQ09ORklHVVJBVElPTiBDSEFOR0VEIik7CisgICAgICAgICAgICBMb2cudihUQUcsICJDdXIgb3JpZW50PSIgKyBtQ3JlYXRpb25PcmllbnRhdGlvbgorICAgICAgICAgICAgICAgICAgICArICIsIG5ldyBjb25maWc9IiArIGdldFJlc291cmNlcygpLmdldENvbmZpZ3VyYXRpb24oKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5ld0NvbmZpZy5vcmllbnRhdGlvbiAhPSBtQ3JlYXRpb25PcmllbnRhdGlvbikgeworICAgICAgICAgICAgbUNhbGxiYWNrLnJlY3JlYXRlTWUobmV3Q29uZmlnKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIHZvaWQgb25LZXlib2FyZENoYW5nZShib29sZWFuIGlzS2V5Ym9hcmRPcGVuKSB7fQorCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBuZWVkc0lucHV0KCkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgdm9pZCBvblBhdXNlKCkgeworICAgICAgICBpZiAobUNvdW50ZG93blRpbWVyICE9IG51bGwpIHsKKyAgICAgICAgICAgIG1Db3VudGRvd25UaW1lci5jYW5jZWwoKTsKKyAgICAgICAgICAgIG1Db3VudGRvd25UaW1lciA9IG51bGw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioge0Bpbmhlcml0RG9jfSAqLworICAgIHB1YmxpYyB2b2lkIG9uUmVzdW1lKCkgeworICAgICAgICAvLyByZXNldCBoZWFkZXIKKyAgICAgICAgcmVzZXRTdGF0dXNJbmZvKCk7CisKKyAgICAgICAgLy8gcmVzZXQgbG9jayBwYXR0ZXJuCisgICAgICAgIG1Mb2NrUGF0dGVyblZpZXcuZW5hYmxlSW5wdXQoKTsKKyAgICAgICAgbUxvY2tQYXR0ZXJuVmlldy5zZXRFbmFibGVkKHRydWUpOworICAgICAgICBtTG9ja1BhdHRlcm5WaWV3LmNsZWFyUGF0dGVybigpOworCisgICAgICAgIC8vIHNob3cgImZvcmdvdCBwYXR0ZXJuPyIgYnV0dG9uIGlmIHdlIGhhdmUgYW4gYWx0ZXJuYXRlIGF1dGhlbnRpY2F0aW9uIG1ldGhvZAorICAgICAgICBtRm9yZ290UGF0dGVybkJ1dHRvbi5zZXRWaXNpYmlsaXR5KG1DYWxsYmFjay5kb2VzRmFsbGJhY2tVbmxvY2tTY3JlZW5FeGlzdCgpCisgICAgICAgICAgICAgICAgPyBWaWV3LlZJU0lCTEUgOiBWaWV3LklOVklTSUJMRSk7CisKKyAgICAgICAgLy8gaWYgdGhlIHVzZXIgaXMgY3VycmVudGx5IGxvY2tlZCBvdXQsIGVuZm9yY2UgaXQuCisgICAgICAgIGxvbmcgZGVhZGxpbmUgPSBtTG9ja1BhdHRlcm5VdGlscy5nZXRMb2Nrb3V0QXR0ZW1wdERlYWRsaW5lKCk7CisgICAgICAgIGlmIChkZWFkbGluZSAhPSAwKSB7CisgICAgICAgICAgICBoYW5kbGVBdHRlbXB0TG9ja291dChkZWFkbGluZSk7CisgICAgICAgIH0KKworICAgICAgICAvLyB0aGUgZm9vdGVyIGRlcGVuZHMgb24gaG93IG1hbnkgdG90YWwgYXR0ZW1wdHMgdGhlIHVzZXIgaGFzIGZhaWxlZAorICAgICAgICBpZiAobUNhbGxiYWNrLmlzVmVyaWZ5VW5sb2NrT25seSgpKSB7CisgICAgICAgICAgICB1cGRhdGVGb290ZXIoRm9vdGVyTW9kZS5WZXJpZnlVbmxvY2tlZCk7CisgICAgICAgIH0gZWxzZSBpZiAobUVuYWJsZUZhbGxiYWNrICYmCisgICAgICAgICAgICAgICAgKG1Ub3RhbEZhaWxlZFBhdHRlcm5BdHRlbXB0cyA+PSBMb2NrUGF0dGVyblV0aWxzLkZBSUxFRF9BVFRFTVBUU19CRUZPUkVfVElNRU9VVCkpIHsKKyAgICAgICAgICAgIHVwZGF0ZUZvb3RlcihGb290ZXJNb2RlLkZvcmdvdExvY2tQYXR0ZXJuKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHVwZGF0ZUZvb3RlcihGb290ZXJNb2RlLk5vcm1hbCk7CisgICAgICAgIH0KKworICAgICAgICByZWZyZXNoRW1lcmdlbmN5QnV0dG9uVGV4dCgpOworICAgIH0KKworICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIHZvaWQgY2xlYW5VcCgpIHsKKyAgICAgICAgbVVwZGF0ZU1vbml0b3IucmVtb3ZlQ2FsbGJhY2sodGhpcyk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgb25XaW5kb3dGb2N1c0NoYW5nZWQoYm9vbGVhbiBoYXNXaW5kb3dGb2N1cykgeworICAgICAgICBzdXBlci5vbldpbmRvd0ZvY3VzQ2hhbmdlZChoYXNXaW5kb3dGb2N1cyk7CisgICAgICAgIGlmIChoYXNXaW5kb3dGb2N1cykgeworICAgICAgICAgICAgLy8gd2hlbiB0aW1lb3V0IGRpYWxvZyBjbG9zZXMgd2Ugd2FudCB0byB1cGRhdGUgb3VyIHN0YXRlCisgICAgICAgICAgICBvblJlc3VtZSgpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBjbGFzcyBVbmxvY2tQYXR0ZXJuTGlzdGVuZXIKKyAgICAgICAgICAgIGltcGxlbWVudHMgTG9ja1BhdHRlcm5WaWV3Lk9uUGF0dGVybkxpc3RlbmVyIHsKKworICAgICAgICBwdWJsaWMgdm9pZCBvblBhdHRlcm5TdGFydCgpIHsKKyAgICAgICAgICAgIG1Mb2NrUGF0dGVyblZpZXcucmVtb3ZlQ2FsbGJhY2tzKG1DYW5jZWxQYXR0ZXJuUnVubmFibGUpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgb25QYXR0ZXJuQ2xlYXJlZCgpIHsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIG9uUGF0dGVybkNlbGxBZGRlZChMaXN0PENlbGw+IHBhdHRlcm4pIHsKKyAgICAgICAgICAgIC8vIFRvIGd1YXJkIGFnYWluc3QgYWNjaWRlbnRhbCBwb2tpbmcgb2YgdGhlIHdha2Vsb2NrLCBsb29rIGZvcgorICAgICAgICAgICAgLy8gdGhlIHVzZXIgYWN0dWFsbHkgdHJ5aW5nIHRvIGRyYXcgYSBwYXR0ZXJuIG9mIHNvbWUgbWluaW1hbCBsZW5ndGguCisgICAgICAgICAgICBpZiAocGF0dGVybi5zaXplKCkgPiBNSU5fUEFUVEVSTl9CRUZPUkVfUE9LRV9XQUtFTE9DSykgeworICAgICAgICAgICAgICAgIG1DYWxsYmFjay5wb2tlV2FrZWxvY2soVU5MT0NLX1BBVFRFUk5fV0FLRV9JTlRFUlZBTF9NUyk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIEdpdmUganVzdCBhIGxpdHRsZSBleHRyYSB0aW1lIGlmIHRoZXkgaGl0IG9uZSBvZiB0aGUgZmlyc3QgZmV3IGRvdHMKKyAgICAgICAgICAgICAgICBtQ2FsbGJhY2sucG9rZVdha2Vsb2NrKFVOTE9DS19QQVRURVJOX1dBS0VfSU5URVJWQUxfRklSU1RfRE9UU19NUyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBvblBhdHRlcm5EZXRlY3RlZChMaXN0PExvY2tQYXR0ZXJuVmlldy5DZWxsPiBwYXR0ZXJuKSB7CisgICAgICAgICAgICBpZiAobUxvY2tQYXR0ZXJuVXRpbHMuY2hlY2tQYXR0ZXJuKHBhdHRlcm4pKSB7CisgICAgICAgICAgICAgICAgbUxvY2tQYXR0ZXJuVmlldworICAgICAgICAgICAgICAgICAgICAgICAgLnNldERpc3BsYXlNb2RlKExvY2tQYXR0ZXJuVmlldy5EaXNwbGF5TW9kZS5Db3JyZWN0KTsKKyAgICAgICAgICAgICAgICBtSW5zdHJ1Y3Rpb25zID0gIiI7CisgICAgICAgICAgICAgICAgdXBkYXRlU3RhdHVzTGluZXMoKTsKKyAgICAgICAgICAgICAgICBtQ2FsbGJhY2sua2V5Z3VhcmREb25lKHRydWUpOworICAgICAgICAgICAgICAgIG1DYWxsYmFjay5yZXBvcnRTdWNjZXNzZnVsVW5sb2NrQXR0ZW1wdCgpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAocGF0dGVybi5zaXplKCkgPiBNSU5fUEFUVEVSTl9CRUZPUkVfUE9LRV9XQUtFTE9DSykgeworICAgICAgICAgICAgICAgICAgICBtQ2FsbGJhY2sucG9rZVdha2Vsb2NrKFVOTE9DS19QQVRURVJOX1dBS0VfSU5URVJWQUxfTVMpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtTG9ja1BhdHRlcm5WaWV3LnNldERpc3BsYXlNb2RlKExvY2tQYXR0ZXJuVmlldy5EaXNwbGF5TW9kZS5Xcm9uZyk7CisgICAgICAgICAgICAgICAgaWYgKHBhdHRlcm4uc2l6ZSgpID49IExvY2tQYXR0ZXJuVXRpbHMuTUlOX1BBVFRFUk5fUkVHSVNURVJfRkFJTCkgeworICAgICAgICAgICAgICAgICAgICBtVG90YWxGYWlsZWRQYXR0ZXJuQXR0ZW1wdHMrKzsKKyAgICAgICAgICAgICAgICAgICAgbUZhaWxlZFBhdHRlcm5BdHRlbXB0c1NpbmNlTGFzdFRpbWVvdXQrKzsKKyAgICAgICAgICAgICAgICAgICAgbUNhbGxiYWNrLnJlcG9ydEZhaWxlZFVubG9ja0F0dGVtcHQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG1GYWlsZWRQYXR0ZXJuQXR0ZW1wdHNTaW5jZUxhc3RUaW1lb3V0ID49IExvY2tQYXR0ZXJuVXRpbHMuRkFJTEVEX0FUVEVNUFRTX0JFRk9SRV9USU1FT1VUKSB7CisgICAgICAgICAgICAgICAgICAgIGxvbmcgZGVhZGxpbmUgPSBtTG9ja1BhdHRlcm5VdGlscy5zZXRMb2Nrb3V0QXR0ZW1wdERlYWRsaW5lKCk7CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZUF0dGVtcHRMb2Nrb3V0KGRlYWRsaW5lKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvLyBUT0RPIG1VbmxvY2tJY29uLnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKKyAgICAgICAgICAgICAgICAgICAgbUluc3RydWN0aW9ucyA9IGdldENvbnRleHQoKS5nZXRTdHJpbmcoUi5zdHJpbmcubG9ja3NjcmVlbl9wYXR0ZXJuX3dyb25nKTsKKyAgICAgICAgICAgICAgICAgICAgdXBkYXRlU3RhdHVzTGluZXMoKTsKKyAgICAgICAgICAgICAgICAgICAgbUxvY2tQYXR0ZXJuVmlldy5wb3N0RGVsYXllZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQ2FuY2VsUGF0dGVyblJ1bm5hYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBVFRFUk5fQ0xFQVJfVElNRU9VVF9NUyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGhhbmRsZUF0dGVtcHRMb2Nrb3V0KGxvbmcgZWxhcHNlZFJlYWx0aW1lRGVhZGxpbmUpIHsKKyAgICAgICAgbUxvY2tQYXR0ZXJuVmlldy5jbGVhclBhdHRlcm4oKTsKKyAgICAgICAgbUxvY2tQYXR0ZXJuVmlldy5zZXRFbmFibGVkKGZhbHNlKTsKKyAgICAgICAgbG9uZyBlbGFwc2VkUmVhbHRpbWUgPSBTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKTsKKyAgICAgICAgbUNvdW50ZG93blRpbWVyID0gbmV3IENvdW50RG93blRpbWVyKGVsYXBzZWRSZWFsdGltZURlYWRsaW5lIC0gZWxhcHNlZFJlYWx0aW1lLCAxMDAwKSB7CisKKyAgICAgICAgICAgIEBPdmVycmlkZQorICAgICAgICAgICAgcHVibGljIHZvaWQgb25UaWNrKGxvbmcgbWlsbGlzVW50aWxGaW5pc2hlZCkgeworICAgICAgICAgICAgICAgIGludCBzZWNvbmRzUmVtYWluaW5nID0gKGludCkgKG1pbGxpc1VudGlsRmluaXNoZWQgLyAxMDAwKTsKKyAgICAgICAgICAgICAgICBtSW5zdHJ1Y3Rpb25zID0gZ2V0Q29udGV4dCgpLmdldFN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgICAgIFIuc3RyaW5nLmxvY2tzY3JlZW5fdG9vX21hbnlfZmFpbGVkX2F0dGVtcHRzX2NvdW50ZG93biwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZHNSZW1haW5pbmcpOworICAgICAgICAgICAgICAgIHVwZGF0ZVN0YXR1c0xpbmVzKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIEBPdmVycmlkZQorICAgICAgICAgICAgcHVibGljIHZvaWQgb25GaW5pc2goKSB7CisgICAgICAgICAgICAgICAgbUxvY2tQYXR0ZXJuVmlldy5zZXRFbmFibGVkKHRydWUpOworICAgICAgICAgICAgICAgIG1JbnN0cnVjdGlvbnMgPSBnZXRDb250ZXh0KCkuZ2V0U3RyaW5nKFIuc3RyaW5nLmxvY2tzY3JlZW5fcGF0dGVybl9pbnN0cnVjdGlvbnMpOworICAgICAgICAgICAgICAgIHVwZGF0ZVN0YXR1c0xpbmVzKCk7CisgICAgICAgICAgICAgICAgLy8gVE9ETyBtVW5sb2NrSWNvbi5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7CisgICAgICAgICAgICAgICAgbUZhaWxlZFBhdHRlcm5BdHRlbXB0c1NpbmNlTGFzdFRpbWVvdXQgPSAwOworICAgICAgICAgICAgICAgIGlmIChtRW5hYmxlRmFsbGJhY2spIHsKKyAgICAgICAgICAgICAgICAgICAgdXBkYXRlRm9vdGVyKEZvb3Rlck1vZGUuRm9yZ290TG9ja1BhdHRlcm4pOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHVwZGF0ZUZvb3RlcihGb290ZXJNb2RlLk5vcm1hbCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9LnN0YXJ0KCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgb25QaG9uZVN0YXRlQ2hhbmdlZChTdHJpbmcgbmV3U3RhdGUpIHsKKyAgICAgICAgcmVmcmVzaEVtZXJnZW5jeUJ1dHRvblRleHQoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL1Bob25lTGF5b3V0SW5mbGF0ZXIuamF2YSBiL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvUGhvbmVMYXlvdXRJbmZsYXRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiZjRiZWIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL1Bob25lTGF5b3V0SW5mbGF0ZXIuamF2YQpAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5pbnRlcm5hbC5wb2xpY3kuaW1wbDsKKworaW1wb3J0IGphdmEudXRpbC5NYXA7CisKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0OworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OworaW1wb3J0IGFuZHJvaWQudmlldy5MYXlvdXRJbmZsYXRlcjsKKworcHVibGljIGNsYXNzIFBob25lTGF5b3V0SW5mbGF0ZXIgZXh0ZW5kcyBMYXlvdXRJbmZsYXRlciB7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nW10gc0NsYXNzUHJlZml4TGlzdCA9IHsKKyAgICAgICAgImFuZHJvaWQud2lkZ2V0LiIsCisgICAgICAgICJhbmRyb2lkLndlYmtpdC4iCisgICAgfTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBJbnN0ZWFkIG9mIGluc3RhbnRpYXRpbmcgZGlyZWN0bHksIHlvdSBzaG91bGQgcmV0cmlldmUgYW4gaW5zdGFuY2UKKyAgICAgKiB0aHJvdWdoIHtAbGluayBDb250ZXh0I2dldFN5c3RlbVNlcnZpY2V9CisgICAgICogCisgICAgICogQHBhcmFtIGNvbnRleHQgVGhlIENvbnRleHQgaW4gd2hpY2ggaW4gd2hpY2ggdG8gZmluZCByZXNvdXJjZXMgYW5kIG90aGVyCisgICAgICogICAgICAgICAgICAgICAgYXBwbGljYXRpb24tc3BlY2lmaWMgdGhpbmdzLgorICAgICAqIAorICAgICAqIEBzZWUgQ29udGV4dCNnZXRTeXN0ZW1TZXJ2aWNlCisgICAgICovCisgICAgcHVibGljIFBob25lTGF5b3V0SW5mbGF0ZXIoQ29udGV4dCBjb250ZXh0KSB7CisgICAgICAgIHN1cGVyKGNvbnRleHQpOworICAgIH0KKyAgICAKKyAgICBwcm90ZWN0ZWQgUGhvbmVMYXlvdXRJbmZsYXRlcihMYXlvdXRJbmZsYXRlciBvcmlnaW5hbCwgQ29udGV4dCBuZXdDb250ZXh0KSB7CisgICAgICAgIHN1cGVyKG9yaWdpbmFsLCBuZXdDb250ZXh0KTsKKyAgICB9CisgICAgCisgICAgLyoqIE92ZXJyaWRlIG9uQ3JlYXRlVmlldyB0byBpbnN0YW50aWF0ZSBuYW1lcyB0aGF0IGNvcnJlc3BvbmQgdG8gdGhlCisgICAgICAgIHdpZGdldHMga25vd24gdG8gdGhlIFdpZGdldCBmYWN0b3J5LiBJZiB3ZSBkb24ndCBmaW5kIGEgbWF0Y2gsCisgICAgICAgIGNhbGwgdGhyb3VnaCB0byBvdXIgc3VwZXIgY2xhc3MuCisgICAgKi8KKyAgICBAT3ZlcnJpZGUgcHJvdGVjdGVkIFZpZXcgb25DcmVhdGVWaWV3KFN0cmluZyBuYW1lLCBBdHRyaWJ1dGVTZXQgYXR0cnMpIHRocm93cyBDbGFzc05vdEZvdW5kRXhjZXB0aW9uIHsKKyAgICAgICAgZm9yIChTdHJpbmcgcHJlZml4IDogc0NsYXNzUHJlZml4TGlzdCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBWaWV3IHZpZXcgPSBjcmVhdGVWaWV3KG5hbWUsIHByZWZpeCwgYXR0cnMpOworICAgICAgICAgICAgICAgIGlmICh2aWV3ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHZpZXc7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBjYXRjaCAoQ2xhc3NOb3RGb3VuZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgLy8gSW4gdGhpcyBjYXNlIHdlIHdhbnQgdG8gbGV0IHRoZSBiYXNlIGNsYXNzIHRha2UgYSBjcmFjaworICAgICAgICAgICAgICAgIC8vIGF0IGl0LgorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHN1cGVyLm9uQ3JlYXRlVmlldyhuYW1lLCBhdHRycyk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBMYXlvdXRJbmZsYXRlciBjbG9uZUluQ29udGV4dChDb250ZXh0IG5ld0NvbnRleHQpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQaG9uZUxheW91dEluZmxhdGVyKHRoaXMsIG5ld0NvbnRleHQpOworICAgIH0KK30KKwpkaWZmIC0tZ2l0IGEvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9QaG9uZVdpbmRvdy5qYXZhIGIvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9QaG9uZVdpbmRvdy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2NDI1ODgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL1Bob25lV2luZG93LmphdmEKQEAgLTAsMCArMSwyODA4IEBACisvKgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLmludGVybmFsLnBvbGljeS5pbXBsOworCitpbXBvcnQgc3RhdGljIGFuZHJvaWQudmlldy5WaWV3R3JvdXAuTGF5b3V0UGFyYW1zLk1BVENIX1BBUkVOVDsKK2ltcG9ydCBzdGF0aWMgYW5kcm9pZC52aWV3LlZpZXdHcm91cC5MYXlvdXRQYXJhbXMuV1JBUF9DT05URU5UOworaW1wb3J0IHN0YXRpYyBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19GVUxMU0NSRUVOOworaW1wb3J0IHN0YXRpYyBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19MQVlPVVRfSU5TRVRfREVDT1I7CitpbXBvcnQgc3RhdGljIGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX0xBWU9VVF9JTl9TQ1JFRU47CitpbXBvcnQgc3RhdGljIGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX1NIT1dfV0FMTFBBUEVSOworCitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudmlldy5CYXNlU3VyZmFjZUhvbGRlcjsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC52aWV3LlJvb3RWaWV3U3VyZmFjZVRha2VyOworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnZpZXcubWVudS5Db250ZXh0TWVudUJ1aWxkZXI7CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudmlldy5tZW51Lk1lbnVCdWlsZGVyOworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnZpZXcubWVudS5NZW51RGlhbG9nSGVscGVyOworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnZpZXcubWVudS5NZW51VmlldzsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC52aWV3Lm1lbnUuU3ViTWVudUJ1aWxkZXI7CisKK2ltcG9ydCBhbmRyb2lkLmFwcC5LZXlndWFyZE1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5hcHAuU2VhcmNoTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQWN0aXZpdHlOb3RGb3VuZEV4Y2VwdGlvbjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5yZXMuQ29uZmlndXJhdGlvbjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucmVzLlR5cGVkQXJyYXk7CitpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5DYW52YXM7CitpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5QaXhlbEZvcm1hdDsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLlJlY3Q7CitpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZTsKK2ltcG9ydCBhbmRyb2lkLm1lZGlhLkF1ZGlvTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLm5ldC5Vcmk7CitpbXBvcnQgYW5kcm9pZC5vcy5CdW5kbGU7CitpbXBvcnQgYW5kcm9pZC5vcy5QYXJjZWw7CitpbXBvcnQgYW5kcm9pZC5vcy5QYXJjZWxhYmxlOworaW1wb3J0IGFuZHJvaWQub3MuU3lzdGVtQ2xvY2s7CitpbXBvcnQgYW5kcm9pZC50ZWxlcGhvbnkuVGVsZXBob255TWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuQW5kcm9pZFJ1bnRpbWVFeGNlcHRpb247CitpbXBvcnQgYW5kcm9pZC51dGlsLkNvbmZpZzsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuRXZlbnRMb2c7CitpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuU3BhcnNlQXJyYXk7CitpbXBvcnQgYW5kcm9pZC52aWV3LkdyYXZpdHk7CitpbXBvcnQgYW5kcm9pZC52aWV3LkhhcHRpY0ZlZWRiYWNrQ29uc3RhbnRzOworaW1wb3J0IGFuZHJvaWQudmlldy5JbnB1dFF1ZXVlOworaW1wb3J0IGFuZHJvaWQudmlldy5LZXlDaGFyYWN0ZXJNYXA7CitpbXBvcnQgYW5kcm9pZC52aWV3LktleUV2ZW50OworaW1wb3J0IGFuZHJvaWQudmlldy5MYXlvdXRJbmZsYXRlcjsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuTWVudTsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuTWVudUl0ZW07CitpbXBvcnQgYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50OworaW1wb3J0IGFuZHJvaWQudmlldy5TdXJmYWNlSG9sZGVyOworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3R3JvdXA7CitpbXBvcnQgYW5kcm9pZC52aWV3LlZpZXdNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQudmlldy5Wb2x1bWVQYW5lbDsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuV2luZG93OworaW1wb3J0IGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQudmlldy5hY2Nlc3NpYmlsaXR5LkFjY2Vzc2liaWxpdHlFdmVudDsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuYWNjZXNzaWJpbGl0eS5BY2Nlc3NpYmlsaXR5TWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFuaW1hdGlvbjsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFuaW1hdGlvblV0aWxzOworaW1wb3J0IGFuZHJvaWQudmlldy5pbnB1dG1ldGhvZC5JbnB1dE1ldGhvZE1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuRnJhbWVMYXlvdXQ7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuSW1hZ2VWaWV3OworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LlByb2dyZXNzQmFyOworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LlRleHRWaWV3OworCisvKioKKyAqIEFuZHJvaWQtc3BlY2lmaWMgV2luZG93LgorICogPHA+CisgKiB0b2RvOiBuZWVkIHRvIHB1bGwgdGhlIGdlbmVyaWMgZnVuY3Rpb25hbGl0eSBvdXQgaW50byBhIGJhc2UgY2xhc3MKKyAqIGluIGFuZHJvaWQud2lkZ2V0LgorICovCitwdWJsaWMgY2xhc3MgUGhvbmVXaW5kb3cgZXh0ZW5kcyBXaW5kb3cgaW1wbGVtZW50cyBNZW51QnVpbGRlci5DYWxsYmFjayB7CisKKyAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBTdHJpbmcgVEFHID0gIlBob25lV2luZG93IjsKKworICAgIHByaXZhdGUgZmluYWwgc3RhdGljIGJvb2xlYW4gU1dFRVBfT1BFTl9NRU5VID0gZmFsc2U7CisKKyAgICAvKioKKyAgICAgKiBTaW1wbGUgY2FsbGJhY2sgdXNlZCBieSB0aGUgY29udGV4dCBtZW51IGFuZCBpdHMgc3VibWVudXMuIFRoZSBvcHRpb25zCisgICAgICogbWVudSBzdWJtZW51cyBkbyBub3QgdXNlIHRoaXMgKHRoZWlyIGJlaGF2aW9yIGlzIG1vcmUgY29tcGxleCkuCisgICAgICovCisgICAgQ29udGV4dE1lbnVDYWxsYmFjayBtQ29udGV4dE1lbnVDYWxsYmFjayA9IG5ldyBDb250ZXh0TWVudUNhbGxiYWNrKEZFQVRVUkVfQ09OVEVYVF9NRU5VKTsKKworICAgIC8vIFRoaXMgaXMgdGhlIHRvcC1sZXZlbCB2aWV3IG9mIHRoZSB3aW5kb3csIGNvbnRhaW5pbmcgdGhlIHdpbmRvdyBkZWNvci4KKyAgICBwcml2YXRlIERlY29yVmlldyBtRGVjb3I7CisKKyAgICAvLyBUaGlzIGlzIHRoZSB2aWV3IGluIHdoaWNoIHRoZSB3aW5kb3cgY29udGVudHMgYXJlIHBsYWNlZC4gSXQgaXMgZWl0aGVyCisgICAgLy8gbURlY29yIGl0c2VsZiwgb3IgYSBjaGlsZCBvZiBtRGVjb3Igd2hlcmUgdGhlIGNvbnRlbnRzIGdvLgorICAgIHByaXZhdGUgVmlld0dyb3VwIG1Db250ZW50UGFyZW50OworCisgICAgU3VyZmFjZUhvbGRlci5DYWxsYmFjayBtVGFrZVN1cmZhY2VDYWxsYmFjazsKKyAgICBCYXNlU3VyZmFjZUhvbGRlciBtU3VyZmFjZUhvbGRlcjsKKyAgICAKKyAgICBJbnB1dFF1ZXVlLkNhbGxiYWNrIG1UYWtlSW5wdXRRdWV1ZUNhbGxiYWNrOworICAgIAorICAgIHByaXZhdGUgYm9vbGVhbiBtSXNGbG9hdGluZzsKKworICAgIHByaXZhdGUgTGF5b3V0SW5mbGF0ZXIgbUxheW91dEluZmxhdGVyOworCisgICAgcHJpdmF0ZSBUZXh0VmlldyBtVGl0bGVWaWV3OworCisgICAgcHJpdmF0ZSBEcmF3YWJsZUZlYXR1cmVTdGF0ZVtdIG1EcmF3YWJsZXM7CisKKyAgICBwcml2YXRlIFBhbmVsRmVhdHVyZVN0YXRlW10gbVBhbmVsczsKKworICAgIC8qKgorICAgICAqIFRoZSBwYW5lbCB0aGF0IGlzIHByZXBhcmVkIG9yIG9wZW5lZCAodGhlIG1vc3QgcmVjZW50IG9uZSBpZiB0aGVyZSBhcmUKKyAgICAgKiBtdWx0aXBsZSBwYW5lbHMpLiBTaG9ydGN1dHMgd2lsbCBnbyB0byB0aGlzIHBhbmVsLiBJdCBnZXRzIHNldCBpbgorICAgICAqIHtAbGluayAjcHJlcGFyZVBhbmVsfSBhbmQgY2xlYXJlZCBpbiB7QGxpbmsgI2Nsb3NlUGFuZWx9LgorICAgICAqLworICAgIHByaXZhdGUgUGFuZWxGZWF0dXJlU3RhdGUgbVByZXBhcmVkUGFuZWw7CisKKyAgICAvKioKKyAgICAgKiBUaGUga2V5Y29kZSB0aGF0IGlzIGN1cnJlbnRseSBoZWxkIGRvd24gKGFzIGEgbW9kaWZpZXIpIGZvciBjaG9yZGluZy4gSWYKKyAgICAgKiB0aGlzIGlzIDAsIHRoZXJlIGlzIG5vIGtleSBoZWxkIGRvd24uCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgbVBhbmVsQ2hvcmRpbmdLZXk7CisgICAgcHJpdmF0ZSBib29sZWFuIG1QYW5lbE1heUxvbmdQcmVzczsKKworICAgIHByaXZhdGUgSW1hZ2VWaWV3IG1MZWZ0SWNvblZpZXc7CisKKyAgICBwcml2YXRlIEltYWdlVmlldyBtUmlnaHRJY29uVmlldzsKKworICAgIHByaXZhdGUgUHJvZ3Jlc3NCYXIgbUNpcmN1bGFyUHJvZ3Jlc3NCYXI7CisKKyAgICBwcml2YXRlIFByb2dyZXNzQmFyIG1Ib3Jpem9udGFsUHJvZ3Jlc3NCYXI7CisKKyAgICBwcml2YXRlIGludCBtQmFja2dyb3VuZFJlc291cmNlID0gMDsKKworICAgIHByaXZhdGUgRHJhd2FibGUgbUJhY2tncm91bmREcmF3YWJsZTsKKworICAgIHByaXZhdGUgaW50IG1GcmFtZVJlc291cmNlID0gMDsKKworICAgIHByaXZhdGUgaW50IG1UZXh0Q29sb3IgPSAwOworCisgICAgcHJpdmF0ZSBDaGFyU2VxdWVuY2UgbVRpdGxlID0gbnVsbDsKKworICAgIHByaXZhdGUgaW50IG1UaXRsZUNvbG9yID0gMDsKKworICAgIHByaXZhdGUgQ29udGV4dE1lbnVCdWlsZGVyIG1Db250ZXh0TWVudTsKKyAgICBwcml2YXRlIE1lbnVEaWFsb2dIZWxwZXIgbUNvbnRleHRNZW51SGVscGVyOworCisgICAgcHJpdmF0ZSBpbnQgbVZvbHVtZUNvbnRyb2xTdHJlYW1UeXBlID0gQXVkaW9NYW5hZ2VyLlVTRV9ERUZBVUxUX1NUUkVBTV9UWVBFOworICAgIHByaXZhdGUgbG9uZyBtVm9sdW1lS2V5VXBUaW1lOworCisgICAgcHJpdmF0ZSBLZXlndWFyZE1hbmFnZXIgbUtleWd1YXJkTWFuYWdlciA9IG51bGw7CisgICAgCisgICAgcHJpdmF0ZSBTZWFyY2hNYW5hZ2VyIG1TZWFyY2hNYW5hZ2VyID0gbnVsbDsKKworICAgIHByaXZhdGUgVGVsZXBob255TWFuYWdlciBtVGVsZXBob255TWFuYWdlciA9IG51bGw7CisgICAgCisgICAgcHVibGljIFBob25lV2luZG93KENvbnRleHQgY29udGV4dCkgeworICAgICAgICBzdXBlcihjb250ZXh0KTsKKyAgICAgICAgbUxheW91dEluZmxhdGVyID0gTGF5b3V0SW5mbGF0ZXIuZnJvbShjb250ZXh0KTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgZmluYWwgdm9pZCBzZXRDb250YWluZXIoV2luZG93IGNvbnRhaW5lcikgeworICAgICAgICBzdXBlci5zZXRDb250YWluZXIoY29udGFpbmVyKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgYm9vbGVhbiByZXF1ZXN0RmVhdHVyZShpbnQgZmVhdHVyZUlkKSB7CisgICAgICAgIGlmIChtQ29udGVudFBhcmVudCAhPSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgQW5kcm9pZFJ1bnRpbWVFeGNlcHRpb24oInJlcXVlc3RGZWF0dXJlKCkgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFkZGluZyBjb250ZW50Iik7CisgICAgICAgIH0KKyAgICAgICAgZmluYWwgaW50IGZlYXR1cmVzID0gZ2V0RmVhdHVyZXMoKTsKKyAgICAgICAgaWYgKChmZWF0dXJlcyAhPSBERUZBVUxUX0ZFQVRVUkVTKSAmJiAoZmVhdHVyZUlkID09IEZFQVRVUkVfQ1VTVE9NX1RJVExFKSkgeworCisgICAgICAgICAgICAvKiBBbm90aGVyIGZlYXR1cmUgaXMgZW5hYmxlZCBhbmQgdGhlIHVzZXIgaXMgdHJ5aW5nIHRvIGVuYWJsZSB0aGUgY3VzdG9tIHRpdGxlIGZlYXR1cmUgKi8KKyAgICAgICAgICAgIHRocm93IG5ldyBBbmRyb2lkUnVudGltZUV4Y2VwdGlvbigiWW91IGNhbm5vdCBjb21iaW5lIGN1c3RvbSB0aXRsZXMgd2l0aCBvdGhlciB0aXRsZSBmZWF0dXJlcyIpOworICAgICAgICB9CisgICAgICAgIGlmICgoKGZlYXR1cmVzICYgKDEgPDwgRkVBVFVSRV9DVVNUT01fVElUTEUpKSAhPSAwKSAmJiAoZmVhdHVyZUlkICE9IEZFQVRVUkVfQ1VTVE9NX1RJVExFKSkgeworCisgICAgICAgICAgICAvKiBDdXN0b20gdGl0bGUgZmVhdHVyZSBpcyBlbmFibGVkIGFuZCB0aGUgdXNlciBpcyB0cnlpbmcgdG8gZW5hYmxlIGFub3RoZXIgZmVhdHVyZSAqLworICAgICAgICAgICAgdGhyb3cgbmV3IEFuZHJvaWRSdW50aW1lRXhjZXB0aW9uKCJZb3UgY2Fubm90IGNvbWJpbmUgY3VzdG9tIHRpdGxlcyB3aXRoIG90aGVyIHRpdGxlIGZlYXR1cmVzIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGZlYXR1cmVJZCA9PSBGRUFUVVJFX09QRU5HTCkgeworICAgICAgICAgICAgZ2V0QXR0cmlidXRlcygpLm1lbW9yeVR5cGUgPSBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5NRU1PUllfVFlQRV9HUFU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHN1cGVyLnJlcXVlc3RGZWF0dXJlKGZlYXR1cmVJZCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgc2V0Q29udGVudFZpZXcoaW50IGxheW91dFJlc0lEKSB7CisgICAgICAgIGlmIChtQ29udGVudFBhcmVudCA9PSBudWxsKSB7CisgICAgICAgICAgICBpbnN0YWxsRGVjb3IoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1Db250ZW50UGFyZW50LnJlbW92ZUFsbFZpZXdzKCk7CisgICAgICAgIH0KKyAgICAgICAgbUxheW91dEluZmxhdGVyLmluZmxhdGUobGF5b3V0UmVzSUQsIG1Db250ZW50UGFyZW50KTsKKyAgICAgICAgZmluYWwgQ2FsbGJhY2sgY2IgPSBnZXRDYWxsYmFjaygpOworICAgICAgICBpZiAoY2IgIT0gbnVsbCkgeworICAgICAgICAgICAgY2Iub25Db250ZW50Q2hhbmdlZCgpOworICAgICAgICB9CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgc2V0Q29udGVudFZpZXcoVmlldyB2aWV3KSB7CisgICAgICAgIHNldENvbnRlbnRWaWV3KHZpZXcsIG5ldyBWaWV3R3JvdXAuTGF5b3V0UGFyYW1zKE1BVENIX1BBUkVOVCwgTUFUQ0hfUEFSRU5UKSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgc2V0Q29udGVudFZpZXcoVmlldyB2aWV3LCBWaWV3R3JvdXAuTGF5b3V0UGFyYW1zIHBhcmFtcykgeworICAgICAgICBpZiAobUNvbnRlbnRQYXJlbnQgPT0gbnVsbCkgeworICAgICAgICAgICAgaW5zdGFsbERlY29yKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtQ29udGVudFBhcmVudC5yZW1vdmVBbGxWaWV3cygpOworICAgICAgICB9CisgICAgICAgIG1Db250ZW50UGFyZW50LmFkZFZpZXcodmlldywgcGFyYW1zKTsKKyAgICAgICAgZmluYWwgQ2FsbGJhY2sgY2IgPSBnZXRDYWxsYmFjaygpOworICAgICAgICBpZiAoY2IgIT0gbnVsbCkgeworICAgICAgICAgICAgY2Iub25Db250ZW50Q2hhbmdlZCgpOworICAgICAgICB9CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgYWRkQ29udGVudFZpZXcoVmlldyB2aWV3LCBWaWV3R3JvdXAuTGF5b3V0UGFyYW1zIHBhcmFtcykgeworICAgICAgICBpZiAobUNvbnRlbnRQYXJlbnQgPT0gbnVsbCkgeworICAgICAgICAgICAgaW5zdGFsbERlY29yKCk7CisgICAgICAgIH0KKyAgICAgICAgbUNvbnRlbnRQYXJlbnQuYWRkVmlldyh2aWV3LCBwYXJhbXMpOworICAgICAgICBmaW5hbCBDYWxsYmFjayBjYiA9IGdldENhbGxiYWNrKCk7CisgICAgICAgIGlmIChjYiAhPSBudWxsKSB7CisgICAgICAgICAgICBjYi5vbkNvbnRlbnRDaGFuZ2VkKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgVmlldyBnZXRDdXJyZW50Rm9jdXMoKSB7CisgICAgICAgIHJldHVybiBtRGVjb3IgIT0gbnVsbCA/IG1EZWNvci5maW5kRm9jdXMoKSA6IG51bGw7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgdGFrZVN1cmZhY2UoU3VyZmFjZUhvbGRlci5DYWxsYmFjayBjYWxsYmFjaykgeworICAgICAgICBtVGFrZVN1cmZhY2VDYWxsYmFjayA9IGNhbGxiYWNrOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCB0YWtlSW5wdXRRdWV1ZShJbnB1dFF1ZXVlLkNhbGxiYWNrIGNhbGxiYWNrKSB7CisgICAgICAgIG1UYWtlSW5wdXRRdWV1ZUNhbGxiYWNrID0gY2FsbGJhY2s7CisgICAgfQorICAgIAorICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBib29sZWFuIGlzRmxvYXRpbmcoKSB7CisgICAgICAgIHJldHVybiBtSXNGbG9hdGluZzsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYSBMYXlvdXRJbmZsYXRlciBpbnN0YW5jZSB0aGF0IGNhbiBiZSB1c2VkIHRvIGluZmxhdGUgWE1MIHZpZXcgbGF5b3V0CisgICAgICogcmVzb3VyY2VzIGZvciB1c2UgaW4gdGhpcyBXaW5kb3cuCisgICAgICoKKyAgICAgKiBAcmV0dXJuIExheW91dEluZmxhdGVyIFRoZSBzaGFyZWQgTGF5b3V0SW5mbGF0ZXIuCisgICAgICovCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIExheW91dEluZmxhdGVyIGdldExheW91dEluZmxhdGVyKCkgeworICAgICAgICByZXR1cm4gbUxheW91dEluZmxhdGVyOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIHNldFRpdGxlKENoYXJTZXF1ZW5jZSB0aXRsZSkgeworICAgICAgICBpZiAobVRpdGxlVmlldyAhPSBudWxsKSB7CisgICAgICAgICAgICBtVGl0bGVWaWV3LnNldFRleHQodGl0bGUpOworICAgICAgICB9CisgICAgICAgIG1UaXRsZSA9IHRpdGxlOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIHNldFRpdGxlQ29sb3IoaW50IHRleHRDb2xvcikgeworICAgICAgICBpZiAobVRpdGxlVmlldyAhPSBudWxsKSB7CisgICAgICAgICAgICBtVGl0bGVWaWV3LnNldFRleHRDb2xvcih0ZXh0Q29sb3IpOworICAgICAgICB9CisgICAgICAgIG1UaXRsZUNvbG9yID0gdGV4dENvbG9yOworICAgIH0KKworICAgIC8qKgorICAgICAqIFByZXBhcmVzIHRoZSBwYW5lbCB0byBlaXRoZXIgYmUgb3BlbmVkIG9yIGNob3JkZWQuIFRoaXMgY3JlYXRlcyB0aGUgTWVudQorICAgICAqIGluc3RhbmNlIGZvciB0aGUgcGFuZWwgYW5kIHBvcHVsYXRlcyBpdCB2aWEgdGhlIEFjdGl2aXR5IGNhbGxiYWNrcy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBzdCBUaGUgcGFuZWwgc3RhdGUgdG8gcHJlcGFyZS4KKyAgICAgKiBAcGFyYW0gZXZlbnQgVGhlIGV2ZW50IHRoYXQgdHJpZ2dlcmVkIHRoZSBwcmVwYXJpbmcgb2YgdGhlIHBhbmVsLgorICAgICAqIEByZXR1cm4gV2hldGhlciB0aGUgcGFuZWwgd2FzIHByZXBhcmVkLiBJZiB0aGUgcGFuZWwgc2hvdWxkIG5vdCBiZSBzaG93biwKKyAgICAgKiAgICAgICAgIHJldHVybnMgZmFsc2UuCisgICAgICovCisgICAgcHVibGljIGZpbmFsIGJvb2xlYW4gcHJlcGFyZVBhbmVsKFBhbmVsRmVhdHVyZVN0YXRlIHN0LCBLZXlFdmVudCBldmVudCkgeworICAgICAgICAvLyBBbHJlYWR5IHByZXBhcmVkIChpc1ByZXBhcmVkIHdpbGwgYmUgcmVzZXQgdG8gZmFsc2UgbGF0ZXIpCisgICAgICAgIGlmIChzdC5pc1ByZXBhcmVkKQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICAgICAgaWYgKChtUHJlcGFyZWRQYW5lbCAhPSBudWxsKSAmJiAobVByZXBhcmVkUGFuZWwgIT0gc3QpKSB7CisgICAgICAgICAgICAvLyBBbm90aGVyIFBhbmVsIGlzIHByZXBhcmVkIGFuZCBwb3NzaWJseSBvcGVuLCBzbyBjbG9zZSBpdAorICAgICAgICAgICAgY2xvc2VQYW5lbChtUHJlcGFyZWRQYW5lbCwgZmFsc2UpOworICAgICAgICB9CisKKyAgICAgICAgZmluYWwgQ2FsbGJhY2sgY2IgPSBnZXRDYWxsYmFjaygpOworCisgICAgICAgIGlmIChjYiAhPSBudWxsKSB7CisgICAgICAgICAgICBzdC5jcmVhdGVkUGFuZWxWaWV3ID0gY2Iub25DcmVhdGVQYW5lbFZpZXcoc3QuZmVhdHVyZUlkKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChzdC5jcmVhdGVkUGFuZWxWaWV3ID09IG51bGwpIHsKKyAgICAgICAgICAgIC8vIEluaXQgdGhlIHBhbmVsIHN0YXRlJ3MgbWVudS0tcmV0dXJuIGZhbHNlIGlmIGluaXQgZmFpbGVkCisgICAgICAgICAgICBpZiAoc3QubWVudSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgaWYgKCFpbml0aWFsaXplUGFuZWxNZW51KHN0KSB8fCAoc3QubWVudSA9PSBudWxsKSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8vIENhbGwgY2FsbGJhY2ssIGFuZCByZXR1cm4gaWYgaXQgZG9lc24ndCB3YW50IHRvIGRpc3BsYXkgbWVudQorICAgICAgICAgICAgICAgIGlmICgoY2IgPT0gbnVsbCkgfHwgIWNiLm9uQ3JlYXRlUGFuZWxNZW51KHN0LmZlYXR1cmVJZCwgc3QubWVudSkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gRGl0Y2ggdGhlIG1lbnUgY3JlYXRlZCBhYm92ZQorICAgICAgICAgICAgICAgICAgICBzdC5tZW51ID0gbnVsbDsKKworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBDYWxsYmFjayBhbmQgcmV0dXJuIGlmIHRoZSBjYWxsYmFjayBkb2VzIG5vdCB3YW50IHRvIHNob3cgdGhlIG1lbnUKKyAgICAgICAgICAgIGlmICghY2Iub25QcmVwYXJlUGFuZWwoc3QuZmVhdHVyZUlkLCBzdC5jcmVhdGVkUGFuZWxWaWV3LCBzdC5tZW51KSkgeworICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gU2V0IHRoZSBwcm9wZXIga2V5bWFwCisgICAgICAgICAgICBLZXlDaGFyYWN0ZXJNYXAga21hcCA9IEtleUNoYXJhY3Rlck1hcC5sb2FkKGV2ZW50ICE9IG51bGwgPyBldmVudC5nZXREZXZpY2VJZCgpIDogMCk7CisgICAgICAgICAgICBzdC5xd2VydHlNb2RlID0ga21hcC5nZXRLZXlib2FyZFR5cGUoKSAhPSBLZXlDaGFyYWN0ZXJNYXAuTlVNRVJJQzsKKyAgICAgICAgICAgIHN0Lm1lbnUuc2V0UXdlcnR5TW9kZShzdC5xd2VydHlNb2RlKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFNldCBvdGhlciBzdGF0ZQorICAgICAgICBzdC5pc1ByZXBhcmVkID0gdHJ1ZTsKKyAgICAgICAgc3QuaXNIYW5kbGVkID0gZmFsc2U7CisgICAgICAgIG1QcmVwYXJlZFBhbmVsID0gc3Q7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgb25Db25maWd1cmF0aW9uQ2hhbmdlZChDb25maWd1cmF0aW9uIG5ld0NvbmZpZykgeworICAgICAgICBQYW5lbEZlYXR1cmVTdGF0ZSBzdCA9IGdldFBhbmVsU3RhdGUoRkVBVFVSRV9PUFRJT05TX1BBTkVMLCBmYWxzZSk7CisgICAgICAgIGlmICgoc3QgIT0gbnVsbCkgJiYgKHN0Lm1lbnUgIT0gbnVsbCkpIHsKKyAgICAgICAgICAgIGZpbmFsIE1lbnVCdWlsZGVyIG1lbnVCdWlsZGVyID0gKE1lbnVCdWlsZGVyKSBzdC5tZW51OworCisgICAgICAgICAgICBpZiAoc3QuaXNPcGVuKSB7CisgICAgICAgICAgICAgICAgLy8gRnJlZXplIHN0YXRlCisgICAgICAgICAgICAgICAgZmluYWwgQnVuZGxlIHN0YXRlID0gbmV3IEJ1bmRsZSgpOworICAgICAgICAgICAgICAgIG1lbnVCdWlsZGVyLnNhdmVIaWVyYXJjaHlTdGF0ZShzdGF0ZSk7CisKKyAgICAgICAgICAgICAgICAvLyBSZW1vdmUgdGhlIG1lbnUgdmlld3Mgc2luY2UgdGhleSBuZWVkIHRvIGJlIHJlY3JlYXRlZAorICAgICAgICAgICAgICAgIC8vIGFjY29yZGluZyB0byB0aGUgbmV3IGNvbmZpZ3VyYXRpb24KKyAgICAgICAgICAgICAgICBjbGVhck1lbnVWaWV3cyhzdCk7CisKKyAgICAgICAgICAgICAgICAvLyBSZS1vcGVuIHRoZSBzYW1lIG1lbnUKKyAgICAgICAgICAgICAgICByZW9wZW5NZW51KGZhbHNlKTsKKworICAgICAgICAgICAgICAgIC8vIFJlc3RvcmUgc3RhdGUKKyAgICAgICAgICAgICAgICBtZW51QnVpbGRlci5yZXN0b3JlSGllcmFyY2h5U3RhdGUoc3RhdGUpOworCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIENsZWFyIG1lbnUgdmlld3Mgc28gb24gbmV4dCBtZW51IG9wZW5pbmcsIGl0IHdpbGwgdXNlCisgICAgICAgICAgICAgICAgLy8gdGhlIHByb3BlciBsYXlvdXQKKyAgICAgICAgICAgICAgICBjbGVhck1lbnVWaWV3cyhzdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIHZvaWQgY2xlYXJNZW51Vmlld3MoUGFuZWxGZWF0dXJlU3RhdGUgc3QpIHsKKworICAgICAgICAvLyBUaGlzIGNhbiBiZSBjYWxsZWQgb24gY29uZmlnIGNoYW5nZXMsIHNvIHdlIHNob3VsZCBtYWtlIHN1cmUKKyAgICAgICAgLy8gdGhlIHZpZXdzIHdpbGwgYmUgcmVjb25zdHJ1Y3RlZCBiYXNlZCBvbiB0aGUgbmV3IG9yaWVudGF0aW9uLCBldGMuCisKKyAgICAgICAgLy8gQWxsb3cgdGhlIGNhbGxiYWNrIHRvIGNyZWF0ZSBhIG5ldyBwYW5lbCB2aWV3CisgICAgICAgIHN0LmNyZWF0ZWRQYW5lbFZpZXcgPSBudWxsOworCisgICAgICAgIC8vIENhdXNlcyB0aGUgZGVjb3IgdmlldyB0byBiZSByZWNyZWF0ZWQKKyAgICAgICAgc3QucmVmcmVzaERlY29yVmlldyA9IHRydWU7CisKKyAgICAgICAgKChNZW51QnVpbGRlcikgc3QubWVudSkuY2xlYXJNZW51Vmlld3MoKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgZmluYWwgdm9pZCBvcGVuUGFuZWwoaW50IGZlYXR1cmVJZCwgS2V5RXZlbnQgZXZlbnQpIHsKKyAgICAgICAgb3BlblBhbmVsKGdldFBhbmVsU3RhdGUoZmVhdHVyZUlkLCB0cnVlKSwgZXZlbnQpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBvcGVuUGFuZWwoUGFuZWxGZWF0dXJlU3RhdGUgc3QsIEtleUV2ZW50IGV2ZW50KSB7CisgICAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnRsbigiT3BlbiBwYW5lbDogaXNPcGVuPSIgKyBzdC5pc09wZW4pOworCisgICAgICAgIC8vIEFscmVhZHkgb3BlbiwgcmV0dXJuCisgICAgICAgIGlmIChzdC5pc09wZW4pIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIENhbGxiYWNrIGNiID0gZ2V0Q2FsbGJhY2soKTsKKyAgICAgICAgaWYgKChjYiAhPSBudWxsKSAmJiAoIWNiLm9uTWVudU9wZW5lZChzdC5mZWF0dXJlSWQsIHN0Lm1lbnUpKSkgeworICAgICAgICAgICAgLy8gQ2FsbGJhY2sgZG9lc24ndCB3YW50IHRoZSBtZW51IHRvIG9wZW4sIHJlc2V0IGFueSBzdGF0ZQorICAgICAgICAgICAgY2xvc2VQYW5lbChzdCwgdHJ1ZSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBmaW5hbCBXaW5kb3dNYW5hZ2VyIHdtID0gZ2V0V2luZG93TWFuYWdlcigpOworICAgICAgICBpZiAod20gPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gUHJlcGFyZSBwYW5lbCAoc2hvdWxkIGhhdmUgYmVlbiBkb25lIGJlZm9yZSwgYnV0IGp1c3QgaW4gY2FzZSkKKyAgICAgICAgaWYgKCFwcmVwYXJlUGFuZWwoc3QsIGV2ZW50KSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHN0LmRlY29yVmlldyA9PSBudWxsIHx8IHN0LnJlZnJlc2hEZWNvclZpZXcpIHsKKyAgICAgICAgICAgIGlmIChzdC5kZWNvclZpZXcgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIC8vIEluaXRpYWxpemUgdGhlIHBhbmVsIGRlY29yLCB0aGlzIHdpbGwgcG9wdWxhdGUgc3QuZGVjb3JWaWV3CisgICAgICAgICAgICAgICAgaWYgKCFpbml0aWFsaXplUGFuZWxEZWNvcihzdCkgfHwgKHN0LmRlY29yVmlldyA9PSBudWxsKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfSBlbHNlIGlmIChzdC5yZWZyZXNoRGVjb3JWaWV3ICYmIChzdC5kZWNvclZpZXcuZ2V0Q2hpbGRDb3VudCgpID4gMCkpIHsKKyAgICAgICAgICAgICAgICAvLyBEZWNvciBuZWVkcyByZWZyZXNoaW5nLCBzbyByZW1vdmUgaXRzIHZpZXdzCisgICAgICAgICAgICAgICAgc3QuZGVjb3JWaWV3LnJlbW92ZUFsbFZpZXdzKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoaXMgd2lsbCBwb3B1bGF0ZSBzdC5zaG93blBhbmVsVmlldworICAgICAgICAgICAgaWYgKCFpbml0aWFsaXplUGFuZWxDb250ZW50KHN0KSB8fCAoc3Quc2hvd25QYW5lbFZpZXcgPT0gbnVsbCkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFZpZXdHcm91cC5MYXlvdXRQYXJhbXMgbHAgPSBzdC5zaG93blBhbmVsVmlldy5nZXRMYXlvdXRQYXJhbXMoKTsKKyAgICAgICAgICAgIGlmIChscCA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgbHAgPSBuZXcgVmlld0dyb3VwLkxheW91dFBhcmFtcyhXUkFQX0NPTlRFTlQsIFdSQVBfQ09OVEVOVCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGludCBiYWNrZ3JvdW5kUmVzSWQ7CisgICAgICAgICAgICBpZiAobHAud2lkdGggPT0gVmlld0dyb3VwLkxheW91dFBhcmFtcy5NQVRDSF9QQVJFTlQpIHsKKyAgICAgICAgICAgICAgICAvLyBJZiB0aGUgY29udGVudHMgaXMgZmlsbCBwYXJlbnQgZm9yIHRoZSB3aWR0aCwgc2V0IHRoZQorICAgICAgICAgICAgICAgIC8vIGNvcnJlc3BvbmRpbmcgYmFja2dyb3VuZAorICAgICAgICAgICAgICAgIGJhY2tncm91bmRSZXNJZCA9IHN0LmZ1bGxCYWNrZ3JvdW5kOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UsIHNldCB0aGUgbm9ybWFsIHBhbmVsIGJhY2tncm91bmQKKyAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kUmVzSWQgPSBzdC5iYWNrZ3JvdW5kOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3QuZGVjb3JWaWV3LnNldFdpbmRvd0JhY2tncm91bmQoZ2V0Q29udGV4dCgpLmdldFJlc291cmNlcygpLmdldERyYXdhYmxlKAorICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kUmVzSWQpKTsKKworCisgICAgICAgICAgICBzdC5kZWNvclZpZXcuYWRkVmlldyhzdC5zaG93blBhbmVsVmlldywgbHApOworCisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogR2l2ZSBmb2N1cyB0byB0aGUgdmlldywgaWYgaXQgb3Igb25lIG9mIGl0cyBjaGlsZHJlbiBkb2VzIG5vdAorICAgICAgICAgICAgICogYWxyZWFkeSBoYXZlIGl0LgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBpZiAoIXN0LnNob3duUGFuZWxWaWV3Lmhhc0ZvY3VzKCkpIHsKKyAgICAgICAgICAgICAgICBzdC5zaG93blBhbmVsVmlldy5yZXF1ZXN0Rm9jdXMoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHN0LmlzT3BlbiA9IHRydWU7CisgICAgICAgIHN0LmlzSGFuZGxlZCA9IGZhbHNlOworCisgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIGxwID0gbmV3IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zKAorICAgICAgICAgICAgICAgIFdSQVBfQ09OVEVOVCwgV1JBUF9DT05URU5ULAorICAgICAgICAgICAgICAgIHN0LngsIHN0LnksIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLlRZUEVfQVBQTElDQVRJT05fQVRUQUNIRURfRElBTE9HLAorICAgICAgICAgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfRElUSEVSCisgICAgICAgICAgICAgICAgfCBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX0FMVF9GT0NVU0FCTEVfSU0sCisgICAgICAgICAgICAgICAgc3QuZGVjb3JWaWV3Lm1EZWZhdWx0T3BhY2l0eSk7CisKKyAgICAgICAgbHAuZ3Jhdml0eSA9IHN0LmdyYXZpdHk7CisgICAgICAgIGxwLndpbmRvd0FuaW1hdGlvbnMgPSBzdC53aW5kb3dBbmltYXRpb25zOworICAgICAgICAKKyAgICAgICAgd20uYWRkVmlldyhzdC5kZWNvclZpZXcsIGxwKTsKKyAgICAgICAgLy8gTG9nLnYoVEFHLCAiQWRkaW5nIG1haW4gbWVudSB0byB3aW5kb3cgbWFuYWdlci4iKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgZmluYWwgdm9pZCBjbG9zZVBhbmVsKGludCBmZWF0dXJlSWQpIHsKKyAgICAgICAgaWYgKGZlYXR1cmVJZCA9PSBGRUFUVVJFX0NPTlRFWFRfTUVOVSkgeworICAgICAgICAgICAgY2xvc2VDb250ZXh0TWVudSgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgY2xvc2VQYW5lbChnZXRQYW5lbFN0YXRlKGZlYXR1cmVJZCwgdHJ1ZSksIHRydWUpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQ2xvc2VzIHRoZSBnaXZlbiBwYW5lbC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBzdCBUaGUgcGFuZWwgdG8gYmUgY2xvc2VkLgorICAgICAqIEBwYXJhbSBkb0NhbGxiYWNrIFdoZXRoZXIgdG8gbm90aWZ5IHRoZSBjYWxsYmFjayB0aGF0IHRoZSBwYW5lbCB3YXMKKyAgICAgKiAgICAgICAgICAgIGNsb3NlZC4gSWYgdGhlIHBhbmVsIGlzIGluIHRoZSBwcm9jZXNzIG9mIHJlLW9wZW5pbmcgb3IKKyAgICAgKiAgICAgICAgICAgIG9wZW5pbmcgYW5vdGhlciBwYW5lbCAoZS5nLiwgbWVudSBvcGVuaW5nIGEgc3ViIG1lbnUpLCB0aGUKKyAgICAgKiAgICAgICAgICAgIGNhbGxiYWNrIHNob3VsZCBub3QgaGFwcGVuIGFuZCB0aGlzIHZhcmlhYmxlIHNob3VsZCBiZSBmYWxzZS4KKyAgICAgKiAgICAgICAgICAgIEluIGFkZGl0aW9uLCB0aGlzIG1ldGhvZCBpbnRlcm5hbGx5IHdpbGwgb25seSBwZXJmb3JtIHRoZQorICAgICAqICAgICAgICAgICAgY2FsbGJhY2sgaWYgdGhlIHBhbmVsIGlzIG9wZW4uCisgICAgICovCisgICAgcHVibGljIGZpbmFsIHZvaWQgY2xvc2VQYW5lbChQYW5lbEZlYXR1cmVTdGF0ZSBzdCwgYm9vbGVhbiBkb0NhbGxiYWNrKSB7CisgICAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnRsbigiQ2xvc2UgcGFuZWw6IGlzT3Blbj0iICsgc3QuaXNPcGVuKTsKKyAgICAgICAgZmluYWwgVmlld01hbmFnZXIgd20gPSBnZXRXaW5kb3dNYW5hZ2VyKCk7CisgICAgICAgIGlmICgod20gIT0gbnVsbCkgJiYgc3QuaXNPcGVuKSB7CisgICAgICAgICAgICBpZiAoc3QuZGVjb3JWaWV3ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICB3bS5yZW1vdmVWaWV3KHN0LmRlY29yVmlldyk7CisgICAgICAgICAgICAgICAgLy8gTG9nLnYoVEFHLCAiUmVtb3ZpbmcgbWFpbiBtZW51IGZyb20gd2luZG93IG1hbmFnZXIuIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChkb0NhbGxiYWNrKSB7CisgICAgICAgICAgICAgICAgY2FsbE9uUGFuZWxDbG9zZWQoc3QuZmVhdHVyZUlkLCBzdCwgbnVsbCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgc3QuaXNQcmVwYXJlZCA9IGZhbHNlOworICAgICAgICBzdC5pc0hhbmRsZWQgPSBmYWxzZTsKKyAgICAgICAgc3QuaXNPcGVuID0gZmFsc2U7CisKKyAgICAgICAgLy8gVGhpcyB2aWV3IGlzIG5vIGxvbmdlciBzaG93biwgc28gbnVsbCBpdCBvdXQKKyAgICAgICAgc3Quc2hvd25QYW5lbFZpZXcgPSBudWxsOworCisgICAgICAgIGlmIChzdC5pc0luRXhwYW5kZWRNb2RlKSB7CisgICAgICAgICAgICAvLyBOZXh0IHRpbWUgdGhlIG1lbnUgb3BlbnMsIGl0IHNob3VsZCBub3QgYmUgaW4gZXhwYW5kZWQgbW9kZSwgc28KKyAgICAgICAgICAgIC8vIGZvcmNlIGEgcmVmcmVzaCBvZiB0aGUgZGVjb3IKKyAgICAgICAgICAgIHN0LnJlZnJlc2hEZWNvclZpZXcgPSB0cnVlOworICAgICAgICAgICAgc3QuaXNJbkV4cGFuZGVkTW9kZSA9IGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1QcmVwYXJlZFBhbmVsID09IHN0KSB7CisgICAgICAgICAgICBtUHJlcGFyZWRQYW5lbCA9IG51bGw7CisgICAgICAgICAgICBtUGFuZWxDaG9yZGluZ0tleSA9IDA7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgZmluYWwgdm9pZCB0b2dnbGVQYW5lbChpbnQgZmVhdHVyZUlkLCBLZXlFdmVudCBldmVudCkgeworICAgICAgICBQYW5lbEZlYXR1cmVTdGF0ZSBzdCA9IGdldFBhbmVsU3RhdGUoZmVhdHVyZUlkLCB0cnVlKTsKKyAgICAgICAgaWYgKHN0LmlzT3BlbikgeworICAgICAgICAgICAgY2xvc2VQYW5lbChzdCwgdHJ1ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBvcGVuUGFuZWwoc3QsIGV2ZW50KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIENhbGxlZCB3aGVuIHRoZSBwYW5lbCBrZXkgaXMgcHVzaGVkIGRvd24uCisgICAgICogQHBhcmFtIGZlYXR1cmVJZCBUaGUgZmVhdHVyZSBJRCBvZiB0aGUgcmVsZXZhbnQgcGFuZWwgKGRlZmF1bHRzIHRvIEZFQVRVUkVfT1BUSU9OU19QQU5FTH0uCisgICAgICogQHBhcmFtIGV2ZW50IFRoZSBrZXkgZXZlbnQuCisgICAgICogQHJldHVybiBXaGV0aGVyIHRoZSBrZXkgd2FzIGhhbmRsZWQuCisgICAgICovCisgICAgcHVibGljIGZpbmFsIGJvb2xlYW4gb25LZXlEb3duUGFuZWwoaW50IGZlYXR1cmVJZCwgS2V5RXZlbnQgZXZlbnQpIHsKKyAgICAgICAgZmluYWwgaW50IGtleUNvZGUgPSBldmVudC5nZXRLZXlDb2RlKCk7CisgICAgICAgIAorICAgICAgICBpZiAoZXZlbnQuZ2V0UmVwZWF0Q291bnQoKSA9PSAwKSB7CisgICAgICAgICAgICAvLyBUaGUgcGFuZWwga2V5IHdhcyBwdXNoZWQsIHNvIHNldCB0aGUgY2hvcmRpbmcga2V5CisgICAgICAgICAgICBtUGFuZWxDaG9yZGluZ0tleSA9IGtleUNvZGU7CisgICAgICAgICAgICBtUGFuZWxNYXlMb25nUHJlc3MgPSBmYWxzZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgUGFuZWxGZWF0dXJlU3RhdGUgc3QgPSBnZXRQYW5lbFN0YXRlKGZlYXR1cmVJZCwgdHJ1ZSk7CisgICAgICAgICAgICBpZiAoIXN0LmlzT3BlbikgeworICAgICAgICAgICAgICAgIGlmIChnZXRDb250ZXh0KCkuZ2V0UmVzb3VyY2VzKCkuZ2V0Q29uZmlndXJhdGlvbigpLmtleWJvYXJkCisgICAgICAgICAgICAgICAgICAgICAgICA9PSBDb25maWd1cmF0aW9uLktFWUJPQVJEX05PS0VZUykgeworICAgICAgICAgICAgICAgICAgICBtUGFuZWxNYXlMb25nUHJlc3MgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gcHJlcGFyZVBhbmVsKHN0LCBldmVudCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgfSBlbHNlIGlmIChtUGFuZWxNYXlMb25nUHJlc3MgJiYgbVBhbmVsQ2hvcmRpbmdLZXkgPT0ga2V5Q29kZQorICAgICAgICAgICAgICAgICYmIChldmVudC5nZXRGbGFncygpJktleUV2ZW50LkZMQUdfTE9OR19QUkVTUykgIT0gMCkgeworICAgICAgICAgICAgLy8gV2UgaGF2ZSBoYWQgYSBsb25nIHByZXNzIHdoaWxlIGluIGEgc3RhdGUgd2hlcmUgdGhpcworICAgICAgICAgICAgLy8gc2hvdWxkIGJlIGV4ZWN1dGVkLi4uICBkbyBpdCEKKyAgICAgICAgICAgIG1QYW5lbENob3JkaW5nS2V5ID0gMDsKKyAgICAgICAgICAgIG1QYW5lbE1heUxvbmdQcmVzcyA9IGZhbHNlOworICAgICAgICAgICAgSW5wdXRNZXRob2RNYW5hZ2VyIGltbSA9IChJbnB1dE1ldGhvZE1hbmFnZXIpCisgICAgICAgICAgICAgICAgICAgIGdldENvbnRleHQoKS5nZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuSU5QVVRfTUVUSE9EX1NFUlZJQ0UpOworICAgICAgICAgICAgaWYgKGltbSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgbURlY29yLnBlcmZvcm1IYXB0aWNGZWVkYmFjayhIYXB0aWNGZWVkYmFja0NvbnN0YW50cy5MT05HX1BSRVNTKTsKKyAgICAgICAgICAgICAgICBpbW0udG9nZ2xlU29mdElucHV0KElucHV0TWV0aG9kTWFuYWdlci5TSE9XX0ZPUkNFRCwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDYWxsZWQgd2hlbiB0aGUgcGFuZWwga2V5IGlzIHJlbGVhc2VkLgorICAgICAqIEBwYXJhbSBmZWF0dXJlSWQgVGhlIGZlYXR1cmUgSUQgb2YgdGhlIHJlbGV2YW50IHBhbmVsIChkZWZhdWx0cyB0byBGRUFUVVJFX09QVElPTlNfUEFORUx9LgorICAgICAqIEBwYXJhbSBldmVudCBUaGUga2V5IGV2ZW50LgorICAgICAqLworICAgIHB1YmxpYyBmaW5hbCB2b2lkIG9uS2V5VXBQYW5lbChpbnQgZmVhdHVyZUlkLCBLZXlFdmVudCBldmVudCkgeworICAgICAgICAvLyBUaGUgcGFuZWwga2V5IHdhcyByZWxlYXNlZCwgc28gY2xlYXIgdGhlIGNob3JkaW5nIGtleQorICAgICAgICBpZiAobVBhbmVsQ2hvcmRpbmdLZXkgIT0gMCkgeworICAgICAgICAgICAgbVBhbmVsQ2hvcmRpbmdLZXkgPSAwOworICAgICAgICAgICAgbVBhbmVsTWF5TG9uZ1ByZXNzID0gZmFsc2U7CisKKyAgICAgICAgICAgIGlmIChldmVudC5pc0NhbmNlbGVkKCkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGJvb2xlYW4gcGxheVNvdW5kRWZmZWN0ID0gZmFsc2U7CisgICAgICAgICAgICBQYW5lbEZlYXR1cmVTdGF0ZSBzdCA9IGdldFBhbmVsU3RhdGUoZmVhdHVyZUlkLCB0cnVlKTsKKyAgICAgICAgICAgIGlmIChzdC5pc09wZW4gfHwgc3QuaXNIYW5kbGVkKSB7CisKKyAgICAgICAgICAgICAgICAvLyBQbGF5IHRoZSBzb3VuZCBlZmZlY3QgaWYgdGhlIHVzZXIgY2xvc2VkIGFuIG9wZW4gbWVudSAoYW5kIG5vdCBpZgorICAgICAgICAgICAgICAgIC8vIHRoZXkganVzdCByZWxlYXNlZCBhIG1lbnUgc2hvcnRjdXQpCisgICAgICAgICAgICAgICAgcGxheVNvdW5kRWZmZWN0ID0gc3QuaXNPcGVuOworCisgICAgICAgICAgICAgICAgLy8gQ2xvc2UgbWVudQorICAgICAgICAgICAgICAgIGNsb3NlUGFuZWwoc3QsIHRydWUpOworCisgICAgICAgICAgICB9IGVsc2UgaWYgKHN0LmlzUHJlcGFyZWQpIHsKKworICAgICAgICAgICAgICAgIC8vIFdyaXRlICdtZW51IG9wZW5lZCcgdG8gZXZlbnQgbG9nCisgICAgICAgICAgICAgICAgRXZlbnRMb2cud3JpdGVFdmVudCg1MDAwMSwgMCk7CisKKyAgICAgICAgICAgICAgICAvLyBTaG93IG1lbnUKKyAgICAgICAgICAgICAgICBvcGVuUGFuZWwoc3QsIGV2ZW50KTsKKworICAgICAgICAgICAgICAgIHBsYXlTb3VuZEVmZmVjdCA9IHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChwbGF5U291bmRFZmZlY3QpIHsKKyAgICAgICAgICAgICAgICBBdWRpb01hbmFnZXIgYXVkaW9NYW5hZ2VyID0gKEF1ZGlvTWFuYWdlcikgZ2V0Q29udGV4dCgpLmdldFN5c3RlbVNlcnZpY2UoCisgICAgICAgICAgICAgICAgICAgICAgICBDb250ZXh0LkFVRElPX1NFUlZJQ0UpOworICAgICAgICAgICAgICAgIGlmIChhdWRpb01hbmFnZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBhdWRpb01hbmFnZXIucGxheVNvdW5kRWZmZWN0KEF1ZGlvTWFuYWdlci5GWF9LRVlfQ0xJQ0spOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIExvZy53KFRBRywgIkNvdWxkbid0IGdldCBhdWRpbyBtYW5hZ2VyIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGZpbmFsIHZvaWQgY2xvc2VBbGxQYW5lbHMoKSB7CisgICAgICAgIGZpbmFsIFZpZXdNYW5hZ2VyIHdtID0gZ2V0V2luZG93TWFuYWdlcigpOworICAgICAgICBpZiAod20gPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZmluYWwgUGFuZWxGZWF0dXJlU3RhdGVbXSBwYW5lbHMgPSBtUGFuZWxzOworICAgICAgICBmaW5hbCBpbnQgTiA9IHBhbmVscyAhPSBudWxsID8gcGFuZWxzLmxlbmd0aCA6IDA7CisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgTjsgaSsrKSB7CisgICAgICAgICAgICBmaW5hbCBQYW5lbEZlYXR1cmVTdGF0ZSBwYW5lbCA9IHBhbmVsc1tpXTsKKyAgICAgICAgICAgIGlmIChwYW5lbCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgY2xvc2VQYW5lbChwYW5lbCwgdHJ1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBjbG9zZUNvbnRleHRNZW51KCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ2xvc2VzIHRoZSBjb250ZXh0IG1lbnUuIFRoaXMgbm90aWZpZXMgdGhlIG1lbnUgbG9naWMgb2YgdGhlIGNsb3NlLCBhbG9uZworICAgICAqIHdpdGggZGlzbWlzc2luZyBpdCBmcm9tIHRoZSBVSS4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN5bmNocm9uaXplZCB2b2lkIGNsb3NlQ29udGV4dE1lbnUoKSB7CisgICAgICAgIGlmIChtQ29udGV4dE1lbnUgIT0gbnVsbCkgeworICAgICAgICAgICAgbUNvbnRleHRNZW51LmNsb3NlKCk7CisgICAgICAgICAgICBkaXNtaXNzQ29udGV4dE1lbnUoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIERpc21pc3NlcyBqdXN0IHRoZSBjb250ZXh0IG1lbnUgVUkuIFRvIGNsb3NlIHRoZSBjb250ZXh0IG1lbnUsIHVzZQorICAgICAqIHtAbGluayAjY2xvc2VDb250ZXh0TWVudSgpfS4KKyAgICAgKi8KKyAgICBwcml2YXRlIHN5bmNocm9uaXplZCB2b2lkIGRpc21pc3NDb250ZXh0TWVudSgpIHsKKyAgICAgICAgbUNvbnRleHRNZW51ID0gbnVsbDsKKworICAgICAgICBpZiAobUNvbnRleHRNZW51SGVscGVyICE9IG51bGwpIHsKKyAgICAgICAgICAgIG1Db250ZXh0TWVudUhlbHBlci5kaXNtaXNzKCk7CisgICAgICAgICAgICBtQ29udGV4dE1lbnVIZWxwZXIgPSBudWxsOworICAgICAgICB9CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGJvb2xlYW4gcGVyZm9ybVBhbmVsU2hvcnRjdXQoaW50IGZlYXR1cmVJZCwgaW50IGtleUNvZGUsIEtleUV2ZW50IGV2ZW50LCBpbnQgZmxhZ3MpIHsKKyAgICAgICAgcmV0dXJuIHBlcmZvcm1QYW5lbFNob3J0Y3V0KGdldFBhbmVsU3RhdGUoZmVhdHVyZUlkLCB0cnVlKSwga2V5Q29kZSwgZXZlbnQsIGZsYWdzKTsKKyAgICB9CisKKyAgICBwcml2YXRlIGJvb2xlYW4gcGVyZm9ybVBhbmVsU2hvcnRjdXQoUGFuZWxGZWF0dXJlU3RhdGUgc3QsIGludCBrZXlDb2RlLCBLZXlFdmVudCBldmVudCwKKyAgICAgICAgICAgIGludCBmbGFncykgeworICAgICAgICBpZiAoZXZlbnQuaXNTeXN0ZW0oKSB8fCAoc3QgPT0gbnVsbCkpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2xlYW4gaGFuZGxlZCA9IGZhbHNlOworCisgICAgICAgIC8vIE9ubHkgdHJ5IHRvIHBlcmZvcm0gbWVudSBzaG9ydGN1dHMgaWYgcHJlcGFyZVBhbmVsIHJldHVybmVkIHRydWUgKHBvc3NpYmxlIGZhbHNlCisgICAgICAgIC8vIHJldHVybiB2YWx1ZSBmcm9tIGFwcGxpY2F0aW9uIG5vdCB3YW50aW5nIHRvIHNob3cgdGhlIG1lbnUpLgorICAgICAgICBpZiAoKHN0LmlzUHJlcGFyZWQgfHwgcHJlcGFyZVBhbmVsKHN0LCBldmVudCkpICYmIHN0Lm1lbnUgIT0gbnVsbCkgeworICAgICAgICAgICAgLy8gVGhlIG1lbnUgaXMgcHJlcGFyZWQgbm93LCBwZXJmb3JtIHRoZSBzaG9ydGN1dCBvbiBpdAorICAgICAgICAgICAgaGFuZGxlZCA9IHN0Lm1lbnUucGVyZm9ybVNob3J0Y3V0KGtleUNvZGUsIGV2ZW50LCBmbGFncyk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoaGFuZGxlZCkgeworICAgICAgICAgICAgLy8gTWFyayBhcyBoYW5kbGVkCisgICAgICAgICAgICBzdC5pc0hhbmRsZWQgPSB0cnVlOworCisgICAgICAgICAgICBpZiAoKGZsYWdzICYgTWVudS5GTEFHX1BFUkZPUk1fTk9fQ0xPU0UpID09IDApIHsKKyAgICAgICAgICAgICAgICBjbG9zZVBhbmVsKHN0LCB0cnVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBoYW5kbGVkOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBib29sZWFuIHBlcmZvcm1QYW5lbElkZW50aWZpZXJBY3Rpb24oaW50IGZlYXR1cmVJZCwgaW50IGlkLCBpbnQgZmxhZ3MpIHsKKworICAgICAgICBQYW5lbEZlYXR1cmVTdGF0ZSBzdCA9IGdldFBhbmVsU3RhdGUoZmVhdHVyZUlkLCB0cnVlKTsKKyAgICAgICAgaWYgKCFwcmVwYXJlUGFuZWwoc3QsIG5ldyBLZXlFdmVudChLZXlFdmVudC5BQ1RJT05fRE9XTiwgS2V5RXZlbnQuS0VZQ09ERV9NRU5VKSkpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoc3QubWVudSA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBib29sZWFuIHJlcyA9IHN0Lm1lbnUucGVyZm9ybUlkZW50aWZpZXJBY3Rpb24oaWQsIGZsYWdzKTsKKworICAgICAgICBjbG9zZVBhbmVsKHN0LCB0cnVlKTsKKworICAgICAgICByZXR1cm4gcmVzOworICAgIH0KKworICAgIHB1YmxpYyBQYW5lbEZlYXR1cmVTdGF0ZSBmaW5kTWVudVBhbmVsKE1lbnUgbWVudSkgeworICAgICAgICBmaW5hbCBQYW5lbEZlYXR1cmVTdGF0ZVtdIHBhbmVscyA9IG1QYW5lbHM7CisgICAgICAgIGZpbmFsIGludCBOID0gcGFuZWxzICE9IG51bGwgPyBwYW5lbHMubGVuZ3RoIDogMDsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBOOyBpKyspIHsKKyAgICAgICAgICAgIGZpbmFsIFBhbmVsRmVhdHVyZVN0YXRlIHBhbmVsID0gcGFuZWxzW2ldOworICAgICAgICAgICAgaWYgKHBhbmVsICE9IG51bGwgJiYgcGFuZWwubWVudSA9PSBtZW51KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHBhbmVsOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIG9uTWVudUl0ZW1TZWxlY3RlZChNZW51QnVpbGRlciBtZW51LCBNZW51SXRlbSBpdGVtKSB7CisgICAgICAgIGZpbmFsIENhbGxiYWNrIGNiID0gZ2V0Q2FsbGJhY2soKTsKKyAgICAgICAgaWYgKGNiICE9IG51bGwpIHsKKyAgICAgICAgICAgIGZpbmFsIFBhbmVsRmVhdHVyZVN0YXRlIHBhbmVsID0gZmluZE1lbnVQYW5lbChtZW51LmdldFJvb3RNZW51KCkpOworICAgICAgICAgICAgaWYgKHBhbmVsICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2Iub25NZW51SXRlbVNlbGVjdGVkKHBhbmVsLmZlYXR1cmVJZCwgaXRlbSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG9uQ2xvc2VNZW51KE1lbnVCdWlsZGVyIG1lbnUsIGJvb2xlYW4gYWxsTWVudXNBcmVDbG9zaW5nKSB7CisgICAgICAgIGZpbmFsIFBhbmVsRmVhdHVyZVN0YXRlIHBhbmVsID0gZmluZE1lbnVQYW5lbChtZW51KTsKKyAgICAgICAgaWYgKHBhbmVsICE9IG51bGwpIHsKKyAgICAgICAgICAgIC8vIENsb3NlIHRoZSBwYW5lbCBhbmQgb25seSBkbyB0aGUgY2FsbGJhY2sgaWYgdGhlIG1lbnUgaXMgYmVpbmcKKyAgICAgICAgICAgIC8vIGNsb3NlZAorICAgICAgICAgICAgLy8gY29tcGxldGVseSwgbm90IGlmIG9wZW5pbmcgYSBzdWIgbWVudQorICAgICAgICAgICAgY2xvc2VQYW5lbChwYW5lbCwgYWxsTWVudXNBcmVDbG9zaW5nKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG9uQ2xvc2VTdWJNZW51KFN1Yk1lbnVCdWlsZGVyIHN1Yk1lbnUpIHsKKyAgICAgICAgZmluYWwgTWVudSBwYXJlbnRNZW51ID0gc3ViTWVudS5nZXRSb290TWVudSgpOworICAgICAgICBmaW5hbCBQYW5lbEZlYXR1cmVTdGF0ZSBwYW5lbCA9IGZpbmRNZW51UGFuZWwocGFyZW50TWVudSk7CisKKyAgICAgICAgLy8gQ2FsbGJhY2sKKyAgICAgICAgaWYgKHBhbmVsICE9IG51bGwpIHsKKyAgICAgICAgICAgIGNhbGxPblBhbmVsQ2xvc2VkKHBhbmVsLmZlYXR1cmVJZCwgcGFuZWwsIHBhcmVudE1lbnUpOworICAgICAgICAgICAgY2xvc2VQYW5lbChwYW5lbCwgdHJ1ZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBvblN1Yk1lbnVTZWxlY3RlZChmaW5hbCBTdWJNZW51QnVpbGRlciBzdWJNZW51KSB7CisgICAgICAgIGlmICghc3ViTWVudS5oYXNWaXNpYmxlSXRlbXMoKSkgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICAvLyBUaGUgd2luZG93IG1hbmFnZXIgd2lsbCBnaXZlIHVzIGEgdmFsaWQgd2luZG93IHRva2VuCisgICAgICAgIG5ldyBNZW51RGlhbG9nSGVscGVyKHN1Yk1lbnUpLnNob3cobnVsbCk7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgb25NZW51TW9kZUNoYW5nZShNZW51QnVpbGRlciBtZW51KSB7CisgICAgICAgIHJlb3Blbk1lbnUodHJ1ZSk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHJlb3Blbk1lbnUoYm9vbGVhbiB0b2dnbGVNZW51TW9kZSkgeworICAgICAgICBQYW5lbEZlYXR1cmVTdGF0ZSBzdCA9IGdldFBhbmVsU3RhdGUoRkVBVFVSRV9PUFRJT05TX1BBTkVMLCB0cnVlKTsKKworICAgICAgICAvLyBTYXZlIHRoZSBmdXR1cmUgZXhwYW5kZWQgbW9kZSBzdGF0ZSBzaW5jZSBjbG9zZVBhbmVsIHdpbGwgcmVzZXQgaXQKKyAgICAgICAgYm9vbGVhbiBuZXdFeHBhbmRlZE1vZGUgPSB0b2dnbGVNZW51TW9kZSA/ICFzdC5pc0luRXhwYW5kZWRNb2RlIDogc3QuaXNJbkV4cGFuZGVkTW9kZTsKKworICAgICAgICBzdC5yZWZyZXNoRGVjb3JWaWV3ID0gdHJ1ZTsKKyAgICAgICAgY2xvc2VQYW5lbChzdCwgZmFsc2UpOworCisgICAgICAgIC8vIFNldCB0aGUgZXhwYW5kZWQgbW9kZSBzdGF0ZQorICAgICAgICBzdC5pc0luRXhwYW5kZWRNb2RlID0gbmV3RXhwYW5kZWRNb2RlOworCisgICAgICAgIG9wZW5QYW5lbChzdCwgbnVsbCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogSW5pdGlhbGl6ZXMgdGhlIG1lbnUgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBwYW5lbCBmZWF0dXJlIHN0YXRlLiBZb3UKKyAgICAgKiBtdXN0IGF0IHRoZSB2ZXJ5IGxlYXN0IHNldCBQYW5lbEZlYXR1cmVTdGF0ZS5tZW51IHRvIHRoZSBNZW51IHRvIGJlCisgICAgICogYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbiBwYW5lbCBzdGF0ZS4gVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gY3JlYXRlcworICAgICAqIGEgbmV3IG1lbnUgZm9yIHRoZSBwYW5lbCBzdGF0ZS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBzdCBUaGUgcGFuZWwgd2hvc2UgbWVudSBpcyBiZWluZyBpbml0aWFsaXplZC4KKyAgICAgKiBAcmV0dXJuIFdoZXRoZXIgdGhlIGluaXRpYWxpemF0aW9uIHdhcyBzdWNjZXNzZnVsLgorICAgICAqLworICAgIHByb3RlY3RlZCBib29sZWFuIGluaXRpYWxpemVQYW5lbE1lbnUoZmluYWwgUGFuZWxGZWF0dXJlU3RhdGUgc3QpIHsKKyAgICAgICAgZmluYWwgTWVudUJ1aWxkZXIgbWVudSA9IG5ldyBNZW51QnVpbGRlcihnZXRDb250ZXh0KCkpOworCisgICAgICAgIG1lbnUuc2V0Q2FsbGJhY2sodGhpcyk7CisgICAgICAgIHN0LnNldE1lbnUobWVudSk7CisKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogUGVyZm9ybSBpbml0aWFsIHNldHVwIG9mIGEgcGFuZWwuIFRoaXMgc2hvdWxkIGF0IHRoZSB2ZXJ5IGxlYXN0IHNldCB0aGUKKyAgICAgKiBzdHlsZSBpbmZvcm1hdGlvbiBpbiB0aGUgUGFuZWxGZWF0dXJlU3RhdGUgYW5kIG11c3Qgc2V0CisgICAgICogUGFuZWxGZWF0dXJlU3RhdGUuZGVjb3IgdG8gdGhlIHBhbmVsJ3Mgd2luZG93IGRlY29yIHZpZXcuCisgICAgICoKKyAgICAgKiBAcGFyYW0gc3QgVGhlIHBhbmVsIGJlaW5nIGluaXRpYWxpemVkLgorICAgICAqLworICAgIHByb3RlY3RlZCBib29sZWFuIGluaXRpYWxpemVQYW5lbERlY29yKFBhbmVsRmVhdHVyZVN0YXRlIHN0KSB7CisgICAgICAgIHN0LmRlY29yVmlldyA9IG5ldyBEZWNvclZpZXcoZ2V0Q29udGV4dCgpLCBzdC5mZWF0dXJlSWQpOworICAgICAgICBzdC5ncmF2aXR5ID0gR3Jhdml0eS5DRU5URVIgfCBHcmF2aXR5LkJPVFRPTTsKKyAgICAgICAgc3Quc2V0U3R5bGUoZ2V0Q29udGV4dCgpKTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJbml0aWFsaXplcyB0aGUgcGFuZWwgYXNzb2NpYXRlZCB3aXRoIHRoZSBwYW5lbCBmZWF0dXJlIHN0YXRlLiBZb3UgbXVzdAorICAgICAqIGF0IHRoZSB2ZXJ5IGxlYXN0IHNldCBQYW5lbEZlYXR1cmVTdGF0ZS5wYW5lbCB0byB0aGUgVmlldyBpbXBsZW1lbnRpbmcKKyAgICAgKiBpdHMgY29udGVudHMuIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGdldHMgdGhlIHBhbmVsIGZyb20gdGhlIG1lbnUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gc3QgVGhlIHBhbmVsIHN0YXRlIGJlaW5nIGluaXRpYWxpemVkLgorICAgICAqIEByZXR1cm4gV2hldGhlciB0aGUgaW5pdGlhbGl6YXRpb24gd2FzIHN1Y2Nlc3NmdWwuCisgICAgICovCisgICAgcHJvdGVjdGVkIGJvb2xlYW4gaW5pdGlhbGl6ZVBhbmVsQ29udGVudChQYW5lbEZlYXR1cmVTdGF0ZSBzdCkgeworCisgICAgICAgIGlmIChzdC5jcmVhdGVkUGFuZWxWaWV3ICE9IG51bGwpIHsKKyAgICAgICAgICAgIHN0LnNob3duUGFuZWxWaWV3ID0gc3QuY3JlYXRlZFBhbmVsVmlldzsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgZmluYWwgTWVudUJ1aWxkZXIgbWVudSA9IChNZW51QnVpbGRlcilzdC5tZW51OworICAgICAgICBpZiAobWVudSA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBzdC5zaG93blBhbmVsVmlldyA9IG1lbnUuZ2V0TWVudVZpZXcoKHN0LmlzSW5FeHBhbmRlZE1vZGUpID8gTWVudUJ1aWxkZXIuVFlQRV9FWFBBTkRFRAorICAgICAgICAgICAgICAgIDogTWVudUJ1aWxkZXIuVFlQRV9JQ09OLCBzdC5kZWNvclZpZXcpOworCisgICAgICAgIGlmIChzdC5zaG93blBhbmVsVmlldyAhPSBudWxsKSB7CisgICAgICAgICAgICAvLyBVc2UgdGhlIG1lbnUgVmlldydzIGRlZmF1bHQgYW5pbWF0aW9ucyBpZiBpdCBoYXMgYW55CisgICAgICAgICAgICBmaW5hbCBpbnQgZGVmYXVsdEFuaW1hdGlvbnMgPSAoKE1lbnVWaWV3KSBzdC5zaG93blBhbmVsVmlldykuZ2V0V2luZG93QW5pbWF0aW9ucygpOworICAgICAgICAgICAgaWYgKGRlZmF1bHRBbmltYXRpb25zICE9IDApIHsKKyAgICAgICAgICAgICAgICBzdC53aW5kb3dBbmltYXRpb25zID0gZGVmYXVsdEFuaW1hdGlvbnM7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBib29sZWFuIHBlcmZvcm1Db250ZXh0TWVudUlkZW50aWZpZXJBY3Rpb24oaW50IGlkLCBpbnQgZmxhZ3MpIHsKKyAgICAgICAgcmV0dXJuIChtQ29udGV4dE1lbnUgIT0gbnVsbCkgPyBtQ29udGV4dE1lbnUucGVyZm9ybUlkZW50aWZpZXJBY3Rpb24oaWQsIGZsYWdzKSA6IGZhbHNlOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBmaW5hbCB2b2lkIHNldEJhY2tncm91bmREcmF3YWJsZShEcmF3YWJsZSBkcmF3YWJsZSkgeworICAgICAgICBpZiAoZHJhd2FibGUgIT0gbUJhY2tncm91bmREcmF3YWJsZSB8fCBtQmFja2dyb3VuZFJlc291cmNlICE9IDApIHsKKyAgICAgICAgICAgIG1CYWNrZ3JvdW5kUmVzb3VyY2UgPSAwOworICAgICAgICAgICAgbUJhY2tncm91bmREcmF3YWJsZSA9IGRyYXdhYmxlOworICAgICAgICAgICAgaWYgKG1EZWNvciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgbURlY29yLnNldFdpbmRvd0JhY2tncm91bmQoZHJhd2FibGUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGZpbmFsIHZvaWQgc2V0RmVhdHVyZURyYXdhYmxlUmVzb3VyY2UoaW50IGZlYXR1cmVJZCwgaW50IHJlc0lkKSB7CisgICAgICAgIGlmIChyZXNJZCAhPSAwKSB7CisgICAgICAgICAgICBEcmF3YWJsZUZlYXR1cmVTdGF0ZSBzdCA9IGdldERyYXdhYmxlU3RhdGUoZmVhdHVyZUlkLCB0cnVlKTsKKyAgICAgICAgICAgIGlmIChzdC5yZXNpZCAhPSByZXNJZCkgeworICAgICAgICAgICAgICAgIHN0LnJlc2lkID0gcmVzSWQ7CisgICAgICAgICAgICAgICAgc3QudXJpID0gbnVsbDsKKyAgICAgICAgICAgICAgICBzdC5sb2NhbCA9IGdldENvbnRleHQoKS5nZXRSZXNvdXJjZXMoKS5nZXREcmF3YWJsZShyZXNJZCk7CisgICAgICAgICAgICAgICAgdXBkYXRlRHJhd2FibGUoZmVhdHVyZUlkLCBzdCwgZmFsc2UpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2V0RmVhdHVyZURyYXdhYmxlKGZlYXR1cmVJZCwgbnVsbCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgZmluYWwgdm9pZCBzZXRGZWF0dXJlRHJhd2FibGVVcmkoaW50IGZlYXR1cmVJZCwgVXJpIHVyaSkgeworICAgICAgICBpZiAodXJpICE9IG51bGwpIHsKKyAgICAgICAgICAgIERyYXdhYmxlRmVhdHVyZVN0YXRlIHN0ID0gZ2V0RHJhd2FibGVTdGF0ZShmZWF0dXJlSWQsIHRydWUpOworICAgICAgICAgICAgaWYgKHN0LnVyaSA9PSBudWxsIHx8ICFzdC51cmkuZXF1YWxzKHVyaSkpIHsKKyAgICAgICAgICAgICAgICBzdC5yZXNpZCA9IDA7CisgICAgICAgICAgICAgICAgc3QudXJpID0gdXJpOworICAgICAgICAgICAgICAgIHN0LmxvY2FsID0gbG9hZEltYWdlVVJJKHVyaSk7CisgICAgICAgICAgICAgICAgdXBkYXRlRHJhd2FibGUoZmVhdHVyZUlkLCBzdCwgZmFsc2UpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2V0RmVhdHVyZURyYXdhYmxlKGZlYXR1cmVJZCwgbnVsbCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgZmluYWwgdm9pZCBzZXRGZWF0dXJlRHJhd2FibGUoaW50IGZlYXR1cmVJZCwgRHJhd2FibGUgZHJhd2FibGUpIHsKKyAgICAgICAgRHJhd2FibGVGZWF0dXJlU3RhdGUgc3QgPSBnZXREcmF3YWJsZVN0YXRlKGZlYXR1cmVJZCwgdHJ1ZSk7CisgICAgICAgIHN0LnJlc2lkID0gMDsKKyAgICAgICAgc3QudXJpID0gbnVsbDsKKyAgICAgICAgaWYgKHN0LmxvY2FsICE9IGRyYXdhYmxlKSB7CisgICAgICAgICAgICBzdC5sb2NhbCA9IGRyYXdhYmxlOworICAgICAgICAgICAgdXBkYXRlRHJhd2FibGUoZmVhdHVyZUlkLCBzdCwgZmFsc2UpOworICAgICAgICB9CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgc2V0RmVhdHVyZURyYXdhYmxlQWxwaGEoaW50IGZlYXR1cmVJZCwgaW50IGFscGhhKSB7CisgICAgICAgIERyYXdhYmxlRmVhdHVyZVN0YXRlIHN0ID0gZ2V0RHJhd2FibGVTdGF0ZShmZWF0dXJlSWQsIHRydWUpOworICAgICAgICBpZiAoc3QuYWxwaGEgIT0gYWxwaGEpIHsKKyAgICAgICAgICAgIHN0LmFscGhhID0gYWxwaGE7CisgICAgICAgICAgICB1cGRhdGVEcmF3YWJsZShmZWF0dXJlSWQsIHN0LCBmYWxzZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcm90ZWN0ZWQgZmluYWwgdm9pZCBzZXRGZWF0dXJlRGVmYXVsdERyYXdhYmxlKGludCBmZWF0dXJlSWQsIERyYXdhYmxlIGRyYXdhYmxlKSB7CisgICAgICAgIERyYXdhYmxlRmVhdHVyZVN0YXRlIHN0ID0gZ2V0RHJhd2FibGVTdGF0ZShmZWF0dXJlSWQsIHRydWUpOworICAgICAgICBpZiAoc3QuZGVmICE9IGRyYXdhYmxlKSB7CisgICAgICAgICAgICBzdC5kZWYgPSBkcmF3YWJsZTsKKyAgICAgICAgICAgIHVwZGF0ZURyYXdhYmxlKGZlYXR1cmVJZCwgc3QsIGZhbHNlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBmaW5hbCB2b2lkIHNldEZlYXR1cmVJbnQoaW50IGZlYXR1cmVJZCwgaW50IHZhbHVlKSB7CisgICAgICAgIC8vIFhYWCBTaG91bGQgZG8gbW9yZSBtYW5hZ2VtZW50IChhcyB3aXRoIGRyYXdhYmxlIGZlYXR1cmVzKSB0bworICAgICAgICAvLyBkZWFsIHdpdGggaW50ZXJhY3Rpb25zIGJldHdlZW4gbXVsdGlwbGUgd2luZG93IHBvbGljaWVzLgorICAgICAgICB1cGRhdGVJbnQoZmVhdHVyZUlkLCB2YWx1ZSwgZmFsc2UpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFVwZGF0ZSB0aGUgc3RhdGUgb2YgYSBkcmF3YWJsZSBmZWF0dXJlLiBUaGlzIHNob3VsZCBiZSBjYWxsZWQsIGZvciBldmVyeQorICAgICAqIGRyYXdhYmxlIGZlYXR1cmUgc3VwcG9ydGVkLCBhcyBwYXJ0IG9mIG9uQWN0aXZlKCksIHRvIG1ha2Ugc3VyZSB0aGF0IHRoZQorICAgICAqIGNvbnRlbnRzIG9mIGEgY29udGFpbmluZyB3aW5kb3cgaXMgcHJvcGVybHkgdXBkYXRlZC4KKyAgICAgKgorICAgICAqIEBzZWUgI29uQWN0aXZlCisgICAgICogQHBhcmFtIGZlYXR1cmVJZCBUaGUgZGVzaXJlZCBkcmF3YWJsZSBmZWF0dXJlIHRvIGNoYW5nZS4KKyAgICAgKiBAcGFyYW0gZnJvbUFjdGl2ZSBBbHdheXMgdHJ1ZSB3aGVuIGNhbGxlZCBmcm9tIG9uQWN0aXZlKCkuCisgICAgICovCisgICAgcHJvdGVjdGVkIGZpbmFsIHZvaWQgdXBkYXRlRHJhd2FibGUoaW50IGZlYXR1cmVJZCwgYm9vbGVhbiBmcm9tQWN0aXZlKSB7CisgICAgICAgIGZpbmFsIERyYXdhYmxlRmVhdHVyZVN0YXRlIHN0ID0gZ2V0RHJhd2FibGVTdGF0ZShmZWF0dXJlSWQsIGZhbHNlKTsKKyAgICAgICAgaWYgKHN0ICE9IG51bGwpIHsKKyAgICAgICAgICAgIHVwZGF0ZURyYXdhYmxlKGZlYXR1cmVJZCwgc3QsIGZyb21BY3RpdmUpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQ2FsbGVkIHdoZW4gYSBEcmF3YWJsZSBmZWF0dXJlIGNoYW5nZXMsIGZvciB0aGUgd2luZG93IHRvIHVwZGF0ZSBpdHMKKyAgICAgKiBncmFwaGljcy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBmZWF0dXJlSWQgVGhlIGZlYXR1cmUgYmVpbmcgY2hhbmdlZC4KKyAgICAgKiBAcGFyYW0gZHJhd2FibGUgVGhlIG5ldyBEcmF3YWJsZSB0byBzaG93LCBvciBudWxsIGlmIG5vbmUuCisgICAgICogQHBhcmFtIGFscGhhIFRoZSBuZXcgYWxwaGEgYmxlbmRpbmcgb2YgdGhlIERyYXdhYmxlLgorICAgICAqLworICAgIHByb3RlY3RlZCB2b2lkIG9uRHJhd2FibGVDaGFuZ2VkKGludCBmZWF0dXJlSWQsIERyYXdhYmxlIGRyYXdhYmxlLCBpbnQgYWxwaGEpIHsKKyAgICAgICAgSW1hZ2VWaWV3IHZpZXc7CisgICAgICAgIGlmIChmZWF0dXJlSWQgPT0gRkVBVFVSRV9MRUZUX0lDT04pIHsKKyAgICAgICAgICAgIHZpZXcgPSBnZXRMZWZ0SWNvblZpZXcoKTsKKyAgICAgICAgfSBlbHNlIGlmIChmZWF0dXJlSWQgPT0gRkVBVFVSRV9SSUdIVF9JQ09OKSB7CisgICAgICAgICAgICB2aWV3ID0gZ2V0UmlnaHRJY29uVmlldygpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGRyYXdhYmxlICE9IG51bGwpIHsKKyAgICAgICAgICAgIGRyYXdhYmxlLnNldEFscGhhKGFscGhhKTsKKyAgICAgICAgICAgIHZpZXcuc2V0SW1hZ2VEcmF3YWJsZShkcmF3YWJsZSk7CisgICAgICAgICAgICB2aWV3LnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHZpZXcuc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQ2FsbGVkIHdoZW4gYW4gaW50IGZlYXR1cmUgY2hhbmdlcywgZm9yIHRoZSB3aW5kb3cgdG8gdXBkYXRlIGl0cworICAgICAqIGdyYXBoaWNzLgorICAgICAqCisgICAgICogQHBhcmFtIGZlYXR1cmVJZCBUaGUgZmVhdHVyZSBiZWluZyBjaGFuZ2VkLgorICAgICAqIEBwYXJhbSB2YWx1ZSBUaGUgbmV3IGludGVnZXIgdmFsdWUuCisgICAgICovCisgICAgcHJvdGVjdGVkIHZvaWQgb25JbnRDaGFuZ2VkKGludCBmZWF0dXJlSWQsIGludCB2YWx1ZSkgeworICAgICAgICBpZiAoZmVhdHVyZUlkID09IEZFQVRVUkVfUFJPR1JFU1MgfHwgZmVhdHVyZUlkID09IEZFQVRVUkVfSU5ERVRFUk1JTkFURV9QUk9HUkVTUykgeworICAgICAgICAgICAgdXBkYXRlUHJvZ3Jlc3NCYXJzKHZhbHVlKTsKKyAgICAgICAgfSBlbHNlIGlmIChmZWF0dXJlSWQgPT0gRkVBVFVSRV9DVVNUT01fVElUTEUpIHsKKyAgICAgICAgICAgIEZyYW1lTGF5b3V0IHRpdGxlQ29udGFpbmVyID0gKEZyYW1lTGF5b3V0KSBmaW5kVmlld0J5SWQoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5pZC50aXRsZV9jb250YWluZXIpOworICAgICAgICAgICAgaWYgKHRpdGxlQ29udGFpbmVyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBtTGF5b3V0SW5mbGF0ZXIuaW5mbGF0ZSh2YWx1ZSwgdGl0bGVDb250YWluZXIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogVXBkYXRlcyB0aGUgcHJvZ3Jlc3MgYmFycyB0aGF0IGFyZSBzaG93biBpbiB0aGUgdGl0bGUgYmFyLgorICAgICAqCisgICAgICogQHBhcmFtIHZhbHVlIENhbiBiZSBvbmUgb2Yge0BsaW5rIFdpbmRvdyNQUk9HUkVTU19WSVNJQklMSVRZX09OfSwKKyAgICAgKiAgICAgICAgICAgIHtAbGluayBXaW5kb3cjUFJPR1JFU1NfVklTSUJJTElUWV9PRkZ9LAorICAgICAqICAgICAgICAgICAge0BsaW5rIFdpbmRvdyNQUk9HUkVTU19JTkRFVEVSTUlOQVRFX09OfSwKKyAgICAgKiAgICAgICAgICAgIHtAbGluayBXaW5kb3cjUFJPR1JFU1NfSU5ERVRFUk1JTkFURV9PRkZ9LCBvciBhIHZhbHVlCisgICAgICogICAgICAgICAgICBzdGFydGluZyBhdCB7QGxpbmsgV2luZG93I1BST0dSRVNTX1NUQVJUfSB0aHJvdWdoCisgICAgICogICAgICAgICAgICB7QGxpbmsgV2luZG93I1BST0dSRVNTX0VORH0gZm9yIHNldHRpbmcgdGhlIGRlZmF1bHQKKyAgICAgKiAgICAgICAgICAgIHByb2dyZXNzIChpZiB7QGxpbmsgV2luZG93I1BST0dSRVNTX0VORH0gaXMgZ2l2ZW4sCisgICAgICogICAgICAgICAgICB0aGUgcHJvZ3Jlc3MgYmFyIHdpZGdldHMgaW4gdGhlIHRpdGxlIHdpbGwgYmUgaGlkZGVuIGFmdGVyIGFuCisgICAgICogICAgICAgICAgICBhbmltYXRpb24pLCBhIHZhbHVlIGJldHdlZW4KKyAgICAgKiAgICAgICAgICAgIHtAbGluayBXaW5kb3cjUFJPR1JFU1NfU0VDT05EQVJZX1NUQVJUfSAtCisgICAgICogICAgICAgICAgICB7QGxpbmsgV2luZG93I1BST0dSRVNTX1NFQ09OREFSWV9FTkR9IGZvciB0aGUKKyAgICAgKiAgICAgICAgICAgIHNlY29uZGFyeSBwcm9ncmVzcyAoaWYKKyAgICAgKiAgICAgICAgICAgIHtAbGluayBXaW5kb3cjUFJPR1JFU1NfU0VDT05EQVJZX0VORH0gaXMgZ2l2ZW4sIHRoZQorICAgICAqICAgICAgICAgICAgcHJvZ3Jlc3MgYmFyIHdpZGdldHMgd2lsbCBzdGlsbCBiZSBzaG93biB3aXRoIHRoZSBzZWNvbmRhcnkKKyAgICAgKiAgICAgICAgICAgIHByb2dyZXNzIGJhciB3aWxsIGJlIGNvbXBsZXRlbHkgZmlsbGVkIGluLikKKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgdXBkYXRlUHJvZ3Jlc3NCYXJzKGludCB2YWx1ZSkgeworICAgICAgICBQcm9ncmVzc0JhciBjaXJjdWxhclByb2dyZXNzQmFyID0gZ2V0Q2lyY3VsYXJQcm9ncmVzc0Jhcih0cnVlKTsKKyAgICAgICAgUHJvZ3Jlc3NCYXIgaG9yaXpvbnRhbFByb2dyZXNzQmFyID0gZ2V0SG9yaXpvbnRhbFByb2dyZXNzQmFyKHRydWUpOworCisgICAgICAgIGZpbmFsIGludCBmZWF0dXJlcyA9IGdldExvY2FsRmVhdHVyZXMoKTsKKyAgICAgICAgaWYgKHZhbHVlID09IFBST0dSRVNTX1ZJU0lCSUxJVFlfT04pIHsKKyAgICAgICAgICAgIGlmICgoZmVhdHVyZXMgJiAoMSA8PCBGRUFUVVJFX1BST0dSRVNTKSkgIT0gMCkgeworICAgICAgICAgICAgICAgIGludCBsZXZlbCA9IGhvcml6b250YWxQcm9ncmVzc0Jhci5nZXRQcm9ncmVzcygpOworICAgICAgICAgICAgICAgIGludCB2aXNpYmlsaXR5ID0gKGhvcml6b250YWxQcm9ncmVzc0Jhci5pc0luZGV0ZXJtaW5hdGUoKSB8fCBsZXZlbCA8IDEwMDAwKSA/CisgICAgICAgICAgICAgICAgICAgICAgICBWaWV3LlZJU0lCTEUgOiBWaWV3LklOVklTSUJMRTsKKyAgICAgICAgICAgICAgICBob3Jpem9udGFsUHJvZ3Jlc3NCYXIuc2V0VmlzaWJpbGl0eSh2aXNpYmlsaXR5KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgoZmVhdHVyZXMgJiAoMSA8PCBGRUFUVVJFX0lOREVURVJNSU5BVEVfUFJPR1JFU1MpKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgY2lyY3VsYXJQcm9ncmVzc0Jhci5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAodmFsdWUgPT0gUFJPR1JFU1NfVklTSUJJTElUWV9PRkYpIHsKKyAgICAgICAgICAgIGlmICgoZmVhdHVyZXMgJiAoMSA8PCBGRUFUVVJFX1BST0dSRVNTKSkgIT0gMCkgeworICAgICAgICAgICAgICAgIGhvcml6b250YWxQcm9ncmVzc0Jhci5zZXRWaXNpYmlsaXR5KFZpZXcuR09ORSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoKGZlYXR1cmVzICYgKDEgPDwgRkVBVFVSRV9JTkRFVEVSTUlOQVRFX1BST0dSRVNTKSkgIT0gMCkgeworICAgICAgICAgICAgICAgIGNpcmN1bGFyUHJvZ3Jlc3NCYXIuc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKHZhbHVlID09IFBST0dSRVNTX0lOREVURVJNSU5BVEVfT04pIHsKKyAgICAgICAgICAgIGhvcml6b250YWxQcm9ncmVzc0Jhci5zZXRJbmRldGVybWluYXRlKHRydWUpOworICAgICAgICB9IGVsc2UgaWYgKHZhbHVlID09IFBST0dSRVNTX0lOREVURVJNSU5BVEVfT0ZGKSB7CisgICAgICAgICAgICBob3Jpem9udGFsUHJvZ3Jlc3NCYXIuc2V0SW5kZXRlcm1pbmF0ZShmYWxzZSk7CisgICAgICAgIH0gZWxzZSBpZiAoUFJPR1JFU1NfU1RBUlQgPD0gdmFsdWUgJiYgdmFsdWUgPD0gUFJPR1JFU1NfRU5EKSB7CisgICAgICAgICAgICAvLyBXZSB3YW50IHRvIHNldCB0aGUgcHJvZ3Jlc3MgdmFsdWUgYmVmb3JlIHRlc3RpbmcgZm9yIHZpc2liaWxpdHkKKyAgICAgICAgICAgIC8vIHNvIHRoYXQgd2hlbiB0aGUgcHJvZ3Jlc3MgYmFyIGJlY29tZXMgdmlzaWJsZSBhZ2FpbiwgaXQgaGFzIHRoZQorICAgICAgICAgICAgLy8gY29ycmVjdCBsZXZlbC4KKyAgICAgICAgICAgIGhvcml6b250YWxQcm9ncmVzc0Jhci5zZXRQcm9ncmVzcyh2YWx1ZSAtIFBST0dSRVNTX1NUQVJUKTsKKworICAgICAgICAgICAgaWYgKHZhbHVlIDwgUFJPR1JFU1NfRU5EKSB7CisgICAgICAgICAgICAgICAgc2hvd1Byb2dyZXNzQmFycyhob3Jpem9udGFsUHJvZ3Jlc3NCYXIsIGNpcmN1bGFyUHJvZ3Jlc3NCYXIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBoaWRlUHJvZ3Jlc3NCYXJzKGhvcml6b250YWxQcm9ncmVzc0JhciwgY2lyY3VsYXJQcm9ncmVzc0Jhcik7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoUFJPR1JFU1NfU0VDT05EQVJZX1NUQVJUIDw9IHZhbHVlICYmIHZhbHVlIDw9IFBST0dSRVNTX1NFQ09OREFSWV9FTkQpIHsKKyAgICAgICAgICAgIGhvcml6b250YWxQcm9ncmVzc0Jhci5zZXRTZWNvbmRhcnlQcm9ncmVzcyh2YWx1ZSAtIFBST0dSRVNTX1NFQ09OREFSWV9TVEFSVCk7CisKKyAgICAgICAgICAgIHNob3dQcm9ncmVzc0JhcnMoaG9yaXpvbnRhbFByb2dyZXNzQmFyLCBjaXJjdWxhclByb2dyZXNzQmFyKTsKKyAgICAgICAgfQorCisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHNob3dQcm9ncmVzc0JhcnMoUHJvZ3Jlc3NCYXIgaG9yaXpvbnRhbFByb2dyZXNzQmFyLCBQcm9ncmVzc0JhciBzcGlubnlQcm9ncmVzc0JhcikgeworICAgICAgICBmaW5hbCBpbnQgZmVhdHVyZXMgPSBnZXRMb2NhbEZlYXR1cmVzKCk7CisgICAgICAgIGlmICgoZmVhdHVyZXMgJiAoMSA8PCBGRUFUVVJFX0lOREVURVJNSU5BVEVfUFJPR1JFU1MpKSAhPSAwICYmCisgICAgICAgICAgICAgICAgc3Bpbm55UHJvZ3Jlc3NCYXIuZ2V0VmlzaWJpbGl0eSgpID09IFZpZXcuSU5WSVNJQkxFKSB7CisgICAgICAgICAgICBzcGlubnlQcm9ncmVzc0Jhci5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7CisgICAgICAgIH0KKyAgICAgICAgLy8gT25seSBzaG93IHRoZSBwcm9ncmVzcyBiYXJzIGlmIHRoZSBwcmltYXJ5IHByb2dyZXNzIGlzIG5vdCBjb21wbGV0ZQorICAgICAgICBpZiAoKGZlYXR1cmVzICYgKDEgPDwgRkVBVFVSRV9QUk9HUkVTUykpICE9IDAgJiYKKyAgICAgICAgICAgICAgICBob3Jpem9udGFsUHJvZ3Jlc3NCYXIuZ2V0UHJvZ3Jlc3MoKSA8IDEwMDAwKSB7CisgICAgICAgICAgICBob3Jpem9udGFsUHJvZ3Jlc3NCYXIuc2V0VmlzaWJpbGl0eShWaWV3LlZJU0lCTEUpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGhpZGVQcm9ncmVzc0JhcnMoUHJvZ3Jlc3NCYXIgaG9yaXpvbnRhbFByb2dyZXNzQmFyLCBQcm9ncmVzc0JhciBzcGlubnlQcm9ncmVzc0JhcikgeworICAgICAgICBmaW5hbCBpbnQgZmVhdHVyZXMgPSBnZXRMb2NhbEZlYXR1cmVzKCk7CisgICAgICAgIEFuaW1hdGlvbiBhbmltID0gQW5pbWF0aW9uVXRpbHMubG9hZEFuaW1hdGlvbihnZXRDb250ZXh0KCksIGNvbS5hbmRyb2lkLmludGVybmFsLlIuYW5pbS5mYWRlX291dCk7CisgICAgICAgIGFuaW0uc2V0RHVyYXRpb24oMTAwMCk7CisgICAgICAgIGlmICgoZmVhdHVyZXMgJiAoMSA8PCBGRUFUVVJFX0lOREVURVJNSU5BVEVfUFJPR1JFU1MpKSAhPSAwICYmCisgICAgICAgICAgICAgICAgc3Bpbm55UHJvZ3Jlc3NCYXIuZ2V0VmlzaWJpbGl0eSgpID09IFZpZXcuVklTSUJMRSkgeworICAgICAgICAgICAgc3Bpbm55UHJvZ3Jlc3NCYXIuc3RhcnRBbmltYXRpb24oYW5pbSk7CisgICAgICAgICAgICBzcGlubnlQcm9ncmVzc0Jhci5zZXRWaXNpYmlsaXR5KFZpZXcuSU5WSVNJQkxFKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoKGZlYXR1cmVzICYgKDEgPDwgRkVBVFVSRV9QUk9HUkVTUykpICE9IDAgJiYKKyAgICAgICAgICAgICAgICBob3Jpem9udGFsUHJvZ3Jlc3NCYXIuZ2V0VmlzaWJpbGl0eSgpID09IFZpZXcuVklTSUJMRSkgeworICAgICAgICAgICAgaG9yaXpvbnRhbFByb2dyZXNzQmFyLnN0YXJ0QW5pbWF0aW9uKGFuaW0pOworICAgICAgICAgICAgaG9yaXpvbnRhbFByb2dyZXNzQmFyLnNldFZpc2liaWxpdHkoVmlldy5JTlZJU0lCTEUpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVxdWVzdCB0aGF0IGtleSBldmVudHMgY29tZSB0byB0aGlzIGFjdGl2aXR5LiBVc2UgdGhpcyBpZiB5b3VyIGFjdGl2aXR5CisgICAgICogaGFzIG5vIHZpZXdzIHdpdGggZm9jdXMsIGJ1dCB0aGUgYWN0aXZpdHkgc3RpbGwgd2FudHMgYSBjaGFuY2UgdG8gcHJvY2VzcworICAgICAqIGtleSBldmVudHMuCisgICAgICovCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgdGFrZUtleUV2ZW50cyhib29sZWFuIGdldCkgeworICAgICAgICBtRGVjb3Iuc2V0Rm9jdXNhYmxlKGdldCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGJvb2xlYW4gc3VwZXJEaXNwYXRjaEtleUV2ZW50KEtleUV2ZW50IGV2ZW50KSB7CisgICAgICAgIHJldHVybiBtRGVjb3Iuc3VwZXJEaXNwYXRjaEtleUV2ZW50KGV2ZW50KTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgYm9vbGVhbiBzdXBlckRpc3BhdGNoVG91Y2hFdmVudChNb3Rpb25FdmVudCBldmVudCkgeworICAgICAgICByZXR1cm4gbURlY29yLnN1cGVyRGlzcGF0Y2hUb3VjaEV2ZW50KGV2ZW50KTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgYm9vbGVhbiBzdXBlckRpc3BhdGNoVHJhY2tiYWxsRXZlbnQoTW90aW9uRXZlbnQgZXZlbnQpIHsKKyAgICAgICAgcmV0dXJuIG1EZWNvci5zdXBlckRpc3BhdGNoVHJhY2tiYWxsRXZlbnQoZXZlbnQpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEEga2V5IHdhcyBwcmVzc2VkIGRvd24gYW5kIG5vdCBoYW5kbGVkIGJ5IGFueXRoaW5nIGVsc2UgaW4gdGhlIHdpbmRvdy4KKyAgICAgKgorICAgICAqIEBzZWUgI29uS2V5VXAKKyAgICAgKiBAc2VlIGFuZHJvaWQudmlldy5LZXlFdmVudAorICAgICAqLworICAgIHByb3RlY3RlZCBib29sZWFuIG9uS2V5RG93bihpbnQgZmVhdHVyZUlkLCBpbnQga2V5Q29kZSwgS2V5RXZlbnQgZXZlbnQpIHsKKyAgICAgICAgZmluYWwgS2V5RXZlbnQuRGlzcGF0Y2hlclN0YXRlIGRpc3BhdGNoZXIgPQorICAgICAgICAgICAgICAgIG1EZWNvciAhPSBudWxsID8gbURlY29yLmdldEtleURpc3BhdGNoZXJTdGF0ZSgpIDogbnVsbDsKKyAgICAgICAgLy9Mb2cuaShUQUcsICJLZXkgZG93bjogcmVwZWF0PSIgKyBldmVudC5nZXRSZXBlYXRDb3VudCgpCisgICAgICAgIC8vICAgICAgICArICIgZmxhZ3M9MHgiICsgSW50ZWdlci50b0hleFN0cmluZyhldmVudC5nZXRGbGFncygpKSk7CisgICAgICAgIAorICAgICAgICBzd2l0Y2ggKGtleUNvZGUpIHsKKyAgICAgICAgICAgIGNhc2UgS2V5RXZlbnQuS0VZQ09ERV9WT0xVTUVfVVA6CisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfVk9MVU1FX0RPV046IHsKKyAgICAgICAgICAgICAgICBBdWRpb01hbmFnZXIgYXVkaW9NYW5hZ2VyID0gKEF1ZGlvTWFuYWdlcikgZ2V0Q29udGV4dCgpLmdldFN5c3RlbVNlcnZpY2UoCisgICAgICAgICAgICAgICAgICAgICAgICBDb250ZXh0LkFVRElPX1NFUlZJQ0UpOworICAgICAgICAgICAgICAgIGlmIChhdWRpb01hbmFnZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAgICAgKiBBZGp1c3QgdGhlIHZvbHVtZSBpbiBvbiBrZXkgZG93biBzaW5jZSBpdCBpcyBtb3JlCisgICAgICAgICAgICAgICAgICAgICAqIHJlc3BvbnNpdmUgdG8gdGhlIHVzZXIuCisgICAgICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgICAgICBhdWRpb01hbmFnZXIuYWRqdXN0U3VnZ2VzdGVkU3RyZWFtVm9sdW1lKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleUNvZGUgPT0gS2V5RXZlbnQuS0VZQ09ERV9WT0xVTUVfVVAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gQXVkaW9NYW5hZ2VyLkFESlVTVF9SQUlTRQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBBdWRpb01hbmFnZXIuQURKVVNUX0xPV0VSLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Wb2x1bWVDb250cm9sU3RyZWFtVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdWRpb01hbmFnZXIuRkxBR19TSE9XX1VJIHwgQXVkaW9NYW5hZ2VyLkZMQUdfVklCUkFURSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorCisKKyAgICAgICAgICAgIGNhc2UgS2V5RXZlbnQuS0VZQ09ERV9NRURJQV9QTEFZX1BBVVNFOgorICAgICAgICAgICAgICAgIC8qIFN1cHByZXNzIFBMQVlQQVVTRSB0b2dnbGUgd2hlbiBwaG9uZSBpcyByaW5naW5nIG9yIGluLWNhbGwKKyAgICAgICAgICAgICAgICAgKiB0byBhdm9pZCBtdXNpYyBwbGF5YmFjayAqLworICAgICAgICAgICAgICAgIGlmIChtVGVsZXBob255TWFuYWdlciA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIG1UZWxlcGhvbnlNYW5hZ2VyID0gKFRlbGVwaG9ueU1hbmFnZXIpIGdldENvbnRleHQoKS5nZXRTeXN0ZW1TZXJ2aWNlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbnRleHQuVEVMRVBIT05ZX1NFUlZJQ0UpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobVRlbGVwaG9ueU1hbmFnZXIgIT0gbnVsbCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgbVRlbGVwaG9ueU1hbmFnZXIuZ2V0Q2FsbFN0YXRlKCkgIT0gVGVsZXBob255TWFuYWdlci5DQUxMX1NUQVRFX0lETEUpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7ICAvLyBzdXBwcmVzcyBrZXkgZXZlbnQKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfTVVURToKKyAgICAgICAgICAgIGNhc2UgS2V5RXZlbnQuS0VZQ09ERV9IRUFEU0VUSE9PSzoKKyAgICAgICAgICAgIGNhc2UgS2V5RXZlbnQuS0VZQ09ERV9NRURJQV9TVE9QOgorICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5LRVlDT0RFX01FRElBX05FWFQ6CisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfTUVESUFfUFJFVklPVVM6CisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfTUVESUFfUkVXSU5EOgorICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5LRVlDT0RFX01FRElBX0ZBU1RfRk9SV0FSRDogeworICAgICAgICAgICAgICAgIEludGVudCBpbnRlbnQgPSBuZXcgSW50ZW50KEludGVudC5BQ1RJT05fTUVESUFfQlVUVE9OLCBudWxsKTsKKyAgICAgICAgICAgICAgICBpbnRlbnQucHV0RXh0cmEoSW50ZW50LkVYVFJBX0tFWV9FVkVOVCwgZXZlbnQpOworICAgICAgICAgICAgICAgIGdldENvbnRleHQoKS5zZW5kT3JkZXJlZEJyb2FkY2FzdChpbnRlbnQsIG51bGwpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfQ0FNRVJBOiB7CisgICAgICAgICAgICAgICAgaWYgKGdldEtleWd1YXJkTWFuYWdlcigpLmluS2V5Z3VhcmRSZXN0cmljdGVkSW5wdXRNb2RlKCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IGRpc3BhdGNoZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmdldFJlcGVhdENvdW50KCkgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaGVyLnN0YXJ0VHJhY2tpbmcoZXZlbnQsIHRoaXMpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuaXNMb25nUHJlc3MoKSAmJiBkaXNwYXRjaGVyLmlzVHJhY2tpbmcoZXZlbnQpKSB7CisgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoZXIucGVyZm9ybWVkTG9uZ1ByZXNzKGV2ZW50KTsKKyAgICAgICAgICAgICAgICAgICAgbURlY29yLnBlcmZvcm1IYXB0aWNGZWVkYmFjayhIYXB0aWNGZWVkYmFja0NvbnN0YW50cy5MT05HX1BSRVNTKTsKKyAgICAgICAgICAgICAgICAgICAgc2VuZENsb3NlU3lzdGVtV2luZG93cygpOworICAgICAgICAgICAgICAgICAgICAvLyBCcm9hZGNhc3QgYW4gaW50ZW50IHRoYXQgdGhlIENhbWVyYSBidXR0b24gd2FzIGxvbmdwcmVzc2VkCisgICAgICAgICAgICAgICAgICAgIEludGVudCBpbnRlbnQgPSBuZXcgSW50ZW50KEludGVudC5BQ1RJT05fQ0FNRVJBX0JVVFRPTiwgbnVsbCk7CisgICAgICAgICAgICAgICAgICAgIGludGVudC5wdXRFeHRyYShJbnRlbnQuRVhUUkFfS0VZX0VWRU5ULCBldmVudCk7CisgICAgICAgICAgICAgICAgICAgIGdldENvbnRleHQoKS5zZW5kT3JkZXJlZEJyb2FkY2FzdChpbnRlbnQsIG51bGwpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5LRVlDT0RFX01FTlU6IHsKKyAgICAgICAgICAgICAgICBvbktleURvd25QYW5lbCgoZmVhdHVyZUlkIDwgMCkgPyBGRUFUVVJFX09QVElPTlNfUEFORUwgOiBmZWF0dXJlSWQsIGV2ZW50KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5LRVlDT0RFX0JBQ0s6IHsKKyAgICAgICAgICAgICAgICBpZiAoZXZlbnQuZ2V0UmVwZWF0Q291bnQoKSA+IDApIGJyZWFrOworICAgICAgICAgICAgICAgIGlmIChmZWF0dXJlSWQgPCAwKSBicmVhazsKKyAgICAgICAgICAgICAgICAvLyBDdXJyZW50bHkgZG9uJ3QgZG8gYW55dGhpbmcgd2l0aCBsb25nIHByZXNzLgorICAgICAgICAgICAgICAgIGRpc3BhdGNoZXIuc3RhcnRUcmFja2luZyhldmVudCwgdGhpcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhc2UgS2V5RXZlbnQuS0VZQ09ERV9DQUxMOiB7CisgICAgICAgICAgICAgICAgaWYgKGdldEtleWd1YXJkTWFuYWdlcigpLmluS2V5Z3VhcmRSZXN0cmljdGVkSW5wdXRNb2RlKCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IGRpc3BhdGNoZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmdldFJlcGVhdENvdW50KCkgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaGVyLnN0YXJ0VHJhY2tpbmcoZXZlbnQsIHRoaXMpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuaXNMb25nUHJlc3MoKSAmJiBkaXNwYXRjaGVyLmlzVHJhY2tpbmcoZXZlbnQpKSB7CisgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoZXIucGVyZm9ybWVkTG9uZ1ByZXNzKGV2ZW50KTsKKyAgICAgICAgICAgICAgICAgICAgbURlY29yLnBlcmZvcm1IYXB0aWNGZWVkYmFjayhIYXB0aWNGZWVkYmFja0NvbnN0YW50cy5MT05HX1BSRVNTKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gbGF1bmNoIHRoZSBWb2ljZURpYWxlcgorICAgICAgICAgICAgICAgICAgICBJbnRlbnQgaW50ZW50ID0gbmV3IEludGVudChJbnRlbnQuQUNUSU9OX1ZPSUNFX0NPTU1BTkQpOworICAgICAgICAgICAgICAgICAgICBpbnRlbnQuc2V0RmxhZ3MoSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX1RBU0spOworICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgc2VuZENsb3NlU3lzdGVtV2luZG93cygpOworICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Q29udGV4dCgpLnN0YXJ0QWN0aXZpdHkoaW50ZW50KTsKKyAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoQWN0aXZpdHlOb3RGb3VuZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBzdGFydENhbGxBY3Rpdml0eSgpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfU0VBUkNIOiB7CisgICAgICAgICAgICAgICAgaWYgKGdldEtleWd1YXJkTWFuYWdlcigpLmluS2V5Z3VhcmRSZXN0cmljdGVkSW5wdXRNb2RlKCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IGRpc3BhdGNoZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmdldFJlcGVhdENvdW50KCkgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaGVyLnN0YXJ0VHJhY2tpbmcoZXZlbnQsIHRoaXMpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXZlbnQuaXNMb25nUHJlc3MoKSAmJiBkaXNwYXRjaGVyLmlzVHJhY2tpbmcoZXZlbnQpKSB7CisgICAgICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24gY29uZmlnID0gZ2V0Q29udGV4dCgpLmdldFJlc291cmNlcygpLmdldENvbmZpZ3VyYXRpb24oKTsgCisgICAgICAgICAgICAgICAgICAgIGlmIChjb25maWcua2V5Ym9hcmQgPT0gQ29uZmlndXJhdGlvbi5LRVlCT0FSRF9OT0tFWVMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBjb25maWcuaGFyZEtleWJvYXJkSGlkZGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PSBDb25maWd1cmF0aW9uLkhBUkRLRVlCT0FSREhJRERFTl9ZRVMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxhdW5jaCB0aGUgc2VhcmNoIGFjdGl2aXR5CisgICAgICAgICAgICAgICAgICAgICAgICBJbnRlbnQgaW50ZW50ID0gbmV3IEludGVudChJbnRlbnQuQUNUSU9OX1NFQVJDSF9MT05HX1BSRVNTKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludGVudC5zZXRGbGFncyhJbnRlbnQuRkxBR19BQ1RJVklUWV9ORVdfVEFTSyk7CisgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1EZWNvci5wZXJmb3JtSGFwdGljRmVlZGJhY2soSGFwdGljRmVlZGJhY2tDb25zdGFudHMuTE9OR19QUkVTUyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VuZENsb3NlU3lzdGVtV2luZG93cygpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldFNlYXJjaE1hbmFnZXIoKS5zdG9wU2VhcmNoKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0Q29udGV4dCgpLnN0YXJ0QWN0aXZpdHkoaW50ZW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPbmx5IGNsZWFyIHRoaXMgaWYgd2Ugc3VjY2Vzc2Z1bGx5IHN0YXJ0IHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFjdGl2aXR5OyBvdGhlcndpc2Ugd2Ugd2lsbCBhbGxvdyB0aGUgbm9ybWFsIHNob3J0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJlc3MgYWN0aW9uIHRvIGJlIHBlcmZvcm1lZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaGVyLnBlcmZvcm1lZExvbmdQcmVzcyhldmVudCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChBY3Rpdml0eU5vdEZvdW5kRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZ25vcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIEEgaGFuZGxlIHRvIHRoZSBrZXlndWFyZCBtYW5hZ2VyLgorICAgICAqLworICAgIHByaXZhdGUgS2V5Z3VhcmRNYW5hZ2VyIGdldEtleWd1YXJkTWFuYWdlcigpIHsKKyAgICAgICAgaWYgKG1LZXlndWFyZE1hbmFnZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgbUtleWd1YXJkTWFuYWdlciA9IChLZXlndWFyZE1hbmFnZXIpIGdldENvbnRleHQoKS5nZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuS0VZR1VBUkRfU0VSVklDRSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1LZXlndWFyZE1hbmFnZXI7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEByZXR1cm4gQSBoYW5kbGUgdG8gdGhlIHNlYXJjaCBtYW5hZ2VyLgorICAgICAqLworICAgIHByaXZhdGUgU2VhcmNoTWFuYWdlciBnZXRTZWFyY2hNYW5hZ2VyKCkgeworICAgICAgICBpZiAobVNlYXJjaE1hbmFnZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgbVNlYXJjaE1hbmFnZXIgPSAoU2VhcmNoTWFuYWdlcikgZ2V0Q29udGV4dCgpLmdldFN5c3RlbVNlcnZpY2UoQ29udGV4dC5TRUFSQ0hfU0VSVklDRSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG1TZWFyY2hNYW5hZ2VyOworICAgIH0KKworICAgIC8qKgorICAgICAqIEEga2V5IHdhcyByZWxlYXNlZCBhbmQgbm90IGhhbmRsZWQgYnkgYW55dGhpbmcgZWxzZSBpbiB0aGUgd2luZG93LgorICAgICAqCisgICAgICogQHNlZSAjb25LZXlEb3duCisgICAgICogQHNlZSBhbmRyb2lkLnZpZXcuS2V5RXZlbnQKKyAgICAgKi8KKyAgICBwcm90ZWN0ZWQgYm9vbGVhbiBvbktleVVwKGludCBmZWF0dXJlSWQsIGludCBrZXlDb2RlLCBLZXlFdmVudCBldmVudCkgeworICAgICAgICBmaW5hbCBLZXlFdmVudC5EaXNwYXRjaGVyU3RhdGUgZGlzcGF0Y2hlciA9CisgICAgICAgICAgICAgICAgbURlY29yICE9IG51bGwgPyBtRGVjb3IuZ2V0S2V5RGlzcGF0Y2hlclN0YXRlKCkgOiBudWxsOworICAgICAgICBpZiAoZGlzcGF0Y2hlciAhPSBudWxsKSB7CisgICAgICAgICAgICBkaXNwYXRjaGVyLmhhbmRsZVVwRXZlbnQoZXZlbnQpOworICAgICAgICB9CisgICAgICAgIC8vTG9nLmkoVEFHLCAiS2V5IHVwOiByZXBlYXQ9IiArIGV2ZW50LmdldFJlcGVhdENvdW50KCkKKyAgICAgICAgLy8gICAgICAgICsgIiBmbGFncz0weCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKGV2ZW50LmdldEZsYWdzKCkpKTsKKyAgICAgICAgCisgICAgICAgIHN3aXRjaCAoa2V5Q29kZSkgeworICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5LRVlDT0RFX1ZPTFVNRV9VUDoKKyAgICAgICAgICAgIGNhc2UgS2V5RXZlbnQuS0VZQ09ERV9WT0xVTUVfRE9XTjogeworICAgICAgICAgICAgICAgIEF1ZGlvTWFuYWdlciBhdWRpb01hbmFnZXIgPSAoQXVkaW9NYW5hZ2VyKSBnZXRDb250ZXh0KCkuZ2V0U3lzdGVtU2VydmljZSgKKyAgICAgICAgICAgICAgICAgICAgICAgIENvbnRleHQuQVVESU9fU0VSVklDRSk7CisgICAgICAgICAgICAgICAgaWYgKGF1ZGlvTWFuYWdlciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgICAqIFBsYXkgYSBzb3VuZC4gVGhpcyBpcyBkb25lIG9uIGtleSB1cCBzaW5jZSB3ZSBkb24ndCB3YW50IHRoZQorICAgICAgICAgICAgICAgICAgICAgKiBzb3VuZCB0byBwbGF5IHdoZW4gYSB1c2VyIGhvbGRzIGRvd24gdm9sdW1lIGRvd24gdG8gbXV0ZS4KKyAgICAgICAgICAgICAgICAgICAgICovCisgICAgICAgICAgICAgICAgICAgIGF1ZGlvTWFuYWdlci5hZGp1c3RTdWdnZXN0ZWRTdHJlYW1Wb2x1bWUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXVkaW9NYW5hZ2VyLkFESlVTVF9TQU1FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Wb2x1bWVDb250cm9sU3RyZWFtVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBdWRpb01hbmFnZXIuRkxBR19QTEFZX1NPVU5EKTsKKyAgICAgICAgICAgICAgICAgICAgbVZvbHVtZUtleVVwVGltZSA9IFN5c3RlbUNsb2NrLnVwdGltZU1pbGxpcygpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5LRVlDT0RFX01FTlU6IHsKKyAgICAgICAgICAgICAgICBvbktleVVwUGFuZWwoZmVhdHVyZUlkIDwgMCA/IEZFQVRVUkVfT1BUSU9OU19QQU5FTCA6IGZlYXR1cmVJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5LRVlDT0RFX0JBQ0s6IHsKKyAgICAgICAgICAgICAgICBpZiAoZmVhdHVyZUlkIDwgMCkgYnJlYWs7CisgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmlzVHJhY2tpbmcoKSAmJiAhZXZlbnQuaXNDYW5jZWxlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChmZWF0dXJlSWQgPT0gRkVBVFVSRV9PUFRJT05TX1BBTkVMKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQYW5lbEZlYXR1cmVTdGF0ZSBzdCA9IGdldFBhbmVsU3RhdGUoZmVhdHVyZUlkLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3QgIT0gbnVsbCAmJiBzdC5pc0luRXhwYW5kZWRNb2RlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHVzZXIgaXMgaW4gYW4gZXhwYW5kZWQgbWVudSBhbmQgaGl0cyBiYWNrLCBpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNob3VsZCBnbyBiYWNrIHRvIHRoZSBpY29uIG1lbnUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW9wZW5NZW51KHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGNsb3NlUGFuZWwoZmVhdHVyZUlkKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfSEVBRFNFVEhPT0s6CisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfTUVESUFfUExBWV9QQVVTRToKKyAgICAgICAgICAgIGNhc2UgS2V5RXZlbnQuS0VZQ09ERV9NRURJQV9TVE9QOgorICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5LRVlDT0RFX01FRElBX05FWFQ6CisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfTUVESUFfUFJFVklPVVM6CisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfTUVESUFfUkVXSU5EOgorICAgICAgICAgICAgY2FzZSBLZXlFdmVudC5LRVlDT0RFX01FRElBX0ZBU1RfRk9SV0FSRDogeworICAgICAgICAgICAgICAgIEludGVudCBpbnRlbnQgPSBuZXcgSW50ZW50KEludGVudC5BQ1RJT05fTUVESUFfQlVUVE9OLCBudWxsKTsKKyAgICAgICAgICAgICAgICBpbnRlbnQucHV0RXh0cmEoSW50ZW50LkVYVFJBX0tFWV9FVkVOVCwgZXZlbnQpOworICAgICAgICAgICAgICAgIGdldENvbnRleHQoKS5zZW5kT3JkZXJlZEJyb2FkY2FzdChpbnRlbnQsIG51bGwpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfQ0FNRVJBOiB7CisgICAgICAgICAgICAgICAgaWYgKGdldEtleWd1YXJkTWFuYWdlcigpLmluS2V5Z3VhcmRSZXN0cmljdGVkSW5wdXRNb2RlKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChldmVudC5pc1RyYWNraW5nKCkgJiYgIWV2ZW50LmlzQ2FuY2VsZWQoKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBBZGQgc2hvcnQgcHJlc3MgYmVoYXZpb3IgaGVyZSBpZiBkZXNpcmVkCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBjYXNlIEtleUV2ZW50LktFWUNPREVfQ0FMTDogeworICAgICAgICAgICAgICAgIGlmIChnZXRLZXlndWFyZE1hbmFnZXIoKS5pbktleWd1YXJkUmVzdHJpY3RlZElucHV0TW9kZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoZXZlbnQuaXNUcmFja2luZygpICYmICFldmVudC5pc0NhbmNlbGVkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhcnRDYWxsQWN0aXZpdHkoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGNhc2UgS2V5RXZlbnQuS0VZQ09ERV9TRUFSQ0g6IHsKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAqIERvIHRoaXMgaW4gb25LZXlVcCBzaW5jZSB0aGUgU2VhcmNoIGtleSBpcyBhbHNvIHVzZWQgZm9yCisgICAgICAgICAgICAgICAgICogY2hvcmRpbmcgcXVpY2sgbGF1bmNoIHNob3J0Y3V0cy4KKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBpZiAoZ2V0S2V5Z3VhcmRNYW5hZ2VyKCkuaW5LZXlndWFyZFJlc3RyaWN0ZWRJbnB1dE1vZGUoKSkgeworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmlzVHJhY2tpbmcoKSAmJiAhZXZlbnQuaXNDYW5jZWxlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGxhdW5jaERlZmF1bHRTZWFyY2goKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHN0YXJ0Q2FsbEFjdGl2aXR5KCkgeworICAgICAgICBzZW5kQ2xvc2VTeXN0ZW1XaW5kb3dzKCk7CisgICAgICAgIEludGVudCBpbnRlbnQgPSBuZXcgSW50ZW50KEludGVudC5BQ1RJT05fQ0FMTF9CVVRUT04pOworICAgICAgICBpbnRlbnQuc2V0RmxhZ3MoSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX1RBU0spOworICAgICAgICBnZXRDb250ZXh0KCkuc3RhcnRBY3Rpdml0eShpbnRlbnQpOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIG9uQWN0aXZlKCkgeworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBmaW5hbCBWaWV3IGdldERlY29yVmlldygpIHsKKyAgICAgICAgaWYgKG1EZWNvciA9PSBudWxsKSB7CisgICAgICAgICAgICBpbnN0YWxsRGVjb3IoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbURlY29yOworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBmaW5hbCBWaWV3IHBlZWtEZWNvclZpZXcoKSB7CisgICAgICAgIHJldHVybiBtRGVjb3I7CisgICAgfQorCisgICAgc3RhdGljIHByaXZhdGUgZmluYWwgU3RyaW5nIEZPQ1VTRURfSURfVEFHID0gImFuZHJvaWQ6Zm9jdXNlZFZpZXdJZCI7CisgICAgc3RhdGljIHByaXZhdGUgZmluYWwgU3RyaW5nIFZJRVdTX1RBRyA9ICJhbmRyb2lkOnZpZXdzIjsKKyAgICBzdGF0aWMgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgUEFORUxTX1RBRyA9ICJhbmRyb2lkOlBhbmVscyI7CisKKyAgICAvKioge0Bpbmhlcml0RG9jfSAqLworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBCdW5kbGUgc2F2ZUhpZXJhcmNoeVN0YXRlKCkgeworICAgICAgICBCdW5kbGUgb3V0U3RhdGUgPSBuZXcgQnVuZGxlKCk7CisgICAgICAgIGlmIChtQ29udGVudFBhcmVudCA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gb3V0U3RhdGU7CisgICAgICAgIH0KKworICAgICAgICBTcGFyc2VBcnJheTxQYXJjZWxhYmxlPiBzdGF0ZXMgPSBuZXcgU3BhcnNlQXJyYXk8UGFyY2VsYWJsZT4oKTsKKyAgICAgICAgbUNvbnRlbnRQYXJlbnQuc2F2ZUhpZXJhcmNoeVN0YXRlKHN0YXRlcyk7CisgICAgICAgIG91dFN0YXRlLnB1dFNwYXJzZVBhcmNlbGFibGVBcnJheShWSUVXU19UQUcsIHN0YXRlcyk7CisKKyAgICAgICAgLy8gc2F2ZSB0aGUgZm9jdXNlZCB2aWV3IGlkCisgICAgICAgIFZpZXcgZm9jdXNlZFZpZXcgPSBtQ29udGVudFBhcmVudC5maW5kRm9jdXMoKTsKKyAgICAgICAgaWYgKGZvY3VzZWRWaWV3ICE9IG51bGwpIHsKKyAgICAgICAgICAgIGlmIChmb2N1c2VkVmlldy5nZXRJZCgpICE9IFZpZXcuTk9fSUQpIHsKKyAgICAgICAgICAgICAgICBvdXRTdGF0ZS5wdXRJbnQoRk9DVVNFRF9JRF9UQUcsIGZvY3VzZWRWaWV3LmdldElkKCkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoQ29uZmlnLkxPR0QpIHsKKyAgICAgICAgICAgICAgICAgICAgTG9nLmQoVEFHLCAiY291bGRuJ3Qgc2F2ZSB3aGljaCB2aWV3IGhhcyBmb2N1cyBiZWNhdXNlIHRoZSBmb2N1c2VkIHZpZXcgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgZm9jdXNlZFZpZXcgKyAiIGhhcyBubyBpZC4iKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBzYXZlIHRoZSBwYW5lbHMKKyAgICAgICAgU3BhcnNlQXJyYXk8UGFyY2VsYWJsZT4gcGFuZWxTdGF0ZXMgPSBuZXcgU3BhcnNlQXJyYXk8UGFyY2VsYWJsZT4oKTsKKyAgICAgICAgc2F2ZVBhbmVsU3RhdGUocGFuZWxTdGF0ZXMpOworICAgICAgICBpZiAocGFuZWxTdGF0ZXMuc2l6ZSgpID4gMCkgeworICAgICAgICAgICAgb3V0U3RhdGUucHV0U3BhcnNlUGFyY2VsYWJsZUFycmF5KFBBTkVMU19UQUcsIHBhbmVsU3RhdGVzKTsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBvdXRTdGF0ZTsKKyAgICB9CisKKyAgICAvKioge0Bpbmhlcml0RG9jfSAqLworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIHJlc3RvcmVIaWVyYXJjaHlTdGF0ZShCdW5kbGUgc2F2ZWRJbnN0YW5jZVN0YXRlKSB7CisgICAgICAgIGlmIChtQ29udGVudFBhcmVudCA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBTcGFyc2VBcnJheTxQYXJjZWxhYmxlPiBzYXZlZFN0YXRlcworICAgICAgICAgICAgICAgID0gc2F2ZWRJbnN0YW5jZVN0YXRlLmdldFNwYXJzZVBhcmNlbGFibGVBcnJheShWSUVXU19UQUcpOworICAgICAgICBpZiAoc2F2ZWRTdGF0ZXMgIT0gbnVsbCkgeworICAgICAgICAgICAgbUNvbnRlbnRQYXJlbnQucmVzdG9yZUhpZXJhcmNoeVN0YXRlKHNhdmVkU3RhdGVzKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIHJlc3RvcmUgdGhlIGZvY3VzZWQgdmlldworICAgICAgICBpbnQgZm9jdXNlZFZpZXdJZCA9IHNhdmVkSW5zdGFuY2VTdGF0ZS5nZXRJbnQoRk9DVVNFRF9JRF9UQUcsIFZpZXcuTk9fSUQpOworICAgICAgICBpZiAoZm9jdXNlZFZpZXdJZCAhPSBWaWV3Lk5PX0lEKSB7CisgICAgICAgICAgICBWaWV3IG5lZWRzRm9jdXMgPSBtQ29udGVudFBhcmVudC5maW5kVmlld0J5SWQoZm9jdXNlZFZpZXdJZCk7CisgICAgICAgICAgICBpZiAobmVlZHNGb2N1cyAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgbmVlZHNGb2N1cy5yZXF1ZXN0Rm9jdXMoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgTG9nLncoVEFHLAorICAgICAgICAgICAgICAgICAgICAgICAgIlByZXZpb3VzbHkgZm9jdXNlZCB2aWV3IHJlcG9ydGVkIGlkICIgKyBmb2N1c2VkVmlld0lkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiBkdXJpbmcgc2F2ZSwgYnV0IGNhbid0IGJlIGZvdW5kIGR1cmluZyByZXN0b3JlLiIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gcmVzdG9yZSB0aGUgcGFuZWxzCisgICAgICAgIFNwYXJzZUFycmF5PFBhcmNlbGFibGU+IHBhbmVsU3RhdGVzID0gc2F2ZWRJbnN0YW5jZVN0YXRlLmdldFNwYXJzZVBhcmNlbGFibGVBcnJheShQQU5FTFNfVEFHKTsKKyAgICAgICAgaWYgKHBhbmVsU3RhdGVzICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJlc3RvcmVQYW5lbFN0YXRlKHBhbmVsU3RhdGVzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEludm9rZWQgd2hlbiB0aGUgcGFuZWxzIHNob3VsZCBmcmVlemUgdGhlaXIgc3RhdGUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gaWNpY2xlcyBTYXZlIHN0YXRlIGludG8gdGhpcy4gVGhpcyBpcyB1c3VhbGx5IGluZGV4ZWQgYnkgdGhlCisgICAgICogICAgICAgICAgICBmZWF0dXJlSWQuIFRoaXMgd2lsbCBiZSBnaXZlbiB0byB7QGxpbmsgI3Jlc3RvcmVQYW5lbFN0YXRlfSBpbiB0aGUKKyAgICAgKiAgICAgICAgICAgIGZ1dHVyZS4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgc2F2ZVBhbmVsU3RhdGUoU3BhcnNlQXJyYXk8UGFyY2VsYWJsZT4gaWNpY2xlcykgeworICAgICAgICBQYW5lbEZlYXR1cmVTdGF0ZVtdIHBhbmVscyA9IG1QYW5lbHM7CisgICAgICAgIGlmIChwYW5lbHMgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChpbnQgY3VyRmVhdHVyZUlkID0gcGFuZWxzLmxlbmd0aCAtIDE7IGN1ckZlYXR1cmVJZCA+PSAwOyBjdXJGZWF0dXJlSWQtLSkgeworICAgICAgICAgICAgaWYgKHBhbmVsc1tjdXJGZWF0dXJlSWRdICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBpY2ljbGVzLnB1dChjdXJGZWF0dXJlSWQsIHBhbmVsc1tjdXJGZWF0dXJlSWRdLm9uU2F2ZUluc3RhbmNlU3RhdGUoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBJbnZva2VkIHdoZW4gdGhlIHBhbmVscyBzaG91bGQgdGhhdyB0aGVpciBzdGF0ZSBmcm9tIGEgcHJldmlvdXNseSBmcm96ZW4gc3RhdGUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gaWNpY2xlcyBUaGUgc3RhdGUgc2F2ZWQgYnkge0BsaW5rICNzYXZlUGFuZWxTdGF0ZX0gdGhhdCBuZWVkcyB0byBiZSB0aGF3ZWQuCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIHJlc3RvcmVQYW5lbFN0YXRlKFNwYXJzZUFycmF5PFBhcmNlbGFibGU+IGljaWNsZXMpIHsKKyAgICAgICAgUGFuZWxGZWF0dXJlU3RhdGUgc3Q7CisgICAgICAgIGZvciAoaW50IGN1ckZlYXR1cmVJZCA9IGljaWNsZXMuc2l6ZSgpIC0gMTsgY3VyRmVhdHVyZUlkID49IDA7IGN1ckZlYXR1cmVJZC0tKSB7CisgICAgICAgICAgICBzdCA9IGdldFBhbmVsU3RhdGUoY3VyRmVhdHVyZUlkLCBmYWxzZSAvKiByZXF1aXJlZCAqLyk7CisgICAgICAgICAgICBpZiAoc3QgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIC8vIFRoZSBwYW5lbCBtdXN0IG5vdCBoYXZlIGJlZW4gcmVxdWlyZWQsIGFuZCBpcyBjdXJyZW50bHkgbm90IGFyb3VuZCwgc2tpcCBpdAorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzdC5vblJlc3RvcmVJbnN0YW5jZVN0YXRlKGljaWNsZXMuZ2V0KGN1ckZlYXR1cmVJZCkpOworICAgICAgICB9CisKKyAgICAgICAgLyoKKyAgICAgICAgICogSW1wbGVtZW50YXRpb24gbm90ZTogY2FsbCBvcGVuUGFuZWxzQWZ0ZXJSZXN0b3JlIGxhdGVyIHRvIGFjdHVhbGx5IG9wZW4gdGhlCisgICAgICAgICAqIHJlc3RvcmVkIHBhbmVscy4KKyAgICAgICAgICovCisgICAgfQorCisgICAgLyoqCisgICAgICogT3BlbnMgdGhlIHBhbmVscyB0aGF0IGhhdmUgaGFkIHRoZWlyIHN0YXRlIHJlc3RvcmVkLiBUaGlzIHNob3VsZCBiZQorICAgICAqIGNhbGxlZCBzb21ldGltZSBhZnRlciB7QGxpbmsgI3Jlc3RvcmVQYW5lbFN0YXRlfSB3aGVuIGl0IGlzIHNhZmUgdG8gYWRkCisgICAgICogdG8gdGhlIHdpbmRvdyBtYW5hZ2VyLgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBvcGVuUGFuZWxzQWZ0ZXJSZXN0b3JlKCkgeworICAgICAgICBQYW5lbEZlYXR1cmVTdGF0ZVtdIHBhbmVscyA9IG1QYW5lbHM7CisKKyAgICAgICAgaWYgKHBhbmVscyA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBQYW5lbEZlYXR1cmVTdGF0ZSBzdDsKKyAgICAgICAgZm9yIChpbnQgaSA9IHBhbmVscy5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgeworICAgICAgICAgICAgc3QgPSBwYW5lbHNbaV07CisgICAgICAgICAgICAvLyBXZSByZXN0b3JlIHRoZSBwYW5lbCBpZiBpdCB3YXMgbGFzdCBvcGVuOyB3ZSBza2lwIGl0IGlmIGl0CisgICAgICAgICAgICAvLyBub3cgaXMgb3BlbiwgdG8gYXZvaWQgYSByYWNlIGNvbmRpdGlvbiBpZiB0aGUgdXNlciBpbW1lZGlhdGVseQorICAgICAgICAgICAgLy8gb3BlbnMgaXQgd2hlbiB3ZSBhcmUgcmVzdW1pbmcuCisgICAgICAgICAgICBpZiAoKHN0ICE9IG51bGwpICYmICFzdC5pc09wZW4gJiYgc3Qud2FzTGFzdE9wZW4pIHsKKyAgICAgICAgICAgICAgICBzdC5pc0luRXhwYW5kZWRNb2RlID0gc3Qud2FzTGFzdEV4cGFuZGVkOworICAgICAgICAgICAgICAgIG9wZW5QYW5lbChzdCwgbnVsbCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIGZpbmFsIGNsYXNzIERlY29yVmlldyBleHRlbmRzIEZyYW1lTGF5b3V0IGltcGxlbWVudHMgUm9vdFZpZXdTdXJmYWNlVGFrZXIgeworICAgICAgICAvKiBwYWNrYWdlICovaW50IG1EZWZhdWx0T3BhY2l0eSA9IFBpeGVsRm9ybWF0Lk9QQVFVRTsKKworICAgICAgICAvKiogVGhlIGZlYXR1cmUgSUQgb2YgdGhlIHBhbmVsLCBvciAtMSBpZiB0aGlzIGlzIHRoZSBhcHBsaWNhdGlvbidzIERlY29yVmlldyAqLworICAgICAgICBwcml2YXRlIGZpbmFsIGludCBtRmVhdHVyZUlkOworCisgICAgICAgIHByaXZhdGUgZmluYWwgUmVjdCBtRHJhd2luZ0JvdW5kcyA9IG5ldyBSZWN0KCk7CisKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBSZWN0IG1CYWNrZ3JvdW5kUGFkZGluZyA9IG5ldyBSZWN0KCk7CisKKyAgICAgICAgcHJpdmF0ZSBmaW5hbCBSZWN0IG1GcmFtZVBhZGRpbmcgPSBuZXcgUmVjdCgpOworCisgICAgICAgIHByaXZhdGUgZmluYWwgUmVjdCBtRnJhbWVPZmZzZXRzID0gbmV3IFJlY3QoKTsKKworICAgICAgICBwcml2YXRlIGJvb2xlYW4gbUNoYW5naW5nOworCisgICAgICAgIHByaXZhdGUgRHJhd2FibGUgbU1lbnVCYWNrZ3JvdW5kOworICAgICAgICBwcml2YXRlIGJvb2xlYW4gbVdhdGNoaW5nRm9yTWVudTsKKyAgICAgICAgcHJpdmF0ZSBpbnQgbURvd25ZOworCisgICAgICAgIHB1YmxpYyBEZWNvclZpZXcoQ29udGV4dCBjb250ZXh0LCBpbnQgZmVhdHVyZUlkKSB7CisgICAgICAgICAgICBzdXBlcihjb250ZXh0KTsKKyAgICAgICAgICAgIG1GZWF0dXJlSWQgPSBmZWF0dXJlSWQ7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIGJvb2xlYW4gZGlzcGF0Y2hLZXlFdmVudChLZXlFdmVudCBldmVudCkgeworICAgICAgICAgICAgZmluYWwgaW50IGtleUNvZGUgPSBldmVudC5nZXRLZXlDb2RlKCk7CisgICAgICAgICAgICBmaW5hbCBib29sZWFuIGlzRG93biA9IGV2ZW50LmdldEFjdGlvbigpID09IEtleUV2ZW50LkFDVElPTl9ET1dOOworCisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogSWYgdGhlIHVzZXIgaGl0cyBhbm90aGVyIGtleSB3aXRoaW4gdGhlIHBsYXkgc291bmQgZGVsYXksIHRoZW4KKyAgICAgICAgICAgICAqIGNhbmNlbCB0aGUgc291bmQKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKGtleUNvZGUgIT0gS2V5RXZlbnQuS0VZQ09ERV9WT0xVTUVfRE9XTiAmJiBrZXlDb2RlICE9IEtleUV2ZW50LktFWUNPREVfVk9MVU1FX1VQCisgICAgICAgICAgICAgICAgICAgICYmIG1Wb2x1bWVLZXlVcFRpbWUgKyBWb2x1bWVQYW5lbC5QTEFZX1NPVU5EX0RFTEFZCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPiBTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKSkgeworICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICogVGhlIHVzZXIgaGFzIGhpdCBhbm90aGVyIGtleSBkdXJpbmcgdGhlIGRlbGF5IChlLmcuLCAzMDBtcykKKyAgICAgICAgICAgICAgICAgKiBzaW5jZSB0aGUgbGFzdCB2b2x1bWUga2V5IHVwLCBzbyBjYW5jZWwgYW55IHNvdW5kcy4KKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBBdWRpb01hbmFnZXIgYXVkaW9NYW5hZ2VyID0gKEF1ZGlvTWFuYWdlcikgZ2V0Q29udGV4dCgpLmdldFN5c3RlbVNlcnZpY2UoCisgICAgICAgICAgICAgICAgICAgICAgICBDb250ZXh0LkFVRElPX1NFUlZJQ0UpOworICAgICAgICAgICAgICAgIGlmIChhdWRpb01hbmFnZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBhdWRpb01hbmFnZXIuYWRqdXN0U3VnZ2VzdGVkU3RyZWFtVm9sdW1lKEF1ZGlvTWFuYWdlci5BREpVU1RfU0FNRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtVm9sdW1lQ29udHJvbFN0cmVhbVR5cGUsIEF1ZGlvTWFuYWdlci5GTEFHX1JFTU9WRV9TT1VORF9BTkRfVklCUkFURSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaXNEb3duICYmIChldmVudC5nZXRSZXBlYXRDb3VudCgpID09IDApKSB7CisgICAgICAgICAgICAgICAgLy8gRmlyc3QgaGFuZGxlIGNob3JkaW5nIG9mIHBhbmVsIGtleTogaWYgYSBwYW5lbCBrZXkgaXMgaGVsZAorICAgICAgICAgICAgICAgIC8vIGJ1dCBub3QgcmVsZWFzZWQsIHRyeSB0byBleGVjdXRlIGEgc2hvcnRjdXQgaW4gaXQuCisgICAgICAgICAgICAgICAgaWYgKChtUGFuZWxDaG9yZGluZ0tleSA+IDApICYmIChtUGFuZWxDaG9yZGluZ0tleSAhPSBrZXlDb2RlKSkgeworICAgICAgICAgICAgICAgICAgICAvLyBQZXJmb3JtIHRoZSBzaG9ydGN1dCAobVByZXBhcmVkUGFuZWwgY2FuIGJlIG51bGwgc2luY2UKKyAgICAgICAgICAgICAgICAgICAgLy8gZ2xvYmFsIHNob3J0Y3V0cyAoc3VjaCBhcyBzZWFyY2gpIGRvbid0IHJlbHkgb24gYQorICAgICAgICAgICAgICAgICAgICAvLyBwcmVwYXJlZCBwYW5lbCBvciBtZW51KS4KKyAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBoYW5kbGVkID0gcGVyZm9ybVBhbmVsU2hvcnRjdXQobVByZXBhcmVkUGFuZWwsIGtleUNvZGUsIGV2ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1lbnUuRkxBR19QRVJGT1JNX05PX0NMT1NFKTsKKworICAgICAgICAgICAgICAgICAgICBpZiAoIWhhbmRsZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgICAgICAgKiBJZiBub3QgaGFuZGxlZCwgdGhlbiBwYXNzIGl0IHRvIHRoZSB2aWV3IGhpZXJhcmNoeQorICAgICAgICAgICAgICAgICAgICAgICAgICogYW5kIGFueW9uZSBlbHNlIHRoYXQgbWF5IGJlIGludGVyZXN0ZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZWQgPSBkaXNwYXRjaEtleVNob3J0Y3V0RXZlbnQoZXZlbnQpOworCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGFuZGxlZCAmJiBtUHJlcGFyZWRQYW5lbCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVByZXBhcmVkUGFuZWwuaXNIYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAgIGlmIChoYW5kbGVkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIElmIGEgcGFuZWwgaXMgb3BlbiwgcGVyZm9ybSBhIHNob3J0Y3V0IG9uIGl0IHdpdGhvdXQgdGhlCisgICAgICAgICAgICAgICAgLy8gY2hvcmRlZCBwYW5lbCBrZXkKKyAgICAgICAgICAgICAgICBpZiAoKG1QcmVwYXJlZFBhbmVsICE9IG51bGwpICYmIG1QcmVwYXJlZFBhbmVsLmlzT3BlbikgeworICAgICAgICAgICAgICAgICAgICBpZiAocGVyZm9ybVBhbmVsU2hvcnRjdXQobVByZXBhcmVkUGFuZWwsIGtleUNvZGUsIGV2ZW50LCAwKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZpbmFsIENhbGxiYWNrIGNiID0gZ2V0Q2FsbGJhY2soKTsKKyAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gaGFuZGxlZCA9IGNiICE9IG51bGwgJiYgbUZlYXR1cmVJZCA8IDAgPyBjYi5kaXNwYXRjaEtleUV2ZW50KGV2ZW50KQorICAgICAgICAgICAgICAgICAgICA6IHN1cGVyLmRpc3BhdGNoS2V5RXZlbnQoZXZlbnQpOworICAgICAgICAgICAgaWYgKGhhbmRsZWQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBpc0Rvd24gPyBQaG9uZVdpbmRvdy50aGlzLm9uS2V5RG93bihtRmVhdHVyZUlkLCBldmVudC5nZXRLZXlDb2RlKCksIGV2ZW50KQorICAgICAgICAgICAgICAgICAgICA6IFBob25lV2luZG93LnRoaXMub25LZXlVcChtRmVhdHVyZUlkLCBldmVudC5nZXRLZXlDb2RlKCksIGV2ZW50KTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgYm9vbGVhbiBkaXNwYXRjaFRvdWNoRXZlbnQoTW90aW9uRXZlbnQgZXYpIHsKKyAgICAgICAgICAgIGZpbmFsIENhbGxiYWNrIGNiID0gZ2V0Q2FsbGJhY2soKTsKKyAgICAgICAgICAgIHJldHVybiBjYiAhPSBudWxsICYmIG1GZWF0dXJlSWQgPCAwID8gY2IuZGlzcGF0Y2hUb3VjaEV2ZW50KGV2KSA6IHN1cGVyCisgICAgICAgICAgICAgICAgICAgIC5kaXNwYXRjaFRvdWNoRXZlbnQoZXYpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBib29sZWFuIGRpc3BhdGNoVHJhY2tiYWxsRXZlbnQoTW90aW9uRXZlbnQgZXYpIHsKKyAgICAgICAgICAgIGZpbmFsIENhbGxiYWNrIGNiID0gZ2V0Q2FsbGJhY2soKTsKKyAgICAgICAgICAgIHJldHVybiBjYiAhPSBudWxsICYmIG1GZWF0dXJlSWQgPCAwID8gY2IuZGlzcGF0Y2hUcmFja2JhbGxFdmVudChldikgOiBzdXBlcgorICAgICAgICAgICAgICAgICAgICAuZGlzcGF0Y2hUcmFja2JhbGxFdmVudChldik7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgYm9vbGVhbiBzdXBlckRpc3BhdGNoS2V5RXZlbnQoS2V5RXZlbnQgZXZlbnQpIHsKKyAgICAgICAgICAgIHJldHVybiBzdXBlci5kaXNwYXRjaEtleUV2ZW50KGV2ZW50KTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBib29sZWFuIHN1cGVyRGlzcGF0Y2hUb3VjaEV2ZW50KE1vdGlvbkV2ZW50IGV2ZW50KSB7CisgICAgICAgICAgICByZXR1cm4gc3VwZXIuZGlzcGF0Y2hUb3VjaEV2ZW50KGV2ZW50KTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBib29sZWFuIHN1cGVyRGlzcGF0Y2hUcmFja2JhbGxFdmVudChNb3Rpb25FdmVudCBldmVudCkgeworICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmRpc3BhdGNoVHJhY2tiYWxsRXZlbnQoZXZlbnQpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBib29sZWFuIG9uVG91Y2hFdmVudChNb3Rpb25FdmVudCBldmVudCkgeworICAgICAgICAgICAgcmV0dXJuIG9uSW50ZXJjZXB0VG91Y2hFdmVudChldmVudCk7CisgICAgICAgIH0KKworICAgICAgICBwcml2YXRlIGJvb2xlYW4gaXNPdXRPZkJvdW5kcyhpbnQgeCwgaW50IHkpIHsKKyAgICAgICAgICAgIHJldHVybiB4IDwgLTUgfHwgeSA8IC01IHx8IHggPiAoZ2V0V2lkdGgoKSArIDUpCisgICAgICAgICAgICAgICAgICAgIHx8IHkgPiAoZ2V0SGVpZ2h0KCkgKyA1KTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgYm9vbGVhbiBvbkludGVyY2VwdFRvdWNoRXZlbnQoTW90aW9uRXZlbnQgZXZlbnQpIHsKKyAgICAgICAgICAgIGludCBhY3Rpb24gPSBldmVudC5nZXRBY3Rpb24oKTsKKyAgICAgICAgICAgIGlmIChtRmVhdHVyZUlkID49IDApIHsKKyAgICAgICAgICAgICAgICBpZiAoYWN0aW9uID09IE1vdGlvbkV2ZW50LkFDVElPTl9ET1dOKSB7CisgICAgICAgICAgICAgICAgICAgIGludCB4ID0gKGludClldmVudC5nZXRYKCk7CisgICAgICAgICAgICAgICAgICAgIGludCB5ID0gKGludClldmVudC5nZXRZKCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpc091dE9mQm91bmRzKHgsIHkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjbG9zZVBhbmVsKG1GZWF0dXJlSWQpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICghU1dFRVBfT1BFTl9NRU5VKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobUZlYXR1cmVJZCA+PSAwKSB7CisgICAgICAgICAgICAgICAgaWYgKGFjdGlvbiA9PSBNb3Rpb25FdmVudC5BQ1RJT05fRE9XTikgeworICAgICAgICAgICAgICAgICAgICBMb2cuaShUQUcsICJXYXRjaGlpbmchIik7CisgICAgICAgICAgICAgICAgICAgIG1XYXRjaGluZ0Zvck1lbnUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBtRG93blkgPSAoaW50KSBldmVudC5nZXRZKCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoIW1XYXRjaGluZ0Zvck1lbnUpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGludCB5ID0gKGludClldmVudC5nZXRZKCk7CisgICAgICAgICAgICAgICAgaWYgKGFjdGlvbiA9PSBNb3Rpb25FdmVudC5BQ1RJT05fTU9WRSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoeSA+IChtRG93blkrMzApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBMb2cuaShUQUcsICJDbG9zaW5nISIpOworICAgICAgICAgICAgICAgICAgICAgICAgY2xvc2VQYW5lbChtRmVhdHVyZUlkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1XYXRjaGluZ0Zvck1lbnUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhY3Rpb24gPT0gTW90aW9uRXZlbnQuQUNUSU9OX1VQKSB7CisgICAgICAgICAgICAgICAgICAgIG1XYXRjaGluZ0Zvck1lbnUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vTG9nLmkoVEFHLCAiSW50ZXJjZXB0OiBhY3Rpb249IiArIGFjdGlvbiArICIgeT0iICsgZXZlbnQuZ2V0WSgpCisgICAgICAgICAgICAvLyAgICAgICAgKyAiIChpbiAiICsgZ2V0SGVpZ2h0KCkgKyAiKSIpOworCisgICAgICAgICAgICBpZiAoYWN0aW9uID09IE1vdGlvbkV2ZW50LkFDVElPTl9ET1dOKSB7CisgICAgICAgICAgICAgICAgaW50IHkgPSAoaW50KWV2ZW50LmdldFkoKTsKKyAgICAgICAgICAgICAgICBpZiAoeSA+PSAoZ2V0SGVpZ2h0KCktNSkgJiYgIWhhc0NoaWxkcmVuKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgTG9nLmkoVEFHLCAiV2F0Y2hpaW5nISIpOworICAgICAgICAgICAgICAgICAgICBtV2F0Y2hpbmdGb3JNZW51ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIW1XYXRjaGluZ0Zvck1lbnUpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGludCB5ID0gKGludClldmVudC5nZXRZKCk7CisgICAgICAgICAgICBpZiAoYWN0aW9uID09IE1vdGlvbkV2ZW50LkFDVElPTl9NT1ZFKSB7CisgICAgICAgICAgICAgICAgaWYgKHkgPCAoZ2V0SGVpZ2h0KCktMzApKSB7CisgICAgICAgICAgICAgICAgICAgIExvZy5pKFRBRywgIk9wZW5pbmchIik7CisgICAgICAgICAgICAgICAgICAgIG9wZW5QYW5lbChGRUFUVVJFX09QVElPTlNfUEFORUwsIG5ldyBLZXlFdmVudCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBLZXlFdmVudC5BQ1RJT05fRE9XTiwgS2V5RXZlbnQuS0VZQ09ERV9NRU5VKSk7CisgICAgICAgICAgICAgICAgICAgIG1XYXRjaGluZ0Zvck1lbnUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChhY3Rpb24gPT0gTW90aW9uRXZlbnQuQUNUSU9OX1VQKSB7CisgICAgICAgICAgICAgICAgbVdhdGNoaW5nRm9yTWVudSA9IGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHZvaWQgc2VuZEFjY2Vzc2liaWxpdHlFdmVudChpbnQgZXZlbnRUeXBlKSB7CisgICAgICAgICAgICBpZiAoIUFjY2Vzc2liaWxpdHlNYW5hZ2VyLmdldEluc3RhbmNlKG1Db250ZXh0KS5pc0VuYWJsZWQoKSkgeworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAKKyAgICAgICAgICAgIC8vIGlmIHdlIGFyZSBzaG93aW5nIGEgZmVhdHVyZSB0aGF0IHNob3VsZCBiZSBhbm5vdW5jZWQgYW5kIG9uZSBjaGlsZAorICAgICAgICAgICAgLy8gbWFrZSB0aGlzIGNoaWxkIHRoZSBldmVudCBzb3VyY2Ugc2luY2UgdGhpcyBpcyB0aGUgZmVhdHVyZSBpdHNlbGYKKyAgICAgICAgICAgIC8vIG90aGVyd2lzZSB0aGUgY2FsbGJhY2sgd2lsbCB0YWtlIG92ZXIgYW5kIGFubm91bmNlIGl0cyBjbGllbnQKKyAgICAgICAgICAgIGlmICgobUZlYXR1cmVJZCA9PSBGRUFUVVJFX09QVElPTlNfUEFORUwgfHwKKyAgICAgICAgICAgICAgICAgICAgbUZlYXR1cmVJZCA9PSBGRUFUVVJFX0NPTlRFWFRfTUVOVSB8fAorICAgICAgICAgICAgICAgICAgICBtRmVhdHVyZUlkID09IEZFQVRVUkVfUFJPR1JFU1MgfHwKKyAgICAgICAgICAgICAgICAgICAgbUZlYXR1cmVJZCA9PSBGRUFUVVJFX0lOREVURVJNSU5BVEVfUFJPR1JFU1MpCisgICAgICAgICAgICAgICAgICAgICYmIGdldENoaWxkQ291bnQoKSA9PSAxKSB7CisgICAgICAgICAgICAgICAgZ2V0Q2hpbGRBdCgwKS5zZW5kQWNjZXNzaWJpbGl0eUV2ZW50KGV2ZW50VHlwZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHN1cGVyLnNlbmRBY2Nlc3NpYmlsaXR5RXZlbnQoZXZlbnRUeXBlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgYm9vbGVhbiBkaXNwYXRjaFBvcHVsYXRlQWNjZXNzaWJpbGl0eUV2ZW50KEFjY2Vzc2liaWxpdHlFdmVudCBldmVudCkgeworICAgICAgICAgICAgZmluYWwgQ2FsbGJhY2sgY2IgPSBnZXRDYWxsYmFjaygpOworICAgICAgICAgICAgaWYgKGNiICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBpZiAoY2IuZGlzcGF0Y2hQb3B1bGF0ZUFjY2Vzc2liaWxpdHlFdmVudChldmVudCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHN1cGVyLmRpc3BhdGNoUG9wdWxhdGVBY2Nlc3NpYmlsaXR5RXZlbnQoZXZlbnQpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHByb3RlY3RlZCBib29sZWFuIHNldEZyYW1lKGludCBsLCBpbnQgdCwgaW50IHIsIGludCBiKSB7CisgICAgICAgICAgICBib29sZWFuIGNoYW5nZWQgPSBzdXBlci5zZXRGcmFtZShsLCB0LCByLCBiKTsKKyAgICAgICAgICAgIGlmIChjaGFuZ2VkKSB7CisgICAgICAgICAgICAgICAgZmluYWwgUmVjdCBkcmF3aW5nQm91bmRzID0gbURyYXdpbmdCb3VuZHM7CisgICAgICAgICAgICAgICAgZ2V0RHJhd2luZ1JlY3QoZHJhd2luZ0JvdW5kcyk7CisKKyAgICAgICAgICAgICAgICBEcmF3YWJsZSBmZyA9IGdldEZvcmVncm91bmQoKTsKKyAgICAgICAgICAgICAgICBpZiAoZmcgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBmaW5hbCBSZWN0IGZyYW1lT2Zmc2V0cyA9IG1GcmFtZU9mZnNldHM7CisgICAgICAgICAgICAgICAgICAgIGRyYXdpbmdCb3VuZHMubGVmdCArPSBmcmFtZU9mZnNldHMubGVmdDsKKyAgICAgICAgICAgICAgICAgICAgZHJhd2luZ0JvdW5kcy50b3AgKz0gZnJhbWVPZmZzZXRzLnRvcDsKKyAgICAgICAgICAgICAgICAgICAgZHJhd2luZ0JvdW5kcy5yaWdodCAtPSBmcmFtZU9mZnNldHMucmlnaHQ7CisgICAgICAgICAgICAgICAgICAgIGRyYXdpbmdCb3VuZHMuYm90dG9tIC09IGZyYW1lT2Zmc2V0cy5ib3R0b207CisgICAgICAgICAgICAgICAgICAgIGZnLnNldEJvdW5kcyhkcmF3aW5nQm91bmRzKTsKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgUmVjdCBmcmFtZVBhZGRpbmcgPSBtRnJhbWVQYWRkaW5nOworICAgICAgICAgICAgICAgICAgICBkcmF3aW5nQm91bmRzLmxlZnQgKz0gZnJhbWVQYWRkaW5nLmxlZnQgLSBmcmFtZU9mZnNldHMubGVmdDsKKyAgICAgICAgICAgICAgICAgICAgZHJhd2luZ0JvdW5kcy50b3AgKz0gZnJhbWVQYWRkaW5nLnRvcCAtIGZyYW1lT2Zmc2V0cy50b3A7CisgICAgICAgICAgICAgICAgICAgIGRyYXdpbmdCb3VuZHMucmlnaHQgLT0gZnJhbWVQYWRkaW5nLnJpZ2h0IC0gZnJhbWVPZmZzZXRzLnJpZ2h0OworICAgICAgICAgICAgICAgICAgICBkcmF3aW5nQm91bmRzLmJvdHRvbSAtPSBmcmFtZVBhZGRpbmcuYm90dG9tIC0gZnJhbWVPZmZzZXRzLmJvdHRvbTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBEcmF3YWJsZSBiZyA9IGdldEJhY2tncm91bmQoKTsKKyAgICAgICAgICAgICAgICBpZiAoYmcgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBiZy5zZXRCb3VuZHMoZHJhd2luZ0JvdW5kcyk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKFNXRUVQX09QRU5fTUVOVSkgeworICAgICAgICAgICAgICAgICAgICBpZiAobU1lbnVCYWNrZ3JvdW5kID09IG51bGwgJiYgbUZlYXR1cmVJZCA8IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBnZXRBdHRyaWJ1dGVzKCkuaGVpZ2h0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT0gV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuTUFUQ0hfUEFSRU5UKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtTWVudUJhY2tncm91bmQgPSBnZXRDb250ZXh0KCkuZ2V0UmVzb3VyY2VzKCkuZ2V0RHJhd2FibGUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUubWVudV9iYWNrZ3JvdW5kKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAobU1lbnVCYWNrZ3JvdW5kICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1NZW51QmFja2dyb3VuZC5zZXRCb3VuZHMoZHJhd2luZ0JvdW5kcy5sZWZ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3aW5nQm91bmRzLmJvdHRvbS02LCBkcmF3aW5nQm91bmRzLnJpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkcmF3aW5nQm91bmRzLmJvdHRvbSsyMCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gY2hhbmdlZDsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBkcmF3KENhbnZhcyBjYW52YXMpIHsKKyAgICAgICAgICAgIHN1cGVyLmRyYXcoY2FudmFzKTsKKworICAgICAgICAgICAgaWYgKG1NZW51QmFja2dyb3VuZCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgbU1lbnVCYWNrZ3JvdW5kLmRyYXcoY2FudmFzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBib29sZWFuIHNob3dDb250ZXh0TWVudUZvckNoaWxkKFZpZXcgb3JpZ2luYWxWaWV3KSB7CisgICAgICAgICAgICAvLyBSZXVzZSB0aGUgY29udGV4dCBtZW51IGJ1aWxkZXIKKyAgICAgICAgICAgIGlmIChtQ29udGV4dE1lbnUgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIG1Db250ZXh0TWVudSA9IG5ldyBDb250ZXh0TWVudUJ1aWxkZXIoZ2V0Q29udGV4dCgpKTsKKyAgICAgICAgICAgICAgICBtQ29udGV4dE1lbnUuc2V0Q2FsbGJhY2sobUNvbnRleHRNZW51Q2FsbGJhY2spOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtQ29udGV4dE1lbnUuY2xlYXJBbGwoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbUNvbnRleHRNZW51SGVscGVyID0gbUNvbnRleHRNZW51LnNob3cob3JpZ2luYWxWaWV3LCBvcmlnaW5hbFZpZXcuZ2V0V2luZG93VG9rZW4oKSk7CisgICAgICAgICAgICByZXR1cm4gbUNvbnRleHRNZW51SGVscGVyICE9IG51bGw7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBzdGFydENoYW5naW5nKCkgeworICAgICAgICAgICAgbUNoYW5naW5nID0gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIGZpbmlzaENoYW5naW5nKCkgeworICAgICAgICAgICAgbUNoYW5naW5nID0gZmFsc2U7CisgICAgICAgICAgICBkcmF3YWJsZUNoYW5nZWQoKTsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIHNldFdpbmRvd0JhY2tncm91bmQoRHJhd2FibGUgZHJhd2FibGUpIHsKKyAgICAgICAgICAgIGlmIChnZXRCYWNrZ3JvdW5kKCkgIT0gZHJhd2FibGUpIHsKKyAgICAgICAgICAgICAgICBzZXRCYWNrZ3JvdW5kRHJhd2FibGUoZHJhd2FibGUpOworICAgICAgICAgICAgICAgIGlmIChkcmF3YWJsZSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIGRyYXdhYmxlLmdldFBhZGRpbmcobUJhY2tncm91bmRQYWRkaW5nKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBtQmFja2dyb3VuZFBhZGRpbmcuc2V0RW1wdHkoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZHJhd2FibGVDaGFuZ2VkKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBzZXRXaW5kb3dGcmFtZShEcmF3YWJsZSBkcmF3YWJsZSkgeworICAgICAgICAgICAgaWYgKGdldEZvcmVncm91bmQoKSAhPSBkcmF3YWJsZSkgeworICAgICAgICAgICAgICAgIHNldEZvcmVncm91bmQoZHJhd2FibGUpOworICAgICAgICAgICAgICAgIGlmIChkcmF3YWJsZSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIGRyYXdhYmxlLmdldFBhZGRpbmcobUZyYW1lUGFkZGluZyk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbUZyYW1lUGFkZGluZy5zZXRFbXB0eSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkcmF3YWJsZUNoYW5nZWQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwcm90ZWN0ZWQgYm9vbGVhbiBmaXRTeXN0ZW1XaW5kb3dzKFJlY3QgaW5zZXRzKSB7CisgICAgICAgICAgICBtRnJhbWVPZmZzZXRzLnNldChpbnNldHMpOworICAgICAgICAgICAgaWYgKGdldEZvcmVncm91bmQoKSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgZHJhd2FibGVDaGFuZ2VkKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gc3VwZXIuZml0U3lzdGVtV2luZG93cyhpbnNldHMpOworICAgICAgICB9CisKKyAgICAgICAgcHJpdmF0ZSB2b2lkIGRyYXdhYmxlQ2hhbmdlZCgpIHsKKyAgICAgICAgICAgIGlmIChtQ2hhbmdpbmcpIHsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNldFBhZGRpbmcobUZyYW1lUGFkZGluZy5sZWZ0ICsgbUJhY2tncm91bmRQYWRkaW5nLmxlZnQsIG1GcmFtZVBhZGRpbmcudG9wCisgICAgICAgICAgICAgICAgICAgICsgbUJhY2tncm91bmRQYWRkaW5nLnRvcCwgbUZyYW1lUGFkZGluZy5yaWdodCArIG1CYWNrZ3JvdW5kUGFkZGluZy5yaWdodCwKKyAgICAgICAgICAgICAgICAgICAgbUZyYW1lUGFkZGluZy5ib3R0b20gKyBtQmFja2dyb3VuZFBhZGRpbmcuYm90dG9tKTsKKyAgICAgICAgICAgIHJlcXVlc3RMYXlvdXQoKTsKKyAgICAgICAgICAgIGludmFsaWRhdGUoKTsKKworICAgICAgICAgICAgaW50IG9wYWNpdHkgPSBQaXhlbEZvcm1hdC5PUEFRVUU7CisKKyAgICAgICAgICAgIC8vIE5vdGU6IGlmIHRoZXJlIGlzIG5vIGJhY2tncm91bmQsIHdlIHdpbGwgYXNzdW1lIG9wYXF1ZS4gVGhlCisgICAgICAgICAgICAvLyBjb21tb24gY2FzZSBzZWVtcyB0byBiZSB0aGF0IGFuIGFwcGxpY2F0aW9uIHNldHMgdGhlcmUgdG8gYmUKKyAgICAgICAgICAgIC8vIG5vIGJhY2tncm91bmQgc28gaXQgY2FuIGRyYXcgZXZlcnl0aGluZyBpdHNlbGYuIEZvciB0aGF0LAorICAgICAgICAgICAgLy8gd2Ugd291bGQgbGlrZSB0byBhc3N1bWUgT1BBUVVFIGFuZCBsZXQgdGhlIGFwcCBmb3JjZSBpdCB0bworICAgICAgICAgICAgLy8gdGhlIHNsb3dlciBUUkFOU0xVQ0VOVCBtb2RlIGlmIHRoYXQgaXMgcmVhbGx5IHdoYXQgaXQgd2FudHMuCisgICAgICAgICAgICBEcmF3YWJsZSBiZyA9IGdldEJhY2tncm91bmQoKTsKKyAgICAgICAgICAgIERyYXdhYmxlIGZnID0gZ2V0Rm9yZWdyb3VuZCgpOworICAgICAgICAgICAgaWYgKGJnICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBpZiAoZmcgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBvcGFjaXR5ID0gYmcuZ2V0T3BhY2l0eSgpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobUZyYW1lUGFkZGluZy5sZWZ0IDw9IDAgJiYgbUZyYW1lUGFkZGluZy50b3AgPD0gMAorICAgICAgICAgICAgICAgICAgICAgICAgJiYgbUZyYW1lUGFkZGluZy5yaWdodCA8PSAwICYmIG1GcmFtZVBhZGRpbmcuYm90dG9tIDw9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGZyYW1lIHBhZGRpbmcgaXMgemVybywgdGhlbiB3ZSBjYW4gYmUgb3BhcXVlCisgICAgICAgICAgICAgICAgICAgIC8vIGlmIGVpdGhlciB0aGUgZnJhbWUgLW9yLSB0aGUgYmFja2dyb3VuZCBpcyBvcGFxdWUuCisgICAgICAgICAgICAgICAgICAgIGludCBmb3AgPSBmZy5nZXRPcGFjaXR5KCk7CisgICAgICAgICAgICAgICAgICAgIGludCBib3AgPSBiZy5nZXRPcGFjaXR5KCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChDb25maWcuTE9HVikKKyAgICAgICAgICAgICAgICAgICAgICAgIExvZy52KFRBRywgIkJhY2tncm91bmQgb3BhY2l0eTogIiArIGJvcCArICIsIEZyYW1lIG9wYWNpdHk6ICIgKyBmb3ApOworICAgICAgICAgICAgICAgICAgICBpZiAoZm9wID09IFBpeGVsRm9ybWF0Lk9QQVFVRSB8fCBib3AgPT0gUGl4ZWxGb3JtYXQuT1BBUVVFKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5ID0gUGl4ZWxGb3JtYXQuT1BBUVVFOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZvcCA9PSBQaXhlbEZvcm1hdC5VTktOT1dOKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5ID0gYm9wOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGJvcCA9PSBQaXhlbEZvcm1hdC5VTktOT1dOKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5ID0gZm9wOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgb3BhY2l0eSA9IERyYXdhYmxlLnJlc29sdmVPcGFjaXR5KGZvcCwgYm9wKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIEZvciBub3cgd2UgaGF2ZSB0byBhc3N1bWUgdHJhbnNsdWNlbnQgaWYgdGhlcmUgaXMgYQorICAgICAgICAgICAgICAgICAgICAvLyBmcmFtZSB3aXRoIHBhZGRpbmcuLi4gdGhlcmUgaXMgbm8gd2F5IHRvIHRlbGwgaWYgdGhlCisgICAgICAgICAgICAgICAgICAgIC8vIGZyYW1lIGFuZCBiYWNrZ3JvdW5kIHRvZ2V0aGVyIHdpbGwgZHJhdyBhbGwgcGl4ZWxzLgorICAgICAgICAgICAgICAgICAgICBpZiAoQ29uZmlnLkxPR1YpCisgICAgICAgICAgICAgICAgICAgICAgICBMb2cudihUQUcsICJQYWRkaW5nOiAiICsgbUZyYW1lUGFkZGluZyk7CisgICAgICAgICAgICAgICAgICAgIG9wYWNpdHkgPSBQaXhlbEZvcm1hdC5UUkFOU0xVQ0VOVDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChDb25maWcuTE9HVikKKyAgICAgICAgICAgICAgICBMb2cudihUQUcsICJCYWNrZ3JvdW5kOiAiICsgYmcgKyAiLCBGcmFtZTogIiArIGZnKTsKKyAgICAgICAgICAgIGlmIChDb25maWcuTE9HVikKKyAgICAgICAgICAgICAgICBMb2cudihUQUcsICJTZWxlY3RlZCBkZWZhdWx0IG9wYWNpdHk6ICIgKyBvcGFjaXR5KTsKKworICAgICAgICAgICAgbURlZmF1bHRPcGFjaXR5ID0gb3BhY2l0eTsKKyAgICAgICAgICAgIGlmIChtRmVhdHVyZUlkIDwgMCkgeworICAgICAgICAgICAgICAgIHNldERlZmF1bHRXaW5kb3dGb3JtYXQob3BhY2l0eSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHZvaWQgb25XaW5kb3dGb2N1c0NoYW5nZWQoYm9vbGVhbiBoYXNXaW5kb3dGb2N1cykgeworICAgICAgICAgICAgc3VwZXIub25XaW5kb3dGb2N1c0NoYW5nZWQoaGFzV2luZG93Rm9jdXMpOworCisgICAgICAgICAgICBtUGFuZWxNYXlMb25nUHJlc3MgPSBmYWxzZTsKKworICAgICAgICAgICAgLy8gSWYgdGhlIHVzZXIgaXMgY2hvcmRpbmcgYSBtZW51IHNob3J0Y3V0LCByZWxlYXNlIHRoZSBjaG9yZCBzaW5jZQorICAgICAgICAgICAgLy8gdGhpcyB3aW5kb3cgbG9zdCBmb2N1cworICAgICAgICAgICAgaWYgKCFoYXNXaW5kb3dGb2N1cyAmJiBtUGFuZWxDaG9yZGluZ0tleSAhPSAwKSB7CisgICAgICAgICAgICAgICAgY2xvc2VQYW5lbChGRUFUVVJFX09QVElPTlNfUEFORUwpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmaW5hbCBDYWxsYmFjayBjYiA9IGdldENhbGxiYWNrKCk7CisgICAgICAgICAgICBpZiAoY2IgIT0gbnVsbCAmJiBtRmVhdHVyZUlkIDwgMCkgeworICAgICAgICAgICAgICAgIGNiLm9uV2luZG93Rm9jdXNDaGFuZ2VkKGhhc1dpbmRvd0ZvY3VzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwcm90ZWN0ZWQgdm9pZCBvbkF0dGFjaGVkVG9XaW5kb3coKSB7CisgICAgICAgICAgICBzdXBlci5vbkF0dGFjaGVkVG9XaW5kb3coKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZmluYWwgQ2FsbGJhY2sgY2IgPSBnZXRDYWxsYmFjaygpOworICAgICAgICAgICAgaWYgKGNiICE9IG51bGwgJiYgbUZlYXR1cmVJZCA8IDApIHsKKyAgICAgICAgICAgICAgICBjYi5vbkF0dGFjaGVkVG9XaW5kb3coKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1GZWF0dXJlSWQgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICAvKgorICAgICAgICAgICAgICAgICAqIFRoZSBtYWluIHdpbmRvdyBoYXMgYmVlbiBhdHRhY2hlZCwgdHJ5IHRvIHJlc3RvcmUgYW55IHBhbmVscworICAgICAgICAgICAgICAgICAqIHRoYXQgbWF5IGhhdmUgYmVlbiBvcGVuIGJlZm9yZS4gVGhpcyBpcyBjYWxsZWQgaW4gY2FzZXMgd2hlcmUKKyAgICAgICAgICAgICAgICAgKiBhbiBhY3Rpdml0eSBpcyBiZWluZyBraWxsZWQgZm9yIGNvbmZpZ3VyYXRpb24gY2hhbmdlIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgKiBtZW51IHdhcyBvcGVuLiBXaGVuIHRoZSBhY3Rpdml0eSBpcyByZWNyZWF0ZWQsIHRoZSBtZW51CisgICAgICAgICAgICAgICAgICogc2hvdWxkIGJlIHNob3duIGFnYWluLgorICAgICAgICAgICAgICAgICAqLworICAgICAgICAgICAgICAgIG9wZW5QYW5lbHNBZnRlclJlc3RvcmUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwcm90ZWN0ZWQgdm9pZCBvbkRldGFjaGVkRnJvbVdpbmRvdygpIHsKKyAgICAgICAgICAgIHN1cGVyLm9uRGV0YWNoZWRGcm9tV2luZG93KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZpbmFsIENhbGxiYWNrIGNiID0gZ2V0Q2FsbGJhY2soKTsKKyAgICAgICAgICAgIGlmIChjYiAhPSBudWxsICYmIG1GZWF0dXJlSWQgPCAwKSB7CisgICAgICAgICAgICAgICAgY2Iub25EZXRhY2hlZEZyb21XaW5kb3coKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyB2b2lkIG9uQ2xvc2VTeXN0ZW1EaWFsb2dzKFN0cmluZyByZWFzb24pIHsKKyAgICAgICAgICAgIGlmIChtRmVhdHVyZUlkID49IDApIHsKKyAgICAgICAgICAgICAgICBjbG9zZUFsbFBhbmVscygpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGFuZHJvaWQudmlldy5TdXJmYWNlSG9sZGVyLkNhbGxiYWNrIHdpbGxZb3VUYWtlVGhlU3VyZmFjZSgpIHsKKyAgICAgICAgICAgIHJldHVybiBtRmVhdHVyZUlkIDwgMCA/IG1UYWtlU3VyZmFjZUNhbGxiYWNrIDogbnVsbDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcHVibGljIElucHV0UXVldWUuQ2FsbGJhY2sgd2lsbFlvdVRha2VUaGVJbnB1dFF1ZXVlKCkgeworICAgICAgICAgICAgcmV0dXJuIG1GZWF0dXJlSWQgPCAwID8gbVRha2VJbnB1dFF1ZXVlQ2FsbGJhY2sgOiBudWxsOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwdWJsaWMgdm9pZCBzZXRTdXJmYWNlVHlwZShpbnQgdHlwZSkgeworICAgICAgICAgICAgUGhvbmVXaW5kb3cudGhpcy5zZXRUeXBlKHR5cGUpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwdWJsaWMgdm9pZCBzZXRTdXJmYWNlRm9ybWF0KGludCBmb3JtYXQpIHsKKyAgICAgICAgICAgIFBob25lV2luZG93LnRoaXMuc2V0Rm9ybWF0KGZvcm1hdCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHB1YmxpYyB2b2lkIHNldFN1cmZhY2VLZWVwU2NyZWVuT24oYm9vbGVhbiBrZWVwT24pIHsKKyAgICAgICAgICAgIGlmIChrZWVwT24pIFBob25lV2luZG93LnRoaXMuYWRkRmxhZ3MoV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19LRUVQX1NDUkVFTl9PTik7CisgICAgICAgICAgICBlbHNlIFBob25lV2luZG93LnRoaXMuY2xlYXJGbGFncyhXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX0tFRVBfU0NSRUVOX09OKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByb3RlY3RlZCBEZWNvclZpZXcgZ2VuZXJhdGVEZWNvcigpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBEZWNvclZpZXcoZ2V0Q29udGV4dCgpLCAtMSk7CisgICAgfQorCisgICAgcHJvdGVjdGVkIHZvaWQgc2V0RmVhdHVyZUZyb21BdHRycyhpbnQgZmVhdHVyZUlkLCBUeXBlZEFycmF5IGF0dHJzLAorICAgICAgICAgICAgaW50IGRyYXdhYmxlQXR0ciwgaW50IGFscGhhQXR0cikgeworICAgICAgICBEcmF3YWJsZSBkID0gYXR0cnMuZ2V0RHJhd2FibGUoZHJhd2FibGVBdHRyKTsKKyAgICAgICAgaWYgKGQgIT0gbnVsbCkgeworICAgICAgICAgICAgcmVxdWVzdEZlYXR1cmUoZmVhdHVyZUlkKTsKKyAgICAgICAgICAgIHNldEZlYXR1cmVEZWZhdWx0RHJhd2FibGUoZmVhdHVyZUlkLCBkKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoKGdldEZlYXR1cmVzKCkgJiAoMSA8PCBmZWF0dXJlSWQpKSAhPSAwKSB7CisgICAgICAgICAgICBpbnQgYWxwaGEgPSBhdHRycy5nZXRJbnQoYWxwaGFBdHRyLCAtMSk7CisgICAgICAgICAgICBpZiAoYWxwaGEgPj0gMCkgeworICAgICAgICAgICAgICAgIHNldEZlYXR1cmVEcmF3YWJsZUFscGhhKGZlYXR1cmVJZCwgYWxwaGEpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHJvdGVjdGVkIFZpZXdHcm91cCBnZW5lcmF0ZUxheW91dChEZWNvclZpZXcgZGVjb3IpIHsKKyAgICAgICAgLy8gQXBwbHkgZGF0YSBmcm9tIGN1cnJlbnQgdGhlbWUuCisKKyAgICAgICAgVHlwZWRBcnJheSBhID0gZ2V0V2luZG93U3R5bGUoKTsKKworICAgICAgICBpZiAoZmFsc2UpIHsKKyAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRnJvbSBzdHlsZToiKTsKKyAgICAgICAgICAgIFN0cmluZyBzID0gIkF0dHJzOiI7CisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLldpbmRvdy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgIHMgPSBzICsgIiAiICsgSW50ZWdlci50b0hleFN0cmluZyhjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5XaW5kb3dbaV0pICsgIj0iCisgICAgICAgICAgICAgICAgICAgICAgICArIGEuZ2V0U3RyaW5nKGkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHMpOworICAgICAgICB9CisKKyAgICAgICAgbUlzRmxvYXRpbmcgPSBhLmdldEJvb2xlYW4oY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuV2luZG93X3dpbmRvd0lzRmxvYXRpbmcsIGZhbHNlKTsKKyAgICAgICAgaW50IGZsYWdzVG9VcGRhdGUgPSAoRkxBR19MQVlPVVRfSU5fU0NSRUVOfEZMQUdfTEFZT1VUX0lOU0VUX0RFQ09SKQorICAgICAgICAgICAgICAgICYgKH5nZXRGb3JjZWRXaW5kb3dGbGFncygpKTsKKyAgICAgICAgaWYgKG1Jc0Zsb2F0aW5nKSB7CisgICAgICAgICAgICBzZXRMYXlvdXQoV1JBUF9DT05URU5ULCBXUkFQX0NPTlRFTlQpOworICAgICAgICAgICAgc2V0RmxhZ3MoMCwgZmxhZ3NUb1VwZGF0ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzZXRGbGFncyhGTEFHX0xBWU9VVF9JTl9TQ1JFRU58RkxBR19MQVlPVVRfSU5TRVRfREVDT1IsIGZsYWdzVG9VcGRhdGUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGEuZ2V0Qm9vbGVhbihjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5XaW5kb3dfd2luZG93Tm9UaXRsZSwgZmFsc2UpKSB7CisgICAgICAgICAgICByZXF1ZXN0RmVhdHVyZShGRUFUVVJFX05PX1RJVExFKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChhLmdldEJvb2xlYW4oY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuV2luZG93X3dpbmRvd0Z1bGxzY3JlZW4sIGZhbHNlKSkgeworICAgICAgICAgICAgc2V0RmxhZ3MoRkxBR19GVUxMU0NSRUVOLCBGTEFHX0ZVTExTQ1JFRU4mKH5nZXRGb3JjZWRXaW5kb3dGbGFncygpKSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYS5nZXRCb29sZWFuKGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLldpbmRvd193aW5kb3dTaG93V2FsbHBhcGVyLCBmYWxzZSkpIHsKKyAgICAgICAgICAgIHNldEZsYWdzKEZMQUdfU0hPV19XQUxMUEFQRVIsIEZMQUdfU0hPV19XQUxMUEFQRVImKH5nZXRGb3JjZWRXaW5kb3dGbGFncygpKSk7CisgICAgICAgIH0KKworICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcyBwYXJhbXMgPSBnZXRBdHRyaWJ1dGVzKCk7CisKKyAgICAgICAgaWYgKCFoYXNTb2Z0SW5wdXRNb2RlKCkpIHsKKyAgICAgICAgICAgIHBhcmFtcy5zb2Z0SW5wdXRNb2RlID0gYS5nZXRJbnQoCisgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLldpbmRvd193aW5kb3dTb2Z0SW5wdXRNb2RlLAorICAgICAgICAgICAgICAgICAgICBwYXJhbXMuc29mdElucHV0TW9kZSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoYS5nZXRCb29sZWFuKGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLldpbmRvd19iYWNrZ3JvdW5kRGltRW5hYmxlZCwKKyAgICAgICAgICAgICAgICBtSXNGbG9hdGluZykpIHsKKyAgICAgICAgICAgIC8qIEFsbCBkaWFsb2dzIHNob3VsZCBoYXZlIHRoZSB3aW5kb3cgZGltbWVkICovCisgICAgICAgICAgICBpZiAoKGdldEZvcmNlZFdpbmRvd0ZsYWdzKCkmV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19ESU1fQkVISU5EKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgcGFyYW1zLmZsYWdzIHw9IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfRElNX0JFSElORDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHBhcmFtcy5kaW1BbW91bnQgPSBhLmdldEZsb2F0KAorICAgICAgICAgICAgICAgICAgICBhbmRyb2lkLlIuc3R5bGVhYmxlLldpbmRvd19iYWNrZ3JvdW5kRGltQW1vdW50LCAwLjVmKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChwYXJhbXMud2luZG93QW5pbWF0aW9ucyA9PSAwKSB7CisgICAgICAgICAgICBwYXJhbXMud2luZG93QW5pbWF0aW9ucyA9IGEuZ2V0UmVzb3VyY2VJZCgKKyAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuV2luZG93X3dpbmRvd0FuaW1hdGlvblN0eWxlLCAwKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFRoZSByZXN0IGFyZSBvbmx5IGRvbmUgaWYgdGhpcyB3aW5kb3cgaXMgbm90IGVtYmVkZGVkOyBvdGhlcndpc2UsCisgICAgICAgIC8vIHRoZSB2YWx1ZXMgYXJlIGluaGVyaXRlZCBmcm9tIG91ciBjb250YWluZXIuCisgICAgICAgIGlmIChnZXRDb250YWluZXIoKSA9PSBudWxsKSB7CisgICAgICAgICAgICBpZiAobUJhY2tncm91bmREcmF3YWJsZSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgaWYgKG1CYWNrZ3JvdW5kUmVzb3VyY2UgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICBtQmFja2dyb3VuZFJlc291cmNlID0gYS5nZXRSZXNvdXJjZUlkKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLldpbmRvd193aW5kb3dCYWNrZ3JvdW5kLCAwKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG1GcmFtZVJlc291cmNlID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgbUZyYW1lUmVzb3VyY2UgPSBhLmdldFJlc291cmNlSWQoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuV2luZG93X3dpbmRvd0ZyYW1lLCAwKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGZhbHNlKSB7CisgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQmFja2dyb3VuZDogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgSW50ZWdlci50b0hleFN0cmluZyhtQmFja2dyb3VuZFJlc291cmNlKSArICIgRnJhbWU6ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArIEludGVnZXIudG9IZXhTdHJpbmcobUZyYW1lUmVzb3VyY2UpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtVGV4dENvbG9yID0gYS5nZXRDb2xvcihjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5XaW5kb3dfdGV4dENvbG9yLCAweEZGMDAwMDAwKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEluZmxhdGUgdGhlIHdpbmRvdyBkZWNvci4KKworICAgICAgICBpbnQgbGF5b3V0UmVzb3VyY2U7CisgICAgICAgIGludCBmZWF0dXJlcyA9IGdldExvY2FsRmVhdHVyZXMoKTsKKyAgICAgICAgLy8gU3lzdGVtLm91dC5wcmludGxuKCJGZWF0dXJlczogMHgiICsgSW50ZWdlci50b0hleFN0cmluZyhmZWF0dXJlcykpOworICAgICAgICBpZiAoKGZlYXR1cmVzICYgKCgxIDw8IEZFQVRVUkVfTEVGVF9JQ09OKSB8ICgxIDw8IEZFQVRVUkVfUklHSFRfSUNPTikpKSAhPSAwKSB7CisgICAgICAgICAgICBpZiAobUlzRmxvYXRpbmcpIHsKKyAgICAgICAgICAgICAgICBsYXlvdXRSZXNvdXJjZSA9IGNvbS5hbmRyb2lkLmludGVybmFsLlIubGF5b3V0LmRpYWxvZ190aXRsZV9pY29uczsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbGF5b3V0UmVzb3VyY2UgPSBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmxheW91dC5zY3JlZW5fdGl0bGVfaWNvbnM7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oIlRpdGxlIEljb25zISIpOworICAgICAgICB9IGVsc2UgaWYgKChmZWF0dXJlcyAmICgoMSA8PCBGRUFUVVJFX1BST0dSRVNTKSB8ICgxIDw8IEZFQVRVUkVfSU5ERVRFUk1JTkFURV9QUk9HUkVTUykpKSAhPSAwKSB7CisgICAgICAgICAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIGEgd2luZG93IHdpdGggb25seSBhIHByb2dyZXNzIGJhciAoYW5kIHRpdGxlKS4KKyAgICAgICAgICAgIC8vIFhYWCBOZWVkIHRvIGhhdmUgYSBuby10aXRsZSB2ZXJzaW9uIG9mIGVtYmVkZGVkIHdpbmRvd3MuCisgICAgICAgICAgICBsYXlvdXRSZXNvdXJjZSA9IGNvbS5hbmRyb2lkLmludGVybmFsLlIubGF5b3V0LnNjcmVlbl9wcm9ncmVzczsKKyAgICAgICAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnRsbigiUHJvZ3Jlc3MhIik7CisgICAgICAgIH0gZWxzZSBpZiAoKGZlYXR1cmVzICYgKDEgPDwgRkVBVFVSRV9DVVNUT01fVElUTEUpKSAhPSAwKSB7CisgICAgICAgICAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIGEgd2luZG93IHdpdGggYSBjdXN0b20gdGl0bGUuCisgICAgICAgICAgICAvLyBJZiB0aGUgd2luZG93IGlzIGZsb2F0aW5nLCB3ZSBuZWVkIGEgZGlhbG9nIGxheW91dAorICAgICAgICAgICAgaWYgKG1Jc0Zsb2F0aW5nKSB7CisgICAgICAgICAgICAgICAgbGF5b3V0UmVzb3VyY2UgPSBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmxheW91dC5kaWFsb2dfY3VzdG9tX3RpdGxlOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBsYXlvdXRSZXNvdXJjZSA9IGNvbS5hbmRyb2lkLmludGVybmFsLlIubGF5b3V0LnNjcmVlbl9jdXN0b21fdGl0bGU7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoKGZlYXR1cmVzICYgKDEgPDwgRkVBVFVSRV9OT19USVRMRSkpID09IDApIHsKKyAgICAgICAgICAgIC8vIElmIG5vIG90aGVyIGZlYXR1cmVzIGFuZCBub3QgZW1iZWRkZWQsIG9ubHkgbmVlZCBhIHRpdGxlLgorICAgICAgICAgICAgLy8gSWYgdGhlIHdpbmRvdyBpcyBmbG9hdGluZywgd2UgbmVlZCBhIGRpYWxvZyBsYXlvdXQKKyAgICAgICAgICAgIGlmIChtSXNGbG9hdGluZykgeworICAgICAgICAgICAgICAgIGxheW91dFJlc291cmNlID0gY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5sYXlvdXQuZGlhbG9nX3RpdGxlOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBsYXlvdXRSZXNvdXJjZSA9IGNvbS5hbmRyb2lkLmludGVybmFsLlIubGF5b3V0LnNjcmVlbl90aXRsZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnRsbigiVGl0bGUhIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBFbWJlZGRlZCwgc28gbm8gZGVjb3JhdGlvbiBpcyBuZWVkZWQuCisgICAgICAgICAgICBsYXlvdXRSZXNvdXJjZSA9IGNvbS5hbmRyb2lkLmludGVybmFsLlIubGF5b3V0LnNjcmVlbl9zaW1wbGU7CisgICAgICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oIlNpbXBsZSEiKTsKKyAgICAgICAgfQorCisgICAgICAgIG1EZWNvci5zdGFydENoYW5naW5nKCk7CisKKyAgICAgICAgVmlldyBpbiA9IG1MYXlvdXRJbmZsYXRlci5pbmZsYXRlKGxheW91dFJlc291cmNlLCBudWxsKTsKKyAgICAgICAgZGVjb3IuYWRkVmlldyhpbiwgbmV3IFZpZXdHcm91cC5MYXlvdXRQYXJhbXMoTUFUQ0hfUEFSRU5ULCBNQVRDSF9QQVJFTlQpKTsKKworICAgICAgICBWaWV3R3JvdXAgY29udGVudFBhcmVudCA9IChWaWV3R3JvdXApZmluZFZpZXdCeUlkKElEX0FORFJPSURfQ09OVEVOVCk7CisgICAgICAgIGlmIChjb250ZW50UGFyZW50ID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJXaW5kb3cgY291bGRuJ3QgZmluZCBjb250ZW50IGNvbnRhaW5lciB2aWV3Iik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoKGZlYXR1cmVzICYgKDEgPDwgRkVBVFVSRV9JTkRFVEVSTUlOQVRFX1BST0dSRVNTKSkgIT0gMCkgeworICAgICAgICAgICAgUHJvZ3Jlc3NCYXIgcHJvZ3Jlc3MgPSBnZXRDaXJjdWxhclByb2dyZXNzQmFyKGZhbHNlKTsKKyAgICAgICAgICAgIGlmIChwcm9ncmVzcyAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgcHJvZ3Jlc3Muc2V0SW5kZXRlcm1pbmF0ZSh0cnVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFJlbWFpbmluZyBzZXR1cCAtLSBvZiBiYWNrZ3JvdW5kIGFuZCB0aXRsZSAtLSB0aGF0IG9ubHkgYXBwbGllcworICAgICAgICAvLyB0byB0b3AtbGV2ZWwgd2luZG93cy4KKyAgICAgICAgaWYgKGdldENvbnRhaW5lcigpID09IG51bGwpIHsKKyAgICAgICAgICAgIERyYXdhYmxlIGRyYXdhYmxlID0gbUJhY2tncm91bmREcmF3YWJsZTsKKyAgICAgICAgICAgIGlmIChtQmFja2dyb3VuZFJlc291cmNlICE9IDApIHsKKyAgICAgICAgICAgICAgICBkcmF3YWJsZSA9IGdldENvbnRleHQoKS5nZXRSZXNvdXJjZXMoKS5nZXREcmF3YWJsZShtQmFja2dyb3VuZFJlc291cmNlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1EZWNvci5zZXRXaW5kb3dCYWNrZ3JvdW5kKGRyYXdhYmxlKTsKKyAgICAgICAgICAgIGRyYXdhYmxlID0gbnVsbDsKKyAgICAgICAgICAgIGlmIChtRnJhbWVSZXNvdXJjZSAhPSAwKSB7CisgICAgICAgICAgICAgICAgZHJhd2FibGUgPSBnZXRDb250ZXh0KCkuZ2V0UmVzb3VyY2VzKCkuZ2V0RHJhd2FibGUobUZyYW1lUmVzb3VyY2UpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbURlY29yLnNldFdpbmRvd0ZyYW1lKGRyYXdhYmxlKTsKKworICAgICAgICAgICAgLy8gU3lzdGVtLm91dC5wcmludGxuKCJUZXh0PSIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG1UZXh0Q29sb3IpICsKKyAgICAgICAgICAgIC8vICIgU2VsPSIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG1UZXh0U2VsZWN0ZWRDb2xvcikgKworICAgICAgICAgICAgLy8gIiBUaXRsZT0iICsgSW50ZWdlci50b0hleFN0cmluZyhtVGl0bGVDb2xvcikpOworCisgICAgICAgICAgICBpZiAobVRpdGxlQ29sb3IgPT0gMCkgeworICAgICAgICAgICAgICAgIG1UaXRsZUNvbG9yID0gbVRleHRDb2xvcjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKG1UaXRsZSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgc2V0VGl0bGUobVRpdGxlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNldFRpdGxlQ29sb3IobVRpdGxlQ29sb3IpOworICAgICAgICB9CisKKyAgICAgICAgbURlY29yLmZpbmlzaENoYW5naW5nKCk7CisKKyAgICAgICAgcmV0dXJuIGNvbnRlbnRQYXJlbnQ7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGluc3RhbGxEZWNvcigpIHsKKyAgICAgICAgaWYgKG1EZWNvciA9PSBudWxsKSB7CisgICAgICAgICAgICBtRGVjb3IgPSBnZW5lcmF0ZURlY29yKCk7CisgICAgICAgICAgICBtRGVjb3Iuc2V0RGVzY2VuZGFudEZvY3VzYWJpbGl0eShWaWV3R3JvdXAuRk9DVVNfQUZURVJfREVTQ0VOREFOVFMpOworICAgICAgICAgICAgbURlY29yLnNldElzUm9vdE5hbWVzcGFjZSh0cnVlKTsKKyAgICAgICAgfQorICAgICAgICBpZiAobUNvbnRlbnRQYXJlbnQgPT0gbnVsbCkgeworICAgICAgICAgICAgbUNvbnRlbnRQYXJlbnQgPSBnZW5lcmF0ZUxheW91dChtRGVjb3IpOworCisgICAgICAgICAgICBtVGl0bGVWaWV3ID0gKFRleHRWaWV3KWZpbmRWaWV3QnlJZChjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmlkLnRpdGxlKTsKKyAgICAgICAgICAgIGlmIChtVGl0bGVWaWV3ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBpZiAoKGdldExvY2FsRmVhdHVyZXMoKSAmICgxIDw8IEZFQVRVUkVfTk9fVElUTEUpKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIFZpZXcgdGl0bGVDb250YWluZXIgPSBmaW5kVmlld0J5SWQoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5pZC50aXRsZV9jb250YWluZXIpOworICAgICAgICAgICAgICAgICAgICBpZiAodGl0bGVDb250YWluZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGVDb250YWluZXIuc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgbVRpdGxlVmlldy5zZXRWaXNpYmlsaXR5KFZpZXcuR09ORSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKG1Db250ZW50UGFyZW50IGluc3RhbmNlb2YgRnJhbWVMYXlvdXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICgoRnJhbWVMYXlvdXQpbUNvbnRlbnRQYXJlbnQpLnNldEZvcmVncm91bmQobnVsbCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBtVGl0bGVWaWV3LnNldFRleHQobVRpdGxlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIERyYXdhYmxlIGxvYWRJbWFnZVVSSShVcmkgdXJpKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gRHJhd2FibGUuY3JlYXRlRnJvbVN0cmVhbSgKKyAgICAgICAgICAgICAgICAgICAgZ2V0Q29udGV4dCgpLmdldENvbnRlbnRSZXNvbHZlcigpLm9wZW5JbnB1dFN0cmVhbSh1cmkpLCBudWxsKTsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIExvZy53KFRBRywgIlVuYWJsZSB0byBvcGVuIGNvbnRlbnQ6ICIgKyB1cmkpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIHByaXZhdGUgRHJhd2FibGVGZWF0dXJlU3RhdGUgZ2V0RHJhd2FibGVTdGF0ZShpbnQgZmVhdHVyZUlkLCBib29sZWFuIHJlcXVpcmVkKSB7CisgICAgICAgIGlmICgoZ2V0RmVhdHVyZXMoKSAmICgxIDw8IGZlYXR1cmVJZCkpID09IDApIHsKKyAgICAgICAgICAgIGlmICghcmVxdWlyZWQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJUaGUgZmVhdHVyZSBoYXMgbm90IGJlZW4gcmVxdWVzdGVkIik7CisgICAgICAgIH0KKworICAgICAgICBEcmF3YWJsZUZlYXR1cmVTdGF0ZVtdIGFyOworICAgICAgICBpZiAoKGFyID0gbURyYXdhYmxlcykgPT0gbnVsbCB8fCBhci5sZW5ndGggPD0gZmVhdHVyZUlkKSB7CisgICAgICAgICAgICBEcmF3YWJsZUZlYXR1cmVTdGF0ZVtdIG5hciA9IG5ldyBEcmF3YWJsZUZlYXR1cmVTdGF0ZVtmZWF0dXJlSWQgKyAxXTsKKyAgICAgICAgICAgIGlmIChhciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShhciwgMCwgbmFyLCAwLCBhci5sZW5ndGgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbURyYXdhYmxlcyA9IGFyID0gbmFyOworICAgICAgICB9CisKKyAgICAgICAgRHJhd2FibGVGZWF0dXJlU3RhdGUgc3QgPSBhcltmZWF0dXJlSWRdOworICAgICAgICBpZiAoc3QgPT0gbnVsbCkgeworICAgICAgICAgICAgYXJbZmVhdHVyZUlkXSA9IHN0ID0gbmV3IERyYXdhYmxlRmVhdHVyZVN0YXRlKGZlYXR1cmVJZCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHN0OworICAgIH0KKworICAgIC8qKgorICAgICAqIEdldHMgYSBwYW5lbCdzIHN0YXRlIGJhc2VkIG9uIGl0cyBmZWF0dXJlIElELgorICAgICAqCisgICAgICogQHBhcmFtIGZlYXR1cmVJZCBUaGUgZmVhdHVyZSBJRCBvZiB0aGUgcGFuZWwuCisgICAgICogQHBhcmFtIHJlcXVpcmVkIFdoZXRoZXIgdGhlIHBhbmVsIGlzIHJlcXVpcmVkIChpZiBpdCBpcyByZXF1aXJlZCBhbmQgaXQKKyAgICAgKiAgICAgICAgICAgIGlzbid0IGluIG91ciBmZWF0dXJlcywgdGhpcyB0aHJvd3MgYW4gZXhjZXB0aW9uKS4KKyAgICAgKiBAcmV0dXJuIFRoZSBwYW5lbCBzdGF0ZS4KKyAgICAgKi8KKyAgICBwcml2YXRlIFBhbmVsRmVhdHVyZVN0YXRlIGdldFBhbmVsU3RhdGUoaW50IGZlYXR1cmVJZCwgYm9vbGVhbiByZXF1aXJlZCkgeworICAgICAgICByZXR1cm4gZ2V0UGFuZWxTdGF0ZShmZWF0dXJlSWQsIHJlcXVpcmVkLCBudWxsKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBHZXRzIGEgcGFuZWwncyBzdGF0ZSBiYXNlZCBvbiBpdHMgZmVhdHVyZSBJRC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBmZWF0dXJlSWQgVGhlIGZlYXR1cmUgSUQgb2YgdGhlIHBhbmVsLgorICAgICAqIEBwYXJhbSByZXF1aXJlZCBXaGV0aGVyIHRoZSBwYW5lbCBpcyByZXF1aXJlZCAoaWYgaXQgaXMgcmVxdWlyZWQgYW5kIGl0CisgICAgICogICAgICAgICAgICBpc24ndCBpbiBvdXIgZmVhdHVyZXMsIHRoaXMgdGhyb3dzIGFuIGV4Y2VwdGlvbikuCisgICAgICogQHBhcmFtIGNvbnZlcnRQYW5lbFN0YXRlIE9wdGlvbmFsOiBJZiB0aGUgcGFuZWwgc3RhdGUgZG9lcyBub3QgZXhpc3QsIHVzZQorICAgICAqICAgICAgICAgICAgdGhpcyBhcyB0aGUgcGFuZWwgc3RhdGUuCisgICAgICogQHJldHVybiBUaGUgcGFuZWwgc3RhdGUuCisgICAgICovCisgICAgcHJpdmF0ZSBQYW5lbEZlYXR1cmVTdGF0ZSBnZXRQYW5lbFN0YXRlKGludCBmZWF0dXJlSWQsIGJvb2xlYW4gcmVxdWlyZWQsCisgICAgICAgICAgICBQYW5lbEZlYXR1cmVTdGF0ZSBjb252ZXJ0UGFuZWxTdGF0ZSkgeworICAgICAgICBpZiAoKGdldEZlYXR1cmVzKCkgJiAoMSA8PCBmZWF0dXJlSWQpKSA9PSAwKSB7CisgICAgICAgICAgICBpZiAoIXJlcXVpcmVkKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigiVGhlIGZlYXR1cmUgaGFzIG5vdCBiZWVuIHJlcXVlc3RlZCIpOworICAgICAgICB9CisKKyAgICAgICAgUGFuZWxGZWF0dXJlU3RhdGVbXSBhcjsKKyAgICAgICAgaWYgKChhciA9IG1QYW5lbHMpID09IG51bGwgfHwgYXIubGVuZ3RoIDw9IGZlYXR1cmVJZCkgeworICAgICAgICAgICAgUGFuZWxGZWF0dXJlU3RhdGVbXSBuYXIgPSBuZXcgUGFuZWxGZWF0dXJlU3RhdGVbZmVhdHVyZUlkICsgMV07CisgICAgICAgICAgICBpZiAoYXIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoYXIsIDAsIG5hciwgMCwgYXIubGVuZ3RoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1QYW5lbHMgPSBhciA9IG5hcjsKKyAgICAgICAgfQorCisgICAgICAgIFBhbmVsRmVhdHVyZVN0YXRlIHN0ID0gYXJbZmVhdHVyZUlkXTsKKyAgICAgICAgaWYgKHN0ID09IG51bGwpIHsKKyAgICAgICAgICAgIGFyW2ZlYXR1cmVJZF0gPSBzdCA9IChjb252ZXJ0UGFuZWxTdGF0ZSAhPSBudWxsKQorICAgICAgICAgICAgICAgICAgICA/IGNvbnZlcnRQYW5lbFN0YXRlCisgICAgICAgICAgICAgICAgICAgIDogbmV3IFBhbmVsRmVhdHVyZVN0YXRlKGZlYXR1cmVJZCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHN0OworICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBmaW5hbCB2b2lkIHNldENoaWxkRHJhd2FibGUoaW50IGZlYXR1cmVJZCwgRHJhd2FibGUgZHJhd2FibGUpIHsKKyAgICAgICAgRHJhd2FibGVGZWF0dXJlU3RhdGUgc3QgPSBnZXREcmF3YWJsZVN0YXRlKGZlYXR1cmVJZCwgdHJ1ZSk7CisgICAgICAgIHN0LmNoaWxkID0gZHJhd2FibGU7CisgICAgICAgIHVwZGF0ZURyYXdhYmxlKGZlYXR1cmVJZCwgc3QsIGZhbHNlKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgZmluYWwgdm9pZCBzZXRDaGlsZEludChpbnQgZmVhdHVyZUlkLCBpbnQgdmFsdWUpIHsKKyAgICAgICAgdXBkYXRlSW50KGZlYXR1cmVJZCwgdmFsdWUsIGZhbHNlKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgYm9vbGVhbiBpc1Nob3J0Y3V0S2V5KGludCBrZXlDb2RlLCBLZXlFdmVudCBldmVudCkgeworICAgICAgICBQYW5lbEZlYXR1cmVTdGF0ZSBzdCA9IGdldFBhbmVsU3RhdGUoRkVBVFVSRV9PUFRJT05TX1BBTkVMLCB0cnVlKTsKKyAgICAgICAgcmV0dXJuIHN0Lm1lbnUgIT0gbnVsbCAmJiBzdC5tZW51LmlzU2hvcnRjdXRLZXkoa2V5Q29kZSwgZXZlbnQpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCB1cGRhdGVEcmF3YWJsZShpbnQgZmVhdHVyZUlkLCBEcmF3YWJsZUZlYXR1cmVTdGF0ZSBzdCwgYm9vbGVhbiBmcm9tUmVzdW1lKSB7CisgICAgICAgIC8vIERvIG5vdGhpbmcgaWYgdGhlIGRlY29yIGlzIG5vdCB5ZXQgaW5zdGFsbGVkLi4uIGFuIHVwZGF0ZSB3aWxsCisgICAgICAgIC8vIG5lZWQgdG8gYmUgZm9yY2VkIHdoZW4gd2UgZXZlbnR1YWxseSBiZWNvbWUgYWN0aXZlLgorICAgICAgICBpZiAobUNvbnRlbnRQYXJlbnQgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZmluYWwgaW50IGZlYXR1cmVNYXNrID0gMSA8PCBmZWF0dXJlSWQ7CisKKyAgICAgICAgaWYgKChnZXRGZWF0dXJlcygpICYgZmVhdHVyZU1hc2spID09IDAgJiYgIWZyb21SZXN1bWUpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIERyYXdhYmxlIGRyYXdhYmxlID0gbnVsbDsKKyAgICAgICAgaWYgKHN0ICE9IG51bGwpIHsKKyAgICAgICAgICAgIGRyYXdhYmxlID0gc3QuY2hpbGQ7CisgICAgICAgICAgICBpZiAoZHJhd2FibGUgPT0gbnVsbCkKKyAgICAgICAgICAgICAgICBkcmF3YWJsZSA9IHN0LmxvY2FsOworICAgICAgICAgICAgaWYgKGRyYXdhYmxlID09IG51bGwpCisgICAgICAgICAgICAgICAgZHJhd2FibGUgPSBzdC5kZWY7CisgICAgICAgIH0KKyAgICAgICAgaWYgKChnZXRMb2NhbEZlYXR1cmVzKCkgJiBmZWF0dXJlTWFzaykgPT0gMCkgeworICAgICAgICAgICAgaWYgKGdldENvbnRhaW5lcigpICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBpZiAoaXNBY3RpdmUoKSB8fCBmcm9tUmVzdW1lKSB7CisgICAgICAgICAgICAgICAgICAgIGdldENvbnRhaW5lcigpLnNldENoaWxkRHJhd2FibGUoZmVhdHVyZUlkLCBkcmF3YWJsZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKHN0ICE9IG51bGwgJiYgKHN0LmN1ciAhPSBkcmF3YWJsZSB8fCBzdC5jdXJBbHBoYSAhPSBzdC5hbHBoYSkpIHsKKyAgICAgICAgICAgIC8vIFN5c3RlbS5vdXQucHJpbnRsbigiRHJhd2FibGUgY2hhbmdlZDogb2xkPSIgKyBzdC5jdXIKKyAgICAgICAgICAgIC8vICsgIiwgbmV3PSIgKyBkcmF3YWJsZSk7CisgICAgICAgICAgICBzdC5jdXIgPSBkcmF3YWJsZTsKKyAgICAgICAgICAgIHN0LmN1ckFscGhhID0gc3QuYWxwaGE7CisgICAgICAgICAgICBvbkRyYXdhYmxlQ2hhbmdlZChmZWF0dXJlSWQsIGRyYXdhYmxlLCBzdC5hbHBoYSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgdXBkYXRlSW50KGludCBmZWF0dXJlSWQsIGludCB2YWx1ZSwgYm9vbGVhbiBmcm9tUmVzdW1lKSB7CisKKyAgICAgICAgLy8gRG8gbm90aGluZyBpZiB0aGUgZGVjb3IgaXMgbm90IHlldCBpbnN0YWxsZWQuLi4gYW4gdXBkYXRlIHdpbGwKKyAgICAgICAgLy8gbmVlZCB0byBiZSBmb3JjZWQgd2hlbiB3ZSBldmVudHVhbGx5IGJlY29tZSBhY3RpdmUuCisgICAgICAgIGlmIChtQ29udGVudFBhcmVudCA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBmaW5hbCBpbnQgZmVhdHVyZU1hc2sgPSAxIDw8IGZlYXR1cmVJZDsKKworICAgICAgICBpZiAoKGdldEZlYXR1cmVzKCkgJiBmZWF0dXJlTWFzaykgPT0gMCAmJiAhZnJvbVJlc3VtZSkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKChnZXRMb2NhbEZlYXR1cmVzKCkgJiBmZWF0dXJlTWFzaykgPT0gMCkgeworICAgICAgICAgICAgaWYgKGdldENvbnRhaW5lcigpICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBnZXRDb250YWluZXIoKS5zZXRDaGlsZEludChmZWF0dXJlSWQsIHZhbHVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG9uSW50Q2hhbmdlZChmZWF0dXJlSWQsIHZhbHVlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgSW1hZ2VWaWV3IGdldExlZnRJY29uVmlldygpIHsKKyAgICAgICAgaWYgKG1MZWZ0SWNvblZpZXcgIT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIG1MZWZ0SWNvblZpZXc7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1Db250ZW50UGFyZW50ID09IG51bGwpIHsKKyAgICAgICAgICAgIGluc3RhbGxEZWNvcigpOworICAgICAgICB9CisgICAgICAgIHJldHVybiAobUxlZnRJY29uVmlldyA9IChJbWFnZVZpZXcpZmluZFZpZXdCeUlkKGNvbS5hbmRyb2lkLmludGVybmFsLlIuaWQubGVmdF9pY29uKSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBQcm9ncmVzc0JhciBnZXRDaXJjdWxhclByb2dyZXNzQmFyKGJvb2xlYW4gc2hvdWxkSW5zdGFsbERlY29yKSB7CisgICAgICAgIGlmIChtQ2lyY3VsYXJQcm9ncmVzc0JhciAhPSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gbUNpcmN1bGFyUHJvZ3Jlc3NCYXI7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1Db250ZW50UGFyZW50ID09IG51bGwgJiYgc2hvdWxkSW5zdGFsbERlY29yKSB7CisgICAgICAgICAgICBpbnN0YWxsRGVjb3IoKTsKKyAgICAgICAgfQorICAgICAgICBtQ2lyY3VsYXJQcm9ncmVzc0JhciA9IChQcm9ncmVzc0JhcilmaW5kVmlld0J5SWQoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5pZC5wcm9ncmVzc19jaXJjdWxhcik7CisgICAgICAgIG1DaXJjdWxhclByb2dyZXNzQmFyLnNldFZpc2liaWxpdHkoVmlldy5JTlZJU0lCTEUpOworICAgICAgICByZXR1cm4gbUNpcmN1bGFyUHJvZ3Jlc3NCYXI7CisgICAgfQorCisgICAgcHJpdmF0ZSBQcm9ncmVzc0JhciBnZXRIb3Jpem9udGFsUHJvZ3Jlc3NCYXIoYm9vbGVhbiBzaG91bGRJbnN0YWxsRGVjb3IpIHsKKyAgICAgICAgaWYgKG1Ib3Jpem9udGFsUHJvZ3Jlc3NCYXIgIT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIG1Ib3Jpem9udGFsUHJvZ3Jlc3NCYXI7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1Db250ZW50UGFyZW50ID09IG51bGwgJiYgc2hvdWxkSW5zdGFsbERlY29yKSB7CisgICAgICAgICAgICBpbnN0YWxsRGVjb3IoKTsKKyAgICAgICAgfQorICAgICAgICBtSG9yaXpvbnRhbFByb2dyZXNzQmFyID0gKFByb2dyZXNzQmFyKWZpbmRWaWV3QnlJZChjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmlkLnByb2dyZXNzX2hvcml6b250YWwpOworICAgICAgICBtSG9yaXpvbnRhbFByb2dyZXNzQmFyLnNldFZpc2liaWxpdHkoVmlldy5JTlZJU0lCTEUpOworICAgICAgICByZXR1cm4gbUhvcml6b250YWxQcm9ncmVzc0JhcjsKKyAgICB9CisKKyAgICBwcml2YXRlIEltYWdlVmlldyBnZXRSaWdodEljb25WaWV3KCkgeworICAgICAgICBpZiAobVJpZ2h0SWNvblZpZXcgIT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIG1SaWdodEljb25WaWV3OworICAgICAgICB9CisgICAgICAgIGlmIChtQ29udGVudFBhcmVudCA9PSBudWxsKSB7CisgICAgICAgICAgICBpbnN0YWxsRGVjb3IoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gKG1SaWdodEljb25WaWV3ID0gKEltYWdlVmlldylmaW5kVmlld0J5SWQoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5pZC5yaWdodF9pY29uKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogSGVscGVyIG1ldGhvZCBmb3IgY2FsbGluZyB0aGUge0BsaW5rIENhbGxiYWNrI29uUGFuZWxDbG9zZWQoaW50LCBNZW51KX0KKyAgICAgKiBjYWxsYmFjay4gVGhpcyBtZXRob2Qgd2lsbCBncmFiIHdoYXRldmVyIGV4dHJhIHN0YXRlIGlzIG5lZWRlZCBmb3IgdGhlCisgICAgICogY2FsbGJhY2sgdGhhdCBpc24ndCBnaXZlbiBpbiB0aGUgcGFyYW1ldGVycy4gSWYgdGhlIHBhbmVsIGlzIG5vdCBvcGVuLAorICAgICAqIHRoaXMgd2lsbCBub3QgcGVyZm9ybSB0aGUgY2FsbGJhY2suCisgICAgICoKKyAgICAgKiBAcGFyYW0gZmVhdHVyZUlkIEZlYXR1cmUgSUQgb2YgdGhlIHBhbmVsIHRoYXQgd2FzIGNsb3NlZC4gTXVzdCBiZSBnaXZlbi4KKyAgICAgKiBAcGFyYW0gcGFuZWwgUGFuZWwgdGhhdCB3YXMgY2xvc2VkLiBPcHRpb25hbCBidXQgdXNlZnVsIGlmIHRoZXJlIGlzIG5vCisgICAgICogICAgICAgICAgICBtZW51IGdpdmVuLgorICAgICAqIEBwYXJhbSBtZW51IFRoZSBtZW51IHRoYXQgd2FzIGNsb3NlZC4gT3B0aW9uYWwsIGJ1dCBnaXZlIGlmIHlvdSBoYXZlLgorICAgICAqLworICAgIHByaXZhdGUgdm9pZCBjYWxsT25QYW5lbENsb3NlZChpbnQgZmVhdHVyZUlkLCBQYW5lbEZlYXR1cmVTdGF0ZSBwYW5lbCwgTWVudSBtZW51KSB7CisgICAgICAgIGZpbmFsIENhbGxiYWNrIGNiID0gZ2V0Q2FsbGJhY2soKTsKKyAgICAgICAgaWYgKGNiID09IG51bGwpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLy8gVHJ5IHRvIGdldCBhIG1lbnUKKyAgICAgICAgaWYgKG1lbnUgPT0gbnVsbCkgeworICAgICAgICAgICAgLy8gTmVlZCBhIHBhbmVsIHRvIGdyYWIgdGhlIG1lbnUsIHNvIHRyeSB0byBnZXQgdGhhdAorICAgICAgICAgICAgaWYgKHBhbmVsID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBpZiAoKGZlYXR1cmVJZCA+PSAwKSAmJiAoZmVhdHVyZUlkIDwgbVBhbmVscy5sZW5ndGgpKSB7CisgICAgICAgICAgICAgICAgICAgIHBhbmVsID0gbVBhbmVsc1tmZWF0dXJlSWRdOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKHBhbmVsICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAvLyBtZW51IHN0aWxsIG1heSBiZSBudWxsLCB3aGljaCBpcyBva2F5LS13ZSB0cmllZCBvdXIgYmVzdAorICAgICAgICAgICAgICAgIG1lbnUgPSBwYW5lbC5tZW51OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgdGhlIHBhbmVsIGlzIG5vdCBvcGVuLCBkbyBub3QgY2FsbGJhY2sKKyAgICAgICAgaWYgKChwYW5lbCAhPSBudWxsKSAmJiAoIXBhbmVsLmlzT3BlbikpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgY2Iub25QYW5lbENsb3NlZChmZWF0dXJlSWQsIG1lbnUpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEhlbHBlciBtZXRob2QgZm9yIGFkZGluZyBsYXVuY2gtc2VhcmNoIHRvIG1vc3QgYXBwbGljYXRpb25zLiBPcGVucyB0aGUKKyAgICAgKiBzZWFyY2ggd2luZG93IHVzaW5nIGRlZmF1bHQgc2V0dGluZ3MuCisgICAgICoKKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgc2VhcmNoIHdpbmRvdyBvcGVuZWQKKyAgICAgKi8KKyAgICBwcml2YXRlIGJvb2xlYW4gbGF1bmNoRGVmYXVsdFNlYXJjaCgpIHsKKyAgICAgICAgZmluYWwgQ2FsbGJhY2sgY2IgPSBnZXRDYWxsYmFjaygpOworICAgICAgICBpZiAoY2IgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc2VuZENsb3NlU3lzdGVtV2luZG93cygic2VhcmNoIik7CisgICAgICAgICAgICByZXR1cm4gY2Iub25TZWFyY2hSZXF1ZXN0ZWQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIHNldFZvbHVtZUNvbnRyb2xTdHJlYW0oaW50IHN0cmVhbVR5cGUpIHsKKyAgICAgICAgbVZvbHVtZUNvbnRyb2xTdHJlYW1UeXBlID0gc3RyZWFtVHlwZTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgaW50IGdldFZvbHVtZUNvbnRyb2xTdHJlYW0oKSB7CisgICAgICAgIHJldHVybiBtVm9sdW1lQ29udHJvbFN0cmVhbVR5cGU7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2xhc3MgRHJhd2FibGVGZWF0dXJlU3RhdGUgeworICAgICAgICBEcmF3YWJsZUZlYXR1cmVTdGF0ZShpbnQgX2ZlYXR1cmVJZCkgeworICAgICAgICAgICAgZmVhdHVyZUlkID0gX2ZlYXR1cmVJZDsKKyAgICAgICAgfQorCisgICAgICAgIGZpbmFsIGludCBmZWF0dXJlSWQ7CisKKyAgICAgICAgaW50IHJlc2lkOworCisgICAgICAgIFVyaSB1cmk7CisKKyAgICAgICAgRHJhd2FibGUgbG9jYWw7CisKKyAgICAgICAgRHJhd2FibGUgY2hpbGQ7CisKKyAgICAgICAgRHJhd2FibGUgZGVmOworCisgICAgICAgIERyYXdhYmxlIGN1cjsKKworICAgICAgICBpbnQgYWxwaGEgPSAyNTU7CisKKyAgICAgICAgaW50IGN1ckFscGhhID0gMjU1OworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNsYXNzIFBhbmVsRmVhdHVyZVN0YXRlIHsKKworICAgICAgICAvKiogRmVhdHVyZSBJRCBmb3IgdGhpcyBwYW5lbC4gKi8KKyAgICAgICAgaW50IGZlYXR1cmVJZDsKKworICAgICAgICAvLyBJbmZvcm1hdGlvbiBwdWxsZWQgZnJvbSB0aGUgc3R5bGUgZm9yIHRoaXMgcGFuZWwuCisKKyAgICAgICAgaW50IGJhY2tncm91bmQ7CisKKyAgICAgICAgLyoqIFRoZSBiYWNrZ3JvdW5kIHdoZW4gdGhlIHBhbmVsIHNwYW5zIHRoZSBlbnRpcmUgYXZhaWxhYmxlIHdpZHRoLiAqLworICAgICAgICBpbnQgZnVsbEJhY2tncm91bmQ7CisKKyAgICAgICAgaW50IGdyYXZpdHk7CisKKyAgICAgICAgaW50IHg7CisKKyAgICAgICAgaW50IHk7CisKKyAgICAgICAgaW50IHdpbmRvd0FuaW1hdGlvbnM7CisKKyAgICAgICAgLyoqIER5bmFtaWMgc3RhdGUgb2YgdGhlIHBhbmVsLiAqLworICAgICAgICBEZWNvclZpZXcgZGVjb3JWaWV3OworCisgICAgICAgIC8qKiBUaGUgcGFuZWwgdGhhdCB3YXMgcmV0dXJuZWQgYnkgb25DcmVhdGVQYW5lbFZpZXcoKS4gKi8KKyAgICAgICAgVmlldyBjcmVhdGVkUGFuZWxWaWV3OworCisgICAgICAgIC8qKiBUaGUgcGFuZWwgdGhhdCB3ZSBhcmUgYWN0dWFsbHkgc2hvd2luZy4gKi8KKyAgICAgICAgVmlldyBzaG93blBhbmVsVmlldzsKKworICAgICAgICAvKiogVXNlIHtAbGluayAjc2V0TWVudX0gdG8gc2V0IHRoaXMuICovCisgICAgICAgIE1lbnUgbWVudTsKKworICAgICAgICAvKioKKyAgICAgICAgICogV2hldGhlciB0aGUgcGFuZWwgaGFzIGJlZW4gcHJlcGFyZWQgKHNlZQorICAgICAgICAgKiB7QGxpbmsgUGhvbmVXaW5kb3cjcHJlcGFyZVBhbmVsfSkuCisgICAgICAgICAqLworICAgICAgICBib29sZWFuIGlzUHJlcGFyZWQ7CisKKyAgICAgICAgLyoqCisgICAgICAgICAqIFdoZXRoZXIgYW4gaXRlbSdzIGFjdGlvbiBoYXMgYmVlbiBwZXJmb3JtZWQuIFRoaXMgaGFwcGVucyBpbiBvYnZpb3VzCisgICAgICAgICAqIHNjZW5hcmlvcyAodXNlciBjbGlja3Mgb24gbWVudSBpdGVtKSwgYnV0IGNhbiBhbHNvIGhhcHBlbiB3aXRoCisgICAgICAgICAqIGNob3JkaW5nIG1lbnUrKHNob3J0Y3V0IGtleSkuCisgICAgICAgICAqLworICAgICAgICBib29sZWFuIGlzSGFuZGxlZDsKKworICAgICAgICBib29sZWFuIGlzT3BlbjsKKworICAgICAgICAvKioKKyAgICAgICAgICogVHJ1ZSBpZiB0aGUgbWVudSBpcyBpbiBleHBhbmRlZCBtb2RlLCBmYWxzZSBpZiB0aGUgbWVudSBpcyBpbiBpY29uCisgICAgICAgICAqIG1vZGUKKyAgICAgICAgICovCisgICAgICAgIGJvb2xlYW4gaXNJbkV4cGFuZGVkTW9kZTsKKworICAgICAgICBwdWJsaWMgYm9vbGVhbiBxd2VydHlNb2RlOworCisgICAgICAgIGJvb2xlYW4gcmVmcmVzaERlY29yVmlldzsKKworICAgICAgICBib29sZWFuIHdhc0xhc3RPcGVuOworICAgICAgICAKKyAgICAgICAgYm9vbGVhbiB3YXNMYXN0RXhwYW5kZWQ7CisgICAgICAgIAorICAgICAgICAvKioKKyAgICAgICAgICogQ29udGFpbnMgdGhlIHN0YXRlIG9mIHRoZSBtZW51IHdoZW4gdG9sZCB0byBmcmVlemUuCisgICAgICAgICAqLworICAgICAgICBCdW5kbGUgZnJvemVuTWVudVN0YXRlOworCisgICAgICAgIFBhbmVsRmVhdHVyZVN0YXRlKGludCBmZWF0dXJlSWQpIHsKKyAgICAgICAgICAgIHRoaXMuZmVhdHVyZUlkID0gZmVhdHVyZUlkOworCisgICAgICAgICAgICByZWZyZXNoRGVjb3JWaWV3ID0gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIHNldFN0eWxlKENvbnRleHQgY29udGV4dCkgeworICAgICAgICAgICAgVHlwZWRBcnJheSBhID0gY29udGV4dC5vYnRhaW5TdHlsZWRBdHRyaWJ1dGVzKGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLlRoZW1lKTsKKyAgICAgICAgICAgIGJhY2tncm91bmQgPSBhLmdldFJlc291cmNlSWQoCisgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLlRoZW1lX3BhbmVsQmFja2dyb3VuZCwgMCk7CisgICAgICAgICAgICBmdWxsQmFja2dyb3VuZCA9IGEuZ2V0UmVzb3VyY2VJZCgKKyAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuVGhlbWVfcGFuZWxGdWxsQmFja2dyb3VuZCwgMCk7CisgICAgICAgICAgICB3aW5kb3dBbmltYXRpb25zID0gYS5nZXRSZXNvdXJjZUlkKAorICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5UaGVtZV93aW5kb3dBbmltYXRpb25TdHlsZSwgMCk7CisgICAgICAgICAgICBhLnJlY3ljbGUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgc2V0TWVudShNZW51IG1lbnUpIHsKKyAgICAgICAgICAgIHRoaXMubWVudSA9IG1lbnU7CisKKyAgICAgICAgICAgIGlmIChmcm96ZW5NZW51U3RhdGUgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICgoTWVudUJ1aWxkZXIpIG1lbnUpLnJlc3RvcmVIaWVyYXJjaHlTdGF0ZShmcm96ZW5NZW51U3RhdGUpOworICAgICAgICAgICAgICAgIGZyb3plbk1lbnVTdGF0ZSA9IG51bGw7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBQYXJjZWxhYmxlIG9uU2F2ZUluc3RhbmNlU3RhdGUoKSB7CisgICAgICAgICAgICBTYXZlZFN0YXRlIHNhdmVkU3RhdGUgPSBuZXcgU2F2ZWRTdGF0ZSgpOworICAgICAgICAgICAgc2F2ZWRTdGF0ZS5mZWF0dXJlSWQgPSBmZWF0dXJlSWQ7CisgICAgICAgICAgICBzYXZlZFN0YXRlLmlzT3BlbiA9IGlzT3BlbjsKKyAgICAgICAgICAgIHNhdmVkU3RhdGUuaXNJbkV4cGFuZGVkTW9kZSA9IGlzSW5FeHBhbmRlZE1vZGU7CisKKyAgICAgICAgICAgIGlmIChtZW51ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBzYXZlZFN0YXRlLm1lbnVTdGF0ZSA9IG5ldyBCdW5kbGUoKTsKKyAgICAgICAgICAgICAgICAoKE1lbnVCdWlsZGVyKSBtZW51KS5zYXZlSGllcmFyY2h5U3RhdGUoc2F2ZWRTdGF0ZS5tZW51U3RhdGUpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1cm4gc2F2ZWRTdGF0ZTsKKyAgICAgICAgfQorCisgICAgICAgIHZvaWQgb25SZXN0b3JlSW5zdGFuY2VTdGF0ZShQYXJjZWxhYmxlIHN0YXRlKSB7CisgICAgICAgICAgICBTYXZlZFN0YXRlIHNhdmVkU3RhdGUgPSAoU2F2ZWRTdGF0ZSkgc3RhdGU7CisgICAgICAgICAgICBmZWF0dXJlSWQgPSBzYXZlZFN0YXRlLmZlYXR1cmVJZDsKKyAgICAgICAgICAgIHdhc0xhc3RPcGVuID0gc2F2ZWRTdGF0ZS5pc09wZW47CisgICAgICAgICAgICB3YXNMYXN0RXhwYW5kZWQgPSBzYXZlZFN0YXRlLmlzSW5FeHBhbmRlZE1vZGU7CisgICAgICAgICAgICBmcm96ZW5NZW51U3RhdGUgPSBzYXZlZFN0YXRlLm1lbnVTdGF0ZTsKKworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIEEgTG9jYWxBY3Rpdml0eU1hbmFnZXIga2VlcHMgdGhlIHNhbWUgaW5zdGFuY2Ugb2YgdGhpcyBjbGFzcyBhcm91bmQuCisgICAgICAgICAgICAgKiBUaGUgZmlyc3QgdGltZSB0aGUgbWVudSBpcyBiZWluZyBzaG93biBhZnRlciByZXN0b3JpbmcsIHRoZQorICAgICAgICAgICAgICogQWN0aXZpdHkub25DcmVhdGVPcHRpb25zTWVudSBzaG91bGQgYmUgY2FsbGVkLiBCdXQsIGlmIGl0IGlzIHRoZQorICAgICAgICAgICAgICogc2FtZSBpbnN0YW5jZSB0aGVuIG1lbnUgIT0gbnVsbCBhbmQgd2Ugd29uJ3QgY2FsbCB0aGF0IG1ldGhvZC4KKyAgICAgICAgICAgICAqIFNvLCBjbGVhciB0aGlzLiAgQWxzbyBjbGVhciBhbnkgY2FjaGVkIHZpZXdzLgorICAgICAgICAgICAgICovCisgICAgICAgICAgICBtZW51ID0gbnVsbDsKKyAgICAgICAgICAgIGNyZWF0ZWRQYW5lbFZpZXcgPSBudWxsOworICAgICAgICAgICAgc2hvd25QYW5lbFZpZXcgPSBudWxsOworICAgICAgICAgICAgZGVjb3JWaWV3ID0gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIFNhdmVkU3RhdGUgaW1wbGVtZW50cyBQYXJjZWxhYmxlIHsKKyAgICAgICAgICAgIGludCBmZWF0dXJlSWQ7CisgICAgICAgICAgICBib29sZWFuIGlzT3BlbjsKKyAgICAgICAgICAgIGJvb2xlYW4gaXNJbkV4cGFuZGVkTW9kZTsKKyAgICAgICAgICAgIEJ1bmRsZSBtZW51U3RhdGU7CisKKyAgICAgICAgICAgIHB1YmxpYyBpbnQgZGVzY3JpYmVDb250ZW50cygpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcHVibGljIHZvaWQgd3JpdGVUb1BhcmNlbChQYXJjZWwgZGVzdCwgaW50IGZsYWdzKSB7CisgICAgICAgICAgICAgICAgZGVzdC53cml0ZUludChmZWF0dXJlSWQpOworICAgICAgICAgICAgICAgIGRlc3Qud3JpdGVJbnQoaXNPcGVuID8gMSA6IDApOworICAgICAgICAgICAgICAgIGRlc3Qud3JpdGVJbnQoaXNJbkV4cGFuZGVkTW9kZSA/IDEgOiAwKTsKKworICAgICAgICAgICAgICAgIGlmIChpc09wZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgZGVzdC53cml0ZUJ1bmRsZShtZW51U3RhdGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcHJpdmF0ZSBzdGF0aWMgU2F2ZWRTdGF0ZSByZWFkRnJvbVBhcmNlbChQYXJjZWwgc291cmNlKSB7CisgICAgICAgICAgICAgICAgU2F2ZWRTdGF0ZSBzYXZlZFN0YXRlID0gbmV3IFNhdmVkU3RhdGUoKTsKKyAgICAgICAgICAgICAgICBzYXZlZFN0YXRlLmZlYXR1cmVJZCA9IHNvdXJjZS5yZWFkSW50KCk7CisgICAgICAgICAgICAgICAgc2F2ZWRTdGF0ZS5pc09wZW4gPSBzb3VyY2UucmVhZEludCgpID09IDE7CisgICAgICAgICAgICAgICAgc2F2ZWRTdGF0ZS5pc0luRXhwYW5kZWRNb2RlID0gc291cmNlLnJlYWRJbnQoKSA9PSAxOworCisgICAgICAgICAgICAgICAgaWYgKHNhdmVkU3RhdGUuaXNPcGVuKSB7CisgICAgICAgICAgICAgICAgICAgIHNhdmVkU3RhdGUubWVudVN0YXRlID0gc291cmNlLnJlYWRCdW5kbGUoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICByZXR1cm4gc2F2ZWRTdGF0ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBQYXJjZWxhYmxlLkNyZWF0b3I8U2F2ZWRTdGF0ZT4gQ1JFQVRPUgorICAgICAgICAgICAgICAgICAgICA9IG5ldyBQYXJjZWxhYmxlLkNyZWF0b3I8U2F2ZWRTdGF0ZT4oKSB7CisgICAgICAgICAgICAgICAgcHVibGljIFNhdmVkU3RhdGUgY3JlYXRlRnJvbVBhcmNlbChQYXJjZWwgaW4pIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlYWRGcm9tUGFyY2VsKGluKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBwdWJsaWMgU2F2ZWRTdGF0ZVtdIG5ld0FycmF5KGludCBzaXplKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgU2F2ZWRTdGF0ZVtzaXplXTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9OworICAgICAgICB9CisKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBTaW1wbGUgaW1wbGVtZW50YXRpb24gb2YgTWVudUJ1aWxkZXIuQ2FsbGJhY2sgdGhhdDoKKyAgICAgKiA8bGk+IE9wZW5zIGEgc3VibWVudSB3aGVuIHNlbGVjdGVkLgorICAgICAqIDxsaT4gQ2FsbHMgYmFjayB0byB0aGUgY2FsbGJhY2sncyBvbk1lbnVJdGVtU2VsZWN0ZWQgd2hlbiBhbiBpdGVtIGlzCisgICAgICogc2VsZWN0ZWQuCisgICAgICovCisgICAgcHJpdmF0ZSBmaW5hbCBjbGFzcyBDb250ZXh0TWVudUNhbGxiYWNrIGltcGxlbWVudHMgTWVudUJ1aWxkZXIuQ2FsbGJhY2sgeworICAgICAgICBwcml2YXRlIGludCBtRmVhdHVyZUlkOworICAgICAgICBwcml2YXRlIE1lbnVEaWFsb2dIZWxwZXIgbVN1Yk1lbnVIZWxwZXI7CisKKyAgICAgICAgcHVibGljIENvbnRleHRNZW51Q2FsbGJhY2soaW50IGZlYXR1cmVJZCkgeworICAgICAgICAgICAgbUZlYXR1cmVJZCA9IGZlYXR1cmVJZDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIG9uQ2xvc2VNZW51KE1lbnVCdWlsZGVyIG1lbnUsIGJvb2xlYW4gYWxsTWVudXNBcmVDbG9zaW5nKSB7CisgICAgICAgICAgICBpZiAoYWxsTWVudXNBcmVDbG9zaW5nKSB7CisgICAgICAgICAgICAgICAgQ2FsbGJhY2sgY2FsbGJhY2sgPSBnZXRDYWxsYmFjaygpOworICAgICAgICAgICAgICAgIGlmIChjYWxsYmFjayAhPSBudWxsKSBjYWxsYmFjay5vblBhbmVsQ2xvc2VkKG1GZWF0dXJlSWQsIG1lbnUpOworCisgICAgICAgICAgICAgICAgaWYgKG1lbnUgPT0gbUNvbnRleHRNZW51KSB7CisgICAgICAgICAgICAgICAgICAgIGRpc21pc3NDb250ZXh0TWVudSgpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIERpc21pc3MgdGhlIHN1Ym1lbnUsIGlmIGl0IGlzIHNob3dpbmcKKyAgICAgICAgICAgICAgICBpZiAobVN1Yk1lbnVIZWxwZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBtU3ViTWVudUhlbHBlci5kaXNtaXNzKCk7CisgICAgICAgICAgICAgICAgICAgIG1TdWJNZW51SGVscGVyID0gbnVsbDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBvbkNsb3NlU3ViTWVudShTdWJNZW51QnVpbGRlciBtZW51KSB7CisgICAgICAgICAgICBDYWxsYmFjayBjYWxsYmFjayA9IGdldENhbGxiYWNrKCk7CisgICAgICAgICAgICBpZiAoY2FsbGJhY2sgIT0gbnVsbCkgY2FsbGJhY2sub25QYW5lbENsb3NlZChtRmVhdHVyZUlkLCBtZW51LmdldFJvb3RNZW51KCkpOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGJvb2xlYW4gb25NZW51SXRlbVNlbGVjdGVkKE1lbnVCdWlsZGVyIG1lbnUsIE1lbnVJdGVtIGl0ZW0pIHsKKyAgICAgICAgICAgIENhbGxiYWNrIGNhbGxiYWNrID0gZ2V0Q2FsbGJhY2soKTsKKyAgICAgICAgICAgIHJldHVybiAoY2FsbGJhY2sgIT0gbnVsbCkgJiYgY2FsbGJhY2sub25NZW51SXRlbVNlbGVjdGVkKG1GZWF0dXJlSWQsIGl0ZW0pOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgb25NZW51TW9kZUNoYW5nZShNZW51QnVpbGRlciBtZW51KSB7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgYm9vbGVhbiBvblN1Yk1lbnVTZWxlY3RlZChTdWJNZW51QnVpbGRlciBzdWJNZW51KSB7CisgICAgICAgICAgICAvLyBTZXQgYSBzaW1wbGUgY2FsbGJhY2sgZm9yIHRoZSBzdWJtZW51CisgICAgICAgICAgICBzdWJNZW51LnNldENhbGxiYWNrKHRoaXMpOworCisgICAgICAgICAgICAvLyBUaGUgd2luZG93IG1hbmFnZXIgd2lsbCBnaXZlIHVzIGEgdmFsaWQgd2luZG93IHRva2VuCisgICAgICAgICAgICBtU3ViTWVudUhlbHBlciA9IG5ldyBNZW51RGlhbG9nSGVscGVyKHN1Yk1lbnUpOworICAgICAgICAgICAgbVN1Yk1lbnVIZWxwZXIuc2hvdyhudWxsKTsKKworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHNlbmRDbG9zZVN5c3RlbVdpbmRvd3MoKSB7CisgICAgICAgIFBob25lV2luZG93TWFuYWdlci5zZW5kQ2xvc2VTeXN0ZW1XaW5kb3dzKGdldENvbnRleHQoKSwgbnVsbCk7CisgICAgfQorCisgICAgdm9pZCBzZW5kQ2xvc2VTeXN0ZW1XaW5kb3dzKFN0cmluZyByZWFzb24pIHsKKyAgICAgICAgUGhvbmVXaW5kb3dNYW5hZ2VyLnNlbmRDbG9zZVN5c3RlbVdpbmRvd3MoZ2V0Q29udGV4dCgpLCByZWFzb24pOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvUGhvbmVXaW5kb3dNYW5hZ2VyLmphdmEgYi9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL1Bob25lV2luZG93TWFuYWdlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjgzZDljNDcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL1Bob25lV2luZG93TWFuYWdlci5qYXZhCkBAIC0wLDAgKzEsMjMzMSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGw7CisKK2ltcG9ydCBhbmRyb2lkLmFwcC5BY3Rpdml0eTsKK2ltcG9ydCBhbmRyb2lkLmFwcC5BY3Rpdml0eU1hbmFnZXJOYXRpdmU7CitpbXBvcnQgYW5kcm9pZC5hcHAuSUFjdGl2aXR5TWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLmFwcC5JVWlNb2RlTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLmFwcC5VaU1vZGVNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5BY3Rpdml0eU5vdEZvdW5kRXhjZXB0aW9uOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Ccm9hZGNhc3RSZWNlaXZlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudEZpbHRlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uQWN0aXZpdHlJbmZvOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucmVzLkNvbmZpZ3VyYXRpb247CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXM7CitpbXBvcnQgYW5kcm9pZC5kYXRhYmFzZS5Db250ZW50T2JzZXJ2ZXI7CitpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5QaXhlbEZvcm1hdDsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLlJlY3Q7CitpbXBvcnQgYW5kcm9pZC5vcy5IYW5kbGVyOworaW1wb3J0IGFuZHJvaWQub3MuSUJpbmRlcjsKK2ltcG9ydCBhbmRyb2lkLm9zLkxvY2FsUG93ZXJNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQub3MuUG93ZXJNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uOworaW1wb3J0IGFuZHJvaWQub3MuU2VydmljZU1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5vcy5TeXN0ZW1DbG9jazsKK2ltcG9ydCBhbmRyb2lkLm9zLlN5c3RlbVByb3BlcnRpZXM7CitpbXBvcnQgYW5kcm9pZC5vcy5WaWJyYXRvcjsKK2ltcG9ydCBhbmRyb2lkLnByb3ZpZGVyLlNldHRpbmdzOworCitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LlBvbGljeU1hbmFnZXI7CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuc3RhdHVzYmFyLklTdGF0dXNCYXJTZXJ2aWNlOworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5JVGVsZXBob255OworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLndpZGdldC5Qb2ludGVyTG9jYXRpb25WaWV3OworCitpbXBvcnQgYW5kcm9pZC51dGlsLkNvbmZpZzsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuRXZlbnRMb2c7CitpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuRGlzcGxheTsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuR3Jhdml0eTsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuSGFwdGljRmVlZGJhY2tDb25zdGFudHM7CitpbXBvcnQgYW5kcm9pZC52aWV3LklXaW5kb3dNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQudmlldy5LZXlFdmVudDsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQ7CitpbXBvcnQgYW5kcm9pZC52aWV3LldpbmRvd09yaWVudGF0aW9uTGlzdGVuZXI7CitpbXBvcnQgYW5kcm9pZC52aWV3LlN1cmZhY2U7CitpbXBvcnQgYW5kcm9pZC52aWV3LlZpZXc7CitpbXBvcnQgYW5kcm9pZC52aWV3LlZpZXdDb25maWd1cmF0aW9uOworaW1wb3J0IGFuZHJvaWQudmlldy5XaW5kb3c7CitpbXBvcnQgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXI7CitpbXBvcnQgc3RhdGljIGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GSVJTVF9BUFBMSUNBVElPTl9XSU5ET1c7CitpbXBvcnQgc3RhdGljIGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX0ZPUkNFX05PVF9GVUxMU0NSRUVOOworaW1wb3J0IHN0YXRpYyBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19GVUxMU0NSRUVOOworaW1wb3J0IHN0YXRpYyBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19MQVlPVVRfSU5fU0NSRUVOOworaW1wb3J0IHN0YXRpYyBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19MQVlPVVRfSU5TRVRfREVDT1I7CitpbXBvcnQgc3RhdGljIGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX0xBWU9VVF9OT19MSU1JVFM7CitpbXBvcnQgc3RhdGljIGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX1NIT1dfV0hFTl9MT0NLRUQ7CitpbXBvcnQgc3RhdGljIGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX0RJU01JU1NfS0VZR1VBUkQ7CitpbXBvcnQgc3RhdGljIGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX0FMTE9XX0xPQ0tfV0hJTEVfU0NSRUVOX09OOworaW1wb3J0IHN0YXRpYyBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuU09GVF9JTlBVVF9NQVNLX0FESlVTVDsKK2ltcG9ydCBzdGF0aWMgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLlNPRlRfSU5QVVRfQURKVVNUX1JFU0laRTsKK2ltcG9ydCBzdGF0aWMgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkxBU1RfQVBQTElDQVRJT05fV0lORE9XOworaW1wb3J0IHN0YXRpYyBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuVFlQRV9BUFBMSUNBVElPTl9NRURJQTsKK2ltcG9ydCBzdGF0aWMgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLlRZUEVfQVBQTElDQVRJT05fTUVESUFfT1ZFUkxBWTsKK2ltcG9ydCBzdGF0aWMgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLlRZUEVfQVBQTElDQVRJT05fUEFORUw7CitpbXBvcnQgc3RhdGljIGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5UWVBFX0FQUExJQ0FUSU9OX1NVQl9QQU5FTDsKK2ltcG9ydCBzdGF0aWMgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLlRZUEVfQVBQTElDQVRJT05fQVRUQUNIRURfRElBTE9HOworaW1wb3J0IHN0YXRpYyBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuVFlQRV9LRVlHVUFSRDsKK2ltcG9ydCBzdGF0aWMgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLlRZUEVfS0VZR1VBUkRfRElBTE9HOworaW1wb3J0IHN0YXRpYyBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuVFlQRV9QSE9ORTsKK2ltcG9ydCBzdGF0aWMgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLlRZUEVfUFJJT1JJVFlfUEhPTkU7CitpbXBvcnQgc3RhdGljIGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5UWVBFX1NFQVJDSF9CQVI7CitpbXBvcnQgc3RhdGljIGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5UWVBFX1NUQVRVU19CQVI7CitpbXBvcnQgc3RhdGljIGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5UWVBFX1NUQVRVU19CQVJfUEFORUw7CitpbXBvcnQgc3RhdGljIGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5UWVBFX1NZU1RFTV9ESUFMT0c7CitpbXBvcnQgc3RhdGljIGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5UWVBFX1NZU1RFTV9BTEVSVDsKK2ltcG9ydCBzdGF0aWMgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLlRZUEVfU1lTVEVNX0VSUk9SOworaW1wb3J0IHN0YXRpYyBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuVFlQRV9JTlBVVF9NRVRIT0Q7CitpbXBvcnQgc3RhdGljIGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5UWVBFX0lOUFVUX01FVEhPRF9ESUFMT0c7CitpbXBvcnQgc3RhdGljIGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5UWVBFX1NZU1RFTV9PVkVSTEFZOworaW1wb3J0IHN0YXRpYyBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuVFlQRV9UT0FTVDsKK2ltcG9ydCBzdGF0aWMgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLlRZUEVfV0FMTFBBUEVSOworaW1wb3J0IGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VySW1wbDsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlclBvbGljeTsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFuaW1hdGlvbjsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuYW5pbWF0aW9uLkFuaW1hdGlvblV0aWxzOworaW1wb3J0IGFuZHJvaWQubWVkaWEuSUF1ZGlvU2VydmljZTsKK2ltcG9ydCBhbmRyb2lkLm1lZGlhLkF1ZGlvTWFuYWdlcjsKKworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CisKKy8qKgorICogV2luZG93TWFuYWdlclBvbGljeSBpbXBsZW1lbnRhdGlvbiBmb3IgdGhlIEFuZHJvaWQgcGhvbmUgVUkuICBUaGlzCisgKiBpbnRyb2R1Y2VzIGEgbmV3IG1ldGhvZCBzdWZmaXgsIExwLCBmb3IgYW4gaW50ZXJuYWwgbG9jayBvZiB0aGUKKyAqIFBob25lV2luZG93TWFuYWdlci4gIFRoaXMgaXMgdXNlZCB0byBwcm90ZWN0IHNvbWUgaW50ZXJuYWwgc3RhdGUsIGFuZAorICogY2FuIGJlIGFjcXVpcmVkIHdpdGggZWl0aGVyIHRodyBMdyBhbmQgTGkgbG9jayBoZWxkLCBzbyBoYXMgdGhlIHJlc3RyaWN0aW9ucworICogb2YgYm90aCBvZiB0aG9zZSB3aGVuIGhlbGQuCisgKi8KK3B1YmxpYyBjbGFzcyBQaG9uZVdpbmRvd01hbmFnZXIgaW1wbGVtZW50cyBXaW5kb3dNYW5hZ2VyUG9saWN5IHsKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9ICJXaW5kb3dNYW5hZ2VyIjsKKyAgICBzdGF0aWMgZmluYWwgYm9vbGVhbiBERUJVRyA9IGZhbHNlOworICAgIHN0YXRpYyBmaW5hbCBib29sZWFuIGxvY2FsTE9HViA9IERFQlVHID8gQ29uZmlnLkxPR0QgOiBDb25maWcuTE9HVjsKKyAgICBzdGF0aWMgZmluYWwgYm9vbGVhbiBERUJVR19MQVlPVVQgPSBmYWxzZTsKKyAgICBzdGF0aWMgZmluYWwgYm9vbGVhbiBTSE9XX1NUQVJUSU5HX0FOSU1BVElPTlMgPSB0cnVlOworICAgIHN0YXRpYyBmaW5hbCBib29sZWFuIFNIT1dfUFJPQ0VTU0VTX09OX0FMVF9NRU5VID0gZmFsc2U7CisgICAgCisgICAgLy8gd2FsbHBhcGVyIGlzIGF0IHRoZSBib3R0b20sIHRob3VnaCB0aGUgd2luZG93IG1hbmFnZXIgbWF5IG1vdmUgaXQuCisgICAgc3RhdGljIGZpbmFsIGludCBXQUxMUEFQRVJfTEFZRVIgPSAyOworICAgIHN0YXRpYyBmaW5hbCBpbnQgQVBQTElDQVRJT05fTEFZRVIgPSAyOworICAgIHN0YXRpYyBmaW5hbCBpbnQgUEhPTkVfTEFZRVIgPSAzOworICAgIHN0YXRpYyBmaW5hbCBpbnQgU0VBUkNIX0JBUl9MQVlFUiA9IDQ7CisgICAgc3RhdGljIGZpbmFsIGludCBTVEFUVVNfQkFSX1BBTkVMX0xBWUVSID0gNTsKKyAgICBzdGF0aWMgZmluYWwgaW50IFNZU1RFTV9ESUFMT0dfTEFZRVIgPSA2OworICAgIC8vIHRvYXN0cyBhbmQgdGhlIHBsdWdnZWQtaW4gYmF0dGVyeSB0aGluZworICAgIHN0YXRpYyBmaW5hbCBpbnQgVE9BU1RfTEFZRVIgPSA3OworICAgIHN0YXRpYyBmaW5hbCBpbnQgU1RBVFVTX0JBUl9MQVlFUiA9IDg7CisgICAgLy8gU0lNIGVycm9ycyBhbmQgdW5sb2NrLiAgTm90IHN1cmUgaWYgdGhpcyByZWFsbHkgc2hvdWxkIGJlIGluIGEgaGlnaCBsYXllci4KKyAgICBzdGF0aWMgZmluYWwgaW50IFBSSU9SSVRZX1BIT05FX0xBWUVSID0gOTsKKyAgICAvLyBsaWtlIHRoZSBBTlIgLyBhcHAgY3Jhc2hlZCBkaWFsb2dzCisgICAgc3RhdGljIGZpbmFsIGludCBTWVNURU1fQUxFUlRfTEFZRVIgPSAxMDsKKyAgICAvLyBzeXN0ZW0tbGV2ZWwgZXJyb3IgZGlhbG9ncworICAgIHN0YXRpYyBmaW5hbCBpbnQgU1lTVEVNX0VSUk9SX0xBWUVSID0gMTE7CisgICAgLy8gb24tc2NyZWVuIGtleWJvYXJkcyBhbmQgb3RoZXIgc3VjaCBpbnB1dCBtZXRob2QgdXNlciBpbnRlcmZhY2VzIGdvIGhlcmUuCisgICAgc3RhdGljIGZpbmFsIGludCBJTlBVVF9NRVRIT0RfTEFZRVIgPSAxMjsKKyAgICAvLyBvbi1zY3JlZW4ga2V5Ym9hcmRzIGFuZCBvdGhlciBzdWNoIGlucHV0IG1ldGhvZCB1c2VyIGludGVyZmFjZXMgZ28gaGVyZS4KKyAgICBzdGF0aWMgZmluYWwgaW50IElOUFVUX01FVEhPRF9ESUFMT0dfTEFZRVIgPSAxMzsKKyAgICAvLyB0aGUga2V5Z3VhcmQ7IG5vdGhpbmcgb24gdG9wIG9mIHRoZXNlIGNhbiB0YWtlIGZvY3VzLCBzaW5jZSB0aGV5IGFyZQorICAgIC8vIHJlc3BvbnNpYmxlIGZvciBwb3dlciBtYW5hZ2VtZW50IHdoZW4gZGlzcGxheWVkLgorICAgIHN0YXRpYyBmaW5hbCBpbnQgS0VZR1VBUkRfTEFZRVIgPSAxNDsKKyAgICBzdGF0aWMgZmluYWwgaW50IEtFWUdVQVJEX0RJQUxPR19MQVlFUiA9IDE1OworICAgIC8vIHRoaW5ncyBpbiBoZXJlIENBTiBOT1QgdGFrZSBmb2N1cywgYnV0IGFyZSBzaG93biBvbiB0b3Agb2YgZXZlcnl0aGluZyBlbHNlLgorICAgIHN0YXRpYyBmaW5hbCBpbnQgU1lTVEVNX09WRVJMQVlfTEFZRVIgPSAxNjsKKworICAgIHN0YXRpYyBmaW5hbCBpbnQgQVBQTElDQVRJT05fTUVESUFfU1VCTEFZRVIgPSAtMjsKKyAgICBzdGF0aWMgZmluYWwgaW50IEFQUExJQ0FUSU9OX01FRElBX09WRVJMQVlfU1VCTEFZRVIgPSAtMTsKKyAgICBzdGF0aWMgZmluYWwgaW50IEFQUExJQ0FUSU9OX1BBTkVMX1NVQkxBWUVSID0gMTsKKyAgICBzdGF0aWMgZmluYWwgaW50IEFQUExJQ0FUSU9OX1NVQl9QQU5FTF9TVUJMQVlFUiA9IDI7CisgICAgCisgICAgLy8gRGVidWdnaW5nOiBzZXQgdGhpcyB0byBoYXZlIHRoZSBzeXN0ZW0gYWN0IGxpa2UgdGhlcmUgaXMgbm8gaGFyZCBrZXlib2FyZC4KKyAgICBzdGF0aWMgZmluYWwgYm9vbGVhbiBLRVlCT0FSRF9BTFdBWVNfSElEREVOID0gZmFsc2U7CisgICAgCisgICAgc3RhdGljIHB1YmxpYyBmaW5hbCBTdHJpbmcgU1lTVEVNX0RJQUxPR19SRUFTT05fS0VZID0gInJlYXNvbiI7CisgICAgc3RhdGljIHB1YmxpYyBmaW5hbCBTdHJpbmcgU1lTVEVNX0RJQUxPR19SRUFTT05fR0xPQkFMX0FDVElPTlMgPSAiZ2xvYmFsYWN0aW9ucyI7CisgICAgc3RhdGljIHB1YmxpYyBmaW5hbCBTdHJpbmcgU1lTVEVNX0RJQUxPR19SRUFTT05fUkVDRU5UX0FQUFMgPSAicmVjZW50YXBwcyI7CisgICAgc3RhdGljIHB1YmxpYyBmaW5hbCBTdHJpbmcgU1lTVEVNX0RJQUxPR19SRUFTT05fSE9NRV9LRVkgPSAiaG9tZWtleSI7CisKKyAgICAvLyBVc2VmdWwgc2NhbiBjb2Rlcy4KKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgU1dfTElEID0gMHgwMDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQlROX01PVVNFID0gMHgxMTA7CisgICAgCisgICAgZmluYWwgT2JqZWN0IG1Mb2NrID0gbmV3IE9iamVjdCgpOworICAgIAorICAgIENvbnRleHQgbUNvbnRleHQ7CisgICAgSVdpbmRvd01hbmFnZXIgbVdpbmRvd01hbmFnZXI7CisgICAgTG9jYWxQb3dlck1hbmFnZXIgbVBvd2VyTWFuYWdlcjsKKyAgICBWaWJyYXRvciBtVmlicmF0b3I7IC8vIFZpYnJhdG9yIGZvciBnaXZpbmcgZmVlZGJhY2sgb2Ygb3JpZW50YXRpb24gY2hhbmdlcworCisgICAgLy8gVmlicmF0b3IgcGF0dGVybiBmb3IgaGFwdGljIGZlZWRiYWNrIG9mIGEgbG9uZyBwcmVzcy4KKyAgICBsb25nW10gbUxvbmdQcmVzc1ZpYmVQYXR0ZXJuOworICAgIAorICAgIC8vIFZpYnJhdG9yIHBhdHRlcm4gZm9yIGhhcHRpYyBmZWVkYmFjayBvZiB2aXJ0dWFsIGtleSBwcmVzcy4KKyAgICBsb25nW10gbVZpcnR1YWxLZXlWaWJlUGF0dGVybjsKKyAgICAKKyAgICAvLyBWaWJyYXRvciBwYXR0ZXJuIGZvciBhIHNob3J0IHZpYnJhdGlvbi4KKyAgICBsb25nW10gbUtleWJvYXJkVGFwVmliZVBhdHRlcm47CisKKyAgICAvLyBWaWJyYXRvciBwYXR0ZXJuIGZvciBoYXB0aWMgZmVlZGJhY2sgZHVyaW5nIGJvb3Qgd2hlbiBzYWZlIG1vZGUgaXMgZGlzYWJsZWQuCisgICAgbG9uZ1tdIG1TYWZlTW9kZURpc2FibGVkVmliZVBhdHRlcm47CisgICAgCisgICAgLy8gVmlicmF0b3IgcGF0dGVybiBmb3IgaGFwdGljIGZlZWRiYWNrIGR1cmluZyBib290IHdoZW4gc2FmZSBtb2RlIGlzIGVuYWJsZWQuCisgICAgbG9uZ1tdIG1TYWZlTW9kZUVuYWJsZWRWaWJlUGF0dGVybjsKKworICAgIC8qKiBJZiB0cnVlLCBoaXR0aW5nIHNoaWZ0ICYgbWVudSB3aWxsIGJyb2FkY2FzdCBJbnRlbnQuQUNUSU9OX0JVR19SRVBPUlQgKi8KKyAgICBib29sZWFuIG1FbmFibGVTaGlmdE1lbnVCdWdSZXBvcnRzID0gZmFsc2U7CisgICAgCisgICAgYm9vbGVhbiBtU2FmZU1vZGU7CisgICAgV2luZG93U3RhdGUgbVN0YXR1c0JhciA9IG51bGw7CisgICAgZmluYWwgQXJyYXlMaXN0PFdpbmRvd1N0YXRlPiBtU3RhdHVzQmFyUGFuZWxzID0gbmV3IEFycmF5TGlzdDxXaW5kb3dTdGF0ZT4oKTsKKyAgICBXaW5kb3dTdGF0ZSBtS2V5Z3VhcmQgPSBudWxsOworICAgIEtleWd1YXJkVmlld01lZGlhdG9yIG1LZXlndWFyZE1lZGlhdG9yOworICAgIEdsb2JhbEFjdGlvbnMgbUdsb2JhbEFjdGlvbnM7CisgICAgYm9vbGVhbiBtU2hvdWxkVHVybk9mZk9uS2V5VXA7CisgICAgUmVjZW50QXBwbGljYXRpb25zRGlhbG9nIG1SZWNlbnRBcHBzRGlhbG9nOworICAgIEhhbmRsZXIgbUhhbmRsZXI7CisgICAgCisgICAgYm9vbGVhbiBtU3lzdGVtUmVhZHk7CisgICAgYm9vbGVhbiBtTGlkT3BlbjsKKyAgICBpbnQgbVVpTW9kZSA9IENvbmZpZ3VyYXRpb24uVUlfTU9ERV9UWVBFX05PUk1BTDsKKyAgICBpbnQgbURvY2tNb2RlID0gSW50ZW50LkVYVFJBX0RPQ0tfU1RBVEVfVU5ET0NLRUQ7CisgICAgaW50IG1MaWRPcGVuUm90YXRpb247CisgICAgaW50IG1DYXJEb2NrUm90YXRpb247CisgICAgaW50IG1EZXNrRG9ja1JvdGF0aW9uOworICAgIGJvb2xlYW4gbUNhckRvY2tFbmFibGVzQWNjZWxlcm9tZXRlcjsKKyAgICBib29sZWFuIG1EZXNrRG9ja0VuYWJsZXNBY2NlbGVyb21ldGVyOworICAgIGludCBtTGlkS2V5Ym9hcmRBY2Nlc3NpYmlsaXR5OworICAgIGludCBtTGlkTmF2aWdhdGlvbkFjY2Vzc2liaWxpdHk7CisgICAgYm9vbGVhbiBtU2NyZWVuT24gPSBmYWxzZTsKKyAgICBib29sZWFuIG1PcmllbnRhdGlvblNlbnNvckVuYWJsZWQgPSBmYWxzZTsKKyAgICBpbnQgbUN1cnJlbnRBcHBPcmllbnRhdGlvbiA9IEFjdGl2aXR5SW5mby5TQ1JFRU5fT1JJRU5UQVRJT05fVU5TUEVDSUZJRUQ7CisgICAgc3RhdGljIGZpbmFsIGludCBERUZBVUxUX0FDQ0VMRVJPTUVURVJfUk9UQVRJT04gPSAwOworICAgIGludCBtQWNjZWxlcm9tZXRlckRlZmF1bHQgPSBERUZBVUxUX0FDQ0VMRVJPTUVURVJfUk9UQVRJT047CisgICAgYm9vbGVhbiBtSGFzU29mdElucHV0ID0gZmFsc2U7CisgICAgCisgICAgaW50IG1Qb2ludGVyTG9jYXRpb25Nb2RlID0gMDsKKyAgICBQb2ludGVyTG9jYXRpb25WaWV3IG1Qb2ludGVyTG9jYXRpb25WaWV3ID0gbnVsbDsKKyAgICAKKyAgICAvLyBUaGUgY3VycmVudCBzaXplIG9mIHRoZSBzY3JlZW4uCisgICAgaW50IG1XLCBtSDsKKyAgICAvLyBEdXJpbmcgbGF5b3V0LCB0aGUgY3VycmVudCBzY3JlZW4gYm9yZGVycyB3aXRoIGFsbCBvdXRlciBkZWNvcmF0aW9uCisgICAgLy8gKHN0YXR1cyBiYXIsIGlucHV0IG1ldGhvZCBkb2NrKSBhY2NvdW50ZWQgZm9yLgorICAgIGludCBtQ3VyTGVmdCwgbUN1clRvcCwgbUN1clJpZ2h0LCBtQ3VyQm90dG9tOworICAgIC8vIER1cmluZyBsYXlvdXQsIHRoZSBmcmFtZSBpbiB3aGljaCBjb250ZW50IHNob3VsZCBiZSBkaXNwbGF5ZWQKKyAgICAvLyB0byB0aGUgdXNlciwgYWNjb3VudGluZyBmb3IgYWxsIHNjcmVlbiBkZWNvcmF0aW9uIGV4Y2VwdCBmb3IgYW55CisgICAgLy8gc3BhY2UgdGhleSBkZWVtIGFzIGF2YWlsYWJsZSBmb3Igb3RoZXIgY29udGVudC4gIFRoaXMgaXMgdXN1YWxseQorICAgIC8vIHRoZSBzYW1lIGFzIG1DdXIqLCBidXQgbWF5IGJlIGxhcmdlciBpZiB0aGUgc2NyZWVuIGRlY29yIGhhcyBzdXBwbGllZAorICAgIC8vIGNvbnRlbnQgaW5zZXRzLgorICAgIGludCBtQ29udGVudExlZnQsIG1Db250ZW50VG9wLCBtQ29udGVudFJpZ2h0LCBtQ29udGVudEJvdHRvbTsKKyAgICAvLyBEdXJpbmcgbGF5b3V0LCB0aGUgY3VycmVudCBzY3JlZW4gYm9yZGVycyBhbG9uZyB3aXRoIGlucHV0IG1ldGhvZAorICAgIC8vIHdpbmRvd3MgYXJlIHBsYWNlZC4KKyAgICBpbnQgbURvY2tMZWZ0LCBtRG9ja1RvcCwgbURvY2tSaWdodCwgbURvY2tCb3R0b207CisgICAgLy8gRHVyaW5nIGxheW91dCwgdGhlIGxheWVyIGF0IHdoaWNoIHRoZSBkb2Mgd2luZG93IGlzIHBsYWNlZC4KKyAgICBpbnQgbURvY2tMYXllcjsKKyAgICAKKyAgICBzdGF0aWMgZmluYWwgUmVjdCBtVG1wUGFyZW50RnJhbWUgPSBuZXcgUmVjdCgpOworICAgIHN0YXRpYyBmaW5hbCBSZWN0IG1UbXBEaXNwbGF5RnJhbWUgPSBuZXcgUmVjdCgpOworICAgIHN0YXRpYyBmaW5hbCBSZWN0IG1UbXBDb250ZW50RnJhbWUgPSBuZXcgUmVjdCgpOworICAgIHN0YXRpYyBmaW5hbCBSZWN0IG1UbXBWaXNpYmxlRnJhbWUgPSBuZXcgUmVjdCgpOworICAgIAorICAgIFdpbmRvd1N0YXRlIG1Ub3BGdWxsc2NyZWVuT3BhcXVlV2luZG93U3RhdGU7CisgICAgYm9vbGVhbiBtRm9yY2VTdGF0dXNCYXI7CisgICAgYm9vbGVhbiBtSGlkZUxvY2tTY3JlZW47CisgICAgYm9vbGVhbiBtRGlzbWlzc0tleWd1YXJkOworICAgIGJvb2xlYW4gbUhvbWVQcmVzc2VkOworICAgIEludGVudCBtSG9tZUludGVudDsKKyAgICBJbnRlbnQgbUNhckRvY2tJbnRlbnQ7CisgICAgSW50ZW50IG1EZXNrRG9ja0ludGVudDsKKyAgICBib29sZWFuIG1TZWFyY2hLZXlQcmVzc2VkOworICAgIGJvb2xlYW4gbUNvbnN1bWVTZWFyY2hLZXlVcDsKKworICAgIC8vIHN1cHBvcnQgZm9yIGFjdGl2YXRpbmcgdGhlIGxvY2sgc2NyZWVuIHdoaWxlIHRoZSBzY3JlZW4gaXMgb24KKyAgICBib29sZWFuIG1BbGxvd0xvY2tzY3JlZW5XaGVuT247CisgICAgaW50IG1Mb2NrU2NyZWVuVGltZW91dDsKKyAgICBib29sZWFuIG1Mb2NrU2NyZWVuVGltZXJBY3RpdmU7CisKKyAgICAvLyBCZWhhdmlvciBvZiBFTkRDQUxMIEJ1dHRvbi4gIChTZWUgU2V0dGluZ3MuU3lzdGVtLkVORF9CVVRUT05fQkVIQVZJT1IuKQorICAgIGludCBtRW5kY2FsbEJlaGF2aW9yOworCisgICAgLy8gQmVoYXZpb3Igb2YgUE9XRVIgYnV0dG9uIHdoaWxlIGluLWNhbGwgYW5kIHNjcmVlbiBvbi4KKyAgICAvLyAoU2VlIFNldHRpbmdzLlNlY3VyZS5JTkNBTExfUE9XRVJfQlVUVE9OX0JFSEFWSU9SLikKKyAgICBpbnQgbUluY2FsbFBvd2VyQmVoYXZpb3I7CisKKyAgICBpbnQgbUxhbmRzY2FwZVJvdGF0aW9uID0gLTE7CisgICAgaW50IG1Qb3J0cmFpdFJvdGF0aW9uID0gLTE7CisKKyAgICAvLyBOb3RoaW5nIHRvIHNlZSBoZXJlLCBtb3ZlIGFsb25nLi4uCisgICAgaW50IG1GYW5jeVJvdGF0aW9uQW5pbWF0aW9uOworCisgICAgU2hvcnRjdXRNYW5hZ2VyIG1TaG9ydGN1dE1hbmFnZXI7CisgICAgUG93ZXJNYW5hZ2VyLldha2VMb2NrIG1Ccm9hZGNhc3RXYWtlTG9jazsKKworICAgIGNsYXNzIFNldHRpbmdzT2JzZXJ2ZXIgZXh0ZW5kcyBDb250ZW50T2JzZXJ2ZXIgeworICAgICAgICBTZXR0aW5nc09ic2VydmVyKEhhbmRsZXIgaGFuZGxlcikgeworICAgICAgICAgICAgc3VwZXIoaGFuZGxlcik7CisgICAgICAgIH0KKworICAgICAgICB2b2lkIG9ic2VydmUoKSB7CisgICAgICAgICAgICBDb250ZW50UmVzb2x2ZXIgcmVzb2x2ZXIgPSBtQ29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKTsKKyAgICAgICAgICAgIHJlc29sdmVyLnJlZ2lzdGVyQ29udGVudE9ic2VydmVyKFNldHRpbmdzLlN5c3RlbS5nZXRVcmlGb3IoCisgICAgICAgICAgICAgICAgICAgIFNldHRpbmdzLlN5c3RlbS5FTkRfQlVUVE9OX0JFSEFWSU9SKSwgZmFsc2UsIHRoaXMpOworICAgICAgICAgICAgcmVzb2x2ZXIucmVnaXN0ZXJDb250ZW50T2JzZXJ2ZXIoU2V0dGluZ3MuU2VjdXJlLmdldFVyaUZvcigKKyAgICAgICAgICAgICAgICAgICAgU2V0dGluZ3MuU2VjdXJlLklOQ0FMTF9QT1dFUl9CVVRUT05fQkVIQVZJT1IpLCBmYWxzZSwgdGhpcyk7CisgICAgICAgICAgICByZXNvbHZlci5yZWdpc3RlckNvbnRlbnRPYnNlcnZlcihTZXR0aW5ncy5TeXN0ZW0uZ2V0VXJpRm9yKAorICAgICAgICAgICAgICAgICAgICBTZXR0aW5ncy5TeXN0ZW0uQUNDRUxFUk9NRVRFUl9ST1RBVElPTiksIGZhbHNlLCB0aGlzKTsKKyAgICAgICAgICAgIHJlc29sdmVyLnJlZ2lzdGVyQ29udGVudE9ic2VydmVyKFNldHRpbmdzLlN5c3RlbS5nZXRVcmlGb3IoCisgICAgICAgICAgICAgICAgICAgIFNldHRpbmdzLlN5c3RlbS5TQ1JFRU5fT0ZGX1RJTUVPVVQpLCBmYWxzZSwgdGhpcyk7CisgICAgICAgICAgICByZXNvbHZlci5yZWdpc3RlckNvbnRlbnRPYnNlcnZlcihTZXR0aW5ncy5TeXN0ZW0uZ2V0VXJpRm9yKAorICAgICAgICAgICAgICAgICAgICBTZXR0aW5ncy5TeXN0ZW0uUE9JTlRFUl9MT0NBVElPTiksIGZhbHNlLCB0aGlzKTsKKyAgICAgICAgICAgIHJlc29sdmVyLnJlZ2lzdGVyQ29udGVudE9ic2VydmVyKFNldHRpbmdzLlNlY3VyZS5nZXRVcmlGb3IoCisgICAgICAgICAgICAgICAgICAgIFNldHRpbmdzLlNlY3VyZS5ERUZBVUxUX0lOUFVUX01FVEhPRCksIGZhbHNlLCB0aGlzKTsKKyAgICAgICAgICAgIHJlc29sdmVyLnJlZ2lzdGVyQ29udGVudE9ic2VydmVyKFNldHRpbmdzLlN5c3RlbS5nZXRVcmlGb3IoCisgICAgICAgICAgICAgICAgICAgICJmYW5jeV9yb3RhdGlvbl9hbmltIiksIGZhbHNlLCB0aGlzKTsKKyAgICAgICAgICAgIHVwZGF0ZVNldHRpbmdzKCk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUgcHVibGljIHZvaWQgb25DaGFuZ2UoYm9vbGVhbiBzZWxmQ2hhbmdlKSB7CisgICAgICAgICAgICB1cGRhdGVTZXR0aW5ncygpOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBtV2luZG93TWFuYWdlci5zZXRSb3RhdGlvbihVU0VfTEFTVF9ST1RBVElPTiwgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICBtRmFuY3lSb3RhdGlvbkFuaW1hdGlvbik7CisgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIC8vIElnbm9yZQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIGNsYXNzIE15T3JpZW50YXRpb25MaXN0ZW5lciBleHRlbmRzIFdpbmRvd09yaWVudGF0aW9uTGlzdGVuZXIgeworICAgICAgICBNeU9yaWVudGF0aW9uTGlzdGVuZXIoQ29udGV4dCBjb250ZXh0KSB7CisgICAgICAgICAgICBzdXBlcihjb250ZXh0KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyB2b2lkIG9uT3JpZW50YXRpb25DaGFuZ2VkKGludCByb3RhdGlvbikgeworICAgICAgICAgICAgLy8gU2VuZCB1cGRhdGVzIGJhc2VkIG9uIG9yaWVudGF0aW9uIHZhbHVlCisgICAgICAgICAgICBpZiAobG9jYWxMT0dWKSBMb2cudihUQUcsICJvbk9yaWVudGF0aW9uQ2hhbmdlZCwgcm90YXRpb24gY2hhbmdlZCB0byAiICtyb3RhdGlvbik7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyLnNldFJvdGF0aW9uKHJvdGF0aW9uLCBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1GYW5jeVJvdGF0aW9uQW5pbWF0aW9uKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgLy8gSWdub3JlCisKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgfQorICAgIE15T3JpZW50YXRpb25MaXN0ZW5lciBtT3JpZW50YXRpb25MaXN0ZW5lcjsKKworICAgIGJvb2xlYW4gdXNlU2Vuc29yRm9yT3JpZW50YXRpb25McChpbnQgYXBwT3JpZW50YXRpb24pIHsKKyAgICAgICAgLy8gVGhlIGFwcCBzYXlzIHVzZSB0aGUgc2Vuc29yLgorICAgICAgICBpZiAoYXBwT3JpZW50YXRpb24gPT0gQWN0aXZpdHlJbmZvLlNDUkVFTl9PUklFTlRBVElPTl9TRU5TT1IpIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIC8vIFRoZSB1c2VyIHByZWZlcmVuY2Ugc2F5cyB3ZSBjYW4gcm90YXRlLCBhbmQgdGhlIGFwcCBpcyB3aWxsaW5nIHRvIHJvdGF0ZS4KKyAgICAgICAgaWYgKG1BY2NlbGVyb21ldGVyRGVmYXVsdCAhPSAwICYmCisgICAgICAgICAgICAgICAgKGFwcE9yaWVudGF0aW9uID09IEFjdGl2aXR5SW5mby5TQ1JFRU5fT1JJRU5UQVRJT05fVVNFUgorICAgICAgICAgICAgICAgICB8fCBhcHBPcmllbnRhdGlvbiA9PSBBY3Rpdml0eUluZm8uU0NSRUVOX09SSUVOVEFUSU9OX1VOU1BFQ0lGSUVEKSkgeworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgLy8gV2UncmUgaW4gYSBkb2NrIHRoYXQgaGFzIGEgcm90YXRpb24gYWZmaW5pdHksIGFuIHRoZSBhcHAgaXMgd2lsbGluZyB0byByb3RhdGUuCisgICAgICAgIGlmICgobUNhckRvY2tFbmFibGVzQWNjZWxlcm9tZXRlciAmJiBtRG9ja01vZGUgPT0gSW50ZW50LkVYVFJBX0RPQ0tfU1RBVEVfQ0FSKQorICAgICAgICAgICAgICAgIHx8IChtRGVza0RvY2tFbmFibGVzQWNjZWxlcm9tZXRlciAmJiBtRG9ja01vZGUgPT0gSW50ZW50LkVYVFJBX0RPQ0tfU1RBVEVfREVTSykpIHsKKyAgICAgICAgICAgIC8vIE5vdGUgd2Ugb3ZlcnJpZGUgdGhlIG5vc2Vuc29yIGZsYWcgaGVyZS4KKyAgICAgICAgICAgIGlmIChhcHBPcmllbnRhdGlvbiA9PSBBY3Rpdml0eUluZm8uU0NSRUVOX09SSUVOVEFUSU9OX1VTRVIKKyAgICAgICAgICAgICAgICAgICAgfHwgYXBwT3JpZW50YXRpb24gPT0gQWN0aXZpdHlJbmZvLlNDUkVFTl9PUklFTlRBVElPTl9VTlNQRUNJRklFRAorICAgICAgICAgICAgICAgICAgICB8fCBhcHBPcmllbnRhdGlvbiA9PSBBY3Rpdml0eUluZm8uU0NSRUVOX09SSUVOVEFUSU9OX05PU0VOU09SKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgLy8gRWxzZSwgZG9uJ3QgdXNlIHRoZSBzZW5zb3IuCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisgICAgCisgICAgLyoKKyAgICAgKiBXZSBhbHdheXMgbGV0IHRoZSBzZW5zb3IgYmUgc3dpdGNoZWQgb24gYnkgZGVmYXVsdCBleGNlcHQgd2hlbgorICAgICAqIHRoZSB1c2VyIGhhcyBleHBsaWNpdGx5IGRpc2FibGVkIHNlbnNvciBiYXNlZCByb3RhdGlvbiBvciB3aGVuIHRoZQorICAgICAqIHNjcmVlbiBpcyBzd2l0Y2hlZCBvZmYuCisgICAgICovCisgICAgYm9vbGVhbiBuZWVkU2Vuc29yUnVubmluZ0xwKCkgeworICAgICAgICBpZiAobUN1cnJlbnRBcHBPcmllbnRhdGlvbiA9PSBBY3Rpdml0eUluZm8uU0NSRUVOX09SSUVOVEFUSU9OX1NFTlNPUikgeworICAgICAgICAgICAgLy8gSWYgdGhlIGFwcGxpY2F0aW9uIGhhcyBleHBsaWNpdGx5IHJlcXVlc3RlZCB0byBmb2xsb3cgdGhlCisgICAgICAgICAgICAvLyBvcmllbnRhdGlvbiwgdGhlbiB3ZSBuZWVkIHRvIHR1cm4gdGhlIHNlbnNvciBvci4KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIGlmICgobUNhckRvY2tFbmFibGVzQWNjZWxlcm9tZXRlciAmJiBtRG9ja01vZGUgPT0gSW50ZW50LkVYVFJBX0RPQ0tfU1RBVEVfQ0FSKSB8fAorICAgICAgICAgICAgICAgIChtRGVza0RvY2tFbmFibGVzQWNjZWxlcm9tZXRlciAmJiBtRG9ja01vZGUgPT0gSW50ZW50LkVYVFJBX0RPQ0tfU1RBVEVfREVTSykpIHsKKyAgICAgICAgICAgIC8vIGVuYWJsZSBhY2NlbGVyb21ldGVyIGlmIHdlIGFyZSBkb2NrZWQgaW4gYSBkb2NrIHRoYXQgZW5hYmxlcyBhY2NlbGVyb21ldGVyCisgICAgICAgICAgICAvLyBvcmllbnRhdGlvbiBtYW5hZ2VtZW50LAorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1BY2NlbGVyb21ldGVyRGVmYXVsdCA9PSAwKSB7CisgICAgICAgICAgICAvLyBJZiB0aGUgc2V0dGluZyBmb3IgdXNpbmcgdGhlIHNlbnNvciBieSBkZWZhdWx0IGlzIGVuYWJsZWQsIHRoZW4KKyAgICAgICAgICAgIC8vIHdlIHdpbGwgYWx3YXlzIGxlYXZlIGl0IG9uLiAgTm90ZSB0aGF0IHRoZSB1c2VyIGNvdWxkIGdvIHRvCisgICAgICAgICAgICAvLyBhIHdpbmRvdyB0aGF0IGZvcmNlcyBhbiBvcmllbnRhdGlvbiB0aGF0IGRvZXMgbm90IHVzZSB0aGUKKyAgICAgICAgICAgIC8vIHNlbnNvciBhbmQgaW4gdGhlb3J5IHdlIGNvdWxkIHR1cm4gaXQgb2ZmLi4uIGhvd2V2ZXIsIHdoZW4gbmV4dAorICAgICAgICAgICAgLy8gdHVybmluZyBpdCBvbiB3ZSB3b24ndCBoYXZlIGEgZ29vZCB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQKKyAgICAgICAgICAgIC8vIG9yaWVudGF0aW9uIGZvciBhIGxpdHRsZSBiaXQsIHdoaWNoIGNhbiBjYXVzZSBvcmllbnRhdGlvbgorICAgICAgICAgICAgLy8gY2hhbmdlcyB0byBsYWcsIHNvIHdlJ2QgbGlrZSB0byBrZWVwIGl0IGFsd2F5cyBvbi4gIChJdCB3aWxsCisgICAgICAgICAgICAvLyBzdGlsbCBiZSB0dXJuZWQgb2ZmIHdoZW4gdGhlIHNjcmVlbiBpcyBvZmYuKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICAvKgorICAgICAqIFZhcmlvdXMgdXNlIGNhc2VzIGZvciBpbnZva2luZyB0aGlzIGZ1bmN0aW9uCisgICAgICogc2NyZWVuIHR1cm5pbmcgb2ZmLCBzaG91bGQgYWx3YXlzIGRpc2FibGUgbGlzdGVuZXJzIGlmIGFscmVhZHkgZW5hYmxlZAorICAgICAqIHNjcmVlbiB0dXJuZWQgb24gYW5kIGN1cnJlbnQgYXBwIGhhcyBzZW5zb3IgYmFzZWQgb3JpZW50YXRpb24sIGVuYWJsZSBsaXN0ZW5lcnMgCisgICAgICogaWYgbm90IGFscmVhZHkgZW5hYmxlZAorICAgICAqIHNjcmVlbiB0dXJuZWQgb24gYW5kIGN1cnJlbnQgYXBwIGRvZXMgbm90IGhhdmUgc2Vuc29yIG9yaWVudGF0aW9uLCBkaXNhYmxlIGxpc3RlbmVycyBpZgorICAgICAqIGFscmVhZHkgZW5hYmxlZAorICAgICAqIHNjcmVlbiB0dXJuaW5nIG9uIGFuZCBjdXJyZW50IGFwcCBoYXMgc2Vuc29yIGJhc2VkIG9yaWVudGF0aW9uLCBlbmFibGUgbGlzdGVuZXJzIGlmIG5lZWRlZAorICAgICAqIHNjcmVlbiB0dXJuaW5nIG9uIGFuZCBjdXJyZW50IGFwcCBoYXMgbm9zZW5zb3IgYmFzZWQgb3JpZW50YXRpb24sIGRvIG5vdGhpbmcKKyAgICAgKi8KKyAgICB2b2lkIHVwZGF0ZU9yaWVudGF0aW9uTGlzdGVuZXJMcCgpIHsKKyAgICAgICAgaWYgKCFtT3JpZW50YXRpb25MaXN0ZW5lci5jYW5EZXRlY3RPcmllbnRhdGlvbigpKSB7CisgICAgICAgICAgICAvLyBJZiBzZW5zb3IgaXMgdHVybmVkIG9mZiBvciBub25leGlzdGVudCBmb3Igc29tZSByZWFzb24KKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICAvL0NvdWxkIGhhdmUgYmVlbiBpbnZva2VkIGR1ZSB0byBzY3JlZW4gdHVybmluZyBvbiBvciBvZmYgb3IKKyAgICAgICAgLy9jaGFuZ2Ugb2YgdGhlIGN1cnJlbnRseSB2aXNpYmxlIHdpbmRvdydzIG9yaWVudGF0aW9uCisgICAgICAgIGlmIChsb2NhbExPR1YpIExvZy52KFRBRywgIlNjcmVlbiBzdGF0dXM9IittU2NyZWVuT24rCisgICAgICAgICAgICAgICAgIiwgY3VycmVudCBvcmllbnRhdGlvbj0iK21DdXJyZW50QXBwT3JpZW50YXRpb24rCisgICAgICAgICAgICAgICAgIiwgU2Vuc29yRW5hYmxlZD0iK21PcmllbnRhdGlvblNlbnNvckVuYWJsZWQpOworICAgICAgICBib29sZWFuIGRpc2FibGUgPSB0cnVlOworICAgICAgICBpZiAobVNjcmVlbk9uKSB7CisgICAgICAgICAgICBpZiAobmVlZFNlbnNvclJ1bm5pbmdMcCgpKSB7CisgICAgICAgICAgICAgICAgZGlzYWJsZSA9IGZhbHNlOworICAgICAgICAgICAgICAgIC8vZW5hYmxlIGxpc3RlbmVyIGlmIG5vdCBhbHJlYWR5IGVuYWJsZWQKKyAgICAgICAgICAgICAgICBpZiAoIW1PcmllbnRhdGlvblNlbnNvckVuYWJsZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgbU9yaWVudGF0aW9uTGlzdGVuZXIuZW5hYmxlKCk7CisgICAgICAgICAgICAgICAgICAgIGlmKGxvY2FsTE9HVikgTG9nLnYoVEFHLCAiRW5hYmxpbmcgbGlzdGVuZXJzIik7CisgICAgICAgICAgICAgICAgICAgIG1PcmllbnRhdGlvblNlbnNvckVuYWJsZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gCisgICAgICAgIH0gCisgICAgICAgIC8vY2hlY2sgaWYgc2Vuc29ycyBuZWVkIHRvIGJlIGRpc2FibGVkCisgICAgICAgIGlmIChkaXNhYmxlICYmIG1PcmllbnRhdGlvblNlbnNvckVuYWJsZWQpIHsKKyAgICAgICAgICAgIG1PcmllbnRhdGlvbkxpc3RlbmVyLmRpc2FibGUoKTsKKyAgICAgICAgICAgIGlmKGxvY2FsTE9HVikgTG9nLnYoVEFHLCAiRGlzYWJsaW5nIGxpc3RlbmVycyIpOworICAgICAgICAgICAgbU9yaWVudGF0aW9uU2Vuc29yRW5hYmxlZCA9IGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgUnVubmFibGUgbVBvd2VyTG9uZ1ByZXNzID0gbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICBtU2hvdWxkVHVybk9mZk9uS2V5VXAgPSBmYWxzZTsKKyAgICAgICAgICAgIHBlcmZvcm1IYXB0aWNGZWVkYmFja0x3KG51bGwsIEhhcHRpY0ZlZWRiYWNrQ29uc3RhbnRzLkxPTkdfUFJFU1MsIGZhbHNlKTsKKyAgICAgICAgICAgIHNlbmRDbG9zZVN5c3RlbVdpbmRvd3MoU1lTVEVNX0RJQUxPR19SRUFTT05fR0xPQkFMX0FDVElPTlMpOworICAgICAgICAgICAgc2hvd0dsb2JhbEFjdGlvbnNEaWFsb2coKTsKKyAgICAgICAgfQorICAgIH07CisKKyAgICB2b2lkIHNob3dHbG9iYWxBY3Rpb25zRGlhbG9nKCkgeworICAgICAgICBpZiAobUdsb2JhbEFjdGlvbnMgPT0gbnVsbCkgeworICAgICAgICAgICAgbUdsb2JhbEFjdGlvbnMgPSBuZXcgR2xvYmFsQWN0aW9ucyhtQ29udGV4dCk7CisgICAgICAgIH0KKyAgICAgICAgZmluYWwgYm9vbGVhbiBrZXlndWFyZFNob3dpbmcgPSBtS2V5Z3VhcmRNZWRpYXRvci5pc1Nob3dpbmdBbmROb3RIaWRkZW4oKTsKKyAgICAgICAgbUdsb2JhbEFjdGlvbnMuc2hvd0RpYWxvZyhrZXlndWFyZFNob3dpbmcsIGlzRGV2aWNlUHJvdmlzaW9uZWQoKSk7CisgICAgICAgIGlmIChrZXlndWFyZFNob3dpbmcpIHsKKyAgICAgICAgICAgIC8vIHNpbmNlIGl0IHRvb2sgdHdvIHNlY29uZHMgb2YgbG9uZyBwcmVzcyB0byBicmluZyB0aGlzIHVwLAorICAgICAgICAgICAgLy8gcG9rZSB0aGUgd2FrZSBsb2NrIHNvIHRoZXkgaGF2ZSBzb21lIHRpbWUgdG8gc2VlIHRoZSBkaWFsb2cuCisgICAgICAgICAgICBtS2V5Z3VhcmRNZWRpYXRvci5wb2tlV2FrZWxvY2soKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGJvb2xlYW4gaXNEZXZpY2VQcm92aXNpb25lZCgpIHsKKyAgICAgICAgcmV0dXJuIFNldHRpbmdzLlNlY3VyZS5nZXRJbnQoCisgICAgICAgICAgICAgICAgbUNvbnRleHQuZ2V0Q29udGVudFJlc29sdmVyKCksIFNldHRpbmdzLlNlY3VyZS5ERVZJQ0VfUFJPVklTSU9ORUQsIDApICE9IDA7CisgICAgfQorCisgICAgLyoqCisgICAgICogV2hlbiBhIGhvbWUta2V5IGxvbmdwcmVzcyBleHBpcmVzLCBjbG9zZSBvdGhlciBzeXN0ZW0gd2luZG93cyBhbmQgbGF1bmNoIHRoZSByZWNlbnQgYXBwcworICAgICAqLworICAgIFJ1bm5hYmxlIG1Ib21lTG9uZ1ByZXNzID0gbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgICogRWF0IHRoZSBsb25ncHJlc3Mgc28gaXQgd29uJ3QgZGlzbWlzcyB0aGUgcmVjZW50IGFwcHMgZGlhbG9nIHdoZW4KKyAgICAgICAgICAgICAqIHRoZSB1c2VyIGxldHMgZ28gb2YgdGhlIGhvbWUga2V5CisgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIG1Ib21lUHJlc3NlZCA9IGZhbHNlOworICAgICAgICAgICAgcGVyZm9ybUhhcHRpY0ZlZWRiYWNrTHcobnVsbCwgSGFwdGljRmVlZGJhY2tDb25zdGFudHMuTE9OR19QUkVTUywgZmFsc2UpOworICAgICAgICAgICAgc2VuZENsb3NlU3lzdGVtV2luZG93cyhTWVNURU1fRElBTE9HX1JFQVNPTl9SRUNFTlRfQVBQUyk7CisgICAgICAgICAgICBzaG93UmVjZW50QXBwc0RpYWxvZygpOworICAgICAgICB9CisgICAgfTsKKworICAgIC8qKgorICAgICAqIENyZWF0ZSAoaWYgbmVjZXNzYXJ5KSBhbmQgbGF1bmNoIHRoZSByZWNlbnQgYXBwcyBkaWFsb2cKKyAgICAgKi8KKyAgICB2b2lkIHNob3dSZWNlbnRBcHBzRGlhbG9nKCkgeworICAgICAgICBpZiAobVJlY2VudEFwcHNEaWFsb2cgPT0gbnVsbCkgeworICAgICAgICAgICAgbVJlY2VudEFwcHNEaWFsb2cgPSBuZXcgUmVjZW50QXBwbGljYXRpb25zRGlhbG9nKG1Db250ZXh0KTsKKyAgICAgICAgfQorICAgICAgICBtUmVjZW50QXBwc0RpYWxvZy5zaG93KCk7CisgICAgfQorICAgIAorICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIHZvaWQgaW5pdChDb250ZXh0IGNvbnRleHQsIElXaW5kb3dNYW5hZ2VyIHdpbmRvd01hbmFnZXIsCisgICAgICAgICAgICBMb2NhbFBvd2VyTWFuYWdlciBwb3dlck1hbmFnZXIpIHsKKyAgICAgICAgbUNvbnRleHQgPSBjb250ZXh0OworICAgICAgICBtV2luZG93TWFuYWdlciA9IHdpbmRvd01hbmFnZXI7CisgICAgICAgIG1Qb3dlck1hbmFnZXIgPSBwb3dlck1hbmFnZXI7CisgICAgICAgIG1LZXlndWFyZE1lZGlhdG9yID0gbmV3IEtleWd1YXJkVmlld01lZGlhdG9yKGNvbnRleHQsIHRoaXMsIHBvd2VyTWFuYWdlcik7CisgICAgICAgIG1IYW5kbGVyID0gbmV3IEhhbmRsZXIoKTsKKyAgICAgICAgbU9yaWVudGF0aW9uTGlzdGVuZXIgPSBuZXcgTXlPcmllbnRhdGlvbkxpc3RlbmVyKG1Db250ZXh0KTsKKyAgICAgICAgU2V0dGluZ3NPYnNlcnZlciBzZXR0aW5nc09ic2VydmVyID0gbmV3IFNldHRpbmdzT2JzZXJ2ZXIobUhhbmRsZXIpOworICAgICAgICBzZXR0aW5nc09ic2VydmVyLm9ic2VydmUoKTsKKyAgICAgICAgbVNob3J0Y3V0TWFuYWdlciA9IG5ldyBTaG9ydGN1dE1hbmFnZXIoY29udGV4dCwgbUhhbmRsZXIpOworICAgICAgICBtU2hvcnRjdXRNYW5hZ2VyLm9ic2VydmUoKTsKKyAgICAgICAgbUhvbWVJbnRlbnQgPSAgbmV3IEludGVudChJbnRlbnQuQUNUSU9OX01BSU4sIG51bGwpOworICAgICAgICBtSG9tZUludGVudC5hZGRDYXRlZ29yeShJbnRlbnQuQ0FURUdPUllfSE9NRSk7CisgICAgICAgIG1Ib21lSW50ZW50LmFkZEZsYWdzKEludGVudC5GTEFHX0FDVElWSVRZX05FV19UQVNLCisgICAgICAgICAgICAgICAgfCBJbnRlbnQuRkxBR19BQ1RJVklUWV9SRVNFVF9UQVNLX0lGX05FRURFRCk7CisgICAgICAgIG1DYXJEb2NrSW50ZW50ID0gIG5ldyBJbnRlbnQoSW50ZW50LkFDVElPTl9NQUlOLCBudWxsKTsKKyAgICAgICAgbUNhckRvY2tJbnRlbnQuYWRkQ2F0ZWdvcnkoSW50ZW50LkNBVEVHT1JZX0NBUl9ET0NLKTsKKyAgICAgICAgbUNhckRvY2tJbnRlbnQuYWRkRmxhZ3MoSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX1RBU0sKKyAgICAgICAgICAgICAgICB8IEludGVudC5GTEFHX0FDVElWSVRZX1JFU0VUX1RBU0tfSUZfTkVFREVEKTsKKyAgICAgICAgbURlc2tEb2NrSW50ZW50ID0gIG5ldyBJbnRlbnQoSW50ZW50LkFDVElPTl9NQUlOLCBudWxsKTsKKyAgICAgICAgbURlc2tEb2NrSW50ZW50LmFkZENhdGVnb3J5KEludGVudC5DQVRFR09SWV9ERVNLX0RPQ0spOworICAgICAgICBtRGVza0RvY2tJbnRlbnQuYWRkRmxhZ3MoSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX1RBU0sKKyAgICAgICAgICAgICAgICB8IEludGVudC5GTEFHX0FDVElWSVRZX1JFU0VUX1RBU0tfSUZfTkVFREVEKTsKKyAgICAgICAgUG93ZXJNYW5hZ2VyIHBtID0gKFBvd2VyTWFuYWdlciljb250ZXh0LmdldFN5c3RlbVNlcnZpY2UoQ29udGV4dC5QT1dFUl9TRVJWSUNFKTsKKyAgICAgICAgbUJyb2FkY2FzdFdha2VMb2NrID0gcG0ubmV3V2FrZUxvY2soUG93ZXJNYW5hZ2VyLlBBUlRJQUxfV0FLRV9MT0NLLAorICAgICAgICAgICAgICAgICJQaG9uZVdpbmRvd01hbmFnZXIubUJyb2FkY2FzdFdha2VMb2NrIik7CisgICAgICAgIG1FbmFibGVTaGlmdE1lbnVCdWdSZXBvcnRzID0gIjEiLmVxdWFscyhTeXN0ZW1Qcm9wZXJ0aWVzLmdldCgicm8uZGVidWdnYWJsZSIpKTsKKyAgICAgICAgbUxpZE9wZW5Sb3RhdGlvbiA9IHJlYWRSb3RhdGlvbigKKyAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmludGVnZXIuY29uZmlnX2xpZE9wZW5Sb3RhdGlvbik7CisgICAgICAgIG1DYXJEb2NrUm90YXRpb24gPSByZWFkUm90YXRpb24oCisgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5pbnRlZ2VyLmNvbmZpZ19jYXJEb2NrUm90YXRpb24pOworICAgICAgICBtRGVza0RvY2tSb3RhdGlvbiA9IHJlYWRSb3RhdGlvbigKKyAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmludGVnZXIuY29uZmlnX2Rlc2tEb2NrUm90YXRpb24pOworICAgICAgICBtQ2FyRG9ja0VuYWJsZXNBY2NlbGVyb21ldGVyID0gbUNvbnRleHQuZ2V0UmVzb3VyY2VzKCkuZ2V0Qm9vbGVhbigKKyAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmJvb2wuY29uZmlnX2NhckRvY2tFbmFibGVzQWNjZWxlcm9tZXRlcik7CisgICAgICAgIG1EZXNrRG9ja0VuYWJsZXNBY2NlbGVyb21ldGVyID0gbUNvbnRleHQuZ2V0UmVzb3VyY2VzKCkuZ2V0Qm9vbGVhbigKKyAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmJvb2wuY29uZmlnX2Rlc2tEb2NrRW5hYmxlc0FjY2VsZXJvbWV0ZXIpOworICAgICAgICBtTGlkS2V5Ym9hcmRBY2Nlc3NpYmlsaXR5ID0gbUNvbnRleHQuZ2V0UmVzb3VyY2VzKCkuZ2V0SW50ZWdlcigKKyAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmludGVnZXIuY29uZmlnX2xpZEtleWJvYXJkQWNjZXNzaWJpbGl0eSk7CisgICAgICAgIG1MaWROYXZpZ2F0aW9uQWNjZXNzaWJpbGl0eSA9IG1Db250ZXh0LmdldFJlc291cmNlcygpLmdldEludGVnZXIoCisgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5pbnRlZ2VyLmNvbmZpZ19saWROYXZpZ2F0aW9uQWNjZXNzaWJpbGl0eSk7CisgICAgICAgIC8vIHJlZ2lzdGVyIGZvciBkb2NrIGV2ZW50cworICAgICAgICBJbnRlbnRGaWx0ZXIgZmlsdGVyID0gbmV3IEludGVudEZpbHRlcigpOworICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKFVpTW9kZU1hbmFnZXIuQUNUSU9OX0VOVEVSX0NBUl9NT0RFKTsKKyAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihVaU1vZGVNYW5hZ2VyLkFDVElPTl9FWElUX0NBUl9NT0RFKTsKKyAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihVaU1vZGVNYW5hZ2VyLkFDVElPTl9FTlRFUl9ERVNLX01PREUpOworICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKFVpTW9kZU1hbmFnZXIuQUNUSU9OX0VYSVRfREVTS19NT0RFKTsKKyAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihJbnRlbnQuQUNUSU9OX0RPQ0tfRVZFTlQpOworICAgICAgICBJbnRlbnQgaW50ZW50ID0gY29udGV4dC5yZWdpc3RlclJlY2VpdmVyKG1Eb2NrUmVjZWl2ZXIsIGZpbHRlcik7CisgICAgICAgIGlmIChpbnRlbnQgIT0gbnVsbCkgeworICAgICAgICAgICAgLy8gUmV0cmlldmUgY3VycmVudCBzdGlja3kgZG9jayBldmVudCBicm9hZGNhc3QuCisgICAgICAgICAgICBtRG9ja01vZGUgPSBpbnRlbnQuZ2V0SW50RXh0cmEoSW50ZW50LkVYVFJBX0RPQ0tfU1RBVEUsCisgICAgICAgICAgICAgICAgICAgIEludGVudC5FWFRSQV9ET0NLX1NUQVRFX1VORE9DS0VEKTsKKyAgICAgICAgfQorICAgICAgICBtVmlicmF0b3IgPSBuZXcgVmlicmF0b3IoKTsKKyAgICAgICAgbUxvbmdQcmVzc1ZpYmVQYXR0ZXJuID0gZ2V0TG9uZ0ludEFycmF5KG1Db250ZXh0LmdldFJlc291cmNlcygpLAorICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuYXJyYXkuY29uZmlnX2xvbmdQcmVzc1ZpYmVQYXR0ZXJuKTsKKyAgICAgICAgbVZpcnR1YWxLZXlWaWJlUGF0dGVybiA9IGdldExvbmdJbnRBcnJheShtQ29udGV4dC5nZXRSZXNvdXJjZXMoKSwKKyAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmFycmF5LmNvbmZpZ192aXJ0dWFsS2V5VmliZVBhdHRlcm4pOworICAgICAgICBtS2V5Ym9hcmRUYXBWaWJlUGF0dGVybiA9IGdldExvbmdJbnRBcnJheShtQ29udGV4dC5nZXRSZXNvdXJjZXMoKSwKKyAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmFycmF5LmNvbmZpZ19rZXlib2FyZFRhcFZpYmVQYXR0ZXJuKTsKKyAgICAgICAgbVNhZmVNb2RlRGlzYWJsZWRWaWJlUGF0dGVybiA9IGdldExvbmdJbnRBcnJheShtQ29udGV4dC5nZXRSZXNvdXJjZXMoKSwKKyAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmFycmF5LmNvbmZpZ19zYWZlTW9kZURpc2FibGVkVmliZVBhdHRlcm4pOworICAgICAgICBtU2FmZU1vZGVFbmFibGVkVmliZVBhdHRlcm4gPSBnZXRMb25nSW50QXJyYXkobUNvbnRleHQuZ2V0UmVzb3VyY2VzKCksCisgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5hcnJheS5jb25maWdfc2FmZU1vZGVFbmFibGVkVmliZVBhdHRlcm4pOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHVwZGF0ZVNldHRpbmdzKCkgeworICAgICAgICBDb250ZW50UmVzb2x2ZXIgcmVzb2x2ZXIgPSBtQ29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKTsKKyAgICAgICAgYm9vbGVhbiB1cGRhdGVSb3RhdGlvbiA9IGZhbHNlOworICAgICAgICBWaWV3IGFkZFZpZXcgPSBudWxsOworICAgICAgICBWaWV3IHJlbW92ZVZpZXcgPSBudWxsOworICAgICAgICBzeW5jaHJvbml6ZWQgKG1Mb2NrKSB7CisgICAgICAgICAgICBtRW5kY2FsbEJlaGF2aW9yID0gU2V0dGluZ3MuU3lzdGVtLmdldEludChyZXNvbHZlciwKKyAgICAgICAgICAgICAgICAgICAgU2V0dGluZ3MuU3lzdGVtLkVORF9CVVRUT05fQkVIQVZJT1IsCisgICAgICAgICAgICAgICAgICAgIFNldHRpbmdzLlN5c3RlbS5FTkRfQlVUVE9OX0JFSEFWSU9SX0RFRkFVTFQpOworICAgICAgICAgICAgbUluY2FsbFBvd2VyQmVoYXZpb3IgPSBTZXR0aW5ncy5TZWN1cmUuZ2V0SW50KHJlc29sdmVyLAorICAgICAgICAgICAgICAgICAgICBTZXR0aW5ncy5TZWN1cmUuSU5DQUxMX1BPV0VSX0JVVFRPTl9CRUhBVklPUiwKKyAgICAgICAgICAgICAgICAgICAgU2V0dGluZ3MuU2VjdXJlLklOQ0FMTF9QT1dFUl9CVVRUT05fQkVIQVZJT1JfREVGQVVMVCk7CisgICAgICAgICAgICBtRmFuY3lSb3RhdGlvbkFuaW1hdGlvbiA9IFNldHRpbmdzLlN5c3RlbS5nZXRJbnQocmVzb2x2ZXIsCisgICAgICAgICAgICAgICAgICAgICJmYW5jeV9yb3RhdGlvbl9hbmltIiwgMCkgIT0gMCA/IDB4ODAgOiAwOworICAgICAgICAgICAgaW50IGFjY2VsZXJvbWV0ZXJEZWZhdWx0ID0gU2V0dGluZ3MuU3lzdGVtLmdldEludChyZXNvbHZlciwKKyAgICAgICAgICAgICAgICAgICAgU2V0dGluZ3MuU3lzdGVtLkFDQ0VMRVJPTUVURVJfUk9UQVRJT04sIERFRkFVTFRfQUNDRUxFUk9NRVRFUl9ST1RBVElPTik7CisgICAgICAgICAgICBpZiAobUFjY2VsZXJvbWV0ZXJEZWZhdWx0ICE9IGFjY2VsZXJvbWV0ZXJEZWZhdWx0KSB7CisgICAgICAgICAgICAgICAgbUFjY2VsZXJvbWV0ZXJEZWZhdWx0ID0gYWNjZWxlcm9tZXRlckRlZmF1bHQ7CisgICAgICAgICAgICAgICAgdXBkYXRlT3JpZW50YXRpb25MaXN0ZW5lckxwKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobVN5c3RlbVJlYWR5KSB7CisgICAgICAgICAgICAgICAgaW50IHBvaW50ZXJMb2NhdGlvbiA9IFNldHRpbmdzLlN5c3RlbS5nZXRJbnQocmVzb2x2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICBTZXR0aW5ncy5TeXN0ZW0uUE9JTlRFUl9MT0NBVElPTiwgMCk7CisgICAgICAgICAgICAgICAgaWYgKG1Qb2ludGVyTG9jYXRpb25Nb2RlICE9IHBvaW50ZXJMb2NhdGlvbikgeworICAgICAgICAgICAgICAgICAgICBtUG9pbnRlckxvY2F0aW9uTW9kZSA9IHBvaW50ZXJMb2NhdGlvbjsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHBvaW50ZXJMb2NhdGlvbiAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobVBvaW50ZXJMb2NhdGlvblZpZXcgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Qb2ludGVyTG9jYXRpb25WaWV3ID0gbmV3IFBvaW50ZXJMb2NhdGlvblZpZXcobUNvbnRleHQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Qb2ludGVyTG9jYXRpb25WaWV3LnNldFByaW50Q29vcmRzKGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRWaWV3ID0gbVBvaW50ZXJMb2NhdGlvblZpZXc7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVWaWV3ID0gbVBvaW50ZXJMb2NhdGlvblZpZXc7CisgICAgICAgICAgICAgICAgICAgICAgICBtUG9pbnRlckxvY2F0aW9uVmlldyA9IG51bGw7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyB1c2Ugc2NyZWVuIG9mZiB0aW1lb3V0IHNldHRpbmcgYXMgdGhlIHRpbWVvdXQgZm9yIHRoZSBsb2Nrc2NyZWVuCisgICAgICAgICAgICBtTG9ja1NjcmVlblRpbWVvdXQgPSBTZXR0aW5ncy5TeXN0ZW0uZ2V0SW50KHJlc29sdmVyLAorICAgICAgICAgICAgICAgICAgICBTZXR0aW5ncy5TeXN0ZW0uU0NSRUVOX09GRl9USU1FT1VULCAwKTsKKyAgICAgICAgICAgIFN0cmluZyBpbUlkID0gU2V0dGluZ3MuU2VjdXJlLmdldFN0cmluZyhyZXNvbHZlciwKKyAgICAgICAgICAgICAgICAgICAgU2V0dGluZ3MuU2VjdXJlLkRFRkFVTFRfSU5QVVRfTUVUSE9EKTsKKyAgICAgICAgICAgIGJvb2xlYW4gaGFzU29mdElucHV0ID0gaW1JZCAhPSBudWxsICYmIGltSWQubGVuZ3RoKCkgPiAwOworICAgICAgICAgICAgaWYgKG1IYXNTb2Z0SW5wdXQgIT0gaGFzU29mdElucHV0KSB7CisgICAgICAgICAgICAgICAgbUhhc1NvZnRJbnB1dCA9IGhhc1NvZnRJbnB1dDsKKyAgICAgICAgICAgICAgICB1cGRhdGVSb3RhdGlvbiA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKHVwZGF0ZVJvdGF0aW9uKSB7CisgICAgICAgICAgICB1cGRhdGVSb3RhdGlvbigwKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoYWRkVmlldyAhPSBudWxsKSB7CisgICAgICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcyBscCA9IG5ldyBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcygKKyAgICAgICAgICAgICAgICAgICAgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuTUFUQ0hfUEFSRU5ULAorICAgICAgICAgICAgICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5NQVRDSF9QQVJFTlQpOworICAgICAgICAgICAgbHAudHlwZSA9IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLlRZUEVfU1lTVEVNX09WRVJMQVk7CisgICAgICAgICAgICBscC5mbGFncyA9IAorICAgICAgICAgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfTk9UX1RPVUNIQUJMRXwKKyAgICAgICAgICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX05PVF9GT0NVU0FCTEV8CisgICAgICAgICAgICAgICAgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19MQVlPVVRfSU5fU0NSRUVOOworICAgICAgICAgICAgbHAuZm9ybWF0ID0gUGl4ZWxGb3JtYXQuVFJBTlNMVUNFTlQ7CisgICAgICAgICAgICBscC5zZXRUaXRsZSgiUG9pbnRlckxvY2F0aW9uIik7CisgICAgICAgICAgICBXaW5kb3dNYW5hZ2VySW1wbCB3bSA9IChXaW5kb3dNYW5hZ2VySW1wbCkKKyAgICAgICAgICAgICAgICAgICAgbUNvbnRleHQuZ2V0U3lzdGVtU2VydmljZShDb250ZXh0LldJTkRPV19TRVJWSUNFKTsKKyAgICAgICAgICAgIHdtLmFkZFZpZXcoYWRkVmlldywgbHApOworICAgICAgICB9CisgICAgICAgIGlmIChyZW1vdmVWaWV3ICE9IG51bGwpIHsKKyAgICAgICAgICAgIFdpbmRvd01hbmFnZXJJbXBsIHdtID0gKFdpbmRvd01hbmFnZXJJbXBsKQorICAgICAgICAgICAgICAgICAgICBtQ29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuV0lORE9XX1NFUlZJQ0UpOworICAgICAgICAgICAgd20ucmVtb3ZlVmlldyhyZW1vdmVWaWV3KTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwcml2YXRlIGludCByZWFkUm90YXRpb24oaW50IHJlc0lEKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBpbnQgcm90YXRpb24gPSBtQ29udGV4dC5nZXRSZXNvdXJjZXMoKS5nZXRJbnRlZ2VyKHJlc0lEKTsKKyAgICAgICAgICAgIHN3aXRjaCAocm90YXRpb24pIHsKKyAgICAgICAgICAgICAgICBjYXNlIDA6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTdXJmYWNlLlJPVEFUSU9OXzA7CisgICAgICAgICAgICAgICAgY2FzZSA5MDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN1cmZhY2UuUk9UQVRJT05fOTA7CisgICAgICAgICAgICAgICAgY2FzZSAxODA6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTdXJmYWNlLlJPVEFUSU9OXzE4MDsKKyAgICAgICAgICAgICAgICBjYXNlIDI3MDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN1cmZhY2UuUk9UQVRJT05fMjcwOworICAgICAgICAgICAgfQorICAgICAgICB9IGNhdGNoIChSZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgLy8gZmFsbCB0aHJvdWdoCisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIGludCBjaGVja0FkZFBlcm1pc3Npb24oV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMgYXR0cnMpIHsKKyAgICAgICAgaW50IHR5cGUgPSBhdHRycy50eXBlOworICAgICAgICAKKyAgICAgICAgaWYgKHR5cGUgPCBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GSVJTVF9TWVNURU1fV0lORE9XCisgICAgICAgICAgICAgICAgfHwgdHlwZSA+IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkxBU1RfU1lTVEVNX1dJTkRPVykgeworICAgICAgICAgICAgcmV0dXJuIFdpbmRvd01hbmFnZXJJbXBsLkFERF9PS0FZOworICAgICAgICB9CisgICAgICAgIFN0cmluZyBwZXJtaXNzaW9uID0gbnVsbDsKKyAgICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAgICAgICBjYXNlIFRZUEVfVE9BU1Q6CisgICAgICAgICAgICAgICAgLy8gWFhYIHJpZ2h0IG5vdyB0aGUgYXBwIHByb2Nlc3MgaGFzIGNvbXBsZXRlIGNvbnRyb2wgb3ZlcgorICAgICAgICAgICAgICAgIC8vIHRoaXMuLi4gIHNob3VsZCBpbnRyb2R1Y2UgYSB0b2tlbiB0byBsZXQgdGhlIHN5c3RlbQorICAgICAgICAgICAgICAgIC8vIG1vbml0b3IvY29udHJvbCB3aGF0IHRoZXkgYXJlIGRvaW5nLgorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBUWVBFX0lOUFVUX01FVEhPRDoKKyAgICAgICAgICAgIGNhc2UgVFlQRV9XQUxMUEFQRVI6CisgICAgICAgICAgICAgICAgLy8gVGhlIHdpbmRvdyBtYW5hZ2VyIHdpbGwgY2hlY2sgdGhlc2UuCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFRZUEVfUEhPTkU6CisgICAgICAgICAgICBjYXNlIFRZUEVfUFJJT1JJVFlfUEhPTkU6CisgICAgICAgICAgICBjYXNlIFRZUEVfU1lTVEVNX0FMRVJUOgorICAgICAgICAgICAgY2FzZSBUWVBFX1NZU1RFTV9FUlJPUjoKKyAgICAgICAgICAgIGNhc2UgVFlQRV9TWVNURU1fT1ZFUkxBWToKKyAgICAgICAgICAgICAgICBwZXJtaXNzaW9uID0gYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uLlNZU1RFTV9BTEVSVF9XSU5ET1c7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHBlcm1pc3Npb24gPSBhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24uSU5URVJOQUxfU1lTVEVNX1dJTkRPVzsKKyAgICAgICAgfQorICAgICAgICBpZiAocGVybWlzc2lvbiAhPSBudWxsKSB7CisgICAgICAgICAgICBpZiAobUNvbnRleHQuY2hlY2tDYWxsaW5nT3JTZWxmUGVybWlzc2lvbihwZXJtaXNzaW9uKQorICAgICAgICAgICAgICAgICAgICAhPSBQYWNrYWdlTWFuYWdlci5QRVJNSVNTSU9OX0dSQU5URUQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gV2luZG93TWFuYWdlckltcGwuQUREX1BFUk1JU1NJT05fREVOSUVEOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBXaW5kb3dNYW5hZ2VySW1wbC5BRERfT0tBWTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgYWRqdXN0V2luZG93UGFyYW1zTHcoV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMgYXR0cnMpIHsKKyAgICAgICAgc3dpdGNoIChhdHRycy50eXBlKSB7CisgICAgICAgICAgICBjYXNlIFRZUEVfU1lTVEVNX09WRVJMQVk6CisgICAgICAgICAgICBjYXNlIFRZUEVfVE9BU1Q6CisgICAgICAgICAgICAgICAgLy8gVGhlc2UgdHlwZXMgb2Ygd2luZG93cyBjYW4ndCByZWNlaXZlIGlucHV0IGV2ZW50cy4KKyAgICAgICAgICAgICAgICBhdHRycy5mbGFncyB8PSBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX05PVF9GT0NVU0FCTEUKKyAgICAgICAgICAgICAgICAgICAgICAgIHwgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19OT1RfVE9VQ0hBQkxFOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHZvaWQgcmVhZExpZFN0YXRlKCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgaW50IHN3ID0gbVdpbmRvd01hbmFnZXIuZ2V0U3dpdGNoU3RhdGUoU1dfTElEKTsKKyAgICAgICAgICAgIGlmIChzdyA+PSAwKSB7CisgICAgICAgICAgICAgICAgbUxpZE9wZW4gPSBzdyA9PSAwOworICAgICAgICAgICAgfQorICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgLy8gSWdub3JlCisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBpbnQgZGV0ZXJtaW5lSGlkZGVuU3RhdGUoYm9vbGVhbiBsaWRPcGVuLAorICAgICAgICAgICAgaW50IG1vZGUsIGludCBoaWRkZW5WYWx1ZSwgaW50IHZpc2libGVWYWx1ZSkgeworICAgICAgICBzd2l0Y2ggKG1vZGUpIHsKKyAgICAgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICAgICByZXR1cm4gbGlkT3BlbiA/IHZpc2libGVWYWx1ZSA6IGhpZGRlblZhbHVlOworICAgICAgICAgICAgY2FzZSAyOgorICAgICAgICAgICAgICAgIHJldHVybiBsaWRPcGVuID8gaGlkZGVuVmFsdWUgOiB2aXNpYmxlVmFsdWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHZpc2libGVWYWx1ZTsKKyAgICB9CisgICAgCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgdm9pZCBhZGp1c3RDb25maWd1cmF0aW9uTHcoQ29uZmlndXJhdGlvbiBjb25maWcpIHsKKyAgICAgICAgcmVhZExpZFN0YXRlKCk7CisgICAgICAgIGZpbmFsIGJvb2xlYW4gbGlkT3BlbiA9ICFLRVlCT0FSRF9BTFdBWVNfSElEREVOICYmIG1MaWRPcGVuOworICAgICAgICBtUG93ZXJNYW5hZ2VyLnNldEtleWJvYXJkVmlzaWJpbGl0eShsaWRPcGVuKTsKKyAgICAgICAgY29uZmlnLmhhcmRLZXlib2FyZEhpZGRlbiA9IGRldGVybWluZUhpZGRlblN0YXRlKGxpZE9wZW4sCisgICAgICAgICAgICAgICAgbUxpZEtleWJvYXJkQWNjZXNzaWJpbGl0eSwgQ29uZmlndXJhdGlvbi5IQVJES0VZQk9BUkRISURERU5fWUVTLAorICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24uSEFSREtFWUJPQVJESElEREVOX05PKTsKKyAgICAgICAgY29uZmlnLm5hdmlnYXRpb25IaWRkZW4gPSBkZXRlcm1pbmVIaWRkZW5TdGF0ZShsaWRPcGVuLAorICAgICAgICAgICAgICAgIG1MaWROYXZpZ2F0aW9uQWNjZXNzaWJpbGl0eSwgQ29uZmlndXJhdGlvbi5OQVZJR0FUSU9OSElEREVOX1lFUywKKyAgICAgICAgICAgICAgICBDb25maWd1cmF0aW9uLk5BVklHQVRJT05ISURERU5fTk8pOworICAgICAgICBjb25maWcua2V5Ym9hcmRIaWRkZW4gPSAoY29uZmlnLmhhcmRLZXlib2FyZEhpZGRlbgorICAgICAgICAgICAgICAgICAgICAgICAgPT0gQ29uZmlndXJhdGlvbi5IQVJES0VZQk9BUkRISURERU5fTk8gfHwgbUhhc1NvZnRJbnB1dCkKKyAgICAgICAgICAgICAgICA/IENvbmZpZ3VyYXRpb24uS0VZQk9BUkRISURERU5fTk8KKyAgICAgICAgICAgICAgICA6IENvbmZpZ3VyYXRpb24uS0VZQk9BUkRISURERU5fWUVTOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBkaXNwYXRjaGVkUG9pbnRlckV2ZW50THcoTW90aW9uRXZlbnQgZXYsIGludCB0YXJnZXRYLCBpbnQgdGFyZ2V0WSkgeworICAgICAgICBpZiAobVBvaW50ZXJMb2NhdGlvblZpZXcgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHN5bmNocm9uaXplZCAobUxvY2spIHsKKyAgICAgICAgICAgIGlmIChtUG9pbnRlckxvY2F0aW9uVmlldyA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZXYub2Zmc2V0TG9jYXRpb24odGFyZ2V0WCwgdGFyZ2V0WSk7CisgICAgICAgICAgICBtUG9pbnRlckxvY2F0aW9uVmlldy5hZGRUb3VjaEV2ZW50KGV2KTsKKyAgICAgICAgICAgIGV2Lm9mZnNldExvY2F0aW9uKC10YXJnZXRYLCAtdGFyZ2V0WSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgaW50IHdpbmRvd1R5cGVUb0xheWVyTHcoaW50IHR5cGUpIHsKKyAgICAgICAgaWYgKHR5cGUgPj0gRklSU1RfQVBQTElDQVRJT05fV0lORE9XICYmIHR5cGUgPD0gTEFTVF9BUFBMSUNBVElPTl9XSU5ET1cpIHsKKyAgICAgICAgICAgIHJldHVybiBBUFBMSUNBVElPTl9MQVlFUjsKKyAgICAgICAgfQorICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2FzZSBUWVBFX1NUQVRVU19CQVI6CisgICAgICAgICAgICByZXR1cm4gU1RBVFVTX0JBUl9MQVlFUjsKKyAgICAgICAgY2FzZSBUWVBFX1NUQVRVU19CQVJfUEFORUw6CisgICAgICAgICAgICByZXR1cm4gU1RBVFVTX0JBUl9QQU5FTF9MQVlFUjsKKyAgICAgICAgY2FzZSBUWVBFX1NZU1RFTV9ESUFMT0c6CisgICAgICAgICAgICByZXR1cm4gU1lTVEVNX0RJQUxPR19MQVlFUjsKKyAgICAgICAgY2FzZSBUWVBFX1NFQVJDSF9CQVI6CisgICAgICAgICAgICByZXR1cm4gU0VBUkNIX0JBUl9MQVlFUjsKKyAgICAgICAgY2FzZSBUWVBFX1BIT05FOgorICAgICAgICAgICAgcmV0dXJuIFBIT05FX0xBWUVSOworICAgICAgICBjYXNlIFRZUEVfS0VZR1VBUkQ6CisgICAgICAgICAgICByZXR1cm4gS0VZR1VBUkRfTEFZRVI7CisgICAgICAgIGNhc2UgVFlQRV9LRVlHVUFSRF9ESUFMT0c6CisgICAgICAgICAgICByZXR1cm4gS0VZR1VBUkRfRElBTE9HX0xBWUVSOworICAgICAgICBjYXNlIFRZUEVfU1lTVEVNX0FMRVJUOgorICAgICAgICAgICAgcmV0dXJuIFNZU1RFTV9BTEVSVF9MQVlFUjsKKyAgICAgICAgY2FzZSBUWVBFX1NZU1RFTV9FUlJPUjoKKyAgICAgICAgICAgIHJldHVybiBTWVNURU1fRVJST1JfTEFZRVI7CisgICAgICAgIGNhc2UgVFlQRV9JTlBVVF9NRVRIT0Q6CisgICAgICAgICAgICByZXR1cm4gSU5QVVRfTUVUSE9EX0xBWUVSOworICAgICAgICBjYXNlIFRZUEVfSU5QVVRfTUVUSE9EX0RJQUxPRzoKKyAgICAgICAgICAgIHJldHVybiBJTlBVVF9NRVRIT0RfRElBTE9HX0xBWUVSOworICAgICAgICBjYXNlIFRZUEVfU1lTVEVNX09WRVJMQVk6CisgICAgICAgICAgICByZXR1cm4gU1lTVEVNX09WRVJMQVlfTEFZRVI7CisgICAgICAgIGNhc2UgVFlQRV9QUklPUklUWV9QSE9ORToKKyAgICAgICAgICAgIHJldHVybiBQUklPUklUWV9QSE9ORV9MQVlFUjsKKyAgICAgICAgY2FzZSBUWVBFX1RPQVNUOgorICAgICAgICAgICAgcmV0dXJuIFRPQVNUX0xBWUVSOworICAgICAgICBjYXNlIFRZUEVfV0FMTFBBUEVSOgorICAgICAgICAgICAgcmV0dXJuIFdBTExQQVBFUl9MQVlFUjsKKyAgICAgICAgfQorICAgICAgICBMb2cuZShUQUcsICJVbmtub3duIHdpbmRvdyB0eXBlOiAiICsgdHlwZSk7CisgICAgICAgIHJldHVybiBBUFBMSUNBVElPTl9MQVlFUjsKKyAgICB9CisKKyAgICAvKioge0Bpbmhlcml0RG9jfSAqLworICAgIHB1YmxpYyBpbnQgc3ViV2luZG93VHlwZVRvTGF5ZXJMdyhpbnQgdHlwZSkgeworICAgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2FzZSBUWVBFX0FQUExJQ0FUSU9OX1BBTkVMOgorICAgICAgICBjYXNlIFRZUEVfQVBQTElDQVRJT05fQVRUQUNIRURfRElBTE9HOgorICAgICAgICAgICAgcmV0dXJuIEFQUExJQ0FUSU9OX1BBTkVMX1NVQkxBWUVSOworICAgICAgICBjYXNlIFRZUEVfQVBQTElDQVRJT05fTUVESUE6CisgICAgICAgICAgICByZXR1cm4gQVBQTElDQVRJT05fTUVESUFfU1VCTEFZRVI7CisgICAgICAgIGNhc2UgVFlQRV9BUFBMSUNBVElPTl9NRURJQV9PVkVSTEFZOgorICAgICAgICAgICAgcmV0dXJuIEFQUExJQ0FUSU9OX01FRElBX09WRVJMQVlfU1VCTEFZRVI7CisgICAgICAgIGNhc2UgVFlQRV9BUFBMSUNBVElPTl9TVUJfUEFORUw6CisgICAgICAgICAgICByZXR1cm4gQVBQTElDQVRJT05fU1VCX1BBTkVMX1NVQkxBWUVSOworICAgICAgICB9CisgICAgICAgIExvZy5lKFRBRywgIlVua25vd24gc3ViLXdpbmRvdyB0eXBlOiAiICsgdHlwZSk7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgZ2V0TWF4V2FsbHBhcGVyTGF5ZXIoKSB7CisgICAgICAgIHJldHVybiBTVEFUVVNfQkFSX0xBWUVSOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGRvZXNGb3JjZUhpZGUoV2luZG93U3RhdGUgd2luLCBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcyBhdHRycykgeworICAgICAgICByZXR1cm4gYXR0cnMudHlwZSA9PSBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5UWVBFX0tFWUdVQVJEOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgYm9vbGVhbiBjYW5CZUZvcmNlSGlkZGVuKFdpbmRvd1N0YXRlIHdpbiwgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMgYXR0cnMpIHsKKyAgICAgICAgcmV0dXJuIGF0dHJzLnR5cGUgIT0gV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuVFlQRV9TVEFUVVNfQkFSCisgICAgICAgICAgICAgICAgJiYgYXR0cnMudHlwZSAhPSBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5UWVBFX1dBTExQQVBFUjsKKyAgICB9CisgICAgCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgVmlldyBhZGRTdGFydGluZ1dpbmRvdyhJQmluZGVyIGFwcFRva2VuLCBTdHJpbmcgcGFja2FnZU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHRoZW1lLCBDaGFyU2VxdWVuY2Ugbm9uTG9jYWxpemVkTGFiZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxhYmVsUmVzLCBpbnQgaWNvbikgeworICAgICAgICBpZiAoIVNIT1dfU1RBUlRJTkdfQU5JTUFUSU9OUykgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHBhY2thZ2VOYW1lID09IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB0cnkgeworICAgICAgICAgICAgQ29udGV4dCBjb250ZXh0ID0gbUNvbnRleHQ7CisgICAgICAgICAgICBib29sZWFuIHNldFRoZW1lID0gZmFsc2U7CisgICAgICAgICAgICAvL0xvZy5pKFRBRywgImFkZFN0YXJ0aW5nV2luZG93ICIgKyBwYWNrYWdlTmFtZSArICI6IG5vbkxvY2FsaXplZExhYmVsPSIKKyAgICAgICAgICAgIC8vICAgICAgICArIG5vbkxvY2FsaXplZExhYmVsICsgIiB0aGVtZT0iICsgSW50ZWdlci50b0hleFN0cmluZyh0aGVtZSkpOworICAgICAgICAgICAgaWYgKHRoZW1lICE9IDAgfHwgbGFiZWxSZXMgIT0gMCkgeworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRleHQgPSBjb250ZXh0LmNyZWF0ZVBhY2thZ2VDb250ZXh0KHBhY2thZ2VOYW1lLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRoZW1lICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0VGhlbWUodGhlbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgc2V0VGhlbWUgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gSWdub3JlCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFzZXRUaGVtZSkgeworICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0VGhlbWUoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZS5UaGVtZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIFdpbmRvdyB3aW4gPSBQb2xpY3lNYW5hZ2VyLm1ha2VOZXdXaW5kb3coY29udGV4dCk7CisgICAgICAgICAgICBpZiAod2luLmdldFdpbmRvd1N0eWxlKCkuZ2V0Qm9vbGVhbigKKyAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuV2luZG93X3dpbmRvd0Rpc2FibGVQcmV2aWV3LCBmYWxzZSkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgUmVzb3VyY2VzIHIgPSBjb250ZXh0LmdldFJlc291cmNlcygpOworICAgICAgICAgICAgd2luLnNldFRpdGxlKHIuZ2V0VGV4dChsYWJlbFJlcywgbm9uTG9jYWxpemVkTGFiZWwpKTsKKyAgICAKKyAgICAgICAgICAgIHdpbi5zZXRUeXBlKAorICAgICAgICAgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLlRZUEVfQVBQTElDQVRJT05fU1RBUlRJTkcpOworICAgICAgICAgICAgLy8gRm9yY2UgdGhlIHdpbmRvdyBmbGFnczogdGhpcyBpcyBhIGZha2Ugd2luZG93LCBzbyBpdCBpcyBub3QgcmVhbGx5CisgICAgICAgICAgICAvLyB0b3VjaGFibGUgb3IgZm9jdXNhYmxlIGJ5IHRoZSB1c2VyLiAgV2UgYWxzbyBhZGQgaW4gdGhlIEFMVF9GT0NVU0FCTEVfSU0KKyAgICAgICAgICAgIC8vIGZsYWcgYmVjYXVzZSB3ZSBkbyBrbm93IHRoYXQgdGhlIG5leHQgd2luZG93IHdpbGwgdGFrZSBpbnB1dAorICAgICAgICAgICAgLy8gZm9jdXMsIHNvIHdlIHdhbnQgdG8gZ2V0IHRoZSBJTUUgd2luZG93IHVwIG9uIHRvcCBvZiB1cyByaWdodCBhd2F5LgorICAgICAgICAgICAgd2luLnNldEZsYWdzKAorICAgICAgICAgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfTk9UX1RPVUNIQUJMRXwKKyAgICAgICAgICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX05PVF9GT0NVU0FCTEV8CisgICAgICAgICAgICAgICAgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19BTFRfRk9DVVNBQkxFX0lNLAorICAgICAgICAgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfTk9UX1RPVUNIQUJMRXwKKyAgICAgICAgICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX05PVF9GT0NVU0FCTEV8CisgICAgICAgICAgICAgICAgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19BTFRfRk9DVVNBQkxFX0lNKTsKKyAgICAKKyAgICAgICAgICAgIHdpbi5zZXRMYXlvdXQoV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuTUFUQ0hfUEFSRU5ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5NQVRDSF9QQVJFTlQpOworICAgIAorICAgICAgICAgICAgZmluYWwgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMgcGFyYW1zID0gd2luLmdldEF0dHJpYnV0ZXMoKTsKKyAgICAgICAgICAgIHBhcmFtcy50b2tlbiA9IGFwcFRva2VuOworICAgICAgICAgICAgcGFyYW1zLnBhY2thZ2VOYW1lID0gcGFja2FnZU5hbWU7CisgICAgICAgICAgICBwYXJhbXMud2luZG93QW5pbWF0aW9ucyA9IHdpbi5nZXRXaW5kb3dTdHlsZSgpLmdldFJlc291cmNlSWQoCisgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLldpbmRvd193aW5kb3dBbmltYXRpb25TdHlsZSwgMCk7CisgICAgICAgICAgICBwYXJhbXMuc2V0VGl0bGUoIlN0YXJ0aW5nICIgKyBwYWNrYWdlTmFtZSk7CisKKyAgICAgICAgICAgIFdpbmRvd01hbmFnZXJJbXBsIHdtID0gKFdpbmRvd01hbmFnZXJJbXBsKQorICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmdldFN5c3RlbVNlcnZpY2UoQ29udGV4dC5XSU5ET1dfU0VSVklDRSk7CisgICAgICAgICAgICBWaWV3IHZpZXcgPSB3aW4uZ2V0RGVjb3JWaWV3KCk7CisKKyAgICAgICAgICAgIGlmICh3aW4uaXNGbG9hdGluZygpKSB7CisgICAgICAgICAgICAgICAgLy8gV2hvb3BzLCB0aGVyZSBpcyBubyB3YXkgdG8gZGlzcGxheSBhbiBhbmltYXRpb24vcHJldmlldworICAgICAgICAgICAgICAgIC8vIG9mIHN1Y2ggYSB0aGluZyEgIEFmdGVyIGFsbCB0aGF0IHdvcmsuLi4gIGxldCdzIHNraXAgaXQuCisgICAgICAgICAgICAgICAgLy8gKE5vdGUgdGhhdCB3ZSBtdXN0IGRvIHRoaXMgaGVyZSBiZWNhdXNlIGl0IGlzIGluCisgICAgICAgICAgICAgICAgLy8gZ2V0RGVjb3JWaWV3KCkgd2hlcmUgdGhlIHRoZW1lIGlzIGV2YWx1YXRlZC4uLiAgbWF5YmUKKyAgICAgICAgICAgICAgICAvLyB3ZSBzaG91bGQgcGVlayB0aGUgZmxvYXRpbmcgYXR0cmlidXRlIGZyb20gdGhlIHRoZW1lCisgICAgICAgICAgICAgICAgLy8gZWFybGllci4pCisgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChsb2NhbExPR1YpIExvZy52KAorICAgICAgICAgICAgICAgIFRBRywgIkFkZGluZyBzdGFydGluZyB3aW5kb3cgZm9yICIgKyBwYWNrYWdlTmFtZQorICAgICAgICAgICAgICAgICsgIiAvICIgKyBhcHBUb2tlbiArICI6ICIKKyAgICAgICAgICAgICAgICArICh2aWV3LmdldFBhcmVudCgpICE9IG51bGwgPyB2aWV3IDogbnVsbCkpOworCisgICAgICAgICAgICB3bS5hZGRWaWV3KHZpZXcsIHBhcmFtcyk7CisKKyAgICAgICAgICAgIC8vIE9ubHkgcmV0dXJuIHRoZSB2aWV3IGlmIGl0IHdhcyBzdWNjZXNzZnVsbHkgYWRkZWQgdG8gdGhlCisgICAgICAgICAgICAvLyB3aW5kb3cgbWFuYWdlci4uLiB3aGljaCB3ZSBjYW4gdGVsbCBieSBpdCBoYXZpbmcgYSBwYXJlbnQuCisgICAgICAgICAgICByZXR1cm4gdmlldy5nZXRQYXJlbnQoKSAhPSBudWxsID8gdmlldyA6IG51bGw7CisgICAgICAgIH0gY2F0Y2ggKFdpbmRvd01hbmFnZXJJbXBsLkJhZFRva2VuRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIC8vIGlnbm9yZQorICAgICAgICAgICAgTG9nLncoVEFHLCBhcHBUb2tlbiArICIgYWxyZWFkeSBydW5uaW5nLCBzdGFydGluZyB3aW5kb3cgbm90IGRpc3BsYXllZCIpOworICAgICAgICB9IGNhdGNoIChSdW50aW1lRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIC8vIGRvbid0IGNyYXNoIGlmIHNvbWV0aGluZyBlbHNlIGJhZCBoYXBwZW5zLCBmb3IgZXhhbXBsZSBhCisgICAgICAgICAgICAvLyBmYWlsdXJlIGxvYWRpbmcgcmVzb3VyY2VzIGJlY2F1c2Ugd2UgYXJlIGxvYWRpbmcgZnJvbSBhbiBhcHAKKyAgICAgICAgICAgIC8vIG9uIGV4dGVybmFsIHN0b3JhZ2UgdGhhdCBoYXMgYmVlbiB1bm1vdW50ZWQuCisgICAgICAgICAgICBMb2cudyhUQUcsIGFwcFRva2VuICsgIiBmYWlsZWQgY3JlYXRpbmcgc3RhcnRpbmcgd2luZG93IiwgZSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICAvKioge0Bpbmhlcml0RG9jfSAqLworICAgIHB1YmxpYyB2b2lkIHJlbW92ZVN0YXJ0aW5nV2luZG93KElCaW5kZXIgYXBwVG9rZW4sIFZpZXcgd2luZG93KSB7CisgICAgICAgIC8vIFJ1bnRpbWVFeGNlcHRpb24gZSA9IG5ldyBSdW50aW1lRXhjZXB0aW9uKCk7CisgICAgICAgIC8vIExvZy5pKFRBRywgInJlbW92ZSAiICsgYXBwVG9rZW4gKyAiICIgKyB3aW5kb3csIGUpOworCisgICAgICAgIGlmIChsb2NhbExPR1YpIExvZy52KAorICAgICAgICAgICAgVEFHLCAiUmVtb3Zpbmcgc3RhcnRpbmcgd2luZG93IGZvciAiICsgYXBwVG9rZW4gKyAiOiAiICsgd2luZG93KTsKKworICAgICAgICBpZiAod2luZG93ICE9IG51bGwpIHsKKyAgICAgICAgICAgIFdpbmRvd01hbmFnZXJJbXBsIHdtID0gKFdpbmRvd01hbmFnZXJJbXBsKSBtQ29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuV0lORE9XX1NFUlZJQ0UpOworICAgICAgICAgICAgd20ucmVtb3ZlVmlldyh3aW5kb3cpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUHJlZmxpZ2h0IGFkZGluZyBhIHdpbmRvdyB0byB0aGUgc3lzdGVtLgorICAgICAqIAorICAgICAqIEN1cnJlbnRseSBlbmZvcmNlcyB0aGF0IHRocmVlIHdpbmRvdyB0eXBlcyBhcmUgc2luZ2xldG9uczoKKyAgICAgKiA8dWw+CisgICAgICogPGxpPlNUQVRVU19CQVJfVFlQRTwvbGk+CisgICAgICogPGxpPktFWUdVQVJEX1RZUEU8L2xpPgorICAgICAqIDwvdWw+CisgICAgICogCisgICAgICogQHBhcmFtIHdpbiBUaGUgd2luZG93IHRvIGJlIGFkZGVkCisgICAgICogQHBhcmFtIGF0dHJzIEluZm9ybWF0aW9uIGFib3V0IHRoZSB3aW5kb3cgdG8gYmUgYWRkZWQKKyAgICAgKiAKKyAgICAgKiBAcmV0dXJuIElmIG9rLCBXaW5kb3dNYW5hZ2VySW1wbC5BRERfT0tBWS4gIElmIHRvbyBtYW55IHNpbmdsZXRvbnMsIFdpbmRvd01hbmFnZXJJbXBsLkFERF9NVUxUSVBMRV9TSU5HTEVUT04KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IHByZXBhcmVBZGRXaW5kb3dMdyhXaW5kb3dTdGF0ZSB3aW4sIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIGF0dHJzKSB7CisgICAgICAgIHN3aXRjaCAoYXR0cnMudHlwZSkgeworICAgICAgICAgICAgY2FzZSBUWVBFX1NUQVRVU19CQVI6CisgICAgICAgICAgICAgICAgbUNvbnRleHQuZW5mb3JjZUNhbGxpbmdPclNlbGZQZXJtaXNzaW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uLlNUQVRVU19CQVJfU0VSVklDRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJQaG9uZVdpbmRvd01hbmFnZXIiKTsKKyAgICAgICAgICAgICAgICAvLyBUT0RPOiBOZWVkIHRvIGhhbmRsZSB0aGUgcmFjZSBjb25kaXRpb24gb2YgdGhlIHN0YXR1cyBiYXIgcHJvYworICAgICAgICAgICAgICAgIC8vIGR5aW5nIGFuZCBjb21pbmcgYmFjayBiZWZvcmUgdGhlIHJlbW92ZVdpbmRvd0x3IGNsZWFudXAgaGFzIGhhcHBlbmVkLgorICAgICAgICAgICAgICAgIGlmIChtU3RhdHVzQmFyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFdpbmRvd01hbmFnZXJJbXBsLkFERF9NVUxUSVBMRV9TSU5HTEVUT047CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1TdGF0dXNCYXIgPSB3aW47CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFRZUEVfU1RBVFVTX0JBUl9QQU5FTDoKKyAgICAgICAgICAgICAgICBtQ29udGV4dC5lbmZvcmNlQ2FsbGluZ09yU2VsZlBlcm1pc3Npb24oCisgICAgICAgICAgICAgICAgICAgICAgICBhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24uU1RBVFVTX0JBUl9TRVJWSUNFLAorICAgICAgICAgICAgICAgICAgICAgICAgIlBob25lV2luZG93TWFuYWdlciIpOworICAgICAgICAgICAgICAgIG1TdGF0dXNCYXJQYW5lbHMuYWRkKHdpbik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFRZUEVfS0VZR1VBUkQ6CisgICAgICAgICAgICAgICAgaWYgKG1LZXlndWFyZCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBXaW5kb3dNYW5hZ2VySW1wbC5BRERfTVVMVElQTEVfU0lOR0xFVE9OOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtS2V5Z3VhcmQgPSB3aW47CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFdpbmRvd01hbmFnZXJJbXBsLkFERF9PS0FZOworICAgIH0KKworICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIHZvaWQgcmVtb3ZlV2luZG93THcoV2luZG93U3RhdGUgd2luKSB7CisgICAgICAgIGlmIChtU3RhdHVzQmFyID09IHdpbikgeworICAgICAgICAgICAgbVN0YXR1c0JhciA9IG51bGw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAobUtleWd1YXJkID09IHdpbikgeworICAgICAgICAgICAgbUtleWd1YXJkID0gbnVsbDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1TdGF0dXNCYXJQYW5lbHMucmVtb3ZlKHdpbik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBzdGF0aWMgZmluYWwgYm9vbGVhbiBQUklOVF9BTklNID0gZmFsc2U7CisgICAgCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgaW50IHNlbGVjdEFuaW1hdGlvbkx3KFdpbmRvd1N0YXRlIHdpbiwgaW50IHRyYW5zaXQpIHsKKyAgICAgICAgaWYgKFBSSU5UX0FOSU0pIExvZy5pKFRBRywgInNlbGVjdEFuaW1hdGlvbiBpbiAiICsgd2luCisgICAgICAgICAgICAgICsgIjogdHJhbnNpdD0iICsgdHJhbnNpdCk7CisgICAgICAgIGlmICh0cmFuc2l0ID09IFRSQU5TSVRfUFJFVklFV19ET05FKSB7CisgICAgICAgICAgICBpZiAod2luLmhhc0FwcFNob3duV2luZG93cygpKSB7CisgICAgICAgICAgICAgICAgaWYgKFBSSU5UX0FOSU0pIExvZy5pKFRBRywgIioqKiogU1RBUlRJTkcgRVhJVCIpOworICAgICAgICAgICAgICAgIHJldHVybiBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmFuaW0uYXBwX3N0YXJ0aW5nX2V4aXQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBwdWJsaWMgQW5pbWF0aW9uIGNyZWF0ZUZvcmNlSGlkZUVudGVyQW5pbWF0aW9uKCkgeworICAgICAgICByZXR1cm4gQW5pbWF0aW9uVXRpbHMubG9hZEFuaW1hdGlvbihtQ29udGV4dCwKKyAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmFuaW0ubG9ja19zY3JlZW5fYmVoaW5kX2VudGVyKTsKKyAgICB9CisgICAgCisgICAgc3RhdGljIElUZWxlcGhvbnkgZ2V0UGhvbmVJbnRlcmZhY2UoKSB7CisgICAgICAgIHJldHVybiBJVGVsZXBob255LlN0dWIuYXNJbnRlcmZhY2UoU2VydmljZU1hbmFnZXIuY2hlY2tTZXJ2aWNlKENvbnRleHQuVEVMRVBIT05ZX1NFUlZJQ0UpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgSUF1ZGlvU2VydmljZSBnZXRBdWRpb0ludGVyZmFjZSgpIHsKKyAgICAgICAgcmV0dXJuIElBdWRpb1NlcnZpY2UuU3R1Yi5hc0ludGVyZmFjZShTZXJ2aWNlTWFuYWdlci5jaGVja1NlcnZpY2UoQ29udGV4dC5BVURJT19TRVJWSUNFKSk7CisgICAgfQorCisgICAgYm9vbGVhbiBrZXlndWFyZE9uKCkgeworICAgICAgICByZXR1cm4ga2V5Z3VhcmRJc1Nob3dpbmdUcSgpIHx8IGluS2V5Z3VhcmRSZXN0cmljdGVkS2V5SW5wdXRNb2RlKCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50W10gV0lORE9XX1RZUEVTX1dIRVJFX0hPTUVfRE9FU05UX1dPUksgPSB7CisgICAgICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5UWVBFX1NZU1RFTV9BTEVSVCwKKyAgICAgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLlRZUEVfU1lTVEVNX0VSUk9SLAorICAgICAgICB9OworCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgYm9vbGVhbiBpbnRlcmNlcHRLZXlCZWZvcmVEaXNwYXRjaGluZyhXaW5kb3dTdGF0ZSB3aW4sIGludCBhY3Rpb24sIGludCBmbGFncywKKyAgICAgICAgICAgIGludCBrZXlDb2RlLCBpbnQgbWV0YVN0YXRlLCBpbnQgcmVwZWF0Q291bnQsIGludCBwb2xpY3lGbGFncykgeworICAgICAgICBmaW5hbCBib29sZWFuIGtleWd1YXJkT24gPSBrZXlndWFyZE9uKCk7CisgICAgICAgIGZpbmFsIGJvb2xlYW4gZG93biA9IChhY3Rpb24gPT0gS2V5RXZlbnQuQUNUSU9OX0RPV04pOworICAgICAgICBmaW5hbCBib29sZWFuIGNhbmNlbGVkID0gKChmbGFncyAmIEtleUV2ZW50LkZMQUdfQ0FOQ0VMRUQpICE9IDApOworCisgICAgICAgIGlmIChmYWxzZSkgeworICAgICAgICAgICAgTG9nLmQoVEFHLCAiaW50ZXJjZXB0S2V5VGkga2V5Q29kZT0iICsga2V5Q29kZSArICIgZG93bj0iICsgZG93biArICIgcmVwZWF0Q291bnQ9IgorICAgICAgICAgICAgICAgICAgICArIHJlcGVhdENvdW50ICsgIiBrZXlndWFyZE9uPSIgKyBrZXlndWFyZE9uICsgIiBtSG9tZVByZXNzZWQ9IiArIG1Ib21lUHJlc3NlZCk7CisgICAgICAgIH0KKworICAgICAgICAvLyBDbGVhciBhIHBlbmRpbmcgSE9NRSBsb25ncHJlc3MgaWYgdGhlIHVzZXIgcmVsZWFzZXMgSG9tZQorICAgICAgICAvLyBUT0RPOiBUaGlzIGNvdWxkIHByb2JhYmx5IGJlIGluc2lkZSB0aGUgbmV4dCBiaXQgb2YgbG9naWMsIGJ1dCB0aGF0IGNvZGUKKyAgICAgICAgLy8gdHVybmVkIG91dCB0byBiZSBhIGJpdCBmcmFnaWxlIHNvIEknbSBkb2luZyBpdCBoZXJlIGV4cGxpY2l0bHksIGZvciBub3cuCisgICAgICAgIGlmICgoa2V5Q29kZSA9PSBLZXlFdmVudC5LRVlDT0RFX0hPTUUpICYmICFkb3duKSB7CisgICAgICAgICAgICBtSGFuZGxlci5yZW1vdmVDYWxsYmFja3MobUhvbWVMb25nUHJlc3MpOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgdGhlIEhPTUUgYnV0dG9uIGlzIGN1cnJlbnRseSBiZWluZyBoZWxkLCB0aGVuIHdlIGRvIHNwZWNpYWwKKyAgICAgICAgLy8gY2hvcmRpbmcgd2l0aCBpdC4KKyAgICAgICAgaWYgKG1Ib21lUHJlc3NlZCkgeworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBJZiB3ZSBoYXZlIHJlbGVhc2VkIHRoZSBob21lIGtleSwgYW5kIGRpZG4ndCBkbyBhbnl0aGluZyBlbHNlCisgICAgICAgICAgICAvLyB3aGlsZSBpdCB3YXMgcHJlc3NlZCwgdGhlbiBpdCBpcyB0aW1lIHRvIGdvIGhvbWUhCisgICAgICAgICAgICBpZiAoa2V5Q29kZSA9PSBLZXlFdmVudC5LRVlDT0RFX0hPTUUpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWRvd24pIHsKKyAgICAgICAgICAgICAgICAgICAgbUhvbWVQcmVzc2VkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAoISBjYW5jZWxlZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgYW4gaW5jb21pbmcgY2FsbCBpcyByaW5naW5nLCBIT01FIGlzIHRvdGFsbHkgZGlzYWJsZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAvLyAoVGhlIHVzZXIgaXMgYWxyZWFkeSBvbiB0aGUgSW5DYWxsU2NyZWVuIGF0IHRoaXMgcG9pbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgaGlzIE9OTFkgb3B0aW9ucyBhcmUgdG8gYW5zd2VyIG9yIHJlamVjdCB0aGUgY2FsbC4pCisgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIGluY29taW5nUmluZ2luZyA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJVGVsZXBob255IHBob25lU2VydiA9IGdldFBob25lSW50ZXJmYWNlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBob25lU2VydiAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY29taW5nUmluZ2luZyA9IHBob25lU2Vydi5pc1JpbmdpbmcoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2cudyhUQUcsICJVbmFibGUgdG8gZmluZCBJVGVsZXBob255IGludGVyZmFjZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZy53KFRBRywgIlJlbW90ZUV4Y2VwdGlvbiBmcm9tIGdldFBob25lSW50ZXJmYWNlKCkiLCBleCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluY29taW5nUmluZ2luZykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZy5pKFRBRywgIklnbm9yaW5nIEhPTUU7IHRoZXJlJ3MgYSByaW5naW5nIGluY29taW5nIGNhbGwuIik7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhdW5jaEhvbWVGcm9tSG90S2V5KCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBMb2cuaShUQUcsICJJZ25vcmluZyBIT01FOyBldmVudCBjYW5jZWxlZC4iKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIEZpcnN0IHdlIGFsd2F5cyBoYW5kbGUgdGhlIGhvbWUga2V5IGhlcmUsIHNvIGFwcGxpY2F0aW9ucworICAgICAgICAvLyBjYW4gbmV2ZXIgYnJlYWsgaXQsIGFsdGhvdWdoIGlmIGtleWd1YXJkIGlzIG9uLCB3ZSBkbyBsZXQKKyAgICAgICAgLy8gaXQgaGFuZGxlIGl0LCBiZWNhdXNlIHRoYXQgZ2l2ZXMgdXMgdGhlIGNvcnJlY3QgNSBzZWNvbmQKKyAgICAgICAgLy8gdGltZW91dC4KKyAgICAgICAgaWYgKGtleUNvZGUgPT0gS2V5RXZlbnQuS0VZQ09ERV9IT01FKSB7CisKKyAgICAgICAgICAgIC8vIElmIGEgc3lzdGVtIHdpbmRvdyBoYXMgZm9jdXMsIHRoZW4gaXQgZG9lc24ndCBtYWtlIHNlbnNlCisgICAgICAgICAgICAvLyByaWdodCBub3cgdG8gaW50ZXJhY3Qgd2l0aCBhcHBsaWNhdGlvbnMuCisgICAgICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcyBhdHRycyA9IHdpbiAhPSBudWxsID8gd2luLmdldEF0dHJzKCkgOiBudWxsOworICAgICAgICAgICAgaWYgKGF0dHJzICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBmaW5hbCBpbnQgdHlwZSA9IGF0dHJzLnR5cGU7CisgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuVFlQRV9LRVlHVUFSRAorICAgICAgICAgICAgICAgICAgICAgICAgfHwgdHlwZSA9PSBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5UWVBFX0tFWUdVQVJEX0RJQUxPRykgeworICAgICAgICAgICAgICAgICAgICAvLyB0aGUgImFwcCIgaXMga2V5Z3VhcmQsIHNvIGdpdmUgaXQgdGhlIGtleQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZpbmFsIGludCB0eXBlQ291bnQgPSBXSU5ET1dfVFlQRVNfV0hFUkVfSE9NRV9ET0VTTlRfV09SSy5sZW5ndGg7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPHR5cGVDb3VudDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlID09IFdJTkRPV19UWVBFU19XSEVSRV9IT01FX0RPRVNOVF9XT1JLW2ldKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb24ndCBkbyBhbnl0aGluZywgYnV0IGFsc28gZG9uJ3QgcGFzcyBpdCB0byB0aGUgYXBwCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGRvd24gJiYgcmVwZWF0Q291bnQgPT0gMCkgeworICAgICAgICAgICAgICAgIGlmICgha2V5Z3VhcmRPbikgeworICAgICAgICAgICAgICAgICAgICBtSGFuZGxlci5wb3N0RGVsYXllZChtSG9tZUxvbmdQcmVzcywgVmlld0NvbmZpZ3VyYXRpb24uZ2V0R2xvYmFsQWN0aW9uS2V5VGltZW91dCgpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbUhvbWVQcmVzc2VkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9IGVsc2UgaWYgKGtleUNvZGUgPT0gS2V5RXZlbnQuS0VZQ09ERV9NRU5VKSB7CisgICAgICAgICAgICAvLyBIaWphY2sgbW9kaWZpZWQgbWVudSBrZXlzIGZvciBkZWJ1Z2dpbmcgZmVhdHVyZXMKKyAgICAgICAgICAgIGZpbmFsIGludCBjaG9yZEJ1ZyA9IEtleUV2ZW50Lk1FVEFfU0hJRlRfT047CisKKyAgICAgICAgICAgIGlmIChkb3duICYmIHJlcGVhdENvdW50ID09IDApIHsKKyAgICAgICAgICAgICAgICBpZiAobUVuYWJsZVNoaWZ0TWVudUJ1Z1JlcG9ydHMgJiYgKG1ldGFTdGF0ZSAmIGNob3JkQnVnKSA9PSBjaG9yZEJ1ZykgeworICAgICAgICAgICAgICAgICAgICBJbnRlbnQgaW50ZW50ID0gbmV3IEludGVudChJbnRlbnQuQUNUSU9OX0JVR19SRVBPUlQpOworICAgICAgICAgICAgICAgICAgICBtQ29udGV4dC5zZW5kT3JkZXJlZEJyb2FkY2FzdChpbnRlbnQsIG51bGwpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKFNIT1dfUFJPQ0VTU0VTX09OX0FMVF9NRU5VICYmCisgICAgICAgICAgICAgICAgICAgICAgICAobWV0YVN0YXRlICYgS2V5RXZlbnQuTUVUQV9BTFRfT04pID09IEtleUV2ZW50Lk1FVEFfQUxUX09OKSB7CisgICAgICAgICAgICAgICAgICAgIEludGVudCBzZXJ2aWNlID0gbmV3IEludGVudCgpOworICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlLnNldENsYXNzTmFtZShtQ29udGV4dCwgImNvbS5hbmRyb2lkLnNlcnZlci5Mb2FkQXZlcmFnZVNlcnZpY2UiKTsKKyAgICAgICAgICAgICAgICAgICAgQ29udGVudFJlc29sdmVyIHJlcyA9IG1Db250ZXh0LmdldENvbnRlbnRSZXNvbHZlcigpOworICAgICAgICAgICAgICAgICAgICBib29sZWFuIHNob3duID0gU2V0dGluZ3MuU3lzdGVtLmdldEludCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMsIFNldHRpbmdzLlN5c3RlbS5TSE9XX1BST0NFU1NFUywgMCkgIT0gMDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFzaG93bikgeworICAgICAgICAgICAgICAgICAgICAgICAgbUNvbnRleHQuc3RhcnRTZXJ2aWNlKHNlcnZpY2UpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgbUNvbnRleHQuc3RvcFNlcnZpY2Uoc2VydmljZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgU2V0dGluZ3MuU3lzdGVtLnB1dEludCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXMsIFNldHRpbmdzLlN5c3RlbS5TSE9XX1BST0NFU1NFUywgc2hvd24gPyAwIDogMSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChrZXlDb2RlID09IEtleUV2ZW50LktFWUNPREVfU0VBUkNIKSB7CisgICAgICAgICAgICBpZiAoZG93bikgeworICAgICAgICAgICAgICAgIGlmIChyZXBlYXRDb3VudCA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIG1TZWFyY2hLZXlQcmVzc2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1TZWFyY2hLZXlQcmVzc2VkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKG1Db25zdW1lU2VhcmNoS2V5VXApIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gQ29uc3VtZSB0aGUgdXAtZXZlbnQKKyAgICAgICAgICAgICAgICAgICAgbUNvbnN1bWVTZWFyY2hLZXlVcCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIFNob3J0Y3V0cyBhcmUgaW52b2tlZCB0aHJvdWdoIFNlYXJjaCtrZXksIHNvIGludGVyY2VwdCB0aG9zZSBoZXJlCisgICAgICAgIGlmIChtU2VhcmNoS2V5UHJlc3NlZCkgeworICAgICAgICAgICAgaWYgKGRvd24gJiYgcmVwZWF0Q291bnQgPT0gMCAmJiAha2V5Z3VhcmRPbikgeworICAgICAgICAgICAgICAgIEludGVudCBzaG9ydGN1dEludGVudCA9IG1TaG9ydGN1dE1hbmFnZXIuZ2V0SW50ZW50KGtleUNvZGUsIG1ldGFTdGF0ZSk7CisgICAgICAgICAgICAgICAgaWYgKHNob3J0Y3V0SW50ZW50ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgc2hvcnRjdXRJbnRlbnQuYWRkRmxhZ3MoSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX1RBU0spOworICAgICAgICAgICAgICAgICAgICBtQ29udGV4dC5zdGFydEFjdGl2aXR5KHNob3J0Y3V0SW50ZW50KTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgICAqIFdlIGxhdW5jaGVkIGFuIGFwcCwgc28gdGhlIHVwLWV2ZW50IG9mIHRoZSBzZWFyY2gga2V5CisgICAgICAgICAgICAgICAgICAgICAqIHNob3VsZCBiZSBjb25zdW1lZAorICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgbUNvbnN1bWVTZWFyY2hLZXlVcCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBBIGhvbWUga2V5IC0+IGxhdW5jaCBob21lIGFjdGlvbiB3YXMgZGV0ZWN0ZWQuICBUYWtlIHRoZSBhcHByb3ByaWF0ZSBhY3Rpb24KKyAgICAgKiBnaXZlbiB0aGUgc2l0dWF0aW9uIHdpdGggdGhlIGtleWd1YXJkLgorICAgICAqLworICAgIHZvaWQgbGF1bmNoSG9tZUZyb21Ib3RLZXkoKSB7CisgICAgICAgIGlmIChtS2V5Z3VhcmRNZWRpYXRvci5pc1Nob3dpbmdBbmROb3RIaWRkZW4oKSkgeworICAgICAgICAgICAgLy8gZG9uJ3QgbGF1bmNoIGhvbWUgaWYga2V5Z3VhcmQgc2hvd2luZworICAgICAgICB9IGVsc2UgaWYgKCFtSGlkZUxvY2tTY3JlZW4gJiYgbUtleWd1YXJkTWVkaWF0b3IuaXNJbnB1dFJlc3RyaWN0ZWQoKSkgeworICAgICAgICAgICAgLy8gd2hlbiBpbiBrZXlndWFyZCByZXN0cmljdGVkIG1vZGUsIG11c3QgZmlyc3QgdmVyaWZ5IHVubG9jaworICAgICAgICAgICAgLy8gYmVmb3JlIGxhdW5jaGluZyBob21lCisgICAgICAgICAgICBtS2V5Z3VhcmRNZWRpYXRvci52ZXJpZnlVbmxvY2sobmV3IE9uS2V5Z3VhcmRFeGl0UmVzdWx0KCkgeworICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIG9uS2V5Z3VhcmRFeGl0UmVzdWx0KGJvb2xlYW4gc3VjY2VzcykgeworICAgICAgICAgICAgICAgICAgICBpZiAoc3VjY2VzcykgeworICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eU1hbmFnZXJOYXRpdmUuZ2V0RGVmYXVsdCgpLnN0b3BBcHBTd2l0Y2hlcygpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRDbG9zZVN5c3RlbVdpbmRvd3MoU1lTVEVNX0RJQUxPR19SRUFTT05fSE9NRV9LRVkpOworICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnREb2NrT3JIb21lKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIG5vIGtleWd1YXJkIHN0dWZmIHRvIHdvcnJ5IGFib3V0LCBqdXN0IGxhdW5jaCBob21lIQorICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBBY3Rpdml0eU1hbmFnZXJOYXRpdmUuZ2V0RGVmYXVsdCgpLnN0b3BBcHBTd2l0Y2hlcygpOworICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHNlbmRDbG9zZVN5c3RlbVdpbmRvd3MoU1lTVEVNX0RJQUxPR19SRUFTT05fSE9NRV9LRVkpOworICAgICAgICAgICAgc3RhcnREb2NrT3JIb21lKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBnZXRDb250ZW50SW5zZXRIaW50THcoV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMgYXR0cnMsIFJlY3QgY29udGVudEluc2V0KSB7CisgICAgICAgIGZpbmFsIGludCBmbCA9IGF0dHJzLmZsYWdzOworICAgICAgICAKKyAgICAgICAgaWYgKChmbCAmCisgICAgICAgICAgICAgICAgKEZMQUdfTEFZT1VUX0lOX1NDUkVFTiB8IEZMQUdfRlVMTFNDUkVFTiB8IEZMQUdfTEFZT1VUX0lOU0VUX0RFQ09SKSkKKyAgICAgICAgICAgICAgICA9PSAoRkxBR19MQVlPVVRfSU5fU0NSRUVOIHwgRkxBR19MQVlPVVRfSU5TRVRfREVDT1IpKSB7CisgICAgICAgICAgICBjb250ZW50SW5zZXQuc2V0KG1DdXJMZWZ0LCBtQ3VyVG9wLCBtVyAtIG1DdXJSaWdodCwgbUggLSBtQ3VyQm90dG9tKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNvbnRlbnRJbnNldC5zZXRFbXB0eSgpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIHZvaWQgYmVnaW5MYXlvdXRMdyhpbnQgZGlzcGxheVdpZHRoLCBpbnQgZGlzcGxheUhlaWdodCkgeworICAgICAgICBtVyA9IGRpc3BsYXlXaWR0aDsKKyAgICAgICAgbUggPSBkaXNwbGF5SGVpZ2h0OworICAgICAgICBtRG9ja0xlZnQgPSBtQ29udGVudExlZnQgPSBtQ3VyTGVmdCA9IDA7CisgICAgICAgIG1Eb2NrVG9wID0gbUNvbnRlbnRUb3AgPSBtQ3VyVG9wID0gMDsKKyAgICAgICAgbURvY2tSaWdodCA9IG1Db250ZW50UmlnaHQgPSBtQ3VyUmlnaHQgPSBkaXNwbGF5V2lkdGg7CisgICAgICAgIG1Eb2NrQm90dG9tID0gbUNvbnRlbnRCb3R0b20gPSBtQ3VyQm90dG9tID0gZGlzcGxheUhlaWdodDsKKyAgICAgICAgbURvY2tMYXllciA9IDB4MTAwMDAwMDA7CisKKyAgICAgICAgLy8gZGVjaWRlIHdoZXJlIHRoZSBzdGF0dXMgYmFyIGdvZXMgYWhlYWQgb2YgdGltZQorICAgICAgICBpZiAobVN0YXR1c0JhciAhPSBudWxsKSB7CisgICAgICAgICAgICBmaW5hbCBSZWN0IHBmID0gbVRtcFBhcmVudEZyYW1lOworICAgICAgICAgICAgZmluYWwgUmVjdCBkZiA9IG1UbXBEaXNwbGF5RnJhbWU7CisgICAgICAgICAgICBmaW5hbCBSZWN0IHZmID0gbVRtcFZpc2libGVGcmFtZTsKKyAgICAgICAgICAgIHBmLmxlZnQgPSBkZi5sZWZ0ID0gdmYubGVmdCA9IDA7CisgICAgICAgICAgICBwZi50b3AgPSBkZi50b3AgPSB2Zi50b3AgPSAwOworICAgICAgICAgICAgcGYucmlnaHQgPSBkZi5yaWdodCA9IHZmLnJpZ2h0ID0gZGlzcGxheVdpZHRoOworICAgICAgICAgICAgcGYuYm90dG9tID0gZGYuYm90dG9tID0gdmYuYm90dG9tID0gZGlzcGxheUhlaWdodDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgbVN0YXR1c0Jhci5jb21wdXRlRnJhbWVMdyhwZiwgZGYsIHZmLCB2Zik7CisgICAgICAgICAgICBpZiAobVN0YXR1c0Jhci5pc1Zpc2libGVMdygpKSB7CisgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHN0YXR1cyBiYXIgaXMgaGlkZGVuLCB3ZSBkb24ndCB3YW50IHRvIGNhdXNlCisgICAgICAgICAgICAgICAgLy8gd2luZG93cyBiZWhpbmQgaXQgdG8gc2Nyb2xsLgorICAgICAgICAgICAgICAgIG1Eb2NrVG9wID0gbUNvbnRlbnRUb3AgPSBtQ3VyVG9wID0gbVN0YXR1c0Jhci5nZXRGcmFtZUx3KCkuYm90dG9tOworICAgICAgICAgICAgICAgIGlmIChERUJVR19MQVlPVVQpIExvZy52KFRBRywgIlN0YXR1cyBiYXI6IG1Eb2NrQm90dG9tPSIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgbURvY2tCb3R0b20gKyAiIG1Db250ZW50Qm90dG9tPSIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgbUNvbnRlbnRCb3R0b20gKyAiIG1DdXJCb3R0b209IiArIG1DdXJCb3R0b20pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCBzZXRBdHRhY2hlZFdpbmRvd0ZyYW1lcyhXaW5kb3dTdGF0ZSB3aW4sIGludCBmbCwgaW50IHNpbSwKKyAgICAgICAgICAgIFdpbmRvd1N0YXRlIGF0dGFjaGVkLCBib29sZWFuIGluc2V0RGVjb3JzLCBSZWN0IHBmLCBSZWN0IGRmLCBSZWN0IGNmLCBSZWN0IHZmKSB7CisgICAgICAgIGlmICh3aW4uZ2V0U3VyZmFjZUxheWVyKCkgPiBtRG9ja0xheWVyICYmIGF0dGFjaGVkLmdldFN1cmZhY2VMYXllcigpIDwgbURvY2tMYXllcikgeworICAgICAgICAgICAgLy8gSGVyZSdzIGEgc3BlY2lhbCBjYXNlOiBpZiB0aGlzIGF0dGFjaGVkIHdpbmRvdyBpcyBhIHBhbmVsIHRoYXQgaXMKKyAgICAgICAgICAgIC8vIGFib3ZlIHRoZSBkb2NrIHdpbmRvdywgYW5kIHRoZSB3aW5kb3cgaXQgaXMgYXR0YWNoZWQgdG8gaXMgYmVsb3cKKyAgICAgICAgICAgIC8vIHRoZSBkb2NrIHdpbmRvdywgdGhlbiB0aGUgZnJhbWVzIHdlIGNvbXB1dGVkIGZvciB0aGUgd2luZG93IGl0IGlzCisgICAgICAgICAgICAvLyBhdHRhY2hlZCB0byBjYW4gbm90IGJlIHVzZWQgYmVjYXVzZSB0aGUgZG9jayBpcyBlZmZlY3RpdmVseSBwYXJ0CisgICAgICAgICAgICAvLyBvZiB0aGUgdW5kZXJseWluZyB3aW5kb3cgYW5kIHRoZSBhdHRhY2hlZCB3aW5kb3cgaXMgZmxvYXRpbmcgb24gdG9wCisgICAgICAgICAgICAvLyBvZiB0aGUgd2hvbGUgdGhpbmcuICBTbywgd2UgaWdub3JlIHRoZSBhdHRhY2hlZCB3aW5kb3cgYW5kIGV4cGxpY2l0bHkKKyAgICAgICAgICAgIC8vIGNvbXB1dGUgdGhlIGZyYW1lcyB0aGF0IHdvdWxkIGJlIGFwcHJvcHJpYXRlIHdpdGhvdXQgdGhlIGRvY2suCisgICAgICAgICAgICBkZi5sZWZ0ID0gY2YubGVmdCA9IHZmLmxlZnQgPSBtRG9ja0xlZnQ7CisgICAgICAgICAgICBkZi50b3AgPSBjZi50b3AgPSB2Zi50b3AgPSBtRG9ja1RvcDsKKyAgICAgICAgICAgIGRmLnJpZ2h0ID0gY2YucmlnaHQgPSB2Zi5yaWdodCA9IG1Eb2NrUmlnaHQ7CisgICAgICAgICAgICBkZi5ib3R0b20gPSBjZi5ib3R0b20gPSB2Zi5ib3R0b20gPSBtRG9ja0JvdHRvbTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFRoZSBlZmZlY3RpdmUgZGlzcGxheSBmcmFtZSBvZiB0aGUgYXR0YWNoZWQgd2luZG93IGRlcGVuZHMgb24KKyAgICAgICAgICAgIC8vIHdoZXRoZXIgaXQgaXMgdGFraW5nIGNhcmUgb2YgaW5zZXR0aW5nIGl0cyBjb250ZW50LiAgSWYgbm90LAorICAgICAgICAgICAgLy8gd2UgbmVlZCB0byB1c2UgdGhlIHBhcmVudCdzIGNvbnRlbnQgZnJhbWUgc28gdGhhdCB0aGUgZW50aXJlCisgICAgICAgICAgICAvLyB3aW5kb3cgaXMgcG9zaXRpb25lZCB3aXRoaW4gdGhhdCBjb250ZW50LiAgT3RoZXJ3aXNlIHdlIGNhbiB1c2UKKyAgICAgICAgICAgIC8vIHRoZSBkaXNwbGF5IGZyYW1lIGFuZCBsZXQgdGhlIGF0dGFjaGVkIHdpbmRvdyB0YWtlIGNhcmUgb2YKKyAgICAgICAgICAgIC8vIHBvc2l0aW9uaW5nIGl0cyBjb250ZW50IGFwcHJvcHJpYXRlbHkuCisgICAgICAgICAgICBpZiAoKHNpbSAmIFNPRlRfSU5QVVRfTUFTS19BREpVU1QpICE9IFNPRlRfSU5QVVRfQURKVVNUX1JFU0laRSkgeworICAgICAgICAgICAgICAgIGNmLnNldChhdHRhY2hlZC5nZXREaXNwbGF5RnJhbWVMdygpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHdpbmRvdyBpcyByZXNpemluZywgdGhlbiB3ZSB3YW50IHRvIGJhc2UgdGhlIGNvbnRlbnQKKyAgICAgICAgICAgICAgICAvLyBmcmFtZSBvbiBvdXIgYXR0YWNoZWQgY29udGVudCBmcmFtZSB0byByZXNpemUuLi4gIGhvd2V2ZXIsCisgICAgICAgICAgICAgICAgLy8gdGhpbmdzIGNhbiBiZSB0cmlja3kgaWYgdGhlIGF0dGFjaGVkIHdpbmRvdyBpcyBOT1QgaW4gcmVzaXplCisgICAgICAgICAgICAgICAgLy8gbW9kZSwgaW4gd2hpY2ggY2FzZSBpdHMgY29udGVudCBmcmFtZSB3aWxsIGJlIGxhcmdlci4KKyAgICAgICAgICAgICAgICAvLyBVbmdoLiAgU28gdG8gZGVhbCB3aXRoIHRoYXQsIG1ha2Ugc3VyZSB0aGUgY29udGVudCBmcmFtZQorICAgICAgICAgICAgICAgIC8vIHdlIGVuZCB1cCB1c2luZyBpcyBub3QgY292ZXJpbmcgdGhlIElNIGRvY2suCisgICAgICAgICAgICAgICAgY2Yuc2V0KGF0dGFjaGVkLmdldENvbnRlbnRGcmFtZUx3KCkpOworICAgICAgICAgICAgICAgIGlmIChhdHRhY2hlZC5nZXRTdXJmYWNlTGF5ZXIoKSA8IG1Eb2NrTGF5ZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNmLmxlZnQgPCBtQ29udGVudExlZnQpIGNmLmxlZnQgPSBtQ29udGVudExlZnQ7CisgICAgICAgICAgICAgICAgICAgIGlmIChjZi50b3AgPCBtQ29udGVudFRvcCkgY2YudG9wID0gbUNvbnRlbnRUb3A7CisgICAgICAgICAgICAgICAgICAgIGlmIChjZi5yaWdodCA+IG1Db250ZW50UmlnaHQpIGNmLnJpZ2h0ID0gbUNvbnRlbnRSaWdodDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNmLmJvdHRvbSA+IG1Db250ZW50Qm90dG9tKSBjZi5ib3R0b20gPSBtQ29udGVudEJvdHRvbTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBkZi5zZXQoaW5zZXREZWNvcnMgPyBhdHRhY2hlZC5nZXREaXNwbGF5RnJhbWVMdygpIDogY2YpOworICAgICAgICAgICAgdmYuc2V0KGF0dGFjaGVkLmdldFZpc2libGVGcmFtZUx3KCkpOworICAgICAgICB9CisgICAgICAgIC8vIFRoZSBMQVlPVVRfSU5fU0NSRUVOIGZsYWcgaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgYXR0YWNoZWQKKyAgICAgICAgLy8gd2luZG93IHNob3VsZCBiZSBwb3NpdGlvbmVkIHJlbGF0aXZlIHRvIGl0cyBwYXJlbnQgb3IgdGhlIGVudGlyZQorICAgICAgICAvLyBzY3JlZW4uCisgICAgICAgIHBmLnNldCgoZmwgJiBGTEFHX0xBWU9VVF9JTl9TQ1JFRU4pID09IDAKKyAgICAgICAgICAgICAgICA/IGF0dGFjaGVkLmdldEZyYW1lTHcoKSA6IGRmKTsKKyAgICB9CisgICAgCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgdm9pZCBsYXlvdXRXaW5kb3dMdyhXaW5kb3dTdGF0ZSB3aW4sIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIGF0dHJzLAorICAgICAgICAgICAgV2luZG93U3RhdGUgYXR0YWNoZWQpIHsKKyAgICAgICAgLy8gd2UndmUgYWxyZWFkeSBkb25lIHRoZSBzdGF0dXMgYmFyCisgICAgICAgIGlmICh3aW4gPT0gbVN0YXR1c0JhcikgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZhbHNlKSB7CisgICAgICAgICAgICBpZiAoImNvbS5nb29nbGUuYW5kcm9pZC55b3V0dWJlIi5lcXVhbHMoYXR0cnMucGFja2FnZU5hbWUpCisgICAgICAgICAgICAgICAgICAgICYmIGF0dHJzLnR5cGUgPT0gV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuVFlQRV9BUFBMSUNBVElPTl9QQU5FTCkgeworICAgICAgICAgICAgICAgIExvZy5pKFRBRywgIkdPVENIQSEiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZmluYWwgaW50IGZsID0gYXR0cnMuZmxhZ3M7CisgICAgICAgIGZpbmFsIGludCBzaW0gPSBhdHRycy5zb2Z0SW5wdXRNb2RlOworICAgICAgICAKKyAgICAgICAgZmluYWwgUmVjdCBwZiA9IG1UbXBQYXJlbnRGcmFtZTsKKyAgICAgICAgZmluYWwgUmVjdCBkZiA9IG1UbXBEaXNwbGF5RnJhbWU7CisgICAgICAgIGZpbmFsIFJlY3QgY2YgPSBtVG1wQ29udGVudEZyYW1lOworICAgICAgICBmaW5hbCBSZWN0IHZmID0gbVRtcFZpc2libGVGcmFtZTsKKyAgICAgICAgCisgICAgICAgIGlmIChhdHRycy50eXBlID09IFRZUEVfSU5QVVRfTUVUSE9EKSB7CisgICAgICAgICAgICBwZi5sZWZ0ID0gZGYubGVmdCA9IGNmLmxlZnQgPSB2Zi5sZWZ0ID0gbURvY2tMZWZ0OworICAgICAgICAgICAgcGYudG9wID0gZGYudG9wID0gY2YudG9wID0gdmYudG9wID0gbURvY2tUb3A7CisgICAgICAgICAgICBwZi5yaWdodCA9IGRmLnJpZ2h0ID0gY2YucmlnaHQgPSB2Zi5yaWdodCA9IG1Eb2NrUmlnaHQ7CisgICAgICAgICAgICBwZi5ib3R0b20gPSBkZi5ib3R0b20gPSBjZi5ib3R0b20gPSB2Zi5ib3R0b20gPSBtRG9ja0JvdHRvbTsKKyAgICAgICAgICAgIC8vIElNIGRvY2sgd2luZG93cyBhbHdheXMgZ28gdG8gdGhlIGJvdHRvbSBvZiB0aGUgc2NyZWVuLgorICAgICAgICAgICAgYXR0cnMuZ3Jhdml0eSA9IEdyYXZpdHkuQk9UVE9NOworICAgICAgICAgICAgbURvY2tMYXllciA9IHdpbi5nZXRTdXJmYWNlTGF5ZXIoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmICgoZmwgJgorICAgICAgICAgICAgICAgICAgICAoRkxBR19MQVlPVVRfSU5fU0NSRUVOIHwgRkxBR19GVUxMU0NSRUVOIHwgRkxBR19MQVlPVVRfSU5TRVRfREVDT1IpKQorICAgICAgICAgICAgICAgICAgICA9PSAoRkxBR19MQVlPVVRfSU5fU0NSRUVOIHwgRkxBR19MQVlPVVRfSU5TRVRfREVDT1IpKSB7CisgICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgY2FzZSBmb3IgYSBub3JtYWwgYWN0aXZpdHkgd2luZG93OiB3ZSB3YW50IGl0CisgICAgICAgICAgICAgICAgLy8gdG8gY292ZXIgYWxsIG9mIHRoZSBzY3JlZW4gc3BhY2UsIGFuZCBpdCBjYW4gdGFrZSBjYXJlIG9mCisgICAgICAgICAgICAgICAgLy8gbW92aW5nIGl0cyBjb250ZW50cyB0byBhY2NvdW50IGZvciBzY3JlZW4gZGVjb3JhdGlvbnMgdGhhdAorICAgICAgICAgICAgICAgIC8vIGludHJ1ZGUgaW50byB0aGF0IHNwYWNlLgorICAgICAgICAgICAgICAgIGlmIChhdHRhY2hlZCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgd2luZG93IGlzIGF0dGFjaGVkIHRvIGFub3RoZXIsIG91ciBkaXNwbGF5CisgICAgICAgICAgICAgICAgICAgIC8vIGZyYW1lIGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUgd2UgYXJlIGF0dGFjaGVkIHRvLgorICAgICAgICAgICAgICAgICAgICBzZXRBdHRhY2hlZFdpbmRvd0ZyYW1lcyh3aW4sIGZsLCBzaW0sIGF0dGFjaGVkLCB0cnVlLCBwZiwgZGYsIGNmLCB2Zik7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcGYubGVmdCA9IGRmLmxlZnQgPSAwOworICAgICAgICAgICAgICAgICAgICBwZi50b3AgPSBkZi50b3AgPSAwOworICAgICAgICAgICAgICAgICAgICBwZi5yaWdodCA9IGRmLnJpZ2h0ID0gbVc7CisgICAgICAgICAgICAgICAgICAgIHBmLmJvdHRvbSA9IGRmLmJvdHRvbSA9IG1IOworICAgICAgICAgICAgICAgICAgICBpZiAoKHNpbSAmIFNPRlRfSU5QVVRfTUFTS19BREpVU1QpICE9IFNPRlRfSU5QVVRfQURKVVNUX1JFU0laRSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2YubGVmdCA9IG1Eb2NrTGVmdDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNmLnRvcCA9IG1Eb2NrVG9wOworICAgICAgICAgICAgICAgICAgICAgICAgY2YucmlnaHQgPSBtRG9ja1JpZ2h0OworICAgICAgICAgICAgICAgICAgICAgICAgY2YuYm90dG9tID0gbURvY2tCb3R0b207CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjZi5sZWZ0ID0gbUNvbnRlbnRMZWZ0OworICAgICAgICAgICAgICAgICAgICAgICAgY2YudG9wID0gbUNvbnRlbnRUb3A7CisgICAgICAgICAgICAgICAgICAgICAgICBjZi5yaWdodCA9IG1Db250ZW50UmlnaHQ7CisgICAgICAgICAgICAgICAgICAgICAgICBjZi5ib3R0b20gPSBtQ29udGVudEJvdHRvbTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB2Zi5sZWZ0ID0gbUN1ckxlZnQ7CisgICAgICAgICAgICAgICAgICAgIHZmLnRvcCA9IG1DdXJUb3A7CisgICAgICAgICAgICAgICAgICAgIHZmLnJpZ2h0ID0gbUN1clJpZ2h0OworICAgICAgICAgICAgICAgICAgICB2Zi5ib3R0b20gPSBtQ3VyQm90dG9tOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoKGZsICYgRkxBR19MQVlPVVRfSU5fU0NSRUVOKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgLy8gQSB3aW5kb3cgdGhhdCBoYXMgcmVxdWVzdGVkIHRvIGZpbGwgdGhlIGVudGlyZSBzY3JlZW4ganVzdAorICAgICAgICAgICAgICAgIC8vIGdldHMgZXZlcnl0aGluZywgcGVyaW9kLgorICAgICAgICAgICAgICAgIHBmLmxlZnQgPSBkZi5sZWZ0ID0gY2YubGVmdCA9IDA7CisgICAgICAgICAgICAgICAgcGYudG9wID0gZGYudG9wID0gY2YudG9wID0gMDsKKyAgICAgICAgICAgICAgICBwZi5yaWdodCA9IGRmLnJpZ2h0ID0gY2YucmlnaHQgPSBtVzsKKyAgICAgICAgICAgICAgICBwZi5ib3R0b20gPSBkZi5ib3R0b20gPSBjZi5ib3R0b20gPSBtSDsKKyAgICAgICAgICAgICAgICB2Zi5sZWZ0ID0gbUN1ckxlZnQ7CisgICAgICAgICAgICAgICAgdmYudG9wID0gbUN1clRvcDsKKyAgICAgICAgICAgICAgICB2Zi5yaWdodCA9IG1DdXJSaWdodDsKKyAgICAgICAgICAgICAgICB2Zi5ib3R0b20gPSBtQ3VyQm90dG9tOworICAgICAgICAgICAgfSBlbHNlIGlmIChhdHRhY2hlZCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgLy8gQSBjaGlsZCB3aW5kb3cgc2hvdWxkIGJlIHBsYWNlZCBpbnNpZGUgb2YgdGhlIHNhbWUgdmlzaWJsZQorICAgICAgICAgICAgICAgIC8vIGZyYW1lIHRoYXQgaXRzIHBhcmVudCBoYWQuCisgICAgICAgICAgICAgICAgc2V0QXR0YWNoZWRXaW5kb3dGcmFtZXMod2luLCBmbCwgc2ltLCBhdHRhY2hlZCwgZmFsc2UsIHBmLCBkZiwgY2YsIHZmKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gT3RoZXJ3aXNlLCBhIG5vcm1hbCB3aW5kb3cgbXVzdCBiZSBwbGFjZWQgaW5zaWRlIHRoZSBjb250ZW50CisgICAgICAgICAgICAgICAgLy8gb2YgYWxsIHNjcmVlbiBkZWNvcmF0aW9ucy4KKyAgICAgICAgICAgICAgICBwZi5sZWZ0ID0gbUNvbnRlbnRMZWZ0OworICAgICAgICAgICAgICAgIHBmLnRvcCA9IG1Db250ZW50VG9wOworICAgICAgICAgICAgICAgIHBmLnJpZ2h0ID0gbUNvbnRlbnRSaWdodDsKKyAgICAgICAgICAgICAgICBwZi5ib3R0b20gPSBtQ29udGVudEJvdHRvbTsKKyAgICAgICAgICAgICAgICBpZiAoKHNpbSAmIFNPRlRfSU5QVVRfTUFTS19BREpVU1QpICE9IFNPRlRfSU5QVVRfQURKVVNUX1JFU0laRSkgeworICAgICAgICAgICAgICAgICAgICBkZi5sZWZ0ID0gY2YubGVmdCA9IG1Eb2NrTGVmdDsKKyAgICAgICAgICAgICAgICAgICAgZGYudG9wID0gY2YudG9wID0gbURvY2tUb3A7CisgICAgICAgICAgICAgICAgICAgIGRmLnJpZ2h0ID0gY2YucmlnaHQgPSBtRG9ja1JpZ2h0OworICAgICAgICAgICAgICAgICAgICBkZi5ib3R0b20gPSBjZi5ib3R0b20gPSBtRG9ja0JvdHRvbTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBkZi5sZWZ0ID0gY2YubGVmdCA9IG1Db250ZW50TGVmdDsKKyAgICAgICAgICAgICAgICAgICAgZGYudG9wID0gY2YudG9wID0gbUNvbnRlbnRUb3A7CisgICAgICAgICAgICAgICAgICAgIGRmLnJpZ2h0ID0gY2YucmlnaHQgPSBtQ29udGVudFJpZ2h0OworICAgICAgICAgICAgICAgICAgICBkZi5ib3R0b20gPSBjZi5ib3R0b20gPSBtQ29udGVudEJvdHRvbTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdmYubGVmdCA9IG1DdXJMZWZ0OworICAgICAgICAgICAgICAgIHZmLnRvcCA9IG1DdXJUb3A7CisgICAgICAgICAgICAgICAgdmYucmlnaHQgPSBtQ3VyUmlnaHQ7CisgICAgICAgICAgICAgICAgdmYuYm90dG9tID0gbUN1ckJvdHRvbTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKChmbCAmIEZMQUdfTEFZT1VUX05PX0xJTUlUUykgIT0gMCkgeworICAgICAgICAgICAgZGYubGVmdCA9IGRmLnRvcCA9IGNmLmxlZnQgPSBjZi50b3AgPSB2Zi5sZWZ0ID0gdmYudG9wID0gLTEwMDAwOworICAgICAgICAgICAgZGYucmlnaHQgPSBkZi5ib3R0b20gPSBjZi5yaWdodCA9IGNmLmJvdHRvbSA9IHZmLnJpZ2h0ID0gdmYuYm90dG9tID0gMTAwMDA7CisgICAgICAgIH0KKworICAgICAgICBpZiAoREVCVUdfTEFZT1VUKSBMb2cudihUQUcsICJDb21wdXRlIGZyYW1lICIgKyBhdHRycy5nZXRUaXRsZSgpCisgICAgICAgICAgICAgICAgKyAiOiBzaW09IyIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKHNpbSkKKyAgICAgICAgICAgICAgICArICIgcGY9IiArIHBmLnRvU2hvcnRTdHJpbmcoKSArICIgZGY9IiArIGRmLnRvU2hvcnRTdHJpbmcoKQorICAgICAgICAgICAgICAgICsgIiBjZj0iICsgY2YudG9TaG9ydFN0cmluZygpICsgIiB2Zj0iICsgdmYudG9TaG9ydFN0cmluZygpKTsKKyAgICAgICAgCisgICAgICAgIGlmIChmYWxzZSkgeworICAgICAgICAgICAgaWYgKCJjb20uZ29vZ2xlLmFuZHJvaWQueW91dHViZSIuZXF1YWxzKGF0dHJzLnBhY2thZ2VOYW1lKQorICAgICAgICAgICAgICAgICAgICAmJiBhdHRycy50eXBlID09IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLlRZUEVfQVBQTElDQVRJT05fUEFORUwpIHsKKyAgICAgICAgICAgICAgICBpZiAodHJ1ZSB8fCBsb2NhbExPR1YpIExvZy52KFRBRywgIkNvbXB1dGluZyBmcmFtZSBvZiAiICsgd2luICsKKyAgICAgICAgICAgICAgICAgICAgICAgICI6IHNpbT0jIiArIEludGVnZXIudG9IZXhTdHJpbmcoc2ltKQorICAgICAgICAgICAgICAgICAgICAgICAgKyAiIHBmPSIgKyBwZi50b1Nob3J0U3RyaW5nKCkgKyAiIGRmPSIgKyBkZi50b1Nob3J0U3RyaW5nKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICsgIiBjZj0iICsgY2YudG9TaG9ydFN0cmluZygpICsgIiB2Zj0iICsgdmYudG9TaG9ydFN0cmluZygpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgd2luLmNvbXB1dGVGcmFtZUx3KHBmLCBkZiwgY2YsIHZmKTsKKyAgICAgICAgCisgICAgICAgIC8vIERvY2sgd2luZG93cyBjYXJ2ZSBvdXQgdGhlIGJvdHRvbSBvZiB0aGUgc2NyZWVuLCBzbyBub3JtYWwgd2luZG93cworICAgICAgICAvLyBjYW4ndCBhcHBlYXIgdW5kZXJuZWF0aCB0aGVtLgorICAgICAgICBpZiAoYXR0cnMudHlwZSA9PSBUWVBFX0lOUFVUX01FVEhPRCAmJiAhd2luLmdldEdpdmVuSW5zZXRzUGVuZGluZ0x3KCkpIHsKKyAgICAgICAgICAgIGludCB0b3AgPSB3aW4uZ2V0Q29udGVudEZyYW1lTHcoKS50b3A7CisgICAgICAgICAgICB0b3AgKz0gd2luLmdldEdpdmVuQ29udGVudEluc2V0c0x3KCkudG9wOworICAgICAgICAgICAgaWYgKG1Db250ZW50Qm90dG9tID4gdG9wKSB7CisgICAgICAgICAgICAgICAgbUNvbnRlbnRCb3R0b20gPSB0b3A7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0b3AgPSB3aW4uZ2V0VmlzaWJsZUZyYW1lTHcoKS50b3A7CisgICAgICAgICAgICB0b3AgKz0gd2luLmdldEdpdmVuVmlzaWJsZUluc2V0c0x3KCkudG9wOworICAgICAgICAgICAgaWYgKG1DdXJCb3R0b20gPiB0b3ApIHsKKyAgICAgICAgICAgICAgICBtQ3VyQm90dG9tID0gdG9wOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKERFQlVHX0xBWU9VVCkgTG9nLnYoVEFHLCAiSW5wdXQgbWV0aG9kOiBtRG9ja0JvdHRvbT0iCisgICAgICAgICAgICAgICAgICAgICsgbURvY2tCb3R0b20gKyAiIG1Db250ZW50Qm90dG9tPSIKKyAgICAgICAgICAgICAgICAgICAgKyBtQ29udGVudEJvdHRvbSArICIgbUN1ckJvdHRvbT0iICsgbUN1ckJvdHRvbSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioge0Bpbmhlcml0RG9jfSAqLworICAgIHB1YmxpYyBpbnQgZmluaXNoTGF5b3V0THcoKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIHZvaWQgYmVnaW5BbmltYXRpb25MdyhpbnQgZGlzcGxheVdpZHRoLCBpbnQgZGlzcGxheUhlaWdodCkgeworICAgICAgICBtVG9wRnVsbHNjcmVlbk9wYXF1ZVdpbmRvd1N0YXRlID0gbnVsbDsKKyAgICAgICAgbUZvcmNlU3RhdHVzQmFyID0gZmFsc2U7CisgICAgICAgIAorICAgICAgICBtSGlkZUxvY2tTY3JlZW4gPSBmYWxzZTsKKyAgICAgICAgbUFsbG93TG9ja3NjcmVlbldoZW5PbiA9IGZhbHNlOworICAgICAgICBtRGlzbWlzc0tleWd1YXJkID0gZmFsc2U7CisgICAgfQorCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgdm9pZCBhbmltYXRpbmdXaW5kb3dMdyhXaW5kb3dTdGF0ZSB3aW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIGF0dHJzKSB7CisgICAgICAgIGlmIChtVG9wRnVsbHNjcmVlbk9wYXF1ZVdpbmRvd1N0YXRlID09IG51bGwgJiYKKyAgICAgICAgICAgICAgICB3aW4uaXNWaXNpYmxlT3JCZWhpbmRLZXlndWFyZEx3KCkpIHsKKyAgICAgICAgICAgIGlmICgoYXR0cnMuZmxhZ3MgJiBGTEFHX0ZPUkNFX05PVF9GVUxMU0NSRUVOKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgbUZvcmNlU3RhdHVzQmFyID0gdHJ1ZTsKKyAgICAgICAgICAgIH0gCisgICAgICAgICAgICBpZiAoYXR0cnMudHlwZSA+PSBGSVJTVF9BUFBMSUNBVElPTl9XSU5ET1cKKyAgICAgICAgICAgICAgICAgICAgJiYgYXR0cnMudHlwZSA8PSBMQVNUX0FQUExJQ0FUSU9OX1dJTkRPVworICAgICAgICAgICAgICAgICAgICAmJiB3aW4uZmlsbHNTY3JlZW5MdyhtVywgbUgsIGZhbHNlLCBmYWxzZSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoREVCVUdfTEFZT1VUKSBMb2cudihUQUcsICJGdWxsc2NyZWVuIHdpbmRvdzogIiArIHdpbik7CisgICAgICAgICAgICAgICAgbVRvcEZ1bGxzY3JlZW5PcGFxdWVXaW5kb3dTdGF0ZSA9IHdpbjsKKyAgICAgICAgICAgICAgICBpZiAoKGF0dHJzLmZsYWdzICYgRkxBR19TSE9XX1dIRU5fTE9DS0VEKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChsb2NhbExPR1YpIExvZy52KFRBRywgIlNldHRpbmcgbUhpZGVMb2NrU2NyZWVuIHRvIHRydWUgYnkgd2luICIgKyB3aW4pOworICAgICAgICAgICAgICAgICAgICBtSGlkZUxvY2tTY3JlZW4gPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoKGF0dHJzLmZsYWdzICYgRkxBR19ESVNNSVNTX0tFWUdVQVJEKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChsb2NhbExPR1YpIExvZy52KFRBRywgIlNldHRpbmcgbURpc21pc3NLZXlndWFyZCB0byB0cnVlIGJ5IHdpbiAiICsgd2luKTsKKyAgICAgICAgICAgICAgICAgICAgbURpc21pc3NLZXlndWFyZCA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICgoYXR0cnMuZmxhZ3MgJiBGTEFHX0FMTE9XX0xPQ0tfV0hJTEVfU0NSRUVOX09OKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIG1BbGxvd0xvY2tzY3JlZW5XaGVuT24gPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIGludCBmaW5pc2hBbmltYXRpb25MdygpIHsKKyAgICAgICAgaW50IGNoYW5nZXMgPSAwOworICAgICAgICAKKyAgICAgICAgYm9vbGVhbiBoaWRpbmcgPSBmYWxzZTsKKyAgICAgICAgaWYgKG1TdGF0dXNCYXIgIT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKGxvY2FsTE9HVikgTG9nLmkoVEFHLCAiZm9yY2U9IiArIG1Gb3JjZVN0YXR1c0JhcgorICAgICAgICAgICAgICAgICAgICArICIgdG9wPSIgKyBtVG9wRnVsbHNjcmVlbk9wYXF1ZVdpbmRvd1N0YXRlKTsKKyAgICAgICAgICAgIGlmIChtRm9yY2VTdGF0dXNCYXIpIHsKKyAgICAgICAgICAgICAgICBpZiAoREVCVUdfTEFZT1VUKSBMb2cudihUQUcsICJTaG93aW5nIHN0YXR1cyBiYXIiKTsKKyAgICAgICAgICAgICAgICBpZiAobVN0YXR1c0Jhci5zaG93THcodHJ1ZSkpIGNoYW5nZXMgfD0gRklOSVNIX0xBWU9VVF9SRURPX0xBWU9VVDsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobVRvcEZ1bGxzY3JlZW5PcGFxdWVXaW5kb3dTdGF0ZSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgLy9Mb2cuaShUQUcsICJmcmFtZTogIiArIG1Ub3BGdWxsc2NyZWVuT3BhcXVlV2luZG93U3RhdGUuZ2V0RnJhbWVMdygpCisgICAgICAgICAgICAgICAgLy8gICAgICAgICsgIiBzaG93biBmcmFtZTogIiArIG1Ub3BGdWxsc2NyZWVuT3BhcXVlV2luZG93U3RhdGUuZ2V0U2hvd25GcmFtZUx3KCkpOworICAgICAgICAgICAgICAgIC8vTG9nLmkoVEFHLCAiYXR0cjogIiArIG1Ub3BGdWxsc2NyZWVuT3BhcXVlV2luZG93U3RhdGUuZ2V0QXR0cnMoKSk7CisgICAgICAgICAgICAgICAgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMgbHAgPQorICAgICAgICAgICAgICAgICAgICBtVG9wRnVsbHNjcmVlbk9wYXF1ZVdpbmRvd1N0YXRlLmdldEF0dHJzKCk7CisgICAgICAgICAgICAgICAgYm9vbGVhbiBoaWRlU3RhdHVzQmFyID0KKyAgICAgICAgICAgICAgICAgICAgKGxwLmZsYWdzICYgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19GVUxMU0NSRUVOKSAhPSAwOworICAgICAgICAgICAgICAgIGlmIChoaWRlU3RhdHVzQmFyKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19MQVlPVVQpIExvZy52KFRBRywgIkhpZGluZyBzdGF0dXMgYmFyIik7CisgICAgICAgICAgICAgICAgICAgIGlmIChtU3RhdHVzQmFyLmhpZGVMdyh0cnVlKSkgY2hhbmdlcyB8PSBGSU5JU0hfTEFZT1VUX1JFRE9fTEFZT1VUOworICAgICAgICAgICAgICAgICAgICBoaWRpbmcgPSB0cnVlOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19MQVlPVVQpIExvZy52KFRBRywgIlNob3dpbmcgc3RhdHVzIGJhciIpOworICAgICAgICAgICAgICAgICAgICBpZiAobVN0YXR1c0Jhci5zaG93THcodHJ1ZSkpIGNoYW5nZXMgfD0gRklOSVNIX0xBWU9VVF9SRURPX0xBWU9VVDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChjaGFuZ2VzICE9IDAgJiYgaGlkaW5nKSB7CisgICAgICAgICAgICBJU3RhdHVzQmFyU2VydmljZSBzYnMgPSBJU3RhdHVzQmFyU2VydmljZS5TdHViLmFzSW50ZXJmYWNlKFNlcnZpY2VNYW5hZ2VyLmdldFNlcnZpY2UoInN0YXR1c2JhciIpKTsKKyAgICAgICAgICAgIGlmIChzYnMgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgd2luZG93IHNoYWRlIGlzIGhpZGRlbi4KKyAgICAgICAgICAgICAgICAgICAgc2JzLmNvbGxhcHNlKCk7CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBIaWRlIHRoZSBrZXkgZ3VhcmQgaWYgYSB2aXNpYmxlIHdpbmRvdyBleHBsaWNpdGx5IHNwZWNpZmllcyB0aGF0IGl0IHdhbnRzIHRvIGJlIGRpc3BsYXllZAorICAgICAgICAvLyB3aGVuIHRoZSBzY3JlZW4gaXMgbG9ja2VkCisgICAgICAgIGlmIChtS2V5Z3VhcmQgIT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKGxvY2FsTE9HVikgTG9nLnYoVEFHLCAiZmluaXNoTGF5b3V0THc6Om1IaWRlS2V5Z3VhcmQ9IittSGlkZUxvY2tTY3JlZW4pOworICAgICAgICAgICAgaWYgKG1EaXNtaXNzS2V5Z3VhcmQgJiYgIW1LZXlndWFyZE1lZGlhdG9yLmlzU2VjdXJlKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAobUtleWd1YXJkLmhpZGVMdyh0cnVlKSkgeworICAgICAgICAgICAgICAgICAgICBjaGFuZ2VzIHw9IEZJTklTSF9MQVlPVVRfUkVET19MQVlPVVQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEZJTklTSF9MQVlPVVRfUkVET19DT05GSUcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEZJTklTSF9MQVlPVVRfUkVET19XQUxMUEFQRVI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChtS2V5Z3VhcmRNZWRpYXRvci5pc1Nob3dpbmcoKSkgeworICAgICAgICAgICAgICAgICAgICBtSGFuZGxlci5wb3N0KG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtS2V5Z3VhcmRNZWRpYXRvci5rZXlndWFyZERvbmUoZmFsc2UsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBlbHNlIGlmIChtSGlkZUxvY2tTY3JlZW4pIHsKKyAgICAgICAgICAgICAgICBpZiAobUtleWd1YXJkLmhpZGVMdyh0cnVlKSkgeworICAgICAgICAgICAgICAgICAgICBjaGFuZ2VzIHw9IEZJTklTSF9MQVlPVVRfUkVET19MQVlPVVQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEZJTklTSF9MQVlPVVRfUkVET19DT05GSUcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEZJTklTSF9MQVlPVVRfUkVET19XQUxMUEFQRVI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1LZXlndWFyZE1lZGlhdG9yLnNldEhpZGRlbih0cnVlKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKG1LZXlndWFyZC5zaG93THcodHJ1ZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlcyB8PSBGSU5JU0hfTEFZT1VUX1JFRE9fTEFZT1VUCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBGSU5JU0hfTEFZT1VUX1JFRE9fQ09ORklHCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBGSU5JU0hfTEFZT1VUX1JFRE9fV0FMTFBBUEVSOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtS2V5Z3VhcmRNZWRpYXRvci5zZXRIaWRkZW4oZmFsc2UpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyB1cGRhdGUgc2luY2UgbUFsbG93TG9ja3NjcmVlbldoZW5PbiBtaWdodCBoYXZlIGNoYW5nZWQKKyAgICAgICAgdXBkYXRlTG9ja1NjcmVlblRpbWVvdXQoKTsKKyAgICAgICAgcmV0dXJuIGNoYW5nZXM7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gYWxsb3dBcHBBbmltYXRpb25zTHcoKSB7CisgICAgICAgIGlmIChtS2V5Z3VhcmQgIT0gbnVsbCAmJiBtS2V5Z3VhcmQuaXNWaXNpYmxlTHcoKSkgeworICAgICAgICAgICAgLy8gSWYga2V5Z3VhcmQgaXMgY3VycmVudGx5IHZpc2libGUsIG5vIHJlYXNvbiB0byBhbmltYXRlCisgICAgICAgICAgICAvLyBiZWhpbmQgaXQuCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1TdGF0dXNCYXIgIT0gbnVsbCAmJiBtU3RhdHVzQmFyLmlzVmlzaWJsZUx3KCkpIHsKKyAgICAgICAgICAgIFJlY3QgcmVjdCA9IG5ldyBSZWN0KG1TdGF0dXNCYXIuZ2V0U2hvd25GcmFtZUx3KCkpOworICAgICAgICAgICAgZm9yIChpbnQgaT1tU3RhdHVzQmFyUGFuZWxzLnNpemUoKS0xOyBpPj0wOyBpLS0pIHsKKyAgICAgICAgICAgICAgICBXaW5kb3dTdGF0ZSB3ID0gbVN0YXR1c0JhclBhbmVscy5nZXQoaSk7CisgICAgICAgICAgICAgICAgaWYgKHcuaXNWaXNpYmxlTHcoKSkgeworICAgICAgICAgICAgICAgICAgICByZWN0LnVuaW9uKHcuZ2V0U2hvd25GcmFtZUx3KCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZpbmFsIGludCBpbnNldHcgPSBtVy8xMDsKKyAgICAgICAgICAgIGZpbmFsIGludCBpbnNldGggPSBtSC8xMDsKKyAgICAgICAgICAgIGlmIChyZWN0LmNvbnRhaW5zKGluc2V0dywgaW5zZXRoLCBtVy1pbnNldHcsIG1ILWluc2V0aCkpIHsKKyAgICAgICAgICAgICAgICAvLyBBbGwgb2YgdGhlIHN0YXR1cyBiYXIgd2luZG93cyBwdXQgdG9nZXRoZXIgY292ZXIgdGhlCisgICAgICAgICAgICAgICAgLy8gc2NyZWVuLCBzbyB0aGUgYXBwIGNhbid0IGJlIHNlZW4uICAoTm90ZSB0aGlzIHRlc3QgZG9lc24ndAorICAgICAgICAgICAgICAgIC8vIHdvcmsgaWYgdGhlIHJlY3RzIG9mIHRoZXNlIHdpbmRvd3MgYXJlIGF0IG9mZiBvZmZzZXRzIG9yCisgICAgICAgICAgICAgICAgLy8gc2l6ZXMsIGNhdXNpbmcgZ2FwcyBpbiB0aGUgcmVjdCB1bmlvbiB3ZSBoYXZlIGNvbXB1dGVkLikKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgdm9pZCBub3RpZnlMaWRTd2l0Y2hDaGFuZ2VkKGxvbmcgd2hlbk5hbm9zLCBib29sZWFuIGxpZE9wZW4pIHsKKyAgICAgICAgLy8gbGlkIGNoYW5nZWQgc3RhdGUKKyAgICAgICAgbUxpZE9wZW4gPSBsaWRPcGVuOworICAgICAgICBib29sZWFuIGF3YWtlTm93ID0gbUtleWd1YXJkTWVkaWF0b3IuZG9MaWRDaGFuZ2VUcShtTGlkT3Blbik7CisgICAgICAgIHVwZGF0ZVJvdGF0aW9uKFN1cmZhY2UuRkxBR1NfT1JJRU5UQVRJT05fQU5JTUFUSU9OX0RJU0FCTEUpOworICAgICAgICBpZiAoYXdha2VOb3cpIHsKKyAgICAgICAgICAgIC8vIElmIHRoZSBsaWQgb3BlbmluZyBhbmQgd2UgZG9uJ3QgaGF2ZSB0byBrZWVwIHRoZQorICAgICAgICAgICAgLy8ga2V5Z3VhcmQgdXAsIHRoZW4gd2UgY2FuIHR1cm4gb24gdGhlIHNjcmVlbgorICAgICAgICAgICAgLy8gaW1tZWRpYXRlbHkuCisgICAgICAgICAgICBtS2V5Z3VhcmRNZWRpYXRvci5wb2tlV2FrZWxvY2soKTsKKyAgICAgICAgfSBlbHNlIGlmIChrZXlndWFyZElzU2hvd2luZ1RxKCkpIHsKKyAgICAgICAgICAgIGlmIChtTGlkT3BlbikgeworICAgICAgICAgICAgICAgIC8vIElmIHdlIGFyZSBvcGVuaW5nIHRoZSBsaWQgYW5kIG5vdCBoaWRpbmcgdGhlCisgICAgICAgICAgICAgICAgLy8ga2V5Z3VhcmQsIHRoZW4gd2UgbmVlZCB0byBoYXZlIGl0IHR1cm4gb24gdGhlCisgICAgICAgICAgICAgICAgLy8gc2NyZWVuIG9uY2UgaXQgaXMgc2hvd24uCisgICAgICAgICAgICAgICAgbUtleWd1YXJkTWVkaWF0b3Iub25XYWtlS2V5V2hlbktleWd1YXJkU2hvd2luZ1RxKAorICAgICAgICAgICAgICAgICAgICAgICAgS2V5RXZlbnQuS0VZQ09ERV9QT1dFUik7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBMaWdodCB1cCB0aGUga2V5Ym9hcmQgaWYgd2UgYXJlIHNsaWRpbmcgdXAuCisgICAgICAgICAgICBpZiAobUxpZE9wZW4pIHsKKyAgICAgICAgICAgICAgICBtUG93ZXJNYW5hZ2VyLnVzZXJBY3Rpdml0eShTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKSwgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICBMb2NhbFBvd2VyTWFuYWdlci5CVVRUT05fRVZFTlQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtUG93ZXJNYW5hZ2VyLnVzZXJBY3Rpdml0eShTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKSwgZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICBMb2NhbFBvd2VyTWFuYWdlci5PVEhFUl9FVkVOVCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIFdoZXRoZXIgYSB0ZWxlcGhvbmUgY2FsbCBpcyBpbiBwcm9ncmVzcyByaWdodCBub3cuCisgICAgICovCisgICAgYm9vbGVhbiBpc0luQ2FsbCgpIHsKKyAgICAgICAgZmluYWwgSVRlbGVwaG9ueSBwaG9uZSA9IGdldFBob25lSW50ZXJmYWNlKCk7CisgICAgICAgIGlmIChwaG9uZSA9PSBudWxsKSB7CisgICAgICAgICAgICBMb2cudyhUQUcsICJjb3VsZG4ndCBnZXQgSVRlbGVwaG9ueSByZWZlcmVuY2UiKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICB0cnkgeworICAgICAgICAgICAgcmV0dXJuIHBob25lLmlzT2ZmaG9vaygpOworICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgTG9nLncoVEFHLCAiSVRlbGVwaG9ueS5pc09mZmhob29rIHRocmV3IFJlbW90ZUV4Y2VwdGlvbiAiICsgZSk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIFdoZXRoZXIgbXVzaWMgaXMgYmVpbmcgcGxheWVkIHJpZ2h0IG5vdy4KKyAgICAgKi8KKyAgICBib29sZWFuIGlzTXVzaWNBY3RpdmUoKSB7CisgICAgICAgIGZpbmFsIEF1ZGlvTWFuYWdlciBhbSA9IChBdWRpb01hbmFnZXIpbUNvbnRleHQuZ2V0U3lzdGVtU2VydmljZShDb250ZXh0LkFVRElPX1NFUlZJQ0UpOworICAgICAgICBpZiAoYW0gPT0gbnVsbCkgeworICAgICAgICAgICAgTG9nLncoVEFHLCAiaXNNdXNpY0FjdGl2ZTogY291bGRuJ3QgZ2V0IEF1ZGlvTWFuYWdlciByZWZlcmVuY2UiKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gYW0uaXNNdXNpY0FjdGl2ZSgpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFRlbGwgdGhlIGF1ZGlvIHNlcnZpY2UgdG8gYWRqdXN0IHRoZSB2b2x1bWUgYXBwcm9wcmlhdGUgdG8gdGhlIGV2ZW50LgorICAgICAqIEBwYXJhbSBrZXljb2RlCisgICAgICovCisgICAgdm9pZCBoYW5kbGVWb2x1bWVLZXkoaW50IHN0cmVhbSwgaW50IGtleWNvZGUpIHsKKyAgICAgICAgZmluYWwgSUF1ZGlvU2VydmljZSBhdWRpbyA9IGdldEF1ZGlvSW50ZXJmYWNlKCk7CisgICAgICAgIGlmIChhdWRpbyA9PSBudWxsKSB7CisgICAgICAgICAgICBMb2cudyhUQUcsICJoYW5kbGVWb2x1bWVLZXk6IGNvdWxkbid0IGdldCBJQXVkaW9TZXJ2aWNlIHJlZmVyZW5jZSIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAvLyBzaW5jZSBhdWRpbyBpcyBwbGF5aW5nLCB3ZSBzaG91bGRuJ3QgaGF2ZSB0byBob2xkIGEgd2FrZSBsb2NrCisgICAgICAgICAgICAvLyBkdXJpbmcgdGhlIGNhbGwsIGJ1dCB3ZSBkbyBpdCBhcyBhIHByZWNhdXRpb24gZm9yIHRoZSByYXJlIHBvc3NpYmlsaXR5CisgICAgICAgICAgICAvLyB0aGF0IHRoZSBtdXNpYyBzdG9wcyByaWdodCBiZWZvcmUgd2UgY2FsbCB0aGlzCisgICAgICAgICAgICBtQnJvYWRjYXN0V2FrZUxvY2suYWNxdWlyZSgpOworICAgICAgICAgICAgYXVkaW8uYWRqdXN0U3RyZWFtVm9sdW1lKHN0cmVhbSwKKyAgICAgICAgICAgICAgICBrZXljb2RlID09IEtleUV2ZW50LktFWUNPREVfVk9MVU1FX1VQCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBBdWRpb01hbmFnZXIuQURKVVNUX1JBSVNFCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBBdWRpb01hbmFnZXIuQURKVVNUX0xPV0VSLAorICAgICAgICAgICAgICAgICAgICAwKTsKKyAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIExvZy53KFRBRywgIklBdWRpb1NlcnZpY2UuYWRqdXN0U3RyZWFtVm9sdW1lKCkgdGhyZXcgUmVtb3RlRXhjZXB0aW9uICIgKyBlKTsKKyAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgIG1Ccm9hZGNhc3RXYWtlTG9jay5yZWxlYXNlKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgc3RhdGljIGJvb2xlYW4gaXNNZWRpYUtleShpbnQgY29kZSkgeworICAgICAgICBpZiAoY29kZSA9PSBLZXlFdmVudC5LRVlDT0RFX0hFQURTRVRIT09LIHx8IAorICAgICAgICAgICAgICAgIGNvZGUgPT0gS2V5RXZlbnQuS0VZQ09ERV9NRURJQV9QTEFZX1BBVVNFIHx8CisgICAgICAgICAgICAgICAgY29kZSA9PSBLZXlFdmVudC5LRVlDT0RFX01FRElBX1NUT1AgfHwgCisgICAgICAgICAgICAgICAgY29kZSA9PSBLZXlFdmVudC5LRVlDT0RFX01FRElBX05FWFQgfHwKKyAgICAgICAgICAgICAgICBjb2RlID09IEtleUV2ZW50LktFWUNPREVfTUVESUFfUFJFVklPVVMgfHwgCisgICAgICAgICAgICAgICAgY29kZSA9PSBLZXlFdmVudC5LRVlDT0RFX01FRElBX1JFV0lORCB8fAorICAgICAgICAgICAgICAgIGNvZGUgPT0gS2V5RXZlbnQuS0VZQ09ERV9NRURJQV9GQVNUX0ZPUldBUkQpIHsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIHJldHVybiBmYWxzZTsgICAgCisgICAgfQorIAorICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIGludCBpbnRlcmNlcHRLZXlCZWZvcmVRdWV1ZWluZyhsb25nIHdoZW5OYW5vcywgaW50IGtleUNvZGUsIGJvb2xlYW4gZG93biwKKyAgICAgICAgICAgIGludCBwb2xpY3lGbGFncywgYm9vbGVhbiBpc1NjcmVlbk9uKSB7CisgICAgICAgIGludCByZXN1bHQgPSBBQ1RJT05fUEFTU19UT19VU0VSOworICAgICAgICAKKyAgICAgICAgZmluYWwgYm9vbGVhbiBpc1dha2VLZXkgPSAocG9saWN5RmxhZ3MKKyAgICAgICAgICAgICAgICAmIChXaW5kb3dNYW5hZ2VyUG9saWN5LkZMQUdfV0FLRSB8IFdpbmRvd01hbmFnZXJQb2xpY3kuRkxBR19XQUtFX0RST1BQRUQpKSAhPSAwOworICAgICAgICAKKyAgICAgICAgLy8gSWYgc2NyZWVuIGlzIG9mZiB0aGVuIHdlIHRyZWF0IHRoZSBjYXNlIHdoZXJlIHRoZSBrZXlndWFyZCBpcyBvcGVuIGJ1dCBoaWRkZW4KKyAgICAgICAgLy8gdGhlIHNhbWUgYXMgaWYgaXQgd2VyZSBvcGVuIGFuZCBpbiBmcm9udC4KKyAgICAgICAgLy8gVGhpcyB3aWxsIHByZXZlbnQgYW55IGtleXMgb3RoZXIgdGhhbiB0aGUgcG93ZXIgYnV0dG9uIGZyb20gd2FraW5nIHRoZSBzY3JlZW4KKyAgICAgICAgLy8gd2hlbiB0aGUga2V5Z3VhcmQgaXMgaGlkZGVuIGJ5IGFub3RoZXIgYWN0aXZpdHkuCisgICAgICAgIGZpbmFsIGJvb2xlYW4ga2V5Z3VhcmRBY3RpdmUgPSAoaXNTY3JlZW5PbiA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUtleWd1YXJkTWVkaWF0b3IuaXNTaG93aW5nQW5kTm90SGlkZGVuKCkgOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1LZXlndWFyZE1lZGlhdG9yLmlzU2hvd2luZygpKTsKKworICAgICAgICBpZiAoZmFsc2UpIHsKKyAgICAgICAgICAgIExvZy5kKFRBRywgImludGVyY2VwdEtleVRxIGtleWNvZGU9IiArIGtleUNvZGUKKyAgICAgICAgICAgICAgICAgICsgIiBzY3JlZW5Jc09uPSIgKyBpc1NjcmVlbk9uICsgIiBrZXlndWFyZEFjdGl2ZT0iICsga2V5Z3VhcmRBY3RpdmUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGtleWd1YXJkQWN0aXZlKSB7CisgICAgICAgICAgICBpZiAoaXNTY3JlZW5PbikgeworICAgICAgICAgICAgICAgIC8vIHdoZW4gdGhlIHNjcmVlbiBpcyBvbiwgYWx3YXlzIGdpdmUgdGhlIGV2ZW50IHRvIHRoZSBrZXlndWFyZAorICAgICAgICAgICAgICAgIHJlc3VsdCB8PSBBQ1RJT05fUEFTU19UT19VU0VSOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBvdGhlcndpc2UsIGRvbid0IHBhc3MgaXQgdG8gdGhlIHVzZXIKKyAgICAgICAgICAgICAgICByZXN1bHQgJj0gfkFDVElPTl9QQVNTX1RPX1VTRVI7CisKKyAgICAgICAgICAgICAgICBpZiAoaXNXYWtlS2V5ICYmIGRvd24pIHsKKworICAgICAgICAgICAgICAgICAgICAvLyB0ZWxsIHRoZSBtZWRpYXRvciBhYm91dCBhIHdha2Uga2V5LCBpdCBtYXkgZGVjaWRlIHRvCisgICAgICAgICAgICAgICAgICAgIC8vIHR1cm4gb24gdGhlIHNjcmVlbiBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUga2V5IGlzCisgICAgICAgICAgICAgICAgICAgIC8vIGFwcHJvcHJpYXRlLgorICAgICAgICAgICAgICAgICAgICBpZiAoIW1LZXlndWFyZE1lZGlhdG9yLm9uV2FrZUtleVdoZW5LZXlndWFyZFNob3dpbmdUcShrZXlDb2RlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIChrZXlDb2RlID09IEtleUV2ZW50LktFWUNPREVfVk9MVU1FX0RPV04KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwga2V5Q29kZSA9PSBLZXlFdmVudC5LRVlDT0RFX1ZPTFVNRV9VUCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4ga2V5Z3VhcmQgaXMgc2hvd2luZyBhbmQgc2NyZWVuIG9mZiwgd2UgbmVlZAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gdG8gaGFuZGxlIHRoZSB2b2x1bWUga2V5IGZvciBjYWxscyBhbmQgIG11c2ljIGhlcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc0luQ2FsbCgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlVm9sdW1lS2V5KEF1ZGlvTWFuYWdlci5TVFJFQU1fVk9JQ0VfQ0FMTCwga2V5Q29kZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGlzTXVzaWNBY3RpdmUoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZVZvbHVtZUtleShBdWRpb01hbmFnZXIuU1RSRUFNX01VU0lDLCBrZXlDb2RlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmICghaXNTY3JlZW5PbikgeworICAgICAgICAgICAgLy8gSWYgd2UgYXJlIGluLWNhbGwgd2l0aCBzY3JlZW4gb2ZmIGFuZCBrZXlndWFyZCBpcyBub3Qgc2hvd2luZywKKyAgICAgICAgICAgIC8vIHRoZW4gaGFuZGxlIHRoZSB2b2x1bWUga2V5IG91cnNlbHZlcy4KKyAgICAgICAgICAgIC8vIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgdGhlIHBob25lIGFwcCB3aWxsIGRpc2FibGUgdGhlIGtleWd1YXJkCisgICAgICAgICAgICAvLyB3aGVuIHRoZSBwcm94aW1pdHkgc2Vuc29yIGlzIGluIHVzZS4KKyAgICAgICAgICAgIGlmIChpc0luQ2FsbCgpICYmCisgICAgICAgICAgICAgICAgICAgICAoa2V5Q29kZSA9PSBLZXlFdmVudC5LRVlDT0RFX1ZPTFVNRV9ET1dOCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGtleUNvZGUgPT0gS2V5RXZlbnQuS0VZQ09ERV9WT0xVTUVfVVApKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ICY9IH5BQ1RJT05fUEFTU19UT19VU0VSOworICAgICAgICAgICAgICAgIGhhbmRsZVZvbHVtZUtleShBdWRpb01hbmFnZXIuU1RSRUFNX1ZPSUNFX0NBTEwsIGtleUNvZGUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGlzV2FrZUtleSkgeworICAgICAgICAgICAgICAgIC8vIGEgd2FrZSBrZXkgaGFzIGEgc29sZSBwdXJwb3NlIG9mIHdha2luZyB0aGUgZGV2aWNlOyBkb24ndCBwYXNzCisgICAgICAgICAgICAgICAgLy8gaXQgdG8gdGhlIHVzZXIKKyAgICAgICAgICAgICAgICByZXN1bHQgfD0gQUNUSU9OX1BPS0VfVVNFUl9BQ1RJVklUWTsKKyAgICAgICAgICAgICAgICByZXN1bHQgJj0gfkFDVElPTl9QQVNTX1RPX1VTRVI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoa2V5Q29kZSA9PSBLZXlFdmVudC5LRVlDT0RFX0VORENBTEwKKyAgICAgICAgICAgICAgICB8fCBrZXlDb2RlID09IEtleUV2ZW50LktFWUNPREVfUE9XRVIpIHsKKyAgICAgICAgICAgIGlmIChkb3duKSB7CisgICAgICAgICAgICAgICAgYm9vbGVhbiBoYW5kbGVkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgYm9vbGVhbiBodW5nVXAgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAvLyBrZXkgcmVwZWF0cyBhcmUgZ2VuZXJhdGVkIGJ5IHRoZSB3aW5kb3cgbWFuYWdlciwgYW5kIHdlIGRvbid0IHNlZSB0aGVtCisgICAgICAgICAgICAgICAgLy8gaGVyZSwgc28gdW5sZXNzIHRoZSBkcml2ZXIgaXMgZG9pbmcgc29tZXRoaW5nIGl0IHNob3VsZG4ndCBiZSwgd2Uga25vdworICAgICAgICAgICAgICAgIC8vIHRoaXMgaXMgdGhlIHJlYWwgcHJlc3MgZXZlbnQuCisgICAgICAgICAgICAgICAgSVRlbGVwaG9ueSBwaG9uZVNlcnYgPSBnZXRQaG9uZUludGVyZmFjZSgpOworICAgICAgICAgICAgICAgIGlmIChwaG9uZVNlcnYgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGtleUNvZGUgPT0gS2V5RXZlbnQuS0VZQ09ERV9FTkRDQUxMKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlZCA9IGh1bmdVcCA9IHBob25lU2Vydi5lbmRDYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGtleUNvZGUgPT0gS2V5RXZlbnQuS0VZQ09ERV9QT1dFUikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwaG9uZVNlcnYuaXNSaW5naW5nKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gUHJlc3NpbmcgUG93ZXIgd2hpbGUgdGhlcmUncyBhIHJpbmdpbmcgaW5jb21pbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY2FsbCBzaG91bGQgc2lsZW5jZSB0aGUgcmluZ2VyLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwaG9uZVNlcnYuc2lsZW5jZVJpbmdlcigpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBob25lU2Vydi5pc09mZmhvb2soKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKChtSW5jYWxsUG93ZXJCZWhhdmlvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmIFNldHRpbmdzLlNlY3VyZS5JTkNBTExfUE9XRVJfQlVUVE9OX0JFSEFWSU9SX0hBTkdVUCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhPSAwKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBPdGhlcndpc2UsIGlmICJQb3dlciBidXR0b24gZW5kcyBjYWxsIiBpcyBlbmFibGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgUG93ZXIgYnV0dG9uIHdpbGwgaGFuZyB1cCBhbnkgY3VycmVudCBhY3RpdmUgY2FsbC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlZCA9IGh1bmdVcCA9IHBob25lU2Vydi5lbmRDYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIExvZy53KFRBRywgIklUZWxlcGhvbnkgdGhyZXcgUmVtb3RlRXhjZXB0aW9uIiArIGV4KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIExvZy53KFRBRywgIiEhISBVbmFibGUgdG8gZmluZCBJVGVsZXBob255IGludGVyZmFjZSAhISEiKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAoIWlzU2NyZWVuT24KKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IChoYW5kbGVkICYmIGtleUNvZGUgIT0gS2V5RXZlbnQuS0VZQ09ERV9QT1dFUikKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IChoYW5kbGVkICYmIGh1bmdVcCAmJiBrZXlDb2RlID09IEtleUV2ZW50LktFWUNPREVfUE9XRVIpKSB7CisgICAgICAgICAgICAgICAgICAgIG1TaG91bGRUdXJuT2ZmT25LZXlVcCA9IGZhbHNlOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIG9ubHkgdHJ5IHRvIHR1cm4gb2ZmIHRoZSBzY3JlZW4gaWYgd2UgZGlkbid0IGFscmVhZHkgaGFuZyB1cAorICAgICAgICAgICAgICAgICAgICBtU2hvdWxkVHVybk9mZk9uS2V5VXAgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBtSGFuZGxlci5wb3N0RGVsYXllZChtUG93ZXJMb25nUHJlc3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlld0NvbmZpZ3VyYXRpb24uZ2V0R2xvYmFsQWN0aW9uS2V5VGltZW91dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICY9IH5BQ1RJT05fUEFTU19UT19VU0VSOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbUhhbmRsZXIucmVtb3ZlQ2FsbGJhY2tzKG1Qb3dlckxvbmdQcmVzcyk7CisgICAgICAgICAgICAgICAgaWYgKG1TaG91bGRUdXJuT2ZmT25LZXlVcCkgeworICAgICAgICAgICAgICAgICAgICBtU2hvdWxkVHVybk9mZk9uS2V5VXAgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBnb2hvbWUsIHNsZWVwczsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGtleUNvZGUgPT0gS2V5RXZlbnQuS0VZQ09ERV9FTkRDQUxMKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBnb2hvbWUgPSAobUVuZGNhbGxCZWhhdmlvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYgU2V0dGluZ3MuU3lzdGVtLkVORF9CVVRUT05fQkVIQVZJT1JfSE9NRSkgIT0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNsZWVwcyA9IChtRW5kY2FsbEJlaGF2aW9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiBTZXR0aW5ncy5TeXN0ZW0uRU5EX0JVVFRPTl9CRUhBVklPUl9TTEVFUCkgIT0gMDsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvaG9tZSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgc2xlZXBzID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoa2V5Z3VhcmRBY3RpdmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCAoc2xlZXBzICYmICFnb2hvbWUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKGdvaG9tZSAmJiAhZ29Ib21lKCkgJiYgc2xlZXBzKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhleSBtdXN0IGFscmVhZHkgYmUgb24gdGhlIGtleWd1YWQgb3IgaG9tZSBzY3JlZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBnbyB0byBzbGVlcCBpbnN0ZWFkCisgICAgICAgICAgICAgICAgICAgICAgICBMb2cuZChUQUcsICJJJ20gdGlyZWQgbUVuZGNhbGxCZWhhdmlvcj0weCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG1FbmRjYWxsQmVoYXZpb3IpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCAmPSB+QUNUSU9OX1BPS0VfVVNFUl9BQ1RJVklUWTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCB8PSBBQ1RJT05fR09fVE9fU0xFRVA7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICY9IH5BQ1RJT05fUEFTU19UT19VU0VSOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChpc01lZGlhS2V5KGtleUNvZGUpKSB7CisgICAgICAgICAgICAvLyBUaGlzIGtleSBuZWVkcyB0byBiZSBoYW5kbGVkIGV2ZW4gaWYgdGhlIHNjcmVlbiBpcyBvZmYuCisgICAgICAgICAgICAvLyBJZiBvdGhlcnMgbmVlZCB0byBiZSBoYW5kbGVkIHdoaWxlIGl0J3Mgb2ZmLCB0aGlzIGlzIGEgcmVhc29uYWJsZQorICAgICAgICAgICAgLy8gcGF0dGVybiB0byBmb2xsb3cuCisgICAgICAgICAgICBpZiAoKHJlc3VsdCAmIEFDVElPTl9QQVNTX1RPX1VTRVIpID09IDApIHsKKyAgICAgICAgICAgICAgICAvLyBPbmx5IGRvIHRoaXMgaWYgd2Ugd291bGQgb3RoZXJ3aXNlIG5vdCBwYXNzIGl0IHRvIHRoZSB1c2VyLiBJbiB0aGF0CisgICAgICAgICAgICAgICAgLy8gY2FzZSwgdGhlIFBob25lV2luZG93IGNsYXNzIHdpbGwgZG8gdGhlIHNhbWUgdGhpbmcsIGV4Y2VwdCBpdCB3aWxsCisgICAgICAgICAgICAgICAgLy8gb25seSBkbyBpdCBpZiB0aGUgc2hvd2luZyBhcHAgZG9lc24ndCBwcm9jZXNzIHRoZSBrZXkgb24gaXRzIG93bi4KKyAgICAgICAgICAgICAgICBsb25nIHdoZW4gPSB3aGVuTmFub3MgLyAxMDAwMDAwOworICAgICAgICAgICAgICAgIEtleUV2ZW50IGtleUV2ZW50ID0gbmV3IEtleUV2ZW50KHdoZW4sIHdoZW4sCisgICAgICAgICAgICAgICAgICAgICAgICBkb3duID8gS2V5RXZlbnQuQUNUSU9OX0RPV04gOiBLZXlFdmVudC5BQ1RJT05fVVAsCisgICAgICAgICAgICAgICAgICAgICAgICBrZXlDb2RlLCAwKTsKKyAgICAgICAgICAgICAgICBtQnJvYWRjYXN0V2FrZUxvY2suYWNxdWlyZSgpOworICAgICAgICAgICAgICAgIG1IYW5kbGVyLnBvc3QobmV3IFBhc3NIZWFkc2V0S2V5KGtleUV2ZW50KSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoa2V5Q29kZSA9PSBLZXlFdmVudC5LRVlDT0RFX0NBTEwpIHsKKyAgICAgICAgICAgIC8vIElmIGFuIGluY29taW5nIGNhbGwgaXMgcmluZ2luZywgYW5zd2VyIGl0IQorICAgICAgICAgICAgLy8gKFdlIGhhbmRsZSB0aGlzIGtleSBoZXJlLCByYXRoZXIgdGhhbiBpbiB0aGUgSW5DYWxsU2NyZWVuLCB0byBtYWtlCisgICAgICAgICAgICAvLyBzdXJlIHdlJ2xsIHJlc3BvbmQgdG8gdGhlIGtleSBldmVuIGlmIHRoZSBJbkNhbGxTY3JlZW4gaGFzbid0IGNvbWUgdG8KKyAgICAgICAgICAgIC8vIHRoZSBmb3JlZ3JvdW5kIHlldC4pCisKKyAgICAgICAgICAgIC8vIFdlIGFuc3dlciB0aGUgY2FsbCBvbiB0aGUgRE9XTiBldmVudCwgdG8gYWdyZWUgd2l0aAorICAgICAgICAgICAgLy8gdGhlICJmYWxsYmFjayIgYmVoYXZpb3IgaW4gdGhlIEluQ2FsbFNjcmVlbi4KKyAgICAgICAgICAgIGlmIChkb3duKSB7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgSVRlbGVwaG9ueSBwaG9uZVNlcnYgPSBnZXRQaG9uZUludGVyZmFjZSgpOworICAgICAgICAgICAgICAgICAgICBpZiAocGhvbmVTZXJ2ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwaG9uZVNlcnYuaXNSaW5naW5nKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2cuaShUQUcsICJpbnRlcmNlcHRLZXlUcToiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiIENBTEwga2V5LWRvd24gd2hpbGUgcmluZ2luZzogQW5zd2VyIHRoZSBjYWxsISIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBob25lU2Vydi5hbnN3ZXJSaW5naW5nQ2FsbCgpOworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQW5kICpkb24ndCogcGFzcyB0aGlzIGtleSB0aHJ1IHRvIHRoZSBjdXJyZW50IGFjdGl2aXR5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gKHdoaWNoIGlzIHByZXN1bWFibHkgdGhlIEluQ2FsbFNjcmVlbi4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICY9IH5BQ1RJT05fUEFTU19UT19VU0VSOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgTG9nLncoVEFHLCAiQ0FMTCBidXR0b246IFVuYWJsZSB0byBmaW5kIElUZWxlcGhvbnkgaW50ZXJmYWNlIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgTG9nLncoVEFHLCAiQ0FMTCBidXR0b246IFJlbW90ZUV4Y2VwdGlvbiBmcm9tIGdldFBob25lSW50ZXJmYWNlKCkiLCBleCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKChrZXlDb2RlID09IEtleUV2ZW50LktFWUNPREVfVk9MVU1FX1VQKQorICAgICAgICAgICAgICAgICAgIHx8IChrZXlDb2RlID09IEtleUV2ZW50LktFWUNPREVfVk9MVU1FX0RPV04pKSB7CisgICAgICAgICAgICAvLyBJZiBhbiBpbmNvbWluZyBjYWxsIGlzIHJpbmdpbmcsIGVpdGhlciBWT0xVTUUga2V5IG1lYW5zCisgICAgICAgICAgICAvLyAic2lsZW5jZSByaW5nZXIiLiAgV2UgaGFuZGxlIHRoZXNlIGtleXMgaGVyZSwgcmF0aGVyIHRoYW4KKyAgICAgICAgICAgIC8vIGluIHRoZSBJbkNhbGxTY3JlZW4sIHRvIG1ha2Ugc3VyZSB3ZSdsbCByZXNwb25kIHRvIHRoZW0KKyAgICAgICAgICAgIC8vIGV2ZW4gaWYgdGhlIEluQ2FsbFNjcmVlbiBoYXNuJ3QgY29tZSB0byB0aGUgZm9yZWdyb3VuZCB5ZXQuCisKKyAgICAgICAgICAgIC8vIExvb2sgZm9yIHRoZSBET1dOIGV2ZW50IGhlcmUsIHRvIGFncmVlIHdpdGggdGhlICJmYWxsYmFjayIKKyAgICAgICAgICAgIC8vIGJlaGF2aW9yIGluIHRoZSBJbkNhbGxTY3JlZW4uCisgICAgICAgICAgICBpZiAoZG93bikgeworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIElUZWxlcGhvbnkgcGhvbmVTZXJ2ID0gZ2V0UGhvbmVJbnRlcmZhY2UoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHBob25lU2VydiAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGhvbmVTZXJ2LmlzUmluZ2luZygpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nLmkoVEFHLCAiaW50ZXJjZXB0S2V5VHE6IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiBWT0xVTUUga2V5LWRvd24gd2hpbGUgcmluZ2luZzogU2lsZW5jZSByaW5nZXIhIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2lsZW5jZSB0aGUgcmluZ2VyLiAgKEl0J3Mgc2FmZSB0byBjYWxsIHRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBldmVuIGlmIHRoZSByaW5nZXIgaGFzIGFscmVhZHkgYmVlbiBzaWxlbmNlZC4pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGhvbmVTZXJ2LnNpbGVuY2VSaW5nZXIoKTsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFuZCAqZG9uJ3QqIHBhc3MgdGhpcyBrZXkgdGhydSB0byB0aGUgY3VycmVudCBhY3Rpdml0eQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICh3aGljaCBpcyBwcm9iYWJseSB0aGUgSW5DYWxsU2NyZWVuLikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgJj0gfkFDVElPTl9QQVNTX1RPX1VTRVI7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBMb2cudyhUQUcsICJWT0xVTUUgYnV0dG9uOiBVbmFibGUgdG8gZmluZCBJVGVsZXBob255IGludGVyZmFjZSIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICAgICAgICAgIExvZy53KFRBRywgIlZPTFVNRSBidXR0b246IFJlbW90ZUV4Y2VwdGlvbiBmcm9tIGdldFBob25lSW50ZXJmYWNlKCkiLCBleCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBjbGFzcyBQYXNzSGVhZHNldEtleSBpbXBsZW1lbnRzIFJ1bm5hYmxlIHsKKyAgICAgICAgS2V5RXZlbnQgbUtleUV2ZW50OworCisgICAgICAgIFBhc3NIZWFkc2V0S2V5KEtleUV2ZW50IGtleUV2ZW50KSB7CisgICAgICAgICAgICBtS2V5RXZlbnQgPSBrZXlFdmVudDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgIGlmIChBY3Rpdml0eU1hbmFnZXJOYXRpdmUuaXNTeXN0ZW1SZWFkeSgpKSB7CisgICAgICAgICAgICAgICAgSW50ZW50IGludGVudCA9IG5ldyBJbnRlbnQoSW50ZW50LkFDVElPTl9NRURJQV9CVVRUT04sIG51bGwpOworICAgICAgICAgICAgICAgIGludGVudC5wdXRFeHRyYShJbnRlbnQuRVhUUkFfS0VZX0VWRU5ULCBtS2V5RXZlbnQpOworICAgICAgICAgICAgICAgIG1Db250ZXh0LnNlbmRPcmRlcmVkQnJvYWRjYXN0KGludGVudCwgbnVsbCwgbUJyb2FkY2FzdERvbmUsCisgICAgICAgICAgICAgICAgICAgICAgICBtSGFuZGxlciwgQWN0aXZpdHkuUkVTVUxUX09LLCBudWxsLCBudWxsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIEJyb2FkY2FzdFJlY2VpdmVyIG1Ccm9hZGNhc3REb25lID0gbmV3IEJyb2FkY2FzdFJlY2VpdmVyKCkgeworICAgICAgICBwdWJsaWMgdm9pZCBvblJlY2VpdmUoQ29udGV4dCBjb250ZXh0LCBJbnRlbnQgaW50ZW50KSB7CisgICAgICAgICAgICBtQnJvYWRjYXN0V2FrZUxvY2sucmVsZWFzZSgpOworICAgICAgICB9CisgICAgfTsKKworICAgIEJyb2FkY2FzdFJlY2VpdmVyIG1Eb2NrUmVjZWl2ZXIgPSBuZXcgQnJvYWRjYXN0UmVjZWl2ZXIoKSB7CisgICAgICAgIHB1YmxpYyB2b2lkIG9uUmVjZWl2ZShDb250ZXh0IGNvbnRleHQsIEludGVudCBpbnRlbnQpIHsKKyAgICAgICAgICAgIGlmIChJbnRlbnQuQUNUSU9OX0RPQ0tfRVZFTlQuZXF1YWxzKGludGVudC5nZXRBY3Rpb24oKSkpIHsKKyAgICAgICAgICAgICAgICBtRG9ja01vZGUgPSBpbnRlbnQuZ2V0SW50RXh0cmEoSW50ZW50LkVYVFJBX0RPQ0tfU1RBVEUsCisgICAgICAgICAgICAgICAgICAgICAgICBJbnRlbnQuRVhUUkFfRE9DS19TVEFURV9VTkRPQ0tFRCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIElVaU1vZGVNYW5hZ2VyIHVpTW9kZVNlcnZpY2UgPSBJVWlNb2RlTWFuYWdlci5TdHViLmFzSW50ZXJmYWNlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNlcnZpY2VNYW5hZ2VyLmdldFNlcnZpY2UoQ29udGV4dC5VSV9NT0RFX1NFUlZJQ0UpKTsKKyAgICAgICAgICAgICAgICAgICAgbVVpTW9kZSA9IHVpTW9kZVNlcnZpY2UuZ2V0Q3VycmVudE1vZGVUeXBlKCk7CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICB1cGRhdGVSb3RhdGlvbihTdXJmYWNlLkZMQUdTX09SSUVOVEFUSU9OX0FOSU1BVElPTl9ESVNBQkxFKTsKKyAgICAgICAgICAgIHVwZGF0ZU9yaWVudGF0aW9uTGlzdGVuZXJMcCgpOworICAgICAgICB9CisgICAgfTsKKworICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIHZvaWQgc2NyZWVuVHVybmVkT2ZmKGludCB3aHkpIHsKKyAgICAgICAgRXZlbnRMb2cud3JpdGVFdmVudCg3MDAwMCwgMCk7CisgICAgICAgIG1LZXlndWFyZE1lZGlhdG9yLm9uU2NyZWVuVHVybmVkT2ZmKHdoeSk7CisgICAgICAgIHN5bmNocm9uaXplZCAobUxvY2spIHsKKyAgICAgICAgICAgIG1TY3JlZW5PbiA9IGZhbHNlOworICAgICAgICAgICAgdXBkYXRlT3JpZW50YXRpb25MaXN0ZW5lckxwKCk7CisgICAgICAgICAgICB1cGRhdGVMb2NrU2NyZWVuVGltZW91dCgpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgdm9pZCBzY3JlZW5UdXJuZWRPbigpIHsKKyAgICAgICAgRXZlbnRMb2cud3JpdGVFdmVudCg3MDAwMCwgMSk7CisgICAgICAgIG1LZXlndWFyZE1lZGlhdG9yLm9uU2NyZWVuVHVybmVkT24oKTsKKyAgICAgICAgc3luY2hyb25pemVkIChtTG9jaykgeworICAgICAgICAgICAgbVNjcmVlbk9uID0gdHJ1ZTsKKyAgICAgICAgICAgIHVwZGF0ZU9yaWVudGF0aW9uTGlzdGVuZXJMcCgpOworICAgICAgICAgICAgdXBkYXRlTG9ja1NjcmVlblRpbWVvdXQoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIGJvb2xlYW4gaXNTY3JlZW5PbigpIHsKKyAgICAgICAgcmV0dXJuIG1TY3JlZW5PbjsKKyAgICB9CisgICAgCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgdm9pZCBlbmFibGVLZXlndWFyZChib29sZWFuIGVuYWJsZWQpIHsKKyAgICAgICAgbUtleWd1YXJkTWVkaWF0b3Iuc2V0S2V5Z3VhcmRFbmFibGVkKGVuYWJsZWQpOworICAgIH0KKworICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIHZvaWQgZXhpdEtleWd1YXJkU2VjdXJlbHkoT25LZXlndWFyZEV4aXRSZXN1bHQgY2FsbGJhY2spIHsKKyAgICAgICAgbUtleWd1YXJkTWVkaWF0b3IudmVyaWZ5VW5sb2NrKGNhbGxiYWNrKTsKKyAgICB9CisKKyAgICBwcml2YXRlIGJvb2xlYW4ga2V5Z3VhcmRJc1Nob3dpbmdUcSgpIHsKKyAgICAgICAgcmV0dXJuIG1LZXlndWFyZE1lZGlhdG9yLmlzU2hvd2luZ0FuZE5vdEhpZGRlbigpOworICAgIH0KKworICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIGJvb2xlYW4gaW5LZXlndWFyZFJlc3RyaWN0ZWRLZXlJbnB1dE1vZGUoKSB7CisgICAgICAgIHJldHVybiBtS2V5Z3VhcmRNZWRpYXRvci5pc0lucHV0UmVzdHJpY3RlZCgpOworICAgIH0KKworICAgIHZvaWQgc2VuZENsb3NlU3lzdGVtV2luZG93cygpIHsKKyAgICAgICAgc2VuZENsb3NlU3lzdGVtV2luZG93cyhtQ29udGV4dCwgbnVsbCk7CisgICAgfQorCisgICAgdm9pZCBzZW5kQ2xvc2VTeXN0ZW1XaW5kb3dzKFN0cmluZyByZWFzb24pIHsKKyAgICAgICAgc2VuZENsb3NlU3lzdGVtV2luZG93cyhtQ29udGV4dCwgcmVhc29uKTsKKyAgICB9CisKKyAgICBzdGF0aWMgdm9pZCBzZW5kQ2xvc2VTeXN0ZW1XaW5kb3dzKENvbnRleHQgY29udGV4dCwgU3RyaW5nIHJlYXNvbikgeworICAgICAgICBpZiAoQWN0aXZpdHlNYW5hZ2VyTmF0aXZlLmlzU3lzdGVtUmVhZHkoKSkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBBY3Rpdml0eU1hbmFnZXJOYXRpdmUuZ2V0RGVmYXVsdCgpLmNsb3NlU3lzdGVtRGlhbG9ncyhyZWFzb24pOworICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBpbnQgcm90YXRpb25Gb3JPcmllbnRhdGlvbkx3KGludCBvcmllbnRhdGlvbiwgaW50IGxhc3RSb3RhdGlvbiwKKyAgICAgICAgICAgIGJvb2xlYW4gZGlzcGxheUVuYWJsZWQpIHsKKworICAgICAgICBpZiAobVBvcnRyYWl0Um90YXRpb24gPCAwKSB7CisgICAgICAgICAgICAvLyBJbml0aWFsaXplIHRoZSByb3RhdGlvbiBhbmdsZXMgZm9yIGVhY2ggb3JpZW50YXRpb24gb25jZS4KKyAgICAgICAgICAgIERpc3BsYXkgZCA9ICgoV2luZG93TWFuYWdlciltQ29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuV0lORE9XX1NFUlZJQ0UpKQorICAgICAgICAgICAgICAgICAgICAuZ2V0RGVmYXVsdERpc3BsYXkoKTsKKyAgICAgICAgICAgIGlmIChkLmdldFdpZHRoKCkgPiBkLmdldEhlaWdodCgpKSB7CisgICAgICAgICAgICAgICAgbVBvcnRyYWl0Um90YXRpb24gPSBTdXJmYWNlLlJPVEFUSU9OXzkwOworICAgICAgICAgICAgICAgIG1MYW5kc2NhcGVSb3RhdGlvbiA9IFN1cmZhY2UuUk9UQVRJT05fMDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbVBvcnRyYWl0Um90YXRpb24gPSBTdXJmYWNlLlJPVEFUSU9OXzA7CisgICAgICAgICAgICAgICAgbUxhbmRzY2FwZVJvdGF0aW9uID0gU3VyZmFjZS5ST1RBVElPTl85MDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHN5bmNocm9uaXplZCAobUxvY2spIHsKKyAgICAgICAgICAgIHN3aXRjaCAob3JpZW50YXRpb24pIHsKKyAgICAgICAgICAgICAgICBjYXNlIEFjdGl2aXR5SW5mby5TQ1JFRU5fT1JJRU5UQVRJT05fTEFORFNDQVBFOgorICAgICAgICAgICAgICAgICAgICAvL2Fsd2F5cyByZXR1cm4gbGFuZHNjYXBlIGlmIG9yaWVudGF0aW9uIHNldCB0byBsYW5kc2NhcGUKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1MYW5kc2NhcGVSb3RhdGlvbjsKKyAgICAgICAgICAgICAgICBjYXNlIEFjdGl2aXR5SW5mby5TQ1JFRU5fT1JJRU5UQVRJT05fUE9SVFJBSVQ6CisgICAgICAgICAgICAgICAgICAgIC8vYWx3YXlzIHJldHVybiBwb3J0cmFpdCBpZiBvcmllbnRhdGlvbiBzZXQgdG8gcG9ydHJhaXQKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1Qb3J0cmFpdFJvdGF0aW9uOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gY2FzZSBmb3Igbm9zZW5zb3IgbWVhbmluZyBpZ25vcmUgc2Vuc29yIGFuZCBjb25zaWRlciBvbmx5IGxpZAorICAgICAgICAgICAgLy8gb3Igb3JpZW50YXRpb24gc2Vuc29yIGRpc2FibGVkCisgICAgICAgICAgICAvL29yIGNhc2UudW5zcGVjaWZpZWQKKyAgICAgICAgICAgIGlmIChtTGlkT3BlbikgeworICAgICAgICAgICAgICAgIHJldHVybiBtTGlkT3BlblJvdGF0aW9uOworICAgICAgICAgICAgfSBlbHNlIGlmIChtRG9ja01vZGUgPT0gSW50ZW50LkVYVFJBX0RPQ0tfU1RBVEVfQ0FSICYmIG1DYXJEb2NrUm90YXRpb24gPj0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBtQ2FyRG9ja1JvdGF0aW9uOworICAgICAgICAgICAgfSBlbHNlIGlmIChtRG9ja01vZGUgPT0gSW50ZW50LkVYVFJBX0RPQ0tfU1RBVEVfREVTSyAmJiBtRGVza0RvY2tSb3RhdGlvbiA+PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1EZXNrRG9ja1JvdGF0aW9uOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAodXNlU2Vuc29yRm9yT3JpZW50YXRpb25McChvcmllbnRhdGlvbikpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHVzZXIgaGFzIGVuYWJsZWQgYXV0byByb3RhdGlvbiBieSBkZWZhdWx0LCBkbyBpdC4KKyAgICAgICAgICAgICAgICAgICAgaW50IGN1clJvdGF0aW9uID0gbU9yaWVudGF0aW9uTGlzdGVuZXIuZ2V0Q3VycmVudFJvdGF0aW9uKCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBjdXJSb3RhdGlvbiA+PSAwID8gY3VyUm90YXRpb24gOiBsYXN0Um90YXRpb247CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBTdXJmYWNlLlJPVEFUSU9OXzA7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBkZXRlY3RTYWZlTW9kZSgpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGludCBtZW51U3RhdGUgPSBtV2luZG93TWFuYWdlci5nZXRLZXljb2RlU3RhdGUoS2V5RXZlbnQuS0VZQ09ERV9NRU5VKTsKKyAgICAgICAgICAgIGludCBzU3RhdGUgPSBtV2luZG93TWFuYWdlci5nZXRLZXljb2RlU3RhdGUoS2V5RXZlbnQuS0VZQ09ERV9TKTsKKyAgICAgICAgICAgIGludCBkcGFkU3RhdGUgPSBtV2luZG93TWFuYWdlci5nZXREUGFkS2V5Y29kZVN0YXRlKEtleUV2ZW50LktFWUNPREVfRFBBRF9DRU5URVIpOworICAgICAgICAgICAgaW50IHRyYWNrYmFsbFN0YXRlID0gbVdpbmRvd01hbmFnZXIuZ2V0VHJhY2tiYWxsU2NhbmNvZGVTdGF0ZShCVE5fTU9VU0UpOworICAgICAgICAgICAgbVNhZmVNb2RlID0gbWVudVN0YXRlID4gMCB8fCBzU3RhdGUgPiAwIHx8IGRwYWRTdGF0ZSA+IDAgfHwgdHJhY2tiYWxsU3RhdGUgPiAwOworICAgICAgICAgICAgcGVyZm9ybUhhcHRpY0ZlZWRiYWNrTHcobnVsbCwgbVNhZmVNb2RlCisgICAgICAgICAgICAgICAgICAgID8gSGFwdGljRmVlZGJhY2tDb25zdGFudHMuU0FGRV9NT0RFX0VOQUJMRUQKKyAgICAgICAgICAgICAgICAgICAgOiBIYXB0aWNGZWVkYmFja0NvbnN0YW50cy5TQUZFX01PREVfRElTQUJMRUQsIHRydWUpOworICAgICAgICAgICAgaWYgKG1TYWZlTW9kZSkgeworICAgICAgICAgICAgICAgIExvZy5pKFRBRywgIlNBRkUgTU9ERSBFTkFCTEVEIChtZW51PSIgKyBtZW51U3RhdGUgKyAiIHM9IiArIHNTdGF0ZQorICAgICAgICAgICAgICAgICAgICAgICAgKyAiIGRwYWQ9IiArIGRwYWRTdGF0ZSArICIgdHJhY2tiYWxsPSIgKyB0cmFja2JhbGxTdGF0ZSArICIpIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIExvZy5pKFRBRywgIlNBRkUgTU9ERSBub3QgZW5hYmxlZCIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG1TYWZlTW9kZTsKKyAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIC8vIERvb20hIChpdCdzIGFsc28gbG9jYWwpCisgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigid2luZG93IG1hbmFnZXIgZGVhZCIpOworICAgICAgICB9CisgICAgfQorICAgIAorICAgIHN0YXRpYyBsb25nW10gZ2V0TG9uZ0ludEFycmF5KFJlc291cmNlcyByLCBpbnQgcmVzaWQpIHsKKyAgICAgICAgaW50W10gYXIgPSByLmdldEludEFycmF5KHJlc2lkKTsKKyAgICAgICAgaWYgKGFyID09IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisgICAgICAgIGxvbmdbXSBvdXQgPSBuZXcgbG9uZ1thci5sZW5ndGhdOworICAgICAgICBmb3IgKGludCBpPTA7IGk8YXIubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIG91dFtpXSA9IGFyW2ldOworICAgICAgICB9CisgICAgICAgIHJldHVybiBvdXQ7CisgICAgfQorICAgIAorICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIHZvaWQgc3lzdGVtUmVhZHkoKSB7CisgICAgICAgIC8vIHRlbGwgdGhlIGtleWd1YXJkCisgICAgICAgIG1LZXlndWFyZE1lZGlhdG9yLm9uU3lzdGVtUmVhZHkoKTsKKyAgICAgICAgYW5kcm9pZC5vcy5TeXN0ZW1Qcm9wZXJ0aWVzLnNldCgiZGV2LmJvb3Rjb21wbGV0ZSIsICIxIik7IAorICAgICAgICBzeW5jaHJvbml6ZWQgKG1Mb2NrKSB7CisgICAgICAgICAgICB1cGRhdGVPcmllbnRhdGlvbkxpc3RlbmVyTHAoKTsKKyAgICAgICAgICAgIG1TeXN0ZW1SZWFkeSA9IHRydWU7CisgICAgICAgICAgICBtSGFuZGxlci5wb3N0KG5ldyBSdW5uYWJsZSgpIHsKKyAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVNldHRpbmdzKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9CisgICAKKyAgICAvKioge0Bpbmhlcml0RG9jfSAqLworICAgIHB1YmxpYyB2b2lkIHVzZXJBY3Rpdml0eSgpIHsKKyAgICAgICAgc3luY2hyb25pemVkIChtU2NyZWVuTG9ja1RpbWVvdXQpIHsKKyAgICAgICAgICAgIGlmIChtTG9ja1NjcmVlblRpbWVyQWN0aXZlKSB7CisgICAgICAgICAgICAgICAgLy8gcmVzZXQgdGhlIHRpbWVyCisgICAgICAgICAgICAgICAgbUhhbmRsZXIucmVtb3ZlQ2FsbGJhY2tzKG1TY3JlZW5Mb2NrVGltZW91dCk7CisgICAgICAgICAgICAgICAgbUhhbmRsZXIucG9zdERlbGF5ZWQobVNjcmVlbkxvY2tUaW1lb3V0LCBtTG9ja1NjcmVlblRpbWVvdXQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgUnVubmFibGUgbVNjcmVlbkxvY2tUaW1lb3V0ID0gbmV3IFJ1bm5hYmxlKCkgeworICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKKyAgICAgICAgICAgICAgICBpZiAobG9jYWxMT0dWKSBMb2cudihUQUcsICJtU2NyZWVuTG9ja1RpbWVvdXQgYWN0aXZhdGluZyBrZXlndWFyZCIpOworICAgICAgICAgICAgICAgIG1LZXlndWFyZE1lZGlhdG9yLmRvS2V5Z3VhcmRUaW1lb3V0KCk7CisgICAgICAgICAgICAgICAgbUxvY2tTY3JlZW5UaW1lckFjdGl2ZSA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfTsKKworICAgIHByaXZhdGUgdm9pZCB1cGRhdGVMb2NrU2NyZWVuVGltZW91dCgpIHsKKyAgICAgICAgc3luY2hyb25pemVkIChtU2NyZWVuTG9ja1RpbWVvdXQpIHsKKyAgICAgICAgICAgIGJvb2xlYW4gZW5hYmxlID0gKG1BbGxvd0xvY2tzY3JlZW5XaGVuT24gJiYgbVNjcmVlbk9uICYmIG1LZXlndWFyZE1lZGlhdG9yLmlzU2VjdXJlKCkpOworICAgICAgICAgICAgaWYgKG1Mb2NrU2NyZWVuVGltZXJBY3RpdmUgIT0gZW5hYmxlKSB7CisgICAgICAgICAgICAgICAgaWYgKGVuYWJsZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAobG9jYWxMT0dWKSBMb2cudihUQUcsICJzZXR0aW5nIGxvY2tzY3JlZW4gdGltZXIiKTsKKyAgICAgICAgICAgICAgICAgICAgbUhhbmRsZXIucG9zdERlbGF5ZWQobVNjcmVlbkxvY2tUaW1lb3V0LCBtTG9ja1NjcmVlblRpbWVvdXQpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChsb2NhbExPR1YpIExvZy52KFRBRywgImNsZWFyaW5nIGxvY2tzY3JlZW4gdGltZXIiKTsKKyAgICAgICAgICAgICAgICAgICAgbUhhbmRsZXIucmVtb3ZlQ2FsbGJhY2tzKG1TY3JlZW5Mb2NrVGltZW91dCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1Mb2NrU2NyZWVuVGltZXJBY3RpdmUgPSBlbmFibGU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioge0Bpbmhlcml0RG9jfSAqLworICAgIHB1YmxpYyB2b2lkIGVuYWJsZVNjcmVlbkFmdGVyQm9vdCgpIHsKKyAgICAgICAgcmVhZExpZFN0YXRlKCk7CisgICAgICAgIHVwZGF0ZVJvdGF0aW9uKFN1cmZhY2UuRkxBR1NfT1JJRU5UQVRJT05fQU5JTUFUSU9OX0RJU0FCTEUpOworICAgIH0KKworICAgIHZvaWQgdXBkYXRlUm90YXRpb24oaW50IGFuaW1GbGFncykgeworICAgICAgICBtUG93ZXJNYW5hZ2VyLnNldEtleWJvYXJkVmlzaWJpbGl0eShtTGlkT3Blbik7CisgICAgICAgIGludCByb3RhdGlvbiA9IFN1cmZhY2UuUk9UQVRJT05fMDsKKyAgICAgICAgaWYgKG1MaWRPcGVuKSB7CisgICAgICAgICAgICByb3RhdGlvbiA9IG1MaWRPcGVuUm90YXRpb247CisgICAgICAgIH0gZWxzZSBpZiAobURvY2tNb2RlID09IEludGVudC5FWFRSQV9ET0NLX1NUQVRFX0NBUiAmJiBtQ2FyRG9ja1JvdGF0aW9uID49IDApIHsKKyAgICAgICAgICAgIHJvdGF0aW9uID0gbUNhckRvY2tSb3RhdGlvbjsKKyAgICAgICAgfSBlbHNlIGlmIChtRG9ja01vZGUgPT0gSW50ZW50LkVYVFJBX0RPQ0tfU1RBVEVfREVTSyAmJiBtRGVza0RvY2tSb3RhdGlvbiA+PSAwKSB7CisgICAgICAgICAgICByb3RhdGlvbiA9IG1EZXNrRG9ja1JvdGF0aW9uOworICAgICAgICB9CisgICAgICAgIC8vaWYgbGlkIGlzIGNsb3NlZCBvcmllbnRhdGlvbiB3aWxsIGJlIHBvcnRyYWl0CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAvL3NldCBvcmllbnRhdGlvbiBvbiBXaW5kb3dNYW5hZ2VyCisgICAgICAgICAgICBtV2luZG93TWFuYWdlci5zZXRSb3RhdGlvbihyb3RhdGlvbiwgdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgbUZhbmN5Um90YXRpb25BbmltYXRpb24gfCBhbmltRmxhZ3MpOworICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgLy8gSWdub3JlCisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm4gYW4gSW50ZW50IHRvIGxhdW5jaCB0aGUgY3VycmVudGx5IGFjdGl2ZSBkb2NrIGFzIGhvbWUuICBSZXR1cm5zCisgICAgICogbnVsbCBpZiB0aGUgc3RhbmRhcmQgaG9tZSBzaG91bGQgYmUgbGF1bmNoZWQuCisgICAgICogQHJldHVybgorICAgICAqLworICAgIEludGVudCBjcmVhdGVIb21lRG9ja0ludGVudCgpIHsKKyAgICAgICAgSW50ZW50IGludGVudDsKKyAgICAgICAgCisgICAgICAgIC8vIFdoYXQgaG9tZSBkb2VzIGlzIGJhc2VkIG9uIHRoZSBtb2RlLCBub3QgdGhlIGRvY2sgc3RhdGUuICBUaGF0CisgICAgICAgIC8vIGlzLCB3aGVuIGluIGNhciBtb2RlIHlvdSBzaG91bGQgYmUgdGFrZW4gdG8gY2FyIGhvbWUgcmVnYXJkbGVzcworICAgICAgICAvLyBvZiB3aGV0aGVyIHdlIGFyZSBhY3R1YWxseSBpbiBhIGNhciBkb2NrLgorICAgICAgICBpZiAobVVpTW9kZSA9PSBDb25maWd1cmF0aW9uLlVJX01PREVfVFlQRV9DQVIpIHsKKyAgICAgICAgICAgIGludGVudCA9IG1DYXJEb2NrSW50ZW50OworICAgICAgICB9IGVsc2UgaWYgKG1VaU1vZGUgPT0gQ29uZmlndXJhdGlvbi5VSV9NT0RFX1RZUEVfREVTSykgeworICAgICAgICAgICAgaW50ZW50ID0gbURlc2tEb2NrSW50ZW50OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEFjdGl2aXR5SW5mbyBhaSA9IGludGVudC5yZXNvbHZlQWN0aXZpdHlJbmZvKAorICAgICAgICAgICAgICAgIG1Db250ZXh0LmdldFBhY2thZ2VNYW5hZ2VyKCksIFBhY2thZ2VNYW5hZ2VyLkdFVF9NRVRBX0RBVEEpOworICAgICAgICBpZiAoYWkgPT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChhaS5tZXRhRGF0YSAhPSBudWxsICYmIGFpLm1ldGFEYXRhLmdldEJvb2xlYW4oSW50ZW50Lk1FVEFEQVRBX0RPQ0tfSE9NRSkpIHsKKyAgICAgICAgICAgIGludGVudCA9IG5ldyBJbnRlbnQoaW50ZW50KTsKKyAgICAgICAgICAgIGludGVudC5zZXRDbGFzc05hbWUoYWkucGFja2FnZU5hbWUsIGFpLm5hbWUpOworICAgICAgICAgICAgcmV0dXJuIGludGVudDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICAgIAorICAgIHZvaWQgc3RhcnREb2NrT3JIb21lKCkgeworICAgICAgICBJbnRlbnQgZG9jayA9IGNyZWF0ZUhvbWVEb2NrSW50ZW50KCk7CisgICAgICAgIGlmIChkb2NrICE9IG51bGwpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgbUNvbnRleHQuc3RhcnRBY3Rpdml0eShkb2NrKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9IGNhdGNoIChBY3Rpdml0eU5vdEZvdW5kRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBtQ29udGV4dC5zdGFydEFjdGl2aXR5KG1Ib21lSW50ZW50KTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogZ29lcyB0byB0aGUgaG9tZSBzY3JlZW4KKyAgICAgKiBAcmV0dXJuIHdoZXRoZXIgaXQgZGlkIGFueXRoaW5nCisgICAgICovCisgICAgYm9vbGVhbiBnb0hvbWUoKSB7CisgICAgICAgIGlmIChmYWxzZSkgeworICAgICAgICAgICAgLy8gVGhpcyBjb2RlIGFsd2F5cyBicmluZ3MgaG9tZSB0byB0aGUgZnJvbnQuCisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIEFjdGl2aXR5TWFuYWdlck5hdGl2ZS5nZXREZWZhdWx0KCkuc3RvcEFwcFN3aXRjaGVzKCk7CisgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgfQorICAgICAgICAgICAgc2VuZENsb3NlU3lzdGVtV2luZG93cygpOworICAgICAgICAgICAgc3RhcnREb2NrT3JIb21lKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBUaGlzIGNvZGUgYnJpbmdzIGhvbWUgdG8gdGhlIGZyb250IG9yLCBpZiBpdCBpcyBhbHJlYWR5CisgICAgICAgICAgICAvLyBhdCB0aGUgZnJvbnQsIHB1dHMgdGhlIGRldmljZSB0byBzbGVlcC4KKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgaWYgKFN5c3RlbVByb3BlcnRpZXMuZ2V0SW50KCJwZXJzaXN0LnN5cy51dHMtdGVzdC1tb2RlIiwgMCkgPT0gMSkgeworICAgICAgICAgICAgICAgICAgICAvLy8gUm9sbCBiYWNrIEVuZGNhbGxCZWhhdmlvciBhcyB0aGUgY3VwY2FrZSBkZXNpZ24gdG8gcGFzcyBQMSBsYWIgZW50cnkuCisgICAgICAgICAgICAgICAgICAgIExvZy5kKFRBRywgIlVUUy1URVNULU1PREUiKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eU1hbmFnZXJOYXRpdmUuZ2V0RGVmYXVsdCgpLnN0b3BBcHBTd2l0Y2hlcygpOworICAgICAgICAgICAgICAgICAgICBzZW5kQ2xvc2VTeXN0ZW1XaW5kb3dzKCk7CisgICAgICAgICAgICAgICAgICAgIEludGVudCBkb2NrID0gY3JlYXRlSG9tZURvY2tJbnRlbnQoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGRvY2sgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlc3VsdCA9IEFjdGl2aXR5TWFuYWdlck5hdGl2ZS5nZXREZWZhdWx0KCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnN0YXJ0QWN0aXZpdHkobnVsbCwgZG9jaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2NrLnJlc29sdmVUeXBlSWZOZWVkZWQobUNvbnRleHQuZ2V0Q29udGVudFJlc29sdmVyKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsIDAsIG51bGwsIG51bGwsIDAsIHRydWUgLyogb25seUlmTmVlZGVkKi8sIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gSUFjdGl2aXR5TWFuYWdlci5TVEFSVF9SRVRVUk5fSU5URU5UX1RPX0NBTExFUikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpbnQgcmVzdWx0ID0gQWN0aXZpdHlNYW5hZ2VyTmF0aXZlLmdldERlZmF1bHQoKQorICAgICAgICAgICAgICAgICAgICAgICAgLnN0YXJ0QWN0aXZpdHkobnVsbCwgbUhvbWVJbnRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Ib21lSW50ZW50LnJlc29sdmVUeXBlSWZOZWVkZWQobUNvbnRleHQuZ2V0Q29udGVudFJlc29sdmVyKCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsLCAwLCBudWxsLCBudWxsLCAwLCB0cnVlIC8qIG9ubHlJZk5lZWRlZCovLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBJQWN0aXZpdHlNYW5hZ2VyLlNUQVJUX1JFVFVSTl9JTlRFTlRfVE9fQ0FMTEVSKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgICAgICAvLyBidW1tZXIsIHRoZSBhY3Rpdml0eSBtYW5hZ2VyLCB3aGljaCBpcyBpbiB0aGlzIHByb2Nlc3MsIGlzIGRlYWQKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgc2V0Q3VycmVudE9yaWVudGF0aW9uTHcoaW50IG5ld09yaWVudGF0aW9uKSB7CisgICAgICAgIHN5bmNocm9uaXplZCAobUxvY2spIHsKKyAgICAgICAgICAgIGlmIChuZXdPcmllbnRhdGlvbiAhPSBtQ3VycmVudEFwcE9yaWVudGF0aW9uKSB7CisgICAgICAgICAgICAgICAgbUN1cnJlbnRBcHBPcmllbnRhdGlvbiA9IG5ld09yaWVudGF0aW9uOworICAgICAgICAgICAgICAgIHVwZGF0ZU9yaWVudGF0aW9uTGlzdGVuZXJMcCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gcGVyZm9ybUhhcHRpY0ZlZWRiYWNrTHcoV2luZG93U3RhdGUgd2luLCBpbnQgZWZmZWN0SWQsIGJvb2xlYW4gYWx3YXlzKSB7CisgICAgICAgIGZpbmFsIGJvb2xlYW4gaGFwdGljc0Rpc2FibGVkID0gU2V0dGluZ3MuU3lzdGVtLmdldEludChtQ29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKSwKKyAgICAgICAgICAgICAgICBTZXR0aW5ncy5TeXN0ZW0uSEFQVElDX0ZFRURCQUNLX0VOQUJMRUQsIDApID09IDA7CisgICAgICAgIGlmICghYWx3YXlzICYmIChoYXB0aWNzRGlzYWJsZWQgfHwgbUtleWd1YXJkTWVkaWF0b3IuaXNTaG93aW5nQW5kTm90SGlkZGVuKCkpKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgbG9uZ1tdIHBhdHRlcm4gPSBudWxsOworICAgICAgICBzd2l0Y2ggKGVmZmVjdElkKSB7CisgICAgICAgICAgICBjYXNlIEhhcHRpY0ZlZWRiYWNrQ29uc3RhbnRzLkxPTkdfUFJFU1M6CisgICAgICAgICAgICAgICAgcGF0dGVybiA9IG1Mb25nUHJlc3NWaWJlUGF0dGVybjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgSGFwdGljRmVlZGJhY2tDb25zdGFudHMuVklSVFVBTF9LRVk6CisgICAgICAgICAgICAgICAgcGF0dGVybiA9IG1WaXJ0dWFsS2V5VmliZVBhdHRlcm47CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEhhcHRpY0ZlZWRiYWNrQ29uc3RhbnRzLktFWUJPQVJEX1RBUDoKKyAgICAgICAgICAgICAgICBwYXR0ZXJuID0gbUtleWJvYXJkVGFwVmliZVBhdHRlcm47CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEhhcHRpY0ZlZWRiYWNrQ29uc3RhbnRzLlNBRkVfTU9ERV9ESVNBQkxFRDoKKyAgICAgICAgICAgICAgICBwYXR0ZXJuID0gbVNhZmVNb2RlRGlzYWJsZWRWaWJlUGF0dGVybjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgSGFwdGljRmVlZGJhY2tDb25zdGFudHMuU0FGRV9NT0RFX0VOQUJMRUQ6CisgICAgICAgICAgICAgICAgcGF0dGVybiA9IG1TYWZlTW9kZUVuYWJsZWRWaWJlUGF0dGVybjsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGlmIChwYXR0ZXJuLmxlbmd0aCA9PSAxKSB7CisgICAgICAgICAgICAvLyBPbmUtc2hvdCB2aWJyYXRpb24KKyAgICAgICAgICAgIG1WaWJyYXRvci52aWJyYXRlKHBhdHRlcm5bMF0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gUGF0dGVybiB2aWJyYXRpb24KKyAgICAgICAgICAgIG1WaWJyYXRvci52aWJyYXRlKHBhdHRlcm4sIC0xKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgc2NyZWVuT25TdG9wcGVkTHcoKSB7CisgICAgICAgIGlmICghbUtleWd1YXJkTWVkaWF0b3IuaXNTaG93aW5nQW5kTm90SGlkZGVuKCkgJiYgbVBvd2VyTWFuYWdlci5pc1NjcmVlbk9uKCkpIHsKKyAgICAgICAgICAgIGxvbmcgY3VyVGltZSA9IFN5c3RlbUNsb2NrLnVwdGltZU1pbGxpcygpOworICAgICAgICAgICAgbVBvd2VyTWFuYWdlci51c2VyQWN0aXZpdHkoY3VyVGltZSwgZmFsc2UsIExvY2FsUG93ZXJNYW5hZ2VyLk9USEVSX0VWRU5UKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGFsbG93S2V5UmVwZWF0KCkgeworICAgICAgICAvLyBkaXNhYmxlIGtleSByZXBlYXQgd2hlbiBzY3JlZW4gaXMgb2ZmCisgICAgICAgIHJldHVybiBtU2NyZWVuT247CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9Qb2xpY3kuamF2YSBiL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvUG9saWN5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTdmM2U5MQotLS0gL2Rldi9udWxsCisrKyBiL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvUG9saWN5LmphdmEKQEAgLTAsMCArMSw2OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGw7CisKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOworCitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LklQb2xpY3k7CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGwuUGhvbmVMYXlvdXRJbmZsYXRlcjsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5wb2xpY3kuaW1wbC5QaG9uZVdpbmRvdzsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5wb2xpY3kuaW1wbC5QaG9uZVdpbmRvd01hbmFnZXI7CisKKy8qKgorICoge0BoaWRlfQorICovCisKKy8vIFNpbXBsZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgcG9saWN5IGludGVyZmFjZSB0aGF0IHNwYXducyB0aGUgcmlnaHQKKy8vIHNldCBvZiBvYmplY3RzCitwdWJsaWMgY2xhc3MgUG9saWN5IGltcGxlbWVudHMgSVBvbGljeSB7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9ICJQaG9uZVBvbGljeSI7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmdbXSBwcmVsb2FkX2NsYXNzZXMgPSB7CisgICAgICAgICJjb20uYW5kcm9pZC5pbnRlcm5hbC5wb2xpY3kuaW1wbC5QaG9uZUxheW91dEluZmxhdGVyIiwKKyAgICAgICAgImNvbS5hbmRyb2lkLmludGVybmFsLnBvbGljeS5pbXBsLlBob25lV2luZG93IiwKKyAgICAgICAgImNvbS5hbmRyb2lkLmludGVybmFsLnBvbGljeS5pbXBsLlBob25lV2luZG93JDEiLAorICAgICAgICAiY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGwuUGhvbmVXaW5kb3ckQ29udGV4dE1lbnVDYWxsYmFjayIsCisgICAgICAgICJjb20uYW5kcm9pZC5pbnRlcm5hbC5wb2xpY3kuaW1wbC5QaG9uZVdpbmRvdyREZWNvclZpZXciLAorICAgICAgICAiY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGwuUGhvbmVXaW5kb3ckUGFuZWxGZWF0dXJlU3RhdGUiLAorICAgICAgICAiY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGwuUGhvbmVXaW5kb3ckUGFuZWxGZWF0dXJlU3RhdGUkU2F2ZWRTdGF0ZSIsCisgICAgfTsKKworICAgIHN0YXRpYyB7CisgICAgICAgIC8vIEZvciBwZXJmb3JtYW5jZSByZWFzb25zLCBwcmVsb2FkIHNvbWUgcG9saWN5IHNwZWNpZmljIGNsYXNzZXMgd2hlbgorICAgICAgICAvLyB0aGUgcG9saWN5IGdldHMgbG9hZGVkLgorICAgICAgICBmb3IgKFN0cmluZyBzIDogcHJlbG9hZF9jbGFzc2VzKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIENsYXNzLmZvck5hbWUocyk7CisgICAgICAgICAgICB9IGNhdGNoIChDbGFzc05vdEZvdW5kRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICAgICAgTG9nLmUoVEFHLCAiQ291bGQgbm90IHByZWxvYWQgY2xhc3MgZm9yIHBob25lIHBvbGljeTogIiArIHMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIFBob25lV2luZG93IG1ha2VOZXdXaW5kb3coQ29udGV4dCBjb250ZXh0KSB7CisgICAgICAgIHJldHVybiBuZXcgUGhvbmVXaW5kb3coY29udGV4dCk7CisgICAgfQorCisgICAgcHVibGljIFBob25lTGF5b3V0SW5mbGF0ZXIgbWFrZU5ld0xheW91dEluZmxhdGVyKENvbnRleHQgY29udGV4dCkgeworICAgICAgICByZXR1cm4gbmV3IFBob25lTGF5b3V0SW5mbGF0ZXIoY29udGV4dCk7CisgICAgfQorCisgICAgcHVibGljIFBob25lV2luZG93TWFuYWdlciBtYWtlTmV3V2luZG93TWFuYWdlcigpIHsKKyAgICAgICAgcmV0dXJuIG5ldyBQaG9uZVdpbmRvd01hbmFnZXIoKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL1Bvd2VyRGlhbG9nLmphdmEgYi9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL1Bvd2VyRGlhbG9nLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGUzNWJkNwotLS0gL2Rldi9udWxsCisrKyBiL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvUG93ZXJEaWFsb2cuamF2YQpAQCAtMCwwICsxLDE4MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGw7CisKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SOworCitpbXBvcnQgYW5kcm9pZC5hcHAuRGlhbG9nOworaW1wb3J0IGFuZHJvaWQuYXBwLlN0YXR1c0Jhck1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CitpbXBvcnQgYW5kcm9pZC5vcy5CdW5kbGU7CitpbXBvcnQgYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb247CitpbXBvcnQgYW5kcm9pZC5vcy5Mb2NhbFBvd2VyTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLm9zLlNlcnZpY2VNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQub3MuU3lzdGVtQ2xvY2s7CisKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5hcHAuU2h1dGRvd25UaHJlYWQ7CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LklUZWxlcGhvbnk7CitpbXBvcnQgYW5kcm9pZC52aWV3LktleUV2ZW50OworaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CitpbXBvcnQgYW5kcm9pZC52aWV3LlZpZXc7CitpbXBvcnQgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC52aWV3LlZpZXcuT25DbGlja0xpc3RlbmVyOworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3Lk9uS2V5TGlzdGVuZXI7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuQnV0dG9uOworCisvKioKKyAqIEBkZXByZWNhdGVkIHVzZSB7QGxpbmsgR2xvYmFsQWN0aW9uc30gaW5zdGVhZC4KKyAqLworcHVibGljIGNsYXNzIFBvd2VyRGlhbG9nIGV4dGVuZHMgRGlhbG9nIGltcGxlbWVudHMgT25DbGlja0xpc3RlbmVyLAorICAgICAgICBPbktleUxpc3RlbmVyIHsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gIlBvd2VyRGlhbG9nIjsKKworICAgIHN0YXRpYyBwcml2YXRlIFN0YXR1c0Jhck1hbmFnZXIgc1N0YXR1c0JhcjsKKyAgICBwcml2YXRlIEJ1dHRvbiBtS2V5Z3VhcmQ7CisgICAgcHJpdmF0ZSBCdXR0b24gbVBvd2VyOworICAgIHByaXZhdGUgQnV0dG9uIG1SYWRpb1Bvd2VyOworICAgIHByaXZhdGUgQnV0dG9uIG1TaWxlbnQ7CisKKyAgICBwcml2YXRlIExvY2FsUG93ZXJNYW5hZ2VyIG1Qb3dlck1hbmFnZXI7CisKKyAgICBwdWJsaWMgUG93ZXJEaWFsb2coQ29udGV4dCBjb250ZXh0LCBMb2NhbFBvd2VyTWFuYWdlciBwb3dlck1hbmFnZXIpIHsKKyAgICAgICAgc3VwZXIoY29udGV4dCk7CisgICAgICAgIG1Qb3dlck1hbmFnZXIgPSBwb3dlck1hbmFnZXI7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgb25DcmVhdGUoQnVuZGxlIHNhdmVkSW5zdGFuY2VTdGF0ZSkgeworICAgICAgICBzdXBlci5vbkNyZWF0ZShzYXZlZEluc3RhbmNlU3RhdGUpOworCisgICAgICAgIENvbnRleHQgY29udGV4dCA9IGdldENvbnRleHQoKTsKKworICAgICAgICBpZiAoc1N0YXR1c0JhciA9PSBudWxsKSB7CisgICAgICAgICAgICBzU3RhdHVzQmFyID0gKFN0YXR1c0Jhck1hbmFnZXIpY29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuU1RBVFVTX0JBUl9TRVJWSUNFKTsKKyAgICAgICAgfQorCisgICAgICAgIHNldENvbnRlbnRWaWV3KGNvbS5hbmRyb2lkLmludGVybmFsLlIubGF5b3V0LnBvd2VyX2RpYWxvZyk7CisKKyAgICAgICAgZ2V0V2luZG93KCkuc2V0VHlwZShXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5UWVBFX1NZU1RFTV9ESUFMT0cpOworICAgICAgICBpZiAoIWdldENvbnRleHQoKS5nZXRSZXNvdXJjZXMoKS5nZXRCb29sZWFuKAorICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuYm9vbC5jb25maWdfc2Zfc2xvd0JsdXIpKSB7CisgICAgICAgICAgICBnZXRXaW5kb3coKS5zZXRGbGFncyhXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX0JMVVJfQkVISU5ELAorICAgICAgICAgICAgICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX0JMVVJfQkVISU5EKTsKKyAgICAgICAgfQorICAgICAgICBnZXRXaW5kb3coKS5zZXRGbGFncyhXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX0FMVF9GT0NVU0FCTEVfSU0sCisgICAgICAgICAgICAgICAgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19BTFRfRk9DVVNBQkxFX0lNKTsKKworICAgICAgICBzZXRUaXRsZShjb250ZXh0LmdldFRleHQoUi5zdHJpbmcucG93ZXJfZGlhbG9nKSk7CisKKyAgICAgICAgbUtleWd1YXJkID0gKEJ1dHRvbikgZmluZFZpZXdCeUlkKFIuaWQua2V5Z3VhcmQpOworICAgICAgICBtUG93ZXIgPSAoQnV0dG9uKSBmaW5kVmlld0J5SWQoUi5pZC5vZmYpOworICAgICAgICBtUmFkaW9Qb3dlciA9IChCdXR0b24pIGZpbmRWaWV3QnlJZChSLmlkLnJhZGlvX3Bvd2VyKTsKKyAgICAgICAgbVNpbGVudCA9IChCdXR0b24pIGZpbmRWaWV3QnlJZChSLmlkLnNpbGVudCk7CisKKyAgICAgICAgaWYgKG1LZXlndWFyZCAhPSBudWxsKSB7CisgICAgICAgICAgICBtS2V5Z3VhcmQuc2V0T25LZXlMaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgICAgIG1LZXlndWFyZC5zZXRPbkNsaWNrTGlzdGVuZXIodGhpcyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1Qb3dlciAhPSBudWxsKSB7CisgICAgICAgICAgICBtUG93ZXIuc2V0T25DbGlja0xpc3RlbmVyKHRoaXMpOworICAgICAgICB9CisgICAgICAgIGlmIChtUmFkaW9Qb3dlciAhPSBudWxsKSB7CisgICAgICAgICAgICBtUmFkaW9Qb3dlci5zZXRPbkNsaWNrTGlzdGVuZXIodGhpcyk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG1TaWxlbnQgIT0gbnVsbCkgeworICAgICAgICAgICAgbVNpbGVudC5zZXRPbkNsaWNrTGlzdGVuZXIodGhpcyk7CisgICAgICAgICAgICAvLyBYWFg6IEhBQ0sgZm9yIG5vdyBoaWRlIHRoZSBzaWxlbnQgdW50aWwgd2UgZ2V0IG11dGUgc3VwcG9ydAorICAgICAgICAgICAgbVNpbGVudC5zZXRWaXNpYmlsaXR5KFZpZXcuR09ORSk7CisgICAgICAgIH0KKworICAgICAgICBDaGFyU2VxdWVuY2UgdGV4dDsKKworICAgICAgICAvLyBzZXQgdGhlIGtleWd1YXJkIGJ1dHRvbidzIHRleHQKKyAgICAgICAgdGV4dCA9IGNvbnRleHQuZ2V0VGV4dChSLnN0cmluZy5zY3JlZW5fbG9jayk7CisgICAgICAgIG1LZXlndWFyZC5zZXRUZXh0KHRleHQpOworICAgICAgICBtS2V5Z3VhcmQucmVxdWVzdEZvY3VzKCk7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIElUZWxlcGhvbnkgcGhvbmUgPSBJVGVsZXBob255LlN0dWIuYXNJbnRlcmZhY2UoU2VydmljZU1hbmFnZXIuY2hlY2tTZXJ2aWNlKCJwaG9uZSIpKTsKKyAgICAgICAgICAgIGlmIChwaG9uZSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgdGV4dCA9IHBob25lLmlzUmFkaW9PbigpID8gY29udGV4dAorICAgICAgICAgICAgICAgICAgICAgICAgLmdldFRleHQoUi5zdHJpbmcudHVybl9vZmZfcmFkaW8pIDogY29udGV4dAorICAgICAgICAgICAgICAgICAgICAgICAgLmdldFRleHQoUi5zdHJpbmcudHVybl9vbl9yYWRpbyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgLy8gaWdub3JlIGl0CisgICAgICAgIH0KKworICAgICAgICBtUmFkaW9Qb3dlci5zZXRUZXh0KHRleHQpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG9uQ2xpY2soVmlldyB2KSB7CisgICAgICAgIHRoaXMuZGlzbWlzcygpOworICAgICAgICBpZiAodiA9PSBtUG93ZXIpIHsKKyAgICAgICAgICAgIC8vIHNodXRkb3duIGJ5IG1ha2luZyBzdXJlIHJhZGlvIGFuZCBwb3dlciBhcmUgaGFuZGxlZCBhY2NvcmRpbmdseS4KKyAgICAgICAgICAgIFNodXRkb3duVGhyZWFkLnNodXRkb3duKGdldENvbnRleHQoKSwgdHJ1ZSk7CisgICAgICAgIH0gZWxzZSBpZiAodiA9PSBtUmFkaW9Qb3dlcikgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBJVGVsZXBob255IHBob25lID0gSVRlbGVwaG9ueS5TdHViLmFzSW50ZXJmYWNlKFNlcnZpY2VNYW5hZ2VyLmNoZWNrU2VydmljZSgicGhvbmUiKSk7CisgICAgICAgICAgICAgICAgaWYgKHBob25lICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgcGhvbmUudG9nZ2xlUmFkaW9Pbk9mZigpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgICAgIC8vIGlnbm9yZSBpdAorICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKHYgPT0gbVNpbGVudCkgeworICAgICAgICAgICAgLy8gZG8gc29tZXRoaW5nCisgICAgICAgIH0gZWxzZSBpZiAodiA9PSBtS2V5Z3VhcmQpIHsKKyAgICAgICAgICAgIGlmICh2LmlzSW5Ub3VjaE1vZGUoKSkgeworICAgICAgICAgICAgICAgIC8vIG9ubHkgaW4gdG91Y2ggbW9kZSBmb3IgdGhlIHJlYXNvbnMgZXhwbGFpbmVkIGluIG9uS2V5LgorICAgICAgICAgICAgICAgIHRoaXMuZGlzbWlzcygpOworICAgICAgICAgICAgICAgIG1Qb3dlck1hbmFnZXIuZ29Ub1NsZWVwKFN5c3RlbUNsb2NrLnVwdGltZU1pbGxpcygpICsgMSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBvbktleShWaWV3IHYsIGludCBrZXlDb2RlLCBLZXlFdmVudCBldmVudCkgeworICAgICAgICAvLyBUaGUgYWN0aXZhdGUga2V5Z3VhcmQgYnV0dG9uIG5lZWRzIHRvIHB1dCB0aGUgZGV2aWNlIHRvIHNsZWVwIG9uIHRoZQorICAgICAgICAvLyBrZXkgdXAgZXZlbnQuIElmIHdlIHRyeSB0byBwdXQgaXQgdG8gc2xlZXAgb24gdGhlIGNsaWNrIG9yIGRvd24KKyAgICAgICAgLy8gYWN0aW9uCisgICAgICAgIC8vIHRoZSB0aGUgdXAgYWN0aW9uIHdpbGwgY2F1c2UgdGhlIGRldmljZSB0byB3YWtlIGJhY2sgdXAuCisKKyAgICAgICAgLy8gTG9nLmkoVEFHLCAia2V5Q29kZTogIiArIGtleUNvZGUgKyAiIGFjdGlvbjogIiArIGV2ZW50LmdldEFjdGlvbigpKTsKKyAgICAgICAgaWYgKGtleUNvZGUgIT0gS2V5RXZlbnQuS0VZQ09ERV9EUEFEX0NFTlRFUgorICAgICAgICAgICAgICAgIHx8IGV2ZW50LmdldEFjdGlvbigpICE9IEtleUV2ZW50LkFDVElPTl9VUCkgeworICAgICAgICAgICAgLy8gTG9nLmkoVEFHLCAiZ2V0dGluZyBvdXQgb2YgZG9kZ2UuLi4iKTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIExvZy5pKFRBRywgIkNsaWNrZWQgbUtleWd1YXJkISBkaW1pc3NpbmcgZGlhbG9nIik7CisgICAgICAgIHRoaXMuZGlzbWlzcygpOworICAgICAgICAvLyBMb2cuaShUQUcsICJvbktleTogdHVybmluZyBvZmYgdGhlIHNjcmVlbi4uLiIpOworICAgICAgICAvLyBYWFg6IFRoaXMgaXMgYSBoYWNrIGZvciBub3cKKyAgICAgICAgbVBvd2VyTWFuYWdlci5nb1RvU2xlZXAoZXZlbnQuZ2V0RXZlbnRUaW1lKCkgKyAxKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2hvdygpIHsKKyAgICAgICAgc3VwZXIuc2hvdygpOworICAgICAgICBMb2cuZChUQUcsICJzaG93Li4uIGRpc2FibGluZyBleHBhbmQiKTsKKyAgICAgICAgc1N0YXR1c0Jhci5kaXNhYmxlKFN0YXR1c0Jhck1hbmFnZXIuRElTQUJMRV9FWFBBTkQpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGRpc21pc3MoKSB7CisgICAgICAgIHN1cGVyLmRpc21pc3MoKTsKKyAgICAgICAgTG9nLmQoVEFHLCAiZGlzbWlzcy4uLiByZWVuYWJsaW5nIGV4cGFuZCIpOworICAgICAgICBzU3RhdHVzQmFyLmRpc2FibGUoU3RhdHVzQmFyTWFuYWdlci5ESVNBQkxFX05PTkUpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvUmVjZW50QXBwbGljYXRpb25zQmFja2dyb3VuZC5qYXZhIGIvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9SZWNlbnRBcHBsaWNhdGlvbnNCYWNrZ3JvdW5kLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2M5OWU4NwotLS0gL2Rldi9udWxsCisrKyBiL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvUmVjZW50QXBwbGljYXRpb25zQmFja2dyb3VuZC5qYXZhCkBAIC0wLDAgKzEsMTUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5pbnRlcm5hbC5wb2xpY3kuaW1wbDsKKworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzOworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuUmVjdDsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlOworaW1wb3J0IGFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQ7CitpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuR3Jhdml0eTsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuVmlldzsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5MaW5lYXJMYXlvdXQ7CisKKy8qKgorICogQSB2ZXJ0aWNhbCBsaW5lYXIgbGF5b3V0LiAgSG93ZXZlciwgaW5zdGVhZCBvZiBkcmF3aW5nIHRoZSBiYWNrZ3JvdW5kCisgKiBiZWhuZCB0aGUgaXRlbXMsIGl0IGRyYXdzIHRoZSBiYWNrZ3JvdW5kIG91dHNpZGUgdGhlIGl0ZW1zIGJhc2VkIG9uIHRoZQorICogcGFkZGluZy4gIElmIHRoZXJlIGlzbid0IGVub3VnaCByb29tIHRvIGRyYXcgYm90aCwgaXQgY2xpcHMgdGhlIGJhY2tncm91bmQKKyAqIGluc3RlYWQgb2YgdGhlIGNvbnRlbnRzLgorICovCitwdWJsaWMgY2xhc3MgUmVjZW50QXBwbGljYXRpb25zQmFja2dyb3VuZCBleHRlbmRzIExpbmVhckxheW91dCB7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9ICJSZWNlbnRBcHBsaWNhdGlvbnNCYWNrZ3JvdW5kIjsKKworICAgIHByaXZhdGUgYm9vbGVhbiBtQmFja2dyb3VuZFNpemVDaGFuZ2VkOworICAgIHByaXZhdGUgRHJhd2FibGUgbUJhY2tncm91bmQ7CisgICAgcHJpdmF0ZSBSZWN0IG1UbXAwID0gbmV3IFJlY3QoKTsKKyAgICBwcml2YXRlIFJlY3QgbVRtcDEgPSBuZXcgUmVjdCgpOworCisgICAgcHVibGljIFJlY2VudEFwcGxpY2F0aW9uc0JhY2tncm91bmQoQ29udGV4dCBjb250ZXh0KSB7CisgICAgICAgIHRoaXMoY29udGV4dCwgbnVsbCk7CisgICAgICAgIGluaXQoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgUmVjZW50QXBwbGljYXRpb25zQmFja2dyb3VuZChDb250ZXh0IGNvbnRleHQsIEF0dHJpYnV0ZVNldCBhdHRycykgeworICAgICAgICBzdXBlcihjb250ZXh0LCBhdHRycyk7CisgICAgICAgIGluaXQoKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgaW5pdCgpIHsKKyAgICAgICAgbUJhY2tncm91bmQgPSBnZXRCYWNrZ3JvdW5kKCk7CisgICAgICAgIHNldEJhY2tncm91bmREcmF3YWJsZShudWxsKTsKKyAgICAgICAgc2V0UGFkZGluZygwLCAwLCAwLCAwKTsKKyAgICAgICAgc2V0R3Jhdml0eShHcmF2aXR5LkNFTlRFUik7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIGJvb2xlYW4gc2V0RnJhbWUoaW50IGxlZnQsIGludCB0b3AsIGludCByaWdodCwgaW50IGJvdHRvbSkgeworICAgICAgICBzZXRXaWxsTm90RHJhdyhmYWxzZSk7CisgICAgICAgIGlmIChtTGVmdCAhPSBsZWZ0IHx8IG1SaWdodCAhPSByaWdodCB8fCBtVG9wICE9IHRvcCB8fCBtQm90dG9tICE9IGJvdHRvbSkgeworICAgICAgICAgICAgbUJhY2tncm91bmRTaXplQ2hhbmdlZCA9IHRydWU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHN1cGVyLnNldEZyYW1lKGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIGJvb2xlYW4gdmVyaWZ5RHJhd2FibGUoRHJhd2FibGUgd2hvKSB7CisgICAgICAgIHJldHVybiB3aG8gPT0gbUJhY2tncm91bmQgfHwgc3VwZXIudmVyaWZ5RHJhd2FibGUod2hvKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCBkcmF3YWJsZVN0YXRlQ2hhbmdlZCgpIHsKKyAgICAgICAgRHJhd2FibGUgZCA9IG1CYWNrZ3JvdW5kOworICAgICAgICBpZiAoZCAhPSBudWxsICYmIGQuaXNTdGF0ZWZ1bCgpKSB7CisgICAgICAgICAgICBkLnNldFN0YXRlKGdldERyYXdhYmxlU3RhdGUoKSk7CisgICAgICAgIH0KKyAgICAgICAgc3VwZXIuZHJhd2FibGVTdGF0ZUNoYW5nZWQoKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBkcmF3KENhbnZhcyBjYW52YXMpIHsKKyAgICAgICAgZmluYWwgRHJhd2FibGUgYmFja2dyb3VuZCA9IG1CYWNrZ3JvdW5kOworICAgICAgICBpZiAoYmFja2dyb3VuZCAhPSBudWxsKSB7CisgICAgICAgICAgICBpZiAobUJhY2tncm91bmRTaXplQ2hhbmdlZCkgeworICAgICAgICAgICAgICAgIG1CYWNrZ3JvdW5kU2l6ZUNoYW5nZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBSZWN0IGNobGQgPSBtVG1wMDsKKyAgICAgICAgICAgICAgICBSZWN0IGJrZyA9IG1UbXAxOworICAgICAgICAgICAgICAgIG1CYWNrZ3JvdW5kLmdldFBhZGRpbmcoYmtnKTsKKyAgICAgICAgICAgICAgICBnZXRDaGlsZEJvdW5kcyhjaGxkKTsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIGRvZXNuJ3QgY2xhbXAgdG8gdGhpcyB2aWV3J3MgYm91bmRzLCB3aGljaCBpcyB3aGF0IHdlIHdhbnQsCisgICAgICAgICAgICAgICAgLy8gc28gdGhhdCB0aGUgZHJhd2luZyBpcyBjbGlwcGVkLgorICAgICAgICAgICAgICAgIGZpbmFsIGludCB0b3AgPSBjaGxkLnRvcCAtIGJrZy50b3A7CisgICAgICAgICAgICAgICAgZmluYWwgaW50IGJvdHRvbSA9IGNobGQuYm90dG9tICsgYmtnLmJvdHRvbTsKKyAgICAgICAgICAgICAgICAvLyBUaGUgYmFja2dyb3VuZCBoZXJlIGlzIGEgZ3JhZGllbnQgdGhhdCB3YW50cyB0bworICAgICAgICAgICAgICAgIC8vIGV4dGVuZCB0aGUgZnVsbCB3aWR0aCBvZiB0aGUgc2NyZWVuICh3aGF0ZXZlciB0aGF0CisgICAgICAgICAgICAgICAgLy8gbWF5IGJlKS4KKyAgICAgICAgICAgICAgICBpbnQgbGVmdCwgcmlnaHQ7CisgICAgICAgICAgICAgICAgaWYgKGZhbHNlKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgbGltaXRzIHRoZSB3aWR0aCBvZiB0aGUgZHJhd2FibGUuCisgICAgICAgICAgICAgICAgICAgIGxlZnQgPSBjaGxkLmxlZnQgLSBia2cubGVmdDsKKyAgICAgICAgICAgICAgICAgICAgcmlnaHQgPSBjaGxkLnJpZ2h0ICsgYmtnLnJpZ2h0OworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgZXhwYW5kcyBpdCB0byBmdWxsIHdpZHRoLgorICAgICAgICAgICAgICAgICAgICBsZWZ0ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgcmlnaHQgPSBnZXRSaWdodCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kLnNldEJvdW5kcyhsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIG1CYWNrZ3JvdW5kLmRyYXcoY2FudmFzKTsKKworICAgICAgICBpZiAoZmFsc2UpIHsKKyAgICAgICAgICAgIGFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQgcCA9IG5ldyBhbmRyb2lkLmdyYXBoaWNzLlBhaW50KCk7CisgICAgICAgICAgICBwLnNldENvbG9yKDB4ODhmZmZmMDApOworICAgICAgICAgICAgY2FudmFzLmRyYXdSZWN0KGJhY2tncm91bmQuZ2V0Qm91bmRzKCksIHApOworICAgICAgICB9CisgICAgICAgIGNhbnZhcy5kcmF3QVJHQigoaW50KSgwLjc1KjB4ZmYpLCAwLCAwLCAwKTsKKworICAgICAgICBzdXBlci5kcmF3KGNhbnZhcyk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgb25BdHRhY2hlZFRvV2luZG93KCkgeworICAgICAgICBzdXBlci5vbkF0dGFjaGVkVG9XaW5kb3coKTsKKyAgICAgICAgbUJhY2tncm91bmQuc2V0Q2FsbGJhY2sodGhpcyk7CisgICAgICAgIHNldFdpbGxOb3REcmF3KGZhbHNlKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCBvbkRldGFjaGVkRnJvbVdpbmRvdygpIHsKKyAgICAgICAgc3VwZXIub25EZXRhY2hlZEZyb21XaW5kb3coKTsKKyAgICAgICAgbUJhY2tncm91bmQuc2V0Q2FsbGJhY2sobnVsbCk7CisgICAgfQorICAgIAorICAgIHByaXZhdGUgdm9pZCBnZXRDaGlsZEJvdW5kcyhSZWN0IHIpIHsKKyAgICAgICAgci5sZWZ0ID0gci50b3AgPSBJbnRlZ2VyLk1BWF9WQUxVRTsKKyAgICAgICAgci5ib3R0b20gPSByLnJpZ2h0ID0gSW50ZWdlci5NSU5fVkFMVUU7CisgICAgICAgIGZpbmFsIGludCBOID0gZ2V0Q2hpbGRDb3VudCgpOworICAgICAgICBmb3IgKGludCBpPTA7IGk8TjsgaSsrKSB7CisgICAgICAgICAgICBWaWV3IHYgPSBnZXRDaGlsZEF0KGkpOworICAgICAgICAgICAgaWYgKHYuZ2V0VmlzaWJpbGl0eSgpID09IFZpZXcuVklTSUJMRSkgeworICAgICAgICAgICAgICAgIHIubGVmdCA9IE1hdGgubWluKHIubGVmdCwgdi5nZXRMZWZ0KCkpOworICAgICAgICAgICAgICAgIHIudG9wID0gTWF0aC5taW4oci50b3AsIHYuZ2V0VG9wKCkpOworICAgICAgICAgICAgICAgIHIucmlnaHQgPSBNYXRoLm1heChyLnJpZ2h0LCB2LmdldFJpZ2h0KCkpOworICAgICAgICAgICAgICAgIHIuYm90dG9tID0gTWF0aC5tYXgoci5ib3R0b20sIHYuZ2V0Qm90dG9tKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvcG9saWN5L3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9SZWNlbnRBcHBsaWNhdGlvbnNEaWFsb2cuamF2YSBiL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvUmVjZW50QXBwbGljYXRpb25zRGlhbG9nLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTYwOGI5YQotLS0gL2Rldi9udWxsCisrKyBiL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvUmVjZW50QXBwbGljYXRpb25zRGlhbG9nLmphdmEKQEAgLTAsMCArMSwyNjIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLmludGVybmFsLnBvbGljeS5pbXBsOworCitpbXBvcnQgYW5kcm9pZC5hcHAuQWN0aXZpdHlNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQuYXBwLkRpYWxvZzsKK2ltcG9ydCBhbmRyb2lkLmFwcC5TdGF0dXNCYXJNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5BY3Rpdml0eU5vdEZvdW5kRXhjZXB0aW9uOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Ccm9hZGNhc3RSZWNlaXZlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnRGaWx0ZXI7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXM7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLkFjdGl2aXR5SW5mbzsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLlJlc29sdmVJbmZvOworaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGU7CitpbXBvcnQgYW5kcm9pZC5vcy5CdW5kbGU7CitpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuVmlldzsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuV2luZG93OworaW1wb3J0IGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3Lk9uQ2xpY2tMaXN0ZW5lcjsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5UZXh0VmlldzsKKworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitwdWJsaWMgY2xhc3MgUmVjZW50QXBwbGljYXRpb25zRGlhbG9nIGV4dGVuZHMgRGlhbG9nIGltcGxlbWVudHMgT25DbGlja0xpc3RlbmVyIHsKKyAgICAvLyBFbGVtZW50cyBmb3IgZGVidWdnaW5nIHN1cHBvcnQKKy8vICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgTE9HX1RBRyA9ICJSZWNlbnRBcHBsaWNhdGlvbnNEaWFsb2ciOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gREJHX0ZPUkNFX0VNUFRZX0xJU1QgPSBmYWxzZTsKKworICAgIHN0YXRpYyBwcml2YXRlIFN0YXR1c0Jhck1hbmFnZXIgc1N0YXR1c0JhcjsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBOVU1fQlVUVE9OUyA9IDg7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1BWF9SRUNFTlRfVEFTS1MgPSBOVU1fQlVUVE9OUyAqIDI7ICAgIC8vIGFsbG93IGZvciBzb21lIGRpc2NhcmRzCisKKyAgICBmaW5hbCBUZXh0Vmlld1tdIG1JY29ucyA9IG5ldyBUZXh0Vmlld1tOVU1fQlVUVE9OU107CisgICAgVmlldyBtTm9BcHBzVGV4dDsKKyAgICBJbnRlbnRGaWx0ZXIgbUJyb2FkY2FzdEludGVudEZpbHRlciA9IG5ldyBJbnRlbnRGaWx0ZXIoSW50ZW50LkFDVElPTl9DTE9TRV9TWVNURU1fRElBTE9HUyk7CisKKyAgICBwcml2YXRlIGludCBtSWNvblNpemU7CisKKyAgICBwdWJsaWMgUmVjZW50QXBwbGljYXRpb25zRGlhbG9nKENvbnRleHQgY29udGV4dCkgeworICAgICAgICBzdXBlcihjb250ZXh0LCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlLlRoZW1lX0RpYWxvZ19SZWNlbnRBcHBsaWNhdGlvbnMpOworCisgICAgICAgIGZpbmFsIFJlc291cmNlcyByZXNvdXJjZXMgPSBjb250ZXh0LmdldFJlc291cmNlcygpOworICAgICAgICBtSWNvblNpemUgPSAoaW50KSByZXNvdXJjZXMuZ2V0RGltZW5zaW9uKGFuZHJvaWQuUi5kaW1lbi5hcHBfaWNvbl9zaXplKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBXZSBjcmVhdGUgdGhlIHJlY2VudCBhcHBsaWNhdGlvbnMgZGlhbG9nIGp1c3Qgb25jZSwgYW5kIGl0IHN0YXlzIGFyb3VuZCAoaGlkZGVuKQorICAgICAqIHVudGlsIGFjdGl2YXRlZCBieSB0aGUgdXNlci4KKyAgICAgKgorICAgICAqIEBzZWUgUGhvbmVXaW5kb3dNYW5hZ2VyI3Nob3dSZWNlbnRBcHBzRGlhbG9nCisgICAgICovCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgb25DcmVhdGUoQnVuZGxlIHNhdmVkSW5zdGFuY2VTdGF0ZSkgeworICAgICAgICBzdXBlci5vbkNyZWF0ZShzYXZlZEluc3RhbmNlU3RhdGUpOworCisgICAgICAgIENvbnRleHQgY29udGV4dCA9IGdldENvbnRleHQoKTsKKworICAgICAgICBpZiAoc1N0YXR1c0JhciA9PSBudWxsKSB7CisgICAgICAgICAgICBzU3RhdHVzQmFyID0gKFN0YXR1c0Jhck1hbmFnZXIpY29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuU1RBVFVTX0JBUl9TRVJWSUNFKTsKKyAgICAgICAgfQorCisgICAgICAgIFdpbmRvdyB3aW5kb3cgPSBnZXRXaW5kb3coKTsKKyAgICAgICAgd2luZG93LnJlcXVlc3RGZWF0dXJlKFdpbmRvdy5GRUFUVVJFX05PX1RJVExFKTsKKyAgICAgICAgd2luZG93LnNldFR5cGUoV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuVFlQRV9TWVNURU1fRElBTE9HKTsKKyAgICAgICAgd2luZG93LnNldEZsYWdzKFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfQUxUX0ZPQ1VTQUJMRV9JTSwKKyAgICAgICAgICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX0FMVF9GT0NVU0FCTEVfSU0pOworICAgICAgICB3aW5kb3cuc2V0VGl0bGUoIlJlY2VudHMiKTsKKworICAgICAgICBzZXRDb250ZW50Vmlldyhjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmxheW91dC5yZWNlbnRfYXBwc19kaWFsb2cpOworCisgICAgICAgIGZpbmFsIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIHBhcmFtcyA9IHdpbmRvdy5nZXRBdHRyaWJ1dGVzKCk7CisgICAgICAgIHBhcmFtcy53aWR0aCA9IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLk1BVENIX1BBUkVOVDsKKyAgICAgICAgcGFyYW1zLmhlaWdodCA9IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLk1BVENIX1BBUkVOVDsKKyAgICAgICAgd2luZG93LnNldEF0dHJpYnV0ZXMocGFyYW1zKTsKKyAgICAgICAgd2luZG93LnNldEZsYWdzKDAsIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfRElNX0JFSElORCk7CisKKyAgICAgICAgbUljb25zWzBdID0gKFRleHRWaWV3KWZpbmRWaWV3QnlJZChjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmlkLmJ1dHRvbjApOworICAgICAgICBtSWNvbnNbMV0gPSAoVGV4dFZpZXcpZmluZFZpZXdCeUlkKGNvbS5hbmRyb2lkLmludGVybmFsLlIuaWQuYnV0dG9uMSk7CisgICAgICAgIG1JY29uc1syXSA9IChUZXh0VmlldylmaW5kVmlld0J5SWQoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5pZC5idXR0b24yKTsKKyAgICAgICAgbUljb25zWzNdID0gKFRleHRWaWV3KWZpbmRWaWV3QnlJZChjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmlkLmJ1dHRvbjMpOworICAgICAgICBtSWNvbnNbNF0gPSAoVGV4dFZpZXcpZmluZFZpZXdCeUlkKGNvbS5hbmRyb2lkLmludGVybmFsLlIuaWQuYnV0dG9uNCk7CisgICAgICAgIG1JY29uc1s1XSA9IChUZXh0VmlldylmaW5kVmlld0J5SWQoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5pZC5idXR0b241KTsKKyAgICAgICAgbUljb25zWzZdID0gKFRleHRWaWV3KWZpbmRWaWV3QnlJZChjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmlkLmJ1dHRvbjYpOworICAgICAgICBtSWNvbnNbN10gPSAoVGV4dFZpZXcpZmluZFZpZXdCeUlkKGNvbS5hbmRyb2lkLmludGVybmFsLlIuaWQuYnV0dG9uNyk7CisgICAgICAgIG1Ob0FwcHNUZXh0ID0gZmluZFZpZXdCeUlkKGNvbS5hbmRyb2lkLmludGVybmFsLlIuaWQubm9fYXBwbGljYXRpb25zX21lc3NhZ2UpOworCisgICAgICAgIGZvciAoVGV4dFZpZXcgYjogbUljb25zKSB7CisgICAgICAgICAgICBiLnNldE9uQ2xpY2tMaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEhhbmRsZXIgZm9yIHVzZXIgY2xpY2tzLiAgSWYgYSBidXR0b24gd2FzIGNsaWNrZWQsIGxhdW5jaCB0aGUgY29ycmVzcG9uZGluZyBhY3Rpdml0eS4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBvbkNsaWNrKFZpZXcgdikgeworCisgICAgICAgIGZvciAoVGV4dFZpZXcgYjogbUljb25zKSB7CisgICAgICAgICAgICBpZiAoYiA9PSB2KSB7CisgICAgICAgICAgICAgICAgLy8gcHJlcGFyZSBhIGxhdW5jaCBpbnRlbnQgYW5kIHNlbmQgaXQKKyAgICAgICAgICAgICAgICBJbnRlbnQgaW50ZW50ID0gKEludGVudCliLmdldFRhZygpOworICAgICAgICAgICAgICAgIGlmIChpbnRlbnQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBpbnRlbnQuYWRkRmxhZ3MoSW50ZW50LkZMQUdfQUNUSVZJVFlfTEFVTkNIRURfRlJPTV9ISVNUT1JZKTsKKyAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdldENvbnRleHQoKS5zdGFydEFjdGl2aXR5KGludGVudCk7CisgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEFjdGl2aXR5Tm90Rm91bmRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgTG9nLncoIlJlY2VudCIsICJVbmFibGUgdG8gbGF1bmNoIHJlY2VudCB0YXNrIiwgZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZGlzbWlzcygpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNldCB1cCBhbmQgc2hvdyB0aGUgcmVjZW50IGFjdGl2aXRpZXMgZGlhbG9nLgorICAgICAqLworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIG9uU3RhcnQoKSB7CisgICAgICAgIHN1cGVyLm9uU3RhcnQoKTsKKyAgICAgICAgcmVsb2FkQnV0dG9ucygpOworICAgICAgICBpZiAoc1N0YXR1c0JhciAhPSBudWxsKSB7CisgICAgICAgICAgICBzU3RhdHVzQmFyLmRpc2FibGUoU3RhdHVzQmFyTWFuYWdlci5ESVNBQkxFX0VYUEFORCk7CisgICAgICAgIH0KKworICAgICAgICAvLyByZWNlaXZlIGJyb2FkY2FzdHMKKyAgICAgICAgZ2V0Q29udGV4dCgpLnJlZ2lzdGVyUmVjZWl2ZXIobUJyb2FkY2FzdFJlY2VpdmVyLCBtQnJvYWRjYXN0SW50ZW50RmlsdGVyKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBEaXNtaXNzIHRoZSByZWNlbnQgYWN0aXZpdGllcyBkaWFsb2cuCisgICAgICovCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgb25TdG9wKCkgeworICAgICAgICBzdXBlci5vblN0b3AoKTsKKworICAgICAgICAvLyBkdW1wIGV4dHJhIG1lbW9yeSB3ZSdyZSBoYW5naW5nIG9uIHRvCisgICAgICAgIGZvciAoVGV4dFZpZXcgaWNvbjogbUljb25zKSB7CisgICAgICAgICAgICBpY29uLnNldENvbXBvdW5kRHJhd2FibGVzKG51bGwsIG51bGwsIG51bGwsIG51bGwpOworICAgICAgICAgICAgaWNvbi5zZXRUYWcobnVsbCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc1N0YXR1c0JhciAhPSBudWxsKSB7CisgICAgICAgICAgICBzU3RhdHVzQmFyLmRpc2FibGUoU3RhdHVzQmFyTWFuYWdlci5ESVNBQkxFX05PTkUpOworICAgICAgICB9CisKKyAgICAgICAgLy8gc3RvcCByZWNlaXZpbmcgYnJvYWRjYXN0cworICAgICAgICBnZXRDb250ZXh0KCkudW5yZWdpc3RlclJlY2VpdmVyKG1Ccm9hZGNhc3RSZWNlaXZlcik7CisgICAgIH0KKworICAgIC8qKgorICAgICAqIFJlbG9hZCB0aGUgNiBidXR0b25zIHdpdGggcmVjZW50IGFjdGl2aXRpZXMKKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgcmVsb2FkQnV0dG9ucygpIHsKKworICAgICAgICBmaW5hbCBDb250ZXh0IGNvbnRleHQgPSBnZXRDb250ZXh0KCk7CisgICAgICAgIGZpbmFsIFBhY2thZ2VNYW5hZ2VyIHBtID0gY29udGV4dC5nZXRQYWNrYWdlTWFuYWdlcigpOworICAgICAgICBmaW5hbCBBY3Rpdml0eU1hbmFnZXIgYW0gPSAoQWN0aXZpdHlNYW5hZ2VyKQorICAgICAgICAgICAgICAgIGNvbnRleHQuZ2V0U3lzdGVtU2VydmljZShDb250ZXh0LkFDVElWSVRZX1NFUlZJQ0UpOworICAgICAgICBmaW5hbCBMaXN0PEFjdGl2aXR5TWFuYWdlci5SZWNlbnRUYXNrSW5mbz4gcmVjZW50VGFza3MgPQorICAgICAgICAgICAgICAgIGFtLmdldFJlY2VudFRhc2tzKE1BWF9SRUNFTlRfVEFTS1MsIEFjdGl2aXR5TWFuYWdlci5SRUNFTlRfSUdOT1JFX1VOQVZBSUxBQkxFKTsKKworICAgICAgICBBY3Rpdml0eUluZm8gaG9tZUluZm8gPSAKKyAgICAgICAgICAgIG5ldyBJbnRlbnQoSW50ZW50LkFDVElPTl9NQUlOKS5hZGRDYXRlZ29yeShJbnRlbnQuQ0FURUdPUllfSE9NRSkKKyAgICAgICAgICAgICAgICAgICAgLnJlc29sdmVBY3Rpdml0eUluZm8ocG0sIDApOworCisgICAgICAgIEljb25VdGlsaXRpZXMgaWNvblV0aWxpdGllcyA9IG5ldyBJY29uVXRpbGl0aWVzKGdldENvbnRleHQoKSk7CisKKyAgICAgICAgLy8gUGVyZm9ybWFuY2Ugbm90ZTogIE91ciBhbmRyb2lkIHBlcmZvcm1hbmNlIGd1aWRlIHNheXMgdG8gcHJlZmVyIEl0ZXJhdG9yIHdoZW4KKyAgICAgICAgLy8gdXNpbmcgYSBMaXN0IGNsYXNzLCBidXQgYmVjYXVzZSB3ZSBrbm93IHRoYXQgZ2V0UmVjZW50VGFza3MoKSBhbHdheXMgcmV0dXJucworICAgICAgICAvLyBhbiBBcnJheUxpc3Q8Piwgd2UnbGwgdXNlIGEgc2ltcGxlIGluZGV4IGluc3RlYWQuCisgICAgICAgIGludCBpbmRleCA9IDA7CisgICAgICAgIGludCBudW1UYXNrcyA9IHJlY2VudFRhc2tzLnNpemUoKTsKKyAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBudW1UYXNrcyAmJiAoaW5kZXggPCBOVU1fQlVUVE9OUyk7ICsraSkgeworICAgICAgICAgICAgZmluYWwgQWN0aXZpdHlNYW5hZ2VyLlJlY2VudFRhc2tJbmZvIGluZm8gPSByZWNlbnRUYXNrcy5nZXQoaSk7CisKKyAgICAgICAgICAgIC8vIGZvciBkZWJ1ZyBwdXJwb3NlcyBvbmx5LCBkaXNhbGxvdyBmaXJzdCByZXN1bHQgdG8gY3JlYXRlIGVtcHR5IGxpc3RzCisgICAgICAgICAgICBpZiAoREJHX0ZPUkNFX0VNUFRZX0xJU1QgJiYgKGkgPT0gMCkpIGNvbnRpbnVlOworCisgICAgICAgICAgICBJbnRlbnQgaW50ZW50ID0gbmV3IEludGVudChpbmZvLmJhc2VJbnRlbnQpOworICAgICAgICAgICAgaWYgKGluZm8ub3JpZ0FjdGl2aXR5ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBpbnRlbnQuc2V0Q29tcG9uZW50KGluZm8ub3JpZ0FjdGl2aXR5KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gU2tpcCB0aGUgY3VycmVudCBob21lIGFjdGl2aXR5LgorICAgICAgICAgICAgaWYgKGhvbWVJbmZvICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBpZiAoaG9tZUluZm8ucGFja2FnZU5hbWUuZXF1YWxzKAorICAgICAgICAgICAgICAgICAgICAgICAgaW50ZW50LmdldENvbXBvbmVudCgpLmdldFBhY2thZ2VOYW1lKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAmJiBob21lSW5mby5uYW1lLmVxdWFscygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZW50LmdldENvbXBvbmVudCgpLmdldENsYXNzTmFtZSgpKSkgeworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGludGVudC5zZXRGbGFncygoaW50ZW50LmdldEZsYWdzKCkmfkludGVudC5GTEFHX0FDVElWSVRZX1JFU0VUX1RBU0tfSUZfTkVFREVEKQorICAgICAgICAgICAgICAgICAgICB8IEludGVudC5GTEFHX0FDVElWSVRZX05FV19UQVNLKTsKKyAgICAgICAgICAgIGZpbmFsIFJlc29sdmVJbmZvIHJlc29sdmVJbmZvID0gcG0ucmVzb2x2ZUFjdGl2aXR5KGludGVudCwgMCk7CisgICAgICAgICAgICBpZiAocmVzb2x2ZUluZm8gIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGZpbmFsIEFjdGl2aXR5SW5mbyBhY3Rpdml0eUluZm8gPSByZXNvbHZlSW5mby5hY3Rpdml0eUluZm87CisgICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nIHRpdGxlID0gYWN0aXZpdHlJbmZvLmxvYWRMYWJlbChwbSkudG9TdHJpbmcoKTsKKyAgICAgICAgICAgICAgICBEcmF3YWJsZSBpY29uID0gYWN0aXZpdHlJbmZvLmxvYWRJY29uKHBtKTsKKworICAgICAgICAgICAgICAgIGlmICh0aXRsZSAhPSBudWxsICYmIHRpdGxlLmxlbmd0aCgpID4gMCAmJiBpY29uICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgVGV4dFZpZXcgdHYgPSBtSWNvbnNbaW5kZXhdOworICAgICAgICAgICAgICAgICAgICB0di5zZXRUZXh0KHRpdGxlKTsKKyAgICAgICAgICAgICAgICAgICAgaWNvbiA9IGljb25VdGlsaXRpZXMuY3JlYXRlSWNvbkRyYXdhYmxlKGljb24pOworICAgICAgICAgICAgICAgICAgICB0di5zZXRDb21wb3VuZERyYXdhYmxlcyhudWxsLCBpY29uLCBudWxsLCBudWxsKTsKKyAgICAgICAgICAgICAgICAgICAgdHYuc2V0VGFnKGludGVudCk7CisgICAgICAgICAgICAgICAgICAgIHR2LnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKKyAgICAgICAgICAgICAgICAgICAgdHYuc2V0UHJlc3NlZChmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIHR2LmNsZWFyRm9jdXMoKTsKKyAgICAgICAgICAgICAgICAgICAgKytpbmRleDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBoYW5kbGUgdGhlIGNhc2Ugb2YgIm5vIGljb25zIHRvIHNob3ciCisgICAgICAgIG1Ob0FwcHNUZXh0LnNldFZpc2liaWxpdHkoKGluZGV4ID09IDApID8gVmlldy5WSVNJQkxFIDogVmlldy5HT05FKTsKKworICAgICAgICAvLyBoaWRlIHRoZSByZXN0CisgICAgICAgIGZvciAoOyBpbmRleCA8IE5VTV9CVVRUT05TOyArK2luZGV4KSB7CisgICAgICAgICAgICBtSWNvbnNbaW5kZXhdLnNldFZpc2liaWxpdHkoVmlldy5HT05FKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFRoaXMgaXMgdGhlIGxpc3RlbmVyIGZvciB0aGUgQUNUSU9OX0NMT1NFX1NZU1RFTV9ESUFMT0dTIGludGVudC4gIEl0J3MgYW4gaW5kaWNhdGlvbiB0aGF0CisgICAgICogd2Ugc2hvdWxkIGNsb3NlIG91cnNlbHZlcyBpbW1lZGlhdGVseSwgaW4gb3JkZXIgdG8gYWxsb3cgYSBoaWdoZXItcHJpb3JpdHkgVUkgdG8gdGFrZSBvdmVyCisgICAgICogKGUuZy4gcGhvbmUgY2FsbCByZWNlaXZlZCkuCisgICAgICovCisgICAgcHJpdmF0ZSBCcm9hZGNhc3RSZWNlaXZlciBtQnJvYWRjYXN0UmVjZWl2ZXIgPSBuZXcgQnJvYWRjYXN0UmVjZWl2ZXIoKSB7CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBvblJlY2VpdmUoQ29udGV4dCBjb250ZXh0LCBJbnRlbnQgaW50ZW50KSB7CisgICAgICAgICAgICBTdHJpbmcgYWN0aW9uID0gaW50ZW50LmdldEFjdGlvbigpOworICAgICAgICAgICAgaWYgKEludGVudC5BQ1RJT05fQ0xPU0VfU1lTVEVNX0RJQUxPR1MuZXF1YWxzKGFjdGlvbikpIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgcmVhc29uID0gaW50ZW50LmdldFN0cmluZ0V4dHJhKFBob25lV2luZG93TWFuYWdlci5TWVNURU1fRElBTE9HX1JFQVNPTl9LRVkpOworICAgICAgICAgICAgICAgIGlmICghIFBob25lV2luZG93TWFuYWdlci5TWVNURU1fRElBTE9HX1JFQVNPTl9SRUNFTlRfQVBQUy5lcXVhbHMocmVhc29uKSkgeworICAgICAgICAgICAgICAgICAgICBkaXNtaXNzKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfTsKK30KZGlmZiAtLWdpdCBhL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvU2hvcnRjdXRNYW5hZ2VyLmphdmEgYi9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL1Nob3J0Y3V0TWFuYWdlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4NmFjNDQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL1Nob3J0Y3V0TWFuYWdlci5qYXZhCkBAIC0wLDAgKzEsMTIwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5pbnRlcm5hbC5wb2xpY3kuaW1wbDsKKworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnQ7CitpbXBvcnQgYW5kcm9pZC5kYXRhYmFzZS5Db250ZW50T2JzZXJ2ZXI7CitpbXBvcnQgYW5kcm9pZC5kYXRhYmFzZS5DdXJzb3I7CitpbXBvcnQgYW5kcm9pZC5vcy5IYW5kbGVyOworaW1wb3J0IGFuZHJvaWQucHJvdmlkZXIuU2V0dGluZ3M7CitpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuU3BhcnNlQXJyYXk7CitpbXBvcnQgYW5kcm9pZC52aWV3LktleUNoYXJhY3Rlck1hcDsKKworaW1wb3J0IGphdmEubmV0LlVSSVN5bnRheEV4Y2VwdGlvbjsKKworLyoqCisgKiBNYW5hZ2VzIHF1aWNrIGxhdW5jaCBzaG9ydGN1dHMgYnk6CisgKiA8bGk+IEtlZXBpbmcgdGhlIGxvY2FsIGNvcHkgaW4gc3luYyB3aXRoIHRoZSBkYXRhYmFzZSAodGhpcyBpcyBhbiBvYnNlcnZlcikKKyAqIDxsaT4gUmV0dXJuaW5nIGEgc2hvcnRjdXQtbWF0Y2hpbmcgaW50ZW50IHRvIGNsaWVudHMKKyAqLworY2xhc3MgU2hvcnRjdXRNYW5hZ2VyIGV4dGVuZHMgQ29udGVudE9ic2VydmVyIHsKKyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gIlNob3J0Y3V0TWFuYWdlciI7CisgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENPTFVNTl9TSE9SVENVVCA9IDA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENPTFVNTl9JTlRFTlQgPSAxOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZ1tdIHNQcm9qZWN0aW9uID0gbmV3IFN0cmluZ1tdIHsKKyAgICAgICAgU2V0dGluZ3MuQm9va21hcmtzLlNIT1JUQ1VULCBTZXR0aW5ncy5Cb29rbWFya3MuSU5URU5UCisgICAgfTsKKworICAgIHByaXZhdGUgQ29udGV4dCBtQ29udGV4dDsKKyAgICBwcml2YXRlIEN1cnNvciBtQ3Vyc29yOworICAgIC8qKiBNYXAgb2YgYSBzaG9ydGN1dCB0byBpdHMgaW50ZW50LiAqLworICAgIHByaXZhdGUgU3BhcnNlQXJyYXk8SW50ZW50PiBtU2hvcnRjdXRJbnRlbnRzOworICAgIAorICAgIHB1YmxpYyBTaG9ydGN1dE1hbmFnZXIoQ29udGV4dCBjb250ZXh0LCBIYW5kbGVyIGhhbmRsZXIpIHsKKyAgICAgICAgc3VwZXIoaGFuZGxlcik7CisgICAgICAgIAorICAgICAgICBtQ29udGV4dCA9IGNvbnRleHQ7CisgICAgICAgIG1TaG9ydGN1dEludGVudHMgPSBuZXcgU3BhcnNlQXJyYXk8SW50ZW50PigpOworICAgIH0KKworICAgIC8qKiBPYnNlcnZlcyB0aGUgcHJvdmlkZXIgb2Ygc2hvcnRjdXQraW50ZW50cyAqLworICAgIHB1YmxpYyB2b2lkIG9ic2VydmUoKSB7CisgICAgICAgIG1DdXJzb3IgPSBtQ29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKS5xdWVyeSgKKyAgICAgICAgICAgICAgICBTZXR0aW5ncy5Cb29rbWFya3MuQ09OVEVOVF9VUkksIHNQcm9qZWN0aW9uLCBudWxsLCBudWxsLCBudWxsKTsKKyAgICAgICAgbUN1cnNvci5yZWdpc3RlckNvbnRlbnRPYnNlcnZlcih0aGlzKTsKKyAgICAgICAgdXBkYXRlU2hvcnRjdXRzKCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgb25DaGFuZ2UoYm9vbGVhbiBzZWxmQ2hhbmdlKSB7CisgICAgICAgIHVwZGF0ZVNob3J0Y3V0cygpOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHZvaWQgdXBkYXRlU2hvcnRjdXRzKCkgeworICAgICAgICBDdXJzb3IgYyA9IG1DdXJzb3I7CisgICAgICAgIGlmICghYy5yZXF1ZXJ5KCkpIHsKKyAgICAgICAgICAgIExvZy5lKFRBRywgIlNob3J0Y3V0T2JzZXJ2ZXIgY291bGQgbm90IHJlLXF1ZXJ5IHNob3J0Y3V0cy4iKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIG1TaG9ydGN1dEludGVudHMuY2xlYXIoKTsKKyAgICAgICAgd2hpbGUgKGMubW92ZVRvTmV4dCgpKSB7CisgICAgICAgICAgICBpbnQgc2hvcnRjdXQgPSBjLmdldEludChDT0xVTU5fU0hPUlRDVVQpOworICAgICAgICAgICAgaWYgKHNob3J0Y3V0ID09IDApIGNvbnRpbnVlOworICAgICAgICAgICAgU3RyaW5nIGludGVudFVSSSA9IGMuZ2V0U3RyaW5nKENPTFVNTl9JTlRFTlQpOworICAgICAgICAgICAgSW50ZW50IGludGVudCA9IG51bGw7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGludGVudCA9IEludGVudC5nZXRJbnRlbnQoaW50ZW50VVJJKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKFVSSVN5bnRheEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgTG9nLncoVEFHLCAiSW50ZW50IFVSSSBmb3Igc2hvcnRjdXQgaW52YWxpZC4iLCBlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpbnRlbnQgPT0gbnVsbCkgY29udGludWU7CisgICAgICAgICAgICBtU2hvcnRjdXRJbnRlbnRzLnB1dChzaG9ydGN1dCwgaW50ZW50KTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBHZXRzIHRoZSBzaG9ydGN1dCBpbnRlbnQgZm9yIGEgZ2l2ZW4ga2V5Y29kZSttb2RpZmllci4gTWFrZSBzdXJlIHlvdQorICAgICAqIHN0cmlwIHdoYXRldmVyIG1vZGlmaWVyIGlzIHVzZWQgZm9yIGludm9raW5nIHNob3J0Y3V0cyAoZm9yIGV4YW1wbGUsCisgICAgICogaWYgJ1N5bStBJyBzaG91bGQgaW52b2tlIGEgc2hvcnRjdXQgb24gJ0EnLCB5b3Ugc2hvdWxkIHN0cmlwIHRoZQorICAgICAqICdTeW0nIGJpdCBmcm9tIHRoZSBtb2RpZmllcnMgYmVmb3JlIGNhbGxpbmcgdGhpcyBtZXRob2QuCisgICAgICogPHA+CisgICAgICogVGhpcyB3aWxsIGZpcnN0IHRyeSBhbiBleGFjdCBtYXRjaCAod2l0aCBtb2RpZmllcnMpLCBhbmQgdGhlbiB0cnkgYQorICAgICAqIG1hdGNoIHdpdGhvdXQgbW9kaWZpZXJzIChwcmltYXJ5IGNoYXJhY3RlciBvbiBhIGtleSkuCisgICAgICogCisgICAgICogQHBhcmFtIGtleUNvZGUgVGhlIGtleWNvZGUgb2YgdGhlIGtleSBwdXNoZWQuCisgICAgICogQHBhcmFtIG1vZGlmaWVycyBUaGUgbW9kaWZpZXJzIHdpdGhvdXQgYW55IHRoYXQgYXJlIHVzZWQgZm9yIGNob3JkaW5nCisgICAgICogICAgICAgICAgICB0byBpbnZva2UgYSBzaG9ydGN1dC4KKyAgICAgKiBAcmV0dXJuIFRoZSBpbnRlbnQgdGhhdCBtYXRjaGVzIHRoZSBzaG9ydGN1dCwgb3IgbnVsbCBpZiBub3QgZm91bmQuCisgICAgICovCisgICAgcHVibGljIEludGVudCBnZXRJbnRlbnQoaW50IGtleUNvZGUsIGludCBtb2RpZmllcnMpIHsKKyAgICAgICAgS2V5Q2hhcmFjdGVyTWFwIGtjbSA9IEtleUNoYXJhY3Rlck1hcC5sb2FkKEtleUNoYXJhY3Rlck1hcC5CVUlMVF9JTl9LRVlCT0FSRCk7CisgICAgICAgIC8vIEZpcnN0IHRyeSB0aGUgZXhhY3Qga2V5Y29kZSAod2l0aCBtb2RpZmllcnMpCisgICAgICAgIGludCBzaG9ydGN1dCA9IGtjbS5nZXQoa2V5Q29kZSwgbW9kaWZpZXJzKTsKKyAgICAgICAgSW50ZW50IGludGVudCA9IHNob3J0Y3V0ICE9IDAgPyBtU2hvcnRjdXRJbnRlbnRzLmdldChzaG9ydGN1dCkgOiBudWxsOyAKKyAgICAgICAgaWYgKGludGVudCAhPSBudWxsKSByZXR1cm4gaW50ZW50OworICAgICAgICAKKyAgICAgICAgLy8gTmV4dCB0cnkgdGhlIGtleWNvZGUgd2l0aG91dCBtb2RpZmllcnMgKHRoZSBwcmltYXJ5IGNoYXJhY3RlciBvbiB0aGF0IGtleSkKKyAgICAgICAgc2hvcnRjdXQgPSBDaGFyYWN0ZXIudG9Mb3dlckNhc2Uoa2NtLmdldChrZXlDb2RlLCAwKSk7CisgICAgICAgIHJldHVybiBzaG9ydGN1dCAhPSAwID8gbVNob3J0Y3V0SW50ZW50cy5nZXQoc2hvcnRjdXQpIDogbnVsbDsKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL3BvbGljeS9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvU2ltVW5sb2NrU2NyZWVuLmphdmEgYi9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL1NpbVVubG9ja1NjcmVlbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1MThlMTEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL1NpbVVubG9ja1NjcmVlbi5qYXZhCkBAIC0wLDAgKzEsNDIzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5pbnRlcm5hbC5wb2xpY3kuaW1wbDsKKworaW1wb3J0IGFuZHJvaWQuYXBwLkRpYWxvZzsKK2ltcG9ydCBhbmRyb2lkLmFwcC5Qcm9ncmVzc0RpYWxvZzsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucmVzLkNvbmZpZ3VyYXRpb247CitpbXBvcnQgYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb247CitpbXBvcnQgYW5kcm9pZC5vcy5TZXJ2aWNlTWFuYWdlcjsKKworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5JVGVsZXBob255OworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLndpZGdldC5Mb2NrUGF0dGVyblV0aWxzOworCitpbXBvcnQgYW5kcm9pZC50ZXh0LkVkaXRhYmxlOworaW1wb3J0IGFuZHJvaWQudmlldy5LZXlFdmVudDsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuTGF5b3V0SW5mbGF0ZXI7CitpbXBvcnQgYW5kcm9pZC52aWV3LlZpZXc7CitpbXBvcnQgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC53aWRnZXQuQnV0dG9uOworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkxpbmVhckxheW91dDsKK2ltcG9ydCBhbmRyb2lkLndpZGdldC5UZXh0VmlldzsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SOworCisvKioKKyAqIERpc3BsYXlzIGEgZGlhbGVyIGxpa2UgaW50ZXJmYWNlIHRvIHVubG9jayB0aGUgU0lNIFBJTi4KKyAqLworcHVibGljIGNsYXNzIFNpbVVubG9ja1NjcmVlbiBleHRlbmRzIExpbmVhckxheW91dCBpbXBsZW1lbnRzIEtleWd1YXJkU2NyZWVuLCBWaWV3Lk9uQ2xpY2tMaXN0ZW5lciwKKyAgICAgICAgS2V5Z3VhcmRVcGRhdGVNb25pdG9yLkluZm9DYWxsYmFjayB7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRElHSVRfUFJFU1NfV0FLRV9NSUxMSVMgPSA1MDAwOworCisgICAgcHJpdmF0ZSBmaW5hbCBLZXlndWFyZFVwZGF0ZU1vbml0b3IgbVVwZGF0ZU1vbml0b3I7CisgICAgcHJpdmF0ZSBmaW5hbCBLZXlndWFyZFNjcmVlbkNhbGxiYWNrIG1DYWxsYmFjazsKKworICAgIHByaXZhdGUgVGV4dFZpZXcgbUhlYWRlclRleHQ7CisgICAgcHJpdmF0ZSBUZXh0VmlldyBtUGluVGV4dDsKKworICAgIHByaXZhdGUgVGV4dFZpZXcgbU9rQnV0dG9uOworICAgIHByaXZhdGUgQnV0dG9uIG1FbWVyZ2VuY3lDYWxsQnV0dG9uOworCisgICAgcHJpdmF0ZSBWaWV3IG1CYWNrU3BhY2VCdXR0b247CisKKyAgICBwcml2YXRlIGZpbmFsIGludFtdIG1FbnRlcmVkUGluID0gezAsIDAsIDAsIDAsIDAsIDAsIDAsIDB9OworICAgIHByaXZhdGUgaW50IG1FbnRlcmVkRGlnaXRzID0gMDsKKworICAgIHByaXZhdGUgUHJvZ3Jlc3NEaWFsb2cgbVNpbVVubG9ja1Byb2dyZXNzRGlhbG9nID0gbnVsbDsKKworICAgIHByaXZhdGUgTG9ja1BhdHRlcm5VdGlscyBtTG9ja1BhdHRlcm5VdGlsczsKKworICAgIHByaXZhdGUgaW50IG1DcmVhdGlvbk9yaWVudGF0aW9uOworCisgICAgcHJpdmF0ZSBpbnQgbUtleWJvYXJkSGlkZGVuOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2hhcltdIERJR0lUUyA9IHsnMCcsICcxJywgJzInLCAnMycsICc0JywgJzUnLCAnNicsICc3JywgJzgnLCAnOSd9OworCisgICAgcHVibGljIFNpbVVubG9ja1NjcmVlbihDb250ZXh0IGNvbnRleHQsIENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgIEtleWd1YXJkVXBkYXRlTW9uaXRvciB1cGRhdGVNb25pdG9yLCBLZXlndWFyZFNjcmVlbkNhbGxiYWNrIGNhbGxiYWNrLAorICAgICAgICAgICAgTG9ja1BhdHRlcm5VdGlscyBsb2NrcGF0dGVybnV0aWxzKSB7CisgICAgICAgIHN1cGVyKGNvbnRleHQpOworICAgICAgICBtVXBkYXRlTW9uaXRvciA9IHVwZGF0ZU1vbml0b3I7CisgICAgICAgIG1DYWxsYmFjayA9IGNhbGxiYWNrOworCisgICAgICAgIG1DcmVhdGlvbk9yaWVudGF0aW9uID0gY29uZmlndXJhdGlvbi5vcmllbnRhdGlvbjsKKyAgICAgICAgbUtleWJvYXJkSGlkZGVuID0gY29uZmlndXJhdGlvbi5oYXJkS2V5Ym9hcmRIaWRkZW47CisgICAgICAgIG1Mb2NrUGF0dGVyblV0aWxzID0gbG9ja3BhdHRlcm51dGlsczsKKworICAgICAgICBMYXlvdXRJbmZsYXRlciBpbmZsYXRlciA9IExheW91dEluZmxhdGVyLmZyb20oY29udGV4dCk7CisgICAgICAgIGlmIChtS2V5Ym9hcmRIaWRkZW4gPT0gQ29uZmlndXJhdGlvbi5IQVJES0VZQk9BUkRISURERU5fTk8pIHsKKyAgICAgICAgICAgIGluZmxhdGVyLmluZmxhdGUoUi5sYXlvdXQua2V5Z3VhcmRfc2NyZWVuX3NpbV9waW5fbGFuZHNjYXBlLCB0aGlzLCB0cnVlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGluZmxhdGVyLmluZmxhdGUoUi5sYXlvdXQua2V5Z3VhcmRfc2NyZWVuX3NpbV9waW5fcG9ydHJhaXQsIHRoaXMsIHRydWUpOworICAgICAgICAgICAgbmV3IFRvdWNoSW5wdXQoKTsKKyAgICAgICAgfQorCisgICAgICAgIG1IZWFkZXJUZXh0ID0gKFRleHRWaWV3KSBmaW5kVmlld0J5SWQoUi5pZC5oZWFkZXJUZXh0KTsKKyAgICAgICAgbVBpblRleHQgPSAoVGV4dFZpZXcpIGZpbmRWaWV3QnlJZChSLmlkLnBpbkRpc3BsYXkpOworICAgICAgICBtQmFja1NwYWNlQnV0dG9uID0gZmluZFZpZXdCeUlkKFIuaWQuYmFja3NwYWNlKTsKKyAgICAgICAgbUJhY2tTcGFjZUJ1dHRvbi5zZXRPbkNsaWNrTGlzdGVuZXIodGhpcyk7CisKKyAgICAgICAgbUVtZXJnZW5jeUNhbGxCdXR0b24gPSAoQnV0dG9uKSBmaW5kVmlld0J5SWQoUi5pZC5lbWVyZ2VuY3lDYWxsKTsKKyAgICAgICAgbUxvY2tQYXR0ZXJuVXRpbHMudXBkYXRlRW1lcmdlbmN5Q2FsbEJ1dHRvblN0YXRlKG1FbWVyZ2VuY3lDYWxsQnV0dG9uKTsKKyAgICAgICAgbU9rQnV0dG9uID0gKFRleHRWaWV3KSBmaW5kVmlld0J5SWQoUi5pZC5vayk7CisKKyAgICAgICAgbUhlYWRlclRleHQuc2V0VGV4dChSLnN0cmluZy5rZXlndWFyZF9wYXNzd29yZF9lbnRlcl9waW5fY29kZSk7CisgICAgICAgIG1QaW5UZXh0LnNldEZvY3VzYWJsZShmYWxzZSk7CisKKyAgICAgICAgbUVtZXJnZW5jeUNhbGxCdXR0b24uc2V0T25DbGlja0xpc3RlbmVyKHRoaXMpOworICAgICAgICBtT2tCdXR0b24uc2V0T25DbGlja0xpc3RlbmVyKHRoaXMpOworCisgICAgICAgIHNldEZvY3VzYWJsZUluVG91Y2hNb2RlKHRydWUpOworICAgIH0KKworICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgcHVibGljIGJvb2xlYW4gbmVlZHNJbnB1dCgpIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgdm9pZCBvblBhdXNlKCkgeworCisgICAgfQorCisgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICBwdWJsaWMgdm9pZCBvblJlc3VtZSgpIHsKKyAgICAgICAgLy8gc3RhcnQgZnJlc2gKKyAgICAgICAgbUhlYWRlclRleHQuc2V0VGV4dChSLnN0cmluZy5rZXlndWFyZF9wYXNzd29yZF9lbnRlcl9waW5fY29kZSk7CisKKyAgICAgICAgLy8gbWFrZSBzdXJlIHRoYXQgdGhlIG51bWJlciBvZiBlbnRlcmVkIGRpZ2l0cyBpcyBjb25zaXN0ZW50IHdoZW4gd2UKKyAgICAgICAgLy8gZXJhc2UgdGhlIFNJTSB1bmxvY2sgY29kZSwgaW5jbHVkaW5nIG9yaWVudGF0aW9uIGNoYW5nZXMuCisgICAgICAgIG1QaW5UZXh0LnNldFRleHQoIiIpOworICAgICAgICBtRW50ZXJlZERpZ2l0cyA9IDA7CisKKyAgICAgICAgbUxvY2tQYXR0ZXJuVXRpbHMudXBkYXRlRW1lcmdlbmN5Q2FsbEJ1dHRvblN0YXRlKG1FbWVyZ2VuY3lDYWxsQnV0dG9uKTsKKyAgICB9CisKKyAgICAvKioge0Bpbmhlcml0RG9jfSAqLworICAgIHB1YmxpYyB2b2lkIGNsZWFuVXAoKSB7CisgICAgICAgIC8vIGhpZGUgdGhlIGRpYWxvZy4KKyAgICAgICAgaWYgKG1TaW1VbmxvY2tQcm9ncmVzc0RpYWxvZyAhPSBudWxsKSB7CisgICAgICAgICAgICBtU2ltVW5sb2NrUHJvZ3Jlc3NEaWFsb2cuaGlkZSgpOworICAgICAgICB9CisgICAgICAgIG1VcGRhdGVNb25pdG9yLnJlbW92ZUNhbGxiYWNrKHRoaXMpOworICAgIH0KKworCisgICAgLyoqCisgICAgICogU2luY2UgdGhlIElQQyBjYW4gYmxvY2ssIHdlIHdhbnQgdG8gcnVuIHRoZSByZXF1ZXN0IGluIGEgc2VwYXJhdGUgdGhyZWFkCisgICAgICogd2l0aCBhIGNhbGxiYWNrLgorICAgICAqLworICAgIHByaXZhdGUgYWJzdHJhY3QgY2xhc3MgQ2hlY2tTaW1QaW4gZXh0ZW5kcyBUaHJlYWQgeworCisgICAgICAgIHByaXZhdGUgZmluYWwgU3RyaW5nIG1QaW47CisKKyAgICAgICAgcHJvdGVjdGVkIENoZWNrU2ltUGluKFN0cmluZyBwaW4pIHsKKyAgICAgICAgICAgIG1QaW4gPSBwaW47CisgICAgICAgIH0KKworICAgICAgICBhYnN0cmFjdCB2b2lkIG9uU2ltTG9ja0NoYW5nZWRSZXNwb25zZShib29sZWFuIHN1Y2Nlc3MpOworCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gcmVzdWx0ID0gSVRlbGVwaG9ueS5TdHViLmFzSW50ZXJmYWNlKFNlcnZpY2VNYW5hZ2VyCisgICAgICAgICAgICAgICAgICAgICAgICAuY2hlY2tTZXJ2aWNlKCJwaG9uZSIpKS5zdXBwbHlQaW4obVBpbik7CisgICAgICAgICAgICAgICAgcG9zdChuZXcgUnVubmFibGUoKSB7CisgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG9uU2ltTG9ja0NoYW5nZWRSZXNwb25zZShyZXN1bHQpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIHBvc3QobmV3IFJ1bm5hYmxlKCkgeworICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBvblNpbUxvY2tDaGFuZ2VkUmVzcG9uc2UoZmFsc2UpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBvbkNsaWNrKFZpZXcgdikgeworICAgICAgICBpZiAodiA9PSBtQmFja1NwYWNlQnV0dG9uKSB7CisgICAgICAgICAgICBmaW5hbCBFZGl0YWJsZSBkaWdpdHMgPSBtUGluVGV4dC5nZXRFZGl0YWJsZVRleHQoKTsKKyAgICAgICAgICAgIGZpbmFsIGludCBsZW4gPSBkaWdpdHMubGVuZ3RoKCk7CisgICAgICAgICAgICBpZiAobGVuID4gMCkgeworICAgICAgICAgICAgICAgIGRpZ2l0cy5kZWxldGUobGVuLTEsIGxlbik7CisgICAgICAgICAgICAgICAgbUVudGVyZWREaWdpdHMtLTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1DYWxsYmFjay5wb2tlV2FrZWxvY2soKTsKKyAgICAgICAgfSBlbHNlIGlmICh2ID09IG1FbWVyZ2VuY3lDYWxsQnV0dG9uKSB7CisgICAgICAgICAgICBtQ2FsbGJhY2sudGFrZUVtZXJnZW5jeUNhbGxBY3Rpb24oKTsKKyAgICAgICAgfSBlbHNlIGlmICh2ID09IG1Pa0J1dHRvbikgeworICAgICAgICAgICAgY2hlY2tQaW4oKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgRGlhbG9nIGdldFNpbVVubG9ja1Byb2dyZXNzRGlhbG9nKCkgeworICAgICAgICBpZiAobVNpbVVubG9ja1Byb2dyZXNzRGlhbG9nID09IG51bGwpIHsKKyAgICAgICAgICAgIG1TaW1VbmxvY2tQcm9ncmVzc0RpYWxvZyA9IG5ldyBQcm9ncmVzc0RpYWxvZyhtQ29udGV4dCk7CisgICAgICAgICAgICBtU2ltVW5sb2NrUHJvZ3Jlc3NEaWFsb2cuc2V0TWVzc2FnZSgKKyAgICAgICAgICAgICAgICAgICAgbUNvbnRleHQuZ2V0U3RyaW5nKFIuc3RyaW5nLmxvY2tzY3JlZW5fc2ltX3VubG9ja19wcm9ncmVzc19kaWFsb2dfbWVzc2FnZSkpOworICAgICAgICAgICAgbVNpbVVubG9ja1Byb2dyZXNzRGlhbG9nLnNldEluZGV0ZXJtaW5hdGUodHJ1ZSk7CisgICAgICAgICAgICBtU2ltVW5sb2NrUHJvZ3Jlc3NEaWFsb2cuc2V0Q2FuY2VsYWJsZShmYWxzZSk7CisgICAgICAgICAgICBtU2ltVW5sb2NrUHJvZ3Jlc3NEaWFsb2cuZ2V0V2luZG93KCkuc2V0VHlwZSgKKyAgICAgICAgICAgICAgICAgICAgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuVFlQRV9LRVlHVUFSRF9ESUFMT0cpOworICAgICAgICAgICAgaWYgKCFtQ29udGV4dC5nZXRSZXNvdXJjZXMoKS5nZXRCb29sZWFuKAorICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmJvb2wuY29uZmlnX3NmX3Nsb3dCbHVyKSkgeworICAgICAgICAgICAgICAgIG1TaW1VbmxvY2tQcm9ncmVzc0RpYWxvZy5nZXRXaW5kb3coKS5zZXRGbGFncygKKyAgICAgICAgICAgICAgICAgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfQkxVUl9CRUhJTkQsCisgICAgICAgICAgICAgICAgICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX0JMVVJfQkVISU5EKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbVNpbVVubG9ja1Byb2dyZXNzRGlhbG9nOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBjaGVja1BpbigpIHsKKworICAgICAgICAvLyBtYWtlIHN1cmUgdGhhdCB0aGUgcGluIGlzIGF0IGxlYXN0IDQgZGlnaXRzIGxvbmcuCisgICAgICAgIGlmIChtRW50ZXJlZERpZ2l0cyA8IDQpIHsKKyAgICAgICAgICAgIC8vIG90aGVyd2lzZSwgZGlzcGxheSBhIG1lc3NhZ2UgdG8gdGhlIHVzZXIsIGFuZCBkb24ndCBzdWJtaXQuCisgICAgICAgICAgICBtSGVhZGVyVGV4dC5zZXRUZXh0KFIuc3RyaW5nLmludmFsaWRQaW4pOworICAgICAgICAgICAgbVBpblRleHQuc2V0VGV4dCgiIik7CisgICAgICAgICAgICBtRW50ZXJlZERpZ2l0cyA9IDA7CisgICAgICAgICAgICBtQ2FsbGJhY2sucG9rZVdha2Vsb2NrKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgZ2V0U2ltVW5sb2NrUHJvZ3Jlc3NEaWFsb2coKS5zaG93KCk7CisKKyAgICAgICAgbmV3IENoZWNrU2ltUGluKG1QaW5UZXh0LmdldFRleHQoKS50b1N0cmluZygpKSB7CisgICAgICAgICAgICB2b2lkIG9uU2ltTG9ja0NoYW5nZWRSZXNwb25zZShib29sZWFuIHN1Y2Nlc3MpIHsKKyAgICAgICAgICAgICAgICBpZiAobVNpbVVubG9ja1Byb2dyZXNzRGlhbG9nICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgbVNpbVVubG9ja1Byb2dyZXNzRGlhbG9nLmhpZGUoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHN1Y2Nlc3MpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gYmVmb3JlIGNsb3NpbmcgdGhlIGtleWd1YXJkLCByZXBvcnQgYmFjayB0aGF0CisgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBzaW0gaXMgdW5sb2NrZWQgc28gaXQga25vd3MgcmlnaHQgYXdheQorICAgICAgICAgICAgICAgICAgICBtVXBkYXRlTW9uaXRvci5yZXBvcnRTaW1QaW5VbmxvY2tlZCgpOworICAgICAgICAgICAgICAgICAgICBtQ2FsbGJhY2suZ29Ub1VubG9ja1NjcmVlbigpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIG1IZWFkZXJUZXh0LnNldFRleHQoUi5zdHJpbmcua2V5Z3VhcmRfcGFzc3dvcmRfd3JvbmdfcGluX2NvZGUpOworICAgICAgICAgICAgICAgICAgICBtUGluVGV4dC5zZXRUZXh0KCIiKTsKKyAgICAgICAgICAgICAgICAgICAgbUVudGVyZWREaWdpdHMgPSAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtQ2FsbGJhY2sucG9rZVdha2Vsb2NrKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0uc3RhcnQoKTsKKyAgICB9CisKKworICAgIHB1YmxpYyBib29sZWFuIG9uS2V5RG93bihpbnQga2V5Q29kZSwgS2V5RXZlbnQgZXZlbnQpIHsKKyAgICAgICAgaWYgKGtleUNvZGUgPT0gS2V5RXZlbnQuS0VZQ09ERV9CQUNLKSB7CisgICAgICAgICAgICBtQ2FsbGJhY2suZ29Ub0xvY2tTY3JlZW4oKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgZmluYWwgY2hhciBtYXRjaCA9IGV2ZW50LmdldE1hdGNoKERJR0lUUyk7CisgICAgICAgIGlmIChtYXRjaCAhPSAwKSB7CisgICAgICAgICAgICByZXBvcnREaWdpdChtYXRjaCAtICcwJyk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoa2V5Q29kZSA9PSBLZXlFdmVudC5LRVlDT0RFX0RFTCkgeworICAgICAgICAgICAgaWYgKG1FbnRlcmVkRGlnaXRzID4gMCkgeworICAgICAgICAgICAgICAgIG1QaW5UZXh0Lm9uS2V5RG93bihrZXlDb2RlLCBldmVudCk7CisgICAgICAgICAgICAgICAgbUVudGVyZWREaWdpdHMtLTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGtleUNvZGUgPT0gS2V5RXZlbnQuS0VZQ09ERV9FTlRFUikgeworICAgICAgICAgICAgY2hlY2tQaW4oKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCByZXBvcnREaWdpdChpbnQgZGlnaXQpIHsKKyAgICAgICAgaWYgKG1FbnRlcmVkRGlnaXRzID09IDApIHsKKyAgICAgICAgICAgIG1QaW5UZXh0LnNldFRleHQoIiIpOworICAgICAgICB9CisgICAgICAgIGlmIChtRW50ZXJlZERpZ2l0cyA9PSA4KSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbVBpblRleHQuYXBwZW5kKEludGVnZXIudG9TdHJpbmcoZGlnaXQpKTsKKyAgICAgICAgbUVudGVyZWRQaW5bbUVudGVyZWREaWdpdHMrK10gPSBkaWdpdDsKKyAgICB9CisKKyAgICB2b2lkIHVwZGF0ZUNvbmZpZ3VyYXRpb24oKSB7CisgICAgICAgIENvbmZpZ3VyYXRpb24gbmV3Q29uZmlnID0gZ2V0UmVzb3VyY2VzKCkuZ2V0Q29uZmlndXJhdGlvbigpOworICAgICAgICBpZiAobmV3Q29uZmlnLm9yaWVudGF0aW9uICE9IG1DcmVhdGlvbk9yaWVudGF0aW9uKSB7CisgICAgICAgICAgICBtQ2FsbGJhY2sucmVjcmVhdGVNZShuZXdDb25maWcpOworICAgICAgICB9IGVsc2UgaWYgKG5ld0NvbmZpZy5oYXJkS2V5Ym9hcmRIaWRkZW4gIT0gbUtleWJvYXJkSGlkZGVuKSB7CisgICAgICAgICAgICBtS2V5Ym9hcmRIaWRkZW4gPSBuZXdDb25maWcuaGFyZEtleWJvYXJkSGlkZGVuOworICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBpc0tleWJvYXJkT3BlbiA9IG1LZXlib2FyZEhpZGRlbiA9PSBDb25maWd1cmF0aW9uLkhBUkRLRVlCT0FSREhJRERFTl9OTzsKKyAgICAgICAgICAgIGlmIChtVXBkYXRlTW9uaXRvci5pc0tleWd1YXJkQnlwYXNzRW5hYmxlZCgpICYmIGlzS2V5Ym9hcmRPcGVuKSB7CisgICAgICAgICAgICAgICAgbUNhbGxiYWNrLmdvVG9VbmxvY2tTY3JlZW4oKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICB9CisgICAgCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgb25BdHRhY2hlZFRvV2luZG93KCkgeworICAgICAgICBzdXBlci5vbkF0dGFjaGVkVG9XaW5kb3coKTsKKyAgICAgICAgdXBkYXRlQ29uZmlndXJhdGlvbigpOworICAgIH0KKworICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgb25Db25maWd1cmF0aW9uQ2hhbmdlZChDb25maWd1cmF0aW9uIG5ld0NvbmZpZykgeworICAgICAgICBzdXBlci5vbkNvbmZpZ3VyYXRpb25DaGFuZ2VkKG5ld0NvbmZpZyk7CisgICAgICAgIHVwZGF0ZUNvbmZpZ3VyYXRpb24oKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBIZWxwZXIgY2xhc3MgdG8gaGFuZGxlIGlucHV0IGZyb20gdG91Y2ggZGlhbGVyLiAgT25seSByZWxldmFudCB3aGVuCisgICAgICogdGhlIGtleWJvYXJkIGlzIHNodXQuCisgICAgICovCisgICAgcHJpdmF0ZSBjbGFzcyBUb3VjaElucHV0IGltcGxlbWVudHMgVmlldy5PbkNsaWNrTGlzdGVuZXIgeworICAgICAgICBwcml2YXRlIFRleHRWaWV3IG1aZXJvOworICAgICAgICBwcml2YXRlIFRleHRWaWV3IG1PbmU7CisgICAgICAgIHByaXZhdGUgVGV4dFZpZXcgbVR3bzsKKyAgICAgICAgcHJpdmF0ZSBUZXh0VmlldyBtVGhyZWU7CisgICAgICAgIHByaXZhdGUgVGV4dFZpZXcgbUZvdXI7CisgICAgICAgIHByaXZhdGUgVGV4dFZpZXcgbUZpdmU7CisgICAgICAgIHByaXZhdGUgVGV4dFZpZXcgbVNpeDsKKyAgICAgICAgcHJpdmF0ZSBUZXh0VmlldyBtU2V2ZW47CisgICAgICAgIHByaXZhdGUgVGV4dFZpZXcgbUVpZ2h0OworICAgICAgICBwcml2YXRlIFRleHRWaWV3IG1OaW5lOworICAgICAgICBwcml2YXRlIFRleHRWaWV3IG1DYW5jZWxCdXR0b247CisKKyAgICAgICAgcHJpdmF0ZSBUb3VjaElucHV0KCkgeworICAgICAgICAgICAgbVplcm8gPSAoVGV4dFZpZXcpIGZpbmRWaWV3QnlJZChSLmlkLnplcm8pOworICAgICAgICAgICAgbU9uZSA9IChUZXh0VmlldykgZmluZFZpZXdCeUlkKFIuaWQub25lKTsKKyAgICAgICAgICAgIG1Ud28gPSAoVGV4dFZpZXcpIGZpbmRWaWV3QnlJZChSLmlkLnR3byk7CisgICAgICAgICAgICBtVGhyZWUgPSAoVGV4dFZpZXcpIGZpbmRWaWV3QnlJZChSLmlkLnRocmVlKTsKKyAgICAgICAgICAgIG1Gb3VyID0gKFRleHRWaWV3KSBmaW5kVmlld0J5SWQoUi5pZC5mb3VyKTsKKyAgICAgICAgICAgIG1GaXZlID0gKFRleHRWaWV3KSBmaW5kVmlld0J5SWQoUi5pZC5maXZlKTsKKyAgICAgICAgICAgIG1TaXggPSAoVGV4dFZpZXcpIGZpbmRWaWV3QnlJZChSLmlkLnNpeCk7CisgICAgICAgICAgICBtU2V2ZW4gPSAoVGV4dFZpZXcpIGZpbmRWaWV3QnlJZChSLmlkLnNldmVuKTsKKyAgICAgICAgICAgIG1FaWdodCA9IChUZXh0VmlldykgZmluZFZpZXdCeUlkKFIuaWQuZWlnaHQpOworICAgICAgICAgICAgbU5pbmUgPSAoVGV4dFZpZXcpIGZpbmRWaWV3QnlJZChSLmlkLm5pbmUpOworICAgICAgICAgICAgbUNhbmNlbEJ1dHRvbiA9IChUZXh0VmlldykgZmluZFZpZXdCeUlkKFIuaWQuY2FuY2VsKTsKKworICAgICAgICAgICAgbVplcm8uc2V0VGV4dCgiMCIpOworICAgICAgICAgICAgbU9uZS5zZXRUZXh0KCIxIik7CisgICAgICAgICAgICBtVHdvLnNldFRleHQoIjIiKTsKKyAgICAgICAgICAgIG1UaHJlZS5zZXRUZXh0KCIzIik7CisgICAgICAgICAgICBtRm91ci5zZXRUZXh0KCI0Iik7CisgICAgICAgICAgICBtRml2ZS5zZXRUZXh0KCI1Iik7CisgICAgICAgICAgICBtU2l4LnNldFRleHQoIjYiKTsKKyAgICAgICAgICAgIG1TZXZlbi5zZXRUZXh0KCI3Iik7CisgICAgICAgICAgICBtRWlnaHQuc2V0VGV4dCgiOCIpOworICAgICAgICAgICAgbU5pbmUuc2V0VGV4dCgiOSIpOworCisgICAgICAgICAgICBtWmVyby5zZXRPbkNsaWNrTGlzdGVuZXIodGhpcyk7CisgICAgICAgICAgICBtT25lLnNldE9uQ2xpY2tMaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgICAgIG1Ud28uc2V0T25DbGlja0xpc3RlbmVyKHRoaXMpOworICAgICAgICAgICAgbVRocmVlLnNldE9uQ2xpY2tMaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgICAgIG1Gb3VyLnNldE9uQ2xpY2tMaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgICAgIG1GaXZlLnNldE9uQ2xpY2tMaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgICAgIG1TaXguc2V0T25DbGlja0xpc3RlbmVyKHRoaXMpOworICAgICAgICAgICAgbVNldmVuLnNldE9uQ2xpY2tMaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgICAgIG1FaWdodC5zZXRPbkNsaWNrTGlzdGVuZXIodGhpcyk7CisgICAgICAgICAgICBtTmluZS5zZXRPbkNsaWNrTGlzdGVuZXIodGhpcyk7CisgICAgICAgICAgICBtQ2FuY2VsQnV0dG9uLnNldE9uQ2xpY2tMaXN0ZW5lcih0aGlzKTsKKyAgICAgICAgfQorCisKKyAgICAgICAgcHVibGljIHZvaWQgb25DbGljayhWaWV3IHYpIHsKKyAgICAgICAgICAgIGlmICh2ID09IG1DYW5jZWxCdXR0b24pIHsKKyAgICAgICAgICAgICAgICBtQ2FsbGJhY2suZ29Ub0xvY2tTY3JlZW4oKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZpbmFsIGludCBkaWdpdCA9IGNoZWNrRGlnaXQodik7CisgICAgICAgICAgICBpZiAoZGlnaXQgPj0gMCkgeworICAgICAgICAgICAgICAgIG1DYWxsYmFjay5wb2tlV2FrZWxvY2soRElHSVRfUFJFU1NfV0FLRV9NSUxMSVMpOworICAgICAgICAgICAgICAgIHJlcG9ydERpZ2l0KGRpZ2l0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHByaXZhdGUgaW50IGNoZWNrRGlnaXQoVmlldyB2KSB7CisgICAgICAgICAgICBpbnQgZGlnaXQgPSAtMTsKKyAgICAgICAgICAgIGlmICh2ID09IG1aZXJvKSB7CisgICAgICAgICAgICAgICAgZGlnaXQgPSAwOworICAgICAgICAgICAgfSBlbHNlIGlmICh2ID09IG1PbmUpIHsKKyAgICAgICAgICAgICAgICBkaWdpdCA9IDE7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHYgPT0gbVR3bykgeworICAgICAgICAgICAgICAgIGRpZ2l0ID0gMjsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAodiA9PSBtVGhyZWUpIHsKKyAgICAgICAgICAgICAgICBkaWdpdCA9IDM7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHYgPT0gbUZvdXIpIHsKKyAgICAgICAgICAgICAgICBkaWdpdCA9IDQ7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHYgPT0gbUZpdmUpIHsKKyAgICAgICAgICAgICAgICBkaWdpdCA9IDU7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHYgPT0gbVNpeCkgeworICAgICAgICAgICAgICAgIGRpZ2l0ID0gNjsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAodiA9PSBtU2V2ZW4pIHsKKyAgICAgICAgICAgICAgICBkaWdpdCA9IDc7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHYgPT0gbUVpZ2h0KSB7CisgICAgICAgICAgICAgICAgZGlnaXQgPSA4OworICAgICAgICAgICAgfSBlbHNlIGlmICh2ID09IG1OaW5lKSB7CisgICAgICAgICAgICAgICAgZGlnaXQgPSA5OworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGRpZ2l0OworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgb25QaG9uZVN0YXRlQ2hhbmdlZChTdHJpbmcgbmV3U3RhdGUpIHsKKyAgICAgICAgbUxvY2tQYXR0ZXJuVXRpbHMudXBkYXRlRW1lcmdlbmN5Q2FsbEJ1dHRvblN0YXRlKG1FbWVyZ2VuY3lDYWxsQnV0dG9uKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBvblJlZnJlc2hCYXR0ZXJ5SW5mbyhib29sZWFuIHNob3dCYXR0ZXJ5SW5mbywgYm9vbGVhbiBwbHVnZ2VkSW4sIGludCBiYXR0ZXJ5TGV2ZWwpIHsKKworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG9uUmVmcmVzaENhcnJpZXJJbmZvKENoYXJTZXF1ZW5jZSBwbG1uLCBDaGFyU2VxdWVuY2Ugc3BuKSB7CisKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBvblJpbmdlck1vZGVDaGFuZ2VkKGludCBzdGF0ZSkgeworCisgICAgfQorCisgICAgcHVibGljIHZvaWQgb25UaW1lQ2hhbmdlZCgpIHsKKworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3N0YXR1cy9wYWNrYWdlLmh0bWwgYi9wb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL3BhY2thZ2UuaHRtbApvbGQgbW9kZSAxMDA3NTUKbmV3IG1vZGUgMTAwNjQ0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBzZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvcGFja2FnZS5odG1sCnJlbmFtZSB0byBwb2xpY3kvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL3BhY2thZ2UuaHRtbApkaWZmIC0tZ2l0IGEvcG9saWN5L3Rlc3RzL0FuZHJvaWQubWsgYi9wb2xpY3kvdGVzdHMvQW5kcm9pZC5tawpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZmI2MGIxCi0tLSAvZGV2L251bGwKKysrIGIvcG9saWN5L3Rlc3RzL0FuZHJvaWQubWsKQEAgLTAsMCArMSwyOSBAQAorIyBDb3B5cmlnaHQgMjAxMCwgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorIworIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyMKKyMgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorIworIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisjIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisjIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisjIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCitMT0NBTF9QQVRIOj0gJChjYWxsIG15LWRpcikKK2luY2x1ZGUgJChDTEVBUl9WQVJTKQorCisjIFdlIG9ubHkgd2FudCB0aGlzIGFwayBidWlsZCBmb3IgdGVzdHMuCitMT0NBTF9NT0RVTEVfVEFHUyA6PSB0ZXN0cworCitMT0NBTF9KQVZBX0xJQlJBUklFUyA6PSBhbmRyb2lkLnBvbGljeSBhbmRyb2lkLnRlc3QucnVubmVyCisKKyMgSW5jbHVkZSBhbGwgdGVzdCBqYXZhIGZpbGVzLgorTE9DQUxfU1JDX0ZJTEVTIDo9ICQoY2FsbCBhbGwtamF2YS1maWxlcy11bmRlciwgc3JjKQorCitMT0NBTF9QQUNLQUdFX05BTUUgOj0gRnJhbWV3b3JrUG9saWN5VGVzdHMKKworaW5jbHVkZSAkKEJVSUxEX1BBQ0tBR0UpCisKZGlmZiAtLWdpdCBhL3BvbGljeS90ZXN0cy9BbmRyb2lkTWFuaWZlc3QueG1sIGIvcG9saWN5L3Rlc3RzL0FuZHJvaWRNYW5pZmVzdC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGJkYWJmYQotLS0gL2Rldi9udWxsCisrKyBiL3BvbGljeS90ZXN0cy9BbmRyb2lkTWFuaWZlc3QueG1sCkBAIC0wLDAgKzEsMzEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKzxtYW5pZmVzdCB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAgICAgICAgcGFja2FnZT0iY29tLmFuZHJvaWQuZnJhbWV3b3Jrcy5wb2xpY3kudGVzdHMiPgorCisgICAgPGFwcGxpY2F0aW9uPgorICAgICAgICA8dXNlcy1saWJyYXJ5IGFuZHJvaWQ6bmFtZT0iYW5kcm9pZC50ZXN0LnJ1bm5lciIgLz4KKyAgICA8L2FwcGxpY2F0aW9uPgorCisgICAgPHVzZXMtcGVybWlzc2lvbiBhbmRyb2lkOm5hbWU9ImFuZHJvaWQucGVybWlzc2lvbi5HRVRfQUNDT1VOVFMiIC8+CisgICAgPHVzZXMtcGVybWlzc2lvbiBhbmRyb2lkOm5hbWU9ImFuZHJvaWQucGVybWlzc2lvbi5NQU5BR0VfQUNDT1VOVFMiIC8+CisgICAgCisgICAgPGluc3RydW1lbnRhdGlvbgorICAgICAgICBhbmRyb2lkOm5hbWU9ImFuZHJvaWQudGVzdC5JbnN0cnVtZW50YXRpb25UZXN0UnVubmVyIgorICAgICAgICBhbmRyb2lkOnRhcmdldFBhY2thZ2U9ImNvbS5hbmRyb2lkLmZyYW1ld29ya3MucG9saWN5LnRlc3RzIgorICAgICAgICBhbmRyb2lkOmxhYmVsPSJGcmFtZXdvcmsgcG9saWN5IHRlc3RzIiAvPgorPC9tYW5pZmVzdD4KZGlmZiAtLWdpdCBhL3BvbGljeS90ZXN0cy9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvTG9ja1BhdHRlcm5LZXlndWFyZFZpZXdUZXN0LmphdmEgYi9wb2xpY3kvdGVzdHMvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL0xvY2tQYXR0ZXJuS2V5Z3VhcmRWaWV3VGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkZmU2NTIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2xpY3kvdGVzdHMvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3BvbGljeS9pbXBsL0xvY2tQYXR0ZXJuS2V5Z3VhcmRWaWV3VGVzdC5qYXZhCkBAIC0wLDAgKzEsMzUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5pbnRlcm5hbC5wb2xpY3kuaW1wbDsKKworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5JY2NDYXJkOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5yZXMuQ29uZmlndXJhdGlvbjsKK2ltcG9ydCBhbmRyb2lkLnRlc3QuQW5kcm9pZFRlc3RDYXNlOworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OworaW1wb3J0IGFuZHJvaWQudmlldy5LZXlFdmVudDsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC53aWRnZXQuTG9ja1BhdHRlcm5VdGlsczsKK2ltcG9ydCBjb20uZ29vZ2xlLmFuZHJvaWQuY29sbGVjdC5MaXN0czsKKworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCisvKioKKyAqIFRlc3RzIGZvciB7QGxpbmsgY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGwuTG9ja1BhdHRlcm5LZXlndWFyZFZpZXd9LAorICogd2hpY2ggaGFuZGxlcyB0aGUgbWFuYWdlbWVudCBvZiBzY3JlZW5zIHdoaWxlIHRoZSBrZXlndWFyZCBpcyBzaG93aW5nLgorICovCitwdWJsaWMgY2xhc3MgTG9ja1BhdHRlcm5LZXlndWFyZFZpZXdUZXN0IGV4dGVuZHMgQW5kcm9pZFRlc3RDYXNlIHsKKyAgICBwcml2YXRlIE1vY2tVcGRhdGVNb25pdG9yIG1VcGRhdGVNb25pdG9yOworICAgIHByaXZhdGUgTG9ja1BhdHRlcm5VdGlscyBtTG9ja1BhdHRlcm5VdGlsczsKKyAgICBwcml2YXRlIFRlc3RhYmxlTG9ja1BhdHRlcm5LZXlndWFyZFZpZXcgbUxQS1Y7CisgICAgcHJpdmF0ZSBNb2NrS2V5Z3VhcmRDYWxsYmFjayBtS2V5Z3VhcmRWaWV3Q2FsbGJhY2s7CisKKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBNb2NrVXBkYXRlTW9uaXRvciBleHRlbmRzIEtleWd1YXJkVXBkYXRlTW9uaXRvciB7CisKKyAgICAgICAgcHVibGljIEljY0NhcmQuU3RhdGUgc2ltU3RhdGUgPSBJY2NDYXJkLlN0YXRlLlJFQURZOworCisgICAgICAgIHByaXZhdGUgTW9ja1VwZGF0ZU1vbml0b3IoQ29udGV4dCBjb250ZXh0KSB7CisgICAgICAgICAgICBzdXBlcihjb250ZXh0KTsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgSWNjQ2FyZC5TdGF0ZSBnZXRTaW1TdGF0ZSgpIHsKKyAgICAgICAgICAgIHJldHVybiBzaW1TdGF0ZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIE1vY2tMb2NrUGF0dGVyblV0aWxzIGV4dGVuZHMgTG9ja1BhdHRlcm5VdGlscyB7CisgICAgICAgIGJvb2xlYW4gaXNMb2NrUGF0dGVybkVuYWJsZWQgPSB0cnVlOworICAgICAgICBwdWJsaWMgYm9vbGVhbiBpc1Blcm1hbmVudGx5TG9ja2VkID0gZmFsc2U7CisKKyAgICAgICAgcHVibGljIE1vY2tMb2NrUGF0dGVyblV0aWxzKENvbnRleHQgY29udGV4dCkgeworICAgICAgICAgICAgc3VwZXIoY29udGV4dCk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIGJvb2xlYW4gaXNMb2NrUGF0dGVybkVuYWJsZWQoKSB7CisgICAgICAgICAgICByZXR1cm4gaXNMb2NrUGF0dGVybkVuYWJsZWQ7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIHZvaWQgc2V0TG9ja1BhdHRlcm5FbmFibGVkKGJvb2xlYW4gbG9ja1BhdHRlcm5FbmFibGVkKSB7CisgICAgICAgICAgICBpc0xvY2tQYXR0ZXJuRW5hYmxlZCA9IGxvY2tQYXR0ZXJuRW5hYmxlZDsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgYm9vbGVhbiBpc1Blcm1hbmVudGx5TG9ja2VkKCkgeworICAgICAgICAgICAgcmV0dXJuIGlzUGVybWFuZW50bHlMb2NrZWQ7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBzZXRQZXJtYW5lbnRseUxvY2tlZChib29sZWFuIHBlcm1hbmVudGx5TG9ja2VkKSB7CisgICAgICAgICAgICBpc1Blcm1hbmVudGx5TG9ja2VkID0gcGVybWFuZW50bHlMb2NrZWQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBNb2NrS2V5Z3VhcmRTY3JlZW4gZXh0ZW5kcyBWaWV3IGltcGxlbWVudHMgS2V5Z3VhcmRTY3JlZW4geworCisgICAgICAgIHByaXZhdGUgaW50IG1PblBhdXNlQ291bnQgPSAwOworICAgICAgICBwcml2YXRlIGludCBtT25SZXN1bWVDb3VudCA9IDA7CisgICAgICAgIHByaXZhdGUgaW50IG1DbGVhbnVwQ291bnQgPSAwOworCisgICAgICAgIHByaXZhdGUgTW9ja0tleWd1YXJkU2NyZWVuKENvbnRleHQgY29udGV4dCkgeworICAgICAgICAgICAgc3VwZXIoY29udGV4dCk7CisgICAgICAgICAgICBzZXRGb2N1c2FibGUodHJ1ZSk7CisgICAgICAgIH0KKworICAgICAgICAvKioge0Bpbmhlcml0RG9jfSAqLworICAgICAgICBwdWJsaWMgYm9vbGVhbiBuZWVkc0lucHV0KCkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KKyAgICAgICAgcHVibGljIHZvaWQgb25QYXVzZSgpIHsKKyAgICAgICAgICAgIG1PblBhdXNlQ291bnQrKzsKKyAgICAgICAgfQorCisgICAgICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgICAgIHB1YmxpYyB2b2lkIG9uUmVzdW1lKCkgeworICAgICAgICAgICAgbU9uUmVzdW1lQ291bnQrKzsKKyAgICAgICAgfQorCisgICAgICAgIC8qKiB7QGluaGVyaXREb2N9ICovCisgICAgICAgIHB1YmxpYyB2b2lkIGNsZWFuVXAoKSB7CisgICAgICAgICAgICBtQ2xlYW51cENvdW50Kys7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgaW50IGdldE9uUGF1c2VDb3VudCgpIHsKKyAgICAgICAgICAgIHJldHVybiBtT25QYXVzZUNvdW50OworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGludCBnZXRPblJlc3VtZUNvdW50KCkgeworICAgICAgICAgICAgcmV0dXJuIG1PblJlc3VtZUNvdW50OworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIGludCBnZXRDbGVhbnVwQ291bnQoKSB7CisgICAgICAgICAgICByZXR1cm4gbUNsZWFudXBDb3VudDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEFsbG93cyB1cyB0byBpbmplY3QgdGhlIGxvY2sgYW5kIHVubG9jayB2aWV3cyB0byBzaW11bGF0ZSB0aGVpciBiZWhhdmlvcgorICAgICAqIGFuZCBkZXRlY3QgdGhlaXIgY3JlYXRpb24uCisgICAgICovCisgICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgVGVzdGFibGVMb2NrUGF0dGVybktleWd1YXJkVmlldyBleHRlbmRzIExvY2tQYXR0ZXJuS2V5Z3VhcmRWaWV3IHsKKyAgICAgICAgcHJpdmF0ZSBMaXN0PE1vY2tLZXlndWFyZFNjcmVlbj4gbUluamVjdGVkTG9ja1NjcmVlbnM7CisgICAgICAgIHByaXZhdGUgTGlzdDxNb2NrS2V5Z3VhcmRTY3JlZW4+IG1JbmplY3RlZFVubG9ja1NjcmVlbnM7CisKKworCisgICAgICAgIHByaXZhdGUgVGVzdGFibGVMb2NrUGF0dGVybktleWd1YXJkVmlldyhDb250ZXh0IGNvbnRleHQsIEtleWd1YXJkVXBkYXRlTW9uaXRvciB1cGRhdGVNb25pdG9yLAorICAgICAgICAgICAgICAgIExvY2tQYXR0ZXJuVXRpbHMgbG9ja1BhdHRlcm5VdGlscywgS2V5Z3VhcmRXaW5kb3dDb250cm9sbGVyIGNvbnRyb2xsZXIpIHsKKyAgICAgICAgICAgIHN1cGVyKGNvbnRleHQsIHVwZGF0ZU1vbml0b3IsIGxvY2tQYXR0ZXJuVXRpbHMsIGNvbnRyb2xsZXIpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIFZpZXcgY3JlYXRlTG9ja1NjcmVlbigpIHsKKyAgICAgICAgICAgIGZpbmFsIE1vY2tLZXlndWFyZFNjcmVlbiBuZXdWaWV3ID0gbmV3IE1vY2tLZXlndWFyZFNjcmVlbihnZXRDb250ZXh0KCkpOworICAgICAgICAgICAgaWYgKG1JbmplY3RlZExvY2tTY3JlZW5zID09IG51bGwpIG1JbmplY3RlZExvY2tTY3JlZW5zID0gTGlzdHMubmV3QXJyYXlMaXN0KCk7CisgICAgICAgICAgICBtSW5qZWN0ZWRMb2NrU2NyZWVucy5hZGQobmV3Vmlldyk7CisgICAgICAgICAgICByZXR1cm4gbmV3VmlldzsKKyAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBWaWV3IGNyZWF0ZVVubG9ja1NjcmVlbkZvcihVbmxvY2tNb2RlIHVubG9ja01vZGUpIHsKKyAgICAgICAgICAgIGZpbmFsIE1vY2tLZXlndWFyZFNjcmVlbiBuZXdWaWV3ID0gbmV3IE1vY2tLZXlndWFyZFNjcmVlbihnZXRDb250ZXh0KCkpOworICAgICAgICAgICAgaWYgKG1JbmplY3RlZFVubG9ja1NjcmVlbnMgPT0gbnVsbCkgbUluamVjdGVkVW5sb2NrU2NyZWVucyA9IExpc3RzLm5ld0FycmF5TGlzdCgpOworICAgICAgICAgICAgbUluamVjdGVkVW5sb2NrU2NyZWVucy5hZGQobmV3Vmlldyk7CisgICAgICAgICAgICByZXR1cm4gbmV3VmlldzsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBMaXN0PE1vY2tLZXlndWFyZFNjcmVlbj4gZ2V0SW5qZWN0ZWRMb2NrU2NyZWVucygpIHsKKyAgICAgICAgICAgIHJldHVybiBtSW5qZWN0ZWRMb2NrU2NyZWVuczsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBMaXN0PE1vY2tLZXlndWFyZFNjcmVlbj4gZ2V0SW5qZWN0ZWRVbmxvY2tTY3JlZW5zKCkgeworICAgICAgICAgICAgcmV0dXJuIG1JbmplY3RlZFVubG9ja1NjcmVlbnM7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBNb2NrS2V5Z3VhcmRDYWxsYmFjayBpbXBsZW1lbnRzIEtleWd1YXJkVmlld0NhbGxiYWNrIHsKKworICAgICAgICBwcml2YXRlIGludCBtUG9rZVdha2Vsb2NrQ291bnQgPSAwOworICAgICAgICBwcml2YXRlIGludCBtS2V5Z3VhcmREb25lQ291bnQgPSAwOworCisgICAgICAgIHB1YmxpYyB2b2lkIHBva2VXYWtlbG9jaygpIHsKKyAgICAgICAgICAgIG1Qb2tlV2FrZWxvY2tDb3VudCsrOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQgcG9rZVdha2Vsb2NrKGludCBtaWxsaXMpIHsKKyAgICAgICAgICAgIG1Qb2tlV2FrZWxvY2tDb3VudCsrOworICAgICAgICB9CisKKyAgICAgICAgcHVibGljIHZvaWQga2V5Z3VhcmREb25lKGJvb2xlYW4gYXV0aGVudGljYXRlZCkgeworICAgICAgICAgICAgbUtleWd1YXJkRG9uZUNvdW50Kys7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBrZXlndWFyZERvbmVEcmF3aW5nKCkgeworCisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgaW50IGdldFBva2VXYWtlbG9ja0NvdW50KCkgeworICAgICAgICAgICAgcmV0dXJuIG1Qb2tlV2FrZWxvY2tDb3VudDsKKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyBpbnQgZ2V0S2V5Z3VhcmREb25lQ291bnQoKSB7CisgICAgICAgICAgICByZXR1cm4gbUtleWd1YXJkRG9uZUNvdW50OworICAgICAgICB9CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHJvdGVjdGVkIHZvaWQgc2V0VXAoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgc3VwZXIuc2V0VXAoKTsKKyAgICAgICAgbVVwZGF0ZU1vbml0b3IgPSBuZXcgTW9ja1VwZGF0ZU1vbml0b3IoZ2V0Q29udGV4dCgpKTsKKyAgICAgICAgbUxvY2tQYXR0ZXJuVXRpbHMgPSBuZXcgTW9ja0xvY2tQYXR0ZXJuVXRpbHMoZ2V0Q29udGV4dCgpKTsKKworICAgICAgICBtTFBLViA9IG5ldyBUZXN0YWJsZUxvY2tQYXR0ZXJuS2V5Z3VhcmRWaWV3KGdldENvbnRleHQoKSwgbVVwZGF0ZU1vbml0b3IsCisgICAgICAgICAgICAgICAgbUxvY2tQYXR0ZXJuVXRpbHMsIG5ldyBLZXlndWFyZFdpbmRvd0NvbnRyb2xsZXIoKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBzZXROZWVkc0lucHV0KGJvb2xlYW4gbmVlZHNJbnB1dCkgeworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICAgICAgbUtleWd1YXJkVmlld0NhbGxiYWNrID0gbmV3IE1vY2tLZXlndWFyZENhbGxiYWNrKCk7CisgICAgICAgIG1MUEtWLnNldENhbGxiYWNrKG1LZXlndWFyZFZpZXdDYWxsYmFjayk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdFN0YXRlQWZ0ZXJDcmVhdGVkV2hpbGVTY3JlZW5PZmYoKSB7CisKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIG1MUEtWLmdldEluamVjdGVkTG9ja1NjcmVlbnMoKS5zaXplKCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoMSwgbUxQS1YuZ2V0SW5qZWN0ZWRVbmxvY2tTY3JlZW5zKCkuc2l6ZSgpKTsKKworICAgICAgICBNb2NrS2V5Z3VhcmRTY3JlZW4gbG9ja1NjcmVlbiA9IG1MUEtWLmdldEluamVjdGVkTG9ja1NjcmVlbnMoKS5nZXQoMCk7CisgICAgICAgIE1vY2tLZXlndWFyZFNjcmVlbiB1bmxvY2tTY3JlZW4gPSBtTFBLVi5nZXRJbmplY3RlZFVubG9ja1NjcmVlbnMoKS5nZXQoMCk7CisKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIGxvY2tTY3JlZW4uZ2V0T25QYXVzZUNvdW50KCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoMCwgbG9ja1NjcmVlbi5nZXRPblJlc3VtZUNvdW50KCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoMCwgbG9ja1NjcmVlbi5nZXRDbGVhbnVwQ291bnQoKSk7CisKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIHVubG9ja1NjcmVlbi5nZXRPblBhdXNlQ291bnQoKSk7CisgICAgICAgIGFzc2VydEVxdWFscygwLCB1bmxvY2tTY3JlZW4uZ2V0T25SZXN1bWVDb3VudCgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIHVubG9ja1NjcmVlbi5nZXRDbGVhbnVwQ291bnQoKSk7CisKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIG1LZXlndWFyZFZpZXdDYWxsYmFjay5nZXRQb2tlV2FrZWxvY2tDb3VudCgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIG1LZXlndWFyZFZpZXdDYWxsYmFjay5nZXRLZXlndWFyZERvbmVDb3VudCgpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0V29rZW5CeU5vbk1lbnVLZXkoKSB7CisgICAgICAgIG1MUEtWLndha2VXaGVuUmVhZHlUcSgwKTsKKworICAgICAgICAvLyBzaG91bGQgaGF2ZSBwb2tlZCB0aGUgd2FrZWxvY2sgdG8gdHVybiBvbiB0aGUgc2NyZWVuCisgICAgICAgIGFzc2VydEVxdWFscygxLCBtS2V5Z3VhcmRWaWV3Q2FsbGJhY2suZ2V0UG9rZVdha2Vsb2NrQ291bnQoKSk7CisKKyAgICAgICAgLy8gc2hvdWxkbid0IGJlIGFueSBhZGRpdGlvbmFsIHZpZXdzIGNyZWF0ZWQKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIG1MUEtWLmdldEluamVjdGVkTG9ja1NjcmVlbnMoKS5zaXplKCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoMSwgbUxQS1YuZ2V0SW5qZWN0ZWRVbmxvY2tTY3JlZW5zKCkuc2l6ZSgpKTsKKyAgICAgICAgTW9ja0tleWd1YXJkU2NyZWVuIGxvY2tTY3JlZW4gPSBtTFBLVi5nZXRJbmplY3RlZExvY2tTY3JlZW5zKCkuZ2V0KDApOworICAgICAgICBNb2NrS2V5Z3VhcmRTY3JlZW4gdW5sb2NrU2NyZWVuID0gbUxQS1YuZ2V0SW5qZWN0ZWRVbmxvY2tTY3JlZW5zKCkuZ2V0KDApOworCisgICAgICAgIC8vIGxvY2sgc2NyZWVuIHNob3VsZCBiZSBvbmx5IHZpc2libGUgb25lCisgICAgICAgIGFzc2VydEVxdWFscyhWaWV3LlZJU0lCTEUsIGxvY2tTY3JlZW4uZ2V0VmlzaWJpbGl0eSgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKFZpZXcuR09ORSwgdW5sb2NrU2NyZWVuLmdldFZpc2liaWxpdHkoKSk7CisKKyAgICAgICAgLy8gb24gcmVzdW1lIG5vdCBjYWxsZWQgdW50aWwgc2NyZWVuIHR1cm5zIG9uCisgICAgICAgIGFzc2VydEVxdWFscygwLCBsb2NrU2NyZWVuLmdldE9uUGF1c2VDb3VudCgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIGxvY2tTY3JlZW4uZ2V0T25SZXN1bWVDb3VudCgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIGxvY2tTY3JlZW4uZ2V0Q2xlYW51cENvdW50KCkpOworCisgICAgICAgIGFzc2VydEVxdWFscygwLCB1bmxvY2tTY3JlZW4uZ2V0T25QYXVzZUNvdW50KCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoMCwgdW5sb2NrU2NyZWVuLmdldE9uUmVzdW1lQ291bnQoKSk7CisgICAgICAgIGFzc2VydEVxdWFscygwLCB1bmxvY2tTY3JlZW4uZ2V0Q2xlYW51cENvdW50KCkpOworCisgICAgICAgIC8vIHNpbXVsYXRlIHNjcmVlbiB0dXJuaW5nIG9uCisgICAgICAgIG1MUEtWLm9uU2NyZWVuVHVybmVkT24oKTsKKworICAgICAgICBhc3NlcnRFcXVhbHMoMCwgbG9ja1NjcmVlbi5nZXRPblBhdXNlQ291bnQoKSk7CisgICAgICAgIGFzc2VydEVxdWFscygxLCBsb2NrU2NyZWVuLmdldE9uUmVzdW1lQ291bnQoKSk7CisgICAgICAgIGFzc2VydEVxdWFscygwLCBsb2NrU2NyZWVuLmdldENsZWFudXBDb3VudCgpKTsKKworICAgICAgICBhc3NlcnRFcXVhbHMoMCwgdW5sb2NrU2NyZWVuLmdldE9uUGF1c2VDb3VudCgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIHVubG9ja1NjcmVlbi5nZXRPblJlc3VtZUNvdW50KCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoMCwgdW5sb2NrU2NyZWVuLmdldENsZWFudXBDb3VudCgpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0V29rZW5CeU1lbnVLZXlXaGVuUGF0dGVyblNldCgpIHsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKHRydWUsIG1Mb2NrUGF0dGVyblV0aWxzLmlzTG9ja1BhdHRlcm5FbmFibGVkKCkpOworCisgICAgICAgIG1MUEtWLndha2VXaGVuUmVhZHlUcShLZXlFdmVudC5LRVlDT0RFX01FTlUpOworCisgICAgICAgIC8vIHNob3VsZCBoYXZlIHBva2VkIHRoZSB3YWtlbG9jayB0byB0dXJuIG9uIHRoZSBzY3JlZW4KKyAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIG1LZXlndWFyZFZpZXdDYWxsYmFjay5nZXRQb2tlV2FrZWxvY2tDb3VudCgpKTsKKworICAgICAgICAvLyBzaG91bGRuJ3QgYmUgYW55IGFkZGl0aW9uYWwgdmlld3MgY3JlYXRlZAorICAgICAgICBhc3NlcnRFcXVhbHMoMSwgbUxQS1YuZ2V0SW5qZWN0ZWRMb2NrU2NyZWVucygpLnNpemUoKSk7CisgICAgICAgIGFzc2VydEVxdWFscygxLCBtTFBLVi5nZXRJbmplY3RlZFVubG9ja1NjcmVlbnMoKS5zaXplKCkpOworICAgICAgICBNb2NrS2V5Z3VhcmRTY3JlZW4gbG9ja1NjcmVlbiA9IG1MUEtWLmdldEluamVjdGVkTG9ja1NjcmVlbnMoKS5nZXQoMCk7CisgICAgICAgIE1vY2tLZXlndWFyZFNjcmVlbiB1bmxvY2tTY3JlZW4gPSBtTFBLVi5nZXRJbmplY3RlZFVubG9ja1NjcmVlbnMoKS5nZXQoMCk7CisKKyAgICAgICAgLy8gdW5sb2NrIHNjcmVlbiBzaG91bGQgYmUgb25seSB2aXNpYmxlIG9uZQorICAgICAgICBhc3NlcnRFcXVhbHMoVmlldy5HT05FLCBsb2NrU2NyZWVuLmdldFZpc2liaWxpdHkoKSk7CisgICAgICAgIGFzc2VydEVxdWFscyhWaWV3LlZJU0lCTEUsIHVubG9ja1NjcmVlbi5nZXRWaXNpYmlsaXR5KCkpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHRlc3RTY3JlZW5SZXF1ZXN0c1JlY3JlYXRpb24oKSB7CisgICAgICAgIG1MUEtWLndha2VXaGVuUmVhZHlUcSgwKTsKKyAgICAgICAgbUxQS1Yub25TY3JlZW5UdXJuZWRPbigpOworCisgICAgICAgIGFzc2VydEVxdWFscygxLCBtTFBLVi5nZXRJbmplY3RlZExvY2tTY3JlZW5zKCkuc2l6ZSgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIG1MUEtWLmdldEluamVjdGVkVW5sb2NrU2NyZWVucygpLnNpemUoKSk7CisgICAgICAgIE1vY2tLZXlndWFyZFNjcmVlbiBsb2NrU2NyZWVuID0gbUxQS1YuZ2V0SW5qZWN0ZWRMb2NrU2NyZWVucygpLmdldCgwKTsKKworICAgICAgICBhc3NlcnRFcXVhbHMoMCwgbG9ja1NjcmVlbi5nZXRPblBhdXNlQ291bnQoKSk7CisgICAgICAgIGFzc2VydEVxdWFscygxLCBsb2NrU2NyZWVuLmdldE9uUmVzdW1lQ291bnQoKSk7CisKKyAgICAgICAgLy8gc2ltdWxhdGUgc2NyZWVuIGFza2luZyB0byBiZSByZWNyZWF0ZWQKKyAgICAgICAgbUxQS1YubUtleWd1YXJkU2NyZWVuQ2FsbGJhY2sucmVjcmVhdGVNZShuZXcgQ29uZmlndXJhdGlvbigpKTsKKworICAgICAgICAvLyBzaG91bGQgaGF2ZSBiZWVuIHJlY3JlYXRlZAorICAgICAgICBhc3NlcnRFcXVhbHMoMiwgbUxQS1YuZ2V0SW5qZWN0ZWRMb2NrU2NyZWVucygpLnNpemUoKSk7CisgICAgICAgIGFzc2VydEVxdWFscygyLCBtTFBLVi5nZXRJbmplY3RlZFVubG9ja1NjcmVlbnMoKS5zaXplKCkpOworCisgICAgICAgIC8vIGJvdGggb2xkIHNjcmVlbnMgc2hvdWxkIGhhdmUgYmVlbiBjbGVhbmVkIHVwCisgICAgICAgIGFzc2VydEVxdWFscygxLCBtTFBLVi5nZXRJbmplY3RlZExvY2tTY3JlZW5zKCkuZ2V0KDApLmdldENsZWFudXBDb3VudCgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIG1MUEtWLmdldEluamVjdGVkVW5sb2NrU2NyZWVucygpLmdldCgwKS5nZXRDbGVhbnVwQ291bnQoKSk7CisKKyAgICAgICAgLy8gb2xkIGxvY2sgc2NyZWVuIHNob3VsZCBoYXZlIGJlZW4gcGF1c2VkCisgICAgICAgIGFzc2VydEVxdWFscygxLCBtTFBLVi5nZXRJbmplY3RlZExvY2tTY3JlZW5zKCkuZ2V0KDApLmdldE9uUGF1c2VDb3VudCgpKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIG1MUEtWLmdldEluamVjdGVkVW5sb2NrU2NyZWVucygpLmdldCgwKS5nZXRPblBhdXNlQ291bnQoKSk7CisKKyAgICAgICAgLy8gbmV3IGxvY2sgc2NyZWVuIHNob3VsZCBoYXZlIGJlZW4gcmVzdW1lZAorICAgICAgICBhc3NlcnRFcXVhbHMoMSwgbUxQS1YuZ2V0SW5qZWN0ZWRMb2NrU2NyZWVucygpLmdldCgxKS5nZXRPblJlc3VtZUNvdW50KCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoMCwgbUxQS1YuZ2V0SW5qZWN0ZWRVbmxvY2tTY3JlZW5zKCkuZ2V0KDEpLmdldE9uUmVzdW1lQ291bnQoKSk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdGVzdE1lbnVEb2VzbnRHb1RvVW5sb2NrU2NyZWVuT25XYWtlV2hlblB1a0xvY2tlZCgpIHsKKyAgICAgICAgLy8gUFVLIGxvY2tlZAorICAgICAgICBtVXBkYXRlTW9uaXRvci5zaW1TdGF0ZSA9IEljY0NhcmQuU3RhdGUuUFVLX1JFUVVJUkVEOworCisgICAgICAgIC8vIHdha2UgYnkgbWVudQorICAgICAgICBtTFBLVi53YWtlV2hlblJlYWR5VHEoS2V5RXZlbnQuS0VZQ09ERV9NRU5VKTsKKworICAgICAgICBhc3NlcnRFcXVhbHMoMSwgbUxQS1YuZ2V0SW5qZWN0ZWRMb2NrU2NyZWVucygpLnNpemUoKSk7CisgICAgICAgIGFzc2VydEVxdWFscygxLCBtTFBLVi5nZXRJbmplY3RlZFVubG9ja1NjcmVlbnMoKS5zaXplKCkpOworICAgICAgICBNb2NrS2V5Z3VhcmRTY3JlZW4gbG9ja1NjcmVlbiA9IG1MUEtWLmdldEluamVjdGVkTG9ja1NjcmVlbnMoKS5nZXQoMCk7CisgICAgICAgIE1vY2tLZXlndWFyZFNjcmVlbiB1bmxvY2tTY3JlZW4gPSBtTFBLVi5nZXRJbmplY3RlZFVubG9ja1NjcmVlbnMoKS5nZXQoMCk7CisKKyAgICAgICAgLy8gbG9jayBzY3JlZW4gc2hvdWxkIGJlIG9ubHkgdmlzaWJsZSBvbmUKKyAgICAgICAgYXNzZXJ0RXF1YWxzKFZpZXcuVklTSUJMRSwgbG9ja1NjcmVlbi5nZXRWaXNpYmlsaXR5KCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoVmlldy5HT05FLCB1bmxvY2tTY3JlZW4uZ2V0VmlzaWJpbGl0eSgpKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB0ZXN0TWVudUdvZXNUb0xvY2tTY3JlZW5XaGVuRGV2aWNlTm90U2VjdXJlKCkgeworICAgICAgICBtTG9ja1BhdHRlcm5VdGlscy5zZXRMb2NrUGF0dGVybkVuYWJsZWQoZmFsc2UpOworCisgICAgICAgIC8vIHdha2UgYnkgbWVudQorICAgICAgICBtTFBLVi53YWtlV2hlblJlYWR5VHEoS2V5RXZlbnQuS0VZQ09ERV9NRU5VKTsKKworICAgICAgICBhc3NlcnRFcXVhbHMoMSwgbUxQS1YuZ2V0SW5qZWN0ZWRMb2NrU2NyZWVucygpLnNpemUoKSk7CisgICAgICAgIGFzc2VydEVxdWFscygxLCBtTFBLVi5nZXRJbmplY3RlZFVubG9ja1NjcmVlbnMoKS5zaXplKCkpOworICAgICAgICBNb2NrS2V5Z3VhcmRTY3JlZW4gbG9ja1NjcmVlbiA9IG1MUEtWLmdldEluamVjdGVkTG9ja1NjcmVlbnMoKS5nZXQoMCk7CisgICAgICAgIE1vY2tLZXlndWFyZFNjcmVlbiB1bmxvY2tTY3JlZW4gPSBtTFBLVi5nZXRJbmplY3RlZFVubG9ja1NjcmVlbnMoKS5nZXQoMCk7CisKKyAgICAgICAgLy8gbG9jayBzY3JlZW4gc2hvdWxkIGJlIG9ubHkgdmlzaWJsZSBvbmUKKyAgICAgICAgYXNzZXJ0RXF1YWxzKFZpZXcuVklTSUJMRSwgbG9ja1NjcmVlbi5nZXRWaXNpYmlsaXR5KCkpOworICAgICAgICBhc3NlcnRFcXVhbHMoVmlldy5HT05FLCB1bmxvY2tTY3JlZW4uZ2V0VmlzaWJpbGl0eSgpKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9wcmVsb2FkZWQtY2xhc3NlcyBiL3ByZWxvYWRlZC1jbGFzc2VzCmluZGV4IDFhMDU4ZmQuLmI2MDIwMzkgMTAwNjQ0Ci0tLSBhL3ByZWxvYWRlZC1jbGFzc2VzCisrKyBiL3ByZWxvYWRlZC1jbGFzc2VzCkBAIC0zMSw3ICszMSw2IEBACiBhbmRyb2lkLmFwcC5JQWN0aXZpdHlNYW5hZ2VyCiBhbmRyb2lkLmFwcC5JQWN0aXZpdHlNYW5hZ2VyJENvbnRlbnRQcm92aWRlckhvbGRlcgogYW5kcm9pZC5hcHAuSUFsYXJtTWFuYWdlciRTdHViCi1hbmRyb2lkLmFwcC5JU3RhdHVzQmFyJFN0dWIKIGFuZHJvaWQuYXBwLklUcmFuc2llbnROb3RpZmljYXRpb24kU3R1YgogYW5kcm9pZC5hcHAuSW5zdHJ1bWVudGF0aW9uCiBhbmRyb2lkLmFwcC5JbnRlbnRTZXJ2aWNlCkBAIC0yNjksNyArMjY4LDYgQEAKIGFuZHJvaWQubG9jYXRpb24uSUxvY2F0aW9uTWFuYWdlciRTdHViJFByb3h5CiBhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uCiBhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uTWFuYWdlcgotYW5kcm9pZC5sb2NhdGlvbi5Mb2NhdGlvblByb3ZpZGVySW50ZXJmYWNlCiBhbmRyb2lkLm1lZGlhLkF1ZGlvRm9ybWF0CiBhbmRyb2lkLm1lZGlhLkF1ZGlvTWFuYWdlcgogYW5kcm9pZC5tZWRpYS5BdWRpb1JlY29yZApAQCAtNjMzLDcgKzYzMSw2IEBACiBjb20uYW5kcm9pZC5pbnRlcm5hbC5jb250ZW50LlN5bmNTdGF0ZUNvbnRlbnRQcm92aWRlckhlbHBlcgogY29tLmFuZHJvaWQuaW50ZXJuYWwuZ3JhcGhpY3MuTmF0aXZlVXRpbHMKIGNvbS5hbmRyb2lkLmludGVybmFsLmxvY2F0aW9uLkR1bW15TG9jYXRpb25Qcm92aWRlcgotY29tLmFuZHJvaWQuaW50ZXJuYWwubG9jYXRpb24uR3BzTG9jYXRpb25Qcm92aWRlcgogY29tLmFuZHJvaWQuaW50ZXJuYWwubG9nZ2luZy5BbmRyb2lkSGFuZGxlcgogY29tLmFuZHJvaWQuaW50ZXJuYWwub3MuQW5kcm9pZFByaW50U3RyZWFtCiBjb20uYW5kcm9pZC5pbnRlcm5hbC5vcy5CaW5kZXJJbnRlcm5hbApAQCAtNjU2LDYgKzY1MywxMSBAQAogY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGwuUGhvbmVXaW5kb3ckUGFuZWxGZWF0dXJlU3RhdGUkU2F2ZWRTdGF0ZQogY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGwuUGhvbmVXaW5kb3dNYW5hZ2VyCiBjb20uYW5kcm9pZC5pbnRlcm5hbC5wb2xpY3kuaW1wbC5Qb2xpY3kKK2NvbS5hbmRyb2lkLmludGVybmFsLnN0YXR1c2Jhci5JU3RhdHVzQmFyCitjb20uYW5kcm9pZC5pbnRlcm5hbC5zdGF0dXNiYXIuSVN0YXR1c0JhciRTdHViCitjb20uYW5kcm9pZC5pbnRlcm5hbC5zdGF0dXNiYXIuSVN0YXR1c0JhclNlcnZpY2UkU3R1YgorY29tLmFuZHJvaWQuaW50ZXJuYWwuc3RhdHVzYmFyLklTdGF0dXNCYXJTZXJ2aWNlJFN0dWIKK2NvbS5hbmRyb2lkLmludGVybmFsLnN0YXR1c2Jhci5TdGF0dXNCYXJJY29uCiBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuR3NtQWxwaGFiZXQKIGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5JVGVsZXBob255JFN0dWIKIGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5JVGVsZXBob255JFN0dWIkUHJveHkKZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvQW5kcm9pZC5tayBiL3NlcnZpY2VzL2phdmEvQW5kcm9pZC5tawppbmRleCA5MzQ3MTJjLi5jNzU2ZDI5IDEwMDY0NAotLS0gYS9zZXJ2aWNlcy9qYXZhL0FuZHJvaWQubWsKKysrIGIvc2VydmljZXMvamF2YS9BbmRyb2lkLm1rCkBAIC0xMyw3ICsxMyw5IEBACiAKIExPQ0FMX0pBVkFfTElCUkFSSUVTIDo9IGFuZHJvaWQucG9saWN5CiAKK0xPQ0FMX05PX0VNTUFfSU5TVFJVTUVOVCA6PSB0cnVlCitMT0NBTF9OT19FTU1BX0NPTVBJTEUgOj0gdHJ1ZQorCiBpbmNsdWRlICQoQlVJTERfSkFWQV9MSUJSQVJZKQogCiBpbmNsdWRlICQoQlVJTERfRFJPSURET0MpCi0KZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL0FwcFdpZGdldFNlcnZpY2UuamF2YSBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL0FwcFdpZGdldFNlcnZpY2UuamF2YQppbmRleCAyNDUyNmFmLi4zZWQ2YzEyIDEwMDY0NAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9BcHBXaWRnZXRTZXJ2aWNlLmphdmEKKysrIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvQXBwV2lkZ2V0U2VydmljZS5qYXZhCkBAIC04NjksNyArODY5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgb3V0LnN0YXJ0VGFnKG51bGwsICJwIik7CiAgICAgICAgICAgICAgICAgICAgIG91dC5hdHRyaWJ1dGUobnVsbCwgInBrZyIsIHAuaW5mby5wcm92aWRlci5nZXRQYWNrYWdlTmFtZSgpKTsKICAgICAgICAgICAgICAgICAgICAgb3V0LmF0dHJpYnV0ZShudWxsLCAiY2wiLCBwLmluZm8ucHJvdmlkZXIuZ2V0Q2xhc3NOYW1lKCkpOwotICAgICAgICAgICAgICAgICAgICBvdXQuZW5kVGFnKG51bGwsICJoIik7CisgICAgICAgICAgICAgICAgICAgIG91dC5lbmRUYWcobnVsbCwgInAiKTsKICAgICAgICAgICAgICAgICAgICAgcC50YWcgPSBwcm92aWRlckluZGV4OwogICAgICAgICAgICAgICAgICAgICBwcm92aWRlckluZGV4Kys7CiAgICAgICAgICAgICAgICAgfQpAQCAtMTIwNCw2ICsxMjA0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiBpdCdzIGN1cnJlbnRseSBzaG93aW5nLCBjYWxsIGJhY2sgd2l0aCB0aGUgbmV3IEFwcFdpZGdldFByb3ZpZGVySW5mby4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBqPTA7IGo8TTsgaisrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFwcFdpZGdldElkIGlkID0gcC5pbnN0YW5jZXMuZ2V0KGopOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZC52aWV3cyA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpZC5ob3N0ICE9IG51bGwgJiYgaWQuaG9zdC5jYWxsYmFja3MgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZC5ob3N0LmNhbGxiYWNrcy5wcm92aWRlckNoYW5nZWQoaWQuYXBwV2lkZ2V0SWQsIHAuaW5mbyk7CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9CYWNrdXBNYW5hZ2VyU2VydmljZS5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvQmFja3VwTWFuYWdlclNlcnZpY2UuamF2YQppbmRleCA2ZTMwN2E1Li4zZGI1ZGMxIDEwMDY0NAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9CYWNrdXBNYW5hZ2VyU2VydmljZS5qYXZhCisrKyBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL0JhY2t1cE1hbmFnZXJTZXJ2aWNlLmphdmEKQEAgLTE3LDggKzE3LDggQEAKIHBhY2thZ2UgY29tLmFuZHJvaWQuc2VydmVyOwogCiBpbXBvcnQgYW5kcm9pZC5hcHAuQWN0aXZpdHlNYW5hZ2VyTmF0aXZlOwotaW1wb3J0IGFuZHJvaWQuYXBwLkFjdGl2aXR5VGhyZWFkOwogaW1wb3J0IGFuZHJvaWQuYXBwLkFsYXJtTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLmFwcC5BcHBHbG9iYWxzOwogaW1wb3J0IGFuZHJvaWQuYXBwLklBY3Rpdml0eU1hbmFnZXI7CiBpbXBvcnQgYW5kcm9pZC5hcHAuSUFwcGxpY2F0aW9uVGhyZWFkOwogaW1wb3J0IGFuZHJvaWQuYXBwLklCYWNrdXBBZ2VudDsKQEAgLTM5OSw3ICszOTksNyBAQAogICAgIHB1YmxpYyBCYWNrdXBNYW5hZ2VyU2VydmljZShDb250ZXh0IGNvbnRleHQpIHsKICAgICAgICAgbUNvbnRleHQgPSBjb250ZXh0OwogICAgICAgICBtUGFja2FnZU1hbmFnZXIgPSBjb250ZXh0LmdldFBhY2thZ2VNYW5hZ2VyKCk7Ci0gICAgICAgIG1QYWNrYWdlTWFuYWdlckJpbmRlciA9IEFjdGl2aXR5VGhyZWFkLmdldFBhY2thZ2VNYW5hZ2VyKCk7CisgICAgICAgIG1QYWNrYWdlTWFuYWdlckJpbmRlciA9IEFwcEdsb2JhbHMuZ2V0UGFja2FnZU1hbmFnZXIoKTsKICAgICAgICAgbUFjdGl2aXR5TWFuYWdlciA9IEFjdGl2aXR5TWFuYWdlck5hdGl2ZS5nZXREZWZhdWx0KCk7CiAKICAgICAgICAgbUFsYXJtTWFuYWdlciA9IChBbGFybU1hbmFnZXIpIGNvbnRleHQuZ2V0U3lzdGVtU2VydmljZShDb250ZXh0LkFMQVJNX1NFUlZJQ0UpOwpAQCAtNDIxLDcgKzQyMSw3IEBACiAgICAgICAgICAgICAgICAgU2V0dGluZ3MuU2VjdXJlLkJBQ0tVUF9BVVRPX1JFU1RPUkUsIDEpICE9IDA7CiAgICAgICAgIC8vIElmIEVuY3J5cHRlZCBmaWxlIHN5c3RlbXMgaXMgZW5hYmxlZCBvciBkaXNhYmxlZCwgdGhpcyBjYWxsIHdpbGwgcmV0dXJuIHRoZQogICAgICAgICAvLyBjb3JyZWN0IGRpcmVjdG9yeS4KLSAgICAgICAgbUJhc2VTdGF0ZURpciA9IG5ldyBGaWxlKEVudmlyb25tZW50LmdldERhdGFEaXJlY3RvcnkoKSwgImJhY2t1cCIpOworICAgICAgICBtQmFzZVN0YXRlRGlyID0gbmV3IEZpbGUoRW52aXJvbm1lbnQuZ2V0U2VjdXJlRGF0YURpcmVjdG9yeSgpLCAiYmFja3VwIik7CiAgICAgICAgIG1CYXNlU3RhdGVEaXIubWtkaXJzKCk7CiAgICAgICAgIG1EYXRhRGlyID0gRW52aXJvbm1lbnQuZ2V0RG93bmxvYWRDYWNoZURpcmVjdG9yeSgpOwogCmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9CYXR0ZXJ5U2VydmljZS5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvQmF0dGVyeVNlcnZpY2UuamF2YQppbmRleCA1Y2Y2MWJkLi5lNmMzMmQ5IDEwMDY0NAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9CYXR0ZXJ5U2VydmljZS5qYXZhCisrKyBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL0JhdHRlcnlTZXJ2aWNlLmphdmEKQEAgLTIxMCw5ICsyMTAsNiBAQAogICAgICAgICBib29sZWFuIGxvZ091dGxpZXIgPSBmYWxzZTsKICAgICAgICAgbG9uZyBkaXNjaGFyZ2VEdXJhdGlvbiA9IDA7CiAKLSAgICAgICAgc2h1dGRvd25JZk5vUG93ZXIoKTsKLSAgICAgICAgc2h1dGRvd25JZk92ZXJUZW1wKCk7Ci0KICAgICAgICAgbUJhdHRlcnlMZXZlbENyaXRpY2FsID0gbUJhdHRlcnlMZXZlbCA8PSBDUklUSUNBTF9CQVRURVJZX0xFVkVMOwogICAgICAgICBpZiAobUFjT25saW5lKSB7CiAgICAgICAgICAgICBtUGx1Z1R5cGUgPSBCYXR0ZXJ5TWFuYWdlci5CQVRURVJZX1BMVUdHRURfQUM7CkBAIC0yMjEsNiArMjE4LDE5IEBACiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtUGx1Z1R5cGUgPSBCQVRURVJZX1BMVUdHRURfTk9ORTsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gTGV0IHRoZSBiYXR0ZXJ5IHN0YXRzIGtlZXAgdHJhY2sgb2YgdGhlIGN1cnJlbnQgbGV2ZWwuCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBtQmF0dGVyeVN0YXRzLnNldEJhdHRlcnlTdGF0ZShtQmF0dGVyeVN0YXR1cywgbUJhdHRlcnlIZWFsdGgsCisgICAgICAgICAgICAgICAgICAgIG1QbHVnVHlwZSwgbUJhdHRlcnlMZXZlbCwgbUJhdHRlcnlUZW1wZXJhdHVyZSwKKyAgICAgICAgICAgICAgICAgICAgbUJhdHRlcnlWb2x0YWdlKTsKKyAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIC8vIFNob3VsZCBuZXZlciBoYXBwZW4uCisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHNodXRkb3duSWZOb1Bvd2VyKCk7CisgICAgICAgIHNodXRkb3duSWZPdmVyVGVtcCgpOworCiAgICAgICAgIGlmIChtQmF0dGVyeVN0YXR1cyAhPSBtTGFzdEJhdHRlcnlTdGF0dXMgfHwKICAgICAgICAgICAgICAgICBtQmF0dGVyeUhlYWx0aCAhPSBtTGFzdEJhdHRlcnlIZWFsdGggfHwKICAgICAgICAgICAgICAgICBtQmF0dGVyeVByZXNlbnQgIT0gbUxhc3RCYXR0ZXJ5UHJlc2VudCB8fApAQCAtMjYzLDE2ICsyNzMsNiBAQAogICAgICAgICAgICAgICAgIEV2ZW50TG9nLndyaXRlRXZlbnQoRXZlbnRMb2dUYWdzLkJBVFRFUllfTEVWRUwsCiAgICAgICAgICAgICAgICAgICAgICAgICBtQmF0dGVyeUxldmVsLCBtQmF0dGVyeVZvbHRhZ2UsIG1CYXR0ZXJ5VGVtcGVyYXR1cmUpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG1CYXR0ZXJ5TGV2ZWwgIT0gbUxhc3RCYXR0ZXJ5TGV2ZWwgJiYgbVBsdWdUeXBlID09IEJBVFRFUllfUExVR0dFRF9OT05FKSB7Ci0gICAgICAgICAgICAgICAgLy8gSWYgdGhlIGJhdHRlcnkgbGV2ZWwgaGFzIGNoYW5nZWQgYW5kIHdlIGFyZSBvbiBiYXR0ZXJ5LCB1cGRhdGUgdGhlIGN1cnJlbnQgbGV2ZWwuCi0gICAgICAgICAgICAgICAgLy8gVGhpcyBpcyB1c2VkIGZvciBkaXNjaGFyZ2UgY3ljbGUgdHJhY2tpbmcgc28gdGhpcyBzaG91bGRuJ3QgYmUgdXBkYXRlZCB3aGlsZSB0aGUKLSAgICAgICAgICAgICAgICAvLyBiYXR0ZXJ5IGlzIGNoYXJnaW5nLgotICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIG1CYXR0ZXJ5U3RhdHMucmVjb3JkQ3VycmVudExldmVsKG1CYXR0ZXJ5TGV2ZWwpOwotICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFNob3VsZCBuZXZlciBoYXBwZW4uCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKG1CYXR0ZXJ5TGV2ZWxDcml0aWNhbCAmJiAhbUxhc3RCYXR0ZXJ5TGV2ZWxDcml0aWNhbCAmJgogICAgICAgICAgICAgICAgICAgICBtUGx1Z1R5cGUgPT0gQkFUVEVSWV9QTFVHR0VEX05PTkUpIHsKICAgICAgICAgICAgICAgICAvLyBXZSB3YW50IHRvIG1ha2Ugc3VyZSB3ZSBsb2cgZGlzY2hhcmdlIGN5Y2xlIG91dGxpZXJzCkBAIC0zNDIsMTEgKzM0Miw2IEBACiAgICAgICAgIEludGVudCBpbnRlbnQgPSBuZXcgSW50ZW50KEludGVudC5BQ1RJT05fQkFUVEVSWV9DSEFOR0VEKTsKICAgICAgICAgaW50ZW50LmFkZEZsYWdzKEludGVudC5GTEFHX1JFQ0VJVkVSX1JFR0lTVEVSRURfT05MWQogICAgICAgICAgICAgICAgIHwgSW50ZW50LkZMQUdfUkVDRUlWRVJfUkVQTEFDRV9QRU5ESU5HKTsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIG1CYXR0ZXJ5U3RhdHMuc2V0T25CYXR0ZXJ5KG1QbHVnVHlwZSA9PSBCQVRURVJZX1BMVUdHRURfTk9ORSwgbUJhdHRlcnlMZXZlbCk7Ci0gICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAvLyBTaG91bGQgbmV2ZXIgaGFwcGVuLgotICAgICAgICB9CiAKICAgICAgICAgaW50IGljb24gPSBnZXRJY29uKG1CYXR0ZXJ5TGV2ZWwpOwogCmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9JbnB1dEFwcGxpY2F0aW9uLmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9JbnB1dEFwcGxpY2F0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzg0MjBkNAotLS0gL2Rldi9udWxsCisrKyBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL0lucHV0QXBwbGljYXRpb24uamF2YQpAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5zZXJ2ZXI7CisKKy8qKgorICogRGVzY3JpYmVzIGlucHV0LXJlbGF0ZWQgYXBwbGljYXRpb24gcHJvcGVydGllcyBmb3IgdXNlIGJ5IHRoZSBpbnB1dCBkaXNwYXRjaGVyLgorICogCisgKiBAaGlkZQorICovCitwdWJsaWMgZmluYWwgY2xhc3MgSW5wdXRBcHBsaWNhdGlvbiB7CisgICAgLy8gQXBwbGljYXRpb24gbmFtZS4KKyAgICBwdWJsaWMgU3RyaW5nIG5hbWU7CisgICAgCisgICAgLy8gRGlzcGF0Y2hpbmcgdGltZW91dC4KKyAgICBwdWJsaWMgbG9uZyBkaXNwYXRjaGluZ1RpbWVvdXROYW5vczsKKyAgICAKKyAgICAvLyBUaGUgYXBwbGljYXRpb24gd2luZG93IHRva2VuLgorICAgIHB1YmxpYyBPYmplY3QgdG9rZW47Cit9CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9JbnB1dERldmljZS5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvSW5wdXREZXZpY2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDE0YjY5Zi4uMDAwMDAwMAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9JbnB1dERldmljZS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTAyNSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotcGFja2FnZSBjb20uYW5kcm9pZC5zZXJ2ZXI7Ci0KLWltcG9ydCBhbmRyb2lkLnV0aWwuU2xvZzsKLWltcG9ydCBhbmRyb2lkLnZpZXcuRGlzcGxheTsKLWltcG9ydCBhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQ7Ci1pbXBvcnQgYW5kcm9pZC52aWV3LlN1cmZhY2U7Ci1pbXBvcnQgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXJQb2xpY3k7Ci0KLWltcG9ydCBqYXZhLmlvLlByaW50V3JpdGVyOwotCi1wdWJsaWMgY2xhc3MgSW5wdXREZXZpY2UgewotICAgIHN0YXRpYyBmaW5hbCBib29sZWFuIERFQlVHX1BPSU5URVJTID0gZmFsc2U7Ci0gICAgc3RhdGljIGZpbmFsIGJvb2xlYW4gREVCVUdfSEFDS1MgPSBmYWxzZTsKLSAgICAKLSAgICAvKiogQW1vdW50IHRoYXQgdHJhY2tiYWxsIG5lZWRzIHRvIG1vdmUgaW4gb3JkZXIgdG8gZ2VuZXJhdGUgYSBrZXkgZXZlbnQuICovCi0gICAgc3RhdGljIGZpbmFsIGludCBUUkFDS0JBTExfTU9WRU1FTlRfVEhSRVNIT0xEID0gNjsKLQotICAgIC8qKiBNYXhpbXVtIG51bWJlciBvZiBwb2ludGVycyB3ZSB3aWxsIHRyYWNrIGFuZCByZXBvcnQuICovCi0gICAgc3RhdGljIGZpbmFsIGludCBNQVhfUE9JTlRFUlMgPSAxMDsKLSAgICAKLSAgICAvKioKLSAgICAgKiBTbG9wIGRpc3RhbmNlIGZvciBqdW1weSBwb2ludGVyIGRldGVjdGlvbi4KLSAgICAgKiBUaGUgdmVydGljYWwgcmFuZ2Ugb2YgdGhlIHNjcmVlbiBkaXZpZGVkIGJ5IHRoaXMgaXMgb3VyIGVwc2lsb24gdmFsdWUuCi0gICAgICovCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEpVTVBZX0VQU0lMT05fRElWSVNPUiA9IDIxMjsKLSAgICAKLSAgICAvKiogTnVtYmVyIG9mIGp1bXB5IHBvaW50cyB0byBkcm9wIGZvciB0b3VjaHNjcmVlbnMgdGhhdCBuZWVkIGl0LiAqLwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBKVU1QWV9UUkFOU0lUSU9OX0RST1BTID0gMzsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgSlVNUFlfRFJPUF9MSU1JVCA9IDM7Ci0gICAgCi0gICAgZmluYWwgaW50IGlkOwotICAgIGZpbmFsIGludCBjbGFzc2VzOwotICAgIGZpbmFsIFN0cmluZyBuYW1lOwotICAgIGZpbmFsIEFic29sdXRlSW5mbyBhYnNYOwotICAgIGZpbmFsIEFic29sdXRlSW5mbyBhYnNZOwotICAgIGZpbmFsIEFic29sdXRlSW5mbyBhYnNQcmVzc3VyZTsKLSAgICBmaW5hbCBBYnNvbHV0ZUluZm8gYWJzU2l6ZTsKLSAgICAKLSAgICBsb25nIG1LZXlEb3duVGltZSA9IDA7Ci0gICAgaW50IG1NZXRhS2V5c1N0YXRlID0gMDsKLSAgICAKLSAgICAvLyBGb3IgdXNlIGJ5IEtleUlucHV0UXVldWUgZm9yIGtlZXBpbmcgdHJhY2sgb2YgdGhlIGN1cnJlbnQgdG91Y2gKLSAgICAvLyBkYXRhIGluIHRoZSBvbGQgbm9uLW11bHRpLXRvdWNoIHByb3RvY29sLgotICAgIGZpbmFsIGludFtdIGN1clRvdWNoVmFscyA9IG5ldyBpbnRbTW90aW9uRXZlbnQuTlVNX1NBTVBMRV9EQVRBICogMl07Ci0gICAgCi0gICAgZmluYWwgTW90aW9uU3RhdGUgbUFicyA9IG5ldyBNb3Rpb25TdGF0ZSgwLCAwKTsKLSAgICBmaW5hbCBNb3Rpb25TdGF0ZSBtUmVsID0gbmV3IE1vdGlvblN0YXRlKFRSQUNLQkFMTF9NT1ZFTUVOVF9USFJFU0hPTEQsCi0gICAgICAgICAgICBUUkFDS0JBTExfTU9WRU1FTlRfVEhSRVNIT0xEKTsKLSAgICAKLSAgICBzdGF0aWMgY2xhc3MgTW90aW9uU3RhdGUgewotICAgICAgICBpbnQgeFByZWNpc2lvbjsKLSAgICAgICAgaW50IHlQcmVjaXNpb247Ci0gICAgICAgIGZsb2F0IHhNb3ZlU2NhbGU7Ci0gICAgICAgIGZsb2F0IHlNb3ZlU2NhbGU7Ci0gICAgICAgIE1vdGlvbkV2ZW50IGN1cnJlbnRNb3ZlID0gbnVsbDsKLSAgICAgICAgYm9vbGVhbiBjaGFuZ2VkID0gZmFsc2U7Ci0gICAgICAgIGJvb2xlYW4gZXZlckNoYW5nZWQgPSBmYWxzZTsKLSAgICAgICAgbG9uZyBtRG93blRpbWUgPSAwOwotICAgICAgICAKLSAgICAgICAgLy8gVGhlIGN1cnJlbnRseSBhc3NpZ25lZCBwb2ludGVyIElEcywgY29ycmVzcG9uZGluZyB0byB0aGUgbGFzdCBkYXRhLgotICAgICAgICBpbnRbXSBtUG9pbnRlcklkcyA9IG5ldyBpbnRbTUFYX1BPSU5URVJTXTsKLSAgICAgICAgCi0gICAgICAgIC8vIFRoaXMgaXMgdGhlIGxhc3QgZ2VuZXJhdGVkIHBvaW50ZXIgZGF0YSwgb3JkZXJlZCB0byBtYXRjaAotICAgICAgICAvLyBtUG9pbnRlcklkcy4KLSAgICAgICAgYm9vbGVhbiBtU2tpcExhc3RQb2ludGVyczsKLSAgICAgICAgaW50IG1MYXN0TnVtUG9pbnRlcnMgPSAwOwotICAgICAgICBmaW5hbCBpbnRbXSBtTGFzdERhdGEgPSBuZXcgaW50W01vdGlvbkV2ZW50Lk5VTV9TQU1QTEVfREFUQSAqIE1BWF9QT0lOVEVSU107Ci0gICAgICAgIAotICAgICAgICAvLyBUaGlzIGlzIHRoZSBuZXh0IHNldCBvZiBwb2ludGVyIGRhdGEgYmVpbmcgZ2VuZXJhdGVkLiAgSXQgaXMgbm90Ci0gICAgICAgIC8vIGluIGFueSBrbm93biBvcmRlciwgYW5kIHdpbGwgYmUgcHJvcGFnYXRlZCBpbiB0byBtTGFzdERhdGEKLSAgICAgICAgLy8gYXMgcGFydCBvZiBtYXBwaW5nIGl0IHRvIHRoZSBhcHByb3ByaWF0ZSBwb2ludGVyIElEcy4KLSAgICAgICAgLy8gTm90ZSB0aGF0IHdlIGhhdmUgb25lIGV4dHJhIHNhbXBsZSBvZiBkYXRhIGhlcmUsIHRvIGhlbHAgY2xpZW50cwotICAgICAgICAvLyBhdm9pZCBkb2luZyBib3VuZHMgY2hlY2tpbmcuCi0gICAgICAgIGludCBtTmV4dE51bVBvaW50ZXJzID0gMDsKLSAgICAgICAgZmluYWwgaW50W10gbU5leHREYXRhID0gbmV3IGludFsoTW90aW9uRXZlbnQuTlVNX1NBTVBMRV9EQVRBICogTUFYX1BPSU5URVJTKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgTW90aW9uRXZlbnQuTlVNX1NBTVBMRV9EQVRBXTsKLSAgICAgICAgCi0gICAgICAgIC8vIFVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgd2UgZHJvcHBlZCBiYWQgZGF0YSwgdG8gYXZvaWQgZG9pbmcKLSAgICAgICAgLy8gaXQgcmVwZWF0ZWRseS4KLSAgICAgICAgZmluYWwgYm9vbGVhbltdIG1Ecm9wcGVkQmFkUG9pbnQgPSBuZXcgYm9vbGVhbltNQVhfUE9JTlRFUlNdOwotCi0gICAgICAgIC8vIFVzZWQgdG8gY291bnQgdGhlIG51bWJlciBvZiBqdW1weSBwb2ludHMgZHJvcHBlZC4KLSAgICAgICAgcHJpdmF0ZSBpbnQgbUp1bXB5UG9pbnRzRHJvcHBlZCA9IDA7Ci0gICAgICAgIAotICAgICAgICAvLyBVc2VkIHRvIHBlcmZvcm0gYXZlcmFnaW5nIG9mIHJlcG9ydGVkIGNvb3JkaW5hdGVzLCB0byBzbW9vdGgKLSAgICAgICAgLy8gdGhlIGRhdGEgYW5kIGZpbHRlciBvdXQgdHJhbnNpZW50cyBkdXJpbmcgYSByZWxlYXNlLgotICAgICAgICBzdGF0aWMgZmluYWwgaW50IEhJU1RPUllfU0laRSA9IDU7Ci0gICAgICAgIGludFtdIG1IaXN0b3J5RGF0YVN0YXJ0ID0gbmV3IGludFtNQVhfUE9JTlRFUlNdOwotICAgICAgICBpbnRbXSBtSGlzdG9yeURhdGFFbmQgPSBuZXcgaW50W01BWF9QT0lOVEVSU107Ci0gICAgICAgIGZpbmFsIGludFtdIG1IaXN0b3J5RGF0YSA9IG5ldyBpbnRbKE1vdGlvbkV2ZW50Lk5VTV9TQU1QTEVfREFUQSAqIE1BWF9QT0lOVEVSUykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIEhJU1RPUllfU0laRV07Ci0gICAgICAgIGZpbmFsIGludFtdIG1BdmVyYWdlZERhdGEgPSBuZXcgaW50W01vdGlvbkV2ZW50Lk5VTV9TQU1QTEVfREFUQSAqIE1BWF9QT0lOVEVSU107Ci0gICAgICAgIAotICAgICAgICAvLyBUZW1wb3JhcnkgZGF0YSBzdHJ1Y3R1cmVzIGZvciBkb2luZyB0aGUgcG9pbnRlciBJRCBtYXBwaW5nLgotICAgICAgICBmaW5hbCBpbnRbXSBtTGFzdDJOZXh0ID0gbmV3IGludFtNQVhfUE9JTlRFUlNdOwotICAgICAgICBmaW5hbCBpbnRbXSBtTmV4dDJMYXN0ID0gbmV3IGludFtNQVhfUE9JTlRFUlNdOwotICAgICAgICBmaW5hbCBsb25nW10gbU5leHQyTGFzdERpc3RhbmNlID0gbmV3IGxvbmdbTUFYX1BPSU5URVJTXTsKLSAgICAgICAgCi0gICAgICAgIC8vIFRlbXBvcmFyeSBkYXRhIHN0cnVjdHVyZSBmb3IgZ2VuZXJhdGluZyB0aGUgZmluYWwgbW90aW9uIGRhdGEuCi0gICAgICAgIGZpbmFsIGZsb2F0W10gbVJlcG9ydERhdGEgPSBuZXcgZmxvYXRbTW90aW9uRXZlbnQuTlVNX1NBTVBMRV9EQVRBICogTUFYX1BPSU5URVJTXTsKLSAgICAgICAgCi0gICAgICAgIC8vIFRoaXMgaXMgbm90IHVzZWQgaGVyZSwgYnV0IGNhbiBiZSB1c2VkIGJ5IGNhbGxlcnMgZm9yIHN0YXRlIHRyYWNraW5nLgotICAgICAgICBpbnQgbUFkZGluZ1BvaW50ZXJPZmZzZXQgPSAwOwotICAgICAgICBmaW5hbCBib29sZWFuW10gbURvd24gPSBuZXcgYm9vbGVhbltNQVhfUE9JTlRFUlNdOwotICAgICAgICAKLSAgICAgICAgdm9pZCBkdW1wSW50QXJyYXkoUHJpbnRXcml0ZXIgcHcsIGludFtdIGFycmF5KSB7Ci0gICAgICAgICAgICBwdy5wcmludCgiWyIpOwotICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPGFycmF5Lmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGkgPiAwKSBwdy5wcmludCgiLCAiKTsKLSAgICAgICAgICAgICAgICBwdy5wcmludChhcnJheVtpXSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwdy5wcmludCgiXSIpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB2b2lkIGR1bXBCb29sZWFuQXJyYXkoUHJpbnRXcml0ZXIgcHcsIGJvb2xlYW5bXSBhcnJheSkgewotICAgICAgICAgICAgcHcucHJpbnQoIlsiKTsKLSAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxhcnJheS5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgICAgIGlmIChpID4gMCkgcHcucHJpbnQoIiwgIik7Ci0gICAgICAgICAgICAgICAgcHcucHJpbnQoYXJyYXlbaV0gPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHB3LnByaW50KCJdIik7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHZvaWQgZHVtcChQcmludFdyaXRlciBwdywgU3RyaW5nIHByZWZpeCkgewotICAgICAgICAgICAgcHcucHJpbnQocHJlZml4KTsgcHcucHJpbnQoInhQcmVjaXNpb249Iik7IHB3LnByaW50KHhQcmVjaXNpb24pOwotICAgICAgICAgICAgICAgICAgICBwdy5wcmludCgiIHlQcmVjaXNpb249Iik7IHB3LnByaW50bG4oeVByZWNpc2lvbik7Ci0gICAgICAgICAgICBwdy5wcmludChwcmVmaXgpOyBwdy5wcmludCgieE1vdmVTY2FsZT0iKTsgcHcucHJpbnQoeE1vdmVTY2FsZSk7Ci0gICAgICAgICAgICAgICAgICAgIHB3LnByaW50KCIgeU1vdmVTY2FsZT0iKTsgcHcucHJpbnRsbih5TW92ZVNjYWxlKTsKLSAgICAgICAgICAgIGlmIChjdXJyZW50TW92ZSAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgcHcucHJpbnQocHJlZml4KTsgcHcucHJpbnQoImN1cnJlbnRNb3ZlPSIpOyBwdy5wcmludGxuKGN1cnJlbnRNb3ZlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChjaGFuZ2VkIHx8IG1Eb3duVGltZSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgcHcucHJpbnQocHJlZml4KTsgcHcucHJpbnQoImNoYW5nZWQ9Iik7IHB3LnByaW50KGNoYW5nZWQpOwotICAgICAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoIiBtRG93blRpbWU9Iik7IHB3LnByaW50bG4obURvd25UaW1lKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHB3LnByaW50KHByZWZpeCk7IHB3LnByaW50KCJtUG9pbnRlcklkcz0iKTsgZHVtcEludEFycmF5KHB3LCBtUG9pbnRlcklkcyk7Ci0gICAgICAgICAgICAgICAgICAgIHB3LnByaW50bG4oIiIpOwotICAgICAgICAgICAgaWYgKG1Ta2lwTGFzdFBvaW50ZXJzIHx8IG1MYXN0TnVtUG9pbnRlcnMgIT0gMCkgewotICAgICAgICAgICAgICAgIHB3LnByaW50KHByZWZpeCk7IHB3LnByaW50KCJtU2tpcExhc3RQb2ludGVycz0iKTsgcHcucHJpbnQobVNraXBMYXN0UG9pbnRlcnMpOwotICAgICAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoIiBtTGFzdE51bVBvaW50ZXJzPSIpOyBwdy5wcmludGxuKG1MYXN0TnVtUG9pbnRlcnMpOwotICAgICAgICAgICAgICAgIHB3LnByaW50KHByZWZpeCk7IHB3LnByaW50KCJtTGFzdERhdGE9Iik7IGR1bXBJbnRBcnJheShwdywgbUxhc3REYXRhKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB3LnByaW50bG4oIiIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG1OZXh0TnVtUG9pbnRlcnMgIT0gMCkgewotICAgICAgICAgICAgICAgIHB3LnByaW50KHByZWZpeCk7IHB3LnByaW50KCJtTmV4dE51bVBvaW50ZXJzPSIpOyBwdy5wcmludGxuKG1OZXh0TnVtUG9pbnRlcnMpOwotICAgICAgICAgICAgICAgIHB3LnByaW50KHByZWZpeCk7IHB3LnByaW50KCJtTmV4dERhdGE9Iik7IGR1bXBJbnRBcnJheShwdywgbU5leHREYXRhKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB3LnByaW50bG4oIiIpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcHcucHJpbnQocHJlZml4KTsgcHcucHJpbnQoIm1Ecm9wcGVkQmFkUG9pbnQ9Iik7Ci0gICAgICAgICAgICAgICAgICAgIGR1bXBCb29sZWFuQXJyYXkocHcsIG1Ecm9wcGVkQmFkUG9pbnQpOyBwdy5wcmludGxuKCIiKTsKLSAgICAgICAgICAgIHB3LnByaW50KHByZWZpeCk7IHB3LnByaW50KCJtQWRkaW5nUG9pbnRlck9mZnNldD0iKTsgcHcucHJpbnRsbihtQWRkaW5nUG9pbnRlck9mZnNldCk7Ci0gICAgICAgICAgICBwdy5wcmludChwcmVmaXgpOyBwdy5wcmludCgibURvd249Iik7Ci0gICAgICAgICAgICAgICAgICAgIGR1bXBCb29sZWFuQXJyYXkocHcsIG1Eb3duKTsgcHcucHJpbnRsbigiIik7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIE1vdGlvblN0YXRlKGludCBteCwgaW50IG15KSB7Ci0gICAgICAgICAgICB4UHJlY2lzaW9uID0gbXg7Ci0gICAgICAgICAgICB5UHJlY2lzaW9uID0gbXk7Ci0gICAgICAgICAgICB4TW92ZVNjYWxlID0gbXggIT0gMCA/ICgxLjBmL214KSA6IDEuMGY7Ci0gICAgICAgICAgICB5TW92ZVNjYWxlID0gbXkgIT0gMCA/ICgxLjBmL215KSA6IDEuMGY7Ci0gICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8TUFYX1BPSU5URVJTOyBpKyspIHsKLSAgICAgICAgICAgICAgICBtUG9pbnRlcklkc1tpXSA9IGk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIC8qKgotICAgICAgICAgKiBTcGVjaWFsIGhhY2sgZm9yIGRldmljZXMgdGhhdCBoYXZlIGJhZCBzY3JlZW4gZGF0YTogaWYgb25lIG9mIHRoZQotICAgICAgICAgKiBwb2ludHMgaGFzIG1vdmVkIG1vcmUgdGhhbiBhIHNjcmVlbiBoZWlnaHQgZnJvbSB0aGUgbGFzdCBwb3NpdGlvbiwKLSAgICAgICAgICogdGhlbiBkcm9wIGl0LgotICAgICAgICAgKi8KLSAgICAgICAgdm9pZCBkcm9wQmFkUG9pbnQoSW5wdXREZXZpY2UgZGV2KSB7Ci0gICAgICAgICAgICAvLyBXZSBzaG91bGQgYWx3YXlzIGhhdmUgYWJzWSwgYnV0IGxldCdzIGJlIHBhcmFub2lkLgotICAgICAgICAgICAgaWYgKGRldi5hYnNZID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBEb24ndCBkbyBhbnl0aGluZyBpZiBhIGZpbmdlciBpcyBnb2luZyBkb3duIG9yIHVwLiAgV2UgcnVuCi0gICAgICAgICAgICAvLyBoZXJlIGJlZm9yZSBhc3NpZ25pbmcgcG9pbnRlciBJRHMsIHNvIHRoZXJlIGlzbid0IGEgZ29vZAotICAgICAgICAgICAgLy8gd2F5IHRvIGRvIHBlci1maW5nZXIgbWF0Y2hpbmcuCi0gICAgICAgICAgICBpZiAobU5leHROdW1Qb2ludGVycyAhPSBtTGFzdE51bVBvaW50ZXJzKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBXZSBjb25zaWRlciBhIHNpbmdsZSBtb3ZlbWVudCBhY3Jvc3MgbW9yZSB0aGFuIGEgNy8xNiBvZgotICAgICAgICAgICAgLy8gdGhlIGxvbmcgc2l6ZSBvZiB0aGUgc2NyZWVuIHRvIGJlIGJhZC4gIFRoaXMgd2FzIGEgbWFnaWMgdmFsdWUKLSAgICAgICAgICAgIC8vIGRldGVybWluZWQgYnkgbG9va2luZyBhdCB0aGUgbWF4aW11bSBkaXN0YW5jZSBpdCBpcyBmZWFzaWJsZQotICAgICAgICAgICAgLy8gdG8gYWN0dWFsbHkgbW92ZSBpbiBvbmUgc2FtcGxlLgotICAgICAgICAgICAgZmluYWwgaW50IG1heER5ID0gKChkZXYuYWJzWS5tYXhWYWx1ZS1kZXYuYWJzWS5taW5WYWx1ZSkqNykvMTY7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIExvb2sgdGhyb3VnaCBhbGwgbmV3IHBvaW50cyBhbmQgc2VlIGlmIGFueSBhcmUgZmFydGhlciB0aGFuCi0gICAgICAgICAgICAvLyBhY2NlcHRhYmxlIGZyb20gYWxsIHByZXZpb3VzIHBvaW50cy4KLSAgICAgICAgICAgIGZvciAoaW50IGk9bU5leHROdW1Qb2ludGVycy0xOyBpPj0wOyBpLS0pIHsKLSAgICAgICAgICAgICAgICBmaW5hbCBpbnQgaW9mZiA9IGkgKiBNb3Rpb25FdmVudC5OVU1fU0FNUExFX0RBVEE7Ci0gICAgICAgICAgICAgICAgLy9maW5hbCBpbnQgeCA9IG1OZXh0RGF0YVtpb2ZmICsgTW90aW9uRXZlbnQuU0FNUExFX1hdOwotICAgICAgICAgICAgICAgIGZpbmFsIGludCB5ID0gbU5leHREYXRhW2lvZmYgKyBNb3Rpb25FdmVudC5TQU1QTEVfWV07Ci0gICAgICAgICAgICAgICAgaWYgKERFQlVHX0hBQ0tTKSBTbG9nLnYoIklucHV0RGV2aWNlIiwgIkxvb2tpbmcgYXQgbmV4dCBwb2ludCAjIiArIGkgKyAiOiB5PSIgKyB5KTsKLSAgICAgICAgICAgICAgICBib29sZWFuIGRyb3BwZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBpZiAoIW1Ecm9wcGVkQmFkUG9pbnRbaV0gJiYgbUxhc3ROdW1Qb2ludGVycyA+IDApIHsKLSAgICAgICAgICAgICAgICAgICAgZHJvcHBlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGludCBjbG9zZXN0RHkgPSAtMTsKLSAgICAgICAgICAgICAgICAgICAgaW50IGNsb3Nlc3RZID0gLTE7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFdlIHdpbGwgZHJvcCB0aGlzIG5ldyBwb2ludCBpZiBpdCBpcyBzdWZmaWNpZW50bHkKLSAgICAgICAgICAgICAgICAgICAgLy8gZmFyIGF3YXkgZnJvbSAtYWxsLSBsYXN0IHBvaW50cy4KLSAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaj1tTGFzdE51bVBvaW50ZXJzLTE7IGo+PTA7IGotLSkgewotICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgaW50IGpvZmYgPSBqICogTW90aW9uRXZlbnQuTlVNX1NBTVBMRV9EQVRBOwotICAgICAgICAgICAgICAgICAgICAgICAgLy9pbnQgZHggPSB4IC0gbUxhc3REYXRhW2pvZmYgKyBNb3Rpb25FdmVudC5TQU1QTEVfWF07Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgZHkgPSB5IC0gbUxhc3REYXRhW2pvZmYgKyBNb3Rpb25FdmVudC5TQU1QTEVfWV07Ci0gICAgICAgICAgICAgICAgICAgICAgICAvL2lmIChkeCA8IDApIGR4ID0gLWR4OwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGR5IDwgMCkgZHkgPSAtZHk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfSEFDS1MpIFNsb2cudigiSW5wdXREZXZpY2UiLCAiQ29tcGFyaW5nIHdpdGggbGFzdCBwb2ludCAjIiArIGoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiOiB5PSIgKyBtTGFzdERhdGFbam9mZl0gKyAiIGR5PSIgKyBkeSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZHkgPCBtYXhEeSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BwZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2xvc2VzdER5IDwgMCB8fCBkeSA8IGNsb3Nlc3REeSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3Nlc3REeSA9IGR5OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsb3Nlc3RZID0gbUxhc3REYXRhW2pvZmYgKyBNb3Rpb25FdmVudC5TQU1QTEVfWV07Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKGRyb3BwZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BwZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgU2xvZy5pKCJJbnB1dERldmljZSIsICJEcm9wcGluZyBiYWQgcG9pbnQgIyIgKyBpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIjogbmV3WT0iICsgeSArICIgY2xvc2VzdER5PSIgKyBjbG9zZXN0RHkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiIG1heER5PSIgKyBtYXhEeSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtTmV4dERhdGFbaW9mZiArIE1vdGlvbkV2ZW50LlNBTVBMRV9ZXSA9IGNsb3Nlc3RZOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbURyb3BwZWRCYWRQb2ludFtpXSA9IGRyb3BwZWQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHZvaWQgZHJvcEp1bXB5UG9pbnQoSW5wdXREZXZpY2UgZGV2KSB7Ci0gICAgICAgICAgICAvLyBXZSBzaG91bGQgYWx3YXlzIGhhdmUgYWJzWSwgYnV0IGxldCdzIGJlIHBhcmFub2lkLgotICAgICAgICAgICAgaWYgKGRldi5hYnNZID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBmaW5hbCBpbnQganVtcHlFcHNpbG9uID0gZGV2LmFic1kucmFuZ2UgLyBKVU1QWV9FUFNJTE9OX0RJVklTT1I7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGZpbmFsIGludCBuZXh0TnVtUG9pbnRlcnMgPSBtTmV4dE51bVBvaW50ZXJzOwotICAgICAgICAgICAgZmluYWwgaW50IGxhc3ROdW1Qb2ludGVycyA9IG1MYXN0TnVtUG9pbnRlcnM7Ci0gICAgICAgICAgICBmaW5hbCBpbnRbXSBuZXh0RGF0YSA9IG1OZXh0RGF0YTsKLSAgICAgICAgICAgIGZpbmFsIGludFtdIGxhc3REYXRhID0gbUxhc3REYXRhOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAobmV4dE51bVBvaW50ZXJzICE9IG1MYXN0TnVtUG9pbnRlcnMpIHsKLSAgICAgICAgICAgICAgICBpZiAoREVCVUdfSEFDS1MpIHsKLSAgICAgICAgICAgICAgICAgICAgU2xvZy5kKCJJbnB1dERldmljZSIsICJEaWZmZXJlbnQgcG9pbnRlciBjb3VudCAiICsgbGFzdE51bVBvaW50ZXJzICsgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAtPiAiICsgbmV4dE51bVBvaW50ZXJzKTsKLSAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuZXh0TnVtUG9pbnRlcnM7IGkrKykgewotICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlvZmYgPSBpICogTW90aW9uRXZlbnQuTlVNX1NBTVBMRV9EQVRBOwotICAgICAgICAgICAgICAgICAgICAgICAgU2xvZy5kKCJJbnB1dERldmljZSIsICJQb2ludGVyICIgKyBpICsgIiAoIiArIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtTmV4dERhdGFbaW9mZiArIE1vdGlvbkV2ZW50LlNBTVBMRV9YXSArICIsICIgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtTmV4dERhdGFbaW9mZiArIE1vdGlvbkV2ZW50LlNBTVBMRV9ZXSArICIpIik7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgLy8gSnVzdCBkcm9wIHRoZSBmaXJzdCBmZXcgZXZlbnRzIGdvaW5nIGZyb20gMSB0byAyIHBvaW50ZXJzLgotICAgICAgICAgICAgICAgIC8vIFRoZXkncmUgYmFkIG9mdGVuIGVub3VnaCB0aGF0IHRoZXkncmUgbm90IHdvcnRoIGNvbnNpZGVyaW5nLgotICAgICAgICAgICAgICAgIGlmIChsYXN0TnVtUG9pbnRlcnMgPT0gMSAmJiBuZXh0TnVtUG9pbnRlcnMgPT0gMgotICAgICAgICAgICAgICAgICAgICAgICAgJiYgbUp1bXB5UG9pbnRzRHJvcHBlZCA8IEpVTVBZX1RSQU5TSVRJT05fRFJPUFMpIHsKLSAgICAgICAgICAgICAgICAgICAgbU5leHROdW1Qb2ludGVycyA9IDE7Ci0gICAgICAgICAgICAgICAgICAgIG1KdW1weVBvaW50c0Ryb3BwZWQrKzsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxhc3ROdW1Qb2ludGVycyA9PSAyICYmIG5leHROdW1Qb2ludGVycyA9PSAxCi0gICAgICAgICAgICAgICAgICAgICAgICAmJiBtSnVtcHlQb2ludHNEcm9wcGVkIDwgSlVNUFlfVFJBTlNJVElPTl9EUk9QUykgewotICAgICAgICAgICAgICAgICAgICAvLyBUaGUgZXZlbnQgd2hlbiB3ZSBnbyBmcm9tIDIgLT4gMSB0ZW5kcyB0byBiZSBtZXNzZWQgdXAgdG9vCi0gICAgICAgICAgICAgICAgICAgIFN5c3RlbS5hcnJheWNvcHkobGFzdERhdGEsIDAsIG5leHREYXRhLCAwLCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0TnVtUG9pbnRlcnMgKiBNb3Rpb25FdmVudC5OVU1fU0FNUExFX0RBVEEpOwotICAgICAgICAgICAgICAgICAgICBtTmV4dE51bVBvaW50ZXJzID0gbGFzdE51bVBvaW50ZXJzOwotICAgICAgICAgICAgICAgICAgICBtSnVtcHlQb2ludHNEcm9wcGVkKys7Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfSEFDS1MpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbU5leHROdW1Qb2ludGVyczsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGlvZmYgPSBpICogTW90aW9uRXZlbnQuTlVNX1NBTVBMRV9EQVRBOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNsb2cuZCgiSW5wdXREZXZpY2UiLCAiUG9pbnRlciAiICsgaSArICIgcmVwbGFjZWQgKCIgKyAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1OZXh0RGF0YVtpb2ZmICsgTW90aW9uRXZlbnQuU0FNUExFX1hdICsgIiwgIiArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtTmV4dERhdGFbaW9mZiArIE1vdGlvbkV2ZW50LlNBTVBMRV9ZXSArICIpIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBtSnVtcHlQb2ludHNEcm9wcGVkID0gMDsKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19IQUNLUykgewotICAgICAgICAgICAgICAgICAgICAgICAgU2xvZy5kKCJJbnB1dERldmljZSIsICJUcmFuc2l0aW9uIC0gZHJvcCBsaW1pdCByZXNldCIpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gQSAnanVtcHknIHBvaW50IGlzIG9uZSB3aGVyZSB0aGUgY29vcmRpbmF0ZSB2YWx1ZSBmb3Igb25lIGF4aXMKLSAgICAgICAgICAgIC8vIGhhcyBqdW1wZWQgdG8gdGhlIG90aGVyIHBvaW50ZXIncyBsb2NhdGlvbi4gTm8gbmVlZCB0byBkbyBhbnl0aGluZwotICAgICAgICAgICAgLy8gZWxzZSBpZiB3ZSBvbmx5IGhhdmUgb25lIHBvaW50ZXIuCi0gICAgICAgICAgICBpZiAobmV4dE51bVBvaW50ZXJzIDwgMikgewotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgaW50IGJhZFBvaW50ZXJJbmRleCA9IC0xOwotICAgICAgICAgICAgaW50IGJhZFBvaW50ZXJSZXBsYWNlWFdpdGggPSAwOwotICAgICAgICAgICAgaW50IGJhZFBvaW50ZXJSZXBsYWNlWVdpdGggPSAwOwotICAgICAgICAgICAgaW50IGJhZFBvaW50ZXJEaXN0YW5jZSA9IEludGVnZXIuTUlOX1ZBTFVFOwotICAgICAgICAgICAgZm9yIChpbnQgaSA9IG5leHROdW1Qb2ludGVycyAtIDE7IGkgPj0gMDsgaS0tKSB7Ci0gICAgICAgICAgICAgICAgYm9vbGVhbiBkcm9weCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIGJvb2xlYW4gZHJvcHkgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAvLyBMaW1pdCBob3cgbWFueSB0aW1lcyBhIGp1bXB5IHBvaW50IGNhbiBnZXQgZHJvcHBlZC4KLSAgICAgICAgICAgICAgICBpZiAobUp1bXB5UG9pbnRzRHJvcHBlZCA8IEpVTVBZX0RST1BfTElNSVQpIHsKLSAgICAgICAgICAgICAgICAgICAgZmluYWwgaW50IGlvZmYgPSBpICogTW90aW9uRXZlbnQuTlVNX1NBTVBMRV9EQVRBOwotICAgICAgICAgICAgICAgICAgICBmaW5hbCBpbnQgeCA9IG5leHREYXRhW2lvZmYgKyBNb3Rpb25FdmVudC5TQU1QTEVfWF07Ci0gICAgICAgICAgICAgICAgICAgIGZpbmFsIGludCB5ID0gbmV4dERhdGFbaW9mZiArIE1vdGlvbkV2ZW50LlNBTVBMRV9ZXTsKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19IQUNLUykgewotICAgICAgICAgICAgICAgICAgICAgICAgU2xvZy5kKCJJbnB1dERldmljZSIsICJQb2ludCAiICsgaSArICIgKCIgKyB4ICsgIiwgIiArIHkgKyAiKSIpOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgYSB0b3VjaCBwb2ludCBpcyB0b28gY2xvc2UgdG8gYW5vdGhlcidzIGNvb3JkaW5hdGVzCi0gICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgbmV4dE51bVBvaW50ZXJzICYmICFkcm9weCAmJiAhZHJvcHk7IGorKykgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGogPT0gaSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBpbnQgam9mZiA9IGogKiBNb3Rpb25FdmVudC5OVU1fU0FNUExFX0RBVEE7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBpbnQgeE90aGVyID0gbmV4dERhdGFbam9mZiArIE1vdGlvbkV2ZW50LlNBTVBMRV9YXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIGludCB5T3RoZXIgPSBuZXh0RGF0YVtqb2ZmICsgTW90aW9uRXZlbnQuU0FNUExFX1ldOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBkcm9weCA9IE1hdGguYWJzKHggLSB4T3RoZXIpIDw9IGp1bXB5RXBzaWxvbjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRyb3B5ID0gTWF0aC5hYnMoeSAtIHlPdGhlcikgPD0ganVtcHlFcHNpbG9uOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICBpZiAoZHJvcHgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCB4cmVwbGFjZSA9IGxhc3REYXRhW01vdGlvbkV2ZW50LlNBTVBMRV9YXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCB5cmVwbGFjZSA9IGxhc3REYXRhW01vdGlvbkV2ZW50LlNBTVBMRV9ZXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBkaXN0YW5jZSA9IE1hdGguYWJzKHlyZXBsYWNlIC0geSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gMTsgaiA8IGxhc3ROdW1Qb2ludGVyczsgaisrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgaW50IGpvZmYgPSBqICogTW90aW9uRXZlbnQuTlVNX1NBTVBMRV9EQVRBOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsYXN0eSA9IGxhc3REYXRhW2pvZmYgKyBNb3Rpb25FdmVudC5TQU1QTEVfWV07ICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGN1cnJEaXN0ID0gTWF0aC5hYnMobGFzdHkgLSB5KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VyckRpc3QgPCBkaXN0YW5jZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4cmVwbGFjZSA9IGxhc3REYXRhW2pvZmYgKyBNb3Rpb25FdmVudC5TQU1QTEVfWF07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlyZXBsYWNlID0gbGFzdHk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3RhbmNlID0gY3VyckRpc3Q7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgYmFkWERlbHRhID0gTWF0aC5hYnMoeHJlcGxhY2UgLSB4KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiYWRYRGVsdGEgPiBiYWRQb2ludGVyRGlzdGFuY2UpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWRQb2ludGVyRGlzdGFuY2UgPSBiYWRYRGVsdGE7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFkUG9pbnRlckluZGV4ID0gaTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWRQb2ludGVyUmVwbGFjZVhXaXRoID0geHJlcGxhY2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFkUG9pbnRlclJlcGxhY2VZV2l0aCA9IHlyZXBsYWNlOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRyb3B5KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgeHJlcGxhY2UgPSBsYXN0RGF0YVtNb3Rpb25FdmVudC5TQU1QTEVfWF07Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgeXJlcGxhY2UgPSBsYXN0RGF0YVtNb3Rpb25FdmVudC5TQU1QTEVfWV07Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGlzdGFuY2UgPSBNYXRoLmFicyh4cmVwbGFjZSAtIHgpOwotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDE7IGogPCBsYXN0TnVtUG9pbnRlcnM7IGorKykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIGludCBqb2ZmID0gaiAqIE1vdGlvbkV2ZW50Lk5VTV9TQU1QTEVfREFUQTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGFzdHggPSBsYXN0RGF0YVtqb2ZmICsgTW90aW9uRXZlbnQuU0FNUExFX1hdOyAgIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBjdXJyRGlzdCA9IE1hdGguYWJzKGxhc3R4IC0geCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1cnJEaXN0IDwgZGlzdGFuY2UpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeHJlcGxhY2UgPSBsYXN0eDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeXJlcGxhY2UgPSBsYXN0RGF0YVtqb2ZmICsgTW90aW9uRXZlbnQuU0FNUExFX1ldOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXN0YW5jZSA9IGN1cnJEaXN0OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJhZFlEZWx0YSA9IE1hdGguYWJzKHlyZXBsYWNlIC0geSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoYmFkWURlbHRhID4gYmFkUG9pbnRlckRpc3RhbmNlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFkUG9pbnRlckRpc3RhbmNlID0gYmFkWURlbHRhOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhZFBvaW50ZXJJbmRleCA9IGk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFkUG9pbnRlclJlcGxhY2VYV2l0aCA9IHhyZXBsYWNlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhZFBvaW50ZXJSZXBsYWNlWVdpdGggPSB5cmVwbGFjZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChiYWRQb2ludGVySW5kZXggPj0gMCkgewotICAgICAgICAgICAgICAgIGlmIChERUJVR19IQUNLUykgewotICAgICAgICAgICAgICAgICAgICBTbG9nLmQoIklucHV0RGV2aWNlIiwgIlJlcGxhY2luZyBiYWQgcG9pbnRlciAiICsgYmFkUG9pbnRlckluZGV4ICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIHdpdGggKCIgKyBiYWRQb2ludGVyUmVwbGFjZVhXaXRoICsgIiwgIiArIGJhZFBvaW50ZXJSZXBsYWNlWVdpdGggKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICIpIik7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgZmluYWwgaW50IG9mZnNldCA9IGJhZFBvaW50ZXJJbmRleCAqIE1vdGlvbkV2ZW50Lk5VTV9TQU1QTEVfREFUQTsKLSAgICAgICAgICAgICAgICBuZXh0RGF0YVtvZmZzZXQgKyBNb3Rpb25FdmVudC5TQU1QTEVfWF0gPSBiYWRQb2ludGVyUmVwbGFjZVhXaXRoOwotICAgICAgICAgICAgICAgIG5leHREYXRhW29mZnNldCArIE1vdGlvbkV2ZW50LlNBTVBMRV9ZXSA9IGJhZFBvaW50ZXJSZXBsYWNlWVdpdGg7Ci0gICAgICAgICAgICAgICAgbUp1bXB5UG9pbnRzRHJvcHBlZCsrOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtSnVtcHlQb2ludHNEcm9wcGVkID0gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgLyoqCi0gICAgICAgICAqIFNwZWNpYWwgaGFjayBmb3IgZGV2aWNlcyB0aGF0IGhhdmUgYmFkIHNjcmVlbiBkYXRhOiBhZ2dyZWdhdGUgYW5kCi0gICAgICAgICAqIGNvbXB1dGUgYXZlcmFnZXMgb2YgdGhlIGNvb3JkaW5hdGUgZGF0YSwgdG8gcmVkdWNlIHRoZSBhbW91bnQgb2YKLSAgICAgICAgICogaml0dGVyIHNlZW4gYnkgYXBwbGljYXRpb25zLgotICAgICAgICAgKi8KLSAgICAgICAgaW50W10gZ2VuZXJhdGVBdmVyYWdlZERhdGEoaW50IHVwT3JEb3duUG9pbnRlciwgaW50IGxhc3ROdW1Qb2ludGVycywKLSAgICAgICAgICAgICAgICBpbnQgbmV4dE51bVBvaW50ZXJzKSB7Ci0gICAgICAgICAgICBmaW5hbCBpbnQgbnVtUG9pbnRlcnMgPSBtTGFzdE51bVBvaW50ZXJzOwotICAgICAgICAgICAgZmluYWwgaW50W10gcmF3RGF0YSA9IG1MYXN0RGF0YTsKLSAgICAgICAgICAgIGlmIChERUJVR19IQUNLUykgU2xvZy52KCJJbnB1dERldmljZSIsICJsYXN0TnVtUG9pbnRlcnM9IiArIGxhc3ROdW1Qb2ludGVycwotICAgICAgICAgICAgICAgICAgICArICIgbmV4dE51bVBvaW50ZXJzPSIgKyBuZXh0TnVtUG9pbnRlcnMKLSAgICAgICAgICAgICAgICAgICAgKyAiIG51bVBvaW50ZXJzPSIgKyBudW1Qb2ludGVycyk7Ci0gICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8bnVtUG9pbnRlcnM7IGkrKykgewotICAgICAgICAgICAgICAgIGZpbmFsIGludCBpb2ZmID0gaSAqIE1vdGlvbkV2ZW50Lk5VTV9TQU1QTEVfREFUQTsKLSAgICAgICAgICAgICAgICAvLyBXZSBrZWVwIHRoZSBhdmVyYWdlIGRhdGEgaW4gb2Zmc2V0cyBiYXNlZCBvbiB0aGUgcG9pbnRlcgotICAgICAgICAgICAgICAgIC8vIElELCBzbyB3ZSBkb24ndCBuZWVkIHRvIG1vdmUgaXQgYXJvdW5kIGFzIGZpbmdlcnMgYXJlCi0gICAgICAgICAgICAgICAgLy8gcHJlc3NlZCBhbmQgcmVsZWFzZWQuCi0gICAgICAgICAgICAgICAgZmluYWwgaW50IHAgPSBtUG9pbnRlcklkc1tpXTsKLSAgICAgICAgICAgICAgICBmaW5hbCBpbnQgcG9mZiA9IHAgKiBNb3Rpb25FdmVudC5OVU1fU0FNUExFX0RBVEEgKiBISVNUT1JZX1NJWkU7Ci0gICAgICAgICAgICAgICAgaWYgKGkgPT0gdXBPckRvd25Qb2ludGVyICYmIGxhc3ROdW1Qb2ludGVycyAhPSBuZXh0TnVtUG9pbnRlcnMpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3ROdW1Qb2ludGVycyA8IG5leHROdW1Qb2ludGVycykgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBwb2ludGVyIGlzIGdvaW5nIGRvd24uICBDbGVhciBpdHMgaGlzdG9yeQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gYW5kIHN0YXJ0IGZyZXNoLgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX0hBQ0tTKSBTbG9nLnYoIklucHV0RGV2aWNlIiwgIlBvaW50ZXIgZG93biBAIGluZGV4ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyB1cE9yRG93blBvaW50ZXIgKyAiIGlkICIgKyBtUG9pbnRlcklkc1tpXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtSGlzdG9yeURhdGFTdGFydFtpXSA9IDA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtSGlzdG9yeURhdGFFbmRbaV0gPSAwOwotICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShyYXdEYXRhLCBpb2ZmLCBtSGlzdG9yeURhdGEsIHBvZmYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vdGlvbkV2ZW50Lk5VTV9TQU1QTEVfREFUQSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KHJhd0RhdGEsIGlvZmYsIG1BdmVyYWdlZERhdGEsIGlvZmYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vdGlvbkV2ZW50Lk5VTV9TQU1QTEVfREFUQSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBwb2ludGVyIGlzIGdvaW5nIHVwLiAgSnVzdCBmYWxsIHRocm91Z2ggdG8KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJlY29tcHV0ZSB0aGUgbGFzdCBhdmVyYWdlZCBwb2ludCAoYW5kIGRvbid0IGFkZAotICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXQgYXMgYSBuZXcgcG9pbnQgdG8gaW5jbHVkZSBpbiB0aGUgYXZlcmFnZSkuCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfSEFDS1MpIFNsb2cudigiSW5wdXREZXZpY2UiLCAiUG9pbnRlciB1cCBAIGluZGV4ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyB1cE9yRG93blBvaW50ZXIgKyAiIGlkICIgKyBtUG9pbnRlcklkc1tpXSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBpbnQgZW5kID0gbUhpc3RvcnlEYXRhRW5kW2ldOwotICAgICAgICAgICAgICAgICAgICBpbnQgZW9mZiA9IHBvZmYgKyAoZW5kKk1vdGlvbkV2ZW50Lk5VTV9TQU1QTEVfREFUQSk7Ci0gICAgICAgICAgICAgICAgICAgIGludCBvbGRYID0gbUhpc3RvcnlEYXRhW2VvZmYgKyBNb3Rpb25FdmVudC5TQU1QTEVfWF07Ci0gICAgICAgICAgICAgICAgICAgIGludCBvbGRZID0gbUhpc3RvcnlEYXRhW2VvZmYgKyBNb3Rpb25FdmVudC5TQU1QTEVfWV07Ci0gICAgICAgICAgICAgICAgICAgIGludCBuZXdYID0gcmF3RGF0YVtpb2ZmICsgTW90aW9uRXZlbnQuU0FNUExFX1hdOwotICAgICAgICAgICAgICAgICAgICBpbnQgbmV3WSA9IHJhd0RhdGFbaW9mZiArIE1vdGlvbkV2ZW50LlNBTVBMRV9ZXTsKLSAgICAgICAgICAgICAgICAgICAgaW50IGR4ID0gbmV3WC1vbGRYOwotICAgICAgICAgICAgICAgICAgICBpbnQgZHkgPSBuZXdZLW9sZFk7Ci0gICAgICAgICAgICAgICAgICAgIGludCBkZWx0YSA9IGR4KmR4ICsgZHkqZHk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19IQUNLUykgU2xvZy52KCJJbnB1dERldmljZSIsICJEZWx0YSBmcm9tIGxhc3Q6ICIgKyBkZWx0YSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChkZWx0YSA+PSAoNzUqNzUpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBNYWdpYyBudW1iZXIsIGlmIG1vdmluZyBmYXJ0aGVyIHRoYW4gdGhpcywgdHVybgotICAgICAgICAgICAgICAgICAgICAgICAgLy8gb2ZmIGZpbHRlcmluZyB0byBhdm9pZCBsYWcgaW4gcmVzcG9uc2UuCi0gICAgICAgICAgICAgICAgICAgICAgICBtSGlzdG9yeURhdGFTdGFydFtpXSA9IDA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtSGlzdG9yeURhdGFFbmRbaV0gPSAwOwotICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShyYXdEYXRhLCBpb2ZmLCBtSGlzdG9yeURhdGEsIHBvZmYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vdGlvbkV2ZW50Lk5VTV9TQU1QTEVfREFUQSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KHJhd0RhdGEsIGlvZmYsIG1BdmVyYWdlZERhdGEsIGlvZmYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vdGlvbkV2ZW50Lk5VTV9TQU1QTEVfREFUQSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVuZCsrOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVuZCA+PSBISVNUT1JZX1NJWkUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmQgLT0gSElTVE9SWV9TSVpFOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgbUhpc3RvcnlEYXRhRW5kW2ldID0gZW5kOwotICAgICAgICAgICAgICAgICAgICAgICAgaW50IG5vZmYgPSBwb2ZmICsgKGVuZCpNb3Rpb25FdmVudC5OVU1fU0FNUExFX0RBVEEpOwotICAgICAgICAgICAgICAgICAgICAgICAgbUhpc3RvcnlEYXRhW25vZmYgKyBNb3Rpb25FdmVudC5TQU1QTEVfWF0gPSBuZXdYOwotICAgICAgICAgICAgICAgICAgICAgICAgbUhpc3RvcnlEYXRhW25vZmYgKyBNb3Rpb25FdmVudC5TQU1QTEVfWV0gPSBuZXdZOwotICAgICAgICAgICAgICAgICAgICAgICAgbUhpc3RvcnlEYXRhW25vZmYgKyBNb3Rpb25FdmVudC5TQU1QTEVfUFJFU1NVUkVdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gcmF3RGF0YVtpb2ZmICsgTW90aW9uRXZlbnQuU0FNUExFX1BSRVNTVVJFXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdGFydCA9IG1IaXN0b3J5RGF0YVN0YXJ0W2ldOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVuZCA9PSBzdGFydCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0Kys7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0ID49IEhJU1RPUllfU0laRSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCAtPSBISVNUT1JZX1NJWkU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1IaXN0b3J5RGF0YVN0YXJ0W2ldID0gc3RhcnQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgLy8gTm93IGNvbXB1dGUgdGhlIGF2ZXJhZ2UuCi0gICAgICAgICAgICAgICAgaW50IHN0YXJ0ID0gbUhpc3RvcnlEYXRhU3RhcnRbaV07Ci0gICAgICAgICAgICAgICAgaW50IGVuZCA9IG1IaXN0b3J5RGF0YUVuZFtpXTsKLSAgICAgICAgICAgICAgICBpbnQgeD0wLCB5PTA7Ci0gICAgICAgICAgICAgICAgaW50IHRvdGFsUHJlc3N1cmUgPSAwOwotICAgICAgICAgICAgICAgIHdoaWxlIChzdGFydCAhPSBlbmQpIHsKLSAgICAgICAgICAgICAgICAgICAgaW50IHNvZmYgPSBwb2ZmICsgKHN0YXJ0Kk1vdGlvbkV2ZW50Lk5VTV9TQU1QTEVfREFUQSk7Ci0gICAgICAgICAgICAgICAgICAgIGludCBwcmVzc3VyZSA9IG1IaXN0b3J5RGF0YVtzb2ZmICsgTW90aW9uRXZlbnQuU0FNUExFX1BSRVNTVVJFXTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHByZXNzdXJlIDw9IDApIHByZXNzdXJlID0gMTsKLSAgICAgICAgICAgICAgICAgICAgeCArPSBtSGlzdG9yeURhdGFbc29mZiArIE1vdGlvbkV2ZW50LlNBTVBMRV9YXSAqIHByZXNzdXJlOwotICAgICAgICAgICAgICAgICAgICB5ICs9IG1IaXN0b3J5RGF0YVtzb2ZmICsgTW90aW9uRXZlbnQuU0FNUExFX1ldICogcHJlc3N1cmU7Ci0gICAgICAgICAgICAgICAgICAgIHRvdGFsUHJlc3N1cmUgKz0gcHJlc3N1cmU7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXJ0Kys7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzdGFydCA+PSBISVNUT1JZX1NJWkUpIHN0YXJ0ID0gMDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaW50IGVvZmYgPSBwb2ZmICsgKGVuZCpNb3Rpb25FdmVudC5OVU1fU0FNUExFX0RBVEEpOwotICAgICAgICAgICAgICAgIGludCBwcmVzc3VyZSA9IG1IaXN0b3J5RGF0YVtlb2ZmICsgTW90aW9uRXZlbnQuU0FNUExFX1BSRVNTVVJFXTsKLSAgICAgICAgICAgICAgICBpZiAocHJlc3N1cmUgPD0gMCkgcHJlc3N1cmUgPSAxOwotICAgICAgICAgICAgICAgIHggKz0gbUhpc3RvcnlEYXRhW2VvZmYgKyBNb3Rpb25FdmVudC5TQU1QTEVfWF0gKiBwcmVzc3VyZTsKLSAgICAgICAgICAgICAgICB5ICs9IG1IaXN0b3J5RGF0YVtlb2ZmICsgTW90aW9uRXZlbnQuU0FNUExFX1ldICogcHJlc3N1cmU7Ci0gICAgICAgICAgICAgICAgdG90YWxQcmVzc3VyZSArPSBwcmVzc3VyZTsKLSAgICAgICAgICAgICAgICB4IC89IHRvdGFsUHJlc3N1cmU7Ci0gICAgICAgICAgICAgICAgeSAvPSB0b3RhbFByZXNzdXJlOwotICAgICAgICAgICAgICAgIGlmIChERUJVR19IQUNLUykgU2xvZy52KCJJbnB1dERldmljZSIsICJBdmVyYWdpbmcgIiArIHRvdGFsUHJlc3N1cmUKLSAgICAgICAgICAgICAgICAgICAgICAgICsgIiB3ZWlnaHQ6ICgiICsgeCArICIsIiArIHkgKyAiKSIpOwotICAgICAgICAgICAgICAgIG1BdmVyYWdlZERhdGFbaW9mZiArIE1vdGlvbkV2ZW50LlNBTVBMRV9YXSA9IHg7Ci0gICAgICAgICAgICAgICAgbUF2ZXJhZ2VkRGF0YVtpb2ZmICsgTW90aW9uRXZlbnQuU0FNUExFX1ldID0geTsKLSAgICAgICAgICAgICAgICBtQXZlcmFnZWREYXRhW2lvZmYgKyBNb3Rpb25FdmVudC5TQU1QTEVfUFJFU1NVUkVdID0KLSAgICAgICAgICAgICAgICAgICAgICAgIHJhd0RhdGFbaW9mZiArIE1vdGlvbkV2ZW50LlNBTVBMRV9QUkVTU1VSRV07Ci0gICAgICAgICAgICAgICAgbUF2ZXJhZ2VkRGF0YVtpb2ZmICsgTW90aW9uRXZlbnQuU0FNUExFX1NJWkVdID0KLSAgICAgICAgICAgICAgICAgICAgICAgIHJhd0RhdGFbaW9mZiArIE1vdGlvbkV2ZW50LlNBTVBMRV9TSVpFXTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBtQXZlcmFnZWREYXRhOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBwcml2YXRlIGJvb2xlYW4gYXNzaWduUG9pbnRlcihpbnQgbmV4dEluZGV4LCBib29sZWFuIGFsbG93T3ZlcmxhcCkgewotICAgICAgICAgICAgZmluYWwgaW50IGxhc3ROdW1Qb2ludGVycyA9IG1MYXN0TnVtUG9pbnRlcnM7Ci0gICAgICAgICAgICBmaW5hbCBpbnRbXSBuZXh0Mkxhc3QgPSBtTmV4dDJMYXN0OwotICAgICAgICAgICAgZmluYWwgbG9uZ1tdIG5leHQyTGFzdERpc3RhbmNlID0gbU5leHQyTGFzdERpc3RhbmNlOwotICAgICAgICAgICAgZmluYWwgaW50W10gbGFzdDJOZXh0ID0gbUxhc3QyTmV4dDsKLSAgICAgICAgICAgIGZpbmFsIGludFtdIGxhc3REYXRhID0gbUxhc3REYXRhOwotICAgICAgICAgICAgZmluYWwgaW50W10gbmV4dERhdGEgPSBtTmV4dERhdGE7Ci0gICAgICAgICAgICBmaW5hbCBpbnQgaWQgPSBuZXh0SW5kZXggKiBNb3Rpb25FdmVudC5OVU1fU0FNUExFX0RBVEE7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChERUJVR19QT0lOVEVSUykgU2xvZy52KCJJbnB1dERldmljZSIsICJhc3NpZ25Qb2ludGVyOiBuZXh0SW5kZXg9IgotICAgICAgICAgICAgICAgICAgICArIG5leHRJbmRleCArICIgZGF0YU9mZj0iICsgaWQpOwotICAgICAgICAgICAgZmluYWwgaW50IHgxID0gbmV4dERhdGFbaWQgKyBNb3Rpb25FdmVudC5TQU1QTEVfWF07Ci0gICAgICAgICAgICBmaW5hbCBpbnQgeTEgPSBuZXh0RGF0YVtpZCArIE1vdGlvbkV2ZW50LlNBTVBMRV9ZXTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgbG9uZyBiZXN0RGlzdGFuY2UgPSAtMTsKLSAgICAgICAgICAgIGludCBiZXN0SW5kZXggPSAtMTsKLSAgICAgICAgICAgIGZvciAoaW50IGo9MDsgajxsYXN0TnVtUG9pbnRlcnM7IGorKykgewotICAgICAgICAgICAgICAgIC8vIElmIHdlIGFyZSBub3QgYWxsb3dpbmcgbXVsdGlwbGUgbmV3IHBvaW50cyB0byBiZSBhc3NpZ25lZAotICAgICAgICAgICAgICAgIC8vIHRvIHRoZSBzYW1lIG9sZCBwb2ludGVyLCB0aGVuIHNraXAgdGhpcyBvbmUgaWYgaXQgaXMgYWxyZWFkeQotICAgICAgICAgICAgICAgIC8vIGRldGVjdGVkIGFzIGEgY29uZmxpY3QgKC0yKS4KLSAgICAgICAgICAgICAgICBpZiAoIWFsbG93T3ZlcmxhcCAmJiBsYXN0Mk5leHRbal0gPCAtMSkgewotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZmluYWwgaW50IGpkID0gaiAqIE1vdGlvbkV2ZW50Lk5VTV9TQU1QTEVfREFUQTsKLSAgICAgICAgICAgICAgICBmaW5hbCBpbnQgeGQgPSBsYXN0RGF0YVtqZCArIE1vdGlvbkV2ZW50LlNBTVBMRV9YXSAtIHgxOwotICAgICAgICAgICAgICAgIGZpbmFsIGludCB5ZCA9IGxhc3REYXRhW2pkICsgTW90aW9uRXZlbnQuU0FNUExFX1ldIC0geTE7Ci0gICAgICAgICAgICAgICAgZmluYWwgbG9uZyBkaXN0YW5jZSA9IHhkKihsb25nKXhkICsgeWQqKGxvbmcpeWQ7Ci0gICAgICAgICAgICAgICAgaWYgKGJlc3REaXN0YW5jZSA9PSAtMSB8fCBkaXN0YW5jZSA8IGJlc3REaXN0YW5jZSkgewotICAgICAgICAgICAgICAgICAgICBiZXN0RGlzdGFuY2UgPSBkaXN0YW5jZTsKLSAgICAgICAgICAgICAgICAgICAgYmVzdEluZGV4ID0gajsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChERUJVR19QT0lOVEVSUykgU2xvZy52KCJJbnB1dERldmljZSIsICJOZXcgaW5kZXggIiArIG5leHRJbmRleAotICAgICAgICAgICAgICAgICAgICArICIgYmVzdCBvbGQgaW5kZXg9IiArIGJlc3RJbmRleCArICIgKGRpc3RhbmNlPSIKLSAgICAgICAgICAgICAgICAgICAgKyBiZXN0RGlzdGFuY2UgKyAiKSIpOwotICAgICAgICAgICAgbmV4dDJMYXN0W25leHRJbmRleF0gPSBiZXN0SW5kZXg7Ci0gICAgICAgICAgICBuZXh0Mkxhc3REaXN0YW5jZVtuZXh0SW5kZXhdID0gYmVzdERpc3RhbmNlOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoYmVzdEluZGV4IDwgMCkgewotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAobGFzdDJOZXh0W2Jlc3RJbmRleF0gPT0gLTEpIHsKLSAgICAgICAgICAgICAgICBsYXN0Mk5leHRbYmVzdEluZGV4XSA9IG5leHRJbmRleDsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChERUJVR19QT0lOVEVSUykgU2xvZy52KCJJbnB1dERldmljZSIsICJPbGQgaW5kZXggIiArIGJlc3RJbmRleAotICAgICAgICAgICAgICAgICAgICArICIgaGFzIG11bHRpcGxlIGJlc3QgbmV3IHBvaW50ZXJzISIpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBsYXN0Mk5leHRbYmVzdEluZGV4XSA9IC0yOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHByaXZhdGUgaW50IHVwZGF0ZVBvaW50ZXJJZGVudGlmaWVycygpIHsKLSAgICAgICAgICAgIGZpbmFsIGludFtdIGxhc3REYXRhID0gbUxhc3REYXRhOwotICAgICAgICAgICAgZmluYWwgaW50W10gbmV4dERhdGEgPSBtTmV4dERhdGE7Ci0gICAgICAgICAgICBmaW5hbCBpbnQgbmV4dE51bVBvaW50ZXJzID0gbU5leHROdW1Qb2ludGVyczsKLSAgICAgICAgICAgIGZpbmFsIGludCBsYXN0TnVtUG9pbnRlcnMgPSBtTGFzdE51bVBvaW50ZXJzOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAobmV4dE51bVBvaW50ZXJzID09IDEgJiYgbGFzdE51bVBvaW50ZXJzID09IDEpIHsKLSAgICAgICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KG5leHREYXRhLCAwLCBsYXN0RGF0YSwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgIE1vdGlvbkV2ZW50Lk5VTV9TQU1QTEVfREFUQSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBDbGVhciBvdXIgb2xkIHN0YXRlLgotICAgICAgICAgICAgZmluYWwgaW50W10gbGFzdDJOZXh0ID0gbUxhc3QyTmV4dDsKLSAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxsYXN0TnVtUG9pbnRlcnM7IGkrKykgewotICAgICAgICAgICAgICAgIGxhc3QyTmV4dFtpXSA9IC0xOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoREVCVUdfUE9JTlRFUlMpIFNsb2cudigiSW5wdXREZXZpY2UiLAotICAgICAgICAgICAgICAgICAgICAiVXBkYXRlIHBvaW50ZXJzOiBsYXN0TnVtUG9pbnRlcnM9IiArIGxhc3ROdW1Qb2ludGVycwotICAgICAgICAgICAgICAgICAgICArICIgbmV4dE51bVBvaW50ZXJzPSIgKyBuZXh0TnVtUG9pbnRlcnMpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICAvLyBGaWd1cmUgb3V0IHRoZSBjbG9zZXMgbmV3IHBvaW50cyB0byB0aGUgcHJldmlvdXMgcG9pbnRzLgotICAgICAgICAgICAgZmluYWwgaW50W10gbmV4dDJMYXN0ID0gbU5leHQyTGFzdDsKLSAgICAgICAgICAgIGZpbmFsIGxvbmdbXSBuZXh0Mkxhc3REaXN0YW5jZSA9IG1OZXh0Mkxhc3REaXN0YW5jZTsKLSAgICAgICAgICAgIGJvb2xlYW4gY29uZmxpY3RzID0gZmFsc2U7Ci0gICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8bmV4dE51bVBvaW50ZXJzOyBpKyspIHsKLSAgICAgICAgICAgICAgICBjb25mbGljdHMgfD0gYXNzaWduUG9pbnRlcihpLCB0cnVlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gUmVzb2x2ZSBhbWJpZ3VpdGllcyBpbiBwb2ludGVyIG1hcHBpbmdzLCB3aGVuIHR3byBvciBtb3JlCi0gICAgICAgICAgICAvLyBuZXcgcG9pbnRlciBsb2NhdGlvbnMgZmluZCB0aGVpciBiZXN0IHByZXZpb3VzIGxvY2F0aW9uIGlzCi0gICAgICAgICAgICAvLyB0aGUgc2FtZS4KLSAgICAgICAgICAgIGlmIChjb25mbGljdHMpIHsKLSAgICAgICAgICAgICAgICBpZiAoREVCVUdfUE9JTlRFUlMpIFNsb2cudigiSW5wdXREZXZpY2UiLCAiUmVzb2x2aW5nIGNvbmZsaWN0cyIpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxsYXN0TnVtUG9pbnRlcnM7IGkrKykgewotICAgICAgICAgICAgICAgICAgICBpZiAobGFzdDJOZXh0W2ldICE9IC0yKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHRoaXMgYWxnb3JpdGhtIGlzIGZhciBmcm9tIHBlcmZlY3QuICBJZGVhbGx5Ci0gICAgICAgICAgICAgICAgICAgIC8vIHdlIHNob3VsZCBkbyBzb21ldGhpbmcgbGlrZSB0aGUgb25lIGRlc2NyaWJlZCBhdAotICAgICAgICAgICAgICAgICAgICAvLyBodHRwOi8vcG9ydGFsLmFjbS5vcmcvY2l0YXRpb24uY2ZtP2lkPTk5Nzg1NgotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX1BPSU5URVJTKSBTbG9nLnYoIklucHV0RGV2aWNlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUmVzb2x2aW5nIGxhc3QgaW5kZXggIyIgKyBpKTsKLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGludCBudW1Gb3VuZDsKLSAgICAgICAgICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgICAgICAgICAgbnVtRm91bmQgPSAwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyB3b3JzdERpc3RhbmNlID0gMDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCB3b3JzdEogPSAtMTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGo9MDsgajxuZXh0TnVtUG9pbnRlcnM7IGorKykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChuZXh0Mkxhc3Rbal0gIT0gaSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtRm91bmQrKzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAod29yc3REaXN0YW5jZSA8IG5leHQyTGFzdERpc3RhbmNlW2pdKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcnN0RGlzdGFuY2UgPSBuZXh0Mkxhc3REaXN0YW5jZVtqXTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd29yc3RKID0gajsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3b3JzdEogPj0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19QT0lOVEVSUykgU2xvZy52KCJJbnB1dERldmljZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiV29yc3QgbmV3IHBvaW50ZXI6ICIgKyB3b3JzdEoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiAoZGlzdGFuY2U9IiArIHdvcnN0RGlzdGFuY2UgKyAiKSIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhc3NpZ25Qb2ludGVyKHdvcnN0SiwgZmFsc2UpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSB0aGVyZSBpcyBubyBsYXN0IHBvaW50ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVtYWluaW5nIGZvciB0aGlzIG5ldyBvbmUhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQyTGFzdFt3b3JzdEpdID0gLTE7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChudW1Gb3VuZCA+IDIpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgaW50IHJldEluZGV4ID0gLTE7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChsYXN0TnVtUG9pbnRlcnMgPCBuZXh0TnVtUG9pbnRlcnMpIHsKLSAgICAgICAgICAgICAgICAvLyBXZSBoYXZlIG9uZSBvciBtb3JlIG5ldyBwb2ludGVycyB0aGF0IGFyZSBkb3duLiAgQ3JlYXRlIGEKLSAgICAgICAgICAgICAgICAvLyBuZXcgcG9pbnRlciBpZGVudGlmaWVyIGZvciBvbmUgb2YgdGhlbS4KLSAgICAgICAgICAgICAgICBpZiAoREVCVUdfUE9JTlRFUlMpIFNsb2cudigiSW5wdXREZXZpY2UiLCAiQWRkaW5nIG5ldyBwb2ludGVyIik7Ci0gICAgICAgICAgICAgICAgaW50IG5leHRJZCA9IDA7Ci0gICAgICAgICAgICAgICAgaW50IGk9MDsKLSAgICAgICAgICAgICAgICB3aGlsZSAoaSA8IGxhc3ROdW1Qb2ludGVycykgewotICAgICAgICAgICAgICAgICAgICBpZiAobVBvaW50ZXJJZHNbaV0gPiBuZXh0SWQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZvdW5kIGEgaG9sZSwgaW5zZXJ0IHRoZSBwb2ludGVyIGhlcmUuCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfUE9JTlRFUlMpIFNsb2cudigiSW5wdXREZXZpY2UiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW5zZXJ0aW5nIG5ldyBwb2ludGVyIGF0IGhvbGUgIiArIGkpOwotICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShtUG9pbnRlcklkcywgaSwgbVBvaW50ZXJJZHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkrMSwgbGFzdE51bVBvaW50ZXJzLWkpOwotICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShsYXN0RGF0YSwgaSpNb3Rpb25FdmVudC5OVU1fU0FNUExFX0RBVEEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3REYXRhLCAoaSsxKSpNb3Rpb25FdmVudC5OVU1fU0FNUExFX0RBVEEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsYXN0TnVtUG9pbnRlcnMtaSkqTW90aW9uRXZlbnQuTlVNX1NBTVBMRV9EQVRBKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5hcnJheWNvcHkobmV4dDJMYXN0LCBpLCBuZXh0Mkxhc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkrMSwgbGFzdE51bVBvaW50ZXJzLWkpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaSsrOwotICAgICAgICAgICAgICAgICAgICBuZXh0SWQrKzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgaWYgKERFQlVHX1BPSU5URVJTKSBTbG9nLnYoIklucHV0RGV2aWNlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJOZXcgcG9pbnRlciBpZCAiICsgbmV4dElkICsgIiBhdCBpbmRleCAiICsgaSk7Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgbUxhc3ROdW1Qb2ludGVycysrOwotICAgICAgICAgICAgICAgIHJldEluZGV4ID0gaTsKLSAgICAgICAgICAgICAgICBtUG9pbnRlcklkc1tpXSA9IG5leHRJZDsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAvLyBBbmQgYXNzaWduIHRoaXMgaWRlbnRpZmllciB0byB0aGUgZmlyc3QgbmV3IHBvaW50ZXIuCi0gICAgICAgICAgICAgICAgZm9yIChpbnQgaj0wOyBqPG5leHROdW1Qb2ludGVyczsgaisrKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChuZXh0Mkxhc3Rbal0gPCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfUE9JTlRFUlMpIFNsb2cudigiSW5wdXREZXZpY2UiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQXNzaWduaW5nIG5ldyBpZCB0byBuZXcgcG9pbnRlciBpbmRleCAiICsgaik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXh0Mkxhc3Rbal0gPSBpOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIFByb3BhZ2F0ZSBhbGwgb2YgdGhlIGN1cnJlbnQgZGF0YSBpbnRvIHRoZSBhcHByb3ByaWF0ZQotICAgICAgICAgICAgLy8gbG9jYXRpb24gaW4gdGhlIG9sZCBkYXRhIHRvIG1hdGNoIHRoZSBwb2ludGVyIElEIHRoYXQgd2FzCi0gICAgICAgICAgICAvLyBhc3NpZ25lZCB0byBpdC4KLSAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxuZXh0TnVtUG9pbnRlcnM7IGkrKykgewotICAgICAgICAgICAgICAgIGludCBsYXN0SW5kZXggPSBuZXh0Mkxhc3RbaV07Ci0gICAgICAgICAgICAgICAgaWYgKGxhc3RJbmRleCA+PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19QT0lOVEVSUykgU2xvZy52KCJJbnB1dERldmljZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNvcHlpbmcgbmV4dCBwb2ludGVyIGluZGV4ICIgKyBpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiIHRvIGxhc3QgaW5kZXggIiArIGxhc3RJbmRleCk7Ci0gICAgICAgICAgICAgICAgICAgIFN5c3RlbS5hcnJheWNvcHkobmV4dERhdGEsIGkqTW90aW9uRXZlbnQuTlVNX1NBTVBMRV9EQVRBLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3REYXRhLCBsYXN0SW5kZXgqTW90aW9uRXZlbnQuTlVNX1NBTVBMRV9EQVRBLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vdGlvbkV2ZW50Lk5VTV9TQU1QTEVfREFUQSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAobGFzdE51bVBvaW50ZXJzID4gbmV4dE51bVBvaW50ZXJzKSB7Ci0gICAgICAgICAgICAgICAgLy8gT25lIG9yIG1vcmUgcG9pbnRlcnMgaGFzIGdvbmUgdXAuICBGaW5kIHRoZSBmaXJzdCBvbmUsCi0gICAgICAgICAgICAgICAgLy8gYW5kIGFkanVzdCBhY2NvcmRpbmdseS4KLSAgICAgICAgICAgICAgICBpZiAoREVCVUdfUE9JTlRFUlMpIFNsb2cudigiSW5wdXREZXZpY2UiLCAiUmVtb3Zpbmcgb2xkIHBvaW50ZXIiKTsKLSAgICAgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8bGFzdE51bVBvaW50ZXJzOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3QyTmV4dFtpXSA9PSAtMSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX1BPSU5URVJTKSBTbG9nLnYoIklucHV0RGV2aWNlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlJlbW92aW5nIG9sZCBwb2ludGVyIGF0IGluZGV4ICIgKyBpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldEluZGV4ID0gaTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICByZXR1cm4gcmV0SW5kZXg7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHZvaWQgcmVtb3ZlT2xkUG9pbnRlcihpbnQgaW5kZXgpIHsKLSAgICAgICAgICAgIGZpbmFsIGludCBsYXN0TnVtUG9pbnRlcnMgPSBtTGFzdE51bVBvaW50ZXJzOwotICAgICAgICAgICAgaWYgKGluZGV4ID49IDAgJiYgaW5kZXggPCBsYXN0TnVtUG9pbnRlcnMpIHsKLSAgICAgICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KG1Qb2ludGVySWRzLCBpbmRleCsxLCBtUG9pbnRlcklkcywKLSAgICAgICAgICAgICAgICAgICAgICAgIGluZGV4LCBsYXN0TnVtUG9pbnRlcnMtaW5kZXgtMSk7Ci0gICAgICAgICAgICAgICAgU3lzdGVtLmFycmF5Y29weShtTGFzdERhdGEsIChpbmRleCsxKSpNb3Rpb25FdmVudC5OVU1fU0FNUExFX0RBVEEsCi0gICAgICAgICAgICAgICAgICAgICAgICBtTGFzdERhdGEsIChpbmRleCkqTW90aW9uRXZlbnQuTlVNX1NBTVBMRV9EQVRBLAotICAgICAgICAgICAgICAgICAgICAgICAgKGxhc3ROdW1Qb2ludGVycy1pbmRleC0xKSpNb3Rpb25FdmVudC5OVU1fU0FNUExFX0RBVEEpOwotICAgICAgICAgICAgICAgIG1MYXN0TnVtUG9pbnRlcnMtLTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgTW90aW9uRXZlbnQgZ2VuZXJhdGVBYnNNb3Rpb24oSW5wdXREZXZpY2UgZGV2aWNlLCBsb25nIGN1clRpbWUsCi0gICAgICAgICAgICAgICAgbG9uZyBjdXJUaW1lTmFubywgRGlzcGxheSBkaXNwbGF5LCBpbnQgb3JpZW50YXRpb24sCi0gICAgICAgICAgICAgICAgaW50IG1ldGFTdGF0ZSkgewotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAobVNraXBMYXN0UG9pbnRlcnMpIHsKLSAgICAgICAgICAgICAgICBtU2tpcExhc3RQb2ludGVycyA9IGZhbHNlOwotICAgICAgICAgICAgICAgIG1MYXN0TnVtUG9pbnRlcnMgPSAwOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAobU5leHROdW1Qb2ludGVycyA8PSAwICYmIG1MYXN0TnVtUG9pbnRlcnMgPD0gMCkgewotICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBmaW5hbCBpbnQgbGFzdE51bVBvaW50ZXJzID0gbUxhc3ROdW1Qb2ludGVyczsKLSAgICAgICAgICAgIGZpbmFsIGludCBuZXh0TnVtUG9pbnRlcnMgPSBtTmV4dE51bVBvaW50ZXJzOwotICAgICAgICAgICAgaWYgKG1OZXh0TnVtUG9pbnRlcnMgPiBNQVhfUE9JTlRFUlMpIHsKLSAgICAgICAgICAgICAgICBTbG9nLncoIklucHV0RGV2aWNlIiwgIk51bWJlciBvZiBwb2ludGVycyAiICsgbU5leHROdW1Qb2ludGVycwotICAgICAgICAgICAgICAgICAgICAgICAgKyAiIGV4Y2VlZGVkIG1heGltdW0gb2YgIiArIE1BWF9QT0lOVEVSUyk7Ci0gICAgICAgICAgICAgICAgbU5leHROdW1Qb2ludGVycyA9IE1BWF9QT0lOVEVSUzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgaW50IHVwT3JEb3duUG9pbnRlciA9IHVwZGF0ZVBvaW50ZXJJZGVudGlmaWVycygpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBmaW5hbCBmbG9hdFtdIHJlcG9ydERhdGEgPSBtUmVwb3J0RGF0YTsKLSAgICAgICAgICAgIGZpbmFsIGludFtdIHJhd0RhdGE7Ci0gICAgICAgICAgICBpZiAoS2V5SW5wdXRRdWV1ZS5CQURfVE9VQ0hfSEFDSykgewotICAgICAgICAgICAgICAgIHJhd0RhdGEgPSBnZW5lcmF0ZUF2ZXJhZ2VkRGF0YSh1cE9yRG93blBvaW50ZXIsIGxhc3ROdW1Qb2ludGVycywKLSAgICAgICAgICAgICAgICAgICAgICAgIG5leHROdW1Qb2ludGVycyk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHJhd0RhdGEgPSBtTGFzdERhdGE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGZpbmFsIGludCBudW1Qb2ludGVycyA9IG1MYXN0TnVtUG9pbnRlcnM7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChERUJVR19QT0lOVEVSUykgU2xvZy52KCJJbnB1dERldmljZSIsICJQcm9jZXNzaW5nICIKLSAgICAgICAgICAgICAgICAgICAgKyBudW1Qb2ludGVycyArICIgcG9pbnRlcnMgKGdvaW5nIGZyb20gIiArIGxhc3ROdW1Qb2ludGVycwotICAgICAgICAgICAgICAgICAgICArICIgdG8gIiArIG5leHROdW1Qb2ludGVycyArICIpIik7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxudW1Qb2ludGVyczsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgZmluYWwgaW50IHBvcyA9IGkgKiBNb3Rpb25FdmVudC5OVU1fU0FNUExFX0RBVEE7Ci0gICAgICAgICAgICAgICAgcmVwb3J0RGF0YVtwb3MgKyBNb3Rpb25FdmVudC5TQU1QTEVfWF0gPSByYXdEYXRhW3BvcyArIE1vdGlvbkV2ZW50LlNBTVBMRV9YXTsKLSAgICAgICAgICAgICAgICByZXBvcnREYXRhW3BvcyArIE1vdGlvbkV2ZW50LlNBTVBMRV9ZXSA9IHJhd0RhdGFbcG9zICsgTW90aW9uRXZlbnQuU0FNUExFX1ldOwotICAgICAgICAgICAgICAgIHJlcG9ydERhdGFbcG9zICsgTW90aW9uRXZlbnQuU0FNUExFX1BSRVNTVVJFXSA9IHJhd0RhdGFbcG9zICsgTW90aW9uRXZlbnQuU0FNUExFX1BSRVNTVVJFXTsKLSAgICAgICAgICAgICAgICByZXBvcnREYXRhW3BvcyArIE1vdGlvbkV2ZW50LlNBTVBMRV9TSVpFXSA9IHJhd0RhdGFbcG9zICsgTW90aW9uRXZlbnQuU0FNUExFX1NJWkVdOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBpbnQgYWN0aW9uOwotICAgICAgICAgICAgaW50IGVkZ2VGbGFncyA9IDA7Ci0gICAgICAgICAgICBpZiAobmV4dE51bVBvaW50ZXJzICE9IGxhc3ROdW1Qb2ludGVycykgewotICAgICAgICAgICAgICAgIGlmIChuZXh0TnVtUG9pbnRlcnMgPiBsYXN0TnVtUG9pbnRlcnMpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGxhc3ROdW1Qb2ludGVycyA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24gPSBNb3Rpb25FdmVudC5BQ1RJT05fRE9XTjsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1Eb3duVGltZSA9IGN1clRpbWU7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24gPSBNb3Rpb25FdmVudC5BQ1RJT05fUE9JTlRFUl9ET1dOCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHVwT3JEb3duUG9pbnRlciA8PCBNb3Rpb25FdmVudC5BQ1RJT05fUE9JTlRFUl9JTkRFWF9TSElGVCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBpZiAobnVtUG9pbnRlcnMgPT0gMSkgewotICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uID0gTW90aW9uRXZlbnQuQUNUSU9OX1VQOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uID0gTW90aW9uRXZlbnQuQUNUSU9OX1BPSU5URVJfVVAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAodXBPckRvd25Qb2ludGVyIDw8IE1vdGlvbkV2ZW50LkFDVElPTl9QT0lOVEVSX0lOREVYX1NISUZUKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBjdXJyZW50TW92ZSA9IG51bGw7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGFjdGlvbiA9IE1vdGlvbkV2ZW50LkFDVElPTl9NT1ZFOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBmaW5hbCBpbnQgZGlzcFcgPSBkaXNwbGF5LmdldFdpZHRoKCktMTsKLSAgICAgICAgICAgIGZpbmFsIGludCBkaXNwSCA9IGRpc3BsYXkuZ2V0SGVpZ2h0KCktMTsKLSAgICAgICAgICAgIGludCB3ID0gZGlzcFc7Ci0gICAgICAgICAgICBpbnQgaCA9IGRpc3BIOwotICAgICAgICAgICAgaWYgKG9yaWVudGF0aW9uID09IFN1cmZhY2UuUk9UQVRJT05fOTAKLSAgICAgICAgICAgICAgICAgICAgfHwgb3JpZW50YXRpb24gPT0gU3VyZmFjZS5ST1RBVElPTl8yNzApIHsKLSAgICAgICAgICAgICAgICBpbnQgdG1wID0gdzsKLSAgICAgICAgICAgICAgICB3ID0gaDsKLSAgICAgICAgICAgICAgICBoID0gdG1wOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBmaW5hbCBBYnNvbHV0ZUluZm8gYWJzWCA9IGRldmljZS5hYnNYOwotICAgICAgICAgICAgZmluYWwgQWJzb2x1dGVJbmZvIGFic1kgPSBkZXZpY2UuYWJzWTsKLSAgICAgICAgICAgIGZpbmFsIEFic29sdXRlSW5mbyBhYnNQcmVzc3VyZSA9IGRldmljZS5hYnNQcmVzc3VyZTsKLSAgICAgICAgICAgIGZpbmFsIEFic29sdXRlSW5mbyBhYnNTaXplID0gZGV2aWNlLmFic1NpemU7Ci0gICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8bnVtUG9pbnRlcnM7IGkrKykgewotICAgICAgICAgICAgICAgIGZpbmFsIGludCBqID0gaSAqIE1vdGlvbkV2ZW50Lk5VTV9TQU1QTEVfREFUQTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGlmIChhYnNYICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgcmVwb3J0RGF0YVtqICsgTW90aW9uRXZlbnQuU0FNUExFX1hdID0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKHJlcG9ydERhdGFbaiArIE1vdGlvbkV2ZW50LlNBTVBMRV9YXS1hYnNYLm1pblZhbHVlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIGFic1gucmFuZ2UpICogdzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGFic1kgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICByZXBvcnREYXRhW2ogKyBNb3Rpb25FdmVudC5TQU1QTEVfWV0gPQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICgocmVwb3J0RGF0YVtqICsgTW90aW9uRXZlbnQuU0FNUExFX1ldLWFic1kubWluVmFsdWUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8gYWJzWS5yYW5nZSkgKiBoOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoYWJzUHJlc3N1cmUgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICByZXBvcnREYXRhW2ogKyBNb3Rpb25FdmVudC5TQU1QTEVfUFJFU1NVUkVdID0gCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXBvcnREYXRhW2ogKyBNb3Rpb25FdmVudC5TQU1QTEVfUFJFU1NVUkVdLWFic1ByZXNzdXJlLm1pblZhbHVlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvIChmbG9hdClhYnNQcmVzc3VyZS5yYW5nZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChhYnNTaXplICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgcmVwb3J0RGF0YVtqICsgTW90aW9uRXZlbnQuU0FNUExFX1NJWkVdID0gCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKChyZXBvcnREYXRhW2ogKyBNb3Rpb25FdmVudC5TQU1QTEVfU0laRV0tYWJzU2l6ZS5taW5WYWx1ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyAoZmxvYXQpYWJzU2l6ZS5yYW5nZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIHN3aXRjaCAob3JpZW50YXRpb24pIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBTdXJmYWNlLlJPVEFUSU9OXzkwOiB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBmbG9hdCB0ZW1wID0gcmVwb3J0RGF0YVtqICsgTW90aW9uRXZlbnQuU0FNUExFX1hdOwotICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3J0RGF0YVtqICsgTW90aW9uRXZlbnQuU0FNUExFX1hdID0gcmVwb3J0RGF0YVtqICsgTW90aW9uRXZlbnQuU0FNUExFX1ldOwotICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3J0RGF0YVtqICsgTW90aW9uRXZlbnQuU0FNUExFX1ldID0gdy10ZW1wOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgY2FzZSBTdXJmYWNlLlJPVEFUSU9OXzE4MDogewotICAgICAgICAgICAgICAgICAgICAgICAgcmVwb3J0RGF0YVtqICsgTW90aW9uRXZlbnQuU0FNUExFX1hdID0gdy1yZXBvcnREYXRhW2ogKyBNb3Rpb25FdmVudC5TQU1QTEVfWF07Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXBvcnREYXRhW2ogKyBNb3Rpb25FdmVudC5TQU1QTEVfWV0gPSBoLXJlcG9ydERhdGFbaiArIE1vdGlvbkV2ZW50LlNBTVBMRV9ZXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgU3VyZmFjZS5ST1RBVElPTl8yNzA6IHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIGZsb2F0IHRlbXAgPSByZXBvcnREYXRhW2ogKyBNb3Rpb25FdmVudC5TQU1QTEVfWF07Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXBvcnREYXRhW2ogKyBNb3Rpb25FdmVudC5TQU1QTEVfWF0gPSBoLXJlcG9ydERhdGFbaiArIE1vdGlvbkV2ZW50LlNBTVBMRV9ZXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9ydERhdGFbaiArIE1vdGlvbkV2ZW50LlNBTVBMRV9ZXSA9IHRlbXA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gV2Ugb25seSBjb25zaWRlciB0aGUgZmlyc3QgcG9pbnRlciB3aGVuIGNvbXB1dGluZyB0aGUgZWRnZQotICAgICAgICAgICAgLy8gZmxhZ3MsIHNpbmNlIHRoZXkgYXJlIGdsb2JhbCB0byB0aGUgZXZlbnQuCi0gICAgICAgICAgICBpZiAoYWN0aW9uID09IE1vdGlvbkV2ZW50LkFDVElPTl9ET1dOKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHJlcG9ydERhdGFbTW90aW9uRXZlbnQuU0FNUExFX1hdIDw9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgZWRnZUZsYWdzIHw9IE1vdGlvbkV2ZW50LkVER0VfTEVGVDsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlcG9ydERhdGFbTW90aW9uRXZlbnQuU0FNUExFX1hdID49IGRpc3BXKSB7Ci0gICAgICAgICAgICAgICAgICAgIGVkZ2VGbGFncyB8PSBNb3Rpb25FdmVudC5FREdFX1JJR0hUOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAocmVwb3J0RGF0YVtNb3Rpb25FdmVudC5TQU1QTEVfWV0gPD0gMCkgewotICAgICAgICAgICAgICAgICAgICBlZGdlRmxhZ3MgfD0gTW90aW9uRXZlbnQuRURHRV9UT1A7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXBvcnREYXRhW01vdGlvbkV2ZW50LlNBTVBMRV9ZXSA+PSBkaXNwSCkgewotICAgICAgICAgICAgICAgICAgICBlZGdlRmxhZ3MgfD0gTW90aW9uRXZlbnQuRURHRV9CT1RUT007Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoY3VycmVudE1vdmUgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIGlmIChmYWxzZSkgU2xvZy5pKCJJbnB1dERldmljZSIsICJBZGRpbmcgYmF0Y2ggeD0iCi0gICAgICAgICAgICAgICAgICAgICAgICArIHJlcG9ydERhdGFbTW90aW9uRXZlbnQuU0FNUExFX1hdCi0gICAgICAgICAgICAgICAgICAgICAgICArICIgeT0iICsgcmVwb3J0RGF0YVtNb3Rpb25FdmVudC5TQU1QTEVfWV0KLSAgICAgICAgICAgICAgICAgICAgICAgICsgIiB0byAiICsgY3VycmVudE1vdmUpOwotICAgICAgICAgICAgICAgIGN1cnJlbnRNb3ZlLmFkZEJhdGNoKGN1clRpbWUsIHJlcG9ydERhdGEsIG1ldGFTdGF0ZSk7Ci0gICAgICAgICAgICAgICAgaWYgKFdpbmRvd01hbmFnZXJQb2xpY3kuV0FUQ0hfUE9JTlRFUikgewotICAgICAgICAgICAgICAgICAgICBTbG9nLmkoIktleUlucHV0UXVldWUiLCAiVXBkYXRpbmc6ICIgKyBjdXJyZW50TW92ZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBNb3Rpb25FdmVudCBtZSA9IE1vdGlvbkV2ZW50Lm9idGFpbk5hbm8obURvd25UaW1lLCBjdXJUaW1lLAotICAgICAgICAgICAgICAgICAgICBjdXJUaW1lTmFubywgYWN0aW9uLCBudW1Qb2ludGVycywgbVBvaW50ZXJJZHMsIHJlcG9ydERhdGEsCi0gICAgICAgICAgICAgICAgICAgIG1ldGFTdGF0ZSwgeFByZWNpc2lvbiwgeVByZWNpc2lvbiwgZGV2aWNlLmlkLCBlZGdlRmxhZ3MpOwotICAgICAgICAgICAgaWYgKGFjdGlvbiA9PSBNb3Rpb25FdmVudC5BQ1RJT05fTU9WRSkgewotICAgICAgICAgICAgICAgIGN1cnJlbnRNb3ZlID0gbWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChuZXh0TnVtUG9pbnRlcnMgPCBsYXN0TnVtUG9pbnRlcnMpIHsKLSAgICAgICAgICAgICAgICByZW1vdmVPbGRQb2ludGVyKHVwT3JEb3duUG9pbnRlcik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHJldHVybiBtZTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgYm9vbGVhbiBoYXNNb3JlKCkgewotICAgICAgICAgICAgcmV0dXJuIG1MYXN0TnVtUG9pbnRlcnMgIT0gbU5leHROdW1Qb2ludGVyczsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdm9pZCBmaW5pc2goKSB7Ci0gICAgICAgICAgICBtTmV4dE51bVBvaW50ZXJzID0gbUFkZGluZ1BvaW50ZXJPZmZzZXQgPSAwOwotICAgICAgICAgICAgbU5leHREYXRhW01vdGlvbkV2ZW50LlNBTVBMRV9QUkVTU1VSRV0gPSAwOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBNb3Rpb25FdmVudCBnZW5lcmF0ZVJlbE1vdGlvbihJbnB1dERldmljZSBkZXZpY2UsIGxvbmcgY3VyVGltZSwKLSAgICAgICAgICAgICAgICBsb25nIGN1clRpbWVOYW5vLCBpbnQgb3JpZW50YXRpb24sIGludCBtZXRhU3RhdGUpIHsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgZmluYWwgZmxvYXRbXSBzY2FsZWQgPSBtUmVwb3J0RGF0YTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgLy8gRm9yIG5vdyB3ZSBvbmx5IHN1cHBvcnQgMSBwb2ludGVyIHdpdGggcmVsYXRpdmUgbW90aW9ucy4KLSAgICAgICAgICAgIHNjYWxlZFtNb3Rpb25FdmVudC5TQU1QTEVfWF0gPSBtTmV4dERhdGFbTW90aW9uRXZlbnQuU0FNUExFX1hdOwotICAgICAgICAgICAgc2NhbGVkW01vdGlvbkV2ZW50LlNBTVBMRV9ZXSA9IG1OZXh0RGF0YVtNb3Rpb25FdmVudC5TQU1QTEVfWV07Ci0gICAgICAgICAgICBzY2FsZWRbTW90aW9uRXZlbnQuU0FNUExFX1BSRVNTVVJFXSA9IDEuMGY7Ci0gICAgICAgICAgICBzY2FsZWRbTW90aW9uRXZlbnQuU0FNUExFX1NJWkVdID0gMDsKLSAgICAgICAgICAgIGludCBlZGdlRmxhZ3MgPSAwOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpbnQgYWN0aW9uOwotICAgICAgICAgICAgaWYgKG1OZXh0TnVtUG9pbnRlcnMgIT0gbUxhc3ROdW1Qb2ludGVycykgewotICAgICAgICAgICAgICAgIG1OZXh0RGF0YVtNb3Rpb25FdmVudC5TQU1QTEVfWF0gPQotICAgICAgICAgICAgICAgICAgICAgICAgbU5leHREYXRhW01vdGlvbkV2ZW50LlNBTVBMRV9ZXSA9IDA7Ci0gICAgICAgICAgICAgICAgaWYgKG1OZXh0TnVtUG9pbnRlcnMgPiAwICYmIG1MYXN0TnVtUG9pbnRlcnMgPT0gMCkgewotICAgICAgICAgICAgICAgICAgICBhY3Rpb24gPSBNb3Rpb25FdmVudC5BQ1RJT05fRE9XTjsKLSAgICAgICAgICAgICAgICAgICAgbURvd25UaW1lID0gY3VyVGltZTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1OZXh0TnVtUG9pbnRlcnMgPT0gMCkgewotICAgICAgICAgICAgICAgICAgICBhY3Rpb24gPSBNb3Rpb25FdmVudC5BQ1RJT05fVVA7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgYWN0aW9uID0gTW90aW9uRXZlbnQuQUNUSU9OX01PVkU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG1MYXN0TnVtUG9pbnRlcnMgPSBtTmV4dE51bVBvaW50ZXJzOwotICAgICAgICAgICAgICAgIGN1cnJlbnRNb3ZlID0gbnVsbDsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgYWN0aW9uID0gTW90aW9uRXZlbnQuQUNUSU9OX01PVkU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHNjYWxlZFtNb3Rpb25FdmVudC5TQU1QTEVfWF0gKj0geE1vdmVTY2FsZTsKLSAgICAgICAgICAgIHNjYWxlZFtNb3Rpb25FdmVudC5TQU1QTEVfWV0gKj0geU1vdmVTY2FsZTsKLSAgICAgICAgICAgIHN3aXRjaCAob3JpZW50YXRpb24pIHsKLSAgICAgICAgICAgICAgICBjYXNlIFN1cmZhY2UuUk9UQVRJT05fOTA6IHsKLSAgICAgICAgICAgICAgICAgICAgZmluYWwgZmxvYXQgdGVtcCA9IHNjYWxlZFtNb3Rpb25FdmVudC5TQU1QTEVfWF07Ci0gICAgICAgICAgICAgICAgICAgIHNjYWxlZFtNb3Rpb25FdmVudC5TQU1QTEVfWF0gPSBzY2FsZWRbTW90aW9uRXZlbnQuU0FNUExFX1ldOwotICAgICAgICAgICAgICAgICAgICBzY2FsZWRbTW90aW9uRXZlbnQuU0FNUExFX1ldID0gLXRlbXA7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBjYXNlIFN1cmZhY2UuUk9UQVRJT05fMTgwOiB7Ci0gICAgICAgICAgICAgICAgICAgIHNjYWxlZFtNb3Rpb25FdmVudC5TQU1QTEVfWF0gPSAtc2NhbGVkW01vdGlvbkV2ZW50LlNBTVBMRV9YXTsKLSAgICAgICAgICAgICAgICAgICAgc2NhbGVkW01vdGlvbkV2ZW50LlNBTVBMRV9ZXSA9IC1zY2FsZWRbTW90aW9uRXZlbnQuU0FNUExFX1ldOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY2FzZSBTdXJmYWNlLlJPVEFUSU9OXzI3MDogewotICAgICAgICAgICAgICAgICAgICBmaW5hbCBmbG9hdCB0ZW1wID0gc2NhbGVkW01vdGlvbkV2ZW50LlNBTVBMRV9YXTsKLSAgICAgICAgICAgICAgICAgICAgc2NhbGVkW01vdGlvbkV2ZW50LlNBTVBMRV9YXSA9IC1zY2FsZWRbTW90aW9uRXZlbnQuU0FNUExFX1ldOwotICAgICAgICAgICAgICAgICAgICBzY2FsZWRbTW90aW9uRXZlbnQuU0FNUExFX1ldID0gdGVtcDsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAoY3VycmVudE1vdmUgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIGlmIChmYWxzZSkgU2xvZy5pKCJJbnB1dERldmljZSIsICJBZGRpbmcgYmF0Y2ggeD0iCi0gICAgICAgICAgICAgICAgICAgICAgICArIHNjYWxlZFtNb3Rpb25FdmVudC5TQU1QTEVfWF0KLSAgICAgICAgICAgICAgICAgICAgICAgICsgIiB5PSIgKyBzY2FsZWRbTW90aW9uRXZlbnQuU0FNUExFX1ldCi0gICAgICAgICAgICAgICAgICAgICAgICArICIgdG8gIiArIGN1cnJlbnRNb3ZlKTsKLSAgICAgICAgICAgICAgICBjdXJyZW50TW92ZS5hZGRCYXRjaChjdXJUaW1lLCBzY2FsZWQsIG1ldGFTdGF0ZSk7Ci0gICAgICAgICAgICAgICAgaWYgKFdpbmRvd01hbmFnZXJQb2xpY3kuV0FUQ0hfUE9JTlRFUikgewotICAgICAgICAgICAgICAgICAgICBTbG9nLmkoIktleUlucHV0UXVldWUiLCAiVXBkYXRpbmc6ICIgKyBjdXJyZW50TW92ZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBNb3Rpb25FdmVudCBtZSA9IE1vdGlvbkV2ZW50Lm9idGFpbk5hbm8obURvd25UaW1lLCBjdXJUaW1lLAotICAgICAgICAgICAgICAgICAgICBjdXJUaW1lTmFubywgYWN0aW9uLCAxLCBtUG9pbnRlcklkcywgc2NhbGVkLCBtZXRhU3RhdGUsCi0gICAgICAgICAgICAgICAgICAgIHhQcmVjaXNpb24sIHlQcmVjaXNpb24sIGRldmljZS5pZCwgZWRnZUZsYWdzKTsKLSAgICAgICAgICAgIGlmIChhY3Rpb24gPT0gTW90aW9uRXZlbnQuQUNUSU9OX01PVkUpIHsKLSAgICAgICAgICAgICAgICBjdXJyZW50TW92ZSA9IG1lOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIG1lOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIHN0YXRpYyBjbGFzcyBBYnNvbHV0ZUluZm8gewotICAgICAgICBpbnQgbWluVmFsdWU7Ci0gICAgICAgIGludCBtYXhWYWx1ZTsKLSAgICAgICAgaW50IHJhbmdlOwotICAgICAgICBpbnQgZmxhdDsKLSAgICAgICAgaW50IGZ1eno7Ci0gICAgICAgIAotICAgICAgICBmaW5hbCB2b2lkIGR1bXAoUHJpbnRXcml0ZXIgcHcpIHsKLSAgICAgICAgICAgIHB3LnByaW50KCJtaW5WYWx1ZT0iKTsgcHcucHJpbnQobWluVmFsdWUpOwotICAgICAgICAgICAgcHcucHJpbnQoIiBtYXhWYWx1ZT0iKTsgcHcucHJpbnQobWF4VmFsdWUpOwotICAgICAgICAgICAgcHcucHJpbnQoIiByYW5nZT0iKTsgcHcucHJpbnQocmFuZ2UpOwotICAgICAgICAgICAgcHcucHJpbnQoIiBmbGF0PSIpOyBwdy5wcmludChmbGF0KTsKLSAgICAgICAgICAgIHB3LnByaW50KCIgZnV6ej0iKTsgcHcucHJpbnQoZnV6eik7Ci0gICAgICAgIH0KLSAgICB9OwotICAgIAotICAgIElucHV0RGV2aWNlKGludCBfaWQsIGludCBfY2xhc3NlcywgU3RyaW5nIF9uYW1lLAotICAgICAgICAgICAgQWJzb2x1dGVJbmZvIF9hYnNYLCBBYnNvbHV0ZUluZm8gX2Fic1ksCi0gICAgICAgICAgICBBYnNvbHV0ZUluZm8gX2Fic1ByZXNzdXJlLCBBYnNvbHV0ZUluZm8gX2Fic1NpemUpIHsKLSAgICAgICAgaWQgPSBfaWQ7Ci0gICAgICAgIGNsYXNzZXMgPSBfY2xhc3NlczsKLSAgICAgICAgbmFtZSA9IF9uYW1lOwotICAgICAgICBhYnNYID0gX2Fic1g7Ci0gICAgICAgIGFic1kgPSBfYWJzWTsKLSAgICAgICAgYWJzUHJlc3N1cmUgPSBfYWJzUHJlc3N1cmU7Ci0gICAgICAgIGFic1NpemUgPSBfYWJzU2l6ZTsKLSAgICB9Ci19OwpkaWZmIC0tZ2l0IGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvSW5wdXRNYW5hZ2VyLmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9JbnB1dE1hbmFnZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZGFlMjdjCi0tLSAvZGV2L251bGwKKysrIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvSW5wdXRNYW5hZ2VyLmphdmEKQEAgLTAsMCArMSw0ODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLnNlcnZlcjsKKworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnV0aWwuWG1sVXRpbHM7CisKK2ltcG9ydCBvcmcueG1scHVsbC52MS5YbWxQdWxsUGFyc2VyOworCitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5yZXMuQ29uZmlndXJhdGlvbjsKK2ltcG9ydCBhbmRyb2lkLm9zLkVudmlyb25tZW50OworaW1wb3J0IGFuZHJvaWQub3MuTG9jYWxQb3dlck1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5vcy5Qb3dlck1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC51dGlsLlNsb2c7CitpbXBvcnQgYW5kcm9pZC51dGlsLlhtbDsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuSW5wdXRDaGFubmVsOworaW1wb3J0IGFuZHJvaWQudmlldy5LZXlFdmVudDsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQ7CitpbXBvcnQgYW5kcm9pZC52aWV3LlN1cmZhY2U7CitpbXBvcnQgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXJQb2xpY3k7CisKK2ltcG9ydCBqYXZhLmlvLkJ1ZmZlcmVkUmVhZGVyOworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLkZpbGVOb3RGb3VuZEV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLmlvLkZpbGVSZWFkZXI7CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtUmVhZGVyOworaW1wb3J0IGphdmEuaW8uUHJpbnRXcml0ZXI7CitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKKworLyoKKyAqIFdyYXBzIHRoZSBDKysgSW5wdXRNYW5hZ2VyIGFuZCBwcm92aWRlcyBpdHMgY2FsbGJhY2tzLgorICogCisgKiBYWFggVGVtcHRlZCB0byBwcm9tb3RlIHRoaXMgdG8gYSBmaXJzdC1jbGFzcyBzZXJ2aWNlLCBpZS4gSW5wdXRNYW5hZ2VyU2VydmljZSwgdG8KKyAqICAgICBpbXByb3ZlIHNlcGFyYXRpb24gb2YgY29uY2VybnMgd2l0aCByZXNwZWN0IHRvIHRoZSB3aW5kb3cgbWFuYWdlci4KKyAqLworcHVibGljIGNsYXNzIElucHV0TWFuYWdlciB7CisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSAiSW5wdXRNYW5hZ2VyIjsKKyAgICAKKyAgICBwcml2YXRlIGZpbmFsIENhbGxiYWNrcyBtQ2FsbGJhY2tzOworICAgIHByaXZhdGUgZmluYWwgQ29udGV4dCBtQ29udGV4dDsKKyAgICBwcml2YXRlIGZpbmFsIFdpbmRvd01hbmFnZXJTZXJ2aWNlIG1XaW5kb3dNYW5hZ2VyU2VydmljZTsKKyAgICBwcml2YXRlIGZpbmFsIFBvd2VyTWFuYWdlciBtUG93ZXJNYW5hZ2VyOworICAgIHByaXZhdGUgZmluYWwgUG93ZXJNYW5hZ2VyU2VydmljZSBtUG93ZXJNYW5hZ2VyU2VydmljZTsKKyAgICAKKyAgICBwcml2YXRlIGludCBtVG91Y2hTY3JlZW5Db25maWc7CisgICAgcHJpdmF0ZSBpbnQgbUtleWJvYXJkQ29uZmlnOworICAgIHByaXZhdGUgaW50IG1OYXZpZ2F0aW9uQ29uZmlnOworICAgIAorICAgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSB2b2lkIG5hdGl2ZUluaXQoQ2FsbGJhY2tzIGNhbGxiYWNrcyk7CisgICAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIHZvaWQgbmF0aXZlU3RhcnQoKTsKKyAgICBwcml2YXRlIHN0YXRpYyBuYXRpdmUgdm9pZCBuYXRpdmVTZXREaXNwbGF5U2l6ZShpbnQgZGlzcGxheUlkLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpOworICAgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSB2b2lkIG5hdGl2ZVNldERpc3BsYXlPcmllbnRhdGlvbihpbnQgZGlzcGxheUlkLCBpbnQgcm90YXRpb24pOworICAgIAorICAgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSBpbnQgbmF0aXZlR2V0U2NhbkNvZGVTdGF0ZShpbnQgZGV2aWNlSWQsIGludCBkZXZpY2VDbGFzc2VzLAorICAgICAgICAgICAgaW50IHNjYW5Db2RlKTsKKyAgICBwcml2YXRlIHN0YXRpYyBuYXRpdmUgaW50IG5hdGl2ZUdldEtleUNvZGVTdGF0ZShpbnQgZGV2aWNlSWQsIGludCBkZXZpY2VDbGFzc2VzLAorICAgICAgICAgICAgaW50IGtleUNvZGUpOworICAgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSBpbnQgbmF0aXZlR2V0U3dpdGNoU3RhdGUoaW50IGRldmljZUlkLCBpbnQgZGV2aWNlQ2xhc3NlcywKKyAgICAgICAgICAgIGludCBzdyk7CisgICAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIGJvb2xlYW4gbmF0aXZlSGFzS2V5cyhpbnRbXSBrZXlDb2RlcywgYm9vbGVhbltdIGtleUV4aXN0cyk7CisgICAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIHZvaWQgbmF0aXZlUmVnaXN0ZXJJbnB1dENoYW5uZWwoSW5wdXRDaGFubmVsIGlucHV0Q2hhbm5lbCk7CisgICAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIHZvaWQgbmF0aXZlVW5yZWdpc3RlcklucHV0Q2hhbm5lbChJbnB1dENoYW5uZWwgaW5wdXRDaGFubmVsKTsKKyAgICBwcml2YXRlIHN0YXRpYyBuYXRpdmUgaW50IG5hdGl2ZUluamVjdEtleUV2ZW50KEtleUV2ZW50IGV2ZW50LCBpbnQgbmF0dXJlLAorICAgICAgICAgICAgaW50IGluamVjdG9yUGlkLCBpbnQgaW5qZWN0b3JVaWQsIGJvb2xlYW4gc3luYywgaW50IHRpbWVvdXRNaWxsaXMpOworICAgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSBpbnQgbmF0aXZlSW5qZWN0TW90aW9uRXZlbnQoTW90aW9uRXZlbnQgZXZlbnQsIGludCBuYXR1cmUsCisgICAgICAgICAgICBpbnQgaW5qZWN0b3JQaWQsIGludCBpbmplY3RvclVpZCwgYm9vbGVhbiBzeW5jLCBpbnQgdGltZW91dE1pbGxpcyk7CisgICAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIHZvaWQgbmF0aXZlU2V0SW5wdXRXaW5kb3dzKElucHV0V2luZG93W10gd2luZG93cyk7CisgICAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIHZvaWQgbmF0aXZlU2V0SW5wdXREaXNwYXRjaE1vZGUoYm9vbGVhbiBlbmFibGVkLCBib29sZWFuIGZyb3plbik7CisgICAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIHZvaWQgbmF0aXZlU2V0Rm9jdXNlZEFwcGxpY2F0aW9uKElucHV0QXBwbGljYXRpb24gYXBwbGljYXRpb24pOworICAgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSB2b2lkIG5hdGl2ZVByZWVtcHRJbnB1dERpc3BhdGNoKCk7CisgICAgCisgICAgLy8gRGV2aWNlIGNsYXNzIGFzIGRlZmluZWQgYnkgRXZlbnRIdWIuCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENMQVNTX0tFWUJPQVJEID0gMHgwMDAwMDAwMTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ0xBU1NfQUxQSEFLRVkgPSAweDAwMDAwMDAyOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBDTEFTU19UT1VDSFNDUkVFTiA9IDB4MDAwMDAwMDQ7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENMQVNTX1RSQUNLQkFMTCA9IDB4MDAwMDAwMDg7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IENMQVNTX1RPVUNIU0NSRUVOX01UID0gMHgwMDAwMDAxMDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ0xBU1NfRFBBRCA9IDB4MDAwMDAwMjA7CisgICAgCisgICAgLy8gSW5wdXQgZXZlbnQgaW5qZWN0aW9uIGNvbnN0YW50cyBkZWZpbmVkIGluIElucHV0RGlzcGF0Y2hlci5oLgorICAgIHN0YXRpYyBmaW5hbCBpbnQgSU5QVVRfRVZFTlRfSU5KRUNUSU9OX1NVQ0NFRURFRCA9IDA7CisgICAgc3RhdGljIGZpbmFsIGludCBJTlBVVF9FVkVOVF9JTkpFQ1RJT05fUEVSTUlTU0lPTl9ERU5JRUQgPSAxOworICAgIHN0YXRpYyBmaW5hbCBpbnQgSU5QVVRfRVZFTlRfSU5KRUNUSU9OX0ZBSUxFRCA9IDI7CisgICAgc3RhdGljIGZpbmFsIGludCBJTlBVVF9FVkVOVF9JTkpFQ1RJT05fVElNRURfT1VUID0gMzsKKyAgICAKKyAgICBwdWJsaWMgSW5wdXRNYW5hZ2VyKENvbnRleHQgY29udGV4dCwKKyAgICAgICAgICAgIFdpbmRvd01hbmFnZXJTZXJ2aWNlIHdpbmRvd01hbmFnZXJTZXJ2aWNlLAorICAgICAgICAgICAgUG93ZXJNYW5hZ2VyIHBvd2VyTWFuYWdlciwKKyAgICAgICAgICAgIFBvd2VyTWFuYWdlclNlcnZpY2UgcG93ZXJNYW5hZ2VyU2VydmljZSkgeworICAgICAgICB0aGlzLm1Db250ZXh0ID0gY29udGV4dDsKKyAgICAgICAgdGhpcy5tV2luZG93TWFuYWdlclNlcnZpY2UgPSB3aW5kb3dNYW5hZ2VyU2VydmljZTsKKyAgICAgICAgdGhpcy5tUG93ZXJNYW5hZ2VyID0gcG93ZXJNYW5hZ2VyOworICAgICAgICB0aGlzLm1Qb3dlck1hbmFnZXJTZXJ2aWNlID0gcG93ZXJNYW5hZ2VyU2VydmljZTsKKyAgICAgICAgCisgICAgICAgIHRoaXMubUNhbGxiYWNrcyA9IG5ldyBDYWxsYmFja3MoKTsKKyAgICAgICAgCisgICAgICAgIG1Ub3VjaFNjcmVlbkNvbmZpZyA9IENvbmZpZ3VyYXRpb24uVE9VQ0hTQ1JFRU5fTk9UT1VDSDsKKyAgICAgICAgbUtleWJvYXJkQ29uZmlnID0gQ29uZmlndXJhdGlvbi5LRVlCT0FSRF9OT0tFWVM7CisgICAgICAgIG1OYXZpZ2F0aW9uQ29uZmlnID0gQ29uZmlndXJhdGlvbi5OQVZJR0FUSU9OX05PTkFWOworICAgICAgICAKKyAgICAgICAgaW5pdCgpOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHZvaWQgaW5pdCgpIHsKKyAgICAgICAgU2xvZy5pKFRBRywgIkluaXRpYWxpemluZyBpbnB1dCBtYW5hZ2VyIik7CisgICAgICAgIG5hdGl2ZUluaXQobUNhbGxiYWNrcyk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIHN0YXJ0KCkgeworICAgICAgICBTbG9nLmkoVEFHLCAiU3RhcnRpbmcgaW5wdXQgbWFuYWdlciIpOworICAgICAgICBuYXRpdmVTdGFydCgpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBzZXREaXNwbGF5U2l6ZShpbnQgZGlzcGxheUlkLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpIHsKKyAgICAgICAgaWYgKHdpZHRoIDw9IDAgfHwgaGVpZ2h0IDw9IDApIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgZGlzcGxheSBpZCBvciBkaW1lbnNpb25zLiIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBTbG9nLmkoVEFHLCAiU2V0dGluZyBkaXNwbGF5ICMiICsgZGlzcGxheUlkICsgIiBzaXplIHRvICIgKyB3aWR0aCArICJ4IiArIGhlaWdodCk7CisgICAgICAgIG5hdGl2ZVNldERpc3BsYXlTaXplKGRpc3BsYXlJZCwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIHNldERpc3BsYXlPcmllbnRhdGlvbihpbnQgZGlzcGxheUlkLCBpbnQgcm90YXRpb24pIHsKKyAgICAgICAgaWYgKHJvdGF0aW9uIDwgU3VyZmFjZS5ST1RBVElPTl8wIHx8IHJvdGF0aW9uID4gU3VyZmFjZS5ST1RBVElPTl8yNzApIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgcm90YXRpb24uIik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIFNsb2cuaShUQUcsICJTZXR0aW5nIGRpc3BsYXkgIyIgKyBkaXNwbGF5SWQgKyAiIG9yaWVudGF0aW9uIHRvICIgKyByb3RhdGlvbik7CisgICAgICAgIG5hdGl2ZVNldERpc3BsYXlPcmllbnRhdGlvbihkaXNwbGF5SWQsIHJvdGF0aW9uKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgZ2V0SW5wdXRDb25maWd1cmF0aW9uKENvbmZpZ3VyYXRpb24gY29uZmlnKSB7CisgICAgICAgIGlmIChjb25maWcgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiY29uZmlnIG11c3Qgbm90IGJlIG51bGwuIik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGNvbmZpZy50b3VjaHNjcmVlbiA9IG1Ub3VjaFNjcmVlbkNvbmZpZzsKKyAgICAgICAgY29uZmlnLmtleWJvYXJkID0gbUtleWJvYXJkQ29uZmlnOworICAgICAgICBjb25maWcubmF2aWdhdGlvbiA9IG1OYXZpZ2F0aW9uQ29uZmlnOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgaW50IGdldFNjYW5jb2RlU3RhdGUoaW50IGNvZGUpIHsKKyAgICAgICAgcmV0dXJuIG5hdGl2ZUdldFNjYW5Db2RlU3RhdGUoMCwgLTEsIGNvZGUpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgaW50IGdldFNjYW5jb2RlU3RhdGUoaW50IGRldmljZUlkLCBpbnQgY29kZSkgeworICAgICAgICByZXR1cm4gbmF0aXZlR2V0U2NhbkNvZGVTdGF0ZShkZXZpY2VJZCwgLTEsIGNvZGUpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgaW50IGdldFRyYWNrYmFsbFNjYW5jb2RlU3RhdGUoaW50IGNvZGUpIHsKKyAgICAgICAgcmV0dXJuIG5hdGl2ZUdldFNjYW5Db2RlU3RhdGUoLTEsIENMQVNTX1RSQUNLQkFMTCwgY29kZSk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBpbnQgZ2V0RFBhZFNjYW5jb2RlU3RhdGUoaW50IGNvZGUpIHsKKyAgICAgICAgcmV0dXJuIG5hdGl2ZUdldFNjYW5Db2RlU3RhdGUoLTEsIENMQVNTX0RQQUQsIGNvZGUpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgaW50IGdldEtleWNvZGVTdGF0ZShpbnQgY29kZSkgeworICAgICAgICByZXR1cm4gbmF0aXZlR2V0S2V5Q29kZVN0YXRlKDAsIC0xLCBjb2RlKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIGludCBnZXRLZXljb2RlU3RhdGUoaW50IGRldmljZUlkLCBpbnQgY29kZSkgeworICAgICAgICByZXR1cm4gbmF0aXZlR2V0S2V5Q29kZVN0YXRlKGRldmljZUlkLCAtMSwgY29kZSk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBpbnQgZ2V0VHJhY2tiYWxsS2V5Y29kZVN0YXRlKGludCBjb2RlKSB7CisgICAgICAgIHJldHVybiBuYXRpdmVHZXRLZXlDb2RlU3RhdGUoLTEsIENMQVNTX1RSQUNLQkFMTCwgY29kZSk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBpbnQgZ2V0RFBhZEtleWNvZGVTdGF0ZShpbnQgY29kZSkgeworICAgICAgICByZXR1cm4gbmF0aXZlR2V0S2V5Q29kZVN0YXRlKC0xLCBDTEFTU19EUEFELCBjb2RlKTsKKyAgICB9CisKKyAgICBwdWJsaWMgaW50IGdldFN3aXRjaFN0YXRlKGludCBzdykgeworICAgICAgICByZXR1cm4gbmF0aXZlR2V0U3dpdGNoU3RhdGUoLTEsIC0xLCBzdyk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBpbnQgZ2V0U3dpdGNoU3RhdGUoaW50IGRldmljZUlkLCBpbnQgc3cpIHsKKyAgICAgICAgcmV0dXJuIG5hdGl2ZUdldFN3aXRjaFN0YXRlKGRldmljZUlkLCAtMSwgc3cpOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGhhc0tleXMoaW50W10ga2V5Q29kZXMsIGJvb2xlYW5bXSBrZXlFeGlzdHMpIHsKKyAgICAgICAgaWYgKGtleUNvZGVzID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oImtleUNvZGVzIG11c3Qgbm90IGJlIG51bGwuIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGtleUV4aXN0cyA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJrZXlFeGlzdHMgbXVzdCBub3QgYmUgbnVsbC4iKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIG5hdGl2ZUhhc0tleXMoa2V5Q29kZXMsIGtleUV4aXN0cyk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIHJlZ2lzdGVySW5wdXRDaGFubmVsKElucHV0Q2hhbm5lbCBpbnB1dENoYW5uZWwpIHsKKyAgICAgICAgaWYgKGlucHV0Q2hhbm5lbCA9PSBudWxsKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJpbnB1dENoYW5uZWwgbXVzdCBub3QgYmUgbnVsbC4iKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbmF0aXZlUmVnaXN0ZXJJbnB1dENoYW5uZWwoaW5wdXRDaGFubmVsKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgdW5yZWdpc3RlcklucHV0Q2hhbm5lbChJbnB1dENoYW5uZWwgaW5wdXRDaGFubmVsKSB7CisgICAgICAgIGlmIChpbnB1dENoYW5uZWwgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiaW5wdXRDaGFubmVsIG11c3Qgbm90IGJlIG51bGwuIik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG5hdGl2ZVVucmVnaXN0ZXJJbnB1dENoYW5uZWwoaW5wdXRDaGFubmVsKTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogSW5qZWN0cyBhIGtleSBldmVudCBpbnRvIHRoZSBldmVudCBzeXN0ZW0gb24gYmVoYWxmIG9mIGFuIGFwcGxpY2F0aW9uLgorICAgICAqIFRoaXMgbWV0aG9kIG1heSBibG9jayBldmVuIGlmIHN5bmMgaXMgZmFsc2UgYmVjYXVzZSBpdCBtdXN0IHdhaXQgZm9yIHByZXZpb3VzIGV2ZW50cworICAgICAqIHRvIGJlIGRpc3BhdGNoZWQgYmVmb3JlIGl0IGNhbiBkZXRlcm1pbmUgd2hldGhlciBpbnB1dCBldmVudCBpbmplY3Rpb24gd2lsbCBiZQorICAgICAqIHBlcm1pdHRlZCBiYXNlZCBvbiB0aGUgY3VycmVudCBpbnB1dCBmb2N1cy4KKyAgICAgKiBAcGFyYW0gZXZlbnQgVGhlIGV2ZW50IHRvIGluamVjdC4KKyAgICAgKiBAcGFyYW0gbmF0dXJlIFRoZSBuYXR1cmUgb2YgdGhlIGV2ZW50LgorICAgICAqIEBwYXJhbSBpbmplY3RvclBpZCBUaGUgcGlkIG9mIHRoZSBpbmplY3RpbmcgYXBwbGljYXRpb24uCisgICAgICogQHBhcmFtIGluamVjdG9yVWlkIFRoZSB1aWQgb2YgdGhlIGluamVjdGluZyBhcHBsaWNhdGlvbi4KKyAgICAgKiBAcGFyYW0gc3luYyBJZiB0cnVlLCB3YWl0cyBmb3IgdGhlIGV2ZW50IHRvIGJlIGNvbXBsZXRlZCBiZWZvcmUgcmV0dXJuaW5nLgorICAgICAqIEBwYXJhbSB0aW1lb3V0TWlsbGlzIFRoZSBpbmplY3Rpb24gdGltZW91dCBpbiBtaWxsaXNlY29uZHMuCisgICAgICogQHJldHVybiBPbmUgb2YgdGhlIElOUFVUX0VWRU5UX0lOSkVDVElPTl9YWFggY29uc3RhbnRzLgorICAgICAqLworICAgIHB1YmxpYyBpbnQgaW5qZWN0S2V5RXZlbnQoS2V5RXZlbnQgZXZlbnQsIGludCBuYXR1cmUsIGludCBpbmplY3RvclBpZCwgaW50IGluamVjdG9yVWlkLAorICAgICAgICAgICAgYm9vbGVhbiBzeW5jLCBpbnQgdGltZW91dE1pbGxpcykgeworICAgICAgICBpZiAoZXZlbnQgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiZXZlbnQgbXVzdCBub3QgYmUgbnVsbCIpOworICAgICAgICB9CisgICAgICAgIGlmIChpbmplY3RvclBpZCA8IDAgfHwgaW5qZWN0b3JVaWQgPCAwKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJpbmplY3RvclBpZCBhbmQgaW5qZWN0b3JVaWQgbXVzdCBub3QgYmUgbmVnYXRpdmUuIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRpbWVvdXRNaWxsaXMgPD0gMCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigidGltZW91dE1pbGxpcyBtdXN0IGJlIHBvc2l0aXZlIik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBuYXRpdmVJbmplY3RLZXlFdmVudChldmVudCwgbmF0dXJlLCBpbmplY3RvclBpZCwgaW5qZWN0b3JVaWQsCisgICAgICAgICAgICAgICAgc3luYywgdGltZW91dE1pbGxpcyk7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEluamVjdHMgYSBtb3Rpb24gZXZlbnQgaW50byB0aGUgZXZlbnQgc3lzdGVtIG9uIGJlaGFsZiBvZiBhbiBhcHBsaWNhdGlvbi4KKyAgICAgKiBUaGlzIG1ldGhvZCBtYXkgYmxvY2sgZXZlbiBpZiBzeW5jIGlzIGZhbHNlIGJlY2F1c2UgaXQgbXVzdCB3YWl0IGZvciBwcmV2aW91cyBldmVudHMKKyAgICAgKiB0byBiZSBkaXNwYXRjaGVkIGJlZm9yZSBpdCBjYW4gZGV0ZXJtaW5lIHdoZXRoZXIgaW5wdXQgZXZlbnQgaW5qZWN0aW9uIHdpbGwgYmUKKyAgICAgKiBwZXJtaXR0ZWQgYmFzZWQgb24gdGhlIGN1cnJlbnQgaW5wdXQgZm9jdXMuCisgICAgICogQHBhcmFtIGV2ZW50IFRoZSBldmVudCB0byBpbmplY3QuCisgICAgICogQHBhcmFtIG5hdHVyZSBUaGUgbmF0dXJlIG9mIHRoZSBldmVudC4KKyAgICAgKiBAcGFyYW0gc3luYyBJZiB0cnVlLCB3YWl0cyBmb3IgdGhlIGV2ZW50IHRvIGJlIGNvbXBsZXRlZCBiZWZvcmUgcmV0dXJuaW5nLgorICAgICAqIEBwYXJhbSBpbmplY3RvclBpZCBUaGUgcGlkIG9mIHRoZSBpbmplY3RpbmcgYXBwbGljYXRpb24uCisgICAgICogQHBhcmFtIGluamVjdG9yVWlkIFRoZSB1aWQgb2YgdGhlIGluamVjdGluZyBhcHBsaWNhdGlvbi4KKyAgICAgKiBAcGFyYW0gc3luYyBJZiB0cnVlLCB3YWl0cyBmb3IgdGhlIGV2ZW50IHRvIGJlIGNvbXBsZXRlZCBiZWZvcmUgcmV0dXJuaW5nLgorICAgICAqIEBwYXJhbSB0aW1lb3V0TWlsbGlzIFRoZSBpbmplY3Rpb24gdGltZW91dCBpbiBtaWxsaXNlY29uZHMuCisgICAgICogQHJldHVybiBPbmUgb2YgdGhlIElOUFVUX0VWRU5UX0lOSkVDVElPTl9YWFggY29uc3RhbnRzLgorICAgICAqLworICAgIHB1YmxpYyBpbnQgaW5qZWN0TW90aW9uRXZlbnQoTW90aW9uRXZlbnQgZXZlbnQsIGludCBuYXR1cmUsIGludCBpbmplY3RvclBpZCwgaW50IGluamVjdG9yVWlkLAorICAgICAgICAgICAgYm9vbGVhbiBzeW5jLCBpbnQgdGltZW91dE1pbGxpcykgeworICAgICAgICBpZiAoZXZlbnQgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiZXZlbnQgbXVzdCBub3QgYmUgbnVsbCIpOworICAgICAgICB9CisgICAgICAgIGlmIChpbmplY3RvclBpZCA8IDAgfHwgaW5qZWN0b3JVaWQgPCAwKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJpbmplY3RvclBpZCBhbmQgaW5qZWN0b3JVaWQgbXVzdCBub3QgYmUgbmVnYXRpdmUuIik7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHRpbWVvdXRNaWxsaXMgPD0gMCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigidGltZW91dE1pbGxpcyBtdXN0IGJlIHBvc2l0aXZlIik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiBuYXRpdmVJbmplY3RNb3Rpb25FdmVudChldmVudCwgbmF0dXJlLCBpbmplY3RvclBpZCwgaW5qZWN0b3JVaWQsCisgICAgICAgICAgICAgICAgc3luYywgdGltZW91dE1pbGxpcyk7CisgICAgfQorICAgIAorICAgIHB1YmxpYyB2b2lkIHNldElucHV0V2luZG93cyhJbnB1dFdpbmRvd1tdIHdpbmRvd3MpIHsKKyAgICAgICAgbmF0aXZlU2V0SW5wdXRXaW5kb3dzKHdpbmRvd3MpOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBzZXRGb2N1c2VkQXBwbGljYXRpb24oSW5wdXRBcHBsaWNhdGlvbiBhcHBsaWNhdGlvbikgeworICAgICAgICBuYXRpdmVTZXRGb2N1c2VkQXBwbGljYXRpb24oYXBwbGljYXRpb24pOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBwcmVlbXB0SW5wdXREaXNwYXRjaCgpIHsKKyAgICAgICAgbmF0aXZlUHJlZW1wdElucHV0RGlzcGF0Y2goKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgc2V0SW5wdXREaXNwYXRjaE1vZGUoYm9vbGVhbiBlbmFibGVkLCBib29sZWFuIGZyb3plbikgeworICAgICAgICBuYXRpdmVTZXRJbnB1dERpc3BhdGNoTW9kZShlbmFibGVkLCBmcm96ZW4pOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBkdW1wKFByaW50V3JpdGVyIHB3KSB7CisgICAgICAgIC8vIFRPRE8KKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgY2xhc3MgVmlydHVhbEtleURlZmluaXRpb24geworICAgICAgICBwdWJsaWMgaW50IHNjYW5Db2RlOworICAgICAgICAKKyAgICAgICAgLy8gY29uZmlndXJlZCBwb3NpdGlvbiBkYXRhLCBzcGVjaWZpZWQgaW4gZGlzcGxheSBjb29yZHMKKyAgICAgICAgcHVibGljIGludCBjZW50ZXJYOworICAgICAgICBwdWJsaWMgaW50IGNlbnRlclk7CisgICAgICAgIHB1YmxpYyBpbnQgd2lkdGg7CisgICAgICAgIHB1YmxpYyBpbnQgaGVpZ2h0OworICAgIH0KKyAgICAKKyAgICAvKgorICAgICAqIENhbGxiYWNrcyBmcm9tIG5hdGl2ZS4KKyAgICAgKi8KKyAgICBwcml2YXRlIGNsYXNzIENhbGxiYWNrcyB7CisgICAgICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gIklucHV0TWFuYWdlci1DYWxsYmFja3MiOworICAgICAgICAKKyAgICAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBERUJVR19WSVJUVUFMX0tFWVMgPSBmYWxzZTsKKyAgICAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEVYQ0xVREVEX0RFVklDRVNfUEFUSCA9ICJldGMvZXhjbHVkZWQtaW5wdXQtZGV2aWNlcy54bWwiOworICAgICAgICAKKyAgICAgICAgQFN1cHByZXNzV2FybmluZ3MoInVudXNlZCIpCisgICAgICAgIHB1YmxpYyB2b2lkIHZpcnR1YWxLZXlEb3duRmVlZGJhY2soKSB7CisgICAgICAgICAgICBtV2luZG93TWFuYWdlclNlcnZpY2UubUlucHV0TW9uaXRvci52aXJ0dWFsS2V5RG93bkZlZWRiYWNrKCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJ1bnVzZWQiKQorICAgICAgICBwdWJsaWMgdm9pZCBub3RpZnlDb25maWd1cmF0aW9uQ2hhbmdlZChsb25nIHdoZW5OYW5vcywKKyAgICAgICAgICAgICAgICBpbnQgdG91Y2hTY3JlZW5Db25maWcsIGludCBrZXlib2FyZENvbmZpZywgaW50IG5hdmlnYXRpb25Db25maWcpIHsKKyAgICAgICAgICAgIG1Ub3VjaFNjcmVlbkNvbmZpZyA9IHRvdWNoU2NyZWVuQ29uZmlnOworICAgICAgICAgICAgbUtleWJvYXJkQ29uZmlnID0ga2V5Ym9hcmRDb25maWc7CisgICAgICAgICAgICBtTmF2aWdhdGlvbkNvbmZpZyA9IG5hdmlnYXRpb25Db25maWc7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyU2VydmljZS5zZW5kTmV3Q29uZmlndXJhdGlvbigpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBAU3VwcHJlc3NXYXJuaW5ncygidW51c2VkIikKKyAgICAgICAgcHVibGljIHZvaWQgbm90aWZ5TGlkU3dpdGNoQ2hhbmdlZChsb25nIHdoZW5OYW5vcywgYm9vbGVhbiBsaWRPcGVuKSB7CisgICAgICAgICAgICBtV2luZG93TWFuYWdlclNlcnZpY2UubUlucHV0TW9uaXRvci5ub3RpZnlMaWRTd2l0Y2hDaGFuZ2VkKHdoZW5OYW5vcywgbGlkT3Blbik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJ1bnVzZWQiKQorICAgICAgICBwdWJsaWMgdm9pZCBub3RpZnlJbnB1dENoYW5uZWxCcm9rZW4oSW5wdXRDaGFubmVsIGlucHV0Q2hhbm5lbCkgeworICAgICAgICAgICAgbVdpbmRvd01hbmFnZXJTZXJ2aWNlLm1JbnB1dE1vbml0b3Iubm90aWZ5SW5wdXRDaGFubmVsQnJva2VuKGlucHV0Q2hhbm5lbCk7CisgICAgICAgIH0KKworICAgICAgICBAU3VwcHJlc3NXYXJuaW5ncygidW51c2VkIikKKyAgICAgICAgcHVibGljIGxvbmcgbm90aWZ5SW5wdXRDaGFubmVsQU5SKElucHV0Q2hhbm5lbCBpbnB1dENoYW5uZWwpIHsKKyAgICAgICAgICAgIHJldHVybiBtV2luZG93TWFuYWdlclNlcnZpY2UubUlucHV0TW9uaXRvci5ub3RpZnlJbnB1dENoYW5uZWxBTlIoaW5wdXRDaGFubmVsKTsKKyAgICAgICAgfQorCisgICAgICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJ1bnVzZWQiKQorICAgICAgICBwdWJsaWMgdm9pZCBub3RpZnlJbnB1dENoYW5uZWxSZWNvdmVyZWRGcm9tQU5SKElucHV0Q2hhbm5lbCBpbnB1dENoYW5uZWwpIHsKKyAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyU2VydmljZS5tSW5wdXRNb25pdG9yLm5vdGlmeUlucHV0Q2hhbm5lbFJlY292ZXJlZEZyb21BTlIoaW5wdXRDaGFubmVsKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQFN1cHByZXNzV2FybmluZ3MoInVudXNlZCIpCisgICAgICAgIHB1YmxpYyBsb25nIG5vdGlmeUFOUihPYmplY3QgdG9rZW4pIHsKKyAgICAgICAgICAgIHJldHVybiBtV2luZG93TWFuYWdlclNlcnZpY2UubUlucHV0TW9uaXRvci5ub3RpZnlBTlIodG9rZW4pOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBAU3VwcHJlc3NXYXJuaW5ncygidW51c2VkIikKKyAgICAgICAgcHVibGljIGludCBpbnRlcmNlcHRLZXlCZWZvcmVRdWV1ZWluZyhsb25nIHdoZW5OYW5vcywgaW50IGtleUNvZGUsIGJvb2xlYW4gZG93biwKKyAgICAgICAgICAgICAgICBpbnQgcG9saWN5RmxhZ3MsIGJvb2xlYW4gaXNTY3JlZW5PbikgeworICAgICAgICAgICAgcmV0dXJuIG1XaW5kb3dNYW5hZ2VyU2VydmljZS5tSW5wdXRNb25pdG9yLmludGVyY2VwdEtleUJlZm9yZVF1ZXVlaW5nKAorICAgICAgICAgICAgICAgICAgICB3aGVuTmFub3MsIGtleUNvZGUsIGRvd24sIHBvbGljeUZsYWdzLCBpc1NjcmVlbk9uKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQFN1cHByZXNzV2FybmluZ3MoInVudXNlZCIpCisgICAgICAgIHB1YmxpYyBib29sZWFuIGludGVyY2VwdEtleUJlZm9yZURpc3BhdGNoaW5nKElucHV0Q2hhbm5lbCBmb2N1cywgaW50IGFjdGlvbiwKKyAgICAgICAgICAgICAgICBpbnQgZmxhZ3MsIGludCBrZXlDb2RlLCBpbnQgbWV0YVN0YXRlLCBpbnQgcmVwZWF0Q291bnQsIGludCBwb2xpY3lGbGFncykgeworICAgICAgICAgICAgcmV0dXJuIG1XaW5kb3dNYW5hZ2VyU2VydmljZS5tSW5wdXRNb25pdG9yLmludGVyY2VwdEtleUJlZm9yZURpc3BhdGNoaW5nKGZvY3VzLAorICAgICAgICAgICAgICAgICAgICBhY3Rpb24sIGZsYWdzLCBrZXlDb2RlLCBtZXRhU3RhdGUsIHJlcGVhdENvdW50LCBwb2xpY3lGbGFncyk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJ1bnVzZWQiKQorICAgICAgICBwdWJsaWMgYm9vbGVhbiBjaGVja0luamVjdEV2ZW50c1Blcm1pc3Npb24oaW50IGluamVjdG9yUGlkLCBpbnQgaW5qZWN0b3JVaWQpIHsKKyAgICAgICAgICAgIHJldHVybiBtQ29udGV4dC5jaGVja1Blcm1pc3Npb24oCisgICAgICAgICAgICAgICAgICAgIGFuZHJvaWQuTWFuaWZlc3QucGVybWlzc2lvbi5JTkpFQ1RfRVZFTlRTLCBpbmplY3RvclBpZCwgaW5qZWN0b3JVaWQpCisgICAgICAgICAgICAgICAgICAgID09IFBhY2thZ2VNYW5hZ2VyLlBFUk1JU1NJT05fR1JBTlRFRDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQFN1cHByZXNzV2FybmluZ3MoInVudXNlZCIpCisgICAgICAgIHB1YmxpYyB2b2lkIG5vdGlmeUFwcFN3aXRjaENvbWluZygpIHsKKyAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyU2VydmljZS5tSW5wdXRNb25pdG9yLm5vdGlmeUFwcFN3aXRjaENvbWluZygpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBAU3VwcHJlc3NXYXJuaW5ncygidW51c2VkIikKKyAgICAgICAgcHVibGljIGJvb2xlYW4gZmlsdGVyVG91Y2hFdmVudHMoKSB7CisgICAgICAgICAgICByZXR1cm4gbUNvbnRleHQuZ2V0UmVzb3VyY2VzKCkuZ2V0Qm9vbGVhbigKKyAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5ib29sLmNvbmZpZ19maWx0ZXJUb3VjaEV2ZW50cyk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJ1bnVzZWQiKQorICAgICAgICBwdWJsaWMgYm9vbGVhbiBmaWx0ZXJKdW1weVRvdWNoRXZlbnRzKCkgeworICAgICAgICAgICAgcmV0dXJuIG1Db250ZXh0LmdldFJlc291cmNlcygpLmdldEJvb2xlYW4oCisgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuYm9vbC5jb25maWdfZmlsdGVySnVtcHlUb3VjaEV2ZW50cyk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJ1bnVzZWQiKQorICAgICAgICBwdWJsaWMgVmlydHVhbEtleURlZmluaXRpb25bXSBnZXRWaXJ0dWFsS2V5RGVmaW5pdGlvbnMoU3RyaW5nIGRldmljZU5hbWUpIHsKKyAgICAgICAgICAgIEFycmF5TGlzdDxWaXJ0dWFsS2V5RGVmaW5pdGlvbj4ga2V5cyA9IG5ldyBBcnJheUxpc3Q8VmlydHVhbEtleURlZmluaXRpb24+KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgRmlsZUlucHV0U3RyZWFtIGZpcyA9IG5ldyBGaWxlSW5wdXRTdHJlYW0oCisgICAgICAgICAgICAgICAgICAgICAgICAiL3N5cy9ib2FyZF9wcm9wZXJ0aWVzL3ZpcnR1YWxrZXlzLiIgKyBkZXZpY2VOYW1lKTsKKyAgICAgICAgICAgICAgICBJbnB1dFN0cmVhbVJlYWRlciBpc3IgPSBuZXcgSW5wdXRTdHJlYW1SZWFkZXIoZmlzKTsKKyAgICAgICAgICAgICAgICBCdWZmZXJlZFJlYWRlciBiciA9IG5ldyBCdWZmZXJlZFJlYWRlcihpc3IsIDIwNDgpOworICAgICAgICAgICAgICAgIFN0cmluZyBzdHIgPSBici5yZWFkTGluZSgpOworICAgICAgICAgICAgICAgIGlmIChzdHIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBTdHJpbmdbXSBpdCA9IHN0ci5zcGxpdCgiOiIpOworICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfVklSVFVBTF9LRVlTKSBTbG9nLnYoVEFHLCAiKioqKiogVklSVFVBTCBLRVlTOiAiICsgaXQpOworICAgICAgICAgICAgICAgICAgICBmaW5hbCBpbnQgTiA9IGl0Lmxlbmd0aC02OworICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8PU47IGkrPTYpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIjB4MDEiLmVxdWFscyhpdFtpXSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiVW5rbm93biB2aXJ0dWFsIGtleSB0eXBlIGF0IGVsZW0gIyIgKyBpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICI6ICIgKyBpdFtpXSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZpcnR1YWxLZXlEZWZpbml0aW9uIGtleSA9IG5ldyBWaXJ0dWFsS2V5RGVmaW5pdGlvbigpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleS5zY2FuQ29kZSA9IEludGVnZXIucGFyc2VJbnQoaXRbaSsxXSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5LmNlbnRlclggPSBJbnRlZ2VyLnBhcnNlSW50KGl0W2krMl0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleS5jZW50ZXJZID0gSW50ZWdlci5wYXJzZUludChpdFtpKzNdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXkud2lkdGggPSBJbnRlZ2VyLnBhcnNlSW50KGl0W2krNF0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleS5oZWlnaHQgPSBJbnRlZ2VyLnBhcnNlSW50KGl0W2krNV0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19WSVJUVUFMX0tFWVMpIFNsb2cudihUQUcsICJWaXJ0dWFsIGtleSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGtleS5zY2FuQ29kZSArICI6IGNlbnRlcj0iICsga2V5LmNlbnRlclggKyAiLCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsga2V5LmNlbnRlclkgKyAiIHNpemU9IiArIGtleS53aWR0aCArICJ4IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBrZXkuaGVpZ2h0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlzLmFkZChrZXkpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoTnVtYmVyRm9ybWF0RXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiQmFkIG51bWJlciBhdCByZWdpb24gIiArIGkgKyAiIGluOiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHN0ciwgZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnIuY2xvc2UoKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKEZpbGVOb3RGb3VuZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgU2xvZy5pKFRBRywgIk5vIHZpcnR1YWwga2V5cyBmb3VuZCIpOworICAgICAgICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsICJFcnJvciByZWFkaW5nIHZpcnR1YWwga2V5cyIsIGUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICByZXR1cm4ga2V5cy50b0FycmF5KG5ldyBWaXJ0dWFsS2V5RGVmaW5pdGlvbltrZXlzLnNpemUoKV0pOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBAU3VwcHJlc3NXYXJuaW5ncygidW51c2VkIikKKyAgICAgICAgcHVibGljIFN0cmluZ1tdIGdldEV4Y2x1ZGVkRGV2aWNlTmFtZXMoKSB7CisgICAgICAgICAgICBBcnJheUxpc3Q8U3RyaW5nPiBuYW1lcyA9IG5ldyBBcnJheUxpc3Q8U3RyaW5nPigpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBSZWFkIHBhcnRuZXItcHJvdmlkZWQgbGlzdCBvZiBleGNsdWRlZCBpbnB1dCBkZXZpY2VzCisgICAgICAgICAgICBYbWxQdWxsUGFyc2VyIHBhcnNlciA9IG51bGw7CisgICAgICAgICAgICAvLyBFbnZpcm9ubWVudC5nZXRSb290RGlyZWN0b3J5KCkgaXMgYSBmYW5jeSB3YXkgb2Ygc2F5aW5nIEFORFJPSURfUk9PVCBvciAiL3N5c3RlbSIuCisgICAgICAgICAgICBGaWxlIGNvbmZGaWxlID0gbmV3IEZpbGUoRW52aXJvbm1lbnQuZ2V0Um9vdERpcmVjdG9yeSgpLCBFWENMVURFRF9ERVZJQ0VTX1BBVEgpOworICAgICAgICAgICAgRmlsZVJlYWRlciBjb25mcmVhZGVyID0gbnVsbDsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgY29uZnJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKGNvbmZGaWxlKTsKKyAgICAgICAgICAgICAgICBwYXJzZXIgPSBYbWwubmV3UHVsbFBhcnNlcigpOworICAgICAgICAgICAgICAgIHBhcnNlci5zZXRJbnB1dChjb25mcmVhZGVyKTsKKyAgICAgICAgICAgICAgICBYbWxVdGlscy5iZWdpbkRvY3VtZW50KHBhcnNlciwgImRldmljZXMiKTsKKworICAgICAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7CisgICAgICAgICAgICAgICAgICAgIFhtbFV0aWxzLm5leHRFbGVtZW50KHBhcnNlcik7CisgICAgICAgICAgICAgICAgICAgIGlmICghImRldmljZSIuZXF1YWxzKHBhcnNlci5nZXROYW1lKCkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBTdHJpbmcgbmFtZSA9IHBhcnNlci5nZXRBdHRyaWJ1dGVWYWx1ZShudWxsLCAibmFtZSIpOworICAgICAgICAgICAgICAgICAgICBpZiAobmFtZSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBuYW1lcy5hZGQobmFtZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGNhdGNoIChGaWxlTm90Rm91bmRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIC8vIEl0J3Mgb2sgaWYgdGhlIGZpbGUgZG9lcyBub3QgZXhpc3QuCisgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIFNsb2cuZShUQUcsICJFeGNlcHRpb24gd2hpbGUgcGFyc2luZyAnIiArIGNvbmZGaWxlLmdldEFic29sdXRlUGF0aCgpICsgIiciLCBlKTsKKyAgICAgICAgICAgIH0gZmluYWxseSB7CisgICAgICAgICAgICAgICAgdHJ5IHsgaWYgKGNvbmZyZWFkZXIgIT0gbnVsbCkgY29uZnJlYWRlci5jbG9zZSgpOyB9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7IH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgcmV0dXJuIG5hbWVzLnRvQXJyYXkobmV3IFN0cmluZ1tuYW1lcy5zaXplKCldKTsKKyAgICAgICAgfQorICAgIH0KK30KZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL0lucHV0TWV0aG9kTWFuYWdlclNlcnZpY2UuamF2YSBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL0lucHV0TWV0aG9kTWFuYWdlclNlcnZpY2UuamF2YQppbmRleCAwYzIwNWNhLi40ZDM1YmVjIDEwMDY0NAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9JbnB1dE1ldGhvZE1hbmFnZXJTZXJ2aWNlLmphdmEKKysrIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvSW5wdXRNZXRob2RNYW5hZ2VyU2VydmljZS5qYXZhCkBAIC0yNiw4ICsyNiw3IEBACiBpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudmlldy5JSW5wdXRNZXRob2RTZXNzaW9uOwogaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnZpZXcuSW5wdXRCaW5kUmVzdWx0OwogCi1pbXBvcnQgY29tLmFuZHJvaWQuc2VydmVyLnN0YXR1cy5JY29uRGF0YTsKLWltcG9ydCBjb20uYW5kcm9pZC5zZXJ2ZXIuc3RhdHVzLlN0YXR1c0JhclNlcnZpY2U7CitpbXBvcnQgY29tLmFuZHJvaWQuc2VydmVyLlN0YXR1c0Jhck1hbmFnZXJTZXJ2aWNlOwogCiBpbXBvcnQgb3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlckV4Y2VwdGlvbjsKIApAQCAtMTEwLDkgKzEwOSw3IEBACiAgICAgZmluYWwgQ29udGV4dCBtQ29udGV4dDsKICAgICBmaW5hbCBIYW5kbGVyIG1IYW5kbGVyOwogICAgIGZpbmFsIFNldHRpbmdzT2JzZXJ2ZXIgbVNldHRpbmdzT2JzZXJ2ZXI7Ci0gICAgZmluYWwgU3RhdHVzQmFyU2VydmljZSBtU3RhdHVzQmFyOwotICAgIGZpbmFsIElCaW5kZXIgbUlucHV0TWV0aG9kSWNvbjsKLSAgICBmaW5hbCBJY29uRGF0YSBtSW5wdXRNZXRob2REYXRhOworICAgIGZpbmFsIFN0YXR1c0Jhck1hbmFnZXJTZXJ2aWNlIG1TdGF0dXNCYXI7CiAgICAgZmluYWwgSVdpbmRvd01hbmFnZXIgbUlXaW5kb3dNYW5hZ2VyOwogICAgIGZpbmFsIEhhbmRsZXJDYWxsZXIgbUNhbGxlcjsKIApAQCAtNDQ3LDcgKzQ0NCw3IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwdWJsaWMgSW5wdXRNZXRob2RNYW5hZ2VyU2VydmljZShDb250ZXh0IGNvbnRleHQsIFN0YXR1c0JhclNlcnZpY2Ugc3RhdHVzQmFyKSB7CisgICAgcHVibGljIElucHV0TWV0aG9kTWFuYWdlclNlcnZpY2UoQ29udGV4dCBjb250ZXh0LCBTdGF0dXNCYXJNYW5hZ2VyU2VydmljZSBzdGF0dXNCYXIpIHsKICAgICAgICAgbUNvbnRleHQgPSBjb250ZXh0OwogICAgICAgICBtSGFuZGxlciA9IG5ldyBIYW5kbGVyKHRoaXMpOwogICAgICAgICBtSVdpbmRvd01hbmFnZXIgPSBJV2luZG93TWFuYWdlci5TdHViLmFzSW50ZXJmYWNlKApAQCAtNTA4LDkgKzUwNSw3IEBACiAgICAgICAgIH0KIAogICAgICAgICBtU3RhdHVzQmFyID0gc3RhdHVzQmFyOwotICAgICAgICBtSW5wdXRNZXRob2REYXRhID0gSWNvbkRhdGEubWFrZUljb24oImltZSIsIG51bGwsIDAsIDAsIDApOwotICAgICAgICBtSW5wdXRNZXRob2RJY29uID0gc3RhdHVzQmFyLmFkZEljb24obUlucHV0TWV0aG9kRGF0YSwgbnVsbCk7Ci0gICAgICAgIHN0YXR1c0Jhci5zZXRJY29uVmlzaWJpbGl0eShtSW5wdXRNZXRob2RJY29uLCBmYWxzZSk7CisgICAgICAgIHN0YXR1c0Jhci5zZXRJY29uVmlzaWJpbGl0eSgiaW1lIiwgZmFsc2UpOwogCiAgICAgICAgIG1TZXR0aW5nc09ic2VydmVyID0gbmV3IFNldHRpbmdzT2JzZXJ2ZXIobUhhbmRsZXIpOwogICAgICAgICB1cGRhdGVGcm9tU2V0dGluZ3NMb2NrZWQoKTsKQEAgLTg4OSwxNiArODg0LDMwIEBACiAgICAgICAgICAgICAgICAgICAgIE1TR19VTkJJTkRfTUVUSE9ELCBtQ3VyU2VxLCBtQ3VyQ2xpZW50LmNsaWVudCkpOwogICAgICAgICB9CiAgICAgfQorICAgIAorICAgIHByaXZhdGUgdm9pZCBmaW5pc2hTZXNzaW9uKFNlc3Npb25TdGF0ZSBzZXNzaW9uU3RhdGUpIHsKKyAgICAgICAgaWYgKHNlc3Npb25TdGF0ZSAhPSBudWxsICYmIHNlc3Npb25TdGF0ZS5zZXNzaW9uICE9IG51bGwpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgc2Vzc2lvblN0YXRlLnNlc3Npb24uZmluaXNoU2Vzc2lvbigpOworICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiU2Vzc2lvbiBmYWlsZWQgdG8gY2xvc2UgZHVlIHRvIHJlbW90ZSBleGNlcHRpb24iLCBlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KIAogICAgIHZvaWQgY2xlYXJDdXJNZXRob2RMb2NrZWQoKSB7CiAgICAgICAgIGlmIChtQ3VyTWV0aG9kICE9IG51bGwpIHsKICAgICAgICAgICAgIGZvciAoQ2xpZW50U3RhdGUgY3MgOiBtQ2xpZW50cy52YWx1ZXMoKSkgewogICAgICAgICAgICAgICAgIGNzLnNlc3Npb25SZXF1ZXN0ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBmaW5pc2hTZXNzaW9uKGNzLmN1clNlc3Npb24pOwogICAgICAgICAgICAgICAgIGNzLmN1clNlc3Npb24gPSBudWxsOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmaW5pc2hTZXNzaW9uKG1FbmFibGVkU2Vzc2lvbik7CisgICAgICAgICAgICBtRW5hYmxlZFNlc3Npb24gPSBudWxsOwogICAgICAgICAgICAgbUN1ck1ldGhvZCA9IG51bGw7CiAgICAgICAgIH0KLSAgICAgICAgbVN0YXR1c0Jhci5zZXRJY29uVmlzaWJpbGl0eShtSW5wdXRNZXRob2RJY29uLCBmYWxzZSk7CisgICAgICAgIG1TdGF0dXNCYXIuc2V0SWNvblZpc2liaWxpdHkoImltZSIsIGZhbHNlKTsKICAgICB9CiAKICAgICBwdWJsaWMgdm9pZCBvblNlcnZpY2VEaXNjb25uZWN0ZWQoQ29tcG9uZW50TmFtZSBuYW1lKSB7CkBAIC05MzIsMTMgKzk0MSwxMSBAQAogICAgICAgICAgICAgc3luY2hyb25pemVkIChtTWV0aG9kTWFwKSB7CiAgICAgICAgICAgICAgICAgaWYgKGljb25JZCA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChERUJVRykgU2xvZy5kKFRBRywgImhpZGUgdGhlIHNtYWxsIGljb24gZm9yIHRoZSBpbnB1dCBtZXRob2QiKTsKLSAgICAgICAgICAgICAgICAgICAgbVN0YXR1c0Jhci5zZXRJY29uVmlzaWJpbGl0eShtSW5wdXRNZXRob2RJY29uLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIG1TdGF0dXNCYXIuc2V0SWNvblZpc2liaWxpdHkoImltZSIsIGZhbHNlKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBhY2thZ2VOYW1lICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHKSBTbG9nLmQoVEFHLCAic2hvdyBhIHNtYWxsIGljb24gZm9yIHRoZSBpbnB1dCBtZXRob2QiKTsKLSAgICAgICAgICAgICAgICAgICAgbUlucHV0TWV0aG9kRGF0YS5pY29uSWQgPSBpY29uSWQ7Ci0gICAgICAgICAgICAgICAgICAgIG1JbnB1dE1ldGhvZERhdGEuaWNvblBhY2thZ2UgPSBwYWNrYWdlTmFtZTsKLSAgICAgICAgICAgICAgICAgICAgbVN0YXR1c0Jhci51cGRhdGVJY29uKG1JbnB1dE1ldGhvZEljb24sIG1JbnB1dE1ldGhvZERhdGEsIG51bGwpOwotICAgICAgICAgICAgICAgICAgICBtU3RhdHVzQmFyLnNldEljb25WaXNpYmlsaXR5KG1JbnB1dE1ldGhvZEljb24sIHRydWUpOworICAgICAgICAgICAgICAgICAgICBtU3RhdHVzQmFyLnNldEljb24oImltZSIsIHBhY2thZ2VOYW1lLCBpY29uSWQsIDApOworICAgICAgICAgICAgICAgICAgICBtU3RhdHVzQmFyLnNldEljb25WaXNpYmlsaXR5KCJpbWUiLCB0cnVlKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gZmluYWxseSB7CkBAIC0xNzIwLDggKzE3MjcsNiBAQAogICAgICAgICAgICAgICAgIHAucHJpbnRsbigiICAgIHNlc3Npb25SZXF1ZXN0ZWQ9IiArIGNpLnNlc3Npb25SZXF1ZXN0ZWQpOwogICAgICAgICAgICAgICAgIHAucHJpbnRsbigiICAgIGN1clNlc3Npb249IiArIGNpLmN1clNlc3Npb24pOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcC5wcmludGxuKCIgIG1JbnB1dE1ldGhvZEljb249IiArIG1JbnB1dE1ldGhvZEljb24pOwotICAgICAgICAgICAgcC5wcmludGxuKCIgIG1JbnB1dE1ldGhvZERhdGE9IiArIG1JbnB1dE1ldGhvZERhdGEpOwogICAgICAgICAgICAgcC5wcmludGxuKCIgIG1DdXJNZXRob2RJZD0iICsgbUN1ck1ldGhvZElkKTsKICAgICAgICAgICAgIGNsaWVudCA9IG1DdXJDbGllbnQ7CiAgICAgICAgICAgICBwLnByaW50bG4oIiAgbUN1ckNsaWVudD0iICsgY2xpZW50ICsgIiBtQ3VyU2VxPSIgKyBtQ3VyU2VxKTsKZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL0lucHV0V2luZG93LmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9JbnB1dFdpbmRvdy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkYTBjZjEKLS0tIC9kZXYvbnVsbAorKysgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9JbnB1dFdpbmRvdy5qYXZhCkBAIC0wLDAgKzEsNjYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLnNlcnZlcjsKKworaW1wb3J0IGFuZHJvaWQudmlldy5JbnB1dENoYW5uZWw7CisKKy8qKgorICogRGVzY3JpYmVzIGlucHV0LXJlbGF0ZWQgd2luZG93IHByb3BlcnRpZXMgZm9yIHVzZSBieSB0aGUgaW5wdXQgZGlzcGF0Y2hlci4KKyAqIAorICogQGhpZGUKKyAqLworcHVibGljIGZpbmFsIGNsYXNzIElucHV0V2luZG93IHsKKyAgICAvLyBUaGUgaW5wdXQgY2hhbm5lbCBhc3NvY2lhdGVkIHdpdGggdGhlIHdpbmRvdy4KKyAgICBwdWJsaWMgSW5wdXRDaGFubmVsIGlucHV0Q2hhbm5lbDsKKyAgICAKKyAgICAvLyBXaW5kb3cgbGF5b3V0IHBhcmFtcyBhdHRyaWJ1dGVzLiAgKFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zKQorICAgIHB1YmxpYyBpbnQgbGF5b3V0UGFyYW1zRmxhZ3M7CisgICAgcHVibGljIGludCBsYXlvdXRQYXJhbXNUeXBlOworICAgIAorICAgIC8vIERpc3BhdGNoaW5nIHRpbWVvdXQuCisgICAgcHVibGljIGxvbmcgZGlzcGF0Y2hpbmdUaW1lb3V0TmFub3M7CisgICAgCisgICAgLy8gV2luZG93IGZyYW1lIHBvc2l0aW9uLgorICAgIHB1YmxpYyBpbnQgZnJhbWVMZWZ0OworICAgIHB1YmxpYyBpbnQgZnJhbWVUb3A7CisgICAgCisgICAgLy8gV2luZG93IHRvdWNoYWJsZSBhcmVhLgorICAgIHB1YmxpYyBpbnQgdG91Y2hhYmxlQXJlYUxlZnQ7CisgICAgcHVibGljIGludCB0b3VjaGFibGVBcmVhVG9wOworICAgIHB1YmxpYyBpbnQgdG91Y2hhYmxlQXJlYVJpZ2h0OworICAgIHB1YmxpYyBpbnQgdG91Y2hhYmxlQXJlYUJvdHRvbTsKKyAgICAKKyAgICAvLyBXaW5kb3cgaXMgdmlzaWJsZS4KKyAgICBwdWJsaWMgYm9vbGVhbiB2aXNpYmxlOworICAgIAorICAgIC8vIFdpbmRvdyBoYXMgZm9jdXMuCisgICAgcHVibGljIGJvb2xlYW4gaGFzRm9jdXM7CisgICAgCisgICAgLy8gV2luZG93IGhhcyB3YWxscGFwZXIuICAod2luZG93IGlzIHRoZSBjdXJyZW50IHdhbGxwYXBlciB0YXJnZXQpCisgICAgcHVibGljIGJvb2xlYW4gaGFzV2FsbHBhcGVyOworICAgIAorICAgIC8vIElucHV0IGV2ZW50IGRpc3BhdGNoaW5nIGlzIHBhdXNlZC4KKyAgICBwdWJsaWMgYm9vbGVhbiBwYXVzZWQ7CisgICAgCisgICAgLy8gSWQgb2YgcHJvY2VzcyBhbmQgdXNlciB0aGF0IG93bnMgdGhlIHdpbmRvdy4KKyAgICBwdWJsaWMgaW50IG93bmVyUGlkOworICAgIHB1YmxpYyBpbnQgb3duZXJVaWQ7CisgICAgCisgICAgcHVibGljIHZvaWQgcmVjeWNsZSgpIHsKKyAgICAgICAgaW5wdXRDaGFubmVsID0gbnVsbDsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9JbnB1dFdpbmRvd0xpc3QuamF2YSBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL0lucHV0V2luZG93TGlzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjYmIyY2MKLS0tIC9kZXYvbnVsbAorKysgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9JbnB1dFdpbmRvd0xpc3QuamF2YQpAQCAtMCwwICsxLDg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5zZXJ2ZXI7CisKKworLyoqCisgKiBBIHNwZWNpYWxpemVkIGxpc3Qgb2Ygd2luZG93IGluZm9ybWF0aW9uIG9iamVjdHMgYmFja2VkIGJ5IGFuIGFycmF5LgorICogCisgKiBUaGlzIGNsYXNzIGlzIHBhcnQgb2YgYW4gSW5wdXRNYW5hZ2VyIG9wdGltaXphdGlvbiB0byBhdm9pZCBhbGxvY2F0aW5nIG9iamVjdHMgYW5kIGFycmF5cworICogdW5uZWNlc3NhcmlseS4gIEludGVybmFsbHksIGl0IGtlZXBzIGFuIGFycmF5IGZ1bGwgb2YgZGVtYW5kLWFsbG9jYXRlZCBvYmplY3RzIHRoYXQgaXQKKyAqIHJlY3ljbGVzIGVhY2ggdGltZSB0aGUgbGlzdCBpcyBjbGVhcmVkLiAgVGhlIHVzZWQgcG9ydGlvbiBvZiB0aGUgYXJyYXkgaXMgcGFkZGVkIHdpdGggYSBudWxsLgorICogCisgKiBUaGUgY29udGVudHMgb2YgdGhlIGxpc3QgYXJlIGludGVuZGVkIHRvIGJlIFotb3JkZXJlZCBmcm9tIHRvcCB0byBib3R0b20uCisgKiAKKyAqIEBoaWRlCisgKi8KK3B1YmxpYyBmaW5hbCBjbGFzcyBJbnB1dFdpbmRvd0xpc3QgeworICAgIHByaXZhdGUgSW5wdXRXaW5kb3dbXSBtQXJyYXk7CisgICAgcHJpdmF0ZSBpbnQgbUNvdW50OworICAgIAorICAgIC8qKgorICAgICAqIENyZWF0ZXMgYW4gZW1wdHkgbGlzdC4KKyAgICAgKi8KKyAgICBwdWJsaWMgSW5wdXRXaW5kb3dMaXN0KCkgeworICAgICAgICBtQXJyYXkgPSBuZXcgSW5wdXRXaW5kb3dbOF07CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIENsZWFycyB0aGUgbGlzdC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBjbGVhcigpIHsKKyAgICAgICAgaWYgKG1Db3VudCA9PSAwKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGludCBjb3VudCA9IG1Db3VudDsKKyAgICAgICAgbUNvdW50ID0gMDsKKyAgICAgICAgbUFycmF5W2NvdW50XSA9IG1BcnJheVswXTsKKyAgICAgICAgd2hpbGUgKGNvdW50ID4gMCkgeworICAgICAgICAgICAgY291bnQgLT0gMTsKKyAgICAgICAgICAgIG1BcnJheVtjb3VudF0ucmVjeWNsZSgpOworICAgICAgICB9CisgICAgICAgIG1BcnJheVswXSA9IG51bGw7CisgICAgfQorICAgIAorICAgIC8qKgorICAgICAqIEFkZHMgYW4gdW5pbml0aWFsaXplZCBpbnB1dCB3aW5kb3cgb2JqZWN0IHRvIHRoZSBsaXN0IGFuZCByZXR1cm5zIGl0LgorICAgICAqLworICAgIHB1YmxpYyBJbnB1dFdpbmRvdyBhZGQoKSB7CisgICAgICAgIGlmIChtQ291bnQgKyAxID09IG1BcnJheS5sZW5ndGgpIHsKKyAgICAgICAgICAgIElucHV0V2luZG93W10gb2xkQXJyYXkgPSBtQXJyYXk7CisgICAgICAgICAgICBtQXJyYXkgPSBuZXcgSW5wdXRXaW5kb3dbb2xkQXJyYXkubGVuZ3RoICogMl07CisgICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KG9sZEFycmF5LCAwLCBtQXJyYXksIDAsIG1Db3VudCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIEdyYWIgb2JqZWN0IGZyb20gdGFpbCAoYWZ0ZXIgdXNlZCBzZWN0aW9uKSBpZiBhdmFpbGFibGUuCisgICAgICAgIElucHV0V2luZG93IGl0ZW0gPSBtQXJyYXlbbUNvdW50ICsgMV07CisgICAgICAgIGlmIChpdGVtID09IG51bGwpIHsKKyAgICAgICAgICAgIGl0ZW0gPSBuZXcgSW5wdXRXaW5kb3coKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbUFycmF5W21Db3VudF0gPSBpdGVtOworICAgICAgICBtQ291bnQgKz0gMTsKKyAgICAgICAgbUFycmF5W21Db3VudF0gPSBudWxsOworICAgICAgICByZXR1cm4gaXRlbTsKKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogR2V0cyB0aGUgaW5wdXQgd2luZG93IG9iamVjdHMgYXMgYSBudWxsLXRlcm1pbmF0ZWQgYXJyYXkuCisgICAgICogQHJldHVybiBUaGUgaW5wdXQgd2luZG93IGFycmF5LgorICAgICAqLworICAgIHB1YmxpYyBJbnB1dFdpbmRvd1tdIHRvTnVsbFRlcm1pbmF0ZWRBcnJheSgpIHsKKyAgICAgICAgcmV0dXJuIG1BcnJheTsKKyAgICB9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvSW5zdGFsbGVyLmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9JbnN0YWxsZXIuamF2YQppbmRleCAyZWFhNThjLi4xZjM0ZWJhIDEwMDY0NAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9JbnN0YWxsZXIuamF2YQorKysgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9JbnN0YWxsZXIuamF2YQpAQCAtMTY2LDExICsxNjYsMTcgQEAKIAkJfQogCX0KIAotICAgIHB1YmxpYyBpbnQgaW5zdGFsbChTdHJpbmcgbmFtZSwgaW50IHVpZCwgaW50IGdpZCkgeworICAgIHB1YmxpYyBpbnQgaW5zdGFsbChTdHJpbmcgbmFtZSwgYm9vbGVhbiB1c2VFbmNyeXB0ZWRGaWxlc3lzdGVtLCBpbnQgdWlkLCBpbnQgZ2lkKSB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlciA9IG5ldyBTdHJpbmdCdWlsZGVyKCJpbnN0YWxsIik7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG5hbWUpOwogICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOworICAgICAgICBpZiAodXNlRW5jcnlwdGVkRmlsZXN5c3RlbSkgeworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJzEnKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcwJyk7CisgICAgICAgIH0KKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQodWlkKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoZ2lkKTsKQEAgLTIwMywzMyArMjA5LDU3IEBACiAgICAgICAgIHJldHVybiBleGVjdXRlKGJ1aWxkZXIudG9TdHJpbmcoKSk7CiAgICAgfQogCi0gICAgcHVibGljIGludCByZW1vdmUoU3RyaW5nIG5hbWUpIHsKKyAgICBwdWJsaWMgaW50IHJlbW92ZShTdHJpbmcgbmFtZSwgYm9vbGVhbiB1c2VFbmNyeXB0ZWRGaWxlc3lzdGVtKSB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlciA9IG5ldyBTdHJpbmdCdWlsZGVyKCJyZW1vdmUiKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQobmFtZSk7CisgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CisgICAgICAgIGlmICh1c2VFbmNyeXB0ZWRGaWxlc3lzdGVtKSB7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnMScpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJzAnKTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm4gZXhlY3V0ZShidWlsZGVyLnRvU3RyaW5nKCkpOwogICAgIH0KIAotICAgIHB1YmxpYyBpbnQgcmVuYW1lKFN0cmluZyBvbGRuYW1lLCBTdHJpbmcgbmV3bmFtZSkgeworICAgIHB1YmxpYyBpbnQgcmVuYW1lKFN0cmluZyBvbGRuYW1lLCBTdHJpbmcgbmV3bmFtZSwgYm9vbGVhbiB1c2VFbmNyeXB0ZWRGaWxlc3lzdGVtKSB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlciA9IG5ldyBTdHJpbmdCdWlsZGVyKCJyZW5hbWUiKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQob2xkbmFtZSk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG5ld25hbWUpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOworICAgICAgICBpZiAodXNlRW5jcnlwdGVkRmlsZXN5c3RlbSkgeworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJzEnKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcwJyk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGV4ZWN1dGUoYnVpbGRlci50b1N0cmluZygpKTsKICAgICB9CiAKLSAgICBwdWJsaWMgaW50IGRlbGV0ZUNhY2hlRmlsZXMoU3RyaW5nIG5hbWUpIHsKKyAgICBwdWJsaWMgaW50IGRlbGV0ZUNhY2hlRmlsZXMoU3RyaW5nIG5hbWUsIGJvb2xlYW4gdXNlRW5jcnlwdGVkRmlsZXN5c3RlbSkgewogICAgICAgICBTdHJpbmdCdWlsZGVyIGJ1aWxkZXIgPSBuZXcgU3RyaW5nQnVpbGRlcigicm1jYWNoZSIpOwogICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOwogICAgICAgICBidWlsZGVyLmFwcGVuZChuYW1lKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKKyAgICAgICAgaWYgKHVzZUVuY3J5cHRlZEZpbGVzeXN0ZW0pIHsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcxJyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnMCcpOworICAgICAgICB9CiAgICAgICAgIHJldHVybiBleGVjdXRlKGJ1aWxkZXIudG9TdHJpbmcoKSk7CiAgICAgfQogICAgIAotICAgIHB1YmxpYyBpbnQgY2xlYXJVc2VyRGF0YShTdHJpbmcgbmFtZSkgeworICAgIHB1YmxpYyBpbnQgY2xlYXJVc2VyRGF0YShTdHJpbmcgbmFtZSwgYm9vbGVhbiB1c2VFbmNyeXB0ZWRGaWxlc3lzdGVtKSB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlciA9IG5ldyBTdHJpbmdCdWlsZGVyKCJybXVzZXJkYXRhIik7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKG5hbWUpOworICAgICAgICBidWlsZGVyLmFwcGVuZCgnICcpOworICAgICAgICBpZiAodXNlRW5jcnlwdGVkRmlsZXN5c3RlbSkgeworICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoJzEnKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcwJyk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGV4ZWN1dGUoYnVpbGRlci50b1N0cmluZygpKTsKICAgICB9CiAgICAgCkBAIC0yNjMsNyArMjkzLDcgQEAKICAgICB9CiAgICAgCiAgICAgcHVibGljIGludCBnZXRTaXplSW5mbyhTdHJpbmcgcGtnTmFtZSwgU3RyaW5nIGFwa1BhdGgsCi0gICAgICAgICAgICBTdHJpbmcgZndkTG9ja0Fwa1BhdGgsIFBhY2thZ2VTdGF0cyBwU3RhdHMpIHsKKyAgICAgICAgICAgIFN0cmluZyBmd2RMb2NrQXBrUGF0aCwgUGFja2FnZVN0YXRzIHBTdGF0cywgYm9vbGVhbiB1c2VFbmNyeXB0ZWRGaWxlc3lzdGVtKSB7CiAgICAgICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlciA9IG5ldyBTdHJpbmdCdWlsZGVyKCJnZXRzaXplIik7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcgJyk7CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKHBrZ05hbWUpOwpAQCAtMjcxLDYgKzMwMSwxMyBAQAogICAgICAgICBidWlsZGVyLmFwcGVuZChhcGtQYXRoKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKICAgICAgICAgYnVpbGRlci5hcHBlbmQoZndkTG9ja0Fwa1BhdGggIT0gbnVsbCA/IGZ3ZExvY2tBcGtQYXRoIDogIiEiKTsKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoJyAnKTsKKyAgICAgICAgaWYgKHVzZUVuY3J5cHRlZEZpbGVzeXN0ZW0pIHsKKyAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKCcxJyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBidWlsZGVyLmFwcGVuZCgnMCcpOworICAgICAgICB9CisKICAgICAgICAgU3RyaW5nIHMgPSB0cmFuc2FjdGlvbihidWlsZGVyLnRvU3RyaW5nKCkpOwogICAgICAgICBTdHJpbmcgcmVzW10gPSBzLnNwbGl0KCIgIik7CiAKZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL0tleUlucHV0UXVldWUuamF2YSBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL0tleUlucHV0UXVldWUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjMwMzQ2Yi4uMDAwMDAwMAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9LZXlJbnB1dFF1ZXVlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMzg0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi1wYWNrYWdlIGNvbS5hbmRyb2lkLnNlcnZlcjsKLQotaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OwotaW1wb3J0IGFuZHJvaWQuY29udGVudC5yZXMuQ29uZmlndXJhdGlvbjsKLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlczsKLWltcG9ydCBhbmRyb2lkLm9zLkVudmlyb25tZW50OwotaW1wb3J0IGFuZHJvaWQub3MuTGF0ZW5jeVRpbWVyOwotaW1wb3J0IGFuZHJvaWQub3MuUG93ZXJNYW5hZ2VyOwotaW1wb3J0IGFuZHJvaWQub3MuU3lzdGVtQ2xvY2s7Ci1pbXBvcnQgYW5kcm9pZC5vcy5TeXN0ZW1Qcm9wZXJ0aWVzOwotaW1wb3J0IGFuZHJvaWQudXRpbC5TbG9nOwotaW1wb3J0IGFuZHJvaWQudXRpbC5TcGFyc2VBcnJheTsKLWltcG9ydCBhbmRyb2lkLnV0aWwuWG1sOwotaW1wb3J0IGFuZHJvaWQudmlldy5EaXNwbGF5OwotaW1wb3J0IGFuZHJvaWQudmlldy5LZXlFdmVudDsKLWltcG9ydCBhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQ7Ci1pbXBvcnQgYW5kcm9pZC52aWV3LlJhd0lucHV0RXZlbnQ7Ci1pbXBvcnQgYW5kcm9pZC52aWV3LlN1cmZhY2U7Ci1pbXBvcnQgYW5kcm9pZC52aWV3LldpbmRvd01hbmFnZXJQb2xpY3k7Ci0KLWltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC51dGlsLlhtbFV0aWxzOwotCi1pbXBvcnQgb3JnLnhtbHB1bGwudjEuWG1sUHVsbFBhcnNlcjsKLQotaW1wb3J0IGphdmEuaW8uQnVmZmVyZWRSZWFkZXI7Ci1pbXBvcnQgamF2YS5pby5GaWxlOwotaW1wb3J0IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtOwotaW1wb3J0IGphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uOwotaW1wb3J0IGphdmEuaW8uRmlsZVJlYWRlcjsKLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW1SZWFkZXI7Ci1pbXBvcnQgamF2YS5pby5QcmludFdyaXRlcjsKLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotCi1wdWJsaWMgYWJzdHJhY3QgY2xhc3MgS2V5SW5wdXRRdWV1ZSB7Ci0gICAgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSAiS2V5SW5wdXRRdWV1ZSI7Ci0KLSAgICBzdGF0aWMgZmluYWwgYm9vbGVhbiBERUJVRyA9IGZhbHNlOwotICAgIHN0YXRpYyBmaW5hbCBib29sZWFuIERFQlVHX1ZJUlRVQUxfS0VZUyA9IGZhbHNlOwotICAgIHN0YXRpYyBmaW5hbCBib29sZWFuIERFQlVHX1BPSU5URVJTID0gZmFsc2U7Ci0gICAgCi0gICAgLyoqCi0gICAgICogVHVybiBvbiBzb21lIGhhY2tzIHdlIGhhdmUgdG8gaW1wcm92ZSB0aGUgdG91Y2ggaW50ZXJhY3Rpb24gd2l0aCBhCi0gICAgICogY2VydGFpbiBkZXZpY2Ugd2hvc2Ugc2NyZWVuIGN1cnJlbnRseSBpcyBub3QgYWxsIHRoYXQgZ29vZC4KLSAgICAgKi8KLSAgICBzdGF0aWMgYm9vbGVhbiBCQURfVE9VQ0hfSEFDSyA9IGZhbHNlOwotICAgIAotICAgIC8qKgotICAgICAqIFR1cm4gb24gc29tZSBoYWNrcyB0byBpbXByb3ZlIHRvdWNoIGludGVyYWN0aW9uIHdpdGggYW5vdGhlciBkZXZpY2UKLSAgICAgKiB3aGVyZSB0b3VjaCBjb29yZGluYXRlIGRhdGEgY2FuIGdldCBjb3JydXB0ZWQuCi0gICAgICovCi0gICAgc3RhdGljIGJvb2xlYW4gSlVNUFlfVE9VQ0hfSEFDSyA9IGZhbHNlOwotICAgIAotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBFWENMVURFRF9ERVZJQ0VTX1BBVEggPSAiZXRjL2V4Y2x1ZGVkLWlucHV0LWRldmljZXMueG1sIjsKLQotICAgIGZpbmFsIFNwYXJzZUFycmF5PElucHV0RGV2aWNlPiBtRGV2aWNlcyA9IG5ldyBTcGFyc2VBcnJheTxJbnB1dERldmljZT4oKTsKLSAgICBmaW5hbCBTcGFyc2VBcnJheTxJbnB1dERldmljZT4gbUlnbm9yZWREZXZpY2VzID0gbmV3IFNwYXJzZUFycmF5PElucHV0RGV2aWNlPigpOwotICAgIGZpbmFsIEFycmF5TGlzdDxWaXJ0dWFsS2V5PiBtVmlydHVhbEtleXMgPSBuZXcgQXJyYXlMaXN0PFZpcnR1YWxLZXk+KCk7Ci0gICAgZmluYWwgSGFwdGljRmVlZGJhY2tDYWxsYmFjayBtSGFwdGljRmVlZGJhY2tDYWxsYmFjazsKLSAgICAKLSAgICBpbnQgbUdsb2JhbE1ldGFTdGF0ZSA9IDA7Ci0gICAgYm9vbGVhbiBtSGF2ZUdsb2JhbE1ldGFTdGF0ZSA9IGZhbHNlOwotICAgIAotICAgIGZpbmFsIFF1ZXVlZEV2ZW50IG1GaXJzdDsKLSAgICBmaW5hbCBRdWV1ZWRFdmVudCBtTGFzdDsKLSAgICBRdWV1ZWRFdmVudCBtQ2FjaGU7Ci0gICAgaW50IG1DYWNoZUNvdW50OwotCi0gICAgRGlzcGxheSBtRGlzcGxheSA9IG51bGw7Ci0gICAgaW50IG1EaXNwbGF5V2lkdGg7Ci0gICAgaW50IG1EaXNwbGF5SGVpZ2h0OwotICAgIAotICAgIGludCBtT3JpZW50YXRpb24gPSBTdXJmYWNlLlJPVEFUSU9OXzA7Ci0gICAgaW50W10gbUtleVJvdGF0aW9uTWFwID0gbnVsbDsKLSAgICAKLSAgICBWaXJ0dWFsS2V5IG1QcmVzc2VkVmlydHVhbEtleSA9IG51bGw7Ci0gICAgCi0gICAgUG93ZXJNYW5hZ2VyLldha2VMb2NrIG1XYWtlTG9jazsKLQotICAgIHN0YXRpYyBmaW5hbCBpbnRbXSBLRVlfOTBfTUFQID0gbmV3IGludFtdIHsKLSAgICAgICAgS2V5RXZlbnQuS0VZQ09ERV9EUEFEX0RPV04sIEtleUV2ZW50LktFWUNPREVfRFBBRF9SSUdIVCwKLSAgICAgICAgS2V5RXZlbnQuS0VZQ09ERV9EUEFEX1JJR0hULCBLZXlFdmVudC5LRVlDT0RFX0RQQURfVVAsCi0gICAgICAgIEtleUV2ZW50LktFWUNPREVfRFBBRF9VUCwgS2V5RXZlbnQuS0VZQ09ERV9EUEFEX0xFRlQsCi0gICAgICAgIEtleUV2ZW50LktFWUNPREVfRFBBRF9MRUZULCBLZXlFdmVudC5LRVlDT0RFX0RQQURfRE9XTiwKLSAgICB9OwotICAgIAotICAgIHN0YXRpYyBmaW5hbCBpbnRbXSBLRVlfMTgwX01BUCA9IG5ldyBpbnRbXSB7Ci0gICAgICAgIEtleUV2ZW50LktFWUNPREVfRFBBRF9ET1dOLCBLZXlFdmVudC5LRVlDT0RFX0RQQURfVVAsCi0gICAgICAgIEtleUV2ZW50LktFWUNPREVfRFBBRF9SSUdIVCwgS2V5RXZlbnQuS0VZQ09ERV9EUEFEX0xFRlQsCi0gICAgICAgIEtleUV2ZW50LktFWUNPREVfRFBBRF9VUCwgS2V5RXZlbnQuS0VZQ09ERV9EUEFEX0RPV04sCi0gICAgICAgIEtleUV2ZW50LktFWUNPREVfRFBBRF9MRUZULCBLZXlFdmVudC5LRVlDT0RFX0RQQURfUklHSFQsCi0gICAgfTsKLSAgICAKLSAgICBzdGF0aWMgZmluYWwgaW50W10gS0VZXzI3MF9NQVAgPSBuZXcgaW50W10gewotICAgICAgICBLZXlFdmVudC5LRVlDT0RFX0RQQURfRE9XTiwgS2V5RXZlbnQuS0VZQ09ERV9EUEFEX0xFRlQsCi0gICAgICAgIEtleUV2ZW50LktFWUNPREVfRFBBRF9MRUZULCBLZXlFdmVudC5LRVlDT0RFX0RQQURfVVAsCi0gICAgICAgIEtleUV2ZW50LktFWUNPREVfRFBBRF9VUCwgS2V5RXZlbnQuS0VZQ09ERV9EUEFEX1JJR0hULAotICAgICAgICBLZXlFdmVudC5LRVlDT0RFX0RQQURfUklHSFQsIEtleUV2ZW50LktFWUNPREVfRFBBRF9ET1dOLAotICAgIH07Ci0gICAgCi0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRklMVEVSX1JFTU9WRSA9IDA7Ci0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRklMVEVSX0tFRVAgPSAxOwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZJTFRFUl9BQk9SVCA9IC0xOwotCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBNRUFTVVJFX0xBVEVOQ1kgPSBmYWxzZTsKLSAgICBwcml2YXRlIExhdGVuY3lUaW1lciBsdDsKLQotICAgIHB1YmxpYyBpbnRlcmZhY2UgRmlsdGVyQ2FsbGJhY2sgewotICAgICAgICBpbnQgZmlsdGVyRXZlbnQoUXVldWVkRXZlbnQgZXYpOwotICAgIH0KLSAgICAKLSAgICBwdWJsaWMgaW50ZXJmYWNlIEhhcHRpY0ZlZWRiYWNrQ2FsbGJhY2sgewotICAgICAgICB2b2lkIHZpcnR1YWxLZXlGZWVkYmFjayhLZXlFdmVudCBldmVudCk7Ci0gICAgfQotICAgIAotICAgIHN0YXRpYyBjbGFzcyBRdWV1ZWRFdmVudCB7Ci0gICAgICAgIElucHV0RGV2aWNlIGlucHV0RGV2aWNlOwotICAgICAgICBsb25nIHdoZW5OYW5vOwotICAgICAgICBpbnQgZmxhZ3M7IC8vIEZyb20gdGhlIHJhdyBldmVudAotICAgICAgICBpbnQgY2xhc3NUeXBlOyAvLyBPbmUgb2YgdGhlIGNsYXNzIGNvbnN0YW50cyBpbiBJbnB1dEV2ZW50Ci0gICAgICAgIE9iamVjdCBldmVudDsKLSAgICAgICAgYm9vbGVhbiBpblF1ZXVlOwotCi0gICAgICAgIHZvaWQgY29weUZyb20oUXVldWVkRXZlbnQgdGhhdCkgewotICAgICAgICAgICAgdGhpcy5pbnB1dERldmljZSA9IHRoYXQuaW5wdXREZXZpY2U7Ci0gICAgICAgICAgICB0aGlzLndoZW5OYW5vID0gdGhhdC53aGVuTmFubzsKLSAgICAgICAgICAgIHRoaXMuZmxhZ3MgPSB0aGF0LmZsYWdzOwotICAgICAgICAgICAgdGhpcy5jbGFzc1R5cGUgPSB0aGF0LmNsYXNzVHlwZTsKLSAgICAgICAgICAgIHRoaXMuZXZlbnQgPSB0aGF0LmV2ZW50OwotICAgICAgICB9Ci0KLSAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7Ci0gICAgICAgICAgICByZXR1cm4gIlF1ZXVlZEV2ZW50eyIKLSAgICAgICAgICAgICAgICArIEludGVnZXIudG9IZXhTdHJpbmcoU3lzdGVtLmlkZW50aXR5SGFzaENvZGUodGhpcykpCi0gICAgICAgICAgICAgICAgKyAiICIgKyBldmVudCArICJ9IjsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgLy8gbm90IGNvcGllZAotICAgICAgICBRdWV1ZWRFdmVudCBwcmV2OwotICAgICAgICBRdWV1ZWRFdmVudCBuZXh0OwotICAgIH0KLQotICAgIC8qKgotICAgICAqIEEga2V5IHRoYXQgZXhpc3RzIGFzIGEgcGFydCBvZiB0aGUgdG91Y2gtc2NyZWVuLCBvdXRzaWRlIG9mIHRoZSBub3JtYWwKLSAgICAgKiBkaXNwbGF5IGFyZWEgb2YgdGhlIHNjcmVlbi4KLSAgICAgKi8KLSAgICBzdGF0aWMgY2xhc3MgVmlydHVhbEtleSB7Ci0gICAgICAgIGludCBzY2FuY29kZTsKLSAgICAgICAgaW50IGNlbnRlcng7Ci0gICAgICAgIGludCBjZW50ZXJ5OwotICAgICAgICBpbnQgd2lkdGg7Ci0gICAgICAgIGludCBoZWlnaHQ7Ci0gICAgICAgIAotICAgICAgICBpbnQgaGl0TGVmdDsKLSAgICAgICAgaW50IGhpdFRvcDsKLSAgICAgICAgaW50IGhpdFJpZ2h0OwotICAgICAgICBpbnQgaGl0Qm90dG9tOwotICAgICAgICAKLSAgICAgICAgSW5wdXREZXZpY2UgbGFzdERldmljZTsKLSAgICAgICAgaW50IGxhc3RLZXljb2RlOwotICAgICAgICAKLSAgICAgICAgYm9vbGVhbiBjaGVja0hpdChpbnQgeCwgaW50IHkpIHsKLSAgICAgICAgICAgIHJldHVybiAoeCA+PSBoaXRMZWZ0ICYmIHggPD0gaGl0UmlnaHQKLSAgICAgICAgICAgICAgICAgICAgJiYgeSA+PSBoaXRUb3AgJiYgeSA8PSBoaXRCb3R0b20pOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICB2b2lkIGNvbXB1dGVIaXRSZWN0KElucHV0RGV2aWNlIGRldiwgaW50IGR3LCBpbnQgZGgpIHsKLSAgICAgICAgICAgIGlmIChkZXYgPT0gbGFzdERldmljZSkgewotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKERFQlVHX1ZJUlRVQUxfS0VZUykgU2xvZy52KFRBRywgImNvbXB1dGVIaXRSZWN0IGZvciAiICsgc2NhbmNvZGUKLSAgICAgICAgICAgICAgICAgICAgKyAiOiBkZXY9IiArIGRldiArICIgYWJzWD0iICsgZGV2LmFic1ggKyAiIGFic1k9IiArIGRldi5hYnNZKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgbGFzdERldmljZSA9IGRldjsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaW50IG1pbnggPSBkZXYuYWJzWC5taW5WYWx1ZTsKLSAgICAgICAgICAgIGludCBtYXh4ID0gZGV2LmFic1gubWF4VmFsdWU7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGludCBoYWxmdyA9IHdpZHRoLzI7Ci0gICAgICAgICAgICBpbnQgbGVmdCA9IGNlbnRlcnggLSBoYWxmdzsKLSAgICAgICAgICAgIGludCByaWdodCA9IGNlbnRlcnggKyBoYWxmdzsKLSAgICAgICAgICAgIGhpdExlZnQgPSBtaW54ICsgKChsZWZ0Km1heHgtbWlueCkvZHcpOwotICAgICAgICAgICAgaGl0UmlnaHQgPSBtaW54ICsgKChyaWdodCptYXh4LW1pbngpL2R3KTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaW50IG1pbnkgPSBkZXYuYWJzWS5taW5WYWx1ZTsKLSAgICAgICAgICAgIGludCBtYXh5ID0gZGV2LmFic1kubWF4VmFsdWU7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGludCBoYWxmaCA9IGhlaWdodC8yOwotICAgICAgICAgICAgaW50IHRvcCA9IGNlbnRlcnkgLSBoYWxmaDsKLSAgICAgICAgICAgIGludCBib3R0b20gPSBjZW50ZXJ5ICsgaGFsZmg7Ci0gICAgICAgICAgICBoaXRUb3AgPSBtaW55ICsgKCh0b3AqbWF4eS1taW55KS9kaCk7Ci0gICAgICAgICAgICBoaXRCb3R0b20gPSBtaW55ICsgKChib3R0b20qbWF4eS1taW55KS9kaCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwcml2YXRlIHZvaWQgcmVhZFZpcnR1YWxLZXlzKFN0cmluZyBkZXZpY2VOYW1lKSB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBGaWxlSW5wdXRTdHJlYW0gZmlzID0gbmV3IEZpbGVJbnB1dFN0cmVhbSgKLSAgICAgICAgICAgICAgICAgICAgIi9zeXMvYm9hcmRfcHJvcGVydGllcy92aXJ0dWFsa2V5cy4iICsgZGV2aWNlTmFtZSk7Ci0gICAgICAgICAgICBJbnB1dFN0cmVhbVJlYWRlciBpc3IgPSBuZXcgSW5wdXRTdHJlYW1SZWFkZXIoZmlzKTsKLSAgICAgICAgICAgIEJ1ZmZlcmVkUmVhZGVyIGJyID0gbmV3IEJ1ZmZlcmVkUmVhZGVyKGlzciwgMjA0OCk7Ci0gICAgICAgICAgICBTdHJpbmcgc3RyID0gYnIucmVhZExpbmUoKTsKLSAgICAgICAgICAgIGlmIChzdHIgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIFN0cmluZ1tdIGl0ID0gc3RyLnNwbGl0KCI6Iik7Ci0gICAgICAgICAgICAgICAgaWYgKERFQlVHX1ZJUlRVQUxfS0VZUykgU2xvZy52KFRBRywgIioqKioqIFZJUlRVQUwgS0VZUzogIiArIGl0KTsKLSAgICAgICAgICAgICAgICBmaW5hbCBpbnQgTiA9IGl0Lmxlbmd0aC02OwotICAgICAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTw9TjsgaSs9NikgewotICAgICAgICAgICAgICAgICAgICBpZiAoISIweDAxIi5lcXVhbHMoaXRbaV0pKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiVW5rbm93biB2aXJ0dWFsIGtleSB0eXBlIGF0IGVsZW0gIyIgKyBpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIjogIiArIGl0W2ldKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBWaXJ0dWFsS2V5IHNiID0gbmV3IFZpcnR1YWxLZXkoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNiLnNjYW5jb2RlID0gSW50ZWdlci5wYXJzZUludChpdFtpKzFdKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNiLmNlbnRlcnggPSBJbnRlZ2VyLnBhcnNlSW50KGl0W2krMl0pOwotICAgICAgICAgICAgICAgICAgICAgICAgc2IuY2VudGVyeSA9IEludGVnZXIucGFyc2VJbnQoaXRbaSszXSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzYi53aWR0aCA9IEludGVnZXIucGFyc2VJbnQoaXRbaSs0XSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzYi5oZWlnaHQgPSBJbnRlZ2VyLnBhcnNlSW50KGl0W2krNV0pOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX1ZJUlRVQUxfS0VZUykgU2xvZy52KFRBRywgIlZpcnR1YWwga2V5ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBzYi5zY2FuY29kZSArICI6IGNlbnRlcj0iICsgc2IuY2VudGVyeCArICIsIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHNiLmNlbnRlcnkgKyAiIHNpemU9IiArIHNiLndpZHRoICsgIngiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgc2IuaGVpZ2h0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1WaXJ0dWFsS2V5cy5hZGQoc2IpOwotICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChOdW1iZXJGb3JtYXRFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIkJhZCBudW1iZXIgYXQgcmVnaW9uICIgKyBpICsgIiBpbjogIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHN0ciwgZSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBici5jbG9zZSgpOwotICAgICAgICB9IGNhdGNoIChGaWxlTm90Rm91bmRFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgU2xvZy5pKFRBRywgIk5vIHZpcnR1YWwga2V5cyBmb3VuZCIpOwotICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICBTbG9nLncoVEFHLCAiRXJyb3IgcmVhZGluZyB2aXJ0dWFsIGtleXMiLCBlKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHByaXZhdGUgdm9pZCByZWFkRXhjbHVkZWREZXZpY2VzKCkgewotICAgICAgICAvLyBSZWFkIHBhcnRuZXItcHJvdmlkZWQgbGlzdCBvZiBleGNsdWRlZCBpbnB1dCBkZXZpY2VzCi0gICAgICAgIFhtbFB1bGxQYXJzZXIgcGFyc2VyID0gbnVsbDsKLSAgICAgICAgLy8gRW52aXJvbm1lbnQuZ2V0Um9vdERpcmVjdG9yeSgpIGlzIGEgZmFuY3kgd2F5IG9mIHNheWluZyBBTkRST0lEX1JPT1Qgb3IgIi9zeXN0ZW0iLgotICAgICAgICBGaWxlIGNvbmZGaWxlID0gbmV3IEZpbGUoRW52aXJvbm1lbnQuZ2V0Um9vdERpcmVjdG9yeSgpLCBFWENMVURFRF9ERVZJQ0VTX1BBVEgpOwotICAgICAgICBGaWxlUmVhZGVyIGNvbmZyZWFkZXIgPSBudWxsOwotICAgICAgICB0cnkgewotICAgICAgICAgICAgY29uZnJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKGNvbmZGaWxlKTsKLSAgICAgICAgICAgIHBhcnNlciA9IFhtbC5uZXdQdWxsUGFyc2VyKCk7Ci0gICAgICAgICAgICBwYXJzZXIuc2V0SW5wdXQoY29uZnJlYWRlcik7Ci0gICAgICAgICAgICBYbWxVdGlscy5iZWdpbkRvY3VtZW50KHBhcnNlciwgImRldmljZXMiKTsKLQotICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAgICAgICBYbWxVdGlscy5uZXh0RWxlbWVudChwYXJzZXIpOwotICAgICAgICAgICAgICAgIGlmICghImRldmljZSIuZXF1YWxzKHBhcnNlci5nZXROYW1lKCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBTdHJpbmcgbmFtZSA9IHBhcnNlci5nZXRBdHRyaWJ1dGVWYWx1ZShudWxsLCAibmFtZSIpOwotICAgICAgICAgICAgICAgIGlmIChuYW1lICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHKSBTbG9nLnYoVEFHLCAiYWRkRXhjbHVkZWREZXZpY2UgIiArIG5hbWUpOwotICAgICAgICAgICAgICAgICAgICBhZGRFeGNsdWRlZERldmljZShuYW1lKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gY2F0Y2ggKEZpbGVOb3RGb3VuZEV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAvLyBJdCdzIG9rIGlmIHRoZSBmaWxlIGRvZXMgbm90IGV4aXN0LgotICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgU2xvZy5lKFRBRywgIkV4Y2VwdGlvbiB3aGlsZSBwYXJzaW5nICciICsgY29uZkZpbGUuZ2V0QWJzb2x1dGVQYXRoKCkgKyAiJyIsIGUpOwotICAgICAgICB9IGZpbmFsbHkgewotICAgICAgICAgICAgdHJ5IHsgaWYgKGNvbmZyZWFkZXIgIT0gbnVsbCkgY29uZnJlYWRlci5jbG9zZSgpOyB9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7IH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIEtleUlucHV0UXVldWUoQ29udGV4dCBjb250ZXh0LCBIYXB0aWNGZWVkYmFja0NhbGxiYWNrICBoYXB0aWNGZWVkYmFja0NhbGxiYWNrKSB7Ci0gICAgICAgIGlmIChNRUFTVVJFX0xBVEVOQ1kpIHsKLSAgICAgICAgICAgIGx0ID0gbmV3IExhdGVuY3lUaW1lcigxMDAsIDEwMDApOwotICAgICAgICB9Ci0KLSAgICAgICAgUmVzb3VyY2VzIHIgPSBjb250ZXh0LmdldFJlc291cmNlcygpOwotICAgICAgICBCQURfVE9VQ0hfSEFDSyA9IHIuZ2V0Qm9vbGVhbihjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmJvb2wuY29uZmlnX2ZpbHRlclRvdWNoRXZlbnRzKTsKLSAgICAgICAgCi0gICAgICAgIEpVTVBZX1RPVUNIX0hBQ0sgPSByLmdldEJvb2xlYW4oY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5ib29sLmNvbmZpZ19maWx0ZXJKdW1weVRvdWNoRXZlbnRzKTsKLSAgICAgICAgCi0gICAgICAgIG1IYXB0aWNGZWVkYmFja0NhbGxiYWNrID0gaGFwdGljRmVlZGJhY2tDYWxsYmFjazsKLSAgICAgICAgCi0gICAgICAgIHJlYWRFeGNsdWRlZERldmljZXMoKTsKLSAgICAgICAgCi0gICAgICAgIFBvd2VyTWFuYWdlciBwbSA9IChQb3dlck1hbmFnZXIpY29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDb250ZXh0LlBPV0VSX1NFUlZJQ0UpOwotICAgICAgICBtV2FrZUxvY2sgPSBwbS5uZXdXYWtlTG9jayhQb3dlck1hbmFnZXIuUEFSVElBTF9XQUtFX0xPQ0ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJLZXlJbnB1dFF1ZXVlIik7Ci0gICAgICAgIG1XYWtlTG9jay5zZXRSZWZlcmVuY2VDb3VudGVkKGZhbHNlKTsKLQotICAgICAgICBtRmlyc3QgPSBuZXcgUXVldWVkRXZlbnQoKTsKLSAgICAgICAgbUxhc3QgPSBuZXcgUXVldWVkRXZlbnQoKTsKLSAgICAgICAgbUZpcnN0Lm5leHQgPSBtTGFzdDsKLSAgICAgICAgbUxhc3QucHJldiA9IG1GaXJzdDsKLQotICAgICAgICBtVGhyZWFkLnN0YXJ0KCk7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0RGlzcGxheShEaXNwbGF5IGRpc3BsYXkpIHsKLSAgICAgICAgbURpc3BsYXkgPSBkaXNwbGF5OwotICAgICAgICAKLSAgICAgICAgLy8gV2UgYXNzdW1lIGF0IHRoaXMgcG9pbnQgdGhhdCB0aGUgZGlzcGxheSBkaW1lbnNpb25zIHJlZmxlY3QgdGhlCi0gICAgICAgIC8vIG5hdHVyYWwsIHVucm90YXRlZCBkaXNwbGF5LiAgV2Ugd2lsbCBwZXJmb3JtIGhpdCB0ZXN0cyBmb3Igc29mdAotICAgICAgICAvLyBidXR0b25zIGJhc2VkIG9uIHRoYXQgZGlzcGxheS4KLSAgICAgICAgbURpc3BsYXlXaWR0aCA9IGRpc3BsYXkuZ2V0V2lkdGgoKTsKLSAgICAgICAgbURpc3BsYXlIZWlnaHQgPSBkaXNwbGF5LmdldEhlaWdodCgpOwotICAgIH0KLSAgICAKLSAgICBwdWJsaWMgdm9pZCBnZXRJbnB1dENvbmZpZ3VyYXRpb24oQ29uZmlndXJhdGlvbiBjb25maWcpIHsKLSAgICAgICAgc3luY2hyb25pemVkIChtRmlyc3QpIHsKLSAgICAgICAgICAgIGNvbmZpZy50b3VjaHNjcmVlbiA9IENvbmZpZ3VyYXRpb24uVE9VQ0hTQ1JFRU5fTk9UT1VDSDsKLSAgICAgICAgICAgIGNvbmZpZy5rZXlib2FyZCA9IENvbmZpZ3VyYXRpb24uS0VZQk9BUkRfTk9LRVlTOwotICAgICAgICAgICAgY29uZmlnLm5hdmlnYXRpb24gPSBDb25maWd1cmF0aW9uLk5BVklHQVRJT05fTk9OQVY7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGZpbmFsIGludCBOID0gbURldmljZXMuc2l6ZSgpOwotICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPE47IGkrKykgewotICAgICAgICAgICAgICAgIElucHV0RGV2aWNlIGQgPSBtRGV2aWNlcy52YWx1ZUF0KGkpOwotICAgICAgICAgICAgICAgIGlmIChkICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKChkLmNsYXNzZXMmUmF3SW5wdXRFdmVudC5DTEFTU19UT1VDSFNDUkVFTikgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLnRvdWNoc2NyZWVuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gQ29uZmlndXJhdGlvbi5UT1VDSFNDUkVFTl9GSU5HRVI7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvL1Nsb2cuaSgiZm9vIiwgIioqKioqIEhBVkUgVE9VQ0hTQ1JFRU4hIik7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKChkLmNsYXNzZXMmUmF3SW5wdXRFdmVudC5DTEFTU19BTFBIQUtFWSkgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnLmtleWJvYXJkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0gQ29uZmlndXJhdGlvbi5LRVlCT0FSRF9RV0VSVFk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvL1Nsb2cuaSgiZm9vIiwgIioqKioqIEhBVkUgUVdFUlRZISIpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmICgoZC5jbGFzc2VzJlJhd0lucHV0RXZlbnQuQ0xBU1NfVFJBQ0tCQUxMKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb25maWcubmF2aWdhdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IENvbmZpZ3VyYXRpb24uTkFWSUdBVElPTl9UUkFDS0JBTEw7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvL1Nsb2cuaSgiZm9vIiwgIioqKioqIEhBVkUgVFJBQ0tCQUxMISIpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKChkLmNsYXNzZXMmUmF3SW5wdXRFdmVudC5DTEFTU19EUEFEKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb25maWcubmF2aWdhdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IENvbmZpZ3VyYXRpb24uTkFWSUdBVElPTl9EUEFEOwotICAgICAgICAgICAgICAgICAgICAgICAgLy9TbG9nLmkoImZvbyIsICIqKioqKiBIQVZFIERQQUQhIik7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgcHVibGljIGludCBnZXRTY2FuY29kZVN0YXRlKGludCBjb2RlKSB7Ci0gICAgICAgIHN5bmNocm9uaXplZCAobUZpcnN0KSB7Ci0gICAgICAgICAgICBWaXJ0dWFsS2V5IHZrID0gbVByZXNzZWRWaXJ0dWFsS2V5OwotICAgICAgICAgICAgaWYgKHZrICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBpZiAodmsuc2NhbmNvZGUgPT0gY29kZSkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gbmF0aXZlR2V0U2NhbmNvZGVTdGF0ZShjb2RlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICBwdWJsaWMgaW50IGdldFNjYW5jb2RlU3RhdGUoaW50IGRldmljZUlkLCBpbnQgY29kZSkgewotICAgICAgICBzeW5jaHJvbml6ZWQgKG1GaXJzdCkgewotICAgICAgICAgICAgVmlydHVhbEtleSB2ayA9IG1QcmVzc2VkVmlydHVhbEtleTsKLSAgICAgICAgICAgIGlmICh2ayAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHZrLnNjYW5jb2RlID09IGNvZGUpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIG5hdGl2ZUdldFNjYW5jb2RlU3RhdGUoZGV2aWNlSWQsIGNvZGUpOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIHB1YmxpYyBpbnQgZ2V0VHJhY2tiYWxsU2NhbmNvZGVTdGF0ZShpbnQgY29kZSkgewotICAgICAgICBzeW5jaHJvbml6ZWQgKG1GaXJzdCkgewotICAgICAgICAgICAgZmluYWwgaW50IE4gPSBtRGV2aWNlcy5zaXplKCk7Ci0gICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8TjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgSW5wdXREZXZpY2UgZGV2ID0gbURldmljZXMudmFsdWVBdChpKTsKLSAgICAgICAgICAgICAgICBpZiAoKGRldi5jbGFzc2VzJlJhd0lucHV0RXZlbnQuQ0xBU1NfVFJBQ0tCQUxMKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIGludCByZXMgPSBuYXRpdmVHZXRTY2FuY29kZVN0YXRlKGRldi5pZCwgY29kZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZXMgPiAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgCi0gICAgcHVibGljIGludCBnZXREUGFkU2NhbmNvZGVTdGF0ZShpbnQgY29kZSkgewotICAgICAgICBzeW5jaHJvbml6ZWQgKG1GaXJzdCkgewotICAgICAgICAgICAgZmluYWwgaW50IE4gPSBtRGV2aWNlcy5zaXplKCk7Ci0gICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8TjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgSW5wdXREZXZpY2UgZGV2ID0gbURldmljZXMudmFsdWVBdChpKTsKLSAgICAgICAgICAgICAgICBpZiAoKGRldi5jbGFzc2VzJlJhd0lucHV0RXZlbnQuQ0xBU1NfRFBBRCkgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICBpbnQgcmVzID0gbmF0aXZlR2V0U2NhbmNvZGVTdGF0ZShkZXYuaWQsIGNvZGUpOwotICAgICAgICAgICAgICAgICAgICBpZiAocmVzID4gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlczsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIAotICAgIHB1YmxpYyBpbnQgZ2V0S2V5Y29kZVN0YXRlKGludCBjb2RlKSB7Ci0gICAgICAgIHN5bmNocm9uaXplZCAobUZpcnN0KSB7Ci0gICAgICAgICAgICBWaXJ0dWFsS2V5IHZrID0gbVByZXNzZWRWaXJ0dWFsS2V5OwotICAgICAgICAgICAgaWYgKHZrICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBpZiAodmsubGFzdEtleWNvZGUgPT0gY29kZSkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gbmF0aXZlR2V0S2V5Y29kZVN0YXRlKGNvZGUpOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIHB1YmxpYyBpbnQgZ2V0S2V5Y29kZVN0YXRlKGludCBkZXZpY2VJZCwgaW50IGNvZGUpIHsKLSAgICAgICAgc3luY2hyb25pemVkIChtRmlyc3QpIHsKLSAgICAgICAgICAgIFZpcnR1YWxLZXkgdmsgPSBtUHJlc3NlZFZpcnR1YWxLZXk7Ci0gICAgICAgICAgICBpZiAodmsgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIGlmICh2ay5sYXN0S2V5Y29kZSA9PSBjb2RlKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAyOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBuYXRpdmVHZXRLZXljb2RlU3RhdGUoZGV2aWNlSWQsIGNvZGUpOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIHB1YmxpYyBpbnQgZ2V0VHJhY2tiYWxsS2V5Y29kZVN0YXRlKGludCBjb2RlKSB7Ci0gICAgICAgIHN5bmNocm9uaXplZCAobUZpcnN0KSB7Ci0gICAgICAgICAgICBmaW5hbCBpbnQgTiA9IG1EZXZpY2VzLnNpemUoKTsKLSAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxOOyBpKyspIHsKLSAgICAgICAgICAgICAgICBJbnB1dERldmljZSBkZXYgPSBtRGV2aWNlcy52YWx1ZUF0KGkpOwotICAgICAgICAgICAgICAgIGlmICgoZGV2LmNsYXNzZXMmUmF3SW5wdXRFdmVudC5DTEFTU19UUkFDS0JBTEwpICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgaW50IHJlcyA9IG5hdGl2ZUdldEtleWNvZGVTdGF0ZShkZXYuaWQsIGNvZGUpOwotICAgICAgICAgICAgICAgICAgICBpZiAocmVzID4gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlczsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotICAgIAotICAgIHB1YmxpYyBpbnQgZ2V0RFBhZEtleWNvZGVTdGF0ZShpbnQgY29kZSkgewotICAgICAgICBzeW5jaHJvbml6ZWQgKG1GaXJzdCkgewotICAgICAgICAgICAgZmluYWwgaW50IE4gPSBtRGV2aWNlcy5zaXplKCk7Ci0gICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8TjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgSW5wdXREZXZpY2UgZGV2ID0gbURldmljZXMudmFsdWVBdChpKTsKLSAgICAgICAgICAgICAgICBpZiAoKGRldi5jbGFzc2VzJlJhd0lucHV0RXZlbnQuQ0xBU1NfRFBBRCkgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICBpbnQgcmVzID0gbmF0aXZlR2V0S2V5Y29kZVN0YXRlKGRldi5pZCwgY29kZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZXMgPiAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0gICAgCi0gICAgcHVibGljIHN0YXRpYyBuYXRpdmUgU3RyaW5nIGdldERldmljZU5hbWUoaW50IGRldmljZUlkKTsKLSAgICBwdWJsaWMgc3RhdGljIG5hdGl2ZSBpbnQgZ2V0RGV2aWNlQ2xhc3NlcyhpbnQgZGV2aWNlSWQpOwotICAgIHB1YmxpYyBzdGF0aWMgbmF0aXZlIHZvaWQgYWRkRXhjbHVkZWREZXZpY2UoU3RyaW5nIGRldmljZU5hbWUpOwotICAgIHB1YmxpYyBzdGF0aWMgbmF0aXZlIGJvb2xlYW4gZ2V0QWJzb2x1dGVJbmZvKGludCBkZXZpY2VJZCwgaW50IGF4aXMsCi0gICAgICAgICAgICBJbnB1dERldmljZS5BYnNvbHV0ZUluZm8gb3V0SW5mbyk7Ci0gICAgcHVibGljIHN0YXRpYyBuYXRpdmUgaW50IGdldFN3aXRjaFN0YXRlKGludCBzdyk7Ci0gICAgcHVibGljIHN0YXRpYyBuYXRpdmUgaW50IGdldFN3aXRjaFN0YXRlKGludCBkZXZpY2VJZCwgaW50IHN3KTsKLSAgICBwdWJsaWMgc3RhdGljIG5hdGl2ZSBpbnQgbmF0aXZlR2V0U2NhbmNvZGVTdGF0ZShpbnQgY29kZSk7Ci0gICAgcHVibGljIHN0YXRpYyBuYXRpdmUgaW50IG5hdGl2ZUdldFNjYW5jb2RlU3RhdGUoaW50IGRldmljZUlkLCBpbnQgY29kZSk7Ci0gICAgcHVibGljIHN0YXRpYyBuYXRpdmUgaW50IG5hdGl2ZUdldEtleWNvZGVTdGF0ZShpbnQgY29kZSk7Ci0gICAgcHVibGljIHN0YXRpYyBuYXRpdmUgaW50IG5hdGl2ZUdldEtleWNvZGVTdGF0ZShpbnQgZGV2aWNlSWQsIGludCBjb2RlKTsKLSAgICBwdWJsaWMgc3RhdGljIG5hdGl2ZSBpbnQgc2NhbmNvZGVUb0tleWNvZGUoaW50IGRldmljZUlkLCBpbnQgc2NhbmNvZGUpOwotICAgIHB1YmxpYyBzdGF0aWMgbmF0aXZlIGJvb2xlYW4gaGFzS2V5cyhpbnRbXSBrZXljb2RlcywgYm9vbGVhbltdIGtleUV4aXN0cyk7Ci0gICAgCi0gICAgcHVibGljIHN0YXRpYyBLZXlFdmVudCBuZXdLZXlFdmVudChJbnB1dERldmljZSBkZXZpY2UsIGxvbmcgZG93blRpbWUsCi0gICAgICAgICAgICBsb25nIGV2ZW50VGltZSwgYm9vbGVhbiBkb3duLCBpbnQga2V5Y29kZSwgaW50IHJlcGVhdENvdW50LAotICAgICAgICAgICAgaW50IHNjYW5jb2RlLCBpbnQgZmxhZ3MpIHsKLSAgICAgICAgcmV0dXJuIG5ldyBLZXlFdmVudCgKLSAgICAgICAgICAgICAgICBkb3duVGltZSwgZXZlbnRUaW1lLAotICAgICAgICAgICAgICAgIGRvd24gPyBLZXlFdmVudC5BQ1RJT05fRE9XTiA6IEtleUV2ZW50LkFDVElPTl9VUCwKLSAgICAgICAgICAgICAgICBrZXljb2RlLCByZXBlYXRDb3VudCwKLSAgICAgICAgICAgICAgICBkZXZpY2UgIT0gbnVsbCA/IGRldmljZS5tTWV0YUtleXNTdGF0ZSA6IDAsCi0gICAgICAgICAgICAgICAgZGV2aWNlICE9IG51bGwgPyBkZXZpY2UuaWQgOiAtMSwgc2NhbmNvZGUsCi0gICAgICAgICAgICAgICAgZmxhZ3MgfCBLZXlFdmVudC5GTEFHX0ZST01fU1lTVEVNKTsKLSAgICB9Ci0gICAgCi0gICAgVGhyZWFkIG1UaHJlYWQgPSBuZXcgVGhyZWFkKCJJbnB1dERldmljZVJlYWRlciIpIHsKLSAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgewotICAgICAgICAgICAgaWYgKERFQlVHKSBTbG9nLnYoVEFHLCAiSW5wdXREZXZpY2VSZWFkZXIucnVuKCkiKTsKLSAgICAgICAgICAgIGFuZHJvaWQub3MuUHJvY2Vzcy5zZXRUaHJlYWRQcmlvcml0eSgKLSAgICAgICAgICAgICAgICAgICAgYW5kcm9pZC5vcy5Qcm9jZXNzLlRIUkVBRF9QUklPUklUWV9VUkdFTlRfRElTUExBWSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIFJhd0lucHV0RXZlbnQgZXYgPSBuZXcgUmF3SW5wdXRFdmVudCgpOwotICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICBJbnB1dERldmljZSBkaTsKLQotICAgICAgICAgICAgICAgICAgICAvLyBibG9jaywgZG9lc24ndCByZWxlYXNlIHRoZSBtb25pdG9yCi0gICAgICAgICAgICAgICAgICAgIHJlYWRFdmVudChldik7Ci0KLSAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBzZW5kID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gY29uZmlnQ2hhbmdlZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgaWYgKGZhbHNlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBTbG9nLmkoVEFHLCAiSW5wdXQgZXZlbnQ6IGRldj0weCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKGV2LmRldmljZUlkKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgdHlwZT0weCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKGV2LnR5cGUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiBzY2FuY29kZT0iICsgZXYuc2NhbmNvZGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiIGtleWNvZGU9IiArIGV2LmtleWNvZGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiIHZhbHVlPSIgKyBldi52YWx1ZSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgIGlmIChldi50eXBlID09IFJhd0lucHV0RXZlbnQuRVZfREVWSUNFX0FEREVEKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKG1GaXJzdCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpID0gbmV3SW5wdXREZXZpY2UoZXYuZGV2aWNlSWQpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaS5jbGFzc2VzICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBkZXZpY2UgaXMgc29tZSBraW5kIG9mIGlucHV0IGNsYXNzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSBjYXJlIGFib3V0IGl0LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtRGV2aWNlcy5wdXQoZXYuZGV2aWNlSWQsIGRpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChkaS5jbGFzc2VzICYgUmF3SW5wdXRFdmVudC5DTEFTU19UT1VDSFNDUkVFTikgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhZFZpcnR1YWxLZXlzKGRpLm5hbWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBjb25maWd1cmF0aW9uIG1heSBoYXZlIGNoYW5nZWQgYmVjYXVzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvZiB0aGlzIGRldmljZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnQ2hhbmdlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2Ugd29uJ3QgZG8gYW55dGhpbmcgd2l0aCB0aGlzIGRldmljZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUlnbm9yZWREZXZpY2VzLnB1dChldi5kZXZpY2VJZCwgZGkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbG9nLmkoVEFHLCAiSWdub3Jpbmcgbm9uLWlucHV0IGRldmljZTogaWQ9MHgiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKGRpLmlkKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiwgbmFtZT0iICsgZGkubmFtZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGV2LnR5cGUgPT0gUmF3SW5wdXRFdmVudC5FVl9ERVZJQ0VfUkVNT1ZFRCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3luY2hyb25pemVkIChtRmlyc3QpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmFsc2UpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xvZy5pKFRBRywgIkRldmljZSByZW1vdmVkOiBpZD0weCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIEludGVnZXIudG9IZXhTdHJpbmcoZXYuZGV2aWNlSWQpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGkgPSBtRGV2aWNlcy5nZXQoZXYuZGV2aWNlSWQpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkaSAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1EZXZpY2VzLmRlbGV0ZShldi5kZXZpY2VJZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBjb25maWd1cmF0aW9uIG1heSBoYXZlIGNoYW5nZWQgYmVjYXVzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvZiB0aGlzIGRldmljZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmlnQ2hhbmdlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgoZGk9bUlnbm9yZWREZXZpY2VzLmdldChldi5kZXZpY2VJZCkpICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUlnbm9yZWREZXZpY2VzLnJlbW92ZShldi5kZXZpY2VJZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIlJlbW92aW5nIGJhZCBkZXZpY2UgaWQ6ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIEludGVnZXIudG9IZXhTdHJpbmcoZXYuZGV2aWNlSWQpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgZGkgPSBnZXRJbnB1dERldmljZShldi5kZXZpY2VJZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGkgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgbWF5IGJlIHNvbWUganVuayBmcm9tIGFuIGlnbm9yZWQgZGV2aWNlLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBmaXJzdCBjcmFjayBhdCBpdAotICAgICAgICAgICAgICAgICAgICAgICAgc2VuZCA9IHByZXByb2Nlc3NFdmVudChkaSwgZXYpOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXYudHlwZSA9PSBSYXdJbnB1dEV2ZW50LkVWX0tFWSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpLm1NZXRhS2V5c1N0YXRlID0gbWFrZU1ldGFTdGF0ZShldi5rZXljb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXYudmFsdWUgIT0gMCwgZGkubU1ldGFLZXlzU3RhdGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1IYXZlR2xvYmFsTWV0YVN0YXRlID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBpZiAoY29uZmlnQ2hhbmdlZCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc3luY2hyb25pemVkIChtRmlyc3QpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRMb2NrZWQoZGksIFN5c3RlbS5uYW5vVGltZSgpLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmF3SW5wdXRFdmVudC5DTEFTU19DT05GSUdVUkFUSU9OX0NIQU5HRUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFzZW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgc3luY2hyb25pemVkIChtRmlyc3QpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PVEU6IFRoZSBldmVudCB0aW1lYmFzZSBhYnNvbHV0ZWx5IG11c3QgYmUgdGhlIHNhbWUKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRpbWViYXNlIGFzIFN5c3RlbUNsb2NrLnVwdGltZU1pbGxpcygpLgotICAgICAgICAgICAgICAgICAgICAgICAgLy9jdXJUaW1lID0gZ290T25lID8gZXYud2hlbiA6IFN5c3RlbUNsb2NrLnVwdGltZU1pbGxpcygpOwotICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgbG9uZyBjdXJUaW1lID0gU3lzdGVtQ2xvY2sudXB0aW1lTWlsbGlzKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBsb25nIGN1clRpbWVOYW5vID0gU3lzdGVtLm5hbm9UaW1lKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvL1Nsb2cuaShUQUcsICJjdXJUaW1lPSIgKyBjdXJUaW1lICsgIiwgc3lzdGVtQ2xvY2s9IiArIFN5c3RlbUNsb2NrLnVwdGltZU1pbGxpcygpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgaW50IGNsYXNzZXMgPSBkaS5jbGFzc2VzOwotICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgaW50IHR5cGUgPSBldi50eXBlOwotICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgaW50IHNjYW5jb2RlID0gZXYuc2NhbmNvZGU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZW5kID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIElzIGl0IGEga2V5IGV2ZW50PwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGUgPT0gUmF3SW5wdXRFdmVudC5FVl9LRVkgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsYXNzZXMmUmF3SW5wdXRFdmVudC5DTEFTU19LRVlCT0FSRCkgIT0gMCAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2NhbmNvZGUgPCBSYXdJbnB1dEV2ZW50LkJUTl9GSVJTVCB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjYW5jb2RlID4gUmF3SW5wdXRFdmVudC5CVE5fTEFTVCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIGRvd247Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2LnZhbHVlICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG93biA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpLm1LZXlEb3duVGltZSA9IGN1clRpbWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG93biA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQga2V5Y29kZSA9IHJvdGF0ZUtleUNvZGVMb2NrZWQoZXYua2V5Y29kZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkTG9ja2VkKGRpLCBjdXJUaW1lTmFubywgZXYuZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYXdJbnB1dEV2ZW50LkNMQVNTX0tFWUJPQVJELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3S2V5RXZlbnQoZGksIGRpLm1LZXlEb3duVGltZSwgY3VyVGltZSwgZG93biwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5Y29kZSwgMCwgc2NhbmNvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoZXYuZmxhZ3MgJiBXaW5kb3dNYW5hZ2VyUG9saWN5LkZMQUdfV09LRV9IRVJFKSAhPSAwKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBLZXlFdmVudC5GTEFHX1dPS0VfSEVSRSA6IDApKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXYudHlwZSA9PSBSYXdJbnB1dEV2ZW50LkVWX0tFWSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNpbmdsZSB0b3VjaCBwcm90b2NvbDogdG91Y2ggZ29pbmcgZG93biBvciB1cC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXYuc2NhbmNvZGUgPT0gUmF3SW5wdXRFdmVudC5CVE5fVE9VQ0ggJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbGFzc2VzJihSYXdJbnB1dEV2ZW50LkNMQVNTX1RPVUNIU0NSRUVOCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxSYXdJbnB1dEV2ZW50LkNMQVNTX1RPVUNIU0NSRUVOX01UKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPT0gUmF3SW5wdXRFdmVudC5DTEFTU19UT1VDSFNDUkVFTikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaS5tQWJzLmNoYW5nZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaS5tQWJzLm1Eb3duWzBdID0gZXYudmFsdWUgIT0gMDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUcmFja2JhbGwgKG1vdXNlKSBwcm90b2NvbDogcHJlc3MgZG93biBvciB1cC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGV2LnNjYW5jb2RlID09IFJhd0lucHV0RXZlbnQuQlROX01PVVNFICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xhc3NlcyZSYXdJbnB1dEV2ZW50LkNMQVNTX1RSQUNLQkFMTCkgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaS5tUmVsLmNoYW5nZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaS5tUmVsLm1OZXh0TnVtUG9pbnRlcnMgPSBldi52YWx1ZSAhPSAwID8gMSA6IDA7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbmQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFByb2Nlc3MgcG9zaXRpb24gZXZlbnRzIGZyb20gbXVsdGl0b3VjaCBwcm90b2NvbC4KLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXYudHlwZSA9PSBSYXdJbnB1dEV2ZW50LkVWX0FCUyAmJgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2xhc3NlcyZSYXdJbnB1dEV2ZW50LkNMQVNTX1RPVUNIU0NSRUVOX01UKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2LnNjYW5jb2RlID09IFJhd0lucHV0RXZlbnQuQUJTX01UX1RPVUNIX01BSk9SKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpLm1BYnMuY2hhbmdlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpLm1BYnMubU5leHREYXRhW2RpLm1BYnMubUFkZGluZ1BvaW50ZXJPZmZzZXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIE1vdGlvbkV2ZW50LlNBTVBMRV9QUkVTU1VSRV0gPSBldi52YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGV2LnNjYW5jb2RlID09IFJhd0lucHV0RXZlbnQuQUJTX01UX1BPU0lUSU9OX1gpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGkubUFicy5jaGFuZ2VkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGkubUFicy5tTmV4dERhdGFbZGkubUFicy5tQWRkaW5nUG9pbnRlck9mZnNldAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBNb3Rpb25FdmVudC5TQU1QTEVfWF0gPSBldi52YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX1BPSU5URVJTKSBTbG9nLnYoVEFHLCAiTVQgQCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGRpLm1BYnMubUFkZGluZ1BvaW50ZXJPZmZzZXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgWDoiICsgZXYudmFsdWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXYuc2NhbmNvZGUgPT0gUmF3SW5wdXRFdmVudC5BQlNfTVRfUE9TSVRJT05fWSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaS5tQWJzLmNoYW5nZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaS5tQWJzLm1OZXh0RGF0YVtkaS5tQWJzLm1BZGRpbmdQb2ludGVyT2Zmc2V0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIE1vdGlvbkV2ZW50LlNBTVBMRV9ZXSA9IGV2LnZhbHVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfUE9JTlRFUlMpIFNsb2cudihUQUcsICJNVCBAIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgZGkubUFicy5tQWRkaW5nUG9pbnRlck9mZnNldAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiBZOiIgKyBldi52YWx1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChldi5zY2FuY29kZSA9PSBSYXdJbnB1dEV2ZW50LkFCU19NVF9XSURUSF9NQUpPUikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaS5tQWJzLmNoYW5nZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaS5tQWJzLm1OZXh0RGF0YVtkaS5tQWJzLm1BZGRpbmdQb2ludGVyT2Zmc2V0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIE1vdGlvbkV2ZW50LlNBTVBMRV9TSVpFXSA9IGV2LnZhbHVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgLy8gUHJvY2VzcyBwb3NpdGlvbiBldmVudHMgZnJvbSBzaW5nbGUgdG91Y2ggcHJvdG9jb2wuCi0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGV2LnR5cGUgPT0gUmF3SW5wdXRFdmVudC5FVl9BQlMgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsYXNzZXMmUmF3SW5wdXRFdmVudC5DTEFTU19UT1VDSFNDUkVFTikgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldi5zY2FuY29kZSA9PSBSYXdJbnB1dEV2ZW50LkFCU19YKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpLm1BYnMuY2hhbmdlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpLmN1clRvdWNoVmFsc1tNb3Rpb25FdmVudC5TQU1QTEVfWF0gPSBldi52YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGV2LnNjYW5jb2RlID09IFJhd0lucHV0RXZlbnQuQUJTX1kpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGkubUFicy5jaGFuZ2VkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGkuY3VyVG91Y2hWYWxzW01vdGlvbkV2ZW50LlNBTVBMRV9ZXSA9IGV2LnZhbHVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXYuc2NhbmNvZGUgPT0gUmF3SW5wdXRFdmVudC5BQlNfUFJFU1NVUkUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGkubUFicy5jaGFuZ2VkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGkuY3VyVG91Y2hWYWxzW01vdGlvbkV2ZW50LlNBTVBMRV9QUkVTU1VSRV0gPSBldi52YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGkuY3VyVG91Y2hWYWxzW01vdGlvbkV2ZW50Lk5VTV9TQU1QTEVfREFUQQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgTW90aW9uRXZlbnQuU0FNUExFX1BSRVNTVVJFXSA9IGV2LnZhbHVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXYuc2NhbmNvZGUgPT0gUmF3SW5wdXRFdmVudC5BQlNfVE9PTF9XSURUSCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaS5tQWJzLmNoYW5nZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaS5jdXJUb3VjaFZhbHNbTW90aW9uRXZlbnQuU0FNUExFX1NJWkVdID0gZXYudmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpLmN1clRvdWNoVmFsc1tNb3Rpb25FdmVudC5OVU1fU0FNUExFX0RBVEEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIE1vdGlvbkV2ZW50LlNBTVBMRV9TSVpFXSA9IGV2LnZhbHVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIFByb2Nlc3MgbW92ZW1lbnQgZXZlbnRzIGZyb20gdHJhY2tiYWxsIChtb3VzZSkgcHJvdG9jb2wuCi0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGV2LnR5cGUgPT0gUmF3SW5wdXRFdmVudC5FVl9SRUwgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNsYXNzZXMmUmF3SW5wdXRFdmVudC5DTEFTU19UUkFDS0JBTEwpICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBZGQgdGhpcyByZWxhdGl2ZSBtb3ZlbWVudCBpbnRvIG91ciB0b3RhbHMuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2LnNjYW5jb2RlID09IFJhd0lucHV0RXZlbnQuUkVMX1gpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGkubVJlbC5jaGFuZ2VkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGkubVJlbC5tTmV4dERhdGFbTW90aW9uRXZlbnQuU0FNUExFX1hdICs9IGV2LnZhbHVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZXYuc2NhbmNvZGUgPT0gUmF3SW5wdXRFdmVudC5SRUxfWSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaS5tUmVsLmNoYW5nZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaS5tUmVsLm1OZXh0RGF0YVtNb3Rpb25FdmVudC5TQU1QTEVfWV0gKz0gZXYudmFsdWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBIYW5kbGUgbXVsdGl0b3VjaCBwcm90b2NvbCBzeW5jOiB0ZWxscyB1cyB0aGF0IHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHJpdmVyIGhhcyByZXR1cm5lZCBhbGwgZGF0YSBmb3IgLW9uZS0gb2YgdGhlIHBvaW50ZXJzCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGF0IGlzIGN1cnJlbnRseSBkb3duLgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2LnR5cGUgPT0gUmF3SW5wdXRFdmVudC5FVl9TWU4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgZXYuc2NhbmNvZGUgPT0gUmF3SW5wdXRFdmVudC5TWU5fTVRfUkVQT1JUCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIGRpLm1BYnMgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpLm1BYnMuY2hhbmdlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRpLm1BYnMubU5leHREYXRhW01vdGlvbkV2ZW50LlNBTVBMRV9QUkVTU1VSRV0gPiAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSB2YWx1ZSBpcyA8PSAwLCB0aGUgcG9pbnRlciBpcyBub3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG93biwgc28ga2VlcCBpdCBpbiB0aGUgY291bnQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGkubUFicy5tTmV4dERhdGFbZGkubUFicy5tQWRkaW5nUG9pbnRlck9mZnNldAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBNb3Rpb25FdmVudC5TQU1QTEVfUFJFU1NVUkVdICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIGludCBudW0gPSBkaS5tQWJzLm1OZXh0TnVtUG9pbnRlcnMrMTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpLm1BYnMubU5leHROdW1Qb2ludGVycyA9IG51bTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19QT0lOVEVSUykgU2xvZy52KFRBRywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1UX1JFUE9SVDogbm93IGhhdmUgIiArIG51bSArICIgcG9pbnRlcnMiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIGludCBuZXdPZmZzZXQgPSAobnVtIDw9IElucHV0RGV2aWNlLk1BWF9QT0lOVEVSUykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyAobnVtICogTW90aW9uRXZlbnQuTlVNX1NBTVBMRV9EQVRBKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IChJbnB1dERldmljZS5NQVhfUE9JTlRFUlMgKgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vdGlvbkV2ZW50Lk5VTV9TQU1QTEVfREFUQSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaS5tQWJzLm1BZGRpbmdQb2ludGVyT2Zmc2V0ID0gbmV3T2Zmc2V0OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGkubUFicy5tTmV4dERhdGFbbmV3T2Zmc2V0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgTW90aW9uRXZlbnQuU0FNUExFX1BSRVNTVVJFXSA9IDA7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfUE9JTlRFUlMpIFNsb2cudihUQUcsICJNVF9SRVBPUlQ6IG5vIHBvaW50ZXIiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgLy8gSGFuZGxlIGdlbmVyYWwgZXZlbnQgc3luYzogYWxsIGRhdGEgZm9yIHRoZSBjdXJyZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBldmVudCB1cGRhdGUgaGFzIGJlZW4gZGVsaXZlcmVkLgotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzZW5kIHx8IChldi50eXBlID09IFJhd0lucHV0RXZlbnQuRVZfU1lOCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIGV2LnNjYW5jb2RlID09IFJhd0lucHV0RXZlbnQuU1lOX1JFUE9SVCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobURpc3BsYXkgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1IYXZlR2xvYmFsTWV0YVN0YXRlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wdXRlR2xvYmFsTWV0YVN0YXRlTG9ja2VkKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1vdGlvbkV2ZW50IG1lOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5wdXREZXZpY2UuTW90aW9uU3RhdGUgbXMgPSBkaS5tQWJzOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobXMuY2hhbmdlZCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXMuZXZlckNoYW5nZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXMuY2hhbmdlZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGNsYXNzZXMmKFJhd0lucHV0RXZlbnQuQ0xBU1NfVE9VQ0hTQ1JFRU4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFJhd0lucHV0RXZlbnQuQ0xBU1NfVE9VQ0hTQ1JFRU5fTVQpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9PSBSYXdJbnB1dEV2ZW50LkNMQVNTX1RPVUNIU0NSRUVOKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXMubU5leHROdW1Qb2ludGVycyA9IDA7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1zLm1Eb3duWzBdKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoZGkuY3VyVG91Y2hWYWxzLCAwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zLm1OZXh0RGF0YSwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNb3Rpb25FdmVudC5OVU1fU0FNUExFX0RBVEEpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtcy5tTmV4dE51bVBvaW50ZXJzKys7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoQkFEX1RPVUNIX0hBQ0spIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtcy5kcm9wQmFkUG9pbnQoZGkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEpVTVBZX1RPVUNIX0hBQ0spIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtcy5kcm9wSnVtcHlQb2ludChkaSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gZG9Nb3Rpb24gPSAhbW9uaXRvclZpcnR1YWxLZXkoZGksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2LCBjdXJUaW1lLCBjdXJUaW1lTmFubyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkb01vdGlvbiAmJiBtcy5tTmV4dE51bVBvaW50ZXJzID4gMAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAobXMubUxhc3ROdW1Qb2ludGVycyA9PSAwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgbXMubVNraXBMYXN0UG9pbnRlcnMpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9Nb3Rpb24gPSAhZ2VuZXJhdGVWaXJ0dWFsS2V5RG93bihkaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2LCBjdXJUaW1lLCBjdXJUaW1lTmFubyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkb01vdGlvbikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFhYWCBOZWVkIHRvIGJlIGFibGUgdG8gZ2VuZXJhdGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtdWx0aXBsZSBldmVudHMgaGVyZSwgZm9yIGV4YW1wbGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpZiB0d28gZmluZ2VycyBjaGFuZ2UgdXAvZG93biBzdGF0ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGF0IHRoZSBzYW1lIHRpbWUuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZSA9IG1zLmdlbmVyYXRlQWJzTW90aW9uKGRpLCBjdXJUaW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1clRpbWVOYW5vLCBtRGlzcGxheSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtT3JpZW50YXRpb24sIG1HbG9iYWxNZXRhU3RhdGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfUE9JTlRFUlMpIFNsb2cudihUQUcsICJBYnNvbHV0ZTogeD0iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBkaS5tQWJzLm1OZXh0RGF0YVtNb3Rpb25FdmVudC5TQU1QTEVfWF0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgeT0iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBkaS5tQWJzLm1OZXh0RGF0YVtNb3Rpb25FdmVudC5TQU1QTEVfWV0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgZXY9IiArIG1lKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1lICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChXaW5kb3dNYW5hZ2VyUG9saWN5LldBVENIX1BPSU5URVIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbG9nLmkoVEFHLCAiRW5xdWV1ZWluZzogIiArIG1lKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZExvY2tlZChkaSwgY3VyVGltZU5hbm8sIGV2LmZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSYXdJbnB1dEV2ZW50LkNMQVNTX1RPVUNIU0NSRUVOLCBtZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChtcy5oYXNNb3JlKCkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBhcmUgY29uc3VtaW5nIG1vdmVtZW50IGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZpcnR1YWwga2V5IGFyZWEuLi4gIGJ1dCBzdGlsbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByb3BhZ2F0ZSB0aGlzIHRvIHRoZSBwcmV2aW91cwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRhdGEgZm9yIGNvbXBhcmlzb25zLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBudW0gPSBtcy5tTmV4dE51bVBvaW50ZXJzOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChudW0gPiBJbnB1dERldmljZS5NQVhfUE9JTlRFUlMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtID0gSW5wdXREZXZpY2UuTUFYX1BPSU5URVJTOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KG1zLm1OZXh0RGF0YSwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zLm1MYXN0RGF0YSwgMCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bSAqIE1vdGlvbkV2ZW50Lk5VTV9TQU1QTEVfREFUQSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXMubUxhc3ROdW1Qb2ludGVycyA9IG51bTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtcy5tU2tpcExhc3RQb2ludGVycyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1zLmZpbmlzaCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtcyA9IGRpLm1SZWw7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtcy5jaGFuZ2VkKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtcy5ldmVyQ2hhbmdlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtcy5jaGFuZ2VkID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lID0gbXMuZ2VuZXJhdGVSZWxNb3Rpb24oZGksIGN1clRpbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1clRpbWVOYW5vLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtT3JpZW50YXRpb24sIG1HbG9iYWxNZXRhU3RhdGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZhbHNlKSBTbG9nLnYoVEFHLCAiUmVsYXRpdmU6IHg9IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGRpLm1SZWwubU5leHREYXRhW01vdGlvbkV2ZW50LlNBTVBMRV9YXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgeT0iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgZGkubVJlbC5tTmV4dERhdGFbTW90aW9uRXZlbnQuU0FNUExFX1ldCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiBldj0iICsgbWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1lICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRMb2NrZWQoZGksIGN1clRpbWVOYW5vLCBldi5mbGFncywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJhd0lucHV0RXZlbnQuQ0xBU1NfVFJBQ0tCQUxMLCBtZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICB9IGNhdGNoIChSdW50aW1lRXhjZXB0aW9uIGV4YykgewotICAgICAgICAgICAgICAgICAgICBTbG9nLmUoVEFHLCAiSW5wdXRSZWFkZXJUaHJlYWQgdW5jYXVnaHQgZXhjZXB0aW9uIiwgZXhjKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgcHJpdmF0ZSBib29sZWFuIGlzSW5zaWRlRGlzcGxheShJbnB1dERldmljZSBkZXYpIHsKLSAgICAgICAgZmluYWwgSW5wdXREZXZpY2UuQWJzb2x1dGVJbmZvIGFic3ggPSBkZXYuYWJzWDsKLSAgICAgICAgZmluYWwgSW5wdXREZXZpY2UuQWJzb2x1dGVJbmZvIGFic3kgPSBkZXYuYWJzWTsKLSAgICAgICAgZmluYWwgSW5wdXREZXZpY2UuTW90aW9uU3RhdGUgYWJzbSA9IGRldi5tQWJzOwotICAgICAgICBpZiAoYWJzeCA9PSBudWxsIHx8IGFic3kgPT0gbnVsbCB8fCBhYnNtID09IG51bGwpIHsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoYWJzbS5tTmV4dERhdGFbTW90aW9uRXZlbnQuU0FNUExFX1hdID49IGFic3gubWluVmFsdWUKLSAgICAgICAgICAgICAgICAmJiBhYnNtLm1OZXh0RGF0YVtNb3Rpb25FdmVudC5TQU1QTEVfWF0gPD0gYWJzeC5tYXhWYWx1ZQotICAgICAgICAgICAgICAgICYmIGFic20ubU5leHREYXRhW01vdGlvbkV2ZW50LlNBTVBMRV9ZXSA+PSBhYnN5Lm1pblZhbHVlCi0gICAgICAgICAgICAgICAgJiYgYWJzbS5tTmV4dERhdGFbTW90aW9uRXZlbnQuU0FNUExFX1ldIDw9IGFic3kubWF4VmFsdWUpIHsKLSAgICAgICAgICAgIGlmIChERUJVR19WSVJUVUFMX0tFWVMpIFNsb2cudihUQUcsICJJbnB1dCAoIgotICAgICAgICAgICAgICAgICAgICArIGFic20ubU5leHREYXRhW01vdGlvbkV2ZW50LlNBTVBMRV9YXQotICAgICAgICAgICAgICAgICAgICArICIsIiArIGFic20ubU5leHREYXRhW01vdGlvbkV2ZW50LlNBTVBMRV9ZXQotICAgICAgICAgICAgICAgICAgICArICIpIGluc2lkZSBvZiBkaXNwbGF5Iik7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAKLSAgICBwcml2YXRlIFZpcnR1YWxLZXkgZmluZFZpcnR1YWxLZXkoSW5wdXREZXZpY2UgZGV2KSB7Ci0gICAgICAgIGZpbmFsIGludCBOID0gbVZpcnR1YWxLZXlzLnNpemUoKTsKLSAgICAgICAgaWYgKE4gPD0gMCkgewotICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGZpbmFsIElucHV0RGV2aWNlLk1vdGlvblN0YXRlIGFic20gPSBkZXYubUFiczsKLSAgICAgICAgZm9yIChpbnQgaT0wOyBpPE47IGkrKykgewotICAgICAgICAgICAgVmlydHVhbEtleSBzYiA9IG1WaXJ0dWFsS2V5cy5nZXQoaSk7Ci0gICAgICAgICAgICBzYi5jb21wdXRlSGl0UmVjdChkZXYsIG1EaXNwbGF5V2lkdGgsIG1EaXNwbGF5SGVpZ2h0KTsKLSAgICAgICAgICAgIGlmIChERUJVR19WSVJUVUFMX0tFWVMpIFNsb2cudihUQUcsICJIaXQgdGVzdCAoIgotICAgICAgICAgICAgICAgICAgICArIGFic20ubU5leHREYXRhW01vdGlvbkV2ZW50LlNBTVBMRV9YXSArICIsIgotICAgICAgICAgICAgICAgICAgICArIGFic20ubU5leHREYXRhW01vdGlvbkV2ZW50LlNBTVBMRV9ZXSArICIpIGluIGNvZGUgIgotICAgICAgICAgICAgICAgICAgICArIHNiLnNjYW5jb2RlICsgIiAtICgiICsgc2IuaGl0TGVmdAotICAgICAgICAgICAgICAgICAgICArICIsIiArIHNiLmhpdFRvcCArICIpLSgiICsgc2IuaGl0UmlnaHQgKyAiLCIKLSAgICAgICAgICAgICAgICAgICAgKyBzYi5oaXRCb3R0b20gKyAiKSIpOwotICAgICAgICAgICAgaWYgKHNiLmNoZWNrSGl0KGFic20ubU5leHREYXRhW01vdGlvbkV2ZW50LlNBTVBMRV9YXSwKLSAgICAgICAgICAgICAgICAgICAgYWJzbS5tTmV4dERhdGFbTW90aW9uRXZlbnQuU0FNUExFX1ldKSkgewotICAgICAgICAgICAgICAgIGlmIChERUJVR19WSVJUVUFMX0tFWVMpIFNsb2cudihUQUcsICJIaXQhIik7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNiOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9Ci0gICAgCi0gICAgcHJpdmF0ZSBib29sZWFuIGdlbmVyYXRlVmlydHVhbEtleURvd24oSW5wdXREZXZpY2UgZGksIFJhd0lucHV0RXZlbnQgZXYsCi0gICAgICAgICAgICBsb25nIGN1clRpbWUsIGxvbmcgY3VyVGltZU5hbm8pIHsKLSAgICAgICAgaWYgKGlzSW5zaWRlRGlzcGxheShkaSkpIHsKLSAgICAgICAgICAgIC8vIERpZG4ndCBjb25zdW1lIGV2ZW50LgotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAKLSAgICAgICAgVmlydHVhbEtleSB2ayA9IGZpbmRWaXJ0dWFsS2V5KGRpKTsKLSAgICAgICAgaWYgKHZrICE9IG51bGwpIHsKLSAgICAgICAgICAgIGZpbmFsIElucHV0RGV2aWNlLk1vdGlvblN0YXRlIG1zID0gZGkubUFiczsKLSAgICAgICAgICAgIG1QcmVzc2VkVmlydHVhbEtleSA9IHZrOwotICAgICAgICAgICAgdmsubGFzdEtleWNvZGUgPSBzY2FuY29kZVRvS2V5Y29kZShkaS5pZCwgdmsuc2NhbmNvZGUpOwotICAgICAgICAgICAgbXMubUxhc3ROdW1Qb2ludGVycyA9IG1zLm1OZXh0TnVtUG9pbnRlcnM7Ci0gICAgICAgICAgICBkaS5tS2V5RG93blRpbWUgPSBjdXJUaW1lOwotICAgICAgICAgICAgaWYgKERFQlVHX1ZJUlRVQUxfS0VZUykgU2xvZy52KFRBRywKLSAgICAgICAgICAgICAgICAgICAgIkdlbmVyYXRlIGtleSBkb3duIGZvcjogIiArIHZrLnNjYW5jb2RlCi0gICAgICAgICAgICAgICAgICAgICsgIiAoa2V5Y29kZT0iICsgdmsubGFzdEtleWNvZGUgKyAiKSIpOwotICAgICAgICAgICAgS2V5RXZlbnQgZXZlbnQgPSBuZXdLZXlFdmVudChkaSwgZGkubUtleURvd25UaW1lLCBjdXJUaW1lLCB0cnVlLAotICAgICAgICAgICAgICAgICAgICB2ay5sYXN0S2V5Y29kZSwgMCwgdmsuc2NhbmNvZGUsCi0gICAgICAgICAgICAgICAgICAgIEtleUV2ZW50LkZMQUdfVklSVFVBTF9IQVJEX0tFWSk7Ci0gICAgICAgICAgICBtSGFwdGljRmVlZGJhY2tDYWxsYmFjay52aXJ0dWFsS2V5RmVlZGJhY2soZXZlbnQpOwotICAgICAgICAgICAgYWRkTG9ja2VkKGRpLCBjdXJUaW1lTmFubywgZXYuZmxhZ3MsIFJhd0lucHV0RXZlbnQuQ0xBU1NfS0VZQk9BUkQsCi0gICAgICAgICAgICAgICAgICAgIGV2ZW50KTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgLy8gV2UgYWx3YXlzIGNvbnN1bWUgdGhlIGV2ZW50LCBldmVuIGlmIHdlIGRpZG4ndAotICAgICAgICAvLyBnZW5lcmF0ZSBhIGtleSBldmVudC4gIFRoZXJlIGFyZSB0d28gcmVhc29ucyBmb3IKLSAgICAgICAgLy8gdGhpczogdG8gYXZvaWQgc3B1cmlvdXMgdG91Y2hlcyB3aGVuIGhvbGRpbmcKLSAgICAgICAgLy8gdGhlIGVkZ2VzIG9mIHRoZSBkZXZpY2UgbmVhciB0aGUgdG91Y2hzY3JlZW4sCi0gICAgICAgIC8vIGFuZCB0byBhdm9pZCByZXBvcnRpbmcgZXZlbnRzIGlmIHRoZXJlIGFyZSB2aXJ0dWFsCi0gICAgICAgIC8vIGtleXMgb24gdGhlIHRvdWNoc2NyZWVuIG91dHNpZGUgb2YgdGhlIGRpc3BsYXkKLSAgICAgICAgLy8gYXJlYS4KLSAgICAgICAgLy8gTm90ZSB0aGF0IGZvciBhbGwgb2YgdGhpcyB3ZSBhcmUgb25seSBsb29raW5nIGF0IHRoZQotICAgICAgICAvLyBmaXJzdCBwb2ludGVyLCBzaW5jZSB3aGF0IHdlIGFyZSBoYW5kbGluZyBoZXJlIGlzIHRoZQotICAgICAgICAvLyBmaXJzdCBwb2ludGVyIGdvaW5nIGRvd24sIGFuZCB0aGlzIGlzIHRoZSBjb29yZGluYXRlCi0gICAgICAgIC8vIHRoYXQgd2lsbCBiZSB1c2VkIHRvIGRpc3BhdGNoIHRoZSBldmVudC4KLSAgICAgICAgaWYgKGZhbHNlKSB7Ci0gICAgICAgICAgICBmaW5hbCBJbnB1dERldmljZS5BYnNvbHV0ZUluZm8gYWJzeCA9IGRpLmFic1g7Ci0gICAgICAgICAgICBmaW5hbCBJbnB1dERldmljZS5BYnNvbHV0ZUluZm8gYWJzeSA9IGRpLmFic1k7Ci0gICAgICAgICAgICBmaW5hbCBJbnB1dERldmljZS5Nb3Rpb25TdGF0ZSBhYnNtID0gZGkubUFiczsKLSAgICAgICAgICAgIFNsb2cudihUQUcsICJSZWplY3RpbmcgKCIKLSAgICAgICAgICAgICAgICArIGFic20ubU5leHREYXRhW01vdGlvbkV2ZW50LlNBTVBMRV9YXSArICIsIgotICAgICAgICAgICAgICAgICsgYWJzbS5tTmV4dERhdGFbTW90aW9uRXZlbnQuU0FNUExFX1ldICsgIik6IG91dHNpZGUgb2YgKCIKLSAgICAgICAgICAgICAgICArIGFic3gubWluVmFsdWUgKyAiLCIgKyBhYnN5Lm1pblZhbHVlCi0gICAgICAgICAgICAgICAgKyAiKS0oIiArIGFic3gubWF4VmFsdWUgKyAiLCIKLSAgICAgICAgICAgICAgICArIGFic3gubWF4VmFsdWUgKyAiKSIpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICAKLSAgICBwcml2YXRlIGJvb2xlYW4gbW9uaXRvclZpcnR1YWxLZXkoSW5wdXREZXZpY2UgZGksIFJhd0lucHV0RXZlbnQgZXYsCi0gICAgICAgICAgICBsb25nIGN1clRpbWUsIGxvbmcgY3VyVGltZU5hbm8pIHsKLSAgICAgICAgVmlydHVhbEtleSB2ayA9IG1QcmVzc2VkVmlydHVhbEtleTsKLSAgICAgICAgaWYgKHZrID09IG51bGwpIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgZmluYWwgSW5wdXREZXZpY2UuTW90aW9uU3RhdGUgbXMgPSBkaS5tQWJzOwotICAgICAgICBpZiAobXMubU5leHROdW1Qb2ludGVycyA8PSAwKSB7Ci0gICAgICAgICAgICBtUHJlc3NlZFZpcnR1YWxLZXkgPSBudWxsOwotICAgICAgICAgICAgbXMubUxhc3ROdW1Qb2ludGVycyA9IDA7Ci0gICAgICAgICAgICBpZiAoREVCVUdfVklSVFVBTF9LRVlTKSBTbG9nLnYoVEFHLCAiR2VuZXJhdGUga2V5IHVwIGZvcjogIiArIHZrLnNjYW5jb2RlKTsKLSAgICAgICAgICAgIEtleUV2ZW50IGV2ZW50ID0gbmV3S2V5RXZlbnQoZGksIGRpLm1LZXlEb3duVGltZSwgY3VyVGltZSwgZmFsc2UsCi0gICAgICAgICAgICAgICAgICAgIHZrLmxhc3RLZXljb2RlLCAwLCB2ay5zY2FuY29kZSwKLSAgICAgICAgICAgICAgICAgICAgS2V5RXZlbnQuRkxBR19WSVJUVUFMX0hBUkRfS0VZKTsKLSAgICAgICAgICAgIG1IYXB0aWNGZWVkYmFja0NhbGxiYWNrLnZpcnR1YWxLZXlGZWVkYmFjayhldmVudCk7Ci0gICAgICAgICAgICBhZGRMb2NrZWQoZGksIGN1clRpbWVOYW5vLCBldi5mbGFncywgUmF3SW5wdXRFdmVudC5DTEFTU19LRVlCT0FSRCwKLSAgICAgICAgICAgICAgICAgICAgZXZlbnQpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAKLSAgICAgICAgfSBlbHNlIGlmIChpc0luc2lkZURpc3BsYXkoZGkpKSB7Ci0gICAgICAgICAgICAvLyBXaG9vcHMgdGhlIHBvaW50ZXIgaGFzIG1vdmVkIGludG8KLSAgICAgICAgICAgIC8vIHRoZSBkaXNwbGF5IGFyZWEhICBDYW5jZWwgdGhlCi0gICAgICAgICAgICAvLyB2aXJ0dWFsIGtleSBhbmQgc3RhcnQgYSBwb2ludGVyCi0gICAgICAgICAgICAvLyBtb3Rpb24uCi0gICAgICAgICAgICBtUHJlc3NlZFZpcnR1YWxLZXkgPSBudWxsOwotICAgICAgICAgICAgaWYgKERFQlVHX1ZJUlRVQUxfS0VZUykgU2xvZy52KFRBRywgIkNhbmNlbCBrZXkgdXAgZm9yOiAiICsgdmsuc2NhbmNvZGUpOwotICAgICAgICAgICAgS2V5RXZlbnQgZXZlbnQgPSBuZXdLZXlFdmVudChkaSwgZGkubUtleURvd25UaW1lLCBjdXJUaW1lLCBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgdmsubGFzdEtleWNvZGUsIDAsIHZrLnNjYW5jb2RlLAotICAgICAgICAgICAgICAgICAgICBLZXlFdmVudC5GTEFHX0NBTkNFTEVEIHwgS2V5RXZlbnQuRkxBR19WSVJUVUFMX0hBUkRfS0VZKTsKLSAgICAgICAgICAgIG1IYXB0aWNGZWVkYmFja0NhbGxiYWNrLnZpcnR1YWxLZXlGZWVkYmFjayhldmVudCk7Ci0gICAgICAgICAgICBhZGRMb2NrZWQoZGksIGN1clRpbWVOYW5vLCBldi5mbGFncywgUmF3SW5wdXRFdmVudC5DTEFTU19LRVlCT0FSRCwKLSAgICAgICAgICAgICAgICAgICAgZXZlbnQpOwotICAgICAgICAgICAgbXMubUxhc3ROdW1Qb2ludGVycyA9IDA7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICAKLSAgICAvKioKLSAgICAgKiBSZXR1cm5zIGEgbmV3IG1ldGEgc3RhdGUgZm9yIHRoZSBnaXZlbiBrZXlzIGFuZCBvbGQgc3RhdGUuCi0gICAgICovCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IG1ha2VNZXRhU3RhdGUoaW50IGtleWNvZGUsIGJvb2xlYW4gZG93biwgaW50IG9sZCkgewotICAgICAgICBpbnQgbWFzazsKLSAgICAgICAgc3dpdGNoIChrZXljb2RlKSB7Ci0gICAgICAgIGNhc2UgS2V5RXZlbnQuS0VZQ09ERV9BTFRfTEVGVDoKLSAgICAgICAgICAgIG1hc2sgPSBLZXlFdmVudC5NRVRBX0FMVF9MRUZUX09OOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgS2V5RXZlbnQuS0VZQ09ERV9BTFRfUklHSFQ6Ci0gICAgICAgICAgICBtYXNrID0gS2V5RXZlbnQuTUVUQV9BTFRfUklHSFRfT047Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBLZXlFdmVudC5LRVlDT0RFX1NISUZUX0xFRlQ6Ci0gICAgICAgICAgICBtYXNrID0gS2V5RXZlbnQuTUVUQV9TSElGVF9MRUZUX09OOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgS2V5RXZlbnQuS0VZQ09ERV9TSElGVF9SSUdIVDoKLSAgICAgICAgICAgIG1hc2sgPSBLZXlFdmVudC5NRVRBX1NISUZUX1JJR0hUX09OOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgS2V5RXZlbnQuS0VZQ09ERV9TWU06Ci0gICAgICAgICAgICBtYXNrID0gS2V5RXZlbnQuTUVUQV9TWU1fT047Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgIHJldHVybiBvbGQ7Ci0gICAgICAgIH0KLSAgICAgICAgaW50IHJlc3VsdCA9IH4oS2V5RXZlbnQuTUVUQV9BTFRfT04gfCBLZXlFdmVudC5NRVRBX1NISUZUX09OKQotICAgICAgICAgICAgICAgICAgICAmIChkb3duID8gKG9sZCB8IG1hc2spIDogKG9sZCAmIH5tYXNrKSk7Ci0gICAgICAgIGlmICgwICE9IChyZXN1bHQgJiAoS2V5RXZlbnQuTUVUQV9BTFRfTEVGVF9PTiB8IEtleUV2ZW50Lk1FVEFfQUxUX1JJR0hUX09OKSkpIHsKLSAgICAgICAgICAgIHJlc3VsdCB8PSBLZXlFdmVudC5NRVRBX0FMVF9PTjsKLSAgICAgICAgfQotICAgICAgICBpZiAoMCAhPSAocmVzdWx0ICYgKEtleUV2ZW50Lk1FVEFfU0hJRlRfTEVGVF9PTiB8IEtleUV2ZW50Lk1FVEFfU0hJRlRfUklHSFRfT04pKSkgewotICAgICAgICAgICAgcmVzdWx0IHw9IEtleUV2ZW50Lk1FVEFfU0hJRlRfT047Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAgICB9Ci0KLSAgICBwcml2YXRlIHZvaWQgY29tcHV0ZUdsb2JhbE1ldGFTdGF0ZUxvY2tlZCgpIHsKLSAgICAgICAgaW50IGkgPSBtRGV2aWNlcy5zaXplKCk7Ci0gICAgICAgIG1HbG9iYWxNZXRhU3RhdGUgPSAwOwotICAgICAgICB3aGlsZSAoKC0taSkgPj0gMCkgewotICAgICAgICAgICAgbUdsb2JhbE1ldGFTdGF0ZSB8PSBtRGV2aWNlcy52YWx1ZUF0KGkpLm1NZXRhS2V5c1N0YXRlOwotICAgICAgICB9Ci0gICAgICAgIG1IYXZlR2xvYmFsTWV0YVN0YXRlID0gdHJ1ZTsKLSAgICB9Ci0gICAgCi0gICAgLyoKLSAgICAgKiBSZXR1cm4gdHJ1ZSBpZiB5b3Ugd2FudCB0aGUgZXZlbnQgdG8gZ2V0IHBhc3NlZCBvbiB0byB0aGUgCi0gICAgICogcmVzdCBvZiB0aGUgc3lzdGVtLCBhbmQgZmFsc2UgaWYgeW91J3ZlIGhhbmRsZWQgaXQgYW5kIHdhbnQKLSAgICAgKiBpdCBkcm9wcGVkLgotICAgICAqLwotICAgIGFic3RyYWN0IGJvb2xlYW4gcHJlcHJvY2Vzc0V2ZW50KElucHV0RGV2aWNlIGRldmljZSwgUmF3SW5wdXRFdmVudCBldmVudCk7Ci0KLSAgICBJbnB1dERldmljZSBnZXRJbnB1dERldmljZShpbnQgZGV2aWNlSWQpIHsKLSAgICAgICAgc3luY2hyb25pemVkIChtRmlyc3QpIHsKLSAgICAgICAgICAgIHJldHVybiBnZXRJbnB1dERldmljZUxvY2tlZChkZXZpY2VJZCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgcHJpdmF0ZSBJbnB1dERldmljZSBnZXRJbnB1dERldmljZUxvY2tlZChpbnQgZGV2aWNlSWQpIHsKLSAgICAgICAgcmV0dXJuIG1EZXZpY2VzLmdldChkZXZpY2VJZCk7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0T3JpZW50YXRpb24oaW50IG9yaWVudGF0aW9uKSB7Ci0gICAgICAgIHN5bmNocm9uaXplZChtRmlyc3QpIHsKLSAgICAgICAgICAgIG1PcmllbnRhdGlvbiA9IG9yaWVudGF0aW9uOwotICAgICAgICAgICAgc3dpdGNoIChvcmllbnRhdGlvbikgewotICAgICAgICAgICAgICAgIGNhc2UgU3VyZmFjZS5ST1RBVElPTl85MDoKLSAgICAgICAgICAgICAgICAgICAgbUtleVJvdGF0aW9uTWFwID0gS0VZXzkwX01BUDsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgY2FzZSBTdXJmYWNlLlJPVEFUSU9OXzE4MDoKLSAgICAgICAgICAgICAgICAgICAgbUtleVJvdGF0aW9uTWFwID0gS0VZXzE4MF9NQVA7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIGNhc2UgU3VyZmFjZS5ST1RBVElPTl8yNzA6Ci0gICAgICAgICAgICAgICAgICAgIG1LZXlSb3RhdGlvbk1hcCA9IEtFWV8yNzBfTUFQOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICBtS2V5Um90YXRpb25NYXAgPSBudWxsOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICBwdWJsaWMgaW50IHJvdGF0ZUtleUNvZGUoaW50IGtleUNvZGUpIHsKLSAgICAgICAgc3luY2hyb25pemVkKG1GaXJzdCkgewotICAgICAgICAgICAgcmV0dXJuIHJvdGF0ZUtleUNvZGVMb2NrZWQoa2V5Q29kZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgcHJpdmF0ZSBpbnQgcm90YXRlS2V5Q29kZUxvY2tlZChpbnQga2V5Q29kZSkgewotICAgICAgICBpbnRbXSBtYXAgPSBtS2V5Um90YXRpb25NYXA7Ci0gICAgICAgIGlmIChtYXAgIT0gbnVsbCkgewotICAgICAgICAgICAgZmluYWwgaW50IE4gPSBtYXAubGVuZ3RoOwotICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPE47IGkrPTIpIHsKLSAgICAgICAgICAgICAgICBpZiAobWFwW2ldID09IGtleUNvZGUpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG1hcFtpKzFdOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICByZXR1cm4ga2V5Q29kZTsKLSAgICB9Ci0gICAgCi0gICAgYm9vbGVhbiBoYXNFdmVudHMoKSB7Ci0gICAgICAgIHN5bmNocm9uaXplZCAobUZpcnN0KSB7Ci0gICAgICAgICAgICByZXR1cm4gbUZpcnN0Lm5leHQgIT0gbUxhc3Q7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgLyoKLSAgICAgKiByZXR1cm5zIHRydWUgaWYgd2UgcmV0dXJuZWQgYW4gZXZlbnQsIGFuZCBmYWxzZSBpZiB3ZSB0aW1lZCBvdXQKLSAgICAgKi8KLSAgICBRdWV1ZWRFdmVudCBnZXRFdmVudChsb25nIHRpbWVvdXRNUykgewotICAgICAgICBsb25nIGJlZ2luID0gU3lzdGVtQ2xvY2sudXB0aW1lTWlsbGlzKCk7Ci0gICAgICAgIGZpbmFsIGxvbmcgZW5kID0gYmVnaW4rdGltZW91dE1TOwotICAgICAgICBsb25nIG5vdyA9IGJlZ2luOwotICAgICAgICBzeW5jaHJvbml6ZWQgKG1GaXJzdCkgewotICAgICAgICAgICAgd2hpbGUgKG1GaXJzdC5uZXh0ID09IG1MYXN0ICYmIGVuZCA+IG5vdykgewotICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIG1XYWtlTG9jay5yZWxlYXNlKCk7Ci0gICAgICAgICAgICAgICAgICAgIG1GaXJzdC53YWl0KGVuZC1ub3cpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBjYXRjaCAoSW50ZXJydXB0ZWRFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBub3cgPSBTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKTsKLSAgICAgICAgICAgICAgICBpZiAoYmVnaW4gPiBub3cpIHsKLSAgICAgICAgICAgICAgICAgICAgYmVnaW4gPSBub3c7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG1GaXJzdC5uZXh0ID09IG1MYXN0KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBRdWV1ZWRFdmVudCBwID0gbUZpcnN0Lm5leHQ7Ci0gICAgICAgICAgICBtRmlyc3QubmV4dCA9IHAubmV4dDsKLSAgICAgICAgICAgIG1GaXJzdC5uZXh0LnByZXYgPSBtRmlyc3Q7Ci0gICAgICAgICAgICBwLmluUXVldWUgPSBmYWxzZTsKLSAgICAgICAgICAgIHJldHVybiBwOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogUmV0dXJuIHRydWUgaWYgdGhlIHF1ZXVlIGhhcyBhbiB1cCBldmVudCBwZW5kaW5nIHRoYXQgY29ycmVzcG9uZHMKLSAgICAgKiB0byB0aGUgc2FtZSBrZXkgYXMgdGhlIGdpdmVuIGtleSBldmVudC4KLSAgICAgKi8KLSAgICBib29sZWFuIGhhc0tleVVwRXZlbnQoS2V5RXZlbnQgb3JpZ0V2ZW50KSB7Ci0gICAgICAgIHN5bmNocm9uaXplZCAobUZpcnN0KSB7Ci0gICAgICAgICAgICBmaW5hbCBpbnQga2V5Q29kZSA9IG9yaWdFdmVudC5nZXRLZXlDb2RlKCk7Ci0gICAgICAgICAgICBRdWV1ZWRFdmVudCBjdXIgPSBtTGFzdC5wcmV2OwotICAgICAgICAgICAgd2hpbGUgKGN1ci5wcmV2ICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBpZiAoY3VyLmNsYXNzVHlwZSA9PSBSYXdJbnB1dEV2ZW50LkNMQVNTX0tFWUJPQVJEKSB7Ci0gICAgICAgICAgICAgICAgICAgIEtleUV2ZW50IGtlID0gKEtleUV2ZW50KWN1ci5ldmVudDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGtlLmdldEFjdGlvbigpID09IEtleUV2ZW50LkFDVElPTl9VUAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIGtlLmdldEtleUNvZGUoKSA9PSBrZXlDb2RlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBjdXIgPSBjdXIucHJldjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAKLSAgICB2b2lkIHJlY3ljbGVFdmVudChRdWV1ZWRFdmVudCBldikgewotICAgICAgICBzeW5jaHJvbml6ZWQgKG1GaXJzdCkgewotICAgICAgICAgICAgLy9TbG9nLmkoVEFHLCAiUmVjeWNsZSBldmVudDogIiArIGV2KTsKLSAgICAgICAgICAgIGlmIChldi5ldmVudCA9PSBldi5pbnB1dERldmljZS5tQWJzLmN1cnJlbnRNb3ZlKSB7Ci0gICAgICAgICAgICAgICAgZXYuaW5wdXREZXZpY2UubUFicy5jdXJyZW50TW92ZSA9IG51bGw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoZXYuZXZlbnQgPT0gZXYuaW5wdXREZXZpY2UubVJlbC5jdXJyZW50TW92ZSkgewotICAgICAgICAgICAgICAgIGlmIChmYWxzZSkgU2xvZy5pKFRBRywgIkRldGFjaCByZWwgIiArIGV2LmV2ZW50KTsKLSAgICAgICAgICAgICAgICBldi5pbnB1dERldmljZS5tUmVsLmN1cnJlbnRNb3ZlID0gbnVsbDsKLSAgICAgICAgICAgICAgICBldi5pbnB1dERldmljZS5tUmVsLm1OZXh0RGF0YVtNb3Rpb25FdmVudC5TQU1QTEVfWF0gPSAwOwotICAgICAgICAgICAgICAgIGV2LmlucHV0RGV2aWNlLm1SZWwubU5leHREYXRhW01vdGlvbkV2ZW50LlNBTVBMRV9ZXSA9IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZWN5Y2xlTG9ja2VkKGV2KTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICB2b2lkIGZpbHRlclF1ZXVlKEZpbHRlckNhbGxiYWNrIGNiKSB7Ci0gICAgICAgIHN5bmNocm9uaXplZCAobUZpcnN0KSB7Ci0gICAgICAgICAgICBRdWV1ZWRFdmVudCBjdXIgPSBtTGFzdC5wcmV2OwotICAgICAgICAgICAgd2hpbGUgKGN1ci5wcmV2ICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBzd2l0Y2ggKGNiLmZpbHRlckV2ZW50KGN1cikpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FzZSBGSUxURVJfUkVNT1ZFOgotICAgICAgICAgICAgICAgICAgICAgICAgY3VyLnByZXYubmV4dCA9IGN1ci5uZXh0OwotICAgICAgICAgICAgICAgICAgICAgICAgY3VyLm5leHQucHJldiA9IGN1ci5wcmV2OwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgRklMVEVSX0FCT1JUOgotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBjdXIgPSBjdXIucHJldjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICBwcml2YXRlIFF1ZXVlZEV2ZW50IG9idGFpbkxvY2tlZChJbnB1dERldmljZSBkZXZpY2UsIGxvbmcgd2hlbk5hbm8sCi0gICAgICAgICAgICBpbnQgZmxhZ3MsIGludCBjbGFzc1R5cGUsIE9iamVjdCBldmVudCkgewotICAgICAgICBRdWV1ZWRFdmVudCBldjsKLSAgICAgICAgaWYgKG1DYWNoZUNvdW50ID09IDApIHsKLSAgICAgICAgICAgIGV2ID0gbmV3IFF1ZXVlZEV2ZW50KCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBldiA9IG1DYWNoZTsKLSAgICAgICAgICAgIGV2LmluUXVldWUgPSBmYWxzZTsKLSAgICAgICAgICAgIG1DYWNoZSA9IGV2Lm5leHQ7Ci0gICAgICAgICAgICBtQ2FjaGVDb3VudC0tOwotICAgICAgICB9Ci0gICAgICAgIGV2LmlucHV0RGV2aWNlID0gZGV2aWNlOwotICAgICAgICBldi53aGVuTmFubyA9IHdoZW5OYW5vOwotICAgICAgICBldi5mbGFncyA9IGZsYWdzOwotICAgICAgICBldi5jbGFzc1R5cGUgPSBjbGFzc1R5cGU7Ci0gICAgICAgIGV2LmV2ZW50ID0gZXZlbnQ7Ci0gICAgICAgIHJldHVybiBldjsKLSAgICB9Ci0KLSAgICBwcml2YXRlIHZvaWQgcmVjeWNsZUxvY2tlZChRdWV1ZWRFdmVudCBldikgewotICAgICAgICBpZiAoZXYuaW5RdWV1ZSkgewotICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIkV2ZW50IGFscmVhZHkgaW4gcXVldWUhIik7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG1DYWNoZUNvdW50IDwgMTApIHsKLSAgICAgICAgICAgIG1DYWNoZUNvdW50Kys7Ci0gICAgICAgICAgICBldi5uZXh0ID0gbUNhY2hlOwotICAgICAgICAgICAgbUNhY2hlID0gZXY7Ci0gICAgICAgICAgICBldi5pblF1ZXVlID0gdHJ1ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHByaXZhdGUgdm9pZCBhZGRMb2NrZWQoSW5wdXREZXZpY2UgZGV2aWNlLCBsb25nIHdoZW5OYW5vLCBpbnQgZmxhZ3MsCi0gICAgICAgICAgICBpbnQgY2xhc3NUeXBlLCBPYmplY3QgZXZlbnQpIHsKLSAgICAgICAgYm9vbGVhbiBwb2tlID0gbUZpcnN0Lm5leHQgPT0gbUxhc3Q7Ci0KLSAgICAgICAgUXVldWVkRXZlbnQgZXYgPSBvYnRhaW5Mb2NrZWQoZGV2aWNlLCB3aGVuTmFubywgZmxhZ3MsIGNsYXNzVHlwZSwgZXZlbnQpOwotICAgICAgICBRdWV1ZWRFdmVudCBwID0gbUxhc3QucHJldjsKLSAgICAgICAgd2hpbGUgKHAgIT0gbUZpcnN0ICYmIGV2LndoZW5OYW5vIDwgcC53aGVuTmFubykgewotICAgICAgICAgICAgcCA9IHAucHJldjsKLSAgICAgICAgfQotCi0gICAgICAgIGV2Lm5leHQgPSBwLm5leHQ7Ci0gICAgICAgIGV2LnByZXYgPSBwOwotICAgICAgICBwLm5leHQgPSBldjsKLSAgICAgICAgZXYubmV4dC5wcmV2ID0gZXY7Ci0gICAgICAgIGV2LmluUXVldWUgPSB0cnVlOwotCi0gICAgICAgIGlmIChwb2tlKSB7Ci0gICAgICAgICAgICBsb25nIHRpbWU7Ci0gICAgICAgICAgICBpZiAoTUVBU1VSRV9MQVRFTkNZKSB7Ci0gICAgICAgICAgICAgICAgdGltZSA9IFN5c3RlbS5uYW5vVGltZSgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgbUZpcnN0Lm5vdGlmeSgpOwotICAgICAgICAgICAgbVdha2VMb2NrLmFjcXVpcmUoKTsKLSAgICAgICAgICAgIGlmIChNRUFTVVJFX0xBVEVOQ1kpIHsKLSAgICAgICAgICAgICAgICBsdC5zYW1wbGUoIjEgYWRkTG9ja2VkLXF1ZXVlZCBldmVudCAiLCBTeXN0ZW0ubmFub1RpbWUoKSAtIHRpbWUpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBJbnB1dERldmljZSBuZXdJbnB1dERldmljZShpbnQgZGV2aWNlSWQpIHsKLSAgICAgICAgaW50IGNsYXNzZXMgPSBnZXREZXZpY2VDbGFzc2VzKGRldmljZUlkKTsKLSAgICAgICAgU3RyaW5nIG5hbWUgPSBnZXREZXZpY2VOYW1lKGRldmljZUlkKTsKLSAgICAgICAgSW5wdXREZXZpY2UuQWJzb2x1dGVJbmZvIGFic1ggPSBudWxsOwotICAgICAgICBJbnB1dERldmljZS5BYnNvbHV0ZUluZm8gYWJzWSA9IG51bGw7Ci0gICAgICAgIElucHV0RGV2aWNlLkFic29sdXRlSW5mbyBhYnNQcmVzc3VyZSA9IG51bGw7Ci0gICAgICAgIElucHV0RGV2aWNlLkFic29sdXRlSW5mbyBhYnNTaXplID0gbnVsbDsKLSAgICAgICAgaWYgKGNsYXNzZXMgIT0gMCkgewotICAgICAgICAgICAgU2xvZy5pKFRBRywgIkRldmljZSBhZGRlZDogaWQ9MHgiICsgSW50ZWdlci50b0hleFN0cmluZyhkZXZpY2VJZCkKLSAgICAgICAgICAgICAgICAgICAgKyAiLCBuYW1lPSIgKyBuYW1lCi0gICAgICAgICAgICAgICAgICAgICsgIiwgY2xhc3Nlcz0iICsgSW50ZWdlci50b0hleFN0cmluZyhjbGFzc2VzKSk7Ci0gICAgICAgICAgICBpZiAoKGNsYXNzZXMmUmF3SW5wdXRFdmVudC5DTEFTU19UT1VDSFNDUkVFTl9NVCkgIT0gMCkgewotICAgICAgICAgICAgICAgIGFic1ggPSBsb2FkQWJzb2x1dGVJbmZvKGRldmljZUlkLAotICAgICAgICAgICAgICAgICAgICAgICAgUmF3SW5wdXRFdmVudC5BQlNfTVRfUE9TSVRJT05fWCwgIlgiKTsKLSAgICAgICAgICAgICAgICBhYnNZID0gbG9hZEFic29sdXRlSW5mbyhkZXZpY2VJZCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFJhd0lucHV0RXZlbnQuQUJTX01UX1BPU0lUSU9OX1ksICJZIik7Ci0gICAgICAgICAgICAgICAgYWJzUHJlc3N1cmUgPSBsb2FkQWJzb2x1dGVJbmZvKGRldmljZUlkLAotICAgICAgICAgICAgICAgICAgICAgICAgUmF3SW5wdXRFdmVudC5BQlNfTVRfVE9VQ0hfTUFKT1IsICJQcmVzc3VyZSIpOwotICAgICAgICAgICAgICAgIGFic1NpemUgPSBsb2FkQWJzb2x1dGVJbmZvKGRldmljZUlkLAotICAgICAgICAgICAgICAgICAgICAgICAgUmF3SW5wdXRFdmVudC5BQlNfTVRfV0lEVEhfTUFKT1IsICJTaXplIik7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKChjbGFzc2VzJlJhd0lucHV0RXZlbnQuQ0xBU1NfVE9VQ0hTQ1JFRU4pICE9IDApIHsKLSAgICAgICAgICAgICAgICBhYnNYID0gbG9hZEFic29sdXRlSW5mbyhkZXZpY2VJZCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFJhd0lucHV0RXZlbnQuQUJTX1gsICJYIik7Ci0gICAgICAgICAgICAgICAgYWJzWSA9IGxvYWRBYnNvbHV0ZUluZm8oZGV2aWNlSWQsCi0gICAgICAgICAgICAgICAgICAgICAgICBSYXdJbnB1dEV2ZW50LkFCU19ZLCAiWSIpOwotICAgICAgICAgICAgICAgIGFic1ByZXNzdXJlID0gbG9hZEFic29sdXRlSW5mbyhkZXZpY2VJZCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFJhd0lucHV0RXZlbnQuQUJTX1BSRVNTVVJFLCAiUHJlc3N1cmUiKTsKLSAgICAgICAgICAgICAgICBhYnNTaXplID0gbG9hZEFic29sdXRlSW5mbyhkZXZpY2VJZCwKLSAgICAgICAgICAgICAgICAgICAgICAgIFJhd0lucHV0RXZlbnQuQUJTX1RPT0xfV0lEVEgsICJTaXplIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHJldHVybiBuZXcgSW5wdXREZXZpY2UoZGV2aWNlSWQsIGNsYXNzZXMsIG5hbWUsIGFic1gsIGFic1ksIGFic1ByZXNzdXJlLCBhYnNTaXplKTsKLSAgICB9Ci0gICAgCi0gICAgcHJpdmF0ZSBJbnB1dERldmljZS5BYnNvbHV0ZUluZm8gbG9hZEFic29sdXRlSW5mbyhpbnQgaWQsIGludCBjaGFubmVsLAotICAgICAgICAgICAgU3RyaW5nIG5hbWUpIHsKLSAgICAgICAgSW5wdXREZXZpY2UuQWJzb2x1dGVJbmZvIGluZm8gPSBuZXcgSW5wdXREZXZpY2UuQWJzb2x1dGVJbmZvKCk7Ci0gICAgICAgIGlmIChnZXRBYnNvbHV0ZUluZm8oaWQsIGNoYW5uZWwsIGluZm8pCi0gICAgICAgICAgICAgICAgJiYgaW5mby5taW5WYWx1ZSAhPSBpbmZvLm1heFZhbHVlKSB7Ci0gICAgICAgICAgICBTbG9nLmkoVEFHLCAiICAiICsgbmFtZSArICI6IG1pbj0iICsgaW5mby5taW5WYWx1ZQotICAgICAgICAgICAgICAgICAgICArICIgbWF4PSIgKyBpbmZvLm1heFZhbHVlCi0gICAgICAgICAgICAgICAgICAgICsgIiBmbGF0PSIgKyBpbmZvLmZsYXQKLSAgICAgICAgICAgICAgICAgICAgKyAiIGZ1eno9IiArIGluZm8uZnV6eik7Ci0gICAgICAgICAgICBpbmZvLnJhbmdlID0gaW5mby5tYXhWYWx1ZS1pbmZvLm1pblZhbHVlOwotICAgICAgICAgICAgcmV0dXJuIGluZm87Ci0gICAgICAgIH0KLSAgICAgICAgU2xvZy5pKFRBRywgIiAgIiArIG5hbWUgKyAiOiB1bmtub3duIHZhbHVlcyIpOwotICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9Ci0gICAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIGJvb2xlYW4gcmVhZEV2ZW50KFJhd0lucHV0RXZlbnQgb3V0RXZlbnQpOwotICAgIAotICAgIHZvaWQgZHVtcChQcmludFdyaXRlciBwdywgU3RyaW5nIHByZWZpeCkgewotICAgICAgICBzeW5jaHJvbml6ZWQgKG1GaXJzdCkgewotICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPG1EZXZpY2VzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgSW5wdXREZXZpY2UgZGV2ID0gbURldmljZXMudmFsdWVBdChpKTsKLSAgICAgICAgICAgICAgICBwdy5wcmludChwcmVmaXgpOyBwdy5wcmludCgiRGV2aWNlICMiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB3LnByaW50KG1EZXZpY2VzLmtleUF0KGkpKTsgcHcucHJpbnQoIiAiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB3LnByaW50KGRldi5uYW1lKTsgcHcucHJpbnQoIiAoY2xhc3Nlcz0weCIpOwotICAgICAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoSW50ZWdlci50b0hleFN0cmluZyhkZXYuY2xhc3NlcykpOwotICAgICAgICAgICAgICAgICAgICAgICAgcHcucHJpbnRsbigiKToiKTsKLSAgICAgICAgICAgICAgICBwdy5wcmludChwcmVmaXgpOyBwdy5wcmludCgiICBtS2V5RG93blRpbWU9Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdy5wcmludChkZXYubUtleURvd25UaW1lKTsgcHcucHJpbnQoIiBtTWV0YUtleXNTdGF0ZT0iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB3LnByaW50bG4oZGV2Lm1NZXRhS2V5c1N0YXRlKTsKLSAgICAgICAgICAgICAgICBpZiAoZGV2LmFic1ggIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICBwdy5wcmludChwcmVmaXgpOyBwdy5wcmludCgiICBhYnNYOiAiKTsgZGV2LmFic1guZHVtcChwdyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHcucHJpbnRsbigiIik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChkZXYuYWJzWSAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIHB3LnByaW50KHByZWZpeCk7IHB3LnByaW50KCIgIGFic1k6ICIpOyBkZXYuYWJzWS5kdW1wKHB3KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdy5wcmludGxuKCIiKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGRldi5hYnNQcmVzc3VyZSAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIHB3LnByaW50KHByZWZpeCk7IHB3LnByaW50KCIgIGFic1ByZXNzdXJlOiAiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXYuYWJzUHJlc3N1cmUuZHVtcChwdyk7IHB3LnByaW50bG4oIiIpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoZGV2LmFic1NpemUgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICBwdy5wcmludChwcmVmaXgpOyBwdy5wcmludCgiICBhYnNTaXplOiAiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXYuYWJzU2l6ZS5kdW1wKHB3KTsgcHcucHJpbnRsbigiIik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChkZXYubUFicy5ldmVyQ2hhbmdlZCkgewotICAgICAgICAgICAgICAgICAgICBwdy5wcmludChwcmVmaXgpOyBwdy5wcmludGxuKCIgIG1BYnM6Iik7Ci0gICAgICAgICAgICAgICAgICAgIGRldi5tQWJzLmR1bXAocHcsIHByZWZpeCArICIgICAgIik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChkZXYubVJlbC5ldmVyQ2hhbmdlZCkgewotICAgICAgICAgICAgICAgICAgICBwdy5wcmludChwcmVmaXgpOyBwdy5wcmludGxuKCIgIG1SZWw6Iik7Ci0gICAgICAgICAgICAgICAgICAgIGRldi5tUmVsLmR1bXAocHcsIHByZWZpeCArICIgICAgIik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgcHcucHJpbnRsbigiICIpOwotICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPG1JZ25vcmVkRGV2aWNlcy5zaXplKCk7IGkrKykgewotICAgICAgICAgICAgICAgIElucHV0RGV2aWNlIGRldiA9IG1JZ25vcmVkRGV2aWNlcy52YWx1ZUF0KGkpOwotICAgICAgICAgICAgICAgIHB3LnByaW50KHByZWZpeCk7IHB3LnByaW50KCJJZ25vcmVkIERldmljZSAjIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdy5wcmludChtSWdub3JlZERldmljZXMua2V5QXQoaSkpOyBwdy5wcmludCgiICIpOwotICAgICAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoZGV2Lm5hbWUpOyBwdy5wcmludCgiIChjbGFzc2VzPTB4Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdy5wcmludChJbnRlZ2VyLnRvSGV4U3RyaW5nKGRldi5jbGFzc2VzKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdy5wcmludGxuKCIpIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwdy5wcmludGxuKCIgIik7Ci0gICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8bVZpcnR1YWxLZXlzLnNpemUoKTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgVmlydHVhbEtleSB2ayA9IG1WaXJ0dWFsS2V5cy5nZXQoaSk7Ci0gICAgICAgICAgICAgICAgcHcucHJpbnQocHJlZml4KTsgcHcucHJpbnQoIlZpcnR1YWwgS2V5ICMiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB3LnByaW50KGkpOyBwdy5wcmludGxuKCI6Iik7Ci0gICAgICAgICAgICAgICAgcHcucHJpbnQocHJlZml4KTsgcHcucHJpbnQoIiAgc2NhbmNvZGU9Iik7IHB3LnByaW50bG4odmsuc2NhbmNvZGUpOwotICAgICAgICAgICAgICAgIHB3LnByaW50KHByZWZpeCk7IHB3LnByaW50KCIgIGNlbnRlcng9Iik7IHB3LnByaW50KHZrLmNlbnRlcngpOwotICAgICAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoIiBjZW50ZXJ5PSIpOyBwdy5wcmludCh2ay5jZW50ZXJ5KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB3LnByaW50KCIgd2lkdGg9Iik7IHB3LnByaW50KHZrLndpZHRoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB3LnByaW50KCIgaGVpZ2h0PSIpOyBwdy5wcmludGxuKHZrLmhlaWdodCk7Ci0gICAgICAgICAgICAgICAgcHcucHJpbnQocHJlZml4KTsgcHcucHJpbnQoIiAgaGl0TGVmdD0iKTsgcHcucHJpbnQodmsuaGl0TGVmdCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdy5wcmludCgiIGhpdFRvcD0iKTsgcHcucHJpbnQodmsuaGl0VG9wKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB3LnByaW50KCIgaGl0UmlnaHQ9Iik7IHB3LnByaW50KHZrLmhpdFJpZ2h0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB3LnByaW50KCIgaGl0Qm90dG9tPSIpOyBwdy5wcmludGxuKHZrLmhpdEJvdHRvbSk7Ci0gICAgICAgICAgICAgICAgaWYgKHZrLmxhc3REZXZpY2UgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICBwdy5wcmludChwcmVmaXgpOyBwdy5wcmludCgiICBsYXN0RGV2aWNlPSMiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdy5wcmludGxuKHZrLmxhc3REZXZpY2UuaWQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAodmsubGFzdEtleWNvZGUgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICBwdy5wcmludChwcmVmaXgpOyBwdy5wcmludCgiICBsYXN0S2V5Y29kZT0iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdy5wcmludGxuKHZrLmxhc3RLZXljb2RlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBwdy5wcmludGxuKCIgIik7Ci0gICAgICAgICAgICBwdy5wcmludChwcmVmaXgpOyBwdy5wcmludCgiICBEZWZhdWx0IGtleWJvYXJkOiAiKTsKLSAgICAgICAgICAgICAgICAgICAgcHcucHJpbnRsbihTeXN0ZW1Qcm9wZXJ0aWVzLmdldCgiaHcua2V5Ym9hcmRzLjAuZGV2bmFtZSIpKTsKLSAgICAgICAgICAgIHB3LnByaW50KHByZWZpeCk7IHB3LnByaW50KCIgIG1HbG9iYWxNZXRhU3RhdGU9Iik7Ci0gICAgICAgICAgICAgICAgICAgIHB3LnByaW50KG1HbG9iYWxNZXRhU3RhdGUpOyBwdy5wcmludCgiIG1IYXZlR2xvYmFsTWV0YVN0YXRlPSIpOwotICAgICAgICAgICAgICAgICAgICBwdy5wcmludGxuKG1IYXZlR2xvYmFsTWV0YVN0YXRlKTsKLSAgICAgICAgICAgIHB3LnByaW50KHByZWZpeCk7IHB3LnByaW50KCIgIG1EaXNwbGF5V2lkdGg9Iik7Ci0gICAgICAgICAgICAgICAgICAgIHB3LnByaW50KG1EaXNwbGF5V2lkdGgpOyBwdy5wcmludCgiIG1EaXNwbGF5SGVpZ2h0PSIpOwotICAgICAgICAgICAgICAgICAgICBwdy5wcmludGxuKG1EaXNwbGF5SGVpZ2h0KTsKLSAgICAgICAgICAgIHB3LnByaW50KHByZWZpeCk7IHB3LnByaW50KCIgIG1PcmllbnRhdGlvbj0iKTsKLSAgICAgICAgICAgICAgICAgICAgcHcucHJpbnRsbihtT3JpZW50YXRpb24pOwotICAgICAgICAgICAgaWYgKG1QcmVzc2VkVmlydHVhbEtleSAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgcHcucHJpbnQocHJlZml4KTsgcHcucHJpbnQoIiAgbVByZXNzZWRWaXJ0dWFsS2V5LnNjYW5jb2RlPSIpOwotICAgICAgICAgICAgICAgICAgICAgICAgcHcucHJpbnRsbihtUHJlc3NlZFZpcnR1YWxLZXkuc2NhbmNvZGUpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvTG9jYXRpb25NYW5hZ2VyU2VydmljZS5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvTG9jYXRpb25NYW5hZ2VyU2VydmljZS5qYXZhCmluZGV4IDY1ZjQxOTQuLjg1MTllMmMgMTAwNjQ0Ci0tLSBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL0xvY2F0aW9uTWFuYWdlclNlcnZpY2UuamF2YQorKysgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9Mb2NhdGlvbk1hbmFnZXJTZXJ2aWNlLmphdmEKQEAgLTE2LDE3ICsxNiw2IEBACiAKIHBhY2thZ2UgY29tLmFuZHJvaWQuc2VydmVyOwogCi1pbXBvcnQgamF2YS5pby5GaWxlRGVzY3JpcHRvcjsKLWltcG9ydCBqYXZhLmlvLlByaW50V3JpdGVyOwotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7Ci1pbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7Ci1pbXBvcnQgamF2YS51dGlsLkxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLk1hcDsKLWltcG9ydCBqYXZhLnV0aWwuT2JzZXJ2YWJsZTsKLWltcG9ydCBqYXZhLnV0aWwuT2JzZXJ2ZXI7Ci1pbXBvcnQgamF2YS51dGlsLlNldDsKLQogaW1wb3J0IGFuZHJvaWQuYXBwLkFjdGl2aXR5OwogaW1wb3J0IGFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQ7CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkJyb2FkY2FzdFJlY2VpdmVyOwpAQCAtNDEsNiArMzAsNyBAQAogaW1wb3J0IGFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzOwogaW1wb3J0IGFuZHJvaWQuZGF0YWJhc2UuQ3Vyc29yOwogaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uQWRkcmVzczsKK2ltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLkNyaXRlcmlhOwogaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uR2VvY29kZXJQYXJhbXM7CiBpbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5JR3BzU3RhdHVzTGlzdGVuZXI7CiBpbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5JR3BzU3RhdHVzUHJvdmlkZXI7CkBAIC01MCw3ICs0MCw2IEBACiBpbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5Mb2NhdGlvbjsKIGltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uTWFuYWdlcjsKIGltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uUHJvdmlkZXI7Ci1pbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5Mb2NhdGlvblByb3ZpZGVySW50ZXJmYWNlOwogaW1wb3J0IGFuZHJvaWQubmV0LkNvbm5lY3Rpdml0eU1hbmFnZXI7CiBpbXBvcnQgYW5kcm9pZC5uZXQuTmV0d29ya0luZm87CiBpbXBvcnQgYW5kcm9pZC5uZXQuVXJpOwpAQCAtNjgsMTIgKzU3LDI3IEBACiBpbXBvcnQgYW5kcm9pZC51dGlsLlNsb2c7CiBpbXBvcnQgYW5kcm9pZC51dGlsLlByaW50V3JpdGVyUHJpbnRlcjsKIAotaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLmxvY2F0aW9uLkdlb2NvZGVyUHJveHk7Ci1pbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwubG9jYXRpb24uR3BzTG9jYXRpb25Qcm92aWRlcjsKIGltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5sb2NhdGlvbi5HcHNOZXRJbml0aWF0ZWRIYW5kbGVyOwotaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLmxvY2F0aW9uLkxvY2F0aW9uUHJvdmlkZXJQcm94eTsKLWltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5sb2NhdGlvbi5Nb2NrUHJvdmlkZXI7Ci1pbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwubG9jYXRpb24uUGFzc2l2ZVByb3ZpZGVyOworCitpbXBvcnQgY29tLmFuZHJvaWQuc2VydmVyLmxvY2F0aW9uLkdlb2NvZGVyUHJveHk7CitpbXBvcnQgY29tLmFuZHJvaWQuc2VydmVyLmxvY2F0aW9uLkdwc0xvY2F0aW9uUHJvdmlkZXI7CitpbXBvcnQgY29tLmFuZHJvaWQuc2VydmVyLmxvY2F0aW9uLkxvY2F0aW9uUHJvdmlkZXJJbnRlcmZhY2U7CitpbXBvcnQgY29tLmFuZHJvaWQuc2VydmVyLmxvY2F0aW9uLkxvY2F0aW9uUHJvdmlkZXJQcm94eTsKK2ltcG9ydCBjb20uYW5kcm9pZC5zZXJ2ZXIubG9jYXRpb24uTW9ja1Byb3ZpZGVyOworaW1wb3J0IGNvbS5hbmRyb2lkLnNlcnZlci5sb2NhdGlvbi5QYXNzaXZlUHJvdmlkZXI7CisKK2ltcG9ydCBqYXZhLmlvLkZpbGVEZXNjcmlwdG9yOworaW1wb3J0IGphdmEuaW8uUHJpbnRXcml0ZXI7CitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7CitpbXBvcnQgamF2YS51dGlsLkNvbXBhcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CitpbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgamF2YS51dGlsLk1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuT2JzZXJ2YWJsZTsKK2ltcG9ydCBqYXZhLnV0aWwuT2JzZXJ2ZXI7CitpbXBvcnQgamF2YS51dGlsLlNldDsKIAogLyoqCiAgKiBUaGUgc2VydmljZSBjbGFzcyB0aGF0IG1hbmFnZXMgTG9jYXRpb25Qcm92aWRlcnMgYW5kIGlzc3VlcyBsb2NhdGlvbgpAQCAtNjA5LDEwICs2MTMsMTAgQEAKICAgICAgICAgcmV0dXJuIG91dDsKICAgICB9CiAKLSAgICBwdWJsaWMgTGlzdDxTdHJpbmc+IGdldFByb3ZpZGVycyhib29sZWFuIGVuYWJsZWRPbmx5KSB7CisgICAgcHVibGljIExpc3Q8U3RyaW5nPiBnZXRQcm92aWRlcnMoQ3JpdGVyaWEgY3JpdGVyaWEsIGJvb2xlYW4gZW5hYmxlZE9ubHkpIHsKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIHN5bmNocm9uaXplZCAobUxvY2spIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gX2dldFByb3ZpZGVyc0xvY2tlZChlbmFibGVkT25seSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIF9nZXRQcm92aWRlcnNMb2NrZWQoY3JpdGVyaWEsIGVuYWJsZWRPbmx5KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBjYXRjaCAoU2VjdXJpdHlFeGNlcHRpb24gc2UpIHsKICAgICAgICAgICAgIHRocm93IHNlOwpAQCAtNjIyLDcgKzYyNiw3IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwcml2YXRlIExpc3Q8U3RyaW5nPiBfZ2V0UHJvdmlkZXJzTG9ja2VkKGJvb2xlYW4gZW5hYmxlZE9ubHkpIHsKKyAgICBwcml2YXRlIExpc3Q8U3RyaW5nPiBfZ2V0UHJvdmlkZXJzTG9ja2VkKENyaXRlcmlhIGNyaXRlcmlhLCBib29sZWFuIGVuYWJsZWRPbmx5KSB7CiAgICAgICAgIGlmIChMT0NBTF9MT0dWKSB7CiAgICAgICAgICAgICBTbG9nLnYoVEFHLCAiZ2V0UHJvdmlkZXJzIik7CiAgICAgICAgIH0KQEAgLTYzNCwxMiArNjM4LDIyNSBAQAogICAgICAgICAgICAgICAgIGlmIChlbmFibGVkT25seSAmJiAhaXNBbGxvd2VkQnlTZXR0aW5nc0xvY2tlZChuYW1lKSkgewogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGNyaXRlcmlhICE9IG51bGwgJiYgIXAubWVldHNDcml0ZXJpYShjcml0ZXJpYSkpIHsKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG91dC5hZGQobmFtZSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIG91dDsKICAgICB9CiAKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBuZXh0IGxvb3NlciBwb3dlciByZXF1aXJlbWVudCwgaW4gdGhlIHNlcXVlbmNlOgorICAgICAqCisgICAgICogUE9XRVJfTE9XIC0+IFBPV0VSX01FRElVTSAtPiBQT1dFUl9ISUdIIC0+IE5PX1JFUVVJUkVNRU5UCisgICAgICovCisgICAgcHJpdmF0ZSBpbnQgbmV4dFBvd2VyKGludCBwb3dlcikgeworICAgICAgICBzd2l0Y2ggKHBvd2VyKSB7CisgICAgICAgIGNhc2UgQ3JpdGVyaWEuUE9XRVJfTE9XOgorICAgICAgICAgICAgcmV0dXJuIENyaXRlcmlhLlBPV0VSX01FRElVTTsKKyAgICAgICAgY2FzZSBDcml0ZXJpYS5QT1dFUl9NRURJVU06CisgICAgICAgICAgICByZXR1cm4gQ3JpdGVyaWEuUE9XRVJfSElHSDsKKyAgICAgICAgY2FzZSBDcml0ZXJpYS5QT1dFUl9ISUdIOgorICAgICAgICAgICAgcmV0dXJuIENyaXRlcmlhLk5PX1JFUVVJUkVNRU5UOworICAgICAgICBjYXNlIENyaXRlcmlhLk5PX1JFUVVJUkVNRU5UOgorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIENyaXRlcmlhLk5PX1JFUVVJUkVNRU5UOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0aGUgbmV4dCBsb29zZXIgYWNjdXJhY3kgcmVxdWlyZW1lbnQsIGluIHRoZSBzZXF1ZW5jZToKKyAgICAgKgorICAgICAqIEFDQ1VSQUNZX0ZJTkUgLT4gQUNDVVJBQ1lfQVBQUk9YSU1BVEUtPiBOT19SRVFVSVJFTUVOVAorICAgICAqLworICAgIHByaXZhdGUgaW50IG5leHRBY2N1cmFjeShpbnQgYWNjdXJhY3kpIHsKKyAgICAgICAgaWYgKGFjY3VyYWN5ID09IENyaXRlcmlhLkFDQ1VSQUNZX0ZJTkUpIHsKKyAgICAgICAgICAgIHJldHVybiBDcml0ZXJpYS5BQ0NVUkFDWV9DT0FSU0U7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gQ3JpdGVyaWEuTk9fUkVRVUlSRU1FTlQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIGNsYXNzIExwUG93ZXJDb21wYXJhdG9yIGltcGxlbWVudHMgQ29tcGFyYXRvcjxMb2NhdGlvblByb3ZpZGVySW50ZXJmYWNlPiB7CisgICAgICAgIHB1YmxpYyBpbnQgY29tcGFyZShMb2NhdGlvblByb3ZpZGVySW50ZXJmYWNlIGwxLCBMb2NhdGlvblByb3ZpZGVySW50ZXJmYWNlIGwyKSB7CisgICAgICAgICAgICAvLyBTbWFsbGVyIGlzIGJldHRlcgorICAgICAgICAgICAgcmV0dXJuIChsMS5nZXRQb3dlclJlcXVpcmVtZW50KCkgLSBsMi5nZXRQb3dlclJlcXVpcmVtZW50KCkpOworICAgICAgICAgfQorCisgICAgICAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoTG9jYXRpb25Qcm92aWRlckludGVyZmFjZSBsMSwgTG9jYXRpb25Qcm92aWRlckludGVyZmFjZSBsMikgeworICAgICAgICAgICAgIHJldHVybiAobDEuZ2V0UG93ZXJSZXF1aXJlbWVudCgpID09IGwyLmdldFBvd2VyUmVxdWlyZW1lbnQoKSk7CisgICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBjbGFzcyBMcEFjY3VyYWN5Q29tcGFyYXRvciBpbXBsZW1lbnRzIENvbXBhcmF0b3I8TG9jYXRpb25Qcm92aWRlckludGVyZmFjZT4geworICAgICAgICBwdWJsaWMgaW50IGNvbXBhcmUoTG9jYXRpb25Qcm92aWRlckludGVyZmFjZSBsMSwgTG9jYXRpb25Qcm92aWRlckludGVyZmFjZSBsMikgeworICAgICAgICAgICAgLy8gU21hbGxlciBpcyBiZXR0ZXIKKyAgICAgICAgICAgIHJldHVybiAobDEuZ2V0QWNjdXJhY3koKSAtIGwyLmdldEFjY3VyYWN5KCkpOworICAgICAgICAgfQorCisgICAgICAgICBwdWJsaWMgYm9vbGVhbiBlcXVhbHMoTG9jYXRpb25Qcm92aWRlckludGVyZmFjZSBsMSwgTG9jYXRpb25Qcm92aWRlckludGVyZmFjZSBsMikgeworICAgICAgICAgICAgIHJldHVybiAobDEuZ2V0QWNjdXJhY3koKSA9PSBsMi5nZXRBY2N1cmFjeSgpKTsKKyAgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIGNsYXNzIExwQ2FwYWJpbGl0eUNvbXBhcmF0b3IgaW1wbGVtZW50cyBDb21wYXJhdG9yPExvY2F0aW9uUHJvdmlkZXJJbnRlcmZhY2U+IHsKKworICAgICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQUxUSVRVREVfU0NPUkUgPSA0OworICAgICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQkVBUklOR19TQ09SRSA9IDQ7CisgICAgICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBTUEVFRF9TQ09SRSA9IDQ7CisKKyAgICAgICAgcHJpdmF0ZSBpbnQgc2NvcmUoTG9jYXRpb25Qcm92aWRlckludGVyZmFjZSBwKSB7CisgICAgICAgICAgICByZXR1cm4gKHAuc3VwcG9ydHNBbHRpdHVkZSgpID8gQUxUSVRVREVfU0NPUkUgOiAwKSArCisgICAgICAgICAgICAgICAgKHAuc3VwcG9ydHNCZWFyaW5nKCkgPyBCRUFSSU5HX1NDT1JFIDogMCkgKworICAgICAgICAgICAgICAgIChwLnN1cHBvcnRzU3BlZWQoKSA/IFNQRUVEX1NDT1JFIDogMCk7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgaW50IGNvbXBhcmUoTG9jYXRpb25Qcm92aWRlckludGVyZmFjZSBsMSwgTG9jYXRpb25Qcm92aWRlckludGVyZmFjZSBsMikgeworICAgICAgICAgICAgcmV0dXJuIChzY29yZShsMikgLSBzY29yZShsMSkpOyAvLyBCaWdnZXIgaXMgYmV0dGVyCisgICAgICAgICB9CisKKyAgICAgICAgIHB1YmxpYyBib29sZWFuIGVxdWFscyhMb2NhdGlvblByb3ZpZGVySW50ZXJmYWNlIGwxLCBMb2NhdGlvblByb3ZpZGVySW50ZXJmYWNlIGwyKSB7CisgICAgICAgICAgICAgcmV0dXJuIChzY29yZShsMSkgPT0gc2NvcmUobDIpKTsKKyAgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIExvY2F0aW9uUHJvdmlkZXJJbnRlcmZhY2UgYmVzdChMaXN0PFN0cmluZz4gcHJvdmlkZXJOYW1lcykgeworICAgICAgICBBcnJheUxpc3Q8TG9jYXRpb25Qcm92aWRlckludGVyZmFjZT4gcHJvdmlkZXJzOworICAgICAgICBzeW5jaHJvbml6ZWQgKG1Mb2NrKSB7CisgICAgICAgICAgICBwcm92aWRlcnMgPSBuZXcgQXJyYXlMaXN0PExvY2F0aW9uUHJvdmlkZXJJbnRlcmZhY2U+KG1Qcm92aWRlcnMuc2l6ZSgpKTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSBtUHJvdmlkZXJzLnNpemUoKSAtIDE7IGkgPj0gMDsgaS0tKSB7CisgICAgICAgICAgICAgICAgcHJvdmlkZXJzLmFkZChtUHJvdmlkZXJzLmdldChpKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAocHJvdmlkZXJzLnNpemUoKSA8IDIpIHsKKyAgICAgICAgICAgIHJldHVybiBwcm92aWRlcnMuZ2V0KDApOworICAgICAgICB9CisKKyAgICAgICAgLy8gRmlyc3QsIHNvcnQgYnkgcG93ZXIgcmVxdWlyZW1lbnQKKyAgICAgICAgQ29sbGVjdGlvbnMuc29ydChwcm92aWRlcnMsIG5ldyBMcFBvd2VyQ29tcGFyYXRvcigpKTsKKyAgICAgICAgaW50IHBvd2VyID0gcHJvdmlkZXJzLmdldCgwKS5nZXRQb3dlclJlcXVpcmVtZW50KCk7CisgICAgICAgIGlmIChwb3dlciA8IHByb3ZpZGVycy5nZXQoMSkuZ2V0UG93ZXJSZXF1aXJlbWVudCgpKSB7CisgICAgICAgICAgICByZXR1cm4gcHJvdmlkZXJzLmdldCgwKTsKKyAgICAgICAgfQorCisgICAgICAgIGludCBpZHgsIHNpemU7CisKKyAgICAgICAgQXJyYXlMaXN0PExvY2F0aW9uUHJvdmlkZXJJbnRlcmZhY2U+IHRtcCA9IG5ldyBBcnJheUxpc3Q8TG9jYXRpb25Qcm92aWRlckludGVyZmFjZT4oKTsKKyAgICAgICAgaWR4ID0gMDsKKyAgICAgICAgc2l6ZSA9IHByb3ZpZGVycy5zaXplKCk7CisgICAgICAgIHdoaWxlICgoaWR4IDwgc2l6ZSkgJiYgKHByb3ZpZGVycy5nZXQoaWR4KS5nZXRQb3dlclJlcXVpcmVtZW50KCkgPT0gcG93ZXIpKSB7CisgICAgICAgICAgICB0bXAuYWRkKHByb3ZpZGVycy5nZXQoaWR4KSk7CisgICAgICAgICAgICBpZHgrKzsKKyAgICAgICAgfQorCisgICAgICAgIC8vIE5leHQsIHNvcnQgYnkgYWNjdXJhY3kKKyAgICAgICAgQ29sbGVjdGlvbnMuc29ydCh0bXAsIG5ldyBMcEFjY3VyYWN5Q29tcGFyYXRvcigpKTsKKyAgICAgICAgaW50IGFjYyA9IHRtcC5nZXQoMCkuZ2V0QWNjdXJhY3koKTsKKyAgICAgICAgaWYgKGFjYyA8IHRtcC5nZXQoMSkuZ2V0QWNjdXJhY3koKSkgeworICAgICAgICAgICAgcmV0dXJuIHRtcC5nZXQoMCk7CisgICAgICAgIH0KKworICAgICAgICBBcnJheUxpc3Q8TG9jYXRpb25Qcm92aWRlckludGVyZmFjZT4gdG1wMiA9IG5ldyBBcnJheUxpc3Q8TG9jYXRpb25Qcm92aWRlckludGVyZmFjZT4oKTsKKyAgICAgICAgaWR4ID0gMDsKKyAgICAgICAgc2l6ZSA9IHRtcC5zaXplKCk7CisgICAgICAgIHdoaWxlICgoaWR4IDwgc2l6ZSkgJiYgKHRtcC5nZXQoaWR4KS5nZXRBY2N1cmFjeSgpID09IGFjYykpIHsKKyAgICAgICAgICAgIHRtcDIuYWRkKHRtcC5nZXQoaWR4KSk7CisgICAgICAgICAgICBpZHgrKzsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEZpbmFsbHksIHNvcnQgYnkgY2FwYWJpbGl0eSAic2NvcmUiCisgICAgICAgIENvbGxlY3Rpb25zLnNvcnQodG1wMiwgbmV3IExwQ2FwYWJpbGl0eUNvbXBhcmF0b3IoKSk7CisgICAgICAgIHJldHVybiB0bXAyLmdldCgwKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBwcm92aWRlciB0aGF0IGJlc3QgbWVldHMgdGhlIGdpdmVuIGNyaXRlcmlhLiBPbmx5IHByb3ZpZGVycworICAgICAqIHRoYXQgYXJlIHBlcm1pdHRlZCB0byBiZSBhY2Nlc3NlZCBieSB0aGUgY2FsbGluZyBhY3Rpdml0eSB3aWxsIGJlCisgICAgICogcmV0dXJuZWQuICBJZiBzZXZlcmFsIHByb3ZpZGVycyBtZWV0IHRoZSBjcml0ZXJpYSwgdGhlIG9uZSB3aXRoIHRoZSBiZXN0CisgICAgICogYWNjdXJhY3kgaXMgcmV0dXJuZWQuICBJZiBubyBwcm92aWRlciBtZWV0cyB0aGUgY3JpdGVyaWEsCisgICAgICogdGhlIGNyaXRlcmlhIGFyZSBsb29zZW5lZCBpbiB0aGUgZm9sbG93aW5nIHNlcXVlbmNlOgorICAgICAqCisgICAgICogPHVsPgorICAgICAqIDxsaT4gcG93ZXIgcmVxdWlyZW1lbnQKKyAgICAgKiA8bGk+IGFjY3VyYWN5CisgICAgICogPGxpPiBiZWFyaW5nCisgICAgICogPGxpPiBzcGVlZAorICAgICAqIDxsaT4gYWx0aXR1ZGUKKyAgICAgKiA8L3VsPgorICAgICAqCisgICAgICogPHA+IE5vdGUgdGhhdCB0aGUgcmVxdWlyZW1lbnQgb24gbW9uZXRhcnkgY29zdCBpcyBub3QgcmVtb3ZlZAorICAgICAqIGluIHRoaXMgcHJvY2Vzcy4KKyAgICAgKgorICAgICAqIEBwYXJhbSBjcml0ZXJpYSB0aGUgY3JpdGVyaWEgdGhhdCBuZWVkIHRvIGJlIG1hdGNoZWQKKyAgICAgKiBAcGFyYW0gZW5hYmxlZE9ubHkgaWYgdHJ1ZSB0aGVuIG9ubHkgYSBwcm92aWRlciB0aGF0IGlzIGN1cnJlbnRseSBlbmFibGVkIGlzIHJldHVybmVkCisgICAgICogQHJldHVybiBuYW1lIG9mIHRoZSBwcm92aWRlciB0aGF0IGJlc3QgbWF0Y2hlcyB0aGUgcmVxdWlyZW1lbnRzCisgICAgICovCisgICAgcHVibGljIFN0cmluZyBnZXRCZXN0UHJvdmlkZXIoQ3JpdGVyaWEgY3JpdGVyaWEsIGJvb2xlYW4gZW5hYmxlZE9ubHkpIHsKKyAgICAgICAgTGlzdDxTdHJpbmc+IGdvb2RQcm92aWRlcnMgPSBnZXRQcm92aWRlcnMoY3JpdGVyaWEsIGVuYWJsZWRPbmx5KTsKKyAgICAgICAgaWYgKCFnb29kUHJvdmlkZXJzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgcmV0dXJuIGJlc3QoZ29vZFByb3ZpZGVycykuZ2V0TmFtZSgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gTWFrZSBhIGNvcHkgb2YgdGhlIGNyaXRlcmlhIHRoYXQgd2UgY2FuIG1vZGlmeQorICAgICAgICBjcml0ZXJpYSA9IG5ldyBDcml0ZXJpYShjcml0ZXJpYSk7CisKKyAgICAgICAgLy8gTG9vc2VuIHBvd2VyIHJlcXVpcmVtZW50CisgICAgICAgIGludCBwb3dlciA9IGNyaXRlcmlhLmdldFBvd2VyUmVxdWlyZW1lbnQoKTsKKyAgICAgICAgd2hpbGUgKGdvb2RQcm92aWRlcnMuaXNFbXB0eSgpICYmIChwb3dlciAhPSBDcml0ZXJpYS5OT19SRVFVSVJFTUVOVCkpIHsKKyAgICAgICAgICAgIHBvd2VyID0gbmV4dFBvd2VyKHBvd2VyKTsKKyAgICAgICAgICAgIGNyaXRlcmlhLnNldFBvd2VyUmVxdWlyZW1lbnQocG93ZXIpOworICAgICAgICAgICAgZ29vZFByb3ZpZGVycyA9IGdldFByb3ZpZGVycyhjcml0ZXJpYSwgZW5hYmxlZE9ubHkpOworICAgICAgICB9CisgICAgICAgIGlmICghZ29vZFByb3ZpZGVycy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIHJldHVybiBiZXN0KGdvb2RQcm92aWRlcnMpLmdldE5hbWUoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIExvb3NlbiBhY2N1cmFjeSByZXF1aXJlbWVudAorICAgICAgICBpbnQgYWNjdXJhY3kgPSBjcml0ZXJpYS5nZXRBY2N1cmFjeSgpOworICAgICAgICB3aGlsZSAoZ29vZFByb3ZpZGVycy5pc0VtcHR5KCkgJiYgKGFjY3VyYWN5ICE9IENyaXRlcmlhLk5PX1JFUVVJUkVNRU5UKSkgeworICAgICAgICAgICAgYWNjdXJhY3kgPSBuZXh0QWNjdXJhY3koYWNjdXJhY3kpOworICAgICAgICAgICAgY3JpdGVyaWEuc2V0QWNjdXJhY3koYWNjdXJhY3kpOworICAgICAgICAgICAgZ29vZFByb3ZpZGVycyA9IGdldFByb3ZpZGVycyhjcml0ZXJpYSwgZW5hYmxlZE9ubHkpOworICAgICAgICB9CisgICAgICAgIGlmICghZ29vZFByb3ZpZGVycy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIHJldHVybiBiZXN0KGdvb2RQcm92aWRlcnMpLmdldE5hbWUoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFJlbW92ZSBiZWFyaW5nIHJlcXVpcmVtZW50CisgICAgICAgIGNyaXRlcmlhLnNldEJlYXJpbmdSZXF1aXJlZChmYWxzZSk7CisgICAgICAgIGdvb2RQcm92aWRlcnMgPSBnZXRQcm92aWRlcnMoY3JpdGVyaWEsIGVuYWJsZWRPbmx5KTsKKyAgICAgICAgaWYgKCFnb29kUHJvdmlkZXJzLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgcmV0dXJuIGJlc3QoZ29vZFByb3ZpZGVycykuZ2V0TmFtZSgpOworICAgICAgICB9CisKKyAgICAgICAgLy8gUmVtb3ZlIHNwZWVkIHJlcXVpcmVtZW50CisgICAgICAgIGNyaXRlcmlhLnNldFNwZWVkUmVxdWlyZWQoZmFsc2UpOworICAgICAgICBnb29kUHJvdmlkZXJzID0gZ2V0UHJvdmlkZXJzKGNyaXRlcmlhLCBlbmFibGVkT25seSk7CisgICAgICAgIGlmICghZ29vZFByb3ZpZGVycy5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIHJldHVybiBiZXN0KGdvb2RQcm92aWRlcnMpLmdldE5hbWUoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFJlbW92ZSBhbHRpdHVkZSByZXF1aXJlbWVudAorICAgICAgICBjcml0ZXJpYS5zZXRBbHRpdHVkZVJlcXVpcmVkKGZhbHNlKTsKKyAgICAgICAgZ29vZFByb3ZpZGVycyA9IGdldFByb3ZpZGVycyhjcml0ZXJpYSwgZW5hYmxlZE9ubHkpOworICAgICAgICBpZiAoIWdvb2RQcm92aWRlcnMuaXNFbXB0eSgpKSB7CisgICAgICAgICAgICByZXR1cm4gYmVzdChnb29kUHJvdmlkZXJzKS5nZXROYW1lKCk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBwcm92aWRlck1lZXRzQ3JpdGVyaWEoU3RyaW5nIHByb3ZpZGVyLCBDcml0ZXJpYSBjcml0ZXJpYSkgeworICAgICAgICBMb2NhdGlvblByb3ZpZGVySW50ZXJmYWNlIHAgPSBtUHJvdmlkZXJzQnlOYW1lLmdldChwcm92aWRlcik7CisgICAgICAgIGlmIChwID09IG51bGwpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oInByb3ZpZGVyPSIgKyBwcm92aWRlcik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHAubWVldHNDcml0ZXJpYShjcml0ZXJpYSk7CisgICAgfQorCiAgICAgcHJpdmF0ZSB2b2lkIHVwZGF0ZVByb3ZpZGVyc0xvY2tlZCgpIHsKICAgICAgICAgZm9yIChpbnQgaSA9IG1Qcm92aWRlcnMuc2l6ZSgpIC0gMTsgaSA+PSAwOyBpLS0pIHsKICAgICAgICAgICAgIExvY2F0aW9uUHJvdmlkZXJJbnRlcmZhY2UgcCA9IG1Qcm92aWRlcnMuZ2V0KGkpOwpAQCAtNzE2LDYgKzkzMyw3IEBACiAgICAgICAgIGZpbmFsIFJlY2VpdmVyIG1SZWNlaXZlcjsKICAgICAgICAgZmluYWwgbG9uZyBtTWluVGltZTsKICAgICAgICAgZmluYWwgZmxvYXQgbU1pbkRpc3RhbmNlOworICAgICAgICBmaW5hbCBib29sZWFuIG1TaW5nbGVTaG90OwogICAgICAgICBmaW5hbCBpbnQgbVVpZDsKICAgICAgICAgTG9jYXRpb24gbUxhc3RGaXhCcm9hZGNhc3Q7CiAgICAgICAgIGxvbmcgbUxhc3RTdGF0dXNCcm9hZGNhc3Q7CkBAIC03MjMsMTIgKzk0MSwxMyBAQAogICAgICAgICAvKioKICAgICAgICAgICogTm90ZTogbXVzdCBiZSBjb25zdHJ1Y3RlZCB3aXRoIGxvY2sgaGVsZC4KICAgICAgICAgICovCi0gICAgICAgIFVwZGF0ZVJlY29yZChTdHJpbmcgcHJvdmlkZXIsIGxvbmcgbWluVGltZSwgZmxvYXQgbWluRGlzdGFuY2UsCisgICAgICAgIFVwZGF0ZVJlY29yZChTdHJpbmcgcHJvdmlkZXIsIGxvbmcgbWluVGltZSwgZmxvYXQgbWluRGlzdGFuY2UsIGJvb2xlYW4gc2luZ2xlU2hvdCwKICAgICAgICAgICAgIFJlY2VpdmVyIHJlY2VpdmVyLCBpbnQgdWlkKSB7CiAgICAgICAgICAgICBtUHJvdmlkZXIgPSBwcm92aWRlcjsKICAgICAgICAgICAgIG1SZWNlaXZlciA9IHJlY2VpdmVyOwogICAgICAgICAgICAgbU1pblRpbWUgPSBtaW5UaW1lOwogICAgICAgICAgICAgbU1pbkRpc3RhbmNlID0gbWluRGlzdGFuY2U7CisgICAgICAgICAgICBtU2luZ2xlU2hvdCA9IHNpbmdsZVNob3Q7CiAgICAgICAgICAgICBtVWlkID0gdWlkOwogCiAgICAgICAgICAgICBBcnJheUxpc3Q8VXBkYXRlUmVjb3JkPiByZWNvcmRzID0gbVJlY29yZHNCeVByb3ZpZGVyLmdldChwcm92aWRlcik7CkBAIC03NjMsNiArOTgyLDcgQEAKICAgICAgICAgICAgIHB3LnByaW50bG4ocHJlZml4ICsgdGhpcyk7CiAgICAgICAgICAgICBwdy5wcmludGxuKHByZWZpeCArICJtUHJvdmlkZXI9IiArIG1Qcm92aWRlciArICIgbVJlY2VpdmVyPSIgKyBtUmVjZWl2ZXIpOwogICAgICAgICAgICAgcHcucHJpbnRsbihwcmVmaXggKyAibU1pblRpbWU9IiArIG1NaW5UaW1lICsgIiBtTWluRGlzdGFuY2U9IiArIG1NaW5EaXN0YW5jZSk7CisgICAgICAgICAgICBwdy5wcmludGxuKHByZWZpeCArICJtU2luZ2xlU2hvdD0iICsgbVNpbmdsZVNob3QpOwogICAgICAgICAgICAgcHcucHJpbnRsbihwcmVmaXggKyAibVVpZD0iICsgbVVpZCk7CiAgICAgICAgICAgICBwdy5wcmludGxuKHByZWZpeCArICJtTGFzdEZpeEJyb2FkY2FzdDoiKTsKICAgICAgICAgICAgIGlmIChtTGFzdEZpeEJyb2FkY2FzdCAhPSBudWxsKSB7CkBAIC04MTgsMTIgKzEwMzgsMjEgQEAKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIHB1YmxpYyB2b2lkIHJlcXVlc3RMb2NhdGlvblVwZGF0ZXMoU3RyaW5nIHByb3ZpZGVyLAotICAgICAgICBsb25nIG1pblRpbWUsIGZsb2F0IG1pbkRpc3RhbmNlLCBJTG9jYXRpb25MaXN0ZW5lciBsaXN0ZW5lcikgewotCisgICAgcHVibGljIHZvaWQgcmVxdWVzdExvY2F0aW9uVXBkYXRlcyhTdHJpbmcgcHJvdmlkZXIsIENyaXRlcmlhIGNyaXRlcmlhLAorICAgICAgICBsb25nIG1pblRpbWUsIGZsb2F0IG1pbkRpc3RhbmNlLCBib29sZWFuIHNpbmdsZVNob3QsIElMb2NhdGlvbkxpc3RlbmVyIGxpc3RlbmVyKSB7CisgICAgICAgIGlmIChjcml0ZXJpYSAhPSBudWxsKSB7CisgICAgICAgICAgICAvLyBGSVhNRSAtIHNob3VsZCB3ZSBjb25zaWRlciB1c2luZyBtdWx0aXBsZSBwcm92aWRlcnMgc2ltdWx0YW5lb3VzbHkKKyAgICAgICAgICAgIC8vIHJhdGhlciB0aGFuIG9ubHkgdGhlIGJlc3Qgb25lPworICAgICAgICAgICAgLy8gU2hvdWxkIHdlIGRvIGFueXRoaW5nIGRpZmZlcmVudCBmb3Igc2luZ2xlIHNob3QgZml4ZXM/CisgICAgICAgICAgICBwcm92aWRlciA9IGdldEJlc3RQcm92aWRlcihjcml0ZXJpYSwgdHJ1ZSk7CisgICAgICAgICAgICBpZiAocHJvdmlkZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIm5vIHByb3ZpZGVycyBmb3VuZCBmb3IgY3JpdGVyaWEiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICB0cnkgewogICAgICAgICAgICAgc3luY2hyb25pemVkIChtTG9jaykgewotICAgICAgICAgICAgICAgIHJlcXVlc3RMb2NhdGlvblVwZGF0ZXNMb2NrZWQocHJvdmlkZXIsIG1pblRpbWUsIG1pbkRpc3RhbmNlLCBnZXRSZWNlaXZlcihsaXN0ZW5lcikpOworICAgICAgICAgICAgICAgIHJlcXVlc3RMb2NhdGlvblVwZGF0ZXNMb2NrZWQocHJvdmlkZXIsIG1pblRpbWUsIG1pbkRpc3RhbmNlLCBzaW5nbGVTaG90LAorICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UmVjZWl2ZXIobGlzdGVuZXIpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBjYXRjaCAoU2VjdXJpdHlFeGNlcHRpb24gc2UpIHsKICAgICAgICAgICAgIHRocm93IHNlOwpAQCAtODM0LDExICsxMDYzLDIxIEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwdWJsaWMgdm9pZCByZXF1ZXN0TG9jYXRpb25VcGRhdGVzUEkoU3RyaW5nIHByb3ZpZGVyLAotICAgICAgICAgICAgbG9uZyBtaW5UaW1lLCBmbG9hdCBtaW5EaXN0YW5jZSwgUGVuZGluZ0ludGVudCBpbnRlbnQpIHsKKyAgICBwdWJsaWMgdm9pZCByZXF1ZXN0TG9jYXRpb25VcGRhdGVzUEkoU3RyaW5nIHByb3ZpZGVyLCBDcml0ZXJpYSBjcml0ZXJpYSwKKyAgICAgICAgICAgIGxvbmcgbWluVGltZSwgZmxvYXQgbWluRGlzdGFuY2UsIGJvb2xlYW4gc2luZ2xlU2hvdCwgUGVuZGluZ0ludGVudCBpbnRlbnQpIHsKKyAgICAgICAgaWYgKGNyaXRlcmlhICE9IG51bGwpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FIC0gc2hvdWxkIHdlIGNvbnNpZGVyIHVzaW5nIG11bHRpcGxlIHByb3ZpZGVycyBzaW11bHRhbmVvdXNseQorICAgICAgICAgICAgLy8gcmF0aGVyIHRoYW4gb25seSB0aGUgYmVzdCBvbmU/CisgICAgICAgICAgICAvLyBTaG91bGQgd2UgZG8gYW55dGhpbmcgZGlmZmVyZW50IGZvciBzaW5nbGUgc2hvdCBmaXhlcz8KKyAgICAgICAgICAgIHByb3ZpZGVyID0gZ2V0QmVzdFByb3ZpZGVyKGNyaXRlcmlhLCB0cnVlKTsKKyAgICAgICAgICAgIGlmIChwcm92aWRlciA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigibm8gcHJvdmlkZXJzIGZvdW5kIGZvciBjcml0ZXJpYSIpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKG1Mb2NrKSB7Ci0gICAgICAgICAgICAgICAgcmVxdWVzdExvY2F0aW9uVXBkYXRlc0xvY2tlZChwcm92aWRlciwgbWluVGltZSwgbWluRGlzdGFuY2UsIGdldFJlY2VpdmVyKGludGVudCkpOworICAgICAgICAgICAgICAgIHJlcXVlc3RMb2NhdGlvblVwZGF0ZXNMb2NrZWQocHJvdmlkZXIsIG1pblRpbWUsIG1pbkRpc3RhbmNlLCBzaW5nbGVTaG90LAorICAgICAgICAgICAgICAgICAgICAgICAgZ2V0UmVjZWl2ZXIoaW50ZW50KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0gY2F0Y2ggKFNlY3VyaXR5RXhjZXB0aW9uIHNlKSB7CiAgICAgICAgICAgICB0aHJvdyBzZTsKQEAgLTg0OSw4ICsxMDg4LDggQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIHByaXZhdGUgdm9pZCByZXF1ZXN0TG9jYXRpb25VcGRhdGVzTG9ja2VkKFN0cmluZyBwcm92aWRlciwKLSAgICAgICAgICAgIGxvbmcgbWluVGltZSwgZmxvYXQgbWluRGlzdGFuY2UsIFJlY2VpdmVyIHJlY2VpdmVyKSB7CisgICAgcHJpdmF0ZSB2b2lkIHJlcXVlc3RMb2NhdGlvblVwZGF0ZXNMb2NrZWQoU3RyaW5nIHByb3ZpZGVyLCBsb25nIG1pblRpbWUsIGZsb2F0IG1pbkRpc3RhbmNlLAorICAgICAgICAgICAgYm9vbGVhbiBzaW5nbGVTaG90LCBSZWNlaXZlciByZWNlaXZlcikgewogICAgICAgICBpZiAoTE9DQUxfTE9HVikgewogICAgICAgICAgICAgU2xvZy52KFRBRywgIl9yZXF1ZXN0TG9jYXRpb25VcGRhdGVzOiBsaXN0ZW5lciA9ICIgKyByZWNlaXZlcik7CiAgICAgICAgIH0KQEAgLTg2Nyw3ICsxMTA2LDggQEAKICAgICAgICAgYm9vbGVhbiBuZXdVaWQgPSAhcHJvdmlkZXJIYXNMaXN0ZW5lcihwcm92aWRlciwgY2FsbGluZ1VpZCwgbnVsbCk7CiAgICAgICAgIGxvbmcgaWRlbnRpdHkgPSBCaW5kZXIuY2xlYXJDYWxsaW5nSWRlbnRpdHkoKTsKICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIFVwZGF0ZVJlY29yZCByID0gbmV3IFVwZGF0ZVJlY29yZChwcm92aWRlciwgbWluVGltZSwgbWluRGlzdGFuY2UsIHJlY2VpdmVyLCBjYWxsaW5nVWlkKTsKKyAgICAgICAgICAgIFVwZGF0ZVJlY29yZCByID0gbmV3IFVwZGF0ZVJlY29yZChwcm92aWRlciwgbWluVGltZSwgbWluRGlzdGFuY2UsIHNpbmdsZVNob3QsCisgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyLCBjYWxsaW5nVWlkKTsKICAgICAgICAgICAgIFVwZGF0ZVJlY29yZCBvbGRSZWNvcmQgPSByZWNlaXZlci5tVXBkYXRlUmVjb3Jkcy5wdXQocHJvdmlkZXIsIHIpOwogICAgICAgICAgICAgaWYgKG9sZFJlY29yZCAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgb2xkUmVjb3JkLmRpc3Bvc2VMb2NrZWQoKTsKQEAgLTg4MSw3ICsxMTIxLDExIEBACiAgICAgICAgICAgICBpZiAoaXNQcm92aWRlckVuYWJsZWQpIHsKICAgICAgICAgICAgICAgICBsb25nIG1pblRpbWVGb3JQcm92aWRlciA9IGdldE1pblRpbWVMb2NrZWQocHJvdmlkZXIpOwogICAgICAgICAgICAgICAgIHAuc2V0TWluVGltZShtaW5UaW1lRm9yUHJvdmlkZXIpOwotICAgICAgICAgICAgICAgIHAuZW5hYmxlTG9jYXRpb25UcmFja2luZyh0cnVlKTsKKyAgICAgICAgICAgICAgICAvLyB0cnkgcmVxdWVzdGluZyBzaW5nbGUgc2hvdCBpZiBzaW5nbGVTaG90IGlzIHRydWUsIGFuZCBmYWxsIGJhY2sgdG8KKyAgICAgICAgICAgICAgICAvLyByZWd1bGFyIGxvY2F0aW9uIHRyYWNraW5nIGlmIHJlcXVlc3RTaW5nbGVTaG90Rml4KCkgaXMgbm90IHN1cHBvcnRlZAorICAgICAgICAgICAgICAgIGlmICghc2luZ2xlU2hvdCB8fCAhcC5yZXF1ZXN0U2luZ2xlU2hvdEZpeCgpKSB7CisgICAgICAgICAgICAgICAgICAgIHAuZW5hYmxlTG9jYXRpb25UcmFja2luZyh0cnVlKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIC8vIE5vdGlmeSB0aGUgbGlzdGVuZXIgdGhhdCB1cGRhdGVzIGFyZSBjdXJyZW50bHkgZGlzYWJsZWQKICAgICAgICAgICAgICAgICByZWNlaXZlci5jYWxsUHJvdmlkZXJFbmFibGVkTG9ja2VkKHByb3ZpZGVyLCBmYWxzZSk7CkBAIC0xMjg3LDcgKzE1MzEsOCBAQAogCiAgICAgICAgICAgICBmb3IgKGludCBpID0gbVByb3ZpZGVycy5zaXplKCkgLSAxOyBpID49IDA7IGktLSkgewogICAgICAgICAgICAgICAgIExvY2F0aW9uUHJvdmlkZXJJbnRlcmZhY2UgcHJvdmlkZXIgPSBtUHJvdmlkZXJzLmdldChpKTsKLSAgICAgICAgICAgICAgICByZXF1ZXN0TG9jYXRpb25VcGRhdGVzTG9ja2VkKHByb3ZpZGVyLmdldE5hbWUoKSwgMTAwMEwsIDEuMGYsIG1Qcm94aW1pdHlSZWNlaXZlcik7CisgICAgICAgICAgICAgICAgcmVxdWVzdExvY2F0aW9uVXBkYXRlc0xvY2tlZChwcm92aWRlci5nZXROYW1lKCksIDEwMDBMLCAxLjBmLAorICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIG1Qcm94aW1pdHlSZWNlaXZlcik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC0xNDg1LDYgKzE3MzAsNyBAQAogICAgICAgICBmb3IgKGludCBpPTA7IGk8TjsgaSsrKSB7CiAgICAgICAgICAgICBVcGRhdGVSZWNvcmQgciA9IHJlY29yZHMuZ2V0KGkpOwogICAgICAgICAgICAgUmVjZWl2ZXIgcmVjZWl2ZXIgPSByLm1SZWNlaXZlcjsKKyAgICAgICAgICAgIGJvb2xlYW4gcmVjZWl2ZXJEZWFkID0gZmFsc2U7CiAKICAgICAgICAgICAgIExvY2F0aW9uIGxhc3RMb2MgPSByLm1MYXN0Rml4QnJvYWRjYXN0OwogICAgICAgICAgICAgaWYgKChsYXN0TG9jID09IG51bGwpIHx8IHNob3VsZEJyb2FkY2FzdFNhZmUobG9jYXRpb24sIGxhc3RMb2MsIHIpKSB7CkBAIC0xNDk2LDEwICsxNzQyLDcgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKCFyZWNlaXZlci5jYWxsTG9jYXRpb25DaGFuZ2VkTG9ja2VkKGxvY2F0aW9uKSkgewogICAgICAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiUmVtb3RlRXhjZXB0aW9uIGNhbGxpbmcgb25Mb2NhdGlvbkNoYW5nZWQgb24gIiArIHJlY2VpdmVyKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGRlYWRSZWNlaXZlcnMgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgZGVhZFJlY2VpdmVycyA9IG5ldyBBcnJheUxpc3Q8UmVjZWl2ZXI+KCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZGVhZFJlY2VpdmVycy5hZGQocmVjZWl2ZXIpOworICAgICAgICAgICAgICAgICAgICByZWNlaXZlckRlYWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIApAQCAtMTUwOSwxMyArMTc1MiwxOCBAQAogCiAgICAgICAgICAgICAgICAgci5tTGFzdFN0YXR1c0Jyb2FkY2FzdCA9IG5ld1N0YXR1c1VwZGF0ZVRpbWU7CiAgICAgICAgICAgICAgICAgaWYgKCFyZWNlaXZlci5jYWxsU3RhdHVzQ2hhbmdlZExvY2tlZChwcm92aWRlciwgc3RhdHVzLCBleHRyYXMpKSB7CisgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVyRGVhZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsICJSZW1vdGVFeGNlcHRpb24gY2FsbGluZyBvblN0YXR1c0NoYW5nZWQgb24gIiArIHJlY2VpdmVyKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGRlYWRSZWNlaXZlcnMgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgZGVhZFJlY2VpdmVycyA9IG5ldyBBcnJheUxpc3Q8UmVjZWl2ZXI+KCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKCFkZWFkUmVjZWl2ZXJzLmNvbnRhaW5zKHJlY2VpdmVyKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgZGVhZFJlY2VpdmVycy5hZGQocmVjZWl2ZXIpOwotICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyByZW1vdmUgcmVjZWl2ZXIgaWYgaXQgaXMgZGVhZCBvciB3ZSBqdXN0IHByb2Nlc3NlZCBhIHNpbmdsZSBzaG90IHJlcXVlc3QKKyAgICAgICAgICAgIGlmIChyZWNlaXZlckRlYWQgfHwgci5tU2luZ2xlU2hvdCkgeworICAgICAgICAgICAgICAgIGlmIChkZWFkUmVjZWl2ZXJzID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgZGVhZFJlY2VpdmVycyA9IG5ldyBBcnJheUxpc3Q8UmVjZWl2ZXI+KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICghZGVhZFJlY2VpdmVycy5jb250YWlucyhyZWNlaXZlcikpIHsKKyAgICAgICAgICAgICAgICAgICAgZGVhZFJlY2VpdmVycy5hZGQocmVjZWl2ZXIpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTY5Miw2ICsxOTQwLDEwIEBACiAKICAgICAvLyBHZW9jb2RlcgogCisgICAgcHVibGljIGJvb2xlYW4gZ2VvY29kZXJJc0ltcGxlbWVudGVkKCkgeworICAgICAgICByZXR1cm4gbUdlb2NvZGVQcm92aWRlciAhPSBudWxsOworICAgIH0KKwogICAgIHB1YmxpYyBTdHJpbmcgZ2V0RnJvbUxvY2F0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgaW50IG1heFJlc3VsdHMsCiAgICAgICAgICAgICBHZW9jb2RlclBhcmFtcyBwYXJhbXMsIExpc3Q8QWRkcmVzcz4gYWRkcnMpIHsKICAgICAgICAgaWYgKG1HZW9jb2RlUHJvdmlkZXIgIT0gbnVsbCkgewpkaWZmIC0tZ2l0IGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvTWFzdGVyQ2xlYXJSZWNlaXZlci5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvTWFzdGVyQ2xlYXJSZWNlaXZlci5qYXZhCmluZGV4IDI3YThhNzQuLjRkMDRjZWUgMTAwNjQ0Ci0tLSBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL01hc3RlckNsZWFyUmVjZWl2ZXIuamF2YQorKysgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9NYXN0ZXJDbGVhclJlY2VpdmVyLmphdmEKQEAgLTM5LDcgKzM5LDExIEBACiAKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIFNsb2cudyhUQUcsICIhISEgRkFDVE9SWSBSRVNFVCAhISEiKTsKLSAgICAgICAgICAgIFJlY292ZXJ5U3lzdGVtLnJlYm9vdFdpcGVVc2VyRGF0YShjb250ZXh0KTsKKyAgICAgICAgICAgIGlmIChpbnRlbnQuaGFzRXh0cmEoImVuYWJsZUVGUyIpKSB7CisgICAgICAgICAgICAgICAgUmVjb3ZlcnlTeXN0ZW0ucmVib290VG9nZ2xlRUZTKGNvbnRleHQsIGludGVudC5nZXRCb29sZWFuRXh0cmEoImVuYWJsZUVGUyIsIGZhbHNlKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIFJlY292ZXJ5U3lzdGVtLnJlYm9vdFdpcGVVc2VyRGF0YShjb250ZXh0KTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIExvZy53dGYoVEFHLCAiU3RpbGwgcnVubmluZyBhZnRlciBtYXN0ZXIgY2xlYXI/ISIpOwogICAgICAgICB9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7CiAgICAgICAgICAgICBTbG9nLmUoVEFHLCAiQ2FuJ3QgcGVyZm9ybSBtYXN0ZXIgY2xlYXIvZmFjdG9yeSByZXNldCIsIGUpOwpkaWZmIC0tZ2l0IGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvTW91bnRTZXJ2aWNlLmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9Nb3VudFNlcnZpY2UuamF2YQppbmRleCA2Y2VlYjk1Li42YzJmMWIyIDEwMDY0NAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9Nb3VudFNlcnZpY2UuamF2YQorKysgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9Nb3VudFNlcnZpY2UuamF2YQpAQCAtNjQyLDEwICs2NDIsMjEgQEAKICAgICB9CiAKICAgICBwcml2YXRlIGJvb2xlYW4gZG9HZXRTaGFyZU1ldGhvZEF2YWlsYWJsZShTdHJpbmcgbWV0aG9kKSB7Ci0gICAgICAgIEFycmF5TGlzdDxTdHJpbmc+IHJzcCA9IG1Db25uZWN0b3IuZG9Db21tYW5kKCJzaGFyZSBzdGF0dXMgIiArIG1ldGhvZCk7CisgICAgICAgIEFycmF5TGlzdDxTdHJpbmc+IHJzcDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJzcCA9IG1Db25uZWN0b3IuZG9Db21tYW5kKCJzaGFyZSBzdGF0dXMgIiArIG1ldGhvZCk7CisgICAgICAgIH0gY2F0Y2ggKE5hdGl2ZURhZW1vbkNvbm5lY3RvckV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgU2xvZy5lKFRBRywgIkZhaWxlZCB0byBkZXRlcm1pbmUgd2hldGhlciBzaGFyZSBtZXRob2QgIiArIG1ldGhvZCArICIgaXMgYXZhaWxhYmxlLiIpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CiAKICAgICAgICAgZm9yIChTdHJpbmcgbGluZSA6IHJzcCkgewotICAgICAgICAgICAgU3RyaW5nIFtddG9rID0gbGluZS5zcGxpdCgiICIpOworICAgICAgICAgICAgU3RyaW5nW10gdG9rID0gbGluZS5zcGxpdCgiICIpOworICAgICAgICAgICAgaWYgKHRvay5sZW5ndGggPCAzKSB7CisgICAgICAgICAgICAgICAgU2xvZy5lKFRBRywgIk1hbGZvcm1lZCByZXNwb25zZSB0byBzaGFyZSBzdGF0dXMgIiArIG1ldGhvZCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBpbnQgY29kZTsKICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgY29kZSA9IEludGVnZXIucGFyc2VJbnQodG9rWzBdKTsKQEAgLTc3MCwxMCArNzgxLDIyIEBACiAKICAgICBwcml2YXRlIGJvb2xlYW4gZG9HZXRWb2x1bWVTaGFyZWQoU3RyaW5nIHBhdGgsIFN0cmluZyBtZXRob2QpIHsKICAgICAgICAgU3RyaW5nIGNtZCA9IFN0cmluZy5mb3JtYXQoInZvbHVtZSBzaGFyZWQgJXMgJXMiLCBwYXRoLCBtZXRob2QpOwotICAgICAgICBBcnJheUxpc3Q8U3RyaW5nPiByc3AgPSBtQ29ubmVjdG9yLmRvQ29tbWFuZChjbWQpOworICAgICAgICBBcnJheUxpc3Q8U3RyaW5nPiByc3A7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJzcCA9IG1Db25uZWN0b3IuZG9Db21tYW5kKGNtZCk7CisgICAgICAgIH0gY2F0Y2ggKE5hdGl2ZURhZW1vbkNvbm5lY3RvckV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgU2xvZy5lKFRBRywgIkZhaWxlZCB0byByZWFkIHJlc3BvbnNlIHRvIHZvbHVtZSBzaGFyZWQgIiArIHBhdGggKyAiICIgKyBtZXRob2QpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CiAKICAgICAgICAgZm9yIChTdHJpbmcgbGluZSA6IHJzcCkgewotICAgICAgICAgICAgU3RyaW5nIFtddG9rID0gbGluZS5zcGxpdCgiICIpOworICAgICAgICAgICAgU3RyaW5nW10gdG9rID0gbGluZS5zcGxpdCgiICIpOworICAgICAgICAgICAgaWYgKHRvay5sZW5ndGggPCAzKSB7CisgICAgICAgICAgICAgICAgU2xvZy5lKFRBRywgIk1hbGZvcm1lZCByZXNwb25zZSB0byB2b2x1bWUgc2hhcmVkICIgKyBwYXRoICsgIiAiICsgbWV0aG9kICsgIiBjb21tYW5kIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBpbnQgY29kZTsKICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgY29kZSA9IEludGVnZXIucGFyc2VJbnQodG9rWzBdKTsKQEAgLTc4Miw5ICs4MDUsNyBAQAogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChjb2RlID09IFZvbGRSZXNwb25zZUNvZGUuU2hhcmVFbmFibGVkUmVzdWx0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKHRva1syXS5lcXVhbHMoImVuYWJsZWQiKSkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVybiAiZW5hYmxlZCIuZXF1YWxzKHRva1syXSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIFNsb2cuZShUQUcsIFN0cmluZy5mb3JtYXQoIlVuZXhwZWN0ZWQgcmVzcG9uc2UgY29kZSAlZCIsIGNvZGUpKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9OYXRpdmVEYWVtb25Db25uZWN0b3IuamF2YSBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL05hdGl2ZURhZW1vbkNvbm5lY3Rvci5qYXZhCmluZGV4IDA4ZDdjZTYuLmM0NTI1OTAgMTAwNjQ0Ci0tLSBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL05hdGl2ZURhZW1vbkNvbm5lY3Rvci5qYXZhCisrKyBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL05hdGl2ZURhZW1vbkNvbm5lY3Rvci5qYXZhCkBAIC0xMjgsMTIgKzEyOCwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xvZy5lKFRBRywgU3RyaW5nLmZvcm1hdCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVycm9yIGhhbmRsaW5nICclcyciLCBldmVudCksIGV4KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtUmVzcG9uc2VRdWV1ZS5wdXQoZXZlbnQpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChJbnRlcnJ1cHRlZEV4Y2VwdGlvbiBleCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xvZy5lKFRBRywgIkZhaWxlZCB0byBwdXQgcmVzcG9uc2Ugb250byBxdWV1ZSIsIGV4KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtUmVzcG9uc2VRdWV1ZS5wdXQoZXZlbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEludGVycnVwdGVkRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNsb2cuZShUQUcsICJGYWlsZWQgdG8gcHV0IHJlc3BvbnNlIG9udG8gcXVldWUiLCBleCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoTnVtYmVyRm9ybWF0RXhjZXB0aW9uIG5mZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsIFN0cmluZy5mb3JtYXQoIkJhZCBtc2cgKCVzKSIsIGV2ZW50KSk7CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9OZXR3b3JrTWFuYWdlbWVudFNlcnZpY2UuamF2YSBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL05ldHdvcmtNYW5hZ2VtZW50U2VydmljZS5qYXZhCmluZGV4IGNiYmM3YmUuLmMxNTYxNTAgMTAwNjQ0Ci0tLSBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL05ldHdvcmtNYW5hZ2VtZW50U2VydmljZS5qYXZhCisrKyBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL05ldHdvcmtNYW5hZ2VtZW50U2VydmljZS5qYXZhCkBAIC0zNSw2ICszNSw3IEBACiBpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKIGltcG9ydCBhbmRyb2lkLnV0aWwuU2xvZzsKIGltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5Ob1N1Y2hFbGVtZW50RXhjZXB0aW9uOwogaW1wb3J0IGphdmEudXRpbC5TdHJpbmdUb2tlbml6ZXI7CiBpbXBvcnQgYW5kcm9pZC5wcm92aWRlci5TZXR0aW5nczsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyOwpAQCAtMjI2LDQ0ICsyMjcsNjEgQEAKICAgICAgICAgbUNvbnRleHQuZW5mb3JjZUNhbGxpbmdPclNlbGZQZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgIGFuZHJvaWQuTWFuaWZlc3QucGVybWlzc2lvbi5BQ0NFU1NfTkVUV09SS19TVEFURSwgIk5ldHdvcmtNYW5hZ2VtZW50U2VydmljZSIpOwogCi0gICAgICAgIHJldHVybiBtQ29ubmVjdG9yLmRvTGlzdENvbW1hbmQoImludGVyZmFjZSBsaXN0IiwgTmV0ZFJlc3BvbnNlQ29kZS5JbnRlcmZhY2VMaXN0UmVzdWx0KTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJldHVybiBtQ29ubmVjdG9yLmRvTGlzdENvbW1hbmQoImludGVyZmFjZSBsaXN0IiwgTmV0ZFJlc3BvbnNlQ29kZS5JbnRlcmZhY2VMaXN0UmVzdWx0KTsKKyAgICAgICAgfSBjYXRjaCAoTmF0aXZlRGFlbW9uQ29ubmVjdG9yRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICJDYW5ub3QgY29tbXVuaWNhdGUgd2l0aCBuYXRpdmUgZGFlbW9uIHRvIGxpc3QgaW50ZXJmYWNlcyIpOworICAgICAgICB9CiAgICAgfQogCiAgICAgcHVibGljIEludGVyZmFjZUNvbmZpZ3VyYXRpb24gZ2V0SW50ZXJmYWNlQ29uZmlnKFN0cmluZyBpZmFjZSkgdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiB7Ci0gICAgICAgIFN0cmluZyByc3AgPSBtQ29ubmVjdG9yLmRvQ29tbWFuZCgiaW50ZXJmYWNlIGdldGNmZyAiICsgaWZhY2UpLmdldCgwKTsKKyAgICAgICAgU3RyaW5nIHJzcDsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJzcCA9IG1Db25uZWN0b3IuZG9Db21tYW5kKCJpbnRlcmZhY2UgZ2V0Y2ZnICIgKyBpZmFjZSkuZ2V0KDApOworICAgICAgICB9IGNhdGNoIChOYXRpdmVEYWVtb25Db25uZWN0b3JFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgIkNhbm5vdCBjb21tdW5pY2F0ZSB3aXRoIG5hdGl2ZSBkYWVtb24gdG8gZ2V0IGludGVyZmFjZSBjb25maWciKTsKKyAgICAgICAgfQogICAgICAgICBTbG9nLmQoVEFHLCBTdHJpbmcuZm9ybWF0KCJyc3AgPCVzPiIsIHJzcCkpOwogCiAgICAgICAgIC8vIFJzcDogMjEzIHh4Onh4Onh4Onh4Onh4Onh4IHl5eS55eXkueXl5Lnl5eSB6enouenp6Lnp6ei56enogW2ZsYWcxIGZsYWcyIGZsYWczXQogICAgICAgICBTdHJpbmdUb2tlbml6ZXIgc3QgPSBuZXcgU3RyaW5nVG9rZW5pemVyKHJzcCk7CiAKKyAgICAgICAgSW50ZXJmYWNlQ29uZmlndXJhdGlvbiBjZmc7CiAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBpbnQgY29kZSA9IEludGVnZXIucGFyc2VJbnQoc3QubmV4dFRva2VuKCIgIikpOwotICAgICAgICAgICAgaWYgKGNvZGUgIT0gTmV0ZFJlc3BvbnNlQ29kZS5JbnRlcmZhY2VHZXRDZmdSZXN1bHQpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgaW50IGNvZGUgPSBJbnRlZ2VyLnBhcnNlSW50KHN0Lm5leHRUb2tlbigiICIpKTsKKyAgICAgICAgICAgICAgICBpZiAoY29kZSAhPSBOZXRkUmVzcG9uc2VDb2RlLkludGVyZmFjZUdldENmZ1Jlc3VsdCkgeworICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nLmZvcm1hdCgiRXhwZWN0ZWQgY29kZSAlZCwgYnV0IGdvdCAlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldGRSZXNwb25zZUNvZGUuSW50ZXJmYWNlR2V0Q2ZnUmVzdWx0LCBjb2RlKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSBjYXRjaCAoTnVtYmVyRm9ybWF0RXhjZXB0aW9uIG5mZSkgewogICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgIFN0cmluZy5mb3JtYXQoIkV4cGVjdGVkIGNvZGUgJWQsIGJ1dCBnb3QgJWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5ldGRSZXNwb25zZUNvZGUuSW50ZXJmYWNlR2V0Q2ZnUmVzdWx0LCBjb2RlKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcuZm9ybWF0KCJJbnZhbGlkIHJlc3BvbnNlIGZyb20gZGFlbW9uICglcykiLCByc3ApKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgfSBjYXRjaCAoTnVtYmVyRm9ybWF0RXhjZXB0aW9uIG5mZSkgeworCisgICAgICAgICAgICBjZmcgPSBuZXcgSW50ZXJmYWNlQ29uZmlndXJhdGlvbigpOworICAgICAgICAgICAgY2ZnLmh3QWRkciA9IHN0Lm5leHRUb2tlbigiICIpOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBjZmcuaXBBZGRyID0gc3RyaW5nVG9JcEFkZHIoc3QubmV4dFRva2VuKCIgIikpOworICAgICAgICAgICAgfSBjYXRjaCAoVW5rbm93bkhvc3RFeGNlcHRpb24gdWhlKSB7CisgICAgICAgICAgICAgICAgU2xvZy5lKFRBRywgIkZhaWxlZCB0byBwYXJzZSBpcGFkZHIiLCB1aGUpOworICAgICAgICAgICAgICAgIGNmZy5pcEFkZHIgPSAwOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGNmZy5uZXRtYXNrID0gc3RyaW5nVG9JcEFkZHIoc3QubmV4dFRva2VuKCIgIikpOworICAgICAgICAgICAgfSBjYXRjaCAoVW5rbm93bkhvc3RFeGNlcHRpb24gdWhlKSB7CisgICAgICAgICAgICAgICAgU2xvZy5lKFRBRywgIkZhaWxlZCB0byBwYXJzZSBuZXRtYXNrIiwgdWhlKTsKKyAgICAgICAgICAgICAgICBjZmcubmV0bWFzayA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjZmcuaW50ZXJmYWNlRmxhZ3MgPSBzdC5uZXh0VG9rZW4oIl0iKS50cmltKCkgKyJdIjsKKyAgICAgICAgfSBjYXRjaCAoTm9TdWNoRWxlbWVudEV4Y2VwdGlvbiBuc2VlKSB7CiAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICBTdHJpbmcuZm9ybWF0KCJJbnZhbGlkIHJlc3BvbnNlIGZyb20gZGFlbW9uICglcykiLCByc3ApKTsKICAgICAgICAgfQotCi0gICAgICAgIEludGVyZmFjZUNvbmZpZ3VyYXRpb24gY2ZnID0gbmV3IEludGVyZmFjZUNvbmZpZ3VyYXRpb24oKTsKLSAgICAgICAgY2ZnLmh3QWRkciA9IHN0Lm5leHRUb2tlbigiICIpOwotICAgICAgICB0cnkgewotICAgICAgICAgICAgY2ZnLmlwQWRkciA9IHN0cmluZ1RvSXBBZGRyKHN0Lm5leHRUb2tlbigiICIpKTsKLSAgICAgICAgfSBjYXRjaCAoVW5rbm93bkhvc3RFeGNlcHRpb24gdWhlKSB7Ci0gICAgICAgICAgICBTbG9nLmUoVEFHLCAiRmFpbGVkIHRvIHBhcnNlIGlwYWRkciIsIHVoZSk7Ci0gICAgICAgICAgICBjZmcuaXBBZGRyID0gMDsKLSAgICAgICAgfQotCi0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBjZmcubmV0bWFzayA9IHN0cmluZ1RvSXBBZGRyKHN0Lm5leHRUb2tlbigiICIpKTsKLSAgICAgICAgfSBjYXRjaCAoVW5rbm93bkhvc3RFeGNlcHRpb24gdWhlKSB7Ci0gICAgICAgICAgICBTbG9nLmUoVEFHLCAiRmFpbGVkIHRvIHBhcnNlIG5ldG1hc2siLCB1aGUpOwotICAgICAgICAgICAgY2ZnLm5ldG1hc2sgPSAwOwotICAgICAgICB9Ci0gICAgICAgIGNmZy5pbnRlcmZhY2VGbGFncyA9IHN0Lm5leHRUb2tlbigiXSIpLnRyaW0oKSArIl0iOwogICAgICAgICBTbG9nLmQoVEFHLCBTdHJpbmcuZm9ybWF0KCJmbGFncyA8JXM+IiwgY2ZnLmludGVyZmFjZUZsYWdzKSk7CiAgICAgICAgIHJldHVybiBjZmc7CiAgICAgfQpAQCAtMjcyLDcgKzI5MCwxMiBAQAogICAgICAgICAgICAgU3RyaW5nIGlmYWNlLCBJbnRlcmZhY2VDb25maWd1cmF0aW9uIGNmZykgdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiB7CiAgICAgICAgIFN0cmluZyBjbWQgPSBTdHJpbmcuZm9ybWF0KCJpbnRlcmZhY2Ugc2V0Y2ZnICVzICVzICVzICVzIiwgaWZhY2UsCiAgICAgICAgICAgICAgICAgaW50VG9JcFN0cmluZyhjZmcuaXBBZGRyKSwgaW50VG9JcFN0cmluZyhjZmcubmV0bWFzayksIGNmZy5pbnRlcmZhY2VGbGFncyk7Ci0gICAgICAgIG1Db25uZWN0b3IuZG9Db21tYW5kKGNtZCk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBtQ29ubmVjdG9yLmRvQ29tbWFuZChjbWQpOworICAgICAgICB9IGNhdGNoIChOYXRpdmVEYWVtb25Db25uZWN0b3JFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgIlVuYWJsZSB0byBjb21tdW5pY2F0ZSB3aXRoIG5hdGl2ZSBkYWVtb24gdG8gaW50ZXJmYWNlIHNldGNmZyIpOworICAgICAgICB9CiAgICAgfQogCiAgICAgcHVibGljIHZvaWQgc2h1dGRvd24oKSB7CkBAIC0yODksMjAgKzMxMiwyNSBAQAogICAgICAgICBtQ29udGV4dC5lbmZvcmNlQ2FsbGluZ09yU2VsZlBlcm1pc3Npb24oCiAgICAgICAgICAgICAgICAgYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uLkFDQ0VTU19ORVRXT1JLX1NUQVRFLCAiTmV0d29ya01hbmFnZW1lbnRTZXJ2aWNlIik7CiAKLSAgICAgICAgQXJyYXlMaXN0PFN0cmluZz4gcnNwID0gbUNvbm5lY3Rvci5kb0NvbW1hbmQoImlwZndkIHN0YXR1cyIpOworICAgICAgICBBcnJheUxpc3Q8U3RyaW5nPiByc3A7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByc3AgPSBtQ29ubmVjdG9yLmRvQ29tbWFuZCgiaXBmd2Qgc3RhdHVzIik7CisgICAgICAgIH0gY2F0Y2ggKE5hdGl2ZURhZW1vbkNvbm5lY3RvckV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAiVW5hYmxlIHRvIGNvbW11bmljYXRlIHdpdGggbmF0aXZlIGRhZW1vbiB0byBpcGZ3ZCBzdGF0dXMiKTsKKyAgICAgICAgfQogCiAgICAgICAgIGZvciAoU3RyaW5nIGxpbmUgOiByc3ApIHsKLSAgICAgICAgICAgIFN0cmluZyBbXXRvayA9IGxpbmUuc3BsaXQoIiAiKTsKKyAgICAgICAgICAgIFN0cmluZ1tdIHRvayA9IGxpbmUuc3BsaXQoIiAiKTsKKyAgICAgICAgICAgIGlmICh0b2subGVuZ3RoIDwgMykgeworICAgICAgICAgICAgICAgIFNsb2cuZShUQUcsICJNYWxmb3JtZWQgcmVzcG9uc2UgZnJvbSBuYXRpdmUgZGFlbW9uOiAiICsgbGluZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBpbnQgY29kZSA9IEludGVnZXIucGFyc2VJbnQodG9rWzBdKTsKICAgICAgICAgICAgIGlmIChjb2RlID09IE5ldGRSZXNwb25zZUNvZGUuSXBGd2RTdGF0dXNSZXN1bHQpIHsKICAgICAgICAgICAgICAgICAvLyAyMTEgRm9yd2FyZGluZyA8ZW5hYmxlZC9kaXNhYmxlZD4KLSAgICAgICAgICAgICAgICBpZiAodG9rLmxlbmd0aCAhPTIpIHsKLSAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcuZm9ybWF0KCJNYWxmb3JtYXR0ZWQgbGlzdCBlbnRyeSAnJXMnIiwgbGluZSkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAodG9rWzJdLmVxdWFscygiZW5hYmxlZCIpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuICJlbmFibGVkIi5lcXVhbHModG9rWzJdKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbihTdHJpbmcuZm9ybWF0KCJVbmV4cGVjdGVkIHJlc3BvbnNlIGNvZGUgJWQiLCBjb2RlKSk7CiAgICAgICAgICAgICB9CkBAIC0zMjYsMjkgKzM1NCw0NSBAQAogICAgICAgICBmb3IgKFN0cmluZyBkIDogZGhjcFJhbmdlKSB7CiAgICAgICAgICAgICBjbWQgKz0gIiAiICsgZDsKICAgICAgICAgfQotICAgICAgICBtQ29ubmVjdG9yLmRvQ29tbWFuZChjbWQpOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBtQ29ubmVjdG9yLmRvQ29tbWFuZChjbWQpOworICAgICAgICB9IGNhdGNoIChOYXRpdmVEYWVtb25Db25uZWN0b3JFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiVW5hYmxlIHRvIGNvbW11bmljYXRlIHRvIG5hdGl2ZSBkYWVtb24iKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHB1YmxpYyB2b2lkIHN0b3BUZXRoZXJpbmcoKSB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uIHsKICAgICAgICAgbUNvbnRleHQuZW5mb3JjZUNhbGxpbmdPclNlbGZQZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgIGFuZHJvaWQuTWFuaWZlc3QucGVybWlzc2lvbi5DSEFOR0VfTkVUV09SS19TVEFURSwgIk5ldHdvcmtNYW5hZ2VtZW50U2VydmljZSIpOwotICAgICAgICBtQ29ubmVjdG9yLmRvQ29tbWFuZCgidGV0aGVyIHN0b3AiKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG1Db25uZWN0b3IuZG9Db21tYW5kKCJ0ZXRoZXIgc3RvcCIpOworICAgICAgICB9IGNhdGNoIChOYXRpdmVEYWVtb25Db25uZWN0b3JFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiVW5hYmxlIHRvIGNvbW11bmljYXRlIHRvIG5hdGl2ZSBkYWVtb24gdG8gc3RvcCB0ZXRoZXIiKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHB1YmxpYyBib29sZWFuIGlzVGV0aGVyaW5nU3RhcnRlZCgpIHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24gewogICAgICAgICBtQ29udGV4dC5lbmZvcmNlQ2FsbGluZ09yU2VsZlBlcm1pc3Npb24oCiAgICAgICAgICAgICAgICAgYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uLkFDQ0VTU19ORVRXT1JLX1NUQVRFLCAiTmV0d29ya01hbmFnZW1lbnRTZXJ2aWNlIik7CiAKLSAgICAgICAgQXJyYXlMaXN0PFN0cmluZz4gcnNwID0gbUNvbm5lY3Rvci5kb0NvbW1hbmQoInRldGhlciBzdGF0dXMiKTsKKyAgICAgICAgQXJyYXlMaXN0PFN0cmluZz4gcnNwOworICAgICAgICB0cnkgeworICAgICAgICAgICAgcnNwID0gbUNvbm5lY3Rvci5kb0NvbW1hbmQoInRldGhlciBzdGF0dXMiKTsKKyAgICAgICAgfSBjYXRjaCAoTmF0aXZlRGFlbW9uQ29ubmVjdG9yRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICJVbmFibGUgdG8gY29tbXVuaWNhdGUgdG8gbmF0aXZlIGRhZW1vbiB0byBnZXQgdGV0aGVyIHN0YXR1cyIpOworICAgICAgICB9CiAKICAgICAgICAgZm9yIChTdHJpbmcgbGluZSA6IHJzcCkgewotICAgICAgICAgICAgU3RyaW5nIFtddG9rID0gbGluZS5zcGxpdCgiICIpOworICAgICAgICAgICAgU3RyaW5nW10gdG9rID0gbGluZS5zcGxpdCgiICIpOworICAgICAgICAgICAgaWYgKHRvay5sZW5ndGggPCAzKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiTWFsZm9ybWVkIHJlc3BvbnNlIGZvciB0ZXRoZXIgc3RhdHVzOiAiICsgbGluZSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBpbnQgY29kZSA9IEludGVnZXIucGFyc2VJbnQodG9rWzBdKTsKICAgICAgICAgICAgIGlmIChjb2RlID09IE5ldGRSZXNwb25zZUNvZGUuVGV0aGVyU3RhdHVzUmVzdWx0KSB7CiAgICAgICAgICAgICAgICAgLy8gWFhYOiBUZXRoZXJpbmcgc2VydmljZXMgPHN0YXJ0ZWQvc3RvcHBlZD4gPFRCRD4uLi4KLSAgICAgICAgICAgICAgICBpZiAodG9rWzJdLmVxdWFscygic3RhcnRlZCIpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgcmV0dXJuICJzdGFydGVkIi5lcXVhbHModG9rWzJdKTsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbihTdHJpbmcuZm9ybWF0KCJVbmV4cGVjdGVkIHJlc3BvbnNlIGNvZGUgJWQiLCBjb2RlKSk7CiAgICAgICAgICAgICB9CkBAIC0zNTksMjAgKzQwMywzNSBAQAogICAgIHB1YmxpYyB2b2lkIHRldGhlckludGVyZmFjZShTdHJpbmcgaWZhY2UpIHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24gewogICAgICAgICBtQ29udGV4dC5lbmZvcmNlQ2FsbGluZ09yU2VsZlBlcm1pc3Npb24oCiAgICAgICAgICAgICAgICAgYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uLkNIQU5HRV9ORVRXT1JLX1NUQVRFLCAiTmV0d29ya01hbmFnZW1lbnRTZXJ2aWNlIik7Ci0gICAgICAgIG1Db25uZWN0b3IuZG9Db21tYW5kKCJ0ZXRoZXIgaW50ZXJmYWNlIGFkZCAiICsgaWZhY2UpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgbUNvbm5lY3Rvci5kb0NvbW1hbmQoInRldGhlciBpbnRlcmZhY2UgYWRkICIgKyBpZmFjZSk7CisgICAgICAgIH0gY2F0Y2ggKE5hdGl2ZURhZW1vbkNvbm5lY3RvckV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAiVW5hYmxlIHRvIGNvbW11bmljYXRlIHRvIG5hdGl2ZSBkYWVtb24gZm9yIGFkZGluZyB0ZXRoZXIgaW50ZXJmYWNlIik7CisgICAgICAgIH0KICAgICB9CiAKICAgICBwdWJsaWMgdm9pZCB1bnRldGhlckludGVyZmFjZShTdHJpbmcgaWZhY2UpIHsKICAgICAgICAgbUNvbnRleHQuZW5mb3JjZUNhbGxpbmdPclNlbGZQZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgIGFuZHJvaWQuTWFuaWZlc3QucGVybWlzc2lvbi5DSEFOR0VfTkVUV09SS19TVEFURSwgIk5ldHdvcmtNYW5hZ2VtZW50U2VydmljZSIpOwotICAgICAgICBtQ29ubmVjdG9yLmRvQ29tbWFuZCgidGV0aGVyIGludGVyZmFjZSByZW1vdmUgIiArIGlmYWNlKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG1Db25uZWN0b3IuZG9Db21tYW5kKCJ0ZXRoZXIgaW50ZXJmYWNlIHJlbW92ZSAiICsgaWZhY2UpOworICAgICAgICB9IGNhdGNoIChOYXRpdmVEYWVtb25Db25uZWN0b3JFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgIlVuYWJsZSB0byBjb21tdW5pY2F0ZSB0byBuYXRpdmUgZGFlbW9uIGZvciByZW1vdmluZyB0ZXRoZXIgaW50ZXJmYWNlIik7CisgICAgICAgIH0KICAgICB9CiAKICAgICBwdWJsaWMgU3RyaW5nW10gbGlzdFRldGhlcmVkSW50ZXJmYWNlcygpIHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24gewogICAgICAgICBtQ29udGV4dC5lbmZvcmNlQ2FsbGluZ09yU2VsZlBlcm1pc3Npb24oCiAgICAgICAgICAgICAgICAgYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uLkFDQ0VTU19ORVRXT1JLX1NUQVRFLCAiTmV0d29ya01hbmFnZW1lbnRTZXJ2aWNlIik7Ci0gICAgICAgIHJldHVybiBtQ29ubmVjdG9yLmRvTGlzdENvbW1hbmQoCi0gICAgICAgICAgICAgICAgInRldGhlciBpbnRlcmZhY2UgbGlzdCIsIE5ldGRSZXNwb25zZUNvZGUuVGV0aGVySW50ZXJmYWNlTGlzdFJlc3VsdCk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gbUNvbm5lY3Rvci5kb0xpc3RDb21tYW5kKAorICAgICAgICAgICAgICAgICAgICAidGV0aGVyIGludGVyZmFjZSBsaXN0IiwgTmV0ZFJlc3BvbnNlQ29kZS5UZXRoZXJJbnRlcmZhY2VMaXN0UmVzdWx0KTsKKyAgICAgICAgfSBjYXRjaCAoTmF0aXZlRGFlbW9uQ29ubmVjdG9yRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICJVbmFibGUgdG8gY29tbXVuaWNhdGUgdG8gbmF0aXZlIGRhZW1vbiBmb3IgbGlzdGluZyB0ZXRoZXIgaW50ZXJmYWNlcyIpOworICAgICAgICB9CiAgICAgfQogCiAgICAgcHVibGljIHZvaWQgc2V0RG5zRm9yd2FyZGVycyhTdHJpbmdbXSBkbnMpIHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24gewpAQCAtMzgzLDcgKzQ0MiwxMiBAQAogICAgICAgICAgICAgZm9yIChTdHJpbmcgcyA6IGRucykgewogICAgICAgICAgICAgICAgIGNtZCArPSAiICIgKyBJbmV0QWRkcmVzcy5nZXRCeU5hbWUocykuZ2V0SG9zdEFkZHJlc3MoKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1Db25uZWN0b3IuZG9Db21tYW5kKGNtZCk7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIG1Db25uZWN0b3IuZG9Db21tYW5kKGNtZCk7CisgICAgICAgICAgICB9IGNhdGNoIChOYXRpdmVEYWVtb25Db25uZWN0b3JFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICAiVW5hYmxlIHRvIGNvbW11bmljYXRlIHRvIG5hdGl2ZSBkYWVtb24gZm9yIHNldHRpbmcgdGV0aGVyIGRucyIpOworICAgICAgICAgICAgfQogICAgICAgICB9IGNhdGNoIChVbmtub3duSG9zdEV4Y2VwdGlvbiBlKSB7CiAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJFcnJvciByZXNvbHZpbmcgZG5zIG5hbWUiLCBlKTsKICAgICAgICAgfQpAQCAtMzkyLDMwICs0NTYsNTAgQEAKICAgICBwdWJsaWMgU3RyaW5nW10gZ2V0RG5zRm9yd2FyZGVycygpIHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24gewogICAgICAgICBtQ29udGV4dC5lbmZvcmNlQ2FsbGluZ09yU2VsZlBlcm1pc3Npb24oCiAgICAgICAgICAgICAgICAgYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uLkFDQ0VTU19ORVRXT1JLX1NUQVRFLCAiTmV0d29ya01hbmFnZW1lbnRTZXJ2aWNlIik7Ci0gICAgICAgIHJldHVybiBtQ29ubmVjdG9yLmRvTGlzdENvbW1hbmQoCi0gICAgICAgICAgICAgICAgInRldGhlciBkbnMgbGlzdCIsIE5ldGRSZXNwb25zZUNvZGUuVGV0aGVyRG5zRndkVGd0TGlzdFJlc3VsdCk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gbUNvbm5lY3Rvci5kb0xpc3RDb21tYW5kKAorICAgICAgICAgICAgICAgICAgICAidGV0aGVyIGRucyBsaXN0IiwgTmV0ZFJlc3BvbnNlQ29kZS5UZXRoZXJEbnNGd2RUZ3RMaXN0UmVzdWx0KTsKKyAgICAgICAgfSBjYXRjaCAoTmF0aXZlRGFlbW9uQ29ubmVjdG9yRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICJVbmFibGUgdG8gY29tbXVuaWNhdGUgdG8gbmF0aXZlIGRhZW1vbiBmb3IgbGlzdGluZyB0ZXRoZXIgZG5zIik7CisgICAgICAgIH0KICAgICB9CiAKICAgICBwdWJsaWMgdm9pZCBlbmFibGVOYXQoU3RyaW5nIGludGVybmFsSW50ZXJmYWNlLCBTdHJpbmcgZXh0ZXJuYWxJbnRlcmZhY2UpCiAgICAgICAgICAgICB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uIHsKICAgICAgICAgbUNvbnRleHQuZW5mb3JjZUNhbGxpbmdPclNlbGZQZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgIGFuZHJvaWQuTWFuaWZlc3QucGVybWlzc2lvbi5DSEFOR0VfTkVUV09SS19TVEFURSwgIk5ldHdvcmtNYW5hZ2VtZW50U2VydmljZSIpOwotICAgICAgICBtQ29ubmVjdG9yLmRvQ29tbWFuZCgKLSAgICAgICAgICAgICAgICBTdHJpbmcuZm9ybWF0KCJuYXQgZW5hYmxlICVzICVzIiwgaW50ZXJuYWxJbnRlcmZhY2UsIGV4dGVybmFsSW50ZXJmYWNlKSk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBtQ29ubmVjdG9yLmRvQ29tbWFuZCgKKyAgICAgICAgICAgICAgICAgICAgU3RyaW5nLmZvcm1hdCgibmF0IGVuYWJsZSAlcyAlcyIsIGludGVybmFsSW50ZXJmYWNlLCBleHRlcm5hbEludGVyZmFjZSkpOworICAgICAgICB9IGNhdGNoIChOYXRpdmVEYWVtb25Db25uZWN0b3JFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgIlVuYWJsZSB0byBjb21tdW5pY2F0ZSB0byBuYXRpdmUgZGFlbW9uIGZvciBlbmFibGluZyBOQVQgaW50ZXJmYWNlIik7CisgICAgICAgIH0KICAgICB9CiAKICAgICBwdWJsaWMgdm9pZCBkaXNhYmxlTmF0KFN0cmluZyBpbnRlcm5hbEludGVyZmFjZSwgU3RyaW5nIGV4dGVybmFsSW50ZXJmYWNlKQogICAgICAgICAgICAgdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiB7CiAgICAgICAgIG1Db250ZXh0LmVuZm9yY2VDYWxsaW5nT3JTZWxmUGVybWlzc2lvbigKICAgICAgICAgICAgICAgICBhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24uQ0hBTkdFX05FVFdPUktfU1RBVEUsICJOZXR3b3JrTWFuYWdlbWVudFNlcnZpY2UiKTsKLSAgICAgICAgbUNvbm5lY3Rvci5kb0NvbW1hbmQoCi0gICAgICAgICAgICAgICAgU3RyaW5nLmZvcm1hdCgibmF0IGRpc2FibGUgJXMgJXMiLCBpbnRlcm5hbEludGVyZmFjZSwgZXh0ZXJuYWxJbnRlcmZhY2UpKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG1Db25uZWN0b3IuZG9Db21tYW5kKAorICAgICAgICAgICAgICAgICAgICBTdHJpbmcuZm9ybWF0KCJuYXQgZGlzYWJsZSAlcyAlcyIsIGludGVybmFsSW50ZXJmYWNlLCBleHRlcm5hbEludGVyZmFjZSkpOworICAgICAgICB9IGNhdGNoIChOYXRpdmVEYWVtb25Db25uZWN0b3JFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgIlVuYWJsZSB0byBjb21tdW5pY2F0ZSB0byBuYXRpdmUgZGFlbW9uIGZvciBkaXNhYmxpbmcgTkFUIGludGVyZmFjZSIpOworICAgICAgICB9CiAgICAgfQogCiAgICAgcHVibGljIFN0cmluZ1tdIGxpc3RUdHlzKCkgdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiB7CiAgICAgICAgIG1Db250ZXh0LmVuZm9yY2VDYWxsaW5nT3JTZWxmUGVybWlzc2lvbigKICAgICAgICAgICAgICAgICBhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24uQUNDRVNTX05FVFdPUktfU1RBVEUsICJOZXR3b3JrTWFuYWdlbWVudFNlcnZpY2UiKTsKLSAgICAgICAgcmV0dXJuIG1Db25uZWN0b3IuZG9MaXN0Q29tbWFuZCgibGlzdF90dHlzIiwgTmV0ZFJlc3BvbnNlQ29kZS5UdHlMaXN0UmVzdWx0KTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIHJldHVybiBtQ29ubmVjdG9yLmRvTGlzdENvbW1hbmQoImxpc3RfdHR5cyIsIE5ldGRSZXNwb25zZUNvZGUuVHR5TGlzdFJlc3VsdCk7CisgICAgICAgIH0gY2F0Y2ggKE5hdGl2ZURhZW1vbkNvbm5lY3RvckV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAiVW5hYmxlIHRvIGNvbW11bmljYXRlIHRvIG5hdGl2ZSBkYWVtb24gZm9yIGxpc3RpbmcgVFRZcyIpOworICAgICAgICB9CiAgICAgfQogCiAgICAgcHVibGljIHZvaWQgYXR0YWNoUHBwZChTdHJpbmcgdHR5LCBTdHJpbmcgbG9jYWxBZGRyLCBTdHJpbmcgcmVtb3RlQWRkciwgU3RyaW5nIGRuczFBZGRyLApAQCAtNDMwLDMxICs1MTQsNTIgQEAKICAgICAgICAgICAgICAgICAgICAgSW5ldEFkZHJlc3MuZ2V0QnlOYW1lKGRuczJBZGRyKS5nZXRIb3N0QWRkcmVzcygpKSk7CiAgICAgICAgIH0gY2F0Y2ggKFVua25vd25Ib3N0RXhjZXB0aW9uIGUpIHsKICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIkVycm9yIHJlc29sdmluZyBhZGRyIiwgZSk7CisgICAgICAgIH0gY2F0Y2ggKE5hdGl2ZURhZW1vbkNvbm5lY3RvckV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJFcnJvciBjb21tdW5pY2F0aW5nIHRvIG5hdGl2ZSBkYWVtb24gdG8gYXR0YWNoIHBwcGQiLCBlKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIHB1YmxpYyB2b2lkIGRldGFjaFBwcGQoU3RyaW5nIHR0eSkgdGhyb3dzIElsbGVnYWxTdGF0ZUV4Y2VwdGlvbiB7CiAgICAgICAgIG1Db250ZXh0LmVuZm9yY2VDYWxsaW5nT3JTZWxmUGVybWlzc2lvbigKICAgICAgICAgICAgICAgICBhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24uQ0hBTkdFX05FVFdPUktfU1RBVEUsICJOZXR3b3JrTWFuYWdlbWVudFNlcnZpY2UiKTsKLSAgICAgICAgbUNvbm5lY3Rvci5kb0NvbW1hbmQoU3RyaW5nLmZvcm1hdCgicHBwZCBkZXRhY2ggJXMiLCB0dHkpKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG1Db25uZWN0b3IuZG9Db21tYW5kKFN0cmluZy5mb3JtYXQoInBwcGQgZGV0YWNoICVzIiwgdHR5KSk7CisgICAgICAgIH0gY2F0Y2ggKE5hdGl2ZURhZW1vbkNvbm5lY3RvckV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJFcnJvciBjb21tdW5pY2F0aW5nIHRvIG5hdGl2ZSBkYWVtb24gdG8gZGV0YWNoIHBwcGQiLCBlKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHB1YmxpYyB2b2lkIHN0YXJ0VXNiUk5ESVMoKSB0aHJvd3MgSWxsZWdhbFN0YXRlRXhjZXB0aW9uIHsKICAgICAgICAgbUNvbnRleHQuZW5mb3JjZUNhbGxpbmdPclNlbGZQZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgIGFuZHJvaWQuTWFuaWZlc3QucGVybWlzc2lvbi5DSEFOR0VfTkVUV09SS19TVEFURSwgIk5ldHdvcmtNYW5hZ2VtZW50U2VydmljZSIpOwotICAgICAgICBtQ29ubmVjdG9yLmRvQ29tbWFuZCgidXNiIHN0YXJ0cm5kaXMiKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG1Db25uZWN0b3IuZG9Db21tYW5kKCJ1c2Igc3RhcnRybmRpcyIpOworICAgICAgICB9IGNhdGNoIChOYXRpdmVEYWVtb25Db25uZWN0b3JFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgIkVycm9yIGNvbW11bmljYXRpbmcgdG8gbmF0aXZlIGRhZW1vbiBmb3Igc3RhcnRpbmcgUk5ESVMiLCBlKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHB1YmxpYyB2b2lkIHN0b3BVc2JSTkRJUygpIHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24gewogICAgICAgICBtQ29udGV4dC5lbmZvcmNlQ2FsbGluZ09yU2VsZlBlcm1pc3Npb24oCiAgICAgICAgICAgICAgICAgYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uLkNIQU5HRV9ORVRXT1JLX1NUQVRFLCAiTmV0d29ya01hbmFnZW1lbnRTZXJ2aWNlIik7Ci0gICAgICAgIG1Db25uZWN0b3IuZG9Db21tYW5kKCJ1c2Igc3RvcHJuZGlzIik7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBtQ29ubmVjdG9yLmRvQ29tbWFuZCgidXNiIHN0b3BybmRpcyIpOworICAgICAgICB9IGNhdGNoIChOYXRpdmVEYWVtb25Db25uZWN0b3JFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiRXJyb3IgY29tbXVuaWNhdGluZyB0byBuYXRpdmUgZGFlbW9uIiwgZSk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBwdWJsaWMgYm9vbGVhbiBpc1VzYlJORElTU3RhcnRlZCgpIHRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24gewogICAgICAgICBtQ29udGV4dC5lbmZvcmNlQ2FsbGluZ09yU2VsZlBlcm1pc3Npb24oCiAgICAgICAgICAgICAgICAgYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uLkFDQ0VTU19ORVRXT1JLX1NUQVRFLCAiTmV0d29ya01hbmFnZW1lbnRTZXJ2aWNlIik7Ci0gICAgICAgIEFycmF5TGlzdDxTdHJpbmc+IHJzcCA9IG1Db25uZWN0b3IuZG9Db21tYW5kKCJ1c2Igcm5kaXNzdGF0dXMiKTsKKyAgICAgICAgQXJyYXlMaXN0PFN0cmluZz4gcnNwOworICAgICAgICB0cnkgeworICAgICAgICAgICAgcnNwID0gbUNvbm5lY3Rvci5kb0NvbW1hbmQoInVzYiBybmRpc3N0YXR1cyIpOworICAgICAgICB9IGNhdGNoIChOYXRpdmVEYWVtb25Db25uZWN0b3JFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAgICAgIkVycm9yIGNvbW11bmljYXRpbmcgdG8gbmF0aXZlIGRhZW1vbiB0byBjaGVjayBSTkRJUyBzdGF0dXMiLCBlKTsKKyAgICAgICAgfQogCiAgICAgICAgIGZvciAoU3RyaW5nIGxpbmUgOiByc3ApIHsKICAgICAgICAgICAgIFN0cmluZyBbXXRvayA9IGxpbmUuc3BsaXQoIiAiKTsKQEAgLTQ3NiwzMSArNTgxLDM1IEBACiAgICAgICAgICAgICAgICAgYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uLkNIQU5HRV9ORVRXT1JLX1NUQVRFLCAiTmV0d29ya01hbmFnZW1lbnRTZXJ2aWNlIik7CiAgICAgICAgIG1Db250ZXh0LmVuZm9yY2VDYWxsaW5nT3JTZWxmUGVybWlzc2lvbigKICAgICAgICAgICAgICAgICBhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24uQ0hBTkdFX1dJRklfU1RBVEUsICJOZXR3b3JrTWFuYWdlbWVudFNlcnZpY2UiKTsKLSAgICAgICAgbUNvbm5lY3Rvci5kb0NvbW1hbmQoU3RyaW5nLmZvcm1hdCgic29mdGFwIHN0b3AgIiArIHdsYW5JZmFjZSkpOwotICAgICAgICBtQ29ubmVjdG9yLmRvQ29tbWFuZChTdHJpbmcuZm9ybWF0KCJzb2Z0YXAgZndyZWxvYWQgIiArIHdsYW5JZmFjZSArICIgQVAiKSk7Ci0gICAgICAgIG1Db25uZWN0b3IuZG9Db21tYW5kKFN0cmluZy5mb3JtYXQoInNvZnRhcCBzdGFydCAiICsgd2xhbklmYWNlKSk7Ci0gICAgICAgIGlmICh3aWZpQ29uZmlnID09IG51bGwpIHsKLSAgICAgICAgICAgIG1Db25uZWN0b3IuZG9Db21tYW5kKFN0cmluZy5mb3JtYXQoInNvZnRhcCBzZXQgIiArIHdsYW5JZmFjZSArICIgIiArIHNvZnRhcElmYWNlKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvKioKLSAgICAgICAgICAgICAqIHNvZnRhcCBzZXQgYXJnMSBhcmcyIGFyZzMgW2FyZzQgYXJnNSBhcmc2IGFyZzcgYXJnOF0KLSAgICAgICAgICAgICAqIGFyZ3YxIC0gd2xhbiBpbnRlcmZhY2UKLSAgICAgICAgICAgICAqIGFyZ3YyIC0gc29mdGFwIGludGVyZmFjZQotICAgICAgICAgICAgICogYXJndjMgLSBTU0lECi0gICAgICAgICAgICAgKiBhcmd2NCAtIFNlY3VyaXR5Ci0gICAgICAgICAgICAgKiBhcmd2NSAtIEtleQotICAgICAgICAgICAgICogYXJndjYgLSBDaGFubmVsCi0gICAgICAgICAgICAgKiBhcmd2NyAtIFByZWFtYmxlCi0gICAgICAgICAgICAgKiBhcmd2OCAtIE1heCBTQ0IKLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgU3RyaW5nIHN0ciA9IFN0cmluZy5mb3JtYXQoInNvZnRhcCBzZXQgIiArIHdsYW5JZmFjZSArICIgIiArIHNvZnRhcElmYWNlICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgJXMgJXMgJXMiLCBjb252ZXJ0UXVvdGVkU3RyaW5nKHdpZmlDb25maWcuU1NJRCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWZpQ29uZmlnLmFsbG93ZWRLZXlNYW5hZ2VtZW50LmdldChLZXlNZ210LldQQV9QU0spID8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3cGEyLXBzayIgOiAib3BlbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0UXVvdGVkU3RyaW5nKHdpZmlDb25maWcucHJlU2hhcmVkS2V5KSk7Ci0gICAgICAgICAgICBtQ29ubmVjdG9yLmRvQ29tbWFuZChzdHIpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgbUNvbm5lY3Rvci5kb0NvbW1hbmQoU3RyaW5nLmZvcm1hdCgic29mdGFwIHN0b3AgIiArIHdsYW5JZmFjZSkpOworICAgICAgICAgICAgbUNvbm5lY3Rvci5kb0NvbW1hbmQoU3RyaW5nLmZvcm1hdCgic29mdGFwIGZ3cmVsb2FkICIgKyB3bGFuSWZhY2UgKyAiIEFQIikpOworICAgICAgICAgICAgbUNvbm5lY3Rvci5kb0NvbW1hbmQoU3RyaW5nLmZvcm1hdCgic29mdGFwIHN0YXJ0ICIgKyB3bGFuSWZhY2UpKTsKKyAgICAgICAgICAgIGlmICh3aWZpQ29uZmlnID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBtQ29ubmVjdG9yLmRvQ29tbWFuZChTdHJpbmcuZm9ybWF0KCJzb2Z0YXAgc2V0ICIgKyB3bGFuSWZhY2UgKyAiICIgKyBzb2Z0YXBJZmFjZSkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvKioKKyAgICAgICAgICAgICAgICAgKiBzb2Z0YXAgc2V0IGFyZzEgYXJnMiBhcmczIFthcmc0IGFyZzUgYXJnNiBhcmc3IGFyZzhdCisgICAgICAgICAgICAgICAgICogYXJndjEgLSB3bGFuIGludGVyZmFjZQorICAgICAgICAgICAgICAgICAqIGFyZ3YyIC0gc29mdGFwIGludGVyZmFjZQorICAgICAgICAgICAgICAgICAqIGFyZ3YzIC0gU1NJRAorICAgICAgICAgICAgICAgICAqIGFyZ3Y0IC0gU2VjdXJpdHkKKyAgICAgICAgICAgICAgICAgKiBhcmd2NSAtIEtleQorICAgICAgICAgICAgICAgICAqIGFyZ3Y2IC0gQ2hhbm5lbAorICAgICAgICAgICAgICAgICAqIGFyZ3Y3IC0gUHJlYW1ibGUKKyAgICAgICAgICAgICAgICAgKiBhcmd2OCAtIE1heCBTQ0IKKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBTdHJpbmcgc3RyID0gU3RyaW5nLmZvcm1hdCgic29mdGFwIHNldCAiICsgd2xhbklmYWNlICsgIiAiICsgc29mdGFwSWZhY2UgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgJXMgJXMgJXMiLCBjb252ZXJ0UXVvdGVkU3RyaW5nKHdpZmlDb25maWcuU1NJRCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lmaUNvbmZpZy5hbGxvd2VkS2V5TWFuYWdlbWVudC5nZXQoS2V5TWdtdC5XUEFfUFNLKSA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndwYTItcHNrIiA6ICJvcGVuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0UXVvdGVkU3RyaW5nKHdpZmlDb25maWcucHJlU2hhcmVkS2V5KSk7CisgICAgICAgICAgICAgICAgbUNvbm5lY3Rvci5kb0NvbW1hbmQoc3RyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1Db25uZWN0b3IuZG9Db21tYW5kKFN0cmluZy5mb3JtYXQoInNvZnRhcCBzdGFydGFwIikpOworICAgICAgICB9IGNhdGNoIChOYXRpdmVEYWVtb25Db25uZWN0b3JFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiRXJyb3IgY29tbXVuaWNhdGluZyB0byBuYXRpdmUgZGFlbW9uIHRvIHN0YXJ0IHNvZnRhcCIsIGUpOwogICAgICAgICB9Ci0gICAgICAgIG1Db25uZWN0b3IuZG9Db21tYW5kKFN0cmluZy5mb3JtYXQoInNvZnRhcCBzdGFydGFwIikpOwogICAgIH0KIAogICAgIHByaXZhdGUgU3RyaW5nIGNvbnZlcnRRdW90ZWRTdHJpbmcoU3RyaW5nIHMpIHsKQEAgLTUxNiw3ICs2MjUsMTIgQEAKICAgICAgICAgICAgICAgICBhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24uQ0hBTkdFX05FVFdPUktfU1RBVEUsICJOZXR3b3JrTWFuYWdlbWVudFNlcnZpY2UiKTsKICAgICAgICAgbUNvbnRleHQuZW5mb3JjZUNhbGxpbmdPclNlbGZQZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgIGFuZHJvaWQuTWFuaWZlc3QucGVybWlzc2lvbi5DSEFOR0VfV0lGSV9TVEFURSwgIk5ldHdvcmtNYW5hZ2VtZW50U2VydmljZSIpOwotICAgICAgICBtQ29ubmVjdG9yLmRvQ29tbWFuZCgic29mdGFwIHN0b3BhcCIpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgbUNvbm5lY3Rvci5kb0NvbW1hbmQoInNvZnRhcCBzdG9wYXAiKTsKKyAgICAgICAgfSBjYXRjaCAoTmF0aXZlRGFlbW9uQ29ubmVjdG9yRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIkVycm9yIGNvbW11bmljYXRpbmcgdG8gbmF0aXZlIGRhZW1vbiB0byBzdG9wIHNvZnQgQVAiLAorICAgICAgICAgICAgICAgICAgICBlKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHB1YmxpYyB2b2lkIHNldEFjY2Vzc1BvaW50KFdpZmlDb25maWd1cmF0aW9uIHdpZmlDb25maWcsIFN0cmluZyB3bGFuSWZhY2UsIFN0cmluZyBzb2Z0YXBJZmFjZSkKQEAgLTUyNSwxNSArNjM5LDE5IEBACiAgICAgICAgICAgICAgICAgYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uLkNIQU5HRV9ORVRXT1JLX1NUQVRFLCAiTmV0d29ya01hbmFnZW1lbnRTZXJ2aWNlIik7CiAgICAgICAgIG1Db250ZXh0LmVuZm9yY2VDYWxsaW5nT3JTZWxmUGVybWlzc2lvbigKICAgICAgICAgICAgIGFuZHJvaWQuTWFuaWZlc3QucGVybWlzc2lvbi5DSEFOR0VfV0lGSV9TVEFURSwgIk5ldHdvcmtNYW5hZ2VtZW50U2VydmljZSIpOwotICAgICAgICBpZiAod2lmaUNvbmZpZyA9PSBudWxsKSB7Ci0gICAgICAgICAgICBtQ29ubmVjdG9yLmRvQ29tbWFuZChTdHJpbmcuZm9ybWF0KCJzb2Z0YXAgc2V0ICIgKyB3bGFuSWZhY2UgKyAiICIgKyBzb2Z0YXBJZmFjZSkpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgU3RyaW5nIHN0ciA9IFN0cmluZy5mb3JtYXQoInNvZnRhcCBzZXQgIiArIHdsYW5JZmFjZSArICIgIiArIHNvZnRhcElmYWNlICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgJXMgJXMgJXMiLCBjb252ZXJ0UXVvdGVkU3RyaW5nKHdpZmlDb25maWcuU1NJRCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWZpQ29uZmlnLmFsbG93ZWRLZXlNYW5hZ2VtZW50LmdldChLZXlNZ210LldQQV9QU0spID8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3cGEyLXBzayIgOiAib3BlbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0UXVvdGVkU3RyaW5nKHdpZmlDb25maWcucHJlU2hhcmVkS2V5KSk7Ci0gICAgICAgICAgICBtQ29ubmVjdG9yLmRvQ29tbWFuZChzdHIpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgaWYgKHdpZmlDb25maWcgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIG1Db25uZWN0b3IuZG9Db21tYW5kKFN0cmluZy5mb3JtYXQoInNvZnRhcCBzZXQgIiArIHdsYW5JZmFjZSArICIgIiArIHNvZnRhcElmYWNlKSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIFN0cmluZyBzdHIgPSBTdHJpbmcuZm9ybWF0KCJzb2Z0YXAgc2V0ICIgKyB3bGFuSWZhY2UgKyAiICIgKyBzb2Z0YXBJZmFjZQorICAgICAgICAgICAgICAgICAgICAgICAgKyAiICVzICVzICVzIiwgY29udmVydFF1b3RlZFN0cmluZyh3aWZpQ29uZmlnLlNTSUQpLAorICAgICAgICAgICAgICAgICAgICAgICAgd2lmaUNvbmZpZy5hbGxvd2VkS2V5TWFuYWdlbWVudC5nZXQoS2V5TWdtdC5XUEFfUFNLKSA/ICJ3cGEyLXBzayIgOiAib3BlbiIsCisgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0UXVvdGVkU3RyaW5nKHdpZmlDb25maWcucHJlU2hhcmVkS2V5KSk7CisgICAgICAgICAgICAgICAgbUNvbm5lY3Rvci5kb0NvbW1hbmQoc3RyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBjYXRjaCAoTmF0aXZlRGFlbW9uQ29ubmVjdG9yRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIkVycm9yIGNvbW11bmljYXRpbmcgdG8gbmF0aXZlIGRhZW1vbiB0byBzZXQgc29mdCBBUCIsCisgICAgICAgICAgICAgICAgICAgIGUpOwogICAgICAgICB9CiAgICAgfQogCkBAIC01NDEsOSArNjU5LDIyIEBACiAgICAgICAgIG1Db250ZXh0LmVuZm9yY2VDYWxsaW5nT3JTZWxmUGVybWlzc2lvbigKICAgICAgICAgICAgICAgICBhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24uQUNDRVNTX05FVFdPUktfU1RBVEUsICJOZXR3b3JrTWFuYWdlbWVudFNlcnZpY2UiKTsKICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIFN0cmluZyByc3AgPSBtQ29ubmVjdG9yLmRvQ29tbWFuZCgKLSAgICAgICAgICAgICAgICAgICAgU3RyaW5nLmZvcm1hdCgiaW50ZXJmYWNlIHJlYWQlc2NvdW50ZXIgJXMiLCAocnggPyAicngiIDogInR4IiksIGlmYWNlKSkuZ2V0KDApOwotICAgICAgICAgICAgU3RyaW5nIFtddG9rID0gcnNwLnNwbGl0KCIgIik7CisgICAgICAgICAgICBTdHJpbmcgcnNwOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICByc3AgPSBtQ29ubmVjdG9yLmRvQ29tbWFuZCgKKyAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZy5mb3JtYXQoImludGVyZmFjZSByZWFkJXNjb3VudGVyICVzIiwgKHJ4ID8gInJ4IiA6ICJ0eCIpLCBpZmFjZSkpLmdldCgwKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKE5hdGl2ZURhZW1vbkNvbm5lY3RvckV4Y2VwdGlvbiBlMSkgeworICAgICAgICAgICAgICAgIFNsb2cuZShUQUcsICJFcnJvciBjb21tdW5pY2F0aW5nIHdpdGggbmF0aXZlIGRhZW1vbiIsIGUxKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFN0cmluZ1tdIHRvayA9IHJzcC5zcGxpdCgiICIpOworICAgICAgICAgICAgaWYgKHRvay5sZW5ndGggPCAyKSB7CisgICAgICAgICAgICAgICAgU2xvZy5lKFRBRywgU3RyaW5nLmZvcm1hdCgiTWFsZm9ybWVkIHJlc3BvbnNlIGZvciByZWFkaW5nICVzIGludGVyZmFjZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAocnggPyAicngiIDogInR4IikpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGludCBjb2RlOwogICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgICBjb2RlID0gSW50ZWdlci5wYXJzZUludCh0b2tbMF0pOwpAQCAtNTc1LDE3ICs3MDYsMzQgQEAKICAgICBwdWJsaWMgdm9pZCBzZXRJbnRlcmZhY2VUaHJvdHRsZShTdHJpbmcgaWZhY2UsIGludCByeEticHMsIGludCB0eEticHMpIHsKICAgICAgICAgbUNvbnRleHQuZW5mb3JjZUNhbGxpbmdPclNlbGZQZXJtaXNzaW9uKAogICAgICAgICAgICAgICAgIGFuZHJvaWQuTWFuaWZlc3QucGVybWlzc2lvbi5DSEFOR0VfTkVUV09SS19TVEFURSwgIk5ldHdvcmtNYW5hZ2VtZW50U2VydmljZSIpOwotICAgICAgICBtQ29ubmVjdG9yLmRvQ29tbWFuZChTdHJpbmcuZm9ybWF0KAotICAgICAgICAgICAgICAgICJpbnRlcmZhY2Ugc2V0dGhyb3R0bGUgJXMgJWQgJWQiLCBpZmFjZSwgcnhLYnBzLCB0eEticHMpKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG1Db25uZWN0b3IuZG9Db21tYW5kKFN0cmluZy5mb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICJpbnRlcmZhY2Ugc2V0dGhyb3R0bGUgJXMgJWQgJWQiLCBpZmFjZSwgcnhLYnBzLCB0eEticHMpKTsKKyAgICAgICAgfSBjYXRjaCAoTmF0aXZlRGFlbW9uQ29ubmVjdG9yRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIFNsb2cuZShUQUcsICJFcnJvciBjb21tdW5pY2F0aW5nIHdpdGggbmF0aXZlIGRhZW1vbiB0byBzZXQgdGhyb3R0bGUiLCBlKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHByaXZhdGUgaW50IGdldEludGVyZmFjZVRocm90dGxlKFN0cmluZyBpZmFjZSwgYm9vbGVhbiByeCkgewogICAgICAgICBtQ29udGV4dC5lbmZvcmNlQ2FsbGluZ09yU2VsZlBlcm1pc3Npb24oCiAgICAgICAgICAgICAgICAgYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uLkFDQ0VTU19ORVRXT1JLX1NUQVRFLCAiTmV0d29ya01hbmFnZW1lbnRTZXJ2aWNlIik7CiAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBTdHJpbmcgcnNwID0gbUNvbm5lY3Rvci5kb0NvbW1hbmQoCi0gICAgICAgICAgICAgICAgICAgIFN0cmluZy5mb3JtYXQoImludGVyZmFjZSBnZXR0aHJvdHRsZSAlcyAlcyIsIGlmYWNlLChyeCA/ICJyeCIgOiAidHgiKSkpLmdldCgwKTsKLSAgICAgICAgICAgIFN0cmluZyBbXXRvayA9IHJzcC5zcGxpdCgiICIpOworICAgICAgICAgICAgU3RyaW5nIHJzcDsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgcnNwID0gbUNvbm5lY3Rvci5kb0NvbW1hbmQoCisgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcuZm9ybWF0KCJpbnRlcmZhY2UgZ2V0dGhyb3R0bGUgJXMgJXMiLCBpZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJ4ID8gInJ4IiA6ICJ0eCIpKSkuZ2V0KDApOworICAgICAgICAgICAgfSBjYXRjaCAoTmF0aXZlRGFlbW9uQ29ubmVjdG9yRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBTbG9nLmUoVEFHLCAiRXJyb3IgY29tbXVuaWNhdGluZyB3aXRoIG5hdGl2ZSBkYWVtb24gdG8gZ2V0dGhyb3R0bGUiLCBlKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFN0cmluZ1tdIHRvayA9IHJzcC5zcGxpdCgiICIpOworICAgICAgICAgICAgaWYgKHRvay5sZW5ndGggPCAyKSB7CisgICAgICAgICAgICAgICAgU2xvZy5lKFRBRywgIk1hbGZvcm1lZCByZXNwb25zZSB0byBnZXR0aHJvdHRsZSBjb21tYW5kIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBpbnQgY29kZTsKICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgY29kZSA9IEludGVnZXIucGFyc2VJbnQodG9rWzBdKTsKZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL05vdGlmaWNhdGlvbk1hbmFnZXJTZXJ2aWNlLmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9Ob3RpZmljYXRpb25NYW5hZ2VyU2VydmljZS5qYXZhCmluZGV4IDczZDE3ZWEuLjI1ZGU4YjAgMTAwNzU1Ci0tLSBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL05vdGlmaWNhdGlvbk1hbmFnZXJTZXJ2aWNlLmphdmEKKysrIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvTm90aWZpY2F0aW9uTWFuYWdlclNlcnZpY2UuamF2YQpAQCAtMTYsOSArMTYsOCBAQAogCiBwYWNrYWdlIGNvbS5hbmRyb2lkLnNlcnZlcjsKIAotaW1wb3J0IGNvbS5hbmRyb2lkLnNlcnZlci5zdGF0dXMuSWNvbkRhdGE7Ci1pbXBvcnQgY29tLmFuZHJvaWQuc2VydmVyLnN0YXR1cy5Ob3RpZmljYXRpb25EYXRhOwotaW1wb3J0IGNvbS5hbmRyb2lkLnNlcnZlci5zdGF0dXMuU3RhdHVzQmFyU2VydmljZTsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5zdGF0dXNiYXIuU3RhdHVzQmFyTm90aWZpY2F0aW9uOworaW1wb3J0IGNvbS5hbmRyb2lkLnNlcnZlci5TdGF0dXNCYXJNYW5hZ2VyU2VydmljZTsKIAogaW1wb3J0IGFuZHJvaWQuYXBwLkFjdGl2aXR5TWFuYWdlck5hdGl2ZTsKIGltcG9ydCBhbmRyb2lkLmFwcC5JQWN0aXZpdHlNYW5hZ2VyOwpAQCAtMzksOSArMzgsMTEgQEAKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uOwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzOwogaW1wb3J0IGFuZHJvaWQuZGF0YWJhc2UuQ29udGVudE9ic2VydmVyOworaW1wb3J0IGFuZHJvaWQuaGFyZHdhcmUuVXNiOwogaW1wb3J0IGFuZHJvaWQubWVkaWEuQXVkaW9NYW5hZ2VyOwogaW1wb3J0IGFuZHJvaWQubmV0LlVyaTsKIGltcG9ydCBhbmRyb2lkLm9zLkJhdHRlcnlNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQub3MuQnVuZGxlOwogaW1wb3J0IGFuZHJvaWQub3MuQmluZGVyOwogaW1wb3J0IGFuZHJvaWQub3MuSGFuZGxlcjsKIGltcG9ydCBhbmRyb2lkLm9zLklCaW5kZXI7CkBAIC03MSw2ICs3Miw4IEBACiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9ICJOb3RpZmljYXRpb25TZXJ2aWNlIjsKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIERCRyA9IGZhbHNlOwogCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1BWF9QQUNLQUdFX05PVElGSUNBVElPTlMgPSA1MDsKKwogICAgIC8vIG1lc3NhZ2UgY29kZXMKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTUVTU0FHRV9USU1FT1VUID0gMjsKIApAQCAtODYsNyArODksNyBAQAogICAgIGZpbmFsIElCaW5kZXIgbUZvcmVncm91bmRUb2tlbiA9IG5ldyBCaW5kZXIoKTsKIAogICAgIHByaXZhdGUgV29ya2VySGFuZGxlciBtSGFuZGxlcjsKLSAgICBwcml2YXRlIFN0YXR1c0JhclNlcnZpY2UgbVN0YXR1c0JhclNlcnZpY2U7CisgICAgcHJpdmF0ZSBTdGF0dXNCYXJNYW5hZ2VyU2VydmljZSBtU3RhdHVzQmFyOwogICAgIHByaXZhdGUgTGlnaHRzU2VydmljZSBtTGlnaHRzU2VydmljZTsKICAgICBwcml2YXRlIExpZ2h0c1NlcnZpY2UuTGlnaHQgbUJhdHRlcnlMaWdodDsKICAgICBwcml2YXRlIExpZ2h0c1NlcnZpY2UuTGlnaHQgbU5vdGlmaWNhdGlvbkxpZ2h0OwpAQCAtMTEwLDggKzExMyw2IEBACiAgICAgcHJpdmF0ZSBib29sZWFuIG1Ob3RpZmljYXRpb25QdWxzZUVuYWJsZWQ7CiAKICAgICAvLyBmb3IgYWRiIGNvbm5lY3RlZCBub3RpZmljYXRpb25zCi0gICAgcHJpdmF0ZSBib29sZWFuIG1Vc2JDb25uZWN0ZWQ7Ci0gICAgcHJpdmF0ZSBib29sZWFuIG1BZGJFbmFibGVkID0gZmFsc2U7CiAgICAgcHJpdmF0ZSBib29sZWFuIG1BZGJOb3RpZmljYXRpb25TaG93biA9IGZhbHNlOwogICAgIHByaXZhdGUgTm90aWZpY2F0aW9uIG1BZGJOb3RpZmljYXRpb247CiAKQEAgLTE2MywxNiArMTY0LDIxIEBACiAgICAgICAgIGZpbmFsIFN0cmluZyBwa2c7CiAgICAgICAgIGZpbmFsIFN0cmluZyB0YWc7CiAgICAgICAgIGZpbmFsIGludCBpZDsKKyAgICAgICAgZmluYWwgaW50IHVpZDsKKyAgICAgICAgZmluYWwgaW50IGluaXRpYWxQaWQ7CiAgICAgICAgIElUcmFuc2llbnROb3RpZmljYXRpb24gY2FsbGJhY2s7CiAgICAgICAgIGludCBkdXJhdGlvbjsKICAgICAgICAgZmluYWwgTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbjsKICAgICAgICAgSUJpbmRlciBzdGF0dXNCYXJLZXk7CiAKLSAgICAgICAgTm90aWZpY2F0aW9uUmVjb3JkKFN0cmluZyBwa2csIFN0cmluZyB0YWcsIGludCBpZCwgTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikKKyAgICAgICAgTm90aWZpY2F0aW9uUmVjb3JkKFN0cmluZyBwa2csIFN0cmluZyB0YWcsIGludCBpZCwgaW50IHVpZCwgaW50IGluaXRpYWxQaWQsCisgICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikKICAgICAgICAgewogICAgICAgICAgICAgdGhpcy5wa2cgPSBwa2c7CiAgICAgICAgICAgICB0aGlzLnRhZyA9IHRhZzsKICAgICAgICAgICAgIHRoaXMuaWQgPSBpZDsKKyAgICAgICAgICAgIHRoaXMudWlkID0gdWlkOworICAgICAgICAgICAgdGhpcy5pbml0aWFsUGlkID0gaW5pdGlhbFBpZDsKICAgICAgICAgICAgIHRoaXMubm90aWZpY2F0aW9uID0gbm90aWZpY2F0aW9uOwogICAgICAgICB9CiAKQEAgLTIzOCw4ICsyNDQsOCBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgcHJpdmF0ZSBTdGF0dXNCYXJTZXJ2aWNlLk5vdGlmaWNhdGlvbkNhbGxiYWNrcyBtTm90aWZpY2F0aW9uQ2FsbGJhY2tzCi0gICAgICAgICAgICA9IG5ldyBTdGF0dXNCYXJTZXJ2aWNlLk5vdGlmaWNhdGlvbkNhbGxiYWNrcygpIHsKKyAgICBwcml2YXRlIFN0YXR1c0Jhck1hbmFnZXJTZXJ2aWNlLk5vdGlmaWNhdGlvbkNhbGxiYWNrcyBtTm90aWZpY2F0aW9uQ2FsbGJhY2tzCisgICAgICAgICAgICA9IG5ldyBTdGF0dXNCYXJNYW5hZ2VyU2VydmljZS5Ob3RpZmljYXRpb25DYWxsYmFja3MoKSB7CiAKICAgICAgICAgcHVibGljIHZvaWQgb25TZXREaXNhYmxlZChpbnQgc3RhdHVzKSB7CiAgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKG1Ob3RpZmljYXRpb25MaXN0KSB7CkBAIC0zMDIsNiArMzA4LDIwIEBACiAgICAgICAgICAgICAgICAgdXBkYXRlTGlnaHRzTG9ja2VkKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBvbk5vdGlmaWNhdGlvbkVycm9yKFN0cmluZyBwa2csIFN0cmluZyB0YWcsIGludCBpZCwKKyAgICAgICAgICAgICAgICBpbnQgdWlkLCBpbnQgaW5pdGlhbFBpZCwgU3RyaW5nIG1lc3NhZ2UpIHsKKyAgICAgICAgICAgIFNsb2cuZChUQUcsICJvbk5vdGlmaWNhdGlvbiBlcnJvciBwa2c9IiArIHBrZyArICIgdGFnPSIgKyB0YWcgKyAiIGlkPSIgKyBpZCk7CisgICAgICAgICAgICBjYW5jZWxOb3RpZmljYXRpb24ocGtnLCB0YWcsIGlkLCAwLCAwKTsKKyAgICAgICAgICAgIGxvbmcgaWRlbnQgPSBCaW5kZXIuY2xlYXJDYWxsaW5nSWRlbnRpdHkoKTsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgQWN0aXZpdHlNYW5hZ2VyTmF0aXZlLmdldERlZmF1bHQoKS5jcmFzaEFwcGxpY2F0aW9uKHVpZCwgaW5pdGlhbFBpZCwgcGtnLAorICAgICAgICAgICAgICAgICAgICAgICAgIkJhZCBub3RpZmljYXRpb24gcG9zdGVkIGZyb20gcGFja2FnZSAiICsgcGtnCisgICAgICAgICAgICAgICAgICAgICAgICArICI6ICIgKyBtZXNzYWdlKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBCaW5kZXIucmVzdG9yZUNhbGxpbmdJZGVudGl0eShpZGVudCk7CisgICAgICAgIH0KICAgICB9OwogCiAgICAgcHJpdmF0ZSBCcm9hZGNhc3RSZWNlaXZlciBtSW50ZW50UmVjZWl2ZXIgPSBuZXcgQnJvYWRjYXN0UmVjZWl2ZXIoKSB7CkBAIC0zMjYsMTIgKzM0NiwxNCBAQAogICAgICAgICAgICAgICAgICAgICBtQmF0dGVyeUZ1bGwgPSBiYXR0ZXJ5RnVsbDsKICAgICAgICAgICAgICAgICAgICAgdXBkYXRlTGlnaHRzKCk7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKEludGVudC5BQ1RJT05fVU1TX0NPTk5FQ1RFRCkpIHsKLSAgICAgICAgICAgICAgICBtVXNiQ29ubmVjdGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB1cGRhdGVBZGJOb3RpZmljYXRpb24oKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uLmVxdWFscyhJbnRlbnQuQUNUSU9OX1VNU19ESVNDT05ORUNURUQpKSB7Ci0gICAgICAgICAgICAgICAgbVVzYkNvbm5lY3RlZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHVwZGF0ZUFkYk5vdGlmaWNhdGlvbigpOworICAgICAgICAgICAgfSBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKFVzYi5BQ1RJT05fVVNCX1NUQVRFKSkgeworICAgICAgICAgICAgICAgIEJ1bmRsZSBleHRyYXMgPSBpbnRlbnQuZ2V0RXh0cmFzKCk7CisgICAgICAgICAgICAgICAgYm9vbGVhbiB1c2JDb25uZWN0ZWQgPSBleHRyYXMuZ2V0Qm9vbGVhbihVc2IuVVNCX0NPTk5FQ1RFRCk7CisgICAgICAgICAgICAgICAgYm9vbGVhbiBhZGJFbmFibGVkID0gKFVzYi5VU0JfRlVOQ1RJT05fRU5BQkxFRC5lcXVhbHMoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYXMuZ2V0U3RyaW5nKFVzYi5VU0JfRlVOQ1RJT05fQURCKSkpOworICAgICAgICAgICAgICAgIHVwZGF0ZUFkYk5vdGlmaWNhdGlvbih1c2JDb25uZWN0ZWQgJiYgYWRiRW5hYmxlZCk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbi5lcXVhbHMoVXNiLkFDVElPTl9VU0JfRElTQ09OTkVDVEVEKSkgeworICAgICAgICAgICAgICAgIHVwZGF0ZUFkYk5vdGlmaWNhdGlvbihmYWxzZSk7CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbi5lcXVhbHMoSW50ZW50LkFDVElPTl9QQUNLQUdFX1JFTU9WRUQpCiAgICAgICAgICAgICAgICAgICAgIHx8IGFjdGlvbi5lcXVhbHMoSW50ZW50LkFDVElPTl9QQUNLQUdFX1JFU1RBUlRFRCkKICAgICAgICAgICAgICAgICAgICAgfHwgKHF1ZXJ5UmVzdGFydD1hY3Rpb24uZXF1YWxzKEludGVudC5BQ1RJT05fUVVFUllfUEFDS0FHRV9SRVNUQVJUKSkKQEAgLTM3Nyw4ICszOTksNiBAQAogCiAgICAgICAgIHZvaWQgb2JzZXJ2ZSgpIHsKICAgICAgICAgICAgIENvbnRlbnRSZXNvbHZlciByZXNvbHZlciA9IG1Db250ZXh0LmdldENvbnRlbnRSZXNvbHZlcigpOwotICAgICAgICAgICAgcmVzb2x2ZXIucmVnaXN0ZXJDb250ZW50T2JzZXJ2ZXIoU2V0dGluZ3MuU2VjdXJlLmdldFVyaUZvcigKLSAgICAgICAgICAgICAgICAgICAgU2V0dGluZ3MuU2VjdXJlLkFEQl9FTkFCTEVEKSwgZmFsc2UsIHRoaXMpOwogICAgICAgICAgICAgcmVzb2x2ZXIucmVnaXN0ZXJDb250ZW50T2JzZXJ2ZXIoU2V0dGluZ3MuU3lzdGVtLmdldFVyaUZvcigKICAgICAgICAgICAgICAgICAgICAgU2V0dGluZ3MuU3lzdGVtLk5PVElGSUNBVElPTl9MSUdIVF9QVUxTRSksIGZhbHNlLCB0aGlzKTsKICAgICAgICAgICAgIHVwZGF0ZSgpOwpAQCAtMzkwLDEyICs0MTAsNiBAQAogCiAgICAgICAgIHB1YmxpYyB2b2lkIHVwZGF0ZSgpIHsKICAgICAgICAgICAgIENvbnRlbnRSZXNvbHZlciByZXNvbHZlciA9IG1Db250ZXh0LmdldENvbnRlbnRSZXNvbHZlcigpOwotICAgICAgICAgICAgYm9vbGVhbiBhZGJFbmFibGVkID0gU2V0dGluZ3MuU2VjdXJlLmdldEludChyZXNvbHZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgIFNldHRpbmdzLlNlY3VyZS5BREJfRU5BQkxFRCwgMCkgIT0gMDsKLSAgICAgICAgICAgIGlmIChtQWRiRW5hYmxlZCAhPSBhZGJFbmFibGVkKSB7Ci0gICAgICAgICAgICAgICAgbUFkYkVuYWJsZWQgPSBhZGJFbmFibGVkOwotICAgICAgICAgICAgICAgIHVwZGF0ZUFkYk5vdGlmaWNhdGlvbigpOwotICAgICAgICAgICAgfQogICAgICAgICAgICAgYm9vbGVhbiBwdWxzZUVuYWJsZWQgPSBTZXR0aW5ncy5TeXN0ZW0uZ2V0SW50KHJlc29sdmVyLAogICAgICAgICAgICAgICAgICAgICAgICAgU2V0dGluZ3MuU3lzdGVtLk5PVElGSUNBVElPTl9MSUdIVF9QVUxTRSwgMCkgIT0gMDsKICAgICAgICAgICAgIGlmIChtTm90aWZpY2F0aW9uUHVsc2VFbmFibGVkICE9IHB1bHNlRW5hYmxlZCkgewpAQCAtNDA1LDcgKzQxOSw3IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBOb3RpZmljYXRpb25NYW5hZ2VyU2VydmljZShDb250ZXh0IGNvbnRleHQsIFN0YXR1c0JhclNlcnZpY2Ugc3RhdHVzQmFyLAorICAgIE5vdGlmaWNhdGlvbk1hbmFnZXJTZXJ2aWNlKENvbnRleHQgY29udGV4dCwgU3RhdHVzQmFyTWFuYWdlclNlcnZpY2Ugc3RhdHVzQmFyLAogICAgICAgICAgICAgTGlnaHRzU2VydmljZSBsaWdodHMpCiAgICAgewogICAgICAgICBzdXBlcigpOwpAQCAtNDE3LDcgKzQzMSw3IEBACiAgICAgICAgIG1Ub2FzdFF1ZXVlID0gbmV3IEFycmF5TGlzdDxUb2FzdFJlY29yZD4oKTsKICAgICAgICAgbUhhbmRsZXIgPSBuZXcgV29ya2VySGFuZGxlcigpOwogCi0gICAgICAgIG1TdGF0dXNCYXJTZXJ2aWNlID0gc3RhdHVzQmFyOworICAgICAgICBtU3RhdHVzQmFyID0gc3RhdHVzQmFyOwogICAgICAgICBzdGF0dXNCYXIuc2V0Tm90aWZpY2F0aW9uQ2FsbGJhY2tzKG1Ob3RpZmljYXRpb25DYWxsYmFja3MpOwogCiAgICAgICAgIG1CYXR0ZXJ5TGlnaHQgPSBsaWdodHMuZ2V0TGlnaHQoTGlnaHRzU2VydmljZS5MSUdIVF9JRF9CQVRURVJZKTsKQEAgLTQ0NCw4ICs0NTgsNyBAQAogICAgICAgICAvLyByZWdpc3RlciBmb3IgYmF0dGVyeSBjaGFuZ2VkIG5vdGlmaWNhdGlvbnMKICAgICAgICAgSW50ZW50RmlsdGVyIGZpbHRlciA9IG5ldyBJbnRlbnRGaWx0ZXIoKTsKICAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihJbnRlbnQuQUNUSU9OX0JBVFRFUllfQ0hBTkdFRCk7Ci0gICAgICAgIGZpbHRlci5hZGRBY3Rpb24oSW50ZW50LkFDVElPTl9VTVNfQ09OTkVDVEVEKTsKLSAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihJbnRlbnQuQUNUSU9OX1VNU19ESVNDT05ORUNURUQpOworICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKFVzYi5BQ1RJT05fVVNCX1NUQVRFKTsKICAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihJbnRlbnQuQUNUSU9OX1NDUkVFTl9PTik7CiAgICAgICAgIGZpbHRlci5hZGRBY3Rpb24oSW50ZW50LkFDVElPTl9TQ1JFRU5fT0ZGKTsKICAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihUZWxlcGhvbnlNYW5hZ2VyLkFDVElPTl9QSE9ORV9TVEFURV9DSEFOR0VEKTsKQEAgLTY1Niw4ICs2NjksMzEgQEAKICAgICBwdWJsaWMgdm9pZCBlbnF1ZXVlTm90aWZpY2F0aW9uV2l0aFRhZyhTdHJpbmcgcGtnLCBTdHJpbmcgdGFnLCBpbnQgaWQsCiAgICAgICAgICAgICBOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uLCBpbnRbXSBpZE91dCkKICAgICB7CisgICAgICAgIGZpbmFsIGludCBjYWxsaW5nVWlkID0gQmluZGVyLmdldENhbGxpbmdVaWQoKTsKKyAgICAgICAgZmluYWwgaW50IGNhbGxpbmdQaWQgPSBCaW5kZXIuZ2V0Q2FsbGluZ1BpZCgpOworICAgICAgICAKICAgICAgICAgY2hlY2tJbmNvbWluZ0NhbGwocGtnKTsKIAorICAgICAgICAvLyBMaW1pdCB0aGUgbnVtYmVyIG9mIG5vdGlmaWNhdGlvbnMgdGhhdCBhbnkgZ2l2ZW4gcGFja2FnZSBleGNlcHQgdGhlIGFuZHJvaWQKKyAgICAgICAgLy8gcGFja2FnZSBjYW4gZW5xdWV1ZS4gIFByZXZlbnRzIERPUyBhdHRhY2tzIGFuZCBkZWFscyB3aXRoIGxlYWtzLgorICAgICAgICBpZiAoISJhbmRyb2lkIi5lcXVhbHMocGtnKSkgeworICAgICAgICAgICAgc3luY2hyb25pemVkIChtTm90aWZpY2F0aW9uTGlzdCkgeworICAgICAgICAgICAgICAgIGludCBjb3VudCA9IDA7CisgICAgICAgICAgICAgICAgZmluYWwgaW50IE4gPSBtTm90aWZpY2F0aW9uTGlzdC5zaXplKCk7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPE47IGkrKykgeworICAgICAgICAgICAgICAgICAgICBmaW5hbCBOb3RpZmljYXRpb25SZWNvcmQgciA9IG1Ob3RpZmljYXRpb25MaXN0LmdldChpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHIucGtnLmVxdWFscyhwa2cpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjb3VudCsrOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNvdW50ID49IE1BWF9QQUNLQUdFX05PVElGSUNBVElPTlMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbG9nLmUoVEFHLCAiUGFja2FnZSBoYXMgYWxyZWFkeSBwb3N0ZWQgIiArIGNvdW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgbm90aWZpY2F0aW9ucy4gIE5vdCBzaG93aW5nIG1vcmUuICBwYWNrYWdlPSIgKyBwa2cpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCiAgICAgICAgIC8vIFRoaXMgY29uZGl0aW9uYWwgaXMgYSBkaXJ0eSBoYWNrIHRvIGxpbWl0IHRoZSBsb2dnaW5nIGRvbmUgb24KICAgICAgICAgLy8gICAgIGJlaGFsZiBvZiB0aGUgZG93bmxvYWQgbWFuYWdlciB3aXRob3V0IGFmZmVjdGluZyBvdGhlciBhcHBzLgogICAgICAgICBpZiAoIXBrZy5lcXVhbHMoImNvbS5hbmRyb2lkLnByb3ZpZGVycy5kb3dubG9hZHMiKQpAQCAtNjgxLDcgKzcxNyw4IEBACiAgICAgICAgIH0KIAogICAgICAgICBzeW5jaHJvbml6ZWQgKG1Ob3RpZmljYXRpb25MaXN0KSB7Ci0gICAgICAgICAgICBOb3RpZmljYXRpb25SZWNvcmQgciA9IG5ldyBOb3RpZmljYXRpb25SZWNvcmQocGtnLCB0YWcsIGlkLCBub3RpZmljYXRpb24pOworICAgICAgICAgICAgTm90aWZpY2F0aW9uUmVjb3JkIHIgPSBuZXcgTm90aWZpY2F0aW9uUmVjb3JkKHBrZywgdGFnLCBpZCwKKyAgICAgICAgICAgICAgICAgICAgY2FsbGluZ1VpZCwgY2FsbGluZ1BpZCwgbm90aWZpY2F0aW9uKTsKICAgICAgICAgICAgIE5vdGlmaWNhdGlvblJlY29yZCBvbGQgPSBudWxsOwogCiAgICAgICAgICAgICBpbnQgaW5kZXggPSBpbmRleE9mTm90aWZpY2F0aW9uTG9ja2VkKHBrZywgdGFnLCBpZCk7CkBAIC03MDUsMzYgKzc0MiwxMyBAQAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAobm90aWZpY2F0aW9uLmljb24gIT0gMCkgewotICAgICAgICAgICAgICAgIEljb25EYXRhIGljb24gPSBJY29uRGF0YS5tYWtlSWNvbihudWxsLCBwa2csIG5vdGlmaWNhdGlvbi5pY29uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbi5pY29uTGV2ZWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90aWZpY2F0aW9uLm51bWJlcik7Ci0gICAgICAgICAgICAgICAgQ2hhclNlcXVlbmNlIHRydW5jYXRlZFRpY2tlciA9IG5vdGlmaWNhdGlvbi50aWNrZXJUZXh0OwotCi0gICAgICAgICAgICAgICAgLy8gVE9ETzogbWFrZSB0aGlzIHJlc3RyaWN0aW9uIGRvIHNvbWV0aGluZyBzbWFydGVyIGxpa2UgbmV2ZXIgZmlsbAotICAgICAgICAgICAgICAgIC8vIG1vcmUgdGhhbiB0d28gc2NyZWVucy4gICJXaHkgd291bGQgYW55b25lIG5lZWQgbW9yZSB0aGFuIDgwIGNoYXJhY3RlcnMuIiA6LS8KLSAgICAgICAgICAgICAgICBmaW5hbCBpbnQgbWF4VGlja2VyTGVuID0gODA7Ci0gICAgICAgICAgICAgICAgaWYgKHRydW5jYXRlZFRpY2tlciAhPSBudWxsICYmIHRydW5jYXRlZFRpY2tlci5sZW5ndGgoKSA+IG1heFRpY2tlckxlbikgewotICAgICAgICAgICAgICAgICAgICB0cnVuY2F0ZWRUaWNrZXIgPSB0cnVuY2F0ZWRUaWNrZXIuc3ViU2VxdWVuY2UoMCwgbWF4VGlja2VyTGVuKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBOb3RpZmljYXRpb25EYXRhIG4gPSBuZXcgTm90aWZpY2F0aW9uRGF0YSgpOwotICAgICAgICAgICAgICAgIG4ucGtnID0gcGtnOwotICAgICAgICAgICAgICAgIG4udGFnID0gdGFnOwotICAgICAgICAgICAgICAgIG4uaWQgPSBpZDsKLSAgICAgICAgICAgICAgICBuLndoZW4gPSBub3RpZmljYXRpb24ud2hlbjsKLSAgICAgICAgICAgICAgICBuLnRpY2tlclRleHQgPSB0cnVuY2F0ZWRUaWNrZXI7Ci0gICAgICAgICAgICAgICAgbi5vbmdvaW5nRXZlbnQgPSAobm90aWZpY2F0aW9uLmZsYWdzICYgTm90aWZpY2F0aW9uLkZMQUdfT05HT0lOR19FVkVOVCkgIT0gMDsKLSAgICAgICAgICAgICAgICBpZiAoIW4ub25nb2luZ0V2ZW50ICYmIChub3RpZmljYXRpb24uZmxhZ3MgJiBOb3RpZmljYXRpb24uRkxBR19OT19DTEVBUikgPT0gMCkgewotICAgICAgICAgICAgICAgICAgICBuLmNsZWFyYWJsZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG4uY29udGVudFZpZXcgPSBub3RpZmljYXRpb24uY29udGVudFZpZXc7Ci0gICAgICAgICAgICAgICAgbi5jb250ZW50SW50ZW50ID0gbm90aWZpY2F0aW9uLmNvbnRlbnRJbnRlbnQ7Ci0gICAgICAgICAgICAgICAgbi5kZWxldGVJbnRlbnQgPSBub3RpZmljYXRpb24uZGVsZXRlSW50ZW50OworICAgICAgICAgICAgICAgIFN0YXR1c0Jhck5vdGlmaWNhdGlvbiBuID0gbmV3IFN0YXR1c0Jhck5vdGlmaWNhdGlvbihwa2csIGlkLCB0YWcsCisgICAgICAgICAgICAgICAgICAgICAgICByLnVpZCwgci5pbml0aWFsUGlkLCBub3RpZmljYXRpb24pOwogICAgICAgICAgICAgICAgIGlmIChvbGQgIT0gbnVsbCAmJiBvbGQuc3RhdHVzQmFyS2V5ICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgci5zdGF0dXNCYXJLZXkgPSBvbGQuc3RhdHVzQmFyS2V5OwogICAgICAgICAgICAgICAgICAgICBsb25nIGlkZW50aXR5ID0gQmluZGVyLmNsZWFyQ2FsbGluZ0lkZW50aXR5KCk7CiAgICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtU3RhdHVzQmFyU2VydmljZS51cGRhdGVJY29uKHIuc3RhdHVzQmFyS2V5LCBpY29uLCBuKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1TdGF0dXNCYXIudXBkYXRlTm90aWZpY2F0aW9uKHIuc3RhdHVzQmFyS2V5LCBuKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBmaW5hbGx5IHsKICAgICAgICAgICAgICAgICAgICAgICAgIEJpbmRlci5yZXN0b3JlQ2FsbGluZ0lkZW50aXR5KGlkZW50aXR5KTsKQEAgLTc0MiwyMSArNzU2LDE5IEBACiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgbG9uZyBpZGVudGl0eSA9IEJpbmRlci5jbGVhckNhbGxpbmdJZGVudGl0eSgpOwogICAgICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAgICAgci5zdGF0dXNCYXJLZXkgPSBtU3RhdHVzQmFyU2VydmljZS5hZGRJY29uKGljb24sIG4pOworICAgICAgICAgICAgICAgICAgICAgICAgci5zdGF0dXNCYXJLZXkgPSBtU3RhdHVzQmFyLmFkZE5vdGlmaWNhdGlvbihuKTsKICAgICAgICAgICAgICAgICAgICAgICAgIG1BdHRlbnRpb25MaWdodC5wdWxzZSgpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGZpbmFsbHkgewogICAgICAgICAgICAgICAgICAgICAgICAgQmluZGVyLnJlc3RvcmVDYWxsaW5nSWRlbnRpdHkoaWRlbnRpdHkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQotCiAgICAgICAgICAgICAgICAgc2VuZEFjY2Vzc2liaWxpdHlFdmVudChub3RpZmljYXRpb24sIHBrZyk7Ci0KICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgaWYgKG9sZCAhPSBudWxsICYmIG9sZC5zdGF0dXNCYXJLZXkgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICBsb25nIGlkZW50aXR5ID0gQmluZGVyLmNsZWFyQ2FsbGluZ0lkZW50aXR5KCk7CiAgICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtU3RhdHVzQmFyU2VydmljZS5yZW1vdmVJY29uKG9sZC5zdGF0dXNCYXJLZXkpOworICAgICAgICAgICAgICAgICAgICAgICAgbVN0YXR1c0Jhci5yZW1vdmVOb3RpZmljYXRpb24ob2xkLnN0YXR1c0JhcktleSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgZmluYWxseSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBCaW5kZXIucmVzdG9yZUNhbGxpbmdJZGVudGl0eShpZGVudGl0eSk7CkBAIC04NjQsNyArODc2LDcgQEAKICAgICAgICAgaWYgKHIubm90aWZpY2F0aW9uLmljb24gIT0gMCkgewogICAgICAgICAgICAgbG9uZyBpZGVudGl0eSA9IEJpbmRlci5jbGVhckNhbGxpbmdJZGVudGl0eSgpOwogICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBtU3RhdHVzQmFyU2VydmljZS5yZW1vdmVJY29uKHIuc3RhdHVzQmFyS2V5KTsKKyAgICAgICAgICAgICAgICBtU3RhdHVzQmFyLnJlbW92ZU5vdGlmaWNhdGlvbihyLnN0YXR1c0JhcktleSk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBmaW5hbGx5IHsKICAgICAgICAgICAgICAgICBCaW5kZXIucmVzdG9yZUNhbGxpbmdJZGVudGl0eShpZGVudGl0eSk7CkBAIC0xMTE4LDggKzExMzAsOCBAQAogICAgIC8vIFRoaXMgaXMgaGVyZSBpbnN0ZWFkIG9mIFN0YXR1c0JhclBvbGljeSBiZWNhdXNlIGl0IGlzIGFuIGltcG9ydGFudAogICAgIC8vIHNlY3VyaXR5IGZlYXR1cmUgdGhhdCB3ZSBkb24ndCB3YW50IHBlb3BsZSBjdXN0b21pemluZyB0aGUgcGxhdGZvcm0KICAgICAvLyB0byBhY2NpZGVudGFsbHkgbG9zZS4KLSAgICBwcml2YXRlIHZvaWQgdXBkYXRlQWRiTm90aWZpY2F0aW9uKCkgewotICAgICAgICBpZiAobUFkYkVuYWJsZWQgJiYgbVVzYkNvbm5lY3RlZCkgeworICAgIHByaXZhdGUgdm9pZCB1cGRhdGVBZGJOb3RpZmljYXRpb24oYm9vbGVhbiBhZGJFbmFibGVkKSB7CisgICAgICAgIGlmIChhZGJFbmFibGVkKSB7CiAgICAgICAgICAgICBpZiAoIjAiLmVxdWFscyhTeXN0ZW1Qcm9wZXJ0aWVzLmdldCgicGVyc2lzdC5hZGIubm90aWZ5IikpKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvUGFja2FnZU1hbmFnZXJTZXJ2aWNlLmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9QYWNrYWdlTWFuYWdlclNlcnZpY2UuamF2YQppbmRleCA0OWQyYTc2Li4xMWQwYjdhIDEwMDY0NAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9QYWNrYWdlTWFuYWdlclNlcnZpY2UuamF2YQorKysgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9QYWNrYWdlTWFuYWdlclNlcnZpY2UuamF2YQpAQCAtMTUwLDYgKzE1MCw4IEBACiAKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIEdFVF9DRVJUSUZJQ0FURVMgPSB0cnVlOwogCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFNZU1RFTV9QUk9QRVJUWV9FRlNfRU5BQkxFRCA9ICJwZXJzaXN0LnNlY3VyaXR5LmVmcy5lbmFibGVkIjsKKwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBSRU1PVkVfRVZFTlRTID0KICAgICAgICAgRmlsZU9ic2VydmVyLkNMT1NFX1dSSVRFIHwgRmlsZU9ic2VydmVyLkRFTEVURSB8IEZpbGVPYnNlcnZlci5NT1ZFRF9GUk9NOwogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBBRERfRVZFTlRTID0KQEAgLTIwNCw2ICsyMDYsMTAgQEAKICAgICAvLyBUaGlzIGlzIHdoZXJlIGFsbCBhcHBsaWNhdGlvbiBwZXJzaXN0ZW50IGRhdGEgZ29lcy4KICAgICBmaW5hbCBGaWxlIG1BcHBEYXRhRGlyOwogCisgICAgLy8gSWYgRW5jcnlwdGVkIEZpbGUgU3lzdGVtIGZlYXR1cmUgaXMgZW5hYmxlZCwgYWxsIGFwcGxpY2F0aW9uIHBlcnNpc3RlbnQgZGF0YQorICAgIC8vIHNob3VsZCBnbyBoZXJlIGluc3RlYWQuCisgICAgZmluYWwgRmlsZSBtU2VjdXJlQXBwRGF0YURpcjsKKwogICAgIC8vIFRoaXMgaXMgdGhlIG9iamVjdCBtb25pdG9yaW5nIHRoZSBmcmFtZXdvcmsgZGlyLgogICAgIGZpbmFsIEZpbGVPYnNlcnZlciBtRnJhbWV3b3JrSW5zdGFsbE9ic2VydmVyOwogCkBAIC03NjgsNiArNzc0LDcgQEAKIAogICAgICAgICAgICAgRmlsZSBkYXRhRGlyID0gRW52aXJvbm1lbnQuZ2V0RGF0YURpcmVjdG9yeSgpOwogICAgICAgICAgICAgbUFwcERhdGFEaXIgPSBuZXcgRmlsZShkYXRhRGlyLCAiZGF0YSIpOworICAgICAgICAgICAgbVNlY3VyZUFwcERhdGFEaXIgPSBuZXcgRmlsZShkYXRhRGlyLCAic2VjdXJlL2RhdGEiKTsKICAgICAgICAgICAgIG1Ecm1BcHBQcml2YXRlSW5zdGFsbERpciA9IG5ldyBGaWxlKGRhdGFEaXIsICJhcHAtcHJpdmF0ZSIpOwogCiAgICAgICAgICAgICBpZiAobUluc3RhbGxlciA9PSBudWxsKSB7CkBAIC03NzcsNiArNzg0LDcgQEAKICAgICAgICAgICAgICAgICBGaWxlIG1pc2NEaXIgPSBuZXcgRmlsZShkYXRhRGlyLCAibWlzYyIpOwogICAgICAgICAgICAgICAgIG1pc2NEaXIubWtkaXJzKCk7CiAgICAgICAgICAgICAgICAgbUFwcERhdGFEaXIubWtkaXJzKCk7CisgICAgICAgICAgICAgICAgbVNlY3VyZUFwcERhdGFEaXIubWtkaXJzKCk7CiAgICAgICAgICAgICAgICAgbURybUFwcFByaXZhdGVJbnN0YWxsRGlyLm1rZGlycygpOwogICAgICAgICAgICAgfQogCkBAIC05MzcsNyArOTQ1LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgbm8gbG9uZ2VyIGV4aXN0czsgd2lwaW5nIGl0cyBkYXRhIjsKICAgICAgICAgICAgICAgICAgICAgcmVwb3J0U2V0dGluZ3NQcm9ibGVtKExvZy5XQVJOLCBtc2cpOwogICAgICAgICAgICAgICAgICAgICBpZiAobUluc3RhbGxlciAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtSW5zdGFsbGVyLnJlbW92ZShwcy5uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFhYWCBob3cgdG8gc2V0IHVzZUVuY3J5cHRlZEZTRGlyIGZvciBwYWNrYWdlcyB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcmUgbm90IGVuY3J5cHRlZD8KKyAgICAgICAgICAgICAgICAgICAgICAgIG1JbnN0YWxsZXIucmVtb3ZlKHBzLm5hbWUsIHRydWUpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMTAyMCw3ICsxMDMwLDggQEAKICAgICB2b2lkIGNsZWFudXBJbnN0YWxsRmFpbGVkUGFja2FnZShQYWNrYWdlU2V0dGluZyBwcykgewogICAgICAgICBTbG9nLmkoVEFHLCAiQ2xlYW5pbmcgdXAgaW5jb21wbGV0ZWx5IGluc3RhbGxlZCBhcHA6ICIgKyBwcy5uYW1lKTsKICAgICAgICAgaWYgKG1JbnN0YWxsZXIgIT0gbnVsbCkgewotICAgICAgICAgICAgaW50IHJldENvZGUgPSBtSW5zdGFsbGVyLnJlbW92ZShwcy5uYW1lKTsKKyAgICAgICAgICAgIGJvb2xlYW4gdXNlU2VjdXJlRlMgPSB1c2VFbmNyeXB0ZWRGaWxlc3lzdGVtRm9yUGFja2FnZShwcy5wa2cpOworICAgICAgICAgICAgaW50IHJldENvZGUgPSBtSW5zdGFsbGVyLnJlbW92ZShwcy5uYW1lLCB1c2VTZWN1cmVGUyk7CiAgICAgICAgICAgICBpZiAocmV0Q29kZSA8IDApIHsKICAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiQ291bGRuJ3QgcmVtb3ZlIGFwcCBkYXRhIGRpcmVjdG9yeSBmb3IgcGFja2FnZTogIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBwcy5uYW1lICsgIiwgcmV0Y29kZT0iICsgcmV0Q29kZSk7CkBAIC0xNzE4LDYgKzE3MjksNyBAQAogICAgIAogICAgIHN0YXRpYyBib29sZWFuIGNvbXBhcmVQZXJtaXNzaW9uSW5mb3MoUGVybWlzc2lvbkluZm8gcGkxLCBQZXJtaXNzaW9uSW5mbyBwaTIpIHsKICAgICAgICAgaWYgKHBpMS5pY29uICE9IHBpMi5pY29uKSByZXR1cm4gZmFsc2U7CisgICAgICAgIGlmIChwaTEubG9nbyAhPSBwaTIubG9nbykgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAocGkxLnByb3RlY3Rpb25MZXZlbCAhPSBwaTIucHJvdGVjdGlvbkxldmVsKSByZXR1cm4gZmFsc2U7CiAgICAgICAgIGlmICghY29tcGFyZVN0cmluZ3MocGkxLm5hbWUsIHBpMi5uYW1lKSkgcmV0dXJuIGZhbHNlOwogICAgICAgICBpZiAoIWNvbXBhcmVTdHJpbmdzKHBpMS5ub25Mb2NhbGl6ZWRMYWJlbCwgcGkyLm5vbkxvY2FsaXplZExhYmVsKSkgcmV0dXJuIGZhbHNlOwpAQCAtMjM2Myw3ICsyMzc1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICYmIChwLmFwcGxpY2F0aW9uSW5mby5mbGFncyZBcHBsaWNhdGlvbkluZm8uRkxBR19QRVJTSVNURU5UKSAhPSAwCiAgICAgICAgICAgICAgICAgICAgICAgICAmJiAoIW1TYWZlTW9kZSB8fCAocC5hcHBsaWNhdGlvbkluZm8uZmxhZ3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkFwcGxpY2F0aW9uSW5mby5GTEFHX1NZU1RFTSkgIT0gMCkpIHsKLSAgICAgICAgICAgICAgICAgICAgZmluYWxMaXN0LmFkZChwLmFwcGxpY2F0aW9uSW5mbyk7CisgICAgICAgICAgICAgICAgICAgIGZpbmFsTGlzdC5hZGQoUGFja2FnZVBhcnNlci5nZW5lcmF0ZUFwcGxpY2F0aW9uSW5mbyhwLCBmbGFncykpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjc0Myw2ICsyNzU1LDExIEBACiAKICAgICAgICAgcmV0dXJuIHBlcmZvcm1lZCA/IERFWF9PUFRfUEVSRk9STUVEIDogREVYX09QVF9TS0lQUEVEOwogICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGJvb2xlYW4gdXNlRW5jcnlwdGVkRmlsZXN5c3RlbUZvclBhY2thZ2UoUGFja2FnZVBhcnNlci5QYWNrYWdlIHBrZykgeworICAgICAgICByZXR1cm4gRW52aXJvbm1lbnQuaXNFbmNyeXB0ZWRGaWxlc3lzdGVtRW5hYmxlZCgpICYmCisgICAgICAgICAgICAgICAgKChwa2cuYXBwbGljYXRpb25JbmZvLmZsYWdzICYgQXBwbGljYXRpb25JbmZvLkZMQUdfTkVWRVJfRU5DUllQVCkgPT0gMCk7CisgICAgfQogICAgIAogICAgIHByaXZhdGUgYm9vbGVhbiB2ZXJpZnlQYWNrYWdlVXBkYXRlKFBhY2thZ2VTZXR0aW5nIG9sZFBrZywgUGFja2FnZVBhcnNlci5QYWNrYWdlIG5ld1BrZykgewogICAgICAgICBpZiAoKG9sZFBrZy5wa2dGbGFncyZBcHBsaWNhdGlvbkluZm8uRkxBR19TWVNURU0pID09IDApIHsKQEAgLTI3NjAsNyArMjc3NywxNCBAQAogICAgIH0KIAogICAgIHByaXZhdGUgRmlsZSBnZXREYXRhUGF0aEZvclBhY2thZ2UoUGFja2FnZVBhcnNlci5QYWNrYWdlIHBrZykgewotICAgICAgICByZXR1cm4gbmV3IEZpbGUobUFwcERhdGFEaXIsIHBrZy5wYWNrYWdlTmFtZSk7CisgICAgICAgIGJvb2xlYW4gdXNlRW5jcnlwdGVkRlNEaXIgPSB1c2VFbmNyeXB0ZWRGaWxlc3lzdGVtRm9yUGFja2FnZShwa2cpOworICAgICAgICBGaWxlIGRhdGFQYXRoOworICAgICAgICBpZiAodXNlRW5jcnlwdGVkRlNEaXIpIHsKKyAgICAgICAgICAgIGRhdGFQYXRoID0gbmV3IEZpbGUobVNlY3VyZUFwcERhdGFEaXIsIHBrZy5wYWNrYWdlTmFtZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBkYXRhUGF0aCA9IG5ldyBGaWxlKG1BcHBEYXRhRGlyLCBwa2cucGFja2FnZU5hbWUpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBkYXRhUGF0aDsKICAgICB9CiAgICAgCiAgICAgcHJpdmF0ZSBQYWNrYWdlUGFyc2VyLlBhY2thZ2Ugc2NhblBhY2thZ2VMSShQYWNrYWdlUGFyc2VyLlBhY2thZ2UgcGtnLApAQCAtMzExMSw2ICszMTM1LDcgQEAKICAgICAgICAgICAgIHBrZy5hcHBsaWNhdGlvbkluZm8uZGF0YURpciA9IGRhdGFQYXRoLmdldFBhdGgoKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBub3JtYWwgcGFja2FnZSwgbmVlZCB0byBtYWtlIGl0cyBkYXRhIGRpcmVjdG9yeS4KKyAgICAgICAgICAgIGJvb2xlYW4gdXNlRW5jcnlwdGVkRlNEaXIgPSB1c2VFbmNyeXB0ZWRGaWxlc3lzdGVtRm9yUGFja2FnZShwa2cpOwogICAgICAgICAgICAgZGF0YVBhdGggPSBnZXREYXRhUGF0aEZvclBhY2thZ2UocGtnKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgYm9vbGVhbiB1aWRFcnJvciA9IGZhbHNlOwpAQCAtMzEyNyw3ICszMTUyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBzeXN0ZW0gYXBwLCB3ZSBjYW4gYXQgbGVhc3QgZGVsZXRlIGl0cwogICAgICAgICAgICAgICAgICAgICAgICAgLy8gY3VycmVudCBkYXRhIHNvIHRoZSBhcHBsaWNhdGlvbiB3aWxsIHN0aWxsIHdvcmsuCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobUluc3RhbGxlciAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJldCA9IG1JbnN0YWxsZXIucmVtb3ZlKHBrZ05hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCByZXQgPSBtSW5zdGFsbGVyLnJlbW92ZShwa2dOYW1lLCB1c2VFbmNyeXB0ZWRGU0Rpcik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJldCA+PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIE9sZCBkYXRhIGdvbmUhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBtc2cgPSAiU3lzdGVtIHBhY2thZ2UgIiArIHBrZy5wYWNrYWdlTmFtZQpAQCAtMzEzOCw3ICszMTYzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVjb3ZlcmVkID0gdHJ1ZTsKIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBbmQgbm93IHJlLWluc3RhbGwgdGhlIGFwcC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gbUluc3RhbGxlci5pbnN0YWxsKHBrZ05hbWUsIHBrZy5hcHBsaWNhdGlvbkluZm8udWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBtSW5zdGFsbGVyLmluc3RhbGwocGtnTmFtZSwgdXNlRW5jcnlwdGVkRlNEaXIsIHBrZy5hcHBsaWNhdGlvbkluZm8udWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBrZy5hcHBsaWNhdGlvbkluZm8udWlkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJldCA9PSAtMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQWNrIHNob3VsZCBub3QgaGFwcGVuIQpAQCAtMzE3OCw3ICszMjAzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgTG9nLnYoVEFHLCAiV2FudCB0aGlzIGRhdGEgZGlyOiAiICsgZGF0YVBhdGgpOwogICAgICAgICAgICAgICAgIC8vaW52b2tlIGluc3RhbGxlciB0byBkbyB0aGUgYWN0dWFsIGluc3RhbGxhdGlvbgogICAgICAgICAgICAgICAgIGlmIChtSW5zdGFsbGVyICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgaW50IHJldCA9IG1JbnN0YWxsZXIuaW5zdGFsbChwa2dOYW1lLCBwa2cuYXBwbGljYXRpb25JbmZvLnVpZCwKKyAgICAgICAgICAgICAgICAgICAgaW50IHJldCA9IG1JbnN0YWxsZXIuaW5zdGFsbChwa2dOYW1lLCB1c2VFbmNyeXB0ZWRGU0RpciwgcGtnLmFwcGxpY2F0aW9uSW5mby51aWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGtnLmFwcGxpY2F0aW9uSW5mby51aWQpOwogICAgICAgICAgICAgICAgICAgICBpZihyZXQgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFcnJvciBmcm9tIGluc3RhbGxlcgpAQCAtMzYyMywyMSArMzY0OCwxOSBAQAogCiAgICAgICAgICAgICBpbnN0YWxsZWROYXRpdmVMaWJyYXJpZXMgPSB0cnVlOwogCisgICAgICAgICAgICAvLyBBbHdheXMgZXh0cmFjdCB0aGUgc2hhcmVkIGxpYnJhcnkKICAgICAgICAgICAgIFN0cmluZyBzaGFyZWRMaWJyYXJ5RmlsZVBhdGggPSBzaGFyZWRMaWJyYXJ5RGlyLmdldFBhdGgoKSArCiAgICAgICAgICAgICAgICAgRmlsZS5zZXBhcmF0b3IgKyBsaWJGaWxlTmFtZTsKICAgICAgICAgICAgIEZpbGUgc2hhcmVkTGlicmFyeUZpbGUgPSBuZXcgRmlsZShzaGFyZWRMaWJyYXJ5RmlsZVBhdGgpOwotICAgICAgICAgICAgaWYgKCEgc2hhcmVkTGlicmFyeUZpbGUuZXhpc3RzKCkgfHwKLSAgICAgICAgICAgICAgICBzaGFyZWRMaWJyYXJ5RmlsZS5sZW5ndGgoKSAhPSBlbnRyeS5nZXRTaXplKCkgfHwKLSAgICAgICAgICAgICAgICBzaGFyZWRMaWJyYXJ5RmlsZS5sYXN0TW9kaWZpZWQoKSAhPSBlbnRyeS5nZXRUaW1lKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoQ29uZmlnLkxPR0QpIHsKLSAgICAgICAgICAgICAgICAgICAgTG9nLmQoVEFHLCAiQ2FjaGluZyBzaGFyZWQgbGliICIgKyBlbnRyeS5nZXROYW1lKCkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAobUluc3RhbGxlciA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNoYXJlZExpYnJhcnlEaXIubWtkaXIoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY2FjaGVOYXRpdmVCaW5hcnlMSShwa2csIHppcEZpbGUsIGVudHJ5LCBzaGFyZWRMaWJyYXJ5RGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVkTGlicmFyeUZpbGUpOworCisgICAgICAgICAgICBpZiAoQ29uZmlnLkxPR0QpIHsKKyAgICAgICAgICAgICAgICBMb2cuZChUQUcsICJDYWNoaW5nIHNoYXJlZCBsaWIgIiArIGVudHJ5LmdldE5hbWUoKSk7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobUluc3RhbGxlciA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgc2hhcmVkTGlicmFyeURpci5ta2RpcigpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FjaGVOYXRpdmVCaW5hcnlMSShwa2csIHppcEZpbGUsIGVudHJ5LCBzaGFyZWRMaWJyYXJ5RGlyLAorICAgICAgICAgICAgICAgICAgICBzaGFyZWRMaWJyYXJ5RmlsZSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKCFoYXNOYXRpdmVMaWJyYXJpZXMpCiAgICAgICAgICAgICByZXR1cm4gUEFDS0FHRV9JTlNUQUxMX05BVElWRV9OT19MSUJSQVJJRVM7CkBAIC0zNjc5LDE4ICszNzAyLDE2IEBACiAgICAgICAgICAgICBTdHJpbmcgaW5zdGFsbEdkYlNlcnZlclBhdGggPSBpbnN0YWxsR2RiU2VydmVyRGlyLmdldFBhdGgoKSArCiAgICAgICAgICAgICAgICAgIi8iICsgR0RCU0VSVkVSOwogICAgICAgICAgICAgRmlsZSBpbnN0YWxsR2RiU2VydmVyRmlsZSA9IG5ldyBGaWxlKGluc3RhbGxHZGJTZXJ2ZXJQYXRoKTsKLSAgICAgICAgICAgIGlmICghIGluc3RhbGxHZGJTZXJ2ZXJGaWxlLmV4aXN0cygpIHx8Ci0gICAgICAgICAgICAgICAgaW5zdGFsbEdkYlNlcnZlckZpbGUubGVuZ3RoKCkgIT0gZW50cnkuZ2V0U2l6ZSgpIHx8Ci0gICAgICAgICAgICAgICAgaW5zdGFsbEdkYlNlcnZlckZpbGUubGFzdE1vZGlmaWVkKCkgIT0gZW50cnkuZ2V0VGltZSgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKENvbmZpZy5MT0dEKSB7Ci0gICAgICAgICAgICAgICAgICAgIExvZy5kKFRBRywgIkNhY2hpbmcgZ2Ric2VydmVyICIgKyBlbnRyeS5nZXROYW1lKCkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAobUluc3RhbGxlciA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIGluc3RhbGxHZGJTZXJ2ZXJEaXIubWtkaXIoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgY2FjaGVOYXRpdmVCaW5hcnlMSShwa2csIHppcEZpbGUsIGVudHJ5LCBpbnN0YWxsR2RiU2VydmVyRGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbEdkYlNlcnZlckZpbGUpOworCisgICAgICAgICAgICBpZiAoQ29uZmlnLkxPR0QpIHsKKyAgICAgICAgICAgICAgICBMb2cuZChUQUcsICJDYWNoaW5nIGdkYnNlcnZlciAiICsgZW50cnkuZ2V0TmFtZSgpKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtSW5zdGFsbGVyID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBpbnN0YWxsR2RiU2VydmVyRGlyLm1rZGlyKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYWNoZU5hdGl2ZUJpbmFyeUxJKHBrZywgemlwRmlsZSwgZW50cnksIGluc3RhbGxHZGJTZXJ2ZXJEaXIsCisgICAgICAgICAgICAgICAgICAgIGluc3RhbGxHZGJTZXJ2ZXJGaWxlKTsKKwogICAgICAgICAgICAgcmV0dXJuIFBBQ0tBR0VfSU5TVEFMTF9OQVRJVkVfRk9VTkRfTElCUkFSSUVTOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBQQUNLQUdFX0lOU1RBTExfTkFUSVZFX05PX0xJQlJBUklFUzsKQEAgLTM3MDQsNiArMzcyNSwxNiBAQAogICAgIC8vIG9uZSBpZiByby5wcm9kdWN0LmNwdS5hYmkyIGlzIGRlZmluZWQuCiAgICAgLy8KICAgICBwcml2YXRlIGludCBjYWNoZVBhY2thZ2VTaGFyZWRMaWJzTEkoUGFja2FnZVBhcnNlci5QYWNrYWdlIHBrZywgRmlsZSBzY2FuRmlsZSkgeworICAgICAgICAvLyBSZW1vdmUgYWxsIG5hdGl2ZSBiaW5hcmllcyBmcm9tIGEgZGlyZWN0b3J5LiBUaGlzIGlzIHVzZWQgd2hlbiB1cGdyYWRpbmcKKyAgICAgICAgLy8gYSBwYWNrYWdlOiBpbiBjYXNlIHRoZSBuZXcgLmFwayBkb2Vzbid0IGNvbnRhaW4gYSBuYXRpdmUgYmluYXJ5IHRoYXQgd2FzCisgICAgICAgIC8vIGluIHRoZSBvbGQgb25lIChhbmQgdGh1cyBpbnN0YWxsZWQpLCB3ZSBuZWVkIHRvIHJlbW92ZSBpdCBmcm9tCisgICAgICAgIC8vIC9kYXRhL2RhdGEvPGFwcG5hbWU+L2xpYgorICAgICAgICAvLworICAgICAgICAvLyBUaGUgc2ltcGxlc3Qgd2F5IHRvIGRvIHRoYXQgaXMgdG8gcmVtb3ZlIGFsbCBmaWxlcyBpbiB0aGlzIGRpcmVjdG9yeSwKKyAgICAgICAgLy8gc2luY2UgaXQgaXMgb3duZWQgYnkgInN5c3RlbSIsIGFwcGxpY2F0aW9ucyBhcmUgbm90IHN1cHBvc2VkIHRvIHdyaXRlCisgICAgICAgIC8vIGFueXRoaW5nIHRoZXJlLgorICAgICAgICByZW1vdmVOYXRpdmVCaW5hcmllc0xJKHBrZyk7CisKICAgICAgICAgU3RyaW5nIGNwdUFiaSA9IEJ1aWxkLkNQVV9BQkk7CiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBpbnQgcmVzdWx0ID0gY2FjaGVQYWNrYWdlU2hhcmVkTGlic0ZvckFiaUxJKHBrZywgc2NhbkZpbGUsIGNwdUFiaSk7CkBAIC00NTUyLDYgKzQ1ODMsOCBAQAogICAgICAgICB9CiAgICAgfTsKIAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gREVCVUdfT0JCID0gZmFsc2U7CisKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCB2b2lkIHNlbmRQYWNrYWdlQnJvYWRjYXN0KFN0cmluZyBhY3Rpb24sIFN0cmluZyBwa2csCiAgICAgICAgICAgICBCdW5kbGUgZXh0cmFzLCBJSW50ZW50UmVjZWl2ZXIgZmluaXNoZWRSZWNlaXZlcikgewogICAgICAgICBJQWN0aXZpdHlNYW5hZ2VyIGFtID0gQWN0aXZpdHlNYW5hZ2VyTmF0aXZlLmdldERlZmF1bHQoKTsKQEAgLTQ3MjYsNiArNDc1OSwyOSBAQAogICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZShtc2cpOwogICAgIH0KIAorICAgIHB1YmxpYyB2b2lkIHNldFBhY2thZ2VPYmJQYXRoKFN0cmluZyBwYWNrYWdlTmFtZSwgU3RyaW5nIHBhdGgpIHsKKyAgICAgICAgaWYgKERFQlVHX09CQikKKyAgICAgICAgICAgIExvZy52KFRBRywgIlNldHRpbmcgLm9iYiBwYXRoIGZvciAiICsgcGFja2FnZU5hbWUgKyAiIHRvOiAiICsgcGF0aCk7CisgICAgICAgIFBhY2thZ2VTZXR0aW5nIHBrZ1NldHRpbmc7CisgICAgICAgIGZpbmFsIGludCB1aWQgPSBCaW5kZXIuZ2V0Q2FsbGluZ1VpZCgpOworICAgICAgICBmaW5hbCBpbnQgcGVybWlzc2lvbiA9IG1Db250ZXh0LmNoZWNrQ2FsbGluZ1Blcm1pc3Npb24oCisgICAgICAgICAgICAgICAgYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uLklOU1RBTExfUEFDS0FHRVMpOworICAgICAgICBmaW5hbCBib29sZWFuIGFsbG93ZWRCeVBlcm1pc3Npb24gPSAocGVybWlzc2lvbiA9PSBQYWNrYWdlTWFuYWdlci5QRVJNSVNTSU9OX0dSQU5URUQpOworICAgICAgICBzeW5jaHJvbml6ZWQgKG1QYWNrYWdlcykgeworICAgICAgICAgICAgcGtnU2V0dGluZyA9IG1TZXR0aW5ncy5tUGFja2FnZXMuZ2V0KHBhY2thZ2VOYW1lKTsKKyAgICAgICAgICAgIGlmIChwa2dTZXR0aW5nID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJVbmtub3duIHBhY2thZ2U6ICIgKyBwYWNrYWdlTmFtZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIWFsbG93ZWRCeVBlcm1pc3Npb24gJiYgKHVpZCAhPSBwa2dTZXR0aW5nLnVzZXJJZCkpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgU2VjdXJpdHlFeGNlcHRpb24oIlBlcm1pc3Npb24gZGVuaWFsOiBhdHRlbXB0IHRvIHNldCAub2JiIGZpbGUgZnJvbSBwaWQ9IgorICAgICAgICAgICAgICAgICAgICAgICAgKyBCaW5kZXIuZ2V0Q2FsbGluZ1BpZCgpICsgIiwgdWlkPSIgKyB1aWQgKyAiLCBwYWNrYWdlIHVpZD0iCisgICAgICAgICAgICAgICAgICAgICAgICArIHBrZ1NldHRpbmcudXNlcklkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHBrZ1NldHRpbmcub2JiUGF0aFN0cmluZyA9IHBhdGg7CisgICAgICAgICAgICBtU2V0dGluZ3Mud3JpdGVMUCgpOworICAgICAgICB9CisgICAgfQorCiAgICAgcHJpdmF0ZSB2b2lkIHByb2Nlc3NQZW5kaW5nSW5zdGFsbChmaW5hbCBJbnN0YWxsQXJncyBhcmdzLCBmaW5hbCBpbnQgY3VycmVudFN0YXR1cykgewogICAgICAgICAvLyBRdWV1ZSB1cCBhbiBhc3luYyBvcGVyYXRpb24gc2luY2UgdGhlIHBhY2thZ2UgaW5zdGFsbGF0aW9uIG1heSB0YWtlIGEgbGl0dGxlIHdoaWxlLgogICAgICAgICBtSGFuZGxlci5wb3N0KG5ldyBSdW5uYWJsZSgpIHsKQEAgLTYyMDksOCArNjI2NSw5IEBACiAgICAgICAgICAgICBkZWxldGVkUHMgPSBtU2V0dGluZ3MubVBhY2thZ2VzLmdldChwYWNrYWdlTmFtZSk7CiAgICAgICAgIH0KICAgICAgICAgaWYgKChmbGFncyZQYWNrYWdlTWFuYWdlci5ET05UX0RFTEVURV9EQVRBKSA9PSAwKSB7CisgICAgICAgICAgICBib29sZWFuIHVzZUVuY3J5cHRlZEZTRGlyID0gdXNlRW5jcnlwdGVkRmlsZXN5c3RlbUZvclBhY2thZ2UocCk7CiAgICAgICAgICAgICBpZiAobUluc3RhbGxlciAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgaW50IHJldENvZGUgPSBtSW5zdGFsbGVyLnJlbW92ZShwYWNrYWdlTmFtZSk7CisgICAgICAgICAgICAgICAgaW50IHJldENvZGUgPSBtSW5zdGFsbGVyLnJlbW92ZShwYWNrYWdlTmFtZSwgdXNlRW5jcnlwdGVkRlNEaXIpOwogICAgICAgICAgICAgICAgIGlmIChyZXRDb2RlIDwgMCkgewogICAgICAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiQ291bGRuJ3QgcmVtb3ZlIGFwcCBkYXRhIG9yIGNhY2hlIGRpcmVjdG9yeSBmb3IgcGFja2FnZTogIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgcGFja2FnZU5hbWUgKyAiLCByZXRjb2RlPSIgKyByZXRDb2RlKTsKQEAgLTY0NTEsNiArNjUwOCw3IEBACiAgICAgICAgICAgICAgICAgcCA9IHBzLnBrZzsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICBib29sZWFuIHVzZUVuY3J5cHRlZEZTRGlyID0gZmFsc2U7CiAKICAgICAgICAgaWYoIWRhdGFPbmx5KSB7CiAgICAgICAgICAgICAvL25lZWQgdG8gY2hlY2sgdGhpcyBvbmx5IGZvciBmdWxseSBpbnN0YWxsZWQgYXBwbGljYXRpb25zCkBAIC02NDYzLDkgKzY1MjEsMTAgQEAKICAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiUGFja2FnZSAiICsgcGFja2FnZU5hbWUgKyAiIGhhcyBubyBhcHBsaWNhdGlvbkluZm8uIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgdXNlRW5jcnlwdGVkRlNEaXIgPSB1c2VFbmNyeXB0ZWRGaWxlc3lzdGVtRm9yUGFja2FnZShwKTsKICAgICAgICAgfQogICAgICAgICBpZiAobUluc3RhbGxlciAhPSBudWxsKSB7Ci0gICAgICAgICAgICBpbnQgcmV0Q29kZSA9IG1JbnN0YWxsZXIuY2xlYXJVc2VyRGF0YShwYWNrYWdlTmFtZSk7CisgICAgICAgICAgICBpbnQgcmV0Q29kZSA9IG1JbnN0YWxsZXIuY2xlYXJVc2VyRGF0YShwYWNrYWdlTmFtZSwgdXNlRW5jcnlwdGVkRlNEaXIpOwogICAgICAgICAgICAgaWYgKHJldENvZGUgPCAwKSB7CiAgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIkNvdWxkbid0IHJlbW92ZSBjYWNoZSBmaWxlcyBmb3IgcGFja2FnZTogIgogICAgICAgICAgICAgICAgICAgICAgICAgKyBwYWNrYWdlTmFtZSk7CkBAIC02NTE2LDggKzY1NzUsOSBAQAogICAgICAgICAgICAgU2xvZy53KFRBRywgIlBhY2thZ2UgIiArIHBhY2thZ2VOYW1lICsgIiBoYXMgbm8gYXBwbGljYXRpb25JbmZvLiIpOwogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CisgICAgICAgIGJvb2xlYW4gdXNlRW5jcnlwdGVkRlNEaXIgPSB1c2VFbmNyeXB0ZWRGaWxlc3lzdGVtRm9yUGFja2FnZShwKTsKICAgICAgICAgaWYgKG1JbnN0YWxsZXIgIT0gbnVsbCkgewotICAgICAgICAgICAgaW50IHJldENvZGUgPSBtSW5zdGFsbGVyLmRlbGV0ZUNhY2hlRmlsZXMocGFja2FnZU5hbWUpOworICAgICAgICAgICAgaW50IHJldENvZGUgPSBtSW5zdGFsbGVyLmRlbGV0ZUNhY2hlRmlsZXMocGFja2FnZU5hbWUsIHVzZUVuY3J5cHRlZEZTRGlyKTsKICAgICAgICAgICAgIGlmIChyZXRDb2RlIDwgMCkgewogICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsICJDb3VsZG4ndCByZW1vdmUgY2FjaGUgZmlsZXMgZm9yIHBhY2thZ2U6ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgcGFja2FnZU5hbWUpOwpAQCAtNjU3OSw5ICs2NjM5LDEwIEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBwdWJsaWNTcmNEaXIgPSBpc0ZvcndhcmRMb2NrZWQocCkgPyBhcHBsaWNhdGlvbkluZm8ucHVibGljU291cmNlRGlyIDogbnVsbDsKICAgICAgICAgfQorICAgICAgICBib29sZWFuIHVzZUVuY3J5cHRlZEZTRGlyID0gdXNlRW5jcnlwdGVkRmlsZXN5c3RlbUZvclBhY2thZ2UocCk7CiAgICAgICAgIGlmIChtSW5zdGFsbGVyICE9IG51bGwpIHsKICAgICAgICAgICAgIGludCByZXMgPSBtSW5zdGFsbGVyLmdldFNpemVJbmZvKHBhY2thZ2VOYW1lLCBwLm1QYXRoLAotICAgICAgICAgICAgICAgICAgICBwdWJsaWNTcmNEaXIsIHBTdGF0cyk7CisgICAgICAgICAgICAgICAgICAgIHB1YmxpY1NyY0RpciwgcFN0YXRzLCB1c2VFbmNyeXB0ZWRGU0Rpcik7CiAgICAgICAgICAgICBpZiAocmVzIDwgMCkgewogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0gZWxzZSB7CkBAIC03MDgyLDEyICs3MTQzLDE5IEBACiAgICAgICAgICAgICAgICAgICAgIHB3LnByaW50KCIgICAgcGtnPSIpOyBwdy5wcmludGxuKHBzLnBrZyk7CiAgICAgICAgICAgICAgICAgICAgIHB3LnByaW50KCIgICAgY29kZVBhdGg9Iik7IHB3LnByaW50bG4ocHMuY29kZVBhdGhTdHJpbmcpOwogICAgICAgICAgICAgICAgICAgICBwdy5wcmludCgiICAgIHJlc291cmNlUGF0aD0iKTsgcHcucHJpbnRsbihwcy5yZXNvdXJjZVBhdGhTdHJpbmcpOworICAgICAgICAgICAgICAgICAgICBwdy5wcmludCgiICAgIG9iYlBhdGg9Iik7IHB3LnByaW50bG4ocHMub2JiUGF0aFN0cmluZyk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChwcy5wa2cgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoIiAgICBkYXRhRGlyPSIpOyBwdy5wcmludGxuKHBzLnBrZy5hcHBsaWNhdGlvbkluZm8uZGF0YURpcik7CiAgICAgICAgICAgICAgICAgICAgICAgICBwdy5wcmludCgiICAgIHRhcmdldFNkaz0iKTsgcHcucHJpbnRsbihwcy5wa2cuYXBwbGljYXRpb25JbmZvLnRhcmdldFNka1ZlcnNpb24pOwogICAgICAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoIiAgICBzdXBwb3J0c1NjcmVlbnM9WyIpOwogICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBmaXJzdCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHBzLnBrZy5hcHBsaWNhdGlvbkluZm8uZmxhZ3MgJgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcHBsaWNhdGlvbkluZm8uRkxBR19TVVBQT1JUU19TTUFMTF9TQ1JFRU5TKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmaXJzdCkgcHcucHJpbnQoIiwgIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3QgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdy5wcmludCgic21hbGwiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgocHMucGtnLmFwcGxpY2F0aW9uSW5mby5mbGFncyAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFwcGxpY2F0aW9uSW5mby5GTEFHX1NVUFBPUlRTX05PUk1BTF9TQ1JFRU5TKSAhPSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmaXJzdCkgcHcucHJpbnQoIiwgIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3QgPSBmYWxzZTsKQEAgLTcxMDAsMTAgKzcxNjgsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdy5wcmludCgibGFyZ2UiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgocHMucGtnLmFwcGxpY2F0aW9uSW5mby5mbGFncyAmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFwcGxpY2F0aW9uSW5mby5GTEFHX1NVUFBPUlRTX1NNQUxMX1NDUkVFTlMpICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBwbGljYXRpb25JbmZvLkZMQUdfU1VQUE9SVFNfWExBUkdFX1NDUkVFTlMpICE9IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWZpcnN0KSBwdy5wcmludCgiLCAiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdCA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB3LnByaW50KCJzbWFsbCIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB3LnByaW50KCJ4bGFyZ2UiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgocHMucGtnLmFwcGxpY2F0aW9uSW5mby5mbGFncyAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFwcGxpY2F0aW9uSW5mby5GTEFHX1JFU0laRUFCTEVfRk9SX1NDUkVFTlMpICE9IDApIHsKQEAgLTc2MjcsNyArNzY5NSw4IEBACiAgICAgICAgICAgICB0aGlzLnBrZ0ZsYWdzID0gcGtnRmxhZ3MgJiAoCiAgICAgICAgICAgICAgICAgICAgIEFwcGxpY2F0aW9uSW5mby5GTEFHX1NZU1RFTSB8CiAgICAgICAgICAgICAgICAgICAgIEFwcGxpY2F0aW9uSW5mby5GTEFHX0ZPUldBUkRfTE9DSyB8Ci0gICAgICAgICAgICAgICAgICAgIEFwcGxpY2F0aW9uSW5mby5GTEFHX0VYVEVSTkFMX1NUT1JBR0UpOworICAgICAgICAgICAgICAgICAgICBBcHBsaWNhdGlvbkluZm8uRkxBR19FWFRFUk5BTF9TVE9SQUdFIHwKKyAgICAgICAgICAgICAgICAgICAgQXBwbGljYXRpb25JbmZvLkZMQUdfTkVWRVJfRU5DUllQVCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTc2NDEsNiArNzcxMCw3IEBACiAgICAgICAgIFN0cmluZyBjb2RlUGF0aFN0cmluZzsKICAgICAgICAgRmlsZSByZXNvdXJjZVBhdGg7CiAgICAgICAgIFN0cmluZyByZXNvdXJjZVBhdGhTdHJpbmc7CisgICAgICAgIFN0cmluZyBvYmJQYXRoU3RyaW5nOwogICAgICAgICBwcml2YXRlIGxvbmcgdGltZVN0YW1wOwogICAgICAgICBwcml2YXRlIFN0cmluZyB0aW1lU3RhbXBTdHJpbmcgPSAiMCI7CiAgICAgICAgIGludCB2ZXJzaW9uQ29kZTsKQEAgLTc4OTQsMTEgKzc5NjQsMTcgQEAKICAgICAgICAgICAgIEZpbGUgZGF0YURpciA9IEVudmlyb25tZW50LmdldERhdGFEaXJlY3RvcnkoKTsKICAgICAgICAgICAgIEZpbGUgc3lzdGVtRGlyID0gbmV3IEZpbGUoZGF0YURpciwgInN5c3RlbSIpOwogICAgICAgICAgICAgLy8gVE9ETyhvYW0pOiBUaGlzIHNlY3VyZSBkaXIgY3JlYXRpb24gbmVlZHMgdG8gYmUgbW92ZWQgc29tZXdoZXJlIGVsc2UgKGxhdGVyKQorICAgICAgICAgICAgRmlsZSBzeXN0ZW1TZWN1cmVEaXIgPSBuZXcgRmlsZShkYXRhRGlyLCAic2VjdXJlL3N5c3RlbSIpOwogICAgICAgICAgICAgc3lzdGVtRGlyLm1rZGlycygpOworICAgICAgICAgICAgc3lzdGVtU2VjdXJlRGlyLm1rZGlycygpOwogICAgICAgICAgICAgRmlsZVV0aWxzLnNldFBlcm1pc3Npb25zKHN5c3RlbURpci50b1N0cmluZygpLAogICAgICAgICAgICAgICAgICAgICBGaWxlVXRpbHMuU19JUldYVXxGaWxlVXRpbHMuU19JUldYRwogICAgICAgICAgICAgICAgICAgICB8RmlsZVV0aWxzLlNfSVJPVEh8RmlsZVV0aWxzLlNfSVhPVEgsCiAgICAgICAgICAgICAgICAgICAgIC0xLCAtMSk7CisgICAgICAgICAgICBGaWxlVXRpbHMuc2V0UGVybWlzc2lvbnMoc3lzdGVtU2VjdXJlRGlyLnRvU3RyaW5nKCksCisgICAgICAgICAgICAgICAgICAgIEZpbGVVdGlscy5TX0lSV1hVfEZpbGVVdGlscy5TX0lSV1hHCisgICAgICAgICAgICAgICAgICAgIHxGaWxlVXRpbHMuU19JUk9USHxGaWxlVXRpbHMuU19JWE9USCwKKyAgICAgICAgICAgICAgICAgICAgLTEsIC0xKTsKICAgICAgICAgICAgIG1TZXR0aW5nc0ZpbGVuYW1lID0gbmV3IEZpbGUoc3lzdGVtRGlyLCAicGFja2FnZXMueG1sIik7CiAgICAgICAgICAgICBtQmFja3VwU2V0dGluZ3NGaWxlbmFtZSA9IG5ldyBGaWxlKHN5c3RlbURpciwgInBhY2thZ2VzLWJhY2t1cC54bWwiKTsKICAgICAgICAgICAgIG1QYWNrYWdlTGlzdEZpbGVuYW1lID0gbmV3IEZpbGUoc3lzdGVtRGlyLCAicGFja2FnZXMubGlzdCIpOwpAQCAtODYzNSw2ICs4NzExLDkgQEAKICAgICAgICAgICAgIGlmIChwa2cuaW5zdGFsbGVyUGFja2FnZU5hbWUgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgIHNlcmlhbGl6ZXIuYXR0cmlidXRlKG51bGwsICJpbnN0YWxsZXIiLCBwa2cuaW5zdGFsbGVyUGFja2FnZU5hbWUpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHBrZy5vYmJQYXRoU3RyaW5nICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBzZXJpYWxpemVyLmF0dHJpYnV0ZShudWxsLCAib2JiUGF0aCIsIHBrZy5vYmJQYXRoU3RyaW5nKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHBrZy5zaWduYXR1cmVzLndyaXRlWG1sKHNlcmlhbGl6ZXIsICJzaWdzIiwgbVBhc3RTaWduYXR1cmVzKTsKICAgICAgICAgICAgIGlmICgocGtnLnBrZ0ZsYWdzJkFwcGxpY2F0aW9uSW5mby5GTEFHX1NZU1RFTSkgPT0gMCkgewogICAgICAgICAgICAgICAgIHNlcmlhbGl6ZXIuc3RhcnRUYWcobnVsbCwgInBlcm1zIik7CkBAIC05MDExLDYgKzkwOTAsNyBAQAogICAgICAgICAgICAgU3RyaW5nIHNoYXJlZElkU3RyID0gbnVsbDsKICAgICAgICAgICAgIFN0cmluZyBjb2RlUGF0aFN0ciA9IG51bGw7CiAgICAgICAgICAgICBTdHJpbmcgcmVzb3VyY2VQYXRoU3RyID0gbnVsbDsKKyAgICAgICAgICAgIFN0cmluZyBvYmJQYXRoU3RyID0gbnVsbDsKICAgICAgICAgICAgIFN0cmluZyBzeXN0ZW1TdHIgPSBudWxsOwogICAgICAgICAgICAgU3RyaW5nIGluc3RhbGxlclBhY2thZ2VOYW1lID0gbnVsbDsKICAgICAgICAgICAgIFN0cmluZyB1aWRFcnJvciA9IG51bGw7CkBAIC05MDI4LDYgKzkxMDgsNyBAQAogICAgICAgICAgICAgICAgIHNoYXJlZElkU3RyID0gcGFyc2VyLmdldEF0dHJpYnV0ZVZhbHVlKG51bGwsICJzaGFyZWRVc2VySWQiKTsKICAgICAgICAgICAgICAgICBjb2RlUGF0aFN0ciA9IHBhcnNlci5nZXRBdHRyaWJ1dGVWYWx1ZShudWxsLCAiY29kZVBhdGgiKTsKICAgICAgICAgICAgICAgICByZXNvdXJjZVBhdGhTdHIgPSBwYXJzZXIuZ2V0QXR0cmlidXRlVmFsdWUobnVsbCwgInJlc291cmNlUGF0aCIpOworICAgICAgICAgICAgICAgIG9iYlBhdGhTdHIgPSBwYXJzZXIuZ2V0QXR0cmlidXRlVmFsdWUobnVsbCwgIm9iYlBhdGgiKTsKICAgICAgICAgICAgICAgICB2ZXJzaW9uID0gcGFyc2VyLmdldEF0dHJpYnV0ZVZhbHVlKG51bGwsICJ2ZXJzaW9uIik7CiAgICAgICAgICAgICAgICAgaWYgKHZlcnNpb24gIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICB0cnkgewpAQCAtOTEyNSw2ICs5MjA2LDcgQEAKICAgICAgICAgICAgIGlmIChwYWNrYWdlU2V0dGluZyAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgcGFja2FnZVNldHRpbmcudWlkRXJyb3IgPSAidHJ1ZSIuZXF1YWxzKHVpZEVycm9yKTsKICAgICAgICAgICAgICAgICBwYWNrYWdlU2V0dGluZy5pbnN0YWxsZXJQYWNrYWdlTmFtZSA9IGluc3RhbGxlclBhY2thZ2VOYW1lOworICAgICAgICAgICAgICAgIHBhY2thZ2VTZXR0aW5nLm9iYlBhdGhTdHJpbmcgPSBvYmJQYXRoU3RyOwogICAgICAgICAgICAgICAgIGZpbmFsIFN0cmluZyBlbmFibGVkU3RyID0gcGFyc2VyLmdldEF0dHJpYnV0ZVZhbHVlKG51bGwsICJlbmFibGVkIik7CiAgICAgICAgICAgICAgICAgaWYgKGVuYWJsZWRTdHIgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICBpZiAoZW5hYmxlZFN0ci5lcXVhbHNJZ25vcmVDYXNlKCJ0cnVlIikpIHsKZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL1Bvd2VyTWFuYWdlclNlcnZpY2UuamF2YSBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL1Bvd2VyTWFuYWdlclNlcnZpY2UuamF2YQppbmRleCA0OTNhMzQ4Li5lOWQ1ZWZjIDEwMDY0NAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9Qb3dlck1hbmFnZXJTZXJ2aWNlLmphdmEKKysrIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvUG93ZXJNYW5hZ2VyU2VydmljZS5qYXZhCkBAIC0yNDcsNiArMjQ3LDkgQEAKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIG1TcGV3ID0gZmFsc2U7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBtRGVidWdQcm94aW1pdHlTZW5zb3IgPSAodHJ1ZSB8fCBtU3Bldyk7CiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBtRGVidWdMaWdodFNlbnNvciA9IChmYWxzZSB8fCBtU3Bldyk7CisgICAgCisgICAgcHJpdmF0ZSBuYXRpdmUgdm9pZCBuYXRpdmVJbml0KCk7CisgICAgcHJpdmF0ZSBuYXRpdmUgdm9pZCBuYXRpdmVTZXRQb3dlclN0YXRlKGJvb2xlYW4gc2NyZWVuT24sIGJvb2xlYW4gc2NyZWVuQnJpZ2h0KTsKIAogICAgIC8qCiAgICAgc3RhdGljIFByaW50U3RyZWFtIG1Mb2c7CkBAIC00ODEsNiArNDg0LDExIEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CisgICAgICAgIAorICAgICAgICBuYXRpdmVJbml0KCk7CisgICAgICAgIHN5bmNocm9uaXplZCAobUxvY2tzKSB7CisgICAgICAgICAgICB1cGRhdGVOYXRpdmVQb3dlclN0YXRlTG9ja2VkKCk7CisgICAgICAgIH0KICAgICB9CiAKICAgICB2b2lkIGluaXRJblRocmVhZCgpIHsKQEAgLTE1NTcsOCArMTU2NSwxNiBAQAogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICB1cGRhdGVOYXRpdmVQb3dlclN0YXRlTG9ja2VkKCk7CiAgICAgICAgIH0KICAgICB9CisgICAgCisgICAgcHJpdmF0ZSB2b2lkIHVwZGF0ZU5hdGl2ZVBvd2VyU3RhdGVMb2NrZWQoKSB7CisgICAgICAgIG5hdGl2ZVNldFBvd2VyU3RhdGUoCisgICAgICAgICAgICAgICAgKG1Qb3dlclN0YXRlICYgU0NSRUVOX09OX0JJVCkgIT0gMCwKKyAgICAgICAgICAgICAgICAobVBvd2VyU3RhdGUgJiBTQ1JFRU5fQlJJR0hUKSA9PSBTQ1JFRU5fQlJJR0hUKTsKKyAgICB9CiAKICAgICBwcml2YXRlIGludCBzY3JlZW5PZmZGaW5pc2hlZEFuaW1hdGluZ0xvY2tlZChpbnQgcmVhc29uKSB7CiAgICAgICAgIC8vIEkgZG9uJ3QgdGhpbmsgd2UgbmVlZCB0byBjaGVjayB0aGUgY3VycmVudCBzdGF0ZSBoZXJlIGJlY2F1c2UgYWxsIG9mIHRoZXNlCmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9TdGF0dXNCYXJNYW5hZ2VyU2VydmljZS5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvU3RhdHVzQmFyTWFuYWdlclNlcnZpY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MTc3NDMyCi0tLSAvZGV2L251bGwKKysrIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvU3RhdHVzQmFyTWFuYWdlclNlcnZpY2UuamF2YQpAQCAtMCwwICsxLDQ3MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuc2VydmVyOworCitpbXBvcnQgYW5kcm9pZC5hcHAuUGVuZGluZ0ludGVudDsKK2ltcG9ydCBhbmRyb2lkLmFwcC5TdGF0dXNCYXJNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Ccm9hZGNhc3RSZWNlaXZlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZTsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnRGaWx0ZXI7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzOworaW1wb3J0IGFuZHJvaWQubmV0LlVyaTsKK2ltcG9ydCBhbmRyb2lkLm9zLklCaW5kZXI7CitpbXBvcnQgYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb247CitpbXBvcnQgYW5kcm9pZC5vcy5CaW5kZXI7CitpbXBvcnQgYW5kcm9pZC5vcy5IYW5kbGVyOworaW1wb3J0IGFuZHJvaWQub3MuU3lzdGVtQ2xvY2s7CitpbXBvcnQgYW5kcm9pZC51dGlsLlNsb2c7CisKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5zdGF0dXNiYXIuSVN0YXR1c0JhcjsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5zdGF0dXNiYXIuSVN0YXR1c0JhclNlcnZpY2U7CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuc3RhdHVzYmFyLlN0YXR1c0Jhckljb247CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuc3RhdHVzYmFyLlN0YXR1c0Jhckljb25MaXN0OworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnN0YXR1c2Jhci5TdGF0dXNCYXJOb3RpZmljYXRpb247CisKK2ltcG9ydCBqYXZhLmlvLkZpbGVEZXNjcmlwdG9yOworaW1wb3J0IGphdmEuaW8uUHJpbnRXcml0ZXI7CitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworCisKKy8qKgorICogQSBub3RlIG9uIGxvY2tpbmc6ICBXZSByZWx5IG9uIHRoZSBmYWN0IHRoYXQgY2FsbHMgb250byBtQmFyIGFyZSBvbmV3YXkgb3IKKyAqIGlmIHRoZXkgYXJlIGxvY2FsLCB0aGF0IHRoZXkganVzdCBlbnF1ZXVlIG1lc3NhZ2VzIHRvIG5vdCBkZWFkbG9jay4KKyAqLworcHVibGljIGNsYXNzIFN0YXR1c0Jhck1hbmFnZXJTZXJ2aWNlIGV4dGVuZHMgSVN0YXR1c0JhclNlcnZpY2UuU3R1YgoreworICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gIlN0YXR1c0Jhck1hbmFnZXJTZXJ2aWNlIjsKKyAgICBzdGF0aWMgZmluYWwgYm9vbGVhbiBTUEVXID0gdHJ1ZTsKKworICAgIGZpbmFsIENvbnRleHQgbUNvbnRleHQ7CisgICAgSGFuZGxlciBtSGFuZGxlciA9IG5ldyBIYW5kbGVyKCk7CisgICAgTm90aWZpY2F0aW9uQ2FsbGJhY2tzIG1Ob3RpZmljYXRpb25DYWxsYmFja3M7CisgICAgdm9sYXRpbGUgSVN0YXR1c0JhciBtQmFyOworICAgIFN0YXR1c0Jhckljb25MaXN0IG1JY29ucyA9IG5ldyBTdGF0dXNCYXJJY29uTGlzdCgpOworICAgIEhhc2hNYXA8SUJpbmRlcixTdGF0dXNCYXJOb3RpZmljYXRpb24+IG1Ob3RpZmljYXRpb25zCisgICAgICAgICAgICA9IG5ldyBIYXNoTWFwPElCaW5kZXIsU3RhdHVzQmFyTm90aWZpY2F0aW9uPigpOworCisgICAgLy8gZm9yIGRpc2FibGluZyB0aGUgc3RhdHVzIGJhcgorICAgIEFycmF5TGlzdDxEaXNhYmxlUmVjb3JkPiBtRGlzYWJsZVJlY29yZHMgPSBuZXcgQXJyYXlMaXN0PERpc2FibGVSZWNvcmQ+KCk7CisgICAgaW50IG1EaXNhYmxlZCA9IDA7CisKKyAgICBwcml2YXRlIGNsYXNzIERpc2FibGVSZWNvcmQgaW1wbGVtZW50cyBJQmluZGVyLkRlYXRoUmVjaXBpZW50IHsKKyAgICAgICAgU3RyaW5nIHBrZzsKKyAgICAgICAgaW50IHdoYXQ7CisgICAgICAgIElCaW5kZXIgdG9rZW47CisKKyAgICAgICAgcHVibGljIHZvaWQgYmluZGVyRGllZCgpIHsKKyAgICAgICAgICAgIFNsb2cuaShUQUcsICJiaW5kZXIgZGllZCBmb3IgcGtnPSIgKyBwa2cpOworICAgICAgICAgICAgZGlzYWJsZSgwLCB0b2tlbiwgcGtnKTsKKyAgICAgICAgICAgIHRva2VuLnVubGlua1RvRGVhdGgodGhpcywgMCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgaW50ZXJmYWNlIE5vdGlmaWNhdGlvbkNhbGxiYWNrcyB7CisgICAgICAgIHZvaWQgb25TZXREaXNhYmxlZChpbnQgc3RhdHVzKTsKKyAgICAgICAgdm9pZCBvbkNsZWFyQWxsKCk7CisgICAgICAgIHZvaWQgb25Ob3RpZmljYXRpb25DbGljayhTdHJpbmcgcGtnLCBTdHJpbmcgdGFnLCBpbnQgaWQpOworICAgICAgICB2b2lkIG9uUGFuZWxSZXZlYWxlZCgpOworICAgICAgICB2b2lkIG9uTm90aWZpY2F0aW9uRXJyb3IoU3RyaW5nIHBrZywgU3RyaW5nIHRhZywgaW50IGlkLAorICAgICAgICAgICAgICAgIGludCB1aWQsIGludCBpbml0aWFsUGlkLCBTdHJpbmcgbWVzc2FnZSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogQ29uc3RydWN0IHRoZSBzZXJ2aWNlLCBhZGQgdGhlIHN0YXR1cyBiYXIgdmlldyB0byB0aGUgd2luZG93IG1hbmFnZXIKKyAgICAgKi8KKyAgICBwdWJsaWMgU3RhdHVzQmFyTWFuYWdlclNlcnZpY2UoQ29udGV4dCBjb250ZXh0KSB7CisgICAgICAgIG1Db250ZXh0ID0gY29udGV4dDsKKworICAgICAgICBmaW5hbCBSZXNvdXJjZXMgcmVzID0gY29udGV4dC5nZXRSZXNvdXJjZXMoKTsKKyAgICAgICAgbUljb25zLmRlZmluZVNsb3RzKHJlcy5nZXRTdHJpbmdBcnJheShjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmFycmF5LmNvbmZpZ19zdGF0dXNCYXJJY29ucykpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldE5vdGlmaWNhdGlvbkNhbGxiYWNrcyhOb3RpZmljYXRpb25DYWxsYmFja3MgbGlzdGVuZXIpIHsKKyAgICAgICAgbU5vdGlmaWNhdGlvbkNhbGxiYWNrcyA9IGxpc3RlbmVyOworICAgIH0KKworICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gQ29uc3RydWN0aW5nIHRoZSB2aWV3CisgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgIHB1YmxpYyB2b2lkIHN5c3RlbVJlYWR5KCkgeworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHN5c3RlbVJlYWR5MigpIHsKKyAgICAgICAgQ29tcG9uZW50TmFtZSBjbiA9IENvbXBvbmVudE5hbWUudW5mbGF0dGVuRnJvbVN0cmluZygKKyAgICAgICAgICAgICAgICBtQ29udGV4dC5nZXRTdHJpbmcoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcuY29uZmlnX3N0YXR1c0JhckNvbXBvbmVudCkpOworICAgICAgICBJbnRlbnQgaW50ZW50ID0gbmV3IEludGVudCgpOworICAgICAgICBpbnRlbnQuc2V0Q29tcG9uZW50KGNuKTsKKyAgICAgICAgU2xvZy5pKFRBRywgIlN0YXJ0aW5nIHNlcnZpY2U6ICIgKyBjbik7CisgICAgICAgIG1Db250ZXh0LnN0YXJ0U2VydmljZShpbnRlbnQpOworICAgIH0KKworICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gRnJvbSBJU3RhdHVzQmFyU2VydmljZQorICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgcHVibGljIHZvaWQgZXhwYW5kKCkgeworICAgICAgICBlbmZvcmNlRXhwYW5kU3RhdHVzQmFyKCk7CisKKyAgICAgICAgaWYgKG1CYXIgIT0gbnVsbCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBtQmFyLmFuaW1hdGVFeHBhbmQoKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgY29sbGFwc2UoKSB7CisgICAgICAgIGVuZm9yY2VFeHBhbmRTdGF0dXNCYXIoKTsKKworICAgICAgICBpZiAobUJhciAhPSBudWxsKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIG1CYXIuYW5pbWF0ZUNvbGxhcHNlKCk7CisgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGRpc2FibGUoaW50IHdoYXQsIElCaW5kZXIgdG9rZW4sIFN0cmluZyBwa2cpIHsKKyAgICAgICAgZW5mb3JjZVN0YXR1c0JhcigpOworCisgICAgICAgIC8vIEl0J3MgaW1wb3J0YW50IHRoYXQgdGhlIHRoZSBjYWxsYmFjayBhbmQgdGhlIGNhbGwgdG8gbUJhciBnZXQgZG9uZQorICAgICAgICAvLyBpbiB0aGUgc2FtZSBvcmRlciB3aGVuIG11bHRpcGxlIHRocmVhZHMgYXJlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbgorICAgICAgICAvLyBzbyB0aGV5IGFyZSBwYWlyZWQgY29ycmVjdGx5LiAgVGhlIG1lc3NhZ2VzIG9uIHRoZSBoYW5kbGVyIHdpbGwgYmUKKyAgICAgICAgLy8gaGFuZGxlZCBpbiB0aGUgb3JkZXIgdGhleSB3ZXJlIGVucXVldWVkLCBidXQgd2lsbCBiZSBvdXRzaWRlIHRoZSBsb2NrLgorICAgICAgICBzeW5jaHJvbml6ZWQgKG1EaXNhYmxlUmVjb3JkcykgeworICAgICAgICAgICAgbWFuYWdlRGlzYWJsZUxpc3RMb2NrZWQod2hhdCwgdG9rZW4sIHBrZyk7CisgICAgICAgICAgICBmaW5hbCBpbnQgbmV0ID0gZ2F0aGVyRGlzYWJsZUFjdGlvbnNMb2NrZWQoKTsKKyAgICAgICAgICAgIFNsb2cuZChUQUcsICJkaXNhYmxlLi4uIG5ldD0weCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG5ldCkpOworICAgICAgICAgICAgaWYgKG5ldCAhPSBtRGlzYWJsZWQpIHsKKyAgICAgICAgICAgICAgICBtRGlzYWJsZWQgPSBuZXQ7CisgICAgICAgICAgICAgICAgbUhhbmRsZXIucG9zdChuZXcgUnVubmFibGUoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbU5vdGlmaWNhdGlvbkNhbGxiYWNrcy5vblNldERpc2FibGVkKG5ldCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIGlmIChtQmFyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1CYXIuZGlzYWJsZShuZXQpOworICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEljb24oU3RyaW5nIHNsb3QsIFN0cmluZyBpY29uUGFja2FnZSwgaW50IGljb25JZCwgaW50IGljb25MZXZlbCkgeworICAgICAgICBlbmZvcmNlU3RhdHVzQmFyKCk7CisKKyAgICAgICAgc3luY2hyb25pemVkIChtSWNvbnMpIHsKKyAgICAgICAgICAgIGludCBpbmRleCA9IG1JY29ucy5nZXRTbG90SW5kZXgoc2xvdCk7CisgICAgICAgICAgICBpZiAoaW5kZXggPCAwKSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFNlY3VyaXR5RXhjZXB0aW9uKCJpbnZhbGlkIHN0YXR1cyBiYXIgaWNvbiBzbG90OiAiICsgc2xvdCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFN0YXR1c0Jhckljb24gaWNvbiA9IG5ldyBTdGF0dXNCYXJJY29uKGljb25QYWNrYWdlLCBpY29uSWQsIGljb25MZXZlbCk7CisgICAgICAgICAgICAvL1Nsb2cuZChUQUcsICJzZXRJY29uIHNsb3Q9IiArIHNsb3QgKyAiIGluZGV4PSIgKyBpbmRleCArICIgaWNvbj0iICsgaWNvbik7CisgICAgICAgICAgICBtSWNvbnMuc2V0SWNvbihpbmRleCwgaWNvbik7CisKKyAgICAgICAgICAgIGlmIChtQmFyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBtQmFyLnNldEljb24oaW5kZXgsIGljb24pOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBleCkgeworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldEljb25WaXNpYmlsaXR5KFN0cmluZyBzbG90LCBib29sZWFuIHZpc2libGUpIHsKKyAgICAgICAgZW5mb3JjZVN0YXR1c0JhcigpOworCisgICAgICAgIHN5bmNocm9uaXplZCAobUljb25zKSB7CisgICAgICAgICAgICBpbnQgaW5kZXggPSBtSWNvbnMuZ2V0U2xvdEluZGV4KHNsb3QpOworICAgICAgICAgICAgaWYgKGluZGV4IDwgMCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBTZWN1cml0eUV4Y2VwdGlvbigiaW52YWxpZCBzdGF0dXMgYmFyIGljb24gc2xvdDogIiArIHNsb3QpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBTdGF0dXNCYXJJY29uIGljb24gPSBtSWNvbnMuZ2V0SWNvbihpbmRleCk7CisgICAgICAgICAgICBpZiAoaWNvbiA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoaWNvbi52aXNpYmxlICE9IHZpc2libGUpIHsKKyAgICAgICAgICAgICAgICBpY29uLnZpc2libGUgPSB2aXNpYmxlOworCisgICAgICAgICAgICAgICAgaWYgKG1CYXIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgbUJhci5zZXRJY29uKGluZGV4LCBpY29uKTsKKyAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCByZW1vdmVJY29uKFN0cmluZyBzbG90KSB7CisgICAgICAgIGVuZm9yY2VTdGF0dXNCYXIoKTsKKworICAgICAgICBzeW5jaHJvbml6ZWQgKG1JY29ucykgeworICAgICAgICAgICAgaW50IGluZGV4ID0gbUljb25zLmdldFNsb3RJbmRleChzbG90KTsKKyAgICAgICAgICAgIGlmIChpbmRleCA8IDApIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgU2VjdXJpdHlFeGNlcHRpb24oImludmFsaWQgc3RhdHVzIGJhciBpY29uIHNsb3Q6ICIgKyBzbG90KTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgbUljb25zLnJlbW92ZUljb24oaW5kZXgpOworCisgICAgICAgICAgICBpZiAobUJhciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgbUJhci5yZW1vdmVJY29uKGluZGV4KTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgZW5mb3JjZVN0YXR1c0JhcigpIHsKKyAgICAgICAgbUNvbnRleHQuZW5mb3JjZUNhbGxpbmdPclNlbGZQZXJtaXNzaW9uKGFuZHJvaWQuTWFuaWZlc3QucGVybWlzc2lvbi5TVEFUVVNfQkFSLAorICAgICAgICAgICAgICAgICJTdGF0dXNCYXJNYW5hZ2VyU2VydmljZSIpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBlbmZvcmNlRXhwYW5kU3RhdHVzQmFyKCkgeworICAgICAgICBtQ29udGV4dC5lbmZvcmNlQ2FsbGluZ09yU2VsZlBlcm1pc3Npb24oYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uLkVYUEFORF9TVEFUVVNfQkFSLAorICAgICAgICAgICAgICAgICJTdGF0dXNCYXJNYW5hZ2VyU2VydmljZSIpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBlbmZvcmNlU3RhdHVzQmFyU2VydmljZSgpIHsKKyAgICAgICAgbUNvbnRleHQuZW5mb3JjZUNhbGxpbmdPclNlbGZQZXJtaXNzaW9uKGFuZHJvaWQuTWFuaWZlc3QucGVybWlzc2lvbi5TVEFUVVNfQkFSX1NFUlZJQ0UsCisgICAgICAgICAgICAgICAgIlN0YXR1c0Jhck1hbmFnZXJTZXJ2aWNlIik7CisgICAgfQorCisKKyAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8vIENhbGxiYWNrcyBmcm9tIHRoZSBzdGF0dXMgYmFyIHNlcnZpY2UuCisgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICBwdWJsaWMgdm9pZCByZWdpc3RlclN0YXR1c0JhcihJU3RhdHVzQmFyIGJhciwgU3RhdHVzQmFySWNvbkxpc3QgaWNvbkxpc3QsCisgICAgICAgICAgICBMaXN0PElCaW5kZXI+IG5vdGlmaWNhdGlvbktleXMsIExpc3Q8U3RhdHVzQmFyTm90aWZpY2F0aW9uPiBub3RpZmljYXRpb25zKSB7CisgICAgICAgIGVuZm9yY2VTdGF0dXNCYXJTZXJ2aWNlKCk7CisKKyAgICAgICAgU2xvZy5pKFRBRywgInJlZ2lzdGVyU3RhdHVzQmFyIGJhcj0iICsgYmFyKTsKKyAgICAgICAgbUJhciA9IGJhcjsKKyAgICAgICAgc3luY2hyb25pemVkIChtSWNvbnMpIHsKKyAgICAgICAgICAgIGljb25MaXN0LmNvcHlGcm9tKG1JY29ucyk7CisgICAgICAgIH0KKyAgICAgICAgc3luY2hyb25pemVkIChtTm90aWZpY2F0aW9ucykgeworICAgICAgICAgICAgZm9yIChNYXAuRW50cnk8SUJpbmRlcixTdGF0dXNCYXJOb3RpZmljYXRpb24+IGU6IG1Ob3RpZmljYXRpb25zLmVudHJ5U2V0KCkpIHsKKyAgICAgICAgICAgICAgICBub3RpZmljYXRpb25LZXlzLmFkZChlLmdldEtleSgpKTsKKyAgICAgICAgICAgICAgICBub3RpZmljYXRpb25zLmFkZChlLmdldFZhbHVlKCkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhlIHN0YXR1cyBiYXIgc2VydmljZSBzaG91bGQgY2FsbCB0aGlzIGVhY2ggdGltZSB0aGUgdXNlciBicmluZ3MgdGhlIHBhbmVsIGZyb20KKyAgICAgKiBpbnZpc2libGUgdG8gdmlzaWJsZSBpbiBvcmRlciB0byBjbGVhciB0aGUgbm90aWZpY2F0aW9uIGxpZ2h0LgorICAgICAqLworICAgIHB1YmxpYyB2b2lkIG9uUGFuZWxSZXZlYWxlZCgpIHsKKyAgICAgICAgZW5mb3JjZVN0YXR1c0JhclNlcnZpY2UoKTsKKworICAgICAgICAvLyB0ZWxsIHRoZSBub3RpZmljYXRpb24gbWFuYWdlciB0byB0dXJuIG9mZiB0aGUgbGlnaHRzLgorICAgICAgICBtTm90aWZpY2F0aW9uQ2FsbGJhY2tzLm9uUGFuZWxSZXZlYWxlZCgpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG9uTm90aWZpY2F0aW9uQ2xpY2soU3RyaW5nIHBrZywgU3RyaW5nIHRhZywgaW50IGlkKSB7CisgICAgICAgIGVuZm9yY2VTdGF0dXNCYXJTZXJ2aWNlKCk7CisKKyAgICAgICAgbU5vdGlmaWNhdGlvbkNhbGxiYWNrcy5vbk5vdGlmaWNhdGlvbkNsaWNrKHBrZywgdGFnLCBpZCk7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgb25Ob3RpZmljYXRpb25FcnJvcihTdHJpbmcgcGtnLCBTdHJpbmcgdGFnLCBpbnQgaWQsCisgICAgICAgICAgICBpbnQgdWlkLCBpbnQgaW5pdGlhbFBpZCwgU3RyaW5nIG1lc3NhZ2UpIHsKKyAgICAgICAgZW5mb3JjZVN0YXR1c0JhclNlcnZpY2UoKTsKKworICAgICAgICAvLyBXQVJOSU5HOiB0aGlzIHdpbGwgY2FsbCBiYWNrIGludG8gdXMgdG8gZG8gdGhlIHJlbW92ZS4gIERvbid0IGhvbGQgYW55IGxvY2tzLgorICAgICAgICBtTm90aWZpY2F0aW9uQ2FsbGJhY2tzLm9uTm90aWZpY2F0aW9uRXJyb3IocGtnLCB0YWcsIGlkLCB1aWQsIGluaXRpYWxQaWQsIG1lc3NhZ2UpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIG9uQ2xlYXJBbGxOb3RpZmljYXRpb25zKCkgeworICAgICAgICBlbmZvcmNlU3RhdHVzQmFyU2VydmljZSgpOworCisgICAgICAgIG1Ob3RpZmljYXRpb25DYWxsYmFja3Mub25DbGVhckFsbCgpOworICAgIH0KKworICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisgICAgLy8gQ2FsbGJhY2tzIGZvciBOb3RpZmljYXRpb25NYW5hZ2VyU2VydmljZS4KKyAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIHB1YmxpYyBJQmluZGVyIGFkZE5vdGlmaWNhdGlvbihTdGF0dXNCYXJOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKSB7CisgICAgICAgIHN5bmNocm9uaXplZCAobU5vdGlmaWNhdGlvbnMpIHsKKyAgICAgICAgICAgIElCaW5kZXIga2V5ID0gbmV3IEJpbmRlcigpOworICAgICAgICAgICAgbU5vdGlmaWNhdGlvbnMucHV0KGtleSwgbm90aWZpY2F0aW9uKTsKKyAgICAgICAgICAgIGlmIChtQmFyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBtQmFyLmFkZE5vdGlmaWNhdGlvbihrZXksIG5vdGlmaWNhdGlvbik7CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGV4KSB7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGtleTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHVwZGF0ZU5vdGlmaWNhdGlvbihJQmluZGVyIGtleSwgU3RhdHVzQmFyTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikgeworICAgICAgICBzeW5jaHJvbml6ZWQgKG1Ob3RpZmljYXRpb25zKSB7CisgICAgICAgICAgICBpZiAoIW1Ob3RpZmljYXRpb25zLmNvbnRhaW5zS2V5KGtleSkpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJ1cGRhdGVOb3RpZmljYXRpb24ga2V5IG5vdCBmb3VuZDogIiArIGtleSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtTm90aWZpY2F0aW9ucy5wdXQoa2V5LCBub3RpZmljYXRpb24pOworICAgICAgICAgICAgaWYgKG1CYXIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIG1CYXIudXBkYXRlTm90aWZpY2F0aW9uKGtleSwgbm90aWZpY2F0aW9uKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCByZW1vdmVOb3RpZmljYXRpb24oSUJpbmRlciBrZXkpIHsKKyAgICAgICAgc3luY2hyb25pemVkIChtTm90aWZpY2F0aW9ucykgeworICAgICAgICAgICAgZmluYWwgU3RhdHVzQmFyTm90aWZpY2F0aW9uIG4gPSBtTm90aWZpY2F0aW9ucy5yZW1vdmUoa2V5KTsKKyAgICAgICAgICAgIGlmIChuID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJyZW1vdmVOb3RpZmljYXRpb24ga2V5IG5vdCBmb3VuZDogIiArIGtleSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobUJhciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgbUJhci5yZW1vdmVOb3RpZmljYXRpb24oa2V5KTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8vIENhbiBiZSBjYWxsZWQgZnJvbSBhbnkgdGhyZWFkCisgICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworICAgIC8vIGxvY2sgb24gbURpc2FibGVSZWNvcmRzCisgICAgdm9pZCBtYW5hZ2VEaXNhYmxlTGlzdExvY2tlZChpbnQgd2hhdCwgSUJpbmRlciB0b2tlbiwgU3RyaW5nIHBrZykgeworICAgICAgICBpZiAoU1BFVykgeworICAgICAgICAgICAgU2xvZy5kKFRBRywgIm1hbmFnZURpc2FibGVMaXN0IHdoYXQ9MHgiICsgSW50ZWdlci50b0hleFN0cmluZyh3aGF0KSArICIgcGtnPSIgKyBwa2cpOworICAgICAgICB9CisgICAgICAgIC8vIHVwZGF0ZSB0aGUgbGlzdAorICAgICAgICBzeW5jaHJvbml6ZWQgKG1EaXNhYmxlUmVjb3JkcykgeworICAgICAgICAgICAgZmluYWwgaW50IE4gPSBtRGlzYWJsZVJlY29yZHMuc2l6ZSgpOworICAgICAgICAgICAgRGlzYWJsZVJlY29yZCB0b2sgPSBudWxsOworICAgICAgICAgICAgaW50IGk7CisgICAgICAgICAgICBmb3IgKGk9MDsgaTxOOyBpKyspIHsKKyAgICAgICAgICAgICAgICBEaXNhYmxlUmVjb3JkIHQgPSBtRGlzYWJsZVJlY29yZHMuZ2V0KGkpOworICAgICAgICAgICAgICAgIGlmICh0LnRva2VuID09IHRva2VuKSB7CisgICAgICAgICAgICAgICAgICAgIHRvayA9IHQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh3aGF0ID09IDAgfHwgIXRva2VuLmlzQmluZGVyQWxpdmUoKSkgeworICAgICAgICAgICAgICAgIGlmICh0b2sgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBtRGlzYWJsZVJlY29yZHMucmVtb3ZlKGkpOworICAgICAgICAgICAgICAgICAgICB0b2sudG9rZW4udW5saW5rVG9EZWF0aCh0b2ssIDApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKHRvayA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIHRvayA9IG5ldyBEaXNhYmxlUmVjb3JkKCk7CisgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi5saW5rVG9EZWF0aCh0b2ssIDApOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsgLy8gZ2l2ZSB1cAorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIG1EaXNhYmxlUmVjb3Jkcy5hZGQodG9rKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdG9rLndoYXQgPSB3aGF0OworICAgICAgICAgICAgICAgIHRvay50b2tlbiA9IHRva2VuOworICAgICAgICAgICAgICAgIHRvay5wa2cgPSBwa2c7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBsb2NrIG9uIG1EaXNhYmxlUmVjb3JkcworICAgIGludCBnYXRoZXJEaXNhYmxlQWN0aW9uc0xvY2tlZCgpIHsKKyAgICAgICAgZmluYWwgaW50IE4gPSBtRGlzYWJsZVJlY29yZHMuc2l6ZSgpOworICAgICAgICAvLyBnYXRoZXIgdGhlIG5ldyBuZXQgZmxhZ3MKKyAgICAgICAgaW50IG5ldCA9IDA7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxOOyBpKyspIHsKKyAgICAgICAgICAgIG5ldCB8PSBtRGlzYWJsZVJlY29yZHMuZ2V0KGkpLndoYXQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG5ldDsKKyAgICB9CisKKyAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIC8vIEFsd2F5cyBjYWxsZWQgZnJvbSBVSSB0aHJlYWQKKyAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgICAgcHJvdGVjdGVkIHZvaWQgZHVtcChGaWxlRGVzY3JpcHRvciBmZCwgUHJpbnRXcml0ZXIgcHcsIFN0cmluZ1tdIGFyZ3MpIHsKKyAgICAgICAgaWYgKG1Db250ZXh0LmNoZWNrQ2FsbGluZ09yU2VsZlBlcm1pc3Npb24oYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uLkRVTVApCisgICAgICAgICAgICAgICAgIT0gUGFja2FnZU1hbmFnZXIuUEVSTUlTU0lPTl9HUkFOVEVEKSB7CisgICAgICAgICAgICBwdy5wcmludGxuKCJQZXJtaXNzaW9uIERlbmlhbDogY2FuJ3QgZHVtcCBTdGF0dXNCYXIgZnJvbSBmcm9tIHBpZD0iCisgICAgICAgICAgICAgICAgICAgICsgQmluZGVyLmdldENhbGxpbmdQaWQoKQorICAgICAgICAgICAgICAgICAgICArICIsIHVpZD0iICsgQmluZGVyLmdldENhbGxpbmdVaWQoKSk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBzeW5jaHJvbml6ZWQgKG1JY29ucykgeworICAgICAgICAgICAgbUljb25zLmR1bXAocHcpOworICAgICAgICB9CisKKyAgICAgICAgc3luY2hyb25pemVkIChtTm90aWZpY2F0aW9ucykgeworICAgICAgICAgICAgaW50IGk9MDsKKyAgICAgICAgICAgIHB3LnByaW50bG4oIk5vdGlmaWNhdGlvbiBsaXN0OiIpOworICAgICAgICAgICAgZm9yIChNYXAuRW50cnk8SUJpbmRlcixTdGF0dXNCYXJOb3RpZmljYXRpb24+IGU6IG1Ob3RpZmljYXRpb25zLmVudHJ5U2V0KCkpIHsKKyAgICAgICAgICAgICAgICBwdy5wcmludGYoIiAgJTJkOiAlc1xuIiwgaSwgZS5nZXRWYWx1ZSgpLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgIGkrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHN5bmNocm9uaXplZCAobURpc2FibGVSZWNvcmRzKSB7CisgICAgICAgICAgICBmaW5hbCBpbnQgTiA9IG1EaXNhYmxlUmVjb3Jkcy5zaXplKCk7CisgICAgICAgICAgICBwdy5wcmludGxuKCIgIG1EaXNhYmxlUmVjb3Jkcy5zaXplPSIgKyBOCisgICAgICAgICAgICAgICAgICAgICsgIiBtRGlzYWJsZWQ9MHgiICsgSW50ZWdlci50b0hleFN0cmluZyhtRGlzYWJsZWQpKTsKKyAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxOOyBpKyspIHsKKyAgICAgICAgICAgICAgICBEaXNhYmxlUmVjb3JkIHRvayA9IG1EaXNhYmxlUmVjb3Jkcy5nZXQoaSk7CisgICAgICAgICAgICAgICAgcHcucHJpbnRsbigiICAgIFsiICsgaSArICJdIHdoYXQ9MHgiICsgSW50ZWdlci50b0hleFN0cmluZyh0b2sud2hhdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiIHBrZz0iICsgdG9rLnBrZyArICIgdG9rZW49IiArIHRvay50b2tlbik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIEJyb2FkY2FzdFJlY2VpdmVyIG1Ccm9hZGNhc3RSZWNlaXZlciA9IG5ldyBCcm9hZGNhc3RSZWNlaXZlcigpIHsKKyAgICAgICAgcHVibGljIHZvaWQgb25SZWNlaXZlKENvbnRleHQgY29udGV4dCwgSW50ZW50IGludGVudCkgeworICAgICAgICAgICAgU3RyaW5nIGFjdGlvbiA9IGludGVudC5nZXRBY3Rpb24oKTsKKyAgICAgICAgICAgIGlmIChJbnRlbnQuQUNUSU9OX0NMT1NFX1NZU1RFTV9ESUFMT0dTLmVxdWFscyhhY3Rpb24pCisgICAgICAgICAgICAgICAgICAgIHx8IEludGVudC5BQ1RJT05fU0NSRUVOX09GRi5lcXVhbHMoYWN0aW9uKSkgeworICAgICAgICAgICAgICAgIGNvbGxhcHNlKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKgorICAgICAgICAgICAgZWxzZSBpZiAoVGVsZXBob255LkludGVudHMuU1BOX1NUUklOR1NfVVBEQVRFRF9BQ1RJT04uZXF1YWxzKGFjdGlvbikpIHsKKyAgICAgICAgICAgICAgICB1cGRhdGVOZXR3b3JrTmFtZShpbnRlbnQuZ2V0Qm9vbGVhbkV4dHJhKFRlbGVwaG9ueS5JbnRlbnRzLkVYVFJBX1NIT1dfU1BOLCBmYWxzZSksCisgICAgICAgICAgICAgICAgICAgICAgICBpbnRlbnQuZ2V0U3RyaW5nRXh0cmEoVGVsZXBob255LkludGVudHMuRVhUUkFfU1BOKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGludGVudC5nZXRCb29sZWFuRXh0cmEoVGVsZXBob255LkludGVudHMuRVhUUkFfU0hPV19QTE1OLCBmYWxzZSksCisgICAgICAgICAgICAgICAgICAgICAgICBpbnRlbnQuZ2V0U3RyaW5nRXh0cmEoVGVsZXBob255LkludGVudHMuRVhUUkFfUExNTikpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoSW50ZW50LkFDVElPTl9DT05GSUdVUkFUSU9OX0NIQU5HRUQuZXF1YWxzKGFjdGlvbikpIHsKKyAgICAgICAgICAgICAgICB1cGRhdGVSZXNvdXJjZXMoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICovCisgICAgICAgIH0KKyAgICB9OworCit9CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9TeXN0ZW1TZXJ2ZXIuamF2YSBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL1N5c3RlbVNlcnZlci5qYXZhCmluZGV4IDlkNWQwMzUuLmMwMTY4MGUgMTAwNjQ0Ci0tLSBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL1N5c3RlbVNlcnZlci5qYXZhCisrKyBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL1N5c3RlbVNlcnZlci5qYXZhCkBAIC0xNyw3ICsxNyw2IEBACiBwYWNrYWdlIGNvbS5hbmRyb2lkLnNlcnZlcjsKIAogaW1wb3J0IGNvbS5hbmRyb2lkLnNlcnZlci5hbS5BY3Rpdml0eU1hbmFnZXJTZXJ2aWNlOwotaW1wb3J0IGNvbS5hbmRyb2lkLnNlcnZlci5zdGF0dXMuU3RhdHVzQmFyU2VydmljZTsKIGltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5vcy5CaW5kZXJJbnRlcm5hbDsKIGltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5vcy5TYW1wbGluZ1Byb2ZpbGVySW50ZWdyYXRpb247CiAKQEAgLTgxLDcgKzgwLDggQEAKICAgICAgICAgICAgICAgICBhbmRyb2lkLm9zLlByb2Nlc3MuVEhSRUFEX1BSSU9SSVRZX0ZPUkVHUk9VTkQpOwogCiAgICAgICAgIEJpbmRlckludGVybmFsLmRpc2FibGVCYWNrZ3JvdW5kU2NoZWR1bGluZyh0cnVlKTsKLSAgICAgICAgCisgICAgICAgIGFuZHJvaWQub3MuUHJvY2Vzcy5zZXRDYW5TZWxmQmFja2dyb3VuZChmYWxzZSk7CisKICAgICAgICAgU3RyaW5nIGZhY3RvcnlUZXN0U3RyID0gU3lzdGVtUHJvcGVydGllcy5nZXQoInJvLmZhY3Rvcnl0ZXN0Iik7CiAgICAgICAgIGludCBmYWN0b3J5VGVzdCA9ICIiLmVxdWFscyhmYWN0b3J5VGVzdFN0cikgPyBTeXN0ZW1TZXJ2ZXIuRkFDVE9SWV9URVNUX09GRgogICAgICAgICAgICAgICAgIDogSW50ZWdlci5wYXJzZUludChmYWN0b3J5VGVzdFN0cik7CkBAIC05Nyw2ICs5Nyw3IEBACiAgICAgICAgIEJsdWV0b290aEEyZHBTZXJ2aWNlIGJsdWV0b290aEEyZHAgPSBudWxsOwogICAgICAgICBIZWFkc2V0T2JzZXJ2ZXIgaGVhZHNldCA9IG51bGw7CiAgICAgICAgIERvY2tPYnNlcnZlciBkb2NrID0gbnVsbDsKKyAgICAgICAgVXNiT2JzZXJ2ZXIgdXNiID0gbnVsbDsKICAgICAgICAgVWlNb2RlTWFuYWdlclNlcnZpY2UgdWlNb2RlID0gbnVsbDsKICAgICAgICAgUmVjb2duaXRpb25NYW5hZ2VyU2VydmljZSByZWNvZ25pdGlvbiA9IG51bGw7CiAgICAgICAgIFRocm90dGxlU2VydmljZSB0aHJvdHRsZSA9IG51bGw7CkBAIC0yMDYsNyArMjA3LDcgQEAKICAgICAgICAgfQogCiAgICAgICAgIERldmljZVBvbGljeU1hbmFnZXJTZXJ2aWNlIGRldmljZVBvbGljeSA9IG51bGw7Ci0gICAgICAgIFN0YXR1c0JhclNlcnZpY2Ugc3RhdHVzQmFyID0gbnVsbDsKKyAgICAgICAgU3RhdHVzQmFyTWFuYWdlclNlcnZpY2Ugc3RhdHVzQmFyID0gbnVsbDsKICAgICAgICAgSW5wdXRNZXRob2RNYW5hZ2VyU2VydmljZSBpbW0gPSBudWxsOwogICAgICAgICBBcHBXaWRnZXRTZXJ2aWNlIGFwcFdpZGdldCA9IG51bGw7CiAgICAgICAgIE5vdGlmaWNhdGlvbk1hbmFnZXJTZXJ2aWNlIG5vdGlmaWNhdGlvbiA9IG51bGw7CkBAIC0yMjQsMTAgKzIyNSwxMCBAQAogCiAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgIFNsb2cuaShUQUcsICJTdGF0dXMgQmFyIik7Ci0gICAgICAgICAgICAgICAgc3RhdHVzQmFyID0gbmV3IFN0YXR1c0JhclNlcnZpY2UoY29udGV4dCk7CisgICAgICAgICAgICAgICAgc3RhdHVzQmFyID0gbmV3IFN0YXR1c0Jhck1hbmFnZXJTZXJ2aWNlKGNvbnRleHQpOwogICAgICAgICAgICAgICAgIFNlcnZpY2VNYW5hZ2VyLmFkZFNlcnZpY2UoQ29udGV4dC5TVEFUVVNfQkFSX1NFUlZJQ0UsIHN0YXR1c0Jhcik7CiAgICAgICAgICAgICB9IGNhdGNoIChUaHJvd2FibGUgZSkgewotICAgICAgICAgICAgICAgIFNsb2cuZShUQUcsICJGYWlsdXJlIHN0YXJ0aW5nIFN0YXR1c0JhclNlcnZpY2UiLCBlKTsKKyAgICAgICAgICAgICAgICBTbG9nLmUoVEFHLCAiRmFpbHVyZSBzdGFydGluZyBTdGF0dXNCYXJNYW5hZ2VyU2VydmljZSIsIGUpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICB0cnkgewpAQCAtMzc0LDggKzM3NSwxNiBAQAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIFNsb2cuaShUQUcsICJVU0IgT2JzZXJ2ZXIiKTsKKyAgICAgICAgICAgICAgICAvLyBMaXN0ZW4gZm9yIFVTQiBjaGFuZ2VzCisgICAgICAgICAgICAgICAgdXNiID0gbmV3IFVzYk9ic2VydmVyKGNvbnRleHQpOworICAgICAgICAgICAgfSBjYXRjaCAoVGhyb3dhYmxlIGUpIHsKKyAgICAgICAgICAgICAgICBTbG9nLmUoVEFHLCAiRmFpbHVyZSBzdGFydGluZyBVc2JPYnNlcnZlciIsIGUpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgIFNsb2cuaShUQUcsICJVSSBNb2RlIE1hbmFnZXIgU2VydmljZSIpOwotICAgICAgICAgICAgICAgIC8vIExpc3RlbiBmb3IgZG9jayBzdGF0aW9uIGNoYW5nZXMKKyAgICAgICAgICAgICAgICAvLyBMaXN0ZW4gZm9yIFVJIG1vZGUgY2hhbmdlcwogICAgICAgICAgICAgICAgIHVpTW9kZSA9IG5ldyBVaU1vZGVNYW5hZ2VyU2VydmljZShjb250ZXh0KTsKICAgICAgICAgICAgIH0gY2F0Y2ggKFRocm93YWJsZSBlKSB7CiAgICAgICAgICAgICAgICAgU2xvZy5lKFRBRywgIkZhaWx1cmUgc3RhcnRpbmcgVWlNb2RlTWFuYWdlclNlcnZpY2UiLCBlKTsKQEAgLTQwNSwxMiArNDE0LDYgQEAKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5zZXJ2ZXIuc3RhdHVzLlN0YXR1c0JhclBvbGljeS5pbnN0YWxsSWNvbnMoY29udGV4dCwgc3RhdHVzQmFyKTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKFRocm93YWJsZSBlKSB7Ci0gICAgICAgICAgICAgICAgU2xvZy5lKFRBRywgIkZhaWx1cmUgaW5zdGFsbGluZyBzdGF0dXMgYmFyIGljb25zIiwgZSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgU2xvZy5pKFRBRywgIkRpc2tTdGF0cyBTZXJ2aWNlIik7CiAgICAgICAgICAgICAgICAgU2VydmljZU1hbmFnZXIuYWRkU2VydmljZSgiZGlza3N0YXRzIiwgbmV3IERpc2tTdGF0c1NlcnZpY2UoY29udGV4dCkpOwogICAgICAgICAgICAgfSBjYXRjaCAoVGhyb3dhYmxlIGUpIHsKQEAgLTQ2NCw5ICs0NjcsMTEgQEAKICAgICAgICAgfQogCiAgICAgICAgIC8vIFRoZXNlIGFyZSBuZWVkZWQgdG8gcHJvcGFnYXRlIHRvIHRoZSBydW5uYWJsZSBiZWxvdy4KKyAgICAgICAgZmluYWwgU3RhdHVzQmFyTWFuYWdlclNlcnZpY2Ugc3RhdHVzQmFyRiA9IHN0YXR1c0JhcjsKICAgICAgICAgZmluYWwgQmF0dGVyeVNlcnZpY2UgYmF0dGVyeUYgPSBiYXR0ZXJ5OwogICAgICAgICBmaW5hbCBDb25uZWN0aXZpdHlTZXJ2aWNlIGNvbm5lY3Rpdml0eUYgPSBjb25uZWN0aXZpdHk7CiAgICAgICAgIGZpbmFsIERvY2tPYnNlcnZlciBkb2NrRiA9IGRvY2s7CisgICAgICAgIGZpbmFsIFVzYk9ic2VydmVyIHVzYkYgPSB1c2I7CiAgICAgICAgIGZpbmFsIFRocm90dGxlU2VydmljZSB0aHJvdHRsZUYgPSB0aHJvdHRsZTsKICAgICAgICAgZmluYWwgVWlNb2RlTWFuYWdlclNlcnZpY2UgdWlNb2RlRiA9IHVpTW9kZTsKICAgICAgICAgZmluYWwgQXBwV2lkZ2V0U2VydmljZSBhcHBXaWRnZXRGID0gYXBwV2lkZ2V0OwpAQCAtNDg1LDkgKzQ5MCwxMSBAQAogICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgewogICAgICAgICAgICAgICAgIFNsb2cuaShUQUcsICJNYWtpbmcgc2VydmljZXMgcmVhZHkiKTsKIAorICAgICAgICAgICAgICAgIGlmIChzdGF0dXNCYXJGICE9IG51bGwpIHN0YXR1c0JhckYuc3lzdGVtUmVhZHkyKCk7CiAgICAgICAgICAgICAgICAgaWYgKGJhdHRlcnlGICE9IG51bGwpIGJhdHRlcnlGLnN5c3RlbVJlYWR5KCk7CiAgICAgICAgICAgICAgICAgaWYgKGNvbm5lY3Rpdml0eUYgIT0gbnVsbCkgY29ubmVjdGl2aXR5Ri5zeXN0ZW1SZWFkeSgpOwogICAgICAgICAgICAgICAgIGlmIChkb2NrRiAhPSBudWxsKSBkb2NrRi5zeXN0ZW1SZWFkeSgpOworICAgICAgICAgICAgICAgIGlmICh1c2JGICE9IG51bGwpIHVzYkYuc3lzdGVtUmVhZHkoKTsKICAgICAgICAgICAgICAgICBpZiAodWlNb2RlRiAhPSBudWxsKSB1aU1vZGVGLnN5c3RlbVJlYWR5KCk7CiAgICAgICAgICAgICAgICAgaWYgKHJlY29nbml0aW9uRiAhPSBudWxsKSByZWNvZ25pdGlvbkYuc3lzdGVtUmVhZHkoKTsKICAgICAgICAgICAgICAgICBXYXRjaGRvZy5nZXRJbnN0YW5jZSgpLnN0YXJ0KCk7CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9VaU1vZGVNYW5hZ2VyU2VydmljZS5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvVWlNb2RlTWFuYWdlclNlcnZpY2UuamF2YQppbmRleCAwMTkyNDVmLi40MzFjYzM5IDEwMDY0NAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9VaU1vZGVNYW5hZ2VyU2VydmljZS5qYXZhCisrKyBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL1VpTW9kZU1hbmFnZXJTZXJ2aWNlLmphdmEKQEAgLTU2Niw3ICs1NjYsNyBAQAogICAgICAgICAgICAgbVN0YXR1c0Jhck1hbmFnZXIgPSAoU3RhdHVzQmFyTWFuYWdlcikgbUNvbnRleHQuZ2V0U3lzdGVtU2VydmljZShDb250ZXh0LlNUQVRVU19CQVJfU0VSVklDRSk7CiAgICAgICAgIH0KIAotICAgICAgICAvLyBGZWFyIG5vdDogU3RhdHVzQmFyU2VydmljZSBtYW5hZ2VzIGEgbGlzdCBvZiByZXF1ZXN0cyB0byBkaXNhYmxlCisgICAgICAgIC8vIEZlYXIgbm90OiBTdGF0dXNCYXJNYW5hZ2VyU2VydmljZSBtYW5hZ2VzIGEgbGlzdCBvZiByZXF1ZXN0cyB0byBkaXNhYmxlCiAgICAgICAgIC8vIGZlYXR1cmVzIG9mIHRoZSBzdGF0dXMgYmFyOyB0aGVzZSBhcmUgT1JlZCB0b2dldGhlciB0byBmb3JtIHRoZQogICAgICAgICAvLyBhY3RpdmUgZGlzYWJsZWQgbGlzdC4gU28gaWYgKGZvciBleGFtcGxlKSB0aGUgZGV2aWNlIGlzIGxvY2tlZCBhbmQKICAgICAgICAgLy8gdGhlIHN0YXR1cyBiYXIgc2hvdWxkIGJlIHRvdGFsbHkgZGlzYWJsZWQsIHRoZSBjYWxscyBiZWxvdyB3aWxsCmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9Vc2JPYnNlcnZlci5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvVXNiT2JzZXJ2ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDhmZTliCi0tLSAvZGV2L251bGwKKysrIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvVXNiT2JzZXJ2ZXIuamF2YQpAQCAtMCwwICsxLDIwNyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuc2VydmVyOworCitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50OworaW1wb3J0IGFuZHJvaWQuaGFyZHdhcmUuVXNiOworaW1wb3J0IGFuZHJvaWQubmV0LlVyaTsKK2ltcG9ydCBhbmRyb2lkLm9zLkhhbmRsZXI7CitpbXBvcnQgYW5kcm9pZC5vcy5NZXNzYWdlOworaW1wb3J0IGFuZHJvaWQub3MuVUV2ZW50T2JzZXJ2ZXI7CitpbXBvcnQgYW5kcm9pZC5wcm92aWRlci5TZXR0aW5nczsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOworaW1wb3J0IGFuZHJvaWQudXRpbC5TbG9nOworCitpbXBvcnQgamF2YS5pby5GaWxlOworaW1wb3J0IGphdmEuaW8uRmlsZU5vdEZvdW5kRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uRmlsZVJlYWRlcjsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworCisvKioKKyAqIDxwPlVzYk9ic2VydmVyIG1vbml0b3JzIGZvciBjaGFuZ2VzIHRvIFVTQiBzdGF0ZS4KKyAqLworY2xhc3MgVXNiT2JzZXJ2ZXIgZXh0ZW5kcyBVRXZlbnRPYnNlcnZlciB7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9IFVzYk9ic2VydmVyLmNsYXNzLmdldFNpbXBsZU5hbWUoKTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIExPRyA9IGZhbHNlOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFVTQl9DT05GSUdVUkFUSU9OX01BVENIID0gIkRFVlBBVEg9L2RldmljZXMvdmlydHVhbC9zd2l0Y2gvdXNiX2NvbmZpZ3VyYXRpb24iOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBVU0JfRlVOQ1RJT05TX01BVENIID0gIkRFVlBBVEg9L2RldmljZXMvdmlydHVhbC91c2JfY29tcG9zaXRlLyI7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFVTQl9DT05GSUdVUkFUSU9OX1BBVEggPSAiL3N5cy9jbGFzcy9zd2l0Y2gvdXNiX2NvbmZpZ3VyYXRpb24vc3RhdGUiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBVU0JfQ09NUE9TSVRFX0NMQVNTX1BBVEggPSAiL3N5cy9jbGFzcy91c2JfY29tcG9zaXRlIjsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNU0dfVVBEQVRFID0gMDsKKworICAgIHByaXZhdGUgaW50IG1Vc2JDb25maWcgPSAwOworICAgIHByaXZhdGUgaW50IG1QcmV2aW91c1VzYkNvbmZpZyA9IDA7CisKKyAgICAvLyBsaXN0cyBvZiBlbmFibGVkIGFuZCBkaXNhYmxlZCBVU0IgZnVuY3Rpb25zCisgICAgcHJpdmF0ZSBmaW5hbCBBcnJheUxpc3Q8U3RyaW5nPiBtRW5hYmxlZEZ1bmN0aW9ucyA9IG5ldyBBcnJheUxpc3Q8U3RyaW5nPigpOworICAgIHByaXZhdGUgZmluYWwgQXJyYXlMaXN0PFN0cmluZz4gbURpc2FibGVkRnVuY3Rpb25zID0gbmV3IEFycmF5TGlzdDxTdHJpbmc+KCk7CisKKyAgICBwcml2YXRlIGJvb2xlYW4gbVN5c3RlbVJlYWR5OworCisgICAgcHJpdmF0ZSBmaW5hbCBDb250ZXh0IG1Db250ZXh0OworCisgICAgcHJpdmF0ZSBQb3dlck1hbmFnZXJTZXJ2aWNlIG1Qb3dlck1hbmFnZXI7CisKKyAgICBwdWJsaWMgVXNiT2JzZXJ2ZXIoQ29udGV4dCBjb250ZXh0KSB7CisgICAgICAgIG1Db250ZXh0ID0gY29udGV4dDsKKyAgICAgICAgaW5pdCgpOyAgLy8gc2V0IGluaXRpYWwgc3RhdHVzCisKKyAgICAgICAgc3RhcnRPYnNlcnZpbmcoVVNCX0NPTkZJR1VSQVRJT05fTUFUQ0gpOworICAgICAgICBzdGFydE9ic2VydmluZyhVU0JfRlVOQ1RJT05TX01BVENIKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBvblVFdmVudChVRXZlbnRPYnNlcnZlci5VRXZlbnQgZXZlbnQpIHsKKyAgICAgICAgaWYgKExvZy5pc0xvZ2dhYmxlKFRBRywgTG9nLlZFUkJPU0UpKSB7CisgICAgICAgICAgICBTbG9nLnYoVEFHLCAiVVNCIFVFVkVOVDogIiArIGV2ZW50LnRvU3RyaW5nKCkpOworICAgICAgICB9CisKKyAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7CisgICAgICAgICAgICBTdHJpbmcgc3dpdGNoU3RhdGUgPSBldmVudC5nZXQoIlNXSVRDSF9TVEFURSIpOworICAgICAgICAgICAgaWYgKHN3aXRjaFN0YXRlICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBpbnQgbmV3Q29uZmlnID0gSW50ZWdlci5wYXJzZUludChzd2l0Y2hTdGF0ZSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChuZXdDb25maWcgIT0gbVVzYkNvbmZpZykgeworICAgICAgICAgICAgICAgICAgICAgICAgbVByZXZpb3VzVXNiQ29uZmlnID0gbVVzYkNvbmZpZzsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1Vc2JDb25maWcgPSBuZXdDb25maWc7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyB0cmlnZ2VyIGFuIEludGVudCBicm9hZGNhc3QKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtU3lzdGVtUmVhZHkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gY2F0Y2ggKE51bWJlckZvcm1hdEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgIFNsb2cuZShUQUcsICJDb3VsZCBub3QgcGFyc2Ugc3dpdGNoIHN0YXRlIGZyb20gZXZlbnQgIiArIGV2ZW50KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIFN0cmluZyBmdW5jdGlvbiA9IGV2ZW50LmdldCgiRlVOQ1RJT04iKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgZW5hYmxlZFN0ciA9IGV2ZW50LmdldCgiRU5BQkxFRCIpOworICAgICAgICAgICAgICAgIGlmIChmdW5jdGlvbiAhPSBudWxsICYmIGVuYWJsZWRTdHIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAvLyBOb3RlOiB3ZSBkbyBub3QgYnJvYWRjYXN0IGEgY2hhbmdlIHdoZW4gYSBmdW5jdGlvbiBpcyBlbmFibGVkIG9yIGRpc2FibGVkLgorICAgICAgICAgICAgICAgICAgICAvLyBXZSBqdXN0IHJlY29yZCB0aGUgc3RhdGUgY2hhbmdlIGZvciB0aGUgbmV4dCBicm9hZGNhc3QuCisgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gZW5hYmxlZCA9ICIxIi5lcXVhbHMoZW5hYmxlZFN0cik7CisgICAgICAgICAgICAgICAgICAgIGlmIChlbmFibGVkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1FbmFibGVkRnVuY3Rpb25zLmNvbnRhaW5zKGZ1bmN0aW9uKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1FbmFibGVkRnVuY3Rpb25zLmFkZChmdW5jdGlvbik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBtRGlzYWJsZWRGdW5jdGlvbnMucmVtb3ZlKGZ1bmN0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbURpc2FibGVkRnVuY3Rpb25zLmNvbnRhaW5zKGZ1bmN0aW9uKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1EaXNhYmxlZEZ1bmN0aW9ucy5hZGQoZnVuY3Rpb24pOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgbUVuYWJsZWRGdW5jdGlvbnMucmVtb3ZlKGZ1bmN0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICBwcml2YXRlIGZpbmFsIHZvaWQgaW5pdCgpIHsKKyAgICAgICAgY2hhcltdIGJ1ZmZlciA9IG5ldyBjaGFyWzEwMjRdOworCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBGaWxlUmVhZGVyIGZpbGUgPSBuZXcgRmlsZVJlYWRlcihVU0JfQ09ORklHVVJBVElPTl9QQVRIKTsKKyAgICAgICAgICAgIGludCBsZW4gPSBmaWxlLnJlYWQoYnVmZmVyLCAwLCAxMDI0KTsKKyAgICAgICAgICAgIG1QcmV2aW91c1VzYkNvbmZpZyA9IG1Vc2JDb25maWcgPSBJbnRlZ2VyLnZhbHVlT2YoKG5ldyBTdHJpbmcoYnVmZmVyLCAwLCBsZW4pKS50cmltKCkpOworCisgICAgICAgIH0gY2F0Y2ggKEZpbGVOb3RGb3VuZEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBTbG9nLncoVEFHLCAiVGhpcyBrZXJuZWwgZG9lcyBub3QgaGF2ZSBVU0IgY29uZmlndXJhdGlvbiBzd2l0Y2ggc3VwcG9ydCIpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgU2xvZy5lKFRBRywgIiIgLCBlKTsKKyAgICAgICAgfQorCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBGaWxlW10gZmlsZXMgPSBuZXcgRmlsZShVU0JfQ09NUE9TSVRFX0NMQVNTX1BBVEgpLmxpc3RGaWxlcygpOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBmaWxlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgIEZpbGUgZmlsZSA9IG5ldyBGaWxlKGZpbGVzW2ldLCAiZW5hYmxlIik7CisgICAgICAgICAgICAgICAgRmlsZVJlYWRlciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcihmaWxlKTsKKyAgICAgICAgICAgICAgICBpbnQgbGVuID0gcmVhZGVyLnJlYWQoYnVmZmVyLCAwLCAxMDI0KTsKKyAgICAgICAgICAgICAgICBpbnQgdmFsdWUgPSBJbnRlZ2VyLnZhbHVlT2YoKG5ldyBTdHJpbmcoYnVmZmVyLCAwLCBsZW4pKS50cmltKCkpOworICAgICAgICAgICAgICAgIFN0cmluZyBmdW5jdGlvbk5hbWUgPSBmaWxlc1tpXS5nZXROYW1lKCk7CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlID09IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgbUVuYWJsZWRGdW5jdGlvbnMuYWRkKGZ1bmN0aW9uTmFtZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbURpc2FibGVkRnVuY3Rpb25zLmFkZChmdW5jdGlvbk5hbWUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBjYXRjaCAoRmlsZU5vdEZvdW5kRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIFNsb2cudyhUQUcsICJUaGlzIGtlcm5lbCBkb2VzIG5vdCBoYXZlIFVTQiBjb21wb3NpdGUgY2xhc3Mgc3VwcG9ydCIpOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgU2xvZy5lKFRBRywgIiIgLCBlKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgc3lzdGVtUmVhZHkoKSB7CisgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgeworICAgICAgICAgICAgdXBkYXRlKCk7CisgICAgICAgICAgICBtU3lzdGVtUmVhZHkgPSB0cnVlOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBmaW5hbCB2b2lkIHVwZGF0ZSgpIHsKKyAgICAgICAgbUhhbmRsZXIuc2VuZEVtcHR5TWVzc2FnZShNU0dfVVBEQVRFKTsKKyAgICB9CisKKyAgICBwcml2YXRlIGZpbmFsIEhhbmRsZXIgbUhhbmRsZXIgPSBuZXcgSGFuZGxlcigpIHsKKyAgICAgICAgcHJpdmF0ZSB2b2lkIGFkZEVuYWJsZWRGdW5jdGlvbnMoSW50ZW50IGludGVudCkgeworICAgICAgICAgICAgLy8gaW5jbHVkZSBzdGF0ZSBvZiBhbGwgVVNCIGZ1bmN0aW9ucyBpbiBvdXIgZXh0cmFzCisgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1FbmFibGVkRnVuY3Rpb25zLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgaW50ZW50LnB1dEV4dHJhKG1FbmFibGVkRnVuY3Rpb25zLmdldChpKSwgVXNiLlVTQl9GVU5DVElPTl9FTkFCTEVEKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbURpc2FibGVkRnVuY3Rpb25zLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgaW50ZW50LnB1dEV4dHJhKG1EaXNhYmxlZEZ1bmN0aW9ucy5nZXQoaSksIFVzYi5VU0JfRlVOQ1RJT05fRElTQUJMRUQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyB2b2lkIGhhbmRsZU1lc3NhZ2UoTWVzc2FnZSBtc2cpIHsKKyAgICAgICAgICAgIHN3aXRjaCAobXNnLndoYXQpIHsKKyAgICAgICAgICAgICAgICBjYXNlIE1TR19VUERBVEU6CisgICAgICAgICAgICAgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgeworICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgQ29udGVudFJlc29sdmVyIGNyID0gbUNvbnRleHQuZ2V0Q29udGVudFJlc29sdmVyKCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChTZXR0aW5ncy5TZWN1cmUuZ2V0SW50KGNyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZXR0aW5ncy5TZWN1cmUuREVWSUNFX1BST1ZJU0lPTkVELCAwKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xvZy5pKFRBRywgIkRldmljZSBub3QgcHJvdmlzaW9uZWQsIHNraXBwaW5nIFVTQiBicm9hZGNhc3QiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBTZW5kIGFuIEludGVudCBjb250YWluaW5nIGNvbm5lY3RlZC9kaXNjb25uZWN0ZWQgc3RhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCB0aGUgZW5hYmxlZC9kaXNhYmxlZCBzdGF0ZSBvZiBhbGwgVVNCIGZ1bmN0aW9ucworICAgICAgICAgICAgICAgICAgICAgICAgSW50ZW50IGludGVudDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gdXNiQ29ubmVjdGVkID0gKG1Vc2JDb25maWcgIT0gMCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodXNiQ29ubmVjdGVkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZW50ID0gbmV3IEludGVudChVc2IuQUNUSU9OX1VTQl9DT05ORUNURUQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZEVuYWJsZWRGdW5jdGlvbnMoaW50ZW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZW50ID0gbmV3IEludGVudChVc2IuQUNUSU9OX1VTQl9ESVNDT05ORUNURUQpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgbUNvbnRleHQuc2VuZEJyb2FkY2FzdChpbnRlbnQpOworCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBzZW5kIGEgc3RpY2t5IGJyb2FkY2FzdCBmb3IgY2xpZW50cyBpbnRlcmVzdGVkIGluIGJvdGggY29ubmVjdCBhbmQgZGlzY29ubmVjdAorICAgICAgICAgICAgICAgICAgICAgICAgaW50ZW50ID0gbmV3IEludGVudChVc2IuQUNUSU9OX1VTQl9TVEFURSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnRlbnQuYWRkRmxhZ3MoSW50ZW50LkZMQUdfUkVDRUlWRVJfUkVQTEFDRV9QRU5ESU5HKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludGVudC5wdXRFeHRyYShVc2IuVVNCX0NPTk5FQ1RFRCwgdXNiQ29ubmVjdGVkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFkZEVuYWJsZWRGdW5jdGlvbnMoaW50ZW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1Db250ZXh0LnNlbmRTdGlja3lCcm9hZGNhc3QoaW50ZW50KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH07Cit9CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9XYXRjaGRvZy5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvV2F0Y2hkb2cuamF2YQppbmRleCBkNDEzM2YzLi5hNzQyMDkzIDEwMDY0NAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9XYXRjaGRvZy5qYXZhCisrKyBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL1dhdGNoZG9nLmphdmEKQEAgLTU3LDIwICs1NywxMCBAQAogICAgIHN0YXRpYyBmaW5hbCBib29sZWFuIFJFQ09SRF9LRVJORUxfVEhSRUFEUyA9IHRydWU7CiAKICAgICBzdGF0aWMgZmluYWwgaW50IE1PTklUT1IgPSAyNzE4OwotICAgIHN0YXRpYyBmaW5hbCBpbnQgR0xPQkFMX1BTUyA9IDI3MTk7CiAKICAgICBzdGF0aWMgZmluYWwgaW50IFRJTUVfVE9fUkVTVEFSVCA9IERCID8gMTUqMTAwMCA6IDYwKjEwMDA7CiAgICAgc3RhdGljIGZpbmFsIGludCBUSU1FX1RPX1dBSVQgPSBUSU1FX1RPX1JFU1RBUlQgLyAyOwogCi0gICAgc3RhdGljIGZpbmFsIGludCBNRU1DSEVDS19ERUZBVUxUX0lOVEVSVkFMID0gREIgPyAzMCA6IDMwKjYwOyAvLyAzMCBtaW51dGVzCi0gICAgc3RhdGljIGZpbmFsIGludCBNRU1DSEVDS19ERUZBVUxUX0xPR19SRUFMVElNRV9JTlRFUlZBTCA9IERCID8gNjAgOiAyKjYwKjYwOyAgICAgIC8vIDIgaG91cnMKLSAgICBzdGF0aWMgZmluYWwgaW50IE1FTUNIRUNLX0RFRkFVTFRfU1lTVEVNX1NPRlRfVEhSRVNIT0xEID0gKERCID8gMTA6MTYpKjEwMjQqMTAyNDsgLy8gMTZNQgotICAgIHN0YXRpYyBmaW5hbCBpbnQgTUVNQ0hFQ0tfREVGQVVMVF9TWVNURU1fSEFSRF9USFJFU0hPTEQgPSAoREIgPyAxNDoyMCkqMTAyNCoxMDI0OyAvLyAyME1CCi0gICAgc3RhdGljIGZpbmFsIGludCBNRU1DSEVDS19ERUZBVUxUX1BIT05FX1NPRlRfVEhSRVNIT0xEID0gKERCID8gNDo4KSoxMDI0KjEwMjQ7ICAgIC8vIDhNQgotICAgIHN0YXRpYyBmaW5hbCBpbnQgTUVNQ0hFQ0tfREVGQVVMVF9QSE9ORV9IQVJEX1RIUkVTSE9MRCA9IChEQiA/IDg6MTIpKjEwMjQqMTAyNDsgICAvLyAxMk1CCi0KLSAgICBzdGF0aWMgZmluYWwgaW50IE1FTUNIRUNLX0RFRkFVTFRfRVhFQ19TVEFSVF9USU1FID0gMSo2MCo2MDsgICAgICAgICAgIC8vIDE6MDBhbQotICAgIHN0YXRpYyBmaW5hbCBpbnQgTUVNQ0hFQ0tfREVGQVVMVF9FWEVDX0VORF9USU1FID0gNSo2MCo2MDsgICAgICAgICAgICAgLy8gNTowMGFtCiAgICAgc3RhdGljIGZpbmFsIGludCBNRU1DSEVDS19ERUZBVUxUX01JTl9TQ1JFRU5fT0ZGID0gREIgPyAxKjYwIDogNSo2MDsgICAvLyA1IG1pbnV0ZXMKICAgICBzdGF0aWMgZmluYWwgaW50IE1FTUNIRUNLX0RFRkFVTFRfTUlOX0FMQVJNID0gREIgPyAxKjYwIDogMyo2MDsgICAgICAgIC8vIDMgbWludXRlcwogICAgIHN0YXRpYyBmaW5hbCBpbnQgTUVNQ0hFQ0tfREVGQVVMVF9SRUNIRUNLX0lOVEVSVkFMID0gREIgPyAxKjYwIDogNSo2MDsgLy8gNSBtaW51dGVzCkBAIC03OSwxNCArNjksMTIgQEAKICAgICBzdGF0aWMgZmluYWwgaW50IFJFQk9PVF9ERUZBVUxUX1NUQVJUX1RJTUUgPSAzKjYwKjYwOyAgICAgICAgICAgICAgICAgIC8vIDM6MDBhbQogICAgIHN0YXRpYyBmaW5hbCBpbnQgUkVCT09UX0RFRkFVTFRfV0lORE9XID0gNjAqNjA7ICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2l0aGluIDEgaG91cgogCi0gICAgc3RhdGljIGZpbmFsIFN0cmluZyBDSEVDS1VQX0FDVElPTiA9ICJjb20uYW5kcm9pZC5zZXJ2aWNlLldhdGNoZG9nLkNIRUNLVVAiOwogICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgUkVCT09UX0FDVElPTiA9ICJjb20uYW5kcm9pZC5zZXJ2aWNlLldhdGNoZG9nLlJFQk9PVCI7CiAKICAgICBzdGF0aWMgV2F0Y2hkb2cgc1dhdGNoZG9nOwogCiAgICAgLyogVGhpcyBoYW5kbGVyIHdpbGwgYmUgdXNlZCB0byBwb3N0IG1lc3NhZ2UgYmFjayBvbnRvIHRoZSBtYWluIHRocmVhZCAqLwogICAgIGZpbmFsIEhhbmRsZXIgbUhhbmRsZXI7Ci0gICAgZmluYWwgUnVubmFibGUgbUdsb2JhbFBzc0NvbGxlY3RlZDsKICAgICBmaW5hbCBBcnJheUxpc3Q8TW9uaXRvcj4gbU1vbml0b3JzID0gbmV3IEFycmF5TGlzdDxNb25pdG9yPigpOwogICAgIENvbnRlbnRSZXNvbHZlciBtUmVzb2x2ZXI7CiAgICAgQmF0dGVyeVNlcnZpY2UgbUJhdHRlcnk7CkBAIC05NywzMSArODUsOSBAQAogICAgIGJvb2xlYW4gbUZvcmNlS2lsbFN5c3RlbTsKICAgICBNb25pdG9yIG1DdXJyZW50TW9uaXRvcjsKIAotICAgIFBzc1JlcXVlc3RvciBtUGhvbmVSZXE7CiAgICAgaW50IG1QaG9uZVBpZDsKLSAgICBpbnQgbVBob25lUHNzOwotCi0gICAgbG9uZyBtTGFzdE1lbUNoZWNrVGltZSA9IC0oTUVNQ0hFQ0tfREVGQVVMVF9JTlRFUlZBTCoxMDAwKTsKLSAgICBib29sZWFuIG1IYXZlUHNzOwotICAgIGxvbmcgbUxhc3RNZW1DaGVja1JlYWx0aW1lID0gLShNRU1DSEVDS19ERUZBVUxUX0xPR19SRUFMVElNRV9JTlRFUlZBTCoxMDAwKTsKLSAgICBib29sZWFuIG1IYXZlR2xvYmFsUHNzOwotICAgIGZpbmFsIE1lbU1vbml0b3IgbVN5c3RlbU1lbU1vbml0b3IgPSBuZXcgTWVtTW9uaXRvcigic3lzdGVtIiwKLSAgICAgICAgICAgIFNldHRpbmdzLlNlY3VyZS5NRU1DSEVDS19TWVNURU1fRU5BQkxFRCwKLSAgICAgICAgICAgIFNldHRpbmdzLlNlY3VyZS5NRU1DSEVDS19TWVNURU1fU09GVF9USFJFU0hPTEQsCi0gICAgICAgICAgICBNRU1DSEVDS19ERUZBVUxUX1NZU1RFTV9TT0ZUX1RIUkVTSE9MRCwKLSAgICAgICAgICAgIFNldHRpbmdzLlNlY3VyZS5NRU1DSEVDS19TWVNURU1fSEFSRF9USFJFU0hPTEQsCi0gICAgICAgICAgICBNRU1DSEVDS19ERUZBVUxUX1NZU1RFTV9IQVJEX1RIUkVTSE9MRCk7Ci0gICAgZmluYWwgTWVtTW9uaXRvciBtUGhvbmVNZW1Nb25pdG9yID0gbmV3IE1lbU1vbml0b3IoImNvbS5hbmRyb2lkLnBob25lIiwKLSAgICAgICAgICAgIFNldHRpbmdzLlNlY3VyZS5NRU1DSEVDS19QSE9ORV9FTkFCTEVELAotICAgICAgICAgICAgU2V0dGluZ3MuU2VjdXJlLk1FTUNIRUNLX1BIT05FX1NPRlRfVEhSRVNIT0xELAotICAgICAgICAgICAgTUVNQ0hFQ0tfREVGQVVMVF9QSE9ORV9TT0ZUX1RIUkVTSE9MRCwKLSAgICAgICAgICAgIFNldHRpbmdzLlNlY3VyZS5NRU1DSEVDS19QSE9ORV9IQVJEX1RIUkVTSE9MRCwKLSAgICAgICAgICAgIE1FTUNIRUNLX0RFRkFVTFRfUEhPTkVfSEFSRF9USFJFU0hPTEQpOwogCiAgICAgZmluYWwgQ2FsZW5kYXIgbUNhbGVuZGFyID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKTsKLSAgICBsb25nIG1NZW1jaGVja0xhc3RUaW1lOwotICAgIGxvbmcgbU1lbWNoZWNrRXhlY1N0YXJ0VGltZTsKLSAgICBsb25nIG1NZW1jaGVja0V4ZWNFbmRUaW1lOwogICAgIGludCBtTWluU2NyZWVuT2ZmID0gTUVNQ0hFQ0tfREVGQVVMVF9NSU5fU0NSRUVOX09GRjsKICAgICBpbnQgbU1pbkFsYXJtID0gTUVNQ0hFQ0tfREVGQVVMVF9NSU5fQUxBUk07CiAgICAgYm9vbGVhbiBtTmVlZFNjaGVkdWxlZENoZWNrOwpAQCAtMTQwLDEyNiArMTA2LDEzIEBACiAgICAgaW50IG1SZXFSZWNoZWNrSW50ZXJ2YWw9IC0xOyAgLy8gPj0gMCBpZiBhIHNwZWNpZmljIHJlY2hlY2sgaW50ZXJ2YWwgaGFzIGJlZW4gcmVxdWVzdGVkCiAKICAgICAvKioKLSAgICAgKiBUaGlzIGNsYXNzIG1vbml0b3JzIHRoZSBtZW1vcnkgaW4gYSBwYXJ0aWN1bGFyIHByb2Nlc3MuCi0gICAgICovCi0gICAgZmluYWwgY2xhc3MgTWVtTW9uaXRvciB7Ci0gICAgICAgIGZpbmFsIFN0cmluZyBtUHJvY2Vzc05hbWU7Ci0gICAgICAgIGZpbmFsIFN0cmluZyBtRW5hYmxlZFNldHRpbmc7Ci0gICAgICAgIGZpbmFsIFN0cmluZyBtU29mdFNldHRpbmc7Ci0gICAgICAgIGZpbmFsIFN0cmluZyBtSGFyZFNldHRpbmc7Ci0KLSAgICAgICAgaW50IG1Tb2Z0VGhyZXNob2xkOwotICAgICAgICBpbnQgbUhhcmRUaHJlc2hvbGQ7Ci0gICAgICAgIGJvb2xlYW4gbUVuYWJsZWQ7Ci0gICAgICAgIGxvbmcgbUxhc3RQc3M7Ci0KLSAgICAgICAgc3RhdGljIGZpbmFsIGludCBTVEFURV9PSyA9IDA7Ci0gICAgICAgIHN0YXRpYyBmaW5hbCBpbnQgU1RBVEVfU09GVCA9IDE7Ci0gICAgICAgIHN0YXRpYyBmaW5hbCBpbnQgU1RBVEVfSEFSRCA9IDI7Ci0gICAgICAgIGludCBtU3RhdGU7Ci0KLSAgICAgICAgTWVtTW9uaXRvcihTdHJpbmcgcHJvY2Vzc05hbWUsIFN0cmluZyBlbmFibGVkU2V0dGluZywKLSAgICAgICAgICAgICAgICBTdHJpbmcgc29mdFNldHRpbmcsIGludCBkZWZTb2Z0VGhyZXNob2xkLAotICAgICAgICAgICAgICAgIFN0cmluZyBoYXJkU2V0dGluZywgaW50IGRlZkhhcmRUaHJlc2hvbGQpIHsKLSAgICAgICAgICAgIG1Qcm9jZXNzTmFtZSA9IHByb2Nlc3NOYW1lOwotICAgICAgICAgICAgbUVuYWJsZWRTZXR0aW5nID0gZW5hYmxlZFNldHRpbmc7Ci0gICAgICAgICAgICBtU29mdFNldHRpbmcgPSBzb2Z0U2V0dGluZzsKLSAgICAgICAgICAgIG1IYXJkU2V0dGluZyA9IGhhcmRTZXR0aW5nOwotICAgICAgICAgICAgbVNvZnRUaHJlc2hvbGQgPSBkZWZTb2Z0VGhyZXNob2xkOwotICAgICAgICAgICAgbUhhcmRUaHJlc2hvbGQgPSBkZWZIYXJkVGhyZXNob2xkOwotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCByZXRyaWV2ZVNldHRpbmdzKENvbnRlbnRSZXNvbHZlciByZXNvbHZlcikgewotICAgICAgICAgICAgbVNvZnRUaHJlc2hvbGQgPSBTZXR0aW5ncy5TZWN1cmUuZ2V0SW50KAotICAgICAgICAgICAgICAgICAgICByZXNvbHZlciwgbVNvZnRTZXR0aW5nLCBtU29mdFRocmVzaG9sZCk7Ci0gICAgICAgICAgICBtSGFyZFRocmVzaG9sZCA9IFNldHRpbmdzLlNlY3VyZS5nZXRJbnQoCi0gICAgICAgICAgICAgICAgICAgIHJlc29sdmVyLCBtSGFyZFNldHRpbmcsIG1IYXJkVGhyZXNob2xkKTsKLSAgICAgICAgICAgIG1FbmFibGVkID0gU2V0dGluZ3MuU2VjdXJlLmdldEludCgKLSAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZXIsIG1FbmFibGVkU2V0dGluZywgMCkgIT0gMDsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2xlYW4gY2hlY2tMb2NrZWQobG9uZyBjdXJUaW1lLCBpbnQgcGlkLCBpbnQgcHNzKSB7Ci0gICAgICAgICAgICBtTGFzdFBzcyA9IHBzczsKLSAgICAgICAgICAgIGlmIChtTGFzdFBzcyA8IG1Tb2Z0VGhyZXNob2xkKSB7Ci0gICAgICAgICAgICAgICAgbVN0YXRlID0gU1RBVEVfT0s7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKG1MYXN0UHNzIDwgbUhhcmRUaHJlc2hvbGQpIHsKLSAgICAgICAgICAgICAgICBtU3RhdGUgPSBTVEFURV9TT0ZUOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtU3RhdGUgPSBTVEFURV9IQVJEOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgRXZlbnRMb2cud3JpdGVFdmVudChFdmVudExvZ1RhZ3MuV0FUQ0hET0dfUFJPQ19QU1MsIG1Qcm9jZXNzTmFtZSwgcGlkLCBtTGFzdFBzcyk7Ci0KLSAgICAgICAgICAgIGlmIChtU3RhdGUgPT0gU1RBVEVfT0spIHsKLSAgICAgICAgICAgICAgICAvLyBNZW1vcnkgaXMgZ29vZCwgZG9uJ3QgcmVjb3Zlci4KLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChtU3RhdGUgPT0gU1RBVEVfSEFSRCkgewotICAgICAgICAgICAgICAgIC8vIE1lbW9yeSBpcyByZWFsbHkgYmFkLCBraWxsIHJpZ2h0IG5vdy4KLSAgICAgICAgICAgICAgICBFdmVudExvZy53cml0ZUV2ZW50KEV2ZW50TG9nVGFncy5XQVRDSERPR19IQVJEX1JFU0VULCBtUHJvY2Vzc05hbWUsIHBpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgIG1IYXJkVGhyZXNob2xkLCBtTGFzdFBzcyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1FbmFibGVkOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBJdCBpcyB0aW1lIHRvIHNjaGVkdWxlIGEgcmVzZXQuLi4KLSAgICAgICAgICAgIC8vIENoZWNrIGlmIHdlIGFyZSBjdXJyZW50bHkgd2l0aGluIHRoZSB0aW1lIHRvIGtpbGwgcHJvY2Vzc2VzIGR1ZQotICAgICAgICAgICAgLy8gdG8gbWVtb3J5IHVzZS4KLSAgICAgICAgICAgIGNvbXB1dGVNZW1jaGVja1RpbWVzTG9ja2VkKGN1clRpbWUpOwotICAgICAgICAgICAgU3RyaW5nIHNraXBSZWFzb24gPSBudWxsOwotICAgICAgICAgICAgaWYgKGN1clRpbWUgPCBtTWVtY2hlY2tFeGVjU3RhcnRUaW1lIHx8IGN1clRpbWUgPiBtTWVtY2hlY2tFeGVjRW5kVGltZSkgewotICAgICAgICAgICAgICAgIHNraXBSZWFzb24gPSAidGltZSI7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHNraXBSZWFzb24gPSBzaG91bGRXZUJlQnJ1dGFsTG9ja2VkKGN1clRpbWUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgRXZlbnRMb2cud3JpdGVFdmVudChFdmVudExvZ1RhZ3MuV0FUQ0hET0dfU09GVF9SRVNFVCwgbVByb2Nlc3NOYW1lLCBwaWQsCi0gICAgICAgICAgICAgICAgICAgIG1Tb2Z0VGhyZXNob2xkLCBtTGFzdFBzcywgc2tpcFJlYXNvbiAhPSBudWxsID8gc2tpcFJlYXNvbiA6ICIiKTsKLSAgICAgICAgICAgIGlmIChza2lwUmVhc29uICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBtTmVlZFNjaGVkdWxlZENoZWNrID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gbUVuYWJsZWQ7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGNsZWFyKCkgewotICAgICAgICAgICAgbUxhc3RQc3MgPSAwOwotICAgICAgICAgICAgbVN0YXRlID0gU1RBVEVfT0s7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKioKICAgICAgKiBVc2VkIGZvciBzY2hlZHVsaW5nIG1vbml0b3IgY2FsbGJhY2tzIGFuZCBjaGVja2luZyBtZW1vcnkgdXNhZ2UuCiAgICAgICovCiAgICAgZmluYWwgY2xhc3MgSGVhcnRiZWF0SGFuZGxlciBleHRlbmRzIEhhbmRsZXIgewogICAgICAgICBAT3ZlcnJpZGUKICAgICAgICAgcHVibGljIHZvaWQgaGFuZGxlTWVzc2FnZShNZXNzYWdlIG1zZykgewogICAgICAgICAgICAgc3dpdGNoIChtc2cud2hhdCkgewotICAgICAgICAgICAgICAgIGNhc2UgR0xPQkFMX1BTUzogewotICAgICAgICAgICAgICAgICAgICBpZiAobUhhdmVHbG9iYWxQc3MpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIER1cmluZyB0aGUgbGFzdCBwYXNzIHdlIGNvbGxlY3RlZCBwc3MgaW5mb3JtYXRpb24sIHNvCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBub3cgaXQgaXMgdGltZSB0byByZXBvcnQgaXQuCi0gICAgICAgICAgICAgICAgICAgICAgICBtSGF2ZUdsb2JhbFBzcyA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxvY2FsTE9HVikgU2xvZy52KFRBRywgIlJlY2VpdmVkIGdsb2JhbCBwc3MsIGxvZ2dpbmcuIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb2dHbG9iYWxNZW1vcnkoKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0gYnJlYWs7Ci0KICAgICAgICAgICAgICAgICBjYXNlIE1PTklUT1I6IHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1IYXZlUHNzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBEdXJpbmcgdGhlIGxhc3QgcGFzcyB3ZSBjb2xsZWN0ZWQgcHNzIGluZm9ybWF0aW9uLCBzbwotICAgICAgICAgICAgICAgICAgICAgICAgLy8gbm93IGl0IGlzIHRpbWUgdG8gcmVwb3J0IGl0LgotICAgICAgICAgICAgICAgICAgICAgICAgbUhhdmVQc3MgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsb2NhbExPR1YpIFNsb2cudihUQUcsICJIYXZlIHBzcywgY2hlY2tpbmcgbWVtb3J5LiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tNZW1vcnkoKTsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGlmIChtSGF2ZUdsb2JhbFBzcykgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gRHVyaW5nIHRoZSBsYXN0IHBhc3Mgd2UgY29sbGVjdGVkIHBzcyBpbmZvcm1hdGlvbiwgc28KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIG5vdyBpdCBpcyB0aW1lIHRvIHJlcG9ydCBpdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIG1IYXZlR2xvYmFsUHNzID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobG9jYWxMT0dWKSBTbG9nLnYoVEFHLCAiSGF2ZSBnbG9iYWwgcHNzLCBsb2dnaW5nLiIpOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9nR2xvYmFsTWVtb3J5KCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQogICAgICAgICAgICAgICAgICAgICBsb25nIG5vdyA9IFN5c3RlbUNsb2NrLnVwdGltZU1pbGxpcygpOwogCiAgICAgICAgICAgICAgICAgICAgIC8vIFNlZSBpZiB3ZSBzaG91bGQgZm9yY2UgYSByZWJvb3QuCkBAIC0yNzQsMzIgKzEyNyw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja1JlYm9vdChmYWxzZSk7CiAgICAgICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgICAgICAvLyBTZWUgaWYgd2Ugc2hvdWxkIGNoZWNrIG1lbW9yeSBjb25kaXRpb25zLgotICAgICAgICAgICAgICAgICAgICBsb25nIG1lbUNoZWNrSW50ZXJ2YWwgPSBTZXR0aW5ncy5TZWN1cmUuZ2V0TG9uZygKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtUmVzb2x2ZXIsIFNldHRpbmdzLlNlY3VyZS5NRU1DSEVDS19JTlRFUlZBTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRU1DSEVDS19ERUZBVUxUX0lOVEVSVkFMKSAqIDEwMDA7Ci0gICAgICAgICAgICAgICAgICAgIGlmICgobUxhc3RNZW1DaGVja1RpbWUrbWVtQ2hlY2tJbnRlcnZhbCkgPCBub3cpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEl0IGlzIG5vdyB0aW1lIHRvIGNvbGxlY3QgcHNzIGluZm9ybWF0aW9uLiAgVGhpcwotICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgYXN5bmMgc28gd2Ugd29uJ3QgcmVwb3J0IGl0IG5vdy4gIEFuZCB0byBrZWVwCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGluZ3Mgc2ltcGxlLCB3ZSB3aWxsIGFzc3VtZSB0aGF0IGV2ZXJ5b25lIGhhcwotICAgICAgICAgICAgICAgICAgICAgICAgLy8gcmVwb3J0ZWQgYmFjayBieSB0aGUgbmV4dCBNT05JVE9SIG1lc3NhZ2UuCi0gICAgICAgICAgICAgICAgICAgICAgICBtTGFzdE1lbUNoZWNrVGltZSA9IG5vdzsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsb2NhbExPR1YpIFNsb2cudihUQUcsICJDb2xsZWN0aW5nIG1lbW9yeSB1c2FnZS4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlY3RNZW1vcnkoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1IYXZlUHNzID0gdHJ1ZTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyBtZW1DaGVja1JlYWx0aW1lSW50ZXJ2YWwgPSBTZXR0aW5ncy5TZWN1cmUuZ2V0TG9uZygKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVJlc29sdmVyLCBTZXR0aW5ncy5TZWN1cmUuTUVNQ0hFQ0tfTE9HX1JFQUxUSU1FX0lOVEVSVkFMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNRU1DSEVDS19ERUZBVUxUX0xPR19SRUFMVElNRV9JTlRFUlZBTCkgKiAxMDAwOwotICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyByZWFsdGltZU5vdyA9IFN5c3RlbUNsb2NrLmVsYXBzZWRSZWFsdGltZSgpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChtTGFzdE1lbUNoZWNrUmVhbHRpbWUrbWVtQ2hlY2tSZWFsdGltZUludGVydmFsKSA8IHJlYWx0aW1lTm93KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbUxhc3RNZW1DaGVja1JlYWx0aW1lID0gcmVhbHRpbWVOb3c7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxvY2FsTE9HVikgU2xvZy52KFRBRywgIkNvbGxlY3RpbmcgZ2xvYmFsIG1lbW9yeSB1c2FnZS4iKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsZWN0R2xvYmFsTWVtb3J5KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbUhhdmVHbG9iYWxQc3MgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0KICAgICAgICAgICAgICAgICAgICAgZmluYWwgaW50IHNpemUgPSBtTW9uaXRvcnMuc2l6ZSgpOwogICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMCA7IGkgPCBzaXplIDsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBtQ3VycmVudE1vbml0b3IgPSBtTW9uaXRvcnMuZ2V0KGkpOwpAQCAtMzE1LDIwICsxNDIsNiBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgZmluYWwgY2xhc3MgR2xvYmFsUHNzQ29sbGVjdGVkIGltcGxlbWVudHMgUnVubmFibGUgewotICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7Ci0gICAgICAgICAgICBtSGFuZGxlci5zZW5kRW1wdHlNZXNzYWdlKEdMT0JBTF9QU1MpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgZmluYWwgY2xhc3MgQ2hlY2t1cFJlY2VpdmVyIGV4dGVuZHMgQnJvYWRjYXN0UmVjZWl2ZXIgewotICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIHZvaWQgb25SZWNlaXZlKENvbnRleHQgYywgSW50ZW50IGludGVudCkgewotICAgICAgICAgICAgaWYgKGxvY2FsTE9HVikgU2xvZy52KFRBRywgIkFsYXJtIHdlbnQgb2ZmLCBjaGVja2luZyBtZW1vcnkuIik7Ci0gICAgICAgICAgICBjaGVja01lbW9yeSgpOwotICAgICAgICB9Ci0gICAgfQotCiAgICAgZmluYWwgY2xhc3MgUmVib290UmVjZWl2ZXIgZXh0ZW5kcyBCcm9hZGNhc3RSZWNlaXZlciB7CiAgICAgICAgIEBPdmVycmlkZQogICAgICAgICBwdWJsaWMgdm9pZCBvblJlY2VpdmUoQ29udGV4dCBjLCBJbnRlbnQgaW50ZW50KSB7CkBAIC0zNTksMjcgKzE3Miw2IEBACiAgICAgICAgIHZvaWQgbW9uaXRvcigpOwogICAgIH0KIAotICAgIHB1YmxpYyBpbnRlcmZhY2UgUHNzUmVxdWVzdG9yIHsKLSAgICAgICAgdm9pZCByZXF1ZXN0UHNzKCk7Ci0gICAgfQotCi0gICAgcHVibGljIGNsYXNzIFBzc1N0YXRzIHsKLSAgICAgICAgcHVibGljIGludCBtRW1wdHlQc3M7Ci0gICAgICAgIHB1YmxpYyBpbnQgbUVtcHR5Q291bnQ7Ci0gICAgICAgIHB1YmxpYyBpbnQgbUJhY2tncm91bmRQc3M7Ci0gICAgICAgIHB1YmxpYyBpbnQgbUJhY2tncm91bmRDb3VudDsKLSAgICAgICAgcHVibGljIGludCBtU2VydmljZVBzczsKLSAgICAgICAgcHVibGljIGludCBtU2VydmljZUNvdW50OwotICAgICAgICBwdWJsaWMgaW50IG1WaXNpYmxlUHNzOwotICAgICAgICBwdWJsaWMgaW50IG1WaXNpYmxlQ291bnQ7Ci0gICAgICAgIHB1YmxpYyBpbnQgbUZvcmVncm91bmRQc3M7Ci0gICAgICAgIHB1YmxpYyBpbnQgbUZvcmVncm91bmRDb3VudDsKLQotICAgICAgICBwdWJsaWMgaW50IG1Ob1Bzc0NvdW50OwotCi0gICAgICAgIHB1YmxpYyBpbnQgbVByb2NEZWF0aHNbXSA9IG5ldyBpbnRbMTBdOwotICAgIH0KLQogICAgIHB1YmxpYyBzdGF0aWMgV2F0Y2hkb2cgZ2V0SW5zdGFuY2UoKSB7CiAgICAgICAgIGlmIChzV2F0Y2hkb2cgPT0gbnVsbCkgewogICAgICAgICAgICAgc1dhdGNoZG9nID0gbmV3IFdhdGNoZG9nKCk7CkBAIC0zOTEsNyArMTgzLDYgQEAKICAgICBwcml2YXRlIFdhdGNoZG9nKCkgewogICAgICAgICBzdXBlcigid2F0Y2hkb2ciKTsKICAgICAgICAgbUhhbmRsZXIgPSBuZXcgSGVhcnRiZWF0SGFuZGxlcigpOwotICAgICAgICBtR2xvYmFsUHNzQ29sbGVjdGVkID0gbmV3IEdsb2JhbFBzc0NvbGxlY3RlZCgpOwogICAgIH0KIAogICAgIHB1YmxpYyB2b2lkIGluaXQoQ29udGV4dCBjb250ZXh0LCBCYXR0ZXJ5U2VydmljZSBiYXR0ZXJ5LApAQCAtNDAzLDExICsxOTQsNiBAQAogICAgICAgICBtQWxhcm0gPSBhbGFybTsKICAgICAgICAgbUFjdGl2aXR5ID0gYWN0aXZpdHk7CiAKLSAgICAgICAgY29udGV4dC5yZWdpc3RlclJlY2VpdmVyKG5ldyBDaGVja3VwUmVjZWl2ZXIoKSwKLSAgICAgICAgICAgICAgICBuZXcgSW50ZW50RmlsdGVyKENIRUNLVVBfQUNUSU9OKSk7Ci0gICAgICAgIG1DaGVja3VwSW50ZW50ID0gUGVuZGluZ0ludGVudC5nZXRCcm9hZGNhc3QoY29udGV4dCwKLSAgICAgICAgICAgICAgICAwLCBuZXcgSW50ZW50KENIRUNLVVBfQUNUSU9OKSwgMCk7Ci0KICAgICAgICAgY29udGV4dC5yZWdpc3RlclJlY2VpdmVyKG5ldyBSZWJvb3RSZWNlaXZlcigpLAogICAgICAgICAgICAgICAgIG5ldyBJbnRlbnRGaWx0ZXIoUkVCT09UX0FDVElPTikpOwogICAgICAgICBtUmVib290SW50ZW50ID0gUGVuZGluZ0ludGVudC5nZXRCcm9hZGNhc3QoY29udGV4dCwKQEAgLTQyMCwyMCArMjA2LDEwIEBACiAgICAgICAgIG1Cb290VGltZSA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOwogICAgIH0KIAotICAgIHB1YmxpYyB2b2lkIHByb2Nlc3NTdGFydGVkKFBzc1JlcXVlc3RvciByZXEsIFN0cmluZyBuYW1lLCBpbnQgcGlkKSB7CisgICAgcHVibGljIHZvaWQgcHJvY2Vzc1N0YXJ0ZWQoU3RyaW5nIG5hbWUsIGludCBwaWQpIHsKICAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7CiAgICAgICAgICAgICBpZiAoImNvbS5hbmRyb2lkLnBob25lIi5lcXVhbHMobmFtZSkpIHsKLSAgICAgICAgICAgICAgICBtUGhvbmVSZXEgPSByZXE7CiAgICAgICAgICAgICAgICAgbVBob25lUGlkID0gcGlkOwotICAgICAgICAgICAgICAgIG1QaG9uZVBzcyA9IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCByZXBvcnRQc3MoUHNzUmVxdWVzdG9yIHJlcSwgU3RyaW5nIG5hbWUsIGludCBwc3MpIHsKLSAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7Ci0gICAgICAgICAgICBpZiAobVBob25lUmVxID09IHJlcSkgewotICAgICAgICAgICAgICAgIG1QaG9uZVBzcyA9IHBzczsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTQ0NywxNTIgKzIyMyw2IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvKioKLSAgICAgKiBSZXRyaWV2ZSBtZW1vcnkgdXNhZ2UgaW5mb3JtYXRpb24gZnJvbSBzcGVjaWZpYyBwcm9jZXNzZXMgYmVpbmcKLSAgICAgKiBtb25pdG9yZWQuICBUaGlzIGlzIGFuIGFzeW5jIG9wZXJhdGlvbiwgc28gbXVzdCBiZSBkb25lIGJlZm9yZSBkb2luZwotICAgICAqIG1lbW9yeSBjaGVja3MuCi0gICAgICovCi0gICAgdm9pZCBjb2xsZWN0TWVtb3J5KCkgewotICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKLSAgICAgICAgICAgIGlmIChtUGhvbmVSZXEgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIG1QaG9uZVJlcS5yZXF1ZXN0UHNzKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBSZXRyaWV2ZSBtZW1vcnkgdXNhZ2Ugb3ZlciBhbGwgYXBwbGljYXRpb24gcHJvY2Vzc2VzLiAgVGhpcyBpcyBhbgotICAgICAqIGFzeW5jIG9wZXJhdGlvbiwgc28gbXVzdCBiZSBkb25lIGJlZm9yZSBkb2luZyBtZW1vcnkgY2hlY2tzLgotICAgICAqLwotICAgIHZvaWQgY29sbGVjdEdsb2JhbE1lbW9yeSgpIHsKLSAgICAgICAgbUFjdGl2aXR5LnJlcXVlc3RQc3MobUdsb2JhbFBzc0NvbGxlY3RlZCk7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogQ2hlY2sgbWVtb3J5IHVzYWdlIGluIHRoZSBzeXN0ZW0sIHNjaGVkdWxpbmcga2lsbHMvcmVib290cyBhcyBuZWVkZWQuCi0gICAgICogVGhpcyBhbHdheXMgcnVucyBvbiB0aGUgbUhhbmRsZXIgdGhyZWFkLgotICAgICAqLwotICAgIHZvaWQgY2hlY2tNZW1vcnkoKSB7Ci0gICAgICAgIGJvb2xlYW4gbmVlZFNjaGVkdWxlZENoZWNrOwotICAgICAgICBsb25nIGN1clRpbWU7Ci0gICAgICAgIGxvbmcgbmV4dFRpbWUgPSAwOwotCi0gICAgICAgIGxvbmcgcmVjaGVja0ludGVydmFsID0gU2V0dGluZ3MuU2VjdXJlLmdldExvbmcoCi0gICAgICAgICAgICAgICAgbVJlc29sdmVyLCBTZXR0aW5ncy5TZWN1cmUuTUVNQ0hFQ0tfUkVDSEVDS19JTlRFUlZBTCwKLSAgICAgICAgICAgICAgICBNRU1DSEVDS19ERUZBVUxUX1JFQ0hFQ0tfSU5URVJWQUwpICogMTAwMDsKLQotICAgICAgICBtU3lzdGVtTWVtTW9uaXRvci5yZXRyaWV2ZVNldHRpbmdzKG1SZXNvbHZlcik7Ci0gICAgICAgIG1QaG9uZU1lbU1vbml0b3IucmV0cmlldmVTZXR0aW5ncyhtUmVzb2x2ZXIpOwotICAgICAgICByZXRyaWV2ZUJydXRhbGl0eUFtb3VudCgpOwotCi0gICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgewotICAgICAgICAgICAgY3VyVGltZSA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOwotICAgICAgICAgICAgbU5lZWRTY2hlZHVsZWRDaGVjayA9IGZhbHNlOwotCi0gICAgICAgICAgICAvLyBIb3cgaXMgdGhlIHN5c3RlbSBkb2luZz8KLSAgICAgICAgICAgIGlmIChtU3lzdGVtTWVtTW9uaXRvci5jaGVja0xvY2tlZChjdXJUaW1lLCBQcm9jZXNzLm15UGlkKCksCi0gICAgICAgICAgICAgICAgICAgIChpbnQpUHJvY2Vzcy5nZXRQc3MoUHJvY2Vzcy5teVBpZCgpKSkpIHsKLSAgICAgICAgICAgICAgICAvLyBOb3QgZ29vZCEgIFRpbWUgdG8gc3VpY2lkZS4KLSAgICAgICAgICAgICAgICBtRm9yY2VLaWxsU3lzdGVtID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBub3RpZnlBbGwoKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIEhvdyBpcyB0aGUgcGhvbmUgcHJvY2VzcyBkb2luZz8KLSAgICAgICAgICAgIGlmIChtUGhvbmVSZXEgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIGlmIChtUGhvbmVNZW1Nb25pdG9yLmNoZWNrTG9ja2VkKGN1clRpbWUsIG1QaG9uZVBpZCwKLSAgICAgICAgICAgICAgICAgICAgICAgIG1QaG9uZVBzcykpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gSnVzdCBraWxsIHRoZSBwaG9uZSBwcm9jZXNzIGFuZCBsZXQgaXQgcmVzdGFydC4KLSAgICAgICAgICAgICAgICAgICAgU2xvZy5pKFRBRywgIldhdGNoZG9nIGlzIGtpbGxpbmcgdGhlIHBob25lIHByb2Nlc3MiKTsKLSAgICAgICAgICAgICAgICAgICAgUHJvY2Vzcy5raWxsUHJvY2VzcyhtUGhvbmVQaWQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbVBob25lTWVtTW9uaXRvci5jbGVhcigpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBuZWVkU2NoZWR1bGVkQ2hlY2sgPSBtTmVlZFNjaGVkdWxlZENoZWNrOwotICAgICAgICAgICAgaWYgKG5lZWRTY2hlZHVsZWRDaGVjaykgewotICAgICAgICAgICAgICAgIC8vIFNvbWV0aGluZyBpcyBnb2luZyBiYWQsIGJ1dCBub3cgaXMgbm90IGEgZ29vZCB0aW1lIHRvCi0gICAgICAgICAgICAgICAgLy8gdGVhciB0aGluZ3MgZG93bi4uLiAgc2NoZWR1bGUgYW4gYWxhcm0gdG8gY2hlY2sgYWdhaW4gc29vbi4KLSAgICAgICAgICAgICAgICBuZXh0VGltZSA9IGN1clRpbWUgKyByZWNoZWNrSW50ZXJ2YWw7Ci0gICAgICAgICAgICAgICAgaWYgKG5leHRUaW1lIDwgbU1lbWNoZWNrRXhlY1N0YXJ0VGltZSkgewotICAgICAgICAgICAgICAgICAgICBuZXh0VGltZSA9IG1NZW1jaGVja0V4ZWNTdGFydFRpbWU7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChuZXh0VGltZSA+PSBtTWVtY2hlY2tFeGVjRW5kVGltZSl7Ci0gICAgICAgICAgICAgICAgICAgIC8vIE5lZWQgdG8gY2hlY2sgZHVyaW5nIG5leHQgZXhlYyB0aW1lLi4uICBzbyB0aGF0IG5lZWRzCi0gICAgICAgICAgICAgICAgICAgIC8vIHRvIGJlIGNvbXB1dGVkLgotICAgICAgICAgICAgICAgICAgICBpZiAobG9jYWxMT0dWKSBTbG9nLnYoVEFHLCAiQ29tcHV0aW5nIG5leHQgdGltZSByYW5nZSIpOwotICAgICAgICAgICAgICAgICAgICBjb21wdXRlTWVtY2hlY2tUaW1lc0xvY2tlZChuZXh0VGltZSk7Ci0gICAgICAgICAgICAgICAgICAgIG5leHRUaW1lID0gbU1lbWNoZWNrRXhlY1N0YXJ0VGltZTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAobG9jYWxMT0dWKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1DYWxlbmRhci5zZXRUaW1lSW5NaWxsaXMobmV4dFRpbWUpOwotICAgICAgICAgICAgICAgICAgICBTbG9nLnYoVEFHLCAiTmV4dCBBbGFybSBUaW1lOiAiICsgbUNhbGVuZGFyKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobmVlZFNjaGVkdWxlZENoZWNrKSB7Ci0gICAgICAgICAgICBpZiAobG9jYWxMT0dWKSBTbG9nLnYoVEFHLCAiU2NoZWR1bGluZyBuZXh0IG1lbWNoZWNrIGFsYXJtIGZvciAiCi0gICAgICAgICAgICAgICAgICAgICsgKChuZXh0VGltZS1jdXJUaW1lKS8xMDAwLzYwKSArICJtIGZyb20gbm93Iik7Ci0gICAgICAgICAgICBtQWxhcm0ucmVtb3ZlKG1DaGVja3VwSW50ZW50KTsKLSAgICAgICAgICAgIG1BbGFybS5zZXQoQWxhcm1NYW5hZ2VyLlJUQ19XQUtFVVAsIG5leHRUaW1lLCBtQ2hlY2t1cEludGVudCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAobG9jYWxMT0dWKSBTbG9nLnYoVEFHLCAiTm8gbmVlZCB0byBzY2hlZHVsZSBhIG1lbWNoZWNrIGFsYXJtISIpOwotICAgICAgICAgICAgbUFsYXJtLnJlbW92ZShtQ2hlY2t1cEludGVudCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBmaW5hbCBQc3NTdGF0cyBtUHNzU3RhdHMgPSBuZXcgUHNzU3RhdHMoKTsKLSAgICBmaW5hbCBTdHJpbmdbXSBtTWVtSW5mb0ZpZWxkcyA9IG5ldyBTdHJpbmdbXSB7Ci0gICAgICAgICAgICAiTWVtRnJlZToiLCAiQnVmZmVyczoiLCAiQ2FjaGVkOiIsCi0gICAgICAgICAgICAiQWN0aXZlOiIsICJJbmFjdGl2ZToiLAotICAgICAgICAgICAgIkFub25QYWdlczoiLCAiTWFwcGVkOiIsICJTbGFiOiIsCi0gICAgICAgICAgICAiU1JlY2xhaW1hYmxlOiIsICJTVW5yZWNsYWltOiIsICJQYWdlVGFibGVzOiIgfTsKLSAgICBmaW5hbCBsb25nW10gbU1lbUluZm9TaXplcyA9IG5ldyBsb25nW21NZW1JbmZvRmllbGRzLmxlbmd0aF07Ci0gICAgZmluYWwgU3RyaW5nW10gbVZNU3RhdEZpZWxkcyA9IG5ldyBTdHJpbmdbXSB7Ci0gICAgICAgICAgICAicGdmcmVlICIsICJwZ2FjdGl2YXRlICIsICJwZ2RlYWN0aXZhdGUgIiwKLSAgICAgICAgICAgICJwZ2ZhdWx0ICIsICJwZ21hamZhdWx0ICIgfTsKLSAgICBmaW5hbCBsb25nW10gbVZNU3RhdFNpemVzID0gbmV3IGxvbmdbbVZNU3RhdEZpZWxkcy5sZW5ndGhdOwotICAgIGZpbmFsIGxvbmdbXSBtUHJldlZNU3RhdFNpemVzID0gbmV3IGxvbmdbbVZNU3RhdEZpZWxkcy5sZW5ndGhdOwotICAgIGxvbmcgbUxhc3RMb2dHbG9iYWxNZW1vcnlUaW1lOwotCi0gICAgdm9pZCBsb2dHbG9iYWxNZW1vcnkoKSB7Ci0gICAgICAgIFBzc1N0YXRzIHN0YXRzID0gbVBzc1N0YXRzOwotICAgICAgICBtQWN0aXZpdHkuY29sbGVjdFBzcyhzdGF0cyk7Ci0gICAgICAgIEV2ZW50TG9nLndyaXRlRXZlbnQoRXZlbnRMb2dUYWdzLldBVENIRE9HX1BTU19TVEFUUywKLSAgICAgICAgICAgICAgICBzdGF0cy5tRW1wdHlQc3MsIHN0YXRzLm1FbXB0eUNvdW50LAotICAgICAgICAgICAgICAgIHN0YXRzLm1CYWNrZ3JvdW5kUHNzLCBzdGF0cy5tQmFja2dyb3VuZENvdW50LAotICAgICAgICAgICAgICAgIHN0YXRzLm1TZXJ2aWNlUHNzLCBzdGF0cy5tU2VydmljZUNvdW50LAotICAgICAgICAgICAgICAgIHN0YXRzLm1WaXNpYmxlUHNzLCBzdGF0cy5tVmlzaWJsZUNvdW50LAotICAgICAgICAgICAgICAgIHN0YXRzLm1Gb3JlZ3JvdW5kUHNzLCBzdGF0cy5tRm9yZWdyb3VuZENvdW50LAotICAgICAgICAgICAgICAgIHN0YXRzLm1Ob1Bzc0NvdW50KTsKLSAgICAgICAgRXZlbnRMb2cud3JpdGVFdmVudChFdmVudExvZ1RhZ3MuV0FUQ0hET0dfUFJPQ19TVEFUUywKLSAgICAgICAgICAgICAgICBzdGF0cy5tUHJvY0RlYXRoc1swXSwgc3RhdHMubVByb2NEZWF0aHNbMV0sIHN0YXRzLm1Qcm9jRGVhdGhzWzJdLAotICAgICAgICAgICAgICAgIHN0YXRzLm1Qcm9jRGVhdGhzWzNdLCBzdGF0cy5tUHJvY0RlYXRoc1s0XSk7Ci0gICAgICAgIFByb2Nlc3MucmVhZFByb2NMaW5lcygiL3Byb2MvbWVtaW5mbyIsIG1NZW1JbmZvRmllbGRzLCBtTWVtSW5mb1NpemVzKTsKLSAgICAgICAgZm9yIChpbnQgaT0wOyBpPG1NZW1JbmZvU2l6ZXMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgIG1NZW1JbmZvU2l6ZXNbaV0gKj0gMTAyNDsKLSAgICAgICAgfQotICAgICAgICBFdmVudExvZy53cml0ZUV2ZW50KEV2ZW50TG9nVGFncy5XQVRDSERPR19NRU1JTkZPLAotICAgICAgICAgICAgICAgIChpbnQpbU1lbUluZm9TaXplc1swXSwgKGludCltTWVtSW5mb1NpemVzWzFdLCAoaW50KW1NZW1JbmZvU2l6ZXNbMl0sCi0gICAgICAgICAgICAgICAgKGludCltTWVtSW5mb1NpemVzWzNdLCAoaW50KW1NZW1JbmZvU2l6ZXNbNF0sCi0gICAgICAgICAgICAgICAgKGludCltTWVtSW5mb1NpemVzWzVdLCAoaW50KW1NZW1JbmZvU2l6ZXNbNl0sIChpbnQpbU1lbUluZm9TaXplc1s3XSwKLSAgICAgICAgICAgICAgICAoaW50KW1NZW1JbmZvU2l6ZXNbOF0sIChpbnQpbU1lbUluZm9TaXplc1s5XSwgKGludCltTWVtSW5mb1NpemVzWzEwXSk7Ci0gICAgICAgIGxvbmcgbm93ID0gU3lzdGVtQ2xvY2sudXB0aW1lTWlsbGlzKCk7Ci0gICAgICAgIGxvbmcgZHVyID0gbm93IC0gbUxhc3RMb2dHbG9iYWxNZW1vcnlUaW1lOwotICAgICAgICBtTGFzdExvZ0dsb2JhbE1lbW9yeVRpbWUgPSBub3c7Ci0gICAgICAgIFByb2Nlc3MucmVhZFByb2NMaW5lcygiL3Byb2Mvdm1zdGF0IiwgbVZNU3RhdEZpZWxkcywgbVZNU3RhdFNpemVzKTsKLSAgICAgICAgZm9yIChpbnQgaT0wOyBpPG1WTVN0YXRTaXplcy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgbG9uZyB2ID0gbVZNU3RhdFNpemVzW2ldOwotICAgICAgICAgICAgbVZNU3RhdFNpemVzW2ldIC09IG1QcmV2Vk1TdGF0U2l6ZXNbaV07Ci0gICAgICAgICAgICBtUHJldlZNU3RhdFNpemVzW2ldID0gdjsKLSAgICAgICAgfQotICAgICAgICBFdmVudExvZy53cml0ZUV2ZW50KEV2ZW50TG9nVGFncy5XQVRDSERPR19WTVNUQVQsIGR1ciwKLSAgICAgICAgICAgICAgICAoaW50KW1WTVN0YXRTaXplc1swXSwgKGludCltVk1TdGF0U2l6ZXNbMV0sIChpbnQpbVZNU3RhdFNpemVzWzJdLAotICAgICAgICAgICAgICAgIChpbnQpbVZNU3RhdFNpemVzWzNdLCAoaW50KW1WTVN0YXRTaXplc1s0XSk7Ci0gICAgfQotCiAgICAgdm9pZCBjaGVja1JlYm9vdChib29sZWFuIGZyb21BbGFybSkgewogICAgICAgICBpbnQgcmVib290SW50ZXJ2YWwgPSBtUmVxUmVib290SW50ZXJ2YWwgPj0gMCA/IG1SZXFSZWJvb3RJbnRlcnZhbAogICAgICAgICAgICAgICAgIDogU2V0dGluZ3MuU2VjdXJlLmdldEludCgKQEAgLTczMCw0NyArMzYwLDYgQEAKICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgfQogCi0gICAgLyoqCi0gICAgICogQ29tcHV0ZSB0aGUgdGltZXMgZHVyaW5nIHdoaWNoIHdlIG5leHQgd291bGQgbGlrZSB0byBwZXJmb3JtIHByb2Nlc3MKLSAgICAgKiByZXN0YXJ0cy4KLSAgICAgKgotICAgICAqIEBwYXJhbSBjdXJUaW1lIFRoZSBjdXJyZW50IHN5c3RlbSB0aW1lLgotICAgICAqLwotICAgIHZvaWQgY29tcHV0ZU1lbWNoZWNrVGltZXNMb2NrZWQobG9uZyBjdXJUaW1lKSB7Ci0gICAgICAgIGlmIChtTWVtY2hlY2tMYXN0VGltZSA9PSBjdXJUaW1lKSB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBtTWVtY2hlY2tMYXN0VGltZSA9IGN1clRpbWU7Ci0KLSAgICAgICAgbG9uZyBtZW1jaGVja0V4ZWNTdGFydFRpbWUgPSBTZXR0aW5ncy5TZWN1cmUuZ2V0TG9uZygKLSAgICAgICAgICAgICAgICBtUmVzb2x2ZXIsIFNldHRpbmdzLlNlY3VyZS5NRU1DSEVDS19FWEVDX1NUQVJUX1RJTUUsCi0gICAgICAgICAgICAgICAgTUVNQ0hFQ0tfREVGQVVMVF9FWEVDX1NUQVJUX1RJTUUpOwotICAgICAgICBsb25nIG1lbWNoZWNrRXhlY0VuZFRpbWUgPSBTZXR0aW5ncy5TZWN1cmUuZ2V0TG9uZygKLSAgICAgICAgICAgICAgICBtUmVzb2x2ZXIsIFNldHRpbmdzLlNlY3VyZS5NRU1DSEVDS19FWEVDX0VORF9USU1FLAotICAgICAgICAgICAgICAgIE1FTUNIRUNLX0RFRkFVTFRfRVhFQ19FTkRfVElNRSk7Ci0KLSAgICAgICAgbU1lbWNoZWNrRXhlY0VuZFRpbWUgPSBjb21wdXRlQ2FsZW5kYXJUaW1lKG1DYWxlbmRhciwgY3VyVGltZSwKLSAgICAgICAgICAgICAgICBtZW1jaGVja0V4ZWNFbmRUaW1lKTsKLSAgICAgICAgaWYgKG1NZW1jaGVja0V4ZWNFbmRUaW1lIDwgY3VyVGltZSkgewotICAgICAgICAgICAgbWVtY2hlY2tFeGVjU3RhcnRUaW1lICs9IDI0KjYwKjYwOwotICAgICAgICAgICAgbWVtY2hlY2tFeGVjRW5kVGltZSArPSAyNCo2MCo2MDsKLSAgICAgICAgICAgIG1NZW1jaGVja0V4ZWNFbmRUaW1lID0gY29tcHV0ZUNhbGVuZGFyVGltZShtQ2FsZW5kYXIsIGN1clRpbWUsCi0gICAgICAgICAgICAgICAgICAgIG1lbWNoZWNrRXhlY0VuZFRpbWUpOwotICAgICAgICB9Ci0gICAgICAgIG1NZW1jaGVja0V4ZWNTdGFydFRpbWUgPSBjb21wdXRlQ2FsZW5kYXJUaW1lKG1DYWxlbmRhciwgY3VyVGltZSwKLSAgICAgICAgICAgICAgICBtZW1jaGVja0V4ZWNTdGFydFRpbWUpOwotCi0gICAgICAgIGlmIChsb2NhbExPR1YpIHsKLSAgICAgICAgICAgIG1DYWxlbmRhci5zZXRUaW1lSW5NaWxsaXMoY3VyVGltZSk7Ci0gICAgICAgICAgICBTbG9nLnYoVEFHLCAiQ3VycmVudCBUaW1lOiAiICsgbUNhbGVuZGFyKTsKLSAgICAgICAgICAgIG1DYWxlbmRhci5zZXRUaW1lSW5NaWxsaXMobU1lbWNoZWNrRXhlY1N0YXJ0VGltZSk7Ci0gICAgICAgICAgICBTbG9nLnYoVEFHLCAiU3RhcnQgQ2hlY2sgVGltZTogIiArIG1DYWxlbmRhcik7Ci0gICAgICAgICAgICBtQ2FsZW5kYXIuc2V0VGltZUluTWlsbGlzKG1NZW1jaGVja0V4ZWNFbmRUaW1lKTsKLSAgICAgICAgICAgIFNsb2cudihUQUcsICJFbmQgQ2hlY2sgVGltZTogIiArIG1DYWxlbmRhcik7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICBzdGF0aWMgbG9uZyBjb21wdXRlQ2FsZW5kYXJUaW1lKENhbGVuZGFyIGMsIGxvbmcgY3VyVGltZSwKICAgICAgICAgICAgIGxvbmcgc2Vjb25kc1NpbmNlTWlkbmlnaHQpIHsKIApkaWZmIC0tZ2l0IGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvV2lmaVNlcnZpY2UuamF2YSBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL1dpZmlTZXJ2aWNlLmphdmEKaW5kZXggOGQ2YWQ5My4uNTA5Yzc4OSAxMDA2NDQKLS0tIGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvV2lmaVNlcnZpY2UuamF2YQorKysgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9XaWZpU2VydmljZS5qYXZhCkBAIC02MzEsNiArNjMxLDcgQEAKICAgICB9CiAKICAgICBwdWJsaWMgV2lmaUNvbmZpZ3VyYXRpb24gZ2V0V2lmaUFwQ29uZmlndXJhdGlvbigpIHsKKyAgICAgICAgZW5mb3JjZUFjY2Vzc1Blcm1pc3Npb24oKTsKICAgICAgICAgZmluYWwgQ29udGVudFJlc29sdmVyIGNyID0gbUNvbnRleHQuZ2V0Q29udGVudFJlc29sdmVyKCk7CiAgICAgICAgIFdpZmlDb25maWd1cmF0aW9uIHdpZmlDb25maWcgPSBuZXcgV2lmaUNvbmZpZ3VyYXRpb24oKTsKICAgICAgICAgaW50IGF1dGhUeXBlOwpAQCAtNjQ4LDcgKzY0OSw4IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwcml2YXRlIHZvaWQgcGVyc2lzdEFwQ29uZmlndXJhdGlvbihXaWZpQ29uZmlndXJhdGlvbiB3aWZpQ29uZmlnKSB7CisgICAgcHVibGljIHZvaWQgc2V0V2lmaUFwQ29uZmlndXJhdGlvbihXaWZpQ29uZmlndXJhdGlvbiB3aWZpQ29uZmlnKSB7CisgICAgICAgIGVuZm9yY2VDaGFuZ2VQZXJtaXNzaW9uKCk7CiAgICAgICAgIGZpbmFsIENvbnRlbnRSZXNvbHZlciBjciA9IG1Db250ZXh0LmdldENvbnRlbnRSZXNvbHZlcigpOwogICAgICAgICBib29sZWFuIGlzV3BhOwogICAgICAgICBpZiAod2lmaUNvbmZpZyA9PSBudWxsKQpAQCAtNjc5LDkgKzY4MSw5IEBACiAgICAgICAgICAgICAvKiBDb25maWd1cmF0aW9uIGNoYW5nZWQgb24gYSBydW5uaW5nIGFjY2VzcyBwb2ludCAqLwogICAgICAgICAgICAgaWYoZW5hYmxlICYmICh3aWZpQ29uZmlnICE9IG51bGwpKSB7CiAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgcGVyc2lzdEFwQ29uZmlndXJhdGlvbih3aWZpQ29uZmlnKTsKICAgICAgICAgICAgICAgICAgICAgbndTZXJ2aWNlLnNldEFjY2Vzc1BvaW50KHdpZmlDb25maWcsIG1XaWZpU3RhdGVUcmFja2VyLmdldEludGVyZmFjZU5hbWUoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNPRlRBUF9JRkFDRSk7CisgICAgICAgICAgICAgICAgICAgIHNldFdpZmlBcENvbmZpZ3VyYXRpb24od2lmaUNvbmZpZyk7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgICAgIH0gY2F0Y2goRXhjZXB0aW9uIGUpIHsKICAgICAgICAgICAgICAgICAgICAgU2xvZy5lKFRBRywgIkV4Y2VwdGlvbiBpbiBud1NlcnZpY2UgZHVyaW5nIEFQIHJlc3RhcnQiKTsKQEAgLTcxNyw3ICs3MTksNiBAQAogICAgICAgICAgICAgICAgIHdpZmlDb25maWcuU1NJRCA9IG1Db250ZXh0LmdldFN0cmluZyhSLnN0cmluZy53aWZpX3RldGhlcl9jb25maWd1cmVfc3NpZF9kZWZhdWx0KTsKICAgICAgICAgICAgICAgICB3aWZpQ29uZmlnLmFsbG93ZWRLZXlNYW5hZ2VtZW50LnNldChLZXlNZ210Lk5PTkUpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgcGVyc2lzdEFwQ29uZmlndXJhdGlvbih3aWZpQ29uZmlnKTsKIAogICAgICAgICAgICAgaWYgKCFtV2lmaVN0YXRlVHJhY2tlci5sb2FkRHJpdmVyKCkpIHsKICAgICAgICAgICAgICAgICBTbG9nLmUoVEFHLCAiRmFpbGVkIHRvIGxvYWQgV2ktRmkgZHJpdmVyIGZvciBBUCBtb2RlIik7CkBAIC03MzQsNiArNzM1LDggQEAKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIHNldFdpZmlBcENvbmZpZ3VyYXRpb24od2lmaUNvbmZpZyk7CisKICAgICAgICAgfSBlbHNlIHsKIAogICAgICAgICAgICAgdHJ5IHsKZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL1dpbmRvd01hbmFnZXJTZXJ2aWNlLmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9XaW5kb3dNYW5hZ2VyU2VydmljZS5qYXZhCmluZGV4IGE4ZGFkODguLjM4ZjFlMWYgMTAwNjQ0Ci0tLSBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL1dpbmRvd01hbmFnZXJTZXJ2aWNlLmphdmEKKysrIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvV2luZG93TWFuYWdlclNlcnZpY2UuamF2YQpAQCAtNDgsNyArNDgsNiBAQAogaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnZpZXcuSUlucHV0TWV0aG9kQ2xpZW50OwogaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnZpZXcuSUlucHV0TWV0aG9kTWFuYWdlcjsKIGltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC52aWV3LldpbmRvd01hbmFnZXJQb2xpY3lUaHJlYWQ7Ci1pbXBvcnQgY29tLmFuZHJvaWQuc2VydmVyLktleUlucHV0UXVldWUuUXVldWVkRXZlbnQ7CiBpbXBvcnQgY29tLmFuZHJvaWQuc2VydmVyLmFtLkJhdHRlcnlTdGF0c1NlcnZpY2U7CiAKIGltcG9ydCBhbmRyb2lkLk1hbmlmZXN0OwpAQCAtOTUsMTUgKzk0LDE3IEBACiBpbXBvcnQgYW5kcm9pZC51dGlsLlNwYXJzZUludEFycmF5OwogaW1wb3J0IGFuZHJvaWQudmlldy5EaXNwbGF5OwogaW1wb3J0IGFuZHJvaWQudmlldy5HcmF2aXR5OworaW1wb3J0IGFuZHJvaWQudmlldy5IYXB0aWNGZWVkYmFja0NvbnN0YW50czsKIGltcG9ydCBhbmRyb2lkLnZpZXcuSUFwcGxpY2F0aW9uVG9rZW47CiBpbXBvcnQgYW5kcm9pZC52aWV3LklPbktleWd1YXJkRXhpdFJlc3VsdDsKIGltcG9ydCBhbmRyb2lkLnZpZXcuSVJvdGF0aW9uV2F0Y2hlcjsKIGltcG9ydCBhbmRyb2lkLnZpZXcuSVdpbmRvdzsKIGltcG9ydCBhbmRyb2lkLnZpZXcuSVdpbmRvd01hbmFnZXI7CiBpbXBvcnQgYW5kcm9pZC52aWV3LklXaW5kb3dTZXNzaW9uOworaW1wb3J0IGFuZHJvaWQudmlldy5JbnB1dENoYW5uZWw7CitpbXBvcnQgYW5kcm9pZC52aWV3LklucHV0UXVldWU7CiBpbXBvcnQgYW5kcm9pZC52aWV3LktleUV2ZW50OwogaW1wb3J0IGFuZHJvaWQudmlldy5Nb3Rpb25FdmVudDsKLWltcG9ydCBhbmRyb2lkLnZpZXcuUmF3SW5wdXRFdmVudDsKIGltcG9ydCBhbmRyb2lkLnZpZXcuU3VyZmFjZTsKIGltcG9ydCBhbmRyb2lkLnZpZXcuU3VyZmFjZVNlc3Npb247CiBpbXBvcnQgYW5kcm9pZC52aWV3LlZpZXc7CkBAIC0xMzUsNyArMTM2LDcgQEAKIAogLyoqIHtAaGlkZX0gKi8KIHB1YmxpYyBjbGFzcyBXaW5kb3dNYW5hZ2VyU2VydmljZSBleHRlbmRzIElXaW5kb3dNYW5hZ2VyLlN0dWIKLSAgICAgICAgaW1wbGVtZW50cyBXYXRjaGRvZy5Nb25pdG9yLCBLZXlJbnB1dFF1ZXVlLkhhcHRpY0ZlZWRiYWNrQ2FsbGJhY2sgeworICAgICAgICBpbXBsZW1lbnRzIFdhdGNoZG9nLk1vbml0b3IgewogICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gIldpbmRvd01hbmFnZXIiOwogICAgIHN0YXRpYyBmaW5hbCBib29sZWFuIERFQlVHID0gZmFsc2U7CiAgICAgc3RhdGljIGZpbmFsIGJvb2xlYW4gREVCVUdfRk9DVVMgPSBmYWxzZTsKQEAgLTE2Myw5ICsxNjQsNiBAQAogICAgIHN0YXRpYyBmaW5hbCBib29sZWFuIEJMVVIgPSB0cnVlOwogICAgIHN0YXRpYyBmaW5hbCBib29sZWFuIGxvY2FsTE9HViA9IERFQlVHOwogCi0gICAgLyoqIEhvdyBsb25nIHRvIHdhaXQgZm9yIHN1YnNlcXVlbnQga2V5IHJlcGVhdHMsIGluIG1pbGxpc2Vjb25kcyAqLwotICAgIHN0YXRpYyBmaW5hbCBpbnQgS0VZX1JFUEVBVF9ERUxBWSA9IDUwOwotCiAgICAgLyoqIEhvdyBtdWNoIHRvIG11bHRpcGx5IHRoZSBwb2xpY3kncyB0eXBlIGxheWVyLCB0byByZXNlcnZlIHJvb20KICAgICAgKiBmb3IgbXVsdGlwbGUgd2luZG93cyBvZiB0aGUgc2FtZSB0eXBlIGFuZCBaLW9yZGVyaW5nIGFkanVzdG1lbnQKICAgICAgKiB3aXRoIFRZUEVfTEFZRVJfT0ZGU0VULiAqLwpAQCAtMTk4LDM1ICsxOTYsMTkgQEAKICAgICAvKiogQWRqdXN0bWVudCB0byB0aW1lIHRvIHBlcmZvcm0gYSBkaW0sIHRvIG1ha2UgaXQgbW9yZSBkcmFtYXRpYy4KICAgICAgKi8KICAgICBzdGF0aWMgZmluYWwgaW50IERJTV9EVVJBVElPTl9NVUxUSVBMSUVSID0gNjsKLQotICAgIHN0YXRpYyBmaW5hbCBpbnQgSU5KRUNUX0ZBSUxFRCA9IDA7Ci0gICAgc3RhdGljIGZpbmFsIGludCBJTkpFQ1RfU1VDQ0VFREVEID0gMTsKLSAgICBzdGF0aWMgZmluYWwgaW50IElOSkVDVF9OT19QRVJNSVNTSU9OID0gLTE7CisgICAgCisgICAgLy8gTWF4aW11bSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIHRvIHdhaXQgZm9yIGlucHV0IGV2ZW50IGluamVjdGlvbi4KKyAgICAvLyBGSVhNRSBpcyB0aGlzIHZhbHVlIHJlYXNvbmFibGU/CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IElOSkVDVElPTl9USU1FT1VUX01JTExJUyA9IDMwICogMTAwMDsKKyAgICAKKyAgICAvLyBEZWZhdWx0IGlucHV0IGRpc3BhdGNoaW5nIHRpbWVvdXQgaW4gbmFub3NlY29uZHMuCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBERUZBVUxUX0lOUFVUX0RJU1BBVENISU5HX1RJTUVPVVRfTkFOT1MgPSA1MDAwICogMTAwMDAwMEw7CiAKICAgICBzdGF0aWMgZmluYWwgaW50IFVQREFURV9GT0NVU19OT1JNQUwgPSAwOwogICAgIHN0YXRpYyBmaW5hbCBpbnQgVVBEQVRFX0ZPQ1VTX1dJTExfQVNTSUdOX0xBWUVSUyA9IDE7CiAgICAgc3RhdGljIGZpbmFsIGludCBVUERBVEVfRk9DVVNfUExBQ0lOR19TVVJGQUNFUyA9IDI7CiAgICAgc3RhdGljIGZpbmFsIGludCBVUERBVEVfRk9DVVNfV0lMTF9QTEFDRV9TVVJGQUNFUyA9IDM7CiAKLSAgICAvKiogVGhlIG1pbmltdW0gdGltZSBiZXR3ZWVuIGRpc3BhdGNoaW5nIHRvdWNoIGV2ZW50cy4gKi8KLSAgICBpbnQgbU1pbldhaXRUaW1lQmV0d2VlblRvdWNoRXZlbnRzID0gMTAwMCAvIDM1OwotCi0gICAgLy8gTGFzdCB0b3VjaCBldmVudCB0aW1lCi0gICAgbG9uZyBtTGFzdFRvdWNoRXZlbnRUaW1lID0gMDsKLQotICAgIC8vIExhc3QgdG91Y2ggZXZlbnQgdHlwZQotICAgIGludCBtTGFzdFRvdWNoRXZlbnRUeXBlID0gT1RIRVJfRVZFTlQ7Ci0KLSAgICAvLyBUaW1lIHRvIHdhaXQgYmVmb3JlIGNhbGxpbmcgdXNlcmFjdGl2aXR5IGFnYWluLiBUaGlzIHNhdmVzIENQVSB1c2FnZQotICAgIC8vIHdoZW4gd2UgZ2V0IGEgZmxvb2Qgb2YgdG91Y2ggZXZlbnRzLgotICAgIHN0YXRpYyBmaW5hbCBpbnQgTUlOX1RJTUVfQkVUV0VFTl9VU0VSQUNUSVZJVElFUyA9IDEwMDA7Ci0KLSAgICAvLyBMYXN0IHRpbWUgd2UgY2FsbCB1c2VyIGFjdGl2aXR5Ci0gICAgbG9uZyBtTGFzdFVzZXJBY3Rpdml0eUNhbGxUaW1lID0gMDsKLQotICAgIC8vIExhc3QgdGltZSB3ZSB1cGRhdGVkIGJhdHRlcnkgc3RhdHMKLSAgICBsb25nIG1MYXN0QmF0dGVyeVN0YXRzQ2FsbFRpbWUgPSAwOwotCiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFNZU1RFTV9TRUNVUkUgPSAicm8uc2VjdXJlIjsKICAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgU1lTVEVNX0RFQlVHR0FCTEUgPSAicm8uZGVidWdnYWJsZSI7CiAKQEAgLTQ0Miw4ICs0MjQsNiBAQAogICAgIGZpbmFsIEFycmF5TGlzdDxBcHBXaW5kb3dUb2tlbj4gbVRvVG9wQXBwcyA9IG5ldyBBcnJheUxpc3Q8QXBwV2luZG93VG9rZW4+KCk7CiAgICAgZmluYWwgQXJyYXlMaXN0PEFwcFdpbmRvd1Rva2VuPiBtVG9Cb3R0b21BcHBzID0gbmV3IEFycmF5TGlzdDxBcHBXaW5kb3dUb2tlbj4oKTsKIAotICAgIC8vZmxhZyB0byBkZXRlY3QgZmF0IHRvdWNoIGV2ZW50cwotICAgIGJvb2xlYW4gbUZhdFRvdWNoID0gZmFsc2U7CiAgICAgRGlzcGxheSBtRGlzcGxheTsKIAogICAgIEggbUggPSBuZXcgSCgpOwpAQCAtNDc3LDcgKzQ1Nyw2IEBACiAgICAgZmxvYXQgbUxhc3RXYWxscGFwZXJZID0gLTE7CiAgICAgZmxvYXQgbUxhc3RXYWxscGFwZXJYU3RlcCA9IC0xOwogICAgIGZsb2F0IG1MYXN0V2FsbHBhcGVyWVN0ZXAgPSAtMTsKLSAgICBib29sZWFuIG1TZW5kaW5nUG9pbnRlcnNUb1dhbGxwYXBlciA9IGZhbHNlOwogICAgIC8vIFRoaXMgaXMgc2V0IHdoZW4gd2UgYXJlIHdhaXRpbmcgZm9yIGEgd2FsbHBhcGVyIHRvIHRlbGwgdXMgaXQgaXMgZG9uZQogICAgIC8vIGNoYW5naW5nIGl0cyBzY3JvbGwgcG9zaXRpb24uCiAgICAgV2luZG93U3RhdGUgbVdhaXRpbmdPbldhbGxwYXBlcjsKQEAgLTQ5NSwxMiArNDc0LDExIEBACiAgICAgZmxvYXQgbVdpbmRvd0FuaW1hdGlvblNjYWxlID0gMS4wZjsKICAgICBmbG9hdCBtVHJhbnNpdGlvbkFuaW1hdGlvblNjYWxlID0gMS4wZjsKIAotICAgIGZpbmFsIEtleVdhaXRlciBtS2V5V2FpdGVyID0gbmV3IEtleVdhaXRlcigpOwotICAgIGZpbmFsIEtleVEgbVF1ZXVlOwotICAgIGZpbmFsIElucHV0RGlzcGF0Y2hlclRocmVhZCBtSW5wdXRUaHJlYWQ7CisgICAgZmluYWwgSW5wdXRNYW5hZ2VyIG1JbnB1dE1hbmFnZXI7CiAKICAgICAvLyBXaG8gaXMgaG9sZGluZyB0aGUgc2NyZWVuIG9uLgogICAgIFNlc3Npb24gbUhvbGRpbmdTY3JlZW5PbjsKKyAgICBQb3dlck1hbmFnZXIuV2FrZUxvY2sgbUhvbGRpbmdTY3JlZW5XYWtlTG9jazsKIAogICAgIGJvb2xlYW4gbVR1cm5PblNjcmVlbjsKIApAQCAtNTEyLDggKzQ5MCw2IEBACiAKICAgICBwcml2YXRlIFZpZXdTZXJ2ZXIgbVZpZXdTZXJ2ZXI7CiAKLSAgICBmaW5hbCBSZWN0IG1UZW1wUmVjdCA9IG5ldyBSZWN0KCk7Ci0KICAgICBmaW5hbCBDb25maWd1cmF0aW9uIG1UZW1wQ29uZmlndXJhdGlvbiA9IG5ldyBDb25maWd1cmF0aW9uKCk7CiAgICAgaW50IG1TY3JlZW5MYXlvdXQgPSBDb25maWd1cmF0aW9uLlNDUkVFTkxBWU9VVF9TSVpFX1VOREVGSU5FRDsKIApAQCAtNTYxLDYgKzUzNyw3IEBACiAgICAgICAgICAgICAgICAgICAgIG1IYXZlSW5wdXRNZXRob2RzKTsKICAgICAgICAgICAgIGFuZHJvaWQub3MuUHJvY2Vzcy5zZXRUaHJlYWRQcmlvcml0eSgKICAgICAgICAgICAgICAgICAgICAgYW5kcm9pZC5vcy5Qcm9jZXNzLlRIUkVBRF9QUklPUklUWV9ESVNQTEFZKTsKKyAgICAgICAgICAgIGFuZHJvaWQub3MuUHJvY2Vzcy5zZXRDYW5TZWxmQmFja2dyb3VuZChmYWxzZSk7CiAKICAgICAgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgewogICAgICAgICAgICAgICAgIG1TZXJ2aWNlID0gczsKQEAgLTU5Niw2ICs1NzMsNyBAQAogICAgICAgICAgICAgLy8gICAgICAgIExvZy5WRVJCT1NFLCAiV2luZG93TWFuYWdlclBvbGljeSIsIExvZy5MT0dfSURfU1lTVEVNKSk7CiAgICAgICAgICAgICBhbmRyb2lkLm9zLlByb2Nlc3Muc2V0VGhyZWFkUHJpb3JpdHkoCiAgICAgICAgICAgICAgICAgICAgIGFuZHJvaWQub3MuUHJvY2Vzcy5USFJFQURfUFJJT1JJVFlfRk9SRUdST1VORCk7CisgICAgICAgICAgICBhbmRyb2lkLm9zLlByb2Nlc3Muc2V0Q2FuU2VsZkJhY2tncm91bmQoZmFsc2UpOwogICAgICAgICAgICAgbVBvbGljeS5pbml0KG1Db250ZXh0LCBtU2VydmljZSwgbVBNKTsKIAogICAgICAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7CkBAIC02MzksMjAgKzYxNywxMSBAQAogICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKERldmljZVBvbGljeU1hbmFnZXIuQUNUSU9OX0RFVklDRV9QT0xJQ1lfTUFOQUdFUl9TVEFURV9DSEFOR0VEKTsKICAgICAgICAgbUNvbnRleHQucmVnaXN0ZXJSZWNlaXZlcihtQnJvYWRjYXN0UmVjZWl2ZXIsIGZpbHRlcik7CiAKLSAgICAgICAgaW50IG1heF9ldmVudHNfcGVyX3NlYyA9IDM1OwotICAgICAgICB0cnkgewotICAgICAgICAgICAgbWF4X2V2ZW50c19wZXJfc2VjID0gSW50ZWdlci5wYXJzZUludChTeXN0ZW1Qcm9wZXJ0aWVzCi0gICAgICAgICAgICAgICAgICAgIC5nZXQoIndpbmRvd3NtZ3IubWF4X2V2ZW50c19wZXJfc2VjIikpOwotICAgICAgICAgICAgaWYgKG1heF9ldmVudHNfcGVyX3NlYyA8IDEpIHsKLSAgICAgICAgICAgICAgICBtYXhfZXZlbnRzX3Blcl9zZWMgPSAzNTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBjYXRjaCAoTnVtYmVyRm9ybWF0RXhjZXB0aW9uIGUpIHsKLSAgICAgICAgfQotICAgICAgICBtTWluV2FpdFRpbWVCZXR3ZWVuVG91Y2hFdmVudHMgPSAxMDAwIC8gbWF4X2V2ZW50c19wZXJfc2VjOworICAgICAgICBtSG9sZGluZ1NjcmVlbldha2VMb2NrID0gcG1jLm5ld1dha2VMb2NrKFBvd2VyTWFuYWdlci5TQ1JFRU5fQlJJR0hUX1dBS0VfTE9DSywKKyAgICAgICAgICAgICAgICAiS0VFUF9TQ1JFRU5fT05fRkxBRyIpOworICAgICAgICBtSG9sZGluZ1NjcmVlbldha2VMb2NrLnNldFJlZmVyZW5jZUNvdW50ZWQoZmFsc2UpOwogCi0gICAgICAgIG1RdWV1ZSA9IG5ldyBLZXlRKCk7Ci0KLSAgICAgICAgbUlucHV0VGhyZWFkID0gbmV3IElucHV0RGlzcGF0Y2hlclRocmVhZCgpOworICAgICAgICBtSW5wdXRNYW5hZ2VyID0gbmV3IElucHV0TWFuYWdlcihjb250ZXh0LCB0aGlzLCBwbWMsIG1Qb3dlck1hbmFnZXIpOwogCiAgICAgICAgIFBvbGljeVRocmVhZCB0aHIgPSBuZXcgUG9saWN5VGhyZWFkKG1Qb2xpY3ksIHRoaXMsIGNvbnRleHQsIHBtKTsKICAgICAgICAgdGhyLnN0YXJ0KCk7CkBAIC02NjYsNyArNjM1LDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgfQogCi0gICAgICAgIG1JbnB1dFRocmVhZC5zdGFydCgpOworICAgICAgICBtSW5wdXRNYW5hZ2VyLnN0YXJ0KCk7CiAKICAgICAgICAgLy8gQWRkIG91cnNlbGYgdG8gdGhlIFdhdGNoZG9nIG1vbml0b3JzLgogICAgICAgICBXYXRjaGRvZy5nZXRJbnN0YW5jZSgpLmFkZE1vbml0b3IodGhpcyk7CkBAIC0xNzkyLDc0ICsxNzYxLDEwIEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0KLSAgICB2b2lkIHNlbmRQb2ludGVyVG9XYWxscGFwZXJMb2NrZWQoV2luZG93U3RhdGUgc3JjV2luLAotICAgICAgICAgICAgTW90aW9uRXZlbnQgcG9pbnRlciwgbG9uZyBldmVudFRpbWUpIHsKLSAgICAgICAgaW50IGN1clRva2VuSW5kZXggPSBtV2FsbHBhcGVyVG9rZW5zLnNpemUoKTsKLSAgICAgICAgd2hpbGUgKGN1clRva2VuSW5kZXggPiAwKSB7Ci0gICAgICAgICAgICBjdXJUb2tlbkluZGV4LS07Ci0gICAgICAgICAgICBXaW5kb3dUb2tlbiB0b2tlbiA9IG1XYWxscGFwZXJUb2tlbnMuZ2V0KGN1clRva2VuSW5kZXgpOwotICAgICAgICAgICAgaW50IGN1cldhbGxwYXBlckluZGV4ID0gdG9rZW4ud2luZG93cy5zaXplKCk7Ci0gICAgICAgICAgICB3aGlsZSAoY3VyV2FsbHBhcGVySW5kZXggPiAwKSB7Ci0gICAgICAgICAgICAgICAgY3VyV2FsbHBhcGVySW5kZXgtLTsKLSAgICAgICAgICAgICAgICBXaW5kb3dTdGF0ZSB3YWxscGFwZXIgPSB0b2tlbi53aW5kb3dzLmdldChjdXJXYWxscGFwZXJJbmRleCk7Ci0gICAgICAgICAgICAgICAgaWYgKCh3YWxscGFwZXIubUF0dHJzLmZsYWdzICYKLSAgICAgICAgICAgICAgICAgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfTk9UX1RPVUNIQUJMRSkgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgTW90aW9uRXZlbnQgZXYgPSBNb3Rpb25FdmVudC5vYnRhaW5Ob0hpc3RvcnkocG9pbnRlcik7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzcmNXaW4gIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgZXYub2Zmc2V0TG9jYXRpb24oc3JjV2luLm1GcmFtZS5sZWZ0LXdhbGxwYXBlci5tRnJhbWUubGVmdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjV2luLm1GcmFtZS50b3Atd2FsbHBhcGVyLm1GcmFtZS50b3ApOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgZXYub2Zmc2V0TG9jYXRpb24oLXdhbGxwYXBlci5tRnJhbWUubGVmdCwgLXdhbGxwYXBlci5tRnJhbWUudG9wKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKHBvaW50ZXIuZ2V0QWN0aW9uKCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgTW90aW9uRXZlbnQuQUNUSU9OX0RPV046Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbVNlbmRpbmdQb2ludGVyc1RvV2FsbHBhcGVyID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgTW90aW9uRXZlbnQuQUNUSU9OX1VQOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TZW5kaW5nUG9pbnRlcnNUb1dhbGxwYXBlciA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHdhbGxwYXBlci5tQ2xpZW50LmRpc3BhdGNoUG9pbnRlcihldiwgZXZlbnRUaW1lLCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIkZhaWx1cmUgc2VuZGluZyBwb2ludGVyIHRvIHdhbGxwYXBlciIsIGUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgZGlzcGF0Y2hQb2ludGVyRWxzZXdoZXJlTG9ja2VkKFdpbmRvd1N0YXRlIHNyY1dpbiwgV2luZG93U3RhdGUgcmVsV2luLAotICAgICAgICAgICAgTW90aW9uRXZlbnQgcG9pbnRlciwgbG9uZyBldmVudFRpbWUsIGJvb2xlYW4gc2tpcHBlZCkgewotICAgICAgICBpZiAocmVsV2luICE9IG51bGwpIHsKLSAgICAgICAgICAgIG1Qb2xpY3kuZGlzcGF0Y2hlZFBvaW50ZXJFdmVudEx3KHBvaW50ZXIsIHJlbFdpbi5tRnJhbWUubGVmdCwgcmVsV2luLm1GcmFtZS50b3ApOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbVBvbGljeS5kaXNwYXRjaGVkUG9pbnRlckV2ZW50THcocG9pbnRlciwgMCwgMCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIC8vIElmIHdlIHNlbnQgYW4gaW5pdGlhbCBkb3duIHRvIHRoZSB3YWxscGFwZXIsIHRoZW4gY29udGludWUKLSAgICAgICAgLy8gc2VuZGluZyBldmVudHMgdW50aWwgdGhlIGZpbmFsIHVwLgotICAgICAgICBpZiAobVNlbmRpbmdQb2ludGVyc1RvV2FsbHBhcGVyKSB7Ci0gICAgICAgICAgICBpZiAoc2tpcHBlZCkgewotICAgICAgICAgICAgICAgIFNsb2cuaShUQUcsICJTZW5kaW5nIHNraXBwZWQgcG9pbnRlciB0byB3YWxscGFwZXIhIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzZW5kUG9pbnRlclRvV2FsbHBhcGVyTG9ja2VkKHJlbFdpbiwgcG9pbnRlciwgZXZlbnRUaW1lKTsKLSAgICAgICAgICAgIAotICAgICAgICAvLyBJZiB3ZSBhcmUgb24gdG9wIG9mIHRoZSB3YWxscGFwZXIsIHRoZW4gdGhlIHdhbGxwYXBlciBhbHNvCi0gICAgICAgIC8vIGdldHMgdG8gc2VlIHRoaXMgbW92ZW1lbnQuCi0gICAgICAgIH0gZWxzZSBpZiAoc3JjV2luICE9IG51bGwKLSAgICAgICAgICAgICAgICAmJiBwb2ludGVyLmdldEFjdGlvbigpID09IE1vdGlvbkV2ZW50LkFDVElPTl9ET1dOCi0gICAgICAgICAgICAgICAgJiYgbVdhbGxwYXBlclRhcmdldCA9PSBzcmNXaW4KLSAgICAgICAgICAgICAgICAmJiBzcmNXaW4ubUF0dHJzLnR5cGUgIT0gV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuVFlQRV9LRVlHVUFSRCkgewotICAgICAgICAgICAgc2VuZFBvaW50ZXJUb1dhbGxwYXBlckxvY2tlZChyZWxXaW4sIHBvaW50ZXIsIGV2ZW50VGltZSk7Ci0gICAgICAgIH0KLSAgICB9CiAgICAgCiAgICAgcHVibGljIGludCBhZGRXaW5kb3coU2Vzc2lvbiBzZXNzaW9uLCBJV2luZG93IGNsaWVudCwKICAgICAgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIGF0dHJzLCBpbnQgdmlld1Zpc2liaWxpdHksCi0gICAgICAgICAgICBSZWN0IG91dENvbnRlbnRJbnNldHMpIHsKKyAgICAgICAgICAgIFJlY3Qgb3V0Q29udGVudEluc2V0cywgSW5wdXRDaGFubmVsIG91dElucHV0Q2hhbm5lbCkgewogICAgICAgICBpbnQgcmVzID0gbVBvbGljeS5jaGVja0FkZFBlcm1pc3Npb24oYXR0cnMpOwogICAgICAgICBpZiAocmVzICE9IFdpbmRvd01hbmFnZXJJbXBsLkFERF9PS0FZKSB7CiAgICAgICAgICAgICByZXR1cm4gcmVzOwpAQCAtMTg3OCw3ICsxNzgzLDcgQEAKICAgICAgICAgICAgICAgICBtRGlzcGxheSA9IHdtLmdldERlZmF1bHREaXNwbGF5KCk7CiAgICAgICAgICAgICAgICAgbUluaXRpYWxEaXNwbGF5V2lkdGggPSBtRGlzcGxheS5nZXRXaWR0aCgpOwogICAgICAgICAgICAgICAgIG1Jbml0aWFsRGlzcGxheUhlaWdodCA9IG1EaXNwbGF5LmdldEhlaWdodCgpOwotICAgICAgICAgICAgICAgIG1RdWV1ZS5zZXREaXNwbGF5KG1EaXNwbGF5KTsKKyAgICAgICAgICAgICAgICBtSW5wdXRNYW5hZ2VyLnNldERpc3BsYXlTaXplKDAsIG1Jbml0aWFsRGlzcGxheVdpZHRoLCBtSW5pdGlhbERpc3BsYXlIZWlnaHQpOwogICAgICAgICAgICAgICAgIHJlcG9ydE5ld0NvbmZpZyA9IHRydWU7CiAgICAgICAgICAgICB9CiAKQEAgLTE5NzEsNiArMTg3NiwxNSBAQAogICAgICAgICAgICAgaWYgKHJlcyAhPSBXaW5kb3dNYW5hZ2VySW1wbC5BRERfT0tBWSkgewogICAgICAgICAgICAgICAgIHJldHVybiByZXM7CiAgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChvdXRJbnB1dENoYW5uZWwgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIFN0cmluZyBuYW1lID0gd2luLm1ha2VJbnB1dENoYW5uZWxOYW1lKCk7CisgICAgICAgICAgICAgICAgSW5wdXRDaGFubmVsW10gaW5wdXRDaGFubmVscyA9IElucHV0Q2hhbm5lbC5vcGVuSW5wdXRDaGFubmVsUGFpcihuYW1lKTsKKyAgICAgICAgICAgICAgICB3aW4ubUlucHV0Q2hhbm5lbCA9IGlucHV0Q2hhbm5lbHNbMF07CisgICAgICAgICAgICAgICAgaW5wdXRDaGFubmVsc1sxXS50cmFuc2ZlclRvQmluZGVyT3V0UGFyYW1ldGVyKG91dElucHV0Q2hhbm5lbCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgbUlucHV0TWFuYWdlci5yZWdpc3RlcklucHV0Q2hhbm5lbCh3aW4ubUlucHV0Q2hhbm5lbCk7CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIEZyb20gbm93IG9uLCBubyBleGNlcHRpb25zIG9yIGVycm9ycyBhbGxvd2VkIQogCkBAIC0yMDI0LDggKzE5MzgsOCBAQAogCiAgICAgICAgICAgICBib29sZWFuIGZvY3VzQ2hhbmdlZCA9IGZhbHNlOwogICAgICAgICAgICAgaWYgKHdpbi5jYW5SZWNlaXZlS2V5cygpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKChmb2N1c0NoYW5nZWQ9dXBkYXRlRm9jdXNlZFdpbmRvd0xvY2tlZChVUERBVEVfRk9DVVNfV0lMTF9BU1NJR05fTEFZRVJTKSkKLSAgICAgICAgICAgICAgICAgICAgICAgID09IHRydWUpIHsKKyAgICAgICAgICAgICAgICBmb2N1c0NoYW5nZWQgPSB1cGRhdGVGb2N1c2VkV2luZG93TG9ja2VkKFVQREFURV9GT0NVU19XSUxMX0FTU0lHTl9MQVlFUlMpOworICAgICAgICAgICAgICAgIGlmIChmb2N1c0NoYW5nZWQpIHsKICAgICAgICAgICAgICAgICAgICAgaW1NYXlNb3ZlID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMjA0MSwxMCArMTk1NSw5IEBACiAgICAgICAgICAgICAvL2R1bXAoKTsKIAogICAgICAgICAgICAgaWYgKGZvY3VzQ2hhbmdlZCkgewotICAgICAgICAgICAgICAgIGlmIChtQ3VycmVudEZvY3VzICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgbUtleVdhaXRlci5oYW5kbGVOZXdXaW5kb3dMb2NrZWQobUN1cnJlbnRGb2N1cyk7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGZpbmlzaFVwZGF0ZUZvY3VzZWRXaW5kb3dBZnRlckFzc2lnbkxheWVyc0xvY2tlZCgpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgCiAgICAgICAgICAgICBpZiAobG9jYWxMT0dWKSBTbG9nLnYoCiAgICAgICAgICAgICAgICAgVEFHLCAiTmV3IGNsaWVudCAiICsgY2xpZW50LmFzQmluZGVyKCkKICAgICAgICAgICAgICAgICArICI6IHdpbmRvdz0iICsgd2luKTsKQEAgLTIxNDYsMTAgKzIwNTksNyBAQAogICAgIH0KIAogICAgIHByaXZhdGUgdm9pZCByZW1vdmVXaW5kb3dJbm5lckxvY2tlZChTZXNzaW9uIHNlc3Npb24sIFdpbmRvd1N0YXRlIHdpbikgewotICAgICAgICBtS2V5V2FpdGVyLmZpbmlzaGVkS2V5KHNlc3Npb24sIHdpbi5tQ2xpZW50LCB0cnVlLAotICAgICAgICAgICAgICAgIEtleVdhaXRlci5SRVRVUk5fTk9USElORyk7Ci0gICAgICAgIG1LZXlXYWl0ZXIucmVsZWFzZVBlbmRpbmdQb2ludGVyTG9ja2VkKHdpbi5tU2Vzc2lvbik7Ci0gICAgICAgIG1LZXlXYWl0ZXIucmVsZWFzZVBlbmRpbmdUcmFja2JhbGxMb2NrZWQod2luLm1TZXNzaW9uKTsKKyAgICAgICAgbUlucHV0TW9uaXRvci53aW5kb3dJc0JlaW5nUmVtb3ZlZEx3KHdpbik7CiAKICAgICAgICAgd2luLm1SZW1vdmVkID0gdHJ1ZTsKIApAQCAtMjUxNyw4ICsyNDI3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGx5QW5pbWF0aW9uTG9ja2VkKHdpbiwgdHJhbnNpdCwgZmFsc2UpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9jdXNNYXlDaGFuZ2UgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbi5tRXhpdGluZyA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbUtleVdhaXRlci5maW5pc2hlZEtleShzZXNzaW9uLCBjbGllbnQsIHRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLZXlXYWl0ZXIuUkVUVVJOX05PVEhJTkcpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1JbnB1dE1vbml0b3Iud2luZG93SXNCZWNvbWluZ0ludmlzaWJsZUx3KHdpbik7CiAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHdpbi5pc0FuaW1hdGluZygpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ3VycmVudGx5IGluIGEgaGlkZSBhbmltYXRpb24uLi4gdHVybiB0aGlzIGludG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbiBleGl0LgpAQCAtMjk3OSw4ICsyODg4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3aW4uaXNWaXNpYmxlTm93KCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBseUFuaW1hdGlvbkxvY2tlZCh3aW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXaW5kb3dNYW5hZ2VyUG9saWN5LlRSQU5TSVRfRVhJVCwgZmFsc2UpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1LZXlXYWl0ZXIuZmluaXNoZWRLZXkod2luLm1TZXNzaW9uLCB3aW4ubUNsaWVudCwgdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEtleVdhaXRlci5SRVRVUk5fTk9USElORyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUlucHV0TW9uaXRvci53aW5kb3dJc0JlaW5nUmVtb3ZlZEx3KHdpbik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIH0KQEAgLTMwMTEsNiArMjkxOSwyMCBAQAogICAgICAgICAgICAgICAgICJhZGRBcHBUb2tlbigpIikpIHsKICAgICAgICAgICAgIHRocm93IG5ldyBTZWN1cml0eUV4Y2VwdGlvbigiUmVxdWlyZXMgTUFOQUdFX0FQUF9UT0tFTlMgcGVybWlzc2lvbiIpOwogICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBHZXQgdGhlIGRpc3BhdGNoaW5nIHRpbWVvdXQgaGVyZSB3aGlsZSB3ZSBhcmUgbm90IGhvbGRpbmcgYW55IGxvY2tzIHNvIHRoYXQgaXQKKyAgICAgICAgLy8gY2FuIGJlIGNhY2hlZCBieSB0aGUgQXBwV2luZG93VG9rZW4uICBUaGUgdGltZW91dCB2YWx1ZSBpcyB1c2VkIGxhdGVyIGJ5IHRoZQorICAgICAgICAvLyBpbnB1dCBkaXNwYXRjaGVyIGluIGNvZGUgdGhhdCBkb2VzIGhvbGQgbG9ja3MuICBJZiB3ZSBkaWQgbm90IGNhY2hlIHRoZSB2YWx1ZQorICAgICAgICAvLyBoZXJlIHdlIHdvdWxkIHJ1biB0aGUgY2hhbmNlIG9mIGludHJvZHVjaW5nIGEgZGVhZGxvY2sgYmV0d2VlbiB0aGUgd2luZG93IG1hbmFnZXIKKyAgICAgICAgLy8gKHdoaWNoIGhvbGRzIGxvY2tzIHdoaWxlIHVwZGF0aW5nIHRoZSBpbnB1dCBkaXNwYXRjaGVyIHN0YXRlKSBhbmQgdGhlIGFjdGl2aXR5IG1hbmFnZXIKKyAgICAgICAgLy8gKHdoaWNoIGhvbGRzIGxvY2tzIHdoaWxlIHF1ZXJ5aW5nIHRoZSBhcHBsaWNhdGlvbiB0b2tlbikuCisgICAgICAgIGxvbmcgaW5wdXREaXNwYXRjaGluZ1RpbWVvdXROYW5vczsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGlucHV0RGlzcGF0Y2hpbmdUaW1lb3V0TmFub3MgPSB0b2tlbi5nZXRLZXlEaXNwYXRjaGluZ1RpbWVvdXQoKSAqIDEwMDAwMDBMOworICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZXgpIHsKKyAgICAgICAgICAgIFNsb2cudyhUQUcsICJDb3VsZCBub3QgZ2V0IGRpc3BhdGNoaW5nIHRpbWVvdXQuIiwgZXgpOworICAgICAgICAgICAgaW5wdXREaXNwYXRjaGluZ1RpbWVvdXROYW5vcyA9IERFRkFVTFRfSU5QVVRfRElTUEFUQ0hJTkdfVElNRU9VVF9OQU5PUzsKKyAgICAgICAgfQogCiAgICAgICAgIHN5bmNocm9uaXplZChtV2luZG93TWFwKSB7CiAgICAgICAgICAgICBBcHBXaW5kb3dUb2tlbiB3dG9rZW4gPSBmaW5kQXBwV2luZG93VG9rZW4odG9rZW4uYXNCaW5kZXIoKSk7CkBAIC0zMDE5LDYgKzI5NDEsNyBAQAogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHd0b2tlbiA9IG5ldyBBcHBXaW5kb3dUb2tlbih0b2tlbik7CisgICAgICAgICAgICB3dG9rZW4uaW5wdXREaXNwYXRjaGluZ1RpbWVvdXROYW5vcyA9IGlucHV0RGlzcGF0Y2hpbmdUaW1lb3V0TmFub3M7CiAgICAgICAgICAgICB3dG9rZW4uZ3JvdXBJZCA9IGdyb3VwSWQ7CiAgICAgICAgICAgICB3dG9rZW4uYXBwRnVsbHNjcmVlbiA9IGZ1bGxzY3JlZW47CiAgICAgICAgICAgICB3dG9rZW4ucmVxdWVzdGVkT3JpZW50YXRpb24gPSByZXF1ZXN0ZWRPcmllbnRhdGlvbjsKQEAgLTMyODIsNyArMzIwNSw5IEBACiAgICAgICAgICAgICAgICAgaWYgKERFQlVHX0ZPQ1VTKSBTbG9nLnYoVEFHLCAiQ2xlYXJpbmcgZm9jdXNlZCBhcHAsIHdhcyAiICsgbUZvY3VzZWRBcHApOwogICAgICAgICAgICAgICAgIGNoYW5nZWQgPSBtRm9jdXNlZEFwcCAhPSBudWxsOwogICAgICAgICAgICAgICAgIG1Gb2N1c2VkQXBwID0gbnVsbDsKLSAgICAgICAgICAgICAgICBtS2V5V2FpdGVyLnRpY2tsZSgpOworICAgICAgICAgICAgICAgIGlmIChjaGFuZ2VkKSB7CisgICAgICAgICAgICAgICAgICAgIG1JbnB1dE1vbml0b3Iuc2V0Rm9jdXNlZEFwcEx3KG51bGwpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgQXBwV2luZG93VG9rZW4gbmV3Rm9jdXMgPSBmaW5kQXBwV2luZG93VG9rZW4odG9rZW4pOwogICAgICAgICAgICAgICAgIGlmIChuZXdGb2N1cyA9PSBudWxsKSB7CkBAIC0zMjkyLDcgKzMyMTcsOSBAQAogICAgICAgICAgICAgICAgIGNoYW5nZWQgPSBtRm9jdXNlZEFwcCAhPSBuZXdGb2N1czsKICAgICAgICAgICAgICAgICBtRm9jdXNlZEFwcCA9IG5ld0ZvY3VzOwogICAgICAgICAgICAgICAgIGlmIChERUJVR19GT0NVUykgU2xvZy52KFRBRywgIlNldCBmb2N1c2VkIGFwcCB0bzogIiArIG1Gb2N1c2VkQXBwKTsKLSAgICAgICAgICAgICAgICBtS2V5V2FpdGVyLnRpY2tsZSgpOworICAgICAgICAgICAgICAgIGlmIChjaGFuZ2VkKSB7CisgICAgICAgICAgICAgICAgICAgIG1JbnB1dE1vbml0b3Iuc2V0Rm9jdXNlZEFwcEx3KG5ld0ZvY3VzKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChtb3ZlRm9jdXNOb3cgJiYgY2hhbmdlZCkgewpAQCAtMzYwMyw4ICszNTMwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGFwcGx5QW5pbWF0aW9uTG9ja2VkKHdpbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2luZG93TWFuYWdlclBvbGljeS5UUkFOU0lUX0VYSVQsIGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBtS2V5V2FpdGVyLmZpbmlzaGVkS2V5KHdpbi5tU2Vzc2lvbiwgd2luLm1DbGllbnQsIHRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgS2V5V2FpdGVyLlJFVFVSTl9OT1RISU5HKTsKKyAgICAgICAgICAgICAgICAgICAgbUlucHV0TW9uaXRvci53aW5kb3dJc0JlY29taW5nSW52aXNpYmxlTHcod2luKTsKICAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMzg4OSw3ICszODE1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX0ZPQ1VTKSBTbG9nLnYoVEFHLCAiUmVtb3ZpbmcgZm9jdXNlZCBhcHAgdG9rZW46IiArIHd0b2tlbik7CiAgICAgICAgICAgICAgICAgICAgIG1Gb2N1c2VkQXBwID0gbnVsbDsKICAgICAgICAgICAgICAgICAgICAgdXBkYXRlRm9jdXNlZFdpbmRvd0xvY2tlZChVUERBVEVfRk9DVVNfTk9STUFMKTsKLSAgICAgICAgICAgICAgICAgICAgbUtleVdhaXRlci50aWNrbGUoKTsKKyAgICAgICAgICAgICAgICAgICAgbUlucHV0TW9uaXRvci5zZXRGb2N1c2VkQXBwTHcobnVsbCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiQXR0ZW1wdGVkIHRvIHJlbW92ZSBub24tZXhpc3RpbmcgYXBwIHRva2VuOiAiICsgdG9rZW4pOwpAQCAtNDM1NCw3ICs0MjgwLDcgQEAKICAgICAgICAgICAgICAgICAiZ2V0U3dpdGNoU3RhdGUoKSIpKSB7CiAgICAgICAgICAgICB0aHJvdyBuZXcgU2VjdXJpdHlFeGNlcHRpb24oIlJlcXVpcmVzIFJFQURfSU5QVVRfU1RBVEUgcGVybWlzc2lvbiIpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBLZXlJbnB1dFF1ZXVlLmdldFN3aXRjaFN0YXRlKHN3KTsKKyAgICAgICAgcmV0dXJuIG1JbnB1dE1hbmFnZXIuZ2V0U3dpdGNoU3RhdGUoc3cpOwogICAgIH0KIAogICAgIHB1YmxpYyBpbnQgZ2V0U3dpdGNoU3RhdGVGb3JEZXZpY2UoaW50IGRldmlkLCBpbnQgc3cpIHsKQEAgLTQzNjIsNyArNDI4OCw3IEBACiAgICAgICAgICAgICAgICAgImdldFN3aXRjaFN0YXRlRm9yRGV2aWNlKCkiKSkgewogICAgICAgICAgICAgdGhyb3cgbmV3IFNlY3VyaXR5RXhjZXB0aW9uKCJSZXF1aXJlcyBSRUFEX0lOUFVUX1NUQVRFIHBlcm1pc3Npb24iKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gS2V5SW5wdXRRdWV1ZS5nZXRTd2l0Y2hTdGF0ZShkZXZpZCwgc3cpOworICAgICAgICByZXR1cm4gbUlucHV0TWFuYWdlci5nZXRTd2l0Y2hTdGF0ZShkZXZpZCwgc3cpOwogICAgIH0KIAogICAgIHB1YmxpYyBpbnQgZ2V0U2NhbmNvZGVTdGF0ZShpbnQgc3cpIHsKQEAgLTQzNzAsNyArNDI5Niw3IEBACiAgICAgICAgICAgICAgICAgImdldFNjYW5jb2RlU3RhdGUoKSIpKSB7CiAgICAgICAgICAgICB0aHJvdyBuZXcgU2VjdXJpdHlFeGNlcHRpb24oIlJlcXVpcmVzIFJFQURfSU5QVVRfU1RBVEUgcGVybWlzc2lvbiIpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBtUXVldWUuZ2V0U2NhbmNvZGVTdGF0ZShzdyk7CisgICAgICAgIHJldHVybiBtSW5wdXRNYW5hZ2VyLmdldFNjYW5jb2RlU3RhdGUoc3cpOwogICAgIH0KIAogICAgIHB1YmxpYyBpbnQgZ2V0U2NhbmNvZGVTdGF0ZUZvckRldmljZShpbnQgZGV2aWQsIGludCBzdykgewpAQCAtNDM3OCw3ICs0MzA0LDcgQEAKICAgICAgICAgICAgICAgICAiZ2V0U2NhbmNvZGVTdGF0ZUZvckRldmljZSgpIikpIHsKICAgICAgICAgICAgIHRocm93IG5ldyBTZWN1cml0eUV4Y2VwdGlvbigiUmVxdWlyZXMgUkVBRF9JTlBVVF9TVEFURSBwZXJtaXNzaW9uIik7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1RdWV1ZS5nZXRTY2FuY29kZVN0YXRlKGRldmlkLCBzdyk7CisgICAgICAgIHJldHVybiBtSW5wdXRNYW5hZ2VyLmdldFNjYW5jb2RlU3RhdGUoZGV2aWQsIHN3KTsKICAgICB9CiAKICAgICBwdWJsaWMgaW50IGdldFRyYWNrYmFsbFNjYW5jb2RlU3RhdGUoaW50IHN3KSB7CkBAIC00Mzg2LDcgKzQzMTIsNyBAQAogICAgICAgICAgICAgICAgICJnZXRUcmFja2JhbGxTY2FuY29kZVN0YXRlKCkiKSkgewogICAgICAgICAgICAgdGhyb3cgbmV3IFNlY3VyaXR5RXhjZXB0aW9uKCJSZXF1aXJlcyBSRUFEX0lOUFVUX1NUQVRFIHBlcm1pc3Npb24iKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gbVF1ZXVlLmdldFRyYWNrYmFsbFNjYW5jb2RlU3RhdGUoc3cpOworICAgICAgICByZXR1cm4gbUlucHV0TWFuYWdlci5nZXRUcmFja2JhbGxTY2FuY29kZVN0YXRlKHN3KTsKICAgICB9CiAKICAgICBwdWJsaWMgaW50IGdldERQYWRTY2FuY29kZVN0YXRlKGludCBzdykgewpAQCAtNDM5NCw3ICs0MzIwLDcgQEAKICAgICAgICAgICAgICAgICAiZ2V0RFBhZFNjYW5jb2RlU3RhdGUoKSIpKSB7CiAgICAgICAgICAgICB0aHJvdyBuZXcgU2VjdXJpdHlFeGNlcHRpb24oIlJlcXVpcmVzIFJFQURfSU5QVVRfU1RBVEUgcGVybWlzc2lvbiIpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBtUXVldWUuZ2V0RFBhZFNjYW5jb2RlU3RhdGUoc3cpOworICAgICAgICByZXR1cm4gbUlucHV0TWFuYWdlci5nZXREUGFkU2NhbmNvZGVTdGF0ZShzdyk7CiAgICAgfQogCiAgICAgcHVibGljIGludCBnZXRLZXljb2RlU3RhdGUoaW50IHN3KSB7CkBAIC00NDAyLDcgKzQzMjgsNyBAQAogICAgICAgICAgICAgICAgICJnZXRLZXljb2RlU3RhdGUoKSIpKSB7CiAgICAgICAgICAgICB0aHJvdyBuZXcgU2VjdXJpdHlFeGNlcHRpb24oIlJlcXVpcmVzIFJFQURfSU5QVVRfU1RBVEUgcGVybWlzc2lvbiIpOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBtUXVldWUuZ2V0S2V5Y29kZVN0YXRlKHN3KTsKKyAgICAgICAgcmV0dXJuIG1JbnB1dE1hbmFnZXIuZ2V0S2V5Y29kZVN0YXRlKHN3KTsKICAgICB9CiAKICAgICBwdWJsaWMgaW50IGdldEtleWNvZGVTdGF0ZUZvckRldmljZShpbnQgZGV2aWQsIGludCBzdykgewpAQCAtNDQxMCw3ICs0MzM2LDcgQEAKICAgICAgICAgICAgICAgICAiZ2V0S2V5Y29kZVN0YXRlRm9yRGV2aWNlKCkiKSkgewogICAgICAgICAgICAgdGhyb3cgbmV3IFNlY3VyaXR5RXhjZXB0aW9uKCJSZXF1aXJlcyBSRUFEX0lOUFVUX1NUQVRFIHBlcm1pc3Npb24iKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gbVF1ZXVlLmdldEtleWNvZGVTdGF0ZShkZXZpZCwgc3cpOworICAgICAgICByZXR1cm4gbUlucHV0TWFuYWdlci5nZXRLZXljb2RlU3RhdGUoZGV2aWQsIHN3KTsKICAgICB9CiAKICAgICBwdWJsaWMgaW50IGdldFRyYWNrYmFsbEtleWNvZGVTdGF0ZShpbnQgc3cpIHsKQEAgLTQ0MTgsNyArNDM0NCw3IEBACiAgICAgICAgICAgICAgICAgImdldFRyYWNrYmFsbEtleWNvZGVTdGF0ZSgpIikpIHsKICAgICAgICAgICAgIHRocm93IG5ldyBTZWN1cml0eUV4Y2VwdGlvbigiUmVxdWlyZXMgUkVBRF9JTlBVVF9TVEFURSBwZXJtaXNzaW9uIik7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1RdWV1ZS5nZXRUcmFja2JhbGxLZXljb2RlU3RhdGUoc3cpOworICAgICAgICByZXR1cm4gbUlucHV0TWFuYWdlci5nZXRUcmFja2JhbGxLZXljb2RlU3RhdGUoc3cpOwogICAgIH0KIAogICAgIHB1YmxpYyBpbnQgZ2V0RFBhZEtleWNvZGVTdGF0ZShpbnQgc3cpIHsKQEAgLTQ0MjYsMTEgKzQzNTIsMTEgQEAKICAgICAgICAgICAgICAgICAiZ2V0RFBhZEtleWNvZGVTdGF0ZSgpIikpIHsKICAgICAgICAgICAgIHRocm93IG5ldyBTZWN1cml0eUV4Y2VwdGlvbigiUmVxdWlyZXMgUkVBRF9JTlBVVF9TVEFURSBwZXJtaXNzaW9uIik7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1RdWV1ZS5nZXREUGFkS2V5Y29kZVN0YXRlKHN3KTsKKyAgICAgICAgcmV0dXJuIG1JbnB1dE1hbmFnZXIuZ2V0RFBhZEtleWNvZGVTdGF0ZShzdyk7CiAgICAgfQogCiAgICAgcHVibGljIGJvb2xlYW4gaGFzS2V5cyhpbnRbXSBrZXljb2RlcywgYm9vbGVhbltdIGtleUV4aXN0cykgewotICAgICAgICByZXR1cm4gS2V5SW5wdXRRdWV1ZS5oYXNLZXlzKGtleWNvZGVzLCBrZXlFeGlzdHMpOworICAgICAgICByZXR1cm4gbUlucHV0TWFuYWdlci5oYXNLZXlzKGtleWNvZGVzLCBrZXlFeGlzdHMpOwogICAgIH0KIAogICAgIHB1YmxpYyB2b2lkIGVuYWJsZVNjcmVlbkFmdGVyQm9vdCgpIHsKQEAgLTQ1NzUsNyArNDUwMSw3IEBACiAgICAgICAgICAgICBtTGF5b3V0TmVlZGVkID0gdHJ1ZTsKICAgICAgICAgICAgIHN0YXJ0RnJlZXppbmdEaXNwbGF5TG9ja2VkKCk7CiAgICAgICAgICAgICBTbG9nLmkoVEFHLCAiU2V0dGluZyByb3RhdGlvbiB0byAiICsgcm90YXRpb24gKyAiLCBhbmltRmxhZ3M9IiArIGFuaW1GbGFncyk7Ci0gICAgICAgICAgICBtUXVldWUuc2V0T3JpZW50YXRpb24ocm90YXRpb24pOworICAgICAgICAgICAgbUlucHV0TWFuYWdlci5zZXREaXNwbGF5T3JpZW50YXRpb24oMCwgcm90YXRpb24pOwogICAgICAgICAgICAgaWYgKG1EaXNwbGF5RW5hYmxlZCkgewogICAgICAgICAgICAgICAgIFN1cmZhY2Uuc2V0T3JpZW50YXRpb24oMCwgcm90YXRpb24sIGFuaW1GbGFncyk7CiAgICAgICAgICAgICB9CkBAIC00OTA2LDcgKzQ4MzIsOCBAQAogICAgICAgICBpZiAobURpc3BsYXkgPT0gbnVsbCkgewogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIG1RdWV1ZS5nZXRJbnB1dENvbmZpZ3VyYXRpb24oY29uZmlnKTsKKyAgICAgICAgCisgICAgICAgIG1JbnB1dE1hbmFnZXIuZ2V0SW5wdXRDb25maWd1cmF0aW9uKGNvbmZpZyk7CiAKICAgICAgICAgLy8gVXNlIHRoZSBlZmZlY3RpdmUgInZpc3VhbCIgZGltZW5zaW9ucyBiYXNlZCBvbiBjdXJyZW50IHJvdGF0aW9uCiAgICAgICAgIGZpbmFsIGJvb2xlYW4gcm90YXRlZCA9IChtUm90YXRpb24gPT0gU3VyZmFjZS5ST1RBVElPTl85MApAQCAtNDk0OSw4ICs0ODc2LDEyIEBACiAgICAgICAgICAgICAgICAgbVNjcmVlbkxheW91dCA9IENvbmZpZ3VyYXRpb24uU0NSRUVOTEFZT1VUX1NJWkVfU01BTEwKICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29uZmlndXJhdGlvbi5TQ1JFRU5MQVlPVVRfTE9OR19OTzsKICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gSXMgdGhpcyBhIGxhcmdlIHNjcmVlbj8KLSAgICAgICAgICAgICAgICBpZiAobG9uZ1NpemUgPiA2NDAgJiYgc2hvcnRTaXplID49IDQ4MCkgeworICAgICAgICAgICAgICAgIC8vIFdoYXQgc2l6ZSBpcyB0aGlzIHNjcmVlbiBzY3JlZW4/CisgICAgICAgICAgICAgICAgaWYgKGxvbmdTaXplID49IDgwMCAmJiBzaG9ydFNpemUgPj0gNjAwKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFNWR0Egb3IgbGFyZ2VyIHNjcmVlbnMgYXQgbWVkaXVtIGRlbnNpdHkgYXJlIHRoZSBwb2ludAorICAgICAgICAgICAgICAgICAgICAvLyBhdCB3aGljaCB3ZSBjb25zaWRlciBpdCB0byBiZSBhbiBleHRyYSBsYXJnZSBzY3JlZW4uCisgICAgICAgICAgICAgICAgICAgIG1TY3JlZW5MYXlvdXQgPSBDb25maWd1cmF0aW9uLlNDUkVFTkxBWU9VVF9TSVpFX1hMQVJHRTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGxvbmdTaXplID49IDY0MCAmJiBzaG9ydFNpemUgPj0gNDgwKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFZHQSBvciBsYXJnZXIgc2NyZWVucyBhdCBtZWRpdW0gZGVuc2l0eSBhcmUgdGhlIHBvaW50CiAgICAgICAgICAgICAgICAgICAgIC8vIGF0IHdoaWNoIHdlIGNvbnNpZGVyIGl0IHRvIGJlIGEgbGFyZ2Ugc2NyZWVuLgogICAgICAgICAgICAgICAgICAgICBtU2NyZWVuTGF5b3V0ID0gQ29uZmlndXJhdGlvbi5TQ1JFRU5MQVlPVVRfU0laRV9MQVJHRTsKQEAgLTQ5ODEsNDUxICs0OTEyLDM4MSBAQAogICAgICAgICBtUG9saWN5LmFkanVzdENvbmZpZ3VyYXRpb25Mdyhjb25maWcpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0KKyAgICAKICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgLy8gSW5wdXQgRXZlbnRzIGFuZCBGb2N1cyBNYW5hZ2VtZW50CiAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIAorICAgIElucHV0TW9uaXRvciBtSW5wdXRNb25pdG9yID0gbmV3IElucHV0TW9uaXRvcigpOworICAgIAorICAgIC8qIFRyYWNrcyB0aGUgcHJvZ3Jlc3Mgb2YgaW5wdXQgZGlzcGF0Y2ggYW5kIGVuc3VyZXMgdGhhdCBpbnB1dCBkaXNwYXRjaCBzdGF0ZQorICAgICAqIGlzIGtlcHQgaW4gc3luYyB3aXRoIGNoYW5nZXMgaW4gd2luZG93IGZvY3VzLCB2aXNpYmlsaXR5LCByZWdpc3RyYXRpb24sIGFuZAorICAgICAqIG90aGVyIHJlbGV2YW50IFdpbmRvdyBNYW5hZ2VyIHN0YXRlIHRyYW5zaXRpb25zLiAqLworICAgIGZpbmFsIGNsYXNzIElucHV0TW9uaXRvciB7CisgICAgICAgIC8vIEN1cnJlbnQgd2luZG93IHdpdGggaW5wdXQgZm9jdXMgZm9yIGtleXMgYW5kIG90aGVyIG5vbi10b3VjaCBldmVudHMuICBNYXkgYmUgbnVsbC4KKyAgICAgICAgcHJpdmF0ZSBXaW5kb3dTdGF0ZSBtSW5wdXRGb2N1czsKKyAgICAgICAgCisgICAgICAgIC8vIFdoZW4gdHJ1ZSwgcHJldmVudHMgaW5wdXQgZGlzcGF0Y2ggZnJvbSBwcm9jZWVkaW5nIHVudGlsIHNldCB0byBmYWxzZSBhZ2Fpbi4KKyAgICAgICAgcHJpdmF0ZSBib29sZWFuIG1JbnB1dERpc3BhdGNoRnJvemVuOworICAgICAgICAKKyAgICAgICAgLy8gV2hlbiB0cnVlLCBpbnB1dCBkaXNwYXRjaCBwcm9jZWVkcyBub3JtYWxseS4gIE90aGVyd2lzZSBhbGwgZXZlbnRzIGFyZSBkcm9wcGVkLgorICAgICAgICBwcml2YXRlIGJvb2xlYW4gbUlucHV0RGlzcGF0Y2hFbmFibGVkID0gdHJ1ZTsKIAotICAgIHByaXZhdGUgZmluYWwgdm9pZCB3YWtldXBJZk5lZWRlZChXaW5kb3dTdGF0ZSB0YXJnZXRXaW4sIGludCBldmVudFR5cGUpIHsKLSAgICAgICAgbG9uZyBjdXJUaW1lID0gU3lzdGVtQ2xvY2sudXB0aW1lTWlsbGlzKCk7Ci0KLSAgICAgICAgaWYgKGV2ZW50VHlwZSA9PSBUT1VDSF9FVkVOVCB8fCBldmVudFR5cGUgPT0gTE9OR19UT1VDSF9FVkVOVCB8fCBldmVudFR5cGUgPT0gQ0hFRUtfRVZFTlQpIHsKLSAgICAgICAgICAgIGlmIChtTGFzdFRvdWNoRXZlbnRUeXBlID09IGV2ZW50VHlwZSAmJgotICAgICAgICAgICAgICAgICAgICAoY3VyVGltZSAtIG1MYXN0VXNlckFjdGl2aXR5Q2FsbFRpbWUpIDwgTUlOX1RJTUVfQkVUV0VFTl9VU0VSQUNUSVZJVElFUykgewotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1MYXN0VXNlckFjdGl2aXR5Q2FsbFRpbWUgPSBjdXJUaW1lOwotICAgICAgICAgICAgbUxhc3RUb3VjaEV2ZW50VHlwZSA9IGV2ZW50VHlwZTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICh0YXJnZXRXaW4gPT0gbnVsbAotICAgICAgICAgICAgICAgIHx8IHRhcmdldFdpbi5tQXR0cnMudHlwZSAhPSBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5UWVBFX0tFWUdVQVJEKSB7Ci0gICAgICAgICAgICBtUG93ZXJNYW5hZ2VyLnVzZXJBY3Rpdml0eShjdXJUaW1lLCBmYWxzZSwgZXZlbnRUeXBlLCBmYWxzZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyB0ZWxscyBpZiBpdCdzIGEgY2hlZWsgZXZlbnQgb3Igbm90IC0tIHRoaXMgZnVuY3Rpb24gaXMgc3RhdGVmdWwKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRVZFTlRfTk9ORSA9IDA7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEVWRU5UX1VOS05PV04gPSAwOwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBFVkVOVF9DSEVFSyA9IDA7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEVWRU5UX0lHTk9SRV9EVVJBVElPTiA9IDMwMDsgLy8gbXMKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBmbG9hdCBDSEVFS19USFJFU0hPTEQgPSAwLjZmOwotICAgIHByaXZhdGUgaW50IG1FdmVudFN0YXRlID0gRVZFTlRfTk9ORTsKLSAgICBwcml2YXRlIGZsb2F0IG1FdmVudFNpemU7Ci0KLSAgICBwcml2YXRlIGludCBldmVudFR5cGUoTW90aW9uRXZlbnQgZXYpIHsKLSAgICAgICAgZmxvYXQgc2l6ZSA9IGV2LmdldFNpemUoKTsKLSAgICAgICAgc3dpdGNoIChldi5nZXRBY3Rpb24oKSkgewotICAgICAgICBjYXNlIE1vdGlvbkV2ZW50LkFDVElPTl9ET1dOOgotICAgICAgICAgICAgbUV2ZW50U2l6ZSA9IHNpemU7Ci0gICAgICAgICAgICByZXR1cm4gKG1FdmVudFNpemUgPiBDSEVFS19USFJFU0hPTEQpID8gQ0hFRUtfRVZFTlQgOiBUT1VDSF9FVkVOVDsKLSAgICAgICAgY2FzZSBNb3Rpb25FdmVudC5BQ1RJT05fVVA6Ci0gICAgICAgICAgICBpZiAoc2l6ZSA+IG1FdmVudFNpemUpIG1FdmVudFNpemUgPSBzaXplOwotICAgICAgICAgICAgcmV0dXJuIChtRXZlbnRTaXplID4gQ0hFRUtfVEhSRVNIT0xEKSA/IENIRUVLX0VWRU5UIDogVE9VQ0hfVVBfRVZFTlQ7Ci0gICAgICAgIGNhc2UgTW90aW9uRXZlbnQuQUNUSU9OX01PVkU6Ci0gICAgICAgICAgICBmaW5hbCBpbnQgTiA9IGV2LmdldEhpc3RvcnlTaXplKCk7Ci0gICAgICAgICAgICBpZiAoc2l6ZSA+IG1FdmVudFNpemUpIG1FdmVudFNpemUgPSBzaXplOwotICAgICAgICAgICAgaWYgKG1FdmVudFNpemUgPiBDSEVFS19USFJFU0hPTEQpIHJldHVybiBDSEVFS19FVkVOVDsKLSAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxOOyBpKyspIHsKLSAgICAgICAgICAgICAgICBzaXplID0gZXYuZ2V0SGlzdG9yaWNhbFNpemUoaSk7Ci0gICAgICAgICAgICAgICAgaWYgKHNpemUgPiBtRXZlbnRTaXplKSBtRXZlbnRTaXplID0gc2l6ZTsKLSAgICAgICAgICAgICAgICBpZiAobUV2ZW50U2l6ZSA+IENIRUVLX1RIUkVTSE9MRCkgcmV0dXJuIENIRUVLX0VWRU5UOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGV2LmdldEV2ZW50VGltZSgpIDwgZXYuZ2V0RG93blRpbWUoKSArIEVWRU5UX0lHTk9SRV9EVVJBVElPTikgewotICAgICAgICAgICAgICAgIHJldHVybiBUT1VDSF9FVkVOVDsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIExPTkdfVE9VQ0hfRVZFTlQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAvLyBub3QgZ29vZAotICAgICAgICAgICAgcmV0dXJuIE9USEVSX0VWRU5UOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogQHJldHVybiBSZXR1cm5zIHRydWUgaWYgZXZlbnQgd2FzIGRpc3BhdGNoZWQsIGZhbHNlIGlmIGl0IHdhcyBkcm9wcGVkIGZvciBhbnkgcmVhc29uCi0gICAgICovCi0gICAgcHJpdmF0ZSBpbnQgZGlzcGF0Y2hQb2ludGVyKFF1ZXVlZEV2ZW50IHFldiwgTW90aW9uRXZlbnQgZXYsIGludCBwaWQsIGludCB1aWQpIHsKLSAgICAgICAgaWYgKERFQlVHX0lOUFVUIHx8IFdpbmRvd01hbmFnZXJQb2xpY3kuV0FUQ0hfUE9JTlRFUikgU2xvZy52KFRBRywKLSAgICAgICAgICAgICAgICAiZGlzcGF0Y2hQb2ludGVyICIgKyBldik7Ci0KLSAgICAgICAgaWYgKE1FQVNVUkVfTEFURU5DWSkgewotICAgICAgICAgICAgbHQuc2FtcGxlKCIzIFdhaXQgZm9yIGxhc3QgZGlzcGF0Y2ggIiwgU3lzdGVtLm5hbm9UaW1lKCkgLSBxZXYud2hlbk5hbm8pOwotICAgICAgICB9Ci0KLSAgICAgICAgT2JqZWN0IHRhcmdldE9iaiA9IG1LZXlXYWl0ZXIud2FpdEZvck5leHRFdmVudFRhcmdldChudWxsLCBxZXYsCi0gICAgICAgICAgICAgICAgZXYsIHRydWUsIGZhbHNlLCBwaWQsIHVpZCk7Ci0KLSAgICAgICAgaWYgKE1FQVNVUkVfTEFURU5DWSkgewotICAgICAgICAgICAgbHQuc2FtcGxlKCIzIExhc3QgZGlzcGF0Y2ggZmluaXNoZWQgIiwgU3lzdGVtLm5hbm9UaW1lKCkgLSBxZXYud2hlbk5hbm8pOwotICAgICAgICB9Ci0KLSAgICAgICAgaW50IGFjdGlvbiA9IGV2LmdldEFjdGlvbigpOwotCi0gICAgICAgIGlmIChhY3Rpb24gPT0gTW90aW9uRXZlbnQuQUNUSU9OX1VQKSB7Ci0gICAgICAgICAgICAvLyBsZXQgZ28gb2Ygb3VyIHRhcmdldAotICAgICAgICAgICAgbUtleVdhaXRlci5tTW90aW9uVGFyZ2V0ID0gbnVsbDsKLSAgICAgICAgICAgIG1Qb3dlck1hbmFnZXIubG9nUG9pbnRlclVwRXZlbnQoKTsKLSAgICAgICAgfSBlbHNlIGlmIChhY3Rpb24gPT0gTW90aW9uRXZlbnQuQUNUSU9OX0RPV04pIHsKLSAgICAgICAgICAgIG1Qb3dlck1hbmFnZXIubG9nUG9pbnRlckRvd25FdmVudCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHRhcmdldE9iaiA9PSBudWxsKSB7Ci0gICAgICAgICAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgYXJlIGVpdGhlciBkcm9wcGluZyB0aGUgZXZlbnQsIG9yIGhhdmUgcmVjZWl2ZWQKLSAgICAgICAgICAgIC8vIGEgbW92ZSBvciB1cCB3aXRob3V0IGEgZG93bi4gIEl0IGlzIGNvbW1vbiB0byByZWNlaXZlIG1vdmUKLSAgICAgICAgICAgIC8vIGV2ZW50cyBpbiBzdWNoIGEgd2F5LCBzaW5jZSB0aGlzIG1lYW5zIHRoZSB1c2VyIGlzIG1vdmluZyB0aGUKLSAgICAgICAgICAgIC8vIHBvaW50ZXIgd2l0aG91dCBhY3R1YWxseSBwcmVzc2luZyBkb3duLiAgQWxsIG90aGVyIGNhc2VzIHNob3VsZAotICAgICAgICAgICAgLy8gYmUgYXR5cGljYWwsIHNvIGxldCdzIGxvZyB0aGVtLgotICAgICAgICAgICAgaWYgKGFjdGlvbiAhPSBNb3Rpb25FdmVudC5BQ1RJT05fTU9WRSkgewotICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsICJObyB3aW5kb3cgdG8gZGlzcGF0Y2ggcG9pbnRlciBhY3Rpb24gIiArIGV2LmdldEFjdGlvbigpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHN5bmNocm9uaXplZCAobVdpbmRvd01hcCkgewotICAgICAgICAgICAgICAgIGRpc3BhdGNoUG9pbnRlckVsc2V3aGVyZUxvY2tlZChudWxsLCBudWxsLCBldiwgZXYuZ2V0RXZlbnRUaW1lKCksIHRydWUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHFldiAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgbVF1ZXVlLnJlY3ljbGVFdmVudChxZXYpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZXYucmVjeWNsZSgpOwotICAgICAgICAgICAgcmV0dXJuIElOSkVDVF9GQUlMRUQ7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHRhcmdldE9iaiA9PSBtS2V5V2FpdGVyLkNPTlNVTUVEX0VWRU5UX1RPS0VOKSB7Ci0gICAgICAgICAgICBzeW5jaHJvbml6ZWQgKG1XaW5kb3dNYXApIHsKLSAgICAgICAgICAgICAgICBkaXNwYXRjaFBvaW50ZXJFbHNld2hlcmVMb2NrZWQobnVsbCwgbnVsbCwgZXYsIGV2LmdldEV2ZW50VGltZSgpLCB0cnVlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChxZXYgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIG1RdWV1ZS5yZWN5Y2xlRXZlbnQocWV2KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGV2LnJlY3ljbGUoKTsKLSAgICAgICAgICAgIHJldHVybiBJTkpFQ1RfU1VDQ0VFREVEOwotICAgICAgICB9Ci0KLSAgICAgICAgV2luZG93U3RhdGUgdGFyZ2V0ID0gKFdpbmRvd1N0YXRlKXRhcmdldE9iajsKLQotICAgICAgICBmaW5hbCBsb25nIGV2ZW50VGltZSA9IGV2LmdldEV2ZW50VGltZSgpOwotICAgICAgICBmaW5hbCBsb25nIGV2ZW50VGltZU5hbm8gPSBldi5nZXRFdmVudFRpbWVOYW5vKCk7Ci0KLSAgICAgICAgLy9TbG9nLmkoVEFHLCAiU2VuZGluZyAiICsgZXYgKyAiIHRvICIgKyB0YXJnZXQpOwotCi0gICAgICAgIGlmICh1aWQgIT0gMCAmJiB1aWQgIT0gdGFyZ2V0Lm1TZXNzaW9uLm1VaWQpIHsKLSAgICAgICAgICAgIGlmIChtQ29udGV4dC5jaGVja1Blcm1pc3Npb24oCi0gICAgICAgICAgICAgICAgICAgIGFuZHJvaWQuTWFuaWZlc3QucGVybWlzc2lvbi5JTkpFQ1RfRVZFTlRTLCBwaWQsIHVpZCkKLSAgICAgICAgICAgICAgICAgICAgIT0gUGFja2FnZU1hbmFnZXIuUEVSTUlTU0lPTl9HUkFOVEVEKSB7Ci0gICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIlBlcm1pc3Npb24gZGVuaWVkOiBpbmplY3RpbmcgcG9pbnRlciBldmVudCBmcm9tIHBpZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICArIHBpZCArICIgdWlkICIgKyB1aWQgKyAiIHRvIHdpbmRvdyAiICsgdGFyZ2V0Ci0gICAgICAgICAgICAgICAgICAgICAgICArICIgb3duZWQgYnkgdWlkICIgKyB0YXJnZXQubVNlc3Npb24ubVVpZCk7Ci0gICAgICAgICAgICAgICAgaWYgKHFldiAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1RdWV1ZS5yZWN5Y2xlRXZlbnQocWV2KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZXYucmVjeWNsZSgpOwotICAgICAgICAgICAgICAgIHJldHVybiBJTkpFQ1RfTk9fUEVSTUlTU0lPTjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGlmIChNRUFTVVJFX0xBVEVOQ1kpIHsKLSAgICAgICAgICAgIGx0LnNhbXBsZSgiNCBpbiBkaXNwYXRjaFBvaW50ZXIgICAgICIsIFN5c3RlbS5uYW5vVGltZSgpIC0gZXZlbnRUaW1lTmFubyk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoKHRhcmdldC5tQXR0cnMuZmxhZ3MgJgotICAgICAgICAgICAgICAgICAgICAgICAgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19JR05PUkVfQ0hFRUtfUFJFU1NFUykgIT0gMCkgewotICAgICAgICAgICAgLy90YXJnZXQgd2FudHMgdG8gaWdub3JlIGZhdCB0b3VjaCBldmVudHMKLSAgICAgICAgICAgIGJvb2xlYW4gY2hlZWtQcmVzcyA9IG1Qb2xpY3kuaXNDaGVla1ByZXNzZWRBZ2FpbnN0U2NyZWVuKGV2KTsKLSAgICAgICAgICAgIC8vZXhwbGljaXQgZmxhZyB0byByZXR1cm4gd2l0aG91dCBwcm9jZXNzaW5nIGV2ZW50IGZ1cnRoZXIKLSAgICAgICAgICAgIGJvb2xlYW4gcmV0dXJuRmxhZyA9IGZhbHNlOwotICAgICAgICAgICAgaWYoKGFjdGlvbiA9PSBNb3Rpb25FdmVudC5BQ1RJT05fRE9XTikpIHsKLSAgICAgICAgICAgICAgICBtRmF0VG91Y2ggPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBpZihjaGVla1ByZXNzKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1GYXRUb3VjaCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybkZsYWcgPSB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYoYWN0aW9uID09IE1vdGlvbkV2ZW50LkFDVElPTl9VUCkgewotICAgICAgICAgICAgICAgICAgICBpZihtRmF0VG91Y2gpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vZWFybGllciBldmVuIHdhcyBpbnZhbGlkIGRvZXNudCBtYXR0ZXIgaWYgY3VycmVudCB1cCBpcyBjaGVla3ByZXNzIG9yIG5vdAotICAgICAgICAgICAgICAgICAgICAgICAgbUZhdFRvdWNoID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5GbGFnID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmKGNoZWVrUHJlc3MpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vY2FuY2VsIHRoZSBlYXJsaWVyIGV2ZW50Ci0gICAgICAgICAgICAgICAgICAgICAgICBldi5zZXRBY3Rpb24oTW90aW9uRXZlbnQuQUNUSU9OX0NBTkNFTCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24gPSBNb3Rpb25FdmVudC5BQ1RJT05fQ0FOQ0VMOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmKGFjdGlvbiA9PSBNb3Rpb25FdmVudC5BQ1RJT05fTU9WRSkgewotICAgICAgICAgICAgICAgICAgICBpZihtRmF0VG91Y2gpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vdHdvIGNhc2VzIGhlcmUKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vYW4gaW52YWxpZCBkb3duIGZvbGxvd2VkIGJ5IDAgb3IgbW92ZXModmFsaWQgb3IgaW52YWxpZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vYSB2YWxpZCBkb3duLCAgaW52YWxpZCBtb3ZlLCBtb3JlIG1vdmVzLiB3YW50IHRvIGlnbm9yZSB0aWxsIHVwCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5GbGFnID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmKGNoZWVrUHJlc3MpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vdmFsaWQgZG93biBmb2xsb3dlZCBieSBpbnZhbGlkIG1vdmVzCi0gICAgICAgICAgICAgICAgICAgICAgICAvL2FuIGludmFsaWQgbW92ZSBoYXZlIHRvIGNhbmNlbCBlYXJsaWVyIGFjdGlvbgotICAgICAgICAgICAgICAgICAgICAgICAgZXYuc2V0QWN0aW9uKE1vdGlvbkV2ZW50LkFDVElPTl9DQU5DRUwpOwotICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uID0gTW90aW9uRXZlbnQuQUNUSU9OX0NBTkNFTDsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19JTlBVVCkgU2xvZy52KFRBRywgIlNlbmRpbmcgY2FuY2VsIGZvciBpbnZhbGlkIEFDVElPTl9NT1ZFIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvL25vdGUgdGhhdCB0aGUgc3Vic2VxdWVudCBpbnZhbGlkIG1vdmVzIHdpbGwgbm90IGdldCBoZXJlCi0gICAgICAgICAgICAgICAgICAgICAgICBtRmF0VG91Y2ggPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSAvL2Vsc2UgaWYgYWN0aW9uCi0gICAgICAgICAgICBpZihyZXR1cm5GbGFnKSB7Ci0gICAgICAgICAgICAgICAgLy9yZWN5Y2xlIHF1ZSwgZXYKLSAgICAgICAgICAgICAgICBpZiAocWV2ICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgbVF1ZXVlLnJlY3ljbGVFdmVudChxZXYpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBldi5yZWN5Y2xlKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIElOSkVDVF9GQUlMRUQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gLy9lbmQgaWYgdGFyZ2V0Ci0KLSAgICAgICAgLy8gRW5hYmxlIHRoaXMgZm9yIHRlc3RpbmcgdGhlICJyaWdodCIgdmFsdWUKLSAgICAgICAgaWYgKGZhbHNlICYmIGFjdGlvbiA9PSBNb3Rpb25FdmVudC5BQ1RJT05fRE9XTikgewotICAgICAgICAgICAgaW50IG1heF9ldmVudHNfcGVyX3NlYyA9IDM1OwotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBtYXhfZXZlbnRzX3Blcl9zZWMgPSBJbnRlZ2VyLnBhcnNlSW50KFN5c3RlbVByb3BlcnRpZXMKLSAgICAgICAgICAgICAgICAgICAgICAgIC5nZXQoIndpbmRvd3NtZ3IubWF4X2V2ZW50c19wZXJfc2VjIikpOwotICAgICAgICAgICAgICAgIGlmIChtYXhfZXZlbnRzX3Blcl9zZWMgPCAxKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1heF9ldmVudHNfcGVyX3NlYyA9IDM1OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gY2F0Y2ggKE51bWJlckZvcm1hdEV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBtTWluV2FpdFRpbWVCZXR3ZWVuVG91Y2hFdmVudHMgPSAxMDAwIC8gbWF4X2V2ZW50c19wZXJfc2VjOwotICAgICAgICB9Ci0KLSAgICAgICAgLyoKLSAgICAgICAgICogVGhyb3R0bGUgZXZlbnRzIHRvIG1pbmltaXplIENQVSB1c2FnZSB3aGVuIHRoZXJlJ3MgYSBmbG9vZCBvZiBldmVudHMKLSAgICAgICAgICogZS5nLiBjb25zdGFudCBjb250YWN0IHdpdGggdGhlIHNjcmVlbgorICAgICAgICAvLyBUZW1wb3JhcnkgbGlzdCBvZiB3aW5kb3dzIGluZm9ybWF0aW9uIHRvIHByb3ZpZGUgdG8gdGhlIGlucHV0IGRpc3BhdGNoZXIuCisgICAgICAgIHByaXZhdGUgSW5wdXRXaW5kb3dMaXN0IG1UZW1wSW5wdXRXaW5kb3dzID0gbmV3IElucHV0V2luZG93TGlzdCgpOworICAgICAgICAKKyAgICAgICAgLy8gVGVtcG9yYXJ5IGlucHV0IGFwcGxpY2F0aW9uIG9iamVjdCB0byBwcm92aWRlIHRvIHRoZSBpbnB1dCBkaXNwYXRjaGVyLgorICAgICAgICBwcml2YXRlIElucHV0QXBwbGljYXRpb24gbVRlbXBJbnB1dEFwcGxpY2F0aW9uID0gbmV3IElucHV0QXBwbGljYXRpb24oKTsKKyAgICAgICAgCisgICAgICAgIC8qIE5vdGlmaWVzIHRoZSB3aW5kb3cgbWFuYWdlciBhYm91dCBhIGJyb2tlbiBpbnB1dCBjaGFubmVsLgorICAgICAgICAgKiAKKyAgICAgICAgICogQ2FsbGVkIGJ5IHRoZSBJbnB1dE1hbmFnZXIuCiAgICAgICAgICAqLwotICAgICAgICBpZiAoYWN0aW9uID09IE1vdGlvbkV2ZW50LkFDVElPTl9NT1ZFKSB7Ci0gICAgICAgICAgICBsb25nIG5leHRFdmVudFRpbWUgPSBtTGFzdFRvdWNoRXZlbnRUaW1lICsgbU1pbldhaXRUaW1lQmV0d2VlblRvdWNoRXZlbnRzOwotICAgICAgICAgICAgbG9uZyBub3cgPSBTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKTsKLSAgICAgICAgICAgIGlmIChub3cgPCBuZXh0RXZlbnRUaW1lKSB7CisgICAgICAgIHB1YmxpYyB2b2lkIG5vdGlmeUlucHV0Q2hhbm5lbEJyb2tlbihJbnB1dENoYW5uZWwgaW5wdXRDaGFubmVsKSB7CisgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKG1XaW5kb3dNYXApIHsKKyAgICAgICAgICAgICAgICBXaW5kb3dTdGF0ZSB3aW5kb3dTdGF0ZSA9IGdldFdpbmRvd1N0YXRlRm9ySW5wdXRDaGFubmVsTG9ja2VkKGlucHV0Q2hhbm5lbCk7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvd1N0YXRlID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOyAvLyBpcnJlbGV2YW50CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIFNsb2cuaShUQUcsICJXSU5ET1cgRElFRCAiICsgd2luZG93U3RhdGUpOworICAgICAgICAgICAgICAgIHJlbW92ZVdpbmRvd0xvY2tlZCh3aW5kb3dTdGF0ZS5tU2Vzc2lvbiwgd2luZG93U3RhdGUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvKiBOb3RpZmllcyB0aGUgd2luZG93IG1hbmFnZXIgYWJvdXQgYW4gaW5wdXQgY2hhbm5lbCB0aGF0IGlzIG5vdCByZXNwb25kaW5nLgorICAgICAgICAgKiBUaGUgbWV0aG9kIGNhbiBlaXRoZXIgY2F1c2UgZGlzcGF0Y2hpbmcgdG8gYmUgYWJvcnRlZCBieSByZXR1cm5pbmcgLTIgb3IKKyAgICAgICAgICogcmV0dXJuIGEgbmV3IHRpbWVvdXQgaW4gbmFub3NlY29uZHMuCisgICAgICAgICAqIAorICAgICAgICAgKiBDYWxsZWQgYnkgdGhlIElucHV0TWFuYWdlci4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyBsb25nIG5vdGlmeUlucHV0Q2hhbm5lbEFOUihJbnB1dENoYW5uZWwgaW5wdXRDaGFubmVsKSB7CisgICAgICAgICAgICBBcHBXaW5kb3dUb2tlbiB0b2tlbjsKKyAgICAgICAgICAgIHN5bmNocm9uaXplZCAobVdpbmRvd01hcCkgeworICAgICAgICAgICAgICAgIFdpbmRvd1N0YXRlIHdpbmRvd1N0YXRlID0gZ2V0V2luZG93U3RhdGVGb3JJbnB1dENoYW5uZWxMb2NrZWQoaW5wdXRDaGFubmVsKTsKKyAgICAgICAgICAgICAgICBpZiAod2luZG93U3RhdGUgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTI7IC8vIGlycmVsZXZhbnQsIGFib3J0IGRpc3BhdGNoaW5nICgtMikKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgU2xvZy5pKFRBRywgIklucHV0IGV2ZW50IGRpc3BhdGNoaW5nIHRpbWVkIG91dCBzZW5kaW5nIHRvICIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgd2luZG93U3RhdGUubUF0dHJzLmdldFRpdGxlKCkpOworICAgICAgICAgICAgICAgIHRva2VuID0gd2luZG93U3RhdGUubUFwcFRva2VuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICByZXR1cm4gbm90aWZ5QU5SSW50ZXJuYWwodG9rZW4pOworICAgICAgICB9CisgICAgCisgICAgICAgIC8qIE5vdGlmaWVzIHRoZSB3aW5kb3cgbWFuYWdlciBhYm91dCBhbiBpbnB1dCBjaGFubmVsIHNwb250YW5lb3VzbHkgcmVjb3ZlcmluZyBmcm9tIEFOUgorICAgICAgICAgKiBieSBzdWNjZXNzZnVsbHkgZGVsaXZlcmluZyB0aGUgZXZlbnQgdGhhdCBvcmlnaW5hbGx5IHRpbWVkIG91dC4KKyAgICAgICAgICogCisgICAgICAgICAqIENhbGxlZCBieSB0aGUgSW5wdXRNYW5hZ2VyLgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHZvaWQgbm90aWZ5SW5wdXRDaGFubmVsUmVjb3ZlcmVkRnJvbUFOUihJbnB1dENoYW5uZWwgaW5wdXRDaGFubmVsKSB7CisgICAgICAgICAgICAvLyBOb3RoaW5nIHRvIGRvIGp1c3Qgbm93LgorICAgICAgICAgICAgLy8gSnVzdCB3YWl0IGZvciB0aGUgdXNlciB0byBkaXNtaXNzIHRoZSBBTlIgZGlhbG9nLgorICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvKiBOb3RpZmllcyB0aGUgd2luZG93IG1hbmFnZXIgYWJvdXQgYW4gYXBwbGljYXRpb24gdGhhdCBpcyBub3QgcmVzcG9uZGluZworICAgICAgICAgKiBpbiBnZW5lcmFsIHJhdGhlciB0aGFuIHdpdGggcmVzcGVjdCB0byBhIHBhcnRpY3VsYXIgaW5wdXQgY2hhbm5lbC4KKyAgICAgICAgICogVGhlIG1ldGhvZCBjYW4gZWl0aGVyIGNhdXNlIGRpc3BhdGNoaW5nIHRvIGJlIGFib3J0ZWQgYnkgcmV0dXJuaW5nIC0yIG9yCisgICAgICAgICAqIHJldHVybiBhIG5ldyB0aW1lb3V0IGluIG5hbm9zZWNvbmRzLgorICAgICAgICAgKiAKKyAgICAgICAgICogQ2FsbGVkIGJ5IHRoZSBJbnB1dE1hbmFnZXIuCisgICAgICAgICAqLworICAgICAgICBwdWJsaWMgbG9uZyBub3RpZnlBTlIoT2JqZWN0IHRva2VuKSB7CisgICAgICAgICAgICBBcHBXaW5kb3dUb2tlbiBhcHBXaW5kb3dUb2tlbiA9IChBcHBXaW5kb3dUb2tlbikgdG9rZW47CisKKyAgICAgICAgICAgIFNsb2cuaShUQUcsICJJbnB1dCBldmVudCBkaXNwYXRjaGluZyB0aW1lZCBvdXQgc2VuZGluZyB0byBhcHBsaWNhdGlvbiAiCisgICAgICAgICAgICAgICAgICAgICsgYXBwV2luZG93VG9rZW4uc3RyaW5nTmFtZSk7CisgICAgICAgICAgICByZXR1cm4gbm90aWZ5QU5SSW50ZXJuYWwoYXBwV2luZG93VG9rZW4pOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwcml2YXRlIGxvbmcgbm90aWZ5QU5SSW50ZXJuYWwoQXBwV2luZG93VG9rZW4gdG9rZW4pIHsKKyAgICAgICAgICAgIGlmICh0b2tlbiAhPSBudWxsICYmIHRva2VuLmFwcFRva2VuICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICBUaHJlYWQuc2xlZXAobmV4dEV2ZW50VGltZSAtIG5vdyk7Ci0gICAgICAgICAgICAgICAgfSBjYXRjaCAoSW50ZXJydXB0ZWRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICAvLyBOb3RpZnkgdGhlIGFjdGl2aXR5IG1hbmFnZXIgYWJvdXQgdGhlIHRpbWVvdXQgYW5kIGxldCBpdCBkZWNpZGUgd2hldGhlcgorICAgICAgICAgICAgICAgICAgICAvLyB0byBhYm9ydCBkaXNwYXRjaGluZyBvciBrZWVwIHdhaXRpbmcuCisgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gYWJvcnQgPSB0b2tlbi5hcHBUb2tlbi5rZXlEaXNwYXRjaGluZ1RpbWVkT3V0KCk7CisgICAgICAgICAgICAgICAgICAgIGlmICghIGFib3J0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgYWN0aXZpdHkgbWFuYWdlciBkZWNsaW5lZCB0byBhYm9ydCBkaXNwYXRjaGluZy4KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdhaXQgYSBiaXQgbG9uZ2VyIGFuZCB0aW1lb3V0IGFnYWluIGxhdGVyLgorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuLmlucHV0RGlzcGF0Y2hpbmdUaW1lb3V0TmFub3M7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZXgpIHsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbUxhc3RUb3VjaEV2ZW50VGltZSA9IG5leHRFdmVudFRpbWU7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG1MYXN0VG91Y2hFdmVudFRpbWUgPSBub3c7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gLTI7IC8vIGFib3J0IGRpc3BhdGNoaW5nCisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHByaXZhdGUgV2luZG93U3RhdGUgZ2V0V2luZG93U3RhdGVGb3JJbnB1dENoYW5uZWwoSW5wdXRDaGFubmVsIGlucHV0Q2hhbm5lbCkgeworICAgICAgICAgICAgc3luY2hyb25pemVkIChtV2luZG93TWFwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGdldFdpbmRvd1N0YXRlRm9ySW5wdXRDaGFubmVsTG9ja2VkKGlucHV0Q2hhbm5lbCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLQotICAgICAgICBpZiAoTUVBU1VSRV9MQVRFTkNZKSB7Ci0gICAgICAgICAgICBsdC5zYW1wbGUoIjUgaW4gZGlzcGF0Y2hQb2ludGVyICAgICAiLCBTeXN0ZW0ubmFub1RpbWUoKSAtIGV2ZW50VGltZU5hbm8pOwotICAgICAgICB9Ci0KLSAgICAgICAgc3luY2hyb25pemVkKG1XaW5kb3dNYXApIHsKLSAgICAgICAgICAgIGlmICghdGFyZ2V0LmlzVmlzaWJsZUx3KCkpIHsKLSAgICAgICAgICAgICAgICAvLyBEdXJpbmcgdGhpcyBtb3Rpb24gZGlzcGF0Y2gsIHRoZSB0YXJnZXQgd2luZG93IGhhcyBiZWNvbWUKLSAgICAgICAgICAgICAgICAvLyBpbnZpc2libGUuCi0gICAgICAgICAgICAgICAgZGlzcGF0Y2hQb2ludGVyRWxzZXdoZXJlTG9ja2VkKG51bGwsIG51bGwsIGV2LCBldi5nZXRFdmVudFRpbWUoKSwgZmFsc2UpOwotICAgICAgICAgICAgICAgIGlmIChxZXYgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICBtUXVldWUucmVjeWNsZUV2ZW50KHFldik7CisgICAgICAgIAorICAgICAgICBwcml2YXRlIFdpbmRvd1N0YXRlIGdldFdpbmRvd1N0YXRlRm9ySW5wdXRDaGFubmVsTG9ja2VkKElucHV0Q2hhbm5lbCBpbnB1dENoYW5uZWwpIHsKKyAgICAgICAgICAgIGludCB3aW5kb3dDb3VudCA9IG1XaW5kb3dzLnNpemUoKTsKKyAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgd2luZG93Q291bnQ7IGkrKykgeworICAgICAgICAgICAgICAgIFdpbmRvd1N0YXRlIHdpbmRvd1N0YXRlID0gKFdpbmRvd1N0YXRlKSBtV2luZG93cy5nZXQoaSk7CisgICAgICAgICAgICAgICAgaWYgKHdpbmRvd1N0YXRlLm1JbnB1dENoYW5uZWwgPT0gaW5wdXRDaGFubmVsKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB3aW5kb3dTdGF0ZTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZXYucmVjeWNsZSgpOwotICAgICAgICAgICAgICAgIHJldHVybiBJTkpFQ1RfU1VDQ0VFREVEOwogICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAocWV2ICE9IG51bGwgJiYgYWN0aW9uID09IE1vdGlvbkV2ZW50LkFDVElPTl9NT1ZFKSB7Ci0gICAgICAgICAgICAgICAgbUtleVdhaXRlci5iaW5kVGFyZ2V0V2luZG93TG9ja2VkKHRhcmdldCwKLSAgICAgICAgICAgICAgICAgICAgICAgIEtleVdhaXRlci5SRVRVUk5fUEVORElOR19QT0lOVEVSLCBxZXYpOwotICAgICAgICAgICAgICAgIGV2ID0gbnVsbDsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGFjdGlvbiA9PSBNb3Rpb25FdmVudC5BQ1RJT05fRE9XTikgewotICAgICAgICAgICAgICAgICAgICBXaW5kb3dTdGF0ZSBvdXQgPSBtS2V5V2FpdGVyLm1PdXRzaWRlVG91Y2hUYXJnZXRzOwotICAgICAgICAgICAgICAgICAgICBpZiAob3V0ICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIE1vdGlvbkV2ZW50IG9ldiA9IE1vdGlvbkV2ZW50Lm9idGFpbihldik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvZXYuc2V0QWN0aW9uKE1vdGlvbkV2ZW50LkFDVElPTl9PVVRTSURFKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5hbCBSZWN0IGZyYW1lID0gb3V0Lm1GcmFtZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZXYub2Zmc2V0TG9jYXRpb24oLShmbG9hdClmcmFtZS5sZWZ0LCAtKGZsb2F0KWZyYW1lLnRvcCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0Lm1DbGllbnQuZGlzcGF0Y2hQb2ludGVyKG9ldiwgZXZlbnRUaW1lLCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbG9nLmkoVEFHLCAiV0lORE9XIERJRUQgZHVyaW5nIG91dHNpZGUgbW90aW9uIGRpc3BhdGNoOiAiICsgb3V0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb2V2Lm9mZnNldExvY2F0aW9uKChmbG9hdClmcmFtZS5sZWZ0LCAoZmxvYXQpZnJhbWUudG9wKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXQgPSBvdXQubU5leHRPdXRzaWRlVG91Y2g7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChvdXQgIT0gbnVsbCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtS2V5V2FpdGVyLm1PdXRzaWRlVG91Y2hUYXJnZXRzID0gbnVsbDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8qIFVwZGF0ZXMgdGhlIGNhY2hlZCB3aW5kb3cgaW5mb3JtYXRpb24gcHJvdmlkZWQgdG8gdGhlIGlucHV0IGRpc3BhdGNoZXIuICovCisgICAgICAgIHB1YmxpYyB2b2lkIHVwZGF0ZUlucHV0V2luZG93c0x3KCkgeworICAgICAgICAgICAgLy8gUG9wdWxhdGUgdGhlIGlucHV0IHdpbmRvdyBsaXN0IHdpdGggaW5mb3JtYXRpb24gYWJvdXQgYWxsIG9mIHRoZSB3aW5kb3dzIHRoYXQKKyAgICAgICAgICAgIC8vIGNvdWxkIHBvdGVudGlhbGx5IHJlY2VpdmUgaW5wdXQuCisgICAgICAgICAgICAvLyBBcyBhbiBvcHRpbWl6YXRpb24sIHdlIGNvdWxkIHRyeSB0byBwcnVuZSB0aGUgbGlzdCBvZiB3aW5kb3dzIGJ1dCB0aGlzIHR1cm5zCisgICAgICAgICAgICAvLyBvdXQgdG8gYmUgZGlmZmljdWx0IGJlY2F1c2Ugb25seSB0aGUgbmF0aXZlIGNvZGUga25vd3MgZm9yIHN1cmUgd2hpY2ggd2luZG93CisgICAgICAgICAgICAvLyBjdXJyZW50bHkgaGFzIHRvdWNoIGZvY3VzLgorICAgICAgICAgICAgZmluYWwgQXJyYXlMaXN0IHdpbmRvd3MgPSBtV2luZG93czsKKyAgICAgICAgICAgIGZpbmFsIGludCBOID0gd2luZG93cy5zaXplKCk7CisgICAgICAgICAgICBmb3IgKGludCBpID0gTiAtIDE7IGkgPj0gMDsgaS0tKSB7CisgICAgICAgICAgICAgICAgZmluYWwgV2luZG93U3RhdGUgY2hpbGQgPSAoV2luZG93U3RhdGUpIHdpbmRvd3MuZ2V0KGkpOworICAgICAgICAgICAgICAgIGlmIChjaGlsZC5tSW5wdXRDaGFubmVsID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gU2tpcCB0aGlzIHdpbmRvdyBiZWNhdXNlIGl0IGNhbm5vdCBwb3NzaWJseSByZWNlaXZlIGlucHV0LgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgZmluYWwgaW50IGZsYWdzID0gY2hpbGQubUF0dHJzLmZsYWdzOworICAgICAgICAgICAgICAgIGZpbmFsIGludCB0eXBlID0gY2hpbGQubUF0dHJzLnR5cGU7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBoYXNGb2N1cyA9IChjaGlsZCA9PSBtSW5wdXRGb2N1cyk7CisgICAgICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBpc1Zpc2libGUgPSBjaGlsZC5pc1Zpc2libGVMdygpOworICAgICAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gaGFzV2FsbHBhcGVyID0gKGNoaWxkID09IG1XYWxscGFwZXJUYXJnZXQpCisgICAgICAgICAgICAgICAgICAgICAgICAmJiAodHlwZSAhPSBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5UWVBFX0tFWUdVQVJEKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBBZGQgYSB3aW5kb3cgdG8gb3VyIGxpc3Qgb2YgaW5wdXQgd2luZG93cy4KKyAgICAgICAgICAgICAgICBmaW5hbCBJbnB1dFdpbmRvdyBpbnB1dFdpbmRvdyA9IG1UZW1wSW5wdXRXaW5kb3dzLmFkZCgpOworICAgICAgICAgICAgICAgIGlucHV0V2luZG93LmlucHV0Q2hhbm5lbCA9IGNoaWxkLm1JbnB1dENoYW5uZWw7CisgICAgICAgICAgICAgICAgaW5wdXRXaW5kb3cubGF5b3V0UGFyYW1zRmxhZ3MgPSBmbGFnczsKKyAgICAgICAgICAgICAgICBpbnB1dFdpbmRvdy5sYXlvdXRQYXJhbXNUeXBlID0gdHlwZTsKKyAgICAgICAgICAgICAgICBpbnB1dFdpbmRvdy5kaXNwYXRjaGluZ1RpbWVvdXROYW5vcyA9IGNoaWxkLmdldElucHV0RGlzcGF0Y2hpbmdUaW1lb3V0TmFub3MoKTsKKyAgICAgICAgICAgICAgICBpbnB1dFdpbmRvdy52aXNpYmxlID0gaXNWaXNpYmxlOworICAgICAgICAgICAgICAgIGlucHV0V2luZG93Lmhhc0ZvY3VzID0gaGFzRm9jdXM7CisgICAgICAgICAgICAgICAgaW5wdXRXaW5kb3cuaGFzV2FsbHBhcGVyID0gaGFzV2FsbHBhcGVyOworICAgICAgICAgICAgICAgIGlucHV0V2luZG93LnBhdXNlZCA9IGNoaWxkLm1BcHBUb2tlbiAhPSBudWxsID8gY2hpbGQubUFwcFRva2VuLnBhdXNlZCA6IGZhbHNlOworICAgICAgICAgICAgICAgIGlucHV0V2luZG93Lm93bmVyUGlkID0gY2hpbGQubVNlc3Npb24ubVBpZDsKKyAgICAgICAgICAgICAgICBpbnB1dFdpbmRvdy5vd25lclVpZCA9IGNoaWxkLm1TZXNzaW9uLm1VaWQ7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgZmluYWwgUmVjdCBmcmFtZSA9IGNoaWxkLm1GcmFtZTsKKyAgICAgICAgICAgICAgICBpbnB1dFdpbmRvdy5mcmFtZUxlZnQgPSBmcmFtZS5sZWZ0OworICAgICAgICAgICAgICAgIGlucHV0V2luZG93LmZyYW1lVG9wID0gZnJhbWUudG9wOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHN3aXRjaCAoY2hpbGQubVRvdWNoYWJsZUluc2V0cykgeworICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICBjYXNlIFZpZXdUcmVlT2JzZXJ2ZXIuSW50ZXJuYWxJbnNldHNJbmZvLlRPVUNIQUJMRV9JTlNFVFNfRlJBTUU6CisgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFdpbmRvdy50b3VjaGFibGVBcmVhTGVmdCA9IGZyYW1lLmxlZnQ7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFdpbmRvdy50b3VjaGFibGVBcmVhVG9wID0gZnJhbWUudG9wOworICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRXaW5kb3cudG91Y2hhYmxlQXJlYVJpZ2h0ID0gZnJhbWUucmlnaHQ7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFdpbmRvdy50b3VjaGFibGVBcmVhQm90dG9tID0gZnJhbWUuYm90dG9tOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBWaWV3VHJlZU9ic2VydmVyLkludGVybmFsSW5zZXRzSW5mby5UT1VDSEFCTEVfSU5TRVRTX0NPTlRFTlQ6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlY3QgaW5zZXQgPSBjaGlsZC5tR2l2ZW5Db250ZW50SW5zZXRzOworICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRXaW5kb3cudG91Y2hhYmxlQXJlYUxlZnQgPSBmcmFtZS5sZWZ0ICsgaW5zZXQubGVmdDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0V2luZG93LnRvdWNoYWJsZUFyZWFUb3AgPSBmcmFtZS50b3AgKyBpbnNldC50b3A7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFdpbmRvdy50b3VjaGFibGVBcmVhUmlnaHQgPSBmcmFtZS5yaWdodCAtIGluc2V0LnJpZ2h0OworICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRXaW5kb3cudG91Y2hhYmxlQXJlYUJvdHRvbSA9IGZyYW1lLmJvdHRvbSAtIGluc2V0LmJvdHRvbTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgY2FzZSBWaWV3VHJlZU9ic2VydmVyLkludGVybmFsSW5zZXRzSW5mby5UT1VDSEFCTEVfSU5TRVRTX1ZJU0lCTEU6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFJlY3QgaW5zZXQgPSBjaGlsZC5tR2l2ZW5WaXNpYmxlSW5zZXRzOworICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRXaW5kb3cudG91Y2hhYmxlQXJlYUxlZnQgPSBmcmFtZS5sZWZ0ICsgaW5zZXQubGVmdDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0V2luZG93LnRvdWNoYWJsZUFyZWFUb3AgPSBmcmFtZS50b3AgKyBpbnNldC50b3A7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnB1dFdpbmRvdy50b3VjaGFibGVBcmVhUmlnaHQgPSBmcmFtZS5yaWdodCAtIGluc2V0LnJpZ2h0OworICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXRXaW5kb3cudG91Y2hhYmxlQXJlYUJvdHRvbSA9IGZyYW1lLmJvdHRvbSAtIGluc2V0LmJvdHRvbTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgZGlzcGF0Y2hQb2ludGVyRWxzZXdoZXJlTG9ja2VkKHRhcmdldCwgbnVsbCwgZXYsIGV2LmdldEV2ZW50VGltZSgpLCBmYWxzZSk7Ci0KLSAgICAgICAgICAgICAgICBmaW5hbCBSZWN0IGZyYW1lID0gdGFyZ2V0Lm1GcmFtZTsKLSAgICAgICAgICAgICAgICBldi5vZmZzZXRMb2NhdGlvbigtKGZsb2F0KWZyYW1lLmxlZnQsIC0oZmxvYXQpZnJhbWUudG9wKTsKLSAgICAgICAgICAgICAgICBtS2V5V2FpdGVyLmJpbmRUYXJnZXRXaW5kb3dMb2NrZWQodGFyZ2V0KTsKKyAgICAgICAgICAgIC8vIFNlbmQgd2luZG93cyB0byBuYXRpdmUgY29kZS4KKyAgICAgICAgICAgIG1JbnB1dE1hbmFnZXIuc2V0SW5wdXRXaW5kb3dzKG1UZW1wSW5wdXRXaW5kb3dzLnRvTnVsbFRlcm1pbmF0ZWRBcnJheSgpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gQ2xlYXIgdGhlIGxpc3QgaW4gcHJlcGFyYXRpb24gZm9yIHRoZSBuZXh0IHJvdW5kLgorICAgICAgICAgICAgLy8gQWxzbyBhdm9pZHMga2VlcGluZyBJbnB1dENoYW5uZWwgb2JqZWN0cyByZWZlcmVuY2VkIHVubmVjZXNzYXJpbHkuCisgICAgICAgICAgICBtVGVtcElucHV0V2luZG93cy5jbGVhcigpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvKiBQcm92aWRlcyBmZWVkYmFjayBmb3IgYSB2aXJ0dWFsIGtleSBkb3duLiAqLworICAgICAgICBwdWJsaWMgdm9pZCB2aXJ0dWFsS2V5RG93bkZlZWRiYWNrKCkgeworICAgICAgICAgICAgc3luY2hyb25pemVkIChtV2luZG93TWFwKSB7CisgICAgICAgICAgICAgICAgbVBvbGljeS5wZXJmb3JtSGFwdGljRmVlZGJhY2tMdyhudWxsLCBIYXB0aWNGZWVkYmFja0NvbnN0YW50cy5WSVJUVUFMX0tFWSwgZmFsc2UpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0KLSAgICAgICAgLy8gZmluYWxseSBvZmZzZXQgdGhlIGV2ZW50IHRvIHRoZSB0YXJnZXQncyBjb29yZGluYXRlIHN5c3RlbSBhbmQKLSAgICAgICAgLy8gZGlzcGF0Y2ggdGhlIGV2ZW50LgotICAgICAgICB0cnkgewotICAgICAgICAgICAgaWYgKERFQlVHX0lOUFVUIHx8IERFQlVHX0ZPQ1VTIHx8IFdpbmRvd01hbmFnZXJQb2xpY3kuV0FUQ0hfUE9JTlRFUikgewotICAgICAgICAgICAgICAgIFNsb2cudihUQUcsICJEZWxpdmVyaW5nIHBvaW50ZXIgIiArIHFldiArICIgdG8gIiArIHRhcmdldCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChNRUFTVVJFX0xBVEVOQ1kpIHsKLSAgICAgICAgICAgICAgICBsdC5zYW1wbGUoIjYgYmVmb3JlIHN2ci0+Y2xpZW50IGlwYyAiLCBTeXN0ZW0ubmFub1RpbWUoKSAtIGV2ZW50VGltZU5hbm8pOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB0YXJnZXQubUNsaWVudC5kaXNwYXRjaFBvaW50ZXIoZXYsIGV2ZW50VGltZSwgdHJ1ZSk7Ci0KLSAgICAgICAgICAgIGlmIChNRUFTVVJFX0xBVEVOQ1kpIHsKLSAgICAgICAgICAgICAgICBsdC5zYW1wbGUoIjcgYWZ0ZXIgIHN2ci0+Y2xpZW50IGlwYyAiLCBTeXN0ZW0ubmFub1RpbWUoKSAtIGV2ZW50VGltZU5hbm8pOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIElOSkVDVF9TVUNDRUVERUQ7Ci0gICAgICAgIH0gY2F0Y2ggKGFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgIFNsb2cuaShUQUcsICJXSU5ET1cgRElFRCBkdXJpbmcgbW90aW9uIGRpc3BhdGNoOiAiICsgdGFyZ2V0KTsKLSAgICAgICAgICAgIG1LZXlXYWl0ZXIubU1vdGlvblRhcmdldCA9IG51bGw7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIHJlbW92ZVdpbmRvdyh0YXJnZXQubVNlc3Npb24sIHRhcmdldC5tQ2xpZW50KTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKGphdmEudXRpbC5Ob1N1Y2hFbGVtZW50RXhjZXB0aW9uIGV4KSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhpcyB3aWxsIGhhcHBlbiBpZiB0aGUgd2luZG93IGhhcyBhbHJlYWR5IGJlZW4KLSAgICAgICAgICAgICAgICAvLyByZW1vdmVkLgotICAgICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLyogTm90aWZpZXMgdGhhdCBhbiBhcHAgc3dpdGNoIGtleSAoQkFDSyAvIEhPTUUpIGhhcyBqdXN0IGJlZW4gcHJlc3NlZC4KKyAgICAgICAgICogVGhpcyBlc3NlbnRpYWxseSBzdGFydHMgYSAuNSBzZWNvbmQgdGltZW91dCBmb3IgdGhlIGFwcGxpY2F0aW9uIHRvIHByb2Nlc3MKKyAgICAgICAgICogc3Vic2VxdWVudCBpbnB1dCBldmVudHMgd2hpbGUgd2FpdGluZyBmb3IgdGhlIGFwcCBzd2l0Y2ggdG8gb2NjdXIuICBJZiBpdCB0YWtlcyBsb25nZXIKKyAgICAgICAgICogdGhhbiB0aGlzLCB0aGUgcGVuZGluZyBldmVudHMgd2lsbCBiZSBkcm9wcGVkLgorICAgICAgICAgKi8KKyAgICAgICAgcHVibGljIHZvaWQgbm90aWZ5QXBwU3dpdGNoQ29taW5nKCkgeworICAgICAgICAgICAgLy8gVE9ETyBOb3QgaW1wbGVtZW50ZWQgeWV0LiAgU2hvdWxkIGdvIGluIHRoZSBuYXRpdmUgc2lkZS4KICAgICAgICAgfQotICAgICAgICByZXR1cm4gSU5KRUNUX0ZBSUxFRDsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBAcmV0dXJuIFJldHVybnMgdHJ1ZSBpZiBldmVudCB3YXMgZGlzcGF0Y2hlZCwgZmFsc2UgaWYgaXQgd2FzIGRyb3BwZWQgZm9yIGFueSByZWFzb24KLSAgICAgKi8KLSAgICBwcml2YXRlIGludCBkaXNwYXRjaFRyYWNrYmFsbChRdWV1ZWRFdmVudCBxZXYsIE1vdGlvbkV2ZW50IGV2LCBpbnQgcGlkLCBpbnQgdWlkKSB7Ci0gICAgICAgIGlmIChERUJVR19JTlBVVCkgU2xvZy52KAotICAgICAgICAgICAgICAgIFRBRywgImRpc3BhdGNoVHJhY2tiYWxsIFsiICsgZXYuZ2V0QWN0aW9uKCkgKyJdIDwiICsgZXYuZ2V0WCgpICsgIiwgIiArIGV2LmdldFkoKSArICI+Iik7Ci0KLSAgICAgICAgT2JqZWN0IGZvY3VzT2JqID0gbUtleVdhaXRlci53YWl0Rm9yTmV4dEV2ZW50VGFyZ2V0KG51bGwsIHFldiwKLSAgICAgICAgICAgICAgICBldiwgZmFsc2UsIGZhbHNlLCBwaWQsIHVpZCk7Ci0gICAgICAgIGlmIChmb2N1c09iaiA9PSBudWxsKSB7Ci0gICAgICAgICAgICBTbG9nLncoVEFHLCAiTm8gZm9jdXMgd2luZG93LCBkcm9wcGluZyB0cmFja2JhbGw6ICIgKyBldik7Ci0gICAgICAgICAgICBpZiAocWV2ICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBtUXVldWUucmVjeWNsZUV2ZW50KHFldik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBldi5yZWN5Y2xlKCk7Ci0gICAgICAgICAgICByZXR1cm4gSU5KRUNUX0ZBSUxFRDsKKyAgICAgICAgCisgICAgICAgIC8qIE5vdGlmaWVzIHRoYXQgdGhlIGxpZCBzd2l0Y2ggY2hhbmdlZCBzdGF0ZS4gKi8KKyAgICAgICAgcHVibGljIHZvaWQgbm90aWZ5TGlkU3dpdGNoQ2hhbmdlZChsb25nIHdoZW5OYW5vcywgYm9vbGVhbiBsaWRPcGVuKSB7CisgICAgICAgICAgICBtUG9saWN5Lm5vdGlmeUxpZFN3aXRjaENoYW5nZWQod2hlbk5hbm9zLCBsaWRPcGVuKTsKICAgICAgICAgfQotICAgICAgICBpZiAoZm9jdXNPYmogPT0gbUtleVdhaXRlci5DT05TVU1FRF9FVkVOVF9UT0tFTikgewotICAgICAgICAgICAgaWYgKHFldiAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgbVF1ZXVlLnJlY3ljbGVFdmVudChxZXYpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZXYucmVjeWNsZSgpOwotICAgICAgICAgICAgcmV0dXJuIElOSkVDVF9TVUNDRUVERUQ7CisgICAgICAgIAorICAgICAgICAvKiBQcm92aWRlcyBhbiBvcHBvcnR1bml0eSBmb3IgdGhlIHdpbmRvdyBtYW5hZ2VyIHBvbGljeSB0byBpbnRlcmNlcHQgZWFybHkga2V5CisgICAgICAgICAqIHByb2Nlc3NpbmcgYXMgc29vbiBhcyB0aGUga2V5IGhhcyBiZWVuIHJlYWQgZnJvbSB0aGUgZGV2aWNlLiAqLworICAgICAgICBwdWJsaWMgaW50IGludGVyY2VwdEtleUJlZm9yZVF1ZXVlaW5nKGxvbmcgd2hlbk5hbm9zLCBpbnQga2V5Q29kZSwgYm9vbGVhbiBkb3duLAorICAgICAgICAgICAgICAgIGludCBwb2xpY3lGbGFncywgYm9vbGVhbiBpc1NjcmVlbk9uKSB7CisgICAgICAgICAgICByZXR1cm4gbVBvbGljeS5pbnRlcmNlcHRLZXlCZWZvcmVRdWV1ZWluZyh3aGVuTmFub3MsCisgICAgICAgICAgICAgICAgICAgIGtleUNvZGUsIGRvd24sIHBvbGljeUZsYWdzLCBpc1NjcmVlbk9uKTsKICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLyogUHJvdmlkZXMgYW4gb3Bwb3J0dW5pdHkgZm9yIHRoZSB3aW5kb3cgbWFuYWdlciBwb2xpY3kgdG8gcHJvY2VzcyBhIGtleSBiZWZvcmUKKyAgICAgICAgICogb3JkaW5hcnkgZGlzcGF0Y2guICovCisgICAgICAgIHB1YmxpYyBib29sZWFuIGludGVyY2VwdEtleUJlZm9yZURpc3BhdGNoaW5nKElucHV0Q2hhbm5lbCBmb2N1cywKKyAgICAgICAgICAgICAgICBpbnQgYWN0aW9uLCBpbnQgZmxhZ3MsIGludCBrZXlDb2RlLCBpbnQgbWV0YVN0YXRlLCBpbnQgcmVwZWF0Q291bnQsCisgICAgICAgICAgICAgICAgaW50IHBvbGljeUZsYWdzKSB7CisgICAgICAgICAgICBXaW5kb3dTdGF0ZSB3aW5kb3dTdGF0ZSA9IGdldFdpbmRvd1N0YXRlRm9ySW5wdXRDaGFubmVsKGZvY3VzKTsKKyAgICAgICAgICAgIHJldHVybiBtUG9saWN5LmludGVyY2VwdEtleUJlZm9yZURpc3BhdGNoaW5nKHdpbmRvd1N0YXRlLCBhY3Rpb24sIGZsYWdzLAorICAgICAgICAgICAgICAgICAgICBrZXlDb2RlLCBtZXRhU3RhdGUsIHJlcGVhdENvdW50LCBwb2xpY3lGbGFncyk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8qIENhbGxlZCB3aGVuIHRoZSBjdXJyZW50IGlucHV0IGZvY3VzIGNoYW5nZXMuCisgICAgICAgICAqIExheWVyIGFzc2lnbm1lbnQgaXMgYXNzdW1lZCB0byBiZSBjb21wbGV0ZSBieSB0aGUgdGltZSB0aGlzIGlzIGNhbGxlZC4KKyAgICAgICAgICovCisgICAgICAgIHB1YmxpYyB2b2lkIHNldElucHV0Rm9jdXNMdyhXaW5kb3dTdGF0ZSBuZXdXaW5kb3cpIHsKKyAgICAgICAgICAgIGlmIChERUJVR19JTlBVVCkgeworICAgICAgICAgICAgICAgIFNsb2cuZChUQUcsICJJbnB1dCBmb2N1cyBoYXMgY2hhbmdlZCB0byAiICsgbmV3V2luZG93KTsKKyAgICAgICAgICAgIH0KIAotICAgICAgICBXaW5kb3dTdGF0ZSBmb2N1cyA9IChXaW5kb3dTdGF0ZSlmb2N1c09iajsKLQotICAgICAgICBpZiAodWlkICE9IDAgJiYgdWlkICE9IGZvY3VzLm1TZXNzaW9uLm1VaWQpIHsKLSAgICAgICAgICAgIGlmIChtQ29udGV4dC5jaGVja1Blcm1pc3Npb24oCi0gICAgICAgICAgICAgICAgICAgIGFuZHJvaWQuTWFuaWZlc3QucGVybWlzc2lvbi5JTkpFQ1RfRVZFTlRTLCBwaWQsIHVpZCkKLSAgICAgICAgICAgICAgICAgICAgIT0gUGFja2FnZU1hbmFnZXIuUEVSTUlTU0lPTl9HUkFOVEVEKSB7Ci0gICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIlBlcm1pc3Npb24gZGVuaWVkOiBpbmplY3Rpbmcga2V5IGV2ZW50IGZyb20gcGlkICIKLSAgICAgICAgICAgICAgICAgICAgICAgICsgcGlkICsgIiB1aWQgIiArIHVpZCArICIgdG8gd2luZG93ICIgKyBmb2N1cwotICAgICAgICAgICAgICAgICAgICAgICAgKyAiIG93bmVkIGJ5IHVpZCAiICsgZm9jdXMubVNlc3Npb24ubVVpZCk7Ci0gICAgICAgICAgICAgICAgaWYgKHFldiAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1RdWV1ZS5yZWN5Y2xlRXZlbnQocWV2KTsKKyAgICAgICAgICAgIGlmIChuZXdXaW5kb3cgIT0gbUlucHV0Rm9jdXMpIHsKKyAgICAgICAgICAgICAgICBpZiAobmV3V2luZG93ICE9IG51bGwgJiYgbmV3V2luZG93LmNhblJlY2VpdmVLZXlzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIG5ldyBpbnB1dCBmb2N1cyBpcyBhbiBlcnJvciB3aW5kb3cgb3IgYXBwZWFycyBhYm92ZSB0aGUgY3VycmVudAorICAgICAgICAgICAgICAgICAgICAvLyBpbnB1dCBmb2N1cywgcHJlZW1wdCBhbnkgcGVuZGluZyBzeW5jaHJvbm91cyBkaXNwYXRjaCBzbyB0aGF0IHdlIGNhbgorICAgICAgICAgICAgICAgICAgICAvLyBzdGFydCBkZWxpdmVyaW5nIGV2ZW50cyB0byB0aGUgbmV3IGlucHV0IGZvY3VzIGFzIHNvb24gYXMgcG9zc2libGUuCisgICAgICAgICAgICAgICAgICAgIGlmICgobmV3V2luZG93Lm1BdHRycy5mbGFncyAmIEZMQUdfU1lTVEVNX0VSUk9SKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfSU5QVVQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbG9nLnYoVEFHLCAiTmV3IFNZU1RFTV9FUlJPUiB3aW5kb3c7IHJlc2V0dGluZyBzdGF0ZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgcHJlZW1wdElucHV0RGlzcGF0Y2hMdygpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1JbnB1dEZvY3VzICE9IG51bGwgJiYgbmV3V2luZG93Lm1MYXllciA+IG1JbnB1dEZvY3VzLm1MYXllcikgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX0lOUFVUKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xvZy52KFRBRywgIlRyYW5zZmVycmluZyBmb2N1cyB0byBuZXcgd2luZG93IGF0IGhpZ2hlciBsYXllcjogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAib2xkIHdpbiBsYXllcj0iICsgbUlucHV0Rm9jdXMubUxheWVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIsIG5ldyB3aW4gbGF5ZXI9IiArIG5ld1dpbmRvdy5tTGF5ZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgcHJlZW1wdElucHV0RGlzcGF0Y2hMdygpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAvLyBEaXNwbGF5aW5nIGEgd2luZG93IGltcGxpY2l0bHkgY2F1c2VzIGRpc3BhdGNoaW5nIHRvIGJlIHVucGF1c2VkLgorICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRvIHByb3RlY3QgYWdhaW5zdCBidWdzIGlmIHNvbWVvbmUgcGF1c2VzIGRpc3BhdGNoaW5nIGJ1dAorICAgICAgICAgICAgICAgICAgICAvLyBmb3JnZXRzIHRvIHJlc3VtZS4KKyAgICAgICAgICAgICAgICAgICAgbmV3V2luZG93Lm1Ub2tlbi5wYXVzZWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZXYucmVjeWNsZSgpOwotICAgICAgICAgICAgICAgIHJldHVybiBJTkpFQ1RfTk9fUEVSTUlTU0lPTjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIG1JbnB1dEZvY3VzID0gbmV3V2luZG93OworICAgICAgICAgICAgICAgIHVwZGF0ZUlucHV0V2luZG93c0x3KCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLQotICAgICAgICBmaW5hbCBsb25nIGV2ZW50VGltZSA9IGV2LmdldEV2ZW50VGltZSgpOwotCi0gICAgICAgIHN5bmNocm9uaXplZChtV2luZG93TWFwKSB7Ci0gICAgICAgICAgICBpZiAocWV2ICE9IG51bGwgJiYgZXYuZ2V0QWN0aW9uKCkgPT0gTW90aW9uRXZlbnQuQUNUSU9OX01PVkUpIHsKLSAgICAgICAgICAgICAgICBtS2V5V2FpdGVyLmJpbmRUYXJnZXRXaW5kb3dMb2NrZWQoZm9jdXMsCi0gICAgICAgICAgICAgICAgICAgICAgICBLZXlXYWl0ZXIuUkVUVVJOX1BFTkRJTkdfVFJBQ0tCQUxMLCBxZXYpOwotICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IGRlbGl2ZXIgbW92ZW1lbnQgZXZlbnRzIHRvIHRoZSBjbGllbnQsIHdlIGhvbGQKLSAgICAgICAgICAgICAgICAvLyB0aGVtIGFuZCB3YWl0IGZvciB0aGVtIHRvIGNhbGwgYmFjay4KLSAgICAgICAgICAgICAgICBldiA9IG51bGw7CisgICAgICAgIAorICAgICAgICBwdWJsaWMgdm9pZCB3aW5kb3dJc0JlY29taW5nSW52aXNpYmxlTHcoV2luZG93U3RhdGUgd2luZG93KSB7CisgICAgICAgICAgICAvLyBUaGUgd2luZG93IGlzIGJlY29taW5nIGludmlzaWJsZS4gIFByZWVtcHQgaW5wdXQgZGlzcGF0Y2ggaW4gcHJvZ3Jlc3MKKyAgICAgICAgICAgIC8vIHNvIHRoYXQgdGhlIG5leHQgd2luZG93IGJlbG93IGNhbiByZWNlaXZlIGZvY3VzLgorICAgICAgICAgICAgaWYgKHdpbmRvdyA9PSBtSW5wdXRGb2N1cykgeworICAgICAgICAgICAgICAgIG1JbnB1dEZvY3VzID0gbnVsbDsKKyAgICAgICAgICAgICAgICBwcmVlbXB0SW5wdXREaXNwYXRjaEx3KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHVwZGF0ZUlucHV0V2luZG93c0x3KCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8qIFRlbGxzIHRoZSBkaXNwYXRjaGVyIHRvIHN0b3Agd2FpdGluZyBmb3IgaXRzIGN1cnJlbnQgc3luY2hyb25vdXMgZXZlbnQgdGFyZ2V0cy4KKyAgICAgICAgICogRXNzZW50aWFsbHksIGp1c3QgbWFrZXMgdGhvc2UgZGlzcGF0Y2hlcyBhc3luY2hyb25vdXMgc28gYSBuZXcgZGlzcGF0Y2ggY3ljbGUKKyAgICAgICAgICogY2FuIGJlZ2luLgorICAgICAgICAgKi8KKyAgICAgICAgcHJpdmF0ZSB2b2lkIHByZWVtcHRJbnB1dERpc3BhdGNoTHcoKSB7CisgICAgICAgICAgICBtSW5wdXRNYW5hZ2VyLnByZWVtcHRJbnB1dERpc3BhdGNoKCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHB1YmxpYyB2b2lkIHNldEZvY3VzZWRBcHBMdyhBcHBXaW5kb3dUb2tlbiBuZXdBcHApIHsKKyAgICAgICAgICAgIC8vIEZvY3VzZWQgYXBwIGhhcyBjaGFuZ2VkLgorICAgICAgICAgICAgaWYgKG5ld0FwcCA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgbUlucHV0TWFuYWdlci5zZXRGb2N1c2VkQXBwbGljYXRpb24obnVsbCk7CiAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG1LZXlXYWl0ZXIuYmluZFRhcmdldFdpbmRvd0xvY2tlZChmb2N1cyk7CisgICAgICAgICAgICAgICAgbVRlbXBJbnB1dEFwcGxpY2F0aW9uLm5hbWUgPSBuZXdBcHAudG9TdHJpbmcoKTsKKyAgICAgICAgICAgICAgICBtVGVtcElucHV0QXBwbGljYXRpb24uZGlzcGF0Y2hpbmdUaW1lb3V0TmFub3MgPQorICAgICAgICAgICAgICAgICAgICAgICAgbmV3QXBwLmlucHV0RGlzcGF0Y2hpbmdUaW1lb3V0TmFub3M7CisgICAgICAgICAgICAgICAgbVRlbXBJbnB1dEFwcGxpY2F0aW9uLnRva2VuID0gbmV3QXBwOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIG1JbnB1dE1hbmFnZXIuc2V0Rm9jdXNlZEFwcGxpY2F0aW9uKG1UZW1wSW5wdXRBcHBsaWNhdGlvbik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLQotICAgICAgICB0cnkgewotICAgICAgICAgICAgZm9jdXMubUNsaWVudC5kaXNwYXRjaFRyYWNrYmFsbChldiwgZXZlbnRUaW1lLCB0cnVlKTsKLSAgICAgICAgICAgIHJldHVybiBJTkpFQ1RfU1VDQ0VFREVEOwotICAgICAgICB9IGNhdGNoIChhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICBTbG9nLmkoVEFHLCAiV0lORE9XIERJRUQgZHVyaW5nIGtleSBkaXNwYXRjaDogIiArIGZvY3VzKTsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgcmVtb3ZlV2luZG93KGZvY3VzLm1TZXNzaW9uLCBmb2N1cy5tQ2xpZW50KTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKGphdmEudXRpbC5Ob1N1Y2hFbGVtZW50RXhjZXB0aW9uIGV4KSB7Ci0gICAgICAgICAgICAgICAgLy8gVGhpcyB3aWxsIGhhcHBlbiBpZiB0aGUgd2luZG93IGhhcyBhbHJlYWR5IGJlZW4KLSAgICAgICAgICAgICAgICAvLyByZW1vdmVkLgorICAgICAgICAKKyAgICAgICAgcHVibGljIHZvaWQgd2luZG93SXNCZWluZ1JlbW92ZWRMdyhXaW5kb3dTdGF0ZSB3aW5kb3cpIHsKKyAgICAgICAgICAgIC8vIFdpbmRvdyBpcyBiZWluZyByZW1vdmVkLgorICAgICAgICAgICAgdXBkYXRlSW5wdXRXaW5kb3dzTHcoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcHVibGljIHZvaWQgcGF1c2VEaXNwYXRjaGluZ0x3KFdpbmRvd1Rva2VuIHdpbmRvdykgeworICAgICAgICAgICAgaWYgKCEgd2luZG93LnBhdXNlZCkgeworICAgICAgICAgICAgICAgIGlmIChERUJVR19JTlBVVCkgeworICAgICAgICAgICAgICAgICAgICBTbG9nLnYoVEFHLCAiUGF1c2luZyBXaW5kb3dUb2tlbiAiICsgd2luZG93KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgd2luZG93LnBhdXNlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgdXBkYXRlSW5wdXRXaW5kb3dzTHcoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBJTkpFQ1RfRkFJTEVEOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIEByZXR1cm4gUmV0dXJucyB0cnVlIGlmIGV2ZW50IHdhcyBkaXNwYXRjaGVkLCBmYWxzZSBpZiBpdCB3YXMgZHJvcHBlZCBmb3IgYW55IHJlYXNvbgotICAgICAqLwotICAgIHByaXZhdGUgaW50IGRpc3BhdGNoS2V5KEtleUV2ZW50IGV2ZW50LCBpbnQgcGlkLCBpbnQgdWlkKSB7Ci0gICAgICAgIGlmIChERUJVR19JTlBVVCkgU2xvZy52KFRBRywgIkRpc3BhdGNoIGtleTogIiArIGV2ZW50KTsKLQotICAgICAgICBPYmplY3QgZm9jdXNPYmogPSBtS2V5V2FpdGVyLndhaXRGb3JOZXh0RXZlbnRUYXJnZXQoZXZlbnQsIG51bGwsCi0gICAgICAgICAgICAgICAgbnVsbCwgZmFsc2UsIGZhbHNlLCBwaWQsIHVpZCk7Ci0gICAgICAgIGlmIChmb2N1c09iaiA9PSBudWxsKSB7Ci0gICAgICAgICAgICBTbG9nLncoVEFHLCAiTm8gZm9jdXMgd2luZG93LCBkcm9wcGluZzogIiArIGV2ZW50KTsKLSAgICAgICAgICAgIHJldHVybiBJTkpFQ1RfRkFJTEVEOwotICAgICAgICB9Ci0gICAgICAgIGlmIChmb2N1c09iaiA9PSBtS2V5V2FpdGVyLkNPTlNVTUVEX0VWRU5UX1RPS0VOKSB7Ci0gICAgICAgICAgICByZXR1cm4gSU5KRUNUX1NVQ0NFRURFRDsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIE9rYXkgd2UgaGF2ZSBmaW5pc2hlZCB3YWl0aW5nIGZvciB0aGUgbGFzdCBldmVudCB0byBiZSBwcm9jZXNzZWQuCi0gICAgICAgIC8vIEZpcnN0IG9mZiwgaWYgdGhpcyBpcyBhIHJlcGVhdCBldmVudCwgY2hlY2sgdG8gc2VlIGlmIHRoZXJlIGlzCi0gICAgICAgIC8vIGEgY29ycmVzcG9uZGluZyB1cCBldmVudCBpbiB0aGUgcXVldWUuICBJZiB0aGVyZSBpcywgd2Ugd2lsbAotICAgICAgICAvLyBqdXN0IGRyb3AgdGhlIHJlcGVhdCwgYmVjYXVzZSBpdCBtYWtlcyBubyBzZW5zZSB0byByZXBlYXQgYWZ0ZXIKLSAgICAgICAgLy8gdGhlIHVzZXIgaGFzIHJlbGVhc2VkIGEga2V5LiAgKFRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnQgZm9yCi0gICAgICAgIC8vIGxvbmcgcHJlc3Nlcy4pCi0gICAgICAgIGlmIChldmVudC5nZXRSZXBlYXRDb3VudCgpID4gMCAmJiBtUXVldWUuaGFzS2V5VXBFdmVudChldmVudCkpIHsKLSAgICAgICAgICAgIHJldHVybiBJTkpFQ1RfU1VDQ0VFREVEOwotICAgICAgICB9Ci0KLSAgICAgICAgV2luZG93U3RhdGUgZm9jdXMgPSAoV2luZG93U3RhdGUpZm9jdXNPYmo7Ci0KLSAgICAgICAgaWYgKERFQlVHX0lOUFVUKSBTbG9nLnYoCi0gICAgICAgICAgICBUQUcsICJEaXNwYXRjaGluZyB0byAiICsgZm9jdXMgKyAiOiAiICsgZXZlbnQpOwotCi0gICAgICAgIGlmICh1aWQgIT0gMCAmJiB1aWQgIT0gZm9jdXMubVNlc3Npb24ubVVpZCkgewotICAgICAgICAgICAgaWYgKG1Db250ZXh0LmNoZWNrUGVybWlzc2lvbigKLSAgICAgICAgICAgICAgICAgICAgYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uLklOSkVDVF9FVkVOVFMsIHBpZCwgdWlkKQotICAgICAgICAgICAgICAgICAgICAhPSBQYWNrYWdlTWFuYWdlci5QRVJNSVNTSU9OX0dSQU5URUQpIHsKLSAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiUGVybWlzc2lvbiBkZW5pZWQ6IGluamVjdGluZyBrZXkgZXZlbnQgZnJvbSBwaWQgIgotICAgICAgICAgICAgICAgICAgICAgICAgKyBwaWQgKyAiIHVpZCAiICsgdWlkICsgIiB0byB3aW5kb3cgIiArIGZvY3VzCi0gICAgICAgICAgICAgICAgICAgICAgICArICIgb3duZWQgYnkgdWlkICIgKyBmb2N1cy5tU2Vzc2lvbi5tVWlkKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gSU5KRUNUX05PX1BFUk1JU1NJT047CisgICAgICAgIAorICAgICAgICBwdWJsaWMgdm9pZCByZXN1bWVEaXNwYXRjaGluZ0x3KFdpbmRvd1Rva2VuIHdpbmRvdykgeworICAgICAgICAgICAgaWYgKHdpbmRvdy5wYXVzZWQpIHsKKyAgICAgICAgICAgICAgICBpZiAoREVCVUdfSU5QVVQpIHsKKyAgICAgICAgICAgICAgICAgICAgU2xvZy52KFRBRywgIlJlc3VtaW5nIFdpbmRvd1Rva2VuICIgKyB3aW5kb3cpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB3aW5kb3cucGF1c2VkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgdXBkYXRlSW5wdXRXaW5kb3dzTHcoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotCi0gICAgICAgIHN5bmNocm9uaXplZChtV2luZG93TWFwKSB7Ci0gICAgICAgICAgICBtS2V5V2FpdGVyLmJpbmRUYXJnZXRXaW5kb3dMb2NrZWQoZm9jdXMpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gTk9TSElQIGV4dHJhIHN0YXRlIGxvZ2dpbmcKLSAgICAgICAgbUtleVdhaXRlci5yZWNvcmREaXNwYXRjaFN0YXRlKGV2ZW50LCBmb2N1cyk7Ci0gICAgICAgIC8vIEVORCBOT1NISVAKLQotICAgICAgICB0cnkgewotICAgICAgICAgICAgaWYgKERFQlVHX0lOUFVUIHx8IERFQlVHX0ZPQ1VTKSB7Ci0gICAgICAgICAgICAgICAgU2xvZy52KFRBRywgIkRlbGl2ZXJpbmcga2V5ICIgKyBldmVudC5nZXRLZXlDb2RlKCkKLSAgICAgICAgICAgICAgICAgICAgICAgICsgIiB0byAiICsgZm9jdXMpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZm9jdXMubUNsaWVudC5kaXNwYXRjaEtleShldmVudCk7Ci0gICAgICAgICAgICByZXR1cm4gSU5KRUNUX1NVQ0NFRURFRDsKLSAgICAgICAgfSBjYXRjaCAoYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgU2xvZy5pKFRBRywgIldJTkRPVyBESUVEIGR1cmluZyBrZXkgZGlzcGF0Y2g6ICIgKyBmb2N1cyk7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIHJlbW92ZVdpbmRvdyhmb2N1cy5tU2Vzc2lvbiwgZm9jdXMubUNsaWVudCk7Ci0gICAgICAgICAgICB9IGNhdGNoIChqYXZhLnV0aWwuTm9TdWNoRWxlbWVudEV4Y2VwdGlvbiBleCkgewotICAgICAgICAgICAgICAgIC8vIFRoaXMgd2lsbCBoYXBwZW4gaWYgdGhlIHdpbmRvdyBoYXMgYWxyZWFkeSBiZWVuCi0gICAgICAgICAgICAgICAgLy8gcmVtb3ZlZC4KKyAgICAgICAgCisgICAgICAgIHB1YmxpYyB2b2lkIGZyZWV6ZUlucHV0RGlzcGF0Y2hpbmdMdygpIHsKKyAgICAgICAgICAgIGlmICghIG1JbnB1dERpc3BhdGNoRnJvemVuKSB7CisgICAgICAgICAgICAgICAgaWYgKERFQlVHX0lOUFVUKSB7CisgICAgICAgICAgICAgICAgICAgIFNsb2cudihUQUcsICJGcmVlemluZyBpbnB1dCBkaXNwYXRjaGluZyIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBtSW5wdXREaXNwYXRjaEZyb3plbiA9IHRydWU7CisgICAgICAgICAgICAgICAgdXBkYXRlSW5wdXREaXNwYXRjaE1vZGVMdygpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIElOSkVDVF9GQUlMRUQ7CisgICAgICAgIAorICAgICAgICBwdWJsaWMgdm9pZCB0aGF3SW5wdXREaXNwYXRjaGluZ0x3KCkgeworICAgICAgICAgICAgaWYgKG1JbnB1dERpc3BhdGNoRnJvemVuKSB7CisgICAgICAgICAgICAgICAgaWYgKERFQlVHX0lOUFVUKSB7CisgICAgICAgICAgICAgICAgICAgIFNsb2cudihUQUcsICJUaGF3aW5nIGlucHV0IGRpc3BhdGNoaW5nIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIG1JbnB1dERpc3BhdGNoRnJvemVuID0gZmFsc2U7CisgICAgICAgICAgICAgICAgdXBkYXRlSW5wdXREaXNwYXRjaE1vZGVMdygpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBwdWJsaWMgdm9pZCBzZXRFdmVudERpc3BhdGNoaW5nTHcoYm9vbGVhbiBlbmFibGVkKSB7CisgICAgICAgICAgICBpZiAobUlucHV0RGlzcGF0Y2hFbmFibGVkICE9IGVuYWJsZWQpIHsKKyAgICAgICAgICAgICAgICBpZiAoREVCVUdfSU5QVVQpIHsKKyAgICAgICAgICAgICAgICAgICAgU2xvZy52KFRBRywgIlNldHRpbmcgZXZlbnQgZGlzcGF0Y2hpbmcgdG8gIiArIGVuYWJsZWQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBtSW5wdXREaXNwYXRjaEVuYWJsZWQgPSBlbmFibGVkOworICAgICAgICAgICAgICAgIHVwZGF0ZUlucHV0RGlzcGF0Y2hNb2RlTHcoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcHJpdmF0ZSB2b2lkIHVwZGF0ZUlucHV0RGlzcGF0Y2hNb2RlTHcoKSB7CisgICAgICAgICAgICBtSW5wdXRNYW5hZ2VyLnNldElucHV0RGlzcGF0Y2hNb2RlKG1JbnB1dERpc3BhdGNoRW5hYmxlZCwgbUlucHV0RGlzcGF0Y2hGcm96ZW4pOworICAgICAgICB9CiAgICAgfQogCiAgICAgcHVibGljIHZvaWQgcGF1c2VLZXlEaXNwYXRjaGluZyhJQmluZGVyIF90b2tlbikgewpAQCAtNTQzNyw3ICs1Mjk4LDcgQEAKICAgICAgICAgc3luY2hyb25pemVkIChtV2luZG93TWFwKSB7CiAgICAgICAgICAgICBXaW5kb3dUb2tlbiB0b2tlbiA9IG1Ub2tlbk1hcC5nZXQoX3Rva2VuKTsKICAgICAgICAgICAgIGlmICh0b2tlbiAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgbUtleVdhaXRlci5wYXVzZURpc3BhdGNoaW5nTG9ja2VkKHRva2VuKTsKKyAgICAgICAgICAgICAgICBtSW5wdXRNb25pdG9yLnBhdXNlRGlzcGF0Y2hpbmdMdyh0b2tlbik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CkBAIC01NDUxLDcgKzUzMTIsNyBAQAogICAgICAgICBzeW5jaHJvbml6ZWQgKG1XaW5kb3dNYXApIHsKICAgICAgICAgICAgIFdpbmRvd1Rva2VuIHRva2VuID0gbVRva2VuTWFwLmdldChfdG9rZW4pOwogICAgICAgICAgICAgaWYgKHRva2VuICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBtS2V5V2FpdGVyLnJlc3VtZURpc3BhdGNoaW5nTG9ja2VkKHRva2VuKTsKKyAgICAgICAgICAgICAgICBtSW5wdXRNb25pdG9yLnJlc3VtZURpc3BhdGNoaW5nTHcodG9rZW4pOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtNTQ2Myw3ICs1MzI0LDcgQEAKICAgICAgICAgfQogCiAgICAgICAgIHN5bmNocm9uaXplZCAobVdpbmRvd01hcCkgewotICAgICAgICAgICAgbUtleVdhaXRlci5zZXRFdmVudERpc3BhdGNoaW5nTG9ja2VkKGVuYWJsZWQpOworICAgICAgICAgICAgbUlucHV0TW9uaXRvci5zZXRFdmVudERpc3BhdGNoaW5nTHcoZW5hYmxlZCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTU0OTUsMTkgKzUzNTYsMTIgQEAKICAgICAgICAgZmluYWwgaW50IHBpZCA9IEJpbmRlci5nZXRDYWxsaW5nUGlkKCk7CiAgICAgICAgIGZpbmFsIGludCB1aWQgPSBCaW5kZXIuZ2V0Q2FsbGluZ1VpZCgpOwogICAgICAgICBmaW5hbCBsb25nIGlkZW50ID0gQmluZGVyLmNsZWFyQ2FsbGluZ0lkZW50aXR5KCk7Ci0gICAgICAgIGZpbmFsIGludCByZXN1bHQgPSBkaXNwYXRjaEtleShuZXdFdmVudCwgcGlkLCB1aWQpOwotICAgICAgICBpZiAoc3luYykgewotICAgICAgICAgICAgbUtleVdhaXRlci53YWl0Rm9yTmV4dEV2ZW50VGFyZ2V0KG51bGwsIG51bGwsIG51bGwsIGZhbHNlLCB0cnVlLCBwaWQsIHVpZCk7Ci0gICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGZpbmFsIGludCByZXN1bHQgPSBtSW5wdXRNYW5hZ2VyLmluamVjdEtleUV2ZW50KG5ld0V2ZW50LAorICAgICAgICAgICAgICAgIElucHV0UXVldWUuSU5QVVRfRVZFTlRfTkFUVVJFX0tFWSwgcGlkLCB1aWQsIHN5bmMsIElOSkVDVElPTl9USU1FT1VUX01JTExJUyk7CisgICAgICAgIAogICAgICAgICBCaW5kZXIucmVzdG9yZUNhbGxpbmdJZGVudGl0eShpZGVudCk7Ci0gICAgICAgIHN3aXRjaCAocmVzdWx0KSB7Ci0gICAgICAgICAgICBjYXNlIElOSkVDVF9OT19QRVJNSVNTSU9OOgotICAgICAgICAgICAgICAgIHRocm93IG5ldyBTZWN1cml0eUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICJJbmplY3RpbmcgdG8gYW5vdGhlciBhcHBsaWNhdGlvbiByZXF1aXJlcyBJTkpFQ1RfRVZFTlRTIHBlcm1pc3Npb24iKTsKLSAgICAgICAgICAgIGNhc2UgSU5KRUNUX1NVQ0NFRURFRDoKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiByZXBvcnRJbmplY3Rpb25SZXN1bHQocmVzdWx0KTsKICAgICB9CiAKICAgICAvKioKQEAgLTU1MjMsMTkgKzUzNzcsMTIgQEAKICAgICAgICAgZmluYWwgaW50IHBpZCA9IEJpbmRlci5nZXRDYWxsaW5nUGlkKCk7CiAgICAgICAgIGZpbmFsIGludCB1aWQgPSBCaW5kZXIuZ2V0Q2FsbGluZ1VpZCgpOwogICAgICAgICBmaW5hbCBsb25nIGlkZW50ID0gQmluZGVyLmNsZWFyQ2FsbGluZ0lkZW50aXR5KCk7Ci0gICAgICAgIGZpbmFsIGludCByZXN1bHQgPSBkaXNwYXRjaFBvaW50ZXIobnVsbCwgZXYsIHBpZCwgdWlkKTsKLSAgICAgICAgaWYgKHN5bmMpIHsKLSAgICAgICAgICAgIG1LZXlXYWl0ZXIud2FpdEZvck5leHRFdmVudFRhcmdldChudWxsLCBudWxsLCBudWxsLCBmYWxzZSwgdHJ1ZSwgcGlkLCB1aWQpOwotICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmaW5hbCBpbnQgcmVzdWx0ID0gbUlucHV0TWFuYWdlci5pbmplY3RNb3Rpb25FdmVudChldiwKKyAgICAgICAgICAgICAgICBJbnB1dFF1ZXVlLklOUFVUX0VWRU5UX05BVFVSRV9UT1VDSCwgcGlkLCB1aWQsIHN5bmMsIElOSkVDVElPTl9USU1FT1VUX01JTExJUyk7CisgICAgICAgIAogICAgICAgICBCaW5kZXIucmVzdG9yZUNhbGxpbmdJZGVudGl0eShpZGVudCk7Ci0gICAgICAgIHN3aXRjaCAocmVzdWx0KSB7Ci0gICAgICAgICAgICBjYXNlIElOSkVDVF9OT19QRVJNSVNTSU9OOgotICAgICAgICAgICAgICAgIHRocm93IG5ldyBTZWN1cml0eUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICJJbmplY3RpbmcgdG8gYW5vdGhlciBhcHBsaWNhdGlvbiByZXF1aXJlcyBJTkpFQ1RfRVZFTlRTIHBlcm1pc3Npb24iKTsKLSAgICAgICAgICAgIGNhc2UgSU5KRUNUX1NVQ0NFRURFRDoKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiByZXBvcnRJbmplY3Rpb25SZXN1bHQocmVzdWx0KTsKICAgICB9CiAKICAgICAvKioKQEAgLTU1NTEsMTkgKzUzOTgsMzEgQEAKICAgICAgICAgZmluYWwgaW50IHBpZCA9IEJpbmRlci5nZXRDYWxsaW5nUGlkKCk7CiAgICAgICAgIGZpbmFsIGludCB1aWQgPSBCaW5kZXIuZ2V0Q2FsbGluZ1VpZCgpOwogICAgICAgICBmaW5hbCBsb25nIGlkZW50ID0gQmluZGVyLmNsZWFyQ2FsbGluZ0lkZW50aXR5KCk7Ci0gICAgICAgIGZpbmFsIGludCByZXN1bHQgPSBkaXNwYXRjaFRyYWNrYmFsbChudWxsLCBldiwgcGlkLCB1aWQpOwotICAgICAgICBpZiAoc3luYykgewotICAgICAgICAgICAgbUtleVdhaXRlci53YWl0Rm9yTmV4dEV2ZW50VGFyZ2V0KG51bGwsIG51bGwsIG51bGwsIGZhbHNlLCB0cnVlLCBwaWQsIHVpZCk7Ci0gICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGZpbmFsIGludCByZXN1bHQgPSBtSW5wdXRNYW5hZ2VyLmluamVjdE1vdGlvbkV2ZW50KGV2LAorICAgICAgICAgICAgICAgIElucHV0UXVldWUuSU5QVVRfRVZFTlRfTkFUVVJFX1RSQUNLQkFMTCwgcGlkLCB1aWQsIHN5bmMsIElOSkVDVElPTl9USU1FT1VUX01JTExJUyk7CisgICAgICAgIAogICAgICAgICBCaW5kZXIucmVzdG9yZUNhbGxpbmdJZGVudGl0eShpZGVudCk7CisgICAgICAgIHJldHVybiByZXBvcnRJbmplY3Rpb25SZXN1bHQocmVzdWx0KTsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBib29sZWFuIHJlcG9ydEluamVjdGlvblJlc3VsdChpbnQgcmVzdWx0KSB7CiAgICAgICAgIHN3aXRjaCAocmVzdWx0KSB7Ci0gICAgICAgICAgICBjYXNlIElOSkVDVF9OT19QRVJNSVNTSU9OOgorICAgICAgICAgICAgY2FzZSBJbnB1dE1hbmFnZXIuSU5QVVRfRVZFTlRfSU5KRUNUSU9OX1BFUk1JU1NJT05fREVOSUVEOgorICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsICJJbnB1dCBldmVudCBpbmplY3Rpb24gcGVybWlzc2lvbiBkZW5pZWQuIik7CiAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFNlY3VyaXR5RXhjZXB0aW9uKAogICAgICAgICAgICAgICAgICAgICAgICAgIkluamVjdGluZyB0byBhbm90aGVyIGFwcGxpY2F0aW9uIHJlcXVpcmVzIElOSkVDVF9FVkVOVFMgcGVybWlzc2lvbiIpOwotICAgICAgICAgICAgY2FzZSBJTkpFQ1RfU1VDQ0VFREVEOgorICAgICAgICAgICAgY2FzZSBJbnB1dE1hbmFnZXIuSU5QVVRfRVZFTlRfSU5KRUNUSU9OX1NVQ0NFRURFRDoKKyAgICAgICAgICAgICAgICBTbG9nLnYoVEFHLCAiSW5wdXQgZXZlbnQgaW5qZWN0aW9uIHN1Y2NlZWRlZC4iKTsKICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIGNhc2UgSW5wdXRNYW5hZ2VyLklOUFVUX0VWRU5UX0lOSkVDVElPTl9USU1FRF9PVVQ6CisgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIklucHV0IGV2ZW50IGluamVjdGlvbiB0aW1lZCBvdXQuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgY2FzZSBJbnB1dE1hbmFnZXIuSU5QVVRfRVZFTlRfSU5KRUNUSU9OX0ZBSUxFRDoKKyAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIklucHV0IGV2ZW50IGluamVjdGlvbiBmYWlsZWQuIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBwcml2YXRlIFdpbmRvd1N0YXRlIGdldEZvY3VzZWRXaW5kb3coKSB7CkBAIC01NTc2LDg4OCArNTQzNSw2IEBACiAgICAgICAgIHJldHVybiBtQ3VycmVudEZvY3VzOwogICAgIH0KIAotICAgIC8qKgotICAgICAqIFRoaXMgY2xhc3MgaG9sZHMgdGhlIHN0YXRlIGZvciBkaXNwYXRjaGluZyBrZXkgZXZlbnRzLiAgVGhpcyBzdGF0ZQotICAgICAqIGlzIHByb3RlY3RlZCBieSB0aGUgS2V5V2FpdGVyIGluc3RhbmNlLCBOT1QgYnkgdGhlIHdpbmRvdyBsb2NrLiAgWW91Ci0gICAgICogY2FuIGJlIGhvbGRpbmcgdGhlIG1haW4gd2luZG93IGxvY2sgd2hpbGUgYWNxdWlyZSB0aGUgS2V5V2FpdGVyIGxvY2ssCi0gICAgICogYnV0IG5vdCB0aGUgb3RoZXIgd2F5IGFyb3VuZC4KLSAgICAgKi8KLSAgICBmaW5hbCBjbGFzcyBLZXlXYWl0ZXIgewotICAgICAgICAvLyBOT1NISVAgZGVidWdnaW5nCi0gICAgICAgIHB1YmxpYyBjbGFzcyBEaXNwYXRjaFN0YXRlIHsKLSAgICAgICAgICAgIHByaXZhdGUgS2V5RXZlbnQgZXZlbnQ7Ci0gICAgICAgICAgICBwcml2YXRlIFdpbmRvd1N0YXRlIGZvY3VzOwotICAgICAgICAgICAgcHJpdmF0ZSBsb25nIHRpbWU7Ci0gICAgICAgICAgICBwcml2YXRlIFdpbmRvd1N0YXRlIGxhc3RXaW47Ci0gICAgICAgICAgICBwcml2YXRlIElCaW5kZXIgbGFzdEJpbmRlcjsKLSAgICAgICAgICAgIHByaXZhdGUgYm9vbGVhbiBmaW5pc2hlZDsKLSAgICAgICAgICAgIHByaXZhdGUgYm9vbGVhbiBnb3RGaXJzdFdpbmRvdzsKLSAgICAgICAgICAgIHByaXZhdGUgYm9vbGVhbiBldmVudERpc3BhdGNoaW5nOwotICAgICAgICAgICAgcHJpdmF0ZSBsb25nIHRpbWVUb1N3aXRjaDsKLSAgICAgICAgICAgIHByaXZhdGUgYm9vbGVhbiB3YXNGcm96ZW47Ci0gICAgICAgICAgICBwcml2YXRlIGJvb2xlYW4gZm9jdXNQYXVzZWQ7Ci0gICAgICAgICAgICBwcml2YXRlIFdpbmRvd1N0YXRlIGN1ckZvY3VzOwotCi0gICAgICAgICAgICBEaXNwYXRjaFN0YXRlKEtleUV2ZW50IHRoZUV2ZW50LCBXaW5kb3dTdGF0ZSB0aGVGb2N1cykgewotICAgICAgICAgICAgICAgIGZvY3VzID0gdGhlRm9jdXM7Ci0gICAgICAgICAgICAgICAgZXZlbnQgPSB0aGVFdmVudDsKLSAgICAgICAgICAgICAgICB0aW1lID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7Ci0gICAgICAgICAgICAgICAgLy8gc25hcHNob3QgS2V5V2FpdGVyIHN0YXRlCi0gICAgICAgICAgICAgICAgbGFzdFdpbiA9IG1MYXN0V2luOwotICAgICAgICAgICAgICAgIGxhc3RCaW5kZXIgPSBtTGFzdEJpbmRlcjsKLSAgICAgICAgICAgICAgICBmaW5pc2hlZCA9IG1GaW5pc2hlZDsKLSAgICAgICAgICAgICAgICBnb3RGaXJzdFdpbmRvdyA9IG1Hb3RGaXJzdFdpbmRvdzsKLSAgICAgICAgICAgICAgICBldmVudERpc3BhdGNoaW5nID0gbUV2ZW50RGlzcGF0Y2hpbmc7Ci0gICAgICAgICAgICAgICAgdGltZVRvU3dpdGNoID0gbVRpbWVUb1N3aXRjaDsKLSAgICAgICAgICAgICAgICB3YXNGcm96ZW4gPSBtV2FzRnJvemVuOwotICAgICAgICAgICAgICAgIGN1ckZvY3VzID0gbUN1cnJlbnRGb2N1czsKLSAgICAgICAgICAgICAgICAvLyBjYWNoZSB0aGUgcGF1c2VkIHN0YXRlIGF0IGN0b3IgdGltZSBhcyB3ZWxsCi0gICAgICAgICAgICAgICAgaWYgKHRoZUZvY3VzID09IG51bGwgfHwgdGhlRm9jdXMubVRva2VuID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgZm9jdXNQYXVzZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBmb2N1c1BhdXNlZCA9IHRoZUZvY3VzLm1Ub2tlbi5wYXVzZWQ7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgewotICAgICAgICAgICAgICAgIHJldHVybiAie3siICsgZXZlbnQgKyAiIHRvICIgKyBmb2N1cyArICIgQCAiICsgdGltZQotICAgICAgICAgICAgICAgICAgICAgICAgKyAiIGx3PSIgKyBsYXN0V2luICsgIiBsYj0iICsgbGFzdEJpbmRlcgotICAgICAgICAgICAgICAgICAgICAgICAgKyAiIGZpbj0iICsgZmluaXNoZWQgKyAiIGdmdz0iICsgZ290Rmlyc3RXaW5kb3cKLSAgICAgICAgICAgICAgICAgICAgICAgICsgIiBlZD0iICsgZXZlbnREaXNwYXRjaGluZyArICIgdHRzPSIgKyB0aW1lVG9Td2l0Y2gKLSAgICAgICAgICAgICAgICAgICAgICAgICsgIiB3Zj0iICsgd2FzRnJvemVuICsgIiBmcD0iICsgZm9jdXNQYXVzZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICsgIiBtY2Y9IiArIGN1ckZvY3VzICsgIn19IjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfTsKLSAgICAgICAgcHJpdmF0ZSBEaXNwYXRjaFN0YXRlIG1EaXNwYXRjaFN0YXRlID0gbnVsbDsKLSAgICAgICAgcHVibGljIHZvaWQgcmVjb3JkRGlzcGF0Y2hTdGF0ZShLZXlFdmVudCB0aGVFdmVudCwgV2luZG93U3RhdGUgdGhlRm9jdXMpIHsKLSAgICAgICAgICAgIG1EaXNwYXRjaFN0YXRlID0gbmV3IERpc3BhdGNoU3RhdGUodGhlRXZlbnQsIHRoZUZvY3VzKTsKLSAgICAgICAgfQotICAgICAgICAvLyBFTkQgTk9TSElQCi0KLSAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUkVUVVJOX05PVEhJTkcgPSAwOwotICAgICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBSRVRVUk5fUEVORElOR19QT0lOVEVSID0gMTsKLSAgICAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUkVUVVJOX1BFTkRJTkdfVFJBQ0tCQUxMID0gMjsKLQotICAgICAgICBmaW5hbCBPYmplY3QgU0tJUF9UQVJHRVRfVE9LRU4gPSBuZXcgT2JqZWN0KCk7Ci0gICAgICAgIGZpbmFsIE9iamVjdCBDT05TVU1FRF9FVkVOVF9UT0tFTiA9IG5ldyBPYmplY3QoKTsKLQotICAgICAgICBwcml2YXRlIFdpbmRvd1N0YXRlIG1MYXN0V2luID0gbnVsbDsKLSAgICAgICAgcHJpdmF0ZSBJQmluZGVyIG1MYXN0QmluZGVyID0gbnVsbDsKLSAgICAgICAgcHJpdmF0ZSBib29sZWFuIG1GaW5pc2hlZCA9IHRydWU7Ci0gICAgICAgIHByaXZhdGUgYm9vbGVhbiBtR290Rmlyc3RXaW5kb3cgPSBmYWxzZTsKLSAgICAgICAgcHJpdmF0ZSBib29sZWFuIG1FdmVudERpc3BhdGNoaW5nID0gdHJ1ZTsKLSAgICAgICAgcHJpdmF0ZSBsb25nIG1UaW1lVG9Td2l0Y2ggPSAwOwotICAgICAgICAvKiBwYWNrYWdlICovIGJvb2xlYW4gbVdhc0Zyb3plbiA9IGZhbHNlOwotCi0gICAgICAgIC8vIFRhcmdldCBvZiBNb3Rpb24gZXZlbnRzCi0gICAgICAgIFdpbmRvd1N0YXRlIG1Nb3Rpb25UYXJnZXQ7Ci0KLSAgICAgICAgLy8gV2luZG93cyBhYm92ZSB0aGUgdGFyZ2V0IHdobyB3b3VsZCBsaWtlIHRvIHJlY2VpdmUgYW4gIm91dHNpZGUiCi0gICAgICAgIC8vIHRvdWNoIGV2ZW50IGZvciBhbnkgZG93biBldmVudHMgb3V0c2lkZSBvZiB0aGVtLgotICAgICAgICBXaW5kb3dTdGF0ZSBtT3V0c2lkZVRvdWNoVGFyZ2V0czsKLQotICAgICAgICAvKioKLSAgICAgICAgICogV2FpdCBmb3IgdGhlIGxhc3QgZXZlbnQgZGlzcGF0Y2ggdG8gY29tcGxldGUsIHRoZW4gZmluZCB0aGUgbmV4dAotICAgICAgICAgKiB0YXJnZXQgdGhhdCBzaG91bGQgcmVjZWl2ZSB0aGUgZ2l2ZW4gZXZlbnQgYW5kIHdhaXQgZm9yIHRoYXQgb25lCi0gICAgICAgICAqIHRvIGJlIHJlYWR5IHRvIHJlY2VpdmUgaXQuCi0gICAgICAgICAqLwotICAgICAgICBPYmplY3Qgd2FpdEZvck5leHRFdmVudFRhcmdldChLZXlFdmVudCBuZXh0S2V5LCBRdWV1ZWRFdmVudCBxZXYsCi0gICAgICAgICAgICAgICAgTW90aW9uRXZlbnQgbmV4dE1vdGlvbiwgYm9vbGVhbiBpc1BvaW50ZXJFdmVudCwKLSAgICAgICAgICAgICAgICBib29sZWFuIGZhaWxJZlRpbWVvdXQsIGludCBjYWxsaW5nUGlkLCBpbnQgY2FsbGluZ1VpZCkgewotICAgICAgICAgICAgbG9uZyBzdGFydFRpbWUgPSBTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKTsKLSAgICAgICAgICAgIGxvbmcga2V5RGlzcGF0Y2hpbmdUaW1lb3V0ID0gNSAqIDEwMDA7Ci0gICAgICAgICAgICBsb25nIHdhaXRlZEZvciA9IDA7Ci0KLSAgICAgICAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgICAgICAgICAgLy8gRmlndXJlIG91dCB3aGljaCB3aW5kb3cgd2UgY2FyZSBhYm91dC4gIEl0IGlzIGVpdGhlciB0aGUKLSAgICAgICAgICAgICAgICAvLyBsYXN0IHdpbmRvdyB3ZSBhcmUgd2FpdGluZyB0byBoYXZlIHByb2Nlc3MgdGhlIGV2ZW50IG9yLAotICAgICAgICAgICAgICAgIC8vIGlmIG5vbmUsIHRoZW4gdGhlIG5leHQgd2luZG93IHdlIHRoaW5rIHRoZSBldmVudCBzaG91bGQgZ28KLSAgICAgICAgICAgICAgICAvLyB0by4gIE5vdGU6IHdlIHJldHJpZXZlIG1MYXN0V2luIG91dHNpZGUgb2YgdGhlIGxvY2ssIHNvCi0gICAgICAgICAgICAgICAgLy8gaXQgbWF5IGNoYW5nZSBiZWZvcmUgd2UgbG9jay4gIFRodXMgd2UgbXVzdCBjaGVjayBpdCBhZ2Fpbi4KLSAgICAgICAgICAgICAgICBXaW5kb3dTdGF0ZSB0YXJnZXRXaW4gPSBtTGFzdFdpbjsKLSAgICAgICAgICAgICAgICBib29sZWFuIHRhcmdldElzTmV3ID0gdGFyZ2V0V2luID09IG51bGw7Ci0gICAgICAgICAgICAgICAgaWYgKERFQlVHX0lOUFVUKSBTbG9nLnYoCi0gICAgICAgICAgICAgICAgICAgICAgICBUQUcsICJ3YWl0Rm9yTGFzdEtleTogbUZpbmlzaGVkPSIgKyBtRmluaXNoZWQgKwotICAgICAgICAgICAgICAgICAgICAgICAgIiwgbUxhc3RXaW49IiArIG1MYXN0V2luKTsKLSAgICAgICAgICAgICAgICBpZiAodGFyZ2V0SXNOZXcpIHsKLSAgICAgICAgICAgICAgICAgICAgT2JqZWN0IHRhcmdldCA9IGZpbmRUYXJnZXRXaW5kb3cobmV4dEtleSwgcWV2LCBuZXh0TW90aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUG9pbnRlckV2ZW50LCBjYWxsaW5nUGlkLCBjYWxsaW5nVWlkKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldCA9PSBTS0lQX1RBUkdFVF9UT0tFTikgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHVzZXIgaGFzIHByZXNzZWQgYSBzcGVjaWFsIGtleSwgYW5kIHdlIGFyZQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gZHJvcHBpbmcgYWxsIHBlbmRpbmcgZXZlbnRzIGJlZm9yZSBpdC4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19JTlBVVCkgU2xvZy52KFRBRywgIlNraXBwaW5nOiAiICsgbmV4dEtleQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgIiArIG5leHRNb3Rpb24pOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldCA9PSBDT05TVU1FRF9FVkVOVF9UT0tFTikgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX0lOUFVUKSBTbG9nLnYoVEFHLCAiQ29uc3VtZWQ6ICIgKyBuZXh0S2V5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiAiICsgbmV4dE1vdGlvbik7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGFyZ2V0OwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHRhcmdldFdpbiA9IChXaW5kb3dTdGF0ZSl0YXJnZXQ7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgQXBwV2luZG93VG9rZW4gdGFyZ2V0QXBwID0gbnVsbDsKLQotICAgICAgICAgICAgICAgIC8vIE5vdzogaXMgaXQgb2theSB0byBzZW5kIHRoZSBuZXh0IGV2ZW50IHRvIHRoaXMgd2luZG93PwotICAgICAgICAgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgewotICAgICAgICAgICAgICAgICAgICAvLyBGaXJzdDogZGlkIHdlIGNvbWUgaGVyZSBiYXNlZCBvbiB0aGUgbGFzdCB3aW5kb3cgbm90Ci0gICAgICAgICAgICAgICAgICAgIC8vIGJlaW5nIG51bGwsIGJ1dCBpdCBjaGFuZ2VkIGJ5IHRoZSB0aW1lIHdlIGdvdCBoZXJlPwotICAgICAgICAgICAgICAgICAgICAvLyBJZiBzbywgdHJ5IGFnYWluLgotICAgICAgICAgICAgICAgICAgICBpZiAoIXRhcmdldElzTmV3ICYmIG1MYXN0V2luID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgLy8gV2UgbmV2ZXIgZGlzcGF0Y2ggZXZlbnRzIGlmIG5vdCBmaW5pc2hlZCB3aXRoIHRoZQotICAgICAgICAgICAgICAgICAgICAvLyBsYXN0IG9uZSwgb3IgdGhlIGRpc3BsYXkgaXMgZnJvemVuLgotICAgICAgICAgICAgICAgICAgICBpZiAobUZpbmlzaGVkICYmICFtRGlzcGxheUZyb3plbikgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgZXZlbnQgZGlzcGF0Y2hpbmcgaXMgZGlzYWJsZWQsIHRoZW4gd2UKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGp1c3QgY29uc3VtZSB0aGUgZXZlbnRzLgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtRXZlbnREaXNwYXRjaGluZykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19JTlBVVCkgU2xvZy52KFRBRywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTa2lwcGluZyBldmVudDsgZGlzcGF0Y2hpbmcgZGlzYWJsZWQ6ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgbmV4dEtleSArICIgIiArIG5leHRNb3Rpb24pOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldFdpbiAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIG5ldyB0YXJnZXQsIGFuZCB0aGF0IHRhcmdldCBpcyBub3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYXVzZWQgb3IgdW5yZXNwb25zaXZlLCB0aGVuIGFsbCBsb29rcyBnb29kIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaGFuZGxlIHRoZSBldmVudC4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0SXNOZXcgJiYgIXRhcmdldFdpbi5tVG9rZW4ucGF1c2VkKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0YXJnZXRXaW47Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB3ZSBkaWRuJ3QgZmluZCBhIHRhcmdldCB3aW5kb3csIGFuZCB0aGVyZSBpcyBubwotICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9jdXNlZCBhcHAgd2luZG93LCB0aGVuIGp1c3QgZWF0IHRoZSBldmVudHMuCi0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKG1Gb2N1c2VkQXBwID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfSU5QVVQpIFNsb2cudihUQUcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiU2tpcHBpbmcgZXZlbnQ7IG5vIGZvY3VzZWQgYXBwOiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIG5leHRLZXkgKyAiICIgKyBuZXh0TW90aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19JTlBVVCkgU2xvZy52KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRBRywgIldhaXRpbmcgZm9yIGxhc3Qga2V5IGluICIgKyBtTGFzdEJpbmRlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiB0YXJnZXQ9IiArIHRhcmdldFdpbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiBtRmluaXNoZWQ9IiArIG1GaW5pc2hlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiBtRGlzcGxheUZyb3plbj0iICsgbURpc3BsYXlGcm96ZW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgdGFyZ2V0SXNOZXc9IiArIHRhcmdldElzTmV3Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiIHBhdXNlZD0iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAodGFyZ2V0V2luICE9IG51bGwgPyB0YXJnZXRXaW4ubVRva2VuLnBhdXNlZCA6IGZhbHNlKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiBtRm9jdXNlZEFwcD0iICsgbUZvY3VzZWRBcHAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgbUN1cnJlbnRGb2N1cz0iICsgbUN1cnJlbnRGb2N1cyk7Ci0KLSAgICAgICAgICAgICAgICAgICAgdGFyZ2V0QXBwID0gdGFyZ2V0V2luICE9IG51bGwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IHRhcmdldFdpbi5tQXBwVG9rZW4gOiBtRm9jdXNlZEFwcDsKLQotICAgICAgICAgICAgICAgICAgICBsb25nIGN1clRpbWVvdXQgPSBrZXlEaXNwYXRjaGluZ1RpbWVvdXQ7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtVGltZVRvU3dpdGNoICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvbmcgbm93ID0gU3lzdGVtQ2xvY2sudXB0aW1lTWlsbGlzKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobVRpbWVUb1N3aXRjaCA8PSBub3cpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiBhbiBhcHAgc3dpdGNoIGtleSBoYXMgYmVlbiBwcmVzc2VkLCBhbmQgd2UgaGF2ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdhaXRlZCB0b28gbG9uZyBmb3IgdGhlIGN1cnJlbnQgYXBwIHRvIGZpbmlzaAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHByb2Nlc3Npbmcga2V5cywgdGhlbiB3YWl0IG5vIG1vcmUhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9GaW5pc2hlZEtleUxvY2tlZChmYWxzZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBsb25nIHN3aXRjaFRpbWVvdXQgPSBtVGltZVRvU3dpdGNoIC0gbm93OwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGN1clRpbWVvdXQgPiBzd2l0Y2hUaW1lb3V0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyVGltZW91dCA9IHN3aXRjaFRpbWVvdXQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWZ0ZXIgdGhhdCBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHJvY2Vzc2luZyBrZXlzLCBzbyB3ZSBkb24ndCBnZXQgc3R1Y2suCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfSU5QVVQpIFNsb2cudigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEFHLCAiV2FpdGluZyBmb3Iga2V5IGRpc3BhdGNoOiAiICsgY3VyVGltZW91dCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB3YWl0KGN1clRpbWVvdXQpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX0lOUFVUKSBTbG9nLnYoVEFHLCAiRmluaXNoZWQgd2FpdGluZyBAIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIFN5c3RlbUNsb2NrLnVwdGltZU1pbGxpcygpICsgIiBzdGFydFRpbWU9IgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHN0YXJ0VGltZSArICIgc3dpdGNoVGltZT0iICsgbVRpbWVUb1N3aXRjaAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgdGFyZ2V0PSIgKyB0YXJnZXRXaW4gKyAiIG1MVz0iICsgbUxhc3RXaW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiIG1MQj0iICsgbUxhc3RCaW5kZXIgKyAiIGZpbj0iICsgbUZpbmlzaGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiBtQ3VycmVudEZvY3VzPSIgKyBtQ3VycmVudEZvY3VzKTsKLSAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoSW50ZXJydXB0ZWRFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gSWYgd2Ugd2VyZSBmcm96ZW4gZHVyaW5nIGNvbmZpZ3VyYXRpb24gY2hhbmdlLCByZXN0YXJ0IHRoZQotICAgICAgICAgICAgICAgIC8vIHRpbWVvdXQgY2hlY2tzIGZyb20gbm93OyBvdGhlcndpc2UgbG9vayBhdCB3aGV0aGVyIHdlIHRpbWVkCi0gICAgICAgICAgICAgICAgLy8gb3V0IGJlZm9yZSBhd2FrZW5pbmcuCi0gICAgICAgICAgICAgICAgaWYgKG1XYXNGcm96ZW4pIHsKLSAgICAgICAgICAgICAgICAgICAgd2FpdGVkRm9yID0gMDsKLSAgICAgICAgICAgICAgICAgICAgbVdhc0Zyb3plbiA9IGZhbHNlOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHdhaXRlZEZvciA9IFN5c3RlbUNsb2NrLnVwdGltZU1pbGxpcygpIC0gc3RhcnRUaW1lOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmICh3YWl0ZWRGb3IgPj0ga2V5RGlzcGF0Y2hpbmdUaW1lb3V0ICYmIG1UaW1lVG9Td2l0Y2ggPT0gMCkgewotICAgICAgICAgICAgICAgICAgICBJQXBwbGljYXRpb25Ub2tlbiBhdCA9IG51bGw7Ci0gICAgICAgICAgICAgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgewotICAgICAgICAgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIktleSBkaXNwYXRjaGluZyB0aW1lZCBvdXQgc2VuZGluZyB0byAiICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YXJnZXRXaW4gIT0gbnVsbCA/IHRhcmdldFdpbi5tQXR0cnMuZ2V0VGl0bGUoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiAiPG51bGw+OiBubyB3aW5kb3cgcmVhZHkgZm9yIGtleSBkaXNwYXRjaCIpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5PU0hJUCBkZWJ1Z2dpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsICJQcmV2aW91cyBkaXNwYXRjaCBzdGF0ZTogIiArIG1EaXNwYXRjaFN0YXRlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsICJDdXJyZW50IGRpc3BhdGNoIHN0YXRlOiAiICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERpc3BhdGNoU3RhdGUobmV4dEtleSwgdGFyZ2V0V2luKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBFTkQgTk9TSElQCi0gICAgICAgICAgICAgICAgICAgICAgICAvL2R1bXAoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXRXaW4gIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0ID0gdGFyZ2V0V2luLmdldEFwcFRva2VuKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRhcmdldEFwcCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXQgPSB0YXJnZXRBcHAuYXBwVG9rZW47Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBib29sZWFuIGFib3J0ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGF0ICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyB0aW1lb3V0ID0gYXQuZ2V0S2V5RGlzcGF0Y2hpbmdUaW1lb3V0KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRpbWVvdXQgPiB3YWl0ZWRGb3IpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gd2UgZGlkIG5vdCB3YWl0IHRoZSBwcm9wZXIgYW1vdW50IG9mIHRpbWUgZm9yIHRoaXMgYXBwbGljYXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNldCB0aGUgdGltZW91dCB0byBiZSB0aGUgcmVhbCB0aW1lb3V0IGFuZCB3YWl0IGFnYWluLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXlEaXNwYXRjaGluZ1RpbWVvdXQgPSB0aW1lb3V0IC0gd2FpdGVkRm9yOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYm9ydCA9IGF0LmtleURpc3BhdGNoaW5nVGltZWRPdXQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZXgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFib3J0ICYmIChtTGFzdFdpbiA9PSB0YXJnZXRXaW4gfHwgdGFyZ2V0V2luID09IG51bGwpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbUZpbmlzaGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobUxhc3RXaW4gIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfSU5QVVQpIFNsb2cudihUQUcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldpbmRvdyAiICsgbUxhc3RXaW4gKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgdGltZWQgb3V0IG9uIGtleSBpbnB1dCIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobUxhc3RXaW4ubVRva2VuLnBhdXNlZCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIlVuLXBhdXNpbmcgZGlzcGF0Y2hpbmcgdG8gdGhpcyB3aW5kb3ciKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1MYXN0V2luLm1Ub2tlbi5wYXVzZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobU1vdGlvblRhcmdldCA9PSB0YXJnZXRXaW4pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbU1vdGlvblRhcmdldCA9IG51bGw7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1MYXN0V2luID0gbnVsbDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtTGFzdEJpbmRlciA9IG51bGw7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZhaWxJZlRpbWVvdXQgfHwgdGFyZ2V0V2luID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiQ29udGludWluZyB0byB3YWl0IGZvciBrZXkgdG8gYmUgZGlzcGF0Y2hlZCIpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0VGltZSA9IFN5c3RlbUNsb2NrLnVwdGltZU1pbGxpcygpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgT2JqZWN0IGZpbmRUYXJnZXRXaW5kb3coS2V5RXZlbnQgbmV4dEtleSwgUXVldWVkRXZlbnQgcWV2LAotICAgICAgICAgICAgICAgIE1vdGlvbkV2ZW50IG5leHRNb3Rpb24sIGJvb2xlYW4gaXNQb2ludGVyRXZlbnQsCi0gICAgICAgICAgICAgICAgaW50IGNhbGxpbmdQaWQsIGludCBjYWxsaW5nVWlkKSB7Ci0gICAgICAgICAgICBtT3V0c2lkZVRvdWNoVGFyZ2V0cyA9IG51bGw7Ci0KLSAgICAgICAgICAgIGlmIChuZXh0S2V5ICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAvLyBGaW5kIHRoZSB0YXJnZXQgd2luZG93IGZvciBhIG5vcm1hbCBrZXkgZXZlbnQuCi0gICAgICAgICAgICAgICAgZmluYWwgaW50IGtleWNvZGUgPSBuZXh0S2V5LmdldEtleUNvZGUoKTsKLSAgICAgICAgICAgICAgICBmaW5hbCBpbnQgcmVwZWF0Q291bnQgPSBuZXh0S2V5LmdldFJlcGVhdENvdW50KCk7Ci0gICAgICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBkb3duID0gbmV4dEtleS5nZXRBY3Rpb24oKSAhPSBLZXlFdmVudC5BQ1RJT05fVVA7Ci0gICAgICAgICAgICAgICAgYm9vbGVhbiBkaXNwYXRjaCA9IG1LZXlXYWl0ZXIuY2hlY2tTaG91bGREaXNwYXRjaEtleShrZXljb2RlKTsKLQotICAgICAgICAgICAgICAgIGlmICghZGlzcGF0Y2gpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGNhbGxpbmdVaWQgPT0gMCB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Db250ZXh0LmNoZWNrUGVybWlzc2lvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZHJvaWQuTWFuaWZlc3QucGVybWlzc2lvbi5JTkpFQ1RfRVZFTlRTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGluZ1BpZCwgY2FsbGluZ1VpZCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09IFBhY2thZ2VNYW5hZ2VyLlBFUk1JU1NJT05fR1JBTlRFRCkgewotICAgICAgICAgICAgICAgICAgICAgICAgbVBvbGljeS5pbnRlcmNlcHRLZXlUaShudWxsLCBrZXljb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0S2V5LmdldE1ldGFTdGF0ZSgpLCBkb3duLCByZXBlYXRDb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dEtleS5nZXRGbGFncygpKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiRXZlbnQgdGltZW91dCBkdXJpbmcgYXBwIHN3aXRjaDogZHJvcHBpbmcgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgbmV4dEtleSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBTS0lQX1RBUkdFVF9UT0tFTjsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBTeXN0ZW0ub3V0LnByaW50bG4oIiMjIyMjIFsiICsgU3lzdGVtQ2xvY2sudXB0aW1lTWlsbGlzKCkgKyAiXSBXaW5kb3dNYW5hZ2VyU2VydmljZS5kaXNwYXRjaEtleSgiICsga2V5Y29kZSArICIsICIgKyBkb3duICsgIiwgIiArIHJlcGVhdENvdW50ICsgIikiKTsKLQotICAgICAgICAgICAgICAgIFdpbmRvd1N0YXRlIGZvY3VzID0gbnVsbDsKLSAgICAgICAgICAgICAgICBzeW5jaHJvbml6ZWQobVdpbmRvd01hcCkgewotICAgICAgICAgICAgICAgICAgICBmb2N1cyA9IGdldEZvY3VzZWRXaW5kb3dMb2NrZWQoKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICB3YWtldXBJZk5lZWRlZChmb2N1cywgTG9jYWxQb3dlck1hbmFnZXIuQlVUVE9OX0VWRU5UKTsKLQotICAgICAgICAgICAgICAgIGlmIChjYWxsaW5nVWlkID09IDAgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgIChmb2N1cyAhPSBudWxsICYmIGNhbGxpbmdVaWQgPT0gZm9jdXMubVNlc3Npb24ubVVpZCkgfHwKLSAgICAgICAgICAgICAgICAgICAgICAgIG1Db250ZXh0LmNoZWNrUGVybWlzc2lvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uLklOSkVDVF9FVkVOVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxpbmdQaWQsIGNhbGxpbmdVaWQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID09IFBhY2thZ2VNYW5hZ2VyLlBFUk1JU1NJT05fR1JBTlRFRCkgewotICAgICAgICAgICAgICAgICAgICBpZiAobVBvbGljeS5pbnRlcmNlcHRLZXlUaShmb2N1cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXljb2RlLCBuZXh0S2V5LmdldE1ldGFTdGF0ZSgpLCBkb3duLCByZXBlYXRDb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0S2V5LmdldEZsYWdzKCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gQ09OU1VNRURfRVZFTlRfVE9LRU47Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICByZXR1cm4gZm9jdXM7Ci0KLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIWlzUG9pbnRlckV2ZW50KSB7Ci0gICAgICAgICAgICAgICAgYm9vbGVhbiBkaXNwYXRjaCA9IG1LZXlXYWl0ZXIuY2hlY2tTaG91bGREaXNwYXRjaEtleSgtMSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFkaXNwYXRjaCkgewotICAgICAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiRXZlbnQgdGltZW91dCBkdXJpbmcgYXBwIHN3aXRjaDogZHJvcHBpbmcgdHJhY2tiYWxsICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICArIG5leHRNb3Rpb24pOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gU0tJUF9UQVJHRVRfVE9LRU47Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgV2luZG93U3RhdGUgZm9jdXMgPSBudWxsOwotICAgICAgICAgICAgICAgIHN5bmNocm9uaXplZChtV2luZG93TWFwKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvY3VzID0gZ2V0Rm9jdXNlZFdpbmRvd0xvY2tlZCgpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIHdha2V1cElmTmVlZGVkKGZvY3VzLCBMb2NhbFBvd2VyTWFuYWdlci5CVVRUT05fRVZFTlQpOwotICAgICAgICAgICAgICAgIHJldHVybiBmb2N1czsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKG5leHRNb3Rpb24gPT0gbnVsbCkgewotICAgICAgICAgICAgICAgIHJldHVybiBTS0lQX1RBUkdFVF9UT0tFTjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYm9vbGVhbiBkaXNwYXRjaCA9IG1LZXlXYWl0ZXIuY2hlY2tTaG91bGREaXNwYXRjaEtleSgKLSAgICAgICAgICAgICAgICAgICAgS2V5RXZlbnQuS0VZQ09ERV9VTktOT1dOKTsKLSAgICAgICAgICAgIGlmICghZGlzcGF0Y2gpIHsKLSAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiRXZlbnQgdGltZW91dCBkdXJpbmcgYXBwIHN3aXRjaDogZHJvcHBpbmcgcG9pbnRlciAiCi0gICAgICAgICAgICAgICAgICAgICAgICArIG5leHRNb3Rpb24pOwotICAgICAgICAgICAgICAgIHJldHVybiBTS0lQX1RBUkdFVF9UT0tFTjsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gRmluZCB0aGUgdGFyZ2V0IHdpbmRvdyBmb3IgYSBwb2ludGVyIGV2ZW50LgotICAgICAgICAgICAgaW50IGFjdGlvbiA9IG5leHRNb3Rpb24uZ2V0QWN0aW9uKCk7Ci0gICAgICAgICAgICBmaW5hbCBmbG9hdCB4ZiA9IG5leHRNb3Rpb24uZ2V0WCgpOwotICAgICAgICAgICAgZmluYWwgZmxvYXQgeWYgPSBuZXh0TW90aW9uLmdldFkoKTsKLSAgICAgICAgICAgIGZpbmFsIGxvbmcgZXZlbnRUaW1lID0gbmV4dE1vdGlvbi5nZXRFdmVudFRpbWUoKTsKLQotICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBzY3JlZW5XYXNPZmYgPSBxZXYgIT0gbnVsbAotICAgICAgICAgICAgICAgICAgICAmJiAocWV2LmZsYWdzJldpbmRvd01hbmFnZXJQb2xpY3kuRkxBR19CUklHSFRfSEVSRSkgIT0gMDsKLQotICAgICAgICAgICAgV2luZG93U3RhdGUgdGFyZ2V0ID0gbnVsbDsKLQotICAgICAgICAgICAgc3luY2hyb25pemVkKG1XaW5kb3dNYXApIHsKLSAgICAgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGFjdGlvbiA9PSBNb3Rpb25FdmVudC5BQ1RJT05fRE9XTikgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1Nb3Rpb25UYXJnZXQgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgaXMgd2VpcmQsIHdlIGdvdCBhIHBlbiBkb3duLCBidXQgd2UgdGhvdWdodCBpdCB3YXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbHJlYWR5IGRvd24hCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gWFhYOiBXZSBzaG91bGQgcHJvYmFibHkgc2VuZCBhbiBBQ1RJT05fVVAgdG8gdGhlIGN1cnJlbnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0YXJnZXQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIlBvaW50ZXIgZG93biByZWNlaXZlZCB3aGlsZSBhbHJlYWR5IGRvd24gaW46ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgbU1vdGlvblRhcmdldCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbU1vdGlvblRhcmdldCA9IG51bGw7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFDVElPTl9ET1dOIGlzIHNwZWNpYWwsIGJlY2F1c2Ugd2UgbmVlZCB0byBsb2NrIG5leHQgZXZlbnRzIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgd2luZG93IHdlJ2xsIGxhbmQgb250by4KLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIGludCB4ID0gKGludCl4ZjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIGludCB5ID0gKGludCl5ZjsKLQotICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgQXJyYXlMaXN0IHdpbmRvd3MgPSBtV2luZG93czsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIGludCBOID0gd2luZG93cy5zaXplKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBXaW5kb3dTdGF0ZSB0b3BFcnJXaW5kb3cgPSBudWxsOwotICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgUmVjdCB0bXBSZWN0ID0gbVRlbXBSZWN0OwotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaT1OLTE7IGk+PTA7IGktLSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdpbmRvd1N0YXRlIGNoaWxkID0gKFdpbmRvd1N0YXRlKXdpbmRvd3MuZ2V0KGkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vU2xvZy5pKFRBRywgIkNoZWNraW5nIGRpc3BhdGNoIHRvOiAiICsgY2hpbGQpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmFsIGludCBmbGFncyA9IGNoaWxkLm1BdHRycy5mbGFnczsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGZsYWdzICYgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19TWVNURU1fRVJST1IpICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRvcEVycldpbmRvdyA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3BFcnJXaW5kb3cgPSBjaGlsZDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNoaWxkLmlzVmlzaWJsZUx3KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9TbG9nLmkoVEFHLCAiTm90IHZpc2libGUhIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGZsYWdzICYgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19OT1RfVE9VQ0hBQkxFKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vU2xvZy5pKFRBRywgIk5vdCB0b3VjaGFibGUhIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZmxhZ3MgJiBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5GTEFHX1dBVENIX09VVFNJREVfVE9VQ0gpICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkLm1OZXh0T3V0c2lkZVRvdWNoID0gbU91dHNpZGVUb3VjaFRhcmdldHM7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtT3V0c2lkZVRvdWNoVGFyZ2V0cyA9IGNoaWxkOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXBSZWN0LnNldChjaGlsZC5tRnJhbWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjaGlsZC5tVG91Y2hhYmxlSW5zZXRzID09IFZpZXdUcmVlT2JzZXJ2ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuSW50ZXJuYWxJbnNldHNJbmZvLlRPVUNIQUJMRV9JTlNFVFNfQ09OVEVOVCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgdG91Y2ggaXMgaW5zaWRlIG9mIHRoZSB3aW5kb3cgaWYgaXQgaXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW5zaWRlIHRoZSBmcmFtZSwgQU5EIHRoZSBjb250ZW50IHBhcnQgb2YgdGhhdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBmcmFtZSB0aGF0IHdhcyBnaXZlbiBieSB0aGUgYXBwbGljYXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcFJlY3QubGVmdCArPSBjaGlsZC5tR2l2ZW5Db250ZW50SW5zZXRzLmxlZnQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcFJlY3QudG9wICs9IGNoaWxkLm1HaXZlbkNvbnRlbnRJbnNldHMudG9wOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXBSZWN0LnJpZ2h0IC09IGNoaWxkLm1HaXZlbkNvbnRlbnRJbnNldHMucmlnaHQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRtcFJlY3QuYm90dG9tIC09IGNoaWxkLm1HaXZlbkNvbnRlbnRJbnNldHMuYm90dG9tOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2hpbGQubVRvdWNoYWJsZUluc2V0cyA9PSBWaWV3VHJlZU9ic2VydmVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLkludGVybmFsSW5zZXRzSW5mby5UT1VDSEFCTEVfSU5TRVRTX1ZJU0lCTEUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHRvdWNoIGlzIGluc2lkZSBvZiB0aGUgd2luZG93IGlmIGl0IGlzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluc2lkZSB0aGUgZnJhbWUsIEFORCB0aGUgdmlzaWJsZSBwYXJ0IG9mIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZnJhbWUgdGhhdCB3YXMgZ2l2ZW4gYnkgdGhlIGFwcGxpY2F0aW9uLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXBSZWN0LmxlZnQgKz0gY2hpbGQubUdpdmVuVmlzaWJsZUluc2V0cy5sZWZ0OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXBSZWN0LnRvcCArPSBjaGlsZC5tR2l2ZW5WaXNpYmxlSW5zZXRzLnRvcDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG1wUmVjdC5yaWdodCAtPSBjaGlsZC5tR2l2ZW5WaXNpYmxlSW5zZXRzLnJpZ2h0OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0bXBSZWN0LmJvdHRvbSAtPSBjaGlsZC5tR2l2ZW5WaXNpYmxlSW5zZXRzLmJvdHRvbTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluYWwgaW50IHRvdWNoRmxhZ3MgPSBmbGFncyAmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX05PVF9GT0NVU0FCTEUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfTk9UX1RPVUNIX01PREFMKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG1wUmVjdC5jb250YWlucyh4LCB5KSB8fCB0b3VjaEZsYWdzID09IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9TbG9nLmkoVEFHLCAiVXNpbmcgdGhpcyB0YXJnZXQhIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghc2NyZWVuV2FzT2ZmIHx8IChmbGFncyAmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19UT1VDSEFCTEVfV0hFTl9XQUtJTkcpICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Nb3Rpb25UYXJnZXQgPSBjaGlsZDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vU2xvZy5pKFRBRywgIldha2luZywgc2tpcCEiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Nb3Rpb25UYXJnZXQgPSBudWxsOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZmxhZ3MgJiBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLkZMQUdfV0FUQ0hfT1VUU0lERV9UT1VDSCkgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGlsZC5tTmV4dE91dHNpZGVUb3VjaCA9IG1PdXRzaWRlVG91Y2hUYXJnZXRzOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtT3V0c2lkZVRvdWNoVGFyZ2V0cyA9IGNoaWxkOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL1Nsb2cuaShUQUcsICJBZGRpbmcgdG8gb3V0c2lkZSB0YXJnZXQgbGlzdDogIiArIGNoaWxkKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZXJlJ3MgYW4gZXJyb3Igd2luZG93IGJ1dCBpdCdzIG5vdCBhY2NlcHRpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZvY3VzICh0eXBpY2FsbHkgYmVjYXVzZSBpdCBpcyBub3QgeWV0IHZpc2libGUpIGp1c3QKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdhaXQgZm9yIGl0IC0tIGFueSBvdGhlciBmb2N1c2VkIHdpbmRvdyBtYXkgaW4gZmFjdAotICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmUgaW4gQU5SIHN0YXRlLgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRvcEVycldpbmRvdyAhPSBudWxsICYmIG1Nb3Rpb25UYXJnZXQgIT0gdG9wRXJyV2luZG93KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbU1vdGlvblRhcmdldCA9IG51bGw7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICB0YXJnZXQgPSBtTW90aW9uVGFyZ2V0OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgd2FrZXVwSWZOZWVkZWQodGFyZ2V0LCBldmVudFR5cGUobmV4dE1vdGlvbikpOwotCi0gICAgICAgICAgICAvLyBQb2ludGVyIGV2ZW50cyBhcmUgYSBsaXR0bGUgZGlmZmVyZW50IC0tIGlmIHRoZXJlIGlzbid0IGEKLSAgICAgICAgICAgIC8vIHRhcmdldCBmb3VuZCBmb3IgYW55IGV2ZW50LCB0aGVuIGp1c3QgZHJvcCBpdC4KLSAgICAgICAgICAgIHJldHVybiB0YXJnZXQgIT0gbnVsbCA/IHRhcmdldCA6IFNLSVBfVEFSR0VUX1RPS0VOOwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbGVhbiBjaGVja1Nob3VsZERpc3BhdGNoS2V5KGludCBrZXljb2RlKSB7Ci0gICAgICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKLSAgICAgICAgICAgICAgICBpZiAobVBvbGljeS5pc0FwcFN3aXRjaEtleVRxVGlMd0xpKGtleWNvZGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1UaW1lVG9Td2l0Y2ggPSAwOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKG1UaW1lVG9Td2l0Y2ggIT0gMAotICAgICAgICAgICAgICAgICAgICAgICAgJiYgbVRpbWVUb1N3aXRjaCA8IFN5c3RlbUNsb2NrLnVwdGltZU1pbGxpcygpKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGJpbmRUYXJnZXRXaW5kb3dMb2NrZWQoV2luZG93U3RhdGUgd2luLAotICAgICAgICAgICAgICAgIGludCBwZW5kaW5nV2hhdCwgUXVldWVkRXZlbnQgcGVuZGluZ01vdGlvbikgewotICAgICAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7Ci0gICAgICAgICAgICAgICAgYmluZFRhcmdldFdpbmRvd0xvY2tlZExvY2tlZCh3aW4sIHBlbmRpbmdXaGF0LCBwZW5kaW5nTW90aW9uKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgYmluZFRhcmdldFdpbmRvd0xvY2tlZChXaW5kb3dTdGF0ZSB3aW4pIHsKLSAgICAgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgewotICAgICAgICAgICAgICAgIGJpbmRUYXJnZXRXaW5kb3dMb2NrZWRMb2NrZWQod2luLCBSRVRVUk5fTk9USElORywgbnVsbCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGJpbmRUYXJnZXRXaW5kb3dMb2NrZWRMb2NrZWQoV2luZG93U3RhdGUgd2luLAotICAgICAgICAgICAgICAgIGludCBwZW5kaW5nV2hhdCwgUXVldWVkRXZlbnQgcGVuZGluZ01vdGlvbikgewotICAgICAgICAgICAgbUxhc3RXaW4gPSB3aW47Ci0gICAgICAgICAgICBtTGFzdEJpbmRlciA9IHdpbi5tQ2xpZW50LmFzQmluZGVyKCk7Ci0gICAgICAgICAgICBtRmluaXNoZWQgPSBmYWxzZTsKLSAgICAgICAgICAgIGlmIChwZW5kaW5nTW90aW9uICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBmaW5hbCBTZXNzaW9uIHMgPSB3aW4ubVNlc3Npb247Ci0gICAgICAgICAgICAgICAgaWYgKHBlbmRpbmdXaGF0ID09IFJFVFVSTl9QRU5ESU5HX1BPSU5URVIpIHsKLSAgICAgICAgICAgICAgICAgICAgcmVsZWFzZVBlbmRpbmdQb2ludGVyTG9ja2VkKHMpOwotICAgICAgICAgICAgICAgICAgICBzLm1QZW5kaW5nUG9pbnRlck1vdmUgPSBwZW5kaW5nTW90aW9uOwotICAgICAgICAgICAgICAgICAgICBzLm1QZW5kaW5nUG9pbnRlcldpbmRvdyA9IHdpbjsKLSAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX0lOUFVUKSBTbG9nLnYoVEFHLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiaW5kVGFyZ2V0VG9XaW5kb3cgIiArIHMubVBlbmRpbmdQb2ludGVyTW92ZSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwZW5kaW5nV2hhdCA9PSBSRVRVUk5fUEVORElOR19UUkFDS0JBTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgcmVsZWFzZVBlbmRpbmdUcmFja2JhbGxMb2NrZWQocyk7Ci0gICAgICAgICAgICAgICAgICAgIHMubVBlbmRpbmdUcmFja2JhbGxNb3ZlID0gcGVuZGluZ01vdGlvbjsKLSAgICAgICAgICAgICAgICAgICAgcy5tUGVuZGluZ1RyYWNrYmFsbFdpbmRvdyA9IHdpbjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHJlbGVhc2VQZW5kaW5nUG9pbnRlckxvY2tlZChTZXNzaW9uIHMpIHsKLSAgICAgICAgICAgIGlmIChERUJVR19JTlBVVCkgU2xvZy52KFRBRywKLSAgICAgICAgICAgICAgICAgICAgInJlbGVhc2VQZW5kaW5nUG9pbnRlciAiICsgcy5tUGVuZGluZ1BvaW50ZXJNb3ZlKTsKLSAgICAgICAgICAgIGlmIChzLm1QZW5kaW5nUG9pbnRlck1vdmUgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIG1RdWV1ZS5yZWN5Y2xlRXZlbnQocy5tUGVuZGluZ1BvaW50ZXJNb3ZlKTsKLSAgICAgICAgICAgICAgICBzLm1QZW5kaW5nUG9pbnRlck1vdmUgPSBudWxsOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCByZWxlYXNlUGVuZGluZ1RyYWNrYmFsbExvY2tlZChTZXNzaW9uIHMpIHsKLSAgICAgICAgICAgIGlmIChzLm1QZW5kaW5nVHJhY2tiYWxsTW92ZSAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgbVF1ZXVlLnJlY3ljbGVFdmVudChzLm1QZW5kaW5nVHJhY2tiYWxsTW92ZSk7Ci0gICAgICAgICAgICAgICAgcy5tUGVuZGluZ1RyYWNrYmFsbE1vdmUgPSBudWxsOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgTW90aW9uRXZlbnQgZmluaXNoZWRLZXkoU2Vzc2lvbiBzZXNzaW9uLCBJV2luZG93IGNsaWVudCwgYm9vbGVhbiBmb3JjZSwKLSAgICAgICAgICAgICAgICBpbnQgcmV0dXJuV2hhdCkgewotICAgICAgICAgICAgaWYgKERFQlVHX0lOUFVUKSBTbG9nLnYoCi0gICAgICAgICAgICAgICAgVEFHLCAiZmluaXNoZWRLZXk6IGNsaWVudD0iICsgY2xpZW50ICsgIiwgZm9yY2U9IiArIGZvcmNlKTsKLQotICAgICAgICAgICAgaWYgKGNsaWVudCA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIE1vdGlvbkV2ZW50IHJlcyA9IG51bGw7Ci0gICAgICAgICAgICBRdWV1ZWRFdmVudCBxZXYgPSBudWxsOwotICAgICAgICAgICAgV2luZG93U3RhdGUgd2luID0gbnVsbDsKLQotICAgICAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7Ci0gICAgICAgICAgICAgICAgaWYgKERFQlVHX0lOUFVUKSBTbG9nLnYoCi0gICAgICAgICAgICAgICAgICAgIFRBRywgImZpbmlzaGVkS2V5OiBjbGllbnQ9IiArIGNsaWVudC5hc0JpbmRlcigpCi0gICAgICAgICAgICAgICAgICAgICsgIiwgZm9yY2U9IiArIGZvcmNlICsgIiwgbGFzdD0iICsgbUxhc3RCaW5kZXIKLSAgICAgICAgICAgICAgICAgICAgKyAiICh0b2tlbj0iICsgKG1MYXN0V2luICE9IG51bGwgPyBtTGFzdFdpbi5tVG9rZW4gOiBudWxsKSArICIpIik7Ci0KLSAgICAgICAgICAgICAgICBpZiAocmV0dXJuV2hhdCA9PSBSRVRVUk5fUEVORElOR19QT0lOVEVSKSB7Ci0gICAgICAgICAgICAgICAgICAgIHFldiA9IHNlc3Npb24ubVBlbmRpbmdQb2ludGVyTW92ZTsKLSAgICAgICAgICAgICAgICAgICAgd2luID0gc2Vzc2lvbi5tUGVuZGluZ1BvaW50ZXJXaW5kb3c7Ci0gICAgICAgICAgICAgICAgICAgIHNlc3Npb24ubVBlbmRpbmdQb2ludGVyTW92ZSA9IG51bGw7Ci0gICAgICAgICAgICAgICAgICAgIHNlc3Npb24ubVBlbmRpbmdQb2ludGVyV2luZG93ID0gbnVsbDsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJldHVybldoYXQgPT0gUkVUVVJOX1BFTkRJTkdfVFJBQ0tCQUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIHFldiA9IHNlc3Npb24ubVBlbmRpbmdUcmFja2JhbGxNb3ZlOwotICAgICAgICAgICAgICAgICAgICB3aW4gPSBzZXNzaW9uLm1QZW5kaW5nVHJhY2tiYWxsV2luZG93OwotICAgICAgICAgICAgICAgICAgICBzZXNzaW9uLm1QZW5kaW5nVHJhY2tiYWxsTW92ZSA9IG51bGw7Ci0gICAgICAgICAgICAgICAgICAgIHNlc3Npb24ubVBlbmRpbmdUcmFja2JhbGxXaW5kb3cgPSBudWxsOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmIChtTGFzdEJpbmRlciA9PSBjbGllbnQuYXNCaW5kZXIoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfSU5QVVQpIFNsb2cudigKLSAgICAgICAgICAgICAgICAgICAgICAgIFRBRywgImZpbmlzaGVkS2V5OiBsYXN0IHBhdXNlZD0iCi0gICAgICAgICAgICAgICAgICAgICAgICArICgobUxhc3RXaW4gIT0gbnVsbCkgPyBtTGFzdFdpbi5tVG9rZW4ucGF1c2VkIDogIm51bGwiKSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtTGFzdFdpbiAhPSBudWxsICYmICghbUxhc3RXaW4ubVRva2VuLnBhdXNlZCB8fCBmb3JjZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8ICFtRXZlbnREaXNwYXRjaGluZykpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRvRmluaXNoZWRLZXlMb2NrZWQodHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBNYWtlIHN1cmUgdG8gd2FrZSB1cCBhbnlvbmUgY3VycmVudGx5IHdhaXRpbmcgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGRpc3BhdGNoIGEga2V5LCBzbyB0aGV5IGNhbiByZS1ldmFsdWF0ZSB0aGVpcgotICAgICAgICAgICAgICAgICAgICAgICAgLy8gY3VycmVudCBzaXR1YXRpb24uCi0gICAgICAgICAgICAgICAgICAgICAgICBtRmluaXNoZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgbm90aWZ5QWxsKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAocWV2ICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgcmVzID0gKE1vdGlvbkV2ZW50KXFldi5ldmVudDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX0lOUFVUKSBTbG9nLnYoVEFHLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJSZXR1cm5pbmcgcGVuZGluZyBtb3Rpb246ICIgKyByZXMpOwotICAgICAgICAgICAgICAgICAgICBtUXVldWUucmVjeWNsZUV2ZW50KHFldik7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh3aW4gIT0gbnVsbCAmJiByZXR1cm5XaGF0ID09IFJFVFVSTl9QRU5ESU5HX1BPSU5URVIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcy5vZmZzZXRMb2NhdGlvbigtd2luLm1GcmFtZS5sZWZ0LCAtd2luLm1GcmFtZS50b3ApOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAocmVzICE9IG51bGwgJiYgcmV0dXJuV2hhdCA9PSBSRVRVUk5fUEVORElOR19QT0lOVEVSKSB7Ci0gICAgICAgICAgICAgICAgc3luY2hyb25pemVkIChtV2luZG93TWFwKSB7Ci0gICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoUG9pbnRlckVsc2V3aGVyZUxvY2tlZCh3aW4sIHdpbiwgcmVzLCByZXMuZ2V0RXZlbnRUaW1lKCksIGZhbHNlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHJldHVybiByZXM7Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHRpY2tsZSgpIHsKLSAgICAgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgewotICAgICAgICAgICAgICAgIG5vdGlmeUFsbCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgdm9pZCBoYW5kbGVOZXdXaW5kb3dMb2NrZWQoV2luZG93U3RhdGUgbmV3V2luZG93KSB7Ci0gICAgICAgICAgICBpZiAoIW5ld1dpbmRvdy5jYW5SZWNlaXZlS2V5cygpKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7Ci0gICAgICAgICAgICAgICAgaWYgKERFQlVHX0lOUFVUKSBTbG9nLnYoCi0gICAgICAgICAgICAgICAgICAgIFRBRywgIk5ldyBrZXkgZGlzcGF0Y2ggd2luZG93OiB3aW49IgotICAgICAgICAgICAgICAgICAgICArIG5ld1dpbmRvdy5tQ2xpZW50LmFzQmluZGVyKCkKLSAgICAgICAgICAgICAgICAgICAgKyAiLCBsYXN0PSIgKyBtTGFzdEJpbmRlcgotICAgICAgICAgICAgICAgICAgICArICIgKHRva2VuPSIgKyAobUxhc3RXaW4gIT0gbnVsbCA/IG1MYXN0V2luLm1Ub2tlbiA6IG51bGwpCi0gICAgICAgICAgICAgICAgICAgICsgIiksIGZpbmlzaGVkPSIgKyBtRmluaXNoZWQgKyAiLCBwYXVzZWQ9IgotICAgICAgICAgICAgICAgICAgICArIG5ld1dpbmRvdy5tVG9rZW4ucGF1c2VkKTsKLQotICAgICAgICAgICAgICAgIC8vIERpc3BsYXlpbmcgYSB3aW5kb3cgaW1wbGljaXRseSBjYXVzZXMgZGlzcGF0Y2hpbmcgdG8KLSAgICAgICAgICAgICAgICAvLyBiZSB1bnBhdXNlZC4gIChUaGlzIGlzIHRvIHByb3RlY3QgYWdhaW5zdCBidWdzIGlmIHNvbWVvbmUKLSAgICAgICAgICAgICAgICAvLyBwYXVzZXMgZGlzcGF0Y2hpbmcgYnV0IGZvcmdldHMgdG8gcmVzdW1lLikKLSAgICAgICAgICAgICAgICBuZXdXaW5kb3cubVRva2VuLnBhdXNlZCA9IGZhbHNlOwotCi0gICAgICAgICAgICAgICAgbUdvdEZpcnN0V2luZG93ID0gdHJ1ZTsKLQotICAgICAgICAgICAgICAgIGlmICgobmV3V2luZG93Lm1BdHRycy5mbGFncyAmIEZMQUdfU1lTVEVNX0VSUk9SKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19JTlBVVCkgU2xvZy52KFRBRywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiTmV3IFNZU1RFTV9FUlJPUiB3aW5kb3c7IHJlc2V0dGluZyBzdGF0ZSIpOwotICAgICAgICAgICAgICAgICAgICBtTGFzdFdpbiA9IG51bGw7Ci0gICAgICAgICAgICAgICAgICAgIG1MYXN0QmluZGVyID0gbnVsbDsKLSAgICAgICAgICAgICAgICAgICAgbU1vdGlvblRhcmdldCA9IG51bGw7Ci0gICAgICAgICAgICAgICAgICAgIG1GaW5pc2hlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChtTGFzdFdpbiAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBuZXcgd2luZG93IGlzIGFib3ZlIHRoZSB3aW5kb3cgd2UgYXJlCi0gICAgICAgICAgICAgICAgICAgIC8vIHdhaXRpbmcgb24sIHRoZW4gc3RvcCB3YWl0aW5nIGFuZCBsZXQga2V5IGRpc3BhdGNoaW5nCi0gICAgICAgICAgICAgICAgICAgIC8vIHN0YXJ0IG9uIHRoZSBuZXcgZ3V5LgotICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfSU5QVVQpIFNsb2cudigKLSAgICAgICAgICAgICAgICAgICAgICAgIFRBRywgIkxhc3Qgd2luIGxheWVyPSIgKyBtTGFzdFdpbi5tTGF5ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICsgIiwgbmV3IHdpbiBsYXllcj0iICsgbmV3V2luZG93Lm1MYXllcik7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChuZXdXaW5kb3cubUxheWVyID49IG1MYXN0V2luLm1MYXllcikgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIG5ldyB3aW5kb3cgaXMgYWJvdmUgdGhlIG9sZDsgZmluaXNoIHBlbmRpbmcgaW5wdXQgdG8gdGhlIGxhc3QKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHdpbmRvdyBhbmQgc3RhcnQgZGlyZWN0aW5nIGl0IHRvIHRoZSBuZXcgb25lLgotICAgICAgICAgICAgICAgICAgICAgICAgbUxhc3RXaW4ubVRva2VuLnBhdXNlZCA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgZG9GaW5pc2hlZEtleUxvY2tlZChmYWxzZSk7ICAvLyBkb2VzIGEgbm90aWZ5QWxsKCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8vIE5vdyB0aGF0IHdlJ3ZlIHB1dCBhIG5ldyB3aW5kb3cgc3RhdGUgaW4gcGxhY2UsIG1ha2UgdGhlIGV2ZW50IHdhaXRlcgotICAgICAgICAgICAgICAgIC8vIHRha2Ugbm90aWNlIGFuZCByZXRhcmdldCBpdHMgYXR0ZW50aW9ucy4KLSAgICAgICAgICAgICAgICBub3RpZnlBbGwoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgcGF1c2VEaXNwYXRjaGluZ0xvY2tlZChXaW5kb3dUb2tlbiB0b2tlbikgewotICAgICAgICAgICAgc3luY2hyb25pemVkICh0aGlzKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGlmIChERUJVR19JTlBVVCkgU2xvZy52KFRBRywgIlBhdXNpbmcgV2luZG93VG9rZW4gIiArIHRva2VuKTsKLSAgICAgICAgICAgICAgICB0b2tlbi5wYXVzZWQgPSB0cnVlOwotCi0gICAgICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAgICBpZiAobUxhc3RXaW4gIT0gbnVsbCAmJiAhbUZpbmlzaGVkICYmIG1MYXN0V2luLm1CYXNlTGF5ZXIgPD0gbGF5ZXIpIHsKLSAgICAgICAgICAgICAgICAgICAgbVBhdXNlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1MYXN0V2luID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFNsb2cuaShUQUcsICJLZXkgZGlzcGF0Y2hpbmcgbm90IHBhdXNlZDogbm8gbGFzdCB3aW5kb3cuIik7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobUZpbmlzaGVkKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBTbG9nLmkoVEFHLCAiS2V5IGRpc3BhdGNoaW5nIG5vdCBwYXVzZWQ6IGZpbmlzaGVkIGxhc3Qga2V5LiIpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgU2xvZy5pKFRBRywgIktleSBkaXNwYXRjaGluZyBub3QgcGF1c2VkOiB3aW5kb3cgaW4gaGlnaGVyIGxheWVyLiIpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICovCi0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHJlc3VtZURpc3BhdGNoaW5nTG9ja2VkKFdpbmRvd1Rva2VuIHRva2VuKSB7Ci0gICAgICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKLSAgICAgICAgICAgICAgICBpZiAodG9rZW4ucGF1c2VkKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19JTlBVVCkgU2xvZy52KAotICAgICAgICAgICAgICAgICAgICAgICAgVEFHLCAiUmVzdW1pbmcgV2luZG93VG9rZW4gIiArIHRva2VuCi0gICAgICAgICAgICAgICAgICAgICAgICArICIsIGxhc3Q9IiArIG1MYXN0QmluZGVyCi0gICAgICAgICAgICAgICAgICAgICAgICArICIgKHRva2VuPSIgKyAobUxhc3RXaW4gIT0gbnVsbCA/IG1MYXN0V2luLm1Ub2tlbiA6IG51bGwpCi0gICAgICAgICAgICAgICAgICAgICAgICArICIpLCBmaW5pc2hlZD0iICsgbUZpbmlzaGVkICsgIiwgcGF1c2VkPSIKLSAgICAgICAgICAgICAgICAgICAgICAgICsgdG9rZW4ucGF1c2VkKTsKLSAgICAgICAgICAgICAgICAgICAgdG9rZW4ucGF1c2VkID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChtTGFzdFdpbiAhPSBudWxsICYmIG1MYXN0V2luLm1Ub2tlbiA9PSB0b2tlbiAmJiBtRmluaXNoZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRvRmluaXNoZWRLZXlMb2NrZWQoZmFsc2UpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgbm90aWZ5QWxsKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIHNldEV2ZW50RGlzcGF0Y2hpbmdMb2NrZWQoYm9vbGVhbiBlbmFibGVkKSB7Ci0gICAgICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKLSAgICAgICAgICAgICAgICBtRXZlbnREaXNwYXRjaGluZyA9IGVuYWJsZWQ7Ci0gICAgICAgICAgICAgICAgbm90aWZ5QWxsKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICB2b2lkIGFwcFN3aXRjaENvbWluZygpIHsKLSAgICAgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgewotICAgICAgICAgICAgICAgIC8vIERvbid0IHdhaXQgZm9yIG1vcmUgdGhhbiAuNSBzZWNvbmRzIGZvciBhcHAgdG8gZmluaXNoCi0gICAgICAgICAgICAgICAgLy8gcHJvY2Vzc2luZyB0aGUgcGVuZGluZyBldmVudHMuCi0gICAgICAgICAgICAgICAgbG9uZyBub3cgPSBTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKSArIDUwMDsKLSAgICAgICAgICAgICAgICBpZiAoREVCVUdfSU5QVVQpIFNsb2cudihUQUcsICJhcHBTd2l0Y2hDb21pbmc6ICIgKyBub3cpOwotICAgICAgICAgICAgICAgIGlmIChtVGltZVRvU3dpdGNoID09IDAgfHwgbm93IDwgbVRpbWVUb1N3aXRjaCkgewotICAgICAgICAgICAgICAgICAgICBtVGltZVRvU3dpdGNoID0gbm93OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBub3RpZnlBbGwoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHByaXZhdGUgZmluYWwgdm9pZCBkb0ZpbmlzaGVkS2V5TG9ja2VkKGJvb2xlYW4gZm9yY2UpIHsKLSAgICAgICAgICAgIGlmIChtTGFzdFdpbiAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgcmVsZWFzZVBlbmRpbmdQb2ludGVyTG9ja2VkKG1MYXN0V2luLm1TZXNzaW9uKTsKLSAgICAgICAgICAgICAgICByZWxlYXNlUGVuZGluZ1RyYWNrYmFsbExvY2tlZChtTGFzdFdpbi5tU2Vzc2lvbik7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChmb3JjZSB8fCBtTGFzdFdpbiA9PSBudWxsIHx8ICFtTGFzdFdpbi5tVG9rZW4ucGF1c2VkCi0gICAgICAgICAgICAgICAgICAgIHx8ICFtTGFzdFdpbi5pc1Zpc2libGVMdygpKSB7Ci0gICAgICAgICAgICAgICAgLy8gSWYgdGhlIGN1cnJlbnQgd2luZG93IGhhcyBiZWVuIHBhdXNlZCwgd2UgYXJlbid0IC1yZWFsbHktCi0gICAgICAgICAgICAgICAgLy8gZmluaXNoZWQuLi4gIHNvIGxldCB0aGUgd2FpdGVycyBzdGlsbCB3YWl0LgotICAgICAgICAgICAgICAgIG1MYXN0V2luID0gbnVsbDsKLSAgICAgICAgICAgICAgICBtTGFzdEJpbmRlciA9IG51bGw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBtRmluaXNoZWQgPSB0cnVlOwotICAgICAgICAgICAgbm90aWZ5QWxsKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwcml2YXRlIGNsYXNzIEtleVEgZXh0ZW5kcyBLZXlJbnB1dFF1ZXVlCi0gICAgICAgICAgICBpbXBsZW1lbnRzIEtleUlucHV0UXVldWUuRmlsdGVyQ2FsbGJhY2sgewotICAgICAgICBQb3dlck1hbmFnZXIuV2FrZUxvY2sgbUhvbGRpbmdTY3JlZW47Ci0KLSAgICAgICAgS2V5USgpIHsKLSAgICAgICAgICAgIHN1cGVyKG1Db250ZXh0LCBXaW5kb3dNYW5hZ2VyU2VydmljZS50aGlzKTsKLSAgICAgICAgICAgIFBvd2VyTWFuYWdlciBwbSA9IChQb3dlck1hbmFnZXIpbUNvbnRleHQuZ2V0U3lzdGVtU2VydmljZShDb250ZXh0LlBPV0VSX1NFUlZJQ0UpOwotICAgICAgICAgICAgbUhvbGRpbmdTY3JlZW4gPSBwbS5uZXdXYWtlTG9jayhQb3dlck1hbmFnZXIuU0NSRUVOX0JSSUdIVF9XQUtFX0xPQ0ssCi0gICAgICAgICAgICAgICAgICAgICJLRUVQX1NDUkVFTl9PTl9GTEFHIik7Ci0gICAgICAgICAgICBtSG9sZGluZ1NjcmVlbi5zZXRSZWZlcmVuY2VDb3VudGVkKGZhbHNlKTsKLSAgICAgICAgfQotCi0gICAgICAgIEBPdmVycmlkZQotICAgICAgICBib29sZWFuIHByZXByb2Nlc3NFdmVudChJbnB1dERldmljZSBkZXZpY2UsIFJhd0lucHV0RXZlbnQgZXZlbnQpIHsKLSAgICAgICAgICAgIGlmIChtUG9saWN5LnByZXByb2Nlc3NJbnB1dEV2ZW50VHEoZXZlbnQpKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHN3aXRjaCAoZXZlbnQudHlwZSkgewotICAgICAgICAgICAgICAgIGNhc2UgUmF3SW5wdXRFdmVudC5FVl9LRVk6IHsKLSAgICAgICAgICAgICAgICAgICAgLy8gWFhYIGJlZ2luIGhhY2sKLSAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQua2V5Y29kZSA9PSBLZXlFdmVudC5LRVlDT0RFX0cpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXZlbnQudmFsdWUgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBHIGRvd24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVBvbGljeS5zY3JlZW5UdXJuZWRPZmYoV2luZG93TWFuYWdlclBvbGljeS5PRkZfQkVDQVVTRV9PRl9VU0VSKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LmtleWNvZGUgPT0gS2V5RXZlbnQuS0VZQ09ERV9EKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LnZhbHVlICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9kdW1wKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAvLyBYWFggZW5kIGhhY2sKLQotICAgICAgICAgICAgICAgICAgICBib29sZWFuIHNjcmVlbklzT2ZmID0gIW1Qb3dlck1hbmFnZXIuaXNTY3JlZW5PbigpOwotICAgICAgICAgICAgICAgICAgICBib29sZWFuIHNjcmVlbklzRGltID0gIW1Qb3dlck1hbmFnZXIuaXNTY3JlZW5CcmlnaHQoKTsKLSAgICAgICAgICAgICAgICAgICAgaW50IGFjdGlvbnMgPSBtUG9saWN5LmludGVyY2VwdEtleVRxKGV2ZW50LCAhc2NyZWVuSXNPZmYpOwotCi0gICAgICAgICAgICAgICAgICAgIGlmICgoYWN0aW9ucyAmIFdpbmRvd01hbmFnZXJQb2xpY3kuQUNUSU9OX0dPX1RPX1NMRUVQKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtUG93ZXJNYW5hZ2VyLmdvVG9TbGVlcChldmVudC53aGVuKTsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGlmIChzY3JlZW5Jc09mZikgewotICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuZmxhZ3MgfD0gV2luZG93TWFuYWdlclBvbGljeS5GTEFHX1dPS0VfSEVSRTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAoc2NyZWVuSXNEaW0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LmZsYWdzIHw9IFdpbmRvd01hbmFnZXJQb2xpY3kuRkxBR19CUklHSFRfSEVSRTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAoKGFjdGlvbnMgJiBXaW5kb3dNYW5hZ2VyUG9saWN5LkFDVElPTl9QT0tFX1VTRVJfQUNUSVZJVFkpICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1Qb3dlck1hbmFnZXIudXNlckFjdGl2aXR5KGV2ZW50LndoZW4sIGZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhbFBvd2VyTWFuYWdlci5CVVRUT05fRVZFTlQsIGZhbHNlKTsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGlmICgoYWN0aW9ucyAmIFdpbmRvd01hbmFnZXJQb2xpY3kuQUNUSU9OX1BBU1NfVE9fVVNFUikgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGV2ZW50LnZhbHVlICE9IDAgJiYgbVBvbGljeS5pc0FwcFN3aXRjaEtleVRxVGlMd0xpKGV2ZW50LmtleWNvZGUpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsdGVyUXVldWUodGhpcyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbUtleVdhaXRlci5hcHBTd2l0Y2hDb21pbmcoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgY2FzZSBSYXdJbnB1dEV2ZW50LkVWX1JFTDogewotICAgICAgICAgICAgICAgICAgICBib29sZWFuIHNjcmVlbklzT2ZmID0gIW1Qb3dlck1hbmFnZXIuaXNTY3JlZW5PbigpOwotICAgICAgICAgICAgICAgICAgICBib29sZWFuIHNjcmVlbklzRGltID0gIW1Qb3dlck1hbmFnZXIuaXNTY3JlZW5CcmlnaHQoKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNjcmVlbklzT2ZmKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIW1Qb2xpY3kuaXNXYWtlUmVsTW92ZW1lbnRUcShldmVudC5kZXZpY2VJZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWNlLmNsYXNzZXMsIGV2ZW50KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vU2xvZy5pKFRBRywgImRyb3BwaW5nIGJlY2F1c2Ugc2NyZWVuSXNPZmYgYW5kICFpc1dha2VLZXkiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBldmVudC5mbGFncyB8PSBXaW5kb3dNYW5hZ2VyUG9saWN5LkZMQUdfV09LRV9IRVJFOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzY3JlZW5Jc0RpbSkgewotICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuZmxhZ3MgfD0gV2luZG93TWFuYWdlclBvbGljeS5GTEFHX0JSSUdIVF9IRVJFOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGNhc2UgUmF3SW5wdXRFdmVudC5FVl9BQlM6IHsKLSAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBzY3JlZW5Jc09mZiA9ICFtUG93ZXJNYW5hZ2VyLmlzU2NyZWVuT24oKTsKLSAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiBzY3JlZW5Jc0RpbSA9ICFtUG93ZXJNYW5hZ2VyLmlzU2NyZWVuQnJpZ2h0KCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzY3JlZW5Jc09mZikgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFtUG9saWN5LmlzV2FrZUFic01vdmVtZW50VHEoZXZlbnQuZGV2aWNlSWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZS5jbGFzc2VzLCBldmVudCkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL1Nsb2cuaShUQUcsICJkcm9wcGluZyBiZWNhdXNlIHNjcmVlbklzT2ZmIGFuZCAhaXNXYWtlS2V5Iik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuZmxhZ3MgfD0gV2luZG93TWFuYWdlclBvbGljeS5GTEFHX1dPS0VfSEVSRTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAoc2NyZWVuSXNEaW0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50LmZsYWdzIHw9IFdpbmRvd01hbmFnZXJQb2xpY3kuRkxBR19CUklHSFRfSEVSRTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHB1YmxpYyBpbnQgZmlsdGVyRXZlbnQoUXVldWVkRXZlbnQgZXYpIHsKLSAgICAgICAgICAgIHN3aXRjaCAoZXYuY2xhc3NUeXBlKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBSYXdJbnB1dEV2ZW50LkNMQVNTX0tFWUJPQVJEOgotICAgICAgICAgICAgICAgICAgICBLZXlFdmVudCBrZSA9IChLZXlFdmVudClldi5ldmVudDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKG1Qb2xpY3kuaXNNb3ZlbWVudEtleVRpKGtlLmdldEtleUNvZGUoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsICJEcm9wcGluZyBtb3ZlbWVudCBrZXkgZHVyaW5nIGFwcCBzd2l0Y2g6ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBrZS5nZXRLZXlDb2RlKCkgKyAiLCBhY3Rpb249IiArIGtlLmdldEFjdGlvbigpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGSUxURVJfUkVNT1ZFOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBGSUxURVJfQUJPUlQ7Ci0gICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZJTFRFUl9LRUVQOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLyoqCi0gICAgICAgICAqIE11c3QgYmUgY2FsbGVkIHdpdGggdGhlIG1haW4gd2luZG93IG1hbmFnZXIgbG9jayBoZWxkLgotICAgICAgICAgKi8KLSAgICAgICAgdm9pZCBzZXRIb2xkU2NyZWVuTG9ja2VkKGJvb2xlYW4gaG9sZGluZykgewotICAgICAgICAgICAgYm9vbGVhbiBzdGF0ZSA9IG1Ib2xkaW5nU2NyZWVuLmlzSGVsZCgpOwotICAgICAgICAgICAgaWYgKGhvbGRpbmcgIT0gc3RhdGUpIHsKLSAgICAgICAgICAgICAgICBpZiAoaG9sZGluZykgewotICAgICAgICAgICAgICAgICAgICBtSG9sZGluZ1NjcmVlbi5hY3F1aXJlKCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgbVBvbGljeS5zY3JlZW5PblN0b3BwZWRMdygpOwotICAgICAgICAgICAgICAgICAgICBtSG9sZGluZ1NjcmVlbi5yZWxlYXNlKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCiAgICAgcHVibGljIGJvb2xlYW4gZGV0ZWN0U2FmZU1vZGUoKSB7CiAgICAgICAgIG1TYWZlTW9kZSA9IG1Qb2xpY3kuZGV0ZWN0U2FmZU1vZGUoKTsKICAgICAgICAgcmV0dXJuIG1TYWZlTW9kZTsKQEAgLTY0NjcsMjAyICs1NDQ0LDYgQEAKICAgICAgICAgbVBvbGljeS5zeXN0ZW1SZWFkeSgpOwogICAgIH0KIAotICAgIHByaXZhdGUgZmluYWwgY2xhc3MgSW5wdXREaXNwYXRjaGVyVGhyZWFkIGV4dGVuZHMgVGhyZWFkIHsKLSAgICAgICAgLy8gVGltZSB0byB3YWl0IHdoZW4gdGhlcmUgaXMgbm90aGluZyB0byBkbzogOTk5OSBzZWNvbmRzLgotICAgICAgICBzdGF0aWMgZmluYWwgaW50IExPTkdfV0FJVD05OTk5KjEwMDA7Ci0KLSAgICAgICAgcHVibGljIElucHV0RGlzcGF0Y2hlclRocmVhZCgpIHsKLSAgICAgICAgICAgIHN1cGVyKCJJbnB1dERpc3BhdGNoZXIiKTsKLSAgICAgICAgfQotCi0gICAgICAgIEBPdmVycmlkZQotICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7Ci0gICAgICAgICAgICB3aGlsZSAodHJ1ZSkgewotICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIHByb2Nlc3MoKTsKLSAgICAgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgICAgICBTbG9nLmUoVEFHLCAiRXhjZXB0aW9uIGluIGlucHV0IGRpc3BhdGNoZXIiLCBlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBwcml2YXRlIHZvaWQgcHJvY2VzcygpIHsKLSAgICAgICAgICAgIGFuZHJvaWQub3MuUHJvY2Vzcy5zZXRUaHJlYWRQcmlvcml0eSgKLSAgICAgICAgICAgICAgICAgICAgYW5kcm9pZC5vcy5Qcm9jZXNzLlRIUkVBRF9QUklPUklUWV9VUkdFTlRfRElTUExBWSk7Ci0KLSAgICAgICAgICAgIC8vIFRoZSBsYXN0IGtleSBldmVudCB3ZSBzYXcKLSAgICAgICAgICAgIEtleUV2ZW50IGxhc3RLZXkgPSBudWxsOwotCi0gICAgICAgICAgICAvLyBMYXN0IGtleWRvd24gdGltZSBmb3IgYXV0by1yZXBlYXRpbmcga2V5cwotICAgICAgICAgICAgbG9uZyBsYXN0S2V5VGltZSA9IFN5c3RlbUNsb2NrLnVwdGltZU1pbGxpcygpOwotICAgICAgICAgICAgbG9uZyBuZXh0S2V5VGltZSA9IGxhc3RLZXlUaW1lK0xPTkdfV0FJVDsKLSAgICAgICAgICAgIGxvbmcgZG93blRpbWUgPSAwOwotCi0gICAgICAgICAgICAvLyBIb3cgbWFueSBzdWNjZXNzaXZlIHJlcGVhdHMgd2UgZ2VuZXJhdGVkCi0gICAgICAgICAgICBpbnQga2V5UmVwZWF0Q291bnQgPSAwOwotCi0gICAgICAgICAgICAvLyBOZWVkIHRvIHJlcG9ydCB0aGF0IGNvbmZpZ3VyYXRpb24gaGFzIGNoYW5nZWQ/Ci0gICAgICAgICAgICBib29sZWFuIGNvbmZpZ0NoYW5nZWQgPSBmYWxzZTsKLQotICAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICAgICAgICBsb25nIGN1clRpbWUgPSBTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKTsKLQotICAgICAgICAgICAgICAgIGlmIChERUJVR19JTlBVVCkgU2xvZy52KAotICAgICAgICAgICAgICAgICAgICBUQUcsICJXYWl0aW5nIGZvciBuZXh0IGtleTogbm93PSIgKyBjdXJUaW1lCi0gICAgICAgICAgICAgICAgICAgICsgIiwgcmVwZWF0IEAgIiArIG5leHRLZXlUaW1lKTsKLQotICAgICAgICAgICAgICAgIC8vIFJldHJpZXZlIG5leHQgZXZlbnQsIHdhaXRpbmcgb25seSBhcyBsb25nIGFzIHRoZSBuZXh0Ci0gICAgICAgICAgICAgICAgLy8gcmVwZWF0IHRpbWVvdXQuICBJZiB0aGUgY29uZmlndXJhdGlvbiBoYXMgY2hhbmdlZCwgdGhlbgotICAgICAgICAgICAgICAgIC8vIGRvbid0IHdhaXQgYXQgYWxsIC0tIHdlJ2xsIHJlcG9ydCB0aGUgY2hhbmdlIGFzIHNvb24gYXMKLSAgICAgICAgICAgICAgICAvLyB3ZSBoYXZlIHByb2Nlc3NlZCBhbGwgZXZlbnRzLgotICAgICAgICAgICAgICAgIFF1ZXVlZEV2ZW50IGV2ID0gbVF1ZXVlLmdldEV2ZW50KAotICAgICAgICAgICAgICAgICAgICAoaW50KSgoIWNvbmZpZ0NoYW5nZWQgJiYgY3VyVGltZSA8IG5leHRLZXlUaW1lKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gKG5leHRLZXlUaW1lLWN1clRpbWUpIDogMCkpOwotCi0gICAgICAgICAgICAgICAgaWYgKERFQlVHX0lOUFVUICYmIGV2ICE9IG51bGwpIFNsb2cudigKLSAgICAgICAgICAgICAgICAgICAgICAgIFRBRywgIkV2ZW50OiB0eXBlPSIgKyBldi5jbGFzc1R5cGUgKyAiIGRhdGE9IiArIGV2LmV2ZW50KTsKLQotICAgICAgICAgICAgICAgIGlmIChNRUFTVVJFX0xBVEVOQ1kpIHsKLSAgICAgICAgICAgICAgICAgICAgbHQuc2FtcGxlKCIyIGdvdCBldmVudCAgICAgICAgICAgICAgIiwgU3lzdGVtLm5hbm9UaW1lKCkgLSBldi53aGVuTmFubyk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKGxhc3RLZXkgIT0gbnVsbCAmJiAhbVBvbGljeS5hbGxvd0tleVJlcGVhdCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIGNhbmNlbCBrZXkgcmVwZWF0IGF0IHRoZSByZXF1ZXN0IG9mIHRoZSBwb2xpY3kuCi0gICAgICAgICAgICAgICAgICAgIGxhc3RLZXkgPSBudWxsOwotICAgICAgICAgICAgICAgICAgICBkb3duVGltZSA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIGxhc3RLZXlUaW1lID0gY3VyVGltZTsKLSAgICAgICAgICAgICAgICAgICAgbmV4dEtleVRpbWUgPSBjdXJUaW1lICsgTE9OR19XQUlUOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICBpZiAoZXYgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgY3VyVGltZSA9IFN5c3RlbUNsb2NrLnVwdGltZU1pbGxpcygpOwotICAgICAgICAgICAgICAgICAgICAgICAgaW50IGV2ZW50VHlwZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldi5jbGFzc1R5cGUgPT0gUmF3SW5wdXRFdmVudC5DTEFTU19UT1VDSFNDUkVFTikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50VHlwZSA9IGV2ZW50VHlwZSgoTW90aW9uRXZlbnQpZXYuZXZlbnQpOwotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChldi5jbGFzc1R5cGUgPT0gUmF3SW5wdXRFdmVudC5DTEFTU19LRVlCT0FSRCB8fAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXYuY2xhc3NUeXBlID09IFJhd0lucHV0RXZlbnQuQ0xBU1NfVFJBQ0tCQUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnRUeXBlID0gTG9jYWxQb3dlck1hbmFnZXIuQlVUVE9OX0VWRU5UOwotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudFR5cGUgPSBMb2NhbFBvd2VyTWFuYWdlci5PVEhFUl9FVkVOVDsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChjdXJUaW1lIC0gbUxhc3RCYXR0ZXJ5U3RhdHNDYWxsVGltZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID49IE1JTl9USU1FX0JFVFdFRU5fVVNFUkFDVElWSVRJRVMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUxhc3RCYXR0ZXJ5U3RhdHNDYWxsVGltZSA9IGN1clRpbWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1CYXR0ZXJ5U3RhdHMubm90ZUlucHV0RXZlbnQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElnbm9yZQotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXYuY2xhc3NUeXBlID09IFJhd0lucHV0RXZlbnQuQ0xBU1NfQ09ORklHVVJBVElPTl9DSEFOR0VEKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG8gbm90IHdha2Ugc2NyZWVuIGluIHRoaXMgY2FzZQotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChldmVudFR5cGUgIT0gVE9VQ0hfRVZFTlQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgZXZlbnRUeXBlICE9IExPTkdfVE9VQ0hfRVZFTlQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgZXZlbnRUeXBlICE9IENIRUVLX0VWRU5UKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbVBvd2VyTWFuYWdlci51c2VyQWN0aXZpdHkoY3VyVGltZSwgZmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudFR5cGUsIGZhbHNlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobUxhc3RUb3VjaEV2ZW50VHlwZSAhPSBldmVudFR5cGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgKGN1clRpbWUgLSBtTGFzdFVzZXJBY3Rpdml0eUNhbGxUaW1lKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA+PSBNSU5fVElNRV9CRVRXRUVOX1VTRVJBQ1RJVklUSUVTKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbUxhc3RVc2VyQWN0aXZpdHlDYWxsVGltZSA9IGN1clRpbWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbUxhc3RUb3VjaEV2ZW50VHlwZSA9IGV2ZW50VHlwZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtUG93ZXJNYW5hZ2VyLnVzZXJBY3Rpdml0eShjdXJUaW1lLCBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV2ZW50VHlwZSwgZmFsc2UpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGV2LmNsYXNzVHlwZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgUmF3SW5wdXRFdmVudC5DTEFTU19LRVlCT0FSRDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgS2V5RXZlbnQga2UgPSAoS2V5RXZlbnQpZXYuZXZlbnQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrZS5pc0Rvd24oKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEtleSA9IGtlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG93blRpbWUgPSBjdXJUaW1lOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5UmVwZWF0Q291bnQgPSAwOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEtleVRpbWUgPSBjdXJUaW1lOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dEtleVRpbWUgPSBsYXN0S2V5VGltZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIFZpZXdDb25maWd1cmF0aW9uLmdldExvbmdQcmVzc1RpbWVvdXQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19JTlBVVCkgU2xvZy52KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRBRywgIlJlY2VpdmVkIGtleSBkb3duOiBmaXJzdCByZXBlYXQgQCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBuZXh0S2V5VGltZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0S2V5ID0gbnVsbDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvd25UaW1lID0gMDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFyYml0cmFyeSBsb25nIHRpbWVvdXQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0S2V5VGltZSA9IGN1clRpbWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0S2V5VGltZSA9IGN1clRpbWUgKyBMT05HX1dBSVQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfSU5QVVQpIFNsb2cudigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQUcsICJSZWNlaXZlZCBrZXkgdXA6IGlnbm9yZSByZXBlYXQgQCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBuZXh0S2V5VGltZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2hLZXkoKEtleUV2ZW50KWV2LmV2ZW50LCAwLCAwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVF1ZXVlLnJlY3ljbGVFdmVudChldik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgUmF3SW5wdXRFdmVudC5DTEFTU19UT1VDSFNDUkVFTjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9TbG9nLmkoVEFHLCAiUmVhZCBuZXh0IGV2ZW50ICIgKyBldik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoUG9pbnRlcihldiwgKE1vdGlvbkV2ZW50KWV2LmV2ZW50LCAwLCAwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBSYXdJbnB1dEV2ZW50LkNMQVNTX1RSQUNLQkFMTDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2hUcmFja2JhbGwoZXYsIChNb3Rpb25FdmVudClldi5ldmVudCwgMCwgMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgUmF3SW5wdXRFdmVudC5DTEFTU19DT05GSUdVUkFUSU9OX0NIQU5HRUQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ0NoYW5nZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtUXVldWUucmVjeWNsZUV2ZW50KGV2KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNvbmZpZ0NoYW5nZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ0NoYW5nZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbmROZXdDb25maWd1cmF0aW9uKCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChsYXN0S2V5ICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGN1clRpbWUgPSBTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGltZW91dCBvY2N1cnJlZCB3aGlsZSBrZXkgd2FzIGRvd24uICBJZiBpdCBpcyBhdCBvcgotICAgICAgICAgICAgICAgICAgICAgICAgLy8gcGFzdCB0aGUga2V5IHJlcGVhdCB0aW1lLCBkaXNwYXRjaCB0aGUgcmVwZWF0LgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX0lOUFVUKSBTbG9nLnYoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgVEFHLCAiS2V5IHRpbWVvdXQ6IHJlcGVhdD0iICsgbmV4dEtleVRpbWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIsIG5vdz0iICsgY3VyVGltZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoY3VyVGltZSA8IG5leHRLZXlUaW1lKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RLZXlUaW1lID0gbmV4dEtleVRpbWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXh0S2V5VGltZSA9IG5leHRLZXlUaW1lICsgS0VZX1JFUEVBVF9ERUxBWTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGtleVJlcGVhdENvdW50Kys7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfSU5QVVQpIFNsb2cudigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQUcsICJLZXkgcmVwZWF0OiBjb3VudD0iICsga2V5UmVwZWF0Q291bnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIsIG5leHQgQCAiICsgbmV4dEtleVRpbWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgS2V5RXZlbnQgbmV3RXZlbnQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZG93blRpbWUgIT0gMCAmJiAoZG93blRpbWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBWaWV3Q29uZmlndXJhdGlvbi5nZXRMb25nUHJlc3NUaW1lb3V0KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDw9IGN1clRpbWUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdFdmVudCA9IEtleUV2ZW50LmNoYW5nZVRpbWVSZXBlYXQobGFzdEtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1clRpbWUsIGtleVJlcGVhdENvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdEtleS5nZXRGbGFncygpIHwgS2V5RXZlbnQuRkxBR19MT05HX1BSRVNTKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb3duVGltZSA9IDA7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld0V2ZW50ID0gS2V5RXZlbnQuY2hhbmdlVGltZVJlcGVhdChsYXN0S2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyVGltZSwga2V5UmVwZWF0Q291bnQpOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2hLZXkobmV3RXZlbnQsIDAsIDApOwotCi0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjdXJUaW1lID0gU3lzdGVtQ2xvY2sudXB0aW1lTWlsbGlzKCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RLZXlUaW1lID0gY3VyVGltZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG5leHRLZXlUaW1lID0gY3VyVGltZSArIExPTkdfV0FJVDsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICAgICAgU2xvZy5lKFRBRywKLSAgICAgICAgICAgICAgICAgICAgICAgICJJbnB1dCB0aHJlYWQgcmVjZWl2ZWQgdW5jYXVnaHQgZXhjZXB0aW9uOiAiICsgZSwgZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCiAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgIC8vIENsaWVudCBTZXNzaW9uIFN0YXRlCiAgICAgLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNjY3OCwyMCArNTQ1OSw2IEBACiAgICAgICAgIGludCBtTnVtV2luZG93ID0gMDsKICAgICAgICAgYm9vbGVhbiBtQ2xpZW50RGVhZCA9IGZhbHNlOwogCi0gICAgICAgIC8qKgotICAgICAgICAgKiBDdXJyZW50IHBvaW50ZXIgbW92ZSBldmVudCBiZWluZyBkaXNwYXRjaGVkIHRvIGNsaWVudCB3aW5kb3cuLi4gIG11c3QKLSAgICAgICAgICogaG9sZCBrZXkgbG9jayB0byBhY2Nlc3MuCi0gICAgICAgICAqLwotICAgICAgICBRdWV1ZWRFdmVudCBtUGVuZGluZ1BvaW50ZXJNb3ZlOwotICAgICAgICBXaW5kb3dTdGF0ZSBtUGVuZGluZ1BvaW50ZXJXaW5kb3c7Ci0KLSAgICAgICAgLyoqCi0gICAgICAgICAqIEN1cnJlbnQgdHJhY2tiYWxsIG1vdmUgZXZlbnQgYmVpbmcgZGlzcGF0Y2hlZCB0byBjbGllbnQgd2luZG93Li4uICBtdXN0Ci0gICAgICAgICAqIGhvbGQga2V5IGxvY2sgdG8gYWNjZXNzLgotICAgICAgICAgKi8KLSAgICAgICAgUXVldWVkRXZlbnQgbVBlbmRpbmdUcmFja2JhbGxNb3ZlOwotICAgICAgICBXaW5kb3dTdGF0ZSBtUGVuZGluZ1RyYWNrYmFsbFdpbmRvdzsKLQogICAgICAgICBwdWJsaWMgU2Vzc2lvbihJSW5wdXRNZXRob2RDbGllbnQgY2xpZW50LCBJSW5wdXRDb250ZXh0IGlucHV0Q29udGV4dCkgewogICAgICAgICAgICAgbUNsaWVudCA9IGNsaWVudDsKICAgICAgICAgICAgIG1JbnB1dENvbnRleHQgPSBpbnB1dENvbnRleHQ7CkBAIC02NzY3LDggKzU1MzQsMTQgQEAKICAgICAgICAgfQogCiAgICAgICAgIHB1YmxpYyBpbnQgYWRkKElXaW5kb3cgd2luZG93LCBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcyBhdHRycywKKyAgICAgICAgICAgICAgICBpbnQgdmlld1Zpc2liaWxpdHksIFJlY3Qgb3V0Q29udGVudEluc2V0cywgSW5wdXRDaGFubmVsIG91dElucHV0Q2hhbm5lbCkgeworICAgICAgICAgICAgcmV0dXJuIGFkZFdpbmRvdyh0aGlzLCB3aW5kb3csIGF0dHJzLCB2aWV3VmlzaWJpbGl0eSwgb3V0Q29udGVudEluc2V0cywKKyAgICAgICAgICAgICAgICAgICAgb3V0SW5wdXRDaGFubmVsKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcHVibGljIGludCBhZGRXaXRob3V0SW5wdXRDaGFubmVsKElXaW5kb3cgd2luZG93LCBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcyBhdHRycywKICAgICAgICAgICAgICAgICBpbnQgdmlld1Zpc2liaWxpdHksIFJlY3Qgb3V0Q29udGVudEluc2V0cykgewotICAgICAgICAgICAgcmV0dXJuIGFkZFdpbmRvdyh0aGlzLCB3aW5kb3csIGF0dHJzLCB2aWV3VmlzaWJpbGl0eSwgb3V0Q29udGVudEluc2V0cyk7CisgICAgICAgICAgICByZXR1cm4gYWRkV2luZG93KHRoaXMsIHdpbmRvdywgYXR0cnMsIHZpZXdWaXNpYmlsaXR5LCBvdXRDb250ZW50SW5zZXRzLCBudWxsKTsKICAgICAgICAgfQogCiAgICAgICAgIHB1YmxpYyB2b2lkIHJlbW92ZShJV2luZG93IHdpbmRvdykgewpAQCAtNjgwNCwyNyArNTU3Nyw2IEBACiAgICAgICAgICAgICBmaW5pc2hEcmF3aW5nV2luZG93KHRoaXMsIHdpbmRvdyk7CiAgICAgICAgIH0KIAotICAgICAgICBwdWJsaWMgdm9pZCBmaW5pc2hLZXkoSVdpbmRvdyB3aW5kb3cpIHsKLSAgICAgICAgICAgIGlmIChsb2NhbExPR1YpIFNsb2cudigKLSAgICAgICAgICAgICAgICBUQUcsICJJV2luZG93IGZpbmlzaEtleSBjYWxsZWQgZm9yICIgKyB3aW5kb3cpOwotICAgICAgICAgICAgbUtleVdhaXRlci5maW5pc2hlZEtleSh0aGlzLCB3aW5kb3csIGZhbHNlLAotICAgICAgICAgICAgICAgICAgICBLZXlXYWl0ZXIuUkVUVVJOX05PVEhJTkcpOwotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIE1vdGlvbkV2ZW50IGdldFBlbmRpbmdQb2ludGVyTW92ZShJV2luZG93IHdpbmRvdykgewotICAgICAgICAgICAgaWYgKGxvY2FsTE9HVikgU2xvZy52KAotICAgICAgICAgICAgICAgICAgICBUQUcsICJJV2luZG93IGdldFBlbmRpbmdNb3Rpb25FdmVudCBjYWxsZWQgZm9yICIgKyB3aW5kb3cpOwotICAgICAgICAgICAgcmV0dXJuIG1LZXlXYWl0ZXIuZmluaXNoZWRLZXkodGhpcywgd2luZG93LCBmYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgS2V5V2FpdGVyLlJFVFVSTl9QRU5ESU5HX1BPSU5URVIpOwotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIE1vdGlvbkV2ZW50IGdldFBlbmRpbmdUcmFja2JhbGxNb3ZlKElXaW5kb3cgd2luZG93KSB7Ci0gICAgICAgICAgICBpZiAobG9jYWxMT0dWKSBTbG9nLnYoCi0gICAgICAgICAgICAgICAgICAgIFRBRywgIklXaW5kb3cgZ2V0UGVuZGluZ01vdGlvbkV2ZW50IGNhbGxlZCBmb3IgIiArIHdpbmRvdyk7Ci0gICAgICAgICAgICByZXR1cm4gbUtleVdhaXRlci5maW5pc2hlZEtleSh0aGlzLCB3aW5kb3csIGZhbHNlLAotICAgICAgICAgICAgICAgICAgICBLZXlXYWl0ZXIuUkVUVVJOX1BFTkRJTkdfVFJBQ0tCQUxMKTsKLSAgICAgICAgfQotCiAgICAgICAgIHB1YmxpYyB2b2lkIHNldEluVG91Y2hNb2RlKGJvb2xlYW4gbW9kZSkgewogICAgICAgICAgICAgc3luY2hyb25pemVkKG1XaW5kb3dNYXApIHsKICAgICAgICAgICAgICAgICBtSW5Ub3VjaE1vZGUgPSBtb2RlOwpAQCAtNjkyOCwxNiArNTY4MCw2IEBACiAgICAgICAgICAgICBwdy5wcmludChwcmVmaXgpOyBwdy5wcmludCgibU51bVdpbmRvdz0iKTsgcHcucHJpbnQobU51bVdpbmRvdyk7CiAgICAgICAgICAgICAgICAgICAgIHB3LnByaW50KCIgbUNsaWVudERlYWQ9Iik7IHB3LnByaW50KG1DbGllbnREZWFkKTsKICAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoIiBtU3VyZmFjZVNlc3Npb249Iik7IHB3LnByaW50bG4obVN1cmZhY2VTZXNzaW9uKTsKLSAgICAgICAgICAgIGlmIChtUGVuZGluZ1BvaW50ZXJXaW5kb3cgIT0gbnVsbCB8fCBtUGVuZGluZ1BvaW50ZXJNb3ZlICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBwdy5wcmludChwcmVmaXgpOwotICAgICAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoIm1QZW5kaW5nUG9pbnRlcldpbmRvdz0iKTsgcHcucHJpbnQobVBlbmRpbmdQb2ludGVyV2luZG93KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB3LnByaW50KCIgbVBlbmRpbmdQb2ludGVyTW92ZT0iKTsgcHcucHJpbnRsbihtUGVuZGluZ1BvaW50ZXJNb3ZlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChtUGVuZGluZ1RyYWNrYmFsbFdpbmRvdyAhPSBudWxsIHx8IG1QZW5kaW5nVHJhY2tiYWxsTW92ZSAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgcHcucHJpbnQocHJlZml4KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB3LnByaW50KCJtUGVuZGluZ1RyYWNrYmFsbFdpbmRvdz0iKTsgcHcucHJpbnQobVBlbmRpbmdUcmFja2JhbGxXaW5kb3cpOwotICAgICAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoIiBtUGVuZGluZ1RyYWNrYmFsbE1vdmU9Iik7IHB3LnByaW50bG4obVBlbmRpbmdUcmFja2JhbGxNb3ZlKTsKLSAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIEBPdmVycmlkZQpAQCAtNjk4OCw4ICs1NzMwLDYgQEAKICAgICAgICAgYm9vbGVhbiBtT2JzY3VyZWQ7CiAgICAgICAgIGJvb2xlYW4gbVR1cm5PblNjcmVlbjsKIAotICAgICAgICBXaW5kb3dTdGF0ZSBtTmV4dE91dHNpZGVUb3VjaDsKLQogICAgICAgICBpbnQgbUxheW91dFNlcSA9IC0xOwogICAgICAgICAKICAgICAgICAgQ29uZmlndXJhdGlvbiBtQ29uZmlndXJhdGlvbiA9IG51bGw7CkBAIC03MTM3LDYgKzU4NzcsOSBAQAogICAgICAgICBpbnQgbVN1cmZhY2VMYXllcjsKICAgICAgICAgZmxvYXQgbVN1cmZhY2VBbHBoYTsKICAgICAgICAgCisgICAgICAgIC8vIElucHV0IGNoYW5uZWwKKyAgICAgICAgSW5wdXRDaGFubmVsIG1JbnB1dENoYW5uZWw7CisgICAgICAgIAogICAgICAgICBXaW5kb3dTdGF0ZShTZXNzaW9uIHMsIElXaW5kb3cgYywgV2luZG93VG9rZW4gdG9rZW4sCiAgICAgICAgICAgICAgICBXaW5kb3dTdGF0ZSBhdHRhY2hlZFdpbmRvdywgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMgYSwKICAgICAgICAgICAgICAgIGludCB2aWV3VmlzaWJpbGl0eSkgewpAQCAtNzM2NCw2ICs2MTA3LDEyIEBACiAgICAgICAgIHB1YmxpYyBJQXBwbGljYXRpb25Ub2tlbiBnZXRBcHBUb2tlbigpIHsKICAgICAgICAgICAgIHJldHVybiBtQXBwVG9rZW4gIT0gbnVsbCA/IG1BcHBUb2tlbi5hcHBUb2tlbiA6IG51bGw7CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHB1YmxpYyBsb25nIGdldElucHV0RGlzcGF0Y2hpbmdUaW1lb3V0TmFub3MoKSB7CisgICAgICAgICAgICByZXR1cm4gbUFwcFRva2VuICE9IG51bGwKKyAgICAgICAgICAgICAgICAgICAgPyBtQXBwVG9rZW4uaW5wdXREaXNwYXRjaGluZ1RpbWVvdXROYW5vcworICAgICAgICAgICAgICAgICAgICA6IERFRkFVTFRfSU5QVVRfRElTUEFUQ0hJTkdfVElNRU9VVF9OQU5PUzsKKyAgICAgICAgfQogCiAgICAgICAgIHB1YmxpYyBib29sZWFuIGhhc0FwcFNob3duV2luZG93cygpIHsKICAgICAgICAgICAgIHJldHVybiBtQXBwVG9rZW4gIT0gbnVsbCA/IG1BcHBUb2tlbi5maXJzdFdpbmRvd0RyYXduIDogZmFsc2U7CkBAIC03NDk3LDE0ICs2MjQ2LDYgQEAKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgZGVzdHJveVN1cmZhY2VMb2NrZWQoKSB7Ci0gICAgICAgICAgICAvLyBXaW5kb3cgaXMgbm8gbG9uZ2VyIG9uLXNjcmVlbiwgc28gY2FuIG5vIGxvbmdlciByZWNlaXZlCi0gICAgICAgICAgICAvLyBrZXkgZXZlbnRzLi4uICBpZiB3ZSB3ZXJlIHdhaXRpbmcgZm9yIGl0IHRvIGZpbmlzaAotICAgICAgICAgICAgLy8gaGFuZGxpbmcgYSBrZXkgZXZlbnQsIHRoZSB3YWl0IGlzIG92ZXIhCi0gICAgICAgICAgICBtS2V5V2FpdGVyLmZpbmlzaGVkS2V5KG1TZXNzaW9uLCBtQ2xpZW50LCB0cnVlLAotICAgICAgICAgICAgICAgICAgICBLZXlXYWl0ZXIuUkVUVVJOX05PVEhJTkcpOwotICAgICAgICAgICAgbUtleVdhaXRlci5yZWxlYXNlUGVuZGluZ1BvaW50ZXJMb2NrZWQobVNlc3Npb24pOwotICAgICAgICAgICAgbUtleVdhaXRlci5yZWxlYXNlUGVuZGluZ1RyYWNrYmFsbExvY2tlZChtU2Vzc2lvbik7Ci0KICAgICAgICAgICAgIGlmIChtQXBwVG9rZW4gIT0gbnVsbCAmJiB0aGlzID09IG1BcHBUb2tlbi5zdGFydGluZ1dpbmRvdykgewogICAgICAgICAgICAgICAgIG1BcHBUb2tlbi5zdGFydGluZ0Rpc3BsYXllZCA9IGZhbHNlOwogICAgICAgICAgICAgfQpAQCAtNzUxOSw2ICs2MjYwLDggQEAKICAgICAgICAgICAgICAgICAgICAgaS0tOwogICAgICAgICAgICAgICAgICAgICBXaW5kb3dTdGF0ZSBjID0gKFdpbmRvd1N0YXRlKW1DaGlsZFdpbmRvd3MuZ2V0KGkpOwogICAgICAgICAgICAgICAgICAgICBjLm1BdHRhY2hlZEhpZGRlbiA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBtSW5wdXRNb25pdG9yLndpbmRvd0lzQmVjb21pbmdJbnZpc2libGVMdyhjKTsKICAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgICAgICBpZiAobVJlcG9ydERlc3Ryb3lTdXJmYWNlKSB7CkBAIC03ODI2LDcgKzY1NjksMTAgQEAKICAgICAgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIkVycm9yIGhpZGluZyBzdXJmYWNlIGluICIgKyB0aGlzLCBlKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgbUxhc3RIaWRkZW4gPSB0cnVlOwotICAgICAgICAgICAgICAgIG1LZXlXYWl0ZXIucmVsZWFzZVBlbmRpbmdQb2ludGVyTG9ja2VkKG1TZXNzaW9uKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8TjsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIG1JbnB1dE1vbml0b3Iud2luZG93SXNCZWNvbWluZ0ludmlzaWJsZUx3KChXaW5kb3dTdGF0ZSltQ2hpbGRXaW5kb3dzLmdldChpKSk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgbUV4aXRpbmcgPSBmYWxzZTsKICAgICAgICAgICAgIGlmIChtUmVtb3ZlT25FeGl0KSB7CkBAIC04MTYxLDYgKzY5MDcsMTMgQEAKICAgICAgICAgICAgICAgICAvLyBJZ25vcmUgaWYgaXQgaGFzIGFscmVhZHkgYmVlbiByZW1vdmVkICh1c3VhbGx5IGJlY2F1c2UKICAgICAgICAgICAgICAgICAvLyB3ZSBhcmUgZG9pbmcgdGhpcyBhcyBwYXJ0IG9mIHByb2Nlc3NpbmcgYSBkZWF0aCBub3RlLikKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKG1JbnB1dENoYW5uZWwgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIG1JbnB1dE1hbmFnZXIudW5yZWdpc3RlcklucHV0Q2hhbm5lbChtSW5wdXRDaGFubmVsKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBtSW5wdXRDaGFubmVsLmRpc3Bvc2UoKTsKKyAgICAgICAgICAgICAgICBtSW5wdXRDaGFubmVsID0gbnVsbDsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIHByaXZhdGUgY2xhc3MgRGVhdGhSZWNpcGllbnQgaW1wbGVtZW50cyBJQmluZGVyLkRlYXRoUmVjaXBpZW50IHsKQEAgLTg0MDMsNiArNzE1NiwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoIiBtV2FsbHBhcGVyWVN0ZXA9Iik7IHB3LnByaW50bG4obVdhbGxwYXBlcllTdGVwKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgU3RyaW5nIG1ha2VJbnB1dENoYW5uZWxOYW1lKCkgeworICAgICAgICAgICAgcmV0dXJuIEludGVnZXIudG9IZXhTdHJpbmcoU3lzdGVtLmlkZW50aXR5SGFzaENvZGUodGhpcykpCisgICAgICAgICAgICAgICAgKyAiICIgKyBtQXR0cnMuZ2V0VGl0bGUoKTsKKyAgICAgICAgfQogCiAgICAgICAgIEBPdmVycmlkZQogICAgICAgICBwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgewpAQCAtODUwNSw2ICs3MjYzLDkgQEAKICAgICAgICAgaW50IGdyb3VwSWQgPSAtMTsKICAgICAgICAgYm9vbGVhbiBhcHBGdWxsc2NyZWVuOwogICAgICAgICBpbnQgcmVxdWVzdGVkT3JpZW50YXRpb24gPSBBY3Rpdml0eUluZm8uU0NSRUVOX09SSUVOVEFUSU9OX1VOU1BFQ0lGSUVEOworICAgICAgICAKKyAgICAgICAgLy8gVGhlIGlucHV0IGRpc3BhdGNoaW5nIHRpbWVvdXQgZm9yIHRoaXMgYXBwbGljYXRpb24gdG9rZW4gaW4gbmFub3NlY29uZHMuCisgICAgICAgIGxvbmcgaW5wdXREaXNwYXRjaGluZ1RpbWVvdXROYW5vczsKIAogICAgICAgICAvLyBUaGVzZSBhcmUgdXNlZCBmb3IgZGV0ZXJtaW5pbmcgd2hlbiBhbGwgd2luZG93cyBhc3NvY2lhdGVkIHdpdGgKICAgICAgICAgLy8gYW4gYWN0aXZpdHkgaGF2ZSBiZWVuIGRyYXduLCBzbyB0aGV5IGNhbiBiZSBtYWRlIHZpc2libGUgdG9nZXRoZXIKQEAgLTg3MzMsNyArNzQ5NCw4IEBACiAgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8TjsgaSsrKSB7CiAgICAgICAgICAgICAgICAgV2luZG93U3RhdGUgd2luID0gYWxsQXBwV2luZG93cy5nZXQoaSk7CiAgICAgICAgICAgICAgICAgaWYgKHdpbiA9PSBzdGFydGluZ1dpbmRvdyB8fCB3aW4ubUFwcEZyZWV6aW5nCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCB3aW4ubVZpZXdWaXNpYmlsaXR5ICE9IFZpZXcuVklTSUJMRSkgeworICAgICAgICAgICAgICAgICAgICAgICAgfHwgd2luLm1WaWV3VmlzaWJpbGl0eSAhPSBWaWV3LlZJU0lCTEUKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IHdpbi5tQXR0cnMudHlwZSA9PSBUWVBFX0FQUExJQ0FUSU9OX1NUQVJUSU5HKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoREVCVUdfVklTSUJJTElUWSkgewpAQCAtOTI1Myw3ICs4MDE1LDggQEAKICAgICAgICAgICAgIElJbnB1dENvbnRleHQgaW5wdXRDb250ZXh0KSB7CiAgICAgICAgIGlmIChjbGllbnQgPT0gbnVsbCkgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigibnVsbCBjbGllbnQiKTsKICAgICAgICAgaWYgKGlucHV0Q29udGV4dCA9PSBudWxsKSB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJudWxsIGlucHV0Q29udGV4dCIpOwotICAgICAgICByZXR1cm4gbmV3IFNlc3Npb24oY2xpZW50LCBpbnB1dENvbnRleHQpOworICAgICAgICBTZXNzaW9uIHNlc3Npb24gPSBuZXcgU2Vzc2lvbihjbGllbnQsIGlucHV0Q29udGV4dCk7CisgICAgICAgIHJldHVybiBzZXNzaW9uOwogICAgIH0KIAogICAgIHB1YmxpYyBib29sZWFuIGlucHV0TWV0aG9kQ2xpZW50SGFzRm9jdXMoSUlucHV0TWV0aG9kQ2xpZW50IGNsaWVudCkgewpAQCAtOTU2Myw2ICs4MzI2LDkgQEAKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIFdpbmRvdyBmcmFtZXMgbWF5IGhhdmUgY2hhbmdlZC4gIFRlbGwgdGhlIGlucHV0IGRpc3BhdGNoZXIgYWJvdXQgaXQuCisgICAgICAgIG1JbnB1dE1vbml0b3IudXBkYXRlSW5wdXRXaW5kb3dzTHcoKTsKIAogICAgICAgICByZXR1cm4gbVBvbGljeS5maW5pc2hMYXlvdXRMdygpOwogICAgIH0KQEAgLTEwMzYzLDcgKzkxMjksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIkV4Y2VwdGlvbiBoaWRpbmcgc3VyZmFjZSBpbiAiICsgdyk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbUtleVdhaXRlci5yZWxlYXNlUGVuZGluZ1BvaW50ZXJMb2NrZWQody5tU2Vzc2lvbik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUlucHV0TW9uaXRvci53aW5kb3dJc0JlY29taW5nSW52aXNpYmxlTHcodyk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB3ZSBhcmUgd2FpdGluZyBmb3IgdGhpcyB3aW5kb3cgdG8gaGFuZGxlIGFuCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvcmllbnRhdGlvbiBjaGFuZ2UsIHdlbGwsIGl0IGlzIGhpZGRlbiwgc28KQEAgLTEwNzUxLDcgKzk1MTcsNyBAQAogICAgICAgICBpZiAoREVCVUdfRlJFRVpFKSBTbG9nLnYoVEFHLCAiTGF5b3V0OiBtRGlzcGxheUZyb3plbj0iICsgbURpc3BsYXlGcm96ZW4KICAgICAgICAgICAgICAgICArICIgaG9sZFNjcmVlbj0iICsgaG9sZFNjcmVlbik7CiAgICAgICAgIGlmICghbURpc3BsYXlGcm96ZW4pIHsKLSAgICAgICAgICAgIG1RdWV1ZS5zZXRIb2xkU2NyZWVuTG9ja2VkKGhvbGRTY3JlZW4gIT0gbnVsbCk7CisgICAgICAgICAgICBzZXRIb2xkU2NyZWVuTG9ja2VkKGhvbGRTY3JlZW4gIT0gbnVsbCk7CiAgICAgICAgICAgICBpZiAoc2NyZWVuQnJpZ2h0bmVzcyA8IDAgfHwgc2NyZWVuQnJpZ2h0bmVzcyA+IDEuMGYpIHsKICAgICAgICAgICAgICAgICBtUG93ZXJNYW5hZ2VyLnNldFNjcmVlbkJyaWdodG5lc3NPdmVycmlkZSgtMSk7CiAgICAgICAgICAgICB9IGVsc2UgewpAQCAtMTA3ODIsNiArOTU0OCwyMSBAQAogICAgICAgICAvLyBiZSBlbmFibGVkLCBiZWNhdXNlIHRoZSB3aW5kb3cgb2JzY3VyZWQgZmxhZ3MgaGF2ZSBjaGFuZ2VkLgogICAgICAgICBlbmFibGVTY3JlZW5JZk5lZWRlZExvY2tlZCgpOwogICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBNdXN0IGJlIGNhbGxlZCB3aXRoIHRoZSBtYWluIHdpbmRvdyBtYW5hZ2VyIGxvY2sgaGVsZC4KKyAgICAgKi8KKyAgICB2b2lkIHNldEhvbGRTY3JlZW5Mb2NrZWQoYm9vbGVhbiBob2xkaW5nKSB7CisgICAgICAgIGJvb2xlYW4gc3RhdGUgPSBtSG9sZGluZ1NjcmVlbldha2VMb2NrLmlzSGVsZCgpOworICAgICAgICBpZiAoaG9sZGluZyAhPSBzdGF0ZSkgeworICAgICAgICAgICAgaWYgKGhvbGRpbmcpIHsKKyAgICAgICAgICAgICAgICBtSG9sZGluZ1NjcmVlbldha2VMb2NrLmFjcXVpcmUoKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbVBvbGljeS5zY3JlZW5PblN0b3BwZWRMdygpOworICAgICAgICAgICAgICAgIG1Ib2xkaW5nU2NyZWVuV2FrZUxvY2sucmVsZWFzZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQogCiAgICAgdm9pZCByZXF1ZXN0QW5pbWF0aW9uTG9ja2VkKGxvbmcgZGVsYXkpIHsKICAgICAgICAgaWYgKCFtQW5pbWF0aW9uUGVuZGluZykgewpAQCAtMTA5MzgsMTQgKzk3MTksMjAgQEAKICAgICAgICAgICAgICAgICAgICAgYXNzaWduTGF5ZXJzTG9ja2VkKCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAobmV3Rm9jdXMgIT0gbnVsbCAmJiBtb2RlICE9IFVQREFURV9GT0NVU19XSUxMX0FTU0lHTl9MQVlFUlMpIHsKLSAgICAgICAgICAgICAgICBtS2V5V2FpdGVyLmhhbmRsZU5ld1dpbmRvd0xvY2tlZChuZXdGb2N1cyk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChtb2RlICE9IFVQREFURV9GT0NVU19XSUxMX0FTU0lHTl9MQVlFUlMpIHsKKyAgICAgICAgICAgICAgICAvLyBJZiB3ZSBkZWZlciBhc3NpZ25pbmcgbGF5ZXJzLCB0aGVuIHRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUgZm9yCisgICAgICAgICAgICAgICAgLy8gZG9pbmcgdGhpcyBwYXJ0LgorICAgICAgICAgICAgICAgIGZpbmlzaFVwZGF0ZUZvY3VzZWRXaW5kb3dBZnRlckFzc2lnbkxheWVyc0xvY2tlZCgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHZvaWQgZmluaXNoVXBkYXRlRm9jdXNlZFdpbmRvd0FmdGVyQXNzaWduTGF5ZXJzTG9ja2VkKCkgeworICAgICAgICBtSW5wdXRNb25pdG9yLnNldElucHV0Rm9jdXNMdyhtQ3VycmVudEZvY3VzKTsKKyAgICB9CiAKICAgICBwcml2YXRlIFdpbmRvd1N0YXRlIGNvbXB1dGVGb2N1c2VkV2luZG93TG9ja2VkKCkgewogICAgICAgICBXaW5kb3dTdGF0ZSByZXN1bHQgPSBudWxsOwpAQCAtMTEwMTgsMTUgKzk4MDUsNiBAQAogCiAgICAgcHJpdmF0ZSB2b2lkIHN0YXJ0RnJlZXppbmdEaXNwbGF5TG9ja2VkKCkgewogICAgICAgICBpZiAobURpc3BsYXlGcm96ZW4pIHsKLSAgICAgICAgICAgIC8vIEZyZWV6aW5nIHRoZSBkaXNwbGF5IGFsc28gc3VzcGVuZHMga2V5IGV2ZW50IGRlbGl2ZXJ5LCB0bwotICAgICAgICAgICAgLy8ga2VlcCBldmVudHMgZnJvbSBnb2luZyBhc3RyYXkgd2hpbGUgdGhlIGRpc3BsYXkgaXMgcmVjb25maWd1cmVkLgotICAgICAgICAgICAgLy8gSWYgc29tZW9uZSBoYXMgY2hhbmdlZCBvcmllbnRhdGlvbiBhZ2FpbiB3aGlsZSB0aGUgc2NyZWVuIGlzCi0gICAgICAgICAgICAvLyBzdGlsbCBmcm96ZW4sIHRoZSBldmVudHMgd2lsbCBjb250aW51ZSB0byBiZSBibG9ja2VkIHdoaWxlIHRoZQotICAgICAgICAgICAgLy8gc3VjY2Vzc2l2ZSBvcmllbnRhdGlvbiBjaGFuZ2UgaXMgcHJvY2Vzc2VkLiAgVG8gcHJldmVudCBzcHVyaW91cwotICAgICAgICAgICAgLy8gQU5Scywgd2UgcmVzZXQgdGhlIGV2ZW50IGRpc3BhdGNoIHRpbWVvdXQgaW4gdGhpcyBjYXNlLgotICAgICAgICAgICAgc3luY2hyb25pemVkIChtS2V5V2FpdGVyKSB7Ci0gICAgICAgICAgICAgICAgbUtleVdhaXRlci5tV2FzRnJvemVuID0gdHJ1ZTsKLSAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCkBAIC0xMTA0OCw2ICs5ODI2LDkgQEAKICAgICAgICAgaWYgKERFQlVHX0ZSRUVaRSkgU2xvZy52KFRBRywgIioqKiBGUkVFWklORyBESVNQTEFZIiwgbmV3IFJ1bnRpbWVFeGNlcHRpb24oKSk7CiAgICAgICAgIAogICAgICAgICBtRGlzcGxheUZyb3plbiA9IHRydWU7CisgICAgICAgIAorICAgICAgICBtSW5wdXRNb25pdG9yLmZyZWV6ZUlucHV0RGlzcGF0Y2hpbmdMdygpOworICAgICAgICAKICAgICAgICAgaWYgKG1OZXh0QXBwVHJhbnNpdGlvbiAhPSBXaW5kb3dNYW5hZ2VyUG9saWN5LlRSQU5TSVRfVU5TRVQpIHsKICAgICAgICAgICAgIG1OZXh0QXBwVHJhbnNpdGlvbiA9IFdpbmRvd01hbmFnZXJQb2xpY3kuVFJBTlNJVF9VTlNFVDsKICAgICAgICAgICAgIG1OZXh0QXBwVHJhbnNpdGlvblBhY2thZ2UgPSBudWxsOwpAQCAtMTEwNzksMTIgKzk4NjAsNyBAQAogICAgICAgICB9CiAgICAgICAgIFN1cmZhY2UudW5mcmVlemVEaXNwbGF5KDApOwogCi0gICAgICAgIC8vIFJlc2V0IHRoZSBrZXkgZGVsaXZlcnkgdGltZW91dCBvbiB1bmZyZWV6ZSwgdG9vLiAgV2UgZm9yY2UgYSB3YWtldXAgaGVyZQotICAgICAgICAvLyB0b28gYmVjYXVzZSByZWd1bGFyIGtleSBkZWxpdmVyeSBwcm9jZXNzaW5nIHNob3VsZCByZXN1bWUgaW1tZWRpYXRlbHkuCi0gICAgICAgIHN5bmNocm9uaXplZCAobUtleVdhaXRlcikgewotICAgICAgICAgICAgbUtleVdhaXRlci5tV2FzRnJvemVuID0gdHJ1ZTsKLSAgICAgICAgICAgIG1LZXlXYWl0ZXIubm90aWZ5QWxsKCk7Ci0gICAgICAgIH0KKyAgICAgICAgbUlucHV0TW9uaXRvci50aGF3SW5wdXREaXNwYXRjaGluZ0x3KCk7CiAKICAgICAgICAgLy8gV2hpbGUgdGhlIGRpc3BsYXkgaXMgZnJvemVuIHdlIGRvbid0IHJlLWNvbXB1dGUgdGhlIG9yaWVudGF0aW9uCiAgICAgICAgIC8vIHRvIGF2b2lkIGluY29uc2lzdGVudCBzdGF0ZXMuICBIb3dldmVyLCBzb21ldGhpbmcgaW50ZXJlc3RpbmcKQEAgLTExMTE2LDggKzk4OTIsOCBAQAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgcHcucHJpbnRsbigiSW5wdXQgU3RhdGU6Iik7Ci0gICAgICAgIG1RdWV1ZS5kdW1wKHB3LCAiICAiKTsKKyAgICAgICAgcHcucHJpbnRsbigiSW5wdXQgRGlzcGF0Y2hlciBTdGF0ZToiKTsKKyAgICAgICAgbUlucHV0TWFuYWdlci5kdW1wKHB3KTsKICAgICAgICAgcHcucHJpbnRsbigiICIpOwogICAgICAgICAKICAgICAgICAgc3luY2hyb25pemVkKG1XaW5kb3dNYXApIHsKQEAgLTExMzM0LDI0ICsxMDExMCwxMyBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgcHcucHJpbnQoIiAgRGlzcGxheVdpZHRoPSIpOyBwdy5wcmludChtRGlzcGxheS5nZXRXaWR0aCgpKTsKICAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoIiBEaXNwbGF5SGVpZ2h0PSIpOyBwdy5wcmludGxuKG1EaXNwbGF5LmdldEhlaWdodCgpKTsKLSAgICAgICAgICAgIHB3LnByaW50bG4oIiAgS2V5V2FpdGVyIHN0YXRlOiIpOwotICAgICAgICAgICAgcHcucHJpbnQoIiAgICBtTGFzdFdpbj0iKTsgcHcucHJpbnQobUtleVdhaXRlci5tTGFzdFdpbik7Ci0gICAgICAgICAgICAgICAgICAgIHB3LnByaW50KCIgbUxhc3RCaW5kZXI9Iik7IHB3LnByaW50bG4obUtleVdhaXRlci5tTGFzdEJpbmRlcik7Ci0gICAgICAgICAgICBwdy5wcmludCgiICAgIG1GaW5pc2hlZD0iKTsgcHcucHJpbnQobUtleVdhaXRlci5tRmluaXNoZWQpOwotICAgICAgICAgICAgICAgICAgICBwdy5wcmludCgiIG1Hb3RGaXJzdFdpbmRvdz0iKTsgcHcucHJpbnQobUtleVdhaXRlci5tR290Rmlyc3RXaW5kb3cpOwotICAgICAgICAgICAgICAgICAgICBwdy5wcmludCgiIG1FdmVudERpc3BhdGNoaW5nPSIpOyBwdy5wcmludChtS2V5V2FpdGVyLm1FdmVudERpc3BhdGNoaW5nKTsKLSAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoIiBtVGltZVRvU3dpdGNoPSIpOyBwdy5wcmludGxuKG1LZXlXYWl0ZXIubVRpbWVUb1N3aXRjaCk7CiAgICAgICAgIH0KICAgICB9CiAKKyAgICAvLyBDYWxsZWQgYnkgdGhlIGhlYXJ0YmVhdCB0byBlbnN1cmUgbG9ja3MgYXJlIG5vdCBoZWxkIGluZGVmbml0ZWx5IChmb3IgZGVhZGxvY2sgZGV0ZWN0aW9uKS4KICAgICBwdWJsaWMgdm9pZCBtb25pdG9yKCkgewogICAgICAgICBzeW5jaHJvbml6ZWQgKG1XaW5kb3dNYXApIHsgfQogICAgICAgICBzeW5jaHJvbml6ZWQgKG1LZXlndWFyZFRva2VuV2F0Y2hlcikgeyB9Ci0gICAgICAgIHN5bmNocm9uaXplZCAobUtleVdhaXRlcikgeyB9Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgdmlydHVhbEtleUZlZWRiYWNrKEtleUV2ZW50IGV2ZW50KSB7Ci0gICAgICAgIG1Qb2xpY3kua2V5RmVlZGJhY2tGcm9tSW5wdXQoZXZlbnQpOwogICAgIH0KIAogICAgIC8qKgpAQCAtMTEzNzcsNiArMTAxNDIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJEaW1TdXJmYWNlIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtMSwgMTYsIDE2LCBQaXhlbEZvcm1hdC5PUEFRVUUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3VyZmFjZS5GWF9TVVJGQUNFX0RJTSk7CisgICAgICAgICAgICAgICAgICAgIG1EaW1TdXJmYWNlLnNldEFscGhhKDAuMGYpOwogICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CiAgICAgICAgICAgICAgICAgICAgIFNsb2cuZShUQUcsICJFeGNlcHRpb24gY3JlYXRpbmcgRGltIHN1cmZhY2UiLCBlKTsKICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9BY3Rpdml0eU1hbmFnZXJTZXJ2aWNlLmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9BY3Rpdml0eU1hbmFnZXJTZXJ2aWNlLmphdmEKaW5kZXggMGMxMTk0MC4uOTMxMjJjNCAxMDA2NDQKLS0tIGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvYW0vQWN0aXZpdHlNYW5hZ2VyU2VydmljZS5qYXZhCisrKyBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2FtL0FjdGl2aXR5TWFuYWdlclNlcnZpY2UuamF2YQpAQCAtMTYsNiArMTYsOCBAQAogCiBwYWNrYWdlIGNvbS5hbmRyb2lkLnNlcnZlci5hbTsKIAoraW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLlI7CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuYXBwLkhlYXZ5V2VpZ2h0U3dpdGNoZXJBY3Rpdml0eTsKIGltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5vcy5CYXR0ZXJ5U3RhdHNJbXBsOwogaW1wb3J0IGNvbS5hbmRyb2lkLnNlcnZlci5BdHRyaWJ1dGVDYWNoZTsKIGltcG9ydCBjb20uYW5kcm9pZC5zZXJ2ZXIuSW50ZW50UmVzb2x2ZXI7CkBAIC0yNCw2ICsyNiw3IEBACiBpbXBvcnQgY29tLmFuZHJvaWQuc2VydmVyLlN5c3RlbVNlcnZlcjsKIGltcG9ydCBjb20uYW5kcm9pZC5zZXJ2ZXIuV2F0Y2hkb2c7CiBpbXBvcnQgY29tLmFuZHJvaWQuc2VydmVyLldpbmRvd01hbmFnZXJTZXJ2aWNlOworaW1wb3J0IGNvbS5hbmRyb2lkLnNlcnZlci5hbS5BY3Rpdml0eVN0YWNrLkFjdGl2aXR5U3RhdGU7CiAKIGltcG9ydCBkYWx2aWsuc3lzdGVtLlp5Z290ZTsKIApAQCAtMzIsNiArMzUsNyBAQAogaW1wb3J0IGFuZHJvaWQuYXBwLkFjdGl2aXR5TWFuYWdlck5hdGl2ZTsKIGltcG9ydCBhbmRyb2lkLmFwcC5BY3Rpdml0eVRocmVhZDsKIGltcG9ydCBhbmRyb2lkLmFwcC5BbGVydERpYWxvZzsKK2ltcG9ydCBhbmRyb2lkLmFwcC5BcHBHbG9iYWxzOwogaW1wb3J0IGFuZHJvaWQuYXBwLkFwcGxpY2F0aW9uRXJyb3JSZXBvcnQ7CiBpbXBvcnQgYW5kcm9pZC5hcHAuRGlhbG9nOwogaW1wb3J0IGFuZHJvaWQuYXBwLklBY3Rpdml0eUNvbnRyb2xsZXI7CkBAIC0zOSwxMCArNDMsMTIgQEAKIGltcG9ydCBhbmRyb2lkLmFwcC5JQWN0aXZpdHlXYXRjaGVyOwogaW1wb3J0IGFuZHJvaWQuYXBwLklBcHBsaWNhdGlvblRocmVhZDsKIGltcG9ydCBhbmRyb2lkLmFwcC5JSW5zdHJ1bWVudGF0aW9uV2F0Y2hlcjsKK2ltcG9ydCBhbmRyb2lkLmFwcC5JTm90aWZpY2F0aW9uTWFuYWdlcjsKIGltcG9ydCBhbmRyb2lkLmFwcC5JU2VydmljZUNvbm5lY3Rpb247CiBpbXBvcnQgYW5kcm9pZC5hcHAuSVRodW1ibmFpbFJlY2VpdmVyOwogaW1wb3J0IGFuZHJvaWQuYXBwLkluc3RydW1lbnRhdGlvbjsKIGltcG9ydCBhbmRyb2lkLmFwcC5Ob3RpZmljYXRpb247CitpbXBvcnQgYW5kcm9pZC5hcHAuTm90aWZpY2F0aW9uTWFuYWdlcjsKIGltcG9ydCBhbmRyb2lkLmFwcC5QZW5kaW5nSW50ZW50OwogaW1wb3J0IGFuZHJvaWQuYXBwLlJlc3VsdEluZm87CiBpbXBvcnQgYW5kcm9pZC5hcHAuU2VydmljZTsKQEAgLTY5LDYgKzc1LDcgQEAKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uUHJvdmlkZXJJbmZvOwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5SZXNvbHZlSW5mbzsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uU2VydmljZUluZm87CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyLk5hbWVOb3RGb3VuZEV4Y2VwdGlvbjsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQucmVzLkNvbmZpZ3VyYXRpb247CiBpbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5CaXRtYXA7CiBpbXBvcnQgYW5kcm9pZC5uZXQuVXJpOwpAQCAtOTIsNiArOTksNyBAQAogaW1wb3J0IGFuZHJvaWQub3MuUmVtb3RlQ2FsbGJhY2tMaXN0OwogaW1wb3J0IGFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uOwogaW1wb3J0IGFuZHJvaWQub3MuU2VydmljZU1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5vcy5TdHJpY3RNb2RlOwogaW1wb3J0IGFuZHJvaWQub3MuU3lzdGVtQ2xvY2s7CiBpbXBvcnQgYW5kcm9pZC5vcy5TeXN0ZW1Qcm9wZXJ0aWVzOwogaW1wb3J0IGFuZHJvaWQucHJvdmlkZXIuU2V0dGluZ3M7CkBAIC0xNzYsNDcgKzE4NCwyMSBAQAogCiAgICAgLy8gTWF4aW11bSBudW1iZXIgb2YgcmVjZW50IHRhc2tzIHRoYXQgd2UgY2FuIHJlbWVtYmVyLgogICAgIHN0YXRpYyBmaW5hbCBpbnQgTUFYX1JFQ0VOVF9UQVNLUyA9IDIwOwotCisgICAgCiAgICAgLy8gQW1vdW50IG9mIHRpbWUgYWZ0ZXIgYSBjYWxsIHRvIHN0b3BBcHBTd2l0Y2hlcygpIGR1cmluZyB3aGljaCB3ZSB3aWxsCiAgICAgLy8gcHJldmVudCBmdXJ0aGVyIHVudHJ1c3RlZCBzd2l0Y2hlcyBmcm9tIGhhcHBlbmluZy4KICAgICBzdGF0aWMgZmluYWwgbG9uZyBBUFBfU1dJVENIX0RFTEFZX1RJTUUgPSA1KjEwMDA7Ci0gICAgCi0gICAgLy8gSG93IGxvbmcgdW50aWwgd2UgcmVzZXQgYSB0YXNrIHdoZW4gdGhlIHVzZXIgcmV0dXJucyB0byBpdC4gIEN1cnJlbnRseQotICAgIC8vIDMwIG1pbnV0ZXMuCi0gICAgc3RhdGljIGZpbmFsIGxvbmcgQUNUSVZJVFlfSU5BQ1RJVkVfUkVTRVRfVElNRSA9IDEwMDAqNjAqMzA7Ci0gICAgCi0gICAgLy8gU2V0IHRvIHRydWUgdG8gZGlzYWJsZSB0aGUgaWNvbiB0aGF0IGlzIHNob3duIHdoaWxlIGEgbmV3IGFjdGl2aXR5Ci0gICAgLy8gaXMgYmVpbmcgc3RhcnRlZC4KLSAgICBzdGF0aWMgZmluYWwgYm9vbGVhbiBTSE9XX0FQUF9TVEFSVElOR19JQ09OID0gdHJ1ZTsKLQotICAgIC8vIEhvdyBsb25nIHdlIHdhaXQgdW50aWwgZ2l2aW5nIHVwIG9uIHRoZSBsYXN0IGFjdGl2aXR5IHRvIHBhdXNlLiAgVGhpcwotICAgIC8vIGlzIHNob3J0IGJlY2F1c2UgaXQgZGlyZWN0bHkgaW1wYWN0cyB0aGUgcmVzcG9uc2l2ZW5lc3Mgb2Ygc3RhcnRpbmcgdGhlCi0gICAgLy8gbmV4dCBhY3Rpdml0eS4KLSAgICBzdGF0aWMgZmluYWwgaW50IFBBVVNFX1RJTUVPVVQgPSA1MDA7Ci0KLSAgICAvKioKLSAgICAgKiBIb3cgbG9uZyB3ZSBjYW4gaG9sZCB0aGUgbGF1bmNoIHdha2UgbG9jayBiZWZvcmUgZ2l2aW5nIHVwLgotICAgICAqLwotICAgIHN0YXRpYyBmaW5hbCBpbnQgTEFVTkNIX1RJTUVPVVQgPSAxMCoxMDAwOwogCiAgICAgLy8gSG93IGxvbmcgd2Ugd2FpdCBmb3IgYSBsYXVuY2hlZCBwcm9jZXNzIHRvIGF0dGFjaCB0byB0aGUgYWN0aXZpdHkgbWFuYWdlcgogICAgIC8vIGJlZm9yZSB3ZSBkZWNpZGUgaXQncyBuZXZlciBnb2luZyB0byBjb21lIHVwIGZvciByZWFsLgogICAgIHN0YXRpYyBmaW5hbCBpbnQgUFJPQ19TVEFSVF9USU1FT1VUID0gMTAqMTAwMDsKIAotICAgIC8vIEhvdyBsb25nIHdlIHdhaXQgdW50aWwgZ2l2aW5nIHVwIG9uIHRoZSBsYXN0IGFjdGl2aXR5IHRlbGxpbmcgdXMgaXQKLSAgICAvLyBpcyBpZGxlLgotICAgIHN0YXRpYyBmaW5hbCBpbnQgSURMRV9USU1FT1VUID0gMTAqMTAwMDsKLQogICAgIC8vIEhvdyBsb25nIHRvIHdhaXQgYWZ0ZXIgZ29pbmcgaWRsZSBiZWZvcmUgZm9yY2luZyBhcHBzIHRvIEdDLgogICAgIHN0YXRpYyBmaW5hbCBpbnQgR0NfVElNRU9VVCA9IDUqMTAwMDsKIAogICAgIC8vIFRoZSBtaW5pbXVtIGFtb3VudCBvZiB0aW1lIGJldHdlZW4gc3VjY2Vzc2l2ZSBHQyByZXF1ZXN0cyBmb3IgYSBwcm9jZXNzLgogICAgIHN0YXRpYyBmaW5hbCBpbnQgR0NfTUlOX0lOVEVSVkFMID0gNjAqMTAwMDsKIAotICAgIC8vIEhvdyBsb25nIHdlIHdhaXQgdW50aWwgZ2l2aW5nIHVwIG9uIGFuIGFjdGl2aXR5IHRlbGxpbmcgdXMgaXQgaGFzCi0gICAgLy8gZmluaXNoZWQgZGVzdHJveWluZyBpdHNlbGYuCi0gICAgc3RhdGljIGZpbmFsIGludCBERVNUUk9ZX1RJTUVPVVQgPSAxMCoxMDAwOwotICAgIAogICAgIC8vIEhvdyBsb25nIHdlIGFsbG93IGEgcmVjZWl2ZXIgdG8gcnVuIGJlZm9yZSBnaXZpbmcgdXAgb24gaXQuCiAgICAgc3RhdGljIGZpbmFsIGludCBCUk9BRENBU1RfVElNRU9VVCA9IDEwKjEwMDA7CiAKQEAgLTI4Myw2ICsyNjUsMTcgQEAKICAgICAvLyBzeXN0ZW0vcm9vdGRpci9pbml0LnJjIG9uIHN0YXJ0dXAuCiAgICAgc3RhdGljIGZpbmFsIGludCBTRUNPTkRBUllfU0VSVkVSX0FESjsKIAorICAgIC8vIFRoaXMgaXMgYSBwcm9jZXNzIHdpdGggYSBoZWF2eS13ZWlnaHQgYXBwbGljYXRpb24uICBJdCBpcyBpbiB0aGUKKyAgICAvLyBiYWNrZ3JvdW5kLCBidXQgd2Ugd2FudCB0byB0cnkgdG8gYXZvaWQga2lsbGluZyBpdC4gIFZhbHVlIHNldCBpbgorICAgIC8vIHN5c3RlbS9yb290ZGlyL2luaXQucmMgb24gc3RhcnR1cC4KKyAgICBzdGF0aWMgZmluYWwgaW50IEhFQVZZX1dFSUdIVF9BUFBfQURKOworCisgICAgLy8gVGhpcyBpcyBhIHByb2Nlc3Mgb25seSBob3N0aW5nIGNvbXBvbmVudHMgdGhhdCBhcmUgcGVyY2VwdGlibGUgdG8gdGhlCisgICAgLy8gdXNlciwgYW5kIHdlIHJlYWxseSB3YW50IHRvIGF2b2lkIGtpbGxpbmcgdGhlbSwgYnV0IHRoZXkgYXJlIG5vdAorICAgIC8vIGltbWVkaWF0ZWx5IHZpc2libGUuIEFuIGV4YW1wbGUgaXMgYmFja2dyb3VuZCBtdXNpYyBwbGF5YmFjay4gIFZhbHVlIHNldCBpbgorICAgIC8vIHN5c3RlbS9yb290ZGlyL2luaXQucmMgb24gc3RhcnR1cC4KKyAgICBzdGF0aWMgZmluYWwgaW50IFBFUkNFUFRJQkxFX0FQUF9BREo7CisKICAgICAvLyBUaGlzIGlzIGEgcHJvY2VzcyBvbmx5IGhvc3RpbmcgYWN0aXZpdGllcyB0aGF0IGFyZSB2aXNpYmxlIHRvIHRoZQogICAgIC8vIHVzZXIsIHNvIHdlJ2QgcHJlZmVyIHRoZXkgZG9uJ3QgZGlzYXBwZWFyLiBWYWx1ZSBzZXQgaW4KICAgICAvLyBzeXN0ZW0vcm9vdGRpci9pbml0LnJjIG9uIHN0YXJ0dXAuCkBAIC0zMDgsNiArMzAxLDggQEAKICAgICBzdGF0aWMgZmluYWwgaW50IEhPTUVfQVBQX01FTTsKICAgICBzdGF0aWMgZmluYWwgaW50IEJBQ0tVUF9BUFBfTUVNOwogICAgIHN0YXRpYyBmaW5hbCBpbnQgU0VDT05EQVJZX1NFUlZFUl9NRU07CisgICAgc3RhdGljIGZpbmFsIGludCBIRUFWWV9XRUlHSFRfQVBQX01FTTsKKyAgICBzdGF0aWMgZmluYWwgaW50IFBFUkNFUFRJQkxFX0FQUF9NRU07CiAgICAgc3RhdGljIGZpbmFsIGludCBWSVNJQkxFX0FQUF9NRU07CiAgICAgc3RhdGljIGZpbmFsIGludCBGT1JFR1JPVU5EX0FQUF9NRU07CiAKQEAgLTMyOCw2OCArMzIzLDU1IEBACiAgICAgLy8gYmVlbiBpZGxlIGZvciBsZXNzIHRoYW4gMTIwIHNlY29uZHMuCiAgICAgc3RhdGljIGZpbmFsIGxvbmcgRU1QVFlfQVBQX0lETEVfT0ZGU0VUID0gMTIwKjEwMDA7CiAgICAgCisgICAgc3RhdGljIGludCBnZXRJbnRQcm9wKFN0cmluZyBuYW1lLCBib29sZWFuIGFsbG93WmVybykgeworICAgICAgICBTdHJpbmcgc3RyID0gU3lzdGVtUHJvcGVydGllcy5nZXQobmFtZSk7CisgICAgICAgIGlmIChzdHIgPT0gbnVsbCkgeworICAgICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiUHJvcGVydHkgbm90IGRlZmluZWQ6ICIgKyBuYW1lKTsKKyAgICAgICAgfQorICAgICAgICBpbnQgdmFsID0gSW50ZWdlci52YWx1ZU9mKHN0cik7CisgICAgICAgIGlmICh2YWwgPT0gMCAmJiAhYWxsb3daZXJvKSB7CisgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJQcm9wZXJ0eSBtdXN0IG5vdCBiZSB6ZXJvOiAiICsgbmFtZSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHZhbDsKKyAgICB9CisgICAgCiAgICAgc3RhdGljIHsKICAgICAgICAgLy8gVGhlc2UgdmFsdWVzIGFyZSBzZXQgaW4gc3lzdGVtL3Jvb3RkaXIvaW5pdC5yYyBvbiBzdGFydHVwLgotICAgICAgICBGT1JFR1JPVU5EX0FQUF9BREogPQotICAgICAgICAgICAgSW50ZWdlci52YWx1ZU9mKFN5c3RlbVByb3BlcnRpZXMuZ2V0KCJyby5GT1JFR1JPVU5EX0FQUF9BREoiKSk7Ci0gICAgICAgIFZJU0lCTEVfQVBQX0FESiA9Ci0gICAgICAgICAgICBJbnRlZ2VyLnZhbHVlT2YoU3lzdGVtUHJvcGVydGllcy5nZXQoInJvLlZJU0lCTEVfQVBQX0FESiIpKTsKLSAgICAgICAgU0VDT05EQVJZX1NFUlZFUl9BREogPQotICAgICAgICAgICAgSW50ZWdlci52YWx1ZU9mKFN5c3RlbVByb3BlcnRpZXMuZ2V0KCJyby5TRUNPTkRBUllfU0VSVkVSX0FESiIpKTsKLSAgICAgICAgQkFDS1VQX0FQUF9BREogPQotICAgICAgICAgICAgSW50ZWdlci52YWx1ZU9mKFN5c3RlbVByb3BlcnRpZXMuZ2V0KCJyby5CQUNLVVBfQVBQX0FESiIpKTsKLSAgICAgICAgSE9NRV9BUFBfQURKID0KLSAgICAgICAgICAgIEludGVnZXIudmFsdWVPZihTeXN0ZW1Qcm9wZXJ0aWVzLmdldCgicm8uSE9NRV9BUFBfQURKIikpOwotICAgICAgICBISURERU5fQVBQX01JTl9BREogPQotICAgICAgICAgICAgSW50ZWdlci52YWx1ZU9mKFN5c3RlbVByb3BlcnRpZXMuZ2V0KCJyby5ISURERU5fQVBQX01JTl9BREoiKSk7Ci0gICAgICAgIEVNUFRZX0FQUF9BREogPQotICAgICAgICAgICAgSW50ZWdlci52YWx1ZU9mKFN5c3RlbVByb3BlcnRpZXMuZ2V0KCJyby5FTVBUWV9BUFBfQURKIikpOwotICAgICAgICBISURERU5fQVBQX01BWF9BREogPSBFTVBUWV9BUFBfQURKLTE7Ci0gICAgICAgIEZPUkVHUk9VTkRfQVBQX01FTSA9Ci0gICAgICAgICAgICBJbnRlZ2VyLnZhbHVlT2YoU3lzdGVtUHJvcGVydGllcy5nZXQoInJvLkZPUkVHUk9VTkRfQVBQX01FTSIpKSpQQUdFX1NJWkU7Ci0gICAgICAgIFZJU0lCTEVfQVBQX01FTSA9Ci0gICAgICAgICAgICBJbnRlZ2VyLnZhbHVlT2YoU3lzdGVtUHJvcGVydGllcy5nZXQoInJvLlZJU0lCTEVfQVBQX01FTSIpKSpQQUdFX1NJWkU7Ci0gICAgICAgIFNFQ09OREFSWV9TRVJWRVJfTUVNID0KLSAgICAgICAgICAgIEludGVnZXIudmFsdWVPZihTeXN0ZW1Qcm9wZXJ0aWVzLmdldCgicm8uU0VDT05EQVJZX1NFUlZFUl9NRU0iKSkqUEFHRV9TSVpFOwotICAgICAgICBCQUNLVVBfQVBQX01FTSA9Ci0gICAgICAgICAgICBJbnRlZ2VyLnZhbHVlT2YoU3lzdGVtUHJvcGVydGllcy5nZXQoInJvLkJBQ0tVUF9BUFBfTUVNIikpKlBBR0VfU0laRTsKLSAgICAgICAgSE9NRV9BUFBfTUVNID0KLSAgICAgICAgICAgIEludGVnZXIudmFsdWVPZihTeXN0ZW1Qcm9wZXJ0aWVzLmdldCgicm8uSE9NRV9BUFBfTUVNIikpKlBBR0VfU0laRTsKLSAgICAgICAgSElEREVOX0FQUF9NRU0gPQotICAgICAgICAgICAgSW50ZWdlci52YWx1ZU9mKFN5c3RlbVByb3BlcnRpZXMuZ2V0KCJyby5ISURERU5fQVBQX01FTSIpKSpQQUdFX1NJWkU7Ci0gICAgICAgIEVNUFRZX0FQUF9NRU0gPQotICAgICAgICAgICAgSW50ZWdlci52YWx1ZU9mKFN5c3RlbVByb3BlcnRpZXMuZ2V0KCJyby5FTVBUWV9BUFBfTUVNIikpKlBBR0VfU0laRTsKKyAgICAgICAgRk9SRUdST1VORF9BUFBfQURKID0gZ2V0SW50UHJvcCgicm8uRk9SRUdST1VORF9BUFBfQURKIiwgdHJ1ZSk7CisgICAgICAgIFZJU0lCTEVfQVBQX0FESiA9IGdldEludFByb3AoInJvLlZJU0lCTEVfQVBQX0FESiIsIHRydWUpOworICAgICAgICBQRVJDRVBUSUJMRV9BUFBfQURKID0gZ2V0SW50UHJvcCgicm8uUEVSQ0VQVElCTEVfQVBQX0FESiIsIHRydWUpOworICAgICAgICBIRUFWWV9XRUlHSFRfQVBQX0FESiA9IGdldEludFByb3AoInJvLkhFQVZZX1dFSUdIVF9BUFBfQURKIiwgdHJ1ZSk7CisgICAgICAgIFNFQ09OREFSWV9TRVJWRVJfQURKID0gZ2V0SW50UHJvcCgicm8uU0VDT05EQVJZX1NFUlZFUl9BREoiLCB0cnVlKTsKKyAgICAgICAgQkFDS1VQX0FQUF9BREogPSBnZXRJbnRQcm9wKCJyby5CQUNLVVBfQVBQX0FESiIsIHRydWUpOworICAgICAgICBIT01FX0FQUF9BREogPSBnZXRJbnRQcm9wKCJyby5IT01FX0FQUF9BREoiLCB0cnVlKTsKKyAgICAgICAgSElEREVOX0FQUF9NSU5fQURKID0gZ2V0SW50UHJvcCgicm8uSElEREVOX0FQUF9NSU5fQURKIiwgdHJ1ZSk7CisgICAgICAgIEVNUFRZX0FQUF9BREogPSBnZXRJbnRQcm9wKCJyby5FTVBUWV9BUFBfQURKIiwgdHJ1ZSk7CisgICAgICAgIC8vIFRoZXNlIGRheXMgd2UgdXNlIHRoZSBsYXN0IGVtcHR5IHNsb3QgZm9yIGhpZGRlbiBhcHBzIGFzIHdlbGwuCisgICAgICAgIEhJRERFTl9BUFBfTUFYX0FESiA9IEVNUFRZX0FQUF9BREo7CisgICAgICAgIEZPUkVHUk9VTkRfQVBQX01FTSA9IGdldEludFByb3AoInJvLkZPUkVHUk9VTkRfQVBQX01FTSIsIGZhbHNlKSpQQUdFX1NJWkU7CisgICAgICAgIFZJU0lCTEVfQVBQX01FTSA9IGdldEludFByb3AoInJvLlZJU0lCTEVfQVBQX01FTSIsIGZhbHNlKSpQQUdFX1NJWkU7CisgICAgICAgIFBFUkNFUFRJQkxFX0FQUF9NRU0gPSBnZXRJbnRQcm9wKCJyby5QRVJDRVBUSUJMRV9BUFBfTUVNIiwgZmFsc2UpKlBBR0VfU0laRTsKKyAgICAgICAgSEVBVllfV0VJR0hUX0FQUF9NRU0gPSBnZXRJbnRQcm9wKCJyby5IRUFWWV9XRUlHSFRfQVBQX01FTSIsIGZhbHNlKSpQQUdFX1NJWkU7CisgICAgICAgIFNFQ09OREFSWV9TRVJWRVJfTUVNID0gZ2V0SW50UHJvcCgicm8uU0VDT05EQVJZX1NFUlZFUl9NRU0iLCBmYWxzZSkqUEFHRV9TSVpFOworICAgICAgICBCQUNLVVBfQVBQX01FTSA9IGdldEludFByb3AoInJvLkJBQ0tVUF9BUFBfTUVNIiwgZmFsc2UpKlBBR0VfU0laRTsKKyAgICAgICAgSE9NRV9BUFBfTUVNID0gZ2V0SW50UHJvcCgicm8uSE9NRV9BUFBfTUVNIiwgZmFsc2UpKlBBR0VfU0laRTsKKyAgICAgICAgSElEREVOX0FQUF9NRU0gPSBnZXRJbnRQcm9wKCJyby5ISURERU5fQVBQX01FTSIsIGZhbHNlKSpQQUdFX1NJWkU7CisgICAgICAgIEVNUFRZX0FQUF9NRU0gPSBnZXRJbnRQcm9wKCJyby5FTVBUWV9BUFBfTUVNIiwgZmFsc2UpKlBBR0VfU0laRTsKICAgICB9CiAgICAgCiAgICAgc3RhdGljIGZpbmFsIGludCBNWV9QSUQgPSBQcm9jZXNzLm15UGlkKCk7CiAgICAgCiAgICAgc3RhdGljIGZpbmFsIFN0cmluZ1tdIEVNUFRZX1NUUklOR19BUlJBWSA9IG5ldyBTdHJpbmdbMF07CiAKLSAgICBlbnVtIEFjdGl2aXR5U3RhdGUgewotICAgICAgICBJTklUSUFMSVpJTkcsCi0gICAgICAgIFJFU1VNRUQsCi0gICAgICAgIFBBVVNJTkcsCi0gICAgICAgIFBBVVNFRCwKLSAgICAgICAgU1RPUFBJTkcsCi0gICAgICAgIFNUT1BQRUQsCi0gICAgICAgIEZJTklTSElORywKLSAgICAgICAgREVTVFJPWUlORywKLSAgICAgICAgREVTVFJPWUVECi0gICAgfQotCi0gICAgLyoqCi0gICAgICogVGhlIGJhY2sgaGlzdG9yeSBvZiBhbGwgcHJldmlvdXMgKGFuZCBwb3NzaWJseSBzdGlsbAotICAgICAqIHJ1bm5pbmcpIGFjdGl2aXRpZXMuICBJdCBjb250YWlucyBIaXN0b3J5UmVjb3JkIG9iamVjdHMuCi0gICAgICovCi0gICAgZmluYWwgQXJyYXlMaXN0IG1IaXN0b3J5ID0gbmV3IEFycmF5TGlzdCgpOwotCisgICAgcHVibGljIEFjdGl2aXR5U3RhY2sgbU1haW5TdGFjazsKKyAgICAKICAgICAvKioKICAgICAgKiBEZXNjcmlwdGlvbiBvZiBhIHJlcXVlc3QgdG8gc3RhcnQgYSBuZXcgYWN0aXZpdHksIHdoaWNoIGhhcyBiZWVuIGhlbGQKICAgICAgKiBkdWUgdG8gYXBwIHN3aXRjaGVzIGJlaW5nIGRpc2FibGVkLgogICAgICAqLwotICAgIGNsYXNzIFBlbmRpbmdBY3Rpdml0eUxhdW5jaCB7Ci0gICAgICAgIEhpc3RvcnlSZWNvcmQgcjsKLSAgICAgICAgSGlzdG9yeVJlY29yZCBzb3VyY2VSZWNvcmQ7CisgICAgc3RhdGljIGNsYXNzIFBlbmRpbmdBY3Rpdml0eUxhdW5jaCB7CisgICAgICAgIEFjdGl2aXR5UmVjb3JkIHI7CisgICAgICAgIEFjdGl2aXR5UmVjb3JkIHNvdXJjZVJlY29yZDsKICAgICAgICAgVXJpW10gZ3JhbnRlZFVyaVBlcm1pc3Npb25zOwogICAgICAgICBpbnQgZ3JhbnRlZE1vZGU7CiAgICAgICAgIGJvb2xlYW4gb25seUlmTmVlZGVkOwpAQCAtMzk5LDE4ICszODEsNiBAQAogICAgICAgICAgICAgPSBuZXcgQXJyYXlMaXN0PFBlbmRpbmdBY3Rpdml0eUxhdW5jaD4oKTsKICAgICAKICAgICAvKioKLSAgICAgKiBMaXN0IG9mIHBlb3BsZSB3YWl0aW5nIHRvIGZpbmQgb3V0IGFib3V0IHRoZSBuZXh0IGxhdW5jaGVkIGFjdGl2aXR5LgotICAgICAqLwotICAgIGZpbmFsIEFycmF5TGlzdDxJQWN0aXZpdHlNYW5hZ2VyLldhaXRSZXN1bHQ+IG1XYWl0aW5nQWN0aXZpdHlMYXVuY2hlZAotICAgICAgICAgICAgPSBuZXcgQXJyYXlMaXN0PElBY3Rpdml0eU1hbmFnZXIuV2FpdFJlc3VsdD4oKTsKLSAgICAKLSAgICAvKioKLSAgICAgKiBMaXN0IG9mIHBlb3BsZSB3YWl0aW5nIHRvIGZpbmQgb3V0IGFib3V0IHRoZSBuZXh0IHZpc2libGUgYWN0aXZpdHkuCi0gICAgICovCi0gICAgZmluYWwgQXJyYXlMaXN0PElBY3Rpdml0eU1hbmFnZXIuV2FpdFJlc3VsdD4gbVdhaXRpbmdBY3Rpdml0eVZpc2libGUKLSAgICAgICAgICAgID0gbmV3IEFycmF5TGlzdDxJQWN0aXZpdHlNYW5hZ2VyLldhaXRSZXN1bHQ+KCk7Ci0gICAgCi0gICAgLyoqCiAgICAgICogTGlzdCBvZiBhbGwgYWN0aXZlIGJyb2FkY2FzdHMgdGhhdCBhcmUgdG8gYmUgZXhlY3V0ZWQgaW1tZWRpYXRlbHkKICAgICAgKiAod2l0aG91dCB3YWl0aW5nIGZvciBhbm90aGVyIGJyb2FkY2FzdCB0byBmaW5pc2gpLiAgQ3VycmVudGx5IHRoaXMgb25seQogICAgICAqIGNvbnRhaW5zIGJyb2FkY2FzdHMgdG8gcmVnaXN0ZXJlZCByZWNlaXZlcnMsIHRvIGF2b2lkIHNwaW5uaW5nIHVwCkBAIC00NDAsNTYgKzQxMCw5IEBACiAgICAgYm9vbGVhbiBtQnJvYWRjYXN0c1NjaGVkdWxlZCA9IGZhbHNlOwogCiAgICAgLyoqCi0gICAgICogU2V0IHRvIGluZGljYXRlIHdoZXRoZXIgdG8gaXNzdWUgYW4gb25Vc2VyTGVhdmluZyBjYWxsYmFjayB3aGVuIGEKLSAgICAgKiBuZXdseSBsYXVuY2hlZCBhY3Rpdml0eSBpcyBiZWluZyBicm91Z2h0IGluIGZyb250IG9mIHVzLgotICAgICAqLwotICAgIGJvb2xlYW4gbVVzZXJMZWF2aW5nID0gZmFsc2U7Ci0KLSAgICAvKioKLSAgICAgKiBXaGVuIHdlIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBwYXVzaW5nIGFuIGFjdGl2aXR5LCBiZWZvcmUgc3RhcnRpbmcgdGhlCi0gICAgICogbmV4dCBvbmUsIHRoaXMgdmFyaWFibGUgaG9sZHMgdGhlIGFjdGl2aXR5IHRoYXQgaXMgY3VycmVudGx5IGJlaW5nIHBhdXNlZC4KLSAgICAgKi8KLSAgICBIaXN0b3J5UmVjb3JkIG1QYXVzaW5nQWN0aXZpdHkgPSBudWxsOwotCi0gICAgLyoqCi0gICAgICogQ3VycmVudCBhY3Rpdml0eSB0aGF0IGlzIHJlc3VtZWQsIG9yIG51bGwgaWYgdGhlcmUgaXMgbm9uZS4KLSAgICAgKi8KLSAgICBIaXN0b3J5UmVjb3JkIG1SZXN1bWVkQWN0aXZpdHkgPSBudWxsOwotCi0gICAgLyoqCiAgICAgICogQWN0aXZpdHkgd2UgaGF2ZSB0b2xkIHRoZSB3aW5kb3cgbWFuYWdlciB0byBoYXZlIGtleSBmb2N1cy4KICAgICAgKi8KLSAgICBIaXN0b3J5UmVjb3JkIG1Gb2N1c2VkQWN0aXZpdHkgPSBudWxsOwotCi0gICAgLyoqCi0gICAgICogVGhpcyBpcyB0aGUgbGFzdCBhY3Rpdml0eSB0aGF0IHdlIHB1dCBpbnRvIHRoZSBwYXVzZWQgc3RhdGUuICBUaGlzIGlzCi0gICAgICogdXNlZCB0byBkZXRlcm1pbmUgaWYgd2UgbmVlZCB0byBkbyBhbiBhY3Rpdml0eSB0cmFuc2l0aW9uIHdoaWxlIHNsZWVwaW5nLAotICAgICAqIHdoZW4gd2Ugbm9ybWFsbHkgaG9sZCB0aGUgdG9wIGFjdGl2aXR5IHBhdXNlZC4KLSAgICAgKi8KLSAgICBIaXN0b3J5UmVjb3JkIG1MYXN0UGF1c2VkQWN0aXZpdHkgPSBudWxsOwotCi0gICAgLyoqCi0gICAgICogTGlzdCBvZiBhY3Rpdml0aWVzIHRoYXQgYXJlIHdhaXRpbmcgZm9yIGEgbmV3IGFjdGl2aXR5Ci0gICAgICogdG8gYmVjb21lIHZpc2libGUgYmVmb3JlIGNvbXBsZXRpbmcgd2hhdGV2ZXIgb3BlcmF0aW9uIHRoZXkgYXJlCi0gICAgICogc3VwcG9zZWQgdG8gZG8uCi0gICAgICovCi0gICAgZmluYWwgQXJyYXlMaXN0IG1XYWl0aW5nVmlzaWJsZUFjdGl2aXRpZXMgPSBuZXcgQXJyYXlMaXN0KCk7Ci0KLSAgICAvKioKLSAgICAgKiBMaXN0IG9mIGFjdGl2aXRpZXMgdGhhdCBhcmUgcmVhZHkgdG8gYmUgc3RvcHBlZCwgYnV0IHdhaXRpbmcKLSAgICAgKiBmb3IgdGhlIG5leHQgYWN0aXZpdHkgdG8gc2V0dGxlIGRvd24gYmVmb3JlIGRvaW5nIHNvLiAgSXQgY29udGFpbnMKLSAgICAgKiBIaXN0b3J5UmVjb3JkIG9iamVjdHMuCi0gICAgICovCi0gICAgZmluYWwgQXJyYXlMaXN0PEhpc3RvcnlSZWNvcmQ+IG1TdG9wcGluZ0FjdGl2aXRpZXMKLSAgICAgICAgICAgID0gbmV3IEFycmF5TGlzdDxIaXN0b3J5UmVjb3JkPigpOwotCi0gICAgLyoqCi0gICAgICogQW5pbWF0aW9ucyB0aGF0IGZvciB0aGUgY3VycmVudCB0cmFuc2l0aW9uIGhhdmUgcmVxdWVzdGVkIG5vdCB0bwotICAgICAqIGJlIGNvbnNpZGVyZWQgZm9yIHRoZSB0cmFuc2l0aW9uIGFuaW1hdGlvbi4KLSAgICAgKi8KLSAgICBmaW5hbCBBcnJheUxpc3Q8SGlzdG9yeVJlY29yZD4gbU5vQW5pbUFjdGl2aXRpZXMKLSAgICAgICAgICAgID0gbmV3IEFycmF5TGlzdDxIaXN0b3J5UmVjb3JkPigpOwotICAgIAorICAgIEFjdGl2aXR5UmVjb3JkIG1Gb2N1c2VkQWN0aXZpdHkgPSBudWxsOwogICAgIC8qKgogICAgICAqIExpc3Qgb2YgaW50ZW50cyB0aGF0IHdlcmUgdXNlZCB0byBzdGFydCB0aGUgbW9zdCByZWNlbnQgdGFza3MuCiAgICAgICovCkBAIC00OTcsMTMgKzQyMCw2IEBACiAgICAgICAgICAgICA9IG5ldyBBcnJheUxpc3Q8VGFza1JlY29yZD4oKTsKIAogICAgIC8qKgotICAgICAqIExpc3Qgb2YgYWN0aXZpdGllcyB0aGF0IGFyZSByZWFkeSB0byBiZSBmaW5pc2hlZCwgYnV0IHdhaXRpbmcKLSAgICAgKiBmb3IgdGhlIHByZXZpb3VzIGFjdGl2aXR5IHRvIHNldHRsZSBkb3duIGJlZm9yZSBkb2luZyBzby4gIEl0IGNvbnRhaW5zCi0gICAgICogSGlzdG9yeVJlY29yZCBvYmplY3RzLgotICAgICAqLwotICAgIGZpbmFsIEFycmF5TGlzdCBtRmluaXNoaW5nQWN0aXZpdGllcyA9IG5ldyBBcnJheUxpc3QoKTsKLQotICAgIC8qKgogICAgICAqIEFsbCBvZiB0aGUgYXBwbGljYXRpb25zIHdlIGN1cnJlbnRseSBoYXZlIHJ1bm5pbmcgb3JnYW5pemVkIGJ5IG5hbWUuCiAgICAgICogVGhlIGtleXMgYXJlIHN0cmluZ3Mgb2YgdGhlIGFwcGxpY2F0aW9uIHBhY2thZ2UgbmFtZSAoYXMKICAgICAgKiByZXR1cm5lZCBieSB0aGUgcGFja2FnZSBtYW5hZ2VyKSwgYW5kIHRoZSBrZXlzIGFyZSBBcHBsaWNhdGlvblJlY29yZApAQCAtNTEzLDYgKzQyOSwxMSBAQAogICAgICAgICAgICAgPSBuZXcgUHJvY2Vzc01hcDxQcm9jZXNzUmVjb3JkPigpOwogCiAgICAgLyoqCisgICAgICogVGhlIGN1cnJlbnRseSBydW5uaW5nIGhlYXZ5LXdlaWdodCBwcm9jZXNzLCBpZiBhbnkuCisgICAgICovCisgICAgUHJvY2Vzc1JlY29yZCBtSGVhdnlXZWlnaHRQcm9jZXNzID0gbnVsbDsKKyAgICAKKyAgICAvKioKICAgICAgKiBUaGUgbGFzdCB0aW1lIHRoYXQgdmFyaW91cyBwcm9jZXNzZXMgaGF2ZSBjcmFzaGVkLgogICAgICAqLwogICAgIGZpbmFsIFByb2Nlc3NNYXA8TG9uZz4gbVByb2Nlc3NDcmFzaFRpbWVzID0gbmV3IFByb2Nlc3NNYXA8TG9uZz4oKTsKQEAgLTU5OCwxNiArNTE5LDkgQEAKICAgICAgKiBUaGlzIGlzIHRoZSBwcm9jZXNzIGhvbGRpbmcgd2hhdCB3ZSBjdXJyZW50bHkgY29uc2lkZXIgdG8gYmUKICAgICAgKiB0aGUgImhvbWUiIGFjdGl2aXR5LgogICAgICAqLwotICAgIHByaXZhdGUgUHJvY2Vzc1JlY29yZCBtSG9tZVByb2Nlc3M7CisgICAgUHJvY2Vzc1JlY29yZCBtSG9tZVByb2Nlc3M7CiAgICAgCiAgICAgLyoqCi0gICAgICogTGlzdCBvZiBydW5uaW5nIGFjdGl2aXRpZXMsIHNvcnRlZCBieSByZWNlbnQgdXNhZ2UuCi0gICAgICogVGhlIGZpcnN0IGVudHJ5IGluIHRoZSBsaXN0IGlzIHRoZSBsZWFzdCByZWNlbnRseSB1c2VkLgotICAgICAqIEl0IGNvbnRhaW5zIEhpc3RvcnlSZWNvcmQgb2JqZWN0cy4KLSAgICAgKi8KLSAgICBwcml2YXRlIGZpbmFsIEFycmF5TGlzdCBtTFJVQWN0aXZpdGllcyA9IG5ldyBBcnJheUxpc3QoKTsKLQotICAgIC8qKgogICAgICAqIFNldCBvZiBQZW5kaW5nUmVzdWx0UmVjb3JkIG9iamVjdHMgdGhhdCBhcmUgY3VycmVudGx5IGFjdGl2ZS4KICAgICAgKi8KICAgICBmaW5hbCBIYXNoU2V0IG1QZW5kaW5nUmVzdWx0UmVjb3JkcyA9IG5ldyBIYXNoU2V0KCk7CkBAIC02MTksNiArNTMzLDE1IEBACiAgICAgICAgICAgICA9IG5ldyBIYXNoTWFwPFBlbmRpbmdJbnRlbnRSZWNvcmQuS2V5LCBXZWFrUmVmZXJlbmNlPFBlbmRpbmdJbnRlbnRSZWNvcmQ+PigpOwogCiAgICAgLyoqCisgICAgICogRmluZ2VycHJpbnRzIChTdHJpbmcuaGFzaENvZGUoKSkgb2Ygc3RhY2sgdHJhY2VzIHRoYXQgd2UndmUKKyAgICAgKiBhbHJlYWR5IGxvZ2dlZCBEcm9wQm94IGVudHJpZXMgZm9yLiAgR3VhcmRlZCBieSBpdHNlbGYuICBJZgorICAgICAqIHNvbWV0aGluZyAocm9ndWUgdXNlciBhcHApIGZvcmNlcyB0aGlzIG92ZXIKKyAgICAgKiBNQVhfRFVQX1NVUFBSRVNTRURfU1RBQ0tTIGVudHJpZXMsIHRoZSBjb250ZW50cyBhcmUgY2xlYXJlZC4KKyAgICAgKi8KKyAgICBwcml2YXRlIGZpbmFsIEhhc2hTZXQ8SW50ZWdlcj4gbUFscmVhZHlMb2dnZWRWaW9sYXRlZFN0YWNrcyA9IG5ldyBIYXNoU2V0PEludGVnZXI+KCk7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1BWF9EVVBfU1VQUFJFU1NFRF9TVEFDS1MgPSA1MDAwOworCisgICAgLyoqCiAgICAgICogSW50ZW50IGJyb2FkY2FzdCB0aGF0IHdlIGhhdmUgdHJpZWQgdG8gc3RhcnQsIGJ1dCBhcmUKICAgICAgKiB3YWl0aW5nIGZvciBpdHMgYXBwbGljYXRpb24ncyBwcm9jZXNzIHRvIGJlIGNyZWF0ZWQuICBXZSBvbmx5CiAgICAgICogbmVlZCBvbmUgKGluc3RlYWQgb2YgYSBsaXN0KSBiZWNhdXNlIHdlIGFsd2F5cyBwcm9jZXNzIGJyb2FkY2FzdHMKQEAgLTcyNiwyMSArNjQ5LDI0IEBACiAgICAgICogdGhhdCBhIHNpbmdsZSBwcm92aWRlciBtYXkgYmUgcHVibGlzaGVkIHVuZGVyIG11bHRpcGxlIG5hbWVzLCBzbwogICAgICAqIHRoZXJlIG1heSBiZSBtdWx0aXBsZSBlbnRyaWVzIGhlcmUgZm9yIGEgc2luZ2xlIG9uZSBpbiBtUHJvdmlkZXJzQnlDbGFzcy4KICAgICAgKi8KLSAgICBmaW5hbCBIYXNoTWFwIG1Qcm92aWRlcnNCeU5hbWUgPSBuZXcgSGFzaE1hcCgpOworICAgIGZpbmFsIEhhc2hNYXA8U3RyaW5nLCBDb250ZW50UHJvdmlkZXJSZWNvcmQ+IG1Qcm92aWRlcnNCeU5hbWUKKyAgICAgICAgICAgID0gbmV3IEhhc2hNYXA8U3RyaW5nLCBDb250ZW50UHJvdmlkZXJSZWNvcmQ+KCk7CiAKICAgICAvKioKICAgICAgKiBBbGwgb2YgdGhlIGN1cnJlbnRseSBydW5uaW5nIGdsb2JhbCBjb250ZW50IHByb3ZpZGVycy4gIEtleXMgYXJlIGEKICAgICAgKiBzdHJpbmcgY29udGFpbmluZyB0aGUgcHJvdmlkZXIncyBpbXBsZW1lbnRhdGlvbiBjbGFzcyBhbmQgdmFsdWVzIGFyZSBhCiAgICAgICogQ29udGVudFByb3ZpZGVyUmVjb3JkIG9iamVjdCBjb250YWluaW5nIHRoZSBkYXRhIGFib3V0IGl0LgogICAgICAqLwotICAgIGZpbmFsIEhhc2hNYXAgbVByb3ZpZGVyc0J5Q2xhc3MgPSBuZXcgSGFzaE1hcCgpOworICAgIGZpbmFsIEhhc2hNYXA8U3RyaW5nLCBDb250ZW50UHJvdmlkZXJSZWNvcmQ+IG1Qcm92aWRlcnNCeUNsYXNzCisgICAgICAgICAgICA9IG5ldyBIYXNoTWFwPFN0cmluZywgQ29udGVudFByb3ZpZGVyUmVjb3JkPigpOwogCiAgICAgLyoqCiAgICAgICogTGlzdCBvZiBjb250ZW50IHByb3ZpZGVycyB3aG8gaGF2ZSBjbGllbnRzIHdhaXRpbmcgZm9yIHRoZW0uICBUaGUKICAgICAgKiBhcHBsaWNhdGlvbiBpcyBjdXJyZW50bHkgYmVpbmcgbGF1bmNoZWQgYW5kIHRoZSBwcm92aWRlciB3aWxsIGJlCiAgICAgICogcmVtb3ZlZCBmcm9tIHRoaXMgbGlzdCBvbmNlIGl0IGlzIHB1Ymxpc2hlZC4KICAgICAgKi8KLSAgICBmaW5hbCBBcnJheUxpc3QgbUxhdW5jaGluZ1Byb3ZpZGVycyA9IG5ldyBBcnJheUxpc3QoKTsKKyAgICBmaW5hbCBBcnJheUxpc3Q8Q29udGVudFByb3ZpZGVyUmVjb3JkPiBtTGF1bmNoaW5nUHJvdmlkZXJzCisgICAgICAgICAgICA9IG5ldyBBcnJheUxpc3Q8Q29udGVudFByb3ZpZGVyUmVjb3JkPigpOwogCiAgICAgLyoqCiAgICAgICogR2xvYmFsIHNldCBvZiBzcGVjaWZpYyBVcmkgcGVybWlzc2lvbnMgdGhhdCBoYXZlIGJlZW4gZ3JhbnRlZC4KQEAgLTc4OSwxMiArNzE1LDYgQEAKICAgICBpbnQgbUNvbmZpZ3VyYXRpb25TZXEgPSAwOwogICAgIAogICAgIC8qKgotICAgICAqIFNldCB3aGVuIHdlIGtub3cgd2UgYXJlIGdvaW5nIHRvIGJlIGNhbGxpbmcgdXBkYXRlQ29uZmlndXJhdGlvbigpCi0gICAgICogc29vbiwgc28gd2FudCB0byBza2lwIGludGVybWVkaWF0ZSBjb25maWcgY2hlY2tzLgotICAgICAqLwotICAgIGJvb2xlYW4gbUNvbmZpZ1dpbGxDaGFuZ2U7Ci0gICAgCi0gICAgLyoqCiAgICAgICogSGFyZHdhcmUtcmVwb3J0ZWQgT3BlbkdMRVMgdmVyc2lvbi4KICAgICAgKi8KICAgICBmaW5hbCBpbnQgR0xfRVNfVkVSU0lPTjsKQEAgLTg1MCwyMSArNzcwLDYgQEAKICAgICAgKiBTZXQgaWYgd2UgYXJlIHNodXR0aW5nIGRvd24gdGhlIHN5c3RlbSwgc2ltaWxhciB0byBzbGVlcGluZy4KICAgICAgKi8KICAgICBib29sZWFuIG1TaHV0dGluZ0Rvd24gPSBmYWxzZTsKLSAgICAKLSAgICAvKioKLSAgICAgKiBTZXQgd2hlbiB0aGUgc3lzdGVtIGlzIGdvaW5nIHRvIHNsZWVwLCB1bnRpbCB3ZSBoYXZlCi0gICAgICogc3VjY2Vzc2Z1bGx5IHBhdXNlZCB0aGUgY3VycmVudCBhY3Rpdml0eSBhbmQgcmVsZWFzZWQgb3VyIHdha2UgbG9jay4KLSAgICAgKiBBdCB0aGF0IHBvaW50IHRoZSBzeXN0ZW0gaXMgYWxsb3dlZCB0byBhY3R1YWxseSBzbGVlcC4KLSAgICAgKi8KLSAgICBQb3dlck1hbmFnZXIuV2FrZUxvY2sgbUdvaW5nVG9TbGVlcDsKLQotICAgIC8qKgotICAgICAqIFdlIGRvbid0IHdhbnQgdG8gYWxsb3cgdGhlIGRldmljZSB0byBnbyB0byBzbGVlcCB3aGlsZSBpbiB0aGUgcHJvY2VzcwotICAgICAqIG9mIGxhdW5jaGluZyBhbiBhY3Rpdml0eS4gIFRoaXMgaXMgcHJpbWFyaWx5IHRvIGFsbG93IGFsYXJtIGludGVudAotICAgICAqIHJlY2VpdmVycyB0byBsYXVuY2ggYW4gYWN0aXZpdHkgYW5kIGdldCB0aGF0IHRvIHJ1biBiZWZvcmUgdGhlIGRldmljZQotICAgICAqIGdvZXMgYmFjayB0byBzbGVlcC4KLSAgICAgKi8KLSAgICBQb3dlck1hbmFnZXIuV2FrZUxvY2sgbUxhdW5jaGluZ0FjdGl2aXR5OwogCiAgICAgLyoqCiAgICAgICogVGFzayBpZGVudGlmaWVyIHRoYXQgYWN0aXZpdGllcyBhcmUgY3VycmVudGx5IGJlaW5nIHN0YXJ0ZWQKQEAgLTk0NCw4ICs4NDksNiBAQAogCiAgICAgbG9uZyBtTGFzdFdyaXRlVGltZSA9IDA7CiAKLSAgICBsb25nIG1Jbml0aWFsU3RhcnRUaW1lID0gMDsKLSAgICAKICAgICAvKioKICAgICAgKiBTZXQgdG8gdHJ1ZSBhZnRlciB0aGUgc3lzdGVtIGhhcyBmaW5pc2hlZCBib290aW5nLgogICAgICAqLwpAQCAtOTc3LDcgKzg4MCw2IEBACiAgICAgICAgICAgICBpZiAobG9jYWxMT0dWKSBTbG9nLnYoCiAgICAgICAgICAgICAgICAgVEFHLCAiRGVhdGggcmVjZWl2ZWQgaW4gIiArIHRoaXMKICAgICAgICAgICAgICAgICArICIgZm9yIHRocmVhZCAiICsgbUFwcFRocmVhZC5hc0JpbmRlcigpKTsKLSAgICAgICAgICAgIHJlbW92ZVJlcXVlc3RlZFBzcyhtQXBwKTsKICAgICAgICAgICAgIHN5bmNocm9uaXplZChBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlLnRoaXMpIHsKICAgICAgICAgICAgICAgICBhcHBEaWVkTG9ja2VkKG1BcHAsIG1QaWQsIG1BcHBUaHJlYWQpOwogICAgICAgICAgICAgfQpAQCAtOTkyLDIwICs4OTQsMTcgQEAKICAgICBzdGF0aWMgZmluYWwgaW50IFdBSVRfRk9SX0RFQlVHR0VSX01TRyA9IDY7CiAgICAgc3RhdGljIGZpbmFsIGludCBCUk9BRENBU1RfSU5URU5UX01TRyA9IDc7CiAgICAgc3RhdGljIGZpbmFsIGludCBCUk9BRENBU1RfVElNRU9VVF9NU0cgPSA4OwotICAgIHN0YXRpYyBmaW5hbCBpbnQgUEFVU0VfVElNRU9VVF9NU0cgPSA5OwotICAgIHN0YXRpYyBmaW5hbCBpbnQgSURMRV9USU1FT1VUX01TRyA9IDEwOwotICAgIHN0YXRpYyBmaW5hbCBpbnQgSURMRV9OT1dfTVNHID0gMTE7CiAgICAgc3RhdGljIGZpbmFsIGludCBTRVJWSUNFX1RJTUVPVVRfTVNHID0gMTI7CiAgICAgc3RhdGljIGZpbmFsIGludCBVUERBVEVfVElNRV9aT05FID0gMTM7CiAgICAgc3RhdGljIGZpbmFsIGludCBTSE9XX1VJRF9FUlJPUl9NU0cgPSAxNDsKICAgICBzdGF0aWMgZmluYWwgaW50IElNX0ZFRUxJTkdfTFVDS1lfTVNHID0gMTU7Ci0gICAgc3RhdGljIGZpbmFsIGludCBMQVVOQ0hfVElNRU9VVF9NU0cgPSAxNjsKLSAgICBzdGF0aWMgZmluYWwgaW50IERFU1RST1lfVElNRU9VVF9NU0cgPSAxNzsKLSAgICBzdGF0aWMgZmluYWwgaW50IFJFU1VNRV9UT1BfQUNUSVZJVFlfTVNHID0gMTk7CiAgICAgc3RhdGljIGZpbmFsIGludCBQUk9DX1NUQVJUX1RJTUVPVVRfTVNHID0gMjA7CiAgICAgc3RhdGljIGZpbmFsIGludCBET19QRU5ESU5HX0FDVElWSVRZX0xBVU5DSEVTX01TRyA9IDIxOwogICAgIHN0YXRpYyBmaW5hbCBpbnQgS0lMTF9BUFBMSUNBVElPTl9NU0cgPSAyMjsKICAgICBzdGF0aWMgZmluYWwgaW50IEZJTkFMSVpFX1BFTkRJTkdfSU5URU5UX01TRyA9IDIzOworICAgIHN0YXRpYyBmaW5hbCBpbnQgUE9TVF9IRUFWWV9OT1RJRklDQVRJT05fTVNHID0gMjQ7CisgICAgc3RhdGljIGZpbmFsIGludCBDQU5DRUxfSEVBVllfTk9USUZJQ0FUSU9OX01TRyA9IDI1OworICAgIHN0YXRpYyBmaW5hbCBpbnQgU0hPV19TVFJJQ1RfTU9ERV9WSU9MQVRJT05fTVNHID0gMjY7CiAKICAgICBBbGVydERpYWxvZyBtVWlkQWxlcnQ7CiAKQEAgLTEwNTIsMTMgKzk1MSwzOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLCBmYWxzZSwgTVlfUElELCBQcm9jZXNzLlNZU1RFTV9VSUQpOwogCiAgICAgICAgICAgICAgICAgICAgIERpYWxvZyBkID0gbmV3IEFwcE5vdFJlc3BvbmRpbmdEaWFsb2coQWN0aXZpdHlNYW5hZ2VyU2VydmljZS50aGlzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Db250ZXh0LCBwcm9jLCAoSGlzdG9yeVJlY29yZClkYXRhLmdldCgiYWN0aXZpdHkiKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbUNvbnRleHQsIHByb2MsIChBY3Rpdml0eVJlY29yZClkYXRhLmdldCgiYWN0aXZpdHkiKSk7CiAgICAgICAgICAgICAgICAgICAgIGQuc2hvdygpOwogICAgICAgICAgICAgICAgICAgICBwcm9jLmFuckRpYWxvZyA9IGQ7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGVuc3VyZUJvb3RDb21wbGV0ZWQoKTsKICAgICAgICAgICAgIH0gYnJlYWs7CisgICAgICAgICAgICBjYXNlIFNIT1dfU1RSSUNUX01PREVfVklPTEFUSU9OX01TRzogeworICAgICAgICAgICAgICAgIEhhc2hNYXA8U3RyaW5nLCBPYmplY3Q+IGRhdGEgPSAoSGFzaE1hcDxTdHJpbmcsIE9iamVjdD4pIG1zZy5vYmo7CisgICAgICAgICAgICAgICAgc3luY2hyb25pemVkIChBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlLnRoaXMpIHsKKyAgICAgICAgICAgICAgICAgICAgUHJvY2Vzc1JlY29yZCBwcm9jID0gKFByb2Nlc3NSZWNvcmQpIGRhdGEuZ2V0KCJhcHAiKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHByb2MgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgU2xvZy5lKFRBRywgIkFwcCBub3QgZm91bmQgd2hlbiBzaG93aW5nIHN0cmljdCBtb2RlIGRpYWxvZy4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChwcm9jLmNyYXNoRGlhbG9nICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFNsb2cuZShUQUcsICJBcHAgYWxyZWFkeSBoYXMgc3RyaWN0IG1vZGUgZGlhbG9nOiAiICsgcHJvYyk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgQXBwRXJyb3JSZXN1bHQgcmVzID0gKEFwcEVycm9yUmVzdWx0KSBkYXRhLmdldCgicmVzdWx0Iik7CisgICAgICAgICAgICAgICAgICAgIGlmICghbVNsZWVwaW5nICYmICFtU2h1dHRpbmdEb3duKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBEaWFsb2cgZCA9IG5ldyBTdHJpY3RNb2RlVmlvbGF0aW9uRGlhbG9nKG1Db250ZXh0LCByZXMsIHByb2MpOworICAgICAgICAgICAgICAgICAgICAgICAgZC5zaG93KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBwcm9jLmNyYXNoRGlhbG9nID0gZDsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBkZXZpY2UgaXMgYXNsZWVwLCBzbyBqdXN0IHByZXRlbmQgdGhhdCB0aGUgdXNlcgorICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2F3IGEgY3Jhc2ggZGlhbG9nIGFuZCBoaXQgImZvcmNlIHF1aXQiLgorICAgICAgICAgICAgICAgICAgICAgICAgcmVzLnNldCgwKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbnN1cmVCb290Q29tcGxldGVkKCk7CisgICAgICAgICAgICB9IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBTSE9XX0ZBQ1RPUllfRVJST1JfTVNHOiB7CiAgICAgICAgICAgICAgICAgRGlhbG9nIGQgPSBuZXcgRmFjdG9yeUVycm9yRGlhbG9nKAogICAgICAgICAgICAgICAgICAgICBtQ29udGV4dCwgbXNnLmdldERhdGEoKS5nZXRDaGFyU2VxdWVuY2UoIm1zZyIpKTsKQEAgLTExMTMsMzggKzEwMzcsNiBAQAogICAgICAgICAgICAgICAgICAgICBicm9hZGNhc3RUaW1lb3V0KCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBicmVhazsKLSAgICAgICAgICAgIGNhc2UgUEFVU0VfVElNRU9VVF9NU0c6IHsKLSAgICAgICAgICAgICAgICBJQmluZGVyIHRva2VuID0gKElCaW5kZXIpbXNnLm9iajsKLSAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCBhdCB0aGlzIHBvaW50IGtub3cgaWYgdGhlIGFjdGl2aXR5IGlzIGZ1bGxzY3JlZW4sCi0gICAgICAgICAgICAgICAgLy8gc28gd2UgbmVlZCB0byBiZSBjb25zZXJ2YXRpdmUgYW5kIGFzc3VtZSBpdCBpc24ndC4KLSAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiQWN0aXZpdHkgcGF1c2UgdGltZW91dCBmb3IgIiArIHRva2VuKTsKLSAgICAgICAgICAgICAgICBhY3Rpdml0eVBhdXNlZCh0b2tlbiwgbnVsbCwgdHJ1ZSk7Ci0gICAgICAgICAgICB9IGJyZWFrOwotICAgICAgICAgICAgY2FzZSBJRExFX1RJTUVPVVRfTVNHOiB7Ci0gICAgICAgICAgICAgICAgaWYgKG1EaWREZXhPcHQpIHsKLSAgICAgICAgICAgICAgICAgICAgbURpZERleE9wdCA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICBNZXNzYWdlIG5tc2cgPSBtSGFuZGxlci5vYnRhaW5NZXNzYWdlKElETEVfVElNRU9VVF9NU0cpOwotICAgICAgICAgICAgICAgICAgICBubXNnLm9iaiA9IG1zZy5vYmo7Ci0gICAgICAgICAgICAgICAgICAgIG1IYW5kbGVyLnNlbmRNZXNzYWdlRGVsYXllZChubXNnLCBJRExFX1RJTUVPVVQpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IGF0IHRoaXMgcG9pbnQga25vdyBpZiB0aGUgYWN0aXZpdHkgaXMgZnVsbHNjcmVlbiwKLSAgICAgICAgICAgICAgICAvLyBzbyB3ZSBuZWVkIHRvIGJlIGNvbnNlcnZhdGl2ZSBhbmQgYXNzdW1lIGl0IGlzbid0LgotICAgICAgICAgICAgICAgIElCaW5kZXIgdG9rZW4gPSAoSUJpbmRlciltc2cub2JqOwotICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsICJBY3Rpdml0eSBpZGxlIHRpbWVvdXQgZm9yICIgKyB0b2tlbik7Ci0gICAgICAgICAgICAgICAgYWN0aXZpdHlJZGxlSW50ZXJuYWwodG9rZW4sIHRydWUsIG51bGwpOwotICAgICAgICAgICAgfSBicmVhazsKLSAgICAgICAgICAgIGNhc2UgREVTVFJPWV9USU1FT1VUX01TRzogewotICAgICAgICAgICAgICAgIElCaW5kZXIgdG9rZW4gPSAoSUJpbmRlciltc2cub2JqOwotICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IGF0IHRoaXMgcG9pbnQga25vdyBpZiB0aGUgYWN0aXZpdHkgaXMgZnVsbHNjcmVlbiwKLSAgICAgICAgICAgICAgICAvLyBzbyB3ZSBuZWVkIHRvIGJlIGNvbnNlcnZhdGl2ZSBhbmQgYXNzdW1lIGl0IGlzbid0LgotICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsICJBY3Rpdml0eSBkZXN0cm95IHRpbWVvdXQgZm9yICIgKyB0b2tlbik7Ci0gICAgICAgICAgICAgICAgYWN0aXZpdHlEZXN0cm95ZWQodG9rZW4pOwotICAgICAgICAgICAgfSBicmVhazsKLSAgICAgICAgICAgIGNhc2UgSURMRV9OT1dfTVNHOiB7Ci0gICAgICAgICAgICAgICAgSUJpbmRlciB0b2tlbiA9IChJQmluZGVyKW1zZy5vYmo7Ci0gICAgICAgICAgICAgICAgYWN0aXZpdHlJZGxlKHRva2VuLCBudWxsKTsKLSAgICAgICAgICAgIH0gYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFNFUlZJQ0VfVElNRU9VVF9NU0c6IHsKICAgICAgICAgICAgICAgICBpZiAobURpZERleE9wdCkgewogICAgICAgICAgICAgICAgICAgICBtRGlkRGV4T3B0ID0gZmFsc2U7CkBAIC0xMTg3LDI1ICsxMDc5LDYgQEAKICAgICAgICAgICAgICAgICAgICAgbVVpZEFsZXJ0ID0gbnVsbDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGJyZWFrOwotICAgICAgICAgICAgY2FzZSBMQVVOQ0hfVElNRU9VVF9NU0c6IHsKLSAgICAgICAgICAgICAgICBpZiAobURpZERleE9wdCkgewotICAgICAgICAgICAgICAgICAgICBtRGlkRGV4T3B0ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgIE1lc3NhZ2Ugbm1zZyA9IG1IYW5kbGVyLm9idGFpbk1lc3NhZ2UoTEFVTkNIX1RJTUVPVVRfTVNHKTsKLSAgICAgICAgICAgICAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2VEZWxheWVkKG5tc2csIExBVU5DSF9USU1FT1VUKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKEFjdGl2aXR5TWFuYWdlclNlcnZpY2UudGhpcykgewotICAgICAgICAgICAgICAgICAgICBpZiAobUxhdW5jaGluZ0FjdGl2aXR5LmlzSGVsZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiTGF1bmNoIHRpbWVvdXQgaGFzIGV4cGlyZWQsIGdpdmluZyB1cCB3YWtlIGxvY2shIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtTGF1bmNoaW5nQWN0aXZpdHkucmVsZWFzZSgpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBicmVhazsKLSAgICAgICAgICAgIGNhc2UgUkVTVU1FX1RPUF9BQ1RJVklUWV9NU0c6IHsKLSAgICAgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKEFjdGl2aXR5TWFuYWdlclNlcnZpY2UudGhpcykgewotICAgICAgICAgICAgICAgICAgICByZXN1bWVUb3BBY3Rpdml0eUxvY2tlZChudWxsKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGJyZWFrOwogICAgICAgICAgICAgY2FzZSBQUk9DX1NUQVJUX1RJTUVPVVRfTVNHOiB7CiAgICAgICAgICAgICAgICAgaWYgKG1EaWREZXhPcHQpIHsKICAgICAgICAgICAgICAgICAgICAgbURpZERleE9wdCA9IGZhbHNlOwpAQCAtMTIzNSw2ICsxMTA4LDYyIEBACiAgICAgICAgICAgICBjYXNlIEZJTkFMSVpFX1BFTkRJTkdfSU5URU5UX01TRzogewogICAgICAgICAgICAgICAgICgoUGVuZGluZ0ludGVudFJlY29yZCltc2cub2JqKS5jb21wbGV0ZUZpbmFsaXplKCk7CiAgICAgICAgICAgICB9IGJyZWFrOworICAgICAgICAgICAgY2FzZSBQT1NUX0hFQVZZX05PVElGSUNBVElPTl9NU0c6IHsKKyAgICAgICAgICAgICAgICBJTm90aWZpY2F0aW9uTWFuYWdlciBpbm0gPSBOb3RpZmljYXRpb25NYW5hZ2VyLmdldFNlcnZpY2UoKTsKKyAgICAgICAgICAgICAgICBpZiAoaW5tID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCByb290ID0gKEFjdGl2aXR5UmVjb3JkKW1zZy5vYmo7CisgICAgICAgICAgICAgICAgUHJvY2Vzc1JlY29yZCBwcm9jZXNzID0gcm9vdC5hcHA7CisgICAgICAgICAgICAgICAgaWYgKHByb2Nlc3MgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIENvbnRleHQgY29udGV4dCA9IG1Db250ZXh0LmNyZWF0ZVBhY2thZ2VDb250ZXh0KHByb2Nlc3MuaW5mby5wYWNrYWdlTmFtZSwgMCk7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyB0ZXh0ID0gbUNvbnRleHQuZ2V0U3RyaW5nKFIuc3RyaW5nLmhlYXZ5X3dlaWdodF9ub3RpZmljYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5nZXRBcHBsaWNhdGlvbkluZm8oKS5sb2FkTGFiZWwoY29udGV4dC5nZXRQYWNrYWdlTWFuYWdlcigpKSk7CisgICAgICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24gPSBuZXcgTm90aWZpY2F0aW9uKCk7CisgICAgICAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbi5pY29uID0gY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19hZGI7IC8vY29udGV4dC5nZXRBcHBsaWNhdGlvbkluZm8oKS5pY29uOworICAgICAgICAgICAgICAgICAgICBub3RpZmljYXRpb24ud2hlbiA9IDA7CisgICAgICAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbi5mbGFncyA9IE5vdGlmaWNhdGlvbi5GTEFHX09OR09JTkdfRVZFTlQ7CisgICAgICAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbi50aWNrZXJUZXh0ID0gdGV4dDsKKyAgICAgICAgICAgICAgICAgICAgbm90aWZpY2F0aW9uLmRlZmF1bHRzID0gMDsgLy8gcGxlYXNlIGJlIHF1aWV0CisgICAgICAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbi5zb3VuZCA9IG51bGw7CisgICAgICAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbi52aWJyYXRlID0gbnVsbDsKKyAgICAgICAgICAgICAgICAgICAgbm90aWZpY2F0aW9uLnNldExhdGVzdEV2ZW50SW5mbyhjb250ZXh0LCB0ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Db250ZXh0LmdldFRleHQoUi5zdHJpbmcuaGVhdnlfd2VpZ2h0X25vdGlmaWNhdGlvbl9kZXRhaWwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBlbmRpbmdJbnRlbnQuZ2V0QWN0aXZpdHkobUNvbnRleHQsIDAsIHJvb3QuaW50ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGVuZGluZ0ludGVudC5GTEFHX0NBTkNFTF9DVVJSRU5UKSk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgaW50W10gb3V0SWQgPSBuZXcgaW50WzFdOworICAgICAgICAgICAgICAgICAgICAgICAgaW5tLmVucXVldWVOb3RpZmljYXRpb24oImFuZHJvaWQiLCBSLnN0cmluZy5oZWF2eV93ZWlnaHRfbm90aWZpY2F0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3RpZmljYXRpb24sIG91dElkKTsKKyAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoUnVudGltZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBTbG9nLncoQWN0aXZpdHlNYW5hZ2VyU2VydmljZS5UQUcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFcnJvciBzaG93aW5nIG5vdGlmaWNhdGlvbiBmb3IgaGVhdnktd2VpZ2h0IGFwcCIsIGUpOworICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBjYXRjaCAoTmFtZU5vdEZvdW5kRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgTG9nLncoVEFHLCAiVW5hYmxlIHRvIGNyZWF0ZSBjb250ZXh0IGZvciBoZWF2eSBub3RpZmljYXRpb24iLCBlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGJyZWFrOworICAgICAgICAgICAgY2FzZSBDQU5DRUxfSEVBVllfTk9USUZJQ0FUSU9OX01TRzogeworICAgICAgICAgICAgICAgIElOb3RpZmljYXRpb25NYW5hZ2VyIGlubSA9IE5vdGlmaWNhdGlvbk1hbmFnZXIuZ2V0U2VydmljZSgpOworICAgICAgICAgICAgICAgIGlmIChpbm0gPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIGlubS5jYW5jZWxOb3RpZmljYXRpb24oImFuZHJvaWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIuc3RyaW5nLmhlYXZ5X3dlaWdodF9ub3RpZmljYXRpb24pOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJ1bnRpbWVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICBTbG9nLncoQWN0aXZpdHlNYW5hZ2VyU2VydmljZS5UQUcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkVycm9yIGNhbmNlbGluZyBub3RpZmljYXRpb24gZm9yIHNlcnZpY2UiLCBlKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9OwpAQCAtMTI5OCwxMSArMTIyNyw3IEBACiAgICAgICAgIENvbnRleHQgY29udGV4dCA9IGF0LmdldFN5c3RlbUNvbnRleHQoKTsKICAgICAgICAgbS5tQ29udGV4dCA9IGNvbnRleHQ7CiAgICAgICAgIG0ubUZhY3RvcnlUZXN0ID0gZmFjdG9yeVRlc3Q7Ci0gICAgICAgIFBvd2VyTWFuYWdlciBwbSA9Ci0gICAgICAgICAgICAoUG93ZXJNYW5hZ2VyKWNvbnRleHQuZ2V0U3lzdGVtU2VydmljZShDb250ZXh0LlBPV0VSX1NFUlZJQ0UpOwotICAgICAgICBtLm1Hb2luZ1RvU2xlZXAgPSBwbS5uZXdXYWtlTG9jayhQb3dlck1hbmFnZXIuUEFSVElBTF9XQUtFX0xPQ0ssICJBY3Rpdml0eU1hbmFnZXItU2xlZXAiKTsKLSAgICAgICAgbS5tTGF1bmNoaW5nQWN0aXZpdHkgPSBwbS5uZXdXYWtlTG9jayhQb3dlck1hbmFnZXIuUEFSVElBTF9XQUtFX0xPQ0ssICJBY3Rpdml0eU1hbmFnZXItTGF1bmNoIik7Ci0gICAgICAgIG0ubUxhdW5jaGluZ0FjdGl2aXR5LnNldFJlZmVyZW5jZUNvdW50ZWQoZmFsc2UpOworICAgICAgICBtLm1NYWluU3RhY2sgPSBuZXcgQWN0aXZpdHlTdGFjayhtLCBjb250ZXh0LCB0cnVlKTsKICAgICAgICAgCiAgICAgICAgIG0ubUJhdHRlcnlTdGF0c1NlcnZpY2UucHVibGlzaChjb250ZXh0KTsKICAgICAgICAgbS5tVXNhZ2VTdGF0c1NlcnZpY2UucHVibGlzaChjb250ZXh0KTsKQEAgLTEzMzQsNiArMTI1OSw3IEBACiAKICAgICAgICAgICAgIGFuZHJvaWQub3MuUHJvY2Vzcy5zZXRUaHJlYWRQcmlvcml0eSgKICAgICAgICAgICAgICAgICAgICAgYW5kcm9pZC5vcy5Qcm9jZXNzLlRIUkVBRF9QUklPUklUWV9GT1JFR1JPVU5EKTsKKyAgICAgICAgICAgIGFuZHJvaWQub3MuUHJvY2Vzcy5zZXRDYW5TZWxmQmFja2dyb3VuZChmYWxzZSk7CiAKICAgICAgICAgICAgIEFjdGl2aXR5TWFuYWdlclNlcnZpY2UgbSA9IG5ldyBBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlKCk7CiAKQEAgLTE1OTEsNyArMTUxNyw3IEBACiAgICAgICAgIHJldHVybiBtQXBwQmluZEFyZ3M7CiAgICAgfQogCi0gICAgcHJpdmF0ZSBmaW5hbCB2b2lkIHNldEZvY3VzZWRBY3Rpdml0eUxvY2tlZChIaXN0b3J5UmVjb3JkIHIpIHsKKyAgICBmaW5hbCB2b2lkIHNldEZvY3VzZWRBY3Rpdml0eUxvY2tlZChBY3Rpdml0eVJlY29yZCByKSB7CiAgICAgICAgIGlmIChtRm9jdXNlZEFjdGl2aXR5ICE9IHIpIHsKICAgICAgICAgICAgIG1Gb2N1c2VkQWN0aXZpdHkgPSByOwogICAgICAgICAgICAgbVdpbmRvd01hbmFnZXIuc2V0Rm9jdXNlZEFwcChyLCB0cnVlKTsKQEAgLTE2NzYsNjUgKzE2MDIsMTMgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIHByaXZhdGUgZmluYWwgdm9pZCB1cGRhdGVMcnVQcm9jZXNzTG9ja2VkKFByb2Nlc3NSZWNvcmQgYXBwLAorICAgIGZpbmFsIHZvaWQgdXBkYXRlTHJ1UHJvY2Vzc0xvY2tlZChQcm9jZXNzUmVjb3JkIGFwcCwKICAgICAgICAgICAgIGJvb2xlYW4gb29tQWRqLCBib29sZWFuIHVwZGF0ZUFjdGl2aXR5VGltZSkgewogICAgICAgICBtTHJ1U2VxKys7CiAgICAgICAgIHVwZGF0ZUxydVByb2Nlc3NJbnRlcm5hbExvY2tlZChhcHAsIG9vbUFkaiwgdXBkYXRlQWN0aXZpdHlUaW1lLCAwKTsKICAgICB9CiAgICAgCi0gICAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIHVwZGF0ZUxSVUxpc3RMb2NrZWQoSGlzdG9yeVJlY29yZCByKSB7Ci0gICAgICAgIGZpbmFsIGJvb2xlYW4gaGFkaXQgPSBtTFJVQWN0aXZpdGllcy5yZW1vdmUocik7Ci0gICAgICAgIG1MUlVBY3Rpdml0aWVzLmFkZChyKTsKLSAgICAgICAgcmV0dXJuIGhhZGl0OwotICAgIH0KLQotICAgIHByaXZhdGUgZmluYWwgSGlzdG9yeVJlY29yZCB0b3BSdW5uaW5nQWN0aXZpdHlMb2NrZWQoSGlzdG9yeVJlY29yZCBub3RUb3ApIHsKLSAgICAgICAgaW50IGkgPSBtSGlzdG9yeS5zaXplKCktMTsKLSAgICAgICAgd2hpbGUgKGkgPj0gMCkgewotICAgICAgICAgICAgSGlzdG9yeVJlY29yZCByID0gKEhpc3RvcnlSZWNvcmQpbUhpc3RvcnkuZ2V0KGkpOwotICAgICAgICAgICAgaWYgKCFyLmZpbmlzaGluZyAmJiByICE9IG5vdFRvcCkgewotICAgICAgICAgICAgICAgIHJldHVybiByOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaS0tOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBudWxsOwotICAgIH0KLQotICAgIHByaXZhdGUgZmluYWwgSGlzdG9yeVJlY29yZCB0b3BSdW5uaW5nTm9uRGVsYXllZEFjdGl2aXR5TG9ja2VkKEhpc3RvcnlSZWNvcmQgbm90VG9wKSB7Ci0gICAgICAgIGludCBpID0gbUhpc3Rvcnkuc2l6ZSgpLTE7Ci0gICAgICAgIHdoaWxlIChpID49IDApIHsKLSAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgciA9IChIaXN0b3J5UmVjb3JkKW1IaXN0b3J5LmdldChpKTsKLSAgICAgICAgICAgIGlmICghci5maW5pc2hpbmcgJiYgIXIuZGVsYXllZFJlc3VtZSAmJiByICE9IG5vdFRvcCkgewotICAgICAgICAgICAgICAgIHJldHVybiByOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaS0tOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBudWxsOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIFRoaXMgaXMgYSBzaW1wbGlmaWVkIHZlcnNpb24gb2YgdG9wUnVubmluZ0FjdGl2aXR5TG9ja2VkIHRoYXQgcHJvdmlkZXMgYSBudW1iZXIgb2YKLSAgICAgKiBvcHRpb25hbCBza2lwLW92ZXIgbW9kZXMuICBJdCBpcyBpbnRlbmRlZCBmb3IgdXNlIHdpdGggdGhlIEFjdGl2aXR5Q29udHJvbGxlciBob29rIG9ubHkuCi0gICAgICogCi0gICAgICogQHBhcmFtIHRva2VuIElmIG5vbi1udWxsLCBhbnkgaGlzdG9yeSByZWNvcmRzIG1hdGNoaW5nIHRoaXMgdG9rZW4gd2lsbCBiZSBza2lwcGVkLgotICAgICAqIEBwYXJhbSB0YXNrSWQgSWYgbm9uLXplcm8sIHdlJ2xsIGF0dGVtcHQgdG8gc2tpcCBvdmVyIHJlY29yZHMgd2l0aCB0aGUgc2FtZSB0YXNrIElELgotICAgICAqIAotICAgICAqIEByZXR1cm4gUmV0dXJucyB0aGUgSGlzdG9yeVJlY29yZCBvZiB0aGUgbmV4dCBhY3Rpdml0eSBvbiB0aGUgc3RhY2suCi0gICAgICovCi0gICAgcHJpdmF0ZSBmaW5hbCBIaXN0b3J5UmVjb3JkIHRvcFJ1bm5pbmdBY3Rpdml0eUxvY2tlZChJQmluZGVyIHRva2VuLCBpbnQgdGFza0lkKSB7Ci0gICAgICAgIGludCBpID0gbUhpc3Rvcnkuc2l6ZSgpLTE7Ci0gICAgICAgIHdoaWxlIChpID49IDApIHsKLSAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgciA9IChIaXN0b3J5UmVjb3JkKW1IaXN0b3J5LmdldChpKTsKLSAgICAgICAgICAgIC8vIE5vdGU6IHRoZSB0YXNrSWQgY2hlY2sgZGVwZW5kcyBvbiByZWFsIHRhc2tJZCBmaWVsZHMgYmVpbmcgbm9uLXplcm8KLSAgICAgICAgICAgIGlmICghci5maW5pc2hpbmcgJiYgKHRva2VuICE9IHIpICYmICh0YXNrSWQgIT0gci50YXNrLnRhc2tJZCkpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGktLTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9Ci0KLSAgICBwcml2YXRlIGZpbmFsIFByb2Nlc3NSZWNvcmQgZ2V0UHJvY2Vzc1JlY29yZExvY2tlZCgKKyAgICBmaW5hbCBQcm9jZXNzUmVjb3JkIGdldFByb2Nlc3NSZWNvcmRMb2NrZWQoCiAgICAgICAgICAgICBTdHJpbmcgcHJvY2Vzc05hbWUsIGludCB1aWQpIHsKICAgICAgICAgaWYgKHVpZCA9PSBQcm9jZXNzLlNZU1RFTV9VSUQpIHsKICAgICAgICAgICAgIC8vIFRoZSBzeXN0ZW0gZ2V0cyB0byBydW4gaW4gYW55IHByb2Nlc3MuICBJZiB0aGVyZSBhcmUgbXVsdGlwbGUKQEAgLTE3NDgsOCArMTYyMiw4IEBACiAgICAgICAgIHJldHVybiBwcm9jOwogICAgIH0KIAotICAgIHByaXZhdGUgdm9pZCBlbnN1cmVQYWNrYWdlRGV4T3B0KFN0cmluZyBwYWNrYWdlTmFtZSkgewotICAgICAgICBJUGFja2FnZU1hbmFnZXIgcG0gPSBBY3Rpdml0eVRocmVhZC5nZXRQYWNrYWdlTWFuYWdlcigpOworICAgIHZvaWQgZW5zdXJlUGFja2FnZURleE9wdChTdHJpbmcgcGFja2FnZU5hbWUpIHsKKyAgICAgICAgSVBhY2thZ2VNYW5hZ2VyIHBtID0gQXBwR2xvYmFscy5nZXRQYWNrYWdlTWFuYWdlcigpOwogICAgICAgICB0cnkgewogICAgICAgICAgICAgaWYgKHBtLnBlcmZvcm1EZXhPcHQocGFja2FnZU5hbWUpKSB7CiAgICAgICAgICAgICAgICAgbURpZERleE9wdCA9IHRydWU7CkBAIC0xNzU4LDE1NyArMTYzMiwxNCBAQAogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIHByaXZhdGUgYm9vbGVhbiBpc05leHRUcmFuc2l0aW9uRm9yd2FyZCgpIHsKKyAgICBib29sZWFuIGlzTmV4dFRyYW5zaXRpb25Gb3J3YXJkKCkgewogICAgICAgICBpbnQgdHJhbnNpdCA9IG1XaW5kb3dNYW5hZ2VyLmdldFBlbmRpbmdBcHBUcmFuc2l0aW9uKCk7CiAgICAgICAgIHJldHVybiB0cmFuc2l0ID09IFdpbmRvd01hbmFnZXJQb2xpY3kuVFJBTlNJVF9BQ1RJVklUWV9PUEVOCiAgICAgICAgICAgICAgICAgfHwgdHJhbnNpdCA9PSBXaW5kb3dNYW5hZ2VyUG9saWN5LlRSQU5TSVRfVEFTS19PUEVOCiAgICAgICAgICAgICAgICAgfHwgdHJhbnNpdCA9PSBXaW5kb3dNYW5hZ2VyUG9saWN5LlRSQU5TSVRfVEFTS19UT19GUk9OVDsKICAgICB9CiAgICAgCi0gICAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIHJlYWxTdGFydEFjdGl2aXR5TG9ja2VkKEhpc3RvcnlSZWNvcmQgciwKLSAgICAgICAgICAgIFByb2Nlc3NSZWNvcmQgYXBwLCBib29sZWFuIGFuZFJlc3VtZSwgYm9vbGVhbiBjaGVja0NvbmZpZykKLSAgICAgICAgICAgIHRocm93cyBSZW1vdGVFeGNlcHRpb24gewotCi0gICAgICAgIHIuc3RhcnRGcmVlemluZ1NjcmVlbkxvY2tlZChhcHAsIDApOwotICAgICAgICBtV2luZG93TWFuYWdlci5zZXRBcHBWaXNpYmlsaXR5KHIsIHRydWUpOwotCi0gICAgICAgIC8vIEhhdmUgdGhlIHdpbmRvdyBtYW5hZ2VyIHJlLWV2YWx1YXRlIHRoZSBvcmllbnRhdGlvbiBvZgotICAgICAgICAvLyB0aGUgc2NyZWVuIGJhc2VkIG9uIHRoZSBuZXcgYWN0aXZpdHkgb3JkZXIuICBOb3RlIHRoYXQKLSAgICAgICAgLy8gYXMgYSByZXN1bHQgb2YgdGhpcywgaXQgY2FuIGNhbGwgYmFjayBpbnRvIHRoZSBhY3Rpdml0eQotICAgICAgICAvLyBtYW5hZ2VyIHdpdGggYSBuZXcgb3JpZW50YXRpb24uICBXZSBkb24ndCBjYXJlIGFib3V0IHRoYXQsCi0gICAgICAgIC8vIGJlY2F1c2UgdGhlIGFjdGl2aXR5IGlzIG5vdCBjdXJyZW50bHkgcnVubmluZyBzbyB3ZSBhcmUKLSAgICAgICAgLy8ganVzdCByZXN0YXJ0aW5nIGl0IGFueXdheS4KLSAgICAgICAgaWYgKGNoZWNrQ29uZmlnKSB7Ci0gICAgICAgICAgICBDb25maWd1cmF0aW9uIGNvbmZpZyA9IG1XaW5kb3dNYW5hZ2VyLnVwZGF0ZU9yaWVudGF0aW9uRnJvbUFwcFRva2VucygKLSAgICAgICAgICAgICAgICAgICAgbUNvbmZpZ3VyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgIHIubWF5RnJlZXplU2NyZWVuTG9ja2VkKGFwcCkgPyByIDogbnVsbCk7Ci0gICAgICAgICAgICB1cGRhdGVDb25maWd1cmF0aW9uTG9ja2VkKGNvbmZpZywgcik7Ci0gICAgICAgIH0KLQotICAgICAgICByLmFwcCA9IGFwcDsKLQotICAgICAgICBpZiAobG9jYWxMT0dWKSBTbG9nLnYoVEFHLCAiTGF1bmNoaW5nOiAiICsgcik7Ci0KLSAgICAgICAgaW50IGlkeCA9IGFwcC5hY3Rpdml0aWVzLmluZGV4T2Yocik7Ci0gICAgICAgIGlmIChpZHggPCAwKSB7Ci0gICAgICAgICAgICBhcHAuYWN0aXZpdGllcy5hZGQocik7Ci0gICAgICAgIH0KLSAgICAgICAgdXBkYXRlTHJ1UHJvY2Vzc0xvY2tlZChhcHAsIHRydWUsIHRydWUpOwotCi0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBpZiAoYXBwLnRocmVhZCA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJlbW90ZUV4Y2VwdGlvbigpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgTGlzdDxSZXN1bHRJbmZvPiByZXN1bHRzID0gbnVsbDsKLSAgICAgICAgICAgIExpc3Q8SW50ZW50PiBuZXdJbnRlbnRzID0gbnVsbDsKLSAgICAgICAgICAgIGlmIChhbmRSZXN1bWUpIHsKLSAgICAgICAgICAgICAgICByZXN1bHRzID0gci5yZXN1bHRzOwotICAgICAgICAgICAgICAgIG5ld0ludGVudHMgPSByLm5ld0ludGVudHM7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoREVCVUdfU1dJVENIKSBTbG9nLnYoVEFHLCAiTGF1bmNoaW5nOiAiICsgcgotICAgICAgICAgICAgICAgICAgICArICIgaWNpY2xlPSIgKyByLmljaWNsZQotICAgICAgICAgICAgICAgICAgICArICIgd2l0aCByZXN1bHRzPSIgKyByZXN1bHRzICsgIiBuZXdJbnRlbnRzPSIgKyBuZXdJbnRlbnRzCi0gICAgICAgICAgICAgICAgICAgICsgIiBhbmRSZXN1bWU9IiArIGFuZFJlc3VtZSk7Ci0gICAgICAgICAgICBpZiAoYW5kUmVzdW1lKSB7Ci0gICAgICAgICAgICAgICAgRXZlbnRMb2cud3JpdGVFdmVudChFdmVudExvZ1RhZ3MuQU1fUkVTVEFSVF9BQ1RJVklUWSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5pZGVudGl0eUhhc2hDb2RlKHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgci50YXNrLnRhc2tJZCwgci5zaG9ydENvbXBvbmVudE5hbWUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHIuaXNIb21lQWN0aXZpdHkpIHsKLSAgICAgICAgICAgICAgICBtSG9tZVByb2Nlc3MgPSBhcHA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbnN1cmVQYWNrYWdlRGV4T3B0KHIuaW50ZW50LmdldENvbXBvbmVudCgpLmdldFBhY2thZ2VOYW1lKCkpOwotICAgICAgICAgICAgYXBwLnRocmVhZC5zY2hlZHVsZUxhdW5jaEFjdGl2aXR5KG5ldyBJbnRlbnQoci5pbnRlbnQpLCByLAotICAgICAgICAgICAgICAgICAgICBTeXN0ZW0uaWRlbnRpdHlIYXNoQ29kZShyKSwKLSAgICAgICAgICAgICAgICAgICAgci5pbmZvLCByLmljaWNsZSwgcmVzdWx0cywgbmV3SW50ZW50cywgIWFuZFJlc3VtZSwKLSAgICAgICAgICAgICAgICAgICAgaXNOZXh0VHJhbnNpdGlvbkZvcndhcmQoKSk7Ci0gICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICBpZiAoci5sYXVuY2hGYWlsZWQpIHsKLSAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBzZWNvbmQgdGltZSB3ZSBmYWlsZWQgLS0gZmluaXNoIGFjdGl2aXR5Ci0gICAgICAgICAgICAgICAgLy8gYW5kIGdpdmUgdXAuCi0gICAgICAgICAgICAgICAgU2xvZy5lKFRBRywgIlNlY29uZCBmYWlsdXJlIGxhdW5jaGluZyAiCi0gICAgICAgICAgICAgICAgICAgICAgKyByLmludGVudC5nZXRDb21wb25lbnQoKS5mbGF0dGVuVG9TaG9ydFN0cmluZygpCi0gICAgICAgICAgICAgICAgICAgICAgKyAiLCBnaXZpbmcgdXAiLCBlKTsKLSAgICAgICAgICAgICAgICBhcHBEaWVkTG9ja2VkKGFwcCwgYXBwLnBpZCwgYXBwLnRocmVhZCk7Ci0gICAgICAgICAgICAgICAgcmVxdWVzdEZpbmlzaEFjdGl2aXR5TG9ja2VkKHIsIEFjdGl2aXR5LlJFU1VMVF9DQU5DRUxFRCwgbnVsbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICIybmQtY3Jhc2giKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgd2UgZmFpbGVkIC0tIHJlc3RhcnQgcHJvY2VzcyBhbmQKLSAgICAgICAgICAgIC8vIHJldHJ5LgotICAgICAgICAgICAgYXBwLmFjdGl2aXRpZXMucmVtb3ZlKHIpOwotICAgICAgICAgICAgdGhyb3cgZTsKLSAgICAgICAgfQotCi0gICAgICAgIHIubGF1bmNoRmFpbGVkID0gZmFsc2U7Ci0gICAgICAgIGlmICh1cGRhdGVMUlVMaXN0TG9ja2VkKHIpKSB7Ci0gICAgICAgICAgICBTbG9nLncoVEFHLCAiQWN0aXZpdHkgIiArIHIKLSAgICAgICAgICAgICAgICAgICsgIiBiZWluZyBsYXVuY2hlZCwgYnV0IGFscmVhZHkgaW4gTFJVIGxpc3QiKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChhbmRSZXN1bWUpIHsKLSAgICAgICAgICAgIC8vIEFzIHBhcnQgb2YgdGhlIHByb2Nlc3Mgb2YgbGF1bmNoaW5nLCBBY3Rpdml0eVRocmVhZCBhbHNvIHBlcmZvcm1zCi0gICAgICAgICAgICAvLyBhIHJlc3VtZS4KLSAgICAgICAgICAgIHIuc3RhdGUgPSBBY3Rpdml0eVN0YXRlLlJFU1VNRUQ7Ci0gICAgICAgICAgICByLmljaWNsZSA9IG51bGw7Ci0gICAgICAgICAgICByLmhhdmVTdGF0ZSA9IGZhbHNlOwotICAgICAgICAgICAgci5zdG9wcGVkID0gZmFsc2U7Ci0gICAgICAgICAgICBtUmVzdW1lZEFjdGl2aXR5ID0gcjsKLSAgICAgICAgICAgIHIudGFzay50b3VjaEFjdGl2ZVRpbWUoKTsKLSAgICAgICAgICAgIGNvbXBsZXRlUmVzdW1lTG9ja2VkKHIpOwotICAgICAgICAgICAgcGF1c2VJZlNsZWVwaW5nTG9ja2VkKCk7ICAgICAgICAgICAgICAgIAotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gVGhpcyBhY3Rpdml0eSBpcyBub3Qgc3RhcnRpbmcgaW4gdGhlIHJlc3VtZWQgc3RhdGUuLi4gd2hpY2gKLSAgICAgICAgICAgIC8vIHNob3VsZCBsb29rIGxpa2Ugd2UgYXNrZWQgaXQgdG8gcGF1c2Urc3RvcCAoYnV0IHJlbWFpbiB2aXNpYmxlKSwKLSAgICAgICAgICAgIC8vIGFuZCBpdCBoYXMgZG9uZSBzbyBhbmQgcmVwb3J0ZWQgYmFjayB0aGUgY3VycmVudCBpY2ljbGUgYW5kCi0gICAgICAgICAgICAvLyBvdGhlciBzdGF0ZS4KLSAgICAgICAgICAgIHIuc3RhdGUgPSBBY3Rpdml0eVN0YXRlLlNUT1BQRUQ7Ci0gICAgICAgICAgICByLnN0b3BwZWQgPSB0cnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gTGF1bmNoIHRoZSBuZXcgdmVyc2lvbiBzZXR1cCBzY3JlZW4gaWYgbmVlZGVkLiAgV2UgZG8gdGhpcyAtYWZ0ZXItCi0gICAgICAgIC8vIGxhdW5jaGluZyB0aGUgaW5pdGlhbCBhY3Rpdml0eSAodGhhdCBpcywgaG9tZSksIHNvIHRoYXQgaXQgY2FuIGhhdmUKLSAgICAgICAgLy8gYSBjaGFuY2UgdG8gaW5pdGlhbGl6ZSBpdHNlbGYgd2hpbGUgaW4gdGhlIGJhY2tncm91bmQsIG1ha2luZyB0aGUKLSAgICAgICAgLy8gc3dpdGNoIGJhY2sgdG8gaXQgZmFzdGVyIGFuZCBsb29rIGJldHRlci4KLSAgICAgICAgc3RhcnRTZXR1cEFjdGl2aXR5TG9ja2VkKCk7Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIGZpbmFsIHZvaWQgc3RhcnRTcGVjaWZpY0FjdGl2aXR5TG9ja2VkKEhpc3RvcnlSZWNvcmQgciwKLSAgICAgICAgICAgIGJvb2xlYW4gYW5kUmVzdW1lLCBib29sZWFuIGNoZWNrQ29uZmlnKSB7Ci0gICAgICAgIC8vIElzIHRoaXMgYWN0aXZpdHkncyBhcHBsaWNhdGlvbiBhbHJlYWR5IHJ1bm5pbmc/Ci0gICAgICAgIFByb2Nlc3NSZWNvcmQgYXBwID0gZ2V0UHJvY2Vzc1JlY29yZExvY2tlZChyLnByb2Nlc3NOYW1lLAotICAgICAgICAgICAgICAgIHIuaW5mby5hcHBsaWNhdGlvbkluZm8udWlkKTsKLSAgICAgICAgCi0gICAgICAgIGlmIChyLnN0YXJ0VGltZSA9PSAwKSB7Ci0gICAgICAgICAgICByLnN0YXJ0VGltZSA9IFN5c3RlbUNsb2NrLnVwdGltZU1pbGxpcygpOwotICAgICAgICAgICAgaWYgKG1Jbml0aWFsU3RhcnRUaW1lID09IDApIHsKLSAgICAgICAgICAgICAgICBtSW5pdGlhbFN0YXJ0VGltZSA9IHIuc3RhcnRUaW1lOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKG1Jbml0aWFsU3RhcnRUaW1lID09IDApIHsKLSAgICAgICAgICAgIG1Jbml0aWFsU3RhcnRUaW1lID0gU3lzdGVtQ2xvY2sudXB0aW1lTWlsbGlzKCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChhcHAgIT0gbnVsbCAmJiBhcHAudGhyZWFkICE9IG51bGwpIHsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgcmVhbFN0YXJ0QWN0aXZpdHlMb2NrZWQociwgYXBwLCBhbmRSZXN1bWUsIGNoZWNrQ29uZmlnKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsICJFeGNlcHRpb24gd2hlbiBzdGFydGluZyBhY3Rpdml0eSAiCi0gICAgICAgICAgICAgICAgICAgICAgICArIHIuaW50ZW50LmdldENvbXBvbmVudCgpLmZsYXR0ZW5Ub1Nob3J0U3RyaW5nKCksIGUpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBJZiBhIGRlYWQgb2JqZWN0IGV4Y2VwdGlvbiB3YXMgdGhyb3duIC0tIGZhbGwgdGhyb3VnaCB0bwotICAgICAgICAgICAgLy8gcmVzdGFydCB0aGUgYXBwbGljYXRpb24uCi0gICAgICAgIH0KLQotICAgICAgICBzdGFydFByb2Nlc3NMb2NrZWQoci5wcm9jZXNzTmFtZSwgci5pbmZvLmFwcGxpY2F0aW9uSW5mbywgdHJ1ZSwgMCwKLSAgICAgICAgICAgICAgICAiYWN0aXZpdHkiLCByLmludGVudC5nZXRDb21wb25lbnQoKSwgZmFsc2UpOwotICAgIH0KLQotICAgIHByaXZhdGUgZmluYWwgUHJvY2Vzc1JlY29yZCBzdGFydFByb2Nlc3NMb2NrZWQoU3RyaW5nIHByb2Nlc3NOYW1lLAorICAgIGZpbmFsIFByb2Nlc3NSZWNvcmQgc3RhcnRQcm9jZXNzTG9ja2VkKFN0cmluZyBwcm9jZXNzTmFtZSwKICAgICAgICAgICAgIEFwcGxpY2F0aW9uSW5mbyBpbmZvLCBib29sZWFuIGtub3duVG9CZURlYWQsIGludCBpbnRlbnRGbGFncywKICAgICAgICAgICAgIFN0cmluZyBob3N0aW5nVHlwZSwgQ29tcG9uZW50TmFtZSBob3N0aW5nTmFtZSwgYm9vbGVhbiBhbGxvd1doaWxlQm9vdGluZykgewogICAgICAgICBQcm9jZXNzUmVjb3JkIGFwcCA9IGdldFByb2Nlc3NSZWNvcmRMb2NrZWQocHJvY2Vzc05hbWUsIGluZm8udWlkKTsKQEAgLTIwNTQsNyArMTc4NSw3IEBACiAgICAgICAgICAgICAgICAgICAgIGhvc3RpbmdOYW1lU3RyICE9IG51bGwgPyBob3N0aW5nTmFtZVN0ciA6ICIiKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgaWYgKGFwcC5wZXJzaXN0ZW50KSB7Ci0gICAgICAgICAgICAgICAgV2F0Y2hkb2cuZ2V0SW5zdGFuY2UoKS5wcm9jZXNzU3RhcnRlZChhcHAsIGFwcC5wcm9jZXNzTmFtZSwgcGlkKTsKKyAgICAgICAgICAgICAgICBXYXRjaGRvZy5nZXRJbnN0YW5jZSgpLnByb2Nlc3NTdGFydGVkKGFwcC5wcm9jZXNzTmFtZSwgcGlkKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIAogICAgICAgICAgICAgU3RyaW5nQnVpbGRlciBidWYgPSBtU3RyaW5nQnVpbGRlcjsKQEAgLTIxMDksMzY1ICsxODQwLDcgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIHByaXZhdGUgZmluYWwgdm9pZCBzdGFydFBhdXNpbmdMb2NrZWQoYm9vbGVhbiB1c2VyTGVhdmluZywgYm9vbGVhbiB1aVNsZWVwaW5nKSB7Ci0gICAgICAgIGlmIChtUGF1c2luZ0FjdGl2aXR5ICE9IG51bGwpIHsKLSAgICAgICAgICAgIFJ1bnRpbWVFeGNlcHRpb24gZSA9IG5ldyBSdW50aW1lRXhjZXB0aW9uKCk7Ci0gICAgICAgICAgICBTbG9nLmUoVEFHLCAiVHJ5aW5nIHRvIHBhdXNlIHdoZW4gcGF1c2UgaXMgYWxyZWFkeSBwZW5kaW5nIGZvciAiCi0gICAgICAgICAgICAgICAgICArIG1QYXVzaW5nQWN0aXZpdHksIGUpOwotICAgICAgICB9Ci0gICAgICAgIEhpc3RvcnlSZWNvcmQgcHJldiA9IG1SZXN1bWVkQWN0aXZpdHk7Ci0gICAgICAgIGlmIChwcmV2ID09IG51bGwpIHsKLSAgICAgICAgICAgIFJ1bnRpbWVFeGNlcHRpb24gZSA9IG5ldyBSdW50aW1lRXhjZXB0aW9uKCk7Ci0gICAgICAgICAgICBTbG9nLmUoVEFHLCAiVHJ5aW5nIHRvIHBhdXNlIHdoZW4gbm90aGluZyBpcyByZXN1bWVkIiwgZSk7Ci0gICAgICAgICAgICByZXN1bWVUb3BBY3Rpdml0eUxvY2tlZChudWxsKTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBpZiAoREVCVUdfUEFVU0UpIFNsb2cudihUQUcsICJTdGFydCBwYXVzaW5nOiAiICsgcHJldik7Ci0gICAgICAgIG1SZXN1bWVkQWN0aXZpdHkgPSBudWxsOwotICAgICAgICBtUGF1c2luZ0FjdGl2aXR5ID0gcHJldjsKLSAgICAgICAgbUxhc3RQYXVzZWRBY3Rpdml0eSA9IHByZXY7Ci0gICAgICAgIHByZXYuc3RhdGUgPSBBY3Rpdml0eVN0YXRlLlBBVVNJTkc7Ci0gICAgICAgIHByZXYudGFzay50b3VjaEFjdGl2ZVRpbWUoKTsKLQotICAgICAgICB1cGRhdGVDcHVTdGF0cygpOwotICAgICAgICAKLSAgICAgICAgaWYgKHByZXYuYXBwICE9IG51bGwgJiYgcHJldi5hcHAudGhyZWFkICE9IG51bGwpIHsKLSAgICAgICAgICAgIGlmIChERUJVR19QQVVTRSkgU2xvZy52KFRBRywgIkVucXVldWVpbmcgcGVuZGluZyBwYXVzZTogIiArIHByZXYpOwotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBFdmVudExvZy53cml0ZUV2ZW50KEV2ZW50TG9nVGFncy5BTV9QQVVTRV9BQ1RJVklUWSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5pZGVudGl0eUhhc2hDb2RlKHByZXYpLAotICAgICAgICAgICAgICAgICAgICAgICAgcHJldi5zaG9ydENvbXBvbmVudE5hbWUpOwotICAgICAgICAgICAgICAgIHByZXYuYXBwLnRocmVhZC5zY2hlZHVsZVBhdXNlQWN0aXZpdHkocHJldiwgcHJldi5maW5pc2hpbmcsIHVzZXJMZWF2aW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgcHJldi5jb25maWdDaGFuZ2VGbGFncyk7Ci0gICAgICAgICAgICAgICAgdXBkYXRlVXNhZ2VTdGF0cyhwcmV2LCBmYWxzZSk7Ci0gICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgIC8vIElnbm9yZSBleGNlcHRpb24sIGlmIHByb2Nlc3MgZGllZCBvdGhlciBjb2RlIHdpbGwgY2xlYW51cC4KLSAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiRXhjZXB0aW9uIHRocm93biBkdXJpbmcgcGF1c2UiLCBlKTsKLSAgICAgICAgICAgICAgICBtUGF1c2luZ0FjdGl2aXR5ID0gbnVsbDsKLSAgICAgICAgICAgICAgICBtTGFzdFBhdXNlZEFjdGl2aXR5ID0gbnVsbDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1QYXVzaW5nQWN0aXZpdHkgPSBudWxsOwotICAgICAgICAgICAgbUxhc3RQYXVzZWRBY3Rpdml0eSA9IG51bGw7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBJZiB3ZSBhcmUgbm90IGdvaW5nIHRvIHNsZWVwLCB3ZSB3YW50IHRvIGVuc3VyZSB0aGUgZGV2aWNlIGlzCi0gICAgICAgIC8vIGF3YWtlIHVudGlsIHRoZSBuZXh0IGFjdGl2aXR5IGlzIHN0YXJ0ZWQuCi0gICAgICAgIGlmICghbVNsZWVwaW5nICYmICFtU2h1dHRpbmdEb3duKSB7Ci0gICAgICAgICAgICBtTGF1bmNoaW5nQWN0aXZpdHkuYWNxdWlyZSgpOwotICAgICAgICAgICAgaWYgKCFtSGFuZGxlci5oYXNNZXNzYWdlcyhMQVVOQ0hfVElNRU9VVF9NU0cpKSB7Ci0gICAgICAgICAgICAgICAgLy8gVG8gYmUgc2FmZSwgZG9uJ3QgYWxsb3cgdGhlIHdha2UgbG9jayB0byBiZSBoZWxkIGZvciB0b28gbG9uZy4KLSAgICAgICAgICAgICAgICBNZXNzYWdlIG1zZyA9IG1IYW5kbGVyLm9idGFpbk1lc3NhZ2UoTEFVTkNIX1RJTUVPVVRfTVNHKTsKLSAgICAgICAgICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZURlbGF5ZWQobXNnLCBMQVVOQ0hfVElNRU9VVCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotCi0gICAgICAgIGlmIChtUGF1c2luZ0FjdGl2aXR5ICE9IG51bGwpIHsKLSAgICAgICAgICAgIC8vIEhhdmUgdGhlIHdpbmRvdyBtYW5hZ2VyIHBhdXNlIGl0cyBrZXkgZGlzcGF0Y2hpbmcgdW50aWwgdGhlIG5ldwotICAgICAgICAgICAgLy8gYWN0aXZpdHkgaGFzIHN0YXJ0ZWQuICBJZiB3ZSdyZSBwYXVzaW5nIHRoZSBhY3Rpdml0eSBqdXN0IGJlY2F1c2UKLSAgICAgICAgICAgIC8vIHRoZSBzY3JlZW4gaXMgYmVpbmcgdHVybmVkIG9mZiBhbmQgdGhlIFVJIGlzIHNsZWVwaW5nLCBkb24ndCBpbnRlcnJ1cHQKLSAgICAgICAgICAgIC8vIGtleSBkaXNwYXRjaDsgdGhlIHNhbWUgYWN0aXZpdHkgd2lsbCBwaWNrIGl0IHVwIGFnYWluIG9uIHdha2V1cC4KLSAgICAgICAgICAgIGlmICghdWlTbGVlcGluZykgewotICAgICAgICAgICAgICAgIHByZXYucGF1c2VLZXlEaXNwYXRjaGluZ0xvY2tlZCgpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBpZiAoREVCVUdfUEFVU0UpIFNsb2cudihUQUcsICJLZXkgZGlzcGF0Y2ggbm90IHBhdXNlZCBmb3Igc2NyZWVuIG9mZiIpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBTY2hlZHVsZSBhIHBhdXNlIHRpbWVvdXQgaW4gY2FzZSB0aGUgYXBwIGRvZXNuJ3QgcmVzcG9uZC4KLSAgICAgICAgICAgIC8vIFdlIGRvbid0IGdpdmUgaXQgbXVjaCB0aW1lIGJlY2F1c2UgdGhpcyBkaXJlY3RseSBpbXBhY3RzIHRoZQotICAgICAgICAgICAgLy8gcmVzcG9uc2l2ZW5lc3Mgc2VlbiBieSB0aGUgdXNlci4KLSAgICAgICAgICAgIE1lc3NhZ2UgbXNnID0gbUhhbmRsZXIub2J0YWluTWVzc2FnZShQQVVTRV9USU1FT1VUX01TRyk7Ci0gICAgICAgICAgICBtc2cub2JqID0gcHJldjsKLSAgICAgICAgICAgIG1IYW5kbGVyLnNlbmRNZXNzYWdlRGVsYXllZChtc2csIFBBVVNFX1RJTUVPVVQpOwotICAgICAgICAgICAgaWYgKERFQlVHX1BBVVNFKSBTbG9nLnYoVEFHLCAiV2FpdGluZyBmb3IgcGF1c2UgdG8gY29tcGxldGUuLi4iKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIFRoaXMgYWN0aXZpdHkgZmFpbGVkIHRvIHNjaGVkdWxlIHRoZQotICAgICAgICAgICAgLy8gcGF1c2UsIHNvIGp1c3QgdHJlYXQgaXQgYXMgYmVpbmcgcGF1c2VkIG5vdy4KLSAgICAgICAgICAgIGlmIChERUJVR19QQVVTRSkgU2xvZy52KFRBRywgIkFjdGl2aXR5IG5vdCBydW5uaW5nLCByZXN1bWluZyBuZXh0LiIpOwotICAgICAgICAgICAgcmVzdW1lVG9wQWN0aXZpdHlMb2NrZWQobnVsbCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwcml2YXRlIGZpbmFsIHZvaWQgY29tcGxldGVQYXVzZUxvY2tlZCgpIHsKLSAgICAgICAgSGlzdG9yeVJlY29yZCBwcmV2ID0gbVBhdXNpbmdBY3Rpdml0eTsKLSAgICAgICAgaWYgKERFQlVHX1BBVVNFKSBTbG9nLnYoVEFHLCAiQ29tcGxldGUgcGF1c2U6ICIgKyBwcmV2KTsKLSAgICAgICAgCi0gICAgICAgIGlmIChwcmV2ICE9IG51bGwpIHsKLSAgICAgICAgICAgIGlmIChwcmV2LmZpbmlzaGluZykgewotICAgICAgICAgICAgICAgIGlmIChERUJVR19QQVVTRSkgU2xvZy52KFRBRywgIkV4ZWN1dGluZyBmaW5pc2ggb2YgYWN0aXZpdHk6ICIgKyBwcmV2KTsKLSAgICAgICAgICAgICAgICBwcmV2ID0gZmluaXNoQ3VycmVudEFjdGl2aXR5TG9ja2VkKHByZXYsIEZJTklTSF9BRlRFUl9WSVNJQkxFKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAocHJldi5hcHAgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIGlmIChERUJVR19QQVVTRSkgU2xvZy52KFRBRywgIkVucXVldWVpbmcgcGVuZGluZyBzdG9wOiAiICsgcHJldik7Ci0gICAgICAgICAgICAgICAgaWYgKHByZXYud2FpdGluZ1Zpc2libGUpIHsKLSAgICAgICAgICAgICAgICAgICAgcHJldi53YWl0aW5nVmlzaWJsZSA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgICBtV2FpdGluZ1Zpc2libGVBY3Rpdml0aWVzLnJlbW92ZShwcmV2KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX1NXSVRDSCB8fCBERUJVR19QQVVTRSkgU2xvZy52KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRBRywgIkNvbXBsZXRlIHBhdXNlLCBubyBsb25nZXIgd2FpdGluZzogIiArIHByZXYpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAocHJldi5jb25maWdEZXN0cm95KSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFRoZSBwcmV2aW91cyBpcyBiZWluZyBwYXVzZWQgYmVjYXVzZSB0aGUgY29uZmlndXJhdGlvbgotICAgICAgICAgICAgICAgICAgICAvLyBpcyBjaGFuZ2luZywgd2hpY2ggbWVhbnMgaXQgaXMgYWN0dWFsbHkgc3RvcHBpbmcuLi4KLSAgICAgICAgICAgICAgICAgICAgLy8gVG8ganVnZ2xlIHRoZSBmYWN0IHRoYXQgd2UgYXJlIGFsc28gc3RhcnRpbmcgYSBuZXcKLSAgICAgICAgICAgICAgICAgICAgLy8gaW5zdGFuY2UgcmlnaHQgbm93LCB3ZSBuZWVkIHRvIGZpcnN0IGNvbXBsZXRlbHkgc3RvcAotICAgICAgICAgICAgICAgICAgICAvLyB0aGUgY3VycmVudCBpbnN0YW5jZSBiZWZvcmUgc3RhcnRpbmcgdGhlIG5ldyBvbmUuCi0gICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19QQVVTRSkgU2xvZy52KFRBRywgIkRlc3Ryb3lpbmcgYWZ0ZXIgcGF1c2U6ICIgKyBwcmV2KTsKLSAgICAgICAgICAgICAgICAgICAgZGVzdHJveUFjdGl2aXR5TG9ja2VkKHByZXYsIHRydWUpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIG1TdG9wcGluZ0FjdGl2aXRpZXMuYWRkKHByZXYpOwotICAgICAgICAgICAgICAgICAgICBpZiAobVN0b3BwaW5nQWN0aXZpdGllcy5zaXplKCkgPiAzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB3ZSBhbHJlYWR5IGhhdmUgYSBmZXcgYWN0aXZpdGllcyB3YWl0aW5nIHRvIHN0b3AsCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGVuIGdpdmUgdXAgb24gdGhpbmdzIGdvaW5nIGlkbGUgYW5kIHN0YXJ0IGNsZWFyaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGVtIG91dC4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19QQVVTRSkgU2xvZy52KFRBRywgIlRvIG1hbnkgcGVuZGluZyBzdG9wcywgZm9yY2luZyBpZGxlIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlIG1zZyA9IE1lc3NhZ2Uub2J0YWluKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtc2cud2hhdCA9IEFjdGl2aXR5TWFuYWdlclNlcnZpY2UuSURMRV9OT1dfTVNHOwotICAgICAgICAgICAgICAgICAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2UobXNnKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKERFQlVHX1BBVVNFKSBTbG9nLnYoVEFHLCAiQXBwIGRpZWQgZHVyaW5nIHBhdXNlLCBub3Qgc3RvcHBpbmc6ICIgKyBwcmV2KTsKLSAgICAgICAgICAgICAgICBwcmV2ID0gbnVsbDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1QYXVzaW5nQWN0aXZpdHkgPSBudWxsOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFtU2xlZXBpbmcgJiYgIW1TaHV0dGluZ0Rvd24pIHsKLSAgICAgICAgICAgIHJlc3VtZVRvcEFjdGl2aXR5TG9ja2VkKHByZXYpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKG1Hb2luZ1RvU2xlZXAuaXNIZWxkKCkpIHsKLSAgICAgICAgICAgICAgICBtR29pbmdUb1NsZWVwLnJlbGVhc2UoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChtU2h1dHRpbmdEb3duKSB7Ci0gICAgICAgICAgICAgICAgbm90aWZ5QWxsKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChwcmV2ICE9IG51bGwpIHsKLSAgICAgICAgICAgIHByZXYucmVzdW1lS2V5RGlzcGF0Y2hpbmdMb2NrZWQoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChwcmV2LmFwcCAhPSBudWxsICYmIHByZXYuY3B1VGltZUF0UmVzdW1lID4gMCAmJiBtQmF0dGVyeVN0YXRzU2VydmljZS5pc09uQmF0dGVyeSgpKSB7Ci0gICAgICAgICAgICBsb25nIGRpZmYgPSAwOwotICAgICAgICAgICAgc3luY2hyb25pemVkIChtUHJvY2Vzc1N0YXRzVGhyZWFkKSB7Ci0gICAgICAgICAgICAgICAgZGlmZiA9IG1Qcm9jZXNzU3RhdHMuZ2V0Q3B1VGltZUZvclBpZChwcmV2LmFwcC5waWQpIC0gcHJldi5jcHVUaW1lQXRSZXN1bWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoZGlmZiA+IDApIHsKLSAgICAgICAgICAgICAgICBCYXR0ZXJ5U3RhdHNJbXBsIGJzaSA9IG1CYXR0ZXJ5U3RhdHNTZXJ2aWNlLmdldEFjdGl2ZVN0YXRpc3RpY3MoKTsKLSAgICAgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKGJzaSkgewotICAgICAgICAgICAgICAgICAgICBCYXR0ZXJ5U3RhdHNJbXBsLlVpZC5Qcm9jIHBzID0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBic2kuZ2V0UHJvY2Vzc1N0YXRzTG9ja2VkKHByZXYuaW5mby5hcHBsaWNhdGlvbkluZm8udWlkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXYuaW5mby5wYWNrYWdlTmFtZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwcyAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcy5hZGRGb3JlZ3JvdW5kVGltZUxvY2tlZChkaWZmKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBwcmV2LmNwdVRpbWVBdFJlc3VtZSA9IDA7IC8vIHJlc2V0IGl0Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogT25jZSB3ZSBrbm93IHRoYXQgd2UgaGF2ZSBhc2tlZCBhbiBhcHBsaWNhdGlvbiB0byBwdXQgYW4gYWN0aXZpdHkgaW4KLSAgICAgKiB0aGUgcmVzdW1lZCBzdGF0ZSAoZWl0aGVyIGJ5IGxhdW5jaGluZyBpdCBvciBleHBsaWNpdGx5IHRlbGxpbmcgaXQpLAotICAgICAqIHRoaXMgZnVuY3Rpb24gdXBkYXRlcyB0aGUgcmVzdCBvZiBvdXIgc3RhdGUgdG8gbWF0Y2ggdGhhdCBmYWN0LgotICAgICAqLwotICAgIHByaXZhdGUgZmluYWwgdm9pZCBjb21wbGV0ZVJlc3VtZUxvY2tlZChIaXN0b3J5UmVjb3JkIG5leHQpIHsKLSAgICAgICAgbmV4dC5pZGxlID0gZmFsc2U7Ci0gICAgICAgIG5leHQucmVzdWx0cyA9IG51bGw7Ci0gICAgICAgIG5leHQubmV3SW50ZW50cyA9IG51bGw7Ci0KLSAgICAgICAgLy8gc2NoZWR1bGUgYW4gaWRsZSB0aW1lb3V0IGluIGNhc2UgdGhlIGFwcCBkb2Vzbid0IGRvIGl0IGZvciB1cy4KLSAgICAgICAgTWVzc2FnZSBtc2cgPSBtSGFuZGxlci5vYnRhaW5NZXNzYWdlKElETEVfVElNRU9VVF9NU0cpOwotICAgICAgICBtc2cub2JqID0gbmV4dDsKLSAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2VEZWxheWVkKG1zZywgSURMRV9USU1FT1VUKTsKLQotICAgICAgICBpZiAoZmFsc2UpIHsKLSAgICAgICAgICAgIC8vIFRoZSBhY3Rpdml0eSB3YXMgbmV2ZXIgdG9sZCB0byBwYXVzZSwgc28ganVzdCBrZWVwCi0gICAgICAgICAgICAvLyB0aGluZ3MgZ29pbmcgYXMtaXMuICBUbyBtYWludGFpbiBvdXIgb3duIHN0YXRlLAotICAgICAgICAgICAgLy8gd2UgbmVlZCB0byBlbXVsYXRlIGl0IGNvbWluZyBiYWNrIGFuZCBzYXlpbmcgaXQgaXMKLSAgICAgICAgICAgIC8vIGlkbGUuCi0gICAgICAgICAgICBtc2cgPSBtSGFuZGxlci5vYnRhaW5NZXNzYWdlKElETEVfTk9XX01TRyk7Ci0gICAgICAgICAgICBtc2cub2JqID0gbmV4dDsKLSAgICAgICAgICAgIG1IYW5kbGVyLnNlbmRNZXNzYWdlKG1zZyk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXBvcnRSZXN1bWVkQWN0aXZpdHlMb2NrZWQobmV4dCk7Ci0gICAgICAgIAotICAgICAgICBuZXh0LnRodW1ibmFpbCA9IG51bGw7Ci0gICAgICAgIHNldEZvY3VzZWRBY3Rpdml0eUxvY2tlZChuZXh0KTsKLSAgICAgICAgbmV4dC5yZXN1bWVLZXlEaXNwYXRjaGluZ0xvY2tlZCgpOwotICAgICAgICBlbnN1cmVBY3Rpdml0aWVzVmlzaWJsZUxvY2tlZChudWxsLCAwKTsKLSAgICAgICAgbVdpbmRvd01hbmFnZXIuZXhlY3V0ZUFwcFRyYW5zaXRpb24oKTsKLSAgICAgICAgbU5vQW5pbUFjdGl2aXRpZXMuY2xlYXIoKTsKLQotICAgICAgICAvLyBNYXJrIHRoZSBwb2ludCB3aGVuIHRoZSBhY3Rpdml0eSBpcyByZXN1bWluZwotICAgICAgICAvLyBUT0RPOiBUbyBiZSBtb3JlIGFjY3VyYXRlLCB0aGUgbWFyayBzaG91bGQgYmUgYmVmb3JlIHRoZSBvbkNyZWF0ZSwKLSAgICAgICAgLy8gICAgICAgbm90IGFmdGVyIHRoZSBvblJlc3VtZS4gQnV0IGZvciBzdWJzZXF1ZW50IHN0YXJ0cywgb25SZXN1bWUgaXMgZmluZS4KLSAgICAgICAgaWYgKG5leHQuYXBwICE9IG51bGwpIHsKLSAgICAgICAgICAgIHN5bmNocm9uaXplZCAobVByb2Nlc3NTdGF0c1RocmVhZCkgewotICAgICAgICAgICAgICAgIG5leHQuY3B1VGltZUF0UmVzdW1lID0gbVByb2Nlc3NTdGF0cy5nZXRDcHVUaW1lRm9yUGlkKG5leHQuYXBwLnBpZCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBuZXh0LmNwdVRpbWVBdFJlc3VtZSA9IDA7IC8vIENvdWxkbid0IGdldCB0aGUgY3B1IHRpbWUgb2YgcHJvY2VzcwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogTWFrZSBzdXJlIHRoYXQgYWxsIGFjdGl2aXRpZXMgdGhhdCBuZWVkIHRvIGJlIHZpc2libGUgKHRoYXQgaXMsIHRoZXkKLSAgICAgKiBjdXJyZW50bHkgY2FuIGJlIHNlZW4gYnkgdGhlIHVzZXIpIGFjdHVhbGx5IGFyZS4KLSAgICAgKi8KLSAgICBwcml2YXRlIGZpbmFsIHZvaWQgZW5zdXJlQWN0aXZpdGllc1Zpc2libGVMb2NrZWQoSGlzdG9yeVJlY29yZCB0b3AsCi0gICAgICAgICAgICBIaXN0b3J5UmVjb3JkIHN0YXJ0aW5nLCBTdHJpbmcgb25seVRoaXNQcm9jZXNzLCBpbnQgY29uZmlnQ2hhbmdlcykgewotICAgICAgICBpZiAoREVCVUdfVklTQklMSVRZKSBTbG9nLnYoCi0gICAgICAgICAgICAgICAgVEFHLCAiZW5zdXJlQWN0aXZpdGllc1Zpc2libGUgYmVoaW5kICIgKyB0b3AKLSAgICAgICAgICAgICAgICArICIgY29uZmlnQ2hhbmdlcz0weCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKGNvbmZpZ0NoYW5nZXMpKTsKLQotICAgICAgICAvLyBJZiB0aGUgdG9wIGFjdGl2aXR5IGlzIG5vdCBmdWxsc2NyZWVuLCB0aGVuIHdlIG5lZWQgdG8KLSAgICAgICAgLy8gbWFrZSBzdXJlIGFueSBhY3Rpdml0aWVzIHVuZGVyIGl0IGFyZSBub3cgdmlzaWJsZS4KLSAgICAgICAgZmluYWwgaW50IGNvdW50ID0gbUhpc3Rvcnkuc2l6ZSgpOwotICAgICAgICBpbnQgaSA9IGNvdW50LTE7Ci0gICAgICAgIHdoaWxlIChtSGlzdG9yeS5nZXQoaSkgIT0gdG9wKSB7Ci0gICAgICAgICAgICBpLS07Ci0gICAgICAgIH0KLSAgICAgICAgSGlzdG9yeVJlY29yZCByOwotICAgICAgICBib29sZWFuIGJlaGluZEZ1bGxzY3JlZW4gPSBmYWxzZTsKLSAgICAgICAgZm9yICg7IGk+PTA7IGktLSkgewotICAgICAgICAgICAgciA9IChIaXN0b3J5UmVjb3JkKW1IaXN0b3J5LmdldChpKTsKLSAgICAgICAgICAgIGlmIChERUJVR19WSVNCSUxJVFkpIFNsb2cudigKLSAgICAgICAgICAgICAgICAgICAgVEFHLCAiTWFrZSB2aXNpYmxlPyAiICsgciArICIgZmluaXNoaW5nPSIgKyByLmZpbmlzaGluZwotICAgICAgICAgICAgICAgICAgICArICIgc3RhdGU9IiArIHIuc3RhdGUpOwotICAgICAgICAgICAgaWYgKHIuZmluaXNoaW5nKSB7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gZG9UaGlzUHJvY2VzcyA9IG9ubHlUaGlzUHJvY2VzcyA9PSBudWxsCi0gICAgICAgICAgICAgICAgICAgIHx8IG9ubHlUaGlzUHJvY2Vzcy5lcXVhbHMoci5wcm9jZXNzTmFtZSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIC8vIEZpcnN0OiBpZiB0aGlzIGlzIG5vdCB0aGUgY3VycmVudCBhY3Rpdml0eSBiZWluZyBzdGFydGVkLCBtYWtlCi0gICAgICAgICAgICAvLyBzdXJlIGl0IG1hdGNoZXMgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi4KLSAgICAgICAgICAgIGlmIChyICE9IHN0YXJ0aW5nICYmIGRvVGhpc1Byb2Nlc3MpIHsKLSAgICAgICAgICAgICAgICBlbnN1cmVBY3Rpdml0eUNvbmZpZ3VyYXRpb25Mb2NrZWQociwgMCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChyLmFwcCA9PSBudWxsIHx8IHIuYXBwLnRocmVhZCA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgaWYgKG9ubHlUaGlzUHJvY2VzcyA9PSBudWxsCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCBvbmx5VGhpc1Byb2Nlc3MuZXF1YWxzKHIucHJvY2Vzc05hbWUpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgYWN0aXZpdHkgbmVlZHMgdG8gYmUgdmlzaWJsZSwgYnV0IGlzbid0IGV2ZW4KLSAgICAgICAgICAgICAgICAgICAgLy8gcnVubmluZy4uLiAgZ2V0IGl0IHN0YXJ0ZWQsIGJ1dCBkb24ndCByZXN1bWUgaXQKLSAgICAgICAgICAgICAgICAgICAgLy8gYXQgdGhpcyBwb2ludC4KLSAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX1ZJU0JJTElUWSkgU2xvZy52KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRBRywgIlN0YXJ0IGFuZCBmcmVlemUgc2NyZWVuIGZvciAiICsgcik7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyICE9IHN0YXJ0aW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByLnN0YXJ0RnJlZXppbmdTY3JlZW5Mb2NrZWQoci5hcHAsIGNvbmZpZ0NoYW5nZXMpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmICghci52aXNpYmxlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfVklTQklMSVRZKSBTbG9nLnYoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRBRywgIlN0YXJ0aW5nIGFuZCBtYWtpbmcgdmlzaWJsZTogIiArIHIpOwotICAgICAgICAgICAgICAgICAgICAgICAgbVdpbmRvd01hbmFnZXIuc2V0QXBwVmlzaWJpbGl0eShyLCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAociAhPSBzdGFydGluZykgewotICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRTcGVjaWZpY0FjdGl2aXR5TG9ja2VkKHIsIGZhbHNlLCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIH0gZWxzZSBpZiAoci52aXNpYmxlKSB7Ci0gICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBhY3Rpdml0eSBpcyBhbHJlYWR5IHZpc2libGUsIHRoZW4gdGhlcmUgaXMgbm90aGluZwotICAgICAgICAgICAgICAgIC8vIGVsc2UgdG8gZG8gaGVyZS4KLSAgICAgICAgICAgICAgICBpZiAoREVCVUdfVklTQklMSVRZKSBTbG9nLnYoCi0gICAgICAgICAgICAgICAgICAgICAgICBUQUcsICJTa2lwcGluZzogYWxyZWFkeSB2aXNpYmxlIGF0ICIgKyByKTsKLSAgICAgICAgICAgICAgICByLnN0b3BGcmVlemluZ1NjcmVlbkxvY2tlZChmYWxzZSk7Ci0KLSAgICAgICAgICAgIH0gZWxzZSBpZiAob25seVRoaXNQcm9jZXNzID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICAvLyBUaGlzIGFjdGl2aXR5IGlzIG5vdCBjdXJyZW50bHkgdmlzaWJsZSwgYnV0IGlzIHJ1bm5pbmcuCi0gICAgICAgICAgICAgICAgLy8gVGVsbCBpdCB0byBiZWNvbWUgdmlzaWJsZS4KLSAgICAgICAgICAgICAgICByLnZpc2libGUgPSB0cnVlOwotICAgICAgICAgICAgICAgIGlmIChyLnN0YXRlICE9IEFjdGl2aXR5U3RhdGUuUkVTVU1FRCAmJiByICE9IHN0YXJ0aW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgYWN0aXZpdHkgaXMgcGF1c2VkLCB0ZWxsIGl0Ci0gICAgICAgICAgICAgICAgICAgIC8vIHRvIG5vdyBzaG93IGl0cyB3aW5kb3cuCi0gICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19WSVNCSUxJVFkpIFNsb2cudigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQUcsICJNYWtpbmcgdmlzaWJsZSBhbmQgc2NoZWR1bGluZyB2aXNpYmlsaXR5OiAiICsgcik7Ci0gICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtV2luZG93TWFuYWdlci5zZXRBcHBWaXNpYmlsaXR5KHIsIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgci5hcHAudGhyZWFkLnNjaGVkdWxlV2luZG93VmlzaWJpbGl0eShyLCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHIuc3RvcEZyZWV6aW5nU2NyZWVuTG9ja2VkKGZhbHNlKTsKLSAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEp1c3Qgc2tpcCBvbiBhbnkgZmFpbHVyZTsgd2UnbGwgbWFrZSBpdAotICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmlzaWJsZSB3aGVuIGl0IG5leHQgcmVzdGFydHMuCi0gICAgICAgICAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiRXhjZXB0aW9uIHRocm93biBtYWtpbmcgdmlzaWJpbGU6ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyByLmludGVudC5nZXRDb21wb25lbnQoKSwgZSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIEFnZ3JlZ2F0ZSBjdXJyZW50IGNoYW5nZSBmbGFncy4KLSAgICAgICAgICAgIGNvbmZpZ0NoYW5nZXMgfD0gci5jb25maWdDaGFuZ2VGbGFnczsKLQotICAgICAgICAgICAgaWYgKHIuZnVsbHNjcmVlbikgewotICAgICAgICAgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQsIG5vdGhpbmcgZWxzZSBuZWVkcyB0byBiZSBzaG93bgotICAgICAgICAgICAgICAgIGlmIChERUJVR19WSVNCSUxJVFkpIFNsb2cudigKLSAgICAgICAgICAgICAgICAgICAgICAgIFRBRywgIlN0b3BwaW5nOiBmdWxsc2NyZWVuIGF0ICIgKyByKTsKLSAgICAgICAgICAgICAgICBiZWhpbmRGdWxsc2NyZWVuID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBpLS07Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBOb3cgZm9yIGFueSBhY3Rpdml0aWVzIHRoYXQgYXJlbid0IHZpc2libGUgdG8gdGhlIHVzZXIsIG1ha2UKLSAgICAgICAgLy8gc3VyZSB0aGV5IG5vIGxvbmdlciBhcmUga2VlcGluZyB0aGUgc2NyZWVuIGZyb3plbi4KLSAgICAgICAgd2hpbGUgKGkgPj0gMCkgewotICAgICAgICAgICAgciA9IChIaXN0b3J5UmVjb3JkKW1IaXN0b3J5LmdldChpKTsKLSAgICAgICAgICAgIGlmIChERUJVR19WSVNCSUxJVFkpIFNsb2cudigKLSAgICAgICAgICAgICAgICAgICAgVEFHLCAiTWFrZSBpbnZpc2libGU/ICIgKyByICsgIiBmaW5pc2hpbmc9IiArIHIuZmluaXNoaW5nCi0gICAgICAgICAgICAgICAgICAgICsgIiBzdGF0ZT0iICsgci5zdGF0ZQotICAgICAgICAgICAgICAgICAgICArICIgYmVoaW5kRnVsbHNjcmVlbj0iICsgYmVoaW5kRnVsbHNjcmVlbik7Ci0gICAgICAgICAgICBpZiAoIXIuZmluaXNoaW5nKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGJlaGluZEZ1bGxzY3JlZW4pIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHIudmlzaWJsZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX1ZJU0JJTElUWSkgU2xvZy52KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQUcsICJNYWtpbmcgaW52aXNpYmxlOiAiICsgcik7Ci0gICAgICAgICAgICAgICAgICAgICAgICByLnZpc2libGUgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbVdpbmRvd01hbmFnZXIuc2V0QXBwVmlzaWJpbGl0eShyLCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChyLnN0YXRlID09IEFjdGl2aXR5U3RhdGUuU1RPUFBJTkcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHIuc3RhdGUgPT0gQWN0aXZpdHlTdGF0ZS5TVE9QUEVEKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgci5hcHAgIT0gbnVsbCAmJiByLmFwcC50aHJlYWQgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfVklTQklMSVRZKSBTbG9nLnYoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEFHLCAiU2NoZWR1bGluZyBpbnZpc2liaWxpdHk6ICIgKyByKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5hcHAudGhyZWFkLnNjaGVkdWxlV2luZG93VmlzaWJpbGl0eShyLCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBKdXN0IHNraXAgb24gYW55IGZhaWx1cmU7IHdlJ2xsIG1ha2UgaXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2aXNpYmxlIHdoZW4gaXQgbmV4dCByZXN0YXJ0cy4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiRXhjZXB0aW9uIHRocm93biBtYWtpbmcgaGlkZGVuOiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHIuaW50ZW50LmdldENvbXBvbmVudCgpLCBlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19WSVNCSUxJVFkpIFNsb2cudigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEFHLCAiQWxyZWFkeSBpbnZpc2libGU6ICIgKyByKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoci5mdWxsc2NyZWVuKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19WSVNCSUxJVFkpIFNsb2cudigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQUcsICJOb3cgYmVoaW5kRnVsbHNjcmVlbjogIiArIHIpOwotICAgICAgICAgICAgICAgICAgICBiZWhpbmRGdWxsc2NyZWVuID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpLS07Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBWZXJzaW9uIG9mIGVuc3VyZUFjdGl2aXRpZXNWaXNpYmxlIHRoYXQgY2FuIGVhc2lseSBiZSBjYWxsZWQgYW55d2hlcmUuCi0gICAgICovCi0gICAgcHJpdmF0ZSBmaW5hbCB2b2lkIGVuc3VyZUFjdGl2aXRpZXNWaXNpYmxlTG9ja2VkKEhpc3RvcnlSZWNvcmQgc3RhcnRpbmcsCi0gICAgICAgICAgICBpbnQgY29uZmlnQ2hhbmdlcykgewotICAgICAgICBIaXN0b3J5UmVjb3JkIHIgPSB0b3BSdW5uaW5nQWN0aXZpdHlMb2NrZWQobnVsbCk7Ci0gICAgICAgIGlmIChyICE9IG51bGwpIHsKLSAgICAgICAgICAgIGVuc3VyZUFjdGl2aXRpZXNWaXNpYmxlTG9ja2VkKHIsIHN0YXJ0aW5nLCBudWxsLCBjb25maWdDaGFuZ2VzKTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICBwcml2YXRlIHZvaWQgdXBkYXRlVXNhZ2VTdGF0cyhIaXN0b3J5UmVjb3JkIHJlc3VtZWRDb21wb25lbnQsIGJvb2xlYW4gcmVzdW1lZCkgeworICAgIHZvaWQgdXBkYXRlVXNhZ2VTdGF0cyhBY3Rpdml0eVJlY29yZCByZXN1bWVkQ29tcG9uZW50LCBib29sZWFuIHJlc3VtZWQpIHsKICAgICAgICAgaWYgKHJlc3VtZWQpIHsKICAgICAgICAgICAgIG1Vc2FnZVN0YXRzU2VydmljZS5ub3RlUmVzdW1lQ29tcG9uZW50KHJlc3VtZWRDb21wb25lbnQucmVhbEFjdGl2aXR5KTsKICAgICAgICAgfSBlbHNlIHsKQEAgLTI0NzUsNyArMTg0OCw3IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwcml2YXRlIGJvb2xlYW4gc3RhcnRIb21lQWN0aXZpdHlMb2NrZWQoKSB7CisgICAgYm9vbGVhbiBzdGFydEhvbWVBY3Rpdml0eUxvY2tlZCgpIHsKICAgICAgICAgaWYgKG1GYWN0b3J5VGVzdCA9PSBTeXN0ZW1TZXJ2ZXIuRkFDVE9SWV9URVNUX0xPV19MRVZFTAogICAgICAgICAgICAgICAgICYmIG1Ub3BBY3Rpb24gPT0gbnVsbCkgewogICAgICAgICAgICAgLy8gV2UgYXJlIHJ1bm5pbmcgaW4gZmFjdG9yeSB0ZXN0IG1vZGUsIGJ1dCB1bmFibGUgdG8gZmluZApAQCAtMjUwMiw3ICsxODc1LDcgQEAKICAgICAgICAgICAgICAgICAgICAgYUluZm8uYXBwbGljYXRpb25JbmZvLnVpZCk7CiAgICAgICAgICAgICBpZiAoYXBwID09IG51bGwgfHwgYXBwLmluc3RydW1lbnRhdGlvbkNsYXNzID09IG51bGwpIHsKICAgICAgICAgICAgICAgICBpbnRlbnQuc2V0RmxhZ3MoaW50ZW50LmdldEZsYWdzKCkgfCBJbnRlbnQuRkxBR19BQ1RJVklUWV9ORVdfVEFTSyk7Ci0gICAgICAgICAgICAgICAgc3RhcnRBY3Rpdml0eUxvY2tlZChudWxsLCBpbnRlbnQsIG51bGwsIG51bGwsIDAsIGFJbmZvLAorICAgICAgICAgICAgICAgIG1NYWluU3RhY2suc3RhcnRBY3Rpdml0eUxvY2tlZChudWxsLCBpbnRlbnQsIG51bGwsIG51bGwsIDAsIGFJbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwgbnVsbCwgMCwgMCwgMCwgZmFsc2UsIGZhbHNlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMjUxNCw3ICsxODg3LDcgQEAKICAgICAvKioKICAgICAgKiBTdGFydHMgdGhlICJuZXcgdmVyc2lvbiBzZXR1cCBzY3JlZW4iIGlmIGFwcHJvcHJpYXRlLgogICAgICAqLwotICAgIHByaXZhdGUgdm9pZCBzdGFydFNldHVwQWN0aXZpdHlMb2NrZWQoKSB7CisgICAgdm9pZCBzdGFydFNldHVwQWN0aXZpdHlMb2NrZWQoKSB7CiAgICAgICAgIC8vIE9ubHkgZG8gdGhpcyBvbmNlIHBlciBib290LgogICAgICAgICBpZiAobUNoZWNrZWRGb3JTZXR1cCkgewogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjU1OCwxNCArMTkzMSwxNCBAQAogICAgICAgICAgICAgICAgICAgICBpbnRlbnQuc2V0RmxhZ3MoSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX1RBU0spOwogICAgICAgICAgICAgICAgICAgICBpbnRlbnQuc2V0Q29tcG9uZW50KG5ldyBDb21wb25lbnROYW1lKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJpLmFjdGl2aXR5SW5mby5wYWNrYWdlTmFtZSwgcmkuYWN0aXZpdHlJbmZvLm5hbWUpKTsKLSAgICAgICAgICAgICAgICAgICAgc3RhcnRBY3Rpdml0eUxvY2tlZChudWxsLCBpbnRlbnQsIG51bGwsIG51bGwsIDAsIHJpLmFjdGl2aXR5SW5mbywKKyAgICAgICAgICAgICAgICAgICAgbU1haW5TdGFjay5zdGFydEFjdGl2aXR5TG9ja2VkKG51bGwsIGludGVudCwgbnVsbCwgbnVsbCwgMCwgcmkuYWN0aXZpdHlJbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsIG51bGwsIDAsIDAsIDAsIGZhbHNlLCBmYWxzZSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIAotICAgIHByaXZhdGUgdm9pZCByZXBvcnRSZXN1bWVkQWN0aXZpdHlMb2NrZWQoSGlzdG9yeVJlY29yZCByKSB7CisgICAgdm9pZCByZXBvcnRSZXN1bWVkQWN0aXZpdHlMb2NrZWQoQWN0aXZpdHlSZWNvcmQgcikgewogICAgICAgICAvL1Nsb2cuaShUQUcsICIqKioqIFJFUE9SVCBSRVNVTUU6ICIgKyByKTsKICAgICAgICAgCiAgICAgICAgIGZpbmFsIGludCBpZGVudEhhc2ggPSBTeXN0ZW0uaWRlbnRpdHlIYXNoQ29kZShyKTsKQEAgLTI1ODQsMTIxMCArMTk1NywyNyBAQAogICAgICAgICB9CiAgICAgICAgIG1XYXRjaGVycy5maW5pc2hCcm9hZGNhc3QoKTsKICAgICB9Ci0gICAgCi0gICAgLyoqCi0gICAgICogRW5zdXJlIHRoYXQgdGhlIHRvcCBhY3Rpdml0eSBpbiB0aGUgc3RhY2sgaXMgcmVzdW1lZC4KLSAgICAgKgotICAgICAqIEBwYXJhbSBwcmV2IFRoZSBwcmV2aW91c2x5IHJlc3VtZWQgYWN0aXZpdHksIGZvciB3aGVuIGluIHRoZSBwcm9jZXNzCi0gICAgICogb2YgcGF1c2luZzsgY2FuIGJlIG51bGwgdG8gY2FsbCBmcm9tIGVsc2V3aGVyZS4KLSAgICAgKgotICAgICAqIEByZXR1cm4gUmV0dXJucyB0cnVlIGlmIHNvbWV0aGluZyBpcyBiZWluZyByZXN1bWVkLCBvciBmYWxzZSBpZgotICAgICAqIG5vdGhpbmcgaGFwcGVuZWQuCi0gICAgICovCi0gICAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIHJlc3VtZVRvcEFjdGl2aXR5TG9ja2VkKEhpc3RvcnlSZWNvcmQgcHJldikgewotICAgICAgICAvLyBGaW5kIHRoZSBmaXJzdCBhY3Rpdml0eSB0aGF0IGlzIG5vdCBmaW5pc2hpbmcuCi0gICAgICAgIEhpc3RvcnlSZWNvcmQgbmV4dCA9IHRvcFJ1bm5pbmdBY3Rpdml0eUxvY2tlZChudWxsKTsKIAotICAgICAgICAvLyBSZW1lbWJlciBob3cgd2UnbGwgcHJvY2VzcyB0aGlzIHBhdXNlL3Jlc3VtZSBzaXR1YXRpb24sIGFuZCBlbnN1cmUKLSAgICAgICAgLy8gdGhhdCB0aGUgc3RhdGUgaXMgcmVzZXQgaG93ZXZlciB3ZSB3aW5kIHVwIHByb2NlZWRpbmcuCi0gICAgICAgIGZpbmFsIGJvb2xlYW4gdXNlckxlYXZpbmcgPSBtVXNlckxlYXZpbmc7Ci0gICAgICAgIG1Vc2VyTGVhdmluZyA9IGZhbHNlOwotCi0gICAgICAgIGlmIChuZXh0ID09IG51bGwpIHsKLSAgICAgICAgICAgIC8vIFRoZXJlIGFyZSBubyBtb3JlIGFjdGl2aXRpZXMhICBMZXQncyBqdXN0IHN0YXJ0IHVwIHRoZQotICAgICAgICAgICAgLy8gTGF1bmNoZXIuLi4KLSAgICAgICAgICAgIHJldHVybiBzdGFydEhvbWVBY3Rpdml0eUxvY2tlZCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgbmV4dC5kZWxheWVkUmVzdW1lID0gZmFsc2U7Ci0gICAgICAgIAotICAgICAgICAvLyBJZiB0aGUgdG9wIGFjdGl2aXR5IGlzIHRoZSByZXN1bWVkIG9uZSwgbm90aGluZyB0byBkby4KLSAgICAgICAgaWYgKG1SZXN1bWVkQWN0aXZpdHkgPT0gbmV4dCAmJiBuZXh0LnN0YXRlID09IEFjdGl2aXR5U3RhdGUuUkVTVU1FRCkgewotICAgICAgICAgICAgLy8gTWFrZSBzdXJlIHdlIGhhdmUgZXhlY3V0ZWQgYW55IHBlbmRpbmcgdHJhbnNpdGlvbnMsIHNpbmNlIHRoZXJlCi0gICAgICAgICAgICAvLyBzaG91bGQgYmUgbm90aGluZyBsZWZ0IHRvIGRvIGF0IHRoaXMgcG9pbnQuCi0gICAgICAgICAgICBtV2luZG93TWFuYWdlci5leGVjdXRlQXBwVHJhbnNpdGlvbigpOwotICAgICAgICAgICAgbU5vQW5pbUFjdGl2aXRpZXMuY2xlYXIoKTsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIElmIHdlIGFyZSBzbGVlcGluZywgYW5kIHRoZXJlIGlzIG5vIHJlc3VtZWQgYWN0aXZpdHksIGFuZCB0aGUgdG9wCi0gICAgICAgIC8vIGFjdGl2aXR5IGlzIHBhdXNlZCwgd2VsbCB0aGF0IGlzIHRoZSBzdGF0ZSB3ZSB3YW50LgotICAgICAgICBpZiAoKG1TbGVlcGluZyB8fCBtU2h1dHRpbmdEb3duKQotICAgICAgICAgICAgICAgICYmIG1MYXN0UGF1c2VkQWN0aXZpdHkgPT0gbmV4dCAmJiBuZXh0LnN0YXRlID09IEFjdGl2aXR5U3RhdGUuUEFVU0VEKSB7Ci0gICAgICAgICAgICAvLyBNYWtlIHN1cmUgd2UgaGF2ZSBleGVjdXRlZCBhbnkgcGVuZGluZyB0cmFuc2l0aW9ucywgc2luY2UgdGhlcmUKLSAgICAgICAgICAgIC8vIHNob3VsZCBiZSBub3RoaW5nIGxlZnQgdG8gZG8gYXQgdGhpcyBwb2ludC4KLSAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyLmV4ZWN1dGVBcHBUcmFuc2l0aW9uKCk7Ci0gICAgICAgICAgICBtTm9BbmltQWN0aXZpdGllcy5jbGVhcigpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAvLyBUaGUgYWN0aXZpdHkgbWF5IGJlIHdhaXRpbmcgZm9yIHN0b3AsIGJ1dCB0aGF0IGlzIG5vIGxvbmdlcgotICAgICAgICAvLyBhcHByb3ByaWF0ZSBmb3IgaXQuCi0gICAgICAgIG1TdG9wcGluZ0FjdGl2aXRpZXMucmVtb3ZlKG5leHQpOwotICAgICAgICBtV2FpdGluZ1Zpc2libGVBY3Rpdml0aWVzLnJlbW92ZShuZXh0KTsKLQotICAgICAgICBpZiAoREVCVUdfU1dJVENIKSBTbG9nLnYoVEFHLCAiUmVzdW1pbmcgIiArIG5leHQpOwotCi0gICAgICAgIC8vIElmIHdlIGFyZSBjdXJyZW50bHkgcGF1c2luZyBhbiBhY3Rpdml0eSwgdGhlbiBkb24ndCBkbyBhbnl0aGluZwotICAgICAgICAvLyB1bnRpbCB0aGF0IGlzIGRvbmUuCi0gICAgICAgIGlmIChtUGF1c2luZ0FjdGl2aXR5ICE9IG51bGwpIHsKLSAgICAgICAgICAgIGlmIChERUJVR19TV0lUQ0gpIFNsb2cudihUQUcsICJTa2lwIHJlc3VtZTogcGF1c2luZz0iICsgbVBhdXNpbmdBY3Rpdml0eSk7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBXZSBuZWVkIHRvIHN0YXJ0IHBhdXNpbmcgdGhlIGN1cnJlbnQgYWN0aXZpdHkgc28gdGhlIHRvcCBvbmUKLSAgICAgICAgLy8gY2FuIGJlIHJlc3VtZWQuLi4KLSAgICAgICAgaWYgKG1SZXN1bWVkQWN0aXZpdHkgIT0gbnVsbCkgewotICAgICAgICAgICAgaWYgKERFQlVHX1NXSVRDSCkgU2xvZy52KFRBRywgIlNraXAgcmVzdW1lOiBuZWVkIHRvIHN0YXJ0IHBhdXNpbmciKTsKLSAgICAgICAgICAgIHN0YXJ0UGF1c2luZ0xvY2tlZCh1c2VyTGVhdmluZywgZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAocHJldiAhPSBudWxsICYmIHByZXYgIT0gbmV4dCkgewotICAgICAgICAgICAgaWYgKCFwcmV2LndhaXRpbmdWaXNpYmxlICYmIG5leHQgIT0gbnVsbCAmJiAhbmV4dC5ub3dWaXNpYmxlKSB7Ci0gICAgICAgICAgICAgICAgcHJldi53YWl0aW5nVmlzaWJsZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgbVdhaXRpbmdWaXNpYmxlQWN0aXZpdGllcy5hZGQocHJldik7Ci0gICAgICAgICAgICAgICAgaWYgKERFQlVHX1NXSVRDSCkgU2xvZy52KAotICAgICAgICAgICAgICAgICAgICAgICAgVEFHLCAiUmVzdW1pbmcgdG9wLCB3YWl0aW5nIHZpc2libGUgdG8gaGlkZTogIiArIHByZXYpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAvLyBUaGUgbmV4dCBhY3Rpdml0eSBpcyBhbHJlYWR5IHZpc2libGUsIHNvIGhpZGUgdGhlIHByZXZpb3VzCi0gICAgICAgICAgICAgICAgLy8gYWN0aXZpdHkncyB3aW5kb3dzIHJpZ2h0IG5vdyBzbyB3ZSBjYW4gc2hvdyB0aGUgbmV3IG9uZSBBU0FQLgotICAgICAgICAgICAgICAgIC8vIFdlIG9ubHkgZG8gdGhpcyBpZiB0aGUgcHJldmlvdXMgaXMgZmluaXNoaW5nLCB3aGljaCBzaG91bGQgbWVhbgotICAgICAgICAgICAgICAgIC8vIGl0IGlzIG9uIHRvcCBvZiB0aGUgb25lIGJlaW5nIHJlc3VtZWQgc28gaGlkaW5nIGl0IHF1aWNrbHkKLSAgICAgICAgICAgICAgICAvLyBpcyBnb29kLiAgT3RoZXJ3aXNlLCB3ZSB3YW50IHRvIGRvIHRoZSBub3JtYWwgcm91dGUgb2YgYWxsb3dpbmcKLSAgICAgICAgICAgICAgICAvLyB0aGUgcmVzdW1lZCBhY3Rpdml0eSB0byBiZSBzaG93biBzbyB3ZSBjYW4gZGVjaWRlIGlmIHRoZQotICAgICAgICAgICAgICAgIC8vIHByZXZpb3VzIHNob3VsZCBhY3R1YWxseSBiZSBoaWRkZW4gZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlCi0gICAgICAgICAgICAgICAgLy8gbmV3IG9uZSBpcyBmb3VuZCB0byBiZSBmdWxsLXNjcmVlbiBvciBub3QuCi0gICAgICAgICAgICAgICAgaWYgKHByZXYuZmluaXNoaW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyLnNldEFwcFZpc2liaWxpdHkocHJldiwgZmFsc2UpOwotICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfU1dJVENIKSBTbG9nLnYoVEFHLCAiTm90IHdhaXRpbmcgZm9yIHZpc2libGUgdG8gaGlkZTogIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgcHJldiArICIsIHdhaXRpbmdWaXNpYmxlPSIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICArIChwcmV2ICE9IG51bGwgPyBwcmV2LndhaXRpbmdWaXNpYmxlIDogbnVsbCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIsIG5vd1Zpc2libGU9IiArIG5leHQubm93VmlzaWJsZSk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX1NXSVRDSCkgU2xvZy52KFRBRywgIlByZXZpb3VzIGFscmVhZHkgdmlzaWJsZSBidXQgc3RpbGwgd2FpdGluZyB0byBoaWRlOiAiCi0gICAgICAgICAgICAgICAgICAgICAgICArIHByZXYgKyAiLCB3YWl0aW5nVmlzaWJsZT0iCi0gICAgICAgICAgICAgICAgICAgICAgICArIChwcmV2ICE9IG51bGwgPyBwcmV2LndhaXRpbmdWaXNpYmxlIDogbnVsbCkKLSAgICAgICAgICAgICAgICAgICAgICAgICsgIiwgbm93VmlzaWJsZT0iICsgbmV4dC5ub3dWaXNpYmxlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBXZSBhcmUgc3RhcnRpbmcgdXAgdGhlIG5leHQgYWN0aXZpdHksIHNvIHRlbGwgdGhlIHdpbmRvdyBtYW5hZ2VyCi0gICAgICAgIC8vIHRoYXQgdGhlIHByZXZpb3VzIG9uZSB3aWxsIGJlIGhpZGRlbiBzb29uLiAgVGhpcyB3YXkgaXQgY2FuIGtub3cKLSAgICAgICAgLy8gdG8gaWdub3JlIGl0IHdoZW4gY29tcHV0aW5nIHRoZSBkZXNpcmVkIHNjcmVlbiBvcmllbnRhdGlvbi4KLSAgICAgICAgaWYgKHByZXYgIT0gbnVsbCkgewotICAgICAgICAgICAgaWYgKHByZXYuZmluaXNoaW5nKSB7Ci0gICAgICAgICAgICAgICAgaWYgKERFQlVHX1RSQU5TSVRJT04pIFNsb2cudihUQUcsCi0gICAgICAgICAgICAgICAgICAgICAgICAiUHJlcGFyZSBjbG9zZSB0cmFuc2l0aW9uOiBwcmV2PSIgKyBwcmV2KTsKLSAgICAgICAgICAgICAgICBpZiAobU5vQW5pbUFjdGl2aXRpZXMuY29udGFpbnMocHJldikpIHsKLSAgICAgICAgICAgICAgICAgICAgbVdpbmRvd01hbmFnZXIucHJlcGFyZUFwcFRyYW5zaXRpb24oV2luZG93TWFuYWdlclBvbGljeS5UUkFOU0lUX05PTkUpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyLnByZXBhcmVBcHBUcmFuc2l0aW9uKHByZXYudGFzayA9PSBuZXh0LnRhc2sKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFdpbmRvd01hbmFnZXJQb2xpY3kuVFJBTlNJVF9BQ1RJVklUWV9DTE9TRQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDogV2luZG93TWFuYWdlclBvbGljeS5UUkFOU0lUX1RBU0tfQ0xPU0UpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBtV2luZG93TWFuYWdlci5zZXRBcHBXaWxsQmVIaWRkZW4ocHJldik7Ci0gICAgICAgICAgICAgICAgbVdpbmRvd01hbmFnZXIuc2V0QXBwVmlzaWJpbGl0eShwcmV2LCBmYWxzZSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGlmIChERUJVR19UUkFOU0lUSU9OKSBTbG9nLnYoVEFHLAotICAgICAgICAgICAgICAgICAgICAgICAgIlByZXBhcmUgb3BlbiB0cmFuc2l0aW9uOiBwcmV2PSIgKyBwcmV2KTsKLSAgICAgICAgICAgICAgICBpZiAobU5vQW5pbUFjdGl2aXRpZXMuY29udGFpbnMobmV4dCkpIHsKLSAgICAgICAgICAgICAgICAgICAgbVdpbmRvd01hbmFnZXIucHJlcGFyZUFwcFRyYW5zaXRpb24oV2luZG93TWFuYWdlclBvbGljeS5UUkFOU0lUX05PTkUpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyLnByZXBhcmVBcHBUcmFuc2l0aW9uKHByZXYudGFzayA9PSBuZXh0LnRhc2sKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA/IFdpbmRvd01hbmFnZXJQb2xpY3kuVFJBTlNJVF9BQ1RJVklUWV9PUEVOCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBXaW5kb3dNYW5hZ2VyUG9saWN5LlRSQU5TSVRfVEFTS19PUEVOKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoZmFsc2UpIHsKLSAgICAgICAgICAgICAgICBtV2luZG93TWFuYWdlci5zZXRBcHBXaWxsQmVIaWRkZW4ocHJldik7Ci0gICAgICAgICAgICAgICAgbVdpbmRvd01hbmFnZXIuc2V0QXBwVmlzaWJpbGl0eShwcmV2LCBmYWxzZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAobUhpc3Rvcnkuc2l6ZSgpID4gMSkgewotICAgICAgICAgICAgaWYgKERFQlVHX1RSQU5TSVRJT04pIFNsb2cudihUQUcsCi0gICAgICAgICAgICAgICAgICAgICJQcmVwYXJlIG9wZW4gdHJhbnNpdGlvbjogbm8gcHJldmlvdXMiKTsKLSAgICAgICAgICAgIGlmIChtTm9BbmltQWN0aXZpdGllcy5jb250YWlucyhuZXh0KSkgewotICAgICAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyLnByZXBhcmVBcHBUcmFuc2l0aW9uKFdpbmRvd01hbmFnZXJQb2xpY3kuVFJBTlNJVF9OT05FKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbVdpbmRvd01hbmFnZXIucHJlcGFyZUFwcFRyYW5zaXRpb24oV2luZG93TWFuYWdlclBvbGljeS5UUkFOU0lUX0FDVElWSVRZX09QRU4pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG5leHQuYXBwICE9IG51bGwgJiYgbmV4dC5hcHAudGhyZWFkICE9IG51bGwpIHsKLSAgICAgICAgICAgIGlmIChERUJVR19TV0lUQ0gpIFNsb2cudihUQUcsICJSZXN1bWUgcnVubmluZzogIiArIG5leHQpOwotCi0gICAgICAgICAgICAvLyBUaGlzIGFjdGl2aXR5IGlzIG5vdyBiZWNvbWluZyB2aXNpYmxlLgotICAgICAgICAgICAgbVdpbmRvd01hbmFnZXIuc2V0QXBwVmlzaWJpbGl0eShuZXh0LCB0cnVlKTsKLQotICAgICAgICAgICAgSGlzdG9yeVJlY29yZCBsYXN0UmVzdW1lZEFjdGl2aXR5ID0gbVJlc3VtZWRBY3Rpdml0eTsKLSAgICAgICAgICAgIEFjdGl2aXR5U3RhdGUgbGFzdFN0YXRlID0gbmV4dC5zdGF0ZTsKLQotICAgICAgICAgICAgdXBkYXRlQ3B1U3RhdHMoKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgbmV4dC5zdGF0ZSA9IEFjdGl2aXR5U3RhdGUuUkVTVU1FRDsKLSAgICAgICAgICAgIG1SZXN1bWVkQWN0aXZpdHkgPSBuZXh0OwotICAgICAgICAgICAgbmV4dC50YXNrLnRvdWNoQWN0aXZlVGltZSgpOwotICAgICAgICAgICAgdXBkYXRlTHJ1UHJvY2Vzc0xvY2tlZChuZXh0LmFwcCwgdHJ1ZSwgdHJ1ZSk7Ci0gICAgICAgICAgICB1cGRhdGVMUlVMaXN0TG9ja2VkKG5leHQpOwotCi0gICAgICAgICAgICAvLyBIYXZlIHRoZSB3aW5kb3cgbWFuYWdlciByZS1ldmFsdWF0ZSB0aGUgb3JpZW50YXRpb24gb2YKLSAgICAgICAgICAgIC8vIHRoZSBzY3JlZW4gYmFzZWQgb24gdGhlIG5ldyBhY3Rpdml0eSBvcmRlci4KLSAgICAgICAgICAgIGJvb2xlYW4gdXBkYXRlZDsKLSAgICAgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgewotICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24gY29uZmlnID0gbVdpbmRvd01hbmFnZXIudXBkYXRlT3JpZW50YXRpb25Gcm9tQXBwVG9rZW5zKAotICAgICAgICAgICAgICAgICAgICAgICAgbUNvbmZpZ3VyYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXh0Lm1heUZyZWV6ZVNjcmVlbkxvY2tlZChuZXh0LmFwcCkgPyBuZXh0IDogbnVsbCk7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbmZpZyAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIG5leHQuZnJvemVuQmVmb3JlRGVzdHJveSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHVwZGF0ZWQgPSB1cGRhdGVDb25maWd1cmF0aW9uTG9ja2VkKGNvbmZpZywgbmV4dCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIXVwZGF0ZWQpIHsKLSAgICAgICAgICAgICAgICAvLyBUaGUgY29uZmlndXJhdGlvbiB1cGRhdGUgd2Fzbid0IGFibGUgdG8ga2VlcCB0aGUgZXhpc3RpbmcKLSAgICAgICAgICAgICAgICAvLyBpbnN0YW5jZSBvZiB0aGUgYWN0aXZpdHksIGFuZCBpbnN0ZWFkIHN0YXJ0ZWQgYSBuZXcgb25lLgotICAgICAgICAgICAgICAgIC8vIFdlIHNob3VsZCBiZSBhbGwgZG9uZSwgYnV0IGxldCdzIGp1c3QgbWFrZSBzdXJlIG91ciBhY3Rpdml0eQotICAgICAgICAgICAgICAgIC8vIGlzIHN0aWxsIGF0IHRoZSB0b3AgYW5kIHNjaGVkdWxlIGFub3RoZXIgcnVuIGlmIHNvbWV0aGluZwotICAgICAgICAgICAgICAgIC8vIHdlaXJkIGhhcHBlbmVkLgotICAgICAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgbmV4dE5leHQgPSB0b3BSdW5uaW5nQWN0aXZpdHlMb2NrZWQobnVsbCk7Ci0gICAgICAgICAgICAgICAgaWYgKERFQlVHX1NXSVRDSCkgU2xvZy5pKFRBRywKLSAgICAgICAgICAgICAgICAgICAgICAgICJBY3Rpdml0eSBjb25maWcgY2hhbmdlZCBkdXJpbmcgcmVzdW1lOiAiICsgbmV4dAotICAgICAgICAgICAgICAgICAgICAgICAgKyAiLCBuZXcgbmV4dDogIiArIG5leHROZXh0KTsKLSAgICAgICAgICAgICAgICBpZiAobmV4dE5leHQgIT0gbmV4dCkgewotICAgICAgICAgICAgICAgICAgICAvLyBEbyBvdmVyIQotICAgICAgICAgICAgICAgICAgICBtSGFuZGxlci5zZW5kRW1wdHlNZXNzYWdlKFJFU1VNRV9UT1BfQUNUSVZJVFlfTVNHKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc2V0Rm9jdXNlZEFjdGl2aXR5TG9ja2VkKG5leHQpOwotICAgICAgICAgICAgICAgIGVuc3VyZUFjdGl2aXRpZXNWaXNpYmxlTG9ja2VkKG51bGwsIDApOwotICAgICAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyLmV4ZWN1dGVBcHBUcmFuc2l0aW9uKCk7Ci0gICAgICAgICAgICAgICAgbU5vQW5pbUFjdGl2aXRpZXMuY2xlYXIoKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAvLyBEZWxpdmVyIGFsbCBwZW5kaW5nIHJlc3VsdHMuCi0gICAgICAgICAgICAgICAgQXJyYXlMaXN0IGEgPSBuZXh0LnJlc3VsdHM7Ci0gICAgICAgICAgICAgICAgaWYgKGEgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICBmaW5hbCBpbnQgTiA9IGEuc2l6ZSgpOwotICAgICAgICAgICAgICAgICAgICBpZiAoIW5leHQuZmluaXNoaW5nICYmIE4gPiAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfUkVTVUxUUykgU2xvZy52KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQUcsICJEZWxpdmVyaW5nIHJlc3VsdHMgdG8gIiArIG5leHQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiOiAiICsgYSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXh0LmFwcC50aHJlYWQuc2NoZWR1bGVTZW5kUmVzdWx0KG5leHQsIGEpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgaWYgKG5leHQubmV3SW50ZW50cyAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIG5leHQuYXBwLnRocmVhZC5zY2hlZHVsZU5ld0ludGVudChuZXh0Lm5ld0ludGVudHMsIG5leHQpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIEV2ZW50TG9nLndyaXRlRXZlbnQoRXZlbnRMb2dUYWdzLkFNX1JFU1VNRV9BQ1RJVklUWSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5pZGVudGl0eUhhc2hDb2RlKG5leHQpLAotICAgICAgICAgICAgICAgICAgICAgICAgbmV4dC50YXNrLnRhc2tJZCwgbmV4dC5zaG9ydENvbXBvbmVudE5hbWUpOwotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIG5leHQuYXBwLnRocmVhZC5zY2hlZHVsZVJlc3VtZUFjdGl2aXR5KG5leHQsCi0gICAgICAgICAgICAgICAgICAgICAgICBpc05leHRUcmFuc2l0aW9uRm9yd2FyZCgpKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBwYXVzZUlmU2xlZXBpbmdMb2NrZWQoKTsKLQotICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICAvLyBXaG9vcHMsIG5lZWQgdG8gcmVzdGFydCB0aGlzIGFjdGl2aXR5IQotICAgICAgICAgICAgICAgIG5leHQuc3RhdGUgPSBsYXN0U3RhdGU7Ci0gICAgICAgICAgICAgICAgbVJlc3VtZWRBY3Rpdml0eSA9IGxhc3RSZXN1bWVkQWN0aXZpdHk7Ci0gICAgICAgICAgICAgICAgU2xvZy5pKFRBRywgIlJlc3RhcnRpbmcgYmVjYXVzZSBwcm9jZXNzIGRpZWQ6ICIgKyBuZXh0KTsKLSAgICAgICAgICAgICAgICBpZiAoIW5leHQuaGFzQmVlbkxhdW5jaGVkKSB7Ci0gICAgICAgICAgICAgICAgICAgIG5leHQuaGFzQmVlbkxhdW5jaGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBpZiAoU0hPV19BUFBfU1RBUlRJTkdfSUNPTikgewotICAgICAgICAgICAgICAgICAgICAgICAgbVdpbmRvd01hbmFnZXIuc2V0QXBwU3RhcnRpbmdXaW5kb3coCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQsIG5leHQucGFja2FnZU5hbWUsIG5leHQudGhlbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQubm9uTG9jYWxpemVkTGFiZWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQubGFiZWxSZXMsIG5leHQuaWNvbiwgbnVsbCwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc3RhcnRTcGVjaWZpY0FjdGl2aXR5TG9ja2VkKG5leHQsIHRydWUsIGZhbHNlKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gRnJvbSB0aGlzIHBvaW50IG9uLCBpZiBzb21ldGhpbmcgZ29lcyB3cm9uZyB0aGVyZSBpcyBubyB3YXkKLSAgICAgICAgICAgIC8vIHRvIHJlY292ZXIgdGhlIGFjdGl2aXR5LgotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBuZXh0LnZpc2libGUgPSB0cnVlOwotICAgICAgICAgICAgICAgIGNvbXBsZXRlUmVzdW1lTG9ja2VkKG5leHQpOwotICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICAvLyBJZiBhbnkgZXhjZXB0aW9uIGdldHMgdGhyb3duLCB0b3NzIGF3YXkgdGhpcwotICAgICAgICAgICAgICAgIC8vIGFjdGl2aXR5IGFuZCB0cnkgdGhlIG5leHQgb25lLgotICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsICJFeGNlcHRpb24gdGhyb3duIGR1cmluZyByZXN1bWUgb2YgIiArIG5leHQsIGUpOwotICAgICAgICAgICAgICAgIHJlcXVlc3RGaW5pc2hBY3Rpdml0eUxvY2tlZChuZXh0LCBBY3Rpdml0eS5SRVNVTFRfQ0FOQ0VMRUQsIG51bGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAicmVzdW1lLWV4Y2VwdGlvbiIpOwotICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBEaWRuJ3QgbmVlZCB0byB1c2UgdGhlIGljaWNsZSwgYW5kIGl0IGlzIG5vdyBvdXQgb2YgZGF0ZS4KLSAgICAgICAgICAgIG5leHQuaWNpY2xlID0gbnVsbDsKLSAgICAgICAgICAgIG5leHQuaGF2ZVN0YXRlID0gZmFsc2U7Ci0gICAgICAgICAgICBuZXh0LnN0b3BwZWQgPSBmYWxzZTsKLQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gV2hvb3BzLCBuZWVkIHRvIHJlc3RhcnQgdGhpcyBhY3Rpdml0eSEKLSAgICAgICAgICAgIGlmICghbmV4dC5oYXNCZWVuTGF1bmNoZWQpIHsKLSAgICAgICAgICAgICAgICBuZXh0Lmhhc0JlZW5MYXVuY2hlZCA9IHRydWU7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGlmIChTSE9XX0FQUF9TVEFSVElOR19JQ09OKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyLnNldEFwcFN0YXJ0aW5nV2luZG93KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQsIG5leHQucGFja2FnZU5hbWUsIG5leHQudGhlbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dC5ub25Mb2NhbGl6ZWRMYWJlbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0LmxhYmVsUmVzLCBuZXh0Lmljb24sIG51bGwsIHRydWUpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoREVCVUdfU1dJVENIKSBTbG9nLnYoVEFHLCAiUmVzdGFydGluZzogIiArIG5leHQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc3RhcnRTcGVjaWZpY0FjdGl2aXR5TG9ja2VkKG5leHQsIHRydWUsIHRydWUpOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBmaW5hbCB2b2lkIHN0YXJ0QWN0aXZpdHlMb2NrZWQoSGlzdG9yeVJlY29yZCByLCBib29sZWFuIG5ld1Rhc2ssCi0gICAgICAgICAgICBib29sZWFuIGRvUmVzdW1lKSB7Ci0gICAgICAgIGZpbmFsIGludCBOSCA9IG1IaXN0b3J5LnNpemUoKTsKLQotICAgICAgICBpbnQgYWRkUG9zID0gLTE7Ci0gICAgICAgIAotICAgICAgICBpZiAoIW5ld1Rhc2spIHsKLSAgICAgICAgICAgIC8vIElmIHN0YXJ0aW5nIGluIGFuIGV4aXN0aW5nIHRhc2ssIGZpbmQgd2hlcmUgdGhhdCBpcy4uLgotICAgICAgICAgICAgSGlzdG9yeVJlY29yZCBuZXh0ID0gbnVsbDsKLSAgICAgICAgICAgIGJvb2xlYW4gc3RhcnRJdCA9IHRydWU7Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gTkgtMTsgaSA+PSAwOyBpLS0pIHsKLSAgICAgICAgICAgICAgICBIaXN0b3J5UmVjb3JkIHAgPSAoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQoaSk7Ci0gICAgICAgICAgICAgICAgaWYgKHAuZmluaXNoaW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAocC50YXNrID09IHIudGFzaykgewotICAgICAgICAgICAgICAgICAgICAvLyBIZXJlIGl0IGlzISAgTm93LCBpZiB0aGlzIGlzIG5vdCB5ZXQgdmlzaWJsZSB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgLy8gdXNlciwgdGhlbiBqdXN0IGFkZCBpdCB3aXRob3V0IHN0YXJ0aW5nOyBpdCB3aWxsCi0gICAgICAgICAgICAgICAgICAgIC8vIGdldCBzdGFydGVkIHdoZW4gdGhlIHVzZXIgbmF2aWdhdGVzIGJhY2sgdG8gaXQuCi0gICAgICAgICAgICAgICAgICAgIGFkZFBvcyA9IGkrMTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFzdGFydEl0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtSGlzdG9yeS5hZGQoYWRkUG9zLCByKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHIuaW5IaXN0b3J5ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHIudGFzay5udW1BY3Rpdml0aWVzKys7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtV2luZG93TWFuYWdlci5hZGRBcHBUb2tlbihhZGRQb3MsIHIsIHIudGFzay50YXNrSWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuaW5mby5zY3JlZW5PcmllbnRhdGlvbiwgci5mdWxsc2NyZWVuKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChWQUxJREFURV9UT0tFTlMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtV2luZG93TWFuYWdlci52YWxpZGF0ZUFwcFRva2VucyhtSGlzdG9yeSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChwLmZ1bGxzY3JlZW4pIHsKLSAgICAgICAgICAgICAgICAgICAgc3RhcnRJdCA9IGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBuZXh0ID0gcDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vIFBsYWNlIGEgbmV3IGFjdGl2aXR5IGF0IHRvcCBvZiBzdGFjaywgc28gaXQgaXMgbmV4dCB0byBpbnRlcmFjdAotICAgICAgICAvLyB3aXRoIHRoZSB1c2VyLgotICAgICAgICBpZiAoYWRkUG9zIDwgMCkgewotICAgICAgICAgICAgYWRkUG9zID0gbUhpc3Rvcnkuc2l6ZSgpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAvLyBJZiB3ZSBhcmUgbm90IHBsYWNpbmcgdGhlIG5ldyBhY3Rpdml0eSBmcm9udG1vc3QsIHdlIGRvIG5vdCB3YW50Ci0gICAgICAgIC8vIHRvIGRlbGl2ZXIgdGhlIG9uVXNlckxlYXZpbmcgY2FsbGJhY2sgdG8gdGhlIGFjdHVhbCBmcm9udG1vc3QKLSAgICAgICAgLy8gYWN0aXZpdHkKLSAgICAgICAgaWYgKGFkZFBvcyA8IE5IKSB7Ci0gICAgICAgICAgICBtVXNlckxlYXZpbmcgPSBmYWxzZTsKLSAgICAgICAgICAgIGlmIChERUJVR19VU0VSX0xFQVZJTkcpIFNsb2cudihUQUcsICJzdGFydEFjdGl2aXR5KCkgYmVoaW5kIGZyb250LCBtVXNlckxlYXZpbmc9ZmFsc2UiKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgLy8gU2xvdCB0aGUgYWN0aXZpdHkgaW50byB0aGUgaGlzdG9yeSBzdGFjayBhbmQgcHJvY2VlZAotICAgICAgICBtSGlzdG9yeS5hZGQoYWRkUG9zLCByKTsKLSAgICAgICAgci5pbkhpc3RvcnkgPSB0cnVlOwotICAgICAgICByLmZyb250T2ZUYXNrID0gbmV3VGFzazsKLSAgICAgICAgci50YXNrLm51bUFjdGl2aXRpZXMrKzsKLSAgICAgICAgaWYgKE5IID4gMCkgewotICAgICAgICAgICAgLy8gV2Ugd2FudCB0byBzaG93IHRoZSBzdGFydGluZyBwcmV2aWV3IHdpbmRvdyBpZiB3ZSBhcmUKLSAgICAgICAgICAgIC8vIHN3aXRjaGluZyB0byBhIG5ldyB0YXNrLCBvciB0aGUgbmV4dCBhY3Rpdml0eSdzIHByb2Nlc3MgaXMKLSAgICAgICAgICAgIC8vIG5vdCBjdXJyZW50bHkgcnVubmluZy4KLSAgICAgICAgICAgIGJvb2xlYW4gc2hvd1N0YXJ0aW5nSWNvbiA9IG5ld1Rhc2s7Ci0gICAgICAgICAgICBQcm9jZXNzUmVjb3JkIHByb2MgPSByLmFwcDsKLSAgICAgICAgICAgIGlmIChwcm9jID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICBwcm9jID0gbVByb2Nlc3NOYW1lcy5nZXQoci5wcm9jZXNzTmFtZSwgci5pbmZvLmFwcGxpY2F0aW9uSW5mby51aWQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHByb2MgPT0gbnVsbCB8fCBwcm9jLnRocmVhZCA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgc2hvd1N0YXJ0aW5nSWNvbiA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoREVCVUdfVFJBTlNJVElPTikgU2xvZy52KFRBRywKLSAgICAgICAgICAgICAgICAgICAgIlByZXBhcmUgb3BlbiB0cmFuc2l0aW9uOiBzdGFydGluZyAiICsgcik7Ci0gICAgICAgICAgICBpZiAoKHIuaW50ZW50LmdldEZsYWdzKCkmSW50ZW50LkZMQUdfQUNUSVZJVFlfTk9fQU5JTUFUSU9OKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgbVdpbmRvd01hbmFnZXIucHJlcGFyZUFwcFRyYW5zaXRpb24oV2luZG93TWFuYWdlclBvbGljeS5UUkFOU0lUX05PTkUpOwotICAgICAgICAgICAgICAgIG1Ob0FuaW1BY3Rpdml0aWVzLmFkZChyKTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoKHIuaW50ZW50LmdldEZsYWdzKCkmSW50ZW50LkZMQUdfQUNUSVZJVFlfQ0xFQVJfV0hFTl9UQVNLX1JFU0VUKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgbVdpbmRvd01hbmFnZXIucHJlcGFyZUFwcFRyYW5zaXRpb24oV2luZG93TWFuYWdlclBvbGljeS5UUkFOU0lUX1RBU0tfT1BFTik7Ci0gICAgICAgICAgICAgICAgbU5vQW5pbUFjdGl2aXRpZXMucmVtb3ZlKHIpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtV2luZG93TWFuYWdlci5wcmVwYXJlQXBwVHJhbnNpdGlvbihuZXdUYXNrCi0gICAgICAgICAgICAgICAgICAgICAgICA/IFdpbmRvd01hbmFnZXJQb2xpY3kuVFJBTlNJVF9UQVNLX09QRU4KLSAgICAgICAgICAgICAgICAgICAgICAgIDogV2luZG93TWFuYWdlclBvbGljeS5UUkFOU0lUX0FDVElWSVRZX09QRU4pOwotICAgICAgICAgICAgICAgIG1Ob0FuaW1BY3Rpdml0aWVzLnJlbW92ZShyKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyLmFkZEFwcFRva2VuKAotICAgICAgICAgICAgICAgICAgICBhZGRQb3MsIHIsIHIudGFzay50YXNrSWQsIHIuaW5mby5zY3JlZW5PcmllbnRhdGlvbiwgci5mdWxsc2NyZWVuKTsKLSAgICAgICAgICAgIGJvb2xlYW4gZG9TaG93ID0gdHJ1ZTsKLSAgICAgICAgICAgIGlmIChuZXdUYXNrKSB7Ci0gICAgICAgICAgICAgICAgLy8gRXZlbiB0aG91Z2ggdGhpcyBhY3Rpdml0eSBpcyBzdGFydGluZyBmcmVzaCwgd2Ugc3RpbGwgbmVlZAotICAgICAgICAgICAgICAgIC8vIHRvIHJlc2V0IGl0IHRvIG1ha2Ugc3VyZSB3ZSBhcHBseSBhZmZpbml0aWVzIHRvIG1vdmUgYW55Ci0gICAgICAgICAgICAgICAgLy8gZXhpc3RpbmcgYWN0aXZpdGllcyBmcm9tIG90aGVyIHRhc2tzIGluIHRvIGl0LgotICAgICAgICAgICAgICAgIC8vIElmIHRoZSBjYWxsZXIgaGFzIHJlcXVlc3RlZCB0aGF0IHRoZSB0YXJnZXQgdGFzayBiZQotICAgICAgICAgICAgICAgIC8vIHJlc2V0LCB0aGVuIGRvIHNvLgotICAgICAgICAgICAgICAgIGlmICgoci5pbnRlbnQuZ2V0RmxhZ3MoKQotICAgICAgICAgICAgICAgICAgICAgICAgJkludGVudC5GTEFHX0FDVElWSVRZX1JFU0VUX1RBU0tfSUZfTkVFREVEKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlc2V0VGFza0lmTmVlZGVkTG9ja2VkKHIsIHIpOwotICAgICAgICAgICAgICAgICAgICBkb1Nob3cgPSB0b3BSdW5uaW5nTm9uRGVsYXllZEFjdGl2aXR5TG9ja2VkKG51bGwpID09IHI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKFNIT1dfQVBQX1NUQVJUSU5HX0lDT04gJiYgZG9TaG93KSB7Ci0gICAgICAgICAgICAgICAgLy8gRmlndXJlIG91dCBpZiB3ZSBhcmUgdHJhbnNpdGlvbmluZyBmcm9tIGFub3RoZXIgYWN0aXZpdHkgdGhhdCBpcwotICAgICAgICAgICAgICAgIC8vICJoYXMgdGhlIHNhbWUgc3RhcnRpbmcgaWNvbiIgYXMgdGhlIG5leHQgb25lLiAgVGhpcyBhbGxvd3MgdGhlCi0gICAgICAgICAgICAgICAgLy8gd2luZG93IG1hbmFnZXIgdG8ga2VlcCB0aGUgcHJldmlvdXMgd2luZG93IGl0IGhhZCBwcmV2aW91c2x5Ci0gICAgICAgICAgICAgICAgLy8gY3JlYXRlZCwgaWYgaXQgc3RpbGwgaGFkIG9uZS4KLSAgICAgICAgICAgICAgICBIaXN0b3J5UmVjb3JkIHByZXYgPSBtUmVzdW1lZEFjdGl2aXR5OwotICAgICAgICAgICAgICAgIGlmIChwcmV2ICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byByZXVzZSB0aGUgcHJldmlvdXMgc3RhcnRpbmcgcHJldmlldyBpZjoKLSAgICAgICAgICAgICAgICAgICAgLy8gKDEpIFRoZSBjdXJyZW50IGFjdGl2aXR5IGlzIGluIGEgZGlmZmVyZW50IHRhc2suCi0gICAgICAgICAgICAgICAgICAgIGlmIChwcmV2LnRhc2sgIT0gci50YXNrKSBwcmV2ID0gbnVsbDsKLSAgICAgICAgICAgICAgICAgICAgLy8gKDIpIFRoZSBjdXJyZW50IGFjdGl2aXR5IGlzIGFscmVhZHkgZGlzcGxheWVkLgotICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChwcmV2Lm5vd1Zpc2libGUpIHByZXYgPSBudWxsOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBtV2luZG93TWFuYWdlci5zZXRBcHBTdGFydGluZ1dpbmRvdygKLSAgICAgICAgICAgICAgICAgICAgICAgIHIsIHIucGFja2FnZU5hbWUsIHIudGhlbWUsIHIubm9uTG9jYWxpemVkTGFiZWwsCi0gICAgICAgICAgICAgICAgICAgICAgICByLmxhYmVsUmVzLCByLmljb24sIHByZXYsIHNob3dTdGFydGluZ0ljb24pOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyB0aGUgZmlyc3QgYWN0aXZpdHksIGRvbid0IGRvIGFueSBmYW5jeSBhbmltYXRpb25zLAotICAgICAgICAgICAgLy8gYmVjYXVzZSB0aGVyZSBpcyBub3RoaW5nIGZvciBpdCB0byBhbmltYXRlIG9uIHRvcCBvZi4KLSAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyLmFkZEFwcFRva2VuKGFkZFBvcywgciwgci50YXNrLnRhc2tJZCwKLSAgICAgICAgICAgICAgICAgICAgci5pbmZvLnNjcmVlbk9yaWVudGF0aW9uLCByLmZ1bGxzY3JlZW4pOwotICAgICAgICB9Ci0gICAgICAgIGlmIChWQUxJREFURV9UT0tFTlMpIHsKLSAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyLnZhbGlkYXRlQXBwVG9rZW5zKG1IaXN0b3J5KTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChkb1Jlc3VtZSkgewotICAgICAgICAgICAgcmVzdW1lVG9wQWN0aXZpdHlMb2NrZWQobnVsbCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBQZXJmb3JtIGNsZWFyIG9wZXJhdGlvbiBhcyByZXF1ZXN0ZWQgYnkKLSAgICAgKiB7QGxpbmsgSW50ZW50I0ZMQUdfQUNUSVZJVFlfQ0xFQVJfVE9QfTogc2VhcmNoIGZyb20gdGhlIHRvcCBvZiB0aGUKLSAgICAgKiBzdGFjayB0byB0aGUgZ2l2ZW4gdGFzaywgdGhlbiBsb29rIGZvcgotICAgICAqIGFuIGluc3RhbmNlIG9mIHRoYXQgYWN0aXZpdHkgaW4gdGhlIHN0YWNrIGFuZCwgaWYgZm91bmQsIGZpbmlzaCBhbGwKLSAgICAgKiBhY3Rpdml0aWVzIG9uIHRvcCBvZiBpdCBhbmQgcmV0dXJuIHRoZSBpbnN0YW5jZS4KLSAgICAgKgotICAgICAqIEBwYXJhbSBuZXdSIERlc2NyaXB0aW9uIG9mIHRoZSBuZXcgYWN0aXZpdHkgYmVpbmcgc3RhcnRlZC4KLSAgICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIG9sZCBhY3Rpdml0eSB0aGF0IHNob3VsZCBiZSBjb250aW51ZSB0byBiZSB1c2VkLAotICAgICAqIG9yIG51bGwgaWYgbm9uZSB3YXMgZm91bmQuCi0gICAgICovCi0gICAgcHJpdmF0ZSBmaW5hbCBIaXN0b3J5UmVjb3JkIHBlcmZvcm1DbGVhclRhc2tMb2NrZWQoaW50IHRhc2tJZCwKLSAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgbmV3UiwgaW50IGxhdW5jaEZsYWdzLCBib29sZWFuIGRvQ2xlYXIpIHsKLSAgICAgICAgaW50IGkgPSBtSGlzdG9yeS5zaXplKCk7Ci0gICAgICAgIAotICAgICAgICAvLyBGaXJzdCBmaW5kIHRoZSByZXF1ZXN0ZWQgdGFzay4KLSAgICAgICAgd2hpbGUgKGkgPiAwKSB7Ci0gICAgICAgICAgICBpLS07Ci0gICAgICAgICAgICBIaXN0b3J5UmVjb3JkIHIgPSAoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQoaSk7Ci0gICAgICAgICAgICBpZiAoci50YXNrLnRhc2tJZCA9PSB0YXNrSWQpIHsKLSAgICAgICAgICAgICAgICBpKys7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIC8vIE5vdyBjbGVhciBpdC4KLSAgICAgICAgd2hpbGUgKGkgPiAwKSB7Ci0gICAgICAgICAgICBpLS07Ci0gICAgICAgICAgICBIaXN0b3J5UmVjb3JkIHIgPSAoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQoaSk7Ci0gICAgICAgICAgICBpZiAoci5maW5pc2hpbmcpIHsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChyLnRhc2sudGFza0lkICE9IHRhc2tJZCkgewotICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKHIucmVhbEFjdGl2aXR5LmVxdWFscyhuZXdSLnJlYWxBY3Rpdml0eSkpIHsKLSAgICAgICAgICAgICAgICAvLyBIZXJlIGl0IGlzISAgTm93IGZpbmlzaCBldmVyeXRoaW5nIGluIGZyb250Li4uCi0gICAgICAgICAgICAgICAgSGlzdG9yeVJlY29yZCByZXQgPSByOwotICAgICAgICAgICAgICAgIGlmIChkb0NsZWFyKSB7Ci0gICAgICAgICAgICAgICAgICAgIHdoaWxlIChpIDwgKG1IaXN0b3J5LnNpemUoKS0xKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgaSsrOwotICAgICAgICAgICAgICAgICAgICAgICAgciA9IChIaXN0b3J5UmVjb3JkKW1IaXN0b3J5LmdldChpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyLmZpbmlzaGluZykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbmlzaEFjdGl2aXR5TG9ja2VkKHIsIGksIEFjdGl2aXR5LlJFU1VMVF9DQU5DRUxFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwgImNsZWFyIikpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpLS07Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgLy8gRmluYWxseSwgaWYgdGhpcyBpcyBhIG5vcm1hbCBsYXVuY2ggbW9kZSAodGhhdCBpcywgbm90Ci0gICAgICAgICAgICAgICAgLy8gZXhwZWN0aW5nIG9uTmV3SW50ZW50KCkpLCB0aGVuIHdlIHdpbGwgZmluaXNoIHRoZSBjdXJyZW50Ci0gICAgICAgICAgICAgICAgLy8gaW5zdGFuY2Ugb2YgdGhlIGFjdGl2aXR5IHNvIGEgbmV3IGZyZXNoIG9uZSBjYW4gYmUgc3RhcnRlZC4KLSAgICAgICAgICAgICAgICBpZiAocmV0LmxhdW5jaE1vZGUgPT0gQWN0aXZpdHlJbmZvLkxBVU5DSF9NVUxUSVBMRQotICAgICAgICAgICAgICAgICAgICAgICAgJiYgKGxhdW5jaEZsYWdzJkludGVudC5GTEFHX0FDVElWSVRZX1NJTkdMRV9UT1ApID09IDApIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFyZXQuZmluaXNoaW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgaW5kZXggPSBpbmRleE9mVG9rZW5Mb2NrZWQocmV0KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA+PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoQWN0aXZpdHlMb2NrZWQocmV0LCBpbmRleCwgQWN0aXZpdHkuUkVTVUxUX0NBTkNFTEVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwgImNsZWFyIik7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICByZXR1cm4gcmV0OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogRmluZCB0aGUgYWN0aXZpdHkgaW4gdGhlIGhpc3Rvcnkgc3RhY2sgd2l0aGluIHRoZSBnaXZlbiB0YXNrLiAgUmV0dXJucwotICAgICAqIHRoZSBpbmRleCB3aXRoaW4gdGhlIGhpc3RvcnkgYXQgd2hpY2ggaXQncyBmb3VuZCwgb3IgPCAwIGlmIG5vdCBmb3VuZC4KLSAgICAgKi8KLSAgICBwcml2YXRlIGZpbmFsIGludCBmaW5kQWN0aXZpdHlJbkhpc3RvcnlMb2NrZWQoSGlzdG9yeVJlY29yZCByLCBpbnQgdGFzaykgewotICAgICAgICBpbnQgaSA9IG1IaXN0b3J5LnNpemUoKTsKLSAgICAgICAgd2hpbGUgKGkgPiAwKSB7Ci0gICAgICAgICAgICBpLS07Ci0gICAgICAgICAgICBIaXN0b3J5UmVjb3JkIGNhbmRpZGF0ZSA9IChIaXN0b3J5UmVjb3JkKW1IaXN0b3J5LmdldChpKTsKLSAgICAgICAgICAgIGlmIChjYW5kaWRhdGUudGFzay50YXNrSWQgIT0gdGFzaykgewotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZS5yZWFsQWN0aXZpdHkuZXF1YWxzKHIucmVhbEFjdGl2aXR5KSkgewotICAgICAgICAgICAgICAgIHJldHVybiBpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIFJlb3JkZXIgdGhlIGhpc3Rvcnkgc3RhY2sgc28gdGhhdCB0aGUgYWN0aXZpdHkgYXQgdGhlIGdpdmVuIGluZGV4IGlzCi0gICAgICogYnJvdWdodCB0byB0aGUgZnJvbnQuCi0gICAgICovCi0gICAgcHJpdmF0ZSBmaW5hbCBIaXN0b3J5UmVjb3JkIG1vdmVBY3Rpdml0eVRvRnJvbnRMb2NrZWQoaW50IHdoZXJlKSB7Ci0gICAgICAgIEhpc3RvcnlSZWNvcmQgbmV3VG9wID0gKEhpc3RvcnlSZWNvcmQpbUhpc3RvcnkucmVtb3ZlKHdoZXJlKTsKLSAgICAgICAgaW50IHRvcCA9IG1IaXN0b3J5LnNpemUoKTsKLSAgICAgICAgSGlzdG9yeVJlY29yZCBvbGRUb3AgPSAoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQodG9wLTEpOwotICAgICAgICBtSGlzdG9yeS5hZGQodG9wLCBuZXdUb3ApOwotICAgICAgICBvbGRUb3AuZnJvbnRPZlRhc2sgPSBmYWxzZTsKLSAgICAgICAgbmV3VG9wLmZyb250T2ZUYXNrID0gdHJ1ZTsKLSAgICAgICAgcmV0dXJuIG5ld1RvcDsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBEZWxpdmVyIGEgbmV3IEludGVudCB0byBhbiBleGlzdGluZyBhY3Rpdml0eSwgc28gdGhhdCBpdHMgb25OZXdJbnRlbnQoKQotICAgICAqIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBhdCB0aGUgcHJvcGVyIHRpbWUuCi0gICAgICovCi0gICAgcHJpdmF0ZSBmaW5hbCB2b2lkIGRlbGl2ZXJOZXdJbnRlbnRMb2NrZWQoSGlzdG9yeVJlY29yZCByLCBJbnRlbnQgaW50ZW50KSB7Ci0gICAgICAgIGJvb2xlYW4gc2VudCA9IGZhbHNlOwotICAgICAgICBpZiAoci5zdGF0ZSA9PSBBY3Rpdml0eVN0YXRlLlJFU1VNRUQKLSAgICAgICAgICAgICAgICAmJiByLmFwcCAhPSBudWxsICYmIHIuYXBwLnRocmVhZCAhPSBudWxsKSB7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIEFycmF5TGlzdDxJbnRlbnQ+IGFyID0gbmV3IEFycmF5TGlzdDxJbnRlbnQ+KCk7Ci0gICAgICAgICAgICAgICAgYXIuYWRkKG5ldyBJbnRlbnQoaW50ZW50KSk7Ci0gICAgICAgICAgICAgICAgci5hcHAudGhyZWFkLnNjaGVkdWxlTmV3SW50ZW50KGFyLCByKTsKLSAgICAgICAgICAgICAgICBzZW50ID0gdHJ1ZTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIkV4Y2VwdGlvbiB0aHJvd24gc2VuZGluZyBuZXcgaW50ZW50IHRvICIgKyByLCBlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoIXNlbnQpIHsKLSAgICAgICAgICAgIHIuYWRkTmV3SW50ZW50TG9ja2VkKG5ldyBJbnRlbnQoaW50ZW50KSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwcml2YXRlIGZpbmFsIHZvaWQgbG9nU3RhcnRBY3Rpdml0eShpbnQgdGFnLCBIaXN0b3J5UmVjb3JkIHIsCi0gICAgICAgICAgICBUYXNrUmVjb3JkIHRhc2spIHsKLSAgICAgICAgRXZlbnRMb2cud3JpdGVFdmVudCh0YWcsCi0gICAgICAgICAgICAgICAgU3lzdGVtLmlkZW50aXR5SGFzaENvZGUociksIHRhc2sudGFza0lkLAotICAgICAgICAgICAgICAgIHIuc2hvcnRDb21wb25lbnROYW1lLCByLmludGVudC5nZXRBY3Rpb24oKSwKLSAgICAgICAgICAgICAgICByLmludGVudC5nZXRUeXBlKCksIHIuaW50ZW50LmdldERhdGFTdHJpbmcoKSwKLSAgICAgICAgICAgICAgICByLmludGVudC5nZXRGbGFncygpKTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIGZpbmFsIGludCBzdGFydEFjdGl2aXR5TG9ja2VkKElBcHBsaWNhdGlvblRocmVhZCBjYWxsZXIsCi0gICAgICAgICAgICBJbnRlbnQgaW50ZW50LCBTdHJpbmcgcmVzb2x2ZWRUeXBlLAotICAgICAgICAgICAgVXJpW10gZ3JhbnRlZFVyaVBlcm1pc3Npb25zLAotICAgICAgICAgICAgaW50IGdyYW50ZWRNb2RlLCBBY3Rpdml0eUluZm8gYUluZm8sIElCaW5kZXIgcmVzdWx0VG8sCi0gICAgICAgICAgICBTdHJpbmcgcmVzdWx0V2hvLCBpbnQgcmVxdWVzdENvZGUsCi0gICAgICAgICAgICBpbnQgY2FsbGluZ1BpZCwgaW50IGNhbGxpbmdVaWQsIGJvb2xlYW4gb25seUlmTmVlZGVkLAotICAgICAgICAgICAgYm9vbGVhbiBjb21wb25lbnRTcGVjaWZpZWQpIHsKLSAgICAgICAgU2xvZy5pKFRBRywgIlN0YXJ0aW5nIGFjdGl2aXR5OiAiICsgaW50ZW50KTsKLQotICAgICAgICBIaXN0b3J5UmVjb3JkIHNvdXJjZVJlY29yZCA9IG51bGw7Ci0gICAgICAgIEhpc3RvcnlSZWNvcmQgcmVzdWx0UmVjb3JkID0gbnVsbDsKLSAgICAgICAgaWYgKHJlc3VsdFRvICE9IG51bGwpIHsKLSAgICAgICAgICAgIGludCBpbmRleCA9IGluZGV4T2ZUb2tlbkxvY2tlZChyZXN1bHRUbyk7Ci0gICAgICAgICAgICBpZiAoREVCVUdfUkVTVUxUUykgU2xvZy52KAotICAgICAgICAgICAgICAgIFRBRywgIlNlbmRpbmcgcmVzdWx0IHRvICIgKyByZXN1bHRUbyArICIgKGluZGV4ICIgKyBpbmRleCArICIpIik7Ci0gICAgICAgICAgICBpZiAoaW5kZXggPj0gMCkgewotICAgICAgICAgICAgICAgIHNvdXJjZVJlY29yZCA9IChIaXN0b3J5UmVjb3JkKW1IaXN0b3J5LmdldChpbmRleCk7Ci0gICAgICAgICAgICAgICAgaWYgKHJlcXVlc3RDb2RlID49IDAgJiYgIXNvdXJjZVJlY29yZC5maW5pc2hpbmcpIHsKLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0UmVjb3JkID0gc291cmNlUmVjb3JkOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGludCBsYXVuY2hGbGFncyA9IGludGVudC5nZXRGbGFncygpOwotCi0gICAgICAgIGlmICgobGF1bmNoRmxhZ3MmSW50ZW50LkZMQUdfQUNUSVZJVFlfRk9SV0FSRF9SRVNVTFQpICE9IDAKLSAgICAgICAgICAgICAgICAmJiBzb3VyY2VSZWNvcmQgIT0gbnVsbCkgewotICAgICAgICAgICAgLy8gVHJhbnNmZXIgdGhlIHJlc3VsdCB0YXJnZXQgZnJvbSB0aGUgc291cmNlIGFjdGl2aXR5IHRvIHRoZSBuZXcKLSAgICAgICAgICAgIC8vIG9uZSBiZWluZyBzdGFydGVkLCBpbmNsdWRpbmcgYW55IGZhaWx1cmVzLgotICAgICAgICAgICAgaWYgKHJlcXVlc3RDb2RlID49IDApIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gU1RBUlRfRk9SV0FSRF9BTkRfUkVRVUVTVF9DT05GTElDVDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJlc3VsdFJlY29yZCA9IHNvdXJjZVJlY29yZC5yZXN1bHRUbzsKLSAgICAgICAgICAgIHJlc3VsdFdobyA9IHNvdXJjZVJlY29yZC5yZXN1bHRXaG87Ci0gICAgICAgICAgICByZXF1ZXN0Q29kZSA9IHNvdXJjZVJlY29yZC5yZXF1ZXN0Q29kZTsKLSAgICAgICAgICAgIHNvdXJjZVJlY29yZC5yZXN1bHRUbyA9IG51bGw7Ci0gICAgICAgICAgICBpZiAocmVzdWx0UmVjb3JkICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICByZXN1bHRSZWNvcmQucmVtb3ZlUmVzdWx0c0xvY2tlZCgKLSAgICAgICAgICAgICAgICAgICAgc291cmNlUmVjb3JkLCByZXN1bHRXaG8sIHJlcXVlc3RDb2RlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGludCBlcnIgPSBTVEFSVF9TVUNDRVNTOwotCi0gICAgICAgIGlmIChpbnRlbnQuZ2V0Q29tcG9uZW50KCkgPT0gbnVsbCkgewotICAgICAgICAgICAgLy8gV2UgY291bGRuJ3QgZmluZCBhIGNsYXNzIHRoYXQgY2FuIGhhbmRsZSB0aGUgZ2l2ZW4gSW50ZW50LgotICAgICAgICAgICAgLy8gVGhhdCdzIHRoZSBlbmQgb2YgdGhhdCEKLSAgICAgICAgICAgIGVyciA9IFNUQVJUX0lOVEVOVF9OT1RfUkVTT0xWRUQ7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZXJyID09IFNUQVJUX1NVQ0NFU1MgJiYgYUluZm8gPT0gbnVsbCkgewotICAgICAgICAgICAgLy8gV2UgY291bGRuJ3QgZmluZCB0aGUgc3BlY2lmaWMgY2xhc3Mgc3BlY2lmaWVkIGluIHRoZSBJbnRlbnQuCi0gICAgICAgICAgICAvLyBBbHNvIHRoZSBlbmQgb2YgdGhlIGxpbmUuCi0gICAgICAgICAgICBlcnIgPSBTVEFSVF9DTEFTU19OT1RfRk9VTkQ7Ci0gICAgICAgIH0KLQotICAgICAgICBQcm9jZXNzUmVjb3JkIGNhbGxlckFwcCA9IG51bGw7Ci0gICAgICAgIGlmIChlcnIgPT0gU1RBUlRfU1VDQ0VTUyAmJiBjYWxsZXIgIT0gbnVsbCkgewotICAgICAgICAgICAgY2FsbGVyQXBwID0gZ2V0UmVjb3JkRm9yQXBwTG9ja2VkKGNhbGxlcik7Ci0gICAgICAgICAgICBpZiAoY2FsbGVyQXBwICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBjYWxsaW5nUGlkID0gY2FsbGVyQXBwLnBpZDsKLSAgICAgICAgICAgICAgICBjYWxsaW5nVWlkID0gY2FsbGVyQXBwLmluZm8udWlkOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiVW5hYmxlIHRvIGZpbmQgYXBwIGZvciBjYWxsZXIgIiArIGNhbGxlcgotICAgICAgICAgICAgICAgICAgICAgICsgIiAocGlkPSIgKyBjYWxsaW5nUGlkICsgIikgd2hlbiBzdGFydGluZzogIgotICAgICAgICAgICAgICAgICAgICAgICsgaW50ZW50LnRvU3RyaW5nKCkpOwotICAgICAgICAgICAgICAgIGVyciA9IFNUQVJUX1BFUk1JU1NJT05fREVOSUVEOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGVyciAhPSBTVEFSVF9TVUNDRVNTKSB7Ci0gICAgICAgICAgICBpZiAocmVzdWx0UmVjb3JkICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBzZW5kQWN0aXZpdHlSZXN1bHRMb2NrZWQoLTEsCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdFJlY29yZCwgcmVzdWx0V2hvLCByZXF1ZXN0Q29kZSwKLSAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHkuUkVTVUxUX0NBTkNFTEVELCBudWxsKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBlcnI7Ci0gICAgICAgIH0KLQotICAgICAgICBmaW5hbCBpbnQgcGVybSA9IGNoZWNrQ29tcG9uZW50UGVybWlzc2lvbihhSW5mby5wZXJtaXNzaW9uLCBjYWxsaW5nUGlkLAotICAgICAgICAgICAgICAgIGNhbGxpbmdVaWQsIGFJbmZvLmV4cG9ydGVkID8gLTEgOiBhSW5mby5hcHBsaWNhdGlvbkluZm8udWlkKTsKLSAgICAgICAgaWYgKHBlcm0gIT0gUGFja2FnZU1hbmFnZXIuUEVSTUlTU0lPTl9HUkFOVEVEKSB7Ci0gICAgICAgICAgICBpZiAocmVzdWx0UmVjb3JkICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBzZW5kQWN0aXZpdHlSZXN1bHRMb2NrZWQoLTEsCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdFJlY29yZCwgcmVzdWx0V2hvLCByZXF1ZXN0Q29kZSwKLSAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHkuUkVTVUxUX0NBTkNFTEVELCBudWxsKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFN0cmluZyBtc2cgPSAiUGVybWlzc2lvbiBEZW5pYWw6IHN0YXJ0aW5nICIgKyBpbnRlbnQudG9TdHJpbmcoKQotICAgICAgICAgICAgICAgICAgICArICIgZnJvbSAiICsgY2FsbGVyQXBwICsgIiAocGlkPSIgKyBjYWxsaW5nUGlkCi0gICAgICAgICAgICAgICAgICAgICsgIiwgdWlkPSIgKyBjYWxsaW5nVWlkICsgIikiCi0gICAgICAgICAgICAgICAgICAgICsgIiByZXF1aXJlcyAiICsgYUluZm8ucGVybWlzc2lvbjsKLSAgICAgICAgICAgIFNsb2cudyhUQUcsIG1zZyk7Ci0gICAgICAgICAgICB0aHJvdyBuZXcgU2VjdXJpdHlFeGNlcHRpb24obXNnKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChtQ29udHJvbGxlciAhPSBudWxsKSB7Ci0gICAgICAgICAgICBib29sZWFuIGFib3J0ID0gZmFsc2U7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIC8vIFRoZSBJbnRlbnQgd2UgZ2l2ZSB0byB0aGUgd2F0Y2hlciBoYXMgdGhlIGV4dHJhIGRhdGEKLSAgICAgICAgICAgICAgICAvLyBzdHJpcHBlZCBvZmYsIHNpbmNlIGl0IGNhbiBjb250YWluIHByaXZhdGUgaW5mb3JtYXRpb24uCi0gICAgICAgICAgICAgICAgSW50ZW50IHdhdGNoSW50ZW50ID0gaW50ZW50LmNsb25lRmlsdGVyKCk7Ci0gICAgICAgICAgICAgICAgYWJvcnQgPSAhbUNvbnRyb2xsZXIuYWN0aXZpdHlTdGFydGluZyh3YXRjaEludGVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGFJbmZvLmFwcGxpY2F0aW9uSW5mby5wYWNrYWdlTmFtZSk7Ci0gICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgIG1Db250cm9sbGVyID0gbnVsbDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgaWYgKGFib3J0KSB7Ci0gICAgICAgICAgICAgICAgaWYgKHJlc3VsdFJlY29yZCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNlbmRBY3Rpdml0eVJlc3VsdExvY2tlZCgtMSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFJlY29yZCwgcmVzdWx0V2hvLCByZXF1ZXN0Q29kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5LlJFU1VMVF9DQU5DRUxFRCwgbnVsbCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIC8vIFdlIHByZXRlbmQgdG8gdGhlIGNhbGxlciB0aGF0IGl0IHdhcyByZWFsbHkgc3RhcnRlZCwgYnV0Ci0gICAgICAgICAgICAgICAgLy8gdGhleSB3aWxsIGp1c3QgZ2V0IGEgY2FuY2VsIHJlc3VsdC4KLSAgICAgICAgICAgICAgICByZXR1cm4gU1RBUlRfU1VDQ0VTUzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIEhpc3RvcnlSZWNvcmQgciA9IG5ldyBIaXN0b3J5UmVjb3JkKHRoaXMsIGNhbGxlckFwcCwgY2FsbGluZ1VpZCwKLSAgICAgICAgICAgICAgICBpbnRlbnQsIHJlc29sdmVkVHlwZSwgYUluZm8sIG1Db25maWd1cmF0aW9uLAotICAgICAgICAgICAgICAgIHJlc3VsdFJlY29yZCwgcmVzdWx0V2hvLCByZXF1ZXN0Q29kZSwgY29tcG9uZW50U3BlY2lmaWVkKTsKLQotICAgICAgICBpZiAobVJlc3VtZWRBY3Rpdml0eSA9PSBudWxsCi0gICAgICAgICAgICAgICAgfHwgbVJlc3VtZWRBY3Rpdml0eS5pbmZvLmFwcGxpY2F0aW9uSW5mby51aWQgIT0gY2FsbGluZ1VpZCkgewotICAgICAgICAgICAgaWYgKCFjaGVja0FwcFN3aXRjaEFsbG93ZWRMb2NrZWQoY2FsbGluZ1BpZCwgY2FsbGluZ1VpZCwgIkFjdGl2aXR5IHN0YXJ0IikpIHsKLSAgICAgICAgICAgICAgICBQZW5kaW5nQWN0aXZpdHlMYXVuY2ggcGFsID0gbmV3IFBlbmRpbmdBY3Rpdml0eUxhdW5jaCgpOwotICAgICAgICAgICAgICAgIHBhbC5yID0gcjsKLSAgICAgICAgICAgICAgICBwYWwuc291cmNlUmVjb3JkID0gc291cmNlUmVjb3JkOwotICAgICAgICAgICAgICAgIHBhbC5ncmFudGVkVXJpUGVybWlzc2lvbnMgPSBncmFudGVkVXJpUGVybWlzc2lvbnM7Ci0gICAgICAgICAgICAgICAgcGFsLmdyYW50ZWRNb2RlID0gZ3JhbnRlZE1vZGU7Ci0gICAgICAgICAgICAgICAgcGFsLm9ubHlJZk5lZWRlZCA9IG9ubHlJZk5lZWRlZDsKLSAgICAgICAgICAgICAgICBtUGVuZGluZ0FjdGl2aXR5TGF1bmNoZXMuYWRkKHBhbCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFNUQVJUX1NXSVRDSEVTX0NBTkNFTEVEOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAobURpZEFwcFN3aXRjaCkgewotICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgc2Vjb25kIGFsbG93ZWQgc3dpdGNoIHNpbmNlIHdlIHN0b3BwZWQgc3dpdGNoZXMsCi0gICAgICAgICAgICAvLyBzbyBub3cganVzdCBnZW5lcmFsbHkgYWxsb3cgc3dpdGNoZXMuICBVc2UgY2FzZTogdXNlciBwcmVzc2VzCi0gICAgICAgICAgICAvLyBob21lIChzd2l0Y2hlcyBkaXNhYmxlZCwgc3dpdGNoIHRvIGhvbWUsIG1EaWRBcHBTd2l0Y2ggbm93IHRydWUpOwotICAgICAgICAgICAgLy8gdXNlciB0YXBzIGEgaG9tZSBpY29uIChjb21pbmcgZnJvbSBob21lIHNvIGFsbG93ZWQsIHdlIGhpdCBoZXJlCi0gICAgICAgICAgICAvLyBhbmQgbm93IGFsbG93IGFueW9uZSB0byBzd2l0Y2ggYWdhaW4pLgotICAgICAgICAgICAgbUFwcFN3aXRjaGVzQWxsb3dlZFRpbWUgPSAwOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbURpZEFwcFN3aXRjaCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgCi0gICAgICAgIGRvUGVuZGluZ0FjdGl2aXR5TGF1bmNoZXNMb2NrZWQoZmFsc2UpOwotICAgICAgICAKLSAgICAgICAgcmV0dXJuIHN0YXJ0QWN0aXZpdHlVbmNoZWNrZWRMb2NrZWQociwgc291cmNlUmVjb3JkLAotICAgICAgICAgICAgICAgIGdyYW50ZWRVcmlQZXJtaXNzaW9ucywgZ3JhbnRlZE1vZGUsIG9ubHlJZk5lZWRlZCwgdHJ1ZSk7Ci0gICAgfQotICAKLSAgICBwcml2YXRlIGZpbmFsIHZvaWQgZG9QZW5kaW5nQWN0aXZpdHlMYXVuY2hlc0xvY2tlZChib29sZWFuIGRvUmVzdW1lKSB7CisgICAgZmluYWwgdm9pZCBkb1BlbmRpbmdBY3Rpdml0eUxhdW5jaGVzTG9ja2VkKGJvb2xlYW4gZG9SZXN1bWUpIHsKICAgICAgICAgZmluYWwgaW50IE4gPSBtUGVuZGluZ0FjdGl2aXR5TGF1bmNoZXMuc2l6ZSgpOwogICAgICAgICBpZiAoTiA8PSAwKSB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgZm9yIChpbnQgaT0wOyBpPE47IGkrKykgewogICAgICAgICAgICAgUGVuZGluZ0FjdGl2aXR5TGF1bmNoIHBhbCA9IG1QZW5kaW5nQWN0aXZpdHlMYXVuY2hlcy5nZXQoaSk7Ci0gICAgICAgICAgICBzdGFydEFjdGl2aXR5VW5jaGVja2VkTG9ja2VkKHBhbC5yLCBwYWwuc291cmNlUmVjb3JkLAorICAgICAgICAgICAgbU1haW5TdGFjay5zdGFydEFjdGl2aXR5VW5jaGVja2VkTG9ja2VkKHBhbC5yLCBwYWwuc291cmNlUmVjb3JkLAogICAgICAgICAgICAgICAgICAgICBwYWwuZ3JhbnRlZFVyaVBlcm1pc3Npb25zLCBwYWwuZ3JhbnRlZE1vZGUsIHBhbC5vbmx5SWZOZWVkZWQsCiAgICAgICAgICAgICAgICAgICAgIGRvUmVzdW1lICYmIGkgPT0gKE4tMSkpOwogICAgICAgICB9CiAgICAgICAgIG1QZW5kaW5nQWN0aXZpdHlMYXVuY2hlcy5jbGVhcigpOwogICAgIH0KICAgICAKLSAgICBwcml2YXRlIGZpbmFsIGludCBzdGFydEFjdGl2aXR5VW5jaGVja2VkTG9ja2VkKEhpc3RvcnlSZWNvcmQgciwKLSAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgc291cmNlUmVjb3JkLCBVcmlbXSBncmFudGVkVXJpUGVybWlzc2lvbnMsCi0gICAgICAgICAgICBpbnQgZ3JhbnRlZE1vZGUsIGJvb2xlYW4gb25seUlmTmVlZGVkLCBib29sZWFuIGRvUmVzdW1lKSB7Ci0gICAgICAgIGZpbmFsIEludGVudCBpbnRlbnQgPSByLmludGVudDsKLSAgICAgICAgZmluYWwgaW50IGNhbGxpbmdVaWQgPSByLmxhdW5jaGVkRnJvbVVpZDsKLSAgICAgICAgCi0gICAgICAgIGludCBsYXVuY2hGbGFncyA9IGludGVudC5nZXRGbGFncygpOwotICAgICAgICAKLSAgICAgICAgLy8gV2UnbGwgaW52b2tlIG9uVXNlckxlYXZpbmcgYmVmb3JlIG9uUGF1c2Ugb25seSBpZiB0aGUgbGF1bmNoaW5nCi0gICAgICAgIC8vIGFjdGl2aXR5IGRpZCBub3QgZXhwbGljaXRseSBzdGF0ZSB0aGF0IHRoaXMgaXMgYW4gYXV0b21hdGVkIGxhdW5jaC4KLSAgICAgICAgbVVzZXJMZWF2aW5nID0gKGxhdW5jaEZsYWdzJkludGVudC5GTEFHX0FDVElWSVRZX05PX1VTRVJfQUNUSU9OKSA9PSAwOwotICAgICAgICBpZiAoREVCVUdfVVNFUl9MRUFWSU5HKSBTbG9nLnYoVEFHLAotICAgICAgICAgICAgICAgICJzdGFydEFjdGl2aXR5KCkgPT4gbVVzZXJMZWF2aW5nPSIgKyBtVXNlckxlYXZpbmcpOwotICAgICAgICAKLSAgICAgICAgLy8gSWYgdGhlIGNhbGxlciBoYXMgYXNrZWQgbm90IHRvIHJlc3VtZSBhdCB0aGlzIHBvaW50LCB3ZSBtYWtlIG5vdGUKLSAgICAgICAgLy8gb2YgdGhpcyBpbiB0aGUgcmVjb3JkIHNvIHRoYXQgd2UgY2FuIHNraXAgaXQgd2hlbiB0cnlpbmcgdG8gZmluZAotICAgICAgICAvLyB0aGUgdG9wIHJ1bm5pbmcgYWN0aXZpdHkuCi0gICAgICAgIGlmICghZG9SZXN1bWUpIHsKLSAgICAgICAgICAgIHIuZGVsYXllZFJlc3VtZSA9IHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIEhpc3RvcnlSZWNvcmQgbm90VG9wID0gKGxhdW5jaEZsYWdzJkludGVudC5GTEFHX0FDVElWSVRZX1BSRVZJT1VTX0lTX1RPUCkKLSAgICAgICAgICAgICAgICAhPSAwID8gciA6IG51bGw7Ci0KLSAgICAgICAgLy8gSWYgdGhlIG9ubHlJZk5lZWRlZCBmbGFnIGlzIHNldCwgdGhlbiB3ZSBjYW4gZG8gdGhpcyBpZiB0aGUgYWN0aXZpdHkKLSAgICAgICAgLy8gYmVpbmcgbGF1bmNoZWQgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZSBtYWtpbmcgdGhlIGNhbGwuLi4gIG9yLCBhcwotICAgICAgICAvLyBhIHNwZWNpYWwgY2FzZSwgaWYgd2UgZG8gbm90IGtub3cgdGhlIGNhbGxlciB0aGVuIHdlIGNvdW50IHRoZQotICAgICAgICAvLyBjdXJyZW50IHRvcCBhY3Rpdml0eSBhcyB0aGUgY2FsbGVyLgotICAgICAgICBpZiAob25seUlmTmVlZGVkKSB7Ci0gICAgICAgICAgICBIaXN0b3J5UmVjb3JkIGNoZWNrZWRDYWxsZXIgPSBzb3VyY2VSZWNvcmQ7Ci0gICAgICAgICAgICBpZiAoY2hlY2tlZENhbGxlciA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgY2hlY2tlZENhbGxlciA9IHRvcFJ1bm5pbmdOb25EZWxheWVkQWN0aXZpdHlMb2NrZWQobm90VG9wKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICghY2hlY2tlZENhbGxlci5yZWFsQWN0aXZpdHkuZXF1YWxzKHIucmVhbEFjdGl2aXR5KSkgewotICAgICAgICAgICAgICAgIC8vIENhbGxlciBpcyBub3QgdGhlIHNhbWUgYXMgbGF1bmNoZXIsIHNvIGFsd2F5cyBuZWVkZWQuCi0gICAgICAgICAgICAgICAgb25seUlmTmVlZGVkID0gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoZ3JhbnRlZFVyaVBlcm1pc3Npb25zICE9IG51bGwgJiYgY2FsbGluZ1VpZCA+IDApIHsKLSAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxncmFudGVkVXJpUGVybWlzc2lvbnMubGVuZ3RoOyBpKyspIHsKLSAgICAgICAgICAgICAgICBncmFudFVyaVBlcm1pc3Npb25Mb2NrZWQoY2FsbGluZ1VpZCwgci5wYWNrYWdlTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGdyYW50ZWRVcmlQZXJtaXNzaW9uc1tpXSwgZ3JhbnRlZE1vZGUsIHIpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgZ3JhbnRVcmlQZXJtaXNzaW9uRnJvbUludGVudExvY2tlZChjYWxsaW5nVWlkLCByLnBhY2thZ2VOYW1lLAotICAgICAgICAgICAgICAgIGludGVudCwgcik7Ci0KLSAgICAgICAgaWYgKHNvdXJjZVJlY29yZCA9PSBudWxsKSB7Ci0gICAgICAgICAgICAvLyBUaGlzIGFjdGl2aXR5IGlzIG5vdCBiZWluZyBzdGFydGVkIGZyb20gYW5vdGhlci4uLiAgaW4gdGhpcwotICAgICAgICAgICAgLy8gY2FzZSB3ZSAtYWx3YXlzLSBzdGFydCBhIG5ldyB0YXNrLgotICAgICAgICAgICAgaWYgKChsYXVuY2hGbGFncyZJbnRlbnQuRkxBR19BQ1RJVklUWV9ORVdfVEFTSykgPT0gMCkgewotICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsICJzdGFydEFjdGl2aXR5IGNhbGxlZCBmcm9tIG5vbi1BY3Rpdml0eSBjb250ZXh0OyBmb3JjaW5nIEludGVudC5GTEFHX0FDVElWSVRZX05FV19UQVNLIGZvcjogIgotICAgICAgICAgICAgICAgICAgICAgICsgaW50ZW50KTsKLSAgICAgICAgICAgICAgICBsYXVuY2hGbGFncyB8PSBJbnRlbnQuRkxBR19BQ1RJVklUWV9ORVdfVEFTSzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChzb3VyY2VSZWNvcmQubGF1bmNoTW9kZSA9PSBBY3Rpdml0eUluZm8uTEFVTkNIX1NJTkdMRV9JTlNUQU5DRSkgewotICAgICAgICAgICAgLy8gVGhlIG9yaWdpbmFsIGFjdGl2aXR5IHdobyBpcyBzdGFydGluZyB1cyBpcyBydW5uaW5nIGFzIGEgc2luZ2xlCi0gICAgICAgICAgICAvLyBpbnN0YW5jZS4uLiAgdGhpcyBuZXcgYWN0aXZpdHkgaXQgaXMgc3RhcnRpbmcgbXVzdCBnbyBvbiBpdHMKLSAgICAgICAgICAgIC8vIG93biB0YXNrLgotICAgICAgICAgICAgbGF1bmNoRmxhZ3MgfD0gSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX1RBU0s7Ci0gICAgICAgIH0gZWxzZSBpZiAoci5sYXVuY2hNb2RlID09IEFjdGl2aXR5SW5mby5MQVVOQ0hfU0lOR0xFX0lOU1RBTkNFCi0gICAgICAgICAgICAgICAgfHwgci5sYXVuY2hNb2RlID09IEFjdGl2aXR5SW5mby5MQVVOQ0hfU0lOR0xFX1RBU0spIHsKLSAgICAgICAgICAgIC8vIFRoZSBhY3Rpdml0eSBiZWluZyBzdGFydGVkIGlzIGEgc2luZ2xlIGluc3RhbmNlLi4uICBpdCBhbHdheXMKLSAgICAgICAgICAgIC8vIGdldHMgbGF1bmNoZWQgaW50byBpdHMgb3duIHRhc2suCi0gICAgICAgICAgICBsYXVuY2hGbGFncyB8PSBJbnRlbnQuRkxBR19BQ1RJVklUWV9ORVdfVEFTSzsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChyLnJlc3VsdFRvICE9IG51bGwgJiYgKGxhdW5jaEZsYWdzJkludGVudC5GTEFHX0FDVElWSVRZX05FV19UQVNLKSAhPSAwKSB7Ci0gICAgICAgICAgICAvLyBGb3Igd2hhdGV2ZXIgcmVhc29uIHRoaXMgYWN0aXZpdHkgaXMgYmVpbmcgbGF1bmNoZWQgaW50byBhIG5ldwotICAgICAgICAgICAgLy8gdGFzay4uLiAgeWV0IHRoZSBjYWxsZXIgaGFzIHJlcXVlc3RlZCBhIHJlc3VsdCBiYWNrLiAgV2VsbCwgdGhhdAotICAgICAgICAgICAgLy8gaXMgcHJldHR5IG1lc3NlZCB1cCwgc28gaW5zdGVhZCBpbW1lZGlhdGVseSBzZW5kIGJhY2sgYSBjYW5jZWwKLSAgICAgICAgICAgIC8vIGFuZCBsZXQgdGhlIG5ldyB0YXNrIGNvbnRpbnVlIGxhdW5jaGVkIGFzIG5vcm1hbCB3aXRob3V0IGEKLSAgICAgICAgICAgIC8vIGRlcGVuZGVuY3kgb24gaXRzIG9yaWdpbmF0b3IuCi0gICAgICAgICAgICBTbG9nLncoVEFHLCAiQWN0aXZpdHkgaXMgbGF1bmNoaW5nIGFzIGEgbmV3IHRhc2ssIHNvIGNhbmNlbGxpbmcgYWN0aXZpdHkgcmVzdWx0LiIpOwotICAgICAgICAgICAgc2VuZEFjdGl2aXR5UmVzdWx0TG9ja2VkKC0xLAotICAgICAgICAgICAgICAgICAgICByLnJlc3VsdFRvLCByLnJlc3VsdFdobywgci5yZXF1ZXN0Q29kZSwKLSAgICAgICAgICAgICAgICBBY3Rpdml0eS5SRVNVTFRfQ0FOQ0VMRUQsIG51bGwpOwotICAgICAgICAgICAgci5yZXN1bHRUbyA9IG51bGw7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sZWFuIGFkZGluZ1RvVGFzayA9IGZhbHNlOwotICAgICAgICBpZiAoKChsYXVuY2hGbGFncyZJbnRlbnQuRkxBR19BQ1RJVklUWV9ORVdfVEFTSykgIT0gMCAmJgotICAgICAgICAgICAgICAgIChsYXVuY2hGbGFncyZJbnRlbnQuRkxBR19BQ1RJVklUWV9NVUxUSVBMRV9UQVNLKSA9PSAwKQotICAgICAgICAgICAgICAgIHx8IHIubGF1bmNoTW9kZSA9PSBBY3Rpdml0eUluZm8uTEFVTkNIX1NJTkdMRV9UQVNLCi0gICAgICAgICAgICAgICAgfHwgci5sYXVuY2hNb2RlID09IEFjdGl2aXR5SW5mby5MQVVOQ0hfU0lOR0xFX0lOU1RBTkNFKSB7Ci0gICAgICAgICAgICAvLyBJZiBicmluZyB0byBmcm9udCBpcyByZXF1ZXN0ZWQsIGFuZCBubyByZXN1bHQgaXMgcmVxdWVzdGVkLCBhbmQKLSAgICAgICAgICAgIC8vIHdlIGNhbiBmaW5kIGEgdGFzayB0aGF0IHdhcyBzdGFydGVkIHdpdGggdGhpcyBzYW1lCi0gICAgICAgICAgICAvLyBjb21wb25lbnQsIHRoZW4gaW5zdGVhZCBvZiBsYXVuY2hpbmcgYnJpbmcgdGhhdCBvbmUgdG8gdGhlIGZyb250LgotICAgICAgICAgICAgaWYgKHIucmVzdWx0VG8gPT0gbnVsbCkgewotICAgICAgICAgICAgICAgIC8vIFNlZSBpZiB0aGVyZSBpcyBhIHRhc2sgdG8gYnJpbmcgdG8gdGhlIGZyb250LiAgSWYgdGhpcyBpcwotICAgICAgICAgICAgICAgIC8vIGEgU0lOR0xFX0lOU1RBTkNFIGFjdGl2aXR5LCB0aGVyZSBjYW4gYmUgb25lIGFuZCBvbmx5IG9uZQotICAgICAgICAgICAgICAgIC8vIGluc3RhbmNlIG9mIGl0IGluIHRoZSBoaXN0b3J5LCBhbmQgaXQgaXMgYWx3YXlzIGluIGl0cyBvd24KLSAgICAgICAgICAgICAgICAvLyB1bmlxdWUgdGFzaywgc28gd2UgZG8gYSBzcGVjaWFsIHNlYXJjaC4KLSAgICAgICAgICAgICAgICBIaXN0b3J5UmVjb3JkIHRhc2tUb3AgPSByLmxhdW5jaE1vZGUgIT0gQWN0aXZpdHlJbmZvLkxBVU5DSF9TSU5HTEVfSU5TVEFOQ0UKLSAgICAgICAgICAgICAgICAgICAgICAgID8gZmluZFRhc2tMb2NrZWQoaW50ZW50LCByLmluZm8pCi0gICAgICAgICAgICAgICAgICAgICAgICA6IGZpbmRBY3Rpdml0eUxvY2tlZChpbnRlbnQsIHIuaW5mbyk7Ci0gICAgICAgICAgICAgICAgaWYgKHRhc2tUb3AgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICBpZiAodGFza1RvcC50YXNrLmludGVudCA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGlzIHRhc2sgd2FzIHN0YXJ0ZWQgYmVjYXVzZSBvZiBtb3ZlbWVudCBvZgotICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGFjdGl2aXR5IGJhc2VkIG9uIGFmZmluaXR5Li4uICBub3cgdGhhdCB3ZQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXJlIGFjdHVhbGx5IGxhdW5jaGluZyBpdCwgd2UgY2FuIGFzc2lnbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJhc2UgaW50ZW50LgotICAgICAgICAgICAgICAgICAgICAgICAgdGFza1RvcC50YXNrLnNldEludGVudChpbnRlbnQsIHIuaW5mbyk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHRhcmdldCB0YXNrIGlzIG5vdCBpbiB0aGUgZnJvbnQsIHRoZW4gd2UgbmVlZAotICAgICAgICAgICAgICAgICAgICAvLyB0byBicmluZyBpdCB0byB0aGUgZnJvbnQuLi4gIGV4Y2VwdC4uLiAgd2VsbCwgd2l0aAotICAgICAgICAgICAgICAgICAgICAvLyBTSU5HTEVfVEFTS19MQVVOQ0ggaXQncyBub3QgZW50aXJlbHkgY2xlYXIuICBXZSdkIGxpa2UKLSAgICAgICAgICAgICAgICAgICAgLy8gdG8gaGF2ZSB0aGUgc2FtZSBiZWhhdmlvciBhcyBpZiBhIG5ldyBpbnN0YW5jZSB3YXMKLSAgICAgICAgICAgICAgICAgICAgLy8gYmVpbmcgc3RhcnRlZCwgd2hpY2ggbWVhbnMgbm90IGJyaW5naW5nIGl0IHRvIHRoZSBmcm9udAotICAgICAgICAgICAgICAgICAgICAvLyBpZiB0aGUgY2FsbGVyIGlzIG5vdCBpdHNlbGYgaW4gdGhlIGZyb250LgotICAgICAgICAgICAgICAgICAgICBIaXN0b3J5UmVjb3JkIGN1clRvcCA9IHRvcFJ1bm5pbmdOb25EZWxheWVkQWN0aXZpdHlMb2NrZWQobm90VG9wKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGN1clRvcC50YXNrICE9IHRhc2tUb3AudGFzaykgewotICAgICAgICAgICAgICAgICAgICAgICAgci5pbnRlbnQuYWRkRmxhZ3MoSW50ZW50LkZMQUdfQUNUSVZJVFlfQlJPVUdIVF9UT19GUk9OVCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIGNhbGxlckF0RnJvbnQgPSBzb3VyY2VSZWNvcmQgPT0gbnVsbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBjdXJUb3AudGFzayA9PSBzb3VyY2VSZWNvcmQudGFzazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYWxsZXJBdEZyb250KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgcmVhbGx5IGRvIHdhbnQgdG8gcHVzaCB0aGlzIG9uZSBpbnRvIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZXIncyBmYWNlLCByaWdodCBub3cuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbW92ZVRhc2tUb0Zyb250TG9ja2VkKHRhc2tUb3AudGFzaywgcik7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGNhbGxlciBoYXMgcmVxdWVzdGVkIHRoYXQgdGhlIHRhcmdldCB0YXNrIGJlCi0gICAgICAgICAgICAgICAgICAgIC8vIHJlc2V0LCB0aGVuIGRvIHNvLgotICAgICAgICAgICAgICAgICAgICBpZiAoKGxhdW5jaEZsYWdzJkludGVudC5GTEFHX0FDVElWSVRZX1JFU0VUX1RBU0tfSUZfTkVFREVEKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0YXNrVG9wID0gcmVzZXRUYXNrSWZOZWVkZWRMb2NrZWQodGFza1RvcCwgcik7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYgKG9ubHlJZk5lZWRlZCkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBzdGFydCBhIG5ldyBhY3Rpdml0eSwgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgY2xpZW50IHNhaWQgbm90IHRvIGRvIGFueXRoaW5nIGlmIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIHRoZSBjYXNlLCBzbyB0aGlzIGlzIGl0ISAgQW5kIGZvciBwYXJhbm9pYSwgbWFrZQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3VyZSB3ZSBoYXZlIGNvcnJlY3RseSByZXN1bWVkIHRoZSB0b3AgYWN0aXZpdHkuCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZG9SZXN1bWUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bWVUb3BBY3Rpdml0eUxvY2tlZChudWxsKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTVEFSVF9SRVRVUk5fSU5URU5UX1RPX0NBTExFUjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBpZiAoKGxhdW5jaEZsYWdzJkludGVudC5GTEFHX0FDVElWSVRZX0NMRUFSX1RPUCkgIT0gMAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHIubGF1bmNoTW9kZSA9PSBBY3Rpdml0eUluZm8uTEFVTkNIX1NJTkdMRV9UQVNLCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgci5sYXVuY2hNb2RlID09IEFjdGl2aXR5SW5mby5MQVVOQ0hfU0lOR0xFX0lOU1RBTkNFKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBJbiB0aGlzIHNpdHVhdGlvbiB3ZSB3YW50IHRvIHJlbW92ZSBhbGwgYWN0aXZpdGllcwotICAgICAgICAgICAgICAgICAgICAgICAgLy8gZnJvbSB0aGUgdGFzayB1cCB0byB0aGUgb25lIGJlaW5nIHN0YXJ0ZWQuICBJbiBtb3N0Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlcyB0aGlzIG1lYW5zIHdlIGFyZSByZXNldHRpbmcgdGhlIHRhc2sgdG8gaXRzCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBpbml0aWFsIHN0YXRlLgotICAgICAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVJlY29yZCB0b3AgPSBwZXJmb3JtQ2xlYXJUYXNrTG9ja2VkKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrVG9wLnRhc2sudGFza0lkLCByLCBsYXVuY2hGbGFncywgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodG9wICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodG9wLmZyb250T2ZUYXNrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFjdGl2aXR5IGFsaWFzZXMgbWF5IG1lYW4gd2UgdXNlIGRpZmZlcmVudAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnRlbnRzIGZvciB0aGUgdG9wIGFjdGl2aXR5LCBzbyBtYWtlIHN1cmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHRhc2sgbm93IGhhcyB0aGUgaWRlbnRpdHkgb2YgdGhlIG5ldwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnRlbnQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvcC50YXNrLnNldEludGVudChyLmludGVudCwgci5pbmZvKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nU3RhcnRBY3Rpdml0eShFdmVudExvZ1RhZ3MuQU1fTkVXX0lOVEVOVCwgciwgdG9wLnRhc2spOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGl2ZXJOZXdJbnRlbnRMb2NrZWQodG9wLCByLmludGVudCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEEgc3BlY2lhbCBjYXNlOiB3ZSBuZWVkIHRvCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhcnQgdGhlIGFjdGl2aXR5IGJlY2F1c2UgaXQgaXMgbm90IGN1cnJlbnRseQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJ1bm5pbmcsIGFuZCB0aGUgY2FsbGVyIGhhcyBhc2tlZCB0byBjbGVhciB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjdXJyZW50IHRhc2sgdG8gaGF2ZSB0aGlzIGFjdGl2aXR5IGF0IHRoZSB0b3AuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaW5nVG9UYXNrID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3cgcHJldGVuZCBsaWtlIHRoaXMgYWN0aXZpdHkgaXMgYmVpbmcgc3RhcnRlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ5IHRoZSB0b3Agb2YgaXRzIHRhc2ssIHNvIGl0IGlzIHB1dCBpbiB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByaWdodCBwbGFjZS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VSZWNvcmQgPSB0YXNrVG9wOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHIucmVhbEFjdGl2aXR5LmVxdWFscyh0YXNrVG9wLnRhc2sucmVhbEFjdGl2aXR5KSkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW4gdGhpcyBjYXNlIHRoZSB0b3AgYWN0aXZpdHkgb24gdGhlIHRhc2sgaXMgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBzYW1lIGFzIHRoZSBvbmUgYmVpbmcgbGF1bmNoZWQsIHNvIHdlIHRha2UgdGhhdAotICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXMgYSByZXF1ZXN0IHRvIGJyaW5nIHRoZSB0YXNrIHRvIHRoZSBmb3JlZ3JvdW5kLgotICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHRvcCBhY3Rpdml0eSBpbiB0aGUgdGFzayBpcyB0aGUgcm9vdAotICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWN0aXZpdHksIGRlbGl2ZXIgdGhpcyBuZXcgaW50ZW50IHRvIGl0IGlmIGl0Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBkZXNpcmVzLgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChsYXVuY2hGbGFncyZJbnRlbnQuRkxBR19BQ1RJVklUWV9TSU5HTEVfVE9QKSAhPSAwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHRhc2tUb3AucmVhbEFjdGl2aXR5LmVxdWFscyhyLnJlYWxBY3Rpdml0eSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dTdGFydEFjdGl2aXR5KEV2ZW50TG9nVGFncy5BTV9ORVdfSU5URU5ULCByLCB0YXNrVG9wLnRhc2spOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YXNrVG9wLmZyb250T2ZUYXNrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2tUb3AudGFzay5zZXRJbnRlbnQoci5pbnRlbnQsIHIuaW5mbyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGl2ZXJOZXdJbnRlbnRMb2NrZWQodGFza1RvcCwgci5pbnRlbnQpOwotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghci5pbnRlbnQuZmlsdGVyRXF1YWxzKHRhc2tUb3AudGFzay5pbnRlbnQpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW4gdGhpcyBjYXNlIHdlIGFyZSBsYXVuY2hpbmcgdGhlIHJvb3QgYWN0aXZpdHkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvZiB0aGUgdGFzaywgYnV0IHdpdGggYSBkaWZmZXJlbnQgaW50ZW50LiAgV2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBzaG91bGQgc3RhcnQgYSBuZXcgaW5zdGFuY2Ugb24gdG9wLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGluZ1RvVGFzayA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlUmVjb3JkID0gdGFza1RvcDsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgobGF1bmNoRmxhZ3MmSW50ZW50LkZMQUdfQUNUSVZJVFlfUkVTRVRfVEFTS19JRl9ORUVERUQpID09IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSBhbiBhY3Rpdml0eSBpcyBiZWluZyBsYXVuY2hlZCBpbiB0byBhbgotICAgICAgICAgICAgICAgICAgICAgICAgLy8gZXhpc3RpbmcgdGFzaywgd2l0aG91dCByZXNldHRpbmcgdGhhdCB0YXNrLiAgVGhpcwotICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgdHlwaWNhbGx5IHRoZSBzaXR1YXRpb24gb2YgbGF1bmNoaW5nIGFuIGFjdGl2aXR5Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBmcm9tIGEgbm90aWZpY2F0aW9uIG9yIHNob3J0Y3V0LiAgV2Ugd2FudCB0byBwbGFjZQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIG5ldyBhY3Rpdml0eSBvbiB0b3Agb2YgdGhlIGN1cnJlbnQgdGFzay4KLSAgICAgICAgICAgICAgICAgICAgICAgIGFkZGluZ1RvVGFzayA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VSZWNvcmQgPSB0YXNrVG9wOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCF0YXNrVG9wLnRhc2sucm9vdFdhc1Jlc2V0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgYXJlIGxhdW5jaGluZyBpbiB0byBhbiBleGlzdGluZyB0YXNrCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGF0IGhhcyBub3QgeWV0IGJlZW4gc3RhcnRlZCBmcm9tIGl0cyBmcm9udCBkb29yLgotICAgICAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGN1cnJlbnQgdGFzayBoYXMgYmVlbiBicm91Z2h0IHRvIHRoZSBmcm9udC4KLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIElkZWFsbHksIHdlJ2QgcHJvYmFibHkgbGlrZSB0byBwbGFjZSB0aGlzIG5ldyB0YXNrCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBhdCB0aGUgYm90dG9tIG9mIGl0cyBzdGFjaywgYnV0IHRoYXQncyBhIGxpdHRsZSBoYXJkCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyB0byBkbyB3aXRoIHRoZSBjdXJyZW50IG9yZ2FuaXphdGlvbiBvZiB0aGUgY29kZSBzbwotICAgICAgICAgICAgICAgICAgICAgICAgLy8gZm9yIG5vdyB3ZSdsbCBqdXN0IGRyb3AgaXQuCi0gICAgICAgICAgICAgICAgICAgICAgICB0YXNrVG9wLnRhc2suc2V0SW50ZW50KHIuaW50ZW50LCByLmluZm8pOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmICghYWRkaW5nVG9UYXNrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvLyBXZSBkaWRuJ3QgZG8gYW55dGhpbmcuLi4gIGJ1dCBpdCB3YXMgbmVlZGVkIChhLmsuYS4sIGNsaWVudAotICAgICAgICAgICAgICAgICAgICAgICAgLy8gZG9uJ3QgdXNlIHRoYXQgaW50ZW50ISkgIEFuZCBmb3IgcGFyYW5vaWEsIG1ha2UKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN1cmUgd2UgaGF2ZSBjb3JyZWN0bHkgcmVzdW1lZCB0aGUgdG9wIGFjdGl2aXR5LgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRvUmVzdW1lKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdW1lVG9wQWN0aXZpdHlMb2NrZWQobnVsbCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU1RBUlRfVEFTS19UT19GUk9OVDsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIC8vU3RyaW5nIHVyaSA9IHIuaW50ZW50LnRvVVJJKCk7Ci0gICAgICAgIC8vSW50ZW50IGludGVudDIgPSBuZXcgSW50ZW50KHVyaSk7Ci0gICAgICAgIC8vU2xvZy5pKFRBRywgIkdpdmVuIGludGVudDogIiArIHIuaW50ZW50KTsKLSAgICAgICAgLy9TbG9nLmkoVEFHLCAiVVJJIGlzOiAiICsgdXJpKTsKLSAgICAgICAgLy9TbG9nLmkoVEFHLCAiVG8gaW50ZW50OiAiICsgaW50ZW50Mik7Ci0KLSAgICAgICAgaWYgKHIucGFja2FnZU5hbWUgIT0gbnVsbCkgewotICAgICAgICAgICAgLy8gSWYgdGhlIGFjdGl2aXR5IGJlaW5nIGxhdW5jaGVkIGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUgY3VycmVudGx5Ci0gICAgICAgICAgICAvLyBhdCB0aGUgdG9wLCB0aGVuIHdlIG5lZWQgdG8gY2hlY2sgaWYgaXQgc2hvdWxkIG9ubHkgYmUgbGF1bmNoZWQKLSAgICAgICAgICAgIC8vIG9uY2UuCi0gICAgICAgICAgICBIaXN0b3J5UmVjb3JkIHRvcCA9IHRvcFJ1bm5pbmdOb25EZWxheWVkQWN0aXZpdHlMb2NrZWQobm90VG9wKTsKLSAgICAgICAgICAgIGlmICh0b3AgIT0gbnVsbCAmJiByLnJlc3VsdFRvID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICBpZiAodG9wLnJlYWxBY3Rpdml0eS5lcXVhbHMoci5yZWFsQWN0aXZpdHkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmICh0b3AuYXBwICE9IG51bGwgJiYgdG9wLmFwcC50aHJlYWQgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChsYXVuY2hGbGFncyZJbnRlbnQuRkxBR19BQ1RJVklUWV9TSU5HTEVfVE9QKSAhPSAwCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgci5sYXVuY2hNb2RlID09IEFjdGl2aXR5SW5mby5MQVVOQ0hfU0lOR0xFX1RPUAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHIubGF1bmNoTW9kZSA9PSBBY3Rpdml0eUluZm8uTEFVTkNIX1NJTkdMRV9UQVNLKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nU3RhcnRBY3Rpdml0eShFdmVudExvZ1RhZ3MuQU1fTkVXX0lOVEVOVCwgdG9wLCB0b3AudGFzayk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRm9yIHBhcmFub2lhLCBtYWtlIHN1cmUgd2UgaGF2ZSBjb3JyZWN0bHkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXN1bWVkIHRoZSB0b3AgYWN0aXZpdHkuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRvUmVzdW1lKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VtZVRvcEFjdGl2aXR5TG9ja2VkKG51bGwpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob25seUlmTmVlZGVkKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gc3RhcnQgYSBuZXcgYWN0aXZpdHksIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgY2xpZW50IHNhaWQgbm90IHRvIGRvIGFueXRoaW5nIGlmIHRoYXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgdGhlIGNhc2UsIHNvIHRoaXMgaXMgaXQhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTVEFSVF9SRVRVUk5fSU5URU5UX1RPX0NBTExFUjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsaXZlck5ld0ludGVudExvY2tlZCh0b3AsIHIuaW50ZW50KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU1RBUlRfREVMSVZFUkVEX1RPX1RPUDsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKHIucmVzdWx0VG8gIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIHNlbmRBY3Rpdml0eVJlc3VsdExvY2tlZCgtMSwKLSAgICAgICAgICAgICAgICAgICAgICAgIHIucmVzdWx0VG8sIHIucmVzdWx0V2hvLCByLnJlcXVlc3RDb2RlLAotICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eS5SRVNVTFRfQ0FOQ0VMRUQsIG51bGwpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIFNUQVJUX0NMQVNTX05PVF9GT1VORDsKLSAgICAgICAgfQotCi0gICAgICAgIGJvb2xlYW4gbmV3VGFzayA9IGZhbHNlOwotCi0gICAgICAgIC8vIFNob3VsZCB0aGlzIGJlIGNvbnNpZGVyZWQgYSBuZXcgdGFzaz8KLSAgICAgICAgaWYgKHIucmVzdWx0VG8gPT0gbnVsbCAmJiAhYWRkaW5nVG9UYXNrCi0gICAgICAgICAgICAgICAgJiYgKGxhdW5jaEZsYWdzJkludGVudC5GTEFHX0FDVElWSVRZX05FV19UQVNLKSAhPSAwKSB7Ci0gICAgICAgICAgICAvLyB0b2RvOiBzaG91bGQgZG8gYmV0dGVyIG1hbmFnZW1lbnQgb2YgaW50ZWdlcnMuCi0gICAgICAgICAgICBtQ3VyVGFzaysrOwotICAgICAgICAgICAgaWYgKG1DdXJUYXNrIDw9IDApIHsKLSAgICAgICAgICAgICAgICBtQ3VyVGFzayA9IDE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByLnRhc2sgPSBuZXcgVGFza1JlY29yZChtQ3VyVGFzaywgci5pbmZvLCBpbnRlbnQsCi0gICAgICAgICAgICAgICAgICAgIChyLmluZm8uZmxhZ3MmQWN0aXZpdHlJbmZvLkZMQUdfQ0xFQVJfVEFTS19PTl9MQVVOQ0gpICE9IDApOwotICAgICAgICAgICAgaWYgKERFQlVHX1RBU0tTKSBTbG9nLnYoVEFHLCAiU3RhcnRpbmcgbmV3IGFjdGl2aXR5ICIgKyByCi0gICAgICAgICAgICAgICAgICAgICsgIiBpbiBuZXcgdGFzayAiICsgci50YXNrKTsKLSAgICAgICAgICAgIG5ld1Rhc2sgPSB0cnVlOwotICAgICAgICAgICAgYWRkUmVjZW50VGFza0xvY2tlZChyLnRhc2spOwotICAgICAgICAgICAgCi0gICAgICAgIH0gZWxzZSBpZiAoc291cmNlUmVjb3JkICE9IG51bGwpIHsKLSAgICAgICAgICAgIGlmICghYWRkaW5nVG9UYXNrICYmCi0gICAgICAgICAgICAgICAgICAgIChsYXVuY2hGbGFncyZJbnRlbnQuRkxBR19BQ1RJVklUWV9DTEVBUl9UT1ApICE9IDApIHsKLSAgICAgICAgICAgICAgICAvLyBJbiB0aGlzIGNhc2UsIHdlIGFyZSBhZGRpbmcgdGhlIGFjdGl2aXR5IHRvIGFuIGV4aXN0aW5nCi0gICAgICAgICAgICAgICAgLy8gdGFzaywgYnV0IHRoZSBjYWxsZXIgaGFzIGFza2VkIHRvIGNsZWFyIHRoYXQgdGFzayBpZiB0aGUKLSAgICAgICAgICAgICAgICAvLyBhY3Rpdml0eSBpcyBhbHJlYWR5IHJ1bm5pbmcuCi0gICAgICAgICAgICAgICAgSGlzdG9yeVJlY29yZCB0b3AgPSBwZXJmb3JtQ2xlYXJUYXNrTG9ja2VkKAotICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlUmVjb3JkLnRhc2sudGFza0lkLCByLCBsYXVuY2hGbGFncywgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgaWYgKHRvcCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIGxvZ1N0YXJ0QWN0aXZpdHkoRXZlbnRMb2dUYWdzLkFNX05FV19JTlRFTlQsIHIsIHRvcC50YXNrKTsKLSAgICAgICAgICAgICAgICAgICAgZGVsaXZlck5ld0ludGVudExvY2tlZCh0b3AsIHIuaW50ZW50KTsKLSAgICAgICAgICAgICAgICAgICAgLy8gRm9yIHBhcmFub2lhLCBtYWtlIHN1cmUgd2UgaGF2ZSBjb3JyZWN0bHkKLSAgICAgICAgICAgICAgICAgICAgLy8gcmVzdW1lZCB0aGUgdG9wIGFjdGl2aXR5LgotICAgICAgICAgICAgICAgICAgICBpZiAoZG9SZXN1bWUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VtZVRvcEFjdGl2aXR5TG9ja2VkKG51bGwpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBTVEFSVF9ERUxJVkVSRURfVE9fVE9QOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSBpZiAoIWFkZGluZ1RvVGFzayAmJgotICAgICAgICAgICAgICAgICAgICAobGF1bmNoRmxhZ3MmSW50ZW50LkZMQUdfQUNUSVZJVFlfUkVPUkRFUl9UT19GUk9OVCkgIT0gMCkgewotICAgICAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSwgd2UgYXJlIGxhdW5jaGluZyBhbiBhY3Rpdml0eSBpbiBvdXIgb3duIHRhc2sKLSAgICAgICAgICAgICAgICAvLyB0aGF0IG1heSBhbHJlYWR5IGJlIHJ1bm5pbmcgc29tZXdoZXJlIGluIHRoZSBoaXN0b3J5LCBhbmQKLSAgICAgICAgICAgICAgICAvLyB3ZSB3YW50IHRvIHNodWZmbGUgaXQgdG8gdGhlIGZyb250IG9mIHRoZSBzdGFjayBpZiBzby4KLSAgICAgICAgICAgICAgICBpbnQgd2hlcmUgPSBmaW5kQWN0aXZpdHlJbkhpc3RvcnlMb2NrZWQociwgc291cmNlUmVjb3JkLnRhc2sudGFza0lkKTsKLSAgICAgICAgICAgICAgICBpZiAod2hlcmUgPj0gMCkgewotICAgICAgICAgICAgICAgICAgICBIaXN0b3J5UmVjb3JkIHRvcCA9IG1vdmVBY3Rpdml0eVRvRnJvbnRMb2NrZWQod2hlcmUpOwotICAgICAgICAgICAgICAgICAgICBsb2dTdGFydEFjdGl2aXR5KEV2ZW50TG9nVGFncy5BTV9ORVdfSU5URU5ULCByLCB0b3AudGFzayk7Ci0gICAgICAgICAgICAgICAgICAgIGRlbGl2ZXJOZXdJbnRlbnRMb2NrZWQodG9wLCByLmludGVudCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChkb1Jlc3VtZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdW1lVG9wQWN0aXZpdHlMb2NrZWQobnVsbCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFNUQVJUX0RFTElWRVJFRF9UT19UT1A7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gQW4gZXhpc3RpbmcgYWN0aXZpdHkgaXMgc3RhcnRpbmcgdGhpcyBuZXcgYWN0aXZpdHksIHNvIHdlIHdhbnQKLSAgICAgICAgICAgIC8vIHRvIGtlZXAgdGhlIG5ldyBvbmUgaW4gdGhlIHNhbWUgdGFzayBhcyB0aGUgb25lIHRoYXQgaXMgc3RhcnRpbmcKLSAgICAgICAgICAgIC8vIGl0LgotICAgICAgICAgICAgci50YXNrID0gc291cmNlUmVjb3JkLnRhc2s7Ci0gICAgICAgICAgICBpZiAoREVCVUdfVEFTS1MpIFNsb2cudihUQUcsICJTdGFydGluZyBuZXcgYWN0aXZpdHkgIiArIHIKLSAgICAgICAgICAgICAgICAgICAgKyAiIGluIGV4aXN0aW5nIHRhc2sgIiArIHIudGFzayk7Ci0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIFRoaXMgbm90IGJlaW5nIHN0YXJ0ZWQgZnJvbSBhbiBleGlzdGluZyBhY3Rpdml0eSwgYW5kIG5vdCBwYXJ0Ci0gICAgICAgICAgICAvLyBvZiBhIG5ldyB0YXNrLi4uICBqdXN0IHB1dCBpdCBpbiB0aGUgdG9wIHRhc2ssIHRob3VnaCB0aGVzZSBkYXlzCi0gICAgICAgICAgICAvLyB0aGlzIGNhc2Ugc2hvdWxkIG5ldmVyIGhhcHBlbi4KLSAgICAgICAgICAgIGZpbmFsIGludCBOID0gbUhpc3Rvcnkuc2l6ZSgpOwotICAgICAgICAgICAgSGlzdG9yeVJlY29yZCBwcmV2ID0KLSAgICAgICAgICAgICAgICBOID4gMCA/IChIaXN0b3J5UmVjb3JkKW1IaXN0b3J5LmdldChOLTEpIDogbnVsbDsKLSAgICAgICAgICAgIHIudGFzayA9IHByZXYgIT0gbnVsbAotICAgICAgICAgICAgICAgID8gcHJldi50YXNrCi0gICAgICAgICAgICAgICAgOiBuZXcgVGFza1JlY29yZChtQ3VyVGFzaywgci5pbmZvLCBpbnRlbnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAoci5pbmZvLmZsYWdzJkFjdGl2aXR5SW5mby5GTEFHX0NMRUFSX1RBU0tfT05fTEFVTkNIKSAhPSAwKTsKLSAgICAgICAgICAgIGlmIChERUJVR19UQVNLUykgU2xvZy52KFRBRywgIlN0YXJ0aW5nIG5ldyBhY3Rpdml0eSAiICsgcgotICAgICAgICAgICAgICAgICAgICArICIgaW4gbmV3IGd1ZXNzZWQgIiArIHIudGFzayk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG5ld1Rhc2spIHsKLSAgICAgICAgICAgIEV2ZW50TG9nLndyaXRlRXZlbnQoRXZlbnRMb2dUYWdzLkFNX0NSRUFURV9UQVNLLCByLnRhc2sudGFza0lkKTsKLSAgICAgICAgfQotICAgICAgICBsb2dTdGFydEFjdGl2aXR5KEV2ZW50TG9nVGFncy5BTV9DUkVBVEVfQUNUSVZJVFksIHIsIHIudGFzayk7Ci0gICAgICAgIHN0YXJ0QWN0aXZpdHlMb2NrZWQociwgbmV3VGFzaywgZG9SZXN1bWUpOwotICAgICAgICByZXR1cm4gU1RBUlRfU1VDQ0VTUzsKLSAgICB9Ci0KLSAgICB2b2lkIHJlcG9ydEFjdGl2aXR5TGF1bmNoZWRMb2NrZWQoYm9vbGVhbiB0aW1lb3V0LCBIaXN0b3J5UmVjb3JkIHIsCi0gICAgICAgICAgICBsb25nIHRoaXNUaW1lLCBsb25nIHRvdGFsVGltZSkgewotICAgICAgICBmb3IgKGludCBpPW1XYWl0aW5nQWN0aXZpdHlMYXVuY2hlZC5zaXplKCktMTsgaT49MDsgaS0tKSB7Ci0gICAgICAgICAgICBXYWl0UmVzdWx0IHcgPSBtV2FpdGluZ0FjdGl2aXR5TGF1bmNoZWQuZ2V0KGkpOwotICAgICAgICAgICAgdy50aW1lb3V0ID0gdGltZW91dDsKLSAgICAgICAgICAgIGlmIChyICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICB3LndobyA9IG5ldyBDb21wb25lbnROYW1lKHIuaW5mby5wYWNrYWdlTmFtZSwgci5pbmZvLm5hbWUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdy50aGlzVGltZSA9IHRoaXNUaW1lOwotICAgICAgICAgICAgdy50b3RhbFRpbWUgPSB0b3RhbFRpbWU7Ci0gICAgICAgIH0KLSAgICAgICAgbm90aWZ5KCk7Ci0gICAgfQotICAgIAotICAgIHZvaWQgcmVwb3J0QWN0aXZpdHlWaXNpYmxlTG9ja2VkKEhpc3RvcnlSZWNvcmQgcikgewotICAgICAgICBmb3IgKGludCBpPW1XYWl0aW5nQWN0aXZpdHlWaXNpYmxlLnNpemUoKS0xOyBpPj0wOyBpLS0pIHsKLSAgICAgICAgICAgIFdhaXRSZXN1bHQgdyA9IG1XYWl0aW5nQWN0aXZpdHlWaXNpYmxlLmdldChpKTsKLSAgICAgICAgICAgIHcudGltZW91dCA9IGZhbHNlOwotICAgICAgICAgICAgaWYgKHIgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIHcud2hvID0gbmV3IENvbXBvbmVudE5hbWUoci5pbmZvLnBhY2thZ2VOYW1lLCByLmluZm8ubmFtZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB3LnRvdGFsVGltZSA9IFN5c3RlbUNsb2NrLnVwdGltZU1pbGxpcygpIC0gdy50aGlzVGltZTsKLSAgICAgICAgICAgIHcudGhpc1RpbWUgPSB3LnRvdGFsVGltZTsKLSAgICAgICAgfQotICAgICAgICBub3RpZnkoKTsKLSAgICB9Ci0gICAgCi0gICAgcHJpdmF0ZSBmaW5hbCBpbnQgc3RhcnRBY3Rpdml0eU1heVdhaXQoSUFwcGxpY2F0aW9uVGhyZWFkIGNhbGxlciwKLSAgICAgICAgICAgIEludGVudCBpbnRlbnQsIFN0cmluZyByZXNvbHZlZFR5cGUsIFVyaVtdIGdyYW50ZWRVcmlQZXJtaXNzaW9ucywKLSAgICAgICAgICAgIGludCBncmFudGVkTW9kZSwgSUJpbmRlciByZXN1bHRUbywKLSAgICAgICAgICAgIFN0cmluZyByZXN1bHRXaG8sIGludCByZXF1ZXN0Q29kZSwgYm9vbGVhbiBvbmx5SWZOZWVkZWQsCi0gICAgICAgICAgICBib29sZWFuIGRlYnVnLCBXYWl0UmVzdWx0IG91dFJlc3VsdCwgQ29uZmlndXJhdGlvbiBjb25maWcpIHsKLSAgICAgICAgLy8gUmVmdXNlIHBvc3NpYmxlIGxlYWtlZCBmaWxlIGRlc2NyaXB0b3JzCi0gICAgICAgIGlmIChpbnRlbnQgIT0gbnVsbCAmJiBpbnRlbnQuaGFzRmlsZURlc2NyaXB0b3JzKCkpIHsKLSAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkZpbGUgZGVzY3JpcHRvcnMgcGFzc2VkIGluIEludGVudCIpOwotICAgICAgICB9Ci0KLSAgICAgICAgZmluYWwgYm9vbGVhbiBjb21wb25lbnRTcGVjaWZpZWQgPSBpbnRlbnQuZ2V0Q29tcG9uZW50KCkgIT0gbnVsbDsKLSAgICAgICAgCi0gICAgICAgIC8vIERvbid0IG1vZGlmeSB0aGUgY2xpZW50J3Mgb2JqZWN0IQotICAgICAgICBpbnRlbnQgPSBuZXcgSW50ZW50KGludGVudCk7Ci0KLSAgICAgICAgLy8gQ29sbGVjdCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdGFyZ2V0IG9mIHRoZSBJbnRlbnQuCi0gICAgICAgIEFjdGl2aXR5SW5mbyBhSW5mbzsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIFJlc29sdmVJbmZvIHJJbmZvID0KLSAgICAgICAgICAgICAgICBBY3Rpdml0eVRocmVhZC5nZXRQYWNrYWdlTWFuYWdlcigpLnJlc29sdmVJbnRlbnQoCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnRlbnQsIHJlc29sdmVkVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2VNYW5hZ2VyLk1BVENIX0RFRkFVTFRfT05MWQotICAgICAgICAgICAgICAgICAgICAgICAgfCBTVE9DS19QTV9GTEFHUyk7Ci0gICAgICAgICAgICBhSW5mbyA9IHJJbmZvICE9IG51bGwgPyBySW5mby5hY3Rpdml0eUluZm8gOiBudWxsOwotICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgYUluZm8gPSBudWxsOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGFJbmZvICE9IG51bGwpIHsKLSAgICAgICAgICAgIC8vIFN0b3JlIHRoZSBmb3VuZCB0YXJnZXQgYmFjayBpbnRvIHRoZSBpbnRlbnQsIGJlY2F1c2Ugbm93IHRoYXQKLSAgICAgICAgICAgIC8vIHdlIGhhdmUgaXQgd2UgbmV2ZXIgd2FudCB0byBkbyB0aGlzIGFnYWluLiAgRm9yIGV4YW1wbGUsIGlmIHRoZQotICAgICAgICAgICAgLy8gdXNlciBuYXZpZ2F0ZXMgYmFjayB0byB0aGlzIHBvaW50IGluIHRoZSBoaXN0b3J5LCB3ZSBzaG91bGQKLSAgICAgICAgICAgIC8vIGFsd2F5cyByZXN0YXJ0IHRoZSBleGFjdCBzYW1lIGFjdGl2aXR5LgotICAgICAgICAgICAgaW50ZW50LnNldENvbXBvbmVudChuZXcgQ29tcG9uZW50TmFtZSgKLSAgICAgICAgICAgICAgICAgICAgYUluZm8uYXBwbGljYXRpb25JbmZvLnBhY2thZ2VOYW1lLCBhSW5mby5uYW1lKSk7Ci0KLSAgICAgICAgICAgIC8vIERvbid0IGRlYnVnIHRoaW5ncyBpbiB0aGUgc3lzdGVtIHByb2Nlc3MKLSAgICAgICAgICAgIGlmIChkZWJ1ZykgewotICAgICAgICAgICAgICAgIGlmICghYUluZm8ucHJvY2Vzc05hbWUuZXF1YWxzKCJzeXN0ZW0iKSkgewotICAgICAgICAgICAgICAgICAgICBzZXREZWJ1Z0FwcChhSW5mby5wcm9jZXNzTmFtZSwgdHJ1ZSwgZmFsc2UpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgewotICAgICAgICAgICAgaW50IGNhbGxpbmdQaWQ7Ci0gICAgICAgICAgICBpbnQgY2FsbGluZ1VpZDsKLSAgICAgICAgICAgIGlmIChjYWxsZXIgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgIGNhbGxpbmdQaWQgPSBCaW5kZXIuZ2V0Q2FsbGluZ1BpZCgpOwotICAgICAgICAgICAgICAgIGNhbGxpbmdVaWQgPSBCaW5kZXIuZ2V0Q2FsbGluZ1VpZCgpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBjYWxsaW5nUGlkID0gY2FsbGluZ1VpZCA9IC0xOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICBtQ29uZmlnV2lsbENoYW5nZSA9IGNvbmZpZyAhPSBudWxsICYmIG1Db25maWd1cmF0aW9uLmRpZmYoY29uZmlnKSAhPSAwOwotICAgICAgICAgICAgaWYgKERFQlVHX0NPTkZJR1VSQVRJT04pIFNsb2cudihUQUcsCi0gICAgICAgICAgICAgICAgICAgICJTdGFydGluZyBhY3Rpdml0eSB3aGVuIGNvbmZpZyB3aWxsIGNoYW5nZSA9ICIgKyBtQ29uZmlnV2lsbENoYW5nZSk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGZpbmFsIGxvbmcgb3JpZ0lkID0gQmluZGVyLmNsZWFyQ2FsbGluZ0lkZW50aXR5KCk7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGludCByZXMgPSBzdGFydEFjdGl2aXR5TG9ja2VkKGNhbGxlciwgaW50ZW50LCByZXNvbHZlZFR5cGUsCi0gICAgICAgICAgICAgICAgICAgIGdyYW50ZWRVcmlQZXJtaXNzaW9ucywgZ3JhbnRlZE1vZGUsIGFJbmZvLAotICAgICAgICAgICAgICAgICAgICByZXN1bHRUbywgcmVzdWx0V2hvLCByZXF1ZXN0Q29kZSwgY2FsbGluZ1BpZCwgY2FsbGluZ1VpZCwKLSAgICAgICAgICAgICAgICAgICAgb25seUlmTmVlZGVkLCBjb21wb25lbnRTcGVjaWZpZWQpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAobUNvbmZpZ1dpbGxDaGFuZ2UpIHsKLSAgICAgICAgICAgICAgICAvLyBJZiB0aGUgY2FsbGVyIGFsc28gd2FudHMgdG8gc3dpdGNoIHRvIGEgbmV3IGNvbmZpZ3VyYXRpb24sCi0gICAgICAgICAgICAgICAgLy8gZG8gc28gbm93LiAgVGhpcyBhbGxvd3MgYSBjbGVhbiBzd2l0Y2gsIGFzIHdlIGFyZSB3YWl0aW5nCi0gICAgICAgICAgICAgICAgLy8gZm9yIHRoZSBjdXJyZW50IGFjdGl2aXR5IHRvIHBhdXNlIChzbyB3ZSB3aWxsIG5vdCBkZXN0cm95Ci0gICAgICAgICAgICAgICAgLy8gaXQpLCBhbmQgaGF2ZSBub3QgeWV0IHN0YXJ0ZWQgdGhlIG5leHQgYWN0aXZpdHkuCi0gICAgICAgICAgICAgICAgZW5mb3JjZUNhbGxpbmdQZXJtaXNzaW9uKGFuZHJvaWQuTWFuaWZlc3QucGVybWlzc2lvbi5DSEFOR0VfQ09ORklHVVJBVElPTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJ1cGRhdGVDb25maWd1cmF0aW9uKCkiKTsKLSAgICAgICAgICAgICAgICBtQ29uZmlnV2lsbENoYW5nZSA9IGZhbHNlOwotICAgICAgICAgICAgICAgIGlmIChERUJVR19DT05GSUdVUkFUSU9OKSBTbG9nLnYoVEFHLAotICAgICAgICAgICAgICAgICAgICAgICAgIlVwZGF0aW5nIHRvIG5ldyBjb25maWd1cmF0aW9uIGFmdGVyIHN0YXJ0aW5nIGFjdGl2aXR5LiIpOwotICAgICAgICAgICAgICAgIHVwZGF0ZUNvbmZpZ3VyYXRpb25Mb2NrZWQoY29uZmlnLCBudWxsKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgQmluZGVyLnJlc3RvcmVDYWxsaW5nSWRlbnRpdHkob3JpZ0lkKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKG91dFJlc3VsdCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgb3V0UmVzdWx0LnJlc3VsdCA9IHJlczsKLSAgICAgICAgICAgICAgICBpZiAocmVzID09IElBY3Rpdml0eU1hbmFnZXIuU1RBUlRfU1VDQ0VTUykgewotICAgICAgICAgICAgICAgICAgICBtV2FpdGluZ0FjdGl2aXR5TGF1bmNoZWQuYWRkKG91dFJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FpdCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoSW50ZXJydXB0ZWRFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9IHdoaWxlICghb3V0UmVzdWx0LnRpbWVvdXQgJiYgb3V0UmVzdWx0LndobyA9PSBudWxsKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHJlcyA9PSBJQWN0aXZpdHlNYW5hZ2VyLlNUQVJUX1RBU0tfVE9fRlJPTlQpIHsKLSAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVJlY29yZCByID0gdGhpcy50b3BSdW5uaW5nQWN0aXZpdHlMb2NrZWQobnVsbCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyLm5vd1Zpc2libGUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dFJlc3VsdC50aW1lb3V0ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXRSZXN1bHQud2hvID0gbmV3IENvbXBvbmVudE5hbWUoci5pbmZvLnBhY2thZ2VOYW1lLCByLmluZm8ubmFtZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXRSZXN1bHQudG90YWxUaW1lID0gMDsKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dFJlc3VsdC50aGlzVGltZSA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXRSZXN1bHQudGhpc1RpbWUgPSBTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1XYWl0aW5nQWN0aXZpdHlWaXNpYmxlLmFkZChvdXRSZXN1bHQpOwotICAgICAgICAgICAgICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhaXQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChJbnRlcnJ1cHRlZEV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoIW91dFJlc3VsdC50aW1lb3V0ICYmIG91dFJlc3VsdC53aG8gPT0gbnVsbCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHJldHVybiByZXM7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICBwdWJsaWMgZmluYWwgaW50IHN0YXJ0QWN0aXZpdHkoSUFwcGxpY2F0aW9uVGhyZWFkIGNhbGxlciwKICAgICAgICAgICAgIEludGVudCBpbnRlbnQsIFN0cmluZyByZXNvbHZlZFR5cGUsIFVyaVtdIGdyYW50ZWRVcmlQZXJtaXNzaW9ucywKICAgICAgICAgICAgIGludCBncmFudGVkTW9kZSwgSUJpbmRlciByZXN1bHRUbywKICAgICAgICAgICAgIFN0cmluZyByZXN1bHRXaG8sIGludCByZXF1ZXN0Q29kZSwgYm9vbGVhbiBvbmx5SWZOZWVkZWQsCiAgICAgICAgICAgICBib29sZWFuIGRlYnVnKSB7Ci0gICAgICAgIHJldHVybiBzdGFydEFjdGl2aXR5TWF5V2FpdChjYWxsZXIsIGludGVudCwgcmVzb2x2ZWRUeXBlLAorICAgICAgICByZXR1cm4gbU1haW5TdGFjay5zdGFydEFjdGl2aXR5TWF5V2FpdChjYWxsZXIsIGludGVudCwgcmVzb2x2ZWRUeXBlLAogICAgICAgICAgICAgICAgIGdyYW50ZWRVcmlQZXJtaXNzaW9ucywgZ3JhbnRlZE1vZGUsIHJlc3VsdFRvLCByZXN1bHRXaG8sCiAgICAgICAgICAgICAgICAgcmVxdWVzdENvZGUsIG9ubHlJZk5lZWRlZCwgZGVidWcsIG51bGwsIG51bGwpOwogICAgIH0KQEAgLTM3OTgsNyArMTk4OCw3IEBACiAgICAgICAgICAgICBTdHJpbmcgcmVzdWx0V2hvLCBpbnQgcmVxdWVzdENvZGUsIGJvb2xlYW4gb25seUlmTmVlZGVkLAogICAgICAgICAgICAgYm9vbGVhbiBkZWJ1ZykgewogICAgICAgICBXYWl0UmVzdWx0IHJlcyA9IG5ldyBXYWl0UmVzdWx0KCk7Ci0gICAgICAgIHN0YXJ0QWN0aXZpdHlNYXlXYWl0KGNhbGxlciwgaW50ZW50LCByZXNvbHZlZFR5cGUsCisgICAgICAgIG1NYWluU3RhY2suc3RhcnRBY3Rpdml0eU1heVdhaXQoY2FsbGVyLCBpbnRlbnQsIHJlc29sdmVkVHlwZSwKICAgICAgICAgICAgICAgICBncmFudGVkVXJpUGVybWlzc2lvbnMsIGdyYW50ZWRNb2RlLCByZXN1bHRUbywgcmVzdWx0V2hvLAogICAgICAgICAgICAgICAgIHJlcXVlc3RDb2RlLCBvbmx5SWZOZWVkZWQsIGRlYnVnLCByZXMsIG51bGwpOwogICAgICAgICByZXR1cm4gcmVzOwpAQCAtMzgwOSw3ICsxOTk5LDcgQEAKICAgICAgICAgICAgIGludCBncmFudGVkTW9kZSwgSUJpbmRlciByZXN1bHRUbywKICAgICAgICAgICAgIFN0cmluZyByZXN1bHRXaG8sIGludCByZXF1ZXN0Q29kZSwgYm9vbGVhbiBvbmx5SWZOZWVkZWQsCiAgICAgICAgICAgICBib29sZWFuIGRlYnVnLCBDb25maWd1cmF0aW9uIGNvbmZpZykgewotICAgICAgICByZXR1cm4gc3RhcnRBY3Rpdml0eU1heVdhaXQoY2FsbGVyLCBpbnRlbnQsIHJlc29sdmVkVHlwZSwKKyAgICAgICAgcmV0dXJuIG1NYWluU3RhY2suc3RhcnRBY3Rpdml0eU1heVdhaXQoY2FsbGVyLCBpbnRlbnQsIHJlc29sdmVkVHlwZSwKICAgICAgICAgICAgICAgICBncmFudGVkVXJpUGVybWlzc2lvbnMsIGdyYW50ZWRNb2RlLCByZXN1bHRUbywgcmVzdWx0V2hvLAogICAgICAgICAgICAgICAgIHJlcXVlc3RDb2RlLCBvbmx5SWZOZWVkZWQsIGRlYnVnLCBudWxsLCBjb25maWcpOwogICAgIH0KQEAgLTM4MzMsOCArMjAyMyw4IEBACiAgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgewogICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBjb21pbmcgZnJvbSB0aGUgY3VycmVudGx5IHJlc3VtZWQgYWN0aXZpdHksIGl0IGlzCiAgICAgICAgICAgICAvLyBlZmZlY3RpdmVseSBzYXlpbmcgdGhhdCBhcHAgc3dpdGNoZXMgYXJlIGFsbG93ZWQgYXQgdGhpcyBwb2ludC4KLSAgICAgICAgICAgIGlmIChtUmVzdW1lZEFjdGl2aXR5ICE9IG51bGwKLSAgICAgICAgICAgICAgICAgICAgJiYgbVJlc3VtZWRBY3Rpdml0eS5pbmZvLmFwcGxpY2F0aW9uSW5mby51aWQgPT0KKyAgICAgICAgICAgIGlmIChtTWFpblN0YWNrLm1SZXN1bWVkQWN0aXZpdHkgIT0gbnVsbAorICAgICAgICAgICAgICAgICAgICAmJiBtTWFpblN0YWNrLm1SZXN1bWVkQWN0aXZpdHkuaW5mby5hcHBsaWNhdGlvbkluZm8udWlkID09CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmluZGVyLmdldENhbGxpbmdVaWQoKSkgewogICAgICAgICAgICAgICAgIG1BcHBTd2l0Y2hlc0FsbG93ZWRUaW1lID0gMDsKICAgICAgICAgICAgIH0KQEAgLTM4NTIsMTEgKzIwNDIsMTEgQEAKICAgICAgICAgfQogCiAgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgewotICAgICAgICAgICAgaW50IGluZGV4ID0gaW5kZXhPZlRva2VuTG9ja2VkKGNhbGxpbmdBY3Rpdml0eSk7CisgICAgICAgICAgICBpbnQgaW5kZXggPSBtTWFpblN0YWNrLmluZGV4T2ZUb2tlbkxvY2tlZChjYWxsaW5nQWN0aXZpdHkpOwogICAgICAgICAgICAgaWYgKGluZGV4IDwgMCkgewogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgciA9IChIaXN0b3J5UmVjb3JkKW1IaXN0b3J5LmdldChpbmRleCk7CisgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gKEFjdGl2aXR5UmVjb3JkKW1NYWluU3RhY2subUhpc3RvcnkuZ2V0KGluZGV4KTsKICAgICAgICAgICAgIGlmIChyLmFwcCA9PSBudWxsIHx8IHIuYXBwLnRocmVhZCA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgLy8gVGhlIGNhbGxlciBpcyBub3QgcnVubmluZy4uLiAgZCdvaCEKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0zODcwLDcgKzIwNjAsNyBAQAogICAgICAgICAgICAgQWN0aXZpdHlJbmZvIGFJbmZvID0gbnVsbDsKICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgTGlzdDxSZXNvbHZlSW5mbz4gcmVzb2x2ZXMgPQotICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eVRocmVhZC5nZXRQYWNrYWdlTWFuYWdlcigpLnF1ZXJ5SW50ZW50QWN0aXZpdGllcygKKyAgICAgICAgICAgICAgICAgICAgQXBwR2xvYmFscy5nZXRQYWNrYWdlTWFuYWdlcigpLnF1ZXJ5SW50ZW50QWN0aXZpdGllcygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlbnQsIHIucmVzb2x2ZWRUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2VNYW5hZ2VyLk1BVENIX0RFRkFVTFRfT05MWSB8IFNUT0NLX1BNX0ZMQUdTKTsKIApAQCAtMzkxNCw3ICsyMTA0LDcgQEAKICAgICAgICAgICAgIHIuZmluaXNoaW5nID0gdHJ1ZTsKIAogICAgICAgICAgICAgLy8gUHJvcGFnYXRlIHJlcGx5IGluZm9ybWF0aW9uIG92ZXIgdG8gdGhlIG5ldyBhY3Rpdml0eS4KLSAgICAgICAgICAgIGZpbmFsIEhpc3RvcnlSZWNvcmQgcmVzdWx0VG8gPSByLnJlc3VsdFRvOworICAgICAgICAgICAgZmluYWwgQWN0aXZpdHlSZWNvcmQgcmVzdWx0VG8gPSByLnJlc3VsdFRvOwogICAgICAgICAgICAgZmluYWwgU3RyaW5nIHJlc3VsdFdobyA9IHIucmVzdWx0V2hvOwogICAgICAgICAgICAgZmluYWwgaW50IHJlcXVlc3RDb2RlID0gci5yZXF1ZXN0Q29kZTsKICAgICAgICAgICAgIHIucmVzdWx0VG8gPSBudWxsOwpAQCAtMzkyNSw3ICsyMTE1LDcgQEAKICAgICAgICAgICAgIGZpbmFsIGxvbmcgb3JpZ0lkID0gQmluZGVyLmNsZWFyQ2FsbGluZ0lkZW50aXR5KCk7CiAgICAgICAgICAgICAvLyBYWFggd2UgYXJlIG5vdCBkZWFsaW5nIHdpdGggcHJvcGFnYXRpbmcgZ3JhbnRlZFVyaVBlcm1pc3Npb25zLi4uCiAgICAgICAgICAgICAvLyB0aG9zZSBhcmUgbm90IHlldCBleHBvc2VkIHRvIHVzZXIgY29kZSwgc28gdGhlcmUgaXMgbm8gbmVlZC4KLSAgICAgICAgICAgIGludCByZXMgPSBzdGFydEFjdGl2aXR5TG9ja2VkKHIuYXBwLnRocmVhZCwgaW50ZW50LAorICAgICAgICAgICAgaW50IHJlcyA9IG1NYWluU3RhY2suc3RhcnRBY3Rpdml0eUxvY2tlZChyLmFwcC50aHJlYWQsIGludGVudCwKICAgICAgICAgICAgICAgICAgICAgci5yZXNvbHZlZFR5cGUsIG51bGwsIDAsIGFJbmZvLCByZXN1bHRUbywgcmVzdWx0V2hvLAogICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Q29kZSwgLTEsIHIubGF1bmNoZWRGcm9tVWlkLCBmYWxzZSwgZmFsc2UpOwogICAgICAgICAgICAgQmluZGVyLnJlc3RvcmVDYWxsaW5nSWRlbnRpdHkob3JpZ0lkKTsKQEAgLTM5NTksNyArMjE0OSw3IEBACiAgICAgICAgIEFjdGl2aXR5SW5mbyBhSW5mbzsKICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgIFJlc29sdmVJbmZvIHJJbmZvID0KLSAgICAgICAgICAgICAgICBBY3Rpdml0eVRocmVhZC5nZXRQYWNrYWdlTWFuYWdlcigpLnJlc29sdmVJbnRlbnQoCisgICAgICAgICAgICAgICAgQXBwR2xvYmFscy5nZXRQYWNrYWdlTWFuYWdlcigpLnJlc29sdmVJbnRlbnQoCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlbnQsIHJlc29sdmVkVHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgIFBhY2thZ2VNYW5hZ2VyLk1BVENIX0RFRkFVTFRfT05MWSB8IFNUT0NLX1BNX0ZMQUdTKTsKICAgICAgICAgICAgIGFJbmZvID0gckluZm8gIT0gbnVsbCA/IHJJbmZvLmFjdGl2aXR5SW5mbyA6IG51bGw7CkBAIC0zOTc3LDEzICsyMTY3LDEzIEBACiAgICAgICAgIH0KIAogICAgICAgICBzeW5jaHJvbml6ZWQodGhpcykgewotICAgICAgICAgICAgcmV0dXJuIHN0YXJ0QWN0aXZpdHlMb2NrZWQobnVsbCwgaW50ZW50LCByZXNvbHZlZFR5cGUsCisgICAgICAgICAgICByZXR1cm4gbU1haW5TdGFjay5zdGFydEFjdGl2aXR5TG9ja2VkKG51bGwsIGludGVudCwgcmVzb2x2ZWRUeXBlLAogICAgICAgICAgICAgICAgICAgICBudWxsLCAwLCBhSW5mbywgcmVzdWx0VG8sIHJlc3VsdFdobywgcmVxdWVzdENvZGUsIC0xLCB1aWQsCiAgICAgICAgICAgICAgICAgICAgIG9ubHlJZk5lZWRlZCwgY29tcG9uZW50U3BlY2lmaWVkKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIHByaXZhdGUgZmluYWwgdm9pZCBhZGRSZWNlbnRUYXNrTG9ja2VkKFRhc2tSZWNvcmQgdGFzaykgeworICAgIGZpbmFsIHZvaWQgYWRkUmVjZW50VGFza0xvY2tlZChUYXNrUmVjb3JkIHRhc2spIHsKICAgICAgICAgLy8gUmVtb3ZlIGFueSBleGlzdGluZyBlbnRyaWVzIHRoYXQgYXJlIHRoZSBzYW1lIGtpbmQgb2YgdGFzay4KICAgICAgICAgaW50IE4gPSBtUmVjZW50VGFza3Muc2l6ZSgpOwogICAgICAgICBmb3IgKGludCBpPTA7IGk8TjsgaSsrKSB7CkBAIC00MDA5LDExICsyMTk5LDExIEBACiAgICAgcHVibGljIHZvaWQgc2V0UmVxdWVzdGVkT3JpZW50YXRpb24oSUJpbmRlciB0b2tlbiwKICAgICAgICAgICAgIGludCByZXF1ZXN0ZWRPcmllbnRhdGlvbikgewogICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKLSAgICAgICAgICAgIGludCBpbmRleCA9IGluZGV4T2ZUb2tlbkxvY2tlZCh0b2tlbik7CisgICAgICAgICAgICBpbnQgaW5kZXggPSBtTWFpblN0YWNrLmluZGV4T2ZUb2tlbkxvY2tlZCh0b2tlbik7CiAgICAgICAgICAgICBpZiAoaW5kZXggPCAwKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgSGlzdG9yeVJlY29yZCByID0gKEhpc3RvcnlSZWNvcmQpbUhpc3RvcnkuZ2V0KGluZGV4KTsKKyAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSAoQWN0aXZpdHlSZWNvcmQpbU1haW5TdGFjay5tSGlzdG9yeS5nZXQoaW5kZXgpOwogICAgICAgICAgICAgZmluYWwgbG9uZyBvcmlnSWQgPSBCaW5kZXIuY2xlYXJDYWxsaW5nSWRlbnRpdHkoKTsKICAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyLnNldEFwcE9yaWVudGF0aW9uKHIsIHJlcXVlc3RlZE9yaWVudGF0aW9uKTsKICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24gY29uZmlnID0gbVdpbmRvd01hbmFnZXIudXBkYXRlT3JpZW50YXRpb25Gcm9tQXBwVG9rZW5zKApAQCAtNDAyMiw3ICsyMjEyLDcgQEAKICAgICAgICAgICAgIGlmIChjb25maWcgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgIHIuZnJvemVuQmVmb3JlRGVzdHJveSA9IHRydWU7CiAgICAgICAgICAgICAgICAgaWYgKCF1cGRhdGVDb25maWd1cmF0aW9uTG9ja2VkKGNvbmZpZywgcikpIHsKLSAgICAgICAgICAgICAgICAgICAgcmVzdW1lVG9wQWN0aXZpdHlMb2NrZWQobnVsbCk7CisgICAgICAgICAgICAgICAgICAgIG1NYWluU3RhY2sucmVzdW1lVG9wQWN0aXZpdHlMb2NrZWQobnVsbCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgQmluZGVyLnJlc3RvcmVDYWxsaW5nSWRlbnRpdHkob3JpZ0lkKTsKQEAgLTQwMzEsMjUwICsyMjIxLDE1IEBACiAKICAgICBwdWJsaWMgaW50IGdldFJlcXVlc3RlZE9yaWVudGF0aW9uKElCaW5kZXIgdG9rZW4pIHsKICAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7Ci0gICAgICAgICAgICBpbnQgaW5kZXggPSBpbmRleE9mVG9rZW5Mb2NrZWQodG9rZW4pOworICAgICAgICAgICAgaW50IGluZGV4ID0gbU1haW5TdGFjay5pbmRleE9mVG9rZW5Mb2NrZWQodG9rZW4pOwogICAgICAgICAgICAgaWYgKGluZGV4IDwgMCkgewogICAgICAgICAgICAgICAgIHJldHVybiBBY3Rpdml0eUluZm8uU0NSRUVOX09SSUVOVEFUSU9OX1VOU1BFQ0lGSUVEOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgSGlzdG9yeVJlY29yZCByID0gKEhpc3RvcnlSZWNvcmQpbUhpc3RvcnkuZ2V0KGluZGV4KTsKKyAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSAoQWN0aXZpdHlSZWNvcmQpbU1haW5TdGFjay5tSGlzdG9yeS5nZXQoaW5kZXgpOwogICAgICAgICAgICAgcmV0dXJuIG1XaW5kb3dNYW5hZ2VyLmdldEFwcE9yaWVudGF0aW9uKHIpOwogICAgICAgICB9CiAgICAgfQogCi0gICAgcHJpdmF0ZSBmaW5hbCB2b2lkIHN0b3BBY3Rpdml0eUxvY2tlZChIaXN0b3J5UmVjb3JkIHIpIHsKLSAgICAgICAgaWYgKERFQlVHX1NXSVRDSCkgU2xvZy5kKFRBRywgIlN0b3BwaW5nOiAiICsgcik7Ci0gICAgICAgIGlmICgoci5pbnRlbnQuZ2V0RmxhZ3MoKSZJbnRlbnQuRkxBR19BQ1RJVklUWV9OT19ISVNUT1JZKSAhPSAwCi0gICAgICAgICAgICAgICAgfHwgKHIuaW5mby5mbGFncyZBY3Rpdml0eUluZm8uRkxBR19OT19ISVNUT1JZKSAhPSAwKSB7Ci0gICAgICAgICAgICBpZiAoIXIuZmluaXNoaW5nKSB7Ci0gICAgICAgICAgICAgICAgcmVxdWVzdEZpbmlzaEFjdGl2aXR5TG9ja2VkKHIsIEFjdGl2aXR5LlJFU1VMVF9DQU5DRUxFRCwgbnVsbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICJuby1oaXN0b3J5Iik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAoci5hcHAgIT0gbnVsbCAmJiByLmFwcC50aHJlYWQgIT0gbnVsbCkgewotICAgICAgICAgICAgaWYgKG1Gb2N1c2VkQWN0aXZpdHkgPT0gcikgewotICAgICAgICAgICAgICAgIHNldEZvY3VzZWRBY3Rpdml0eUxvY2tlZCh0b3BSdW5uaW5nQWN0aXZpdHlMb2NrZWQobnVsbCkpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgci5yZXN1bWVLZXlEaXNwYXRjaGluZ0xvY2tlZCgpOwotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICByLnN0b3BwZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICByLnN0YXRlID0gQWN0aXZpdHlTdGF0ZS5TVE9QUElORzsKLSAgICAgICAgICAgICAgICBpZiAoREVCVUdfVklTQklMSVRZKSBTbG9nLnYoCi0gICAgICAgICAgICAgICAgICAgICAgICBUQUcsICJTdG9wcGluZyB2aXNpYmxlPSIgKyByLnZpc2libGUgKyAiIGZvciAiICsgcik7Ci0gICAgICAgICAgICAgICAgaWYgKCFyLnZpc2libGUpIHsKLSAgICAgICAgICAgICAgICAgICAgbVdpbmRvd01hbmFnZXIuc2V0QXBwVmlzaWJpbGl0eShyLCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHIuYXBwLnRocmVhZC5zY2hlZHVsZVN0b3BBY3Rpdml0eShyLCByLnZpc2libGUsIHIuY29uZmlnQ2hhbmdlRmxhZ3MpOwotICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICAvLyBNYXliZSBqdXN0IGlnbm9yZSBleGNlcHRpb25zIGhlcmUuLi4gIGlmIHRoZSBwcm9jZXNzCi0gICAgICAgICAgICAgICAgLy8gaGFzIGNyYXNoZWQsIG91ciBkZWF0aCBub3RpZmljYXRpb24gd2lsbCBjbGVhbiB0aGluZ3MKLSAgICAgICAgICAgICAgICAvLyB1cC4KLSAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiRXhjZXB0aW9uIHRocm93biBkdXJpbmcgcGF1c2UiLCBlKTsKLSAgICAgICAgICAgICAgICAvLyBKdXN0IGluIGNhc2UsIGFzc3VtZSBpdCB0byBiZSBzdG9wcGVkLgotICAgICAgICAgICAgICAgIHIuc3RvcHBlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgci5zdGF0ZSA9IEFjdGl2aXR5U3RhdGUuU1RPUFBFRDsKLSAgICAgICAgICAgICAgICBpZiAoci5jb25maWdEZXN0cm95KSB7Ci0gICAgICAgICAgICAgICAgICAgIGRlc3Ryb3lBY3Rpdml0eUxvY2tlZChyLCB0cnVlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBAcmV0dXJuIFJldHVybnMgdHJ1ZSBpZiB0aGUgYWN0aXZpdHkgaXMgYmVpbmcgZmluaXNoZWQsIGZhbHNlIGlmIGZvcgotICAgICAqIHNvbWUgcmVhc29uIGl0IGlzIGJlaW5nIGxlZnQgYXMtaXMuCi0gICAgICovCi0gICAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIHJlcXVlc3RGaW5pc2hBY3Rpdml0eUxvY2tlZChJQmluZGVyIHRva2VuLCBpbnQgcmVzdWx0Q29kZSwKLSAgICAgICAgICAgIEludGVudCByZXN1bHREYXRhLCBTdHJpbmcgcmVhc29uKSB7Ci0gICAgICAgIGlmIChERUJVR19SRVNVTFRTKSBTbG9nLnYoCi0gICAgICAgICAgICBUQUcsICJGaW5pc2hpbmcgYWN0aXZpdHk6IHRva2VuPSIgKyB0b2tlbgotICAgICAgICAgICAgKyAiLCByZXN1bHQ9IiArIHJlc3VsdENvZGUgKyAiLCBkYXRhPSIgKyByZXN1bHREYXRhKTsKLQotICAgICAgICBpbnQgaW5kZXggPSBpbmRleE9mVG9rZW5Mb2NrZWQodG9rZW4pOwotICAgICAgICBpZiAoaW5kZXggPCAwKSB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgSGlzdG9yeVJlY29yZCByID0gKEhpc3RvcnlSZWNvcmQpbUhpc3RvcnkuZ2V0KGluZGV4KTsKLQotICAgICAgICAvLyBJcyB0aGlzIHRoZSBsYXN0IGFjdGl2aXR5IGxlZnQ/Ci0gICAgICAgIGJvb2xlYW4gbGFzdEFjdGl2aXR5ID0gdHJ1ZTsKLSAgICAgICAgZm9yIChpbnQgaT1tSGlzdG9yeS5zaXplKCktMTsgaT49MDsgaS0tKSB7Ci0gICAgICAgICAgICBIaXN0b3J5UmVjb3JkIHAgPSAoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQoaSk7Ci0gICAgICAgICAgICBpZiAoIXAuZmluaXNoaW5nICYmIHAgIT0gcikgewotICAgICAgICAgICAgICAgIGxhc3RBY3Rpdml0eSA9IGZhbHNlOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAvLyBJZiB0aGlzIGlzIHRoZSBsYXN0IGFjdGl2aXR5LCBidXQgaXQgaXMgdGhlIGhvbWUgYWN0aXZpdHksIHRoZW4KLSAgICAgICAgLy8ganVzdCBkb24ndCBmaW5pc2ggaXQuCi0gICAgICAgIGlmIChsYXN0QWN0aXZpdHkpIHsKLSAgICAgICAgICAgIGlmIChyLmludGVudC5oYXNDYXRlZ29yeShJbnRlbnQuQ0FURUdPUllfSE9NRSkpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGZpbmlzaEFjdGl2aXR5TG9ja2VkKHIsIGluZGV4LCByZXN1bHRDb2RlLCByZXN1bHREYXRhLCByZWFzb24pOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBAcmV0dXJuIFJldHVybnMgdHJ1ZSBpZiB0aGlzIGFjdGl2aXR5IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgaGlzdG9yeQotICAgICAqIGxpc3QsIG9yIGZhbHNlIGlmIGl0IGlzIHN0aWxsIGluIHRoZSBsaXN0IGFuZCB3aWxsIGJlIHJlbW92ZWQgbGF0ZXIuCi0gICAgICovCi0gICAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIGZpbmlzaEFjdGl2aXR5TG9ja2VkKEhpc3RvcnlSZWNvcmQgciwgaW50IGluZGV4LAotICAgICAgICAgICAgaW50IHJlc3VsdENvZGUsIEludGVudCByZXN1bHREYXRhLCBTdHJpbmcgcmVhc29uKSB7Ci0gICAgICAgIGlmIChyLmZpbmlzaGluZykgewotICAgICAgICAgICAgU2xvZy53KFRBRywgIkR1cGxpY2F0ZSBmaW5pc2ggcmVxdWVzdCBmb3IgIiArIHIpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgci5maW5pc2hpbmcgPSB0cnVlOwotICAgICAgICBFdmVudExvZy53cml0ZUV2ZW50KEV2ZW50TG9nVGFncy5BTV9GSU5JU0hfQUNUSVZJVFksCi0gICAgICAgICAgICAgICAgU3lzdGVtLmlkZW50aXR5SGFzaENvZGUociksCi0gICAgICAgICAgICAgICAgci50YXNrLnRhc2tJZCwgci5zaG9ydENvbXBvbmVudE5hbWUsIHJlYXNvbik7Ci0gICAgICAgIHIudGFzay5udW1BY3Rpdml0aWVzLS07Ci0gICAgICAgIGlmIChpbmRleCA8IChtSGlzdG9yeS5zaXplKCktMSkpIHsKLSAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgbmV4dCA9IChIaXN0b3J5UmVjb3JkKW1IaXN0b3J5LmdldChpbmRleCsxKTsKLSAgICAgICAgICAgIGlmIChuZXh0LnRhc2sgPT0gci50YXNrKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHIuZnJvbnRPZlRhc2spIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gVGhlIG5leHQgYWN0aXZpdHkgaXMgbm93IHRoZSBmcm9udCBvZiB0aGUgdGFzay4KLSAgICAgICAgICAgICAgICAgICAgbmV4dC5mcm9udE9mVGFzayA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICgoci5pbnRlbnQuZ2V0RmxhZ3MoKSZJbnRlbnQuRkxBR19BQ1RJVklUWV9DTEVBUl9XSEVOX1RBU0tfUkVTRVQpICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGNhbGxlciBhc2tlZCB0aGF0IHRoaXMgYWN0aXZpdHkgKGFuZCBhbGwgYWJvdmUgaXQpCi0gICAgICAgICAgICAgICAgICAgIC8vIGJlIGNsZWFyZWQgd2hlbiB0aGUgdGFzayBpcyByZXNldCwgZG9uJ3QgbG9zZSB0aGF0IGluZm9ybWF0aW9uLAotICAgICAgICAgICAgICAgICAgICAvLyBidXQgcHJvcGFnYXRlIGl0IHVwIHRvIHRoZSBuZXh0IGFjdGl2aXR5LgotICAgICAgICAgICAgICAgICAgICBuZXh0LmludGVudC5hZGRGbGFncyhJbnRlbnQuRkxBR19BQ1RJVklUWV9DTEVBUl9XSEVOX1RBU0tfUkVTRVQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHIucGF1c2VLZXlEaXNwYXRjaGluZ0xvY2tlZCgpOwotICAgICAgICBpZiAobUZvY3VzZWRBY3Rpdml0eSA9PSByKSB7Ci0gICAgICAgICAgICBzZXRGb2N1c2VkQWN0aXZpdHlMb2NrZWQodG9wUnVubmluZ0FjdGl2aXR5TG9ja2VkKG51bGwpKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIHNlbmQgdGhlIHJlc3VsdAotICAgICAgICBIaXN0b3J5UmVjb3JkIHJlc3VsdFRvID0gci5yZXN1bHRUbzsKLSAgICAgICAgaWYgKHJlc3VsdFRvICE9IG51bGwpIHsKLSAgICAgICAgICAgIGlmIChERUJVR19SRVNVTFRTKSBTbG9nLnYoVEFHLCAiQWRkaW5nIHJlc3VsdCB0byAiICsgcmVzdWx0VG8KLSAgICAgICAgICAgICAgICAgICAgKyAiIHdobz0iICsgci5yZXN1bHRXaG8gKyAiIHJlcT0iICsgci5yZXF1ZXN0Q29kZQotICAgICAgICAgICAgICAgICAgICArICIgcmVzPSIgKyByZXN1bHRDb2RlICsgIiBkYXRhPSIgKyByZXN1bHREYXRhKTsKLSAgICAgICAgICAgIGlmIChyLmluZm8uYXBwbGljYXRpb25JbmZvLnVpZCA+IDApIHsKLSAgICAgICAgICAgICAgICBncmFudFVyaVBlcm1pc3Npb25Gcm9tSW50ZW50TG9ja2VkKHIuaW5mby5hcHBsaWNhdGlvbkluZm8udWlkLAotICAgICAgICAgICAgICAgICAgICAgICAgci5wYWNrYWdlTmFtZSwgcmVzdWx0RGF0YSwgcik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXN1bHRUby5hZGRSZXN1bHRMb2NrZWQociwgci5yZXN1bHRXaG8sIHIucmVxdWVzdENvZGUsIHJlc3VsdENvZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0RGF0YSk7Ci0gICAgICAgICAgICByLnJlc3VsdFRvID0gbnVsbDsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChERUJVR19SRVNVTFRTKSBTbG9nLnYoVEFHLCAiTm8gcmVzdWx0IGRlc3RpbmF0aW9uIGZyb20gIiArIHIpOwotCi0gICAgICAgIC8vIE1ha2Ugc3VyZSB0aGlzIEhpc3RvcnlSZWNvcmQgaXMgbm90IGhvbGRpbmcgb24gdG8gb3RoZXIgcmVzb3VyY2VzLAotICAgICAgICAvLyBiZWNhdXNlIGNsaWVudHMgaGF2ZSByZW1vdGUgSVBDIHJlZmVyZW5jZXMgdG8gdGhpcyBvYmplY3Qgc28gd2UKLSAgICAgICAgLy8gY2FuJ3QgYXNzdW1lIHRoYXQgd2lsbCBnbyBhd2F5IGFuZCB3YW50IHRvIGF2b2lkIGNpcmN1bGFyIElQQyByZWZzLgotICAgICAgICByLnJlc3VsdHMgPSBudWxsOwotICAgICAgICByLnBlbmRpbmdSZXN1bHRzID0gbnVsbDsKLSAgICAgICAgci5uZXdJbnRlbnRzID0gbnVsbDsKLSAgICAgICAgci5pY2ljbGUgPSBudWxsOwotICAgICAgICAKLSAgICAgICAgaWYgKG1QZW5kaW5nVGh1bWJuYWlscy5zaXplKCkgPiAwKSB7Ci0gICAgICAgICAgICAvLyBUaGVyZSBhcmUgY2xpZW50cyB3YWl0aW5nIHRvIHJlY2VpdmUgdGh1bWJuYWlscyBzbywgaW4gY2FzZQotICAgICAgICAgICAgLy8gdGhpcyBpcyBhbiBhY3Rpdml0eSB0aGF0IHNvbWVvbmUgaXMgd2FpdGluZyBmb3IsIGFkZCBpdAotICAgICAgICAgICAgLy8gdG8gdGhlIHBlbmRpbmcgbGlzdCBzbyB3ZSBjYW4gY29ycmVjdGx5IHVwZGF0ZSB0aGUgY2xpZW50cy4KLSAgICAgICAgICAgIG1DYW5jZWxsZWRUaHVtYm5haWxzLmFkZChyKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChtUmVzdW1lZEFjdGl2aXR5ID09IHIpIHsKLSAgICAgICAgICAgIGJvb2xlYW4gZW5kVGFzayA9IGluZGV4IDw9IDAKLSAgICAgICAgICAgICAgICAgICAgfHwgKChIaXN0b3J5UmVjb3JkKW1IaXN0b3J5LmdldChpbmRleC0xKSkudGFzayAhPSByLnRhc2s7Ci0gICAgICAgICAgICBpZiAoREVCVUdfVFJBTlNJVElPTikgU2xvZy52KFRBRywKLSAgICAgICAgICAgICAgICAgICAgIlByZXBhcmUgY2xvc2UgdHJhbnNpdGlvbjogZmluaXNoaW5nICIgKyByKTsKLSAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyLnByZXBhcmVBcHBUcmFuc2l0aW9uKGVuZFRhc2sKLSAgICAgICAgICAgICAgICAgICAgPyBXaW5kb3dNYW5hZ2VyUG9saWN5LlRSQU5TSVRfVEFTS19DTE9TRQotICAgICAgICAgICAgICAgICAgICA6IFdpbmRvd01hbmFnZXJQb2xpY3kuVFJBTlNJVF9BQ1RJVklUWV9DTE9TRSk7Ci0gICAgCi0gICAgICAgICAgICAvLyBUZWxsIHdpbmRvdyBtYW5hZ2VyIHRvIHByZXBhcmUgZm9yIHRoaXMgb25lIHRvIGJlIHJlbW92ZWQuCi0gICAgICAgICAgICBtV2luZG93TWFuYWdlci5zZXRBcHBWaXNpYmlsaXR5KHIsIGZhbHNlKTsKLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChtUGF1c2luZ0FjdGl2aXR5ID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICBpZiAoREVCVUdfUEFVU0UpIFNsb2cudihUQUcsICJGaW5pc2ggbmVlZHMgdG8gcGF1c2U6ICIgKyByKTsKLSAgICAgICAgICAgICAgICBpZiAoREVCVUdfVVNFUl9MRUFWSU5HKSBTbG9nLnYoVEFHLCAiZmluaXNoKCkgPT4gcGF1c2Ugd2l0aCB1c2VyTGVhdmluZz1mYWxzZSIpOwotICAgICAgICAgICAgICAgIHN0YXJ0UGF1c2luZ0xvY2tlZChmYWxzZSwgZmFsc2UpOwotICAgICAgICAgICAgfQotCi0gICAgICAgIH0gZWxzZSBpZiAoci5zdGF0ZSAhPSBBY3Rpdml0eVN0YXRlLlBBVVNJTkcpIHsKLSAgICAgICAgICAgIC8vIElmIHRoZSBhY3Rpdml0eSBpcyBQQVVTSU5HLCB3ZSB3aWxsIGNvbXBsZXRlIHRoZSBmaW5pc2ggb25jZQotICAgICAgICAgICAgLy8gaXQgaXMgZG9uZSBwYXVzaW5nOyBlbHNlIHdlIGNhbiBqdXN0IGRpcmVjdGx5IGZpbmlzaCBpdCBoZXJlLgotICAgICAgICAgICAgaWYgKERFQlVHX1BBVVNFKSBTbG9nLnYoVEFHLCAiRmluaXNoIG5vdCBwYXVzaW5nOiAiICsgcik7Ci0gICAgICAgICAgICByZXR1cm4gZmluaXNoQ3VycmVudEFjdGl2aXR5TG9ja2VkKHIsIGluZGV4LAotICAgICAgICAgICAgICAgICAgICBGSU5JU0hfQUZURVJfUEFVU0UpID09IG51bGw7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAoREVCVUdfUEFVU0UpIFNsb2cudihUQUcsICJGaW5pc2ggd2FpdGluZyBmb3IgcGF1c2Ugb2Y6ICIgKyByKTsKLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRklOSVNIX0lNTUVESUFURUxZID0gMDsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRklOSVNIX0FGVEVSX1BBVVNFID0gMTsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRklOSVNIX0FGVEVSX1ZJU0lCTEUgPSAyOwotCi0gICAgcHJpdmF0ZSBmaW5hbCBIaXN0b3J5UmVjb3JkIGZpbmlzaEN1cnJlbnRBY3Rpdml0eUxvY2tlZChIaXN0b3J5UmVjb3JkIHIsCi0gICAgICAgICAgICBpbnQgbW9kZSkgewotICAgICAgICBmaW5hbCBpbnQgaW5kZXggPSBpbmRleE9mVG9rZW5Mb2NrZWQocik7Ci0gICAgICAgIGlmIChpbmRleCA8IDApIHsKLSAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIGZpbmlzaEN1cnJlbnRBY3Rpdml0eUxvY2tlZChyLCBpbmRleCwgbW9kZSk7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBmaW5hbCBIaXN0b3J5UmVjb3JkIGZpbmlzaEN1cnJlbnRBY3Rpdml0eUxvY2tlZChIaXN0b3J5UmVjb3JkIHIsCi0gICAgICAgICAgICBpbnQgaW5kZXgsIGludCBtb2RlKSB7Ci0gICAgICAgIC8vIEZpcnN0IHRoaW5ncyBmaXJzdDogaWYgdGhpcyBhY3Rpdml0eSBpcyBjdXJyZW50bHkgdmlzaWJsZSwKLSAgICAgICAgLy8gYW5kIHRoZSByZXN1bWVkIGFjdGl2aXR5IGlzIG5vdCB5ZXQgdmlzaWJsZSwgdGhlbiBob2xkIG9mZiBvbgotICAgICAgICAvLyBmaW5pc2hpbmcgdW50aWwgdGhlIHJlc3VtZWQgb25lIGJlY29tZXMgdmlzaWJsZS4KLSAgICAgICAgaWYgKG1vZGUgPT0gRklOSVNIX0FGVEVSX1ZJU0lCTEUgJiYgci5ub3dWaXNpYmxlKSB7Ci0gICAgICAgICAgICBpZiAoIW1TdG9wcGluZ0FjdGl2aXRpZXMuY29udGFpbnMocikpIHsKLSAgICAgICAgICAgICAgICBtU3RvcHBpbmdBY3Rpdml0aWVzLmFkZChyKTsKLSAgICAgICAgICAgICAgICBpZiAobVN0b3BwaW5nQWN0aXZpdGllcy5zaXplKCkgPiAzKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIElmIHdlIGFscmVhZHkgaGF2ZSBhIGZldyBhY3Rpdml0aWVzIHdhaXRpbmcgdG8gc3RvcCwKLSAgICAgICAgICAgICAgICAgICAgLy8gdGhlbiBnaXZlIHVwIG9uIHRoaW5ncyBnb2luZyBpZGxlIGFuZCBzdGFydCBjbGVhcmluZwotICAgICAgICAgICAgICAgICAgICAvLyB0aGVtIG91dC4KLSAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSBtc2cgPSBNZXNzYWdlLm9idGFpbigpOwotICAgICAgICAgICAgICAgICAgICBtc2cud2hhdCA9IEFjdGl2aXR5TWFuYWdlclNlcnZpY2UuSURMRV9OT1dfTVNHOwotICAgICAgICAgICAgICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZShtc2cpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHIuc3RhdGUgPSBBY3Rpdml0eVN0YXRlLlNUT1BQSU5HOwotICAgICAgICAgICAgdXBkYXRlT29tQWRqTG9ja2VkKCk7Ci0gICAgICAgICAgICByZXR1cm4gcjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIG1ha2Ugc3VyZSB0aGUgcmVjb3JkIGlzIGNsZWFuZWQgb3V0IG9mIG90aGVyIHBsYWNlcy4KLSAgICAgICAgbVN0b3BwaW5nQWN0aXZpdGllcy5yZW1vdmUocik7Ci0gICAgICAgIG1XYWl0aW5nVmlzaWJsZUFjdGl2aXRpZXMucmVtb3ZlKHIpOwotICAgICAgICBpZiAobVJlc3VtZWRBY3Rpdml0eSA9PSByKSB7Ci0gICAgICAgICAgICBtUmVzdW1lZEFjdGl2aXR5ID0gbnVsbDsKLSAgICAgICAgfQotICAgICAgICBmaW5hbCBBY3Rpdml0eVN0YXRlIHByZXZTdGF0ZSA9IHIuc3RhdGU7Ci0gICAgICAgIHIuc3RhdGUgPSBBY3Rpdml0eVN0YXRlLkZJTklTSElORzsKLQotICAgICAgICBpZiAobW9kZSA9PSBGSU5JU0hfSU1NRURJQVRFTFkKLSAgICAgICAgICAgICAgICB8fCBwcmV2U3RhdGUgPT0gQWN0aXZpdHlTdGF0ZS5TVE9QUEVECi0gICAgICAgICAgICAgICAgfHwgcHJldlN0YXRlID09IEFjdGl2aXR5U3RhdGUuSU5JVElBTElaSU5HKSB7Ci0gICAgICAgICAgICAvLyBJZiB0aGlzIGFjdGl2aXR5IGlzIGFscmVhZHkgc3RvcHBlZCwgd2UgY2FuIGp1c3QgZmluaXNoCi0gICAgICAgICAgICAvLyBpdCByaWdodCBub3cuCi0gICAgICAgICAgICByZXR1cm4gZGVzdHJveUFjdGl2aXR5TG9ja2VkKHIsIHRydWUpID8gbnVsbCA6IHI7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBOZWVkIHRvIGdvIHRocm91Z2ggdGhlIGZ1bGwgcGF1c2UgY3ljbGUgdG8gZ2V0IHRoaXMKLSAgICAgICAgICAgIC8vIGFjdGl2aXR5IGludG8gdGhlIHN0b3BwZWQgc3RhdGUgYW5kIHRoZW4gZmluaXNoIGl0LgotICAgICAgICAgICAgaWYgKGxvY2FsTE9HVikgU2xvZy52KFRBRywgIkVucXVldWVpbmcgcGVuZGluZyBmaW5pc2g6ICIgKyByKTsKLSAgICAgICAgICAgIG1GaW5pc2hpbmdBY3Rpdml0aWVzLmFkZChyKTsKLSAgICAgICAgICAgIHJlc3VtZVRvcEFjdGl2aXR5TG9ja2VkKG51bGwpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiByOwotICAgIH0KLQogICAgIC8qKgogICAgICAqIFRoaXMgaXMgdGhlIGludGVybmFsIGVudHJ5IHBvaW50IGZvciBoYW5kbGluZyBBY3Rpdml0eS5maW5pc2goKS4KICAgICAgKiAKQEAgLTQyOTMsNyArMjI0OCw3IEBACiAgICAgICAgIHN5bmNocm9uaXplZCh0aGlzKSB7CiAgICAgICAgICAgICBpZiAobUNvbnRyb2xsZXIgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgIC8vIEZpbmQgdGhlIGZpcnN0IGFjdGl2aXR5IHRoYXQgaXMgbm90IGZpbmlzaGluZy4KLSAgICAgICAgICAgICAgICBIaXN0b3J5UmVjb3JkIG5leHQgPSB0b3BSdW5uaW5nQWN0aXZpdHlMb2NrZWQodG9rZW4sIDApOworICAgICAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIG5leHQgPSBtTWFpblN0YWNrLnRvcFJ1bm5pbmdBY3Rpdml0eUxvY2tlZCh0b2tlbiwgMCk7CiAgICAgICAgICAgICAgICAgaWYgKG5leHQgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAvLyBhc2sgd2F0Y2hlciBpZiB0aGlzIGlzIGFsbG93ZWQKICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbiByZXN1bWVPSyA9IHRydWU7CkBAIC00MzA5LDU3ICsyMjY0LDExOSBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGZpbmFsIGxvbmcgb3JpZ0lkID0gQmluZGVyLmNsZWFyQ2FsbGluZ0lkZW50aXR5KCk7Ci0gICAgICAgICAgICBib29sZWFuIHJlcyA9IHJlcXVlc3RGaW5pc2hBY3Rpdml0eUxvY2tlZCh0b2tlbiwgcmVzdWx0Q29kZSwKKyAgICAgICAgICAgIGJvb2xlYW4gcmVzID0gbU1haW5TdGFjay5yZXF1ZXN0RmluaXNoQWN0aXZpdHlMb2NrZWQodG9rZW4sIHJlc3VsdENvZGUsCiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdERhdGEsICJhcHAtcmVxdWVzdCIpOwogICAgICAgICAgICAgQmluZGVyLnJlc3RvcmVDYWxsaW5nSWRlbnRpdHkob3JpZ0lkKTsKICAgICAgICAgICAgIHJldHVybiByZXM7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICB2b2lkIHNlbmRBY3Rpdml0eVJlc3VsdExvY2tlZChpbnQgY2FsbGluZ1VpZCwgSGlzdG9yeVJlY29yZCByLAotICAgICAgICAgICAgU3RyaW5nIHJlc3VsdFdobywgaW50IHJlcXVlc3RDb2RlLCBpbnQgcmVzdWx0Q29kZSwgSW50ZW50IGRhdGEpIHsKLQotICAgICAgICBpZiAoY2FsbGluZ1VpZCA+IDApIHsKLSAgICAgICAgICAgIGdyYW50VXJpUGVybWlzc2lvbkZyb21JbnRlbnRMb2NrZWQoY2FsbGluZ1VpZCwgci5wYWNrYWdlTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgZGF0YSwgcik7CisgICAgcHVibGljIGZpbmFsIHZvaWQgZmluaXNoSGVhdnlXZWlnaHRBcHAoKSB7CisgICAgICAgIGlmIChjaGVja0NhbGxpbmdQZXJtaXNzaW9uKGFuZHJvaWQuTWFuaWZlc3QucGVybWlzc2lvbi5GT1JDRV9TVE9QX1BBQ0tBR0VTKQorICAgICAgICAgICAgICAgICE9IFBhY2thZ2VNYW5hZ2VyLlBFUk1JU1NJT05fR1JBTlRFRCkgeworICAgICAgICAgICAgU3RyaW5nIG1zZyA9ICJQZXJtaXNzaW9uIERlbmlhbDogZmluaXNoSGVhdnlXZWlnaHRBcHAoKSBmcm9tIHBpZD0iCisgICAgICAgICAgICAgICAgICAgICsgQmluZGVyLmdldENhbGxpbmdQaWQoKQorICAgICAgICAgICAgICAgICAgICArICIsIHVpZD0iICsgQmluZGVyLmdldENhbGxpbmdVaWQoKQorICAgICAgICAgICAgICAgICAgICArICIgcmVxdWlyZXMgIiArIGFuZHJvaWQuTWFuaWZlc3QucGVybWlzc2lvbi5GT1JDRV9TVE9QX1BBQ0tBR0VTOworICAgICAgICAgICAgU2xvZy53KFRBRywgbXNnKTsKKyAgICAgICAgICAgIHRocm93IG5ldyBTZWN1cml0eUV4Y2VwdGlvbihtc2cpOwogICAgICAgICB9Ci0KLSAgICAgICAgaWYgKERFQlVHX1JFU1VMVFMpIFNsb2cudihUQUcsICJTZW5kIGFjdGl2aXR5IHJlc3VsdCB0byAiICsgcgotICAgICAgICAgICAgICAgICsgIiA6IHdobz0iICsgcmVzdWx0V2hvICsgIiByZXE9IiArIHJlcXVlc3RDb2RlCi0gICAgICAgICAgICAgICAgKyAiIHJlcz0iICsgcmVzdWx0Q29kZSArICIgZGF0YT0iICsgZGF0YSk7Ci0gICAgICAgIGlmIChtUmVzdW1lZEFjdGl2aXR5ID09IHIgJiYgci5hcHAgIT0gbnVsbCAmJiByLmFwcC50aHJlYWQgIT0gbnVsbCkgewotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBBcnJheUxpc3Q8UmVzdWx0SW5mbz4gbGlzdCA9IG5ldyBBcnJheUxpc3Q8UmVzdWx0SW5mbz4oKTsKLSAgICAgICAgICAgICAgICBsaXN0LmFkZChuZXcgUmVzdWx0SW5mbyhyZXN1bHRXaG8sIHJlcXVlc3RDb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0Q29kZSwgZGF0YSkpOwotICAgICAgICAgICAgICAgIHIuYXBwLnRocmVhZC5zY2hlZHVsZVNlbmRSZXN1bHQociwgbGlzdCk7CisgICAgICAgIAorICAgICAgICBzeW5jaHJvbml6ZWQodGhpcykgeworICAgICAgICAgICAgaWYgKG1IZWF2eVdlaWdodFByb2Nlc3MgPT0gbnVsbCkgewogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIkV4Y2VwdGlvbiB0aHJvd24gc2VuZGluZyByZXN1bHQgdG8gIiArIHIsIGUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBBcnJheUxpc3Q8QWN0aXZpdHlSZWNvcmQ+IGFjdGl2aXRpZXMgPSBuZXcgQXJyYXlMaXN0PEFjdGl2aXR5UmVjb3JkPigKKyAgICAgICAgICAgICAgICAgICAgbUhlYXZ5V2VpZ2h0UHJvY2Vzcy5hY3Rpdml0aWVzKTsKKyAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxhY3Rpdml0aWVzLnNpemUoKTsgaSsrKSB7CisgICAgICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IGFjdGl2aXRpZXMuZ2V0KGkpOworICAgICAgICAgICAgICAgIGlmICghci5maW5pc2hpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgaW50IGluZGV4ID0gbU1haW5TdGFjay5pbmRleE9mVG9rZW5Mb2NrZWQocik7CisgICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtTWFpblN0YWNrLmZpbmlzaEFjdGl2aXR5TG9ja2VkKHIsIGluZGV4LCBBY3Rpdml0eS5SRVNVTFRfQ0FOQ0VMRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsICJmaW5pc2gtaGVhdnkiKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgbUhlYXZ5V2VpZ2h0UHJvY2VzcyA9IG51bGw7CisgICAgICAgICAgICBtSGFuZGxlci5zZW5kRW1wdHlNZXNzYWdlKENBTkNFTF9IRUFWWV9OT1RJRklDQVRJT05fTVNHKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCBjcmFzaEFwcGxpY2F0aW9uKGludCB1aWQsIGludCBpbml0aWFsUGlkLCBTdHJpbmcgcGFja2FnZU5hbWUsCisgICAgICAgICAgICBTdHJpbmcgbWVzc2FnZSkgeworICAgICAgICBpZiAoY2hlY2tDYWxsaW5nUGVybWlzc2lvbihhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24uRk9SQ0VfU1RPUF9QQUNLQUdFUykKKyAgICAgICAgICAgICAgICAhPSBQYWNrYWdlTWFuYWdlci5QRVJNSVNTSU9OX0dSQU5URUQpIHsKKyAgICAgICAgICAgIFN0cmluZyBtc2cgPSAiUGVybWlzc2lvbiBEZW5pYWw6IGNyYXNoQXBwbGljYXRpb24oKSBmcm9tIHBpZD0iCisgICAgICAgICAgICAgICAgICAgICsgQmluZGVyLmdldENhbGxpbmdQaWQoKQorICAgICAgICAgICAgICAgICAgICArICIsIHVpZD0iICsgQmluZGVyLmdldENhbGxpbmdVaWQoKQorICAgICAgICAgICAgICAgICAgICArICIgcmVxdWlyZXMgIiArIGFuZHJvaWQuTWFuaWZlc3QucGVybWlzc2lvbi5GT1JDRV9TVE9QX1BBQ0tBR0VTOworICAgICAgICAgICAgU2xvZy53KFRBRywgbXNnKTsKKyAgICAgICAgICAgIHRocm93IG5ldyBTZWN1cml0eUV4Y2VwdGlvbihtc2cpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBzeW5jaHJvbml6ZWQodGhpcykgeworICAgICAgICAgICAgUHJvY2Vzc1JlY29yZCBwcm9jID0gbnVsbDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gRmlndXJlIG91dCB3aGljaCBwcm9jZXNzIHRvIGtpbGwuICBXZSBkb24ndCB0cnVzdCB0aGF0IGluaXRpYWxQaWQKKyAgICAgICAgICAgIC8vIHN0aWxsIGhhcyBhbnkgcmVsYXRpb24gdG8gY3VycmVudCBwaWRzLCBzbyBtdXN0IHNjYW4gdGhyb3VnaCB0aGUKKyAgICAgICAgICAgIC8vIGxpc3QuCisgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKG1QaWRzU2VsZkxvY2tlZCkgeworICAgICAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxtUGlkc1NlbGZMb2NrZWQuc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgUHJvY2Vzc1JlY29yZCBwID0gbVBpZHNTZWxmTG9ja2VkLnZhbHVlQXQoaSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChwLmluZm8udWlkICE9IHVpZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHAucGlkID09IGluaXRpYWxQaWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHByb2MgPSBwOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZm9yIChTdHJpbmcgc3RyIDogcC5wa2dMaXN0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3RyLmVxdWFscyhwYWNrYWdlTmFtZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jID0gcDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHByb2MgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIExvZy53KFRBRywgImNyYXNoQXBwbGljYXRpb246IG5vdGhpbmcgZm9yIHVpZD0iICsgdWlkCisgICAgICAgICAgICAgICAgICAgICAgICArICIgaW5pdGlhbFBpZD0iICsgaW5pdGlhbFBpZAorICAgICAgICAgICAgICAgICAgICAgICAgKyAiIHBhY2thZ2VOYW1lPSIgKyBwYWNrYWdlTmFtZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAocHJvYy50aHJlYWQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGxvbmcgaWRlbnQgPSBCaW5kZXIuY2xlYXJDYWxsaW5nSWRlbnRpdHkoKTsKKyAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICBwcm9jLnRocmVhZC5zY2hlZHVsZUNyYXNoKG1lc3NhZ2UpOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIEJpbmRlci5yZXN0b3JlQ2FsbGluZ0lkZW50aXR5KGlkZW50KTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQotCi0gICAgICAgIHIuYWRkUmVzdWx0TG9ja2VkKG51bGwsIHJlc3VsdFdobywgcmVxdWVzdENvZGUsIHJlc3VsdENvZGUsIGRhdGEpOwogICAgIH0KLQorICAgIAogICAgIHB1YmxpYyBmaW5hbCB2b2lkIGZpbmlzaFN1YkFjdGl2aXR5KElCaW5kZXIgdG9rZW4sIFN0cmluZyByZXN1bHRXaG8sCiAgICAgICAgICAgICBpbnQgcmVxdWVzdENvZGUpIHsKICAgICAgICAgc3luY2hyb25pemVkKHRoaXMpIHsKLSAgICAgICAgICAgIGludCBpbmRleCA9IGluZGV4T2ZUb2tlbkxvY2tlZCh0b2tlbik7CisgICAgICAgICAgICBpbnQgaW5kZXggPSBtTWFpblN0YWNrLmluZGV4T2ZUb2tlbkxvY2tlZCh0b2tlbik7CiAgICAgICAgICAgICBpZiAoaW5kZXggPCAwKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgSGlzdG9yeVJlY29yZCBzZWxmID0gKEhpc3RvcnlSZWNvcmQpbUhpc3RvcnkuZ2V0KGluZGV4KTsKKyAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHNlbGYgPSAoQWN0aXZpdHlSZWNvcmQpbU1haW5TdGFjay5tSGlzdG9yeS5nZXQoaW5kZXgpOwogCiAgICAgICAgICAgICBmaW5hbCBsb25nIG9yaWdJZCA9IEJpbmRlci5jbGVhckNhbGxpbmdJZGVudGl0eSgpOwogCiAgICAgICAgICAgICBpbnQgaTsKLSAgICAgICAgICAgIGZvciAoaT1tSGlzdG9yeS5zaXplKCktMTsgaT49MDsgaS0tKSB7Ci0gICAgICAgICAgICAgICAgSGlzdG9yeVJlY29yZCByID0gKEhpc3RvcnlSZWNvcmQpbUhpc3RvcnkuZ2V0KGkpOworICAgICAgICAgICAgZm9yIChpPW1NYWluU3RhY2subUhpc3Rvcnkuc2l6ZSgpLTE7IGk+PTA7IGktLSkgeworICAgICAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSAoQWN0aXZpdHlSZWNvcmQpbU1haW5TdGFjay5tSGlzdG9yeS5nZXQoaSk7CiAgICAgICAgICAgICAgICAgaWYgKHIucmVzdWx0VG8gPT0gc2VsZiAmJiByLnJlcXVlc3RDb2RlID09IHJlcXVlc3RDb2RlKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICgoci5yZXN1bHRXaG8gPT0gbnVsbCAmJiByZXN1bHRXaG8gPT0gbnVsbCkgfHwKICAgICAgICAgICAgICAgICAgICAgICAgIChyLnJlc3VsdFdobyAhPSBudWxsICYmIHIucmVzdWx0V2hvLmVxdWFscyhyZXN1bHRXaG8pKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgZmluaXNoQWN0aXZpdHlMb2NrZWQociwgaSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1NYWluU3RhY2suZmluaXNoQWN0aXZpdHlMb2NrZWQociwgaSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHkuUkVTVUxUX0NBTkNFTEVELCBudWxsLCAicmVxdWVzdC1zdWIiKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KQEAgLTQzNzIsOCArMjM4OSw4IEBACiAgICAgcHVibGljIGJvb2xlYW4gd2lsbEFjdGl2aXR5QmVWaXNpYmxlKElCaW5kZXIgdG9rZW4pIHsKICAgICAgICAgc3luY2hyb25pemVkKHRoaXMpIHsKICAgICAgICAgICAgIGludCBpOwotICAgICAgICAgICAgZm9yIChpPW1IaXN0b3J5LnNpemUoKS0xOyBpPj0wOyBpLS0pIHsKLSAgICAgICAgICAgICAgICBIaXN0b3J5UmVjb3JkIHIgPSAoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQoaSk7CisgICAgICAgICAgICBmb3IgKGk9bU1haW5TdGFjay5tSGlzdG9yeS5zaXplKCktMTsgaT49MDsgaS0tKSB7CisgICAgICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IChBY3Rpdml0eVJlY29yZCltTWFpblN0YWNrLm1IaXN0b3J5LmdldChpKTsKICAgICAgICAgICAgICAgICBpZiAociA9PSB0b2tlbikgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICB9CkBAIC00Mzg4LDExICsyNDA1LDExIEBACiAgICAgcHVibGljIHZvaWQgb3ZlcnJpZGVQZW5kaW5nVHJhbnNpdGlvbihJQmluZGVyIHRva2VuLCBTdHJpbmcgcGFja2FnZU5hbWUsCiAgICAgICAgICAgICBpbnQgZW50ZXJBbmltLCBpbnQgZXhpdEFuaW0pIHsKICAgICAgICAgc3luY2hyb25pemVkKHRoaXMpIHsKLSAgICAgICAgICAgIGludCBpbmRleCA9IGluZGV4T2ZUb2tlbkxvY2tlZCh0b2tlbik7CisgICAgICAgICAgICBpbnQgaW5kZXggPSBtTWFpblN0YWNrLmluZGV4T2ZUb2tlbkxvY2tlZCh0b2tlbik7CiAgICAgICAgICAgICBpZiAoaW5kZXggPCAwKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgSGlzdG9yeVJlY29yZCBzZWxmID0gKEhpc3RvcnlSZWNvcmQpbUhpc3RvcnkuZ2V0KGluZGV4KTsKKyAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHNlbGYgPSAoQWN0aXZpdHlSZWNvcmQpbU1haW5TdGFjay5tSGlzdG9yeS5nZXQoaW5kZXgpOwogCiAgICAgICAgICAgICBmaW5hbCBsb25nIG9yaWdJZCA9IEJpbmRlci5jbGVhckNhbGxpbmdJZGVudGl0eSgpOwogICAgICAgICAgICAgCkBAIC00NDA3LDE4OCArMjQyNCw2IEBACiAgICAgfQogICAgIAogICAgIC8qKgotICAgICAqIFBlcmZvcm0gY2xlYW4tdXAgb2Ygc2VydmljZSBjb25uZWN0aW9ucyBpbiBhbiBhY3Rpdml0eSByZWNvcmQuCi0gICAgICovCi0gICAgcHJpdmF0ZSBmaW5hbCB2b2lkIGNsZWFuVXBBY3Rpdml0eVNlcnZpY2VzTG9ja2VkKEhpc3RvcnlSZWNvcmQgcikgewotICAgICAgICAvLyBUaHJvdyBhd2F5IGFueSBzZXJ2aWNlcyB0aGF0IGhhdmUgYmVlbiBib3VuZCBieSB0aGlzIGFjdGl2aXR5LgotICAgICAgICBpZiAoci5jb25uZWN0aW9ucyAhPSBudWxsKSB7Ci0gICAgICAgICAgICBJdGVyYXRvcjxDb25uZWN0aW9uUmVjb3JkPiBpdCA9IHIuY29ubmVjdGlvbnMuaXRlcmF0b3IoKTsKLSAgICAgICAgICAgIHdoaWxlIChpdC5oYXNOZXh0KCkpIHsKLSAgICAgICAgICAgICAgICBDb25uZWN0aW9uUmVjb3JkIGMgPSBpdC5uZXh0KCk7Ci0gICAgICAgICAgICAgICAgcmVtb3ZlQ29ubmVjdGlvbkxvY2tlZChjLCBudWxsLCByKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHIuY29ubmVjdGlvbnMgPSBudWxsOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIC8qKgotICAgICAqIFBlcmZvcm0gdGhlIGNvbW1vbiBjbGVhbi11cCBvZiBhbiBhY3Rpdml0eSByZWNvcmQuICBUaGlzIGlzIGNhbGxlZCBib3RoCi0gICAgICogYXMgcGFydCBvZiBkZXN0cm95QWN0aXZpdHlMb2NrZWQoKSAod2hlbiBkZXN0cm95aW5nIHRoZSBjbGllbnQtc2lkZQotICAgICAqIHJlcHJlc2VudGF0aW9uKSBhbmQgY2xlYW5pbmcgdGhpbmdzIHVwIGFzIGEgcmVzdWx0IG9mIGl0cyBob3N0aW5nCi0gICAgICogcHJvY2Vzc2luZyBnb2luZyBhd2F5LCBpbiB3aGljaCBjYXNlIHRoZXJlIGlzIG5vIHJlbWFpbmluZyBjbGllbnQtc2lkZQotICAgICAqIHN0YXRlIHRvIGRlc3Ryb3kgc28gb25seSB0aGUgY2xlYW51cCBoZXJlIGlzIG5lZWRlZC4KLSAgICAgKi8KLSAgICBwcml2YXRlIGZpbmFsIHZvaWQgY2xlYW5VcEFjdGl2aXR5TG9ja2VkKEhpc3RvcnlSZWNvcmQgciwgYm9vbGVhbiBjbGVhblNlcnZpY2VzKSB7Ci0gICAgICAgIGlmIChtUmVzdW1lZEFjdGl2aXR5ID09IHIpIHsKLSAgICAgICAgICAgIG1SZXN1bWVkQWN0aXZpdHkgPSBudWxsOwotICAgICAgICB9Ci0gICAgICAgIGlmIChtRm9jdXNlZEFjdGl2aXR5ID09IHIpIHsKLSAgICAgICAgICAgIG1Gb2N1c2VkQWN0aXZpdHkgPSBudWxsOwotICAgICAgICB9Ci0KLSAgICAgICAgci5jb25maWdEZXN0cm95ID0gZmFsc2U7Ci0gICAgICAgIHIuZnJvemVuQmVmb3JlRGVzdHJveSA9IGZhbHNlOwotCi0gICAgICAgIC8vIE1ha2Ugc3VyZSB0aGlzIHJlY29yZCBpcyBubyBsb25nZXIgaW4gdGhlIHBlbmRpbmcgZmluaXNoZXMgbGlzdC4KLSAgICAgICAgLy8gVGhpcyBjb3VsZCBoYXBwZW4sIGZvciBleGFtcGxlLCBpZiB3ZSBhcmUgdHJpbW1pbmcgYWN0aXZpdGllcwotICAgICAgICAvLyBkb3duIHRvIHRoZSBtYXggbGltaXQgd2hpbGUgdGhleSBhcmUgc3RpbGwgd2FpdGluZyB0byBmaW5pc2guCi0gICAgICAgIG1GaW5pc2hpbmdBY3Rpdml0aWVzLnJlbW92ZShyKTsKLSAgICAgICAgbVdhaXRpbmdWaXNpYmxlQWN0aXZpdGllcy5yZW1vdmUocik7Ci0gICAgICAgIAotICAgICAgICAvLyBSZW1vdmUgYW55IHBlbmRpbmcgcmVzdWx0cy4KLSAgICAgICAgaWYgKHIuZmluaXNoaW5nICYmIHIucGVuZGluZ1Jlc3VsdHMgIT0gbnVsbCkgewotICAgICAgICAgICAgZm9yIChXZWFrUmVmZXJlbmNlPFBlbmRpbmdJbnRlbnRSZWNvcmQ+IGFwciA6IHIucGVuZGluZ1Jlc3VsdHMpIHsKLSAgICAgICAgICAgICAgICBQZW5kaW5nSW50ZW50UmVjb3JkIHJlYyA9IGFwci5nZXQoKTsKLSAgICAgICAgICAgICAgICBpZiAocmVjICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgY2FuY2VsSW50ZW50U2VuZGVyTG9ja2VkKHJlYywgZmFsc2UpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHIucGVuZGluZ1Jlc3VsdHMgPSBudWxsOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGNsZWFuU2VydmljZXMpIHsKLSAgICAgICAgICAgIGNsZWFuVXBBY3Rpdml0eVNlcnZpY2VzTG9ja2VkKHIpOyAgICAgICAgICAgIAotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG1QZW5kaW5nVGh1bWJuYWlscy5zaXplKCkgPiAwKSB7Ci0gICAgICAgICAgICAvLyBUaGVyZSBhcmUgY2xpZW50cyB3YWl0aW5nIHRvIHJlY2VpdmUgdGh1bWJuYWlscyBzbywgaW4gY2FzZQotICAgICAgICAgICAgLy8gdGhpcyBpcyBhbiBhY3Rpdml0eSB0aGF0IHNvbWVvbmUgaXMgd2FpdGluZyBmb3IsIGFkZCBpdAotICAgICAgICAgICAgLy8gdG8gdGhlIHBlbmRpbmcgbGlzdCBzbyB3ZSBjYW4gY29ycmVjdGx5IHVwZGF0ZSB0aGUgY2xpZW50cy4KLSAgICAgICAgICAgIG1DYW5jZWxsZWRUaHVtYm5haWxzLmFkZChyKTsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIEdldCByaWQgb2YgYW55IHBlbmRpbmcgaWRsZSB0aW1lb3V0cy4KLSAgICAgICAgbUhhbmRsZXIucmVtb3ZlTWVzc2FnZXMoUEFVU0VfVElNRU9VVF9NU0csIHIpOwotICAgICAgICBtSGFuZGxlci5yZW1vdmVNZXNzYWdlcyhJRExFX1RJTUVPVVRfTVNHLCByKTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIGZpbmFsIHZvaWQgcmVtb3ZlQWN0aXZpdHlGcm9tSGlzdG9yeUxvY2tlZChIaXN0b3J5UmVjb3JkIHIpIHsKLSAgICAgICAgaWYgKHIuc3RhdGUgIT0gQWN0aXZpdHlTdGF0ZS5ERVNUUk9ZRUQpIHsKLSAgICAgICAgICAgIG1IaXN0b3J5LnJlbW92ZShyKTsKLSAgICAgICAgICAgIHIuaW5IaXN0b3J5ID0gZmFsc2U7Ci0gICAgICAgICAgICByLnN0YXRlID0gQWN0aXZpdHlTdGF0ZS5ERVNUUk9ZRUQ7Ci0gICAgICAgICAgICBtV2luZG93TWFuYWdlci5yZW1vdmVBcHBUb2tlbihyKTsKLSAgICAgICAgICAgIGlmIChWQUxJREFURV9UT0tFTlMpIHsKLSAgICAgICAgICAgICAgICBtV2luZG93TWFuYWdlci52YWxpZGF0ZUFwcFRva2VucyhtSGlzdG9yeSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjbGVhblVwQWN0aXZpdHlTZXJ2aWNlc0xvY2tlZChyKTsKLSAgICAgICAgICAgIHJlbW92ZUFjdGl2aXR5VXJpUGVybWlzc2lvbnNMb2NrZWQocik7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgLyoqCi0gICAgICogRGVzdHJveSB0aGUgY3VycmVudCBDTElFTlQgU0lERSBpbnN0YW5jZSBvZiBhbiBhY3Rpdml0eS4gIFRoaXMgbWF5IGJlCi0gICAgICogY2FsbGVkIGJvdGggd2hlbiBhY3R1YWxseSBmaW5pc2hpbmcgYW4gYWN0aXZpdHksIG9yIHdoZW4gcGVyZm9ybWluZwotICAgICAqIGEgY29uZmlndXJhdGlvbiBzd2l0Y2ggd2hlcmUgd2UgZGVzdHJveSB0aGUgY3VycmVudCBjbGllbnQtc2lkZSBvYmplY3QKLSAgICAgKiBidXQgdGhlbiBjcmVhdGUgYSBuZXcgY2xpZW50LXNpZGUgb2JqZWN0IGZvciB0aGlzIHNhbWUgSGlzdG9yeVJlY29yZC4KLSAgICAgKi8KLSAgICBwcml2YXRlIGZpbmFsIGJvb2xlYW4gZGVzdHJveUFjdGl2aXR5TG9ja2VkKEhpc3RvcnlSZWNvcmQgciwKLSAgICAgICAgICAgIGJvb2xlYW4gcmVtb3ZlRnJvbUFwcCkgewotICAgICAgICBpZiAoREVCVUdfU1dJVENIKSBTbG9nLnYoCi0gICAgICAgICAgICBUQUcsICJSZW1vdmluZyBhY3Rpdml0eTogdG9rZW49IiArIHIKLSAgICAgICAgICAgICAgKyAiLCBhcHA9IiArIChyLmFwcCAhPSBudWxsID8gci5hcHAucHJvY2Vzc05hbWUgOiAiKG51bGwpIikpOwotICAgICAgICBFdmVudExvZy53cml0ZUV2ZW50KEV2ZW50TG9nVGFncy5BTV9ERVNUUk9ZX0FDVElWSVRZLAotICAgICAgICAgICAgICAgIFN5c3RlbS5pZGVudGl0eUhhc2hDb2RlKHIpLAotICAgICAgICAgICAgICAgIHIudGFzay50YXNrSWQsIHIuc2hvcnRDb21wb25lbnROYW1lKTsKLQotICAgICAgICBib29sZWFuIHJlbW92ZWRGcm9tSGlzdG9yeSA9IGZhbHNlOwotICAgICAgICAKLSAgICAgICAgY2xlYW5VcEFjdGl2aXR5TG9ja2VkKHIsIGZhbHNlKTsKLQotICAgICAgICBmaW5hbCBib29sZWFuIGhhZEFwcCA9IHIuYXBwICE9IG51bGw7Ci0gICAgICAgIAotICAgICAgICBpZiAoaGFkQXBwKSB7Ci0gICAgICAgICAgICBpZiAocmVtb3ZlRnJvbUFwcCkgewotICAgICAgICAgICAgICAgIGludCBpZHggPSByLmFwcC5hY3Rpdml0aWVzLmluZGV4T2Yocik7Ci0gICAgICAgICAgICAgICAgaWYgKGlkeCA+PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIHIuYXBwLmFjdGl2aXRpZXMucmVtb3ZlKGlkeCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChyLnBlcnNpc3RlbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgZGVjUGVyc2lzdGVudENvdW50TG9ja2VkKHIuYXBwKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKHIuYXBwLmFjdGl2aXRpZXMuc2l6ZSgpID09IDApIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gTm8gbG9uZ2VyIGhhdmUgYWN0aXZpdGllcywgc28gdXBkYXRlIGxvY2F0aW9uIGluCi0gICAgICAgICAgICAgICAgICAgIC8vIExSVSBsaXN0LgotICAgICAgICAgICAgICAgICAgICB1cGRhdGVMcnVQcm9jZXNzTG9ja2VkKHIuYXBwLCB0cnVlLCBmYWxzZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBib29sZWFuIHNraXBEZXN0cm95ID0gZmFsc2U7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgaWYgKERFQlVHX1NXSVRDSCkgU2xvZy5pKFRBRywgIkRlc3Ryb3lpbmc6ICIgKyByKTsKLSAgICAgICAgICAgICAgICByLmFwcC50aHJlYWQuc2NoZWR1bGVEZXN0cm95QWN0aXZpdHkociwgci5maW5pc2hpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICByLmNvbmZpZ0NoYW5nZUZsYWdzKTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgLy8gV2UgY2FuIGp1c3QgaWdub3JlIGV4Y2VwdGlvbnMgaGVyZS4uLiAgaWYgdGhlIHByb2Nlc3MKLSAgICAgICAgICAgICAgICAvLyBoYXMgY3Jhc2hlZCwgb3VyIGRlYXRoIG5vdGlmaWNhdGlvbiB3aWxsIGNsZWFuIHRoaW5ncwotICAgICAgICAgICAgICAgIC8vIHVwLgotICAgICAgICAgICAgICAgIC8vU2xvZy53KFRBRywgIkV4Y2VwdGlvbiB0aHJvd24gZHVyaW5nIGZpbmlzaCIsIGUpOwotICAgICAgICAgICAgICAgIGlmIChyLmZpbmlzaGluZykgewotICAgICAgICAgICAgICAgICAgICByZW1vdmVBY3Rpdml0eUZyb21IaXN0b3J5TG9ja2VkKHIpOwotICAgICAgICAgICAgICAgICAgICByZW1vdmVkRnJvbUhpc3RvcnkgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBza2lwRGVzdHJveSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICByLmFwcCA9IG51bGw7Ci0gICAgICAgICAgICByLm5vd1Zpc2libGUgPSBmYWxzZTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKHIuZmluaXNoaW5nICYmICFza2lwRGVzdHJveSkgewotICAgICAgICAgICAgICAgIHIuc3RhdGUgPSBBY3Rpdml0eVN0YXRlLkRFU1RST1lJTkc7Ci0gICAgICAgICAgICAgICAgTWVzc2FnZSBtc2cgPSBtSGFuZGxlci5vYnRhaW5NZXNzYWdlKERFU1RST1lfVElNRU9VVF9NU0cpOwotICAgICAgICAgICAgICAgIG1zZy5vYmogPSByOwotICAgICAgICAgICAgICAgIG1IYW5kbGVyLnNlbmRNZXNzYWdlRGVsYXllZChtc2csIERFU1RST1lfVElNRU9VVCk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHIuc3RhdGUgPSBBY3Rpdml0eVN0YXRlLkRFU1RST1lFRDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIHJlbW92ZSB0aGlzIHJlY29yZCBmcm9tIHRoZSBoaXN0b3J5LgotICAgICAgICAgICAgaWYgKHIuZmluaXNoaW5nKSB7Ci0gICAgICAgICAgICAgICAgcmVtb3ZlQWN0aXZpdHlGcm9tSGlzdG9yeUxvY2tlZChyKTsKLSAgICAgICAgICAgICAgICByZW1vdmVkRnJvbUhpc3RvcnkgPSB0cnVlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICByLnN0YXRlID0gQWN0aXZpdHlTdGF0ZS5ERVNUUk9ZRUQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICByLmNvbmZpZ0NoYW5nZUZsYWdzID0gMDsKLSAgICAgICAgCi0gICAgICAgIGlmICghbUxSVUFjdGl2aXRpZXMucmVtb3ZlKHIpICYmIGhhZEFwcCkgewotICAgICAgICAgICAgU2xvZy53KFRBRywgIkFjdGl2aXR5ICIgKyByICsgIiBiZWluZyBmaW5pc2hlZCwgYnV0IG5vdCBpbiBMUlUgbGlzdCIpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gcmVtb3ZlZEZyb21IaXN0b3J5OwotICAgIH0KLQotICAgIHByaXZhdGUgc3RhdGljIHZvaWQgcmVtb3ZlSGlzdG9yeVJlY29yZHNGb3JBcHBMb2NrZWQoQXJyYXlMaXN0IGxpc3QsIFByb2Nlc3NSZWNvcmQgYXBwKSB7Ci0gICAgICAgIGludCBpID0gbGlzdC5zaXplKCk7Ci0gICAgICAgIGlmIChsb2NhbExPR1YpIFNsb2cudigKLSAgICAgICAgICAgIFRBRywgIlJlbW92aW5nIGFwcCAiICsgYXBwICsgIiBmcm9tIGxpc3QgIiArIGxpc3QKLSAgICAgICAgICAgICsgIiB3aXRoICIgKyBpICsgIiBlbnRyaWVzIik7Ci0gICAgICAgIHdoaWxlIChpID4gMCkgewotICAgICAgICAgICAgaS0tOwotICAgICAgICAgICAgSGlzdG9yeVJlY29yZCByID0gKEhpc3RvcnlSZWNvcmQpbGlzdC5nZXQoaSk7Ci0gICAgICAgICAgICBpZiAobG9jYWxMT0dWKSBTbG9nLnYoCi0gICAgICAgICAgICAgICAgVEFHLCAiUmVjb3JkICMiICsgaSArICIgIiArIHIgKyAiOiBhcHA9IiArIHIuYXBwKTsKLSAgICAgICAgICAgIGlmIChyLmFwcCA9PSBhcHApIHsKLSAgICAgICAgICAgICAgICBpZiAobG9jYWxMT0dWKSBTbG9nLnYoVEFHLCAiUmVtb3ZpbmcgdGhpcyBlbnRyeSEiKTsKLSAgICAgICAgICAgICAgICBsaXN0LnJlbW92ZShpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIC8qKgogICAgICAqIE1haW4gZnVuY3Rpb24gZm9yIHJlbW92aW5nIGFuIGV4aXN0aW5nIHByb2Nlc3MgZnJvbSB0aGUgYWN0aXZpdHkgbWFuYWdlcgogICAgICAqIGFzIGEgcmVzdWx0IG9mIHRoYXQgcHJvY2VzcyBnb2luZyBhd2F5LiAgQ2xlYXJzIG91dCBhbGwgY29ubmVjdGlvbnMKICAgICAgKiB0byB0aGUgcHJvY2Vzcy4KQEAgLTQ2MDEsMzAgKzI0MzYsMjcgQEAKICAgICAgICAgfQogCiAgICAgICAgIC8vIEp1c3QgaW4gY2FzZS4uLgotICAgICAgICBpZiAobVBhdXNpbmdBY3Rpdml0eSAhPSBudWxsICYmIG1QYXVzaW5nQWN0aXZpdHkuYXBwID09IGFwcCkgewotICAgICAgICAgICAgaWYgKERFQlVHX1BBVVNFKSBTbG9nLnYoVEFHLCAiQXBwIGRpZWQgd2hpbGUgcGF1c2luZzogIiArIG1QYXVzaW5nQWN0aXZpdHkpOwotICAgICAgICAgICAgbVBhdXNpbmdBY3Rpdml0eSA9IG51bGw7CisgICAgICAgIGlmIChtTWFpblN0YWNrLm1QYXVzaW5nQWN0aXZpdHkgIT0gbnVsbCAmJiBtTWFpblN0YWNrLm1QYXVzaW5nQWN0aXZpdHkuYXBwID09IGFwcCkgeworICAgICAgICAgICAgaWYgKERFQlVHX1BBVVNFKSBTbG9nLnYoVEFHLCAiQXBwIGRpZWQgd2hpbGUgcGF1c2luZzogIiArbU1haW5TdGFjay5tUGF1c2luZ0FjdGl2aXR5KTsKKyAgICAgICAgICAgIG1NYWluU3RhY2subVBhdXNpbmdBY3Rpdml0eSA9IG51bGw7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKG1MYXN0UGF1c2VkQWN0aXZpdHkgIT0gbnVsbCAmJiBtTGFzdFBhdXNlZEFjdGl2aXR5LmFwcCA9PSBhcHApIHsKLSAgICAgICAgICAgIG1MYXN0UGF1c2VkQWN0aXZpdHkgPSBudWxsOworICAgICAgICBpZiAobU1haW5TdGFjay5tTGFzdFBhdXNlZEFjdGl2aXR5ICE9IG51bGwgJiYgbU1haW5TdGFjay5tTGFzdFBhdXNlZEFjdGl2aXR5LmFwcCA9PSBhcHApIHsKKyAgICAgICAgICAgIG1NYWluU3RhY2subUxhc3RQYXVzZWRBY3Rpdml0eSA9IG51bGw7CiAgICAgICAgIH0KIAogICAgICAgICAvLyBSZW1vdmUgdGhpcyBhcHBsaWNhdGlvbidzIGFjdGl2aXRpZXMgZnJvbSBhY3RpdmUgbGlzdHMuCi0gICAgICAgIHJlbW92ZUhpc3RvcnlSZWNvcmRzRm9yQXBwTG9ja2VkKG1MUlVBY3Rpdml0aWVzLCBhcHApOwotICAgICAgICByZW1vdmVIaXN0b3J5UmVjb3Jkc0ZvckFwcExvY2tlZChtU3RvcHBpbmdBY3Rpdml0aWVzLCBhcHApOwotICAgICAgICByZW1vdmVIaXN0b3J5UmVjb3Jkc0ZvckFwcExvY2tlZChtV2FpdGluZ1Zpc2libGVBY3Rpdml0aWVzLCBhcHApOwotICAgICAgICByZW1vdmVIaXN0b3J5UmVjb3Jkc0ZvckFwcExvY2tlZChtRmluaXNoaW5nQWN0aXZpdGllcywgYXBwKTsKKyAgICAgICAgbU1haW5TdGFjay5yZW1vdmVIaXN0b3J5UmVjb3Jkc0ZvckFwcExvY2tlZChhcHApOwogCiAgICAgICAgIGJvb2xlYW4gYXRUb3AgPSB0cnVlOwogICAgICAgICBib29sZWFuIGhhc1Zpc2libGVBY3Rpdml0aWVzID0gZmFsc2U7CiAKICAgICAgICAgLy8gQ2xlYW4gb3V0IHRoZSBoaXN0b3J5IGxpc3QuCi0gICAgICAgIGludCBpID0gbUhpc3Rvcnkuc2l6ZSgpOworICAgICAgICBpbnQgaSA9IG1NYWluU3RhY2subUhpc3Rvcnkuc2l6ZSgpOwogICAgICAgICBpZiAobG9jYWxMT0dWKSBTbG9nLnYoCiAgICAgICAgICAgICBUQUcsICJSZW1vdmluZyBhcHAgIiArIGFwcCArICIgZnJvbSBoaXN0b3J5IHdpdGggIiArIGkgKyAiIGVudHJpZXMiKTsKICAgICAgICAgd2hpbGUgKGkgPiAwKSB7CiAgICAgICAgICAgICBpLS07Ci0gICAgICAgICAgICBIaXN0b3J5UmVjb3JkIHIgPSAoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQoaSk7CisgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gKEFjdGl2aXR5UmVjb3JkKW1NYWluU3RhY2subUhpc3RvcnkuZ2V0KGkpOwogICAgICAgICAgICAgaWYgKGxvY2FsTE9HVikgU2xvZy52KAogICAgICAgICAgICAgICAgIFRBRywgIlJlY29yZCAjIiArIGkgKyAiICIgKyByICsgIjogYXBwPSIgKyByLmFwcCk7CiAgICAgICAgICAgICBpZiAoci5hcHAgPT0gYXBwKSB7CkBAIC00NjMyLDE0ICsyNDY0LDE0IEBACiAgICAgICAgICAgICAgICAgICAgIGlmIChsb2NhbExPR1YpIFNsb2cudigKICAgICAgICAgICAgICAgICAgICAgICAgIFRBRywgIlJlbW92aW5nIHRoaXMgZW50cnkhICBmcm96ZW49IiArIHIuaGF2ZVN0YXRlCiAgICAgICAgICAgICAgICAgICAgICAgICArICIgZmluaXNoaW5nPSIgKyByLmZpbmlzaGluZyk7Ci0gICAgICAgICAgICAgICAgICAgIG1IaXN0b3J5LnJlbW92ZShpKTsKKyAgICAgICAgICAgICAgICAgICAgbU1haW5TdGFjay5tSGlzdG9yeS5yZW1vdmUoaSk7CiAKICAgICAgICAgICAgICAgICAgICAgci5pbkhpc3RvcnkgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgbVdpbmRvd01hbmFnZXIucmVtb3ZlQXBwVG9rZW4ocik7CiAgICAgICAgICAgICAgICAgICAgIGlmIChWQUxJREFURV9UT0tFTlMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyLnZhbGlkYXRlQXBwVG9rZW5zKG1IaXN0b3J5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyLnZhbGlkYXRlQXBwVG9rZW5zKG1NYWluU3RhY2subUhpc3RvcnkpOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIHJlbW92ZUFjdGl2aXR5VXJpUGVybWlzc2lvbnNMb2NrZWQocik7CisgICAgICAgICAgICAgICAgICAgIHIucmVtb3ZlVXJpUGVybWlzc2lvbnNMb2NrZWQoKTsKIAogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGhhdmUgdGhlIGN1cnJlbnQgc3RhdGUgZm9yIHRoaXMgYWN0aXZpdHksIHNvCkBAIC00NjU2LDcgKzI0ODgsNyBAQAogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgY2xlYW5VcEFjdGl2aXR5TG9ja2VkKHIsIHRydWUpOworICAgICAgICAgICAgICAgIHIuc3RhY2suY2xlYW5VcEFjdGl2aXR5TG9ja2VkKHIsIHRydWUpOwogICAgICAgICAgICAgICAgIHIuc3RhdGUgPSBBY3Rpdml0eVN0YXRlLlNUT1BQRUQ7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBhdFRvcCA9IGZhbHNlOwpAQCAtNDY3MywxNCArMjUwNSwxNCBAQAogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFyZXN0YXJ0aW5nKSB7Ci0gICAgICAgICAgICBpZiAoIXJlc3VtZVRvcEFjdGl2aXR5TG9ja2VkKG51bGwpKSB7CisgICAgICAgICAgICBpZiAoIW1NYWluU3RhY2sucmVzdW1lVG9wQWN0aXZpdHlMb2NrZWQobnVsbCkpIHsKICAgICAgICAgICAgICAgICAvLyBJZiB0aGVyZSB3YXMgbm90aGluZyB0byByZXN1bWUsIGFuZCB3ZSBhcmUgbm90IGFscmVhZHkKICAgICAgICAgICAgICAgICAvLyByZXN0YXJ0aW5nIHRoaXMgcHJvY2VzcywgYnV0IHRoZXJlIGlzIGEgdmlzaWJsZSBhY3Rpdml0eSB0aGF0CiAgICAgICAgICAgICAgICAgLy8gaXMgaG9zdGVkIGJ5IHRoZSBwcm9jZXNzLi4uICB0aGVuIG1ha2Ugc3VyZSBhbGwgdmlzaWJsZQogICAgICAgICAgICAgICAgIC8vIGFjdGl2aXRpZXMgYXJlIHJ1bm5pbmcsIHRha2luZyBjYXJlIG9mIHJlc3RhcnRpbmcgdGhpcwogICAgICAgICAgICAgICAgIC8vIHByb2Nlc3MuCiAgICAgICAgICAgICAgICAgaWYgKGhhc1Zpc2libGVBY3Rpdml0aWVzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGVuc3VyZUFjdGl2aXRpZXNWaXNpYmxlTG9ja2VkKG51bGwsIDApOworICAgICAgICAgICAgICAgICAgICBtTWFpblN0YWNrLmVuc3VyZUFjdGl2aXRpZXNWaXNpYmxlTG9ja2VkKG51bGwsIDApOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtNDY5OSw3ICsyNTMxLDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIHByaXZhdGUgZmluYWwgUHJvY2Vzc1JlY29yZCBnZXRSZWNvcmRGb3JBcHBMb2NrZWQoCisgICAgZmluYWwgUHJvY2Vzc1JlY29yZCBnZXRSZWNvcmRGb3JBcHBMb2NrZWQoCiAgICAgICAgICAgICBJQXBwbGljYXRpb25UaHJlYWQgdGhyZWFkKSB7CiAgICAgICAgIGlmICh0aHJlYWQgPT0gbnVsbCkgewogICAgICAgICAgICAgcmV0dXJuIG51bGw7CkBAIC00NzA5LDcgKzI1NDEsNyBAQAogICAgICAgICByZXR1cm4gYXBwSW5kZXggPj0gMCA/IG1McnVQcm9jZXNzZXMuZ2V0KGFwcEluZGV4KSA6IG51bGw7CiAgICAgfQogCi0gICAgcHJpdmF0ZSBmaW5hbCB2b2lkIGFwcERpZWRMb2NrZWQoUHJvY2Vzc1JlY29yZCBhcHAsIGludCBwaWQsCisgICAgZmluYWwgdm9pZCBhcHBEaWVkTG9ja2VkKFByb2Nlc3NSZWNvcmQgYXBwLCBpbnQgcGlkLAogICAgICAgICAgICAgSUFwcGxpY2F0aW9uVGhyZWFkIHRocmVhZCkgewogCiAgICAgICAgIG1Qcm9jRGVhdGhzWzBdKys7CkBAIC00NzUxLDggKzI1ODMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAocmVjLmxhc3RMb3dNZW1vcnkrR0NfTUlOX0lOVEVSVkFMKSA8PSBub3cpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgbG93IG1lbW9yeSByZXBvcnQgaXMgb3ZlcnJpZGluZyBhbnkgY3VycmVudAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHN0YXRlIGZvciBhIEdDIHJlcXVlc3QuICBNYWtlIHN1cmUgdG8gZG8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB2aXNpYmxlL2ZvcmVncm91bmQgcHJvY2Vzc2VzIGZpcnN0LgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWMuc2V0QWRqIDw9IFZJU0lCTEVfQVBQX0FESikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGhlYXZ5L2ltcG9ydGFudC92aXNpYmxlL2ZvcmVncm91bmQgcHJvY2Vzc2VzIGZpcnN0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWMuc2V0QWRqIDw9IEhFQVZZX1dFSUdIVF9BUFBfQURKKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYy5sYXN0UmVxdWVzdGVkR2MgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYy5sYXN0UmVxdWVzdGVkR2MgPSByZWMubGFzdExvd01lbW9yeTsKQEAgLTQ4MjksOCArMjY2MSw4IEBACiAgICAgICAgIHJldHVybiB0cmFjZXNGaWxlOwogICAgIH0KIAotICAgIGZpbmFsIHZvaWQgYXBwTm90UmVzcG9uZGluZyhQcm9jZXNzUmVjb3JkIGFwcCwgSGlzdG9yeVJlY29yZCBhY3Rpdml0eSwKLSAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgcGFyZW50LCBmaW5hbCBTdHJpbmcgYW5ub3RhdGlvbikgeworICAgIGZpbmFsIHZvaWQgYXBwTm90UmVzcG9uZGluZyhQcm9jZXNzUmVjb3JkIGFwcCwgQWN0aXZpdHlSZWNvcmQgYWN0aXZpdHksCisgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCBwYXJlbnQsIGZpbmFsIFN0cmluZyBhbm5vdGF0aW9uKSB7CiAgICAgICAgIEFycmF5TGlzdDxJbnRlZ2VyPiBwaWRzID0gbmV3IEFycmF5TGlzdDxJbnRlZ2VyPigyMCk7CiAgICAgICAgIAogICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKQEAgLTQ5NDksOCArMjc4MSw3IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwcml2YXRlIGZpbmFsIHZvaWQgZGVjUGVyc2lzdGVudENvdW50TG9ja2VkKFByb2Nlc3NSZWNvcmQgYXBwKQotICAgIHsKKyAgICBmaW5hbCB2b2lkIGRlY1BlcnNpc3RlbnRDb3VudExvY2tlZChQcm9jZXNzUmVjb3JkIGFwcCkgewogICAgICAgICBhcHAucGVyc2lzdGVudEFjdGl2aXRpZXMtLTsKICAgICAgICAgaWYgKGFwcC5wZXJzaXN0ZW50QWN0aXZpdGllcyA+IDApIHsKICAgICAgICAgICAgIC8vIFN0aWxsIG1vcmUgb2YgJ2VtLi4uCkBAIC00OTc4LDExICsyODA5LDExIEBACiAgICAgICAgIH0KIAogICAgICAgICBzeW5jaHJvbml6ZWQodGhpcykgewotICAgICAgICAgICAgaW50IGluZGV4ID0gaW5kZXhPZlRva2VuTG9ja2VkKHRva2VuKTsKKyAgICAgICAgICAgIGludCBpbmRleCA9IG1NYWluU3RhY2suaW5kZXhPZlRva2VuTG9ja2VkKHRva2VuKTsKICAgICAgICAgICAgIGlmIChpbmRleCA8IDApIHsKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBIaXN0b3J5UmVjb3JkIHIgPSAoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQoaW5kZXgpOworICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IChBY3Rpdml0eVJlY29yZCltTWFpblN0YWNrLm1IaXN0b3J5LmdldChpbmRleCk7CiAgICAgICAgICAgICBQcm9jZXNzUmVjb3JkIGFwcCA9IHIuYXBwOwogCiAgICAgICAgICAgICBpZiAobG9jYWxMT0dWKSBTbG9nLnYoCkBAIC01MDM0LDcgKzI4NjUsNyBAQAogICAgICAgICBpbnQgcGlkID0gQmluZGVyLmdldENhbGxpbmdQaWQoKTsKICAgICAgICAgbG9uZyBjYWxsaW5nSWQgPSBCaW5kZXIuY2xlYXJDYWxsaW5nSWRlbnRpdHkoKTsKICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIElQYWNrYWdlTWFuYWdlciBwbSA9IEFjdGl2aXR5VGhyZWFkLmdldFBhY2thZ2VNYW5hZ2VyKCk7CisgICAgICAgICAgICBJUGFja2FnZU1hbmFnZXIgcG0gPSBBcHBHbG9iYWxzLmdldFBhY2thZ2VNYW5hZ2VyKCk7CiAgICAgICAgICAgICBpbnQgcGtnVWlkID0gLTE7CiAgICAgICAgICAgICBzeW5jaHJvbml6ZWQodGhpcykgewogICAgICAgICAgICAgICAgIHRyeSB7CkBAIC01MDkxLDcgKzI5MjIsNyBAQAogICAgICAgICAKICAgICAgICAgbG9uZyBjYWxsaW5nSWQgPSBCaW5kZXIuY2xlYXJDYWxsaW5nSWRlbnRpdHkoKTsKICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIElQYWNrYWdlTWFuYWdlciBwbSA9IEFjdGl2aXR5VGhyZWFkLmdldFBhY2thZ2VNYW5hZ2VyKCk7CisgICAgICAgICAgICBJUGFja2FnZU1hbmFnZXIgcG0gPSBBcHBHbG9iYWxzLmdldFBhY2thZ2VNYW5hZ2VyKCk7CiAgICAgICAgICAgICBpbnQgcGtnVWlkID0gLTE7CiAgICAgICAgICAgICBzeW5jaHJvbml6ZWQodGhpcykgewogICAgICAgICAgICAgICAgIHRyeSB7CkBAIC01MTIzLDcgKzI5NTQsNyBAQAogICAgICAgICAKICAgICAgICAgbG9uZyBjYWxsaW5nSWQgPSBCaW5kZXIuY2xlYXJDYWxsaW5nSWRlbnRpdHkoKTsKICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIElQYWNrYWdlTWFuYWdlciBwbSA9IEFjdGl2aXR5VGhyZWFkLmdldFBhY2thZ2VNYW5hZ2VyKCk7CisgICAgICAgICAgICBJUGFja2FnZU1hbmFnZXIgcG0gPSBBcHBHbG9iYWxzLmdldFBhY2thZ2VNYW5hZ2VyKCk7CiAgICAgICAgICAgICBpbnQgcGtnVWlkID0gLTE7CiAgICAgICAgICAgICBzeW5jaHJvbml6ZWQodGhpcykgewogICAgICAgICAgICAgICAgIHRyeSB7CkBAIC01MTkzLDEwICszMDI0LDEwIEBACiAgICAgICAgICAgICAKICAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyLmNsb3NlU3lzdGVtRGlhbG9ncyhyZWFzb24pOwogICAgICAgICAgICAgCi0gICAgICAgICAgICBmb3IgKGk9bUhpc3Rvcnkuc2l6ZSgpLTE7IGk+PTA7IGktLSkgewotICAgICAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgciA9IChIaXN0b3J5UmVjb3JkKW1IaXN0b3J5LmdldChpKTsKKyAgICAgICAgICAgIGZvciAoaT1tTWFpblN0YWNrLm1IaXN0b3J5LnNpemUoKS0xOyBpPj0wOyBpLS0pIHsKKyAgICAgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gKEFjdGl2aXR5UmVjb3JkKW1NYWluU3RhY2subUhpc3RvcnkuZ2V0KGkpOwogICAgICAgICAgICAgICAgIGlmICgoci5pbmZvLmZsYWdzJkFjdGl2aXR5SW5mby5GTEFHX0ZJTklTSF9PTl9DTE9TRV9TWVNURU1fRElBTE9HUykgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICBmaW5pc2hBY3Rpdml0eUxvY2tlZChyLCBpLAorICAgICAgICAgICAgICAgICAgICByLnN0YWNrLmZpbmlzaEFjdGl2aXR5TG9ja2VkKHIsIGksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHkuUkVTVUxUX0NBTkNFTEVELCBudWxsLCAiY2xvc2Utc3lzIik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtNTI5Nyw3ICszMTI4LDcgQEAKIAogICAgICAgICBpZiAodWlkIDwgMCkgewogICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICB1aWQgPSBBY3Rpdml0eVRocmVhZC5nZXRQYWNrYWdlTWFuYWdlcigpLmdldFBhY2thZ2VVaWQobmFtZSk7CisgICAgICAgICAgICAgICAgdWlkID0gQXBwR2xvYmFscy5nZXRQYWNrYWdlTWFuYWdlcigpLmdldFBhY2thZ2VVaWQobmFtZSk7CiAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgewogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC01MzE3LDggKzMxNDgsOCBAQAogICAgICAgICBib29sZWFuIGRpZFNvbWV0aGluZyA9IGtpbGxQYWNrYWdlUHJvY2Vzc2VzTG9ja2VkKG5hbWUsIHVpZCwgLTEwMCwKICAgICAgICAgICAgICAgICBjYWxsZXJXaWxsUmVzdGFydCwgZG9pdCk7CiAgICAgICAgIAotICAgICAgICBmb3IgKGk9bUhpc3Rvcnkuc2l6ZSgpLTE7IGk+PTA7IGktLSkgewotICAgICAgICAgICAgSGlzdG9yeVJlY29yZCByID0gKEhpc3RvcnlSZWNvcmQpbUhpc3RvcnkuZ2V0KGkpOworICAgICAgICBmb3IgKGk9bU1haW5TdGFjay5tSGlzdG9yeS5zaXplKCktMTsgaT49MDsgaS0tKSB7CisgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gKEFjdGl2aXR5UmVjb3JkKW1NYWluU3RhY2subUhpc3RvcnkuZ2V0KGkpOwogICAgICAgICAgICAgaWYgKHIucGFja2FnZU5hbWUuZXF1YWxzKG5hbWUpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFkb2l0KSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNTMyOSw3ICszMTYwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgci5hcHAucmVtb3ZlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHIuYXBwID0gbnVsbDsKLSAgICAgICAgICAgICAgICBmaW5pc2hBY3Rpdml0eUxvY2tlZChyLCBpLCBBY3Rpdml0eS5SRVNVTFRfQ0FOQ0VMRUQsIG51bGwsICJ1bmluc3RhbGwiKTsKKyAgICAgICAgICAgICAgICByLnN0YWNrLmZpbmlzaEFjdGl2aXR5TG9ja2VkKHIsIGksIEFjdGl2aXR5LlJFU1VMVF9DQU5DRUxFRCwgbnVsbCwgInVuaW5zdGFsbCIpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTUzNjEsNyArMzE5Miw3IEBACiAgICAgICAgICAgICAgICAgICAgIGFjLnJlbW92ZVBhY2thZ2UobmFtZSk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgcmVzdW1lVG9wQWN0aXZpdHlMb2NrZWQobnVsbCk7CisgICAgICAgICAgICBtTWFpblN0YWNrLnJlc3VtZVRvcEFjdGl2aXR5TG9ja2VkKG51bGwpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICByZXR1cm4gZGlkU29tZXRoaW5nOwpAQCAtNTM3NSw2ICszMjA2LDEwIEBACiAgICAgICAgICAgICArICIvIiArIHVpZCArICIpIik7CiAKICAgICAgICAgbVByb2Nlc3NOYW1lcy5yZW1vdmUobmFtZSwgdWlkKTsKKyAgICAgICAgaWYgKG1IZWF2eVdlaWdodFByb2Nlc3MgPT0gYXBwKSB7CisgICAgICAgICAgICBtSGVhdnlXZWlnaHRQcm9jZXNzID0gbnVsbDsKKyAgICAgICAgICAgIG1IYW5kbGVyLnNlbmRFbXB0eU1lc3NhZ2UoQ0FOQ0VMX0hFQVZZX05PVElGSUNBVElPTl9NU0cpOworICAgICAgICB9CiAgICAgICAgIGJvb2xlYW4gbmVlZFJlc3RhcnQgPSBmYWxzZTsKICAgICAgICAgaWYgKGFwcC5waWQgPiAwICYmIGFwcC5waWQgIT0gTVlfUElEKSB7CiAgICAgICAgICAgICBpbnQgcGlkID0gYXBwLnBpZDsKQEAgLTU0MTYsNiArMzI1MSwxMCBAQAogICAgICAgICAgICAgRXZlbnRMb2cud3JpdGVFdmVudChFdmVudExvZ1RhZ3MuQU1fUFJPQ0VTU19TVEFSVF9USU1FT1VULCBwaWQsIGFwcC5pbmZvLnVpZCwKICAgICAgICAgICAgICAgICAgICAgYXBwLnByb2Nlc3NOYW1lKTsKICAgICAgICAgICAgIG1Qcm9jZXNzTmFtZXMucmVtb3ZlKGFwcC5wcm9jZXNzTmFtZSwgYXBwLmluZm8udWlkKTsKKyAgICAgICAgICAgIGlmIChtSGVhdnlXZWlnaHRQcm9jZXNzID09IGFwcCkgeworICAgICAgICAgICAgICAgIG1IZWF2eVdlaWdodFByb2Nlc3MgPSBudWxsOworICAgICAgICAgICAgICAgIG1IYW5kbGVyLnNlbmRFbXB0eU1lc3NhZ2UoQ0FOQ0VMX0hFQVZZX05PVElGSUNBVElPTl9NU0cpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgLy8gVGFrZSBjYXJlIG9mIGFueSBsYXVuY2hpbmcgcHJvdmlkZXJzIHdhaXRpbmcgZm9yIHRoaXMgcHJvY2Vzcy4KICAgICAgICAgICAgIGNoZWNrQXBwSW5MYXVuY2hpbmdQcm92aWRlcnNMb2NrZWQoYXBwLCB0cnVlKTsKICAgICAgICAgICAgIC8vIFRha2UgY2FyZSBvZiBhbnkgc2VydmljZXMgdGhhdCBhcmUgd2FpdGluZyBmb3IgdGhlIHByb2Nlc3MuCkBAIC01NTgyLDEyICszNDIxLDEyIEBACiAgICAgICAgIGJvb2xlYW4gZGlkU29tZXRoaW5nID0gZmFsc2U7CiAKICAgICAgICAgLy8gU2VlIGlmIHRoZSB0b3AgdmlzaWJsZSBhY3Rpdml0eSBpcyB3YWl0aW5nIHRvIHJ1biBpbiB0aGlzIHByb2Nlc3MuLi4KLSAgICAgICAgSGlzdG9yeVJlY29yZCBociA9IHRvcFJ1bm5pbmdBY3Rpdml0eUxvY2tlZChudWxsKTsKKyAgICAgICAgQWN0aXZpdHlSZWNvcmQgaHIgPSBtTWFpblN0YWNrLnRvcFJ1bm5pbmdBY3Rpdml0eUxvY2tlZChudWxsKTsKICAgICAgICAgaWYgKGhyICE9IG51bGwgJiYgbm9ybWFsTW9kZSkgewogICAgICAgICAgICAgaWYgKGhyLmFwcCA9PSBudWxsICYmIGFwcC5pbmZvLnVpZCA9PSBoci5pbmZvLmFwcGxpY2F0aW9uSW5mby51aWQKICAgICAgICAgICAgICAgICAgICAgJiYgcHJvY2Vzc05hbWUuZXF1YWxzKGhyLnByb2Nlc3NOYW1lKSkgewogICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZWFsU3RhcnRBY3Rpdml0eUxvY2tlZChociwgYXBwLCB0cnVlLCB0cnVlKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAobU1haW5TdGFjay5yZWFsU3RhcnRBY3Rpdml0eUxvY2tlZChociwgYXBwLCB0cnVlLCB0cnVlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgZGlkU29tZXRoaW5nID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CkBAIC01NTk2LDcgKzM0MzUsNyBAQAogICAgICAgICAgICAgICAgICAgICBiYWRBcHAgPSB0cnVlOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgZW5zdXJlQWN0aXZpdGllc1Zpc2libGVMb2NrZWQoaHIsIG51bGwsIHByb2Nlc3NOYW1lLCAwKTsKKyAgICAgICAgICAgICAgICBtTWFpblN0YWNrLmVuc3VyZUFjdGl2aXRpZXNWaXNpYmxlTG9ja2VkKGhyLCBudWxsLCBwcm9jZXNzTmFtZSwgMCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtNTY4MCwxOTUgKzM1MTksMTYgQEAKIAogICAgIHB1YmxpYyBmaW5hbCB2b2lkIGFjdGl2aXR5SWRsZShJQmluZGVyIHRva2VuLCBDb25maWd1cmF0aW9uIGNvbmZpZykgewogICAgICAgICBmaW5hbCBsb25nIG9yaWdJZCA9IEJpbmRlci5jbGVhckNhbGxpbmdJZGVudGl0eSgpOwotICAgICAgICBhY3Rpdml0eUlkbGVJbnRlcm5hbCh0b2tlbiwgZmFsc2UsIGNvbmZpZyk7CisgICAgICAgIG1NYWluU3RhY2suYWN0aXZpdHlJZGxlSW50ZXJuYWwodG9rZW4sIGZhbHNlLCBjb25maWcpOwogICAgICAgICBCaW5kZXIucmVzdG9yZUNhbGxpbmdJZGVudGl0eShvcmlnSWQpOwogICAgIH0KIAotICAgIGZpbmFsIEFycmF5TGlzdDxIaXN0b3J5UmVjb3JkPiBwcm9jZXNzU3RvcHBpbmdBY3Rpdml0aWVzTG9ja2VkKAotICAgICAgICAgICAgYm9vbGVhbiByZW1vdmUpIHsKLSAgICAgICAgaW50IE4gPSBtU3RvcHBpbmdBY3Rpdml0aWVzLnNpemUoKTsKLSAgICAgICAgaWYgKE4gPD0gMCkgcmV0dXJuIG51bGw7Ci0KLSAgICAgICAgQXJyYXlMaXN0PEhpc3RvcnlSZWNvcmQ+IHN0b3BzID0gbnVsbDsKLQotICAgICAgICBmaW5hbCBib29sZWFuIG5vd1Zpc2libGUgPSBtUmVzdW1lZEFjdGl2aXR5ICE9IG51bGwKLSAgICAgICAgICAgICAgICAmJiBtUmVzdW1lZEFjdGl2aXR5Lm5vd1Zpc2libGUKLSAgICAgICAgICAgICAgICAmJiAhbVJlc3VtZWRBY3Rpdml0eS53YWl0aW5nVmlzaWJsZTsKLSAgICAgICAgZm9yIChpbnQgaT0wOyBpPE47IGkrKykgewotICAgICAgICAgICAgSGlzdG9yeVJlY29yZCBzID0gbVN0b3BwaW5nQWN0aXZpdGllcy5nZXQoaSk7Ci0gICAgICAgICAgICBpZiAobG9jYWxMT0dWKSBTbG9nLnYoVEFHLCAiU3RvcHBpbmcgIiArIHMgKyAiOiBub3dWaXNpYmxlPSIKLSAgICAgICAgICAgICAgICAgICAgKyBub3dWaXNpYmxlICsgIiB3YWl0aW5nVmlzaWJsZT0iICsgcy53YWl0aW5nVmlzaWJsZQotICAgICAgICAgICAgICAgICAgICArICIgZmluaXNoaW5nPSIgKyBzLmZpbmlzaGluZyk7Ci0gICAgICAgICAgICBpZiAocy53YWl0aW5nVmlzaWJsZSAmJiBub3dWaXNpYmxlKSB7Ci0gICAgICAgICAgICAgICAgbVdhaXRpbmdWaXNpYmxlQWN0aXZpdGllcy5yZW1vdmUocyk7Ci0gICAgICAgICAgICAgICAgcy53YWl0aW5nVmlzaWJsZSA9IGZhbHNlOwotICAgICAgICAgICAgICAgIGlmIChzLmZpbmlzaGluZykgewotICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGFjdGl2aXR5IGlzIGZpbmlzaGluZywgaXQgaXMgc2l0dGluZyBvbiB0b3Agb2YKLSAgICAgICAgICAgICAgICAgICAgLy8gZXZlcnlvbmUgZWxzZSBidXQgd2Ugbm93IGtub3cgaXQgaXMgbm8gbG9uZ2VyIG5lZWRlZC4uLgotICAgICAgICAgICAgICAgICAgICAvLyBzbyBnZXQgcmlkIG9mIGl0LiAgT3RoZXJ3aXNlLCB3ZSBuZWVkIHRvIGdvIHRocm91Z2ggdGhlCi0gICAgICAgICAgICAgICAgICAgIC8vIG5vcm1hbCBmbG93IGFuZCBoaWRlIGl0IG9uY2Ugd2UgZGV0ZXJtaW5lIHRoYXQgaXQgaXMKLSAgICAgICAgICAgICAgICAgICAgLy8gaGlkZGVuIGJ5IHRoZSBhY3Rpdml0aWVzIGluIGZyb250IG9mIGl0LgotICAgICAgICAgICAgICAgICAgICBpZiAobG9jYWxMT0dWKSBTbG9nLnYoVEFHLCAiQmVmb3JlIHN0b3BwaW5nLCBjYW4gaGlkZTogIiArIHMpOwotICAgICAgICAgICAgICAgICAgICBtV2luZG93TWFuYWdlci5zZXRBcHBWaXNpYmlsaXR5KHMsIGZhbHNlKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoIXMud2FpdGluZ1Zpc2libGUgJiYgcmVtb3ZlKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGxvY2FsTE9HVikgU2xvZy52KFRBRywgIlJlYWR5IHRvIHN0b3A6ICIgKyBzKTsKLSAgICAgICAgICAgICAgICBpZiAoc3RvcHMgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICBzdG9wcyA9IG5ldyBBcnJheUxpc3Q8SGlzdG9yeVJlY29yZD4oKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc3RvcHMuYWRkKHMpOwotICAgICAgICAgICAgICAgIG1TdG9wcGluZ0FjdGl2aXRpZXMucmVtb3ZlKGkpOwotICAgICAgICAgICAgICAgIE4tLTsKLSAgICAgICAgICAgICAgICBpLS07Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gc3RvcHM7Ci0gICAgfQotCiAgICAgdm9pZCBlbmFibGVTY3JlZW5BZnRlckJvb3QoKSB7CiAgICAgICAgIEV2ZW50TG9nLndyaXRlRXZlbnQoRXZlbnRMb2dUYWdzLkJPT1RfUFJPR1JFU1NfRU5BQkxFX1NDUkVFTiwKICAgICAgICAgICAgICAgICBTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKSk7CiAgICAgICAgIG1XaW5kb3dNYW5hZ2VyLmVuYWJsZVNjcmVlbkFmdGVyQm9vdCgpOwogICAgIH0KIAotICAgIGZpbmFsIHZvaWQgYWN0aXZpdHlJZGxlSW50ZXJuYWwoSUJpbmRlciB0b2tlbiwgYm9vbGVhbiBmcm9tVGltZW91dCwKLSAgICAgICAgICAgIENvbmZpZ3VyYXRpb24gY29uZmlnKSB7Ci0gICAgICAgIGlmIChsb2NhbExPR1YpIFNsb2cudihUQUcsICJBY3Rpdml0eSBpZGxlOiAiICsgdG9rZW4pOwotCi0gICAgICAgIEFycmF5TGlzdDxIaXN0b3J5UmVjb3JkPiBzdG9wcyA9IG51bGw7Ci0gICAgICAgIEFycmF5TGlzdDxIaXN0b3J5UmVjb3JkPiBmaW5pc2hlcyA9IG51bGw7Ci0gICAgICAgIEFycmF5TGlzdDxIaXN0b3J5UmVjb3JkPiB0aHVtYm5haWxzID0gbnVsbDsKLSAgICAgICAgaW50IE5TID0gMDsKLSAgICAgICAgaW50IE5GID0gMDsKLSAgICAgICAgaW50IE5UID0gMDsKLSAgICAgICAgSUFwcGxpY2F0aW9uVGhyZWFkIHNlbmRUaHVtYm5haWwgPSBudWxsOwotICAgICAgICBib29sZWFuIGJvb3RpbmcgPSBmYWxzZTsKLSAgICAgICAgYm9vbGVhbiBlbmFibGVTY3JlZW4gPSBmYWxzZTsKLQotICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKLSAgICAgICAgICAgIGlmICh0b2tlbiAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgbUhhbmRsZXIucmVtb3ZlTWVzc2FnZXMoSURMRV9USU1FT1VUX01TRywgdG9rZW4pOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBHZXQgdGhlIGFjdGl2aXR5IHJlY29yZC4KLSAgICAgICAgICAgIGludCBpbmRleCA9IGluZGV4T2ZUb2tlbkxvY2tlZCh0b2tlbik7Ci0gICAgICAgICAgICBpZiAoaW5kZXggPj0gMCkgewotICAgICAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgciA9IChIaXN0b3J5UmVjb3JkKW1IaXN0b3J5LmdldChpbmRleCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoZnJvbVRpbWVvdXQpIHsKLSAgICAgICAgICAgICAgICAgICAgcmVwb3J0QWN0aXZpdHlMYXVuY2hlZExvY2tlZChmcm9tVGltZW91dCwgciwgLTEsIC0xKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgLy8gVGhpcyBpcyBhIGhhY2sgdG8gc2VtaS1kZWFsIHdpdGggYSByYWNlIGNvbmRpdGlvbgotICAgICAgICAgICAgICAgIC8vIGluIHRoZSBjbGllbnQgd2hlcmUgaXQgY2FuIGJlIGNvbnN0cnVjdGVkIHdpdGggYQotICAgICAgICAgICAgICAgIC8vIG5ld2VyIGNvbmZpZ3VyYXRpb24gZnJvbSB3aGVuIHdlIGFza2VkIGl0IHRvIGxhdW5jaC4KLSAgICAgICAgICAgICAgICAvLyBXZSdsbCB1cGRhdGUgd2l0aCB3aGF0ZXZlciBjb25maWd1cmF0aW9uIGl0IG5vdyBzYXlzCi0gICAgICAgICAgICAgICAgLy8gaXQgdXNlZCB0byBsYXVuY2guCi0gICAgICAgICAgICAgICAgaWYgKGNvbmZpZyAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIHIuY29uZmlndXJhdGlvbiA9IGNvbmZpZzsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgLy8gTm8gbG9uZ2VyIG5lZWQgdG8ga2VlcCB0aGUgZGV2aWNlIGF3YWtlLgotICAgICAgICAgICAgICAgIGlmIChtUmVzdW1lZEFjdGl2aXR5ID09IHIgJiYgbUxhdW5jaGluZ0FjdGl2aXR5LmlzSGVsZCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1IYW5kbGVyLnJlbW92ZU1lc3NhZ2VzKExBVU5DSF9USU1FT1VUX01TRyk7Ci0gICAgICAgICAgICAgICAgICAgIG1MYXVuY2hpbmdBY3Rpdml0eS5yZWxlYXNlKCk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gV2UgYXJlIG5vdyBpZGxlLiAgSWYgc29tZW9uZSBpcyB3YWl0aW5nIGZvciBhIHRodW1ibmFpbCBmcm9tCi0gICAgICAgICAgICAgICAgLy8gdXMsIHdlIGNhbiBub3cgZGVsaXZlci4KLSAgICAgICAgICAgICAgICByLmlkbGUgPSB0cnVlOwotICAgICAgICAgICAgICAgIHNjaGVkdWxlQXBwR2NzTG9ja2VkKCk7Ci0gICAgICAgICAgICAgICAgaWYgKHIudGh1bWJuYWlsTmVlZGVkICYmIHIuYXBwICE9IG51bGwgJiYgci5hcHAudGhyZWFkICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgc2VuZFRodW1ibmFpbCA9IHIuYXBwLnRocmVhZDsKLSAgICAgICAgICAgICAgICAgICAgci50aHVtYm5haWxOZWVkZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGFjdGl2aXR5IGlzIGZ1bGxzY3JlZW4sIHNldCB1cCB0byBoaWRlIHRob3NlIHVuZGVyIGl0LgotCi0gICAgICAgICAgICAgICAgaWYgKERFQlVHX1ZJU0JJTElUWSkgU2xvZy52KFRBRywgIklkbGUgYWN0aXZpdHkgZm9yICIgKyByKTsKLSAgICAgICAgICAgICAgICBlbnN1cmVBY3Rpdml0aWVzVmlzaWJsZUxvY2tlZChudWxsLCAwKTsKLQotICAgICAgICAgICAgICAgIC8vU2xvZy5pKFRBRywgIklETEU6IG1Cb290ZWQ9IiArIG1Cb290ZWQgKyAiLCBmcm9tVGltZW91dD0iICsgZnJvbVRpbWVvdXQpOwotICAgICAgICAgICAgICAgIGlmICghbUJvb3RlZCAmJiAhZnJvbVRpbWVvdXQpIHsKLSAgICAgICAgICAgICAgICAgICAgbUJvb3RlZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGVuYWJsZVNjcmVlbiA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgfSBlbHNlIGlmIChmcm9tVGltZW91dCkgewotICAgICAgICAgICAgICAgIHJlcG9ydEFjdGl2aXR5TGF1bmNoZWRMb2NrZWQoZnJvbVRpbWVvdXQsIG51bGwsIC0xLCAtMSk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIC8vIEF0b21pY2FsbHkgcmV0cmlldmUgYWxsIG9mIHRoZSBvdGhlciB0aGluZ3MgdG8gZG8uCi0gICAgICAgICAgICBzdG9wcyA9IHByb2Nlc3NTdG9wcGluZ0FjdGl2aXRpZXNMb2NrZWQodHJ1ZSk7Ci0gICAgICAgICAgICBOUyA9IHN0b3BzICE9IG51bGwgPyBzdG9wcy5zaXplKCkgOiAwOwotICAgICAgICAgICAgaWYgKChORj1tRmluaXNoaW5nQWN0aXZpdGllcy5zaXplKCkpID4gMCkgewotICAgICAgICAgICAgICAgIGZpbmlzaGVzID0gbmV3IEFycmF5TGlzdDxIaXN0b3J5UmVjb3JkPihtRmluaXNoaW5nQWN0aXZpdGllcyk7Ci0gICAgICAgICAgICAgICAgbUZpbmlzaGluZ0FjdGl2aXRpZXMuY2xlYXIoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICgoTlQ9bUNhbmNlbGxlZFRodW1ibmFpbHMuc2l6ZSgpKSA+IDApIHsKLSAgICAgICAgICAgICAgICB0aHVtYm5haWxzID0gbmV3IEFycmF5TGlzdDxIaXN0b3J5UmVjb3JkPihtQ2FuY2VsbGVkVGh1bWJuYWlscyk7Ci0gICAgICAgICAgICAgICAgbUNhbmNlbGxlZFRodW1ibmFpbHMuY2xlYXIoKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgYm9vdGluZyA9IG1Cb290aW5nOwotICAgICAgICAgICAgbUJvb3RpbmcgPSBmYWxzZTsKLSAgICAgICAgfQotCi0gICAgICAgIGludCBpOwotCi0gICAgICAgIC8vIFNlbmQgdGh1bWJuYWlsIGlmIHJlcXVlc3RlZC4KLSAgICAgICAgaWYgKHNlbmRUaHVtYm5haWwgIT0gbnVsbCkgewotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBzZW5kVGh1bWJuYWlsLnJlcXVlc3RUaHVtYm5haWwodG9rZW4pOwotICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiRXhjZXB0aW9uIHRocm93biB3aGVuIHJlcXVlc3RpbmcgdGh1bWJuYWlsIiwgZSk7Ci0gICAgICAgICAgICAgICAgc2VuZFBlbmRpbmdUaHVtYm5haWwobnVsbCwgdG9rZW4sIG51bGwsIG51bGwsIHRydWUpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gU3RvcCBhbnkgYWN0aXZpdGllcyB0aGF0IGFyZSBzY2hlZHVsZWQgdG8gZG8gc28gYnV0IGhhdmUgYmVlbgotICAgICAgICAvLyB3YWl0aW5nIGZvciB0aGUgbmV4dCBvbmUgdG8gc3RhcnQuCi0gICAgICAgIGZvciAoaT0wOyBpPE5TOyBpKyspIHsKLSAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgciA9IChIaXN0b3J5UmVjb3JkKXN0b3BzLmdldChpKTsKLSAgICAgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgewotICAgICAgICAgICAgICAgIGlmIChyLmZpbmlzaGluZykgewotICAgICAgICAgICAgICAgICAgICBmaW5pc2hDdXJyZW50QWN0aXZpdHlMb2NrZWQociwgRklOSVNIX0lNTUVESUFURUxZKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBzdG9wQWN0aXZpdHlMb2NrZWQocik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gRmluaXNoIGFueSBhY3Rpdml0aWVzIHRoYXQgYXJlIHNjaGVkdWxlZCB0byBkbyBzbyBidXQgaGF2ZSBiZWVuCi0gICAgICAgIC8vIHdhaXRpbmcgZm9yIHRoZSBuZXh0IG9uZSB0byBzdGFydC4KLSAgICAgICAgZm9yIChpPTA7IGk8TkY7IGkrKykgewotICAgICAgICAgICAgSGlzdG9yeVJlY29yZCByID0gKEhpc3RvcnlSZWNvcmQpZmluaXNoZXMuZ2V0KGkpOwotICAgICAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7Ci0gICAgICAgICAgICAgICAgZGVzdHJveUFjdGl2aXR5TG9ja2VkKHIsIHRydWUpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgLy8gUmVwb3J0IGJhY2sgdG8gYW55IHRodW1ibmFpbCByZWNlaXZlcnMuCi0gICAgICAgIGZvciAoaT0wOyBpPE5UOyBpKyspIHsKLSAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgciA9IChIaXN0b3J5UmVjb3JkKXRodW1ibmFpbHMuZ2V0KGkpOwotICAgICAgICAgICAgc2VuZFBlbmRpbmdUaHVtYm5haWwociwgbnVsbCwgbnVsbCwgbnVsbCwgdHJ1ZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoYm9vdGluZykgewotICAgICAgICAgICAgZmluaXNoQm9vdGluZygpOwotICAgICAgICB9Ci0KLSAgICAgICAgdHJpbUFwcGxpY2F0aW9ucygpOwotICAgICAgICAvL2R1bXAoKTsKLSAgICAgICAgLy9tV2luZG93TWFuYWdlci5kdW1wKCk7Ci0KLSAgICAgICAgaWYgKGVuYWJsZVNjcmVlbikgewotICAgICAgICAgICAgZW5hYmxlU2NyZWVuQWZ0ZXJCb290KCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICBmaW5hbCB2b2lkIGZpbmlzaEJvb3RpbmcoKSB7CiAgICAgICAgIEludGVudEZpbHRlciBwa2dGaWx0ZXIgPSBuZXcgSW50ZW50RmlsdGVyKCk7CiAgICAgICAgIHBrZ0ZpbHRlci5hZGRBY3Rpb24oSW50ZW50LkFDVElPTl9RVUVSWV9QQUNLQUdFX1JFU1RBUlQpOwpAQCAtNTkzNyw2MCArMzU5NywzMSBAQAogICAgICAgICB9CiAKICAgICAgICAgZmluYWwgbG9uZyBvcmlnSWQgPSBCaW5kZXIuY2xlYXJDYWxsaW5nSWRlbnRpdHkoKTsKLSAgICAgICAgYWN0aXZpdHlQYXVzZWQodG9rZW4sIGljaWNsZSwgZmFsc2UpOworICAgICAgICBtTWFpblN0YWNrLmFjdGl2aXR5UGF1c2VkKHRva2VuLCBpY2ljbGUsIGZhbHNlKTsKICAgICAgICAgQmluZGVyLnJlc3RvcmVDYWxsaW5nSWRlbnRpdHkob3JpZ0lkKTsKICAgICB9CiAKLSAgICBmaW5hbCB2b2lkIGFjdGl2aXR5UGF1c2VkKElCaW5kZXIgdG9rZW4sIEJ1bmRsZSBpY2ljbGUsIGJvb2xlYW4gdGltZW91dCkgewotICAgICAgICBpZiAoREVCVUdfUEFVU0UpIFNsb2cudigKLSAgICAgICAgICAgIFRBRywgIkFjdGl2aXR5IHBhdXNlZDogdG9rZW49IiArIHRva2VuICsgIiwgaWNpY2xlPSIgKyBpY2ljbGUKLSAgICAgICAgICAgICsgIiwgdGltZW91dD0iICsgdGltZW91dCk7Ci0KLSAgICAgICAgSGlzdG9yeVJlY29yZCByID0gbnVsbDsKLQotICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKLSAgICAgICAgICAgIGludCBpbmRleCA9IGluZGV4T2ZUb2tlbkxvY2tlZCh0b2tlbik7Ci0gICAgICAgICAgICBpZiAoaW5kZXggPj0gMCkgewotICAgICAgICAgICAgICAgIHIgPSAoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQoaW5kZXgpOwotICAgICAgICAgICAgICAgIGlmICghdGltZW91dCkgewotICAgICAgICAgICAgICAgICAgICByLmljaWNsZSA9IGljaWNsZTsKLSAgICAgICAgICAgICAgICAgICAgci5oYXZlU3RhdGUgPSB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBtSGFuZGxlci5yZW1vdmVNZXNzYWdlcyhQQVVTRV9USU1FT1VUX01TRywgcik7Ci0gICAgICAgICAgICAgICAgaWYgKG1QYXVzaW5nQWN0aXZpdHkgPT0gcikgewotICAgICAgICAgICAgICAgICAgICByLnN0YXRlID0gQWN0aXZpdHlTdGF0ZS5QQVVTRUQ7Ci0gICAgICAgICAgICAgICAgICAgIGNvbXBsZXRlUGF1c2VMb2NrZWQoKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIAlFdmVudExvZy53cml0ZUV2ZW50KEV2ZW50TG9nVGFncy5BTV9GQUlMRURfVE9fUEFVU0UsCi0gICAgICAgICAgICAgICAgCSAgICAgICAgU3lzdGVtLmlkZW50aXR5SGFzaENvZGUociksIHIuc2hvcnRDb21wb25lbnROYW1lLCAKLSAgICAgICAgICAgICAgICAJCQltUGF1c2luZ0FjdGl2aXR5ICE9IG51bGwKLSAgICAgICAgICAgICAgICAJCQkgICAgPyBtUGF1c2luZ0FjdGl2aXR5LnNob3J0Q29tcG9uZW50TmFtZSA6ICIobm9uZSkiKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICBwdWJsaWMgZmluYWwgdm9pZCBhY3Rpdml0eVN0b3BwZWQoSUJpbmRlciB0b2tlbiwgQml0bWFwIHRodW1ibmFpbCwKICAgICAgICAgICAgIENoYXJTZXF1ZW5jZSBkZXNjcmlwdGlvbikgewogICAgICAgICBpZiAobG9jYWxMT0dWKSBTbG9nLnYoCiAgICAgICAgICAgICBUQUcsICJBY3Rpdml0eSBzdG9wcGVkOiB0b2tlbj0iICsgdG9rZW4pOwogCi0gICAgICAgIEhpc3RvcnlSZWNvcmQgciA9IG51bGw7CisgICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSBudWxsOwogCiAgICAgICAgIGZpbmFsIGxvbmcgb3JpZ0lkID0gQmluZGVyLmNsZWFyQ2FsbGluZ0lkZW50aXR5KCk7CiAKICAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7Ci0gICAgICAgICAgICBpbnQgaW5kZXggPSBpbmRleE9mVG9rZW5Mb2NrZWQodG9rZW4pOworICAgICAgICAgICAgaW50IGluZGV4ID0gbU1haW5TdGFjay5pbmRleE9mVG9rZW5Mb2NrZWQodG9rZW4pOwogICAgICAgICAgICAgaWYgKGluZGV4ID49IDApIHsKLSAgICAgICAgICAgICAgICByID0gKEhpc3RvcnlSZWNvcmQpbUhpc3RvcnkuZ2V0KGluZGV4KTsKKyAgICAgICAgICAgICAgICByID0gKEFjdGl2aXR5UmVjb3JkKW1NYWluU3RhY2subUhpc3RvcnkuZ2V0KGluZGV4KTsKICAgICAgICAgICAgICAgICByLnRodW1ibmFpbCA9IHRodW1ibmFpbDsKICAgICAgICAgICAgICAgICByLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247CiAgICAgICAgICAgICAgICAgci5zdG9wcGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICByLnN0YXRlID0gQWN0aXZpdHlTdGF0ZS5TVE9QUEVEOwogICAgICAgICAgICAgICAgIGlmICghci5maW5pc2hpbmcpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKHIuY29uZmlnRGVzdHJveSkgewotICAgICAgICAgICAgICAgICAgICAgICAgZGVzdHJveUFjdGl2aXR5TG9ja2VkKHIsIHRydWUpOwotICAgICAgICAgICAgICAgICAgICAgICAgcmVzdW1lVG9wQWN0aXZpdHlMb2NrZWQobnVsbCk7CisgICAgICAgICAgICAgICAgICAgICAgICByLnN0YWNrLmRlc3Ryb3lBY3Rpdml0eUxvY2tlZChyLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHIuc3RhY2sucmVzdW1lVG9wQWN0aXZpdHlMb2NrZWQobnVsbCk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC02MDA3LDM5ICszNjM4LDI3IEBACiAKICAgICBwdWJsaWMgZmluYWwgdm9pZCBhY3Rpdml0eURlc3Ryb3llZChJQmluZGVyIHRva2VuKSB7CiAgICAgICAgIGlmIChERUJVR19TV0lUQ0gpIFNsb2cudihUQUcsICJBQ1RJVklUWSBERVNUUk9ZRUQ6ICIgKyB0b2tlbik7Ci0gICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgewotICAgICAgICAgICAgbUhhbmRsZXIucmVtb3ZlTWVzc2FnZXMoREVTVFJPWV9USU1FT1VUX01TRywgdG9rZW4pOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpbnQgaW5kZXggPSBpbmRleE9mVG9rZW5Mb2NrZWQodG9rZW4pOwotICAgICAgICAgICAgaWYgKGluZGV4ID49IDApIHsKLSAgICAgICAgICAgICAgICBIaXN0b3J5UmVjb3JkIHIgPSAoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQoaW5kZXgpOwotICAgICAgICAgICAgICAgIGlmIChyLnN0YXRlID09IEFjdGl2aXR5U3RhdGUuREVTVFJPWUlORykgewotICAgICAgICAgICAgICAgICAgICBmaW5hbCBsb25nIG9yaWdJZCA9IEJpbmRlci5jbGVhckNhbGxpbmdJZGVudGl0eSgpOwotICAgICAgICAgICAgICAgICAgICByZW1vdmVBY3Rpdml0eUZyb21IaXN0b3J5TG9ja2VkKHIpOwotICAgICAgICAgICAgICAgICAgICBCaW5kZXIucmVzdG9yZUNhbGxpbmdJZGVudGl0eShvcmlnSWQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICBtTWFpblN0YWNrLmFjdGl2aXR5RGVzdHJveWVkKHRva2VuKTsKICAgICB9CiAgICAgCiAgICAgcHVibGljIFN0cmluZyBnZXRDYWxsaW5nUGFja2FnZShJQmluZGVyIHRva2VuKSB7CiAgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgewotICAgICAgICAgICAgSGlzdG9yeVJlY29yZCByID0gZ2V0Q2FsbGluZ1JlY29yZExvY2tlZCh0b2tlbik7CisgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gZ2V0Q2FsbGluZ1JlY29yZExvY2tlZCh0b2tlbik7CiAgICAgICAgICAgICByZXR1cm4gciAhPSBudWxsICYmIHIuYXBwICE9IG51bGwgPyByLmluZm8ucGFja2FnZU5hbWUgOiBudWxsOwogICAgICAgICB9CiAgICAgfQogCiAgICAgcHVibGljIENvbXBvbmVudE5hbWUgZ2V0Q2FsbGluZ0FjdGl2aXR5KElCaW5kZXIgdG9rZW4pIHsKICAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7Ci0gICAgICAgICAgICBIaXN0b3J5UmVjb3JkIHIgPSBnZXRDYWxsaW5nUmVjb3JkTG9ja2VkKHRva2VuKTsKKyAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSBnZXRDYWxsaW5nUmVjb3JkTG9ja2VkKHRva2VuKTsKICAgICAgICAgICAgIHJldHVybiByICE9IG51bGwgPyByLmludGVudC5nZXRDb21wb25lbnQoKSA6IG51bGw7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwcml2YXRlIEhpc3RvcnlSZWNvcmQgZ2V0Q2FsbGluZ1JlY29yZExvY2tlZChJQmluZGVyIHRva2VuKSB7Ci0gICAgICAgIGludCBpbmRleCA9IGluZGV4T2ZUb2tlbkxvY2tlZCh0b2tlbik7CisgICAgcHJpdmF0ZSBBY3Rpdml0eVJlY29yZCBnZXRDYWxsaW5nUmVjb3JkTG9ja2VkKElCaW5kZXIgdG9rZW4pIHsKKyAgICAgICAgaW50IGluZGV4ID0gbU1haW5TdGFjay5pbmRleE9mVG9rZW5Mb2NrZWQodG9rZW4pOwogICAgICAgICBpZiAoaW5kZXggPj0gMCkgewotICAgICAgICAgICAgSGlzdG9yeVJlY29yZCByID0gKEhpc3RvcnlSZWNvcmQpbUhpc3RvcnkuZ2V0KGluZGV4KTsKKyAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSAoQWN0aXZpdHlSZWNvcmQpbU1haW5TdGFjay5tSGlzdG9yeS5nZXQoaW5kZXgpOwogICAgICAgICAgICAgaWYgKHIgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgIHJldHVybiByLnJlc3VsdFRvOwogICAgICAgICAgICAgfQpAQCAtNjA0OSw5ICszNjY4LDkgQEAKIAogICAgIHB1YmxpYyBDb21wb25lbnROYW1lIGdldEFjdGl2aXR5Q2xhc3NGb3JUb2tlbihJQmluZGVyIHRva2VuKSB7CiAgICAgICAgIHN5bmNocm9uaXplZCh0aGlzKSB7Ci0gICAgICAgICAgICBpbnQgaW5kZXggPSBpbmRleE9mVG9rZW5Mb2NrZWQodG9rZW4pOworICAgICAgICAgICAgaW50IGluZGV4ID0gbU1haW5TdGFjay5pbmRleE9mVG9rZW5Mb2NrZWQodG9rZW4pOwogICAgICAgICAgICAgaWYgKGluZGV4ID49IDApIHsKLSAgICAgICAgICAgICAgICBIaXN0b3J5UmVjb3JkIHIgPSAoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQoaW5kZXgpOworICAgICAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSAoQWN0aXZpdHlSZWNvcmQpbU1haW5TdGFjay5tSGlzdG9yeS5nZXQoaW5kZXgpOwogICAgICAgICAgICAgICAgIHJldHVybiByLmludGVudC5nZXRDb21wb25lbnQoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJldHVybiBudWxsOwpAQCAtNjA2MCw5ICszNjc5LDkgQEAKIAogICAgIHB1YmxpYyBTdHJpbmcgZ2V0UGFja2FnZUZvclRva2VuKElCaW5kZXIgdG9rZW4pIHsKICAgICAgICAgc3luY2hyb25pemVkKHRoaXMpIHsKLSAgICAgICAgICAgIGludCBpbmRleCA9IGluZGV4T2ZUb2tlbkxvY2tlZCh0b2tlbik7CisgICAgICAgICAgICBpbnQgaW5kZXggPSBtTWFpblN0YWNrLmluZGV4T2ZUb2tlbkxvY2tlZCh0b2tlbik7CiAgICAgICAgICAgICBpZiAoaW5kZXggPj0gMCkgewotICAgICAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgciA9IChIaXN0b3J5UmVjb3JkKW1IaXN0b3J5LmdldChpbmRleCk7CisgICAgICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IChBY3Rpdml0eVJlY29yZCltTWFpblN0YWNrLm1IaXN0b3J5LmdldChpbmRleCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHIucGFja2FnZU5hbWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKQEAgLTYwODksNyArMzcwOCw3IEBACiAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgIGlmIChjYWxsaW5nVWlkICE9IDAgJiYgY2FsbGluZ1VpZCAhPSBQcm9jZXNzLlNZU1RFTV9VSUQgJiYKICAgICAgICAgICAgICAgICAgICAgICAgIFByb2Nlc3Muc3VwcG9ydHNQcm9jZXNzZXMoKSkgewotICAgICAgICAgICAgICAgICAgICBpbnQgdWlkID0gQWN0aXZpdHlUaHJlYWQuZ2V0UGFja2FnZU1hbmFnZXIoKQorICAgICAgICAgICAgICAgICAgICBpbnQgdWlkID0gQXBwR2xvYmFscy5nZXRQYWNrYWdlTWFuYWdlcigpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLmdldFBhY2thZ2VVaWQocGFja2FnZU5hbWUpOwogICAgICAgICAgICAgICAgICAgICBpZiAodWlkICE9IEJpbmRlci5nZXRDYWxsaW5nVWlkKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBtc2cgPSAiUGVybWlzc2lvbiBEZW5pYWw6IGdldEludGVudFNlbmRlcigpIGZyb20gcGlkPSIKQEAgLTYxMDEsNTcgKzM3MjAsNjYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBTZWN1cml0eUV4Y2VwdGlvbihtc2cpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHJldHVybiBnZXRJbnRlbnRTZW5kZXJMb2NrZWQodHlwZSwgcGFja2FnZU5hbWUsIGNhbGxpbmdVaWQsCisgICAgICAgICAgICAgICAgICAgICAgICB0b2tlbiwgcmVzdWx0V2hvLCByZXF1ZXN0Q29kZSwgaW50ZW50LCByZXNvbHZlZFR5cGUsIGZsYWdzKTsKKyAgICAgICAgICAgICAgICAKICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CiAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFNlY3VyaXR5RXhjZXB0aW9uKGUpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgSGlzdG9yeVJlY29yZCBhY3Rpdml0eSA9IG51bGw7Ci0gICAgICAgICAgICBpZiAodHlwZSA9PSBJTlRFTlRfU0VOREVSX0FDVElWSVRZX1JFU1VMVCkgewotICAgICAgICAgICAgICAgIGludCBpbmRleCA9IGluZGV4T2ZUb2tlbkxvY2tlZCh0b2tlbik7Ci0gICAgICAgICAgICAgICAgaWYgKGluZGV4IDwgMCkgewotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYWN0aXZpdHkgPSAoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQoaW5kZXgpOwotICAgICAgICAgICAgICAgIGlmIChhY3Rpdml0eS5maW5pc2hpbmcpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIElJbnRlbnRTZW5kZXIgZ2V0SW50ZW50U2VuZGVyTG9ja2VkKGludCB0eXBlLAorICAgICAgICAgICAgU3RyaW5nIHBhY2thZ2VOYW1lLCBpbnQgY2FsbGluZ1VpZCwgSUJpbmRlciB0b2tlbiwgU3RyaW5nIHJlc3VsdFdobywKKyAgICAgICAgICAgIGludCByZXF1ZXN0Q29kZSwgSW50ZW50IGludGVudCwgU3RyaW5nIHJlc29sdmVkVHlwZSwgaW50IGZsYWdzKSB7CisgICAgICAgIEFjdGl2aXR5UmVjb3JkIGFjdGl2aXR5ID0gbnVsbDsKKyAgICAgICAgaWYgKHR5cGUgPT0gSU5URU5UX1NFTkRFUl9BQ1RJVklUWV9SRVNVTFQpIHsKKyAgICAgICAgICAgIGludCBpbmRleCA9IG1NYWluU3RhY2suaW5kZXhPZlRva2VuTG9ja2VkKHRva2VuKTsKKyAgICAgICAgICAgIGlmIChpbmRleCA8IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBub0NyZWF0ZSA9IChmbGFncyZQZW5kaW5nSW50ZW50LkZMQUdfTk9fQ1JFQVRFKSAhPSAwOwotICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBjYW5jZWxDdXJyZW50ID0gKGZsYWdzJlBlbmRpbmdJbnRlbnQuRkxBR19DQU5DRUxfQ1VSUkVOVCkgIT0gMDsKLSAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gdXBkYXRlQ3VycmVudCA9IChmbGFncyZQZW5kaW5nSW50ZW50LkZMQUdfVVBEQVRFX0NVUlJFTlQpICE9IDA7Ci0gICAgICAgICAgICBmbGFncyAmPSB+KFBlbmRpbmdJbnRlbnQuRkxBR19OT19DUkVBVEV8UGVuZGluZ0ludGVudC5GTEFHX0NBTkNFTF9DVVJSRU5UCi0gICAgICAgICAgICAgICAgICAgIHxQZW5kaW5nSW50ZW50LkZMQUdfVVBEQVRFX0NVUlJFTlQpOwotCi0gICAgICAgICAgICBQZW5kaW5nSW50ZW50UmVjb3JkLktleSBrZXkgPSBuZXcgUGVuZGluZ0ludGVudFJlY29yZC5LZXkoCi0gICAgICAgICAgICAgICAgICAgIHR5cGUsIHBhY2thZ2VOYW1lLCBhY3Rpdml0eSwgcmVzdWx0V2hvLAotICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Q29kZSwgaW50ZW50LCByZXNvbHZlZFR5cGUsIGZsYWdzKTsKLSAgICAgICAgICAgIFdlYWtSZWZlcmVuY2U8UGVuZGluZ0ludGVudFJlY29yZD4gcmVmOwotICAgICAgICAgICAgcmVmID0gbUludGVudFNlbmRlclJlY29yZHMuZ2V0KGtleSk7Ci0gICAgICAgICAgICBQZW5kaW5nSW50ZW50UmVjb3JkIHJlYyA9IHJlZiAhPSBudWxsID8gcmVmLmdldCgpIDogbnVsbDsKLSAgICAgICAgICAgIGlmIChyZWMgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIGlmICghY2FuY2VsQ3VycmVudCkgewotICAgICAgICAgICAgICAgICAgICBpZiAodXBkYXRlQ3VycmVudCkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmVjLmtleS5yZXF1ZXN0SW50ZW50LnJlcGxhY2VFeHRyYXMoaW50ZW50KTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVjOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZWMuY2FuY2VsZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgIG1JbnRlbnRTZW5kZXJSZWNvcmRzLnJlbW92ZShrZXkpOworICAgICAgICAgICAgYWN0aXZpdHkgPSAoQWN0aXZpdHlSZWNvcmQpbU1haW5TdGFjay5tSGlzdG9yeS5nZXQoaW5kZXgpOworICAgICAgICAgICAgaWYgKGFjdGl2aXR5LmZpbmlzaGluZykgeworICAgICAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG5vQ3JlYXRlKSB7CisgICAgICAgIH0KKworICAgICAgICBmaW5hbCBib29sZWFuIG5vQ3JlYXRlID0gKGZsYWdzJlBlbmRpbmdJbnRlbnQuRkxBR19OT19DUkVBVEUpICE9IDA7CisgICAgICAgIGZpbmFsIGJvb2xlYW4gY2FuY2VsQ3VycmVudCA9IChmbGFncyZQZW5kaW5nSW50ZW50LkZMQUdfQ0FOQ0VMX0NVUlJFTlQpICE9IDA7CisgICAgICAgIGZpbmFsIGJvb2xlYW4gdXBkYXRlQ3VycmVudCA9IChmbGFncyZQZW5kaW5nSW50ZW50LkZMQUdfVVBEQVRFX0NVUlJFTlQpICE9IDA7CisgICAgICAgIGZsYWdzICY9IH4oUGVuZGluZ0ludGVudC5GTEFHX05PX0NSRUFURXxQZW5kaW5nSW50ZW50LkZMQUdfQ0FOQ0VMX0NVUlJFTlQKKyAgICAgICAgICAgICAgICB8UGVuZGluZ0ludGVudC5GTEFHX1VQREFURV9DVVJSRU5UKTsKKworICAgICAgICBQZW5kaW5nSW50ZW50UmVjb3JkLktleSBrZXkgPSBuZXcgUGVuZGluZ0ludGVudFJlY29yZC5LZXkoCisgICAgICAgICAgICAgICAgdHlwZSwgcGFja2FnZU5hbWUsIGFjdGl2aXR5LCByZXN1bHRXaG8sCisgICAgICAgICAgICAgICAgcmVxdWVzdENvZGUsIGludGVudCwgcmVzb2x2ZWRUeXBlLCBmbGFncyk7CisgICAgICAgIFdlYWtSZWZlcmVuY2U8UGVuZGluZ0ludGVudFJlY29yZD4gcmVmOworICAgICAgICByZWYgPSBtSW50ZW50U2VuZGVyUmVjb3Jkcy5nZXQoa2V5KTsKKyAgICAgICAgUGVuZGluZ0ludGVudFJlY29yZCByZWMgPSByZWYgIT0gbnVsbCA/IHJlZi5nZXQoKSA6IG51bGw7CisgICAgICAgIGlmIChyZWMgIT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKCFjYW5jZWxDdXJyZW50KSB7CisgICAgICAgICAgICAgICAgaWYgKHVwZGF0ZUN1cnJlbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVjLmtleS5yZXF1ZXN0SW50ZW50LnJlcGxhY2VFeHRyYXMoaW50ZW50KTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJlYzsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJlYyA9IG5ldyBQZW5kaW5nSW50ZW50UmVjb3JkKHRoaXMsIGtleSwgY2FsbGluZ1VpZCk7Ci0gICAgICAgICAgICBtSW50ZW50U2VuZGVyUmVjb3Jkcy5wdXQoa2V5LCByZWMucmVmKTsKLSAgICAgICAgICAgIGlmICh0eXBlID09IElOVEVOVF9TRU5ERVJfQUNUSVZJVFlfUkVTVUxUKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGFjdGl2aXR5LnBlbmRpbmdSZXN1bHRzID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgYWN0aXZpdHkucGVuZGluZ1Jlc3VsdHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBIYXNoU2V0PFdlYWtSZWZlcmVuY2U8UGVuZGluZ0ludGVudFJlY29yZD4+KCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGFjdGl2aXR5LnBlbmRpbmdSZXN1bHRzLmFkZChyZWMucmVmKTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJlYy5jYW5jZWxlZCA9IHRydWU7CisgICAgICAgICAgICBtSW50ZW50U2VuZGVyUmVjb3Jkcy5yZW1vdmUoa2V5KTsKKyAgICAgICAgfQorICAgICAgICBpZiAobm9DcmVhdGUpIHsKICAgICAgICAgICAgIHJldHVybiByZWM7CiAgICAgICAgIH0KKyAgICAgICAgcmVjID0gbmV3IFBlbmRpbmdJbnRlbnRSZWNvcmQodGhpcywga2V5LCBjYWxsaW5nVWlkKTsKKyAgICAgICAgbUludGVudFNlbmRlclJlY29yZHMucHV0KGtleSwgcmVjLnJlZik7CisgICAgICAgIGlmICh0eXBlID09IElOVEVOVF9TRU5ERVJfQUNUSVZJVFlfUkVTVUxUKSB7CisgICAgICAgICAgICBpZiAoYWN0aXZpdHkucGVuZGluZ1Jlc3VsdHMgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGFjdGl2aXR5LnBlbmRpbmdSZXN1bHRzCisgICAgICAgICAgICAgICAgICAgICAgICA9IG5ldyBIYXNoU2V0PFdlYWtSZWZlcmVuY2U8UGVuZGluZ0ludGVudFJlY29yZD4+KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBhY3Rpdml0eS5wZW5kaW5nUmVzdWx0cy5hZGQocmVjLnJlZik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlYzsKICAgICB9CiAKICAgICBwdWJsaWMgdm9pZCBjYW5jZWxJbnRlbnRTZW5kZXIoSUludGVudFNlbmRlciBzZW5kZXIpIHsKQEAgLTYxNjEsNyArMzc4OSw3IEBACiAgICAgICAgIHN5bmNocm9uaXplZCh0aGlzKSB7CiAgICAgICAgICAgICBQZW5kaW5nSW50ZW50UmVjb3JkIHJlYyA9IChQZW5kaW5nSW50ZW50UmVjb3JkKXNlbmRlcjsKICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgaW50IHVpZCA9IEFjdGl2aXR5VGhyZWFkLmdldFBhY2thZ2VNYW5hZ2VyKCkKKyAgICAgICAgICAgICAgICBpbnQgdWlkID0gQXBwR2xvYmFscy5nZXRQYWNrYWdlTWFuYWdlcigpCiAgICAgICAgICAgICAgICAgICAgICAgICAuZ2V0UGFja2FnZVVpZChyZWMua2V5LnBhY2thZ2VOYW1lKTsKICAgICAgICAgICAgICAgICBpZiAodWlkICE9IEJpbmRlci5nZXRDYWxsaW5nVWlkKCkpIHsKICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIG1zZyA9ICJQZXJtaXNzaW9uIERlbmlhbDogY2FuY2VsSW50ZW50U2VuZGVyKCkgZnJvbSBwaWQ9IgpAQCAtNjMyMCw3ICszOTQ4LDcgQEAKICAgICAgICAgICAgIHJldHVybiBQYWNrYWdlTWFuYWdlci5QRVJNSVNTSU9OX0dSQU5URUQ7CiAgICAgICAgIH0KICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHJldHVybiBBY3Rpdml0eVRocmVhZC5nZXRQYWNrYWdlTWFuYWdlcigpCisgICAgICAgICAgICByZXR1cm4gQXBwR2xvYmFscy5nZXRQYWNrYWdlTWFuYWdlcigpCiAgICAgICAgICAgICAgICAgICAgIC5jaGVja1VpZFBlcm1pc3Npb24ocGVybWlzc2lvbiwgdWlkKTsKICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKICAgICAgICAgICAgIC8vIFNob3VsZCBuZXZlciBoYXBwZW4sIGJ1dCBpZiBpdCBkb2VzLi4uIGRlbnkhCkBAIC02NDI4LDggKzQwNTYsOCBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgcHJpdmF0ZSB2b2lkIGdyYW50VXJpUGVybWlzc2lvbkxvY2tlZChpbnQgY2FsbGluZ1VpZCwKLSAgICAgICAgICAgIFN0cmluZyB0YXJnZXRQa2csIFVyaSB1cmksIGludCBtb2RlRmxhZ3MsIEhpc3RvcnlSZWNvcmQgYWN0aXZpdHkpIHsKKyAgICB2b2lkIGdyYW50VXJpUGVybWlzc2lvbkxvY2tlZChpbnQgY2FsbGluZ1VpZCwKKyAgICAgICAgICAgIFN0cmluZyB0YXJnZXRQa2csIFVyaSB1cmksIGludCBtb2RlRmxhZ3MsIEFjdGl2aXR5UmVjb3JkIGFjdGl2aXR5KSB7CiAgICAgICAgIG1vZGVGbGFncyAmPSAoSW50ZW50LkZMQUdfR1JBTlRfUkVBRF9VUklfUEVSTUlTU0lPTgogICAgICAgICAgICAgICAgIHwgSW50ZW50LkZMQUdfR1JBTlRfV1JJVEVfVVJJX1BFUk1JU1NJT04pOwogICAgICAgICBpZiAobW9kZUZsYWdzID09IDApIHsKQEAgLTY0MzksNyArNDA2Nyw3IEBACiAgICAgICAgIGlmIChERUJVR19VUklfUEVSTUlTU0lPTikgU2xvZy52KFRBRywgCiAgICAgICAgICAgICAgICAgIlJlcXVlc3RlZCBncmFudCAiICsgdGFyZ2V0UGtnICsgIiBwZXJtaXNzaW9uIHRvICIgKyB1cmkpOwogICAgICAgICAKLSAgICAgICAgZmluYWwgSVBhY2thZ2VNYW5hZ2VyIHBtID0gQWN0aXZpdHlUaHJlYWQuZ2V0UGFja2FnZU1hbmFnZXIoKTsKKyAgICAgICAgZmluYWwgSVBhY2thZ2VNYW5hZ2VyIHBtID0gQXBwR2xvYmFscy5nZXRQYWNrYWdlTWFuYWdlcigpOwogCiAgICAgICAgIC8vIElmIHRoaXMgaXMgbm90IGEgY29udGVudDogdXJpLCB3ZSBjYW4ndCBkbyBhbnl0aGluZyB3aXRoIGl0LgogICAgICAgICBpZiAoIUNvbnRlbnRSZXNvbHZlci5TQ0hFTUVfQ09OVEVOVC5lcXVhbHModXJpLmdldFNjaGVtZSgpKSkgewpAQCAtNjQ1MCw4ICs0MDc4LDcgQEAKIAogICAgICAgICBTdHJpbmcgbmFtZSA9IHVyaS5nZXRBdXRob3JpdHkoKTsKICAgICAgICAgUHJvdmlkZXJJbmZvIHBpID0gbnVsbDsKLSAgICAgICAgQ29udGVudFByb3ZpZGVyUmVjb3JkIGNwcgotICAgICAgICAgICAgICAgID0gKENvbnRlbnRQcm92aWRlclJlY29yZCltUHJvdmlkZXJzQnlOYW1lLmdldChuYW1lKTsKKyAgICAgICAgQ29udGVudFByb3ZpZGVyUmVjb3JkIGNwciA9IG1Qcm92aWRlcnNCeU5hbWUuZ2V0KG5hbWUpOwogICAgICAgICBpZiAoY3ByICE9IG51bGwpIHsKICAgICAgICAgICAgIHBpID0gY3ByLmluZm87CiAgICAgICAgIH0gZWxzZSB7CkBAIC02NTU4LDggKzQxODUsOCBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgcHJpdmF0ZSB2b2lkIGdyYW50VXJpUGVybWlzc2lvbkZyb21JbnRlbnRMb2NrZWQoaW50IGNhbGxpbmdVaWQsCi0gICAgICAgICAgICBTdHJpbmcgdGFyZ2V0UGtnLCBJbnRlbnQgaW50ZW50LCBIaXN0b3J5UmVjb3JkIGFjdGl2aXR5KSB7CisgICAgdm9pZCBncmFudFVyaVBlcm1pc3Npb25Gcm9tSW50ZW50TG9ja2VkKGludCBjYWxsaW5nVWlkLAorICAgICAgICAgICAgU3RyaW5nIHRhcmdldFBrZywgSW50ZW50IGludGVudCwgQWN0aXZpdHlSZWNvcmQgYWN0aXZpdHkpIHsKICAgICAgICAgaWYgKGludGVudCA9PSBudWxsKSB7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTY1OTQsNyArNDIyMSw3IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBwcml2YXRlIHZvaWQgcmVtb3ZlVXJpUGVybWlzc2lvbklmTmVlZGVkTG9ja2VkKFVyaVBlcm1pc3Npb24gcGVybSkgeworICAgIHZvaWQgcmVtb3ZlVXJpUGVybWlzc2lvbklmTmVlZGVkTG9ja2VkKFVyaVBlcm1pc3Npb24gcGVybSkgewogICAgICAgICBpZiAoKHBlcm0ubW9kZUZsYWdzJihJbnRlbnQuRkxBR19HUkFOVF9SRUFEX1VSSV9QRVJNSVNTSU9OCiAgICAgICAgICAgICAgICAgfEludGVudC5GTEFHX0dSQU5UX1dSSVRFX1VSSV9QRVJNSVNTSU9OKSkgPT0gMCkgewogICAgICAgICAgICAgSGFzaE1hcDxVcmksIFVyaVBlcm1pc3Npb24+IHBlcm1zCkBAIC02NjEwLDI5ICs0MjM3LDYgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIHByaXZhdGUgdm9pZCByZW1vdmVBY3Rpdml0eVVyaVBlcm1pc3Npb25zTG9ja2VkKEhpc3RvcnlSZWNvcmQgYWN0aXZpdHkpIHsKLSAgICAgICAgaWYgKGFjdGl2aXR5LnJlYWRVcmlQZXJtaXNzaW9ucyAhPSBudWxsKSB7Ci0gICAgICAgICAgICBmb3IgKFVyaVBlcm1pc3Npb24gcGVybSA6IGFjdGl2aXR5LnJlYWRVcmlQZXJtaXNzaW9ucykgewotICAgICAgICAgICAgICAgIHBlcm0ucmVhZEFjdGl2aXRpZXMucmVtb3ZlKGFjdGl2aXR5KTsKLSAgICAgICAgICAgICAgICBpZiAocGVybS5yZWFkQWN0aXZpdGllcy5zaXplKCkgPT0gMCAmJiAocGVybS5nbG9iYWxNb2RlRmxhZ3MKLSAgICAgICAgICAgICAgICAgICAgICAgICZJbnRlbnQuRkxBR19HUkFOVF9SRUFEX1VSSV9QRVJNSVNTSU9OKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIHBlcm0ubW9kZUZsYWdzICY9IH5JbnRlbnQuRkxBR19HUkFOVF9SRUFEX1VSSV9QRVJNSVNTSU9OOwotICAgICAgICAgICAgICAgICAgICByZW1vdmVVcmlQZXJtaXNzaW9uSWZOZWVkZWRMb2NrZWQocGVybSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGlmIChhY3Rpdml0eS53cml0ZVVyaVBlcm1pc3Npb25zICE9IG51bGwpIHsKLSAgICAgICAgICAgIGZvciAoVXJpUGVybWlzc2lvbiBwZXJtIDogYWN0aXZpdHkud3JpdGVVcmlQZXJtaXNzaW9ucykgewotICAgICAgICAgICAgICAgIHBlcm0ud3JpdGVBY3Rpdml0aWVzLnJlbW92ZShhY3Rpdml0eSk7Ci0gICAgICAgICAgICAgICAgaWYgKHBlcm0ud3JpdGVBY3Rpdml0aWVzLnNpemUoKSA9PSAwICYmIChwZXJtLmdsb2JhbE1vZGVGbGFncwotICAgICAgICAgICAgICAgICAgICAgICAgJkludGVudC5GTEFHX0dSQU5UX1dSSVRFX1VSSV9QRVJNSVNTSU9OKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIHBlcm0ubW9kZUZsYWdzICY9IH5JbnRlbnQuRkxBR19HUkFOVF9XUklURV9VUklfUEVSTUlTU0lPTjsKLSAgICAgICAgICAgICAgICAgICAgcmVtb3ZlVXJpUGVybWlzc2lvbklmTmVlZGVkTG9ja2VkKHBlcm0pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQogICAgIHByaXZhdGUgdm9pZCByZXZva2VVcmlQZXJtaXNzaW9uTG9ja2VkKGludCBjYWxsaW5nVWlkLCBVcmkgdXJpLAogICAgICAgICAgICAgaW50IG1vZGVGbGFncykgewogICAgICAgICBtb2RlRmxhZ3MgJj0gKEludGVudC5GTEFHX0dSQU5UX1JFQURfVVJJX1BFUk1JU1NJT04KQEAgLTY2NDQsMTIgKzQyNDgsMTEgQEAKICAgICAgICAgaWYgKERFQlVHX1VSSV9QRVJNSVNTSU9OKSBTbG9nLnYoVEFHLCAKICAgICAgICAgICAgICAgICAiUmV2b2tpbmcgYWxsIGdyYW50ZWQgcGVybWlzc2lvbnMgdG8gIiArIHVyaSk7CiAgICAgICAgIAotICAgICAgICBmaW5hbCBJUGFja2FnZU1hbmFnZXIgcG0gPSBBY3Rpdml0eVRocmVhZC5nZXRQYWNrYWdlTWFuYWdlcigpOworICAgICAgICBmaW5hbCBJUGFja2FnZU1hbmFnZXIgcG0gPSBBcHBHbG9iYWxzLmdldFBhY2thZ2VNYW5hZ2VyKCk7CiAKICAgICAgICAgZmluYWwgU3RyaW5nIGF1dGhvcml0eSA9IHVyaS5nZXRBdXRob3JpdHkoKTsKICAgICAgICAgUHJvdmlkZXJJbmZvIHBpID0gbnVsbDsKLSAgICAgICAgQ29udGVudFByb3ZpZGVyUmVjb3JkIGNwcgotICAgICAgICAgICAgICAgID0gKENvbnRlbnRQcm92aWRlclJlY29yZCltUHJvdmlkZXJzQnlOYW1lLmdldChhdXRob3JpdHkpOworICAgICAgICBDb250ZW50UHJvdmlkZXJSZWNvcmQgY3ByID0gbVByb3ZpZGVyc0J5TmFtZS5nZXQoYXV0aG9yaXR5KTsKICAgICAgICAgaWYgKGNwciAhPSBudWxsKSB7CiAgICAgICAgICAgICBwaSA9IGNwci5pbmZvOwogICAgICAgICB9IGVsc2UgewpAQCAtNjczOSwxMiArNDM0MiwxMSBAQAogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgZmluYWwgSVBhY2thZ2VNYW5hZ2VyIHBtID0gQWN0aXZpdHlUaHJlYWQuZ2V0UGFja2FnZU1hbmFnZXIoKTsKKyAgICAgICAgICAgIGZpbmFsIElQYWNrYWdlTWFuYWdlciBwbSA9IEFwcEdsb2JhbHMuZ2V0UGFja2FnZU1hbmFnZXIoKTsKIAogICAgICAgICAgICAgZmluYWwgU3RyaW5nIGF1dGhvcml0eSA9IHVyaS5nZXRBdXRob3JpdHkoKTsKICAgICAgICAgICAgIFByb3ZpZGVySW5mbyBwaSA9IG51bGw7Ci0gICAgICAgICAgICBDb250ZW50UHJvdmlkZXJSZWNvcmQgY3ByCi0gICAgICAgICAgICAgICAgICAgID0gKENvbnRlbnRQcm92aWRlclJlY29yZCltUHJvdmlkZXJzQnlOYW1lLmdldChhdXRob3JpdHkpOworICAgICAgICAgICAgQ29udGVudFByb3ZpZGVyUmVjb3JkIGNwciA9IG1Qcm92aWRlcnNCeU5hbWUuZ2V0KGF1dGhvcml0eSk7CiAgICAgICAgICAgICBpZiAoY3ByICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICBwaSA9IGNwci5pbmZvOwogICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTY3OTQsNyArNDM5Niw3IEBACiAKICAgICAgICAgUGVuZGluZ1RodW1ibmFpbHNSZWNvcmQgcGVuZGluZyA9IG51bGw7CiAgICAgICAgIElBcHBsaWNhdGlvblRocmVhZCB0b3BUaHVtYm5haWwgPSBudWxsOwotICAgICAgICBIaXN0b3J5UmVjb3JkIHRvcFJlY29yZCA9IG51bGw7CisgICAgICAgIEFjdGl2aXR5UmVjb3JkIHRvcFJlY29yZCA9IG51bGw7CiAKICAgICAgICAgc3luY2hyb25pemVkKHRoaXMpIHsKICAgICAgICAgICAgIGlmIChsb2NhbExPR1YpIFNsb2cudigKQEAgLTY4MTksMTggKzQ0MjEsMTggQEAKICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgU2VjdXJpdHlFeGNlcHRpb24obXNnKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaW50IHBvcyA9IG1IaXN0b3J5LnNpemUoKS0xOwotICAgICAgICAgICAgSGlzdG9yeVJlY29yZCBuZXh0ID0KLSAgICAgICAgICAgICAgICBwb3MgPj0gMCA/IChIaXN0b3J5UmVjb3JkKW1IaXN0b3J5LmdldChwb3MpIDogbnVsbDsKLSAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgdG9wID0gbnVsbDsKKyAgICAgICAgICAgIGludCBwb3MgPSBtTWFpblN0YWNrLm1IaXN0b3J5LnNpemUoKS0xOworICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgbmV4dCA9CisgICAgICAgICAgICAgICAgcG9zID49IDAgPyAoQWN0aXZpdHlSZWNvcmQpbU1haW5TdGFjay5tSGlzdG9yeS5nZXQocG9zKSA6IG51bGw7CisgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCB0b3AgPSBudWxsOwogICAgICAgICAgICAgQ2hhclNlcXVlbmNlIHRvcERlc2NyaXB0aW9uID0gbnVsbDsKICAgICAgICAgICAgIFRhc2tSZWNvcmQgY3VyVGFzayA9IG51bGw7CiAgICAgICAgICAgICBpbnQgbnVtQWN0aXZpdGllcyA9IDA7CiAgICAgICAgICAgICBpbnQgbnVtUnVubmluZyA9IDA7CiAgICAgICAgICAgICB3aGlsZSAocG9zID49IDAgJiYgbWF4TnVtID4gMCkgewotICAgICAgICAgICAgICAgIGZpbmFsIEhpc3RvcnlSZWNvcmQgciA9IG5leHQ7CisgICAgICAgICAgICAgICAgZmluYWwgQWN0aXZpdHlSZWNvcmQgciA9IG5leHQ7CiAgICAgICAgICAgICAgICAgcG9zLS07Ci0gICAgICAgICAgICAgICAgbmV4dCA9IHBvcyA+PSAwID8gKEhpc3RvcnlSZWNvcmQpbUhpc3RvcnkuZ2V0KHBvcykgOiBudWxsOworICAgICAgICAgICAgICAgIG5leHQgPSBwb3MgPj0gMCA/IChBY3Rpdml0eVJlY29yZCltTWFpblN0YWNrLm1IaXN0b3J5LmdldChwb3MpIDogbnVsbDsKIAogICAgICAgICAgICAgICAgIC8vIEluaXRpYWxpemUgc3RhdGUgZm9yIG5leHQgdGFzayBpZiBuZWVkZWQuCiAgICAgICAgICAgICAgICAgaWYgKHRvcCA9PSBudWxsIHx8CkBAIC02OTMyLDcgKzQ1MzQsNyBAQAogICAgICAgICAgICAgZW5mb3JjZUNhbGxpbmdQZXJtaXNzaW9uKGFuZHJvaWQuTWFuaWZlc3QucGVybWlzc2lvbi5HRVRfVEFTS1MsCiAgICAgICAgICAgICAgICAgICAgICJnZXRSZWNlbnRUYXNrcygpIik7CiAKLSAgICAgICAgICAgIElQYWNrYWdlTWFuYWdlciBwbSA9IEFjdGl2aXR5VGhyZWFkLmdldFBhY2thZ2VNYW5hZ2VyKCk7CisgICAgICAgICAgICBJUGFja2FnZU1hbmFnZXIgcG0gPSBBcHBHbG9iYWxzLmdldFBhY2thZ2VNYW5hZ2VyKCk7CiAgICAgICAgICAgICAKICAgICAgICAgICAgIGZpbmFsIGludCBOID0gbVJlY2VudFRhc2tzLnNpemUoKTsKICAgICAgICAgICAgIEFycmF5TGlzdDxBY3Rpdml0eU1hbmFnZXIuUmVjZW50VGFza0luZm8+IHJlcwpAQCAtNjk3OSwxMiArNDU4MSwxMiBAQAogCiAgICAgcHJpdmF0ZSBmaW5hbCBpbnQgZmluZEFmZmluaXR5VGFza1RvcExvY2tlZChpbnQgc3RhcnRJbmRleCwgU3RyaW5nIGFmZmluaXR5KSB7CiAgICAgICAgIGludCBqOwotICAgICAgICBUYXNrUmVjb3JkIHN0YXJ0VGFzayA9ICgoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQoc3RhcnRJbmRleCkpLnRhc2s7IAorICAgICAgICBUYXNrUmVjb3JkIHN0YXJ0VGFzayA9ICgoQWN0aXZpdHlSZWNvcmQpbU1haW5TdGFjay5tSGlzdG9yeS5nZXQoc3RhcnRJbmRleCkpLnRhc2s7IAogICAgICAgICBUYXNrUmVjb3JkIGp0ID0gc3RhcnRUYXNrOwogICAgICAgICAKICAgICAgICAgLy8gRmlyc3QgbG9vayBiYWNrd2FyZHMKICAgICAgICAgZm9yIChqPXN0YXJ0SW5kZXgtMTsgaj49MDsgai0tKSB7Ci0gICAgICAgICAgICBIaXN0b3J5UmVjb3JkIHIgPSAoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQoaik7CisgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gKEFjdGl2aXR5UmVjb3JkKW1NYWluU3RhY2subUhpc3RvcnkuZ2V0KGopOwogICAgICAgICAgICAgaWYgKHIudGFzayAhPSBqdCkgewogICAgICAgICAgICAgICAgIGp0ID0gci50YXNrOwogICAgICAgICAgICAgICAgIGlmIChhZmZpbml0eS5lcXVhbHMoanQuYWZmaW5pdHkpKSB7CkBAIC02OTk0LDEwICs0NTk2LDEwIEBACiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIC8vIE5vdyBsb29rIGZvcndhcmRzCi0gICAgICAgIGZpbmFsIGludCBOID0gbUhpc3Rvcnkuc2l6ZSgpOworICAgICAgICBmaW5hbCBpbnQgTiA9IG1NYWluU3RhY2subUhpc3Rvcnkuc2l6ZSgpOwogICAgICAgICBqdCA9IHN0YXJ0VGFzazsKICAgICAgICAgZm9yIChqPXN0YXJ0SW5kZXgrMTsgajxOOyBqKyspIHsKLSAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgciA9IChIaXN0b3J5UmVjb3JkKW1IaXN0b3J5LmdldChqKTsKKyAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSAoQWN0aXZpdHlSZWNvcmQpbU1haW5TdGFjay5tSGlzdG9yeS5nZXQoaik7CiAgICAgICAgICAgICBpZiAoci50YXNrICE9IGp0KSB7CiAgICAgICAgICAgICAgICAgaWYgKGFmZmluaXR5LmVxdWFscyhqdC5hZmZpbml0eSkpIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGo7CkBAIC03MDA3LDcgKzQ2MDksNyBAQAogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICAvLyBNaWdodCBpdCBiZSBhdCB0aGUgdG9wPwotICAgICAgICBpZiAoYWZmaW5pdHkuZXF1YWxzKCgoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQoTi0xKSkudGFzay5hZmZpbml0eSkpIHsKKyAgICAgICAgaWYgKGFmZmluaXR5LmVxdWFscygoKEFjdGl2aXR5UmVjb3JkKW1NYWluU3RhY2subUhpc3RvcnkuZ2V0KE4tMSkpLnRhc2suYWZmaW5pdHkpKSB7CiAgICAgICAgICAgICByZXR1cm4gTi0xOwogICAgICAgICB9CiAgICAgICAgIApAQCAtNzAxNSwyOTMgKzQ2MTcsNiBAQAogICAgIH0KICAgICAKICAgICAvKioKLSAgICAgKiBQZXJmb3JtIGEgcmVzZXQgb2YgdGhlIGdpdmVuIHRhc2ssIGlmIG5lZWRlZCBhcyBwYXJ0IG9mIGxhdW5jaGluZyBpdC4KLSAgICAgKiBSZXR1cm5zIHRoZSBuZXcgSGlzdG9yeVJlY29yZCBhdCB0aGUgdG9wIG9mIHRoZSB0YXNrLgotICAgICAqLwotICAgIHByaXZhdGUgZmluYWwgSGlzdG9yeVJlY29yZCByZXNldFRhc2tJZk5lZWRlZExvY2tlZChIaXN0b3J5UmVjb3JkIHRhc2tUb3AsCi0gICAgICAgICAgICBIaXN0b3J5UmVjb3JkIG5ld0FjdGl2aXR5KSB7Ci0gICAgICAgIGJvb2xlYW4gZm9yY2VSZXNldCA9IChuZXdBY3Rpdml0eS5pbmZvLmZsYWdzCi0gICAgICAgICAgICAgICAgJkFjdGl2aXR5SW5mby5GTEFHX0NMRUFSX1RBU0tfT05fTEFVTkNIKSAhPSAwOwotICAgICAgICBpZiAodGFza1RvcC50YXNrLmdldEluYWN0aXZlRHVyYXRpb24oKSA+IEFDVElWSVRZX0lOQUNUSVZFX1JFU0VUX1RJTUUpIHsKLSAgICAgICAgICAgIGlmICgobmV3QWN0aXZpdHkuaW5mby5mbGFncwotICAgICAgICAgICAgICAgICAgICAmQWN0aXZpdHlJbmZvLkZMQUdfQUxXQVlTX1JFVEFJTl9UQVNLX1NUQVRFKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgZm9yY2VSZXNldCA9IHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGZpbmFsIFRhc2tSZWNvcmQgdGFzayA9IHRhc2tUb3AudGFzazsKLSAgICAgICAgCi0gICAgICAgIC8vIFdlIGFyZSBnb2luZyB0byBtb3ZlIHRocm91Z2ggdGhlIGhpc3RvcnkgbGlzdCBzbyB0aGF0IHdlIGNhbiBsb29rCi0gICAgICAgIC8vIGF0IGVhY2ggYWN0aXZpdHkgJ3RhcmdldCcgd2l0aCAnYmVsb3cnIGVpdGhlciB0aGUgaW50ZXJlc3RpbmcKLSAgICAgICAgLy8gYWN0aXZpdHkgaW1tZWRpYXRlbHkgYmVsb3cgaXQgaW4gdGhlIHN0YWNrIG9yIG51bGwuCi0gICAgICAgIEhpc3RvcnlSZWNvcmQgdGFyZ2V0ID0gbnVsbDsKLSAgICAgICAgaW50IHRhcmdldEkgPSAwOwotICAgICAgICBpbnQgdGFza1RvcEkgPSAtMTsKLSAgICAgICAgaW50IHJlcGx5Q2hhaW5FbmQgPSAtMTsKLSAgICAgICAgaW50IGxhc3RSZXBhcmVudFBvcyA9IC0xOwotICAgICAgICBmb3IgKGludCBpPW1IaXN0b3J5LnNpemUoKS0xOyBpPj0tMTsgaS0tKSB7Ci0gICAgICAgICAgICBIaXN0b3J5UmVjb3JkIGJlbG93ID0gaSA+PSAwID8gKEhpc3RvcnlSZWNvcmQpbUhpc3RvcnkuZ2V0KGkpIDogbnVsbDsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKGJlbG93ICE9IG51bGwgJiYgYmVsb3cuZmluaXNoaW5nKSB7Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAodGFyZ2V0ID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICB0YXJnZXQgPSBiZWxvdzsKLSAgICAgICAgICAgICAgICB0YXJnZXRJID0gaTsKLSAgICAgICAgICAgICAgICAvLyBJZiB3ZSB3ZXJlIGluIHRoZSBtaWRkbGUgb2YgYSByZXBseSBjaGFpbiBiZWZvcmUgdGhpcwotICAgICAgICAgICAgICAgIC8vIHRhc2ssIGl0IGRvZXNuJ3QgYXBwZWFyIGxpa2UgdGhlIHJvb3Qgb2YgdGhlIGNoYWluIHdhbnRzCi0gICAgICAgICAgICAgICAgLy8gYW55dGhpbmcgaW50ZXJlc3RpbmcsIHNvIGRyb3AgaXQuCi0gICAgICAgICAgICAgICAgcmVwbHlDaGFpbkVuZCA9IC0xOwotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgICAgIGZpbmFsIGludCBmbGFncyA9IHRhcmdldC5pbmZvLmZsYWdzOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBmaW5hbCBib29sZWFuIGZpbmlzaE9uVGFza0xhdW5jaCA9Ci0gICAgICAgICAgICAgICAgKGZsYWdzJkFjdGl2aXR5SW5mby5GTEFHX0ZJTklTSF9PTl9UQVNLX0xBVU5DSCkgIT0gMDsKLSAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gYWxsb3dUYXNrUmVwYXJlbnRpbmcgPQotICAgICAgICAgICAgICAgIChmbGFncyZBY3Rpdml0eUluZm8uRkxBR19BTExPV19UQVNLX1JFUEFSRU5USU5HKSAhPSAwOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBpZiAodGFyZ2V0LnRhc2sgPT0gdGFzaykgewotICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBpbnNpZGUgb2YgdGhlIHRhc2sgYmVpbmcgcmVzZXQuLi4gIHdlJ2xsIGVpdGhlcgotICAgICAgICAgICAgICAgIC8vIGZpbmlzaCB0aGlzIGFjdGl2aXR5LCBwdXNoIGl0IG91dCBmb3IgYW5vdGhlciB0YXNrLAotICAgICAgICAgICAgICAgIC8vIG9yIGxlYXZlIGl0IGFzLWlzLiAgV2Ugb25seSBkbyB0aGlzCi0gICAgICAgICAgICAgICAgLy8gZm9yIGFjdGl2aXRpZXMgdGhhdCBhcmUgbm90IHRoZSByb290IG9mIHRoZSB0YXNrIChzaW5jZQotICAgICAgICAgICAgICAgIC8vIGlmIHdlIGZpbmlzaCB0aGUgcm9vdCwgd2UgbWF5IG5vIGxvbmdlciBoYXZlIHRoZSB0YXNrISkuCi0gICAgICAgICAgICAgICAgaWYgKHRhc2tUb3BJIDwgMCkgewotICAgICAgICAgICAgICAgICAgICB0YXNrVG9wSSA9IHRhcmdldEk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChiZWxvdyAhPSBudWxsICYmIGJlbG93LnRhc2sgPT0gdGFzaykgewotICAgICAgICAgICAgICAgICAgICBmaW5hbCBib29sZWFuIGNsZWFyV2hlblRhc2tSZXNldCA9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhcmdldC5pbnRlbnQuZ2V0RmxhZ3MoKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkludGVudC5GTEFHX0FDVElWSVRZX0NMRUFSX1dIRU5fVEFTS19SRVNFVCkgIT0gMDsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFmaW5pc2hPblRhc2tMYXVuY2ggJiYgIWNsZWFyV2hlblRhc2tSZXNldCAmJiB0YXJnZXQucmVzdWx0VG8gIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBhY3Rpdml0eSBpcyBzZW5kaW5nIGEgcmVwbHkgdG8gYSBwcmV2aW91cwotICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWN0aXZpdHksIHdlIGNhbid0IGRvIGFueXRoaW5nIHdpdGggaXQgbm93IHVudGlsCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSByZWFjaCB0aGUgc3RhcnQgb2YgdGhlIHJlcGx5IGNoYWluLgotICAgICAgICAgICAgICAgICAgICAgICAgLy8gWFhYIG5vdGUgdGhhdCB3ZSBhcmUgYXNzdW1pbmcgdGhlIHJlc3VsdCBpcyBhbHdheXMKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIHRoZSBwcmV2aW91cyBhY3Rpdml0eSwgd2hpY2ggaXMgYWxtb3N0IGFsd2F5cwotICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGNhc2UgYnV0IHdlIHJlYWxseSBzaG91bGRuJ3QgY291bnQgb24uCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVwbHlDaGFpbkVuZCA8IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBseUNoYWluRW5kID0gdGFyZ2V0STsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghZmluaXNoT25UYXNrTGF1bmNoICYmICFjbGVhcldoZW5UYXNrUmVzZXQgJiYgYWxsb3dUYXNrUmVwYXJlbnRpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiB0YXJnZXQudGFza0FmZmluaXR5ICE9IG51bGwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAhdGFyZ2V0LnRhc2tBZmZpbml0eS5lcXVhbHModGFzay5hZmZpbml0eSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgYWN0aXZpdHkgaGFzIGFuIGFmZmluaXR5IGZvciBhbm90aGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyB0YXNrLCB0aGVuIHdlIG5lZWQgdG8gbW92ZSBpdCBvdXQgb2YgaGVyZS4gIFdlIHdpbGwKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1vdmUgaXQgYXMgZmFyIG91dCBvZiB0aGUgd2F5IGFzIHBvc3NpYmxlLCB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJvdHRvbSBvZiB0aGUgYWN0aXZpdHkgc3RhY2suICBUaGlzIGFsc28ga2VlcHMgaXQKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlY3RseSBvcmRlcmVkIHdpdGggYW55IGFjdGl2aXRpZXMgd2UgcHJldmlvdXNseQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gbW92ZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICBIaXN0b3J5UmVjb3JkIHAgPSAoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQoMCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGFyZ2V0LnRhc2tBZmZpbml0eSAhPSBudWxsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHRhcmdldC50YXNrQWZmaW5pdHkuZXF1YWxzKHAudGFzay5hZmZpbml0eSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgYWN0aXZpdHkgY3VycmVudGx5IGF0IHRoZSBib3R0b20gaGFzIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNhbWUgdGFzayBhZmZpbml0eSBhcyB0aGUgb25lIHdlIGFyZSBtb3ZpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlbiBtZXJnZSBpdCBpbnRvIHRoZSBzYW1lIHRhc2suCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnRhc2sgPSBwLnRhc2s7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX1RBU0tTKSBTbG9nLnYoVEFHLCAiU3RhcnQgcHVzaGluZyBhY3Rpdml0eSAiICsgdGFyZ2V0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgb3V0IHRvIGJvdHRvbSB0YXNrICIgKyBwLnRhc2spOwotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtQ3VyVGFzaysrOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtQ3VyVGFzayA8PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1DdXJUYXNrID0gMTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnRhc2sgPSBuZXcgVGFza1JlY29yZChtQ3VyVGFzaywgdGFyZ2V0LmluZm8sIG51bGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGFyZ2V0LmluZm8uZmxhZ3MmQWN0aXZpdHlJbmZvLkZMQUdfQ0xFQVJfVEFTS19PTl9MQVVOQ0gpICE9IDApOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC50YXNrLmFmZmluaXR5SW50ZW50ID0gdGFyZ2V0LmludGVudDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfVEFTS1MpIFNsb2cudihUQUcsICJTdGFydCBwdXNoaW5nIGFjdGl2aXR5ICIgKyB0YXJnZXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiBvdXQgdG8gbmV3IHRhc2sgIiArIHRhcmdldC50YXNrKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyLnNldEFwcEdyb3VwSWQodGFyZ2V0LCB0YXNrLnRhc2tJZCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVwbHlDaGFpbkVuZCA8IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBseUNoYWluRW5kID0gdGFyZ2V0STsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBkc3RQb3MgPSAwOwotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgc3JjUG9zPXRhcmdldEk7IHNyY1Bvczw9cmVwbHlDaGFpbkVuZDsgc3JjUG9zKyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gKEhpc3RvcnlSZWNvcmQpbUhpc3RvcnkuZ2V0KHNyY1Bvcyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAuZmluaXNoaW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfVEFTS1MpIFNsb2cudihUQUcsICJQdXNoaW5nIG5leHQgYWN0aXZpdHkgIiArIHAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiBvdXQgdG8gdGFyZ2V0J3MgdGFzayAiICsgdGFyZ2V0LnRhc2spOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2subnVtQWN0aXZpdGllcy0tOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAudGFzayA9IHRhcmdldC50YXNrOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC50YXNrLm51bUFjdGl2aXRpZXMrKzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtSGlzdG9yeS5yZW1vdmUoc3JjUG9zKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtSGlzdG9yeS5hZGQoZHN0UG9zLCBwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtV2luZG93TWFuYWdlci5tb3ZlQXBwVG9rZW4oZHN0UG9zLCBwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtV2luZG93TWFuYWdlci5zZXRBcHBHcm91cElkKHAsIHAudGFzay50YXNrSWQpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdFBvcysrOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChWQUxJREFURV9UT0tFTlMpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVdpbmRvd01hbmFnZXIudmFsaWRhdGVBcHBUb2tlbnMobUhpc3RvcnkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpKys7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGFza1RvcCA9PSBwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFza1RvcCA9IGJlbG93OwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRhc2tUb3BJID09IHJlcGx5Q2hhaW5FbmQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrVG9wSSA9IC0xOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgcmVwbHlDaGFpbkVuZCA9IC0xOwotICAgICAgICAgICAgICAgICAgICAgICAgYWRkUmVjZW50VGFza0xvY2tlZCh0YXJnZXQudGFzayk7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZm9yY2VSZXNldCB8fCBmaW5pc2hPblRhc2tMYXVuY2gKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBjbGVhcldoZW5UYXNrUmVzZXQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBhY3Rpdml0eSBzaG91bGQganVzdCBiZSByZW1vdmVkIC0tIGVpdGhlcgotICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmVjYXVzZSBpdCBhc2tzIGZvciBpdCwgb3IgdGhlIHRhc2sgc2hvdWxkIGJlCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBjbGVhcmVkIC0tIHRoZW4gZmluaXNoIGl0IGFuZCBhbnl0aGluZyB0aGF0IGlzCi0gICAgICAgICAgICAgICAgICAgICAgICAvLyBwYXJ0IG9mIGl0cyByZXBseSBjaGFpbi4KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjbGVhcldoZW5UYXNrUmVzZXQpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJbiB0aGlzIGNhc2UsIHdlIHdhbnQgdG8gZmluaXNoIHRoaXMgYWN0aXZpdHkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBhbmQgZXZlcnl0aGluZyBhYm92ZSBpdCwgc28gYmUgc25lYWt5IGFuZCBwcmV0ZW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gbGlrZSB0aGVzZSBhcmUgYWxsIGluIHRoZSByZXBseSBjaGFpbi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBseUNoYWluRW5kID0gdGFyZ2V0SSsxOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlIChyZXBseUNoYWluRW5kIDwgbUhpc3Rvcnkuc2l6ZSgpICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKEhpc3RvcnlSZWNvcmQpbUhpc3RvcnkuZ2V0KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbHlDaGFpbkVuZCkpLnRhc2sgPT0gdGFzaykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBseUNoYWluRW5kKys7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGx5Q2hhaW5FbmQtLTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVwbHlDaGFpbkVuZCA8IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBseUNoYWluRW5kID0gdGFyZ2V0STsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgcCA9IG51bGw7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBzcmNQb3M9dGFyZ2V0STsgc3JjUG9zPD1yZXBseUNoYWluRW5kOyBzcmNQb3MrKykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSAoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQoc3JjUG9zKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocC5maW5pc2hpbmcpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaW5pc2hBY3Rpdml0eUxvY2tlZChwLCBzcmNQb3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eS5SRVNVTFRfQ0FOQ0VMRUQsIG51bGwsICJyZXNldCIpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGx5Q2hhaW5FbmQtLTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjUG9zLS07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRhc2tUb3AgPT0gcCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2tUb3AgPSBiZWxvdzsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YXNrVG9wSSA9PSByZXBseUNoYWluRW5kKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFza1RvcEkgPSAtMTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcGx5Q2hhaW5FbmQgPSAtMTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHdlIHdlcmUgaW4gdGhlIG1pZGRsZSBvZiBhIGNoYWluLCB3ZWxsIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWN0aXZpdHkgdGhhdCBzdGFydGVkIGl0IGFsbCBkb2Vzbid0IHdhbnQgYW55dGhpbmcKLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNwZWNpYWwsIHNvIGxlYXZlIGl0IGFsbCBhcy1pcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIHJlcGx5Q2hhaW5FbmQgPSAtMTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFJlYWNoZWQgdGhlIGJvdHRvbSBvZiB0aGUgdGFzayAtLSBhbnkgcmVwbHkgY2hhaW4KLSAgICAgICAgICAgICAgICAgICAgLy8gc2hvdWxkIGJlIGxlZnQgYXMtaXMuCi0gICAgICAgICAgICAgICAgICAgIHJlcGx5Q2hhaW5FbmQgPSAtMTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICB9IGVsc2UgaWYgKHRhcmdldC5yZXN1bHRUbyAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBhY3Rpdml0eSBpcyBzZW5kaW5nIGEgcmVwbHkgdG8gYSBwcmV2aW91cwotICAgICAgICAgICAgICAgIC8vIGFjdGl2aXR5LCB3ZSBjYW4ndCBkbyBhbnl0aGluZyB3aXRoIGl0IG5vdyB1bnRpbAotICAgICAgICAgICAgICAgIC8vIHdlIHJlYWNoIHRoZSBzdGFydCBvZiB0aGUgcmVwbHkgY2hhaW4uCi0gICAgICAgICAgICAgICAgLy8gWFhYIG5vdGUgdGhhdCB3ZSBhcmUgYXNzdW1pbmcgdGhlIHJlc3VsdCBpcyBhbHdheXMKLSAgICAgICAgICAgICAgICAvLyB0byB0aGUgcHJldmlvdXMgYWN0aXZpdHksIHdoaWNoIGlzIGFsbW9zdCBhbHdheXMKLSAgICAgICAgICAgICAgICAvLyB0aGUgY2FzZSBidXQgd2UgcmVhbGx5IHNob3VsZG4ndCBjb3VudCBvbi4KLSAgICAgICAgICAgICAgICBpZiAocmVwbHlDaGFpbkVuZCA8IDApIHsKLSAgICAgICAgICAgICAgICAgICAgcmVwbHlDaGFpbkVuZCA9IHRhcmdldEk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICB9IGVsc2UgaWYgKHRhc2tUb3BJID49IDAgJiYgYWxsb3dUYXNrUmVwYXJlbnRpbmcKLSAgICAgICAgICAgICAgICAgICAgJiYgdGFzay5hZmZpbml0eSAhPSBudWxsCi0gICAgICAgICAgICAgICAgICAgICYmIHRhc2suYWZmaW5pdHkuZXF1YWxzKHRhcmdldC50YXNrQWZmaW5pdHkpKSB7Ci0gICAgICAgICAgICAgICAgLy8gV2UgYXJlIGluc2lkZSBvZiBhbm90aGVyIHRhc2suLi4gIGlmIHRoaXMgYWN0aXZpdHkgaGFzCi0gICAgICAgICAgICAgICAgLy8gYW4gYWZmaW5pdHkgZm9yIG91ciB0YXNrLCB0aGVuIGVpdGhlciByZW1vdmUgaXQgaWYgd2UgYXJlCi0gICAgICAgICAgICAgICAgLy8gY2xlYXJpbmcgb3IgbW92ZSBpdCBvdmVyIHRvIG91ciB0YXNrLiAgTm90ZSB0aGF0Ci0gICAgICAgICAgICAgICAgLy8gd2UgY3VycmVudGx5IHB1bnQgb24gdGhlIGNhc2Ugd2hlcmUgd2UgYXJlIHJlc2V0dGluZyBhCi0gICAgICAgICAgICAgICAgLy8gdGFzayB0aGF0IGlzIG5vdCBhdCB0aGUgdG9wIGJ1dCB3aG8gaGFzIGFjdGl2aXRpZXMgYWJvdmUKLSAgICAgICAgICAgICAgICAvLyB3aXRoIGFuIGFmZmluaXR5IHRvIGl0Li4uICB0aGlzIGlzIHJlYWxseSBub3QgYSBub3JtYWwKLSAgICAgICAgICAgICAgICAvLyBjYXNlLCBhbmQgd2Ugd2lsbCBuZWVkIHRvIGxhdGVyIHB1bGwgdGhhdCB0YXNrIHRvIHRoZSBmcm9udAotICAgICAgICAgICAgICAgIC8vIGFuZCB1c3VhbGx5IGF0IHRoYXQgcG9pbnQgd2Ugd2lsbCBkbyB0aGUgcmVzZXQgYW5kIHBpY2sKLSAgICAgICAgICAgICAgICAvLyB1cCB0aG9zZSByZW1haW5pbmcgYWN0aXZpdGllcy4gIChUaGlzIG9ubHkgaGFwcGVucyBpZgotICAgICAgICAgICAgICAgIC8vIHNvbWVvbmUgc3RhcnRzIGFuIGFjdGl2aXR5IGluIGEgbmV3IHRhc2sgZnJvbSBhbiBhY3Rpdml0eQotICAgICAgICAgICAgICAgIC8vIGluIGEgdGFzayB0aGF0IGlzIG5vdCBjdXJyZW50bHkgb24gdG9wLikKLSAgICAgICAgICAgICAgICBpZiAoZm9yY2VSZXNldCB8fCBmaW5pc2hPblRhc2tMYXVuY2gpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlcGx5Q2hhaW5FbmQgPCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXBseUNoYWluRW5kID0gdGFyZ2V0STsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBIaXN0b3J5UmVjb3JkIHAgPSBudWxsOwotICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBzcmNQb3M9dGFyZ2V0STsgc3JjUG9zPD1yZXBseUNoYWluRW5kOyBzcmNQb3MrKykgewotICAgICAgICAgICAgICAgICAgICAgICAgcCA9IChIaXN0b3J5UmVjb3JkKW1IaXN0b3J5LmdldChzcmNQb3MpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAuZmluaXNoaW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmluaXNoQWN0aXZpdHlMb2NrZWQocCwgc3JjUG9zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eS5SRVNVTFRfQ0FOQ0VMRUQsIG51bGwsICJyZXNldCIpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFza1RvcEktLTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0UmVwYXJlbnRQb3MtLTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBseUNoYWluRW5kLS07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjUG9zLS07Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgcmVwbHlDaGFpbkVuZCA9IC0xOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZXBseUNoYWluRW5kIDwgMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgcmVwbHlDaGFpbkVuZCA9IHRhcmdldEk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgc3JjUG9zPXJlcGx5Q2hhaW5FbmQ7IHNyY1Bvcz49dGFyZ2V0STsgc3JjUG9zLS0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgcCA9IChIaXN0b3J5UmVjb3JkKW1IaXN0b3J5LmdldChzcmNQb3MpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAuZmluaXNoaW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAobGFzdFJlcGFyZW50UG9zIDwgMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RSZXBhcmVudFBvcyA9IHRhc2tUb3BJOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2tUb3AgPSBwOwotICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0UmVwYXJlbnRQb3MtLTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIG1IaXN0b3J5LnJlbW92ZShzcmNQb3MpOwotICAgICAgICAgICAgICAgICAgICAgICAgcC50YXNrLm51bUFjdGl2aXRpZXMtLTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHAudGFzayA9IHRhc2s7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtSGlzdG9yeS5hZGQobGFzdFJlcGFyZW50UG9zLCBwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19UQVNLUykgU2xvZy52KFRBRywgIlB1bGxpbmcgYWN0aXZpdHkgIiArIHAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiIGluIHRvIHJlc2V0dGluZyB0YXNrICIgKyB0YXNrKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHRhc2subnVtQWN0aXZpdGllcysrOwotICAgICAgICAgICAgICAgICAgICAgICAgbVdpbmRvd01hbmFnZXIubW92ZUFwcFRva2VuKGxhc3RSZXBhcmVudFBvcywgcCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtV2luZG93TWFuYWdlci5zZXRBcHBHcm91cElkKHAsIHAudGFzay50YXNrSWQpOwotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFZBTElEQVRFX1RPS0VOUykgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyLnZhbGlkYXRlQXBwVG9rZW5zKG1IaXN0b3J5KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICByZXBseUNoYWluRW5kID0gLTE7Ci0gICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgICAgICAvLyBOb3cgd2UndmUgbW92ZWQgaXQgaW4gdG8gcGxhY2UuLi4gIGJ1dCB3aGF0IGlmIHRoaXMgaXMKLSAgICAgICAgICAgICAgICAgICAgLy8gYSBzaW5nbGVUb3AgYWN0aXZpdHkgYW5kIHdlIGhhdmUgcHV0IGl0IG9uIHRvcCBvZiBhbm90aGVyCi0gICAgICAgICAgICAgICAgICAgIC8vIGluc3RhbmNlIG9mIHRoZSBzYW1lIGFjdGl2aXR5PyAgVGhlbiB3ZSBkcm9wIHRoZSBpbnN0YW5jZQotICAgICAgICAgICAgICAgICAgICAvLyBiZWxvdyBzbyBpdCByZW1haW5zIHNpbmdsZVRvcC4KLSAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldC5pbmZvLmxhdW5jaE1vZGUgPT0gQWN0aXZpdHlJbmZvLkxBVU5DSF9TSU5HTEVfVE9QKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBqPWxhc3RSZXBhcmVudFBvcy0xOyBqPj0wOyBqLS0pIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBIaXN0b3J5UmVjb3JkIHAgPSAoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQoaik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAuZmluaXNoaW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocC5pbnRlbnQuZ2V0Q29tcG9uZW50KCkuZXF1YWxzKHRhcmdldC5pbnRlbnQuZ2V0Q29tcG9uZW50KCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmaW5pc2hBY3Rpdml0eUxvY2tlZChwLCBqLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5LlJFU1VMVF9DQU5DRUxFRCwgbnVsbCwgInJlcGxhY2UiKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFza1RvcEktLTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RSZXBhcmVudFBvcy0tOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgICAgICB0YXJnZXQgPSBiZWxvdzsKLSAgICAgICAgICAgIHRhcmdldEkgPSBpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gdGFza1RvcDsKLSAgICB9Ci0gICAgCi0gICAgLyoqCiAgICAgICogVE9ETzogQWRkIG1Db250cm9sbGVyIGhvb2sKICAgICAgKi8KICAgICBwdWJsaWMgdm9pZCBtb3ZlVGFza1RvRnJvbnQoaW50IHRhc2spIHsKQEAgLTczMTksMTQgKzQ2MzQsMTQgQEAKICAgICAgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8TjsgaSsrKSB7CiAgICAgICAgICAgICAgICAgICAgIFRhc2tSZWNvcmQgdHIgPSBtUmVjZW50VGFza3MuZ2V0KGkpOwogICAgICAgICAgICAgICAgICAgICBpZiAodHIudGFza0lkID09IHRhc2spIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1vdmVUYXNrVG9Gcm9udExvY2tlZCh0ciwgbnVsbCk7CisgICAgICAgICAgICAgICAgICAgICAgICBtTWFpblN0YWNrLm1vdmVUYXNrVG9Gcm9udExvY2tlZCh0ciwgbnVsbCk7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZm9yIChpbnQgaT1tSGlzdG9yeS5zaXplKCktMTsgaT49MDsgaS0tKSB7Ci0gICAgICAgICAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgaHIgPSAoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQoaSk7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaT1tTWFpblN0YWNrLm1IaXN0b3J5LnNpemUoKS0xOyBpPj0wOyBpLS0pIHsKKyAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgaHIgPSAoQWN0aXZpdHlSZWNvcmQpbU1haW5TdGFjay5tSGlzdG9yeS5nZXQoaSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChoci50YXNrLnRhc2tJZCA9PSB0YXNrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtb3ZlVGFza1RvRnJvbnRMb2NrZWQoaHIudGFzaywgbnVsbCk7CisgICAgICAgICAgICAgICAgICAgICAgICBtTWFpblN0YWNrLm1vdmVUYXNrVG9Gcm9udExvY2tlZChoci50YXNrLCBudWxsKTsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KQEAgLTczMzYsODQgKzQ2NTEsMjAgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIHByaXZhdGUgZmluYWwgdm9pZCBtb3ZlVGFza1RvRnJvbnRMb2NrZWQoVGFza1JlY29yZCB0ciwgSGlzdG9yeVJlY29yZCByZWFzb24pIHsKLSAgICAgICAgaWYgKERFQlVHX1NXSVRDSCkgU2xvZy52KFRBRywgIm1vdmVUYXNrVG9Gcm9udDogIiArIHRyKTsKLQotICAgICAgICBmaW5hbCBpbnQgdGFzayA9IHRyLnRhc2tJZDsKLSAgICAgICAgaW50IHRvcCA9IG1IaXN0b3J5LnNpemUoKS0xOwotCi0gICAgICAgIGlmICh0b3AgPCAwIHx8ICgoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQodG9wKSkudGFzay50YXNrSWQgPT0gdGFzaykgewotICAgICAgICAgICAgLy8gbm90aGluZyB0byBkbyEKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIEFycmF5TGlzdCBtb3ZlZCA9IG5ldyBBcnJheUxpc3QoKTsKLQotICAgICAgICAvLyBBcHBseWluZyB0aGUgYWZmaW5pdGllcyBtYXkgaGF2ZSByZW1vdmVkIGVudHJpZXMgZnJvbSB0aGUgaGlzdG9yeSwKLSAgICAgICAgLy8gc28gZ2V0IHRoZSBzaXplIGFnYWluLgotICAgICAgICB0b3AgPSBtSGlzdG9yeS5zaXplKCktMTsKLSAgICAgICAgaW50IHBvcyA9IHRvcDsKLQotICAgICAgICAvLyBTaGlmdCBhbGwgYWN0aXZpdGllcyB3aXRoIHRoaXMgdGFzayB1cCB0byB0aGUgdG9wCi0gICAgICAgIC8vIG9mIHRoZSBzdGFjaywga2VlcGluZyB0aGVtIGluIHRoZSBzYW1lIGludGVybmFsIG9yZGVyLgotICAgICAgICB3aGlsZSAocG9zID49IDApIHsKLSAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgciA9IChIaXN0b3J5UmVjb3JkKW1IaXN0b3J5LmdldChwb3MpOwotICAgICAgICAgICAgaWYgKGxvY2FsTE9HVikgU2xvZy52KAotICAgICAgICAgICAgICAgIFRBRywgIkF0ICIgKyBwb3MgKyAiIGNrcCAiICsgci50YXNrICsgIjogIiArIHIpOwotICAgICAgICAgICAgYm9vbGVhbiBmaXJzdCA9IHRydWU7Ci0gICAgICAgICAgICBpZiAoci50YXNrLnRhc2tJZCA9PSB0YXNrKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGxvY2FsTE9HVikgU2xvZy52KFRBRywgIlJlbW92aW5nIGFuZCBhZGRpbmcgYXQgIiArIHRvcCk7Ci0gICAgICAgICAgICAgICAgbUhpc3RvcnkucmVtb3ZlKHBvcyk7Ci0gICAgICAgICAgICAgICAgbUhpc3RvcnkuYWRkKHRvcCwgcik7Ci0gICAgICAgICAgICAgICAgbW92ZWQuYWRkKDAsIHIpOwotICAgICAgICAgICAgICAgIHRvcC0tOwotICAgICAgICAgICAgICAgIGlmIChmaXJzdCkgewotICAgICAgICAgICAgICAgICAgICBhZGRSZWNlbnRUYXNrTG9ja2VkKHIudGFzayk7Ci0gICAgICAgICAgICAgICAgICAgIGZpcnN0ID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgcG9zLS07Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoREVCVUdfVFJBTlNJVElPTikgU2xvZy52KFRBRywKLSAgICAgICAgICAgICAgICAiUHJlcGFyZSB0byBmcm9udCB0cmFuc2l0aW9uOiB0YXNrPSIgKyB0cik7Ci0gICAgICAgIGlmIChyZWFzb24gIT0gbnVsbCAmJgotICAgICAgICAgICAgICAgIChyZWFzb24uaW50ZW50LmdldEZsYWdzKCkmSW50ZW50LkZMQUdfQUNUSVZJVFlfTk9fQU5JTUFUSU9OKSAhPSAwKSB7Ci0gICAgICAgICAgICBtV2luZG93TWFuYWdlci5wcmVwYXJlQXBwVHJhbnNpdGlvbihXaW5kb3dNYW5hZ2VyUG9saWN5LlRSQU5TSVRfTk9ORSk7Ci0gICAgICAgICAgICBIaXN0b3J5UmVjb3JkIHIgPSB0b3BSdW5uaW5nQWN0aXZpdHlMb2NrZWQobnVsbCk7Ci0gICAgICAgICAgICBpZiAociAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgbU5vQW5pbUFjdGl2aXRpZXMuYWRkKHIpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbVdpbmRvd01hbmFnZXIucHJlcGFyZUFwcFRyYW5zaXRpb24oV2luZG93TWFuYWdlclBvbGljeS5UUkFOU0lUX1RBU0tfVE9fRlJPTlQpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBtV2luZG93TWFuYWdlci5tb3ZlQXBwVG9rZW5zVG9Ub3AobW92ZWQpOwotICAgICAgICBpZiAoVkFMSURBVEVfVE9LRU5TKSB7Ci0gICAgICAgICAgICBtV2luZG93TWFuYWdlci52YWxpZGF0ZUFwcFRva2VucyhtSGlzdG9yeSk7Ci0gICAgICAgIH0KLQotICAgICAgICBmaW5pc2hUYXNrTW92ZUxvY2tlZCh0YXNrKTsKLSAgICAgICAgRXZlbnRMb2cud3JpdGVFdmVudChFdmVudExvZ1RhZ3MuQU1fVEFTS19UT19GUk9OVCwgdGFzayk7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBmaW5hbCB2b2lkIGZpbmlzaFRhc2tNb3ZlTG9ja2VkKGludCB0YXNrKSB7Ci0gICAgICAgIHJlc3VtZVRvcEFjdGl2aXR5TG9ja2VkKG51bGwpOwotICAgIH0KLQogICAgIHB1YmxpYyB2b2lkIG1vdmVUYXNrVG9CYWNrKGludCB0YXNrKSB7CiAgICAgICAgIGVuZm9yY2VDYWxsaW5nUGVybWlzc2lvbihhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24uUkVPUkRFUl9UQVNLUywKICAgICAgICAgICAgICAgICAibW92ZVRhc2tUb0JhY2soKSIpOwogCiAgICAgICAgIHN5bmNocm9uaXplZCh0aGlzKSB7Ci0gICAgICAgICAgICBpZiAobVJlc3VtZWRBY3Rpdml0eSAhPSBudWxsICYmIG1SZXN1bWVkQWN0aXZpdHkudGFzay50YXNrSWQgPT0gdGFzaykgeworICAgICAgICAgICAgaWYgKG1NYWluU3RhY2subVJlc3VtZWRBY3Rpdml0eSAhPSBudWxsCisgICAgICAgICAgICAgICAgICAgICYmIG1NYWluU3RhY2subVJlc3VtZWRBY3Rpdml0eS50YXNrLnRhc2tJZCA9PSB0YXNrKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFjaGVja0FwcFN3aXRjaEFsbG93ZWRMb2NrZWQoQmluZGVyLmdldENhbGxpbmdQaWQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgIEJpbmRlci5nZXRDYWxsaW5nVWlkKCksICJUYXNrIHRvIGJhY2siKSkgewogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZmluYWwgbG9uZyBvcmlnSWQgPSBCaW5kZXIuY2xlYXJDYWxsaW5nSWRlbnRpdHkoKTsKLSAgICAgICAgICAgIG1vdmVUYXNrVG9CYWNrTG9ja2VkKHRhc2ssIG51bGwpOworICAgICAgICAgICAgbU1haW5TdGFjay5tb3ZlVGFza1RvQmFja0xvY2tlZCh0YXNrLCBudWxsKTsKICAgICAgICAgICAgIEJpbmRlci5yZXN0b3JlQ2FsbGluZ0lkZW50aXR5KG9yaWdJZCk7CiAgICAgICAgIH0KICAgICB9CkBAIC03NDMyLDkzICs0NjgzLDEzIEBACiAgICAgICAgICAgICBmaW5hbCBsb25nIG9yaWdJZCA9IEJpbmRlci5jbGVhckNhbGxpbmdJZGVudGl0eSgpOwogICAgICAgICAgICAgaW50IHRhc2tJZCA9IGdldFRhc2tGb3JBY3Rpdml0eUxvY2tlZCh0b2tlbiwgIW5vblJvb3QpOwogICAgICAgICAgICAgaWYgKHRhc2tJZCA+PSAwKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG1vdmVUYXNrVG9CYWNrTG9ja2VkKHRhc2tJZCwgbnVsbCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1NYWluU3RhY2subW92ZVRhc2tUb0JhY2tMb2NrZWQodGFza0lkLCBudWxsKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIEJpbmRlci5yZXN0b3JlQ2FsbGluZ0lkZW50aXR5KG9yaWdJZCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIC8qKgotICAgICAqIFdvcmtlciBtZXRob2QgZm9yIHJlYXJyYW5naW5nIGhpc3Rvcnkgc3RhY2suICBJbXBsZW1lbnRzIHRoZSBmdW5jdGlvbiBvZiBtb3ZpbmcgYWxsIAotICAgICAqIGFjdGl2aXRpZXMgZm9yIGEgc3BlY2lmaWMgdGFzayAoZ2F0aGVyaW5nIHRoZW0gaWYgZGlzam9pbnQpIGludG8gYSBzaW5nbGUgZ3JvdXAgYXQgdGhlIAotICAgICAqIGJvdHRvbSBvZiB0aGUgc3RhY2suCi0gICAgICogCi0gICAgICogSWYgYSB3YXRjaGVyIGlzIGluc3RhbGxlZCwgdGhlIGFjdGlvbiBpcyBwcmVmbGlnaHRlZCBhbmQgdGhlIHdhdGNoZXIgaGFzIGFuIG9wcG9ydHVuaXR5Ci0gICAgICogdG8gcHJlbWVwdGl2ZWx5IGNhbmNlbCB0aGUgbW92ZS4KLSAgICAgKiAKLSAgICAgKiBAcGFyYW0gdGFzayBUaGUgdGFza0lkIHRvIGNvbGxlY3QgYW5kIG1vdmUgdG8gdGhlIGJvdHRvbS4KLSAgICAgKiBAcmV0dXJuIFJldHVybnMgdHJ1ZSBpZiB0aGUgbW92ZSBjb21wbGV0ZWQsIGZhbHNlIGlmIG5vdC4KLSAgICAgKi8KLSAgICBwcml2YXRlIGZpbmFsIGJvb2xlYW4gbW92ZVRhc2tUb0JhY2tMb2NrZWQoaW50IHRhc2ssIEhpc3RvcnlSZWNvcmQgcmVhc29uKSB7Ci0gICAgICAgIFNsb2cuaShUQUcsICJtb3ZlVGFza1RvQmFjazogIiArIHRhc2spOwotICAgICAgICAKLSAgICAgICAgLy8gSWYgd2UgaGF2ZSBhIHdhdGNoZXIsIHByZWZsaWdodCB0aGUgbW92ZSBiZWZvcmUgY29tbWl0dGluZyB0byBpdC4gIEZpcnN0IGNoZWNrCi0gICAgICAgIC8vIGZvciAqb3RoZXIqIGF2YWlsYWJsZSB0YXNrcywgYnV0IGlmIG5vbmUgYXJlIGF2YWlsYWJsZSwgdGhlbiB0cnkgYWdhaW4gYWxsb3dpbmcgdGhlCi0gICAgICAgIC8vIGN1cnJlbnQgdGFzayB0byBiZSBzZWxlY3RlZC4KLSAgICAgICAgaWYgKG1Db250cm9sbGVyICE9IG51bGwpIHsKLSAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgbmV4dCA9IHRvcFJ1bm5pbmdBY3Rpdml0eUxvY2tlZChudWxsLCB0YXNrKTsKLSAgICAgICAgICAgIGlmIChuZXh0ID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICBuZXh0ID0gdG9wUnVubmluZ0FjdGl2aXR5TG9ja2VkKG51bGwsIDApOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG5leHQgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIC8vIGFzayB3YXRjaGVyIGlmIHRoaXMgaXMgYWxsb3dlZAotICAgICAgICAgICAgICAgIGJvb2xlYW4gbW92ZU9LID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICBtb3ZlT0sgPSBtQ29udHJvbGxlci5hY3Rpdml0eVJlc3VtaW5nKG5leHQucGFja2FnZU5hbWUpOwotICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1Db250cm9sbGVyID0gbnVsbDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKCFtb3ZlT0spIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIEFycmF5TGlzdCBtb3ZlZCA9IG5ldyBBcnJheUxpc3QoKTsKLQotICAgICAgICBpZiAoREVCVUdfVFJBTlNJVElPTikgU2xvZy52KFRBRywKLSAgICAgICAgICAgICAgICAiUHJlcGFyZSB0byBiYWNrIHRyYW5zaXRpb246IHRhc2s9IiArIHRhc2spOwotICAgICAgICAKLSAgICAgICAgZmluYWwgaW50IE4gPSBtSGlzdG9yeS5zaXplKCk7Ci0gICAgICAgIGludCBib3R0b20gPSAwOwotICAgICAgICBpbnQgcG9zID0gMDsKLQotICAgICAgICAvLyBTaGlmdCBhbGwgYWN0aXZpdGllcyB3aXRoIHRoaXMgdGFzayBkb3duIHRvIHRoZSBib3R0b20KLSAgICAgICAgLy8gb2YgdGhlIHN0YWNrLCBrZWVwaW5nIHRoZW0gaW4gdGhlIHNhbWUgaW50ZXJuYWwgb3JkZXIuCi0gICAgICAgIHdoaWxlIChwb3MgPCBOKSB7Ci0gICAgICAgICAgICBIaXN0b3J5UmVjb3JkIHIgPSAoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQocG9zKTsKLSAgICAgICAgICAgIGlmIChsb2NhbExPR1YpIFNsb2cudigKLSAgICAgICAgICAgICAgICBUQUcsICJBdCAiICsgcG9zICsgIiBja3AgIiArIHIudGFzayArICI6ICIgKyByKTsKLSAgICAgICAgICAgIGlmIChyLnRhc2sudGFza0lkID09IHRhc2spIHsKLSAgICAgICAgICAgICAgICBpZiAobG9jYWxMT0dWKSBTbG9nLnYoVEFHLCAiUmVtb3ZpbmcgYW5kIGFkZGluZyBhdCAiICsgKE4tMSkpOwotICAgICAgICAgICAgICAgIG1IaXN0b3J5LnJlbW92ZShwb3MpOwotICAgICAgICAgICAgICAgIG1IaXN0b3J5LmFkZChib3R0b20sIHIpOwotICAgICAgICAgICAgICAgIG1vdmVkLmFkZChyKTsKLSAgICAgICAgICAgICAgICBib3R0b20rKzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHBvcysrOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKHJlYXNvbiAhPSBudWxsICYmCi0gICAgICAgICAgICAgICAgKHJlYXNvbi5pbnRlbnQuZ2V0RmxhZ3MoKSZJbnRlbnQuRkxBR19BQ1RJVklUWV9OT19BTklNQVRJT04pICE9IDApIHsKLSAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyLnByZXBhcmVBcHBUcmFuc2l0aW9uKFdpbmRvd01hbmFnZXJQb2xpY3kuVFJBTlNJVF9OT05FKTsKLSAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgciA9IHRvcFJ1bm5pbmdBY3Rpdml0eUxvY2tlZChudWxsKTsKLSAgICAgICAgICAgIGlmIChyICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBtTm9BbmltQWN0aXZpdGllcy5hZGQocik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtV2luZG93TWFuYWdlci5wcmVwYXJlQXBwVHJhbnNpdGlvbihXaW5kb3dNYW5hZ2VyUG9saWN5LlRSQU5TSVRfVEFTS19UT19CQUNLKTsKLSAgICAgICAgfQotICAgICAgICBtV2luZG93TWFuYWdlci5tb3ZlQXBwVG9rZW5zVG9Cb3R0b20obW92ZWQpOwotICAgICAgICBpZiAoVkFMSURBVEVfVE9LRU5TKSB7Ci0gICAgICAgICAgICBtV2luZG93TWFuYWdlci52YWxpZGF0ZUFwcFRva2VucyhtSGlzdG9yeSk7Ci0gICAgICAgIH0KLQotICAgICAgICBmaW5pc2hUYXNrTW92ZUxvY2tlZCh0YXNrKTsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCiAgICAgcHVibGljIHZvaWQgbW92ZVRhc2tCYWNrd2FyZHMoaW50IHRhc2spIHsKICAgICAgICAgZW5mb3JjZUNhbGxpbmdQZXJtaXNzaW9uKGFuZHJvaWQuTWFuaWZlc3QucGVybWlzc2lvbi5SRU9SREVSX1RBU0tTLAogICAgICAgICAgICAgICAgICJtb3ZlVGFza0JhY2t3YXJkcygpIik7CkBAIC03NTQ1LDEwICs0NzE2LDEwIEBACiAgICAgfQogCiAgICAgaW50IGdldFRhc2tGb3JBY3Rpdml0eUxvY2tlZChJQmluZGVyIHRva2VuLCBib29sZWFuIG9ubHlSb290KSB7Ci0gICAgICAgIGZpbmFsIGludCBOID0gbUhpc3Rvcnkuc2l6ZSgpOworICAgICAgICBmaW5hbCBpbnQgTiA9IG1NYWluU3RhY2subUhpc3Rvcnkuc2l6ZSgpOwogICAgICAgICBUYXNrUmVjb3JkIGxhc3RUYXNrID0gbnVsbDsKICAgICAgICAgZm9yIChpbnQgaT0wOyBpPE47IGkrKykgewotICAgICAgICAgICAgSGlzdG9yeVJlY29yZCByID0gKEhpc3RvcnlSZWNvcmQpbUhpc3RvcnkuZ2V0KGkpOworICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IChBY3Rpdml0eVJlY29yZCltTWFpblN0YWNrLm1IaXN0b3J5LmdldChpKTsKICAgICAgICAgICAgIGlmIChyID09IHRva2VuKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFvbmx5Um9vdCB8fCBsYXN0VGFzayAhPSByLnRhc2spIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHIudGFzay50YXNrSWQ7CkBAIC03NTYxLDg5ICs0NzMyLDE3IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICAvKioKLSAgICAgKiBSZXR1cm5zIHRoZSB0b3AgYWN0aXZpdHkgaW4gYW55IGV4aXN0aW5nIHRhc2sgbWF0Y2hpbmcgdGhlIGdpdmVuCi0gICAgICogSW50ZW50LiAgUmV0dXJucyBudWxsIGlmIG5vIHN1Y2ggdGFzayBpcyBmb3VuZC4KLSAgICAgKi8KLSAgICBwcml2YXRlIEhpc3RvcnlSZWNvcmQgZmluZFRhc2tMb2NrZWQoSW50ZW50IGludGVudCwgQWN0aXZpdHlJbmZvIGluZm8pIHsKLSAgICAgICAgQ29tcG9uZW50TmFtZSBjbHMgPSBpbnRlbnQuZ2V0Q29tcG9uZW50KCk7Ci0gICAgICAgIGlmIChpbmZvLnRhcmdldEFjdGl2aXR5ICE9IG51bGwpIHsKLSAgICAgICAgICAgIGNscyA9IG5ldyBDb21wb25lbnROYW1lKGluZm8ucGFja2FnZU5hbWUsIGluZm8udGFyZ2V0QWN0aXZpdHkpOwotICAgICAgICB9Ci0KLSAgICAgICAgVGFza1JlY29yZCBjcCA9IG51bGw7Ci0KLSAgICAgICAgZmluYWwgaW50IE4gPSBtSGlzdG9yeS5zaXplKCk7Ci0gICAgICAgIGZvciAoaW50IGk9KE4tMSk7IGk+PTA7IGktLSkgewotICAgICAgICAgICAgSGlzdG9yeVJlY29yZCByID0gKEhpc3RvcnlSZWNvcmQpbUhpc3RvcnkuZ2V0KGkpOwotICAgICAgICAgICAgaWYgKCFyLmZpbmlzaGluZyAmJiByLnRhc2sgIT0gY3AKLSAgICAgICAgICAgICAgICAgICAgJiYgci5sYXVuY2hNb2RlICE9IEFjdGl2aXR5SW5mby5MQVVOQ0hfU0lOR0xFX0lOU1RBTkNFKSB7Ci0gICAgICAgICAgICAgICAgY3AgPSByLnRhc2s7Ci0gICAgICAgICAgICAgICAgLy9TbG9nLmkoVEFHLCAiQ29tcGFyaW5nIGV4aXN0aW5nIGNscz0iICsgci50YXNrLmludGVudC5nZXRDb21wb25lbnQoKS5mbGF0dGVuVG9TaG9ydFN0cmluZygpCi0gICAgICAgICAgICAgICAgLy8gICAgICAgICsgIi9hZmY9IiArIHIudGFzay5hZmZpbml0eSArICIgdG8gbmV3IGNscz0iCi0gICAgICAgICAgICAgICAgLy8gICAgICAgICsgaW50ZW50LmdldENvbXBvbmVudCgpLmZsYXR0ZW5Ub1Nob3J0U3RyaW5nKCkgKyAiL2FmZj0iICsgdGFza0FmZmluaXR5KTsKLSAgICAgICAgICAgICAgICBpZiAoci50YXNrLmFmZmluaXR5ICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHIudGFzay5hZmZpbml0eS5lcXVhbHMoaW5mby50YXNrQWZmaW5pdHkpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAvL1Nsb2cuaShUQUcsICJGb3VuZCBtYXRjaGluZyBhZmZpbml0eSEiKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyLnRhc2suaW50ZW50ICE9IG51bGwKLSAgICAgICAgICAgICAgICAgICAgICAgICYmIHIudGFzay5pbnRlbnQuZ2V0Q29tcG9uZW50KCkuZXF1YWxzKGNscykpIHsKLSAgICAgICAgICAgICAgICAgICAgLy9TbG9nLmkoVEFHLCAiRm91bmQgbWF0Y2hpbmcgY2xhc3MhIik7Ci0gICAgICAgICAgICAgICAgICAgIC8vZHVtcCgpOwotICAgICAgICAgICAgICAgICAgICAvL1Nsb2cuaShUQUcsICJGb3IgSW50ZW50ICIgKyBpbnRlbnQgKyAiIGJyaW5naW5nIHRvIHRvcDogIiArIHIuaW50ZW50KTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHI7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyLnRhc2suYWZmaW5pdHlJbnRlbnQgIT0gbnVsbAotICAgICAgICAgICAgICAgICAgICAgICAgJiYgci50YXNrLmFmZmluaXR5SW50ZW50LmdldENvbXBvbmVudCgpLmVxdWFscyhjbHMpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vU2xvZy5pKFRBRywgIkZvdW5kIG1hdGNoaW5nIGNsYXNzISIpOwotICAgICAgICAgICAgICAgICAgICAvL2R1bXAoKTsKLSAgICAgICAgICAgICAgICAgICAgLy9TbG9nLmkoVEFHLCAiRm9yIEludGVudCAiICsgaW50ZW50ICsgIiBicmluZ2luZyB0byB0b3A6ICIgKyByLmludGVudCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiByOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBudWxsOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIFJldHVybnMgdGhlIGZpcnN0IGFjdGl2aXR5IChzdGFydGluZyBmcm9tIHRoZSB0b3Agb2YgdGhlIHN0YWNrKSB0aGF0Ci0gICAgICogaXMgdGhlIHNhbWUgYXMgdGhlIGdpdmVuIGFjdGl2aXR5LiAgUmV0dXJucyBudWxsIGlmIG5vIHN1Y2ggYWN0aXZpdHkKLSAgICAgKiBpcyBmb3VuZC4KLSAgICAgKi8KLSAgICBwcml2YXRlIEhpc3RvcnlSZWNvcmQgZmluZEFjdGl2aXR5TG9ja2VkKEludGVudCBpbnRlbnQsIEFjdGl2aXR5SW5mbyBpbmZvKSB7Ci0gICAgICAgIENvbXBvbmVudE5hbWUgY2xzID0gaW50ZW50LmdldENvbXBvbmVudCgpOwotICAgICAgICBpZiAoaW5mby50YXJnZXRBY3Rpdml0eSAhPSBudWxsKSB7Ci0gICAgICAgICAgICBjbHMgPSBuZXcgQ29tcG9uZW50TmFtZShpbmZvLnBhY2thZ2VOYW1lLCBpbmZvLnRhcmdldEFjdGl2aXR5KTsKLSAgICAgICAgfQotCi0gICAgICAgIGZpbmFsIGludCBOID0gbUhpc3Rvcnkuc2l6ZSgpOwotICAgICAgICBmb3IgKGludCBpPShOLTEpOyBpPj0wOyBpLS0pIHsKLSAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgciA9IChIaXN0b3J5UmVjb3JkKW1IaXN0b3J5LmdldChpKTsKLSAgICAgICAgICAgIGlmICghci5maW5pc2hpbmcpIHsKLSAgICAgICAgICAgICAgICBpZiAoci5pbnRlbnQuZ2V0Q29tcG9uZW50KCkuZXF1YWxzKGNscykpIHsKLSAgICAgICAgICAgICAgICAgICAgLy9TbG9nLmkoVEFHLCAiRm91bmQgbWF0Y2hpbmcgY2xhc3MhIik7Ci0gICAgICAgICAgICAgICAgICAgIC8vZHVtcCgpOwotICAgICAgICAgICAgICAgICAgICAvL1Nsb2cuaShUQUcsICJGb3IgSW50ZW50ICIgKyBpbnRlbnQgKyAiIGJyaW5naW5nIHRvIHRvcDogIiArIHIuaW50ZW50KTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfQotCiAgICAgcHVibGljIHZvaWQgZmluaXNoT3RoZXJJbnN0YW5jZXMoSUJpbmRlciB0b2tlbiwgQ29tcG9uZW50TmFtZSBjbGFzc05hbWUpIHsKICAgICAgICAgc3luY2hyb25pemVkKHRoaXMpIHsKICAgICAgICAgICAgIGZpbmFsIGxvbmcgb3JpZ0lkID0gQmluZGVyLmNsZWFyQ2FsbGluZ0lkZW50aXR5KCk7CiAKLSAgICAgICAgICAgIGludCBOID0gbUhpc3Rvcnkuc2l6ZSgpOworICAgICAgICAgICAgaW50IE4gPSBtTWFpblN0YWNrLm1IaXN0b3J5LnNpemUoKTsKICAgICAgICAgICAgIFRhc2tSZWNvcmQgbGFzdFRhc2sgPSBudWxsOwogICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPE47IGkrKykgewotICAgICAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgciA9IChIaXN0b3J5UmVjb3JkKW1IaXN0b3J5LmdldChpKTsKKyAgICAgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gKEFjdGl2aXR5UmVjb3JkKW1NYWluU3RhY2subUhpc3RvcnkuZ2V0KGkpOwogICAgICAgICAgICAgICAgIGlmIChyLnJlYWxBY3Rpdml0eS5lcXVhbHMoY2xhc3NOYW1lKQogICAgICAgICAgICAgICAgICAgICAgICAgJiYgciAhPSB0b2tlbiAmJiBsYXN0VGFzayAhPSByLnRhc2spIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGZpbmlzaEFjdGl2aXR5TG9ja2VkKHIsIGksIEFjdGl2aXR5LlJFU1VMVF9DQU5DRUxFRCwKKyAgICAgICAgICAgICAgICAgICAgaWYgKHIuc3RhY2suZmluaXNoQWN0aXZpdHlMb2NrZWQociwgaSwgQWN0aXZpdHkuUkVTVUxUX0NBTkNFTEVELAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsICJvdGhlcnMiKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgaS0tOwogICAgICAgICAgICAgICAgICAgICAgICAgTi0tOwpAQCAtNzY2OCw3ICs0NzY3LDcgQEAKICAgICAgICAgQmluZGVyLnJlc3RvcmVDYWxsaW5nSWRlbnRpdHkob3JpZ0lkKTsKICAgICB9CiAKLSAgICBmaW5hbCB2b2lkIHNlbmRQZW5kaW5nVGh1bWJuYWlsKEhpc3RvcnlSZWNvcmQgciwgSUJpbmRlciB0b2tlbiwKKyAgICBmaW5hbCB2b2lkIHNlbmRQZW5kaW5nVGh1bWJuYWlsKEFjdGl2aXR5UmVjb3JkIHIsIElCaW5kZXIgdG9rZW4sCiAgICAgICAgICAgICBCaXRtYXAgdGh1bWJuYWlsLCBDaGFyU2VxdWVuY2UgZGVzY3JpcHRpb24sIGJvb2xlYW4gYWx3YXlzKSB7CiAgICAgICAgIFRhc2tSZWNvcmQgdGFzayA9IG51bGw7CiAgICAgICAgIEFycmF5TGlzdCByZWNlaXZlcnMgPSBudWxsOwpAQCAtNzY3NywxMSArNDc3NiwxMSBAQAogCiAgICAgICAgIHN5bmNocm9uaXplZCh0aGlzKSB7CiAgICAgICAgICAgICBpZiAociA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgaW50IGluZGV4ID0gaW5kZXhPZlRva2VuTG9ja2VkKHRva2VuKTsKKyAgICAgICAgICAgICAgICBpbnQgaW5kZXggPSBtTWFpblN0YWNrLmluZGV4T2ZUb2tlbkxvY2tlZCh0b2tlbik7CiAgICAgICAgICAgICAgICAgaWYgKGluZGV4IDwgMCkgewogICAgICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHIgPSAoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQoaW5kZXgpOworICAgICAgICAgICAgICAgIHIgPSAoQWN0aXZpdHlSZWNvcmQpbU1haW5TdGFjay5tSGlzdG9yeS5nZXQoaW5kZXgpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHRodW1ibmFpbCA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgdGh1bWJuYWlsID0gci50aHVtYm5haWw7CkBAIC03NzQyLDcgKzQ4NDEsNyBAQAogICAgIHByaXZhdGUgZmluYWwgTGlzdCBnZW5lcmF0ZUFwcGxpY2F0aW9uUHJvdmlkZXJzTG9ja2VkKFByb2Nlc3NSZWNvcmQgYXBwKSB7CiAgICAgICAgIExpc3QgcHJvdmlkZXJzID0gbnVsbDsKICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHByb3ZpZGVycyA9IEFjdGl2aXR5VGhyZWFkLmdldFBhY2thZ2VNYW5hZ2VyKCkuCisgICAgICAgICAgICBwcm92aWRlcnMgPSBBcHBHbG9iYWxzLmdldFBhY2thZ2VNYW5hZ2VyKCkuCiAgICAgICAgICAgICAgICAgcXVlcnlDb250ZW50UHJvdmlkZXJzKGFwcC5wcm9jZXNzTmFtZSwgYXBwLmluZm8udWlkLAogICAgICAgICAgICAgICAgICAgICAgICAgU1RPQ0tfUE1fRkxBR1MgfCBQYWNrYWdlTWFuYWdlci5HRVRfVVJJX1BFUk1JU1NJT05fUEFUVEVSTlMpOwogICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZXgpIHsKQEAgLTc3NTIsOCArNDg1MSw3IEBACiAgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8TjsgaSsrKSB7CiAgICAgICAgICAgICAgICAgUHJvdmlkZXJJbmZvIGNwaSA9CiAgICAgICAgICAgICAgICAgICAgIChQcm92aWRlckluZm8pcHJvdmlkZXJzLmdldChpKTsKLSAgICAgICAgICAgICAgICBDb250ZW50UHJvdmlkZXJSZWNvcmQgY3ByID0KLSAgICAgICAgICAgICAgICAgICAgKENvbnRlbnRQcm92aWRlclJlY29yZCltUHJvdmlkZXJzQnlDbGFzcy5nZXQoY3BpLm5hbWUpOworICAgICAgICAgICAgICAgIENvbnRlbnRQcm92aWRlclJlY29yZCBjcHIgPSBtUHJvdmlkZXJzQnlDbGFzcy5nZXQoY3BpLm5hbWUpOwogICAgICAgICAgICAgICAgIGlmIChjcHIgPT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICBjcHIgPSBuZXcgQ29udGVudFByb3ZpZGVyUmVjb3JkKGNwaSwgYXBwLmluZm8pOwogICAgICAgICAgICAgICAgICAgICBtUHJvdmlkZXJzQnlDbGFzcy5wdXQoY3BpLm5hbWUsIGNwcik7CkBAIC03ODI4LDcgKzQ5MjYsNyBAQAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBGaXJzdCBjaGVjayBpZiB0aGlzIGNvbnRlbnQgcHJvdmlkZXIgaGFzIGJlZW4gcHVibGlzaGVkLi4uCi0gICAgICAgICAgICBjcHIgPSAoQ29udGVudFByb3ZpZGVyUmVjb3JkKW1Qcm92aWRlcnNCeU5hbWUuZ2V0KG5hbWUpOworICAgICAgICAgICAgY3ByID0gbVByb3ZpZGVyc0J5TmFtZS5nZXQobmFtZSk7CiAgICAgICAgICAgICBpZiAoY3ByICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICBjcGkgPSBjcHIuaW5mbzsKICAgICAgICAgICAgICAgICBpZiAoY2hlY2tDb250ZW50UHJvdmlkZXJQZXJtaXNzaW9uTG9ja2VkKGNwaSwgciwgLTEpICE9IG51bGwpIHsKQEAgLTc4NjYsOCArNDk2NCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICByLmNvblByb3ZpZGVycy5wdXQoY3ByLCBuZXcgSW50ZWdlcihjbnQuaW50VmFsdWUoKSsxKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgY3ByLmNsaWVudHMuYWRkKHIpOwotICAgICAgICAgICAgICAgICAgICBpZiAoY3ByLmFwcCAhPSBudWxsICYmIHIuc2V0QWRqID49IFZJU0lCTEVfQVBQX0FESikgewotICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIHZpc2libGUgYXBwIGFjY2Vzc2luZyB0aGUgcHJvdmlkZXIsCisgICAgICAgICAgICAgICAgICAgIGlmIChjcHIuYXBwICE9IG51bGwgJiYgci5zZXRBZGogPD0gUEVSQ0VQVElCTEVfQVBQX0FESikgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIHBlcmNlcHRpYmxlIGFwcCBhY2Nlc3NpbmcgdGhlIHByb3ZpZGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWFrZSBzdXJlIHRvIGNvdW50IGl0IGFzIGJlaW5nIGFjY2Vzc2VkIGFuZCB0aHVzCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBiYWNrIHVwIG9uIHRoZSBMUlUgbGlzdC4gIFRoaXMgaXMgZ29vZCBiZWNhdXNlCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb250ZW50IHByb3ZpZGVycyBhcmUgb2Z0ZW4gZXhwZW5zaXZlIHRvIHN0YXJ0LgpAQCAtNzg4NSw3ICs0OTgzLDcgQEAKIAogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICBjcGkgPSBBY3Rpdml0eVRocmVhZC5nZXRQYWNrYWdlTWFuYWdlcigpLgorICAgICAgICAgICAgICAgICAgICBjcGkgPSBBcHBHbG9iYWxzLmdldFBhY2thZ2VNYW5hZ2VyKCkuCiAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlQ29udGVudFByb3ZpZGVyKG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNUT0NLX1BNX0ZMQUdTIHwgUGFja2FnZU1hbmFnZXIuR0VUX1VSSV9QRVJNSVNTSU9OX1BBVFRFUk5TKTsKICAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZXgpIHsKQEAgLTc5MDksMTIgKzUwMDcsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQXR0ZW1wdCB0byBsYXVuY2ggY29udGVudCBwcm92aWRlciBiZWZvcmUgc3lzdGVtIHJlYWR5Iik7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGNwciA9IChDb250ZW50UHJvdmlkZXJSZWNvcmQpbVByb3ZpZGVyc0J5Q2xhc3MuZ2V0KGNwaS5uYW1lKTsKKyAgICAgICAgICAgICAgICBjcHIgPSBtUHJvdmlkZXJzQnlDbGFzcy5nZXQoY3BpLm5hbWUpOwogICAgICAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gZmlyc3RDbGFzcyA9IGNwciA9PSBudWxsOwogICAgICAgICAgICAgICAgIGlmIChmaXJzdENsYXNzKSB7CiAgICAgICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBBcHBsaWNhdGlvbkluZm8gYWkgPQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5VGhyZWFkLmdldFBhY2thZ2VNYW5hZ2VyKCkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXBwR2xvYmFscy5nZXRQYWNrYWdlTWFuYWdlcigpLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRBcHBsaWNhdGlvbkluZm8oCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3BpLmFwcGxpY2F0aW9uSW5mby5wYWNrYWdlTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTVE9DS19QTV9GTEFHUyk7CkBAIC04MDQzLDcgKzUxNDEsNyBAQAogICAgICAqLwogICAgIHB1YmxpYyB2b2lkIHJlbW92ZUNvbnRlbnRQcm92aWRlcihJQXBwbGljYXRpb25UaHJlYWQgY2FsbGVyLCBTdHJpbmcgbmFtZSkgewogICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKLSAgICAgICAgICAgIENvbnRlbnRQcm92aWRlclJlY29yZCBjcHIgPSAoQ29udGVudFByb3ZpZGVyUmVjb3JkKW1Qcm92aWRlcnNCeU5hbWUuZ2V0KG5hbWUpOworICAgICAgICAgICAgQ29udGVudFByb3ZpZGVyUmVjb3JkIGNwciA9IG1Qcm92aWRlcnNCeU5hbWUuZ2V0KG5hbWUpOwogICAgICAgICAgICAgaWYoY3ByID09IG51bGwpIHsKICAgICAgICAgICAgICAgICAvLyByZW1vdmUgZnJvbSBtUHJvdmlkZXJzQnlDbGFzcwogICAgICAgICAgICAgICAgIGlmIChERUJVR19QUk9WSURFUikgU2xvZy52KFRBRywgbmFtZSArCkBAIC04MDU3LDggKzUxNTUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIiB3aGVuIHJlbW92aW5nIGNvbnRlbnQgcHJvdmlkZXIgIiArIG5hbWUpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgLy91cGRhdGUgY29udGVudCBwcm92aWRlciByZWNvcmQgZW50cnkgaW5mbwotICAgICAgICAgICAgQ29udGVudFByb3ZpZGVyUmVjb3JkIGxvY2FsQ3ByID0gKENvbnRlbnRQcm92aWRlclJlY29yZCkKLSAgICAgICAgICAgICAgICAgICAgbVByb3ZpZGVyc0J5Q2xhc3MuZ2V0KGNwci5pbmZvLm5hbWUpOworICAgICAgICAgICAgQ29udGVudFByb3ZpZGVyUmVjb3JkIGxvY2FsQ3ByID0gbVByb3ZpZGVyc0J5Q2xhc3MuZ2V0KGNwci5pbmZvLm5hbWUpOwogICAgICAgICAgICAgaWYgKERFQlVHX1BST1ZJREVSKSBTbG9nLnYoVEFHLCAiUmVtb3ZpbmcgcHJvdmlkZXIgcmVxdWVzdGVkIGJ5ICIKICAgICAgICAgICAgICAgICAgICAgKyByLmluZm8ucHJvY2Vzc05hbWUgKyAiIGZyb20gcHJvY2VzcyAiCiAgICAgICAgICAgICAgICAgICAgICsgbG9jYWxDcHIuYXBwSW5mby5wcm9jZXNzTmFtZSk7CkBAIC04MDgyLDcgKzUxNzksNyBAQAogCiAgICAgcHJpdmF0ZSB2b2lkIHJlbW92ZUNvbnRlbnRQcm92aWRlckV4dGVybmFsKFN0cmluZyBuYW1lKSB7CiAgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgewotICAgICAgICAgICAgQ29udGVudFByb3ZpZGVyUmVjb3JkIGNwciA9IChDb250ZW50UHJvdmlkZXJSZWNvcmQpbVByb3ZpZGVyc0J5TmFtZS5nZXQobmFtZSk7CisgICAgICAgICAgICBDb250ZW50UHJvdmlkZXJSZWNvcmQgY3ByID0gbVByb3ZpZGVyc0J5TmFtZS5nZXQobmFtZSk7CiAgICAgICAgICAgICBpZihjcHIgPT0gbnVsbCkgewogICAgICAgICAgICAgICAgIC8vcmVtb3ZlIGZyb20gbVByb3ZpZGVyc0J5Q2xhc3MKICAgICAgICAgICAgICAgICBpZihsb2NhbExPR1YpIFNsb2cudihUQUcsIG5hbWUrIiBjb250ZW50IHByb3ZpZGVyIG5vdCBmb3VuZCBpbiBwcm92aWRlcnMgbGlzdCIpOwpAQCAtODA5MCw3ICs1MTg3LDcgQEAKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLy91cGRhdGUgY29udGVudCBwcm92aWRlciByZWNvcmQgZW50cnkgaW5mbwotICAgICAgICAgICAgQ29udGVudFByb3ZpZGVyUmVjb3JkIGxvY2FsQ3ByID0gKENvbnRlbnRQcm92aWRlclJlY29yZCkgbVByb3ZpZGVyc0J5Q2xhc3MuZ2V0KGNwci5pbmZvLm5hbWUpOworICAgICAgICAgICAgQ29udGVudFByb3ZpZGVyUmVjb3JkIGxvY2FsQ3ByID0gbVByb3ZpZGVyc0J5Q2xhc3MuZ2V0KGNwci5pbmZvLm5hbWUpOwogICAgICAgICAgICAgbG9jYWxDcHIuZXh0ZXJuYWxzLS07CiAgICAgICAgICAgICBpZiAobG9jYWxDcHIuZXh0ZXJuYWxzIDwgMCkgewogICAgICAgICAgICAgICAgIFNsb2cuZShUQUcsICJFeHRlcm5hbHMgPCAwIGZvciBjb250ZW50IHByb3ZpZGVyICIgKyBsb2NhbENwcik7CkBAIC04MTIyLDggKzUyMTksNyBAQAogICAgICAgICAgICAgICAgIGlmIChzcmMgPT0gbnVsbCB8fCBzcmMuaW5mbyA9PSBudWxsIHx8IHNyYy5wcm92aWRlciA9PSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBDb250ZW50UHJvdmlkZXJSZWNvcmQgZHN0ID0KLSAgICAgICAgICAgICAgICAgICAgKENvbnRlbnRQcm92aWRlclJlY29yZClyLnB1YlByb3ZpZGVycy5nZXQoc3JjLmluZm8ubmFtZSk7CisgICAgICAgICAgICAgICAgQ29udGVudFByb3ZpZGVyUmVjb3JkIGRzdCA9IHIucHViUHJvdmlkZXJzLmdldChzcmMuaW5mby5uYW1lKTsKICAgICAgICAgICAgICAgICBpZiAoZHN0ICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgbVByb3ZpZGVyc0J5Q2xhc3MucHV0KGRzdC5pbmZvLm5hbWUsIGRzdCk7CiAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBuYW1lc1tdID0gZHN0LmluZm8uYXV0aG9yaXR5LnNwbGl0KCI7Iik7CkBAIC04MjE2LDEyICs1MzEyLDEyIEBACiAgICAgICAgICAgICAgICAgInVuaGFuZGxlZEJhY2soKSIpOwogCiAgICAgICAgIHN5bmNocm9uaXplZCh0aGlzKSB7Ci0gICAgICAgICAgICBpbnQgY291bnQgPSBtSGlzdG9yeS5zaXplKCk7CisgICAgICAgICAgICBpbnQgY291bnQgPSBtTWFpblN0YWNrLm1IaXN0b3J5LnNpemUoKTsKICAgICAgICAgICAgIGlmIChERUJVR19TV0lUQ0gpIFNsb2cuZCgKICAgICAgICAgICAgICAgICBUQUcsICJQZXJmb3JtaW5nIHVuaGFuZGxlZEJhY2soKTogc3RhY2sgc2l6ZSA9ICIgKyBjb3VudCk7CiAgICAgICAgICAgICBpZiAoY291bnQgPiAxKSB7CiAgICAgICAgICAgICAgICAgZmluYWwgbG9uZyBvcmlnSWQgPSBCaW5kZXIuY2xlYXJDYWxsaW5nSWRlbnRpdHkoKTsKLSAgICAgICAgICAgICAgICBmaW5pc2hBY3Rpdml0eUxvY2tlZCgoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQoY291bnQtMSksCisgICAgICAgICAgICAgICAgbU1haW5TdGFjay5maW5pc2hBY3Rpdml0eUxvY2tlZCgoQWN0aXZpdHlSZWNvcmQpbU1haW5TdGFjay5tSGlzdG9yeS5nZXQoY291bnQtMSksCiAgICAgICAgICAgICAgICAgICAgICAgICBjb3VudC0xLCBBY3Rpdml0eS5SRVNVTFRfQ0FOQ0VMRUQsIG51bGwsICJ1bmhhbmRsZWQtYmFjayIpOwogICAgICAgICAgICAgICAgIEJpbmRlci5yZXN0b3JlQ2FsbGluZ0lkZW50aXR5KG9yaWdJZCk7CiAgICAgICAgICAgICB9CkBAIC04MjY0LDggKzUzNjAsOCBAQAogICAgICAgICAgICAgbVNsZWVwaW5nID0gdHJ1ZTsKICAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyLnNldEV2ZW50RGlzcGF0Y2hpbmcoZmFsc2UpOwogCi0gICAgICAgICAgICBpZiAobVJlc3VtZWRBY3Rpdml0eSAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgcGF1c2VJZlNsZWVwaW5nTG9ja2VkKCk7CisgICAgICAgICAgICBpZiAobU1haW5TdGFjay5tUmVzdW1lZEFjdGl2aXR5ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBtTWFpblN0YWNrLnBhdXNlSWZTbGVlcGluZ0xvY2tlZCgpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiZ29pbmdUb1NsZWVwIHdpdGggbm8gcmVzdW1lZCBhY3Rpdml0eSEiKTsKICAgICAgICAgICAgIH0KQEAgLTgyODUsMTAgKzUzODEsMTEgQEAKICAgICAgICAgICAgIG1TaHV0dGluZ0Rvd24gPSB0cnVlOwogICAgICAgICAgICAgbVdpbmRvd01hbmFnZXIuc2V0RXZlbnREaXNwYXRjaGluZyhmYWxzZSk7CiAKLSAgICAgICAgICAgIGlmIChtUmVzdW1lZEFjdGl2aXR5ICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBwYXVzZUlmU2xlZXBpbmdMb2NrZWQoKTsKKyAgICAgICAgICAgIGlmIChtTWFpblN0YWNrLm1SZXN1bWVkQWN0aXZpdHkgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIG1NYWluU3RhY2sucGF1c2VJZlNsZWVwaW5nTG9ja2VkKCk7CiAgICAgICAgICAgICAgICAgZmluYWwgbG9uZyBlbmRUaW1lID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCkgKyB0aW1lb3V0OwotICAgICAgICAgICAgICAgIHdoaWxlIChtUmVzdW1lZEFjdGl2aXR5ICE9IG51bGwgfHwgbVBhdXNpbmdBY3Rpdml0eSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgd2hpbGUgKG1NYWluU3RhY2subVJlc3VtZWRBY3Rpdml0eSAhPSBudWxsCisgICAgICAgICAgICAgICAgICAgICAgICB8fCBtTWFpblN0YWNrLm1QYXVzaW5nQWN0aXZpdHkgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICBsb25nIGRlbGF5ID0gZW5kVGltZSAtIFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOwogICAgICAgICAgICAgICAgICAgICBpZiAoZGVsYXkgPD0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIkFjdGl2aXR5IG1hbmFnZXIgc2h1dGRvd24gdGltZWQgb3V0Iik7CkBAIC04MzA5LDM1ICs1NDA2LDE0IEBACiAgICAgICAgIHJldHVybiB0aW1lZG91dDsKICAgICB9CiAgICAgCi0gICAgdm9pZCBwYXVzZUlmU2xlZXBpbmdMb2NrZWQoKSB7Ci0gICAgICAgIGlmIChtU2xlZXBpbmcgfHwgbVNodXR0aW5nRG93bikgewotICAgICAgICAgICAgaWYgKCFtR29pbmdUb1NsZWVwLmlzSGVsZCgpKSB7Ci0gICAgICAgICAgICAgICAgbUdvaW5nVG9TbGVlcC5hY3F1aXJlKCk7Ci0gICAgICAgICAgICAgICAgaWYgKG1MYXVuY2hpbmdBY3Rpdml0eS5pc0hlbGQoKSkgewotICAgICAgICAgICAgICAgICAgICBtTGF1bmNoaW5nQWN0aXZpdHkucmVsZWFzZSgpOwotICAgICAgICAgICAgICAgICAgICBtSGFuZGxlci5yZW1vdmVNZXNzYWdlcyhMQVVOQ0hfVElNRU9VVF9NU0cpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgLy8gSWYgd2UgYXJlIG5vdCBjdXJyZW50bHkgcGF1c2luZyBhbiBhY3Rpdml0eSwgZ2V0IHRoZSBjdXJyZW50Ci0gICAgICAgICAgICAvLyBvbmUgdG8gcGF1c2UuICBJZiB3ZSBhcmUgcGF1c2luZyBvbmUsIHdlIHdpbGwganVzdCBsZXQgdGhhdCBzdHVmZgotICAgICAgICAgICAgLy8gcnVuIGFuZCByZWxlYXNlIHRoZSB3YWtlIGxvY2sgd2hlbiBhbGwgZG9uZS4KLSAgICAgICAgICAgIGlmIChtUGF1c2luZ0FjdGl2aXR5ID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICBpZiAoREVCVUdfUEFVU0UpIFNsb2cudihUQUcsICJTbGVlcCBuZWVkcyB0byBwYXVzZS4uLiIpOwotICAgICAgICAgICAgICAgIGlmIChERUJVR19VU0VSX0xFQVZJTkcpIFNsb2cudihUQUcsICJTbGVlcCA9PiBwYXVzZSB3aXRoIHVzZXJMZWF2aW5nPWZhbHNlIik7Ci0gICAgICAgICAgICAgICAgc3RhcnRQYXVzaW5nTG9ja2VkKGZhbHNlLCB0cnVlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICAKICAgICBwdWJsaWMgdm9pZCB3YWtpbmdVcCgpIHsKICAgICAgICAgc3luY2hyb25pemVkKHRoaXMpIHsKLSAgICAgICAgICAgIGlmIChtR29pbmdUb1NsZWVwLmlzSGVsZCgpKSB7Ci0gICAgICAgICAgICAgICAgbUdvaW5nVG9TbGVlcC5yZWxlYXNlKCk7CisgICAgICAgICAgICBpZiAobU1haW5TdGFjay5tR29pbmdUb1NsZWVwLmlzSGVsZCgpKSB7CisgICAgICAgICAgICAgICAgbU1haW5TdGFjay5tR29pbmdUb1NsZWVwLnJlbGVhc2UoKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1XaW5kb3dNYW5hZ2VyLnNldEV2ZW50RGlzcGF0Y2hpbmcodHJ1ZSk7CiAgICAgICAgICAgICBtU2xlZXBpbmcgPSBmYWxzZTsKLSAgICAgICAgICAgIHJlc3VtZVRvcEFjdGl2aXR5TG9ja2VkKG51bGwpOworICAgICAgICAgICAgbU1haW5TdGFjay5yZXN1bWVUb3BBY3Rpdml0eUxvY2tlZChudWxsKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtODQ2NSwxMyArNTU0MSw0MiBAQAogICAgICAgICB9CiAgICAgfQogCisgICAgcHVibGljIHZvaWQgc2V0SW1tZXJzaXZlKElCaW5kZXIgdG9rZW4sIGJvb2xlYW4gaW1tZXJzaXZlKSB7CisgICAgICAgIHN5bmNocm9uaXplZCh0aGlzKSB7CisgICAgICAgICAgICBpbnQgaW5kZXggPSAodG9rZW4gIT0gbnVsbCkgPyBtTWFpblN0YWNrLmluZGV4T2ZUb2tlbkxvY2tlZCh0b2tlbikgOiAtMTsKKyAgICAgICAgICAgIGlmIChpbmRleCA8IDApIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gKEFjdGl2aXR5UmVjb3JkKW1NYWluU3RhY2subUhpc3RvcnkuZ2V0KGluZGV4KTsKKyAgICAgICAgICAgIHIuaW1tZXJzaXZlID0gaW1tZXJzaXZlOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gaXNJbW1lcnNpdmUoSUJpbmRlciB0b2tlbikgeworICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKKyAgICAgICAgICAgIGludCBpbmRleCA9ICh0b2tlbiAhPSBudWxsKSA/IG1NYWluU3RhY2suaW5kZXhPZlRva2VuTG9ja2VkKHRva2VuKSA6IC0xOworICAgICAgICAgICAgaWYgKGluZGV4IDwgMCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSAoQWN0aXZpdHlSZWNvcmQpbU1haW5TdGFjay5tSGlzdG9yeS5nZXQoaW5kZXgpOworICAgICAgICAgICAgcmV0dXJuIHIuaW1tZXJzaXZlOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gaXNUb3BBY3Rpdml0eUltbWVyc2l2ZSgpIHsKKyAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7CisgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gbU1haW5TdGFjay50b3BSdW5uaW5nQWN0aXZpdHlMb2NrZWQobnVsbCk7CisgICAgICAgICAgICByZXR1cm4gKHIgIT0gbnVsbCkgPyByLmltbWVyc2l2ZSA6IGZhbHNlOworICAgICAgICB9CisgICAgfQorCiAgICAgcHVibGljIGZpbmFsIHZvaWQgZW50ZXJTYWZlTW9kZSgpIHsKICAgICAgICAgc3luY2hyb25pemVkKHRoaXMpIHsKICAgICAgICAgICAgIC8vIEl0IG9ubHkgbWFrZXMgc2Vuc2UgdG8gZG8gdGhpcyBiZWZvcmUgdGhlIHN5c3RlbSBpcyByZWFkeQogICAgICAgICAgICAgLy8gYW5kIHN0YXJ0ZWQgbGF1bmNoaW5nIG90aGVyIHBhY2thZ2VzLgogICAgICAgICAgICAgaWYgKCFtU3lzdGVtUmVhZHkpIHsKICAgICAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eVRocmVhZC5nZXRQYWNrYWdlTWFuYWdlcigpLmVudGVyU2FmZU1vZGUoKTsKKyAgICAgICAgICAgICAgICAgICAgQXBwR2xvYmFscy5nZXRQYWNrYWdlTWFuYWdlcigpLmVudGVyU2FmZU1vZGUoKTsKICAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgewogICAgICAgICAgICAgICAgIH0KIApAQCAtODU1NywxMjMgKzU2NjIsNiBAQAogICAgICAgICByZXR1cm4ga2lsbGVkOwogICAgIH0KICAgICAKLSAgICBwdWJsaWMgdm9pZCByZXBvcnRQc3MoSUFwcGxpY2F0aW9uVGhyZWFkIGNhbGxlciwgaW50IHBzcykgewotICAgICAgICBXYXRjaGRvZy5Qc3NSZXF1ZXN0b3IgcmVxOwotICAgICAgICBTdHJpbmcgbmFtZTsKLSAgICAgICAgUHJvY2Vzc1JlY29yZCBjYWxsZXJBcHA7Ci0gICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgewotICAgICAgICAgICAgaWYgKGNhbGxlciA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FsbGVyQXBwID0gZ2V0UmVjb3JkRm9yQXBwTG9ja2VkKGNhbGxlcik7Ci0gICAgICAgICAgICBpZiAoY2FsbGVyQXBwID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYWxsZXJBcHAubGFzdFBzcyA9IHBzczsKLSAgICAgICAgICAgIHJlcSA9IGNhbGxlckFwcDsKLSAgICAgICAgICAgIG5hbWUgPSBjYWxsZXJBcHAucHJvY2Vzc05hbWU7Ci0gICAgICAgIH0KLSAgICAgICAgV2F0Y2hkb2cuZ2V0SW5zdGFuY2UoKS5yZXBvcnRQc3MocmVxLCBuYW1lLCBwc3MpOwotICAgICAgICBpZiAoIWNhbGxlckFwcC5wZXJzaXN0ZW50KSB7Ci0gICAgICAgICAgICByZW1vdmVSZXF1ZXN0ZWRQc3MoY2FsbGVyQXBwKTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICBwdWJsaWMgdm9pZCByZXF1ZXN0UHNzKFJ1bm5hYmxlIGNvbXBsZXRlQ2FsbGJhY2spIHsKLSAgICAgICAgQXJyYXlMaXN0PFByb2Nlc3NSZWNvcmQ+IHByb2NzOwotICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKLSAgICAgICAgICAgIG1SZXF1ZXN0UHNzQ2FsbGJhY2sgPSBjb21wbGV0ZUNhbGxiYWNrOwotICAgICAgICAgICAgbVJlcXVlc3RQc3NMaXN0LmNsZWFyKCk7Ci0gICAgICAgICAgICBmb3IgKGludCBpPW1McnVQcm9jZXNzZXMuc2l6ZSgpLTE7IGk+PTA7IGktLSkgewotICAgICAgICAgICAgICAgIFByb2Nlc3NSZWNvcmQgcHJvYyA9IG1McnVQcm9jZXNzZXMuZ2V0KGkpOwotICAgICAgICAgICAgICAgIGlmICghcHJvYy5wZXJzaXN0ZW50KSB7Ci0gICAgICAgICAgICAgICAgICAgIG1SZXF1ZXN0UHNzTGlzdC5hZGQocHJvYyk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgcHJvY3MgPSBuZXcgQXJyYXlMaXN0PFByb2Nlc3NSZWNvcmQ+KG1SZXF1ZXN0UHNzTGlzdCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGludCBvbGRQcmkgPSBQcm9jZXNzLmdldFRocmVhZFByaW9yaXR5KFByb2Nlc3MubXlUaWQoKSk7IAotICAgICAgICBQcm9jZXNzLnNldFRocmVhZFByaW9yaXR5KFByb2Nlc3MuVEhSRUFEX1BSSU9SSVRZX0JBQ0tHUk9VTkQpOwotICAgICAgICBmb3IgKGludCBpPXByb2NzLnNpemUoKS0xOyBpPj0wOyBpLS0pIHsKLSAgICAgICAgICAgIFByb2Nlc3NSZWNvcmQgcHJvYyA9IHByb2NzLmdldChpKTsKLSAgICAgICAgICAgIHByb2MubGFzdFBzcyA9IDA7Ci0gICAgICAgICAgICBwcm9jLnJlcXVlc3RQc3MoKTsKLSAgICAgICAgfQotICAgICAgICBQcm9jZXNzLnNldFRocmVhZFByaW9yaXR5KG9sZFByaSk7Ci0gICAgfQotICAgIAotICAgIHZvaWQgcmVtb3ZlUmVxdWVzdGVkUHNzKFByb2Nlc3NSZWNvcmQgcHJvYykgewotICAgICAgICBSdW5uYWJsZSBjYWxsYmFjayA9IG51bGw7Ci0gICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgewotICAgICAgICAgICAgaWYgKG1SZXF1ZXN0UHNzTGlzdC5yZW1vdmUocHJvYykpIHsKLSAgICAgICAgICAgICAgICBpZiAobVJlcXVlc3RQc3NMaXN0LnNpemUoKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhbGxiYWNrID0gbVJlcXVlc3RQc3NDYWxsYmFjazsKLSAgICAgICAgICAgICAgICAgICAgbVJlcXVlc3RQc3NDYWxsYmFjayA9IG51bGw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoY2FsbGJhY2sgIT0gbnVsbCkgewotICAgICAgICAgICAgY2FsbGJhY2sucnVuKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgcHVibGljIHZvaWQgY29sbGVjdFBzcyhXYXRjaGRvZy5Qc3NTdGF0cyBzdGF0cykgewotICAgICAgICBzdGF0cy5tRW1wdHlQc3MgPSAwOwotICAgICAgICBzdGF0cy5tRW1wdHlDb3VudCA9IDA7Ci0gICAgICAgIHN0YXRzLm1CYWNrZ3JvdW5kUHNzID0gMDsKLSAgICAgICAgc3RhdHMubUJhY2tncm91bmRDb3VudCA9IDA7Ci0gICAgICAgIHN0YXRzLm1TZXJ2aWNlUHNzID0gMDsKLSAgICAgICAgc3RhdHMubVNlcnZpY2VDb3VudCA9IDA7Ci0gICAgICAgIHN0YXRzLm1WaXNpYmxlUHNzID0gMDsKLSAgICAgICAgc3RhdHMubVZpc2libGVDb3VudCA9IDA7Ci0gICAgICAgIHN0YXRzLm1Gb3JlZ3JvdW5kUHNzID0gMDsKLSAgICAgICAgc3RhdHMubUZvcmVncm91bmRDb3VudCA9IDA7Ci0gICAgICAgIHN0YXRzLm1Ob1Bzc0NvdW50ID0gMDsKLSAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7Ci0gICAgICAgICAgICBpbnQgaTsKLSAgICAgICAgICAgIGludCBOUEQgPSBtUHJvY0RlYXRocy5sZW5ndGggPCBzdGF0cy5tUHJvY0RlYXRocy5sZW5ndGgKLSAgICAgICAgICAgICAgICAgICAgPyBtUHJvY0RlYXRocy5sZW5ndGggOiBzdGF0cy5tUHJvY0RlYXRocy5sZW5ndGg7Ci0gICAgICAgICAgICBpbnQgYWdnciA9IDA7Ci0gICAgICAgICAgICBmb3IgKGk9MDsgaTxOUEQ7IGkrKykgewotICAgICAgICAgICAgICAgIGFnZ3IgKz0gbVByb2NEZWF0aHNbaV07Ci0gICAgICAgICAgICAgICAgc3RhdHMubVByb2NEZWF0aHNbaV0gPSBhZ2dyOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgd2hpbGUgKGk8c3RhdHMubVByb2NEZWF0aHMubGVuZ3RoKSB7Ci0gICAgICAgICAgICAgICAgc3RhdHMubVByb2NEZWF0aHNbaV0gPSAwOwotICAgICAgICAgICAgICAgIGkrKzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIAotICAgICAgICAgICAgZm9yIChpPW1McnVQcm9jZXNzZXMuc2l6ZSgpLTE7IGk+PTA7IGktLSkgewotICAgICAgICAgICAgICAgIFByb2Nlc3NSZWNvcmQgcHJvYyA9IG1McnVQcm9jZXNzZXMuZ2V0KGkpOwotICAgICAgICAgICAgICAgIGlmIChwcm9jLnBlcnNpc3RlbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIC8vU2xvZy5pKFRBRywgIlByb2MgIiArIHByb2MgKyAiOiBwc3M9IiArIHByb2MubGFzdFBzcyk7Ci0gICAgICAgICAgICAgICAgaWYgKHByb2MubGFzdFBzcyA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRzLm1Ob1Bzc0NvdW50Kys7Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAocHJvYy5zZXRBZGogPj0gSElEREVOX0FQUF9NSU5fQURKKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwcm9jLmVtcHR5KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzdGF0cy5tRW1wdHlQc3MgKz0gcHJvYy5sYXN0UHNzOwotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHMubUVtcHR5Q291bnQrKzsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRzLm1CYWNrZ3JvdW5kUHNzICs9IHByb2MubGFzdFBzczsKLSAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRzLm1CYWNrZ3JvdW5kQ291bnQrKzsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocHJvYy5zZXRBZGogPj0gVklTSUJMRV9BUFBfQURKKSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRzLm1WaXNpYmxlUHNzICs9IHByb2MubGFzdFBzczsKLSAgICAgICAgICAgICAgICAgICAgc3RhdHMubVZpc2libGVDb3VudCsrOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHN0YXRzLm1Gb3JlZ3JvdW5kUHNzICs9IHByb2MubGFzdFBzczsKLSAgICAgICAgICAgICAgICAgICAgc3RhdHMubUZvcmVncm91bmRDb3VudCsrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICAKICAgICBwdWJsaWMgZmluYWwgdm9pZCBzdGFydFJ1bm5pbmcoU3RyaW5nIHBrZywgU3RyaW5nIGNscywgU3RyaW5nIGFjdGlvbiwKICAgICAgICAgICAgIFN0cmluZyBkYXRhKSB7CiAgICAgICAgIHN5bmNocm9uaXplZCh0aGlzKSB7CkBAIC04NzQ0LDcgKzU3MzIsNyBAQAogICAgICAgICAgICAgICAgIEludGVudCBpbnRlbnQgPSBuZXcgSW50ZW50KEludGVudC5BQ1RJT05fUFJFX0JPT1RfQ09NUExFVEVEKTsKICAgICAgICAgICAgICAgICBMaXN0PFJlc29sdmVJbmZvPiByaXMgPSBudWxsOwogICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIHJpcyA9IEFjdGl2aXR5VGhyZWFkLmdldFBhY2thZ2VNYW5hZ2VyKCkucXVlcnlJbnRlbnRSZWNlaXZlcnMoCisgICAgICAgICAgICAgICAgICAgIHJpcyA9IEFwcEdsb2JhbHMuZ2V0UGFja2FnZU1hbmFnZXIoKS5xdWVyeUludGVudFJlY2VpdmVycygKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZW50LCBudWxsLCAwKTsKICAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgewogICAgICAgICAgICAgICAgIH0KQEAgLTg4NjMsNyArNTg1MSw3IEBACiAgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgewogICAgICAgICAgICAgaWYgKG1GYWN0b3J5VGVzdCAhPSBTeXN0ZW1TZXJ2ZXIuRkFDVE9SWV9URVNUX0xPV19MRVZFTCkgewogICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIExpc3QgYXBwcyA9IEFjdGl2aXR5VGhyZWFkLmdldFBhY2thZ2VNYW5hZ2VyKCkuCisgICAgICAgICAgICAgICAgICAgIExpc3QgYXBwcyA9IEFwcEdsb2JhbHMuZ2V0UGFja2FnZU1hbmFnZXIoKS4KICAgICAgICAgICAgICAgICAgICAgICAgIGdldFBlcnNpc3RlbnRBcHBsaWNhdGlvbnMoU1RPQ0tfUE1fRkxBR1MpOwogICAgICAgICAgICAgICAgICAgICBpZiAoYXBwcyAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgTiA9IGFwcHMuc2l6ZSgpOwpAQCAtODg4Niw3ICs1ODc0LDcgQEAKICAgICAgICAgICAgIG1Cb290aW5nID0gdHJ1ZTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBpZiAoQWN0aXZpdHlUaHJlYWQuZ2V0UGFja2FnZU1hbmFnZXIoKS5oYXNTeXN0ZW1VaWRFcnJvcnMoKSkgeworICAgICAgICAgICAgICAgIGlmIChBcHBHbG9iYWxzLmdldFBhY2thZ2VNYW5hZ2VyKCkuaGFzU3lzdGVtVWlkRXJyb3JzKCkpIHsKICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSBtc2cgPSBNZXNzYWdlLm9idGFpbigpOwogICAgICAgICAgICAgICAgICAgICBtc2cud2hhdCA9IFNIT1dfVUlEX0VSUk9SX01TRzsKICAgICAgICAgICAgICAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2UobXNnKTsKQEAgLTg4OTQsNyArNTg4Miw3IEBACiAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgewogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICByZXN1bWVUb3BBY3Rpdml0eUxvY2tlZChudWxsKTsKKyAgICAgICAgICAgIG1NYWluU3RhY2sucmVzdW1lVG9wQWN0aXZpdHlMb2NrZWQobnVsbCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTg5ODIsMTIgKzU5NzAsMTIgQEAKICAgICAgICAgICAgIEV2ZW50TG9nLndyaXRlRXZlbnQoRXZlbnRMb2dUYWdzLkFNX1BST0NFU1NfQ1JBU0hFRF9UT09fTVVDSCwKICAgICAgICAgICAgICAgICAgICAgYXBwLmluZm8ucHJvY2Vzc05hbWUsIGFwcC5pbmZvLnVpZCk7CiAgICAgICAgICAgICBraWxsU2VydmljZXNMb2NrZWQoYXBwLCBmYWxzZSk7Ci0gICAgICAgICAgICBmb3IgKGludCBpPW1IaXN0b3J5LnNpemUoKS0xOyBpPj0wOyBpLS0pIHsKLSAgICAgICAgICAgICAgICBIaXN0b3J5UmVjb3JkIHIgPSAoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQoaSk7CisgICAgICAgICAgICBmb3IgKGludCBpPW1NYWluU3RhY2subUhpc3Rvcnkuc2l6ZSgpLTE7IGk+PTA7IGktLSkgeworICAgICAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSAoQWN0aXZpdHlSZWNvcmQpbU1haW5TdGFjay5tSGlzdG9yeS5nZXQoaSk7CiAgICAgICAgICAgICAgICAgaWYgKHIuYXBwID09IGFwcCkgewogICAgICAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiICBGb3JjZSBmaW5pc2hpbmcgYWN0aXZpdHkgIgogICAgICAgICAgICAgICAgICAgICAgICAgKyByLmludGVudC5nZXRDb21wb25lbnQoKS5mbGF0dGVuVG9TaG9ydFN0cmluZygpKTsKLSAgICAgICAgICAgICAgICAgICAgZmluaXNoQWN0aXZpdHlMb2NrZWQociwgaSwgQWN0aXZpdHkuUkVTVUxUX0NBTkNFTEVELCBudWxsLCAiY3Jhc2hlZCIpOworICAgICAgICAgICAgICAgICAgICByLnN0YWNrLmZpbmlzaEFjdGl2aXR5TG9ja2VkKHIsIGksIEFjdGl2aXR5LlJFU1VMVF9DQU5DRUxFRCwgbnVsbCwgImNyYXNoZWQiKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAoIWFwcC5wZXJzaXN0ZW50KSB7CkBAIC05MDA1LDI4ICs1OTkzLDI4IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgSGlzdG9yeVJlY29yZCByID0gdG9wUnVubmluZ0FjdGl2aXR5TG9ja2VkKG51bGwpOworICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IG1NYWluU3RhY2sudG9wUnVubmluZ0FjdGl2aXR5TG9ja2VkKG51bGwpOwogICAgICAgICAgICAgaWYgKHIuYXBwID09IGFwcCkgewogICAgICAgICAgICAgICAgIC8vIElmIHRoZSB0b3AgcnVubmluZyBhY3Rpdml0eSBpcyBmcm9tIHRoaXMgY3Jhc2hpbmcKICAgICAgICAgICAgICAgICAvLyBwcm9jZXNzLCB0aGVuIHRlcm1pbmF0ZSBpdCB0byBhdm9pZCBnZXR0aW5nIGluIGEgbG9vcC4KICAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiICBGb3JjZSBmaW5pc2hpbmcgYWN0aXZpdHkgIgogICAgICAgICAgICAgICAgICAgICAgICAgKyByLmludGVudC5nZXRDb21wb25lbnQoKS5mbGF0dGVuVG9TaG9ydFN0cmluZygpKTsKLSAgICAgICAgICAgICAgICBpbnQgaW5kZXggPSBpbmRleE9mVG9rZW5Mb2NrZWQocik7Ci0gICAgICAgICAgICAgICAgZmluaXNoQWN0aXZpdHlMb2NrZWQociwgaW5kZXgsCisgICAgICAgICAgICAgICAgaW50IGluZGV4ID0gbU1haW5TdGFjay5pbmRleE9mVG9rZW5Mb2NrZWQocik7CisgICAgICAgICAgICAgICAgci5zdGFjay5maW5pc2hBY3Rpdml0eUxvY2tlZChyLCBpbmRleCwKICAgICAgICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5LlJFU1VMVF9DQU5DRUxFRCwgbnVsbCwgImNyYXNoZWQiKTsKICAgICAgICAgICAgICAgICAvLyBBbHNvIHRlcm1pbmF0ZSBhbiBhY3Rpdml0aWVzIGJlbG93IGl0IHRoYXQgYXJlbid0IHlldAogICAgICAgICAgICAgICAgIC8vIHN0b3BwZWQsIHRvIGF2b2lkIGEgc2l0dWF0aW9uIHdoZXJlIG9uZSB3aWxsIGdldAogICAgICAgICAgICAgICAgIC8vIHJlLXN0YXJ0IG91ciBjcmFzaGluZyBhY3Rpdml0eSBvbmNlIGl0IGdldHMgcmVzdW1lZCBhZ2Fpbi4KICAgICAgICAgICAgICAgICBpbmRleC0tOwogICAgICAgICAgICAgICAgIGlmIChpbmRleCA+PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIHIgPSAoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQoaW5kZXgpOworICAgICAgICAgICAgICAgICAgICByID0gKEFjdGl2aXR5UmVjb3JkKW1NYWluU3RhY2subUhpc3RvcnkuZ2V0KGluZGV4KTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHIuc3RhdGUgPT0gQWN0aXZpdHlTdGF0ZS5SRVNVTUVECiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgci5zdGF0ZSA9PSBBY3Rpdml0eVN0YXRlLlBBVVNJTkcKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCByLnN0YXRlID09IEFjdGl2aXR5U3RhdGUuUEFVU0VEKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXIuaXNIb21lQWN0aXZpdHkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiICBGb3JjZSBmaW5pc2hpbmcgYWN0aXZpdHkgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyByLmludGVudC5nZXRDb21wb25lbnQoKS5mbGF0dGVuVG9TaG9ydFN0cmluZygpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5pc2hBY3Rpdml0eUxvY2tlZChyLCBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByLnN0YWNrLmZpbmlzaEFjdGl2aXR5TG9ja2VkKHIsIGluZGV4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHkuUkVTVUxUX0NBTkNFTEVELCBudWxsLCAiY3Jhc2hlZCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICB9CkBAIC05MDM4LDkgKzYwMjYsOSBAQAogICAgICAgICBpZiAoYXBwLnNlcnZpY2VzLnNpemUoKSAhPSAwKSB7CiAgICAgICAgICAgICAvLyBBbnkgc2VydmljZXMgcnVubmluZyBpbiB0aGUgYXBwbGljYXRpb24gbmVlZCB0byBiZSBwbGFjZWQKICAgICAgICAgICAgIC8vIGJhY2sgaW4gdGhlIHBlbmRpbmcgbGlzdC4KLSAgICAgICAgICAgIEl0ZXJhdG9yIGl0ID0gYXBwLnNlcnZpY2VzLml0ZXJhdG9yKCk7CisgICAgICAgICAgICBJdGVyYXRvcjxTZXJ2aWNlUmVjb3JkPiBpdCA9IGFwcC5zZXJ2aWNlcy5pdGVyYXRvcigpOwogICAgICAgICAgICAgd2hpbGUgKGl0Lmhhc05leHQoKSkgewotICAgICAgICAgICAgICAgIFNlcnZpY2VSZWNvcmQgc3IgPSAoU2VydmljZVJlY29yZClpdC5uZXh0KCk7CisgICAgICAgICAgICAgICAgU2VydmljZVJlY29yZCBzciA9IGl0Lm5leHQoKTsKICAgICAgICAgICAgICAgICBzci5jcmFzaENvdW50Kys7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTkxMDMsNiArNjA5MSw1NiBAQAogICAgICAgICBjcmFzaEFwcGxpY2F0aW9uKHIsIGNyYXNoSW5mbyk7CiAgICAgfQogCisgICAgcHVibGljIHZvaWQgaGFuZGxlQXBwbGljYXRpb25TdHJpY3RNb2RlVmlvbGF0aW9uKAorICAgICAgICBJQmluZGVyIGFwcCwgaW50IHZpb2xhdGlvbk1hc2ssIEFwcGxpY2F0aW9uRXJyb3JSZXBvcnQuQ3Jhc2hJbmZvIGNyYXNoSW5mbykgeworICAgICAgICBQcm9jZXNzUmVjb3JkIHIgPSBmaW5kQXBwUHJvY2VzcyhhcHApOworCisgICAgICAgIGlmICgodmlvbGF0aW9uTWFzayAmIFN0cmljdE1vZGUuUEVOQUxUWV9EUk9QQk9YKSAhPSAwKSB7CisgICAgICAgICAgICBJbnRlZ2VyIHN0YWNrRmluZ2VycHJpbnQgPSBjcmFzaEluZm8uc3RhY2tUcmFjZS5oYXNoQ29kZSgpOworICAgICAgICAgICAgYm9vbGVhbiBsb2dJdCA9IHRydWU7CisgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKG1BbHJlYWR5TG9nZ2VkVmlvbGF0ZWRTdGFja3MpIHsKKyAgICAgICAgICAgICAgICBpZiAobUFscmVhZHlMb2dnZWRWaW9sYXRlZFN0YWNrcy5jb250YWlucyhzdGFja0ZpbmdlcnByaW50KSkgeworICAgICAgICAgICAgICAgICAgICBsb2dJdCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAvLyBUT0RPOiBzdWItc2FtcGxlIGludG8gRXZlbnRMb2cgZm9yIHRoZXNlLCB3aXRoCisgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBjcmFzaEluZm8uZHVyYXRpb25NaWxsaXM/ICBUaGVuIHdlJ2QgZ2V0CisgICAgICAgICAgICAgICAgICAgIC8vIHRoZSByZWxhdGl2ZSBwYWluIG51bWJlcnMsIHdpdGhvdXQgbG9nZ2luZyBhbGwKKyAgICAgICAgICAgICAgICAgICAgLy8gdGhlIHN0YWNrIHRyYWNlcyByZXBlYXRlZGx5LiAgV2UnZCB3YW50IHRvIGRvCisgICAgICAgICAgICAgICAgICAgIC8vIGxpa2V3aXNlIGluIHRoZSBjbGllbnQgY29kZSwgd2hpY2ggYWxzbyBkb2VzCisgICAgICAgICAgICAgICAgICAgIC8vIGR1cCBzdXBwcmVzc2lvbiwgYmVmb3JlIHRoZSBCaW5kZXIgY2FsbC4KKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAobUFscmVhZHlMb2dnZWRWaW9sYXRlZFN0YWNrcy5zaXplKCkgPj0gTUFYX0RVUF9TVVBQUkVTU0VEX1NUQUNLUykgeworICAgICAgICAgICAgICAgICAgICAgICAgbUFscmVhZHlMb2dnZWRWaW9sYXRlZFN0YWNrcy5jbGVhcigpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIG1BbHJlYWR5TG9nZ2VkVmlvbGF0ZWRTdGFja3MuYWRkKHN0YWNrRmluZ2VycHJpbnQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChsb2dJdCkgeworICAgICAgICAgICAgICAgIGFkZEVycm9yVG9Ecm9wQm94KCJzdHJpY3Rtb2RlIiwgciwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgbnVsbCwgY3Jhc2hJbmZvKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmICgodmlvbGF0aW9uTWFzayAmIFN0cmljdE1vZGUuUEVOQUxUWV9ESUFMT0cpICE9IDApIHsKKyAgICAgICAgICAgIEFwcEVycm9yUmVzdWx0IHJlc3VsdCA9IG5ldyBBcHBFcnJvclJlc3VsdCgpOworICAgICAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7CisgICAgICAgICAgICAgICAgZmluYWwgbG9uZyBvcmlnSWQgPSBCaW5kZXIuY2xlYXJDYWxsaW5nSWRlbnRpdHkoKTsKKworICAgICAgICAgICAgICAgIE1lc3NhZ2UgbXNnID0gTWVzc2FnZS5vYnRhaW4oKTsKKyAgICAgICAgICAgICAgICBtc2cud2hhdCA9IFNIT1dfU1RSSUNUX01PREVfVklPTEFUSU9OX01TRzsKKyAgICAgICAgICAgICAgICBIYXNoTWFwPFN0cmluZywgT2JqZWN0PiBkYXRhID0gbmV3IEhhc2hNYXA8U3RyaW5nLCBPYmplY3Q+KCk7CisgICAgICAgICAgICAgICAgZGF0YS5wdXQoInJlc3VsdCIsIHJlc3VsdCk7CisgICAgICAgICAgICAgICAgZGF0YS5wdXQoImFwcCIsIHIpOworICAgICAgICAgICAgICAgIGRhdGEucHV0KCJ2aW9sYXRpb25NYXNrIiwgdmlvbGF0aW9uTWFzayk7CisgICAgICAgICAgICAgICAgZGF0YS5wdXQoImNyYXNoSW5mbyIsIGNyYXNoSW5mbyk7CisgICAgICAgICAgICAgICAgbXNnLm9iaiA9IGRhdGE7CisgICAgICAgICAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2UobXNnKTsKKworICAgICAgICAgICAgICAgIEJpbmRlci5yZXN0b3JlQ2FsbGluZ0lkZW50aXR5KG9yaWdJZCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbnQgcmVzID0gcmVzdWx0LmdldCgpOworICAgICAgICAgICAgTG9nLncoVEFHLCAiaGFuZGxlQXBwbGljYXRpb25TdHJpY3RNb2RlVmlvbGF0aW9uOyByZXM9IiArIHJlcyk7CisgICAgICAgIH0KKyAgICB9CisKICAgICAvKioKICAgICAgKiBVc2VkIGJ5IHtAbGluayBMb2d9IHZpYSB7QGxpbmsgY29tLmFuZHJvaWQuaW50ZXJuYWwub3MuUnVudGltZUluaXR9IHRvIHJlcG9ydCBzZXJpb3VzIGVycm9ycy4KICAgICAgKiBAcGFyYW0gYXBwIG9iamVjdCBvZiB0aGUgY3Jhc2hpbmcgYXBwLCBudWxsIGZvciB0aGUgc3lzdGVtIHNlcnZlcgpAQCAtOTE2Nyw3ICs2MjA1LDcgQEAKICAgICAgKiBAcGFyYW0gY3Jhc2hJbmZvIGdpdmluZyBhbiBhcHBsaWNhdGlvbiBzdGFjayB0cmFjZSwgbnVsbCBpZiBhYnNlbnQKICAgICAgKi8KICAgICBwdWJsaWMgdm9pZCBhZGRFcnJvclRvRHJvcEJveChTdHJpbmcgZXZlbnRUeXBlLAotICAgICAgICAgICAgUHJvY2Vzc1JlY29yZCBwcm9jZXNzLCBIaXN0b3J5UmVjb3JkIGFjdGl2aXR5LCBIaXN0b3J5UmVjb3JkIHBhcmVudCwgU3RyaW5nIHN1YmplY3QsCisgICAgICAgICAgICBQcm9jZXNzUmVjb3JkIHByb2Nlc3MsIEFjdGl2aXR5UmVjb3JkIGFjdGl2aXR5LCBBY3Rpdml0eVJlY29yZCBwYXJlbnQsIFN0cmluZyBzdWJqZWN0LAogICAgICAgICAgICAgZmluYWwgU3RyaW5nIHJlcG9ydCwgZmluYWwgRmlsZSBsb2dGaWxlLAogICAgICAgICAgICAgZmluYWwgQXBwbGljYXRpb25FcnJvclJlcG9ydC5DcmFzaEluZm8gY3Jhc2hJbmZvKSB7CiAgICAgICAgIC8vIE5PVEUgLS0gdGhpcyBtdXN0IG5ldmVyIGFjcXVpcmUgdGhlIEFjdGl2aXR5TWFuYWdlclNlcnZpY2UgbG9jaywKQEAgLTkxOTcsNyArNjIzNSw3IEBACiAgICAgICAgIH0KICAgICAgICAgaWYgKHByb2Nlc3MgIT0gbnVsbCkgewogICAgICAgICAgICAgaW50IGZsYWdzID0gcHJvY2Vzcy5pbmZvLmZsYWdzOwotICAgICAgICAgICAgSVBhY2thZ2VNYW5hZ2VyIHBtID0gQWN0aXZpdHlUaHJlYWQuZ2V0UGFja2FnZU1hbmFnZXIoKTsKKyAgICAgICAgICAgIElQYWNrYWdlTWFuYWdlciBwbSA9IEFwcEdsb2JhbHMuZ2V0UGFja2FnZU1hbmFnZXIoKTsKICAgICAgICAgICAgIHNiLmFwcGVuZCgiRmxhZ3M6IDB4IikuYXBwZW5kKEludGVnZXIudG9TdHJpbmcoZmxhZ3MsIDE2KSkuYXBwZW5kKCJcbiIpOwogICAgICAgICAgICAgZm9yIChTdHJpbmcgcGtnIDogcHJvY2Vzcy5wa2dMaXN0KSB7CiAgICAgICAgICAgICAgICAgc2IuYXBwZW5kKCJQYWNrYWdlOiAiKS5hcHBlbmQocGtnKTsKQEAgLTkyMjgsNiArNjI2Niw5IEBACiAgICAgICAgICAgICBzYi5hcHBlbmQoIlN1YmplY3Q6ICIpLmFwcGVuZChzdWJqZWN0KS5hcHBlbmQoIlxuIik7CiAgICAgICAgIH0KICAgICAgICAgc2IuYXBwZW5kKCJCdWlsZDogIikuYXBwZW5kKEJ1aWxkLkZJTkdFUlBSSU5UKS5hcHBlbmQoIlxuIik7CisgICAgICAgIGlmIChjcmFzaEluZm8gIT0gbnVsbCAmJiBjcmFzaEluZm8uZHVyYXRpb25NaWxsaXMgIT0gLTEpIHsKKyAgICAgICAgICAgIHNiLmFwcGVuZCgiRHVyYXRpb24tTWlsbGlzOiAiKS5hcHBlbmQoY3Jhc2hJbmZvLmR1cmF0aW9uTWlsbGlzKS5hcHBlbmQoIlxuIik7CisgICAgICAgIH0KICAgICAgICAgc2IuYXBwZW5kKCJcbiIpOwogCiAgICAgICAgIC8vIERvIHRoZSByZXN0IGluIGEgd29ya2VyIHRocmVhZCB0byBhdm9pZCBibG9ja2luZyB0aGUgY2FsbGVyIG9uIEkvTwpAQCAtOTQ3Miw2ICs2NTEzLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBBY3Rpdml0eU1hbmFnZXIuUnVubmluZ0FwcFByb2Nlc3NJbmZvKGFwcC5wcm9jZXNzTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwLnBpZCwgYXBwLmdldFBhY2thZ2VMaXN0KCkpOwogICAgICAgICAgICAgICAgICAgICBjdXJyQXBwLnVpZCA9IGFwcC5pbmZvLnVpZDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1IZWF2eVdlaWdodFByb2Nlc3MgPT0gYXBwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjdXJyQXBwLmZsYWdzIHw9IEFjdGl2aXR5TWFuYWdlci5SdW5uaW5nQXBwUHJvY2Vzc0luZm8uRkxBR19IRUFWWV9XRUlHSFQ7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgaW50IGFkaiA9IGFwcC5jdXJBZGo7CiAgICAgICAgICAgICAgICAgICAgIGlmIChhZGogPj0gRU1QVFlfQVBQX0FESikgewogICAgICAgICAgICAgICAgICAgICAgICAgY3VyckFwcC5pbXBvcnRhbmNlID0gQWN0aXZpdHlNYW5hZ2VyLlJ1bm5pbmdBcHBQcm9jZXNzSW5mby5JTVBPUlRBTkNFX0VNUFRZOwpAQCAtOTQ4Myw2ICs2NTI3LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyQXBwLmxydSA9IDA7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYWRqID49IFNFQ09OREFSWV9TRVJWRVJfQURKKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyQXBwLmltcG9ydGFuY2UgPSBBY3Rpdml0eU1hbmFnZXIuUnVubmluZ0FwcFByb2Nlc3NJbmZvLklNUE9SVEFOQ0VfU0VSVklDRTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhZGogPj0gSEVBVllfV0VJR0hUX0FQUF9BREopIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJBcHAuaW1wb3J0YW5jZSA9IEFjdGl2aXR5TWFuYWdlci5SdW5uaW5nQXBwUHJvY2Vzc0luZm8uSU1QT1JUQU5DRV9IRUFWWV9XRUlHSFQ7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYWRqID49IFBFUkNFUFRJQkxFX0FQUF9BREopIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJBcHAuaW1wb3J0YW5jZSA9IEFjdGl2aXR5TWFuYWdlci5SdW5uaW5nQXBwUHJvY2Vzc0luZm8uSU1QT1JUQU5DRV9QRVJDRVBUSUJMRTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhZGogPj0gVklTSUJMRV9BUFBfQURKKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyQXBwLmltcG9ydGFuY2UgPSBBY3Rpdml0eU1hbmFnZXIuUnVubmluZ0FwcFByb2Nlc3NJbmZvLklNUE9SVEFOQ0VfVklTSUJMRTsKICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKQEAgLTk0OTEsOCArNjUzOSw4IEBACiAgICAgICAgICAgICAgICAgICAgIGN1cnJBcHAuaW1wb3J0YW5jZVJlYXNvbkNvZGUgPSBhcHAuYWRqVHlwZUNvZGU7CiAgICAgICAgICAgICAgICAgICAgIGlmIChhcHAuYWRqU291cmNlIGluc3RhbmNlb2YgUHJvY2Vzc1JlY29yZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgY3VyckFwcC5pbXBvcnRhbmNlUmVhc29uUGlkID0gKChQcm9jZXNzUmVjb3JkKWFwcC5hZGpTb3VyY2UpLnBpZDsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhcHAuYWRqU291cmNlIGluc3RhbmNlb2YgSGlzdG9yeVJlY29yZCkgewotICAgICAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVJlY29yZCByID0gKEhpc3RvcnlSZWNvcmQpYXBwLmFkalNvdXJjZTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhcHAuYWRqU291cmNlIGluc3RhbmNlb2YgQWN0aXZpdHlSZWNvcmQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSAoQWN0aXZpdHlSZWNvcmQpYXBwLmFkalNvdXJjZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyLmFwcCAhPSBudWxsKSBjdXJyQXBwLmltcG9ydGFuY2VSZWFzb25QaWQgPSByLmFwcC5waWQ7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgaWYgKGFwcC5hZGpUYXJnZXQgaW5zdGFuY2VvZiBDb21wb25lbnROYW1lKSB7CkBAIC05NTIyLDcgKzY1NzAsNyBAQAogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgSVBhY2thZ2VNYW5hZ2VyIHBtID0gQWN0aXZpdHlUaHJlYWQuZ2V0UGFja2FnZU1hbmFnZXIoKTsKKyAgICAgICAgICAgIElQYWNrYWdlTWFuYWdlciBwbSA9IEFwcEdsb2JhbHMuZ2V0UGFja2FnZU1hbmFnZXIoKTsKICAgICAgICAgICAgIGZvciAoU3RyaW5nIHBrZyA6IGV4dExpc3QpIHsKICAgICAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgICAgICBBcHBsaWNhdGlvbkluZm8gaW5mbyA9IHBtLmdldEFwcGxpY2F0aW9uSW5mbyhwa2csIDApOwpAQCAtOTY3MSwzMSArNjcxOSwzMSBAQAogICAgICAgICBpZiAobmVlZEhlYWRlcikgewogICAgICAgICAgICAgcHcucHJpbnRsbigiICBBY3Rpdml0eSBzdGFjazoiKTsKICAgICAgICAgfQotICAgICAgICBkdW1wSGlzdG9yeUxpc3QocHcsIG1IaXN0b3J5LCAiICAiLCAiSGlzdCIsIHRydWUpOworICAgICAgICBkdW1wSGlzdG9yeUxpc3QocHcsIG1NYWluU3RhY2subUhpc3RvcnksICIgICIsICJIaXN0IiwgdHJ1ZSk7CiAgICAgICAgIHB3LnByaW50bG4oIiAiKTsKICAgICAgICAgcHcucHJpbnRsbigiICBSdW5uaW5nIGFjdGl2aXRpZXMgKG1vc3QgcmVjZW50IGZpcnN0KToiKTsKLSAgICAgICAgZHVtcEhpc3RvcnlMaXN0KHB3LCBtTFJVQWN0aXZpdGllcywgIiAgIiwgIlJ1biIsIGZhbHNlKTsKLSAgICAgICAgaWYgKG1XYWl0aW5nVmlzaWJsZUFjdGl2aXRpZXMuc2l6ZSgpID4gMCkgeworICAgICAgICBkdW1wSGlzdG9yeUxpc3QocHcsIG1NYWluU3RhY2subUxSVUFjdGl2aXRpZXMsICIgICIsICJSdW4iLCBmYWxzZSk7CisgICAgICAgIGlmIChtTWFpblN0YWNrLm1XYWl0aW5nVmlzaWJsZUFjdGl2aXRpZXMuc2l6ZSgpID4gMCkgewogICAgICAgICAgICAgcHcucHJpbnRsbigiICIpOwogICAgICAgICAgICAgcHcucHJpbnRsbigiICBBY3Rpdml0aWVzIHdhaXRpbmcgZm9yIGFub3RoZXIgdG8gYmVjb21lIHZpc2libGU6Iik7Ci0gICAgICAgICAgICBkdW1wSGlzdG9yeUxpc3QocHcsIG1XYWl0aW5nVmlzaWJsZUFjdGl2aXRpZXMsICIgICIsICJXYWl0IiwgZmFsc2UpOworICAgICAgICAgICAgZHVtcEhpc3RvcnlMaXN0KHB3LCBtTWFpblN0YWNrLm1XYWl0aW5nVmlzaWJsZUFjdGl2aXRpZXMsICIgICIsICJXYWl0IiwgZmFsc2UpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChtU3RvcHBpbmdBY3Rpdml0aWVzLnNpemUoKSA+IDApIHsKKyAgICAgICAgaWYgKG1NYWluU3RhY2subVN0b3BwaW5nQWN0aXZpdGllcy5zaXplKCkgPiAwKSB7CiAgICAgICAgICAgICBwdy5wcmludGxuKCIgIik7CiAgICAgICAgICAgICBwdy5wcmludGxuKCIgIEFjdGl2aXRpZXMgd2FpdGluZyB0byBzdG9wOiIpOwotICAgICAgICAgICAgZHVtcEhpc3RvcnlMaXN0KHB3LCBtU3RvcHBpbmdBY3Rpdml0aWVzLCAiICAiLCAiU3RvcCIsIGZhbHNlKTsKKyAgICAgICAgICAgIGR1bXBIaXN0b3J5TGlzdChwdywgbU1haW5TdGFjay5tU3RvcHBpbmdBY3Rpdml0aWVzLCAiICAiLCAiU3RvcCIsIGZhbHNlKTsKICAgICAgICAgfQotICAgICAgICBpZiAobUZpbmlzaGluZ0FjdGl2aXRpZXMuc2l6ZSgpID4gMCkgeworICAgICAgICBpZiAobU1haW5TdGFjay5tRmluaXNoaW5nQWN0aXZpdGllcy5zaXplKCkgPiAwKSB7CiAgICAgICAgICAgICBwdy5wcmludGxuKCIgIik7CiAgICAgICAgICAgICBwdy5wcmludGxuKCIgIEFjdGl2aXRpZXMgd2FpdGluZyB0byBmaW5pc2g6Iik7Ci0gICAgICAgICAgICBkdW1wSGlzdG9yeUxpc3QocHcsIG1GaW5pc2hpbmdBY3Rpdml0aWVzLCAiICAiLCAiRmluIiwgZmFsc2UpOworICAgICAgICAgICAgZHVtcEhpc3RvcnlMaXN0KHB3LCBtTWFpblN0YWNrLm1GaW5pc2hpbmdBY3Rpdml0aWVzLCAiICAiLCAiRmluIiwgZmFsc2UpOwogICAgICAgICB9CiAKICAgICAgICAgcHcucHJpbnRsbigiICIpOwotICAgICAgICBwdy5wcmludGxuKCIgIG1QYXVzaW5nQWN0aXZpdHk6ICIgKyBtUGF1c2luZ0FjdGl2aXR5KTsKLSAgICAgICAgcHcucHJpbnRsbigiICBtUmVzdW1lZEFjdGl2aXR5OiAiICsgbVJlc3VtZWRBY3Rpdml0eSk7CisgICAgICAgIHB3LnByaW50bG4oIiAgbVBhdXNpbmdBY3Rpdml0eTogIiArIG1NYWluU3RhY2subVBhdXNpbmdBY3Rpdml0eSk7CisgICAgICAgIHB3LnByaW50bG4oIiAgbVJlc3VtZWRBY3Rpdml0eTogIiArIG1NYWluU3RhY2subVJlc3VtZWRBY3Rpdml0eSk7CiAgICAgICAgIHB3LnByaW50bG4oIiAgbUZvY3VzZWRBY3Rpdml0eTogIiArIG1Gb2N1c2VkQWN0aXZpdHkpOwotICAgICAgICBwdy5wcmludGxuKCIgIG1MYXN0UGF1c2VkQWN0aXZpdHk6ICIgKyBtTGFzdFBhdXNlZEFjdGl2aXR5KTsKKyAgICAgICAgcHcucHJpbnRsbigiICBtTGFzdFBhdXNlZEFjdGl2aXR5OiAiICsgbU1haW5TdGFjay5tTGFzdFBhdXNlZEFjdGl2aXR5KTsKIAogICAgICAgICBpZiAoZHVtcEFsbCAmJiBtUmVjZW50VGFza3Muc2l6ZSgpID4gMCkgewogICAgICAgICAgICAgcHcucHJpbnRsbigiICIpOwpAQCAtOTc0Niw3ICs2Nzk0LDcgQEAKICAgICAgICAgICAgIG5lZWRTZXAgPSB0cnVlOwogICAgICAgICAgICAgcHcucHJpbnRsbigiICBSdW5uaW5nIHByb2Nlc3NlcyAobW9zdCByZWNlbnQgZmlyc3QpOiIpOwogICAgICAgICAgICAgZHVtcFByb2Nlc3NMaXN0KHB3LCB0aGlzLCBtTHJ1UHJvY2Vzc2VzLCAiICAgICIsCi0gICAgICAgICAgICAgICAgICAgICJBcHAgIiwgIlBFUlMiLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgIlByb2MiLCAiUEVSUyIsIHRydWUpOwogICAgICAgICAgICAgbmVlZFNlcCA9IHRydWU7CiAgICAgICAgIH0KIApAQCAtOTg2MCw4ICs2OTA4LDExIEBACiAKICAgICAgICAgcHcucHJpbnRsbigiICIpOwogICAgICAgICBwdy5wcmludGxuKCIgIG1Ib21lUHJvY2VzczogIiArIG1Ib21lUHJvY2Vzcyk7CisgICAgICAgIGlmIChtSGVhdnlXZWlnaHRQcm9jZXNzICE9IG51bGwpIHsKKyAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbUhlYXZ5V2VpZ2h0UHJvY2VzczogIiArIG1IZWF2eVdlaWdodFByb2Nlc3MpOworICAgICAgICB9CiAgICAgICAgIHB3LnByaW50bG4oIiAgbUNvbmZpZ3VyYXRpb246ICIgKyBtQ29uZmlndXJhdGlvbik7Ci0gICAgICAgIHB3LnByaW50bG4oIiAgbUNvbmZpZ1dpbGxDaGFuZ2U6ICIgKyBtQ29uZmlnV2lsbENoYW5nZSk7CisgICAgICAgIHB3LnByaW50bG4oIiAgbUNvbmZpZ1dpbGxDaGFuZ2U6ICIgKyBtTWFpblN0YWNrLm1Db25maWdXaWxsQ2hhbmdlKTsKICAgICAgICAgcHcucHJpbnRsbigiICBtU2xlZXBpbmc9IiArIG1TbGVlcGluZyArICIgbVNodXR0aW5nRG93bj0iICsgbVNodXR0aW5nRG93bik7CiAgICAgICAgIGlmIChtRGVidWdBcHAgIT0gbnVsbCB8fCBtT3JpZ0RlYnVnQXBwICE9IG51bGwgfHwgbURlYnVnVHJhbnNpZW50CiAgICAgICAgICAgICAgICAgfHwgbU9yaWdXYWl0Rm9yRGVidWdnZXIpIHsKQEAgLTk4ODAsOCArNjkzMSw4IEBACiAgICAgICAgICAgICAgICAgICAgICsgIiBtQm9vdGluZz0iICsgbUJvb3RpbmcKICAgICAgICAgICAgICAgICAgICAgKyAiIG1Cb290ZWQ9IiArIG1Cb290ZWQKICAgICAgICAgICAgICAgICAgICAgKyAiIG1GYWN0b3J5VGVzdD0iICsgbUZhY3RvcnlUZXN0KTsKLSAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbUdvaW5nVG9TbGVlcD0iICsgbUdvaW5nVG9TbGVlcCk7Ci0gICAgICAgICAgICBwdy5wcmludGxuKCIgIG1MYXVuY2hpbmdBY3Rpdml0eT0iICsgbUxhdW5jaGluZ0FjdGl2aXR5KTsKKyAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbUdvaW5nVG9TbGVlcD0iICsgbU1haW5TdGFjay5tR29pbmdUb1NsZWVwKTsKKyAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbUxhdW5jaGluZ0FjdGl2aXR5PSIgKyBtTWFpblN0YWNrLm1MYXVuY2hpbmdBY3Rpdml0eSk7CiAgICAgICAgICAgICBwdy5wcmludGxuKCIgIG1BZGpTZXE9IiArIG1BZGpTZXEgKyAiIG1McnVTZXE9IiArIG1McnVTZXEpOwogICAgICAgICB9CiAgICAgICAgIApAQCAtMTAxMjEsMTAgKzcxNzIsMTEgQEAKICAgICAgICAgICAgIGlmIChtUHJvdmlkZXJzQnlDbGFzcy5zaXplKCkgPiAwKSB7CiAgICAgICAgICAgICAgICAgaWYgKG5lZWRTZXApIHB3LnByaW50bG4oIiAiKTsKICAgICAgICAgICAgICAgICBwdy5wcmludGxuKCIgIFB1Ymxpc2hlZCBjb250ZW50IHByb3ZpZGVycyAoYnkgY2xhc3MpOiIpOwotICAgICAgICAgICAgICAgIEl0ZXJhdG9yIGl0ID0gbVByb3ZpZGVyc0J5Q2xhc3MuZW50cnlTZXQoKS5pdGVyYXRvcigpOworICAgICAgICAgICAgICAgIEl0ZXJhdG9yPE1hcC5FbnRyeTxTdHJpbmcsIENvbnRlbnRQcm92aWRlclJlY29yZD4+IGl0CisgICAgICAgICAgICAgICAgICAgICAgICA9IG1Qcm92aWRlcnNCeUNsYXNzLmVudHJ5U2V0KCkuaXRlcmF0b3IoKTsKICAgICAgICAgICAgICAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIE1hcC5FbnRyeSBlID0gKE1hcC5FbnRyeSlpdC5uZXh0KCk7Ci0gICAgICAgICAgICAgICAgICAgIENvbnRlbnRQcm92aWRlclJlY29yZCByID0gKENvbnRlbnRQcm92aWRlclJlY29yZCllLmdldFZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIE1hcC5FbnRyeTxTdHJpbmcsIENvbnRlbnRQcm92aWRlclJlY29yZD4gZSA9IGl0Lm5leHQoKTsKKyAgICAgICAgICAgICAgICAgICAgQ29udGVudFByb3ZpZGVyUmVjb3JkIHIgPSBlLmdldFZhbHVlKCk7CiAgICAgICAgICAgICAgICAgICAgIHB3LnByaW50KCIgICogIik7IHB3LnByaW50bG4ocik7CiAgICAgICAgICAgICAgICAgICAgIHIuZHVtcChwdywgIiAgICAiKTsKICAgICAgICAgICAgICAgICB9CkBAIC0xMDEzNCwxMCArNzE4NiwxMSBAQAogICAgICAgICAgICAgaWYgKG1Qcm92aWRlcnNCeU5hbWUuc2l6ZSgpID4gMCkgewogICAgICAgICAgICAgICAgIHB3LnByaW50bG4oIiAiKTsKICAgICAgICAgICAgICAgICBwdy5wcmludGxuKCIgIEF1dGhvcml0eSB0byBwcm92aWRlciBtYXBwaW5nczoiKTsKLSAgICAgICAgICAgICAgICBJdGVyYXRvciBpdCA9IG1Qcm92aWRlcnNCeU5hbWUuZW50cnlTZXQoKS5pdGVyYXRvcigpOworICAgICAgICAgICAgICAgIEl0ZXJhdG9yPE1hcC5FbnRyeTxTdHJpbmcsIENvbnRlbnRQcm92aWRlclJlY29yZD4+IGl0CisgICAgICAgICAgICAgICAgICAgICAgICA9IG1Qcm92aWRlcnNCeU5hbWUuZW50cnlTZXQoKS5pdGVyYXRvcigpOwogICAgICAgICAgICAgICAgIHdoaWxlIChpdC5oYXNOZXh0KCkpIHsKLSAgICAgICAgICAgICAgICAgICAgTWFwLkVudHJ5IGUgPSAoTWFwLkVudHJ5KWl0Lm5leHQoKTsKLSAgICAgICAgICAgICAgICAgICAgQ29udGVudFByb3ZpZGVyUmVjb3JkIHIgPSAoQ29udGVudFByb3ZpZGVyUmVjb3JkKWUuZ2V0VmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgTWFwLkVudHJ5PFN0cmluZywgQ29udGVudFByb3ZpZGVyUmVjb3JkPiBlID0gaXQubmV4dCgpOworICAgICAgICAgICAgICAgICAgICBDb250ZW50UHJvdmlkZXJSZWNvcmQgciA9IGUuZ2V0VmFsdWUoKTsKICAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoIiAgIik7IHB3LnByaW50KGUuZ2V0S2V5KCkpOyBwdy5wcmludCgiOiAiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdy5wcmludGxuKHIpOwogICAgICAgICAgICAgICAgIH0KQEAgLTEwMjA0LDcgKzcyNTcsNyBAQAogICAgICAgICAgICAgU3RyaW5nIHByZWZpeCwgU3RyaW5nIGxhYmVsLCBib29sZWFuIGNvbXBsZXRlKSB7CiAgICAgICAgIFRhc2tSZWNvcmQgbGFzdFRhc2sgPSBudWxsOwogICAgICAgICBmb3IgKGludCBpPWxpc3Quc2l6ZSgpLTE7IGk+PTA7IGktLSkgewotICAgICAgICAgICAgSGlzdG9yeVJlY29yZCByID0gKEhpc3RvcnlSZWNvcmQpbGlzdC5nZXQoaSk7CisgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gKEFjdGl2aXR5UmVjb3JkKWxpc3QuZ2V0KGkpOwogICAgICAgICAgICAgZmluYWwgYm9vbGVhbiBmdWxsID0gY29tcGxldGUgfHwgIXIuaW5IaXN0b3J5OwogICAgICAgICAgICAgaWYgKGxhc3RUYXNrICE9IHIudGFzaykgewogICAgICAgICAgICAgICAgIGxhc3RUYXNrID0gci50YXNrOwpAQCAtMTAyMzcsNyArNzI5MCw4IEBACiAgICAgICAgICAgICBTdHJpbmcgcHJlZml4LCBTdHJpbmcgbm9ybWFsTGFiZWwsIFN0cmluZyBwZXJzaXN0ZW50TGFiZWwsCiAgICAgICAgICAgICBib29sZWFuIGluY2xPb21BZGopIHsKICAgICAgICAgaW50IG51bVBlcnMgPSAwOwotICAgICAgICBmb3IgKGludCBpPWxpc3Quc2l6ZSgpLTE7IGk+PTA7IGktLSkgeworICAgICAgICBmaW5hbCBpbnQgTiA9IGxpc3Quc2l6ZSgpLTE7CisgICAgICAgIGZvciAoaW50IGk9TjsgaT49MDsgaS0tKSB7CiAgICAgICAgICAgICBQcm9jZXNzUmVjb3JkIHIgPSAoUHJvY2Vzc1JlY29yZClsaXN0LmdldChpKTsKICAgICAgICAgICAgIGlmIChmYWxzZSkgewogICAgICAgICAgICAgICAgIHB3LnByaW50bG4ocHJlZml4ICsgKHIucGVyc2lzdGVudCA/IHBlcnNpc3RlbnRMYWJlbCA6IG5vcm1hbExhYmVsKQpAQCAtMTAyNTUsNiArNzMwOSwxMCBAQAogICAgICAgICAgICAgICAgICAgICBvb21BZGogPSBidWlsZE9vbVRhZygic3ZjIiwgIiAgIiwgci5zZXRBZGosIFNFQ09OREFSWV9TRVJWRVJfQURKKTsKICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHIuc2V0QWRqID49IEJBQ0tVUF9BUFBfQURKKSB7CiAgICAgICAgICAgICAgICAgICAgIG9vbUFkaiA9IGJ1aWxkT29tVGFnKCJiY2t1cCIsIG51bGwsIHIuc2V0QWRqLCBCQUNLVVBfQVBQX0FESik7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyLnNldEFkaiA+PSBIRUFWWV9XRUlHSFRfQVBQX0FESikgeworICAgICAgICAgICAgICAgICAgICBvb21BZGogPSBidWlsZE9vbVRhZygiaHZ5ICAiLCBudWxsLCByLnNldEFkaiwgSEVBVllfV0VJR0hUX0FQUF9BREopOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoci5zZXRBZGogPj0gUEVSQ0VQVElCTEVfQVBQX0FESikgeworICAgICAgICAgICAgICAgICAgICBvb21BZGogPSBidWlsZE9vbVRhZygicHJjcCAiLCBudWxsLCByLnNldEFkaiwgUEVSQ0VQVElCTEVfQVBQX0FESik7CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyLnNldEFkaiA+PSBWSVNJQkxFX0FQUF9BREopIHsKICAgICAgICAgICAgICAgICAgICAgb29tQWRqID0gYnVpbGRPb21UYWcoInZpcyAgIiwgbnVsbCwgci5zZXRBZGosIFZJU0lCTEVfQVBQX0FESik7CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyLnNldEFkaiA+PSBGT1JFR1JPVU5EX0FQUF9BREopIHsKQEAgLTEwMjgwLDEwICs3MzM4LDI3IEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHB3LnByaW50bG4oU3RyaW5nLmZvcm1hdCgiJXMlcyAjJTJkOiBhZGo9JXMvJXMgJXMgKCVzKSIsCiAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXgsIChyLnBlcnNpc3RlbnQgPyBwZXJzaXN0ZW50TGFiZWwgOiBub3JtYWxMYWJlbCksCi0gICAgICAgICAgICAgICAgICAgICAgICBpLCBvb21BZGosIHNjaGVkR3JvdXAsIHIudG9TaG9ydFN0cmluZygpLCByLmFkalR5cGUpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIE4taSwgb29tQWRqLCBzY2hlZEdyb3VwLCByLnRvU2hvcnRTdHJpbmcoKSwgci5hZGpUeXBlKSk7CiAgICAgICAgICAgICAgICAgaWYgKHIuYWRqU291cmNlICE9IG51bGwgfHwgci5hZGpUYXJnZXQgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICBwdy5wcmludGxuKHByZWZpeCArICIgICAgICAgICAgIiArIHIuYWRqVGFyZ2V0Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiPD0iICsgci5hZGpTb3VyY2UpOworICAgICAgICAgICAgICAgICAgICBwdy5wcmludChwcmVmaXgpOworICAgICAgICAgICAgICAgICAgICBwdy5wcmludCgiICAgICAgICAgICIpOworICAgICAgICAgICAgICAgICAgICBpZiAoci5hZGpUYXJnZXQgaW5zdGFuY2VvZiBDb21wb25lbnROYW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwdy5wcmludCgoKENvbXBvbmVudE5hbWUpci5hZGpUYXJnZXQpLmZsYXR0ZW5Ub1Nob3J0U3RyaW5nKCkpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHIuYWRqVGFyZ2V0ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB3LnByaW50KHIuYWRqVGFyZ2V0LnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoIntudWxsfSIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHB3LnByaW50KCI8PSIpOworICAgICAgICAgICAgICAgICAgICBpZiAoci5hZGpTb3VyY2UgaW5zdGFuY2VvZiBQcm9jZXNzUmVjb3JkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwdy5wcmludCgiUHJvY3siKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB3LnByaW50KCgoUHJvY2Vzc1JlY29yZClyLmFkalNvdXJjZSkudG9TaG9ydFN0cmluZygpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHB3LnByaW50bG4oIn0iKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyLmFkalNvdXJjZSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwdy5wcmludGxuKHIuYWRqU291cmNlLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgcHcucHJpbnRsbigie251bGx9Iik7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgIHB3LnByaW50bG4oU3RyaW5nLmZvcm1hdCgiJXMlcyAjJTJkOiAlcyIsCkBAIC0xMDM0NywyMiArNzQyMiw2IEBACiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBwcml2YXRlIGZpbmFsIGludCBpbmRleE9mVG9rZW5Mb2NrZWQoSUJpbmRlciB0b2tlbikgewotICAgICAgICBpbnQgY291bnQgPSBtSGlzdG9yeS5zaXplKCk7Ci0KLSAgICAgICAgLy8gY29udmVydCB0aGUgdG9rZW4gdG8gYW4gZW50cnkgaW4gdGhlIGhpc3RvcnkuCi0gICAgICAgIGludCBpbmRleCA9IC0xOwotICAgICAgICBmb3IgKGludCBpPWNvdW50LTE7IGk+PTA7IGktLSkgewotICAgICAgICAgICAgT2JqZWN0IG8gPSBtSGlzdG9yeS5nZXQoaSk7Ci0gICAgICAgICAgICBpZiAobyA9PSB0b2tlbikgewotICAgICAgICAgICAgICAgIGluZGV4ID0gaTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHJldHVybiBpbmRleDsKLSAgICB9Ci0KICAgICBwcml2YXRlIGZpbmFsIHZvaWQga2lsbFNlcnZpY2VzTG9ja2VkKFByb2Nlc3NSZWNvcmQgYXBwLAogICAgICAgICAgICAgYm9vbGVhbiBhbGxvd1Jlc3RhcnQpIHsKICAgICAgICAgLy8gUmVwb3J0IGRpc2Nvbm5lY3RlZCBzZXJ2aWNlcy4KQEAgLTEwMzcwLDkgKzc0MjksOSBAQAogICAgICAgICAgICAgLy8gWFhYIHdlIGFyZSBsZXR0aW5nIHRoZSBjbGllbnQgbGluayB0byB0aGUgc2VydmljZSBmb3IKICAgICAgICAgICAgIC8vIGRlYXRoIG5vdGlmaWNhdGlvbnMuCiAgICAgICAgICAgICBpZiAoYXBwLnNlcnZpY2VzLnNpemUoKSA+IDApIHsKLSAgICAgICAgICAgICAgICBJdGVyYXRvciBpdCA9IGFwcC5zZXJ2aWNlcy5pdGVyYXRvcigpOworICAgICAgICAgICAgICAgIEl0ZXJhdG9yPFNlcnZpY2VSZWNvcmQ+IGl0ID0gYXBwLnNlcnZpY2VzLml0ZXJhdG9yKCk7CiAgICAgICAgICAgICAgICAgd2hpbGUgKGl0Lmhhc05leHQoKSkgewotICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlUmVjb3JkIHIgPSAoU2VydmljZVJlY29yZClpdC5uZXh0KCk7CisgICAgICAgICAgICAgICAgICAgIFNlcnZpY2VSZWNvcmQgciA9IGl0Lm5leHQoKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHIuY29ubmVjdGlvbnMuc2l6ZSgpID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgSXRlcmF0b3I8Q29ubmVjdGlvblJlY29yZD4ganQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSByLmNvbm5lY3Rpb25zLnZhbHVlcygpLml0ZXJhdG9yKCk7CkBAIC0xMDQwNyw5ICs3NDY2LDkgQEAKICAgICAgICAgaWYgKGFwcC5zZXJ2aWNlcy5zaXplKCkgIT0gMCkgewogICAgICAgICAgICAgLy8gQW55IHNlcnZpY2VzIHJ1bm5pbmcgaW4gdGhlIGFwcGxpY2F0aW9uIG5lZWQgdG8gYmUgcGxhY2VkCiAgICAgICAgICAgICAvLyBiYWNrIGluIHRoZSBwZW5kaW5nIGxpc3QuCi0gICAgICAgICAgICBJdGVyYXRvciBpdCA9IGFwcC5zZXJ2aWNlcy5pdGVyYXRvcigpOworICAgICAgICAgICAgSXRlcmF0b3I8U2VydmljZVJlY29yZD4gaXQgPSBhcHAuc2VydmljZXMuaXRlcmF0b3IoKTsKICAgICAgICAgICAgIHdoaWxlIChpdC5oYXNOZXh0KCkpIHsKLSAgICAgICAgICAgICAgICBTZXJ2aWNlUmVjb3JkIHNyID0gKFNlcnZpY2VSZWNvcmQpaXQubmV4dCgpOworICAgICAgICAgICAgICAgIFNlcnZpY2VSZWNvcmQgc3IgPSBpdC5uZXh0KCk7CiAgICAgICAgICAgICAgICAgc3luY2hyb25pemVkIChzci5zdGF0cy5nZXRCYXR0ZXJ5U3RhdHMoKSkgewogICAgICAgICAgICAgICAgICAgICBzci5zdGF0cy5zdG9wTGF1bmNoZWRMb2NrZWQoKTsKICAgICAgICAgICAgICAgICB9CkBAIC0xMDU0OCw5ICs3NjA3LDkgQEAKICAgICAgICAgCiAgICAgICAgIC8vIFJlbW92ZSBwdWJsaXNoZWQgY29udGVudCBwcm92aWRlcnMuCiAgICAgICAgIGlmICghYXBwLnB1YlByb3ZpZGVycy5pc0VtcHR5KCkpIHsKLSAgICAgICAgICAgIEl0ZXJhdG9yIGl0ID0gYXBwLnB1YlByb3ZpZGVycy52YWx1ZXMoKS5pdGVyYXRvcigpOworICAgICAgICAgICAgSXRlcmF0b3I8Q29udGVudFByb3ZpZGVyUmVjb3JkPiBpdCA9IGFwcC5wdWJQcm92aWRlcnMudmFsdWVzKCkuaXRlcmF0b3IoKTsKICAgICAgICAgICAgIHdoaWxlIChpdC5oYXNOZXh0KCkpIHsKLSAgICAgICAgICAgICAgICBDb250ZW50UHJvdmlkZXJSZWNvcmQgY3ByID0gKENvbnRlbnRQcm92aWRlclJlY29yZClpdC5uZXh0KCk7CisgICAgICAgICAgICAgICAgQ29udGVudFByb3ZpZGVyUmVjb3JkIGNwciA9IGl0Lm5leHQoKTsKICAgICAgICAgICAgICAgICBjcHIucHJvdmlkZXIgPSBudWxsOwogICAgICAgICAgICAgICAgIGNwci5hcHAgPSBudWxsOwogCkBAIC0xMDY0Miw2ICs3NzAxLDEwIEBACiAgICAgICAgICAgICBpZiAoREVCVUdfUFJPQ0VTU0VTKSBTbG9nLnYoVEFHLAogICAgICAgICAgICAgICAgICAgICAiUmVtb3Zpbmcgbm9uLXBlcnNpc3RlbnQgcHJvY2VzcyBkdXJpbmcgY2xlYW51cDogIiArIGFwcCk7CiAgICAgICAgICAgICBtUHJvY2Vzc05hbWVzLnJlbW92ZShhcHAucHJvY2Vzc05hbWUsIGFwcC5pbmZvLnVpZCk7CisgICAgICAgICAgICBpZiAobUhlYXZ5V2VpZ2h0UHJvY2VzcyA9PSBhcHApIHsKKyAgICAgICAgICAgICAgICBtSGVhdnlXZWlnaHRQcm9jZXNzID0gbnVsbDsKKyAgICAgICAgICAgICAgICBtSGFuZGxlci5zZW5kRW1wdHlNZXNzYWdlKENBTkNFTF9IRUFWWV9OT1RJRklDQVRJT05fTVNHKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmICghYXBwLnJlbW92ZWQpIHsKICAgICAgICAgICAgIC8vIFRoaXMgYXBwIGlzIHBlcnNpc3RlbnQsIHNvIHdlIG5lZWQgdG8ga2VlcCBpdHMgcmVjb3JkIGFyb3VuZC4KICAgICAgICAgICAgIC8vIElmIGl0IGlzIG5vdCBhbHJlYWR5IG9uIHRoZSBwZW5kaW5nIGFwcCBsaXN0LCBhZGQgaXQgdGhlcmUKQEAgLTEwNjgzLDggKzc3NDYsNyBAQAogICAgICAgICBpbnQgTkwgPSBtTGF1bmNoaW5nUHJvdmlkZXJzLnNpemUoKTsKICAgICAgICAgYm9vbGVhbiByZXN0YXJ0ID0gZmFsc2U7CiAgICAgICAgIGZvciAoaW50IGk9MDsgaTxOTDsgaSsrKSB7Ci0gICAgICAgICAgICBDb250ZW50UHJvdmlkZXJSZWNvcmQgY3ByID0gKENvbnRlbnRQcm92aWRlclJlY29yZCkKLSAgICAgICAgICAgICAgICAgICAgbUxhdW5jaGluZ1Byb3ZpZGVycy5nZXQoaSk7CisgICAgICAgICAgICBDb250ZW50UHJvdmlkZXJSZWNvcmQgY3ByID0gbUxhdW5jaGluZ1Byb3ZpZGVycy5nZXQoaSk7CiAgICAgICAgICAgICBpZiAoY3ByLmxhdW5jaGluZ0FwcCA9PSBhcHApIHsKICAgICAgICAgICAgICAgICBpZiAoIWFsd2F5c0JhZCAmJiAhYXBwLmJhZCkgewogICAgICAgICAgICAgICAgICAgICByZXN0YXJ0ID0gdHJ1ZTsKQEAgLTEwODA3LDcgKzc4NjksNyBAQAogICAgICAgICBpZiAociA9PSBudWxsKSB7CiAgICAgICAgICAgICB0cnkgewogICAgICAgICAgICAgICAgIFJlc29sdmVJbmZvIHJJbmZvID0KLSAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHlUaHJlYWQuZ2V0UGFja2FnZU1hbmFnZXIoKS5yZXNvbHZlU2VydmljZSgKKyAgICAgICAgICAgICAgICAgICAgQXBwR2xvYmFscy5nZXRQYWNrYWdlTWFuYWdlcigpLnJlc29sdmVTZXJ2aWNlKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZpY2UsIHJlc29sdmVkVHlwZSwgMCk7CiAgICAgICAgICAgICAgICAgU2VydmljZUluZm8gc0luZm8gPQogICAgICAgICAgICAgICAgICAgICBySW5mbyAhPSBudWxsID8gckluZm8uc2VydmljZUluZm8gOiBudWxsOwpAQCAtMTA4NjQsNyArNzkyNiw3IEBACiAgICAgICAgIGlmIChyID09IG51bGwpIHsKICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgUmVzb2x2ZUluZm8gckluZm8gPQotICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eVRocmVhZC5nZXRQYWNrYWdlTWFuYWdlcigpLnJlc29sdmVTZXJ2aWNlKAorICAgICAgICAgICAgICAgICAgICBBcHBHbG9iYWxzLmdldFBhY2thZ2VNYW5hZ2VyKCkucmVzb2x2ZVNlcnZpY2UoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZSwgcmVzb2x2ZWRUeXBlLCBTVE9DS19QTV9GTEFHUyk7CiAgICAgICAgICAgICAgICAgU2VydmljZUluZm8gc0luZm8gPQogICAgICAgICAgICAgICAgICAgICBySW5mbyAhPSBudWxsID8gckluZm8uc2VydmljZUluZm8gOiBudWxsOwpAQCAtMTE2MDEsNyArODY2Myw3IEBACiAKICAgICBwdWJsaWMgdm9pZCB1cGRhdGVTZXJ2aWNlRm9yZWdyb3VuZExvY2tlZChQcm9jZXNzUmVjb3JkIHByb2MsIGJvb2xlYW4gb29tQWRqKSB7CiAgICAgICAgIGJvb2xlYW4gYW55Rm9yZWdyb3VuZCA9IGZhbHNlOwotICAgICAgICBmb3IgKFNlcnZpY2VSZWNvcmQgc3IgOiAoSGFzaFNldDxTZXJ2aWNlUmVjb3JkPilwcm9jLnNlcnZpY2VzKSB7CisgICAgICAgIGZvciAoU2VydmljZVJlY29yZCBzciA6IHByb2Muc2VydmljZXMpIHsKICAgICAgICAgICAgIGlmIChzci5pc0ZvcmVncm91bmQpIHsKICAgICAgICAgICAgICAgICBhbnlGb3JlZ3JvdW5kID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTExNjM1LDE0ICs4Njk3LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICArICIpIHdoZW4gYmluZGluZyBzZXJ2aWNlICIgKyBzZXJ2aWNlKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgSGlzdG9yeVJlY29yZCBhY3Rpdml0eSA9IG51bGw7CisgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCBhY3Rpdml0eSA9IG51bGw7CiAgICAgICAgICAgICBpZiAodG9rZW4gIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIGludCBhaW5kZXggPSBpbmRleE9mVG9rZW5Mb2NrZWQodG9rZW4pOworICAgICAgICAgICAgICAgIGludCBhaW5kZXggPSBtTWFpblN0YWNrLmluZGV4T2ZUb2tlbkxvY2tlZCh0b2tlbik7CiAgICAgICAgICAgICAgICAgaWYgKGFpbmRleCA8IDApIHsKICAgICAgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIkJpbmRpbmcgd2l0aCB1bmtub3duIGFjdGl2aXR5OiAiICsgdG9rZW4pOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYWN0aXZpdHkgPSAoSGlzdG9yeVJlY29yZCltSGlzdG9yeS5nZXQoYWluZGV4KTsKKyAgICAgICAgICAgICAgICBhY3Rpdml0eSA9IChBY3Rpdml0eVJlY29yZCltTWFpblN0YWNrLm1IaXN0b3J5LmdldChhaW5kZXgpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpbnQgY2xpZW50TGFiZWwgPSAwOwpAQCAtMTE3NDYsOCArODgwOCw4IEBACiAgICAgICAgIHJldHVybiAxOwogICAgIH0KIAotICAgIHByaXZhdGUgdm9pZCByZW1vdmVDb25uZWN0aW9uTG9ja2VkKAotICAgICAgICBDb25uZWN0aW9uUmVjb3JkIGMsIFByb2Nlc3NSZWNvcmQgc2tpcEFwcCwgSGlzdG9yeVJlY29yZCBza2lwQWN0KSB7CisgICAgdm9pZCByZW1vdmVDb25uZWN0aW9uTG9ja2VkKAorICAgICAgICBDb25uZWN0aW9uUmVjb3JkIGMsIFByb2Nlc3NSZWNvcmQgc2tpcEFwcCwgQWN0aXZpdHlSZWNvcmQgc2tpcEFjdCkgewogICAgICAgICBJQmluZGVyIGJpbmRlciA9IGMuY29ubi5hc0JpbmRlcigpOwogICAgICAgICBBcHBCaW5kUmVjb3JkIGIgPSBjLmJpbmRpbmc7CiAgICAgICAgIFNlcnZpY2VSZWNvcmQgcyA9IGIuc2VydmljZTsKQEAgLTEyNDI4LDcgKzk0OTAsNyBAQAogICAgICAgICAgICAgLy8gQWx3YXlzIG9rYXkuCiAgICAgICAgIH0gZWxzZSBpZiAoY2FsbGVyQXBwID09IG51bGwgfHwgIWNhbGxlckFwcC5wZXJzaXN0ZW50KSB7CiAgICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIGlmIChBY3Rpdml0eVRocmVhZC5nZXRQYWNrYWdlTWFuYWdlcigpLmlzUHJvdGVjdGVkQnJvYWRjYXN0KAorICAgICAgICAgICAgICAgIGlmIChBcHBHbG9iYWxzLmdldFBhY2thZ2VNYW5hZ2VyKCkuaXNQcm90ZWN0ZWRCcm9hZGNhc3QoCiAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlbnQuZ2V0QWN0aW9uKCkpKSB7CiAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBtc2cgPSAiUGVybWlzc2lvbiBEZW5pYWw6IG5vdCBhbGxvd2VkIHRvIHNlbmQgYnJvYWRjYXN0ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGludGVudC5nZXRBY3Rpb24oKSArICIgZnJvbSBwaWQ9IgpAQCAtMTI0ODcsNyArOTU0OSw3IEBACiAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICBpZiAoaW50ZW50LmdldENvbXBvbmVudCgpICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAvLyBCcm9hZGNhc3QgaXMgZ29pbmcgdG8gb25lIHNwZWNpZmljIHJlY2VpdmVyIGNsYXNzLi4uCi0gICAgICAgICAgICAgICAgQWN0aXZpdHlJbmZvIGFpID0gQWN0aXZpdHlUaHJlYWQuZ2V0UGFja2FnZU1hbmFnZXIoKS4KKyAgICAgICAgICAgICAgICBBY3Rpdml0eUluZm8gYWkgPSBBcHBHbG9iYWxzLmdldFBhY2thZ2VNYW5hZ2VyKCkuCiAgICAgICAgICAgICAgICAgICAgIGdldFJlY2VpdmVySW5mbyhpbnRlbnQuZ2V0Q29tcG9uZW50KCksIFNUT0NLX1BNX0ZMQUdTKTsKICAgICAgICAgICAgICAgICBpZiAoYWkgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICByZWNlaXZlcnMgPSBuZXcgQXJyYXlMaXN0KCk7CkBAIC0xMjUwMCw3ICs5NTYyLDcgQEAKICAgICAgICAgICAgICAgICBpZiAoKGludGVudC5nZXRGbGFncygpJkludGVudC5GTEFHX1JFQ0VJVkVSX1JFR0lTVEVSRURfT05MWSkKICAgICAgICAgICAgICAgICAgICAgICAgICA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVycyA9Ci0gICAgICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eVRocmVhZC5nZXRQYWNrYWdlTWFuYWdlcigpLnF1ZXJ5SW50ZW50UmVjZWl2ZXJzKAorICAgICAgICAgICAgICAgICAgICAgICAgQXBwR2xvYmFscy5nZXRQYWNrYWdlTWFuYWdlcigpLnF1ZXJ5SW50ZW50UmVjZWl2ZXJzKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnRlbnQsIHJlc29sdmVkVHlwZSwgU1RPQ0tfUE1fRkxBR1MpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICByZWdpc3RlcmVkUmVjZWl2ZXJzID0gbVJlY2VpdmVyUmVzb2x2ZXIucXVlcnlJbnRlbnQoaW50ZW50LCByZXNvbHZlZFR5cGUsIGZhbHNlKTsKQEAgLTEzMjUyLDcgKzEwMzE0LDcgQEAKICAgICAgICAgICAgIGlmIChyLmNhbGxpbmdVaWQgIT0gUHJvY2Vzcy5TWVNURU1fVUlEICYmCiAgICAgICAgICAgICAgICAgci5yZXF1aXJlZFBlcm1pc3Npb24gIT0gbnVsbCkgewogICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgIHBlcm0gPSBBY3Rpdml0eVRocmVhZC5nZXRQYWNrYWdlTWFuYWdlcigpLgorICAgICAgICAgICAgICAgICAgICBwZXJtID0gQXBwR2xvYmFscy5nZXRQYWNrYWdlTWFuYWdlcigpLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrUGVybWlzc2lvbihyLnJlcXVpcmVkUGVybWlzc2lvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZm8uYWN0aXZpdHlJbmZvLmFwcGxpY2F0aW9uSW5mby5wYWNrYWdlTmFtZSk7CiAgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKQEAgLTEzNTA5LDcgKzEwNTcxLDcgQEAKICAgICAgKiBjb25maWd1cmF0aW9uLgogICAgICAqLwogICAgIHB1YmxpYyBib29sZWFuIHVwZGF0ZUNvbmZpZ3VyYXRpb25Mb2NrZWQoQ29uZmlndXJhdGlvbiB2YWx1ZXMsCi0gICAgICAgICAgICBIaXN0b3J5UmVjb3JkIHN0YXJ0aW5nKSB7CisgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCBzdGFydGluZykgewogICAgICAgICBpbnQgY2hhbmdlcyA9IDA7CiAgICAgICAgIAogICAgICAgICBib29sZWFuIGtlcHQgPSB0cnVlOwpAQCAtMTM1NzgsMTggKzEwNjQwLDE4IEBACiAgICAgICAgICAgICAvLyBJZiB0aGUgY29uZmlndXJhdGlvbiBjaGFuZ2VkLCBhbmQgdGhlIGNhbGxlciBpcyBub3QgYWxyZWFkeQogICAgICAgICAgICAgLy8gaW4gdGhlIHByb2Nlc3Mgb2Ygc3RhcnRpbmcgYW4gYWN0aXZpdHksIHRoZW4gZmluZCB0aGUgdG9wCiAgICAgICAgICAgICAvLyBhY3Rpdml0eSB0byBjaGVjayBpZiBpdHMgY29uZmlndXJhdGlvbiBuZWVkcyB0byBjaGFuZ2UuCi0gICAgICAgICAgICBzdGFydGluZyA9IHRvcFJ1bm5pbmdBY3Rpdml0eUxvY2tlZChudWxsKTsKKyAgICAgICAgICAgIHN0YXJ0aW5nID0gbU1haW5TdGFjay50b3BSdW5uaW5nQWN0aXZpdHlMb2NrZWQobnVsbCk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIGlmIChzdGFydGluZyAhPSBudWxsKSB7Ci0gICAgICAgICAgICBrZXB0ID0gZW5zdXJlQWN0aXZpdHlDb25maWd1cmF0aW9uTG9ja2VkKHN0YXJ0aW5nLCBjaGFuZ2VzKTsKKyAgICAgICAgICAgIGtlcHQgPSBtTWFpblN0YWNrLmVuc3VyZUFjdGl2aXR5Q29uZmlndXJhdGlvbkxvY2tlZChzdGFydGluZywgY2hhbmdlcyk7CiAgICAgICAgICAgICBpZiAoa2VwdCkgewogICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgZGlkbid0IHJlc3VsdCBpbiB0aGUgc3RhcnRpbmcgYWN0aXZpdHkgYmVpbmcKICAgICAgICAgICAgICAgICAvLyBkZXN0cm95ZWQsIHRoZW4gd2UgbmVlZCB0byBtYWtlIHN1cmUgYXQgdGhpcyBwb2ludCB0aGF0IGFsbAogICAgICAgICAgICAgICAgIC8vIG90aGVyIGFjdGl2aXRpZXMgYXJlIG1hZGUgdmlzaWJsZS4KICAgICAgICAgICAgICAgICBpZiAoREVCVUdfU1dJVENIKSBTbG9nLmkoVEFHLCAiQ29uZmlnIGRpZG4ndCBkZXN0cm95ICIgKyBzdGFydGluZwogICAgICAgICAgICAgICAgICAgICAgICAgKyAiLCBlbnN1cmluZyBvdGhlcnMgYXJlIGNvcnJlY3QuIik7Ci0gICAgICAgICAgICAgICAgZW5zdXJlQWN0aXZpdGllc1Zpc2libGVMb2NrZWQoc3RhcnRpbmcsIGNoYW5nZXMpOworICAgICAgICAgICAgICAgIG1NYWluU3RhY2suZW5zdXJlQWN0aXZpdGllc1Zpc2libGVMb2NrZWQoc3RhcnRpbmcsIGNoYW5nZXMpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIApAQCAtMTM1OTksMTYwICsxMDY2MSw2IEBACiAgICAgICAgIAogICAgICAgICByZXR1cm4ga2VwdDsKICAgICB9Ci0KLSAgICBwcml2YXRlIGZpbmFsIGJvb2xlYW4gcmVsYXVuY2hBY3Rpdml0eUxvY2tlZChIaXN0b3J5UmVjb3JkIHIsCi0gICAgICAgICAgICBpbnQgY2hhbmdlcywgYm9vbGVhbiBhbmRSZXN1bWUpIHsKLSAgICAgICAgTGlzdDxSZXN1bHRJbmZvPiByZXN1bHRzID0gbnVsbDsKLSAgICAgICAgTGlzdDxJbnRlbnQ+IG5ld0ludGVudHMgPSBudWxsOwotICAgICAgICBpZiAoYW5kUmVzdW1lKSB7Ci0gICAgICAgICAgICByZXN1bHRzID0gci5yZXN1bHRzOwotICAgICAgICAgICAgbmV3SW50ZW50cyA9IHIubmV3SW50ZW50czsKLSAgICAgICAgfQotICAgICAgICBpZiAoREVCVUdfU1dJVENIKSBTbG9nLnYoVEFHLCAiUmVsYXVuY2hpbmc6ICIgKyByCi0gICAgICAgICAgICAgICAgKyAiIHdpdGggcmVzdWx0cz0iICsgcmVzdWx0cyArICIgbmV3SW50ZW50cz0iICsgbmV3SW50ZW50cwotICAgICAgICAgICAgICAgICsgIiBhbmRSZXN1bWU9IiArIGFuZFJlc3VtZSk7Ci0gICAgICAgIEV2ZW50TG9nLndyaXRlRXZlbnQoYW5kUmVzdW1lID8gRXZlbnRMb2dUYWdzLkFNX1JFTEFVTkNIX1JFU1VNRV9BQ1RJVklUWQotICAgICAgICAgICAgICAgIDogRXZlbnRMb2dUYWdzLkFNX1JFTEFVTkNIX0FDVElWSVRZLCBTeXN0ZW0uaWRlbnRpdHlIYXNoQ29kZShyKSwKLSAgICAgICAgICAgICAgICByLnRhc2sudGFza0lkLCByLnNob3J0Q29tcG9uZW50TmFtZSk7Ci0gICAgICAgIAotICAgICAgICByLnN0YXJ0RnJlZXppbmdTY3JlZW5Mb2NrZWQoci5hcHAsIDApOwotICAgICAgICAKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGlmIChERUJVR19TV0lUQ0gpIFNsb2cuaShUQUcsICJTd2l0Y2ggaXMgcmVzdGFydGluZyByZXN1bWVkICIgKyByKTsKLSAgICAgICAgICAgIHIuYXBwLnRocmVhZC5zY2hlZHVsZVJlbGF1bmNoQWN0aXZpdHkociwgcmVzdWx0cywgbmV3SW50ZW50cywKLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlcywgIWFuZFJlc3VtZSwgbUNvbmZpZ3VyYXRpb24pOwotICAgICAgICAgICAgLy8gTm90ZTogZG9uJ3QgbmVlZCB0byBjYWxsIHBhdXNlSWZTbGVlcGluZ0xvY2tlZCgpIGhlcmUsIGJlY2F1c2UKLSAgICAgICAgICAgIC8vIHRoZSBjYWxsZXIgd2lsbCBvbmx5IHBhc3MgaW4gJ2FuZFJlc3VtZScgaWYgdGhpcyBhY3Rpdml0eSBpcwotICAgICAgICAgICAgLy8gY3VycmVudGx5IHJlc3VtZWQsIHdoaWNoIGltcGxpZXMgd2UgYXJlbid0IHNsZWVwaW5nLgotICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGFuZFJlc3VtZSkgewotICAgICAgICAgICAgci5yZXN1bHRzID0gbnVsbDsKLSAgICAgICAgICAgIHIubmV3SW50ZW50cyA9IG51bGw7Ci0gICAgICAgICAgICByZXBvcnRSZXN1bWVkQWN0aXZpdHlMb2NrZWQocik7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBNYWtlIHN1cmUgdGhlIGdpdmVuIGFjdGl2aXR5IG1hdGNoZXMgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi4gIFJldHVybnMKLSAgICAgKiBmYWxzZSBpZiB0aGUgYWN0aXZpdHkgaGFkIHRvIGJlIGRlc3Ryb3llZC4gIFJldHVybnMgdHJ1ZSBpZiB0aGUKLSAgICAgKiBjb25maWd1cmF0aW9uIGlzIHRoZSBzYW1lLCBvciB0aGUgYWN0aXZpdHkgd2lsbCByZW1haW4gcnVubmluZyBhcy1pcwotICAgICAqIGZvciB3aGF0ZXZlciByZWFzb24uICBFbnN1cmVzIHRoZSBIaXN0b3J5UmVjb3JkIGlzIHVwZGF0ZWQgd2l0aCB0aGUKLSAgICAgKiBjb3JyZWN0IGNvbmZpZ3VyYXRpb24gYW5kIGFsbCBvdGhlciBib29ra2VlcGluZyBpcyBoYW5kbGVkLgotICAgICAqLwotICAgIHByaXZhdGUgZmluYWwgYm9vbGVhbiBlbnN1cmVBY3Rpdml0eUNvbmZpZ3VyYXRpb25Mb2NrZWQoSGlzdG9yeVJlY29yZCByLAotICAgICAgICAgICAgaW50IGdsb2JhbENoYW5nZXMpIHsKLSAgICAgICAgaWYgKG1Db25maWdXaWxsQ2hhbmdlKSB7Ci0gICAgICAgICAgICBpZiAoREVCVUdfU1dJVENIIHx8IERFQlVHX0NPTkZJR1VSQVRJT04pIFNsb2cudihUQUcsCi0gICAgICAgICAgICAgICAgICAgICJTa2lwcGluZyBjb25maWcgY2hlY2sgKHdpbGwgY2hhbmdlKTogIiArIHIpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmIChERUJVR19TV0lUQ0ggfHwgREVCVUdfQ09ORklHVVJBVElPTikgU2xvZy52KFRBRywKLSAgICAgICAgICAgICAgICAiRW5zdXJpbmcgY29ycmVjdCBjb25maWd1cmF0aW9uOiAiICsgcik7Ci0gICAgICAgIAotICAgICAgICAvLyBTaG9ydCBjaXJjdWl0OiBpZiB0aGUgdHdvIGNvbmZpZ3VyYXRpb25zIGFyZSB0aGUgZXhhY3Qgc2FtZQotICAgICAgICAvLyBvYmplY3QgKHRoZSBjb21tb24gY2FzZSksIHRoZW4gdGhlcmUgaXMgbm90aGluZyB0byBkby4KLSAgICAgICAgQ29uZmlndXJhdGlvbiBuZXdDb25maWcgPSBtQ29uZmlndXJhdGlvbjsKLSAgICAgICAgaWYgKHIuY29uZmlndXJhdGlvbiA9PSBuZXdDb25maWcpIHsKLSAgICAgICAgICAgIGlmIChERUJVR19TV0lUQ0ggfHwgREVCVUdfQ09ORklHVVJBVElPTikgU2xvZy52KFRBRywKLSAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ3VyYXRpb24gdW5jaGFuZ2VkIGluICIgKyByKTsKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICAvLyBXZSBkb24ndCB3b3JyeSBhYm91dCBhY3Rpdml0aWVzIHRoYXQgYXJlIGZpbmlzaGluZy4KLSAgICAgICAgaWYgKHIuZmluaXNoaW5nKSB7Ci0gICAgICAgICAgICBpZiAoREVCVUdfU1dJVENIIHx8IERFQlVHX0NPTkZJR1VSQVRJT04pIFNsb2cudihUQUcsCi0gICAgICAgICAgICAgICAgICAgICJDb25maWd1cmF0aW9uIGRvZXNuJ3QgbWF0dGVyIGluIGZpbmlzaGluZyAiICsgcik7Ci0gICAgICAgICAgICByLnN0b3BGcmVlemluZ1NjcmVlbkxvY2tlZChmYWxzZSk7Ci0gICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgLy8gT2theSB3ZSBub3cgYXJlIGdvaW5nIHRvIG1ha2UgdGhpcyBhY3Rpdml0eSBoYXZlIHRoZSBuZXcgY29uZmlnLgotICAgICAgICAvLyBCdXQgdGhlbiB3ZSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGl0IG5lZWRzIHRvIGRlYWwgd2l0aCB0aGF0LgotICAgICAgICBDb25maWd1cmF0aW9uIG9sZENvbmZpZyA9IHIuY29uZmlndXJhdGlvbjsKLSAgICAgICAgci5jb25maWd1cmF0aW9uID0gbmV3Q29uZmlnOwotICAgICAgICAKLSAgICAgICAgLy8gSWYgdGhlIGFjdGl2aXR5IGlzbid0IGN1cnJlbnRseSBydW5uaW5nLCBqdXN0IGxlYXZlIHRoZSBuZXcKLSAgICAgICAgLy8gY29uZmlndXJhdGlvbiBhbmQgaXQgd2lsbCBwaWNrIHRoYXQgdXAgbmV4dCB0aW1lIGl0IHN0YXJ0cy4KLSAgICAgICAgaWYgKHIuYXBwID09IG51bGwgfHwgci5hcHAudGhyZWFkID09IG51bGwpIHsKLSAgICAgICAgICAgIGlmIChERUJVR19TV0lUQ0ggfHwgREVCVUdfQ09ORklHVVJBVElPTikgU2xvZy52KFRBRywKLSAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ3VyYXRpb24gZG9lc24ndCBtYXR0ZXIgbm90IHJ1bm5pbmcgIiArIHIpOwotICAgICAgICAgICAgci5zdG9wRnJlZXppbmdTY3JlZW5Mb2NrZWQoZmFsc2UpOwotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIC8vIElmIHRoZSBhY3Rpdml0eSBpc24ndCBwZXJzaXN0ZW50LCB0aGVyZSBpcyBhIGNoYW5jZSB3ZSB3aWxsCi0gICAgICAgIC8vIG5lZWQgdG8gcmVzdGFydCBpdC4KLSAgICAgICAgaWYgKCFyLnBlcnNpc3RlbnQpIHsKLQotICAgICAgICAgICAgLy8gRmlndXJlIG91dCB3aGF0IGhhcyBjaGFuZ2VkIGJldHdlZW4gdGhlIHR3byBjb25maWd1cmF0aW9ucy4KLSAgICAgICAgICAgIGludCBjaGFuZ2VzID0gb2xkQ29uZmlnLmRpZmYobmV3Q29uZmlnKTsKLSAgICAgICAgICAgIGlmIChERUJVR19TV0lUQ0ggfHwgREVCVUdfQ09ORklHVVJBVElPTikgewotICAgICAgICAgICAgICAgIFNsb2cudihUQUcsICJDaGVja2luZyB0byByZXN0YXJ0ICIgKyByLmluZm8ubmFtZSArICI6IGNoYW5nZWQ9MHgiCi0gICAgICAgICAgICAgICAgICAgICAgICArIEludGVnZXIudG9IZXhTdHJpbmcoY2hhbmdlcykgKyAiLCBoYW5kbGVzPTB4IgotICAgICAgICAgICAgICAgICAgICAgICAgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKHIuaW5mby5jb25maWdDaGFuZ2VzKQotICAgICAgICAgICAgICAgICAgICAgICAgKyAiLCBuZXdDb25maWc9IiArIG5ld0NvbmZpZyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoKGNoYW5nZXMmKH5yLmluZm8uY29uZmlnQ2hhbmdlcykpICE9IDApIHsKLSAgICAgICAgICAgICAgICAvLyBBaGEsIHRoZSBhY3Rpdml0eSBpc24ndCBoYW5kbGluZyB0aGUgY2hhbmdlLCBzbyBESUUgRElFIERJRS4KLSAgICAgICAgICAgICAgICByLmNvbmZpZ0NoYW5nZUZsYWdzIHw9IGNoYW5nZXM7Ci0gICAgICAgICAgICAgICAgci5zdGFydEZyZWV6aW5nU2NyZWVuTG9ja2VkKHIuYXBwLCBnbG9iYWxDaGFuZ2VzKTsKLSAgICAgICAgICAgICAgICBpZiAoci5hcHAgPT0gbnVsbCB8fCByLmFwcC50aHJlYWQgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfU1dJVENIIHx8IERFQlVHX0NPTkZJR1VSQVRJT04pIFNsb2cudihUQUcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN3aXRjaCBpcyBkZXN0cm95aW5nIG5vbi1ydW5uaW5nICIgKyByKTsKLSAgICAgICAgICAgICAgICAgICAgZGVzdHJveUFjdGl2aXR5TG9ja2VkKHIsIHRydWUpOwotICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoci5zdGF0ZSA9PSBBY3Rpdml0eVN0YXRlLlBBVVNJTkcpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gQSBsaXR0bGUgYW5ub3lpbmc6IHdlIGFyZSB3YWl0aW5nIGZvciB0aGlzIGFjdGl2aXR5IHRvCi0gICAgICAgICAgICAgICAgICAgIC8vIGZpbmlzaCBwYXVzaW5nLiAgTGV0J3Mgbm90IGRvIGFueXRoaW5nIG5vdywgYnV0IGp1c3QKLSAgICAgICAgICAgICAgICAgICAgLy8gZmxhZyB0aGF0IGl0IG5lZWRzIHRvIGJlIHJlc3RhcnRlZCB3aGVuIGRvbmUgcGF1c2luZy4KLSAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX1NXSVRDSCB8fCBERUJVR19DT05GSUdVUkFUSU9OKSBTbG9nLnYoVEFHLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTd2l0Y2ggaXMgc2tpcHBpbmcgYWxyZWFkeSBwYXVzaW5nICIgKyByKTsKLSAgICAgICAgICAgICAgICAgICAgci5jb25maWdEZXN0cm95ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyLnN0YXRlID09IEFjdGl2aXR5U3RhdGUuUkVTVU1FRCkgewotICAgICAgICAgICAgICAgICAgICAvLyBUcnkgdG8gb3B0aW1pemUgdGhpcyBjYXNlOiB0aGUgY29uZmlndXJhdGlvbiBpcyBjaGFuZ2luZwotICAgICAgICAgICAgICAgICAgICAvLyBhbmQgd2UgbmVlZCB0byByZXN0YXJ0IHRoZSB0b3AsIHJlc3VtZWQgYWN0aXZpdHkuCi0gICAgICAgICAgICAgICAgICAgIC8vIEluc3RlYWQgb2YgZG9pbmcgdGhlIG5vcm1hbCBoYW5kc2hha2luZywganVzdCBzYXkKLSAgICAgICAgICAgICAgICAgICAgLy8gInJlc3RhcnQhIi4KLSAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX1NXSVRDSCB8fCBERUJVR19DT05GSUdVUkFUSU9OKSBTbG9nLnYoVEFHLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTd2l0Y2ggaXMgcmVzdGFydGluZyByZXN1bWVkICIgKyByKTsKLSAgICAgICAgICAgICAgICAgICAgcmVsYXVuY2hBY3Rpdml0eUxvY2tlZChyLCByLmNvbmZpZ0NoYW5nZUZsYWdzLCB0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgci5jb25maWdDaGFuZ2VGbGFncyA9IDA7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX1NXSVRDSCB8fCBERUJVR19DT05GSUdVUkFUSU9OKSBTbG9nLnYoVEFHLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTd2l0Y2ggaXMgcmVzdGFydGluZyBub24tcmVzdW1lZCAiICsgcik7Ci0gICAgICAgICAgICAgICAgICAgIHJlbGF1bmNoQWN0aXZpdHlMb2NrZWQociwgci5jb25maWdDaGFuZ2VGbGFncywgZmFsc2UpOwotICAgICAgICAgICAgICAgICAgICByLmNvbmZpZ0NoYW5nZUZsYWdzID0gMDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgLy8gQWxsIGRvbmUuLi4gIHRlbGwgdGhlIGNhbGxlciB3ZSB3ZXJlbid0IGFibGUgdG8ga2VlcCB0aGlzCi0gICAgICAgICAgICAgICAgLy8gYWN0aXZpdHkgYXJvdW5kLgotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgLy8gRGVmYXVsdCBjYXNlOiB0aGUgYWN0aXZpdHkgY2FuIGhhbmRsZSB0aGlzIG5ldyBjb25maWd1cmF0aW9uLCBzbwotICAgICAgICAvLyBoYW5kIGl0IG92ZXIuICBOb3RlIHRoYXQgd2UgZG9uJ3QgbmVlZCB0byBnaXZlIGl0IHRoZSBuZXcKLSAgICAgICAgLy8gY29uZmlndXJhdGlvbiwgc2luY2Ugd2UgYWx3YXlzIHNlbmQgY29uZmlndXJhdGlvbiBjaGFuZ2VzIHRvIGFsbAotICAgICAgICAvLyBwcm9jZXNzIHdoZW4gdGhleSBoYXBwZW4gc28gaXQgY2FuIGp1c3QgdXNlIHdoYXRldmVyIGNvbmZpZ3VyYXRpb24KLSAgICAgICAgLy8gaXQgbGFzdCBnb3QuCi0gICAgICAgIGlmIChyLmFwcCAhPSBudWxsICYmIHIuYXBwLnRocmVhZCAhPSBudWxsKSB7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgICAgIGlmIChERUJVR19DT05GSUdVUkFUSU9OKSBTbG9nLnYoVEFHLCAiU2VuZGluZyBuZXcgY29uZmlnIHRvICIgKyByKTsKLSAgICAgICAgICAgICAgICByLmFwcC50aHJlYWQuc2NoZWR1bGVBY3Rpdml0eUNvbmZpZ3VyYXRpb25DaGFuZ2VkKHIpOwotICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgICAgICAvLyBJZiBwcm9jZXNzIGRpZWQsIHdoYXRldmVyLgotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHIuc3RvcEZyZWV6aW5nU2NyZWVuTG9ja2VkKGZhbHNlKTsKLSAgICAgICAgCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KICAgICAKICAgICAvKioKICAgICAgKiBTYXZlIHRoZSBsb2NhbGUuICBZb3UgbXVzdCBiZSBpbnNpZGUgYSBzeW5jaHJvbml6ZWQgKHRoaXMpIGJsb2NrLgpAQCAtMTM4NDQsMTUgKzEwNzUyLDIwIEBACiAgICAgICAgICAgICBhcHAuYWRqVHlwZSA9ICJleGVjLXNlcnZpY2UiOwogICAgICAgICB9IGVsc2UgaWYgKGFwcC5mb3JlZ3JvdW5kU2VydmljZXMpIHsKICAgICAgICAgICAgIC8vIFRoZSB1c2VyIGlzIGF3YXJlIG9mIHRoaXMgYXBwLCBzbyBtYWtlIGl0IHZpc2libGUuCi0gICAgICAgICAgICBhZGogPSBWSVNJQkxFX0FQUF9BREo7CisgICAgICAgICAgICBhZGogPSBQRVJDRVBUSUJMRV9BUFBfQURKOwogICAgICAgICAgICAgc2NoZWRHcm91cCA9IFByb2Nlc3MuVEhSRUFEX0dST1VQX0RFRkFVTFQ7CiAgICAgICAgICAgICBhcHAuYWRqVHlwZSA9ICJmb3JlZ3JvdW5kLXNlcnZpY2UiOwogICAgICAgICB9IGVsc2UgaWYgKGFwcC5mb3JjaW5nVG9Gb3JlZ3JvdW5kICE9IG51bGwpIHsKICAgICAgICAgICAgIC8vIFRoZSB1c2VyIGlzIGF3YXJlIG9mIHRoaXMgYXBwLCBzbyBtYWtlIGl0IHZpc2libGUuCi0gICAgICAgICAgICBhZGogPSBWSVNJQkxFX0FQUF9BREo7CisgICAgICAgICAgICBhZGogPSBQRVJDRVBUSUJMRV9BUFBfQURKOwogICAgICAgICAgICAgc2NoZWRHcm91cCA9IFByb2Nlc3MuVEhSRUFEX0dST1VQX0RFRkFVTFQ7CiAgICAgICAgICAgICBhcHAuYWRqVHlwZSA9ICJmb3JjZS1mb3JlZ3JvdW5kIjsKICAgICAgICAgICAgIGFwcC5hZGpTb3VyY2UgPSBhcHAuZm9yY2luZ1RvRm9yZWdyb3VuZDsKKyAgICAgICAgfSBlbHNlIGlmIChhcHAgPT0gbUhlYXZ5V2VpZ2h0UHJvY2VzcykgeworICAgICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byBraWxsIHRoZSBjdXJyZW50IGhlYXZ5LXdlaWdodCBwcm9jZXNzLgorICAgICAgICAgICAgYWRqID0gSEVBVllfV0VJR0hUX0FQUF9BREo7CisgICAgICAgICAgICBzY2hlZEdyb3VwID0gUHJvY2Vzcy5USFJFQURfR1JPVVBfREVGQVVMVDsKKyAgICAgICAgICAgIGFwcC5hZGpUeXBlID0gImhlYXZ5IjsKICAgICAgICAgfSBlbHNlIGlmIChhcHAgPT0gbUhvbWVQcm9jZXNzKSB7CiAgICAgICAgICAgICAvLyBUaGlzIHByb2Nlc3MgaXMgaG9zdGluZyB3aGF0IHdlIGN1cnJlbnRseSBjb25zaWRlciB0byBiZSB0aGUKICAgICAgICAgICAgIC8vIGhvbWUgYXBwLCBzbyB3ZSBkb24ndCB3YW50IHRvIGxldCBpdCBnbyBpbnRvIHRoZSBiYWNrZ3JvdW5kLgpAQCAtMTM4NjcsNyArMTA3ODAsNyBAQAogICAgICAgICAgICAgYXBwLmFkalR5cGUgPSAiYmctYWN0aXZpdGllcyI7CiAgICAgICAgICAgICBOID0gYXBwLmFjdGl2aXRpZXMuc2l6ZSgpOwogICAgICAgICAgICAgZm9yIChpbnQgaj0wOyBqPE47IGorKykgewotICAgICAgICAgICAgICAgIGlmICgoKEhpc3RvcnlSZWNvcmQpYXBwLmFjdGl2aXRpZXMuZ2V0KGopKS52aXNpYmxlKSB7CisgICAgICAgICAgICAgICAgaWYgKGFwcC5hY3Rpdml0aWVzLmdldChqKS52aXNpYmxlKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgYXBwIGhhcyBhIHZpc2libGUgYWN0aXZpdHkhCiAgICAgICAgICAgICAgICAgICAgIGFwcC5oaWRkZW4gPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgYWRqID0gVklTSUJMRV9BUFBfQURKOwpAQCAtMTM5MTAsOSArMTA4MjMsOSBAQAogICAgICAgICAgICAgZmluYWwgbG9uZyBub3cgPSBTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKTsKICAgICAgICAgICAgIC8vIFRoaXMgcHJvY2VzcyBpcyBtb3JlIGltcG9ydGFudCBpZiB0aGUgdG9wIGFjdGl2aXR5IGlzCiAgICAgICAgICAgICAvLyBib3VuZCB0byB0aGUgc2VydmljZS4KLSAgICAgICAgICAgIEl0ZXJhdG9yIGp0ID0gYXBwLnNlcnZpY2VzLml0ZXJhdG9yKCk7CisgICAgICAgICAgICBJdGVyYXRvcjxTZXJ2aWNlUmVjb3JkPiBqdCA9IGFwcC5zZXJ2aWNlcy5pdGVyYXRvcigpOwogICAgICAgICAgICAgd2hpbGUgKGp0Lmhhc05leHQoKSAmJiBhZGogPiBGT1JFR1JPVU5EX0FQUF9BREopIHsKLSAgICAgICAgICAgICAgICBTZXJ2aWNlUmVjb3JkIHMgPSAoU2VydmljZVJlY29yZClqdC5uZXh0KCk7CisgICAgICAgICAgICAgICAgU2VydmljZVJlY29yZCBzID0ganQubmV4dCgpOwogICAgICAgICAgICAgICAgIGlmIChzLnN0YXJ0UmVxdWVzdGVkKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChub3cgPCAocy5sYXN0QWN0aXZpdHkrTUFYX1NFUlZJQ0VfSU5BQ1RJVklUWSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgc2VydmljZSBoYXMgc2VlbiBzb21lIGFjdGl2aXR5IHdpdGhpbgpAQCAtMTM5NDcsNyArMTA4NjAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFByb2Nlc3NSZWNvcmQgY2xpZW50ID0gY3IuYmluZGluZy5jbGllbnQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG15SGlkZGVuQWRqID0gaGlkZGVuQWRqOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChteUhpZGRlbkFkaiA+IGNsaWVudC5oaWRkZW5BZGopIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNsaWVudC5oaWRkZW5BZGogPiBWSVNJQkxFX0FQUF9BREopIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNsaWVudC5oaWRkZW5BZGogPj0gVklTSUJMRV9BUFBfQURKKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteUhpZGRlbkFkaiA9IGNsaWVudC5oaWRkZW5BZGo7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBteUhpZGRlbkFkaiA9IFZJU0lCTEVfQVBQX0FESjsKQEAgLTEzOTU2LDcgKzEwODY5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY2xpZW50QWRqID0gY29tcHV0ZU9vbUFkakxvY2tlZCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50LCBteUhpZGRlbkFkaiwgVE9QX0FQUCwgdHJ1ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFkaiA+IGNsaWVudEFkaikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGogPSBjbGllbnRBZGogPiBWSVNJQkxFX0FQUF9BREoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRqID0gY2xpZW50QWRqID49IFZJU0lCTEVfQVBQX0FESgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gY2xpZW50QWRqIDogVklTSUJMRV9BUFBfQURKOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWNsaWVudC5oaWRkZW4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcC5oaWRkZW4gPSBmYWxzZTsKQEAgLTEzOTY1LDcgKzEwODc4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwLmFkalR5cGVDb2RlID0gQWN0aXZpdHlNYW5hZ2VyLlJ1bm5pbmdBcHBQcm9jZXNzSW5mbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5SRUFTT05fU0VSVklDRV9JTl9VU0U7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcC5hZGpTb3VyY2UgPSBjci5iaW5kaW5nLmNsaWVudDsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwLmFkalRhcmdldCA9IHMuc2VydmljZUluZm8ubmFtZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwLmFkalRhcmdldCA9IHMubmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChjci5mbGFncyZDb250ZXh0LkJJTkRfTk9UX0ZPUkVHUk9VTkQpID09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNsaWVudC5jdXJTY2hlZEdyb3VwID09IFByb2Nlc3MuVEhSRUFEX0dST1VQX0RFRkFVTFQpIHsKQEAgLTEzOTczLDcgKzEwODg2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIEhpc3RvcnlSZWNvcmQgYSA9IGNyLmFjdGl2aXR5OworICAgICAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgYSA9IGNyLmFjdGl2aXR5OwogICAgICAgICAgICAgICAgICAgICAgICAgLy9pZiAoYSAhPSBudWxsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICBTbG9nLmkoVEFHLCAiQ29ubmVjdGlvbiB0byAiICsgYSAiOiBzdGF0ZT0iICsgYS5zdGF0ZSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAvL30KQEAgLTEzOTg3LDcgKzEwOTAwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHAuYWRqVHlwZUNvZGUgPSBBY3Rpdml0eU1hbmFnZXIuUnVubmluZ0FwcFByb2Nlc3NJbmZvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuUkVBU09OX1NFUlZJQ0VfSU5fVVNFOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcC5hZGpTb3VyY2UgPSBhOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcC5hZGpUYXJnZXQgPSBzLnNlcnZpY2VJbmZvLm5hbWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwLmFkalRhcmdldCA9IHMubmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KQEAgLTE0MDA3LDEwICsxMDkyMCwxMCBAQAogCiAgICAgICAgIGlmIChhcHAucHViUHJvdmlkZXJzLnNpemUoKSAhPSAwICYmIChhZGogPiBGT1JFR1JPVU5EX0FQUF9BREoKICAgICAgICAgICAgICAgICB8fCBzY2hlZEdyb3VwID09IFByb2Nlc3MuVEhSRUFEX0dST1VQX0JHX05PTklOVEVSQUNUSVZFKSkgewotICAgICAgICAgICAgSXRlcmF0b3IganQgPSBhcHAucHViUHJvdmlkZXJzLnZhbHVlcygpLml0ZXJhdG9yKCk7CisgICAgICAgICAgICBJdGVyYXRvcjxDb250ZW50UHJvdmlkZXJSZWNvcmQ+IGp0ID0gYXBwLnB1YlByb3ZpZGVycy52YWx1ZXMoKS5pdGVyYXRvcigpOwogICAgICAgICAgICAgd2hpbGUgKGp0Lmhhc05leHQoKSAmJiAoYWRqID4gRk9SRUdST1VORF9BUFBfQURKCiAgICAgICAgICAgICAgICAgICAgIHx8IHNjaGVkR3JvdXAgPT0gUHJvY2Vzcy5USFJFQURfR1JPVVBfQkdfTk9OSU5URVJBQ1RJVkUpKSB7Ci0gICAgICAgICAgICAgICAgQ29udGVudFByb3ZpZGVyUmVjb3JkIGNwciA9IChDb250ZW50UHJvdmlkZXJSZWNvcmQpanQubmV4dCgpOworICAgICAgICAgICAgICAgIENvbnRlbnRQcm92aWRlclJlY29yZCBjcHIgPSBqdC5uZXh0KCk7CiAgICAgICAgICAgICAgICAgaWYgKGNwci5jbGllbnRzLnNpemUoKSAhPSAwKSB7CiAgICAgICAgICAgICAgICAgICAgIEl0ZXJhdG9yPFByb2Nlc3NSZWNvcmQ+IGt0ID0gY3ByLmNsaWVudHMuaXRlcmF0b3IoKTsKICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKGt0Lmhhc05leHQoKSAmJiBhZGogPiBGT1JFR1JPVU5EX0FQUF9BREopIHsKQEAgLTE0MDM5LDcgKzEwOTUyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHAuYWRqVHlwZUNvZGUgPSBBY3Rpdml0eU1hbmFnZXIuUnVubmluZ0FwcFByb2Nlc3NJbmZvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuUkVBU09OX1BST1ZJREVSX0lOX1VTRTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHAuYWRqU291cmNlID0gY2xpZW50OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcC5hZGpUYXJnZXQgPSBjcHIuaW5mby5uYW1lOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFwcC5hZGpUYXJnZXQgPSBjcHIubmFtZTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjbGllbnQuY3VyU2NoZWRHcm91cCA9PSBQcm9jZXNzLlRIUkVBRF9HUk9VUF9ERUZBVUxUKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NoZWRHcm91cCA9IFByb2Nlc3MuVEhSRUFEX0dST1VQX0RFRkFVTFQ7CkBAIC0xNDA1NSw3ICsxMDk2OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBzY2hlZEdyb3VwID0gUHJvY2Vzcy5USFJFQURfR1JPVVBfREVGQVVMVDsKICAgICAgICAgICAgICAgICAgICAgICAgIGFwcC5oaWRkZW4gPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgICAgIGFwcC5hZGpUeXBlID0gInByb3ZpZGVyIjsKLSAgICAgICAgICAgICAgICAgICAgICAgIGFwcC5hZGpUYXJnZXQgPSBjcHIuaW5mby5uYW1lOworICAgICAgICAgICAgICAgICAgICAgICAgYXBwLmFkalRhcmdldCA9IGNwci5uYW1lOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtMTQwNjcsNyArMTA5ODAsNyBAQAogICAgICAgICAvLyAgICAgICIgYWRqPSIgKyBhZGogKyAiIGN1ckFkaj0iICsgYXBwLmN1ckFkaiArICIgbWF4QWRqPSIgKyBhcHAubWF4QWRqKTsKICAgICAgICAgaWYgKGFkaiA+IGFwcC5tYXhBZGopIHsKICAgICAgICAgICAgIGFkaiA9IGFwcC5tYXhBZGo7Ci0gICAgICAgICAgICBpZiAoYXBwLm1heEFkaiA8PSBWSVNJQkxFX0FQUF9BREopIHsKKyAgICAgICAgICAgIGlmIChhcHAubWF4QWRqIDw9IFBFUkNFUFRJQkxFX0FQUF9BREopIHsKICAgICAgICAgICAgICAgICBzY2hlZEdyb3VwID0gUHJvY2Vzcy5USFJFQURfR1JPVVBfREVGQVVMVDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTQxMDMsOCArMTEwMTYsOCBAQAogICAgIHByaXZhdGUgZmluYWwgYm9vbGVhbiBjYW5HY05vd0xvY2tlZCgpIHsKICAgICAgICAgcmV0dXJuIG1QYXJhbGxlbEJyb2FkY2FzdHMuc2l6ZSgpID09IDAKICAgICAgICAgICAgICAgICAmJiBtT3JkZXJlZEJyb2FkY2FzdHMuc2l6ZSgpID09IDAKLSAgICAgICAgICAgICAgICAmJiAobVNsZWVwaW5nIHx8IChtUmVzdW1lZEFjdGl2aXR5ICE9IG51bGwgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgIG1SZXN1bWVkQWN0aXZpdHkuaWRsZSkpOworICAgICAgICAgICAgICAgICYmIChtU2xlZXBpbmcgfHwgKG1NYWluU3RhY2subVJlc3VtZWRBY3Rpdml0eSAhPSBudWxsICYmCisgICAgICAgICAgICAgICAgICAgICAgICBtTWFpblN0YWNrLm1SZXN1bWVkQWN0aXZpdHkuaWRsZSkpOwogICAgIH0KICAgICAKICAgICAvKioKQEAgLTE0MTE5LDcgKzExMDMyLDcgQEAKICAgICAgICAgaWYgKGNhbkdjTm93TG9ja2VkKCkpIHsKICAgICAgICAgICAgIHdoaWxlIChtUHJvY2Vzc2VzVG9HYy5zaXplKCkgPiAwKSB7CiAgICAgICAgICAgICAgICAgUHJvY2Vzc1JlY29yZCBwcm9jID0gbVByb2Nlc3Nlc1RvR2MucmVtb3ZlKDApOwotICAgICAgICAgICAgICAgIGlmIChwcm9jLmN1clJhd0FkaiA+IFZJU0lCTEVfQVBQX0FESiB8fCBwcm9jLnJlcG9ydExvd01lbW9yeSkgeworICAgICAgICAgICAgICAgIGlmIChwcm9jLmN1clJhd0FkaiA+IFBFUkNFUFRJQkxFX0FQUF9BREogfHwgcHJvYy5yZXBvcnRMb3dNZW1vcnkpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKChwcm9jLmxhc3RSZXF1ZXN0ZWRHYytHQ19NSU5fSU5URVJWQUwpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPD0gU3lzdGVtQ2xvY2sudXB0aW1lTWlsbGlzKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRvIGF2b2lkIHNwYW1taW5nIHRoZSBzeXN0ZW0sIHdlIHdpbGwgR0MgcHJvY2Vzc2VzIG9uZQpAQCAtMTQyNzQsMTkgKzExMTg3LDE5IEBACiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAotICAgIHByaXZhdGUgZmluYWwgSGlzdG9yeVJlY29yZCByZXN1bWVkQXBwTG9ja2VkKCkgewotICAgICAgICBIaXN0b3J5UmVjb3JkIHJlc3VtZWRBY3Rpdml0eSA9IG1SZXN1bWVkQWN0aXZpdHk7CisgICAgcHJpdmF0ZSBmaW5hbCBBY3Rpdml0eVJlY29yZCByZXN1bWVkQXBwTG9ja2VkKCkgeworICAgICAgICBBY3Rpdml0eVJlY29yZCByZXN1bWVkQWN0aXZpdHkgPSBtTWFpblN0YWNrLm1SZXN1bWVkQWN0aXZpdHk7CiAgICAgICAgIGlmIChyZXN1bWVkQWN0aXZpdHkgPT0gbnVsbCB8fCByZXN1bWVkQWN0aXZpdHkuYXBwID09IG51bGwpIHsKLSAgICAgICAgICAgIHJlc3VtZWRBY3Rpdml0eSA9IG1QYXVzaW5nQWN0aXZpdHk7CisgICAgICAgICAgICByZXN1bWVkQWN0aXZpdHkgPSBtTWFpblN0YWNrLm1QYXVzaW5nQWN0aXZpdHk7CiAgICAgICAgICAgICBpZiAocmVzdW1lZEFjdGl2aXR5ID09IG51bGwgfHwgcmVzdW1lZEFjdGl2aXR5LmFwcCA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgcmVzdW1lZEFjdGl2aXR5ID0gdG9wUnVubmluZ0FjdGl2aXR5TG9ja2VkKG51bGwpOworICAgICAgICAgICAgICAgIHJlc3VtZWRBY3Rpdml0eSA9IG1NYWluU3RhY2sudG9wUnVubmluZ0FjdGl2aXR5TG9ja2VkKG51bGwpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHJldHVybiByZXN1bWVkQWN0aXZpdHk7CiAgICAgfQogCiAgICAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIHVwZGF0ZU9vbUFkakxvY2tlZChQcm9jZXNzUmVjb3JkIGFwcCkgewotICAgICAgICBmaW5hbCBIaXN0b3J5UmVjb3JkIFRPUF9BQ1QgPSByZXN1bWVkQXBwTG9ja2VkKCk7CisgICAgICAgIGZpbmFsIEFjdGl2aXR5UmVjb3JkIFRPUF9BQ1QgPSByZXN1bWVkQXBwTG9ja2VkKCk7CiAgICAgICAgIGZpbmFsIFByb2Nlc3NSZWNvcmQgVE9QX0FQUCA9IFRPUF9BQ1QgIT0gbnVsbCA/IFRPUF9BQ1QuYXBwIDogbnVsbDsKICAgICAgICAgaW50IGN1ckFkaiA9IGFwcC5jdXJBZGo7CiAgICAgICAgIGZpbmFsIGJvb2xlYW4gd2FzSGlkZGVuID0gYXBwLmN1ckFkaiA+PSBISURERU5fQVBQX01JTl9BREoKQEAgLTE0MzA3LDkgKzExMjIwLDkgQEAKICAgICAgICAgcmV0dXJuIHJlczsKICAgICB9CiAKLSAgICBwcml2YXRlIGZpbmFsIGJvb2xlYW4gdXBkYXRlT29tQWRqTG9ja2VkKCkgeworICAgIGZpbmFsIGJvb2xlYW4gdXBkYXRlT29tQWRqTG9ja2VkKCkgewogICAgICAgICBib29sZWFuIGRpZE9vbUFkaiA9IHRydWU7Ci0gICAgICAgIGZpbmFsIEhpc3RvcnlSZWNvcmQgVE9QX0FDVCA9IHJlc3VtZWRBcHBMb2NrZWQoKTsKKyAgICAgICAgZmluYWwgQWN0aXZpdHlSZWNvcmQgVE9QX0FDVCA9IHJlc3VtZWRBcHBMb2NrZWQoKTsKICAgICAgICAgZmluYWwgUHJvY2Vzc1JlY29yZCBUT1BfQVBQID0gVE9QX0FDVCAhPSBudWxsID8gVE9QX0FDVC5hcHAgOiBudWxsOwogCiAgICAgICAgIGlmIChmYWxzZSkgewpAQCAtMTQzNzEsNyArMTEyODQsNyBAQAogICAgICAgICByZXR1cm4gRU5GT1JDRV9QUk9DRVNTX0xJTUlUIHx8IG1Qcm9jZXNzTGltaXQgPiAwID8gZmFsc2UgOiBkaWRPb21BZGo7CiAgICAgfQogCi0gICAgcHJpdmF0ZSBmaW5hbCB2b2lkIHRyaW1BcHBsaWNhdGlvbnMoKSB7CisgICAgZmluYWwgdm9pZCB0cmltQXBwbGljYXRpb25zKCkgewogICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKICAgICAgICAgICAgIGludCBpOwogCkBAIC0xNDQ5MSw3ICsxMTQwNCw3IEBACiAgICAgICAgICAgICAgICAgICAgIGlmIChDb25maWcuTE9HVikgU2xvZy52KAogICAgICAgICAgICAgICAgICAgICAgICAgVEFHLCAiTG9va2luZyB0byBxdWl0ICIgKyBhcHAucHJvY2Vzc05hbWUpOwogICAgICAgICAgICAgICAgICAgICBmb3IgKGo9MDsgajxOVU1BICYmIGNhblF1aXQ7IGorKykgewotICAgICAgICAgICAgICAgICAgICAgICAgSGlzdG9yeVJlY29yZCByID0gKEhpc3RvcnlSZWNvcmQpYXBwLmFjdGl2aXRpZXMuZ2V0KGopOworICAgICAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IGFwcC5hY3Rpdml0aWVzLmdldChqKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChDb25maWcuTE9HVikgU2xvZy52KAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRBRywgIiAgIiArIHIuaW50ZW50LmdldENvbXBvbmVudCgpLmZsYXR0ZW5Ub1Nob3J0U3RyaW5nKCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICI6IGZyb3plbj0iICsgci5oYXZlU3RhdGUgKyAiLCB2aXNpYmxlPSIgKyByLnZpc2libGUpOwpAQCAtMTQ1MDEsOSArMTE0MTQsOSBAQAogICAgICAgICAgICAgICAgICAgICBpZiAoY2FuUXVpdCkgewogICAgICAgICAgICAgICAgICAgICAgICAgLy8gRmluaXNoIGFsbCBvZiB0aGUgYWN0aXZpdGllcywgYW5kIHRoZW4gdGhlIGFwcCBpdHNlbGYuCiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGo9MDsgajxOVU1BOyBqKyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBIaXN0b3J5UmVjb3JkIHIgPSAoSGlzdG9yeVJlY29yZClhcHAuYWN0aXZpdGllcy5nZXQoaik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IGFwcC5hY3Rpdml0aWVzLmdldChqKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXIuZmluaXNoaW5nKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Ryb3lBY3Rpdml0eUxvY2tlZChyLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuc3RhY2suZGVzdHJveUFjdGl2aXR5TG9ja2VkKHIsIGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgci5yZXN1bHRUbyA9IG51bGw7CiAgICAgICAgICAgICAgICAgICAgICAgICB9CkBAIC0xNDU0MCwyNSArMTE0NTMsMjUgQEAKICAgICAgICAgICAgIC8vIEZpbmFsbHksIGlmIHRoZXJlIGFyZSB0b28gbWFueSBhY3Rpdml0aWVzIG5vdyBydW5uaW5nLCB0cnkgdG8KICAgICAgICAgICAgIC8vIGZpbmlzaCBhcyBtYW55IGFzIHdlIGNhbiB0byBnZXQgYmFjayBkb3duIHRvIHRoZSBsaW1pdC4KICAgICAgICAgICAgIGZvciAoICAgaT0wOwotICAgICAgICAgICAgICAgICAgICBpPG1MUlVBY3Rpdml0aWVzLnNpemUoKQotICAgICAgICAgICAgICAgICAgICAgICAgJiYgbUxSVUFjdGl2aXRpZXMuc2l6ZSgpID4gY3VyTWF4QWN0aXZpdGllczsKKyAgICAgICAgICAgICAgICAgICAgaTxtTWFpblN0YWNrLm1MUlVBY3Rpdml0aWVzLnNpemUoKQorICAgICAgICAgICAgICAgICAgICAgICAgJiYgbU1haW5TdGFjay5tTFJVQWN0aXZpdGllcy5zaXplKCkgPiBjdXJNYXhBY3Rpdml0aWVzOwogICAgICAgICAgICAgICAgICAgICBpKyspIHsKLSAgICAgICAgICAgICAgICBmaW5hbCBIaXN0b3J5UmVjb3JkIHIKLSAgICAgICAgICAgICAgICAgICAgPSAoSGlzdG9yeVJlY29yZCltTFJVQWN0aXZpdGllcy5nZXQoaSk7CisgICAgICAgICAgICAgICAgZmluYWwgQWN0aXZpdHlSZWNvcmQgcgorICAgICAgICAgICAgICAgICAgICA9IChBY3Rpdml0eVJlY29yZCltTWFpblN0YWNrLm1MUlVBY3Rpdml0aWVzLmdldChpKTsKIAogICAgICAgICAgICAgICAgIC8vIFdlIGNhbiBmaW5pc2ggdGhpcyBvbmUgaWYgd2UgaGF2ZSBpdHMgaWNpY2xlIHNhdmVkIGFuZAogICAgICAgICAgICAgICAgIC8vIGl0IGlzIG5vdCBwZXJzaXN0ZW50LgogICAgICAgICAgICAgICAgIGlmICgoci5oYXZlU3RhdGUgfHwgIXIuc3RhdGVOb3ROZWVkZWQpICYmICFyLnZpc2libGUKICAgICAgICAgICAgICAgICAgICAgICAgICYmIHIuc3RvcHBlZCAmJiAhci5wZXJzaXN0ZW50ICYmICFyLmZpbmlzaGluZykgewotICAgICAgICAgICAgICAgICAgICBmaW5hbCBpbnQgb3JpZ1NpemUgPSBtTFJVQWN0aXZpdGllcy5zaXplKCk7Ci0gICAgICAgICAgICAgICAgICAgIGRlc3Ryb3lBY3Rpdml0eUxvY2tlZChyLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgZmluYWwgaW50IG9yaWdTaXplID0gbU1haW5TdGFjay5tTFJVQWN0aXZpdGllcy5zaXplKCk7CisgICAgICAgICAgICAgICAgICAgIHIuc3RhY2suZGVzdHJveUFjdGl2aXR5TG9ja2VkKHIsIHRydWUpOwogCiAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgd2lsbCByZW1vdmUgaXQgZnJvbSB0aGUgTFJVIGxpc3QsIHNvIGtlZXAKICAgICAgICAgICAgICAgICAgICAgLy8gb3VyIGluZGV4IGF0IHRoZSBzYW1lIHZhbHVlLiAgTm90ZSB0aGF0IHRoaXMgY2hlY2sgdG8KICAgICAgICAgICAgICAgICAgICAgLy8gc2VlIGlmIHRoZSBzaXplIGNoYW5nZXMgaXMganVzdCBwYXJhbm9pYSAtLSBpZgogICAgICAgICAgICAgICAgICAgICAvLyBzb21ldGhpbmcgdW5leHBlY3RlZCBoYXBwZW5zLCB3ZSBkb24ndCB3YW50IHRvIGVuZCB1cAogICAgICAgICAgICAgICAgICAgICAvLyBpbiBhbiBpbmZpbml0ZSBsb29wLgotICAgICAgICAgICAgICAgICAgICBpZiAob3JpZ1NpemUgPiBtTFJVQWN0aXZpdGllcy5zaXplKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG9yaWdTaXplID4gbU1haW5TdGFjay5tTFJVQWN0aXZpdGllcy5zaXplKCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGktLTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2FtL0FjdGl2aXR5UmVjb3JkLmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9BY3Rpdml0eVJlY29yZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5NzU2YTcKLS0tIC9kZXYvbnVsbAorKysgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9BY3Rpdml0eVJlY29yZC5qYXZhCkBAIC0wLDAgKzEsNTg1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5zZXJ2ZXIuYW07CisKK2ltcG9ydCBjb20uYW5kcm9pZC5zZXJ2ZXIuQXR0cmlidXRlQ2FjaGU7CitpbXBvcnQgY29tLmFuZHJvaWQuc2VydmVyLmFtLkFjdGl2aXR5U3RhY2suQWN0aXZpdHlTdGF0ZTsKKworaW1wb3J0IGFuZHJvaWQuYXBwLkFjdGl2aXR5OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLkFjdGl2aXR5SW5mbzsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uQXBwbGljYXRpb25JbmZvOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5yZXMuQ29uZmlndXJhdGlvbjsKK2ltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLkJpdG1hcDsKK2ltcG9ydCBhbmRyb2lkLm9zLkJ1bmRsZTsKK2ltcG9ydCBhbmRyb2lkLm9zLk1lc3NhZ2U7CitpbXBvcnQgYW5kcm9pZC5vcy5Qcm9jZXNzOworaW1wb3J0IGFuZHJvaWQub3MuU3lzdGVtQ2xvY2s7CitpbXBvcnQgYW5kcm9pZC51dGlsLkV2ZW50TG9nOworaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CitpbXBvcnQgYW5kcm9pZC51dGlsLlNsb2c7CitpbXBvcnQgYW5kcm9pZC52aWV3LklBcHBsaWNhdGlvblRva2VuOworCitpbXBvcnQgamF2YS5pby5QcmludFdyaXRlcjsKK2ltcG9ydCBqYXZhLmxhbmcucmVmLldlYWtSZWZlcmVuY2U7CitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKKworLyoqCisgKiBBbiBlbnRyeSBpbiB0aGUgaGlzdG9yeSBzdGFjaywgcmVwcmVzZW50aW5nIGFuIGFjdGl2aXR5LgorICovCitjbGFzcyBBY3Rpdml0eVJlY29yZCBleHRlbmRzIElBcHBsaWNhdGlvblRva2VuLlN0dWIgeworICAgIGZpbmFsIEFjdGl2aXR5TWFuYWdlclNlcnZpY2Ugc2VydmljZTsgLy8gb3duZXIKKyAgICBmaW5hbCBBY3Rpdml0eVN0YWNrIHN0YWNrOyAvLyBvd25lcgorICAgIGZpbmFsIEFjdGl2aXR5SW5mbyBpbmZvOyAvLyBhbGwgYWJvdXQgbWUKKyAgICBmaW5hbCBpbnQgbGF1bmNoZWRGcm9tVWlkOyAvLyBhbHdheXMgdGhlIHVpZCB3aG8gc3RhcnRlZCB0aGUgYWN0aXZpdHkuCisgICAgZmluYWwgSW50ZW50IGludGVudDsgICAgLy8gdGhlIG9yaWdpbmFsIGludGVudCB0aGF0IGdlbmVyYXRlZCB1cworICAgIGZpbmFsIENvbXBvbmVudE5hbWUgcmVhbEFjdGl2aXR5OyAgLy8gdGhlIGludGVudCBjb21wb25lbnQsIG9yIHRhcmdldCBvZiBhbiBhbGlhcy4KKyAgICBmaW5hbCBTdHJpbmcgc2hvcnRDb21wb25lbnROYW1lOyAvLyB0aGUgc2hvcnQgY29tcG9uZW50IG5hbWUgb2YgdGhlIGludGVudAorICAgIGZpbmFsIFN0cmluZyByZXNvbHZlZFR5cGU7IC8vIGFzIHBlciBvcmlnaW5hbCBjYWxsZXI7CisgICAgZmluYWwgU3RyaW5nIHBhY2thZ2VOYW1lOyAvLyB0aGUgcGFja2FnZSBpbXBsZW1lbnRpbmcgaW50ZW50J3MgY29tcG9uZW50CisgICAgZmluYWwgU3RyaW5nIHByb2Nlc3NOYW1lOyAvLyBwcm9jZXNzIHdoZXJlIHRoaXMgY29tcG9uZW50IHdhbnRzIHRvIHJ1bgorICAgIGZpbmFsIFN0cmluZyB0YXNrQWZmaW5pdHk7IC8vIGFzIHBlciBBY3Rpdml0eUluZm8udGFza0FmZmluaXR5CisgICAgZmluYWwgYm9vbGVhbiBzdGF0ZU5vdE5lZWRlZDsgLy8gQXMgcGVyIEFjdGl2aXR5SW5mby5mbGFncworICAgIGZpbmFsIGJvb2xlYW4gZnVsbHNjcmVlbjsgICAgIC8vIGNvdmVycyB0aGUgZnVsbCBzY3JlZW4/CisgICAgZmluYWwgYm9vbGVhbiBjb21wb25lbnRTcGVjaWZpZWQ7ICAvLyBkaWQgY2FsbGVyIHNwZWNpZml5IGFuIGV4cGxpY2l0IGNvbXBvbmVudD8KKyAgICBmaW5hbCBib29sZWFuIGlzSG9tZUFjdGl2aXR5OyAvLyBkbyB3ZSBjb25zaWRlciB0aGlzIHRvIGJlIGEgaG9tZSBhY3Rpdml0eT8KKyAgICBmaW5hbCBTdHJpbmcgYmFzZURpcjsgICAvLyB3aGVyZSBhY3Rpdml0eSBzb3VyY2UgKHJlc291cmNlcyBldGMpIGxvY2F0ZWQKKyAgICBmaW5hbCBTdHJpbmcgcmVzRGlyOyAgIC8vIHdoZXJlIHB1YmxpYyBhY3Rpdml0eSBzb3VyY2UgKHB1YmxpYyByZXNvdXJjZXMgZXRjKSBsb2NhdGVkCisgICAgZmluYWwgU3RyaW5nIGRhdGFEaXI7ICAgLy8gd2hlcmUgYWN0aXZpdHkgZGF0YSBzaG91bGQgZ28KKyAgICBDaGFyU2VxdWVuY2Ugbm9uTG9jYWxpemVkTGFiZWw7ICAvLyB0aGUgbGFiZWwgaW5mb3JtYXRpb24gZnJvbSB0aGUgcGFja2FnZSBtZ3IuCisgICAgaW50IGxhYmVsUmVzOyAgICAgICAgICAgLy8gdGhlIGxhYmVsIGluZm9ybWF0aW9uIGZyb20gdGhlIHBhY2thZ2UgbWdyLgorICAgIGludCBpY29uOyAgICAgICAgICAgICAgIC8vIHJlc291cmNlIGlkZW50aWZpZXIgb2YgYWN0aXZpdHkncyBpY29uLgorICAgIGludCB0aGVtZTsgICAgICAgICAgICAgIC8vIHJlc291cmNlIGlkZW50aWZpZXIgb2YgYWN0aXZpdHkncyB0aGVtZS4KKyAgICBUYXNrUmVjb3JkIHRhc2s7ICAgICAgICAvLyB0aGUgdGFzayB0aGlzIGlzIGluLgorICAgIGxvbmcgc3RhcnRUaW1lOyAgICAgICAgIC8vIHdoZW4gd2Ugc3RhcnRpbmcgbGF1bmNoaW5nIHRoaXMgYWN0aXZpdHkKKyAgICBsb25nIGNwdVRpbWVBdFJlc3VtZTsgICAvLyB0aGUgY3B1IHRpbWUgb2YgaG9zdCBwcm9jZXNzIGF0IHRoZSB0aW1lIG9mIHJlc3VtaW5nIGFjdGl2aXR5CisgICAgQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uOyAvLyBjb25maWd1cmF0aW9uIGFjdGl2aXR5IHdhcyBsYXN0IHJ1bm5pbmcgaW4KKyAgICBBY3Rpdml0eVJlY29yZCByZXN1bHRUbzsgLy8gd2hvIHN0YXJ0ZWQgdGhpcyBlbnRyeSwgc28gd2lsbCBnZXQgb3VyIHJlcGx5CisgICAgZmluYWwgU3RyaW5nIHJlc3VsdFdobzsgLy8gYWRkaXRpb25hbCBpZGVudGlmaWVyIGZvciB1c2UgYnkgcmVzdWx0VG8uCisgICAgZmluYWwgaW50IHJlcXVlc3RDb2RlOyAgLy8gY29kZSBnaXZlbiBieSByZXF1ZXN0ZXIgKHJlc3VsdFRvKQorICAgIEFycmF5TGlzdCByZXN1bHRzOyAgICAgIC8vIHBlbmRpbmcgQWN0aXZpdHlSZXN1bHQgb2JqcyB3ZSBoYXZlIHJlY2VpdmVkCisgICAgSGFzaFNldDxXZWFrUmVmZXJlbmNlPFBlbmRpbmdJbnRlbnRSZWNvcmQ+PiBwZW5kaW5nUmVzdWx0czsgLy8gYWxsIHBlbmRpbmcgaW50ZW50cyBmb3IgdGhpcyBhY3QKKyAgICBBcnJheUxpc3QgbmV3SW50ZW50czsgICAvLyBhbnkgcGVuZGluZyBuZXcgaW50ZW50cyBmb3Igc2luZ2xlLXRvcCBtb2RlCisgICAgSGFzaFNldDxDb25uZWN0aW9uUmVjb3JkPiBjb25uZWN0aW9uczsgLy8gQWxsIENvbm5lY3Rpb25SZWNvcmQgd2UgaG9sZAorICAgIEhhc2hTZXQ8VXJpUGVybWlzc2lvbj4gcmVhZFVyaVBlcm1pc3Npb25zOyAvLyBzcGVjaWFsIGFjY2VzcyB0byByZWFkaW5nIHVyaXMuCisgICAgSGFzaFNldDxVcmlQZXJtaXNzaW9uPiB3cml0ZVVyaVBlcm1pc3Npb25zOyAvLyBzcGVjaWFsIGFjY2VzcyB0byB3cml0aW5nIHVyaXMuCisgICAgUHJvY2Vzc1JlY29yZCBhcHA7ICAvLyBpZiBub24tbnVsbCwgaG9zdGluZyBhcHBsaWNhdGlvbgorICAgIEJpdG1hcCB0aHVtYm5haWw7ICAgICAgIC8vIGljb24gcmVwcmVzZW50YXRpb24gb2YgcGF1c2VkIHNjcmVlbgorICAgIENoYXJTZXF1ZW5jZSBkZXNjcmlwdGlvbjsgLy8gdGV4dHVhbCBkZXNjcmlwdGlvbiBvZiBwYXVzZWQgc2NyZWVuCisgICAgQWN0aXZpdHlTdGF0ZSBzdGF0ZTsgICAgLy8gY3VycmVudCBzdGF0ZSB3ZSBhcmUgaW4KKyAgICBCdW5kbGUgIGljaWNsZTsgICAgICAgICAvLyBsYXN0IHNhdmVkIGFjdGl2aXR5IHN0YXRlCisgICAgYm9vbGVhbiBmcm9udE9mVGFzazsgICAgLy8gaXMgdGhpcyB0aGUgcm9vdCBhY3Rpdml0eSBvZiBpdHMgdGFzaz8KKyAgICBib29sZWFuIGxhdW5jaEZhaWxlZDsgICAvLyBzZXQgaWYgYSBsYXVuY2hlZCBmYWlsZWQsIHRvIGFib3J0IG9uIDJuZCB0cnkKKyAgICBib29sZWFuIGhhdmVTdGF0ZTsgICAgICAvLyBoYXZlIHdlIGdvdHRlbiB0aGUgbGFzdCBhY3Rpdml0eSBzdGF0ZT8KKyAgICBib29sZWFuIHN0b3BwZWQ7ICAgICAgICAvLyBpcyBhY3Rpdml0eSBwYXVzZSBmaW5pc2hlZD8KKyAgICBib29sZWFuIGRlbGF5ZWRSZXN1bWU7ICAvLyBub3QgeWV0IHJlc3VtZWQgYmVjYXVzZSBvZiBzdG9wcGVkIGFwcCBzd2l0Y2hlcz8KKyAgICBib29sZWFuIGZpbmlzaGluZzsgICAgICAvLyBhY3Rpdml0eSBpbiBwZW5kaW5nIGZpbmlzaCBsaXN0PworICAgIGJvb2xlYW4gY29uZmlnRGVzdHJveTsgIC8vIG5lZWQgdG8gZGVzdHJveSBkdWUgdG8gY29uZmlnIGNoYW5nZT8KKyAgICBpbnQgY29uZmlnQ2hhbmdlRmxhZ3M7ICAvLyB3aGljaCBjb25maWcgdmFsdWVzIGhhdmUgY2hhbmdlZAorICAgIGJvb2xlYW4ga2V5c1BhdXNlZDsgICAgIC8vIGhhcyBrZXkgZGlzcGF0Y2hpbmcgYmVlbiBwYXVzZWQgZm9yIGl0PworICAgIGJvb2xlYW4gaW5IaXN0b3J5OyAgICAgIC8vIGFyZSB3ZSBpbiB0aGUgaGlzdG9yeSBzdGFjaz8KKyAgICBib29sZWFuIHBlcnNpc3RlbnQ7ICAgICAvLyByZXF1ZXN0ZWQgdG8gYmUgcGVyc2lzdGVudD8KKyAgICBpbnQgbGF1bmNoTW9kZTsgICAgICAgICAvLyB0aGUgbGF1bmNoIG1vZGUgYWN0aXZpdHkgYXR0cmlidXRlLgorICAgIGJvb2xlYW4gdmlzaWJsZTsgICAgICAgIC8vIGRvZXMgdGhpcyBhY3Rpdml0eSdzIHdpbmRvdyBuZWVkIHRvIGJlIHNob3duPworICAgIGJvb2xlYW4gd2FpdGluZ1Zpc2libGU7IC8vIHRydWUgaWYgd2FpdGluZyBmb3IgYSBuZXcgYWN0IHRvIGJlY29tZSB2aXMKKyAgICBib29sZWFuIG5vd1Zpc2libGU7ICAgICAvLyBpcyB0aGlzIGFjdGl2aXR5J3Mgd2luZG93IHZpc2libGU/CisgICAgYm9vbGVhbiB0aHVtYm5haWxOZWVkZWQ7Ly8gaGFzIHNvbWVvbmUgcmVxdWVzdGVkIGEgdGh1bWJuYWlsPworICAgIGJvb2xlYW4gaWRsZTsgICAgICAgICAgIC8vIGhhcyB0aGUgYWN0aXZpdHkgZ29uZSBpZGxlPworICAgIGJvb2xlYW4gaGFzQmVlbkxhdW5jaGVkOy8vIGhhcyB0aGlzIGFjdGl2aXR5IGV2ZXIgYmVlbiBsYXVuY2hlZD8KKyAgICBib29sZWFuIGZyb3plbkJlZm9yZURlc3Ryb3k7Ly8gaGFzIGJlZW4gZnJvemVuIGJ1dCBub3QgeWV0IGRlc3Ryb3llZC4KKyAgICBib29sZWFuIGltbWVyc2l2ZTsgICAgICAvLyBpbW1lcnNpdmUgbW9kZSAoZG9uJ3QgaW50ZXJydXB0IGlmIHBvc3NpYmxlKQorCisgICAgU3RyaW5nIHN0cmluZ05hbWU7ICAgICAgLy8gZm9yIGNhY2hpbmcgb2YgdG9TdHJpbmcoKS4KKyAgICAKKyAgICB2b2lkIGR1bXAoUHJpbnRXcml0ZXIgcHcsIFN0cmluZyBwcmVmaXgpIHsKKyAgICAgICAgcHcucHJpbnQocHJlZml4KTsgcHcucHJpbnQoInBhY2thZ2VOYW1lPSIpOyBwdy5wcmludChwYWNrYWdlTmFtZSk7CisgICAgICAgICAgICAgICAgcHcucHJpbnQoIiBwcm9jZXNzTmFtZT0iKTsgcHcucHJpbnRsbihwcm9jZXNzTmFtZSk7CisgICAgICAgIHB3LnByaW50KHByZWZpeCk7IHB3LnByaW50KCJsYXVuY2hlZEZyb21VaWQ9Iik7IHB3LnByaW50KGxhdW5jaGVkRnJvbVVpZCk7CisgICAgICAgICAgICAgICAgcHcucHJpbnQoIiBhcHA9Iik7IHB3LnByaW50bG4oYXBwKTsKKyAgICAgICAgcHcucHJpbnQocHJlZml4KTsgcHcucHJpbnRsbihpbnRlbnQpOworICAgICAgICBwdy5wcmludChwcmVmaXgpOyBwdy5wcmludCgiZnJvbnRPZlRhc2s9Iik7IHB3LnByaW50KGZyb250T2ZUYXNrKTsKKyAgICAgICAgICAgICAgICBwdy5wcmludCgiIHRhc2s9Iik7IHB3LnByaW50bG4odGFzayk7CisgICAgICAgIHB3LnByaW50KHByZWZpeCk7IHB3LnByaW50KCJ0YXNrQWZmaW5pdHk9Iik7IHB3LnByaW50bG4odGFza0FmZmluaXR5KTsKKyAgICAgICAgcHcucHJpbnQocHJlZml4KTsgcHcucHJpbnQoInJlYWxBY3Rpdml0eT0iKTsKKyAgICAgICAgICAgICAgICBwdy5wcmludGxuKHJlYWxBY3Rpdml0eS5mbGF0dGVuVG9TaG9ydFN0cmluZygpKTsKKyAgICAgICAgcHcucHJpbnQocHJlZml4KTsgcHcucHJpbnQoImJhc2U9Iik7IHB3LnByaW50KGJhc2VEaXIpOworICAgICAgICAgICAgICAgIGlmICghcmVzRGlyLmVxdWFscyhiYXNlRGlyKSkgcHcucHJpbnQoIiByZXM9Iik7IHB3LnByaW50KHJlc0Rpcik7CisgICAgICAgICAgICAgICAgcHcucHJpbnQoIiBkYXRhPSIpOyBwdy5wcmludGxuKGRhdGFEaXIpOworICAgICAgICBwdy5wcmludChwcmVmaXgpOyBwdy5wcmludCgibGFiZWxSZXM9MHgiKTsKKyAgICAgICAgICAgICAgICBwdy5wcmludChJbnRlZ2VyLnRvSGV4U3RyaW5nKGxhYmVsUmVzKSk7CisgICAgICAgICAgICAgICAgcHcucHJpbnQoIiBpY29uPTB4Iik7IHB3LnByaW50KEludGVnZXIudG9IZXhTdHJpbmcoaWNvbikpOworICAgICAgICAgICAgICAgIHB3LnByaW50KCIgdGhlbWU9MHgiKTsgcHcucHJpbnRsbihJbnRlZ2VyLnRvSGV4U3RyaW5nKHRoZW1lKSk7CisgICAgICAgIHB3LnByaW50KHByZWZpeCk7IHB3LnByaW50KCJzdGF0ZU5vdE5lZWRlZD0iKTsgcHcucHJpbnQoc3RhdGVOb3ROZWVkZWQpOworICAgICAgICAgICAgICAgIHB3LnByaW50KCIgY29tcG9uZW50U3BlY2lmaWVkPSIpOyBwdy5wcmludChjb21wb25lbnRTcGVjaWZpZWQpOworICAgICAgICAgICAgICAgIHB3LnByaW50KCIgaXNIb21lQWN0aXZpdHk9Iik7IHB3LnByaW50bG4oaXNIb21lQWN0aXZpdHkpOworICAgICAgICBwdy5wcmludChwcmVmaXgpOyBwdy5wcmludCgiY29uZmlndXJhdGlvbj0iKTsgcHcucHJpbnRsbihjb25maWd1cmF0aW9uKTsKKyAgICAgICAgaWYgKHJlc3VsdFRvICE9IG51bGwgfHwgcmVzdWx0V2hvICE9IG51bGwpIHsKKyAgICAgICAgICAgIHB3LnByaW50KHByZWZpeCk7IHB3LnByaW50KCJyZXN1bHRUbz0iKTsgcHcucHJpbnQocmVzdWx0VG8pOworICAgICAgICAgICAgICAgICAgICBwdy5wcmludCgiIHJlc3VsdFdobz0iKTsgcHcucHJpbnQocmVzdWx0V2hvKTsKKyAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoIiByZXN1bHRDb2RlPSIpOyBwdy5wcmludGxuKHJlcXVlc3RDb2RlKTsKKyAgICAgICAgfQorICAgICAgICBpZiAocmVzdWx0cyAhPSBudWxsKSB7CisgICAgICAgICAgICBwdy5wcmludChwcmVmaXgpOyBwdy5wcmludCgicmVzdWx0cz0iKTsgcHcucHJpbnRsbihyZXN1bHRzKTsKKyAgICAgICAgfQorICAgICAgICBpZiAocGVuZGluZ1Jlc3VsdHMgIT0gbnVsbCkgeworICAgICAgICAgICAgcHcucHJpbnQocHJlZml4KTsgcHcucHJpbnQoInBlbmRpbmdSZXN1bHRzPSIpOyBwdy5wcmludGxuKHBlbmRpbmdSZXN1bHRzKTsKKyAgICAgICAgfQorICAgICAgICBpZiAocmVhZFVyaVBlcm1pc3Npb25zICE9IG51bGwpIHsKKyAgICAgICAgICAgIHB3LnByaW50KHByZWZpeCk7IHB3LnByaW50KCJyZWFkVXJpUGVybWlzc2lvbnM9Iik7IHB3LnByaW50bG4ocmVhZFVyaVBlcm1pc3Npb25zKTsKKyAgICAgICAgfQorICAgICAgICBpZiAod3JpdGVVcmlQZXJtaXNzaW9ucyAhPSBudWxsKSB7CisgICAgICAgICAgICBwdy5wcmludChwcmVmaXgpOyBwdy5wcmludCgid3JpdGVVcmlQZXJtaXNzaW9ucz0iKTsgcHcucHJpbnRsbih3cml0ZVVyaVBlcm1pc3Npb25zKTsKKyAgICAgICAgfQorICAgICAgICBwdy5wcmludChwcmVmaXgpOyBwdy5wcmludCgibGF1bmNoRmFpbGVkPSIpOyBwdy5wcmludChsYXVuY2hGYWlsZWQpOworICAgICAgICAgICAgICAgIHB3LnByaW50KCIgaGF2ZVN0YXRlPSIpOyBwdy5wcmludChoYXZlU3RhdGUpOworICAgICAgICAgICAgICAgIHB3LnByaW50KCIgaWNpY2xlPSIpOyBwdy5wcmludGxuKGljaWNsZSk7CisgICAgICAgIHB3LnByaW50KHByZWZpeCk7IHB3LnByaW50KCJzdGF0ZT0iKTsgcHcucHJpbnQoc3RhdGUpOworICAgICAgICAgICAgICAgIHB3LnByaW50KCIgc3RvcHBlZD0iKTsgcHcucHJpbnQoc3RvcHBlZCk7CisgICAgICAgICAgICAgICAgcHcucHJpbnQoIiBkZWxheWVkUmVzdW1lPSIpOyBwdy5wcmludChkZWxheWVkUmVzdW1lKTsKKyAgICAgICAgICAgICAgICBwdy5wcmludCgiIGZpbmlzaGluZz0iKTsgcHcucHJpbnRsbihmaW5pc2hpbmcpOworICAgICAgICBwdy5wcmludChwcmVmaXgpOyBwdy5wcmludCgia2V5c1BhdXNlZD0iKTsgcHcucHJpbnQoa2V5c1BhdXNlZCk7CisgICAgICAgICAgICAgICAgcHcucHJpbnQoIiBpbkhpc3Rvcnk9Iik7IHB3LnByaW50KGluSGlzdG9yeSk7CisgICAgICAgICAgICAgICAgcHcucHJpbnQoIiBwZXJzaXN0ZW50PSIpOyBwdy5wcmludChwZXJzaXN0ZW50KTsKKyAgICAgICAgICAgICAgICBwdy5wcmludCgiIGltbWVyc2l2ZT0iKTsgcHcucHJpbnQoaW1tZXJzaXZlKTsKKyAgICAgICAgICAgICAgICBwdy5wcmludCgiIGxhdW5jaE1vZGU9Iik7IHB3LnByaW50bG4obGF1bmNoTW9kZSk7CisgICAgICAgIHB3LnByaW50KHByZWZpeCk7IHB3LnByaW50KCJmdWxsc2NyZWVuPSIpOyBwdy5wcmludChmdWxsc2NyZWVuKTsKKyAgICAgICAgICAgICAgICBwdy5wcmludCgiIHZpc2libGU9Iik7IHB3LnByaW50KHZpc2libGUpOworICAgICAgICAgICAgICAgIHB3LnByaW50KCIgZnJvemVuQmVmb3JlRGVzdHJveT0iKTsgcHcucHJpbnQoZnJvemVuQmVmb3JlRGVzdHJveSk7CisgICAgICAgICAgICAgICAgcHcucHJpbnQoIiB0aHVtYm5haWxOZWVkZWQ9Iik7IHB3LnByaW50KHRodW1ibmFpbE5lZWRlZCk7CisgICAgICAgICAgICAgICAgcHcucHJpbnQoIiBpZGxlPSIpOyBwdy5wcmludGxuKGlkbGUpOworICAgICAgICBpZiAod2FpdGluZ1Zpc2libGUgfHwgbm93VmlzaWJsZSkgeworICAgICAgICAgICAgcHcucHJpbnQocHJlZml4KTsgcHcucHJpbnQoIndhaXRpbmdWaXNpYmxlPSIpOyBwdy5wcmludCh3YWl0aW5nVmlzaWJsZSk7CisgICAgICAgICAgICAgICAgICAgIHB3LnByaW50KCIgbm93VmlzaWJsZT0iKTsgcHcucHJpbnRsbihub3dWaXNpYmxlKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY29uZmlnRGVzdHJveSB8fCBjb25maWdDaGFuZ2VGbGFncyAhPSAwKSB7CisgICAgICAgICAgICBwdy5wcmludChwcmVmaXgpOyBwdy5wcmludCgiY29uZmlnRGVzdHJveT0iKTsgcHcucHJpbnQoY29uZmlnRGVzdHJveSk7CisgICAgICAgICAgICAgICAgICAgIHB3LnByaW50KCIgY29uZmlnQ2hhbmdlRmxhZ3M9Iik7CisgICAgICAgICAgICAgICAgICAgIHB3LnByaW50bG4oSW50ZWdlci50b0hleFN0cmluZyhjb25maWdDaGFuZ2VGbGFncykpOworICAgICAgICB9CisgICAgICAgIGlmIChjb25uZWN0aW9ucyAhPSBudWxsKSB7CisgICAgICAgICAgICBwdy5wcmludChwcmVmaXgpOyBwdy5wcmludCgiY29ubmVjdGlvbnM9Iik7IHB3LnByaW50bG4oY29ubmVjdGlvbnMpOworICAgICAgICB9CisgICAgfQorCisgICAgQWN0aXZpdHlSZWNvcmQoQWN0aXZpdHlNYW5hZ2VyU2VydmljZSBfc2VydmljZSwgQWN0aXZpdHlTdGFjayBfc3RhY2ssIFByb2Nlc3NSZWNvcmQgX2NhbGxlciwKKyAgICAgICAgICAgIGludCBfbGF1bmNoZWRGcm9tVWlkLCBJbnRlbnQgX2ludGVudCwgU3RyaW5nIF9yZXNvbHZlZFR5cGUsCisgICAgICAgICAgICBBY3Rpdml0eUluZm8gYUluZm8sIENvbmZpZ3VyYXRpb24gX2NvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCBfcmVzdWx0VG8sIFN0cmluZyBfcmVzdWx0V2hvLCBpbnQgX3JlcUNvZGUsCisgICAgICAgICAgICBib29sZWFuIF9jb21wb25lbnRTcGVjaWZpZWQpIHsKKyAgICAgICAgc2VydmljZSA9IF9zZXJ2aWNlOworICAgICAgICBzdGFjayA9IF9zdGFjazsKKyAgICAgICAgaW5mbyA9IGFJbmZvOworICAgICAgICBsYXVuY2hlZEZyb21VaWQgPSBfbGF1bmNoZWRGcm9tVWlkOworICAgICAgICBpbnRlbnQgPSBfaW50ZW50OworICAgICAgICBzaG9ydENvbXBvbmVudE5hbWUgPSBfaW50ZW50LmdldENvbXBvbmVudCgpLmZsYXR0ZW5Ub1Nob3J0U3RyaW5nKCk7CisgICAgICAgIHJlc29sdmVkVHlwZSA9IF9yZXNvbHZlZFR5cGU7CisgICAgICAgIGNvbXBvbmVudFNwZWNpZmllZCA9IF9jb21wb25lbnRTcGVjaWZpZWQ7CisgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBfY29uZmlndXJhdGlvbjsKKyAgICAgICAgcmVzdWx0VG8gPSBfcmVzdWx0VG87CisgICAgICAgIHJlc3VsdFdobyA9IF9yZXN1bHRXaG87CisgICAgICAgIHJlcXVlc3RDb2RlID0gX3JlcUNvZGU7CisgICAgICAgIHN0YXRlID0gQWN0aXZpdHlTdGF0ZS5JTklUSUFMSVpJTkc7CisgICAgICAgIGZyb250T2ZUYXNrID0gZmFsc2U7CisgICAgICAgIGxhdW5jaEZhaWxlZCA9IGZhbHNlOworICAgICAgICBoYXZlU3RhdGUgPSBmYWxzZTsKKyAgICAgICAgc3RvcHBlZCA9IGZhbHNlOworICAgICAgICBkZWxheWVkUmVzdW1lID0gZmFsc2U7CisgICAgICAgIGZpbmlzaGluZyA9IGZhbHNlOworICAgICAgICBjb25maWdEZXN0cm95ID0gZmFsc2U7CisgICAgICAgIGtleXNQYXVzZWQgPSBmYWxzZTsKKyAgICAgICAgaW5IaXN0b3J5ID0gZmFsc2U7CisgICAgICAgIHBlcnNpc3RlbnQgPSBmYWxzZTsKKyAgICAgICAgdmlzaWJsZSA9IHRydWU7CisgICAgICAgIHdhaXRpbmdWaXNpYmxlID0gZmFsc2U7CisgICAgICAgIG5vd1Zpc2libGUgPSBmYWxzZTsKKyAgICAgICAgdGh1bWJuYWlsTmVlZGVkID0gZmFsc2U7CisgICAgICAgIGlkbGUgPSBmYWxzZTsKKyAgICAgICAgaGFzQmVlbkxhdW5jaGVkID0gZmFsc2U7CisKKyAgICAgICAgaWYgKGFJbmZvICE9IG51bGwpIHsKKyAgICAgICAgICAgIGlmIChhSW5mby50YXJnZXRBY3Rpdml0eSA9PSBudWxsCisgICAgICAgICAgICAgICAgICAgIHx8IGFJbmZvLmxhdW5jaE1vZGUgPT0gQWN0aXZpdHlJbmZvLkxBVU5DSF9NVUxUSVBMRQorICAgICAgICAgICAgICAgICAgICB8fCBhSW5mby5sYXVuY2hNb2RlID09IEFjdGl2aXR5SW5mby5MQVVOQ0hfU0lOR0xFX1RPUCkgeworICAgICAgICAgICAgICAgIHJlYWxBY3Rpdml0eSA9IF9pbnRlbnQuZ2V0Q29tcG9uZW50KCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJlYWxBY3Rpdml0eSA9IG5ldyBDb21wb25lbnROYW1lKGFJbmZvLnBhY2thZ2VOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgYUluZm8udGFyZ2V0QWN0aXZpdHkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdGFza0FmZmluaXR5ID0gYUluZm8udGFza0FmZmluaXR5OworICAgICAgICAgICAgc3RhdGVOb3ROZWVkZWQgPSAoYUluZm8uZmxhZ3MmCisgICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5SW5mby5GTEFHX1NUQVRFX05PVF9ORUVERUQpICE9IDA7CisgICAgICAgICAgICBiYXNlRGlyID0gYUluZm8uYXBwbGljYXRpb25JbmZvLnNvdXJjZURpcjsKKyAgICAgICAgICAgIHJlc0RpciA9IGFJbmZvLmFwcGxpY2F0aW9uSW5mby5wdWJsaWNTb3VyY2VEaXI7CisgICAgICAgICAgICBkYXRhRGlyID0gYUluZm8uYXBwbGljYXRpb25JbmZvLmRhdGFEaXI7CisgICAgICAgICAgICBub25Mb2NhbGl6ZWRMYWJlbCA9IGFJbmZvLm5vbkxvY2FsaXplZExhYmVsOworICAgICAgICAgICAgbGFiZWxSZXMgPSBhSW5mby5sYWJlbFJlczsKKyAgICAgICAgICAgIGlmIChub25Mb2NhbGl6ZWRMYWJlbCA9PSBudWxsICYmIGxhYmVsUmVzID09IDApIHsKKyAgICAgICAgICAgICAgICBBcHBsaWNhdGlvbkluZm8gYXBwID0gYUluZm8uYXBwbGljYXRpb25JbmZvOworICAgICAgICAgICAgICAgIG5vbkxvY2FsaXplZExhYmVsID0gYXBwLm5vbkxvY2FsaXplZExhYmVsOworICAgICAgICAgICAgICAgIGxhYmVsUmVzID0gYXBwLmxhYmVsUmVzOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWNvbiA9IGFJbmZvLmdldEljb25SZXNvdXJjZSgpOworICAgICAgICAgICAgdGhlbWUgPSBhSW5mby5nZXRUaGVtZVJlc291cmNlKCk7CisgICAgICAgICAgICBpZiAoKGFJbmZvLmZsYWdzJkFjdGl2aXR5SW5mby5GTEFHX01VTFRJUFJPQ0VTUykgIT0gMAorICAgICAgICAgICAgICAgICAgICAmJiBfY2FsbGVyICE9IG51bGwKKyAgICAgICAgICAgICAgICAgICAgJiYgKGFJbmZvLmFwcGxpY2F0aW9uSW5mby51aWQgPT0gUHJvY2Vzcy5TWVNURU1fVUlECisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgYUluZm8uYXBwbGljYXRpb25JbmZvLnVpZCA9PSBfY2FsbGVyLmluZm8udWlkKSkgeworICAgICAgICAgICAgICAgIHByb2Nlc3NOYW1lID0gX2NhbGxlci5wcm9jZXNzTmFtZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgcHJvY2Vzc05hbWUgPSBhSW5mby5wcm9jZXNzTmFtZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGludGVudCAhPSBudWxsICYmIChhSW5mby5mbGFncyAmIEFjdGl2aXR5SW5mby5GTEFHX0VYQ0xVREVfRlJPTV9SRUNFTlRTKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgaW50ZW50LmFkZEZsYWdzKEludGVudC5GTEFHX0FDVElWSVRZX0VYQ0xVREVfRlJPTV9SRUNFTlRTKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgcGFja2FnZU5hbWUgPSBhSW5mby5hcHBsaWNhdGlvbkluZm8ucGFja2FnZU5hbWU7CisgICAgICAgICAgICBsYXVuY2hNb2RlID0gYUluZm8ubGF1bmNoTW9kZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgQXR0cmlidXRlQ2FjaGUuRW50cnkgZW50ID0gQXR0cmlidXRlQ2FjaGUuaW5zdGFuY2UoKS5nZXQocGFja2FnZU5hbWUsCisgICAgICAgICAgICAgICAgICAgIHRoZW1lICE9IDAgPyB0aGVtZSA6IGFuZHJvaWQuUi5zdHlsZS5UaGVtZSwKKyAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuV2luZG93KTsKKyAgICAgICAgICAgIGZ1bGxzY3JlZW4gPSBlbnQgIT0gbnVsbCAmJiAhZW50LmFycmF5LmdldEJvb2xlYW4oCisgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLldpbmRvd193aW5kb3dJc0Zsb2F0aW5nLCBmYWxzZSkKKyAgICAgICAgICAgICAgICAgICAgJiYgIWVudC5hcnJheS5nZXRCb29sZWFuKAorICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5XaW5kb3dfd2luZG93SXNUcmFuc2x1Y2VudCwgZmFsc2UpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIV9jb21wb25lbnRTcGVjaWZpZWQgfHwgX2xhdW5jaGVkRnJvbVVpZCA9PSBQcm9jZXNzLm15VWlkKCkKKyAgICAgICAgICAgICAgICAgICAgfHwgX2xhdW5jaGVkRnJvbVVpZCA9PSAwKSB7CisgICAgICAgICAgICAgICAgLy8gSWYgd2Uga25vdyB0aGUgc3lzdGVtIGhhcyBkZXRlcm1pbmVkIHRoZSBjb21wb25lbnQsIHRoZW4KKyAgICAgICAgICAgICAgICAvLyB3ZSBjYW4gY29uc2lkZXIgdGhpcyB0byBiZSBhIGhvbWUgYWN0aXZpdHkuLi4KKyAgICAgICAgICAgICAgICBpZiAoSW50ZW50LkFDVElPTl9NQUlOLmVxdWFscyhfaW50ZW50LmdldEFjdGlvbigpKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgX2ludGVudC5oYXNDYXRlZ29yeShJbnRlbnQuQ0FURUdPUllfSE9NRSkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgIF9pbnRlbnQuZ2V0Q2F0ZWdvcmllcygpLnNpemUoKSA9PSAxICYmCisgICAgICAgICAgICAgICAgICAgICAgICBfaW50ZW50LmdldERhdGEoKSA9PSBudWxsICYmCisgICAgICAgICAgICAgICAgICAgICAgICBfaW50ZW50LmdldFR5cGUoKSA9PSBudWxsICYmCisgICAgICAgICAgICAgICAgICAgICAgICAoaW50ZW50LmdldEZsYWdzKCkmSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX1RBU0spICE9IDAgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICEiYW5kcm9pZCIuZXF1YWxzKHJlYWxBY3Rpdml0eS5nZXRDbGFzc05hbWUoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhpcyBzdXJlIGxvb2tzIGxpa2UgYSBob21lIGFjdGl2aXR5IQorICAgICAgICAgICAgICAgICAgICAvLyBOb3RlIHRoZSBsYXN0IGNoZWNrIGlzIHNvIHdlIGRvbid0IGNvdW50IHRoZSByZXNvbHZlcgorICAgICAgICAgICAgICAgICAgICAvLyBhY3Rpdml0eSBhcyBiZWluZyBob21lLi4uICByZWFsbHksIHdlIGRvbid0IGNhcmUgYWJvdXQKKyAgICAgICAgICAgICAgICAgICAgLy8gZG9pbmcgYW55dGhpbmcgc3BlY2lhbCB3aXRoIHNvbWV0aGluZyB0aGF0IGNvbWVzIGZyb20KKyAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGNvcmUgZnJhbWV3b3JrIHBhY2thZ2UuCisgICAgICAgICAgICAgICAgICAgIGlzSG9tZUFjdGl2aXR5ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpc0hvbWVBY3Rpdml0eSA9IGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaXNIb21lQWN0aXZpdHkgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaW1tZXJzaXZlID0gKGFJbmZvLmZsYWdzICYgQWN0aXZpdHlJbmZvLkZMQUdfSU1NRVJTSVZFKSAhPSAwOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmVhbEFjdGl2aXR5ID0gbnVsbDsKKyAgICAgICAgICAgIHRhc2tBZmZpbml0eSA9IG51bGw7CisgICAgICAgICAgICBzdGF0ZU5vdE5lZWRlZCA9IGZhbHNlOworICAgICAgICAgICAgYmFzZURpciA9IG51bGw7CisgICAgICAgICAgICByZXNEaXIgPSBudWxsOworICAgICAgICAgICAgZGF0YURpciA9IG51bGw7CisgICAgICAgICAgICBwcm9jZXNzTmFtZSA9IG51bGw7CisgICAgICAgICAgICBwYWNrYWdlTmFtZSA9IG51bGw7CisgICAgICAgICAgICBmdWxsc2NyZWVuID0gdHJ1ZTsKKyAgICAgICAgICAgIGlzSG9tZUFjdGl2aXR5ID0gZmFsc2U7CisgICAgICAgICAgICBpbW1lcnNpdmUgPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgYWRkUmVzdWx0TG9ja2VkKEFjdGl2aXR5UmVjb3JkIGZyb20sIFN0cmluZyByZXN1bHRXaG8sCisgICAgICAgICAgICBpbnQgcmVxdWVzdENvZGUsIGludCByZXN1bHRDb2RlLAorICAgICAgICAgICAgSW50ZW50IHJlc3VsdERhdGEpIHsKKyAgICAgICAgQWN0aXZpdHlSZXN1bHQgciA9IG5ldyBBY3Rpdml0eVJlc3VsdChmcm9tLCByZXN1bHRXaG8sCisgICAgICAgIAkJcmVxdWVzdENvZGUsIHJlc3VsdENvZGUsIHJlc3VsdERhdGEpOworICAgICAgICBpZiAocmVzdWx0cyA9PSBudWxsKSB7CisgICAgICAgICAgICByZXN1bHRzID0gbmV3IEFycmF5TGlzdCgpOworICAgICAgICB9CisgICAgICAgIHJlc3VsdHMuYWRkKHIpOworICAgIH0KKworICAgIHZvaWQgcmVtb3ZlUmVzdWx0c0xvY2tlZChBY3Rpdml0eVJlY29yZCBmcm9tLCBTdHJpbmcgcmVzdWx0V2hvLAorICAgICAgICAgICAgaW50IHJlcXVlc3RDb2RlKSB7CisgICAgICAgIGlmIChyZXN1bHRzICE9IG51bGwpIHsKKyAgICAgICAgICAgIGZvciAoaW50IGk9cmVzdWx0cy5zaXplKCktMTsgaT49MDsgaS0tKSB7CisgICAgICAgICAgICAgICAgQWN0aXZpdHlSZXN1bHQgciA9IChBY3Rpdml0eVJlc3VsdClyZXN1bHRzLmdldChpKTsKKyAgICAgICAgICAgICAgICBpZiAoci5tRnJvbSAhPSBmcm9tKSBjb250aW51ZTsKKyAgICAgICAgICAgICAgICBpZiAoci5tUmVzdWx0V2hvID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3VsdFdobyAhPSBudWxsKSBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAoIXIubVJlc3VsdFdoby5lcXVhbHMocmVzdWx0V2hvKSkgY29udGludWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChyLm1SZXF1ZXN0Q29kZSAhPSByZXF1ZXN0Q29kZSkgY29udGludWU7CisKKyAgICAgICAgICAgICAgICByZXN1bHRzLnJlbW92ZShpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHZvaWQgYWRkTmV3SW50ZW50TG9ja2VkKEludGVudCBpbnRlbnQpIHsKKyAgICAgICAgaWYgKG5ld0ludGVudHMgPT0gbnVsbCkgeworICAgICAgICAgICAgbmV3SW50ZW50cyA9IG5ldyBBcnJheUxpc3QoKTsKKyAgICAgICAgfQorICAgICAgICBuZXdJbnRlbnRzLmFkZChpbnRlbnQpOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBEZWxpdmVyIGEgbmV3IEludGVudCB0byBhbiBleGlzdGluZyBhY3Rpdml0eSwgc28gdGhhdCBpdHMgb25OZXdJbnRlbnQoKQorICAgICAqIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBhdCB0aGUgcHJvcGVyIHRpbWUuCisgICAgICovCisgICAgZmluYWwgdm9pZCBkZWxpdmVyTmV3SW50ZW50TG9ja2VkKEludGVudCBpbnRlbnQpIHsKKyAgICAgICAgYm9vbGVhbiBzZW50ID0gZmFsc2U7CisgICAgICAgIGlmIChzdGF0ZSA9PSBBY3Rpdml0eVN0YXRlLlJFU1VNRUQKKyAgICAgICAgICAgICAgICAmJiBhcHAgIT0gbnVsbCAmJiBhcHAudGhyZWFkICE9IG51bGwpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgQXJyYXlMaXN0PEludGVudD4gYXIgPSBuZXcgQXJyYXlMaXN0PEludGVudD4oKTsKKyAgICAgICAgICAgICAgICBhci5hZGQobmV3IEludGVudChpbnRlbnQpKTsKKyAgICAgICAgICAgICAgICBhcHAudGhyZWFkLnNjaGVkdWxlTmV3SW50ZW50KGFyLCB0aGlzKTsKKyAgICAgICAgICAgICAgICBzZW50ID0gdHJ1ZTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgU2xvZy53KEFjdGl2aXR5TWFuYWdlclNlcnZpY2UuVEFHLAorICAgICAgICAgICAgICAgICAgICAgICAgIkV4Y2VwdGlvbiB0aHJvd24gc2VuZGluZyBuZXcgaW50ZW50IHRvICIgKyB0aGlzLCBlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAoIXNlbnQpIHsKKyAgICAgICAgICAgIGFkZE5ld0ludGVudExvY2tlZChuZXcgSW50ZW50KGludGVudCkpOworICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCByZW1vdmVVcmlQZXJtaXNzaW9uc0xvY2tlZCgpIHsKKyAgICAgICAgaWYgKHJlYWRVcmlQZXJtaXNzaW9ucyAhPSBudWxsKSB7CisgICAgICAgICAgICBmb3IgKFVyaVBlcm1pc3Npb24gcGVybSA6IHJlYWRVcmlQZXJtaXNzaW9ucykgeworICAgICAgICAgICAgICAgIHBlcm0ucmVhZEFjdGl2aXRpZXMucmVtb3ZlKHRoaXMpOworICAgICAgICAgICAgICAgIGlmIChwZXJtLnJlYWRBY3Rpdml0aWVzLnNpemUoKSA9PSAwICYmIChwZXJtLmdsb2JhbE1vZGVGbGFncworICAgICAgICAgICAgICAgICAgICAgICAgJkludGVudC5GTEFHX0dSQU5UX1JFQURfVVJJX1BFUk1JU1NJT04pID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgcGVybS5tb2RlRmxhZ3MgJj0gfkludGVudC5GTEFHX0dSQU5UX1JFQURfVVJJX1BFUk1JU1NJT047CisgICAgICAgICAgICAgICAgICAgc2VydmljZS5yZW1vdmVVcmlQZXJtaXNzaW9uSWZOZWVkZWRMb2NrZWQocGVybSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmICh3cml0ZVVyaVBlcm1pc3Npb25zICE9IG51bGwpIHsKKyAgICAgICAgICAgIGZvciAoVXJpUGVybWlzc2lvbiBwZXJtIDogd3JpdGVVcmlQZXJtaXNzaW9ucykgeworICAgICAgICAgICAgICAgIHBlcm0ud3JpdGVBY3Rpdml0aWVzLnJlbW92ZSh0aGlzKTsKKyAgICAgICAgICAgICAgICBpZiAocGVybS53cml0ZUFjdGl2aXRpZXMuc2l6ZSgpID09IDAgJiYgKHBlcm0uZ2xvYmFsTW9kZUZsYWdzCisgICAgICAgICAgICAgICAgICAgICAgICAmSW50ZW50LkZMQUdfR1JBTlRfV1JJVEVfVVJJX1BFUk1JU1NJT04pID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgcGVybS5tb2RlRmxhZ3MgJj0gfkludGVudC5GTEFHX0dSQU5UX1dSSVRFX1VSSV9QRVJNSVNTSU9OOworICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlLnJlbW92ZVVyaVBlcm1pc3Npb25JZk5lZWRlZExvY2tlZChwZXJtKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHBhdXNlS2V5RGlzcGF0Y2hpbmdMb2NrZWQoKSB7CisgICAgICAgIGlmICgha2V5c1BhdXNlZCkgeworICAgICAgICAgICAga2V5c1BhdXNlZCA9IHRydWU7CisgICAgICAgICAgICBzZXJ2aWNlLm1XaW5kb3dNYW5hZ2VyLnBhdXNlS2V5RGlzcGF0Y2hpbmcodGhpcyk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICB2b2lkIHJlc3VtZUtleURpc3BhdGNoaW5nTG9ja2VkKCkgeworICAgICAgICBpZiAoa2V5c1BhdXNlZCkgeworICAgICAgICAgICAga2V5c1BhdXNlZCA9IGZhbHNlOworICAgICAgICAgICAgc2VydmljZS5tV2luZG93TWFuYWdlci5yZXN1bWVLZXlEaXNwYXRjaGluZyh0aGlzKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8vIElBcHBsaWNhdGlvblRva2VuCisKKyAgICBwdWJsaWMgYm9vbGVhbiBtYXlGcmVlemVTY3JlZW5Mb2NrZWQoUHJvY2Vzc1JlY29yZCBhcHApIHsKKyAgICAgICAgLy8gT25seSBmcmVlemUgdGhlIHNjcmVlbiBpZiB0aGlzIGFjdGl2aXR5IGlzIGN1cnJlbnRseSBhdHRhY2hlZCB0bworICAgICAgICAvLyBhbiBhcHBsaWNhdGlvbiwgYW5kIHRoYXQgYXBwbGljYXRpb24gaXMgbm90IGJsb2NrZWQgb3IgdW5yZXNwb25kaW5nLgorICAgICAgICAvLyBJbiBhbnkgb3RoZXIgY2FzZSwgd2UgY2FuJ3QgY291bnQgb24gZ2V0dGluZyB0aGUgc2NyZWVuIHVuZnJvemVuLAorICAgICAgICAvLyBzbyBpdCBpcyBiZXN0IHRvIGxlYXZlIGFzLWlzLgorICAgICAgICByZXR1cm4gYXBwID09IG51bGwgfHwgKCFhcHAuY3Jhc2hpbmcgJiYgIWFwcC5ub3RSZXNwb25kaW5nKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgc3RhcnRGcmVlemluZ1NjcmVlbkxvY2tlZChQcm9jZXNzUmVjb3JkIGFwcCwgaW50IGNvbmZpZ0NoYW5nZXMpIHsKKyAgICAgICAgaWYgKG1heUZyZWV6ZVNjcmVlbkxvY2tlZChhcHApKSB7CisgICAgICAgICAgICBzZXJ2aWNlLm1XaW5kb3dNYW5hZ2VyLnN0YXJ0QXBwRnJlZXppbmdTY3JlZW4odGhpcywgY29uZmlnQ2hhbmdlcyk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgc3RvcEZyZWV6aW5nU2NyZWVuTG9ja2VkKGJvb2xlYW4gZm9yY2UpIHsKKyAgICAgICAgaWYgKGZvcmNlIHx8IGZyb3plbkJlZm9yZURlc3Ryb3kpIHsKKyAgICAgICAgICAgIGZyb3plbkJlZm9yZURlc3Ryb3kgPSBmYWxzZTsKKyAgICAgICAgICAgIHNlcnZpY2UubVdpbmRvd01hbmFnZXIuc3RvcEFwcEZyZWV6aW5nU2NyZWVuKHRoaXMsIGZvcmNlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwdWJsaWMgdm9pZCB3aW5kb3dzVmlzaWJsZSgpIHsKKyAgICAgICAgc3luY2hyb25pemVkKHNlcnZpY2UpIHsKKyAgICAgICAgICAgIGlmIChzdGFydFRpbWUgIT0gMCkgeworICAgICAgICAgICAgICAgIGZpbmFsIGxvbmcgY3VyVGltZSA9IFN5c3RlbUNsb2NrLnVwdGltZU1pbGxpcygpOworICAgICAgICAgICAgICAgIGZpbmFsIGxvbmcgdGhpc1RpbWUgPSBjdXJUaW1lIC0gc3RhcnRUaW1lOworICAgICAgICAgICAgICAgIGZpbmFsIGxvbmcgdG90YWxUaW1lID0gc3RhY2subUluaXRpYWxTdGFydFRpbWUgIT0gMAorICAgICAgICAgICAgICAgICAgICAgICAgPyAoY3VyVGltZSAtIHN0YWNrLm1Jbml0aWFsU3RhcnRUaW1lKSA6IHRoaXNUaW1lOworICAgICAgICAgICAgICAgIGlmIChBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlLlNIT1dfQUNUSVZJVFlfU1RBUlRfVElNRSkgeworICAgICAgICAgICAgICAgICAgICBFdmVudExvZy53cml0ZUV2ZW50KEV2ZW50TG9nVGFncy5BQ1RJVklUWV9MQVVOQ0hfVElNRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW0uaWRlbnRpdHlIYXNoQ29kZSh0aGlzKSwgc2hvcnRDb21wb25lbnROYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNUaW1lLCB0b3RhbFRpbWUpOworICAgICAgICAgICAgICAgICAgICBTdHJpbmdCdWlsZGVyIHNiID0gc2VydmljZS5tU3RyaW5nQnVpbGRlcjsKKyAgICAgICAgICAgICAgICAgICAgc2Iuc2V0TGVuZ3RoKDApOworICAgICAgICAgICAgICAgICAgICBzYi5hcHBlbmQoIkRpc3BsYXllZCBhY3Rpdml0eSAiKTsKKyAgICAgICAgICAgICAgICAgICAgc2IuYXBwZW5kKHNob3J0Q29tcG9uZW50TmFtZSk7CisgICAgICAgICAgICAgICAgICAgIHNiLmFwcGVuZCgiOiAiKTsKKyAgICAgICAgICAgICAgICAgICAgc2IuYXBwZW5kKHRoaXNUaW1lKTsKKyAgICAgICAgICAgICAgICAgICAgc2IuYXBwZW5kKCIgbXMgKHRvdGFsICIpOworICAgICAgICAgICAgICAgICAgICBzYi5hcHBlbmQodG90YWxUaW1lKTsKKyAgICAgICAgICAgICAgICAgICAgc2IuYXBwZW5kKCIgbXMpIik7CisgICAgICAgICAgICAgICAgICAgIExvZy5pKEFjdGl2aXR5TWFuYWdlclNlcnZpY2UuVEFHLCBzYi50b1N0cmluZygpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc3RhY2sucmVwb3J0QWN0aXZpdHlMYXVuY2hlZExvY2tlZChmYWxzZSwgdGhpcywgdGhpc1RpbWUsIHRvdGFsVGltZSk7CisgICAgICAgICAgICAgICAgaWYgKHRvdGFsVGltZSA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgc2VydmljZS5tVXNhZ2VTdGF0c1NlcnZpY2Uubm90ZUxhdW5jaFRpbWUocmVhbEFjdGl2aXR5LCAoaW50KXRvdGFsVGltZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHN0YXJ0VGltZSA9IDA7CisgICAgICAgICAgICAgICAgc3RhY2subUluaXRpYWxTdGFydFRpbWUgPSAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RhY2sucmVwb3J0QWN0aXZpdHlWaXNpYmxlTG9ja2VkKHRoaXMpOworICAgICAgICAgICAgaWYgKEFjdGl2aXR5TWFuYWdlclNlcnZpY2UuREVCVUdfU1dJVENIKSBMb2cudigKKyAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHlNYW5hZ2VyU2VydmljZS5UQUcsICJ3aW5kb3dzVmlzaWJsZSgpOiAiICsgdGhpcyk7CisgICAgICAgICAgICBpZiAoIW5vd1Zpc2libGUpIHsKKyAgICAgICAgICAgICAgICBub3dWaXNpYmxlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBpZiAoIWlkbGUpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gSW5zdGVhZCBvZiBkb2luZyB0aGUgZnVsbCBzdG9wIHJvdXRpbmUgaGVyZSwgbGV0J3MganVzdAorICAgICAgICAgICAgICAgICAgICAvLyBoaWRlIGFueSBhY3Rpdml0aWVzIHdlIG5vdyBjYW4sIGFuZCBsZXQgdGhlbSBzdG9wIHdoZW4KKyAgICAgICAgICAgICAgICAgICAgLy8gdGhlIG5vcm1hbCBpZGxlIGhhcHBlbnMuCisgICAgICAgICAgICAgICAgICAgIHN0YWNrLnByb2Nlc3NTdG9wcGluZ0FjdGl2aXRpZXNMb2NrZWQoZmFsc2UpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgYWN0aXZpdHkgd2FzIGFscmVhZHkgaWRsZSwgdGhlbiB3ZSBub3cgbmVlZCB0bworICAgICAgICAgICAgICAgICAgICAvLyBtYWtlIHN1cmUgd2UgcGVyZm9ybSB0aGUgZnVsbCBzdG9wIG9mIGFueSBhY3Rpdml0aWVzCisgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQgYXJlIHdhaXRpbmcgdG8gZG8gc28uICBUaGlzIGlzIGJlY2F1c2Ugd2Ugd29uJ3QKKyAgICAgICAgICAgICAgICAgICAgLy8gZG8gdGhhdCB3aGlsZSB0aGV5IGFyZSBzdGlsbCB3YWl0aW5nIGZvciB0aGlzIG9uZSB0bworICAgICAgICAgICAgICAgICAgICAvLyBiZWNvbWUgdmlzaWJsZS4KKyAgICAgICAgICAgICAgICAgICAgZmluYWwgaW50IE4gPSBzdGFjay5tV2FpdGluZ1Zpc2libGVBY3Rpdml0aWVzLnNpemUoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKE4gPiAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8TjsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IChBY3Rpdml0eVJlY29yZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2subVdhaXRpbmdWaXNpYmxlQWN0aXZpdGllcy5nZXQoaSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgci53YWl0aW5nVmlzaWJsZSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlLkRFQlVHX1NXSVRDSCkgTG9nLnYoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlLlRBRywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJXYXMgd2FpdGluZyBmb3IgdmlzaWJsZTogIiArIHIpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2subVdhaXRpbmdWaXNpYmxlQWN0aXZpdGllcy5jbGVhcigpOworICAgICAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSBtc2cgPSBNZXNzYWdlLm9idGFpbigpOworICAgICAgICAgICAgICAgICAgICAgICAgbXNnLndoYXQgPSBBY3Rpdml0eVN0YWNrLklETEVfTk9XX01TRzsKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrLm1IYW5kbGVyLnNlbmRNZXNzYWdlKG1zZyk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc2VydmljZS5zY2hlZHVsZUFwcEdjc0xvY2tlZCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgd2luZG93c0dvbmUoKSB7CisgICAgICAgIGlmIChBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlLkRFQlVHX1NXSVRDSCkgTG9nLnYoCisgICAgICAgICAgICAgICAgQWN0aXZpdHlNYW5hZ2VyU2VydmljZS5UQUcsICJ3aW5kb3dzR29uZSgpOiAiICsgdGhpcyk7CisgICAgICAgIG5vd1Zpc2libGUgPSBmYWxzZTsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBBY3Rpdml0eVJlY29yZCBnZXRXYWl0aW5nSGlzdG9yeVJlY29yZExvY2tlZCgpIHsKKyAgICAgICAgLy8gRmlyc3QgZmluZCB0aGUgcmVhbCBjdWxwcml0Li4uICBpZiB3ZSBhcmUgd2FpdGluZworICAgICAgICAvLyBmb3IgYW5vdGhlciBhcHAgdG8gc3RhcnQsIHRoZW4gd2UgaGF2ZSBwYXVzZWQgZGlzcGF0Y2hpbmcKKyAgICAgICAgLy8gZm9yIHRoaXMgYWN0aXZpdHkuCisgICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSB0aGlzOworICAgICAgICBpZiAoci53YWl0aW5nVmlzaWJsZSkgeworICAgICAgICAgICAgLy8gSG1tbSwgd2hvIG1pZ2h0IHdlIGJlIHdhaXRpbmcgZm9yPworICAgICAgICAgICAgciA9IHN0YWNrLm1SZXN1bWVkQWN0aXZpdHk7CisgICAgICAgICAgICBpZiAociA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgciA9IHN0YWNrLm1QYXVzaW5nQWN0aXZpdHk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBCb3RoIG9mIHRob3NlIG51bGw/ICBGYWxsIGJhY2sgdG8gJ3RoaXMnIGFnYWluCisgICAgICAgICAgICBpZiAociA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgciA9IHRoaXM7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiByOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGtleURpc3BhdGNoaW5nVGltZWRPdXQoKSB7CisgICAgICAgIEFjdGl2aXR5UmVjb3JkIHI7CisgICAgICAgIFByb2Nlc3NSZWNvcmQgYW5yQXBwID0gbnVsbDsKKyAgICAgICAgc3luY2hyb25pemVkKHNlcnZpY2UpIHsKKyAgICAgICAgICAgIHIgPSBnZXRXYWl0aW5nSGlzdG9yeVJlY29yZExvY2tlZCgpOworICAgICAgICAgICAgaWYgKHIgIT0gbnVsbCAmJiByLmFwcCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgaWYgKHIuYXBwLmRlYnVnZ2luZykgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChzZXJ2aWNlLm1EaWREZXhPcHQpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gR2l2ZSBtb3JlIHRpbWUgc2luY2Ugd2Ugd2VyZSBkZXhvcHRpbmcuCisgICAgICAgICAgICAgICAgICAgIHNlcnZpY2UubURpZERleE9wdCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChyLmFwcC5pbnN0cnVtZW50YXRpb25DbGFzcyA9PSBudWxsKSB7IAorICAgICAgICAgICAgICAgICAgICBhbnJBcHAgPSByLmFwcDsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBCdW5kbGUgaW5mbyA9IG5ldyBCdW5kbGUoKTsKKyAgICAgICAgICAgICAgICAgICAgaW5mby5wdXRTdHJpbmcoInNob3J0TXNnIiwgImtleURpc3BhdGNoaW5nVGltZWRPdXQiKTsKKyAgICAgICAgICAgICAgICAgICAgaW5mby5wdXRTdHJpbmcoImxvbmdNc2ciLCAiVGltZWQgb3V0IHdoaWxlIGRpc3BhdGNoaW5nIGtleSBldmVudCIpOworICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlLmZpbmlzaEluc3RydW1lbnRhdGlvbkxvY2tlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByLmFwcCwgQWN0aXZpdHkuUkVTVUxUX0NBTkNFTEVELCBpbmZvKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChhbnJBcHAgIT0gbnVsbCkgeworICAgICAgICAgICAgc2VydmljZS5hcHBOb3RSZXNwb25kaW5nKGFuckFwcCwgciwgdGhpcywKKyAgICAgICAgICAgICAgICAgICAgImtleURpc3BhdGNoaW5nVGltZWRPdXQiKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIAorICAgIC8qKiBSZXR1cm5zIHRoZSBrZXkgZGlzcGF0Y2hpbmcgdGltZW91dCBmb3IgdGhpcyBhcHBsaWNhdGlvbiB0b2tlbi4gKi8KKyAgICBwdWJsaWMgbG9uZyBnZXRLZXlEaXNwYXRjaGluZ1RpbWVvdXQoKSB7CisgICAgICAgIHN5bmNocm9uaXplZChzZXJ2aWNlKSB7CisgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gZ2V0V2FpdGluZ0hpc3RvcnlSZWNvcmRMb2NrZWQoKTsKKyAgICAgICAgICAgIGlmIChyID09IG51bGwgfHwgci5hcHAgPT0gbnVsbAorICAgICAgICAgICAgICAgICAgICB8fCByLmFwcC5pbnN0cnVtZW50YXRpb25DbGFzcyA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIEFjdGl2aXR5TWFuYWdlclNlcnZpY2UuS0VZX0RJU1BBVENISU5HX1RJTUVPVVQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHJldHVybiBBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlLklOU1RSVU1FTlRBVElPTl9LRVlfRElTUEFUQ0hJTkdfVElNRU9VVDsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIHRydWUgaWYgdGhlIGFjdGl2aXR5IGlzIGVpdGhlciB2aXNpYmxlLCBpcyBiZWNvbWluZyB2aXNpYmxlLCBpcworICAgICAqIGN1cnJlbnRseSBwYXVzaW5nLCBvciBpcyByZXN1bWVkLgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGlzSW50ZXJlc3RpbmdUb1VzZXJMb2NrZWQoKSB7CisgICAgICAgIHJldHVybiB2aXNpYmxlIHx8IG5vd1Zpc2libGUgfHwgc3RhdGUgPT0gQWN0aXZpdHlTdGF0ZS5QQVVTSU5HIHx8IAorICAgICAgICAgICAgICAgIHN0YXRlID09IEFjdGl2aXR5U3RhdGUuUkVTVU1FRDsKKyAgICAgfQorICAgIAorICAgIAorICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisgICAgICAgIGlmIChzdHJpbmdOYW1lICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBzdHJpbmdOYW1lOworICAgICAgICB9CisgICAgICAgIFN0cmluZ0J1aWxkZXIgc2IgPSBuZXcgU3RyaW5nQnVpbGRlcigxMjgpOworICAgICAgICBzYi5hcHBlbmQoIkhpc3RvcnlSZWNvcmR7Iik7CisgICAgICAgIHNiLmFwcGVuZChJbnRlZ2VyLnRvSGV4U3RyaW5nKFN5c3RlbS5pZGVudGl0eUhhc2hDb2RlKHRoaXMpKSk7CisgICAgICAgIHNiLmFwcGVuZCgnICcpOworICAgICAgICBzYi5hcHBlbmQoaW50ZW50LmdldENvbXBvbmVudCgpLmZsYXR0ZW5Ub1Nob3J0U3RyaW5nKCkpOworICAgICAgICBzYi5hcHBlbmQoJ30nKTsKKyAgICAgICAgcmV0dXJuIHN0cmluZ05hbWUgPSBzYi50b1N0cmluZygpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2FtL0FjdGl2aXR5UmVzdWx0LmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9BY3Rpdml0eVJlc3VsdC5qYXZhCmluZGV4IDNjYzI3MjUuLjEyZWJhMzQgMTAwNjQ0Ci0tLSBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2FtL0FjdGl2aXR5UmVzdWx0LmphdmEKKysrIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvYW0vQWN0aXZpdHlSZXN1bHQuamF2YQpAQCAtMjQsOSArMjQsOSBAQAogICogUGVuZGluZyByZXN1bHQgaW5mb3JtYXRpb24gdG8gc2VuZCBiYWNrIHRvIGFuIGFjdGl2aXR5LgogICovCiBjbGFzcyBBY3Rpdml0eVJlc3VsdCBleHRlbmRzIFJlc3VsdEluZm8gewotICAgIGZpbmFsIEhpc3RvcnlSZWNvcmQgbUZyb207CisgICAgZmluYWwgQWN0aXZpdHlSZWNvcmQgbUZyb207CiAgICAgCi0gICAgcHVibGljIEFjdGl2aXR5UmVzdWx0KEhpc3RvcnlSZWNvcmQgZnJvbSwgU3RyaW5nIHJlc3VsdFdobywKKyAgICBwdWJsaWMgQWN0aXZpdHlSZXN1bHQoQWN0aXZpdHlSZWNvcmQgZnJvbSwgU3RyaW5nIHJlc3VsdFdobywKICAgICAgICAgICAgIGludCByZXF1ZXN0Q29kZSwgaW50IHJlc3VsdENvZGUsIEludGVudCBkYXRhKSB7CiAgICAgICAgIHN1cGVyKHJlc3VsdFdobywgcmVxdWVzdENvZGUsIHJlc3VsdENvZGUsIGRhdGEpOwogICAgICAgICBtRnJvbSA9IGZyb207CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9BY3Rpdml0eVN0YWNrLmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9BY3Rpdml0eVN0YWNrLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGU3YjE1YwotLS0gL2Rldi9udWxsCisrKyBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2FtL0FjdGl2aXR5U3RhY2suamF2YQpAQCAtMCwwICsxLDM1MjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLnNlcnZlci5hbTsKKworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLmFwcC5IZWF2eVdlaWdodFN3aXRjaGVyQWN0aXZpdHk7CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwub3MuQmF0dGVyeVN0YXRzSW1wbDsKK2ltcG9ydCBjb20uYW5kcm9pZC5zZXJ2ZXIuYW0uQWN0aXZpdHlNYW5hZ2VyU2VydmljZS5QZW5kaW5nQWN0aXZpdHlMYXVuY2g7CisKK2ltcG9ydCBhbmRyb2lkLmFwcC5BY3Rpdml0eTsKK2ltcG9ydCBhbmRyb2lkLmFwcC5BcHBHbG9iYWxzOworaW1wb3J0IGFuZHJvaWQuYXBwLklBY3Rpdml0eU1hbmFnZXI7CitpbXBvcnQgc3RhdGljIGFuZHJvaWQuYXBwLklBY3Rpdml0eU1hbmFnZXIuU1RBUlRfQ0xBU1NfTk9UX0ZPVU5EOworaW1wb3J0IHN0YXRpYyBhbmRyb2lkLmFwcC5JQWN0aXZpdHlNYW5hZ2VyLlNUQVJUX0RFTElWRVJFRF9UT19UT1A7CitpbXBvcnQgc3RhdGljIGFuZHJvaWQuYXBwLklBY3Rpdml0eU1hbmFnZXIuU1RBUlRfRk9SV0FSRF9BTkRfUkVRVUVTVF9DT05GTElDVDsKK2ltcG9ydCBzdGF0aWMgYW5kcm9pZC5hcHAuSUFjdGl2aXR5TWFuYWdlci5TVEFSVF9JTlRFTlRfTk9UX1JFU09MVkVEOworaW1wb3J0IHN0YXRpYyBhbmRyb2lkLmFwcC5JQWN0aXZpdHlNYW5hZ2VyLlNUQVJUX1BFUk1JU1NJT05fREVOSUVEOworaW1wb3J0IHN0YXRpYyBhbmRyb2lkLmFwcC5JQWN0aXZpdHlNYW5hZ2VyLlNUQVJUX1JFVFVSTl9JTlRFTlRfVE9fQ0FMTEVSOworaW1wb3J0IHN0YXRpYyBhbmRyb2lkLmFwcC5JQWN0aXZpdHlNYW5hZ2VyLlNUQVJUX1NVQ0NFU1M7CitpbXBvcnQgc3RhdGljIGFuZHJvaWQuYXBwLklBY3Rpdml0eU1hbmFnZXIuU1RBUlRfU1dJVENIRVNfQ0FOQ0VMRUQ7CitpbXBvcnQgc3RhdGljIGFuZHJvaWQuYXBwLklBY3Rpdml0eU1hbmFnZXIuU1RBUlRfVEFTS19UT19GUk9OVDsKK2ltcG9ydCBhbmRyb2lkLmFwcC5JQXBwbGljYXRpb25UaHJlYWQ7CitpbXBvcnQgYW5kcm9pZC5hcHAuUGVuZGluZ0ludGVudDsKK2ltcG9ydCBhbmRyb2lkLmFwcC5SZXN1bHRJbmZvOworaW1wb3J0IGFuZHJvaWQuYXBwLklBY3Rpdml0eU1hbmFnZXIuV2FpdFJlc3VsdDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZTsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSUludGVudFNlbmRlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnRTZW5kZXI7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLkFjdGl2aXR5SW5mbzsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uQXBwbGljYXRpb25JbmZvOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uUmVzb2x2ZUluZm87CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnJlcy5Db25maWd1cmF0aW9uOworaW1wb3J0IGFuZHJvaWQubmV0LlVyaTsKK2ltcG9ydCBhbmRyb2lkLm9zLkJpbmRlcjsKK2ltcG9ydCBhbmRyb2lkLm9zLkJ1bmRsZTsKK2ltcG9ydCBhbmRyb2lkLm9zLkhhbmRsZXI7CitpbXBvcnQgYW5kcm9pZC5vcy5JQmluZGVyOworaW1wb3J0IGFuZHJvaWQub3MuTWVzc2FnZTsKK2ltcG9ydCBhbmRyb2lkLm9zLlBvd2VyTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbjsKK2ltcG9ydCBhbmRyb2lkLm9zLlN5c3RlbUNsb2NrOworaW1wb3J0IGFuZHJvaWQudXRpbC5FdmVudExvZzsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOworaW1wb3J0IGFuZHJvaWQudXRpbC5TbG9nOworaW1wb3J0IGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyUG9saWN5OworCitpbXBvcnQgamF2YS5sYW5nLnJlZi5XZWFrUmVmZXJlbmNlOworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCisvKioKKyAqIFN0YXRlIGFuZCBtYW5hZ2VtZW50IG9mIGEgc2luZ2xlIHN0YWNrIG9mIGFjdGl2aXRpZXMuCisgKi8KK3B1YmxpYyBjbGFzcyBBY3Rpdml0eVN0YWNrIHsKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9IEFjdGl2aXR5TWFuYWdlclNlcnZpY2UuVEFHOworICAgIHN0YXRpYyBmaW5hbCBib29sZWFuIGxvY2FsTE9HViA9IEFjdGl2aXR5TWFuYWdlclNlcnZpY2UubG9jYWxMT0dWOworICAgIHN0YXRpYyBmaW5hbCBib29sZWFuIERFQlVHX1NXSVRDSCA9IEFjdGl2aXR5TWFuYWdlclNlcnZpY2UuREVCVUdfU1dJVENIOworICAgIHN0YXRpYyBmaW5hbCBib29sZWFuIERFQlVHX1BBVVNFID0gQWN0aXZpdHlNYW5hZ2VyU2VydmljZS5ERUJVR19QQVVTRTsKKyAgICBzdGF0aWMgZmluYWwgYm9vbGVhbiBERUJVR19WSVNCSUxJVFkgPSBBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlLkRFQlVHX1ZJU0JJTElUWTsKKyAgICBzdGF0aWMgZmluYWwgYm9vbGVhbiBERUJVR19VU0VSX0xFQVZJTkcgPSBBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlLkRFQlVHX1VTRVJfTEVBVklORzsKKyAgICBzdGF0aWMgZmluYWwgYm9vbGVhbiBERUJVR19UUkFOU0lUSU9OID0gQWN0aXZpdHlNYW5hZ2VyU2VydmljZS5ERUJVR19UUkFOU0lUSU9OOworICAgIHN0YXRpYyBmaW5hbCBib29sZWFuIERFQlVHX1JFU1VMVFMgPSBBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlLkRFQlVHX1JFU1VMVFM7CisgICAgc3RhdGljIGZpbmFsIGJvb2xlYW4gREVCVUdfQ09ORklHVVJBVElPTiA9IEFjdGl2aXR5TWFuYWdlclNlcnZpY2UuREVCVUdfQ09ORklHVVJBVElPTjsKKyAgICBzdGF0aWMgZmluYWwgYm9vbGVhbiBERUJVR19UQVNLUyA9IEFjdGl2aXR5TWFuYWdlclNlcnZpY2UuREVCVUdfVEFTS1M7CisgICAgCisgICAgc3RhdGljIGZpbmFsIGJvb2xlYW4gVkFMSURBVEVfVE9LRU5TID0gQWN0aXZpdHlNYW5hZ2VyU2VydmljZS5WQUxJREFURV9UT0tFTlM7CisgICAgCisgICAgLy8gSG93IGxvbmcgd2Ugd2FpdCB1bnRpbCBnaXZpbmcgdXAgb24gdGhlIGxhc3QgYWN0aXZpdHkgdGVsbGluZyB1cyBpdAorICAgIC8vIGlzIGlkbGUuCisgICAgc3RhdGljIGZpbmFsIGludCBJRExFX1RJTUVPVVQgPSAxMCoxMDAwOworICAgIAorICAgIC8vIEhvdyBsb25nIHdlIHdhaXQgdW50aWwgZ2l2aW5nIHVwIG9uIHRoZSBsYXN0IGFjdGl2aXR5IHRvIHBhdXNlLiAgVGhpcworICAgIC8vIGlzIHNob3J0IGJlY2F1c2UgaXQgZGlyZWN0bHkgaW1wYWN0cyB0aGUgcmVzcG9uc2l2ZW5lc3Mgb2Ygc3RhcnRpbmcgdGhlCisgICAgLy8gbmV4dCBhY3Rpdml0eS4KKyAgICBzdGF0aWMgZmluYWwgaW50IFBBVVNFX1RJTUVPVVQgPSA1MDA7CisKKyAgICAvLyBIb3cgbG9uZyB3ZSBjYW4gaG9sZCB0aGUgbGF1bmNoIHdha2UgbG9jayBiZWZvcmUgZ2l2aW5nIHVwLgorICAgIHN0YXRpYyBmaW5hbCBpbnQgTEFVTkNIX1RJTUVPVVQgPSAxMCoxMDAwOworCisgICAgLy8gSG93IGxvbmcgd2Ugd2FpdCB1bnRpbCBnaXZpbmcgdXAgb24gYW4gYWN0aXZpdHkgdGVsbGluZyB1cyBpdCBoYXMKKyAgICAvLyBmaW5pc2hlZCBkZXN0cm95aW5nIGl0c2VsZi4KKyAgICBzdGF0aWMgZmluYWwgaW50IERFU1RST1lfVElNRU9VVCA9IDEwKjEwMDA7CisgICAgCisgICAgLy8gSG93IGxvbmcgdW50aWwgd2UgcmVzZXQgYSB0YXNrIHdoZW4gdGhlIHVzZXIgcmV0dXJucyB0byBpdC4gIEN1cnJlbnRseQorICAgIC8vIDMwIG1pbnV0ZXMuCisgICAgc3RhdGljIGZpbmFsIGxvbmcgQUNUSVZJVFlfSU5BQ1RJVkVfUkVTRVRfVElNRSA9IDEwMDAqNjAqMzA7CisgICAgCisgICAgLy8gU2V0IHRvIGZhbHNlIHRvIGRpc2FibGUgdGhlIHByZXZpZXcgdGhhdCBpcyBzaG93biB3aGlsZSBhIG5ldyBhY3Rpdml0eQorICAgIC8vIGlzIGJlaW5nIHN0YXJ0ZWQuCisgICAgc3RhdGljIGZpbmFsIGJvb2xlYW4gU0hPV19BUFBfU1RBUlRJTkdfUFJFVklFVyA9IHRydWU7CisgICAgCisgICAgZW51bSBBY3Rpdml0eVN0YXRlIHsKKyAgICAgICAgSU5JVElBTElaSU5HLAorICAgICAgICBSRVNVTUVELAorICAgICAgICBQQVVTSU5HLAorICAgICAgICBQQVVTRUQsCisgICAgICAgIFNUT1BQSU5HLAorICAgICAgICBTVE9QUEVELAorICAgICAgICBGSU5JU0hJTkcsCisgICAgICAgIERFU1RST1lJTkcsCisgICAgICAgIERFU1RST1lFRAorICAgIH0KKworICAgIGZpbmFsIEFjdGl2aXR5TWFuYWdlclNlcnZpY2UgbVNlcnZpY2U7CisgICAgZmluYWwgYm9vbGVhbiBtTWFpblN0YWNrOworICAgIAorICAgIGZpbmFsIENvbnRleHQgbUNvbnRleHQ7CisgICAgCisgICAgLyoqCisgICAgICogVGhlIGJhY2sgaGlzdG9yeSBvZiBhbGwgcHJldmlvdXMgKGFuZCBwb3NzaWJseSBzdGlsbAorICAgICAqIHJ1bm5pbmcpIGFjdGl2aXRpZXMuICBJdCBjb250YWlucyBIaXN0b3J5UmVjb3JkIG9iamVjdHMuCisgICAgICovCisgICAgZmluYWwgQXJyYXlMaXN0IG1IaXN0b3J5ID0gbmV3IEFycmF5TGlzdCgpOworICAgIAorICAgIC8qKgorICAgICAqIExpc3Qgb2YgcnVubmluZyBhY3Rpdml0aWVzLCBzb3J0ZWQgYnkgcmVjZW50IHVzYWdlLgorICAgICAqIFRoZSBmaXJzdCBlbnRyeSBpbiB0aGUgbGlzdCBpcyB0aGUgbGVhc3QgcmVjZW50bHkgdXNlZC4KKyAgICAgKiBJdCBjb250YWlucyBIaXN0b3J5UmVjb3JkIG9iamVjdHMuCisgICAgICovCisgICAgZmluYWwgQXJyYXlMaXN0IG1MUlVBY3Rpdml0aWVzID0gbmV3IEFycmF5TGlzdCgpOworCisgICAgLyoqCisgICAgICogTGlzdCBvZiBhY3Rpdml0aWVzIHRoYXQgYXJlIHdhaXRpbmcgZm9yIGEgbmV3IGFjdGl2aXR5CisgICAgICogdG8gYmVjb21lIHZpc2libGUgYmVmb3JlIGNvbXBsZXRpbmcgd2hhdGV2ZXIgb3BlcmF0aW9uIHRoZXkgYXJlCisgICAgICogc3VwcG9zZWQgdG8gZG8uCisgICAgICovCisgICAgZmluYWwgQXJyYXlMaXN0PEFjdGl2aXR5UmVjb3JkPiBtV2FpdGluZ1Zpc2libGVBY3Rpdml0aWVzCisgICAgICAgICAgICA9IG5ldyBBcnJheUxpc3Q8QWN0aXZpdHlSZWNvcmQ+KCk7CisKKyAgICAvKioKKyAgICAgKiBMaXN0IG9mIGFjdGl2aXRpZXMgdGhhdCBhcmUgcmVhZHkgdG8gYmUgc3RvcHBlZCwgYnV0IHdhaXRpbmcKKyAgICAgKiBmb3IgdGhlIG5leHQgYWN0aXZpdHkgdG8gc2V0dGxlIGRvd24gYmVmb3JlIGRvaW5nIHNvLiAgSXQgY29udGFpbnMKKyAgICAgKiBIaXN0b3J5UmVjb3JkIG9iamVjdHMuCisgICAgICovCisgICAgZmluYWwgQXJyYXlMaXN0PEFjdGl2aXR5UmVjb3JkPiBtU3RvcHBpbmdBY3Rpdml0aWVzCisgICAgICAgICAgICA9IG5ldyBBcnJheUxpc3Q8QWN0aXZpdHlSZWNvcmQ+KCk7CisKKyAgICAvKioKKyAgICAgKiBBbmltYXRpb25zIHRoYXQgZm9yIHRoZSBjdXJyZW50IHRyYW5zaXRpb24gaGF2ZSByZXF1ZXN0ZWQgbm90IHRvCisgICAgICogYmUgY29uc2lkZXJlZCBmb3IgdGhlIHRyYW5zaXRpb24gYW5pbWF0aW9uLgorICAgICAqLworICAgIGZpbmFsIEFycmF5TGlzdDxBY3Rpdml0eVJlY29yZD4gbU5vQW5pbUFjdGl2aXRpZXMKKyAgICAgICAgICAgID0gbmV3IEFycmF5TGlzdDxBY3Rpdml0eVJlY29yZD4oKTsKKworICAgIC8qKgorICAgICAqIExpc3Qgb2YgYWN0aXZpdGllcyB0aGF0IGFyZSByZWFkeSB0byBiZSBmaW5pc2hlZCwgYnV0IHdhaXRpbmcKKyAgICAgKiBmb3IgdGhlIHByZXZpb3VzIGFjdGl2aXR5IHRvIHNldHRsZSBkb3duIGJlZm9yZSBkb2luZyBzby4gIEl0IGNvbnRhaW5zCisgICAgICogSGlzdG9yeVJlY29yZCBvYmplY3RzLgorICAgICAqLworICAgIGZpbmFsIEFycmF5TGlzdDxBY3Rpdml0eVJlY29yZD4gbUZpbmlzaGluZ0FjdGl2aXRpZXMKKyAgICAgICAgICAgID0gbmV3IEFycmF5TGlzdDxBY3Rpdml0eVJlY29yZD4oKTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBMaXN0IG9mIHBlb3BsZSB3YWl0aW5nIHRvIGZpbmQgb3V0IGFib3V0IHRoZSBuZXh0IGxhdW5jaGVkIGFjdGl2aXR5LgorICAgICAqLworICAgIGZpbmFsIEFycmF5TGlzdDxJQWN0aXZpdHlNYW5hZ2VyLldhaXRSZXN1bHQ+IG1XYWl0aW5nQWN0aXZpdHlMYXVuY2hlZAorICAgICAgICAgICAgPSBuZXcgQXJyYXlMaXN0PElBY3Rpdml0eU1hbmFnZXIuV2FpdFJlc3VsdD4oKTsKKyAgICAKKyAgICAvKioKKyAgICAgKiBMaXN0IG9mIHBlb3BsZSB3YWl0aW5nIHRvIGZpbmQgb3V0IGFib3V0IHRoZSBuZXh0IHZpc2libGUgYWN0aXZpdHkuCisgICAgICovCisgICAgZmluYWwgQXJyYXlMaXN0PElBY3Rpdml0eU1hbmFnZXIuV2FpdFJlc3VsdD4gbVdhaXRpbmdBY3Rpdml0eVZpc2libGUKKyAgICAgICAgICAgID0gbmV3IEFycmF5TGlzdDxJQWN0aXZpdHlNYW5hZ2VyLldhaXRSZXN1bHQ+KCk7CisgICAgCisgICAgLyoqCisgICAgICogU2V0IHdoZW4gdGhlIHN5c3RlbSBpcyBnb2luZyB0byBzbGVlcCwgdW50aWwgd2UgaGF2ZQorICAgICAqIHN1Y2Nlc3NmdWxseSBwYXVzZWQgdGhlIGN1cnJlbnQgYWN0aXZpdHkgYW5kIHJlbGVhc2VkIG91ciB3YWtlIGxvY2suCisgICAgICogQXQgdGhhdCBwb2ludCB0aGUgc3lzdGVtIGlzIGFsbG93ZWQgdG8gYWN0dWFsbHkgc2xlZXAuCisgICAgICovCisgICAgZmluYWwgUG93ZXJNYW5hZ2VyLldha2VMb2NrIG1Hb2luZ1RvU2xlZXA7CisKKyAgICAvKioKKyAgICAgKiBXZSBkb24ndCB3YW50IHRvIGFsbG93IHRoZSBkZXZpY2UgdG8gZ28gdG8gc2xlZXAgd2hpbGUgaW4gdGhlIHByb2Nlc3MKKyAgICAgKiBvZiBsYXVuY2hpbmcgYW4gYWN0aXZpdHkuICBUaGlzIGlzIHByaW1hcmlseSB0byBhbGxvdyBhbGFybSBpbnRlbnQKKyAgICAgKiByZWNlaXZlcnMgdG8gbGF1bmNoIGFuIGFjdGl2aXR5IGFuZCBnZXQgdGhhdCB0byBydW4gYmVmb3JlIHRoZSBkZXZpY2UKKyAgICAgKiBnb2VzIGJhY2sgdG8gc2xlZXAuCisgICAgICovCisgICAgZmluYWwgUG93ZXJNYW5hZ2VyLldha2VMb2NrIG1MYXVuY2hpbmdBY3Rpdml0eTsKKworICAgIC8qKgorICAgICAqIFdoZW4gd2UgYXJlIGluIHRoZSBwcm9jZXNzIG9mIHBhdXNpbmcgYW4gYWN0aXZpdHksIGJlZm9yZSBzdGFydGluZyB0aGUKKyAgICAgKiBuZXh0IG9uZSwgdGhpcyB2YXJpYWJsZSBob2xkcyB0aGUgYWN0aXZpdHkgdGhhdCBpcyBjdXJyZW50bHkgYmVpbmcgcGF1c2VkLgorICAgICAqLworICAgIEFjdGl2aXR5UmVjb3JkIG1QYXVzaW5nQWN0aXZpdHkgPSBudWxsOworCisgICAgLyoqCisgICAgICogVGhpcyBpcyB0aGUgbGFzdCBhY3Rpdml0eSB0aGF0IHdlIHB1dCBpbnRvIHRoZSBwYXVzZWQgc3RhdGUuICBUaGlzIGlzCisgICAgICogdXNlZCB0byBkZXRlcm1pbmUgaWYgd2UgbmVlZCB0byBkbyBhbiBhY3Rpdml0eSB0cmFuc2l0aW9uIHdoaWxlIHNsZWVwaW5nLAorICAgICAqIHdoZW4gd2Ugbm9ybWFsbHkgaG9sZCB0aGUgdG9wIGFjdGl2aXR5IHBhdXNlZC4KKyAgICAgKi8KKyAgICBBY3Rpdml0eVJlY29yZCBtTGFzdFBhdXNlZEFjdGl2aXR5ID0gbnVsbDsKKworICAgIC8qKgorICAgICAqIEN1cnJlbnQgYWN0aXZpdHkgdGhhdCBpcyByZXN1bWVkLCBvciBudWxsIGlmIHRoZXJlIGlzIG5vbmUuCisgICAgICovCisgICAgQWN0aXZpdHlSZWNvcmQgbVJlc3VtZWRBY3Rpdml0eSA9IG51bGw7CisgICAgCisgICAgLyoqCisgICAgICogU2V0IHdoZW4gd2Uga25vdyB3ZSBhcmUgZ29pbmcgdG8gYmUgY2FsbGluZyB1cGRhdGVDb25maWd1cmF0aW9uKCkKKyAgICAgKiBzb29uLCBzbyB3YW50IHRvIHNraXAgaW50ZXJtZWRpYXRlIGNvbmZpZyBjaGVja3MuCisgICAgICovCisgICAgYm9vbGVhbiBtQ29uZmlnV2lsbENoYW5nZTsKKworICAgIC8qKgorICAgICAqIFNldCB0byBpbmRpY2F0ZSB3aGV0aGVyIHRvIGlzc3VlIGFuIG9uVXNlckxlYXZpbmcgY2FsbGJhY2sgd2hlbiBhCisgICAgICogbmV3bHkgbGF1bmNoZWQgYWN0aXZpdHkgaXMgYmVpbmcgYnJvdWdodCBpbiBmcm9udCBvZiB1cy4KKyAgICAgKi8KKyAgICBib29sZWFuIG1Vc2VyTGVhdmluZyA9IGZhbHNlOworICAgIAorICAgIGxvbmcgbUluaXRpYWxTdGFydFRpbWUgPSAwOworICAgIAorICAgIHN0YXRpYyBmaW5hbCBpbnQgUEFVU0VfVElNRU9VVF9NU0cgPSA5OworICAgIHN0YXRpYyBmaW5hbCBpbnQgSURMRV9USU1FT1VUX01TRyA9IDEwOworICAgIHN0YXRpYyBmaW5hbCBpbnQgSURMRV9OT1dfTVNHID0gMTE7CisgICAgc3RhdGljIGZpbmFsIGludCBMQVVOQ0hfVElNRU9VVF9NU0cgPSAxNjsKKyAgICBzdGF0aWMgZmluYWwgaW50IERFU1RST1lfVElNRU9VVF9NU0cgPSAxNzsKKyAgICBzdGF0aWMgZmluYWwgaW50IFJFU1VNRV9UT1BfQUNUSVZJVFlfTVNHID0gMTk7CisgICAgCisgICAgZmluYWwgSGFuZGxlciBtSGFuZGxlciA9IG5ldyBIYW5kbGVyKCkgeworICAgICAgICAvL3B1YmxpYyBIYW5kbGVyKCkgeworICAgICAgICAvLyAgICBpZiAobG9jYWxMT0dWKSBTbG9nLnYoVEFHLCAiSGFuZGxlciBzdGFydGVkISIpOworICAgICAgICAvL30KKworICAgICAgICBwdWJsaWMgdm9pZCBoYW5kbGVNZXNzYWdlKE1lc3NhZ2UgbXNnKSB7CisgICAgICAgICAgICBzd2l0Y2ggKG1zZy53aGF0KSB7CisgICAgICAgICAgICAgICAgY2FzZSBQQVVTRV9USU1FT1VUX01TRzogeworICAgICAgICAgICAgICAgICAgICBJQmluZGVyIHRva2VuID0gKElCaW5kZXIpbXNnLm9iajsKKyAgICAgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgYXQgdGhpcyBwb2ludCBrbm93IGlmIHRoZSBhY3Rpdml0eSBpcyBmdWxsc2NyZWVuLAorICAgICAgICAgICAgICAgICAgICAvLyBzbyB3ZSBuZWVkIHRvIGJlIGNvbnNlcnZhdGl2ZSBhbmQgYXNzdW1lIGl0IGlzbid0LgorICAgICAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiQWN0aXZpdHkgcGF1c2UgdGltZW91dCBmb3IgIiArIHRva2VuKTsKKyAgICAgICAgICAgICAgICAgICAgYWN0aXZpdHlQYXVzZWQodG9rZW4sIG51bGwsIHRydWUpOworICAgICAgICAgICAgICAgIH0gYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBJRExFX1RJTUVPVVRfTVNHOiB7CisgICAgICAgICAgICAgICAgICAgIGlmIChtU2VydmljZS5tRGlkRGV4T3B0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtU2VydmljZS5tRGlkRGV4T3B0ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlIG5tc2cgPSBtSGFuZGxlci5vYnRhaW5NZXNzYWdlKElETEVfVElNRU9VVF9NU0cpOworICAgICAgICAgICAgICAgICAgICAgICAgbm1zZy5vYmogPSBtc2cub2JqOworICAgICAgICAgICAgICAgICAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2VEZWxheWVkKG5tc2csIElETEVfVElNRU9VVCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgYXQgdGhpcyBwb2ludCBrbm93IGlmIHRoZSBhY3Rpdml0eSBpcyBmdWxsc2NyZWVuLAorICAgICAgICAgICAgICAgICAgICAvLyBzbyB3ZSBuZWVkIHRvIGJlIGNvbnNlcnZhdGl2ZSBhbmQgYXNzdW1lIGl0IGlzbid0LgorICAgICAgICAgICAgICAgICAgICBJQmluZGVyIHRva2VuID0gKElCaW5kZXIpbXNnLm9iajsKKyAgICAgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIkFjdGl2aXR5IGlkbGUgdGltZW91dCBmb3IgIiArIHRva2VuKTsKKyAgICAgICAgICAgICAgICAgICAgYWN0aXZpdHlJZGxlSW50ZXJuYWwodG9rZW4sIHRydWUsIG51bGwpOworICAgICAgICAgICAgICAgIH0gYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBERVNUUk9ZX1RJTUVPVVRfTVNHOiB7CisgICAgICAgICAgICAgICAgICAgIElCaW5kZXIgdG9rZW4gPSAoSUJpbmRlciltc2cub2JqOworICAgICAgICAgICAgICAgICAgICAvLyBXZSBkb24ndCBhdCB0aGlzIHBvaW50IGtub3cgaWYgdGhlIGFjdGl2aXR5IGlzIGZ1bGxzY3JlZW4sCisgICAgICAgICAgICAgICAgICAgIC8vIHNvIHdlIG5lZWQgdG8gYmUgY29uc2VydmF0aXZlIGFuZCBhc3N1bWUgaXQgaXNuJ3QuCisgICAgICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsICJBY3Rpdml0eSBkZXN0cm95IHRpbWVvdXQgZm9yICIgKyB0b2tlbik7CisgICAgICAgICAgICAgICAgICAgIGFjdGl2aXR5RGVzdHJveWVkKHRva2VuKTsKKyAgICAgICAgICAgICAgICB9IGJyZWFrOworICAgICAgICAgICAgICAgIGNhc2UgSURMRV9OT1dfTVNHOiB7CisgICAgICAgICAgICAgICAgICAgIElCaW5kZXIgdG9rZW4gPSAoSUJpbmRlciltc2cub2JqOworICAgICAgICAgICAgICAgICAgICBhY3Rpdml0eUlkbGVJbnRlcm5hbCh0b2tlbiwgZmFsc2UsIG51bGwpOworICAgICAgICAgICAgICAgIH0gYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBMQVVOQ0hfVElNRU9VVF9NU0c6IHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1TZXJ2aWNlLm1EaWREZXhPcHQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1TZXJ2aWNlLm1EaWREZXhPcHQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2Ugbm1zZyA9IG1IYW5kbGVyLm9idGFpbk1lc3NhZ2UoTEFVTkNIX1RJTUVPVVRfTVNHKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1IYW5kbGVyLnNlbmRNZXNzYWdlRGVsYXllZChubXNnLCBMQVVOQ0hfVElNRU9VVCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgc3luY2hyb25pemVkIChtU2VydmljZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1MYXVuY2hpbmdBY3Rpdml0eS5pc0hlbGQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsICJMYXVuY2ggdGltZW91dCBoYXMgZXhwaXJlZCwgZ2l2aW5nIHVwIHdha2UgbG9jayEiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtTGF1bmNoaW5nQWN0aXZpdHkucmVsZWFzZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFJFU1VNRV9UT1BfQUNUSVZJVFlfTVNHOiB7CisgICAgICAgICAgICAgICAgICAgIHN5bmNocm9uaXplZCAobVNlcnZpY2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VtZVRvcEFjdGl2aXR5TG9ja2VkKG51bGwpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH07CisgICAgCisgICAgQWN0aXZpdHlTdGFjayhBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlIHNlcnZpY2UsIENvbnRleHQgY29udGV4dCwgYm9vbGVhbiBtYWluU3RhY2spIHsKKyAgICAgICAgbVNlcnZpY2UgPSBzZXJ2aWNlOworICAgICAgICBtQ29udGV4dCA9IGNvbnRleHQ7CisgICAgICAgIG1NYWluU3RhY2sgPSBtYWluU3RhY2s7CisgICAgICAgIFBvd2VyTWFuYWdlciBwbSA9CisgICAgICAgICAgICAoUG93ZXJNYW5hZ2VyKWNvbnRleHQuZ2V0U3lzdGVtU2VydmljZShDb250ZXh0LlBPV0VSX1NFUlZJQ0UpOworICAgICAgICBtR29pbmdUb1NsZWVwID0gcG0ubmV3V2FrZUxvY2soUG93ZXJNYW5hZ2VyLlBBUlRJQUxfV0FLRV9MT0NLLCAiQWN0aXZpdHlNYW5hZ2VyLVNsZWVwIik7CisgICAgICAgIG1MYXVuY2hpbmdBY3Rpdml0eSA9IHBtLm5ld1dha2VMb2NrKFBvd2VyTWFuYWdlci5QQVJUSUFMX1dBS0VfTE9DSywgIkFjdGl2aXR5TWFuYWdlci1MYXVuY2giKTsKKyAgICAgICAgbUxhdW5jaGluZ0FjdGl2aXR5LnNldFJlZmVyZW5jZUNvdW50ZWQoZmFsc2UpOworICAgIH0KKyAgICAKKyAgICBmaW5hbCBBY3Rpdml0eVJlY29yZCB0b3BSdW5uaW5nQWN0aXZpdHlMb2NrZWQoQWN0aXZpdHlSZWNvcmQgbm90VG9wKSB7CisgICAgICAgIGludCBpID0gbUhpc3Rvcnkuc2l6ZSgpLTE7CisgICAgICAgIHdoaWxlIChpID49IDApIHsKKyAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSAoQWN0aXZpdHlSZWNvcmQpbUhpc3RvcnkuZ2V0KGkpOworICAgICAgICAgICAgaWYgKCFyLmZpbmlzaGluZyAmJiByICE9IG5vdFRvcCkgeworICAgICAgICAgICAgICAgIHJldHVybiByOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaS0tOworICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIGZpbmFsIEFjdGl2aXR5UmVjb3JkIHRvcFJ1bm5pbmdOb25EZWxheWVkQWN0aXZpdHlMb2NrZWQoQWN0aXZpdHlSZWNvcmQgbm90VG9wKSB7CisgICAgICAgIGludCBpID0gbUhpc3Rvcnkuc2l6ZSgpLTE7CisgICAgICAgIHdoaWxlIChpID49IDApIHsKKyAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSAoQWN0aXZpdHlSZWNvcmQpbUhpc3RvcnkuZ2V0KGkpOworICAgICAgICAgICAgaWYgKCFyLmZpbmlzaGluZyAmJiAhci5kZWxheWVkUmVzdW1lICYmIHIgIT0gbm90VG9wKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpLS07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgLyoqCisgICAgICogVGhpcyBpcyBhIHNpbXBsaWZpZWQgdmVyc2lvbiBvZiB0b3BSdW5uaW5nQWN0aXZpdHlMb2NrZWQgdGhhdCBwcm92aWRlcyBhIG51bWJlciBvZgorICAgICAqIG9wdGlvbmFsIHNraXAtb3ZlciBtb2Rlcy4gIEl0IGlzIGludGVuZGVkIGZvciB1c2Ugd2l0aCB0aGUgQWN0aXZpdHlDb250cm9sbGVyIGhvb2sgb25seS4KKyAgICAgKiAKKyAgICAgKiBAcGFyYW0gdG9rZW4gSWYgbm9uLW51bGwsIGFueSBoaXN0b3J5IHJlY29yZHMgbWF0Y2hpbmcgdGhpcyB0b2tlbiB3aWxsIGJlIHNraXBwZWQuCisgICAgICogQHBhcmFtIHRhc2tJZCBJZiBub24temVybywgd2UnbGwgYXR0ZW1wdCB0byBza2lwIG92ZXIgcmVjb3JkcyB3aXRoIHRoZSBzYW1lIHRhc2sgSUQuCisgICAgICogCisgICAgICogQHJldHVybiBSZXR1cm5zIHRoZSBIaXN0b3J5UmVjb3JkIG9mIHRoZSBuZXh0IGFjdGl2aXR5IG9uIHRoZSBzdGFjay4KKyAgICAgKi8KKyAgICBmaW5hbCBBY3Rpdml0eVJlY29yZCB0b3BSdW5uaW5nQWN0aXZpdHlMb2NrZWQoSUJpbmRlciB0b2tlbiwgaW50IHRhc2tJZCkgeworICAgICAgICBpbnQgaSA9IG1IaXN0b3J5LnNpemUoKS0xOworICAgICAgICB3aGlsZSAoaSA+PSAwKSB7CisgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gKEFjdGl2aXR5UmVjb3JkKW1IaXN0b3J5LmdldChpKTsKKyAgICAgICAgICAgIC8vIE5vdGU6IHRoZSB0YXNrSWQgY2hlY2sgZGVwZW5kcyBvbiByZWFsIHRhc2tJZCBmaWVsZHMgYmVpbmcgbm9uLXplcm8KKyAgICAgICAgICAgIGlmICghci5maW5pc2hpbmcgJiYgKHRva2VuICE9IHIpICYmICh0YXNrSWQgIT0gci50YXNrLnRhc2tJZCkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGktLTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICBmaW5hbCBpbnQgaW5kZXhPZlRva2VuTG9ja2VkKElCaW5kZXIgdG9rZW4pIHsKKyAgICAgICAgaW50IGNvdW50ID0gbUhpc3Rvcnkuc2l6ZSgpOworCisgICAgICAgIC8vIGNvbnZlcnQgdGhlIHRva2VuIHRvIGFuIGVudHJ5IGluIHRoZSBoaXN0b3J5LgorICAgICAgICBpbnQgaW5kZXggPSAtMTsKKyAgICAgICAgZm9yIChpbnQgaT1jb3VudC0xOyBpPj0wOyBpLS0pIHsKKyAgICAgICAgICAgIE9iamVjdCBvID0gbUhpc3RvcnkuZ2V0KGkpOworICAgICAgICAgICAgaWYgKG8gPT0gdG9rZW4pIHsKKyAgICAgICAgICAgICAgICBpbmRleCA9IGk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gaW5kZXg7CisgICAgfQorCisgICAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIHVwZGF0ZUxSVUxpc3RMb2NrZWQoQWN0aXZpdHlSZWNvcmQgcikgeworICAgICAgICBmaW5hbCBib29sZWFuIGhhZGl0ID0gbUxSVUFjdGl2aXRpZXMucmVtb3ZlKHIpOworICAgICAgICBtTFJVQWN0aXZpdGllcy5hZGQocik7CisgICAgICAgIHJldHVybiBoYWRpdDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSB0b3AgYWN0aXZpdHkgaW4gYW55IGV4aXN0aW5nIHRhc2sgbWF0Y2hpbmcgdGhlIGdpdmVuCisgICAgICogSW50ZW50LiAgUmV0dXJucyBudWxsIGlmIG5vIHN1Y2ggdGFzayBpcyBmb3VuZC4KKyAgICAgKi8KKyAgICBwcml2YXRlIEFjdGl2aXR5UmVjb3JkIGZpbmRUYXNrTG9ja2VkKEludGVudCBpbnRlbnQsIEFjdGl2aXR5SW5mbyBpbmZvKSB7CisgICAgICAgIENvbXBvbmVudE5hbWUgY2xzID0gaW50ZW50LmdldENvbXBvbmVudCgpOworICAgICAgICBpZiAoaW5mby50YXJnZXRBY3Rpdml0eSAhPSBudWxsKSB7CisgICAgICAgICAgICBjbHMgPSBuZXcgQ29tcG9uZW50TmFtZShpbmZvLnBhY2thZ2VOYW1lLCBpbmZvLnRhcmdldEFjdGl2aXR5KTsKKyAgICAgICAgfQorCisgICAgICAgIFRhc2tSZWNvcmQgY3AgPSBudWxsOworCisgICAgICAgIGZpbmFsIGludCBOID0gbUhpc3Rvcnkuc2l6ZSgpOworICAgICAgICBmb3IgKGludCBpPShOLTEpOyBpPj0wOyBpLS0pIHsKKyAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSAoQWN0aXZpdHlSZWNvcmQpbUhpc3RvcnkuZ2V0KGkpOworICAgICAgICAgICAgaWYgKCFyLmZpbmlzaGluZyAmJiByLnRhc2sgIT0gY3AKKyAgICAgICAgICAgICAgICAgICAgJiYgci5sYXVuY2hNb2RlICE9IEFjdGl2aXR5SW5mby5MQVVOQ0hfU0lOR0xFX0lOU1RBTkNFKSB7CisgICAgICAgICAgICAgICAgY3AgPSByLnRhc2s7CisgICAgICAgICAgICAgICAgLy9TbG9nLmkoVEFHLCAiQ29tcGFyaW5nIGV4aXN0aW5nIGNscz0iICsgci50YXNrLmludGVudC5nZXRDb21wb25lbnQoKS5mbGF0dGVuVG9TaG9ydFN0cmluZygpCisgICAgICAgICAgICAgICAgLy8gICAgICAgICsgIi9hZmY9IiArIHIudGFzay5hZmZpbml0eSArICIgdG8gbmV3IGNscz0iCisgICAgICAgICAgICAgICAgLy8gICAgICAgICsgaW50ZW50LmdldENvbXBvbmVudCgpLmZsYXR0ZW5Ub1Nob3J0U3RyaW5nKCkgKyAiL2FmZj0iICsgdGFza0FmZmluaXR5KTsKKyAgICAgICAgICAgICAgICBpZiAoci50YXNrLmFmZmluaXR5ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHIudGFzay5hZmZpbml0eS5lcXVhbHMoaW5mby50YXNrQWZmaW5pdHkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvL1Nsb2cuaShUQUcsICJGb3VuZCBtYXRjaGluZyBhZmZpbml0eSEiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyLnRhc2suaW50ZW50ICE9IG51bGwKKyAgICAgICAgICAgICAgICAgICAgICAgICYmIHIudGFzay5pbnRlbnQuZ2V0Q29tcG9uZW50KCkuZXF1YWxzKGNscykpIHsKKyAgICAgICAgICAgICAgICAgICAgLy9TbG9nLmkoVEFHLCAiRm91bmQgbWF0Y2hpbmcgY2xhc3MhIik7CisgICAgICAgICAgICAgICAgICAgIC8vZHVtcCgpOworICAgICAgICAgICAgICAgICAgICAvL1Nsb2cuaShUQUcsICJGb3IgSW50ZW50ICIgKyBpbnRlbnQgKyAiIGJyaW5naW5nIHRvIHRvcDogIiArIHIuaW50ZW50KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHI7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyLnRhc2suYWZmaW5pdHlJbnRlbnQgIT0gbnVsbAorICAgICAgICAgICAgICAgICAgICAgICAgJiYgci50YXNrLmFmZmluaXR5SW50ZW50LmdldENvbXBvbmVudCgpLmVxdWFscyhjbHMpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vU2xvZy5pKFRBRywgIkZvdW5kIG1hdGNoaW5nIGNsYXNzISIpOworICAgICAgICAgICAgICAgICAgICAvL2R1bXAoKTsKKyAgICAgICAgICAgICAgICAgICAgLy9TbG9nLmkoVEFHLCAiRm9yIEludGVudCAiICsgaW50ZW50ICsgIiBicmluZ2luZyB0byB0b3A6ICIgKyByLmludGVudCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiByOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGZpcnN0IGFjdGl2aXR5IChzdGFydGluZyBmcm9tIHRoZSB0b3Agb2YgdGhlIHN0YWNrKSB0aGF0CisgICAgICogaXMgdGhlIHNhbWUgYXMgdGhlIGdpdmVuIGFjdGl2aXR5LiAgUmV0dXJucyBudWxsIGlmIG5vIHN1Y2ggYWN0aXZpdHkKKyAgICAgKiBpcyBmb3VuZC4KKyAgICAgKi8KKyAgICBwcml2YXRlIEFjdGl2aXR5UmVjb3JkIGZpbmRBY3Rpdml0eUxvY2tlZChJbnRlbnQgaW50ZW50LCBBY3Rpdml0eUluZm8gaW5mbykgeworICAgICAgICBDb21wb25lbnROYW1lIGNscyA9IGludGVudC5nZXRDb21wb25lbnQoKTsKKyAgICAgICAgaWYgKGluZm8udGFyZ2V0QWN0aXZpdHkgIT0gbnVsbCkgeworICAgICAgICAgICAgY2xzID0gbmV3IENvbXBvbmVudE5hbWUoaW5mby5wYWNrYWdlTmFtZSwgaW5mby50YXJnZXRBY3Rpdml0eSk7CisgICAgICAgIH0KKworICAgICAgICBmaW5hbCBpbnQgTiA9IG1IaXN0b3J5LnNpemUoKTsKKyAgICAgICAgZm9yIChpbnQgaT0oTi0xKTsgaT49MDsgaS0tKSB7CisgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gKEFjdGl2aXR5UmVjb3JkKW1IaXN0b3J5LmdldChpKTsKKyAgICAgICAgICAgIGlmICghci5maW5pc2hpbmcpIHsKKyAgICAgICAgICAgICAgICBpZiAoci5pbnRlbnQuZ2V0Q29tcG9uZW50KCkuZXF1YWxzKGNscykpIHsKKyAgICAgICAgICAgICAgICAgICAgLy9TbG9nLmkoVEFHLCAiRm91bmQgbWF0Y2hpbmcgY2xhc3MhIik7CisgICAgICAgICAgICAgICAgICAgIC8vZHVtcCgpOworICAgICAgICAgICAgICAgICAgICAvL1Nsb2cuaShUQUcsICJGb3IgSW50ZW50ICIgKyBpbnRlbnQgKyAiIGJyaW5naW5nIHRvIHRvcDogIiArIHIuaW50ZW50KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgZmluYWwgYm9vbGVhbiByZWFsU3RhcnRBY3Rpdml0eUxvY2tlZChBY3Rpdml0eVJlY29yZCByLAorICAgICAgICAgICAgUHJvY2Vzc1JlY29yZCBhcHAsIGJvb2xlYW4gYW5kUmVzdW1lLCBib29sZWFuIGNoZWNrQ29uZmlnKQorICAgICAgICAgICAgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7CisKKyAgICAgICAgci5zdGFydEZyZWV6aW5nU2NyZWVuTG9ja2VkKGFwcCwgMCk7CisgICAgICAgIG1TZXJ2aWNlLm1XaW5kb3dNYW5hZ2VyLnNldEFwcFZpc2liaWxpdHkociwgdHJ1ZSk7CisKKyAgICAgICAgLy8gSGF2ZSB0aGUgd2luZG93IG1hbmFnZXIgcmUtZXZhbHVhdGUgdGhlIG9yaWVudGF0aW9uIG9mCisgICAgICAgIC8vIHRoZSBzY3JlZW4gYmFzZWQgb24gdGhlIG5ldyBhY3Rpdml0eSBvcmRlci4gIE5vdGUgdGhhdAorICAgICAgICAvLyBhcyBhIHJlc3VsdCBvZiB0aGlzLCBpdCBjYW4gY2FsbCBiYWNrIGludG8gdGhlIGFjdGl2aXR5CisgICAgICAgIC8vIG1hbmFnZXIgd2l0aCBhIG5ldyBvcmllbnRhdGlvbi4gIFdlIGRvbid0IGNhcmUgYWJvdXQgdGhhdCwKKyAgICAgICAgLy8gYmVjYXVzZSB0aGUgYWN0aXZpdHkgaXMgbm90IGN1cnJlbnRseSBydW5uaW5nIHNvIHdlIGFyZQorICAgICAgICAvLyBqdXN0IHJlc3RhcnRpbmcgaXQgYW55d2F5LgorICAgICAgICBpZiAoY2hlY2tDb25maWcpIHsKKyAgICAgICAgICAgIENvbmZpZ3VyYXRpb24gY29uZmlnID0gbVNlcnZpY2UubVdpbmRvd01hbmFnZXIudXBkYXRlT3JpZW50YXRpb25Gcm9tQXBwVG9rZW5zKAorICAgICAgICAgICAgICAgICAgICBtU2VydmljZS5tQ29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgci5tYXlGcmVlemVTY3JlZW5Mb2NrZWQoYXBwKSA/IHIgOiBudWxsKTsKKyAgICAgICAgICAgIG1TZXJ2aWNlLnVwZGF0ZUNvbmZpZ3VyYXRpb25Mb2NrZWQoY29uZmlnLCByKTsKKyAgICAgICAgfQorCisgICAgICAgIHIuYXBwID0gYXBwOworCisgICAgICAgIGlmIChsb2NhbExPR1YpIFNsb2cudihUQUcsICJMYXVuY2hpbmc6ICIgKyByKTsKKworICAgICAgICBpbnQgaWR4ID0gYXBwLmFjdGl2aXRpZXMuaW5kZXhPZihyKTsKKyAgICAgICAgaWYgKGlkeCA8IDApIHsKKyAgICAgICAgICAgIGFwcC5hY3Rpdml0aWVzLmFkZChyKTsKKyAgICAgICAgfQorICAgICAgICBtU2VydmljZS51cGRhdGVMcnVQcm9jZXNzTG9ja2VkKGFwcCwgdHJ1ZSwgdHJ1ZSk7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGlmIChhcHAudGhyZWFkID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUmVtb3RlRXhjZXB0aW9uKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBMaXN0PFJlc3VsdEluZm8+IHJlc3VsdHMgPSBudWxsOworICAgICAgICAgICAgTGlzdDxJbnRlbnQ+IG5ld0ludGVudHMgPSBudWxsOworICAgICAgICAgICAgaWYgKGFuZFJlc3VtZSkgeworICAgICAgICAgICAgICAgIHJlc3VsdHMgPSByLnJlc3VsdHM7CisgICAgICAgICAgICAgICAgbmV3SW50ZW50cyA9IHIubmV3SW50ZW50czsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChERUJVR19TV0lUQ0gpIFNsb2cudihUQUcsICJMYXVuY2hpbmc6ICIgKyByCisgICAgICAgICAgICAgICAgICAgICsgIiBpY2ljbGU9IiArIHIuaWNpY2xlCisgICAgICAgICAgICAgICAgICAgICsgIiB3aXRoIHJlc3VsdHM9IiArIHJlc3VsdHMgKyAiIG5ld0ludGVudHM9IiArIG5ld0ludGVudHMKKyAgICAgICAgICAgICAgICAgICAgKyAiIGFuZFJlc3VtZT0iICsgYW5kUmVzdW1lKTsKKyAgICAgICAgICAgIGlmIChhbmRSZXN1bWUpIHsKKyAgICAgICAgICAgICAgICBFdmVudExvZy53cml0ZUV2ZW50KEV2ZW50TG9nVGFncy5BTV9SRVNUQVJUX0FDVElWSVRZLAorICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtLmlkZW50aXR5SGFzaENvZGUociksCisgICAgICAgICAgICAgICAgICAgICAgICByLnRhc2sudGFza0lkLCByLnNob3J0Q29tcG9uZW50TmFtZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoci5pc0hvbWVBY3Rpdml0eSkgeworICAgICAgICAgICAgICAgIG1TZXJ2aWNlLm1Ib21lUHJvY2VzcyA9IGFwcDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1TZXJ2aWNlLmVuc3VyZVBhY2thZ2VEZXhPcHQoci5pbnRlbnQuZ2V0Q29tcG9uZW50KCkuZ2V0UGFja2FnZU5hbWUoKSk7CisgICAgICAgICAgICBhcHAudGhyZWFkLnNjaGVkdWxlTGF1bmNoQWN0aXZpdHkobmV3IEludGVudChyLmludGVudCksIHIsCisgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5pZGVudGl0eUhhc2hDb2RlKHIpLAorICAgICAgICAgICAgICAgICAgICByLmluZm8sIHIuaWNpY2xlLCByZXN1bHRzLCBuZXdJbnRlbnRzLCAhYW5kUmVzdW1lLAorICAgICAgICAgICAgICAgICAgICBtU2VydmljZS5pc05leHRUcmFuc2l0aW9uRm9yd2FyZCgpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKChhcHAuaW5mby5mbGFncyZBcHBsaWNhdGlvbkluZm8uRkxBR19IRUFWWV9XRUlHSFQpICE9IDApIHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIG1heSBiZSBhIGhlYXZ5LXdlaWdodCBwcm9jZXNzISAgTm90ZSB0aGF0IHRoZSBwYWNrYWdlCisgICAgICAgICAgICAgICAgLy8gbWFuYWdlciB3aWxsIGVuc3VyZSB0aGF0IG9ubHkgYWN0aXZpdHkgY2FuIHJ1biBpbiB0aGUgbWFpbgorICAgICAgICAgICAgICAgIC8vIHByb2Nlc3Mgb2YgdGhlIC5hcGssIHdoaWNoIGlzIHRoZSBvbmx5IHRoaW5nIHRoYXQgd2lsbCBiZQorICAgICAgICAgICAgICAgIC8vIGNvbnNpZGVyZWQgaGVhdnktd2VpZ2h0LgorICAgICAgICAgICAgICAgIGlmIChhcHAucHJvY2Vzc05hbWUuZXF1YWxzKGFwcC5pbmZvLnBhY2thZ2VOYW1lKSkgeworICAgICAgICAgICAgICAgICAgICBpZiAobVNlcnZpY2UubUhlYXZ5V2VpZ2h0UHJvY2VzcyAhPSBudWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgbVNlcnZpY2UubUhlYXZ5V2VpZ2h0UHJvY2VzcyAhPSBhcHApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIExvZy53KFRBRywgIlN0YXJ0aW5nIG5ldyBoZWF2eSB3ZWlnaHQgcHJvY2VzcyAiICsgYXBwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiB3aGVuIGFscmVhZHkgcnVubmluZyAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgbVNlcnZpY2UubUhlYXZ5V2VpZ2h0UHJvY2Vzcyk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2UubUhlYXZ5V2VpZ2h0UHJvY2VzcyA9IGFwcDsKKyAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSBtc2cgPSBtU2VydmljZS5tSGFuZGxlci5vYnRhaW5NZXNzYWdlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5TWFuYWdlclNlcnZpY2UuUE9TVF9IRUFWWV9OT1RJRklDQVRJT05fTVNHKTsKKyAgICAgICAgICAgICAgICAgICAgbXNnLm9iaiA9IHI7CisgICAgICAgICAgICAgICAgICAgIG1TZXJ2aWNlLm1IYW5kbGVyLnNlbmRNZXNzYWdlKG1zZyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBpZiAoci5sYXVuY2hGYWlsZWQpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBzZWNvbmQgdGltZSB3ZSBmYWlsZWQgLS0gZmluaXNoIGFjdGl2aXR5CisgICAgICAgICAgICAgICAgLy8gYW5kIGdpdmUgdXAuCisgICAgICAgICAgICAgICAgU2xvZy5lKFRBRywgIlNlY29uZCBmYWlsdXJlIGxhdW5jaGluZyAiCisgICAgICAgICAgICAgICAgICAgICAgKyByLmludGVudC5nZXRDb21wb25lbnQoKS5mbGF0dGVuVG9TaG9ydFN0cmluZygpCisgICAgICAgICAgICAgICAgICAgICAgKyAiLCBnaXZpbmcgdXAiLCBlKTsKKyAgICAgICAgICAgICAgICBtU2VydmljZS5hcHBEaWVkTG9ja2VkKGFwcCwgYXBwLnBpZCwgYXBwLnRocmVhZCk7CisgICAgICAgICAgICAgICAgcmVxdWVzdEZpbmlzaEFjdGl2aXR5TG9ja2VkKHIsIEFjdGl2aXR5LlJFU1VMVF9DQU5DRUxFRCwgbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICIybmQtY3Jhc2giKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgd2UgZmFpbGVkIC0tIHJlc3RhcnQgcHJvY2VzcyBhbmQKKyAgICAgICAgICAgIC8vIHJldHJ5LgorICAgICAgICAgICAgYXBwLmFjdGl2aXRpZXMucmVtb3ZlKHIpOworICAgICAgICAgICAgdGhyb3cgZTsKKyAgICAgICAgfQorCisgICAgICAgIHIubGF1bmNoRmFpbGVkID0gZmFsc2U7CisgICAgICAgIGlmICh1cGRhdGVMUlVMaXN0TG9ja2VkKHIpKSB7CisgICAgICAgICAgICBTbG9nLncoVEFHLCAiQWN0aXZpdHkgIiArIHIKKyAgICAgICAgICAgICAgICAgICsgIiBiZWluZyBsYXVuY2hlZCwgYnV0IGFscmVhZHkgaW4gTFJVIGxpc3QiKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChhbmRSZXN1bWUpIHsKKyAgICAgICAgICAgIC8vIEFzIHBhcnQgb2YgdGhlIHByb2Nlc3Mgb2YgbGF1bmNoaW5nLCBBY3Rpdml0eVRocmVhZCBhbHNvIHBlcmZvcm1zCisgICAgICAgICAgICAvLyBhIHJlc3VtZS4KKyAgICAgICAgICAgIHIuc3RhdGUgPSBBY3Rpdml0eVN0YXRlLlJFU1VNRUQ7CisgICAgICAgICAgICByLmljaWNsZSA9IG51bGw7CisgICAgICAgICAgICByLmhhdmVTdGF0ZSA9IGZhbHNlOworICAgICAgICAgICAgci5zdG9wcGVkID0gZmFsc2U7CisgICAgICAgICAgICBtUmVzdW1lZEFjdGl2aXR5ID0gcjsKKyAgICAgICAgICAgIHIudGFzay50b3VjaEFjdGl2ZVRpbWUoKTsKKyAgICAgICAgICAgIGNvbXBsZXRlUmVzdW1lTG9ja2VkKHIpOworICAgICAgICAgICAgcGF1c2VJZlNsZWVwaW5nTG9ja2VkKCk7ICAgICAgICAgICAgICAgIAorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gVGhpcyBhY3Rpdml0eSBpcyBub3Qgc3RhcnRpbmcgaW4gdGhlIHJlc3VtZWQgc3RhdGUuLi4gd2hpY2gKKyAgICAgICAgICAgIC8vIHNob3VsZCBsb29rIGxpa2Ugd2UgYXNrZWQgaXQgdG8gcGF1c2Urc3RvcCAoYnV0IHJlbWFpbiB2aXNpYmxlKSwKKyAgICAgICAgICAgIC8vIGFuZCBpdCBoYXMgZG9uZSBzbyBhbmQgcmVwb3J0ZWQgYmFjayB0aGUgY3VycmVudCBpY2ljbGUgYW5kCisgICAgICAgICAgICAvLyBvdGhlciBzdGF0ZS4KKyAgICAgICAgICAgIHIuc3RhdGUgPSBBY3Rpdml0eVN0YXRlLlNUT1BQRUQ7CisgICAgICAgICAgICByLnN0b3BwZWQgPSB0cnVlOworICAgICAgICB9CisKKyAgICAgICAgLy8gTGF1bmNoIHRoZSBuZXcgdmVyc2lvbiBzZXR1cCBzY3JlZW4gaWYgbmVlZGVkLiAgV2UgZG8gdGhpcyAtYWZ0ZXItCisgICAgICAgIC8vIGxhdW5jaGluZyB0aGUgaW5pdGlhbCBhY3Rpdml0eSAodGhhdCBpcywgaG9tZSksIHNvIHRoYXQgaXQgY2FuIGhhdmUKKyAgICAgICAgLy8gYSBjaGFuY2UgdG8gaW5pdGlhbGl6ZSBpdHNlbGYgd2hpbGUgaW4gdGhlIGJhY2tncm91bmQsIG1ha2luZyB0aGUKKyAgICAgICAgLy8gc3dpdGNoIGJhY2sgdG8gaXQgZmFzdGVyIGFuZCBsb29rIGJldHRlci4KKyAgICAgICAgaWYgKG1NYWluU3RhY2spIHsKKyAgICAgICAgICAgIG1TZXJ2aWNlLnN0YXJ0U2V0dXBBY3Rpdml0eUxvY2tlZCgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBwcml2YXRlIGZpbmFsIHZvaWQgc3RhcnRTcGVjaWZpY0FjdGl2aXR5TG9ja2VkKEFjdGl2aXR5UmVjb3JkIHIsCisgICAgICAgICAgICBib29sZWFuIGFuZFJlc3VtZSwgYm9vbGVhbiBjaGVja0NvbmZpZykgeworICAgICAgICAvLyBJcyB0aGlzIGFjdGl2aXR5J3MgYXBwbGljYXRpb24gYWxyZWFkeSBydW5uaW5nPworICAgICAgICBQcm9jZXNzUmVjb3JkIGFwcCA9IG1TZXJ2aWNlLmdldFByb2Nlc3NSZWNvcmRMb2NrZWQoci5wcm9jZXNzTmFtZSwKKyAgICAgICAgICAgICAgICByLmluZm8uYXBwbGljYXRpb25JbmZvLnVpZCk7CisgICAgICAgIAorICAgICAgICBpZiAoci5zdGFydFRpbWUgPT0gMCkgeworICAgICAgICAgICAgci5zdGFydFRpbWUgPSBTeXN0ZW1DbG9jay51cHRpbWVNaWxsaXMoKTsKKyAgICAgICAgICAgIGlmIChtSW5pdGlhbFN0YXJ0VGltZSA9PSAwKSB7CisgICAgICAgICAgICAgICAgbUluaXRpYWxTdGFydFRpbWUgPSByLnN0YXJ0VGltZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChtSW5pdGlhbFN0YXJ0VGltZSA9PSAwKSB7CisgICAgICAgICAgICBtSW5pdGlhbFN0YXJ0VGltZSA9IFN5c3RlbUNsb2NrLnVwdGltZU1pbGxpcygpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoYXBwICE9IG51bGwgJiYgYXBwLnRocmVhZCAhPSBudWxsKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHJlYWxTdGFydEFjdGl2aXR5TG9ja2VkKHIsIGFwcCwgYW5kUmVzdW1lLCBjaGVja0NvbmZpZyk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiRXhjZXB0aW9uIHdoZW4gc3RhcnRpbmcgYWN0aXZpdHkgIgorICAgICAgICAgICAgICAgICAgICAgICAgKyByLmludGVudC5nZXRDb21wb25lbnQoKS5mbGF0dGVuVG9TaG9ydFN0cmluZygpLCBlKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gSWYgYSBkZWFkIG9iamVjdCBleGNlcHRpb24gd2FzIHRocm93biAtLSBmYWxsIHRocm91Z2ggdG8KKyAgICAgICAgICAgIC8vIHJlc3RhcnQgdGhlIGFwcGxpY2F0aW9uLgorICAgICAgICB9CisKKyAgICAgICAgbVNlcnZpY2Uuc3RhcnRQcm9jZXNzTG9ja2VkKHIucHJvY2Vzc05hbWUsIHIuaW5mby5hcHBsaWNhdGlvbkluZm8sIHRydWUsIDAsCisgICAgICAgICAgICAgICAgImFjdGl2aXR5Iiwgci5pbnRlbnQuZ2V0Q29tcG9uZW50KCksIGZhbHNlKTsKKyAgICB9CisgICAgCisgICAgdm9pZCBwYXVzZUlmU2xlZXBpbmdMb2NrZWQoKSB7CisgICAgICAgIGlmIChtU2VydmljZS5tU2xlZXBpbmcgfHwgbVNlcnZpY2UubVNodXR0aW5nRG93bikgeworICAgICAgICAgICAgaWYgKCFtR29pbmdUb1NsZWVwLmlzSGVsZCgpKSB7CisgICAgICAgICAgICAgICAgbUdvaW5nVG9TbGVlcC5hY3F1aXJlKCk7CisgICAgICAgICAgICAgICAgaWYgKG1MYXVuY2hpbmdBY3Rpdml0eS5pc0hlbGQoKSkgeworICAgICAgICAgICAgICAgICAgICBtTGF1bmNoaW5nQWN0aXZpdHkucmVsZWFzZSgpOworICAgICAgICAgICAgICAgICAgICBtU2VydmljZS5tSGFuZGxlci5yZW1vdmVNZXNzYWdlcyhMQVVOQ0hfVElNRU9VVF9NU0cpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gSWYgd2UgYXJlIG5vdCBjdXJyZW50bHkgcGF1c2luZyBhbiBhY3Rpdml0eSwgZ2V0IHRoZSBjdXJyZW50CisgICAgICAgICAgICAvLyBvbmUgdG8gcGF1c2UuICBJZiB3ZSBhcmUgcGF1c2luZyBvbmUsIHdlIHdpbGwganVzdCBsZXQgdGhhdCBzdHVmZgorICAgICAgICAgICAgLy8gcnVuIGFuZCByZWxlYXNlIHRoZSB3YWtlIGxvY2sgd2hlbiBhbGwgZG9uZS4KKyAgICAgICAgICAgIGlmIChtUGF1c2luZ0FjdGl2aXR5ID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBpZiAoREVCVUdfUEFVU0UpIFNsb2cudihUQUcsICJTbGVlcCBuZWVkcyB0byBwYXVzZS4uLiIpOworICAgICAgICAgICAgICAgIGlmIChERUJVR19VU0VSX0xFQVZJTkcpIFNsb2cudihUQUcsICJTbGVlcCA9PiBwYXVzZSB3aXRoIHVzZXJMZWF2aW5nPWZhbHNlIik7CisgICAgICAgICAgICAgICAgc3RhcnRQYXVzaW5nTG9ja2VkKGZhbHNlLCB0cnVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICBwcml2YXRlIGZpbmFsIHZvaWQgc3RhcnRQYXVzaW5nTG9ja2VkKGJvb2xlYW4gdXNlckxlYXZpbmcsIGJvb2xlYW4gdWlTbGVlcGluZykgeworICAgICAgICBpZiAobVBhdXNpbmdBY3Rpdml0eSAhPSBudWxsKSB7CisgICAgICAgICAgICBSdW50aW1lRXhjZXB0aW9uIGUgPSBuZXcgUnVudGltZUV4Y2VwdGlvbigpOworICAgICAgICAgICAgU2xvZy5lKFRBRywgIlRyeWluZyB0byBwYXVzZSB3aGVuIHBhdXNlIGlzIGFscmVhZHkgcGVuZGluZyBmb3IgIgorICAgICAgICAgICAgICAgICAgKyBtUGF1c2luZ0FjdGl2aXR5LCBlKTsKKyAgICAgICAgfQorICAgICAgICBBY3Rpdml0eVJlY29yZCBwcmV2ID0gbVJlc3VtZWRBY3Rpdml0eTsKKyAgICAgICAgaWYgKHByZXYgPT0gbnVsbCkgeworICAgICAgICAgICAgUnVudGltZUV4Y2VwdGlvbiBlID0gbmV3IFJ1bnRpbWVFeGNlcHRpb24oKTsKKyAgICAgICAgICAgIFNsb2cuZShUQUcsICJUcnlpbmcgdG8gcGF1c2Ugd2hlbiBub3RoaW5nIGlzIHJlc3VtZWQiLCBlKTsKKyAgICAgICAgICAgIHJlc3VtZVRvcEFjdGl2aXR5TG9ja2VkKG51bGwpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChERUJVR19QQVVTRSkgU2xvZy52KFRBRywgIlN0YXJ0IHBhdXNpbmc6ICIgKyBwcmV2KTsKKyAgICAgICAgbVJlc3VtZWRBY3Rpdml0eSA9IG51bGw7CisgICAgICAgIG1QYXVzaW5nQWN0aXZpdHkgPSBwcmV2OworICAgICAgICBtTGFzdFBhdXNlZEFjdGl2aXR5ID0gcHJldjsKKyAgICAgICAgcHJldi5zdGF0ZSA9IEFjdGl2aXR5U3RhdGUuUEFVU0lORzsKKyAgICAgICAgcHJldi50YXNrLnRvdWNoQWN0aXZlVGltZSgpOworCisgICAgICAgIG1TZXJ2aWNlLnVwZGF0ZUNwdVN0YXRzKCk7CisgICAgICAgIAorICAgICAgICBpZiAocHJldi5hcHAgIT0gbnVsbCAmJiBwcmV2LmFwcC50aHJlYWQgIT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKERFQlVHX1BBVVNFKSBTbG9nLnYoVEFHLCAiRW5xdWV1ZWluZyBwZW5kaW5nIHBhdXNlOiAiICsgcHJldik7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIEV2ZW50TG9nLndyaXRlRXZlbnQoRXZlbnRMb2dUYWdzLkFNX1BBVVNFX0FDVElWSVRZLAorICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtLmlkZW50aXR5SGFzaENvZGUocHJldiksCisgICAgICAgICAgICAgICAgICAgICAgICBwcmV2LnNob3J0Q29tcG9uZW50TmFtZSk7CisgICAgICAgICAgICAgICAgcHJldi5hcHAudGhyZWFkLnNjaGVkdWxlUGF1c2VBY3Rpdml0eShwcmV2LCBwcmV2LmZpbmlzaGluZywgdXNlckxlYXZpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICBwcmV2LmNvbmZpZ0NoYW5nZUZsYWdzKTsKKyAgICAgICAgICAgICAgICBpZiAobU1haW5TdGFjaykgeworICAgICAgICAgICAgICAgICAgICBtU2VydmljZS51cGRhdGVVc2FnZVN0YXRzKHByZXYsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIC8vIElnbm9yZSBleGNlcHRpb24sIGlmIHByb2Nlc3MgZGllZCBvdGhlciBjb2RlIHdpbGwgY2xlYW51cC4KKyAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiRXhjZXB0aW9uIHRocm93biBkdXJpbmcgcGF1c2UiLCBlKTsKKyAgICAgICAgICAgICAgICBtUGF1c2luZ0FjdGl2aXR5ID0gbnVsbDsKKyAgICAgICAgICAgICAgICBtTGFzdFBhdXNlZEFjdGl2aXR5ID0gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIG1QYXVzaW5nQWN0aXZpdHkgPSBudWxsOworICAgICAgICAgICAgbUxhc3RQYXVzZWRBY3Rpdml0eSA9IG51bGw7CisgICAgICAgIH0KKworICAgICAgICAvLyBJZiB3ZSBhcmUgbm90IGdvaW5nIHRvIHNsZWVwLCB3ZSB3YW50IHRvIGVuc3VyZSB0aGUgZGV2aWNlIGlzCisgICAgICAgIC8vIGF3YWtlIHVudGlsIHRoZSBuZXh0IGFjdGl2aXR5IGlzIHN0YXJ0ZWQuCisgICAgICAgIGlmICghbVNlcnZpY2UubVNsZWVwaW5nICYmICFtU2VydmljZS5tU2h1dHRpbmdEb3duKSB7CisgICAgICAgICAgICBtTGF1bmNoaW5nQWN0aXZpdHkuYWNxdWlyZSgpOworICAgICAgICAgICAgaWYgKCFtSGFuZGxlci5oYXNNZXNzYWdlcyhMQVVOQ0hfVElNRU9VVF9NU0cpKSB7CisgICAgICAgICAgICAgICAgLy8gVG8gYmUgc2FmZSwgZG9uJ3QgYWxsb3cgdGhlIHdha2UgbG9jayB0byBiZSBoZWxkIGZvciB0b28gbG9uZy4KKyAgICAgICAgICAgICAgICBNZXNzYWdlIG1zZyA9IG1IYW5kbGVyLm9idGFpbk1lc3NhZ2UoTEFVTkNIX1RJTUVPVVRfTVNHKTsKKyAgICAgICAgICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZURlbGF5ZWQobXNnLCBMQVVOQ0hfVElNRU9VVCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworCisgICAgICAgIGlmIChtUGF1c2luZ0FjdGl2aXR5ICE9IG51bGwpIHsKKyAgICAgICAgICAgIC8vIEhhdmUgdGhlIHdpbmRvdyBtYW5hZ2VyIHBhdXNlIGl0cyBrZXkgZGlzcGF0Y2hpbmcgdW50aWwgdGhlIG5ldworICAgICAgICAgICAgLy8gYWN0aXZpdHkgaGFzIHN0YXJ0ZWQuICBJZiB3ZSdyZSBwYXVzaW5nIHRoZSBhY3Rpdml0eSBqdXN0IGJlY2F1c2UKKyAgICAgICAgICAgIC8vIHRoZSBzY3JlZW4gaXMgYmVpbmcgdHVybmVkIG9mZiBhbmQgdGhlIFVJIGlzIHNsZWVwaW5nLCBkb24ndCBpbnRlcnJ1cHQKKyAgICAgICAgICAgIC8vIGtleSBkaXNwYXRjaDsgdGhlIHNhbWUgYWN0aXZpdHkgd2lsbCBwaWNrIGl0IHVwIGFnYWluIG9uIHdha2V1cC4KKyAgICAgICAgICAgIGlmICghdWlTbGVlcGluZykgeworICAgICAgICAgICAgICAgIHByZXYucGF1c2VLZXlEaXNwYXRjaGluZ0xvY2tlZCgpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoREVCVUdfUEFVU0UpIFNsb2cudihUQUcsICJLZXkgZGlzcGF0Y2ggbm90IHBhdXNlZCBmb3Igc2NyZWVuIG9mZiIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBTY2hlZHVsZSBhIHBhdXNlIHRpbWVvdXQgaW4gY2FzZSB0aGUgYXBwIGRvZXNuJ3QgcmVzcG9uZC4KKyAgICAgICAgICAgIC8vIFdlIGRvbid0IGdpdmUgaXQgbXVjaCB0aW1lIGJlY2F1c2UgdGhpcyBkaXJlY3RseSBpbXBhY3RzIHRoZQorICAgICAgICAgICAgLy8gcmVzcG9uc2l2ZW5lc3Mgc2VlbiBieSB0aGUgdXNlci4KKyAgICAgICAgICAgIE1lc3NhZ2UgbXNnID0gbUhhbmRsZXIub2J0YWluTWVzc2FnZShQQVVTRV9USU1FT1VUX01TRyk7CisgICAgICAgICAgICBtc2cub2JqID0gcHJldjsKKyAgICAgICAgICAgIG1IYW5kbGVyLnNlbmRNZXNzYWdlRGVsYXllZChtc2csIFBBVVNFX1RJTUVPVVQpOworICAgICAgICAgICAgaWYgKERFQlVHX1BBVVNFKSBTbG9nLnYoVEFHLCAiV2FpdGluZyBmb3IgcGF1c2UgdG8gY29tcGxldGUuLi4iKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFRoaXMgYWN0aXZpdHkgZmFpbGVkIHRvIHNjaGVkdWxlIHRoZQorICAgICAgICAgICAgLy8gcGF1c2UsIHNvIGp1c3QgdHJlYXQgaXQgYXMgYmVpbmcgcGF1c2VkIG5vdy4KKyAgICAgICAgICAgIGlmIChERUJVR19QQVVTRSkgU2xvZy52KFRBRywgIkFjdGl2aXR5IG5vdCBydW5uaW5nLCByZXN1bWluZyBuZXh0LiIpOworICAgICAgICAgICAgcmVzdW1lVG9wQWN0aXZpdHlMb2NrZWQobnVsbCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgZmluYWwgdm9pZCBhY3Rpdml0eVBhdXNlZChJQmluZGVyIHRva2VuLCBCdW5kbGUgaWNpY2xlLCBib29sZWFuIHRpbWVvdXQpIHsKKyAgICAgICAgaWYgKERFQlVHX1BBVVNFKSBTbG9nLnYoCisgICAgICAgICAgICBUQUcsICJBY3Rpdml0eSBwYXVzZWQ6IHRva2VuPSIgKyB0b2tlbiArICIsIGljaWNsZT0iICsgaWNpY2xlCisgICAgICAgICAgICArICIsIHRpbWVvdXQ9IiArIHRpbWVvdXQpOworCisgICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSBudWxsOworCisgICAgICAgIHN5bmNocm9uaXplZCAobVNlcnZpY2UpIHsKKyAgICAgICAgICAgIGludCBpbmRleCA9IGluZGV4T2ZUb2tlbkxvY2tlZCh0b2tlbik7CisgICAgICAgICAgICBpZiAoaW5kZXggPj0gMCkgeworICAgICAgICAgICAgICAgIHIgPSAoQWN0aXZpdHlSZWNvcmQpbUhpc3RvcnkuZ2V0KGluZGV4KTsKKyAgICAgICAgICAgICAgICBpZiAoIXRpbWVvdXQpIHsKKyAgICAgICAgICAgICAgICAgICAgci5pY2ljbGUgPSBpY2ljbGU7CisgICAgICAgICAgICAgICAgICAgIHIuaGF2ZVN0YXRlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgbUhhbmRsZXIucmVtb3ZlTWVzc2FnZXMoUEFVU0VfVElNRU9VVF9NU0csIHIpOworICAgICAgICAgICAgICAgIGlmIChtUGF1c2luZ0FjdGl2aXR5ID09IHIpIHsKKyAgICAgICAgICAgICAgICAgICAgci5zdGF0ZSA9IEFjdGl2aXR5U3RhdGUuUEFVU0VEOworICAgICAgICAgICAgICAgICAgICBjb21wbGV0ZVBhdXNlTG9ja2VkKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgRXZlbnRMb2cud3JpdGVFdmVudChFdmVudExvZ1RhZ3MuQU1fRkFJTEVEX1RPX1BBVVNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5pZGVudGl0eUhhc2hDb2RlKHIpLCByLnNob3J0Q29tcG9uZW50TmFtZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVBhdXNpbmdBY3Rpdml0eSAhPSBudWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gbVBhdXNpbmdBY3Rpdml0eS5zaG9ydENvbXBvbmVudE5hbWUgOiAiKG5vbmUpIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBmaW5hbCB2b2lkIGNvbXBsZXRlUGF1c2VMb2NrZWQoKSB7CisgICAgICAgIEFjdGl2aXR5UmVjb3JkIHByZXYgPSBtUGF1c2luZ0FjdGl2aXR5OworICAgICAgICBpZiAoREVCVUdfUEFVU0UpIFNsb2cudihUQUcsICJDb21wbGV0ZSBwYXVzZTogIiArIHByZXYpOworICAgICAgICAKKyAgICAgICAgaWYgKHByZXYgIT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKHByZXYuZmluaXNoaW5nKSB7CisgICAgICAgICAgICAgICAgaWYgKERFQlVHX1BBVVNFKSBTbG9nLnYoVEFHLCAiRXhlY3V0aW5nIGZpbmlzaCBvZiBhY3Rpdml0eTogIiArIHByZXYpOworICAgICAgICAgICAgICAgIHByZXYgPSBmaW5pc2hDdXJyZW50QWN0aXZpdHlMb2NrZWQocHJldiwgRklOSVNIX0FGVEVSX1ZJU0lCTEUpOworICAgICAgICAgICAgfSBlbHNlIGlmIChwcmV2LmFwcCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgaWYgKERFQlVHX1BBVVNFKSBTbG9nLnYoVEFHLCAiRW5xdWV1ZWluZyBwZW5kaW5nIHN0b3A6ICIgKyBwcmV2KTsKKyAgICAgICAgICAgICAgICBpZiAocHJldi53YWl0aW5nVmlzaWJsZSkgeworICAgICAgICAgICAgICAgICAgICBwcmV2LndhaXRpbmdWaXNpYmxlID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIG1XYWl0aW5nVmlzaWJsZUFjdGl2aXRpZXMucmVtb3ZlKHByZXYpOworICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfU1dJVENIIHx8IERFQlVHX1BBVVNFKSBTbG9nLnYoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEFHLCAiQ29tcGxldGUgcGF1c2UsIG5vIGxvbmdlciB3YWl0aW5nOiAiICsgcHJldik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChwcmV2LmNvbmZpZ0Rlc3Ryb3kpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhlIHByZXZpb3VzIGlzIGJlaW5nIHBhdXNlZCBiZWNhdXNlIHRoZSBjb25maWd1cmF0aW9uCisgICAgICAgICAgICAgICAgICAgIC8vIGlzIGNoYW5naW5nLCB3aGljaCBtZWFucyBpdCBpcyBhY3R1YWxseSBzdG9wcGluZy4uLgorICAgICAgICAgICAgICAgICAgICAvLyBUbyBqdWdnbGUgdGhlIGZhY3QgdGhhdCB3ZSBhcmUgYWxzbyBzdGFydGluZyBhIG5ldworICAgICAgICAgICAgICAgICAgICAvLyBpbnN0YW5jZSByaWdodCBub3csIHdlIG5lZWQgdG8gZmlyc3QgY29tcGxldGVseSBzdG9wCisgICAgICAgICAgICAgICAgICAgIC8vIHRoZSBjdXJyZW50IGluc3RhbmNlIGJlZm9yZSBzdGFydGluZyB0aGUgbmV3IG9uZS4KKyAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX1BBVVNFKSBTbG9nLnYoVEFHLCAiRGVzdHJveWluZyBhZnRlciBwYXVzZTogIiArIHByZXYpOworICAgICAgICAgICAgICAgICAgICBkZXN0cm95QWN0aXZpdHlMb2NrZWQocHJldiwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbVN0b3BwaW5nQWN0aXZpdGllcy5hZGQocHJldik7CisgICAgICAgICAgICAgICAgICAgIGlmIChtU3RvcHBpbmdBY3Rpdml0aWVzLnNpemUoKSA+IDMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHdlIGFscmVhZHkgaGF2ZSBhIGZldyBhY3Rpdml0aWVzIHdhaXRpbmcgdG8gc3RvcCwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZW4gZ2l2ZSB1cCBvbiB0aGluZ3MgZ29pbmcgaWRsZSBhbmQgc3RhcnQgY2xlYXJpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZW0gb3V0LgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX1BBVVNFKSBTbG9nLnYoVEFHLCAiVG8gbWFueSBwZW5kaW5nIHN0b3BzLCBmb3JjaW5nIGlkbGUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgbXNnID0gTWVzc2FnZS5vYnRhaW4oKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1zZy53aGF0ID0gSURMRV9OT1dfTVNHOworICAgICAgICAgICAgICAgICAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2UobXNnKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKERFQlVHX1BBVVNFKSBTbG9nLnYoVEFHLCAiQXBwIGRpZWQgZHVyaW5nIHBhdXNlLCBub3Qgc3RvcHBpbmc6ICIgKyBwcmV2KTsKKyAgICAgICAgICAgICAgICBwcmV2ID0gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1QYXVzaW5nQWN0aXZpdHkgPSBudWxsOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFtU2VydmljZS5tU2xlZXBpbmcgJiYgIW1TZXJ2aWNlLm1TaHV0dGluZ0Rvd24pIHsKKyAgICAgICAgICAgIHJlc3VtZVRvcEFjdGl2aXR5TG9ja2VkKHByZXYpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKG1Hb2luZ1RvU2xlZXAuaXNIZWxkKCkpIHsKKyAgICAgICAgICAgICAgICBtR29pbmdUb1NsZWVwLnJlbGVhc2UoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtU2VydmljZS5tU2h1dHRpbmdEb3duKSB7CisgICAgICAgICAgICAgICAgbVNlcnZpY2Uubm90aWZ5QWxsKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChwcmV2ICE9IG51bGwpIHsKKyAgICAgICAgICAgIHByZXYucmVzdW1lS2V5RGlzcGF0Y2hpbmdMb2NrZWQoKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChwcmV2LmFwcCAhPSBudWxsICYmIHByZXYuY3B1VGltZUF0UmVzdW1lID4gMAorICAgICAgICAgICAgICAgICYmIG1TZXJ2aWNlLm1CYXR0ZXJ5U3RhdHNTZXJ2aWNlLmlzT25CYXR0ZXJ5KCkpIHsKKyAgICAgICAgICAgIGxvbmcgZGlmZiA9IDA7CisgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKG1TZXJ2aWNlLm1Qcm9jZXNzU3RhdHNUaHJlYWQpIHsKKyAgICAgICAgICAgICAgICBkaWZmID0gbVNlcnZpY2UubVByb2Nlc3NTdGF0cy5nZXRDcHVUaW1lRm9yUGlkKHByZXYuYXBwLnBpZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIC0gcHJldi5jcHVUaW1lQXRSZXN1bWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoZGlmZiA+IDApIHsKKyAgICAgICAgICAgICAgICBCYXR0ZXJ5U3RhdHNJbXBsIGJzaSA9IG1TZXJ2aWNlLm1CYXR0ZXJ5U3RhdHNTZXJ2aWNlLmdldEFjdGl2ZVN0YXRpc3RpY3MoKTsKKyAgICAgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKGJzaSkgeworICAgICAgICAgICAgICAgICAgICBCYXR0ZXJ5U3RhdHNJbXBsLlVpZC5Qcm9jIHBzID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBic2kuZ2V0UHJvY2Vzc1N0YXRzTG9ja2VkKHByZXYuaW5mby5hcHBsaWNhdGlvbkluZm8udWlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXYuaW5mby5wYWNrYWdlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChwcyAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwcy5hZGRGb3JlZ3JvdW5kVGltZUxvY2tlZChkaWZmKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBwcmV2LmNwdVRpbWVBdFJlc3VtZSA9IDA7IC8vIHJlc2V0IGl0CisgICAgfQorCisgICAgLyoqCisgICAgICogT25jZSB3ZSBrbm93IHRoYXQgd2UgaGF2ZSBhc2tlZCBhbiBhcHBsaWNhdGlvbiB0byBwdXQgYW4gYWN0aXZpdHkgaW4KKyAgICAgKiB0aGUgcmVzdW1lZCBzdGF0ZSAoZWl0aGVyIGJ5IGxhdW5jaGluZyBpdCBvciBleHBsaWNpdGx5IHRlbGxpbmcgaXQpLAorICAgICAqIHRoaXMgZnVuY3Rpb24gdXBkYXRlcyB0aGUgcmVzdCBvZiBvdXIgc3RhdGUgdG8gbWF0Y2ggdGhhdCBmYWN0LgorICAgICAqLworICAgIHByaXZhdGUgZmluYWwgdm9pZCBjb21wbGV0ZVJlc3VtZUxvY2tlZChBY3Rpdml0eVJlY29yZCBuZXh0KSB7CisgICAgICAgIG5leHQuaWRsZSA9IGZhbHNlOworICAgICAgICBuZXh0LnJlc3VsdHMgPSBudWxsOworICAgICAgICBuZXh0Lm5ld0ludGVudHMgPSBudWxsOworCisgICAgICAgIC8vIHNjaGVkdWxlIGFuIGlkbGUgdGltZW91dCBpbiBjYXNlIHRoZSBhcHAgZG9lc24ndCBkbyBpdCBmb3IgdXMuCisgICAgICAgIE1lc3NhZ2UgbXNnID0gbUhhbmRsZXIub2J0YWluTWVzc2FnZShJRExFX1RJTUVPVVRfTVNHKTsKKyAgICAgICAgbXNnLm9iaiA9IG5leHQ7CisgICAgICAgIG1IYW5kbGVyLnNlbmRNZXNzYWdlRGVsYXllZChtc2csIElETEVfVElNRU9VVCk7CisKKyAgICAgICAgaWYgKGZhbHNlKSB7CisgICAgICAgICAgICAvLyBUaGUgYWN0aXZpdHkgd2FzIG5ldmVyIHRvbGQgdG8gcGF1c2UsIHNvIGp1c3Qga2VlcAorICAgICAgICAgICAgLy8gdGhpbmdzIGdvaW5nIGFzLWlzLiAgVG8gbWFpbnRhaW4gb3VyIG93biBzdGF0ZSwKKyAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gZW11bGF0ZSBpdCBjb21pbmcgYmFjayBhbmQgc2F5aW5nIGl0IGlzCisgICAgICAgICAgICAvLyBpZGxlLgorICAgICAgICAgICAgbXNnID0gbUhhbmRsZXIub2J0YWluTWVzc2FnZShJRExFX05PV19NU0cpOworICAgICAgICAgICAgbXNnLm9iaiA9IG5leHQ7CisgICAgICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZShtc2cpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1NYWluU3RhY2spIHsKKyAgICAgICAgICAgIG1TZXJ2aWNlLnJlcG9ydFJlc3VtZWRBY3Rpdml0eUxvY2tlZChuZXh0KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgbmV4dC50aHVtYm5haWwgPSBudWxsOworICAgICAgICBpZiAobU1haW5TdGFjaykgeworICAgICAgICAgICAgbVNlcnZpY2Uuc2V0Rm9jdXNlZEFjdGl2aXR5TG9ja2VkKG5leHQpOworICAgICAgICB9CisgICAgICAgIG5leHQucmVzdW1lS2V5RGlzcGF0Y2hpbmdMb2NrZWQoKTsKKyAgICAgICAgZW5zdXJlQWN0aXZpdGllc1Zpc2libGVMb2NrZWQobnVsbCwgMCk7CisgICAgICAgIG1TZXJ2aWNlLm1XaW5kb3dNYW5hZ2VyLmV4ZWN1dGVBcHBUcmFuc2l0aW9uKCk7CisgICAgICAgIG1Ob0FuaW1BY3Rpdml0aWVzLmNsZWFyKCk7CisKKyAgICAgICAgLy8gTWFyayB0aGUgcG9pbnQgd2hlbiB0aGUgYWN0aXZpdHkgaXMgcmVzdW1pbmcKKyAgICAgICAgLy8gVE9ETzogVG8gYmUgbW9yZSBhY2N1cmF0ZSwgdGhlIG1hcmsgc2hvdWxkIGJlIGJlZm9yZSB0aGUgb25DcmVhdGUsCisgICAgICAgIC8vICAgICAgIG5vdCBhZnRlciB0aGUgb25SZXN1bWUuIEJ1dCBmb3Igc3Vic2VxdWVudCBzdGFydHMsIG9uUmVzdW1lIGlzIGZpbmUuCisgICAgICAgIGlmIChuZXh0LmFwcCAhPSBudWxsKSB7CisgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKG1TZXJ2aWNlLm1Qcm9jZXNzU3RhdHNUaHJlYWQpIHsKKyAgICAgICAgICAgICAgICBuZXh0LmNwdVRpbWVBdFJlc3VtZSA9IG1TZXJ2aWNlLm1Qcm9jZXNzU3RhdHMuZ2V0Q3B1VGltZUZvclBpZChuZXh0LmFwcC5waWQpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbmV4dC5jcHVUaW1lQXRSZXN1bWUgPSAwOyAvLyBDb3VsZG4ndCBnZXQgdGhlIGNwdSB0aW1lIG9mIHByb2Nlc3MKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIE1ha2Ugc3VyZSB0aGF0IGFsbCBhY3Rpdml0aWVzIHRoYXQgbmVlZCB0byBiZSB2aXNpYmxlICh0aGF0IGlzLCB0aGV5CisgICAgICogY3VycmVudGx5IGNhbiBiZSBzZWVuIGJ5IHRoZSB1c2VyKSBhY3R1YWxseSBhcmUuCisgICAgICovCisgICAgZmluYWwgdm9pZCBlbnN1cmVBY3Rpdml0aWVzVmlzaWJsZUxvY2tlZChBY3Rpdml0eVJlY29yZCB0b3AsCisgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCBzdGFydGluZywgU3RyaW5nIG9ubHlUaGlzUHJvY2VzcywgaW50IGNvbmZpZ0NoYW5nZXMpIHsKKyAgICAgICAgaWYgKERFQlVHX1ZJU0JJTElUWSkgU2xvZy52KAorICAgICAgICAgICAgICAgIFRBRywgImVuc3VyZUFjdGl2aXRpZXNWaXNpYmxlIGJlaGluZCAiICsgdG9wCisgICAgICAgICAgICAgICAgKyAiIGNvbmZpZ0NoYW5nZXM9MHgiICsgSW50ZWdlci50b0hleFN0cmluZyhjb25maWdDaGFuZ2VzKSk7CisKKyAgICAgICAgLy8gSWYgdGhlIHRvcCBhY3Rpdml0eSBpcyBub3QgZnVsbHNjcmVlbiwgdGhlbiB3ZSBuZWVkIHRvCisgICAgICAgIC8vIG1ha2Ugc3VyZSBhbnkgYWN0aXZpdGllcyB1bmRlciBpdCBhcmUgbm93IHZpc2libGUuCisgICAgICAgIGZpbmFsIGludCBjb3VudCA9IG1IaXN0b3J5LnNpemUoKTsKKyAgICAgICAgaW50IGkgPSBjb3VudC0xOworICAgICAgICB3aGlsZSAobUhpc3RvcnkuZ2V0KGkpICE9IHRvcCkgeworICAgICAgICAgICAgaS0tOworICAgICAgICB9CisgICAgICAgIEFjdGl2aXR5UmVjb3JkIHI7CisgICAgICAgIGJvb2xlYW4gYmVoaW5kRnVsbHNjcmVlbiA9IGZhbHNlOworICAgICAgICBmb3IgKDsgaT49MDsgaS0tKSB7CisgICAgICAgICAgICByID0gKEFjdGl2aXR5UmVjb3JkKW1IaXN0b3J5LmdldChpKTsKKyAgICAgICAgICAgIGlmIChERUJVR19WSVNCSUxJVFkpIFNsb2cudigKKyAgICAgICAgICAgICAgICAgICAgVEFHLCAiTWFrZSB2aXNpYmxlPyAiICsgciArICIgZmluaXNoaW5nPSIgKyByLmZpbmlzaGluZworICAgICAgICAgICAgICAgICAgICArICIgc3RhdGU9IiArIHIuc3RhdGUpOworICAgICAgICAgICAgaWYgKHIuZmluaXNoaW5nKSB7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gZG9UaGlzUHJvY2VzcyA9IG9ubHlUaGlzUHJvY2VzcyA9PSBudWxsCisgICAgICAgICAgICAgICAgICAgIHx8IG9ubHlUaGlzUHJvY2Vzcy5lcXVhbHMoci5wcm9jZXNzTmFtZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIEZpcnN0OiBpZiB0aGlzIGlzIG5vdCB0aGUgY3VycmVudCBhY3Rpdml0eSBiZWluZyBzdGFydGVkLCBtYWtlCisgICAgICAgICAgICAvLyBzdXJlIGl0IG1hdGNoZXMgdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbi4KKyAgICAgICAgICAgIGlmIChyICE9IHN0YXJ0aW5nICYmIGRvVGhpc1Byb2Nlc3MpIHsKKyAgICAgICAgICAgICAgICBlbnN1cmVBY3Rpdml0eUNvbmZpZ3VyYXRpb25Mb2NrZWQociwgMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChyLmFwcCA9PSBudWxsIHx8IHIuYXBwLnRocmVhZCA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgaWYgKG9ubHlUaGlzUHJvY2VzcyA9PSBudWxsCisgICAgICAgICAgICAgICAgICAgICAgICB8fCBvbmx5VGhpc1Byb2Nlc3MuZXF1YWxzKHIucHJvY2Vzc05hbWUpKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgYWN0aXZpdHkgbmVlZHMgdG8gYmUgdmlzaWJsZSwgYnV0IGlzbid0IGV2ZW4KKyAgICAgICAgICAgICAgICAgICAgLy8gcnVubmluZy4uLiAgZ2V0IGl0IHN0YXJ0ZWQsIGJ1dCBkb24ndCByZXN1bWUgaXQKKyAgICAgICAgICAgICAgICAgICAgLy8gYXQgdGhpcyBwb2ludC4KKyAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX1ZJU0JJTElUWSkgU2xvZy52KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRBRywgIlN0YXJ0IGFuZCBmcmVlemUgc2NyZWVuIGZvciAiICsgcik7CisgICAgICAgICAgICAgICAgICAgIGlmIChyICE9IHN0YXJ0aW5nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByLnN0YXJ0RnJlZXppbmdTY3JlZW5Mb2NrZWQoci5hcHAsIGNvbmZpZ0NoYW5nZXMpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICghci52aXNpYmxlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfVklTQklMSVRZKSBTbG9nLnYoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRBRywgIlN0YXJ0aW5nIGFuZCBtYWtpbmcgdmlzaWJsZTogIiArIHIpOworICAgICAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2UubVdpbmRvd01hbmFnZXIuc2V0QXBwVmlzaWJpbGl0eShyLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAociAhPSBzdGFydGluZykgeworICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRTcGVjaWZpY0FjdGl2aXR5TG9ja2VkKHIsIGZhbHNlLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoci52aXNpYmxlKSB7CisgICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBhY3Rpdml0eSBpcyBhbHJlYWR5IHZpc2libGUsIHRoZW4gdGhlcmUgaXMgbm90aGluZworICAgICAgICAgICAgICAgIC8vIGVsc2UgdG8gZG8gaGVyZS4KKyAgICAgICAgICAgICAgICBpZiAoREVCVUdfVklTQklMSVRZKSBTbG9nLnYoCisgICAgICAgICAgICAgICAgICAgICAgICBUQUcsICJTa2lwcGluZzogYWxyZWFkeSB2aXNpYmxlIGF0ICIgKyByKTsKKyAgICAgICAgICAgICAgICByLnN0b3BGcmVlemluZ1NjcmVlbkxvY2tlZChmYWxzZSk7CisKKyAgICAgICAgICAgIH0gZWxzZSBpZiAob25seVRoaXNQcm9jZXNzID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIGFjdGl2aXR5IGlzIG5vdCBjdXJyZW50bHkgdmlzaWJsZSwgYnV0IGlzIHJ1bm5pbmcuCisgICAgICAgICAgICAgICAgLy8gVGVsbCBpdCB0byBiZWNvbWUgdmlzaWJsZS4KKyAgICAgICAgICAgICAgICByLnZpc2libGUgPSB0cnVlOworICAgICAgICAgICAgICAgIGlmIChyLnN0YXRlICE9IEFjdGl2aXR5U3RhdGUuUkVTVU1FRCAmJiByICE9IHN0YXJ0aW5nKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgYWN0aXZpdHkgaXMgcGF1c2VkLCB0ZWxsIGl0CisgICAgICAgICAgICAgICAgICAgIC8vIHRvIG5vdyBzaG93IGl0cyB3aW5kb3cuCisgICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19WSVNCSUxJVFkpIFNsb2cudigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQUcsICJNYWtpbmcgdmlzaWJsZSBhbmQgc2NoZWR1bGluZyB2aXNpYmlsaXR5OiAiICsgcik7CisgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtU2VydmljZS5tV2luZG93TWFuYWdlci5zZXRBcHBWaXNpYmlsaXR5KHIsIHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgci5hcHAudGhyZWFkLnNjaGVkdWxlV2luZG93VmlzaWJpbGl0eShyLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHIuc3RvcEZyZWV6aW5nU2NyZWVuTG9ja2VkKGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEp1c3Qgc2tpcCBvbiBhbnkgZmFpbHVyZTsgd2UnbGwgbWFrZSBpdAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmlzaWJsZSB3aGVuIGl0IG5leHQgcmVzdGFydHMuCisgICAgICAgICAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiRXhjZXB0aW9uIHRocm93biBtYWtpbmcgdmlzaWJpbGU6ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyByLmludGVudC5nZXRDb21wb25lbnQoKSwgZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEFnZ3JlZ2F0ZSBjdXJyZW50IGNoYW5nZSBmbGFncy4KKyAgICAgICAgICAgIGNvbmZpZ0NoYW5nZXMgfD0gci5jb25maWdDaGFuZ2VGbGFnczsKKworICAgICAgICAgICAgaWYgKHIuZnVsbHNjcmVlbikgeworICAgICAgICAgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQsIG5vdGhpbmcgZWxzZSBuZWVkcyB0byBiZSBzaG93bgorICAgICAgICAgICAgICAgIGlmIChERUJVR19WSVNCSUxJVFkpIFNsb2cudigKKyAgICAgICAgICAgICAgICAgICAgICAgIFRBRywgIlN0b3BwaW5nOiBmdWxsc2NyZWVuIGF0ICIgKyByKTsKKyAgICAgICAgICAgICAgICBiZWhpbmRGdWxsc2NyZWVuID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBpLS07CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBOb3cgZm9yIGFueSBhY3Rpdml0aWVzIHRoYXQgYXJlbid0IHZpc2libGUgdG8gdGhlIHVzZXIsIG1ha2UKKyAgICAgICAgLy8gc3VyZSB0aGV5IG5vIGxvbmdlciBhcmUga2VlcGluZyB0aGUgc2NyZWVuIGZyb3plbi4KKyAgICAgICAgd2hpbGUgKGkgPj0gMCkgeworICAgICAgICAgICAgciA9IChBY3Rpdml0eVJlY29yZCltSGlzdG9yeS5nZXQoaSk7CisgICAgICAgICAgICBpZiAoREVCVUdfVklTQklMSVRZKSBTbG9nLnYoCisgICAgICAgICAgICAgICAgICAgIFRBRywgIk1ha2UgaW52aXNpYmxlPyAiICsgciArICIgZmluaXNoaW5nPSIgKyByLmZpbmlzaGluZworICAgICAgICAgICAgICAgICAgICArICIgc3RhdGU9IiArIHIuc3RhdGUKKyAgICAgICAgICAgICAgICAgICAgKyAiIGJlaGluZEZ1bGxzY3JlZW49IiArIGJlaGluZEZ1bGxzY3JlZW4pOworICAgICAgICAgICAgaWYgKCFyLmZpbmlzaGluZykgeworICAgICAgICAgICAgICAgIGlmIChiZWhpbmRGdWxsc2NyZWVuKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChyLnZpc2libGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19WSVNCSUxJVFkpIFNsb2cudigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEFHLCAiTWFraW5nIGludmlzaWJsZTogIiArIHIpOworICAgICAgICAgICAgICAgICAgICAgICAgci52aXNpYmxlID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TZXJ2aWNlLm1XaW5kb3dNYW5hZ2VyLnNldEFwcFZpc2liaWxpdHkociwgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoci5zdGF0ZSA9PSBBY3Rpdml0eVN0YXRlLlNUT1BQSU5HCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCByLnN0YXRlID09IEFjdGl2aXR5U3RhdGUuU1RPUFBFRCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHIuYXBwICE9IG51bGwgJiYgci5hcHAudGhyZWFkICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX1ZJU0JJTElUWSkgU2xvZy52KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRBRywgIlNjaGVkdWxpbmcgaW52aXNpYmlsaXR5OiAiICsgcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuYXBwLnRocmVhZC5zY2hlZHVsZVdpbmRvd1Zpc2liaWxpdHkociwgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSnVzdCBza2lwIG9uIGFueSBmYWlsdXJlOyB3ZSdsbCBtYWtlIGl0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gdmlzaWJsZSB3aGVuIGl0IG5leHQgcmVzdGFydHMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIkV4Y2VwdGlvbiB0aHJvd24gbWFraW5nIGhpZGRlbjogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyByLmludGVudC5nZXRDb21wb25lbnQoKSwgZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfVklTQklMSVRZKSBTbG9nLnYoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRBRywgIkFscmVhZHkgaW52aXNpYmxlOiAiICsgcik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHIuZnVsbHNjcmVlbikgeworICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfVklTQklMSVRZKSBTbG9nLnYoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEFHLCAiTm93IGJlaGluZEZ1bGxzY3JlZW46ICIgKyByKTsKKyAgICAgICAgICAgICAgICAgICAgYmVoaW5kRnVsbHNjcmVlbiA9IHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaS0tOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogVmVyc2lvbiBvZiBlbnN1cmVBY3Rpdml0aWVzVmlzaWJsZSB0aGF0IGNhbiBlYXNpbHkgYmUgY2FsbGVkIGFueXdoZXJlLgorICAgICAqLworICAgIGZpbmFsIHZvaWQgZW5zdXJlQWN0aXZpdGllc1Zpc2libGVMb2NrZWQoQWN0aXZpdHlSZWNvcmQgc3RhcnRpbmcsCisgICAgICAgICAgICBpbnQgY29uZmlnQ2hhbmdlcykgeworICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gdG9wUnVubmluZ0FjdGl2aXR5TG9ja2VkKG51bGwpOworICAgICAgICBpZiAociAhPSBudWxsKSB7CisgICAgICAgICAgICBlbnN1cmVBY3Rpdml0aWVzVmlzaWJsZUxvY2tlZChyLCBzdGFydGluZywgbnVsbCwgY29uZmlnQ2hhbmdlcyk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogRW5zdXJlIHRoYXQgdGhlIHRvcCBhY3Rpdml0eSBpbiB0aGUgc3RhY2sgaXMgcmVzdW1lZC4KKyAgICAgKgorICAgICAqIEBwYXJhbSBwcmV2IFRoZSBwcmV2aW91c2x5IHJlc3VtZWQgYWN0aXZpdHksIGZvciB3aGVuIGluIHRoZSBwcm9jZXNzCisgICAgICogb2YgcGF1c2luZzsgY2FuIGJlIG51bGwgdG8gY2FsbCBmcm9tIGVsc2V3aGVyZS4KKyAgICAgKgorICAgICAqIEByZXR1cm4gUmV0dXJucyB0cnVlIGlmIHNvbWV0aGluZyBpcyBiZWluZyByZXN1bWVkLCBvciBmYWxzZSBpZgorICAgICAqIG5vdGhpbmcgaGFwcGVuZWQuCisgICAgICovCisgICAgZmluYWwgYm9vbGVhbiByZXN1bWVUb3BBY3Rpdml0eUxvY2tlZChBY3Rpdml0eVJlY29yZCBwcmV2KSB7CisgICAgICAgIC8vIEZpbmQgdGhlIGZpcnN0IGFjdGl2aXR5IHRoYXQgaXMgbm90IGZpbmlzaGluZy4KKyAgICAgICAgQWN0aXZpdHlSZWNvcmQgbmV4dCA9IHRvcFJ1bm5pbmdBY3Rpdml0eUxvY2tlZChudWxsKTsKKworICAgICAgICAvLyBSZW1lbWJlciBob3cgd2UnbGwgcHJvY2VzcyB0aGlzIHBhdXNlL3Jlc3VtZSBzaXR1YXRpb24sIGFuZCBlbnN1cmUKKyAgICAgICAgLy8gdGhhdCB0aGUgc3RhdGUgaXMgcmVzZXQgaG93ZXZlciB3ZSB3aW5kIHVwIHByb2NlZWRpbmcuCisgICAgICAgIGZpbmFsIGJvb2xlYW4gdXNlckxlYXZpbmcgPSBtVXNlckxlYXZpbmc7CisgICAgICAgIG1Vc2VyTGVhdmluZyA9IGZhbHNlOworCisgICAgICAgIGlmIChuZXh0ID09IG51bGwpIHsKKyAgICAgICAgICAgIC8vIFRoZXJlIGFyZSBubyBtb3JlIGFjdGl2aXRpZXMhICBMZXQncyBqdXN0IHN0YXJ0IHVwIHRoZQorICAgICAgICAgICAgLy8gTGF1bmNoZXIuLi4KKyAgICAgICAgICAgIGlmIChtTWFpblN0YWNrKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIG1TZXJ2aWNlLnN0YXJ0SG9tZUFjdGl2aXR5TG9ja2VkKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBuZXh0LmRlbGF5ZWRSZXN1bWUgPSBmYWxzZTsKKyAgICAgICAgCisgICAgICAgIC8vIElmIHRoZSB0b3AgYWN0aXZpdHkgaXMgdGhlIHJlc3VtZWQgb25lLCBub3RoaW5nIHRvIGRvLgorICAgICAgICBpZiAobVJlc3VtZWRBY3Rpdml0eSA9PSBuZXh0ICYmIG5leHQuc3RhdGUgPT0gQWN0aXZpdHlTdGF0ZS5SRVNVTUVEKSB7CisgICAgICAgICAgICAvLyBNYWtlIHN1cmUgd2UgaGF2ZSBleGVjdXRlZCBhbnkgcGVuZGluZyB0cmFuc2l0aW9ucywgc2luY2UgdGhlcmUKKyAgICAgICAgICAgIC8vIHNob3VsZCBiZSBub3RoaW5nIGxlZnQgdG8gZG8gYXQgdGhpcyBwb2ludC4KKyAgICAgICAgICAgIG1TZXJ2aWNlLm1XaW5kb3dNYW5hZ2VyLmV4ZWN1dGVBcHBUcmFuc2l0aW9uKCk7CisgICAgICAgICAgICBtTm9BbmltQWN0aXZpdGllcy5jbGVhcigpOworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgd2UgYXJlIHNsZWVwaW5nLCBhbmQgdGhlcmUgaXMgbm8gcmVzdW1lZCBhY3Rpdml0eSwgYW5kIHRoZSB0b3AKKyAgICAgICAgLy8gYWN0aXZpdHkgaXMgcGF1c2VkLCB3ZWxsIHRoYXQgaXMgdGhlIHN0YXRlIHdlIHdhbnQuCisgICAgICAgIGlmICgobVNlcnZpY2UubVNsZWVwaW5nIHx8IG1TZXJ2aWNlLm1TaHV0dGluZ0Rvd24pCisgICAgICAgICAgICAgICAgJiYgbUxhc3RQYXVzZWRBY3Rpdml0eSA9PSBuZXh0ICYmIG5leHQuc3RhdGUgPT0gQWN0aXZpdHlTdGF0ZS5QQVVTRUQpIHsKKyAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB3ZSBoYXZlIGV4ZWN1dGVkIGFueSBwZW5kaW5nIHRyYW5zaXRpb25zLCBzaW5jZSB0aGVyZQorICAgICAgICAgICAgLy8gc2hvdWxkIGJlIG5vdGhpbmcgbGVmdCB0byBkbyBhdCB0aGlzIHBvaW50LgorICAgICAgICAgICAgbVNlcnZpY2UubVdpbmRvd01hbmFnZXIuZXhlY3V0ZUFwcFRyYW5zaXRpb24oKTsKKyAgICAgICAgICAgIG1Ob0FuaW1BY3Rpdml0aWVzLmNsZWFyKCk7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIFRoZSBhY3Rpdml0eSBtYXkgYmUgd2FpdGluZyBmb3Igc3RvcCwgYnV0IHRoYXQgaXMgbm8gbG9uZ2VyCisgICAgICAgIC8vIGFwcHJvcHJpYXRlIGZvciBpdC4KKyAgICAgICAgbVN0b3BwaW5nQWN0aXZpdGllcy5yZW1vdmUobmV4dCk7CisgICAgICAgIG1XYWl0aW5nVmlzaWJsZUFjdGl2aXRpZXMucmVtb3ZlKG5leHQpOworCisgICAgICAgIGlmIChERUJVR19TV0lUQ0gpIFNsb2cudihUQUcsICJSZXN1bWluZyAiICsgbmV4dCk7CisKKyAgICAgICAgLy8gSWYgd2UgYXJlIGN1cnJlbnRseSBwYXVzaW5nIGFuIGFjdGl2aXR5LCB0aGVuIGRvbid0IGRvIGFueXRoaW5nCisgICAgICAgIC8vIHVudGlsIHRoYXQgaXMgZG9uZS4KKyAgICAgICAgaWYgKG1QYXVzaW5nQWN0aXZpdHkgIT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKERFQlVHX1NXSVRDSCkgU2xvZy52KFRBRywgIlNraXAgcmVzdW1lOiBwYXVzaW5nPSIgKyBtUGF1c2luZ0FjdGl2aXR5KTsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFdlIG5lZWQgdG8gc3RhcnQgcGF1c2luZyB0aGUgY3VycmVudCBhY3Rpdml0eSBzbyB0aGUgdG9wIG9uZQorICAgICAgICAvLyBjYW4gYmUgcmVzdW1lZC4uLgorICAgICAgICBpZiAobVJlc3VtZWRBY3Rpdml0eSAhPSBudWxsKSB7CisgICAgICAgICAgICBpZiAoREVCVUdfU1dJVENIKSBTbG9nLnYoVEFHLCAiU2tpcCByZXN1bWU6IG5lZWQgdG8gc3RhcnQgcGF1c2luZyIpOworICAgICAgICAgICAgc3RhcnRQYXVzaW5nTG9ja2VkKHVzZXJMZWF2aW5nLCBmYWxzZSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChwcmV2ICE9IG51bGwgJiYgcHJldiAhPSBuZXh0KSB7CisgICAgICAgICAgICBpZiAoIXByZXYud2FpdGluZ1Zpc2libGUgJiYgbmV4dCAhPSBudWxsICYmICFuZXh0Lm5vd1Zpc2libGUpIHsKKyAgICAgICAgICAgICAgICBwcmV2LndhaXRpbmdWaXNpYmxlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBtV2FpdGluZ1Zpc2libGVBY3Rpdml0aWVzLmFkZChwcmV2KTsKKyAgICAgICAgICAgICAgICBpZiAoREVCVUdfU1dJVENIKSBTbG9nLnYoCisgICAgICAgICAgICAgICAgICAgICAgICBUQUcsICJSZXN1bWluZyB0b3AsIHdhaXRpbmcgdmlzaWJsZSB0byBoaWRlOiAiICsgcHJldik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vIFRoZSBuZXh0IGFjdGl2aXR5IGlzIGFscmVhZHkgdmlzaWJsZSwgc28gaGlkZSB0aGUgcHJldmlvdXMKKyAgICAgICAgICAgICAgICAvLyBhY3Rpdml0eSdzIHdpbmRvd3MgcmlnaHQgbm93IHNvIHdlIGNhbiBzaG93IHRoZSBuZXcgb25lIEFTQVAuCisgICAgICAgICAgICAgICAgLy8gV2Ugb25seSBkbyB0aGlzIGlmIHRoZSBwcmV2aW91cyBpcyBmaW5pc2hpbmcsIHdoaWNoIHNob3VsZCBtZWFuCisgICAgICAgICAgICAgICAgLy8gaXQgaXMgb24gdG9wIG9mIHRoZSBvbmUgYmVpbmcgcmVzdW1lZCBzbyBoaWRpbmcgaXQgcXVpY2tseQorICAgICAgICAgICAgICAgIC8vIGlzIGdvb2QuICBPdGhlcndpc2UsIHdlIHdhbnQgdG8gZG8gdGhlIG5vcm1hbCByb3V0ZSBvZiBhbGxvd2luZworICAgICAgICAgICAgICAgIC8vIHRoZSByZXN1bWVkIGFjdGl2aXR5IHRvIGJlIHNob3duIHNvIHdlIGNhbiBkZWNpZGUgaWYgdGhlCisgICAgICAgICAgICAgICAgLy8gcHJldmlvdXMgc2hvdWxkIGFjdHVhbGx5IGJlIGhpZGRlbiBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUKKyAgICAgICAgICAgICAgICAvLyBuZXcgb25lIGlzIGZvdW5kIHRvIGJlIGZ1bGwtc2NyZWVuIG9yIG5vdC4KKyAgICAgICAgICAgICAgICBpZiAocHJldi5maW5pc2hpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2UubVdpbmRvd01hbmFnZXIuc2V0QXBwVmlzaWJpbGl0eShwcmV2LCBmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19TV0lUQ0gpIFNsb2cudihUQUcsICJOb3Qgd2FpdGluZyBmb3IgdmlzaWJsZSB0byBoaWRlOiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBwcmV2ICsgIiwgd2FpdGluZ1Zpc2libGU9IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgKHByZXYgIT0gbnVsbCA/IHByZXYud2FpdGluZ1Zpc2libGUgOiBudWxsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiwgbm93VmlzaWJsZT0iICsgbmV4dC5ub3dWaXNpYmxlKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfU1dJVENIKSBTbG9nLnYoVEFHLCAiUHJldmlvdXMgYWxyZWFkeSB2aXNpYmxlIGJ1dCBzdGlsbCB3YWl0aW5nIHRvIGhpZGU6ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgcHJldiArICIsIHdhaXRpbmdWaXNpYmxlPSIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgKHByZXYgIT0gbnVsbCA/IHByZXYud2FpdGluZ1Zpc2libGUgOiBudWxsKQorICAgICAgICAgICAgICAgICAgICAgICAgKyAiLCBub3dWaXNpYmxlPSIgKyBuZXh0Lm5vd1Zpc2libGUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFdlIGFyZSBzdGFydGluZyB1cCB0aGUgbmV4dCBhY3Rpdml0eSwgc28gdGVsbCB0aGUgd2luZG93IG1hbmFnZXIKKyAgICAgICAgLy8gdGhhdCB0aGUgcHJldmlvdXMgb25lIHdpbGwgYmUgaGlkZGVuIHNvb24uICBUaGlzIHdheSBpdCBjYW4ga25vdworICAgICAgICAvLyB0byBpZ25vcmUgaXQgd2hlbiBjb21wdXRpbmcgdGhlIGRlc2lyZWQgc2NyZWVuIG9yaWVudGF0aW9uLgorICAgICAgICBpZiAocHJldiAhPSBudWxsKSB7CisgICAgICAgICAgICBpZiAocHJldi5maW5pc2hpbmcpIHsKKyAgICAgICAgICAgICAgICBpZiAoREVCVUdfVFJBTlNJVElPTikgU2xvZy52KFRBRywKKyAgICAgICAgICAgICAgICAgICAgICAgICJQcmVwYXJlIGNsb3NlIHRyYW5zaXRpb246IHByZXY9IiArIHByZXYpOworICAgICAgICAgICAgICAgIGlmIChtTm9BbmltQWN0aXZpdGllcy5jb250YWlucyhwcmV2KSkgeworICAgICAgICAgICAgICAgICAgICBtU2VydmljZS5tV2luZG93TWFuYWdlci5wcmVwYXJlQXBwVHJhbnNpdGlvbihXaW5kb3dNYW5hZ2VyUG9saWN5LlRSQU5TSVRfTk9ORSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2UubVdpbmRvd01hbmFnZXIucHJlcGFyZUFwcFRyYW5zaXRpb24ocHJldi50YXNrID09IG5leHQudGFzaworICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gV2luZG93TWFuYWdlclBvbGljeS5UUkFOU0lUX0FDVElWSVRZX0NMT1NFCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiBXaW5kb3dNYW5hZ2VyUG9saWN5LlRSQU5TSVRfVEFTS19DTE9TRSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG1TZXJ2aWNlLm1XaW5kb3dNYW5hZ2VyLnNldEFwcFdpbGxCZUhpZGRlbihwcmV2KTsKKyAgICAgICAgICAgICAgICBtU2VydmljZS5tV2luZG93TWFuYWdlci5zZXRBcHBWaXNpYmlsaXR5KHByZXYsIGZhbHNlKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKERFQlVHX1RSQU5TSVRJT04pIFNsb2cudihUQUcsCisgICAgICAgICAgICAgICAgICAgICAgICAiUHJlcGFyZSBvcGVuIHRyYW5zaXRpb246IHByZXY9IiArIHByZXYpOworICAgICAgICAgICAgICAgIGlmIChtTm9BbmltQWN0aXZpdGllcy5jb250YWlucyhuZXh0KSkgeworICAgICAgICAgICAgICAgICAgICBtU2VydmljZS5tV2luZG93TWFuYWdlci5wcmVwYXJlQXBwVHJhbnNpdGlvbihXaW5kb3dNYW5hZ2VyUG9saWN5LlRSQU5TSVRfTk9ORSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2UubVdpbmRvd01hbmFnZXIucHJlcGFyZUFwcFRyYW5zaXRpb24ocHJldi50YXNrID09IG5leHQudGFzaworICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gV2luZG93TWFuYWdlclBvbGljeS5UUkFOU0lUX0FDVElWSVRZX09QRU4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IFdpbmRvd01hbmFnZXJQb2xpY3kuVFJBTlNJVF9UQVNLX09QRU4pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChmYWxzZSkgeworICAgICAgICAgICAgICAgIG1TZXJ2aWNlLm1XaW5kb3dNYW5hZ2VyLnNldEFwcFdpbGxCZUhpZGRlbihwcmV2KTsKKyAgICAgICAgICAgICAgICBtU2VydmljZS5tV2luZG93TWFuYWdlci5zZXRBcHBWaXNpYmlsaXR5KHByZXYsIGZhbHNlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChtSGlzdG9yeS5zaXplKCkgPiAxKSB7CisgICAgICAgICAgICBpZiAoREVCVUdfVFJBTlNJVElPTikgU2xvZy52KFRBRywKKyAgICAgICAgICAgICAgICAgICAgIlByZXBhcmUgb3BlbiB0cmFuc2l0aW9uOiBubyBwcmV2aW91cyIpOworICAgICAgICAgICAgaWYgKG1Ob0FuaW1BY3Rpdml0aWVzLmNvbnRhaW5zKG5leHQpKSB7CisgICAgICAgICAgICAgICAgbVNlcnZpY2UubVdpbmRvd01hbmFnZXIucHJlcGFyZUFwcFRyYW5zaXRpb24oV2luZG93TWFuYWdlclBvbGljeS5UUkFOU0lUX05PTkUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtU2VydmljZS5tV2luZG93TWFuYWdlci5wcmVwYXJlQXBwVHJhbnNpdGlvbihXaW5kb3dNYW5hZ2VyUG9saWN5LlRSQU5TSVRfQUNUSVZJVFlfT1BFTik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAobmV4dC5hcHAgIT0gbnVsbCAmJiBuZXh0LmFwcC50aHJlYWQgIT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKERFQlVHX1NXSVRDSCkgU2xvZy52KFRBRywgIlJlc3VtZSBydW5uaW5nOiAiICsgbmV4dCk7CisKKyAgICAgICAgICAgIC8vIFRoaXMgYWN0aXZpdHkgaXMgbm93IGJlY29taW5nIHZpc2libGUuCisgICAgICAgICAgICBtU2VydmljZS5tV2luZG93TWFuYWdlci5zZXRBcHBWaXNpYmlsaXR5KG5leHQsIHRydWUpOworCisgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCBsYXN0UmVzdW1lZEFjdGl2aXR5ID0gbVJlc3VtZWRBY3Rpdml0eTsKKyAgICAgICAgICAgIEFjdGl2aXR5U3RhdGUgbGFzdFN0YXRlID0gbmV4dC5zdGF0ZTsKKworICAgICAgICAgICAgbVNlcnZpY2UudXBkYXRlQ3B1U3RhdHMoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgbmV4dC5zdGF0ZSA9IEFjdGl2aXR5U3RhdGUuUkVTVU1FRDsKKyAgICAgICAgICAgIG1SZXN1bWVkQWN0aXZpdHkgPSBuZXh0OworICAgICAgICAgICAgbmV4dC50YXNrLnRvdWNoQWN0aXZlVGltZSgpOworICAgICAgICAgICAgbVNlcnZpY2UudXBkYXRlTHJ1UHJvY2Vzc0xvY2tlZChuZXh0LmFwcCwgdHJ1ZSwgdHJ1ZSk7CisgICAgICAgICAgICB1cGRhdGVMUlVMaXN0TG9ja2VkKG5leHQpOworCisgICAgICAgICAgICAvLyBIYXZlIHRoZSB3aW5kb3cgbWFuYWdlciByZS1ldmFsdWF0ZSB0aGUgb3JpZW50YXRpb24gb2YKKyAgICAgICAgICAgIC8vIHRoZSBzY3JlZW4gYmFzZWQgb24gdGhlIG5ldyBhY3Rpdml0eSBvcmRlci4KKyAgICAgICAgICAgIGJvb2xlYW4gdXBkYXRlZCA9IGZhbHNlOworICAgICAgICAgICAgaWYgKG1NYWluU3RhY2spIHsKKyAgICAgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKG1TZXJ2aWNlKSB7CisgICAgICAgICAgICAgICAgICAgIENvbmZpZ3VyYXRpb24gY29uZmlnID0gbVNlcnZpY2UubVdpbmRvd01hbmFnZXIudXBkYXRlT3JpZW50YXRpb25Gcm9tQXBwVG9rZW5zKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TZXJ2aWNlLm1Db25maWd1cmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQubWF5RnJlZXplU2NyZWVuTG9ja2VkKG5leHQuYXBwKSA/IG5leHQgOiBudWxsKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNvbmZpZyAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXh0LmZyb3plbkJlZm9yZURlc3Ryb3kgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHVwZGF0ZWQgPSBtU2VydmljZS51cGRhdGVDb25maWd1cmF0aW9uTG9ja2VkKGNvbmZpZywgbmV4dCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCF1cGRhdGVkKSB7CisgICAgICAgICAgICAgICAgLy8gVGhlIGNvbmZpZ3VyYXRpb24gdXBkYXRlIHdhc24ndCBhYmxlIHRvIGtlZXAgdGhlIGV4aXN0aW5nCisgICAgICAgICAgICAgICAgLy8gaW5zdGFuY2Ugb2YgdGhlIGFjdGl2aXR5LCBhbmQgaW5zdGVhZCBzdGFydGVkIGEgbmV3IG9uZS4KKyAgICAgICAgICAgICAgICAvLyBXZSBzaG91bGQgYmUgYWxsIGRvbmUsIGJ1dCBsZXQncyBqdXN0IG1ha2Ugc3VyZSBvdXIgYWN0aXZpdHkKKyAgICAgICAgICAgICAgICAvLyBpcyBzdGlsbCBhdCB0aGUgdG9wIGFuZCBzY2hlZHVsZSBhbm90aGVyIHJ1biBpZiBzb21ldGhpbmcKKyAgICAgICAgICAgICAgICAvLyB3ZWlyZCBoYXBwZW5lZC4KKyAgICAgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCBuZXh0TmV4dCA9IHRvcFJ1bm5pbmdBY3Rpdml0eUxvY2tlZChudWxsKTsKKyAgICAgICAgICAgICAgICBpZiAoREVCVUdfU1dJVENIKSBTbG9nLmkoVEFHLAorICAgICAgICAgICAgICAgICAgICAgICAgIkFjdGl2aXR5IGNvbmZpZyBjaGFuZ2VkIGR1cmluZyByZXN1bWU6ICIgKyBuZXh0CisgICAgICAgICAgICAgICAgICAgICAgICArICIsIG5ldyBuZXh0OiAiICsgbmV4dE5leHQpOworICAgICAgICAgICAgICAgIGlmIChuZXh0TmV4dCAhPSBuZXh0KSB7CisgICAgICAgICAgICAgICAgICAgIC8vIERvIG92ZXIhCisgICAgICAgICAgICAgICAgICAgIG1IYW5kbGVyLnNlbmRFbXB0eU1lc3NhZ2UoUkVTVU1FX1RPUF9BQ1RJVklUWV9NU0cpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobU1haW5TdGFjaykgeworICAgICAgICAgICAgICAgICAgICBtU2VydmljZS5zZXRGb2N1c2VkQWN0aXZpdHlMb2NrZWQobmV4dCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVuc3VyZUFjdGl2aXRpZXNWaXNpYmxlTG9ja2VkKG51bGwsIDApOworICAgICAgICAgICAgICAgIG1TZXJ2aWNlLm1XaW5kb3dNYW5hZ2VyLmV4ZWN1dGVBcHBUcmFuc2l0aW9uKCk7CisgICAgICAgICAgICAgICAgbU5vQW5pbUFjdGl2aXRpZXMuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAvLyBEZWxpdmVyIGFsbCBwZW5kaW5nIHJlc3VsdHMuCisgICAgICAgICAgICAgICAgQXJyYXlMaXN0IGEgPSBuZXh0LnJlc3VsdHM7CisgICAgICAgICAgICAgICAgaWYgKGEgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBmaW5hbCBpbnQgTiA9IGEuc2l6ZSgpOworICAgICAgICAgICAgICAgICAgICBpZiAoIW5leHQuZmluaXNoaW5nICYmIE4gPiAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfUkVTVUxUUykgU2xvZy52KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQUcsICJEZWxpdmVyaW5nIHJlc3VsdHMgdG8gIiArIG5leHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiOiAiICsgYSk7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXh0LmFwcC50aHJlYWQuc2NoZWR1bGVTZW5kUmVzdWx0KG5leHQsIGEpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgaWYgKG5leHQubmV3SW50ZW50cyAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIG5leHQuYXBwLnRocmVhZC5zY2hlZHVsZU5ld0ludGVudChuZXh0Lm5ld0ludGVudHMsIG5leHQpOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIEV2ZW50TG9nLndyaXRlRXZlbnQoRXZlbnRMb2dUYWdzLkFNX1JFU1VNRV9BQ1RJVklUWSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5pZGVudGl0eUhhc2hDb2RlKG5leHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgbmV4dC50YXNrLnRhc2tJZCwgbmV4dC5zaG9ydENvbXBvbmVudE5hbWUpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIG5leHQuYXBwLnRocmVhZC5zY2hlZHVsZVJlc3VtZUFjdGl2aXR5KG5leHQsCisgICAgICAgICAgICAgICAgICAgICAgICBtU2VydmljZS5pc05leHRUcmFuc2l0aW9uRm9yd2FyZCgpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBwYXVzZUlmU2xlZXBpbmdMb2NrZWQoKTsKKworICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAvLyBXaG9vcHMsIG5lZWQgdG8gcmVzdGFydCB0aGlzIGFjdGl2aXR5IQorICAgICAgICAgICAgICAgIG5leHQuc3RhdGUgPSBsYXN0U3RhdGU7CisgICAgICAgICAgICAgICAgbVJlc3VtZWRBY3Rpdml0eSA9IGxhc3RSZXN1bWVkQWN0aXZpdHk7CisgICAgICAgICAgICAgICAgU2xvZy5pKFRBRywgIlJlc3RhcnRpbmcgYmVjYXVzZSBwcm9jZXNzIGRpZWQ6ICIgKyBuZXh0KTsKKyAgICAgICAgICAgICAgICBpZiAoIW5leHQuaGFzQmVlbkxhdW5jaGVkKSB7CisgICAgICAgICAgICAgICAgICAgIG5leHQuaGFzQmVlbkxhdW5jaGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAoU0hPV19BUFBfU1RBUlRJTkdfUFJFVklFVyAmJiBtTWFpblN0YWNrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtU2VydmljZS5tV2luZG93TWFuYWdlci5zZXRBcHBTdGFydGluZ1dpbmRvdygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCwgbmV4dC5wYWNrYWdlTmFtZSwgbmV4dC50aGVtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dC5ub25Mb2NhbGl6ZWRMYWJlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dC5sYWJlbFJlcywgbmV4dC5pY29uLCBudWxsLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzdGFydFNwZWNpZmljQWN0aXZpdHlMb2NrZWQobmV4dCwgdHJ1ZSwgZmFsc2UpOworICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBGcm9tIHRoaXMgcG9pbnQgb24sIGlmIHNvbWV0aGluZyBnb2VzIHdyb25nIHRoZXJlIGlzIG5vIHdheQorICAgICAgICAgICAgLy8gdG8gcmVjb3ZlciB0aGUgYWN0aXZpdHkuCisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIG5leHQudmlzaWJsZSA9IHRydWU7CisgICAgICAgICAgICAgICAgY29tcGxldGVSZXN1bWVMb2NrZWQobmV4dCk7CisgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIC8vIElmIGFueSBleGNlcHRpb24gZ2V0cyB0aHJvd24sIHRvc3MgYXdheSB0aGlzCisgICAgICAgICAgICAgICAgLy8gYWN0aXZpdHkgYW5kIHRyeSB0aGUgbmV4dCBvbmUuCisgICAgICAgICAgICAgICAgU2xvZy53KFRBRywgIkV4Y2VwdGlvbiB0aHJvd24gZHVyaW5nIHJlc3VtZSBvZiAiICsgbmV4dCwgZSk7CisgICAgICAgICAgICAgICAgcmVxdWVzdEZpbmlzaEFjdGl2aXR5TG9ja2VkKG5leHQsIEFjdGl2aXR5LlJFU1VMVF9DQU5DRUxFRCwgbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJyZXN1bWUtZXhjZXB0aW9uIik7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIERpZG4ndCBuZWVkIHRvIHVzZSB0aGUgaWNpY2xlLCBhbmQgaXQgaXMgbm93IG91dCBvZiBkYXRlLgorICAgICAgICAgICAgbmV4dC5pY2ljbGUgPSBudWxsOworICAgICAgICAgICAgbmV4dC5oYXZlU3RhdGUgPSBmYWxzZTsKKyAgICAgICAgICAgIG5leHQuc3RvcHBlZCA9IGZhbHNlOworCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBXaG9vcHMsIG5lZWQgdG8gcmVzdGFydCB0aGlzIGFjdGl2aXR5IQorICAgICAgICAgICAgaWYgKCFuZXh0Lmhhc0JlZW5MYXVuY2hlZCkgeworICAgICAgICAgICAgICAgIG5leHQuaGFzQmVlbkxhdW5jaGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKFNIT1dfQVBQX1NUQVJUSU5HX1BSRVZJRVcpIHsKKyAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2UubVdpbmRvd01hbmFnZXIuc2V0QXBwU3RhcnRpbmdXaW5kb3coCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCwgbmV4dC5wYWNrYWdlTmFtZSwgbmV4dC50aGVtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXh0Lm5vbkxvY2FsaXplZExhYmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHQubGFiZWxSZXMsIG5leHQuaWNvbiwgbnVsbCwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChERUJVR19TV0lUQ0gpIFNsb2cudihUQUcsICJSZXN0YXJ0aW5nOiAiICsgbmV4dCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBzdGFydFNwZWNpZmljQWN0aXZpdHlMb2NrZWQobmV4dCwgdHJ1ZSwgdHJ1ZSk7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBwcml2YXRlIGZpbmFsIHZvaWQgc3RhcnRBY3Rpdml0eUxvY2tlZChBY3Rpdml0eVJlY29yZCByLCBib29sZWFuIG5ld1Rhc2ssCisgICAgICAgICAgICBib29sZWFuIGRvUmVzdW1lKSB7CisgICAgICAgIGZpbmFsIGludCBOSCA9IG1IaXN0b3J5LnNpemUoKTsKKworICAgICAgICBpbnQgYWRkUG9zID0gLTE7CisgICAgICAgIAorICAgICAgICBpZiAoIW5ld1Rhc2spIHsKKyAgICAgICAgICAgIC8vIElmIHN0YXJ0aW5nIGluIGFuIGV4aXN0aW5nIHRhc2ssIGZpbmQgd2hlcmUgdGhhdCBpcy4uLgorICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgbmV4dCA9IG51bGw7CisgICAgICAgICAgICBib29sZWFuIHN0YXJ0SXQgPSB0cnVlOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IE5ILTE7IGkgPj0gMDsgaS0tKSB7CisgICAgICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgcCA9IChBY3Rpdml0eVJlY29yZCltSGlzdG9yeS5nZXQoaSk7CisgICAgICAgICAgICAgICAgaWYgKHAuZmluaXNoaW5nKSB7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAocC50YXNrID09IHIudGFzaykgeworICAgICAgICAgICAgICAgICAgICAvLyBIZXJlIGl0IGlzISAgTm93LCBpZiB0aGlzIGlzIG5vdCB5ZXQgdmlzaWJsZSB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgLy8gdXNlciwgdGhlbiBqdXN0IGFkZCBpdCB3aXRob3V0IHN0YXJ0aW5nOyBpdCB3aWxsCisgICAgICAgICAgICAgICAgICAgIC8vIGdldCBzdGFydGVkIHdoZW4gdGhlIHVzZXIgbmF2aWdhdGVzIGJhY2sgdG8gaXQuCisgICAgICAgICAgICAgICAgICAgIGFkZFBvcyA9IGkrMTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFzdGFydEl0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtSGlzdG9yeS5hZGQoYWRkUG9zLCByKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHIuaW5IaXN0b3J5ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHIudGFzay5udW1BY3Rpdml0aWVzKys7CisgICAgICAgICAgICAgICAgICAgICAgICBtU2VydmljZS5tV2luZG93TWFuYWdlci5hZGRBcHBUb2tlbihhZGRQb3MsIHIsIHIudGFzay50YXNrSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIuaW5mby5zY3JlZW5PcmllbnRhdGlvbiwgci5mdWxsc2NyZWVuKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChWQUxJREFURV9UT0tFTlMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU2VydmljZS5tV2luZG93TWFuYWdlci52YWxpZGF0ZUFwcFRva2VucyhtSGlzdG9yeSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChwLmZ1bGxzY3JlZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgc3RhcnRJdCA9IGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBuZXh0ID0gcDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIFBsYWNlIGEgbmV3IGFjdGl2aXR5IGF0IHRvcCBvZiBzdGFjaywgc28gaXQgaXMgbmV4dCB0byBpbnRlcmFjdAorICAgICAgICAvLyB3aXRoIHRoZSB1c2VyLgorICAgICAgICBpZiAoYWRkUG9zIDwgMCkgeworICAgICAgICAgICAgYWRkUG9zID0gbUhpc3Rvcnkuc2l6ZSgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBJZiB3ZSBhcmUgbm90IHBsYWNpbmcgdGhlIG5ldyBhY3Rpdml0eSBmcm9udG1vc3QsIHdlIGRvIG5vdCB3YW50CisgICAgICAgIC8vIHRvIGRlbGl2ZXIgdGhlIG9uVXNlckxlYXZpbmcgY2FsbGJhY2sgdG8gdGhlIGFjdHVhbCBmcm9udG1vc3QKKyAgICAgICAgLy8gYWN0aXZpdHkKKyAgICAgICAgaWYgKGFkZFBvcyA8IE5IKSB7CisgICAgICAgICAgICBtVXNlckxlYXZpbmcgPSBmYWxzZTsKKyAgICAgICAgICAgIGlmIChERUJVR19VU0VSX0xFQVZJTkcpIFNsb2cudihUQUcsICJzdGFydEFjdGl2aXR5KCkgYmVoaW5kIGZyb250LCBtVXNlckxlYXZpbmc9ZmFsc2UiKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gU2xvdCB0aGUgYWN0aXZpdHkgaW50byB0aGUgaGlzdG9yeSBzdGFjayBhbmQgcHJvY2VlZAorICAgICAgICBtSGlzdG9yeS5hZGQoYWRkUG9zLCByKTsKKyAgICAgICAgci5pbkhpc3RvcnkgPSB0cnVlOworICAgICAgICByLmZyb250T2ZUYXNrID0gbmV3VGFzazsKKyAgICAgICAgci50YXNrLm51bUFjdGl2aXRpZXMrKzsKKyAgICAgICAgaWYgKE5IID4gMCkgeworICAgICAgICAgICAgLy8gV2Ugd2FudCB0byBzaG93IHRoZSBzdGFydGluZyBwcmV2aWV3IHdpbmRvdyBpZiB3ZSBhcmUKKyAgICAgICAgICAgIC8vIHN3aXRjaGluZyB0byBhIG5ldyB0YXNrLCBvciB0aGUgbmV4dCBhY3Rpdml0eSdzIHByb2Nlc3MgaXMKKyAgICAgICAgICAgIC8vIG5vdCBjdXJyZW50bHkgcnVubmluZy4KKyAgICAgICAgICAgIGJvb2xlYW4gc2hvd1N0YXJ0aW5nSWNvbiA9IG5ld1Rhc2s7CisgICAgICAgICAgICBQcm9jZXNzUmVjb3JkIHByb2MgPSByLmFwcDsKKyAgICAgICAgICAgIGlmIChwcm9jID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBwcm9jID0gbVNlcnZpY2UubVByb2Nlc3NOYW1lcy5nZXQoci5wcm9jZXNzTmFtZSwgci5pbmZvLmFwcGxpY2F0aW9uSW5mby51aWQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHByb2MgPT0gbnVsbCB8fCBwcm9jLnRocmVhZCA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgc2hvd1N0YXJ0aW5nSWNvbiA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoREVCVUdfVFJBTlNJVElPTikgU2xvZy52KFRBRywKKyAgICAgICAgICAgICAgICAgICAgIlByZXBhcmUgb3BlbiB0cmFuc2l0aW9uOiBzdGFydGluZyAiICsgcik7CisgICAgICAgICAgICBpZiAoKHIuaW50ZW50LmdldEZsYWdzKCkmSW50ZW50LkZMQUdfQUNUSVZJVFlfTk9fQU5JTUFUSU9OKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgbVNlcnZpY2UubVdpbmRvd01hbmFnZXIucHJlcGFyZUFwcFRyYW5zaXRpb24oV2luZG93TWFuYWdlclBvbGljeS5UUkFOU0lUX05PTkUpOworICAgICAgICAgICAgICAgIG1Ob0FuaW1BY3Rpdml0aWVzLmFkZChyKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoKHIuaW50ZW50LmdldEZsYWdzKCkmSW50ZW50LkZMQUdfQUNUSVZJVFlfQ0xFQVJfV0hFTl9UQVNLX1JFU0VUKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgbVNlcnZpY2UubVdpbmRvd01hbmFnZXIucHJlcGFyZUFwcFRyYW5zaXRpb24oCisgICAgICAgICAgICAgICAgICAgICAgICBXaW5kb3dNYW5hZ2VyUG9saWN5LlRSQU5TSVRfVEFTS19PUEVOKTsKKyAgICAgICAgICAgICAgICBtTm9BbmltQWN0aXZpdGllcy5yZW1vdmUocik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1TZXJ2aWNlLm1XaW5kb3dNYW5hZ2VyLnByZXBhcmVBcHBUcmFuc2l0aW9uKG5ld1Rhc2sKKyAgICAgICAgICAgICAgICAgICAgICAgID8gV2luZG93TWFuYWdlclBvbGljeS5UUkFOU0lUX1RBU0tfT1BFTgorICAgICAgICAgICAgICAgICAgICAgICAgOiBXaW5kb3dNYW5hZ2VyUG9saWN5LlRSQU5TSVRfQUNUSVZJVFlfT1BFTik7CisgICAgICAgICAgICAgICAgbU5vQW5pbUFjdGl2aXRpZXMucmVtb3ZlKHIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbVNlcnZpY2UubVdpbmRvd01hbmFnZXIuYWRkQXBwVG9rZW4oCisgICAgICAgICAgICAgICAgICAgIGFkZFBvcywgciwgci50YXNrLnRhc2tJZCwgci5pbmZvLnNjcmVlbk9yaWVudGF0aW9uLCByLmZ1bGxzY3JlZW4pOworICAgICAgICAgICAgYm9vbGVhbiBkb1Nob3cgPSB0cnVlOworICAgICAgICAgICAgaWYgKG5ld1Rhc2spIHsKKyAgICAgICAgICAgICAgICAvLyBFdmVuIHRob3VnaCB0aGlzIGFjdGl2aXR5IGlzIHN0YXJ0aW5nIGZyZXNoLCB3ZSBzdGlsbCBuZWVkCisgICAgICAgICAgICAgICAgLy8gdG8gcmVzZXQgaXQgdG8gbWFrZSBzdXJlIHdlIGFwcGx5IGFmZmluaXRpZXMgdG8gbW92ZSBhbnkKKyAgICAgICAgICAgICAgICAvLyBleGlzdGluZyBhY3Rpdml0aWVzIGZyb20gb3RoZXIgdGFza3MgaW4gdG8gaXQuCisgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGNhbGxlciBoYXMgcmVxdWVzdGVkIHRoYXQgdGhlIHRhcmdldCB0YXNrIGJlCisgICAgICAgICAgICAgICAgLy8gcmVzZXQsIHRoZW4gZG8gc28uCisgICAgICAgICAgICAgICAgaWYgKChyLmludGVudC5nZXRGbGFncygpCisgICAgICAgICAgICAgICAgICAgICAgICAmSW50ZW50LkZMQUdfQUNUSVZJVFlfUkVTRVRfVEFTS19JRl9ORUVERUQpICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzZXRUYXNrSWZOZWVkZWRMb2NrZWQociwgcik7CisgICAgICAgICAgICAgICAgICAgIGRvU2hvdyA9IHRvcFJ1bm5pbmdOb25EZWxheWVkQWN0aXZpdHlMb2NrZWQobnVsbCkgPT0gcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoU0hPV19BUFBfU1RBUlRJTkdfUFJFVklFVyAmJiBkb1Nob3cpIHsKKyAgICAgICAgICAgICAgICAvLyBGaWd1cmUgb3V0IGlmIHdlIGFyZSB0cmFuc2l0aW9uaW5nIGZyb20gYW5vdGhlciBhY3Rpdml0eSB0aGF0IGlzCisgICAgICAgICAgICAgICAgLy8gImhhcyB0aGUgc2FtZSBzdGFydGluZyBpY29uIiBhcyB0aGUgbmV4dCBvbmUuICBUaGlzIGFsbG93cyB0aGUKKyAgICAgICAgICAgICAgICAvLyB3aW5kb3cgbWFuYWdlciB0byBrZWVwIHRoZSBwcmV2aW91cyB3aW5kb3cgaXQgaGFkIHByZXZpb3VzbHkKKyAgICAgICAgICAgICAgICAvLyBjcmVhdGVkLCBpZiBpdCBzdGlsbCBoYWQgb25lLgorICAgICAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHByZXYgPSBtUmVzdW1lZEFjdGl2aXR5OworICAgICAgICAgICAgICAgIGlmIChwcmV2ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byByZXVzZSB0aGUgcHJldmlvdXMgc3RhcnRpbmcgcHJldmlldyBpZjoKKyAgICAgICAgICAgICAgICAgICAgLy8gKDEpIFRoZSBjdXJyZW50IGFjdGl2aXR5IGlzIGluIGEgZGlmZmVyZW50IHRhc2suCisgICAgICAgICAgICAgICAgICAgIGlmIChwcmV2LnRhc2sgIT0gci50YXNrKSBwcmV2ID0gbnVsbDsKKyAgICAgICAgICAgICAgICAgICAgLy8gKDIpIFRoZSBjdXJyZW50IGFjdGl2aXR5IGlzIGFscmVhZHkgZGlzcGxheWVkLgorICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChwcmV2Lm5vd1Zpc2libGUpIHByZXYgPSBudWxsOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtU2VydmljZS5tV2luZG93TWFuYWdlci5zZXRBcHBTdGFydGluZ1dpbmRvdygKKyAgICAgICAgICAgICAgICAgICAgICAgIHIsIHIucGFja2FnZU5hbWUsIHIudGhlbWUsIHIubm9uTG9jYWxpemVkTGFiZWwsCisgICAgICAgICAgICAgICAgICAgICAgICByLmxhYmVsUmVzLCByLmljb24sIHByZXYsIHNob3dTdGFydGluZ0ljb24pOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyB0aGUgZmlyc3QgYWN0aXZpdHksIGRvbid0IGRvIGFueSBmYW5jeSBhbmltYXRpb25zLAorICAgICAgICAgICAgLy8gYmVjYXVzZSB0aGVyZSBpcyBub3RoaW5nIGZvciBpdCB0byBhbmltYXRlIG9uIHRvcCBvZi4KKyAgICAgICAgICAgIG1TZXJ2aWNlLm1XaW5kb3dNYW5hZ2VyLmFkZEFwcFRva2VuKGFkZFBvcywgciwgci50YXNrLnRhc2tJZCwKKyAgICAgICAgICAgICAgICAgICAgci5pbmZvLnNjcmVlbk9yaWVudGF0aW9uLCByLmZ1bGxzY3JlZW4pOworICAgICAgICB9CisgICAgICAgIGlmIChWQUxJREFURV9UT0tFTlMpIHsKKyAgICAgICAgICAgIG1TZXJ2aWNlLm1XaW5kb3dNYW5hZ2VyLnZhbGlkYXRlQXBwVG9rZW5zKG1IaXN0b3J5KTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChkb1Jlc3VtZSkgeworICAgICAgICAgICAgcmVzdW1lVG9wQWN0aXZpdHlMb2NrZWQobnVsbCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQZXJmb3JtIGEgcmVzZXQgb2YgdGhlIGdpdmVuIHRhc2ssIGlmIG5lZWRlZCBhcyBwYXJ0IG9mIGxhdW5jaGluZyBpdC4KKyAgICAgKiBSZXR1cm5zIHRoZSBuZXcgSGlzdG9yeVJlY29yZCBhdCB0aGUgdG9wIG9mIHRoZSB0YXNrLgorICAgICAqLworICAgIHByaXZhdGUgZmluYWwgQWN0aXZpdHlSZWNvcmQgcmVzZXRUYXNrSWZOZWVkZWRMb2NrZWQoQWN0aXZpdHlSZWNvcmQgdGFza1RvcCwKKyAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIG5ld0FjdGl2aXR5KSB7CisgICAgICAgIGJvb2xlYW4gZm9yY2VSZXNldCA9IChuZXdBY3Rpdml0eS5pbmZvLmZsYWdzCisgICAgICAgICAgICAgICAgJkFjdGl2aXR5SW5mby5GTEFHX0NMRUFSX1RBU0tfT05fTEFVTkNIKSAhPSAwOworICAgICAgICBpZiAodGFza1RvcC50YXNrLmdldEluYWN0aXZlRHVyYXRpb24oKSA+IEFDVElWSVRZX0lOQUNUSVZFX1JFU0VUX1RJTUUpIHsKKyAgICAgICAgICAgIGlmICgobmV3QWN0aXZpdHkuaW5mby5mbGFncworICAgICAgICAgICAgICAgICAgICAmQWN0aXZpdHlJbmZvLkZMQUdfQUxXQVlTX1JFVEFJTl9UQVNLX1NUQVRFKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgZm9yY2VSZXNldCA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGZpbmFsIFRhc2tSZWNvcmQgdGFzayA9IHRhc2tUb3AudGFzazsKKyAgICAgICAgCisgICAgICAgIC8vIFdlIGFyZSBnb2luZyB0byBtb3ZlIHRocm91Z2ggdGhlIGhpc3RvcnkgbGlzdCBzbyB0aGF0IHdlIGNhbiBsb29rCisgICAgICAgIC8vIGF0IGVhY2ggYWN0aXZpdHkgJ3RhcmdldCcgd2l0aCAnYmVsb3cnIGVpdGhlciB0aGUgaW50ZXJlc3RpbmcKKyAgICAgICAgLy8gYWN0aXZpdHkgaW1tZWRpYXRlbHkgYmVsb3cgaXQgaW4gdGhlIHN0YWNrIG9yIG51bGwuCisgICAgICAgIEFjdGl2aXR5UmVjb3JkIHRhcmdldCA9IG51bGw7CisgICAgICAgIGludCB0YXJnZXRJID0gMDsKKyAgICAgICAgaW50IHRhc2tUb3BJID0gLTE7CisgICAgICAgIGludCByZXBseUNoYWluRW5kID0gLTE7CisgICAgICAgIGludCBsYXN0UmVwYXJlbnRQb3MgPSAtMTsKKyAgICAgICAgZm9yIChpbnQgaT1tSGlzdG9yeS5zaXplKCktMTsgaT49LTE7IGktLSkgeworICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgYmVsb3cgPSBpID49IDAgPyAoQWN0aXZpdHlSZWNvcmQpbUhpc3RvcnkuZ2V0KGkpIDogbnVsbDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGJlbG93ICE9IG51bGwgJiYgYmVsb3cuZmluaXNoaW5nKSB7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodGFyZ2V0ID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICB0YXJnZXQgPSBiZWxvdzsKKyAgICAgICAgICAgICAgICB0YXJnZXRJID0gaTsKKyAgICAgICAgICAgICAgICAvLyBJZiB3ZSB3ZXJlIGluIHRoZSBtaWRkbGUgb2YgYSByZXBseSBjaGFpbiBiZWZvcmUgdGhpcworICAgICAgICAgICAgICAgIC8vIHRhc2ssIGl0IGRvZXNuJ3QgYXBwZWFyIGxpa2UgdGhlIHJvb3Qgb2YgdGhlIGNoYWluIHdhbnRzCisgICAgICAgICAgICAgICAgLy8gYW55dGhpbmcgaW50ZXJlc3RpbmcsIHNvIGRyb3AgaXQuCisgICAgICAgICAgICAgICAgcmVwbHlDaGFpbkVuZCA9IC0xOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgICAgIGZpbmFsIGludCBmbGFncyA9IHRhcmdldC5pbmZvLmZsYWdzOworICAgICAgICAgICAgCisgICAgICAgICAgICBmaW5hbCBib29sZWFuIGZpbmlzaE9uVGFza0xhdW5jaCA9CisgICAgICAgICAgICAgICAgKGZsYWdzJkFjdGl2aXR5SW5mby5GTEFHX0ZJTklTSF9PTl9UQVNLX0xBVU5DSCkgIT0gMDsKKyAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gYWxsb3dUYXNrUmVwYXJlbnRpbmcgPQorICAgICAgICAgICAgICAgIChmbGFncyZBY3Rpdml0eUluZm8uRkxBR19BTExPV19UQVNLX1JFUEFSRU5USU5HKSAhPSAwOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAodGFyZ2V0LnRhc2sgPT0gdGFzaykgeworICAgICAgICAgICAgICAgIC8vIFdlIGFyZSBpbnNpZGUgb2YgdGhlIHRhc2sgYmVpbmcgcmVzZXQuLi4gIHdlJ2xsIGVpdGhlcgorICAgICAgICAgICAgICAgIC8vIGZpbmlzaCB0aGlzIGFjdGl2aXR5LCBwdXNoIGl0IG91dCBmb3IgYW5vdGhlciB0YXNrLAorICAgICAgICAgICAgICAgIC8vIG9yIGxlYXZlIGl0IGFzLWlzLiAgV2Ugb25seSBkbyB0aGlzCisgICAgICAgICAgICAgICAgLy8gZm9yIGFjdGl2aXRpZXMgdGhhdCBhcmUgbm90IHRoZSByb290IG9mIHRoZSB0YXNrIChzaW5jZQorICAgICAgICAgICAgICAgIC8vIGlmIHdlIGZpbmlzaCB0aGUgcm9vdCwgd2UgbWF5IG5vIGxvbmdlciBoYXZlIHRoZSB0YXNrISkuCisgICAgICAgICAgICAgICAgaWYgKHRhc2tUb3BJIDwgMCkgeworICAgICAgICAgICAgICAgICAgICB0YXNrVG9wSSA9IHRhcmdldEk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChiZWxvdyAhPSBudWxsICYmIGJlbG93LnRhc2sgPT0gdGFzaykgeworICAgICAgICAgICAgICAgICAgICBmaW5hbCBib29sZWFuIGNsZWFyV2hlblRhc2tSZXNldCA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRhcmdldC5pbnRlbnQuZ2V0RmxhZ3MoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJkludGVudC5GTEFHX0FDVElWSVRZX0NMRUFSX1dIRU5fVEFTS19SRVNFVCkgIT0gMDsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFmaW5pc2hPblRhc2tMYXVuY2ggJiYgIWNsZWFyV2hlblRhc2tSZXNldCAmJiB0YXJnZXQucmVzdWx0VG8gIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhpcyBhY3Rpdml0eSBpcyBzZW5kaW5nIGEgcmVwbHkgdG8gYSBwcmV2aW91cworICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWN0aXZpdHksIHdlIGNhbid0IGRvIGFueXRoaW5nIHdpdGggaXQgbm93IHVudGlsCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB3ZSByZWFjaCB0aGUgc3RhcnQgb2YgdGhlIHJlcGx5IGNoYWluLgorICAgICAgICAgICAgICAgICAgICAgICAgLy8gWFhYIG5vdGUgdGhhdCB3ZSBhcmUgYXNzdW1pbmcgdGhlIHJlc3VsdCBpcyBhbHdheXMKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIHRoZSBwcmV2aW91cyBhY3Rpdml0eSwgd2hpY2ggaXMgYWxtb3N0IGFsd2F5cworICAgICAgICAgICAgICAgICAgICAgICAgLy8gdGhlIGNhc2UgYnV0IHdlIHJlYWxseSBzaG91bGRuJ3QgY291bnQgb24uCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVwbHlDaGFpbkVuZCA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBseUNoYWluRW5kID0gdGFyZ2V0STsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICghZmluaXNoT25UYXNrTGF1bmNoICYmICFjbGVhcldoZW5UYXNrUmVzZXQgJiYgYWxsb3dUYXNrUmVwYXJlbnRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiB0YXJnZXQudGFza0FmZmluaXR5ICE9IG51bGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAhdGFyZ2V0LnRhc2tBZmZpbml0eS5lcXVhbHModGFzay5hZmZpbml0eSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgYWN0aXZpdHkgaGFzIGFuIGFmZmluaXR5IGZvciBhbm90aGVyCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB0YXNrLCB0aGVuIHdlIG5lZWQgdG8gbW92ZSBpdCBvdXQgb2YgaGVyZS4gIFdlIHdpbGwKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIG1vdmUgaXQgYXMgZmFyIG91dCBvZiB0aGUgd2F5IGFzIHBvc3NpYmxlLCB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJvdHRvbSBvZiB0aGUgYWN0aXZpdHkgc3RhY2suICBUaGlzIGFsc28ga2VlcHMgaXQKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvcnJlY3RseSBvcmRlcmVkIHdpdGggYW55IGFjdGl2aXRpZXMgd2UgcHJldmlvdXNseQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gbW92ZWQuCisgICAgICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCBwID0gKEFjdGl2aXR5UmVjb3JkKW1IaXN0b3J5LmdldCgwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YXJnZXQudGFza0FmZmluaXR5ICE9IG51bGwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgdGFyZ2V0LnRhc2tBZmZpbml0eS5lcXVhbHMocC50YXNrLmFmZmluaXR5KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBhY3Rpdml0eSBjdXJyZW50bHkgYXQgdGhlIGJvdHRvbSBoYXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc2FtZSB0YXNrIGFmZmluaXR5IGFzIHRoZSBvbmUgd2UgYXJlIG1vdmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGVuIG1lcmdlIGl0IGludG8gdGhlIHNhbWUgdGFzay4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQudGFzayA9IHAudGFzazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfVEFTS1MpIFNsb2cudihUQUcsICJTdGFydCBwdXNoaW5nIGFjdGl2aXR5ICIgKyB0YXJnZXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiBvdXQgdG8gYm90dG9tIHRhc2sgIiArIHAudGFzayk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TZXJ2aWNlLm1DdXJUYXNrKys7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1TZXJ2aWNlLm1DdXJUYXNrIDw9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2UubUN1clRhc2sgPSAxOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQudGFzayA9IG5ldyBUYXNrUmVjb3JkKG1TZXJ2aWNlLm1DdXJUYXNrLCB0YXJnZXQuaW5mbywgbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0YXJnZXQuaW5mby5mbGFncyZBY3Rpdml0eUluZm8uRkxBR19DTEVBUl9UQVNLX09OX0xBVU5DSCkgIT0gMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LnRhc2suYWZmaW5pdHlJbnRlbnQgPSB0YXJnZXQuaW50ZW50OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19UQVNLUykgU2xvZy52KFRBRywgIlN0YXJ0IHB1c2hpbmcgYWN0aXZpdHkgIiArIHRhcmdldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiIG91dCB0byBuZXcgdGFzayAiICsgdGFyZ2V0LnRhc2spOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2UubVdpbmRvd01hbmFnZXIuc2V0QXBwR3JvdXBJZCh0YXJnZXQsIHRhc2sudGFza0lkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXBseUNoYWluRW5kIDwgMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGx5Q2hhaW5FbmQgPSB0YXJnZXRJOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRzdFBvcyA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBzcmNQb3M9dGFyZ2V0STsgc3JjUG9zPD1yZXBseUNoYWluRW5kOyBzcmNQb3MrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSAoQWN0aXZpdHlSZWNvcmQpbUhpc3RvcnkuZ2V0KHNyY1Bvcyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAuZmluaXNoaW5nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfVEFTS1MpIFNsb2cudihUQUcsICJQdXNoaW5nIG5leHQgYWN0aXZpdHkgIiArIHAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIiBvdXQgdG8gdGFyZ2V0J3MgdGFzayAiICsgdGFyZ2V0LnRhc2spOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2subnVtQWN0aXZpdGllcy0tOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAudGFzayA9IHRhcmdldC50YXNrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldC50YXNrLm51bUFjdGl2aXRpZXMrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtSGlzdG9yeS5yZW1vdmUoc3JjUG9zKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtSGlzdG9yeS5hZGQoZHN0UG9zLCBwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU2VydmljZS5tV2luZG93TWFuYWdlci5tb3ZlQXBwVG9rZW4oZHN0UG9zLCBwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU2VydmljZS5tV2luZG93TWFuYWdlci5zZXRBcHBHcm91cElkKHAsIHAudGFzay50YXNrSWQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdFBvcysrOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChWQUxJREFURV9UT0tFTlMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2UubVdpbmRvd01hbmFnZXIudmFsaWRhdGVBcHBUb2tlbnMobUhpc3RvcnkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpKys7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGFza1RvcCA9PSBwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFza1RvcCA9IGJlbG93OworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRhc2tUb3BJID09IHJlcGx5Q2hhaW5FbmQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrVG9wSSA9IC0xOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgcmVwbHlDaGFpbkVuZCA9IC0xOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG1NYWluU3RhY2spIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU2VydmljZS5hZGRSZWNlbnRUYXNrTG9ja2VkKHRhcmdldC50YXNrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmb3JjZVJlc2V0IHx8IGZpbmlzaE9uVGFza0xhdW5jaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGNsZWFyV2hlblRhc2tSZXNldCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGFjdGl2aXR5IHNob3VsZCBqdXN0IGJlIHJlbW92ZWQgLS0gZWl0aGVyCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBiZWNhdXNlIGl0IGFza3MgZm9yIGl0LCBvciB0aGUgdGFzayBzaG91bGQgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNsZWFyZWQgLS0gdGhlbiBmaW5pc2ggaXQgYW5kIGFueXRoaW5nIHRoYXQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBhcnQgb2YgaXRzIHJlcGx5IGNoYWluLgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNsZWFyV2hlblRhc2tSZXNldCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSwgd2Ugd2FudCB0byBmaW5pc2ggdGhpcyBhY3Rpdml0eQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGFuZCBldmVyeXRoaW5nIGFib3ZlIGl0LCBzbyBiZSBzbmVha3kgYW5kIHByZXRlbmQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBsaWtlIHRoZXNlIGFyZSBhbGwgaW4gdGhlIHJlcGx5IGNoYWluLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGx5Q2hhaW5FbmQgPSB0YXJnZXRJKzE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKHJlcGx5Q2hhaW5FbmQgPCBtSGlzdG9yeS5zaXplKCkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgoQWN0aXZpdHlSZWNvcmQpbUhpc3RvcnkuZ2V0KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbHlDaGFpbkVuZCkpLnRhc2sgPT0gdGFzaykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBseUNoYWluRW5kKys7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGx5Q2hhaW5FbmQtLTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmVwbHlDaGFpbkVuZCA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBseUNoYWluRW5kID0gdGFyZ2V0STsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHAgPSBudWxsOworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgc3JjUG9zPXRhcmdldEk7IHNyY1Bvczw9cmVwbHlDaGFpbkVuZDsgc3JjUG9zKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gKEFjdGl2aXR5UmVjb3JkKW1IaXN0b3J5LmdldChzcmNQb3MpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwLmZpbmlzaGluZykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbmlzaEFjdGl2aXR5TG9ja2VkKHAsIHNyY1BvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5LlJFU1VMVF9DQU5DRUxFRCwgbnVsbCwgInJlc2V0IikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbHlDaGFpbkVuZC0tOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNQb3MtLTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGFza1RvcCA9PSBwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFza1RvcCA9IGJlbG93OworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRhc2tUb3BJID09IHJlcGx5Q2hhaW5FbmQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrVG9wSSA9IC0xOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgcmVwbHlDaGFpbkVuZCA9IC0xOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgd2Ugd2VyZSBpbiB0aGUgbWlkZGxlIG9mIGEgY2hhaW4sIHdlbGwgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBhY3Rpdml0eSB0aGF0IHN0YXJ0ZWQgaXQgYWxsIGRvZXNuJ3Qgd2FudCBhbnl0aGluZworICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3BlY2lhbCwgc28gbGVhdmUgaXQgYWxsIGFzLWlzLgorICAgICAgICAgICAgICAgICAgICAgICAgcmVwbHlDaGFpbkVuZCA9IC0xOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gUmVhY2hlZCB0aGUgYm90dG9tIG9mIHRoZSB0YXNrIC0tIGFueSByZXBseSBjaGFpbgorICAgICAgICAgICAgICAgICAgICAvLyBzaG91bGQgYmUgbGVmdCBhcy1pcy4KKyAgICAgICAgICAgICAgICAgICAgcmVwbHlDaGFpbkVuZCA9IC0xOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0gZWxzZSBpZiAodGFyZ2V0LnJlc3VsdFRvICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAvLyBJZiB0aGlzIGFjdGl2aXR5IGlzIHNlbmRpbmcgYSByZXBseSB0byBhIHByZXZpb3VzCisgICAgICAgICAgICAgICAgLy8gYWN0aXZpdHksIHdlIGNhbid0IGRvIGFueXRoaW5nIHdpdGggaXQgbm93IHVudGlsCisgICAgICAgICAgICAgICAgLy8gd2UgcmVhY2ggdGhlIHN0YXJ0IG9mIHRoZSByZXBseSBjaGFpbi4KKyAgICAgICAgICAgICAgICAvLyBYWFggbm90ZSB0aGF0IHdlIGFyZSBhc3N1bWluZyB0aGUgcmVzdWx0IGlzIGFsd2F5cworICAgICAgICAgICAgICAgIC8vIHRvIHRoZSBwcmV2aW91cyBhY3Rpdml0eSwgd2hpY2ggaXMgYWxtb3N0IGFsd2F5cworICAgICAgICAgICAgICAgIC8vIHRoZSBjYXNlIGJ1dCB3ZSByZWFsbHkgc2hvdWxkbid0IGNvdW50IG9uLgorICAgICAgICAgICAgICAgIGlmIChyZXBseUNoYWluRW5kIDwgMCkgeworICAgICAgICAgICAgICAgICAgICByZXBseUNoYWluRW5kID0gdGFyZ2V0STsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIH0gZWxzZSBpZiAodGFza1RvcEkgPj0gMCAmJiBhbGxvd1Rhc2tSZXBhcmVudGluZworICAgICAgICAgICAgICAgICAgICAmJiB0YXNrLmFmZmluaXR5ICE9IG51bGwKKyAgICAgICAgICAgICAgICAgICAgJiYgdGFzay5hZmZpbml0eS5lcXVhbHModGFyZ2V0LnRhc2tBZmZpbml0eSkpIHsKKyAgICAgICAgICAgICAgICAvLyBXZSBhcmUgaW5zaWRlIG9mIGFub3RoZXIgdGFzay4uLiAgaWYgdGhpcyBhY3Rpdml0eSBoYXMKKyAgICAgICAgICAgICAgICAvLyBhbiBhZmZpbml0eSBmb3Igb3VyIHRhc2ssIHRoZW4gZWl0aGVyIHJlbW92ZSBpdCBpZiB3ZSBhcmUKKyAgICAgICAgICAgICAgICAvLyBjbGVhcmluZyBvciBtb3ZlIGl0IG92ZXIgdG8gb3VyIHRhc2suICBOb3RlIHRoYXQKKyAgICAgICAgICAgICAgICAvLyB3ZSBjdXJyZW50bHkgcHVudCBvbiB0aGUgY2FzZSB3aGVyZSB3ZSBhcmUgcmVzZXR0aW5nIGEKKyAgICAgICAgICAgICAgICAvLyB0YXNrIHRoYXQgaXMgbm90IGF0IHRoZSB0b3AgYnV0IHdobyBoYXMgYWN0aXZpdGllcyBhYm92ZQorICAgICAgICAgICAgICAgIC8vIHdpdGggYW4gYWZmaW5pdHkgdG8gaXQuLi4gIHRoaXMgaXMgcmVhbGx5IG5vdCBhIG5vcm1hbAorICAgICAgICAgICAgICAgIC8vIGNhc2UsIGFuZCB3ZSB3aWxsIG5lZWQgdG8gbGF0ZXIgcHVsbCB0aGF0IHRhc2sgdG8gdGhlIGZyb250CisgICAgICAgICAgICAgICAgLy8gYW5kIHVzdWFsbHkgYXQgdGhhdCBwb2ludCB3ZSB3aWxsIGRvIHRoZSByZXNldCBhbmQgcGljaworICAgICAgICAgICAgICAgIC8vIHVwIHRob3NlIHJlbWFpbmluZyBhY3Rpdml0aWVzLiAgKFRoaXMgb25seSBoYXBwZW5zIGlmCisgICAgICAgICAgICAgICAgLy8gc29tZW9uZSBzdGFydHMgYW4gYWN0aXZpdHkgaW4gYSBuZXcgdGFzayBmcm9tIGFuIGFjdGl2aXR5CisgICAgICAgICAgICAgICAgLy8gaW4gYSB0YXNrIHRoYXQgaXMgbm90IGN1cnJlbnRseSBvbiB0b3AuKQorICAgICAgICAgICAgICAgIGlmIChmb3JjZVJlc2V0IHx8IGZpbmlzaE9uVGFza0xhdW5jaCkgeworICAgICAgICAgICAgICAgICAgICBpZiAocmVwbHlDaGFpbkVuZCA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcGx5Q2hhaW5FbmQgPSB0YXJnZXRJOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHAgPSBudWxsOworICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBzcmNQb3M9dGFyZ2V0STsgc3JjUG9zPD1yZXBseUNoYWluRW5kOyBzcmNQb3MrKykgeworICAgICAgICAgICAgICAgICAgICAgICAgcCA9IChBY3Rpdml0eVJlY29yZCltSGlzdG9yeS5nZXQoc3JjUG9zKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwLmZpbmlzaGluZykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbmlzaEFjdGl2aXR5TG9ja2VkKHAsIHNyY1BvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHkuUkVTVUxUX0NBTkNFTEVELCBudWxsLCAicmVzZXQiKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2tUb3BJLS07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFJlcGFyZW50UG9zLS07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbHlDaGFpbkVuZC0tOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1Bvcy0tOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHJlcGx5Q2hhaW5FbmQgPSAtMTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBpZiAocmVwbHlDaGFpbkVuZCA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlcGx5Q2hhaW5FbmQgPSB0YXJnZXRJOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IHNyY1Bvcz1yZXBseUNoYWluRW5kOyBzcmNQb3M+PXRhcmdldEk7IHNyY1Bvcy0tKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCBwID0gKEFjdGl2aXR5UmVjb3JkKW1IaXN0b3J5LmdldChzcmNQb3MpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHAuZmluaXNoaW5nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobGFzdFJlcGFyZW50UG9zIDwgMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhc3RSZXBhcmVudFBvcyA9IHRhc2tUb3BJOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2tUb3AgPSBwOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXN0UmVwYXJlbnRQb3MtLTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1IaXN0b3J5LnJlbW92ZShzcmNQb3MpOworICAgICAgICAgICAgICAgICAgICAgICAgcC50YXNrLm51bUFjdGl2aXRpZXMtLTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHAudGFzayA9IHRhc2s7CisgICAgICAgICAgICAgICAgICAgICAgICBtSGlzdG9yeS5hZGQobGFzdFJlcGFyZW50UG9zLCBwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChERUJVR19UQVNLUykgU2xvZy52KFRBRywgIlB1bGxpbmcgYWN0aXZpdHkgIiArIHAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiIGluIHRvIHJlc2V0dGluZyB0YXNrICIgKyB0YXNrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRhc2subnVtQWN0aXZpdGllcysrOworICAgICAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2UubVdpbmRvd01hbmFnZXIubW92ZUFwcFRva2VuKGxhc3RSZXBhcmVudFBvcywgcCk7CisgICAgICAgICAgICAgICAgICAgICAgICBtU2VydmljZS5tV2luZG93TWFuYWdlci5zZXRBcHBHcm91cElkKHAsIHAudGFzay50YXNrSWQpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFZBTElEQVRFX1RPS0VOUykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1TZXJ2aWNlLm1XaW5kb3dNYW5hZ2VyLnZhbGlkYXRlQXBwVG9rZW5zKG1IaXN0b3J5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICByZXBseUNoYWluRW5kID0gLTE7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAvLyBOb3cgd2UndmUgbW92ZWQgaXQgaW4gdG8gcGxhY2UuLi4gIGJ1dCB3aGF0IGlmIHRoaXMgaXMKKyAgICAgICAgICAgICAgICAgICAgLy8gYSBzaW5nbGVUb3AgYWN0aXZpdHkgYW5kIHdlIGhhdmUgcHV0IGl0IG9uIHRvcCBvZiBhbm90aGVyCisgICAgICAgICAgICAgICAgICAgIC8vIGluc3RhbmNlIG9mIHRoZSBzYW1lIGFjdGl2aXR5PyAgVGhlbiB3ZSBkcm9wIHRoZSBpbnN0YW5jZQorICAgICAgICAgICAgICAgICAgICAvLyBiZWxvdyBzbyBpdCByZW1haW5zIHNpbmdsZVRvcC4KKyAgICAgICAgICAgICAgICAgICAgaWYgKHRhcmdldC5pbmZvLmxhdW5jaE1vZGUgPT0gQWN0aXZpdHlJbmZvLkxBVU5DSF9TSU5HTEVfVE9QKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBqPWxhc3RSZXBhcmVudFBvcy0xOyBqPj0wOyBqLS0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCBwID0gKEFjdGl2aXR5UmVjb3JkKW1IaXN0b3J5LmdldChqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocC5maW5pc2hpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwLmludGVudC5nZXRDb21wb25lbnQoKS5lcXVhbHModGFyZ2V0LmludGVudC5nZXRDb21wb25lbnQoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZpbmlzaEFjdGl2aXR5TG9ja2VkKHAsIGosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHkuUkVTVUxUX0NBTkNFTEVELCBudWxsLCAicmVwbGFjZSIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXNrVG9wSS0tOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdFJlcGFyZW50UG9zLS07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRhcmdldCA9IGJlbG93OworICAgICAgICAgICAgdGFyZ2V0SSA9IGk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiB0YXNrVG9wOworICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBQZXJmb3JtIGNsZWFyIG9wZXJhdGlvbiBhcyByZXF1ZXN0ZWQgYnkKKyAgICAgKiB7QGxpbmsgSW50ZW50I0ZMQUdfQUNUSVZJVFlfQ0xFQVJfVE9QfTogc2VhcmNoIGZyb20gdGhlIHRvcCBvZiB0aGUKKyAgICAgKiBzdGFjayB0byB0aGUgZ2l2ZW4gdGFzaywgdGhlbiBsb29rIGZvcgorICAgICAqIGFuIGluc3RhbmNlIG9mIHRoYXQgYWN0aXZpdHkgaW4gdGhlIHN0YWNrIGFuZCwgaWYgZm91bmQsIGZpbmlzaCBhbGwKKyAgICAgKiBhY3Rpdml0aWVzIG9uIHRvcCBvZiBpdCBhbmQgcmV0dXJuIHRoZSBpbnN0YW5jZS4KKyAgICAgKgorICAgICAqIEBwYXJhbSBuZXdSIERlc2NyaXB0aW9uIG9mIHRoZSBuZXcgYWN0aXZpdHkgYmVpbmcgc3RhcnRlZC4KKyAgICAgKiBAcmV0dXJuIFJldHVybnMgdGhlIG9sZCBhY3Rpdml0eSB0aGF0IHNob3VsZCBiZSBjb250aW51ZSB0byBiZSB1c2VkLAorICAgICAqIG9yIG51bGwgaWYgbm9uZSB3YXMgZm91bmQuCisgICAgICovCisgICAgcHJpdmF0ZSBmaW5hbCBBY3Rpdml0eVJlY29yZCBwZXJmb3JtQ2xlYXJUYXNrTG9ja2VkKGludCB0YXNrSWQsCisgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCBuZXdSLCBpbnQgbGF1bmNoRmxhZ3MsIGJvb2xlYW4gZG9DbGVhcikgeworICAgICAgICBpbnQgaSA9IG1IaXN0b3J5LnNpemUoKTsKKyAgICAgICAgCisgICAgICAgIC8vIEZpcnN0IGZpbmQgdGhlIHJlcXVlc3RlZCB0YXNrLgorICAgICAgICB3aGlsZSAoaSA+IDApIHsKKyAgICAgICAgICAgIGktLTsKKyAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSAoQWN0aXZpdHlSZWNvcmQpbUhpc3RvcnkuZ2V0KGkpOworICAgICAgICAgICAgaWYgKHIudGFzay50YXNrSWQgPT0gdGFza0lkKSB7CisgICAgICAgICAgICAgICAgaSsrOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBOb3cgY2xlYXIgaXQuCisgICAgICAgIHdoaWxlIChpID4gMCkgeworICAgICAgICAgICAgaS0tOworICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IChBY3Rpdml0eVJlY29yZCltSGlzdG9yeS5nZXQoaSk7CisgICAgICAgICAgICBpZiAoci5maW5pc2hpbmcpIHsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChyLnRhc2sudGFza0lkICE9IHRhc2tJZCkgeworICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHIucmVhbEFjdGl2aXR5LmVxdWFscyhuZXdSLnJlYWxBY3Rpdml0eSkpIHsKKyAgICAgICAgICAgICAgICAvLyBIZXJlIGl0IGlzISAgTm93IGZpbmlzaCBldmVyeXRoaW5nIGluIGZyb250Li4uCisgICAgICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgcmV0ID0gcjsKKyAgICAgICAgICAgICAgICBpZiAoZG9DbGVhcikgeworICAgICAgICAgICAgICAgICAgICB3aGlsZSAoaSA8IChtSGlzdG9yeS5zaXplKCktMSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGkrKzsKKyAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAoQWN0aXZpdHlSZWNvcmQpbUhpc3RvcnkuZ2V0KGkpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIuZmluaXNoaW5nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZmluaXNoQWN0aXZpdHlMb2NrZWQociwgaSwgQWN0aXZpdHkuUkVTVUxUX0NBTkNFTEVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsLCAiY2xlYXIiKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGktLTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBGaW5hbGx5LCBpZiB0aGlzIGlzIGEgbm9ybWFsIGxhdW5jaCBtb2RlICh0aGF0IGlzLCBub3QKKyAgICAgICAgICAgICAgICAvLyBleHBlY3Rpbmcgb25OZXdJbnRlbnQoKSksIHRoZW4gd2Ugd2lsbCBmaW5pc2ggdGhlIGN1cnJlbnQKKyAgICAgICAgICAgICAgICAvLyBpbnN0YW5jZSBvZiB0aGUgYWN0aXZpdHkgc28gYSBuZXcgZnJlc2ggb25lIGNhbiBiZSBzdGFydGVkLgorICAgICAgICAgICAgICAgIGlmIChyZXQubGF1bmNoTW9kZSA9PSBBY3Rpdml0eUluZm8uTEFVTkNIX01VTFRJUExFCisgICAgICAgICAgICAgICAgICAgICAgICAmJiAobGF1bmNoRmxhZ3MmSW50ZW50LkZMQUdfQUNUSVZJVFlfU0lOR0xFX1RPUCkgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoIXJldC5maW5pc2hpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCBpbmRleCA9IGluZGV4T2ZUb2tlbkxvY2tlZChyZXQpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGluZGV4ID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW5pc2hBY3Rpdml0eUxvY2tlZChyZXQsIGluZGV4LCBBY3Rpdml0eS5SRVNVTFRfQ0FOQ0VMRUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsLCAiY2xlYXIiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHJldHVybiByZXQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBGaW5kIHRoZSBhY3Rpdml0eSBpbiB0aGUgaGlzdG9yeSBzdGFjayB3aXRoaW4gdGhlIGdpdmVuIHRhc2suICBSZXR1cm5zCisgICAgICogdGhlIGluZGV4IHdpdGhpbiB0aGUgaGlzdG9yeSBhdCB3aGljaCBpdCdzIGZvdW5kLCBvciA8IDAgaWYgbm90IGZvdW5kLgorICAgICAqLworICAgIHByaXZhdGUgZmluYWwgaW50IGZpbmRBY3Rpdml0eUluSGlzdG9yeUxvY2tlZChBY3Rpdml0eVJlY29yZCByLCBpbnQgdGFzaykgeworICAgICAgICBpbnQgaSA9IG1IaXN0b3J5LnNpemUoKTsKKyAgICAgICAgd2hpbGUgKGkgPiAwKSB7CisgICAgICAgICAgICBpLS07CisgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCBjYW5kaWRhdGUgPSAoQWN0aXZpdHlSZWNvcmQpbUhpc3RvcnkuZ2V0KGkpOworICAgICAgICAgICAgaWYgKGNhbmRpZGF0ZS50YXNrLnRhc2tJZCAhPSB0YXNrKSB7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoY2FuZGlkYXRlLnJlYWxBY3Rpdml0eS5lcXVhbHMoci5yZWFsQWN0aXZpdHkpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmVvcmRlciB0aGUgaGlzdG9yeSBzdGFjayBzbyB0aGF0IHRoZSBhY3Rpdml0eSBhdCB0aGUgZ2l2ZW4gaW5kZXggaXMKKyAgICAgKiBicm91Z2h0IHRvIHRoZSBmcm9udC4KKyAgICAgKi8KKyAgICBwcml2YXRlIGZpbmFsIEFjdGl2aXR5UmVjb3JkIG1vdmVBY3Rpdml0eVRvRnJvbnRMb2NrZWQoaW50IHdoZXJlKSB7CisgICAgICAgIEFjdGl2aXR5UmVjb3JkIG5ld1RvcCA9IChBY3Rpdml0eVJlY29yZCltSGlzdG9yeS5yZW1vdmUod2hlcmUpOworICAgICAgICBpbnQgdG9wID0gbUhpc3Rvcnkuc2l6ZSgpOworICAgICAgICBBY3Rpdml0eVJlY29yZCBvbGRUb3AgPSAoQWN0aXZpdHlSZWNvcmQpbUhpc3RvcnkuZ2V0KHRvcC0xKTsKKyAgICAgICAgbUhpc3RvcnkuYWRkKHRvcCwgbmV3VG9wKTsKKyAgICAgICAgb2xkVG9wLmZyb250T2ZUYXNrID0gZmFsc2U7CisgICAgICAgIG5ld1RvcC5mcm9udE9mVGFzayA9IHRydWU7CisgICAgICAgIHJldHVybiBuZXdUb3A7CisgICAgfQorCisgICAgZmluYWwgaW50IHN0YXJ0QWN0aXZpdHlMb2NrZWQoSUFwcGxpY2F0aW9uVGhyZWFkIGNhbGxlciwKKyAgICAgICAgICAgIEludGVudCBpbnRlbnQsIFN0cmluZyByZXNvbHZlZFR5cGUsCisgICAgICAgICAgICBVcmlbXSBncmFudGVkVXJpUGVybWlzc2lvbnMsCisgICAgICAgICAgICBpbnQgZ3JhbnRlZE1vZGUsIEFjdGl2aXR5SW5mbyBhSW5mbywgSUJpbmRlciByZXN1bHRUbywKKyAgICAgICAgICAgIFN0cmluZyByZXN1bHRXaG8sIGludCByZXF1ZXN0Q29kZSwKKyAgICAgICAgICAgIGludCBjYWxsaW5nUGlkLCBpbnQgY2FsbGluZ1VpZCwgYm9vbGVhbiBvbmx5SWZOZWVkZWQsCisgICAgICAgICAgICBib29sZWFuIGNvbXBvbmVudFNwZWNpZmllZCkgeworICAgICAgICBTbG9nLmkoVEFHLCAiU3RhcnRpbmcgYWN0aXZpdHk6ICIgKyBpbnRlbnQpOworCisgICAgICAgIEFjdGl2aXR5UmVjb3JkIHNvdXJjZVJlY29yZCA9IG51bGw7CisgICAgICAgIEFjdGl2aXR5UmVjb3JkIHJlc3VsdFJlY29yZCA9IG51bGw7CisgICAgICAgIGlmIChyZXN1bHRUbyAhPSBudWxsKSB7CisgICAgICAgICAgICBpbnQgaW5kZXggPSBpbmRleE9mVG9rZW5Mb2NrZWQocmVzdWx0VG8pOworICAgICAgICAgICAgaWYgKERFQlVHX1JFU1VMVFMpIFNsb2cudigKKyAgICAgICAgICAgICAgICBUQUcsICJTZW5kaW5nIHJlc3VsdCB0byAiICsgcmVzdWx0VG8gKyAiIChpbmRleCAiICsgaW5kZXggKyAiKSIpOworICAgICAgICAgICAgaWYgKGluZGV4ID49IDApIHsKKyAgICAgICAgICAgICAgICBzb3VyY2VSZWNvcmQgPSAoQWN0aXZpdHlSZWNvcmQpbUhpc3RvcnkuZ2V0KGluZGV4KTsKKyAgICAgICAgICAgICAgICBpZiAocmVxdWVzdENvZGUgPj0gMCAmJiAhc291cmNlUmVjb3JkLmZpbmlzaGluZykgeworICAgICAgICAgICAgICAgICAgICByZXN1bHRSZWNvcmQgPSBzb3VyY2VSZWNvcmQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaW50IGxhdW5jaEZsYWdzID0gaW50ZW50LmdldEZsYWdzKCk7CisKKyAgICAgICAgaWYgKChsYXVuY2hGbGFncyZJbnRlbnQuRkxBR19BQ1RJVklUWV9GT1JXQVJEX1JFU1VMVCkgIT0gMAorICAgICAgICAgICAgICAgICYmIHNvdXJjZVJlY29yZCAhPSBudWxsKSB7CisgICAgICAgICAgICAvLyBUcmFuc2ZlciB0aGUgcmVzdWx0IHRhcmdldCBmcm9tIHRoZSBzb3VyY2UgYWN0aXZpdHkgdG8gdGhlIG5ldworICAgICAgICAgICAgLy8gb25lIGJlaW5nIHN0YXJ0ZWQsIGluY2x1ZGluZyBhbnkgZmFpbHVyZXMuCisgICAgICAgICAgICBpZiAocmVxdWVzdENvZGUgPj0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBTVEFSVF9GT1JXQVJEX0FORF9SRVFVRVNUX0NPTkZMSUNUOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVzdWx0UmVjb3JkID0gc291cmNlUmVjb3JkLnJlc3VsdFRvOworICAgICAgICAgICAgcmVzdWx0V2hvID0gc291cmNlUmVjb3JkLnJlc3VsdFdobzsKKyAgICAgICAgICAgIHJlcXVlc3RDb2RlID0gc291cmNlUmVjb3JkLnJlcXVlc3RDb2RlOworICAgICAgICAgICAgc291cmNlUmVjb3JkLnJlc3VsdFRvID0gbnVsbDsKKyAgICAgICAgICAgIGlmIChyZXN1bHRSZWNvcmQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHJlc3VsdFJlY29yZC5yZW1vdmVSZXN1bHRzTG9ja2VkKAorICAgICAgICAgICAgICAgICAgICBzb3VyY2VSZWNvcmQsIHJlc3VsdFdobywgcmVxdWVzdENvZGUpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaW50IGVyciA9IFNUQVJUX1NVQ0NFU1M7CisKKyAgICAgICAgaWYgKGludGVudC5nZXRDb21wb25lbnQoKSA9PSBudWxsKSB7CisgICAgICAgICAgICAvLyBXZSBjb3VsZG4ndCBmaW5kIGEgY2xhc3MgdGhhdCBjYW4gaGFuZGxlIHRoZSBnaXZlbiBJbnRlbnQuCisgICAgICAgICAgICAvLyBUaGF0J3MgdGhlIGVuZCBvZiB0aGF0IQorICAgICAgICAgICAgZXJyID0gU1RBUlRfSU5URU5UX05PVF9SRVNPTFZFRDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChlcnIgPT0gU1RBUlRfU1VDQ0VTUyAmJiBhSW5mbyA9PSBudWxsKSB7CisgICAgICAgICAgICAvLyBXZSBjb3VsZG4ndCBmaW5kIHRoZSBzcGVjaWZpYyBjbGFzcyBzcGVjaWZpZWQgaW4gdGhlIEludGVudC4KKyAgICAgICAgICAgIC8vIEFsc28gdGhlIGVuZCBvZiB0aGUgbGluZS4KKyAgICAgICAgICAgIGVyciA9IFNUQVJUX0NMQVNTX05PVF9GT1VORDsKKyAgICAgICAgfQorCisgICAgICAgIFByb2Nlc3NSZWNvcmQgY2FsbGVyQXBwID0gbnVsbDsKKyAgICAgICAgaWYgKGVyciA9PSBTVEFSVF9TVUNDRVNTICYmIGNhbGxlciAhPSBudWxsKSB7CisgICAgICAgICAgICBjYWxsZXJBcHAgPSBtU2VydmljZS5nZXRSZWNvcmRGb3JBcHBMb2NrZWQoY2FsbGVyKTsKKyAgICAgICAgICAgIGlmIChjYWxsZXJBcHAgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGNhbGxpbmdQaWQgPSBjYWxsZXJBcHAucGlkOworICAgICAgICAgICAgICAgIGNhbGxpbmdVaWQgPSBjYWxsZXJBcHAuaW5mby51aWQ7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsICJVbmFibGUgdG8gZmluZCBhcHAgZm9yIGNhbGxlciAiICsgY2FsbGVyCisgICAgICAgICAgICAgICAgICAgICAgKyAiIChwaWQ9IiArIGNhbGxpbmdQaWQgKyAiKSB3aGVuIHN0YXJ0aW5nOiAiCisgICAgICAgICAgICAgICAgICAgICAgKyBpbnRlbnQudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAgICAgZXJyID0gU1RBUlRfUEVSTUlTU0lPTl9ERU5JRUQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoZXJyICE9IFNUQVJUX1NVQ0NFU1MpIHsKKyAgICAgICAgICAgIGlmIChyZXN1bHRSZWNvcmQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHNlbmRBY3Rpdml0eVJlc3VsdExvY2tlZCgtMSwKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0UmVjb3JkLCByZXN1bHRXaG8sIHJlcXVlc3RDb2RlLAorICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eS5SRVNVTFRfQ0FOQ0VMRUQsIG51bGwpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGVycjsKKyAgICAgICAgfQorCisgICAgICAgIGZpbmFsIGludCBwZXJtID0gbVNlcnZpY2UuY2hlY2tDb21wb25lbnRQZXJtaXNzaW9uKGFJbmZvLnBlcm1pc3Npb24sIGNhbGxpbmdQaWQsCisgICAgICAgICAgICAgICAgY2FsbGluZ1VpZCwgYUluZm8uZXhwb3J0ZWQgPyAtMSA6IGFJbmZvLmFwcGxpY2F0aW9uSW5mby51aWQpOworICAgICAgICBpZiAocGVybSAhPSBQYWNrYWdlTWFuYWdlci5QRVJNSVNTSU9OX0dSQU5URUQpIHsKKyAgICAgICAgICAgIGlmIChyZXN1bHRSZWNvcmQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHNlbmRBY3Rpdml0eVJlc3VsdExvY2tlZCgtMSwKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0UmVjb3JkLCByZXN1bHRXaG8sIHJlcXVlc3RDb2RlLAorICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eS5SRVNVTFRfQ0FOQ0VMRUQsIG51bGwpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgU3RyaW5nIG1zZyA9ICJQZXJtaXNzaW9uIERlbmlhbDogc3RhcnRpbmcgIiArIGludGVudC50b1N0cmluZygpCisgICAgICAgICAgICAgICAgICAgICsgIiBmcm9tICIgKyBjYWxsZXJBcHAgKyAiIChwaWQ9IiArIGNhbGxpbmdQaWQKKyAgICAgICAgICAgICAgICAgICAgKyAiLCB1aWQ9IiArIGNhbGxpbmdVaWQgKyAiKSIKKyAgICAgICAgICAgICAgICAgICAgKyAiIHJlcXVpcmVzICIgKyBhSW5mby5wZXJtaXNzaW9uOworICAgICAgICAgICAgU2xvZy53KFRBRywgbXNnKTsKKyAgICAgICAgICAgIHRocm93IG5ldyBTZWN1cml0eUV4Y2VwdGlvbihtc2cpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1NYWluU3RhY2spIHsKKyAgICAgICAgICAgIGlmIChtU2VydmljZS5tQ29udHJvbGxlciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgYm9vbGVhbiBhYm9ydCA9IGZhbHNlOworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBJbnRlbnQgd2UgZ2l2ZSB0byB0aGUgd2F0Y2hlciBoYXMgdGhlIGV4dHJhIGRhdGEKKyAgICAgICAgICAgICAgICAgICAgLy8gc3RyaXBwZWQgb2ZmLCBzaW5jZSBpdCBjYW4gY29udGFpbiBwcml2YXRlIGluZm9ybWF0aW9uLgorICAgICAgICAgICAgICAgICAgICBJbnRlbnQgd2F0Y2hJbnRlbnQgPSBpbnRlbnQuY2xvbmVGaWx0ZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgYWJvcnQgPSAhbVNlcnZpY2UubUNvbnRyb2xsZXIuYWN0aXZpdHlTdGFydGluZyh3YXRjaEludGVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhSW5mby5hcHBsaWNhdGlvbkluZm8ucGFja2FnZU5hbWUpOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgIG1TZXJ2aWNlLm1Db250cm9sbGVyID0gbnVsbDsKKyAgICAgICAgICAgICAgICB9CisgICAgCisgICAgICAgICAgICAgICAgaWYgKGFib3J0KSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHRSZWNvcmQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgc2VuZEFjdGl2aXR5UmVzdWx0TG9ja2VkKC0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdFJlY29yZCwgcmVzdWx0V2hvLCByZXF1ZXN0Q29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eS5SRVNVTFRfQ0FOQ0VMRUQsIG51bGwpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIC8vIFdlIHByZXRlbmQgdG8gdGhlIGNhbGxlciB0aGF0IGl0IHdhcyByZWFsbHkgc3RhcnRlZCwgYnV0CisgICAgICAgICAgICAgICAgICAgIC8vIHRoZXkgd2lsbCBqdXN0IGdldCBhIGNhbmNlbCByZXN1bHQuCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTVEFSVF9TVUNDRVNTOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IG5ldyBBY3Rpdml0eVJlY29yZChtU2VydmljZSwgdGhpcywgY2FsbGVyQXBwLCBjYWxsaW5nVWlkLAorICAgICAgICAgICAgICAgIGludGVudCwgcmVzb2x2ZWRUeXBlLCBhSW5mbywgbVNlcnZpY2UubUNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICAgICAgcmVzdWx0UmVjb3JkLCByZXN1bHRXaG8sIHJlcXVlc3RDb2RlLCBjb21wb25lbnRTcGVjaWZpZWQpOworCisgICAgICAgIGlmIChtTWFpblN0YWNrKSB7CisgICAgICAgICAgICBpZiAobVJlc3VtZWRBY3Rpdml0eSA9PSBudWxsCisgICAgICAgICAgICAgICAgICAgIHx8IG1SZXN1bWVkQWN0aXZpdHkuaW5mby5hcHBsaWNhdGlvbkluZm8udWlkICE9IGNhbGxpbmdVaWQpIHsKKyAgICAgICAgICAgICAgICBpZiAoIW1TZXJ2aWNlLmNoZWNrQXBwU3dpdGNoQWxsb3dlZExvY2tlZChjYWxsaW5nUGlkLCBjYWxsaW5nVWlkLCAiQWN0aXZpdHkgc3RhcnQiKSkgeworICAgICAgICAgICAgICAgICAgICBQZW5kaW5nQWN0aXZpdHlMYXVuY2ggcGFsID0gbmV3IFBlbmRpbmdBY3Rpdml0eUxhdW5jaCgpOworICAgICAgICAgICAgICAgICAgICBwYWwuciA9IHI7CisgICAgICAgICAgICAgICAgICAgIHBhbC5zb3VyY2VSZWNvcmQgPSBzb3VyY2VSZWNvcmQ7CisgICAgICAgICAgICAgICAgICAgIHBhbC5ncmFudGVkVXJpUGVybWlzc2lvbnMgPSBncmFudGVkVXJpUGVybWlzc2lvbnM7CisgICAgICAgICAgICAgICAgICAgIHBhbC5ncmFudGVkTW9kZSA9IGdyYW50ZWRNb2RlOworICAgICAgICAgICAgICAgICAgICBwYWwub25seUlmTmVlZGVkID0gb25seUlmTmVlZGVkOworICAgICAgICAgICAgICAgICAgICBtU2VydmljZS5tUGVuZGluZ0FjdGl2aXR5TGF1bmNoZXMuYWRkKHBhbCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTVEFSVF9TV0lUQ0hFU19DQU5DRUxFRDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIAorICAgICAgICAgICAgaWYgKG1TZXJ2aWNlLm1EaWRBcHBTd2l0Y2gpIHsKKyAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBzZWNvbmQgYWxsb3dlZCBzd2l0Y2ggc2luY2Ugd2Ugc3RvcHBlZCBzd2l0Y2hlcywKKyAgICAgICAgICAgICAgICAvLyBzbyBub3cganVzdCBnZW5lcmFsbHkgYWxsb3cgc3dpdGNoZXMuICBVc2UgY2FzZTogdXNlciBwcmVzc2VzCisgICAgICAgICAgICAgICAgLy8gaG9tZSAoc3dpdGNoZXMgZGlzYWJsZWQsIHN3aXRjaCB0byBob21lLCBtRGlkQXBwU3dpdGNoIG5vdyB0cnVlKTsKKyAgICAgICAgICAgICAgICAvLyB1c2VyIHRhcHMgYSBob21lIGljb24gKGNvbWluZyBmcm9tIGhvbWUgc28gYWxsb3dlZCwgd2UgaGl0IGhlcmUKKyAgICAgICAgICAgICAgICAvLyBhbmQgbm93IGFsbG93IGFueW9uZSB0byBzd2l0Y2ggYWdhaW4pLgorICAgICAgICAgICAgICAgIG1TZXJ2aWNlLm1BcHBTd2l0Y2hlc0FsbG93ZWRUaW1lID0gMDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbVNlcnZpY2UubURpZEFwcFN3aXRjaCA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAKKyAgICAgICAgICAgIG1TZXJ2aWNlLmRvUGVuZGluZ0FjdGl2aXR5TGF1bmNoZXNMb2NrZWQoZmFsc2UpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gc3RhcnRBY3Rpdml0eVVuY2hlY2tlZExvY2tlZChyLCBzb3VyY2VSZWNvcmQsCisgICAgICAgICAgICAgICAgZ3JhbnRlZFVyaVBlcm1pc3Npb25zLCBncmFudGVkTW9kZSwgb25seUlmTmVlZGVkLCB0cnVlKTsKKyAgICB9CisgIAorICAgIGZpbmFsIGludCBzdGFydEFjdGl2aXR5VW5jaGVja2VkTG9ja2VkKEFjdGl2aXR5UmVjb3JkIHIsCisgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCBzb3VyY2VSZWNvcmQsIFVyaVtdIGdyYW50ZWRVcmlQZXJtaXNzaW9ucywKKyAgICAgICAgICAgIGludCBncmFudGVkTW9kZSwgYm9vbGVhbiBvbmx5SWZOZWVkZWQsIGJvb2xlYW4gZG9SZXN1bWUpIHsKKyAgICAgICAgZmluYWwgSW50ZW50IGludGVudCA9IHIuaW50ZW50OworICAgICAgICBmaW5hbCBpbnQgY2FsbGluZ1VpZCA9IHIubGF1bmNoZWRGcm9tVWlkOworICAgICAgICAKKyAgICAgICAgaW50IGxhdW5jaEZsYWdzID0gaW50ZW50LmdldEZsYWdzKCk7CisgICAgICAgIAorICAgICAgICAvLyBXZSdsbCBpbnZva2Ugb25Vc2VyTGVhdmluZyBiZWZvcmUgb25QYXVzZSBvbmx5IGlmIHRoZSBsYXVuY2hpbmcKKyAgICAgICAgLy8gYWN0aXZpdHkgZGlkIG5vdCBleHBsaWNpdGx5IHN0YXRlIHRoYXQgdGhpcyBpcyBhbiBhdXRvbWF0ZWQgbGF1bmNoLgorICAgICAgICBtVXNlckxlYXZpbmcgPSAobGF1bmNoRmxhZ3MmSW50ZW50LkZMQUdfQUNUSVZJVFlfTk9fVVNFUl9BQ1RJT04pID09IDA7CisgICAgICAgIGlmIChERUJVR19VU0VSX0xFQVZJTkcpIFNsb2cudihUQUcsCisgICAgICAgICAgICAgICAgInN0YXJ0QWN0aXZpdHkoKSA9PiBtVXNlckxlYXZpbmc9IiArIG1Vc2VyTGVhdmluZyk7CisgICAgICAgIAorICAgICAgICAvLyBJZiB0aGUgY2FsbGVyIGhhcyBhc2tlZCBub3QgdG8gcmVzdW1lIGF0IHRoaXMgcG9pbnQsIHdlIG1ha2Ugbm90ZQorICAgICAgICAvLyBvZiB0aGlzIGluIHRoZSByZWNvcmQgc28gdGhhdCB3ZSBjYW4gc2tpcCBpdCB3aGVuIHRyeWluZyB0byBmaW5kCisgICAgICAgIC8vIHRoZSB0b3AgcnVubmluZyBhY3Rpdml0eS4KKyAgICAgICAgaWYgKCFkb1Jlc3VtZSkgeworICAgICAgICAgICAgci5kZWxheWVkUmVzdW1lID0gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgQWN0aXZpdHlSZWNvcmQgbm90VG9wID0gKGxhdW5jaEZsYWdzJkludGVudC5GTEFHX0FDVElWSVRZX1BSRVZJT1VTX0lTX1RPUCkKKyAgICAgICAgICAgICAgICAhPSAwID8gciA6IG51bGw7CisKKyAgICAgICAgLy8gSWYgdGhlIG9ubHlJZk5lZWRlZCBmbGFnIGlzIHNldCwgdGhlbiB3ZSBjYW4gZG8gdGhpcyBpZiB0aGUgYWN0aXZpdHkKKyAgICAgICAgLy8gYmVpbmcgbGF1bmNoZWQgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZSBtYWtpbmcgdGhlIGNhbGwuLi4gIG9yLCBhcworICAgICAgICAvLyBhIHNwZWNpYWwgY2FzZSwgaWYgd2UgZG8gbm90IGtub3cgdGhlIGNhbGxlciB0aGVuIHdlIGNvdW50IHRoZQorICAgICAgICAvLyBjdXJyZW50IHRvcCBhY3Rpdml0eSBhcyB0aGUgY2FsbGVyLgorICAgICAgICBpZiAob25seUlmTmVlZGVkKSB7CisgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCBjaGVja2VkQ2FsbGVyID0gc291cmNlUmVjb3JkOworICAgICAgICAgICAgaWYgKGNoZWNrZWRDYWxsZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGNoZWNrZWRDYWxsZXIgPSB0b3BSdW5uaW5nTm9uRGVsYXllZEFjdGl2aXR5TG9ja2VkKG5vdFRvcCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIWNoZWNrZWRDYWxsZXIucmVhbEFjdGl2aXR5LmVxdWFscyhyLnJlYWxBY3Rpdml0eSkpIHsKKyAgICAgICAgICAgICAgICAvLyBDYWxsZXIgaXMgbm90IHRoZSBzYW1lIGFzIGxhdW5jaGVyLCBzbyBhbHdheXMgbmVlZGVkLgorICAgICAgICAgICAgICAgIG9ubHlJZk5lZWRlZCA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKGdyYW50ZWRVcmlQZXJtaXNzaW9ucyAhPSBudWxsICYmIGNhbGxpbmdVaWQgPiAwKSB7CisgICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8Z3JhbnRlZFVyaVBlcm1pc3Npb25zLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgbVNlcnZpY2UuZ3JhbnRVcmlQZXJtaXNzaW9uTG9ja2VkKGNhbGxpbmdVaWQsIHIucGFja2FnZU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICBncmFudGVkVXJpUGVybWlzc2lvbnNbaV0sIGdyYW50ZWRNb2RlLCByKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIG1TZXJ2aWNlLmdyYW50VXJpUGVybWlzc2lvbkZyb21JbnRlbnRMb2NrZWQoY2FsbGluZ1VpZCwgci5wYWNrYWdlTmFtZSwKKyAgICAgICAgICAgICAgICBpbnRlbnQsIHIpOworCisgICAgICAgIGlmIChzb3VyY2VSZWNvcmQgPT0gbnVsbCkgeworICAgICAgICAgICAgLy8gVGhpcyBhY3Rpdml0eSBpcyBub3QgYmVpbmcgc3RhcnRlZCBmcm9tIGFub3RoZXIuLi4gIGluIHRoaXMKKyAgICAgICAgICAgIC8vIGNhc2Ugd2UgLWFsd2F5cy0gc3RhcnQgYSBuZXcgdGFzay4KKyAgICAgICAgICAgIGlmICgobGF1bmNoRmxhZ3MmSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX1RBU0spID09IDApIHsKKyAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAic3RhcnRBY3Rpdml0eSBjYWxsZWQgZnJvbSBub24tQWN0aXZpdHkgY29udGV4dDsgZm9yY2luZyBJbnRlbnQuRkxBR19BQ1RJVklUWV9ORVdfVEFTSyBmb3I6ICIKKyAgICAgICAgICAgICAgICAgICAgICArIGludGVudCk7CisgICAgICAgICAgICAgICAgbGF1bmNoRmxhZ3MgfD0gSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX1RBU0s7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoc291cmNlUmVjb3JkLmxhdW5jaE1vZGUgPT0gQWN0aXZpdHlJbmZvLkxBVU5DSF9TSU5HTEVfSU5TVEFOQ0UpIHsKKyAgICAgICAgICAgIC8vIFRoZSBvcmlnaW5hbCBhY3Rpdml0eSB3aG8gaXMgc3RhcnRpbmcgdXMgaXMgcnVubmluZyBhcyBhIHNpbmdsZQorICAgICAgICAgICAgLy8gaW5zdGFuY2UuLi4gIHRoaXMgbmV3IGFjdGl2aXR5IGl0IGlzIHN0YXJ0aW5nIG11c3QgZ28gb24gaXRzCisgICAgICAgICAgICAvLyBvd24gdGFzay4KKyAgICAgICAgICAgIGxhdW5jaEZsYWdzIHw9IEludGVudC5GTEFHX0FDVElWSVRZX05FV19UQVNLOworICAgICAgICB9IGVsc2UgaWYgKHIubGF1bmNoTW9kZSA9PSBBY3Rpdml0eUluZm8uTEFVTkNIX1NJTkdMRV9JTlNUQU5DRQorICAgICAgICAgICAgICAgIHx8IHIubGF1bmNoTW9kZSA9PSBBY3Rpdml0eUluZm8uTEFVTkNIX1NJTkdMRV9UQVNLKSB7CisgICAgICAgICAgICAvLyBUaGUgYWN0aXZpdHkgYmVpbmcgc3RhcnRlZCBpcyBhIHNpbmdsZSBpbnN0YW5jZS4uLiAgaXQgYWx3YXlzCisgICAgICAgICAgICAvLyBnZXRzIGxhdW5jaGVkIGludG8gaXRzIG93biB0YXNrLgorICAgICAgICAgICAgbGF1bmNoRmxhZ3MgfD0gSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX1RBU0s7CisgICAgICAgIH0KKworICAgICAgICBpZiAoci5yZXN1bHRUbyAhPSBudWxsICYmIChsYXVuY2hGbGFncyZJbnRlbnQuRkxBR19BQ1RJVklUWV9ORVdfVEFTSykgIT0gMCkgeworICAgICAgICAgICAgLy8gRm9yIHdoYXRldmVyIHJlYXNvbiB0aGlzIGFjdGl2aXR5IGlzIGJlaW5nIGxhdW5jaGVkIGludG8gYSBuZXcKKyAgICAgICAgICAgIC8vIHRhc2suLi4gIHlldCB0aGUgY2FsbGVyIGhhcyByZXF1ZXN0ZWQgYSByZXN1bHQgYmFjay4gIFdlbGwsIHRoYXQKKyAgICAgICAgICAgIC8vIGlzIHByZXR0eSBtZXNzZWQgdXAsIHNvIGluc3RlYWQgaW1tZWRpYXRlbHkgc2VuZCBiYWNrIGEgY2FuY2VsCisgICAgICAgICAgICAvLyBhbmQgbGV0IHRoZSBuZXcgdGFzayBjb250aW51ZSBsYXVuY2hlZCBhcyBub3JtYWwgd2l0aG91dCBhCisgICAgICAgICAgICAvLyBkZXBlbmRlbmN5IG9uIGl0cyBvcmlnaW5hdG9yLgorICAgICAgICAgICAgU2xvZy53KFRBRywgIkFjdGl2aXR5IGlzIGxhdW5jaGluZyBhcyBhIG5ldyB0YXNrLCBzbyBjYW5jZWxsaW5nIGFjdGl2aXR5IHJlc3VsdC4iKTsKKyAgICAgICAgICAgIHNlbmRBY3Rpdml0eVJlc3VsdExvY2tlZCgtMSwKKyAgICAgICAgICAgICAgICAgICAgci5yZXN1bHRUbywgci5yZXN1bHRXaG8sIHIucmVxdWVzdENvZGUsCisgICAgICAgICAgICAgICAgQWN0aXZpdHkuUkVTVUxUX0NBTkNFTEVELCBudWxsKTsKKyAgICAgICAgICAgIHIucmVzdWx0VG8gPSBudWxsOworICAgICAgICB9CisKKyAgICAgICAgYm9vbGVhbiBhZGRpbmdUb1Rhc2sgPSBmYWxzZTsKKyAgICAgICAgaWYgKCgobGF1bmNoRmxhZ3MmSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX1RBU0spICE9IDAgJiYKKyAgICAgICAgICAgICAgICAobGF1bmNoRmxhZ3MmSW50ZW50LkZMQUdfQUNUSVZJVFlfTVVMVElQTEVfVEFTSykgPT0gMCkKKyAgICAgICAgICAgICAgICB8fCByLmxhdW5jaE1vZGUgPT0gQWN0aXZpdHlJbmZvLkxBVU5DSF9TSU5HTEVfVEFTSworICAgICAgICAgICAgICAgIHx8IHIubGF1bmNoTW9kZSA9PSBBY3Rpdml0eUluZm8uTEFVTkNIX1NJTkdMRV9JTlNUQU5DRSkgeworICAgICAgICAgICAgLy8gSWYgYnJpbmcgdG8gZnJvbnQgaXMgcmVxdWVzdGVkLCBhbmQgbm8gcmVzdWx0IGlzIHJlcXVlc3RlZCwgYW5kCisgICAgICAgICAgICAvLyB3ZSBjYW4gZmluZCBhIHRhc2sgdGhhdCB3YXMgc3RhcnRlZCB3aXRoIHRoaXMgc2FtZQorICAgICAgICAgICAgLy8gY29tcG9uZW50LCB0aGVuIGluc3RlYWQgb2YgbGF1bmNoaW5nIGJyaW5nIHRoYXQgb25lIHRvIHRoZSBmcm9udC4KKyAgICAgICAgICAgIGlmIChyLnJlc3VsdFRvID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAvLyBTZWUgaWYgdGhlcmUgaXMgYSB0YXNrIHRvIGJyaW5nIHRvIHRoZSBmcm9udC4gIElmIHRoaXMgaXMKKyAgICAgICAgICAgICAgICAvLyBhIFNJTkdMRV9JTlNUQU5DRSBhY3Rpdml0eSwgdGhlcmUgY2FuIGJlIG9uZSBhbmQgb25seSBvbmUKKyAgICAgICAgICAgICAgICAvLyBpbnN0YW5jZSBvZiBpdCBpbiB0aGUgaGlzdG9yeSwgYW5kIGl0IGlzIGFsd2F5cyBpbiBpdHMgb3duCisgICAgICAgICAgICAgICAgLy8gdW5pcXVlIHRhc2ssIHNvIHdlIGRvIGEgc3BlY2lhbCBzZWFyY2guCisgICAgICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgdGFza1RvcCA9IHIubGF1bmNoTW9kZSAhPSBBY3Rpdml0eUluZm8uTEFVTkNIX1NJTkdMRV9JTlNUQU5DRQorICAgICAgICAgICAgICAgICAgICAgICAgPyBmaW5kVGFza0xvY2tlZChpbnRlbnQsIHIuaW5mbykKKyAgICAgICAgICAgICAgICAgICAgICAgIDogZmluZEFjdGl2aXR5TG9ja2VkKGludGVudCwgci5pbmZvKTsKKyAgICAgICAgICAgICAgICBpZiAodGFza1RvcCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh0YXNrVG9wLnRhc2suaW50ZW50ID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgdGFzayB3YXMgc3RhcnRlZCBiZWNhdXNlIG9mIG1vdmVtZW50IG9mCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgYWN0aXZpdHkgYmFzZWQgb24gYWZmaW5pdHkuLi4gIG5vdyB0aGF0IHdlCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBhcmUgYWN0dWFsbHkgbGF1bmNoaW5nIGl0LCB3ZSBjYW4gYXNzaWduIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmFzZSBpbnRlbnQuCisgICAgICAgICAgICAgICAgICAgICAgICB0YXNrVG9wLnRhc2suc2V0SW50ZW50KGludGVudCwgci5pbmZvKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAvLyBJZiB0aGUgdGFyZ2V0IHRhc2sgaXMgbm90IGluIHRoZSBmcm9udCwgdGhlbiB3ZSBuZWVkCisgICAgICAgICAgICAgICAgICAgIC8vIHRvIGJyaW5nIGl0IHRvIHRoZSBmcm9udC4uLiAgZXhjZXB0Li4uICB3ZWxsLCB3aXRoCisgICAgICAgICAgICAgICAgICAgIC8vIFNJTkdMRV9UQVNLX0xBVU5DSCBpdCdzIG5vdCBlbnRpcmVseSBjbGVhci4gIFdlJ2QgbGlrZQorICAgICAgICAgICAgICAgICAgICAvLyB0byBoYXZlIHRoZSBzYW1lIGJlaGF2aW9yIGFzIGlmIGEgbmV3IGluc3RhbmNlIHdhcworICAgICAgICAgICAgICAgICAgICAvLyBiZWluZyBzdGFydGVkLCB3aGljaCBtZWFucyBub3QgYnJpbmdpbmcgaXQgdG8gdGhlIGZyb250CisgICAgICAgICAgICAgICAgICAgIC8vIGlmIHRoZSBjYWxsZXIgaXMgbm90IGl0c2VsZiBpbiB0aGUgZnJvbnQuCisgICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIGN1clRvcCA9IHRvcFJ1bm5pbmdOb25EZWxheWVkQWN0aXZpdHlMb2NrZWQobm90VG9wKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGN1clRvcC50YXNrICE9IHRhc2tUb3AudGFzaykgeworICAgICAgICAgICAgICAgICAgICAgICAgci5pbnRlbnQuYWRkRmxhZ3MoSW50ZW50LkZMQUdfQUNUSVZJVFlfQlJPVUdIVF9UT19GUk9OVCk7CisgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuIGNhbGxlckF0RnJvbnQgPSBzb3VyY2VSZWNvcmQgPT0gbnVsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBjdXJUb3AudGFzayA9PSBzb3VyY2VSZWNvcmQudGFzazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYWxsZXJBdEZyb250KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgcmVhbGx5IGRvIHdhbnQgdG8gcHVzaCB0aGlzIG9uZSBpbnRvIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVzZXIncyBmYWNlLCByaWdodCBub3cuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW92ZVRhc2tUb0Zyb250TG9ja2VkKHRhc2tUb3AudGFzaywgcik7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGNhbGxlciBoYXMgcmVxdWVzdGVkIHRoYXQgdGhlIHRhcmdldCB0YXNrIGJlCisgICAgICAgICAgICAgICAgICAgIC8vIHJlc2V0LCB0aGVuIGRvIHNvLgorICAgICAgICAgICAgICAgICAgICBpZiAoKGxhdW5jaEZsYWdzJkludGVudC5GTEFHX0FDVElWSVRZX1JFU0VUX1RBU0tfSUZfTkVFREVEKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0YXNrVG9wID0gcmVzZXRUYXNrSWZOZWVkZWRMb2NrZWQodGFza1RvcCwgcik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKG9ubHlJZk5lZWRlZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2UgZG9uJ3QgbmVlZCB0byBzdGFydCBhIG5ldyBhY3Rpdml0eSwgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgY2xpZW50IHNhaWQgbm90IHRvIGRvIGFueXRoaW5nIGlmIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGlzIHRoZSBjYXNlLCBzbyB0aGlzIGlzIGl0ISAgQW5kIGZvciBwYXJhbm9pYSwgbWFrZQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3VyZSB3ZSBoYXZlIGNvcnJlY3RseSByZXN1bWVkIHRoZSB0b3AgYWN0aXZpdHkuCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZG9SZXN1bWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bWVUb3BBY3Rpdml0eUxvY2tlZChudWxsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTVEFSVF9SRVRVUk5fSU5URU5UX1RPX0NBTExFUjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoKGxhdW5jaEZsYWdzJkludGVudC5GTEFHX0FDVElWSVRZX0NMRUFSX1RPUCkgIT0gMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHIubGF1bmNoTW9kZSA9PSBBY3Rpdml0eUluZm8uTEFVTkNIX1NJTkdMRV9UQVNLCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgci5sYXVuY2hNb2RlID09IEFjdGl2aXR5SW5mby5MQVVOQ0hfU0lOR0xFX0lOU1RBTkNFKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBJbiB0aGlzIHNpdHVhdGlvbiB3ZSB3YW50IHRvIHJlbW92ZSBhbGwgYWN0aXZpdGllcworICAgICAgICAgICAgICAgICAgICAgICAgLy8gZnJvbSB0aGUgdGFzayB1cCB0byB0aGUgb25lIGJlaW5nIHN0YXJ0ZWQuICBJbiBtb3N0CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBjYXNlcyB0aGlzIG1lYW5zIHdlIGFyZSByZXNldHRpbmcgdGhlIHRhc2sgdG8gaXRzCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbml0aWFsIHN0YXRlLgorICAgICAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgdG9wID0gcGVyZm9ybUNsZWFyVGFza0xvY2tlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFza1RvcC50YXNrLnRhc2tJZCwgciwgbGF1bmNoRmxhZ3MsIHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRvcCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRvcC5mcm9udE9mVGFzaykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBY3Rpdml0eSBhbGlhc2VzIG1heSBtZWFuIHdlIHVzZSBkaWZmZXJlbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZW50cyBmb3IgdGhlIHRvcCBhY3Rpdml0eSwgc28gbWFrZSBzdXJlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoZSB0YXNrIG5vdyBoYXMgdGhlIGlkZW50aXR5IG9mIHRoZSBuZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaW50ZW50LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3AudGFzay5zZXRJbnRlbnQoci5pbnRlbnQsIHIuaW5mbyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ1N0YXJ0QWN0aXZpdHkoRXZlbnRMb2dUYWdzLkFNX05FV19JTlRFTlQsIHIsIHRvcC50YXNrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b3AuZGVsaXZlck5ld0ludGVudExvY2tlZChyLmludGVudCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEEgc3BlY2lhbCBjYXNlOiB3ZSBuZWVkIHRvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3RhcnQgdGhlIGFjdGl2aXR5IGJlY2F1c2UgaXQgaXMgbm90IGN1cnJlbnRseQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHJ1bm5pbmcsIGFuZCB0aGUgY2FsbGVyIGhhcyBhc2tlZCB0byBjbGVhciB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBjdXJyZW50IHRhc2sgdG8gaGF2ZSB0aGlzIGFjdGl2aXR5IGF0IHRoZSB0b3AuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaW5nVG9UYXNrID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3cgcHJldGVuZCBsaWtlIHRoaXMgYWN0aXZpdHkgaXMgYmVpbmcgc3RhcnRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGJ5IHRoZSB0b3Agb2YgaXRzIHRhc2ssIHNvIGl0IGlzIHB1dCBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByaWdodCBwbGFjZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VSZWNvcmQgPSB0YXNrVG9wOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHIucmVhbEFjdGl2aXR5LmVxdWFscyh0YXNrVG9wLnRhc2sucmVhbEFjdGl2aXR5KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW4gdGhpcyBjYXNlIHRoZSB0b3AgYWN0aXZpdHkgb24gdGhlIHRhc2sgaXMgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBzYW1lIGFzIHRoZSBvbmUgYmVpbmcgbGF1bmNoZWQsIHNvIHdlIHRha2UgdGhhdAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXMgYSByZXF1ZXN0IHRvIGJyaW5nIHRoZSB0YXNrIHRvIHRoZSBmb3JlZ3JvdW5kLgorICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgdGhlIHRvcCBhY3Rpdml0eSBpbiB0aGUgdGFzayBpcyB0aGUgcm9vdAorICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWN0aXZpdHksIGRlbGl2ZXIgdGhpcyBuZXcgaW50ZW50IHRvIGl0IGlmIGl0CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBkZXNpcmVzLgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChsYXVuY2hGbGFncyZJbnRlbnQuRkxBR19BQ1RJVklUWV9TSU5HTEVfVE9QKSAhPSAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHRhc2tUb3AucmVhbEFjdGl2aXR5LmVxdWFscyhyLnJlYWxBY3Rpdml0eSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dTdGFydEFjdGl2aXR5KEV2ZW50TG9nVGFncy5BTV9ORVdfSU5URU5ULCByLCB0YXNrVG9wLnRhc2spOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0YXNrVG9wLmZyb250T2ZUYXNrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2tUb3AudGFzay5zZXRJbnRlbnQoci5pbnRlbnQsIHIuaW5mbyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhc2tUb3AuZGVsaXZlck5ld0ludGVudExvY2tlZChyLmludGVudCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFyLmludGVudC5maWx0ZXJFcXVhbHModGFza1RvcC50YXNrLmludGVudCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBJbiB0aGlzIGNhc2Ugd2UgYXJlIGxhdW5jaGluZyB0aGUgcm9vdCBhY3Rpdml0eQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIG9mIHRoZSB0YXNrLCBidXQgd2l0aCBhIGRpZmZlcmVudCBpbnRlbnQuICBXZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHNob3VsZCBzdGFydCBhIG5ldyBpbnN0YW5jZSBvbiB0b3AuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRkaW5nVG9UYXNrID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VSZWNvcmQgPSB0YXNrVG9wOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKChsYXVuY2hGbGFncyZJbnRlbnQuRkxBR19BQ1RJVklUWV9SRVNFVF9UQVNLX0lGX05FRURFRCkgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW4gdGhpcyBjYXNlIGFuIGFjdGl2aXR5IGlzIGJlaW5nIGxhdW5jaGVkIGluIHRvIGFuCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBleGlzdGluZyB0YXNrLCB3aXRob3V0IHJlc2V0dGluZyB0aGF0IHRhc2suICBUaGlzCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBpcyB0eXBpY2FsbHkgdGhlIHNpdHVhdGlvbiBvZiBsYXVuY2hpbmcgYW4gYWN0aXZpdHkKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGZyb20gYSBub3RpZmljYXRpb24gb3Igc2hvcnRjdXQuICBXZSB3YW50IHRvIHBsYWNlCisgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgbmV3IGFjdGl2aXR5IG9uIHRvcCBvZiB0aGUgY3VycmVudCB0YXNrLgorICAgICAgICAgICAgICAgICAgICAgICAgYWRkaW5nVG9UYXNrID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVJlY29yZCA9IHRhc2tUb3A7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXRhc2tUb3AudGFzay5yb290V2FzUmVzZXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSB3ZSBhcmUgbGF1bmNoaW5nIGluIHRvIGFuIGV4aXN0aW5nIHRhc2sKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRoYXQgaGFzIG5vdCB5ZXQgYmVlbiBzdGFydGVkIGZyb20gaXRzIGZyb250IGRvb3IuCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBUaGUgY3VycmVudCB0YXNrIGhhcyBiZWVuIGJyb3VnaHQgdG8gdGhlIGZyb250LgorICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWRlYWxseSwgd2UnZCBwcm9iYWJseSBsaWtlIHRvIHBsYWNlIHRoaXMgbmV3IHRhc2sKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGF0IHRoZSBib3R0b20gb2YgaXRzIHN0YWNrLCBidXQgdGhhdCdzIGEgbGl0dGxlIGhhcmQKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHRvIGRvIHdpdGggdGhlIGN1cnJlbnQgb3JnYW5pemF0aW9uIG9mIHRoZSBjb2RlIHNvCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBmb3Igbm93IHdlJ2xsIGp1c3QgZHJvcCBpdC4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRhc2tUb3AudGFzay5zZXRJbnRlbnQoci5pbnRlbnQsIHIuaW5mbyk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKCFhZGRpbmdUb1Rhc2spIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGRpZG4ndCBkbyBhbnl0aGluZy4uLiAgYnV0IGl0IHdhcyBuZWVkZWQgKGEuay5hLiwgY2xpZW50CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBkb24ndCB1c2UgdGhhdCBpbnRlbnQhKSAgQW5kIGZvciBwYXJhbm9pYSwgbWFrZQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gc3VyZSB3ZSBoYXZlIGNvcnJlY3RseSByZXN1bWVkIHRoZSB0b3AgYWN0aXZpdHkuCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZG9SZXN1bWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bWVUb3BBY3Rpdml0eUxvY2tlZChudWxsKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTVEFSVF9UQVNLX1RPX0ZST05UOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy9TdHJpbmcgdXJpID0gci5pbnRlbnQudG9VUkkoKTsKKyAgICAgICAgLy9JbnRlbnQgaW50ZW50MiA9IG5ldyBJbnRlbnQodXJpKTsKKyAgICAgICAgLy9TbG9nLmkoVEFHLCAiR2l2ZW4gaW50ZW50OiAiICsgci5pbnRlbnQpOworICAgICAgICAvL1Nsb2cuaShUQUcsICJVUkkgaXM6ICIgKyB1cmkpOworICAgICAgICAvL1Nsb2cuaShUQUcsICJUbyBpbnRlbnQ6ICIgKyBpbnRlbnQyKTsKKworICAgICAgICBpZiAoci5wYWNrYWdlTmFtZSAhPSBudWxsKSB7CisgICAgICAgICAgICAvLyBJZiB0aGUgYWN0aXZpdHkgYmVpbmcgbGF1bmNoZWQgaXMgdGhlIHNhbWUgYXMgdGhlIG9uZSBjdXJyZW50bHkKKyAgICAgICAgICAgIC8vIGF0IHRoZSB0b3AsIHRoZW4gd2UgbmVlZCB0byBjaGVjayBpZiBpdCBzaG91bGQgb25seSBiZSBsYXVuY2hlZAorICAgICAgICAgICAgLy8gb25jZS4KKyAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHRvcCA9IHRvcFJ1bm5pbmdOb25EZWxheWVkQWN0aXZpdHlMb2NrZWQobm90VG9wKTsKKyAgICAgICAgICAgIGlmICh0b3AgIT0gbnVsbCAmJiByLnJlc3VsdFRvID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICBpZiAodG9wLnJlYWxBY3Rpdml0eS5lcXVhbHMoci5yZWFsQWN0aXZpdHkpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh0b3AuYXBwICE9IG51bGwgJiYgdG9wLmFwcC50aHJlYWQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChsYXVuY2hGbGFncyZJbnRlbnQuRkxBR19BQ1RJVklUWV9TSU5HTEVfVE9QKSAhPSAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgci5sYXVuY2hNb2RlID09IEFjdGl2aXR5SW5mby5MQVVOQ0hfU0lOR0xFX1RPUAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHIubGF1bmNoTW9kZSA9PSBBY3Rpdml0eUluZm8uTEFVTkNIX1NJTkdMRV9UQVNLKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nU3RhcnRBY3Rpdml0eShFdmVudExvZ1RhZ3MuQU1fTkVXX0lOVEVOVCwgdG9wLCB0b3AudGFzayk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRm9yIHBhcmFub2lhLCBtYWtlIHN1cmUgd2UgaGF2ZSBjb3JyZWN0bHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyByZXN1bWVkIHRoZSB0b3AgYWN0aXZpdHkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRvUmVzdW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VtZVRvcEFjdGl2aXR5TG9ja2VkKG51bGwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob25seUlmTmVlZGVkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gc3RhcnQgYSBuZXcgYWN0aXZpdHksIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGUgY2xpZW50IHNhaWQgbm90IHRvIGRvIGFueXRoaW5nIGlmIHRoYXQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgdGhlIGNhc2UsIHNvIHRoaXMgaXMgaXQhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTVEFSVF9SRVRVUk5fSU5URU5UX1RPX0NBTExFUjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9wLmRlbGl2ZXJOZXdJbnRlbnRMb2NrZWQoci5pbnRlbnQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBTVEFSVF9ERUxJVkVSRURfVE9fVE9QOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoci5yZXN1bHRUbyAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgc2VuZEFjdGl2aXR5UmVzdWx0TG9ja2VkKC0xLAorICAgICAgICAgICAgICAgICAgICAgICAgci5yZXN1bHRUbywgci5yZXN1bHRXaG8sIHIucmVxdWVzdENvZGUsCisgICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5LlJFU1VMVF9DQU5DRUxFRCwgbnVsbCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gU1RBUlRfQ0xBU1NfTk9UX0ZPVU5EOworICAgICAgICB9CisKKyAgICAgICAgYm9vbGVhbiBuZXdUYXNrID0gZmFsc2U7CisKKyAgICAgICAgLy8gU2hvdWxkIHRoaXMgYmUgY29uc2lkZXJlZCBhIG5ldyB0YXNrPworICAgICAgICBpZiAoci5yZXN1bHRUbyA9PSBudWxsICYmICFhZGRpbmdUb1Rhc2sKKyAgICAgICAgICAgICAgICAmJiAobGF1bmNoRmxhZ3MmSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX1RBU0spICE9IDApIHsKKyAgICAgICAgICAgIC8vIHRvZG86IHNob3VsZCBkbyBiZXR0ZXIgbWFuYWdlbWVudCBvZiBpbnRlZ2Vycy4KKyAgICAgICAgICAgIG1TZXJ2aWNlLm1DdXJUYXNrKys7CisgICAgICAgICAgICBpZiAobVNlcnZpY2UubUN1clRhc2sgPD0gMCkgeworICAgICAgICAgICAgICAgIG1TZXJ2aWNlLm1DdXJUYXNrID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHIudGFzayA9IG5ldyBUYXNrUmVjb3JkKG1TZXJ2aWNlLm1DdXJUYXNrLCByLmluZm8sIGludGVudCwKKyAgICAgICAgICAgICAgICAgICAgKHIuaW5mby5mbGFncyZBY3Rpdml0eUluZm8uRkxBR19DTEVBUl9UQVNLX09OX0xBVU5DSCkgIT0gMCk7CisgICAgICAgICAgICBpZiAoREVCVUdfVEFTS1MpIFNsb2cudihUQUcsICJTdGFydGluZyBuZXcgYWN0aXZpdHkgIiArIHIKKyAgICAgICAgICAgICAgICAgICAgKyAiIGluIG5ldyB0YXNrICIgKyByLnRhc2spOworICAgICAgICAgICAgbmV3VGFzayA9IHRydWU7CisgICAgICAgICAgICBpZiAobU1haW5TdGFjaykgeworICAgICAgICAgICAgICAgIG1TZXJ2aWNlLmFkZFJlY2VudFRhc2tMb2NrZWQoci50YXNrKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICB9IGVsc2UgaWYgKHNvdXJjZVJlY29yZCAhPSBudWxsKSB7CisgICAgICAgICAgICBpZiAoIWFkZGluZ1RvVGFzayAmJgorICAgICAgICAgICAgICAgICAgICAobGF1bmNoRmxhZ3MmSW50ZW50LkZMQUdfQUNUSVZJVFlfQ0xFQVJfVE9QKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgLy8gSW4gdGhpcyBjYXNlLCB3ZSBhcmUgYWRkaW5nIHRoZSBhY3Rpdml0eSB0byBhbiBleGlzdGluZworICAgICAgICAgICAgICAgIC8vIHRhc2ssIGJ1dCB0aGUgY2FsbGVyIGhhcyBhc2tlZCB0byBjbGVhciB0aGF0IHRhc2sgaWYgdGhlCisgICAgICAgICAgICAgICAgLy8gYWN0aXZpdHkgaXMgYWxyZWFkeSBydW5uaW5nLgorICAgICAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHRvcCA9IHBlcmZvcm1DbGVhclRhc2tMb2NrZWQoCisgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VSZWNvcmQudGFzay50YXNrSWQsIHIsIGxhdW5jaEZsYWdzLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBpZiAodG9wICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgbG9nU3RhcnRBY3Rpdml0eShFdmVudExvZ1RhZ3MuQU1fTkVXX0lOVEVOVCwgciwgdG9wLnRhc2spOworICAgICAgICAgICAgICAgICAgICB0b3AuZGVsaXZlck5ld0ludGVudExvY2tlZChyLmludGVudCk7CisgICAgICAgICAgICAgICAgICAgIC8vIEZvciBwYXJhbm9pYSwgbWFrZSBzdXJlIHdlIGhhdmUgY29ycmVjdGx5CisgICAgICAgICAgICAgICAgICAgIC8vIHJlc3VtZWQgdGhlIHRvcCBhY3Rpdml0eS4KKyAgICAgICAgICAgICAgICAgICAgaWYgKGRvUmVzdW1lKSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bWVUb3BBY3Rpdml0eUxvY2tlZChudWxsKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gU1RBUlRfREVMSVZFUkVEX1RPX1RPUDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKCFhZGRpbmdUb1Rhc2sgJiYKKyAgICAgICAgICAgICAgICAgICAgKGxhdW5jaEZsYWdzJkludGVudC5GTEFHX0FDVElWSVRZX1JFT1JERVJfVE9fRlJPTlQpICE9IDApIHsKKyAgICAgICAgICAgICAgICAvLyBJbiB0aGlzIGNhc2UsIHdlIGFyZSBsYXVuY2hpbmcgYW4gYWN0aXZpdHkgaW4gb3VyIG93biB0YXNrCisgICAgICAgICAgICAgICAgLy8gdGhhdCBtYXkgYWxyZWFkeSBiZSBydW5uaW5nIHNvbWV3aGVyZSBpbiB0aGUgaGlzdG9yeSwgYW5kCisgICAgICAgICAgICAgICAgLy8gd2Ugd2FudCB0byBzaHVmZmxlIGl0IHRvIHRoZSBmcm9udCBvZiB0aGUgc3RhY2sgaWYgc28uCisgICAgICAgICAgICAgICAgaW50IHdoZXJlID0gZmluZEFjdGl2aXR5SW5IaXN0b3J5TG9ja2VkKHIsIHNvdXJjZVJlY29yZC50YXNrLnRhc2tJZCk7CisgICAgICAgICAgICAgICAgaWYgKHdoZXJlID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgdG9wID0gbW92ZUFjdGl2aXR5VG9Gcm9udExvY2tlZCh3aGVyZSk7CisgICAgICAgICAgICAgICAgICAgIGxvZ1N0YXJ0QWN0aXZpdHkoRXZlbnRMb2dUYWdzLkFNX05FV19JTlRFTlQsIHIsIHRvcC50YXNrKTsKKyAgICAgICAgICAgICAgICAgICAgdG9wLmRlbGl2ZXJOZXdJbnRlbnRMb2NrZWQoci5pbnRlbnQpOworICAgICAgICAgICAgICAgICAgICBpZiAoZG9SZXN1bWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VtZVRvcEFjdGl2aXR5TG9ja2VkKG51bGwpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTVEFSVF9ERUxJVkVSRURfVE9fVE9QOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIEFuIGV4aXN0aW5nIGFjdGl2aXR5IGlzIHN0YXJ0aW5nIHRoaXMgbmV3IGFjdGl2aXR5LCBzbyB3ZSB3YW50CisgICAgICAgICAgICAvLyB0byBrZWVwIHRoZSBuZXcgb25lIGluIHRoZSBzYW1lIHRhc2sgYXMgdGhlIG9uZSB0aGF0IGlzIHN0YXJ0aW5nCisgICAgICAgICAgICAvLyBpdC4KKyAgICAgICAgICAgIHIudGFzayA9IHNvdXJjZVJlY29yZC50YXNrOworICAgICAgICAgICAgaWYgKERFQlVHX1RBU0tTKSBTbG9nLnYoVEFHLCAiU3RhcnRpbmcgbmV3IGFjdGl2aXR5ICIgKyByCisgICAgICAgICAgICAgICAgICAgICsgIiBpbiBleGlzdGluZyB0YXNrICIgKyByLnRhc2spOworCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBUaGlzIG5vdCBiZWluZyBzdGFydGVkIGZyb20gYW4gZXhpc3RpbmcgYWN0aXZpdHksIGFuZCBub3QgcGFydAorICAgICAgICAgICAgLy8gb2YgYSBuZXcgdGFzay4uLiAganVzdCBwdXQgaXQgaW4gdGhlIHRvcCB0YXNrLCB0aG91Z2ggdGhlc2UgZGF5cworICAgICAgICAgICAgLy8gdGhpcyBjYXNlIHNob3VsZCBuZXZlciBoYXBwZW4uCisgICAgICAgICAgICBmaW5hbCBpbnQgTiA9IG1IaXN0b3J5LnNpemUoKTsKKyAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHByZXYgPQorICAgICAgICAgICAgICAgIE4gPiAwID8gKEFjdGl2aXR5UmVjb3JkKW1IaXN0b3J5LmdldChOLTEpIDogbnVsbDsKKyAgICAgICAgICAgIHIudGFzayA9IHByZXYgIT0gbnVsbAorICAgICAgICAgICAgICAgID8gcHJldi50YXNrCisgICAgICAgICAgICAgICAgOiBuZXcgVGFza1JlY29yZChtU2VydmljZS5tQ3VyVGFzaywgci5pbmZvLCBpbnRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAoci5pbmZvLmZsYWdzJkFjdGl2aXR5SW5mby5GTEFHX0NMRUFSX1RBU0tfT05fTEFVTkNIKSAhPSAwKTsKKyAgICAgICAgICAgIGlmIChERUJVR19UQVNLUykgU2xvZy52KFRBRywgIlN0YXJ0aW5nIG5ldyBhY3Rpdml0eSAiICsgcgorICAgICAgICAgICAgICAgICAgICArICIgaW4gbmV3IGd1ZXNzZWQgIiArIHIudGFzayk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5ld1Rhc2spIHsKKyAgICAgICAgICAgIEV2ZW50TG9nLndyaXRlRXZlbnQoRXZlbnRMb2dUYWdzLkFNX0NSRUFURV9UQVNLLCByLnRhc2sudGFza0lkKTsKKyAgICAgICAgfQorICAgICAgICBsb2dTdGFydEFjdGl2aXR5KEV2ZW50TG9nVGFncy5BTV9DUkVBVEVfQUNUSVZJVFksIHIsIHIudGFzayk7CisgICAgICAgIHN0YXJ0QWN0aXZpdHlMb2NrZWQociwgbmV3VGFzaywgZG9SZXN1bWUpOworICAgICAgICByZXR1cm4gU1RBUlRfU1VDQ0VTUzsKKyAgICB9CisKKyAgICBmaW5hbCBpbnQgc3RhcnRBY3Rpdml0eU1heVdhaXQoSUFwcGxpY2F0aW9uVGhyZWFkIGNhbGxlciwKKyAgICAgICAgICAgIEludGVudCBpbnRlbnQsIFN0cmluZyByZXNvbHZlZFR5cGUsIFVyaVtdIGdyYW50ZWRVcmlQZXJtaXNzaW9ucywKKyAgICAgICAgICAgIGludCBncmFudGVkTW9kZSwgSUJpbmRlciByZXN1bHRUbywKKyAgICAgICAgICAgIFN0cmluZyByZXN1bHRXaG8sIGludCByZXF1ZXN0Q29kZSwgYm9vbGVhbiBvbmx5SWZOZWVkZWQsCisgICAgICAgICAgICBib29sZWFuIGRlYnVnLCBXYWl0UmVzdWx0IG91dFJlc3VsdCwgQ29uZmlndXJhdGlvbiBjb25maWcpIHsKKyAgICAgICAgLy8gUmVmdXNlIHBvc3NpYmxlIGxlYWtlZCBmaWxlIGRlc2NyaXB0b3JzCisgICAgICAgIGlmIChpbnRlbnQgIT0gbnVsbCAmJiBpbnRlbnQuaGFzRmlsZURlc2NyaXB0b3JzKCkpIHsKKyAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkZpbGUgZGVzY3JpcHRvcnMgcGFzc2VkIGluIEludGVudCIpOworICAgICAgICB9CisKKyAgICAgICAgYm9vbGVhbiBjb21wb25lbnRTcGVjaWZpZWQgPSBpbnRlbnQuZ2V0Q29tcG9uZW50KCkgIT0gbnVsbDsKKyAgICAgICAgCisgICAgICAgIC8vIERvbid0IG1vZGlmeSB0aGUgY2xpZW50J3Mgb2JqZWN0IQorICAgICAgICBpbnRlbnQgPSBuZXcgSW50ZW50KGludGVudCk7CisKKyAgICAgICAgLy8gQ29sbGVjdCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdGFyZ2V0IG9mIHRoZSBJbnRlbnQuCisgICAgICAgIEFjdGl2aXR5SW5mbyBhSW5mbzsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIFJlc29sdmVJbmZvIHJJbmZvID0KKyAgICAgICAgICAgICAgICBBcHBHbG9iYWxzLmdldFBhY2thZ2VNYW5hZ2VyKCkucmVzb2x2ZUludGVudCgKKyAgICAgICAgICAgICAgICAgICAgICAgIGludGVudCwgcmVzb2x2ZWRUeXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgUGFja2FnZU1hbmFnZXIuTUFUQ0hfREVGQVVMVF9PTkxZCisgICAgICAgICAgICAgICAgICAgICAgICB8IEFjdGl2aXR5TWFuYWdlclNlcnZpY2UuU1RPQ0tfUE1fRkxBR1MpOworICAgICAgICAgICAgYUluZm8gPSBySW5mbyAhPSBudWxsID8gckluZm8uYWN0aXZpdHlJbmZvIDogbnVsbDsKKyAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIGFJbmZvID0gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChhSW5mbyAhPSBudWxsKSB7CisgICAgICAgICAgICAvLyBTdG9yZSB0aGUgZm91bmQgdGFyZ2V0IGJhY2sgaW50byB0aGUgaW50ZW50LCBiZWNhdXNlIG5vdyB0aGF0CisgICAgICAgICAgICAvLyB3ZSBoYXZlIGl0IHdlIG5ldmVyIHdhbnQgdG8gZG8gdGhpcyBhZ2Fpbi4gIEZvciBleGFtcGxlLCBpZiB0aGUKKyAgICAgICAgICAgIC8vIHVzZXIgbmF2aWdhdGVzIGJhY2sgdG8gdGhpcyBwb2ludCBpbiB0aGUgaGlzdG9yeSwgd2Ugc2hvdWxkCisgICAgICAgICAgICAvLyBhbHdheXMgcmVzdGFydCB0aGUgZXhhY3Qgc2FtZSBhY3Rpdml0eS4KKyAgICAgICAgICAgIGludGVudC5zZXRDb21wb25lbnQobmV3IENvbXBvbmVudE5hbWUoCisgICAgICAgICAgICAgICAgICAgIGFJbmZvLmFwcGxpY2F0aW9uSW5mby5wYWNrYWdlTmFtZSwgYUluZm8ubmFtZSkpOworCisgICAgICAgICAgICAvLyBEb24ndCBkZWJ1ZyB0aGluZ3MgaW4gdGhlIHN5c3RlbSBwcm9jZXNzCisgICAgICAgICAgICBpZiAoZGVidWcpIHsKKyAgICAgICAgICAgICAgICBpZiAoIWFJbmZvLnByb2Nlc3NOYW1lLmVxdWFscygic3lzdGVtIikpIHsKKyAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2Uuc2V0RGVidWdBcHAoYUluZm8ucHJvY2Vzc05hbWUsIHRydWUsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBzeW5jaHJvbml6ZWQgKG1TZXJ2aWNlKSB7CisgICAgICAgICAgICBpbnQgY2FsbGluZ1BpZDsKKyAgICAgICAgICAgIGludCBjYWxsaW5nVWlkOworICAgICAgICAgICAgaWYgKGNhbGxlciA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgY2FsbGluZ1BpZCA9IEJpbmRlci5nZXRDYWxsaW5nUGlkKCk7CisgICAgICAgICAgICAgICAgY2FsbGluZ1VpZCA9IEJpbmRlci5nZXRDYWxsaW5nVWlkKCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGNhbGxpbmdQaWQgPSBjYWxsaW5nVWlkID0gLTE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG1Db25maWdXaWxsQ2hhbmdlID0gY29uZmlnICE9IG51bGwKKyAgICAgICAgICAgICAgICAgICAgJiYgbVNlcnZpY2UubUNvbmZpZ3VyYXRpb24uZGlmZihjb25maWcpICE9IDA7CisgICAgICAgICAgICBpZiAoREVCVUdfQ09ORklHVVJBVElPTikgU2xvZy52KFRBRywKKyAgICAgICAgICAgICAgICAgICAgIlN0YXJ0aW5nIGFjdGl2aXR5IHdoZW4gY29uZmlnIHdpbGwgY2hhbmdlID0gIiArIG1Db25maWdXaWxsQ2hhbmdlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZmluYWwgbG9uZyBvcmlnSWQgPSBCaW5kZXIuY2xlYXJDYWxsaW5nSWRlbnRpdHkoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKG1NYWluU3RhY2sgJiYgYUluZm8gIT0gbnVsbCAmJgorICAgICAgICAgICAgICAgICAgICAoYUluZm8uYXBwbGljYXRpb25JbmZvLmZsYWdzJkFwcGxpY2F0aW9uSW5mby5GTEFHX0hFQVZZX1dFSUdIVCkgIT0gMCkgeworICAgICAgICAgICAgICAgIC8vIFRoaXMgbWF5IGJlIGEgaGVhdnktd2VpZ2h0IHByb2Nlc3MhICBDaGVjayB0byBzZWUgaWYgd2UgYWxyZWFkeQorICAgICAgICAgICAgICAgIC8vIGhhdmUgYW5vdGhlciwgZGlmZmVyZW50IGhlYXZ5LXdlaWdodCBwcm9jZXNzIHJ1bm5pbmcuCisgICAgICAgICAgICAgICAgaWYgKGFJbmZvLnByb2Nlc3NOYW1lLmVxdWFscyhhSW5mby5hcHBsaWNhdGlvbkluZm8ucGFja2FnZU5hbWUpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChtU2VydmljZS5tSGVhdnlXZWlnaHRQcm9jZXNzICE9IG51bGwgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAobVNlcnZpY2UubUhlYXZ5V2VpZ2h0UHJvY2Vzcy5pbmZvLnVpZCAhPSBhSW5mby5hcHBsaWNhdGlvbkluZm8udWlkIHx8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIW1TZXJ2aWNlLm1IZWF2eVdlaWdodFByb2Nlc3MucHJvY2Vzc05hbWUuZXF1YWxzKGFJbmZvLnByb2Nlc3NOYW1lKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCByZWFsQ2FsbGluZ1BpZCA9IGNhbGxpbmdQaWQ7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVhbENhbGxpbmdVaWQgPSBjYWxsaW5nVWlkOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbGxlciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHJvY2Vzc1JlY29yZCBjYWxsZXJBcHAgPSBtU2VydmljZS5nZXRSZWNvcmRGb3JBcHBMb2NrZWQoY2FsbGVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FsbGVyQXBwICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVhbENhbGxpbmdQaWQgPSBjYWxsZXJBcHAucGlkOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFsQ2FsbGluZ1VpZCA9IGNhbGxlckFwcC5pbmZvLnVpZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiVW5hYmxlIHRvIGZpbmQgYXBwIGZvciBjYWxsZXIgIiArIGNhbGxlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgKHBpZD0iICsgcmVhbENhbGxpbmdQaWQgKyAiKSB3aGVuIHN0YXJ0aW5nOiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgaW50ZW50LnRvU3RyaW5nKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gU1RBUlRfUEVSTUlTU0lPTl9ERU5JRUQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBJSW50ZW50U2VuZGVyIHRhcmdldCA9IG1TZXJ2aWNlLmdldEludGVudFNlbmRlckxvY2tlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSUFjdGl2aXR5TWFuYWdlci5JTlRFTlRfU0VOREVSX0FDVElWSVRZLCAiYW5kcm9pZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWxDYWxsaW5nVWlkLCBudWxsLCBudWxsLCAwLCBpbnRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVkVHlwZSwgUGVuZGluZ0ludGVudC5GTEFHX0NBTkNFTF9DVVJSRU5UCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUGVuZGluZ0ludGVudC5GTEFHX09ORV9TSE9UKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgSW50ZW50IG5ld0ludGVudCA9IG5ldyBJbnRlbnQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZXF1ZXN0Q29kZSA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2FsbGVyIGlzIHJlcXVlc3RpbmcgYSByZXN1bHQuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3SW50ZW50LnB1dEV4dHJhKEhlYXZ5V2VpZ2h0U3dpdGNoZXJBY3Rpdml0eS5LRVlfSEFTX1JFU1VMVCwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBuZXdJbnRlbnQucHV0RXh0cmEoSGVhdnlXZWlnaHRTd2l0Y2hlckFjdGl2aXR5LktFWV9JTlRFTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBJbnRlbnRTZW5kZXIodGFyZ2V0KSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAobVNlcnZpY2UubUhlYXZ5V2VpZ2h0UHJvY2Vzcy5hY3Rpdml0aWVzLnNpemUoKSA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCBoaXN0ID0gbVNlcnZpY2UubUhlYXZ5V2VpZ2h0UHJvY2Vzcy5hY3Rpdml0aWVzLmdldCgwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdJbnRlbnQucHV0RXh0cmEoSGVhdnlXZWlnaHRTd2l0Y2hlckFjdGl2aXR5LktFWV9DVVJfQVBQLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGlzdC5wYWNrYWdlTmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3SW50ZW50LnB1dEV4dHJhKEhlYXZ5V2VpZ2h0U3dpdGNoZXJBY3Rpdml0eS5LRVlfQ1VSX1RBU0ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaXN0LnRhc2sudGFza0lkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld0ludGVudC5wdXRFeHRyYShIZWF2eVdlaWdodFN3aXRjaGVyQWN0aXZpdHkuS0VZX05FV19BUFAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFJbmZvLnBhY2thZ2VOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld0ludGVudC5zZXRGbGFncyhpbnRlbnQuZ2V0RmxhZ3MoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXdJbnRlbnQuc2V0Q2xhc3NOYW1lKCJhbmRyb2lkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSGVhdnlXZWlnaHRTd2l0Y2hlckFjdGl2aXR5LmNsYXNzLmdldE5hbWUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnRlbnQgPSBuZXdJbnRlbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlZFR5cGUgPSBudWxsOworICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGVyID0gbnVsbDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxpbmdVaWQgPSBCaW5kZXIuZ2V0Q2FsbGluZ1VpZCgpOworICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGluZ1BpZCA9IEJpbmRlci5nZXRDYWxsaW5nUGlkKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBjb21wb25lbnRTcGVjaWZpZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNvbHZlSW5mbyBySW5mbyA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFwcEdsb2JhbHMuZ2V0UGFja2FnZU1hbmFnZXIoKS5yZXNvbHZlSW50ZW50KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludGVudCwgbnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlTWFuYWdlci5NQVRDSF9ERUZBVUxUX09OTFkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IEFjdGl2aXR5TWFuYWdlclNlcnZpY2UuU1RPQ0tfUE1fRkxBR1MpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFJbmZvID0gckluZm8gIT0gbnVsbCA/IHJJbmZvLmFjdGl2aXR5SW5mbyA6IG51bGw7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFJbmZvID0gbnVsbDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaW50IHJlcyA9IHN0YXJ0QWN0aXZpdHlMb2NrZWQoY2FsbGVyLCBpbnRlbnQsIHJlc29sdmVkVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgZ3JhbnRlZFVyaVBlcm1pc3Npb25zLCBncmFudGVkTW9kZSwgYUluZm8sCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdFRvLCByZXN1bHRXaG8sIHJlcXVlc3RDb2RlLCBjYWxsaW5nUGlkLCBjYWxsaW5nVWlkLAorICAgICAgICAgICAgICAgICAgICBvbmx5SWZOZWVkZWQsIGNvbXBvbmVudFNwZWNpZmllZCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChtQ29uZmlnV2lsbENoYW5nZSAmJiBtTWFpblN0YWNrKSB7CisgICAgICAgICAgICAgICAgLy8gSWYgdGhlIGNhbGxlciBhbHNvIHdhbnRzIHRvIHN3aXRjaCB0byBhIG5ldyBjb25maWd1cmF0aW9uLAorICAgICAgICAgICAgICAgIC8vIGRvIHNvIG5vdy4gIFRoaXMgYWxsb3dzIGEgY2xlYW4gc3dpdGNoLCBhcyB3ZSBhcmUgd2FpdGluZworICAgICAgICAgICAgICAgIC8vIGZvciB0aGUgY3VycmVudCBhY3Rpdml0eSB0byBwYXVzZSAoc28gd2Ugd2lsbCBub3QgZGVzdHJveQorICAgICAgICAgICAgICAgIC8vIGl0KSwgYW5kIGhhdmUgbm90IHlldCBzdGFydGVkIHRoZSBuZXh0IGFjdGl2aXR5LgorICAgICAgICAgICAgICAgIG1TZXJ2aWNlLmVuZm9yY2VDYWxsaW5nUGVybWlzc2lvbihhbmRyb2lkLk1hbmlmZXN0LnBlcm1pc3Npb24uQ0hBTkdFX0NPTkZJR1VSQVRJT04sCisgICAgICAgICAgICAgICAgICAgICAgICAidXBkYXRlQ29uZmlndXJhdGlvbigpIik7CisgICAgICAgICAgICAgICAgbUNvbmZpZ1dpbGxDaGFuZ2UgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBpZiAoREVCVUdfQ09ORklHVVJBVElPTikgU2xvZy52KFRBRywKKyAgICAgICAgICAgICAgICAgICAgICAgICJVcGRhdGluZyB0byBuZXcgY29uZmlndXJhdGlvbiBhZnRlciBzdGFydGluZyBhY3Rpdml0eS4iKTsKKyAgICAgICAgICAgICAgICBtU2VydmljZS51cGRhdGVDb25maWd1cmF0aW9uTG9ja2VkKGNvbmZpZywgbnVsbCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEJpbmRlci5yZXN0b3JlQ2FsbGluZ0lkZW50aXR5KG9yaWdJZCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChvdXRSZXN1bHQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIG91dFJlc3VsdC5yZXN1bHQgPSByZXM7CisgICAgICAgICAgICAgICAgaWYgKHJlcyA9PSBJQWN0aXZpdHlNYW5hZ2VyLlNUQVJUX1NVQ0NFU1MpIHsKKyAgICAgICAgICAgICAgICAgICAgbVdhaXRpbmdBY3Rpdml0eUxhdW5jaGVkLmFkZChvdXRSZXN1bHQpOworICAgICAgICAgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhaXQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEludGVycnVwdGVkRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoIW91dFJlc3VsdC50aW1lb3V0ICYmIG91dFJlc3VsdC53aG8gPT0gbnVsbCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXMgPT0gSUFjdGl2aXR5TWFuYWdlci5TVEFSVF9UQVNLX1RPX0ZST05UKSB7CisgICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSB0aGlzLnRvcFJ1bm5pbmdBY3Rpdml0eUxvY2tlZChudWxsKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHIubm93VmlzaWJsZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgb3V0UmVzdWx0LnRpbWVvdXQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dFJlc3VsdC53aG8gPSBuZXcgQ29tcG9uZW50TmFtZShyLmluZm8ucGFja2FnZU5hbWUsIHIuaW5mby5uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dFJlc3VsdC50b3RhbFRpbWUgPSAwOworICAgICAgICAgICAgICAgICAgICAgICAgb3V0UmVzdWx0LnRoaXNUaW1lID0gMDsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dFJlc3VsdC50aGlzVGltZSA9IFN5c3RlbUNsb2NrLnVwdGltZU1pbGxpcygpOworICAgICAgICAgICAgICAgICAgICAgICAgbVdhaXRpbmdBY3Rpdml0eVZpc2libGUuYWRkKG91dFJlc3VsdCk7CisgICAgICAgICAgICAgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FpdCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKEludGVycnVwdGVkRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxlICghb3V0UmVzdWx0LnRpbWVvdXQgJiYgb3V0UmVzdWx0LndobyA9PSBudWxsKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgcmV0dXJuIHJlczsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB2b2lkIHJlcG9ydEFjdGl2aXR5TGF1bmNoZWRMb2NrZWQoYm9vbGVhbiB0aW1lb3V0LCBBY3Rpdml0eVJlY29yZCByLAorICAgICAgICAgICAgbG9uZyB0aGlzVGltZSwgbG9uZyB0b3RhbFRpbWUpIHsKKyAgICAgICAgZm9yIChpbnQgaT1tV2FpdGluZ0FjdGl2aXR5TGF1bmNoZWQuc2l6ZSgpLTE7IGk+PTA7IGktLSkgeworICAgICAgICAgICAgV2FpdFJlc3VsdCB3ID0gbVdhaXRpbmdBY3Rpdml0eUxhdW5jaGVkLmdldChpKTsKKyAgICAgICAgICAgIHcudGltZW91dCA9IHRpbWVvdXQ7CisgICAgICAgICAgICBpZiAociAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgdy53aG8gPSBuZXcgQ29tcG9uZW50TmFtZShyLmluZm8ucGFja2FnZU5hbWUsIHIuaW5mby5uYW1lKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHcudGhpc1RpbWUgPSB0aGlzVGltZTsKKyAgICAgICAgICAgIHcudG90YWxUaW1lID0gdG90YWxUaW1lOworICAgICAgICB9CisgICAgICAgIG1TZXJ2aWNlLm5vdGlmeUFsbCgpOworICAgIH0KKyAgICAKKyAgICB2b2lkIHJlcG9ydEFjdGl2aXR5VmlzaWJsZUxvY2tlZChBY3Rpdml0eVJlY29yZCByKSB7CisgICAgICAgIGZvciAoaW50IGk9bVdhaXRpbmdBY3Rpdml0eVZpc2libGUuc2l6ZSgpLTE7IGk+PTA7IGktLSkgeworICAgICAgICAgICAgV2FpdFJlc3VsdCB3ID0gbVdhaXRpbmdBY3Rpdml0eVZpc2libGUuZ2V0KGkpOworICAgICAgICAgICAgdy50aW1lb3V0ID0gZmFsc2U7CisgICAgICAgICAgICBpZiAociAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgdy53aG8gPSBuZXcgQ29tcG9uZW50TmFtZShyLmluZm8ucGFja2FnZU5hbWUsIHIuaW5mby5uYW1lKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHcudG90YWxUaW1lID0gU3lzdGVtQ2xvY2sudXB0aW1lTWlsbGlzKCkgLSB3LnRoaXNUaW1lOworICAgICAgICAgICAgdy50aGlzVGltZSA9IHcudG90YWxUaW1lOworICAgICAgICB9CisgICAgICAgIG1TZXJ2aWNlLm5vdGlmeUFsbCgpOworICAgIH0KKworICAgIHZvaWQgc2VuZEFjdGl2aXR5UmVzdWx0TG9ja2VkKGludCBjYWxsaW5nVWlkLCBBY3Rpdml0eVJlY29yZCByLAorICAgICAgICAgICAgU3RyaW5nIHJlc3VsdFdobywgaW50IHJlcXVlc3RDb2RlLCBpbnQgcmVzdWx0Q29kZSwgSW50ZW50IGRhdGEpIHsKKworICAgICAgICBpZiAoY2FsbGluZ1VpZCA+IDApIHsKKyAgICAgICAgICAgIG1TZXJ2aWNlLmdyYW50VXJpUGVybWlzc2lvbkZyb21JbnRlbnRMb2NrZWQoY2FsbGluZ1VpZCwgci5wYWNrYWdlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgZGF0YSwgcik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoREVCVUdfUkVTVUxUUykgU2xvZy52KFRBRywgIlNlbmQgYWN0aXZpdHkgcmVzdWx0IHRvICIgKyByCisgICAgICAgICAgICAgICAgKyAiIDogd2hvPSIgKyByZXN1bHRXaG8gKyAiIHJlcT0iICsgcmVxdWVzdENvZGUKKyAgICAgICAgICAgICAgICArICIgcmVzPSIgKyByZXN1bHRDb2RlICsgIiBkYXRhPSIgKyBkYXRhKTsKKyAgICAgICAgaWYgKG1SZXN1bWVkQWN0aXZpdHkgPT0gciAmJiByLmFwcCAhPSBudWxsICYmIHIuYXBwLnRocmVhZCAhPSBudWxsKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIEFycmF5TGlzdDxSZXN1bHRJbmZvPiBsaXN0ID0gbmV3IEFycmF5TGlzdDxSZXN1bHRJbmZvPigpOworICAgICAgICAgICAgICAgIGxpc3QuYWRkKG5ldyBSZXN1bHRJbmZvKHJlc3VsdFdobywgcmVxdWVzdENvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRDb2RlLCBkYXRhKSk7CisgICAgICAgICAgICAgICAgci5hcHAudGhyZWFkLnNjaGVkdWxlU2VuZFJlc3VsdChyLCBsaXN0KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsICJFeGNlcHRpb24gdGhyb3duIHNlbmRpbmcgcmVzdWx0IHRvICIgKyByLCBlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHIuYWRkUmVzdWx0TG9ja2VkKG51bGwsIHJlc3VsdFdobywgcmVxdWVzdENvZGUsIHJlc3VsdENvZGUsIGRhdGEpOworICAgIH0KKworICAgIHByaXZhdGUgZmluYWwgdm9pZCBzdG9wQWN0aXZpdHlMb2NrZWQoQWN0aXZpdHlSZWNvcmQgcikgeworICAgICAgICBpZiAoREVCVUdfU1dJVENIKSBTbG9nLmQoVEFHLCAiU3RvcHBpbmc6ICIgKyByKTsKKyAgICAgICAgaWYgKChyLmludGVudC5nZXRGbGFncygpJkludGVudC5GTEFHX0FDVElWSVRZX05PX0hJU1RPUlkpICE9IDAKKyAgICAgICAgICAgICAgICB8fCAoci5pbmZvLmZsYWdzJkFjdGl2aXR5SW5mby5GTEFHX05PX0hJU1RPUlkpICE9IDApIHsKKyAgICAgICAgICAgIGlmICghci5maW5pc2hpbmcpIHsKKyAgICAgICAgICAgICAgICByZXF1ZXN0RmluaXNoQWN0aXZpdHlMb2NrZWQociwgQWN0aXZpdHkuUkVTVUxUX0NBTkNFTEVELCBudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgIm5vLWhpc3RvcnkiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChyLmFwcCAhPSBudWxsICYmIHIuYXBwLnRocmVhZCAhPSBudWxsKSB7CisgICAgICAgICAgICBpZiAobU1haW5TdGFjaykgeworICAgICAgICAgICAgICAgIGlmIChtU2VydmljZS5tRm9jdXNlZEFjdGl2aXR5ID09IHIpIHsKKyAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2Uuc2V0Rm9jdXNlZEFjdGl2aXR5TG9ja2VkKHRvcFJ1bm5pbmdBY3Rpdml0eUxvY2tlZChudWxsKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgci5yZXN1bWVLZXlEaXNwYXRjaGluZ0xvY2tlZCgpOworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICByLnN0b3BwZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICByLnN0YXRlID0gQWN0aXZpdHlTdGF0ZS5TVE9QUElORzsKKyAgICAgICAgICAgICAgICBpZiAoREVCVUdfVklTQklMSVRZKSBTbG9nLnYoCisgICAgICAgICAgICAgICAgICAgICAgICBUQUcsICJTdG9wcGluZyB2aXNpYmxlPSIgKyByLnZpc2libGUgKyAiIGZvciAiICsgcik7CisgICAgICAgICAgICAgICAgaWYgKCFyLnZpc2libGUpIHsKKyAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2UubVdpbmRvd01hbmFnZXIuc2V0QXBwVmlzaWJpbGl0eShyLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHIuYXBwLnRocmVhZC5zY2hlZHVsZVN0b3BBY3Rpdml0eShyLCByLnZpc2libGUsIHIuY29uZmlnQ2hhbmdlRmxhZ3MpOworICAgICAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAvLyBNYXliZSBqdXN0IGlnbm9yZSBleGNlcHRpb25zIGhlcmUuLi4gIGlmIHRoZSBwcm9jZXNzCisgICAgICAgICAgICAgICAgLy8gaGFzIGNyYXNoZWQsIG91ciBkZWF0aCBub3RpZmljYXRpb24gd2lsbCBjbGVhbiB0aGluZ3MKKyAgICAgICAgICAgICAgICAvLyB1cC4KKyAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiRXhjZXB0aW9uIHRocm93biBkdXJpbmcgcGF1c2UiLCBlKTsKKyAgICAgICAgICAgICAgICAvLyBKdXN0IGluIGNhc2UsIGFzc3VtZSBpdCB0byBiZSBzdG9wcGVkLgorICAgICAgICAgICAgICAgIHIuc3RvcHBlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgci5zdGF0ZSA9IEFjdGl2aXR5U3RhdGUuU1RPUFBFRDsKKyAgICAgICAgICAgICAgICBpZiAoci5jb25maWdEZXN0cm95KSB7CisgICAgICAgICAgICAgICAgICAgIGRlc3Ryb3lBY3Rpdml0eUxvY2tlZChyLCB0cnVlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgZmluYWwgQXJyYXlMaXN0PEFjdGl2aXR5UmVjb3JkPiBwcm9jZXNzU3RvcHBpbmdBY3Rpdml0aWVzTG9ja2VkKAorICAgICAgICAgICAgYm9vbGVhbiByZW1vdmUpIHsKKyAgICAgICAgaW50IE4gPSBtU3RvcHBpbmdBY3Rpdml0aWVzLnNpemUoKTsKKyAgICAgICAgaWYgKE4gPD0gMCkgcmV0dXJuIG51bGw7CisKKyAgICAgICAgQXJyYXlMaXN0PEFjdGl2aXR5UmVjb3JkPiBzdG9wcyA9IG51bGw7CisKKyAgICAgICAgZmluYWwgYm9vbGVhbiBub3dWaXNpYmxlID0gbVJlc3VtZWRBY3Rpdml0eSAhPSBudWxsCisgICAgICAgICAgICAgICAgJiYgbVJlc3VtZWRBY3Rpdml0eS5ub3dWaXNpYmxlCisgICAgICAgICAgICAgICAgJiYgIW1SZXN1bWVkQWN0aXZpdHkud2FpdGluZ1Zpc2libGU7CisgICAgICAgIGZvciAoaW50IGk9MDsgaTxOOyBpKyspIHsKKyAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHMgPSBtU3RvcHBpbmdBY3Rpdml0aWVzLmdldChpKTsKKyAgICAgICAgICAgIGlmIChsb2NhbExPR1YpIFNsb2cudihUQUcsICJTdG9wcGluZyAiICsgcyArICI6IG5vd1Zpc2libGU9IgorICAgICAgICAgICAgICAgICAgICArIG5vd1Zpc2libGUgKyAiIHdhaXRpbmdWaXNpYmxlPSIgKyBzLndhaXRpbmdWaXNpYmxlCisgICAgICAgICAgICAgICAgICAgICsgIiBmaW5pc2hpbmc9IiArIHMuZmluaXNoaW5nKTsKKyAgICAgICAgICAgIGlmIChzLndhaXRpbmdWaXNpYmxlICYmIG5vd1Zpc2libGUpIHsKKyAgICAgICAgICAgICAgICBtV2FpdGluZ1Zpc2libGVBY3Rpdml0aWVzLnJlbW92ZShzKTsKKyAgICAgICAgICAgICAgICBzLndhaXRpbmdWaXNpYmxlID0gZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKHMuZmluaXNoaW5nKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgYWN0aXZpdHkgaXMgZmluaXNoaW5nLCBpdCBpcyBzaXR0aW5nIG9uIHRvcCBvZgorICAgICAgICAgICAgICAgICAgICAvLyBldmVyeW9uZSBlbHNlIGJ1dCB3ZSBub3cga25vdyBpdCBpcyBubyBsb25nZXIgbmVlZGVkLi4uCisgICAgICAgICAgICAgICAgICAgIC8vIHNvIGdldCByaWQgb2YgaXQuICBPdGhlcndpc2UsIHdlIG5lZWQgdG8gZ28gdGhyb3VnaCB0aGUKKyAgICAgICAgICAgICAgICAgICAgLy8gbm9ybWFsIGZsb3cgYW5kIGhpZGUgaXQgb25jZSB3ZSBkZXRlcm1pbmUgdGhhdCBpdCBpcworICAgICAgICAgICAgICAgICAgICAvLyBoaWRkZW4gYnkgdGhlIGFjdGl2aXRpZXMgaW4gZnJvbnQgb2YgaXQuCisgICAgICAgICAgICAgICAgICAgIGlmIChsb2NhbExPR1YpIFNsb2cudihUQUcsICJCZWZvcmUgc3RvcHBpbmcsIGNhbiBoaWRlOiAiICsgcyk7CisgICAgICAgICAgICAgICAgICAgIG1TZXJ2aWNlLm1XaW5kb3dNYW5hZ2VyLnNldEFwcFZpc2liaWxpdHkocywgZmFsc2UpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghcy53YWl0aW5nVmlzaWJsZSAmJiByZW1vdmUpIHsKKyAgICAgICAgICAgICAgICBpZiAobG9jYWxMT0dWKSBTbG9nLnYoVEFHLCAiUmVhZHkgdG8gc3RvcDogIiArIHMpOworICAgICAgICAgICAgICAgIGlmIChzdG9wcyA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIHN0b3BzID0gbmV3IEFycmF5TGlzdDxBY3Rpdml0eVJlY29yZD4oKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgc3RvcHMuYWRkKHMpOworICAgICAgICAgICAgICAgIG1TdG9wcGluZ0FjdGl2aXRpZXMucmVtb3ZlKGkpOworICAgICAgICAgICAgICAgIE4tLTsKKyAgICAgICAgICAgICAgICBpLS07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gc3RvcHM7CisgICAgfQorCisgICAgZmluYWwgdm9pZCBhY3Rpdml0eUlkbGVJbnRlcm5hbChJQmluZGVyIHRva2VuLCBib29sZWFuIGZyb21UaW1lb3V0LAorICAgICAgICAgICAgQ29uZmlndXJhdGlvbiBjb25maWcpIHsKKyAgICAgICAgaWYgKGxvY2FsTE9HVikgU2xvZy52KFRBRywgIkFjdGl2aXR5IGlkbGU6ICIgKyB0b2tlbik7CisKKyAgICAgICAgQXJyYXlMaXN0PEFjdGl2aXR5UmVjb3JkPiBzdG9wcyA9IG51bGw7CisgICAgICAgIEFycmF5TGlzdDxBY3Rpdml0eVJlY29yZD4gZmluaXNoZXMgPSBudWxsOworICAgICAgICBBcnJheUxpc3Q8QWN0aXZpdHlSZWNvcmQ+IHRodW1ibmFpbHMgPSBudWxsOworICAgICAgICBpbnQgTlMgPSAwOworICAgICAgICBpbnQgTkYgPSAwOworICAgICAgICBpbnQgTlQgPSAwOworICAgICAgICBJQXBwbGljYXRpb25UaHJlYWQgc2VuZFRodW1ibmFpbCA9IG51bGw7CisgICAgICAgIGJvb2xlYW4gYm9vdGluZyA9IGZhbHNlOworICAgICAgICBib29sZWFuIGVuYWJsZVNjcmVlbiA9IGZhbHNlOworCisgICAgICAgIHN5bmNocm9uaXplZCAobVNlcnZpY2UpIHsKKyAgICAgICAgICAgIGlmICh0b2tlbiAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgbUhhbmRsZXIucmVtb3ZlTWVzc2FnZXMoSURMRV9USU1FT1VUX01TRywgdG9rZW4pOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBHZXQgdGhlIGFjdGl2aXR5IHJlY29yZC4KKyAgICAgICAgICAgIGludCBpbmRleCA9IGluZGV4T2ZUb2tlbkxvY2tlZCh0b2tlbik7CisgICAgICAgICAgICBpZiAoaW5kZXggPj0gMCkgeworICAgICAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSAoQWN0aXZpdHlSZWNvcmQpbUhpc3RvcnkuZ2V0KGluZGV4KTsKKworICAgICAgICAgICAgICAgIGlmIChmcm9tVGltZW91dCkgeworICAgICAgICAgICAgICAgICAgICByZXBvcnRBY3Rpdml0eUxhdW5jaGVkTG9ja2VkKGZyb21UaW1lb3V0LCByLCAtMSwgLTEpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBUaGlzIGlzIGEgaGFjayB0byBzZW1pLWRlYWwgd2l0aCBhIHJhY2UgY29uZGl0aW9uCisgICAgICAgICAgICAgICAgLy8gaW4gdGhlIGNsaWVudCB3aGVyZSBpdCBjYW4gYmUgY29uc3RydWN0ZWQgd2l0aCBhCisgICAgICAgICAgICAgICAgLy8gbmV3ZXIgY29uZmlndXJhdGlvbiBmcm9tIHdoZW4gd2UgYXNrZWQgaXQgdG8gbGF1bmNoLgorICAgICAgICAgICAgICAgIC8vIFdlJ2xsIHVwZGF0ZSB3aXRoIHdoYXRldmVyIGNvbmZpZ3VyYXRpb24gaXQgbm93IHNheXMKKyAgICAgICAgICAgICAgICAvLyBpdCB1c2VkIHRvIGxhdW5jaC4KKyAgICAgICAgICAgICAgICBpZiAoY29uZmlnICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgci5jb25maWd1cmF0aW9uID0gY29uZmlnOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvLyBObyBsb25nZXIgbmVlZCB0byBrZWVwIHRoZSBkZXZpY2UgYXdha2UuCisgICAgICAgICAgICAgICAgaWYgKG1SZXN1bWVkQWN0aXZpdHkgPT0gciAmJiBtTGF1bmNoaW5nQWN0aXZpdHkuaXNIZWxkKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgbUhhbmRsZXIucmVtb3ZlTWVzc2FnZXMoTEFVTkNIX1RJTUVPVVRfTVNHKTsKKyAgICAgICAgICAgICAgICAgICAgbUxhdW5jaGluZ0FjdGl2aXR5LnJlbGVhc2UoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBXZSBhcmUgbm93IGlkbGUuICBJZiBzb21lb25lIGlzIHdhaXRpbmcgZm9yIGEgdGh1bWJuYWlsIGZyb20KKyAgICAgICAgICAgICAgICAvLyB1cywgd2UgY2FuIG5vdyBkZWxpdmVyLgorICAgICAgICAgICAgICAgIHIuaWRsZSA9IHRydWU7CisgICAgICAgICAgICAgICAgbVNlcnZpY2Uuc2NoZWR1bGVBcHBHY3NMb2NrZWQoKTsKKyAgICAgICAgICAgICAgICBpZiAoci50aHVtYm5haWxOZWVkZWQgJiYgci5hcHAgIT0gbnVsbCAmJiByLmFwcC50aHJlYWQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBzZW5kVGh1bWJuYWlsID0gci5hcHAudGhyZWFkOworICAgICAgICAgICAgICAgICAgICByLnRodW1ibmFpbE5lZWRlZCA9IGZhbHNlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgYWN0aXZpdHkgaXMgZnVsbHNjcmVlbiwgc2V0IHVwIHRvIGhpZGUgdGhvc2UgdW5kZXIgaXQuCisKKyAgICAgICAgICAgICAgICBpZiAoREVCVUdfVklTQklMSVRZKSBTbG9nLnYoVEFHLCAiSWRsZSBhY3Rpdml0eSBmb3IgIiArIHIpOworICAgICAgICAgICAgICAgIGVuc3VyZUFjdGl2aXRpZXNWaXNpYmxlTG9ja2VkKG51bGwsIDApOworCisgICAgICAgICAgICAgICAgLy9TbG9nLmkoVEFHLCAiSURMRTogbUJvb3RlZD0iICsgbUJvb3RlZCArICIsIGZyb21UaW1lb3V0PSIgKyBmcm9tVGltZW91dCk7CisgICAgICAgICAgICAgICAgaWYgKG1NYWluU3RhY2spIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFtU2VydmljZS5tQm9vdGVkICYmICFmcm9tVGltZW91dCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2UubUJvb3RlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVTY3JlZW4gPSB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgfSBlbHNlIGlmIChmcm9tVGltZW91dCkgeworICAgICAgICAgICAgICAgIHJlcG9ydEFjdGl2aXR5TGF1bmNoZWRMb2NrZWQoZnJvbVRpbWVvdXQsIG51bGwsIC0xLCAtMSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEF0b21pY2FsbHkgcmV0cmlldmUgYWxsIG9mIHRoZSBvdGhlciB0aGluZ3MgdG8gZG8uCisgICAgICAgICAgICBzdG9wcyA9IHByb2Nlc3NTdG9wcGluZ0FjdGl2aXRpZXNMb2NrZWQodHJ1ZSk7CisgICAgICAgICAgICBOUyA9IHN0b3BzICE9IG51bGwgPyBzdG9wcy5zaXplKCkgOiAwOworICAgICAgICAgICAgaWYgKChORj1tRmluaXNoaW5nQWN0aXZpdGllcy5zaXplKCkpID4gMCkgeworICAgICAgICAgICAgICAgIGZpbmlzaGVzID0gbmV3IEFycmF5TGlzdDxBY3Rpdml0eVJlY29yZD4obUZpbmlzaGluZ0FjdGl2aXRpZXMpOworICAgICAgICAgICAgICAgIG1GaW5pc2hpbmdBY3Rpdml0aWVzLmNsZWFyKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoKE5UPW1TZXJ2aWNlLm1DYW5jZWxsZWRUaHVtYm5haWxzLnNpemUoKSkgPiAwKSB7CisgICAgICAgICAgICAgICAgdGh1bWJuYWlscyA9IG5ldyBBcnJheUxpc3Q8QWN0aXZpdHlSZWNvcmQ+KG1TZXJ2aWNlLm1DYW5jZWxsZWRUaHVtYm5haWxzKTsKKyAgICAgICAgICAgICAgICBtU2VydmljZS5tQ2FuY2VsbGVkVGh1bWJuYWlscy5jbGVhcigpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobU1haW5TdGFjaykgeworICAgICAgICAgICAgICAgIGJvb3RpbmcgPSBtU2VydmljZS5tQm9vdGluZzsKKyAgICAgICAgICAgICAgICBtU2VydmljZS5tQm9vdGluZyA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaW50IGk7CisKKyAgICAgICAgLy8gU2VuZCB0aHVtYm5haWwgaWYgcmVxdWVzdGVkLgorICAgICAgICBpZiAoc2VuZFRodW1ibmFpbCAhPSBudWxsKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHNlbmRUaHVtYm5haWwucmVxdWVzdFRodW1ibmFpbCh0b2tlbik7CisgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIFNsb2cudyhUQUcsICJFeGNlcHRpb24gdGhyb3duIHdoZW4gcmVxdWVzdGluZyB0aHVtYm5haWwiLCBlKTsKKyAgICAgICAgICAgICAgICBtU2VydmljZS5zZW5kUGVuZGluZ1RodW1ibmFpbChudWxsLCB0b2tlbiwgbnVsbCwgbnVsbCwgdHJ1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBTdG9wIGFueSBhY3Rpdml0aWVzIHRoYXQgYXJlIHNjaGVkdWxlZCB0byBkbyBzbyBidXQgaGF2ZSBiZWVuCisgICAgICAgIC8vIHdhaXRpbmcgZm9yIHRoZSBuZXh0IG9uZSB0byBzdGFydC4KKyAgICAgICAgZm9yIChpPTA7IGk8TlM7IGkrKykgeworICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IChBY3Rpdml0eVJlY29yZClzdG9wcy5nZXQoaSk7CisgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKG1TZXJ2aWNlKSB7CisgICAgICAgICAgICAgICAgaWYgKHIuZmluaXNoaW5nKSB7CisgICAgICAgICAgICAgICAgICAgIGZpbmlzaEN1cnJlbnRBY3Rpdml0eUxvY2tlZChyLCBGSU5JU0hfSU1NRURJQVRFTFkpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHN0b3BBY3Rpdml0eUxvY2tlZChyKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBGaW5pc2ggYW55IGFjdGl2aXRpZXMgdGhhdCBhcmUgc2NoZWR1bGVkIHRvIGRvIHNvIGJ1dCBoYXZlIGJlZW4KKyAgICAgICAgLy8gd2FpdGluZyBmb3IgdGhlIG5leHQgb25lIHRvIHN0YXJ0LgorICAgICAgICBmb3IgKGk9MDsgaTxORjsgaSsrKSB7CisgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gKEFjdGl2aXR5UmVjb3JkKWZpbmlzaGVzLmdldChpKTsKKyAgICAgICAgICAgIHN5bmNocm9uaXplZCAobVNlcnZpY2UpIHsKKyAgICAgICAgICAgICAgICBkZXN0cm95QWN0aXZpdHlMb2NrZWQociwgdHJ1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICAvLyBSZXBvcnQgYmFjayB0byBhbnkgdGh1bWJuYWlsIHJlY2VpdmVycy4KKyAgICAgICAgZm9yIChpPTA7IGk8TlQ7IGkrKykgeworICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IChBY3Rpdml0eVJlY29yZCl0aHVtYm5haWxzLmdldChpKTsKKyAgICAgICAgICAgIG1TZXJ2aWNlLnNlbmRQZW5kaW5nVGh1bWJuYWlsKHIsIG51bGwsIG51bGwsIG51bGwsIHRydWUpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGJvb3RpbmcpIHsKKyAgICAgICAgICAgIG1TZXJ2aWNlLmZpbmlzaEJvb3RpbmcoKTsKKyAgICAgICAgfQorCisgICAgICAgIG1TZXJ2aWNlLnRyaW1BcHBsaWNhdGlvbnMoKTsKKyAgICAgICAgLy9kdW1wKCk7CisgICAgICAgIC8vbVdpbmRvd01hbmFnZXIuZHVtcCgpOworCisgICAgICAgIGlmIChlbmFibGVTY3JlZW4pIHsKKyAgICAgICAgICAgIG1TZXJ2aWNlLmVuYWJsZVNjcmVlbkFmdGVyQm9vdCgpOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogQHJldHVybiBSZXR1cm5zIHRydWUgaWYgdGhlIGFjdGl2aXR5IGlzIGJlaW5nIGZpbmlzaGVkLCBmYWxzZSBpZiBmb3IKKyAgICAgKiBzb21lIHJlYXNvbiBpdCBpcyBiZWluZyBsZWZ0IGFzLWlzLgorICAgICAqLworICAgIGZpbmFsIGJvb2xlYW4gcmVxdWVzdEZpbmlzaEFjdGl2aXR5TG9ja2VkKElCaW5kZXIgdG9rZW4sIGludCByZXN1bHRDb2RlLAorICAgICAgICAgICAgSW50ZW50IHJlc3VsdERhdGEsIFN0cmluZyByZWFzb24pIHsKKyAgICAgICAgaWYgKERFQlVHX1JFU1VMVFMpIFNsb2cudigKKyAgICAgICAgICAgIFRBRywgIkZpbmlzaGluZyBhY3Rpdml0eTogdG9rZW49IiArIHRva2VuCisgICAgICAgICAgICArICIsIHJlc3VsdD0iICsgcmVzdWx0Q29kZSArICIsIGRhdGE9IiArIHJlc3VsdERhdGEpOworCisgICAgICAgIGludCBpbmRleCA9IGluZGV4T2ZUb2tlbkxvY2tlZCh0b2tlbik7CisgICAgICAgIGlmIChpbmRleCA8IDApIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gKEFjdGl2aXR5UmVjb3JkKW1IaXN0b3J5LmdldChpbmRleCk7CisKKyAgICAgICAgLy8gSXMgdGhpcyB0aGUgbGFzdCBhY3Rpdml0eSBsZWZ0PworICAgICAgICBib29sZWFuIGxhc3RBY3Rpdml0eSA9IHRydWU7CisgICAgICAgIGZvciAoaW50IGk9bUhpc3Rvcnkuc2l6ZSgpLTE7IGk+PTA7IGktLSkgeworICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgcCA9IChBY3Rpdml0eVJlY29yZCltSGlzdG9yeS5nZXQoaSk7CisgICAgICAgICAgICBpZiAoIXAuZmluaXNoaW5nICYmIHAgIT0gcikgeworICAgICAgICAgICAgICAgIGxhc3RBY3Rpdml0eSA9IGZhbHNlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBJZiB0aGlzIGlzIHRoZSBsYXN0IGFjdGl2aXR5LCBidXQgaXQgaXMgdGhlIGhvbWUgYWN0aXZpdHksIHRoZW4KKyAgICAgICAgLy8ganVzdCBkb24ndCBmaW5pc2ggaXQuCisgICAgICAgIGlmIChsYXN0QWN0aXZpdHkpIHsKKyAgICAgICAgICAgIGlmIChyLmludGVudC5oYXNDYXRlZ29yeShJbnRlbnQuQ0FURUdPUllfSE9NRSkpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGZpbmlzaEFjdGl2aXR5TG9ja2VkKHIsIGluZGV4LCByZXN1bHRDb2RlLCByZXN1bHREYXRhLCByZWFzb24pOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIFJldHVybnMgdHJ1ZSBpZiB0aGlzIGFjdGl2aXR5IGhhcyBiZWVuIHJlbW92ZWQgZnJvbSB0aGUgaGlzdG9yeQorICAgICAqIGxpc3QsIG9yIGZhbHNlIGlmIGl0IGlzIHN0aWxsIGluIHRoZSBsaXN0IGFuZCB3aWxsIGJlIHJlbW92ZWQgbGF0ZXIuCisgICAgICovCisgICAgZmluYWwgYm9vbGVhbiBmaW5pc2hBY3Rpdml0eUxvY2tlZChBY3Rpdml0eVJlY29yZCByLCBpbnQgaW5kZXgsCisgICAgICAgICAgICBpbnQgcmVzdWx0Q29kZSwgSW50ZW50IHJlc3VsdERhdGEsIFN0cmluZyByZWFzb24pIHsKKyAgICAgICAgaWYgKHIuZmluaXNoaW5nKSB7CisgICAgICAgICAgICBTbG9nLncoVEFHLCAiRHVwbGljYXRlIGZpbmlzaCByZXF1ZXN0IGZvciAiICsgcik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICByLmZpbmlzaGluZyA9IHRydWU7CisgICAgICAgIEV2ZW50TG9nLndyaXRlRXZlbnQoRXZlbnRMb2dUYWdzLkFNX0ZJTklTSF9BQ1RJVklUWSwKKyAgICAgICAgICAgICAgICBTeXN0ZW0uaWRlbnRpdHlIYXNoQ29kZShyKSwKKyAgICAgICAgICAgICAgICByLnRhc2sudGFza0lkLCByLnNob3J0Q29tcG9uZW50TmFtZSwgcmVhc29uKTsKKyAgICAgICAgci50YXNrLm51bUFjdGl2aXRpZXMtLTsKKyAgICAgICAgaWYgKGluZGV4IDwgKG1IaXN0b3J5LnNpemUoKS0xKSkgeworICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgbmV4dCA9IChBY3Rpdml0eVJlY29yZCltSGlzdG9yeS5nZXQoaW5kZXgrMSk7CisgICAgICAgICAgICBpZiAobmV4dC50YXNrID09IHIudGFzaykgeworICAgICAgICAgICAgICAgIGlmIChyLmZyb250T2ZUYXNrKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRoZSBuZXh0IGFjdGl2aXR5IGlzIG5vdyB0aGUgZnJvbnQgb2YgdGhlIHRhc2suCisgICAgICAgICAgICAgICAgICAgIG5leHQuZnJvbnRPZlRhc2sgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoKHIuaW50ZW50LmdldEZsYWdzKCkmSW50ZW50LkZMQUdfQUNUSVZJVFlfQ0xFQVJfV0hFTl9UQVNLX1JFU0VUKSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIElmIHRoZSBjYWxsZXIgYXNrZWQgdGhhdCB0aGlzIGFjdGl2aXR5IChhbmQgYWxsIGFib3ZlIGl0KQorICAgICAgICAgICAgICAgICAgICAvLyBiZSBjbGVhcmVkIHdoZW4gdGhlIHRhc2sgaXMgcmVzZXQsIGRvbid0IGxvc2UgdGhhdCBpbmZvcm1hdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgLy8gYnV0IHByb3BhZ2F0ZSBpdCB1cCB0byB0aGUgbmV4dCBhY3Rpdml0eS4KKyAgICAgICAgICAgICAgICAgICAgbmV4dC5pbnRlbnQuYWRkRmxhZ3MoSW50ZW50LkZMQUdfQUNUSVZJVFlfQ0xFQVJfV0hFTl9UQVNLX1JFU0VUKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICByLnBhdXNlS2V5RGlzcGF0Y2hpbmdMb2NrZWQoKTsKKyAgICAgICAgaWYgKG1NYWluU3RhY2spIHsKKyAgICAgICAgICAgIGlmIChtU2VydmljZS5tRm9jdXNlZEFjdGl2aXR5ID09IHIpIHsKKyAgICAgICAgICAgICAgICBtU2VydmljZS5zZXRGb2N1c2VkQWN0aXZpdHlMb2NrZWQodG9wUnVubmluZ0FjdGl2aXR5TG9ja2VkKG51bGwpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIC8vIHNlbmQgdGhlIHJlc3VsdAorICAgICAgICBBY3Rpdml0eVJlY29yZCByZXN1bHRUbyA9IHIucmVzdWx0VG87CisgICAgICAgIGlmIChyZXN1bHRUbyAhPSBudWxsKSB7CisgICAgICAgICAgICBpZiAoREVCVUdfUkVTVUxUUykgU2xvZy52KFRBRywgIkFkZGluZyByZXN1bHQgdG8gIiArIHJlc3VsdFRvCisgICAgICAgICAgICAgICAgICAgICsgIiB3aG89IiArIHIucmVzdWx0V2hvICsgIiByZXE9IiArIHIucmVxdWVzdENvZGUKKyAgICAgICAgICAgICAgICAgICAgKyAiIHJlcz0iICsgcmVzdWx0Q29kZSArICIgZGF0YT0iICsgcmVzdWx0RGF0YSk7CisgICAgICAgICAgICBpZiAoci5pbmZvLmFwcGxpY2F0aW9uSW5mby51aWQgPiAwKSB7CisgICAgICAgICAgICAgICAgbVNlcnZpY2UuZ3JhbnRVcmlQZXJtaXNzaW9uRnJvbUludGVudExvY2tlZChyLmluZm8uYXBwbGljYXRpb25JbmZvLnVpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHIucGFja2FnZU5hbWUsIHJlc3VsdERhdGEsIHIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmVzdWx0VG8uYWRkUmVzdWx0TG9ja2VkKHIsIHIucmVzdWx0V2hvLCByLnJlcXVlc3RDb2RlLCByZXN1bHRDb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdERhdGEpOworICAgICAgICAgICAgci5yZXN1bHRUbyA9IG51bGw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoREVCVUdfUkVTVUxUUykgU2xvZy52KFRBRywgIk5vIHJlc3VsdCBkZXN0aW5hdGlvbiBmcm9tICIgKyByKTsKKworICAgICAgICAvLyBNYWtlIHN1cmUgdGhpcyBIaXN0b3J5UmVjb3JkIGlzIG5vdCBob2xkaW5nIG9uIHRvIG90aGVyIHJlc291cmNlcywKKyAgICAgICAgLy8gYmVjYXVzZSBjbGllbnRzIGhhdmUgcmVtb3RlIElQQyByZWZlcmVuY2VzIHRvIHRoaXMgb2JqZWN0IHNvIHdlCisgICAgICAgIC8vIGNhbid0IGFzc3VtZSB0aGF0IHdpbGwgZ28gYXdheSBhbmQgd2FudCB0byBhdm9pZCBjaXJjdWxhciBJUEMgcmVmcy4KKyAgICAgICAgci5yZXN1bHRzID0gbnVsbDsKKyAgICAgICAgci5wZW5kaW5nUmVzdWx0cyA9IG51bGw7CisgICAgICAgIHIubmV3SW50ZW50cyA9IG51bGw7CisgICAgICAgIHIuaWNpY2xlID0gbnVsbDsKKyAgICAgICAgCisgICAgICAgIGlmIChtU2VydmljZS5tUGVuZGluZ1RodW1ibmFpbHMuc2l6ZSgpID4gMCkgeworICAgICAgICAgICAgLy8gVGhlcmUgYXJlIGNsaWVudHMgd2FpdGluZyB0byByZWNlaXZlIHRodW1ibmFpbHMgc28sIGluIGNhc2UKKyAgICAgICAgICAgIC8vIHRoaXMgaXMgYW4gYWN0aXZpdHkgdGhhdCBzb21lb25lIGlzIHdhaXRpbmcgZm9yLCBhZGQgaXQKKyAgICAgICAgICAgIC8vIHRvIHRoZSBwZW5kaW5nIGxpc3Qgc28gd2UgY2FuIGNvcnJlY3RseSB1cGRhdGUgdGhlIGNsaWVudHMuCisgICAgICAgICAgICBtU2VydmljZS5tQ2FuY2VsbGVkVGh1bWJuYWlscy5hZGQocik7CisgICAgICAgIH0KKworICAgICAgICBpZiAobVJlc3VtZWRBY3Rpdml0eSA9PSByKSB7CisgICAgICAgICAgICBib29sZWFuIGVuZFRhc2sgPSBpbmRleCA8PSAwCisgICAgICAgICAgICAgICAgICAgIHx8ICgoQWN0aXZpdHlSZWNvcmQpbUhpc3RvcnkuZ2V0KGluZGV4LTEpKS50YXNrICE9IHIudGFzazsKKyAgICAgICAgICAgIGlmIChERUJVR19UUkFOU0lUSU9OKSBTbG9nLnYoVEFHLAorICAgICAgICAgICAgICAgICAgICAiUHJlcGFyZSBjbG9zZSB0cmFuc2l0aW9uOiBmaW5pc2hpbmcgIiArIHIpOworICAgICAgICAgICAgbVNlcnZpY2UubVdpbmRvd01hbmFnZXIucHJlcGFyZUFwcFRyYW5zaXRpb24oZW5kVGFzaworICAgICAgICAgICAgICAgICAgICA/IFdpbmRvd01hbmFnZXJQb2xpY3kuVFJBTlNJVF9UQVNLX0NMT1NFCisgICAgICAgICAgICAgICAgICAgIDogV2luZG93TWFuYWdlclBvbGljeS5UUkFOU0lUX0FDVElWSVRZX0NMT1NFKTsKKyAgICAKKyAgICAgICAgICAgIC8vIFRlbGwgd2luZG93IG1hbmFnZXIgdG8gcHJlcGFyZSBmb3IgdGhpcyBvbmUgdG8gYmUgcmVtb3ZlZC4KKyAgICAgICAgICAgIG1TZXJ2aWNlLm1XaW5kb3dNYW5hZ2VyLnNldEFwcFZpc2liaWxpdHkociwgZmFsc2UpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKG1QYXVzaW5nQWN0aXZpdHkgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGlmIChERUJVR19QQVVTRSkgU2xvZy52KFRBRywgIkZpbmlzaCBuZWVkcyB0byBwYXVzZTogIiArIHIpOworICAgICAgICAgICAgICAgIGlmIChERUJVR19VU0VSX0xFQVZJTkcpIFNsb2cudihUQUcsICJmaW5pc2goKSA9PiBwYXVzZSB3aXRoIHVzZXJMZWF2aW5nPWZhbHNlIik7CisgICAgICAgICAgICAgICAgc3RhcnRQYXVzaW5nTG9ja2VkKGZhbHNlLCBmYWxzZSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgfSBlbHNlIGlmIChyLnN0YXRlICE9IEFjdGl2aXR5U3RhdGUuUEFVU0lORykgeworICAgICAgICAgICAgLy8gSWYgdGhlIGFjdGl2aXR5IGlzIFBBVVNJTkcsIHdlIHdpbGwgY29tcGxldGUgdGhlIGZpbmlzaCBvbmNlCisgICAgICAgICAgICAvLyBpdCBpcyBkb25lIHBhdXNpbmc7IGVsc2Ugd2UgY2FuIGp1c3QgZGlyZWN0bHkgZmluaXNoIGl0IGhlcmUuCisgICAgICAgICAgICBpZiAoREVCVUdfUEFVU0UpIFNsb2cudihUQUcsICJGaW5pc2ggbm90IHBhdXNpbmc6ICIgKyByKTsKKyAgICAgICAgICAgIHJldHVybiBmaW5pc2hDdXJyZW50QWN0aXZpdHlMb2NrZWQociwgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgIEZJTklTSF9BRlRFUl9QQVVTRSkgPT0gbnVsbDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChERUJVR19QQVVTRSkgU2xvZy52KFRBRywgIkZpbmlzaCB3YWl0aW5nIGZvciBwYXVzZSBvZjogIiArIHIpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBGSU5JU0hfSU1NRURJQVRFTFkgPSAwOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBGSU5JU0hfQUZURVJfUEFVU0UgPSAxOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBGSU5JU0hfQUZURVJfVklTSUJMRSA9IDI7CisKKyAgICBwcml2YXRlIGZpbmFsIEFjdGl2aXR5UmVjb3JkIGZpbmlzaEN1cnJlbnRBY3Rpdml0eUxvY2tlZChBY3Rpdml0eVJlY29yZCByLAorICAgICAgICAgICAgaW50IG1vZGUpIHsKKyAgICAgICAgZmluYWwgaW50IGluZGV4ID0gaW5kZXhPZlRva2VuTG9ja2VkKHIpOworICAgICAgICBpZiAoaW5kZXggPCAwKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBmaW5pc2hDdXJyZW50QWN0aXZpdHlMb2NrZWQociwgaW5kZXgsIG1vZGUpOworICAgIH0KKworICAgIHByaXZhdGUgZmluYWwgQWN0aXZpdHlSZWNvcmQgZmluaXNoQ3VycmVudEFjdGl2aXR5TG9ja2VkKEFjdGl2aXR5UmVjb3JkIHIsCisgICAgICAgICAgICBpbnQgaW5kZXgsIGludCBtb2RlKSB7CisgICAgICAgIC8vIEZpcnN0IHRoaW5ncyBmaXJzdDogaWYgdGhpcyBhY3Rpdml0eSBpcyBjdXJyZW50bHkgdmlzaWJsZSwKKyAgICAgICAgLy8gYW5kIHRoZSByZXN1bWVkIGFjdGl2aXR5IGlzIG5vdCB5ZXQgdmlzaWJsZSwgdGhlbiBob2xkIG9mZiBvbgorICAgICAgICAvLyBmaW5pc2hpbmcgdW50aWwgdGhlIHJlc3VtZWQgb25lIGJlY29tZXMgdmlzaWJsZS4KKyAgICAgICAgaWYgKG1vZGUgPT0gRklOSVNIX0FGVEVSX1ZJU0lCTEUgJiYgci5ub3dWaXNpYmxlKSB7CisgICAgICAgICAgICBpZiAoIW1TdG9wcGluZ0FjdGl2aXRpZXMuY29udGFpbnMocikpIHsKKyAgICAgICAgICAgICAgICBtU3RvcHBpbmdBY3Rpdml0aWVzLmFkZChyKTsKKyAgICAgICAgICAgICAgICBpZiAobVN0b3BwaW5nQWN0aXZpdGllcy5zaXplKCkgPiAzKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIElmIHdlIGFscmVhZHkgaGF2ZSBhIGZldyBhY3Rpdml0aWVzIHdhaXRpbmcgdG8gc3RvcCwKKyAgICAgICAgICAgICAgICAgICAgLy8gdGhlbiBnaXZlIHVwIG9uIHRoaW5ncyBnb2luZyBpZGxlIGFuZCBzdGFydCBjbGVhcmluZworICAgICAgICAgICAgICAgICAgICAvLyB0aGVtIG91dC4KKyAgICAgICAgICAgICAgICAgICAgTWVzc2FnZSBtc2cgPSBNZXNzYWdlLm9idGFpbigpOworICAgICAgICAgICAgICAgICAgICBtc2cud2hhdCA9IElETEVfTk9XX01TRzsKKyAgICAgICAgICAgICAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2UobXNnKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByLnN0YXRlID0gQWN0aXZpdHlTdGF0ZS5TVE9QUElORzsKKyAgICAgICAgICAgIG1TZXJ2aWNlLnVwZGF0ZU9vbUFkakxvY2tlZCgpOworICAgICAgICAgICAgcmV0dXJuIHI7CisgICAgICAgIH0KKworICAgICAgICAvLyBtYWtlIHN1cmUgdGhlIHJlY29yZCBpcyBjbGVhbmVkIG91dCBvZiBvdGhlciBwbGFjZXMuCisgICAgICAgIG1TdG9wcGluZ0FjdGl2aXRpZXMucmVtb3ZlKHIpOworICAgICAgICBtV2FpdGluZ1Zpc2libGVBY3Rpdml0aWVzLnJlbW92ZShyKTsKKyAgICAgICAgaWYgKG1SZXN1bWVkQWN0aXZpdHkgPT0gcikgeworICAgICAgICAgICAgbVJlc3VtZWRBY3Rpdml0eSA9IG51bGw7CisgICAgICAgIH0KKyAgICAgICAgZmluYWwgQWN0aXZpdHlTdGF0ZSBwcmV2U3RhdGUgPSByLnN0YXRlOworICAgICAgICByLnN0YXRlID0gQWN0aXZpdHlTdGF0ZS5GSU5JU0hJTkc7CisKKyAgICAgICAgaWYgKG1vZGUgPT0gRklOSVNIX0lNTUVESUFURUxZCisgICAgICAgICAgICAgICAgfHwgcHJldlN0YXRlID09IEFjdGl2aXR5U3RhdGUuU1RPUFBFRAorICAgICAgICAgICAgICAgIHx8IHByZXZTdGF0ZSA9PSBBY3Rpdml0eVN0YXRlLklOSVRJQUxJWklORykgeworICAgICAgICAgICAgLy8gSWYgdGhpcyBhY3Rpdml0eSBpcyBhbHJlYWR5IHN0b3BwZWQsIHdlIGNhbiBqdXN0IGZpbmlzaAorICAgICAgICAgICAgLy8gaXQgcmlnaHQgbm93LgorICAgICAgICAgICAgcmV0dXJuIGRlc3Ryb3lBY3Rpdml0eUxvY2tlZChyLCB0cnVlKSA/IG51bGwgOiByOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gTmVlZCB0byBnbyB0aHJvdWdoIHRoZSBmdWxsIHBhdXNlIGN5Y2xlIHRvIGdldCB0aGlzCisgICAgICAgICAgICAvLyBhY3Rpdml0eSBpbnRvIHRoZSBzdG9wcGVkIHN0YXRlIGFuZCB0aGVuIGZpbmlzaCBpdC4KKyAgICAgICAgICAgIGlmIChsb2NhbExPR1YpIFNsb2cudihUQUcsICJFbnF1ZXVlaW5nIHBlbmRpbmcgZmluaXNoOiAiICsgcik7CisgICAgICAgICAgICBtRmluaXNoaW5nQWN0aXZpdGllcy5hZGQocik7CisgICAgICAgICAgICByZXN1bWVUb3BBY3Rpdml0eUxvY2tlZChudWxsKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcjsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBQZXJmb3JtIHRoZSBjb21tb24gY2xlYW4tdXAgb2YgYW4gYWN0aXZpdHkgcmVjb3JkLiAgVGhpcyBpcyBjYWxsZWQgYm90aAorICAgICAqIGFzIHBhcnQgb2YgZGVzdHJveUFjdGl2aXR5TG9ja2VkKCkgKHdoZW4gZGVzdHJveWluZyB0aGUgY2xpZW50LXNpZGUKKyAgICAgKiByZXByZXNlbnRhdGlvbikgYW5kIGNsZWFuaW5nIHRoaW5ncyB1cCBhcyBhIHJlc3VsdCBvZiBpdHMgaG9zdGluZworICAgICAqIHByb2Nlc3NpbmcgZ29pbmcgYXdheSwgaW4gd2hpY2ggY2FzZSB0aGVyZSBpcyBubyByZW1haW5pbmcgY2xpZW50LXNpZGUKKyAgICAgKiBzdGF0ZSB0byBkZXN0cm95IHNvIG9ubHkgdGhlIGNsZWFudXAgaGVyZSBpcyBuZWVkZWQuCisgICAgICovCisgICAgZmluYWwgdm9pZCBjbGVhblVwQWN0aXZpdHlMb2NrZWQoQWN0aXZpdHlSZWNvcmQgciwgYm9vbGVhbiBjbGVhblNlcnZpY2VzKSB7CisgICAgICAgIGlmIChtUmVzdW1lZEFjdGl2aXR5ID09IHIpIHsKKyAgICAgICAgICAgIG1SZXN1bWVkQWN0aXZpdHkgPSBudWxsOworICAgICAgICB9CisgICAgICAgIGlmIChtU2VydmljZS5tRm9jdXNlZEFjdGl2aXR5ID09IHIpIHsKKyAgICAgICAgICAgIG1TZXJ2aWNlLm1Gb2N1c2VkQWN0aXZpdHkgPSBudWxsOworICAgICAgICB9CisKKyAgICAgICAgci5jb25maWdEZXN0cm95ID0gZmFsc2U7CisgICAgICAgIHIuZnJvemVuQmVmb3JlRGVzdHJveSA9IGZhbHNlOworCisgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGlzIHJlY29yZCBpcyBubyBsb25nZXIgaW4gdGhlIHBlbmRpbmcgZmluaXNoZXMgbGlzdC4KKyAgICAgICAgLy8gVGhpcyBjb3VsZCBoYXBwZW4sIGZvciBleGFtcGxlLCBpZiB3ZSBhcmUgdHJpbW1pbmcgYWN0aXZpdGllcworICAgICAgICAvLyBkb3duIHRvIHRoZSBtYXggbGltaXQgd2hpbGUgdGhleSBhcmUgc3RpbGwgd2FpdGluZyB0byBmaW5pc2guCisgICAgICAgIG1GaW5pc2hpbmdBY3Rpdml0aWVzLnJlbW92ZShyKTsKKyAgICAgICAgbVdhaXRpbmdWaXNpYmxlQWN0aXZpdGllcy5yZW1vdmUocik7CisgICAgICAgIAorICAgICAgICAvLyBSZW1vdmUgYW55IHBlbmRpbmcgcmVzdWx0cy4KKyAgICAgICAgaWYgKHIuZmluaXNoaW5nICYmIHIucGVuZGluZ1Jlc3VsdHMgIT0gbnVsbCkgeworICAgICAgICAgICAgZm9yIChXZWFrUmVmZXJlbmNlPFBlbmRpbmdJbnRlbnRSZWNvcmQ+IGFwciA6IHIucGVuZGluZ1Jlc3VsdHMpIHsKKyAgICAgICAgICAgICAgICBQZW5kaW5nSW50ZW50UmVjb3JkIHJlYyA9IGFwci5nZXQoKTsKKyAgICAgICAgICAgICAgICBpZiAocmVjICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2UuY2FuY2VsSW50ZW50U2VuZGVyTG9ja2VkKHJlYywgZmFsc2UpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHIucGVuZGluZ1Jlc3VsdHMgPSBudWxsOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGNsZWFuU2VydmljZXMpIHsKKyAgICAgICAgICAgIGNsZWFuVXBBY3Rpdml0eVNlcnZpY2VzTG9ja2VkKHIpOyAgICAgICAgICAgIAorICAgICAgICB9CisKKyAgICAgICAgaWYgKG1TZXJ2aWNlLm1QZW5kaW5nVGh1bWJuYWlscy5zaXplKCkgPiAwKSB7CisgICAgICAgICAgICAvLyBUaGVyZSBhcmUgY2xpZW50cyB3YWl0aW5nIHRvIHJlY2VpdmUgdGh1bWJuYWlscyBzbywgaW4gY2FzZQorICAgICAgICAgICAgLy8gdGhpcyBpcyBhbiBhY3Rpdml0eSB0aGF0IHNvbWVvbmUgaXMgd2FpdGluZyBmb3IsIGFkZCBpdAorICAgICAgICAgICAgLy8gdG8gdGhlIHBlbmRpbmcgbGlzdCBzbyB3ZSBjYW4gY29ycmVjdGx5IHVwZGF0ZSB0aGUgY2xpZW50cy4KKyAgICAgICAgICAgIG1TZXJ2aWNlLm1DYW5jZWxsZWRUaHVtYm5haWxzLmFkZChyKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIEdldCByaWQgb2YgYW55IHBlbmRpbmcgaWRsZSB0aW1lb3V0cy4KKyAgICAgICAgbUhhbmRsZXIucmVtb3ZlTWVzc2FnZXMoUEFVU0VfVElNRU9VVF9NU0csIHIpOworICAgICAgICBtSGFuZGxlci5yZW1vdmVNZXNzYWdlcyhJRExFX1RJTUVPVVRfTVNHLCByKTsKKyAgICB9CisKKyAgICBwcml2YXRlIGZpbmFsIHZvaWQgcmVtb3ZlQWN0aXZpdHlGcm9tSGlzdG9yeUxvY2tlZChBY3Rpdml0eVJlY29yZCByKSB7CisgICAgICAgIGlmIChyLnN0YXRlICE9IEFjdGl2aXR5U3RhdGUuREVTVFJPWUVEKSB7CisgICAgICAgICAgICBtSGlzdG9yeS5yZW1vdmUocik7CisgICAgICAgICAgICByLmluSGlzdG9yeSA9IGZhbHNlOworICAgICAgICAgICAgci5zdGF0ZSA9IEFjdGl2aXR5U3RhdGUuREVTVFJPWUVEOworICAgICAgICAgICAgbVNlcnZpY2UubVdpbmRvd01hbmFnZXIucmVtb3ZlQXBwVG9rZW4ocik7CisgICAgICAgICAgICBpZiAoVkFMSURBVEVfVE9LRU5TKSB7CisgICAgICAgICAgICAgICAgbVNlcnZpY2UubVdpbmRvd01hbmFnZXIudmFsaWRhdGVBcHBUb2tlbnMobUhpc3RvcnkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgY2xlYW5VcEFjdGl2aXR5U2VydmljZXNMb2NrZWQocik7CisgICAgICAgICAgICByLnJlbW92ZVVyaVBlcm1pc3Npb25zTG9ja2VkKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgLyoqCisgICAgICogUGVyZm9ybSBjbGVhbi11cCBvZiBzZXJ2aWNlIGNvbm5lY3Rpb25zIGluIGFuIGFjdGl2aXR5IHJlY29yZC4KKyAgICAgKi8KKyAgICBmaW5hbCB2b2lkIGNsZWFuVXBBY3Rpdml0eVNlcnZpY2VzTG9ja2VkKEFjdGl2aXR5UmVjb3JkIHIpIHsKKyAgICAgICAgLy8gVGhyb3cgYXdheSBhbnkgc2VydmljZXMgdGhhdCBoYXZlIGJlZW4gYm91bmQgYnkgdGhpcyBhY3Rpdml0eS4KKyAgICAgICAgaWYgKHIuY29ubmVjdGlvbnMgIT0gbnVsbCkgeworICAgICAgICAgICAgSXRlcmF0b3I8Q29ubmVjdGlvblJlY29yZD4gaXQgPSByLmNvbm5lY3Rpb25zLml0ZXJhdG9yKCk7CisgICAgICAgICAgICB3aGlsZSAoaXQuaGFzTmV4dCgpKSB7CisgICAgICAgICAgICAgICAgQ29ubmVjdGlvblJlY29yZCBjID0gaXQubmV4dCgpOworICAgICAgICAgICAgICAgIG1TZXJ2aWNlLnJlbW92ZUNvbm5lY3Rpb25Mb2NrZWQoYywgbnVsbCwgcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByLmNvbm5lY3Rpb25zID0gbnVsbDsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICAvKioKKyAgICAgKiBEZXN0cm95IHRoZSBjdXJyZW50IENMSUVOVCBTSURFIGluc3RhbmNlIG9mIGFuIGFjdGl2aXR5LiAgVGhpcyBtYXkgYmUKKyAgICAgKiBjYWxsZWQgYm90aCB3aGVuIGFjdHVhbGx5IGZpbmlzaGluZyBhbiBhY3Rpdml0eSwgb3Igd2hlbiBwZXJmb3JtaW5nCisgICAgICogYSBjb25maWd1cmF0aW9uIHN3aXRjaCB3aGVyZSB3ZSBkZXN0cm95IHRoZSBjdXJyZW50IGNsaWVudC1zaWRlIG9iamVjdAorICAgICAqIGJ1dCB0aGVuIGNyZWF0ZSBhIG5ldyBjbGllbnQtc2lkZSBvYmplY3QgZm9yIHRoaXMgc2FtZSBIaXN0b3J5UmVjb3JkLgorICAgICAqLworICAgIGZpbmFsIGJvb2xlYW4gZGVzdHJveUFjdGl2aXR5TG9ja2VkKEFjdGl2aXR5UmVjb3JkIHIsCisgICAgICAgICAgICBib29sZWFuIHJlbW92ZUZyb21BcHApIHsKKyAgICAgICAgaWYgKERFQlVHX1NXSVRDSCkgU2xvZy52KAorICAgICAgICAgICAgVEFHLCAiUmVtb3ZpbmcgYWN0aXZpdHk6IHRva2VuPSIgKyByCisgICAgICAgICAgICAgICsgIiwgYXBwPSIgKyAoci5hcHAgIT0gbnVsbCA/IHIuYXBwLnByb2Nlc3NOYW1lIDogIihudWxsKSIpKTsKKyAgICAgICAgRXZlbnRMb2cud3JpdGVFdmVudChFdmVudExvZ1RhZ3MuQU1fREVTVFJPWV9BQ1RJVklUWSwKKyAgICAgICAgICAgICAgICBTeXN0ZW0uaWRlbnRpdHlIYXNoQ29kZShyKSwKKyAgICAgICAgICAgICAgICByLnRhc2sudGFza0lkLCByLnNob3J0Q29tcG9uZW50TmFtZSk7CisKKyAgICAgICAgYm9vbGVhbiByZW1vdmVkRnJvbUhpc3RvcnkgPSBmYWxzZTsKKyAgICAgICAgCisgICAgICAgIGNsZWFuVXBBY3Rpdml0eUxvY2tlZChyLCBmYWxzZSk7CisKKyAgICAgICAgZmluYWwgYm9vbGVhbiBoYWRBcHAgPSByLmFwcCAhPSBudWxsOworICAgICAgICAKKyAgICAgICAgaWYgKGhhZEFwcCkgeworICAgICAgICAgICAgaWYgKHJlbW92ZUZyb21BcHApIHsKKyAgICAgICAgICAgICAgICBpbnQgaWR4ID0gci5hcHAuYWN0aXZpdGllcy5pbmRleE9mKHIpOworICAgICAgICAgICAgICAgIGlmIChpZHggPj0gMCkgeworICAgICAgICAgICAgICAgICAgICByLmFwcC5hY3Rpdml0aWVzLnJlbW92ZShpZHgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobVNlcnZpY2UubUhlYXZ5V2VpZ2h0UHJvY2VzcyA9PSByLmFwcCAmJiByLmFwcC5hY3Rpdml0aWVzLnNpemUoKSA8PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIG1TZXJ2aWNlLm1IZWF2eVdlaWdodFByb2Nlc3MgPSBudWxsOworICAgICAgICAgICAgICAgICAgICBtU2VydmljZS5tSGFuZGxlci5zZW5kRW1wdHlNZXNzYWdlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5TWFuYWdlclNlcnZpY2UuQ0FOQ0VMX0hFQVZZX05PVElGSUNBVElPTl9NU0cpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoci5wZXJzaXN0ZW50KSB7CisgICAgICAgICAgICAgICAgICAgIG1TZXJ2aWNlLmRlY1BlcnNpc3RlbnRDb3VudExvY2tlZChyLmFwcCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChyLmFwcC5hY3Rpdml0aWVzLnNpemUoKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIE5vIGxvbmdlciBoYXZlIGFjdGl2aXRpZXMsIHNvIHVwZGF0ZSBsb2NhdGlvbiBpbgorICAgICAgICAgICAgICAgICAgICAvLyBMUlUgbGlzdC4KKyAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2UudXBkYXRlTHJ1UHJvY2Vzc0xvY2tlZChyLmFwcCwgdHJ1ZSwgZmFsc2UpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYm9vbGVhbiBza2lwRGVzdHJveSA9IGZhbHNlOworICAgICAgICAgICAgCisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGlmIChERUJVR19TV0lUQ0gpIFNsb2cuaShUQUcsICJEZXN0cm95aW5nOiAiICsgcik7CisgICAgICAgICAgICAgICAgci5hcHAudGhyZWFkLnNjaGVkdWxlRGVzdHJveUFjdGl2aXR5KHIsIHIuZmluaXNoaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgci5jb25maWdDaGFuZ2VGbGFncyk7CisgICAgICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIC8vIFdlIGNhbiBqdXN0IGlnbm9yZSBleGNlcHRpb25zIGhlcmUuLi4gIGlmIHRoZSBwcm9jZXNzCisgICAgICAgICAgICAgICAgLy8gaGFzIGNyYXNoZWQsIG91ciBkZWF0aCBub3RpZmljYXRpb24gd2lsbCBjbGVhbiB0aGluZ3MKKyAgICAgICAgICAgICAgICAvLyB1cC4KKyAgICAgICAgICAgICAgICAvL1Nsb2cudyhUQUcsICJFeGNlcHRpb24gdGhyb3duIGR1cmluZyBmaW5pc2giLCBlKTsKKyAgICAgICAgICAgICAgICBpZiAoci5maW5pc2hpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQWN0aXZpdHlGcm9tSGlzdG9yeUxvY2tlZChyKTsKKyAgICAgICAgICAgICAgICAgICAgcmVtb3ZlZEZyb21IaXN0b3J5ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgc2tpcERlc3Ryb3kgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgci5hcHAgPSBudWxsOworICAgICAgICAgICAgci5ub3dWaXNpYmxlID0gZmFsc2U7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChyLmZpbmlzaGluZyAmJiAhc2tpcERlc3Ryb3kpIHsKKyAgICAgICAgICAgICAgICByLnN0YXRlID0gQWN0aXZpdHlTdGF0ZS5ERVNUUk9ZSU5HOworICAgICAgICAgICAgICAgIE1lc3NhZ2UgbXNnID0gbUhhbmRsZXIub2J0YWluTWVzc2FnZShERVNUUk9ZX1RJTUVPVVRfTVNHKTsKKyAgICAgICAgICAgICAgICBtc2cub2JqID0gcjsKKyAgICAgICAgICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZURlbGF5ZWQobXNnLCBERVNUUk9ZX1RJTUVPVVQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICByLnN0YXRlID0gQWN0aXZpdHlTdGF0ZS5ERVNUUk9ZRUQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyByZW1vdmUgdGhpcyByZWNvcmQgZnJvbSB0aGUgaGlzdG9yeS4KKyAgICAgICAgICAgIGlmIChyLmZpbmlzaGluZykgeworICAgICAgICAgICAgICAgIHJlbW92ZUFjdGl2aXR5RnJvbUhpc3RvcnlMb2NrZWQocik7CisgICAgICAgICAgICAgICAgcmVtb3ZlZEZyb21IaXN0b3J5ID0gdHJ1ZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgci5zdGF0ZSA9IEFjdGl2aXR5U3RhdGUuREVTVFJPWUVEOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgci5jb25maWdDaGFuZ2VGbGFncyA9IDA7CisgICAgICAgIAorICAgICAgICBpZiAoIW1MUlVBY3Rpdml0aWVzLnJlbW92ZShyKSAmJiBoYWRBcHApIHsKKyAgICAgICAgICAgIFNsb2cudyhUQUcsICJBY3Rpdml0eSAiICsgciArICIgYmVpbmcgZmluaXNoZWQsIGJ1dCBub3QgaW4gTFJVIGxpc3QiKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgcmV0dXJuIHJlbW92ZWRGcm9tSGlzdG9yeTsKKyAgICB9CisKKyAgICBmaW5hbCB2b2lkIGFjdGl2aXR5RGVzdHJveWVkKElCaW5kZXIgdG9rZW4pIHsKKyAgICAgICAgc3luY2hyb25pemVkIChtU2VydmljZSkgeworICAgICAgICAgICAgbUhhbmRsZXIucmVtb3ZlTWVzc2FnZXMoREVTVFJPWV9USU1FT1VUX01TRywgdG9rZW4pOworICAgICAgICAgICAgCisgICAgICAgICAgICBpbnQgaW5kZXggPSBpbmRleE9mVG9rZW5Mb2NrZWQodG9rZW4pOworICAgICAgICAgICAgaWYgKGluZGV4ID49IDApIHsKKyAgICAgICAgICAgICAgICBBY3Rpdml0eVJlY29yZCByID0gKEFjdGl2aXR5UmVjb3JkKW1IaXN0b3J5LmdldChpbmRleCk7CisgICAgICAgICAgICAgICAgaWYgKHIuc3RhdGUgPT0gQWN0aXZpdHlTdGF0ZS5ERVNUUk9ZSU5HKSB7CisgICAgICAgICAgICAgICAgICAgIGZpbmFsIGxvbmcgb3JpZ0lkID0gQmluZGVyLmNsZWFyQ2FsbGluZ0lkZW50aXR5KCk7CisgICAgICAgICAgICAgICAgICAgIHJlbW92ZUFjdGl2aXR5RnJvbUhpc3RvcnlMb2NrZWQocik7CisgICAgICAgICAgICAgICAgICAgIEJpbmRlci5yZXN0b3JlQ2FsbGluZ0lkZW50aXR5KG9yaWdJZCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIAorICAgIHByaXZhdGUgc3RhdGljIHZvaWQgcmVtb3ZlSGlzdG9yeVJlY29yZHNGb3JBcHBMb2NrZWQoQXJyYXlMaXN0IGxpc3QsIFByb2Nlc3NSZWNvcmQgYXBwKSB7CisgICAgICAgIGludCBpID0gbGlzdC5zaXplKCk7CisgICAgICAgIGlmIChsb2NhbExPR1YpIFNsb2cudigKKyAgICAgICAgICAgIFRBRywgIlJlbW92aW5nIGFwcCAiICsgYXBwICsgIiBmcm9tIGxpc3QgIiArIGxpc3QKKyAgICAgICAgICAgICsgIiB3aXRoICIgKyBpICsgIiBlbnRyaWVzIik7CisgICAgICAgIHdoaWxlIChpID4gMCkgeworICAgICAgICAgICAgaS0tOworICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IChBY3Rpdml0eVJlY29yZClsaXN0LmdldChpKTsKKyAgICAgICAgICAgIGlmIChsb2NhbExPR1YpIFNsb2cudigKKyAgICAgICAgICAgICAgICBUQUcsICJSZWNvcmQgIyIgKyBpICsgIiAiICsgciArICI6IGFwcD0iICsgci5hcHApOworICAgICAgICAgICAgaWYgKHIuYXBwID09IGFwcCkgeworICAgICAgICAgICAgICAgIGlmIChsb2NhbExPR1YpIFNsb2cudihUQUcsICJSZW1vdmluZyB0aGlzIGVudHJ5ISIpOworICAgICAgICAgICAgICAgIGxpc3QucmVtb3ZlKGkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgdm9pZCByZW1vdmVIaXN0b3J5UmVjb3Jkc0ZvckFwcExvY2tlZChQcm9jZXNzUmVjb3JkIGFwcCkgeworICAgICAgICByZW1vdmVIaXN0b3J5UmVjb3Jkc0ZvckFwcExvY2tlZChtTFJVQWN0aXZpdGllcywgYXBwKTsKKyAgICAgICAgcmVtb3ZlSGlzdG9yeVJlY29yZHNGb3JBcHBMb2NrZWQobVN0b3BwaW5nQWN0aXZpdGllcywgYXBwKTsKKyAgICAgICAgcmVtb3ZlSGlzdG9yeVJlY29yZHNGb3JBcHBMb2NrZWQobVdhaXRpbmdWaXNpYmxlQWN0aXZpdGllcywgYXBwKTsKKyAgICAgICAgcmVtb3ZlSGlzdG9yeVJlY29yZHNGb3JBcHBMb2NrZWQobUZpbmlzaGluZ0FjdGl2aXRpZXMsIGFwcCk7CisgICAgfQorICAgIAorICAgIGZpbmFsIHZvaWQgbW92ZVRhc2tUb0Zyb250TG9ja2VkKFRhc2tSZWNvcmQgdHIsIEFjdGl2aXR5UmVjb3JkIHJlYXNvbikgeworICAgICAgICBpZiAoREVCVUdfU1dJVENIKSBTbG9nLnYoVEFHLCAibW92ZVRhc2tUb0Zyb250OiAiICsgdHIpOworCisgICAgICAgIGZpbmFsIGludCB0YXNrID0gdHIudGFza0lkOworICAgICAgICBpbnQgdG9wID0gbUhpc3Rvcnkuc2l6ZSgpLTE7CisKKyAgICAgICAgaWYgKHRvcCA8IDAgfHwgKChBY3Rpdml0eVJlY29yZCltSGlzdG9yeS5nZXQodG9wKSkudGFzay50YXNrSWQgPT0gdGFzaykgeworICAgICAgICAgICAgLy8gbm90aGluZyB0byBkbyEKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIEFycmF5TGlzdCBtb3ZlZCA9IG5ldyBBcnJheUxpc3QoKTsKKworICAgICAgICAvLyBBcHBseWluZyB0aGUgYWZmaW5pdGllcyBtYXkgaGF2ZSByZW1vdmVkIGVudHJpZXMgZnJvbSB0aGUgaGlzdG9yeSwKKyAgICAgICAgLy8gc28gZ2V0IHRoZSBzaXplIGFnYWluLgorICAgICAgICB0b3AgPSBtSGlzdG9yeS5zaXplKCktMTsKKyAgICAgICAgaW50IHBvcyA9IHRvcDsKKworICAgICAgICAvLyBTaGlmdCBhbGwgYWN0aXZpdGllcyB3aXRoIHRoaXMgdGFzayB1cCB0byB0aGUgdG9wCisgICAgICAgIC8vIG9mIHRoZSBzdGFjaywga2VlcGluZyB0aGVtIGluIHRoZSBzYW1lIGludGVybmFsIG9yZGVyLgorICAgICAgICB3aGlsZSAocG9zID49IDApIHsKKyAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSAoQWN0aXZpdHlSZWNvcmQpbUhpc3RvcnkuZ2V0KHBvcyk7CisgICAgICAgICAgICBpZiAobG9jYWxMT0dWKSBTbG9nLnYoCisgICAgICAgICAgICAgICAgVEFHLCAiQXQgIiArIHBvcyArICIgY2twICIgKyByLnRhc2sgKyAiOiAiICsgcik7CisgICAgICAgICAgICBib29sZWFuIGZpcnN0ID0gdHJ1ZTsKKyAgICAgICAgICAgIGlmIChyLnRhc2sudGFza0lkID09IHRhc2spIHsKKyAgICAgICAgICAgICAgICBpZiAobG9jYWxMT0dWKSBTbG9nLnYoVEFHLCAiUmVtb3ZpbmcgYW5kIGFkZGluZyBhdCAiICsgdG9wKTsKKyAgICAgICAgICAgICAgICBtSGlzdG9yeS5yZW1vdmUocG9zKTsKKyAgICAgICAgICAgICAgICBtSGlzdG9yeS5hZGQodG9wLCByKTsKKyAgICAgICAgICAgICAgICBtb3ZlZC5hZGQoMCwgcik7CisgICAgICAgICAgICAgICAgdG9wLS07CisgICAgICAgICAgICAgICAgaWYgKGZpcnN0ICYmIG1NYWluU3RhY2spIHsKKyAgICAgICAgICAgICAgICAgICAgbVNlcnZpY2UuYWRkUmVjZW50VGFza0xvY2tlZChyLnRhc2spOworICAgICAgICAgICAgICAgICAgICBmaXJzdCA9IGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHBvcy0tOworICAgICAgICB9CisKKyAgICAgICAgaWYgKERFQlVHX1RSQU5TSVRJT04pIFNsb2cudihUQUcsCisgICAgICAgICAgICAgICAgIlByZXBhcmUgdG8gZnJvbnQgdHJhbnNpdGlvbjogdGFzaz0iICsgdHIpOworICAgICAgICBpZiAocmVhc29uICE9IG51bGwgJiYKKyAgICAgICAgICAgICAgICAocmVhc29uLmludGVudC5nZXRGbGFncygpJkludGVudC5GTEFHX0FDVElWSVRZX05PX0FOSU1BVElPTikgIT0gMCkgeworICAgICAgICAgICAgbVNlcnZpY2UubVdpbmRvd01hbmFnZXIucHJlcGFyZUFwcFRyYW5zaXRpb24oV2luZG93TWFuYWdlclBvbGljeS5UUkFOU0lUX05PTkUpOworICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IHRvcFJ1bm5pbmdBY3Rpdml0eUxvY2tlZChudWxsKTsKKyAgICAgICAgICAgIGlmIChyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBtTm9BbmltQWN0aXZpdGllcy5hZGQocik7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtU2VydmljZS5tV2luZG93TWFuYWdlci5wcmVwYXJlQXBwVHJhbnNpdGlvbihXaW5kb3dNYW5hZ2VyUG9saWN5LlRSQU5TSVRfVEFTS19UT19GUk9OVCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIG1TZXJ2aWNlLm1XaW5kb3dNYW5hZ2VyLm1vdmVBcHBUb2tlbnNUb1RvcChtb3ZlZCk7CisgICAgICAgIGlmIChWQUxJREFURV9UT0tFTlMpIHsKKyAgICAgICAgICAgIG1TZXJ2aWNlLm1XaW5kb3dNYW5hZ2VyLnZhbGlkYXRlQXBwVG9rZW5zKG1IaXN0b3J5KTsKKyAgICAgICAgfQorCisgICAgICAgIGZpbmlzaFRhc2tNb3ZlTG9ja2VkKHRhc2spOworICAgICAgICBFdmVudExvZy53cml0ZUV2ZW50KEV2ZW50TG9nVGFncy5BTV9UQVNLX1RPX0ZST05ULCB0YXNrKTsKKyAgICB9CisKKyAgICBwcml2YXRlIGZpbmFsIHZvaWQgZmluaXNoVGFza01vdmVMb2NrZWQoaW50IHRhc2spIHsKKyAgICAgICAgcmVzdW1lVG9wQWN0aXZpdHlMb2NrZWQobnVsbCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogV29ya2VyIG1ldGhvZCBmb3IgcmVhcnJhbmdpbmcgaGlzdG9yeSBzdGFjay4gIEltcGxlbWVudHMgdGhlIGZ1bmN0aW9uIG9mIG1vdmluZyBhbGwgCisgICAgICogYWN0aXZpdGllcyBmb3IgYSBzcGVjaWZpYyB0YXNrIChnYXRoZXJpbmcgdGhlbSBpZiBkaXNqb2ludCkgaW50byBhIHNpbmdsZSBncm91cCBhdCB0aGUgCisgICAgICogYm90dG9tIG9mIHRoZSBzdGFjay4KKyAgICAgKiAKKyAgICAgKiBJZiBhIHdhdGNoZXIgaXMgaW5zdGFsbGVkLCB0aGUgYWN0aW9uIGlzIHByZWZsaWdodGVkIGFuZCB0aGUgd2F0Y2hlciBoYXMgYW4gb3Bwb3J0dW5pdHkKKyAgICAgKiB0byBwcmVtZXB0aXZlbHkgY2FuY2VsIHRoZSBtb3ZlLgorICAgICAqIAorICAgICAqIEBwYXJhbSB0YXNrIFRoZSB0YXNrSWQgdG8gY29sbGVjdCBhbmQgbW92ZSB0byB0aGUgYm90dG9tLgorICAgICAqIEByZXR1cm4gUmV0dXJucyB0cnVlIGlmIHRoZSBtb3ZlIGNvbXBsZXRlZCwgZmFsc2UgaWYgbm90LgorICAgICAqLworICAgIGZpbmFsIGJvb2xlYW4gbW92ZVRhc2tUb0JhY2tMb2NrZWQoaW50IHRhc2ssIEFjdGl2aXR5UmVjb3JkIHJlYXNvbikgeworICAgICAgICBTbG9nLmkoVEFHLCAibW92ZVRhc2tUb0JhY2s6ICIgKyB0YXNrKTsKKyAgICAgICAgCisgICAgICAgIC8vIElmIHdlIGhhdmUgYSB3YXRjaGVyLCBwcmVmbGlnaHQgdGhlIG1vdmUgYmVmb3JlIGNvbW1pdHRpbmcgdG8gaXQuICBGaXJzdCBjaGVjaworICAgICAgICAvLyBmb3IgKm90aGVyKiBhdmFpbGFibGUgdGFza3MsIGJ1dCBpZiBub25lIGFyZSBhdmFpbGFibGUsIHRoZW4gdHJ5IGFnYWluIGFsbG93aW5nIHRoZQorICAgICAgICAvLyBjdXJyZW50IHRhc2sgdG8gYmUgc2VsZWN0ZWQuCisgICAgICAgIGlmIChtTWFpblN0YWNrICYmIG1TZXJ2aWNlLm1Db250cm9sbGVyICE9IG51bGwpIHsKKyAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIG5leHQgPSB0b3BSdW5uaW5nQWN0aXZpdHlMb2NrZWQobnVsbCwgdGFzayk7CisgICAgICAgICAgICBpZiAobmV4dCA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgbmV4dCA9IHRvcFJ1bm5pbmdBY3Rpdml0eUxvY2tlZChudWxsLCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChuZXh0ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAvLyBhc2sgd2F0Y2hlciBpZiB0aGlzIGlzIGFsbG93ZWQKKyAgICAgICAgICAgICAgICBib29sZWFuIG1vdmVPSyA9IHRydWU7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgbW92ZU9LID0gbVNlcnZpY2UubUNvbnRyb2xsZXIuYWN0aXZpdHlSZXN1bWluZyhuZXh0LnBhY2thZ2VOYW1lKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICBtU2VydmljZS5tQ29udHJvbGxlciA9IG51bGw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICghbW92ZU9LKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBBcnJheUxpc3QgbW92ZWQgPSBuZXcgQXJyYXlMaXN0KCk7CisKKyAgICAgICAgaWYgKERFQlVHX1RSQU5TSVRJT04pIFNsb2cudihUQUcsCisgICAgICAgICAgICAgICAgIlByZXBhcmUgdG8gYmFjayB0cmFuc2l0aW9uOiB0YXNrPSIgKyB0YXNrKTsKKyAgICAgICAgCisgICAgICAgIGZpbmFsIGludCBOID0gbUhpc3Rvcnkuc2l6ZSgpOworICAgICAgICBpbnQgYm90dG9tID0gMDsKKyAgICAgICAgaW50IHBvcyA9IDA7CisKKyAgICAgICAgLy8gU2hpZnQgYWxsIGFjdGl2aXRpZXMgd2l0aCB0aGlzIHRhc2sgZG93biB0byB0aGUgYm90dG9tCisgICAgICAgIC8vIG9mIHRoZSBzdGFjaywga2VlcGluZyB0aGVtIGluIHRoZSBzYW1lIGludGVybmFsIG9yZGVyLgorICAgICAgICB3aGlsZSAocG9zIDwgTikgeworICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IChBY3Rpdml0eVJlY29yZCltSGlzdG9yeS5nZXQocG9zKTsKKyAgICAgICAgICAgIGlmIChsb2NhbExPR1YpIFNsb2cudigKKyAgICAgICAgICAgICAgICBUQUcsICJBdCAiICsgcG9zICsgIiBja3AgIiArIHIudGFzayArICI6ICIgKyByKTsKKyAgICAgICAgICAgIGlmIChyLnRhc2sudGFza0lkID09IHRhc2spIHsKKyAgICAgICAgICAgICAgICBpZiAobG9jYWxMT0dWKSBTbG9nLnYoVEFHLCAiUmVtb3ZpbmcgYW5kIGFkZGluZyBhdCAiICsgKE4tMSkpOworICAgICAgICAgICAgICAgIG1IaXN0b3J5LnJlbW92ZShwb3MpOworICAgICAgICAgICAgICAgIG1IaXN0b3J5LmFkZChib3R0b20sIHIpOworICAgICAgICAgICAgICAgIG1vdmVkLmFkZChyKTsKKyAgICAgICAgICAgICAgICBib3R0b20rKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHBvcysrOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHJlYXNvbiAhPSBudWxsICYmCisgICAgICAgICAgICAgICAgKHJlYXNvbi5pbnRlbnQuZ2V0RmxhZ3MoKSZJbnRlbnQuRkxBR19BQ1RJVklUWV9OT19BTklNQVRJT04pICE9IDApIHsKKyAgICAgICAgICAgIG1TZXJ2aWNlLm1XaW5kb3dNYW5hZ2VyLnByZXBhcmVBcHBUcmFuc2l0aW9uKFdpbmRvd01hbmFnZXJQb2xpY3kuVFJBTlNJVF9OT05FKTsKKyAgICAgICAgICAgIEFjdGl2aXR5UmVjb3JkIHIgPSB0b3BSdW5uaW5nQWN0aXZpdHlMb2NrZWQobnVsbCk7CisgICAgICAgICAgICBpZiAociAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgbU5vQW5pbUFjdGl2aXRpZXMuYWRkKHIpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbVNlcnZpY2UubVdpbmRvd01hbmFnZXIucHJlcGFyZUFwcFRyYW5zaXRpb24oV2luZG93TWFuYWdlclBvbGljeS5UUkFOU0lUX1RBU0tfVE9fQkFDSyk7CisgICAgICAgIH0KKyAgICAgICAgbVNlcnZpY2UubVdpbmRvd01hbmFnZXIubW92ZUFwcFRva2Vuc1RvQm90dG9tKG1vdmVkKTsKKyAgICAgICAgaWYgKFZBTElEQVRFX1RPS0VOUykgeworICAgICAgICAgICAgbVNlcnZpY2UubVdpbmRvd01hbmFnZXIudmFsaWRhdGVBcHBUb2tlbnMobUhpc3RvcnkpOworICAgICAgICB9CisKKyAgICAgICAgZmluaXNoVGFza01vdmVMb2NrZWQodGFzayk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIGZpbmFsIHZvaWQgbG9nU3RhcnRBY3Rpdml0eShpbnQgdGFnLCBBY3Rpdml0eVJlY29yZCByLAorICAgICAgICAgICAgVGFza1JlY29yZCB0YXNrKSB7CisgICAgICAgIEV2ZW50TG9nLndyaXRlRXZlbnQodGFnLAorICAgICAgICAgICAgICAgIFN5c3RlbS5pZGVudGl0eUhhc2hDb2RlKHIpLCB0YXNrLnRhc2tJZCwKKyAgICAgICAgICAgICAgICByLnNob3J0Q29tcG9uZW50TmFtZSwgci5pbnRlbnQuZ2V0QWN0aW9uKCksCisgICAgICAgICAgICAgICAgci5pbnRlbnQuZ2V0VHlwZSgpLCByLmludGVudC5nZXREYXRhU3RyaW5nKCksCisgICAgICAgICAgICAgICAgci5pbnRlbnQuZ2V0RmxhZ3MoKSk7CisgICAgfQorCisgICAgLyoqCisgICAgICogTWFrZSBzdXJlIHRoZSBnaXZlbiBhY3Rpdml0eSBtYXRjaGVzIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24uICBSZXR1cm5zCisgICAgICogZmFsc2UgaWYgdGhlIGFjdGl2aXR5IGhhZCB0byBiZSBkZXN0cm95ZWQuICBSZXR1cm5zIHRydWUgaWYgdGhlCisgICAgICogY29uZmlndXJhdGlvbiBpcyB0aGUgc2FtZSwgb3IgdGhlIGFjdGl2aXR5IHdpbGwgcmVtYWluIHJ1bm5pbmcgYXMtaXMKKyAgICAgKiBmb3Igd2hhdGV2ZXIgcmVhc29uLiAgRW5zdXJlcyB0aGUgSGlzdG9yeVJlY29yZCBpcyB1cGRhdGVkIHdpdGggdGhlCisgICAgICogY29ycmVjdCBjb25maWd1cmF0aW9uIGFuZCBhbGwgb3RoZXIgYm9va2tlZXBpbmcgaXMgaGFuZGxlZC4KKyAgICAgKi8KKyAgICBmaW5hbCBib29sZWFuIGVuc3VyZUFjdGl2aXR5Q29uZmlndXJhdGlvbkxvY2tlZChBY3Rpdml0eVJlY29yZCByLAorICAgICAgICAgICAgaW50IGdsb2JhbENoYW5nZXMpIHsKKyAgICAgICAgaWYgKG1Db25maWdXaWxsQ2hhbmdlKSB7CisgICAgICAgICAgICBpZiAoREVCVUdfU1dJVENIIHx8IERFQlVHX0NPTkZJR1VSQVRJT04pIFNsb2cudihUQUcsCisgICAgICAgICAgICAgICAgICAgICJTa2lwcGluZyBjb25maWcgY2hlY2sgKHdpbGwgY2hhbmdlKTogIiArIHIpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChERUJVR19TV0lUQ0ggfHwgREVCVUdfQ09ORklHVVJBVElPTikgU2xvZy52KFRBRywKKyAgICAgICAgICAgICAgICAiRW5zdXJpbmcgY29ycmVjdCBjb25maWd1cmF0aW9uOiAiICsgcik7CisgICAgICAgIAorICAgICAgICAvLyBTaG9ydCBjaXJjdWl0OiBpZiB0aGUgdHdvIGNvbmZpZ3VyYXRpb25zIGFyZSB0aGUgZXhhY3Qgc2FtZQorICAgICAgICAvLyBvYmplY3QgKHRoZSBjb21tb24gY2FzZSksIHRoZW4gdGhlcmUgaXMgbm90aGluZyB0byBkby4KKyAgICAgICAgQ29uZmlndXJhdGlvbiBuZXdDb25maWcgPSBtU2VydmljZS5tQ29uZmlndXJhdGlvbjsKKyAgICAgICAgaWYgKHIuY29uZmlndXJhdGlvbiA9PSBuZXdDb25maWcpIHsKKyAgICAgICAgICAgIGlmIChERUJVR19TV0lUQ0ggfHwgREVCVUdfQ09ORklHVVJBVElPTikgU2xvZy52KFRBRywKKyAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ3VyYXRpb24gdW5jaGFuZ2VkIGluICIgKyByKTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvLyBXZSBkb24ndCB3b3JyeSBhYm91dCBhY3Rpdml0aWVzIHRoYXQgYXJlIGZpbmlzaGluZy4KKyAgICAgICAgaWYgKHIuZmluaXNoaW5nKSB7CisgICAgICAgICAgICBpZiAoREVCVUdfU1dJVENIIHx8IERFQlVHX0NPTkZJR1VSQVRJT04pIFNsb2cudihUQUcsCisgICAgICAgICAgICAgICAgICAgICJDb25maWd1cmF0aW9uIGRvZXNuJ3QgbWF0dGVyIGluIGZpbmlzaGluZyAiICsgcik7CisgICAgICAgICAgICByLnN0b3BGcmVlemluZ1NjcmVlbkxvY2tlZChmYWxzZSk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gT2theSB3ZSBub3cgYXJlIGdvaW5nIHRvIG1ha2UgdGhpcyBhY3Rpdml0eSBoYXZlIHRoZSBuZXcgY29uZmlnLgorICAgICAgICAvLyBCdXQgdGhlbiB3ZSBuZWVkIHRvIGZpZ3VyZSBvdXQgaG93IGl0IG5lZWRzIHRvIGRlYWwgd2l0aCB0aGF0LgorICAgICAgICBDb25maWd1cmF0aW9uIG9sZENvbmZpZyA9IHIuY29uZmlndXJhdGlvbjsKKyAgICAgICAgci5jb25maWd1cmF0aW9uID0gbmV3Q29uZmlnOworICAgICAgICAKKyAgICAgICAgLy8gSWYgdGhlIGFjdGl2aXR5IGlzbid0IGN1cnJlbnRseSBydW5uaW5nLCBqdXN0IGxlYXZlIHRoZSBuZXcKKyAgICAgICAgLy8gY29uZmlndXJhdGlvbiBhbmQgaXQgd2lsbCBwaWNrIHRoYXQgdXAgbmV4dCB0aW1lIGl0IHN0YXJ0cy4KKyAgICAgICAgaWYgKHIuYXBwID09IG51bGwgfHwgci5hcHAudGhyZWFkID09IG51bGwpIHsKKyAgICAgICAgICAgIGlmIChERUJVR19TV0lUQ0ggfHwgREVCVUdfQ09ORklHVVJBVElPTikgU2xvZy52KFRBRywKKyAgICAgICAgICAgICAgICAgICAgIkNvbmZpZ3VyYXRpb24gZG9lc24ndCBtYXR0ZXIgbm90IHJ1bm5pbmcgIiArIHIpOworICAgICAgICAgICAgci5zdG9wRnJlZXppbmdTY3JlZW5Mb2NrZWQoZmFsc2UpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIElmIHRoZSBhY3Rpdml0eSBpc24ndCBwZXJzaXN0ZW50LCB0aGVyZSBpcyBhIGNoYW5jZSB3ZSB3aWxsCisgICAgICAgIC8vIG5lZWQgdG8gcmVzdGFydCBpdC4KKyAgICAgICAgaWYgKCFyLnBlcnNpc3RlbnQpIHsKKworICAgICAgICAgICAgLy8gRmlndXJlIG91dCB3aGF0IGhhcyBjaGFuZ2VkIGJldHdlZW4gdGhlIHR3byBjb25maWd1cmF0aW9ucy4KKyAgICAgICAgICAgIGludCBjaGFuZ2VzID0gb2xkQ29uZmlnLmRpZmYobmV3Q29uZmlnKTsKKyAgICAgICAgICAgIGlmIChERUJVR19TV0lUQ0ggfHwgREVCVUdfQ09ORklHVVJBVElPTikgeworICAgICAgICAgICAgICAgIFNsb2cudihUQUcsICJDaGVja2luZyB0byByZXN0YXJ0ICIgKyByLmluZm8ubmFtZSArICI6IGNoYW5nZWQ9MHgiCisgICAgICAgICAgICAgICAgICAgICAgICArIEludGVnZXIudG9IZXhTdHJpbmcoY2hhbmdlcykgKyAiLCBoYW5kbGVzPTB4IgorICAgICAgICAgICAgICAgICAgICAgICAgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKHIuaW5mby5jb25maWdDaGFuZ2VzKQorICAgICAgICAgICAgICAgICAgICAgICAgKyAiLCBuZXdDb25maWc9IiArIG5ld0NvbmZpZyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoKGNoYW5nZXMmKH5yLmluZm8uY29uZmlnQ2hhbmdlcykpICE9IDApIHsKKyAgICAgICAgICAgICAgICAvLyBBaGEsIHRoZSBhY3Rpdml0eSBpc24ndCBoYW5kbGluZyB0aGUgY2hhbmdlLCBzbyBESUUgRElFIERJRS4KKyAgICAgICAgICAgICAgICByLmNvbmZpZ0NoYW5nZUZsYWdzIHw9IGNoYW5nZXM7CisgICAgICAgICAgICAgICAgci5zdGFydEZyZWV6aW5nU2NyZWVuTG9ja2VkKHIuYXBwLCBnbG9iYWxDaGFuZ2VzKTsKKyAgICAgICAgICAgICAgICBpZiAoci5hcHAgPT0gbnVsbCB8fCByLmFwcC50aHJlYWQgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoREVCVUdfU1dJVENIIHx8IERFQlVHX0NPTkZJR1VSQVRJT04pIFNsb2cudihUQUcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlN3aXRjaCBpcyBkZXN0cm95aW5nIG5vbi1ydW5uaW5nICIgKyByKTsKKyAgICAgICAgICAgICAgICAgICAgZGVzdHJveUFjdGl2aXR5TG9ja2VkKHIsIHRydWUpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoci5zdGF0ZSA9PSBBY3Rpdml0eVN0YXRlLlBBVVNJTkcpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gQSBsaXR0bGUgYW5ub3lpbmc6IHdlIGFyZSB3YWl0aW5nIGZvciB0aGlzIGFjdGl2aXR5IHRvCisgICAgICAgICAgICAgICAgICAgIC8vIGZpbmlzaCBwYXVzaW5nLiAgTGV0J3Mgbm90IGRvIGFueXRoaW5nIG5vdywgYnV0IGp1c3QKKyAgICAgICAgICAgICAgICAgICAgLy8gZmxhZyB0aGF0IGl0IG5lZWRzIHRvIGJlIHJlc3RhcnRlZCB3aGVuIGRvbmUgcGF1c2luZy4KKyAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX1NXSVRDSCB8fCBERUJVR19DT05GSUdVUkFUSU9OKSBTbG9nLnYoVEFHLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTd2l0Y2ggaXMgc2tpcHBpbmcgYWxyZWFkeSBwYXVzaW5nICIgKyByKTsKKyAgICAgICAgICAgICAgICAgICAgci5jb25maWdEZXN0cm95ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyLnN0YXRlID09IEFjdGl2aXR5U3RhdGUuUkVTVU1FRCkgeworICAgICAgICAgICAgICAgICAgICAvLyBUcnkgdG8gb3B0aW1pemUgdGhpcyBjYXNlOiB0aGUgY29uZmlndXJhdGlvbiBpcyBjaGFuZ2luZworICAgICAgICAgICAgICAgICAgICAvLyBhbmQgd2UgbmVlZCB0byByZXN0YXJ0IHRoZSB0b3AsIHJlc3VtZWQgYWN0aXZpdHkuCisgICAgICAgICAgICAgICAgICAgIC8vIEluc3RlYWQgb2YgZG9pbmcgdGhlIG5vcm1hbCBoYW5kc2hha2luZywganVzdCBzYXkKKyAgICAgICAgICAgICAgICAgICAgLy8gInJlc3RhcnQhIi4KKyAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX1NXSVRDSCB8fCBERUJVR19DT05GSUdVUkFUSU9OKSBTbG9nLnYoVEFHLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTd2l0Y2ggaXMgcmVzdGFydGluZyByZXN1bWVkICIgKyByKTsKKyAgICAgICAgICAgICAgICAgICAgcmVsYXVuY2hBY3Rpdml0eUxvY2tlZChyLCByLmNvbmZpZ0NoYW5nZUZsYWdzLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgci5jb25maWdDaGFuZ2VGbGFncyA9IDA7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKERFQlVHX1NXSVRDSCB8fCBERUJVR19DT05GSUdVUkFUSU9OKSBTbG9nLnYoVEFHLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTd2l0Y2ggaXMgcmVzdGFydGluZyBub24tcmVzdW1lZCAiICsgcik7CisgICAgICAgICAgICAgICAgICAgIHJlbGF1bmNoQWN0aXZpdHlMb2NrZWQociwgci5jb25maWdDaGFuZ2VGbGFncywgZmFsc2UpOworICAgICAgICAgICAgICAgICAgICByLmNvbmZpZ0NoYW5nZUZsYWdzID0gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gQWxsIGRvbmUuLi4gIHRlbGwgdGhlIGNhbGxlciB3ZSB3ZXJlbid0IGFibGUgdG8ga2VlcCB0aGlzCisgICAgICAgICAgICAgICAgLy8gYWN0aXZpdHkgYXJvdW5kLgorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy8gRGVmYXVsdCBjYXNlOiB0aGUgYWN0aXZpdHkgY2FuIGhhbmRsZSB0aGlzIG5ldyBjb25maWd1cmF0aW9uLCBzbworICAgICAgICAvLyBoYW5kIGl0IG92ZXIuICBOb3RlIHRoYXQgd2UgZG9uJ3QgbmVlZCB0byBnaXZlIGl0IHRoZSBuZXcKKyAgICAgICAgLy8gY29uZmlndXJhdGlvbiwgc2luY2Ugd2UgYWx3YXlzIHNlbmQgY29uZmlndXJhdGlvbiBjaGFuZ2VzIHRvIGFsbAorICAgICAgICAvLyBwcm9jZXNzIHdoZW4gdGhleSBoYXBwZW4gc28gaXQgY2FuIGp1c3QgdXNlIHdoYXRldmVyIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgLy8gaXQgbGFzdCBnb3QuCisgICAgICAgIGlmIChyLmFwcCAhPSBudWxsICYmIHIuYXBwLnRocmVhZCAhPSBudWxsKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGlmIChERUJVR19DT05GSUdVUkFUSU9OKSBTbG9nLnYoVEFHLCAiU2VuZGluZyBuZXcgY29uZmlnIHRvICIgKyByKTsKKyAgICAgICAgICAgICAgICByLmFwcC50aHJlYWQuc2NoZWR1bGVBY3Rpdml0eUNvbmZpZ3VyYXRpb25DaGFuZ2VkKHIpOworICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAvLyBJZiBwcm9jZXNzIGRpZWQsIHdoYXRldmVyLgorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHIuc3RvcEZyZWV6aW5nU2NyZWVuTG9ja2VkKGZhbHNlKTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHByaXZhdGUgZmluYWwgYm9vbGVhbiByZWxhdW5jaEFjdGl2aXR5TG9ja2VkKEFjdGl2aXR5UmVjb3JkIHIsCisgICAgICAgICAgICBpbnQgY2hhbmdlcywgYm9vbGVhbiBhbmRSZXN1bWUpIHsKKyAgICAgICAgTGlzdDxSZXN1bHRJbmZvPiByZXN1bHRzID0gbnVsbDsKKyAgICAgICAgTGlzdDxJbnRlbnQ+IG5ld0ludGVudHMgPSBudWxsOworICAgICAgICBpZiAoYW5kUmVzdW1lKSB7CisgICAgICAgICAgICByZXN1bHRzID0gci5yZXN1bHRzOworICAgICAgICAgICAgbmV3SW50ZW50cyA9IHIubmV3SW50ZW50czsKKyAgICAgICAgfQorICAgICAgICBpZiAoREVCVUdfU1dJVENIKSBTbG9nLnYoVEFHLCAiUmVsYXVuY2hpbmc6ICIgKyByCisgICAgICAgICAgICAgICAgKyAiIHdpdGggcmVzdWx0cz0iICsgcmVzdWx0cyArICIgbmV3SW50ZW50cz0iICsgbmV3SW50ZW50cworICAgICAgICAgICAgICAgICsgIiBhbmRSZXN1bWU9IiArIGFuZFJlc3VtZSk7CisgICAgICAgIEV2ZW50TG9nLndyaXRlRXZlbnQoYW5kUmVzdW1lID8gRXZlbnRMb2dUYWdzLkFNX1JFTEFVTkNIX1JFU1VNRV9BQ1RJVklUWQorICAgICAgICAgICAgICAgIDogRXZlbnRMb2dUYWdzLkFNX1JFTEFVTkNIX0FDVElWSVRZLCBTeXN0ZW0uaWRlbnRpdHlIYXNoQ29kZShyKSwKKyAgICAgICAgICAgICAgICByLnRhc2sudGFza0lkLCByLnNob3J0Q29tcG9uZW50TmFtZSk7CisgICAgICAgIAorICAgICAgICByLnN0YXJ0RnJlZXppbmdTY3JlZW5Mb2NrZWQoci5hcHAsIDApOworICAgICAgICAKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGlmIChERUJVR19TV0lUQ0gpIFNsb2cuaShUQUcsICJTd2l0Y2ggaXMgcmVzdGFydGluZyByZXN1bWVkICIgKyByKTsKKyAgICAgICAgICAgIHIuYXBwLnRocmVhZC5zY2hlZHVsZVJlbGF1bmNoQWN0aXZpdHkociwgcmVzdWx0cywgbmV3SW50ZW50cywKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlcywgIWFuZFJlc3VtZSwgbVNlcnZpY2UubUNvbmZpZ3VyYXRpb24pOworICAgICAgICAgICAgLy8gTm90ZTogZG9uJ3QgbmVlZCB0byBjYWxsIHBhdXNlSWZTbGVlcGluZ0xvY2tlZCgpIGhlcmUsIGJlY2F1c2UKKyAgICAgICAgICAgIC8vIHRoZSBjYWxsZXIgd2lsbCBvbmx5IHBhc3MgaW4gJ2FuZFJlc3VtZScgaWYgdGhpcyBhY3Rpdml0eSBpcworICAgICAgICAgICAgLy8gY3VycmVudGx5IHJlc3VtZWQsIHdoaWNoIGltcGxpZXMgd2UgYXJlbid0IHNsZWVwaW5nLgorICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGFuZFJlc3VtZSkgeworICAgICAgICAgICAgci5yZXN1bHRzID0gbnVsbDsKKyAgICAgICAgICAgIHIubmV3SW50ZW50cyA9IG51bGw7CisgICAgICAgICAgICBpZiAobU1haW5TdGFjaykgeworICAgICAgICAgICAgICAgIG1TZXJ2aWNlLnJlcG9ydFJlc3VtZWRBY3Rpdml0eUxvY2tlZChyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2FtL0FwcEVycm9yRGlhbG9nLmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9BcHBFcnJvckRpYWxvZy5qYXZhCmluZGV4IDNhMWFhZDYuLmE3NjljMDUgMTAwNjQ0Ci0tLSBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2FtL0FwcEVycm9yRGlhbG9nLmphdmEKKysrIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvYW0vQXBwRXJyb3JEaWFsb2cuamF2YQpAQCAtODAsOSArODAsNiBAQAogICAgICAgICAgICAgICAgIERJU01JU1NfVElNRU9VVCk7CiAgICAgfQogCi0gICAgcHVibGljIHZvaWQgb25TdG9wKCkgewotICAgIH0KLQogICAgIHByaXZhdGUgZmluYWwgSGFuZGxlciBtSGFuZGxlciA9IG5ldyBIYW5kbGVyKCkgewogICAgICAgICBwdWJsaWMgdm9pZCBoYW5kbGVNZXNzYWdlKE1lc3NhZ2UgbXNnKSB7CiAgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKG1Qcm9jKSB7CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9BcHBOb3RSZXNwb25kaW5nRGlhbG9nLmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9BcHBOb3RSZXNwb25kaW5nRGlhbG9nLmphdmEKaW5kZXggOTcwMmY5MS4uYjI3MzdkYyAxMDA2NDQKLS0tIGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvYW0vQXBwTm90UmVzcG9uZGluZ0RpYWxvZy5qYXZhCisrKyBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2FtL0FwcE5vdFJlc3BvbmRpbmdEaWFsb2cuamF2YQpAQCAtNDAsNyArNDAsNyBAQAogICAgIHByaXZhdGUgZmluYWwgUHJvY2Vzc1JlY29yZCBtUHJvYzsKICAgICAKICAgICBwdWJsaWMgQXBwTm90UmVzcG9uZGluZ0RpYWxvZyhBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlIHNlcnZpY2UsIENvbnRleHQgY29udGV4dCwKLSAgICAgICAgICAgIFByb2Nlc3NSZWNvcmQgYXBwLCBIaXN0b3J5UmVjb3JkIGFjdGl2aXR5KSB7CisgICAgICAgICAgICBQcm9jZXNzUmVjb3JkIGFwcCwgQWN0aXZpdHlSZWNvcmQgYWN0aXZpdHkpIHsKICAgICAgICAgc3VwZXIoY29udGV4dCk7CiAgICAgICAgIAogICAgICAgICBtU2VydmljZSA9IHNlcnZpY2U7CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9CYXR0ZXJ5U3RhdHNTZXJ2aWNlLmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9CYXR0ZXJ5U3RhdHNTZXJ2aWNlLmphdmEKaW5kZXggMzNiYmMxMy4uMzdkYTZmNyAxMDA2NDQKLS0tIGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvYW0vQmF0dGVyeVN0YXRzU2VydmljZS5qYXZhCisrKyBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2FtL0JhdHRlcnlTdGF0c1NlcnZpY2UuamF2YQpAQCAtNTksNyArNTksNyBAQAogICAgIHB1YmxpYyB2b2lkIHNodXRkb3duKCkgewogICAgICAgICBTbG9nLncoIkJhdHRlcnlTdGF0cyIsICJXcml0aW5nIGJhdHRlcnkgc3RhdHMgYmVmb3JlIHNodXRkb3duLi4uIik7CiAgICAgICAgIHN5bmNocm9uaXplZCAobVN0YXRzKSB7Ci0gICAgICAgICAgICBtU3RhdHMud3JpdGVMb2NrZWQoKTsKKyAgICAgICAgICAgIG1TdGF0cy5zaHV0ZG93bkxvY2tlZCgpOwogICAgICAgICB9CiAgICAgfQogICAgIApAQCAtMTI0LDE0ICsxMjQsMTQgQEAKICAgICBwdWJsaWMgdm9pZCBub3RlU3RhcnRHcHMoaW50IHVpZCkgewogICAgICAgICBlbmZvcmNlQ2FsbGluZ1Blcm1pc3Npb24oKTsKICAgICAgICAgc3luY2hyb25pemVkIChtU3RhdHMpIHsKLSAgICAgICAgICAgIG1TdGF0cy5ub3RlU3RhcnRHcHModWlkKTsKKyAgICAgICAgICAgIG1TdGF0cy5ub3RlU3RhcnRHcHNMb2NrZWQodWlkKTsKICAgICAgICAgfQogICAgIH0KICAgICAKICAgICBwdWJsaWMgdm9pZCBub3RlU3RvcEdwcyhpbnQgdWlkKSB7CiAgICAgICAgIGVuZm9yY2VDYWxsaW5nUGVybWlzc2lvbigpOwogICAgICAgICBzeW5jaHJvbml6ZWQgKG1TdGF0cykgewotICAgICAgICAgICAgbVN0YXRzLm5vdGVTdG9wR3BzKHVpZCk7CisgICAgICAgICAgICBtU3RhdHMubm90ZVN0b3BHcHNMb2NrZWQodWlkKTsKICAgICAgICAgfQogICAgIH0KICAgICAgICAgCkBAIC0zMjEsMTQgKzMyMSwxMCBAQAogICAgICAgICByZXR1cm4gbVN0YXRzLmlzT25CYXR0ZXJ5KCk7CiAgICAgfQogICAgIAotICAgIHB1YmxpYyB2b2lkIHNldE9uQmF0dGVyeShib29sZWFuIG9uQmF0dGVyeSwgaW50IGxldmVsKSB7CisgICAgcHVibGljIHZvaWQgc2V0QmF0dGVyeVN0YXRlKGludCBzdGF0dXMsIGludCBoZWFsdGgsIGludCBwbHVnVHlwZSwgaW50IGxldmVsLAorICAgICAgICAgICAgaW50IHRlbXAsIGludCB2b2x0KSB7CiAgICAgICAgIGVuZm9yY2VDYWxsaW5nUGVybWlzc2lvbigpOwotICAgICAgICBtU3RhdHMuc2V0T25CYXR0ZXJ5KG9uQmF0dGVyeSwgbGV2ZWwpOwotICAgIH0KLSAgICAKLSAgICBwdWJsaWMgdm9pZCByZWNvcmRDdXJyZW50TGV2ZWwoaW50IGxldmVsKSB7Ci0gICAgICAgIGVuZm9yY2VDYWxsaW5nUGVybWlzc2lvbigpOwotICAgICAgICBtU3RhdHMucmVjb3JkQ3VycmVudExldmVsKGxldmVsKTsKKyAgICAgICAgbVN0YXRzLnNldEJhdHRlcnlTdGF0ZShzdGF0dXMsIGhlYWx0aCwgcGx1Z1R5cGUsIGxldmVsLCB0ZW1wLCB2b2x0KTsKICAgICB9CiAgICAgCiAgICAgcHVibGljIGxvbmcgZ2V0QXdha2VUaW1lQmF0dGVyeSgpIHsKQEAgLTM1OSw3ICszNTUsOCBAQAogICAgICAgICAgICAgICAgIGZvciAoU3RyaW5nIGFyZyA6IGFyZ3MpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCItLWNoZWNraW4iLmVxdWFscyhhcmcpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBpc0NoZWNraW4gPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIi0tcmVzZXQiLmVxdWFscyhhcmcpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtU3RhdHMucmVzZXRBbGxTdGF0c0xvY2tlZCgpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvYW0vQ29ubmVjdGlvblJlY29yZC5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvYW0vQ29ubmVjdGlvblJlY29yZC5qYXZhCmluZGV4IGY2MTNiMDAuLjIyYWNkYTkgMTAwNjQ0Ci0tLSBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2FtL0Nvbm5lY3Rpb25SZWNvcmQuamF2YQorKysgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9Db25uZWN0aW9uUmVjb3JkLmphdmEKQEAgLTI2LDcgKzI2LDcgQEAKICAqLwogY2xhc3MgQ29ubmVjdGlvblJlY29yZCB7CiAgICAgZmluYWwgQXBwQmluZFJlY29yZCBiaW5kaW5nOyAgICAvLyBUaGUgYXBwbGljYXRpb24vc2VydmljZSBiaW5kaW5nLgotICAgIGZpbmFsIEhpc3RvcnlSZWNvcmQgYWN0aXZpdHk7ICAgLy8gSWYgbm9uLW51bGwsIHRoZSBvd25pbmcgYWN0aXZpdHkuCisgICAgZmluYWwgQWN0aXZpdHlSZWNvcmQgYWN0aXZpdHk7ICAgLy8gSWYgbm9uLW51bGwsIHRoZSBvd25pbmcgYWN0aXZpdHkuCiAgICAgZmluYWwgSVNlcnZpY2VDb25uZWN0aW9uIGNvbm47ICAvLyBUaGUgY2xpZW50IGNvbm5lY3Rpb24uCiAgICAgZmluYWwgaW50IGZsYWdzOyAgICAgICAgICAgICAgICAvLyBCaW5kaW5nIG9wdGlvbnMuCiAgICAgZmluYWwgaW50IGNsaWVudExhYmVsOyAgICAgICAgICAvLyBTdHJpbmcgcmVzb3VyY2UgbGFiZWxpbmcgdGhpcyBjbGllbnQuCkBAIC00Miw3ICs0Miw3IEBACiAgICAgICAgICAgICAgICAgKyAiIGZsYWdzPTB4IiArIEludGVnZXIudG9IZXhTdHJpbmcoZmxhZ3MpKTsKICAgICB9CiAgICAgCi0gICAgQ29ubmVjdGlvblJlY29yZChBcHBCaW5kUmVjb3JkIF9iaW5kaW5nLCBIaXN0b3J5UmVjb3JkIF9hY3Rpdml0eSwKKyAgICBDb25uZWN0aW9uUmVjb3JkKEFwcEJpbmRSZWNvcmQgX2JpbmRpbmcsIEFjdGl2aXR5UmVjb3JkIF9hY3Rpdml0eSwKICAgICAgICAgICAgICAgIElTZXJ2aWNlQ29ubmVjdGlvbiBfY29ubiwgaW50IF9mbGFncywKICAgICAgICAgICAgICAgIGludCBfY2xpZW50TGFiZWwsIFBlbmRpbmdJbnRlbnQgX2NsaWVudEludGVudCkgewogICAgICAgICBiaW5kaW5nID0gX2JpbmRpbmc7CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9Db250ZW50UHJvdmlkZXJSZWNvcmQuamF2YSBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2FtL0NvbnRlbnRQcm92aWRlclJlY29yZC5qYXZhCmluZGV4IGM3NjQ2MzUuLjQ0Yzk3NDIgMTAwNjQ0Ci0tLSBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2FtL0NvbnRlbnRQcm92aWRlclJlY29yZC5qYXZhCisrKyBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2FtL0NvbnRlbnRQcm92aWRlclJlY29yZC5qYXZhCkBAIC0xNyw2ICsxNyw3IEBACiBwYWNrYWdlIGNvbS5hbmRyb2lkLnNlcnZlci5hbTsKIAogaW1wb3J0IGFuZHJvaWQuYXBwLklBY3Rpdml0eU1hbmFnZXIuQ29udGVudFByb3ZpZGVySG9sZGVyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lOwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5BcHBsaWNhdGlvbkluZm87CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLlByb3ZpZGVySW5mbzsKIGltcG9ydCBhbmRyb2lkLm9zLlByb2Nlc3M7CkBAIC0yOSw2ICszMCw3IEBACiAgICAgZmluYWwgSGFzaFNldDxQcm9jZXNzUmVjb3JkPiBjbGllbnRzID0gbmV3IEhhc2hTZXQ8UHJvY2Vzc1JlY29yZD4oKTsKICAgICBmaW5hbCBpbnQgdWlkOwogICAgIGZpbmFsIEFwcGxpY2F0aW9uSW5mbyBhcHBJbmZvOworICAgIGZpbmFsIENvbXBvbmVudE5hbWUgbmFtZTsKICAgICBpbnQgZXh0ZXJuYWxzOyAgICAgLy8gbnVtYmVyIG9mIG5vbi1mcmFtZXdvcmsgcHJvY2Vzc2VzIHN1cHBvcnRlZCBieSB0aGlzIHByb3ZpZGVyCiAgICAgUHJvY2Vzc1JlY29yZCBhcHA7IC8vIGlmIG5vbi1udWxsLCBob3N0aW5nIGFwcGxpY2F0aW9uCiAgICAgUHJvY2Vzc1JlY29yZCBsYXVuY2hpbmdBcHA7IC8vIGlmIG5vbi1udWxsLCB3YWl0aW5nIGZvciB0aGlzIGFwcCB0byBiZSBsYXVuY2hlZC4KQEAgLTM4LDYgKzQwLDcgQEAKICAgICAgICAgc3VwZXIoX2luZm8pOwogICAgICAgICB1aWQgPSBhaS51aWQ7CiAgICAgICAgIGFwcEluZm8gPSBhaTsKKyAgICAgICAgbmFtZSA9IG5ldyBDb21wb25lbnROYW1lKF9pbmZvLnBhY2thZ2VOYW1lLCBfaW5mby5uYW1lKTsKICAgICAgICAgbm9SZWxlYXNlTmVlZGVkID0gdWlkID09IDAgfHwgdWlkID09IFByb2Nlc3MuU1lTVEVNX1VJRDsKICAgICB9CiAKQEAgLTQ1LDYgKzQ4LDcgQEAKICAgICAgICAgc3VwZXIoY3ByLmluZm8pOwogICAgICAgICB1aWQgPSBjcHIudWlkOwogICAgICAgICBhcHBJbmZvID0gY3ByLmFwcEluZm87CisgICAgICAgIG5hbWUgPSBjcHIubmFtZTsKICAgICAgICAgbm9SZWxlYXNlTmVlZGVkID0gY3ByLm5vUmVsZWFzZU5lZWRlZDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2FtL0hpc3RvcnlSZWNvcmQuamF2YSBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2FtL0hpc3RvcnlSZWNvcmQuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGNhN2E5OS4uMDAwMDAwMAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9IaXN0b3J5UmVjb3JkLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1MzEgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLXBhY2thZ2UgY29tLmFuZHJvaWQuc2VydmVyLmFtOwotCi1pbXBvcnQgY29tLmFuZHJvaWQuc2VydmVyLkF0dHJpYnV0ZUNhY2hlOwotaW1wb3J0IGNvbS5hbmRyb2lkLnNlcnZlci5hbS5BY3Rpdml0eU1hbmFnZXJTZXJ2aWNlLkFjdGl2aXR5U3RhdGU7Ci0KLWltcG9ydCBhbmRyb2lkLmFwcC5BY3Rpdml0eTsKLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZTsKLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50OwotaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5BY3Rpdml0eUluZm87Ci1pbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLkFwcGxpY2F0aW9uSW5mbzsKLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQucmVzLkNvbmZpZ3VyYXRpb247Ci1pbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5CaXRtYXA7Ci1pbXBvcnQgYW5kcm9pZC5vcy5CdW5kbGU7Ci1pbXBvcnQgYW5kcm9pZC5vcy5NZXNzYWdlOwotaW1wb3J0IGFuZHJvaWQub3MuUHJvY2VzczsKLWltcG9ydCBhbmRyb2lkLm9zLlN5c3RlbUNsb2NrOwotaW1wb3J0IGFuZHJvaWQudXRpbC5FdmVudExvZzsKLWltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOwotaW1wb3J0IGFuZHJvaWQudmlldy5JQXBwbGljYXRpb25Ub2tlbjsKLQotaW1wb3J0IGphdmEuaW8uUHJpbnRXcml0ZXI7Ci1pbXBvcnQgamF2YS5sYW5nLnJlZi5XZWFrUmVmZXJlbmNlOwotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci1pbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7Ci0KLS8qKgotICogQW4gZW50cnkgaW4gdGhlIGhpc3Rvcnkgc3RhY2ssIHJlcHJlc2VudGluZyBhbiBhY3Rpdml0eS4KLSAqLwotY2xhc3MgSGlzdG9yeVJlY29yZCBleHRlbmRzIElBcHBsaWNhdGlvblRva2VuLlN0dWIgewotICAgIGZpbmFsIEFjdGl2aXR5TWFuYWdlclNlcnZpY2Ugc2VydmljZTsgLy8gb3duZXIKLSAgICBmaW5hbCBBY3Rpdml0eUluZm8gaW5mbzsgLy8gYWxsIGFib3V0IG1lCi0gICAgZmluYWwgaW50IGxhdW5jaGVkRnJvbVVpZDsgLy8gYWx3YXlzIHRoZSB1aWQgd2hvIHN0YXJ0ZWQgdGhlIGFjdGl2aXR5LgotICAgIGZpbmFsIEludGVudCBpbnRlbnQ7ICAgIC8vIHRoZSBvcmlnaW5hbCBpbnRlbnQgdGhhdCBnZW5lcmF0ZWQgdXMKLSAgICBmaW5hbCBDb21wb25lbnROYW1lIHJlYWxBY3Rpdml0eTsgIC8vIHRoZSBpbnRlbnQgY29tcG9uZW50LCBvciB0YXJnZXQgb2YgYW4gYWxpYXMuCi0gICAgZmluYWwgU3RyaW5nIHNob3J0Q29tcG9uZW50TmFtZTsgLy8gdGhlIHNob3J0IGNvbXBvbmVudCBuYW1lIG9mIHRoZSBpbnRlbnQKLSAgICBmaW5hbCBTdHJpbmcgcmVzb2x2ZWRUeXBlOyAvLyBhcyBwZXIgb3JpZ2luYWwgY2FsbGVyOwotICAgIGZpbmFsIFN0cmluZyBwYWNrYWdlTmFtZTsgLy8gdGhlIHBhY2thZ2UgaW1wbGVtZW50aW5nIGludGVudCdzIGNvbXBvbmVudAotICAgIGZpbmFsIFN0cmluZyBwcm9jZXNzTmFtZTsgLy8gcHJvY2VzcyB3aGVyZSB0aGlzIGNvbXBvbmVudCB3YW50cyB0byBydW4KLSAgICBmaW5hbCBTdHJpbmcgdGFza0FmZmluaXR5OyAvLyBhcyBwZXIgQWN0aXZpdHlJbmZvLnRhc2tBZmZpbml0eQotICAgIGZpbmFsIGJvb2xlYW4gc3RhdGVOb3ROZWVkZWQ7IC8vIEFzIHBlciBBY3Rpdml0eUluZm8uZmxhZ3MKLSAgICBmaW5hbCBib29sZWFuIGZ1bGxzY3JlZW47ICAgICAvLyBjb3ZlcnMgdGhlIGZ1bGwgc2NyZWVuPwotICAgIGZpbmFsIGJvb2xlYW4gY29tcG9uZW50U3BlY2lmaWVkOyAgLy8gZGlkIGNhbGxlciBzcGVjaWZpeSBhbiBleHBsaWNpdCBjb21wb25lbnQ/Ci0gICAgZmluYWwgYm9vbGVhbiBpc0hvbWVBY3Rpdml0eTsgLy8gZG8gd2UgY29uc2lkZXIgdGhpcyB0byBiZSBhIGhvbWUgYWN0aXZpdHk/Ci0gICAgZmluYWwgU3RyaW5nIGJhc2VEaXI7ICAgLy8gd2hlcmUgYWN0aXZpdHkgc291cmNlIChyZXNvdXJjZXMgZXRjKSBsb2NhdGVkCi0gICAgZmluYWwgU3RyaW5nIHJlc0RpcjsgICAvLyB3aGVyZSBwdWJsaWMgYWN0aXZpdHkgc291cmNlIChwdWJsaWMgcmVzb3VyY2VzIGV0YykgbG9jYXRlZAotICAgIGZpbmFsIFN0cmluZyBkYXRhRGlyOyAgIC8vIHdoZXJlIGFjdGl2aXR5IGRhdGEgc2hvdWxkIGdvCi0gICAgQ2hhclNlcXVlbmNlIG5vbkxvY2FsaXplZExhYmVsOyAgLy8gdGhlIGxhYmVsIGluZm9ybWF0aW9uIGZyb20gdGhlIHBhY2thZ2UgbWdyLgotICAgIGludCBsYWJlbFJlczsgICAgICAgICAgIC8vIHRoZSBsYWJlbCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBwYWNrYWdlIG1nci4KLSAgICBpbnQgaWNvbjsgICAgICAgICAgICAgICAvLyByZXNvdXJjZSBpZGVudGlmaWVyIG9mIGFjdGl2aXR5J3MgaWNvbi4KLSAgICBpbnQgdGhlbWU7ICAgICAgICAgICAgICAvLyByZXNvdXJjZSBpZGVudGlmaWVyIG9mIGFjdGl2aXR5J3MgdGhlbWUuCi0gICAgVGFza1JlY29yZCB0YXNrOyAgICAgICAgLy8gdGhlIHRhc2sgdGhpcyBpcyBpbi4KLSAgICBsb25nIHN0YXJ0VGltZTsgICAgICAgICAvLyB3aGVuIHdlIHN0YXJ0aW5nIGxhdW5jaGluZyB0aGlzIGFjdGl2aXR5Ci0gICAgbG9uZyBjcHVUaW1lQXRSZXN1bWU7ICAgLy8gdGhlIGNwdSB0aW1lIG9mIGhvc3QgcHJvY2VzcyBhdCB0aGUgdGltZSBvZiByZXN1bWluZyBhY3Rpdml0eQotICAgIENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbjsgLy8gY29uZmlndXJhdGlvbiBhY3Rpdml0eSB3YXMgbGFzdCBydW5uaW5nIGluCi0gICAgSGlzdG9yeVJlY29yZCByZXN1bHRUbzsgLy8gd2hvIHN0YXJ0ZWQgdGhpcyBlbnRyeSwgc28gd2lsbCBnZXQgb3VyIHJlcGx5Ci0gICAgZmluYWwgU3RyaW5nIHJlc3VsdFdobzsgLy8gYWRkaXRpb25hbCBpZGVudGlmaWVyIGZvciB1c2UgYnkgcmVzdWx0VG8uCi0gICAgZmluYWwgaW50IHJlcXVlc3RDb2RlOyAgLy8gY29kZSBnaXZlbiBieSByZXF1ZXN0ZXIgKHJlc3VsdFRvKQotICAgIEFycmF5TGlzdCByZXN1bHRzOyAgICAgIC8vIHBlbmRpbmcgQWN0aXZpdHlSZXN1bHQgb2JqcyB3ZSBoYXZlIHJlY2VpdmVkCi0gICAgSGFzaFNldDxXZWFrUmVmZXJlbmNlPFBlbmRpbmdJbnRlbnRSZWNvcmQ+PiBwZW5kaW5nUmVzdWx0czsgLy8gYWxsIHBlbmRpbmcgaW50ZW50cyBmb3IgdGhpcyBhY3QKLSAgICBBcnJheUxpc3QgbmV3SW50ZW50czsgICAvLyBhbnkgcGVuZGluZyBuZXcgaW50ZW50cyBmb3Igc2luZ2xlLXRvcCBtb2RlCi0gICAgSGFzaFNldDxDb25uZWN0aW9uUmVjb3JkPiBjb25uZWN0aW9uczsgLy8gQWxsIENvbm5lY3Rpb25SZWNvcmQgd2UgaG9sZAotICAgIEhhc2hTZXQ8VXJpUGVybWlzc2lvbj4gcmVhZFVyaVBlcm1pc3Npb25zOyAvLyBzcGVjaWFsIGFjY2VzcyB0byByZWFkaW5nIHVyaXMuCi0gICAgSGFzaFNldDxVcmlQZXJtaXNzaW9uPiB3cml0ZVVyaVBlcm1pc3Npb25zOyAvLyBzcGVjaWFsIGFjY2VzcyB0byB3cml0aW5nIHVyaXMuCi0gICAgUHJvY2Vzc1JlY29yZCBhcHA7ICAvLyBpZiBub24tbnVsbCwgaG9zdGluZyBhcHBsaWNhdGlvbgotICAgIEJpdG1hcCB0aHVtYm5haWw7ICAgICAgIC8vIGljb24gcmVwcmVzZW50YXRpb24gb2YgcGF1c2VkIHNjcmVlbgotICAgIENoYXJTZXF1ZW5jZSBkZXNjcmlwdGlvbjsgLy8gdGV4dHVhbCBkZXNjcmlwdGlvbiBvZiBwYXVzZWQgc2NyZWVuCi0gICAgQWN0aXZpdHlNYW5hZ2VyU2VydmljZS5BY3Rpdml0eVN0YXRlIHN0YXRlOyAgICAvLyBjdXJyZW50IHN0YXRlIHdlIGFyZSBpbgotICAgIEJ1bmRsZSAgaWNpY2xlOyAgICAgICAgIC8vIGxhc3Qgc2F2ZWQgYWN0aXZpdHkgc3RhdGUKLSAgICBib29sZWFuIGZyb250T2ZUYXNrOyAgICAvLyBpcyB0aGlzIHRoZSByb290IGFjdGl2aXR5IG9mIGl0cyB0YXNrPwotICAgIGJvb2xlYW4gbGF1bmNoRmFpbGVkOyAgIC8vIHNldCBpZiBhIGxhdW5jaGVkIGZhaWxlZCwgdG8gYWJvcnQgb24gMm5kIHRyeQotICAgIGJvb2xlYW4gaGF2ZVN0YXRlOyAgICAgIC8vIGhhdmUgd2UgZ290dGVuIHRoZSBsYXN0IGFjdGl2aXR5IHN0YXRlPwotICAgIGJvb2xlYW4gc3RvcHBlZDsgICAgICAgIC8vIGlzIGFjdGl2aXR5IHBhdXNlIGZpbmlzaGVkPwotICAgIGJvb2xlYW4gZGVsYXllZFJlc3VtZTsgIC8vIG5vdCB5ZXQgcmVzdW1lZCBiZWNhdXNlIG9mIHN0b3BwZWQgYXBwIHN3aXRjaGVzPwotICAgIGJvb2xlYW4gZmluaXNoaW5nOyAgICAgIC8vIGFjdGl2aXR5IGluIHBlbmRpbmcgZmluaXNoIGxpc3Q/Ci0gICAgYm9vbGVhbiBjb25maWdEZXN0cm95OyAgLy8gbmVlZCB0byBkZXN0cm95IGR1ZSB0byBjb25maWcgY2hhbmdlPwotICAgIGludCBjb25maWdDaGFuZ2VGbGFnczsgIC8vIHdoaWNoIGNvbmZpZyB2YWx1ZXMgaGF2ZSBjaGFuZ2VkCi0gICAgYm9vbGVhbiBrZXlzUGF1c2VkOyAgICAgLy8gaGFzIGtleSBkaXNwYXRjaGluZyBiZWVuIHBhdXNlZCBmb3IgaXQ/Ci0gICAgYm9vbGVhbiBpbkhpc3Rvcnk7ICAgICAgLy8gYXJlIHdlIGluIHRoZSBoaXN0b3J5IHN0YWNrPwotICAgIGJvb2xlYW4gcGVyc2lzdGVudDsgICAgIC8vIHJlcXVlc3RlZCB0byBiZSBwZXJzaXN0ZW50PwotICAgIGludCBsYXVuY2hNb2RlOyAgICAgICAgIC8vIHRoZSBsYXVuY2ggbW9kZSBhY3Rpdml0eSBhdHRyaWJ1dGUuCi0gICAgYm9vbGVhbiB2aXNpYmxlOyAgICAgICAgLy8gZG9lcyB0aGlzIGFjdGl2aXR5J3Mgd2luZG93IG5lZWQgdG8gYmUgc2hvd24/Ci0gICAgYm9vbGVhbiB3YWl0aW5nVmlzaWJsZTsgLy8gdHJ1ZSBpZiB3YWl0aW5nIGZvciBhIG5ldyBhY3QgdG8gYmVjb21lIHZpcwotICAgIGJvb2xlYW4gbm93VmlzaWJsZTsgICAgIC8vIGlzIHRoaXMgYWN0aXZpdHkncyB3aW5kb3cgdmlzaWJsZT8KLSAgICBib29sZWFuIHRodW1ibmFpbE5lZWRlZDsvLyBoYXMgc29tZW9uZSByZXF1ZXN0ZWQgYSB0aHVtYm5haWw/Ci0gICAgYm9vbGVhbiBpZGxlOyAgICAgICAgICAgLy8gaGFzIHRoZSBhY3Rpdml0eSBnb25lIGlkbGU/Ci0gICAgYm9vbGVhbiBoYXNCZWVuTGF1bmNoZWQ7Ly8gaGFzIHRoaXMgYWN0aXZpdHkgZXZlciBiZWVuIGxhdW5jaGVkPwotICAgIGJvb2xlYW4gZnJvemVuQmVmb3JlRGVzdHJveTsvLyBoYXMgYmVlbiBmcm96ZW4gYnV0IG5vdCB5ZXQgZGVzdHJveWVkLgotCi0gICAgU3RyaW5nIHN0cmluZ05hbWU7ICAgICAgLy8gZm9yIGNhY2hpbmcgb2YgdG9TdHJpbmcoKS4KLSAgICAKLSAgICB2b2lkIGR1bXAoUHJpbnRXcml0ZXIgcHcsIFN0cmluZyBwcmVmaXgpIHsKLSAgICAgICAgcHcucHJpbnQocHJlZml4KTsgcHcucHJpbnQoInBhY2thZ2VOYW1lPSIpOyBwdy5wcmludChwYWNrYWdlTmFtZSk7Ci0gICAgICAgICAgICAgICAgcHcucHJpbnQoIiBwcm9jZXNzTmFtZT0iKTsgcHcucHJpbnRsbihwcm9jZXNzTmFtZSk7Ci0gICAgICAgIHB3LnByaW50KHByZWZpeCk7IHB3LnByaW50KCJsYXVuY2hlZEZyb21VaWQ9Iik7IHB3LnByaW50KGxhdW5jaGVkRnJvbVVpZCk7Ci0gICAgICAgICAgICAgICAgcHcucHJpbnQoIiBhcHA9Iik7IHB3LnByaW50bG4oYXBwKTsKLSAgICAgICAgcHcucHJpbnQocHJlZml4KTsgcHcucHJpbnRsbihpbnRlbnQpOwotICAgICAgICBwdy5wcmludChwcmVmaXgpOyBwdy5wcmludCgiZnJvbnRPZlRhc2s9Iik7IHB3LnByaW50KGZyb250T2ZUYXNrKTsKLSAgICAgICAgICAgICAgICBwdy5wcmludCgiIHRhc2s9Iik7IHB3LnByaW50bG4odGFzayk7Ci0gICAgICAgIHB3LnByaW50KHByZWZpeCk7IHB3LnByaW50KCJ0YXNrQWZmaW5pdHk9Iik7IHB3LnByaW50bG4odGFza0FmZmluaXR5KTsKLSAgICAgICAgcHcucHJpbnQocHJlZml4KTsgcHcucHJpbnQoInJlYWxBY3Rpdml0eT0iKTsKLSAgICAgICAgICAgICAgICBwdy5wcmludGxuKHJlYWxBY3Rpdml0eS5mbGF0dGVuVG9TaG9ydFN0cmluZygpKTsKLSAgICAgICAgcHcucHJpbnQocHJlZml4KTsgcHcucHJpbnQoImJhc2U9Iik7IHB3LnByaW50KGJhc2VEaXIpOwotICAgICAgICAgICAgICAgIGlmICghcmVzRGlyLmVxdWFscyhiYXNlRGlyKSkgcHcucHJpbnQoIiByZXM9Iik7IHB3LnByaW50KHJlc0Rpcik7Ci0gICAgICAgICAgICAgICAgcHcucHJpbnQoIiBkYXRhPSIpOyBwdy5wcmludGxuKGRhdGFEaXIpOwotICAgICAgICBwdy5wcmludChwcmVmaXgpOyBwdy5wcmludCgibGFiZWxSZXM9MHgiKTsKLSAgICAgICAgICAgICAgICBwdy5wcmludChJbnRlZ2VyLnRvSGV4U3RyaW5nKGxhYmVsUmVzKSk7Ci0gICAgICAgICAgICAgICAgcHcucHJpbnQoIiBpY29uPTB4Iik7IHB3LnByaW50KEludGVnZXIudG9IZXhTdHJpbmcoaWNvbikpOwotICAgICAgICAgICAgICAgIHB3LnByaW50KCIgdGhlbWU9MHgiKTsgcHcucHJpbnRsbihJbnRlZ2VyLnRvSGV4U3RyaW5nKHRoZW1lKSk7Ci0gICAgICAgIHB3LnByaW50KHByZWZpeCk7IHB3LnByaW50KCJzdGF0ZU5vdE5lZWRlZD0iKTsgcHcucHJpbnQoc3RhdGVOb3ROZWVkZWQpOwotICAgICAgICAgICAgICAgIHB3LnByaW50KCIgY29tcG9uZW50U3BlY2lmaWVkPSIpOyBwdy5wcmludChjb21wb25lbnRTcGVjaWZpZWQpOwotICAgICAgICAgICAgICAgIHB3LnByaW50KCIgaXNIb21lQWN0aXZpdHk9Iik7IHB3LnByaW50bG4oaXNIb21lQWN0aXZpdHkpOwotICAgICAgICBwdy5wcmludChwcmVmaXgpOyBwdy5wcmludCgiY29uZmlndXJhdGlvbj0iKTsgcHcucHJpbnRsbihjb25maWd1cmF0aW9uKTsKLSAgICAgICAgaWYgKHJlc3VsdFRvICE9IG51bGwgfHwgcmVzdWx0V2hvICE9IG51bGwpIHsKLSAgICAgICAgICAgIHB3LnByaW50KHByZWZpeCk7IHB3LnByaW50KCJyZXN1bHRUbz0iKTsgcHcucHJpbnQocmVzdWx0VG8pOwotICAgICAgICAgICAgICAgICAgICBwdy5wcmludCgiIHJlc3VsdFdobz0iKTsgcHcucHJpbnQocmVzdWx0V2hvKTsKLSAgICAgICAgICAgICAgICAgICAgcHcucHJpbnQoIiByZXN1bHRDb2RlPSIpOyBwdy5wcmludGxuKHJlcXVlc3RDb2RlKTsKLSAgICAgICAgfQotICAgICAgICBpZiAocmVzdWx0cyAhPSBudWxsKSB7Ci0gICAgICAgICAgICBwdy5wcmludChwcmVmaXgpOyBwdy5wcmludCgicmVzdWx0cz0iKTsgcHcucHJpbnRsbihyZXN1bHRzKTsKLSAgICAgICAgfQotICAgICAgICBpZiAocGVuZGluZ1Jlc3VsdHMgIT0gbnVsbCkgewotICAgICAgICAgICAgcHcucHJpbnQocHJlZml4KTsgcHcucHJpbnQoInBlbmRpbmdSZXN1bHRzPSIpOyBwdy5wcmludGxuKHBlbmRpbmdSZXN1bHRzKTsKLSAgICAgICAgfQotICAgICAgICBpZiAocmVhZFVyaVBlcm1pc3Npb25zICE9IG51bGwpIHsKLSAgICAgICAgICAgIHB3LnByaW50KHByZWZpeCk7IHB3LnByaW50KCJyZWFkVXJpUGVybWlzc2lvbnM9Iik7IHB3LnByaW50bG4ocmVhZFVyaVBlcm1pc3Npb25zKTsKLSAgICAgICAgfQotICAgICAgICBpZiAod3JpdGVVcmlQZXJtaXNzaW9ucyAhPSBudWxsKSB7Ci0gICAgICAgICAgICBwdy5wcmludChwcmVmaXgpOyBwdy5wcmludCgid3JpdGVVcmlQZXJtaXNzaW9ucz0iKTsgcHcucHJpbnRsbih3cml0ZVVyaVBlcm1pc3Npb25zKTsKLSAgICAgICAgfQotICAgICAgICBwdy5wcmludChwcmVmaXgpOyBwdy5wcmludCgibGF1bmNoRmFpbGVkPSIpOyBwdy5wcmludChsYXVuY2hGYWlsZWQpOwotICAgICAgICAgICAgICAgIHB3LnByaW50KCIgaGF2ZVN0YXRlPSIpOyBwdy5wcmludChoYXZlU3RhdGUpOwotICAgICAgICAgICAgICAgIHB3LnByaW50KCIgaWNpY2xlPSIpOyBwdy5wcmludGxuKGljaWNsZSk7Ci0gICAgICAgIHB3LnByaW50KHByZWZpeCk7IHB3LnByaW50KCJzdGF0ZT0iKTsgcHcucHJpbnQoc3RhdGUpOwotICAgICAgICAgICAgICAgIHB3LnByaW50KCIgc3RvcHBlZD0iKTsgcHcucHJpbnQoc3RvcHBlZCk7Ci0gICAgICAgICAgICAgICAgcHcucHJpbnQoIiBkZWxheWVkUmVzdW1lPSIpOyBwdy5wcmludChkZWxheWVkUmVzdW1lKTsKLSAgICAgICAgICAgICAgICBwdy5wcmludCgiIGZpbmlzaGluZz0iKTsgcHcucHJpbnRsbihmaW5pc2hpbmcpOwotICAgICAgICBwdy5wcmludChwcmVmaXgpOyBwdy5wcmludCgia2V5c1BhdXNlZD0iKTsgcHcucHJpbnQoa2V5c1BhdXNlZCk7Ci0gICAgICAgICAgICAgICAgcHcucHJpbnQoIiBpbkhpc3Rvcnk9Iik7IHB3LnByaW50KGluSGlzdG9yeSk7Ci0gICAgICAgICAgICAgICAgcHcucHJpbnQoIiBwZXJzaXN0ZW50PSIpOyBwdy5wcmludChwZXJzaXN0ZW50KTsKLSAgICAgICAgICAgICAgICBwdy5wcmludCgiIGxhdW5jaE1vZGU9Iik7IHB3LnByaW50bG4obGF1bmNoTW9kZSk7Ci0gICAgICAgIHB3LnByaW50KHByZWZpeCk7IHB3LnByaW50KCJmdWxsc2NyZWVuPSIpOyBwdy5wcmludChmdWxsc2NyZWVuKTsKLSAgICAgICAgICAgICAgICBwdy5wcmludCgiIHZpc2libGU9Iik7IHB3LnByaW50KHZpc2libGUpOwotICAgICAgICAgICAgICAgIHB3LnByaW50KCIgZnJvemVuQmVmb3JlRGVzdHJveT0iKTsgcHcucHJpbnQoZnJvemVuQmVmb3JlRGVzdHJveSk7Ci0gICAgICAgICAgICAgICAgcHcucHJpbnQoIiB0aHVtYm5haWxOZWVkZWQ9Iik7IHB3LnByaW50KHRodW1ibmFpbE5lZWRlZCk7Ci0gICAgICAgICAgICAgICAgcHcucHJpbnQoIiBpZGxlPSIpOyBwdy5wcmludGxuKGlkbGUpOwotICAgICAgICBpZiAod2FpdGluZ1Zpc2libGUgfHwgbm93VmlzaWJsZSkgewotICAgICAgICAgICAgcHcucHJpbnQocHJlZml4KTsgcHcucHJpbnQoIndhaXRpbmdWaXNpYmxlPSIpOyBwdy5wcmludCh3YWl0aW5nVmlzaWJsZSk7Ci0gICAgICAgICAgICAgICAgICAgIHB3LnByaW50KCIgbm93VmlzaWJsZT0iKTsgcHcucHJpbnRsbihub3dWaXNpYmxlKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoY29uZmlnRGVzdHJveSB8fCBjb25maWdDaGFuZ2VGbGFncyAhPSAwKSB7Ci0gICAgICAgICAgICBwdy5wcmludChwcmVmaXgpOyBwdy5wcmludCgiY29uZmlnRGVzdHJveT0iKTsgcHcucHJpbnQoY29uZmlnRGVzdHJveSk7Ci0gICAgICAgICAgICAgICAgICAgIHB3LnByaW50KCIgY29uZmlnQ2hhbmdlRmxhZ3M9Iik7Ci0gICAgICAgICAgICAgICAgICAgIHB3LnByaW50bG4oSW50ZWdlci50b0hleFN0cmluZyhjb25maWdDaGFuZ2VGbGFncykpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChjb25uZWN0aW9ucyAhPSBudWxsKSB7Ci0gICAgICAgICAgICBwdy5wcmludChwcmVmaXgpOyBwdy5wcmludCgiY29ubmVjdGlvbnM9Iik7IHB3LnByaW50bG4oY29ubmVjdGlvbnMpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgSGlzdG9yeVJlY29yZChBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlIF9zZXJ2aWNlLCBQcm9jZXNzUmVjb3JkIF9jYWxsZXIsCi0gICAgICAgICAgICBpbnQgX2xhdW5jaGVkRnJvbVVpZCwgSW50ZW50IF9pbnRlbnQsIFN0cmluZyBfcmVzb2x2ZWRUeXBlLAotICAgICAgICAgICAgQWN0aXZpdHlJbmZvIGFJbmZvLCBDb25maWd1cmF0aW9uIF9jb25maWd1cmF0aW9uLAotICAgICAgICAgICAgSGlzdG9yeVJlY29yZCBfcmVzdWx0VG8sIFN0cmluZyBfcmVzdWx0V2hvLCBpbnQgX3JlcUNvZGUsCi0gICAgICAgICAgICBib29sZWFuIF9jb21wb25lbnRTcGVjaWZpZWQpIHsKLSAgICAgICAgc2VydmljZSA9IF9zZXJ2aWNlOwotICAgICAgICBpbmZvID0gYUluZm87Ci0gICAgICAgIGxhdW5jaGVkRnJvbVVpZCA9IF9sYXVuY2hlZEZyb21VaWQ7Ci0gICAgICAgIGludGVudCA9IF9pbnRlbnQ7Ci0gICAgICAgIHNob3J0Q29tcG9uZW50TmFtZSA9IF9pbnRlbnQuZ2V0Q29tcG9uZW50KCkuZmxhdHRlblRvU2hvcnRTdHJpbmcoKTsKLSAgICAgICAgcmVzb2x2ZWRUeXBlID0gX3Jlc29sdmVkVHlwZTsKLSAgICAgICAgY29tcG9uZW50U3BlY2lmaWVkID0gX2NvbXBvbmVudFNwZWNpZmllZDsKLSAgICAgICAgY29uZmlndXJhdGlvbiA9IF9jb25maWd1cmF0aW9uOwotICAgICAgICByZXN1bHRUbyA9IF9yZXN1bHRUbzsKLSAgICAgICAgcmVzdWx0V2hvID0gX3Jlc3VsdFdobzsKLSAgICAgICAgcmVxdWVzdENvZGUgPSBfcmVxQ29kZTsKLSAgICAgICAgc3RhdGUgPSBBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlLkFjdGl2aXR5U3RhdGUuSU5JVElBTElaSU5HOwotICAgICAgICBmcm9udE9mVGFzayA9IGZhbHNlOwotICAgICAgICBsYXVuY2hGYWlsZWQgPSBmYWxzZTsKLSAgICAgICAgaGF2ZVN0YXRlID0gZmFsc2U7Ci0gICAgICAgIHN0b3BwZWQgPSBmYWxzZTsKLSAgICAgICAgZGVsYXllZFJlc3VtZSA9IGZhbHNlOwotICAgICAgICBmaW5pc2hpbmcgPSBmYWxzZTsKLSAgICAgICAgY29uZmlnRGVzdHJveSA9IGZhbHNlOwotICAgICAgICBrZXlzUGF1c2VkID0gZmFsc2U7Ci0gICAgICAgIGluSGlzdG9yeSA9IGZhbHNlOwotICAgICAgICBwZXJzaXN0ZW50ID0gZmFsc2U7Ci0gICAgICAgIHZpc2libGUgPSB0cnVlOwotICAgICAgICB3YWl0aW5nVmlzaWJsZSA9IGZhbHNlOwotICAgICAgICBub3dWaXNpYmxlID0gZmFsc2U7Ci0gICAgICAgIHRodW1ibmFpbE5lZWRlZCA9IGZhbHNlOwotICAgICAgICBpZGxlID0gZmFsc2U7Ci0gICAgICAgIGhhc0JlZW5MYXVuY2hlZCA9IGZhbHNlOwotCi0gICAgICAgIGlmIChhSW5mbyAhPSBudWxsKSB7Ci0gICAgICAgICAgICBpZiAoYUluZm8udGFyZ2V0QWN0aXZpdHkgPT0gbnVsbAotICAgICAgICAgICAgICAgICAgICB8fCBhSW5mby5sYXVuY2hNb2RlID09IEFjdGl2aXR5SW5mby5MQVVOQ0hfTVVMVElQTEUKLSAgICAgICAgICAgICAgICAgICAgfHwgYUluZm8ubGF1bmNoTW9kZSA9PSBBY3Rpdml0eUluZm8uTEFVTkNIX1NJTkdMRV9UT1ApIHsKLSAgICAgICAgICAgICAgICByZWFsQWN0aXZpdHkgPSBfaW50ZW50LmdldENvbXBvbmVudCgpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICByZWFsQWN0aXZpdHkgPSBuZXcgQ29tcG9uZW50TmFtZShhSW5mby5wYWNrYWdlTmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGFJbmZvLnRhcmdldEFjdGl2aXR5KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRhc2tBZmZpbml0eSA9IGFJbmZvLnRhc2tBZmZpbml0eTsKLSAgICAgICAgICAgIHN0YXRlTm90TmVlZGVkID0gKGFJbmZvLmZsYWdzJgotICAgICAgICAgICAgICAgICAgICBBY3Rpdml0eUluZm8uRkxBR19TVEFURV9OT1RfTkVFREVEKSAhPSAwOwotICAgICAgICAgICAgYmFzZURpciA9IGFJbmZvLmFwcGxpY2F0aW9uSW5mby5zb3VyY2VEaXI7Ci0gICAgICAgICAgICByZXNEaXIgPSBhSW5mby5hcHBsaWNhdGlvbkluZm8ucHVibGljU291cmNlRGlyOwotICAgICAgICAgICAgZGF0YURpciA9IGFJbmZvLmFwcGxpY2F0aW9uSW5mby5kYXRhRGlyOwotICAgICAgICAgICAgbm9uTG9jYWxpemVkTGFiZWwgPSBhSW5mby5ub25Mb2NhbGl6ZWRMYWJlbDsKLSAgICAgICAgICAgIGxhYmVsUmVzID0gYUluZm8ubGFiZWxSZXM7Ci0gICAgICAgICAgICBpZiAobm9uTG9jYWxpemVkTGFiZWwgPT0gbnVsbCAmJiBsYWJlbFJlcyA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgQXBwbGljYXRpb25JbmZvIGFwcCA9IGFJbmZvLmFwcGxpY2F0aW9uSW5mbzsKLSAgICAgICAgICAgICAgICBub25Mb2NhbGl6ZWRMYWJlbCA9IGFwcC5ub25Mb2NhbGl6ZWRMYWJlbDsKLSAgICAgICAgICAgICAgICBsYWJlbFJlcyA9IGFwcC5sYWJlbFJlczsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGljb24gPSBhSW5mby5nZXRJY29uUmVzb3VyY2UoKTsKLSAgICAgICAgICAgIHRoZW1lID0gYUluZm8uZ2V0VGhlbWVSZXNvdXJjZSgpOwotICAgICAgICAgICAgaWYgKChhSW5mby5mbGFncyZBY3Rpdml0eUluZm8uRkxBR19NVUxUSVBST0NFU1MpICE9IDAKLSAgICAgICAgICAgICAgICAgICAgJiYgX2NhbGxlciAhPSBudWxsCi0gICAgICAgICAgICAgICAgICAgICYmIChhSW5mby5hcHBsaWNhdGlvbkluZm8udWlkID09IFByb2Nlc3MuU1lTVEVNX1VJRAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGFJbmZvLmFwcGxpY2F0aW9uSW5mby51aWQgPT0gX2NhbGxlci5pbmZvLnVpZCkpIHsKLSAgICAgICAgICAgICAgICBwcm9jZXNzTmFtZSA9IF9jYWxsZXIucHJvY2Vzc05hbWU7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHByb2Nlc3NOYW1lID0gYUluZm8ucHJvY2Vzc05hbWU7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChpbnRlbnQgIT0gbnVsbCAmJiAoYUluZm8uZmxhZ3MgJiBBY3Rpdml0eUluZm8uRkxBR19FWENMVURFX0ZST01fUkVDRU5UUykgIT0gMCkgewotICAgICAgICAgICAgICAgIGludGVudC5hZGRGbGFncyhJbnRlbnQuRkxBR19BQ1RJVklUWV9FWENMVURFX0ZST01fUkVDRU5UUyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHBhY2thZ2VOYW1lID0gYUluZm8uYXBwbGljYXRpb25JbmZvLnBhY2thZ2VOYW1lOwotICAgICAgICAgICAgbGF1bmNoTW9kZSA9IGFJbmZvLmxhdW5jaE1vZGU7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIEF0dHJpYnV0ZUNhY2hlLkVudHJ5IGVudCA9IEF0dHJpYnV0ZUNhY2hlLmluc3RhbmNlKCkuZ2V0KHBhY2thZ2VOYW1lLAotICAgICAgICAgICAgICAgICAgICB0aGVtZSAhPSAwID8gdGhlbWUgOiBhbmRyb2lkLlIuc3R5bGUuVGhlbWUsCi0gICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3R5bGVhYmxlLldpbmRvdyk7Ci0gICAgICAgICAgICBmdWxsc2NyZWVuID0gZW50ICE9IG51bGwgJiYgIWVudC5hcnJheS5nZXRCb29sZWFuKAotICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5XaW5kb3dfd2luZG93SXNGbG9hdGluZywgZmFsc2UpCi0gICAgICAgICAgICAgICAgICAgICYmICFlbnQuYXJyYXkuZ2V0Qm9vbGVhbigKLSAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHlsZWFibGUuV2luZG93X3dpbmRvd0lzVHJhbnNsdWNlbnQsIGZhbHNlKTsKLSAgICAgICAgICAgIAotICAgICAgICAgICAgaWYgKCFfY29tcG9uZW50U3BlY2lmaWVkIHx8IF9sYXVuY2hlZEZyb21VaWQgPT0gUHJvY2Vzcy5teVVpZCgpCi0gICAgICAgICAgICAgICAgICAgIHx8IF9sYXVuY2hlZEZyb21VaWQgPT0gMCkgewotICAgICAgICAgICAgICAgIC8vIElmIHdlIGtub3cgdGhlIHN5c3RlbSBoYXMgZGV0ZXJtaW5lZCB0aGUgY29tcG9uZW50LCB0aGVuCi0gICAgICAgICAgICAgICAgLy8gd2UgY2FuIGNvbnNpZGVyIHRoaXMgdG8gYmUgYSBob21lIGFjdGl2aXR5Li4uCi0gICAgICAgICAgICAgICAgaWYgKEludGVudC5BQ1RJT05fTUFJTi5lcXVhbHMoX2ludGVudC5nZXRBY3Rpb24oKSkgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgIF9pbnRlbnQuaGFzQ2F0ZWdvcnkoSW50ZW50LkNBVEVHT1JZX0hPTUUpICYmCi0gICAgICAgICAgICAgICAgICAgICAgICBfaW50ZW50LmdldENhdGVnb3JpZXMoKS5zaXplKCkgPT0gMSAmJgotICAgICAgICAgICAgICAgICAgICAgICAgX2ludGVudC5nZXREYXRhKCkgPT0gbnVsbCAmJgotICAgICAgICAgICAgICAgICAgICAgICAgX2ludGVudC5nZXRUeXBlKCkgPT0gbnVsbCAmJgotICAgICAgICAgICAgICAgICAgICAgICAgKGludGVudC5nZXRGbGFncygpJkludGVudC5GTEFHX0FDVElWSVRZX05FV19UQVNLKSAhPSAwICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAhImFuZHJvaWQiLmVxdWFscyhyZWFsQWN0aXZpdHkuZ2V0Q2xhc3NOYW1lKCkpKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgc3VyZSBsb29rcyBsaWtlIGEgaG9tZSBhY3Rpdml0eSEKLSAgICAgICAgICAgICAgICAgICAgLy8gTm90ZSB0aGUgbGFzdCBjaGVjayBpcyBzbyB3ZSBkb24ndCBjb3VudCB0aGUgcmVzb2x2ZXIKLSAgICAgICAgICAgICAgICAgICAgLy8gYWN0aXZpdHkgYXMgYmVpbmcgaG9tZS4uLiAgcmVhbGx5LCB3ZSBkb24ndCBjYXJlIGFib3V0Ci0gICAgICAgICAgICAgICAgICAgIC8vIGRvaW5nIGFueXRoaW5nIHNwZWNpYWwgd2l0aCBzb21ldGhpbmcgdGhhdCBjb21lcyBmcm9tCi0gICAgICAgICAgICAgICAgICAgIC8vIHRoZSBjb3JlIGZyYW1ld29yayBwYWNrYWdlLgotICAgICAgICAgICAgICAgICAgICBpc0hvbWVBY3Rpdml0eSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgaXNIb21lQWN0aXZpdHkgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGlzSG9tZUFjdGl2aXR5ID0gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZWFsQWN0aXZpdHkgPSBudWxsOwotICAgICAgICAgICAgdGFza0FmZmluaXR5ID0gbnVsbDsKLSAgICAgICAgICAgIHN0YXRlTm90TmVlZGVkID0gZmFsc2U7Ci0gICAgICAgICAgICBiYXNlRGlyID0gbnVsbDsKLSAgICAgICAgICAgIHJlc0RpciA9IG51bGw7Ci0gICAgICAgICAgICBkYXRhRGlyID0gbnVsbDsKLSAgICAgICAgICAgIHByb2Nlc3NOYW1lID0gbnVsbDsKLSAgICAgICAgICAgIHBhY2thZ2VOYW1lID0gbnVsbDsKLSAgICAgICAgICAgIGZ1bGxzY3JlZW4gPSB0cnVlOwotICAgICAgICAgICAgaXNIb21lQWN0aXZpdHkgPSBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgYWRkUmVzdWx0TG9ja2VkKEhpc3RvcnlSZWNvcmQgZnJvbSwgU3RyaW5nIHJlc3VsdFdobywKLSAgICAgICAgICAgIGludCByZXF1ZXN0Q29kZSwgaW50IHJlc3VsdENvZGUsCi0gICAgICAgICAgICBJbnRlbnQgcmVzdWx0RGF0YSkgewotICAgICAgICBBY3Rpdml0eVJlc3VsdCByID0gbmV3IEFjdGl2aXR5UmVzdWx0KGZyb20sIHJlc3VsdFdobywKLSAgICAgICAgCQlyZXF1ZXN0Q29kZSwgcmVzdWx0Q29kZSwgcmVzdWx0RGF0YSk7Ci0gICAgICAgIGlmIChyZXN1bHRzID09IG51bGwpIHsKLSAgICAgICAgICAgIHJlc3VsdHMgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmVzdWx0cy5hZGQocik7Ci0gICAgfQotCi0gICAgdm9pZCByZW1vdmVSZXN1bHRzTG9ja2VkKEhpc3RvcnlSZWNvcmQgZnJvbSwgU3RyaW5nIHJlc3VsdFdobywKLSAgICAgICAgICAgIGludCByZXF1ZXN0Q29kZSkgewotICAgICAgICBpZiAocmVzdWx0cyAhPSBudWxsKSB7Ci0gICAgICAgICAgICBmb3IgKGludCBpPXJlc3VsdHMuc2l6ZSgpLTE7IGk+PTA7IGktLSkgewotICAgICAgICAgICAgICAgIEFjdGl2aXR5UmVzdWx0IHIgPSAoQWN0aXZpdHlSZXN1bHQpcmVzdWx0cy5nZXQoaSk7Ci0gICAgICAgICAgICAgICAgaWYgKHIubUZyb20gIT0gZnJvbSkgY29udGludWU7Ci0gICAgICAgICAgICAgICAgaWYgKHIubVJlc3VsdFdobyA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZXN1bHRXaG8gIT0gbnVsbCkgY29udGludWU7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFyLm1SZXN1bHRXaG8uZXF1YWxzKHJlc3VsdFdobykpIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoci5tUmVxdWVzdENvZGUgIT0gcmVxdWVzdENvZGUpIGNvbnRpbnVlOwotCi0gICAgICAgICAgICAgICAgcmVzdWx0cy5yZW1vdmUoaSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIGFkZE5ld0ludGVudExvY2tlZChJbnRlbnQgaW50ZW50KSB7Ci0gICAgICAgIGlmIChuZXdJbnRlbnRzID09IG51bGwpIHsKLSAgICAgICAgICAgIG5ld0ludGVudHMgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gICAgICAgIH0KLSAgICAgICAgbmV3SW50ZW50cy5hZGQoaW50ZW50KTsKLSAgICB9Ci0KLSAgICB2b2lkIHBhdXNlS2V5RGlzcGF0Y2hpbmdMb2NrZWQoKSB7Ci0gICAgICAgIGlmICgha2V5c1BhdXNlZCkgewotICAgICAgICAgICAga2V5c1BhdXNlZCA9IHRydWU7Ci0gICAgICAgICAgICBzZXJ2aWNlLm1XaW5kb3dNYW5hZ2VyLnBhdXNlS2V5RGlzcGF0Y2hpbmcodGhpcyk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIHJlc3VtZUtleURpc3BhdGNoaW5nTG9ja2VkKCkgewotICAgICAgICBpZiAoa2V5c1BhdXNlZCkgewotICAgICAgICAgICAga2V5c1BhdXNlZCA9IGZhbHNlOwotICAgICAgICAgICAgc2VydmljZS5tV2luZG93TWFuYWdlci5yZXN1bWVLZXlEaXNwYXRjaGluZyh0aGlzKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIElBcHBsaWNhdGlvblRva2VuCi0KLSAgICBwdWJsaWMgYm9vbGVhbiBtYXlGcmVlemVTY3JlZW5Mb2NrZWQoUHJvY2Vzc1JlY29yZCBhcHApIHsKLSAgICAgICAgLy8gT25seSBmcmVlemUgdGhlIHNjcmVlbiBpZiB0aGlzIGFjdGl2aXR5IGlzIGN1cnJlbnRseSBhdHRhY2hlZCB0bwotICAgICAgICAvLyBhbiBhcHBsaWNhdGlvbiwgYW5kIHRoYXQgYXBwbGljYXRpb24gaXMgbm90IGJsb2NrZWQgb3IgdW5yZXNwb25kaW5nLgotICAgICAgICAvLyBJbiBhbnkgb3RoZXIgY2FzZSwgd2UgY2FuJ3QgY291bnQgb24gZ2V0dGluZyB0aGUgc2NyZWVuIHVuZnJvemVuLAotICAgICAgICAvLyBzbyBpdCBpcyBiZXN0IHRvIGxlYXZlIGFzLWlzLgotICAgICAgICByZXR1cm4gYXBwID09IG51bGwgfHwgKCFhcHAuY3Jhc2hpbmcgJiYgIWFwcC5ub3RSZXNwb25kaW5nKTsKLSAgICB9Ci0gICAgCi0gICAgcHVibGljIHZvaWQgc3RhcnRGcmVlemluZ1NjcmVlbkxvY2tlZChQcm9jZXNzUmVjb3JkIGFwcCwgaW50IGNvbmZpZ0NoYW5nZXMpIHsKLSAgICAgICAgaWYgKG1heUZyZWV6ZVNjcmVlbkxvY2tlZChhcHApKSB7Ci0gICAgICAgICAgICBzZXJ2aWNlLm1XaW5kb3dNYW5hZ2VyLnN0YXJ0QXBwRnJlZXppbmdTY3JlZW4odGhpcywgY29uZmlnQ2hhbmdlcyk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgcHVibGljIHZvaWQgc3RvcEZyZWV6aW5nU2NyZWVuTG9ja2VkKGJvb2xlYW4gZm9yY2UpIHsKLSAgICAgICAgaWYgKGZvcmNlIHx8IGZyb3plbkJlZm9yZURlc3Ryb3kpIHsKLSAgICAgICAgICAgIGZyb3plbkJlZm9yZURlc3Ryb3kgPSBmYWxzZTsKLSAgICAgICAgICAgIHNlcnZpY2UubVdpbmRvd01hbmFnZXIuc3RvcEFwcEZyZWV6aW5nU2NyZWVuKHRoaXMsIGZvcmNlKTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICBwdWJsaWMgdm9pZCB3aW5kb3dzVmlzaWJsZSgpIHsKLSAgICAgICAgc3luY2hyb25pemVkKHNlcnZpY2UpIHsKLSAgICAgICAgICAgIGlmIChzdGFydFRpbWUgIT0gMCkgewotICAgICAgICAgICAgICAgIGZpbmFsIGxvbmcgY3VyVGltZSA9IFN5c3RlbUNsb2NrLnVwdGltZU1pbGxpcygpOwotICAgICAgICAgICAgICAgIGZpbmFsIGxvbmcgdGhpc1RpbWUgPSBjdXJUaW1lIC0gc3RhcnRUaW1lOwotICAgICAgICAgICAgICAgIGZpbmFsIGxvbmcgdG90YWxUaW1lID0gc2VydmljZS5tSW5pdGlhbFN0YXJ0VGltZSAhPSAwCi0gICAgICAgICAgICAgICAgICAgICAgICA/IChjdXJUaW1lIC0gc2VydmljZS5tSW5pdGlhbFN0YXJ0VGltZSkgOiB0aGlzVGltZTsKLSAgICAgICAgICAgICAgICBpZiAoQWN0aXZpdHlNYW5hZ2VyU2VydmljZS5TSE9XX0FDVElWSVRZX1NUQVJUX1RJTUUpIHsKLSAgICAgICAgICAgICAgICAgICAgRXZlbnRMb2cud3JpdGVFdmVudChFdmVudExvZ1RhZ3MuQUNUSVZJVFlfTEFVTkNIX1RJTUUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtLmlkZW50aXR5SGFzaENvZGUodGhpcyksIHNob3J0Q29tcG9uZW50TmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzVGltZSwgdG90YWxUaW1lKTsKLSAgICAgICAgICAgICAgICAgICAgU3RyaW5nQnVpbGRlciBzYiA9IHNlcnZpY2UubVN0cmluZ0J1aWxkZXI7Ci0gICAgICAgICAgICAgICAgICAgIHNiLnNldExlbmd0aCgwKTsKLSAgICAgICAgICAgICAgICAgICAgc2IuYXBwZW5kKCJEaXNwbGF5ZWQgYWN0aXZpdHkgIik7Ci0gICAgICAgICAgICAgICAgICAgIHNiLmFwcGVuZChzaG9ydENvbXBvbmVudE5hbWUpOwotICAgICAgICAgICAgICAgICAgICBzYi5hcHBlbmQoIjogIik7Ci0gICAgICAgICAgICAgICAgICAgIHNiLmFwcGVuZCh0aGlzVGltZSk7Ci0gICAgICAgICAgICAgICAgICAgIHNiLmFwcGVuZCgiIG1zICh0b3RhbCAiKTsKLSAgICAgICAgICAgICAgICAgICAgc2IuYXBwZW5kKHRvdGFsVGltZSk7Ci0gICAgICAgICAgICAgICAgICAgIHNiLmFwcGVuZCgiIG1zKSIpOwotICAgICAgICAgICAgICAgICAgICBMb2cuaShBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlLlRBRywgc2IudG9TdHJpbmcoKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHNlcnZpY2UucmVwb3J0QWN0aXZpdHlMYXVuY2hlZExvY2tlZChmYWxzZSwgdGhpcywgdGhpc1RpbWUsIHRvdGFsVGltZSk7Ci0gICAgICAgICAgICAgICAgaWYgKHRvdGFsVGltZSA+IDApIHsKLSAgICAgICAgICAgICAgICAgICAgc2VydmljZS5tVXNhZ2VTdGF0c1NlcnZpY2Uubm90ZUxhdW5jaFRpbWUocmVhbEFjdGl2aXR5LCAoaW50KXRvdGFsVGltZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHN0YXJ0VGltZSA9IDA7Ci0gICAgICAgICAgICAgICAgc2VydmljZS5tSW5pdGlhbFN0YXJ0VGltZSA9IDA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBzZXJ2aWNlLnJlcG9ydEFjdGl2aXR5VmlzaWJsZUxvY2tlZCh0aGlzKTsKLSAgICAgICAgICAgIGlmIChBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlLkRFQlVHX1NXSVRDSCkgTG9nLnYoCi0gICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5TWFuYWdlclNlcnZpY2UuVEFHLCAid2luZG93c1Zpc2libGUoKTogIiArIHRoaXMpOwotICAgICAgICAgICAgaWYgKCFub3dWaXNpYmxlKSB7Ci0gICAgICAgICAgICAgICAgbm93VmlzaWJsZSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgaWYgKCFpZGxlKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEluc3RlYWQgb2YgZG9pbmcgdGhlIGZ1bGwgc3RvcCByb3V0aW5lIGhlcmUsIGxldCdzIGp1c3QKLSAgICAgICAgICAgICAgICAgICAgLy8gaGlkZSBhbnkgYWN0aXZpdGllcyB3ZSBub3cgY2FuLCBhbmQgbGV0IHRoZW0gc3RvcCB3aGVuCi0gICAgICAgICAgICAgICAgICAgIC8vIHRoZSBub3JtYWwgaWRsZSBoYXBwZW5zLgotICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlLnByb2Nlc3NTdG9wcGluZ0FjdGl2aXRpZXNMb2NrZWQoZmFsc2UpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIElmIHRoaXMgYWN0aXZpdHkgd2FzIGFscmVhZHkgaWRsZSwgdGhlbiB3ZSBub3cgbmVlZCB0bwotICAgICAgICAgICAgICAgICAgICAvLyBtYWtlIHN1cmUgd2UgcGVyZm9ybSB0aGUgZnVsbCBzdG9wIG9mIGFueSBhY3Rpdml0aWVzCi0gICAgICAgICAgICAgICAgICAgIC8vIHRoYXQgYXJlIHdhaXRpbmcgdG8gZG8gc28uICBUaGlzIGlzIGJlY2F1c2Ugd2Ugd29uJ3QKLSAgICAgICAgICAgICAgICAgICAgLy8gZG8gdGhhdCB3aGlsZSB0aGV5IGFyZSBzdGlsbCB3YWl0aW5nIGZvciB0aGlzIG9uZSB0bwotICAgICAgICAgICAgICAgICAgICAvLyBiZWNvbWUgdmlzaWJsZS4KLSAgICAgICAgICAgICAgICAgICAgZmluYWwgaW50IE4gPSBzZXJ2aWNlLm1XYWl0aW5nVmlzaWJsZUFjdGl2aXRpZXMuc2l6ZSgpOwotICAgICAgICAgICAgICAgICAgICBpZiAoTiA+IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxOOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBIaXN0b3J5UmVjb3JkIHIgPSAoSGlzdG9yeVJlY29yZCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmljZS5tV2FpdGluZ1Zpc2libGVBY3Rpdml0aWVzLmdldChpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByLndhaXRpbmdWaXNpYmxlID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEFjdGl2aXR5TWFuYWdlclNlcnZpY2UuREVCVUdfU1dJVENIKSBMb2cudigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFjdGl2aXR5TWFuYWdlclNlcnZpY2UuVEFHLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIldhcyB3YWl0aW5nIGZvciB2aXNpYmxlOiAiICsgcik7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlLm1XYWl0aW5nVmlzaWJsZUFjdGl2aXRpZXMuY2xlYXIoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIE1lc3NhZ2UgbXNnID0gTWVzc2FnZS5vYnRhaW4oKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1zZy53aGF0ID0gQWN0aXZpdHlNYW5hZ2VyU2VydmljZS5JRExFX05PV19NU0c7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlLm1IYW5kbGVyLnNlbmRNZXNzYWdlKG1zZyk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgc2VydmljZS5zY2hlZHVsZUFwcEdjc0xvY2tlZCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgd2luZG93c0dvbmUoKSB7Ci0gICAgICAgIGlmIChBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlLkRFQlVHX1NXSVRDSCkgTG9nLnYoCi0gICAgICAgICAgICAgICAgQWN0aXZpdHlNYW5hZ2VyU2VydmljZS5UQUcsICJ3aW5kb3dzR29uZSgpOiAiICsgdGhpcyk7Ci0gICAgICAgIG5vd1Zpc2libGUgPSBmYWxzZTsKLSAgICB9Ci0gICAgCi0gICAgcHJpdmF0ZSBIaXN0b3J5UmVjb3JkIGdldFdhaXRpbmdIaXN0b3J5UmVjb3JkTG9ja2VkKCkgewotICAgICAgICAvLyBGaXJzdCBmaW5kIHRoZSByZWFsIGN1bHByaXQuLi4gIGlmIHdlIGFyZSB3YWl0aW5nCi0gICAgICAgIC8vIGZvciBhbm90aGVyIGFwcCB0byBzdGFydCwgdGhlbiB3ZSBoYXZlIHBhdXNlZCBkaXNwYXRjaGluZwotICAgICAgICAvLyBmb3IgdGhpcyBhY3Rpdml0eS4KLSAgICAgICAgSGlzdG9yeVJlY29yZCByID0gdGhpczsKLSAgICAgICAgaWYgKHIud2FpdGluZ1Zpc2libGUpIHsKLSAgICAgICAgICAgIC8vIEhtbW0sIHdobyBtaWdodCB3ZSBiZSB3YWl0aW5nIGZvcj8KLSAgICAgICAgICAgIHIgPSBzZXJ2aWNlLm1SZXN1bWVkQWN0aXZpdHk7Ci0gICAgICAgICAgICBpZiAociA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgciA9IHNlcnZpY2UubVBhdXNpbmdBY3Rpdml0eTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8vIEJvdGggb2YgdGhvc2UgbnVsbD8gIEZhbGwgYmFjayB0byAndGhpcycgYWdhaW4KLSAgICAgICAgICAgIGlmIChyID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICByID0gdGhpczsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgcmV0dXJuIHI7Ci0gICAgfQotCi0gICAgcHVibGljIGJvb2xlYW4ga2V5RGlzcGF0Y2hpbmdUaW1lZE91dCgpIHsKLSAgICAgICAgSGlzdG9yeVJlY29yZCByOwotICAgICAgICBQcm9jZXNzUmVjb3JkIGFuckFwcCA9IG51bGw7Ci0gICAgICAgIHN5bmNocm9uaXplZChzZXJ2aWNlKSB7Ci0gICAgICAgICAgICByID0gZ2V0V2FpdGluZ0hpc3RvcnlSZWNvcmRMb2NrZWQoKTsKLSAgICAgICAgICAgIGlmIChyICE9IG51bGwgJiYgci5hcHAgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIGlmIChyLmFwcC5kZWJ1Z2dpbmcpIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAoc2VydmljZS5tRGlkRGV4T3B0KSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEdpdmUgbW9yZSB0aW1lIHNpbmNlIHdlIHdlcmUgZGV4b3B0aW5nLgotICAgICAgICAgICAgICAgICAgICBzZXJ2aWNlLm1EaWREZXhPcHQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBpZiAoci5hcHAuaW5zdHJ1bWVudGF0aW9uQ2xhc3MgPT0gbnVsbCkgeyAKLSAgICAgICAgICAgICAgICAgICAgYW5yQXBwID0gci5hcHA7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgQnVuZGxlIGluZm8gPSBuZXcgQnVuZGxlKCk7Ci0gICAgICAgICAgICAgICAgICAgIGluZm8ucHV0U3RyaW5nKCJzaG9ydE1zZyIsICJrZXlEaXNwYXRjaGluZ1RpbWVkT3V0Iik7Ci0gICAgICAgICAgICAgICAgICAgIGluZm8ucHV0U3RyaW5nKCJsb25nTXNnIiwgIlRpbWVkIG91dCB3aGlsZSBkaXNwYXRjaGluZyBrZXkgZXZlbnQiKTsKLSAgICAgICAgICAgICAgICAgICAgc2VydmljZS5maW5pc2hJbnN0cnVtZW50YXRpb25Mb2NrZWQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgci5hcHAsIEFjdGl2aXR5LlJFU1VMVF9DQU5DRUxFRCwgaW5mbyk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAoYW5yQXBwICE9IG51bGwpIHsKLSAgICAgICAgICAgIHNlcnZpY2UuYXBwTm90UmVzcG9uZGluZyhhbnJBcHAsIHIsIHRoaXMsCi0gICAgICAgICAgICAgICAgICAgICJrZXlEaXNwYXRjaGluZ1RpbWVkT3V0Iik7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICAKLSAgICAvKiogUmV0dXJucyB0aGUga2V5IGRpc3BhdGNoaW5nIHRpbWVvdXQgZm9yIHRoaXMgYXBwbGljYXRpb24gdG9rZW4uICovCi0gICAgcHVibGljIGxvbmcgZ2V0S2V5RGlzcGF0Y2hpbmdUaW1lb3V0KCkgewotICAgICAgICBzeW5jaHJvbml6ZWQoc2VydmljZSkgewotICAgICAgICAgICAgSGlzdG9yeVJlY29yZCByID0gZ2V0V2FpdGluZ0hpc3RvcnlSZWNvcmRMb2NrZWQoKTsKLSAgICAgICAgICAgIGlmIChyID09IG51bGwgfHwgci5hcHAgPT0gbnVsbAotICAgICAgICAgICAgICAgICAgICB8fCByLmFwcC5pbnN0cnVtZW50YXRpb25DbGFzcyA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEFjdGl2aXR5TWFuYWdlclNlcnZpY2UuS0VZX0RJU1BBVENISU5HX1RJTUVPVVQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIHJldHVybiBBY3Rpdml0eU1hbmFnZXJTZXJ2aWNlLklOU1RSVU1FTlRBVElPTl9LRVlfRElTUEFUQ0hJTkdfVElNRU9VVDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8qKgotICAgICAqIFRoaXMgbWV0aG9kIHdpbGwgcmV0dXJuIHRydWUgaWYgdGhlIGFjdGl2aXR5IGlzIGVpdGhlciB2aXNpYmxlLCBpcyBiZWNvbWluZyB2aXNpYmxlLCBpcwotICAgICAqIGN1cnJlbnRseSBwYXVzaW5nLCBvciBpcyByZXN1bWVkLgotICAgICAqLwotICAgIHB1YmxpYyBib29sZWFuIGlzSW50ZXJlc3RpbmdUb1VzZXJMb2NrZWQoKSB7Ci0gICAgICAgIHJldHVybiB2aXNpYmxlIHx8IG5vd1Zpc2libGUgfHwgc3RhdGUgPT0gQWN0aXZpdHlTdGF0ZS5QQVVTSU5HIHx8IAotICAgICAgICAgICAgICAgIHN0YXRlID09IEFjdGl2aXR5U3RhdGUuUkVTVU1FRDsKLSAgICAgfQotICAgIAotICAgIAotICAgIHB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7Ci0gICAgICAgIGlmIChzdHJpbmdOYW1lICE9IG51bGwpIHsKLSAgICAgICAgICAgIHJldHVybiBzdHJpbmdOYW1lOwotICAgICAgICB9Ci0gICAgICAgIFN0cmluZ0J1aWxkZXIgc2IgPSBuZXcgU3RyaW5nQnVpbGRlcigxMjgpOwotICAgICAgICBzYi5hcHBlbmQoIkhpc3RvcnlSZWNvcmR7Iik7Ci0gICAgICAgIHNiLmFwcGVuZChJbnRlZ2VyLnRvSGV4U3RyaW5nKFN5c3RlbS5pZGVudGl0eUhhc2hDb2RlKHRoaXMpKSk7Ci0gICAgICAgIHNiLmFwcGVuZCgnICcpOwotICAgICAgICBzYi5hcHBlbmQoaW50ZW50LmdldENvbXBvbmVudCgpLmZsYXR0ZW5Ub1Nob3J0U3RyaW5nKCkpOwotICAgICAgICBzYi5hcHBlbmQoJ30nKTsKLSAgICAgICAgcmV0dXJuIHN0cmluZ05hbWUgPSBzYi50b1N0cmluZygpOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2FtL1BlbmRpbmdJbnRlbnRSZWNvcmQuamF2YSBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2FtL1BlbmRpbmdJbnRlbnRSZWNvcmQuamF2YQppbmRleCA4NDdlOTFiLi43YTg1ZWI4IDEwMDY0NAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9QZW5kaW5nSW50ZW50UmVjb3JkLmphdmEKKysrIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvYW0vUGVuZGluZ0ludGVudFJlY29yZC5qYXZhCkBAIC00Miw3ICs0Miw3IEBACiAgICAgZmluYWwgc3RhdGljIGNsYXNzIEtleSB7CiAgICAgICAgIGZpbmFsIGludCB0eXBlOwogICAgICAgICBmaW5hbCBTdHJpbmcgcGFja2FnZU5hbWU7Ci0gICAgICAgIGZpbmFsIEhpc3RvcnlSZWNvcmQgYWN0aXZpdHk7CisgICAgICAgIGZpbmFsIEFjdGl2aXR5UmVjb3JkIGFjdGl2aXR5OwogICAgICAgICBmaW5hbCBTdHJpbmcgd2hvOwogICAgICAgICBmaW5hbCBpbnQgcmVxdWVzdENvZGU7CiAgICAgICAgIGZpbmFsIEludGVudCByZXF1ZXN0SW50ZW50OwpAQCAtNTIsNyArNTIsNyBAQAogICAgICAgICAKICAgICAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE9ERF9QUklNRV9OVU1CRVIgPSAzNzsKICAgICAgICAgCi0gICAgICAgIEtleShpbnQgX3QsIFN0cmluZyBfcCwgSGlzdG9yeVJlY29yZCBfYSwgU3RyaW5nIF93LAorICAgICAgICBLZXkoaW50IF90LCBTdHJpbmcgX3AsIEFjdGl2aXR5UmVjb3JkIF9hLCBTdHJpbmcgX3csCiAgICAgICAgICAgICAgICAgaW50IF9yLCBJbnRlbnQgX2ksIFN0cmluZyBfaXQsIGludCBfZikgewogICAgICAgICAgICAgdHlwZSA9IF90OwogICAgICAgICAgICAgcGFja2FnZU5hbWUgPSBfcDsKQEAgLTIxOCw3ICsyMTgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgIGNhc2UgSUFjdGl2aXR5TWFuYWdlci5JTlRFTlRfU0VOREVSX0FDVElWSVRZX1JFU1VMVDoKLSAgICAgICAgICAgICAgICAgICAgICAgIG93bmVyLnNlbmRBY3Rpdml0eVJlc3VsdExvY2tlZCgtMSwga2V5LmFjdGl2aXR5LAorICAgICAgICAgICAgICAgICAgICAgICAga2V5LmFjdGl2aXR5LnN0YWNrLnNlbmRBY3Rpdml0eVJlc3VsdExvY2tlZCgtMSwga2V5LmFjdGl2aXR5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXkud2hvLCBrZXkucmVxdWVzdENvZGUsIGNvZGUsIGZpbmFsSW50ZW50KTsKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICBjYXNlIElBY3Rpdml0eU1hbmFnZXIuSU5URU5UX1NFTkRFUl9CUk9BRENBU1Q6CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9Qcm9jZXNzUmVjb3JkLmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9Qcm9jZXNzUmVjb3JkLmphdmEKaW5kZXggZjQ5YTE4Mi4uMThiMWFjYiAxMDA2NDQKLS0tIGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvYW0vUHJvY2Vzc1JlY29yZC5qYXZhCisrKyBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2FtL1Byb2Nlc3NSZWNvcmQuamF2YQpAQCAtMjgsNyArMjgsNiBAQAogaW1wb3J0IGFuZHJvaWQub3MuQnVuZGxlOwogaW1wb3J0IGFuZHJvaWQub3MuSUJpbmRlcjsKIGltcG9ydCBhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbjsKLWltcG9ydCBhbmRyb2lkLm9zLlN5c3RlbUNsb2NrOwogaW1wb3J0IGFuZHJvaWQudXRpbC5QcmludFdyaXRlclByaW50ZXI7CiAKIGltcG9ydCBqYXZhLmlvLlByaW50V3JpdGVyOwpAQCAtNDAsMTIgKzM5LDEyIEBACiAgKiBGdWxsIGluZm9ybWF0aW9uIGFib3V0IGEgcGFydGljdWxhciBwcm9jZXNzIHRoYXQKICAqIGlzIGN1cnJlbnRseSBydW5uaW5nLgogICovCi1jbGFzcyBQcm9jZXNzUmVjb3JkIGltcGxlbWVudHMgV2F0Y2hkb2cuUHNzUmVxdWVzdG9yIHsKK2NsYXNzIFByb2Nlc3NSZWNvcmQgewogICAgIGZpbmFsIEJhdHRlcnlTdGF0c0ltcGwuVWlkLlByb2MgYmF0dGVyeVN0YXRzOyAvLyB3aGVyZSB0byBjb2xsZWN0IHJ1bnRpbWUgc3RhdGlzdGljcwogICAgIGZpbmFsIEFwcGxpY2F0aW9uSW5mbyBpbmZvOyAvLyBhbGwgYWJvdXQgdGhlIGZpcnN0IGFwcCBpbiB0aGUgcHJvY2VzcwogICAgIGZpbmFsIFN0cmluZyBwcm9jZXNzTmFtZTsgICAvLyBuYW1lIG9mIHRoZSBwcm9jZXNzCiAgICAgLy8gTGlzdCBvZiBwYWNrYWdlcyBydW5uaW5nIGluIHRoZSBwcm9jZXNzCi0gICAgZmluYWwgSGFzaFNldDxTdHJpbmc+IHBrZ0xpc3QgPSBuZXcgSGFzaFNldCgpOworICAgIGZpbmFsIEhhc2hTZXQ8U3RyaW5nPiBwa2dMaXN0ID0gbmV3IEhhc2hTZXQ8U3RyaW5nPigpOwogICAgIElBcHBsaWNhdGlvblRocmVhZCB0aHJlYWQ7ICAvLyB0aGUgYWN0dWFsIHByb2MuLi4gIG1heSBiZSBudWxsIG9ubHkgaWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gJ3BlcnNpc3RlbnQnIGlzIHRydWUgKGluIHdoaWNoIGNhc2Ugd2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXJlIGluIHRoZSBwcm9jZXNzIG9mIGxhdW5jaGluZyB0aGUgYXBwKQpAQCAtODcsOSArODYsOSBAQAogICAgIE9iamVjdCBhZGpUYXJnZXQ7ICAgICAgICAgICAvLyBEZWJ1Z2dpbmc6IHRhcmdldCBjb21wb25lbnQgaW1wYWN0aW5nIG9vbV9hZGouCiAgICAgCiAgICAgLy8gY29udGFpbnMgSGlzdG9yeVJlY29yZCBvYmplY3RzCi0gICAgZmluYWwgQXJyYXlMaXN0IGFjdGl2aXRpZXMgPSBuZXcgQXJyYXlMaXN0KCk7CisgICAgZmluYWwgQXJyYXlMaXN0PEFjdGl2aXR5UmVjb3JkPiBhY3Rpdml0aWVzID0gbmV3IEFycmF5TGlzdDxBY3Rpdml0eVJlY29yZD4oKTsKICAgICAvLyBhbGwgU2VydmljZVJlY29yZCBydW5uaW5nIGluIHRoaXMgcHJvY2VzcwotICAgIGZpbmFsIEhhc2hTZXQgc2VydmljZXMgPSBuZXcgSGFzaFNldCgpOworICAgIGZpbmFsIEhhc2hTZXQ8U2VydmljZVJlY29yZD4gc2VydmljZXMgPSBuZXcgSGFzaFNldDxTZXJ2aWNlUmVjb3JkPigpOwogICAgIC8vIHNlcnZpY2VzIHRoYXQgYXJlIGN1cnJlbnRseSBleGVjdXRpbmcgY29kZSAobmVlZCB0byByZW1haW4gZm9yZWdyb3VuZCkuCiAgICAgZmluYWwgSGFzaFNldDxTZXJ2aWNlUmVjb3JkPiBleGVjdXRpbmdTZXJ2aWNlcwogICAgICAgICAgICAgID0gbmV3IEhhc2hTZXQ8U2VydmljZVJlY29yZD4oKTsKQEAgLTk5LDcgKzk4LDggQEAKICAgICAvLyBhbGwgSUludGVudFJlY2VpdmVycyB0aGF0IGFyZSByZWdpc3RlcmVkIGZyb20gdGhpcyBwcm9jZXNzLgogICAgIGZpbmFsIEhhc2hTZXQ8UmVjZWl2ZXJMaXN0PiByZWNlaXZlcnMgPSBuZXcgSGFzaFNldDxSZWNlaXZlckxpc3Q+KCk7CiAgICAgLy8gY2xhc3MgKFN0cmluZykgLT4gQ29udGVudFByb3ZpZGVyUmVjb3JkCi0gICAgZmluYWwgSGFzaE1hcCBwdWJQcm92aWRlcnMgPSBuZXcgSGFzaE1hcCgpOyAKKyAgICBmaW5hbCBIYXNoTWFwPFN0cmluZywgQ29udGVudFByb3ZpZGVyUmVjb3JkPiBwdWJQcm92aWRlcnMKKyAgICAgICAgICAgID0gbmV3IEhhc2hNYXA8U3RyaW5nLCBDb250ZW50UHJvdmlkZXJSZWNvcmQ+KCk7IAogICAgIC8vIEFsbCBDb250ZW50UHJvdmlkZXJSZWNvcmQgcHJvY2VzcyBpcyB1c2luZwogICAgIGZpbmFsIEhhc2hNYXA8Q29udGVudFByb3ZpZGVyUmVjb3JkLCBJbnRlZ2VyPiBjb25Qcm92aWRlcnMKICAgICAgICAgICAgID0gbmV3IEhhc2hNYXA8Q29udGVudFByb3ZpZGVyUmVjb3JkLCBJbnRlZ2VyPigpOyAKQEAgLTEyOCw3ICsxMjgsNiBAQAogICAgIENvbXBvbmVudE5hbWUgZXJyb3JSZXBvcnRSZWNlaXZlcjsKIAogICAgIHZvaWQgZHVtcChQcmludFdyaXRlciBwdywgU3RyaW5nIHByZWZpeCkgewotICAgICAgICBsb25nIG5vdyA9IFN5c3RlbUNsb2NrLnVwdGltZU1pbGxpcygpOwogICAgICAgICBpZiAoaW5mby5jbGFzc05hbWUgIT0gbnVsbCkgewogICAgICAgICAgICAgcHcucHJpbnQocHJlZml4KTsgcHcucHJpbnQoImNsYXNzPSIpOyBwdy5wcmludGxuKGluZm8uY2xhc3NOYW1lKTsKICAgICAgICAgfQpAQCAtMjQ5LDcgKzI0OCw3IEBACiAgICAgcHVibGljIGJvb2xlYW4gaXNJbnRlcmVzdGluZ1RvVXNlckxvY2tlZCgpIHsKICAgICAgICAgZmluYWwgaW50IHNpemUgPSBhY3Rpdml0aWVzLnNpemUoKTsKICAgICAgICAgZm9yIChpbnQgaSA9IDAgOyBpIDwgc2l6ZSA7IGkrKykgewotICAgICAgICAgICAgSGlzdG9yeVJlY29yZCByID0gKEhpc3RvcnlSZWNvcmQpIGFjdGl2aXRpZXMuZ2V0KGkpOworICAgICAgICAgICAgQWN0aXZpdHlSZWNvcmQgciA9IGFjdGl2aXRpZXMuZ2V0KGkpOwogICAgICAgICAgICAgaWYgKHIuaXNJbnRlcmVzdGluZ1RvVXNlckxvY2tlZCgpKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CkBAIC0yNjEsMTcgKzI2MCw3IEBACiAgICAgICAgIGludCBpID0gYWN0aXZpdGllcy5zaXplKCk7CiAgICAgICAgIHdoaWxlIChpID4gMCkgewogICAgICAgICAgICAgaS0tOwotICAgICAgICAgICAgKChIaXN0b3J5UmVjb3JkKWFjdGl2aXRpZXMuZ2V0KGkpKS5zdG9wRnJlZXppbmdTY3JlZW5Mb2NrZWQodHJ1ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgcHVibGljIHZvaWQgcmVxdWVzdFBzcygpIHsKLSAgICAgICAgSUFwcGxpY2F0aW9uVGhyZWFkIGxvY2FsVGhyZWFkID0gdGhyZWFkOwotICAgICAgICBpZiAobG9jYWxUaHJlYWQgIT0gbnVsbCkgewotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBsb2NhbFRocmVhZC5yZXF1ZXN0UHNzKCk7Ci0gICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgfQorICAgICAgICAgICAgYWN0aXZpdGllcy5nZXQoaSkuc3RvcEZyZWV6aW5nU2NyZWVuTG9ja2VkKHRydWUpOwogICAgICAgICB9CiAgICAgfQogICAgIApkaWZmIC0tZ2l0IGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvYW0vU3RyaWN0TW9kZVZpb2xhdGlvbkRpYWxvZy5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvYW0vU3RyaWN0TW9kZVZpb2xhdGlvbkRpYWxvZy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlNzZkMTgKLS0tIC9kZXYvbnVsbAorKysgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9TdHJpY3RNb2RlVmlvbGF0aW9uRGlhbG9nLmphdmEKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuc2VydmVyLmFtOworCitpbXBvcnQgc3RhdGljIGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX1NZU1RFTV9FUlJPUjsKKworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2U7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXM7CitpbXBvcnQgYW5kcm9pZC5vcy5IYW5kbGVyOworaW1wb3J0IGFuZHJvaWQub3MuTWVzc2FnZTsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuU2xvZzsKKworY2xhc3MgU3RyaWN0TW9kZVZpb2xhdGlvbkRpYWxvZyBleHRlbmRzIEJhc2VFcnJvckRpYWxvZyB7CisgICAgcHJpdmF0ZSBmaW5hbCBzdGF0aWMgU3RyaW5nIFRBRyA9ICJTdHJpY3RNb2RlVmlvbGF0aW9uRGlhbG9nIjsKKworICAgIHByaXZhdGUgZmluYWwgQXBwRXJyb3JSZXN1bHQgbVJlc3VsdDsKKyAgICBwcml2YXRlIGZpbmFsIFByb2Nlc3NSZWNvcmQgbVByb2M7CisKKyAgICAvLyBFdmVudCAnd2hhdCcgY29kZXMKKyAgICBzdGF0aWMgZmluYWwgaW50IEFDVElPTl9PSyA9IDA7CisgICAgc3RhdGljIGZpbmFsIGludCBBQ1RJT05fT0tfQU5EX1JFUE9SVCA9IDE7CisKKyAgICAvLyAxLW1pbnV0ZSB0aW1lb3V0LCB0aGVuIHdlIGF1dG9tYXRpY2FsbHkgZGlzbWlzcyB0aGUgdmlvbGF0aW9uCisgICAgLy8gZGlhbG9nCisgICAgc3RhdGljIGZpbmFsIGxvbmcgRElTTUlTU19USU1FT1VUID0gMTAwMCAqIDYwICogMTsKKworICAgIHB1YmxpYyBTdHJpY3RNb2RlVmlvbGF0aW9uRGlhbG9nKENvbnRleHQgY29udGV4dCwgQXBwRXJyb3JSZXN1bHQgcmVzdWx0LCBQcm9jZXNzUmVjb3JkIGFwcCkgeworICAgICAgICBzdXBlcihjb250ZXh0KTsKKworICAgICAgICBSZXNvdXJjZXMgcmVzID0gY29udGV4dC5nZXRSZXNvdXJjZXMoKTsKKworICAgICAgICBtUHJvYyA9IGFwcDsKKyAgICAgICAgbVJlc3VsdCA9IHJlc3VsdDsKKyAgICAgICAgQ2hhclNlcXVlbmNlIG5hbWU7CisgICAgICAgIGlmICgoYXBwLnBrZ0xpc3Quc2l6ZSgpID09IDEpICYmCisgICAgICAgICAgICAgICAgKG5hbWU9Y29udGV4dC5nZXRQYWNrYWdlTWFuYWdlcigpLmdldEFwcGxpY2F0aW9uTGFiZWwoYXBwLmluZm8pKSAhPSBudWxsKSB7CisgICAgICAgICAgICBzZXRNZXNzYWdlKHJlcy5nZXRTdHJpbmcoCisgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLnNtdl9hcHBsaWNhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgbmFtZS50b1N0cmluZygpLCBhcHAuaW5mby5wcm9jZXNzTmFtZSkpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbmFtZSA9IGFwcC5wcm9jZXNzTmFtZTsKKyAgICAgICAgICAgIHNldE1lc3NhZ2UocmVzLmdldFN0cmluZygKKyAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcuc212X3Byb2Nlc3MsCisgICAgICAgICAgICAgICAgICAgIG5hbWUudG9TdHJpbmcoKSkpOworICAgICAgICB9CisKKyAgICAgICAgc2V0Q2FuY2VsYWJsZShmYWxzZSk7CisKKyAgICAgICAgc2V0QnV0dG9uKERpYWxvZ0ludGVyZmFjZS5CVVRUT05fUE9TSVRJVkUsCisgICAgICAgICAgICAgICAgICByZXMuZ2V0VGV4dChjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy5kbGdfb2spLAorICAgICAgICAgICAgICAgICAgbUhhbmRsZXIub2J0YWluTWVzc2FnZShBQ1RJT05fT0spKTsKKworICAgICAgICBpZiAoYXBwLmVycm9yUmVwb3J0UmVjZWl2ZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgc2V0QnV0dG9uKERpYWxvZ0ludGVyZmFjZS5CVVRUT05fTkVHQVRJVkUsCisgICAgICAgICAgICAgICAgICAgICAgcmVzLmdldFRleHQoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcucmVwb3J0KSwKKyAgICAgICAgICAgICAgICAgICAgICBtSGFuZGxlci5vYnRhaW5NZXNzYWdlKEFDVElPTl9PS19BTkRfUkVQT1JUKSk7CisgICAgICAgIH0KKworICAgICAgICBzZXRUaXRsZShyZXMuZ2V0VGV4dChjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy5hZXJyX3RpdGxlKSk7CisgICAgICAgIGdldFdpbmRvdygpLmFkZEZsYWdzKEZMQUdfU1lTVEVNX0VSUk9SKTsKKyAgICAgICAgZ2V0V2luZG93KCkuc2V0VGl0bGUoIlN0cmljdCBNb2RlIFZpb2xhdGlvbjogIiArIGFwcC5pbmZvLnByb2Nlc3NOYW1lKTsKKworICAgICAgICAvLyBBZnRlciB0aGUgdGltZW91dCwgcHJldGVuZCB0aGUgdXNlciBjbGlja2VkIHRoZSBxdWl0IGJ1dHRvbgorICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZURlbGF5ZWQoCisgICAgICAgICAgICAgICAgbUhhbmRsZXIub2J0YWluTWVzc2FnZShBQ1RJT05fT0spLAorICAgICAgICAgICAgICAgIERJU01JU1NfVElNRU9VVCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBmaW5hbCBIYW5kbGVyIG1IYW5kbGVyID0gbmV3IEhhbmRsZXIoKSB7CisgICAgICAgIHB1YmxpYyB2b2lkIGhhbmRsZU1lc3NhZ2UoTWVzc2FnZSBtc2cpIHsKKyAgICAgICAgICAgIHN5bmNocm9uaXplZCAobVByb2MpIHsKKyAgICAgICAgICAgICAgICBpZiAobVByb2MgIT0gbnVsbCAmJiBtUHJvYy5jcmFzaERpYWxvZyA9PSBTdHJpY3RNb2RlVmlvbGF0aW9uRGlhbG9nLnRoaXMpIHsKKyAgICAgICAgICAgICAgICAgICAgbVByb2MuY3Jhc2hEaWFsb2cgPSBudWxsOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1SZXN1bHQuc2V0KG1zZy53aGF0KTsKKworICAgICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIHRpbWVvdXQgd2Ugd29uJ3QgYmUgYXV0b21hdGljYWxseSBjbG9zZWQsIHNvIGdvCisgICAgICAgICAgICAvLyBhaGVhZCBhbmQgZXhwbGljaXRseSBkaXNtaXNzIG91cnNlbHZlcyBqdXN0IGluIGNhc2UuCisgICAgICAgICAgICBkaXNtaXNzKCk7CisgICAgICAgIH0KKyAgICB9OworfQpkaWZmIC0tZ2l0IGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvYW0vVXJpUGVybWlzc2lvbi5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvYW0vVXJpUGVybWlzc2lvbi5qYXZhCmluZGV4IGZmYThhMmEuLjgxNDUwYzUgMTAwNjQ0Ci0tLSBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2FtL1VyaVBlcm1pc3Npb24uamF2YQorKysgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9hbS9VcmlQZXJtaXNzaW9uLmphdmEKQEAgLTI3LDggKzI3LDggQEAKICAgICBmaW5hbCBVcmkgdXJpOwogICAgIGludCBtb2RlRmxhZ3MgPSAwOwogICAgIGludCBnbG9iYWxNb2RlRmxhZ3MgPSAwOwotICAgIGZpbmFsIEhhc2hTZXQ8SGlzdG9yeVJlY29yZD4gcmVhZEFjdGl2aXRpZXMgPSBuZXcgSGFzaFNldDxIaXN0b3J5UmVjb3JkPigpOwotICAgIGZpbmFsIEhhc2hTZXQ8SGlzdG9yeVJlY29yZD4gd3JpdGVBY3Rpdml0aWVzID0gbmV3IEhhc2hTZXQ8SGlzdG9yeVJlY29yZD4oKTsKKyAgICBmaW5hbCBIYXNoU2V0PEFjdGl2aXR5UmVjb3JkPiByZWFkQWN0aXZpdGllcyA9IG5ldyBIYXNoU2V0PEFjdGl2aXR5UmVjb3JkPigpOworICAgIGZpbmFsIEhhc2hTZXQ8QWN0aXZpdHlSZWNvcmQ+IHdyaXRlQWN0aXZpdGllcyA9IG5ldyBIYXNoU2V0PEFjdGl2aXR5UmVjb3JkPigpOwogICAgIAogICAgIFN0cmluZyBzdHJpbmdOYW1lOwogICAgIApAQCAtNDIsNyArNDIsNyBAQAogICAgICAgICAgICAgZ2xvYmFsTW9kZUZsYWdzICY9IH5JbnRlbnQuRkxBR19HUkFOVF9SRUFEX1VSSV9QRVJNSVNTSU9OOwogICAgICAgICAgICAgbW9kZUZsYWdzICY9IH5JbnRlbnQuRkxBR19HUkFOVF9SRUFEX1VSSV9QRVJNSVNTSU9OOwogICAgICAgICAgICAgaWYgKHJlYWRBY3Rpdml0aWVzLnNpemUoKSA+IDApIHsKLSAgICAgICAgICAgICAgICBmb3IgKEhpc3RvcnlSZWNvcmQgciA6IHJlYWRBY3Rpdml0aWVzKSB7CisgICAgICAgICAgICAgICAgZm9yIChBY3Rpdml0eVJlY29yZCByIDogcmVhZEFjdGl2aXRpZXMpIHsKICAgICAgICAgICAgICAgICAgICAgci5yZWFkVXJpUGVybWlzc2lvbnMucmVtb3ZlKHRoaXMpOwogICAgICAgICAgICAgICAgICAgICBpZiAoci5yZWFkVXJpUGVybWlzc2lvbnMuc2l6ZSgpID09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHIucmVhZFVyaVBlcm1pc3Npb25zID0gbnVsbDsKQEAgLTU1LDcgKzU1LDcgQEAKICAgICAgICAgICAgIGdsb2JhbE1vZGVGbGFncyAmPSB+SW50ZW50LkZMQUdfR1JBTlRfV1JJVEVfVVJJX1BFUk1JU1NJT047CiAgICAgICAgICAgICBtb2RlRmxhZ3MgJj0gfkludGVudC5GTEFHX0dSQU5UX1dSSVRFX1VSSV9QRVJNSVNTSU9OOwogICAgICAgICAgICAgaWYgKHJlYWRBY3Rpdml0aWVzLnNpemUoKSA+IDApIHsKLSAgICAgICAgICAgICAgICBmb3IgKEhpc3RvcnlSZWNvcmQgciA6IHJlYWRBY3Rpdml0aWVzKSB7CisgICAgICAgICAgICAgICAgZm9yIChBY3Rpdml0eVJlY29yZCByIDogcmVhZEFjdGl2aXRpZXMpIHsKICAgICAgICAgICAgICAgICAgICAgci53cml0ZVVyaVBlcm1pc3Npb25zLnJlbW92ZSh0aGlzKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHIud3JpdGVVcmlQZXJtaXNzaW9ucy5zaXplKCkgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgci53cml0ZVVyaVBlcm1pc3Npb25zID0gbnVsbDsKZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2xvY2F0aW9uL0dlb2NvZGVyUHJveHkuamF2YSBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2xvY2F0aW9uL0dlb2NvZGVyUHJveHkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzA1ZGEyCi0tLSAvZGV2L251bGwKKysrIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvbG9jYXRpb24vR2VvY29kZXJQcm94eS5qYXZhCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5zZXJ2ZXIubG9jYXRpb247CisKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZTsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5TZXJ2aWNlQ29ubmVjdGlvbjsKK2ltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLkFkZHJlc3M7CitpbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5HZW9jb2RlclBhcmFtczsKK2ltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLklHZW9jb2RlUHJvdmlkZXI7CitpbXBvcnQgYW5kcm9pZC5vcy5JQmluZGVyOworaW1wb3J0IGFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uOworaW1wb3J0IGFuZHJvaWQub3MuU3lzdGVtQ2xvY2s7CitpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKKworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCisvKioKKyAqIEEgY2xhc3MgZm9yIHByb3h5aW5nIElHZW9jb2RlUHJvdmlkZXIgaW1wbGVtZW50YXRpb25zLgorICoKKyAqIHtAaGlkZX0KKyAqLworcHVibGljIGNsYXNzIEdlb2NvZGVyUHJveHkgeworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9ICJHZW9jb2RlclByb3h5IjsKKworICAgIHByaXZhdGUgZmluYWwgQ29udGV4dCBtQ29udGV4dDsKKyAgICBwcml2YXRlIGZpbmFsIEludGVudCBtSW50ZW50OworICAgIHByaXZhdGUgZmluYWwgQ29ubmVjdGlvbiBtU2VydmljZUNvbm5lY3Rpb24gPSBuZXcgQ29ubmVjdGlvbigpOworICAgIHByaXZhdGUgSUdlb2NvZGVQcm92aWRlciBtUHJvdmlkZXI7CisKKyAgICBwdWJsaWMgR2VvY29kZXJQcm94eShDb250ZXh0IGNvbnRleHQsIFN0cmluZyBzZXJ2aWNlTmFtZSkgeworICAgICAgICBtQ29udGV4dCA9IGNvbnRleHQ7CisgICAgICAgIG1JbnRlbnQgPSBuZXcgSW50ZW50KHNlcnZpY2VOYW1lKTsKKyAgICAgICAgbUNvbnRleHQuYmluZFNlcnZpY2UobUludGVudCwgbVNlcnZpY2VDb25uZWN0aW9uLCBDb250ZXh0LkJJTkRfQVVUT19DUkVBVEUpOworICAgIH0KKworICAgIHByaXZhdGUgY2xhc3MgQ29ubmVjdGlvbiBpbXBsZW1lbnRzIFNlcnZpY2VDb25uZWN0aW9uIHsKKyAgICAgICAgcHVibGljIHZvaWQgb25TZXJ2aWNlQ29ubmVjdGVkKENvbXBvbmVudE5hbWUgY2xhc3NOYW1lLCBJQmluZGVyIHNlcnZpY2UpIHsKKyAgICAgICAgICAgIExvZy5kKFRBRywgIm9uU2VydmljZUNvbm5lY3RlZCAiICsgY2xhc3NOYW1lKTsKKyAgICAgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgeworICAgICAgICAgICAgICAgIG1Qcm92aWRlciA9IElHZW9jb2RlUHJvdmlkZXIuU3R1Yi5hc0ludGVyZmFjZShzZXJ2aWNlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIG9uU2VydmljZURpc2Nvbm5lY3RlZChDb21wb25lbnROYW1lIGNsYXNzTmFtZSkgeworICAgICAgICAgICAgTG9nLmQoVEFHLCAib25TZXJ2aWNlRGlzY29ubmVjdGVkICIgKyBjbGFzc05hbWUpOworICAgICAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7CisgICAgICAgICAgICAgICAgbVByb3ZpZGVyID0gbnVsbDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBTdHJpbmcgZ2V0RnJvbUxvY2F0aW9uKGRvdWJsZSBsYXRpdHVkZSwgZG91YmxlIGxvbmdpdHVkZSwgaW50IG1heFJlc3VsdHMsCisgICAgICAgICAgICBHZW9jb2RlclBhcmFtcyBwYXJhbXMsIExpc3Q8QWRkcmVzcz4gYWRkcnMpIHsKKyAgICAgICAgSUdlb2NvZGVQcm92aWRlciBwcm92aWRlcjsKKyAgICAgICAgc3luY2hyb25pemVkIChtU2VydmljZUNvbm5lY3Rpb24pIHsKKyAgICAgICAgICAgIHByb3ZpZGVyID0gbVByb3ZpZGVyOworICAgICAgICB9CisgICAgICAgIGlmIChwcm92aWRlciAhPSBudWxsKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHJldHVybiBwcm92aWRlci5nZXRGcm9tTG9jYXRpb24obGF0aXR1ZGUsIGxvbmdpdHVkZSwgbWF4UmVzdWx0cywKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtcywgYWRkcnMpOworICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBMb2cuZShUQUcsICJnZXRGcm9tTG9jYXRpb24gZmFpbGVkIiwgZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuICJTZXJ2aWNlIG5vdCBBdmFpbGFibGUiOworICAgIH0KKworICAgIHB1YmxpYyBTdHJpbmcgZ2V0RnJvbUxvY2F0aW9uTmFtZShTdHJpbmcgbG9jYXRpb25OYW1lLAorICAgICAgICAgICAgZG91YmxlIGxvd2VyTGVmdExhdGl0dWRlLCBkb3VibGUgbG93ZXJMZWZ0TG9uZ2l0dWRlLAorICAgICAgICAgICAgZG91YmxlIHVwcGVyUmlnaHRMYXRpdHVkZSwgZG91YmxlIHVwcGVyUmlnaHRMb25naXR1ZGUsIGludCBtYXhSZXN1bHRzLAorICAgICAgICAgICAgR2VvY29kZXJQYXJhbXMgcGFyYW1zLCBMaXN0PEFkZHJlc3M+IGFkZHJzKSB7CisgICAgICAgIElHZW9jb2RlUHJvdmlkZXIgcHJvdmlkZXI7CisgICAgICAgIHN5bmNocm9uaXplZCAobVNlcnZpY2VDb25uZWN0aW9uKSB7CisgICAgICAgICAgICBwcm92aWRlciA9IG1Qcm92aWRlcjsKKyAgICAgICAgfQorICAgICAgICBpZiAocHJvdmlkZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcHJvdmlkZXIuZ2V0RnJvbUxvY2F0aW9uTmFtZShsb2NhdGlvbk5hbWUsIGxvd2VyTGVmdExhdGl0dWRlLAorICAgICAgICAgICAgICAgICAgICAgICAgbG93ZXJMZWZ0TG9uZ2l0dWRlLCB1cHBlclJpZ2h0TGF0aXR1ZGUsIHVwcGVyUmlnaHRMb25naXR1ZGUsCisgICAgICAgICAgICAgICAgICAgICAgICBtYXhSZXN1bHRzLCBwYXJhbXMsIGFkZHJzKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgTG9nLmUoVEFHLCAiZ2V0RnJvbUxvY2F0aW9uTmFtZSBmYWlsZWQiLCBlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gIlNlcnZpY2Ugbm90IEF2YWlsYWJsZSI7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvbG9jYXRpb24vR3BzTG9jYXRpb25Qcm92aWRlci5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvbG9jYXRpb24vR3BzTG9jYXRpb25Qcm92aWRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjRiNGM3ODQKLS0tIC9kZXYvbnVsbAorKysgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9sb2NhdGlvbi9HcHNMb2NhdGlvblByb3ZpZGVyLmphdmEKQEAgLTAsMCArMSwxNDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5zZXJ2ZXIubG9jYXRpb247CisKK2ltcG9ydCBhbmRyb2lkLmFwcC5BbGFybU1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5hcHAuUGVuZGluZ0ludGVudDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQnJvYWRjYXN0UmVjZWl2ZXI7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50RmlsdGVyOworaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uQ3JpdGVyaWE7CitpbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5JR3BzU3RhdHVzTGlzdGVuZXI7CitpbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5JR3BzU3RhdHVzUHJvdmlkZXI7CitpbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5JTG9jYXRpb25NYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uSU5ldEluaXRpYXRlZExpc3RlbmVyOworaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uTG9jYXRpb247CitpbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5Mb2NhdGlvbk1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5Mb2NhdGlvblByb3ZpZGVyOworaW1wb3J0IGFuZHJvaWQubmV0LkNvbm5lY3Rpdml0eU1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5uZXQuTmV0d29ya0luZm87CitpbXBvcnQgYW5kcm9pZC5uZXQuU250cENsaWVudDsKK2ltcG9ydCBhbmRyb2lkLm9zLkJpbmRlcjsKK2ltcG9ydCBhbmRyb2lkLm9zLkJ1bmRsZTsKK2ltcG9ydCBhbmRyb2lkLm9zLkhhbmRsZXI7CitpbXBvcnQgYW5kcm9pZC5vcy5JQmluZGVyOworaW1wb3J0IGFuZHJvaWQub3MuTG9vcGVyOworaW1wb3J0IGFuZHJvaWQub3MuTWVzc2FnZTsKK2ltcG9ydCBhbmRyb2lkLm9zLlBvd2VyTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLm9zLlByb2Nlc3M7CitpbXBvcnQgYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb247CitpbXBvcnQgYW5kcm9pZC5vcy5TZXJ2aWNlTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLm9zLlN5c3RlbUNsb2NrOworaW1wb3J0IGFuZHJvaWQucHJvdmlkZXIuU2V0dGluZ3M7CitpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuU3BhcnNlSW50QXJyYXk7CisKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5hcHAuSUJhdHRlcnlTdGF0czsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuUGhvbmU7CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwubG9jYXRpb24uR3BzTmV0SW5pdGlhdGVkSGFuZGxlcjsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5sb2NhdGlvbi5HcHNOZXRJbml0aWF0ZWRIYW5kbGVyLkdwc05pTm90aWZpY2F0aW9uOworCitpbXBvcnQgamF2YS5pby5GaWxlOworaW1wb3J0IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5pby5TdHJpbmdCdWZmZXJJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLm5ldC5JbmV0QWRkcmVzczsKK2ltcG9ydCBqYXZhLm5ldC5Vbmtub3duSG9zdEV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5Qcm9wZXJ0aWVzOworaW1wb3J0IGphdmEudXRpbC5NYXAuRW50cnk7CitpbXBvcnQgamF2YS51dGlsLmNvbmN1cnJlbnQuQ291bnREb3duTGF0Y2g7CisKKy8qKgorICogQSBHUFMgaW1wbGVtZW50YXRpb24gb2YgTG9jYXRpb25Qcm92aWRlciB1c2VkIGJ5IExvY2F0aW9uTWFuYWdlci4KKyAqCisgKiB7QGhpZGV9CisgKi8KK3B1YmxpYyBjbGFzcyBHcHNMb2NhdGlvblByb3ZpZGVyIGltcGxlbWVudHMgTG9jYXRpb25Qcm92aWRlckludGVyZmFjZSB7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gIkdwc0xvY2F0aW9uUHJvdmlkZXIiOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgYm9vbGVhbiBERUJVRyA9IGZhbHNlOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gVkVSQk9TRSA9IGZhbHNlOworCisgICAgLy8gdGhlc2UgbmVlZCB0byBtYXRjaCBHcHNQb3NpdGlvbk1vZGUgZW51bSBpbiBncHMuaAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBHUFNfUE9TSVRJT05fTU9ERV9TVEFOREFMT05FID0gMDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgR1BTX1BPU0lUSU9OX01PREVfTVNfQkFTRUQgPSAxOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBHUFNfUE9TSVRJT05fTU9ERV9NU19BU1NJU1RFRCA9IDI7CisKKyAgICAvLyB0aGVzZSBuZWVkIHRvIG1hdGNoIEdwc1Bvc2l0aW9uUmVjdXJyZW5jZSBlbnVtIGluIGdwcy5oCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEdQU19QT1NJVElPTl9SRUNVUlJFTkNFX1BFUklPRElDID0gMDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgR1BTX1BPU0lUSU9OX1JFQ1VSUkVOQ0VfU0lOR0xFID0gMTsKKworICAgIC8vIHRoZXNlIG5lZWQgdG8gbWF0Y2ggR3BzU3RhdHVzVmFsdWUgZGVmaW5lcyBpbiBncHMuaAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBHUFNfU1RBVFVTX05PTkUgPSAwOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBHUFNfU1RBVFVTX1NFU1NJT05fQkVHSU4gPSAxOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBHUFNfU1RBVFVTX1NFU1NJT05fRU5EID0gMjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgR1BTX1NUQVRVU19FTkdJTkVfT04gPSAzOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBHUFNfU1RBVFVTX0VOR0lORV9PRkYgPSA0OworCisgICAgLy8gdGhlc2UgbmVlZCB0byBtYXRjaCBHcHNBcGdzU3RhdHVzVmFsdWUgZGVmaW5lcyBpbiBncHMuaAorICAgIC8qKiBBR1BTIHN0YXR1cyBldmVudCB2YWx1ZXMuICovCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEdQU19SRVFVRVNUX0FHUFNfREFUQV9DT05OID0gMTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgR1BTX1JFTEVBU0VfQUdQU19EQVRBX0NPTk4gPSAyOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBHUFNfQUdQU19EQVRBX0NPTk5FQ1RFRCA9IDM7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEdQU19BR1BTX0RBVEFfQ09OTl9ET05FID0gNDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgR1BTX0FHUFNfREFUQV9DT05OX0ZBSUxFRCA9IDU7CisKKyAgICAvLyB0aGVzZSBuZWVkIHRvIG1hdGNoIEdwc0xvY2F0aW9uRmxhZ3MgZW51bSBpbiBncHMuaAorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBMT0NBVElPTl9JTlZBTElEID0gMDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTE9DQVRJT05fSEFTX0xBVF9MT05HID0gMTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTE9DQVRJT05fSEFTX0FMVElUVURFID0gMjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTE9DQVRJT05fSEFTX1NQRUVEID0gNDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTE9DQVRJT05fSEFTX0JFQVJJTkcgPSA4OworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBMT0NBVElPTl9IQVNfQUNDVVJBQ1kgPSAxNjsKKworLy8gSU1QT1JUQU5UIC0gdGhlIEdQU19ERUxFVEVfKiBzeW1ib2xzIGhlcmUgbXVzdCBtYXRjaCBjb25zdGFudHMgaW4gZ3BzLmgKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgR1BTX0RFTEVURV9FUEhFTUVSSVMgPSAweDAwMDE7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEdQU19ERUxFVEVfQUxNQU5BQyA9IDB4MDAwMjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgR1BTX0RFTEVURV9QT1NJVElPTiA9IDB4MDAwNDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgR1BTX0RFTEVURV9USU1FID0gMHgwMDA4OworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBHUFNfREVMRVRFX0lPTk8gPSAweDAwMTA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEdQU19ERUxFVEVfVVRDID0gMHgwMDIwOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBHUFNfREVMRVRFX0hFQUxUSCA9IDB4MDA0MDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgR1BTX0RFTEVURV9TVkRJUiA9IDB4MDA4MDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgR1BTX0RFTEVURV9TVlNURUVSID0gMHgwMTAwOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBHUFNfREVMRVRFX1NBREFUQSA9IDB4MDIwMDsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgR1BTX0RFTEVURV9SVEkgPSAweDA0MDA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEdQU19ERUxFVEVfQ0VMTERCX0lORk8gPSAweDgwMDA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEdQU19ERUxFVEVfQUxMID0gMHhGRkZGOworCisgICAgLy8gVGhlIEdQU19DQVBBQklMSVRZXyogZmxhZ3MgbXVzdCBtYXRjaCB0aGUgdmFsdWVzIGluIGdwcy5oCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEdQU19DQVBBQklMSVRZX1NDSEVEVUxJTkcgPSAweDAwMDAwMDE7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEdQU19DQVBBQklMSVRZX01TQiA9IDB4MDAwMDAwMjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgR1BTX0NBUEFCSUxJVFlfTVNBID0gMHgwMDAwMDA0OworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBHUFNfQ0FQQUJJTElUWV9TSU5HTEVfU0hPVCA9IDB4MDAwMDAwODsKKworCisgICAgLy8gdGhlc2UgbmVlZCB0byBtYXRjaCBBR3BzVHlwZSBlbnVtIGluIGdwcy5oCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEFHUFNfVFlQRV9TVVBMID0gMTsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQUdQU19UWVBFX0MySyA9IDI7CisKKyAgICAvLyBmb3IgbUFHcHNEYXRhQ29ubmVjdGlvblN0YXRlCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEFHUFNfREFUQV9DT05ORUNUSU9OX0NMT1NFRCA9IDA7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEFHUFNfREFUQV9DT05ORUNUSU9OX09QRU5JTkcgPSAxOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBBR1BTX0RBVEFfQ09OTkVDVElPTl9PUEVOID0gMjsKKworICAgIC8vIEhhbmRsZXIgbWVzc2FnZXMKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgQ0hFQ0tfTE9DQVRJT04gPSAxOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBFTkFCTEUgPSAyOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBFTkFCTEVfVFJBQ0tJTkcgPSAzOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBVUERBVEVfTkVUV09SS19TVEFURSA9IDQ7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IElOSkVDVF9OVFBfVElNRSA9IDU7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IERPV05MT0FEX1hUUkFfREFUQSA9IDY7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFVQREFURV9MT0NBVElPTiA9IDc7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IEFERF9MSVNURU5FUiA9IDg7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFJFTU9WRV9MSVNURU5FUiA9IDk7CisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFJFUVVFU1RfU0lOR0xFX1NIT1QgPSAxMDsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBQUk9QRVJUSUVTX0ZJTEUgPSAiL2V0Yy9ncHMuY29uZiI7CisKKyAgICBwcml2YXRlIGludCBtTG9jYXRpb25GbGFncyA9IExPQ0FUSU9OX0lOVkFMSUQ7CisKKyAgICAvLyBjdXJyZW50IHN0YXR1cworICAgIHByaXZhdGUgaW50IG1TdGF0dXMgPSBMb2NhdGlvblByb3ZpZGVyLlRFTVBPUkFSSUxZX1VOQVZBSUxBQkxFOworCisgICAgLy8gdGltZSBmb3IgbGFzdCBzdGF0dXMgdXBkYXRlCisgICAgcHJpdmF0ZSBsb25nIG1TdGF0dXNVcGRhdGVUaW1lID0gU3lzdGVtQ2xvY2suZWxhcHNlZFJlYWx0aW1lKCk7CisKKyAgICAvLyB0dXJuIG9mZiBHUFMgZml4IGljb24gaWYgd2UgaGF2ZW4ndCByZWNlaXZlZCBhIGZpeCBpbiAxMCBzZWNvbmRzCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBSRUNFTlRfRklYX1RJTUVPVVQgPSAxMCAqIDEwMDA7CisKKyAgICAvLyBzdG9wIHRyeWluZyBpZiB3ZSBkbyBub3QgcmVjZWl2ZSBhIGZpeCB3aXRoaW4gNjAgc2Vjb25kcworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBOT19GSVhfVElNRU9VVCA9IDYwICogMTAwMDsKKworICAgIC8vIHRydWUgaWYgd2UgYXJlIGVuYWJsZWQKKyAgICBwcml2YXRlIHZvbGF0aWxlIGJvb2xlYW4gbUVuYWJsZWQ7CisgICAgCisgICAgLy8gdHJ1ZSBpZiB3ZSBoYXZlIG5ldHdvcmsgY29ubmVjdGl2aXR5CisgICAgcHJpdmF0ZSBib29sZWFuIG1OZXR3b3JrQXZhaWxhYmxlOworCisgICAgLy8gZmxhZ3MgdG8gdHJpZ2dlciBOVFAgb3IgWFRSQSBkYXRhIGRvd25sb2FkIHdoZW4gbmV0d29yayBiZWNvbWVzIGF2YWlsYWJsZQorICAgIC8vIGluaXRpYWxpemVkIHRvIHRydWUgc28gd2UgZG8gTlRQIGFuZCBYVFJBIHdoZW4gdGhlIG5ldHdvcmsgY29tZXMgdXAgYWZ0ZXIgYm9vdGluZworICAgIHByaXZhdGUgYm9vbGVhbiBtSW5qZWN0TnRwVGltZVBlbmRpbmcgPSB0cnVlOworICAgIHByaXZhdGUgYm9vbGVhbiBtRG93bmxvYWRYdHJhRGF0YVBlbmRpbmcgPSB0cnVlOworCisgICAgLy8gdHJ1ZSBpZiBHUFMgaXMgbmF2aWdhdGluZworICAgIHByaXZhdGUgYm9vbGVhbiBtTmF2aWdhdGluZzsKKworICAgIC8vIHRydWUgaWYgR1BTIGVuZ2luZSBpcyBvbgorICAgIHByaXZhdGUgYm9vbGVhbiBtRW5naW5lT247CisgICAgCisgICAgLy8gcmVxdWVzdGVkIGZyZXF1ZW5jeSBvZiBmaXhlcywgaW4gbWlsbGlzZWNvbmRzCisgICAgcHJpdmF0ZSBpbnQgbUZpeEludGVydmFsID0gMTAwMDsKKworICAgIC8vIHRydWUgaWYgd2Ugc3RhcnRlZCBuYXZpZ2F0aW9uCisgICAgcHJpdmF0ZSBib29sZWFuIG1TdGFydGVkOworCisgICAgLy8gdHJ1ZSBpZiBzaW5nbGUgc2hvdCByZXF1ZXN0IGlzIGluIHByb2dyZXNzCisgICAgcHJpdmF0ZSBib29sZWFuIG1TaW5nbGVTaG90OworCisgICAgLy8gY2FwYWJpbGl0aWVzIG9mIHRoZSBHUFMgZW5naW5lCisgICAgcHJpdmF0ZSBpbnQgbUVuZ2luZUNhcGFiaWxpdGllczsKKworICAgIC8vIGZvciBjYWxjdWxhdGluZyB0aW1lIHRvIGZpcnN0IGZpeAorICAgIHByaXZhdGUgbG9uZyBtRml4UmVxdWVzdFRpbWUgPSAwOworICAgIC8vIHRpbWUgdG8gZmlyc3QgZml4IGZvciBtb3N0IHJlY2VudCBzZXNzaW9uCisgICAgcHJpdmF0ZSBpbnQgbVRURkYgPSAwOworICAgIC8vIHRpbWUgd2UgcmVjZWl2ZWQgb3VyIGxhc3QgZml4CisgICAgcHJpdmF0ZSBsb25nIG1MYXN0Rml4VGltZTsKKworICAgIHByaXZhdGUgaW50IG1Qb3NpdGlvbk1vZGU7CisKKyAgICAvLyBwcm9wZXJ0aWVzIGxvYWRlZCBmcm9tIFBST1BFUlRJRVNfRklMRQorICAgIHByaXZhdGUgUHJvcGVydGllcyBtUHJvcGVydGllczsKKyAgICBwcml2YXRlIFN0cmluZyBtTnRwU2VydmVyOworICAgIHByaXZhdGUgU3RyaW5nIG1TdXBsU2VydmVySG9zdDsKKyAgICBwcml2YXRlIGludCBtU3VwbFNlcnZlclBvcnQ7CisgICAgcHJpdmF0ZSBTdHJpbmcgbUMyS1NlcnZlckhvc3Q7CisgICAgcHJpdmF0ZSBpbnQgbUMyS1NlcnZlclBvcnQ7CisKKyAgICBwcml2YXRlIGZpbmFsIENvbnRleHQgbUNvbnRleHQ7CisgICAgcHJpdmF0ZSBmaW5hbCBJTG9jYXRpb25NYW5hZ2VyIG1Mb2NhdGlvbk1hbmFnZXI7CisgICAgcHJpdmF0ZSBMb2NhdGlvbiBtTG9jYXRpb24gPSBuZXcgTG9jYXRpb24oTG9jYXRpb25NYW5hZ2VyLkdQU19QUk9WSURFUik7CisgICAgcHJpdmF0ZSBCdW5kbGUgbUxvY2F0aW9uRXh0cmFzID0gbmV3IEJ1bmRsZSgpOworICAgIHByaXZhdGUgQXJyYXlMaXN0PExpc3RlbmVyPiBtTGlzdGVuZXJzID0gbmV3IEFycmF5TGlzdDxMaXN0ZW5lcj4oKTsKKworICAgIC8vIEdwc0xvY2F0aW9uUHJvdmlkZXIncyBoYW5kbGVyIHRocmVhZAorICAgIHByaXZhdGUgZmluYWwgVGhyZWFkIG1UaHJlYWQ7CisgICAgLy8gSGFuZGxlciBmb3IgcHJvY2Vzc2luZyBldmVudHMgaW4gbVRocmVhZC4KKyAgICBwcml2YXRlIEhhbmRsZXIgbUhhbmRsZXI7CisgICAgLy8gVXNlZCB0byBzaWduYWwgd2hlbiBvdXIgbWFpbiB0aHJlYWQgaGFzIGluaXRpYWxpemVkIGV2ZXJ5dGhpbmcKKyAgICBwcml2YXRlIGZpbmFsIENvdW50RG93bkxhdGNoIG1Jbml0aWFsaXplZExhdGNoID0gbmV3IENvdW50RG93bkxhdGNoKDEpOworCisgICAgcHJpdmF0ZSBTdHJpbmcgbUFHcHNBcG47CisgICAgcHJpdmF0ZSBpbnQgbUFHcHNEYXRhQ29ubmVjdGlvblN0YXRlOworICAgIHByaXZhdGUgZmluYWwgQ29ubmVjdGl2aXR5TWFuYWdlciBtQ29ubk1ncjsKKyAgICBwcml2YXRlIGZpbmFsIEdwc05ldEluaXRpYXRlZEhhbmRsZXIgbU5JSGFuZGxlcjsgCisKKyAgICAvLyBXYWtlbG9ja3MKKyAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBTdHJpbmcgV0FLRUxPQ0tfS0VZID0gIkdwc0xvY2F0aW9uUHJvdmlkZXIiOworICAgIHByaXZhdGUgZmluYWwgUG93ZXJNYW5hZ2VyLldha2VMb2NrIG1XYWtlTG9jazsKKyAgICAvLyBiaXRmaWVsZCBvZiBwZW5kaW5nIG1lc3NhZ2VzIHRvIG91ciBIYW5kbGVyCisgICAgLy8gdXNlZCBvbmx5IGZvciBtZXNzYWdlcyB0aGF0IGNhbm5vdCBoYXZlIG11bHRpcGxlIGluc3RhbmNlcyBxdWV1ZWQKKyAgICBwcml2YXRlIGludCBtUGVuZGluZ01lc3NhZ2VCaXRzOworICAgIC8vIHNlcGFyYXRlIGNvdW50ZXIgZm9yIEFERF9MSVNURU5FUiBhbmQgUkVNT1ZFX0xJU1RFTkVSIG1lc3NhZ2VzLAorICAgIC8vIHdoaWNoIG1pZ2h0IGhhdmUgbXVsdGlwbGUgaW5zdGFuY2VzIHF1ZXVlZAorICAgIHByaXZhdGUgaW50IG1QZW5kaW5nTGlzdGVuZXJNZXNzYWdlczsKKworICAgIC8vIEFsYXJtcworICAgIHByaXZhdGUgZmluYWwgc3RhdGljIFN0cmluZyBBTEFSTV9XQUtFVVAgPSAiY29tLmFuZHJvaWQuaW50ZXJuYWwubG9jYXRpb24uQUxBUk1fV0FLRVVQIjsKKyAgICBwcml2YXRlIGZpbmFsIHN0YXRpYyBTdHJpbmcgQUxBUk1fVElNRU9VVCA9ICJjb20uYW5kcm9pZC5pbnRlcm5hbC5sb2NhdGlvbi5BTEFSTV9USU1FT1VUIjsKKyAgICBwcml2YXRlIGZpbmFsIEFsYXJtTWFuYWdlciBtQWxhcm1NYW5hZ2VyOworICAgIHByaXZhdGUgZmluYWwgUGVuZGluZ0ludGVudCBtV2FrZXVwSW50ZW50OworICAgIHByaXZhdGUgZmluYWwgUGVuZGluZ0ludGVudCBtVGltZW91dEludGVudDsKKworICAgIHByaXZhdGUgZmluYWwgSUJhdHRlcnlTdGF0cyBtQmF0dGVyeVN0YXRzOworICAgIHByaXZhdGUgZmluYWwgU3BhcnNlSW50QXJyYXkgbUNsaWVudFVpZHMgPSBuZXcgU3BhcnNlSW50QXJyYXkoKTsKKworICAgIC8vIGhvdyBvZnRlbiB0byByZXF1ZXN0IE5UUCB0aW1lLCBpbiBtaWxsaXNlY29uZHMKKyAgICAvLyBjdXJyZW50IHNldHRpbmcgNCBob3VycworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgTlRQX0lOVEVSVkFMID0gNCo2MCo2MCoxMDAwOworICAgIC8vIGhvdyBsb25nIHRvIHdhaXQgaWYgd2UgaGF2ZSBhIG5ldHdvcmsgZXJyb3IgaW4gTlRQIG9yIFhUUkEgZG93bmxvYWRpbmcKKyAgICAvLyBjdXJyZW50IHNldHRpbmcgLSA1IG1pbnV0ZXMKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIFJFVFJZX0lOVEVSVkFMID0gNSo2MCoxMDAwOworCisgICAgLy8gdG8gYXZvaWQgaW5qZWN0aW5nIGJhZCBOVFAgdGltZSwgd2UgcmVqZWN0IGFueSB0aW1lIGZpeGVzIHRoYXQgZGlmZmVyIGZyb20gc3lzdGVtIHRpbWUKKyAgICAvLyBieSBtb3JlIHRoYW4gNSBtaW51dGVzLgorICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgTUFYX05UUF9TWVNURU1fVElNRV9PRkZTRVQgPSA1KjYwKjEwMDA7CisKKyAgICBwcml2YXRlIGZpbmFsIElHcHNTdGF0dXNQcm92aWRlciBtR3BzU3RhdHVzUHJvdmlkZXIgPSBuZXcgSUdwc1N0YXR1c1Byb3ZpZGVyLlN0dWIoKSB7CisgICAgICAgIHB1YmxpYyB2b2lkIGFkZEdwc1N0YXR1c0xpc3RlbmVyKElHcHNTdGF0dXNMaXN0ZW5lciBsaXN0ZW5lcikgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7CisgICAgICAgICAgICBpZiAobGlzdGVuZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBOdWxsUG9pbnRlckV4Y2VwdGlvbigibGlzdGVuZXIgaXMgbnVsbCBpbiBhZGRHcHNTdGF0dXNMaXN0ZW5lciIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBzeW5jaHJvbml6ZWQobUxpc3RlbmVycykgeworICAgICAgICAgICAgICAgIElCaW5kZXIgYmluZGVyID0gbGlzdGVuZXIuYXNCaW5kZXIoKTsKKyAgICAgICAgICAgICAgICBpbnQgc2l6ZSA9IG1MaXN0ZW5lcnMuc2l6ZSgpOworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIExpc3RlbmVyIHRlc3QgPSBtTGlzdGVuZXJzLmdldChpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGJpbmRlci5lcXVhbHModGVzdC5tTGlzdGVuZXIuYXNCaW5kZXIoKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxpc3RlbmVyIGFscmVhZHkgYWRkZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIExpc3RlbmVyIGwgPSBuZXcgTGlzdGVuZXIobGlzdGVuZXIpOworICAgICAgICAgICAgICAgIGJpbmRlci5saW5rVG9EZWF0aChsLCAwKTsKKyAgICAgICAgICAgICAgICBtTGlzdGVuZXJzLmFkZChsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHB1YmxpYyB2b2lkIHJlbW92ZUdwc1N0YXR1c0xpc3RlbmVyKElHcHNTdGF0dXNMaXN0ZW5lciBsaXN0ZW5lcikgeworICAgICAgICAgICAgaWYgKGxpc3RlbmVyID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICB0aHJvdyBuZXcgTnVsbFBvaW50ZXJFeGNlcHRpb24oImxpc3RlbmVyIGlzIG51bGwgaW4gYWRkR3BzU3RhdHVzTGlzdGVuZXIiKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgc3luY2hyb25pemVkKG1MaXN0ZW5lcnMpIHsKKyAgICAgICAgICAgICAgICBJQmluZGVyIGJpbmRlciA9IGxpc3RlbmVyLmFzQmluZGVyKCk7CisgICAgICAgICAgICAgICAgTGlzdGVuZXIgbCA9IG51bGw7CisgICAgICAgICAgICAgICAgaW50IHNpemUgPSBtTGlzdGVuZXJzLnNpemUoKTsKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemUgJiYgbCA9PSBudWxsOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgTGlzdGVuZXIgdGVzdCA9IG1MaXN0ZW5lcnMuZ2V0KGkpOworICAgICAgICAgICAgICAgICAgICBpZiAoYmluZGVyLmVxdWFscyh0ZXN0Lm1MaXN0ZW5lci5hc0JpbmRlcigpKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHRlc3Q7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAobCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIG1MaXN0ZW5lcnMucmVtb3ZlKGwpOworICAgICAgICAgICAgICAgICAgICBiaW5kZXIudW5saW5rVG9EZWF0aChsLCAwKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworCisgICAgcHVibGljIElHcHNTdGF0dXNQcm92aWRlciBnZXRHcHNTdGF0dXNQcm92aWRlcigpIHsKKyAgICAgICAgcmV0dXJuIG1HcHNTdGF0dXNQcm92aWRlcjsKKyAgICB9CisKKyAgICBwcml2YXRlIGZpbmFsIEJyb2FkY2FzdFJlY2VpdmVyIG1Ccm9hZGNhc3RSZWNpZXZlciA9IG5ldyBCcm9hZGNhc3RSZWNlaXZlcigpIHsKKyAgICAgICAgQE92ZXJyaWRlIHB1YmxpYyB2b2lkIG9uUmVjZWl2ZShDb250ZXh0IGNvbnRleHQsIEludGVudCBpbnRlbnQpIHsKKyAgICAgICAgICAgIFN0cmluZyBhY3Rpb24gPSBpbnRlbnQuZ2V0QWN0aW9uKCk7CisKKyAgICAgICAgICAgIGlmIChhY3Rpb24uZXF1YWxzKEFMQVJNX1dBS0VVUCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgIkFMQVJNX1dBS0VVUCIpOworICAgICAgICAgICAgICAgIHN0YXJ0TmF2aWdhdGluZyhmYWxzZSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbi5lcXVhbHMoQUxBUk1fVElNRU9VVCkpIHsKKyAgICAgICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgIkFMQVJNX1RJTUVPVVQiKTsKKyAgICAgICAgICAgICAgICBoaWJlcm5hdGUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH07CisKKyAgICBwdWJsaWMgc3RhdGljIGJvb2xlYW4gaXNTdXBwb3J0ZWQoKSB7CisgICAgICAgIHJldHVybiBuYXRpdmVfaXNfc3VwcG9ydGVkKCk7CisgICAgfQorCisgICAgcHVibGljIEdwc0xvY2F0aW9uUHJvdmlkZXIoQ29udGV4dCBjb250ZXh0LCBJTG9jYXRpb25NYW5hZ2VyIGxvY2F0aW9uTWFuYWdlcikgeworICAgICAgICBtQ29udGV4dCA9IGNvbnRleHQ7CisgICAgICAgIG1Mb2NhdGlvbk1hbmFnZXIgPSBsb2NhdGlvbk1hbmFnZXI7CisgICAgICAgIG1OSUhhbmRsZXIgPSBuZXcgR3BzTmV0SW5pdGlhdGVkSGFuZGxlcihjb250ZXh0KTsKKworICAgICAgICBtTG9jYXRpb24uc2V0RXh0cmFzKG1Mb2NhdGlvbkV4dHJhcyk7CisKKyAgICAgICAgLy8gQ3JlYXRlIGEgd2FrZSBsb2NrCisgICAgICAgIFBvd2VyTWFuYWdlciBwb3dlck1hbmFnZXIgPSAoUG93ZXJNYW5hZ2VyKSBtQ29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuUE9XRVJfU0VSVklDRSk7CisgICAgICAgIG1XYWtlTG9jayA9IHBvd2VyTWFuYWdlci5uZXdXYWtlTG9jayhQb3dlck1hbmFnZXIuUEFSVElBTF9XQUtFX0xPQ0ssIFdBS0VMT0NLX0tFWSk7CisgICAgICAgIG1XYWtlTG9jay5zZXRSZWZlcmVuY2VDb3VudGVkKGZhbHNlKTsKKworICAgICAgICBtQWxhcm1NYW5hZ2VyID0gKEFsYXJtTWFuYWdlciltQ29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuQUxBUk1fU0VSVklDRSk7CisgICAgICAgIG1XYWtldXBJbnRlbnQgPSBQZW5kaW5nSW50ZW50LmdldEJyb2FkY2FzdChtQ29udGV4dCwgMCwgbmV3IEludGVudChBTEFSTV9XQUtFVVApLCAwKTsKKyAgICAgICAgbVRpbWVvdXRJbnRlbnQgPSBQZW5kaW5nSW50ZW50LmdldEJyb2FkY2FzdChtQ29udGV4dCwgMCwgbmV3IEludGVudChBTEFSTV9USU1FT1VUKSwgMCk7CisKKyAgICAgICAgbUNvbm5NZ3IgPSAoQ29ubmVjdGl2aXR5TWFuYWdlciljb250ZXh0LmdldFN5c3RlbVNlcnZpY2UoQ29udGV4dC5DT05ORUNUSVZJVFlfU0VSVklDRSk7CisKKyAgICAgICAgLy8gQmF0dGVyeSBzdGF0aXN0aWNzIHNlcnZpY2UgdG8gYmUgbm90aWZpZWQgd2hlbiBHUFMgdHVybnMgb24gb3Igb2ZmCisgICAgICAgIG1CYXR0ZXJ5U3RhdHMgPSBJQmF0dGVyeVN0YXRzLlN0dWIuYXNJbnRlcmZhY2UoU2VydmljZU1hbmFnZXIuZ2V0U2VydmljZSgiYmF0dGVyeWluZm8iKSk7CisKKyAgICAgICAgbVByb3BlcnRpZXMgPSBuZXcgUHJvcGVydGllcygpOworICAgICAgICB0cnkgeworICAgICAgICAgICAgRmlsZSBmaWxlID0gbmV3IEZpbGUoUFJPUEVSVElFU19GSUxFKTsKKyAgICAgICAgICAgIEZpbGVJbnB1dFN0cmVhbSBzdHJlYW0gPSBuZXcgRmlsZUlucHV0U3RyZWFtKGZpbGUpOworICAgICAgICAgICAgbVByb3BlcnRpZXMubG9hZChzdHJlYW0pOworICAgICAgICAgICAgc3RyZWFtLmNsb3NlKCk7CisgICAgICAgICAgICBtTnRwU2VydmVyID0gbVByb3BlcnRpZXMuZ2V0UHJvcGVydHkoIk5UUF9TRVJWRVIiLCBudWxsKTsKKworICAgICAgICAgICAgbVN1cGxTZXJ2ZXJIb3N0ID0gbVByb3BlcnRpZXMuZ2V0UHJvcGVydHkoIlNVUExfSE9TVCIpOworICAgICAgICAgICAgU3RyaW5nIHBvcnRTdHJpbmcgPSBtUHJvcGVydGllcy5nZXRQcm9wZXJ0eSgiU1VQTF9QT1JUIik7CisgICAgICAgICAgICBpZiAobVN1cGxTZXJ2ZXJIb3N0ICE9IG51bGwgJiYgcG9ydFN0cmluZyAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgbVN1cGxTZXJ2ZXJQb3J0ID0gSW50ZWdlci5wYXJzZUludChwb3J0U3RyaW5nKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChOdW1iZXJGb3JtYXRFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICBMb2cuZShUQUcsICJ1bmFibGUgdG8gcGFyc2UgU1VQTF9QT1JUOiAiICsgcG9ydFN0cmluZyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBtQzJLU2VydmVySG9zdCA9IG1Qcm9wZXJ0aWVzLmdldFByb3BlcnR5KCJDMktfSE9TVCIpOworICAgICAgICAgICAgcG9ydFN0cmluZyA9IG1Qcm9wZXJ0aWVzLmdldFByb3BlcnR5KCJDMktfUE9SVCIpOworICAgICAgICAgICAgaWYgKG1DMktTZXJ2ZXJIb3N0ICE9IG51bGwgJiYgcG9ydFN0cmluZyAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgbUMyS1NlcnZlclBvcnQgPSBJbnRlZ2VyLnBhcnNlSW50KHBvcnRTdHJpbmcpOworICAgICAgICAgICAgICAgIH0gY2F0Y2ggKE51bWJlckZvcm1hdEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgIExvZy5lKFRBRywgInVuYWJsZSB0byBwYXJzZSBDMktfUE9SVDogIiArIHBvcnRTdHJpbmcpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBjYXRjaCAoSU9FeGNlcHRpb24gZSkgeworICAgICAgICAgICAgTG9nLncoVEFHLCAiQ291bGQgbm90IG9wZW4gR1BTIGNvbmZpZ3VyYXRpb24gZmlsZSAiICsgUFJPUEVSVElFU19GSUxFKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIHdhaXQgdW50aWwgd2UgYXJlIGZ1bGx5IGluaXRpYWxpemVkIGJlZm9yZSByZXR1cm5pbmcKKyAgICAgICAgbVRocmVhZCA9IG5ldyBHcHNMb2NhdGlvblByb3ZpZGVyVGhyZWFkKCk7CisgICAgICAgIG1UaHJlYWQuc3RhcnQoKTsKKyAgICAgICAgd2hpbGUgKHRydWUpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgbUluaXRpYWxpemVkTGF0Y2guYXdhaXQoKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0gY2F0Y2ggKEludGVycnVwdGVkRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBUaHJlYWQuY3VycmVudFRocmVhZCgpLmludGVycnVwdCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGluaXRpYWxpemUoKSB7CisgICAgICAgIC8vIHJlZ2lzdGVyIG91ciByZWNlaXZlciBvbiBvdXIgdGhyZWFkIHJhdGhlciB0aGFuIHRoZSBtYWluIHRocmVhZAorICAgICAgICBJbnRlbnRGaWx0ZXIgaW50ZW50RmlsdGVyID0gbmV3IEludGVudEZpbHRlcigpOworICAgICAgICBpbnRlbnRGaWx0ZXIuYWRkQWN0aW9uKEFMQVJNX1dBS0VVUCk7CisgICAgICAgIGludGVudEZpbHRlci5hZGRBY3Rpb24oQUxBUk1fVElNRU9VVCk7CisgICAgICAgIG1Db250ZXh0LnJlZ2lzdGVyUmVjZWl2ZXIobUJyb2FkY2FzdFJlY2lldmVyLCBpbnRlbnRGaWx0ZXIpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIG5hbWUgb2YgdGhpcyBwcm92aWRlci4KKyAgICAgKi8KKyAgICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKSB7CisgICAgICAgIHJldHVybiBMb2NhdGlvbk1hbmFnZXIuR1BTX1BST1ZJREVSOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcHJvdmlkZXIgcmVxdWlyZXMgYWNjZXNzIHRvIGEKKyAgICAgKiBkYXRhIG5ldHdvcmsgKGUuZy4sIHRoZSBJbnRlcm5ldCksIGZhbHNlIG90aGVyd2lzZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiByZXF1aXJlc05ldHdvcmsoKSB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHVwZGF0ZU5ldHdvcmtTdGF0ZShpbnQgc3RhdGUsIE5ldHdvcmtJbmZvIGluZm8pIHsKKyAgICAgICAgc2VuZE1lc3NhZ2UoVVBEQVRFX05FVFdPUktfU1RBVEUsIHN0YXRlLCBpbmZvKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgaGFuZGxlVXBkYXRlTmV0d29ya1N0YXRlKGludCBzdGF0ZSwgTmV0d29ya0luZm8gaW5mbykgeworICAgICAgICBtTmV0d29ya0F2YWlsYWJsZSA9IChzdGF0ZSA9PSBMb2NhdGlvblByb3ZpZGVyLkFWQUlMQUJMRSk7CisKKyAgICAgICAgaWYgKERFQlVHKSB7CisgICAgICAgICAgICBMb2cuZChUQUcsICJ1cGRhdGVOZXR3b3JrU3RhdGUgIiArIChtTmV0d29ya0F2YWlsYWJsZSA/ICJhdmFpbGFibGUiIDogInVuYXZhaWxhYmxlIikKKyAgICAgICAgICAgICAgICArICIgaW5mbzogIiArIGluZm8pOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGluZm8gIT0gbnVsbCAmJiBpbmZvLmdldFR5cGUoKSA9PSBDb25uZWN0aXZpdHlNYW5hZ2VyLlRZUEVfTU9CSUxFX1NVUEwKKyAgICAgICAgICAgICAgICAmJiBtQUdwc0RhdGFDb25uZWN0aW9uU3RhdGUgPT0gQUdQU19EQVRBX0NPTk5FQ1RJT05fT1BFTklORykgeworICAgICAgICAgICAgU3RyaW5nIGFwbk5hbWUgPSBpbmZvLmdldEV4dHJhSW5mbygpOworICAgICAgICAgICAgaWYgKG1OZXR3b3JrQXZhaWxhYmxlICYmIGFwbk5hbWUgIT0gbnVsbCAmJiBhcG5OYW1lLmxlbmd0aCgpID4gMCkgeworICAgICAgICAgICAgICAgIG1BR3BzQXBuID0gYXBuTmFtZTsKKyAgICAgICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgImNhbGwgbmF0aXZlX2FncHNfZGF0YV9jb25uX29wZW4iKTsKKyAgICAgICAgICAgICAgICBuYXRpdmVfYWdwc19kYXRhX2Nvbm5fb3BlbihhcG5OYW1lKTsKKyAgICAgICAgICAgICAgICBtQUdwc0RhdGFDb25uZWN0aW9uU3RhdGUgPSBBR1BTX0RBVEFfQ09OTkVDVElPTl9PUEVOOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgImNhbGwgbmF0aXZlX2FncHNfZGF0YV9jb25uX2ZhaWxlZCIpOworICAgICAgICAgICAgICAgIG1BR3BzQXBuID0gbnVsbDsKKyAgICAgICAgICAgICAgICBtQUdwc0RhdGFDb25uZWN0aW9uU3RhdGUgPSBBR1BTX0RBVEFfQ09OTkVDVElPTl9DTE9TRUQ7CisgICAgICAgICAgICAgICAgbmF0aXZlX2FncHNfZGF0YV9jb25uX2ZhaWxlZCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKG1OZXR3b3JrQXZhaWxhYmxlKSB7CisgICAgICAgICAgICBpZiAobUluamVjdE50cFRpbWVQZW5kaW5nKSB7CisgICAgICAgICAgICAgICAgc2VuZE1lc3NhZ2UoSU5KRUNUX05UUF9USU1FLCAwLCBudWxsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChtRG93bmxvYWRYdHJhRGF0YVBlbmRpbmcpIHsKKyAgICAgICAgICAgICAgICBzZW5kTWVzc2FnZShET1dOTE9BRF9YVFJBX0RBVEEsIDAsIG51bGwpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGhhbmRsZUluamVjdE50cFRpbWUoKSB7CisgICAgICAgIGlmICghbU5ldHdvcmtBdmFpbGFibGUpIHsKKyAgICAgICAgICAgIC8vIHRyeSBhZ2FpbiB3aGVuIG5ldHdvcmsgaXMgdXAKKyAgICAgICAgICAgIG1JbmplY3ROdHBUaW1lUGVuZGluZyA9IHRydWU7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICAgICAgbUluamVjdE50cFRpbWVQZW5kaW5nID0gZmFsc2U7CisKKyAgICAgICAgU250cENsaWVudCBjbGllbnQgPSBuZXcgU250cENsaWVudCgpOworICAgICAgICBsb25nIGRlbGF5OworCisgICAgICAgIGlmIChjbGllbnQucmVxdWVzdFRpbWUobU50cFNlcnZlciwgMTAwMDApKSB7CisgICAgICAgICAgICBsb25nIHRpbWUgPSBjbGllbnQuZ2V0TnRwVGltZSgpOworICAgICAgICAgICAgbG9uZyB0aW1lUmVmZXJlbmNlID0gY2xpZW50LmdldE50cFRpbWVSZWZlcmVuY2UoKTsKKyAgICAgICAgICAgIGludCBjZXJ0YWludHkgPSAoaW50KShjbGllbnQuZ2V0Um91bmRUcmlwVGltZSgpLzIpOworICAgICAgICAgICAgbG9uZyBub3cgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKKworICAgICAgICAgICAgTG9nLmQoVEFHLCAiTlRQIHNlcnZlciByZXR1cm5lZDogIgorICAgICAgICAgICAgICAgICAgICArIHRpbWUgKyAiICgiICsgbmV3IERhdGUodGltZSkKKyAgICAgICAgICAgICAgICAgICAgKyAiKSByZWZlcmVuY2U6ICIgKyB0aW1lUmVmZXJlbmNlCisgICAgICAgICAgICAgICAgICAgICsgIiBjZXJ0YWludHk6ICIgKyBjZXJ0YWludHkKKyAgICAgICAgICAgICAgICAgICAgKyAiIHN5c3RlbSB0aW1lIG9mZnNldDogIiArICh0aW1lIC0gbm93KSk7CisKKyAgICAgICAgICAgIG5hdGl2ZV9pbmplY3RfdGltZSh0aW1lLCB0aW1lUmVmZXJlbmNlLCBjZXJ0YWludHkpOworICAgICAgICAgICAgZGVsYXkgPSBOVFBfSU5URVJWQUw7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgInJlcXVlc3RUaW1lIGZhaWxlZCIpOworICAgICAgICAgICAgZGVsYXkgPSBSRVRSWV9JTlRFUlZBTDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIHNlbmQgZGVsYXllZCBtZXNzYWdlIGZvciBuZXh0IE5UUCBpbmplY3Rpb24KKyAgICAgICAgLy8gc2luY2UgdGhpcyBpcyBkZWxheWVkIGFuZCBub3QgdXJnZW50IHdlIGRvIG5vdCBob2xkIGEgd2FrZSBsb2NrIGhlcmUKKyAgICAgICAgbUhhbmRsZXIucmVtb3ZlTWVzc2FnZXMoSU5KRUNUX05UUF9USU1FKTsKKyAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2VEZWxheWVkKE1lc3NhZ2Uub2J0YWluKG1IYW5kbGVyLCBJTkpFQ1RfTlRQX1RJTUUpLCBkZWxheSk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGhhbmRsZURvd25sb2FkWHRyYURhdGEoKSB7CisgICAgICAgIGlmICghbURvd25sb2FkWHRyYURhdGFQZW5kaW5nKSB7CisgICAgICAgICAgICAvLyB0cnkgYWdhaW4gd2hlbiBuZXR3b3JrIGlzIHVwCisgICAgICAgICAgICBtRG93bmxvYWRYdHJhRGF0YVBlbmRpbmcgPSB0cnVlOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIG1Eb3dubG9hZFh0cmFEYXRhUGVuZGluZyA9IGZhbHNlOworCisKKyAgICAgICAgR3BzWHRyYURvd25sb2FkZXIgeHRyYURvd25sb2FkZXIgPSBuZXcgR3BzWHRyYURvd25sb2FkZXIobUNvbnRleHQsIG1Qcm9wZXJ0aWVzKTsKKyAgICAgICAgYnl0ZVtdIGRhdGEgPSB4dHJhRG93bmxvYWRlci5kb3dubG9hZFh0cmFEYXRhKCk7CisgICAgICAgIGlmIChkYXRhICE9IG51bGwpIHsKKyAgICAgICAgICAgIGlmIChERUJVRykgeworICAgICAgICAgICAgICAgIExvZy5kKFRBRywgImNhbGxpbmcgbmF0aXZlX2luamVjdF94dHJhX2RhdGEiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG5hdGl2ZV9pbmplY3RfeHRyYV9kYXRhKGRhdGEsIGRhdGEubGVuZ3RoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIHRyeSBhZ2FpbiBsYXRlcgorICAgICAgICAgICAgLy8gc2luY2UgdGhpcyBpcyBkZWxheWVkIGFuZCBub3QgdXJnZW50IHdlIGRvIG5vdCBob2xkIGEgd2FrZSBsb2NrIGhlcmUKKyAgICAgICAgICAgIG1IYW5kbGVyLnJlbW92ZU1lc3NhZ2VzKERPV05MT0FEX1hUUkFfREFUQSk7CisgICAgICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZURlbGF5ZWQoTWVzc2FnZS5vYnRhaW4obUhhbmRsZXIsIERPV05MT0FEX1hUUkFfREFUQSksIFJFVFJZX0lOVEVSVkFMKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFRoaXMgaXMgY2FsbGVkIHRvIGluZm9ybSB1cyB3aGVuIGFub3RoZXIgbG9jYXRpb24gcHJvdmlkZXIgcmV0dXJucyBhIGxvY2F0aW9uLgorICAgICAqIFNvbWVkYXkgd2UgbWlnaHQgdXNlIHRoaXMgZm9yIG5ldHdvcmsgbG9jYXRpb24gaW5qZWN0aW9uIHRvIGFpZCB0aGUgR1BTCisgICAgICovCisgICAgcHVibGljIHZvaWQgdXBkYXRlTG9jYXRpb24oTG9jYXRpb24gbG9jYXRpb24pIHsKKyAgICAgICAgc2VuZE1lc3NhZ2UoVVBEQVRFX0xPQ0FUSU9OLCAwLCBsb2NhdGlvbik7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGhhbmRsZVVwZGF0ZUxvY2F0aW9uKExvY2F0aW9uIGxvY2F0aW9uKSB7CisgICAgICAgIGlmIChsb2NhdGlvbi5oYXNBY2N1cmFjeSgpKSB7CisgICAgICAgICAgICBuYXRpdmVfaW5qZWN0X2xvY2F0aW9uKGxvY2F0aW9uLmdldExhdGl0dWRlKCksIGxvY2F0aW9uLmdldExvbmdpdHVkZSgpLAorICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbi5nZXRBY2N1cmFjeSgpKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcHJvdmlkZXIgcmVxdWlyZXMgYWNjZXNzIHRvIGEKKyAgICAgKiBzYXRlbGxpdGUtYmFzZWQgcG9zaXRpb25pbmcgc3lzdGVtIChlLmcuLCBHUFMpLCBmYWxzZQorICAgICAqIG90aGVyd2lzZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiByZXF1aXJlc1NhdGVsbGl0ZSgpIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgLyoqCisgICAgICogUmV0dXJucyB0cnVlIGlmIHRoZSBwcm92aWRlciByZXF1aXJlcyBhY2Nlc3MgdG8gYW4gYXBwcm9wcmlhdGUKKyAgICAgKiBjZWxsdWxhciBuZXR3b3JrIChlLmcuLCB0byBtYWtlIHVzZSBvZiBjZWxsIHRvd2VyIElEcyksIGZhbHNlCisgICAgICogb3RoZXJ3aXNlLgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIHJlcXVpcmVzQ2VsbCgpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgdXNlIG9mIHRoaXMgcHJvdmlkZXIgbWF5IHJlc3VsdCBpbiBhCisgICAgICogbW9uZXRhcnkgY2hhcmdlIHRvIHRoZSB1c2VyLCBmYWxzZSBpZiB1c2UgaXMgZnJlZS4gIEl0IGlzIHVwIHRvCisgICAgICogZWFjaCBwcm92aWRlciB0byBnaXZlIGFjY3VyYXRlIGluZm9ybWF0aW9uLgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIGhhc01vbmV0YXJ5Q29zdCgpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcHJvdmlkZXIgaXMgYWJsZSB0byBwcm92aWRlIGFsdGl0dWRlCisgICAgICogaW5mb3JtYXRpb24sIGZhbHNlIG90aGVyd2lzZS4gIEEgcHJvdmlkZXIgdGhhdCByZXBvcnRzIGFsdGl0dWRlCisgICAgICogdW5kZXIgbW9zdCBjaXJjdW1zdGFuY2VzIGJ1dCBtYXkgb2NjYXNzaW9uYWxseSBub3QgcmVwb3J0IGl0CisgICAgICogc2hvdWxkIHJldHVybiB0cnVlLgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIHN1cHBvcnRzQWx0aXR1ZGUoKSB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcHJvdmlkZXIgaXMgYWJsZSB0byBwcm92aWRlIHNwZWVkCisgICAgICogaW5mb3JtYXRpb24sIGZhbHNlIG90aGVyd2lzZS4gIEEgcHJvdmlkZXIgdGhhdCByZXBvcnRzIHNwZWVkCisgICAgICogdW5kZXIgbW9zdCBjaXJjdW1zdGFuY2VzIGJ1dCBtYXkgb2NjYXNzaW9uYWxseSBub3QgcmVwb3J0IGl0CisgICAgICogc2hvdWxkIHJldHVybiB0cnVlLgorICAgICAqLworICAgIHB1YmxpYyBib29sZWFuIHN1cHBvcnRzU3BlZWQoKSB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgcHJvdmlkZXIgaXMgYWJsZSB0byBwcm92aWRlIGJlYXJpbmcKKyAgICAgKiBpbmZvcm1hdGlvbiwgZmFsc2Ugb3RoZXJ3aXNlLiAgQSBwcm92aWRlciB0aGF0IHJlcG9ydHMgYmVhcmluZworICAgICAqIHVuZGVyIG1vc3QgY2lyY3Vtc3RhbmNlcyBidXQgbWF5IG9jY2Fzc2lvbmFsbHkgbm90IHJlcG9ydCBpdAorICAgICAqIHNob3VsZCByZXR1cm4gdHJ1ZS4KKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBzdXBwb3J0c0JlYXJpbmcoKSB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIHBvd2VyIHJlcXVpcmVtZW50IGZvciB0aGlzIHByb3ZpZGVyLgorICAgICAqCisgICAgICogQHJldHVybiB0aGUgcG93ZXIgcmVxdWlyZW1lbnQgZm9yIHRoaXMgcHJvdmlkZXIsIGFzIG9uZSBvZiB0aGUKKyAgICAgKiBjb25zdGFudHMgQ3JpdGVyaWEuUE9XRVJfUkVRVUlSRU1FTlRfKi4KKyAgICAgKi8KKyAgICBwdWJsaWMgaW50IGdldFBvd2VyUmVxdWlyZW1lbnQoKSB7CisgICAgICAgIHJldHVybiBDcml0ZXJpYS5QT1dFUl9ISUdIOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdHJ1ZSBpZiB0aGlzIHByb3ZpZGVyIG1lZXRzIHRoZSBnaXZlbiBjcml0ZXJpYSwKKyAgICAgKiBmYWxzZSBvdGhlcndpc2UuCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gbWVldHNDcml0ZXJpYShDcml0ZXJpYSBjcml0ZXJpYSkgeworICAgICAgICByZXR1cm4gKGNyaXRlcmlhLmdldFBvd2VyUmVxdWlyZW1lbnQoKSAhPSBDcml0ZXJpYS5QT1dFUl9MT1cpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgdGhlIGhvcml6b250YWwgYWNjdXJhY3kgb2YgdGhpcyBwcm92aWRlcgorICAgICAqCisgICAgICogQHJldHVybiB0aGUgYWNjdXJhY3kgb2YgbG9jYXRpb24gZnJvbSB0aGlzIHByb3ZpZGVyLCBhcyBvbmUKKyAgICAgKiBvZiB0aGUgY29uc3RhbnRzIENyaXRlcmlhLkFDQ1VSQUNZXyouCisgICAgICovCisgICAgcHVibGljIGludCBnZXRBY2N1cmFjeSgpIHsKKyAgICAgICAgcmV0dXJuIENyaXRlcmlhLkFDQ1VSQUNZX0ZJTkU7CisgICAgfQorCisgICAgLyoqCisgICAgICogRW5hYmxlcyB0aGlzIHByb3ZpZGVyLiAgV2hlbiBlbmFibGVkLCBjYWxscyB0byBnZXRTdGF0dXMoKQorICAgICAqIG11c3QgYmUgaGFuZGxlZC4gIEhhcmR3YXJlIG1heSBiZSBzdGFydGVkIHVwCisgICAgICogd2hlbiB0aGUgcHJvdmlkZXIgaXMgZW5hYmxlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBlbmFibGUoKSB7CisgICAgICAgIHN5bmNocm9uaXplZCAobUhhbmRsZXIpIHsKKyAgICAgICAgICAgIHNlbmRNZXNzYWdlKEVOQUJMRSwgMSwgbnVsbCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgaGFuZGxlRW5hYmxlKCkgeworICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgImhhbmRsZUVuYWJsZSIpOworICAgICAgICBpZiAobUVuYWJsZWQpIHJldHVybjsKKyAgICAgICAgbUVuYWJsZWQgPSBuYXRpdmVfaW5pdCgpOworCisgICAgICAgIGlmIChtRW5hYmxlZCkgeworICAgICAgICAgICAgaWYgKG1TdXBsU2VydmVySG9zdCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgbmF0aXZlX3NldF9hZ3BzX3NlcnZlcihBR1BTX1RZUEVfU1VQTCwgbVN1cGxTZXJ2ZXJIb3N0LCBtU3VwbFNlcnZlclBvcnQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1DMktTZXJ2ZXJIb3N0ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBuYXRpdmVfc2V0X2FncHNfc2VydmVyKEFHUFNfVFlQRV9DMkssIG1DMktTZXJ2ZXJIb3N0LCBtQzJLU2VydmVyUG9ydCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBMb2cudyhUQUcsICJGYWlsZWQgdG8gZW5hYmxlIGxvY2F0aW9uIHByb3ZpZGVyIik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBEaXNhYmxlcyB0aGlzIHByb3ZpZGVyLiAgV2hlbiBkaXNhYmxlZCwgY2FsbHMgdG8gZ2V0U3RhdHVzKCkKKyAgICAgKiBuZWVkIG5vdCBiZSBoYW5kbGVkLiAgSGFyZHdhcmUgbWF5IGJlIHNodXQKKyAgICAgKiBkb3duIHdoaWxlIHRoZSBwcm92aWRlciBpcyBkaXNhYmxlZC4KKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBkaXNhYmxlKCkgeworICAgICAgICBzeW5jaHJvbml6ZWQgKG1IYW5kbGVyKSB7CisgICAgICAgICAgICBzZW5kTWVzc2FnZShFTkFCTEUsIDAsIG51bGwpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGhhbmRsZURpc2FibGUoKSB7CisgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAiaGFuZGxlRGlzYWJsZSIpOworICAgICAgICBpZiAoIW1FbmFibGVkKSByZXR1cm47CisKKyAgICAgICAgbUVuYWJsZWQgPSBmYWxzZTsKKyAgICAgICAgc3RvcE5hdmlnYXRpbmcoKTsKKworICAgICAgICAvLyBkbyB0aGlzIGJlZm9yZSByZWxlYXNpbmcgd2FrZWxvY2sKKyAgICAgICAgbmF0aXZlX2NsZWFudXAoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBpc0VuYWJsZWQoKSB7CisgICAgICAgIHJldHVybiBtRW5hYmxlZDsKKyAgICB9CisKKyAgICBwdWJsaWMgaW50IGdldFN0YXR1cyhCdW5kbGUgZXh0cmFzKSB7CisgICAgICAgIGlmIChleHRyYXMgIT0gbnVsbCkgeworICAgICAgICAgICAgZXh0cmFzLnB1dEludCgic2F0ZWxsaXRlcyIsIG1TdkNvdW50KTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbVN0YXR1czsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgdXBkYXRlU3RhdHVzKGludCBzdGF0dXMsIGludCBzdkNvdW50KSB7CisgICAgICAgIGlmIChzdGF0dXMgIT0gbVN0YXR1cyB8fCBzdkNvdW50ICE9IG1TdkNvdW50KSB7CisgICAgICAgICAgICBtU3RhdHVzID0gc3RhdHVzOworICAgICAgICAgICAgbVN2Q291bnQgPSBzdkNvdW50OworICAgICAgICAgICAgbUxvY2F0aW9uRXh0cmFzLnB1dEludCgic2F0ZWxsaXRlcyIsIHN2Q291bnQpOworICAgICAgICAgICAgbVN0YXR1c1VwZGF0ZVRpbWUgPSBTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBsb25nIGdldFN0YXR1c1VwZGF0ZVRpbWUoKSB7CisgICAgICAgIHJldHVybiBtU3RhdHVzVXBkYXRlVGltZTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBlbmFibGVMb2NhdGlvblRyYWNraW5nKGJvb2xlYW4gZW5hYmxlKSB7CisgICAgICAgIC8vIEZJWE1FIC0gc2hvdWxkIHNldCBhIGZsYWcgaGVyZSB0byBhdm9pZCByYWNlIGNvbmRpdGlvbnMgd2l0aCBzaW5nbGUgc2hvdCByZXF1ZXN0CisgICAgICAgIHN5bmNocm9uaXplZCAobUhhbmRsZXIpIHsKKyAgICAgICAgICAgIHNlbmRNZXNzYWdlKEVOQUJMRV9UUkFDS0lORywgKGVuYWJsZSA/IDEgOiAwKSwgbnVsbCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgaGFuZGxlRW5hYmxlTG9jYXRpb25UcmFja2luZyhib29sZWFuIGVuYWJsZSkgeworICAgICAgICBpZiAoZW5hYmxlKSB7CisgICAgICAgICAgICBtVFRGRiA9IDA7CisgICAgICAgICAgICBtTGFzdEZpeFRpbWUgPSAwOworICAgICAgICAgICAgc3RhcnROYXZpZ2F0aW5nKGZhbHNlKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmICghaGFzQ2FwYWJpbGl0eShHUFNfQ0FQQUJJTElUWV9TQ0hFRFVMSU5HKSkgeworICAgICAgICAgICAgICAgIG1BbGFybU1hbmFnZXIuY2FuY2VsKG1XYWtldXBJbnRlbnQpOworICAgICAgICAgICAgICAgIG1BbGFybU1hbmFnZXIuY2FuY2VsKG1UaW1lb3V0SW50ZW50KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHN0b3BOYXZpZ2F0aW5nKCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiByZXF1ZXN0U2luZ2xlU2hvdEZpeCgpIHsKKyAgICAgICAgaWYgKG1TdGFydGVkKSB7CisgICAgICAgICAgICAvLyBjYW5ub3QgZG8gc2luZ2xlIHNob3QgaWYgYWxyZWFkeSBuYXZpZ2F0aW5nCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgc3luY2hyb25pemVkIChtSGFuZGxlcikgeworICAgICAgICAgICAgbUhhbmRsZXIucmVtb3ZlTWVzc2FnZXMoUkVRVUVTVF9TSU5HTEVfU0hPVCk7CisgICAgICAgICAgICBNZXNzYWdlIG0gPSBNZXNzYWdlLm9idGFpbihtSGFuZGxlciwgUkVRVUVTVF9TSU5HTEVfU0hPVCk7CisgICAgICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZShtKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgaGFuZGxlUmVxdWVzdFNpbmdsZVNob3QoKSB7CisgICAgICAgIG1UVEZGID0gMDsKKyAgICAgICAgbUxhc3RGaXhUaW1lID0gMDsKKyAgICAgICAgc3RhcnROYXZpZ2F0aW5nKHRydWUpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldE1pblRpbWUobG9uZyBtaW5UaW1lKSB7CisgICAgICAgIGlmIChERUJVRykgTG9nLmQoVEFHLCAic2V0TWluVGltZSAiICsgbWluVGltZSk7CisgICAgICAgIAorICAgICAgICBpZiAobWluVGltZSA+PSAwKSB7CisgICAgICAgICAgICBtRml4SW50ZXJ2YWwgPSAoaW50KW1pblRpbWU7CisKKyAgICAgICAgICAgIGlmIChtU3RhcnRlZCAmJiBoYXNDYXBhYmlsaXR5KEdQU19DQVBBQklMSVRZX1NDSEVEVUxJTkcpKSB7CisgICAgICAgICAgICAgICAgaWYgKCFuYXRpdmVfc2V0X3Bvc2l0aW9uX21vZGUobVBvc2l0aW9uTW9kZSwgR1BTX1BPU0lUSU9OX1JFQ1VSUkVOQ0VfUEVSSU9ESUMsCisgICAgICAgICAgICAgICAgICAgICAgICBtRml4SW50ZXJ2YWwsIDAsIDApKSB7CisgICAgICAgICAgICAgICAgICAgIExvZy5lKFRBRywgInNldF9wb3NpdGlvbl9tb2RlIGZhaWxlZCBpbiBzZXRNaW5UaW1lKCkiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgU3RyaW5nIGdldEludGVybmFsU3RhdGUoKSB7CisgICAgICAgIHJldHVybiBuYXRpdmVfZ2V0X2ludGVybmFsX3N0YXRlKCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBmaW5hbCBjbGFzcyBMaXN0ZW5lciBpbXBsZW1lbnRzIElCaW5kZXIuRGVhdGhSZWNpcGllbnQgeworICAgICAgICBmaW5hbCBJR3BzU3RhdHVzTGlzdGVuZXIgbUxpc3RlbmVyOworICAgICAgICAKKyAgICAgICAgaW50IG1TZW5zb3JzID0gMDsKKyAgICAgICAgCisgICAgICAgIExpc3RlbmVyKElHcHNTdGF0dXNMaXN0ZW5lciBsaXN0ZW5lcikgeworICAgICAgICAgICAgbUxpc3RlbmVyID0gbGlzdGVuZXI7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHB1YmxpYyB2b2lkIGJpbmRlckRpZWQoKSB7CisgICAgICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgIkdQUyBzdGF0dXMgbGlzdGVuZXIgZGllZCIpOworCisgICAgICAgICAgICBzeW5jaHJvbml6ZWQobUxpc3RlbmVycykgeworICAgICAgICAgICAgICAgIG1MaXN0ZW5lcnMucmVtb3ZlKHRoaXMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1MaXN0ZW5lciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgbUxpc3RlbmVyLmFzQmluZGVyKCkudW5saW5rVG9EZWF0aCh0aGlzLCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGFkZExpc3RlbmVyKGludCB1aWQpIHsKKyAgICAgICAgc3luY2hyb25pemVkIChtV2FrZUxvY2spIHsKKyAgICAgICAgICAgIG1QZW5kaW5nTGlzdGVuZXJNZXNzYWdlcysrOworICAgICAgICAgICBtV2FrZUxvY2suYWNxdWlyZSgpOworICAgICAgICAgICAgTWVzc2FnZSBtID0gTWVzc2FnZS5vYnRhaW4obUhhbmRsZXIsIEFERF9MSVNURU5FUik7CisgICAgICAgICAgICBtLmFyZzEgPSB1aWQ7CisgICAgICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZShtKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBoYW5kbGVBZGRMaXN0ZW5lcihpbnQgdWlkKSB7CisgICAgICAgIHN5bmNocm9uaXplZChtTGlzdGVuZXJzKSB7CisgICAgICAgICAgICBpZiAobUNsaWVudFVpZHMuaW5kZXhPZktleSh1aWQpID49IDApIHsKKyAgICAgICAgICAgICAgICAvLyBTaG91bGRuJ3QgYmUgaGVyZSAtLSBhbHJlYWR5IGhhdmUgdGhpcyB1aWQuCisgICAgICAgICAgICAgICAgTG9nLncoVEFHLCAiRHVwbGljYXRlIGFkZCBsaXN0ZW5lciBmb3IgdWlkICIgKyB1aWQpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1DbGllbnRVaWRzLnB1dCh1aWQsIDApOworICAgICAgICAgICAgaWYgKG1OYXZpZ2F0aW5nKSB7CisgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgbUJhdHRlcnlTdGF0cy5ub3RlU3RhcnRHcHModWlkKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICBMb2cudyhUQUcsICJSZW1vdGVFeGNlcHRpb24gaW4gYWRkTGlzdGVuZXIiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCByZW1vdmVMaXN0ZW5lcihpbnQgdWlkKSB7CisgICAgICAgIHN5bmNocm9uaXplZCAobVdha2VMb2NrKSB7CisgICAgICAgICAgICBtUGVuZGluZ0xpc3RlbmVyTWVzc2FnZXMrKzsKKyAgICAgICAgICAgIG1XYWtlTG9jay5hY3F1aXJlKCk7CisgICAgICAgICAgICBNZXNzYWdlIG0gPSBNZXNzYWdlLm9idGFpbihtSGFuZGxlciwgUkVNT1ZFX0xJU1RFTkVSKTsKKyAgICAgICAgICAgIG0uYXJnMSA9IHVpZDsKKyAgICAgICAgICAgIG1IYW5kbGVyLnNlbmRNZXNzYWdlKG0pOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGhhbmRsZVJlbW92ZUxpc3RlbmVyKGludCB1aWQpIHsKKyAgICAgICAgc3luY2hyb25pemVkKG1MaXN0ZW5lcnMpIHsKKyAgICAgICAgICAgIGlmIChtQ2xpZW50VWlkcy5pbmRleE9mS2V5KHVpZCkgPCAwKSB7CisgICAgICAgICAgICAgICAgLy8gU2hvdWxkbid0IGJlIGhlcmUgLS0gZG9uJ3QgaGF2ZSB0aGlzIHVpZC4KKyAgICAgICAgICAgICAgICBMb2cudyhUQUcsICJVbm5lZWRlZCByZW1vdmUgbGlzdGVuZXIgZm9yIHVpZCAiICsgdWlkKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtQ2xpZW50VWlkcy5kZWxldGUodWlkKTsKKyAgICAgICAgICAgIGlmIChtTmF2aWdhdGluZykgeworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIG1CYXR0ZXJ5U3RhdHMubm90ZVN0b3BHcHModWlkKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICBMb2cudyhUQUcsICJSZW1vdGVFeGNlcHRpb24gaW4gcmVtb3ZlTGlzdGVuZXIiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBzZW5kRXh0cmFDb21tYW5kKFN0cmluZyBjb21tYW5kLCBCdW5kbGUgZXh0cmFzKSB7CisgICAgICAgIAorICAgICAgICBsb25nIGlkZW50aXR5ID0gQmluZGVyLmNsZWFyQ2FsbGluZ0lkZW50aXR5KCk7CisgICAgICAgIGJvb2xlYW4gcmVzdWx0ID0gZmFsc2U7CisKKyAgICAgICAgaWYgKCJkZWxldGVfYWlkaW5nX2RhdGEiLmVxdWFscyhjb21tYW5kKSkgeworICAgICAgICAgICAgcmVzdWx0ID0gZGVsZXRlQWlkaW5nRGF0YShleHRyYXMpOworICAgICAgICB9IGVsc2UgaWYgKCJmb3JjZV90aW1lX2luamVjdGlvbiIuZXF1YWxzKGNvbW1hbmQpKSB7CisgICAgICAgICAgICBzZW5kTWVzc2FnZShJTkpFQ1RfTlRQX1RJTUUsIDAsIG51bGwpOworICAgICAgICAgICAgcmVzdWx0ID0gdHJ1ZTsKKyAgICAgICAgfSBlbHNlIGlmICgiZm9yY2VfeHRyYV9pbmplY3Rpb24iLmVxdWFscyhjb21tYW5kKSkgeworICAgICAgICAgICAgaWYgKG5hdGl2ZV9zdXBwb3J0c194dHJhKCkpIHsKKyAgICAgICAgICAgICAgICB4dHJhRG93bmxvYWRSZXF1ZXN0KCk7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIExvZy53KFRBRywgInNlbmRFeHRyYUNvbW1hbmQ6IHVua25vd24gY29tbWFuZCAiICsgY29tbWFuZCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEJpbmRlci5yZXN0b3JlQ2FsbGluZ0lkZW50aXR5KGlkZW50aXR5KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisKKyAgICBwcml2YXRlIGJvb2xlYW4gZGVsZXRlQWlkaW5nRGF0YShCdW5kbGUgZXh0cmFzKSB7CisgICAgICAgIGludCBmbGFnczsKKworICAgICAgICBpZiAoZXh0cmFzID09IG51bGwpIHsKKyAgICAgICAgICAgIGZsYWdzID0gR1BTX0RFTEVURV9BTEw7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmbGFncyA9IDA7CisgICAgICAgICAgICBpZiAoZXh0cmFzLmdldEJvb2xlYW4oImVwaGVtZXJpcyIpKSBmbGFncyB8PSBHUFNfREVMRVRFX0VQSEVNRVJJUzsKKyAgICAgICAgICAgIGlmIChleHRyYXMuZ2V0Qm9vbGVhbigiYWxtYW5hYyIpKSBmbGFncyB8PSBHUFNfREVMRVRFX0FMTUFOQUM7CisgICAgICAgICAgICBpZiAoZXh0cmFzLmdldEJvb2xlYW4oInBvc2l0aW9uIikpIGZsYWdzIHw9IEdQU19ERUxFVEVfUE9TSVRJT047CisgICAgICAgICAgICBpZiAoZXh0cmFzLmdldEJvb2xlYW4oInRpbWUiKSkgZmxhZ3MgfD0gR1BTX0RFTEVURV9USU1FOworICAgICAgICAgICAgaWYgKGV4dHJhcy5nZXRCb29sZWFuKCJpb25vIikpIGZsYWdzIHw9IEdQU19ERUxFVEVfSU9OTzsKKyAgICAgICAgICAgIGlmIChleHRyYXMuZ2V0Qm9vbGVhbigidXRjIikpIGZsYWdzIHw9IEdQU19ERUxFVEVfVVRDOworICAgICAgICAgICAgaWYgKGV4dHJhcy5nZXRCb29sZWFuKCJoZWFsdGgiKSkgZmxhZ3MgfD0gR1BTX0RFTEVURV9IRUFMVEg7CisgICAgICAgICAgICBpZiAoZXh0cmFzLmdldEJvb2xlYW4oInN2ZGlyIikpIGZsYWdzIHw9IEdQU19ERUxFVEVfU1ZESVI7CisgICAgICAgICAgICBpZiAoZXh0cmFzLmdldEJvb2xlYW4oInN2c3RlZXIiKSkgZmxhZ3MgfD0gR1BTX0RFTEVURV9TVlNURUVSOworICAgICAgICAgICAgaWYgKGV4dHJhcy5nZXRCb29sZWFuKCJzYWRhdGEiKSkgZmxhZ3MgfD0gR1BTX0RFTEVURV9TQURBVEE7CisgICAgICAgICAgICBpZiAoZXh0cmFzLmdldEJvb2xlYW4oInJ0aSIpKSBmbGFncyB8PSBHUFNfREVMRVRFX1JUSTsKKyAgICAgICAgICAgIGlmIChleHRyYXMuZ2V0Qm9vbGVhbigiY2VsbGRiLWluZm8iKSkgZmxhZ3MgfD0gR1BTX0RFTEVURV9DRUxMREJfSU5GTzsKKyAgICAgICAgICAgIGlmIChleHRyYXMuZ2V0Qm9vbGVhbigiYWxsIikpIGZsYWdzIHw9IEdQU19ERUxFVEVfQUxMOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGZsYWdzICE9IDApIHsKKyAgICAgICAgICAgIG5hdGl2ZV9kZWxldGVfYWlkaW5nX2RhdGEoZmxhZ3MpOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHN0YXJ0TmF2aWdhdGluZyhib29sZWFuIHNpbmdsZVNob3QpIHsKKyAgICAgICAgaWYgKCFtU3RhcnRlZCkgeworICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJzdGFydE5hdmlnYXRpbmciKTsKKyAgICAgICAgICAgIG1TdGFydGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIG1TaW5nbGVTaG90ID0gc2luZ2xlU2hvdDsKKyAgICAgICAgICAgIG1Qb3NpdGlvbk1vZGUgPSBHUFNfUE9TSVRJT05fTU9ERV9TVEFOREFMT05FOworCisgICAgICAgICAgICAgaWYgKFNldHRpbmdzLlNlY3VyZS5nZXRJbnQobUNvbnRleHQuZ2V0Q29udGVudFJlc29sdmVyKCksCisgICAgICAgICAgICAgICAgICAgIFNldHRpbmdzLlNlY3VyZS5BU1NJU1RFRF9HUFNfRU5BQkxFRCwgMSkgIT0gMCkgeworICAgICAgICAgICAgICAgIGlmIChzaW5nbGVTaG90ICYmIGhhc0NhcGFiaWxpdHkoR1BTX0NBUEFCSUxJVFlfTVNBKSkgeworICAgICAgICAgICAgICAgICAgICBtUG9zaXRpb25Nb2RlID0gR1BTX1BPU0lUSU9OX01PREVfTVNfQVNTSVNURUQ7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChoYXNDYXBhYmlsaXR5KEdQU19DQVBBQklMSVRZX01TQSkpIHsKKyAgICAgICAgICAgICAgICAgICAgbVBvc2l0aW9uTW9kZSA9IEdQU19QT1NJVElPTl9NT0RFX01TX0JBU0VEOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaW50IGludGVydmFsID0gKGhhc0NhcGFiaWxpdHkoR1BTX0NBUEFCSUxJVFlfU0NIRURVTElORykgPyBtRml4SW50ZXJ2YWwgOiAxMDAwKTsKKyAgICAgICAgICAgIGlmICghbmF0aXZlX3NldF9wb3NpdGlvbl9tb2RlKG1Qb3NpdGlvbk1vZGUsIEdQU19QT1NJVElPTl9SRUNVUlJFTkNFX1BFUklPRElDLAorICAgICAgICAgICAgICAgICAgICBpbnRlcnZhbCwgMCwgMCkpIHsKKyAgICAgICAgICAgICAgICBtU3RhcnRlZCA9IGZhbHNlOworICAgICAgICAgICAgICAgIExvZy5lKFRBRywgInNldF9wb3NpdGlvbl9tb2RlIGZhaWxlZCBpbiBzdGFydE5hdmlnYXRpbmcoKSIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghbmF0aXZlX3N0YXJ0KCkpIHsKKyAgICAgICAgICAgICAgICBtU3RhcnRlZCA9IGZhbHNlOworICAgICAgICAgICAgICAgIExvZy5lKFRBRywgIm5hdGl2ZV9zdGFydCBmYWlsZWQgaW4gc3RhcnROYXZpZ2F0aW5nKCkiKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIHJlc2V0IFNWIGNvdW50IHRvIHplcm8KKyAgICAgICAgICAgIHVwZGF0ZVN0YXR1cyhMb2NhdGlvblByb3ZpZGVyLlRFTVBPUkFSSUxZX1VOQVZBSUxBQkxFLCAwKTsKKyAgICAgICAgICAgIG1GaXhSZXF1ZXN0VGltZSA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworICAgICAgICAgICAgaWYgKCFoYXNDYXBhYmlsaXR5KEdQU19DQVBBQklMSVRZX1NDSEVEVUxJTkcpKSB7CisgICAgICAgICAgICAgICAgLy8gc2V0IHRpbWVyIHRvIGdpdmUgdXAgaWYgd2UgZG8gbm90IHJlY2VpdmUgYSBmaXggd2l0aGluIE5PX0ZJWF9USU1FT1VUCisgICAgICAgICAgICAgICAgLy8gYW5kIG91ciBmaXggaW50ZXJ2YWwgaXMgbm90IHNob3J0CisgICAgICAgICAgICAgICAgaWYgKG1GaXhJbnRlcnZhbCA+PSBOT19GSVhfVElNRU9VVCkgeworICAgICAgICAgICAgICAgICAgICBtQWxhcm1NYW5hZ2VyLnNldChBbGFybU1hbmFnZXIuRUxBUFNFRF9SRUFMVElNRV9XQUtFVVAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtQ2xvY2suZWxhcHNlZFJlYWx0aW1lKCkgKyBOT19GSVhfVElNRU9VVCwgbVRpbWVvdXRJbnRlbnQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBzdG9wTmF2aWdhdGluZygpIHsKKyAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJzdG9wTmF2aWdhdGluZyIpOworICAgICAgICBpZiAobVN0YXJ0ZWQpIHsKKyAgICAgICAgICAgIG1TdGFydGVkID0gZmFsc2U7CisgICAgICAgICAgICBtU2luZ2xlU2hvdCA9IGZhbHNlOworICAgICAgICAgICAgbmF0aXZlX3N0b3AoKTsKKyAgICAgICAgICAgIG1UVEZGID0gMDsKKyAgICAgICAgICAgIG1MYXN0Rml4VGltZSA9IDA7CisgICAgICAgICAgICBtTG9jYXRpb25GbGFncyA9IExPQ0FUSU9OX0lOVkFMSUQ7CisKKyAgICAgICAgICAgIC8vIHJlc2V0IFNWIGNvdW50IHRvIHplcm8KKyAgICAgICAgICAgIHVwZGF0ZVN0YXR1cyhMb2NhdGlvblByb3ZpZGVyLlRFTVBPUkFSSUxZX1VOQVZBSUxBQkxFLCAwKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgdm9pZCBoaWJlcm5hdGUoKSB7CisgICAgICAgIC8vIHN0b3AgR1BTIHVudGlsIG91ciBuZXh0IGZpeCBpbnRlcnZhbCBhcnJpdmVzCisgICAgICAgIHN0b3BOYXZpZ2F0aW5nKCk7CisgICAgICAgIG1BbGFybU1hbmFnZXIuY2FuY2VsKG1UaW1lb3V0SW50ZW50KTsKKyAgICAgICAgbUFsYXJtTWFuYWdlci5jYW5jZWwobVdha2V1cEludGVudCk7CisgICAgICAgIGxvbmcgbm93ID0gU3lzdGVtQ2xvY2suZWxhcHNlZFJlYWx0aW1lKCk7CisgICAgICAgIG1BbGFybU1hbmFnZXIuc2V0KEFsYXJtTWFuYWdlci5FTEFQU0VEX1JFQUxUSU1FX1dBS0VVUCwKKyAgICAgICAgICAgICAgICBTeXN0ZW1DbG9jay5lbGFwc2VkUmVhbHRpbWUoKSArIG1GaXhJbnRlcnZhbCwgbVdha2V1cEludGVudCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBib29sZWFuIGhhc0NhcGFiaWxpdHkoaW50IGNhcGFiaWxpdHkpIHsKKyAgICAgICAgcmV0dXJuICgobUVuZ2luZUNhcGFiaWxpdGllcyAmIGNhcGFiaWxpdHkpICE9IDApOworICAgIH0KKworICAgIC8qKgorICAgICAqIGNhbGxlZCBmcm9tIG5hdGl2ZSBjb2RlIHRvIHVwZGF0ZSBvdXIgcG9zaXRpb24uCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIHJlcG9ydExvY2F0aW9uKGludCBmbGFncywgZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBkb3VibGUgYWx0aXR1ZGUsCisgICAgICAgICAgICBmbG9hdCBzcGVlZCwgZmxvYXQgYmVhcmluZywgZmxvYXQgYWNjdXJhY3ksIGxvbmcgdGltZXN0YW1wKSB7CisgICAgICAgIGlmIChWRVJCT1NFKSBMb2cudihUQUcsICJyZXBvcnRMb2NhdGlvbiBsYXQ6ICIgKyBsYXRpdHVkZSArICIgbG9uZzogIiArIGxvbmdpdHVkZSArCisgICAgICAgICAgICAgICAgIiB0aW1lc3RhbXA6ICIgKyB0aW1lc3RhbXApOworCisgICAgICAgIHN5bmNocm9uaXplZCAobUxvY2F0aW9uKSB7CisgICAgICAgICAgICBtTG9jYXRpb25GbGFncyA9IGZsYWdzOworICAgICAgICAgICAgaWYgKChmbGFncyAmIExPQ0FUSU9OX0hBU19MQVRfTE9ORykgPT0gTE9DQVRJT05fSEFTX0xBVF9MT05HKSB7CisgICAgICAgICAgICAgICAgbUxvY2F0aW9uLnNldExhdGl0dWRlKGxhdGl0dWRlKTsKKyAgICAgICAgICAgICAgICBtTG9jYXRpb24uc2V0TG9uZ2l0dWRlKGxvbmdpdHVkZSk7CisgICAgICAgICAgICAgICAgbUxvY2F0aW9uLnNldFRpbWUodGltZXN0YW1wKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgoZmxhZ3MgJiBMT0NBVElPTl9IQVNfQUxUSVRVREUpID09IExPQ0FUSU9OX0hBU19BTFRJVFVERSkgeworICAgICAgICAgICAgICAgIG1Mb2NhdGlvbi5zZXRBbHRpdHVkZShhbHRpdHVkZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1Mb2NhdGlvbi5yZW1vdmVBbHRpdHVkZSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKChmbGFncyAmIExPQ0FUSU9OX0hBU19TUEVFRCkgPT0gTE9DQVRJT05fSEFTX1NQRUVEKSB7CisgICAgICAgICAgICAgICAgbUxvY2F0aW9uLnNldFNwZWVkKHNwZWVkKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbUxvY2F0aW9uLnJlbW92ZVNwZWVkKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoKGZsYWdzICYgTE9DQVRJT05fSEFTX0JFQVJJTkcpID09IExPQ0FUSU9OX0hBU19CRUFSSU5HKSB7CisgICAgICAgICAgICAgICAgbUxvY2F0aW9uLnNldEJlYXJpbmcoYmVhcmluZyk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG1Mb2NhdGlvbi5yZW1vdmVCZWFyaW5nKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoKGZsYWdzICYgTE9DQVRJT05fSEFTX0FDQ1VSQUNZKSA9PSBMT0NBVElPTl9IQVNfQUNDVVJBQ1kpIHsKKyAgICAgICAgICAgICAgICBtTG9jYXRpb24uc2V0QWNjdXJhY3koYWNjdXJhY3kpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBtTG9jYXRpb24ucmVtb3ZlQWNjdXJhY3koKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBtTG9jYXRpb25NYW5hZ2VyLnJlcG9ydExvY2F0aW9uKG1Mb2NhdGlvbiwgZmFsc2UpOworICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICBMb2cuZShUQUcsICJSZW1vdGVFeGNlcHRpb24gY2FsbGluZyByZXBvcnRMb2NhdGlvbiIpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgbUxhc3RGaXhUaW1lID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7CisgICAgICAgIC8vIHJlcG9ydCB0aW1lIHRvIGZpcnN0IGZpeAorICAgICAgICBpZiAobVRURkYgPT0gMCAmJiAoZmxhZ3MgJiBMT0NBVElPTl9IQVNfTEFUX0xPTkcpID09IExPQ0FUSU9OX0hBU19MQVRfTE9ORykgeworICAgICAgICAgICAgbVRURkYgPSAoaW50KShtTGFzdEZpeFRpbWUgLSBtRml4UmVxdWVzdFRpbWUpOworICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJUVEZGOiAiICsgbVRURkYpOworCisgICAgICAgICAgICAvLyBub3RpZnkgc3RhdHVzIGxpc3RlbmVycworICAgICAgICAgICAgc3luY2hyb25pemVkKG1MaXN0ZW5lcnMpIHsKKyAgICAgICAgICAgICAgICBpbnQgc2l6ZSA9IG1MaXN0ZW5lcnMuc2l6ZSgpOworICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIExpc3RlbmVyIGxpc3RlbmVyID0gbUxpc3RlbmVycy5nZXQoaSk7CisgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsaXN0ZW5lci5tTGlzdGVuZXIub25GaXJzdEZpeChtVFRGRik7IAorICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgTG9nLncoVEFHLCAiUmVtb3RlRXhjZXB0aW9uIGluIHN0b3BOYXZpZ2F0aW5nIik7CisgICAgICAgICAgICAgICAgICAgICAgICBtTGlzdGVuZXJzLnJlbW92ZShsaXN0ZW5lcik7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBhZGp1c3QgZm9yIHNpemUgb2YgbGlzdCBjaGFuZ2luZworICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZS0tOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKG1TaW5nbGVTaG90KSB7CisgICAgICAgICAgICBzdG9wTmF2aWdhdGluZygpOworICAgICAgICB9CisgICAgICAgIGlmIChtU3RhcnRlZCAmJiBtU3RhdHVzICE9IExvY2F0aW9uUHJvdmlkZXIuQVZBSUxBQkxFKSB7CisgICAgICAgICAgICAvLyB3ZSB3YW50IHRvIHRpbWUgb3V0IGlmIHdlIGRvIG5vdCByZWNlaXZlIGEgZml4CisgICAgICAgICAgICAvLyB3aXRoaW4gdGhlIHRpbWUgb3V0IGFuZCB3ZSBhcmUgcmVxdWVzdGluZyBpbmZyZXF1ZW50IGZpeGVzCisgICAgICAgICAgICBpZiAoIWhhc0NhcGFiaWxpdHkoR1BTX0NBUEFCSUxJVFlfU0NIRURVTElORykgJiYgbUZpeEludGVydmFsIDwgTk9fRklYX1RJTUVPVVQpIHsKKyAgICAgICAgICAgICAgICBtQWxhcm1NYW5hZ2VyLmNhbmNlbChtVGltZW91dEludGVudCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIHNlbmQgYW4gaW50ZW50IHRvIG5vdGlmeSB0aGF0IHRoZSBHUFMgaXMgcmVjZWl2aW5nIGZpeGVzLgorICAgICAgICAgICAgSW50ZW50IGludGVudCA9IG5ldyBJbnRlbnQoTG9jYXRpb25NYW5hZ2VyLkdQU19GSVhfQ0hBTkdFX0FDVElPTik7CisgICAgICAgICAgICBpbnRlbnQucHV0RXh0cmEoTG9jYXRpb25NYW5hZ2VyLkVYVFJBX0dQU19FTkFCTEVELCB0cnVlKTsKKyAgICAgICAgICAgIG1Db250ZXh0LnNlbmRCcm9hZGNhc3QoaW50ZW50KTsKKyAgICAgICAgICAgIHVwZGF0ZVN0YXR1cyhMb2NhdGlvblByb3ZpZGVyLkFWQUlMQUJMRSwgbVN2Q291bnQpOworICAgICAgICB9CisKKyAgICAgICBpZiAoIWhhc0NhcGFiaWxpdHkoR1BTX0NBUEFCSUxJVFlfU0NIRURVTElORykgJiYgbVN0YXJ0ZWQgJiYgbUZpeEludGVydmFsID4gMTAwMCkgeworICAgICAgICAgICAgaWYgKERFQlVHKSBMb2cuZChUQUcsICJnb3QgZml4LCBoaWJlcm5hdGluZyIpOworICAgICAgICAgICAgaGliZXJuYXRlKCk7CisgICAgICAgIH0KKyAgIH0KKworICAgIC8qKgorICAgICAqIGNhbGxlZCBmcm9tIG5hdGl2ZSBjb2RlIHRvIHVwZGF0ZSBvdXIgc3RhdHVzCisgICAgICovCisgICAgcHJpdmF0ZSB2b2lkIHJlcG9ydFN0YXR1cyhpbnQgc3RhdHVzKSB7CisgICAgICAgIGlmIChWRVJCT1NFKSBMb2cudihUQUcsICJyZXBvcnRTdGF0dXMgc3RhdHVzOiAiICsgc3RhdHVzKTsKKworICAgICAgICBzeW5jaHJvbml6ZWQobUxpc3RlbmVycykgeworICAgICAgICAgICAgYm9vbGVhbiB3YXNOYXZpZ2F0aW5nID0gbU5hdmlnYXRpbmc7CisKKyAgICAgICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7CisgICAgICAgICAgICAgICAgY2FzZSBHUFNfU1RBVFVTX1NFU1NJT05fQkVHSU46CisgICAgICAgICAgICAgICAgICAgIG1OYXZpZ2F0aW5nID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgbUVuZ2luZU9uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBHUFNfU1RBVFVTX1NFU1NJT05fRU5EOgorICAgICAgICAgICAgICAgICAgICBtTmF2aWdhdGluZyA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEdQU19TVEFUVVNfRU5HSU5FX09OOgorICAgICAgICAgICAgICAgICAgICBtRW5naW5lT24gPSB0cnVlOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEdQU19TVEFUVVNfRU5HSU5FX09GRjoKKyAgICAgICAgICAgICAgICAgICAgbUVuZ2luZU9uID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIG1OYXZpZ2F0aW5nID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAod2FzTmF2aWdhdGluZyAhPSBtTmF2aWdhdGluZykgeworICAgICAgICAgICAgICAgIGludCBzaXplID0gbUxpc3RlbmVycy5zaXplKCk7CisgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgTGlzdGVuZXIgbGlzdGVuZXIgPSBtTGlzdGVuZXJzLmdldChpKTsKKyAgICAgICAgICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtTmF2aWdhdGluZykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RlbmVyLm1MaXN0ZW5lci5vbkdwc1N0YXJ0ZWQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdGVuZXIubUxpc3RlbmVyLm9uR3BzU3RvcHBlZCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgTG9nLncoVEFHLCAiUmVtb3RlRXhjZXB0aW9uIGluIHJlcG9ydFN0YXR1cyIpOworICAgICAgICAgICAgICAgICAgICAgICAgbUxpc3RlbmVycy5yZW1vdmUobGlzdGVuZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWRqdXN0IGZvciBzaXplIG9mIGxpc3QgY2hhbmdpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemUtLTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIC8vIHVwZGF0ZSBiYXR0ZXJ5IHN0YXRzCisgICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGk9bUNsaWVudFVpZHMuc2l6ZSgpIC0gMTsgaSA+PSAwOyBpLS0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGludCB1aWQgPSBtQ2xpZW50VWlkcy5rZXlBdChpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtTmF2aWdhdGluZykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1CYXR0ZXJ5U3RhdHMubm90ZVN0YXJ0R3BzKHVpZCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1CYXR0ZXJ5U3RhdHMubm90ZVN0b3BHcHModWlkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgIExvZy53KFRBRywgIlJlbW90ZUV4Y2VwdGlvbiBpbiByZXBvcnRTdGF0dXMiKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAvLyBzZW5kIGFuIGludGVudCB0byBub3RpZnkgdGhhdCB0aGUgR1BTIGhhcyBiZWVuIGVuYWJsZWQgb3IgZGlzYWJsZWQuCisgICAgICAgICAgICAgICAgSW50ZW50IGludGVudCA9IG5ldyBJbnRlbnQoTG9jYXRpb25NYW5hZ2VyLkdQU19FTkFCTEVEX0NIQU5HRV9BQ1RJT04pOworICAgICAgICAgICAgICAgIGludGVudC5wdXRFeHRyYShMb2NhdGlvbk1hbmFnZXIuRVhUUkFfR1BTX0VOQUJMRUQsIG1OYXZpZ2F0aW5nKTsKKyAgICAgICAgICAgICAgICBtQ29udGV4dC5zZW5kQnJvYWRjYXN0KGludGVudCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBjYWxsZWQgZnJvbSBuYXRpdmUgY29kZSB0byB1cGRhdGUgU1YgaW5mbworICAgICAqLworICAgIHByaXZhdGUgdm9pZCByZXBvcnRTdlN0YXR1cygpIHsKKworICAgICAgICBpbnQgc3ZDb3VudCA9IG5hdGl2ZV9yZWFkX3N2X3N0YXR1cyhtU3ZzLCBtU25ycywgbVN2RWxldmF0aW9ucywgbVN2QXppbXV0aHMsIG1Tdk1hc2tzKTsKKyAgICAgICAgCisgICAgICAgIHN5bmNocm9uaXplZChtTGlzdGVuZXJzKSB7CisgICAgICAgICAgICBpbnQgc2l6ZSA9IG1MaXN0ZW5lcnMuc2l6ZSgpOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKKyAgICAgICAgICAgICAgICBMaXN0ZW5lciBsaXN0ZW5lciA9IG1MaXN0ZW5lcnMuZ2V0KGkpOworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIGxpc3RlbmVyLm1MaXN0ZW5lci5vblN2U3RhdHVzQ2hhbmdlZChzdkNvdW50LCBtU3ZzLCBtU25ycywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVN2RWxldmF0aW9ucywgbVN2QXppbXV0aHMsIG1Tdk1hc2tzW0VQSEVNRVJJU19NQVNLXSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVN2TWFza3NbQUxNQU5BQ19NQVNLXSwgbVN2TWFza3NbVVNFRF9GT1JfRklYX01BU0tdKTsgCisgICAgICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgTG9nLncoVEFHLCAiUmVtb3RlRXhjZXB0aW9uIGluIHJlcG9ydFN2SW5mbyIpOworICAgICAgICAgICAgICAgICAgICBtTGlzdGVuZXJzLnJlbW92ZShsaXN0ZW5lcik7CisgICAgICAgICAgICAgICAgICAgIC8vIGFkanVzdCBmb3Igc2l6ZSBvZiBsaXN0IGNoYW5naW5nCisgICAgICAgICAgICAgICAgICAgIHNpemUtLTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoVkVSQk9TRSkgeworICAgICAgICAgICAgTG9nLnYoVEFHLCAiU1YgY291bnQ6ICIgKyBzdkNvdW50ICsKKyAgICAgICAgICAgICAgICAgICAgIiBlcGhlbWVyaXNNYXNrOiAiICsgSW50ZWdlci50b0hleFN0cmluZyhtU3ZNYXNrc1tFUEhFTUVSSVNfTUFTS10pICsKKyAgICAgICAgICAgICAgICAgICAgIiBhbG1hbmFjTWFzazogIiArIEludGVnZXIudG9IZXhTdHJpbmcobVN2TWFza3NbQUxNQU5BQ19NQVNLXSkpOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzdkNvdW50OyBpKyspIHsKKyAgICAgICAgICAgICAgICBMb2cudihUQUcsICJzdjogIiArIG1TdnNbaV0gKworICAgICAgICAgICAgICAgICAgICAgICAgIiBzbnI6ICIgKyAoZmxvYXQpbVNucnNbaV0vMTAgKworICAgICAgICAgICAgICAgICAgICAgICAgIiBlbGV2OiAiICsgbVN2RWxldmF0aW9uc1tpXSArCisgICAgICAgICAgICAgICAgICAgICAgICAiIGF6aW11dGg6ICIgKyBtU3ZBemltdXRoc1tpXSArCisgICAgICAgICAgICAgICAgICAgICAgICAoKG1Tdk1hc2tzW0VQSEVNRVJJU19NQVNLXSAmICgxIDw8IChtU3ZzW2ldIC0gMSkpKSA9PSAwID8gIiAgIiA6ICIgRSIpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICgobVN2TWFza3NbQUxNQU5BQ19NQVNLXSAmICgxIDw8IChtU3ZzW2ldIC0gMSkpKSA9PSAwID8gIiAgIiA6ICIgQSIpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICgobVN2TWFza3NbVVNFRF9GT1JfRklYX01BU0tdICYgKDEgPDwgKG1TdnNbaV0gLSAxKSkpID09IDAgPyAiIiA6ICJVIikpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gcmV0dXJuIG51bWJlciBvZiBzZXRzIHVzZWQgaW4gZml4IGluc3RlYWQgb2YgdG90YWwKKyAgICAgICAgdXBkYXRlU3RhdHVzKG1TdGF0dXMsIEludGVnZXIuYml0Q291bnQobVN2TWFza3NbVVNFRF9GT1JfRklYX01BU0tdKSk7CisKKyAgICAgICAgaWYgKG1OYXZpZ2F0aW5nICYmIG1TdGF0dXMgPT0gTG9jYXRpb25Qcm92aWRlci5BVkFJTEFCTEUgJiYgbUxhc3RGaXhUaW1lID4gMCAmJgorICAgICAgICAgICAgU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCkgLSBtTGFzdEZpeFRpbWUgPiBSRUNFTlRfRklYX1RJTUVPVVQpIHsKKyAgICAgICAgICAgIC8vIHNlbmQgYW4gaW50ZW50IHRvIG5vdGlmeSB0aGF0IHRoZSBHUFMgaXMgbm8gbG9uZ2VyIHJlY2VpdmluZyBmaXhlcy4KKyAgICAgICAgICAgIEludGVudCBpbnRlbnQgPSBuZXcgSW50ZW50KExvY2F0aW9uTWFuYWdlci5HUFNfRklYX0NIQU5HRV9BQ1RJT04pOworICAgICAgICAgICAgaW50ZW50LnB1dEV4dHJhKExvY2F0aW9uTWFuYWdlci5FWFRSQV9HUFNfRU5BQkxFRCwgZmFsc2UpOworICAgICAgICAgICAgbUNvbnRleHQuc2VuZEJyb2FkY2FzdChpbnRlbnQpOworICAgICAgICAgICAgdXBkYXRlU3RhdHVzKExvY2F0aW9uUHJvdmlkZXIuVEVNUE9SQVJJTFlfVU5BVkFJTEFCTEUsIG1TdkNvdW50KTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIGNhbGxlZCBmcm9tIG5hdGl2ZSBjb2RlIHRvIHVwZGF0ZSBBR1BTIHN0YXR1cworICAgICAqLworICAgIHByaXZhdGUgdm9pZCByZXBvcnRBR3BzU3RhdHVzKGludCB0eXBlLCBpbnQgc3RhdHVzKSB7CisgICAgICAgIHN3aXRjaCAoc3RhdHVzKSB7CisgICAgICAgICAgICBjYXNlIEdQU19SRVFVRVNUX0FHUFNfREFUQV9DT05OOgorICAgICAgICAgICAgICAgICBpbnQgcmVzdWx0ID0gbUNvbm5NZ3Iuc3RhcnRVc2luZ05ldHdvcmtGZWF0dXJlKAorICAgICAgICAgICAgICAgICAgICAgICAgQ29ubmVjdGl2aXR5TWFuYWdlci5UWVBFX01PQklMRSwgUGhvbmUuRkVBVFVSRV9FTkFCTEVfU1VQTCk7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBQaG9uZS5BUE5fQUxSRUFEWV9BQ1RJVkUpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKG1BR3BzQXBuICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZV9hZ3BzX2RhdGFfY29ubl9vcGVuKG1BR3BzQXBuKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1BR3BzRGF0YUNvbm5lY3Rpb25TdGF0ZSA9IEFHUFNfREFUQV9DT05ORUNUSU9OX09QRU47CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBMb2cuZShUQUcsICJtQUdwc0FwbiBub3Qgc2V0IHdoZW4gcmVjZWl2aW5nIFBob25lLkFQTl9BTFJFQURZX0FDVElWRSIpOworICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlX2FncHNfZGF0YV9jb25uX2ZhaWxlZCgpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyZXN1bHQgPT0gUGhvbmUuQVBOX1JFUVVFU1RfU1RBUlRFRCkgeworICAgICAgICAgICAgICAgICAgICBtQUdwc0RhdGFDb25uZWN0aW9uU3RhdGUgPSBBR1BTX0RBVEFfQ09OTkVDVElPTl9PUEVOSU5HOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIG5hdGl2ZV9hZ3BzX2RhdGFfY29ubl9mYWlsZWQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEdQU19SRUxFQVNFX0FHUFNfREFUQV9DT05OOgorICAgICAgICAgICAgICAgIGlmIChtQUdwc0RhdGFDb25uZWN0aW9uU3RhdGUgIT0gQUdQU19EQVRBX0NPTk5FQ1RJT05fQ0xPU0VEKSB7CisgICAgICAgICAgICAgICAgICAgIG1Db25uTWdyLnN0b3BVc2luZ05ldHdvcmtGZWF0dXJlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIENvbm5lY3Rpdml0eU1hbmFnZXIuVFlQRV9NT0JJTEUsIFBob25lLkZFQVRVUkVfRU5BQkxFX1NVUEwpOworICAgICAgICAgICAgICAgICAgICBuYXRpdmVfYWdwc19kYXRhX2Nvbm5fY2xvc2VkKCk7CisgICAgICAgICAgICAgICAgICAgIG1BR3BzRGF0YUNvbm5lY3Rpb25TdGF0ZSA9IEFHUFNfREFUQV9DT05ORUNUSU9OX0NMT1NFRDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEdQU19BR1BTX0RBVEFfQ09OTkVDVEVEOgorICAgICAgICAgICAgICAgIC8vIExvZy5kKFRBRywgIkdQU19BR1BTX0RBVEFfQ09OTkVDVEVEIik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEdQU19BR1BTX0RBVEFfQ09OTl9ET05FOgorICAgICAgICAgICAgICAgIC8vIExvZy5kKFRBRywgIkdQU19BR1BTX0RBVEFfQ09OTl9ET05FIik7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEdQU19BR1BTX0RBVEFfQ09OTl9GQUlMRUQ6CisgICAgICAgICAgICAgICAgLy8gTG9nLmQoVEFHLCAiR1BTX0FHUFNfREFUQV9DT05OX0ZBSUxFRCIpOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgLyoqCisgICAgICogY2FsbGVkIGZyb20gbmF0aXZlIGNvZGUgdG8gcmVwb3J0IE5NRUEgZGF0YSByZWNlaXZlZAorICAgICAqLworICAgIHByaXZhdGUgdm9pZCByZXBvcnRObWVhKGxvbmcgdGltZXN0YW1wKSB7CisgICAgICAgIHN5bmNocm9uaXplZChtTGlzdGVuZXJzKSB7CisgICAgICAgICAgICBpbnQgc2l6ZSA9IG1MaXN0ZW5lcnMuc2l6ZSgpOworICAgICAgICAgICAgaWYgKHNpemUgPiAwKSB7CisgICAgICAgICAgICAgICAgLy8gZG9uJ3QgYm90aGVyIGNyZWF0aW5nIHRoZSBTdHJpbmcgaWYgd2UgaGF2ZSBubyBsaXN0ZW5lcnMKKyAgICAgICAgICAgICAgICBpbnQgbGVuZ3RoID0gbmF0aXZlX3JlYWRfbm1lYShtTm1lYUJ1ZmZlciwgbU5tZWFCdWZmZXIubGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBTdHJpbmcgbm1lYSA9IG5ldyBTdHJpbmcobU5tZWFCdWZmZXIsIDAsIGxlbmd0aCk7CisKKyAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICAgICAgICAgICAgICBMaXN0ZW5lciBsaXN0ZW5lciA9IG1MaXN0ZW5lcnMuZ2V0KGkpOworICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgbGlzdGVuZXIubUxpc3RlbmVyLm9uTm1lYVJlY2VpdmVkKHRpbWVzdGFtcCwgbm1lYSk7CisgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBMb2cudyhUQUcsICJSZW1vdGVFeGNlcHRpb24gaW4gcmVwb3J0Tm1lYSIpOworICAgICAgICAgICAgICAgICAgICAgICAgbUxpc3RlbmVycy5yZW1vdmUobGlzdGVuZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgLy8gYWRqdXN0IGZvciBzaXplIG9mIGxpc3QgY2hhbmdpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIHNpemUtLTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIGNhbGxlZCBmcm9tIG5hdGl2ZSBjb2RlIHRvIGluZm9ybSB1cyB3aGF0IHRoZSBHUFMgZW5naW5lIGNhcGFiaWxpdGllcyBhcmUKKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgc2V0RW5naW5lQ2FwYWJpbGl0aWVzKGludCBjYXBhYmlsaXRpZXMpIHsKKyAgICAgICAgbUVuZ2luZUNhcGFiaWxpdGllcyA9IGNhcGFiaWxpdGllczsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBjYWxsZWQgZnJvbSBuYXRpdmUgY29kZSB0byByZXF1ZXN0IFhUUkEgZGF0YQorICAgICAqLworICAgIHByaXZhdGUgdm9pZCB4dHJhRG93bmxvYWRSZXF1ZXN0KCkgeworICAgICAgICBpZiAoREVCVUcpIExvZy5kKFRBRywgInh0cmFEb3dubG9hZFJlcXVlc3QiKTsKKyAgICAgICAgc2VuZE1lc3NhZ2UoRE9XTkxPQURfWFRSQV9EQVRBLCAwLCBudWxsKTsKKyAgICB9CisKKyAgICAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyAgICAvLyBOSSBDbGllbnQgc3VwcG9ydAorCS8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorICAgIHByaXZhdGUgZmluYWwgSU5ldEluaXRpYXRlZExpc3RlbmVyIG1OZXRJbml0aWF0ZWRMaXN0ZW5lciA9IG5ldyBJTmV0SW5pdGlhdGVkTGlzdGVuZXIuU3R1YigpIHsKKyAgICAJLy8gU2VuZHMgYSByZXNwb25zZSBmb3IgYW4gTkkgcmVxZXVzdCB0byBIQUwuCisgICAgCXB1YmxpYyBib29sZWFuIHNlbmROaVJlc3BvbnNlKGludCBub3RpZmljYXRpb25JZCwgaW50IHVzZXJSZXNwb25zZSkKKyAgICAJeworICAgICAgICAJLy8gVE9ETyBBZGQgUGVybWlzc2lvbiBjaGVjaworICAgIAkJCisgICAgCQlTdHJpbmdCdWlsZGVyIGV4dHJhc0J1ZiA9IG5ldyBTdHJpbmdCdWlsZGVyKCk7CisKKyAgICAJCWlmIChERUJVRykgTG9nLmQoVEFHLCAic2VuZE5pUmVzcG9uc2UsIG5vdGlmSWQ6ICIgKyBub3RpZmljYXRpb25JZCArCisgICAgCQkJCSIsIHJlc3BvbnNlOiAiICsgdXNlclJlc3BvbnNlKTsKKyAgICAJCQorICAgIAkJbmF0aXZlX3NlbmRfbmlfcmVzcG9uc2Uobm90aWZpY2F0aW9uSWQsIHVzZXJSZXNwb25zZSk7CisgICAgCQkKKyAgICAJCXJldHVybiB0cnVlOworICAgIAl9ICAgICAgICAKKyAgICB9OworICAgICAgICAKKyAgICBwdWJsaWMgSU5ldEluaXRpYXRlZExpc3RlbmVyIGdldE5ldEluaXRpYXRlZExpc3RlbmVyKCkgeworICAgICAgICByZXR1cm4gbU5ldEluaXRpYXRlZExpc3RlbmVyOworICAgIH0KKworICAgIC8vIENhbGxlZCBieSBKTkkgZnVuY3Rpb24gdG8gcmVwb3J0IGFuIE5JIHJlcXVlc3QuCisJQFN1cHByZXNzV2FybmluZ3MoImRlcHJlY2F0aW9uIikKKwlwdWJsaWMgdm9pZCByZXBvcnROaU5vdGlmaWNhdGlvbigKKyAgICAgICAgCWludCBub3RpZmljYXRpb25JZCwKKyAgICAgICAgCWludCBuaVR5cGUsCisgICAgICAgIAlpbnQgbm90aWZ5RmxhZ3MsCisgICAgICAgIAlpbnQgdGltZW91dCwKKyAgICAgICAgCWludCBkZWZhdWx0UmVzcG9uc2UsCisgICAgICAgIAlTdHJpbmcgcmVxdWVzdG9ySWQsCisgICAgICAgIAlTdHJpbmcgdGV4dCwKKyAgICAgICAgCWludCByZXF1ZXN0b3JJZEVuY29kaW5nLAorICAgICAgICAJaW50IHRleHRFbmNvZGluZywKKyAgICAgICAgCVN0cmluZyBleHRyYXMgIC8vIEVuY29kZWQgZXh0cmEgZGF0YQorICAgICAgICApCisJeworCQlMb2cuaShUQUcsICJyZXBvcnROaU5vdGlmaWNhdGlvbjogZW50ZXJlZCIpOworCQlMb2cuaShUQUcsICJub3RpZmljYXRpb25JZDogIiArIG5vdGlmaWNhdGlvbklkICsKKwkJCQkiLCBuaVR5cGU6ICIgKyBuaVR5cGUgKworCQkJCSIsIG5vdGlmeUZsYWdzOiAiICsgbm90aWZ5RmxhZ3MgKworCQkJCSIsIHRpbWVvdXQ6ICIgKyB0aW1lb3V0ICsKKwkJCQkiLCBkZWZhdWx0UmVzcG9uc2U6ICIgKyBkZWZhdWx0UmVzcG9uc2UpOworCQkKKwkJTG9nLmkoVEFHLCAicmVxdWVzdG9ySWQ6ICIgKyByZXF1ZXN0b3JJZCArCisJCQkJIiwgdGV4dDogIiArIHRleHQgKworCQkJCSIsIHJlcXVlc3RvcklkRW5jb2Rpbmc6ICIgKyByZXF1ZXN0b3JJZEVuY29kaW5nICsKKwkJCQkiLCB0ZXh0RW5jb2Rpbmc6ICIgKyB0ZXh0RW5jb2RpbmcpOworCQkKKwkJR3BzTmlOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uID0gbmV3IEdwc05pTm90aWZpY2F0aW9uKCk7CisJCQorCQlub3RpZmljYXRpb24ubm90aWZpY2F0aW9uSWQgPSBub3RpZmljYXRpb25JZDsKKwkJbm90aWZpY2F0aW9uLm5pVHlwZSA9IG5pVHlwZTsKKwkJbm90aWZpY2F0aW9uLm5lZWROb3RpZnkgPSAobm90aWZ5RmxhZ3MgJiBHcHNOZXRJbml0aWF0ZWRIYW5kbGVyLkdQU19OSV9ORUVEX05PVElGWSkgIT0gMDsKKwkJbm90aWZpY2F0aW9uLm5lZWRWZXJpZnkgPSAobm90aWZ5RmxhZ3MgJiBHcHNOZXRJbml0aWF0ZWRIYW5kbGVyLkdQU19OSV9ORUVEX1ZFUklGWSkgIT0gMDsKKwkJbm90aWZpY2F0aW9uLnByaXZhY3lPdmVycmlkZSA9IChub3RpZnlGbGFncyAmIEdwc05ldEluaXRpYXRlZEhhbmRsZXIuR1BTX05JX1BSSVZBQ1lfT1ZFUlJJREUpICE9IDA7CisJCW5vdGlmaWNhdGlvbi50aW1lb3V0ID0gdGltZW91dDsKKwkJbm90aWZpY2F0aW9uLmRlZmF1bHRSZXNwb25zZSA9IGRlZmF1bHRSZXNwb25zZTsKKwkJbm90aWZpY2F0aW9uLnJlcXVlc3RvcklkID0gcmVxdWVzdG9ySWQ7CisJCW5vdGlmaWNhdGlvbi50ZXh0ID0gdGV4dDsKKwkJbm90aWZpY2F0aW9uLnJlcXVlc3RvcklkRW5jb2RpbmcgPSByZXF1ZXN0b3JJZEVuY29kaW5nOworCQlub3RpZmljYXRpb24udGV4dEVuY29kaW5nID0gdGV4dEVuY29kaW5nOworCQkKKwkJLy8gUHJvY2VzcyBleHRyYXMsIGFzc3VtaW5nIHRoZSBmb3JtYXQgaXMKKwkJLy8gb25lIG9mIG1vcmUgbGluZXMgb2YgImtleSA9IHZhbHVlIgorCQlCdW5kbGUgYnVuZGxlID0gbmV3IEJ1bmRsZSgpOworCQkKKwkJaWYgKGV4dHJhcyA9PSBudWxsKSBleHRyYXMgPSAiIjsKKwkJUHJvcGVydGllcyBleHRyYVByb3AgPSBuZXcgUHJvcGVydGllcygpOworCQkKKwkJdHJ5IHsKKwkJCWV4dHJhUHJvcC5sb2FkKG5ldyBTdHJpbmdCdWZmZXJJbnB1dFN0cmVhbShleHRyYXMpKTsKKwkJfQorCQljYXRjaCAoSU9FeGNlcHRpb24gZSkKKwkJeworCQkJTG9nLmUoVEFHLCAicmVwb3J0TmlOb3RpZmljYXRpb24gY2Fubm90IHBhcnNlIGV4dHJhcyBkYXRhOiAiICsgZXh0cmFzKTsKKwkJfQorCQkKKwkJZm9yIChFbnRyeTxPYmplY3QsIE9iamVjdD4gZW50IDogZXh0cmFQcm9wLmVudHJ5U2V0KCkpCisJCXsKKwkJCWJ1bmRsZS5wdXRTdHJpbmcoKFN0cmluZykgZW50LmdldEtleSgpLCAoU3RyaW5nKSBlbnQuZ2V0VmFsdWUoKSk7CisJCX0JCQorCQkKKwkJbm90aWZpY2F0aW9uLmV4dHJhcyA9IGJ1bmRsZTsKKwkJCisJCW1OSUhhbmRsZXIuaGFuZGxlTmlOb3RpZmljYXRpb24obm90aWZpY2F0aW9uKTsJCQorCX0KKworICAgIHByaXZhdGUgdm9pZCBzZW5kTWVzc2FnZShpbnQgbWVzc2FnZSwgaW50IGFyZywgT2JqZWN0IG9iaikgeworICAgICAgICAvLyBob2xkIGEgd2FrZSBsb2NrIHdoaWxlIG1lc3NhZ2VzIGFyZSBwZW5kaW5nCisgICAgICAgIHN5bmNocm9uaXplZCAobVdha2VMb2NrKSB7CisgICAgICAgICAgICBtUGVuZGluZ01lc3NhZ2VCaXRzIHw9ICgxIDw8IG1lc3NhZ2UpOworICAgICAgICAgICAgbVdha2VMb2NrLmFjcXVpcmUoKTsKKyAgICAgICAgICAgIG1IYW5kbGVyLnJlbW92ZU1lc3NhZ2VzKG1lc3NhZ2UpOworICAgICAgICAgICAgTWVzc2FnZSBtID0gTWVzc2FnZS5vYnRhaW4obUhhbmRsZXIsIG1lc3NhZ2UpOworICAgICAgICAgICAgbS5hcmcxID0gYXJnOworICAgICAgICAgICAgbS5vYmogPSBvYmo7CisgICAgICAgICAgICBtSGFuZGxlci5zZW5kTWVzc2FnZShtKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHByaXZhdGUgZmluYWwgY2xhc3MgUHJvdmlkZXJIYW5kbGVyIGV4dGVuZHMgSGFuZGxlciB7CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgdm9pZCBoYW5kbGVNZXNzYWdlKE1lc3NhZ2UgbXNnKQorICAgICAgICB7CisgICAgICAgICAgICBpbnQgbWVzc2FnZSA9IG1zZy53aGF0OworICAgICAgICAgICAgc3dpdGNoIChtZXNzYWdlKSB7CisgICAgICAgICAgICAgICAgY2FzZSBFTkFCTEU6CisgICAgICAgICAgICAgICAgICAgIGlmIChtc2cuYXJnMSA9PSAxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVFbmFibGUoKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRsZURpc2FibGUoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIEVOQUJMRV9UUkFDS0lORzoKKyAgICAgICAgICAgICAgICAgICAgaGFuZGxlRW5hYmxlTG9jYXRpb25UcmFja2luZyhtc2cuYXJnMSA9PSAxKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBSRVFVRVNUX1NJTkdMRV9TSE9UOgorICAgICAgICAgICAgICAgICAgICBoYW5kbGVSZXF1ZXN0U2luZ2xlU2hvdCgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBjYXNlIFVQREFURV9ORVRXT1JLX1NUQVRFOgorICAgICAgICAgICAgICAgICAgICBoYW5kbGVVcGRhdGVOZXR3b3JrU3RhdGUobXNnLmFyZzEsIChOZXR3b3JrSW5mbyltc2cub2JqKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBJTkpFQ1RfTlRQX1RJTUU6CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZUluamVjdE50cFRpbWUoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBET1dOTE9BRF9YVFJBX0RBVEE6CisgICAgICAgICAgICAgICAgICAgIGlmIChuYXRpdmVfc3VwcG9ydHNfeHRyYSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVEb3dubG9hZFh0cmFEYXRhKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBVUERBVEVfTE9DQVRJT046CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZVVwZGF0ZUxvY2F0aW9uKChMb2NhdGlvbiltc2cub2JqKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBBRERfTElTVEVORVI6CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZUFkZExpc3RlbmVyKG1zZy5hcmcxKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgY2FzZSBSRU1PVkVfTElTVEVORVI6CisgICAgICAgICAgICAgICAgICAgIGhhbmRsZVJlbW92ZUxpc3RlbmVyKG1zZy5hcmcxKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyByZWxlYXNlIHdha2UgbG9jayBpZiBubyBtZXNzYWdlcyBhcmUgcGVuZGluZworICAgICAgICAgICAgc3luY2hyb25pemVkIChtV2FrZUxvY2spIHsKKyAgICAgICAgICAgICAgICBtUGVuZGluZ01lc3NhZ2VCaXRzICY9IH4oMSA8PCBtZXNzYWdlKTsKKyAgICAgICAgICAgICAgICBpZiAobWVzc2FnZSA9PSBBRERfTElTVEVORVIgfHwgbWVzc2FnZSA9PSBSRU1PVkVfTElTVEVORVIpIHsKKyAgICAgICAgICAgICAgICAgICAgbVBlbmRpbmdMaXN0ZW5lck1lc3NhZ2VzLS07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChtUGVuZGluZ01lc3NhZ2VCaXRzID09IDAgJiYgbVBlbmRpbmdMaXN0ZW5lck1lc3NhZ2VzID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgbVdha2VMb2NrLnJlbGVhc2UoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworCisgICAgcHJpdmF0ZSBmaW5hbCBjbGFzcyBHcHNMb2NhdGlvblByb3ZpZGVyVGhyZWFkIGV4dGVuZHMgVGhyZWFkIHsKKworICAgICAgICBwdWJsaWMgR3BzTG9jYXRpb25Qcm92aWRlclRocmVhZCgpIHsKKyAgICAgICAgICAgIHN1cGVyKCJHcHNMb2NhdGlvblByb3ZpZGVyIik7CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICBQcm9jZXNzLnNldFRocmVhZFByaW9yaXR5KFByb2Nlc3MuVEhSRUFEX1BSSU9SSVRZX0JBQ0tHUk9VTkQpOworICAgICAgICAgICAgaW5pdGlhbGl6ZSgpOworICAgICAgICAgICAgTG9vcGVyLnByZXBhcmUoKTsKKyAgICAgICAgICAgIG1IYW5kbGVyID0gbmV3IFByb3ZpZGVySGFuZGxlcigpOworICAgICAgICAgICAgLy8gc2lnbmFsIHdoZW4gd2UgYXJlIGluaXRpYWxpemVkIGFuZCByZWFkeSB0byBnbworICAgICAgICAgICAgbUluaXRpYWxpemVkTGF0Y2guY291bnREb3duKCk7CisgICAgICAgICAgICBMb29wZXIubG9vcCgpOworICAgICAgICB9CisgICAgfQorCisgICAgLy8gZm9yIEdQUyBTViBzdGF0aXN0aWNzCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1BWF9TVlMgPSAzMjsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgRVBIRU1FUklTX01BU0sgPSAwOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBBTE1BTkFDX01BU0sgPSAxOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBVU0VEX0ZPUl9GSVhfTUFTSyA9IDI7CisKKyAgICAvLyBwcmVhbGxvY2F0ZWQgYXJyYXlzLCB0byBhdm9pZCBtZW1vcnkgYWxsb2NhdGlvbiBpbiByZXBvcnRTdGF0dXMoKQorICAgIHByaXZhdGUgaW50IG1TdnNbXSA9IG5ldyBpbnRbTUFYX1NWU107CisgICAgcHJpdmF0ZSBmbG9hdCBtU25yc1tdID0gbmV3IGZsb2F0W01BWF9TVlNdOworICAgIHByaXZhdGUgZmxvYXQgbVN2RWxldmF0aW9uc1tdID0gbmV3IGZsb2F0W01BWF9TVlNdOworICAgIHByaXZhdGUgZmxvYXQgbVN2QXppbXV0aHNbXSA9IG5ldyBmbG9hdFtNQVhfU1ZTXTsKKyAgICBwcml2YXRlIGludCBtU3ZNYXNrc1tdID0gbmV3IGludFszXTsKKyAgICBwcml2YXRlIGludCBtU3ZDb3VudDsKKyAgICAvLyBwcmVhbGxvY2F0ZWQgdG8gYXZvaWQgbWVtb3J5IGFsbG9jYXRpb24gaW4gcmVwb3J0Tm1lYSgpCisgICAgcHJpdmF0ZSBieXRlW10gbU5tZWFCdWZmZXIgPSBuZXcgYnl0ZVsxMjBdOworCisgICAgc3RhdGljIHsgY2xhc3NfaW5pdF9uYXRpdmUoKTsgfQorICAgIHByaXZhdGUgc3RhdGljIG5hdGl2ZSB2b2lkIGNsYXNzX2luaXRfbmF0aXZlKCk7CisgICAgcHJpdmF0ZSBzdGF0aWMgbmF0aXZlIGJvb2xlYW4gbmF0aXZlX2lzX3N1cHBvcnRlZCgpOworCisgICAgcHJpdmF0ZSBuYXRpdmUgYm9vbGVhbiBuYXRpdmVfaW5pdCgpOworICAgIHByaXZhdGUgbmF0aXZlIHZvaWQgbmF0aXZlX2NsZWFudXAoKTsKKyAgICBwcml2YXRlIG5hdGl2ZSBib29sZWFuIG5hdGl2ZV9zZXRfcG9zaXRpb25fbW9kZShpbnQgbW9kZSwgaW50IHJlY3VycmVuY2UsIGludCBtaW5faW50ZXJ2YWwsCisgICAgICAgICAgICBpbnQgcHJlZmVycmVkX2FjY3VyYWN5LCBpbnQgcHJlZmVycmVkX3RpbWUpOworICAgIHByaXZhdGUgbmF0aXZlIGJvb2xlYW4gbmF0aXZlX3N0YXJ0KCk7CisgICAgcHJpdmF0ZSBuYXRpdmUgYm9vbGVhbiBuYXRpdmVfc3RvcCgpOworICAgIHByaXZhdGUgbmF0aXZlIHZvaWQgbmF0aXZlX2RlbGV0ZV9haWRpbmdfZGF0YShpbnQgZmxhZ3MpOworICAgIC8vIHJldHVybnMgbnVtYmVyIG9mIFNWcworICAgIC8vIG1hc2tbMF0gaXMgZXBoZW1lcmlzIG1hc2sgYW5kIG1hc2tbMV0gaXMgYWxtYW5hYyBtYXNrCisgICAgcHJpdmF0ZSBuYXRpdmUgaW50IG5hdGl2ZV9yZWFkX3N2X3N0YXR1cyhpbnRbXSBzdnMsIGZsb2F0W10gc25ycywKKyAgICAgICAgICAgIGZsb2F0W10gZWxldmF0aW9ucywgZmxvYXRbXSBhemltdXRocywgaW50W10gbWFza3MpOworICAgIHByaXZhdGUgbmF0aXZlIGludCBuYXRpdmVfcmVhZF9ubWVhKGJ5dGVbXSBidWZmZXIsIGludCBidWZmZXJTaXplKTsKKyAgICBwcml2YXRlIG5hdGl2ZSB2b2lkIG5hdGl2ZV9pbmplY3RfbG9jYXRpb24oZG91YmxlIGxhdGl0dWRlLCBkb3VibGUgbG9uZ2l0dWRlLCBmbG9hdCBhY2N1cmFjeSk7CisKKyAgICAvLyBYVFJBIFN1cHBvcnQKKyAgICBwcml2YXRlIG5hdGl2ZSB2b2lkIG5hdGl2ZV9pbmplY3RfdGltZShsb25nIHRpbWUsIGxvbmcgdGltZVJlZmVyZW5jZSwgaW50IHVuY2VydGFpbnR5KTsKKyAgICBwcml2YXRlIG5hdGl2ZSBib29sZWFuIG5hdGl2ZV9zdXBwb3J0c194dHJhKCk7CisgICAgcHJpdmF0ZSBuYXRpdmUgdm9pZCBuYXRpdmVfaW5qZWN0X3h0cmFfZGF0YShieXRlW10gZGF0YSwgaW50IGxlbmd0aCk7CisKKyAgICAvLyBERUJVRyBTdXBwb3J0CisgICAgcHJpdmF0ZSBuYXRpdmUgU3RyaW5nIG5hdGl2ZV9nZXRfaW50ZXJuYWxfc3RhdGUoKTsKKworICAgIC8vIEFHUFMgU3VwcG9ydAorICAgIHByaXZhdGUgbmF0aXZlIHZvaWQgbmF0aXZlX2FncHNfZGF0YV9jb25uX29wZW4oU3RyaW5nIGFwbik7CisgICAgcHJpdmF0ZSBuYXRpdmUgdm9pZCBuYXRpdmVfYWdwc19kYXRhX2Nvbm5fY2xvc2VkKCk7CisgICAgcHJpdmF0ZSBuYXRpdmUgdm9pZCBuYXRpdmVfYWdwc19kYXRhX2Nvbm5fZmFpbGVkKCk7CisgICAgcHJpdmF0ZSBuYXRpdmUgdm9pZCBuYXRpdmVfc2V0X2FncHNfc2VydmVyKGludCB0eXBlLCBTdHJpbmcgaG9zdG5hbWUsIGludCBwb3J0KTsKKworICAgIC8vIE5ldHdvcmstaW5pdGlhdGVkIChOSSkgU3VwcG9ydAorICAgIHByaXZhdGUgbmF0aXZlIHZvaWQgbmF0aXZlX3NlbmRfbmlfcmVzcG9uc2UoaW50IG5vdGlmaWNhdGlvbklkLCBpbnQgdXNlclJlc3BvbnNlKTsKK30KZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2xvY2F0aW9uL0dwc1h0cmFEb3dubG9hZGVyLmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9sb2NhdGlvbi9HcHNYdHJhRG93bmxvYWRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjOTY5ODAKLS0tIC9kZXYvbnVsbAorKysgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9sb2NhdGlvbi9HcHNYdHJhRG93bmxvYWRlci5qYXZhCkBAIC0wLDAgKzEsMTcxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5zZXJ2ZXIubG9jYXRpb247CisKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKK2ltcG9ydCBhbmRyb2lkLm5ldC5Qcm94eTsKK2ltcG9ydCBhbmRyb2lkLm5ldC5odHRwLkFuZHJvaWRIdHRwQ2xpZW50OworaW1wb3J0IGFuZHJvaWQudXRpbC5Db25maWc7CitpbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKKworaW1wb3J0IG9yZy5hcGFjaGUuaHR0cC5IdHRwRW50aXR5OworaW1wb3J0IG9yZy5hcGFjaGUuaHR0cC5IdHRwSG9zdDsKK2ltcG9ydCBvcmcuYXBhY2hlLmh0dHAuSHR0cFJlc3BvbnNlOworaW1wb3J0IG9yZy5hcGFjaGUuaHR0cC5TdGF0dXNMaW5lOworaW1wb3J0IG9yZy5hcGFjaGUuaHR0cC5jbGllbnQuSHR0cENsaWVudDsKK2ltcG9ydCBvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lm1ldGhvZHMuSHR0cEdldDsKK2ltcG9ydCBvcmcuYXBhY2hlLmh0dHAuY2xpZW50Lm1ldGhvZHMuSHR0cFVyaVJlcXVlc3Q7CitpbXBvcnQgb3JnLmFwYWNoZS5odHRwLmNvbm4ucGFyYW1zLkNvbm5Sb3V0ZVBhcmFtczsKKworaW1wb3J0IGphdmEuaW8uRGF0YUlucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS51dGlsLlByb3BlcnRpZXM7CitpbXBvcnQgamF2YS51dGlsLlJhbmRvbTsKKworLyoqCisgKiBBIGNsYXNzIGZvciBkb3dubG9hZGluZyBHUFMgWFRSQSBkYXRhLgorICoKKyAqIHtAaGlkZX0KKyAqLworcHVibGljIGNsYXNzIEdwc1h0cmFEb3dubG9hZGVyIHsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSAiR3BzWHRyYURvd25sb2FkZXIiOworICAgIAorICAgIHByaXZhdGUgQ29udGV4dCBtQ29udGV4dDsKKyAgICBwcml2YXRlIFN0cmluZ1tdIG1YdHJhU2VydmVyczsKKyAgICAvLyB0byBsb2FkIGJhbGFuY2Ugb3VyIHNlcnZlciByZXF1ZXN0cworICAgIHByaXZhdGUgaW50IG1OZXh0U2VydmVySW5kZXg7CisKKyAgICBHcHNYdHJhRG93bmxvYWRlcihDb250ZXh0IGNvbnRleHQsIFByb3BlcnRpZXMgcHJvcGVydGllcykgeworICAgICAgICBtQ29udGV4dCA9IGNvbnRleHQ7CisKKyAgICAgICAgLy8gcmVhZCBYVFJBIHNlcnZlcnMgZnJvbSB0aGUgUHJvcGVydGllcyBvYmplY3QKKyAgICAgICAgaW50IGNvdW50ID0gMDsKKyAgICAgICAgU3RyaW5nIHNlcnZlcjEgPSBwcm9wZXJ0aWVzLmdldFByb3BlcnR5KCJYVFJBX1NFUlZFUl8xIik7CisgICAgICAgIFN0cmluZyBzZXJ2ZXIyID0gcHJvcGVydGllcy5nZXRQcm9wZXJ0eSgiWFRSQV9TRVJWRVJfMiIpOworICAgICAgICBTdHJpbmcgc2VydmVyMyA9IHByb3BlcnRpZXMuZ2V0UHJvcGVydHkoIlhUUkFfU0VSVkVSXzMiKTsKKyAgICAgICAgaWYgKHNlcnZlcjEgIT0gbnVsbCkgY291bnQrKzsKKyAgICAgICAgaWYgKHNlcnZlcjIgIT0gbnVsbCkgY291bnQrKzsKKyAgICAgICAgaWYgKHNlcnZlcjMgIT0gbnVsbCkgY291bnQrKzsKKyAgICAgICAgCisgICAgICAgIGlmIChjb3VudCA9PSAwKSB7CisgICAgICAgICAgICBMb2cuZShUQUcsICJObyBYVFJBIHNlcnZlcnMgd2VyZSBzcGVjaWZpZWQgaW4gdGhlIEdQUyBjb25maWd1cmF0aW9uIik7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtWHRyYVNlcnZlcnMgPSBuZXcgU3RyaW5nW2NvdW50XTsKKyAgICAgICAgICAgIGNvdW50ID0gMDsKKyAgICAgICAgICAgIGlmIChzZXJ2ZXIxICE9IG51bGwpIG1YdHJhU2VydmVyc1tjb3VudCsrXSA9IHNlcnZlcjE7CisgICAgICAgICAgICBpZiAoc2VydmVyMiAhPSBudWxsKSBtWHRyYVNlcnZlcnNbY291bnQrK10gPSBzZXJ2ZXIyOworICAgICAgICAgICAgaWYgKHNlcnZlcjMgIT0gbnVsbCkgbVh0cmFTZXJ2ZXJzW2NvdW50KytdID0gc2VydmVyMzsKKworICAgICAgICAgICAgLy8gcmFuZG9taXplIGZpcnN0IHNlcnZlcgorICAgICAgICAgICAgUmFuZG9tIHJhbmRvbSA9IG5ldyBSYW5kb20oKTsKKyAgICAgICAgICAgIG1OZXh0U2VydmVySW5kZXggPSByYW5kb20ubmV4dEludChjb3VudCk7CisgICAgICAgIH0gICAgICAgCisgICAgfQorCisgICAgYnl0ZVtdIGRvd25sb2FkWHRyYURhdGEoKSB7CisgICAgICAgIFN0cmluZyBwcm94eUhvc3QgPSBQcm94eS5nZXRIb3N0KG1Db250ZXh0KTsKKyAgICAgICAgaW50IHByb3h5UG9ydCA9IFByb3h5LmdldFBvcnQobUNvbnRleHQpOworICAgICAgICBib29sZWFuIHVzZVByb3h5ID0gKHByb3h5SG9zdCAhPSBudWxsICYmIHByb3h5UG9ydCAhPSAtMSk7CisgICAgICAgIGJ5dGVbXSByZXN1bHQgPSBudWxsOworICAgICAgICBpbnQgc3RhcnRJbmRleCA9IG1OZXh0U2VydmVySW5kZXg7CisKKyAgICAgICAgaWYgKG1YdHJhU2VydmVycyA9PSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIC8vIGxvYWQgYmFsYW5jZSBvdXIgcmVxdWVzdHMgYW1vbmcgdGhlIGF2YWlsYWJsZSBzZXJ2ZXJzCisgICAgICAgIHdoaWxlIChyZXN1bHQgPT0gbnVsbCkgeworICAgICAgICAgICAgcmVzdWx0ID0gZG9Eb3dubG9hZChtWHRyYVNlcnZlcnNbbU5leHRTZXJ2ZXJJbmRleF0sIHVzZVByb3h5LCBwcm94eUhvc3QsIHByb3h5UG9ydCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIGluY3JlbWVudCBtTmV4dFNlcnZlckluZGV4IGFuZCB3cmFwIGFyb3VuZCBpZiBuZWNlc3NhcnkKKyAgICAgICAgICAgIG1OZXh0U2VydmVySW5kZXgrKzsKKyAgICAgICAgICAgIGlmIChtTmV4dFNlcnZlckluZGV4ID09IG1YdHJhU2VydmVycy5sZW5ndGgpIHsKKyAgICAgICAgICAgICAgICBtTmV4dFNlcnZlckluZGV4ID0gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vIGJyZWFrIGlmIHdlIGhhdmUgdHJpZWQgYWxsIHRoZSBzZXJ2ZXJzCisgICAgICAgICAgICBpZiAobU5leHRTZXJ2ZXJJbmRleCA9PSBzdGFydEluZGV4KSBicmVhazsKKyAgICAgICAgfQorICAgIAorICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworICAgIHByb3RlY3RlZCBzdGF0aWMgYnl0ZVtdIGRvRG93bmxvYWQoU3RyaW5nIHVybCwgYm9vbGVhbiBpc1Byb3h5U2V0LCAKKyAgICAgICAgICAgIFN0cmluZyBwcm94eUhvc3QsIGludCBwcm94eVBvcnQpIHsKKyAgICAgICAgaWYgKENvbmZpZy5MT0dEKSBMb2cuZChUQUcsICJEb3dubG9hZGluZyBYVFJBIGRhdGEgZnJvbSAiICsgdXJsKTsKKworICAgICAgICBBbmRyb2lkSHR0cENsaWVudCBjbGllbnQgPSBudWxsOworICAgICAgICB0cnkgeworICAgICAgICAgICAgY2xpZW50ID0gQW5kcm9pZEh0dHBDbGllbnQubmV3SW5zdGFuY2UoIkFuZHJvaWQiKTsKKyAgICAgICAgICAgIEh0dHBVcmlSZXF1ZXN0IHJlcSA9IG5ldyBIdHRwR2V0KHVybCk7CisKKyAgICAgICAgICAgIGlmIChpc1Byb3h5U2V0KSB7CisgICAgICAgICAgICAgICAgSHR0cEhvc3QgcHJveHkgPSBuZXcgSHR0cEhvc3QocHJveHlIb3N0LCBwcm94eVBvcnQpOworICAgICAgICAgICAgICAgIENvbm5Sb3V0ZVBhcmFtcy5zZXREZWZhdWx0UHJveHkocmVxLmdldFBhcmFtcygpLCBwcm94eSk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHJlcS5hZGRIZWFkZXIoCisgICAgICAgICAgICAgICAgICAgICJBY2NlcHQiLAorICAgICAgICAgICAgICAgICAgICAiKi8qLCBhcHBsaWNhdGlvbi92bmQud2FwLm1tcy1tZXNzYWdlLCBhcHBsaWNhdGlvbi92bmQud2FwLnNpYyIpOworCisgICAgICAgICAgICByZXEuYWRkSGVhZGVyKAorICAgICAgICAgICAgICAgICAgICAieC13YXAtcHJvZmlsZSIsCisgICAgICAgICAgICAgICAgICAgICJodHRwOi8vd3d3Lm9wZW5tb2JpbGVhbGxpYW5jZS5vcmcvdGVjaC9wcm9maWxlcy9VQVBST0YvY2NwcHNjaGVtYS0yMDAyMTIxMiMiKTsKKworICAgICAgICAgICAgSHR0cFJlc3BvbnNlIHJlc3BvbnNlID0gY2xpZW50LmV4ZWN1dGUocmVxKTsKKyAgICAgICAgICAgIFN0YXR1c0xpbmUgc3RhdHVzID0gcmVzcG9uc2UuZ2V0U3RhdHVzTGluZSgpOworICAgICAgICAgICAgaWYgKHN0YXR1cy5nZXRTdGF0dXNDb2RlKCkgIT0gMjAwKSB7IC8vIEhUVFAgMjAwIGlzIHN1Y2Nlc3MuCisgICAgICAgICAgICAgICAgaWYgKENvbmZpZy5MT0dEKSBMb2cuZChUQUcsICJIVFRQIGVycm9yOiAiICsgc3RhdHVzLmdldFJlYXNvblBocmFzZSgpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgSHR0cEVudGl0eSBlbnRpdHkgPSByZXNwb25zZS5nZXRFbnRpdHkoKTsKKyAgICAgICAgICAgIGJ5dGVbXSBib2R5ID0gbnVsbDsKKyAgICAgICAgICAgIGlmIChlbnRpdHkgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChlbnRpdHkuZ2V0Q29udGVudExlbmd0aCgpID4gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgYm9keSA9IG5ldyBieXRlWyhpbnQpIGVudGl0eS5nZXRDb250ZW50TGVuZ3RoKCldOworICAgICAgICAgICAgICAgICAgICAgICAgRGF0YUlucHV0U3RyZWFtIGRpcyA9IG5ldyBEYXRhSW5wdXRTdHJlYW0oZW50aXR5LmdldENvbnRlbnQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcy5yZWFkRnVsbHkoYm9keSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpcy5jbG9zZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9nLmUoVEFHLCAiVW5leHBlY3RlZCBJT0V4Y2VwdGlvbi4iLCBlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGZpbmFsbHkgeworICAgICAgICAgICAgICAgICAgICBpZiAoZW50aXR5ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVudGl0eS5jb25zdW1lQ29udGVudCgpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGJvZHk7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBpZiAoQ29uZmlnLkxPR0QpIExvZy5kKFRBRywgImVycm9yICIgKyBlKTsKKyAgICAgICAgfSBmaW5hbGx5IHsKKyAgICAgICAgICAgIGlmIChjbGllbnQgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGNsaWVudC5jbG9zZSgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworfQpkaWZmIC0tZ2l0IGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvbG9jYXRpb24vTG9jYXRpb25Qcm92aWRlckludGVyZmFjZS5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvbG9jYXRpb24vTG9jYXRpb25Qcm92aWRlckludGVyZmFjZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4NGFiODEKLS0tIC9kZXYvbnVsbAorKysgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9sb2NhdGlvbi9Mb2NhdGlvblByb3ZpZGVySW50ZXJmYWNlLmphdmEKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuc2VydmVyLmxvY2F0aW9uOworCitpbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5Dcml0ZXJpYTsKK2ltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uOworaW1wb3J0IGFuZHJvaWQubmV0Lk5ldHdvcmtJbmZvOworaW1wb3J0IGFuZHJvaWQub3MuQnVuZGxlOworCisvKioKKyAqIExvY2F0aW9uIE1hbmFnZXIncyBpbnRlcmZhY2UgZm9yIGxvY2F0aW9uIHByb3ZpZGVycy4KKyAqCisgKiB7QGhpZGV9CisgKi8KK3B1YmxpYyBpbnRlcmZhY2UgTG9jYXRpb25Qcm92aWRlckludGVyZmFjZSB7CisgICAgU3RyaW5nIGdldE5hbWUoKTsKKyAgICBib29sZWFuIHJlcXVpcmVzTmV0d29yaygpOworICAgIGJvb2xlYW4gcmVxdWlyZXNTYXRlbGxpdGUoKTsKKyAgICBib29sZWFuIHJlcXVpcmVzQ2VsbCgpOworICAgIGJvb2xlYW4gaGFzTW9uZXRhcnlDb3N0KCk7CisgICAgYm9vbGVhbiBzdXBwb3J0c0FsdGl0dWRlKCk7CisgICAgYm9vbGVhbiBzdXBwb3J0c1NwZWVkKCk7CisgICAgYm9vbGVhbiBzdXBwb3J0c0JlYXJpbmcoKTsKKyAgICBpbnQgZ2V0UG93ZXJSZXF1aXJlbWVudCgpOworICAgIGJvb2xlYW4gbWVldHNDcml0ZXJpYShDcml0ZXJpYSBjcml0ZXJpYSk7CisgICAgaW50IGdldEFjY3VyYWN5KCk7CisgICAgYm9vbGVhbiBpc0VuYWJsZWQoKTsKKyAgICB2b2lkIGVuYWJsZSgpOworICAgIHZvaWQgZGlzYWJsZSgpOworICAgIGludCBnZXRTdGF0dXMoQnVuZGxlIGV4dHJhcyk7CisgICAgbG9uZyBnZXRTdGF0dXNVcGRhdGVUaW1lKCk7CisgICAgdm9pZCBlbmFibGVMb2NhdGlvblRyYWNraW5nKGJvb2xlYW4gZW5hYmxlKTsKKyAgICAvKiByZXR1cm5zIGZhbHNlIGlmIHNpbmdsZSBzaG90IGlzIG5vdCBzdXBwb3J0ZWQgKi8KKyAgICBib29sZWFuIHJlcXVlc3RTaW5nbGVTaG90Rml4KCk7CisgICAgU3RyaW5nIGdldEludGVybmFsU3RhdGUoKTsKKyAgICB2b2lkIHNldE1pblRpbWUobG9uZyBtaW5UaW1lKTsKKyAgICB2b2lkIHVwZGF0ZU5ldHdvcmtTdGF0ZShpbnQgc3RhdGUsIE5ldHdvcmtJbmZvIGluZm8pOworICAgIHZvaWQgdXBkYXRlTG9jYXRpb24oTG9jYXRpb24gbG9jYXRpb24pOworICAgIGJvb2xlYW4gc2VuZEV4dHJhQ29tbWFuZChTdHJpbmcgY29tbWFuZCwgQnVuZGxlIGV4dHJhcyk7CisgICAgdm9pZCBhZGRMaXN0ZW5lcihpbnQgdWlkKTsKKyAgICB2b2lkIHJlbW92ZUxpc3RlbmVyKGludCB1aWQpOworfQpkaWZmIC0tZ2l0IGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvbG9jYXRpb24vTG9jYXRpb25Qcm92aWRlclByb3h5LmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9sb2NhdGlvbi9Mb2NhdGlvblByb3ZpZGVyUHJveHkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGQ3NzM3Ci0tLSAvZGV2L251bGwKKysrIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvbG9jYXRpb24vTG9jYXRpb25Qcm92aWRlclByb3h5LmphdmEKQEAgLTAsMCArMSw0MjMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLnNlcnZlci5sb2NhdGlvbjsKKworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db21wb25lbnROYW1lOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LlNlcnZpY2VDb25uZWN0aW9uOworaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uQ3JpdGVyaWE7CitpbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5JTG9jYXRpb25Qcm92aWRlcjsKK2ltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uOworaW1wb3J0IGFuZHJvaWQubmV0Lk5ldHdvcmtJbmZvOworaW1wb3J0IGFuZHJvaWQub3MuQnVuZGxlOworaW1wb3J0IGFuZHJvaWQub3MuSGFuZGxlcjsKK2ltcG9ydCBhbmRyb2lkLm9zLklCaW5kZXI7CitpbXBvcnQgYW5kcm9pZC5vcy5SZW1vdGVFeGNlcHRpb247CitpbXBvcnQgYW5kcm9pZC5vcy5TeXN0ZW1DbG9jazsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOworCitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwubG9jYXRpb24uRHVtbXlMb2NhdGlvblByb3ZpZGVyOworCisvKioKKyAqIEEgY2xhc3MgZm9yIHByb3h5aW5nIGxvY2F0aW9uIHByb3ZpZGVycyBpbXBsZW1lbnRlZCBhcyBzZXJ2aWNlcy4KKyAqCisgKiB7QGhpZGV9CisgKi8KK3B1YmxpYyBjbGFzcyBMb2NhdGlvblByb3ZpZGVyUHJveHkgaW1wbGVtZW50cyBMb2NhdGlvblByb3ZpZGVySW50ZXJmYWNlIHsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSAiTG9jYXRpb25Qcm92aWRlclByb3h5IjsKKworICAgIHByaXZhdGUgZmluYWwgQ29udGV4dCBtQ29udGV4dDsKKyAgICBwcml2YXRlIGZpbmFsIFN0cmluZyBtTmFtZTsKKyAgICBwcml2YXRlIElMb2NhdGlvblByb3ZpZGVyIG1Qcm92aWRlcjsKKyAgICBwcml2YXRlIEhhbmRsZXIgbUhhbmRsZXI7CisgICAgcHJpdmF0ZSBmaW5hbCBDb25uZWN0aW9uIG1TZXJ2aWNlQ29ubmVjdGlvbiA9IG5ldyBDb25uZWN0aW9uKCk7CisKKyAgICAvLyBjYWNoZWQgdmFsdWVzIHNldCBieSB0aGUgbG9jYXRpb24gbWFuYWdlcgorICAgIHByaXZhdGUgYm9vbGVhbiBtTG9jYXRpb25UcmFja2luZyA9IGZhbHNlOworICAgIHByaXZhdGUgYm9vbGVhbiBtRW5hYmxlZCA9IGZhbHNlOworICAgIHByaXZhdGUgbG9uZyBtTWluVGltZSA9IC0xOworICAgIHByaXZhdGUgaW50IG1OZXR3b3JrU3RhdGU7CisgICAgcHJpdmF0ZSBOZXR3b3JrSW5mbyBtTmV0d29ya0luZm87CisKKyAgICAvLyBmb3IgY2FjaGluZyByZXF1aXJlc05ldHdvcmssIHJlcXVpcmVzU2F0ZWxsaXRlLCBldGMuCisgICAgcHJpdmF0ZSBEdW1teUxvY2F0aW9uUHJvdmlkZXIgbUNhY2hlZEF0dHJpYnV0ZXM7CisKKyAgICAvLyBjb25zdHJ1Y3RvciBmb3IgcHJveHlpbmcgbG9jYXRpb24gcHJvdmlkZXJzIGltcGxlbWVudGVkIGluIGEgc2VwYXJhdGUgc2VydmljZQorICAgIHB1YmxpYyBMb2NhdGlvblByb3ZpZGVyUHJveHkoQ29udGV4dCBjb250ZXh0LCBTdHJpbmcgbmFtZSwgU3RyaW5nIHNlcnZpY2VOYW1lLAorICAgICAgICAgICAgSGFuZGxlciBoYW5kbGVyKSB7CisgICAgICAgIG1Db250ZXh0ID0gY29udGV4dDsKKyAgICAgICAgbU5hbWUgPSBuYW1lOworICAgICAgICBtSGFuZGxlciA9IGhhbmRsZXI7CisgICAgICAgIG1Db250ZXh0LmJpbmRTZXJ2aWNlKG5ldyBJbnRlbnQoc2VydmljZU5hbWUpLCBtU2VydmljZUNvbm5lY3Rpb24sIENvbnRleHQuQklORF9BVVRPX0NSRUFURSk7CisgICAgfQorCisgICAgcHJpdmF0ZSBjbGFzcyBDb25uZWN0aW9uIGltcGxlbWVudHMgU2VydmljZUNvbm5lY3Rpb24geworICAgICAgICBwdWJsaWMgdm9pZCBvblNlcnZpY2VDb25uZWN0ZWQoQ29tcG9uZW50TmFtZSBjbGFzc05hbWUsIElCaW5kZXIgc2VydmljZSkgeworICAgICAgICAgICAgTG9nLmQoVEFHLCAiTG9jYXRpb25Qcm92aWRlclByb3h5Lm9uU2VydmljZUNvbm5lY3RlZCAiICsgY2xhc3NOYW1lKTsKKyAgICAgICAgICAgIHN5bmNocm9uaXplZCAodGhpcykgeworICAgICAgICAgICAgICAgIG1Qcm92aWRlciA9IElMb2NhdGlvblByb3ZpZGVyLlN0dWIuYXNJbnRlcmZhY2Uoc2VydmljZSk7CisgICAgICAgICAgICAgICAgaWYgKG1Qcm92aWRlciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIG1IYW5kbGVyLnBvc3QobVNlcnZpY2VDb25uZWN0ZWRUYXNrKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBwdWJsaWMgdm9pZCBvblNlcnZpY2VEaXNjb25uZWN0ZWQoQ29tcG9uZW50TmFtZSBjbGFzc05hbWUpIHsKKyAgICAgICAgICAgIExvZy5kKFRBRywgIkxvY2F0aW9uUHJvdmlkZXJQcm94eS5vblNlcnZpY2VEaXNjb25uZWN0ZWQgIiArIGNsYXNzTmFtZSk7CisgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKHRoaXMpIHsKKyAgICAgICAgICAgICAgICBtUHJvdmlkZXIgPSBudWxsOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSBSdW5uYWJsZSBtU2VydmljZUNvbm5lY3RlZFRhc2sgPSBuZXcgUnVubmFibGUoKSB7CisgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgIElMb2NhdGlvblByb3ZpZGVyIHByb3ZpZGVyOworICAgICAgICAgICAgc3luY2hyb25pemVkIChtU2VydmljZUNvbm5lY3Rpb24pIHsKKyAgICAgICAgICAgICAgICBwcm92aWRlciA9IG1Qcm92aWRlcjsKKyAgICAgICAgICAgICAgICBpZiAocHJvdmlkZXIgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobUNhY2hlZEF0dHJpYnV0ZXMgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIG1DYWNoZWRBdHRyaWJ1dGVzID0gbmV3IER1bW15TG9jYXRpb25Qcm92aWRlcihtTmFtZSwgbnVsbCk7CisgICAgICAgICAgICAgICAgICAgIG1DYWNoZWRBdHRyaWJ1dGVzLnNldFJlcXVpcmVzTmV0d29yayhwcm92aWRlci5yZXF1aXJlc05ldHdvcmsoKSk7CisgICAgICAgICAgICAgICAgICAgIG1DYWNoZWRBdHRyaWJ1dGVzLnNldFJlcXVpcmVzU2F0ZWxsaXRlKHByb3ZpZGVyLnJlcXVpcmVzU2F0ZWxsaXRlKCkpOworICAgICAgICAgICAgICAgICAgICBtQ2FjaGVkQXR0cmlidXRlcy5zZXRSZXF1aXJlc0NlbGwocHJvdmlkZXIucmVxdWlyZXNDZWxsKCkpOworICAgICAgICAgICAgICAgICAgICBtQ2FjaGVkQXR0cmlidXRlcy5zZXRIYXNNb25ldGFyeUNvc3QocHJvdmlkZXIuaGFzTW9uZXRhcnlDb3N0KCkpOworICAgICAgICAgICAgICAgICAgICBtQ2FjaGVkQXR0cmlidXRlcy5zZXRTdXBwb3J0c0FsdGl0dWRlKHByb3ZpZGVyLnN1cHBvcnRzQWx0aXR1ZGUoKSk7CisgICAgICAgICAgICAgICAgICAgIG1DYWNoZWRBdHRyaWJ1dGVzLnNldFN1cHBvcnRzU3BlZWQocHJvdmlkZXIuc3VwcG9ydHNTcGVlZCgpKTsKKyAgICAgICAgICAgICAgICAgICAgbUNhY2hlZEF0dHJpYnV0ZXMuc2V0U3VwcG9ydHNCZWFyaW5nKHByb3ZpZGVyLnN1cHBvcnRzQmVhcmluZygpKTsKKyAgICAgICAgICAgICAgICAgICAgbUNhY2hlZEF0dHJpYnV0ZXMuc2V0UG93ZXJSZXF1aXJlbWVudChwcm92aWRlci5nZXRQb3dlclJlcXVpcmVtZW50KCkpOworICAgICAgICAgICAgICAgICAgICBtQ2FjaGVkQXR0cmlidXRlcy5zZXRBY2N1cmFjeShwcm92aWRlci5nZXRBY2N1cmFjeSgpKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgICAgICBtQ2FjaGVkQXR0cmlidXRlcyA9IG51bGw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyByZXNlbmQgcHJldmlvdXMgdmFsdWVzIGZyb20gdGhlIGxvY2F0aW9uIG1hbmFnZXIgaWYgdGhlIHNlcnZpY2UgaGFzIHJlc3RhcnRlZAorICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBpZiAobUVuYWJsZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXIuZW5hYmxlKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChtTG9jYXRpb25UcmFja2luZykgeworICAgICAgICAgICAgICAgICAgICBwcm92aWRlci5lbmFibGVMb2NhdGlvblRyYWNraW5nKHRydWUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAobU1pblRpbWUgPj0gMCkgeworICAgICAgICAgICAgICAgICAgICBwcm92aWRlci5zZXRNaW5UaW1lKG1NaW5UaW1lKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG1OZXR3b3JrSW5mbyAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVyLnVwZGF0ZU5ldHdvcmtTdGF0ZShtTmV0d29ya1N0YXRlLCBtTmV0d29ya0luZm8pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9OworCisgICAgcHVibGljIFN0cmluZyBnZXROYW1lKCkgeworICAgICAgICByZXR1cm4gbU5hbWU7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gcmVxdWlyZXNOZXR3b3JrKCkgeworICAgICAgICBpZiAobUNhY2hlZEF0dHJpYnV0ZXMgIT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIG1DYWNoZWRBdHRyaWJ1dGVzLnJlcXVpcmVzTmV0d29yaygpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gcmVxdWlyZXNTYXRlbGxpdGUoKSB7CisgICAgICAgIGlmIChtQ2FjaGVkQXR0cmlidXRlcyAhPSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gbUNhY2hlZEF0dHJpYnV0ZXMucmVxdWlyZXNTYXRlbGxpdGUoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIHJlcXVpcmVzQ2VsbCgpIHsKKyAgICAgICAgaWYgKG1DYWNoZWRBdHRyaWJ1dGVzICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBtQ2FjaGVkQXR0cmlidXRlcy5yZXF1aXJlc0NlbGwoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGhhc01vbmV0YXJ5Q29zdCgpIHsKKyAgICAgICAgaWYgKG1DYWNoZWRBdHRyaWJ1dGVzICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBtQ2FjaGVkQXR0cmlidXRlcy5oYXNNb25ldGFyeUNvc3QoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIHN1cHBvcnRzQWx0aXR1ZGUoKSB7CisgICAgICAgIGlmIChtQ2FjaGVkQXR0cmlidXRlcyAhPSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gbUNhY2hlZEF0dHJpYnV0ZXMuc3VwcG9ydHNBbHRpdHVkZSgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gc3VwcG9ydHNTcGVlZCgpIHsKKyAgICAgICAgaWYgKG1DYWNoZWRBdHRyaWJ1dGVzICE9IG51bGwpIHsKKyAgICAgICAgICAgIHJldHVybiBtQ2FjaGVkQXR0cmlidXRlcy5zdXBwb3J0c1NwZWVkKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAgcHVibGljIGJvb2xlYW4gc3VwcG9ydHNCZWFyaW5nKCkgeworICAgICAgICBpZiAobUNhY2hlZEF0dHJpYnV0ZXMgIT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIG1DYWNoZWRBdHRyaWJ1dGVzLnN1cHBvcnRzQmVhcmluZygpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIGludCBnZXRQb3dlclJlcXVpcmVtZW50KCkgeworICAgICAgICBpZiAobUNhY2hlZEF0dHJpYnV0ZXMgIT0gbnVsbCkgeworICAgICAgICAgICAgcmV0dXJuIG1DYWNoZWRBdHRyaWJ1dGVzLmdldFBvd2VyUmVxdWlyZW1lbnQoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIG1lZXRzQ3JpdGVyaWEoQ3JpdGVyaWEgY3JpdGVyaWEpIHsKKyAgICAgICBJTG9jYXRpb25Qcm92aWRlciBwcm92aWRlcjsKKyAgICAgICAgc3luY2hyb25pemVkIChtU2VydmljZUNvbm5lY3Rpb24pIHsKKyAgICAgICAgICAgIHByb3ZpZGVyID0gbVByb3ZpZGVyOworICAgICAgICB9CisgICAgICAgIGlmIChwcm92aWRlciAhPSBudWxsKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHJldHVybiBwcm92aWRlci5tZWV0c0NyaXRlcmlhKGNyaXRlcmlhKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgLy8gZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBpZiB3ZSBsb3N0IGNvbm5lY3Rpb24gdG8gdGhlIHByb3ZpZGVyCisgICAgICAgIGlmICgoY3JpdGVyaWEuZ2V0QWNjdXJhY3koKSAhPSBDcml0ZXJpYS5OT19SRVFVSVJFTUVOVCkgJiYKKyAgICAgICAgICAgIChjcml0ZXJpYS5nZXRBY2N1cmFjeSgpIDwgZ2V0QWNjdXJhY3koKSkpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBpbnQgY3JpdGVyaWFQb3dlciA9IGNyaXRlcmlhLmdldFBvd2VyUmVxdWlyZW1lbnQoKTsKKyAgICAgICAgaWYgKChjcml0ZXJpYVBvd2VyICE9IENyaXRlcmlhLk5PX1JFUVVJUkVNRU5UKSAmJgorICAgICAgICAgICAgKGNyaXRlcmlhUG93ZXIgPCBnZXRQb3dlclJlcXVpcmVtZW50KCkpKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNyaXRlcmlhLmlzQWx0aXR1ZGVSZXF1aXJlZCgpICYmICFzdXBwb3J0c0FsdGl0dWRlKCkpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY3JpdGVyaWEuaXNTcGVlZFJlcXVpcmVkKCkgJiYgIXN1cHBvcnRzU3BlZWQoKSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGlmIChjcml0ZXJpYS5pc0JlYXJpbmdSZXF1aXJlZCgpICYmICFzdXBwb3J0c0JlYXJpbmcoKSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgZ2V0QWNjdXJhY3koKSB7CisgICAgICAgIGlmIChtQ2FjaGVkQXR0cmlidXRlcyAhPSBudWxsKSB7CisgICAgICAgICAgICByZXR1cm4gbUNhY2hlZEF0dHJpYnV0ZXMuZ2V0QWNjdXJhY3koKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGVuYWJsZSgpIHsKKyAgICAgICAgbUVuYWJsZWQgPSB0cnVlOworICAgICAgICBJTG9jYXRpb25Qcm92aWRlciBwcm92aWRlcjsKKyAgICAgICAgc3luY2hyb25pemVkIChtU2VydmljZUNvbm5lY3Rpb24pIHsKKyAgICAgICAgICAgIHByb3ZpZGVyID0gbVByb3ZpZGVyOworICAgICAgICB9CisgICAgICAgIGlmIChwcm92aWRlciAhPSBudWxsKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHByb3ZpZGVyLmVuYWJsZSgpOworICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGRpc2FibGUoKSB7CisgICAgICAgIG1FbmFibGVkID0gZmFsc2U7CisgICAgICAgIElMb2NhdGlvblByb3ZpZGVyIHByb3ZpZGVyOworICAgICAgICBzeW5jaHJvbml6ZWQgKG1TZXJ2aWNlQ29ubmVjdGlvbikgeworICAgICAgICAgICAgcHJvdmlkZXIgPSBtUHJvdmlkZXI7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHByb3ZpZGVyICE9IG51bGwpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgcHJvdmlkZXIuZGlzYWJsZSgpOworICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGlzRW5hYmxlZCgpIHsKKyAgICAgICAgcmV0dXJuIG1FbmFibGVkOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgZ2V0U3RhdHVzKEJ1bmRsZSBleHRyYXMpIHsKKyAgICAgICAgSUxvY2F0aW9uUHJvdmlkZXIgcHJvdmlkZXI7CisgICAgICAgIHN5bmNocm9uaXplZCAobVNlcnZpY2VDb25uZWN0aW9uKSB7CisgICAgICAgICAgICBwcm92aWRlciA9IG1Qcm92aWRlcjsKKyAgICAgICAgfQorICAgICAgICBpZiAocHJvdmlkZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gcHJvdmlkZXIuZ2V0U3RhdHVzKGV4dHJhcyk7CisgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIHB1YmxpYyBsb25nIGdldFN0YXR1c1VwZGF0ZVRpbWUoKSB7CisgICAgICAgICBJTG9jYXRpb25Qcm92aWRlciBwcm92aWRlcjsKKyAgICAgICAgc3luY2hyb25pemVkIChtU2VydmljZUNvbm5lY3Rpb24pIHsKKyAgICAgICAgICAgIHByb3ZpZGVyID0gbVByb3ZpZGVyOworICAgICAgICB9CisgICAgICAgIGlmIChwcm92aWRlciAhPSBudWxsKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHJldHVybiBwcm92aWRlci5nZXRTdGF0dXNVcGRhdGVUaW1lKCk7CisgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiAwOworICAgICB9CisKKyAgICBwdWJsaWMgU3RyaW5nIGdldEludGVybmFsU3RhdGUoKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICByZXR1cm4gbVByb3ZpZGVyLmdldEludGVybmFsU3RhdGUoKTsKKyAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIExvZy5lKFRBRywgImdldEludGVybmFsU3RhdGUgZmFpbGVkIiwgZSk7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGlzTG9jYXRpb25UcmFja2luZygpIHsKKyAgICAgICAgcmV0dXJuIG1Mb2NhdGlvblRyYWNraW5nOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGVuYWJsZUxvY2F0aW9uVHJhY2tpbmcoYm9vbGVhbiBlbmFibGUpIHsKKyAgICAgICAgbUxvY2F0aW9uVHJhY2tpbmcgPSBlbmFibGU7CisgICAgICAgIGlmICghZW5hYmxlKSB7CisgICAgICAgICAgICBtTWluVGltZSA9IC0xOworICAgICAgICB9CisgICAgICAgIElMb2NhdGlvblByb3ZpZGVyIHByb3ZpZGVyOworICAgICAgICBzeW5jaHJvbml6ZWQgKG1TZXJ2aWNlQ29ubmVjdGlvbikgeworICAgICAgICAgICAgcHJvdmlkZXIgPSBtUHJvdmlkZXI7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHByb3ZpZGVyICE9IG51bGwpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgcHJvdmlkZXIuZW5hYmxlTG9jYXRpb25UcmFja2luZyhlbmFibGUpOworICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIHJlcXVlc3RTaW5nbGVTaG90Rml4KCkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcHVibGljIGxvbmcgZ2V0TWluVGltZSgpIHsKKyAgICAgICAgcmV0dXJuIG1NaW5UaW1lOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldE1pblRpbWUobG9uZyBtaW5UaW1lKSB7CisgICAgICAgbU1pblRpbWUgPSBtaW5UaW1lOworICAgICAgICBJTG9jYXRpb25Qcm92aWRlciBwcm92aWRlcjsKKyAgICAgICAgc3luY2hyb25pemVkIChtU2VydmljZUNvbm5lY3Rpb24pIHsKKyAgICAgICAgICAgIHByb3ZpZGVyID0gbVByb3ZpZGVyOworICAgICAgICB9CisgICAgICAgIGlmIChwcm92aWRlciAhPSBudWxsKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHByb3ZpZGVyLnNldE1pblRpbWUobWluVGltZSk7CisgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdXBkYXRlTmV0d29ya1N0YXRlKGludCBzdGF0ZSwgTmV0d29ya0luZm8gaW5mbykgeworICAgICAgICBtTmV0d29ya1N0YXRlID0gc3RhdGU7CisgICAgICAgIG1OZXR3b3JrSW5mbyA9IGluZm87CisgICAgICAgIElMb2NhdGlvblByb3ZpZGVyIHByb3ZpZGVyOworICAgICAgICBzeW5jaHJvbml6ZWQgKG1TZXJ2aWNlQ29ubmVjdGlvbikgeworICAgICAgICAgICAgcHJvdmlkZXIgPSBtUHJvdmlkZXI7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHByb3ZpZGVyICE9IG51bGwpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgcHJvdmlkZXIudXBkYXRlTmV0d29ya1N0YXRlKHN0YXRlLCBpbmZvKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB1cGRhdGVMb2NhdGlvbihMb2NhdGlvbiBsb2NhdGlvbikgeworICAgICAgICBJTG9jYXRpb25Qcm92aWRlciBwcm92aWRlcjsKKyAgICAgICAgc3luY2hyb25pemVkIChtU2VydmljZUNvbm5lY3Rpb24pIHsKKyAgICAgICAgICAgIHByb3ZpZGVyID0gbVByb3ZpZGVyOworICAgICAgICB9CisgICAgICAgIGlmIChwcm92aWRlciAhPSBudWxsKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHByb3ZpZGVyLnVwZGF0ZUxvY2F0aW9uKGxvY2F0aW9uKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBzZW5kRXh0cmFDb21tYW5kKFN0cmluZyBjb21tYW5kLCBCdW5kbGUgZXh0cmFzKSB7CisgICAgICAgIElMb2NhdGlvblByb3ZpZGVyIHByb3ZpZGVyOworICAgICAgICBzeW5jaHJvbml6ZWQgKG1TZXJ2aWNlQ29ubmVjdGlvbikgeworICAgICAgICAgICAgcHJvdmlkZXIgPSBtUHJvdmlkZXI7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHByb3ZpZGVyICE9IG51bGwpIHsKKyAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgcHJvdmlkZXIuc2VuZEV4dHJhQ29tbWFuZChjb21tYW5kLCBleHRyYXMpOworICAgICAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgYWRkTGlzdGVuZXIoaW50IHVpZCkgeworICAgICAgICBJTG9jYXRpb25Qcm92aWRlciBwcm92aWRlcjsKKyAgICAgICAgc3luY2hyb25pemVkIChtU2VydmljZUNvbm5lY3Rpb24pIHsKKyAgICAgICAgICAgIHByb3ZpZGVyID0gbVByb3ZpZGVyOworICAgICAgICB9CisgICAgICAgIGlmIChwcm92aWRlciAhPSBudWxsKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHByb3ZpZGVyLmFkZExpc3RlbmVyKHVpZCk7CisgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgcmVtb3ZlTGlzdGVuZXIoaW50IHVpZCkgeworICAgICAgICBJTG9jYXRpb25Qcm92aWRlciBwcm92aWRlcjsKKyAgICAgICAgc3luY2hyb25pemVkIChtU2VydmljZUNvbm5lY3Rpb24pIHsKKyAgICAgICAgICAgIHByb3ZpZGVyID0gbVByb3ZpZGVyOworICAgICAgICB9CisgICAgICAgIGlmIChwcm92aWRlciAhPSBudWxsKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIHByb3ZpZGVyLnJlbW92ZUxpc3RlbmVyKHVpZCk7CisgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvbG9jYXRpb24vTW9ja1Byb3ZpZGVyLmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9sb2NhdGlvbi9Nb2NrUHJvdmlkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMWIzNGI3Ci0tLSAvZGV2L251bGwKKysrIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvbG9jYXRpb24vTW9ja1Byb3ZpZGVyLmphdmEKQEAgLTAsMCArMSwyMzMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDkgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLnNlcnZlci5sb2NhdGlvbjsKKworaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uQ3JpdGVyaWE7CitpbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5JTG9jYXRpb25NYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uTG9jYXRpb247CitpbXBvcnQgYW5kcm9pZC5sb2NhdGlvbi5Mb2NhdGlvblByb3ZpZGVyOworaW1wb3J0IGFuZHJvaWQubmV0Lk5ldHdvcmtJbmZvOworaW1wb3J0IGFuZHJvaWQub3MuQnVuZGxlOworaW1wb3J0IGFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uOworaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CitpbXBvcnQgYW5kcm9pZC51dGlsLlByaW50V3JpdGVyUHJpbnRlcjsKKworaW1wb3J0IGphdmEuaW8uUHJpbnRXcml0ZXI7CisKKy8qKgorICogQSBtb2NrIGxvY2F0aW9uIHByb3ZpZGVyIHVzZWQgYnkgTG9jYXRpb25NYW5hZ2VyU2VydmljZSB0byBpbXBsZW1lbnQgdGVzdCBwcm92aWRlcnMuCisgKgorICoge0BoaWRlfQorICovCitwdWJsaWMgY2xhc3MgTW9ja1Byb3ZpZGVyIGltcGxlbWVudHMgTG9jYXRpb25Qcm92aWRlckludGVyZmFjZSB7CisgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgbU5hbWU7CisgICAgcHJpdmF0ZSBmaW5hbCBJTG9jYXRpb25NYW5hZ2VyIG1Mb2NhdGlvbk1hbmFnZXI7CisgICAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIG1SZXF1aXJlc05ldHdvcms7CisgICAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIG1SZXF1aXJlc1NhdGVsbGl0ZTsKKyAgICBwcml2YXRlIGZpbmFsIGJvb2xlYW4gbVJlcXVpcmVzQ2VsbDsKKyAgICBwcml2YXRlIGZpbmFsIGJvb2xlYW4gbUhhc01vbmV0YXJ5Q29zdDsKKyAgICBwcml2YXRlIGZpbmFsIGJvb2xlYW4gbVN1cHBvcnRzQWx0aXR1ZGU7CisgICAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIG1TdXBwb3J0c1NwZWVkOworICAgIHByaXZhdGUgZmluYWwgYm9vbGVhbiBtU3VwcG9ydHNCZWFyaW5nOworICAgIHByaXZhdGUgZmluYWwgaW50IG1Qb3dlclJlcXVpcmVtZW50OworICAgIHByaXZhdGUgZmluYWwgaW50IG1BY2N1cmFjeTsKKyAgICBwcml2YXRlIGZpbmFsIExvY2F0aW9uIG1Mb2NhdGlvbjsKKyAgICBwcml2YXRlIGludCBtU3RhdHVzOworICAgIHByaXZhdGUgbG9uZyBtU3RhdHVzVXBkYXRlVGltZTsKKyAgICBwcml2YXRlIGZpbmFsIEJ1bmRsZSBtRXh0cmFzID0gbmV3IEJ1bmRsZSgpOworICAgIHByaXZhdGUgYm9vbGVhbiBtSGFzTG9jYXRpb247CisgICAgcHJpdmF0ZSBib29sZWFuIG1IYXNTdGF0dXM7CisgICAgcHJpdmF0ZSBib29sZWFuIG1FbmFibGVkOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9ICJNb2NrUHJvdmlkZXIiOworCisgICAgcHVibGljIE1vY2tQcm92aWRlcihTdHJpbmcgbmFtZSwgIElMb2NhdGlvbk1hbmFnZXIgbG9jYXRpb25NYW5hZ2VyLAorICAgICAgICBib29sZWFuIHJlcXVpcmVzTmV0d29yaywgYm9vbGVhbiByZXF1aXJlc1NhdGVsbGl0ZSwKKyAgICAgICAgYm9vbGVhbiByZXF1aXJlc0NlbGwsIGJvb2xlYW4gaGFzTW9uZXRhcnlDb3N0LCBib29sZWFuIHN1cHBvcnRzQWx0aXR1ZGUsCisgICAgICAgIGJvb2xlYW4gc3VwcG9ydHNTcGVlZCwgYm9vbGVhbiBzdXBwb3J0c0JlYXJpbmcsIGludCBwb3dlclJlcXVpcmVtZW50LCBpbnQgYWNjdXJhY3kpIHsKKyAgICAgICAgbU5hbWUgPSBuYW1lOworICAgICAgICBtTG9jYXRpb25NYW5hZ2VyID0gbG9jYXRpb25NYW5hZ2VyOworICAgICAgICBtUmVxdWlyZXNOZXR3b3JrID0gcmVxdWlyZXNOZXR3b3JrOworICAgICAgICBtUmVxdWlyZXNTYXRlbGxpdGUgPSByZXF1aXJlc1NhdGVsbGl0ZTsKKyAgICAgICAgbVJlcXVpcmVzQ2VsbCA9IHJlcXVpcmVzQ2VsbDsKKyAgICAgICAgbUhhc01vbmV0YXJ5Q29zdCA9IGhhc01vbmV0YXJ5Q29zdDsKKyAgICAgICAgbVN1cHBvcnRzQWx0aXR1ZGUgPSBzdXBwb3J0c0FsdGl0dWRlOworICAgICAgICBtU3VwcG9ydHNCZWFyaW5nID0gc3VwcG9ydHNCZWFyaW5nOworICAgICAgICBtU3VwcG9ydHNTcGVlZCA9IHN1cHBvcnRzU3BlZWQ7CisgICAgICAgIG1Qb3dlclJlcXVpcmVtZW50ID0gcG93ZXJSZXF1aXJlbWVudDsKKyAgICAgICAgbUFjY3VyYWN5ID0gYWNjdXJhY3k7CisgICAgICAgIG1Mb2NhdGlvbiA9IG5ldyBMb2NhdGlvbihuYW1lKTsKKyAgICB9CisKKyAgICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKSB7CisgICAgICAgIHJldHVybiBtTmFtZTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBkaXNhYmxlKCkgeworICAgICAgICBtRW5hYmxlZCA9IGZhbHNlOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGVuYWJsZSgpIHsKKyAgICAgICAgbUVuYWJsZWQgPSB0cnVlOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGlzRW5hYmxlZCgpIHsKKyAgICAgICAgcmV0dXJuIG1FbmFibGVkOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgZ2V0U3RhdHVzKEJ1bmRsZSBleHRyYXMpIHsKKyAgICAgICAgaWYgKG1IYXNTdGF0dXMpIHsKKyAgICAgICAgICAgIGV4dHJhcy5jbGVhcigpOworICAgICAgICAgICAgZXh0cmFzLnB1dEFsbChtRXh0cmFzKTsKKyAgICAgICAgICAgIHJldHVybiBtU3RhdHVzOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmV0dXJuIExvY2F0aW9uUHJvdmlkZXIuQVZBSUxBQkxFOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIGxvbmcgZ2V0U3RhdHVzVXBkYXRlVGltZSgpIHsKKyAgICAgICAgcmV0dXJuIG1TdGF0dXNVcGRhdGVUaW1lOworICAgIH0KKworICAgIHB1YmxpYyBpbnQgZ2V0QWNjdXJhY3koKSB7CisgICAgICAgIHJldHVybiBtQWNjdXJhY3k7CisgICAgfQorCisgICAgcHVibGljIGludCBnZXRQb3dlclJlcXVpcmVtZW50KCkgeworICAgICAgICByZXR1cm4gbVBvd2VyUmVxdWlyZW1lbnQ7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gaGFzTW9uZXRhcnlDb3N0KCkgeworICAgICAgICByZXR1cm4gbUhhc01vbmV0YXJ5Q29zdDsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiByZXF1aXJlc0NlbGwoKSB7CisgICAgICAgIHJldHVybiBtUmVxdWlyZXNDZWxsOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIHJlcXVpcmVzTmV0d29yaygpIHsKKyAgICAgICAgcmV0dXJuIG1SZXF1aXJlc05ldHdvcms7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gcmVxdWlyZXNTYXRlbGxpdGUoKSB7CisgICAgICAgIHJldHVybiBtUmVxdWlyZXNTYXRlbGxpdGU7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gc3VwcG9ydHNBbHRpdHVkZSgpIHsKKyAgICAgICAgcmV0dXJuIG1TdXBwb3J0c0FsdGl0dWRlOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIHN1cHBvcnRzQmVhcmluZygpIHsKKyAgICAgICAgcmV0dXJuIG1TdXBwb3J0c0JlYXJpbmc7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gc3VwcG9ydHNTcGVlZCgpIHsKKyAgICAgICAgcmV0dXJuIG1TdXBwb3J0c1NwZWVkOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIG1lZXRzQ3JpdGVyaWEoQ3JpdGVyaWEgY3JpdGVyaWEpIHsKKyAgICAgICAgaWYgKChjcml0ZXJpYS5nZXRBY2N1cmFjeSgpICE9IENyaXRlcmlhLk5PX1JFUVVJUkVNRU5UKSAmJgorICAgICAgICAgICAgKGNyaXRlcmlhLmdldEFjY3VyYWN5KCkgPCBtQWNjdXJhY3kpKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgaW50IGNyaXRlcmlhUG93ZXIgPSBjcml0ZXJpYS5nZXRQb3dlclJlcXVpcmVtZW50KCk7CisgICAgICAgIGlmICgoY3JpdGVyaWFQb3dlciAhPSBDcml0ZXJpYS5OT19SRVFVSVJFTUVOVCkgJiYKKyAgICAgICAgICAgIChjcml0ZXJpYVBvd2VyIDwgbVBvd2VyUmVxdWlyZW1lbnQpKSB7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNyaXRlcmlhLmlzQWx0aXR1ZGVSZXF1aXJlZCgpICYmICFtU3VwcG9ydHNBbHRpdHVkZSkgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIGlmIChjcml0ZXJpYS5pc1NwZWVkUmVxdWlyZWQoKSAmJiAhbVN1cHBvcnRzU3BlZWQpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoY3JpdGVyaWEuaXNCZWFyaW5nUmVxdWlyZWQoKSAmJiAhbVN1cHBvcnRzQmVhcmluZykgeworICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldExvY2F0aW9uKExvY2F0aW9uIGwpIHsKKyAgICAgICAgbUxvY2F0aW9uLnNldChsKTsKKyAgICAgICAgbUhhc0xvY2F0aW9uID0gdHJ1ZTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG1Mb2NhdGlvbk1hbmFnZXIucmVwb3J0TG9jYXRpb24obUxvY2F0aW9uLCBmYWxzZSk7CisgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7CisgICAgICAgICAgICBMb2cuZShUQUcsICJSZW1vdGVFeGNlcHRpb24gY2FsbGluZyByZXBvcnRMb2NhdGlvbiIpOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgY2xlYXJMb2NhdGlvbigpIHsKKyAgICAgICAgbUhhc0xvY2F0aW9uID0gZmFsc2U7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0U3RhdHVzKGludCBzdGF0dXMsIEJ1bmRsZSBleHRyYXMsIGxvbmcgdXBkYXRlVGltZSkgeworICAgICAgICBtU3RhdHVzID0gc3RhdHVzOworICAgICAgICBtU3RhdHVzVXBkYXRlVGltZSA9IHVwZGF0ZVRpbWU7CisgICAgICAgIG1FeHRyYXMuY2xlYXIoKTsKKyAgICAgICAgaWYgKGV4dHJhcyAhPSBudWxsKSB7CisgICAgICAgICAgICBtRXh0cmFzLnB1dEFsbChleHRyYXMpOworICAgICAgICB9CisgICAgICAgIG1IYXNTdGF0dXMgPSB0cnVlOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGNsZWFyU3RhdHVzKCkgeworICAgICAgICBtSGFzU3RhdHVzID0gZmFsc2U7CisgICAgICAgIG1TdGF0dXNVcGRhdGVUaW1lID0gMDsKKyAgICB9CisKKyAgICBwdWJsaWMgU3RyaW5nIGdldEludGVybmFsU3RhdGUoKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGVuYWJsZUxvY2F0aW9uVHJhY2tpbmcoYm9vbGVhbiBlbmFibGUpIHsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiByZXF1ZXN0U2luZ2xlU2hvdEZpeCgpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldE1pblRpbWUobG9uZyBtaW5UaW1lKSB7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdXBkYXRlTmV0d29ya1N0YXRlKGludCBzdGF0ZSwgTmV0d29ya0luZm8gaW5mbykgeworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHVwZGF0ZUxvY2F0aW9uKExvY2F0aW9uIGxvY2F0aW9uKSB7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gc2VuZEV4dHJhQ29tbWFuZChTdHJpbmcgY29tbWFuZCwgQnVuZGxlIGV4dHJhcykgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgYWRkTGlzdGVuZXIoaW50IHVpZCkgeworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHJlbW92ZUxpc3RlbmVyKGludCB1aWQpIHsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBkdW1wKFByaW50V3JpdGVyIHB3LCBTdHJpbmcgcHJlZml4KSB7CisgICAgICAgIHB3LnByaW50bG4ocHJlZml4ICsgbU5hbWUpOworICAgICAgICBwdy5wcmludGxuKHByZWZpeCArICJtSGFzTG9jYXRpb249IiArIG1IYXNMb2NhdGlvbik7CisgICAgICAgIHB3LnByaW50bG4ocHJlZml4ICsgIm1Mb2NhdGlvbjoiKTsKKyAgICAgICAgbUxvY2F0aW9uLmR1bXAobmV3IFByaW50V3JpdGVyUHJpbnRlcihwdyksIHByZWZpeCArICIgICIpOworICAgICAgICBwdy5wcmludGxuKHByZWZpeCArICJtSGFzU3RhdHVzPSIgKyBtSGFzU3RhdHVzKTsKKyAgICAgICAgcHcucHJpbnRsbihwcmVmaXggKyAibVN0YXR1cz0iICsgbVN0YXR1cyk7CisgICAgICAgIHB3LnByaW50bG4ocHJlZml4ICsgIm1TdGF0dXNVcGRhdGVUaW1lPSIgKyBtU3RhdHVzVXBkYXRlVGltZSk7CisgICAgICAgIHB3LnByaW50bG4ocHJlZml4ICsgIm1FeHRyYXM9IiArIG1FeHRyYXMpOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2xvY2F0aW9uL1Bhc3NpdmVQcm92aWRlci5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvbG9jYXRpb24vUGFzc2l2ZVByb3ZpZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2ZjOTNmOAotLS0gL2Rldi9udWxsCisrKyBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL2xvY2F0aW9uL1Bhc3NpdmVQcm92aWRlci5qYXZhCkBAIC0wLDAgKzEsMTUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5zZXJ2ZXIubG9jYXRpb247CisKK2ltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLkNyaXRlcmlhOworaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uSUxvY2F0aW9uTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLmxvY2F0aW9uLkxvY2F0aW9uOworaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uTG9jYXRpb25NYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQubG9jYXRpb24uTG9jYXRpb25Qcm92aWRlcjsKK2ltcG9ydCBhbmRyb2lkLm5ldC5OZXR3b3JrSW5mbzsKK2ltcG9ydCBhbmRyb2lkLm9zLkJ1bmRsZTsKK2ltcG9ydCBhbmRyb2lkLm9zLlJlbW90ZUV4Y2VwdGlvbjsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOworCisvKioKKyAqIEEgcGFzc2l2ZSBsb2NhdGlvbiBwcm92aWRlciByZXBvcnRzIGxvY2F0aW9ucyByZWNlaXZlZCBmcm9tIG90aGVyIHByb3ZpZGVycworICogZm9yIGNsaWVudHMgdGhhdCB3YW50IHRvIGxpc3RlbiBwYXNzaXZlbHkgd2l0aG91dCBhY3R1YWxseSB0cmlnZ2VyaW5nCisgKiBsb2NhdGlvbiB1cGRhdGVzLgorICoKKyAqIHtAaGlkZX0KKyAqLworcHVibGljIGNsYXNzIFBhc3NpdmVQcm92aWRlciBpbXBsZW1lbnRzIExvY2F0aW9uUHJvdmlkZXJJbnRlcmZhY2UgeworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9ICJQYXNzaXZlUHJvdmlkZXIiOworCisgICAgcHJpdmF0ZSBmaW5hbCBJTG9jYXRpb25NYW5hZ2VyIG1Mb2NhdGlvbk1hbmFnZXI7CisgICAgcHJpdmF0ZSBib29sZWFuIG1UcmFja2luZzsKKworICAgIHB1YmxpYyBQYXNzaXZlUHJvdmlkZXIoSUxvY2F0aW9uTWFuYWdlciBsb2NhdGlvbk1hbmFnZXIpIHsKKyAgICAgICAgbUxvY2F0aW9uTWFuYWdlciA9IGxvY2F0aW9uTWFuYWdlcjsKKyAgICB9CisKKyAgICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKSB7CisgICAgICAgIHJldHVybiBMb2NhdGlvbk1hbmFnZXIuUEFTU0lWRV9QUk9WSURFUjsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiByZXF1aXJlc05ldHdvcmsoKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiByZXF1aXJlc1NhdGVsbGl0ZSgpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIHJlcXVpcmVzQ2VsbCgpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGhhc01vbmV0YXJ5Q29zdCgpIHsKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIHN1cHBvcnRzQWx0aXR1ZGUoKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBzdXBwb3J0c1NwZWVkKCkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gc3VwcG9ydHNCZWFyaW5nKCkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcHVibGljIGludCBnZXRQb3dlclJlcXVpcmVtZW50KCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gbWVldHNDcml0ZXJpYShDcml0ZXJpYSBjcml0ZXJpYSkgeworICAgICAgICAvLyBXZSBkbyBub3Qgd2FudCB0byBtYXRjaCB0aGUgc3BlY2lhbCBwYXNzaXZlIHByb3ZpZGVyIGJhc2VkIG9uIGNyaXRlcmlhLgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcHVibGljIGludCBnZXRBY2N1cmFjeSgpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGlzRW5hYmxlZCgpIHsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgZW5hYmxlKCkgeworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGRpc2FibGUoKSB7CisgICAgfQorCisgICAgcHVibGljIGludCBnZXRTdGF0dXMoQnVuZGxlIGV4dHJhcykgeworICAgICAgICBpZiAobVRyYWNraW5nKSB7CisgICAgICAgICAgICByZXR1cm4gTG9jYXRpb25Qcm92aWRlci5BVkFJTEFCTEU7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gTG9jYXRpb25Qcm92aWRlci5URU1QT1JBUklMWV9VTkFWQUlMQUJMRTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyBsb25nIGdldFN0YXR1c1VwZGF0ZVRpbWUoKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBwdWJsaWMgU3RyaW5nIGdldEludGVybmFsU3RhdGUoKSB7CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGVuYWJsZUxvY2F0aW9uVHJhY2tpbmcoYm9vbGVhbiBlbmFibGUpIHsKKyAgICAgICAgbVRyYWNraW5nID0gZW5hYmxlOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIHJlcXVlc3RTaW5nbGVTaG90Rml4KCkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0TWluVGltZShsb25nIG1pblRpbWUpIHsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCB1cGRhdGVOZXR3b3JrU3RhdGUoaW50IHN0YXRlLCBOZXR3b3JrSW5mbyBpbmZvKSB7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgdXBkYXRlTG9jYXRpb24oTG9jYXRpb24gbG9jYXRpb24pIHsKKyAgICAgICAgaWYgKG1UcmFja2luZykgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAvLyBwYXNzIHRoZSBsb2NhdGlvbiBiYWNrIHRvIHRoZSBsb2NhdGlvbiBtYW5hZ2VyCisgICAgICAgICAgICAgICAgbUxvY2F0aW9uTWFuYWdlci5yZXBvcnRMb2NhdGlvbihsb2NhdGlvbiwgdHJ1ZSk7CisgICAgICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgeworICAgICAgICAgICAgICAgIExvZy5lKFRBRywgIlJlbW90ZUV4Y2VwdGlvbiBjYWxsaW5nIHJlcG9ydExvY2F0aW9uIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBzZW5kRXh0cmFDb21tYW5kKFN0cmluZyBjb21tYW5kLCBCdW5kbGUgZXh0cmFzKSB7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBhZGRMaXN0ZW5lcihpbnQgdWlkKSB7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgcmVtb3ZlTGlzdGVuZXIoaW50IHVpZCkgeworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3N0YXR1cy9BbmltYXRlZEltYWdlVmlldy5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL0FuaW1hdGVkSW1hZ2VWaWV3LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3ZGYwNjUuLjAwMDAwMDAKLS0tIGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL0FuaW1hdGVkSW1hZ2VWaWV3LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotcGFja2FnZSBjb20uYW5kcm9pZC5zZXJ2ZXIuc3RhdHVzOwotCi1pbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7Ci1pbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5BbmltYXRpb25EcmF3YWJsZTsKLWltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlOwotaW1wb3J0IGFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQ7Ci1pbXBvcnQgYW5kcm9pZC53aWRnZXQuSW1hZ2VWaWV3OwotaW1wb3J0IGFuZHJvaWQud2lkZ2V0LlJlbW90ZVZpZXdzLlJlbW90ZVZpZXc7Ci0KLUBSZW1vdGVWaWV3Ci1wdWJsaWMgY2xhc3MgQW5pbWF0ZWRJbWFnZVZpZXcgZXh0ZW5kcyBJbWFnZVZpZXcgewotICAgIEFuaW1hdGlvbkRyYXdhYmxlIG1BbmltOwotICAgIGJvb2xlYW4gbUF0dGFjaGVkOwotCi0gICAgcHVibGljIEFuaW1hdGVkSW1hZ2VWaWV3KENvbnRleHQgY29udGV4dCkgewotICAgICAgICBzdXBlcihjb250ZXh0KTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgQW5pbWF0ZWRJbWFnZVZpZXcoQ29udGV4dCBjb250ZXh0LCBBdHRyaWJ1dGVTZXQgYXR0cnMpIHsKLSAgICAgICAgc3VwZXIoY29udGV4dCwgYXR0cnMpOwotICAgIH0KLQotICAgIHByaXZhdGUgdm9pZCB1cGRhdGVBbmltKCkgewotICAgICAgICBEcmF3YWJsZSBkcmF3YWJsZSA9IGdldERyYXdhYmxlKCk7Ci0gICAgICAgIGlmIChtQXR0YWNoZWQgJiYgbUFuaW0gIT0gbnVsbCkgewotICAgICAgICAgICAgbUFuaW0uc3RvcCgpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChkcmF3YWJsZSBpbnN0YW5jZW9mIEFuaW1hdGlvbkRyYXdhYmxlKSB7Ci0gICAgICAgICAgICBtQW5pbSA9IChBbmltYXRpb25EcmF3YWJsZSlkcmF3YWJsZTsKLSAgICAgICAgICAgIGlmIChtQXR0YWNoZWQpIHsKLSAgICAgICAgICAgICAgICBtQW5pbS5zdGFydCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbUFuaW0gPSBudWxsOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIHZvaWQgc2V0SW1hZ2VEcmF3YWJsZShEcmF3YWJsZSBkcmF3YWJsZSkgewotICAgICAgICBzdXBlci5zZXRJbWFnZURyYXdhYmxlKGRyYXdhYmxlKTsKLSAgICAgICAgdXBkYXRlQW5pbSgpOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIEBhbmRyb2lkLnZpZXcuUmVtb3RhYmxlVmlld01ldGhvZAotICAgIHB1YmxpYyB2b2lkIHNldEltYWdlUmVzb3VyY2UoaW50IHJlc2lkKSB7Ci0gICAgICAgIHN1cGVyLnNldEltYWdlUmVzb3VyY2UocmVzaWQpOwotICAgICAgICB1cGRhdGVBbmltKCk7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIHZvaWQgb25BdHRhY2hlZFRvV2luZG93KCkgewotICAgICAgICBzdXBlci5vbkF0dGFjaGVkVG9XaW5kb3coKTsKLSAgICAgICAgaWYgKG1BbmltICE9IG51bGwpIHsKLSAgICAgICAgICAgIG1BbmltLnN0YXJ0KCk7Ci0gICAgICAgIH0KLSAgICAgICAgbUF0dGFjaGVkID0gdHJ1ZTsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgdm9pZCBvbkRldGFjaGVkRnJvbVdpbmRvdygpIHsKLSAgICAgICAgc3VwZXIub25EZXRhY2hlZEZyb21XaW5kb3coKTsKLSAgICAgICAgaWYgKG1BbmltICE9IG51bGwpIHsKLSAgICAgICAgICAgIG1BbmltLnN0b3AoKTsKLSAgICAgICAgfQotICAgICAgICBtQXR0YWNoZWQgPSBmYWxzZTsKLSAgICB9Ci19Ci0KZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3N0YXR1cy9DbG9zZURyYWdIYW5kbGUuamF2YSBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3N0YXR1cy9DbG9zZURyYWdIYW5kbGUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWQxYWM0ZC4uMDAwMDAwMAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvQ2xvc2VEcmFnSGFuZGxlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotcGFja2FnZSBjb20uYW5kcm9pZC5zZXJ2ZXIuc3RhdHVzOwotCi1pbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7Ci1pbXBvcnQgYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldDsKLWltcG9ydCBhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQ7Ci1pbXBvcnQgYW5kcm9pZC53aWRnZXQuTGluZWFyTGF5b3V0OwotCi0KLXB1YmxpYyBjbGFzcyBDbG9zZURyYWdIYW5kbGUgZXh0ZW5kcyBMaW5lYXJMYXlvdXQgewotICAgIFN0YXR1c0JhclNlcnZpY2UgbVNlcnZpY2U7Ci0KLSAgICBwdWJsaWMgQ2xvc2VEcmFnSGFuZGxlKENvbnRleHQgY29udGV4dCwgQXR0cmlidXRlU2V0IGF0dHJzKSB7Ci0gICAgICAgIHN1cGVyKGNvbnRleHQsIGF0dHJzKTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBFbnN1cmUgdGhhdCwgaWYgdGhlcmUgaXMgbm8gdGFyZ2V0IHVuZGVyIHVzIHRvIHJlY2VpdmUgdGhlIHRvdWNoLAotICAgICAqIHRoYXQgd2UgcHJvY2VzcyBpdCBvdXJzZWxmLiAgVGhpcyBtYWtlcyBzdXJlIHRoYXQgb25JbnRlcmNlcHRUb3VjaEV2ZW50KCkKLSAgICAgKiBpcyBhbHdheXMgY2FsbGVkIGZvciB0aGUgZW50aXJlIGdlc3R1cmUuCi0gICAgICovCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIGJvb2xlYW4gb25Ub3VjaEV2ZW50KE1vdGlvbkV2ZW50IGV2ZW50KSB7Ci0gICAgICAgIGlmIChldmVudC5nZXRBY3Rpb24oKSAhPSBNb3Rpb25FdmVudC5BQ1RJT05fRE9XTikgewotICAgICAgICAgICAgbVNlcnZpY2UuaW50ZXJjZXB0VG91Y2hFdmVudChldmVudCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIGJvb2xlYW4gb25JbnRlcmNlcHRUb3VjaEV2ZW50KE1vdGlvbkV2ZW50IGV2ZW50KSB7Ci0gICAgICAgIHJldHVybiBtU2VydmljZS5pbnRlcmNlcHRUb3VjaEV2ZW50KGV2ZW50KQotICAgICAgICAgICAgICAgID8gdHJ1ZSA6IHN1cGVyLm9uSW50ZXJjZXB0VG91Y2hFdmVudChldmVudCk7Ci0gICAgfQotfQotCmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvRGF0ZVZpZXcuamF2YSBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3N0YXR1cy9EYXRlVmlldy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMDRmYjQ1Li4wMDAwMDAwCi0tLSBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3N0YXR1cy9EYXRlVmlldy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsODkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLXBhY2thZ2UgY29tLmFuZHJvaWQuc2VydmVyLnN0YXR1czsKLQotaW1wb3J0IGFuZHJvaWQuY29udGVudC5Ccm9hZGNhc3RSZWNlaXZlcjsKLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50OwotaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnRGaWx0ZXI7Ci1pbXBvcnQgYW5kcm9pZC51dGlsLkF0dHJpYnV0ZVNldDsKLWltcG9ydCBhbmRyb2lkLnV0aWwuU2xvZzsKLWltcG9ydCBhbmRyb2lkLndpZGdldC5UZXh0VmlldzsKLWltcG9ydCBhbmRyb2lkLnZpZXcuTW90aW9uRXZlbnQ7Ci0KLWltcG9ydCBqYXZhLnRleHQuRGF0ZUZvcm1hdDsKLWltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKLQotcHVibGljIGZpbmFsIGNsYXNzIERhdGVWaWV3IGV4dGVuZHMgVGV4dFZpZXcgewotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSAiRGF0ZVZpZXciOwotCi0gICAgcHJpdmF0ZSBib29sZWFuIG1VcGRhdGluZyA9IGZhbHNlOwotCi0gICAgcHJpdmF0ZSBCcm9hZGNhc3RSZWNlaXZlciBtSW50ZW50UmVjZWl2ZXIgPSBuZXcgQnJvYWRjYXN0UmVjZWl2ZXIoKSB7Ci0gICAgICAgIEBPdmVycmlkZQotICAgICAgICBwdWJsaWMgdm9pZCBvblJlY2VpdmUoQ29udGV4dCBjb250ZXh0LCBJbnRlbnQgaW50ZW50KSB7Ci0gICAgICAgICAgICBTdHJpbmcgYWN0aW9uID0gaW50ZW50LmdldEFjdGlvbigpOwotICAgICAgICAgICAgaWYgKGFjdGlvbi5lcXVhbHMoSW50ZW50LkFDVElPTl9USU1FX1RJQ0spCi0gICAgICAgICAgICAgICAgICAgIHx8IGFjdGlvbi5lcXVhbHMoSW50ZW50LkFDVElPTl9USU1FWk9ORV9DSEFOR0VEKSkgewotICAgICAgICAgICAgICAgIHVwZGF0ZUNsb2NrKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgcHVibGljIERhdGVWaWV3KENvbnRleHQgY29udGV4dCwgQXR0cmlidXRlU2V0IGF0dHJzKSB7Ci0gICAgICAgIHN1cGVyKGNvbnRleHQsIGF0dHJzKTsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwcm90ZWN0ZWQgdm9pZCBvbkF0dGFjaGVkVG9XaW5kb3coKSB7Ci0gICAgICAgIHN1cGVyLm9uQXR0YWNoZWRUb1dpbmRvdygpOwotICAgIH0KLSAgICAKLSAgICBAT3ZlcnJpZGUKLSAgICBwcm90ZWN0ZWQgdm9pZCBvbkRldGFjaGVkRnJvbVdpbmRvdygpIHsKLSAgICAgICAgc3VwZXIub25EZXRhY2hlZEZyb21XaW5kb3coKTsKLSAgICAgICAgc2V0VXBkYXRlcyhmYWxzZSk7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHJvdGVjdGVkIGludCBnZXRTdWdnZXN0ZWRNaW5pbXVtV2lkdGgoKSB7Ci0gICAgICAgIC8vIG1ha2VzIHRoZSBsYXJnZSBiYWNrZ3JvdW5kIGJpdG1hcCBub3QgZm9yY2UgdXMgdG8gZnVsbCB3aWR0aAotICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBwcml2YXRlIGZpbmFsIHZvaWQgdXBkYXRlQ2xvY2soKSB7Ci0gICAgICAgIERhdGUgbm93ID0gbmV3IERhdGUoKTsKLSAgICAgICAgc2V0VGV4dChEYXRlRm9ybWF0LmdldERhdGVJbnN0YW5jZShEYXRlRm9ybWF0LkxPTkcpLmZvcm1hdChub3cpKTsKLSAgICB9Ci0KLSAgICB2b2lkIHNldFVwZGF0ZXMoYm9vbGVhbiB1cGRhdGUpIHsKLSAgICAgICAgaWYgKHVwZGF0ZSAhPSBtVXBkYXRpbmcpIHsKLSAgICAgICAgICAgIG1VcGRhdGluZyA9IHVwZGF0ZTsKLSAgICAgICAgICAgIGlmICh1cGRhdGUpIHsKLSAgICAgICAgICAgICAgICAvLyBSZWdpc3RlciBmb3IgSW50ZW50IGJyb2FkY2FzdHMgZm9yIHRoZSBjbG9jayBhbmQgYmF0dGVyeQotICAgICAgICAgICAgICAgIEludGVudEZpbHRlciBmaWx0ZXIgPSBuZXcgSW50ZW50RmlsdGVyKCk7Ci0gICAgICAgICAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihJbnRlbnQuQUNUSU9OX1RJTUVfVElDSyk7Ci0gICAgICAgICAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihJbnRlbnQuQUNUSU9OX1RJTUVaT05FX0NIQU5HRUQpOwotICAgICAgICAgICAgICAgIG1Db250ZXh0LnJlZ2lzdGVyUmVjZWl2ZXIobUludGVudFJlY2VpdmVyLCBmaWx0ZXIsIG51bGwsIG51bGwpOwotICAgICAgICAgICAgICAgIHVwZGF0ZUNsb2NrKCk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG1Db250ZXh0LnVucmVnaXN0ZXJSZWNlaXZlcihtSW50ZW50UmVjZWl2ZXIpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQotCmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvRXhwYW5kZWRWaWV3LmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvRXhwYW5kZWRWaWV3LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiMzdmOTAuLjAwMDAwMDAKLS0tIGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL0V4cGFuZGVkVmlldy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLXBhY2thZ2UgY29tLmFuZHJvaWQuc2VydmVyLnN0YXR1czsKLQotaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OwotaW1wb3J0IGFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQ7Ci1pbXBvcnQgYW5kcm9pZC52aWV3LkRpc3BsYXk7Ci1pbXBvcnQgYW5kcm9pZC52aWV3LktleUV2ZW50OwotaW1wb3J0IGFuZHJvaWQudmlldy5Nb3Rpb25FdmVudDsKLWltcG9ydCBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlcjsKLWltcG9ydCBhbmRyb2lkLndpZGdldC5MaW5lYXJMYXlvdXQ7Ci1pbXBvcnQgYW5kcm9pZC51dGlsLlNsb2c7Ci0KLQotcHVibGljIGNsYXNzIEV4cGFuZGVkVmlldyBleHRlbmRzIExpbmVhckxheW91dCB7Ci0gICAgU3RhdHVzQmFyU2VydmljZSBtU2VydmljZTsKLSAgICBpbnQgbVByZXZIZWlnaHQgPSAtMTsKLQotICAgIHB1YmxpYyBFeHBhbmRlZFZpZXcoQ29udGV4dCBjb250ZXh0LCBBdHRyaWJ1dGVTZXQgYXR0cnMpIHsKLSAgICAgICAgc3VwZXIoY29udGV4dCwgYXR0cnMpOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHByb3RlY3RlZCB2b2lkIG9uRmluaXNoSW5mbGF0ZSgpIHsKLSAgICAgICAgc3VwZXIub25GaW5pc2hJbmZsYXRlKCk7Ci0gICAgfQotCi0gICAgLyoqIFdlIHdhbnQgdG8gc2hyaW5rIGRvd24gdG8gMCwgYW5kIGlnbm9yZSB0aGUgYmFja2dyb3VuZC4gKi8KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgaW50IGdldFN1Z2dlc3RlZE1pbmltdW1IZWlnaHQoKSB7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgICBwcm90ZWN0ZWQgdm9pZCBvbkxheW91dChib29sZWFuIGNoYW5nZWQsIGludCBsZWZ0LCBpbnQgdG9wLCBpbnQgcmlnaHQsIGludCBib3R0b20pIHsKLSAgICAgICAgIHN1cGVyLm9uTGF5b3V0KGNoYW5nZWQsIGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSk7Ci0gICAgICAgICBpbnQgaGVpZ2h0ID0gYm90dG9tIC0gdG9wOwotICAgICAgICAgaWYgKGhlaWdodCAhPSBtUHJldkhlaWdodCkgewotICAgICAgICAgICAgIC8vU2xvZy5kKFN0YXR1c0JhclNlcnZpY2UuVEFHLCAiaGVpZ2h0IGNoYW5nZWQgb2xkPSIgKyBtUHJldkhlaWdodCArICIgbmV3PSIgKyBoZWlnaHQpOwotICAgICAgICAgICAgIG1QcmV2SGVpZ2h0ID0gaGVpZ2h0OwotICAgICAgICAgICAgIG1TZXJ2aWNlLnVwZGF0ZUV4cGFuZGVkVmlld1BvcyhTdGF0dXNCYXJTZXJ2aWNlLkVYUEFOREVEX0xFQVZFX0FMT05FKTsKLSAgICAgICAgIH0KLSAgICAgfQotfQpkaWZmIC0tZ2l0IGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL0ZpeGVkU2l6ZURyYXdhYmxlLmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvRml4ZWRTaXplRHJhd2FibGUuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGJmY2IyYy4uMDAwMDAwMAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvRml4ZWRTaXplRHJhd2FibGUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi1wYWNrYWdlIGNvbS5hbmRyb2lkLnNlcnZlci5zdGF0dXM7Ci0KLWltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlOwotaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuQ2FudmFzOwotaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuQ29sb3JGaWx0ZXI7Ci1pbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5SZWN0OwotaW1wb3J0IGFuZHJvaWQudXRpbC5TbG9nOwotCi1jbGFzcyBGaXhlZFNpemVEcmF3YWJsZSBleHRlbmRzIERyYXdhYmxlIHsKLSAgICBEcmF3YWJsZSBtRHJhd2FibGU7Ci0gICAgaW50IG1MZWZ0OwotICAgIGludCBtVG9wOwotICAgIGludCBtUmlnaHQ7Ci0gICAgaW50IG1Cb3R0b207Ci0KLSAgICBGaXhlZFNpemVEcmF3YWJsZShEcmF3YWJsZSB0aGF0KSB7Ci0gICAgICAgIG1EcmF3YWJsZSA9IHRoYXQ7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0Rml4ZWRCb3VuZHMoaW50IGwsIGludCB0LCBpbnQgciwgaW50IGIpIHsKLSAgICAgICAgbUxlZnQgPSBsOwotICAgICAgICBtVG9wID0gdDsKLSAgICAgICAgbVJpZ2h0ID0gcjsKLSAgICAgICAgbUJvdHRvbSA9IGI7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0Qm91bmRzKFJlY3QgYm91bmRzKSB7Ci0gICAgICAgIG1EcmF3YWJsZS5zZXRCb3VuZHMobUxlZnQsIG1Ub3AsIG1SaWdodCwgbUJvdHRvbSk7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0Qm91bmRzKGludCBsLCBpbnQgdCwgaW50IHIsIGludCBiKSB7Ci0gICAgICAgIG1EcmF3YWJsZS5zZXRCb3VuZHMobUxlZnQsIG1Ub3AsIG1SaWdodCwgbUJvdHRvbSk7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgZHJhdyhDYW52YXMgY2FudmFzKSB7Ci0gICAgICAgIG1EcmF3YWJsZS5kcmF3KGNhbnZhcyk7Ci0gICAgfQotCi0gICAgcHVibGljIGludCBnZXRPcGFjaXR5KCkgewotICAgICAgICByZXR1cm4gbURyYXdhYmxlLmdldE9wYWNpdHkoKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRBbHBoYShpbnQgYWxwaGEpIHsKLSAgICAgICAgbURyYXdhYmxlLnNldEFscGhhKGFscGhhKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXRDb2xvckZpbHRlcihDb2xvckZpbHRlciBjZikgewotICAgICAgICBtRHJhd2FibGUuc2V0Q29sb3JGaWx0ZXIoY2YpOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3N0YXR1cy9JY29uRGF0YS5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL0ljb25EYXRhLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkMjI2ZjkuLjAwMDAwMDAKLS0tIGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL0ljb25EYXRhLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMjIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLXBhY2thZ2UgY29tLmFuZHJvaWQuc2VydmVyLnN0YXR1czsKLQotaW1wb3J0IGFuZHJvaWQudXRpbC5TbG9nOwotCi1wdWJsaWMgY2xhc3MgSWNvbkRhdGEgewotICAgIC8qKgotICAgICAqIEluZGljYXRlcyB0aHMgaXRlbSByZXByZXNlbnRzIGEgcGllY2Ugb2YgdGV4dC4KLSAgICAgKi8KLSAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBURVhUID0gMTsKLSAgICAKLSAgICAvKioKLSAgICAgKiBJbmRpY2F0ZXMgdGhzIGl0ZW0gcmVwcmVzZW50cyBhbiBpY29uLgotICAgICAqLwotICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IElDT04gPSAyOwotCi0gICAgLyoqCi0gICAgICogVGhlIHR5cGUgb2YgdGhpcyBpdGVtLiBPbmUgb2YgVEVYVCwgSUNPTiwgb3IgTEVWRUxfSUNPTi4KLSAgICAgKi8KLSAgICBwdWJsaWMgaW50IHR5cGU7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgc2xvdCB0aGF0IHRoaXMgaWNvbiB3aWxsIGJlIGluIGlmIGl0IGlzIG5vdCBhIG5vdGlmaWNhdGlvbgotICAgICAqLwotICAgIHB1YmxpYyBTdHJpbmcgc2xvdDsKLQotICAgIC8qKgotICAgICAqIFRoZSBwYWNrYWdlIGNvbnRhaW50aW5nIHRoZSBpY29uIHRvIGRyYXcgZm9yIHRoaXMgaXRlbS4gVmFsaWQgaWYgdGhpcyBpcwotICAgICAqIGFuIElDT04gdHlwZS4KLSAgICAgKi8KLSAgICBwdWJsaWMgU3RyaW5nIGljb25QYWNrYWdlOwotICAgIAotICAgIC8qKgotICAgICAqIFRoZSBpY29uIHRvIGRyYXcgZm9yIHRoaXMgaXRlbS4gVmFsaWQgaWYgdGhpcyBpcyBhbiBJQ09OIHR5cGUuCi0gICAgICovCi0gICAgcHVibGljIGludCBpY29uSWQ7Ci0gICAgCi0gICAgLyoqCi0gICAgICogVGhlIGxldmVsIGFzc29jaWF0ZWQgd2l0aCB0aGUgaWNvbi4gVmFsaWQgaWYgdGhpcyBpcyBhIExFVkVMX0lDT04gdHlwZS4KLSAgICAgKi8KLSAgICBwdWJsaWMgaW50IGljb25MZXZlbDsKLSAgICAKLSAgICAvKioKLSAgICAgKiBUaGUgImNvdW50IiBudW1iZXIuCi0gICAgICovCi0gICAgcHVibGljIGludCBudW1iZXI7Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgdGV4dCBhc3NvY2lhdGVkIHdpdGggdGhlIGljb24uIFZhbGlkIGlmIHRoaXMgaXMgYSBURVhUIHR5cGUuCi0gICAgICovCi0gICAgcHVibGljIENoYXJTZXF1ZW5jZSB0ZXh0OwotCi0gICAgcHJpdmF0ZSBJY29uRGF0YSgpIHsKLSAgICB9Ci0KLSAgICBwdWJsaWMgc3RhdGljIEljb25EYXRhIG1ha2VJY29uKFN0cmluZyBzbG90LAotICAgICAgICAgICAgU3RyaW5nIGljb25QYWNrYWdlLCBpbnQgaWNvbklkLCBpbnQgaWNvbkxldmVsLCBpbnQgbnVtYmVyKSB7Ci0gICAgICAgIEljb25EYXRhIGRhdGEgPSBuZXcgSWNvbkRhdGEoKTsKLSAgICAgICAgZGF0YS50eXBlID0gSUNPTjsKLSAgICAgICAgZGF0YS5zbG90ID0gc2xvdDsKLSAgICAgICAgZGF0YS5pY29uUGFja2FnZSA9IGljb25QYWNrYWdlOwotICAgICAgICBkYXRhLmljb25JZCA9IGljb25JZDsKLSAgICAgICAgZGF0YS5pY29uTGV2ZWwgPSBpY29uTGV2ZWw7Ci0gICAgICAgIGRhdGEubnVtYmVyID0gbnVtYmVyOwotICAgICAgICByZXR1cm4gZGF0YTsKLSAgICB9Ci0gICAgCi0gICAgcHVibGljIHN0YXRpYyBJY29uRGF0YSBtYWtlVGV4dChTdHJpbmcgc2xvdCwgQ2hhclNlcXVlbmNlIHRleHQpIHsKLSAgICAgICAgSWNvbkRhdGEgZGF0YSA9IG5ldyBJY29uRGF0YSgpOwotICAgICAgICBkYXRhLnR5cGUgPSBURVhUOwotICAgICAgICBkYXRhLnNsb3QgPSBzbG90OwotICAgICAgICBkYXRhLnRleHQgPSB0ZXh0OwotICAgICAgICByZXR1cm4gZGF0YTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBjb3B5RnJvbShJY29uRGF0YSB0aGF0KSB7Ci0gICAgICAgIHRoaXMudHlwZSA9IHRoYXQudHlwZTsKLSAgICAgICAgdGhpcy5zbG90ID0gdGhhdC5zbG90OwotICAgICAgICB0aGlzLmljb25QYWNrYWdlID0gdGhhdC5pY29uUGFja2FnZTsKLSAgICAgICAgdGhpcy5pY29uSWQgPSB0aGF0Lmljb25JZDsKLSAgICAgICAgdGhpcy5pY29uTGV2ZWwgPSB0aGF0Lmljb25MZXZlbDsKLSAgICAgICAgdGhpcy5udW1iZXIgPSB0aGF0Lm51bWJlcjsKLSAgICAgICAgdGhpcy50ZXh0ID0gdGhhdC50ZXh0OyAvLyBzaG91bGQgd2UgY2xvbmUgdGhpcz8KLSAgICB9Ci0KLSAgICBwdWJsaWMgSWNvbkRhdGEgY2xvbmUoKSB7Ci0gICAgICAgIEljb25EYXRhIHRoYXQgPSBuZXcgSWNvbkRhdGEoKTsKLSAgICAgICAgdGhhdC5jb3B5RnJvbSh0aGlzKTsKLSAgICAgICAgcmV0dXJuIHRoYXQ7Ci0gICAgfQotCi0gICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKLSAgICAgICAgaWYgKHRoaXMudHlwZSA9PSBURVhUKSB7Ci0gICAgICAgICAgICByZXR1cm4gIkljb25EYXRhKHNsb3Q9IiArICh0aGlzLnNsb3QgIT0gbnVsbCA/ICInIiArIHRoaXMuc2xvdCArICInIiA6ICJudWxsIikKLSAgICAgICAgICAgICAgICAgICAgKyAiIHRleHQ9JyIgKyB0aGlzLnRleHQgKyAiJykiOyAKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmICh0aGlzLnR5cGUgPT0gSUNPTikgewotICAgICAgICAgICAgcmV0dXJuICJJY29uRGF0YShzbG90PSIgKyAodGhpcy5zbG90ICE9IG51bGwgPyAiJyIgKyB0aGlzLnNsb3QgKyAiJyIgOiAibnVsbCIpCi0gICAgICAgICAgICAgICAgICAgICsgIiBwYWNrYWdlPSIgKyB0aGlzLmljb25QYWNrYWdlCi0gICAgICAgICAgICAgICAgICAgICsgIiBpY29uSWQ9IiArIEludGVnZXIudG9IZXhTdHJpbmcodGhpcy5pY29uSWQpCi0gICAgICAgICAgICAgICAgICAgICsgIiBpY29uTGV2ZWw9IiArIHRoaXMuaWNvbkxldmVsICsgIikiOyAKLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiAiSWNvbkRhdGEodHlwZT0iICsgdHlwZSArICIpIjsKLSAgICAgICAgfQotICAgIH0KLX0KZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3N0YXR1cy9JY29uTWVyZ2VyLmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvSWNvbk1lcmdlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYTcwMmFlLi4wMDAwMDAwCi0tLSBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3N0YXR1cy9JY29uTWVyZ2VyLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMzMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLXBhY2thZ2UgY29tLmFuZHJvaWQuc2VydmVyLnN0YXR1czsKLQotaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OwotaW1wb3J0IGFuZHJvaWQub3MuSGFuZGxlcjsKLWltcG9ydCBhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0OwotaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OwotaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkxpbmVhckxheW91dDsKLQotCi1wdWJsaWMgY2xhc3MgSWNvbk1lcmdlciBleHRlbmRzIExpbmVhckxheW91dCB7Ci0gICAgU3RhdHVzQmFyU2VydmljZSBzZXJ2aWNlOwotICAgIFN0YXR1c0Jhckljb24gbW9yZUljb247Ci0KLSAgICBwdWJsaWMgSWNvbk1lcmdlcihDb250ZXh0IGNvbnRleHQsIEF0dHJpYnV0ZVNldCBhdHRycykgewotICAgICAgICBzdXBlcihjb250ZXh0LCBhdHRycyk7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHJvdGVjdGVkIHZvaWQgb25MYXlvdXQoYm9vbGVhbiBjaGFuZ2VkLCBpbnQgbCwgaW50IHQsIGludCByLCBpbnQgYikgewotICAgICAgICBzdXBlci5vbkxheW91dChjaGFuZ2VkLCBsLCB0LCByLCBiKTsKLQotICAgICAgICBmaW5hbCBpbnQgbWF4V2lkdGggPSByIC0gbDsKLSAgICAgICAgZmluYWwgaW50IE4gPSBnZXRDaGlsZENvdW50KCk7Ci0gICAgICAgIGludCBpOwotCi0gICAgICAgIC8vIGdldCB0aGUgcmlnaHRtb3N0IG9uZSwgYW5kIHNlZSBpZiB3ZSBldmVuIG5lZWQgdG8gZG8gYW55dGhpbmcKLSAgICAgICAgaW50IGZpdFJpZ2h0ID0gLTE7Ci0gICAgICAgIGZvciAoaT1OLTE7IGk+PTA7IGktLSkgewotICAgICAgICAgICAgZmluYWwgVmlldyBjaGlsZCA9IGdldENoaWxkQXQoaSk7Ci0gICAgICAgICAgICBpZiAoY2hpbGQuZ2V0VmlzaWJpbGl0eSgpICE9IEdPTkUpIHsKLSAgICAgICAgICAgICAgICBmaXRSaWdodCA9IGNoaWxkLmdldFJpZ2h0KCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBmaW5kIHRoZSBmaXJzdCB2aXNpYmxlIG9uZSB0aGF0IGlzbid0IHRoZSBtb3JlIGljb24KLSAgICAgICAgVmlldyBtb3JlVmlldyA9IG51bGw7Ci0gICAgICAgIGludCBmaXRMZWZ0ID0gLTE7Ci0gICAgICAgIGludCBzdGFydEluZGV4ID0gLTE7Ci0gICAgICAgIGZvciAoaT0wOyBpPE47IGkrKykgewotICAgICAgICAgICAgZmluYWwgVmlldyBjaGlsZCA9IGdldENoaWxkQXQoaSk7Ci0gICAgICAgICAgICBpZiAoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X25vdGlmeV9tb3JlID09IGNoaWxkLmdldElkKCkpIHsKLSAgICAgICAgICAgICAgICBtb3JlVmlldyA9IGNoaWxkOwotICAgICAgICAgICAgICAgIHN0YXJ0SW5kZXggPSBpKzE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChjaGlsZC5nZXRWaXNpYmlsaXR5KCkgIT0gR09ORSkgewotICAgICAgICAgICAgICAgIGZpdExlZnQgPSBjaGlsZC5nZXRMZWZ0KCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobW9yZVZpZXcgPT0gbnVsbCB8fCBzdGFydEluZGV4IDwgMCkgewotICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIlN0YXR1cyBCYXIgLyBJY29uTWVyZ2VyIG1vcmVWaWV3ID09IG51bGwiKTsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgLy8gaWYgaXQgZml0cyB3aXRob3V0IHRoZSBtb3JlIGljb24sIHRoZW4gaGlkZSB0aGUgbW9yZSBpY29uIGFuZCB1cGRhdGUgZml0TGVmdAotICAgICAgICAvLyBzbyBldmVyeXRoaW5nIGdldHMgcHVzaGVkIGxlZnQKLSAgICAgICAgaW50IGFkanVzdCA9IDA7Ci0gICAgICAgIGlmIChmaXRSaWdodCAtIGZpdExlZnQgPD0gbWF4V2lkdGgpIHsKLSAgICAgICAgICAgIGFkanVzdCA9IGZpdExlZnQgLSBtb3JlVmlldy5nZXRMZWZ0KCk7Ci0gICAgICAgICAgICBmaXRMZWZ0IC09IGFkanVzdDsKLSAgICAgICAgICAgIGZpdFJpZ2h0IC09IGFkanVzdDsKLSAgICAgICAgICAgIG1vcmVWaWV3LmxheW91dCgwLCBtb3JlVmlldy5nZXRUb3AoKSwgMCwgbW9yZVZpZXcuZ2V0Qm90dG9tKCkpOwotICAgICAgICB9Ci0gICAgICAgIGludCBleHRyYSA9IGZpdFJpZ2h0IC0gcjsKLSAgICAgICAgaW50IHNoaWZ0ID0gLTE7Ci0KLSAgICAgICAgaW50IGJyZWFraW5nUG9pbnQgPSBmaXRMZWZ0ICsgZXh0cmEgKyBhZGp1c3Q7Ci0gICAgICAgIGludCBudW1iZXIgPSAwOwotICAgICAgICBmb3IgKGk9c3RhcnRJbmRleDsgaTxOOyBpKyspIHsKLSAgICAgICAgICAgIGZpbmFsIFZpZXcgY2hpbGQgPSBnZXRDaGlsZEF0KGkpOwotICAgICAgICAgICAgaWYgKGNoaWxkLmdldFZpc2liaWxpdHkoKSAhPSBHT05FKSB7Ci0gICAgICAgICAgICAgICAgaW50IGNoaWxkTGVmdCA9IGNoaWxkLmdldExlZnQoKTsKLSAgICAgICAgICAgICAgICBpbnQgY2hpbGRSaWdodCA9IGNoaWxkLmdldFJpZ2h0KCk7Ci0gICAgICAgICAgICAgICAgaWYgKGNoaWxkTGVmdCA8IGJyZWFraW5nUG9pbnQpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gaGlkZSB0aGlzIG9uZQotICAgICAgICAgICAgICAgICAgICBjaGlsZC5sYXlvdXQoMCwgY2hpbGQuZ2V0VG9wKCksIDAsIGNoaWxkLmdldEJvdHRvbSgpKTsKLSAgICAgICAgICAgICAgICAgICAgaW50IG4gPSB0aGlzLnNlcnZpY2UuZ2V0SWNvbk51bWJlckZvclZpZXcoY2hpbGQpOwotICAgICAgICAgICAgICAgICAgICBpZiAobiA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBudW1iZXIgKz0gMTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChuID4gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgbnVtYmVyICs9IG47Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAvLyBkZWNpZGUgaG93IG11Y2ggdG8gc2hpZnQgYnkKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNoaWZ0IDwgMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgc2hpZnQgPSBjaGlsZExlZnQgLSBmaXRMZWZ0OwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIC8vIHNoaWZ0IHRoaXMgbGVmdCBieSBzaGlmdAotICAgICAgICAgICAgICAgICAgICBjaGlsZC5sYXlvdXQoY2hpbGRMZWZ0LXNoaWZ0LCBjaGlsZC5nZXRUb3AoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkUmlnaHQtc2hpZnQsIGNoaWxkLmdldEJvdHRvbSgpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIC8vIEJVRzogVXBkYXRpbmcgdGhlIHRleHQgZHVyaW5nIHRoZSBsYXlvdXQgaGVyZSBkb2Vzbid0IHNlZW0gdG8gY2F1c2UKLSAgICAgICAgLy8gdGhlIHZpZXcgdG8gYmUgcmVkcmF3biBmdWxseS4gIFRoZSB0ZXh0IHZpZXcgZ2V0cyByZXNpemVkIGNvcnJlY3RseSwgYnV0IHRoZQotICAgICAgICAvLyB0ZXh0IGNvbnRlbnRzIGFyZW4ndCBkcmF3biBwcm9wZXJseS4gIFRvIHdvcmsgYXJvdW5kIHRoaXMsIHdlIHBvc3QgYSBtZXNzYWdlCi0gICAgICAgIC8vIGFuZCBwcm92aWRlIHRoZSB2YWx1ZSBsYXRlci4gIFdlJ3JlIHRoZSBvbmx5IG9uZSBjaGFuZ2luZyB0aGlzIHZhbHVlIHNob3cgaXQKLSAgICAgICAgLy8gc2hvdWxkIGJlIG9yZGVyZWQgY29ycmVjdGx5LgotICAgICAgICBpZiAoZmFsc2UpIHsKLSAgICAgICAgICAgIHRoaXMubW9yZUljb24udXBkYXRlKG51bWJlcik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtQnVnV29ya2Fyb3VuZE51bWJlciA9IG51bWJlcjsKLSAgICAgICAgICAgIG1CdWdXb3JrYXJvdW5kSGFuZGxlci5wb3N0KG1CdWdXb3JrYXJvdW5kUnVubmFibGUpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBpbnQgbUJ1Z1dvcmthcm91bmROdW1iZXI7Ci0gICAgcHJpdmF0ZSBIYW5kbGVyIG1CdWdXb3JrYXJvdW5kSGFuZGxlciA9IG5ldyBIYW5kbGVyKCk7Ci0gICAgcHJpdmF0ZSBSdW5uYWJsZSBtQnVnV29ya2Fyb3VuZFJ1bm5hYmxlID0gbmV3IFJ1bm5hYmxlKCkgewotICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7Ci0gICAgICAgICAgICBJY29uTWVyZ2VyLnRoaXMubW9yZUljb24udXBkYXRlKG1CdWdXb3JrYXJvdW5kTnVtYmVyKTsKLSAgICAgICAgICAgIEljb25NZXJnZXIudGhpcy5tb3JlSWNvbi52aWV3LmludmFsaWRhdGUoKTsKLSAgICAgICAgfQotICAgIH07Ci19CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvTGF0ZXN0SXRlbVZpZXcuamF2YSBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3N0YXR1cy9MYXRlc3RJdGVtVmlldy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZThkMTY0Li4wMDAwMDAwCi0tLSBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3N0YXR1cy9MYXRlc3RJdGVtVmlldy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLXBhY2thZ2UgY29tLmFuZHJvaWQuc2VydmVyLnN0YXR1czsKLQotaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OwotaW1wb3J0IGFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQ7Ci1pbXBvcnQgYW5kcm9pZC51dGlsLlNsb2c7Ci1pbXBvcnQgYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50OwotaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkZyYW1lTGF5b3V0OwotCi1wdWJsaWMgY2xhc3MgTGF0ZXN0SXRlbVZpZXcgZXh0ZW5kcyBGcmFtZUxheW91dCB7Ci0KLSAgICBwdWJsaWMgTGF0ZXN0SXRlbVZpZXcoQ29udGV4dCBjb250ZXh0LCBBdHRyaWJ1dGVTZXQgYXR0cnMpIHsKLSAgICAgICAgc3VwZXIoY29udGV4dCwgYXR0cnMpOwotICAgIH0KLQotICAgIHB1YmxpYyBib29sZWFuIGRpc3BhdGNoVG91Y2hFdmVudChNb3Rpb25FdmVudCBldikgewotICAgICAgICByZXR1cm4gb25Ub3VjaEV2ZW50KGV2KTsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvTm90aWZpY2F0aW9uRGF0YS5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL05vdGlmaWNhdGlvbkRhdGEuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzFmMDFjYS4uMDAwMDAwMAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvTm90aWZpY2F0aW9uRGF0YS5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLXBhY2thZ2UgY29tLmFuZHJvaWQuc2VydmVyLnN0YXR1czsKLQotaW1wb3J0IGFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQ7Ci1pbXBvcnQgYW5kcm9pZC53aWRnZXQuUmVtb3RlVmlld3M7Ci0KLXB1YmxpYyBjbGFzcyBOb3RpZmljYXRpb25EYXRhIHsKLSAgICBwdWJsaWMgU3RyaW5nIHBrZzsKLSAgICBwdWJsaWMgU3RyaW5nIHRhZzsKLSAgICBwdWJsaWMgaW50IGlkOwotICAgIHB1YmxpYyBDaGFyU2VxdWVuY2UgdGlja2VyVGV4dDsKLQotICAgIHB1YmxpYyBsb25nIHdoZW47Ci0gICAgcHVibGljIGJvb2xlYW4gb25nb2luZ0V2ZW50OwotICAgIHB1YmxpYyBib29sZWFuIGNsZWFyYWJsZTsKLQotICAgIHB1YmxpYyBSZW1vdGVWaWV3cyBjb250ZW50VmlldzsKLSAgICBwdWJsaWMgUGVuZGluZ0ludGVudCBjb250ZW50SW50ZW50OwotCi0gICAgcHVibGljIFBlbmRpbmdJbnRlbnQgZGVsZXRlSW50ZW50OwotCi0gICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKLSAgICAgICAgcmV0dXJuICJOb3RpZmljYXRpb25EYXRhKHBhY2thZ2U9IiArIHBrZyArICIgaWQ9IiArIGlkICsgIiB0aWNrZXJUZXh0PSIgKyB0aWNrZXJUZXh0Ci0gICAgICAgICAgICAgICAgKyAiIG9uZ29pbmdFdmVudD0iICsgb25nb2luZ0V2ZW50ICsgIiBjb250ZW50SW50ZW50PSIgKyBjb250ZW50SW50ZW50Ci0gICAgICAgICAgICAgICAgKyAiIGRlbGV0ZUludGVudD0iICsgZGVsZXRlSW50ZW50Ci0gICAgICAgICAgICAgICAgKyAiIGNsZWFyYWJsZT0iICsgY2xlYXJhYmxlCi0gICAgICAgICAgICAgICAgKyAiIGNvbnRlbnRWaWV3PSIgKyBjb250ZW50VmlldyArICIgd2hlbj0iICsgd2hlbiArICIpIjsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvTm90aWZpY2F0aW9uTGluZWFyTGF5b3V0LmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvTm90aWZpY2F0aW9uTGluZWFyTGF5b3V0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmZGY5NTYuLjAwMDAwMDAKLS0tIGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL05vdGlmaWNhdGlvbkxpbmVhckxheW91dC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLXBhY2thZ2UgY29tLmFuZHJvaWQuc2VydmVyLnN0YXR1czsKLQotaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OwotaW1wb3J0IGFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQ7Ci1pbXBvcnQgYW5kcm9pZC53aWRnZXQuTGluZWFyTGF5b3V0OwotCi0KLXB1YmxpYyBjbGFzcyBOb3RpZmljYXRpb25MaW5lYXJMYXlvdXQgZXh0ZW5kcyBMaW5lYXJMYXlvdXQgewotICAgIHB1YmxpYyBOb3RpZmljYXRpb25MaW5lYXJMYXlvdXQoQ29udGV4dCBjb250ZXh0LCBBdHRyaWJ1dGVTZXQgYXR0cnMpIHsKLSAgICAgICAgc3VwZXIoY29udGV4dCwgYXR0cnMpOwotICAgIH0KLX0KLQpkaWZmIC0tZ2l0IGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL05vdGlmaWNhdGlvblZpZXdMaXN0LmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvTm90aWZpY2F0aW9uVmlld0xpc3QuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWJiNTZhNy4uMDAwMDAwMAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvTm90aWZpY2F0aW9uVmlld0xpc3QuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI3NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotcGFja2FnZSBjb20uYW5kcm9pZC5zZXJ2ZXIuc3RhdHVzOwotCi1pbXBvcnQgYW5kcm9pZC5vcy5JQmluZGVyOwotaW1wb3J0IGFuZHJvaWQudXRpbC5TbG9nOwotaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OwotaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7Ci0KLWNsYXNzIE5vdGlmaWNhdGlvblZpZXdMaXN0IHsKLSAgICBwcml2YXRlIEFycmF5TGlzdDxTdGF0dXNCYXJOb3RpZmljYXRpb24+IG1PbmdvaW5nID0gbmV3IEFycmF5TGlzdCgpOwotICAgIHByaXZhdGUgQXJyYXlMaXN0PFN0YXR1c0Jhck5vdGlmaWNhdGlvbj4gbUxhdGVzdCA9IG5ldyBBcnJheUxpc3QoKTsKLQotICAgIE5vdGlmaWNhdGlvblZpZXdMaXN0KCkgewotICAgIH0KLQotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBpbmRleEluTGlzdChBcnJheUxpc3Q8U3RhdHVzQmFyTm90aWZpY2F0aW9uPiBsaXN0LCBOb3RpZmljYXRpb25EYXRhIG4pewotICAgICAgICBmaW5hbCBpbnQgTiA9IGxpc3Quc2l6ZSgpOwotICAgICAgICBmb3IgKGludCBpPTA7IGk8TjsgaSsrKSB7Ci0gICAgICAgICAgICBTdGF0dXNCYXJOb3RpZmljYXRpb24gdGhhdCA9IGxpc3QuZ2V0KGkpOwotICAgICAgICAgICAgaWYgKHRoYXQuZGF0YSA9PSBuKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQotICAgIGludCBnZXRJY29uSW5kZXgoTm90aWZpY2F0aW9uRGF0YSBuKSB7Ci0gICAgICAgIGZpbmFsIGludCBvbmdvaW5nU2l6ZSA9IG1PbmdvaW5nLnNpemUoKTsKLSAgICAgICAgZmluYWwgaW50IGxhdGVzdFNpemUgPSBtTGF0ZXN0LnNpemUoKTsKLSAgICAgICAgaWYgKG4ub25nb2luZ0V2ZW50KSB7Ci0gICAgICAgICAgICBpbnQgaW5kZXggPSBpbmRleEluTGlzdChtT25nb2luZywgbik7Ci0gICAgICAgICAgICBpZiAoaW5kZXggPj0gMCkgewotICAgICAgICAgICAgICAgIHJldHVybiBsYXRlc3RTaXplICsgaW5kZXggKyAxOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4gaW5kZXhJbkxpc3QobUxhdGVzdCwgbikgKyAxOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCByZW1vdmUoU3RhdHVzQmFyTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikgewotICAgICAgICBOb3RpZmljYXRpb25EYXRhIG4gPSBub3RpZmljYXRpb24uZGF0YTsKLSAgICAgICAgaW50IGluZGV4OwotICAgICAgICBpbmRleCA9IGluZGV4SW5MaXN0KG1PbmdvaW5nLCBuKTsKLSAgICAgICAgaWYgKGluZGV4ID49IDApIHsKLSAgICAgICAgICAgIG1PbmdvaW5nLnJlbW92ZShpbmRleCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgaW5kZXggPSBpbmRleEluTGlzdChtTGF0ZXN0LCBuKTsKLSAgICAgICAgaWYgKGluZGV4ID49IDApIHsKLSAgICAgICAgICAgIG1MYXRlc3QucmVtb3ZlKGluZGV4KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEFycmF5TGlzdDxTdGF0dXNCYXJOb3RpZmljYXRpb24+IG5vdGlmaWNhdGlvbnNGb3JQYWNrYWdlKFN0cmluZyBwYWNrYWdlTmFtZSkgewotICAgICAgICBBcnJheUxpc3Q8U3RhdHVzQmFyTm90aWZpY2F0aW9uPiBsaXN0ID0gbmV3IEFycmF5TGlzdDxTdGF0dXNCYXJOb3RpZmljYXRpb24+KCk7Ci0gICAgICAgIGludCBOID0gbU9uZ29pbmcuc2l6ZSgpOwotICAgICAgICBmb3IgKGludCBpPTA7IGk8TjsgaSsrKSB7Ci0gICAgICAgICAgICBpZiAobWF0Y2hQYWNrYWdlKG1PbmdvaW5nLmdldChpKSwgcGFja2FnZU5hbWUpKSB7Ci0gICAgICAgICAgICAgICAgbGlzdC5hZGQobU9uZ29pbmcuZ2V0KGkpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBOID0gbUxhdGVzdC5zaXplKCk7Ci0gICAgICAgIGZvciAoaW50IGk9MDsgaTxOOyBpKyspIHsKLSAgICAgICAgICAgIGlmIChtYXRjaFBhY2thZ2UobUxhdGVzdC5nZXQoaSksIHBhY2thZ2VOYW1lKSkgewotICAgICAgICAgICAgICAgIGxpc3QuYWRkKG1MYXRlc3QuZ2V0KGkpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbGlzdDsKLSAgICB9Ci0gICAgCi0gICAgcHJpdmF0ZSBmaW5hbCBib29sZWFuIG1hdGNoUGFja2FnZShTdGF0dXNCYXJOb3RpZmljYXRpb24gc25iLCBTdHJpbmcgcGFja2FnZU5hbWUpIHsKLSAgICAgICAgaWYgKHNuYi5kYXRhLmNvbnRlbnRJbnRlbnQgIT0gbnVsbCkgewotICAgICAgICAgICAgaWYgKHNuYi5kYXRhLmNvbnRlbnRJbnRlbnQuZ2V0VGFyZ2V0UGFja2FnZSgpLmVxdWFscyhwYWNrYWdlTmFtZSkpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIGlmIChzbmIuZGF0YS5wa2cgIT0gbnVsbCAmJiBzbmIuZGF0YS5wa2cuZXF1YWxzKHBhY2thZ2VOYW1lKSkgewotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLSAgICAKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgaW5kZXhGb3JLZXkoQXJyYXlMaXN0PFN0YXR1c0Jhck5vdGlmaWNhdGlvbj4gbGlzdCwgSUJpbmRlciBrZXkpIHsKLSAgICAgICAgZmluYWwgaW50IE4gPSBsaXN0LnNpemUoKTsKLSAgICAgICAgZm9yIChpbnQgaT0wOyBpPE47IGkrKykgewotICAgICAgICAgICAgaWYgKGxpc3QuZ2V0KGkpLmtleSA9PSBrZXkpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gaTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotCi0gICAgU3RhdHVzQmFyTm90aWZpY2F0aW9uIGdldChJQmluZGVyIGtleSkgewotICAgICAgICBpbnQgaW5kZXg7Ci0gICAgICAgIGluZGV4ID0gaW5kZXhGb3JLZXkobU9uZ29pbmcsIGtleSk7Ci0gICAgICAgIGlmIChpbmRleCA+PSAwKSB7Ci0gICAgICAgICAgICByZXR1cm4gbU9uZ29pbmcuZ2V0KGluZGV4KTsKLSAgICAgICAgfQotICAgICAgICBpbmRleCA9IGluZGV4Rm9yS2V5KG1MYXRlc3QsIGtleSk7Ci0gICAgICAgIGlmIChpbmRleCA+PSAwKSB7Ci0gICAgICAgICAgICByZXR1cm4gbUxhdGVzdC5nZXQoaW5kZXgpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBudWxsOwotICAgIH0KLQotICAgIC8vIGdldHMgdGhlIGluZGV4IG9mIHRoZSBub3RpZmljYXRpb24ncyB2aWV3IGluIGl0cyBleHBhbmRlZCBwYXJlbnQgdmlldwotICAgIGludCBnZXRFeHBhbmRlZEluZGV4KFN0YXR1c0Jhck5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pIHsKLSAgICAgICAgQXJyYXlMaXN0PFN0YXR1c0Jhck5vdGlmaWNhdGlvbj4gbGlzdCA9IG5vdGlmaWNhdGlvbi5kYXRhLm9uZ29pbmdFdmVudCA/IG1PbmdvaW5nIDogbUxhdGVzdDsKLSAgICAgICAgZmluYWwgSUJpbmRlciBrZXkgPSBub3RpZmljYXRpb24ua2V5OwotICAgICAgICBpbnQgaW5kZXggPSAwOwotICAgICAgICAvLyAodGhlIHZpZXcgb3JkZXIgaXMgYmFja3dhcmRzIGZyb20gdGhpcyBsaXN0IG9yZGVyKQotICAgICAgICBmb3IgKGludCBpPWxpc3Quc2l6ZSgpLTE7IGk+PTA7IGktLSkgewotICAgICAgICAgICAgU3RhdHVzQmFyTm90aWZpY2F0aW9uIGl0ZW0gPSBsaXN0LmdldChpKTsKLSAgICAgICAgICAgIGlmIChpdGVtLmtleSA9PSBrZXkpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gaW5kZXg7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoaXRlbS52aWV3ICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBpbmRleCsrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIFNsb2cuZShTdGF0dXNCYXJTZXJ2aWNlLlRBRywgIkNvdWxkbid0IGZpbmQgbm90aWZpY2F0aW9uIGluIE5vdGlmaWNhdGlvblZpZXdMaXN0LiIpOwotICAgICAgICBTbG9nLmUoU3RhdHVzQmFyU2VydmljZS5UQUcsICJub3RpZmljYXRpb249IiArIG5vdGlmaWNhdGlvbik7Ci0gICAgICAgIGR1bXAobm90aWZpY2F0aW9uKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQotCi0gICAgdm9pZCBjbGVhclZpZXdzKCkgewotICAgICAgICBpbnQgTiA9IG1PbmdvaW5nLnNpemUoKTsKLSAgICAgICAgZm9yIChpbnQgaT0wOyBpPE47IGkrKykgewotICAgICAgICAgICAgbU9uZ29pbmcuZ2V0KGkpLnZpZXcgPSBudWxsOwotICAgICAgICB9Ci0gICAgICAgIE4gPSBtTGF0ZXN0LnNpemUoKTsKLSAgICAgICAgZm9yIChpbnQgaT0wOyBpPE47IGkrKykgewotICAgICAgICAgICAgbUxhdGVzdC5nZXQoaSkudmlldyA9IG51bGw7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgaW50IG9uZ29pbmdDb3VudCgpIHsKLSAgICAgICAgcmV0dXJuIG1PbmdvaW5nLnNpemUoKTsKLSAgICB9Ci0KLSAgICBpbnQgbGF0ZXN0Q291bnQoKSB7Ci0gICAgICAgIHJldHVybiBtTGF0ZXN0LnNpemUoKTsKLSAgICB9Ci0KLSAgICBTdGF0dXNCYXJOb3RpZmljYXRpb24gZ2V0T25nb2luZyhpbnQgaW5kZXgpIHsKLSAgICAgICAgcmV0dXJuIG1PbmdvaW5nLmdldChpbmRleCk7Ci0gICAgfQotCi0gICAgU3RhdHVzQmFyTm90aWZpY2F0aW9uIGdldExhdGVzdChpbnQgaW5kZXgpIHsKLSAgICAgICAgcmV0dXJuIG1MYXRlc3QuZ2V0KGluZGV4KTsKLSAgICB9Ci0KLSAgICBpbnQgc2l6ZSgpIHsKLSAgICAgICAgcmV0dXJuIG1PbmdvaW5nLnNpemUoKSArIG1MYXRlc3Quc2l6ZSgpOwotICAgIH0KLQotICAgIHZvaWQgYWRkKFN0YXR1c0Jhck5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pIHsKLSAgICAgICAgaWYgKFN0YXR1c0JhclNlcnZpY2UuU1BFVykgewotICAgICAgICAgICAgU2xvZy5kKFN0YXR1c0JhclNlcnZpY2UuVEFHLCAiYmVmb3JlIGFkZCBOb3RpZmljYXRpb25WaWV3TGlzdCIKLSAgICAgICAgICAgICAgICAgICAgKyAiIG5vdGlmaWNhdGlvbi5kYXRhLm9uZ29pbmdFdmVudD0iICsgbm90aWZpY2F0aW9uLmRhdGEub25nb2luZ0V2ZW50KTsKLSAgICAgICAgICAgIGR1bXAobm90aWZpY2F0aW9uKTsKLSAgICAgICAgfQotCi0gICAgICAgIEFycmF5TGlzdDxTdGF0dXNCYXJOb3RpZmljYXRpb24+IGxpc3QgPSBub3RpZmljYXRpb24uZGF0YS5vbmdvaW5nRXZlbnQgPyBtT25nb2luZyA6IG1MYXRlc3Q7Ci0gICAgICAgIGxvbmcgd2hlbiA9IG5vdGlmaWNhdGlvbi5kYXRhLndoZW47Ci0gICAgICAgIGZpbmFsIGludCBOID0gbGlzdC5zaXplKCk7Ci0gICAgICAgIGludCBpbmRleCA9IE47Ci0gICAgICAgIGZvciAoaW50IGk9MDsgaTxOOyBpKyspIHsKLSAgICAgICAgICAgIFN0YXR1c0Jhck5vdGlmaWNhdGlvbiB0aGF0ID0gbGlzdC5nZXQoaSk7Ci0gICAgICAgICAgICBpZiAodGhhdC5kYXRhLndoZW4gPiB3aGVuKSB7Ci0gICAgICAgICAgICAgICAgaW5kZXggPSBpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGxpc3QuYWRkKGluZGV4LCBub3RpZmljYXRpb24pOwotCi0gICAgICAgIGlmIChTdGF0dXNCYXJTZXJ2aWNlLlNQRVcpIHsKLSAgICAgICAgICAgIFNsb2cuZChTdGF0dXNCYXJTZXJ2aWNlLlRBRywgImFmdGVyIGFkZCBOb3RpZmljYXRpb25WaWV3TGlzdCBpbmRleD0iICsgaW5kZXgpOwotICAgICAgICAgICAgZHVtcChub3RpZmljYXRpb24pOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgdm9pZCBkdW1wKFN0YXR1c0Jhck5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24pIHsKLSAgICAgICAgaWYgKFN0YXR1c0JhclNlcnZpY2UuU1BFVykgewotICAgICAgICAgICAgYm9vbGVhbiBzaG93VGltZSA9IGZhbHNlOwotICAgICAgICAgICAgU3RyaW5nIHMgPSAiIjsKLSAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxtT25nb2luZy5zaXplKCk7IGkrKykgewotICAgICAgICAgICAgICAgIFN0YXR1c0Jhck5vdGlmaWNhdGlvbiB0aGF0ID0gbU9uZ29pbmcuZ2V0KGkpOwotICAgICAgICAgICAgICAgIGlmICh0aGF0LmtleSA9PSBub3RpZmljYXRpb24ua2V5KSB7Ci0gICAgICAgICAgICAgICAgICAgIHMgKz0gIlsiOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoc2hvd1RpbWUpIHsKLSAgICAgICAgICAgICAgICAgICAgcyArPSB0aGF0LmRhdGEud2hlbjsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBzICs9IHRoYXQuZGF0YS5wa2cgKyAiLyIgKyB0aGF0LmRhdGEuaWQgKyAiLyIgKyB0aGF0LnZpZXc7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICh0aGF0LmtleSA9PSBub3RpZmljYXRpb24ua2V5KSB7Ci0gICAgICAgICAgICAgICAgICAgIHMgKz0gIl0iOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzICs9ICIgIjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFNsb2cuZChTdGF0dXNCYXJTZXJ2aWNlLlRBRywgIk5vdGlmaWNhdGlvblZpZXdMaXN0IG9uZ29pbmc6ICIgKyBzKTsKLQotICAgICAgICAgICAgcyA9ICIiOwotICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPG1MYXRlc3Quc2l6ZSgpOyBpKyspIHsKLSAgICAgICAgICAgICAgICBTdGF0dXNCYXJOb3RpZmljYXRpb24gdGhhdCA9IG1MYXRlc3QuZ2V0KGkpOwotICAgICAgICAgICAgICAgIGlmICh0aGF0LmtleSA9PSBub3RpZmljYXRpb24ua2V5KSB7Ci0gICAgICAgICAgICAgICAgICAgIHMgKz0gIlsiOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoc2hvd1RpbWUpIHsKLSAgICAgICAgICAgICAgICAgICAgcyArPSB0aGF0LmRhdGEud2hlbjsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBzICs9IHRoYXQuZGF0YS5wa2cgKyAiLyIgKyB0aGF0LmRhdGEuaWQgKyAiLyIgKyB0aGF0LnZpZXc7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICh0aGF0LmtleSA9PSBub3RpZmljYXRpb24ua2V5KSB7Ci0gICAgICAgICAgICAgICAgICAgIHMgKz0gIl0iOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzICs9ICIgIjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFNsb2cuZChTdGF0dXNCYXJTZXJ2aWNlLlRBRywgIk5vdGlmaWNhdGlvblZpZXdMaXN0IGxhdGVzdDogICIgKyBzKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIFN0YXR1c0Jhck5vdGlmaWNhdGlvbiBnZXQoVmlldyB2aWV3KSB7Ci0gICAgICAgIGludCBOID0gbU9uZ29pbmcuc2l6ZSgpOwotICAgICAgICBmb3IgKGludCBpPTA7IGk8TjsgaSsrKSB7Ci0gICAgICAgICAgICBTdGF0dXNCYXJOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uID0gbU9uZ29pbmcuZ2V0KGkpOwotICAgICAgICAgICAgVmlldyB2ID0gbm90aWZpY2F0aW9uLnZpZXc7Ci0gICAgICAgICAgICBpZiAodiA9PSB2aWV3KSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5vdGlmaWNhdGlvbjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBOID0gbUxhdGVzdC5zaXplKCk7Ci0gICAgICAgIGZvciAoaW50IGk9MDsgaTxOOyBpKyspIHsKLSAgICAgICAgICAgIFN0YXR1c0Jhck5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24gPSBtTGF0ZXN0LmdldChpKTsKLSAgICAgICAgICAgIFZpZXcgdiA9IG5vdGlmaWNhdGlvbi52aWV3OwotICAgICAgICAgICAgaWYgKHYgPT0gdmlldykgewotICAgICAgICAgICAgICAgIHJldHVybiBub3RpZmljYXRpb247Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgfQotCi0gICAgdm9pZCB1cGRhdGUoU3RhdHVzQmFyTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikgewotICAgICAgICByZW1vdmUobm90aWZpY2F0aW9uKTsKLSAgICAgICAgYWRkKG5vdGlmaWNhdGlvbik7Ci0gICAgfQotCi0gICAgYm9vbGVhbiBoYXNDbGVhcmFibGVJdGVtcygpIHsKLSAgICAgICAgaW50IE4gPSBtTGF0ZXN0LnNpemUoKTsKLSAgICAgICAgZm9yIChpbnQgaT0wOyBpPE47IGkrKykgewotICAgICAgICAgICAgaWYgKG1MYXRlc3QuZ2V0KGkpLmRhdGEuY2xlYXJhYmxlKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLX0KZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3N0YXR1cy9TdGF0dXNCYXJFeGNlcHRpb24uamF2YSBiL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3N0YXR1cy9TdGF0dXNCYXJFeGNlcHRpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmU1OGY1OS4uMDAwMDAwMAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvU3RhdHVzQmFyRXhjZXB0aW9uLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotcGFja2FnZSBjb20uYW5kcm9pZC5zZXJ2ZXIuc3RhdHVzOwotCi1wdWJsaWMgY2xhc3MgU3RhdHVzQmFyRXhjZXB0aW9uIGV4dGVuZHMgUnVudGltZUV4Y2VwdGlvbiB7Ci0gICAgU3RhdHVzQmFyRXhjZXB0aW9uKFN0cmluZyBtc2cpIHsKLSAgICAgICAgc3VwZXIobXNnKTsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvU3RhdHVzQmFySWNvbi5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL1N0YXR1c0Jhckljb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmY4YjhhOC4uMDAwMDAwMAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvU3RhdHVzQmFySWNvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTg2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi1wYWNrYWdlIGNvbS5hbmRyb2lkLnNlcnZlci5zdGF0dXM7Ci0KLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXI7Ci1pbXBvcnQgYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXM7Ci1pbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5UeXBlZmFjZTsKLWltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLmRyYXdhYmxlLkRyYXdhYmxlOwotaW1wb3J0IGFuZHJvaWQudGV4dC5UZXh0VXRpbHM7Ci1pbXBvcnQgYW5kcm9pZC51dGlsLlNsb2c7Ci1pbXBvcnQgYW5kcm9pZC52aWV3LkdyYXZpdHk7Ci1pbXBvcnQgYW5kcm9pZC52aWV3LkxheW91dEluZmxhdGVyOwotaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OwotaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3R3JvdXA7Ci1pbXBvcnQgYW5kcm9pZC53aWRnZXQuSW1hZ2VWaWV3OwotaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkxpbmVhckxheW91dDsKLWltcG9ydCBhbmRyb2lkLndpZGdldC5UZXh0VmlldzsKLQotY2xhc3MgU3RhdHVzQmFySWNvbiB7Ci0gICAgLy8gVE9ETzogZ2V0IHRoaXMgZnJvbSBhIHJlc291cmNlCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IElDT05fR0FQID0gODsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgSUNPTl9XSURUSCA9IDI1OwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBJQ09OX0hFSUdIVCA9IDI1OwotCi0gICAgcHVibGljIFZpZXcgdmlldzsKLQotICAgIEljb25EYXRhIG1EYXRhOwotICAgIAotICAgIHByaXZhdGUgVGV4dFZpZXcgbVRleHRWaWV3OwotICAgIHByaXZhdGUgQW5pbWF0ZWRJbWFnZVZpZXcgbUltYWdlVmlldzsKLSAgICBwcml2YXRlIFRleHRWaWV3IG1OdW1iZXJWaWV3OwotCi0gICAgcHVibGljIFN0YXR1c0Jhckljb24oQ29udGV4dCBjb250ZXh0LCBJY29uRGF0YSBkYXRhLCBWaWV3R3JvdXAgcGFyZW50KSB7Ci0gICAgICAgIG1EYXRhID0gZGF0YS5jbG9uZSgpOwotCi0gICAgICAgIHN3aXRjaCAoZGF0YS50eXBlKSB7Ci0gICAgICAgICAgICBjYXNlIEljb25EYXRhLlRFWFQ6IHsKLSAgICAgICAgICAgICAgICBUZXh0VmlldyB0OwotICAgICAgICAgICAgICAgIHQgPSBuZXcgVGV4dFZpZXcoY29udGV4dCk7Ci0gICAgICAgICAgICAgICAgbVRleHRWaWV3ID0gdDsKLSAgICAgICAgICAgICAgICBMaW5lYXJMYXlvdXQuTGF5b3V0UGFyYW1zIGxheW91dFBhcmFtcyA9IG5ldyBMaW5lYXJMYXlvdXQuTGF5b3V0UGFyYW1zKAotICAgICAgICAgICAgICAgICAgICAgICAgTGluZWFyTGF5b3V0LkxheW91dFBhcmFtcy5XUkFQX0NPTlRFTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICBMaW5lYXJMYXlvdXQuTGF5b3V0UGFyYW1zLk1BVENIX1BBUkVOVCk7Ci0gICAgICAgICAgICAgICAgdC5zZXRUZXh0U2l6ZSgxNik7Ci0gICAgICAgICAgICAgICAgdC5zZXRUZXh0Q29sb3IoMHhmZjAwMDAwMCk7Ci0gICAgICAgICAgICAgICAgdC5zZXRUeXBlZmFjZShUeXBlZmFjZS5ERUZBVUxUX0JPTEQpOwotICAgICAgICAgICAgICAgIHQuc2V0R3Jhdml0eShHcmF2aXR5LkNFTlRFUl9WRVJUSUNBTCB8IEdyYXZpdHkuTEVGVCk7Ci0gICAgICAgICAgICAgICAgdC5zZXRQYWRkaW5nKDYsIDAsIDAsIDApOwotICAgICAgICAgICAgICAgIHQuc2V0TGF5b3V0UGFyYW1zKGxheW91dFBhcmFtcyk7Ci0gICAgICAgICAgICAgICAgdC5zZXRUZXh0KGRhdGEudGV4dCk7Ci0gICAgICAgICAgICAgICAgdGhpcy52aWV3ID0gdDsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgY2FzZSBJY29uRGF0YS5JQ09OOiB7Ci0gICAgICAgICAgICAgICAgLy8gY29udGFpbmVyCi0gICAgICAgICAgICAgICAgTGF5b3V0SW5mbGF0ZXIgaW5mbGF0ZXIgPSAoTGF5b3V0SW5mbGF0ZXIpY29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29udGV4dC5MQVlPVVRfSU5GTEFURVJfU0VSVklDRSk7Ci0gICAgICAgICAgICAgICAgVmlldyB2ID0gaW5mbGF0ZXIuaW5mbGF0ZShjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmxheW91dC5zdGF0dXNfYmFyX2ljb24sIHBhcmVudCwgZmFsc2UpOwotICAgICAgICAgICAgICAgIHRoaXMudmlldyA9IHY7Ci0KLSAgICAgICAgICAgICAgICAvLyBpY29uCi0gICAgICAgICAgICAgICAgQW5pbWF0ZWRJbWFnZVZpZXcgaW0gPSAoQW5pbWF0ZWRJbWFnZVZpZXcpdi5maW5kVmlld0J5SWQoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5pZC5pbWFnZSk7Ci0gICAgICAgICAgICAgICAgaW0uc2V0SW1hZ2VEcmF3YWJsZShnZXRJY29uKGNvbnRleHQsIGRhdGEpKTsKLSAgICAgICAgICAgICAgICBpbS5zZXRJbWFnZUxldmVsKGRhdGEuaWNvbkxldmVsKTsKLSAgICAgICAgICAgICAgICBtSW1hZ2VWaWV3ID0gaW07Ci0KLSAgICAgICAgICAgICAgICAvLyBudW1iZXIKLSAgICAgICAgICAgICAgICBUZXh0VmlldyBudiA9IChUZXh0Vmlldyl2LmZpbmRWaWV3QnlJZChjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmlkLm51bWJlcik7Ci0gICAgICAgICAgICAgICAgbU51bWJlclZpZXcgPSBudjsKLSAgICAgICAgICAgICAgICBpZiAoZGF0YS5udW1iZXIgPiAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIG52LnNldFRleHQoIiIgKyBkYXRhLm51bWJlcik7Ci0gICAgICAgICAgICAgICAgICAgIG52LnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBudi5zZXRWaXNpYmlsaXR5KFZpZXcuR09ORSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgdXBkYXRlKENvbnRleHQgY29udGV4dCwgSWNvbkRhdGEgZGF0YSkgdGhyb3dzIFN0YXR1c0JhckV4Y2VwdGlvbiB7Ci0gICAgICAgIGlmIChtRGF0YS50eXBlICE9IGRhdGEudHlwZSkgewotICAgICAgICAgICAgdGhyb3cgbmV3IFN0YXR1c0JhckV4Y2VwdGlvbigic3RhdHVzIGJhciBlbnRyeSB0eXBlIGNhbid0IGNoYW5nZSIpOwotICAgICAgICB9Ci0gICAgICAgIHN3aXRjaCAoZGF0YS50eXBlKSB7Ci0gICAgICAgIGNhc2UgSWNvbkRhdGEuVEVYVDoKLSAgICAgICAgICAgIGlmICghVGV4dFV0aWxzLmVxdWFscyhtRGF0YS50ZXh0LCBkYXRhLnRleHQpKSB7Ci0gICAgICAgICAgICAgICAgVGV4dFZpZXcgdHYgPSBtVGV4dFZpZXc7Ci0gICAgICAgICAgICAgICAgdHYuc2V0VGV4dChkYXRhLnRleHQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgSWNvbkRhdGEuSUNPTjoKLSAgICAgICAgICAgIGlmICgoKG1EYXRhLmljb25QYWNrYWdlICE9IG51bGwgJiYgZGF0YS5pY29uUGFja2FnZSAhPSBudWxsKQotICAgICAgICAgICAgICAgICAgICAgICAgJiYgIW1EYXRhLmljb25QYWNrYWdlLmVxdWFscyhkYXRhLmljb25QYWNrYWdlKSkKLSAgICAgICAgICAgICAgICAgICAgfHwgbURhdGEuaWNvbklkICE9IGRhdGEuaWNvbklkCi0gICAgICAgICAgICAgICAgICAgIHx8IG1EYXRhLmljb25MZXZlbCAhPSBkYXRhLmljb25MZXZlbCkgewotICAgICAgICAgICAgICAgIEltYWdlVmlldyBpbSA9IG1JbWFnZVZpZXc7Ci0gICAgICAgICAgICAgICAgaW0uc2V0SW1hZ2VEcmF3YWJsZShnZXRJY29uKGNvbnRleHQsIGRhdGEpKTsKLSAgICAgICAgICAgICAgICBpbS5zZXRJbWFnZUxldmVsKGRhdGEuaWNvbkxldmVsKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChtRGF0YS5udW1iZXIgIT0gZGF0YS5udW1iZXIpIHsKLSAgICAgICAgICAgICAgICBUZXh0VmlldyBudiA9IG1OdW1iZXJWaWV3OwotICAgICAgICAgICAgICAgIGlmIChkYXRhLm51bWJlciA+IDApIHsKLSAgICAgICAgICAgICAgICAgICAgbnYuc2V0VGV4dCgiIiArIGRhdGEubnVtYmVyKTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICBudi5zZXRUZXh0KCIiKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBtRGF0YS5jb3B5RnJvbShkYXRhKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCB1cGRhdGUoaW50IG51bWJlcikgewotICAgICAgICBpZiAobURhdGEubnVtYmVyICE9IG51bWJlcikgewotICAgICAgICAgICAgVGV4dFZpZXcgbnYgPSBtTnVtYmVyVmlldzsKLSAgICAgICAgICAgIGlmIChudW1iZXIgPiAwKSB7Ci0gICAgICAgICAgICAgICAgbnYuc2V0VGV4dCgiIiArIG51bWJlcik7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG52LnNldFRleHQoIiIpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIG1EYXRhLm51bWJlciA9IG51bWJlcjsKLSAgICB9Ci0KLQotICAgIC8qKgotICAgICAqIFJldHVybnMgdGhlIHJpZ2h0IGljb24gdG8gdXNlIGZvciB0aGlzIGl0ZW0sIHJlc3BlY3RpbmcgdGhlIGljb25JZCBhbmQKLSAgICAgKiBpY29uUGFja2FnZSAoaWYgc2V0KQotICAgICAqIAotICAgICAqIEBwYXJhbSBjb250ZXh0IENvbnRleHQgdG8gdXNlIHRvIGdldCByZXNvdXJjZXMgaWYgaWNvblBhY2thZ2UgaXMgbm90IHNldAotICAgICAqIEByZXR1cm4gRHJhd2FibGUgZm9yIHRoaXMgaXRlbSwgb3IgbnVsbCBpZiB0aGUgcGFja2FnZSBvciBpdGVtIGNvdWxkIG5vdAotICAgICAqICAgICAgICAgYmUgZm91bmQKLSAgICAgKi8KLSAgICBzdGF0aWMgRHJhd2FibGUgZ2V0SWNvbihDb250ZXh0IGNvbnRleHQsIEljb25EYXRhIGRhdGEpIHsKLQotICAgICAgICBSZXNvdXJjZXMgciA9IG51bGw7Ci0KLSAgICAgICAgaWYgKGRhdGEuaWNvblBhY2thZ2UgIT0gbnVsbCkgewotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICByID0gY29udGV4dC5nZXRQYWNrYWdlTWFuYWdlcigpLmdldFJlc291cmNlc0ZvckFwcGxpY2F0aW9uKGRhdGEuaWNvblBhY2thZ2UpOwotICAgICAgICAgICAgfSBjYXRjaCAoUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uIGV4KSB7Ci0gICAgICAgICAgICAgICAgU2xvZy5lKFN0YXR1c0JhclNlcnZpY2UuVEFHLCAiSWNvbiBwYWNrYWdlIG5vdCBmb3VuZDogIiArIGRhdGEuaWNvblBhY2thZ2UsIGV4KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHIgPSBjb250ZXh0LmdldFJlc291cmNlcygpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGRhdGEuaWNvbklkID09IDApIHsKLSAgICAgICAgICAgIFNsb2cudyhTdGF0dXNCYXJTZXJ2aWNlLlRBRywgIk5vIGljb24gSUQgZm9yIHNsb3QgIiArIGRhdGEuc2xvdCk7Ci0gICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIHJldHVybiByLmdldERyYXdhYmxlKGRhdGEuaWNvbklkKTsKLSAgICAgICAgfSBjYXRjaCAoUnVudGltZUV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICBTbG9nLncoU3RhdHVzQmFyU2VydmljZS5UQUcsICJJY29uIG5vdCBmb3VuZCBpbiAiCi0gICAgICAgICAgICAgICAgICArIChkYXRhLmljb25QYWNrYWdlICE9IG51bGwgPyBkYXRhLmljb25JZCA6ICI8c3lzdGVtPiIpCi0gICAgICAgICAgICAgICAgICArICI6ICIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKGRhdGEuaWNvbklkKSk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9Ci0KLSAgICBpbnQgZ2V0TnVtYmVyKCkgewotICAgICAgICByZXR1cm4gbURhdGEubnVtYmVyOwotICAgIH0KLX0KLQpkaWZmIC0tZ2l0IGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL1N0YXR1c0Jhck5vdGlmaWNhdGlvbi5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL1N0YXR1c0Jhck5vdGlmaWNhdGlvbi5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTc3M2Y3Li4wMDAwMDAwCi0tLSBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3N0YXR1cy9TdGF0dXNCYXJOb3RpZmljYXRpb24uamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi1wYWNrYWdlIGNvbS5hbmRyb2lkLnNlcnZlci5zdGF0dXM7Ci0KLWltcG9ydCBhbmRyb2lkLm9zLklCaW5kZXI7Ci1pbXBvcnQgYW5kcm9pZC52aWV3LlZpZXc7Ci0KLWNsYXNzIFN0YXR1c0Jhck5vdGlmaWNhdGlvbiB7Ci0gICAgSUJpbmRlciBrZXk7Ci0gICAgTm90aWZpY2F0aW9uRGF0YSBkYXRhOwotICAgIFZpZXcgdmlldzsKLSAgICBWaWV3IGNvbnRlbnRWaWV3OwotfQpkaWZmIC0tZ2l0IGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL1N0YXR1c0JhclBvbGljeS5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL1N0YXR1c0JhclBvbGljeS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NGQxY2I0Li4wMDAwMDAwCi0tLSBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3N0YXR1cy9TdGF0dXNCYXJQb2xpY3kuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDEzODggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLXBhY2thZ2UgY29tLmFuZHJvaWQuc2VydmVyLnN0YXR1czsKLQotaW1wb3J0IGFuZHJvaWQuYXBwLkFsZXJ0RGlhbG9nOwotaW1wb3J0IGFuZHJvaWQuYmx1ZXRvb3RoLkJsdWV0b290aEEyZHA7Ci1pbXBvcnQgYW5kcm9pZC5ibHVldG9vdGguQmx1ZXRvb3RoQWRhcHRlcjsKLWltcG9ydCBhbmRyb2lkLmJsdWV0b290aC5CbHVldG9vdGhIZWFkc2V0OwotaW1wb3J0IGFuZHJvaWQuYmx1ZXRvb3RoLkJsdWV0b290aFBiYXA7Ci1pbXBvcnQgYW5kcm9pZC5jb250ZW50LkJyb2FkY2FzdFJlY2VpdmVyOwotaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXI7Ci1pbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7Ci1pbXBvcnQgYW5kcm9pZC5jb250ZW50LkRpYWxvZ0ludGVyZmFjZTsKLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50OwotaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnRGaWx0ZXI7Ci1pbXBvcnQgYW5kcm9pZC5jb250ZW50LnJlcy5UeXBlZEFycmF5OwotaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuUGl4ZWxGb3JtYXQ7Ci1pbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZTsKLWltcG9ydCBhbmRyb2lkLm1lZGlhLkF1ZGlvTWFuYWdlcjsKLWltcG9ydCBhbmRyb2lkLm1lZGlhLlJpbmd0b25lOwotaW1wb3J0IGFuZHJvaWQubWVkaWEuUmluZ3RvbmVNYW5hZ2VyOwotaW1wb3J0IGFuZHJvaWQubmV0Lk5ldHdvcmtJbmZvOwotaW1wb3J0IGFuZHJvaWQubmV0LlVyaTsKLWltcG9ydCBhbmRyb2lkLm5ldC53aWZpLldpZmlNYW5hZ2VyOwotaW1wb3J0IGFuZHJvaWQub3MuQmluZGVyOwotaW1wb3J0IGFuZHJvaWQub3MuSGFuZGxlcjsKLWltcG9ydCBhbmRyb2lkLm9zLklCaW5kZXI7Ci1pbXBvcnQgYW5kcm9pZC5vcy5NZXNzYWdlOwotaW1wb3J0IGFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uOwotaW1wb3J0IGFuZHJvaWQub3Muc3RvcmFnZS5TdG9yYWdlTWFuYWdlcjsKLWltcG9ydCBhbmRyb2lkLnByb3ZpZGVyLlNldHRpbmdzOwotaW1wb3J0IGFuZHJvaWQudGVsZXBob255LlBob25lU3RhdGVMaXN0ZW5lcjsKLWltcG9ydCBhbmRyb2lkLnRlbGVwaG9ueS5TZXJ2aWNlU3RhdGU7Ci1pbXBvcnQgYW5kcm9pZC50ZWxlcGhvbnkuU2lnbmFsU3RyZW5ndGg7Ci1pbXBvcnQgYW5kcm9pZC50ZWxlcGhvbnkuVGVsZXBob255TWFuYWdlcjsKLWltcG9ydCBhbmRyb2lkLnRleHQuZm9ybWF0LkRhdGVGb3JtYXQ7Ci1pbXBvcnQgYW5kcm9pZC50ZXh0LnN0eWxlLlJlbGF0aXZlU2l6ZVNwYW47Ci1pbXBvcnQgYW5kcm9pZC50ZXh0LlNwYW5uYWJsZTsKLWltcG9ydCBhbmRyb2lkLnRleHQuU3Bhbm5hYmxlU3RyaW5nQnVpbGRlcjsKLWltcG9ydCBhbmRyb2lkLnV0aWwuU2xvZzsKLWltcG9ydCBhbmRyb2lkLnZpZXcuVmlldzsKLWltcG9ydCBhbmRyb2lkLnZpZXcuVmlld0dyb3VwOwotaW1wb3J0IGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyOwotaW1wb3J0IGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VySW1wbDsKLWltcG9ydCBhbmRyb2lkLndpZGdldC5JbWFnZVZpZXc7Ci1pbXBvcnQgYW5kcm9pZC53aWRnZXQuTGluZWFyTGF5b3V0OwotaW1wb3J0IGFuZHJvaWQud2lkZ2V0LlRleHRWaWV3OwotCi1pbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuUjsKLWltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5hcHAuSUJhdHRlcnlTdGF0czsKLWltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5sb2NhdGlvbi5HcHNMb2NhdGlvblByb3ZpZGVyOwotaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5JY2NDYXJkOwotaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5UZWxlcGhvbnlJbnRlbnRzOwotaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5jZG1hLkVyaUluZm87Ci1pbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LmNkbWEuVHR5SW50ZW50OwotaW1wb3J0IGNvbS5hbmRyb2lkLnNlcnZlci5hbS5CYXR0ZXJ5U3RhdHNTZXJ2aWNlOwotCi1pbXBvcnQgamF2YS50ZXh0LlNpbXBsZURhdGVGb3JtYXQ7Ci1pbXBvcnQgamF2YS51dGlsLkNhbGVuZGFyOwotaW1wb3J0IGphdmEudXRpbC5UaW1lWm9uZTsKLQotLyoqCi0gKiBUaGlzIGNsYXNzIGNvbnRhaW5zIGFsbCBvZiB0aGUgcG9saWN5IGFib3V0IHdoaWNoIGljb25zIGFyZSBpbnN0YWxsZWQgaW4gdGhlIHN0YXR1cwotICogYmFyIGF0IGJvb3QgdGltZS4gIEluIHJlYWxpdHksIGl0IHNob3VsZCBnbyBpbnRvIHRoZSBhbmRyb2lkLnBvbGljeSBwYWNrYWdlLCBidXQKLSAqIHB1dHRpbmcgaXQgaGVyZSBpcyB0aGUgZmlyc3Qgc3RlcCBmcm9tIGV4dHJhY3RpbmcgaXQuCi0gKi8KLXB1YmxpYyBjbGFzcyBTdGF0dXNCYXJQb2xpY3kgewotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSAiU3RhdHVzQmFyUG9saWN5IjsKLQotICAgIHByaXZhdGUgc3RhdGljIFN0YXR1c0JhclBvbGljeSBzSW5zdGFuY2U7Ci0KLSAgICAvLyBtZXNzYWdlIGNvZGVzIGZvciB0aGUgaGFuZGxlcgotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBFVkVOVF9CQVRURVJZX0NMT1NFID0gNDsKLQotICAgIHByaXZhdGUgZmluYWwgQ29udGV4dCBtQ29udGV4dDsKLSAgICBwcml2YXRlIGZpbmFsIFN0YXR1c0JhclNlcnZpY2UgbVNlcnZpY2U7Ci0gICAgcHJpdmF0ZSBmaW5hbCBIYW5kbGVyIG1IYW5kbGVyID0gbmV3IFN0YXR1c0JhckhhbmRsZXIoKTsKLSAgICBwcml2YXRlIGZpbmFsIElCYXR0ZXJ5U3RhdHMgbUJhdHRlcnlTdGF0czsKLQotICAgIC8vIGNsb2NrCi0gICAgcHJpdmF0ZSBDYWxlbmRhciBtQ2FsZW5kYXI7Ci0gICAgcHJpdmF0ZSBTdHJpbmcgbUNsb2NrRm9ybWF0U3RyaW5nOwotICAgIHByaXZhdGUgU2ltcGxlRGF0ZUZvcm1hdCBtQ2xvY2tGb3JtYXQ7Ci0gICAgcHJpdmF0ZSBJQmluZGVyIG1DbG9ja0ljb247Ci0gICAgcHJpdmF0ZSBJY29uRGF0YSBtQ2xvY2tEYXRhOwotCi0gICAgLy8gc3RvcmFnZQotICAgIHByaXZhdGUgU3RvcmFnZU1hbmFnZXIgbVN0b3JhZ2VNYW5hZ2VyOwotCi0gICAgLy8gYmF0dGVyeQotICAgIHByaXZhdGUgSUJpbmRlciBtQmF0dGVyeUljb247Ci0gICAgcHJpdmF0ZSBJY29uRGF0YSBtQmF0dGVyeURhdGE7Ci0gICAgcHJpdmF0ZSBib29sZWFuIG1CYXR0ZXJ5Rmlyc3QgPSB0cnVlOwotICAgIHByaXZhdGUgYm9vbGVhbiBtQmF0dGVyeVBsdWdnZWQ7Ci0gICAgcHJpdmF0ZSBpbnQgbUJhdHRlcnlMZXZlbDsKLSAgICBwcml2YXRlIEFsZXJ0RGlhbG9nIG1Mb3dCYXR0ZXJ5RGlhbG9nOwotICAgIHByaXZhdGUgVGV4dFZpZXcgbUJhdHRlcnlMZXZlbFRleHRWaWV3OwotICAgIHByaXZhdGUgVmlldyBtQmF0dGVyeVZpZXc7Ci0gICAgcHJpdmF0ZSBpbnQgbUJhdHRlcnlWaWV3U2VxdWVuY2U7Ci0gICAgcHJpdmF0ZSBib29sZWFuIG1CYXR0ZXJ5U2hvd0xvd09uRW5kQ2FsbCA9IGZhbHNlOwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gU0hPV19MT1dfQkFUVEVSWV9XQVJOSU5HID0gdHJ1ZTsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBib29sZWFuIFNIT1dfQkFUVEVSWV9XQVJOSU5HU19JTl9DQUxMID0gdHJ1ZTsKLQotICAgIC8vIHBob25lCi0gICAgcHJpdmF0ZSBUZWxlcGhvbnlNYW5hZ2VyIG1QaG9uZTsKLSAgICBwcml2YXRlIElCaW5kZXIgbVBob25lSWNvbjsKLQotICAgIC8vKioqKiogU2lnbmFsIHN0cmVuZ3RoIGljb25zCi0gICAgcHJpdmF0ZSBJY29uRGF0YSBtUGhvbmVEYXRhOwotICAgIC8vR1NNL1VNVFMKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnRbXSBzU2lnbmFsSW1hZ2VzID0gbmV3IGludFtdIHsKLSAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19zaWduYWxfMCwKLSAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19zaWduYWxfMSwKLSAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19zaWduYWxfMiwKLSAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19zaWduYWxfMywKLSAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19zaWduYWxfNAotICAgIH07Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50W10gc1NpZ25hbEltYWdlc19yID0gbmV3IGludFtdIHsKLSAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19yX3NpZ25hbF8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3Jfc2lnbmFsXzEsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcl9zaWduYWxfMiwKLSAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19yX3NpZ25hbF8zLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3Jfc2lnbmFsXzQKLSAgICB9OwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludFtdIHNSb2FtaW5nSW5kaWNhdG9ySW1hZ2VzX2NkbWEgPSBuZXcgaW50W10gewotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLCAvL1N0YW5kYXJkIFJvYW1pbmcgSW5kaWNhdG9yCi0gICAgICAgIC8vIDEgaXMgU3RhbmRhcmQgUm9hbWluZyBJbmRpY2F0b3IgT0ZGCi0gICAgICAgIC8vIFRPRE8gVDogaW1hZ2UgbmV2ZXIgdXNlZCwgcmVtb3ZlIGFuZCBwdXQgMCBpbnN0ZWFkPwotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotCi0gICAgICAgIC8vIDIgaXMgU3RhbmRhcmQgUm9hbWluZyBJbmRpY2F0b3IgRkxBU0hJTkcKLSAgICAgICAgLy8gVE9ETyBUOiBpbWFnZSBuZXZlciB1c2VkLCByZW1vdmUgYW5kIHB1dCAwIGluc3RlYWQ/Ci0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0KLSAgICAgICAgLy8gMy0xMiBTdGFuZGFyZCBFUkkKLSAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwgLy8zCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0KLSAgICAgICAgLy8gMTMtNjMgUmVzZXJ2ZWQgZm9yIFN0YW5kYXJkIEVSSQotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLCAvLzEzCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0gICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsCi0KLSAgICAgICAgLy8gNjQtMTI3IFJlc2VydmVkIGZvciBOb24gU3RhbmRhcmQgKE9wZXJhdG9yIFNwZWNpZmljKSBFUkkKLSAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19yb2FtaW5nX2NkbWFfMCwgLy82NAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wLAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3JvYW1pbmdfY2RtYV8wIC8vODMKLQotICAgICAgICAvLyAxMjgtMjU1IFJlc2VydmVkCi0gICAgfTsKLQotICAgIC8vKioqKiogRGF0YSBjb25uZWN0aW9uIGljb25zCi0gICAgcHJpdmF0ZSBpbnRbXSBtRGF0YUljb25MaXN0ID0gc0RhdGFOZXRUeXBlX2c7Ci0gICAgLy9HU00vVU1UUwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludFtdIHNEYXRhTmV0VHlwZV9nID0gbmV3IGludFtdIHsKLSAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfZGF0YV9jb25uZWN0ZWRfZywKLSAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfZGF0YV9pbl9nLAotICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19kYXRhX291dF9nLAotICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19kYXRhX2luYW5kb3V0X2csCi0gICAgICAgIH07Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50W10gc0RhdGFOZXRUeXBlXzNnID0gbmV3IGludFtdIHsKLSAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfZGF0YV9jb25uZWN0ZWRfM2csCi0gICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX2RhdGFfaW5fM2csCi0gICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX2RhdGFfb3V0XzNnLAotICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19kYXRhX2luYW5kb3V0XzNnLAotICAgICAgICB9OwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludFtdIHNEYXRhTmV0VHlwZV9lID0gbmV3IGludFtdIHsKLSAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfZGF0YV9jb25uZWN0ZWRfZSwKLSAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfZGF0YV9pbl9lLAotICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19kYXRhX291dF9lLAotICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19kYXRhX2luYW5kb3V0X2UsCi0gICAgICAgIH07Ci0gICAgLy8zLjVHCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50W10gc0RhdGFOZXRUeXBlX2ggPSBuZXcgaW50W10gewotICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19kYXRhX2Nvbm5lY3RlZF9oLAotICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19kYXRhX2luX2gsCi0gICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX2RhdGFfb3V0X2gsCi0gICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX2RhdGFfaW5hbmRvdXRfaCwKLSAgICB9OwotCi0gICAgLy9DRE1BCi0gICAgLy8gVXNlIDNHIGljb25zIGZvciBFVkRPIGRhdGEgYW5kIDF4IGljb25zIGZvciAxWFJUVCBkYXRhCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50W10gc0RhdGFOZXRUeXBlXzF4ID0gbmV3IGludFtdIHsKLSAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19kYXRhX2Nvbm5lY3RlZF8xeCwKLSAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19kYXRhX2luXzF4LAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX2RhdGFfb3V0XzF4LAotICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX2RhdGFfaW5hbmRvdXRfMXgsCi0gICAgfTsKLQotICAgIC8vIEFzc3VtZSBpdCdzIGFsbCBnb29kIHVubGVzcyB3ZSBoZWFyIG90aGVyd2lzZS4gIFdlIGRvbid0IGFsd2F5cyBzZWVtCi0gICAgLy8gdG8gZ2V0IGJyb2FkY2FzdHMgdGhhdCBpdCAqaXMqIHRoZXJlLgotICAgIEljY0NhcmQuU3RhdGUgbVNpbVN0YXRlID0gSWNjQ2FyZC5TdGF0ZS5SRUFEWTsKLSAgICBpbnQgbVBob25lU3RhdGUgPSBUZWxlcGhvbnlNYW5hZ2VyLkNBTExfU1RBVEVfSURMRTsKLSAgICBpbnQgbURhdGFTdGF0ZSA9IFRlbGVwaG9ueU1hbmFnZXIuREFUQV9ESVNDT05ORUNURUQ7Ci0gICAgaW50IG1EYXRhQWN0aXZpdHkgPSBUZWxlcGhvbnlNYW5hZ2VyLkRBVEFfQUNUSVZJVFlfTk9ORTsKLSAgICBTZXJ2aWNlU3RhdGUgbVNlcnZpY2VTdGF0ZTsKLSAgICBTaWduYWxTdHJlbmd0aCBtU2lnbmFsU3RyZW5ndGg7Ci0KLSAgICAvLyBkYXRhIGNvbm5lY3Rpb24KLSAgICBwcml2YXRlIElCaW5kZXIgbURhdGFJY29uOwotICAgIHByaXZhdGUgSWNvbkRhdGEgbURhdGFEYXRhOwotICAgIHByaXZhdGUgYm9vbGVhbiBtRGF0YUljb25WaXNpYmxlOwotICAgIHByaXZhdGUgYm9vbGVhbiBtSHNwYURhdGFEaXN0aW5ndWlzaGFibGU7Ci0KLSAgICAvLyByaW5nZXIgdm9sdW1lCi0gICAgcHJpdmF0ZSBJQmluZGVyIG1Wb2x1bWVJY29uOwotICAgIHByaXZhdGUgSWNvbkRhdGEgbVZvbHVtZURhdGE7Ci0gICAgcHJpdmF0ZSBib29sZWFuIG1Wb2x1bWVWaXNpYmxlOwotCi0gICAgLy8gYmx1ZXRvb3RoIGRldmljZSBzdGF0dXMKLSAgICBwcml2YXRlIElCaW5kZXIgbUJsdWV0b290aEljb247Ci0gICAgcHJpdmF0ZSBJY29uRGF0YSBtQmx1ZXRvb3RoRGF0YTsKLSAgICBwcml2YXRlIGludCBtQmx1ZXRvb3RoSGVhZHNldFN0YXRlOwotICAgIHByaXZhdGUgYm9vbGVhbiBtQmx1ZXRvb3RoQTJkcENvbm5lY3RlZDsKLSAgICBwcml2YXRlIGludCBtQmx1ZXRvb3RoUGJhcFN0YXRlOwotICAgIHByaXZhdGUgYm9vbGVhbiBtQmx1ZXRvb3RoRW5hYmxlZDsKLQotICAgIC8vIHdpZmkKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnRbXSBzV2lmaVNpZ25hbEltYWdlcyA9IG5ldyBpbnRbXSB7Ci0gICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3dpZmlfc2lnbmFsXzEsCi0gICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3dpZmlfc2lnbmFsXzIsCi0gICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3dpZmlfc2lnbmFsXzMsCi0gICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3dpZmlfc2lnbmFsXzQsCi0gICAgICAgIH07Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IHNXaWZpVGVtcG9yYXJpbHlOb3RDb25uZWN0ZWRJbWFnZSA9Ci0gICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3dpZmlfc2lnbmFsXzA7Ci0KLSAgICBwcml2YXRlIGludCBtTGFzdFdpZmlTaWduYWxMZXZlbCA9IC0xOwotICAgIHByaXZhdGUgYm9vbGVhbiBtSXNXaWZpQ29ubmVjdGVkID0gZmFsc2U7Ci0gICAgcHJpdmF0ZSBJQmluZGVyIG1XaWZpSWNvbjsKLSAgICBwcml2YXRlIEljb25EYXRhIG1XaWZpRGF0YTsKLQotICAgIC8vIGdwcwotICAgIHByaXZhdGUgSUJpbmRlciBtR3BzSWNvbjsKLSAgICBwcml2YXRlIEljb25EYXRhIG1HcHNFbmFibGVkSWNvbkRhdGE7Ci0gICAgcHJpdmF0ZSBJY29uRGF0YSBtR3BzRml4SWNvbkRhdGE7Ci0KLSAgICAvLyBhbGFybSBjbG9jawotICAgIC8vIEljb24gbGl0IHdoZW4gY2xvY2sgaXMgc2V0Ci0gICAgcHJpdmF0ZSBJQmluZGVyIG1BbGFybUNsb2NrSWNvbjsKLSAgICBwcml2YXRlIEljb25EYXRhIG1BbGFybUNsb2NrSWNvbkRhdGE7Ci0KLSAgICAvLyBzeW5jIHN0YXRlCi0gICAgLy8gSWYgc3luYyBpcyBhY3RpdmUgdGhlIFN5bmNBY3RpdmUgaWNvbiBpcyBkaXNwbGF5ZWQuIElmIHN5bmMgaXMgbm90IGFjdGl2ZSBidXQKLSAgICAvLyBzeW5jIGlzIGZhaWxpbmcgdGhlIFN5bmNGYWlsaW5nIGljb24gaXMgZGlzcGxheWVkLiBPdGhlcndpc2UgbmVpdGhlciBhcmUgZGlzcGxheWVkLgotICAgIHByaXZhdGUgSUJpbmRlciBtU3luY0FjdGl2ZUljb247Ci0gICAgcHJpdmF0ZSBJQmluZGVyIG1TeW5jRmFpbGluZ0ljb247Ci0KLSAgICAvLyBUVFkgbW9kZQotICAgIC8vIEljb24gbGl0IHdoZW4gVFRZIG1vZGUgaXMgZW5hYmxlZAotICAgIHByaXZhdGUgSUJpbmRlciBtVFRZTW9kZUljb247Ci0gICAgcHJpdmF0ZSBJY29uRGF0YSBtVFRZTW9kZUVuYWJsZUljb25EYXRhOwotCi0gICAgLy8gQ2RtYSBSb2FtaW5nIEluZGljYXRvciwgRVJJCi0gICAgcHJpdmF0ZSBJQmluZGVyIG1DZG1hUm9hbWluZ0luZGljYXRvckljb247Ci0gICAgcHJpdmF0ZSBJY29uRGF0YSBtQ2RtYVJvYW1pbmdJbmRpY2F0b3JJY29uRGF0YTsKLQotICAgIHByaXZhdGUgQnJvYWRjYXN0UmVjZWl2ZXIgbUludGVudFJlY2VpdmVyID0gbmV3IEJyb2FkY2FzdFJlY2VpdmVyKCkgewotICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIHZvaWQgb25SZWNlaXZlKENvbnRleHQgY29udGV4dCwgSW50ZW50IGludGVudCkgewotICAgICAgICAgICAgU3RyaW5nIGFjdGlvbiA9IGludGVudC5nZXRBY3Rpb24oKTsKLSAgICAgICAgICAgIGlmIChhY3Rpb24uZXF1YWxzKEludGVudC5BQ1RJT05fVElNRV9USUNLKSkgewotICAgICAgICAgICAgICAgIHVwZGF0ZUNsb2NrKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKEludGVudC5BQ1RJT05fVElNRV9DSEFOR0VEKSkgewotICAgICAgICAgICAgICAgIHVwZGF0ZUNsb2NrKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKEludGVudC5BQ1RJT05fQkFUVEVSWV9DSEFOR0VEKSkgewotICAgICAgICAgICAgICAgIHVwZGF0ZUJhdHRlcnkoaW50ZW50KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKGFjdGlvbi5lcXVhbHMoSW50ZW50LkFDVElPTl9DT05GSUdVUkFUSU9OX0NIQU5HRUQpKSB7Ci0gICAgICAgICAgICAgICAgdXBkYXRlQ2xvY2soKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKGFjdGlvbi5lcXVhbHMoSW50ZW50LkFDVElPTl9USU1FWk9ORV9DSEFOR0VEKSkgewotICAgICAgICAgICAgICAgIFN0cmluZyB0eiA9IGludGVudC5nZXRTdHJpbmdFeHRyYSgidGltZS16b25lIik7Ci0gICAgICAgICAgICAgICAgbUNhbGVuZGFyID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoVGltZVpvbmUuZ2V0VGltZVpvbmUodHopKTsKLSAgICAgICAgICAgICAgICBpZiAobUNsb2NrRm9ybWF0ICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgbUNsb2NrRm9ybWF0LnNldFRpbWVab25lKG1DYWxlbmRhci5nZXRUaW1lWm9uZSgpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgdXBkYXRlQ2xvY2soKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKGFjdGlvbi5lcXVhbHMoSW50ZW50LkFDVElPTl9BTEFSTV9DSEFOR0VEKSkgewotICAgICAgICAgICAgICAgIHVwZGF0ZUFsYXJtKGludGVudCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKEludGVudC5BQ1RJT05fU1lOQ19TVEFURV9DSEFOR0VEKSkgewotICAgICAgICAgICAgICAgIHVwZGF0ZVN5bmNTdGF0ZShpbnRlbnQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoYWN0aW9uLmVxdWFscyhJbnRlbnQuQUNUSU9OX0JBVFRFUllfTE9XKSkgewotICAgICAgICAgICAgICAgIG9uQmF0dGVyeUxvdyhpbnRlbnQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoYWN0aW9uLmVxdWFscyhJbnRlbnQuQUNUSU9OX0JBVFRFUllfT0tBWSkKLSAgICAgICAgICAgICAgICAgICAgfHwgYWN0aW9uLmVxdWFscyhJbnRlbnQuQUNUSU9OX1BPV0VSX0NPTk5FQ1RFRCkpIHsKLSAgICAgICAgICAgICAgICBvbkJhdHRlcnlPa2F5KGludGVudCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKEJsdWV0b290aEFkYXB0ZXIuQUNUSU9OX1NUQVRFX0NIQU5HRUQpIHx8Ci0gICAgICAgICAgICAgICAgICAgIGFjdGlvbi5lcXVhbHMoQmx1ZXRvb3RoSGVhZHNldC5BQ1RJT05fU1RBVEVfQ0hBTkdFRCkgfHwKLSAgICAgICAgICAgICAgICAgICAgYWN0aW9uLmVxdWFscyhCbHVldG9vdGhBMmRwLkFDVElPTl9TSU5LX1NUQVRFX0NIQU5HRUQpIHx8Ci0gICAgICAgICAgICAgICAgICAgIGFjdGlvbi5lcXVhbHMoQmx1ZXRvb3RoUGJhcC5QQkFQX1NUQVRFX0NIQU5HRURfQUNUSU9OKSkgewotICAgICAgICAgICAgICAgIHVwZGF0ZUJsdWV0b290aChpbnRlbnQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSBpZiAoYWN0aW9uLmVxdWFscyhXaWZpTWFuYWdlci5ORVRXT1JLX1NUQVRFX0NIQU5HRURfQUNUSU9OKSB8fAotICAgICAgICAgICAgICAgICAgICBhY3Rpb24uZXF1YWxzKFdpZmlNYW5hZ2VyLldJRklfU1RBVEVfQ0hBTkdFRF9BQ1RJT04pIHx8Ci0gICAgICAgICAgICAgICAgICAgIGFjdGlvbi5lcXVhbHMoV2lmaU1hbmFnZXIuUlNTSV9DSEFOR0VEX0FDVElPTikpIHsKLSAgICAgICAgICAgICAgICB1cGRhdGVXaWZpKGludGVudCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKEdwc0xvY2F0aW9uUHJvdmlkZXIuR1BTX0VOQUJMRURfQ0hBTkdFX0FDVElPTikgfHwKLSAgICAgICAgICAgICAgICAgICAgYWN0aW9uLmVxdWFscyhHcHNMb2NhdGlvblByb3ZpZGVyLkdQU19GSVhfQ0hBTkdFX0FDVElPTikpIHsKLSAgICAgICAgICAgICAgICB1cGRhdGVHcHMoaW50ZW50KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKGFjdGlvbi5lcXVhbHMoQXVkaW9NYW5hZ2VyLlJJTkdFUl9NT0RFX0NIQU5HRURfQUNUSU9OKSB8fAotICAgICAgICAgICAgICAgICAgICBhY3Rpb24uZXF1YWxzKEF1ZGlvTWFuYWdlci5WSUJSQVRFX1NFVFRJTkdfQ0hBTkdFRF9BQ1RJT04pKSB7Ci0gICAgICAgICAgICAgICAgdXBkYXRlVm9sdW1lKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKFRlbGVwaG9ueUludGVudHMuQUNUSU9OX1NJTV9TVEFURV9DSEFOR0VEKSkgewotICAgICAgICAgICAgICAgIHVwZGF0ZVNpbVN0YXRlKGludGVudCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKFR0eUludGVudC5UVFlfRU5BQkxFRF9DSEFOR0VfQUNUSU9OKSkgewotICAgICAgICAgICAgICAgIHVwZGF0ZVRUWShpbnRlbnQpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfTsKLQotICAgIHByaXZhdGUgU3RhdHVzQmFyUG9saWN5KENvbnRleHQgY29udGV4dCwgU3RhdHVzQmFyU2VydmljZSBzZXJ2aWNlKSB7Ci0gICAgICAgIG1Db250ZXh0ID0gY29udGV4dDsKLSAgICAgICAgbVNlcnZpY2UgPSBzZXJ2aWNlOwotICAgICAgICBtU2lnbmFsU3RyZW5ndGggPSBuZXcgU2lnbmFsU3RyZW5ndGgoKTsKLSAgICAgICAgbUJhdHRlcnlTdGF0cyA9IEJhdHRlcnlTdGF0c1NlcnZpY2UuZ2V0U2VydmljZSgpOwotCi0gICAgICAgIC8vIGNsb2NrCi0gICAgICAgIG1DYWxlbmRhciA9IENhbGVuZGFyLmdldEluc3RhbmNlKFRpbWVab25lLmdldERlZmF1bHQoKSk7Ci0gICAgICAgIG1DbG9ja0RhdGEgPSBJY29uRGF0YS5tYWtlVGV4dCgiY2xvY2siLCAiIik7Ci0gICAgICAgIG1DbG9ja0ljb24gPSBzZXJ2aWNlLmFkZEljb24obUNsb2NrRGF0YSwgbnVsbCk7Ci0gICAgICAgIHVwZGF0ZUNsb2NrKCk7Ci0KLSAgICAgICAgLy8gc3RvcmFnZQotICAgICAgICBtU3RvcmFnZU1hbmFnZXIgPSAoU3RvcmFnZU1hbmFnZXIpIGNvbnRleHQuZ2V0U3lzdGVtU2VydmljZShDb250ZXh0LlNUT1JBR0VfU0VSVklDRSk7Ci0gICAgICAgIG1TdG9yYWdlTWFuYWdlci5yZWdpc3Rlckxpc3RlbmVyKAotICAgICAgICAgICAgICAgIG5ldyBjb20uYW5kcm9pZC5zZXJ2ZXIuc3RhdHVzLlN0b3JhZ2VOb3RpZmljYXRpb24oY29udGV4dCkpOwotCi0gICAgICAgIC8vIGJhdHRlcnkKLSAgICAgICAgbUJhdHRlcnlEYXRhID0gSWNvbkRhdGEubWFrZUljb24oImJhdHRlcnkiLAotICAgICAgICAgICAgICAgIG51bGwsIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfYmF0dGVyeV91bmtub3duLCAwLCAwKTsKLSAgICAgICAgbUJhdHRlcnlJY29uID0gc2VydmljZS5hZGRJY29uKG1CYXR0ZXJ5RGF0YSwgbnVsbCk7Ci0KLSAgICAgICAgLy8gcGhvbmVfc2lnbmFsCi0gICAgICAgIG1QaG9uZSA9IChUZWxlcGhvbnlNYW5hZ2VyKWNvbnRleHQuZ2V0U3lzdGVtU2VydmljZShDb250ZXh0LlRFTEVQSE9OWV9TRVJWSUNFKTsKLSAgICAgICAgbVBob25lRGF0YSA9IEljb25EYXRhLm1ha2VJY29uKCJwaG9uZV9zaWduYWwiLAotICAgICAgICAgICAgICAgIG51bGwsIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfc2lnbmFsX251bGwsIDAsIDApOwotICAgICAgICBtUGhvbmVJY29uID0gc2VydmljZS5hZGRJY29uKG1QaG9uZURhdGEsIG51bGwpOwotCi0gICAgICAgIC8vIHJlZ2lzdGVyIGZvciBwaG9uZSBzdGF0ZSBub3RpZmljYXRpb25zLgotICAgICAgICAoKFRlbGVwaG9ueU1hbmFnZXIpbUNvbnRleHQuZ2V0U3lzdGVtU2VydmljZShDb250ZXh0LlRFTEVQSE9OWV9TRVJWSUNFKSkKLSAgICAgICAgICAgICAgICAubGlzdGVuKG1QaG9uZVN0YXRlTGlzdGVuZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFBob25lU3RhdGVMaXN0ZW5lci5MSVNURU5fU0VSVklDRV9TVEFURQotICAgICAgICAgICAgICAgICAgICAgICAgfCBQaG9uZVN0YXRlTGlzdGVuZXIuTElTVEVOX1NJR05BTF9TVFJFTkdUSFMKLSAgICAgICAgICAgICAgICAgICAgICAgIHwgUGhvbmVTdGF0ZUxpc3RlbmVyLkxJU1RFTl9DQUxMX1NUQVRFCi0gICAgICAgICAgICAgICAgICAgICAgICB8IFBob25lU3RhdGVMaXN0ZW5lci5MSVNURU5fREFUQV9DT05ORUNUSU9OX1NUQVRFCi0gICAgICAgICAgICAgICAgICAgICAgICB8IFBob25lU3RhdGVMaXN0ZW5lci5MSVNURU5fREFUQV9BQ1RJVklUWSk7Ci0KLSAgICAgICAgLy8gZGF0YV9jb25uZWN0aW9uCi0gICAgICAgIG1EYXRhRGF0YSA9IEljb25EYXRhLm1ha2VJY29uKCJkYXRhX2Nvbm5lY3Rpb24iLAotICAgICAgICAgICAgICAgIG51bGwsIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfZGF0YV9jb25uZWN0ZWRfZywgMCwgMCk7Ci0gICAgICAgIG1EYXRhSWNvbiA9IHNlcnZpY2UuYWRkSWNvbihtRGF0YURhdGEsIG51bGwpOwotICAgICAgICBzZXJ2aWNlLnNldEljb25WaXNpYmlsaXR5KG1EYXRhSWNvbiwgZmFsc2UpOwotCi0gICAgICAgIC8vIHdpZmkKLSAgICAgICAgbVdpZmlEYXRhID0gSWNvbkRhdGEubWFrZUljb24oIndpZmkiLCBudWxsLCBzV2lmaVNpZ25hbEltYWdlc1swXSwgMCwgMCk7Ci0gICAgICAgIG1XaWZpSWNvbiA9IHNlcnZpY2UuYWRkSWNvbihtV2lmaURhdGEsIG51bGwpOwotICAgICAgICBzZXJ2aWNlLnNldEljb25WaXNpYmlsaXR5KG1XaWZpSWNvbiwgZmFsc2UpOwotICAgICAgICAvLyB3aWZpIHdpbGwgZ2V0IHVwZGF0ZWQgYnkgdGhlIHN0aWNreSBpbnRlbnRzCi0KLSAgICAgICAgLy8gVFRZIHN0YXR1cwotICAgICAgICBtVFRZTW9kZUVuYWJsZUljb25EYXRhID0gSWNvbkRhdGEubWFrZUljb24oInR0eSIsCi0gICAgICAgICAgICAgICAgbnVsbCwgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c190dHlfbW9kZSwgMCwgMCk7Ci0gICAgICAgIG1UVFlNb2RlSWNvbiA9IHNlcnZpY2UuYWRkSWNvbihtVFRZTW9kZUVuYWJsZUljb25EYXRhLCBudWxsKTsKLSAgICAgICAgc2VydmljZS5zZXRJY29uVmlzaWJpbGl0eShtVFRZTW9kZUljb24sIGZhbHNlKTsKLQotICAgICAgICAvLyBDZG1hIFJvYW1pbmcgSW5kaWNhdG9yLCBFUkkKLSAgICAgICAgbUNkbWFSb2FtaW5nSW5kaWNhdG9ySWNvbkRhdGEgPSBJY29uRGF0YS5tYWtlSWNvbigiY2RtYV9lcmkiLAotICAgICAgICAgICAgICAgIG51bGwsIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hXzAsIDAsIDApOwotICAgICAgICBtQ2RtYVJvYW1pbmdJbmRpY2F0b3JJY29uID0gc2VydmljZS5hZGRJY29uKG1DZG1hUm9hbWluZ0luZGljYXRvckljb25EYXRhLCBudWxsKTsKLSAgICAgICAgc2VydmljZS5zZXRJY29uVmlzaWJpbGl0eShtQ2RtYVJvYW1pbmdJbmRpY2F0b3JJY29uLCBmYWxzZSk7Ci0KLSAgICAgICAgLy8gYmx1ZXRvb3RoIHN0YXR1cwotICAgICAgICBtQmx1ZXRvb3RoRGF0YSA9IEljb25EYXRhLm1ha2VJY29uKCJibHVldG9vdGgiLAotICAgICAgICAgICAgICAgIG51bGwsIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfZGF0YV9ibHVldG9vdGgsIDAsIDApOwotICAgICAgICBtQmx1ZXRvb3RoSWNvbiA9IHNlcnZpY2UuYWRkSWNvbihtQmx1ZXRvb3RoRGF0YSwgbnVsbCk7Ci0gICAgICAgIEJsdWV0b290aEFkYXB0ZXIgYWRhcHRlciA9IEJsdWV0b290aEFkYXB0ZXIuZ2V0RGVmYXVsdEFkYXB0ZXIoKTsKLSAgICAgICAgaWYgKGFkYXB0ZXIgIT0gbnVsbCkgewotICAgICAgICAgICAgbUJsdWV0b290aEVuYWJsZWQgPSBhZGFwdGVyLmlzRW5hYmxlZCgpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbUJsdWV0b290aEVuYWJsZWQgPSBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBtQmx1ZXRvb3RoQTJkcENvbm5lY3RlZCA9IGZhbHNlOwotICAgICAgICBtQmx1ZXRvb3RoSGVhZHNldFN0YXRlID0gQmx1ZXRvb3RoSGVhZHNldC5TVEFURV9ESVNDT05ORUNURUQ7Ci0gICAgICAgIG1CbHVldG9vdGhQYmFwU3RhdGUgPSBCbHVldG9vdGhQYmFwLlNUQVRFX0RJU0NPTk5FQ1RFRDsKLSAgICAgICAgbVNlcnZpY2Uuc2V0SWNvblZpc2liaWxpdHkobUJsdWV0b290aEljb24sIG1CbHVldG9vdGhFbmFibGVkKTsKLQotICAgICAgICAvLyBHcHMgc3RhdHVzCi0gICAgICAgIG1HcHNFbmFibGVkSWNvbkRhdGEgPSBJY29uRGF0YS5tYWtlSWNvbigiZ3BzIiwKLSAgICAgICAgICAgICAgICBudWxsLCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX2dwc19hY3F1aXJpbmdfYW5pbSwgMCwgMCk7Ci0gICAgICAgIG1HcHNGaXhJY29uRGF0YSA9IEljb25EYXRhLm1ha2VJY29uKCJncHMiLAotICAgICAgICAgICAgICAgIG51bGwsIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfZ3BzX29uLCAwLCAwKTsKLSAgICAgICAgbUdwc0ljb24gPSBzZXJ2aWNlLmFkZEljb24obUdwc0VuYWJsZWRJY29uRGF0YSwgbnVsbCk7Ci0gICAgICAgIHNlcnZpY2Uuc2V0SWNvblZpc2liaWxpdHkobUdwc0ljb24sIGZhbHNlKTsKLQotICAgICAgICAvLyBBbGFybSBjbG9jawotICAgICAgICBtQWxhcm1DbG9ja0ljb25EYXRhID0gSWNvbkRhdGEubWFrZUljb24oCi0gICAgICAgICAgICAgICAgImFsYXJtX2Nsb2NrIiwKLSAgICAgICAgICAgICAgICBudWxsLCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfbm90aWZ5X2FsYXJtLCAwLCAwKTsKLSAgICAgICAgbUFsYXJtQ2xvY2tJY29uID0gc2VydmljZS5hZGRJY29uKG1BbGFybUNsb2NrSWNvbkRhdGEsIG51bGwpOwotICAgICAgICBzZXJ2aWNlLnNldEljb25WaXNpYmlsaXR5KG1BbGFybUNsb2NrSWNvbiwgZmFsc2UpOwotCi0gICAgICAgIC8vIFN5bmMgc3RhdGUKLSAgICAgICAgbVN5bmNBY3RpdmVJY29uID0gc2VydmljZS5hZGRJY29uKEljb25EYXRhLm1ha2VJY29uKCJzeW5jX2FjdGl2ZSIsCi0gICAgICAgICAgICAgICAgbnVsbCwgUi5kcmF3YWJsZS5zdGF0X25vdGlmeV9zeW5jX2FuaW0wLCAwLCAwKSwgbnVsbCk7Ci0gICAgICAgIG1TeW5jRmFpbGluZ0ljb24gPSBzZXJ2aWNlLmFkZEljb24oSWNvbkRhdGEubWFrZUljb24oInN5bmNfZmFpbGluZyIsCi0gICAgICAgICAgICAgICAgbnVsbCwgUi5kcmF3YWJsZS5zdGF0X25vdGlmeV9zeW5jX2Vycm9yLCAwLCAwKSwgbnVsbCk7Ci0gICAgICAgIHNlcnZpY2Uuc2V0SWNvblZpc2liaWxpdHkobVN5bmNBY3RpdmVJY29uLCBmYWxzZSk7Ci0gICAgICAgIHNlcnZpY2Uuc2V0SWNvblZpc2liaWxpdHkobVN5bmNGYWlsaW5nSWNvbiwgZmFsc2UpOwotCi0gICAgICAgIC8vIHZvbHVtZQotICAgICAgICBtVm9sdW1lRGF0YSA9IEljb25EYXRhLm1ha2VJY29uKCJ2b2x1bWUiLAotICAgICAgICAgICAgICAgIG51bGwsIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcmluZ2VyX3NpbGVudCwgMCwgMCk7Ci0gICAgICAgIG1Wb2x1bWVJY29uID0gc2VydmljZS5hZGRJY29uKG1Wb2x1bWVEYXRhLCBudWxsKTsKLSAgICAgICAgc2VydmljZS5zZXRJY29uVmlzaWJpbGl0eShtVm9sdW1lSWNvbiwgZmFsc2UpOwotICAgICAgICB1cGRhdGVWb2x1bWUoKTsKLQotICAgICAgICBJbnRlbnRGaWx0ZXIgZmlsdGVyID0gbmV3IEludGVudEZpbHRlcigpOwotCi0gICAgICAgIC8vIFJlZ2lzdGVyIGZvciBJbnRlbnQgYnJvYWRjYXN0cyBmb3IuLi4KLSAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihJbnRlbnQuQUNUSU9OX1RJTUVfVElDSyk7Ci0gICAgICAgIGZpbHRlci5hZGRBY3Rpb24oSW50ZW50LkFDVElPTl9USU1FX0NIQU5HRUQpOwotICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKEludGVudC5BQ1RJT05fQ09ORklHVVJBVElPTl9DSEFOR0VEKTsKLSAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihJbnRlbnQuQUNUSU9OX0JBVFRFUllfQ0hBTkdFRCk7Ci0gICAgICAgIGZpbHRlci5hZGRBY3Rpb24oSW50ZW50LkFDVElPTl9CQVRURVJZX0xPVyk7Ci0gICAgICAgIGZpbHRlci5hZGRBY3Rpb24oSW50ZW50LkFDVElPTl9CQVRURVJZX09LQVkpOwotICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKEludGVudC5BQ1RJT05fUE9XRVJfQ09OTkVDVEVEKTsKLSAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihJbnRlbnQuQUNUSU9OX1RJTUVaT05FX0NIQU5HRUQpOwotICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKEludGVudC5BQ1RJT05fQUxBUk1fQ0hBTkdFRCk7Ci0gICAgICAgIGZpbHRlci5hZGRBY3Rpb24oSW50ZW50LkFDVElPTl9TWU5DX1NUQVRFX0NIQU5HRUQpOwotICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKEF1ZGlvTWFuYWdlci5SSU5HRVJfTU9ERV9DSEFOR0VEX0FDVElPTik7Ci0gICAgICAgIGZpbHRlci5hZGRBY3Rpb24oQXVkaW9NYW5hZ2VyLlZJQlJBVEVfU0VUVElOR19DSEFOR0VEX0FDVElPTik7Ci0gICAgICAgIGZpbHRlci5hZGRBY3Rpb24oQmx1ZXRvb3RoQWRhcHRlci5BQ1RJT05fU1RBVEVfQ0hBTkdFRCk7Ci0gICAgICAgIGZpbHRlci5hZGRBY3Rpb24oQmx1ZXRvb3RoSGVhZHNldC5BQ1RJT05fU1RBVEVfQ0hBTkdFRCk7Ci0gICAgICAgIGZpbHRlci5hZGRBY3Rpb24oQmx1ZXRvb3RoQTJkcC5BQ1RJT05fU0lOS19TVEFURV9DSEFOR0VEKTsKLSAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihCbHVldG9vdGhQYmFwLlBCQVBfU1RBVEVfQ0hBTkdFRF9BQ1RJT04pOwotICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKFdpZmlNYW5hZ2VyLldJRklfU1RBVEVfQ0hBTkdFRF9BQ1RJT04pOwotICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKFdpZmlNYW5hZ2VyLlNVUFBMSUNBTlRfQ09OTkVDVElPTl9DSEFOR0VfQUNUSU9OKTsKLSAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihXaWZpTWFuYWdlci5ORVRXT1JLX1NUQVRFX0NIQU5HRURfQUNUSU9OKTsKLSAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihXaWZpTWFuYWdlci5SU1NJX0NIQU5HRURfQUNUSU9OKTsKLSAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihHcHNMb2NhdGlvblByb3ZpZGVyLkdQU19FTkFCTEVEX0NIQU5HRV9BQ1RJT04pOwotICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKEdwc0xvY2F0aW9uUHJvdmlkZXIuR1BTX0ZJWF9DSEFOR0VfQUNUSU9OKTsKLSAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihUZWxlcGhvbnlJbnRlbnRzLkFDVElPTl9TSU1fU1RBVEVfQ0hBTkdFRCk7Ci0gICAgICAgIGZpbHRlci5hZGRBY3Rpb24oVHR5SW50ZW50LlRUWV9FTkFCTEVEX0NIQU5HRV9BQ1RJT04pOwotICAgICAgICBtQ29udGV4dC5yZWdpc3RlclJlY2VpdmVyKG1JbnRlbnRSZWNlaXZlciwgZmlsdGVyLCBudWxsLCBtSGFuZGxlcik7Ci0KLSAgICAgICAgLy8gbG9hZCBjb25maWcgdG8gZGV0ZXJtaW5lIGlmIHRvIGRpc3Rpbmd1aXNoIEhzcGEgZGF0YSBpY29uCi0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBtSHNwYURhdGFEaXN0aW5ndWlzaGFibGUgPSBtQ29udGV4dC5nZXRSZXNvdXJjZXMoKS5nZXRCb29sZWFuKAotICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmJvb2wuY29uZmlnX2hzcGFfZGF0YV9kaXN0aW5ndWlzaGFibGUpOwotICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgbUhzcGFEYXRhRGlzdGluZ3Vpc2hhYmxlID0gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwdWJsaWMgc3RhdGljIHZvaWQgaW5zdGFsbEljb25zKENvbnRleHQgY29udGV4dCwgU3RhdHVzQmFyU2VydmljZSBzZXJ2aWNlKSB7Ci0gICAgICAgIHNJbnN0YW5jZSA9IG5ldyBTdGF0dXNCYXJQb2xpY3koY29udGV4dCwgc2VydmljZSk7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBmaW5hbCBDaGFyU2VxdWVuY2UgZ2V0U21hbGxUaW1lKCkgewotICAgICAgICBib29sZWFuIGIyNCA9IERhdGVGb3JtYXQuaXMyNEhvdXJGb3JtYXQobUNvbnRleHQpOwotICAgICAgICBpbnQgcmVzOwotCi0gICAgICAgIGlmIChiMjQpIHsKLSAgICAgICAgICAgIHJlcyA9IFIuc3RyaW5nLnR3ZW50eV9mb3VyX2hvdXJfdGltZV9mb3JtYXQ7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXMgPSBSLnN0cmluZy50d2VsdmVfaG91cl90aW1lX2Zvcm1hdDsKLSAgICAgICAgfQotCi0gICAgICAgIGZpbmFsIGNoYXIgTUFHSUMxID0gJ1x1RUYwMCc7Ci0gICAgICAgIGZpbmFsIGNoYXIgTUFHSUMyID0gJ1x1RUYwMSc7Ci0KLSAgICAgICAgU2ltcGxlRGF0ZUZvcm1hdCBzZGY7Ci0gICAgICAgIFN0cmluZyBmb3JtYXQgPSBtQ29udGV4dC5nZXRTdHJpbmcocmVzKTsKLSAgICAgICAgaWYgKCFmb3JtYXQuZXF1YWxzKG1DbG9ja0Zvcm1hdFN0cmluZykpIHsKLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgKiBTZWFyY2ggZm9yIGFuIHVucXVvdGVkICJhIiBpbiB0aGUgZm9ybWF0IHN0cmluZywgc28gd2UgY2FuCi0gICAgICAgICAgICAgKiBhZGQgZHVtbXkgY2hhcmFjdGVycyBhcm91bmQgaXQgdG8gbGV0IHVzIGZpbmQgaXQgYWdhaW4gYWZ0ZXIKLSAgICAgICAgICAgICAqIGZvcm1hdHRpbmcgYW5kIGNoYW5nZSBpdHMgc2l6ZS4KLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgaW50IGEgPSAtMTsKLSAgICAgICAgICAgIGJvb2xlYW4gcXVvdGVkID0gZmFsc2U7Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGZvcm1hdC5sZW5ndGgoKTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgY2hhciBjID0gZm9ybWF0LmNoYXJBdChpKTsKLQotICAgICAgICAgICAgICAgIGlmIChjID09ICdcJycpIHsKLSAgICAgICAgICAgICAgICAgICAgcXVvdGVkID0gIXF1b3RlZDsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBpZiAoIXF1b3RlZCAmJiBjID09ICdhJykgewotICAgICAgICAgICAgICAgICAgICBhID0gaTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoYSA+PSAwKSB7Ci0gICAgICAgICAgICAgICAgLy8gTW92ZSBhIGJhY2sgc28gYW55IHdoaXRlc3BhY2UgYmVmb3JlIHRoZSBBTS9QTSBpcyBhbHNvIGluIHRoZSBhbHRlcm5hdGUgc2l6ZS4KLSAgICAgICAgICAgICAgICBmaW5hbCBpbnQgYiA9IGE7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKGEgPiAwICYmIENoYXJhY3Rlci5pc1doaXRlc3BhY2UoZm9ybWF0LmNoYXJBdChhLTEpKSkgewotICAgICAgICAgICAgICAgICAgICBhLS07Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGZvcm1hdCA9IGZvcm1hdC5zdWJzdHJpbmcoMCwgYSkgKyBNQUdJQzEgKyBmb3JtYXQuc3Vic3RyaW5nKGEsIGIpCi0gICAgICAgICAgICAgICAgICAgICAgICArICJhIiArIE1BR0lDMiArIGZvcm1hdC5zdWJzdHJpbmcoYiArIDEpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBtQ2xvY2tGb3JtYXQgPSBzZGYgPSBuZXcgU2ltcGxlRGF0ZUZvcm1hdChmb3JtYXQpOwotICAgICAgICAgICAgbUNsb2NrRm9ybWF0U3RyaW5nID0gZm9ybWF0OwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc2RmID0gbUNsb2NrRm9ybWF0OwotICAgICAgICB9Ci0gICAgICAgIFN0cmluZyByZXN1bHQgPSBzZGYuZm9ybWF0KG1DYWxlbmRhci5nZXRUaW1lKCkpOwotCi0gICAgICAgIGludCBtYWdpYzEgPSByZXN1bHQuaW5kZXhPZihNQUdJQzEpOwotICAgICAgICBpbnQgbWFnaWMyID0gcmVzdWx0LmluZGV4T2YoTUFHSUMyKTsKLQotICAgICAgICBpZiAobWFnaWMxID49IDAgJiYgbWFnaWMyID4gbWFnaWMxKSB7Ci0gICAgICAgICAgICBTcGFubmFibGVTdHJpbmdCdWlsZGVyIGZvcm1hdHRlZCA9IG5ldyBTcGFubmFibGVTdHJpbmdCdWlsZGVyKHJlc3VsdCk7Ci0KLSAgICAgICAgICAgIGZvcm1hdHRlZC5zZXRTcGFuKG5ldyBSZWxhdGl2ZVNpemVTcGFuKDAuN2YpLCBtYWdpYzEsIG1hZ2ljMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNwYW5uYWJsZS5TUEFOX0VYQ0xVU0lWRV9JTkNMVVNJVkUpOwotCi0gICAgICAgICAgICBmb3JtYXR0ZWQuZGVsZXRlKG1hZ2ljMiwgbWFnaWMyICsgMSk7Ci0gICAgICAgICAgICBmb3JtYXR0ZWQuZGVsZXRlKG1hZ2ljMSwgbWFnaWMxICsgMSk7Ci0KLSAgICAgICAgICAgIHJldHVybiBmb3JtYXR0ZWQ7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBmaW5hbCB2b2lkIHVwZGF0ZUNsb2NrKCkgewotICAgICAgICBtQ2FsZW5kYXIuc2V0VGltZUluTWlsbGlzKFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpKTsKLSAgICAgICAgbUNsb2NrRGF0YS50ZXh0ID0gZ2V0U21hbGxUaW1lKCk7Ci0gICAgICAgIG1TZXJ2aWNlLnVwZGF0ZUljb24obUNsb2NrSWNvbiwgbUNsb2NrRGF0YSwgbnVsbCk7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBmaW5hbCB2b2lkIHVwZGF0ZUFsYXJtKEludGVudCBpbnRlbnQpIHsKLSAgICAgICAgYm9vbGVhbiBhbGFybVNldCA9IGludGVudC5nZXRCb29sZWFuRXh0cmEoImFsYXJtU2V0IiwgZmFsc2UpOwotICAgICAgICBtU2VydmljZS5zZXRJY29uVmlzaWJpbGl0eShtQWxhcm1DbG9ja0ljb24sIGFsYXJtU2V0KTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIGZpbmFsIHZvaWQgdXBkYXRlU3luY1N0YXRlKEludGVudCBpbnRlbnQpIHsKLSAgICAgICAgYm9vbGVhbiBpc0FjdGl2ZSA9IGludGVudC5nZXRCb29sZWFuRXh0cmEoImFjdGl2ZSIsIGZhbHNlKTsKLSAgICAgICAgYm9vbGVhbiBpc0ZhaWxpbmcgPSBpbnRlbnQuZ2V0Qm9vbGVhbkV4dHJhKCJmYWlsaW5nIiwgZmFsc2UpOwotICAgICAgICBtU2VydmljZS5zZXRJY29uVmlzaWJpbGl0eShtU3luY0FjdGl2ZUljb24sIGlzQWN0aXZlKTsKLSAgICAgICAgLy8gRG9uJ3QgZGlzcGxheSBzeW5jIGZhaWxpbmcgaWNvbjogQlVHIDEyOTc5NjMgU2V0IHN5bmMgZXJyb3IgdGltZW91dCB0byAibmV2ZXIiCi0gICAgICAgIC8vbVNlcnZpY2Uuc2V0SWNvblZpc2liaWxpdHkobVN5bmNGYWlsaW5nSWNvbiwgaXNGYWlsaW5nICYmICFpc0FjdGl2ZSk7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBmaW5hbCB2b2lkIHVwZGF0ZUJhdHRlcnkoSW50ZW50IGludGVudCkgewotICAgICAgICBtQmF0dGVyeURhdGEuaWNvbklkID0gaW50ZW50LmdldEludEV4dHJhKCJpY29uLXNtYWxsIiwgMCk7Ci0gICAgICAgIG1CYXR0ZXJ5RGF0YS5pY29uTGV2ZWwgPSBpbnRlbnQuZ2V0SW50RXh0cmEoImxldmVsIiwgMCk7Ci0gICAgICAgIG1TZXJ2aWNlLnVwZGF0ZUljb24obUJhdHRlcnlJY29uLCBtQmF0dGVyeURhdGEsIG51bGwpOwotCi0gICAgICAgIGJvb2xlYW4gcGx1Z2dlZCA9IGludGVudC5nZXRJbnRFeHRyYSgicGx1Z2dlZCIsIDApICE9IDA7Ci0gICAgICAgIGludCBsZXZlbCA9IGludGVudC5nZXRJbnRFeHRyYSgibGV2ZWwiLCAtMSk7Ci0gICAgICAgIGlmIChmYWxzZSkgewotICAgICAgICAgICAgU2xvZy5kKFRBRywgInVwZGF0ZUJhdHRlcnkgbGV2ZWw9IiArIGxldmVsCi0gICAgICAgICAgICAgICAgICAgICsgIiBwbHVnZ2VkPSIgKyBwbHVnZ2VkCi0gICAgICAgICAgICAgICAgICAgICsgIiBtQmF0dGVyeVBsdWdnZWQ9IiArIG1CYXR0ZXJ5UGx1Z2dlZAotICAgICAgICAgICAgICAgICAgICArICIgbUJhdHRlcnlMZXZlbD0iICsgbUJhdHRlcnlMZXZlbAotICAgICAgICAgICAgICAgICAgICArICIgbUJhdHRlcnlGaXJzdD0iICsgbUJhdHRlcnlGaXJzdCk7Ci0gICAgICAgIH0KLQotICAgICAgICBib29sZWFuIG9sZFBsdWdnZWQgPSBtQmF0dGVyeVBsdWdnZWQ7Ci0KLSAgICAgICAgbUJhdHRlcnlQbHVnZ2VkID0gcGx1Z2dlZDsKLSAgICAgICAgbUJhdHRlcnlMZXZlbCA9IGxldmVsOwotCi0gICAgICAgIGlmIChtQmF0dGVyeUZpcnN0KSB7Ci0gICAgICAgICAgICBtQmF0dGVyeUZpcnN0ID0gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgLyoKLSAgICAgICAgICogTm8gbG9uZ2VyIHNob3dpbmcgdGhlIGJhdHRlcnkgdmlldyBiZWNhdXNlIGl0IGRyYXdzIGF0dGVudGlvbiBhd2F5Ci0gICAgICAgICAqIGZyb20gdGhlIFVTQiBzdG9yYWdlIG5vdGlmaWNhdGlvbi4gV2UgY291bGQgc3RpbGwgc2hvdyBpdCB3aGVuCi0gICAgICAgICAqIGNvbm5lY3RlZCB0byBhIGJyaWNrLCBidXQgdGhhdCBjb3VsZCBsZWFkIHRvIHRoZSB1c2VyIGludG8gdGhpbmtpbmcKLSAgICAgICAgICogdGhlIGRldmljZSBkb2VzIG5vdCBjaGFyZ2Ugd2hlbiBwbHVnZ2VkIGludG8gVVNCIChzaW5jZSBoZS9zaGUgd291bGQKLSAgICAgICAgICogbm90IHNlZSB0aGUgc2FtZSBiYXR0ZXJ5IHNjcmVlbiBvbiBVU0IgYXMgaGUgc2VlcyBvbiBicmljaykuCi0gICAgICAgICAqLwotICAgICAgICAvKiBlbHNlIHsKLSAgICAgICAgICAgIGlmIChwbHVnZ2VkICYmICFvbGRQbHVnZ2VkKSB7Ci0gICAgICAgICAgICAgICAgc2hvd0JhdHRlcnlWaWV3KCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgKi8KLSAgICAgICAgaWYgKGZhbHNlKSB7Ci0gICAgICAgICAgICBTbG9nLmQoVEFHLCAicGx1Z2dlZD0iICsgcGx1Z2dlZCArICIgb2xkUGx1Z2dlZD0iICsgb2xkUGx1Z2dlZCArICIgbGV2ZWw9IiArIGxldmVsKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHByaXZhdGUgdm9pZCBvbkJhdHRlcnlMb3coSW50ZW50IGludGVudCkgewotICAgICAgICBpZiAoU0hPV19MT1dfQkFUVEVSWV9XQVJOSU5HKSB7Ci0gICAgICAgICAgICBpZiAoZmFsc2UpIHsKLSAgICAgICAgICAgICAgICBTbG9nLmQoVEFHLCAibVBob25lU3RhdGU9IiArIG1QaG9uZVN0YXRlCi0gICAgICAgICAgICAgICAgICAgICAgKyAiIG1Mb3dCYXR0ZXJ5RGlhbG9nPSIgKyBtTG93QmF0dGVyeURpYWxvZwotICAgICAgICAgICAgICAgICAgICAgICsgIiBtQmF0dGVyeVNob3dMb3dPbkVuZENhbGw9IiArIG1CYXR0ZXJ5U2hvd0xvd09uRW5kQ2FsbCk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIGlmIChTSE9XX0JBVFRFUllfV0FSTklOR1NfSU5fQ0FMTCB8fCBtUGhvbmVTdGF0ZSA9PSBUZWxlcGhvbnlNYW5hZ2VyLkNBTExfU1RBVEVfSURMRSkgewotICAgICAgICAgICAgICAgIHNob3dMb3dCYXR0ZXJ5V2FybmluZygpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtQmF0dGVyeVNob3dMb3dPbkVuZENhbGwgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSB2b2lkIG9uQmF0dGVyeU9rYXkoSW50ZW50IGludGVudCkgewotICAgICAgICBpZiAobUxvd0JhdHRlcnlEaWFsb2cgIT0gbnVsbAotICAgICAgICAgICAgICAgICYmIFNIT1dfTE9XX0JBVFRFUllfV0FSTklORykgewotICAgICAgICAgICAgbUxvd0JhdHRlcnlEaWFsb2cuZGlzbWlzcygpOwotICAgICAgICAgICAgbUJhdHRlcnlTaG93TG93T25FbmRDYWxsID0gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwcml2YXRlIHZvaWQgc2hvd0JhdHRlcnlWaWV3KCkgewotICAgICAgICBjbG9zZUxhc3RCYXR0ZXJ5VmlldygpOwotICAgICAgICBpZiAobUxvd0JhdHRlcnlEaWFsb2cgIT0gbnVsbCkgewotICAgICAgICAgICAgbUxvd0JhdHRlcnlEaWFsb2cuZGlzbWlzcygpOwotICAgICAgICB9Ci0KLSAgICAgICAgaW50IGxldmVsID0gbUJhdHRlcnlMZXZlbDsKLQotICAgICAgICBWaWV3IHYgPSBWaWV3LmluZmxhdGUobUNvbnRleHQsIGNvbS5hbmRyb2lkLmludGVybmFsLlIubGF5b3V0LmJhdHRlcnlfc3RhdHVzLCBudWxsKTsKLSAgICAgICAgbUJhdHRlcnlWaWV3ID0gdjsKLSAgICAgICAgaW50IHBpeGVsRm9ybWF0ID0gUGl4ZWxGb3JtYXQuVFJBTlNMVUNFTlQ7Ci0gICAgICAgIERyYXdhYmxlIGJnID0gdi5nZXRCYWNrZ3JvdW5kKCk7Ci0gICAgICAgIGlmIChiZyAhPSBudWxsKSB7Ci0gICAgICAgICAgICBwaXhlbEZvcm1hdCA9IGJnLmdldE9wYWNpdHkoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGludCBmbGFncyA9ICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX05PVF9GT0NVU0FCTEUKLSAgICAgICAgICAgICAgICB8IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfTk9UX1RPVUNIQUJMRQotICAgICAgICAgICAgICAgIHwgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19ESU1fQkVISU5EOwotCi0gICAgICAgIGlmICghbUNvbnRleHQuZ2V0UmVzb3VyY2VzKCkuZ2V0Qm9vbGVhbigKLSAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmJvb2wuY29uZmlnX3NmX3Nsb3dCbHVyKSkgewotICAgICAgICAgICAgZmxhZ3MgfD0gV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19CTFVSX0JFSElORDsKLSAgICAgICAgfQotCi0gICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIGxwID0gbmV3IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zKAotICAgICAgICAgICAgICAgIFZpZXdHcm91cC5MYXlvdXRQYXJhbXMuV1JBUF9DT05URU5ULAotICAgICAgICAgICAgICAgIFZpZXdHcm91cC5MYXlvdXRQYXJhbXMuV1JBUF9DT05URU5ULAotICAgICAgICAgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLlRZUEVfVE9BU1QsCi0gICAgICAgICAgICAgICAgZmxhZ3MsIHBpeGVsRm9ybWF0KTsKLQotICAgICAgICAvLyBHZXQgdGhlIGRpbSBhbW91bnQgZnJvbSB0aGUgdGhlbWUKLSAgICAgICAgVHlwZWRBcnJheSBhID0gbUNvbnRleHQub2J0YWluU3R5bGVkQXR0cmlidXRlcygKLSAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlYWJsZS5UaGVtZSk7Ci0gICAgICAgIGxwLmRpbUFtb3VudCA9IGEuZ2V0RmxvYXQoYW5kcm9pZC5SLnN0eWxlYWJsZS5UaGVtZV9iYWNrZ3JvdW5kRGltQW1vdW50LCAwLjVmKTsKLSAgICAgICAgYS5yZWN5Y2xlKCk7Ci0KLSAgICAgICAgbHAuc2V0VGl0bGUoIkJhdHRlcnkiKTsKLQotICAgICAgICBUZXh0VmlldyBsZXZlbFRleHRWaWV3ID0gKFRleHRWaWV3KXYuZmluZFZpZXdCeUlkKGNvbS5hbmRyb2lkLmludGVybmFsLlIuaWQubGV2ZWxfcGVyY2VudCk7Ci0gICAgICAgIGxldmVsVGV4dFZpZXcuc2V0VGV4dChtQ29udGV4dC5nZXRTdHJpbmcoCi0gICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLmJhdHRlcnlfc3RhdHVzX3RleHRfcGVyY2VudF9mb3JtYXQsIGxldmVsKSk7Ci0KLSAgICAgICAgc2V0QmF0dGVyeUxldmVsKHYsIGNvbS5hbmRyb2lkLmludGVybmFsLlIuaWQuc3BhY2VyLCAxMDAtbGV2ZWwsIDAsIDApOwotICAgICAgICBzZXRCYXR0ZXJ5TGV2ZWwodiwgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5pZC5sZXZlbCwgbGV2ZWwsCi0gICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5iYXR0ZXJ5X2NoYXJnZV9maWxsLCBsZXZlbCk7Ci0KLSAgICAgICAgV2luZG93TWFuYWdlckltcGwuZ2V0RGVmYXVsdCgpLmFkZFZpZXcodiwgbHApOwotCi0gICAgICAgIHNjaGVkdWxlQ2xvc2VCYXR0ZXJ5VmlldygpOwotICAgIH0KLQotICAgIHByaXZhdGUgdm9pZCBzZXRCYXR0ZXJ5TGV2ZWwoVmlldyBwYXJlbnQsIGludCBpZCwgaW50IGhlaWdodCwgaW50IGJhY2tncm91bmQsIGludCBsZXZlbCkgewotICAgICAgICBJbWFnZVZpZXcgdiA9IChJbWFnZVZpZXcpcGFyZW50LmZpbmRWaWV3QnlJZChpZCk7Ci0gICAgICAgIExpbmVhckxheW91dC5MYXlvdXRQYXJhbXMgbHAgPSAoTGluZWFyTGF5b3V0LkxheW91dFBhcmFtcyl2LmdldExheW91dFBhcmFtcygpOwotICAgICAgICBscC53ZWlnaHQgPSBoZWlnaHQ7Ci0gICAgICAgIGlmIChiYWNrZ3JvdW5kICE9IDApIHsKLSAgICAgICAgICAgIHYuc2V0QmFja2dyb3VuZFJlc291cmNlKGJhY2tncm91bmQpOwotICAgICAgICAgICAgRHJhd2FibGUgYmtnID0gdi5nZXRCYWNrZ3JvdW5kKCk7Ci0gICAgICAgICAgICBia2cuc2V0TGV2ZWwobGV2ZWwpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSB2b2lkIHNob3dMb3dCYXR0ZXJ5V2FybmluZygpIHsKLSAgICAgICAgY2xvc2VMYXN0QmF0dGVyeVZpZXcoKTsKLQotICAgICAgICAvLyBTaG93IGV4YWN0IGJhdHRlcnkgbGV2ZWwuCi0gICAgICAgIENoYXJTZXF1ZW5jZSBsZXZlbFRleHQgPSBtQ29udGV4dC5nZXRTdHJpbmcoCi0gICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLmJhdHRlcnlfbG93X3BlcmNlbnRfZm9ybWF0LCBtQmF0dGVyeUxldmVsKTsKLQotICAgICAgICBpZiAobUJhdHRlcnlMZXZlbFRleHRWaWV3ICE9IG51bGwpIHsKLSAgICAgICAgICAgIG1CYXR0ZXJ5TGV2ZWxUZXh0Vmlldy5zZXRUZXh0KGxldmVsVGV4dCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBWaWV3IHYgPSBWaWV3LmluZmxhdGUobUNvbnRleHQsIGNvbS5hbmRyb2lkLmludGVybmFsLlIubGF5b3V0LmJhdHRlcnlfbG93LCBudWxsKTsKLSAgICAgICAgICAgIG1CYXR0ZXJ5TGV2ZWxUZXh0Vmlldz0oVGV4dFZpZXcpdi5maW5kVmlld0J5SWQoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5pZC5sZXZlbF9wZXJjZW50KTsKLQotICAgICAgICAgICAgbUJhdHRlcnlMZXZlbFRleHRWaWV3LnNldFRleHQobGV2ZWxUZXh0KTsKLQotICAgICAgICAgICAgQWxlcnREaWFsb2cuQnVpbGRlciBiID0gbmV3IEFsZXJ0RGlhbG9nLkJ1aWxkZXIobUNvbnRleHQpOwotICAgICAgICAgICAgICAgIGIuc2V0Q2FuY2VsYWJsZSh0cnVlKTsKLSAgICAgICAgICAgICAgICBiLnNldFRpdGxlKGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLmJhdHRlcnlfbG93X3RpdGxlKTsKLSAgICAgICAgICAgICAgICBiLnNldFZpZXcodik7Ci0gICAgICAgICAgICAgICAgYi5zZXRJY29uKGFuZHJvaWQuUi5kcmF3YWJsZS5pY19kaWFsb2dfYWxlcnQpOwotICAgICAgICAgICAgICAgIGIuc2V0UG9zaXRpdmVCdXR0b24oYW5kcm9pZC5SLnN0cmluZy5vaywgbnVsbCk7Ci0KLSAgICAgICAgICAgICAgICBmaW5hbCBJbnRlbnQgaW50ZW50ID0gbmV3IEludGVudChJbnRlbnQuQUNUSU9OX1BPV0VSX1VTQUdFX1NVTU1BUlkpOwotICAgICAgICAgICAgICAgIGludGVudC5zZXRGbGFncyhJbnRlbnQuRkxBR19BQ1RJVklUWV9ORVdfVEFTSwotICAgICAgICAgICAgICAgICAgICAgICAgfCBJbnRlbnQuRkxBR19BQ1RJVklUWV9NVUxUSVBMRV9UQVNLCi0gICAgICAgICAgICAgICAgICAgICAgICB8IEludGVudC5GTEFHX0FDVElWSVRZX0VYQ0xVREVfRlJPTV9SRUNFTlRTCi0gICAgICAgICAgICAgICAgICAgICAgICB8IEludGVudC5GTEFHX0FDVElWSVRZX05PX0hJU1RPUlkpOwotICAgICAgICAgICAgICAgIGlmIChpbnRlbnQucmVzb2x2ZUFjdGl2aXR5KG1Db250ZXh0LmdldFBhY2thZ2VNYW5hZ2VyKCkpICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgYi5zZXROZWdhdGl2ZUJ1dHRvbihjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy5iYXR0ZXJ5X2xvd193aHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IERpYWxvZ0ludGVyZmFjZS5PbkNsaWNrTGlzdGVuZXIoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCBvbkNsaWNrKERpYWxvZ0ludGVyZmFjZSBkaWFsb2csIGludCB3aGljaCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1Db250ZXh0LnN0YXJ0QWN0aXZpdHkoaW50ZW50KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobUxvd0JhdHRlcnlEaWFsb2cgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtTG93QmF0dGVyeURpYWxvZy5kaXNtaXNzKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIEFsZXJ0RGlhbG9nIGQgPSBiLmNyZWF0ZSgpOwotICAgICAgICAgICAgZC5zZXRPbkRpc21pc3NMaXN0ZW5lcihtTG93QmF0dGVyeUxpc3RlbmVyKTsKLSAgICAgICAgICAgIGQuZ2V0V2luZG93KCkuc2V0VHlwZShXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5UWVBFX1NZU1RFTV9BTEVSVCk7Ci0gICAgICAgICAgICBkLnNob3coKTsKLSAgICAgICAgICAgIG1Mb3dCYXR0ZXJ5RGlhbG9nID0gZDsKLSAgICAgICAgfQotCi0gICAgICAgIGZpbmFsIENvbnRlbnRSZXNvbHZlciBjciA9IG1Db250ZXh0LmdldENvbnRlbnRSZXNvbHZlcigpOwotICAgICAgICBpZiAoU2V0dGluZ3MuU3lzdGVtLmdldEludChjciwKLSAgICAgICAgICAgICAgICBTZXR0aW5ncy5TeXN0ZW0uUE9XRVJfU09VTkRTX0VOQUJMRUQsIDEpID09IDEpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZpbmFsIFN0cmluZyBzb3VuZFBhdGggPSBTZXR0aW5ncy5TeXN0ZW0uZ2V0U3RyaW5nKGNyLAotICAgICAgICAgICAgICAgIFNldHRpbmdzLlN5c3RlbS5MT1dfQkFUVEVSWV9TT1VORCk7Ci0gICAgICAgICAgICBpZiAoc291bmRQYXRoICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBmaW5hbCBVcmkgc291bmRVcmkgPSBVcmkucGFyc2UoImZpbGU6Ly8iICsgc291bmRQYXRoKTsKLSAgICAgICAgICAgICAgICBpZiAoc291bmRVcmkgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICBmaW5hbCBSaW5ndG9uZSBzZnggPSBSaW5ndG9uZU1hbmFnZXIuZ2V0UmluZ3RvbmUobUNvbnRleHQsIHNvdW5kVXJpKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHNmeCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZnguc2V0U3RyZWFtVHlwZShBdWRpb01hbmFnZXIuU1RSRUFNX1NZU1RFTSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZngucGxheSgpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBmaW5hbCB2b2lkIHVwZGF0ZUNhbGxTdGF0ZShpbnQgc3RhdGUpIHsKLSAgICAgICAgbVBob25lU3RhdGUgPSBzdGF0ZTsKLSAgICAgICAgaWYgKGZhbHNlKSB7Ci0gICAgICAgICAgICBTbG9nLmQoVEFHLCAibVBob25lU3RhdGU9IiArIG1QaG9uZVN0YXRlCi0gICAgICAgICAgICAgICAgICAgICsgIiBtTG93QmF0dGVyeURpYWxvZz0iICsgbUxvd0JhdHRlcnlEaWFsb2cKLSAgICAgICAgICAgICAgICAgICAgKyAiIG1CYXR0ZXJ5U2hvd0xvd09uRW5kQ2FsbD0iICsgbUJhdHRlcnlTaG93TG93T25FbmRDYWxsKTsKLSAgICAgICAgfQotICAgICAgICBpZiAobVBob25lU3RhdGUgPT0gVGVsZXBob255TWFuYWdlci5DQUxMX1NUQVRFX0lETEUpIHsKLSAgICAgICAgICAgIGlmIChtQmF0dGVyeVNob3dMb3dPbkVuZENhbGwpIHsKLSAgICAgICAgICAgICAgICBpZiAoIW1CYXR0ZXJ5UGx1Z2dlZCkgewotICAgICAgICAgICAgICAgICAgICBzaG93TG93QmF0dGVyeVdhcm5pbmcoKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbUJhdHRlcnlTaG93TG93T25FbmRDYWxsID0gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAobUxvd0JhdHRlcnlEaWFsb2cgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIG1Mb3dCYXR0ZXJ5RGlhbG9nLmRpc21pc3MoKTsKLSAgICAgICAgICAgICAgICBtQmF0dGVyeVNob3dMb3dPbkVuZENhbGwgPSB0cnVlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBEaWFsb2dJbnRlcmZhY2UuT25EaXNtaXNzTGlzdGVuZXIgbUxvd0JhdHRlcnlMaXN0ZW5lcgotICAgICAgICAgICAgPSBuZXcgRGlhbG9nSW50ZXJmYWNlLk9uRGlzbWlzc0xpc3RlbmVyKCkgewotICAgICAgICBwdWJsaWMgdm9pZCBvbkRpc21pc3MoRGlhbG9nSW50ZXJmYWNlIGRpYWxvZykgewotICAgICAgICAgICAgbUxvd0JhdHRlcnlEaWFsb2cgPSBudWxsOwotICAgICAgICAgICAgbUJhdHRlcnlMZXZlbFRleHRWaWV3ID0gbnVsbDsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICBwcml2YXRlIHZvaWQgc2NoZWR1bGVDbG9zZUJhdHRlcnlWaWV3KCkgewotICAgICAgICBNZXNzYWdlIG0gPSBtSGFuZGxlci5vYnRhaW5NZXNzYWdlKEVWRU5UX0JBVFRFUllfQ0xPU0UpOwotICAgICAgICBtLmFyZzEgPSAoKyttQmF0dGVyeVZpZXdTZXF1ZW5jZSk7Ci0gICAgICAgIG1IYW5kbGVyLnNlbmRNZXNzYWdlRGVsYXllZChtLCAzMDAwKTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIHZvaWQgY2xvc2VMYXN0QmF0dGVyeVZpZXcoKSB7Ci0gICAgICAgIGlmIChtQmF0dGVyeVZpZXcgIT0gbnVsbCkgewotICAgICAgICAgICAgLy9tQmF0dGVyeVZpZXcuZGVidWcoKTsKLSAgICAgICAgICAgIFdpbmRvd01hbmFnZXJJbXBsLmdldERlZmF1bHQoKS5yZW1vdmVWaWV3KG1CYXR0ZXJ5Vmlldyk7Ci0gICAgICAgICAgICBtQmF0dGVyeVZpZXcgPSBudWxsOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBQaG9uZVN0YXRlTGlzdGVuZXIgbVBob25lU3RhdGVMaXN0ZW5lciA9IG5ldyBQaG9uZVN0YXRlTGlzdGVuZXIoKSB7Ci0gICAgICAgIEBPdmVycmlkZQotICAgICAgICBwdWJsaWMgdm9pZCBvblNpZ25hbFN0cmVuZ3Roc0NoYW5nZWQoU2lnbmFsU3RyZW5ndGggc2lnbmFsU3RyZW5ndGgpIHsKLSAgICAgICAgICAgIG1TaWduYWxTdHJlbmd0aCA9IHNpZ25hbFN0cmVuZ3RoOwotICAgICAgICAgICAgdXBkYXRlU2lnbmFsU3RyZW5ndGgoKTsKLSAgICAgICAgfQotCi0gICAgICAgIEBPdmVycmlkZQotICAgICAgICBwdWJsaWMgdm9pZCBvblNlcnZpY2VTdGF0ZUNoYW5nZWQoU2VydmljZVN0YXRlIHN0YXRlKSB7Ci0gICAgICAgICAgICBtU2VydmljZVN0YXRlID0gc3RhdGU7Ci0gICAgICAgICAgICB1cGRhdGVTaWduYWxTdHJlbmd0aCgpOwotICAgICAgICAgICAgdXBkYXRlQ2RtYVJvYW1pbmdJY29uKHN0YXRlKTsKLSAgICAgICAgICAgIHVwZGF0ZURhdGFJY29uKCk7Ci0gICAgICAgIH0KLQotICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIHZvaWQgb25DYWxsU3RhdGVDaGFuZ2VkKGludCBzdGF0ZSwgU3RyaW5nIGluY29taW5nTnVtYmVyKSB7Ci0gICAgICAgICAgICB1cGRhdGVDYWxsU3RhdGUoc3RhdGUpOwotICAgICAgICAgICAgLy8gSW4gY2RtYSwgaWYgYSB2b2ljZSBjYWxsIGlzIG1hZGUsIFJTU0kgc2hvdWxkIHN3aXRjaCB0byAxeC4KLSAgICAgICAgICAgIGlmIChpc0NkbWEoKSkgewotICAgICAgICAgICAgICAgIHVwZGF0ZVNpZ25hbFN0cmVuZ3RoKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIHZvaWQgb25EYXRhQ29ubmVjdGlvblN0YXRlQ2hhbmdlZChpbnQgc3RhdGUsIGludCBuZXR3b3JrVHlwZSkgewotICAgICAgICAgICAgbURhdGFTdGF0ZSA9IHN0YXRlOwotICAgICAgICAgICAgdXBkYXRlRGF0YU5ldFR5cGUobmV0d29ya1R5cGUpOwotICAgICAgICAgICAgdXBkYXRlRGF0YUljb24oKTsKLSAgICAgICAgfQotCi0gICAgICAgIEBPdmVycmlkZQotICAgICAgICBwdWJsaWMgdm9pZCBvbkRhdGFBY3Rpdml0eShpbnQgZGlyZWN0aW9uKSB7Ci0gICAgICAgICAgICBtRGF0YUFjdGl2aXR5ID0gZGlyZWN0aW9uOwotICAgICAgICAgICAgdXBkYXRlRGF0YUljb24oKTsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICBwcml2YXRlIGZpbmFsIHZvaWQgdXBkYXRlU2ltU3RhdGUoSW50ZW50IGludGVudCkgewotICAgICAgICBTdHJpbmcgc3RhdGVFeHRyYSA9IGludGVudC5nZXRTdHJpbmdFeHRyYShJY2NDYXJkLklOVEVOVF9LRVlfSUNDX1NUQVRFKTsKLSAgICAgICAgaWYgKEljY0NhcmQuSU5URU5UX1ZBTFVFX0lDQ19BQlNFTlQuZXF1YWxzKHN0YXRlRXh0cmEpKSB7Ci0gICAgICAgICAgICBtU2ltU3RhdGUgPSBJY2NDYXJkLlN0YXRlLkFCU0VOVDsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChJY2NDYXJkLklOVEVOVF9WQUxVRV9JQ0NfUkVBRFkuZXF1YWxzKHN0YXRlRXh0cmEpKSB7Ci0gICAgICAgICAgICBtU2ltU3RhdGUgPSBJY2NDYXJkLlN0YXRlLlJFQURZOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKEljY0NhcmQuSU5URU5UX1ZBTFVFX0lDQ19MT0NLRUQuZXF1YWxzKHN0YXRlRXh0cmEpKSB7Ci0gICAgICAgICAgICBmaW5hbCBTdHJpbmcgbG9ja2VkUmVhc29uID0gaW50ZW50LmdldFN0cmluZ0V4dHJhKEljY0NhcmQuSU5URU5UX0tFWV9MT0NLRURfUkVBU09OKTsKLSAgICAgICAgICAgIGlmIChJY2NDYXJkLklOVEVOVF9WQUxVRV9MT0NLRURfT05fUElOLmVxdWFscyhsb2NrZWRSZWFzb24pKSB7Ci0gICAgICAgICAgICAgICAgbVNpbVN0YXRlID0gSWNjQ2FyZC5TdGF0ZS5QSU5fUkVRVUlSRUQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChJY2NDYXJkLklOVEVOVF9WQUxVRV9MT0NLRURfT05fUFVLLmVxdWFscyhsb2NrZWRSZWFzb24pKSB7Ci0gICAgICAgICAgICAgICAgbVNpbVN0YXRlID0gSWNjQ2FyZC5TdGF0ZS5QVUtfUkVRVUlSRUQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBtU2ltU3RhdGUgPSBJY2NDYXJkLlN0YXRlLk5FVFdPUktfTE9DS0VEOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbVNpbVN0YXRlID0gSWNjQ2FyZC5TdGF0ZS5VTktOT1dOOwotICAgICAgICB9Ci0gICAgICAgIHVwZGF0ZURhdGFJY29uKCk7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBib29sZWFuIGlzQ2RtYSgpIHsKLSAgICAgICAgcmV0dXJuIChtU2lnbmFsU3RyZW5ndGggIT0gbnVsbCkgJiYgIW1TaWduYWxTdHJlbmd0aC5pc0dzbSgpOwotICAgIH0KLQotICAgIHByaXZhdGUgYm9vbGVhbiBpc0V2ZG8oKSB7Ci0gICAgICAgIHJldHVybiAoIChtU2VydmljZVN0YXRlICE9IG51bGwpCi0gICAgICAgICAgICAgICAgICYmICgobVNlcnZpY2VTdGF0ZS5nZXRSYWRpb1RlY2hub2xvZ3koKQotICAgICAgICAgICAgICAgICAgICAgICAgPT0gU2VydmljZVN0YXRlLlJBRElPX1RFQ0hOT0xPR1lfRVZET18wKQotICAgICAgICAgICAgICAgICAgICAgfHwgKG1TZXJ2aWNlU3RhdGUuZ2V0UmFkaW9UZWNobm9sb2d5KCkKLSAgICAgICAgICAgICAgICAgICAgICAgID09IFNlcnZpY2VTdGF0ZS5SQURJT19URUNITk9MT0dZX0VWRE9fQSkpKTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIGJvb2xlYW4gaGFzU2VydmljZSgpIHsKLSAgICAgICAgaWYgKG1TZXJ2aWNlU3RhdGUgIT0gbnVsbCkgewotICAgICAgICAgICAgc3dpdGNoIChtU2VydmljZVN0YXRlLmdldFN0YXRlKCkpIHsKLSAgICAgICAgICAgICAgICBjYXNlIFNlcnZpY2VTdGF0ZS5TVEFURV9PVVRfT0ZfU0VSVklDRToKLSAgICAgICAgICAgICAgICBjYXNlIFNlcnZpY2VTdGF0ZS5TVEFURV9QT1dFUl9PRkY6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHByaXZhdGUgZmluYWwgdm9pZCB1cGRhdGVTaWduYWxTdHJlbmd0aCgpIHsKLSAgICAgICAgaW50IGljb25MZXZlbCA9IC0xOwotICAgICAgICBpbnRbXSBpY29uTGlzdDsKLQotICAgICAgICAvLyBEaXNwbGF5IHNpZ25hbCBzdHJlbmd0aCB3aGlsZSBpbiAiZW1lcmdlbmN5IGNhbGxzIG9ubHkiIG1vZGUKLSAgICAgICAgaWYgKCFoYXNTZXJ2aWNlKCkgJiYgIW1TZXJ2aWNlU3RhdGUuaXNFbWVyZ2VuY3lPbmx5KCkpIHsKLSAgICAgICAgICAgIC8vU2xvZy5kKFRBRywgInVwZGF0ZVNpZ25hbFN0cmVuZ3RoOiBubyBzZXJ2aWNlIik7Ci0gICAgICAgICAgICBpZiAoU2V0dGluZ3MuU3lzdGVtLmdldEludChtQ29udGV4dC5nZXRDb250ZW50UmVzb2x2ZXIoKSwKLSAgICAgICAgICAgICAgICAgICAgU2V0dGluZ3MuU3lzdGVtLkFJUlBMQU5FX01PREVfT04sIDApID09IDEpIHsKLSAgICAgICAgICAgICAgICBtUGhvbmVEYXRhLmljb25JZCA9IGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfc2lnbmFsX2ZsaWdodG1vZGU7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG1QaG9uZURhdGEuaWNvbklkID0gY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19zaWduYWxfbnVsbDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIG1TZXJ2aWNlLnVwZGF0ZUljb24obVBob25lSWNvbiwgbVBob25lRGF0YSwgbnVsbCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIWlzQ2RtYSgpKSB7Ci0gICAgICAgICAgICBpbnQgYXN1ID0gbVNpZ25hbFN0cmVuZ3RoLmdldEdzbVNpZ25hbFN0cmVuZ3RoKCk7Ci0KLSAgICAgICAgICAgIC8vIEFTVSByYW5nZXMgZnJvbSAwIHRvIDMxIC0gVFMgMjcuMDA3IFNlYyA4LjUKLSAgICAgICAgICAgIC8vIGFzdSA9IDAgKC0xMTNkQiBvciBsZXNzKSBpcyB2ZXJ5IHdlYWsKLSAgICAgICAgICAgIC8vIHNpZ25hbCwgaXRzIGJldHRlciB0byBzaG93IDAgYmFycyB0byB0aGUgdXNlciBpbiBzdWNoIGNhc2VzLgotICAgICAgICAgICAgLy8gYXN1ID0gOTkgaXMgYSBzcGVjaWFsIGNhc2UsIHdoZXJlIHRoZSBzaWduYWwgc3RyZW5ndGggaXMgdW5rbm93bi4KLSAgICAgICAgICAgIGlmIChhc3UgPD0gMiB8fCBhc3UgPT0gOTkpIGljb25MZXZlbCA9IDA7Ci0gICAgICAgICAgICBlbHNlIGlmIChhc3UgPj0gMTIpIGljb25MZXZlbCA9IDQ7Ci0gICAgICAgICAgICBlbHNlIGlmIChhc3UgPj0gOCkgIGljb25MZXZlbCA9IDM7Ci0gICAgICAgICAgICBlbHNlIGlmIChhc3UgPj0gNSkgIGljb25MZXZlbCA9IDI7Ci0gICAgICAgICAgICBlbHNlIGljb25MZXZlbCA9IDE7Ci0KLSAgICAgICAgICAgIC8vIFRob3VnaCBtUGhvbmUgaXMgYSBNYW5hZ2VyLCB0aGlzIGNhbGwgaXMgbm90IGFuIElQQwotICAgICAgICAgICAgaWYgKG1QaG9uZS5pc05ldHdvcmtSb2FtaW5nKCkpIHsKLSAgICAgICAgICAgICAgICBpY29uTGlzdCA9IHNTaWduYWxJbWFnZXNfcjsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWNvbkxpc3QgPSBzU2lnbmFsSW1hZ2VzOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWNvbkxpc3QgPSB0aGlzLnNTaWduYWxJbWFnZXM7Ci0KLSAgICAgICAgICAgIC8vIElmIDNHKEVWKSBhbmQgMXggbmV0d29yayBhcmUgYXZhaWxhYmxlIHRoYW4gM0cgc2hvdWxkIGJlCi0gICAgICAgICAgICAvLyBkaXNwbGF5ZWQsIGRpc3BsYXllZCBSU1NJIHNob3VsZCBiZSBmcm9tIHRoZSBFViBzaWRlLgotICAgICAgICAgICAgLy8gSWYgYSB2b2ljZSBjYWxsIGlzIG1hZGUgdGhlbiBSU1NJIHNob3VsZCBzd2l0Y2ggdG8gMXguCi0gICAgICAgICAgICBpZiAoKG1QaG9uZVN0YXRlID09IFRlbGVwaG9ueU1hbmFnZXIuQ0FMTF9TVEFURV9JRExFKSAmJiBpc0V2ZG8oKSl7Ci0gICAgICAgICAgICAgICAgaWNvbkxldmVsID0gZ2V0RXZkb0xldmVsKCk7Ci0gICAgICAgICAgICAgICAgaWYgKGZhbHNlKSB7Ci0gICAgICAgICAgICAgICAgICAgIFNsb2cuZChUQUcsICJ1c2UgRXZkbyBsZXZlbD0iICsgaWNvbkxldmVsICsgIiB0byByZXBsYWNlIENkbWEgTGV2ZWw9IiArIGdldENkbWFMZXZlbCgpKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGljb25MZXZlbCA9IGdldENkbWFMZXZlbCgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIG1QaG9uZURhdGEuaWNvbklkID0gaWNvbkxpc3RbaWNvbkxldmVsXTsKLSAgICAgICAgbVNlcnZpY2UudXBkYXRlSWNvbihtUGhvbmVJY29uLCBtUGhvbmVEYXRhLCBudWxsKTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIGludCBnZXRDZG1hTGV2ZWwoKSB7Ci0gICAgICAgIGZpbmFsIGludCBjZG1hRGJtID0gbVNpZ25hbFN0cmVuZ3RoLmdldENkbWFEYm0oKTsKLSAgICAgICAgZmluYWwgaW50IGNkbWFFY2lvID0gbVNpZ25hbFN0cmVuZ3RoLmdldENkbWFFY2lvKCk7Ci0gICAgICAgIGludCBsZXZlbERibSA9IDA7Ci0gICAgICAgIGludCBsZXZlbEVjaW8gPSAwOwotCi0gICAgICAgIGlmIChjZG1hRGJtID49IC03NSkgbGV2ZWxEYm0gPSA0OwotICAgICAgICBlbHNlIGlmIChjZG1hRGJtID49IC04NSkgbGV2ZWxEYm0gPSAzOwotICAgICAgICBlbHNlIGlmIChjZG1hRGJtID49IC05NSkgbGV2ZWxEYm0gPSAyOwotICAgICAgICBlbHNlIGlmIChjZG1hRGJtID49IC0xMDApIGxldmVsRGJtID0gMTsKLSAgICAgICAgZWxzZSBsZXZlbERibSA9IDA7Ci0KLSAgICAgICAgLy8gRWMvSW8gYXJlIGluIGRCKjEwCi0gICAgICAgIGlmIChjZG1hRWNpbyA+PSAtOTApIGxldmVsRWNpbyA9IDQ7Ci0gICAgICAgIGVsc2UgaWYgKGNkbWFFY2lvID49IC0xMTApIGxldmVsRWNpbyA9IDM7Ci0gICAgICAgIGVsc2UgaWYgKGNkbWFFY2lvID49IC0xMzApIGxldmVsRWNpbyA9IDI7Ci0gICAgICAgIGVsc2UgaWYgKGNkbWFFY2lvID49IC0xNTApIGxldmVsRWNpbyA9IDE7Ci0gICAgICAgIGVsc2UgbGV2ZWxFY2lvID0gMDsKLQotICAgICAgICByZXR1cm4gKGxldmVsRGJtIDwgbGV2ZWxFY2lvKSA/IGxldmVsRGJtIDogbGV2ZWxFY2lvOwotICAgIH0KLQotICAgIHByaXZhdGUgaW50IGdldEV2ZG9MZXZlbCgpIHsKLSAgICAgICAgaW50IGV2ZG9EYm0gPSBtU2lnbmFsU3RyZW5ndGguZ2V0RXZkb0RibSgpOwotICAgICAgICBpbnQgZXZkb1NuciA9IG1TaWduYWxTdHJlbmd0aC5nZXRFdmRvU25yKCk7Ci0gICAgICAgIGludCBsZXZlbEV2ZG9EYm0gPSAwOwotICAgICAgICBpbnQgbGV2ZWxFdmRvU25yID0gMDsKLQotICAgICAgICBpZiAoZXZkb0RibSA+PSAtNjUpIGxldmVsRXZkb0RibSA9IDQ7Ci0gICAgICAgIGVsc2UgaWYgKGV2ZG9EYm0gPj0gLTc1KSBsZXZlbEV2ZG9EYm0gPSAzOwotICAgICAgICBlbHNlIGlmIChldmRvRGJtID49IC05MCkgbGV2ZWxFdmRvRGJtID0gMjsKLSAgICAgICAgZWxzZSBpZiAoZXZkb0RibSA+PSAtMTA1KSBsZXZlbEV2ZG9EYm0gPSAxOwotICAgICAgICBlbHNlIGxldmVsRXZkb0RibSA9IDA7Ci0KLSAgICAgICAgaWYgKGV2ZG9TbnIgPj0gNykgbGV2ZWxFdmRvU25yID0gNDsKLSAgICAgICAgZWxzZSBpZiAoZXZkb1NuciA+PSA1KSBsZXZlbEV2ZG9TbnIgPSAzOwotICAgICAgICBlbHNlIGlmIChldmRvU25yID49IDMpIGxldmVsRXZkb1NuciA9IDI7Ci0gICAgICAgIGVsc2UgaWYgKGV2ZG9TbnIgPj0gMSkgbGV2ZWxFdmRvU25yID0gMTsKLSAgICAgICAgZWxzZSBsZXZlbEV2ZG9TbnIgPSAwOwotCi0gICAgICAgIHJldHVybiAobGV2ZWxFdmRvRGJtIDwgbGV2ZWxFdmRvU25yKSA/IGxldmVsRXZkb0RibSA6IGxldmVsRXZkb1NucjsKLSAgICB9Ci0KLSAgICBwcml2YXRlIGZpbmFsIHZvaWQgdXBkYXRlRGF0YU5ldFR5cGUoaW50IG5ldCkgewotCi0gICAgICAgIHN3aXRjaCAobmV0KSB7Ci0gICAgICAgIGNhc2UgVGVsZXBob255TWFuYWdlci5ORVRXT1JLX1RZUEVfRURHRToKLSAgICAgICAgICAgIG1EYXRhSWNvbkxpc3QgPSBzRGF0YU5ldFR5cGVfZTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIFRlbGVwaG9ueU1hbmFnZXIuTkVUV09SS19UWVBFX1VNVFM6Ci0gICAgICAgICAgICBtRGF0YUljb25MaXN0ID0gc0RhdGFOZXRUeXBlXzNnOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVGVsZXBob255TWFuYWdlci5ORVRXT1JLX1RZUEVfSFNEUEE6Ci0gICAgICAgIGNhc2UgVGVsZXBob255TWFuYWdlci5ORVRXT1JLX1RZUEVfSFNVUEE6Ci0gICAgICAgIGNhc2UgVGVsZXBob255TWFuYWdlci5ORVRXT1JLX1RZUEVfSFNQQToKLSAgICAgICAgICAgIGlmIChtSHNwYURhdGFEaXN0aW5ndWlzaGFibGUpIHsKLSAgICAgICAgICAgICAgICBtRGF0YUljb25MaXN0ID0gc0RhdGFOZXRUeXBlX2g7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG1EYXRhSWNvbkxpc3QgPSBzRGF0YU5ldFR5cGVfM2c7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBUZWxlcGhvbnlNYW5hZ2VyLk5FVFdPUktfVFlQRV9DRE1BOgotICAgICAgICAgICAgLy8gZGlzcGxheSAxeFJUVCBmb3IgSVM5NUEvQgotICAgICAgICAgICAgbURhdGFJY29uTGlzdCA9IHRoaXMuc0RhdGFOZXRUeXBlXzF4OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVGVsZXBob255TWFuYWdlci5ORVRXT1JLX1RZUEVfMXhSVFQ6Ci0gICAgICAgICAgICBtRGF0YUljb25MaXN0ID0gdGhpcy5zRGF0YU5ldFR5cGVfMXg7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBUZWxlcGhvbnlNYW5hZ2VyLk5FVFdPUktfVFlQRV9FVkRPXzA6IC8vZmFsbCB0aHJvdWdoCi0gICAgICAgIGNhc2UgVGVsZXBob255TWFuYWdlci5ORVRXT1JLX1RZUEVfRVZET19BOgotICAgICAgICAgICAgbURhdGFJY29uTGlzdCA9IHNEYXRhTmV0VHlwZV8zZzsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgbURhdGFJY29uTGlzdCA9IHNEYXRhTmV0VHlwZV9nOwotICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHByaXZhdGUgZmluYWwgdm9pZCB1cGRhdGVEYXRhSWNvbigpIHsKLSAgICAgICAgaW50IGljb25JZDsKLSAgICAgICAgYm9vbGVhbiB2aXNpYmxlID0gdHJ1ZTsKLQotICAgICAgICBpZiAoIWlzQ2RtYSgpKSB7Ci0gICAgICAgICAgICAvLyBHU00gY2FzZSwgd2UgaGF2ZSB0byBjaGVjayBhbHNvIHRoZSBzaW0gc3RhdGUKLSAgICAgICAgICAgIGlmIChtU2ltU3RhdGUgPT0gSWNjQ2FyZC5TdGF0ZS5SRUFEWSB8fCBtU2ltU3RhdGUgPT0gSWNjQ2FyZC5TdGF0ZS5VTktOT1dOKSB7Ci0gICAgICAgICAgICAgICAgaWYgKGhhc1NlcnZpY2UoKSAmJiBtRGF0YVN0YXRlID09IFRlbGVwaG9ueU1hbmFnZXIuREFUQV9DT05ORUNURUQpIHsKLSAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChtRGF0YUFjdGl2aXR5KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFRlbGVwaG9ueU1hbmFnZXIuREFUQV9BQ1RJVklUWV9JTjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uSWQgPSBtRGF0YUljb25MaXN0WzFdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBUZWxlcGhvbnlNYW5hZ2VyLkRBVEFfQUNUSVZJVFlfT1VUOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb25JZCA9IG1EYXRhSWNvbkxpc3RbMl07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIFRlbGVwaG9ueU1hbmFnZXIuREFUQV9BQ1RJVklUWV9JTk9VVDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uSWQgPSBtRGF0YUljb25MaXN0WzNdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpY29uSWQgPSBtRGF0YUljb25MaXN0WzBdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIG1EYXRhRGF0YS5pY29uSWQgPSBpY29uSWQ7Ci0gICAgICAgICAgICAgICAgICAgIG1TZXJ2aWNlLnVwZGF0ZUljb24obURhdGFJY29uLCBtRGF0YURhdGEsIG51bGwpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHZpc2libGUgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG1EYXRhRGF0YS5pY29uSWQgPSBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX25vX3NpbTsKLSAgICAgICAgICAgICAgICBtU2VydmljZS51cGRhdGVJY29uKG1EYXRhSWNvbiwgbURhdGFEYXRhLCBudWxsKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIENETUEgY2FzZSwgbURhdGFBY3Rpdml0eSBjYW4gYmUgYWxzbyBEQVRBX0FDVElWSVRZX0RPUk1BTlQKLSAgICAgICAgICAgIGlmIChoYXNTZXJ2aWNlKCkgJiYgbURhdGFTdGF0ZSA9PSBUZWxlcGhvbnlNYW5hZ2VyLkRBVEFfQ09OTkVDVEVEKSB7Ci0gICAgICAgICAgICAgICAgc3dpdGNoIChtRGF0YUFjdGl2aXR5KSB7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgVGVsZXBob255TWFuYWdlci5EQVRBX0FDVElWSVRZX0lOOgotICAgICAgICAgICAgICAgICAgICAgICAgaWNvbklkID0gbURhdGFJY29uTGlzdFsxXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIFRlbGVwaG9ueU1hbmFnZXIuREFUQV9BQ1RJVklUWV9PVVQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpY29uSWQgPSBtRGF0YUljb25MaXN0WzJdOwotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgICAgIGNhc2UgVGVsZXBob255TWFuYWdlci5EQVRBX0FDVElWSVRZX0lOT1VUOgotICAgICAgICAgICAgICAgICAgICAgICAgaWNvbklkID0gbURhdGFJY29uTGlzdFszXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBjYXNlIFRlbGVwaG9ueU1hbmFnZXIuREFUQV9BQ1RJVklUWV9ET1JNQU5UOgotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICAgICAgaWNvbklkID0gbURhdGFJY29uTGlzdFswXTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBtRGF0YURhdGEuaWNvbklkID0gaWNvbklkOwotICAgICAgICAgICAgICAgIG1TZXJ2aWNlLnVwZGF0ZUljb24obURhdGFJY29uLCBtRGF0YURhdGEsIG51bGwpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICB2aXNpYmxlID0gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBsb25nIGlkZW50ID0gQmluZGVyLmNsZWFyQ2FsbGluZ0lkZW50aXR5KCk7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgICBtQmF0dGVyeVN0YXRzLm5vdGVQaG9uZURhdGFDb25uZWN0aW9uU3RhdGUobVBob25lLmdldE5ldHdvcmtUeXBlKCksIHZpc2libGUpOwotICAgICAgICB9IGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZSkgewotICAgICAgICB9IGZpbmFsbHkgewotICAgICAgICAgICAgQmluZGVyLnJlc3RvcmVDYWxsaW5nSWRlbnRpdHkoaWRlbnQpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKG1EYXRhSWNvblZpc2libGUgIT0gdmlzaWJsZSkgewotICAgICAgICAgICAgbVNlcnZpY2Uuc2V0SWNvblZpc2liaWxpdHkobURhdGFJY29uLCB2aXNpYmxlKTsKLSAgICAgICAgICAgIG1EYXRhSWNvblZpc2libGUgPSB2aXNpYmxlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBmaW5hbCB2b2lkIHVwZGF0ZVZvbHVtZSgpIHsKLSAgICAgICAgQXVkaW9NYW5hZ2VyIGF1ZGlvTWFuYWdlciA9IChBdWRpb01hbmFnZXIpIG1Db250ZXh0LmdldFN5c3RlbVNlcnZpY2UoQ29udGV4dC5BVURJT19TRVJWSUNFKTsKLSAgICAgICAgZmluYWwgaW50IHJpbmdlck1vZGUgPSBhdWRpb01hbmFnZXIuZ2V0UmluZ2VyTW9kZSgpOwotICAgICAgICBmaW5hbCBib29sZWFuIHZpc2libGUgPSByaW5nZXJNb2RlID09IEF1ZGlvTWFuYWdlci5SSU5HRVJfTU9ERV9TSUxFTlQgfHwKLSAgICAgICAgICAgICAgICByaW5nZXJNb2RlID09IEF1ZGlvTWFuYWdlci5SSU5HRVJfTU9ERV9WSUJSQVRFOwotICAgICAgICBmaW5hbCBpbnQgaWNvbklkID0gKHJpbmdlck1vZGUgPT0gQXVkaW9NYW5hZ2VyLlJJTkdFUl9NT0RFX1ZJQlJBVEUpCi0gICAgICAgICAgICAgICAgPyBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3Jpbmdlcl92aWJyYXRlCi0gICAgICAgICAgICAgICAgOiBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX3Jpbmdlcl9zaWxlbnQ7Ci0KLSAgICAgICAgaWYgKHZpc2libGUpIHsKLSAgICAgICAgICAgIG1Wb2x1bWVEYXRhLmljb25JZCA9IGljb25JZDsKLSAgICAgICAgICAgIG1TZXJ2aWNlLnVwZGF0ZUljb24obVZvbHVtZUljb24sIG1Wb2x1bWVEYXRhLCBudWxsKTsKLSAgICAgICAgfQotICAgICAgICBpZiAodmlzaWJsZSAhPSBtVm9sdW1lVmlzaWJsZSkgewotICAgICAgICAgICAgbVNlcnZpY2Uuc2V0SWNvblZpc2liaWxpdHkobVZvbHVtZUljb24sIHZpc2libGUpOwotICAgICAgICAgICAgbVZvbHVtZVZpc2libGUgPSB2aXNpYmxlOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBmaW5hbCB2b2lkIHVwZGF0ZUJsdWV0b290aChJbnRlbnQgaW50ZW50KSB7Ci0gICAgICAgIGludCBpY29uSWQgPSBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX2RhdGFfYmx1ZXRvb3RoOwotICAgICAgICBTdHJpbmcgYWN0aW9uID0gaW50ZW50LmdldEFjdGlvbigpOwotICAgICAgICBpZiAoYWN0aW9uLmVxdWFscyhCbHVldG9vdGhBZGFwdGVyLkFDVElPTl9TVEFURV9DSEFOR0VEKSkgewotICAgICAgICAgICAgaW50IHN0YXRlID0gaW50ZW50LmdldEludEV4dHJhKEJsdWV0b290aEFkYXB0ZXIuRVhUUkFfU1RBVEUsIEJsdWV0b290aEFkYXB0ZXIuRVJST1IpOwotICAgICAgICAgICAgbUJsdWV0b290aEVuYWJsZWQgPSBzdGF0ZSA9PSBCbHVldG9vdGhBZGFwdGVyLlNUQVRFX09OOwotICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbi5lcXVhbHMoQmx1ZXRvb3RoSGVhZHNldC5BQ1RJT05fU1RBVEVfQ0hBTkdFRCkpIHsKLSAgICAgICAgICAgIG1CbHVldG9vdGhIZWFkc2V0U3RhdGUgPSBpbnRlbnQuZ2V0SW50RXh0cmEoQmx1ZXRvb3RoSGVhZHNldC5FWFRSQV9TVEFURSwKLSAgICAgICAgICAgICAgICAgICAgQmx1ZXRvb3RoSGVhZHNldC5TVEFURV9FUlJPUik7Ci0gICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uLmVxdWFscyhCbHVldG9vdGhBMmRwLkFDVElPTl9TSU5LX1NUQVRFX0NIQU5HRUQpKSB7Ci0gICAgICAgICAgICBCbHVldG9vdGhBMmRwIGEyZHAgPSBuZXcgQmx1ZXRvb3RoQTJkcChtQ29udGV4dCk7Ci0gICAgICAgICAgICBpZiAoYTJkcC5nZXRDb25uZWN0ZWRTaW5rcygpLnNpemUoKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgbUJsdWV0b290aEEyZHBDb25uZWN0ZWQgPSB0cnVlOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtQmx1ZXRvb3RoQTJkcENvbm5lY3RlZCA9IGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbi5lcXVhbHMoQmx1ZXRvb3RoUGJhcC5QQkFQX1NUQVRFX0NIQU5HRURfQUNUSU9OKSkgewotICAgICAgICAgICAgbUJsdWV0b290aFBiYXBTdGF0ZSA9IGludGVudC5nZXRJbnRFeHRyYShCbHVldG9vdGhQYmFwLlBCQVBfU1RBVEUsCi0gICAgICAgICAgICAgICAgICAgIEJsdWV0b290aFBiYXAuU1RBVEVfRElTQ09OTkVDVEVEKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChtQmx1ZXRvb3RoSGVhZHNldFN0YXRlID09IEJsdWV0b290aEhlYWRzZXQuU1RBVEVfQ09OTkVDVEVEIHx8IG1CbHVldG9vdGhBMmRwQ29ubmVjdGVkIHx8Ci0gICAgICAgICAgICAgICAgbUJsdWV0b290aFBiYXBTdGF0ZSA9PSBCbHVldG9vdGhQYmFwLlNUQVRFX0NPTk5FQ1RFRCkgewotICAgICAgICAgICAgaWNvbklkID0gY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c19kYXRhX2JsdWV0b290aF9jb25uZWN0ZWQ7Ci0gICAgICAgIH0KLQotICAgICAgICBtQmx1ZXRvb3RoRGF0YS5pY29uSWQgPSBpY29uSWQ7Ci0gICAgICAgIG1TZXJ2aWNlLnVwZGF0ZUljb24obUJsdWV0b290aEljb24sIG1CbHVldG9vdGhEYXRhLCBudWxsKTsKLSAgICAgICAgbVNlcnZpY2Uuc2V0SWNvblZpc2liaWxpdHkobUJsdWV0b290aEljb24sIG1CbHVldG9vdGhFbmFibGVkKTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIGZpbmFsIHZvaWQgdXBkYXRlV2lmaShJbnRlbnQgaW50ZW50KSB7Ci0gICAgICAgIGZpbmFsIFN0cmluZyBhY3Rpb24gPSBpbnRlbnQuZ2V0QWN0aW9uKCk7Ci0gICAgICAgIGlmIChhY3Rpb24uZXF1YWxzKFdpZmlNYW5hZ2VyLldJRklfU1RBVEVfQ0hBTkdFRF9BQ1RJT04pKSB7Ci0KLSAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gZW5hYmxlZCA9IGludGVudC5nZXRJbnRFeHRyYShXaWZpTWFuYWdlci5FWFRSQV9XSUZJX1NUQVRFLAotICAgICAgICAgICAgICAgICAgICBXaWZpTWFuYWdlci5XSUZJX1NUQVRFX1VOS05PV04pID09IFdpZmlNYW5hZ2VyLldJRklfU1RBVEVfRU5BQkxFRDsKLQotICAgICAgICAgICAgaWYgKCFlbmFibGVkKSB7Ci0gICAgICAgICAgICAgICAgLy8gSWYgZGlzYWJsZWQsIGhpZGUgdGhlIGljb24uIChXZSBzaG93IGljb24gd2hlbiBjb25uZWN0ZWQuKQotICAgICAgICAgICAgICAgIG1TZXJ2aWNlLnNldEljb25WaXNpYmlsaXR5KG1XaWZpSWNvbiwgZmFsc2UpOwotICAgICAgICAgICAgfQotCi0gICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uLmVxdWFscyhXaWZpTWFuYWdlci5TVVBQTElDQU5UX0NPTk5FQ1RJT05fQ0hBTkdFX0FDVElPTikpIHsKLSAgICAgICAgICAgIGZpbmFsIGJvb2xlYW4gZW5hYmxlZCA9IGludGVudC5nZXRCb29sZWFuRXh0cmEoV2lmaU1hbmFnZXIuRVhUUkFfU1VQUExJQ0FOVF9DT05ORUNURUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlKTsKLSAgICAgICAgICAgIGlmICghZW5hYmxlZCkgewotICAgICAgICAgICAgICAgIG1TZXJ2aWNlLnNldEljb25WaXNpYmlsaXR5KG1XaWZpSWNvbiwgZmFsc2UpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbi5lcXVhbHMoV2lmaU1hbmFnZXIuTkVUV09SS19TVEFURV9DSEFOR0VEX0FDVElPTikpIHsKLQotICAgICAgICAgICAgZmluYWwgTmV0d29ya0luZm8gbmV0d29ya0luZm8gPSAoTmV0d29ya0luZm8pCi0gICAgICAgICAgICAgICAgICAgIGludGVudC5nZXRQYXJjZWxhYmxlRXh0cmEoV2lmaU1hbmFnZXIuRVhUUkFfTkVUV09SS19JTkZPKTsKLQotICAgICAgICAgICAgaW50IGljb25JZDsKLSAgICAgICAgICAgIGlmIChuZXR3b3JrSW5mbyAhPSBudWxsICYmIG5ldHdvcmtJbmZvLmlzQ29ubmVjdGVkKCkpIHsKLSAgICAgICAgICAgICAgICBtSXNXaWZpQ29ubmVjdGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBpZiAobUxhc3RXaWZpU2lnbmFsTGV2ZWwgPT0gLTEpIHsKLSAgICAgICAgICAgICAgICAgICAgaWNvbklkID0gc1dpZmlTaWduYWxJbWFnZXNbMF07Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgaWNvbklkID0gc1dpZmlTaWduYWxJbWFnZXNbbUxhc3RXaWZpU2lnbmFsTGV2ZWxdOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8vIFNob3cgdGhlIGljb24gc2luY2Ugd2ktZmkgaXMgY29ubmVjdGVkCi0gICAgICAgICAgICAgICAgbVNlcnZpY2Uuc2V0SWNvblZpc2liaWxpdHkobVdpZmlJY29uLCB0cnVlKTsKLQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtTGFzdFdpZmlTaWduYWxMZXZlbCA9IC0xOwotICAgICAgICAgICAgICAgIG1Jc1dpZmlDb25uZWN0ZWQgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBpY29uSWQgPSBzV2lmaVNpZ25hbEltYWdlc1swXTsKLQotICAgICAgICAgICAgICAgIC8vIEhpZGUgdGhlIGljb24gc2luY2Ugd2UncmUgbm90IGNvbm5lY3RlZAotICAgICAgICAgICAgICAgIG1TZXJ2aWNlLnNldEljb25WaXNpYmlsaXR5KG1XaWZpSWNvbiwgZmFsc2UpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBtV2lmaURhdGEuaWNvbklkID0gaWNvbklkOwotICAgICAgICAgICAgbVNlcnZpY2UudXBkYXRlSWNvbihtV2lmaUljb24sIG1XaWZpRGF0YSwgbnVsbCk7Ci0gICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uLmVxdWFscyhXaWZpTWFuYWdlci5SU1NJX0NIQU5HRURfQUNUSU9OKSkgewotICAgICAgICAgICAgZmluYWwgaW50IG5ld1Jzc2kgPSBpbnRlbnQuZ2V0SW50RXh0cmEoV2lmaU1hbmFnZXIuRVhUUkFfTkVXX1JTU0ksIC0yMDApOwotICAgICAgICAgICAgaW50IG5ld1NpZ25hbExldmVsID0gV2lmaU1hbmFnZXIuY2FsY3VsYXRlU2lnbmFsTGV2ZWwobmV3UnNzaSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNXaWZpU2lnbmFsSW1hZ2VzLmxlbmd0aCk7Ci0gICAgICAgICAgICBpZiAobmV3U2lnbmFsTGV2ZWwgIT0gbUxhc3RXaWZpU2lnbmFsTGV2ZWwpIHsKLSAgICAgICAgICAgICAgICBtTGFzdFdpZmlTaWduYWxMZXZlbCA9IG5ld1NpZ25hbExldmVsOwotICAgICAgICAgICAgICAgIGlmIChtSXNXaWZpQ29ubmVjdGVkKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1XaWZpRGF0YS5pY29uSWQgPSBzV2lmaVNpZ25hbEltYWdlc1tuZXdTaWduYWxMZXZlbF07Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgbVdpZmlEYXRhLmljb25JZCA9IHNXaWZpVGVtcG9yYXJpbHlOb3RDb25uZWN0ZWRJbWFnZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbVNlcnZpY2UudXBkYXRlSWNvbihtV2lmaUljb24sIG1XaWZpRGF0YSwgbnVsbCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwcml2YXRlIGZpbmFsIHZvaWQgdXBkYXRlR3BzKEludGVudCBpbnRlbnQpIHsKLSAgICAgICAgZmluYWwgU3RyaW5nIGFjdGlvbiA9IGludGVudC5nZXRBY3Rpb24oKTsKLSAgICAgICAgZmluYWwgYm9vbGVhbiBlbmFibGVkID0gaW50ZW50LmdldEJvb2xlYW5FeHRyYShHcHNMb2NhdGlvblByb3ZpZGVyLkVYVFJBX0VOQUJMRUQsIGZhbHNlKTsKLQotICAgICAgICBpZiAoYWN0aW9uLmVxdWFscyhHcHNMb2NhdGlvblByb3ZpZGVyLkdQU19GSVhfQ0hBTkdFX0FDVElPTikgJiYgZW5hYmxlZCkgewotICAgICAgICAgICAgLy8gR1BTIGlzIGdldHRpbmcgZml4ZXMKLSAgICAgICAgICAgIG1TZXJ2aWNlLnVwZGF0ZUljb24obUdwc0ljb24sIG1HcHNGaXhJY29uRGF0YSwgbnVsbCk7Ci0gICAgICAgICAgICBtU2VydmljZS5zZXRJY29uVmlzaWJpbGl0eShtR3BzSWNvbiwgdHJ1ZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uLmVxdWFscyhHcHNMb2NhdGlvblByb3ZpZGVyLkdQU19FTkFCTEVEX0NIQU5HRV9BQ1RJT04pICYmICFlbmFibGVkKSB7Ci0gICAgICAgICAgICAvLyBHUFMgaXMgb2ZmCi0gICAgICAgICAgICBtU2VydmljZS5zZXRJY29uVmlzaWJpbGl0eShtR3BzSWNvbiwgZmFsc2UpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLy8gR1BTIGlzIG9uLCBidXQgbm90IHJlY2VpdmluZyBmaXhlcwotICAgICAgICAgICAgbVNlcnZpY2UudXBkYXRlSWNvbihtR3BzSWNvbiwgbUdwc0VuYWJsZWRJY29uRGF0YSwgbnVsbCk7Ci0gICAgICAgICAgICBtU2VydmljZS5zZXRJY29uVmlzaWJpbGl0eShtR3BzSWNvbiwgdHJ1ZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwcml2YXRlIGZpbmFsIHZvaWQgdXBkYXRlVFRZKEludGVudCBpbnRlbnQpIHsKLSAgICAgICAgZmluYWwgU3RyaW5nIGFjdGlvbiA9IGludGVudC5nZXRBY3Rpb24oKTsKLSAgICAgICAgZmluYWwgYm9vbGVhbiBlbmFibGVkID0gaW50ZW50LmdldEJvb2xlYW5FeHRyYShUdHlJbnRlbnQuVFRZX0VOQUJMRUQsIGZhbHNlKTsKLQotICAgICAgICBpZiAoZmFsc2UpIFNsb2cudihUQUcsICJ1cGRhdGVUVFk6IGVuYWJsZWQ6ICIgKyBlbmFibGVkKTsKLQotICAgICAgICBpZiAoZW5hYmxlZCkgewotICAgICAgICAgICAgLy8gVFRZIGlzIG9uCi0gICAgICAgICAgICBpZiAoZmFsc2UpIFNsb2cudihUQUcsICJ1cGRhdGVUVFk6IHNldCBUVFkgb24iKTsKLSAgICAgICAgICAgIG1TZXJ2aWNlLnVwZGF0ZUljb24obVRUWU1vZGVJY29uLCBtVFRZTW9kZUVuYWJsZUljb25EYXRhLCBudWxsKTsKLSAgICAgICAgICAgIG1TZXJ2aWNlLnNldEljb25WaXNpYmlsaXR5KG1UVFlNb2RlSWNvbiwgdHJ1ZSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBUVFkgaXMgb2ZmCi0gICAgICAgICAgICBpZiAoZmFsc2UpIFNsb2cudihUQUcsICJ1cGRhdGVUVFk6IHNldCBUVFkgb2ZmIik7Ci0gICAgICAgICAgICBtU2VydmljZS5zZXRJY29uVmlzaWJpbGl0eShtVFRZTW9kZUljb24sIGZhbHNlKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHByaXZhdGUgZmluYWwgdm9pZCB1cGRhdGVDZG1hUm9hbWluZ0ljb24oU2VydmljZVN0YXRlIHN0YXRlKSB7Ci0gICAgICAgIGlmICghaGFzU2VydmljZSgpKSB7Ci0gICAgICAgICAgICBtU2VydmljZS5zZXRJY29uVmlzaWJpbGl0eShtQ2RtYVJvYW1pbmdJbmRpY2F0b3JJY29uLCBmYWxzZSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIWlzQ2RtYSgpKSB7Ci0gICAgICAgICAgICBtU2VydmljZS5zZXRJY29uVmlzaWJpbGl0eShtQ2RtYVJvYW1pbmdJbmRpY2F0b3JJY29uLCBmYWxzZSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpbnRbXSBpY29uTGlzdCA9IHNSb2FtaW5nSW5kaWNhdG9ySW1hZ2VzX2NkbWE7Ci0gICAgICAgIGludCBpY29uSW5kZXggPSBzdGF0ZS5nZXRDZG1hRXJpSWNvbkluZGV4KCk7Ci0gICAgICAgIGludCBpY29uTW9kZSA9IHN0YXRlLmdldENkbWFFcmlJY29uTW9kZSgpOwotCi0gICAgICAgIGlmIChpY29uSW5kZXggPT0gLTEpIHsKLSAgICAgICAgICAgIFNsb2cuZShUQUcsICJnZXRDZG1hRXJpSWNvbkluZGV4IHJldHVybmVkIG51bGwsIHNraXBwaW5nIEVSSSBpY29uIHVwZGF0ZSIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGljb25Nb2RlID09IC0xKSB7Ci0gICAgICAgICAgICBTbG9nLmUoVEFHLCAiZ2V0Q2RtZUVyaUljb25Nb2RlIHJldHVybmVkIG51bGwsIHNraXBwaW5nIEVSSSBpY29uIHVwZGF0ZSIpOwotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGljb25JbmRleCA9PSBFcmlJbmZvLlJPQU1JTkdfSU5ESUNBVE9SX09GRikgewotICAgICAgICAgICAgaWYgKGZhbHNlKSBTbG9nLnYoVEFHLCAiQ2RtYSBST0FNSU5HX0lORElDQVRPUl9PRkYsIHJlbW92aW5nIEVSSSBpY29uIik7Ci0gICAgICAgICAgICBtU2VydmljZS5zZXRJY29uVmlzaWJpbGl0eShtQ2RtYVJvYW1pbmdJbmRpY2F0b3JJY29uLCBmYWxzZSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBzd2l0Y2ggKGljb25Nb2RlKSB7Ci0gICAgICAgICAgICBjYXNlIEVyaUluZm8uUk9BTUlOR19JQ09OX01PREVfTk9STUFMOgotICAgICAgICAgICAgICAgIG1DZG1hUm9hbWluZ0luZGljYXRvckljb25EYXRhLmljb25JZCA9IGljb25MaXN0W2ljb25JbmRleF07Ci0gICAgICAgICAgICAgICAgbVNlcnZpY2UudXBkYXRlSWNvbihtQ2RtYVJvYW1pbmdJbmRpY2F0b3JJY29uLCBtQ2RtYVJvYW1pbmdJbmRpY2F0b3JJY29uRGF0YSwgbnVsbCk7Ci0gICAgICAgICAgICAgICAgbVNlcnZpY2Uuc2V0SWNvblZpc2liaWxpdHkobUNkbWFSb2FtaW5nSW5kaWNhdG9ySWNvbiwgdHJ1ZSk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEVyaUluZm8uUk9BTUlOR19JQ09OX01PREVfRkxBU0g6Ci0gICAgICAgICAgICAgICAgbUNkbWFSb2FtaW5nSW5kaWNhdG9ySWNvbkRhdGEuaWNvbklkID0KLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9zeXNfcm9hbWluZ19jZG1hX2ZsYXNoOwotICAgICAgICAgICAgICAgIG1TZXJ2aWNlLnVwZGF0ZUljb24obUNkbWFSb2FtaW5nSW5kaWNhdG9ySWNvbiwgbUNkbWFSb2FtaW5nSW5kaWNhdG9ySWNvbkRhdGEsIG51bGwpOwotICAgICAgICAgICAgICAgIG1TZXJ2aWNlLnNldEljb25WaXNpYmlsaXR5KG1DZG1hUm9hbWluZ0luZGljYXRvckljb24sIHRydWUpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIH0KLSAgICAgICAgbVNlcnZpY2UudXBkYXRlSWNvbihtUGhvbmVJY29uLCBtUGhvbmVEYXRhLCBudWxsKTsKLSAgICB9Ci0KLQotICAgIHByaXZhdGUgY2xhc3MgU3RhdHVzQmFySGFuZGxlciBleHRlbmRzIEhhbmRsZXIgewotICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIHZvaWQgaGFuZGxlTWVzc2FnZShNZXNzYWdlIG1zZykgewotICAgICAgICAgICAgc3dpdGNoIChtc2cud2hhdCkgewotICAgICAgICAgICAgY2FzZSBFVkVOVF9CQVRURVJZX0NMT1NFOgotICAgICAgICAgICAgICAgIGlmIChtc2cuYXJnMSA9PSBtQmF0dGVyeVZpZXdTZXF1ZW5jZSkgewotICAgICAgICAgICAgICAgICAgICBjbG9zZUxhc3RCYXR0ZXJ5VmlldygpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3N0YXR1cy9TdGF0dXNCYXJTZXJ2aWNlLmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvU3RhdHVzQmFyU2VydmljZS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5M2M4ZDM0Li4wMDAwMDAwCi0tLSBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3N0YXR1cy9TdGF0dXNCYXJTZXJ2aWNlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxODgxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi1wYWNrYWdlIGNvbS5hbmRyb2lkLnNlcnZlci5zdGF0dXM7Ci0KLWltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SOwotaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnV0aWwuQ2hhclNlcXVlbmNlczsKLQotaW1wb3J0IGFuZHJvaWQuYXBwLkFjdGl2aXR5TWFuYWdlck5hdGl2ZTsKLWltcG9ydCBhbmRyb2lkLmFwcC5EaWFsb2c7Ci1pbXBvcnQgYW5kcm9pZC5hcHAuSVN0YXR1c0JhcjsKLWltcG9ydCBhbmRyb2lkLmFwcC5QZW5kaW5nSW50ZW50OwotaW1wb3J0IGFuZHJvaWQuYXBwLlN0YXR1c0Jhck1hbmFnZXI7Ci1pbXBvcnQgYW5kcm9pZC5jb250ZW50LkJyb2FkY2FzdFJlY2VpdmVyOwotaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OwotaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnQ7Ci1pbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudEZpbHRlcjsKLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXI7Ci1pbXBvcnQgYW5kcm9pZC5jb250ZW50LnJlcy5SZXNvdXJjZXM7Ci1pbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5QaXhlbEZvcm1hdDsKLWltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLlJlY3Q7Ci1pbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5kcmF3YWJsZS5EcmF3YWJsZTsKLWltcG9ydCBhbmRyb2lkLm5ldC5Vcmk7Ci1pbXBvcnQgYW5kcm9pZC5vcy5JQmluZGVyOwotaW1wb3J0IGFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uOwotaW1wb3J0IGFuZHJvaWQub3MuQmluZGVyOwotaW1wb3J0IGFuZHJvaWQub3MuSGFuZGxlcjsKLWltcG9ydCBhbmRyb2lkLm9zLk1lc3NhZ2U7Ci1pbXBvcnQgYW5kcm9pZC5vcy5TeXN0ZW1DbG9jazsKLWltcG9ydCBhbmRyb2lkLnByb3ZpZGVyLlRlbGVwaG9ueTsKLWltcG9ydCBhbmRyb2lkLnV0aWwuU2xvZzsKLWltcG9ydCBhbmRyb2lkLnZpZXcuRGlzcGxheTsKLWltcG9ydCBhbmRyb2lkLnZpZXcuR3Jhdml0eTsKLWltcG9ydCBhbmRyb2lkLnZpZXcuS2V5RXZlbnQ7Ci1pbXBvcnQgYW5kcm9pZC52aWV3LkxheW91dEluZmxhdGVyOwotaW1wb3J0IGFuZHJvaWQudmlldy5Nb3Rpb25FdmVudDsKLWltcG9ydCBhbmRyb2lkLnZpZXcuVmVsb2NpdHlUcmFja2VyOwotaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OwotaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3R3JvdXA7Ci1pbXBvcnQgYW5kcm9pZC52aWV3LldpbmRvdzsKLWltcG9ydCBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlcjsKLWltcG9ydCBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlckltcGw7Ci1pbXBvcnQgYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5BbmltYXRpb247Ci1pbXBvcnQgYW5kcm9pZC52aWV3LmFuaW1hdGlvbi5BbmltYXRpb25VdGlsczsKLWltcG9ydCBhbmRyb2lkLndpZGdldC5MaW5lYXJMYXlvdXQ7Ci1pbXBvcnQgYW5kcm9pZC53aWRnZXQuUmVtb3RlVmlld3M7Ci1pbXBvcnQgYW5kcm9pZC53aWRnZXQuU2Nyb2xsVmlldzsKLWltcG9ydCBhbmRyb2lkLndpZGdldC5UZXh0VmlldzsKLWltcG9ydCBhbmRyb2lkLndpZGdldC5GcmFtZUxheW91dDsKLQotaW1wb3J0IGphdmEuaW8uRmlsZURlc2NyaXB0b3I7Ci1pbXBvcnQgamF2YS5pby5QcmludFdyaXRlcjsKLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOwotaW1wb3J0IGphdmEudXRpbC5TZXQ7Ci0KLQotLyoqCi0gKiBUaGUgcHVibGljIChvaywgc2VtaS1wdWJsaWMpIHNlcnZpY2UgZm9yIHRoZSBzdGF0dXMgYmFyLgotICogPHA+Ci0gKiBUaGlzIGludGVyZXN0aW5nIHRoaW5nIHRvIG5vdGUgYWJvdXQgdGhpcyBjbGFzcyBpcyB0aGF0IG1vc3Qgb2YgdGhlIG1ldGhvZHMgdGhhdAotICogYXJlIGNhbGxlZCBmcm9tIG90aGVyIGNsYXNzZXMganVzdCBwb3N0IGEgbWVzc2FnZSwgYW5kIGV2ZXJ5dGhpbmcgZWxzZSBpcyBiYXRjaGVkCi0gKiBhbmQgY29hbGVzY2VkIGludG8gYSBzZXJpZXMgb2YgY2FsbHMgdG8gbWV0aG9kcyB0aGF0IGFsbCBzdGFydCB3aXRoICJwZXJmb3JtLiIKLSAqIFRoZXJlIGFyZSB0d28gcmVhc29ucyBmb3IgdGhpcy4gIFRoZSBmaXJzdCBpcyB0aGF0IHNvbWUgb2YgdGhlIG1ldGhvZHMgKGFjdGl2YXRlL2RlYWN0aXZhdGUpCi0gKiBhcmUgb24gSVN0YXR1c0Jhciwgc28gdGhleSdyZSBjYWxsZWQgZnJvbSB0aGUgdGhyZWFkIHBvb2wgYW5kIHRoZXkgbmVlZCB0byBtYWtlIHRoZWlyCi0gKiB3YXkgb250byB0aGUgVUkgdGhyZWFkLiAgVGhlIHNlY29uZCBpcyB0aGF0IHRoZSBtZXNzYWdlIHF1ZXVlIGlzIHN0b3BwZWQgd2hpbGUgYW5pbWF0aW9ucwotICogYXJlIGhhcHBlbmluZyBpbiBvcmRlciB0byBtYWtlIGZvciBzbW9vdGhlciB0cmFuc2l0aW9ucy4KLSAqIDxwPgotICogRWFjaCBpY29uIGlzIGVpdGhlciBhbiBpY29uIG9yIGFuIGljb24gYW5kIGEgbm90aWZpY2F0aW9uLiAgVGhleSdyZSB0cmVhdGVkIG1vc3RseQotICogc2VwYXJhdGVseSB0aHJvdWdob3V0IHRoZSBjb2RlLCBhbHRob3VnaCB0aGV5IGJvdGggdXNlIHRoZSBzYW1lIGtleSwgd2hpY2ggaXMgYXNzaWduZWQKLSAqIHdoZW4gdGhleSBhcmUgY3JlYXRlZC4KLSAqLwotcHVibGljIGNsYXNzIFN0YXR1c0JhclNlcnZpY2UgZXh0ZW5kcyBJU3RhdHVzQmFyLlN0dWIKLXsKLSAgICBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9ICJTdGF0dXNCYXIiOwotICAgIHN0YXRpYyBmaW5hbCBib29sZWFuIFNQRVcgPSBmYWxzZTsKLQotICAgIHN0YXRpYyBmaW5hbCBpbnQgRVhQQU5ERURfTEVBVkVfQUxPTkUgPSAtMTAwMDA7Ci0gICAgc3RhdGljIGZpbmFsIGludCBFWFBBTkRFRF9GVUxMX09QRU4gPSAtMTAwMDE7Ci0KLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgTVNHX0FOSU1BVEUgPSAxMDAwOwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNU0dfQU5JTUFURV9SRVZFQUwgPSAxMDAxOwotCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE9QX0FERF9JQ09OID0gMTsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgT1BfVVBEQVRFX0lDT04gPSAyOwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBPUF9SRU1PVkVfSUNPTiA9IDM7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE9QX1NFVF9WSVNJQkxFID0gNDsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgT1BfRVhQQU5EID0gNTsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgT1BfVE9HR0xFID0gNjsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgT1BfRElTQUJMRSA9IDc7Ci0gICAgcHJpdmF0ZSBjbGFzcyBQZW5kaW5nT3AgewotICAgICAgICBJQmluZGVyIGtleTsKLSAgICAgICAgaW50IGNvZGU7Ci0gICAgICAgIEljb25EYXRhIGljb25EYXRhOwotICAgICAgICBOb3RpZmljYXRpb25EYXRhIG5vdGlmaWNhdGlvbkRhdGE7Ci0gICAgICAgIGJvb2xlYW4gdmlzaWJsZTsKLSAgICAgICAgaW50IGludGVnZXI7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBjbGFzcyBEaXNhYmxlUmVjb3JkIGltcGxlbWVudHMgSUJpbmRlci5EZWF0aFJlY2lwaWVudCB7Ci0gICAgICAgIFN0cmluZyBwa2c7Ci0gICAgICAgIGludCB3aGF0OwotICAgICAgICBJQmluZGVyIHRva2VuOwotCi0gICAgICAgIHB1YmxpYyB2b2lkIGJpbmRlckRpZWQoKSB7Ci0gICAgICAgICAgICBTbG9nLmkoVEFHLCAiYmluZGVyIGRpZWQgZm9yIHBrZz0iICsgcGtnKTsKLSAgICAgICAgICAgIGRpc2FibGUoMCwgdG9rZW4sIHBrZyk7Ci0gICAgICAgICAgICB0b2tlbi51bmxpbmtUb0RlYXRoKHRoaXMsIDApOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHVibGljIGludGVyZmFjZSBOb3RpZmljYXRpb25DYWxsYmFja3MgewotICAgICAgICB2b2lkIG9uU2V0RGlzYWJsZWQoaW50IHN0YXR1cyk7Ci0gICAgICAgIHZvaWQgb25DbGVhckFsbCgpOwotICAgICAgICB2b2lkIG9uTm90aWZpY2F0aW9uQ2xpY2soU3RyaW5nIHBrZywgU3RyaW5nIHRhZywgaW50IGlkKTsKLSAgICAgICAgdm9pZCBvblBhbmVsUmV2ZWFsZWQoKTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIGNsYXNzIEV4cGFuZGVkRGlhbG9nIGV4dGVuZHMgRGlhbG9nIHsKLSAgICAgICAgRXhwYW5kZWREaWFsb2coQ29udGV4dCBjb250ZXh0KSB7Ci0gICAgICAgICAgICBzdXBlcihjb250ZXh0LCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0eWxlLlRoZW1lX0xpZ2h0X05vVGl0bGVCYXIpOwotICAgICAgICB9Ci0KLSAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHB1YmxpYyBib29sZWFuIGRpc3BhdGNoS2V5RXZlbnQoS2V5RXZlbnQgZXZlbnQpIHsKLSAgICAgICAgICAgIGJvb2xlYW4gZG93biA9IGV2ZW50LmdldEFjdGlvbigpID09IEtleUV2ZW50LkFDVElPTl9ET1dOOwotICAgICAgICAgICAgc3dpdGNoIChldmVudC5nZXRLZXlDb2RlKCkpIHsKLSAgICAgICAgICAgIGNhc2UgS2V5RXZlbnQuS0VZQ09ERV9CQUNLOgotICAgICAgICAgICAgICAgIGlmICghZG93bikgewotICAgICAgICAgICAgICAgICAgICBTdGF0dXNCYXJTZXJ2aWNlLnRoaXMuZGVhY3RpdmF0ZSgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBzdXBlci5kaXNwYXRjaEtleUV2ZW50KGV2ZW50KTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICBmaW5hbCBDb250ZXh0IG1Db250ZXh0OwotICAgIGZpbmFsIERpc3BsYXkgbURpc3BsYXk7Ci0gICAgU3RhdHVzQmFyVmlldyBtU3RhdHVzQmFyVmlldzsKLSAgICBpbnQgbVBpeGVsRm9ybWF0OwotICAgIEggbUhhbmRsZXIgPSBuZXcgSCgpOwotICAgIE9iamVjdCBtUXVldWVMb2NrID0gbmV3IE9iamVjdCgpOwotICAgIEFycmF5TGlzdDxQZW5kaW5nT3A+IG1RdWV1ZSA9IG5ldyBBcnJheUxpc3Q8UGVuZGluZ09wPigpOwotICAgIE5vdGlmaWNhdGlvbkNhbGxiYWNrcyBtTm90aWZpY2F0aW9uQ2FsbGJhY2tzOwotICAgIAotICAgIC8vIEFsbCBhY2Nlc3NlcyB0byBtSWNvbk1hcCBhbmQgbU5vdGlmaWNhdGlvbkRhdGEgYXJlIHN5bmNyb25pemVkIG9uIHRob3NlIG9iamVjdHMsCi0gICAgLy8gYnV0IHRoaXMgaXMgb25seSBzbyBkdW1wKCkgY2FuIHdvcmsgY29ycmVjdGx5LiAgTW9kaWZ5aW5nIHRoZXNlIG91dHNpZGUgb2YgdGhlIFVJCi0gICAgLy8gdGhyZWFkIHdpbGwgbm90IHdvcmssIHRoZXJlIGFyZSBwbGFjZXMgaW4gdGhlIGNvZGUgdGhhdCB1bmxvY2sgYW5kIHJlYXF1aXJlIGJldHdlZW4KLSAgICAvLyByZWFkcyBhbmQgcmVxdWlyZSB0aGVtIHRvIG5vdCBiZSBtb2RpZmllZC4KLQotICAgIC8vIGljb25zCi0gICAgSGFzaE1hcDxJQmluZGVyLFN0YXR1c0Jhckljb24+IG1JY29uTWFwID0gbmV3IEhhc2hNYXA8SUJpbmRlcixTdGF0dXNCYXJJY29uPigpOwotICAgIEFycmF5TGlzdDxTdGF0dXNCYXJJY29uPiBtSWNvbkxpc3QgPSBuZXcgQXJyYXlMaXN0PFN0YXR1c0Jhckljb24+KCk7Ci0gICAgU3RyaW5nW10gbVJpZ2h0SWNvblNsb3RzOwotICAgIFN0YXR1c0Jhckljb25bXSBtUmlnaHRJY29uczsKLSAgICBMaW5lYXJMYXlvdXQgbUljb25zOwotICAgIEljb25NZXJnZXIgbU5vdGlmaWNhdGlvbkljb25zOwotICAgIExpbmVhckxheW91dCBtU3RhdHVzSWNvbnM7Ci0gICAgU3RhdHVzQmFySWNvbiBtTW9yZUljb247Ci0gICAgcHJpdmF0ZSBVbmluc3RhbGxSZWNlaXZlciBtVW5pbnN0YWxsUmVjZWl2ZXI7Ci0KLSAgICAvLyBleHBhbmRlZCBub3RpZmljYXRpb25zCi0gICAgTm90aWZpY2F0aW9uVmlld0xpc3QgbU5vdGlmaWNhdGlvbkRhdGEgPSBuZXcgTm90aWZpY2F0aW9uVmlld0xpc3QoKTsKLSAgICBEaWFsb2cgbUV4cGFuZGVkRGlhbG9nOwotICAgIEV4cGFuZGVkVmlldyBtRXhwYW5kZWRWaWV3OwotICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIG1FeHBhbmRlZFBhcmFtczsKLSAgICBTY3JvbGxWaWV3IG1TY3JvbGxWaWV3OwotICAgIFZpZXcgbU5vdGlmaWNhdGlvbkxpbmVhckxheW91dDsKLSAgICBUZXh0VmlldyBtT25nb2luZ1RpdGxlOwotICAgIExpbmVhckxheW91dCBtT25nb2luZ0l0ZW1zOwotICAgIFRleHRWaWV3IG1MYXRlc3RUaXRsZTsKLSAgICBMaW5lYXJMYXlvdXQgbUxhdGVzdEl0ZW1zOwotICAgIFRleHRWaWV3IG1Ob05vdGlmaWNhdGlvbnNUaXRsZTsKLSAgICBUZXh0VmlldyBtU3BuTGFiZWw7Ci0gICAgVGV4dFZpZXcgbVBsbW5MYWJlbDsKLSAgICBUZXh0VmlldyBtQ2xlYXJCdXR0b247Ci0gICAgVmlldyBtRXhwYW5kZWRDb250ZW50czsKLSAgICBDbG9zZURyYWdIYW5kbGUgbUNsb3NlVmlldzsKLSAgICBpbnRbXSBtUG9zaXRpb25UbXAgPSBuZXcgaW50WzJdOwotICAgIGJvb2xlYW4gbUV4cGFuZGVkOwotICAgIGJvb2xlYW4gbUV4cGFuZGVkVmlzaWJsZTsKLQotICAgIC8vIHRoZSBkYXRlIHZpZXcKLSAgICBEYXRlVmlldyBtRGF0ZVZpZXc7Ci0KLSAgICAvLyB0aGUgdHJhY2tlciB2aWV3Ci0gICAgVHJhY2tpbmdWaWV3IG1UcmFja2luZ1ZpZXc7Ci0gICAgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMgbVRyYWNraW5nUGFyYW1zOwotICAgIGludCBtVHJhY2tpbmdQb3NpdGlvbjsgLy8gdGhlIHBvc2l0aW9uIG9mIHRoZSB0b3Agb2YgdGhlIHRyYWNraW5nIHZpZXcuCi0KLSAgICAvLyB0aWNrZXIKLSAgICBwcml2YXRlIFRpY2tlciBtVGlja2VyOwotICAgIHByaXZhdGUgVmlldyBtVGlja2VyVmlldzsKLSAgICBwcml2YXRlIGJvb2xlYW4gbVRpY2tpbmc7Ci0gICAgCi0gICAgLy8gVHJhY2tpbmcgZmluZ2VyIGZvciBvcGVuaW5nL2Nsb3NpbmcuCi0gICAgaW50IG1FZGdlQm9yZGVyOyAvLyBjb3JyZXNwb25kcyB0byBSLmRpbWVuLnN0YXR1c19iYXJfZWRnZV9pZ25vcmUKLSAgICBib29sZWFuIG1UcmFja2luZzsKLSAgICBWZWxvY2l0eVRyYWNrZXIgbVZlbG9jaXR5VHJhY2tlcjsKLSAgICAKLSAgICBzdGF0aWMgZmluYWwgaW50IEFOSU1fRlJBTUVfRFVSQVRJT04gPSAoMTAwMC82MCk7Ci0gICAgCi0gICAgYm9vbGVhbiBtQW5pbWF0aW5nOwotICAgIGxvbmcgbUN1ckFuaW1hdGlvblRpbWU7Ci0gICAgZmxvYXQgbURpc3BsYXlIZWlnaHQ7Ci0gICAgZmxvYXQgbUFuaW1ZOwotICAgIGZsb2F0IG1BbmltVmVsOwotICAgIGZsb2F0IG1BbmltQWNjZWw7Ci0gICAgbG9uZyBtQW5pbUxhc3RUaW1lOwotICAgIGJvb2xlYW4gbUFuaW1hdGluZ1JldmVhbCA9IGZhbHNlOwotICAgIGludCBtVmlld0RlbHRhOwotICAgIGludFtdIG1BYnNQb3MgPSBuZXcgaW50WzJdOwotICAgIAotICAgIC8vIGZvciBkaXNhYmxpbmcgdGhlIHN0YXR1cyBiYXIKLSAgICBBcnJheUxpc3Q8RGlzYWJsZVJlY29yZD4gbURpc2FibGVSZWNvcmRzID0gbmV3IEFycmF5TGlzdDxEaXNhYmxlUmVjb3JkPigpOwotICAgIGludCBtRGlzYWJsZWQgPSAwOwotCi0gICAgLyoqCi0gICAgICogQ29uc3RydWN0IHRoZSBzZXJ2aWNlLCBhZGQgdGhlIHN0YXR1cyBiYXIgdmlldyB0byB0aGUgd2luZG93IG1hbmFnZXIKLSAgICAgKi8KLSAgICBwdWJsaWMgU3RhdHVzQmFyU2VydmljZShDb250ZXh0IGNvbnRleHQpIHsKLSAgICAgICAgbUNvbnRleHQgPSBjb250ZXh0OwotICAgICAgICBtRGlzcGxheSA9ICgoV2luZG93TWFuYWdlciljb250ZXh0LmdldFN5c3RlbVNlcnZpY2UoCi0gICAgICAgICAgICAgICAgQ29udGV4dC5XSU5ET1dfU0VSVklDRSkpLmdldERlZmF1bHREaXNwbGF5KCk7Ci0gICAgICAgIG1ha2VTdGF0dXNCYXJWaWV3KGNvbnRleHQpOwotICAgICAgICBtVW5pbnN0YWxsUmVjZWl2ZXIgPSBuZXcgVW5pbnN0YWxsUmVjZWl2ZXIoKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzZXROb3RpZmljYXRpb25DYWxsYmFja3MoTm90aWZpY2F0aW9uQ2FsbGJhY2tzIGxpc3RlbmVyKSB7Ci0gICAgICAgIG1Ob3RpZmljYXRpb25DYWxsYmFja3MgPSBsaXN0ZW5lcjsKLSAgICB9Ci0KLSAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAgIC8vIENvbnN0cnVjdGluZyB0aGUgdmlldwotICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAgcHJpdmF0ZSB2b2lkIG1ha2VTdGF0dXNCYXJWaWV3KENvbnRleHQgY29udGV4dCkgewotICAgICAgICBSZXNvdXJjZXMgcmVzID0gY29udGV4dC5nZXRSZXNvdXJjZXMoKTsKLSAgICAgICAgbVJpZ2h0SWNvblNsb3RzID0gcmVzLmdldFN0cmluZ0FycmF5KGNvbS5hbmRyb2lkLmludGVybmFsLlIuYXJyYXkuc3RhdHVzX2Jhcl9pY29uX29yZGVyKTsKLSAgICAgICAgbVJpZ2h0SWNvbnMgPSBuZXcgU3RhdHVzQmFySWNvblttUmlnaHRJY29uU2xvdHMubGVuZ3RoXTsKLQotICAgICAgICBFeHBhbmRlZFZpZXcgZXhwYW5kZWQgPSAoRXhwYW5kZWRWaWV3KVZpZXcuaW5mbGF0ZShjb250ZXh0LAotICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIubGF5b3V0LnN0YXR1c19iYXJfZXhwYW5kZWQsIG51bGwpOwotICAgICAgICBleHBhbmRlZC5tU2VydmljZSA9IHRoaXM7Ci0gICAgICAgIFN0YXR1c0JhclZpZXcgc2IgPSAoU3RhdHVzQmFyVmlldylWaWV3LmluZmxhdGUoY29udGV4dCwKLSAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmxheW91dC5zdGF0dXNfYmFyLCBudWxsKTsKLSAgICAgICAgc2IubVNlcnZpY2UgPSB0aGlzOwotCi0gICAgICAgIC8vIGZpZ3VyZSBvdXQgd2hpY2ggcGl4ZWwtZm9ybWF0IHRvIHVzZSBmb3IgdGhlIHN0YXR1cyBiYXIuCi0gICAgICAgIG1QaXhlbEZvcm1hdCA9IFBpeGVsRm9ybWF0LlRSQU5TTFVDRU5UOwotICAgICAgICBEcmF3YWJsZSBiZyA9IHNiLmdldEJhY2tncm91bmQoKTsKLSAgICAgICAgaWYgKGJnICE9IG51bGwpIHsKLSAgICAgICAgICAgIG1QaXhlbEZvcm1hdCA9IGJnLmdldE9wYWNpdHkoKTsKLSAgICAgICAgfQotCi0gICAgICAgIG1TdGF0dXNCYXJWaWV3ID0gc2I7Ci0gICAgICAgIG1TdGF0dXNJY29ucyA9IChMaW5lYXJMYXlvdXQpc2IuZmluZFZpZXdCeUlkKFIuaWQuc3RhdHVzSWNvbnMpOwotICAgICAgICBtTm90aWZpY2F0aW9uSWNvbnMgPSAoSWNvbk1lcmdlcilzYi5maW5kVmlld0J5SWQoUi5pZC5ub3RpZmljYXRpb25JY29ucyk7Ci0gICAgICAgIG1Ob3RpZmljYXRpb25JY29ucy5zZXJ2aWNlID0gdGhpczsKLSAgICAgICAgbUljb25zID0gKExpbmVhckxheW91dClzYi5maW5kVmlld0J5SWQoUi5pZC5pY29ucyk7Ci0gICAgICAgIG1UaWNrZXJWaWV3ID0gc2IuZmluZFZpZXdCeUlkKFIuaWQudGlja2VyKTsKLSAgICAgICAgbURhdGVWaWV3ID0gKERhdGVWaWV3KXNiLmZpbmRWaWV3QnlJZChSLmlkLmRhdGUpOwotCi0gICAgICAgIG1FeHBhbmRlZERpYWxvZyA9IG5ldyBFeHBhbmRlZERpYWxvZyhjb250ZXh0KTsKLSAgICAgICAgbUV4cGFuZGVkVmlldyA9IGV4cGFuZGVkOwotICAgICAgICBtRXhwYW5kZWRDb250ZW50cyA9IGV4cGFuZGVkLmZpbmRWaWV3QnlJZChSLmlkLm5vdGlmaWNhdGlvbkxpbmVhckxheW91dCk7Ci0gICAgICAgIG1PbmdvaW5nVGl0bGUgPSAoVGV4dFZpZXcpZXhwYW5kZWQuZmluZFZpZXdCeUlkKFIuaWQub25nb2luZ1RpdGxlKTsKLSAgICAgICAgbU9uZ29pbmdJdGVtcyA9IChMaW5lYXJMYXlvdXQpZXhwYW5kZWQuZmluZFZpZXdCeUlkKFIuaWQub25nb2luZ0l0ZW1zKTsKLSAgICAgICAgbUxhdGVzdFRpdGxlID0gKFRleHRWaWV3KWV4cGFuZGVkLmZpbmRWaWV3QnlJZChSLmlkLmxhdGVzdFRpdGxlKTsKLSAgICAgICAgbUxhdGVzdEl0ZW1zID0gKExpbmVhckxheW91dClleHBhbmRlZC5maW5kVmlld0J5SWQoUi5pZC5sYXRlc3RJdGVtcyk7Ci0gICAgICAgIG1Ob05vdGlmaWNhdGlvbnNUaXRsZSA9IChUZXh0VmlldylleHBhbmRlZC5maW5kVmlld0J5SWQoUi5pZC5ub05vdGlmaWNhdGlvbnNUaXRsZSk7Ci0gICAgICAgIG1DbGVhckJ1dHRvbiA9IChUZXh0VmlldylleHBhbmRlZC5maW5kVmlld0J5SWQoUi5pZC5jbGVhcl9hbGxfYnV0dG9uKTsKLSAgICAgICAgbUNsZWFyQnV0dG9uLnNldE9uQ2xpY2tMaXN0ZW5lcihtQ2xlYXJCdXR0b25MaXN0ZW5lcik7Ci0gICAgICAgIG1TcG5MYWJlbCA9IChUZXh0VmlldylleHBhbmRlZC5maW5kVmlld0J5SWQoUi5pZC5zcG5MYWJlbCk7Ci0gICAgICAgIG1QbG1uTGFiZWwgPSAoVGV4dFZpZXcpZXhwYW5kZWQuZmluZFZpZXdCeUlkKFIuaWQucGxtbkxhYmVsKTsKLSAgICAgICAgbVNjcm9sbFZpZXcgPSAoU2Nyb2xsVmlldylleHBhbmRlZC5maW5kVmlld0J5SWQoUi5pZC5zY3JvbGwpOwotICAgICAgICBtTm90aWZpY2F0aW9uTGluZWFyTGF5b3V0ID0gZXhwYW5kZWQuZmluZFZpZXdCeUlkKFIuaWQubm90aWZpY2F0aW9uTGluZWFyTGF5b3V0KTsKLQotICAgICAgICBtT25nb2luZ1RpdGxlLnNldFZpc2liaWxpdHkoVmlldy5HT05FKTsKLSAgICAgICAgbUxhdGVzdFRpdGxlLnNldFZpc2liaWxpdHkoVmlldy5HT05FKTsKLSAgICAgICAgCi0gICAgICAgIG1UaWNrZXIgPSBuZXcgTXlUaWNrZXIoY29udGV4dCwgc2IpOwotCi0gICAgICAgIFRpY2tlclZpZXcgdGlja2VyVmlldyA9IChUaWNrZXJWaWV3KXNiLmZpbmRWaWV3QnlJZChSLmlkLnRpY2tlclRleHQpOwotICAgICAgICB0aWNrZXJWaWV3Lm1UaWNrZXIgPSBtVGlja2VyOwotCi0gICAgICAgIG1UcmFja2luZ1ZpZXcgPSAoVHJhY2tpbmdWaWV3KVZpZXcuaW5mbGF0ZShjb250ZXh0LAotICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIubGF5b3V0LnN0YXR1c19iYXJfdHJhY2tpbmcsIG51bGwpOwotICAgICAgICBtVHJhY2tpbmdWaWV3Lm1TZXJ2aWNlID0gdGhpczsKLSAgICAgICAgbUNsb3NlVmlldyA9IChDbG9zZURyYWdIYW5kbGUpbVRyYWNraW5nVmlldy5maW5kVmlld0J5SWQoUi5pZC5jbG9zZSk7Ci0gICAgICAgIG1DbG9zZVZpZXcubVNlcnZpY2UgPSB0aGlzOwotCi0gICAgICAgIG1FZGdlQm9yZGVyID0gcmVzLmdldERpbWVuc2lvblBpeGVsU2l6ZShSLmRpbWVuLnN0YXR1c19iYXJfZWRnZV9pZ25vcmUpOwotCi0gICAgICAgIC8vIGFkZCB0aGUgbW9yZSBpY29uIGZvciB0aGUgbm90aWZpY2F0aW9ucwotICAgICAgICBJY29uRGF0YSBtb3JlRGF0YSA9IEljb25EYXRhLm1ha2VJY29uKG51bGwsIGNvbnRleHQuZ2V0UGFja2FnZU5hbWUoKSwKLSAgICAgICAgICAgICAgICBSLmRyYXdhYmxlLnN0YXRfbm90aWZ5X21vcmUsIDAsIDQyKTsKLSAgICAgICAgbU1vcmVJY29uID0gbmV3IFN0YXR1c0Jhckljb24oY29udGV4dCwgbW9yZURhdGEsIG1Ob3RpZmljYXRpb25JY29ucyk7Ci0gICAgICAgIG1Nb3JlSWNvbi52aWV3LnNldElkKFIuZHJhd2FibGUuc3RhdF9ub3RpZnlfbW9yZSk7Ci0gICAgICAgIG1Ob3RpZmljYXRpb25JY29ucy5tb3JlSWNvbiA9IG1Nb3JlSWNvbjsKLSAgICAgICAgbU5vdGlmaWNhdGlvbkljb25zLmFkZFZpZXcobU1vcmVJY29uLnZpZXcpOwotCi0gICAgICAgIC8vIHNldCB0aGUgaW5pdGFsIHZpZXcgdmlzaWJpbGl0eQotICAgICAgICBzZXRBcmVUaGVyZU5vdGlmaWNhdGlvbnMoKTsKLSAgICAgICAgbURhdGVWaWV3LnNldFZpc2liaWxpdHkoVmlldy5JTlZJU0lCTEUpOwotCi0gICAgICAgIC8vIGJlZm9yZSB3ZSByZWdpc3RlciBmb3IgYnJvYWRjYXN0cwotICAgICAgICBtUGxtbkxhYmVsLnNldFRleHQoUi5zdHJpbmcubG9ja3NjcmVlbl9jYXJyaWVyX2RlZmF1bHQpOwotICAgICAgICBtUGxtbkxhYmVsLnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKLSAgICAgICAgbVNwbkxhYmVsLnNldFRleHQoIiIpOwotICAgICAgICBtU3BuTGFiZWwuc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOwotCi0gICAgICAgIC8vIHJlY2VpdmUgYnJvYWRjYXN0cwotICAgICAgICBJbnRlbnRGaWx0ZXIgZmlsdGVyID0gbmV3IEludGVudEZpbHRlcigpOwotICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKEludGVudC5BQ1RJT05fQ09ORklHVVJBVElPTl9DSEFOR0VEKTsKLSAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihJbnRlbnQuQUNUSU9OX0NMT1NFX1NZU1RFTV9ESUFMT0dTKTsKLSAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihJbnRlbnQuQUNUSU9OX1NDUkVFTl9PRkYpOwotICAgICAgICBmaWx0ZXIuYWRkQWN0aW9uKFRlbGVwaG9ueS5JbnRlbnRzLlNQTl9TVFJJTkdTX1VQREFURURfQUNUSU9OKTsKLSAgICAgICAgY29udGV4dC5yZWdpc3RlclJlY2VpdmVyKG1Ccm9hZGNhc3RSZWNlaXZlciwgZmlsdGVyKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBzeXN0ZW1SZWFkeSgpIHsKLSAgICAgICAgZmluYWwgU3RhdHVzQmFyVmlldyB2aWV3ID0gbVN0YXR1c0JhclZpZXc7Ci0gICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIGxwID0gbmV3IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zKAotICAgICAgICAgICAgICAgIFZpZXdHcm91cC5MYXlvdXRQYXJhbXMuTUFUQ0hfUEFSRU5ULAotICAgICAgICAgICAgICAgIHZpZXcuZ2V0Q29udGV4dCgpLmdldFJlc291cmNlcygpLmdldERpbWVuc2lvblBpeGVsU2l6ZSgKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZGltZW4uc3RhdHVzX2Jhcl9oZWlnaHQpLAotICAgICAgICAgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLlRZUEVfU1RBVFVTX0JBUiwKLSAgICAgICAgICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX05PVF9GT0NVU0FCTEV8Ci0gICAgICAgICAgICAgICAgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19UT1VDSEFCTEVfV0hFTl9XQUtJTkcsCi0gICAgICAgICAgICAgICAgbVBpeGVsRm9ybWF0KTsKLSAgICAgICAgbHAuZ3Jhdml0eSA9IEdyYXZpdHkuVE9QIHwgR3Jhdml0eS5GSUxMX0hPUklaT05UQUw7Ci0gICAgICAgIGxwLnNldFRpdGxlKCJTdGF0dXNCYXIiKTsKLSAgICAgICAgbHAud2luZG93QW5pbWF0aW9ucyA9IFIuc3R5bGUuQW5pbWF0aW9uX1N0YXR1c0JhcjsKLQotICAgICAgICBXaW5kb3dNYW5hZ2VySW1wbC5nZXREZWZhdWx0KCkuYWRkVmlldyh2aWV3LCBscCk7Ci0gICAgfQotICAgIAotICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAgLy8gRnJvbSBJU3RhdHVzQmFyCi0gICAgLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAgICBwdWJsaWMgdm9pZCBhY3RpdmF0ZSgpIHsKLSAgICAgICAgZW5mb3JjZUV4cGFuZFN0YXR1c0JhcigpOwotICAgICAgICBhZGRQZW5kaW5nT3AoT1BfRVhQQU5ELCBudWxsLCB0cnVlKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCBkZWFjdGl2YXRlKCkgewotICAgICAgICBlbmZvcmNlRXhwYW5kU3RhdHVzQmFyKCk7Ci0gICAgICAgIGFkZFBlbmRpbmdPcChPUF9FWFBBTkQsIG51bGwsIGZhbHNlKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCB0b2dnbGUoKSB7Ci0gICAgICAgIGVuZm9yY2VFeHBhbmRTdGF0dXNCYXIoKTsKLSAgICAgICAgYWRkUGVuZGluZ09wKE9QX1RPR0dMRSwgbnVsbCwgZmFsc2UpOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIGRpc2FibGUoaW50IHdoYXQsIElCaW5kZXIgdG9rZW4sIFN0cmluZyBwa2cpIHsKLSAgICAgICAgZW5mb3JjZVN0YXR1c0JhcigpOwotICAgICAgICBzeW5jaHJvbml6ZWQgKG1Ob3RpZmljYXRpb25DYWxsYmFja3MpIHsKLSAgICAgICAgICAgIC8vIFRoaXMgaXMgYSBsaXR0bGUgZ3Jvc3MsIGJ1dCBJIHRoaW5rIGl0J3Mgc2FmZSBhcyBsb25nIGFzIG5vYm9keSBlbHNlCi0gICAgICAgICAgICAvLyBzeW5jaHJvbml6ZXMgb24gbU5vdGlmaWNhdGlvbkNhbGxiYWNrcy4gIEl0J3MgaW1wb3J0YW50IHRoYXQgdGhlIHRoZSBjYWxsYmFjawotICAgICAgICAgICAgLy8gYW5kIHRoZSBwZW5kaW5nIG9wIGdldCBkb25lIGluIHRoZSBjb3JyZWN0IG9yZGVyIGFuZCBub3QgaW50ZXJsZWF2ZWQgd2l0aAotICAgICAgICAgICAgLy8gb3RoZXIgY2FsbHMsIG90aGVyd2lzZSB0aGV5J2xsIGdldCBvdXQgb2Ygc3luYy4KLSAgICAgICAgICAgIGludCBuZXQ7Ci0gICAgICAgICAgICBzeW5jaHJvbml6ZWQgKG1EaXNhYmxlUmVjb3JkcykgewotICAgICAgICAgICAgICAgIG1hbmFnZURpc2FibGVMaXN0TG9ja2VkKHdoYXQsIHRva2VuLCBwa2cpOwotICAgICAgICAgICAgICAgIG5ldCA9IGdhdGhlckRpc2FibGVBY3Rpb25zTG9ja2VkKCk7Ci0gICAgICAgICAgICAgICAgbU5vdGlmaWNhdGlvbkNhbGxiYWNrcy5vblNldERpc2FibGVkKG5ldCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBhZGRQZW5kaW5nT3AoT1BfRElTQUJMRSwgbmV0KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyBJQmluZGVyIGFkZEljb24oU3RyaW5nIHNsb3QsIFN0cmluZyBpY29uUGFja2FnZSwgaW50IGljb25JZCwgaW50IGljb25MZXZlbCkgewotICAgICAgICBlbmZvcmNlU3RhdHVzQmFyKCk7Ci0gICAgICAgIHJldHVybiBhZGRJY29uKEljb25EYXRhLm1ha2VJY29uKHNsb3QsIGljb25QYWNrYWdlLCBpY29uSWQsIGljb25MZXZlbCwgMCksIG51bGwpOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHVwZGF0ZUljb24oSUJpbmRlciBrZXksCi0gICAgICAgICAgICBTdHJpbmcgc2xvdCwgU3RyaW5nIGljb25QYWNrYWdlLCBpbnQgaWNvbklkLCBpbnQgaWNvbkxldmVsKSB7Ci0gICAgICAgIGVuZm9yY2VTdGF0dXNCYXIoKTsKLSAgICAgICAgdXBkYXRlSWNvbihrZXksIEljb25EYXRhLm1ha2VJY29uKHNsb3QsIGljb25QYWNrYWdlLCBpY29uSWQsIGljb25MZXZlbCwgMCksIG51bGwpOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHJlbW92ZUljb24oSUJpbmRlciBrZXkpIHsKLSAgICAgICAgZW5mb3JjZVN0YXR1c0JhcigpOwotICAgICAgICBhZGRQZW5kaW5nT3AoT1BfUkVNT1ZFX0lDT04sIGtleSwgbnVsbCwgbnVsbCwgLTEpOwotICAgIH0KLQotICAgIHByaXZhdGUgdm9pZCBlbmZvcmNlU3RhdHVzQmFyKCkgewotICAgICAgICBtQ29udGV4dC5lbmZvcmNlQ2FsbGluZ09yU2VsZlBlcm1pc3Npb24oCi0gICAgICAgICAgICAgICAgYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uLlNUQVRVU19CQVIsCi0gICAgICAgICAgICAgICAgIlN0YXR1c0JhclNlcnZpY2UiKTsKLSAgICB9Ci0KLSAgICBwcml2YXRlIHZvaWQgZW5mb3JjZUV4cGFuZFN0YXR1c0JhcigpIHsKLSAgICAgICAgbUNvbnRleHQuZW5mb3JjZUNhbGxpbmdPclNlbGZQZXJtaXNzaW9uKAotICAgICAgICAgICAgICAgIGFuZHJvaWQuTWFuaWZlc3QucGVybWlzc2lvbi5FWFBBTkRfU1RBVFVTX0JBUiwKLSAgICAgICAgICAgICAgICAiU3RhdHVzQmFyU2VydmljZSIpOwotICAgIH0KLQotICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAgLy8gQ2FuIGJlIGNhbGxlZCBmcm9tIGFueSB0aHJlYWQKLSAgICAvLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotICAgIHB1YmxpYyBJQmluZGVyIGFkZEljb24oSWNvbkRhdGEgZGF0YSwgTm90aWZpY2F0aW9uRGF0YSBuKSB7Ci0gICAgICAgIGludCBzbG90OwotICAgICAgICAvLyBhc3NlcnQgZWFybHktb24gaWYgdGhleSB1c2luZyBhIHNsb3QgdGhhdCBkb2Vzbid0IGV4aXN0LgotICAgICAgICBpZiAoZGF0YSAhPSBudWxsICYmIG4gPT0gbnVsbCkgewotICAgICAgICAgICAgc2xvdCA9IGdldFJpZ2h0SWNvbkluZGV4KGRhdGEuc2xvdCk7Ci0gICAgICAgICAgICBpZiAoc2xvdCA8IDApIHsKLSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgU2VjdXJpdHlFeGNlcHRpb24oImludmFsaWQgc3RhdHVzIGJhciBpY29uIHNsb3Q6ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICsgKGRhdGEuc2xvdCAhPSBudWxsID8gIiciICsgZGF0YS5zbG90ICsgIiciIDogIm51bGwiKSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBzbG90ID0gLTE7Ci0gICAgICAgIH0KLSAgICAgICAgSUJpbmRlciBrZXkgPSBuZXcgQmluZGVyKCk7Ci0gICAgICAgIGFkZFBlbmRpbmdPcChPUF9BRERfSUNPTiwga2V5LCBkYXRhLCBuLCAtMSk7Ci0gICAgICAgIHJldHVybiBrZXk7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgdXBkYXRlSWNvbihJQmluZGVyIGtleSwgSWNvbkRhdGEgZGF0YSwgTm90aWZpY2F0aW9uRGF0YSBuKSB7Ci0gICAgICAgIGFkZFBlbmRpbmdPcChPUF9VUERBVEVfSUNPTiwga2V5LCBkYXRhLCBuLCAtMSk7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgc2V0SWNvblZpc2liaWxpdHkoSUJpbmRlciBrZXksIGJvb2xlYW4gdmlzaWJsZSkgewotICAgICAgICBhZGRQZW5kaW5nT3AoT1BfU0VUX1ZJU0lCTEUsIGtleSwgdmlzaWJsZSk7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSB2b2lkIGFkZFBlbmRpbmdPcChpbnQgY29kZSwgSUJpbmRlciBrZXksIEljb25EYXRhIGRhdGEsIE5vdGlmaWNhdGlvbkRhdGEgbiwgaW50IGkpIHsKLSAgICAgICAgc3luY2hyb25pemVkIChtUXVldWVMb2NrKSB7Ci0gICAgICAgICAgICBQZW5kaW5nT3Agb3AgPSBuZXcgUGVuZGluZ09wKCk7Ci0gICAgICAgICAgICBvcC5rZXkgPSBrZXk7Ci0gICAgICAgICAgICBvcC5jb2RlID0gY29kZTsKLSAgICAgICAgICAgIG9wLmljb25EYXRhID0gZGF0YSA9PSBudWxsID8gbnVsbCA6IGRhdGEuY2xvbmUoKTsKLSAgICAgICAgICAgIG9wLm5vdGlmaWNhdGlvbkRhdGEgPSBuOwotICAgICAgICAgICAgb3AuaW50ZWdlciA9IGk7Ci0gICAgICAgICAgICBtUXVldWUuYWRkKG9wKTsKLSAgICAgICAgICAgIGlmIChtUXVldWUuc2l6ZSgpID09IDEpIHsKLSAgICAgICAgICAgICAgICBtSGFuZGxlci5zZW5kRW1wdHlNZXNzYWdlKDIpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSB2b2lkIGFkZFBlbmRpbmdPcChpbnQgY29kZSwgSUJpbmRlciBrZXksIGJvb2xlYW4gdmlzaWJsZSkgewotICAgICAgICBzeW5jaHJvbml6ZWQgKG1RdWV1ZUxvY2spIHsKLSAgICAgICAgICAgIFBlbmRpbmdPcCBvcCA9IG5ldyBQZW5kaW5nT3AoKTsKLSAgICAgICAgICAgIG9wLmtleSA9IGtleTsKLSAgICAgICAgICAgIG9wLmNvZGUgPSBjb2RlOwotICAgICAgICAgICAgb3AudmlzaWJsZSA9IHZpc2libGU7Ci0gICAgICAgICAgICBtUXVldWUuYWRkKG9wKTsKLSAgICAgICAgICAgIGlmIChtUXVldWUuc2l6ZSgpID09IDEpIHsKLSAgICAgICAgICAgICAgICBtSGFuZGxlci5zZW5kRW1wdHlNZXNzYWdlKDEpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSB2b2lkIGFkZFBlbmRpbmdPcChpbnQgY29kZSwgaW50IGludGVnZXIpIHsKLSAgICAgICAgc3luY2hyb25pemVkIChtUXVldWVMb2NrKSB7Ci0gICAgICAgICAgICBQZW5kaW5nT3Agb3AgPSBuZXcgUGVuZGluZ09wKCk7Ci0gICAgICAgICAgICBvcC5jb2RlID0gY29kZTsKLSAgICAgICAgICAgIG9wLmludGVnZXIgPSBpbnRlZ2VyOwotICAgICAgICAgICAgbVF1ZXVlLmFkZChvcCk7Ci0gICAgICAgICAgICBpZiAobVF1ZXVlLnNpemUoKSA9PSAxKSB7Ci0gICAgICAgICAgICAgICAgbUhhbmRsZXIuc2VuZEVtcHR5TWVzc2FnZSgxKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIC8vIGxvY2sgb24gbURpc2FibGVSZWNvcmRzCi0gICAgdm9pZCBtYW5hZ2VEaXNhYmxlTGlzdExvY2tlZChpbnQgd2hhdCwgSUJpbmRlciB0b2tlbiwgU3RyaW5nIHBrZykgewotICAgICAgICBpZiAoU1BFVykgewotICAgICAgICAgICAgU2xvZy5kKFRBRywgIm1hbmFnZURpc2FibGVMaXN0IHdoYXQ9MHgiICsgSW50ZWdlci50b0hleFN0cmluZyh3aGF0KQotICAgICAgICAgICAgICAgICAgICArICIgcGtnPSIgKyBwa2cpOwotICAgICAgICB9Ci0gICAgICAgIC8vIHVwZGF0ZSB0aGUgbGlzdAotICAgICAgICBzeW5jaHJvbml6ZWQgKG1EaXNhYmxlUmVjb3JkcykgewotICAgICAgICAgICAgZmluYWwgaW50IE4gPSBtRGlzYWJsZVJlY29yZHMuc2l6ZSgpOwotICAgICAgICAgICAgRGlzYWJsZVJlY29yZCB0b2sgPSBudWxsOwotICAgICAgICAgICAgaW50IGk7Ci0gICAgICAgICAgICBmb3IgKGk9MDsgaTxOOyBpKyspIHsKLSAgICAgICAgICAgICAgICBEaXNhYmxlUmVjb3JkIHQgPSBtRGlzYWJsZVJlY29yZHMuZ2V0KGkpOwotICAgICAgICAgICAgICAgIGlmICh0LnRva2VuID09IHRva2VuKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRvayA9IHQ7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICh3aGF0ID09IDAgfHwgIXRva2VuLmlzQmluZGVyQWxpdmUoKSkgewotICAgICAgICAgICAgICAgIGlmICh0b2sgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICBtRGlzYWJsZVJlY29yZHMucmVtb3ZlKGkpOwotICAgICAgICAgICAgICAgICAgICB0b2sudG9rZW4udW5saW5rVG9EZWF0aCh0b2ssIDApOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgaWYgKHRvayA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRvayA9IG5ldyBEaXNhYmxlUmVjb3JkKCk7Ci0gICAgICAgICAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0b2tlbi5saW5rVG9EZWF0aCh0b2ssIDApOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGNhdGNoIChSZW1vdGVFeGNlcHRpb24gZXgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsgLy8gZ2l2ZSB1cAotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIG1EaXNhYmxlUmVjb3Jkcy5hZGQodG9rKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgdG9rLndoYXQgPSB3aGF0OwotICAgICAgICAgICAgICAgIHRvay50b2tlbiA9IHRva2VuOwotICAgICAgICAgICAgICAgIHRvay5wa2cgPSBwa2c7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBsb2NrIG9uIG1EaXNhYmxlUmVjb3JkcwotICAgIGludCBnYXRoZXJEaXNhYmxlQWN0aW9uc0xvY2tlZCgpIHsKLSAgICAgICAgZmluYWwgaW50IE4gPSBtRGlzYWJsZVJlY29yZHMuc2l6ZSgpOwotICAgICAgICAvLyBnYXRoZXIgdGhlIG5ldyBuZXQgZmxhZ3MKLSAgICAgICAgaW50IG5ldCA9IDA7Ci0gICAgICAgIGZvciAoaW50IGk9MDsgaTxOOyBpKyspIHsKLSAgICAgICAgICAgIG5ldCB8PSBtRGlzYWJsZVJlY29yZHMuZ2V0KGkpLndoYXQ7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG5ldDsKLSAgICB9Ci0KLSAgICBwcml2YXRlIGludCBnZXRSaWdodEljb25JbmRleChTdHJpbmcgc2xvdCkgewotICAgICAgICBmaW5hbCBpbnQgTiA9IG1SaWdodEljb25TbG90cy5sZW5ndGg7Ci0gICAgICAgIGZvciAoaW50IGk9MDsgaTxOOyBpKyspIHsKLSAgICAgICAgICAgIGlmIChtUmlnaHRJY29uU2xvdHNbaV0uZXF1YWxzKHNsb3QpKSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQotICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAgLy8gQWx3YXlzIGNhbGxlZCBmcm9tIFVJIHRocmVhZAotICAgIC8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0gICAgLyoqCi0gICAgICogQWxsIGNoYW5nZXMgdG8gdGhlIHN0YXR1cyBiYXIgYW5kIG5vdGlmaWNhdGlvbnMgZnVubmVsIHRocm91Z2ggaGVyZSBhbmQgYXJlIGJhdGNoZWQuCi0gICAgICovCi0gICAgcHJpdmF0ZSBjbGFzcyBIIGV4dGVuZHMgSGFuZGxlciB7Ci0gICAgICAgIHB1YmxpYyB2b2lkIGhhbmRsZU1lc3NhZ2UoTWVzc2FnZSBtKSB7Ci0gICAgICAgICAgICBpZiAobS53aGF0ID09IE1TR19BTklNQVRFKSB7Ci0gICAgICAgICAgICAgICAgZG9BbmltYXRpb24oKTsKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobS53aGF0ID09IE1TR19BTklNQVRFX1JFVkVBTCkgewotICAgICAgICAgICAgICAgIGRvUmV2ZWFsQW5pbWF0aW9uKCk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBBcnJheUxpc3Q8UGVuZGluZ09wPiBxdWV1ZTsKLSAgICAgICAgICAgIHN5bmNocm9uaXplZCAobVF1ZXVlTG9jaykgewotICAgICAgICAgICAgICAgIHF1ZXVlID0gbVF1ZXVlOwotICAgICAgICAgICAgICAgIG1RdWV1ZSA9IG5ldyBBcnJheUxpc3Q8UGVuZGluZ09wPigpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBib29sZWFuIHdhc0V4cGFuZGVkID0gbUV4cGFuZGVkOwotCi0gICAgICAgICAgICAvLyBmb3IgZWFjaCBvbmUgaW4gdGhlIHF1ZXVlLCBmaW5kIGFsbCBvZiB0aGUgb25lcyB3aXRoIHRoZSBzYW1lIGtleQotICAgICAgICAgICAgLy8gYW5kIGNvbGxhcHNlIHRoYXQgZG93biBpbnRvIGEgZmluYWwgb3AgYW5kL29yIGNhbGwgdG8gc2V0VmlzaWJpbGl0eSwgZXRjCi0gICAgICAgICAgICBib29sZWFuIGV4cGFuZCA9IHdhc0V4cGFuZGVkOwotICAgICAgICAgICAgYm9vbGVhbiBkb0V4cGFuZCA9IGZhbHNlOwotICAgICAgICAgICAgYm9vbGVhbiBkb0Rpc2FibGUgPSBmYWxzZTsKLSAgICAgICAgICAgIGludCBkaXNhYmxlV2hhdCA9IDA7Ci0gICAgICAgICAgICBpbnQgTiA9IHF1ZXVlLnNpemUoKTsKLSAgICAgICAgICAgIHdoaWxlIChOID4gMCkgewotICAgICAgICAgICAgICAgIFBlbmRpbmdPcCBvcCA9IHF1ZXVlLmdldCgwKTsKLSAgICAgICAgICAgICAgICBib29sZWFuIGRvT3AgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBib29sZWFuIHZpc2libGUgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICBib29sZWFuIGRvVmlzaWJpbGl0eSA9IGZhbHNlOwotICAgICAgICAgICAgICAgIGlmIChvcC5jb2RlID09IE9QX1NFVF9WSVNJQkxFKSB7Ci0gICAgICAgICAgICAgICAgICAgIGRvVmlzaWJpbGl0eSA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIHZpc2libGUgPSBvcC52aXNpYmxlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlIGlmIChvcC5jb2RlID09IE9QX0VYUEFORCkgewotICAgICAgICAgICAgICAgICAgICBkb0V4cGFuZCA9IHRydWU7Ci0gICAgICAgICAgICAgICAgICAgIGV4cGFuZCA9IG9wLnZpc2libGU7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGVsc2UgaWYgKG9wLmNvZGUgPT0gT1BfVE9HR0xFKSB7Ci0gICAgICAgICAgICAgICAgICAgIGRvRXhwYW5kID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgZXhwYW5kID0gIWV4cGFuZDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGRvT3AgPSB0cnVlOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGlmIChhbHdheXNIYW5kbGUob3AuY29kZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gY29hbGVzY2UgdGhlc2UKLSAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaT0xOyBpPE47IGkrKykgewotICAgICAgICAgICAgICAgICAgICAgICAgUGVuZGluZ09wIG8gPSBxdWV1ZS5nZXQoaSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWFsd2F5c0hhbmRsZShvLmNvZGUpICYmIG8ua2V5ID09IG9wLmtleSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChvLmNvZGUgPT0gT1BfU0VUX1ZJU0lCTEUpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZSA9IG8udmlzaWJsZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9WaXNpYmlsaXR5ID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoby5jb2RlID09IE9QX0VYUEFORCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBhbmQgPSBvLnZpc2libGU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvRXhwYW5kID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wLmNvZGUgPSBvLmNvZGU7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wLmljb25EYXRhID0gby5pY29uRGF0YTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Aubm90aWZpY2F0aW9uRGF0YSA9IG8ubm90aWZpY2F0aW9uRGF0YTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVldWUucmVtb3ZlKGkpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGktLTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBOLS07Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBxdWV1ZS5yZW1vdmUoMCk7Ci0gICAgICAgICAgICAgICAgTi0tOwotCi0gICAgICAgICAgICAgICAgaWYgKGRvT3ApIHsKLSAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChvcC5jb2RlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjYXNlIE9QX0FERF9JQ09OOgotICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSBPUF9VUERBVEVfSUNPTjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJmb3JtQWRkVXBkYXRlSWNvbihvcC5rZXksIG9wLmljb25EYXRhLCBvcC5ub3RpZmljYXRpb25EYXRhKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgT1BfUkVNT1ZFX0lDT046Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGVyZm9ybVJlbW92ZUljb24ob3Aua2V5KTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgT1BfRElTQUJMRToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb0Rpc2FibGUgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVXaGF0ID0gb3AuaW50ZWdlcjsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoZG9WaXNpYmlsaXR5ICYmIG9wLmNvZGUgIT0gT1BfUkVNT1ZFX0lDT04pIHsKLSAgICAgICAgICAgICAgICAgICAgcGVyZm9ybVNldEljb25WaXNpYmlsaXR5KG9wLmtleSwgdmlzaWJsZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAocXVldWUuc2l6ZSgpICE9IDApIHsKLSAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigiQXNzZXJ0aW9uIGZhaWxlZDogcXVldWUuc2l6ZT0iICsgcXVldWUuc2l6ZSgpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChkb0V4cGFuZCkgewotICAgICAgICAgICAgICAgIC8vIHRoaXMgaXMgbGFzdCBzbyB0aGF0IHdlIGNhcHR1cmUgYWxsIG9mIHRoZSBwZW5kaW5nIGNoYW5nZXMgYmVmb3JlIGRvaW5nIGl0Ci0gICAgICAgICAgICAgICAgaWYgKGV4cGFuZCkgewotICAgICAgICAgICAgICAgICAgICBhbmltYXRlRXhwYW5kKCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgYW5pbWF0ZUNvbGxhcHNlKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGRvRGlzYWJsZSkgewotICAgICAgICAgICAgICAgIHBlcmZvcm1EaXNhYmxlQWN0aW9ucyhkaXNhYmxlV2hhdCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwcml2YXRlIGJvb2xlYW4gYWx3YXlzSGFuZGxlKGludCBjb2RlKSB7Ci0gICAgICAgIHJldHVybiBjb2RlID09IE9QX0RJU0FCTEU7Ci0gICAgfQotCi0gICAgLyogcHJpdmF0ZSAqLyB2b2lkIHBlcmZvcm1BZGRVcGRhdGVJY29uKElCaW5kZXIga2V5LCBJY29uRGF0YSBkYXRhLCBOb3RpZmljYXRpb25EYXRhIG4pCi0gICAgICAgICAgICAgICAgICAgICAgICB0aHJvd3MgU3RhdHVzQmFyRXhjZXB0aW9uIHsKLSAgICAgICAgaWYgKFNQRVcpIHsKLSAgICAgICAgICAgIFNsb2cuZChUQUcsICJwZXJmb3JtQWRkVXBkYXRlSWNvbiBpY29uPSIgKyBkYXRhICsgIiBub3RpZmljYXRpb249IiArIG4gKyAiIGtleT0iICsga2V5KTsKLSAgICAgICAgfQotICAgICAgICAvLyBub3RpZmljYXRpb24KLSAgICAgICAgaWYgKG4gIT0gbnVsbCkgewotICAgICAgICAgICAgU3RhdHVzQmFyTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbiA9IGdldE5vdGlmaWNhdGlvbihrZXkpOwotICAgICAgICAgICAgTm90aWZpY2F0aW9uRGF0YSBvbGREYXRhID0gbnVsbDsKLSAgICAgICAgICAgIGlmIChub3RpZmljYXRpb24gPT0gbnVsbCkgewotICAgICAgICAgICAgICAgIC8vIGFkZAotICAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbiA9IG5ldyBTdGF0dXNCYXJOb3RpZmljYXRpb24oKTsKLSAgICAgICAgICAgICAgICBub3RpZmljYXRpb24ua2V5ID0ga2V5OwotICAgICAgICAgICAgICAgIG5vdGlmaWNhdGlvbi5kYXRhID0gbjsKLSAgICAgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKG1Ob3RpZmljYXRpb25EYXRhKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1Ob3RpZmljYXRpb25EYXRhLmFkZChub3RpZmljYXRpb24pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBhZGROb3RpZmljYXRpb25WaWV3KG5vdGlmaWNhdGlvbik7Ci0gICAgICAgICAgICAgICAgc2V0QXJlVGhlcmVOb3RpZmljYXRpb25zKCk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIC8vIHVwZGF0ZQotICAgICAgICAgICAgICAgIG9sZERhdGEgPSBub3RpZmljYXRpb24uZGF0YTsKLSAgICAgICAgICAgICAgICBub3RpZmljYXRpb24uZGF0YSA9IG47Ci0gICAgICAgICAgICAgICAgdXBkYXRlTm90aWZpY2F0aW9uVmlldyhub3RpZmljYXRpb24sIG9sZERhdGEpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgLy8gU2hvdyB0aGUgdGlja2VyIGlmIG9uZSBpcyByZXF1ZXN0ZWQsIGFuZCB0aGUgdGV4dCBpcyBkaWZmZXJlbnQKLSAgICAgICAgICAgIC8vIHRoYW4gdGhlIGN1cnJlbnRseSBkaXNwbGF5ZWQgdGlja2VyLiAgQWxzbyBkb24ndCBkbyB0aGlzCi0gICAgICAgICAgICAvLyB1bnRpbCBzdGF0dXMgYmFyIHdpbmRvdyBpcyBhdHRhY2hlZCB0byB0aGUgd2luZG93IG1hbmFnZXIsCi0gICAgICAgICAgICAvLyBiZWNhdXNlLi4uICB3ZWxsLCB3aGF0J3MgdGhlIHBvaW50IG90aGVyd2lzZT8gIEFuZCB0cnlpbmcgdG8KLSAgICAgICAgICAgIC8vIHJ1biBhIHRpY2tlciB3aXRob3V0IGJlaW5nIGF0dGFjaGVkIHdpbGwgY3Jhc2ghCi0gICAgICAgICAgICBpZiAobi50aWNrZXJUZXh0ICE9IG51bGwgJiYgbVN0YXR1c0JhclZpZXcuZ2V0V2luZG93VG9rZW4oKSAhPSBudWxsCi0gICAgICAgICAgICAgICAgICAgICYmIChvbGREYXRhID09IG51bGwKLSAgICAgICAgICAgICAgICAgICAgICAgIHx8IG9sZERhdGEudGlja2VyVGV4dCA9PSBudWxsCi0gICAgICAgICAgICAgICAgICAgICAgICB8fCAhQ2hhclNlcXVlbmNlcy5lcXVhbHMob2xkRGF0YS50aWNrZXJUZXh0LCBuLnRpY2tlclRleHQpKSkgewotICAgICAgICAgICAgICAgIGlmICgwID09IChtRGlzYWJsZWQgJiAKLSAgICAgICAgICAgICAgICAgICAgKFN0YXR1c0Jhck1hbmFnZXIuRElTQUJMRV9OT1RJRklDQVRJT05fSUNPTlMgfCBTdGF0dXNCYXJNYW5hZ2VyLkRJU0FCTEVfTk9USUZJQ0FUSU9OX1RJQ0tFUikpKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1UaWNrZXIuYWRkRW50cnkobiwgU3RhdHVzQmFySWNvbi5nZXRJY29uKG1Db250ZXh0LCBkYXRhKSwgbi50aWNrZXJUZXh0KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB1cGRhdGVFeHBhbmRlZFZpZXdQb3MoRVhQQU5ERURfTEVBVkVfQUxPTkUpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gaWNvbgotICAgICAgICBzeW5jaHJvbml6ZWQgKG1JY29uTWFwKSB7Ci0gICAgICAgICAgICBTdGF0dXNCYXJJY29uIGljb24gPSBtSWNvbk1hcC5nZXQoa2V5KTsKLSAgICAgICAgICAgIGlmIChpY29uID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICAvLyBhZGQKLSAgICAgICAgICAgICAgICBMaW5lYXJMYXlvdXQgdiA9IG4gPT0gbnVsbCA/IG1TdGF0dXNJY29ucyA6IG1Ob3RpZmljYXRpb25JY29uczsKLQotICAgICAgICAgICAgICAgIGljb24gPSBuZXcgU3RhdHVzQmFySWNvbihtQ29udGV4dCwgZGF0YSwgdik7Ci0gICAgICAgICAgICAgICAgbUljb25NYXAucHV0KGtleSwgaWNvbik7Ci0gICAgICAgICAgICAgICAgbUljb25MaXN0LmFkZChpY29uKTsKLQotICAgICAgICAgICAgICAgIGlmIChuID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgaW50IHNsb3RJbmRleCA9IGdldFJpZ2h0SWNvbkluZGV4KGRhdGEuc2xvdCk7Ci0gICAgICAgICAgICAgICAgICAgIFN0YXR1c0Jhckljb25bXSByaWdodEljb25zID0gbVJpZ2h0SWNvbnM7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyaWdodEljb25zW3Nsb3RJbmRleF0gPT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBvcyA9IDA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBpPW1SaWdodEljb25zLmxlbmd0aC0xOyBpPnNsb3RJbmRleDsgaS0tKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RhdHVzQmFySWNvbiBpYyA9IHJpZ2h0SWNvbnNbaV07Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGljICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9zKys7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHRJY29uc1tzbG90SW5kZXhdID0gaWNvbjsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1TdGF0dXNJY29ucy5hZGRWaWV3KGljb24udmlldywgcG9zKTsKLSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFNsb2cuZShUQUcsICJkdXBsaWNhdGUgaWNvbiBpbiBzbG90ICIgKyBzbG90SW5kZXggKyAiLyIgKyBkYXRhLnNsb3QpOwotICAgICAgICAgICAgICAgICAgICAgICAgbUljb25NYXAucmVtb3ZlKGtleSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtSWNvbkxpc3QucmVtb3ZlKGljb24pOwotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIGludCBpY29uSW5kZXggPSBtTm90aWZpY2F0aW9uRGF0YS5nZXRJY29uSW5kZXgobik7Ci0gICAgICAgICAgICAgICAgICAgIG1Ob3RpZmljYXRpb25JY29ucy5hZGRWaWV3KGljb24udmlldywgaWNvbkluZGV4KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGlmIChuID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gcmlnaHQgaGFuZCBzaWRlIGljb25zIC0tIHRoZXNlIGRvbid0IHJlb3JkZXIKLSAgICAgICAgICAgICAgICAgICAgaWNvbi51cGRhdGUobUNvbnRleHQsIGRhdGEpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIHJlbW92ZSBvbGQKLSAgICAgICAgICAgICAgICAgICAgVmlld0dyb3VwIHBhcmVudCA9IChWaWV3R3JvdXApaWNvbi52aWV3LmdldFBhcmVudCgpOwotICAgICAgICAgICAgICAgICAgICBwYXJlbnQucmVtb3ZlVmlldyhpY29uLnZpZXcpOwotICAgICAgICAgICAgICAgICAgICAvLyBhZGQgbmV3Ci0gICAgICAgICAgICAgICAgICAgIGljb24udXBkYXRlKG1Db250ZXh0LCBkYXRhKTsKLSAgICAgICAgICAgICAgICAgICAgaW50IGljb25JbmRleCA9IG1Ob3RpZmljYXRpb25EYXRhLmdldEljb25JbmRleChuKTsKLSAgICAgICAgICAgICAgICAgICAgbU5vdGlmaWNhdGlvbkljb25zLmFkZFZpZXcoaWNvbi52aWV3LCBpY29uSW5kZXgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIC8qIHByaXZhdGUgKi8gdm9pZCBwZXJmb3JtU2V0SWNvblZpc2liaWxpdHkoSUJpbmRlciBrZXksIGJvb2xlYW4gdmlzaWJsZSkgewotICAgICAgICBzeW5jaHJvbml6ZWQgKG1JY29uTWFwKSB7Ci0gICAgICAgICAgICBpZiAoU1BFVykgewotICAgICAgICAgICAgICAgIFNsb2cuZChUQUcsICJwZXJmb3JtU2V0SWNvblZpc2liaWxpdHkga2V5PSIgKyBrZXkgKyAiIHZpc2libGU9IiArIHZpc2libGUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgU3RhdHVzQmFySWNvbiBpY29uID0gbUljb25NYXAuZ2V0KGtleSk7Ci0gICAgICAgICAgICBpY29uLnZpZXcuc2V0VmlzaWJpbGl0eSh2aXNpYmxlID8gVmlldy5WSVNJQkxFIDogVmlldy5HT05FKTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICAvKiBwcml2YXRlICovIHZvaWQgcGVyZm9ybVJlbW92ZUljb24oSUJpbmRlciBrZXkpIHsKLSAgICAgICAgc3luY2hyb25pemVkICh0aGlzKSB7Ci0gICAgICAgICAgICBpZiAoU1BFVykgewotICAgICAgICAgICAgICAgIFNsb2cuZChUQUcsICJwZXJmb3JtUmVtb3ZlSWNvbiBrZXk9IiArIGtleSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBTdGF0dXNCYXJJY29uIGljb24gPSBtSWNvbk1hcC5yZW1vdmUoa2V5KTsKLSAgICAgICAgICAgIG1JY29uTGlzdC5yZW1vdmUoaWNvbik7Ci0gICAgICAgICAgICBpZiAoaWNvbiAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgVmlld0dyb3VwIHBhcmVudCA9IChWaWV3R3JvdXApaWNvbi52aWV3LmdldFBhcmVudCgpOwotICAgICAgICAgICAgICAgIHBhcmVudC5yZW1vdmVWaWV3KGljb24udmlldyk7Ci0gICAgICAgICAgICAgICAgaW50IHNsb3RJbmRleCA9IGdldFJpZ2h0SWNvbkluZGV4KGljb24ubURhdGEuc2xvdCk7Ci0gICAgICAgICAgICAgICAgaWYgKHNsb3RJbmRleCA+PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1SaWdodEljb25zW3Nsb3RJbmRleF0gPSBudWxsOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFN0YXR1c0Jhck5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24gPSBnZXROb3RpZmljYXRpb24oa2V5KTsKLSAgICAgICAgICAgIGlmIChub3RpZmljYXRpb24gIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIHJlbW92ZU5vdGlmaWNhdGlvblZpZXcobm90aWZpY2F0aW9uKTsKLSAgICAgICAgICAgICAgICBzeW5jaHJvbml6ZWQgKG1Ob3RpZmljYXRpb25EYXRhKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1Ob3RpZmljYXRpb25EYXRhLnJlbW92ZShub3RpZmljYXRpb24pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzZXRBcmVUaGVyZU5vdGlmaWNhdGlvbnMoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIGludCBnZXRJY29uTnVtYmVyRm9yVmlldyhWaWV3IHYpIHsKLSAgICAgICAgc3luY2hyb25pemVkIChtSWNvbk1hcCkgewotICAgICAgICAgICAgU3RhdHVzQmFySWNvbiBpY29uID0gbnVsbDsKLSAgICAgICAgICAgIGZpbmFsIGludCBOID0gbUljb25MaXN0LnNpemUoKTsKLSAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxOOyBpKyspIHsKLSAgICAgICAgICAgICAgICBTdGF0dXNCYXJJY29uIGljID0gbUljb25MaXN0LmdldChpKTsKLSAgICAgICAgICAgICAgICBpZiAoaWMudmlldyA9PSB2KSB7Ci0gICAgICAgICAgICAgICAgICAgIGljb24gPSBpYzsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGljb24gIT0gbnVsbCkgewotICAgICAgICAgICAgICAgIHJldHVybiBpY29uLmdldE51bWJlcigpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLQotICAgIFN0YXR1c0Jhck5vdGlmaWNhdGlvbiBnZXROb3RpZmljYXRpb24oSUJpbmRlciBrZXkpIHsKLSAgICAgICAgc3luY2hyb25pemVkIChtTm90aWZpY2F0aW9uRGF0YSkgewotICAgICAgICAgICAgcmV0dXJuIG1Ob3RpZmljYXRpb25EYXRhLmdldChrZXkpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgVmlldy5PbkZvY3VzQ2hhbmdlTGlzdGVuZXIgbUZvY3VzQ2hhbmdlTGlzdGVuZXIgPSBuZXcgVmlldy5PbkZvY3VzQ2hhbmdlTGlzdGVuZXIoKSB7Ci0gICAgICAgIHB1YmxpYyB2b2lkIG9uRm9jdXNDaGFuZ2UoVmlldyB2LCBib29sZWFuIGhhc0ZvY3VzKSB7Ci0gICAgICAgICAgICAvLyBCZWNhdXNlICd2JyBpcyBhIFZpZXdHcm91cCwgYWxsIGl0cyBjaGlsZHJlbiB3aWxsIGJlICh1bilzZWxlY3RlZAotICAgICAgICAgICAgLy8gdG9vLCB3aGljaCBhbGxvd3MgbWFycXVlZWluZyB0byB3b3JrLgotICAgICAgICAgICAgdi5zZXRTZWxlY3RlZChoYXNGb2N1cyk7Ci0gICAgICAgIH0KLSAgICB9OwotICAgIAotICAgIFZpZXcgbWFrZU5vdGlmaWNhdGlvblZpZXcoU3RhdHVzQmFyTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbiwgVmlld0dyb3VwIHBhcmVudCkgewotICAgICAgICBOb3RpZmljYXRpb25EYXRhIG4gPSBub3RpZmljYXRpb24uZGF0YTsKLSAgICAgICAgUmVtb3RlVmlld3MgcmVtb3RlVmlld3MgPSBuLmNvbnRlbnRWaWV3OwotICAgICAgICBpZiAocmVtb3RlVmlld3MgPT0gbnVsbCkgewotICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBjcmVhdGUgdGhlIHJvdyB2aWV3Ci0gICAgICAgIExheW91dEluZmxhdGVyIGluZmxhdGVyID0gKExheW91dEluZmxhdGVyKW1Db250ZXh0LmdldFN5c3RlbVNlcnZpY2UoCi0gICAgICAgICAgICAgICAgQ29udGV4dC5MQVlPVVRfSU5GTEFURVJfU0VSVklDRSk7Ci0gICAgICAgIFZpZXcgcm93ID0gaW5mbGF0ZXIuaW5mbGF0ZShjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmxheW91dC5zdGF0dXNfYmFyX2xhdGVzdF9ldmVudCwgcGFyZW50LCBmYWxzZSk7Ci0KLSAgICAgICAgLy8gYmluZCB0aGUgY2xpY2sgZXZlbnQgdG8gdGhlIGNvbnRlbnQgYXJlYQotICAgICAgICBWaWV3R3JvdXAgY29udGVudCA9IChWaWV3R3JvdXApcm93LmZpbmRWaWV3QnlJZChjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmlkLmNvbnRlbnQpOwotICAgICAgICBjb250ZW50LnNldERlc2NlbmRhbnRGb2N1c2FiaWxpdHkoVmlld0dyb3VwLkZPQ1VTX0JMT0NLX0RFU0NFTkRBTlRTKTsKLSAgICAgICAgY29udGVudC5zZXRPbkZvY3VzQ2hhbmdlTGlzdGVuZXIobUZvY3VzQ2hhbmdlTGlzdGVuZXIpOwotICAgICAgICBQZW5kaW5nSW50ZW50IGNvbnRlbnRJbnRlbnQgPSBuLmNvbnRlbnRJbnRlbnQ7Ci0gICAgICAgIGlmIChjb250ZW50SW50ZW50ICE9IG51bGwpIHsKLSAgICAgICAgICAgIGNvbnRlbnQuc2V0T25DbGlja0xpc3RlbmVyKG5ldyBMYXVuY2hlcihjb250ZW50SW50ZW50LCBuLnBrZywgbi50YWcsIG4uaWQpKTsKLSAgICAgICAgfQotCi0gICAgICAgIFZpZXcgY2hpbGQgPSBudWxsOwotICAgICAgICBFeGNlcHRpb24gZXhjZXB0aW9uID0gbnVsbDsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGNoaWxkID0gcmVtb3RlVmlld3MuYXBwbHkobUNvbnRleHQsIGNvbnRlbnQpOwotICAgICAgICB9Ci0gICAgICAgIGNhdGNoIChSdW50aW1lRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgIGV4Y2VwdGlvbiA9IGU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGNoaWxkID09IG51bGwpIHsKLSAgICAgICAgICAgIFNsb2cuZShUQUcsICJjb3VsZG4ndCBpbmZsYXRlIHZpZXcgZm9yIHBhY2thZ2UgIiArIG4ucGtnLCBleGNlcHRpb24pOwotICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgIH0KLSAgICAgICAgY29udGVudC5hZGRWaWV3KGNoaWxkKTsKLQotICAgICAgICByb3cuc2V0RHJhd2luZ0NhY2hlRW5hYmxlZCh0cnVlKTsKLQotICAgICAgICBub3RpZmljYXRpb24udmlldyA9IHJvdzsKLSAgICAgICAgbm90aWZpY2F0aW9uLmNvbnRlbnRWaWV3ID0gY2hpbGQ7Ci0KLSAgICAgICAgcmV0dXJuIHJvdzsKLSAgICB9Ci0KLSAgICB2b2lkIGFkZE5vdGlmaWNhdGlvblZpZXcoU3RhdHVzQmFyTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikgewotICAgICAgICBpZiAobm90aWZpY2F0aW9uLnZpZXcgIT0gbnVsbCkgewotICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIkFzc2VydGlvbiBmYWlsZWQ6IG5vdGlmaWNhdGlvbi52aWV3PSIKLSAgICAgICAgICAgICAgICAgICAgKyBub3RpZmljYXRpb24udmlldyk7Ci0gICAgICAgIH0KLQotICAgICAgICBMaW5lYXJMYXlvdXQgcGFyZW50ID0gbm90aWZpY2F0aW9uLmRhdGEub25nb2luZ0V2ZW50ID8gbU9uZ29pbmdJdGVtcyA6IG1MYXRlc3RJdGVtczsKLQotICAgICAgICBWaWV3IGNoaWxkID0gbWFrZU5vdGlmaWNhdGlvblZpZXcobm90aWZpY2F0aW9uLCBwYXJlbnQpOwotICAgICAgICBpZiAoY2hpbGQgPT0gbnVsbCkgewotICAgICAgICAgICAgcmV0dXJuIDsKLSAgICAgICAgfQotCi0gICAgICAgIGludCBpbmRleCA9IG1Ob3RpZmljYXRpb25EYXRhLmdldEV4cGFuZGVkSW5kZXgobm90aWZpY2F0aW9uKTsKLSAgICAgICAgcGFyZW50LmFkZFZpZXcoY2hpbGQsIGluZGV4KTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBSZW1vdmUgdGhlIG9sZCBvbmUgYW5kIHB1dCB0aGUgbmV3IG9uZSBpbiBpdHMgcGxhY2UuCi0gICAgICogQHBhcmFtIG5vdGlmaWNhdGlvbiB0aGUgbm90aWZpY2F0aW9uCi0gICAgICovCi0gICAgdm9pZCB1cGRhdGVOb3RpZmljYXRpb25WaWV3KFN0YXR1c0Jhck5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24sIE5vdGlmaWNhdGlvbkRhdGEgb2xkRGF0YSkgewotICAgICAgICBOb3RpZmljYXRpb25EYXRhIG4gPSBub3RpZmljYXRpb24uZGF0YTsKLSAgICAgICAgaWYgKG9sZERhdGEgIT0gbnVsbCAmJiBuICE9IG51bGwKLSAgICAgICAgICAgICAgICAmJiBuLndoZW4gPT0gb2xkRGF0YS53aGVuCi0gICAgICAgICAgICAgICAgJiYgbi5vbmdvaW5nRXZlbnQgPT0gb2xkRGF0YS5vbmdvaW5nRXZlbnQKLSAgICAgICAgICAgICAgICAmJiBuLmNvbnRlbnRWaWV3ICE9IG51bGwgJiYgb2xkRGF0YS5jb250ZW50VmlldyAhPSBudWxsCi0gICAgICAgICAgICAgICAgJiYgbi5jb250ZW50Vmlldy5nZXRQYWNrYWdlKCkgIT0gbnVsbAotICAgICAgICAgICAgICAgICYmIG9sZERhdGEuY29udGVudFZpZXcuZ2V0UGFja2FnZSgpICE9IG51bGwKLSAgICAgICAgICAgICAgICAmJiBvbGREYXRhLmNvbnRlbnRWaWV3LmdldFBhY2thZ2UoKS5lcXVhbHMobi5jb250ZW50Vmlldy5nZXRQYWNrYWdlKCkpCi0gICAgICAgICAgICAgICAgJiYgb2xkRGF0YS5jb250ZW50Vmlldy5nZXRMYXlvdXRJZCgpID09IG4uY29udGVudFZpZXcuZ2V0TGF5b3V0SWQoKQotICAgICAgICAgICAgICAgICYmIG5vdGlmaWNhdGlvbi52aWV3ICE9IG51bGwpIHsKLSAgICAgICAgICAgIG1Ob3RpZmljYXRpb25EYXRhLnVwZGF0ZShub3RpZmljYXRpb24pOwotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICBuLmNvbnRlbnRWaWV3LnJlYXBwbHkobUNvbnRleHQsIG5vdGlmaWNhdGlvbi5jb250ZW50Vmlldyk7Ci0KLSAgICAgICAgICAgICAgICAvLyB1cGRhdGUgdGhlIGNvbnRlbnRJbnRlbnQKLSAgICAgICAgICAgICAgICBWaWV3R3JvdXAgY29udGVudCA9IChWaWV3R3JvdXApbm90aWZpY2F0aW9uLnZpZXcuZmluZFZpZXdCeUlkKAotICAgICAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5pZC5jb250ZW50KTsKLSAgICAgICAgICAgICAgICBQZW5kaW5nSW50ZW50IGNvbnRlbnRJbnRlbnQgPSBuLmNvbnRlbnRJbnRlbnQ7Ci0gICAgICAgICAgICAgICAgaWYgKGNvbnRlbnRJbnRlbnQgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICBjb250ZW50LnNldE9uQ2xpY2tMaXN0ZW5lcihuZXcgTGF1bmNoZXIoY29udGVudEludGVudCwgbi5wa2csIG4udGFnLCBuLmlkKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2F0Y2ggKFJ1bnRpbWVFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgIC8vIEl0IGZhaWxlZCB0byBhZGQgY2xlYW5seS4gIExvZywgYW5kIHJlbW92ZSB0aGUgdmlldyBmcm9tIHRoZSBwYW5lbC4KLSAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiY291bGRuJ3QgcmVhcHBseSB2aWV3cyBmb3IgcGFja2FnZSAiICsgbi5jb250ZW50Vmlldy5nZXRQYWNrYWdlKCksIGUpOwotICAgICAgICAgICAgICAgIHJlbW92ZU5vdGlmaWNhdGlvblZpZXcobm90aWZpY2F0aW9uKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1Ob3RpZmljYXRpb25EYXRhLnVwZGF0ZShub3RpZmljYXRpb24pOwotICAgICAgICAgICAgcmVtb3ZlTm90aWZpY2F0aW9uVmlldyhub3RpZmljYXRpb24pOwotICAgICAgICAgICAgYWRkTm90aWZpY2F0aW9uVmlldyhub3RpZmljYXRpb24pOwotICAgICAgICB9Ci0gICAgICAgIHNldEFyZVRoZXJlTm90aWZpY2F0aW9ucygpOwotICAgIH0KLQotICAgIHZvaWQgcmVtb3ZlTm90aWZpY2F0aW9uVmlldyhTdGF0dXNCYXJOb3RpZmljYXRpb24gbm90aWZpY2F0aW9uKSB7Ci0gICAgICAgIFZpZXcgdiA9IG5vdGlmaWNhdGlvbi52aWV3OwotICAgICAgICBpZiAodiAhPSBudWxsKSB7Ci0gICAgICAgICAgICBWaWV3R3JvdXAgcGFyZW50ID0gKFZpZXdHcm91cCl2LmdldFBhcmVudCgpOwotICAgICAgICAgICAgcGFyZW50LnJlbW92ZVZpZXcodik7Ci0gICAgICAgICAgICBub3RpZmljYXRpb24udmlldyA9IG51bGw7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwcml2YXRlIHZvaWQgc2V0QXJlVGhlcmVOb3RpZmljYXRpb25zKCkgewotICAgICAgICBib29sZWFuIG9uZ29pbmcgPSBtT25nb2luZ0l0ZW1zLmdldENoaWxkQ291bnQoKSAhPSAwOwotICAgICAgICBib29sZWFuIGxhdGVzdCA9IG1MYXRlc3RJdGVtcy5nZXRDaGlsZENvdW50KCkgIT0gMDsKLQotICAgICAgICBpZiAobU5vdGlmaWNhdGlvbkRhdGEuaGFzQ2xlYXJhYmxlSXRlbXMoKSkgewotICAgICAgICAgICAgbUNsZWFyQnV0dG9uLnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1DbGVhckJ1dHRvbi5zZXRWaXNpYmlsaXR5KFZpZXcuSU5WSVNJQkxFKTsKLSAgICAgICAgfQotCi0gICAgICAgIG1PbmdvaW5nVGl0bGUuc2V0VmlzaWJpbGl0eShvbmdvaW5nID8gVmlldy5WSVNJQkxFIDogVmlldy5HT05FKTsKLSAgICAgICAgbUxhdGVzdFRpdGxlLnNldFZpc2liaWxpdHkobGF0ZXN0ID8gVmlldy5WSVNJQkxFIDogVmlldy5HT05FKTsKLQotICAgICAgICBpZiAob25nb2luZyB8fCBsYXRlc3QpIHsKLSAgICAgICAgICAgIG1Ob05vdGlmaWNhdGlvbnNUaXRsZS5zZXRWaXNpYmlsaXR5KFZpZXcuR09ORSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtTm9Ob3RpZmljYXRpb25zVGl0bGUuc2V0VmlzaWJpbGl0eShWaWV3LlZJU0lCTEUpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSB2b2lkIG1ha2VFeHBhbmRlZFZpc2libGUoKSB7Ci0gICAgICAgIGlmIChTUEVXKSBTbG9nLmQoVEFHLCAiTWFrZSBleHBhbmRlZCB2aXNpYmxlOiBleHBhbmRlZCB2aXNpYmxlPSIgKyBtRXhwYW5kZWRWaXNpYmxlKTsKLSAgICAgICAgaWYgKG1FeHBhbmRlZFZpc2libGUpIHsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotICAgICAgICBtRXhwYW5kZWRWaXNpYmxlID0gdHJ1ZTsKLSAgICAgICAgcGFuZWxTbGlnaHRseVZpc2libGUodHJ1ZSk7Ci0gICAgICAgIAotICAgICAgICB1cGRhdGVFeHBhbmRlZFZpZXdQb3MoRVhQQU5ERURfTEVBVkVfQUxPTkUpOwotICAgICAgICBtRXhwYW5kZWRQYXJhbXMuZmxhZ3MgJj0gfldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfTk9UX0ZPQ1VTQUJMRTsKLSAgICAgICAgbUV4cGFuZGVkUGFyYW1zLmZsYWdzIHw9IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfQUxUX0ZPQ1VTQUJMRV9JTTsKLSAgICAgICAgbUV4cGFuZGVkRGlhbG9nLmdldFdpbmRvdygpLnNldEF0dHJpYnV0ZXMobUV4cGFuZGVkUGFyYW1zKTsKLSAgICAgICAgbUV4cGFuZGVkVmlldy5yZXF1ZXN0Rm9jdXMoVmlldy5GT0NVU19GT1JXQVJEKTsKLSAgICAgICAgbVRyYWNraW5nVmlldy5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7Ci0gICAgICAgIAotICAgICAgICBpZiAoIW1UaWNraW5nKSB7Ci0gICAgICAgICAgICBzZXREYXRlVmlld1Zpc2liaWxpdHkodHJ1ZSwgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5hbmltLmZhZGVfaW4pOwotICAgICAgICB9Ci0gICAgfQotICAgIAotICAgIHZvaWQgYW5pbWF0ZUV4cGFuZCgpIHsKLSAgICAgICAgaWYgKFNQRVcpIFNsb2cuZChUQUcsICJBbmltYXRlIGV4cGFuZDogZXhwYW5kZWQ9IiArIG1FeHBhbmRlZCk7Ci0gICAgICAgIGlmICgobURpc2FibGVkICYgU3RhdHVzQmFyTWFuYWdlci5ESVNBQkxFX0VYUEFORCkgIT0gMCkgewotICAgICAgICAgICAgcmV0dXJuIDsKLSAgICAgICAgfQotICAgICAgICBpZiAobUV4cGFuZGVkKSB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBwcmVwYXJlVHJhY2tpbmcoMCwgdHJ1ZSk7Ci0gICAgICAgIHBlcmZvcm1GbGluZygwLCAyMDAwLjBmLCB0cnVlKTsKLSAgICB9Ci0gICAgCi0gICAgdm9pZCBhbmltYXRlQ29sbGFwc2UoKSB7Ci0gICAgICAgIGlmIChTUEVXKSB7Ci0gICAgICAgICAgICBTbG9nLmQoVEFHLCAiYW5pbWF0ZUNvbGxhcHNlKCk6IG1FeHBhbmRlZD0iICsgbUV4cGFuZGVkCi0gICAgICAgICAgICAgICAgICAgICsgIiBtRXhwYW5kZWRWaXNpYmxlPSIgKyBtRXhwYW5kZWRWaXNpYmxlCi0gICAgICAgICAgICAgICAgICAgICsgIiBtRXhwYW5kZWQ9IiArIG1FeHBhbmRlZAotICAgICAgICAgICAgICAgICAgICArICIgbUFuaW1hdGluZz0iICsgbUFuaW1hdGluZwotICAgICAgICAgICAgICAgICAgICArICIgbUFuaW1ZPSIgKyBtQW5pbVkKLSAgICAgICAgICAgICAgICAgICAgKyAiIG1BbmltVmVsPSIgKyBtQW5pbVZlbCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmICghbUV4cGFuZGVkVmlzaWJsZSkgewotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgaW50IHk7Ci0gICAgICAgIGlmIChtQW5pbWF0aW5nKSB7Ci0gICAgICAgICAgICB5ID0gKGludCltQW5pbVk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB5ID0gbURpc3BsYXkuZ2V0SGVpZ2h0KCktMTsKLSAgICAgICAgfQotICAgICAgICAvLyBMZXQgdGhlIGZsaW5nIHRoaW5rIHRoYXQgd2UncmUgb3BlbiBzbyBpdCBnb2VzIGluIHRoZSByaWdodCBkaXJlY3Rpb24KLSAgICAgICAgLy8gYW5kIGRvZXNuJ3QgdHJ5IHRvIHJlLW9wZW4gdGhlIHdpbmRvd3NoYWRlLgotICAgICAgICBtRXhwYW5kZWQgPSB0cnVlOwotICAgICAgICBwcmVwYXJlVHJhY2tpbmcoeSwgZmFsc2UpOwotICAgICAgICBwZXJmb3JtRmxpbmcoeSwgLTIwMDAuMGYsIHRydWUpOwotICAgIH0KLSAgICAKLSAgICB2b2lkIHBlcmZvcm1FeHBhbmQoKSB7Ci0gICAgICAgIGlmIChTUEVXKSBTbG9nLmQoVEFHLCAicGVyZm9ybUV4cGFuZDogbUV4cGFuZGVkPSIgKyBtRXhwYW5kZWQpOwotICAgICAgICBpZiAoKG1EaXNhYmxlZCAmIFN0YXR1c0Jhck1hbmFnZXIuRElTQUJMRV9FWFBBTkQpICE9IDApIHsKLSAgICAgICAgICAgIHJldHVybiA7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG1FeHBhbmRlZCkgewotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gSXQgc2VlbXMgc3RyYW5nZSB0byBzb21ldGltZXMgbm90IGV4cGFuZC4uLgotICAgICAgICBpZiAoZmFsc2UpIHsKLSAgICAgICAgICAgIHN5bmNocm9uaXplZCAobU5vdGlmaWNhdGlvbkRhdGEpIHsKLSAgICAgICAgICAgICAgICBpZiAobU5vdGlmaWNhdGlvbkRhdGEuc2l6ZSgpID09IDApIHsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgbUV4cGFuZGVkID0gdHJ1ZTsKLSAgICAgICAgbWFrZUV4cGFuZGVkVmlzaWJsZSgpOwotICAgICAgICB1cGRhdGVFeHBhbmRlZFZpZXdQb3MoRVhQQU5ERURfRlVMTF9PUEVOKTsKLQotICAgICAgICBpZiAoZmFsc2UpIHBvc3RTdGFydFRyYWNpbmcoKTsKLSAgICB9Ci0KLSAgICB2b2lkIHBlcmZvcm1Db2xsYXBzZSgpIHsKLSAgICAgICAgaWYgKFNQRVcpIFNsb2cuZChUQUcsICJwZXJmb3JtQ29sbGFwc2U6IG1FeHBhbmRlZD0iICsgbUV4cGFuZGVkCi0gICAgICAgICAgICAgICAgKyAiIG1FeHBhbmRlZFZpc2libGU9IiArIG1FeHBhbmRlZFZpc2libGUpOwotICAgICAgICAKLSAgICAgICAgaWYgKCFtRXhwYW5kZWRWaXNpYmxlKSB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgbUV4cGFuZGVkVmlzaWJsZSA9IGZhbHNlOwotICAgICAgICBwYW5lbFNsaWdodGx5VmlzaWJsZShmYWxzZSk7Ci0gICAgICAgIG1FeHBhbmRlZFBhcmFtcy5mbGFncyB8PSBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX05PVF9GT0NVU0FCTEU7Ci0gICAgICAgIG1FeHBhbmRlZFBhcmFtcy5mbGFncyAmPSB+V2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19BTFRfRk9DVVNBQkxFX0lNOwotICAgICAgICBtRXhwYW5kZWREaWFsb2cuZ2V0V2luZG93KCkuc2V0QXR0cmlidXRlcyhtRXhwYW5kZWRQYXJhbXMpOwotICAgICAgICBtVHJhY2tpbmdWaWV3LnNldFZpc2liaWxpdHkoVmlldy5HT05FKTsKLQotICAgICAgICBpZiAoKG1EaXNhYmxlZCAmIFN0YXR1c0Jhck1hbmFnZXIuRElTQUJMRV9OT1RJRklDQVRJT05fSUNPTlMpID09IDApIHsKLSAgICAgICAgICAgIHNldE5vdGlmaWNhdGlvbkljb25WaXNpYmlsaXR5KHRydWUsIGNvbS5hbmRyb2lkLmludGVybmFsLlIuYW5pbS5mYWRlX2luKTsKLSAgICAgICAgfQotICAgICAgICBzZXREYXRlVmlld1Zpc2liaWxpdHkoZmFsc2UsIGNvbS5hbmRyb2lkLmludGVybmFsLlIuYW5pbS5mYWRlX291dCk7Ci0gICAgICAgIAotICAgICAgICBpZiAoIW1FeHBhbmRlZCkgewotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIG1FeHBhbmRlZCA9IGZhbHNlOwotICAgIH0KLQotICAgIHZvaWQgZG9BbmltYXRpb24oKSB7Ci0gICAgICAgIGlmIChtQW5pbWF0aW5nKSB7Ci0gICAgICAgICAgICBpZiAoU1BFVykgU2xvZy5kKFRBRywgImRvQW5pbWF0aW9uIik7Ci0gICAgICAgICAgICBpZiAoU1BFVykgU2xvZy5kKFRBRywgImRvQW5pbWF0aW9uIGJlZm9yZSBtQW5pbVk9IiArIG1BbmltWSk7Ci0gICAgICAgICAgICBpbmNyZW1lbnRBbmltKCk7Ci0gICAgICAgICAgICBpZiAoU1BFVykgU2xvZy5kKFRBRywgImRvQW5pbWF0aW9uIGFmdGVyICBtQW5pbVk9IiArIG1BbmltWSk7Ci0gICAgICAgICAgICBpZiAobUFuaW1ZID49IG1EaXNwbGF5LmdldEhlaWdodCgpLTEpIHsKLSAgICAgICAgICAgICAgICBpZiAoU1BFVykgU2xvZy5kKFRBRywgIkFuaW1hdGlvbiBjb21wbGV0ZWQgdG8gZXhwYW5kZWQgc3RhdGUuIik7Ci0gICAgICAgICAgICAgICAgbUFuaW1hdGluZyA9IGZhbHNlOwotICAgICAgICAgICAgICAgIHVwZGF0ZUV4cGFuZGVkVmlld1BvcyhFWFBBTkRFRF9GVUxMX09QRU4pOwotICAgICAgICAgICAgICAgIHBlcmZvcm1FeHBhbmQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKG1BbmltWSA8IG1TdGF0dXNCYXJWaWV3LmdldEhlaWdodCgpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKFNQRVcpIFNsb2cuZChUQUcsICJBbmltYXRpb24gY29tcGxldGVkIHRvIGNvbGxhcHNlZCBzdGF0ZS4iKTsKLSAgICAgICAgICAgICAgICBtQW5pbWF0aW5nID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgdXBkYXRlRXhwYW5kZWRWaWV3UG9zKDApOwotICAgICAgICAgICAgICAgIHBlcmZvcm1Db2xsYXBzZSgpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgdXBkYXRlRXhwYW5kZWRWaWV3UG9zKChpbnQpbUFuaW1ZKTsKLSAgICAgICAgICAgICAgICBtQ3VyQW5pbWF0aW9uVGltZSArPSBBTklNX0ZSQU1FX0RVUkFUSU9OOwotICAgICAgICAgICAgICAgIG1IYW5kbGVyLnNlbmRNZXNzYWdlQXRUaW1lKG1IYW5kbGVyLm9idGFpbk1lc3NhZ2UoTVNHX0FOSU1BVEUpLCBtQ3VyQW5pbWF0aW9uVGltZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIHN0b3BUcmFja2luZygpIHsKLSAgICAgICAgbVRyYWNraW5nID0gZmFsc2U7Ci0gICAgICAgIG1WZWxvY2l0eVRyYWNrZXIucmVjeWNsZSgpOwotICAgICAgICBtVmVsb2NpdHlUcmFja2VyID0gbnVsbDsKLSAgICB9Ci0KLSAgICB2b2lkIGluY3JlbWVudEFuaW0oKSB7Ci0gICAgICAgIGxvbmcgbm93ID0gU3lzdGVtQ2xvY2sudXB0aW1lTWlsbGlzKCk7Ci0gICAgICAgIGZsb2F0IHQgPSAoKGZsb2F0KShub3cgLSBtQW5pbUxhc3RUaW1lKSkgLyAxMDAwOyAgICAgICAgICAgIC8vIG1zIC0+IHMKLSAgICAgICAgZmluYWwgZmxvYXQgeSA9IG1BbmltWTsKLSAgICAgICAgZmluYWwgZmxvYXQgdiA9IG1BbmltVmVsOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHgvcwotICAgICAgICBmaW5hbCBmbG9hdCBhID0gbUFuaW1BY2NlbDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBweC9zL3MKLSAgICAgICAgbUFuaW1ZID0geSArICh2KnQpICsgKDAuNWYqYSp0KnQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHgKLSAgICAgICAgbUFuaW1WZWwgPSB2ICsgKGEqdCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gcHgvcwotICAgICAgICBtQW5pbUxhc3RUaW1lID0gbm93OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBtcwotICAgICAgICAvL1Nsb2cuZChUQUcsICJ5PSIgKyB5ICsgIiB2PSIgKyB2ICsgIiBhPSIgKyBhICsgIiB0PSIgKyB0ICsgIiBtQW5pbVk9IiArIG1BbmltWQotICAgICAgICAvLyAgICAgICAgKyAiIG1BbmltQWNjZWw9IiArIG1BbmltQWNjZWwpOwotICAgIH0KLQotICAgIHZvaWQgZG9SZXZlYWxBbmltYXRpb24oKSB7Ci0gICAgICAgIGZpbmFsIGludCBoID0gbUNsb3NlVmlldy5nZXRIZWlnaHQoKSArIG1TdGF0dXNCYXJWaWV3LmdldEhlaWdodCgpOwotICAgICAgICBpZiAobUFuaW1hdGluZ1JldmVhbCAmJiBtQW5pbWF0aW5nICYmIG1BbmltWSA8IGgpIHsKLSAgICAgICAgICAgIGluY3JlbWVudEFuaW0oKTsKLSAgICAgICAgICAgIGlmIChtQW5pbVkgPj0gaCkgewotICAgICAgICAgICAgICAgIG1BbmltWSA9IGg7Ci0gICAgICAgICAgICAgICAgdXBkYXRlRXhwYW5kZWRWaWV3UG9zKChpbnQpbUFuaW1ZKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgdXBkYXRlRXhwYW5kZWRWaWV3UG9zKChpbnQpbUFuaW1ZKTsKLSAgICAgICAgICAgICAgICBtQ3VyQW5pbWF0aW9uVGltZSArPSBBTklNX0ZSQU1FX0RVUkFUSU9OOwotICAgICAgICAgICAgICAgIG1IYW5kbGVyLnNlbmRNZXNzYWdlQXRUaW1lKG1IYW5kbGVyLm9idGFpbk1lc3NhZ2UoTVNHX0FOSU1BVEVfUkVWRUFMKSwKLSAgICAgICAgICAgICAgICAgICAgICAgIG1DdXJBbmltYXRpb25UaW1lKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICB2b2lkIHByZXBhcmVUcmFja2luZyhpbnQgeSwgYm9vbGVhbiBvcGVuaW5nKSB7Ci0gICAgICAgIG1UcmFja2luZyA9IHRydWU7Ci0gICAgICAgIG1WZWxvY2l0eVRyYWNrZXIgPSBWZWxvY2l0eVRyYWNrZXIub2J0YWluKCk7Ci0gICAgICAgIGlmIChvcGVuaW5nKSB7Ci0gICAgICAgICAgICBtQW5pbUFjY2VsID0gMjAwMC4wZjsKLSAgICAgICAgICAgIG1BbmltVmVsID0gMjAwOwotICAgICAgICAgICAgbUFuaW1ZID0gbVN0YXR1c0JhclZpZXcuZ2V0SGVpZ2h0KCk7Ci0gICAgICAgICAgICB1cGRhdGVFeHBhbmRlZFZpZXdQb3MoKGludCltQW5pbVkpOwotICAgICAgICAgICAgbUFuaW1hdGluZyA9IHRydWU7Ci0gICAgICAgICAgICBtQW5pbWF0aW5nUmV2ZWFsID0gdHJ1ZTsKLSAgICAgICAgICAgIG1IYW5kbGVyLnJlbW92ZU1lc3NhZ2VzKE1TR19BTklNQVRFKTsKLSAgICAgICAgICAgIG1IYW5kbGVyLnJlbW92ZU1lc3NhZ2VzKE1TR19BTklNQVRFX1JFVkVBTCk7Ci0gICAgICAgICAgICBsb25nIG5vdyA9IFN5c3RlbUNsb2NrLnVwdGltZU1pbGxpcygpOwotICAgICAgICAgICAgbUFuaW1MYXN0VGltZSA9IG5vdzsKLSAgICAgICAgICAgIG1DdXJBbmltYXRpb25UaW1lID0gbm93ICsgQU5JTV9GUkFNRV9EVVJBVElPTjsKLSAgICAgICAgICAgIG1BbmltYXRpbmcgPSB0cnVlOwotICAgICAgICAgICAgbUhhbmRsZXIuc2VuZE1lc3NhZ2VBdFRpbWUobUhhbmRsZXIub2J0YWluTWVzc2FnZShNU0dfQU5JTUFURV9SRVZFQUwpLAotICAgICAgICAgICAgICAgICAgICBtQ3VyQW5pbWF0aW9uVGltZSk7Ci0gICAgICAgICAgICBtYWtlRXhwYW5kZWRWaXNpYmxlKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBpdCdzIG9wZW4sIGNsb3NlIGl0PwotICAgICAgICAgICAgaWYgKG1BbmltYXRpbmcpIHsKLSAgICAgICAgICAgICAgICBtQW5pbWF0aW5nID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgbUhhbmRsZXIucmVtb3ZlTWVzc2FnZXMoTVNHX0FOSU1BVEUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdXBkYXRlRXhwYW5kZWRWaWV3UG9zKHkgKyBtVmlld0RlbHRhKTsKLSAgICAgICAgfQotICAgIH0KLSAgICAKLSAgICB2b2lkIHBlcmZvcm1GbGluZyhpbnQgeSwgZmxvYXQgdmVsLCBib29sZWFuIGFsd2F5cykgewotICAgICAgICBtQW5pbWF0aW5nUmV2ZWFsID0gZmFsc2U7Ci0gICAgICAgIG1EaXNwbGF5SGVpZ2h0ID0gbURpc3BsYXkuZ2V0SGVpZ2h0KCk7Ci0KLSAgICAgICAgbUFuaW1ZID0geTsKLSAgICAgICAgbUFuaW1WZWwgPSB2ZWw7Ci0KLSAgICAgICAgLy9TbG9nLmQoVEFHLCAic3RhcnRpbmcgd2l0aCBtQW5pbVk9IiArIG1BbmltWSArICIgbUFuaW1WZWw9IiArIG1BbmltVmVsKTsKLQotICAgICAgICBpZiAobUV4cGFuZGVkKSB7Ci0gICAgICAgICAgICBpZiAoIWFsd2F5cyAmJiAoCi0gICAgICAgICAgICAgICAgICAgIHZlbCA+IDIwMC4wZgotICAgICAgICAgICAgICAgICAgICB8fCAoeSA+IChtRGlzcGxheUhlaWdodC0yNSkgJiYgdmVsID4gLTIwMC4wZikpKSB7Ci0gICAgICAgICAgICAgICAgLy8gV2UgYXJlIGV4cGFuZGVkLCBidXQgdGhleSBkaWRuJ3QgbW92ZSBzdWZmaWNpZW50bHkgdG8gY2F1c2UKLSAgICAgICAgICAgICAgICAvLyB1cyB0byByZXRyYWN0LiAgQW5pbWF0ZSBiYWNrIHRvIHRoZSBleHBhbmRlZCBwb3NpdGlvbi4KLSAgICAgICAgICAgICAgICBtQW5pbUFjY2VsID0gMjAwMC4wZjsKLSAgICAgICAgICAgICAgICBpZiAodmVsIDwgMCkgewotICAgICAgICAgICAgICAgICAgICBtQW5pbVZlbCA9IDA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gV2UgYXJlIGV4cGFuZGVkIGFuZCBhcmUgbm93IGdvaW5nIHRvIGFuaW1hdGUgYXdheS4KLSAgICAgICAgICAgICAgICBtQW5pbUFjY2VsID0gLTIwMDAuMGY7Ci0gICAgICAgICAgICAgICAgaWYgKHZlbCA+IDApIHsKLSAgICAgICAgICAgICAgICAgICAgbUFuaW1WZWwgPSAwOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChhbHdheXMgfHwgKAotICAgICAgICAgICAgICAgICAgICB2ZWwgPiAyMDAuMGYKLSAgICAgICAgICAgICAgICAgICAgfHwgKHkgPiAobURpc3BsYXlIZWlnaHQvMikgJiYgdmVsID4gLTIwMC4wZikpKSB7Ci0gICAgICAgICAgICAgICAgLy8gV2UgYXJlIGNvbGxhcHNlZCwgYW5kIHRoZXkgbW92ZWQgZW5vdWdoIHRvIGFsbG93IHVzIHRvCi0gICAgICAgICAgICAgICAgLy8gZXhwYW5kLiAgQW5pbWF0ZSBpbiB0aGUgbm90aWZpY2F0aW9ucy4KLSAgICAgICAgICAgICAgICBtQW5pbUFjY2VsID0gMjAwMC4wZjsKLSAgICAgICAgICAgICAgICBpZiAodmVsIDwgMCkgewotICAgICAgICAgICAgICAgICAgICBtQW5pbVZlbCA9IDA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgLy8gV2UgYXJlIGNvbGxhcHNlZCwgYnV0IHRoZXkgZGlkbid0IG1vdmUgc3VmZmljaWVudGx5IHRvIGNhdXNlCi0gICAgICAgICAgICAgICAgLy8gdXMgdG8gcmV0cmFjdC4gIEFuaW1hdGUgYmFjayB0byB0aGUgY29sbGFwc2VkIHBvc2l0aW9uLgotICAgICAgICAgICAgICAgIG1BbmltQWNjZWwgPSAtMjAwMC4wZjsKLSAgICAgICAgICAgICAgICBpZiAodmVsID4gMCkgewotICAgICAgICAgICAgICAgICAgICBtQW5pbVZlbCA9IDA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIC8vU2xvZy5kKFRBRywgIm1BbmltWT0iICsgbUFuaW1ZICsgIiBtQW5pbVZlbD0iICsgbUFuaW1WZWwKLSAgICAgICAgLy8gICAgICAgICsgIiBtQW5pbUFjY2VsPSIgKyBtQW5pbUFjY2VsKTsKLQotICAgICAgICBsb25nIG5vdyA9IFN5c3RlbUNsb2NrLnVwdGltZU1pbGxpcygpOwotICAgICAgICBtQW5pbUxhc3RUaW1lID0gbm93OwotICAgICAgICBtQ3VyQW5pbWF0aW9uVGltZSA9IG5vdyArIEFOSU1fRlJBTUVfRFVSQVRJT047Ci0gICAgICAgIG1BbmltYXRpbmcgPSB0cnVlOwotICAgICAgICBtSGFuZGxlci5yZW1vdmVNZXNzYWdlcyhNU0dfQU5JTUFURSk7Ci0gICAgICAgIG1IYW5kbGVyLnJlbW92ZU1lc3NhZ2VzKE1TR19BTklNQVRFX1JFVkVBTCk7Ci0gICAgICAgIG1IYW5kbGVyLnNlbmRNZXNzYWdlQXRUaW1lKG1IYW5kbGVyLm9idGFpbk1lc3NhZ2UoTVNHX0FOSU1BVEUpLCBtQ3VyQW5pbWF0aW9uVGltZSk7Ci0gICAgICAgIHN0b3BUcmFja2luZygpOwotICAgIH0KLSAgICAKLSAgICBib29sZWFuIGludGVyY2VwdFRvdWNoRXZlbnQoTW90aW9uRXZlbnQgZXZlbnQpIHsKLSAgICAgICAgaWYgKFNQRVcpIHsKLSAgICAgICAgICAgIFNsb2cuZChUQUcsICJUb3VjaDogcmF3WT0iICsgZXZlbnQuZ2V0UmF3WSgpICsgIiBldmVudD0iICsgZXZlbnQgKyAiIG1EaXNhYmxlZD0iCi0gICAgICAgICAgICAgICAgKyBtRGlzYWJsZWQpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKChtRGlzYWJsZWQgJiBTdGF0dXNCYXJNYW5hZ2VyLkRJU0FCTEVfRVhQQU5EKSAhPSAwKSB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGZpbmFsIGludCBzdGF0dXNCYXJTaXplID0gbVN0YXR1c0JhclZpZXcuZ2V0SGVpZ2h0KCk7Ci0gICAgICAgIGZpbmFsIGludCBoaXRTaXplID0gc3RhdHVzQmFyU2l6ZSoyOwotICAgICAgICBpZiAoZXZlbnQuZ2V0QWN0aW9uKCkgPT0gTW90aW9uRXZlbnQuQUNUSU9OX0RPV04pIHsKLSAgICAgICAgICAgIGZpbmFsIGludCB5ID0gKGludClldmVudC5nZXRSYXdZKCk7Ci0KLSAgICAgICAgICAgIGlmICghbUV4cGFuZGVkKSB7Ci0gICAgICAgICAgICAgICAgbVZpZXdEZWx0YSA9IHN0YXR1c0JhclNpemUgLSB5OwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtVHJhY2tpbmdWaWV3LmdldExvY2F0aW9uT25TY3JlZW4obUFic1Bvcyk7Ci0gICAgICAgICAgICAgICAgbVZpZXdEZWx0YSA9IG1BYnNQb3NbMV0gKyBtVHJhY2tpbmdWaWV3LmdldEhlaWdodCgpIC0geTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICgoIW1FeHBhbmRlZCAmJiB5IDwgaGl0U2l6ZSkgfHwKLSAgICAgICAgICAgICAgICAgICAgKG1FeHBhbmRlZCAmJiB5ID4gKG1EaXNwbGF5LmdldEhlaWdodCgpLWhpdFNpemUpKSkgewotCi0gICAgICAgICAgICAgICAgLy8gV2UgZHJvcCBldmVudHMgYXQgdGhlIGVkZ2Ugb2YgdGhlIHNjcmVlbiB0byBtYWtlIHRoZSB3aW5kb3dzaGFkZSBjb21lCi0gICAgICAgICAgICAgICAgLy8gZG93biBieSBhY2NpZGVudCBsZXNzLCBlc3BlY2lhbGx5IHdoZW4gcHVzaGluZyBvcGVuIGEgZGV2aWNlIHdpdGggYSBrZXlib2FyZAotICAgICAgICAgICAgICAgIC8vIHRoYXQgcm90YXRlcyAobGlrZSBnMSBhbmQgZHJvaWQpCi0gICAgICAgICAgICAgICAgaW50IHggPSAoaW50KWV2ZW50LmdldFJhd1goKTsKLSAgICAgICAgICAgICAgICBmaW5hbCBpbnQgZWRnZUJvcmRlciA9IG1FZGdlQm9yZGVyOwotICAgICAgICAgICAgICAgIGlmICh4ID49IGVkZ2VCb3JkZXIgJiYgeCA8IG1EaXNwbGF5LmdldFdpZHRoKCkgLSBlZGdlQm9yZGVyKSB7Ci0gICAgICAgICAgICAgICAgICAgIHByZXBhcmVUcmFja2luZyh5LCAhbUV4cGFuZGVkKTsvLyBvcGVuaW5nIGlmIHdlJ3JlIG5vdCBhbHJlYWR5IGZ1bGx5IHZpc2libGUKLSAgICAgICAgICAgICAgICAgICAgbVZlbG9jaXR5VHJhY2tlci5hZGRNb3ZlbWVudChldmVudCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKG1UcmFja2luZykgewotICAgICAgICAgICAgbVZlbG9jaXR5VHJhY2tlci5hZGRNb3ZlbWVudChldmVudCk7Ci0gICAgICAgICAgICBmaW5hbCBpbnQgbWluWSA9IHN0YXR1c0JhclNpemUgKyBtQ2xvc2VWaWV3LmdldEhlaWdodCgpOwotICAgICAgICAgICAgaWYgKGV2ZW50LmdldEFjdGlvbigpID09IE1vdGlvbkV2ZW50LkFDVElPTl9NT1ZFKSB7Ci0gICAgICAgICAgICAgICAgaW50IHkgPSAoaW50KWV2ZW50LmdldFJhd1koKTsKLSAgICAgICAgICAgICAgICBpZiAobUFuaW1hdGluZ1JldmVhbCAmJiB5IDwgbWluWSkgewotICAgICAgICAgICAgICAgICAgICAvLyBub3RoaW5nCi0gICAgICAgICAgICAgICAgfSBlbHNlICB7Ci0gICAgICAgICAgICAgICAgICAgIG1BbmltYXRpbmdSZXZlYWwgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAgICAgdXBkYXRlRXhwYW5kZWRWaWV3UG9zKHkgKyBtVmlld0RlbHRhKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKGV2ZW50LmdldEFjdGlvbigpID09IE1vdGlvbkV2ZW50LkFDVElPTl9VUCkgewotICAgICAgICAgICAgICAgIG1WZWxvY2l0eVRyYWNrZXIuY29tcHV0ZUN1cnJlbnRWZWxvY2l0eSgxMDAwKTsKLQotICAgICAgICAgICAgICAgIGZsb2F0IHlWZWwgPSBtVmVsb2NpdHlUcmFja2VyLmdldFlWZWxvY2l0eSgpOwotICAgICAgICAgICAgICAgIGJvb2xlYW4gbmVnYXRpdmUgPSB5VmVsIDwgMDsKLQotICAgICAgICAgICAgICAgIGZsb2F0IHhWZWwgPSBtVmVsb2NpdHlUcmFja2VyLmdldFhWZWxvY2l0eSgpOwotICAgICAgICAgICAgICAgIGlmICh4VmVsIDwgMCkgewotICAgICAgICAgICAgICAgICAgICB4VmVsID0gLXhWZWw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmICh4VmVsID4gMTUwLjBmKSB7Ci0gICAgICAgICAgICAgICAgICAgIHhWZWwgPSAxNTAuMGY7IC8vIGxpbWl0IGhvdyBtdWNoIHdlIGNhcmUgYWJvdXQgdGhlIHggYXhpcwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGZsb2F0IHZlbCA9IChmbG9hdClNYXRoLmh5cG90KHlWZWwsIHhWZWwpOwotICAgICAgICAgICAgICAgIGlmIChuZWdhdGl2ZSkgewotICAgICAgICAgICAgICAgICAgICB2ZWwgPSAtdmVsOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBwZXJmb3JtRmxpbmcoKGludClldmVudC5nZXRSYXdZKCksIHZlbCwgZmFsc2UpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCi0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHByaXZhdGUgY2xhc3MgTGF1bmNoZXIgaW1wbGVtZW50cyBWaWV3Lk9uQ2xpY2tMaXN0ZW5lciB7Ci0gICAgICAgIHByaXZhdGUgUGVuZGluZ0ludGVudCBtSW50ZW50OwotICAgICAgICBwcml2YXRlIFN0cmluZyBtUGtnOwotICAgICAgICBwcml2YXRlIFN0cmluZyBtVGFnOwotICAgICAgICBwcml2YXRlIGludCBtSWQ7Ci0KLSAgICAgICAgTGF1bmNoZXIoUGVuZGluZ0ludGVudCBpbnRlbnQsIFN0cmluZyBwa2csIFN0cmluZyB0YWcsIGludCBpZCkgewotICAgICAgICAgICAgbUludGVudCA9IGludGVudDsKLSAgICAgICAgICAgIG1Qa2cgPSBwa2c7Ci0gICAgICAgICAgICBtVGFnID0gdGFnOwotICAgICAgICAgICAgbUlkID0gaWQ7Ci0gICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgdm9pZCBvbkNsaWNrKFZpZXcgdikgewotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgICAvLyBUaGUgaW50ZW50IHdlIGFyZSBzZW5kaW5nIGlzIGZvciB0aGUgYXBwbGljYXRpb24sIHdoaWNoCi0gICAgICAgICAgICAgICAgLy8gd29uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGltbWVkaWF0ZWx5IHN0YXJ0IGFuIGFjdGl2aXR5IGFmdGVyCi0gICAgICAgICAgICAgICAgLy8gdGhlIHVzZXIgc3dpdGNoZXMgdG8gaG9tZS4gIFdlIGtub3cgaXQgaXMgc2FmZSB0byBkbyBhdCB0aGlzCi0gICAgICAgICAgICAgICAgLy8gcG9pbnQsIHNvIG1ha2Ugc3VyZSBuZXcgYWN0aXZpdHkgc3dpdGNoZXMgYXJlIG5vdyBhbGxvd2VkLgotICAgICAgICAgICAgICAgIEFjdGl2aXR5TWFuYWdlck5hdGl2ZS5nZXREZWZhdWx0KCkucmVzdW1lQXBwU3dpdGNoZXMoKTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKFJlbW90ZUV4Y2VwdGlvbiBlKSB7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpbnRbXSBwb3MgPSBuZXcgaW50WzJdOwotICAgICAgICAgICAgdi5nZXRMb2NhdGlvbk9uU2NyZWVuKHBvcyk7Ci0gICAgICAgICAgICBJbnRlbnQgb3ZlcmxheSA9IG5ldyBJbnRlbnQoKTsKLSAgICAgICAgICAgIG92ZXJsYXkuc2V0U291cmNlQm91bmRzKAotICAgICAgICAgICAgICAgICAgICBuZXcgUmVjdChwb3NbMF0sIHBvc1sxXSwgcG9zWzBdK3YuZ2V0V2lkdGgoKSwgcG9zWzFdK3YuZ2V0SGVpZ2h0KCkpKTsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgICAgbUludGVudC5zZW5kKG1Db250ZXh0LCAwLCBvdmVybGF5KTsKLSAgICAgICAgICAgICAgICBtTm90aWZpY2F0aW9uQ2FsbGJhY2tzLm9uTm90aWZpY2F0aW9uQ2xpY2sobVBrZywgbVRhZywgbUlkKTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKFBlbmRpbmdJbnRlbnQuQ2FuY2VsZWRFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgIC8vIHRoZSBzdGFjayB0cmFjZSBpc24ndCB2ZXJ5IGhlbHBmdWwgaGVyZS4gIEp1c3QgbG9nIHRoZSBleGNlcHRpb24gbWVzc2FnZS4KLSAgICAgICAgICAgICAgICBTbG9nLncoVEFHLCAiU2VuZGluZyBjb250ZW50SW50ZW50IGZhaWxlZDogIiArIGUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZGVhY3RpdmF0ZSgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBjbGFzcyBNeVRpY2tlciBleHRlbmRzIFRpY2tlciB7Ci0gICAgICAgIE15VGlja2VyKENvbnRleHQgY29udGV4dCwgU3RhdHVzQmFyVmlldyBzYikgewotICAgICAgICAgICAgc3VwZXIoY29udGV4dCwgc2IpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgdm9pZCB0aWNrZXJTdGFydGluZygpIHsKLSAgICAgICAgICAgIG1UaWNraW5nID0gdHJ1ZTsKLSAgICAgICAgICAgIG1JY29ucy5zZXRWaXNpYmlsaXR5KFZpZXcuR09ORSk7Ci0gICAgICAgICAgICBtVGlja2VyVmlldy5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7Ci0gICAgICAgICAgICBtVGlja2VyVmlldy5zdGFydEFuaW1hdGlvbihsb2FkQW5pbShjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmFuaW0ucHVzaF91cF9pbiwgbnVsbCkpOwotICAgICAgICAgICAgbUljb25zLnN0YXJ0QW5pbWF0aW9uKGxvYWRBbmltKGNvbS5hbmRyb2lkLmludGVybmFsLlIuYW5pbS5wdXNoX3VwX291dCwgbnVsbCkpOwotICAgICAgICAgICAgaWYgKG1FeHBhbmRlZFZpc2libGUpIHsKLSAgICAgICAgICAgICAgICBzZXREYXRlVmlld1Zpc2liaWxpdHkoZmFsc2UsIGNvbS5hbmRyb2lkLmludGVybmFsLlIuYW5pbS5wdXNoX3VwX291dCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgdm9pZCB0aWNrZXJEb25lKCkgewotICAgICAgICAgICAgbUljb25zLnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKLSAgICAgICAgICAgIG1UaWNrZXJWaWV3LnNldFZpc2liaWxpdHkoVmlldy5HT05FKTsKLSAgICAgICAgICAgIG1JY29ucy5zdGFydEFuaW1hdGlvbihsb2FkQW5pbShjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmFuaW0ucHVzaF9kb3duX2luLCBudWxsKSk7Ci0gICAgICAgICAgICBtVGlja2VyVmlldy5zdGFydEFuaW1hdGlvbihsb2FkQW5pbShjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmFuaW0ucHVzaF9kb3duX291dCwKLSAgICAgICAgICAgICAgICAgICAgICAgIG1UaWNraW5nRG9uZUxpc3RlbmVyKSk7Ci0gICAgICAgICAgICBpZiAobUV4cGFuZGVkVmlzaWJsZSkgewotICAgICAgICAgICAgICAgIHNldERhdGVWaWV3VmlzaWJpbGl0eSh0cnVlLCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmFuaW0ucHVzaF9kb3duX2luKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHZvaWQgdGlja2VySGFsdGluZygpIHsKLSAgICAgICAgICAgIG1JY29ucy5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7Ci0gICAgICAgICAgICBtVGlja2VyVmlldy5zZXRWaXNpYmlsaXR5KFZpZXcuR09ORSk7Ci0gICAgICAgICAgICBtSWNvbnMuc3RhcnRBbmltYXRpb24obG9hZEFuaW0oY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5hbmltLmZhZGVfaW4sIG51bGwpKTsKLSAgICAgICAgICAgIG1UaWNrZXJWaWV3LnN0YXJ0QW5pbWF0aW9uKGxvYWRBbmltKGNvbS5hbmRyb2lkLmludGVybmFsLlIuYW5pbS5mYWRlX291dCwKLSAgICAgICAgICAgICAgICAgICAgICAgIG1UaWNraW5nRG9uZUxpc3RlbmVyKSk7Ci0gICAgICAgICAgICBpZiAobUV4cGFuZGVkVmlzaWJsZSkgewotICAgICAgICAgICAgICAgIHNldERhdGVWaWV3VmlzaWJpbGl0eSh0cnVlLCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmFuaW0uZmFkZV9pbik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBBbmltYXRpb24uQW5pbWF0aW9uTGlzdGVuZXIgbVRpY2tpbmdEb25lTGlzdGVuZXIgPSBuZXcgQW5pbWF0aW9uLkFuaW1hdGlvbkxpc3RlbmVyKCkgezsKLSAgICAgICAgcHVibGljIHZvaWQgb25BbmltYXRpb25FbmQoQW5pbWF0aW9uIGFuaW1hdGlvbikgewotICAgICAgICAgICAgbVRpY2tpbmcgPSBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICBwdWJsaWMgdm9pZCBvbkFuaW1hdGlvblJlcGVhdChBbmltYXRpb24gYW5pbWF0aW9uKSB7Ci0gICAgICAgIH0KLSAgICAgICAgcHVibGljIHZvaWQgb25BbmltYXRpb25TdGFydChBbmltYXRpb24gYW5pbWF0aW9uKSB7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgcHJpdmF0ZSBBbmltYXRpb24gbG9hZEFuaW0oaW50IGlkLCBBbmltYXRpb24uQW5pbWF0aW9uTGlzdGVuZXIgbGlzdGVuZXIpIHsKLSAgICAgICAgQW5pbWF0aW9uIGFuaW0gPSBBbmltYXRpb25VdGlscy5sb2FkQW5pbWF0aW9uKG1Db250ZXh0LCBpZCk7Ci0gICAgICAgIGlmIChsaXN0ZW5lciAhPSBudWxsKSB7Ci0gICAgICAgICAgICBhbmltLnNldEFuaW1hdGlvbkxpc3RlbmVyKGxpc3RlbmVyKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gYW5pbTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgU3RyaW5nIHZpZXdJbmZvKFZpZXcgdikgewotICAgICAgICByZXR1cm4gIigiICsgdi5nZXRMZWZ0KCkgKyAiLCIgKyB2LmdldFRvcCgpICsgIikoIiArIHYuZ2V0UmlnaHQoKSArICIsIiArIHYuZ2V0Qm90dG9tKCkKLSAgICAgICAgICAgICAgICArICIgIiArIHYuZ2V0V2lkdGgoKSArICJ4IiArIHYuZ2V0SGVpZ2h0KCkgKyAiKSI7Ci0gICAgfQotCi0gICAgcHJvdGVjdGVkIHZvaWQgZHVtcChGaWxlRGVzY3JpcHRvciBmZCwgUHJpbnRXcml0ZXIgcHcsIFN0cmluZ1tdIGFyZ3MpIHsKLSAgICAgICAgaWYgKG1Db250ZXh0LmNoZWNrQ2FsbGluZ09yU2VsZlBlcm1pc3Npb24oYW5kcm9pZC5NYW5pZmVzdC5wZXJtaXNzaW9uLkRVTVApCi0gICAgICAgICAgICAgICAgIT0gUGFja2FnZU1hbmFnZXIuUEVSTUlTU0lPTl9HUkFOVEVEKSB7Ci0gICAgICAgICAgICBwdy5wcmludGxuKCJQZXJtaXNzaW9uIERlbmlhbDogY2FuJ3QgZHVtcCBTdGF0dXNCYXIgZnJvbSBmcm9tIHBpZD0iCi0gICAgICAgICAgICAgICAgICAgICsgQmluZGVyLmdldENhbGxpbmdQaWQoKQotICAgICAgICAgICAgICAgICAgICArICIsIHVpZD0iICsgQmluZGVyLmdldENhbGxpbmdVaWQoKSk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIHN5bmNocm9uaXplZCAobVF1ZXVlTG9jaykgewotICAgICAgICAgICAgcHcucHJpbnRsbigiQ3VycmVudCBTdGF0dXMgQmFyIHN0YXRlOiIpOwotICAgICAgICAgICAgcHcucHJpbnRsbigiICBtRXhwYW5kZWQ9IiArIG1FeHBhbmRlZAotICAgICAgICAgICAgICAgICAgICArICIsIG1FeHBhbmRlZFZpc2libGU9IiArIG1FeHBhbmRlZFZpc2libGUpOwotICAgICAgICAgICAgcHcucHJpbnRsbigiICBtVGlja2luZz0iICsgbVRpY2tpbmcpOwotICAgICAgICAgICAgcHcucHJpbnRsbigiICBtVHJhY2tpbmc9IiArIG1UcmFja2luZyk7Ci0gICAgICAgICAgICBwdy5wcmludGxuKCIgIG1BbmltYXRpbmc9IiArIG1BbmltYXRpbmcKLSAgICAgICAgICAgICAgICAgICAgKyAiLCBtQW5pbVk9IiArIG1BbmltWSArICIsIG1BbmltVmVsPSIgKyBtQW5pbVZlbAotICAgICAgICAgICAgICAgICAgICArICIsIG1BbmltQWNjZWw9IiArIG1BbmltQWNjZWwpOwotICAgICAgICAgICAgcHcucHJpbnRsbigiICBtQ3VyQW5pbWF0aW9uVGltZT0iICsgbUN1ckFuaW1hdGlvblRpbWUKLSAgICAgICAgICAgICAgICAgICAgKyAiIG1BbmltTGFzdFRpbWU9IiArIG1BbmltTGFzdFRpbWUpOwotICAgICAgICAgICAgcHcucHJpbnRsbigiICBtRGlzcGxheUhlaWdodD0iICsgbURpc3BsYXlIZWlnaHQKLSAgICAgICAgICAgICAgICAgICAgKyAiIG1BbmltYXRpbmdSZXZlYWw9IiArIG1BbmltYXRpbmdSZXZlYWwKLSAgICAgICAgICAgICAgICAgICAgKyAiIG1WaWV3RGVsdGE9IiArIG1WaWV3RGVsdGEpOwotICAgICAgICAgICAgcHcucHJpbnRsbigiICBtRGlzcGxheUhlaWdodD0iICsgbURpc3BsYXlIZWlnaHQpOwotICAgICAgICAgICAgZmluYWwgaW50IE4gPSBtUXVldWUuc2l6ZSgpOwotICAgICAgICAgICAgcHcucHJpbnRsbigiICBtUXVldWUuc2l6ZT0iICsgTik7Ci0gICAgICAgICAgICBmb3IgKGludCBpPTA7IGk8TjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgUGVuZGluZ09wIG9wID0gbVF1ZXVlLmdldChpKTsKLSAgICAgICAgICAgICAgICBwdy5wcmludGxuKCIgICAgWyIgKyBpICsgIl0ga2V5PSIgKyBvcC5rZXkgKyAiIGNvZGU9IiArIG9wLmNvZGUgKyAiIHZpc2libGU9IgotICAgICAgICAgICAgICAgICAgICAgICAgKyBvcC52aXNpYmxlKTsKLSAgICAgICAgICAgICAgICBwdy5wcmludGxuKCIgICAgICAgICAgIGljb25EYXRhPSIgKyBvcC5pY29uRGF0YSk7Ci0gICAgICAgICAgICAgICAgcHcucHJpbnRsbigiICAgICAgICAgICBub3RpZmljYXRpb25EYXRhPSIgKyBvcC5ub3RpZmljYXRpb25EYXRhKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbUV4cGFuZGVkUGFyYW1zOiAiICsgbUV4cGFuZGVkUGFyYW1zKTsKLSAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbUV4cGFuZGVkVmlldzogIiArIHZpZXdJbmZvKG1FeHBhbmRlZFZpZXcpKTsKLSAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbUV4cGFuZGVkRGlhbG9nOiAiICsgbUV4cGFuZGVkRGlhbG9nKTsKLSAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbVRyYWNraW5nUGFyYW1zOiAiICsgbVRyYWNraW5nUGFyYW1zKTsKLSAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbVRyYWNraW5nVmlldzogIiArIHZpZXdJbmZvKG1UcmFja2luZ1ZpZXcpKTsKLSAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbU9uZ29pbmdUaXRsZTogIiArIHZpZXdJbmZvKG1PbmdvaW5nVGl0bGUpKTsKLSAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbU9uZ29pbmdJdGVtczogIiArIHZpZXdJbmZvKG1PbmdvaW5nSXRlbXMpKTsKLSAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbUxhdGVzdFRpdGxlOiAiICsgdmlld0luZm8obUxhdGVzdFRpdGxlKSk7Ci0gICAgICAgICAgICBwdy5wcmludGxuKCIgIG1MYXRlc3RJdGVtczogIiArIHZpZXdJbmZvKG1MYXRlc3RJdGVtcykpOwotICAgICAgICAgICAgcHcucHJpbnRsbigiICBtTm9Ob3RpZmljYXRpb25zVGl0bGU6ICIgKyB2aWV3SW5mbyhtTm9Ob3RpZmljYXRpb25zVGl0bGUpKTsKLSAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbUNsb3NlVmlldzogIiArIHZpZXdJbmZvKG1DbG9zZVZpZXcpKTsKLSAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbVRpY2tlclZpZXc6ICIgKyB2aWV3SW5mbyhtVGlja2VyVmlldykpOwotICAgICAgICAgICAgcHcucHJpbnRsbigiICBtU2Nyb2xsVmlldzogIiArIHZpZXdJbmZvKG1TY3JvbGxWaWV3KQotICAgICAgICAgICAgICAgICAgICArICIgc2Nyb2xsICIgKyBtU2Nyb2xsVmlldy5nZXRTY3JvbGxYKCkgKyAiLCIgKyBtU2Nyb2xsVmlldy5nZXRTY3JvbGxZKCkpOwotICAgICAgICAgICAgcHcucHJpbnRsbigibU5vdGlmaWNhdGlvbkxpbmVhckxheW91dDogIiArIHZpZXdJbmZvKG1Ob3RpZmljYXRpb25MaW5lYXJMYXlvdXQpKTsKLSAgICAgICAgfQotICAgICAgICBzeW5jaHJvbml6ZWQgKG1JY29uTWFwKSB7Ci0gICAgICAgICAgICBmaW5hbCBpbnQgTiA9IG1JY29uTWFwLnNpemUoKTsKLSAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbUljb25NYXAuc2l6ZT0iICsgTik7Ci0gICAgICAgICAgICBTZXQ8SUJpbmRlcj4ga2V5cyA9IG1JY29uTWFwLmtleVNldCgpOwotICAgICAgICAgICAgaW50IGk9MDsKLSAgICAgICAgICAgIGZvciAoSUJpbmRlciBrZXk6IGtleXMpIHsKLSAgICAgICAgICAgICAgICBTdGF0dXNCYXJJY29uIGljb24gPSBtSWNvbk1hcC5nZXQoa2V5KTsKLSAgICAgICAgICAgICAgICBwdy5wcmludGxuKCIgICAgWyIgKyBpICsgIl0ga2V5PSIgKyBrZXkpOwotICAgICAgICAgICAgICAgIHB3LnByaW50bG4oIiAgICAgICAgICAgZGF0YT0iICsgaWNvbi5tRGF0YSk7Ci0gICAgICAgICAgICAgICAgaSsrOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHN5bmNocm9uaXplZCAobU5vdGlmaWNhdGlvbkRhdGEpIHsKLSAgICAgICAgICAgIGludCBOID0gbU5vdGlmaWNhdGlvbkRhdGEub25nb2luZ0NvdW50KCk7Ci0gICAgICAgICAgICBwdy5wcmludGxuKCIgIG9uZ29pbmdDb3VudC5zaXplPSIgKyBOKTsKLSAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxOOyBpKyspIHsKLSAgICAgICAgICAgICAgICBTdGF0dXNCYXJOb3RpZmljYXRpb24gbiA9IG1Ob3RpZmljYXRpb25EYXRhLmdldE9uZ29pbmcoaSk7Ci0gICAgICAgICAgICAgICAgcHcucHJpbnRsbigiICAgIFsiICsgaSArICJdIGtleT0iICsgbi5rZXkgKyAiIHZpZXc9IiArIG4udmlldyk7Ci0gICAgICAgICAgICAgICAgcHcucHJpbnRsbigiICAgICAgICAgICBkYXRhPSIgKyBuLmRhdGEpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgTiA9IG1Ob3RpZmljYXRpb25EYXRhLmxhdGVzdENvdW50KCk7Ci0gICAgICAgICAgICBwdy5wcmludGxuKCIgIG9uZ29pbmdDb3VudC5zaXplPSIgKyBOKTsKLSAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxOOyBpKyspIHsKLSAgICAgICAgICAgICAgICBTdGF0dXNCYXJOb3RpZmljYXRpb24gbiA9IG1Ob3RpZmljYXRpb25EYXRhLmdldExhdGVzdChpKTsKLSAgICAgICAgICAgICAgICBwdy5wcmludGxuKCIgICAgWyIgKyBpICsgIl0ga2V5PSIgKyBuLmtleSArICIgdmlldz0iICsgbi52aWV3KTsKLSAgICAgICAgICAgICAgICBwdy5wcmludGxuKCIgICAgICAgICAgIGRhdGE9IiArIG4uZGF0YSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgc3luY2hyb25pemVkIChtRGlzYWJsZVJlY29yZHMpIHsKLSAgICAgICAgICAgIGZpbmFsIGludCBOID0gbURpc2FibGVSZWNvcmRzLnNpemUoKTsKLSAgICAgICAgICAgIHB3LnByaW50bG4oIiAgbURpc2FibGVSZWNvcmRzLnNpemU9IiArIE4KLSAgICAgICAgICAgICAgICAgICAgKyAiIG1EaXNhYmxlZD0weCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKG1EaXNhYmxlZCkpOwotICAgICAgICAgICAgZm9yIChpbnQgaT0wOyBpPE47IGkrKykgewotICAgICAgICAgICAgICAgIERpc2FibGVSZWNvcmQgdG9rID0gbURpc2FibGVSZWNvcmRzLmdldChpKTsKLSAgICAgICAgICAgICAgICBwdy5wcmludGxuKCIgICAgWyIgKyBpICsgIl0gd2hhdD0weCIgKyBJbnRlZ2VyLnRvSGV4U3RyaW5nKHRvay53aGF0KQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIgcGtnPSIgKyB0b2sucGtnICsgIiB0b2tlbj0iICsgdG9rLnRva2VuKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICAKLSAgICAgICAgaWYgKGZhbHNlKSB7Ci0gICAgICAgICAgICBwdy5wcmludGxuKCJzZWUgdGhlIGxvZ2NhdCBmb3IgYSBkdW1wIG9mIHRoZSB2aWV3cyB3ZSBoYXZlIGNyZWF0ZWQuIik7Ci0gICAgICAgICAgICAvLyBtdXN0IGhhcHBlbiBvbiB1aSB0aHJlYWQKLSAgICAgICAgICAgIG1IYW5kbGVyLnBvc3QobmV3IFJ1bm5hYmxlKCkgewotICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtU3RhdHVzQmFyVmlldy5nZXRMb2NhdGlvbk9uU2NyZWVuKG1BYnNQb3MpOwotICAgICAgICAgICAgICAgICAgICAgICAgU2xvZy5kKFRBRywgIm1TdGF0dXNCYXJWaWV3OiAtLS0tLSAoIiArIG1BYnNQb3NbMF0gKyAiLCIgKyBtQWJzUG9zWzFdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgIikgIiArIG1TdGF0dXNCYXJWaWV3LmdldFdpZHRoKCkgKyAieCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBtU3RhdHVzQmFyVmlldy5nZXRIZWlnaHQoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtU3RhdHVzQmFyVmlldy5kZWJ1ZygpOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBtRXhwYW5kZWRWaWV3LmdldExvY2F0aW9uT25TY3JlZW4obUFic1Bvcyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBTbG9nLmQoVEFHLCAibUV4cGFuZGVkVmlldzogLS0tLS0gKCIgKyBtQWJzUG9zWzBdICsgIiwiICsgbUFic1Bvc1sxXQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICIpICIgKyBtRXhwYW5kZWRWaWV3LmdldFdpZHRoKCkgKyAieCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBtRXhwYW5kZWRWaWV3LmdldEhlaWdodCgpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1FeHBhbmRlZFZpZXcuZGVidWcoKTsKLQotICAgICAgICAgICAgICAgICAgICAgICAgbVRyYWNraW5nVmlldy5nZXRMb2NhdGlvbk9uU2NyZWVuKG1BYnNQb3MpOwotICAgICAgICAgICAgICAgICAgICAgICAgU2xvZy5kKFRBRywgIm1UcmFja2luZ1ZpZXc6IC0tLS0tICgiICsgbUFic1Bvc1swXSArICIsIiArIG1BYnNQb3NbMV0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAiKSAiICsgbVRyYWNraW5nVmlldy5nZXRXaWR0aCgpICsgIngiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgbVRyYWNraW5nVmlldy5nZXRIZWlnaHQoKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBtVHJhY2tpbmdWaWV3LmRlYnVnKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgb25CYXJWaWV3QXR0YWNoZWQoKSB7Ci0gICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIGxwOwotICAgICAgICBpbnQgcGl4ZWxGb3JtYXQ7Ci0gICAgICAgIERyYXdhYmxlIGJnOwotCi0gICAgICAgIC8vLyAtLS0tLS0tLS0tIFRyYWNraW5nIFZpZXcgLS0tLS0tLS0tLS0tLS0KLSAgICAgICAgcGl4ZWxGb3JtYXQgPSBQaXhlbEZvcm1hdC5SR0JYXzg4ODg7Ci0gICAgICAgIGJnID0gbVRyYWNraW5nVmlldy5nZXRCYWNrZ3JvdW5kKCk7Ci0gICAgICAgIGlmIChiZyAhPSBudWxsKSB7Ci0gICAgICAgICAgICBwaXhlbEZvcm1hdCA9IGJnLmdldE9wYWNpdHkoKTsKLSAgICAgICAgfQotCi0gICAgICAgIGxwID0gbmV3IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zKAotICAgICAgICAgICAgICAgIFZpZXdHcm91cC5MYXlvdXRQYXJhbXMuTUFUQ0hfUEFSRU5ULAotICAgICAgICAgICAgICAgIFZpZXdHcm91cC5MYXlvdXRQYXJhbXMuTUFUQ0hfUEFSRU5ULAotICAgICAgICAgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLlRZUEVfU1RBVFVTX0JBUl9QQU5FTCwKLSAgICAgICAgICAgICAgICBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX0xBWU9VVF9JTl9TQ1JFRU4KLSAgICAgICAgICAgICAgICB8IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfTEFZT1VUX05PX0xJTUlUUwotICAgICAgICAgICAgICAgIHwgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19BTFRfRk9DVVNBQkxFX0lNLAotICAgICAgICAgICAgICAgIHBpeGVsRm9ybWF0KTsKLS8vICAgICAgICBscC50b2tlbiA9IG1TdGF0dXNCYXJWaWV3LmdldFdpbmRvd1Rva2VuKCk7Ci0gICAgICAgIGxwLmdyYXZpdHkgPSBHcmF2aXR5LlRPUCB8IEdyYXZpdHkuRklMTF9IT1JJWk9OVEFMOwotICAgICAgICBscC5zZXRUaXRsZSgiVHJhY2tpbmdWaWV3Iik7Ci0gICAgICAgIGxwLnkgPSBtVHJhY2tpbmdQb3NpdGlvbjsKLSAgICAgICAgbVRyYWNraW5nUGFyYW1zID0gbHA7Ci0KLSAgICAgICAgV2luZG93TWFuYWdlckltcGwuZ2V0RGVmYXVsdCgpLmFkZFZpZXcobVRyYWNraW5nVmlldywgbHApOwotICAgIH0KLQotICAgIHZvaWQgb25UcmFja2luZ1ZpZXdBdHRhY2hlZCgpIHsKLSAgICAgICAgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMgbHA7Ci0gICAgICAgIGludCBwaXhlbEZvcm1hdDsKLSAgICAgICAgRHJhd2FibGUgYmc7Ci0KLSAgICAgICAgLy8vIC0tLS0tLS0tLS0gRXhwYW5kZWQgVmlldyAtLS0tLS0tLS0tLS0tLQotICAgICAgICBwaXhlbEZvcm1hdCA9IFBpeGVsRm9ybWF0LlRSQU5TTFVDRU5UOwotCi0gICAgICAgIGZpbmFsIGludCBkaXNwaCA9IG1EaXNwbGF5LmdldEhlaWdodCgpOwotICAgICAgICBscCA9IG1FeHBhbmRlZERpYWxvZy5nZXRXaW5kb3coKS5nZXRBdHRyaWJ1dGVzKCk7Ci0gICAgICAgIGxwLndpZHRoID0gVmlld0dyb3VwLkxheW91dFBhcmFtcy5NQVRDSF9QQVJFTlQ7Ci0gICAgICAgIGxwLmhlaWdodCA9IGdldEV4cGFuZGVkSGVpZ2h0KCk7Ci0gICAgICAgIGxwLnggPSAwOwotICAgICAgICBtVHJhY2tpbmdQb3NpdGlvbiA9IGxwLnkgPSAtZGlzcGg7IC8vIHN1ZmZpY2llbnRseSBsYXJnZSBuZWdhdGl2ZQotICAgICAgICBscC50eXBlID0gV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuVFlQRV9TVEFUVVNfQkFSX1BBTkVMOwotICAgICAgICBscC5mbGFncyA9IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfTEFZT1VUX0lOX1NDUkVFTgotICAgICAgICAgICAgICAgIHwgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19MQVlPVVRfTk9fTElNSVRTCi0gICAgICAgICAgICAgICAgfCBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcy5GTEFHX05PVF9UT1VDSF9NT0RBTAotICAgICAgICAgICAgICAgIHwgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMuRkxBR19ESVRIRVIKLSAgICAgICAgICAgICAgICB8IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfTk9UX0ZPQ1VTQUJMRTsKLSAgICAgICAgbHAuZm9ybWF0ID0gcGl4ZWxGb3JtYXQ7Ci0gICAgICAgIGxwLmdyYXZpdHkgPSBHcmF2aXR5LlRPUCB8IEdyYXZpdHkuRklMTF9IT1JJWk9OVEFMOwotICAgICAgICBscC5zZXRUaXRsZSgiU3RhdHVzQmFyRXhwYW5kZWQiKTsKLSAgICAgICAgbUV4cGFuZGVkRGlhbG9nLmdldFdpbmRvdygpLnNldEF0dHJpYnV0ZXMobHApOwotICAgICAgICBtRXhwYW5kZWREaWFsb2cuZ2V0V2luZG93KCkuc2V0Rm9ybWF0KHBpeGVsRm9ybWF0KTsKLSAgICAgICAgbUV4cGFuZGVkUGFyYW1zID0gbHA7Ci0KLSAgICAgICAgbUV4cGFuZGVkRGlhbG9nLmdldFdpbmRvdygpLnJlcXVlc3RGZWF0dXJlKFdpbmRvdy5GRUFUVVJFX05PX1RJVExFKTsKLSAgICAgICAgbUV4cGFuZGVkRGlhbG9nLnNldENvbnRlbnRWaWV3KG1FeHBhbmRlZFZpZXcsCi0gICAgICAgICAgICAgICAgbmV3IFZpZXdHcm91cC5MYXlvdXRQYXJhbXMoVmlld0dyb3VwLkxheW91dFBhcmFtcy5NQVRDSF9QQVJFTlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmlld0dyb3VwLkxheW91dFBhcmFtcy5NQVRDSF9QQVJFTlQpKTsKLSAgICAgICAgbUV4cGFuZGVkRGlhbG9nLmdldFdpbmRvdygpLnNldEJhY2tncm91bmREcmF3YWJsZShudWxsKTsKLSAgICAgICAgbUV4cGFuZGVkRGlhbG9nLnNob3coKTsKLSAgICAgICAgRnJhbWVMYXlvdXQgaGFjayA9IChGcmFtZUxheW91dCltRXhwYW5kZWRWaWV3LmdldFBhcmVudCgpOwotICAgIH0KLQotICAgIHZvaWQgc2V0RGF0ZVZpZXdWaXNpYmlsaXR5KGJvb2xlYW4gdmlzaWJsZSwgaW50IGFuaW0pIHsKLSAgICAgICAgbURhdGVWaWV3LnNldFVwZGF0ZXModmlzaWJsZSk7Ci0gICAgICAgIG1EYXRlVmlldy5zZXRWaXNpYmlsaXR5KHZpc2libGUgPyBWaWV3LlZJU0lCTEUgOiBWaWV3LklOVklTSUJMRSk7Ci0gICAgICAgIG1EYXRlVmlldy5zdGFydEFuaW1hdGlvbihsb2FkQW5pbShhbmltLCBudWxsKSk7Ci0gICAgfQotCi0gICAgdm9pZCBzZXROb3RpZmljYXRpb25JY29uVmlzaWJpbGl0eShib29sZWFuIHZpc2libGUsIGludCBhbmltKSB7Ci0gICAgICAgIGludCBvbGQgPSBtTm90aWZpY2F0aW9uSWNvbnMuZ2V0VmlzaWJpbGl0eSgpOwotICAgICAgICBpbnQgdiA9IHZpc2libGUgPyBWaWV3LlZJU0lCTEUgOiBWaWV3LklOVklTSUJMRTsKLSAgICAgICAgaWYgKG9sZCAhPSB2KSB7Ci0gICAgICAgICAgICBtTm90aWZpY2F0aW9uSWNvbnMuc2V0VmlzaWJpbGl0eSh2KTsKLSAgICAgICAgICAgIG1Ob3RpZmljYXRpb25JY29ucy5zdGFydEFuaW1hdGlvbihsb2FkQW5pbShhbmltLCBudWxsKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIHVwZGF0ZUV4cGFuZGVkVmlld1BvcyhpbnQgZXhwYW5kZWRQb3NpdGlvbikgewotICAgICAgICBpZiAoU1BFVykgewotICAgICAgICAgICAgU2xvZy5kKFRBRywgInVwZGF0ZUV4cGFuZGVkVmlld1BvcyBiZWZvcmUgZXhwYW5kZWRQb3NpdGlvbj0iICsgZXhwYW5kZWRQb3NpdGlvbgotICAgICAgICAgICAgICAgICAgICArICIgbVRyYWNraW5nUGFyYW1zLnk9IiArIG1UcmFja2luZ1BhcmFtcy55Ci0gICAgICAgICAgICAgICAgICAgICsgIiBtVHJhY2tpbmdQb3NpdGlvbj0iICsgbVRyYWNraW5nUG9zaXRpb24pOwotICAgICAgICB9Ci0KLSAgICAgICAgaW50IGggPSBtU3RhdHVzQmFyVmlldy5nZXRIZWlnaHQoKTsKLSAgICAgICAgaW50IGRpc3BoID0gbURpc3BsYXkuZ2V0SGVpZ2h0KCk7Ci0KLSAgICAgICAgLy8gSWYgdGhlIGV4cGFuZGVkIHZpZXcgaXMgbm90IHZpc2libGUsIG1ha2Ugc3VyZSB0aGV5J3JlIHN0aWxsIG9mZiBzY3JlZW4uCi0gICAgICAgIC8vIE1heWJlIHRoZSB2aWV3IHdhcyByZXNpemVkLgotICAgICAgICBpZiAoIW1FeHBhbmRlZFZpc2libGUpIHsKLSAgICAgICAgICAgIGlmIChtVHJhY2tpbmdWaWV3ICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBtVHJhY2tpbmdQb3NpdGlvbiA9IC1kaXNwaDsKLSAgICAgICAgICAgICAgICBpZiAobVRyYWNraW5nUGFyYW1zICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgbVRyYWNraW5nUGFyYW1zLnkgPSBtVHJhY2tpbmdQb3NpdGlvbjsKLSAgICAgICAgICAgICAgICAgICAgV2luZG93TWFuYWdlckltcGwuZ2V0RGVmYXVsdCgpLnVwZGF0ZVZpZXdMYXlvdXQobVRyYWNraW5nVmlldywgbVRyYWNraW5nUGFyYW1zKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobUV4cGFuZGVkUGFyYW1zICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBtRXhwYW5kZWRQYXJhbXMueSA9IC1kaXNwaDsKLSAgICAgICAgICAgICAgICBtRXhwYW5kZWREaWFsb2cuZ2V0V2luZG93KCkuc2V0QXR0cmlidXRlcyhtRXhwYW5kZWRQYXJhbXMpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gdHJhY2tpbmcgdmlldy4uLgotICAgICAgICBpbnQgcG9zOwotICAgICAgICBpZiAoZXhwYW5kZWRQb3NpdGlvbiA9PSBFWFBBTkRFRF9GVUxMX09QRU4pIHsKLSAgICAgICAgICAgIHBvcyA9IGg7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoZXhwYW5kZWRQb3NpdGlvbiA9PSBFWFBBTkRFRF9MRUFWRV9BTE9ORSkgewotICAgICAgICAgICAgcG9zID0gbVRyYWNraW5nUG9zaXRpb247Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAoZXhwYW5kZWRQb3NpdGlvbiA8PSBkaXNwaCkgewotICAgICAgICAgICAgICAgIHBvcyA9IGV4cGFuZGVkUG9zaXRpb247Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHBvcyA9IGRpc3BoOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcG9zIC09IGRpc3BoLWg7Ci0gICAgICAgIH0KLSAgICAgICAgbVRyYWNraW5nUG9zaXRpb24gPSBtVHJhY2tpbmdQYXJhbXMueSA9IHBvczsKLSAgICAgICAgbVRyYWNraW5nUGFyYW1zLmhlaWdodCA9IGRpc3BoLWg7Ci0gICAgICAgIFdpbmRvd01hbmFnZXJJbXBsLmdldERlZmF1bHQoKS51cGRhdGVWaWV3TGF5b3V0KG1UcmFja2luZ1ZpZXcsIG1UcmFja2luZ1BhcmFtcyk7Ci0KLSAgICAgICAgaWYgKG1FeHBhbmRlZFBhcmFtcyAhPSBudWxsKSB7Ci0gICAgICAgICAgICBtQ2xvc2VWaWV3LmdldExvY2F0aW9uSW5XaW5kb3cobVBvc2l0aW9uVG1wKTsKLSAgICAgICAgICAgIGZpbmFsIGludCBjbG9zZVBvcyA9IG1Qb3NpdGlvblRtcFsxXTsKLQotICAgICAgICAgICAgbUV4cGFuZGVkQ29udGVudHMuZ2V0TG9jYXRpb25JbldpbmRvdyhtUG9zaXRpb25UbXApOwotICAgICAgICAgICAgZmluYWwgaW50IGNvbnRlbnRzQm90dG9tID0gbVBvc2l0aW9uVG1wWzFdICsgbUV4cGFuZGVkQ29udGVudHMuZ2V0SGVpZ2h0KCk7Ci0KLSAgICAgICAgICAgIG1FeHBhbmRlZFBhcmFtcy55ID0gcG9zICsgbVRyYWNraW5nVmlldy5nZXRIZWlnaHQoKQotICAgICAgICAgICAgICAgICAgICAtIChtVHJhY2tpbmdQYXJhbXMuaGVpZ2h0LWNsb3NlUG9zKSAtIGNvbnRlbnRzQm90dG9tOwotICAgICAgICAgICAgaW50IG1heCA9IGg7Ci0gICAgICAgICAgICBpZiAobUV4cGFuZGVkUGFyYW1zLnkgPiBtYXgpIHsKLSAgICAgICAgICAgICAgICBtRXhwYW5kZWRQYXJhbXMueSA9IG1heDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGludCBtaW4gPSBtVHJhY2tpbmdQb3NpdGlvbjsKLSAgICAgICAgICAgIGlmIChtRXhwYW5kZWRQYXJhbXMueSA8IG1pbikgewotICAgICAgICAgICAgICAgIG1FeHBhbmRlZFBhcmFtcy55ID0gbWluOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBib29sZWFuIHZpc2libGUgPSAobVRyYWNraW5nUG9zaXRpb24gKyBtVHJhY2tpbmdWaWV3LmdldEhlaWdodCgpKSA+IGg7Ci0gICAgICAgICAgICBpZiAoIXZpc2libGUpIHsKLSAgICAgICAgICAgICAgICAvLyBpZiB0aGUgY29udGVudHMgYXJlbid0IHZpc2libGUsIG1vdmUgdGhlIGV4cGFuZGVkIHZpZXcgd2F5IG9mZiBzY3JlZW4KLSAgICAgICAgICAgICAgICAvLyBiZWNhdXNlIHRoZSB3aW5kb3cgaXRzZWxmIGV4dGVuZHMgYmVsb3cgdGhlIGNvbnRlbnQgdmlldy4KLSAgICAgICAgICAgICAgICBtRXhwYW5kZWRQYXJhbXMueSA9IC1kaXNwaDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHBhbmVsU2xpZ2h0bHlWaXNpYmxlKHZpc2libGUpOwotICAgICAgICAgICAgbUV4cGFuZGVkRGlhbG9nLmdldFdpbmRvdygpLnNldEF0dHJpYnV0ZXMobUV4cGFuZGVkUGFyYW1zKTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChTUEVXKSB7Ci0gICAgICAgICAgICBTbG9nLmQoVEFHLCAidXBkYXRlRXhwYW5kZWRWaWV3UG9zIGFmdGVyICBleHBhbmRlZFBvc2l0aW9uPSIgKyBleHBhbmRlZFBvc2l0aW9uCi0gICAgICAgICAgICAgICAgICAgICsgIiBtVHJhY2tpbmdQYXJhbXMueT0iICsgbVRyYWNraW5nUGFyYW1zLnkKLSAgICAgICAgICAgICAgICAgICAgKyAiIG1UcmFja2luZ1Bvc2l0aW9uPSIgKyBtVHJhY2tpbmdQb3NpdGlvbgotICAgICAgICAgICAgICAgICAgICArICIgbUV4cGFuZGVkUGFyYW1zLnk9IiArIG1FeHBhbmRlZFBhcmFtcy55Ci0gICAgICAgICAgICAgICAgICAgICsgIiBtRXhwYW5kZWRQYXJhbXMuaGVpZ2h0PSIgKyBtRXhwYW5kZWRQYXJhbXMuaGVpZ2h0KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGludCBnZXRFeHBhbmRlZEhlaWdodCgpIHsKLSAgICAgICAgcmV0dXJuIG1EaXNwbGF5LmdldEhlaWdodCgpIC0gbVN0YXR1c0JhclZpZXcuZ2V0SGVpZ2h0KCkgLSBtQ2xvc2VWaWV3LmdldEhlaWdodCgpOwotICAgIH0KLQotICAgIHZvaWQgdXBkYXRlRXhwYW5kZWRIZWlnaHQoKSB7Ci0gICAgICAgIGlmIChtRXhwYW5kZWRWaWV3ICE9IG51bGwpIHsKLSAgICAgICAgICAgIG1FeHBhbmRlZFBhcmFtcy5oZWlnaHQgPSBnZXRFeHBhbmRlZEhlaWdodCgpOwotICAgICAgICAgICAgbUV4cGFuZGVkRGlhbG9nLmdldFdpbmRvdygpLnNldEF0dHJpYnV0ZXMobUV4cGFuZGVkUGFyYW1zKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8qKgotICAgICAqIFRoZSBMRURzIGFyZSB0dXJuZWQgbylmZiB3aGVuIHRoZSBub3RpZmljYXRpb24gcGFuZWwgaXMgc2hvd24sIGV2ZW4ganVzdCBhIGxpdHRsZSBiaXQuCi0gICAgICogVGhpcyB3YXMgYWRkZWQgbGFzdC1taW51dGUgYW5kIGlzIGluY29uc2lzdGVudCB3aXRoIHRoZSB3YXkgdGhlIHJlc3Qgb2YgdGhlIG5vdGlmaWNhdGlvbnMKLSAgICAgKiBhcmUgaGFuZGxlZCwgYmVjYXVzZSB0aGUgbm90aWZpY2F0aW9uIGlzbid0IHJlYWxseSBjYW5jZWxsZWQuICBUaGUgbGlnaHRzIGFyZSBqdXN0Ci0gICAgICogdHVybmVkIG9mZi4gIElmIGFueSBvdGhlciBub3RpZmljYXRpb25zIGhhcHBlbiwgdGhlIGxpZ2h0cyB3aWxsIHR1cm4gYmFjayBvbi4gIFN0ZXZlIHNheXMKLSAgICAgKiB0aGlzIGlzIHdoYXQgaGUgd2FudHMuIChzZWUgYnVnIDExMzE0NjEpCi0gICAgICovCi0gICAgcHJpdmF0ZSBib29sZWFuIG1QYW5lbFNsaWdodGx5VmlzaWJsZTsKLSAgICB2b2lkIHBhbmVsU2xpZ2h0bHlWaXNpYmxlKGJvb2xlYW4gdmlzaWJsZSkgewotICAgICAgICBpZiAobVBhbmVsU2xpZ2h0bHlWaXNpYmxlICE9IHZpc2libGUpIHsKLSAgICAgICAgICAgIG1QYW5lbFNsaWdodGx5VmlzaWJsZSA9IHZpc2libGU7Ci0gICAgICAgICAgICBpZiAodmlzaWJsZSkgewotICAgICAgICAgICAgICAgIC8vIHRlbGwgdGhlIG5vdGlmaWNhdGlvbiBtYW5hZ2VyIHRvIHR1cm4gb2ZmIHRoZSBsaWdodHMuCi0gICAgICAgICAgICAgICAgbU5vdGlmaWNhdGlvbkNhbGxiYWNrcy5vblBhbmVsUmV2ZWFsZWQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHZvaWQgcGVyZm9ybURpc2FibGVBY3Rpb25zKGludCBuZXQpIHsKLSAgICAgICAgaW50IG9sZCA9IG1EaXNhYmxlZDsKLSAgICAgICAgaW50IGRpZmYgPSBuZXQgXiBvbGQ7Ci0gICAgICAgIG1EaXNhYmxlZCA9IG5ldDsKLQotICAgICAgICAvLyBhY3QgYWNjb3JkaW5nbHkKLSAgICAgICAgaWYgKChkaWZmICYgU3RhdHVzQmFyTWFuYWdlci5ESVNBQkxFX0VYUEFORCkgIT0gMCkgewotICAgICAgICAgICAgaWYgKChuZXQgJiBTdGF0dXNCYXJNYW5hZ2VyLkRJU0FCTEVfRVhQQU5EKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgU2xvZy5kKFRBRywgIkRJU0FCTEVfRVhQQU5EOiB5ZXMiKTsKLSAgICAgICAgICAgICAgICBhbmltYXRlQ29sbGFwc2UoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpZiAoKGRpZmYgJiBTdGF0dXNCYXJNYW5hZ2VyLkRJU0FCTEVfTk9USUZJQ0FUSU9OX0lDT05TKSAhPSAwKSB7Ci0gICAgICAgICAgICBpZiAoKG5ldCAmIFN0YXR1c0Jhck1hbmFnZXIuRElTQUJMRV9OT1RJRklDQVRJT05fSUNPTlMpICE9IDApIHsKLSAgICAgICAgICAgICAgICBTbG9nLmQoVEFHLCAiRElTQUJMRV9OT1RJRklDQVRJT05fSUNPTlM6IHllcyIpOwotICAgICAgICAgICAgICAgIGlmIChtVGlja2luZykgewotICAgICAgICAgICAgICAgICAgICBtTm90aWZpY2F0aW9uSWNvbnMuc2V0VmlzaWJpbGl0eShWaWV3LklOVklTSUJMRSk7Ci0gICAgICAgICAgICAgICAgICAgIG1UaWNrZXIuaGFsdCgpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIHNldE5vdGlmaWNhdGlvbkljb25WaXNpYmlsaXR5KGZhbHNlLCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmFuaW0uZmFkZV9vdXQpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgU2xvZy5kKFRBRywgIkRJU0FCTEVfTk9USUZJQ0FUSU9OX0lDT05TOiBubyIpOwotICAgICAgICAgICAgICAgIGlmICghbUV4cGFuZGVkVmlzaWJsZSkgewotICAgICAgICAgICAgICAgICAgICBzZXROb3RpZmljYXRpb25JY29uVmlzaWJpbGl0eSh0cnVlLCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmFuaW0uZmFkZV9pbik7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKChkaWZmICYgU3RhdHVzQmFyTWFuYWdlci5ESVNBQkxFX05PVElGSUNBVElPTl9USUNLRVIpICE9IDApIHsKLSAgICAgICAgICAgIGlmIChtVGlja2luZyAmJiAobmV0ICYgU3RhdHVzQmFyTWFuYWdlci5ESVNBQkxFX05PVElGSUNBVElPTl9USUNLRVIpICE9IDApIHsKLSAgICAgICAgICAgICAgICBtVGlja2VyLmhhbHQoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLQotICAgIHByaXZhdGUgVmlldy5PbkNsaWNrTGlzdGVuZXIgbUNsZWFyQnV0dG9uTGlzdGVuZXIgPSBuZXcgVmlldy5PbkNsaWNrTGlzdGVuZXIoKSB7Ci0gICAgICAgIHB1YmxpYyB2b2lkIG9uQ2xpY2soVmlldyB2KSB7Ci0gICAgICAgICAgICBtTm90aWZpY2F0aW9uQ2FsbGJhY2tzLm9uQ2xlYXJBbGwoKTsKLSAgICAgICAgICAgIGFkZFBlbmRpbmdPcChPUF9FWFBBTkQsIG51bGwsIGZhbHNlKTsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICBwcml2YXRlIEJyb2FkY2FzdFJlY2VpdmVyIG1Ccm9hZGNhc3RSZWNlaXZlciA9IG5ldyBCcm9hZGNhc3RSZWNlaXZlcigpIHsKLSAgICAgICAgcHVibGljIHZvaWQgb25SZWNlaXZlKENvbnRleHQgY29udGV4dCwgSW50ZW50IGludGVudCkgewotICAgICAgICAgICAgU3RyaW5nIGFjdGlvbiA9IGludGVudC5nZXRBY3Rpb24oKTsKLSAgICAgICAgICAgIGlmIChJbnRlbnQuQUNUSU9OX0NMT1NFX1NZU1RFTV9ESUFMT0dTLmVxdWFscyhhY3Rpb24pCi0gICAgICAgICAgICAgICAgICAgIHx8IEludGVudC5BQ1RJT05fU0NSRUVOX09GRi5lcXVhbHMoYWN0aW9uKSkgewotICAgICAgICAgICAgICAgIGRlYWN0aXZhdGUoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKFRlbGVwaG9ueS5JbnRlbnRzLlNQTl9TVFJJTkdTX1VQREFURURfQUNUSU9OLmVxdWFscyhhY3Rpb24pKSB7Ci0gICAgICAgICAgICAgICAgdXBkYXRlTmV0d29ya05hbWUoaW50ZW50LmdldEJvb2xlYW5FeHRyYShUZWxlcGhvbnkuSW50ZW50cy5FWFRSQV9TSE9XX1NQTiwgZmFsc2UpLAotICAgICAgICAgICAgICAgICAgICAgICAgaW50ZW50LmdldFN0cmluZ0V4dHJhKFRlbGVwaG9ueS5JbnRlbnRzLkVYVFJBX1NQTiksCi0gICAgICAgICAgICAgICAgICAgICAgICBpbnRlbnQuZ2V0Qm9vbGVhbkV4dHJhKFRlbGVwaG9ueS5JbnRlbnRzLkVYVFJBX1NIT1dfUExNTiwgZmFsc2UpLAotICAgICAgICAgICAgICAgICAgICAgICAgaW50ZW50LmdldFN0cmluZ0V4dHJhKFRlbGVwaG9ueS5JbnRlbnRzLkVYVFJBX1BMTU4pKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKEludGVudC5BQ1RJT05fQ09ORklHVVJBVElPTl9DSEFOR0VELmVxdWFscyhhY3Rpb24pKSB7Ci0gICAgICAgICAgICAgICAgdXBkYXRlUmVzb3VyY2VzKCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgdm9pZCB1cGRhdGVOZXR3b3JrTmFtZShib29sZWFuIHNob3dTcG4sIFN0cmluZyBzcG4sIGJvb2xlYW4gc2hvd1BsbW4sIFN0cmluZyBwbG1uKSB7Ci0gICAgICAgIGlmIChmYWxzZSkgewotICAgICAgICAgICAgU2xvZy5kKFRBRywgInVwZGF0ZU5ldHdvcmtOYW1lIHNob3dTcG49IiArIHNob3dTcG4gKyAiIHNwbj0iICsgc3BuCi0gICAgICAgICAgICAgICAgICAgICsgIiBzaG93UGxtbj0iICsgc2hvd1BsbW4gKyAiIHBsbW49IiArIHBsbW4pOwotICAgICAgICB9Ci0gICAgICAgIGJvb2xlYW4gc29tZXRoaW5nID0gZmFsc2U7Ci0gICAgICAgIGlmIChzaG93UGxtbikgewotICAgICAgICAgICAgbVBsbW5MYWJlbC5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7Ci0gICAgICAgICAgICBpZiAocGxtbiAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgbVBsbW5MYWJlbC5zZXRUZXh0KHBsbW4pOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBtUGxtbkxhYmVsLnNldFRleHQoUi5zdHJpbmcubG9ja3NjcmVlbl9jYXJyaWVyX2RlZmF1bHQpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbVBsbW5MYWJlbC5zZXRUZXh0KCIiKTsKLSAgICAgICAgICAgIG1QbG1uTGFiZWwuc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChzaG93U3BuICYmIHNwbiAhPSBudWxsKSB7Ci0gICAgICAgICAgICBtU3BuTGFiZWwuc2V0VGV4dChzcG4pOwotICAgICAgICAgICAgbVNwbkxhYmVsLnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKLSAgICAgICAgICAgIHNvbWV0aGluZyA9IHRydWU7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBtU3BuTGFiZWwuc2V0VGV4dCgiIik7Ci0gICAgICAgICAgICBtU3BuTGFiZWwuc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogUmVsb2FkIHNvbWUgb2Ygb3VyIHJlc291cmNlcyB3aGVuIHRoZSBjb25maWd1cmF0aW9uIGNoYW5nZXMuCi0gICAgICogCi0gICAgICogV2UgZG9uJ3QgcmVsb2FkIGV2ZXJ5dGhpbmcgd2hlbiB0aGUgY29uZmlndXJhdGlvbiBjaGFuZ2VzIC0tIHdlIHByb2JhYmx5Ci0gICAgICogc2hvdWxkLCBidXQgZ2V0dGluZyB0aGF0IHNtb290aCBpcyB0b3VnaC4gIFNvbWVkYXkgd2UnbGwgZml4IHRoYXQuICBJbiB0aGUKLSAgICAgKiBtZWFudGltZSwganVzdCB1cGRhdGUgdGhlIHRoaW5ncyB0aGF0IHdlIGtub3cgY2hhbmdlLgotICAgICAqLwotICAgIHZvaWQgdXBkYXRlUmVzb3VyY2VzKCkgewotICAgICAgICBSZXNvdXJjZXMgcmVzID0gbUNvbnRleHQuZ2V0UmVzb3VyY2VzKCk7Ci0KLSAgICAgICAgbUNsZWFyQnV0dG9uLnNldFRleHQobUNvbnRleHQuZ2V0VGV4dChSLnN0cmluZy5zdGF0dXNfYmFyX2NsZWFyX2FsbF9idXR0b24pKTsKLSAgICAgICAgbU9uZ29pbmdUaXRsZS5zZXRUZXh0KG1Db250ZXh0LmdldFRleHQoUi5zdHJpbmcuc3RhdHVzX2Jhcl9vbmdvaW5nX2V2ZW50c190aXRsZSkpOwotICAgICAgICBtTGF0ZXN0VGl0bGUuc2V0VGV4dChtQ29udGV4dC5nZXRUZXh0KFIuc3RyaW5nLnN0YXR1c19iYXJfbGF0ZXN0X2V2ZW50c190aXRsZSkpOwotICAgICAgICBtTm9Ob3RpZmljYXRpb25zVGl0bGUuc2V0VGV4dChtQ29udGV4dC5nZXRUZXh0KFIuc3RyaW5nLnN0YXR1c19iYXJfbm9fbm90aWZpY2F0aW9uc190aXRsZSkpOwotCi0gICAgICAgIG1FZGdlQm9yZGVyID0gcmVzLmdldERpbWVuc2lvblBpeGVsU2l6ZShSLmRpbWVuLnN0YXR1c19iYXJfZWRnZV9pZ25vcmUpOwotCi0gICAgICAgIGlmIChmYWxzZSkgU2xvZy52KFRBRywgInVwZGF0ZVJlc291cmNlcyIpOwotICAgIH0KLQotICAgIC8vCi0gICAgLy8gdHJhY2luZwotICAgIC8vCi0KLSAgICB2b2lkIHBvc3RTdGFydFRyYWNpbmcoKSB7Ci0gICAgICAgIG1IYW5kbGVyLnBvc3REZWxheWVkKG1TdGFydFRyYWNpbmcsIDMwMDApOwotICAgIH0KLQotICAgIHZvaWQgdmlicmF0ZSgpIHsKLSAgICAgICAgYW5kcm9pZC5vcy5WaWJyYXRvciB2aWIgPSAoYW5kcm9pZC5vcy5WaWJyYXRvciltQ29udGV4dC5nZXRTeXN0ZW1TZXJ2aWNlKAotICAgICAgICAgICAgICAgIENvbnRleHQuVklCUkFUT1JfU0VSVklDRSk7Ci0gICAgICAgIHZpYi52aWJyYXRlKDI1MCk7Ci0gICAgfQotCi0gICAgUnVubmFibGUgbVN0YXJ0VHJhY2luZyA9IG5ldyBSdW5uYWJsZSgpIHsKLSAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgewotICAgICAgICAgICAgdmlicmF0ZSgpOwotICAgICAgICAgICAgU3lzdGVtQ2xvY2suc2xlZXAoMjUwKTsKLSAgICAgICAgICAgIFNsb2cuZChUQUcsICJzdGFydFRyYWNpbmciKTsKLSAgICAgICAgICAgIGFuZHJvaWQub3MuRGVidWcuc3RhcnRNZXRob2RUcmFjaW5nKCIvZGF0YS9zdGF0dXNiYXItdHJhY2VzL3RyYWNlIik7Ci0gICAgICAgICAgICBtSGFuZGxlci5wb3N0RGVsYXllZChtU3RvcFRyYWNpbmcsIDEwMDAwKTsKLSAgICAgICAgfQotICAgIH07Ci0KLSAgICBSdW5uYWJsZSBtU3RvcFRyYWNpbmcgPSBuZXcgUnVubmFibGUoKSB7Ci0gICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKLSAgICAgICAgICAgIGFuZHJvaWQub3MuRGVidWcuc3RvcE1ldGhvZFRyYWNpbmcoKTsKLSAgICAgICAgICAgIFNsb2cuZChUQUcsICJzdG9wVHJhY2luZyIpOwotICAgICAgICAgICAgdmlicmF0ZSgpOwotICAgICAgICB9Ci0gICAgfTsKLSAgICAKLSAgICBjbGFzcyBVbmluc3RhbGxSZWNlaXZlciBleHRlbmRzIEJyb2FkY2FzdFJlY2VpdmVyIHsKLSAgICAgICAgcHVibGljIFVuaW5zdGFsbFJlY2VpdmVyKCkgewotICAgICAgICAgICAgSW50ZW50RmlsdGVyIGZpbHRlciA9IG5ldyBJbnRlbnRGaWx0ZXIoKTsKLSAgICAgICAgICAgIGZpbHRlci5hZGRBY3Rpb24oSW50ZW50LkFDVElPTl9QQUNLQUdFX1JFTU9WRUQpOwotICAgICAgICAgICAgZmlsdGVyLmFkZEFjdGlvbihJbnRlbnQuQUNUSU9OX1BBQ0tBR0VfUkVTVEFSVEVEKTsKLSAgICAgICAgICAgIGZpbHRlci5hZGREYXRhU2NoZW1lKCJwYWNrYWdlIik7Ci0gICAgICAgICAgICBtQ29udGV4dC5yZWdpc3RlclJlY2VpdmVyKHRoaXMsIGZpbHRlcik7Ci0gICAgICAgICAgICBJbnRlbnRGaWx0ZXIgc2RGaWx0ZXIgPSBuZXcgSW50ZW50RmlsdGVyKEludGVudC5BQ1RJT05fRVhURVJOQUxfQVBQTElDQVRJT05TX1VOQVZBSUxBQkxFKTsKLSAgICAgICAgICAgIG1Db250ZXh0LnJlZ2lzdGVyUmVjZWl2ZXIodGhpcywgc2RGaWx0ZXIpOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIHZvaWQgb25SZWNlaXZlKENvbnRleHQgY29udGV4dCwgSW50ZW50IGludGVudCkgewotICAgICAgICAgICAgU3RyaW5nIHBrZ0xpc3RbXSA9IG51bGw7Ci0gICAgICAgICAgICBpZiAoSW50ZW50LkFDVElPTl9FWFRFUk5BTF9BUFBMSUNBVElPTlNfVU5BVkFJTEFCTEUuZXF1YWxzKGludGVudC5nZXRBY3Rpb24oKSkpIHsKLSAgICAgICAgICAgICAgICBwa2dMaXN0ID0gaW50ZW50LmdldFN0cmluZ0FycmF5RXh0cmEoSW50ZW50LkVYVFJBX0NIQU5HRURfUEFDS0FHRV9MSVNUKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgVXJpIGRhdGEgPSBpbnRlbnQuZ2V0RGF0YSgpOwotICAgICAgICAgICAgICAgIGlmIChkYXRhICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICAgICAgU3RyaW5nIHBrZyA9IGRhdGEuZ2V0U2NoZW1lU3BlY2lmaWNQYXJ0KCk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChwa2cgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgcGtnTGlzdCA9IG5ldyBTdHJpbmdbXXtwa2d9OwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgQXJyYXlMaXN0PFN0YXR1c0Jhck5vdGlmaWNhdGlvbj4gbGlzdCA9IG51bGw7Ci0gICAgICAgICAgICBpZiAocGtnTGlzdCAhPSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgc3luY2hyb25pemVkIChTdGF0dXNCYXJTZXJ2aWNlLnRoaXMpIHsKLSAgICAgICAgICAgICAgICAgICAgZm9yIChTdHJpbmcgcGtnIDogcGtnTGlzdCkgewotICAgICAgICAgICAgICAgICAgICAgICAgbGlzdCA9IG1Ob3RpZmljYXRpb25EYXRhLm5vdGlmaWNhdGlvbnNGb3JQYWNrYWdlKHBrZyk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIGlmIChsaXN0ICE9IG51bGwpIHsKLSAgICAgICAgICAgICAgICBmaW5hbCBpbnQgTiA9IGxpc3Quc2l6ZSgpOwotICAgICAgICAgICAgICAgIGZvciAoaW50IGk9MDsgaTxOOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgcmVtb3ZlSWNvbihsaXN0LmdldChpKS5rZXkpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH0KLX0KZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3N0YXR1cy9TdGF0dXNCYXJWaWV3LmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvU3RhdHVzQmFyVmlldy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZTFmNTcyLi4wMDAwMDAwCi0tLSBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3N0YXR1cy9TdGF0dXNCYXJWaWV3LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxOTIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLXBhY2thZ2UgY29tLmFuZHJvaWQuc2VydmVyLnN0YXR1czsKLQotaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OwotaW1wb3J0IGFuZHJvaWQuY29udGVudC5yZXMuQ29uZmlndXJhdGlvbjsKLWltcG9ydCBhbmRyb2lkLmdyYXBoaWNzLkNhbnZhczsKLWltcG9ydCBhbmRyb2lkLm9zLlN5c3RlbUNsb2NrOwotaW1wb3J0IGFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQ7Ci1pbXBvcnQgYW5kcm9pZC52aWV3Lk1vdGlvbkV2ZW50OwotaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OwotaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3R3JvdXA7Ci1pbXBvcnQgYW5kcm9pZC52aWV3LlZpZXdQYXJlbnQ7Ci1pbXBvcnQgYW5kcm9pZC53aWRnZXQuRnJhbWVMYXlvdXQ7Ci0KLWltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SOwotCi1wdWJsaWMgY2xhc3MgU3RhdHVzQmFyVmlldyBleHRlbmRzIEZyYW1lTGF5b3V0IHsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gIlN0YXR1c0JhclZpZXciOwotCi0gICAgc3RhdGljIGZpbmFsIGludCBESU1fQU5JTV9USU1FID0gNDAwOwotICAgIAotICAgIFN0YXR1c0JhclNlcnZpY2UgbVNlcnZpY2U7Ci0gICAgYm9vbGVhbiBtVHJhY2tpbmc7Ci0gICAgaW50IG1TdGFydFgsIG1TdGFydFk7Ci0gICAgVmlld0dyb3VwIG1Ob3RpZmljYXRpb25JY29uczsKLSAgICBWaWV3R3JvdXAgbVN0YXR1c0ljb25zOwotICAgIFZpZXcgbURhdGU7Ci0gICAgRml4ZWRTaXplRHJhd2FibGUgbUJhY2tncm91bmQ7Ci0gICAgCi0gICAgYm9vbGVhbiBtTmlnaHRNb2RlID0gZmFsc2U7Ci0gICAgaW50IG1TdGFydEFscGhhID0gMCwgbUVuZEFscGhhID0gMDsKLSAgICBsb25nIG1FbmRUaW1lID0gMDsKLQotICAgIHB1YmxpYyBTdGF0dXNCYXJWaWV3KENvbnRleHQgY29udGV4dCwgQXR0cmlidXRlU2V0IGF0dHJzKSB7Ci0gICAgICAgIHN1cGVyKGNvbnRleHQsIGF0dHJzKTsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwcm90ZWN0ZWQgdm9pZCBvbkZpbmlzaEluZmxhdGUoKSB7Ci0gICAgICAgIHN1cGVyLm9uRmluaXNoSW5mbGF0ZSgpOwotICAgICAgICBtTm90aWZpY2F0aW9uSWNvbnMgPSAoVmlld0dyb3VwKWZpbmRWaWV3QnlJZChSLmlkLm5vdGlmaWNhdGlvbkljb25zKTsKLSAgICAgICAgbVN0YXR1c0ljb25zID0gKFZpZXdHcm91cClmaW5kVmlld0J5SWQoUi5pZC5zdGF0dXNJY29ucyk7Ci0gICAgICAgIG1EYXRlID0gZmluZFZpZXdCeUlkKFIuaWQuZGF0ZSk7Ci0KLSAgICAgICAgbUJhY2tncm91bmQgPSBuZXcgRml4ZWRTaXplRHJhd2FibGUobURhdGUuZ2V0QmFja2dyb3VuZCgpKTsKLSAgICAgICAgbUJhY2tncm91bmQuc2V0Rml4ZWRCb3VuZHMoMCwgMCwgMCwgMCk7Ci0gICAgICAgIG1EYXRlLnNldEJhY2tncm91bmREcmF3YWJsZShtQmFja2dyb3VuZCk7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHJvdGVjdGVkIHZvaWQgb25BdHRhY2hlZFRvV2luZG93KCkgewotICAgICAgICBzdXBlci5vbkF0dGFjaGVkVG9XaW5kb3coKTsKLSAgICAgICAgbVNlcnZpY2Uub25CYXJWaWV3QXR0YWNoZWQoKTsKLSAgICB9Ci0gICAgCi0gICAgQE92ZXJyaWRlCi0gICAgcHJvdGVjdGVkIHZvaWQgb25Db25maWd1cmF0aW9uQ2hhbmdlZChDb25maWd1cmF0aW9uIG5ld0NvbmZpZykgewotICAgICAgICBzdXBlci5vbkNvbmZpZ3VyYXRpb25DaGFuZ2VkKG5ld0NvbmZpZyk7Ci0gICAgICAgIGJvb2xlYW4gbmlnaHRNb2RlID0gKG5ld0NvbmZpZy51aU1vZGUgJiBDb25maWd1cmF0aW9uLlVJX01PREVfTklHSFRfTUFTSykKLSAgICAgICAgICAgICAgICA9PSBDb25maWd1cmF0aW9uLlVJX01PREVfTklHSFRfWUVTOwotICAgICAgICBpZiAobU5pZ2h0TW9kZSAhPSBuaWdodE1vZGUpIHsKLSAgICAgICAgICAgIG1OaWdodE1vZGUgPSBuaWdodE1vZGU7Ci0gICAgICAgICAgICBtU3RhcnRBbHBoYSA9IGdldEN1ckFscGhhKCk7Ci0gICAgICAgICAgICBtRW5kQWxwaGEgPSBtTmlnaHRNb2RlID8gMHg4MCA6IDB4MDA7Ci0gICAgICAgICAgICBtRW5kVGltZSA9IFN5c3RlbUNsb2NrLnVwdGltZU1pbGxpcygpICsgRElNX0FOSU1fVElNRTsKLSAgICAgICAgICAgIGludmFsaWRhdGUoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGludCBnZXRDdXJBbHBoYSgpIHsKLSAgICAgICAgbG9uZyB0aW1lID0gU3lzdGVtQ2xvY2sudXB0aW1lTWlsbGlzKCk7Ci0gICAgICAgIGlmICh0aW1lID4gbUVuZFRpbWUpIHsKLSAgICAgICAgICAgIHJldHVybiBtRW5kQWxwaGE7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG1FbmRBbHBoYQotICAgICAgICAgICAgICAgIC0gKGludCkoKChtRW5kQWxwaGEtbVN0YXJ0QWxwaGEpICogKG1FbmRUaW1lLXRpbWUpIC8gRElNX0FOSU1fVElNRSkpOwotICAgIH0KLSAgICAKLSAgICBAT3ZlcnJpZGUKLSAgICBwcm90ZWN0ZWQgdm9pZCBvblNpemVDaGFuZ2VkKGludCB3LCBpbnQgaCwgaW50IG9sZHcsIGludCBvbGRoKSB7Ci0gICAgICAgIHN1cGVyLm9uU2l6ZUNoYW5nZWQodywgaCwgb2xkdywgb2xkaCk7Ci0gICAgICAgIG1TZXJ2aWNlLnVwZGF0ZUV4cGFuZGVkVmlld1BvcyhTdGF0dXNCYXJTZXJ2aWNlLkVYUEFOREVEX0xFQVZFX0FMT05FKTsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwcm90ZWN0ZWQgdm9pZCBvbkxheW91dChib29sZWFuIGNoYW5nZWQsIGludCBsLCBpbnQgdCwgaW50IHIsIGludCBiKSB7Ci0gICAgICAgIHN1cGVyLm9uTGF5b3V0KGNoYW5nZWQsIGwsIHQsIHIsIGIpOwotCi0gICAgICAgIC8vIHB1dCB0aGUgZGF0ZSBkYXRlIHZpZXcgcXVhbnRpemVkIHRvIHRoZSBpY29ucwotICAgICAgICBpbnQgb2xkRGF0ZVJpZ2h0ID0gbURhdGUuZ2V0UmlnaHQoKTsKLSAgICAgICAgaW50IG5ld0RhdGVSaWdodDsKLQotICAgICAgICBuZXdEYXRlUmlnaHQgPSBnZXREYXRlU2l6ZShtTm90aWZpY2F0aW9uSWNvbnMsIG9sZERhdGVSaWdodCwKLSAgICAgICAgICAgICAgICBnZXRWaWV3T2Zmc2V0KG1Ob3RpZmljYXRpb25JY29ucykpOwotICAgICAgICBpZiAobmV3RGF0ZVJpZ2h0IDwgMCkgewotICAgICAgICAgICAgaW50IG9mZnNldCA9IGdldFZpZXdPZmZzZXQobVN0YXR1c0ljb25zKTsKLSAgICAgICAgICAgIGlmIChvbGREYXRlUmlnaHQgPCBvZmZzZXQpIHsKLSAgICAgICAgICAgICAgICBuZXdEYXRlUmlnaHQgPSBvbGREYXRlUmlnaHQ7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG5ld0RhdGVSaWdodCA9IGdldERhdGVTaXplKG1TdGF0dXNJY29ucywgb2xkRGF0ZVJpZ2h0LCBvZmZzZXQpOwotICAgICAgICAgICAgICAgIGlmIChuZXdEYXRlUmlnaHQgPCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIG5ld0RhdGVSaWdodCA9IHI7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGludCBtYXggPSByIC0gZ2V0UGFkZGluZ1JpZ2h0KCk7Ci0gICAgICAgIGlmIChuZXdEYXRlUmlnaHQgPiBtYXgpIHsKLSAgICAgICAgICAgIG5ld0RhdGVSaWdodCA9IG1heDsKLSAgICAgICAgfQotCi0gICAgICAgIG1EYXRlLmxheW91dChtRGF0ZS5nZXRMZWZ0KCksIG1EYXRlLmdldFRvcCgpLCBuZXdEYXRlUmlnaHQsIG1EYXRlLmdldEJvdHRvbSgpKTsKLSAgICAgICAgbUJhY2tncm91bmQuc2V0Rml4ZWRCb3VuZHMoLW1EYXRlLmdldExlZnQoKSwgLW1EYXRlLmdldFRvcCgpLCAoci1sKSwgKGItdCkpOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHByb3RlY3RlZCB2b2lkIGRpc3BhdGNoRHJhdyhDYW52YXMgY2FudmFzKSB7Ci0gICAgICAgIHN1cGVyLmRpc3BhdGNoRHJhdyhjYW52YXMpOwotICAgICAgICBpbnQgYWxwaGEgPSBnZXRDdXJBbHBoYSgpOwotICAgICAgICBpZiAoYWxwaGEgIT0gMCkgewotICAgICAgICAgICAgY2FudmFzLmRyYXdBUkdCKGFscGhhLCAwLCAwLCAwKTsKLSAgICAgICAgfQotICAgICAgICBpZiAoYWxwaGEgIT0gbUVuZEFscGhhKSB7Ci0gICAgICAgICAgICBpbnZhbGlkYXRlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBHZXRzIHRoZSBsZWZ0IHBvc2l0aW9uIG9mIHYgaW4gdGhpcyB2aWV3LiAgVGhyb3dzIGlmIHYgaXMgbm90Ci0gICAgICogYSBjaGlsZCBvZiB0aGlzLgotICAgICAqLwotICAgIHByaXZhdGUgaW50IGdldFZpZXdPZmZzZXQoVmlldyB2KSB7Ci0gICAgICAgIGludCBvZmZzZXQgPSAwOwotICAgICAgICB3aGlsZSAodiAhPSB0aGlzKSB7Ci0gICAgICAgICAgICBvZmZzZXQgKz0gdi5nZXRMZWZ0KCk7Ci0gICAgICAgICAgICBWaWV3UGFyZW50IHAgPSB2LmdldFBhcmVudCgpOwotICAgICAgICAgICAgaWYgKHYgaW5zdGFuY2VvZiBWaWV3KSB7Ci0gICAgICAgICAgICAgICAgdiA9IChWaWV3KXA7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKHYgKyAiIGlzIG5vdCBhIGNoaWxkIG9mICIgKyB0aGlzKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICByZXR1cm4gb2Zmc2V0OwotICAgIH0KLQotICAgIHByaXZhdGUgaW50IGdldERhdGVTaXplKFZpZXdHcm91cCBnLCBpbnQgdywgaW50IG9mZnNldCkgewotICAgICAgICBmaW5hbCBpbnQgTiA9IGcuZ2V0Q2hpbGRDb3VudCgpOwotICAgICAgICBmb3IgKGludCBpPTA7IGk8TjsgaSsrKSB7Ci0gICAgICAgICAgICBWaWV3IHYgPSBnLmdldENoaWxkQXQoaSk7Ci0gICAgICAgICAgICBpbnQgbCA9IHYuZ2V0TGVmdCgpICsgb2Zmc2V0OwotICAgICAgICAgICAgaW50IHIgPSB2LmdldFJpZ2h0KCkgKyBvZmZzZXQ7Ci0gICAgICAgICAgICBpZiAodyA+PSBsICYmIHcgPD0gcikgewotICAgICAgICAgICAgICAgIHJldHVybiByOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBFbnN1cmUgdGhhdCwgaWYgdGhlcmUgaXMgbm8gdGFyZ2V0IHVuZGVyIHVzIHRvIHJlY2VpdmUgdGhlIHRvdWNoLAotICAgICAqIHRoYXQgd2UgcHJvY2VzcyBpdCBvdXJzZWxmLiAgVGhpcyBtYWtlcyBzdXJlIHRoYXQgb25JbnRlcmNlcHRUb3VjaEV2ZW50KCkKLSAgICAgKiBpcyBhbHdheXMgY2FsbGVkIGZvciB0aGUgZW50aXJlIGdlc3R1cmUuCi0gICAgICovCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIGJvb2xlYW4gb25Ub3VjaEV2ZW50KE1vdGlvbkV2ZW50IGV2ZW50KSB7Ci0gICAgICAgIGlmIChldmVudC5nZXRBY3Rpb24oKSAhPSBNb3Rpb25FdmVudC5BQ1RJT05fRE9XTikgewotICAgICAgICAgICAgbVNlcnZpY2UuaW50ZXJjZXB0VG91Y2hFdmVudChldmVudCk7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIGJvb2xlYW4gb25JbnRlcmNlcHRUb3VjaEV2ZW50KE1vdGlvbkV2ZW50IGV2ZW50KSB7Ci0gICAgICAgIHJldHVybiBtU2VydmljZS5pbnRlcmNlcHRUb3VjaEV2ZW50KGV2ZW50KQotICAgICAgICAgICAgICAgID8gdHJ1ZSA6IHN1cGVyLm9uSW50ZXJjZXB0VG91Y2hFdmVudChldmVudCk7Ci0gICAgfQotfQotCmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvU3RvcmFnZU5vdGlmaWNhdGlvbi5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL1N0b3JhZ2VOb3RpZmljYXRpb24uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGRhOGNkMy4uMDAwMDAwMAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvU3RvcmFnZU5vdGlmaWNhdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzk1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4KLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotcGFja2FnZSBjb20uYW5kcm9pZC5zZXJ2ZXIuc3RhdHVzOwotCi1pbXBvcnQgYW5kcm9pZC5hcHAuQWN0aXZpdHk7Ci1pbXBvcnQgYW5kcm9pZC5hcHAuTm90aWZpY2F0aW9uOwotaW1wb3J0IGFuZHJvaWQuYXBwLk5vdGlmaWNhdGlvbk1hbmFnZXI7Ci1pbXBvcnQgYW5kcm9pZC5hcHAuUGVuZGluZ0ludGVudDsKLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQnJvYWRjYXN0UmVjZWl2ZXI7Ci1pbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7Ci1pbXBvcnQgYW5kcm9pZC5jb250ZW50LkRpYWxvZ0ludGVyZmFjZTsKLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50OwotaW1wb3J0IGFuZHJvaWQuY29udGVudC5JbnRlbnRGaWx0ZXI7Ci1pbXBvcnQgYW5kcm9pZC5jb250ZW50LnBtLlBhY2thZ2VNYW5hZ2VyOwotaW1wb3J0IGFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzOwotaW1wb3J0IGFuZHJvaWQub3MuQnVuZGxlOwotaW1wb3J0IGFuZHJvaWQub3MuRW52aXJvbm1lbnQ7Ci1pbXBvcnQgYW5kcm9pZC5vcy5IYW5kbGVyOwotaW1wb3J0IGFuZHJvaWQub3Muc3RvcmFnZS5JTW91bnRTZXJ2aWNlOwotaW1wb3J0IGFuZHJvaWQub3MuTWVzc2FnZTsKLWltcG9ydCBhbmRyb2lkLm9zLlNlcnZpY2VNYW5hZ2VyOwotaW1wb3J0IGFuZHJvaWQub3Muc3RvcmFnZS5TdG9yYWdlRXZlbnRMaXN0ZW5lcjsKLWltcG9ydCBhbmRyb2lkLm9zLnN0b3JhZ2UuU3RvcmFnZU1hbmFnZXI7Ci1pbXBvcnQgYW5kcm9pZC5vcy5zdG9yYWdlLlN0b3JhZ2VSZXN1bHRDb2RlOwotaW1wb3J0IGFuZHJvaWQucHJvdmlkZXIuU2V0dGluZ3M7Ci1pbXBvcnQgYW5kcm9pZC51dGlsLlNsb2c7Ci1pbXBvcnQgYW5kcm9pZC52aWV3LlZpZXc7Ci1pbXBvcnQgYW5kcm9pZC53aWRnZXQuQnV0dG9uOwotaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkltYWdlVmlldzsKLWltcG9ydCBhbmRyb2lkLndpZGdldC5UZXh0VmlldzsKLWltcG9ydCBhbmRyb2lkLndpZGdldC5Ub2FzdDsKLQotcHVibGljIGNsYXNzIFN0b3JhZ2VOb3RpZmljYXRpb24gZXh0ZW5kcyBTdG9yYWdlRXZlbnRMaXN0ZW5lciB7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9ICJTdG9yYWdlTm90aWZpY2F0aW9uIjsKLQotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGJvb2xlYW4gUE9QX1VNU19BQ1RJVklUWV9PTl9DT05ORUNUID0gdHJ1ZTsKLQotICAgIC8qKgotICAgICAqIEJpbmRlciBjb250ZXh0IGZvciB0aGlzIHNlcnZpY2UKLSAgICAgKi8KLSAgICBwcml2YXRlIENvbnRleHQgbUNvbnRleHQ7Ci0gICAgCi0gICAgLyoqCi0gICAgICogVGhlIG5vdGlmaWNhdGlvbiB0aGF0IGlzIHNob3duIHdoZW4gYSBVU0IgbWFzcyBzdG9yYWdlIGhvc3QKLSAgICAgKiBpcyBjb25uZWN0ZWQuIAotICAgICAqIDxwPgotICAgICAqIFRoaXMgaXMgbGF6aWx5IGNyZWF0ZWQsIHNvIHVzZSB7QGxpbmsgI3NldFVzYlN0b3JhZ2VOb3RpZmljYXRpb24oKX0uCi0gICAgICovCi0gICAgcHJpdmF0ZSBOb3RpZmljYXRpb24gbVVzYlN0b3JhZ2VOb3RpZmljYXRpb247Ci0KLSAgICAvKioKLSAgICAgKiBUaGUgbm90aWZpY2F0aW9uIHRoYXQgaXMgc2hvd24gd2hlbiB0aGUgZm9sbG93aW5nIG1lZGlhIGV2ZW50cyBvY2N1cjoKLSAgICAgKiAgICAgLSBNZWRpYSBpcyBiZWluZyBjaGVja2VkCi0gICAgICogICAgIC0gTWVkaWEgaXMgYmxhbmsgKG9yIHVua25vd24gZmlsZXN5c3RlbSkKLSAgICAgKiAgICAgLSBNZWRpYSBpcyBjb3JydXB0Ci0gICAgICogICAgIC0gTWVkaWEgaXMgc2FmZSB0byB1bm1vdW50Ci0gICAgICogICAgIC0gTWVkaWEgaXMgbWlzc2luZwotICAgICAqIDxwPgotICAgICAqIFRoaXMgaXMgbGF6aWx5IGNyZWF0ZWQsIHNvIHVzZSB7QGxpbmsgI3NldE1lZGlhU3RvcmFnZU5vdGlmaWNhdGlvbigpfS4KLSAgICAgKi8KLSAgICBwcml2YXRlIE5vdGlmaWNhdGlvbiAgIG1NZWRpYVN0b3JhZ2VOb3RpZmljYXRpb247Ci0gICAgcHJpdmF0ZSBib29sZWFuICAgICAgICBtVW1zQXZhaWxhYmxlOwotICAgIHByaXZhdGUgU3RvcmFnZU1hbmFnZXIgbVN0b3JhZ2VNYW5hZ2VyOwotCi0gICAgcHVibGljIFN0b3JhZ2VOb3RpZmljYXRpb24oQ29udGV4dCBjb250ZXh0KSB7Ci0gICAgICAgIG1Db250ZXh0ID0gY29udGV4dDsKLQotICAgICAgICBtU3RvcmFnZU1hbmFnZXIgPSAoU3RvcmFnZU1hbmFnZXIpIGNvbnRleHQuZ2V0U3lzdGVtU2VydmljZShDb250ZXh0LlNUT1JBR0VfU0VSVklDRSk7Ci0gICAgICAgIG1VbXNBdmFpbGFibGUgPSBtU3RvcmFnZU1hbmFnZXIuaXNVc2JNYXNzU3RvcmFnZUNvbm5lY3RlZCgpOwotICAgICAgICBTbG9nLmQoVEFHLCBTdHJpbmcuZm9ybWF0KCAiU3RhcnR1cCB3aXRoIFVNUyBjb25uZWN0aW9uICVzIChtZWRpYSBzdGF0ZSAlcykiLCBtVW1zQXZhaWxhYmxlLAotICAgICAgICAgICAgICAgIEVudmlyb25tZW50LmdldEV4dGVybmFsU3RvcmFnZVN0YXRlKCkpKTsKLSAgICB9Ci0KLSAgICAvKgotICAgICAqIEBvdmVycmlkZSBjb20uYW5kcm9pZC5vcy5zdG9yYWdlLlN0b3JhZ2VFdmVudExpc3RlbmVyCi0gICAgICovCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIHZvaWQgb25Vc2JNYXNzU3RvcmFnZUNvbm5lY3Rpb25DaGFuZ2VkKGJvb2xlYW4gY29ubmVjdGVkKSB7Ci0gICAgICAgIG1VbXNBdmFpbGFibGUgPSBjb25uZWN0ZWQ7Ci0gICAgICAgIC8qCi0gICAgICAgICAqIEV2ZW4gdGhvdWdoIHdlIG1heSBoYXZlIGEgVU1TIGhvc3QgY29ubmVjdGVkLCB3ZSB0aGUgU0QgY2FyZAotICAgICAgICAgKiBtYXkgbm90IGJlIGluIGEgc3RhdGUgZm9yIGV4cG9ydC4KLSAgICAgICAgICovCi0gICAgICAgIFN0cmluZyBzdCA9IEVudmlyb25tZW50LmdldEV4dGVybmFsU3RvcmFnZVN0YXRlKCk7Ci0KLSAgICAgICAgU2xvZy5pKFRBRywgU3RyaW5nLmZvcm1hdCgiVU1TIGNvbm5lY3Rpb24gY2hhbmdlZCB0byAlcyAobWVkaWEgc3RhdGUgJXMpIiwgY29ubmVjdGVkLCBzdCkpOwotCi0gICAgICAgIGlmIChjb25uZWN0ZWQgJiYgKHN0LmVxdWFscygKLSAgICAgICAgICAgICAgICBFbnZpcm9ubWVudC5NRURJQV9SRU1PVkVEKSB8fCBzdC5lcXVhbHMoRW52aXJvbm1lbnQuTUVESUFfQ0hFQ0tJTkcpKSkgewotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqIE5vIGNhcmQgb3IgY2FyZCBiZWluZyBjaGVja2VkID0gZG9uJ3QgZGlzcGxheQotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBjb25uZWN0ZWQgPSBmYWxzZTsKLSAgICAgICAgfQotICAgICAgICB1cGRhdGVVc2JNYXNzU3RvcmFnZU5vdGlmaWNhdGlvbihjb25uZWN0ZWQpOwotICAgIH0KLQotICAgIC8qCi0gICAgICogQG92ZXJyaWRlIGNvbS5hbmRyb2lkLm9zLnN0b3JhZ2UuU3RvcmFnZUV2ZW50TGlzdGVuZXIKLSAgICAgKi8KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgdm9pZCBvblN0b3JhZ2VTdGF0ZUNoYW5nZWQoU3RyaW5nIHBhdGgsIFN0cmluZyBvbGRTdGF0ZSwgU3RyaW5nIG5ld1N0YXRlKSB7Ci0gICAgICAgIFNsb2cuaShUQUcsIFN0cmluZy5mb3JtYXQoCi0gICAgICAgICAgICAgICAgIk1lZGlhIHslc30gc3RhdGUgY2hhbmdlZCBmcm9tIHslc30gLT4geyVzfSIsIHBhdGgsIG9sZFN0YXRlLCBuZXdTdGF0ZSkpOwotICAgICAgICBpZiAobmV3U3RhdGUuZXF1YWxzKEVudmlyb25tZW50Lk1FRElBX1NIQVJFRCkpIHsKLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgKiBTdG9yYWdlIGlzIG5vdyBzaGFyZWQuIE1vZGlmeSB0aGUgVU1TIG5vdGlmaWNhdGlvbgotICAgICAgICAgICAgICogZm9yIHN0b3BwaW5nIFVNUy4KLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgSW50ZW50IGludGVudCA9IG5ldyBJbnRlbnQoKTsKLSAgICAgICAgICAgIGludGVudC5zZXRDbGFzcyhtQ29udGV4dCwgY29tLmFuZHJvaWQuc2VydmVyLnN0YXR1cy5Vc2JTdG9yYWdlQWN0aXZpdHkuY2xhc3MpOwotICAgICAgICAgICAgUGVuZGluZ0ludGVudCBwaSA9IFBlbmRpbmdJbnRlbnQuZ2V0QWN0aXZpdHkobUNvbnRleHQsIDAsIGludGVudCwgMCk7Ci0gICAgICAgICAgICBzZXRVc2JTdG9yYWdlTm90aWZpY2F0aW9uKAotICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy51c2Jfc3RvcmFnZV9zdG9wX25vdGlmaWNhdGlvbl90aXRsZSwKLSAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcudXNiX3N0b3JhZ2Vfc3RvcF9ub3RpZmljYXRpb25fbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c193YXJuaW5nLCBmYWxzZSwgdHJ1ZSwgcGkpOwotICAgICAgICB9IGVsc2UgaWYgKG5ld1N0YXRlLmVxdWFscyhFbnZpcm9ubWVudC5NRURJQV9DSEVDS0lORykpIHsKLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgKiBTdG9yYWdlIGlzIG5vdyBjaGVja2luZy4gVXBkYXRlIG1lZGlhIG5vdGlmaWNhdGlvbiBhbmQgZGlzYWJsZQotICAgICAgICAgICAgICogVU1TIG5vdGlmaWNhdGlvbi4KLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgc2V0TWVkaWFTdG9yYWdlTm90aWZpY2F0aW9uKAotICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy5leHRfbWVkaWFfY2hlY2tpbmdfbm90aWZpY2F0aW9uX3RpdGxlLAotICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy5leHRfbWVkaWFfY2hlY2tpbmdfbm90aWZpY2F0aW9uX21lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9ub3RpZnlfc2RjYXJkX3ByZXBhcmUsIHRydWUsIGZhbHNlLCBudWxsKTsKLSAgICAgICAgICAgIHVwZGF0ZVVzYk1hc3NTdG9yYWdlTm90aWZpY2F0aW9uKGZhbHNlKTsKLSAgICAgICAgfSBlbHNlIGlmIChuZXdTdGF0ZS5lcXVhbHMoRW52aXJvbm1lbnQuTUVESUFfTU9VTlRFRCkpIHsKLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgKiBTdG9yYWdlIGlzIG5vdyBtb3VudGVkLiBEaXNtaXNzIGFueSBtZWRpYSBub3RpZmljYXRpb25zLAotICAgICAgICAgICAgICogYW5kIGVuYWJsZSBVTVMgbm90aWZpY2F0aW9uIGlmIGNvbm5lY3RlZC4KLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgc2V0TWVkaWFTdG9yYWdlTm90aWZpY2F0aW9uKDAsIDAsIDAsIGZhbHNlLCBmYWxzZSwgbnVsbCk7Ci0gICAgICAgICAgICB1cGRhdGVVc2JNYXNzU3RvcmFnZU5vdGlmaWNhdGlvbihtVW1zQXZhaWxhYmxlKTsKLSAgICAgICAgfSBlbHNlIGlmIChuZXdTdGF0ZS5lcXVhbHMoRW52aXJvbm1lbnQuTUVESUFfVU5NT1VOVEVEKSkgewotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqIFN0b3JhZ2UgaXMgbm93IHVubW91bnRlZC4gV2UgbWF5IGhhdmUgYmVlbiB1bm1vdW50ZWQKLSAgICAgICAgICAgICAqIGJlY2F1c2UgdGhlIHVzZXIgaXMgZW5hYmxpbmcvZGlzYWJsaW5nIFVNUywgaW4gd2hpY2ggY2FzZSB3ZSBkb24ndAotICAgICAgICAgICAgICogd2FudCB0byBkaXNwbGF5IHRoZSAnc2FmZSB0byB1bm1vdW50JyBub3RpZmljYXRpb24uCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIGlmICghbVN0b3JhZ2VNYW5hZ2VyLmlzVXNiTWFzc1N0b3JhZ2VFbmFibGVkKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAob2xkU3RhdGUuZXF1YWxzKEVudmlyb25tZW50Lk1FRElBX1NIQVJFRCkpIHsKLSAgICAgICAgICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAgICAgICAgICogVGhlIHVubW91bnQgd2FzIGR1ZSB0byBVTVMgYmVpbmcgZW5hYmxlZC4gRGlzbWlzcyBhbnkKLSAgICAgICAgICAgICAgICAgICAgICogbWVkaWEgbm90aWZpY2F0aW9ucywgYW5kIGVuYWJsZSBVTVMgbm90aWZpY2F0aW9uIGlmIGNvbm5lY3RlZAotICAgICAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICAgICAgc2V0TWVkaWFTdG9yYWdlTm90aWZpY2F0aW9uKDAsIDAsIDAsIGZhbHNlLCBmYWxzZSwgbnVsbCk7Ci0gICAgICAgICAgICAgICAgICAgIHVwZGF0ZVVzYk1hc3NTdG9yYWdlTm90aWZpY2F0aW9uKG1VbXNBdmFpbGFibGUpOwotICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgICAgICAgICAqIFNob3cgc2FmZSB0byB1bm1vdW50IG1lZGlhIG5vdGlmaWNhdGlvbiwgYW5kIGVuYWJsZSBVTVMKLSAgICAgICAgICAgICAgICAgICAgICogbm90aWZpY2F0aW9uIGlmIGNvbm5lY3RlZC4KLSAgICAgICAgICAgICAgICAgICAgICovCi0gICAgICAgICAgICAgICAgICAgIHNldE1lZGlhU3RvcmFnZU5vdGlmaWNhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy5leHRfbWVkaWFfc2FmZV91bm1vdW50X25vdGlmaWNhdGlvbl90aXRsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy5leHRfbWVkaWFfc2FmZV91bm1vdW50X25vdGlmaWNhdGlvbl9tZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9ub3RpZnlfc2RjYXJkLCB0cnVlLCB0cnVlLCBudWxsKTsKLSAgICAgICAgICAgICAgICAgICAgdXBkYXRlVXNiTWFzc1N0b3JhZ2VOb3RpZmljYXRpb24obVVtc0F2YWlsYWJsZSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAvKgotICAgICAgICAgICAgICAgICAqIFRoZSB1bm1vdW50IHdhcyBkdWUgdG8gVU1TIGJlaW5nIGVuYWJsZWQuIERpc21pc3MgYW55Ci0gICAgICAgICAgICAgICAgICogbWVkaWEgbm90aWZpY2F0aW9ucywgYW5kIGRpc2FibGUgdGhlIFVNUyBub3RpZmljYXRpb24KLSAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICBzZXRNZWRpYVN0b3JhZ2VOb3RpZmljYXRpb24oMCwgMCwgMCwgZmFsc2UsIGZhbHNlLCBudWxsKTsKLSAgICAgICAgICAgICAgICB1cGRhdGVVc2JNYXNzU3RvcmFnZU5vdGlmaWNhdGlvbihmYWxzZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSBpZiAobmV3U3RhdGUuZXF1YWxzKEVudmlyb25tZW50Lk1FRElBX05PRlMpKSB7Ci0gICAgICAgICAgICAvKgotICAgICAgICAgICAgICogU3RvcmFnZSBoYXMgbm8gZmlsZXN5c3RlbS4gU2hvdyBibGFuayBtZWRpYSBub3RpZmljYXRpb24sCi0gICAgICAgICAgICAgKiBhbmQgZW5hYmxlIFVNUyBub3RpZmljYXRpb24gaWYgY29ubmVjdGVkLgotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBJbnRlbnQgaW50ZW50ID0gbmV3IEludGVudCgpOwotICAgICAgICAgICAgaW50ZW50LnNldENsYXNzKG1Db250ZXh0LCBjb20uYW5kcm9pZC5pbnRlcm5hbC5hcHAuRXh0ZXJuYWxNZWRpYUZvcm1hdEFjdGl2aXR5LmNsYXNzKTsKLSAgICAgICAgICAgIFBlbmRpbmdJbnRlbnQgcGkgPSBQZW5kaW5nSW50ZW50LmdldEFjdGl2aXR5KG1Db250ZXh0LCAwLCBpbnRlbnQsIDApOwotCi0gICAgICAgICAgICBzZXRNZWRpYVN0b3JhZ2VOb3RpZmljYXRpb24oCi0gICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLmV4dF9tZWRpYV9ub2ZzX25vdGlmaWNhdGlvbl90aXRsZSwKLSAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcuZXh0X21lZGlhX25vZnNfbm90aWZpY2F0aW9uX21lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9ub3RpZnlfc2RjYXJkX3VzYiwgdHJ1ZSwgZmFsc2UsIHBpKTsKLSAgICAgICAgICAgIHVwZGF0ZVVzYk1hc3NTdG9yYWdlTm90aWZpY2F0aW9uKG1VbXNBdmFpbGFibGUpOwotICAgICAgICB9IGVsc2UgaWYgKG5ld1N0YXRlLmVxdWFscyhFbnZpcm9ubWVudC5NRURJQV9VTk1PVU5UQUJMRSkpIHsKLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgKiBTdG9yYWdlIGlzIGNvcnJ1cHQuIFNob3cgY29ycnVwdCBtZWRpYSBub3RpZmljYXRpb24sCi0gICAgICAgICAgICAgKiBhbmQgZW5hYmxlIFVNUyBub3RpZmljYXRpb24gaWYgY29ubmVjdGVkLgotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBJbnRlbnQgaW50ZW50ID0gbmV3IEludGVudCgpOwotICAgICAgICAgICAgaW50ZW50LnNldENsYXNzKG1Db250ZXh0LCBjb20uYW5kcm9pZC5pbnRlcm5hbC5hcHAuRXh0ZXJuYWxNZWRpYUZvcm1hdEFjdGl2aXR5LmNsYXNzKTsKLSAgICAgICAgICAgIFBlbmRpbmdJbnRlbnQgcGkgPSBQZW5kaW5nSW50ZW50LmdldEFjdGl2aXR5KG1Db250ZXh0LCAwLCBpbnRlbnQsIDApOwotCi0gICAgICAgICAgICBzZXRNZWRpYVN0b3JhZ2VOb3RpZmljYXRpb24oCi0gICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLmV4dF9tZWRpYV91bm1vdW50YWJsZV9ub3RpZmljYXRpb25fdGl0bGUsCi0gICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLmV4dF9tZWRpYV91bm1vdW50YWJsZV9ub3RpZmljYXRpb25fbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X25vdGlmeV9zZGNhcmRfdXNiLCB0cnVlLCBmYWxzZSwgcGkpOyAKLSAgICAgICAgICAgIHVwZGF0ZVVzYk1hc3NTdG9yYWdlTm90aWZpY2F0aW9uKG1VbXNBdmFpbGFibGUpOwotICAgICAgICB9IGVsc2UgaWYgKG5ld1N0YXRlLmVxdWFscyhFbnZpcm9ubWVudC5NRURJQV9SRU1PVkVEKSkgewotICAgICAgICAgICAgLyoKLSAgICAgICAgICAgICAqIFN0b3JhZ2UgaGFzIGJlZW4gcmVtb3ZlZC4gU2hvdyBub21lZGlhIG1lZGlhIG5vdGlmaWNhdGlvbiwKLSAgICAgICAgICAgICAqIGFuZCBkaXNhYmxlIFVNUyBub3RpZmljYXRpb24gcmVnYXJkbGVzcyBvZiBjb25uZWN0aW9uIHN0YXRlLgotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBzZXRNZWRpYVN0b3JhZ2VOb3RpZmljYXRpb24oCi0gICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLmV4dF9tZWRpYV9ub21lZGlhX25vdGlmaWNhdGlvbl90aXRsZSwKLSAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcuZXh0X21lZGlhX25vbWVkaWFfbm90aWZpY2F0aW9uX21lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUuc3RhdF9ub3RpZnlfc2RjYXJkX3VzYiwKLSAgICAgICAgICAgICAgICAgICAgdHJ1ZSwgZmFsc2UsIG51bGwpOwotICAgICAgICAgICAgdXBkYXRlVXNiTWFzc1N0b3JhZ2VOb3RpZmljYXRpb24oZmFsc2UpOwotICAgICAgICB9IGVsc2UgaWYgKG5ld1N0YXRlLmVxdWFscyhFbnZpcm9ubWVudC5NRURJQV9CQURfUkVNT1ZBTCkpIHsKLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgKiBTdG9yYWdlIGhhcyBiZWVuIHJlbW92ZWQgdW5zYWZlbHkuIFNob3cgYmFkIHJlbW92YWwgbWVkaWEgbm90aWZpY2F0aW9uLAotICAgICAgICAgICAgICogYW5kIGRpc2FibGUgVU1TIG5vdGlmaWNhdGlvbiByZWdhcmRsZXNzIG9mIGNvbm5lY3Rpb24gc3RhdGUuCi0gICAgICAgICAgICAgKi8KLSAgICAgICAgICAgIHNldE1lZGlhU3RvcmFnZU5vdGlmaWNhdGlvbigKLSAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcuZXh0X21lZGlhX2JhZHJlbW92YWxfbm90aWZpY2F0aW9uX3RpdGxlLAotICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy5leHRfbWVkaWFfYmFkcmVtb3ZhbF9ub3RpZmljYXRpb25fbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5kcmF3YWJsZS5zdGF0X3N5c193YXJuaW5nLAotICAgICAgICAgICAgICAgICAgICB0cnVlLCB0cnVlLCBudWxsKTsKLSAgICAgICAgICAgIHVwZGF0ZVVzYk1hc3NTdG9yYWdlTm90aWZpY2F0aW9uKGZhbHNlKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIFNsb2cudyhUQUcsIFN0cmluZy5mb3JtYXQoIklnbm9yaW5nIHVua25vd24gc3RhdGUgeyVzfSIsIG5ld1N0YXRlKSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKioKLSAgICAgKiBVcGRhdGUgdGhlIHN0YXRlIG9mIHRoZSBVU0IgbWFzcyBzdG9yYWdlIG5vdGlmaWNhdGlvbgotICAgICAqLwotICAgIHZvaWQgdXBkYXRlVXNiTWFzc1N0b3JhZ2VOb3RpZmljYXRpb24oYm9vbGVhbiBhdmFpbGFibGUpIHsKLQotICAgICAgICBpZiAoYXZhaWxhYmxlKSB7Ci0gICAgICAgICAgICBJbnRlbnQgaW50ZW50ID0gbmV3IEludGVudCgpOwotICAgICAgICAgICAgaW50ZW50LnNldENsYXNzKG1Db250ZXh0LCBjb20uYW5kcm9pZC5zZXJ2ZXIuc3RhdHVzLlVzYlN0b3JhZ2VBY3Rpdml0eS5jbGFzcyk7Ci0gICAgICAgICAgICBpbnRlbnQuc2V0RmxhZ3MoSW50ZW50LkZMQUdfQUNUSVZJVFlfTkVXX1RBU0spOwotCi0gICAgICAgICAgICBmaW5hbCBib29sZWFuIGFkYk9uID0gMSA9PSBTZXR0aW5ncy5TZWN1cmUuZ2V0SW50KAotICAgICAgICAgICAgICAgIG1Db250ZXh0LmdldENvbnRlbnRSZXNvbHZlcigpLAotICAgICAgICAgICAgICAgIFNldHRpbmdzLlNlY3VyZS5BREJfRU5BQkxFRCwKLSAgICAgICAgICAgICAgICAwKTsKLQotICAgICAgICAgICAgUGVuZGluZ0ludGVudCBwaSA9IFBlbmRpbmdJbnRlbnQuZ2V0QWN0aXZpdHkobUNvbnRleHQsIDAsIGludGVudCwgMCk7Ci0gICAgICAgICAgICBzZXRVc2JTdG9yYWdlTm90aWZpY2F0aW9uKAotICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy51c2Jfc3RvcmFnZV9ub3RpZmljYXRpb25fdGl0bGUsCi0gICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLnVzYl9zdG9yYWdlX25vdGlmaWNhdGlvbl9tZXNzYWdlLAotICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXRfc3lzX2RhdGFfdXNiLAotICAgICAgICAgICAgICAgICAgICBmYWxzZSwgdHJ1ZSwgcGkpOwotCi0gICAgICAgICAgICBpZiAoUE9QX1VNU19BQ1RJVklUWV9PTl9DT05ORUNUICYmICFhZGJPbikgewotICAgICAgICAgICAgICAgIC8vIFdlIGFzc3VtZSB0aGF0IGRldmVsb3BlcnMgZG9uJ3Qgd2FudCB0byBlbmFibGUgVU1TIGV2ZXJ5Ci0gICAgICAgICAgICAgICAgLy8gdGltZSB0aGV5IGF0dGFjaCBhIGRldmljZSB0byBhIFVTQiBob3N0LiBUaGUgYXZlcmFnZSB1c2VyLAotICAgICAgICAgICAgICAgIC8vIGhvd2V2ZXIsIGlzIGxvb2tpbmcgdG8gY2hhcmdlIHRoZSBwaG9uZSAoaW4gd2hpY2ggY2FzZSB0aGlzCi0gICAgICAgICAgICAgICAgLy8gaXMgaGFybWxlc3MpIG9yIHRyYW5zZmVyIGZpbGVzIChpbiB3aGljaCBjYXNlIHRoaXMgY29hY2hlcwotICAgICAgICAgICAgICAgIC8vIHRoZSB1c2VyIGFib3V0IGhvdyB0byBjb21wbGV0ZSB0aGF0IHRhc2sgYW5kIHNhdmVzIHNldmVyYWwKLSAgICAgICAgICAgICAgICAvLyBzdGVwcykuCi0gICAgICAgICAgICAgICAgbUNvbnRleHQuc3RhcnRBY3Rpdml0eShpbnRlbnQpOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgc2V0VXNiU3RvcmFnZU5vdGlmaWNhdGlvbigwLCAwLCAwLCBmYWxzZSwgZmFsc2UsIG51bGwpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogU2V0cyB0aGUgVVNCIHN0b3JhZ2Ugbm90aWZpY2F0aW9uLgotICAgICAqLwotICAgIHByaXZhdGUgc3luY2hyb25pemVkIHZvaWQgc2V0VXNiU3RvcmFnZU5vdGlmaWNhdGlvbihpbnQgdGl0bGVJZCwgaW50IG1lc3NhZ2VJZCwgaW50IGljb24sCi0gICAgICAgICAgICBib29sZWFuIHNvdW5kLCBib29sZWFuIHZpc2libGUsIFBlbmRpbmdJbnRlbnQgcGkpIHsKLQotICAgICAgICBpZiAoIXZpc2libGUgJiYgbVVzYlN0b3JhZ2VOb3RpZmljYXRpb24gPT0gbnVsbCkgewotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgTm90aWZpY2F0aW9uTWFuYWdlciBub3RpZmljYXRpb25NYW5hZ2VyID0gKE5vdGlmaWNhdGlvbk1hbmFnZXIpIG1Db250ZXh0Ci0gICAgICAgICAgICAgICAgLmdldFN5c3RlbVNlcnZpY2UoQ29udGV4dC5OT1RJRklDQVRJT05fU0VSVklDRSk7Ci0KLSAgICAgICAgaWYgKG5vdGlmaWNhdGlvbk1hbmFnZXIgPT0gbnVsbCkgewotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIAotICAgICAgICBpZiAodmlzaWJsZSkgewotICAgICAgICAgICAgUmVzb3VyY2VzIHIgPSBSZXNvdXJjZXMuZ2V0U3lzdGVtKCk7Ci0gICAgICAgICAgICBDaGFyU2VxdWVuY2UgdGl0bGUgPSByLmdldFRleHQodGl0bGVJZCk7Ci0gICAgICAgICAgICBDaGFyU2VxdWVuY2UgbWVzc2FnZSA9IHIuZ2V0VGV4dChtZXNzYWdlSWQpOwotCi0gICAgICAgICAgICBpZiAobVVzYlN0b3JhZ2VOb3RpZmljYXRpb24gPT0gbnVsbCkgewotICAgICAgICAgICAgICAgIG1Vc2JTdG9yYWdlTm90aWZpY2F0aW9uID0gbmV3IE5vdGlmaWNhdGlvbigpOwotICAgICAgICAgICAgICAgIG1Vc2JTdG9yYWdlTm90aWZpY2F0aW9uLmljb24gPSBpY29uOwotICAgICAgICAgICAgICAgIG1Vc2JTdG9yYWdlTm90aWZpY2F0aW9uLndoZW4gPSAwOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBpZiAoc291bmQpIHsKLSAgICAgICAgICAgICAgICBtVXNiU3RvcmFnZU5vdGlmaWNhdGlvbi5kZWZhdWx0cyB8PSBOb3RpZmljYXRpb24uREVGQVVMVF9TT1VORDsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgbVVzYlN0b3JhZ2VOb3RpZmljYXRpb24uZGVmYXVsdHMgJj0gfk5vdGlmaWNhdGlvbi5ERUZBVUxUX1NPVU5EOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgbVVzYlN0b3JhZ2VOb3RpZmljYXRpb24uZmxhZ3MgPSBOb3RpZmljYXRpb24uRkxBR19PTkdPSU5HX0VWRU5UOwotCi0gICAgICAgICAgICBtVXNiU3RvcmFnZU5vdGlmaWNhdGlvbi50aWNrZXJUZXh0ID0gdGl0bGU7Ci0gICAgICAgICAgICBpZiAocGkgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgIEludGVudCBpbnRlbnQgPSBuZXcgSW50ZW50KCk7Ci0gICAgICAgICAgICAgICAgcGkgPSBQZW5kaW5nSW50ZW50LmdldEJyb2FkY2FzdChtQ29udGV4dCwgMCwgaW50ZW50LCAwKTsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgbVVzYlN0b3JhZ2VOb3RpZmljYXRpb24uc2V0TGF0ZXN0RXZlbnRJbmZvKG1Db250ZXh0LCB0aXRsZSwgbWVzc2FnZSwgcGkpOwotICAgICAgICB9Ci0gICAgCi0gICAgICAgIGZpbmFsIGludCBub3RpZmljYXRpb25JZCA9IG1Vc2JTdG9yYWdlTm90aWZpY2F0aW9uLmljb247Ci0gICAgICAgIGlmICh2aXNpYmxlKSB7Ci0gICAgICAgICAgICBub3RpZmljYXRpb25NYW5hZ2VyLm5vdGlmeShub3RpZmljYXRpb25JZCwgbVVzYlN0b3JhZ2VOb3RpZmljYXRpb24pOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbm90aWZpY2F0aW9uTWFuYWdlci5jYW5jZWwobm90aWZpY2F0aW9uSWQpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBzeW5jaHJvbml6ZWQgYm9vbGVhbiBnZXRNZWRpYVN0b3JhZ2VOb3RpZmljYXRpb25EaXNtaXNzYWJsZSgpIHsKLSAgICAgICAgaWYgKChtTWVkaWFTdG9yYWdlTm90aWZpY2F0aW9uICE9IG51bGwpICYmCi0gICAgICAgICAgICAoKG1NZWRpYVN0b3JhZ2VOb3RpZmljYXRpb24uZmxhZ3MgJiBOb3RpZmljYXRpb24uRkxBR19BVVRPX0NBTkNFTCkgPT0KLSAgICAgICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uLkZMQUdfQVVUT19DQU5DRUwpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0KLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIC8qKgotICAgICAqIFNldHMgdGhlIG1lZGlhIHN0b3JhZ2Ugbm90aWZpY2F0aW9uLgotICAgICAqLwotICAgIHByaXZhdGUgc3luY2hyb25pemVkIHZvaWQgc2V0TWVkaWFTdG9yYWdlTm90aWZpY2F0aW9uKGludCB0aXRsZUlkLCBpbnQgbWVzc2FnZUlkLCBpbnQgaWNvbiwgYm9vbGVhbiB2aXNpYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW4gZGlzbWlzc2FibGUsIFBlbmRpbmdJbnRlbnQgcGkpIHsKLQotICAgICAgICBpZiAoIXZpc2libGUgJiYgbU1lZGlhU3RvcmFnZU5vdGlmaWNhdGlvbiA9PSBudWxsKSB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBOb3RpZmljYXRpb25NYW5hZ2VyIG5vdGlmaWNhdGlvbk1hbmFnZXIgPSAoTm90aWZpY2F0aW9uTWFuYWdlcikgbUNvbnRleHQKLSAgICAgICAgICAgICAgICAuZ2V0U3lzdGVtU2VydmljZShDb250ZXh0Lk5PVElGSUNBVElPTl9TRVJWSUNFKTsKLQotICAgICAgICBpZiAobm90aWZpY2F0aW9uTWFuYWdlciA9PSBudWxsKSB7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAobU1lZGlhU3RvcmFnZU5vdGlmaWNhdGlvbiAhPSBudWxsICYmIHZpc2libGUpIHsKLSAgICAgICAgICAgIC8qCi0gICAgICAgICAgICAgKiBEaXNtaXNzIHRoZSBwcmV2aW91cyBub3RpZmljYXRpb24gLSB3ZSdyZSBhYm91dCB0bwotICAgICAgICAgICAgICogcmUtdXNlIGl0LgotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBmaW5hbCBpbnQgbm90aWZpY2F0aW9uSWQgPSBtTWVkaWFTdG9yYWdlTm90aWZpY2F0aW9uLmljb247Ci0gICAgICAgICAgICBub3RpZmljYXRpb25NYW5hZ2VyLmNhbmNlbChub3RpZmljYXRpb25JZCk7Ci0gICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIGlmICh2aXNpYmxlKSB7Ci0gICAgICAgICAgICBSZXNvdXJjZXMgciA9IFJlc291cmNlcy5nZXRTeXN0ZW0oKTsKLSAgICAgICAgICAgIENoYXJTZXF1ZW5jZSB0aXRsZSA9IHIuZ2V0VGV4dCh0aXRsZUlkKTsKLSAgICAgICAgICAgIENoYXJTZXF1ZW5jZSBtZXNzYWdlID0gci5nZXRUZXh0KG1lc3NhZ2VJZCk7Ci0KLSAgICAgICAgICAgIGlmIChtTWVkaWFTdG9yYWdlTm90aWZpY2F0aW9uID09IG51bGwpIHsKLSAgICAgICAgICAgICAgICBtTWVkaWFTdG9yYWdlTm90aWZpY2F0aW9uID0gbmV3IE5vdGlmaWNhdGlvbigpOwotICAgICAgICAgICAgICAgIG1NZWRpYVN0b3JhZ2VOb3RpZmljYXRpb24ud2hlbiA9IDA7Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIG1NZWRpYVN0b3JhZ2VOb3RpZmljYXRpb24uZGVmYXVsdHMgJj0gfk5vdGlmaWNhdGlvbi5ERUZBVUxUX1NPVU5EOwotCi0gICAgICAgICAgICBpZiAoZGlzbWlzc2FibGUpIHsKLSAgICAgICAgICAgICAgICBtTWVkaWFTdG9yYWdlTm90aWZpY2F0aW9uLmZsYWdzID0gTm90aWZpY2F0aW9uLkZMQUdfQVVUT19DQU5DRUw7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG1NZWRpYVN0b3JhZ2VOb3RpZmljYXRpb24uZmxhZ3MgPSBOb3RpZmljYXRpb24uRkxBR19PTkdPSU5HX0VWRU5UOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBtTWVkaWFTdG9yYWdlTm90aWZpY2F0aW9uLnRpY2tlclRleHQgPSB0aXRsZTsKLSAgICAgICAgICAgIGlmIChwaSA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgSW50ZW50IGludGVudCA9IG5ldyBJbnRlbnQoKTsKLSAgICAgICAgICAgICAgICBwaSA9IFBlbmRpbmdJbnRlbnQuZ2V0QnJvYWRjYXN0KG1Db250ZXh0LCAwLCBpbnRlbnQsIDApOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBtTWVkaWFTdG9yYWdlTm90aWZpY2F0aW9uLmljb24gPSBpY29uOwotICAgICAgICAgICAgbU1lZGlhU3RvcmFnZU5vdGlmaWNhdGlvbi5zZXRMYXRlc3RFdmVudEluZm8obUNvbnRleHQsIHRpdGxlLCBtZXNzYWdlLCBwaSk7Ci0gICAgICAgIH0KLSAgICAKLSAgICAgICAgZmluYWwgaW50IG5vdGlmaWNhdGlvbklkID0gbU1lZGlhU3RvcmFnZU5vdGlmaWNhdGlvbi5pY29uOwotICAgICAgICBpZiAodmlzaWJsZSkgewotICAgICAgICAgICAgbm90aWZpY2F0aW9uTWFuYWdlci5ub3RpZnkobm90aWZpY2F0aW9uSWQsIG1NZWRpYVN0b3JhZ2VOb3RpZmljYXRpb24pOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgbm90aWZpY2F0aW9uTWFuYWdlci5jYW5jZWwobm90aWZpY2F0aW9uSWQpOwotICAgICAgICB9Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL1RpY2tlci5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL1RpY2tlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNDcxODViLi4wMDAwMDAwCi0tLSBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3N0YXR1cy9UaWNrZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI0NiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotcGFja2FnZSBjb20uYW5kcm9pZC5zZXJ2ZXIuc3RhdHVzOwotCi1pbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuUjsKLQotaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OwotaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuZHJhd2FibGUuRHJhd2FibGU7Ci1pbXBvcnQgYW5kcm9pZC5vcy5IYW5kbGVyOwotaW1wb3J0IGFuZHJvaWQudGV4dC5TdGF0aWNMYXlvdXQ7Ci1pbXBvcnQgYW5kcm9pZC50ZXh0LkxheW91dC5BbGlnbm1lbnQ7Ci1pbXBvcnQgYW5kcm9pZC50ZXh0LlRleHRQYWludDsKLWltcG9ydCBhbmRyb2lkLnRleHQuVGV4dFV0aWxzOwotaW1wb3J0IGFuZHJvaWQudXRpbC5TbG9nOwotaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OwotaW1wb3J0IGFuZHJvaWQudmlldy5hbmltYXRpb24uQW5pbWF0aW9uOwotaW1wb3J0IGFuZHJvaWQudmlldy5hbmltYXRpb24uQW5pbWF0aW9uVXRpbHM7Ci1pbXBvcnQgYW5kcm9pZC53aWRnZXQuVGV4dFN3aXRjaGVyOwotaW1wb3J0IGFuZHJvaWQud2lkZ2V0LlRleHRWaWV3OwotaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkltYWdlU3dpdGNoZXI7Ci0KLWltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OwotCi0KLWFic3RyYWN0IGNsYXNzIFRpY2tlciB7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IFRJQ0tFUl9TRUdNRU5UX0RFTEFZID0gMzAwMDsKLSAgICAKLSAgICBwcml2YXRlIGZpbmFsIGNsYXNzIFNlZ21lbnQgewotICAgICAgICBOb3RpZmljYXRpb25EYXRhIG5vdGlmaWNhdGlvbkRhdGE7Ci0gICAgICAgIERyYXdhYmxlIGljb247Ci0gICAgICAgIENoYXJTZXF1ZW5jZSB0ZXh0OwotICAgICAgICBpbnQgY3VycmVudDsKLSAgICAgICAgaW50IG5leHQ7Ci0gICAgICAgIGJvb2xlYW4gZmlyc3Q7Ci0KLSAgICAgICAgU3RhdGljTGF5b3V0IGdldExheW91dChDaGFyU2VxdWVuY2Ugc3Vic3RyKSB7Ci0gICAgICAgICAgICBpbnQgdyA9IG1UZXh0U3dpdGNoZXIuZ2V0V2lkdGgoKSAtIG1UZXh0U3dpdGNoZXIuZ2V0UGFkZGluZ0xlZnQoKQotICAgICAgICAgICAgICAgICAgICAtIG1UZXh0U3dpdGNoZXIuZ2V0UGFkZGluZ1JpZ2h0KCk7Ci0gICAgICAgICAgICByZXR1cm4gbmV3IFN0YXRpY0xheW91dChzdWJzdHIsIG1QYWludCwgdywgQWxpZ25tZW50LkFMSUdOX05PUk1BTCwgMSwgMCwgdHJ1ZSk7Ci0gICAgICAgIH0KLQotICAgICAgICBDaGFyU2VxdWVuY2UgcnRyaW0oQ2hhclNlcXVlbmNlIHN1YnN0ciwgaW50IHN0YXJ0LCBpbnQgZW5kKSB7Ci0gICAgICAgICAgICB3aGlsZSAoZW5kID4gc3RhcnQgJiYgIVRleHRVdGlscy5pc0dyYXBoaWMoc3Vic3RyLmNoYXJBdChlbmQtMSkpKSB7Ci0gICAgICAgICAgICAgICAgZW5kLS07Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoZW5kID4gc3RhcnQpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gc3Vic3RyLnN1YlNlcXVlbmNlKHN0YXJ0LCBlbmQpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgcmV0dXJuIG51bGw7Ci0gICAgICAgIH0KLQotICAgICAgICAvKiogcmV0dXJucyBudWxsIGlmIHRoZXJlIGlzIG5vIG1vcmUgdGV4dCAqLwotICAgICAgICBDaGFyU2VxdWVuY2UgZ2V0VGV4dCgpIHsKLSAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnQgPiB0aGlzLnRleHQubGVuZ3RoKCkpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIENoYXJTZXF1ZW5jZSBzdWJzdHIgPSB0aGlzLnRleHQuc3ViU2VxdWVuY2UodGhpcy5jdXJyZW50LCB0aGlzLnRleHQubGVuZ3RoKCkpOwotICAgICAgICAgICAgU3RhdGljTGF5b3V0IGwgPSBnZXRMYXlvdXQoc3Vic3RyKTsKLSAgICAgICAgICAgIGludCBsaW5lQ291bnQgPSBsLmdldExpbmVDb3VudCgpOwotICAgICAgICAgICAgaWYgKGxpbmVDb3VudCA+IDApIHsKLSAgICAgICAgICAgICAgICBpbnQgc3RhcnQgPSBsLmdldExpbmVTdGFydCgwKTsKLSAgICAgICAgICAgICAgICBpbnQgZW5kID0gbC5nZXRMaW5lRW5kKDApOwotICAgICAgICAgICAgICAgIHRoaXMubmV4dCA9IHRoaXMuY3VycmVudCArIGVuZDsKLSAgICAgICAgICAgICAgICByZXR1cm4gcnRyaW0oc3Vic3RyLCBzdGFydCwgZW5kKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oImxpbmVDb3VudD0iICsgbGluZUNvdW50ICsgIiBjdXJyZW50PSIgKyBjdXJyZW50ICsKLSAgICAgICAgICAgICAgICAgICAgICAgICIgdGV4dD0iICsgdGV4dCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICAvKiogcmV0dXJucyBudWxsIGlmIHRoZXJlIGlzIG5vIG1vcmUgdGV4dCAqLwotICAgICAgICBDaGFyU2VxdWVuY2UgYWR2YW5jZSgpIHsKLSAgICAgICAgICAgIHRoaXMuZmlyc3QgPSBmYWxzZTsKLSAgICAgICAgICAgIGludCBpbmRleCA9IHRoaXMubmV4dDsKLSAgICAgICAgICAgIGZpbmFsIGludCBsZW4gPSB0aGlzLnRleHQubGVuZ3RoKCk7Ci0gICAgICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW4gJiYgIVRleHRVdGlscy5pc0dyYXBoaWModGhpcy50ZXh0LmNoYXJBdChpbmRleCkpKSB7Ci0gICAgICAgICAgICAgICAgaW5kZXgrKzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChpbmRleCA+PSBsZW4pIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgQ2hhclNlcXVlbmNlIHN1YnN0ciA9IHRoaXMudGV4dC5zdWJTZXF1ZW5jZShpbmRleCwgdGhpcy50ZXh0Lmxlbmd0aCgpKTsKLSAgICAgICAgICAgIFN0YXRpY0xheW91dCBsID0gZ2V0TGF5b3V0KHN1YnN0cik7Ci0gICAgICAgICAgICBmaW5hbCBpbnQgbGluZUNvdW50ID0gbC5nZXRMaW5lQ291bnQoKTsKLSAgICAgICAgICAgIGludCBpOwotICAgICAgICAgICAgZm9yIChpPTA7IGk8bGluZUNvdW50OyBpKyspIHsKLSAgICAgICAgICAgICAgICBpbnQgc3RhcnQgPSBsLmdldExpbmVTdGFydChpKTsKLSAgICAgICAgICAgICAgICBpbnQgZW5kID0gbC5nZXRMaW5lRW5kKGkpOwotICAgICAgICAgICAgICAgIGlmIChpID09IGxpbmVDb3VudC0xKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRoaXMubmV4dCA9IGxlbjsKLSAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICB0aGlzLm5leHQgPSBpbmRleCArIGwuZ2V0TGluZVN0YXJ0KGkrMSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIENoYXJTZXF1ZW5jZSByZXN1bHQgPSBydHJpbShzdWJzdHIsIHN0YXJ0LCBlbmQpOwotICAgICAgICAgICAgICAgIGlmIChyZXN1bHQgIT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnQgPSBpbmRleCArIHN0YXJ0OwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0OwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHRoaXMuY3VycmVudCA9IGxlbjsKLSAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICB9Ci0KLSAgICAgICAgU2VnbWVudChOb3RpZmljYXRpb25EYXRhIG4sIERyYXdhYmxlIGljb24sIENoYXJTZXF1ZW5jZSB0ZXh0KSB7Ci0gICAgICAgICAgICB0aGlzLm5vdGlmaWNhdGlvbkRhdGEgPSBuOwotICAgICAgICAgICAgdGhpcy5pY29uID0gaWNvbjsKLSAgICAgICAgICAgIHRoaXMudGV4dCA9IHRleHQ7Ci0gICAgICAgICAgICBpbnQgaW5kZXggPSAwOwotICAgICAgICAgICAgZmluYWwgaW50IGxlbiA9IHRleHQubGVuZ3RoKCk7Ci0gICAgICAgICAgICB3aGlsZSAoaW5kZXggPCBsZW4gJiYgIVRleHRVdGlscy5pc0dyYXBoaWModGV4dC5jaGFyQXQoaW5kZXgpKSkgewotICAgICAgICAgICAgICAgIGluZGV4Kys7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0aGlzLmN1cnJlbnQgPSBpbmRleDsKLSAgICAgICAgICAgIHRoaXMubmV4dCA9IGluZGV4OwotICAgICAgICAgICAgdGhpcy5maXJzdCA9IHRydWU7Ci0gICAgICAgIH0KLSAgICB9OwotCi0gICAgcHJpdmF0ZSBIYW5kbGVyIG1IYW5kbGVyID0gbmV3IEhhbmRsZXIoKTsKLSAgICBwcml2YXRlIEFycmF5TGlzdDxTZWdtZW50PiBtU2VnbWVudHMgPSBuZXcgQXJyYXlMaXN0KCk7Ci0gICAgcHJpdmF0ZSBUZXh0UGFpbnQgbVBhaW50OwotICAgIHByaXZhdGUgVmlldyBtVGlja2VyVmlldzsKLSAgICBwcml2YXRlIEltYWdlU3dpdGNoZXIgbUljb25Td2l0Y2hlcjsKLSAgICBwcml2YXRlIFRleHRTd2l0Y2hlciBtVGV4dFN3aXRjaGVyOwotCi0gICAgVGlja2VyKENvbnRleHQgY29udGV4dCwgU3RhdHVzQmFyVmlldyBzYikgewotICAgICAgICBtVGlja2VyVmlldyA9IHNiLmZpbmRWaWV3QnlJZChSLmlkLnRpY2tlcik7Ci0KLSAgICAgICAgbUljb25Td2l0Y2hlciA9IChJbWFnZVN3aXRjaGVyKXNiLmZpbmRWaWV3QnlJZChSLmlkLnRpY2tlckljb24pOwotICAgICAgICBtSWNvblN3aXRjaGVyLnNldEluQW5pbWF0aW9uKAotICAgICAgICAgICAgICAgICAgICBBbmltYXRpb25VdGlscy5sb2FkQW5pbWF0aW9uKGNvbnRleHQsIGNvbS5hbmRyb2lkLmludGVybmFsLlIuYW5pbS5wdXNoX3VwX2luKSk7Ci0gICAgICAgIG1JY29uU3dpdGNoZXIuc2V0T3V0QW5pbWF0aW9uKAotICAgICAgICAgICAgICAgICAgICBBbmltYXRpb25VdGlscy5sb2FkQW5pbWF0aW9uKGNvbnRleHQsIGNvbS5hbmRyb2lkLmludGVybmFsLlIuYW5pbS5wdXNoX3VwX291dCkpOwotCi0gICAgICAgIG1UZXh0U3dpdGNoZXIgPSAoVGV4dFN3aXRjaGVyKXNiLmZpbmRWaWV3QnlJZChSLmlkLnRpY2tlclRleHQpOwotICAgICAgICBtVGV4dFN3aXRjaGVyLnNldEluQW5pbWF0aW9uKAotICAgICAgICAgICAgICAgICAgICBBbmltYXRpb25VdGlscy5sb2FkQW5pbWF0aW9uKGNvbnRleHQsIGNvbS5hbmRyb2lkLmludGVybmFsLlIuYW5pbS5wdXNoX3VwX2luKSk7Ci0gICAgICAgIG1UZXh0U3dpdGNoZXIuc2V0T3V0QW5pbWF0aW9uKAotICAgICAgICAgICAgICAgICAgICBBbmltYXRpb25VdGlscy5sb2FkQW5pbWF0aW9uKGNvbnRleHQsIGNvbS5hbmRyb2lkLmludGVybmFsLlIuYW5pbS5wdXNoX3VwX291dCkpOwotCi0gICAgICAgIC8vIENvcHkgdGhlIHBhaW50IHN0eWxlIG9mIG9uZSBvZiB0aGUgVGV4dFN3aXRjaGVycyBjaGlsZHJlbiB0byB1c2UgbGF0ZXIgZm9yIG1lYXN1cmluZwotICAgICAgICBUZXh0VmlldyB0ZXh0ID0gKFRleHRWaWV3KW1UZXh0U3dpdGNoZXIuZ2V0Q2hpbGRBdCgwKTsKLSAgICAgICAgbVBhaW50ID0gdGV4dC5nZXRQYWludCgpOwotICAgIH0KLQotICAgIHZvaWQgYWRkRW50cnkoTm90aWZpY2F0aW9uRGF0YSBuLCBEcmF3YWJsZSBpY29uLCBDaGFyU2VxdWVuY2UgdGV4dCkgewotICAgICAgICBpbnQgaW5pdGlhbENvdW50ID0gbVNlZ21lbnRzLnNpemUoKTsKLQotICAgICAgICBTZWdtZW50IG5ld1NlZ21lbnQgPSBuZXcgU2VnbWVudChuLCBpY29uLCB0ZXh0KTsKLQotICAgICAgICAvLyBwcnVuZSBvdXQgYW55IHByZWV4aXN0aW5nIG9uZXMgZm9yIHRoaXMgbm90aWZpY2F0aW9uLCBidXQgbm90IHRoZSBjdXJyZW50IG9uZS4KLSAgICAgICAgLy8gbGV0IHRoYXQgZmluaXNoLCBldmVuIGlmIGl0J3MgdGhlIHNhbWUgaWQKLSAgICAgICAgZm9yIChpbnQgaT0xOyBpPGluaXRpYWxDb3VudDsgaSsrKSB7Ci0gICAgICAgICAgICBTZWdtZW50IHNlZyA9IG1TZWdtZW50cy5nZXQoaSk7Ci0gICAgICAgICAgICBpZiAobi5pZCA9PSBzZWcubm90aWZpY2F0aW9uRGF0YS5pZCAmJiBuLnBrZy5lcXVhbHMoc2VnLm5vdGlmaWNhdGlvbkRhdGEucGtnKSkgewotICAgICAgICAgICAgICAgIC8vIGp1c3QgdXBkYXRlIHRoYXQgb25lIHRvIHVzZSB0aGlzIG5ldyBkYXRhIGluc3RlYWQKLSAgICAgICAgICAgICAgICBtU2VnbWVudHMuc2V0KGksIG5ld1NlZ21lbnQpOwotICAgICAgICAgICAgICAgIC8vIGFuZCBzaW5jZSB3ZSBrbm93IGluaXRpYWxDb3VudCAhPSAwLCBqdXN0IHJldHVybgotICAgICAgICAgICAgICAgIHJldHVybiA7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBtU2VnbWVudHMuYWRkKG5ld1NlZ21lbnQpOwotCi0gICAgICAgIGlmIChpbml0aWFsQ291bnQgPT0gMCAmJiBtU2VnbWVudHMuc2l6ZSgpID4gMCkgewotICAgICAgICAgICAgU2VnbWVudCBzZWcgPSBtU2VnbWVudHMuZ2V0KDApOwotICAgICAgICAgICAgc2VnLmZpcnN0ID0gZmFsc2U7Ci0gICAgICAgICAgICAKLSAgICAgICAgICAgIG1JY29uU3dpdGNoZXIuc2V0QW5pbWF0ZUZpcnN0VmlldyhmYWxzZSk7Ci0gICAgICAgICAgICBtSWNvblN3aXRjaGVyLnJlc2V0KCk7Ci0gICAgICAgICAgICBtSWNvblN3aXRjaGVyLnNldEltYWdlRHJhd2FibGUoc2VnLmljb24pOwotICAgICAgICAgICAgCi0gICAgICAgICAgICBtVGV4dFN3aXRjaGVyLnNldEFuaW1hdGVGaXJzdFZpZXcoZmFsc2UpOwotICAgICAgICAgICAgbVRleHRTd2l0Y2hlci5yZXNldCgpOwotICAgICAgICAgICAgbVRleHRTd2l0Y2hlci5zZXRUZXh0KHNlZy5nZXRUZXh0KCkpOwotICAgICAgICAgICAgCi0gICAgICAgICAgICB0aWNrZXJTdGFydGluZygpOwotICAgICAgICAgICAgc2NoZWR1bGVBZHZhbmNlKCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICB2b2lkIGhhbHQoKSB7Ci0gICAgICAgIG1IYW5kbGVyLnJlbW92ZUNhbGxiYWNrcyhtQWR2YW5jZVRpY2tlcik7Ci0gICAgICAgIG1TZWdtZW50cy5jbGVhcigpOwotICAgICAgICB0aWNrZXJIYWx0aW5nKCk7Ci0gICAgfQotCi0gICAgdm9pZCByZWZsb3dUZXh0KCkgewotICAgICAgICBpZiAobVNlZ21lbnRzLnNpemUoKSA+IDApIHsKLSAgICAgICAgICAgIFNlZ21lbnQgc2VnID0gbVNlZ21lbnRzLmdldCgwKTsKLSAgICAgICAgICAgIENoYXJTZXF1ZW5jZSB0ZXh0ID0gc2VnLmdldFRleHQoKTsKLSAgICAgICAgICAgIG1UZXh0U3dpdGNoZXIuc2V0Q3VycmVudFRleHQodGV4dCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwcml2YXRlIFJ1bm5hYmxlIG1BZHZhbmNlVGlja2VyID0gbmV3IFJ1bm5hYmxlKCkgewotICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7Ci0gICAgICAgICAgICB3aGlsZSAobVNlZ21lbnRzLnNpemUoKSA+IDApIHsKLSAgICAgICAgICAgICAgICBTZWdtZW50IHNlZyA9IG1TZWdtZW50cy5nZXQoMCk7Ci0KLSAgICAgICAgICAgICAgICBpZiAoc2VnLmZpcnN0KSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIHRoaXMgbWFrZXMgdGhlIGljb24gc2xpZGUgaW4gZm9yIHRoZSBmaXJzdCBvbmUgZm9yIGEgZ2l2ZW4KLSAgICAgICAgICAgICAgICAgICAgLy8gbm90aWZpY2F0aW9uIGV2ZW4gaWYgdGhlcmUgYXJlIHR3byBub3RpZmljYXRpb25zIHdpdGggdGhlCi0gICAgICAgICAgICAgICAgICAgIC8vIHNhbWUgaWNvbiBpbiBhIHJvdwotICAgICAgICAgICAgICAgICAgICBtSWNvblN3aXRjaGVyLnNldEltYWdlRHJhd2FibGUoc2VnLmljb24pOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBDaGFyU2VxdWVuY2UgdGV4dCA9IHNlZy5hZHZhbmNlKCk7Ci0gICAgICAgICAgICAgICAgaWYgKHRleHQgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICBtU2VnbWVudHMucmVtb3ZlKDApOwotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbVRleHRTd2l0Y2hlci5zZXRUZXh0KHRleHQpOwotCi0gICAgICAgICAgICAgICAgc2NoZWR1bGVBZHZhbmNlKCk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAobVNlZ21lbnRzLnNpemUoKSA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgdGlja2VyRG9uZSgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfTsKLQotICAgIHByaXZhdGUgdm9pZCBzY2hlZHVsZUFkdmFuY2UoKSB7Ci0gICAgICAgIG1IYW5kbGVyLnBvc3REZWxheWVkKG1BZHZhbmNlVGlja2VyLCBUSUNLRVJfU0VHTUVOVF9ERUxBWSk7Ci0gICAgfQotCi0gICAgYWJzdHJhY3Qgdm9pZCB0aWNrZXJTdGFydGluZygpOwotICAgIGFic3RyYWN0IHZvaWQgdGlja2VyRG9uZSgpOwotICAgIGFic3RyYWN0IHZvaWQgdGlja2VySGFsdGluZygpOwotfQotCmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvVGlja2VyVmlldy5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL1RpY2tlclZpZXcuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDk5ZGZmYi4uMDAwMDAwMAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvVGlja2VyVmlldy5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLXBhY2thZ2UgY29tLmFuZHJvaWQuc2VydmVyLnN0YXR1czsKLQotaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OwotaW1wb3J0IGFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQ7Ci1pbXBvcnQgYW5kcm9pZC53aWRnZXQuVGV4dFN3aXRjaGVyOwotCi0KLXB1YmxpYyBjbGFzcyBUaWNrZXJWaWV3IGV4dGVuZHMgVGV4dFN3aXRjaGVyCi17Ci0gICAgVGlja2VyIG1UaWNrZXI7Ci0KLSAgICBwdWJsaWMgVGlja2VyVmlldyhDb250ZXh0IGNvbnRleHQsIEF0dHJpYnV0ZVNldCBhdHRycykgewotICAgICAgICBzdXBlcihjb250ZXh0LCBhdHRycyk7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHJvdGVjdGVkIHZvaWQgb25TaXplQ2hhbmdlZChpbnQgdywgaW50IGgsIGludCBvbGR3LCBpbnQgb2xkaCkgewotICAgICAgICBzdXBlci5vblNpemVDaGFuZ2VkKHcsIGgsIG9sZHcsIG9sZGgpOwotICAgICAgICBtVGlja2VyLnJlZmxvd1RleHQoKTsKLSAgICB9Ci19Ci0KZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3N0YXR1cy9UcmFja2luZ1BhdHRlcm5WaWV3LmphdmEgYi9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvVHJhY2tpbmdQYXR0ZXJuVmlldy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYzkxYWE0Li4wMDAwMDAwCi0tLSBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3N0YXR1cy9UcmFja2luZ1BhdHRlcm5WaWV3LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotcGFja2FnZSBjb20uYW5kcm9pZC5zZXJ2ZXIuc3RhdHVzOwotCi1pbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7Ci1pbXBvcnQgYW5kcm9pZC5jb250ZW50LnJlcy5UeXBlZEFycmF5OwotaW1wb3J0IGFuZHJvaWQudXRpbC5BdHRyaWJ1dGVTZXQ7Ci1pbXBvcnQgYW5kcm9pZC51dGlsLlNsb2c7Ci1pbXBvcnQgYW5kcm9pZC52aWV3LlZpZXc7Ci1pbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5CaXRtYXBGYWN0b3J5OwotaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuQml0bWFwOwotaW1wb3J0IGFuZHJvaWQuZ3JhcGhpY3MuUGFpbnQ7Ci1pbXBvcnQgYW5kcm9pZC5ncmFwaGljcy5DYW52YXM7Ci0KLXB1YmxpYyBjbGFzcyBUcmFja2luZ1BhdHRlcm5WaWV3IGV4dGVuZHMgVmlldyB7Ci0gICAgcHJpdmF0ZSBCaXRtYXAgbVRleHR1cmU7Ci0gICAgcHJpdmF0ZSBQYWludCBtUGFpbnQ7Ci0gICAgcHJpdmF0ZSBpbnQgbVRleHR1cmVXaWR0aDsKLSAgICBwcml2YXRlIGludCBtVGV4dHVyZUhlaWdodDsKLSAgICAKLSAgICBwdWJsaWMgVHJhY2tpbmdQYXR0ZXJuVmlldyhDb250ZXh0IGNvbnRleHQsIEF0dHJpYnV0ZVNldCBhdHRycykgewotICAgICAgICBzdXBlcihjb250ZXh0LCBhdHRycyk7Ci0KLSAgICAgICAgbVRleHR1cmUgPSBCaXRtYXBGYWN0b3J5LmRlY29kZVJlc291cmNlKGdldFJlc291cmNlcygpLCAKLSAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnN0YXR1c19iYXJfYmFja2dyb3VuZCk7Ci0gICAgICAgIG1UZXh0dXJlV2lkdGggPSBtVGV4dHVyZS5nZXRXaWR0aCgpOwotICAgICAgICBtVGV4dHVyZUhlaWdodCA9IG1UZXh0dXJlLmdldEhlaWdodCgpOwotCi0gICAgICAgIG1QYWludCA9IG5ldyBQYWludCgpOwotICAgICAgICBtUGFpbnQuc2V0RGl0aGVyKGZhbHNlKTsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgdm9pZCBvbkRyYXcoQ2FudmFzIGNhbnZhcykgewotICAgICAgICBmaW5hbCBCaXRtYXAgdGV4dHVyZSA9IG1UZXh0dXJlOwotICAgICAgICBmaW5hbCBQYWludCBwYWludCA9IG1QYWludDsKLQotICAgICAgICBmaW5hbCBpbnQgd2lkdGggPSBnZXRXaWR0aCgpOwotICAgICAgICBmaW5hbCBpbnQgaGVpZ2h0ID0gZ2V0SGVpZ2h0KCk7Ci0KLSAgICAgICAgZmluYWwgaW50IHRleHR1cmVXaWR0aCA9IG1UZXh0dXJlV2lkdGg7Ci0gICAgICAgIGZpbmFsIGludCB0ZXh0dXJlSGVpZ2h0ID0gbVRleHR1cmVIZWlnaHQ7Ci0KLSAgICAgICAgaW50IHggPSAwOwotICAgICAgICBpbnQgeTsKLQotICAgICAgICB3aGlsZSAoeCA8IHdpZHRoKSB7Ci0gICAgICAgICAgICB5ID0gMDsKLSAgICAgICAgICAgIHdoaWxlICh5IDwgaGVpZ2h0KSB7Ci0gICAgICAgICAgICAgICAgY2FudmFzLmRyYXdCaXRtYXAodGV4dHVyZSwgeCwgeSwgcGFpbnQpOwotICAgICAgICAgICAgICAgIHkgKz0gdGV4dHVyZUhlaWdodDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHggKz0gdGV4dHVyZVdpZHRoOwotICAgICAgICB9Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL1RyYWNraW5nVmlldy5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL1RyYWNraW5nVmlldy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZWMzOWMwLi4wMDAwMDAwCi0tLSBhL3NlcnZpY2VzL2phdmEvY29tL2FuZHJvaWQvc2VydmVyL3N0YXR1cy9UcmFja2luZ1ZpZXcuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDggVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi1wYWNrYWdlIGNvbS5hbmRyb2lkLnNlcnZlci5zdGF0dXM7Ci0KLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKLWltcG9ydCBhbmRyb2lkLnV0aWwuQXR0cmlidXRlU2V0OwotaW1wb3J0IGFuZHJvaWQudmlldy5EaXNwbGF5OwotaW1wb3J0IGFuZHJvaWQudmlldy5LZXlFdmVudDsKLWltcG9ydCBhbmRyb2lkLnZpZXcuV2luZG93TWFuYWdlcjsKLWltcG9ydCBhbmRyb2lkLndpZGdldC5MaW5lYXJMYXlvdXQ7Ci0KLQotcHVibGljIGNsYXNzIFRyYWNraW5nVmlldyBleHRlbmRzIExpbmVhckxheW91dCB7Ci0gICAgZmluYWwgRGlzcGxheSBtRGlzcGxheTsKLSAgICBTdGF0dXNCYXJTZXJ2aWNlIG1TZXJ2aWNlOwotICAgIGJvb2xlYW4gbVRyYWNraW5nOwotICAgIGludCBtU3RhcnRYLCBtU3RhcnRZOwotCi0gICAgcHVibGljIFRyYWNraW5nVmlldyhDb250ZXh0IGNvbnRleHQsIEF0dHJpYnV0ZVNldCBhdHRycykgewotICAgICAgICBzdXBlcihjb250ZXh0LCBhdHRycyk7Ci0gICAgICAgIG1EaXNwbGF5ID0gKChXaW5kb3dNYW5hZ2VyKWNvbnRleHQuZ2V0U3lzdGVtU2VydmljZSgKLSAgICAgICAgICAgICAgICBDb250ZXh0LldJTkRPV19TRVJWSUNFKSkuZ2V0RGVmYXVsdERpc3BsYXkoKTsKLSAgICB9Ci0gICAgCi0gICAgQE92ZXJyaWRlCi0gICAgcHJvdGVjdGVkIHZvaWQgb25MYXlvdXQoYm9vbGVhbiBjaGFuZ2VkLCBpbnQgbGVmdCwgaW50IHRvcCwgaW50IHJpZ2h0LCBpbnQgYm90dG9tKSB7Ci0gICAgICAgIHN1cGVyLm9uTGF5b3V0KGNoYW5nZWQsIGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSk7Ci0gICAgICAgIG1TZXJ2aWNlLnVwZGF0ZUV4cGFuZGVkSGVpZ2h0KCk7Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHVibGljIGJvb2xlYW4gZGlzcGF0Y2hLZXlFdmVudChLZXlFdmVudCBldmVudCkgewotICAgICAgICBib29sZWFuIGRvd24gPSBldmVudC5nZXRBY3Rpb24oKSA9PSBLZXlFdmVudC5BQ1RJT05fRE9XTjsKLSAgICAgICAgc3dpdGNoIChldmVudC5nZXRLZXlDb2RlKCkpIHsKLSAgICAgICAgY2FzZSBLZXlFdmVudC5LRVlDT0RFX0JBQ0s6Ci0gICAgICAgICAgICBpZiAoZG93bikgewotICAgICAgICAgICAgICAgIG1TZXJ2aWNlLmRlYWN0aXZhdGUoKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBzdXBlci5kaXNwYXRjaEtleUV2ZW50KGV2ZW50KTsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwcm90ZWN0ZWQgdm9pZCBvbkF0dGFjaGVkVG9XaW5kb3coKSB7Ci0gICAgICAgIHN1cGVyLm9uQXR0YWNoZWRUb1dpbmRvdygpOwotICAgICAgICBtU2VydmljZS5vblRyYWNraW5nVmlld0F0dGFjaGVkKCk7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL1VzYlN0b3JhZ2VBY3Rpdml0eS5qYXZhIGIvc2VydmljZXMvamF2YS9jb20vYW5kcm9pZC9zZXJ2ZXIvc3RhdHVzL1VzYlN0b3JhZ2VBY3Rpdml0eS5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlODYzMWM1My4uMDAwMDAwMAotLS0gYS9zZXJ2aWNlcy9qYXZhL2NvbS9hbmRyb2lkL3NlcnZlci9zdGF0dXMvVXNiU3RvcmFnZUFjdGl2aXR5LmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyNzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBHb29nbGUgSW5jLgotICoKLSAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwotICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Ci0gKgotICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSAqCi0gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCi0gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAotICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCi0gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KLSAqLwotCi1wYWNrYWdlIGNvbS5hbmRyb2lkLnNlcnZlci5zdGF0dXM7Ci0KLWltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5SOwotaW1wb3J0IGFuZHJvaWQuYXBwLkFjdGl2aXR5OwotaW1wb3J0IGFuZHJvaWQuYXBwLkFjdGl2aXR5TWFuYWdlcjsKLWltcG9ydCBhbmRyb2lkLmFwcC5BbGVydERpYWxvZzsKLWltcG9ydCBhbmRyb2lkLmFwcC5EaWFsb2c7Ci1pbXBvcnQgYW5kcm9pZC5jb250ZW50LkJyb2FkY2FzdFJlY2VpdmVyOwotaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OwotaW1wb3J0IGFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2U7Ci1pbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50RmlsdGVyOwotaW1wb3J0IGFuZHJvaWQuY29udGVudC5EaWFsb2dJbnRlcmZhY2UuT25DYW5jZWxMaXN0ZW5lcjsKLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uQXBwbGljYXRpb25JbmZvOwotaW1wb3J0IGFuZHJvaWQuY29udGVudC5wbS5QYWNrYWdlTWFuYWdlcjsKLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQucG0uUGFja2FnZU1hbmFnZXIuTmFtZU5vdEZvdW5kRXhjZXB0aW9uOwotaW1wb3J0IGFuZHJvaWQub3MuQnVuZGxlOwotaW1wb3J0IGFuZHJvaWQub3MuRW52aXJvbm1lbnQ7Ci1pbXBvcnQgYW5kcm9pZC5vcy5IYW5kbGVyOwotaW1wb3J0IGFuZHJvaWQub3MuSUJpbmRlcjsKLWltcG9ydCBhbmRyb2lkLm9zLnN0b3JhZ2UuSU1vdW50U2VydmljZTsKLWltcG9ydCBhbmRyb2lkLm9zLnN0b3JhZ2UuU3RvcmFnZU1hbmFnZXI7Ci1pbXBvcnQgYW5kcm9pZC5vcy5zdG9yYWdlLlN0b3JhZ2VFdmVudExpc3RlbmVyOwotaW1wb3J0IGFuZHJvaWQub3MuUmVtb3RlRXhjZXB0aW9uOwotaW1wb3J0IGFuZHJvaWQub3MuU2VydmljZU1hbmFnZXI7Ci1pbXBvcnQgYW5kcm9pZC53aWRnZXQuSW1hZ2VWaWV3OwotaW1wb3J0IGFuZHJvaWQud2lkZ2V0LkJ1dHRvbjsKLWltcG9ydCBhbmRyb2lkLndpZGdldC5Qcm9ncmVzc0JhcjsKLWltcG9ydCBhbmRyb2lkLndpZGdldC5UZXh0VmlldzsKLWltcG9ydCBhbmRyb2lkLnZpZXcuVmlldzsKLWltcG9ydCBhbmRyb2lkLnZpZXcuV2luZG93OwotaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7Ci0KLWltcG9ydCBqYXZhLnV0aWwuTGlzdDsKLQotLyoqCi0gKiBUaGlzIGFjdGl2aXR5IGlzIHNob3duIHRvIHRoZSB1c2VyIGZvciBoaW0vaGVyIHRvIGVuYWJsZSBVU0IgbWFzcyBzdG9yYWdlCi0gKiBvbi1kZW1hbmQgKHRoYXQgaXMsIHdoZW4gdGhlIFVTQiBjYWJsZSBpcyBjb25uZWN0ZWQpLiBJdCB1c2VzIHRoZSBhbGVydAotICogZGlhbG9nIHN0eWxlLiBJdCB3aWxsIGJlIGxhdW5jaGVkIGZyb20gYSBub3RpZmljYXRpb24uCi0gKi8KLXB1YmxpYyBjbGFzcyBVc2JTdG9yYWdlQWN0aXZpdHkgZXh0ZW5kcyBBY3Rpdml0eQotICAgICAgICBpbXBsZW1lbnRzIFZpZXcuT25DbGlja0xpc3RlbmVyLCBPbkNhbmNlbExpc3RlbmVyIHsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gIlVzYlN0b3JhZ2VBY3Rpdml0eSI7Ci0KLSAgICBwcml2YXRlIEJ1dHRvbiBtTW91bnRCdXR0b247Ci0gICAgcHJpdmF0ZSBCdXR0b24gbVVubW91bnRCdXR0b247Ci0gICAgcHJpdmF0ZSBQcm9ncmVzc0JhciBtUHJvZ3Jlc3NCYXI7Ci0gICAgcHJpdmF0ZSBUZXh0VmlldyBtQmFubmVyOwotICAgIHByaXZhdGUgVGV4dFZpZXcgbU1lc3NhZ2U7Ci0gICAgcHJpdmF0ZSBJbWFnZVZpZXcgbUljb247Ci0gICAgcHJpdmF0ZSBTdG9yYWdlTWFuYWdlciBtU3RvcmFnZU1hbmFnZXIgPSBudWxsOwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBETEdfQ09ORklSTV9LSUxMX1NUT1JBR0VfVVNFUlMgPSAxOwotICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBETEdfRVJST1JfU0hBUklORyA9IDI7Ci0gICAgc3RhdGljIGZpbmFsIGJvb2xlYW4gbG9jYWxMT0dWID0gZmFsc2U7Ci0KLSAgICAvKiogVXNlZCB0byBkZXRlY3Qgd2hlbiB0aGUgVVNCIGNhYmxlIGlzIHVucGx1Z2dlZCwgc28gd2UgY2FuIGNhbGwgZmluaXNoKCkgKi8KLSAgICBwcml2YXRlIEJyb2FkY2FzdFJlY2VpdmVyIG1CYXR0ZXJ5UmVjZWl2ZXIgPSBuZXcgQnJvYWRjYXN0UmVjZWl2ZXIoKSB7Ci0gICAgICAgIEBPdmVycmlkZQotICAgICAgICBwdWJsaWMgdm9pZCBvblJlY2VpdmUoQ29udGV4dCBjb250ZXh0LCBJbnRlbnQgaW50ZW50KSB7Ci0gICAgICAgICAgICBpZiAoaW50ZW50LmdldEFjdGlvbigpID09IEludGVudC5BQ1RJT05fQkFUVEVSWV9DSEFOR0VEKSB7Ci0gICAgICAgICAgICAgICAgaGFuZGxlQmF0dGVyeUNoYW5nZWQoaW50ZW50KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgIH07Ci0KLSAgICBwcml2YXRlIFN0b3JhZ2VFdmVudExpc3RlbmVyIG1TdG9yYWdlTGlzdGVuZXIgPSBuZXcgU3RvcmFnZUV2ZW50TGlzdGVuZXIoKSB7Ci0gICAgICAgIEBPdmVycmlkZQotICAgICAgICBwdWJsaWMgdm9pZCBvblN0b3JhZ2VTdGF0ZUNoYW5nZWQoU3RyaW5nIHBhdGgsIFN0cmluZyBvbGRTdGF0ZSwgU3RyaW5nIG5ld1N0YXRlKSB7Ci0gICAgICAgICAgICBmaW5hbCBib29sZWFuIG9uID0gbmV3U3RhdGUuZXF1YWxzKEVudmlyb25tZW50Lk1FRElBX1NIQVJFRCk7Ci0gICAgICAgICAgICBzd2l0Y2hEaXNwbGF5KG9uKTsKLSAgICAgICAgfQotICAgIH07Ci0gICAgCi0gICAgQE92ZXJyaWRlCi0gICAgcHJvdGVjdGVkIHZvaWQgb25DcmVhdGUoQnVuZGxlIHNhdmVkSW5zdGFuY2VTdGF0ZSkgewotICAgICAgICBzdXBlci5vbkNyZWF0ZShzYXZlZEluc3RhbmNlU3RhdGUpOwotCi0gICAgICAgIGlmIChtU3RvcmFnZU1hbmFnZXIgPT0gbnVsbCkgewotICAgICAgICAgICAgbVN0b3JhZ2VNYW5hZ2VyID0gKFN0b3JhZ2VNYW5hZ2VyKSBnZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuU1RPUkFHRV9TRVJWSUNFKTsKLSAgICAgICAgICAgIGlmIChtU3RvcmFnZU1hbmFnZXIgPT0gbnVsbCkgewotICAgICAgICAgICAgICAgIExvZy53KFRBRywgIkZhaWxlZCB0byBnZXQgU3RvcmFnZU1hbmFnZXIiKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIHJlcXVlc3RXaW5kb3dGZWF0dXJlKFdpbmRvdy5GRUFUVVJFX0lOREVURVJNSU5BVEVfUFJPR1JFU1MpOwotICAgICAgICBzZXRQcm9ncmVzc0JhckluZGV0ZXJtaW5hdGVWaXNpYmlsaXR5KHRydWUpOwotCi0gICAgICAgIHNldFRpdGxlKGdldFN0cmluZyhjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy51c2Jfc3RvcmFnZV9hY3Rpdml0eV90aXRsZSkpOwotCi0gICAgICAgIHNldENvbnRlbnRWaWV3KGNvbS5hbmRyb2lkLmludGVybmFsLlIubGF5b3V0LnVzYl9zdG9yYWdlX2FjdGl2aXR5KTsKLQotICAgICAgICBtSWNvbiA9IChJbWFnZVZpZXcpIGZpbmRWaWV3QnlJZChjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmlkLmljb24pOwotICAgICAgICBtQmFubmVyID0gKFRleHRWaWV3KSBmaW5kVmlld0J5SWQoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5pZC5iYW5uZXIpOwotICAgICAgICBtTWVzc2FnZSA9IChUZXh0VmlldykgZmluZFZpZXdCeUlkKGNvbS5hbmRyb2lkLmludGVybmFsLlIuaWQubWVzc2FnZSk7Ci0KLSAgICAgICAgbU1vdW50QnV0dG9uID0gKEJ1dHRvbikgZmluZFZpZXdCeUlkKGNvbS5hbmRyb2lkLmludGVybmFsLlIuaWQubW91bnRfYnV0dG9uKTsKLSAgICAgICAgbU1vdW50QnV0dG9uLnNldE9uQ2xpY2tMaXN0ZW5lcih0aGlzKTsKLSAgICAgICAgbVVubW91bnRCdXR0b24gPSAoQnV0dG9uKSBmaW5kVmlld0J5SWQoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5pZC51bm1vdW50X2J1dHRvbik7Ci0gICAgICAgIG1Vbm1vdW50QnV0dG9uLnNldE9uQ2xpY2tMaXN0ZW5lcih0aGlzKTsKLSAgICAgICAgbVByb2dyZXNzQmFyID0gKFByb2dyZXNzQmFyKSBmaW5kVmlld0J5SWQoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5pZC5wcm9ncmVzcyk7Ci0gICAgfQotCi0gICAgcHJpdmF0ZSB2b2lkIHN3aXRjaERpc3BsYXkoYm9vbGVhbiB1c2JTdG9yYWdlSW5Vc2UpIHsKLSAgICAgICAgaWYgKHVzYlN0b3JhZ2VJblVzZSkgewotICAgICAgICAgICAgbVByb2dyZXNzQmFyLnNldFZpc2liaWxpdHkoVmlldy5HT05FKTsKLSAgICAgICAgICAgIG1Vbm1vdW50QnV0dG9uLnNldFZpc2liaWxpdHkoVmlldy5WSVNJQkxFKTsKLSAgICAgICAgICAgIG1Nb3VudEJ1dHRvbi5zZXRWaXNpYmlsaXR5KFZpZXcuR09ORSk7Ci0gICAgICAgICAgICBtSWNvbi5zZXRJbWFnZVJlc291cmNlKGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUudXNiX2FuZHJvaWRfY29ubmVjdGVkKTsKLSAgICAgICAgICAgIG1CYW5uZXIuc2V0VGV4dChjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy51c2Jfc3RvcmFnZV9zdG9wX3RpdGxlKTsKLSAgICAgICAgICAgIG1NZXNzYWdlLnNldFRleHQoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcudXNiX3N0b3JhZ2Vfc3RvcF9tZXNzYWdlKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIG1Qcm9ncmVzc0Jhci5zZXRWaXNpYmlsaXR5KFZpZXcuR09ORSk7Ci0gICAgICAgICAgICBtVW5tb3VudEJ1dHRvbi5zZXRWaXNpYmlsaXR5KFZpZXcuR09ORSk7Ci0gICAgICAgICAgICBtTW91bnRCdXR0b24uc2V0VmlzaWJpbGl0eShWaWV3LlZJU0lCTEUpOwotICAgICAgICAgICAgbUljb24uc2V0SW1hZ2VSZXNvdXJjZShjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnVzYl9hbmRyb2lkKTsKLSAgICAgICAgICAgIG1CYW5uZXIuc2V0VGV4dChjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy51c2Jfc3RvcmFnZV90aXRsZSk7Ci0gICAgICAgICAgICBtTWVzc2FnZS5zZXRUZXh0KGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLnVzYl9zdG9yYWdlX21lc3NhZ2UpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgQE92ZXJyaWRlCi0gICAgcHJvdGVjdGVkIHZvaWQgb25SZXN1bWUoKSB7Ci0gICAgICAgIHN1cGVyLm9uUmVzdW1lKCk7Ci0KLSAgICAgICAgbVN0b3JhZ2VNYW5hZ2VyLnJlZ2lzdGVyTGlzdGVuZXIobVN0b3JhZ2VMaXN0ZW5lcik7Ci0gICAgICAgIHJlZ2lzdGVyUmVjZWl2ZXIobUJhdHRlcnlSZWNlaXZlciwgbmV3IEludGVudEZpbHRlcihJbnRlbnQuQUNUSU9OX0JBVFRFUllfQ0hBTkdFRCkpOwotICAgICAgICB0cnkgewotICAgICAgICAgICAgc3dpdGNoRGlzcGxheShtU3RvcmFnZU1hbmFnZXIuaXNVc2JNYXNzU3RvcmFnZUVuYWJsZWQoKSk7Ci0gICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgewotICAgICAgICAgICAgTG9nLmUoVEFHLCAiRmFpbGVkIHRvIHJlYWQgVU1TIGVuYWJsZSBzdGF0ZSIsIGV4KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHByb3RlY3RlZCB2b2lkIG9uUGF1c2UoKSB7Ci0gICAgICAgIHN1cGVyLm9uUGF1c2UoKTsKLSAgICAgICAgCi0gICAgICAgIHVucmVnaXN0ZXJSZWNlaXZlcihtQmF0dGVyeVJlY2VpdmVyKTsKLSAgICAgICAgaWYgKG1TdG9yYWdlTWFuYWdlciA9PSBudWxsICYmIG1TdG9yYWdlTGlzdGVuZXIgIT0gbnVsbCkgewotICAgICAgICAgICAgbVN0b3JhZ2VNYW5hZ2VyLnVucmVnaXN0ZXJMaXN0ZW5lcihtU3RvcmFnZUxpc3RlbmVyKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHByaXZhdGUgdm9pZCBoYW5kbGVCYXR0ZXJ5Q2hhbmdlZChJbnRlbnQgaW50ZW50KSB7Ci0gICAgICAgIGludCBwbHVnZ2VkVHlwZSA9IGludGVudC5nZXRJbnRFeHRyYSgicGx1Z2dlZCIsIDApOwotICAgICAgICBpZiAocGx1Z2dlZFR5cGUgPT0gMCkgewotICAgICAgICAgICAgLy8gSXQgd2FzIGRpc2Nvbm5lY3RlZCBmcm9tIHRoZSBwbHVnLCBzbyBmaW5pc2gKLSAgICAgICAgICAgIGZpbmlzaCgpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBJTW91bnRTZXJ2aWNlIGdldE1vdW50U2VydmljZSgpIHsKLSAgICAgICAgSUJpbmRlciBzZXJ2aWNlID0gU2VydmljZU1hbmFnZXIuZ2V0U2VydmljZSgibW91bnQiKTsKLSAgICAgICAgaWYgKHNlcnZpY2UgIT0gbnVsbCkgewotICAgICAgICAgICAgcmV0dXJuIElNb3VudFNlcnZpY2UuU3R1Yi5hc0ludGVyZmFjZShzZXJ2aWNlKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm4gbnVsbDsKLSAgICB9Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwdWJsaWMgRGlhbG9nIG9uQ3JlYXRlRGlhbG9nKGludCBpZCwgQnVuZGxlIGFyZ3MpIHsKLSAgICAgICAgc3dpdGNoIChpZCkgewotICAgICAgICBjYXNlIERMR19DT05GSVJNX0tJTExfU1RPUkFHRV9VU0VSUzoKLSAgICAgICAgICAgIHJldHVybiBuZXcgQWxlcnREaWFsb2cuQnVpbGRlcih0aGlzKQotICAgICAgICAgICAgICAgICAgICAuc2V0VGl0bGUoUi5zdHJpbmcuZGxnX2NvbmZpcm1fa2lsbF9zdG9yYWdlX3VzZXJzX3RpdGxlKQotICAgICAgICAgICAgICAgICAgICAuc2V0UG9zaXRpdmVCdXR0b24oUi5zdHJpbmcuZGxnX29rLCBuZXcgRGlhbG9nSW50ZXJmYWNlLk9uQ2xpY2tMaXN0ZW5lcigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIG9uQ2xpY2soRGlhbG9nSW50ZXJmYWNlIGRpYWxvZywgaW50IHdoaWNoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoVXNiTWFzc1N0b3JhZ2VBc3luYyh0cnVlKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH19KQotICAgICAgICAgICAgICAgICAgICAuc2V0TmVnYXRpdmVCdXR0b24oUi5zdHJpbmcuY2FuY2VsLCBudWxsKQotICAgICAgICAgICAgICAgICAgICAuc2V0TWVzc2FnZShSLnN0cmluZy5kbGdfY29uZmlybV9raWxsX3N0b3JhZ2VfdXNlcnNfdGV4dCkKLSAgICAgICAgICAgICAgICAgICAgLnNldE9uQ2FuY2VsTGlzdGVuZXIodGhpcykKLSAgICAgICAgICAgICAgICAgICAgLmNyZWF0ZSgpOwotICAgICAgICBjYXNlIERMR19FUlJPUl9TSEFSSU5HOgotICAgICAgICAgICAgcmV0dXJuIG5ldyBBbGVydERpYWxvZy5CdWlsZGVyKHRoaXMpCi0gICAgICAgICAgICAgICAgICAgIC5zZXRUaXRsZShSLnN0cmluZy5kbGdfZXJyb3JfdGl0bGUpCi0gICAgICAgICAgICAgICAgICAgIC5zZXROZXV0cmFsQnV0dG9uKFIuc3RyaW5nLmRsZ19vaywgbnVsbCkKLSAgICAgICAgICAgICAgICAgICAgLnNldE1lc3NhZ2UoUi5zdHJpbmcudXNiX3N0b3JhZ2VfZXJyb3JfbWVzc2FnZSkKLSAgICAgICAgICAgICAgICAgICAgLnNldE9uQ2FuY2VsTGlzdGVuZXIodGhpcykKLSAgICAgICAgICAgICAgICAgICAgLmNyZWF0ZSgpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBudWxsOwotICAgIH0KLQotICAgIHByaXZhdGUgdm9pZCBzaG93RGlhbG9nSW5uZXIoaW50IGlkKSB7Ci0gICAgICAgIHJlbW92ZURpYWxvZyhpZCk7Ci0gICAgICAgIHNob3dEaWFsb2coaWQpOwotICAgIH0KLQotICAgIHByaXZhdGUgdm9pZCBzd2l0Y2hVc2JNYXNzU3RvcmFnZUFzeW5jKGJvb2xlYW4gb24pIHsKLSAgICAgICAgbVVubW91bnRCdXR0b24uc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOwotICAgICAgICBtTW91bnRCdXR0b24uc2V0VmlzaWJpbGl0eShWaWV3LkdPTkUpOwotCi0gICAgICAgIG1Qcm9ncmVzc0Jhci5zZXRWaXNpYmlsaXR5KFZpZXcuVklTSUJMRSk7Ci0gICAgICAgIC8vIHdpbGwgYmUgaGlkZGVuIG9uY2UgVVNCIG1hc3Mgc3RvcmFnZSBraWNrcyBpbiAob3IgZmFpbHMpCi0gICAgICAgIAotICAgICAgICBmaW5hbCBib29sZWFuIF9vbiA9IG9uOwotICAgICAgICBuZXcgVGhyZWFkKCkgewotICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgewotICAgICAgICAgICAgICAgIGlmIChfb24pIHsKLSAgICAgICAgICAgICAgICAgICAgbVN0b3JhZ2VNYW5hZ2VyLmVuYWJsZVVzYk1hc3NTdG9yYWdlKCk7Ci0gICAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAgICAgbVN0b3JhZ2VNYW5hZ2VyLmRpc2FibGVVc2JNYXNzU3RvcmFnZSgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfS5zdGFydCgpOwotICAgIH0KLQotICAgIHByaXZhdGUgdm9pZCBjaGVja1N0b3JhZ2VVc2VycygpIHsKLSAgICAgICAgSU1vdW50U2VydmljZSBpbXMgPSBnZXRNb3VudFNlcnZpY2UoKTsKLSAgICAgICAgaWYgKGltcyA9PSBudWxsKSB7Ci0gICAgICAgICAgICAvLyBEaXNwbGF5IGVycm9yIGRpYWxvZwotICAgICAgICAgICAgc2hvd0RpYWxvZ0lubmVyKERMR19FUlJPUl9TSEFSSU5HKTsKLSAgICAgICAgfQotICAgICAgICBTdHJpbmcgZXh0U3RvcmFnZVBhdGggPSBFbnZpcm9ubWVudC5nZXRFeHRlcm5hbFN0b3JhZ2VEaXJlY3RvcnkoKS50b1N0cmluZygpOwotICAgICAgICBib29sZWFuIHNob3dEaWFsb2cgPSBmYWxzZTsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIGludFtdIHN0VXNlcnMgPSBpbXMuZ2V0U3RvcmFnZVVzZXJzKGV4dFN0b3JhZ2VQYXRoKTsKLSAgICAgICAgICAgIGlmIChzdFVzZXJzICE9IG51bGwgJiYgc3RVc2Vycy5sZW5ndGggPiAwKSB7Ci0gICAgICAgICAgICAgICAgc2hvd0RpYWxvZyA9IHRydWU7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIC8vIExpc3Qgb2YgYXBwbGljYXRpb25zIG9uIHNkY2FyZC4KLSAgICAgICAgICAgICAgICBBY3Rpdml0eU1hbmFnZXIgYW0gPSAoQWN0aXZpdHlNYW5hZ2VyKWdldFN5c3RlbVNlcnZpY2UoQ29udGV4dC5BQ1RJVklUWV9TRVJWSUNFKTsKLSAgICAgICAgICAgICAgICBMaXN0PEFwcGxpY2F0aW9uSW5mbz4gaW5mb0xpc3QgPSBhbS5nZXRSdW5uaW5nRXh0ZXJuYWxBcHBsaWNhdGlvbnMoKTsKLSAgICAgICAgICAgICAgICBpZiAoaW5mb0xpc3QgIT0gbnVsbCAmJiBpbmZvTGlzdC5zaXplKCkgPiAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIHNob3dEaWFsb2cgPSB0cnVlOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKLSAgICAgICAgICAgIC8vIERpc3BsYXkgZXJyb3IgZGlhbG9nCi0gICAgICAgICAgICBzaG93RGlhbG9nSW5uZXIoRExHX0VSUk9SX1NIQVJJTkcpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChzaG93RGlhbG9nKSB7Ci0gICAgICAgICAgICAvLyBEaXNwbGF5IGRpYWxvZyB0byB1c2VyCi0gICAgICAgICAgICBzaG93RGlhbG9nSW5uZXIoRExHX0NPTkZJUk1fS0lMTF9TVE9SQUdFX1VTRVJTKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChsb2NhbExPR1YpIExvZy5pKFRBRywgIkVuYWJsaW5nIFVNUyIpOwotICAgICAgICAgICAgc3dpdGNoVXNiTWFzc1N0b3JhZ2VBc3luYyh0cnVlKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIG9uQ2xpY2soVmlldyB2KSB7Ci0gICAgICAgIGlmICh2ID09IG1Nb3VudEJ1dHRvbikgewotICAgICAgICAgICAvLyBDaGVjayBmb3IgbGlzdCBvZiBzdG9yYWdlIHVzZXJzIGFuZCBkaXNwbGF5IGRpYWxvZyBpZiBuZWVkZWQuCi0gICAgICAgICAgICBjaGVja1N0b3JhZ2VVc2VycygpOwotICAgICAgICB9IGVsc2UgaWYgKHYgPT0gbVVubW91bnRCdXR0b24pIHsKLSAgICAgICAgICAgIGlmIChsb2NhbExPR1YpIExvZy5pKFRBRywgIkRpc2FibGluZyBVTVMiKTsKLSAgICAgICAgICAgIHN3aXRjaFVzYk1hc3NTdG9yYWdlQXN5bmMoZmFsc2UpOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgb25DYW5jZWwoRGlhbG9nSW50ZXJmYWNlIGRpYWxvZykgewotICAgICAgICBmaW5pc2goKTsKLSAgICB9Ci0KLX0KZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2puaS9BbmRyb2lkLm1rIGIvc2VydmljZXMvam5pL0FuZHJvaWQubWsKaW5kZXggOWQyNzYwZS4uMGNmMzZiMyAxMDA2NDQKLS0tIGEvc2VydmljZXMvam5pL0FuZHJvaWQubWsKKysrIGIvc2VydmljZXMvam5pL0FuZHJvaWQubWsKQEAgLTQsMTcgKzQsMjAgQEAKIExPQ0FMX1NSQ19GSUxFUzo9IFwKICAgICBjb21fYW5kcm9pZF9zZXJ2ZXJfQWxhcm1NYW5hZ2VyU2VydmljZS5jcHAgXAogICAgIGNvbV9hbmRyb2lkX3NlcnZlcl9CYXR0ZXJ5U2VydmljZS5jcHAgXAotICAgIGNvbV9hbmRyb2lkX3NlcnZlcl9LZXlJbnB1dFF1ZXVlLmNwcCBcCisgICAgY29tX2FuZHJvaWRfc2VydmVyX0lucHV0TWFuYWdlci5jcHAgXAogICAgIGNvbV9hbmRyb2lkX3NlcnZlcl9MaWdodHNTZXJ2aWNlLmNwcCBcCisgICAgY29tX2FuZHJvaWRfc2VydmVyX1Bvd2VyTWFuYWdlclNlcnZpY2UuY3BwIFwKICAgICBjb21fYW5kcm9pZF9zZXJ2ZXJfU2Vuc29yU2VydmljZS5jcHAgXAogICAgIGNvbV9hbmRyb2lkX3NlcnZlcl9TeXN0ZW1TZXJ2ZXIuY3BwIFwKICAgICBjb21fYW5kcm9pZF9zZXJ2ZXJfVmlicmF0b3JTZXJ2aWNlLmNwcCBcCisJY29tX2FuZHJvaWRfc2VydmVyX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXIuY3BwIFwKICAgICBvbmxvYWQuY3BwCiAKIExPQ0FMX0NfSU5DTFVERVMgKz0gXAogCSQoSk5JX0hfSU5DTFVERSkKIAogTE9DQUxfU0hBUkVEX0xJQlJBUklFUyA6PSBcCisgICAgbGliYW5kcm9pZF9ydW50aW1lIFwKIAlsaWJjdXRpbHMgXAogCWxpYmhhcmR3YXJlIFwKIAlsaWJoYXJkd2FyZV9sZWdhY3kgXApkaWZmIC0tZ2l0IGEvc2VydmljZXMvam5pL2NvbV9hbmRyb2lkX3NlcnZlcl9JbnB1dE1hbmFnZXIuY3BwIGIvc2VydmljZXMvam5pL2NvbV9hbmRyb2lkX3NlcnZlcl9JbnB1dE1hbmFnZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjOTAxZjQKLS0tIC9kZXYvbnVsbAorKysgYi9zZXJ2aWNlcy9qbmkvY29tX2FuZHJvaWRfc2VydmVyX0lucHV0TWFuYWdlci5jcHAKQEAgLTAsMCArMSwyMjI0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2RlZmluZSBMT0dfVEFHICJJbnB1dE1hbmFnZXItSk5JIgorCisvLyNkZWZpbmUgTE9HX05ERUJVRyAwCisKKy8vIExvZyBkZWJ1ZyBtZXNzYWdlcyBhYm91dCBJbnB1dFJlYWRlclBvbGljeQorI2RlZmluZSBERUJVR19JTlBVVF9SRUFERVJfUE9MSUNZIDAKKworLy8gTG9nIGRlYnVnIG1lc3NhZ2VzIGFib3V0IElucHV0RGlzcGF0Y2hlclBvbGljeQorI2RlZmluZSBERUJVR19JTlBVVF9ESVNQQVRDSEVSX1BPTElDWSAwCisKKy8vIExvZyBkZWJ1ZyBtZXNzYWdlcyBhYm91dCBpbnB1dCBmb2N1cyB0cmFja2luZworI2RlZmluZSBERUJVR19GT0NVUyAwCisKKyNpbmNsdWRlICJKTklIZWxwLmgiCisjaW5jbHVkZSAiam5pLmgiCisjaW5jbHVkZSA8bGltaXRzLmg+CisjaW5jbHVkZSA8YW5kcm9pZF9ydW50aW1lL0FuZHJvaWRSdW50aW1lLmg+CisjaW5jbHVkZSA8dWkvSW5wdXRSZWFkZXIuaD4KKyNpbmNsdWRlIDx1aS9JbnB1dERpc3BhdGNoZXIuaD4KKyNpbmNsdWRlIDx1aS9JbnB1dE1hbmFnZXIuaD4KKyNpbmNsdWRlIDx1aS9JbnB1dFRyYW5zcG9ydC5oPgorI2luY2x1ZGUgPHV0aWxzL0xvZy5oPgorI2luY2x1ZGUgPHV0aWxzL3RocmVhZHMuaD4KKyNpbmNsdWRlICIuLi8uLi9jb3JlL2puaS9hbmRyb2lkX3ZpZXdfS2V5RXZlbnQuaCIKKyNpbmNsdWRlICIuLi8uLi9jb3JlL2puaS9hbmRyb2lkX3ZpZXdfTW90aW9uRXZlbnQuaCIKKyNpbmNsdWRlICIuLi8uLi9jb3JlL2puaS9hbmRyb2lkX3ZpZXdfSW5wdXRDaGFubmVsLmgiCisjaW5jbHVkZSAiY29tX2FuZHJvaWRfc2VydmVyX1Bvd2VyTWFuYWdlclNlcnZpY2UuaCIKKworbmFtZXNwYWNlIGFuZHJvaWQgeworCisvLyBXaW5kb3cgZmxhZ3MgZnJvbSBXaW5kb3dNYW5hZ2VyLkxheW91dFBhcmFtcworZW51bSB7CisgICAgRkxBR19BTExPV19MT0NLX1dISUxFX1NDUkVFTl9PTiAgICAgPSAweDAwMDAwMDAxLAorICAgIEZMQUdfRElNX0JFSElORCAgICAgICAgPSAweDAwMDAwMDAyLAorICAgIEZMQUdfQkxVUl9CRUhJTkQgICAgICAgID0gMHgwMDAwMDAwNCwKKyAgICBGTEFHX05PVF9GT0NVU0FCTEUgICAgICA9IDB4MDAwMDAwMDgsCisgICAgRkxBR19OT1RfVE9VQ0hBQkxFICAgICAgPSAweDAwMDAwMDEwLAorICAgIEZMQUdfTk9UX1RPVUNIX01PREFMICAgID0gMHgwMDAwMDAyMCwKKyAgICBGTEFHX1RPVUNIQUJMRV9XSEVOX1dBS0lORyA9IDB4MDAwMDAwNDAsCisgICAgRkxBR19LRUVQX1NDUkVFTl9PTiAgICAgPSAweDAwMDAwMDgwLAorICAgIEZMQUdfTEFZT1VUX0lOX1NDUkVFTiAgID0gMHgwMDAwMDEwMCwKKyAgICBGTEFHX0xBWU9VVF9OT19MSU1JVFMgICA9IDB4MDAwMDAyMDAsCisgICAgRkxBR19GVUxMU0NSRUVOICAgICAgPSAweDAwMDAwNDAwLAorICAgIEZMQUdfRk9SQ0VfTk9UX0ZVTExTQ1JFRU4gICA9IDB4MDAwMDA4MDAsCisgICAgRkxBR19ESVRIRVIgICAgICAgICAgICAgPSAweDAwMDAxMDAwLAorICAgIEZMQUdfU0VDVVJFICAgICAgICAgICAgID0gMHgwMDAwMjAwMCwKKyAgICBGTEFHX1NDQUxFRCAgICAgICAgICAgICA9IDB4MDAwMDQwMDAsCisgICAgRkxBR19JR05PUkVfQ0hFRUtfUFJFU1NFUyAgICA9IDB4MDAwMDgwMDAsCisgICAgRkxBR19MQVlPVVRfSU5TRVRfREVDT1IgPSAweDAwMDEwMDAwLAorICAgIEZMQUdfQUxUX0ZPQ1VTQUJMRV9JTSA9IDB4MDAwMjAwMDAsCisgICAgRkxBR19XQVRDSF9PVVRTSURFX1RPVUNIID0gMHgwMDA0MDAwMCwKKyAgICBGTEFHX1NIT1dfV0hFTl9MT0NLRUQgPSAweDAwMDgwMDAwLAorICAgIEZMQUdfU0hPV19XQUxMUEFQRVIgPSAweDAwMTAwMDAwLAorICAgIEZMQUdfVFVSTl9TQ1JFRU5fT04gPSAweDAwMjAwMDAwLAorICAgIEZMQUdfRElTTUlTU19LRVlHVUFSRCA9IDB4MDA0MDAwMDAsCisgICAgRkxBR19JTU1FUlNJVkUgPSAweDAwODAwMDAwLAorICAgIEZMQUdfS0VFUF9TVVJGQUNFX1dISUxFX0FOSU1BVElORyA9IDB4MTAwMDAwMDAsCisgICAgRkxBR19DT01QQVRJQkxFX1dJTkRPVyA9IDB4MjAwMDAwMDAsCisgICAgRkxBR19TWVNURU1fRVJST1IgPSAweDQwMDAwMDAwLAorfTsKKworLy8gV2luZG93IHR5cGVzIGZyb20gV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMKK2VudW0geworICAgIEZJUlNUX0FQUExJQ0FUSU9OX1dJTkRPVyA9IDEsCisgICAgVFlQRV9CQVNFX0FQUExJQ0FUSU9OICAgPSAxLAorICAgIFRZUEVfQVBQTElDQVRJT04gICAgICAgID0gMiwKKyAgICBUWVBFX0FQUExJQ0FUSU9OX1NUQVJUSU5HID0gMywKKyAgICBMQVNUX0FQUExJQ0FUSU9OX1dJTkRPVyA9IDk5LAorICAgIEZJUlNUX1NVQl9XSU5ET1cgICAgICAgID0gMTAwMCwKKyAgICBUWVBFX0FQUExJQ0FUSU9OX1BBTkVMICA9IEZJUlNUX1NVQl9XSU5ET1csCisgICAgVFlQRV9BUFBMSUNBVElPTl9NRURJQSAgPSBGSVJTVF9TVUJfV0lORE9XKzEsCisgICAgVFlQRV9BUFBMSUNBVElPTl9TVUJfUEFORUwgPSBGSVJTVF9TVUJfV0lORE9XKzIsCisgICAgVFlQRV9BUFBMSUNBVElPTl9BVFRBQ0hFRF9ESUFMT0cgPSBGSVJTVF9TVUJfV0lORE9XKzMsCisgICAgVFlQRV9BUFBMSUNBVElPTl9NRURJQV9PVkVSTEFZICA9IEZJUlNUX1NVQl9XSU5ET1crNCwKKyAgICBMQVNUX1NVQl9XSU5ET1cgICAgICAgICA9IDE5OTksCisgICAgRklSU1RfU1lTVEVNX1dJTkRPVyAgICAgPSAyMDAwLAorICAgIFRZUEVfU1RBVFVTX0JBUiAgICAgICAgID0gRklSU1RfU1lTVEVNX1dJTkRPVywKKyAgICBUWVBFX1NFQVJDSF9CQVIgICAgICAgICA9IEZJUlNUX1NZU1RFTV9XSU5ET1crMSwKKyAgICBUWVBFX1BIT05FICAgICAgICAgICAgICA9IEZJUlNUX1NZU1RFTV9XSU5ET1crMiwKKyAgICBUWVBFX1NZU1RFTV9BTEVSVCAgICAgICA9IEZJUlNUX1NZU1RFTV9XSU5ET1crMywKKyAgICBUWVBFX0tFWUdVQVJEICAgICAgICAgICA9IEZJUlNUX1NZU1RFTV9XSU5ET1crNCwKKyAgICBUWVBFX1RPQVNUICAgICAgICAgICAgICA9IEZJUlNUX1NZU1RFTV9XSU5ET1crNSwKKyAgICBUWVBFX1NZU1RFTV9PVkVSTEFZICAgICA9IEZJUlNUX1NZU1RFTV9XSU5ET1crNiwKKyAgICBUWVBFX1BSSU9SSVRZX1BIT05FICAgICA9IEZJUlNUX1NZU1RFTV9XSU5ET1crNywKKyAgICBUWVBFX1NZU1RFTV9ESUFMT0cgICAgICA9IEZJUlNUX1NZU1RFTV9XSU5ET1crOCwKKyAgICBUWVBFX0tFWUdVQVJEX0RJQUxPRyAgICA9IEZJUlNUX1NZU1RFTV9XSU5ET1crOSwKKyAgICBUWVBFX1NZU1RFTV9FUlJPUiAgICAgICA9IEZJUlNUX1NZU1RFTV9XSU5ET1crMTAsCisgICAgVFlQRV9JTlBVVF9NRVRIT0QgICAgICAgPSBGSVJTVF9TWVNURU1fV0lORE9XKzExLAorICAgIFRZUEVfSU5QVVRfTUVUSE9EX0RJQUxPRz0gRklSU1RfU1lTVEVNX1dJTkRPVysxMiwKKyAgICBUWVBFX1dBTExQQVBFUiAgICAgICAgICA9IEZJUlNUX1NZU1RFTV9XSU5ET1crMTMsCisgICAgVFlQRV9TVEFUVVNfQkFSX1BBTkVMICAgPSBGSVJTVF9TWVNURU1fV0lORE9XKzE0LAorICAgIExBU1RfU1lTVEVNX1dJTkRPVyAgICAgID0gMjk5OSwKK307CisKKy8vIERlbGF5IGJldHdlZW4gcmVwb3J0aW5nIGxvbmcgdG91Y2ggZXZlbnRzIHRvIHRoZSBwb3dlciBtYW5hZ2VyLgorY29uc3QgbnNlY3NfdCBFVkVOVF9JR05PUkVfRFVSQVRJT04gPSAzMDAgKiAxMDAwMDAwTEw7IC8vIDMwMCBtcworCisvLyBEZWZhdWx0IGlucHV0IGRpc3BhdGNoaW5nIHRpbWVvdXQgaWYgdGhlcmUgaXMgbm8gZm9jdXNlZCBhcHBsaWNhdGlvbiBvciBwYXVzZWQgd2luZG93CisvLyBmcm9tIHdoaWNoIHRvIGRldGVybWluZSBhbiBhcHByb3ByaWF0ZSBkaXNwYXRjaGluZyB0aW1lb3V0LgorY29uc3QgbnNlY3NfdCBERUZBVUxUX0lOUFVUX0RJU1BBVENISU5HX1RJTUVPVVQgPSA1MDAwICogMTAwMDAwMExMOyAvLyA1IHNlYworCisvLyBNaW5pbXVtIGFtb3VudCBvZiB0aW1lIHRvIHByb3ZpZGUgdG8gdGhlIGlucHV0IGRpc3BhdGNoZXIgZm9yIGRlbGl2ZXJ5IG9mIGFuIGV2ZW50CisvLyByZWdhcmRsZXNzIG9mIGhvdyBsb25nIHRoZSBhcHBsaWNhdGlvbiB3aW5kb3cgd2FzIHBhdXNlZC4KK2NvbnN0IG5zZWNzX3QgTUlOX0lOUFVUX0RJU1BBVENISU5HX1RJTUVPVVQgPSAxMDAwICogMTAwMDAwMExMOyAvLyAxIHNlYworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3N0YXRpYyBzdHJ1Y3QgeworICAgIGpjbGFzcyBjbGF6ejsKKworICAgIGptZXRob2RJRCBub3RpZnlDb25maWd1cmF0aW9uQ2hhbmdlZDsKKyAgICBqbWV0aG9kSUQgbm90aWZ5TGlkU3dpdGNoQ2hhbmdlZDsKKyAgICBqbWV0aG9kSUQgbm90aWZ5SW5wdXRDaGFubmVsQnJva2VuOworICAgIGptZXRob2RJRCBub3RpZnlJbnB1dENoYW5uZWxBTlI7CisgICAgam1ldGhvZElEIG5vdGlmeUlucHV0Q2hhbm5lbFJlY292ZXJlZEZyb21BTlI7CisgICAgam1ldGhvZElEIG5vdGlmeUFOUjsKKyAgICBqbWV0aG9kSUQgdmlydHVhbEtleURvd25GZWVkYmFjazsKKyAgICBqbWV0aG9kSUQgaW50ZXJjZXB0S2V5QmVmb3JlUXVldWVpbmc7CisgICAgam1ldGhvZElEIGludGVyY2VwdEtleUJlZm9yZURpc3BhdGNoaW5nOworICAgIGptZXRob2RJRCBjaGVja0luamVjdEV2ZW50c1Blcm1pc3Npb247CisgICAgam1ldGhvZElEIG5vdGlmeUFwcFN3aXRjaENvbWluZzsKKyAgICBqbWV0aG9kSUQgZmlsdGVyVG91Y2hFdmVudHM7CisgICAgam1ldGhvZElEIGZpbHRlckp1bXB5VG91Y2hFdmVudHM7CisgICAgam1ldGhvZElEIGdldFZpcnR1YWxLZXlEZWZpbml0aW9uczsKKyAgICBqbWV0aG9kSUQgZ2V0RXhjbHVkZWREZXZpY2VOYW1lczsKK30gZ0NhbGxiYWNrc0NsYXNzSW5mbzsKKworc3RhdGljIHN0cnVjdCB7CisgICAgamNsYXNzIGNsYXp6OworCisgICAgamZpZWxkSUQgc2NhbkNvZGU7CisgICAgamZpZWxkSUQgY2VudGVyWDsKKyAgICBqZmllbGRJRCBjZW50ZXJZOworICAgIGpmaWVsZElEIHdpZHRoOworICAgIGpmaWVsZElEIGhlaWdodDsKK30gZ1ZpcnR1YWxLZXlEZWZpbml0aW9uQ2xhc3NJbmZvOworCitzdGF0aWMgc3RydWN0IHsKKyAgICBqY2xhc3MgY2xheno7CisKKyAgICBqZmllbGRJRCBpbnB1dENoYW5uZWw7CisgICAgamZpZWxkSUQgbGF5b3V0UGFyYW1zRmxhZ3M7CisgICAgamZpZWxkSUQgbGF5b3V0UGFyYW1zVHlwZTsKKyAgICBqZmllbGRJRCBkaXNwYXRjaGluZ1RpbWVvdXROYW5vczsKKyAgICBqZmllbGRJRCBmcmFtZUxlZnQ7CisgICAgamZpZWxkSUQgZnJhbWVUb3A7CisgICAgamZpZWxkSUQgdG91Y2hhYmxlQXJlYUxlZnQ7CisgICAgamZpZWxkSUQgdG91Y2hhYmxlQXJlYVRvcDsKKyAgICBqZmllbGRJRCB0b3VjaGFibGVBcmVhUmlnaHQ7CisgICAgamZpZWxkSUQgdG91Y2hhYmxlQXJlYUJvdHRvbTsKKyAgICBqZmllbGRJRCB2aXNpYmxlOworICAgIGpmaWVsZElEIGhhc0ZvY3VzOworICAgIGpmaWVsZElEIGhhc1dhbGxwYXBlcjsKKyAgICBqZmllbGRJRCBwYXVzZWQ7CisgICAgamZpZWxkSUQgb3duZXJQaWQ7CisgICAgamZpZWxkSUQgb3duZXJVaWQ7Cit9IGdJbnB1dFdpbmRvd0NsYXNzSW5mbzsKKworc3RhdGljIHN0cnVjdCB7CisgICAgamNsYXNzIGNsYXp6OworCisgICAgamZpZWxkSUQgbmFtZTsKKyAgICBqZmllbGRJRCBkaXNwYXRjaGluZ1RpbWVvdXROYW5vczsKKyAgICBqZmllbGRJRCB0b2tlbjsKK30gZ0lucHV0QXBwbGljYXRpb25DbGFzc0luZm87CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworc3RhdGljIGlubGluZSBuc2Vjc190IG5vdygpIHsKKyAgICByZXR1cm4gc3lzdGVtVGltZShTWVNURU1fVElNRV9NT05PVE9OSUMpOworfQorCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2NsYXNzIE5hdGl2ZUlucHV0TWFuYWdlciA6IHB1YmxpYyB2aXJ0dWFsIFJlZkJhc2UsCisgICAgcHVibGljIHZpcnR1YWwgSW5wdXRSZWFkZXJQb2xpY3lJbnRlcmZhY2UsCisgICAgcHVibGljIHZpcnR1YWwgSW5wdXREaXNwYXRjaGVyUG9saWN5SW50ZXJmYWNlIHsKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFsIH5OYXRpdmVJbnB1dE1hbmFnZXIoKTsKKworcHVibGljOgorICAgIE5hdGl2ZUlucHV0TWFuYWdlcihqb2JqZWN0IGNhbGxiYWNrc09iaik7CisKKyAgICBpbmxpbmUgc3A8SW5wdXRNYW5hZ2VyPiBnZXRJbnB1dE1hbmFnZXIoKSBjb25zdCB7IHJldHVybiBtSW5wdXRNYW5hZ2VyOyB9CisKKyAgICB2b2lkIHNldERpc3BsYXlTaXplKGludDMyX3QgZGlzcGxheUlkLCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCk7CisgICAgdm9pZCBzZXREaXNwbGF5T3JpZW50YXRpb24oaW50MzJfdCBkaXNwbGF5SWQsIGludDMyX3Qgb3JpZW50YXRpb24pOworCisgICAgc3RhdHVzX3QgcmVnaXN0ZXJJbnB1dENoYW5uZWwoSk5JRW52KiBlbnYsIGNvbnN0IHNwPElucHV0Q2hhbm5lbD4mIGlucHV0Q2hhbm5lbCwKKyAgICAgICAgICAgIGp3ZWFrIGlucHV0Q2hhbm5lbE9ialdlYWspOworICAgIHN0YXR1c190IHVucmVnaXN0ZXJJbnB1dENoYW5uZWwoSk5JRW52KiBlbnYsIGNvbnN0IHNwPElucHV0Q2hhbm5lbD4mIGlucHV0Q2hhbm5lbCk7CisKKyAgICB2b2lkIHNldElucHV0V2luZG93cyhKTklFbnYqIGVudiwgam9iamVjdEFycmF5IHdpbmRvd09iakFycmF5KTsKKyAgICB2b2lkIHNldEZvY3VzZWRBcHBsaWNhdGlvbihKTklFbnYqIGVudiwgam9iamVjdCBhcHBsaWNhdGlvbk9iaik7CisgICAgdm9pZCBzZXRJbnB1dERpc3BhdGNoTW9kZShib29sIGVuYWJsZWQsIGJvb2wgZnJvemVuKTsKKyAgICB2b2lkIHByZWVtcHRJbnB1dERpc3BhdGNoKCk7CisKKyAgICAvKiAtLS0gSW5wdXRSZWFkZXJQb2xpY3lJbnRlcmZhY2UgaW1wbGVtZW50YXRpb24gLS0tICovCisKKyAgICB2aXJ0dWFsIGJvb2wgZ2V0RGlzcGxheUluZm8oaW50MzJfdCBkaXNwbGF5SWQsCisgICAgICAgICAgICBpbnQzMl90KiB3aWR0aCwgaW50MzJfdCogaGVpZ2h0LCBpbnQzMl90KiBvcmllbnRhdGlvbik7CisgICAgdmlydHVhbCB2b2lkIHZpcnR1YWxLZXlEb3duRmVlZGJhY2soKTsKKyAgICB2aXJ0dWFsIGludDMyX3QgaW50ZXJjZXB0S2V5KG5zZWNzX3Qgd2hlbiwgaW50MzJfdCBkZXZpY2VJZCwKKyAgICAgICAgICAgIGJvb2wgZG93biwgaW50MzJfdCBrZXlDb2RlLCBpbnQzMl90IHNjYW5Db2RlLCB1aW50MzJfdCBwb2xpY3lGbGFncyk7CisgICAgdmlydHVhbCBpbnQzMl90IGludGVyY2VwdFRyYWNrYmFsbChuc2Vjc190IHdoZW4sIGJvb2wgYnV0dG9uQ2hhbmdlZCwgYm9vbCBidXR0b25Eb3duLAorICAgICAgICAgICAgYm9vbCByb2xsZWQpOworICAgIHZpcnR1YWwgaW50MzJfdCBpbnRlcmNlcHRUb3VjaChuc2Vjc190IHdoZW4pOworICAgIHZpcnR1YWwgaW50MzJfdCBpbnRlcmNlcHRTd2l0Y2gobnNlY3NfdCB3aGVuLCBpbnQzMl90IHN3aXRjaENvZGUsIGludDMyX3Qgc3dpdGNoVmFsdWUpOworICAgIHZpcnR1YWwgYm9vbCBmaWx0ZXJUb3VjaEV2ZW50cygpOworICAgIHZpcnR1YWwgYm9vbCBmaWx0ZXJKdW1weVRvdWNoRXZlbnRzKCk7CisgICAgdmlydHVhbCB2b2lkIGdldFZpcnR1YWxLZXlEZWZpbml0aW9ucyhjb25zdCBTdHJpbmc4JiBkZXZpY2VOYW1lLAorICAgICAgICAgICAgVmVjdG9yPElucHV0UmVhZGVyUG9saWN5SW50ZXJmYWNlOjpWaXJ0dWFsS2V5RGVmaW5pdGlvbj4mIG91dFZpcnR1YWxLZXlEZWZpbml0aW9ucyk7CisgICAgdmlydHVhbCB2b2lkIGdldEV4Y2x1ZGVkRGV2aWNlTmFtZXMoVmVjdG9yPFN0cmluZzg+JiBvdXRFeGNsdWRlZERldmljZU5hbWVzKTsKKworICAgIC8qIC0tLSBJbnB1dERpc3BhdGNoZXJQb2xpY3lJbnRlcmZhY2UgaW1wbGVtZW50YXRpb24gLS0tICovCisKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5Q29uZmlndXJhdGlvbkNoYW5nZWQobnNlY3NfdCB3aGVuKTsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5SW5wdXRDaGFubmVsQnJva2VuKGNvbnN0IHNwPElucHV0Q2hhbm5lbD4mIGlucHV0Q2hhbm5lbCk7CisgICAgdmlydHVhbCBib29sIG5vdGlmeUlucHV0Q2hhbm5lbEFOUihjb25zdCBzcDxJbnB1dENoYW5uZWw+JiBpbnB1dENoYW5uZWwsCisgICAgICAgICAgICBuc2Vjc190JiBvdXROZXdUaW1lb3V0KTsKKyAgICB2aXJ0dWFsIHZvaWQgbm90aWZ5SW5wdXRDaGFubmVsUmVjb3ZlcmVkRnJvbUFOUihjb25zdCBzcDxJbnB1dENoYW5uZWw+JiBpbnB1dENoYW5uZWwpOworICAgIHZpcnR1YWwgbnNlY3NfdCBnZXRLZXlSZXBlYXRUaW1lb3V0KCk7CisgICAgdmlydHVhbCBpbnQzMl90IHdhaXRGb3JLZXlFdmVudFRhcmdldHMoS2V5RXZlbnQqIGtleUV2ZW50LCB1aW50MzJfdCBwb2xpY3lGbGFncywKKyAgICAgICAgICAgIGludDMyX3QgaW5qZWN0b3JQaWQsIGludDMyX3QgaW5qZWN0b3JVaWQsIFZlY3RvcjxJbnB1dFRhcmdldD4mIG91dFRhcmdldHMpOworICAgIHZpcnR1YWwgaW50MzJfdCB3YWl0Rm9yTW90aW9uRXZlbnRUYXJnZXRzKE1vdGlvbkV2ZW50KiBtb3Rpb25FdmVudCwgdWludDMyX3QgcG9saWN5RmxhZ3MsCisgICAgICAgICAgICBpbnQzMl90IGluamVjdG9yUGlkLCBpbnQzMl90IGluamVjdG9yVWlkLCBWZWN0b3I8SW5wdXRUYXJnZXQ+JiBvdXRUYXJnZXRzKTsKKworcHJpdmF0ZToKKyAgICBzdHJ1Y3QgSW5wdXRXaW5kb3cgeworICAgICAgICBzcDxJbnB1dENoYW5uZWw+IGlucHV0Q2hhbm5lbDsKKyAgICAgICAgaW50MzJfdCBsYXlvdXRQYXJhbXNGbGFnczsKKyAgICAgICAgaW50MzJfdCBsYXlvdXRQYXJhbXNUeXBlOworICAgICAgICBuc2Vjc190IGRpc3BhdGNoaW5nVGltZW91dDsKKyAgICAgICAgaW50MzJfdCBmcmFtZUxlZnQ7CisgICAgICAgIGludDMyX3QgZnJhbWVUb3A7CisgICAgICAgIGludDMyX3QgdG91Y2hhYmxlQXJlYUxlZnQ7CisgICAgICAgIGludDMyX3QgdG91Y2hhYmxlQXJlYVRvcDsKKyAgICAgICAgaW50MzJfdCB0b3VjaGFibGVBcmVhUmlnaHQ7CisgICAgICAgIGludDMyX3QgdG91Y2hhYmxlQXJlYUJvdHRvbTsKKyAgICAgICAgYm9vbCB2aXNpYmxlOworICAgICAgICBib29sIGhhc0ZvY3VzOworICAgICAgICBib29sIGhhc1dhbGxwYXBlcjsKKyAgICAgICAgYm9vbCBwYXVzZWQ7CisgICAgICAgIGludDMyX3Qgb3duZXJQaWQ7CisgICAgICAgIGludDMyX3Qgb3duZXJVaWQ7CisKKyAgICAgICAgaW5saW5lIGJvb2wgdG91Y2hhYmxlQXJlYUNvbnRhaW5zUG9pbnQoaW50MzJfdCB4LCBpbnQzMl90IHkpIHsKKyAgICAgICAgICAgIHJldHVybiB4ID49IHRvdWNoYWJsZUFyZWFMZWZ0ICYmIHggPD0gdG91Y2hhYmxlQXJlYVJpZ2h0CisgICAgICAgICAgICAgICAgICAgICYmIHkgPj0gdG91Y2hhYmxlQXJlYVRvcCAmJiB5IDw9IHRvdWNoYWJsZUFyZWFCb3R0b207CisgICAgICAgIH0KKyAgICB9OworCisgICAgc3RydWN0IElucHV0QXBwbGljYXRpb24geworICAgICAgICBTdHJpbmc4IG5hbWU7CisgICAgICAgIG5zZWNzX3QgZGlzcGF0Y2hpbmdUaW1lb3V0OworICAgICAgICBqd2VhayB0b2tlbk9ialdlYWs7CisgICAgfTsKKworICAgIGNsYXNzIEFOUlRpbWVyIHsKKyAgICAgICAgZW51bSBCdWRnZXQgeworICAgICAgICAgICAgU1lTVEVNID0gMCwKKyAgICAgICAgICAgIEFQUExJQ0FUSU9OID0gMQorICAgICAgICB9OworCisgICAgICAgIEJ1ZGdldCBtQnVkZ2V0OworICAgICAgICBuc2Vjc190IG1TdGFydFRpbWU7CisgICAgICAgIGJvb2wgbUZyb3plbjsKKyAgICAgICAgSW5wdXRXaW5kb3cqIG1QYXVzZWRXaW5kb3c7CisKKyAgICBwdWJsaWM6CisgICAgICAgIEFOUlRpbWVyKCk7CisKKyAgICAgICAgdm9pZCBkaXNwYXRjaEZyb3plbkJ5U3lzdGVtKCk7CisgICAgICAgIHZvaWQgZGlzcGF0Y2hQYXVzZWRCeUFwcGxpY2F0aW9uKElucHV0V2luZG93KiBwYXVzZWRXaW5kb3cpOworICAgICAgICBib29sIHdhaXRGb3JEaXNwYXRjaFN0YXRlQ2hhbmdlTGQoTmF0aXZlSW5wdXRNYW5hZ2VyKiBpbnB1dE1hbmFnZXIpOworCisgICAgICAgIG5zZWNzX3QgZ2V0VGltZVNwZW50V2FpdGluZ0ZvckFwcGxpY2F0aW9uKCkgY29uc3Q7CisgICAgfTsKKworICAgIHNwPElucHV0TWFuYWdlcj4gbUlucHV0TWFuYWdlcjsKKworICAgIGpvYmplY3QgbUNhbGxiYWNrc09iajsKKworICAgIC8vIENhY2hlZCBmaWx0ZXJpbmcgcG9saWNpZXMuCisgICAgaW50MzJfdCBtRmlsdGVyVG91Y2hFdmVudHM7CisgICAgaW50MzJfdCBtRmlsdGVySnVtcHlUb3VjaEV2ZW50czsKKworICAgIC8vIENhY2hlZCBkaXNwbGF5IHN0YXRlLiAgKGxvY2sgbURpc3BsYXlMb2NrKQorICAgIE11dGV4IG1EaXNwbGF5TG9jazsKKyAgICBpbnQzMl90IG1EaXNwbGF5V2lkdGgsIG1EaXNwbGF5SGVpZ2h0OworICAgIGludDMyX3QgbURpc3BsYXlPcmllbnRhdGlvbjsKKworICAgIC8vIFBvd2VyIG1hbmFnZXIgaW50ZXJhY3Rpb25zLgorICAgIGJvb2wgaXNTY3JlZW5PbigpOworICAgIGJvb2wgaXNTY3JlZW5CcmlnaHQoKTsKKworICAgIC8vIFdlYWsgcmVmZXJlbmNlcyB0byBhbGwgY3VycmVudGx5IHJlZ2lzdGVyZWQgaW5wdXQgY2hhbm5lbHMgYnkgcmVjZWl2ZSBmZC4KKyAgICBNdXRleCBtSW5wdXRDaGFubmVsUmVnaXN0cnlMb2NrOworICAgIEtleWVkVmVjdG9yPGludCwgandlYWs+IG1JbnB1dENoYW5uZWxPYmpXZWFrQnlSZWNlaXZlRmQ7CisKKyAgICBqb2JqZWN0IGdldElucHV0Q2hhbm5lbE9iakxvY2FsKEpOSUVudiogZW52LCBjb25zdCBzcDxJbnB1dENoYW5uZWw+JiBpbnB1dENoYW5uZWwpOworCisgICAgLy8gSW5wdXQgdGFyZ2V0IGFuZCBmb2N1cyB0cmFja2luZy4gIChsb2NrIG1EaXNwYXRjaExvY2spCisgICAgTXV0ZXggbURpc3BhdGNoTG9jazsKKyAgICBDb25kaXRpb24gbURpc3BhdGNoU3RhdGVDaGFuZ2VkOworCisgICAgYm9vbCBtRGlzcGF0Y2hFbmFibGVkOworICAgIGJvb2wgbURpc3BhdGNoRnJvemVuOworICAgIGJvb2wgbVdpbmRvd3NSZWFkeTsKKyAgICBWZWN0b3I8SW5wdXRXaW5kb3c+IG1XaW5kb3dzOworICAgIFZlY3RvcjxJbnB1dFdpbmRvdyo+IG1XYWxscGFwZXJXaW5kb3dzOworCisgICAgLy8gRm9jdXMgdHJhY2tpbmcgZm9yIGtleXMsIHRyYWNrYmFsbCwgZXRjLgorICAgIElucHV0V2luZG93KiBtRm9jdXNlZFdpbmRvdzsKKworICAgIC8vIEZvY3VzIHRyYWNraW5nIGZvciB0b3VjaC4KKyAgICBib29sIG1Ub3VjaERvd247CisgICAgSW5wdXRXaW5kb3cqIG1Ub3VjaGVkV2luZG93OyAgICAgICAgICAgICAgICAgICAvLyBwcmltYXJ5IHRhcmdldCBmb3IgY3VycmVudCBkb3duCisgICAgVmVjdG9yPElucHV0V2luZG93Kj4gbVRvdWNoZWRXYWxscGFwZXJXaW5kb3dzOyAvLyB3YWxscGFwZXIgdGFyZ2V0cworCisgICAgVmVjdG9yPElucHV0V2luZG93Kj4gbVRlbXBUb3VjaGVkT3V0c2lkZVdpbmRvd3M7IC8vIHRlbXBvcmFyeSBvdXRzaWRlIHRvdWNoIHRhcmdldHMKKyAgICBWZWN0b3I8c3A8SW5wdXRDaGFubmVsPiA+IG1UZW1wVG91Y2hlZFdhbGxwYXBlckNoYW5uZWxzOyAvLyB0ZW1wb3Jhcnkgd2FsbHBhcGVyIHRhcmdldHMKKworICAgIC8vIEZvY3VzZWQgYXBwbGljYXRpb24uCisgICAgSW5wdXRBcHBsaWNhdGlvbiogbUZvY3VzZWRBcHBsaWNhdGlvbjsKKyAgICBJbnB1dEFwcGxpY2F0aW9uIG1Gb2N1c2VkQXBwbGljYXRpb25TdG9yYWdlOyAvLyBwcmVhbGxvY2F0ZWQgc3RvcmFnZSBmb3IgbUZvY3VzZWRBcHBsaWNhdGlvbgorCisgICAgdm9pZCBkdW1wRGlzcGF0Y2hTdGF0ZUxkKCk7CisKKyAgICBib29sIG5vdGlmeUFOUihqb2JqZWN0IHRva2VuT2JqLCBuc2Vjc190JiBvdXROZXdUaW1lb3V0KTsKKyAgICB2b2lkIHJlbGVhc2VGb2N1c2VkQXBwbGljYXRpb25MZChKTklFbnYqIGVudik7CisKKyAgICBpbnQzMl90IHdhaXRGb3JGb2N1c2VkV2luZG93TGQodWludDMyX3QgcG9saWN5RmxhZ3MsIGludDMyX3QgaW5qZWN0b3JQaWQsIGludDMyX3QgaW5qZWN0b3JVaWQsCisgICAgICAgICAgICBWZWN0b3I8SW5wdXRUYXJnZXQ+JiBvdXRUYXJnZXRzLCBJbnB1dFdpbmRvdyomIG91dEZvY3VzZWRXaW5kb3cpOworICAgIGludDMyX3Qgd2FpdEZvclRvdWNoZWRXaW5kb3dMZChNb3Rpb25FdmVudCogbW90aW9uRXZlbnQsIHVpbnQzMl90IHBvbGljeUZsYWdzLAorICAgICAgICAgICAgaW50MzJfdCBpbmplY3RvclBpZCwgaW50MzJfdCBpbmplY3RvclVpZCwKKyAgICAgICAgICAgIFZlY3RvcjxJbnB1dFRhcmdldD4mIG91dFRhcmdldHMsIElucHV0V2luZG93KiYgb3V0VG91Y2hlZFdpbmRvdyk7CisKKyAgICB2b2lkIHJlbGVhc2VUb3VjaGVkV2luZG93TGQoKTsKKworICAgIGludDMyX3Qgd2FpdEZvclRyYWNrYmFsbEV2ZW50VGFyZ2V0cyhNb3Rpb25FdmVudCogbW90aW9uRXZlbnQsIHVpbnQzMl90IHBvbGljeUZsYWdzLAorICAgICAgICAgICAgaW50MzJfdCBpbmplY3RvclBpZCwgaW50MzJfdCBpbmplY3RvclVpZCwgVmVjdG9yPElucHV0VGFyZ2V0PiYgb3V0VGFyZ2V0cyk7CisgICAgaW50MzJfdCB3YWl0Rm9yVG91Y2hFdmVudFRhcmdldHMoTW90aW9uRXZlbnQqIG1vdGlvbkV2ZW50LCB1aW50MzJfdCBwb2xpY3lGbGFncywKKyAgICAgICAgICAgIGludDMyX3QgaW5qZWN0b3JQaWQsIGludDMyX3QgaW5qZWN0b3JVaWQsIFZlY3RvcjxJbnB1dFRhcmdldD4mIG91dFRhcmdldHMpOworCisgICAgYm9vbCBpbnRlcmNlcHRLZXlCZWZvcmVEaXNwYXRjaGluZyhjb25zdCBJbnB1dFRhcmdldCYgdGFyZ2V0LAorICAgICAgICAgICAgY29uc3QgS2V5RXZlbnQqIGtleUV2ZW50LCB1aW50MzJfdCBwb2xpY3lGbGFncyk7CisKKyAgICB2b2lkIHBva2VVc2VyQWN0aXZpdHlJZk5lZWRlZChpbnQzMl90IHdpbmRvd1R5cGUsIGludDMyX3QgZXZlbnRUeXBlKTsKKyAgICB2b2lkIHBva2VVc2VyQWN0aXZpdHkobnNlY3NfdCBldmVudFRpbWUsIGludDMyX3QgZXZlbnRUeXBlKTsKKyAgICBib29sIGNoZWNrSW5qZWN0aW9uUGVybWlzc2lvbihjb25zdCBJbnB1dFdpbmRvdyogd2luZG93LAorICAgICAgICAgICAgaW50MzJfdCBpbmplY3RvclBpZCwgaW50MzJfdCBpbmplY3RvclVpZCk7CisKKyAgICBzdGF0aWMgYm9vbCBwb3B1bGF0ZVdpbmRvdyhKTklFbnYqIGVudiwgam9iamVjdCB3aW5kb3dPYmosIElucHV0V2luZG93JiBvdXRXaW5kb3cpOworICAgIHN0YXRpYyB2b2lkIGFkZFRhcmdldChjb25zdCBJbnB1dFdpbmRvdyogd2luZG93LCBpbnQzMl90IHRhcmdldEZsYWdzLAorICAgICAgICAgICAgbnNlY3NfdCB0aW1lU3BlbnRXYWl0aW5nRm9yQXBwbGljYXRpb24sIFZlY3RvcjxJbnB1dFRhcmdldD4mIG91dFRhcmdldHMpOworCisgICAgc3RhdGljIGlubGluZSBKTklFbnYqIGpuaUVudigpIHsKKyAgICAgICAgcmV0dXJuIEFuZHJvaWRSdW50aW1lOjpnZXRKTklFbnYoKTsKKyAgICB9CisKKyAgICBzdGF0aWMgYm9vbCBpc0FwcFN3aXRjaEtleShpbnQzMl90IGtleUNvZGUpOworICAgIHN0YXRpYyBib29sIGlzUG9saWN5S2V5KGludDMyX3Qga2V5Q29kZSwgYm9vbCBpc1NjcmVlbk9uKTsKKyAgICBzdGF0aWMgYm9vbCBjaGVja0FuZENsZWFyRXhjZXB0aW9uRnJvbUNhbGxiYWNrKEpOSUVudiogZW52LCBjb25zdCBjaGFyKiBtZXRob2ROYW1lKTsKK307CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTmF0aXZlSW5wdXRNYW5hZ2VyOjpOYXRpdmVJbnB1dE1hbmFnZXIoam9iamVjdCBjYWxsYmFja3NPYmopIDoKKyAgICBtRmlsdGVyVG91Y2hFdmVudHMoLTEpLCBtRmlsdGVySnVtcHlUb3VjaEV2ZW50cygtMSksCisgICAgbURpc3BsYXlXaWR0aCgtMSksIG1EaXNwbGF5SGVpZ2h0KC0xKSwgbURpc3BsYXlPcmllbnRhdGlvbihST1RBVElPTl8wKSwKKyAgICBtRGlzcGF0Y2hFbmFibGVkKHRydWUpLCBtRGlzcGF0Y2hGcm96ZW4oZmFsc2UpLCBtV2luZG93c1JlYWR5KHRydWUpLAorICAgIG1Gb2N1c2VkV2luZG93KE5VTEwpLCBtVG91Y2hEb3duKGZhbHNlKSwgbVRvdWNoZWRXaW5kb3coTlVMTCksCisgICAgbUZvY3VzZWRBcHBsaWNhdGlvbihOVUxMKSB7CisgICAgSk5JRW52KiBlbnYgPSBqbmlFbnYoKTsKKworICAgIG1DYWxsYmFja3NPYmogPSBlbnYtPk5ld0dsb2JhbFJlZihjYWxsYmFja3NPYmopOworCisgICAgc3A8RXZlbnRIdWI+IGV2ZW50SHViID0gbmV3IEV2ZW50SHViKCk7CisgICAgbUlucHV0TWFuYWdlciA9IG5ldyBJbnB1dE1hbmFnZXIoZXZlbnRIdWIsIHRoaXMsIHRoaXMpOworfQorCitOYXRpdmVJbnB1dE1hbmFnZXI6On5OYXRpdmVJbnB1dE1hbmFnZXIoKSB7CisgICAgSk5JRW52KiBlbnYgPSBqbmlFbnYoKTsKKworICAgIGVudi0+RGVsZXRlR2xvYmFsUmVmKG1DYWxsYmFja3NPYmopOworCisgICAgcmVsZWFzZUZvY3VzZWRBcHBsaWNhdGlvbkxkKGVudik7Cit9CisKK2Jvb2wgTmF0aXZlSW5wdXRNYW5hZ2VyOjppc0FwcFN3aXRjaEtleShpbnQzMl90IGtleUNvZGUpIHsKKyAgICByZXR1cm4ga2V5Q29kZSA9PSBLRVlDT0RFX0hPTUUgfHwga2V5Q29kZSA9PSBLRVlDT0RFX0VORENBTEw7Cit9CisKK2Jvb2wgTmF0aXZlSW5wdXRNYW5hZ2VyOjppc1BvbGljeUtleShpbnQzMl90IGtleUNvZGUsIGJvb2wgaXNTY3JlZW5PbikgeworICAgIC8vIFNwZWNpYWwga2V5cyB0aGF0IHRoZSBXaW5kb3dNYW5hZ2VyUG9saWN5IG1pZ2h0IGNhcmUgYWJvdXQuCisgICAgc3dpdGNoIChrZXlDb2RlKSB7CisgICAgY2FzZSBLRVlDT0RFX1ZPTFVNRV9VUDoKKyAgICBjYXNlIEtFWUNPREVfVk9MVU1FX0RPV046CisgICAgY2FzZSBLRVlDT0RFX0VORENBTEw6CisgICAgY2FzZSBLRVlDT0RFX1BPV0VSOgorICAgIGNhc2UgS0VZQ09ERV9DQUxMOgorICAgIGNhc2UgS0VZQ09ERV9IT01FOgorICAgIGNhc2UgS0VZQ09ERV9NRU5VOgorICAgIGNhc2UgS0VZQ09ERV9TRUFSQ0g6CisgICAgICAgIC8vIG1lZGlhIGtleXMKKyAgICBjYXNlIEtFWUNPREVfSEVBRFNFVEhPT0s6CisgICAgY2FzZSBLRVlDT0RFX01FRElBX1BMQVlfUEFVU0U6CisgICAgY2FzZSBLRVlDT0RFX01FRElBX1NUT1A6CisgICAgY2FzZSBLRVlDT0RFX01FRElBX05FWFQ6CisgICAgY2FzZSBLRVlDT0RFX01FRElBX1BSRVZJT1VTOgorICAgIGNhc2UgS0VZQ09ERV9NRURJQV9SRVdJTkQ6CisgICAgY2FzZSBLRVlDT0RFX01FRElBX0ZBU1RfRk9SV0FSRDoKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgLy8gV2UgbmVlZCB0byBwYXNzIGFsbCBrZXlzIHRvIHRoZSBwb2xpY3kgaW4gdGhlIGZvbGxvd2luZyBjYXNlczoKKyAgICAgICAgLy8gLSBzY3JlZW4gaXMgb2ZmCisgICAgICAgIC8vIC0ga2V5Z3VhcmQgaXMgdmlzaWJsZQorICAgICAgICAvLyAtIHBvbGljeSBpcyBwZXJmb3JtaW5nIGtleSBjaG9yZGluZworICAgICAgICAvL3JldHVybiAhIGlzU2NyZWVuT24gfHwga2V5Z3VhcmRWaXNpYmxlIHx8IGNob3JkaW5nOworICAgICAgICByZXR1cm4gdHJ1ZTsgLy8gWFhYIHN0dWJiZWQgb3V0IGZvciBub3cKKyAgICB9Cit9CisKK2Jvb2wgTmF0aXZlSW5wdXRNYW5hZ2VyOjpjaGVja0FuZENsZWFyRXhjZXB0aW9uRnJvbUNhbGxiYWNrKEpOSUVudiogZW52LCBjb25zdCBjaGFyKiBtZXRob2ROYW1lKSB7CisgICAgaWYgKGVudi0+RXhjZXB0aW9uQ2hlY2soKSkgeworICAgICAgICBMT0dFKCJBbiBleGNlcHRpb24gd2FzIHRocm93biBieSBjYWxsYmFjayAnJXMnLiIsIG1ldGhvZE5hbWUpOworICAgICAgICBMT0dFX0VYKGVudik7CisgICAgICAgIGVudi0+RXhjZXB0aW9uQ2xlYXIoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBOYXRpdmVJbnB1dE1hbmFnZXI6OnNldERpc3BsYXlTaXplKGludDMyX3QgZGlzcGxheUlkLCBpbnQzMl90IHdpZHRoLCBpbnQzMl90IGhlaWdodCkgeworICAgIGlmIChkaXNwbGF5SWQgPT0gMCkgeworICAgICAgICBBdXRvTXV0ZXggX2wobURpc3BsYXlMb2NrKTsKKworICAgICAgICBtRGlzcGxheVdpZHRoID0gd2lkdGg7CisgICAgICAgIG1EaXNwbGF5SGVpZ2h0ID0gaGVpZ2h0OworICAgIH0KK30KKwordm9pZCBOYXRpdmVJbnB1dE1hbmFnZXI6OnNldERpc3BsYXlPcmllbnRhdGlvbihpbnQzMl90IGRpc3BsYXlJZCwgaW50MzJfdCBvcmllbnRhdGlvbikgeworICAgIGlmIChkaXNwbGF5SWQgPT0gMCkgeworICAgICAgICBBdXRvTXV0ZXggX2wobURpc3BsYXlMb2NrKTsKKworICAgICAgICBtRGlzcGxheU9yaWVudGF0aW9uID0gb3JpZW50YXRpb247CisgICAgfQorfQorCitzdGF0dXNfdCBOYXRpdmVJbnB1dE1hbmFnZXI6OnJlZ2lzdGVySW5wdXRDaGFubmVsKEpOSUVudiogZW52LAorICAgICAgICBjb25zdCBzcDxJbnB1dENoYW5uZWw+JiBpbnB1dENoYW5uZWwsIGpvYmplY3QgaW5wdXRDaGFubmVsT2JqKSB7CisgICAgandlYWsgaW5wdXRDaGFubmVsT2JqV2VhayA9IGVudi0+TmV3V2Vha0dsb2JhbFJlZihpbnB1dENoYW5uZWxPYmopOworICAgIGlmICghIGlucHV0Q2hhbm5lbE9ialdlYWspIHsKKyAgICAgICAgTE9HRSgiQ291bGQgbm90IGNyZWF0ZSB3ZWFrIHJlZmVyZW5jZSBmb3IgaW5wdXQgY2hhbm5lbC4iKTsKKyAgICAgICAgTE9HRV9FWChlbnYpOworICAgICAgICByZXR1cm4gTk9fTUVNT1JZOworICAgIH0KKworICAgIHN0YXR1c190IHN0YXR1czsKKyAgICB7CisgICAgICAgIEF1dG9NdXRleCBfbChtSW5wdXRDaGFubmVsUmVnaXN0cnlMb2NrKTsKKworICAgICAgICBzc2l6ZV90IGluZGV4ID0gbUlucHV0Q2hhbm5lbE9ialdlYWtCeVJlY2VpdmVGZC5pbmRleE9mS2V5KAorICAgICAgICAgICAgICAgIGlucHV0Q2hhbm5lbC0+Z2V0UmVjZWl2ZVBpcGVGZCgpKTsKKyAgICAgICAgaWYgKGluZGV4ID49IDApIHsKKyAgICAgICAgICAgIExPR0UoIklucHV0IGNoYW5uZWwgb2JqZWN0ICclcycgaGFzIGFscmVhZHkgYmVlbiByZWdpc3RlcmVkIiwKKyAgICAgICAgICAgICAgICAgICAgaW5wdXRDaGFubmVsLT5nZXROYW1lKCkuc3RyaW5nKCkpOworICAgICAgICAgICAgc3RhdHVzID0gSU5WQUxJRF9PUEVSQVRJT047CisgICAgICAgICAgICBnb3RvIERlbGV0ZVdlYWtSZWY7CisgICAgICAgIH0KKworICAgICAgICBtSW5wdXRDaGFubmVsT2JqV2Vha0J5UmVjZWl2ZUZkLmFkZChpbnB1dENoYW5uZWwtPmdldFJlY2VpdmVQaXBlRmQoKSwKKyAgICAgICAgICAgICAgICBpbnB1dENoYW5uZWxPYmpXZWFrKTsKKyAgICB9CisKKyAgICBzdGF0dXMgPSBtSW5wdXRNYW5hZ2VyLT5yZWdpc3RlcklucHV0Q2hhbm5lbChpbnB1dENoYW5uZWwpOworICAgIGlmICghIHN0YXR1cykgeworICAgICAgICByZXR1cm4gT0s7CisgICAgfQorCisgICAgeworICAgICAgICBBdXRvTXV0ZXggX2wobUlucHV0Q2hhbm5lbFJlZ2lzdHJ5TG9jayk7CisgICAgICAgIG1JbnB1dENoYW5uZWxPYmpXZWFrQnlSZWNlaXZlRmQucmVtb3ZlSXRlbShpbnB1dENoYW5uZWwtPmdldFJlY2VpdmVQaXBlRmQoKSk7CisgICAgfQorCitEZWxldGVXZWFrUmVmOgorICAgIGVudi0+RGVsZXRlV2Vha0dsb2JhbFJlZihpbnB1dENoYW5uZWxPYmpXZWFrKTsKKyAgICByZXR1cm4gc3RhdHVzOworfQorCitzdGF0dXNfdCBOYXRpdmVJbnB1dE1hbmFnZXI6OnVucmVnaXN0ZXJJbnB1dENoYW5uZWwoSk5JRW52KiBlbnYsCisgICAgICAgIGNvbnN0IHNwPElucHV0Q2hhbm5lbD4mIGlucHV0Q2hhbm5lbCkgeworICAgIGp3ZWFrIGlucHV0Q2hhbm5lbE9ialdlYWs7CisgICAgeworICAgICAgICBBdXRvTXV0ZXggX2wobUlucHV0Q2hhbm5lbFJlZ2lzdHJ5TG9jayk7CisKKyAgICAgICAgc3NpemVfdCBpbmRleCA9IG1JbnB1dENoYW5uZWxPYmpXZWFrQnlSZWNlaXZlRmQuaW5kZXhPZktleSgKKyAgICAgICAgICAgICAgICBpbnB1dENoYW5uZWwtPmdldFJlY2VpdmVQaXBlRmQoKSk7CisgICAgICAgIGlmIChpbmRleCA8IDApIHsKKyAgICAgICAgICAgIExPR0UoIklucHV0IGNoYW5uZWwgb2JqZWN0ICclcycgaXMgbm90IGN1cnJlbnRseSByZWdpc3RlcmVkIiwKKyAgICAgICAgICAgICAgICAgICAgaW5wdXRDaGFubmVsLT5nZXROYW1lKCkuc3RyaW5nKCkpOworICAgICAgICAgICAgcmV0dXJuIElOVkFMSURfT1BFUkFUSU9OOworICAgICAgICB9CisKKyAgICAgICAgaW5wdXRDaGFubmVsT2JqV2VhayA9IG1JbnB1dENoYW5uZWxPYmpXZWFrQnlSZWNlaXZlRmQudmFsdWVBdChpbmRleCk7CisgICAgICAgIG1JbnB1dENoYW5uZWxPYmpXZWFrQnlSZWNlaXZlRmQucmVtb3ZlSXRlbXNBdChpbmRleCk7CisgICAgfQorCisgICAgZW52LT5EZWxldGVXZWFrR2xvYmFsUmVmKGlucHV0Q2hhbm5lbE9ialdlYWspOworCisgICAgcmV0dXJuIG1JbnB1dE1hbmFnZXItPnVucmVnaXN0ZXJJbnB1dENoYW5uZWwoaW5wdXRDaGFubmVsKTsKK30KKworam9iamVjdCBOYXRpdmVJbnB1dE1hbmFnZXI6OmdldElucHV0Q2hhbm5lbE9iakxvY2FsKEpOSUVudiogZW52LAorICAgICAgICBjb25zdCBzcDxJbnB1dENoYW5uZWw+JiBpbnB1dENoYW5uZWwpIHsKKyAgICB7CisgICAgICAgIEF1dG9NdXRleCBfbChtSW5wdXRDaGFubmVsUmVnaXN0cnlMb2NrKTsKKworICAgICAgICBzc2l6ZV90IGluZGV4ID0gbUlucHV0Q2hhbm5lbE9ialdlYWtCeVJlY2VpdmVGZC5pbmRleE9mS2V5KAorICAgICAgICAgICAgICAgIGlucHV0Q2hhbm5lbC0+Z2V0UmVjZWl2ZVBpcGVGZCgpKTsKKyAgICAgICAgaWYgKGluZGV4IDwgMCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKworICAgICAgICBqd2VhayBpbnB1dENoYW5uZWxPYmpXZWFrID0gbUlucHV0Q2hhbm5lbE9ialdlYWtCeVJlY2VpdmVGZC52YWx1ZUF0KGluZGV4KTsKKyAgICAgICAgcmV0dXJuIGVudi0+TmV3TG9jYWxSZWYoaW5wdXRDaGFubmVsT2JqV2Vhayk7CisgICAgfQorfQorCitib29sIE5hdGl2ZUlucHV0TWFuYWdlcjo6Z2V0RGlzcGxheUluZm8oaW50MzJfdCBkaXNwbGF5SWQsCisgICAgICAgIGludDMyX3QqIHdpZHRoLCBpbnQzMl90KiBoZWlnaHQsIGludDMyX3QqIG9yaWVudGF0aW9uKSB7CisgICAgYm9vbCByZXN1bHQgPSBmYWxzZTsKKyAgICBpZiAoZGlzcGxheUlkID09IDApIHsKKyAgICAgICAgQXV0b011dGV4IF9sKG1EaXNwbGF5TG9jayk7CisKKyAgICAgICAgaWYgKG1EaXNwbGF5V2lkdGggPiAwKSB7CisgICAgICAgICAgICAqd2lkdGggPSBtRGlzcGxheVdpZHRoOworICAgICAgICAgICAgKmhlaWdodCA9IG1EaXNwbGF5SGVpZ2h0OworICAgICAgICAgICAgKm9yaWVudGF0aW9uID0gbURpc3BsYXlPcmllbnRhdGlvbjsKKyAgICAgICAgICAgIHJlc3VsdCA9IHRydWU7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworYm9vbCBOYXRpdmVJbnB1dE1hbmFnZXI6OmlzU2NyZWVuT24oKSB7CisgICAgcmV0dXJuIGFuZHJvaWRfc2VydmVyX1Bvd2VyTWFuYWdlclNlcnZpY2VfaXNTY3JlZW5PbigpOworfQorCitib29sIE5hdGl2ZUlucHV0TWFuYWdlcjo6aXNTY3JlZW5CcmlnaHQoKSB7CisgICAgcmV0dXJuIGFuZHJvaWRfc2VydmVyX1Bvd2VyTWFuYWdlclNlcnZpY2VfaXNTY3JlZW5CcmlnaHQoKTsKK30KKwordm9pZCBOYXRpdmVJbnB1dE1hbmFnZXI6OnZpcnR1YWxLZXlEb3duRmVlZGJhY2soKSB7CisjaWYgREVCVUdfSU5QVVRfUkVBREVSX1BPTElDWQorICAgIExPR0QoInZpcnR1YWxLZXlEb3duRmVlZGJhY2siKTsKKyNlbmRpZgorCisgICAgSk5JRW52KiBlbnYgPSBqbmlFbnYoKTsKKworICAgIGVudi0+Q2FsbFZvaWRNZXRob2QobUNhbGxiYWNrc09iaiwgZ0NhbGxiYWNrc0NsYXNzSW5mby52aXJ0dWFsS2V5RG93bkZlZWRiYWNrKTsKKyAgICBjaGVja0FuZENsZWFyRXhjZXB0aW9uRnJvbUNhbGxiYWNrKGVudiwgInZpcnR1YWxLZXlEb3duRmVlZGJhY2siKTsKK30KKworaW50MzJfdCBOYXRpdmVJbnB1dE1hbmFnZXI6OmludGVyY2VwdEtleShuc2Vjc190IHdoZW4sCisgICAgICAgIGludDMyX3QgZGV2aWNlSWQsIGJvb2wgZG93biwgaW50MzJfdCBrZXlDb2RlLCBpbnQzMl90IHNjYW5Db2RlLCB1aW50MzJfdCBwb2xpY3lGbGFncykgeworI2lmIERFQlVHX0lOUFVUX1JFQURFUl9QT0xJQ1kKKyAgICBMT0dEKCJpbnRlcmNlcHRLZXkgLSB3aGVuPSVsbGQsIGRldmljZUlkPSVkLCBkb3duPSVkLCBrZXlDb2RlPSVkLCBzY2FuQ29kZT0lZCwgIgorICAgICAgICAgICAgInBvbGljeUZsYWdzPTB4JXgiLAorICAgICAgICAgICAgd2hlbiwgZGV2aWNlSWQsIGRvd24sIGtleUNvZGUsIHNjYW5Db2RlLCBwb2xpY3lGbGFncyk7CisjZW5kaWYKKworICAgIGNvbnN0IGludDMyX3QgV01fQUNUSU9OX1BBU1NfVE9fVVNFUiA9IDE7CisgICAgY29uc3QgaW50MzJfdCBXTV9BQ1RJT05fUE9LRV9VU0VSX0FDVElWSVRZID0gMjsKKyAgICBjb25zdCBpbnQzMl90IFdNX0FDVElPTl9HT19UT19TTEVFUCA9IDQ7CisKKyAgICBib29sIGlzU2NyZWVuT24gPSB0aGlzLT5pc1NjcmVlbk9uKCk7CisgICAgYm9vbCBpc1NjcmVlbkJyaWdodCA9IHRoaXMtPmlzU2NyZWVuQnJpZ2h0KCk7CisKKyAgICBqaW50IHdtQWN0aW9ucyA9IDA7CisgICAgaWYgKGlzUG9saWN5S2V5KGtleUNvZGUsIGlzU2NyZWVuT24pKSB7CisgICAgICAgIEpOSUVudiogZW52ID0gam5pRW52KCk7CisKKyAgICAgICAgd21BY3Rpb25zID0gZW52LT5DYWxsSW50TWV0aG9kKG1DYWxsYmFja3NPYmosCisgICAgICAgICAgICAgICAgZ0NhbGxiYWNrc0NsYXNzSW5mby5pbnRlcmNlcHRLZXlCZWZvcmVRdWV1ZWluZywKKyAgICAgICAgICAgICAgICB3aGVuLCBrZXlDb2RlLCBkb3duLCBwb2xpY3lGbGFncywgaXNTY3JlZW5Pbik7CisgICAgICAgIGlmIChjaGVja0FuZENsZWFyRXhjZXB0aW9uRnJvbUNhbGxiYWNrKGVudiwgImludGVyY2VwdEtleUJlZm9yZVF1ZXVlaW5nIikpIHsKKyAgICAgICAgICAgIHdtQWN0aW9ucyA9IDA7CisgICAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgICB3bUFjdGlvbnMgPSBXTV9BQ1RJT05fUEFTU19UT19VU0VSOworICAgIH0KKworICAgIGludDMyX3QgYWN0aW9ucyA9IElucHV0UmVhZGVyUG9saWN5SW50ZXJmYWNlOjpBQ1RJT05fTk9ORTsKKyAgICBpZiAoISBpc1NjcmVlbk9uKSB7CisgICAgICAgIC8vIEtleSBwcmVzc2VzIGFuZCByZWxlYXNlcyB3YWtlIHRoZSBkZXZpY2UuCisgICAgICAgIGFjdGlvbnMgfD0gSW5wdXRSZWFkZXJQb2xpY3lJbnRlcmZhY2U6OkFDVElPTl9XT0tFX0hFUkU7CisgICAgfQorCisgICAgaWYgKCEgaXNTY3JlZW5CcmlnaHQpIHsKKyAgICAgICAgLy8gS2V5IHByZXNzZXMgYW5kIHJlbGVhc2VzIGJyaWdodGVuIHRoZSBzY3JlZW4gaWYgZGltbWVkLgorICAgICAgICBhY3Rpb25zIHw9IElucHV0UmVhZGVyUG9saWN5SW50ZXJmYWNlOjpBQ1RJT05fQlJJR0hUX0hFUkU7CisgICAgfQorCisgICAgaWYgKHdtQWN0aW9ucyAmIFdNX0FDVElPTl9HT19UT19TTEVFUCkgeworICAgICAgICBhbmRyb2lkX3NlcnZlcl9Qb3dlck1hbmFnZXJTZXJ2aWNlX2dvVG9TbGVlcCh3aGVuKTsKKyAgICB9CisKKyAgICBpZiAod21BY3Rpb25zICYgV01fQUNUSU9OX1BPS0VfVVNFUl9BQ1RJVklUWSkgeworICAgICAgICBwb2tlVXNlckFjdGl2aXR5KHdoZW4sIFBPV0VSX01BTkFHRVJfQlVUVE9OX0VWRU5UKTsKKyAgICB9CisKKyAgICBpZiAod21BY3Rpb25zICYgV01fQUNUSU9OX1BBU1NfVE9fVVNFUikgeworICAgICAgICBhY3Rpb25zIHw9IElucHV0UmVhZGVyUG9saWN5SW50ZXJmYWNlOjpBQ1RJT05fRElTUEFUQ0g7CisKKyAgICAgICAgaWYgKGRvd24gJiYgaXNBcHBTd2l0Y2hLZXkoa2V5Q29kZSkpIHsKKyAgICAgICAgICAgIEpOSUVudiogZW52ID0gam5pRW52KCk7CisKKyAgICAgICAgICAgIGVudi0+Q2FsbFZvaWRNZXRob2QobUNhbGxiYWNrc09iaiwgZ0NhbGxiYWNrc0NsYXNzSW5mby5ub3RpZnlBcHBTd2l0Y2hDb21pbmcpOworICAgICAgICAgICAgY2hlY2tBbmRDbGVhckV4Y2VwdGlvbkZyb21DYWxsYmFjayhlbnYsICJub3RpZnlBcHBTd2l0Y2hDb21pbmciKTsKKworICAgICAgICAgICAgYWN0aW9ucyB8PSBJbnB1dFJlYWRlclBvbGljeUludGVyZmFjZTo6QUNUSU9OX0FQUF9TV0lUQ0hfQ09NSU5HOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGFjdGlvbnM7Cit9CisKK2ludDMyX3QgTmF0aXZlSW5wdXRNYW5hZ2VyOjppbnRlcmNlcHRUb3VjaChuc2Vjc190IHdoZW4pIHsKKyNpZiBERUJVR19JTlBVVF9SRUFERVJfUE9MSUNZCisgICAgTE9HRCgiaW50ZXJjZXB0VG91Y2ggLSB3aGVuPSVsbGQiLCB3aGVuKTsKKyNlbmRpZgorCisgICAgaW50MzJfdCBhY3Rpb25zID0gSW5wdXRSZWFkZXJQb2xpY3lJbnRlcmZhY2U6OkFDVElPTl9OT05FOworICAgIGlmIChpc1NjcmVlbk9uKCkpIHsKKyAgICAgICAgLy8gT25seSBkaXNwYXRjaCB0b3VjaCBldmVudHMgd2hlbiB0aGUgZGV2aWNlIGlzIGF3YWtlLgorICAgICAgICAvLyBEbyBub3Qgd2FrZSB0aGUgZGV2aWNlLgorICAgICAgICBhY3Rpb25zIHw9IElucHV0UmVhZGVyUG9saWN5SW50ZXJmYWNlOjpBQ1RJT05fRElTUEFUQ0g7CisKKyAgICAgICAgaWYgKCEgaXNTY3JlZW5CcmlnaHQoKSkgeworICAgICAgICAgICAgLy8gQnJpZ2h0ZW4gdGhlIHNjcmVlbiBpZiBkaW1tZWQuCisgICAgICAgICAgICBhY3Rpb25zIHw9IElucHV0UmVhZGVyUG9saWN5SW50ZXJmYWNlOjpBQ1RJT05fQlJJR0hUX0hFUkU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gYWN0aW9uczsKK30KKworaW50MzJfdCBOYXRpdmVJbnB1dE1hbmFnZXI6OmludGVyY2VwdFRyYWNrYmFsbChuc2Vjc190IHdoZW4sCisgICAgICAgIGJvb2wgYnV0dG9uQ2hhbmdlZCwgYm9vbCBidXR0b25Eb3duLCBib29sIHJvbGxlZCkgeworI2lmIERFQlVHX0lOUFVUX1JFQURFUl9QT0xJQ1kKKyAgICBMT0dEKCJpbnRlcmNlcHRUcmFja2JhbGwgLSB3aGVuPSVsbGQsIGJ1dHRvbkNoYW5nZWQ9JWQsIGJ1dHRvbkRvd249JWQsIHJvbGxlZD0lZCIsCisgICAgICAgICAgICB3aGVuLCBidXR0b25DaGFuZ2VkLCBidXR0b25Eb3duLCByb2xsZWQpOworI2VuZGlmCisKKyAgICBpbnQzMl90IGFjdGlvbnMgPSBJbnB1dFJlYWRlclBvbGljeUludGVyZmFjZTo6QUNUSU9OX05PTkU7CisgICAgaWYgKGlzU2NyZWVuT24oKSkgeworICAgICAgICAvLyBPbmx5IGRpc3BhdGNoIHRyYWNrYmFsbCBldmVudHMgd2hlbiB0aGUgZGV2aWNlIGlzIGF3YWtlLgorICAgICAgICAvLyBEbyBub3Qgd2FrZSB0aGUgZGV2aWNlLgorICAgICAgICBhY3Rpb25zIHw9IElucHV0UmVhZGVyUG9saWN5SW50ZXJmYWNlOjpBQ1RJT05fRElTUEFUQ0g7CisKKyAgICAgICAgaWYgKCEgaXNTY3JlZW5CcmlnaHQoKSkgeworICAgICAgICAgICAgLy8gQnJpZ2h0ZW4gdGhlIHNjcmVlbiBpZiBkaW1tZWQuCisgICAgICAgICAgICBhY3Rpb25zIHw9IElucHV0UmVhZGVyUG9saWN5SW50ZXJmYWNlOjpBQ1RJT05fQlJJR0hUX0hFUkU7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gYWN0aW9uczsKK30KKworaW50MzJfdCBOYXRpdmVJbnB1dE1hbmFnZXI6OmludGVyY2VwdFN3aXRjaChuc2Vjc190IHdoZW4sIGludDMyX3Qgc3dpdGNoQ29kZSwKKyAgICAgICAgaW50MzJfdCBzd2l0Y2hWYWx1ZSkgeworI2lmIERFQlVHX0lOUFVUX1JFQURFUl9QT0xJQ1kKKyAgICBMT0dEKCJpbnRlcmNlcHRTd2l0Y2ggLSB3aGVuPSVsbGQsIHN3aXRjaENvZGU9JWQsIHN3aXRjaFZhbHVlPSVkIiwKKyAgICAgICAgICAgIHdoZW4sIHN3aXRjaENvZGUsIHN3aXRjaFZhbHVlKTsKKyNlbmRpZgorCisgICAgSk5JRW52KiBlbnYgPSBqbmlFbnYoKTsKKworICAgIHN3aXRjaCAoc3dpdGNoQ29kZSkgeworICAgIGNhc2UgU1dfTElEOgorICAgICAgICBlbnYtPkNhbGxWb2lkTWV0aG9kKG1DYWxsYmFja3NPYmosIGdDYWxsYmFja3NDbGFzc0luZm8ubm90aWZ5TGlkU3dpdGNoQ2hhbmdlZCwKKyAgICAgICAgICAgICAgICB3aGVuLCBzd2l0Y2hWYWx1ZSA9PSAwKTsKKyAgICAgICAgY2hlY2tBbmRDbGVhckV4Y2VwdGlvbkZyb21DYWxsYmFjayhlbnYsICJub3RpZnlMaWRTd2l0Y2hDaGFuZ2VkIik7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiBJbnB1dFJlYWRlclBvbGljeUludGVyZmFjZTo6QUNUSU9OX05PTkU7Cit9CisKK2Jvb2wgTmF0aXZlSW5wdXRNYW5hZ2VyOjpmaWx0ZXJUb3VjaEV2ZW50cygpIHsKKyAgICBpZiAobUZpbHRlclRvdWNoRXZlbnRzIDwgMCkgeworICAgICAgICBKTklFbnYqIGVudiA9IGpuaUVudigpOworCisgICAgICAgIGpib29sZWFuIHJlc3VsdCA9IGVudi0+Q2FsbEJvb2xlYW5NZXRob2QobUNhbGxiYWNrc09iaiwKKyAgICAgICAgICAgICAgICBnQ2FsbGJhY2tzQ2xhc3NJbmZvLmZpbHRlclRvdWNoRXZlbnRzKTsKKyAgICAgICAgaWYgKGNoZWNrQW5kQ2xlYXJFeGNlcHRpb25Gcm9tQ2FsbGJhY2soZW52LCAiZmlsdGVyVG91Y2hFdmVudHMiKSkgeworICAgICAgICAgICAgcmVzdWx0ID0gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBtRmlsdGVyVG91Y2hFdmVudHMgPSByZXN1bHQgPyAxIDogMDsKKyAgICB9CisgICAgcmV0dXJuIG1GaWx0ZXJUb3VjaEV2ZW50czsKK30KKworYm9vbCBOYXRpdmVJbnB1dE1hbmFnZXI6OmZpbHRlckp1bXB5VG91Y2hFdmVudHMoKSB7CisgICAgaWYgKG1GaWx0ZXJKdW1weVRvdWNoRXZlbnRzIDwgMCkgeworICAgICAgICBKTklFbnYqIGVudiA9IGpuaUVudigpOworCisgICAgICAgIGpib29sZWFuIHJlc3VsdCA9IGVudi0+Q2FsbEJvb2xlYW5NZXRob2QobUNhbGxiYWNrc09iaiwKKyAgICAgICAgICAgICAgICBnQ2FsbGJhY2tzQ2xhc3NJbmZvLmZpbHRlckp1bXB5VG91Y2hFdmVudHMpOworICAgICAgICBpZiAoY2hlY2tBbmRDbGVhckV4Y2VwdGlvbkZyb21DYWxsYmFjayhlbnYsICJmaWx0ZXJKdW1weVRvdWNoRXZlbnRzIikpIHsKKyAgICAgICAgICAgIHJlc3VsdCA9IGZhbHNlOworICAgICAgICB9CisKKyAgICAgICAgbUZpbHRlckp1bXB5VG91Y2hFdmVudHMgPSByZXN1bHQgPyAxIDogMDsKKyAgICB9CisgICAgcmV0dXJuIG1GaWx0ZXJKdW1weVRvdWNoRXZlbnRzOworfQorCit2b2lkIE5hdGl2ZUlucHV0TWFuYWdlcjo6Z2V0VmlydHVhbEtleURlZmluaXRpb25zKGNvbnN0IFN0cmluZzgmIGRldmljZU5hbWUsCisgICAgICAgIFZlY3RvcjxJbnB1dFJlYWRlclBvbGljeUludGVyZmFjZTo6VmlydHVhbEtleURlZmluaXRpb24+JiBvdXRWaXJ0dWFsS2V5RGVmaW5pdGlvbnMpIHsKKyAgICBKTklFbnYqIGVudiA9IGpuaUVudigpOworCisgICAganN0cmluZyBkZXZpY2VOYW1lU3RyID0gZW52LT5OZXdTdHJpbmdVVEYoZGV2aWNlTmFtZS5zdHJpbmcoKSk7CisgICAgaWYgKCEgY2hlY2tBbmRDbGVhckV4Y2VwdGlvbkZyb21DYWxsYmFjayhlbnYsICJnZXRWaXJ0dWFsS2V5RGVmaW5pdGlvbnMiKSkgeworICAgICAgICBqb2JqZWN0QXJyYXkgcmVzdWx0ID0gam9iamVjdEFycmF5KGVudi0+Q2FsbE9iamVjdE1ldGhvZChtQ2FsbGJhY2tzT2JqLAorICAgICAgICAgICAgICAgIGdDYWxsYmFja3NDbGFzc0luZm8uZ2V0VmlydHVhbEtleURlZmluaXRpb25zLCBkZXZpY2VOYW1lU3RyKSk7CisgICAgICAgIGlmICghIGNoZWNrQW5kQ2xlYXJFeGNlcHRpb25Gcm9tQ2FsbGJhY2soZW52LCAiZ2V0VmlydHVhbEtleURlZmluaXRpb25zIikgJiYgcmVzdWx0KSB7CisgICAgICAgICAgICBqc2l6ZSBsZW5ndGggPSBlbnYtPkdldEFycmF5TGVuZ3RoKHJlc3VsdCk7CisgICAgICAgICAgICBmb3IgKGpzaXplIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICBqb2JqZWN0IGl0ZW0gPSBlbnYtPkdldE9iamVjdEFycmF5RWxlbWVudChyZXN1bHQsIGkpOworCisgICAgICAgICAgICAgICAgb3V0VmlydHVhbEtleURlZmluaXRpb25zLmFkZCgpOworICAgICAgICAgICAgICAgIG91dFZpcnR1YWxLZXlEZWZpbml0aW9ucy5lZGl0VG9wKCkuc2NhbkNvZGUgPQorICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdChlbnYtPkdldEludEZpZWxkKGl0ZW0sIGdWaXJ0dWFsS2V5RGVmaW5pdGlvbkNsYXNzSW5mby5zY2FuQ29kZSkpOworICAgICAgICAgICAgICAgIG91dFZpcnR1YWxLZXlEZWZpbml0aW9ucy5lZGl0VG9wKCkuY2VudGVyWCA9CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90KGVudi0+R2V0SW50RmllbGQoaXRlbSwgZ1ZpcnR1YWxLZXlEZWZpbml0aW9uQ2xhc3NJbmZvLmNlbnRlclgpKTsKKyAgICAgICAgICAgICAgICBvdXRWaXJ0dWFsS2V5RGVmaW5pdGlvbnMuZWRpdFRvcCgpLmNlbnRlclkgPQorICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdChlbnYtPkdldEludEZpZWxkKGl0ZW0sIGdWaXJ0dWFsS2V5RGVmaW5pdGlvbkNsYXNzSW5mby5jZW50ZXJZKSk7CisgICAgICAgICAgICAgICAgb3V0VmlydHVhbEtleURlZmluaXRpb25zLmVkaXRUb3AoKS53aWR0aCA9CisgICAgICAgICAgICAgICAgICAgICAgICBpbnQzMl90KGVudi0+R2V0SW50RmllbGQoaXRlbSwgZ1ZpcnR1YWxLZXlEZWZpbml0aW9uQ2xhc3NJbmZvLndpZHRoKSk7CisgICAgICAgICAgICAgICAgb3V0VmlydHVhbEtleURlZmluaXRpb25zLmVkaXRUb3AoKS5oZWlnaHQgPQorICAgICAgICAgICAgICAgICAgICAgICAgaW50MzJfdChlbnYtPkdldEludEZpZWxkKGl0ZW0sIGdWaXJ0dWFsS2V5RGVmaW5pdGlvbkNsYXNzSW5mby5oZWlnaHQpKTsKKworICAgICAgICAgICAgICAgIGVudi0+RGVsZXRlTG9jYWxSZWYoaXRlbSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbnYtPkRlbGV0ZUxvY2FsUmVmKHJlc3VsdCk7CisgICAgICAgIH0KKyAgICAgICAgZW52LT5EZWxldGVMb2NhbFJlZihkZXZpY2VOYW1lU3RyKTsKKyAgICB9Cit9CisKK3ZvaWQgTmF0aXZlSW5wdXRNYW5hZ2VyOjpnZXRFeGNsdWRlZERldmljZU5hbWVzKFZlY3RvcjxTdHJpbmc4PiYgb3V0RXhjbHVkZWREZXZpY2VOYW1lcykgeworICAgIEpOSUVudiogZW52ID0gam5pRW52KCk7CisKKyAgICBqb2JqZWN0QXJyYXkgcmVzdWx0ID0gam9iamVjdEFycmF5KGVudi0+Q2FsbE9iamVjdE1ldGhvZChtQ2FsbGJhY2tzT2JqLAorICAgICAgICAgICAgZ0NhbGxiYWNrc0NsYXNzSW5mby5nZXRFeGNsdWRlZERldmljZU5hbWVzKSk7CisgICAgaWYgKCEgY2hlY2tBbmRDbGVhckV4Y2VwdGlvbkZyb21DYWxsYmFjayhlbnYsICJnZXRFeGNsdWRlZERldmljZU5hbWVzIikgJiYgcmVzdWx0KSB7CisgICAgICAgIGpzaXplIGxlbmd0aCA9IGVudi0+R2V0QXJyYXlMZW5ndGgocmVzdWx0KTsKKyAgICAgICAgZm9yIChqc2l6ZSBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICBqc3RyaW5nIGl0ZW0gPSBqc3RyaW5nKGVudi0+R2V0T2JqZWN0QXJyYXlFbGVtZW50KHJlc3VsdCwgaSkpOworCisgICAgICAgICAgICBjb25zdCBjaGFyKiBkZXZpY2VOYW1lQ2hhcnMgPSBlbnYtPkdldFN0cmluZ1VURkNoYXJzKGl0ZW0sIE5VTEwpOworICAgICAgICAgICAgb3V0RXhjbHVkZWREZXZpY2VOYW1lcy5hZGQoU3RyaW5nOChkZXZpY2VOYW1lQ2hhcnMpKTsKKyAgICAgICAgICAgIGVudi0+UmVsZWFzZVN0cmluZ1VURkNoYXJzKGl0ZW0sIGRldmljZU5hbWVDaGFycyk7CisKKyAgICAgICAgICAgIGVudi0+RGVsZXRlTG9jYWxSZWYoaXRlbSk7CisgICAgICAgIH0KKyAgICAgICAgZW52LT5EZWxldGVMb2NhbFJlZihyZXN1bHQpOworICAgIH0KK30KKwordm9pZCBOYXRpdmVJbnB1dE1hbmFnZXI6Om5vdGlmeUNvbmZpZ3VyYXRpb25DaGFuZ2VkKG5zZWNzX3Qgd2hlbikgeworI2lmIERFQlVHX0lOUFVUX0RJU1BBVENIRVJfUE9MSUNZCisgICAgTE9HRCgibm90aWZ5Q29uZmlndXJhdGlvbkNoYW5nZWQgLSB3aGVuPSVsbGQiLCB3aGVuKTsKKyNlbmRpZgorCisgICAgSk5JRW52KiBlbnYgPSBqbmlFbnYoKTsKKworICAgIElucHV0Q29uZmlndXJhdGlvbiBjb25maWc7CisgICAgbUlucHV0TWFuYWdlci0+Z2V0SW5wdXRDb25maWd1cmF0aW9uKCYgY29uZmlnKTsKKworICAgIGVudi0+Q2FsbFZvaWRNZXRob2QobUNhbGxiYWNrc09iaiwgZ0NhbGxiYWNrc0NsYXNzSW5mby5ub3RpZnlDb25maWd1cmF0aW9uQ2hhbmdlZCwKKyAgICAgICAgICAgIHdoZW4sIGNvbmZpZy50b3VjaFNjcmVlbiwgY29uZmlnLmtleWJvYXJkLCBjb25maWcubmF2aWdhdGlvbik7CisgICAgY2hlY2tBbmRDbGVhckV4Y2VwdGlvbkZyb21DYWxsYmFjayhlbnYsICJub3RpZnlDb25maWd1cmF0aW9uQ2hhbmdlZCIpOworfQorCit2b2lkIE5hdGl2ZUlucHV0TWFuYWdlcjo6bm90aWZ5SW5wdXRDaGFubmVsQnJva2VuKGNvbnN0IHNwPElucHV0Q2hhbm5lbD4mIGlucHV0Q2hhbm5lbCkgeworI2lmIERFQlVHX0lOUFVUX0RJU1BBVENIRVJfUE9MSUNZCisgICAgTE9HRCgibm90aWZ5SW5wdXRDaGFubmVsQnJva2VuIC0gaW5wdXRDaGFubmVsPSclcyciLCBpbnB1dENoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKSk7CisjZW5kaWYKKworICAgIEpOSUVudiogZW52ID0gam5pRW52KCk7CisKKyAgICBqb2JqZWN0IGlucHV0Q2hhbm5lbE9iakxvY2FsID0gZ2V0SW5wdXRDaGFubmVsT2JqTG9jYWwoZW52LCBpbnB1dENoYW5uZWwpOworICAgIGlmIChpbnB1dENoYW5uZWxPYmpMb2NhbCkgeworICAgICAgICBlbnYtPkNhbGxWb2lkTWV0aG9kKG1DYWxsYmFja3NPYmosIGdDYWxsYmFja3NDbGFzc0luZm8ubm90aWZ5SW5wdXRDaGFubmVsQnJva2VuLAorICAgICAgICAgICAgICAgIGlucHV0Q2hhbm5lbE9iakxvY2FsKTsKKyAgICAgICAgY2hlY2tBbmRDbGVhckV4Y2VwdGlvbkZyb21DYWxsYmFjayhlbnYsICJub3RpZnlJbnB1dENoYW5uZWxCcm9rZW4iKTsKKworICAgICAgICBlbnYtPkRlbGV0ZUxvY2FsUmVmKGlucHV0Q2hhbm5lbE9iakxvY2FsKTsKKyAgICB9Cit9CisKK2Jvb2wgTmF0aXZlSW5wdXRNYW5hZ2VyOjpub3RpZnlJbnB1dENoYW5uZWxBTlIoY29uc3Qgc3A8SW5wdXRDaGFubmVsPiYgaW5wdXRDaGFubmVsLAorICAgICAgICBuc2Vjc190JiBvdXROZXdUaW1lb3V0KSB7CisjaWYgREVCVUdfSU5QVVRfRElTUEFUQ0hFUl9QT0xJQ1kKKyAgICBMT0dEKCJub3RpZnlJbnB1dENoYW5uZWxBTlIgLSBpbnB1dENoYW5uZWw9JyVzJyIsCisgICAgICAgICAgICBpbnB1dENoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKSk7CisjZW5kaWYKKworICAgIEpOSUVudiogZW52ID0gam5pRW52KCk7CisKKyAgICBqbG9uZyBuZXdUaW1lb3V0OworICAgIGpvYmplY3QgaW5wdXRDaGFubmVsT2JqTG9jYWwgPSBnZXRJbnB1dENoYW5uZWxPYmpMb2NhbChlbnYsIGlucHV0Q2hhbm5lbCk7CisgICAgaWYgKGlucHV0Q2hhbm5lbE9iakxvY2FsKSB7CisgICAgICAgIG5ld1RpbWVvdXQgPSBlbnYtPkNhbGxMb25nTWV0aG9kKG1DYWxsYmFja3NPYmosCisgICAgICAgICAgICAgICAgZ0NhbGxiYWNrc0NsYXNzSW5mby5ub3RpZnlJbnB1dENoYW5uZWxBTlIsIGlucHV0Q2hhbm5lbE9iakxvY2FsKTsKKyAgICAgICAgaWYgKGNoZWNrQW5kQ2xlYXJFeGNlcHRpb25Gcm9tQ2FsbGJhY2soZW52LCAibm90aWZ5SW5wdXRDaGFubmVsQU5SIikpIHsKKyAgICAgICAgICAgIG5ld1RpbWVvdXQgPSAtMjsKKyAgICAgICAgfQorCisgICAgICAgIGVudi0+RGVsZXRlTG9jYWxSZWYoaW5wdXRDaGFubmVsT2JqTG9jYWwpOworICAgIH0gZWxzZSB7CisgICAgICAgIG5ld1RpbWVvdXQgPSAtMjsKKyAgICB9CisKKyAgICBpZiAobmV3VGltZW91dCA9PSAtMikgeworICAgICAgICByZXR1cm4gZmFsc2U7IC8vIGFib3J0CisgICAgfQorCisgICAgb3V0TmV3VGltZW91dCA9IG5ld1RpbWVvdXQ7CisgICAgcmV0dXJuIHRydWU7IC8vIHJlc3VtZQorfQorCit2b2lkIE5hdGl2ZUlucHV0TWFuYWdlcjo6bm90aWZ5SW5wdXRDaGFubmVsUmVjb3ZlcmVkRnJvbUFOUihjb25zdCBzcDxJbnB1dENoYW5uZWw+JiBpbnB1dENoYW5uZWwpIHsKKyNpZiBERUJVR19JTlBVVF9ESVNQQVRDSEVSX1BPTElDWQorICAgIExPR0QoIm5vdGlmeUlucHV0Q2hhbm5lbFJlY292ZXJlZEZyb21BTlIgLSBpbnB1dENoYW5uZWw9JyVzJyIsCisgICAgICAgICAgICBpbnB1dENoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKSk7CisjZW5kaWYKKworICAgIEpOSUVudiogZW52ID0gam5pRW52KCk7CisKKyAgICBqb2JqZWN0IGlucHV0Q2hhbm5lbE9iakxvY2FsID0gZ2V0SW5wdXRDaGFubmVsT2JqTG9jYWwoZW52LCBpbnB1dENoYW5uZWwpOworICAgIGlmIChpbnB1dENoYW5uZWxPYmpMb2NhbCkgeworICAgICAgICBlbnYtPkNhbGxWb2lkTWV0aG9kKG1DYWxsYmFja3NPYmosIGdDYWxsYmFja3NDbGFzc0luZm8ubm90aWZ5SW5wdXRDaGFubmVsUmVjb3ZlcmVkRnJvbUFOUiwKKyAgICAgICAgICAgICAgICBpbnB1dENoYW5uZWxPYmpMb2NhbCk7CisgICAgICAgIGNoZWNrQW5kQ2xlYXJFeGNlcHRpb25Gcm9tQ2FsbGJhY2soZW52LCAibm90aWZ5SW5wdXRDaGFubmVsUmVjb3ZlcmVkRnJvbUFOUiIpOworCisgICAgICAgIGVudi0+RGVsZXRlTG9jYWxSZWYoaW5wdXRDaGFubmVsT2JqTG9jYWwpOworICAgIH0KK30KKworYm9vbCBOYXRpdmVJbnB1dE1hbmFnZXI6Om5vdGlmeUFOUihqb2JqZWN0IHRva2VuT2JqLCBuc2Vjc190JiBvdXROZXdUaW1lb3V0KSB7CisjaWYgREVCVUdfSU5QVVRfRElTUEFUQ0hFUl9QT0xJQ1kKKyAgICBMT0dEKCJub3RpZnlBTlIiKTsKKyNlbmRpZgorCisgICAgSk5JRW52KiBlbnYgPSBqbmlFbnYoKTsKKworICAgIGpsb25nIG5ld1RpbWVvdXQgPSBlbnYtPkNhbGxMb25nTWV0aG9kKG1DYWxsYmFja3NPYmosCisgICAgICAgICAgICBnQ2FsbGJhY2tzQ2xhc3NJbmZvLm5vdGlmeUFOUiwgdG9rZW5PYmopOworICAgIGlmIChjaGVja0FuZENsZWFyRXhjZXB0aW9uRnJvbUNhbGxiYWNrKGVudiwgIm5vdGlmeUFOUiIpKSB7CisgICAgICAgIG5ld1RpbWVvdXQgPSAtMjsKKyAgICB9CisKKyAgICBpZiAobmV3VGltZW91dCA9PSAtMikgeworICAgICAgICByZXR1cm4gZmFsc2U7IC8vIGFib3J0CisgICAgfQorCisgICAgb3V0TmV3VGltZW91dCA9IG5ld1RpbWVvdXQ7CisgICAgcmV0dXJuIHRydWU7IC8vIHJlc3VtZQorfQorCituc2Vjc190IE5hdGl2ZUlucHV0TWFuYWdlcjo6Z2V0S2V5UmVwZWF0VGltZW91dCgpIHsKKyAgICBpZiAoISBpc1NjcmVlbk9uKCkpIHsKKyAgICAgICAgLy8gRGlzYWJsZSBrZXkgcmVwZWF0IHdoZW4gdGhlIHNjcmVlbiBpcyBvZmYuCisgICAgICAgIHJldHVybiAtMTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBUT0RPIHVzZSBWaWV3Q29uZmlndXJhdGlvbi5nZXRMb25nUHJlc3NUaW1lb3V0KCkKKyAgICAgICAgcmV0dXJuIG1pbGxpc2Vjb25kc190b19uYW5vc2Vjb25kcyg1MDApOworICAgIH0KK30KKwordm9pZCBOYXRpdmVJbnB1dE1hbmFnZXI6OnNldElucHV0V2luZG93cyhKTklFbnYqIGVudiwgam9iamVjdEFycmF5IHdpbmRvd09iakFycmF5KSB7CisjaWYgREVCVUdfRk9DVVMKKyAgICBMT0dEKCJzZXRJbnB1dFdpbmRvd3MiKTsKKyNlbmRpZgorICAgIHsgLy8gYWNxdWlyZSBsb2NrCisgICAgICAgIEF1dG9NdXRleCBfbChtRGlzcGF0Y2hMb2NrKTsKKworICAgICAgICBzcDxJbnB1dENoYW5uZWw+IHRvdWNoZWRXaW5kb3dDaGFubmVsOworICAgICAgICBpZiAobVRvdWNoZWRXaW5kb3cpIHsKKyAgICAgICAgICAgIHRvdWNoZWRXaW5kb3dDaGFubmVsID0gbVRvdWNoZWRXaW5kb3ctPmlucHV0Q2hhbm5lbDsKKyAgICAgICAgICAgIG1Ub3VjaGVkV2luZG93ID0gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBzaXplX3QgbnVtVG91Y2hlZFdhbGxwYXBlcnMgPSBtVG91Y2hlZFdhbGxwYXBlcldpbmRvd3Muc2l6ZSgpOworICAgICAgICBpZiAobnVtVG91Y2hlZFdhbGxwYXBlcnMgIT0gMCkgeworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1Ub3VjaGVkV2FsbHBhcGVyczsgaSsrKSB7CisgICAgICAgICAgICAgICAgbVRlbXBUb3VjaGVkV2FsbHBhcGVyQ2hhbm5lbHMucHVzaChtVG91Y2hlZFdhbGxwYXBlcldpbmRvd3NbaV0tPmlucHV0Q2hhbm5lbCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBtVG91Y2hlZFdhbGxwYXBlcldpbmRvd3MuY2xlYXIoKTsKKyAgICAgICAgfQorCisgICAgICAgIG1XaW5kb3dzLmNsZWFyKCk7CisgICAgICAgIG1Gb2N1c2VkV2luZG93ID0gTlVMTDsKKyAgICAgICAgbVdhbGxwYXBlcldpbmRvd3MuY2xlYXIoKTsKKworICAgICAgICBpZiAod2luZG93T2JqQXJyYXkpIHsKKyAgICAgICAgICAgIG1XaW5kb3dzUmVhZHkgPSB0cnVlOworCisgICAgICAgICAgICBqc2l6ZSBsZW5ndGggPSBlbnYtPkdldEFycmF5TGVuZ3RoKHdpbmRvd09iakFycmF5KTsKKyAgICAgICAgICAgIGZvciAoanNpemUgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgIGpvYmplY3QgaW5wdXRUYXJnZXRPYmogPSBlbnYtPkdldE9iamVjdEFycmF5RWxlbWVudCh3aW5kb3dPYmpBcnJheSwgaSk7CisgICAgICAgICAgICAgICAgaWYgKCEgaW5wdXRUYXJnZXRPYmopIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8vIGZvdW5kIG51bGwgZWxlbWVudCBpbmRpY2F0aW5nIGVuZCBvZiB1c2VkIHBvcnRpb24gb2YgdGhlIGFycmF5CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgbVdpbmRvd3MucHVzaCgpOworICAgICAgICAgICAgICAgIElucHV0V2luZG93JiB3aW5kb3cgPSBtV2luZG93cy5lZGl0VG9wKCk7CisgICAgICAgICAgICAgICAgYm9vbCB2YWxpZCA9IHBvcHVsYXRlV2luZG93KGVudiwgaW5wdXRUYXJnZXRPYmosIHdpbmRvdyk7CisgICAgICAgICAgICAgICAgaWYgKCEgdmFsaWQpIHsKKyAgICAgICAgICAgICAgICAgICAgbVdpbmRvd3MucG9wKCk7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgZW52LT5EZWxldGVMb2NhbFJlZihpbnB1dFRhcmdldE9iaik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHNpemVfdCBudW1XaW5kb3dzID0gbVdpbmRvd3Muc2l6ZSgpOworICAgICAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1XaW5kb3dzOyBpKyspIHsKKyAgICAgICAgICAgICAgICBJbnB1dFdpbmRvdyogd2luZG93ID0gJiBtV2luZG93cy5lZGl0SXRlbUF0KGkpOworICAgICAgICAgICAgICAgIGlmICh3aW5kb3ctPmhhc0ZvY3VzKSB7CisgICAgICAgICAgICAgICAgICAgIG1Gb2N1c2VkV2luZG93ID0gd2luZG93OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmICh3aW5kb3ctPmxheW91dFBhcmFtc1R5cGUgPT0gVFlQRV9XQUxMUEFQRVIpIHsKKyAgICAgICAgICAgICAgICAgICAgbVdhbGxwYXBlcldpbmRvd3MucHVzaCh3aW5kb3cpOworCisgICAgICAgICAgICAgICAgICAgIGZvciAoc2l6ZV90IGogPSAwOyBqIDwgbnVtVG91Y2hlZFdhbGxwYXBlcnM7IGorKykgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpbmRvdy0+aW5wdXRDaGFubmVsID09IG1UZW1wVG91Y2hlZFdhbGxwYXBlckNoYW5uZWxzW2ldKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbVRvdWNoZWRXYWxscGFwZXJXaW5kb3dzLnB1c2god2luZG93KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmICh3aW5kb3ctPmlucHV0Q2hhbm5lbCA9PSB0b3VjaGVkV2luZG93Q2hhbm5lbCkgeworICAgICAgICAgICAgICAgICAgICBtVG91Y2hlZFdpbmRvdyA9IHdpbmRvdzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBtV2luZG93c1JlYWR5ID0gZmFsc2U7CisgICAgICAgIH0KKworICAgICAgICBtVGVtcFRvdWNoZWRXYWxscGFwZXJDaGFubmVscy5jbGVhcigpOworCisgICAgICAgIG1EaXNwYXRjaFN0YXRlQ2hhbmdlZC5icm9hZGNhc3QoKTsKKworI2lmIERFQlVHX0ZPQ1VTCisgICAgICAgIGR1bXBEaXNwYXRjaFN0YXRlTGQoKTsKKyNlbmRpZgorICAgIH0gLy8gcmVsZWFzZSBsb2NrCit9CisKK2Jvb2wgTmF0aXZlSW5wdXRNYW5hZ2VyOjpwb3B1bGF0ZVdpbmRvdyhKTklFbnYqIGVudiwgam9iamVjdCB3aW5kb3dPYmosCisgICAgICAgIElucHV0V2luZG93JiBvdXRXaW5kb3cpIHsKKyAgICBib29sIHZhbGlkID0gZmFsc2U7CisKKyAgICBqb2JqZWN0IGlucHV0Q2hhbm5lbE9iaiA9IGVudi0+R2V0T2JqZWN0RmllbGQod2luZG93T2JqLAorICAgICAgICAgICAgZ0lucHV0V2luZG93Q2xhc3NJbmZvLmlucHV0Q2hhbm5lbCk7CisgICAgaWYgKGlucHV0Q2hhbm5lbE9iaikgeworICAgICAgICBzcDxJbnB1dENoYW5uZWw+IGlucHV0Q2hhbm5lbCA9CisgICAgICAgICAgICAgICAgYW5kcm9pZF92aWV3X0lucHV0Q2hhbm5lbF9nZXRJbnB1dENoYW5uZWwoZW52LCBpbnB1dENoYW5uZWxPYmopOworICAgICAgICBpZiAoaW5wdXRDaGFubmVsICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGppbnQgbGF5b3V0UGFyYW1zRmxhZ3MgPSBlbnYtPkdldEludEZpZWxkKHdpbmRvd09iaiwKKyAgICAgICAgICAgICAgICAgICAgZ0lucHV0V2luZG93Q2xhc3NJbmZvLmxheW91dFBhcmFtc0ZsYWdzKTsKKyAgICAgICAgICAgIGppbnQgbGF5b3V0UGFyYW1zVHlwZSA9IGVudi0+R2V0SW50RmllbGQod2luZG93T2JqLAorICAgICAgICAgICAgICAgICAgICBnSW5wdXRXaW5kb3dDbGFzc0luZm8ubGF5b3V0UGFyYW1zVHlwZSk7CisgICAgICAgICAgICBqbG9uZyBkaXNwYXRjaGluZ1RpbWVvdXROYW5vcyA9IGVudi0+R2V0TG9uZ0ZpZWxkKHdpbmRvd09iaiwKKyAgICAgICAgICAgICAgICAgICAgZ0lucHV0V2luZG93Q2xhc3NJbmZvLmRpc3BhdGNoaW5nVGltZW91dE5hbm9zKTsKKyAgICAgICAgICAgIGppbnQgZnJhbWVMZWZ0ID0gZW52LT5HZXRJbnRGaWVsZCh3aW5kb3dPYmosCisgICAgICAgICAgICAgICAgICAgIGdJbnB1dFdpbmRvd0NsYXNzSW5mby5mcmFtZUxlZnQpOworICAgICAgICAgICAgamludCBmcmFtZVRvcCA9IGVudi0+R2V0SW50RmllbGQod2luZG93T2JqLAorICAgICAgICAgICAgICAgICAgICBnSW5wdXRXaW5kb3dDbGFzc0luZm8uZnJhbWVUb3ApOworICAgICAgICAgICAgamludCB0b3VjaGFibGVBcmVhTGVmdCA9IGVudi0+R2V0SW50RmllbGQod2luZG93T2JqLAorICAgICAgICAgICAgICAgICAgICBnSW5wdXRXaW5kb3dDbGFzc0luZm8udG91Y2hhYmxlQXJlYUxlZnQpOworICAgICAgICAgICAgamludCB0b3VjaGFibGVBcmVhVG9wID0gZW52LT5HZXRJbnRGaWVsZCh3aW5kb3dPYmosCisgICAgICAgICAgICAgICAgICAgIGdJbnB1dFdpbmRvd0NsYXNzSW5mby50b3VjaGFibGVBcmVhVG9wKTsKKyAgICAgICAgICAgIGppbnQgdG91Y2hhYmxlQXJlYVJpZ2h0ID0gZW52LT5HZXRJbnRGaWVsZCh3aW5kb3dPYmosCisgICAgICAgICAgICAgICAgICAgIGdJbnB1dFdpbmRvd0NsYXNzSW5mby50b3VjaGFibGVBcmVhUmlnaHQpOworICAgICAgICAgICAgamludCB0b3VjaGFibGVBcmVhQm90dG9tID0gZW52LT5HZXRJbnRGaWVsZCh3aW5kb3dPYmosCisgICAgICAgICAgICAgICAgICAgIGdJbnB1dFdpbmRvd0NsYXNzSW5mby50b3VjaGFibGVBcmVhQm90dG9tKTsKKyAgICAgICAgICAgIGpib29sZWFuIHZpc2libGUgPSBlbnYtPkdldEJvb2xlYW5GaWVsZCh3aW5kb3dPYmosCisgICAgICAgICAgICAgICAgICAgIGdJbnB1dFdpbmRvd0NsYXNzSW5mby52aXNpYmxlKTsKKyAgICAgICAgICAgIGpib29sZWFuIGhhc0ZvY3VzID0gZW52LT5HZXRCb29sZWFuRmllbGQod2luZG93T2JqLAorICAgICAgICAgICAgICAgICAgICBnSW5wdXRXaW5kb3dDbGFzc0luZm8uaGFzRm9jdXMpOworICAgICAgICAgICAgamJvb2xlYW4gaGFzV2FsbHBhcGVyID0gZW52LT5HZXRCb29sZWFuRmllbGQod2luZG93T2JqLAorICAgICAgICAgICAgICAgICAgICBnSW5wdXRXaW5kb3dDbGFzc0luZm8uaGFzV2FsbHBhcGVyKTsKKyAgICAgICAgICAgIGpib29sZWFuIHBhdXNlZCA9IGVudi0+R2V0Qm9vbGVhbkZpZWxkKHdpbmRvd09iaiwKKyAgICAgICAgICAgICAgICAgICAgZ0lucHV0V2luZG93Q2xhc3NJbmZvLnBhdXNlZCk7CisgICAgICAgICAgICBqaW50IG93bmVyUGlkID0gZW52LT5HZXRJbnRGaWVsZCh3aW5kb3dPYmosCisgICAgICAgICAgICAgICAgICAgIGdJbnB1dFdpbmRvd0NsYXNzSW5mby5vd25lclBpZCk7CisgICAgICAgICAgICBqaW50IG93bmVyVWlkID0gZW52LT5HZXRJbnRGaWVsZCh3aW5kb3dPYmosCisgICAgICAgICAgICAgICAgICAgIGdJbnB1dFdpbmRvd0NsYXNzSW5mby5vd25lclVpZCk7CisKKyAgICAgICAgICAgIG91dFdpbmRvdy5pbnB1dENoYW5uZWwgPSBpbnB1dENoYW5uZWw7CisgICAgICAgICAgICBvdXRXaW5kb3cubGF5b3V0UGFyYW1zRmxhZ3MgPSBsYXlvdXRQYXJhbXNGbGFnczsKKyAgICAgICAgICAgIG91dFdpbmRvdy5sYXlvdXRQYXJhbXNUeXBlID0gbGF5b3V0UGFyYW1zVHlwZTsKKyAgICAgICAgICAgIG91dFdpbmRvdy5kaXNwYXRjaGluZ1RpbWVvdXQgPSBkaXNwYXRjaGluZ1RpbWVvdXROYW5vczsKKyAgICAgICAgICAgIG91dFdpbmRvdy5mcmFtZUxlZnQgPSBmcmFtZUxlZnQ7CisgICAgICAgICAgICBvdXRXaW5kb3cuZnJhbWVUb3AgPSBmcmFtZVRvcDsKKyAgICAgICAgICAgIG91dFdpbmRvdy50b3VjaGFibGVBcmVhTGVmdCA9IHRvdWNoYWJsZUFyZWFMZWZ0OworICAgICAgICAgICAgb3V0V2luZG93LnRvdWNoYWJsZUFyZWFUb3AgPSB0b3VjaGFibGVBcmVhVG9wOworICAgICAgICAgICAgb3V0V2luZG93LnRvdWNoYWJsZUFyZWFSaWdodCA9IHRvdWNoYWJsZUFyZWFSaWdodDsKKyAgICAgICAgICAgIG91dFdpbmRvdy50b3VjaGFibGVBcmVhQm90dG9tID0gdG91Y2hhYmxlQXJlYUJvdHRvbTsKKyAgICAgICAgICAgIG91dFdpbmRvdy52aXNpYmxlID0gdmlzaWJsZTsKKyAgICAgICAgICAgIG91dFdpbmRvdy5oYXNGb2N1cyA9IGhhc0ZvY3VzOworICAgICAgICAgICAgb3V0V2luZG93Lmhhc1dhbGxwYXBlciA9IGhhc1dhbGxwYXBlcjsKKyAgICAgICAgICAgIG91dFdpbmRvdy5wYXVzZWQgPSBwYXVzZWQ7CisgICAgICAgICAgICBvdXRXaW5kb3cub3duZXJQaWQgPSBvd25lclBpZDsKKyAgICAgICAgICAgIG91dFdpbmRvdy5vd25lclVpZCA9IG93bmVyVWlkOworICAgICAgICAgICAgdmFsaWQgPSB0cnVlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgTE9HVygiRHJvcHBpbmcgaW5wdXQgdGFyZ2V0IGJlY2F1c2UgaXRzIGlucHV0IGNoYW5uZWwgaXMgbm90IGluaXRpYWxpemVkLiIpOworICAgICAgICB9CisKKyAgICAgICAgZW52LT5EZWxldGVMb2NhbFJlZihpbnB1dENoYW5uZWxPYmopOworICAgIH0gZWxzZSB7CisgICAgICAgIExPR1coIkRyb3BwaW5nIGlucHV0IHRhcmdldCBiZWNhdXNlIHRoZSBpbnB1dCBjaGFubmVsIG9iamVjdCB3YXMgbnVsbC4iKTsKKyAgICB9CisgICAgcmV0dXJuIHZhbGlkOworfQorCit2b2lkIE5hdGl2ZUlucHV0TWFuYWdlcjo6c2V0Rm9jdXNlZEFwcGxpY2F0aW9uKEpOSUVudiogZW52LCBqb2JqZWN0IGFwcGxpY2F0aW9uT2JqKSB7CisjaWYgREVCVUdfRk9DVVMKKyAgICBMT0dEKCJzZXRGb2N1c2VkQXBwbGljYXRpb24iKTsKKyNlbmRpZgorICAgIHsgLy8gYWNxdWlyZSBsb2NrCisgICAgICAgIEF1dG9NdXRleCBfbChtRGlzcGF0Y2hMb2NrKTsKKworICAgICAgICByZWxlYXNlRm9jdXNlZEFwcGxpY2F0aW9uTGQoZW52KTsKKworICAgICAgICBpZiAoYXBwbGljYXRpb25PYmopIHsKKyAgICAgICAgICAgIGpzdHJpbmcgbmFtZU9iaiA9IGpzdHJpbmcoZW52LT5HZXRPYmplY3RGaWVsZChhcHBsaWNhdGlvbk9iaiwKKyAgICAgICAgICAgICAgICAgICAgZ0lucHV0QXBwbGljYXRpb25DbGFzc0luZm8ubmFtZSkpOworICAgICAgICAgICAgamxvbmcgZGlzcGF0Y2hpbmdUaW1lb3V0TmFub3MgPSBlbnYtPkdldExvbmdGaWVsZChhcHBsaWNhdGlvbk9iaiwKKyAgICAgICAgICAgICAgICAgICAgZ0lucHV0QXBwbGljYXRpb25DbGFzc0luZm8uZGlzcGF0Y2hpbmdUaW1lb3V0TmFub3MpOworICAgICAgICAgICAgam9iamVjdCB0b2tlbk9iaiA9IGVudi0+R2V0T2JqZWN0RmllbGQoYXBwbGljYXRpb25PYmosCisgICAgICAgICAgICAgICAgICAgIGdJbnB1dEFwcGxpY2F0aW9uQ2xhc3NJbmZvLnRva2VuKTsKKyAgICAgICAgICAgIGp3ZWFrIHRva2VuT2JqV2VhayA9IGVudi0+TmV3V2Vha0dsb2JhbFJlZih0b2tlbk9iaik7CisgICAgICAgICAgICBpZiAoISB0b2tlbk9ialdlYWspIHsKKyAgICAgICAgICAgICAgICBMT0dFKCJDb3VsZCBub3QgY3JlYXRlIHdlYWsgcmVmZXJlbmNlIGZvciBhcHBsaWNhdGlvbiB0b2tlbi4iKTsKKyAgICAgICAgICAgICAgICBMT0dFX0VYKGVudik7CisgICAgICAgICAgICAgICAgZW52LT5FeGNlcHRpb25DbGVhcigpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZW52LT5EZWxldGVMb2NhbFJlZih0b2tlbk9iaik7CisKKyAgICAgICAgICAgIG1Gb2N1c2VkQXBwbGljYXRpb24gPSAmIG1Gb2N1c2VkQXBwbGljYXRpb25TdG9yYWdlOworCisgICAgICAgICAgICBpZiAobmFtZU9iaikgeworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIG5hbWVTdHIgPSBlbnYtPkdldFN0cmluZ1VURkNoYXJzKG5hbWVPYmosIE5VTEwpOworICAgICAgICAgICAgICAgIG1Gb2N1c2VkQXBwbGljYXRpb24tPm5hbWUuc2V0VG8obmFtZVN0cik7CisgICAgICAgICAgICAgICAgZW52LT5SZWxlYXNlU3RyaW5nVVRGQ2hhcnMobmFtZU9iaiwgbmFtZVN0cik7CisgICAgICAgICAgICAgICAgZW52LT5EZWxldGVMb2NhbFJlZihuYW1lT2JqKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgTE9HRSgiSW5wdXRBcHBsaWNhdGlvbi5uYW1lIHNob3VsZCBub3QgYmUgbnVsbC4iKTsKKyAgICAgICAgICAgICAgICBtRm9jdXNlZEFwcGxpY2F0aW9uLT5uYW1lLnNldFRvKCJ1bmtub3duIik7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1Gb2N1c2VkQXBwbGljYXRpb24tPmRpc3BhdGNoaW5nVGltZW91dCA9IGRpc3BhdGNoaW5nVGltZW91dE5hbm9zOworICAgICAgICAgICAgbUZvY3VzZWRBcHBsaWNhdGlvbi0+dG9rZW5PYmpXZWFrID0gdG9rZW5PYmpXZWFrOworICAgICAgICB9CisKKyAgICAgICAgbURpc3BhdGNoU3RhdGVDaGFuZ2VkLmJyb2FkY2FzdCgpOworCisjaWYgREVCVUdfRk9DVVMKKyAgICAgICAgZHVtcERpc3BhdGNoU3RhdGVMZCgpOworI2VuZGlmCisgICAgfSAvLyByZWxlYXNlIGxvY2sKK30KKwordm9pZCBOYXRpdmVJbnB1dE1hbmFnZXI6OnJlbGVhc2VGb2N1c2VkQXBwbGljYXRpb25MZChKTklFbnYqIGVudikgeworICAgIGlmIChtRm9jdXNlZEFwcGxpY2F0aW9uKSB7CisgICAgICAgIGVudi0+RGVsZXRlV2Vha0dsb2JhbFJlZihtRm9jdXNlZEFwcGxpY2F0aW9uLT50b2tlbk9ialdlYWspOworICAgICAgICBtRm9jdXNlZEFwcGxpY2F0aW9uID0gTlVMTDsKKyAgICB9Cit9CisKK3ZvaWQgTmF0aXZlSW5wdXRNYW5hZ2VyOjpzZXRJbnB1dERpc3BhdGNoTW9kZShib29sIGVuYWJsZWQsIGJvb2wgZnJvemVuKSB7CisjaWYgREVCVUdfRk9DVVMKKyAgICBMT0dEKCJzZXRJbnB1dERpc3BhdGNoTW9kZTogZW5hYmxlZD0lZCwgZnJvemVuPSVkIiwgZW5hYmxlZCwgZnJvemVuKTsKKyNlbmRpZgorCisgICAgeyAvLyBhY3F1aXJlIGxvY2sKKyAgICAgICAgQXV0b011dGV4IF9sKG1EaXNwYXRjaExvY2spOworCisgICAgICAgIGlmIChtRGlzcGF0Y2hFbmFibGVkICE9IGVuYWJsZWQgfHwgbURpc3BhdGNoRnJvemVuICE9IGZyb3plbikgeworICAgICAgICAgICAgbURpc3BhdGNoRW5hYmxlZCA9IGVuYWJsZWQ7CisgICAgICAgICAgICBtRGlzcGF0Y2hGcm96ZW4gPSBmcm96ZW47CisKKyAgICAgICAgICAgIG1EaXNwYXRjaFN0YXRlQ2hhbmdlZC5icm9hZGNhc3QoKTsKKyAgICAgICAgfQorCisjaWYgREVCVUdfRk9DVVMKKyAgICAgICAgZHVtcERpc3BhdGNoU3RhdGVMZCgpOworI2VuZGlmCisgICAgfSAvLyByZWxlYXNlIGxvY2sKK30KKwordm9pZCBOYXRpdmVJbnB1dE1hbmFnZXI6OnByZWVtcHRJbnB1dERpc3BhdGNoKCkgeworI2lmIERFQlVHX0ZPQ1VTCisgICAgTE9HRCgicHJlZW1wdElucHV0RGlzcGF0Y2giKTsKKyNlbmRpZgorCisgICAgbUlucHV0TWFuYWdlci0+cHJlZW1wdElucHV0RGlzcGF0Y2goKTsKK30KKworaW50MzJfdCBOYXRpdmVJbnB1dE1hbmFnZXI6OndhaXRGb3JGb2N1c2VkV2luZG93TGQodWludDMyX3QgcG9saWN5RmxhZ3MsCisgICAgICAgIGludDMyX3QgaW5qZWN0b3JQaWQsIGludDMyX3QgaW5qZWN0b3JVaWQsIFZlY3RvcjxJbnB1dFRhcmdldD4mIG91dFRhcmdldHMsCisgICAgICAgIElucHV0V2luZG93KiYgb3V0Rm9jdXNlZFdpbmRvdykgeworCisgICAgaW50MzJfdCBpbmplY3Rpb25SZXN1bHQgPSBJTlBVVF9FVkVOVF9JTkpFQ1RJT05fU1VDQ0VFREVEOworICAgIGJvb2wgZmlyc3RJdGVyYXRpb24gPSB0cnVlOworICAgIEFOUlRpbWVyIGFuclRpbWVyOworICAgIGZvciAoOzspIHsKKyAgICAgICAgaWYgKGZpcnN0SXRlcmF0aW9uKSB7CisgICAgICAgICAgICBmaXJzdEl0ZXJhdGlvbiA9IGZhbHNlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKCEgYW5yVGltZXIud2FpdEZvckRpc3BhdGNoU3RhdGVDaGFuZ2VMZCh0aGlzKSkgeworICAgICAgICAgICAgICAgIExPR1coIkRyb3BwaW5nIGV2ZW50IGJlY2F1c2UgdGhlIGRpc3BhdGNoZXIgdGltZWQgb3V0IHdhaXRpbmcgdG8gaWRlbnRpZnkgIgorICAgICAgICAgICAgICAgICAgICAgICAgInRoZSB3aW5kb3cgdGhhdCBzaG91bGQgcmVjZWl2ZSBpdC4iKTsKKyAgICAgICAgICAgICAgICBpbmplY3Rpb25SZXN1bHQgPSBJTlBVVF9FVkVOVF9JTkpFQ1RJT05fVElNRURfT1VUOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgZGlzcGF0Y2ggaXMgbm90IGVuYWJsZWQgdGhlbiBmYWlsLgorICAgICAgICBpZiAoISBtRGlzcGF0Y2hFbmFibGVkKSB7CisgICAgICAgICAgICBMT0dJKCJEcm9wcGluZyBldmVudCBiZWNhdXNlIGlucHV0IGRpc3BhdGNoIGlzIGRpc2FibGVkLiIpOworICAgICAgICAgICAgaW5qZWN0aW9uUmVzdWx0ID0gSU5QVVRfRVZFTlRfSU5KRUNUSU9OX0ZBSUxFRDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgZGlzcGF0Y2ggaXMgZnJvemVuIG9yIHdlIGRvbid0IGhhdmUgdmFsaWQgd2luZG93IGRhdGEgeWV0IHRoZW4gd2FpdC4KKyAgICAgICAgaWYgKG1EaXNwYXRjaEZyb3plbiB8fCAhIG1XaW5kb3dzUmVhZHkpIHsKKyNpZiBERUJVR19GT0NVUworICAgICAgICAgICAgTE9HRCgiV2FpdGluZyBiZWNhdXNlIGRpc3BhdGNoIGlzIGZyb3plbiBvciB3aW5kb3dzIGFyZSBub3QgcmVhZHkuIik7CisjZW5kaWYKKyAgICAgICAgICAgIGFuclRpbWVyLmRpc3BhdGNoRnJvemVuQnlTeXN0ZW0oKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gY3VycmVudGx5IGZvY3VzZWQgd2luZG93IGFuZCBubyBmb2N1c2VkIGFwcGxpY2F0aW9uCisgICAgICAgIC8vIHRoZW4gZHJvcCB0aGUgZXZlbnQuCisgICAgICAgIGlmICghIG1Gb2N1c2VkV2luZG93KSB7CisgICAgICAgICAgICBpZiAobUZvY3VzZWRBcHBsaWNhdGlvbikgeworI2lmIERFQlVHX0ZPQ1VTCisgICAgICAgICAgICAgICAgTE9HRCgiV2FpdGluZyBiZWNhdXNlIHRoZXJlIGlzIG5vIGZvY3VzZWQgd2luZG93IGJ1dCB0aGVyZSBpcyBhICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJmb2N1c2VkIGFwcGxpY2F0aW9uIHRoYXQgbWF5IHlldCBpbnRyb2R1Y2UgYSBuZXcgdGFyZ2V0OiAnJXMnLiIsCisgICAgICAgICAgICAgICAgICAgICAgICBtRm9jdXNlZEFwcGxpY2F0aW9uLT5uYW1lLnN0cmluZygpKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBMT0dJKCJEcm9wcGluZyBldmVudCBiZWNhdXNlIHRoZXJlIGlzIG5vIGZvY3VzZWQgd2luZG93IG9yIGZvY3VzZWQgYXBwbGljYXRpb24uIik7CisgICAgICAgICAgICBpbmplY3Rpb25SZXN1bHQgPSBJTlBVVF9FVkVOVF9JTkpFQ1RJT05fRkFJTEVEOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICAvLyBDaGVjayBwZXJtaXNzaW9ucy4KKyAgICAgICAgaWYgKCEgY2hlY2tJbmplY3Rpb25QZXJtaXNzaW9uKG1Gb2N1c2VkV2luZG93LCBpbmplY3RvclBpZCwgaW5qZWN0b3JVaWQpKSB7CisgICAgICAgICAgICBpbmplY3Rpb25SZXN1bHQgPSBJTlBVVF9FVkVOVF9JTkpFQ1RJT05fUEVSTUlTU0lPTl9ERU5JRUQ7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIC8vIElmIHRoZSBjdXJyZW50bHkgZm9jdXNlZCB3aW5kb3cgaXMgcGF1c2VkIHRoZW4ga2VlcCB3YWl0aW5nLgorICAgICAgICBpZiAobUZvY3VzZWRXaW5kb3ctPnBhdXNlZCkgeworI2lmIERFQlVHX0ZPQ1VTCisgICAgICAgICAgICBMT0dEKCJXYWl0aW5nIGJlY2F1c2UgZm9jdXNlZCB3aW5kb3cgaXMgcGF1c2VkLiIpOworI2VuZGlmCisgICAgICAgICAgICBhbnJUaW1lci5kaXNwYXRjaFBhdXNlZEJ5QXBwbGljYXRpb24obUZvY3VzZWRXaW5kb3cpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICAvLyBTdWNjZXNzIQorICAgICAgICBicmVhazsgLy8gZG9uZSB3YWl0aW5nLCBleGl0IGxvb3AKKyAgICB9CisKKyAgICAvLyBPdXRwdXQgdGFyZ2V0cy4KKyAgICBpZiAoaW5qZWN0aW9uUmVzdWx0ID09IElOUFVUX0VWRU5UX0lOSkVDVElPTl9TVUNDRUVERUQpIHsKKyAgICAgICAgYWRkVGFyZ2V0KG1Gb2N1c2VkV2luZG93LCBJbnB1dFRhcmdldDo6RkxBR19TWU5DLAorICAgICAgICAgICAgICAgIGFuclRpbWVyLmdldFRpbWVTcGVudFdhaXRpbmdGb3JBcHBsaWNhdGlvbigpLCBvdXRUYXJnZXRzKTsKKworICAgICAgICBvdXRGb2N1c2VkV2luZG93ID0gbUZvY3VzZWRXaW5kb3c7CisgICAgfSBlbHNlIHsKKyAgICAgICAgb3V0Rm9jdXNlZFdpbmRvdyA9IE5VTEw7CisgICAgfQorCisjaWYgREVCVUdfRk9DVVMKKyAgICBMT0dEKCJ3YWl0Rm9yRm9jdXNlZFdpbmRvdyBmaW5pc2hlZDogaW5qZWN0aW9uUmVzdWx0PSVkIiwKKyAgICAgICAgICAgIGluamVjdGlvblJlc3VsdCk7CisgICAgZHVtcERpc3BhdGNoU3RhdGVMZCgpOworI2VuZGlmCisgICAgcmV0dXJuIGluamVjdGlvblJlc3VsdDsKK30KKworaW50MzJfdCBOYXRpdmVJbnB1dE1hbmFnZXI6OndhaXRGb3JUb3VjaGVkV2luZG93TGQoTW90aW9uRXZlbnQqIG1vdGlvbkV2ZW50LCB1aW50MzJfdCBwb2xpY3lGbGFncywKKyAgICAgICAgaW50MzJfdCBpbmplY3RvclBpZCwgaW50MzJfdCBpbmplY3RvclVpZCwgVmVjdG9yPElucHV0VGFyZ2V0PiYgb3V0VGFyZ2V0cywKKyAgICAgICAgSW5wdXRXaW5kb3cqJiBvdXRUb3VjaGVkV2luZG93KSB7CisgICAgbnNlY3NfdCBzdGFydFRpbWUgPSBub3coKTsKKworICAgIGludDMyX3QgaW5qZWN0aW9uUmVzdWx0ID0gSU5QVVRfRVZFTlRfSU5KRUNUSU9OX1NVQ0NFRURFRDsKKyAgICBpbnQzMl90IGFjdGlvbiA9IG1vdGlvbkV2ZW50LT5nZXRBY3Rpb24oKTsKKworICAgIC8vIEZvciBzZWN1cml0eSByZWFzb25zLCB3ZSBkZWZlciB1cGRhdGluZyB0aGUgdG91Y2ggc3RhdGUgdW50aWwgd2UgYXJlIHN1cmUgdGhhdAorICAgIC8vIGV2ZW50IGluamVjdGlvbiB3aWxsIGJlIGFsbG93ZWQuCisgICAgLy8KKyAgICAvLyBGSVhNRSBJbiB0aGUgb3JpZ2luYWwgY29kZSwgc2NyZWVuV2FzT2ZmIGNvdWxkIG5ldmVyIGJlIHNldCB0byB0cnVlLgorICAgIC8vICAgICAgIFRoZSByZWFzb24gaXMgdGhhdCB0aGUgUE9MSUNZX0ZMQUdfV09LRV9IRVJFCisgICAgLy8gICAgICAgYW5kIFBPTElDWV9GTEFHX0JSSUdIVF9IRVJFIGZsYWdzIHdlcmUgc2V0IG9ubHkgd2hlbiBwcmVwcm9jZXNzaW5nIHJhdworICAgIC8vICAgICAgIEVWX0tFWSwgRVZfUkVMIGFuZCBFVl9BQlMgZXZlbnRzLiAgQXMgaXQgaGFwcGVucywgdGhlIHRvdWNoIGV2ZW50IHdhcworICAgIC8vICAgICAgIGFjdHVhbGx5IGVucXVldWVkIHVzaW5nIHRoZSBwb2xpY3lGbGFncyB0aGF0IGFwcGVhcmVkIGluIHRoZSBmaW5hbCBFVl9TWU4KKyAgICAvLyAgICAgICBldmVudHMgdXBvbiB3aGljaCBubyBwcmVwcm9jZXNzaW5nIHRvb2sgcGxhY2UuICBTbyBwb2xpY3lGbGFncyB3YXMgYWx3YXlzIDAuCisgICAgLy8gICAgICAgSW4gdGhlIG5ldyBuYXRpdmUgaW5wdXQgZGlzcGF0Y2hlciB3ZSdyZSBhIGJpdCBtb3JlIGNhcmVmdWwgYWJvdXQgZXZlbnQKKyAgICAvLyAgICAgICBwcmVwcm9jZXNzaW5nIHNvIHRoZSB0b3VjaGVzIHdlIHJlY2VpdmUgY2FuIGFjdHVhbGx5IGhhdmUgbm9uLXplcm8gcG9saWN5RmxhZ3MuCisgICAgLy8gICAgICAgVW5mb3J0dW5hdGVseSB3ZSBvYnRhaW4gdW5kZXNpcmFibGUgYmVoYXZpb3IuCisgICAgLy8KKyAgICAvLyAgICAgICBIZXJlJ3Mgd2hhdCBoYXBwZW5zOgorICAgIC8vCisgICAgLy8gICAgICAgV2hlbiB0aGUgZGV2aWNlIGRpbXMgaW4gYW50aWNpcGF0aW9uIG9mIGdvaW5nIHRvIHNsZWVwLCB0b3VjaGVzCisgICAgLy8gICAgICAgaW4gd2luZG93cyB3aGljaCBoYXZlIEZMQUdfVE9VQ0hBQkxFX1dIRU5fV0FLSU5HIGNhdXNlCisgICAgLy8gICAgICAgdGhlIGRldmljZSB0byBicmlnaHRlbiBhbmQgcmVzZXQgdGhlIHVzZXIgYWN0aXZpdHkgdGltZXIuCisgICAgLy8gICAgICAgVG91Y2hlcyBvbiBvdGhlciB3aW5kb3dzIChzdWNoIGFzIHRoZSBsYXVuY2hlciB3aW5kb3cpCisgICAgLy8gICAgICAgYXJlIGRyb3BwZWQuICBUaGVuIGFmdGVyIGEgbW9tZW50LCB0aGUgZGV2aWNlIGdvZXMgdG8gc2xlZXAuICBPb3BzLgorICAgIC8vCisgICAgLy8gICAgICAgQWxzbyBub3RpY2UgaG93IHNjcmVlbldhc09mZiB3YXMgYmVpbmcgaW5pdGlhbGl6ZWQgdXNpbmcgUE9MSUNZX0ZMQUdfQlJJR0hUX0hFUkUKKyAgICAvLyAgICAgICBpbnN0ZWFkIG9mIFBPTElDWV9GTEFHX1dPS0VfSEVSRS4uLgorICAgIC8vCisgICAgYm9vbCBzY3JlZW5XYXNPZmYgPSBmYWxzZTsgLy8gb3JpZ2luYWwgcG9saWN5OiBwb2xpY3lGbGFncyAmIFBPTElDWV9GTEFHX0JSSUdIVF9IRVJFOworICAgIGJvb2wgZmlyc3RJdGVyYXRpb24gPSB0cnVlOworICAgIEFOUlRpbWVyIGFuclRpbWVyOworICAgIGZvciAoOzspIHsKKyAgICAgICAgaWYgKGZpcnN0SXRlcmF0aW9uKSB7CisgICAgICAgICAgICBmaXJzdEl0ZXJhdGlvbiA9IGZhbHNlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKCEgYW5yVGltZXIud2FpdEZvckRpc3BhdGNoU3RhdGVDaGFuZ2VMZCh0aGlzKSkgeworICAgICAgICAgICAgICAgIExPR1coIkRyb3BwaW5nIGV2ZW50IGJlY2F1c2UgdGhlIGRpc3BhdGNoZXIgdGltZWQgb3V0IHdhaXRpbmcgdG8gaWRlbnRpZnkgIgorICAgICAgICAgICAgICAgICAgICAgICAgInRoZSB3aW5kb3cgdGhhdCBzaG91bGQgcmVjZWl2ZSBpdC4iKTsKKyAgICAgICAgICAgICAgICBpbmplY3Rpb25SZXN1bHQgPSBJTlBVVF9FVkVOVF9JTkpFQ1RJT05fVElNRURfT1VUOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLy8gSWYgZGlzcGF0Y2ggaXMgbm90IGVuYWJsZWQgdGhlbiBmYWlsLgorICAgICAgICBpZiAoISBtRGlzcGF0Y2hFbmFibGVkKSB7CisgICAgICAgICAgICBMT0dJKCJEcm9wcGluZyBldmVudCBiZWNhdXNlIGlucHV0IGRpc3BhdGNoIGlzIGRpc2FibGVkLiIpOworICAgICAgICAgICAgaW5qZWN0aW9uUmVzdWx0ID0gSU5QVVRfRVZFTlRfSU5KRUNUSU9OX0ZBSUxFRDsKKyAgICAgICAgICAgIGJyZWFrOyAvLyBmYWlsZWQsIGV4aXQgd2FpdCBsb29wCisgICAgICAgIH0KKworICAgICAgICAvLyBJZiBkaXNwYXRjaCBpcyBmcm96ZW4gb3Igd2UgZG9uJ3QgaGF2ZSB2YWxpZCB3aW5kb3cgZGF0YSB5ZXQgdGhlbiB3YWl0LgorICAgICAgICBpZiAobURpc3BhdGNoRnJvemVuIHx8ICEgbVdpbmRvd3NSZWFkeSkgeworI2lmIERFQlVHX0lOUFVUX0RJU1BBVENIRVJfUE9MSUNZCisgICAgICAgICAgICBMT0dEKCJXYWl0aW5nIGJlY2F1c2UgZGlzcGF0Y2ggaXMgZnJvemVuIG9yIHdpbmRvd3MgYXJlIG5vdCByZWFkeS4iKTsKKyNlbmRpZgorICAgICAgICAgICAgYW5yVGltZXIuZGlzcGF0Y2hGcm96ZW5CeVN5c3RlbSgpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKworICAgICAgICAvLyBVcGRhdGUgdGhlIHRvdWNoIHN0YXRlIGFzIG5lZWRlZCBiYXNlZCBvbiB0aGUgcHJvcGVydGllcyBvZiB0aGUgdG91Y2ggZXZlbnQuCisgICAgICAgIGlmIChhY3Rpb24gPT0gTU9USU9OX0VWRU5UX0FDVElPTl9ET1dOKSB7CisgICAgICAgICAgICBJbnB1dFdpbmRvdyogbmV3VG91Y2hlZFdpbmRvdyA9IE5VTEw7CisgICAgICAgICAgICBtVGVtcFRvdWNoZWRPdXRzaWRlV2luZG93cy5jbGVhcigpOworCisgICAgICAgICAgICBpbnQzMl90IHggPSBpbnQzMl90KG1vdGlvbkV2ZW50LT5nZXRYKDApKTsKKyAgICAgICAgICAgIGludDMyX3QgeSA9IGludDMyX3QobW90aW9uRXZlbnQtPmdldFkoMCkpOworICAgICAgICAgICAgSW5wdXRXaW5kb3cqIHRvcEVycm9yV2luZG93ID0gTlVMTDsKKworICAgICAgICAgICAgLy8gVHJhdmVyc2Ugd2luZG93cyBmcm9tIGZyb250IHRvIGJhY2sgdG8gZmluZCB0b3VjaGVkIHdpbmRvdyBhbmQgb3V0c2lkZSB0YXJnZXRzLgorICAgICAgICAgICAgc2l6ZV90IG51bVdpbmRvd3MgPSBtV2luZG93cy5zaXplKCk7CisgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bVdpbmRvd3M7IGkrKykgeworICAgICAgICAgICAgICAgIElucHV0V2luZG93KiB3aW5kb3cgPSAmIG1XaW5kb3dzLmVkaXRJdGVtQXQoaSk7CisgICAgICAgICAgICAgICAgaW50MzJfdCBmbGFncyA9IHdpbmRvdy0+bGF5b3V0UGFyYW1zRmxhZ3M7CisKKyAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBGTEFHX1NZU1RFTV9FUlJPUikgeworICAgICAgICAgICAgICAgICAgICBpZiAoISB0b3BFcnJvcldpbmRvdykgeworICAgICAgICAgICAgICAgICAgICAgICAgdG9wRXJyb3JXaW5kb3cgPSB3aW5kb3c7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBpZiAod2luZG93LT52aXNpYmxlKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghIChmbGFncyAmIEZMQUdfTk9UX1RPVUNIQUJMRSkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaXNUb3VjaE1vZGFsID0gKGZsYWdzICYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZMQUdfTk9UX0ZPQ1VTQUJMRSB8IEZMQUdfTk9UX1RPVUNIX01PREFMKSkgPT0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1RvdWNoTW9kYWwgfHwgd2luZG93LT50b3VjaGFibGVBcmVhQ29udGFpbnNQb2ludCh4LCB5KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghIHNjcmVlbldhc09mZiB8fCBmbGFncyAmIEZMQUdfVE9VQ0hBQkxFX1dIRU5fV0FLSU5HKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld1RvdWNoZWRXaW5kb3cgPSB3aW5kb3c7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvLyBmb3VuZCB0b3VjaGVkIHdpbmRvdywgZXhpdCB3aW5kb3cgbG9vcAorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGZsYWdzICYgRkxBR19XQVRDSF9PVVRTSURFX1RPVUNIKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBtVGVtcFRvdWNoZWRPdXRzaWRlV2luZG93cy5wdXNoKHdpbmRvdyk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIElmIHRoZXJlIGlzIGFuIGVycm9yIHdpbmRvdyBidXQgaXQgaXMgbm90IHRha2luZyBmb2N1cyAodHlwaWNhbGx5IGJlY2F1c2UKKyAgICAgICAgICAgIC8vIGl0IGlzIGludmlzaWJsZSkgdGhlbiB3YWl0IGZvciBpdC4gIEFueSBvdGhlciBmb2N1c2VkIHdpbmRvdyBtYXkgaW4KKyAgICAgICAgICAgIC8vIGZhY3QgYmUgaW4gQU5SIHN0YXRlLgorICAgICAgICAgICAgaWYgKHRvcEVycm9yV2luZG93ICYmIG5ld1RvdWNoZWRXaW5kb3cgIT0gdG9wRXJyb3JXaW5kb3cpIHsKKyNpZiBERUJVR19JTlBVVF9ESVNQQVRDSEVSX1BPTElDWQorICAgICAgICAgICAgICAgIExPR0QoIldhaXRpbmcgYmVjYXVzZSBzeXN0ZW0gZXJyb3Igd2luZG93IGlzIHBlbmRpbmcuIik7CisjZW5kaWYKKyAgICAgICAgICAgICAgICBhbnJUaW1lci5kaXNwYXRjaEZyb3plbkJ5U3lzdGVtKCk7CisgICAgICAgICAgICAgICAgY29udGludWU7IC8vIHdhaXQgc29tZSBtb3JlCisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIElmIHdlIGRpZCBub3QgZmluZCBhIHRvdWNoZWQgd2luZG93IHRoZW4gZmFpbC4KKyAgICAgICAgICAgIGlmICghIG5ld1RvdWNoZWRXaW5kb3cpIHsKKyAgICAgICAgICAgICAgICBpZiAobUZvY3VzZWRBcHBsaWNhdGlvbikgeworI2lmIERFQlVHX0ZPQ1VTCisgICAgICAgICAgICAgICAgICAgIExPR0QoIldhaXRpbmcgYmVjYXVzZSB0aGVyZSBpcyBubyBmb2N1c2VkIHdpbmRvdyBidXQgdGhlcmUgaXMgYSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZvY3VzZWQgYXBwbGljYXRpb24gdGhhdCBtYXkgeWV0IGludHJvZHVjZSBhIG5ldyB0YXJnZXQ6ICclcycuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtRm9jdXNlZEFwcGxpY2F0aW9uLT5uYW1lLnN0cmluZygpKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBMT0dJKCJEcm9wcGluZyBldmVudCBiZWNhdXNlIHRoZXJlIGlzIG5vIHRvdWNoZWQgd2luZG93IG9yIGZvY3VzZWQgYXBwbGljYXRpb24uIik7CisgICAgICAgICAgICAgICAgaW5qZWN0aW9uUmVzdWx0ID0gSU5QVVRfRVZFTlRfSU5KRUNUSU9OX0ZBSUxFRDsKKyAgICAgICAgICAgICAgICBicmVhazsgLy8gZmFpbGVkLCBleGl0IHdhaXQgbG9vcAorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBDaGVjayBwZXJtaXNzaW9ucy4KKyAgICAgICAgICAgIGlmICghIGNoZWNrSW5qZWN0aW9uUGVybWlzc2lvbihuZXdUb3VjaGVkV2luZG93LCBpbmplY3RvclBpZCwgaW5qZWN0b3JVaWQpKSB7CisgICAgICAgICAgICAgICAgaW5qZWN0aW9uUmVzdWx0ID0gSU5QVVRfRVZFTlRfSU5KRUNUSU9OX1BFUk1JU1NJT05fREVOSUVEOworICAgICAgICAgICAgICAgIGJyZWFrOyAvLyBmYWlsZWQsIGV4aXQgd2FpdCBsb29wCisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIElmIHRoZSB0b3VjaGVkIHdpbmRvdyBpcyBwYXVzZWQgdGhlbiBrZWVwIHdhaXRpbmcuCisgICAgICAgICAgICBpZiAobmV3VG91Y2hlZFdpbmRvdy0+cGF1c2VkKSB7CisjaWYgREVCVUdfSU5QVVRfRElTUEFUQ0hFUl9QT0xJQ1kKKyAgICAgICAgICAgICAgICBMT0dEKCJXYWl0aW5nIGJlY2F1c2UgdG91Y2hlZCB3aW5kb3cgaXMgcGF1c2VkLiIpOworI2VuZGlmCisgICAgICAgICAgICAgICAgYW5yVGltZXIuZGlzcGF0Y2hQYXVzZWRCeUFwcGxpY2F0aW9uKG5ld1RvdWNoZWRXaW5kb3cpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOyAvLyB3YWl0IHNvbWUgbW9yZQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBTdWNjZXNzISAgVXBkYXRlIHRoZSB0b3VjaCBkaXNwYXRjaCBzdGF0ZSBmb3IgcmVhbC4KKyAgICAgICAgICAgIHJlbGVhc2VUb3VjaGVkV2luZG93TGQoKTsKKworICAgICAgICAgICAgbVRvdWNoZWRXaW5kb3cgPSBuZXdUb3VjaGVkV2luZG93OworCisgICAgICAgICAgICBpZiAobmV3VG91Y2hlZFdpbmRvdy0+aGFzV2FsbHBhcGVyKSB7CisgICAgICAgICAgICAgICAgbVRvdWNoZWRXYWxscGFwZXJXaW5kb3dzLmFwcGVuZFZlY3RvcihtV2FsbHBhcGVyV2luZG93cyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsgLy8gZG9uZQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gQ2hlY2sgcGVybWlzc2lvbnMuCisgICAgICAgICAgICBpZiAoISBjaGVja0luamVjdGlvblBlcm1pc3Npb24obVRvdWNoZWRXaW5kb3csIGluamVjdG9yUGlkLCBpbmplY3RvclVpZCkpIHsKKyAgICAgICAgICAgICAgICBpbmplY3Rpb25SZXN1bHQgPSBJTlBVVF9FVkVOVF9JTkpFQ1RJT05fUEVSTUlTU0lPTl9ERU5JRUQ7CisgICAgICAgICAgICAgICAgYnJlYWs7IC8vIGZhaWxlZCwgZXhpdCB3YWl0IGxvb3AKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gSWYgdGhlcmUgaXMgbm8gY3VycmVudGx5IHRvdWNoZWQgd2luZG93IHRoZW4gZmFpbC4KKyAgICAgICAgICAgIGlmICghIG1Ub3VjaGVkV2luZG93IHx8ICEgbVRvdWNoRG93bikgeworICAgICAgICAgICAgICAgIExPR0koIkRyb3BwaW5nIGV2ZW50IGJlY2F1c2UgdG91Y2hlZCB3aW5kb3cgaXMgbm8gbG9uZ2VyIHZhbGlkLiIpOworICAgICAgICAgICAgICAgIGluamVjdGlvblJlc3VsdCA9IElOUFVUX0VWRU5UX0lOSkVDVElPTl9GQUlMRUQ7CisgICAgICAgICAgICAgICAgYnJlYWs7IC8vIGZhaWxlZCwgZXhpdCB3YWl0IGxvb3AKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gSWYgdGhlIHRvdWNoZWQgd2luZG93IGlzIHBhdXNlZCB0aGVuIGtlZXAgd2FpdGluZy4KKyAgICAgICAgICAgIGlmIChtVG91Y2hlZFdpbmRvdy0+cGF1c2VkKSB7CisjaWYgREVCVUdfSU5QVVRfRElTUEFUQ0hFUl9QT0xJQ1kKKyAgICAgICAgICAgICAgICBMT0dEKCJXYWl0aW5nIGJlY2F1c2UgdG91Y2hlZCB3aW5kb3cgaXMgcGF1c2VkLiIpOworI2VuZGlmCisgICAgICAgICAgICAgICAgYW5yVGltZXIuZGlzcGF0Y2hQYXVzZWRCeUFwcGxpY2F0aW9uKG1Ub3VjaGVkV2luZG93KTsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsgLy8gd2FpdCBzb21lIG1vcmUKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gU3VjY2VzcyEKKyAgICAgICAgICAgIGJyZWFrOyAvLyBkb25lCisgICAgICAgIH0KKyAgICB9CisKKyAgICAvLyBPdXRwdXQgdGFyZ2V0cy4KKyAgICBib29sIGhhdmVQZXJtaXNzaW9uOworICAgIGlmIChpbmplY3Rpb25SZXN1bHQgPT0gSU5QVVRfRVZFTlRfSU5KRUNUSU9OX1NVQ0NFRURFRCkgeworICAgICAgICAvLyBJbmplY3Rpb24gc3VjY2VlZGVkIHNvIHRoZSBpbmplY3RvciBtdXN0IGhhdmUgcGVybWlzc2lvbi4KKyAgICAgICAgaGF2ZVBlcm1pc3Npb24gPSB0cnVlOworCisgICAgICAgIHNpemVfdCBudW1XYWxscGFwZXJXaW5kb3dzID0gbVRvdWNoZWRXYWxscGFwZXJXaW5kb3dzLnNpemUoKTsKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1XYWxscGFwZXJXaW5kb3dzOyBpKyspIHsKKyAgICAgICAgICAgIGFkZFRhcmdldChtVG91Y2hlZFdhbGxwYXBlcldpbmRvd3NbaV0sIDAsIDAsIG91dFRhcmdldHMpOworICAgICAgICB9CisKKyAgICAgICAgc2l6ZV90IG51bU91dHNpZGVXaW5kb3dzID0gbVRlbXBUb3VjaGVkT3V0c2lkZVdpbmRvd3Muc2l6ZSgpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bU91dHNpZGVXaW5kb3dzOyBpKyspIHsKKyAgICAgICAgICAgIGFkZFRhcmdldChtVGVtcFRvdWNoZWRPdXRzaWRlV2luZG93c1tpXSwgSW5wdXRUYXJnZXQ6OkZMQUdfT1VUU0lERSwgMCwgb3V0VGFyZ2V0cyk7CisgICAgICAgIH0KKworICAgICAgICBhZGRUYXJnZXQobVRvdWNoZWRXaW5kb3csIElucHV0VGFyZ2V0OjpGTEFHX1NZTkMsCisgICAgICAgICAgICAgICAgYW5yVGltZXIuZ2V0VGltZVNwZW50V2FpdGluZ0ZvckFwcGxpY2F0aW9uKCksIG91dFRhcmdldHMpOworICAgICAgICBvdXRUb3VjaGVkV2luZG93ID0gbVRvdWNoZWRXaW5kb3c7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGluamVjdGlvblJlc3VsdCAhPSBJTlBVVF9FVkVOVF9JTkpFQ1RJT05fUEVSTUlTU0lPTl9ERU5JRUQKKyAgICAgICAgICAgICAgICAmJiBjaGVja0luamVjdGlvblBlcm1pc3Npb24oTlVMTCwgaW5qZWN0b3JQaWQsIGluamVjdG9yVWlkKSkgeworICAgICAgICAgICAgLy8gSW5qZWN0aW9uIGZhaWxlZCBidXQgdGhlIGluamVjdG9yIGRvZXMgaGF2ZSBwZXJtaXNzaW9uIHRvIGluamVjdCBldmVudHMuCisgICAgICAgICAgICAvLyBXaGlsZSB3ZSBtaWdodCBub3QgaGF2ZSBmb3VuZCBhIHZhbGlkIHRhcmdldCBmb3IgdGhlIGluamVjdGVkIGV2ZW50LCB3ZQorICAgICAgICAgICAgLy8gc3RpbGwgd2FudCB0byB1cGRhdGUgdGhlIGRpc3BhdGNoIHN0YXRlIHRvIHRha2UgaXQgaW50byBhY2NvdW50LgorICAgICAgICAgICAgaGF2ZVBlcm1pc3Npb24gPSB0cnVlOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gSW5qZWN0b3IgZG9lcyBub3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGluamVjdCBldmVudHMuCisgICAgICAgICAgICAvLyBXZSBtYWtlIHN1cmUgdG8gbGVhdmUgdGhlIGRpc3BhdGNoIHN0YXRlIHVuY2hhbmdlZC4KKyAgICAgICAgICAgIGhhdmVQZXJtaXNzaW9uID0gZmFsc2U7CisgICAgICAgIH0KKyAgICAgICAgb3V0VG91Y2hlZFdpbmRvdyA9IE5VTEw7CisgICAgfQorICAgIG1UZW1wVG91Y2hlZE91dHNpZGVXaW5kb3dzLmNsZWFyKCk7CisKKyAgICAvLyBVcGRhdGUgZmluYWwgcGllY2VzIG9mIHRvdWNoIHN0YXRlIG5vdyB0aGF0IHdlIGtub3cgZm9yIHN1cmUgd2hldGhlciB0aGUgaW5qZWN0b3IKKyAgICAvLyBoYWQgcGVybWlzc2lvbiB0byBwZXJmb3JtIHRoZSBpbmplY3Rpb24uCisgICAgaWYgKGhhdmVQZXJtaXNzaW9uKSB7CisgICAgICAgIGlmIChhY3Rpb24gPT0gTU9USU9OX0VWRU5UX0FDVElPTl9ET1dOKSB7CisgICAgICAgICAgICBpZiAobVRvdWNoRG93bikgeworICAgICAgICAgICAgICAgIC8vIFRoaXMgaXMgd2VpcmQuICBXZSBnb3QgYSBkb3duIGJ1dCB3ZSB0aG91Z2h0IGl0IHdhcyBhbHJlYWR5IGRvd24hCisgICAgICAgICAgICAgICAgTE9HVygiUG9pbnRlciBkb3duIHJlY2VpdmVkIHdoaWxlIGFscmVhZHkgZG93bi4iKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbVRvdWNoRG93biA9IHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChpbmplY3Rpb25SZXN1bHQgIT0gSU5QVVRfRVZFTlRfSU5KRUNUSU9OX1NVQ0NFRURFRCkgeworICAgICAgICAgICAgICAgIC8vIFNpbmNlIHdlIGZhaWxlZCB0byBpZGVudGlmeSBhIHRhcmdldCBmb3IgdGhpcyB0b3VjaCBkb3duLCB3ZSBtYXkgc3RpbGwKKyAgICAgICAgICAgICAgICAvLyBiZSBob2xkaW5nIG9uIHRvIGFuIGVhcmxpZXIgdGFyZ2V0IGZyb20gYSBwcmV2aW91cyB0b3VjaCBkb3duLiAgUmVsZWFzZSBpdC4KKyAgICAgICAgICAgICAgICByZWxlYXNlVG91Y2hlZFdpbmRvd0xkKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uID09IE1PVElPTl9FVkVOVF9BQ1RJT05fVVApIHsKKyAgICAgICAgICAgIG1Ub3VjaERvd24gPSBmYWxzZTsKKyAgICAgICAgICAgIHJlbGVhc2VUb3VjaGVkV2luZG93TGQoKTsKKyAgICAgICAgfQorICAgIH0KKworI2lmIERFQlVHX0ZPQ1VTCisgICAgTE9HRCgid2FpdEZvclRvdWNoZWRXaW5kb3cgZmluaXNoZWQ6IGluamVjdGlvblJlc3VsdD0lZCIsCisgICAgICAgICAgICBpbmplY3Rpb25SZXN1bHQpOworICAgIGR1bXBEaXNwYXRjaFN0YXRlTGQoKTsKKyNlbmRpZgorICAgIHJldHVybiBpbmplY3Rpb25SZXN1bHQ7Cit9CisKK3ZvaWQgTmF0aXZlSW5wdXRNYW5hZ2VyOjpyZWxlYXNlVG91Y2hlZFdpbmRvd0xkKCkgeworICAgIG1Ub3VjaGVkV2luZG93ID0gTlVMTDsKKyAgICBtVG91Y2hlZFdhbGxwYXBlcldpbmRvd3MuY2xlYXIoKTsKK30KKwordm9pZCBOYXRpdmVJbnB1dE1hbmFnZXI6OmFkZFRhcmdldChjb25zdCBJbnB1dFdpbmRvdyogd2luZG93LCBpbnQzMl90IHRhcmdldEZsYWdzLAorICAgICAgICBuc2Vjc190IHRpbWVTcGVudFdhaXRpbmdGb3JBcHBsaWNhdGlvbiwgVmVjdG9yPElucHV0VGFyZ2V0PiYgb3V0VGFyZ2V0cykgeworICAgIG5zZWNzX3QgdGltZW91dCA9IHdpbmRvdy0+ZGlzcGF0Y2hpbmdUaW1lb3V0IC0gdGltZVNwZW50V2FpdGluZ0ZvckFwcGxpY2F0aW9uOworICAgIGlmICh0aW1lb3V0IDwgTUlOX0lOUFVUX0RJU1BBVENISU5HX1RJTUVPVVQpIHsKKyAgICAgICAgdGltZW91dCA9IE1JTl9JTlBVVF9ESVNQQVRDSElOR19USU1FT1VUOworICAgIH0KKworICAgIG91dFRhcmdldHMucHVzaCgpOworCisgICAgSW5wdXRUYXJnZXQmIHRhcmdldCA9IG91dFRhcmdldHMuZWRpdFRvcCgpOworICAgIHRhcmdldC5pbnB1dENoYW5uZWwgPSB3aW5kb3ctPmlucHV0Q2hhbm5lbDsKKyAgICB0YXJnZXQuZmxhZ3MgPSB0YXJnZXRGbGFnczsKKyAgICB0YXJnZXQudGltZW91dCA9IHRpbWVvdXQ7CisgICAgdGFyZ2V0LnhPZmZzZXQgPSAtIHdpbmRvdy0+ZnJhbWVMZWZ0OworICAgIHRhcmdldC55T2Zmc2V0ID0gLSB3aW5kb3ctPmZyYW1lVG9wOworfQorCitib29sIE5hdGl2ZUlucHV0TWFuYWdlcjo6Y2hlY2tJbmplY3Rpb25QZXJtaXNzaW9uKGNvbnN0IElucHV0V2luZG93KiB3aW5kb3csCisgICAgICAgIGludDMyX3QgaW5qZWN0b3JQaWQsIGludDMyX3QgaW5qZWN0b3JVaWQpIHsKKyAgICBpZiAoaW5qZWN0b3JVaWQgPiAwICYmICh3aW5kb3cgPT0gTlVMTCB8fCB3aW5kb3ctPm93bmVyVWlkICE9IGluamVjdG9yVWlkKSkgeworICAgICAgICBKTklFbnYqIGVudiA9IGpuaUVudigpOworICAgICAgICBqYm9vbGVhbiByZXN1bHQgPSBlbnYtPkNhbGxCb29sZWFuTWV0aG9kKG1DYWxsYmFja3NPYmosCisgICAgICAgICAgICAgICAgZ0NhbGxiYWNrc0NsYXNzSW5mby5jaGVja0luamVjdEV2ZW50c1Blcm1pc3Npb24sIGluamVjdG9yUGlkLCBpbmplY3RvclVpZCk7CisgICAgICAgIGNoZWNrQW5kQ2xlYXJFeGNlcHRpb25Gcm9tQ2FsbGJhY2soZW52LCAiY2hlY2tJbmplY3RFdmVudHNQZXJtaXNzaW9uIik7CisKKyAgICAgICAgaWYgKCEgcmVzdWx0KSB7CisgICAgICAgICAgICBpZiAod2luZG93KSB7CisgICAgICAgICAgICAgICAgTE9HVygiUGVybWlzc2lvbiBkZW5pZWQ6IGluamVjdGluZyBldmVudCBmcm9tIHBpZCAlZCB1aWQgJWQgdG8gd2luZG93ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJ3aXRoIGlucHV0IGNoYW5uZWwgJXMgb3duZWQgYnkgdWlkICVkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGluamVjdG9yUGlkLCBpbmplY3RvclVpZCwgd2luZG93LT5pbnB1dENoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy0+b3duZXJVaWQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBMT0dXKCJQZXJtaXNzaW9uIGRlbmllZDogaW5qZWN0aW5nIGV2ZW50IGZyb20gcGlkICVkIHVpZCAlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICBpbmplY3RvclBpZCwgaW5qZWN0b3JVaWQpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKK2ludDMyX3QgTmF0aXZlSW5wdXRNYW5hZ2VyOjp3YWl0Rm9yS2V5RXZlbnRUYXJnZXRzKEtleUV2ZW50KiBrZXlFdmVudCwgdWludDMyX3QgcG9saWN5RmxhZ3MsCisgICAgICAgIGludDMyX3QgaW5qZWN0b3JQaWQsIGludDMyX3QgaW5qZWN0b3JVaWQsIFZlY3RvcjxJbnB1dFRhcmdldD4mIG91dFRhcmdldHMpIHsKKyNpZiBERUJVR19JTlBVVF9ESVNQQVRDSEVSX1BPTElDWQorICAgIExPR0QoIndhaXRGb3JLZXlFdmVudFRhcmdldHMgLSBwb2xpY3lGbGFncz0lZCwgaW5qZWN0b3JQaWQ9JWQsIGluamVjdG9yVWlkPSVkIiwKKyAgICAgICAgICAgIHBvbGljeUZsYWdzLCBpbmplY3RvclBpZCwgaW5qZWN0b3JVaWQpOworI2VuZGlmCisKKyAgICBpbnQzMl90IHdpbmRvd1R5cGU7CisgICAgeyAvLyBhY3F1aXJlIGxvY2sKKyAgICAgICAgQXV0b011dGV4IF9sKG1EaXNwYXRjaExvY2spOworCisgICAgICAgIElucHV0V2luZG93KiBmb2N1c2VkV2luZG93OworICAgICAgICBpbnQzMl90IGluamVjdGlvblJlc3VsdCA9IHdhaXRGb3JGb2N1c2VkV2luZG93TGQocG9saWN5RmxhZ3MsCisgICAgICAgICAgICAgICAgaW5qZWN0b3JQaWQsIGluamVjdG9yVWlkLCBvdXRUYXJnZXRzLCAvKm91dCovIGZvY3VzZWRXaW5kb3cpOworICAgICAgICBpZiAoaW5qZWN0aW9uUmVzdWx0ICE9IElOUFVUX0VWRU5UX0lOSkVDVElPTl9TVUNDRUVERUQpIHsKKyAgICAgICAgICAgIHJldHVybiBpbmplY3Rpb25SZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICB3aW5kb3dUeXBlID0gZm9jdXNlZFdpbmRvdy0+bGF5b3V0UGFyYW1zVHlwZTsKKyAgICB9IC8vIHJlbGVhc2UgbG9jaworCisgICAgaWYgKGlzUG9saWN5S2V5KGtleUV2ZW50LT5nZXRLZXlDb2RlKCksIGlzU2NyZWVuT24oKSkpIHsKKyAgICAgICAgY29uc3QgSW5wdXRUYXJnZXQmIHRhcmdldCA9IG91dFRhcmdldHMudG9wKCk7CisgICAgICAgIGJvb2wgY29uc3VtZWQgPSBpbnRlcmNlcHRLZXlCZWZvcmVEaXNwYXRjaGluZyh0YXJnZXQsIGtleUV2ZW50LCBwb2xpY3lGbGFncyk7CisgICAgICAgIGlmIChjb25zdW1lZCkgeworICAgICAgICAgICAgb3V0VGFyZ2V0cy5jbGVhcigpOworICAgICAgICAgICAgcmV0dXJuIElOUFVUX0VWRU5UX0lOSkVDVElPTl9TVUNDRUVERUQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBwb2tlVXNlckFjdGl2aXR5SWZOZWVkZWQod2luZG93VHlwZSwgUE9XRVJfTUFOQUdFUl9CVVRUT05fRVZFTlQpOworICAgIHJldHVybiBJTlBVVF9FVkVOVF9JTkpFQ1RJT05fU1VDQ0VFREVEOworfQorCitpbnQzMl90IE5hdGl2ZUlucHV0TWFuYWdlcjo6d2FpdEZvck1vdGlvbkV2ZW50VGFyZ2V0cyhNb3Rpb25FdmVudCogbW90aW9uRXZlbnQsCisgICAgICAgIHVpbnQzMl90IHBvbGljeUZsYWdzLCBpbnQzMl90IGluamVjdG9yUGlkLCBpbnQzMl90IGluamVjdG9yVWlkLAorICAgICAgICBWZWN0b3I8SW5wdXRUYXJnZXQ+JiBvdXRUYXJnZXRzKSB7CisjaWYgREVCVUdfSU5QVVRfRElTUEFUQ0hFUl9QT0xJQ1kKKyAgICBMT0dEKCJ3YWl0Rm9yTW90aW9uRXZlbnRUYXJnZXRzIC0gcG9saWN5RmxhZ3M9JWQsIGluamVjdG9yUGlkPSVkLCBpbmplY3RvclVpZD0lZCIsCisgICAgICAgICAgICBwb2xpY3lGbGFncywgaW5qZWN0b3JQaWQsIGluamVjdG9yVWlkKTsKKyNlbmRpZgorCisgICAgc3dpdGNoIChtb3Rpb25FdmVudC0+Z2V0TmF0dXJlKCkpIHsKKyAgICBjYXNlIElOUFVUX0VWRU5UX05BVFVSRV9UUkFDS0JBTEw6CisgICAgICAgIHJldHVybiB3YWl0Rm9yVHJhY2tiYWxsRXZlbnRUYXJnZXRzKG1vdGlvbkV2ZW50LCBwb2xpY3lGbGFncywgaW5qZWN0b3JQaWQsIGluamVjdG9yVWlkLAorICAgICAgICAgICAgICAgIG91dFRhcmdldHMpOworCisgICAgY2FzZSBJTlBVVF9FVkVOVF9OQVRVUkVfVE9VQ0g6CisgICAgICAgIHJldHVybiB3YWl0Rm9yVG91Y2hFdmVudFRhcmdldHMobW90aW9uRXZlbnQsIHBvbGljeUZsYWdzLCBpbmplY3RvclBpZCwgaW5qZWN0b3JVaWQsCisgICAgICAgICAgICAgICAgb3V0VGFyZ2V0cyk7CisKKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoZmFsc2UpOworICAgICAgICByZXR1cm4gSU5QVVRfRVZFTlRfSU5KRUNUSU9OX0ZBSUxFRDsKKyAgICB9Cit9CisKK2ludDMyX3QgTmF0aXZlSW5wdXRNYW5hZ2VyOjp3YWl0Rm9yVHJhY2tiYWxsRXZlbnRUYXJnZXRzKE1vdGlvbkV2ZW50KiBtb3Rpb25FdmVudCwKKyAgICAgICAgdWludDMyX3QgcG9saWN5RmxhZ3MsIGludDMyX3QgaW5qZWN0b3JQaWQsIGludDMyX3QgaW5qZWN0b3JVaWQsCisgICAgICAgIFZlY3RvcjxJbnB1dFRhcmdldD4mIG91dFRhcmdldHMpIHsKKyNpZiBERUJVR19JTlBVVF9ESVNQQVRDSEVSX1BPTElDWQorICAgIExPR0QoIndhaXRGb3JUcmFja2JhbGxFdmVudFRhcmdldHMgLSBwb2xpY3lGbGFncz0lZCwgaW5qZWN0b3JQaWQ9JWQsIGluamVjdG9yVWlkPSVkIiwKKyAgICAgICAgICAgIHBvbGljeUZsYWdzLCBpbmplY3RvclBpZCwgaW5qZWN0b3JVaWQpOworI2VuZGlmCisKKyAgICBpbnQzMl90IHdpbmRvd1R5cGU7CisgICAgeyAvLyBhY3F1aXJlIGxvY2sKKyAgICAgICAgQXV0b011dGV4IF9sKG1EaXNwYXRjaExvY2spOworCisgICAgICAgIElucHV0V2luZG93KiBmb2N1c2VkV2luZG93OworICAgICAgICBpbnQzMl90IGluamVjdGlvblJlc3VsdCA9IHdhaXRGb3JGb2N1c2VkV2luZG93TGQocG9saWN5RmxhZ3MsCisgICAgICAgICAgICAgICAgaW5qZWN0b3JQaWQsIGluamVjdG9yVWlkLCBvdXRUYXJnZXRzLCAvKm91dCovIGZvY3VzZWRXaW5kb3cpOworICAgICAgICBpZiAoaW5qZWN0aW9uUmVzdWx0ICE9IElOUFVUX0VWRU5UX0lOSkVDVElPTl9TVUNDRUVERUQpIHsKKyAgICAgICAgICAgIHJldHVybiBpbmplY3Rpb25SZXN1bHQ7CisgICAgICAgIH0KKworICAgICAgICB3aW5kb3dUeXBlID0gZm9jdXNlZFdpbmRvdy0+bGF5b3V0UGFyYW1zVHlwZTsKKyAgICB9IC8vIHJlbGVhc2UgbG9jaworCisgICAgcG9rZVVzZXJBY3Rpdml0eUlmTmVlZGVkKHdpbmRvd1R5cGUsIFBPV0VSX01BTkFHRVJfQlVUVE9OX0VWRU5UKTsKKyAgICByZXR1cm4gSU5QVVRfRVZFTlRfSU5KRUNUSU9OX1NVQ0NFRURFRDsKK30KKworaW50MzJfdCBOYXRpdmVJbnB1dE1hbmFnZXI6OndhaXRGb3JUb3VjaEV2ZW50VGFyZ2V0cyhNb3Rpb25FdmVudCogbW90aW9uRXZlbnQsCisgICAgICAgIHVpbnQzMl90IHBvbGljeUZsYWdzLCBpbnQzMl90IGluamVjdG9yUGlkLCBpbnQzMl90IGluamVjdG9yVWlkLAorICAgICAgICBWZWN0b3I8SW5wdXRUYXJnZXQ+JiBvdXRUYXJnZXRzKSB7CisjaWYgREVCVUdfSU5QVVRfRElTUEFUQ0hFUl9QT0xJQ1kKKyAgICBMT0dEKCJ3YWl0Rm9yVG91Y2hFdmVudFRhcmdldHMgLSBwb2xpY3lGbGFncz0lZCwgaW5qZWN0b3JQaWQ9JWQsIGluamVjdG9yVWlkPSVkIiwKKyAgICAgICAgICAgIHBvbGljeUZsYWdzLCBpbmplY3RvclBpZCwgaW5qZWN0b3JVaWQpOworI2VuZGlmCisKKyAgICBpbnQzMl90IHdpbmRvd1R5cGU7CisgICAgeyAvLyBhY3F1aXJlIGxvY2sKKyAgICAgICAgQXV0b011dGV4IF9sKG1EaXNwYXRjaExvY2spOworCisgICAgICAgIElucHV0V2luZG93KiB0b3VjaGVkV2luZG93OworICAgICAgICBpbnQzMl90IGluamVjdGlvblJlc3VsdCA9IHdhaXRGb3JUb3VjaGVkV2luZG93TGQobW90aW9uRXZlbnQsIHBvbGljeUZsYWdzLAorICAgICAgICAgICAgICAgIGluamVjdG9yUGlkLCBpbmplY3RvclVpZCwgb3V0VGFyZ2V0cywgLypvdXQqLyB0b3VjaGVkV2luZG93KTsKKyAgICAgICAgaWYgKGluamVjdGlvblJlc3VsdCAhPSBJTlBVVF9FVkVOVF9JTkpFQ1RJT05fU1VDQ0VFREVEKSB7CisgICAgICAgICAgICByZXR1cm4gaW5qZWN0aW9uUmVzdWx0OworICAgICAgICB9CisKKyAgICAgICAgd2luZG93VHlwZSA9IHRvdWNoZWRXaW5kb3ctPmxheW91dFBhcmFtc1R5cGU7CisgICAgfSAvLyByZWxlYXNlIGxvY2sKKworICAgIGludDMyX3QgZXZlbnRUeXBlOworICAgIHN3aXRjaCAobW90aW9uRXZlbnQtPmdldEFjdGlvbigpKSB7CisgICAgY2FzZSBNT1RJT05fRVZFTlRfQUNUSU9OX0RPV046CisgICAgICAgIGV2ZW50VHlwZSA9IFBPV0VSX01BTkFHRVJfVE9VQ0hfRVZFTlQ7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgTU9USU9OX0VWRU5UX0FDVElPTl9VUDoKKyAgICAgICAgZXZlbnRUeXBlID0gUE9XRVJfTUFOQUdFUl9UT1VDSF9VUF9FVkVOVDsKKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgaWYgKG1vdGlvbkV2ZW50LT5nZXRFdmVudFRpbWUoKSAtIG1vdGlvbkV2ZW50LT5nZXREb3duVGltZSgpCisgICAgICAgICAgICAgICAgPj0gRVZFTlRfSUdOT1JFX0RVUkFUSU9OKSB7CisgICAgICAgICAgICBldmVudFR5cGUgPSBQT1dFUl9NQU5BR0VSX1RPVUNIX0VWRU5UOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZXZlbnRUeXBlID0gUE9XRVJfTUFOQUdFUl9MT05HX1RPVUNIX0VWRU5UOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBwb2tlVXNlckFjdGl2aXR5SWZOZWVkZWQod2luZG93VHlwZSwgZXZlbnRUeXBlKTsKKyAgICByZXR1cm4gSU5QVVRfRVZFTlRfSU5KRUNUSU9OX1NVQ0NFRURFRDsKK30KKworYm9vbCBOYXRpdmVJbnB1dE1hbmFnZXI6OmludGVyY2VwdEtleUJlZm9yZURpc3BhdGNoaW5nKGNvbnN0IElucHV0VGFyZ2V0JiB0YXJnZXQsCisgICAgICAgIGNvbnN0IEtleUV2ZW50KiBrZXlFdmVudCwgdWludDMyX3QgcG9saWN5RmxhZ3MpIHsKKyAgICBKTklFbnYqIGVudiA9IGpuaUVudigpOworCisgICAgam9iamVjdCBpbnB1dENoYW5uZWxPYmogPSBnZXRJbnB1dENoYW5uZWxPYmpMb2NhbChlbnYsIHRhcmdldC5pbnB1dENoYW5uZWwpOworICAgIGlmIChpbnB1dENoYW5uZWxPYmopIHsKKyAgICAgICAgamJvb2xlYW4gY29uc3VtZWQgPSBlbnYtPkNhbGxCb29sZWFuTWV0aG9kKG1DYWxsYmFja3NPYmosCisgICAgICAgICAgICAgICAgZ0NhbGxiYWNrc0NsYXNzSW5mby5pbnRlcmNlcHRLZXlCZWZvcmVEaXNwYXRjaGluZywKKyAgICAgICAgICAgICAgICBpbnB1dENoYW5uZWxPYmosIGtleUV2ZW50LT5nZXRBY3Rpb24oKSwga2V5RXZlbnQtPmdldEZsYWdzKCksCisgICAgICAgICAgICAgICAga2V5RXZlbnQtPmdldEtleUNvZGUoKSwga2V5RXZlbnQtPmdldE1ldGFTdGF0ZSgpLAorICAgICAgICAgICAgICAgIGtleUV2ZW50LT5nZXRSZXBlYXRDb3VudCgpLCBwb2xpY3lGbGFncyk7CisgICAgICAgIGJvb2wgZXJyb3IgPSBjaGVja0FuZENsZWFyRXhjZXB0aW9uRnJvbUNhbGxiYWNrKGVudiwgImludGVyY2VwdEtleUJlZm9yZURpc3BhdGNoaW5nIik7CisKKyAgICAgICAgZW52LT5EZWxldGVMb2NhbFJlZihpbnB1dENoYW5uZWxPYmopOworCisgICAgICAgIHJldHVybiBjb25zdW1lZCAmJiAhIGVycm9yOworICAgIH0gZWxzZSB7CisgICAgICAgIExPR1coIkNvdWxkIG5vdCBhcHBseSBrZXkgZGlzcGF0Y2ggcG9saWN5IGJlY2F1c2UgaW5wdXQgY2hhbm5lbCAnJXMnIGlzICIKKyAgICAgICAgICAgICAgICAibm8gbG9uZ2VyIHZhbGlkLiIsIHRhcmdldC5pbnB1dENoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKSk7CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9Cit9CisKK3ZvaWQgTmF0aXZlSW5wdXRNYW5hZ2VyOjpwb2tlVXNlckFjdGl2aXR5SWZOZWVkZWQoaW50MzJfdCB3aW5kb3dUeXBlLCBpbnQzMl90IGV2ZW50VHlwZSkgeworICAgIGlmICh3aW5kb3dUeXBlICE9IFRZUEVfS0VZR1VBUkQpIHsKKyAgICAgICAgbnNlY3NfdCBldmVudFRpbWUgPSBub3coKTsKKyAgICAgICAgcG9rZVVzZXJBY3Rpdml0eShldmVudFRpbWUsIGV2ZW50VHlwZSk7CisgICAgfQorfQorCit2b2lkIE5hdGl2ZUlucHV0TWFuYWdlcjo6cG9rZVVzZXJBY3Rpdml0eShuc2Vjc190IGV2ZW50VGltZSwgaW50MzJfdCBldmVudFR5cGUpIHsKKyAgICBhbmRyb2lkX3NlcnZlcl9Qb3dlck1hbmFnZXJTZXJ2aWNlX3VzZXJBY3Rpdml0eShldmVudFRpbWUsIGV2ZW50VHlwZSk7Cit9CisKK3ZvaWQgTmF0aXZlSW5wdXRNYW5hZ2VyOjpkdW1wRGlzcGF0Y2hTdGF0ZUxkKCkgeworI2lmIERFQlVHX0ZPQ1VTCisgICAgTE9HRCgiICBkaXNwYXRjaGVyU3RhdGU6IGRpc3BhdGNoRW5hYmxlZD0lZCwgZGlzcGF0Y2hGcm96ZW49JWQsIHdpbmRvd3NSZWFkeT0lZCIsCisgICAgICAgICAgICBtRGlzcGF0Y2hFbmFibGVkLCBtRGlzcGF0Y2hGcm96ZW4sIG1XaW5kb3dzUmVhZHkpOworICAgIGlmIChtRm9jdXNlZEFwcGxpY2F0aW9uKSB7CisgICAgICAgIExPR0QoIiAgZm9jdXNlZEFwcGxpY2F0aW9uOiBuYW1lPSclcycsIGRpc3BhdGNoaW5nVGltZW91dD0lMC4zZm1zIiwKKyAgICAgICAgICAgICAgICBtRm9jdXNlZEFwcGxpY2F0aW9uLT5uYW1lLnN0cmluZygpLAorICAgICAgICAgICAgICAgIG1Gb2N1c2VkQXBwbGljYXRpb24tPmRpc3BhdGNoaW5nVGltZW91dCAvIDEwMDAwMDAuMCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgTE9HRCgiICBmb2N1c2VkQXBwbGljYXRpb246IDxudWxsPiIpOworICAgIH0KKyAgICBMT0dEKCIgIGZvY3VzZWRXaW5kb3c6ICclcyciLAorICAgICAgICAgICAgbUZvY3VzZWRXaW5kb3cgIT0gTlVMTCA/IG1Gb2N1c2VkV2luZG93LT5pbnB1dENoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKSA6ICI8bnVsbD4iKTsKKyAgICBMT0dEKCIgIHRvdWNoZWRXaW5kb3c6ICclcycsIHRvdWNoRG93bj0lZCIsCisgICAgICAgICAgICBtVG91Y2hlZFdpbmRvdyAhPSBOVUxMID8gbVRvdWNoZWRXaW5kb3ctPmlucHV0Q2hhbm5lbC0+Z2V0TmFtZSgpLnN0cmluZygpIDogIjxudWxsPiIsCisgICAgICAgICAgICBtVG91Y2hEb3duKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG1Ub3VjaGVkV2FsbHBhcGVyV2luZG93cy5zaXplKCk7IGkrKykgeworICAgICAgICBMT0dEKCIgIHRvdWNoZWRXYWxscGFwZXJXaW5kb3dzWyVkXTogJyVzJyIsCisgICAgICAgICAgICAgICAgaSwgbVRvdWNoZWRXYWxscGFwZXJXaW5kb3dzW2ldLT5pbnB1dENoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKSk7CisgICAgfQorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbVdpbmRvd3Muc2l6ZSgpOyBpKyspIHsKKyAgICAgICAgTE9HRCgiICB3aW5kb3dzWyVkXTogJyVzJywgcGF1c2VkPSVkLCBoYXNGb2N1cz0lZCwgaGFzV2FsbHBhcGVyPSVkLCB2aXNpYmxlPSVkLCAiCisgICAgICAgICAgICAgICAgImZsYWdzPTB4JTA4eCwgdHlwZT0weCUwOHgsICIKKyAgICAgICAgICAgICAgICAiZnJhbWU9WyVkLCVkXSwgdG91Y2hhYmxlQXJlYT1bJWQsJWRdWyVkLCVkXSwgIgorICAgICAgICAgICAgICAgICJvd25lclBpZD0lZCwgb3duZXJVaWQ9JWQsIGRpc3BhdGNoaW5nVGltZW91dD0lMC4zZm1zIiwKKyAgICAgICAgICAgICAgICBpLCBtV2luZG93c1tpXS5pbnB1dENoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKSwKKyAgICAgICAgICAgICAgICBtV2luZG93c1tpXS5wYXVzZWQsIG1XaW5kb3dzW2ldLmhhc0ZvY3VzLCBtV2luZG93c1tpXS5oYXNXYWxscGFwZXIsCisgICAgICAgICAgICAgICAgbVdpbmRvd3NbaV0udmlzaWJsZSwgbVdpbmRvd3NbaV0ubGF5b3V0UGFyYW1zRmxhZ3MsIG1XaW5kb3dzW2ldLmxheW91dFBhcmFtc1R5cGUsCisgICAgICAgICAgICAgICAgbVdpbmRvd3NbaV0uZnJhbWVMZWZ0LCBtV2luZG93c1tpXS5mcmFtZVRvcCwKKyAgICAgICAgICAgICAgICBtV2luZG93c1tpXS50b3VjaGFibGVBcmVhTGVmdCwgbVdpbmRvd3NbaV0udG91Y2hhYmxlQXJlYVRvcCwKKyAgICAgICAgICAgICAgICBtV2luZG93c1tpXS50b3VjaGFibGVBcmVhUmlnaHQsIG1XaW5kb3dzW2ldLnRvdWNoYWJsZUFyZWFCb3R0b20sCisgICAgICAgICAgICAgICAgbVdpbmRvd3NbaV0ub3duZXJQaWQsIG1XaW5kb3dzW2ldLm93bmVyVWlkLAorICAgICAgICAgICAgICAgIG1XaW5kb3dzW2ldLmRpc3BhdGNoaW5nVGltZW91dCAvIDEwMDAwMDAuMCk7CisgICAgfQorI2VuZGlmCit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworTmF0aXZlSW5wdXRNYW5hZ2VyOjpBTlJUaW1lcjo6QU5SVGltZXIoKSA6CisgICAgICAgIG1CdWRnZXQoQVBQTElDQVRJT04pLCBtU3RhcnRUaW1lKG5vdygpKSwgbUZyb3plbihmYWxzZSksIG1QYXVzZWRXaW5kb3coTlVMTCkgeworfQorCit2b2lkIE5hdGl2ZUlucHV0TWFuYWdlcjo6QU5SVGltZXI6OmRpc3BhdGNoRnJvemVuQnlTeXN0ZW0oKSB7CisgICAgbUZyb3plbiA9IHRydWU7Cit9CisKK3ZvaWQgTmF0aXZlSW5wdXRNYW5hZ2VyOjpBTlJUaW1lcjo6ZGlzcGF0Y2hQYXVzZWRCeUFwcGxpY2F0aW9uKElucHV0V2luZG93KiBwYXVzZWRXaW5kb3cpIHsKKyAgICBtUGF1c2VkV2luZG93ID0gcGF1c2VkV2luZG93OworfQorCitib29sIE5hdGl2ZUlucHV0TWFuYWdlcjo6QU5SVGltZXI6OndhaXRGb3JEaXNwYXRjaFN0YXRlQ2hhbmdlTGQoTmF0aXZlSW5wdXRNYW5hZ2VyKiBpbnB1dE1hbmFnZXIpIHsKKyAgICBuc2Vjc190IGN1cnJlbnRUaW1lID0gbm93KCk7CisKKyAgICBCdWRnZXQgbmV3QnVkZ2V0OworICAgIG5zZWNzX3QgZGlzcGF0Y2hpbmdUaW1lb3V0OworICAgIHNwPElucHV0Q2hhbm5lbD4gcGF1c2VkQ2hhbm5lbCA9IE5VTEw7CisgICAgam9iamVjdCB0b2tlbk9iaiA9IE5VTEw7CisgICAgaWYgKG1Gcm96ZW4pIHsKKyAgICAgICAgbmV3QnVkZ2V0ID0gU1lTVEVNOworICAgICAgICBkaXNwYXRjaGluZ1RpbWVvdXQgPSBERUZBVUxUX0lOUFVUX0RJU1BBVENISU5HX1RJTUVPVVQ7CisgICAgICAgIG1Gcm96ZW4gPSBmYWxzZTsKKyAgICB9IGVsc2UgaWYgKG1QYXVzZWRXaW5kb3cpIHsKKyAgICAgICAgbmV3QnVkZ2V0ID0gQVBQTElDQVRJT047CisgICAgICAgIGRpc3BhdGNoaW5nVGltZW91dCA9IG1QYXVzZWRXaW5kb3ctPmRpc3BhdGNoaW5nVGltZW91dDsKKyAgICAgICAgcGF1c2VkQ2hhbm5lbCA9IG1QYXVzZWRXaW5kb3ctPmlucHV0Q2hhbm5lbDsKKyAgICAgICAgbVBhdXNlZFdpbmRvdyA9IE5VTEw7CisgICAgfSBlbHNlIGlmIChpbnB1dE1hbmFnZXItPm1Gb2N1c2VkQXBwbGljYXRpb24pIHsKKyAgICAgICAgbmV3QnVkZ2V0ID0gQVBQTElDQVRJT047CisgICAgICAgIGRpc3BhdGNoaW5nVGltZW91dCA9IGlucHV0TWFuYWdlci0+bUZvY3VzZWRBcHBsaWNhdGlvbi0+ZGlzcGF0Y2hpbmdUaW1lb3V0OworICAgICAgICB0b2tlbk9iaiA9IGpuaUVudigpLT5OZXdMb2NhbFJlZihpbnB1dE1hbmFnZXItPm1Gb2N1c2VkQXBwbGljYXRpb24tPnRva2VuT2JqV2Vhayk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbmV3QnVkZ2V0ID0gQVBQTElDQVRJT047CisgICAgICAgIGRpc3BhdGNoaW5nVGltZW91dCA9IERFRkFVTFRfSU5QVVRfRElTUEFUQ0hJTkdfVElNRU9VVDsKKyAgICB9CisKKyAgICBpZiAobUJ1ZGdldCAhPSBuZXdCdWRnZXQpIHsKKyAgICAgICAgbUJ1ZGdldCA9IG5ld0J1ZGdldDsKKyAgICAgICAgbVN0YXJ0VGltZSA9IGN1cnJlbnRUaW1lOworICAgIH0KKworICAgIGJvb2wgcmVzdWx0ID0gZmFsc2U7CisgICAgbnNlY3NfdCB0aW1lb3V0UmVtYWluaW5nID0gbVN0YXJ0VGltZSArIGRpc3BhdGNoaW5nVGltZW91dCAtIGN1cnJlbnRUaW1lOworICAgIGlmICh0aW1lb3V0UmVtYWluaW5nID4gMAorICAgICAgICAgICAgJiYgaW5wdXRNYW5hZ2VyLT5tRGlzcGF0Y2hTdGF0ZUNoYW5nZWQud2FpdFJlbGF0aXZlKGlucHV0TWFuYWdlci0+bURpc3BhdGNoTG9jaywKKyAgICAgICAgICAgICAgICAgICAgdGltZW91dFJlbWFpbmluZykgPT0gT0spIHsKKyAgICAgICAgcmVzdWx0ID0gdHJ1ZTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAocGF1c2VkQ2hhbm5lbCAhPSBOVUxMIHx8IHRva2VuT2JqICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGJvb2wgcmVzdW1lZDsKKyAgICAgICAgICAgIG5zZWNzX3QgbmV3VGltZW91dCA9IDA7CisKKyAgICAgICAgICAgIGlucHV0TWFuYWdlci0+bURpc3BhdGNoTG9jay51bmxvY2soKTsgLy8gcmVsZWFzZSBsb2NrCisgICAgICAgICAgICBpZiAocGF1c2VkQ2hhbm5lbCAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgcmVzdW1lZCA9IGlucHV0TWFuYWdlci0+bm90aWZ5SW5wdXRDaGFubmVsQU5SKHBhdXNlZENoYW5uZWwsIC8qb3V0Ki8gbmV3VGltZW91dCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJlc3VtZWQgPSBpbnB1dE1hbmFnZXItPm5vdGlmeUFOUih0b2tlbk9iaiwgLypvdXQqLyBuZXdUaW1lb3V0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlucHV0TWFuYWdlci0+bURpc3BhdGNoTG9jay5sb2NrKCk7IC8vIHJlLWFjcXVpcmUgbG9jaworCisgICAgICAgICAgICBpZiAocmVzdW1lZCkgeworICAgICAgICAgICAgICAgIG1TdGFydFRpbWUgPSBub3coKSAtIGRpc3BhdGNoaW5nVGltZW91dCArIG5ld1RpbWVvdXQ7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGlmICh0b2tlbk9iaikgeworICAgICAgICBqbmlFbnYoKS0+RGVsZXRlTG9jYWxSZWYodG9rZW5PYmopOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK25zZWNzX3QgTmF0aXZlSW5wdXRNYW5hZ2VyOjpBTlJUaW1lcjo6Z2V0VGltZVNwZW50V2FpdGluZ0ZvckFwcGxpY2F0aW9uKCkgY29uc3QgeworICAgIHJldHVybiBtQnVkZ2V0ID09IEFQUExJQ0FUSU9OID8gbm93KCkgLSBtU3RhcnRUaW1lIDogMDsKK30KKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdGF0aWMgc3A8TmF0aXZlSW5wdXRNYW5hZ2VyPiBnTmF0aXZlSW5wdXRNYW5hZ2VyOworCitzdGF0aWMgYm9vbCBjaGVja0lucHV0TWFuYWdlclVuaXRpYWxpemVkKEpOSUVudiogZW52KSB7CisgICAgaWYgKGdOYXRpdmVJbnB1dE1hbmFnZXIgPT0gTlVMTCkgeworICAgICAgICBMT0dFKCJJbnB1dCBtYW5hZ2VyIG5vdCBpbml0aWFsaXplZC4iKTsKKyAgICAgICAgam5pVGhyb3dSdW50aW1lRXhjZXB0aW9uKGVudiwgIklucHV0IG1hbmFnZXIgbm90IGluaXRpYWxpemVkLiIpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitzdGF0aWMgdm9pZCBhbmRyb2lkX3NlcnZlcl9JbnB1dE1hbmFnZXJfbmF0aXZlSW5pdChKTklFbnYqIGVudiwgamNsYXNzIGNsYXp6LAorICAgICAgICBqb2JqZWN0IGNhbGxiYWNrcykgeworICAgIGlmIChnTmF0aXZlSW5wdXRNYW5hZ2VyID09IE5VTEwpIHsKKyAgICAgICAgZ05hdGl2ZUlucHV0TWFuYWdlciA9IG5ldyBOYXRpdmVJbnB1dE1hbmFnZXIoY2FsbGJhY2tzKTsKKyAgICB9IGVsc2UgeworICAgICAgICBMT0dFKCJJbnB1dCBtYW5hZ2VyIGFscmVhZHkgaW5pdGlhbGl6ZWQuIik7CisgICAgICAgIGpuaVRocm93UnVudGltZUV4Y2VwdGlvbihlbnYsICJJbnB1dCBtYW5hZ2VyIGFscmVhZHkgaW5pdGlhbGl6ZWQuIik7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBhbmRyb2lkX3NlcnZlcl9JbnB1dE1hbmFnZXJfbmF0aXZlU3RhcnQoSk5JRW52KiBlbnYsIGpjbGFzcyBjbGF6eikgeworICAgIGlmIChjaGVja0lucHV0TWFuYWdlclVuaXRpYWxpemVkKGVudikpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIHN0YXR1c190IHJlc3VsdCA9IGdOYXRpdmVJbnB1dE1hbmFnZXItPmdldElucHV0TWFuYWdlcigpLT5zdGFydCgpOworICAgIGlmIChyZXN1bHQpIHsKKyAgICAgICAgam5pVGhyb3dSdW50aW1lRXhjZXB0aW9uKGVudiwgIklucHV0IG1hbmFnZXIgY291bGQgbm90IGJlIHN0YXJ0ZWQuIik7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBhbmRyb2lkX3NlcnZlcl9JbnB1dE1hbmFnZXJfbmF0aXZlU2V0RGlzcGxheVNpemUoSk5JRW52KiBlbnYsIGpjbGFzcyBjbGF6eiwKKyAgICAgICAgamludCBkaXNwbGF5SWQsIGppbnQgd2lkdGgsIGppbnQgaGVpZ2h0KSB7CisgICAgaWYgKGNoZWNrSW5wdXRNYW5hZ2VyVW5pdGlhbGl6ZWQoZW52KSkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgLy8gWFhYIHdlIGNvdWxkIGdldCB0aGlzIGZyb20gdGhlIFN1cmZhY2VGbGluZ2VyIGRpcmVjdGx5IGluc3RlYWQgb2YgcmVxdWlyaW5nIGl0CisgICAgLy8gdG8gYmUgcGFzc2VkIGluIGxpa2UgdGhpcywgbm90IHN1cmUgd2hpY2ggaXMgYmV0dGVyIGJ1dCBsZWF2aW5nIGl0IGxpa2UgdGhpcworICAgIC8vIGtlZXBzIHRoZSB3aW5kb3cgbWFuYWdlciBpbiBkaXJlY3QgY29udHJvbCBvZiB3aGVuIGRpc3BsYXkgdHJhbnNpdGlvbnMgcHJvcGFnYXRlIGRvd24KKyAgICAvLyB0byB0aGUgaW5wdXQgZGlzcGF0Y2hlcgorICAgIGdOYXRpdmVJbnB1dE1hbmFnZXItPnNldERpc3BsYXlTaXplKGRpc3BsYXlJZCwgd2lkdGgsIGhlaWdodCk7Cit9CisKK3N0YXRpYyB2b2lkIGFuZHJvaWRfc2VydmVyX0lucHV0TWFuYWdlcl9uYXRpdmVTZXREaXNwbGF5T3JpZW50YXRpb24oSk5JRW52KiBlbnYsIGpjbGFzcyBjbGF6eiwKKyAgICAgICAgamludCBkaXNwbGF5SWQsIGppbnQgb3JpZW50YXRpb24pIHsKKyAgICBpZiAoY2hlY2tJbnB1dE1hbmFnZXJVbml0aWFsaXplZChlbnYpKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBnTmF0aXZlSW5wdXRNYW5hZ2VyLT5zZXREaXNwbGF5T3JpZW50YXRpb24oZGlzcGxheUlkLCBvcmllbnRhdGlvbik7Cit9CisKK3N0YXRpYyBqaW50IGFuZHJvaWRfc2VydmVyX0lucHV0TWFuYWdlcl9uYXRpdmVHZXRTY2FuQ29kZVN0YXRlKEpOSUVudiogZW52LCBqY2xhc3MgY2xhenosCisgICAgICAgIGppbnQgZGV2aWNlSWQsIGppbnQgZGV2aWNlQ2xhc3NlcywgamludCBzY2FuQ29kZSkgeworICAgIGlmIChjaGVja0lucHV0TWFuYWdlclVuaXRpYWxpemVkKGVudikpIHsKKyAgICAgICAgcmV0dXJuIEtFWV9TVEFURV9VTktOT1dOOworICAgIH0KKworICAgIHJldHVybiBnTmF0aXZlSW5wdXRNYW5hZ2VyLT5nZXRJbnB1dE1hbmFnZXIoKS0+Z2V0U2NhbkNvZGVTdGF0ZSgKKyAgICAgICAgICAgIGRldmljZUlkLCBkZXZpY2VDbGFzc2VzLCBzY2FuQ29kZSk7Cit9CisKK3N0YXRpYyBqaW50IGFuZHJvaWRfc2VydmVyX0lucHV0TWFuYWdlcl9uYXRpdmVHZXRLZXlDb2RlU3RhdGUoSk5JRW52KiBlbnYsIGpjbGFzcyBjbGF6eiwKKyAgICAgICAgamludCBkZXZpY2VJZCwgamludCBkZXZpY2VDbGFzc2VzLCBqaW50IGtleUNvZGUpIHsKKyAgICBpZiAoY2hlY2tJbnB1dE1hbmFnZXJVbml0aWFsaXplZChlbnYpKSB7CisgICAgICAgIHJldHVybiBLRVlfU1RBVEVfVU5LTk9XTjsKKyAgICB9CisKKyAgICByZXR1cm4gZ05hdGl2ZUlucHV0TWFuYWdlci0+Z2V0SW5wdXRNYW5hZ2VyKCktPmdldEtleUNvZGVTdGF0ZSgKKyAgICAgICAgICAgIGRldmljZUlkLCBkZXZpY2VDbGFzc2VzLCBrZXlDb2RlKTsKK30KKworc3RhdGljIGppbnQgYW5kcm9pZF9zZXJ2ZXJfSW5wdXRNYW5hZ2VyX25hdGl2ZUdldFN3aXRjaFN0YXRlKEpOSUVudiogZW52LCBqY2xhc3MgY2xhenosCisgICAgICAgIGppbnQgZGV2aWNlSWQsIGppbnQgZGV2aWNlQ2xhc3NlcywgamludCBzdykgeworICAgIGlmIChjaGVja0lucHV0TWFuYWdlclVuaXRpYWxpemVkKGVudikpIHsKKyAgICAgICAgcmV0dXJuIEtFWV9TVEFURV9VTktOT1dOOworICAgIH0KKworICAgIHJldHVybiBnTmF0aXZlSW5wdXRNYW5hZ2VyLT5nZXRJbnB1dE1hbmFnZXIoKS0+Z2V0U3dpdGNoU3RhdGUoZGV2aWNlSWQsIGRldmljZUNsYXNzZXMsIHN3KTsKK30KKworc3RhdGljIGpib29sZWFuIGFuZHJvaWRfc2VydmVyX0lucHV0TWFuYWdlcl9uYXRpdmVIYXNLZXlzKEpOSUVudiogZW52LCBqY2xhc3MgY2xhenosCisgICAgICAgIGppbnRBcnJheSBrZXlDb2RlcywgamJvb2xlYW5BcnJheSBvdXRGbGFncykgeworICAgIGlmIChjaGVja0lucHV0TWFuYWdlclVuaXRpYWxpemVkKGVudikpIHsKKyAgICAgICAgcmV0dXJuIEpOSV9GQUxTRTsKKyAgICB9CisKKyAgICBpbnQzMl90KiBjb2RlcyA9IGVudi0+R2V0SW50QXJyYXlFbGVtZW50cyhrZXlDb2RlcywgTlVMTCk7CisgICAgdWludDhfdCogZmxhZ3MgPSBlbnYtPkdldEJvb2xlYW5BcnJheUVsZW1lbnRzKG91dEZsYWdzLCBOVUxMKTsKKyAgICBqc2l6ZSBudW1Db2RlcyA9IGVudi0+R2V0QXJyYXlMZW5ndGgoa2V5Q29kZXMpOworICAgIGpib29sZWFuIHJlc3VsdDsKKyAgICBpZiAobnVtQ29kZXMgPT0gZW52LT5HZXRBcnJheUxlbmd0aChvdXRGbGFncykpIHsKKyAgICAgICAgcmVzdWx0ID0gZ05hdGl2ZUlucHV0TWFuYWdlci0+Z2V0SW5wdXRNYW5hZ2VyKCktPmhhc0tleXMobnVtQ29kZXMsIGNvZGVzLCBmbGFncyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmVzdWx0ID0gSk5JX0ZBTFNFOworICAgIH0KKworICAgIGVudi0+UmVsZWFzZUJvb2xlYW5BcnJheUVsZW1lbnRzKG91dEZsYWdzLCBmbGFncywgMCk7CisgICAgZW52LT5SZWxlYXNlSW50QXJyYXlFbGVtZW50cyhrZXlDb2RlcywgY29kZXMsIDApOworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyB2b2lkIHRocm93SW5wdXRDaGFubmVsTm90SW5pdGlhbGl6ZWQoSk5JRW52KiBlbnYpIHsKKyAgICBqbmlUaHJvd0V4Y2VwdGlvbihlbnYsICJqYXZhL2xhbmcvSWxsZWdhbFN0YXRlRXhjZXB0aW9uIiwKKyAgICAgICAgICAgICAiaW5wdXRDaGFubmVsIGlzIG5vdCBpbml0aWFsaXplZCIpOworfQorCitzdGF0aWMgdm9pZCBhbmRyb2lkX3NlcnZlcl9JbnB1dE1hbmFnZXJfaGFuZGxlSW5wdXRDaGFubmVsRGlzcG9zZWQoSk5JRW52KiBlbnYsCisgICAgICAgIGpvYmplY3QgaW5wdXRDaGFubmVsT2JqLCBjb25zdCBzcDxJbnB1dENoYW5uZWw+JiBpbnB1dENoYW5uZWwsIHZvaWQqIGRhdGEpIHsKKyAgICBMT0dXKCJJbnB1dCBjaGFubmVsIG9iamVjdCAnJXMnIHdhcyBkaXNwb3NlZCB3aXRob3V0IGZpcnN0IGJlaW5nIHVucmVnaXN0ZXJlZCB3aXRoICIKKyAgICAgICAgICAgICJ0aGUgaW5wdXQgbWFuYWdlciEiLCBpbnB1dENoYW5uZWwtPmdldE5hbWUoKS5zdHJpbmcoKSk7CisKKyAgICBpZiAoZ05hdGl2ZUlucHV0TWFuYWdlciAhPSBOVUxMKSB7CisgICAgICAgIGdOYXRpdmVJbnB1dE1hbmFnZXItPnVucmVnaXN0ZXJJbnB1dENoYW5uZWwoZW52LCBpbnB1dENoYW5uZWwpOworICAgIH0KK30KKworc3RhdGljIHZvaWQgYW5kcm9pZF9zZXJ2ZXJfSW5wdXRNYW5hZ2VyX25hdGl2ZVJlZ2lzdGVySW5wdXRDaGFubmVsKEpOSUVudiogZW52LCBqY2xhc3MgY2xhenosCisgICAgICAgIGpvYmplY3QgaW5wdXRDaGFubmVsT2JqKSB7CisgICAgaWYgKGNoZWNrSW5wdXRNYW5hZ2VyVW5pdGlhbGl6ZWQoZW52KSkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3A8SW5wdXRDaGFubmVsPiBpbnB1dENoYW5uZWwgPSBhbmRyb2lkX3ZpZXdfSW5wdXRDaGFubmVsX2dldElucHV0Q2hhbm5lbChlbnYsCisgICAgICAgICAgICBpbnB1dENoYW5uZWxPYmopOworICAgIGlmIChpbnB1dENoYW5uZWwgPT0gTlVMTCkgeworICAgICAgICB0aHJvd0lucHV0Q2hhbm5lbE5vdEluaXRpYWxpemVkKGVudik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKworICAgIHN0YXR1c190IHN0YXR1cyA9IGdOYXRpdmVJbnB1dE1hbmFnZXItPnJlZ2lzdGVySW5wdXRDaGFubmVsKAorICAgICAgICAgICAgZW52LCBpbnB1dENoYW5uZWwsIGlucHV0Q2hhbm5lbE9iaik7CisgICAgaWYgKHN0YXR1cykgeworICAgICAgICBqbmlUaHJvd1J1bnRpbWVFeGNlcHRpb24oZW52LCAiRmFpbGVkIHRvIHJlZ2lzdGVyIGlucHV0IGNoYW5uZWwuICAiCisgICAgICAgICAgICAgICAgIkNoZWNrIGxvZ3MgZm9yIGRldGFpbHMuIik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhbmRyb2lkX3ZpZXdfSW5wdXRDaGFubmVsX3NldERpc3Bvc2VDYWxsYmFjayhlbnYsIGlucHV0Q2hhbm5lbE9iaiwKKyAgICAgICAgICAgIGFuZHJvaWRfc2VydmVyX0lucHV0TWFuYWdlcl9oYW5kbGVJbnB1dENoYW5uZWxEaXNwb3NlZCwgTlVMTCk7Cit9CisKK3N0YXRpYyB2b2lkIGFuZHJvaWRfc2VydmVyX0lucHV0TWFuYWdlcl9uYXRpdmVVbnJlZ2lzdGVySW5wdXRDaGFubmVsKEpOSUVudiogZW52LCBqY2xhc3MgY2xhenosCisgICAgICAgIGpvYmplY3QgaW5wdXRDaGFubmVsT2JqKSB7CisgICAgaWYgKGNoZWNrSW5wdXRNYW5hZ2VyVW5pdGlhbGl6ZWQoZW52KSkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc3A8SW5wdXRDaGFubmVsPiBpbnB1dENoYW5uZWwgPSBhbmRyb2lkX3ZpZXdfSW5wdXRDaGFubmVsX2dldElucHV0Q2hhbm5lbChlbnYsCisgICAgICAgICAgICBpbnB1dENoYW5uZWxPYmopOworICAgIGlmIChpbnB1dENoYW5uZWwgPT0gTlVMTCkgeworICAgICAgICB0aHJvd0lucHV0Q2hhbm5lbE5vdEluaXRpYWxpemVkKGVudik7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhbmRyb2lkX3ZpZXdfSW5wdXRDaGFubmVsX3NldERpc3Bvc2VDYWxsYmFjayhlbnYsIGlucHV0Q2hhbm5lbE9iaiwgTlVMTCwgTlVMTCk7CisKKyAgICBzdGF0dXNfdCBzdGF0dXMgPSBnTmF0aXZlSW5wdXRNYW5hZ2VyLT51bnJlZ2lzdGVySW5wdXRDaGFubmVsKGVudiwgaW5wdXRDaGFubmVsKTsKKyAgICBpZiAoc3RhdHVzKSB7CisgICAgICAgIGpuaVRocm93UnVudGltZUV4Y2VwdGlvbihlbnYsICJGYWlsZWQgdG8gdW5yZWdpc3RlciBpbnB1dCBjaGFubmVsLiAgIgorICAgICAgICAgICAgICAgICJDaGVjayBsb2dzIGZvciBkZXRhaWxzLiIpOworICAgIH0KK30KKworc3RhdGljIGppbnQgYW5kcm9pZF9zZXJ2ZXJfSW5wdXRNYW5hZ2VyX25hdGl2ZUluamVjdEtleUV2ZW50KEpOSUVudiogZW52LCBqY2xhc3MgY2xhenosCisgICAgICAgIGpvYmplY3Qga2V5RXZlbnRPYmosIGppbnQgbmF0dXJlLCBqaW50IGluamVjdG9yUGlkLCBqaW50IGluamVjdG9yVWlkLAorICAgICAgICBqYm9vbGVhbiBzeW5jLCBqaW50IHRpbWVvdXRNaWxsaXMpIHsKKyAgICBpZiAoY2hlY2tJbnB1dE1hbmFnZXJVbml0aWFsaXplZChlbnYpKSB7CisgICAgICAgIHJldHVybiBJTlBVVF9FVkVOVF9JTkpFQ1RJT05fRkFJTEVEOworICAgIH0KKworICAgIEtleUV2ZW50IGtleUV2ZW50OworICAgIGFuZHJvaWRfdmlld19LZXlFdmVudF90b05hdGl2ZShlbnYsIGtleUV2ZW50T2JqLCBuYXR1cmUsICYga2V5RXZlbnQpOworCisgICAgcmV0dXJuIGdOYXRpdmVJbnB1dE1hbmFnZXItPmdldElucHV0TWFuYWdlcigpLT5pbmplY3RJbnB1dEV2ZW50KCYga2V5RXZlbnQsCisgICAgICAgICAgICBpbmplY3RvclBpZCwgaW5qZWN0b3JVaWQsIHN5bmMsIHRpbWVvdXRNaWxsaXMpOworfQorCitzdGF0aWMgamludCBhbmRyb2lkX3NlcnZlcl9JbnB1dE1hbmFnZXJfbmF0aXZlSW5qZWN0TW90aW9uRXZlbnQoSk5JRW52KiBlbnYsIGpjbGFzcyBjbGF6eiwKKyAgICAgICAgam9iamVjdCBtb3Rpb25FdmVudE9iaiwgamludCBuYXR1cmUsIGppbnQgaW5qZWN0b3JQaWQsIGppbnQgaW5qZWN0b3JVaWQsCisgICAgICAgIGpib29sZWFuIHN5bmMsIGppbnQgdGltZW91dE1pbGxpcykgeworICAgIGlmIChjaGVja0lucHV0TWFuYWdlclVuaXRpYWxpemVkKGVudikpIHsKKyAgICAgICAgcmV0dXJuIElOUFVUX0VWRU5UX0lOSkVDVElPTl9GQUlMRUQ7CisgICAgfQorCisgICAgTW90aW9uRXZlbnQgbW90aW9uRXZlbnQ7CisgICAgYW5kcm9pZF92aWV3X01vdGlvbkV2ZW50X3RvTmF0aXZlKGVudiwgbW90aW9uRXZlbnRPYmosIG5hdHVyZSwgJiBtb3Rpb25FdmVudCk7CisKKyAgICByZXR1cm4gZ05hdGl2ZUlucHV0TWFuYWdlci0+Z2V0SW5wdXRNYW5hZ2VyKCktPmluamVjdElucHV0RXZlbnQoJiBtb3Rpb25FdmVudCwKKyAgICAgICAgICAgIGluamVjdG9yUGlkLCBpbmplY3RvclVpZCwgc3luYywgdGltZW91dE1pbGxpcyk7Cit9CisKK3N0YXRpYyB2b2lkIGFuZHJvaWRfc2VydmVyX0lucHV0TWFuYWdlcl9uYXRpdmVTZXRJbnB1dFdpbmRvd3MoSk5JRW52KiBlbnYsIGpjbGFzcyBjbGF6eiwKKyAgICAgICAgam9iamVjdEFycmF5IHdpbmRvd09iakFycmF5KSB7CisgICAgaWYgKGNoZWNrSW5wdXRNYW5hZ2VyVW5pdGlhbGl6ZWQoZW52KSkgeworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZ05hdGl2ZUlucHV0TWFuYWdlci0+c2V0SW5wdXRXaW5kb3dzKGVudiwgd2luZG93T2JqQXJyYXkpOworfQorCitzdGF0aWMgdm9pZCBhbmRyb2lkX3NlcnZlcl9JbnB1dE1hbmFnZXJfbmF0aXZlU2V0Rm9jdXNlZEFwcGxpY2F0aW9uKEpOSUVudiogZW52LCBqY2xhc3MgY2xhenosCisgICAgICAgIGpvYmplY3QgYXBwbGljYXRpb25PYmopIHsKKyAgICBpZiAoY2hlY2tJbnB1dE1hbmFnZXJVbml0aWFsaXplZChlbnYpKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBnTmF0aXZlSW5wdXRNYW5hZ2VyLT5zZXRGb2N1c2VkQXBwbGljYXRpb24oZW52LCBhcHBsaWNhdGlvbk9iaik7Cit9CisKK3N0YXRpYyB2b2lkIGFuZHJvaWRfc2VydmVyX0lucHV0TWFuYWdlcl9uYXRpdmVTZXRJbnB1dERpc3BhdGNoTW9kZShKTklFbnYqIGVudiwKKyAgICAgICAgamNsYXNzIGNsYXp6LCBqYm9vbGVhbiBlbmFibGVkLCBqYm9vbGVhbiBmcm96ZW4pIHsKKyAgICBpZiAoY2hlY2tJbnB1dE1hbmFnZXJVbml0aWFsaXplZChlbnYpKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBnTmF0aXZlSW5wdXRNYW5hZ2VyLT5zZXRJbnB1dERpc3BhdGNoTW9kZShlbmFibGVkLCBmcm96ZW4pOworfQorCitzdGF0aWMgdm9pZCBhbmRyb2lkX3NlcnZlcl9JbnB1dE1hbmFnZXJfbmF0aXZlUHJlZW1wdElucHV0RGlzcGF0Y2goSk5JRW52KiBlbnYsCisgICAgICAgIGpjbGFzcyBjbGF6eikgeworICAgIGlmIChjaGVja0lucHV0TWFuYWdlclVuaXRpYWxpemVkKGVudikpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGdOYXRpdmVJbnB1dE1hbmFnZXItPnByZWVtcHRJbnB1dERpc3BhdGNoKCk7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworc3RhdGljIEpOSU5hdGl2ZU1ldGhvZCBnSW5wdXRNYW5hZ2VyTWV0aG9kc1tdID0geworICAgIC8qIG5hbWUsIHNpZ25hdHVyZSwgZnVuY1B0ciAqLworICAgIHsgIm5hdGl2ZUluaXQiLCAiKExjb20vYW5kcm9pZC9zZXJ2ZXIvSW5wdXRNYW5hZ2VyJENhbGxiYWNrczspViIsCisgICAgICAgICAgICAodm9pZCopIGFuZHJvaWRfc2VydmVyX0lucHV0TWFuYWdlcl9uYXRpdmVJbml0IH0sCisgICAgeyAibmF0aXZlU3RhcnQiLCAiKClWIiwKKyAgICAgICAgICAgICh2b2lkKikgYW5kcm9pZF9zZXJ2ZXJfSW5wdXRNYW5hZ2VyX25hdGl2ZVN0YXJ0IH0sCisgICAgeyAibmF0aXZlU2V0RGlzcGxheVNpemUiLCAiKElJSSlWIiwKKyAgICAgICAgICAgICh2b2lkKikgYW5kcm9pZF9zZXJ2ZXJfSW5wdXRNYW5hZ2VyX25hdGl2ZVNldERpc3BsYXlTaXplIH0sCisgICAgeyAibmF0aXZlU2V0RGlzcGxheU9yaWVudGF0aW9uIiwgIihJSSlWIiwKKyAgICAgICAgICAgICh2b2lkKikgYW5kcm9pZF9zZXJ2ZXJfSW5wdXRNYW5hZ2VyX25hdGl2ZVNldERpc3BsYXlPcmllbnRhdGlvbiB9LAorICAgIHsgIm5hdGl2ZUdldFNjYW5Db2RlU3RhdGUiLCAiKElJSSlJIiwKKyAgICAgICAgICAgICh2b2lkKikgYW5kcm9pZF9zZXJ2ZXJfSW5wdXRNYW5hZ2VyX25hdGl2ZUdldFNjYW5Db2RlU3RhdGUgfSwKKyAgICB7ICJuYXRpdmVHZXRLZXlDb2RlU3RhdGUiLCAiKElJSSlJIiwKKyAgICAgICAgICAgICh2b2lkKikgYW5kcm9pZF9zZXJ2ZXJfSW5wdXRNYW5hZ2VyX25hdGl2ZUdldEtleUNvZGVTdGF0ZSB9LAorICAgIHsgIm5hdGl2ZUdldFN3aXRjaFN0YXRlIiwgIihJSUkpSSIsCisgICAgICAgICAgICAodm9pZCopIGFuZHJvaWRfc2VydmVyX0lucHV0TWFuYWdlcl9uYXRpdmVHZXRTd2l0Y2hTdGF0ZSB9LAorICAgIHsgIm5hdGl2ZUhhc0tleXMiLCAiKFtJW1opWiIsCisgICAgICAgICAgICAodm9pZCopIGFuZHJvaWRfc2VydmVyX0lucHV0TWFuYWdlcl9uYXRpdmVIYXNLZXlzIH0sCisgICAgeyAibmF0aXZlUmVnaXN0ZXJJbnB1dENoYW5uZWwiLCAiKExhbmRyb2lkL3ZpZXcvSW5wdXRDaGFubmVsOylWIiwKKyAgICAgICAgICAgICh2b2lkKikgYW5kcm9pZF9zZXJ2ZXJfSW5wdXRNYW5hZ2VyX25hdGl2ZVJlZ2lzdGVySW5wdXRDaGFubmVsIH0sCisgICAgeyAibmF0aXZlVW5yZWdpc3RlcklucHV0Q2hhbm5lbCIsICIoTGFuZHJvaWQvdmlldy9JbnB1dENoYW5uZWw7KVYiLAorICAgICAgICAgICAgKHZvaWQqKSBhbmRyb2lkX3NlcnZlcl9JbnB1dE1hbmFnZXJfbmF0aXZlVW5yZWdpc3RlcklucHV0Q2hhbm5lbCB9LAorICAgIHsgIm5hdGl2ZUluamVjdEtleUV2ZW50IiwgIihMYW5kcm9pZC92aWV3L0tleUV2ZW50O0lJSVpJKUkiLAorICAgICAgICAgICAgKHZvaWQqKSBhbmRyb2lkX3NlcnZlcl9JbnB1dE1hbmFnZXJfbmF0aXZlSW5qZWN0S2V5RXZlbnQgfSwKKyAgICB7ICJuYXRpdmVJbmplY3RNb3Rpb25FdmVudCIsICIoTGFuZHJvaWQvdmlldy9Nb3Rpb25FdmVudDtJSUlaSSlJIiwKKyAgICAgICAgICAgICh2b2lkKikgYW5kcm9pZF9zZXJ2ZXJfSW5wdXRNYW5hZ2VyX25hdGl2ZUluamVjdE1vdGlvbkV2ZW50IH0sCisgICAgeyAibmF0aXZlU2V0SW5wdXRXaW5kb3dzIiwgIihbTGNvbS9hbmRyb2lkL3NlcnZlci9JbnB1dFdpbmRvdzspViIsCisgICAgICAgICAgICAodm9pZCopIGFuZHJvaWRfc2VydmVyX0lucHV0TWFuYWdlcl9uYXRpdmVTZXRJbnB1dFdpbmRvd3MgfSwKKyAgICB7ICJuYXRpdmVTZXRGb2N1c2VkQXBwbGljYXRpb24iLCAiKExjb20vYW5kcm9pZC9zZXJ2ZXIvSW5wdXRBcHBsaWNhdGlvbjspViIsCisgICAgICAgICAgICAodm9pZCopIGFuZHJvaWRfc2VydmVyX0lucHV0TWFuYWdlcl9uYXRpdmVTZXRGb2N1c2VkQXBwbGljYXRpb24gfSwKKyAgICB7ICJuYXRpdmVTZXRJbnB1dERpc3BhdGNoTW9kZSIsICIoWlopViIsCisgICAgICAgICAgICAodm9pZCopIGFuZHJvaWRfc2VydmVyX0lucHV0TWFuYWdlcl9uYXRpdmVTZXRJbnB1dERpc3BhdGNoTW9kZSB9LAorICAgIHsgIm5hdGl2ZVByZWVtcHRJbnB1dERpc3BhdGNoIiwgIigpViIsCisgICAgICAgICAgICAodm9pZCopIGFuZHJvaWRfc2VydmVyX0lucHV0TWFuYWdlcl9uYXRpdmVQcmVlbXB0SW5wdXREaXNwYXRjaCB9Cit9OworCisjZGVmaW5lIEZJTkRfQ0xBU1ModmFyLCBjbGFzc05hbWUpIFwKKyAgICAgICAgdmFyID0gZW52LT5GaW5kQ2xhc3MoY2xhc3NOYW1lKTsgXAorICAgICAgICBMT0dfRkFUQUxfSUYoISB2YXIsICJVbmFibGUgdG8gZmluZCBjbGFzcyAiIGNsYXNzTmFtZSk7IFwKKyAgICAgICAgdmFyID0gamNsYXNzKGVudi0+TmV3R2xvYmFsUmVmKHZhcikpOworCisjZGVmaW5lIEdFVF9NRVRIT0RfSUQodmFyLCBjbGF6eiwgbWV0aG9kTmFtZSwgbWV0aG9kRGVzY3JpcHRvcikgXAorICAgICAgICB2YXIgPSBlbnYtPkdldE1ldGhvZElEKGNsYXp6LCBtZXRob2ROYW1lLCBtZXRob2REZXNjcmlwdG9yKTsgXAorICAgICAgICBMT0dfRkFUQUxfSUYoISB2YXIsICJVbmFibGUgdG8gZmluZCBtZXRob2QgIiBtZXRob2ROYW1lKTsKKworI2RlZmluZSBHRVRfRklFTERfSUQodmFyLCBjbGF6eiwgZmllbGROYW1lLCBmaWVsZERlc2NyaXB0b3IpIFwKKyAgICAgICAgdmFyID0gZW52LT5HZXRGaWVsZElEKGNsYXp6LCBmaWVsZE5hbWUsIGZpZWxkRGVzY3JpcHRvcik7IFwKKyAgICAgICAgTE9HX0ZBVEFMX0lGKCEgdmFyLCAiVW5hYmxlIHRvIGZpbmQgZmllbGQgIiBmaWVsZE5hbWUpOworCitpbnQgcmVnaXN0ZXJfYW5kcm9pZF9zZXJ2ZXJfSW5wdXRNYW5hZ2VyKEpOSUVudiogZW52KSB7CisgICAgaW50IHJlcyA9IGpuaVJlZ2lzdGVyTmF0aXZlTWV0aG9kcyhlbnYsICJjb20vYW5kcm9pZC9zZXJ2ZXIvSW5wdXRNYW5hZ2VyIiwKKyAgICAgICAgICAgIGdJbnB1dE1hbmFnZXJNZXRob2RzLCBORUxFTShnSW5wdXRNYW5hZ2VyTWV0aG9kcykpOworICAgIExPR19GQVRBTF9JRihyZXMgPCAwLCAiVW5hYmxlIHRvIHJlZ2lzdGVyIG5hdGl2ZSBtZXRob2RzLiIpOworCisgICAgLy8gQ2FsbGJhY2tzCisKKyAgICBGSU5EX0NMQVNTKGdDYWxsYmFja3NDbGFzc0luZm8uY2xhenosICJjb20vYW5kcm9pZC9zZXJ2ZXIvSW5wdXRNYW5hZ2VyJENhbGxiYWNrcyIpOworCisgICAgR0VUX01FVEhPRF9JRChnQ2FsbGJhY2tzQ2xhc3NJbmZvLm5vdGlmeUNvbmZpZ3VyYXRpb25DaGFuZ2VkLCBnQ2FsbGJhY2tzQ2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgIm5vdGlmeUNvbmZpZ3VyYXRpb25DaGFuZ2VkIiwgIihKSUlJKVYiKTsKKworICAgIEdFVF9NRVRIT0RfSUQoZ0NhbGxiYWNrc0NsYXNzSW5mby5ub3RpZnlMaWRTd2l0Y2hDaGFuZ2VkLCBnQ2FsbGJhY2tzQ2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgIm5vdGlmeUxpZFN3aXRjaENoYW5nZWQiLCAiKEpaKVYiKTsKKworICAgIEdFVF9NRVRIT0RfSUQoZ0NhbGxiYWNrc0NsYXNzSW5mby5ub3RpZnlJbnB1dENoYW5uZWxCcm9rZW4sIGdDYWxsYmFja3NDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAibm90aWZ5SW5wdXRDaGFubmVsQnJva2VuIiwgIihMYW5kcm9pZC92aWV3L0lucHV0Q2hhbm5lbDspViIpOworCisgICAgR0VUX01FVEhPRF9JRChnQ2FsbGJhY2tzQ2xhc3NJbmZvLm5vdGlmeUlucHV0Q2hhbm5lbEFOUiwgZ0NhbGxiYWNrc0NsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgICJub3RpZnlJbnB1dENoYW5uZWxBTlIiLCAiKExhbmRyb2lkL3ZpZXcvSW5wdXRDaGFubmVsOylKIik7CisKKyAgICBHRVRfTUVUSE9EX0lEKGdDYWxsYmFja3NDbGFzc0luZm8ubm90aWZ5SW5wdXRDaGFubmVsUmVjb3ZlcmVkRnJvbUFOUiwgZ0NhbGxiYWNrc0NsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgICJub3RpZnlJbnB1dENoYW5uZWxSZWNvdmVyZWRGcm9tQU5SIiwgIihMYW5kcm9pZC92aWV3L0lucHV0Q2hhbm5lbDspViIpOworCisgICAgR0VUX01FVEhPRF9JRChnQ2FsbGJhY2tzQ2xhc3NJbmZvLm5vdGlmeUFOUiwgZ0NhbGxiYWNrc0NsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgICJub3RpZnlBTlIiLCAiKExqYXZhL2xhbmcvT2JqZWN0OylKIik7CisKKyAgICBHRVRfTUVUSE9EX0lEKGdDYWxsYmFja3NDbGFzc0luZm8udmlydHVhbEtleURvd25GZWVkYmFjaywgZ0NhbGxiYWNrc0NsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgICJ2aXJ0dWFsS2V5RG93bkZlZWRiYWNrIiwgIigpViIpOworCisgICAgR0VUX01FVEhPRF9JRChnQ2FsbGJhY2tzQ2xhc3NJbmZvLmludGVyY2VwdEtleUJlZm9yZVF1ZXVlaW5nLCBnQ2FsbGJhY2tzQ2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgImludGVyY2VwdEtleUJlZm9yZVF1ZXVlaW5nIiwgIihKSVpJWilJIik7CisKKyAgICBHRVRfTUVUSE9EX0lEKGdDYWxsYmFja3NDbGFzc0luZm8uaW50ZXJjZXB0S2V5QmVmb3JlRGlzcGF0Y2hpbmcsIGdDYWxsYmFja3NDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAiaW50ZXJjZXB0S2V5QmVmb3JlRGlzcGF0Y2hpbmciLCAiKExhbmRyb2lkL3ZpZXcvSW5wdXRDaGFubmVsO0lJSUlJSSlaIik7CisKKyAgICBHRVRfTUVUSE9EX0lEKGdDYWxsYmFja3NDbGFzc0luZm8uY2hlY2tJbmplY3RFdmVudHNQZXJtaXNzaW9uLCBnQ2FsbGJhY2tzQ2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgImNoZWNrSW5qZWN0RXZlbnRzUGVybWlzc2lvbiIsICIoSUkpWiIpOworCisgICAgR0VUX01FVEhPRF9JRChnQ2FsbGJhY2tzQ2xhc3NJbmZvLm5vdGlmeUFwcFN3aXRjaENvbWluZywgZ0NhbGxiYWNrc0NsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgICJub3RpZnlBcHBTd2l0Y2hDb21pbmciLCAiKClWIik7CisKKyAgICBHRVRfTUVUSE9EX0lEKGdDYWxsYmFja3NDbGFzc0luZm8uZmlsdGVyVG91Y2hFdmVudHMsIGdDYWxsYmFja3NDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAiZmlsdGVyVG91Y2hFdmVudHMiLCAiKClaIik7CisKKyAgICBHRVRfTUVUSE9EX0lEKGdDYWxsYmFja3NDbGFzc0luZm8uZmlsdGVySnVtcHlUb3VjaEV2ZW50cywgZ0NhbGxiYWNrc0NsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgICJmaWx0ZXJKdW1weVRvdWNoRXZlbnRzIiwgIigpWiIpOworCisgICAgR0VUX01FVEhPRF9JRChnQ2FsbGJhY2tzQ2xhc3NJbmZvLmdldFZpcnR1YWxLZXlEZWZpbml0aW9ucywgZ0NhbGxiYWNrc0NsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgICJnZXRWaXJ0dWFsS2V5RGVmaW5pdGlvbnMiLAorICAgICAgICAgICAgIihMamF2YS9sYW5nL1N0cmluZzspW0xjb20vYW5kcm9pZC9zZXJ2ZXIvSW5wdXRNYW5hZ2VyJFZpcnR1YWxLZXlEZWZpbml0aW9uOyIpOworCisgICAgR0VUX01FVEhPRF9JRChnQ2FsbGJhY2tzQ2xhc3NJbmZvLmdldEV4Y2x1ZGVkRGV2aWNlTmFtZXMsIGdDYWxsYmFja3NDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAiZ2V0RXhjbHVkZWREZXZpY2VOYW1lcyIsICIoKVtMamF2YS9sYW5nL1N0cmluZzsiKTsKKworICAgIC8vIFZpcnR1YWxLZXlEZWZpbml0aW9uCisKKyAgICBGSU5EX0NMQVNTKGdWaXJ0dWFsS2V5RGVmaW5pdGlvbkNsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgICJjb20vYW5kcm9pZC9zZXJ2ZXIvSW5wdXRNYW5hZ2VyJFZpcnR1YWxLZXlEZWZpbml0aW9uIik7CisKKyAgICBHRVRfRklFTERfSUQoZ1ZpcnR1YWxLZXlEZWZpbml0aW9uQ2xhc3NJbmZvLnNjYW5Db2RlLCBnVmlydHVhbEtleURlZmluaXRpb25DbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAic2NhbkNvZGUiLCAiSSIpOworCisgICAgR0VUX0ZJRUxEX0lEKGdWaXJ0dWFsS2V5RGVmaW5pdGlvbkNsYXNzSW5mby5jZW50ZXJYLCBnVmlydHVhbEtleURlZmluaXRpb25DbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAiY2VudGVyWCIsICJJIik7CisKKyAgICBHRVRfRklFTERfSUQoZ1ZpcnR1YWxLZXlEZWZpbml0aW9uQ2xhc3NJbmZvLmNlbnRlclksIGdWaXJ0dWFsS2V5RGVmaW5pdGlvbkNsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgICJjZW50ZXJZIiwgIkkiKTsKKworICAgIEdFVF9GSUVMRF9JRChnVmlydHVhbEtleURlZmluaXRpb25DbGFzc0luZm8ud2lkdGgsIGdWaXJ0dWFsS2V5RGVmaW5pdGlvbkNsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgICJ3aWR0aCIsICJJIik7CisKKyAgICBHRVRfRklFTERfSUQoZ1ZpcnR1YWxLZXlEZWZpbml0aW9uQ2xhc3NJbmZvLmhlaWdodCwgZ1ZpcnR1YWxLZXlEZWZpbml0aW9uQ2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgImhlaWdodCIsICJJIik7CisKKyAgICAvLyBJbnB1dFdpbmRvdworCisgICAgRklORF9DTEFTUyhnSW5wdXRXaW5kb3dDbGFzc0luZm8uY2xhenosICJjb20vYW5kcm9pZC9zZXJ2ZXIvSW5wdXRXaW5kb3ciKTsKKworICAgIEdFVF9GSUVMRF9JRChnSW5wdXRXaW5kb3dDbGFzc0luZm8uaW5wdXRDaGFubmVsLCBnSW5wdXRXaW5kb3dDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAiaW5wdXRDaGFubmVsIiwgIkxhbmRyb2lkL3ZpZXcvSW5wdXRDaGFubmVsOyIpOworCisgICAgR0VUX0ZJRUxEX0lEKGdJbnB1dFdpbmRvd0NsYXNzSW5mby5sYXlvdXRQYXJhbXNGbGFncywgZ0lucHV0V2luZG93Q2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgImxheW91dFBhcmFtc0ZsYWdzIiwgIkkiKTsKKworICAgIEdFVF9GSUVMRF9JRChnSW5wdXRXaW5kb3dDbGFzc0luZm8ubGF5b3V0UGFyYW1zVHlwZSwgZ0lucHV0V2luZG93Q2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgImxheW91dFBhcmFtc1R5cGUiLCAiSSIpOworCisgICAgR0VUX0ZJRUxEX0lEKGdJbnB1dFdpbmRvd0NsYXNzSW5mby5kaXNwYXRjaGluZ1RpbWVvdXROYW5vcywgZ0lucHV0V2luZG93Q2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgImRpc3BhdGNoaW5nVGltZW91dE5hbm9zIiwgIkoiKTsKKworICAgIEdFVF9GSUVMRF9JRChnSW5wdXRXaW5kb3dDbGFzc0luZm8uZnJhbWVMZWZ0LCBnSW5wdXRXaW5kb3dDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAiZnJhbWVMZWZ0IiwgIkkiKTsKKworICAgIEdFVF9GSUVMRF9JRChnSW5wdXRXaW5kb3dDbGFzc0luZm8uZnJhbWVUb3AsIGdJbnB1dFdpbmRvd0NsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgICJmcmFtZVRvcCIsICJJIik7CisKKyAgICBHRVRfRklFTERfSUQoZ0lucHV0V2luZG93Q2xhc3NJbmZvLnRvdWNoYWJsZUFyZWFMZWZ0LCBnSW5wdXRXaW5kb3dDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAidG91Y2hhYmxlQXJlYUxlZnQiLCAiSSIpOworCisgICAgR0VUX0ZJRUxEX0lEKGdJbnB1dFdpbmRvd0NsYXNzSW5mby50b3VjaGFibGVBcmVhVG9wLCBnSW5wdXRXaW5kb3dDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAidG91Y2hhYmxlQXJlYVRvcCIsICJJIik7CisKKyAgICBHRVRfRklFTERfSUQoZ0lucHV0V2luZG93Q2xhc3NJbmZvLnRvdWNoYWJsZUFyZWFSaWdodCwgZ0lucHV0V2luZG93Q2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgInRvdWNoYWJsZUFyZWFSaWdodCIsICJJIik7CisKKyAgICBHRVRfRklFTERfSUQoZ0lucHV0V2luZG93Q2xhc3NJbmZvLnRvdWNoYWJsZUFyZWFCb3R0b20sIGdJbnB1dFdpbmRvd0NsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgICJ0b3VjaGFibGVBcmVhQm90dG9tIiwgIkkiKTsKKworICAgIEdFVF9GSUVMRF9JRChnSW5wdXRXaW5kb3dDbGFzc0luZm8udmlzaWJsZSwgZ0lucHV0V2luZG93Q2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgInZpc2libGUiLCAiWiIpOworCisgICAgR0VUX0ZJRUxEX0lEKGdJbnB1dFdpbmRvd0NsYXNzSW5mby5oYXNGb2N1cywgZ0lucHV0V2luZG93Q2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgImhhc0ZvY3VzIiwgIloiKTsKKworICAgIEdFVF9GSUVMRF9JRChnSW5wdXRXaW5kb3dDbGFzc0luZm8uaGFzV2FsbHBhcGVyLCBnSW5wdXRXaW5kb3dDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAiaGFzV2FsbHBhcGVyIiwgIloiKTsKKworICAgIEdFVF9GSUVMRF9JRChnSW5wdXRXaW5kb3dDbGFzc0luZm8ucGF1c2VkLCBnSW5wdXRXaW5kb3dDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAicGF1c2VkIiwgIloiKTsKKworICAgIEdFVF9GSUVMRF9JRChnSW5wdXRXaW5kb3dDbGFzc0luZm8ub3duZXJQaWQsIGdJbnB1dFdpbmRvd0NsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgICJvd25lclBpZCIsICJJIik7CisKKyAgICBHRVRfRklFTERfSUQoZ0lucHV0V2luZG93Q2xhc3NJbmZvLm93bmVyVWlkLCBnSW5wdXRXaW5kb3dDbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAib3duZXJVaWQiLCAiSSIpOworCisgICAgLy8gSW5wdXRBcHBsaWNhdGlvbgorCisgICAgRklORF9DTEFTUyhnSW5wdXRBcHBsaWNhdGlvbkNsYXNzSW5mby5jbGF6eiwgImNvbS9hbmRyb2lkL3NlcnZlci9JbnB1dEFwcGxpY2F0aW9uIik7CisKKyAgICBHRVRfRklFTERfSUQoZ0lucHV0QXBwbGljYXRpb25DbGFzc0luZm8ubmFtZSwgZ0lucHV0QXBwbGljYXRpb25DbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAibmFtZSIsICJMamF2YS9sYW5nL1N0cmluZzsiKTsKKworICAgIEdFVF9GSUVMRF9JRChnSW5wdXRBcHBsaWNhdGlvbkNsYXNzSW5mby5kaXNwYXRjaGluZ1RpbWVvdXROYW5vcywKKyAgICAgICAgICAgIGdJbnB1dEFwcGxpY2F0aW9uQ2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgImRpc3BhdGNoaW5nVGltZW91dE5hbm9zIiwgIkoiKTsKKworICAgIEdFVF9GSUVMRF9JRChnSW5wdXRBcHBsaWNhdGlvbkNsYXNzSW5mby50b2tlbiwgZ0lucHV0QXBwbGljYXRpb25DbGFzc0luZm8uY2xhenosCisgICAgICAgICAgICAidG9rZW4iLCAiTGphdmEvbGFuZy9PYmplY3Q7Iik7CisKKyAgICByZXR1cm4gMDsKK30KKworfSAvKiBuYW1lc3BhY2UgYW5kcm9pZCAqLwpkaWZmIC0tZ2l0IGEvc2VydmljZXMvam5pL2NvbV9hbmRyb2lkX3NlcnZlcl9LZXlJbnB1dFF1ZXVlLmNwcCBiL3NlcnZpY2VzL2puaS9jb21fYW5kcm9pZF9zZXJ2ZXJfS2V5SW5wdXRRdWV1ZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5MmY4ZGYuLjAwMDAwMDAKLS0tIGEvc2VydmljZXMvam5pL2NvbV9hbmRyb2lkX3NlcnZlcl9LZXlJbnB1dFF1ZXVlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDM1OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotI2RlZmluZSBMT0dfVEFHICJJbnB1dCIKLQotI2luY2x1ZGUgImpuaS5oIgotI2luY2x1ZGUgIkpOSUhlbHAuaCIKLSNpbmNsdWRlIDx1dGlscy9taXNjLmg+Ci0jaW5jbHVkZSA8dXRpbHMvTG9nLmg+Ci0KLSNpbmNsdWRlIDx1aS9FdmVudEh1Yi5oPgotI2luY2x1ZGUgPHV0aWxzL3RocmVhZHMuaD4KLQotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0KLW5hbWVzcGFjZSBhbmRyb2lkIHsKLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1zdGF0aWMgc3RydWN0IGlucHV0X29mZnNldHNfdAotewotICAgIGpmaWVsZElEIG1NaW5WYWx1ZTsKLSAgICBqZmllbGRJRCBtTWF4VmFsdWU7Ci0gICAgamZpZWxkSUQgbUZsYXQ7Ci0gICAgamZpZWxkSUQgbUZ1eno7Ci0gICAgCi0gICAgamZpZWxkSUQgbURldmljZUlkOwotICAgIGpmaWVsZElEIG1UeXBlOwotICAgIGpmaWVsZElEIG1TY2FuY29kZTsKLSAgICBqZmllbGRJRCBtS2V5Y29kZTsKLSAgICBqZmllbGRJRCBtRmxhZ3M7Ci0gICAgamZpZWxkSUQgbVZhbHVlOwotICAgIGpmaWVsZElEIG1XaGVuOwotfSBnSW5wdXRPZmZzZXRzOwotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLXN0YXRpYyBNdXRleCBnTG9jazsKLXN0YXRpYyBzcDxFdmVudEh1Yj4gZ0h1YjsKLQotc3RhdGljIGpib29sZWFuCi1hbmRyb2lkX3NlcnZlcl9LZXlJbnB1dFF1ZXVlX3JlYWRFdmVudChKTklFbnYqIGVudiwgam9iamVjdCBjbGF6eiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpvYmplY3QgZXZlbnQpCi17Ci0gICAgZ0xvY2subG9jaygpOwotICAgIHNwPEV2ZW50SHViPiBodWIgPSBnSHViOwotICAgIGlmIChodWIgPT0gTlVMTCkgewotICAgICAgICBodWIgPSBuZXcgRXZlbnRIdWI7Ci0gICAgICAgIGdIdWIgPSBodWI7Ci0gICAgfQotICAgIGdMb2NrLnVubG9jaygpOwotCi0gICAgaW50MzJfdCBkZXZpY2VJZDsKLSAgICBpbnQzMl90IHR5cGU7Ci0gICAgaW50MzJfdCBzY2FuY29kZSwga2V5Y29kZTsKLSAgICB1aW50MzJfdCBmbGFnczsKLSAgICBpbnQzMl90IHZhbHVlOwotICAgIG5zZWNzX3Qgd2hlbjsKLSAgICBib29sIHJlcyA9IGh1Yi0+Z2V0RXZlbnQoJmRldmljZUlkLCAmdHlwZSwgJnNjYW5jb2RlLCAma2V5Y29kZSwKLSAgICAgICAgICAgICZmbGFncywgJnZhbHVlLCAmd2hlbik7Ci0KLSAgICBlbnYtPlNldEludEZpZWxkKGV2ZW50LCBnSW5wdXRPZmZzZXRzLm1EZXZpY2VJZCwgKGppbnQpZGV2aWNlSWQpOwotICAgIGVudi0+U2V0SW50RmllbGQoZXZlbnQsIGdJbnB1dE9mZnNldHMubVR5cGUsIChqaW50KXR5cGUpOwotICAgIGVudi0+U2V0SW50RmllbGQoZXZlbnQsIGdJbnB1dE9mZnNldHMubVNjYW5jb2RlLCAoamludClzY2FuY29kZSk7Ci0gICAgZW52LT5TZXRJbnRGaWVsZChldmVudCwgZ0lucHV0T2Zmc2V0cy5tS2V5Y29kZSwgKGppbnQpa2V5Y29kZSk7Ci0gICAgZW52LT5TZXRJbnRGaWVsZChldmVudCwgZ0lucHV0T2Zmc2V0cy5tRmxhZ3MsIChqaW50KWZsYWdzKTsKLSAgICBlbnYtPlNldEludEZpZWxkKGV2ZW50LCBnSW5wdXRPZmZzZXRzLm1WYWx1ZSwgdmFsdWUpOwotICAgIGVudi0+U2V0TG9uZ0ZpZWxkKGV2ZW50LCBnSW5wdXRPZmZzZXRzLm1XaGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgKGpsb25nKShuYW5vc2Vjb25kc190b19taWxsaXNlY29uZHMod2hlbikpKTsKLQotICAgIHJldHVybiByZXM7Ci19Ci0KLXN0YXRpYyBqaW50Ci1hbmRyb2lkX3NlcnZlcl9LZXlJbnB1dFF1ZXVlX2dldERldmljZUNsYXNzZXMoSk5JRW52KiBlbnYsIGpvYmplY3QgY2xhenosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamludCBkZXZpY2VJZCkKLXsKLSAgICBqaW50IGNsYXNzZXMgPSAwOwotICAgIGdMb2NrLmxvY2soKTsKLSAgICBpZiAoZ0h1YiAhPSBOVUxMKSBjbGFzc2VzID0gZ0h1Yi0+Z2V0RGV2aWNlQ2xhc3NlcyhkZXZpY2VJZCk7Ci0gICAgZ0xvY2sudW5sb2NrKCk7Ci0gICAgcmV0dXJuIGNsYXNzZXM7Ci19Ci0KLXN0YXRpYyBqc3RyaW5nCi1hbmRyb2lkX3NlcnZlcl9LZXlJbnB1dFF1ZXVlX2dldERldmljZU5hbWUoSk5JRW52KiBlbnYsIGpvYmplY3QgY2xhenosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamludCBkZXZpY2VJZCkKLXsKLSAgICBTdHJpbmc4IG5hbWU7Ci0gICAgZ0xvY2subG9jaygpOwotICAgIGlmIChnSHViICE9IE5VTEwpIG5hbWUgPSBnSHViLT5nZXREZXZpY2VOYW1lKGRldmljZUlkKTsKLSAgICBnTG9jay51bmxvY2soKTsKLSAgICAKLSAgICBpZiAobmFtZS5zaXplKCkgPiAwKSB7Ci0gICAgICAgIHJldHVybiBlbnYtPk5ld1N0cmluZ1VURihuYW1lLnN0cmluZygpKTsKLSAgICB9Ci0gICAgcmV0dXJuIE5VTEw7Ci19Ci0KLXN0YXRpYyB2b2lkCi1hbmRyb2lkX3NlcnZlcl9LZXlJbnB1dFF1ZXVlX2FkZEV4Y2x1ZGVkRGV2aWNlKEpOSUVudiogZW52LCBqb2JqZWN0IGNsYXp6LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpzdHJpbmcgZGV2aWNlTmFtZSkKLXsKLSAgICBnTG9jay5sb2NrKCk7Ci0gICAgc3A8RXZlbnRIdWI+IGh1YiA9IGdIdWI7Ci0gICAgaWYgKGh1YiA9PSBOVUxMKSB7Ci0gICAgICAgIGh1YiA9IG5ldyBFdmVudEh1YjsKLSAgICAgICAgZ0h1YiA9IGh1YjsKLSAgICB9Ci0gICAgZ0xvY2sudW5sb2NrKCk7Ci0KLSAgICBjb25zdCBjaGFyKiBuYW1lU3RyID0gZW52LT5HZXRTdHJpbmdVVEZDaGFycyhkZXZpY2VOYW1lLCBOVUxMKTsKLSAgICBnSHViLT5hZGRFeGNsdWRlZERldmljZShuYW1lU3RyKTsKLSAgICBlbnYtPlJlbGVhc2VTdHJpbmdVVEZDaGFycyhkZXZpY2VOYW1lLCBuYW1lU3RyKTsKLX0KLQotc3RhdGljIGpib29sZWFuCi1hbmRyb2lkX3NlcnZlcl9LZXlJbnB1dFF1ZXVlX2dldEFic29sdXRlSW5mbyhKTklFbnYqIGVudiwgam9iamVjdCBjbGF6eiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppbnQgZGV2aWNlSWQsIGppbnQgYXhpcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpvYmplY3QgaW5mbykKLXsKLSAgICBpbnQzMl90IG1pblZhbHVlLCBtYXhWYWx1ZSwgZmxhdCwgZnV6ejsKLSAgICBpbnQgcmVzID0gLTE7Ci0gICAgZ0xvY2subG9jaygpOwotICAgIGlmIChnSHViICE9IE5VTEwpIHsKLSAgICAgICAgcmVzID0gZ0h1Yi0+Z2V0QWJzb2x1dGVJbmZvKGRldmljZUlkLCBheGlzLAotICAgICAgICAgICAgICAgICZtaW5WYWx1ZSwgJm1heFZhbHVlLCAmZmxhdCwgJmZ1enopOwotICAgIH0KLSAgICBnTG9jay51bmxvY2soKTsKLSAgICAKLSAgICBpZiAocmVzIDwgMCkgcmV0dXJuIEpOSV9GQUxTRTsKLSAgICAKLSAgICBlbnYtPlNldEludEZpZWxkKGluZm8sIGdJbnB1dE9mZnNldHMubU1pblZhbHVlLCAoamludCltaW5WYWx1ZSk7Ci0gICAgZW52LT5TZXRJbnRGaWVsZChpbmZvLCBnSW5wdXRPZmZzZXRzLm1NYXhWYWx1ZSwgKGppbnQpbWF4VmFsdWUpOwotICAgIGVudi0+U2V0SW50RmllbGQoaW5mbywgZ0lucHV0T2Zmc2V0cy5tRmxhdCwgKGppbnQpZmxhdCk7Ci0gICAgZW52LT5TZXRJbnRGaWVsZChpbmZvLCBnSW5wdXRPZmZzZXRzLm1GdXp6LCAoamludClmdXp6KTsKLSAgICByZXR1cm4gSk5JX1RSVUU7Ci19Ci0KLXN0YXRpYyBqaW50Ci1hbmRyb2lkX3NlcnZlcl9LZXlJbnB1dFF1ZXVlX2dldFN3aXRjaFN0YXRlKEpOSUVudiogZW52LCBqb2JqZWN0IGNsYXp6LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppbnQgc3cpCi17Ci0gICAgamludCBzdCA9IC0xOwotICAgIGdMb2NrLmxvY2soKTsKLSAgICBpZiAoZ0h1YiAhPSBOVUxMKSBzdCA9IGdIdWItPmdldFN3aXRjaFN0YXRlKHN3KTsKLSAgICBnTG9jay51bmxvY2soKTsKLSAgICAKLSAgICByZXR1cm4gc3Q7Ci19Ci0KLXN0YXRpYyBqaW50Ci1hbmRyb2lkX3NlcnZlcl9LZXlJbnB1dFF1ZXVlX2dldFN3aXRjaFN0YXRlRGV2aWNlKEpOSUVudiogZW52LCBqb2JqZWN0IGNsYXp6LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaW50IGRldmljZUlkLCBqaW50IHN3KQotewotICAgIGppbnQgc3QgPSAtMTsKLSAgICBnTG9jay5sb2NrKCk7Ci0gICAgaWYgKGdIdWIgIT0gTlVMTCkgc3QgPSBnSHViLT5nZXRTd2l0Y2hTdGF0ZShkZXZpY2VJZCwgc3cpOwotICAgIGdMb2NrLnVubG9jaygpOwotICAgIAotICAgIHJldHVybiBzdDsKLX0KLQotc3RhdGljIGppbnQKLWFuZHJvaWRfc2VydmVyX0tleUlucHV0UXVldWVfZ2V0U2NhbmNvZGVTdGF0ZShKTklFbnYqIGVudiwgam9iamVjdCBjbGF6eiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaW50IHN3KQotewotICAgIGppbnQgc3QgPSAtMTsKLSAgICBnTG9jay5sb2NrKCk7Ci0gICAgaWYgKGdIdWIgIT0gTlVMTCkgc3QgPSBnSHViLT5nZXRTY2FuY29kZVN0YXRlKHN3KTsKLSAgICBnTG9jay51bmxvY2soKTsKLSAgICAKLSAgICByZXR1cm4gc3Q7Ci19Ci0KLXN0YXRpYyBqaW50Ci1hbmRyb2lkX3NlcnZlcl9LZXlJbnB1dFF1ZXVlX2dldFNjYW5jb2RlU3RhdGVEZXZpY2UoSk5JRW52KiBlbnYsIGpvYmplY3QgY2xhenosCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGppbnQgZGV2aWNlSWQsIGppbnQgc3cpCi17Ci0gICAgamludCBzdCA9IC0xOwotICAgIGdMb2NrLmxvY2soKTsKLSAgICBpZiAoZ0h1YiAhPSBOVUxMKSBzdCA9IGdIdWItPmdldFNjYW5jb2RlU3RhdGUoZGV2aWNlSWQsIHN3KTsKLSAgICBnTG9jay51bmxvY2soKTsKLSAgICAKLSAgICByZXR1cm4gc3Q7Ci19Ci0KLXN0YXRpYyBqaW50Ci1hbmRyb2lkX3NlcnZlcl9LZXlJbnB1dFF1ZXVlX2dldEtleWNvZGVTdGF0ZShKTklFbnYqIGVudiwgam9iamVjdCBjbGF6eiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaW50IHN3KQotewotICAgIGppbnQgc3QgPSAtMTsKLSAgICBnTG9jay5sb2NrKCk7Ci0gICAgaWYgKGdIdWIgIT0gTlVMTCkgc3QgPSBnSHViLT5nZXRLZXljb2RlU3RhdGUoc3cpOwotICAgIGdMb2NrLnVubG9jaygpOwotICAgIAotICAgIHJldHVybiBzdDsKLX0KLQotc3RhdGljIGppbnQKLWFuZHJvaWRfc2VydmVyX0tleUlucHV0UXVldWVfZ2V0S2V5Y29kZVN0YXRlRGV2aWNlKEpOSUVudiogZW52LCBqb2JqZWN0IGNsYXp6LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaW50IGRldmljZUlkLCBqaW50IHN3KQotewotICAgIGppbnQgc3QgPSAtMTsKLSAgICBnTG9jay5sb2NrKCk7Ci0gICAgaWYgKGdIdWIgIT0gTlVMTCkgc3QgPSBnSHViLT5nZXRLZXljb2RlU3RhdGUoZGV2aWNlSWQsIHN3KTsKLSAgICBnTG9jay51bmxvY2soKTsKLSAgICAKLSAgICByZXR1cm4gc3Q7Ci19Ci0KLXN0YXRpYyBqaW50Ci1hbmRyb2lkX3NlcnZlcl9LZXlJbnB1dFF1ZXVlX3NjYW5jb2RlVG9LZXljb2RlKEpOSUVudiogZW52LCBqb2JqZWN0IGNsYXp6LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaW50IGRldmljZUlkLCBqaW50IHNjYW5jb2RlKQotewotICAgIGppbnQgcmVzID0gMDsKLSAgICBnTG9jay5sb2NrKCk7Ci0gICAgaWYgKGdIdWIgIT0gTlVMTCkgewotICAgICAgICBpbnQzMl90IGtleWNvZGU7Ci0gICAgICAgIHVpbnQzMl90IGZsYWdzOwotICAgICAgICBnSHViLT5zY2FuY29kZVRvS2V5Y29kZShkZXZpY2VJZCwgc2NhbmNvZGUsICZrZXljb2RlLCAmZmxhZ3MpOwotICAgICAgICByZXMgPSBrZXljb2RlOwotICAgIH0KLSAgICBnTG9jay51bmxvY2soKTsKLSAgICAKLSAgICByZXR1cm4gcmVzOwotfQotCi1zdGF0aWMgamJvb2xlYW4KLWFuZHJvaWRfc2VydmVyX0tleUlucHV0UXVldWVfaGFzS2V5cyhKTklFbnYqIGVudiwgam9iamVjdCBjbGF6eiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqaW50QXJyYXkga2V5Q29kZXMsIGpib29sZWFuQXJyYXkgb3V0RmxhZ3MpCi17Ci0gICAgamJvb2xlYW4gcmV0ID0gSk5JX0ZBTFNFOwotCi0gICAgaW50MzJfdCogY29kZXMgPSBlbnYtPkdldEludEFycmF5RWxlbWVudHMoa2V5Q29kZXMsIE5VTEwpOwotICAgIHVpbnQ4X3QqIGZsYWdzID0gZW52LT5HZXRCb29sZWFuQXJyYXlFbGVtZW50cyhvdXRGbGFncywgTlVMTCk7Ci0gICAgc2l6ZV90IG51bUNvZGVzID0gZW52LT5HZXRBcnJheUxlbmd0aChrZXlDb2Rlcyk7Ci0gICAgaWYgKG51bUNvZGVzID09IGVudi0+R2V0QXJyYXlMZW5ndGgob3V0RmxhZ3MpKSB7Ci0gICAgICAgIGdMb2NrLmxvY2soKTsKLSAgICAgICAgaWYgKGdIdWIgIT0gTlVMTCkgcmV0ID0gZ0h1Yi0+aGFzS2V5cyhudW1Db2RlcywgY29kZXMsIGZsYWdzKTsKLSAgICAgICAgZ0xvY2sudW5sb2NrKCk7Ci0gICAgfQotCi0gICAgZW52LT5SZWxlYXNlQm9vbGVhbkFycmF5RWxlbWVudHMob3V0RmxhZ3MsIGZsYWdzLCAwKTsKLSAgICBlbnYtPlJlbGVhc2VJbnRBcnJheUVsZW1lbnRzKGtleUNvZGVzLCBjb2RlcywgMCk7Ci0gICAgcmV0dXJuIHJldDsKLX0KLQotLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vKgotICogSk5JIHJlZ2lzdHJhdGlvbi4KLSAqLwotc3RhdGljIEpOSU5hdGl2ZU1ldGhvZCBnSW5wdXRNZXRob2RzW10gPSB7Ci0gICAgLyogbmFtZSwgc2lnbmF0dXJlLCBmdW5jUHRyICovCi0gICAgeyAicmVhZEV2ZW50IiwgICAgICAgIihMYW5kcm9pZC92aWV3L1Jhd0lucHV0RXZlbnQ7KVoiLAotICAgICAgICAgICAgKHZvaWQqKSBhbmRyb2lkX3NlcnZlcl9LZXlJbnB1dFF1ZXVlX3JlYWRFdmVudCB9LAotICAgIHsgImdldERldmljZUNsYXNzZXMiLCAiKEkpSSIsCi0gICAgICAgICh2b2lkKikgYW5kcm9pZF9zZXJ2ZXJfS2V5SW5wdXRRdWV1ZV9nZXREZXZpY2VDbGFzc2VzIH0sCi0gICAgeyAiZ2V0RGV2aWNlTmFtZSIsICIoSSlMamF2YS9sYW5nL1N0cmluZzsiLAotICAgICAgICAodm9pZCopIGFuZHJvaWRfc2VydmVyX0tleUlucHV0UXVldWVfZ2V0RGV2aWNlTmFtZSB9LAotICAgIHsgImFkZEV4Y2x1ZGVkRGV2aWNlIiwgIihMamF2YS9sYW5nL1N0cmluZzspViIsCi0gICAgICAgICh2b2lkKikgYW5kcm9pZF9zZXJ2ZXJfS2V5SW5wdXRRdWV1ZV9hZGRFeGNsdWRlZERldmljZSB9LAotICAgIHsgImdldEFic29sdXRlSW5mbyIsICIoSUlMY29tL2FuZHJvaWQvc2VydmVyL0lucHV0RGV2aWNlJEFic29sdXRlSW5mbzspWiIsCi0gICAgICAgICh2b2lkKikgYW5kcm9pZF9zZXJ2ZXJfS2V5SW5wdXRRdWV1ZV9nZXRBYnNvbHV0ZUluZm8gfSwKLSAgICB7ICJnZXRTd2l0Y2hTdGF0ZSIsICIoSSlJIiwKLSAgICAgICAgKHZvaWQqKSBhbmRyb2lkX3NlcnZlcl9LZXlJbnB1dFF1ZXVlX2dldFN3aXRjaFN0YXRlIH0sCi0gICAgeyAiZ2V0U3dpdGNoU3RhdGUiLCAiKElJKUkiLAotICAgICAgICAodm9pZCopIGFuZHJvaWRfc2VydmVyX0tleUlucHV0UXVldWVfZ2V0U3dpdGNoU3RhdGVEZXZpY2UgfSwKLSAgICB7ICJuYXRpdmVHZXRTY2FuY29kZVN0YXRlIiwgIihJKUkiLAotICAgICAgICAodm9pZCopIGFuZHJvaWRfc2VydmVyX0tleUlucHV0UXVldWVfZ2V0U2NhbmNvZGVTdGF0ZSB9LAotICAgIHsgIm5hdGl2ZUdldFNjYW5jb2RlU3RhdGUiLCAiKElJKUkiLAotICAgICAgICAodm9pZCopIGFuZHJvaWRfc2VydmVyX0tleUlucHV0UXVldWVfZ2V0U2NhbmNvZGVTdGF0ZURldmljZSB9LAotICAgIHsgIm5hdGl2ZUdldEtleWNvZGVTdGF0ZSIsICIoSSlJIiwKLSAgICAgICAgKHZvaWQqKSBhbmRyb2lkX3NlcnZlcl9LZXlJbnB1dFF1ZXVlX2dldEtleWNvZGVTdGF0ZSB9LAotICAgIHsgIm5hdGl2ZUdldEtleWNvZGVTdGF0ZSIsICIoSUkpSSIsCi0gICAgICAgICh2b2lkKikgYW5kcm9pZF9zZXJ2ZXJfS2V5SW5wdXRRdWV1ZV9nZXRLZXljb2RlU3RhdGVEZXZpY2UgfSwKLSAgICB7ICJoYXNLZXlzIiwgIihbSVtaKVoiLAotICAgICAgICAodm9pZCopIGFuZHJvaWRfc2VydmVyX0tleUlucHV0UXVldWVfaGFzS2V5cyB9LAotICAgIHsgInNjYW5jb2RlVG9LZXljb2RlIiwgIihJSSlJIiwKLSAgICAgICAgKHZvaWQqKSBhbmRyb2lkX3NlcnZlcl9LZXlJbnB1dFF1ZXVlX3NjYW5jb2RlVG9LZXljb2RlIH0sCi19OwotCi1pbnQgcmVnaXN0ZXJfYW5kcm9pZF9zZXJ2ZXJfS2V5SW5wdXRRdWV1ZShKTklFbnYqIGVudikKLXsKLSAgICBqY2xhc3MgaW5wdXQgPSBlbnYtPkZpbmRDbGFzcygiY29tL2FuZHJvaWQvc2VydmVyL0tleUlucHV0UXVldWUiKTsKLSAgICBMT0dfRkFUQUxfSUYoaW5wdXQgPT0gTlVMTCwgIlVuYWJsZSB0byBmaW5kIGNsYXNzIGNvbS9hbmRyb2lkL3NlcnZlci9LZXlJbnB1dFF1ZXVlIik7Ci0gICAgaW50IHJlcyA9IGpuaVJlZ2lzdGVyTmF0aXZlTWV0aG9kcyhlbnYsICJjb20vYW5kcm9pZC9zZXJ2ZXIvS2V5SW5wdXRRdWV1ZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ0lucHV0TWV0aG9kcywgTkVMRU0oZ0lucHV0TWV0aG9kcykpOwotCi0gICAgamNsYXNzIGFic29sdXRlSW5mbyA9IGVudi0+RmluZENsYXNzKCJjb20vYW5kcm9pZC9zZXJ2ZXIvSW5wdXREZXZpY2UkQWJzb2x1dGVJbmZvIik7Ci0gICAgTE9HX0ZBVEFMX0lGKGFic29sdXRlSW5mbyA9PSBOVUxMLCAiVW5hYmxlIHRvIGZpbmQgY2xhc3MgY29tL2FuZHJvaWQvc2VydmVyL0lucHV0RGV2aWNlJEFic29sdXRlSW5mbyIpOwotICAgIAotICAgIGdJbnB1dE9mZnNldHMubU1pblZhbHVlCi0gICAgICAgID0gZW52LT5HZXRGaWVsZElEKGFic29sdXRlSW5mbywgIm1pblZhbHVlIiwgIkkiKTsKLSAgICBMT0dfRkFUQUxfSUYoZ0lucHV0T2Zmc2V0cy5tTWluVmFsdWUgPT0gTlVMTCwgIlVuYWJsZSB0byBmaW5kIElucHV0RGV2aWNlLkFic29sdXRlSW5mby5taW5WYWx1ZSIpOwotICAgIAotICAgIGdJbnB1dE9mZnNldHMubU1heFZhbHVlCi0gICAgICAgID0gZW52LT5HZXRGaWVsZElEKGFic29sdXRlSW5mbywgIm1heFZhbHVlIiwgIkkiKTsKLSAgICBMT0dfRkFUQUxfSUYoZ0lucHV0T2Zmc2V0cy5tTWF4VmFsdWUgPT0gTlVMTCwgIlVuYWJsZSB0byBmaW5kIElucHV0RGV2aWNlLkFic29sdXRlSW5mby5tYXhWYWx1ZSIpOwotICAgIAotICAgIGdJbnB1dE9mZnNldHMubUZsYXQKLSAgICAgICAgPSBlbnYtPkdldEZpZWxkSUQoYWJzb2x1dGVJbmZvLCAiZmxhdCIsICJJIik7Ci0gICAgTE9HX0ZBVEFMX0lGKGdJbnB1dE9mZnNldHMubUZsYXQgPT0gTlVMTCwgIlVuYWJsZSB0byBmaW5kIElucHV0RGV2aWNlLkFic29sdXRlSW5mby5mbGF0Iik7Ci0gICAgCi0gICAgZ0lucHV0T2Zmc2V0cy5tRnV6egotICAgICAgICA9IGVudi0+R2V0RmllbGRJRChhYnNvbHV0ZUluZm8sICJmdXp6IiwgIkkiKTsKLSAgICBMT0dfRkFUQUxfSUYoZ0lucHV0T2Zmc2V0cy5tRnV6eiA9PSBOVUxMLCAiVW5hYmxlIHRvIGZpbmQgSW5wdXREZXZpY2UuQWJzb2x1dGVJbmZvLmZ1enoiKTsKLSAgICAKLSAgICBqY2xhc3MgaW5wdXRFdmVudCA9IGVudi0+RmluZENsYXNzKCJhbmRyb2lkL3ZpZXcvUmF3SW5wdXRFdmVudCIpOwotICAgIExPR19GQVRBTF9JRihpbnB1dEV2ZW50ID09IE5VTEwsICJVbmFibGUgdG8gZmluZCBjbGFzcyBhbmRyb2lkL3ZpZXcvUmF3SW5wdXRFdmVudCIpOwotCi0gICAgZ0lucHV0T2Zmc2V0cy5tRGV2aWNlSWQKLSAgICAgICAgPSBlbnYtPkdldEZpZWxkSUQoaW5wdXRFdmVudCwgImRldmljZUlkIiwgIkkiKTsKLSAgICBMT0dfRkFUQUxfSUYoZ0lucHV0T2Zmc2V0cy5tRGV2aWNlSWQgPT0gTlVMTCwgIlVuYWJsZSB0byBmaW5kIFJhd0lucHV0RXZlbnQuZGV2aWNlSWQiKTsKLSAgICAKLSAgICBnSW5wdXRPZmZzZXRzLm1UeXBlCi0gICAgICAgID0gZW52LT5HZXRGaWVsZElEKGlucHV0RXZlbnQsICJ0eXBlIiwgIkkiKTsKLSAgICBMT0dfRkFUQUxfSUYoZ0lucHV0T2Zmc2V0cy5tVHlwZSA9PSBOVUxMLCAiVW5hYmxlIHRvIGZpbmQgUmF3SW5wdXRFdmVudC50eXBlIik7Ci0gICAgCi0gICAgZ0lucHV0T2Zmc2V0cy5tU2NhbmNvZGUKLSAgICAgICAgPSBlbnYtPkdldEZpZWxkSUQoaW5wdXRFdmVudCwgInNjYW5jb2RlIiwgIkkiKTsKLSAgICBMT0dfRkFUQUxfSUYoZ0lucHV0T2Zmc2V0cy5tU2NhbmNvZGUgPT0gTlVMTCwgIlVuYWJsZSB0byBmaW5kIFJhd0lucHV0RXZlbnQuc2NhbmNvZGUiKTsKLQotICAgIGdJbnB1dE9mZnNldHMubUtleWNvZGUKLSAgICAgICAgPSBlbnYtPkdldEZpZWxkSUQoaW5wdXRFdmVudCwgImtleWNvZGUiLCAiSSIpOwotICAgIExPR19GQVRBTF9JRihnSW5wdXRPZmZzZXRzLm1LZXljb2RlID09IE5VTEwsICJVbmFibGUgdG8gZmluZCBSYXdJbnB1dEV2ZW50LmtleWNvZGUiKTsKLQotICAgIGdJbnB1dE9mZnNldHMubUZsYWdzCi0gICAgICAgID0gZW52LT5HZXRGaWVsZElEKGlucHV0RXZlbnQsICJmbGFncyIsICJJIik7Ci0gICAgTE9HX0ZBVEFMX0lGKGdJbnB1dE9mZnNldHMubUZsYWdzID09IE5VTEwsICJVbmFibGUgdG8gZmluZCBSYXdJbnB1dEV2ZW50LmZsYWdzIik7Ci0KLSAgICBnSW5wdXRPZmZzZXRzLm1WYWx1ZQotICAgICAgICA9IGVudi0+R2V0RmllbGRJRChpbnB1dEV2ZW50LCAidmFsdWUiLCAiSSIpOwotICAgIExPR19GQVRBTF9JRihnSW5wdXRPZmZzZXRzLm1WYWx1ZSA9PSBOVUxMLCAiVW5hYmxlIHRvIGZpbmQgUmF3SW5wdXRFdmVudC52YWx1ZSIpOwotICAgIAotICAgIGdJbnB1dE9mZnNldHMubVdoZW4KLSAgICAgICAgPSBlbnYtPkdldEZpZWxkSUQoaW5wdXRFdmVudCwgIndoZW4iLCAiSiIpOwotICAgIExPR19GQVRBTF9JRihnSW5wdXRPZmZzZXRzLm1XaGVuID09IE5VTEwsICJVbmFibGUgdG8gZmluZCBSYXdJbnB1dEV2ZW50LndoZW4iKTsKLQotICAgIHJldHVybiByZXM7Ci19Ci0KLX07IC8vIG5hbWVzcGFjZSBhbmRyb2lkCi0KZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2puaS9jb21fYW5kcm9pZF9zZXJ2ZXJfUG93ZXJNYW5hZ2VyU2VydmljZS5jcHAgYi9zZXJ2aWNlcy9qbmkvY29tX2FuZHJvaWRfc2VydmVyX1Bvd2VyTWFuYWdlclNlcnZpY2UuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4MGRiYzUKLS0tIC9kZXYvbnVsbAorKysgYi9zZXJ2aWNlcy9qbmkvY29tX2FuZHJvaWRfc2VydmVyX1Bvd2VyTWFuYWdlclNlcnZpY2UuY3BwCkBAIC0wLDAgKzEsMTQyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2RlZmluZSBMT0dfVEFHICJQb3dlck1hbmFnZXJTZXJ2aWNlLUpOSSIKKworLy8jZGVmaW5lIExPR19OREVCVUcgMAorCisjaW5jbHVkZSAiSk5JSGVscC5oIgorI2luY2x1ZGUgImpuaS5oIgorI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPGFuZHJvaWRfcnVudGltZS9BbmRyb2lkUnVudGltZS5oPgorI2luY2x1ZGUgImNvbV9hbmRyb2lkX3NlcnZlcl9Qb3dlck1hbmFnZXJTZXJ2aWNlLmgiCisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitzdGF0aWMgc3RydWN0IHsKKyAgICBqY2xhc3MgY2xheno7CisKKyAgICBqbWV0aG9kSUQgZ29Ub1NsZWVwOworICAgIGptZXRob2RJRCB1c2VyQWN0aXZpdHk7Cit9IGdQb3dlck1hbmFnZXJTZXJ2aWNlQ2xhc3NJbmZvOworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3N0YXRpYyBqb2JqZWN0IGdQb3dlck1hbmFnZXJTZXJ2aWNlT2JqOworCitzdGF0aWMgTXV0ZXggZ1Bvd2VyTWFuYWdlckxvY2s7CitzdGF0aWMgYm9vbCBnU2NyZWVuT247CitzdGF0aWMgYm9vbCBnU2NyZWVuQnJpZ2h0OworCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3N0YXRpYyBib29sIGNoZWNrQW5kQ2xlYXJFeGNlcHRpb25Gcm9tQ2FsbGJhY2soSk5JRW52KiBlbnYsIGNvbnN0IGNoYXIqIG1ldGhvZE5hbWUpIHsKKyAgICBpZiAoZW52LT5FeGNlcHRpb25DaGVjaygpKSB7CisgICAgICAgIExPR0UoIkFuIGV4Y2VwdGlvbiB3YXMgdGhyb3duIGJ5IGNhbGxiYWNrICclcycuIiwgbWV0aG9kTmFtZSk7CisgICAgICAgIExPR0VfRVgoZW52KTsKKyAgICAgICAgZW52LT5FeGNlcHRpb25DbGVhcigpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgcmV0dXJuIGZhbHNlOworfQorCitib29sIGFuZHJvaWRfc2VydmVyX1Bvd2VyTWFuYWdlclNlcnZpY2VfaXNTY3JlZW5PbigpIHsKKyAgICBBdXRvTXV0ZXggX2woZ1Bvd2VyTWFuYWdlckxvY2spOworICAgIHJldHVybiBnU2NyZWVuT247Cit9CisKK2Jvb2wgYW5kcm9pZF9zZXJ2ZXJfUG93ZXJNYW5hZ2VyU2VydmljZV9pc1NjcmVlbkJyaWdodCgpIHsKKyAgICBBdXRvTXV0ZXggX2woZ1Bvd2VyTWFuYWdlckxvY2spOworICAgIHJldHVybiBnU2NyZWVuQnJpZ2h0OworfQorCit2b2lkIGFuZHJvaWRfc2VydmVyX1Bvd2VyTWFuYWdlclNlcnZpY2VfdXNlckFjdGl2aXR5KG5zZWNzX3QgZXZlbnRUaW1lLCBpbnQzMl90IGV2ZW50VHlwZSkgeworICAgIGlmIChnUG93ZXJNYW5hZ2VyU2VydmljZU9iaikgeworICAgICAgICBKTklFbnYqIGVudiA9IEFuZHJvaWRSdW50aW1lOjpnZXRKTklFbnYoKTsKKworICAgICAgICBlbnYtPkNhbGxWb2lkTWV0aG9kKGdQb3dlck1hbmFnZXJTZXJ2aWNlT2JqLCBnUG93ZXJNYW5hZ2VyU2VydmljZUNsYXNzSW5mby51c2VyQWN0aXZpdHksCisgICAgICAgICAgICAgICAgbmFub3NlY29uZHNfdG9fbWlsbGlzZWNvbmRzKGV2ZW50VGltZSksIGZhbHNlLCBldmVudFR5cGUsIGZhbHNlKTsKKyAgICAgICAgY2hlY2tBbmRDbGVhckV4Y2VwdGlvbkZyb21DYWxsYmFjayhlbnYsICJ1c2VyQWN0aXZpdHkiKTsKKyAgICB9Cit9CisKK3ZvaWQgYW5kcm9pZF9zZXJ2ZXJfUG93ZXJNYW5hZ2VyU2VydmljZV9nb1RvU2xlZXAobnNlY3NfdCBldmVudFRpbWUpIHsKKyAgICBpZiAoZ1Bvd2VyTWFuYWdlclNlcnZpY2VPYmopIHsKKyAgICAgICAgSk5JRW52KiBlbnYgPSBBbmRyb2lkUnVudGltZTo6Z2V0Sk5JRW52KCk7CisKKyAgICAgICAgZW52LT5DYWxsVm9pZE1ldGhvZChnUG93ZXJNYW5hZ2VyU2VydmljZU9iaiwgZ1Bvd2VyTWFuYWdlclNlcnZpY2VDbGFzc0luZm8uZ29Ub1NsZWVwLAorICAgICAgICAgICAgICAgIG5hbm9zZWNvbmRzX3RvX21pbGxpc2Vjb25kcyhldmVudFRpbWUpKTsKKyAgICAgICAgY2hlY2tBbmRDbGVhckV4Y2VwdGlvbkZyb21DYWxsYmFjayhlbnYsICJnb1RvU2xlZXAiKTsKKyAgICB9Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworc3RhdGljIHZvaWQgYW5kcm9pZF9zZXJ2ZXJfUG93ZXJNYW5hZ2VyU2VydmljZV9uYXRpdmVJbml0KEpOSUVudiogZW52LCBqb2JqZWN0IG9iaikgeworICAgIGdQb3dlck1hbmFnZXJTZXJ2aWNlT2JqID0gZW52LT5OZXdHbG9iYWxSZWYob2JqKTsKK30KKworc3RhdGljIHZvaWQgYW5kcm9pZF9zZXJ2ZXJfUG93ZXJNYW5hZ2VyU2VydmljZV9uYXRpdmVTZXRQb3dlclN0YXRlKEpOSUVudiogZW52LAorICAgICAgICBqb2JqZWN0IHNlcnZpY2VPYmosIGpib29sZWFuIHNjcmVlbk9uLCBqYm9vbGVhbiBzY3JlZW5CcmlnaHQpIHsKKyAgICBBdXRvTXV0ZXggX2woZ1Bvd2VyTWFuYWdlckxvY2spOworICAgIGdTY3JlZW5PbiA9IHNjcmVlbk9uOworICAgIGdTY3JlZW5CcmlnaHQgPSBzY3JlZW5CcmlnaHQ7Cit9CisKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworc3RhdGljIEpOSU5hdGl2ZU1ldGhvZCBnUG93ZXJNYW5hZ2VyU2VydmljZU1ldGhvZHNbXSA9IHsKKyAgICAvKiBuYW1lLCBzaWduYXR1cmUsIGZ1bmNQdHIgKi8KKyAgICB7ICJuYXRpdmVJbml0IiwgIigpViIsCisgICAgICAgICAgICAodm9pZCopIGFuZHJvaWRfc2VydmVyX1Bvd2VyTWFuYWdlclNlcnZpY2VfbmF0aXZlSW5pdCB9LAorICAgIHsgIm5hdGl2ZVNldFBvd2VyU3RhdGUiLCAiKFpaKVYiLAorICAgICAgICAgICAgKHZvaWQqKSBhbmRyb2lkX3NlcnZlcl9Qb3dlck1hbmFnZXJTZXJ2aWNlX25hdGl2ZVNldFBvd2VyU3RhdGUgfSwKK307CisKKyNkZWZpbmUgRklORF9DTEFTUyh2YXIsIGNsYXNzTmFtZSkgXAorICAgICAgICB2YXIgPSBlbnYtPkZpbmRDbGFzcyhjbGFzc05hbWUpOyBcCisgICAgICAgIExPR19GQVRBTF9JRighIHZhciwgIlVuYWJsZSB0byBmaW5kIGNsYXNzICIgY2xhc3NOYW1lKTsgXAorICAgICAgICB2YXIgPSBqY2xhc3MoZW52LT5OZXdHbG9iYWxSZWYodmFyKSk7CisKKyNkZWZpbmUgR0VUX01FVEhPRF9JRCh2YXIsIGNsYXp6LCBtZXRob2ROYW1lLCBtZXRob2REZXNjcmlwdG9yKSBcCisgICAgICAgIHZhciA9IGVudi0+R2V0TWV0aG9kSUQoY2xhenosIG1ldGhvZE5hbWUsIG1ldGhvZERlc2NyaXB0b3IpOyBcCisgICAgICAgIExPR19GQVRBTF9JRighIHZhciwgIlVuYWJsZSB0byBmaW5kIG1ldGhvZCAiIG1ldGhvZE5hbWUpOworCisjZGVmaW5lIEdFVF9GSUVMRF9JRCh2YXIsIGNsYXp6LCBmaWVsZE5hbWUsIGZpZWxkRGVzY3JpcHRvcikgXAorICAgICAgICB2YXIgPSBlbnYtPkdldEZpZWxkSUQoY2xhenosIGZpZWxkTmFtZSwgZmllbGREZXNjcmlwdG9yKTsgXAorICAgICAgICBMT0dfRkFUQUxfSUYoISB2YXIsICJVbmFibGUgdG8gZmluZCBmaWVsZCAiIGZpZWxkTmFtZSk7CisKK2ludCByZWdpc3Rlcl9hbmRyb2lkX3NlcnZlcl9Qb3dlck1hbmFnZXJTZXJ2aWNlKEpOSUVudiogZW52KSB7CisgICAgaW50IHJlcyA9IGpuaVJlZ2lzdGVyTmF0aXZlTWV0aG9kcyhlbnYsICJjb20vYW5kcm9pZC9zZXJ2ZXIvUG93ZXJNYW5hZ2VyU2VydmljZSIsCisgICAgICAgICAgICBnUG93ZXJNYW5hZ2VyU2VydmljZU1ldGhvZHMsIE5FTEVNKGdQb3dlck1hbmFnZXJTZXJ2aWNlTWV0aG9kcykpOworICAgIExPR19GQVRBTF9JRihyZXMgPCAwLCAiVW5hYmxlIHRvIHJlZ2lzdGVyIG5hdGl2ZSBtZXRob2RzLiIpOworCisgICAgLy8gQ2FsbGJhY2tzCisKKyAgICBGSU5EX0NMQVNTKGdQb3dlck1hbmFnZXJTZXJ2aWNlQ2xhc3NJbmZvLmNsYXp6LCAiY29tL2FuZHJvaWQvc2VydmVyL1Bvd2VyTWFuYWdlclNlcnZpY2UiKTsKKworICAgIEdFVF9NRVRIT0RfSUQoZ1Bvd2VyTWFuYWdlclNlcnZpY2VDbGFzc0luZm8uZ29Ub1NsZWVwLCBnUG93ZXJNYW5hZ2VyU2VydmljZUNsYXNzSW5mby5jbGF6eiwKKyAgICAgICAgICAgICJnb1RvU2xlZXAiLCAiKEopViIpOworCisgICAgR0VUX01FVEhPRF9JRChnUG93ZXJNYW5hZ2VyU2VydmljZUNsYXNzSW5mby51c2VyQWN0aXZpdHksIGdQb3dlck1hbmFnZXJTZXJ2aWNlQ2xhc3NJbmZvLmNsYXp6LAorICAgICAgICAgICAgInVzZXJBY3Rpdml0eSIsICIoSlpJWilWIik7CisKKyAgICByZXR1cm4gMDsKK30KKworfSAvKiBuYW1lc3BhY2UgYW5kcm9pZCAqLwpkaWZmIC0tZ2l0IGEvc2VydmljZXMvam5pL2NvbV9hbmRyb2lkX3NlcnZlcl9Qb3dlck1hbmFnZXJTZXJ2aWNlLmggYi9zZXJ2aWNlcy9qbmkvY29tX2FuZHJvaWRfc2VydmVyX1Bvd2VyTWFuYWdlclNlcnZpY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YjA1ZjM4Ci0tLSAvZGV2L251bGwKKysrIGIvc2VydmljZXMvam5pL2NvbV9hbmRyb2lkX3NlcnZlcl9Qb3dlck1hbmFnZXJTZXJ2aWNlLmgKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKKyNpZm5kZWYgX0FORFJPSURfU0VSVkVSX1BPV0VSX01BTkFHRVJfU0VSVklDRV9ICisjZGVmaW5lIF9BTkRST0lEX1NFUlZFUl9QT1dFUl9NQU5BR0VSX1NFUlZJQ0VfSAorCisjaW5jbHVkZSAiSk5JSGVscC5oIgorI2luY2x1ZGUgImpuaS5oIgorCituYW1lc3BhY2UgYW5kcm9pZCB7CisKK2VudW0geworICAgIFBPV0VSX01BTkFHRVJfT1RIRVJfRVZFTlQgPSAwLAorICAgIFBPV0VSX01BTkFHRVJfQ0hFRUtfRVZFTlQgPSAxLAorICAgIFBPV0VSX01BTkFHRVJfVE9VQ0hfRVZFTlQgPSAyLCAvLyB0b3VjaCBldmVudHMgYXJlIFRPVUNIIGZvciAzMDBtcywgYW5kIHRoZW4gZWl0aGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHVwIGV2ZW50cyBvciBMT05HX1RPVUNIIGV2ZW50cy4KKyAgICBQT1dFUl9NQU5BR0VSX0xPTkdfVE9VQ0hfRVZFTlQgPSAzLAorICAgIFBPV0VSX01BTkFHRVJfVE9VQ0hfVVBfRVZFTlQgPSA0LAorICAgIFBPV0VSX01BTkFHRVJfQlVUVE9OX0VWRU5UID0gNSwgLy8gQnV0dG9uIGFuZCB0cmFja2JhbGwgZXZlbnRzLgorfTsKKworZXh0ZXJuIGJvb2wgYW5kcm9pZF9zZXJ2ZXJfUG93ZXJNYW5hZ2VyU2VydmljZV9pc1NjcmVlbk9uKCk7CitleHRlcm4gYm9vbCBhbmRyb2lkX3NlcnZlcl9Qb3dlck1hbmFnZXJTZXJ2aWNlX2lzU2NyZWVuQnJpZ2h0KCk7CitleHRlcm4gdm9pZCBhbmRyb2lkX3NlcnZlcl9Qb3dlck1hbmFnZXJTZXJ2aWNlX3VzZXJBY3Rpdml0eShuc2Vjc190IGV2ZW50VGltZSwgaW50MzJfdCBldmVudFR5cGUpOworZXh0ZXJuIHZvaWQgYW5kcm9pZF9zZXJ2ZXJfUG93ZXJNYW5hZ2VyU2VydmljZV9nb1RvU2xlZXAobnNlY3NfdCBldmVudFRpbWUpOworCit9IC8vIG5hbWVzcGFjZSBhbmRyb2lkCisKKyNlbmRpZiAvLyBfQU5EUk9JRF9TRVJWRVJfUE9XRVJfTUFOQUdFUl9TRVJWSUNFX0gKZGlmZiAtLWdpdCBhL3NlcnZpY2VzL2puaS9jb21fYW5kcm9pZF9zZXJ2ZXJfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlci5jcHAgYi9zZXJ2aWNlcy9qbmkvY29tX2FuZHJvaWRfc2VydmVyX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjU5ZDdjZGUKLS0tIC9kZXYvbnVsbAorKysgYi9zZXJ2aWNlcy9qbmkvY29tX2FuZHJvaWRfc2VydmVyX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXIuY3BwCkBAIC0wLDAgKzEsNDY3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworI2RlZmluZSBMT0dfVEFHICJHcHNMb2NhdGlvblByb3ZpZGVyIgorCisvLyNkZWZpbmUgTE9HX05ERUJVRyAwCisKKyNpbmNsdWRlICJKTklIZWxwLmgiCisjaW5jbHVkZSAiam5pLmgiCisjaW5jbHVkZSAiaGFyZHdhcmUvaGFyZHdhcmUuaCIKKyNpbmNsdWRlICJoYXJkd2FyZS9ncHMuaCIKKyNpbmNsdWRlICJoYXJkd2FyZV9sZWdhY3kvcG93ZXIuaCIKKyNpbmNsdWRlICJ1dGlscy9Mb2cuaCIKKyNpbmNsdWRlICJ1dGlscy9taXNjLmgiCisjaW5jbHVkZSAiYW5kcm9pZF9ydW50aW1lL0FuZHJvaWRSdW50aW1lLmgiCisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxwdGhyZWFkLmg+CisKK3N0YXRpYyBqb2JqZWN0IG1DYWxsYmFja3NPYmogPSBOVUxMOworCitzdGF0aWMgam1ldGhvZElEIG1ldGhvZF9yZXBvcnRMb2NhdGlvbjsKK3N0YXRpYyBqbWV0aG9kSUQgbWV0aG9kX3JlcG9ydFN0YXR1czsKK3N0YXRpYyBqbWV0aG9kSUQgbWV0aG9kX3JlcG9ydFN2U3RhdHVzOworc3RhdGljIGptZXRob2RJRCBtZXRob2RfcmVwb3J0QUdwc1N0YXR1czsKK3N0YXRpYyBqbWV0aG9kSUQgbWV0aG9kX3JlcG9ydE5tZWE7CitzdGF0aWMgam1ldGhvZElEIG1ldGhvZF9zZXRFbmdpbmVDYXBhYmlsaXRpZXM7CitzdGF0aWMgam1ldGhvZElEIG1ldGhvZF94dHJhRG93bmxvYWRSZXF1ZXN0Oworc3RhdGljIGptZXRob2RJRCBtZXRob2RfcmVwb3J0TmlOb3RpZmljYXRpb247CisKK3N0YXRpYyBjb25zdCBHcHNJbnRlcmZhY2UqIHNHcHNJbnRlcmZhY2UgPSBOVUxMOworc3RhdGljIGNvbnN0IEdwc1h0cmFJbnRlcmZhY2UqIHNHcHNYdHJhSW50ZXJmYWNlID0gTlVMTDsKK3N0YXRpYyBjb25zdCBBR3BzSW50ZXJmYWNlKiBzQUdwc0ludGVyZmFjZSA9IE5VTEw7CitzdGF0aWMgY29uc3QgR3BzTmlJbnRlcmZhY2UqIHNHcHNOaUludGVyZmFjZSA9IE5VTEw7CitzdGF0aWMgY29uc3QgR3BzRGVidWdJbnRlcmZhY2UqIHNHcHNEZWJ1Z0ludGVyZmFjZSA9IE5VTEw7CisKKy8vIHRlbXBvcmFyeSBzdG9yYWdlIGZvciBHUFMgY2FsbGJhY2tzCitzdGF0aWMgR3BzU3ZTdGF0dXMgIHNHcHNTdlN0YXR1czsKK3N0YXRpYyBjb25zdCBjaGFyKiBzTm1lYVN0cmluZzsKK3N0YXRpYyBpbnQgc05tZWFTdHJpbmdMZW5ndGg7CisKKyNkZWZpbmUgV0FLRV9MT0NLX05BTUUgICJHUFMiCisKK25hbWVzcGFjZSBhbmRyb2lkIHsKKworc3RhdGljIHZvaWQgY2hlY2tBbmRDbGVhckV4Y2VwdGlvbkZyb21DYWxsYmFjayhKTklFbnYqIGVudiwgY29uc3QgY2hhciogbWV0aG9kTmFtZSkgeworICAgIGlmIChlbnYtPkV4Y2VwdGlvbkNoZWNrKCkpIHsKKyAgICAgICAgTE9HRSgiQW4gZXhjZXB0aW9uIHdhcyB0aHJvd24gYnkgY2FsbGJhY2sgJyVzJy4iLCBtZXRob2ROYW1lKTsKKyAgICAgICAgTE9HRV9FWChlbnYpOworICAgICAgICBlbnYtPkV4Y2VwdGlvbkNsZWFyKCk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBsb2NhdGlvbl9jYWxsYmFjayhHcHNMb2NhdGlvbiogbG9jYXRpb24pCit7CisgICAgSk5JRW52KiBlbnYgPSBBbmRyb2lkUnVudGltZTo6Z2V0Sk5JRW52KCk7CisgICAgZW52LT5DYWxsVm9pZE1ldGhvZChtQ2FsbGJhY2tzT2JqLCBtZXRob2RfcmVwb3J0TG9jYXRpb24sIGxvY2F0aW9uLT5mbGFncywKKyAgICAgICAgICAgIChqZG91YmxlKWxvY2F0aW9uLT5sYXRpdHVkZSwgKGpkb3VibGUpbG9jYXRpb24tPmxvbmdpdHVkZSwKKyAgICAgICAgICAgIChqZG91YmxlKWxvY2F0aW9uLT5hbHRpdHVkZSwKKyAgICAgICAgICAgIChqZmxvYXQpbG9jYXRpb24tPnNwZWVkLCAoamZsb2F0KWxvY2F0aW9uLT5iZWFyaW5nLAorICAgICAgICAgICAgKGpmbG9hdClsb2NhdGlvbi0+YWNjdXJhY3ksIChqbG9uZylsb2NhdGlvbi0+dGltZXN0YW1wKTsKKyAgICBjaGVja0FuZENsZWFyRXhjZXB0aW9uRnJvbUNhbGxiYWNrKGVudiwgX19GVU5DVElPTl9fKTsKK30KKworc3RhdGljIHZvaWQgc3RhdHVzX2NhbGxiYWNrKEdwc1N0YXR1cyogc3RhdHVzKQoreworICAgIEpOSUVudiogZW52ID0gQW5kcm9pZFJ1bnRpbWU6OmdldEpOSUVudigpOworICAgIGVudi0+Q2FsbFZvaWRNZXRob2QobUNhbGxiYWNrc09iaiwgbWV0aG9kX3JlcG9ydFN0YXR1cywgc3RhdHVzLT5zdGF0dXMpOworICAgIGNoZWNrQW5kQ2xlYXJFeGNlcHRpb25Gcm9tQ2FsbGJhY2soZW52LCBfX0ZVTkNUSU9OX18pOworfQorCitzdGF0aWMgdm9pZCBzdl9zdGF0dXNfY2FsbGJhY2soR3BzU3ZTdGF0dXMqIHN2X3N0YXR1cykKK3sKKyAgICBKTklFbnYqIGVudiA9IEFuZHJvaWRSdW50aW1lOjpnZXRKTklFbnYoKTsKKyAgICBtZW1jcHkoJnNHcHNTdlN0YXR1cywgc3Zfc3RhdHVzLCBzaXplb2Yoc0dwc1N2U3RhdHVzKSk7CisgICAgZW52LT5DYWxsVm9pZE1ldGhvZChtQ2FsbGJhY2tzT2JqLCBtZXRob2RfcmVwb3J0U3ZTdGF0dXMpOworICAgIGNoZWNrQW5kQ2xlYXJFeGNlcHRpb25Gcm9tQ2FsbGJhY2soZW52LCBfX0ZVTkNUSU9OX18pOworfQorCitzdGF0aWMgdm9pZCBubWVhX2NhbGxiYWNrKEdwc1V0Y1RpbWUgdGltZXN0YW1wLCBjb25zdCBjaGFyKiBubWVhLCBpbnQgbGVuZ3RoKQoreworICAgIEpOSUVudiogZW52ID0gQW5kcm9pZFJ1bnRpbWU6OmdldEpOSUVudigpOworICAgIC8vIFRoZSBKYXZhIGNvZGUgd2lsbCBjYWxsIGJhY2sgdG8gcmVhZCB0aGVzZSB2YWx1ZXMKKyAgICAvLyBXZSBkbyB0aGlzIHRvIGF2b2lkIGNyZWF0aW5nIHVubmVjZXNzYXJ5IFN0cmluZyBvYmplY3RzCisgICAgc05tZWFTdHJpbmcgPSBubWVhOworICAgIHNObWVhU3RyaW5nTGVuZ3RoID0gbGVuZ3RoOworICAgIGVudi0+Q2FsbFZvaWRNZXRob2QobUNhbGxiYWNrc09iaiwgbWV0aG9kX3JlcG9ydE5tZWEsIHRpbWVzdGFtcCk7CisgICAgY2hlY2tBbmRDbGVhckV4Y2VwdGlvbkZyb21DYWxsYmFjayhlbnYsIF9fRlVOQ1RJT05fXyk7Cit9CisKK3N0YXRpYyB2b2lkIHNldF9jYXBhYmlsaXRpZXNfY2FsbGJhY2sodWludDMyX3QgY2FwYWJpbGl0aWVzKQoreworICAgIEpOSUVudiogZW52ID0gQW5kcm9pZFJ1bnRpbWU6OmdldEpOSUVudigpOworICAgIGVudi0+Q2FsbFZvaWRNZXRob2QobUNhbGxiYWNrc09iaiwgbWV0aG9kX3NldEVuZ2luZUNhcGFiaWxpdGllcywgY2FwYWJpbGl0aWVzKTsKKyAgICBjaGVja0FuZENsZWFyRXhjZXB0aW9uRnJvbUNhbGxiYWNrKGVudiwgX19GVU5DVElPTl9fKTsKK30KKworc3RhdGljIHZvaWQgYWNxdWlyZV93YWtlbG9ja19jYWxsYmFjaygpCit7CisgICAgYWNxdWlyZV93YWtlX2xvY2soUEFSVElBTF9XQUtFX0xPQ0ssIFdBS0VfTE9DS19OQU1FKTsKK30KKworc3RhdGljIHZvaWQgcmVsZWFzZV93YWtlbG9ja19jYWxsYmFjaygpCit7CisgICAgcmVsZWFzZV93YWtlX2xvY2soV0FLRV9MT0NLX05BTUUpOworfQorCitzdGF0aWMgcHRocmVhZF90IGNyZWF0ZV90aHJlYWRfY2FsbGJhY2soY29uc3QgY2hhciogbmFtZSwgdm9pZCAoKnN0YXJ0KSh2b2lkICopLCB2b2lkKiBhcmcpCit7CisgICAgcmV0dXJuIChwdGhyZWFkX3QpQW5kcm9pZFJ1bnRpbWU6OmNyZWF0ZUphdmFUaHJlYWQobmFtZSwgc3RhcnQsIGFyZyk7Cit9CisKK0dwc0NhbGxiYWNrcyBzR3BzQ2FsbGJhY2tzID0geworICAgIHNpemVvZihHcHNDYWxsYmFja3MpLAorICAgIGxvY2F0aW9uX2NhbGxiYWNrLAorICAgIHN0YXR1c19jYWxsYmFjaywKKyAgICBzdl9zdGF0dXNfY2FsbGJhY2ssCisgICAgbm1lYV9jYWxsYmFjaywKKyAgICBzZXRfY2FwYWJpbGl0aWVzX2NhbGxiYWNrLAorICAgIGFjcXVpcmVfd2FrZWxvY2tfY2FsbGJhY2ssCisgICAgcmVsZWFzZV93YWtlbG9ja19jYWxsYmFjaywKKyAgICBjcmVhdGVfdGhyZWFkX2NhbGxiYWNrLAorfTsKKworc3RhdGljIHZvaWQgeHRyYV9kb3dubG9hZF9yZXF1ZXN0X2NhbGxiYWNrKCkKK3sKKyAgICBKTklFbnYqIGVudiA9IEFuZHJvaWRSdW50aW1lOjpnZXRKTklFbnYoKTsKKyAgICBlbnYtPkNhbGxWb2lkTWV0aG9kKG1DYWxsYmFja3NPYmosIG1ldGhvZF94dHJhRG93bmxvYWRSZXF1ZXN0KTsKKyAgICBjaGVja0FuZENsZWFyRXhjZXB0aW9uRnJvbUNhbGxiYWNrKGVudiwgX19GVU5DVElPTl9fKTsKK30KKworR3BzWHRyYUNhbGxiYWNrcyBzR3BzWHRyYUNhbGxiYWNrcyA9IHsKKyAgICB4dHJhX2Rvd25sb2FkX3JlcXVlc3RfY2FsbGJhY2ssCisgICAgY3JlYXRlX3RocmVhZF9jYWxsYmFjaywKK307CisKK3N0YXRpYyB2b2lkIGFncHNfc3RhdHVzX2NhbGxiYWNrKEFHcHNTdGF0dXMqIGFncHNfc3RhdHVzKQoreworICAgIEpOSUVudiogZW52ID0gQW5kcm9pZFJ1bnRpbWU6OmdldEpOSUVudigpOworICAgIGVudi0+Q2FsbFZvaWRNZXRob2QobUNhbGxiYWNrc09iaiwgbWV0aG9kX3JlcG9ydEFHcHNTdGF0dXMsCisgICAgICAgICAgICAgICAgICAgICAgICBhZ3BzX3N0YXR1cy0+dHlwZSwgYWdwc19zdGF0dXMtPnN0YXR1cyk7CisgICAgY2hlY2tBbmRDbGVhckV4Y2VwdGlvbkZyb21DYWxsYmFjayhlbnYsIF9fRlVOQ1RJT05fXyk7Cit9CisKK0FHcHNDYWxsYmFja3Mgc0FHcHNDYWxsYmFja3MgPSB7CisgICAgYWdwc19zdGF0dXNfY2FsbGJhY2ssCisgICAgY3JlYXRlX3RocmVhZF9jYWxsYmFjaywKK307CisKK3N0YXRpYyB2b2lkIGdwc19uaV9ub3RpZnlfY2FsbGJhY2soR3BzTmlOb3RpZmljYXRpb24gKm5vdGlmaWNhdGlvbikKK3sKKyAgICBMT0dEKCJncHNfbmlfbm90aWZ5X2NhbGxiYWNrXG4iKTsKKyAgICBKTklFbnYqIGVudiA9IEFuZHJvaWRSdW50aW1lOjpnZXRKTklFbnYoKTsKKyAgICBqc3RyaW5nIHJlcXVlc3Rvcl9pZCA9IGVudi0+TmV3U3RyaW5nVVRGKG5vdGlmaWNhdGlvbi0+cmVxdWVzdG9yX2lkKTsKKyAgICBqc3RyaW5nIHRleHQgPSBlbnYtPk5ld1N0cmluZ1VURihub3RpZmljYXRpb24tPnRleHQpOworICAgIGpzdHJpbmcgZXh0cmFzID0gZW52LT5OZXdTdHJpbmdVVEYobm90aWZpY2F0aW9uLT5leHRyYXMpOworCisgICAgaWYgKHJlcXVlc3Rvcl9pZCAmJiB0ZXh0ICYmIGV4dHJhcykgeworICAgICAgICBlbnYtPkNhbGxWb2lkTWV0aG9kKG1DYWxsYmFja3NPYmosIG1ldGhvZF9yZXBvcnROaU5vdGlmaWNhdGlvbiwKKyAgICAgICAgICAgIG5vdGlmaWNhdGlvbi0+bm90aWZpY2F0aW9uX2lkLCBub3RpZmljYXRpb24tPm5pX3R5cGUsCisgICAgICAgICAgICBub3RpZmljYXRpb24tPm5vdGlmeV9mbGFncywgbm90aWZpY2F0aW9uLT50aW1lb3V0LAorICAgICAgICAgICAgbm90aWZpY2F0aW9uLT5kZWZhdWx0X3Jlc3BvbnNlLCByZXF1ZXN0b3JfaWQsIHRleHQsCisgICAgICAgICAgICBub3RpZmljYXRpb24tPnJlcXVlc3Rvcl9pZF9lbmNvZGluZywKKyAgICAgICAgICAgIG5vdGlmaWNhdGlvbi0+dGV4dF9lbmNvZGluZywgZXh0cmFzKTsKKyAgICB9IGVsc2UgeworICAgICAgICBMT0dFKCJvdXQgb2YgbWVtb3J5IGluIGdwc19uaV9ub3RpZnlfY2FsbGJhY2tcbiIpOworICAgIH0KKworICAgIGlmIChyZXF1ZXN0b3JfaWQpCisgICAgICAgIGVudi0+RGVsZXRlTG9jYWxSZWYocmVxdWVzdG9yX2lkKTsKKyAgICBpZiAodGV4dCkKKyAgICAgICAgZW52LT5EZWxldGVMb2NhbFJlZih0ZXh0KTsKKyAgICBpZiAoZXh0cmFzKQorICAgICAgICBlbnYtPkRlbGV0ZUxvY2FsUmVmKGV4dHJhcyk7CisgICAgY2hlY2tBbmRDbGVhckV4Y2VwdGlvbkZyb21DYWxsYmFjayhlbnYsIF9fRlVOQ1RJT05fXyk7Cit9CisKK0dwc05pQ2FsbGJhY2tzIHNHcHNOaUNhbGxiYWNrcyA9IHsKKyAgICBncHNfbmlfbm90aWZ5X2NhbGxiYWNrLAorICAgIGNyZWF0ZV90aHJlYWRfY2FsbGJhY2ssCit9OworCitzdGF0aWMgdm9pZCBhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfY2xhc3NfaW5pdF9uYXRpdmUoSk5JRW52KiBlbnYsIGpjbGFzcyBjbGF6eikgeworICAgIG1ldGhvZF9yZXBvcnRMb2NhdGlvbiA9IGVudi0+R2V0TWV0aG9kSUQoY2xhenosICJyZXBvcnRMb2NhdGlvbiIsICIoSUREREZGRkopViIpOworICAgIG1ldGhvZF9yZXBvcnRTdGF0dXMgPSBlbnYtPkdldE1ldGhvZElEKGNsYXp6LCAicmVwb3J0U3RhdHVzIiwgIihJKVYiKTsKKyAgICBtZXRob2RfcmVwb3J0U3ZTdGF0dXMgPSBlbnYtPkdldE1ldGhvZElEKGNsYXp6LCAicmVwb3J0U3ZTdGF0dXMiLCAiKClWIik7CisgICAgbWV0aG9kX3JlcG9ydEFHcHNTdGF0dXMgPSBlbnYtPkdldE1ldGhvZElEKGNsYXp6LCAicmVwb3J0QUdwc1N0YXR1cyIsICIoSUkpViIpOworICAgIG1ldGhvZF9yZXBvcnRObWVhID0gZW52LT5HZXRNZXRob2RJRChjbGF6eiwgInJlcG9ydE5tZWEiLCAiKEopViIpOworICAgIG1ldGhvZF9zZXRFbmdpbmVDYXBhYmlsaXRpZXMgPSBlbnYtPkdldE1ldGhvZElEKGNsYXp6LCAic2V0RW5naW5lQ2FwYWJpbGl0aWVzIiwgIihJKVYiKTsKKyAgICBtZXRob2RfeHRyYURvd25sb2FkUmVxdWVzdCA9IGVudi0+R2V0TWV0aG9kSUQoY2xhenosICJ4dHJhRG93bmxvYWRSZXF1ZXN0IiwgIigpViIpOworICAgIG1ldGhvZF9yZXBvcnROaU5vdGlmaWNhdGlvbiA9IGVudi0+R2V0TWV0aG9kSUQoY2xhenosICJyZXBvcnROaU5vdGlmaWNhdGlvbiIsICIoSUlJSUlMamF2YS9sYW5nL1N0cmluZztMamF2YS9sYW5nL1N0cmluZztJSUxqYXZhL2xhbmcvU3RyaW5nOylWIik7Cit9CisKK3N0YXRpYyBjb25zdCBHcHNJbnRlcmZhY2UqIGdldF9ncHNfaW50ZXJmYWNlKCkgeworICAgIGludCBlcnI7CisgICAgaHdfbW9kdWxlX3QqIG1vZHVsZTsKKyAgICBjb25zdCBHcHNJbnRlcmZhY2UqIGludGVyZmFjZSA9IE5VTEw7CisKKyAgICBlcnIgPSBod19nZXRfbW9kdWxlKEdQU19IQVJEV0FSRV9NT0RVTEVfSUQsIChod19tb2R1bGVfdCBjb25zdCoqKSZtb2R1bGUpOworICAgIGlmIChlcnIgPT0gMCkgeworICAgICAgICBod19kZXZpY2VfdCogZGV2aWNlOworICAgICAgICBlcnIgPSBtb2R1bGUtPm1ldGhvZHMtPm9wZW4obW9kdWxlLCBHUFNfSEFSRFdBUkVfTU9EVUxFX0lELCAmZGV2aWNlKTsKKyAgICAgICAgaWYgKGVyciA9PSAwKSB7CisgICAgICAgICAgICBncHNfZGV2aWNlX3QqIGdwc19kZXZpY2UgPSAoZ3BzX2RldmljZV90ICopZGV2aWNlOworICAgICAgICAgICAgaW50ZXJmYWNlID0gZ3BzX2RldmljZS0+Z2V0X2dwc19pbnRlcmZhY2UoZ3BzX2RldmljZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4gaW50ZXJmYWNlOworfQorCitzdGF0aWMgamJvb2xlYW4gYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX2lzX3N1cHBvcnRlZChKTklFbnYqIGVudiwgamNsYXNzIGNsYXp6KSB7CisgICAgaWYgKCFzR3BzSW50ZXJmYWNlKQorICAgICAgICBzR3BzSW50ZXJmYWNlID0gZ2V0X2dwc19pbnRlcmZhY2UoKTsKKyAgICByZXR1cm4gKHNHcHNJbnRlcmZhY2UgIT0gTlVMTCk7Cit9CisKK3N0YXRpYyBqYm9vbGVhbiBhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfaW5pdChKTklFbnYqIGVudiwgam9iamVjdCBvYmopCit7CisgICAgLy8gdGhpcyBtdXN0IGJlIHNldCBiZWZvcmUgY2FsbGluZyBpbnRvIHRoZSBIQUwgbGlicmFyeQorICAgIGlmICghbUNhbGxiYWNrc09iaikKKyAgICAgICAgbUNhbGxiYWNrc09iaiA9IGVudi0+TmV3R2xvYmFsUmVmKG9iaik7CisKKyAgICBpZiAoIXNHcHNJbnRlcmZhY2UpCisgICAgICAgIHNHcHNJbnRlcmZhY2UgPSBnZXRfZ3BzX2ludGVyZmFjZSgpOworICAgIGlmICghc0dwc0ludGVyZmFjZSB8fCBzR3BzSW50ZXJmYWNlLT5pbml0KCZzR3BzQ2FsbGJhY2tzKSAhPSAwKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIXNBR3BzSW50ZXJmYWNlKQorICAgICAgICBzQUdwc0ludGVyZmFjZSA9IChjb25zdCBBR3BzSW50ZXJmYWNlKilzR3BzSW50ZXJmYWNlLT5nZXRfZXh0ZW5zaW9uKEFHUFNfSU5URVJGQUNFKTsKKyAgICBpZiAoc0FHcHNJbnRlcmZhY2UpCisgICAgICAgIHNBR3BzSW50ZXJmYWNlLT5pbml0KCZzQUdwc0NhbGxiYWNrcyk7CisKKyAgICBpZiAoIXNHcHNOaUludGVyZmFjZSkKKyAgICAgICBzR3BzTmlJbnRlcmZhY2UgPSAoY29uc3QgR3BzTmlJbnRlcmZhY2UqKXNHcHNJbnRlcmZhY2UtPmdldF9leHRlbnNpb24oR1BTX05JX0lOVEVSRkFDRSk7CisgICAgaWYgKHNHcHNOaUludGVyZmFjZSkKKyAgICAgICBzR3BzTmlJbnRlcmZhY2UtPmluaXQoJnNHcHNOaUNhbGxiYWNrcyk7CisKKyAgICBpZiAoIXNHcHNEZWJ1Z0ludGVyZmFjZSkKKyAgICAgICBzR3BzRGVidWdJbnRlcmZhY2UgPSAoY29uc3QgR3BzRGVidWdJbnRlcmZhY2UqKXNHcHNJbnRlcmZhY2UtPmdldF9leHRlbnNpb24oR1BTX0RFQlVHX0lOVEVSRkFDRSk7CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKworc3RhdGljIHZvaWQgYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX2NsZWFudXAoSk5JRW52KiBlbnYsIGpvYmplY3Qgb2JqKQoreworICAgIHNHcHNJbnRlcmZhY2UtPmNsZWFudXAoKTsKK30KKworc3RhdGljIGpib29sZWFuIGFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9zZXRfcG9zaXRpb25fbW9kZShKTklFbnYqIGVudiwgam9iamVjdCBvYmosCisgICAgICAgIGppbnQgbW9kZSwgamludCByZWN1cnJlbmNlLCBqaW50IG1pbl9pbnRlcnZhbCwgamludCBwcmVmZXJyZWRfYWNjdXJhY3ksIGppbnQgcHJlZmVycmVkX3RpbWUpCit7CisgICAgcmV0dXJuIChzR3BzSW50ZXJmYWNlLT5zZXRfcG9zaXRpb25fbW9kZShtb2RlLCByZWN1cnJlbmNlLCBtaW5faW50ZXJ2YWwsIHByZWZlcnJlZF9hY2N1cmFjeSwKKyAgICAgICAgICAgIHByZWZlcnJlZF90aW1lKSA9PSAwKTsKK30KKworc3RhdGljIGpib29sZWFuIGFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9zdGFydChKTklFbnYqIGVudiwgam9iamVjdCBvYmopCit7CisgICAgcmV0dXJuIChzR3BzSW50ZXJmYWNlLT5zdGFydCgpID09IDApOworfQorCitzdGF0aWMgamJvb2xlYW4gYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX3N0b3AoSk5JRW52KiBlbnYsIGpvYmplY3Qgb2JqKQoreworICAgIHJldHVybiAoc0dwc0ludGVyZmFjZS0+c3RvcCgpID09IDApOworfQorCitzdGF0aWMgdm9pZCBhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfZGVsZXRlX2FpZGluZ19kYXRhKEpOSUVudiogZW52LCBqb2JqZWN0IG9iaiwgamludCBmbGFncykKK3sKKyAgICBzR3BzSW50ZXJmYWNlLT5kZWxldGVfYWlkaW5nX2RhdGEoZmxhZ3MpOworfQorCitzdGF0aWMgamludCBhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfcmVhZF9zdl9zdGF0dXMoSk5JRW52KiBlbnYsIGpvYmplY3Qgb2JqLAorICAgICAgICBqaW50QXJyYXkgcHJuQXJyYXksIGpmbG9hdEFycmF5IHNuckFycmF5LCBqZmxvYXRBcnJheSBlbGV2QXJyYXksIGpmbG9hdEFycmF5IGF6dW1BcnJheSwKKyAgICAgICAgamludEFycmF5IG1hc2tBcnJheSkKK3sKKyAgICAvLyB0aGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBmcm9tIHdpdGhpbiBhIGNhbGwgdG8gcmVwb3J0U3ZTdGF0dXMKKworICAgIGppbnQqIHBybnMgPSBlbnYtPkdldEludEFycmF5RWxlbWVudHMocHJuQXJyYXksIDApOworICAgIGpmbG9hdCogc25ycyA9IGVudi0+R2V0RmxvYXRBcnJheUVsZW1lbnRzKHNuckFycmF5LCAwKTsKKyAgICBqZmxvYXQqIGVsZXYgPSBlbnYtPkdldEZsb2F0QXJyYXlFbGVtZW50cyhlbGV2QXJyYXksIDApOworICAgIGpmbG9hdCogYXppbSA9IGVudi0+R2V0RmxvYXRBcnJheUVsZW1lbnRzKGF6dW1BcnJheSwgMCk7CisgICAgamludCogbWFzayA9IGVudi0+R2V0SW50QXJyYXlFbGVtZW50cyhtYXNrQXJyYXksIDApOworCisgICAgaW50IG51bV9zdnMgPSBzR3BzU3ZTdGF0dXMubnVtX3N2czsKKyAgICBmb3IgKGludCBpID0gMDsgaSA8IG51bV9zdnM7IGkrKykgeworICAgICAgICBwcm5zW2ldID0gc0dwc1N2U3RhdHVzLnN2X2xpc3RbaV0ucHJuOworICAgICAgICBzbnJzW2ldID0gc0dwc1N2U3RhdHVzLnN2X2xpc3RbaV0uc25yOworICAgICAgICBlbGV2W2ldID0gc0dwc1N2U3RhdHVzLnN2X2xpc3RbaV0uZWxldmF0aW9uOworICAgICAgICBhemltW2ldID0gc0dwc1N2U3RhdHVzLnN2X2xpc3RbaV0uYXppbXV0aDsKKyAgICB9CisgICAgbWFza1swXSA9IHNHcHNTdlN0YXR1cy5lcGhlbWVyaXNfbWFzazsKKyAgICBtYXNrWzFdID0gc0dwc1N2U3RhdHVzLmFsbWFuYWNfbWFzazsKKyAgICBtYXNrWzJdID0gc0dwc1N2U3RhdHVzLnVzZWRfaW5fZml4X21hc2s7CisKKyAgICBlbnYtPlJlbGVhc2VJbnRBcnJheUVsZW1lbnRzKHBybkFycmF5LCBwcm5zLCAwKTsKKyAgICBlbnYtPlJlbGVhc2VGbG9hdEFycmF5RWxlbWVudHMoc25yQXJyYXksIHNucnMsIDApOworICAgIGVudi0+UmVsZWFzZUZsb2F0QXJyYXlFbGVtZW50cyhlbGV2QXJyYXksIGVsZXYsIDApOworICAgIGVudi0+UmVsZWFzZUZsb2F0QXJyYXlFbGVtZW50cyhhenVtQXJyYXksIGF6aW0sIDApOworICAgIGVudi0+UmVsZWFzZUludEFycmF5RWxlbWVudHMobWFza0FycmF5LCBtYXNrLCAwKTsKKyAgICByZXR1cm4gbnVtX3N2czsKK30KKworc3RhdGljIGppbnQgYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX3JlYWRfbm1lYShKTklFbnYqIGVudiwgam9iamVjdCBvYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpieXRlQXJyYXkgbm1lYUFycmF5LCBqaW50IGJ1ZmZlcl9zaXplKQoreworICAgIC8vIHRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGZyb20gd2l0aGluIGEgY2FsbCB0byByZXBvcnRObWVhCisgICAgamJ5dGUqIG5tZWEgPSAoamJ5dGUgKillbnYtPkdldFByaW1pdGl2ZUFycmF5Q3JpdGljYWwobm1lYUFycmF5LCAwKTsKKyAgICBpbnQgbGVuZ3RoID0gc05tZWFTdHJpbmdMZW5ndGg7CisgICAgaWYgKGxlbmd0aCA+IGJ1ZmZlcl9zaXplKQorICAgICAgICBsZW5ndGggPSBidWZmZXJfc2l6ZTsKKyAgICBtZW1jcHkobm1lYSwgc05tZWFTdHJpbmcsIGxlbmd0aCk7CisgICAgZW52LT5SZWxlYXNlUHJpbWl0aXZlQXJyYXlDcml0aWNhbChubWVhQXJyYXksIG5tZWEsIEpOSV9BQk9SVCk7CisgICAgcmV0dXJuIGxlbmd0aDsKK30KKworc3RhdGljIHZvaWQgYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX2luamVjdF90aW1lKEpOSUVudiogZW52LCBqb2JqZWN0IG9iaiwKKyAgICAgICAgamxvbmcgdGltZSwgamxvbmcgdGltZVJlZmVyZW5jZSwgamludCB1bmNlcnRhaW50eSkKK3sKKyAgICBzR3BzSW50ZXJmYWNlLT5pbmplY3RfdGltZSh0aW1lLCB0aW1lUmVmZXJlbmNlLCB1bmNlcnRhaW50eSk7Cit9CisKK3N0YXRpYyB2b2lkIGFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9pbmplY3RfbG9jYXRpb24oSk5JRW52KiBlbnYsIGpvYmplY3Qgb2JqLAorICAgICAgICBqZG91YmxlIGxhdGl0dWRlLCBqZG91YmxlIGxvbmdpdHVkZSwgamZsb2F0IGFjY3VyYWN5KQoreworICAgIHNHcHNJbnRlcmZhY2UtPmluamVjdF9sb2NhdGlvbihsYXRpdHVkZSwgbG9uZ2l0dWRlLCBhY2N1cmFjeSk7Cit9CisKK3N0YXRpYyBqYm9vbGVhbiBhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfc3VwcG9ydHNfeHRyYShKTklFbnYqIGVudiwgam9iamVjdCBvYmopCit7CisgICAgaWYgKCFzR3BzWHRyYUludGVyZmFjZSkgeworICAgICAgICBzR3BzWHRyYUludGVyZmFjZSA9IChjb25zdCBHcHNYdHJhSW50ZXJmYWNlKilzR3BzSW50ZXJmYWNlLT5nZXRfZXh0ZW5zaW9uKEdQU19YVFJBX0lOVEVSRkFDRSk7CisgICAgICAgIGlmIChzR3BzWHRyYUludGVyZmFjZSkgeworICAgICAgICAgICAgaW50IHJlc3VsdCA9IHNHcHNYdHJhSW50ZXJmYWNlLT5pbml0KCZzR3BzWHRyYUNhbGxiYWNrcyk7CisgICAgICAgICAgICBpZiAocmVzdWx0KSB7CisgICAgICAgICAgICAgICAgc0dwc1h0cmFJbnRlcmZhY2UgPSBOVUxMOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIChzR3BzWHRyYUludGVyZmFjZSAhPSBOVUxMKTsKK30KKworc3RhdGljIHZvaWQgYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX2luamVjdF94dHJhX2RhdGEoSk5JRW52KiBlbnYsIGpvYmplY3Qgb2JqLAorICAgICAgICBqYnl0ZUFycmF5IGRhdGEsIGppbnQgbGVuZ3RoKQoreworICAgIGpieXRlKiBieXRlcyA9IChqYnl0ZSAqKWVudi0+R2V0UHJpbWl0aXZlQXJyYXlDcml0aWNhbChkYXRhLCAwKTsKKyAgICBzR3BzWHRyYUludGVyZmFjZS0+aW5qZWN0X3h0cmFfZGF0YSgoY2hhciAqKWJ5dGVzLCBsZW5ndGgpOworICAgIGVudi0+UmVsZWFzZVByaW1pdGl2ZUFycmF5Q3JpdGljYWwoZGF0YSwgYnl0ZXMsIEpOSV9BQk9SVCk7Cit9CisKK3N0YXRpYyB2b2lkIGFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9hZ3BzX2RhdGFfY29ubl9vcGVuKEpOSUVudiogZW52LCBqb2JqZWN0IG9iaiwganN0cmluZyBhcG4pCit7CisgICAgaWYgKCFzQUdwc0ludGVyZmFjZSkgeworICAgICAgICBzQUdwc0ludGVyZmFjZSA9IChjb25zdCBBR3BzSW50ZXJmYWNlKilzR3BzSW50ZXJmYWNlLT5nZXRfZXh0ZW5zaW9uKEFHUFNfSU5URVJGQUNFKTsKKyAgICB9CisgICAgaWYgKHNBR3BzSW50ZXJmYWNlKSB7CisgICAgICAgIGlmIChhcG4gPT0gTlVMTCkgeworICAgICAgICAgICAgam5pVGhyb3dFeGNlcHRpb24oZW52LCAiamF2YS9sYW5nL0lsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiIsIE5VTEwpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNvbnN0IGNoYXIgKmFwblN0ciA9IGVudi0+R2V0U3RyaW5nVVRGQ2hhcnMoYXBuLCBOVUxMKTsKKyAgICAgICAgc0FHcHNJbnRlcmZhY2UtPmRhdGFfY29ubl9vcGVuKGFwblN0cik7CisgICAgICAgIGVudi0+UmVsZWFzZVN0cmluZ1VURkNoYXJzKGFwbiwgYXBuU3RyKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9hZ3BzX2RhdGFfY29ubl9jbG9zZWQoSk5JRW52KiBlbnYsIGpvYmplY3Qgb2JqKQoreworICAgIGlmICghc0FHcHNJbnRlcmZhY2UpIHsKKyAgICAgICAgc0FHcHNJbnRlcmZhY2UgPSAoY29uc3QgQUdwc0ludGVyZmFjZSopc0dwc0ludGVyZmFjZS0+Z2V0X2V4dGVuc2lvbihBR1BTX0lOVEVSRkFDRSk7CisgICAgfQorICAgIGlmIChzQUdwc0ludGVyZmFjZSkgeworICAgICAgICBzQUdwc0ludGVyZmFjZS0+ZGF0YV9jb25uX2Nsb3NlZCgpOworICAgIH0KK30KKworc3RhdGljIHZvaWQgYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX2FncHNfZGF0YV9jb25uX2ZhaWxlZChKTklFbnYqIGVudiwgam9iamVjdCBvYmopCit7CisgICAgaWYgKCFzQUdwc0ludGVyZmFjZSkgeworICAgICAgICBzQUdwc0ludGVyZmFjZSA9IChjb25zdCBBR3BzSW50ZXJmYWNlKilzR3BzSW50ZXJmYWNlLT5nZXRfZXh0ZW5zaW9uKEFHUFNfSU5URVJGQUNFKTsKKyAgICB9CisgICAgaWYgKHNBR3BzSW50ZXJmYWNlKSB7CisgICAgICAgIHNBR3BzSW50ZXJmYWNlLT5kYXRhX2Nvbm5fZmFpbGVkKCk7CisgICAgfQorfQorCitzdGF0aWMgdm9pZCBhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfc2V0X2FncHNfc2VydmVyKEpOSUVudiogZW52LCBqb2JqZWN0IG9iaiwKKyAgICAgICAgamludCB0eXBlLCBqc3RyaW5nIGhvc3RuYW1lLCBqaW50IHBvcnQpCit7CisgICAgaWYgKCFzQUdwc0ludGVyZmFjZSkgeworICAgICAgICBzQUdwc0ludGVyZmFjZSA9IChjb25zdCBBR3BzSW50ZXJmYWNlKilzR3BzSW50ZXJmYWNlLT5nZXRfZXh0ZW5zaW9uKEFHUFNfSU5URVJGQUNFKTsKKyAgICB9CisgICAgaWYgKHNBR3BzSW50ZXJmYWNlKSB7CisgICAgICAgIGNvbnN0IGNoYXIgKmNfaG9zdG5hbWUgPSBlbnYtPkdldFN0cmluZ1VURkNoYXJzKGhvc3RuYW1lLCBOVUxMKTsKKyAgICAgICAgc0FHcHNJbnRlcmZhY2UtPnNldF9zZXJ2ZXIodHlwZSwgY19ob3N0bmFtZSwgcG9ydCk7CisgICAgICAgIGVudi0+UmVsZWFzZVN0cmluZ1VURkNoYXJzKGhvc3RuYW1lLCBjX2hvc3RuYW1lKTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lkIGFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9zZW5kX25pX3Jlc3BvbnNlKEpOSUVudiogZW52LCBqb2JqZWN0IG9iaiwKKyAgICAgIGppbnQgbm90aWZJZCwgamludCByZXNwb25zZSkKK3sKKyAgICBpZiAoIXNHcHNOaUludGVyZmFjZSkgeworICAgICAgICBzR3BzTmlJbnRlcmZhY2UgPSAoY29uc3QgR3BzTmlJbnRlcmZhY2UqKXNHcHNJbnRlcmZhY2UtPmdldF9leHRlbnNpb24oR1BTX05JX0lOVEVSRkFDRSk7CisgICAgfQorICAgIGlmIChzR3BzTmlJbnRlcmZhY2UpIHsKKyAgICAgICAgc0dwc05pSW50ZXJmYWNlLT5yZXNwb25kKG5vdGlmSWQsIHJlc3BvbnNlKTsKKyAgICB9Cit9CisKK3N0YXRpYyBqc3RyaW5nIGFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9nZXRfaW50ZXJuYWxfc3RhdGUoSk5JRW52KiBlbnYsIGpvYmplY3Qgb2JqKQoreworICAgIGpzdHJpbmcgcmVzdWx0ID0gTlVMTDsKKyAgICBpZiAoc0dwc0RlYnVnSW50ZXJmYWNlKSB7CisgICAgICAgIGNvbnN0IHNpemVfdCBtYXhMZW5ndGggPSAyMDQ3OworICAgICAgICBjaGFyIGJ1ZmZlclttYXhMZW5ndGgrMV07CisgICAgICAgIHNpemVfdCBsZW5ndGggPSBzR3BzRGVidWdJbnRlcmZhY2UtPmdldF9pbnRlcm5hbF9zdGF0ZShidWZmZXIsIG1heExlbmd0aCk7CisgICAgICAgIGlmIChsZW5ndGggPiBtYXhMZW5ndGgpIGxlbmd0aCA9IG1heExlbmd0aDsKKyAgICAgICAgYnVmZmVyW2xlbmd0aF0gPSAwOworICAgICAgICByZXN1bHQgPSBlbnYtPk5ld1N0cmluZ1VURihidWZmZXIpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgSk5JTmF0aXZlTWV0aG9kIHNNZXRob2RzW10gPSB7CisgICAgIC8qIG5hbWUsIHNpZ25hdHVyZSwgZnVuY1B0ciAqLworICAgIHsiY2xhc3NfaW5pdF9uYXRpdmUiLCAiKClWIiwgKHZvaWQgKilhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfY2xhc3NfaW5pdF9uYXRpdmV9LAorICAgIHsibmF0aXZlX2lzX3N1cHBvcnRlZCIsICIoKVoiLCAodm9pZCopYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX2lzX3N1cHBvcnRlZH0sCisgICAgeyJuYXRpdmVfaW5pdCIsICIoKVoiLCAodm9pZCopYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX2luaXR9LAorICAgIHsibmF0aXZlX2NsZWFudXAiLCAiKClWIiwgKHZvaWQqKWFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9jbGVhbnVwfSwKKyAgICB7Im5hdGl2ZV9zZXRfcG9zaXRpb25fbW9kZSIsICIoSUlJSUkpWiIsICh2b2lkKilhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfc2V0X3Bvc2l0aW9uX21vZGV9LAorICAgIHsibmF0aXZlX3N0YXJ0IiwgIigpWiIsICh2b2lkKilhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfc3RhcnR9LAorICAgIHsibmF0aXZlX3N0b3AiLCAiKClaIiwgKHZvaWQqKWFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9zdG9wfSwKKyAgICB7Im5hdGl2ZV9kZWxldGVfYWlkaW5nX2RhdGEiLCAiKEkpViIsICh2b2lkKilhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfZGVsZXRlX2FpZGluZ19kYXRhfSwKKyAgICB7Im5hdGl2ZV9yZWFkX3N2X3N0YXR1cyIsICIoW0lbRltGW0ZbSSlJIiwgKHZvaWQqKWFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9yZWFkX3N2X3N0YXR1c30sCisgICAgeyJuYXRpdmVfcmVhZF9ubWVhIiwgIihbQkkpSSIsICh2b2lkKilhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfcmVhZF9ubWVhfSwKKyAgICB7Im5hdGl2ZV9pbmplY3RfdGltZSIsICIoSkpJKVYiLCAodm9pZCopYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX2luamVjdF90aW1lfSwKKyAgICB7Im5hdGl2ZV9pbmplY3RfbG9jYXRpb24iLCAiKERERilWIiwgKHZvaWQqKWFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9pbmplY3RfbG9jYXRpb259LAorICAgIHsibmF0aXZlX3N1cHBvcnRzX3h0cmEiLCAiKClaIiwgKHZvaWQqKWFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9zdXBwb3J0c194dHJhfSwKKyAgICB7Im5hdGl2ZV9pbmplY3RfeHRyYV9kYXRhIiwgIihbQkkpViIsICh2b2lkKilhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfaW5qZWN0X3h0cmFfZGF0YX0sCisgICAgeyJuYXRpdmVfYWdwc19kYXRhX2Nvbm5fb3BlbiIsICIoTGphdmEvbGFuZy9TdHJpbmc7KVYiLCAodm9pZCopYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX2FncHNfZGF0YV9jb25uX29wZW59LAorICAgIHsibmF0aXZlX2FncHNfZGF0YV9jb25uX2Nsb3NlZCIsICIoKVYiLCAodm9pZCopYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX2FncHNfZGF0YV9jb25uX2Nsb3NlZH0sCisgICAgeyJuYXRpdmVfYWdwc19kYXRhX2Nvbm5fZmFpbGVkIiwgIigpViIsICh2b2lkKilhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfYWdwc19kYXRhX2Nvbm5fZmFpbGVkfSwKKyAgICB7Im5hdGl2ZV9zZXRfYWdwc19zZXJ2ZXIiLCAiKElMamF2YS9sYW5nL1N0cmluZztJKVYiLCAodm9pZCopYW5kcm9pZF9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyX3NldF9hZ3BzX3NlcnZlcn0sCisgICAgeyJuYXRpdmVfc2VuZF9uaV9yZXNwb25zZSIsICIoSUkpViIsICh2b2lkKilhbmRyb2lkX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXJfc2VuZF9uaV9yZXNwb25zZX0sCisgICAgeyJuYXRpdmVfZ2V0X2ludGVybmFsX3N0YXRlIiwgIigpTGphdmEvbGFuZy9TdHJpbmc7IiwgKHZvaWQqKWFuZHJvaWRfbG9jYXRpb25fR3BzTG9jYXRpb25Qcm92aWRlcl9nZXRfaW50ZXJuYWxfc3RhdGV9LAorfTsKKworaW50IHJlZ2lzdGVyX2FuZHJvaWRfc2VydmVyX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXIoSk5JRW52KiBlbnYpCit7CisgICAgcmV0dXJuIGpuaVJlZ2lzdGVyTmF0aXZlTWV0aG9kcyhlbnYsICJjb20vYW5kcm9pZC9zZXJ2ZXIvbG9jYXRpb24vR3BzTG9jYXRpb25Qcm92aWRlciIsIHNNZXRob2RzLCBORUxFTShzTWV0aG9kcykpOworfQorCit9IC8qIG5hbWVzcGFjZSBhbmRyb2lkICovCmRpZmYgLS1naXQgYS9zZXJ2aWNlcy9qbmkvb25sb2FkLmNwcCBiL3NlcnZpY2VzL2puaS9vbmxvYWQuY3BwCmluZGV4IGMxNmZkYjguLjFhMmQ4YjYgMTAwNjQ0Ci0tLSBhL3NlcnZpY2VzL2puaS9vbmxvYWQuY3BwCisrKyBiL3NlcnZpY2VzL2puaS9vbmxvYWQuY3BwCkBAIC02LDExICs2LDEzIEBACiBuYW1lc3BhY2UgYW5kcm9pZCB7CiBpbnQgcmVnaXN0ZXJfYW5kcm9pZF9zZXJ2ZXJfQWxhcm1NYW5hZ2VyU2VydmljZShKTklFbnYqIGVudik7CiBpbnQgcmVnaXN0ZXJfYW5kcm9pZF9zZXJ2ZXJfQmF0dGVyeVNlcnZpY2UoSk5JRW52KiBlbnYpOwotaW50IHJlZ2lzdGVyX2FuZHJvaWRfc2VydmVyX0tleUlucHV0UXVldWUoSk5JRW52KiBlbnYpOworaW50IHJlZ2lzdGVyX2FuZHJvaWRfc2VydmVyX0lucHV0TWFuYWdlcihKTklFbnYqIGVudik7CiBpbnQgcmVnaXN0ZXJfYW5kcm9pZF9zZXJ2ZXJfTGlnaHRzU2VydmljZShKTklFbnYqIGVudik7CitpbnQgcmVnaXN0ZXJfYW5kcm9pZF9zZXJ2ZXJfUG93ZXJNYW5hZ2VyU2VydmljZShKTklFbnYqIGVudik7CiBpbnQgcmVnaXN0ZXJfYW5kcm9pZF9zZXJ2ZXJfU2Vuc29yU2VydmljZShKTklFbnYqIGVudik7CiBpbnQgcmVnaXN0ZXJfYW5kcm9pZF9zZXJ2ZXJfVmlicmF0b3JTZXJ2aWNlKEpOSUVudiogZW52KTsKIGludCByZWdpc3Rlcl9hbmRyb2lkX3NlcnZlcl9TeXN0ZW1TZXJ2ZXIoSk5JRW52KiBlbnYpOworaW50IHJlZ2lzdGVyX2FuZHJvaWRfc2VydmVyX2xvY2F0aW9uX0dwc0xvY2F0aW9uUHJvdmlkZXIoSk5JRW52KiBlbnYpOwogfTsKIAogdXNpbmcgbmFtZXNwYWNlIGFuZHJvaWQ7CkBAIC0yNiwxMyArMjgsMTUgQEAKICAgICB9CiAgICAgTE9HX0FTU0VSVChlbnYsICJDb3VsZCBub3QgcmV0cmlldmUgdGhlIGVudiEiKTsKIAotICAgIHJlZ2lzdGVyX2FuZHJvaWRfc2VydmVyX0tleUlucHV0UXVldWUoZW52KTsKKyAgICByZWdpc3Rlcl9hbmRyb2lkX3NlcnZlcl9Qb3dlck1hbmFnZXJTZXJ2aWNlKGVudik7CisgICAgcmVnaXN0ZXJfYW5kcm9pZF9zZXJ2ZXJfSW5wdXRNYW5hZ2VyKGVudik7CiAgICAgcmVnaXN0ZXJfYW5kcm9pZF9zZXJ2ZXJfTGlnaHRzU2VydmljZShlbnYpOwogICAgIHJlZ2lzdGVyX2FuZHJvaWRfc2VydmVyX0FsYXJtTWFuYWdlclNlcnZpY2UoZW52KTsKICAgICByZWdpc3Rlcl9hbmRyb2lkX3NlcnZlcl9CYXR0ZXJ5U2VydmljZShlbnYpOwogICAgIHJlZ2lzdGVyX2FuZHJvaWRfc2VydmVyX1NlbnNvclNlcnZpY2UoZW52KTsKICAgICByZWdpc3Rlcl9hbmRyb2lkX3NlcnZlcl9WaWJyYXRvclNlcnZpY2UoZW52KTsKICAgICByZWdpc3Rlcl9hbmRyb2lkX3NlcnZlcl9TeXN0ZW1TZXJ2ZXIoZW52KTsKKyAgICByZWdpc3Rlcl9hbmRyb2lkX3NlcnZlcl9sb2NhdGlvbl9HcHNMb2NhdGlvblByb3ZpZGVyKGVudik7CiAKICAgICByZXR1cm4gSk5JX1ZFUlNJT05fMV80OwogfQpkaWZmIC0tZ2l0IGEvdGVsZXBob255L2phdmEvYW5kcm9pZC90ZWxlcGhvbnkvTmVpZ2hib3JpbmdDZWxsSW5mby5qYXZhIGIvdGVsZXBob255L2phdmEvYW5kcm9pZC90ZWxlcGhvbnkvTmVpZ2hib3JpbmdDZWxsSW5mby5qYXZhCmluZGV4IGFkN2RmYzkuLjJmNzY2NmQgMTAwNjQ0Ci0tLSBhL3RlbGVwaG9ueS9qYXZhL2FuZHJvaWQvdGVsZXBob255L05laWdoYm9yaW5nQ2VsbEluZm8uamF2YQorKysgYi90ZWxlcGhvbnkvamF2YS9hbmRyb2lkL3RlbGVwaG9ueS9OZWlnaGJvcmluZ0NlbGxJbmZvLmphdmEKQEAgLTEzMyw4ICsxMzMsMTEgQEAKICAgICAgICAgICAgIGNhc2UgTkVUV09SS19UWVBFX0dQUlM6CiAgICAgICAgICAgICBjYXNlIE5FVFdPUktfVFlQRV9FREdFOgogICAgICAgICAgICAgICAgIG1OZXR3b3JrVHlwZSA9IHJhZGlvVHlwZTsKLSAgICAgICAgICAgICAgICBtTGFjID0gSW50ZWdlci52YWx1ZU9mKGxvY2F0aW9uLnN1YnN0cmluZygwLCA0KSwgMTYpOwotICAgICAgICAgICAgICAgIG1DaWQgPSBJbnRlZ2VyLnZhbHVlT2YobG9jYXRpb24uc3Vic3RyaW5nKDQpLCAxNik7CisgICAgICAgICAgICAgICAgLy8gY2hlY2sgaWYgMHhGRkZGRkZGRiBmb3IgVU5LTk9XTl9DSUQKKyAgICAgICAgICAgICAgICBpZiAoIWxvY2F0aW9uLmVxdWFsc0lnbm9yZUNhc2UoIkZGRkZGRkZGIikpIHsKKyAgICAgICAgICAgICAgICAgICAgbUNpZCA9IEludGVnZXIudmFsdWVPZihsb2NhdGlvbi5zdWJzdHJpbmcoNCksIDE2KTsKKyAgICAgICAgICAgICAgICAgICAgbUxhYyA9IEludGVnZXIudmFsdWVPZihsb2NhdGlvbi5zdWJzdHJpbmcoMCwgNCksIDE2KTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIE5FVFdPUktfVFlQRV9VTVRTOgogICAgICAgICAgICAgY2FzZSBORVRXT1JLX1RZUEVfSFNEUEE6CkBAIC0yOTMsNCArMjk2LDQgQEAKICAgICAgICAgICAgIHJldHVybiBuZXcgTmVpZ2hib3JpbmdDZWxsSW5mb1tzaXplXTsKICAgICAgICAgfQogICAgIH07Ci19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorfQpkaWZmIC0tZ2l0IGEvdGVsZXBob255L2phdmEvYW5kcm9pZC90ZWxlcGhvbnkvUGhvbmVOdW1iZXJVdGlscy5qYXZhIGIvdGVsZXBob255L2phdmEvYW5kcm9pZC90ZWxlcGhvbnkvUGhvbmVOdW1iZXJVdGlscy5qYXZhCmluZGV4IDMyZTcxNzYuLmE2MGQyYmUgMTAwNjQ0Ci0tLSBhL3RlbGVwaG9ueS9qYXZhL2FuZHJvaWQvdGVsZXBob255L1Bob25lTnVtYmVyVXRpbHMuamF2YQorKysgYi90ZWxlcGhvbnkvamF2YS9hbmRyb2lkL3RlbGVwaG9ueS9QaG9uZU51bWJlclV0aWxzLmphdmEKQEAgLTczMiw3ICs3MzIsOCBAQAogICAgICAgICAgICAgcmV0dXJuICIiOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKChieXRlc1tvZmZzZXRdICYgMHhmZikgPT0gVE9BX0ludGVybmF0aW9uYWwpIHsKKyAgICAgICAgLy9Pbmx5IFRPTiBmaWVsZCBzaG91bGQgYmUgdGFrZW4gaW4gY29uc2lkZXJhdGlvbgorICAgICAgICBpZiAoKGJ5dGVzW29mZnNldF0gJiAweGYwKSA9PSAoVE9BX0ludGVybmF0aW9uYWwgJiAweGYwKSkgewogICAgICAgICAgICAgcHJlcGVuZFBsdXMgPSB0cnVlOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL3RlbGVwaG9ueS9qYXZhL2FuZHJvaWQvdGVsZXBob255L1NlcnZpY2VTdGF0ZS5qYXZhIGIvdGVsZXBob255L2phdmEvYW5kcm9pZC90ZWxlcGhvbnkvU2VydmljZVN0YXRlLmphdmEKaW5kZXggNmM2NjU1OS4uMzVhMmMxOSAxMDA2NDQKLS0tIGEvdGVsZXBob255L2phdmEvYW5kcm9pZC90ZWxlcGhvbnkvU2VydmljZVN0YXRlLmphdmEKKysrIGIvdGVsZXBob255L2phdmEvYW5kcm9pZC90ZWxlcGhvbnkvU2VydmljZVN0YXRlLmphdmEKQEAgLTU3LDcgKzU3LDcgQEAKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTVEFURV9FTUVSR0VOQ1lfT05MWSA9IDI7CiAKICAgICAvKioKLSAgICAgKiBSYWRpbyBvZiB0ZWxlcGhvbnkgaXMgZXhwbGljdGx5IHBvd2VyZWQgb2ZmLgorICAgICAqIFJhZGlvIG9mIHRlbGVwaG9ueSBpcyBleHBsaWNpdGx5IHBvd2VyZWQgb2ZmLgogICAgICAqLwogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNUQVRFX1BPV0VSX09GRiA9IDM7CiAKQEAgLTg5LDYgKzg5LDggQEAKICAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBSQURJT19URUNITk9MT0dZX0hTVVBBID0gMTA7CiAgICAgLyoqIEBoaWRlICovCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUkFESU9fVEVDSE5PTE9HWV9IU1BBID0gMTE7CisgICAgLyoqIEBoaWRlICovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUkFESU9fVEVDSE5PTE9HWV9FVkRPX0IgPSAxMjsKIAogICAgIC8qKgogICAgICAqIEF2YWlsYWJsZSByZWdpc3RyYXRpb24gc3RhdGVzIGZvciBHU00sIFVNVFMgYW5kIENETUEuCkBAIC0yMTgsNyArMjIwLDggQEAKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgcHVibGljIHN0YXRpYyBmaW5hbCBQYXJjZWxhYmxlLkNyZWF0b3I8U2VydmljZVN0YXRlPiBDUkVBVE9SID0gbmV3IFBhcmNlbGFibGUuQ3JlYXRvcigpIHsKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIFBhcmNlbGFibGUuQ3JlYXRvcjxTZXJ2aWNlU3RhdGU+IENSRUFUT1IgPQorICAgICAgICAgICAgbmV3IFBhcmNlbGFibGUuQ3JlYXRvcjxTZXJ2aWNlU3RhdGU+KCkgewogICAgICAgICBwdWJsaWMgU2VydmljZVN0YXRlIGNyZWF0ZUZyb21QYXJjZWwoUGFyY2VsIGluKSB7CiAgICAgICAgICAgICByZXR1cm4gbmV3IFNlcnZpY2VTdGF0ZShpbik7CiAgICAgICAgIH0KQEAgLTIyOSw3ICsyMzIsNyBAQAogICAgIH07CiAKICAgICAvKioKLSAgICAgKiBHZXQgY3VycmVudCBzZXJ2Y2llIHN0YXRlIG9mIHBob25lCisgICAgICogR2V0IGN1cnJlbnQgc2VydmljZSBzdGF0ZSBvZiBwaG9uZQogICAgICAqCiAgICAgICogQHNlZSAjU1RBVEVfSU5fU0VSVklDRQogICAgICAqIEBzZWUgI1NUQVRFX09VVF9PRl9TRVJWSUNFCkBAIC0yODgsMTAgKzI5MSwxMCBAQAogICAgIH0KIAogICAgIC8qKgotICAgICAqIEdldCBjdXJyZW50IHJlZ2lzdGVyZWQgb3BlcmF0b3IgbmFtZSBpbiBsb25nIGFscGhhbnVtZXJpYyBmb3JtYXQKKyAgICAgKiBHZXQgY3VycmVudCByZWdpc3RlcmVkIG9wZXJhdG9yIG5hbWUgaW4gbG9uZyBhbHBoYW51bWVyaWMgZm9ybWF0LgogICAgICAqCi0gICAgICogSW4gR1NNL1VNVFMsIGxvbmcgZm9ybWF0IGNhbiBiZSB1cHRvIDE2IGNoYXJhY3RlcnMgbG9uZwotICAgICAqIEluIENETUEsIHJldHVybnMgdGhlIEVSSSB0ZXh0LCBpZiBzZXQsIG90aGVyd2lzZSB0aGUgT05TCisgICAgICogSW4gR1NNL1VNVFMsIGxvbmcgZm9ybWF0IGNhbiBiZSB1cCB0byAxNiBjaGFyYWN0ZXJzIGxvbmcuCisgICAgICogSW4gQ0RNQSwgcmV0dXJucyB0aGUgRVJJIHRleHQsIGlmIHNldC4gT3RoZXJ3aXNlLCByZXR1cm5zIHRoZSBPTlMuCiAgICAgICoKICAgICAgKiBAcmV0dXJuIGxvbmcgbmFtZSBvZiBvcGVyYXRvciwgbnVsbCBpZiB1bnJlZ2lzdGVyZWQgb3IgdW5rbm93bgogICAgICAqLwpAQCAtMzAwLDkgKzMwMyw5IEBACiAgICAgfQogCiAgICAgLyoqCi0gICAgICogR2V0IGN1cnJlbnQgcmVnaXN0ZXJlZCBvcGVyYXRvciBuYW1lIGluIHNob3J0IGxwaGFudW1lcmljIGZvcm1hdAorICAgICAqIEdldCBjdXJyZW50IHJlZ2lzdGVyZWQgb3BlcmF0b3IgbmFtZSBpbiBzaG9ydCBhbHBoYW51bWVyaWMgZm9ybWF0LgogICAgICAqCi0gICAgICogSW4gR1NNL1VNU1QsIHNob3J0IGZvcm1hdCBjYW4gYmUgdXB0byA4IGNoYXJhY3RlcnMgbG9uZworICAgICAqIEluIEdTTS9VTVRTLCBzaG9ydCBmb3JtYXQgY2FuIGJlIHVwIHRvIDggY2hhcmFjdGVycyBsb25nLgogICAgICAqCiAgICAgICogQHJldHVybiBzaG9ydCBuYW1lIG9mIG9wZXJhdG9yLCBudWxsIGlmIHVucmVnaXN0ZXJlZCBvciB1bmtub3duCiAgICAgICovCkBAIC0zMTEsMjEgKzMxNCwyMyBAQAogICAgIH0KIAogICAgIC8qKgotICAgICAqIEdldCBjdXJyZW50IHJlZ2lzdGVyZWQgb3BlcmF0b3IgbnVtZXJpYyBpZAorICAgICAqIEdldCBjdXJyZW50IHJlZ2lzdGVyZWQgb3BlcmF0b3IgbnVtZXJpYyBpZC4KICAgICAgKgogICAgICAqIEluIEdTTS9VTVRTLCBudW1lcmljIGZvcm1hdCBpcyAzIGRpZ2l0IGNvdW50cnkgY29kZSBwbHVzIDIgb3IgMyBkaWdpdAotICAgICAqIG5ldHdvcmsgY29kZQotICAgICAqCi0gICAgICogVGhlIGNvdW50cnkgY29kZSBjYW4gYmUgZGVjb2RlZCB1c2luZyBNY2NUYWJsZS5jb3VudHJ5Q29kZUZvck1jYygpCisgICAgICogbmV0d29yayBjb2RlLgogICAgICAqCiAgICAgICogQHJldHVybiBudW1lcmljIGZvcm1hdCBvZiBvcGVyYXRvciwgbnVsbCBpZiB1bnJlZ2lzdGVyZWQgb3IgdW5rbm93bgogICAgICAqLworICAgIC8qCisgICAgICogVGhlIGNvdW50cnkgY29kZSBjYW4gYmUgZGVjb2RlZCB1c2luZworICAgICAqIHtAbGluayBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuTWNjVGFibGUjY291bnRyeUNvZGVGb3JNY2MoaW50KX0uCisgICAgICovCiAgICAgcHVibGljIFN0cmluZyBnZXRPcGVyYXRvck51bWVyaWMoKSB7CiAgICAgICAgIHJldHVybiBtT3BlcmF0b3JOdW1lcmljOwogICAgIH0KIAogICAgIC8qKgotICAgICAqIEdldCBjdXJyZW50IG5ldHdvcmsgc2VsZWN0aW9uIG1vZGUKKyAgICAgKiBHZXQgY3VycmVudCBuZXR3b3JrIHNlbGVjdGlvbiBtb2RlLgogICAgICAqCiAgICAgICogQHJldHVybiB0cnVlIGlmIG1hbnVhbCBtb2RlLCBmYWxzZSBpZiBhdXRvbWF0aWMgbW9kZQogICAgICAqLwpAQCAtMzc5LDcgKzM4NCw2IEBACiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKICAgICAgICAgU3RyaW5nIHJhZGlvVGVjaG5vbG9neSA9IG5ldyBTdHJpbmcoIkVycm9yIGluIHJhZGlvVGVjaG5vbG9neSIpOwotCiAgICAgICAgIHN3aXRjaCh0aGlzLm1SYWRpb1RlY2hub2xvZ3kpIHsKICAgICAgICAgY2FzZSAwOgogICAgICAgICAgICAgcmFkaW9UZWNobm9sb2d5ID0gIlVua25vd24iOwpAQCAtNDE3LDYgKzQyMSw5IEBACiAgICAgICAgIGNhc2UgMTE6CiAgICAgICAgICAgICByYWRpb1RlY2hub2xvZ3kgPSAiSFNQQSI7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAxMjoKKyAgICAgICAgICAgIHJhZGlvVGVjaG5vbG9neSA9ICJFdkRvIHJldi4gQiI7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIExvZy53KExPR19UQUcsICJtUmFkaW9UZWNobm9sb2d5IHZhcmlhYmxlIG91dCBvZiByYW5nZS4iKTsKICAgICAgICAgYnJlYWs7CkBAIC00NTQsNyArNDYxLDcgQEAKICAgICAgICAgbUlzRW1lcmdlbmN5T25seSA9IGZhbHNlOwogICAgIH0KIAotICAgIC8vIFRPRE8gLSBjYW4ndCB0aGlzIGJlIGNvbWJpbmVkIHdpdGggdGhlIGFib3ZlIGZ1bmMuLgorICAgIC8vIFRPRE8gLSBjYW4ndCB0aGlzIGJlIGNvbWJpbmVkIHdpdGggdGhlIGFib3ZlIG1ldGhvZD8KICAgICBwdWJsaWMgdm9pZCBzZXRTdGF0ZU9mZigpIHsKICAgICAgICAgbVN0YXRlID0gU1RBVEVfUE9XRVJfT0ZGOwogICAgICAgICBtUm9hbWluZyA9IGZhbHNlOwpAQCAtNTI0LDggKzUzMSw4IEBACiAgICAgfQogCiAgICAgLyoqCi0gICAgICogSW4gQ0RNQSBtT3BlcmF0b3JBbHBoYUxvbmcgY2FuIGJlIHNldCBmcm9tIHRoZSBFUkkKLSAgICAgKiB0ZXh0LCB0aGlzIGlzIGRvbmUgZnJvbSB0aGUgQ0RNQVBob25lIGFuZCBub3QgZnJvbSB0aGUgQ2RtYVNlcnZpY2VTdGF0ZVRyYWNrZXIKKyAgICAgKiBJbiBDRE1BLCBtT3BlcmF0b3JBbHBoYUxvbmcgY2FuIGJlIHNldCBmcm9tIHRoZSBFUkkgdGV4dC4KKyAgICAgKiBUaGlzIGlzIGRvbmUgZnJvbSB0aGUgQ0RNQVBob25lIGFuZCBub3QgZnJvbSB0aGUgQ2RtYVNlcnZpY2VTdGF0ZVRyYWNrZXIuCiAgICAgICoKICAgICAgKiBAaGlkZQogICAgICAqLwpAQCAtNTM4LDcgKzU0NSw3IEBACiAgICAgfQogCiAgICAgLyoqCi0gICAgICogVGVzdCB3aGV0aGVyIHR3byBvYmplY3RzIGhvbGQgdGhlIHNhbWUgZGF0YSB2YWx1ZXMgb3IgYm90aCBhcmUgbnVsbAorICAgICAqIFRlc3Qgd2hldGhlciB0d28gb2JqZWN0cyBob2xkIHRoZSBzYW1lIGRhdGEgdmFsdWVzIG9yIGJvdGggYXJlIG51bGwuCiAgICAgICoKICAgICAgKiBAcGFyYW0gYSBmaXJzdCBvYmoKICAgICAgKiBAcGFyYW0gYiBzZWNvbmQgb2JqCkBAIC01NDksNyArNTU2LDcgQEAKICAgICB9CiAKICAgICAvKioKLSAgICAgKiBTZXQgU2VydmljZVN0YXRlIGJhc2VkIG9uIGludGVudCBub3RpZmllciBtYXAKKyAgICAgKiBTZXQgU2VydmljZVN0YXRlIGJhc2VkIG9uIGludGVudCBub3RpZmllciBtYXAuCiAgICAgICoKICAgICAgKiBAcGFyYW0gbSBpbnRlbnQgbm90aWZpZXIgbWFwCiAgICAgICogQGhpZGUKQEAgLTU3MSw3ICs1NzgsNyBAQAogICAgIH0KIAogICAgIC8qKgotICAgICAqIFNldCBpbnRlbnQgbm90aWZpZXIgQnVuZGxlIGJhc2VkIG9uIHNlcnZpY2Ugc3RhdGUKKyAgICAgKiBTZXQgaW50ZW50IG5vdGlmaWVyIEJ1bmRsZSBiYXNlZCBvbiBzZXJ2aWNlIHN0YXRlLgogICAgICAqCiAgICAgICogQHBhcmFtIG0gaW50ZW50IG5vdGlmaWVyIEJ1bmRsZQogICAgICAqIEBoaWRlCmRpZmYgLS1naXQgYS90ZWxlcGhvbnkvamF2YS9hbmRyb2lkL3RlbGVwaG9ueS9TbXNNYW5hZ2VyLmphdmEgYi90ZWxlcGhvbnkvamF2YS9hbmRyb2lkL3RlbGVwaG9ueS9TbXNNYW5hZ2VyLmphdmEKaW5kZXggMzEyMjcyMi4uZjVlOTc1MSAxMDA2NDQKLS0tIGEvdGVsZXBob255L2phdmEvYW5kcm9pZC90ZWxlcGhvbnkvU21zTWFuYWdlci5qYXZhCisrKyBiL3RlbGVwaG9ueS9qYXZhL2FuZHJvaWQvdGVsZXBob255L1Ntc01hbmFnZXIuamF2YQpAQCAtMzk4LDQgKzM5OCw2IEBACiAgICAgc3RhdGljIHB1YmxpYyBmaW5hbCBpbnQgUkVTVUxUX0VSUk9SX05PX1NFUlZJQ0UgICAgICAgICA9IDQ7CiAgICAgLyoqIEZhaWxlZCBiZWNhdXNlIHdlIHJlYWNoZWQgdGhlIHNlbmRpbmcgcXVldWUgbGltaXQuICB7QGhpZGV9ICovCiAgICAgc3RhdGljIHB1YmxpYyBmaW5hbCBpbnQgUkVTVUxUX0VSUk9SX0xJTUlUX0VYQ0VFREVEICAgICA9IDU7CisgICAgLyoqIEZhaWxlZCBiZWNhdXNlIEZETiBpcyBlbmFibGVkLiB7QGhpZGV9ICovCisgICAgc3RhdGljIHB1YmxpYyBmaW5hbCBpbnQgUkVTVUxUX0VSUk9SX0ZETl9DSEVDS19GQUlMVVJFICA9IDY7CiB9CmRpZmYgLS1naXQgYS90ZWxlcGhvbnkvamF2YS9hbmRyb2lkL3RlbGVwaG9ueS9UZWxlcGhvbnlNYW5hZ2VyLmphdmEgYi90ZWxlcGhvbnkvamF2YS9hbmRyb2lkL3RlbGVwaG9ueS9UZWxlcGhvbnlNYW5hZ2VyLmphdmEKaW5kZXggZjAxOGQxMDcuLmFiNjMwMTcgMTAwNjQ0Ci0tLSBhL3RlbGVwaG9ueS9qYXZhL2FuZHJvaWQvdGVsZXBob255L1RlbGVwaG9ueU1hbmFnZXIuamF2YQorKysgYi90ZWxlcGhvbnkvamF2YS9hbmRyb2lkL3RlbGVwaG9ueS9UZWxlcGhvbnlNYW5hZ2VyLmphdmEKQEAgLTM5MSw2ICszOTEsOSBAQAogICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE5FVFdPUktfVFlQRV9IU1BBID0gMTA7CiAgICAgLyoqIEN1cnJlbnQgbmV0d29yayBpcyBpRGVuICovCiAgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTkVUV09SS19UWVBFX0lERU4gPSAxMTsKKyAgICAvKiogQ3VycmVudCBuZXR3b3JrIGlzIEVWRE8gcmV2aXNpb24gQiovCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTkVUV09SS19UWVBFX0VWRE9fQiA9IDEyOworCiAKICAgICAvKioKICAgICAgKiBSZXR1cm5zIGEgY29uc3RhbnQgaW5kaWNhdGluZyB0aGUgcmFkaW8gdGVjaG5vbG9neSAobmV0d29yayB0eXBlKQpAQCAtNDA3LDYgKzQxMCw3IEBACiAgICAgICogQHNlZSAjTkVUV09SS19UWVBFX0NETUEKICAgICAgKiBAc2VlICNORVRXT1JLX1RZUEVfRVZET18wCiAgICAgICogQHNlZSAjTkVUV09SS19UWVBFX0VWRE9fQQorICAgICAqIEBzZWUgI05FVFdPUktfVFlQRV9FVkRPX0IKICAgICAgKiBAc2VlICNORVRXT1JLX1RZUEVfMXhSVFQKICAgICAgKi8KICAgICBwdWJsaWMgaW50IGdldE5ldHdvcmtUeXBlKCkgewpAQCAtNDU0LDYgKzQ1OCw4IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuICJDRE1BIC0gRXZEbyByZXYuIDAiOwogICAgICAgICAgICAgY2FzZSBORVRXT1JLX1RZUEVfRVZET19BOgogICAgICAgICAgICAgICAgIHJldHVybiAiQ0RNQSAtIEV2RG8gcmV2LiBBIjsKKyAgICAgICAgICAgIGNhc2UgTkVUV09SS19UWVBFX0VWRE9fQjoKKyAgICAgICAgICAgICAgICByZXR1cm4gIkNETUEgLSBFdkRvIHJldi4gQiI7CiAgICAgICAgICAgICBjYXNlIE5FVFdPUktfVFlQRV8xeFJUVDoKICAgICAgICAgICAgICAgICByZXR1cm4gIkNETUEgLSAxeFJUVCI7CiAgICAgICAgICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvdGVsZXBob255L2phdmEvYW5kcm9pZC90ZWxlcGhvbnkvZ3NtL1Ntc01hbmFnZXIuamF2YSBiL3RlbGVwaG9ueS9qYXZhL2FuZHJvaWQvdGVsZXBob255L2dzbS9TbXNNYW5hZ2VyLmphdmEKaW5kZXggMjQxYzQ4NS4uM2I3NTI5OCAxMDA2NDQKLS0tIGEvdGVsZXBob255L2phdmEvYW5kcm9pZC90ZWxlcGhvbnkvZ3NtL1Ntc01hbmFnZXIuamF2YQorKysgYi90ZWxlcGhvbnkvamF2YS9hbmRyb2lkL3RlbGVwaG9ueS9nc20vU21zTWFuYWdlci5qYXZhCkBAIC01Niw3ICs1Niw3IEBACiAgICAgICogIHRoZSBjdXJyZW50IGRlZmF1bHQgU01TQwogICAgICAqIEBwYXJhbSB0ZXh0IHRoZSBib2R5IG9mIHRoZSBtZXNzYWdlIHRvIHNlbmQKICAgICAgKiBAcGFyYW0gc2VudEludGVudCBpZiBub3QgTlVMTCB0aGlzIDxjb2RlPlBlbmRpbmdJbnRlbnQ8L2NvZGU+IGlzCi0gICAgICogIGJyb2FkY2FzdCB3aGVuIHRoZSBtZXNzYWdlIGlzIHN1Y2Vzc2Z1bGx5IHNlbnQsIG9yIGZhaWxlZC4KKyAgICAgKiAgYnJvYWRjYXN0IHdoZW4gdGhlIG1lc3NhZ2UgaXMgc3VjY2Vzc2Z1bGx5IHNlbnQsIG9yIGZhaWxlZC4KICAgICAgKiAgVGhlIHJlc3VsdCBjb2RlIHdpbGwgYmUgPGNvZGU+QWN0aXZpdHkuUkVTVUxUX09LPGNvZGU+IGZvciBzdWNjZXNzLAogICAgICAqICBvciBvbmUgb2YgdGhlc2UgZXJyb3JzOgogICAgICAqICA8Y29kZT5SRVNVTFRfRVJST1JfR0VORVJJQ19GQUlMVVJFPC9jb2RlPgpkaWZmIC0tZ2l0IGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L0FkblJlY29yZC5qYXZhIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L0FkblJlY29yZC5qYXZhCmluZGV4IDA4OTZiYTYuLjFiZjJkM2MgMTAwNjQ0Ci0tLSBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9BZG5SZWNvcmQuamF2YQorKysgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvQWRuUmVjb3JkLmphdmEKQEAgLTE5LDEwICsxOSw5IEBACiBpbXBvcnQgYW5kcm9pZC5vcy5QYXJjZWw7CiBpbXBvcnQgYW5kcm9pZC5vcy5QYXJjZWxhYmxlOwogaW1wb3J0IGFuZHJvaWQudGVsZXBob255LlBob25lTnVtYmVyVXRpbHM7CitpbXBvcnQgYW5kcm9pZC50ZXh0LlRleHRVdGlsczsKIGltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOwogCi1pbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LkdzbUFscGhhYmV0OwotCiBpbXBvcnQgamF2YS51dGlsLkFycmF5czsKIAogCkBAIC0zOCw4ICszNyw4IEBACiAKICAgICAvLyoqKioqIEluc3RhbmNlIFZhcmlhYmxlcwogCi0gICAgU3RyaW5nIGFscGhhVGFnID0gIiI7Ci0gICAgU3RyaW5nIG51bWJlciA9ICIiOworICAgIFN0cmluZyBhbHBoYVRhZyA9IG51bGw7CisgICAgU3RyaW5nIG51bWJlciA9IG51bGw7CiAgICAgU3RyaW5nW10gZW1haWxzOwogICAgIGludCBleHRSZWNvcmQgPSAweGZmOwogICAgIGludCBlZmlkOyAgICAgICAgICAgICAgICAgICAvLyBvciAwIGlmIG5vbmUKQEAgLTYzLDggKzYyLDggQEAKICAgICAvLyBBRE4gb2Zmc2V0CiAgICAgc3RhdGljIGZpbmFsIGludCBBRE5fQkNEX05VTUJFUl9MRU5HVEggPSAwOwogICAgIHN0YXRpYyBmaW5hbCBpbnQgQUROX1RPTl9BTkRfTlBJID0gMTsKLSAgICBzdGF0aWMgZmluYWwgaW50IEFETl9EQUlMSU5HX05VTUJFUl9TVEFSVCA9IDI7Ci0gICAgc3RhdGljIGZpbmFsIGludCBBRE5fREFJTElOR19OVU1CRVJfRU5EID0gMTE7CisgICAgc3RhdGljIGZpbmFsIGludCBBRE5fRElBTElOR19OVU1CRVJfU1RBUlQgPSAyOworICAgIHN0YXRpYyBmaW5hbCBpbnQgQUROX0RJQUxJTkdfTlVNQkVSX0VORCA9IDExOwogICAgIHN0YXRpYyBmaW5hbCBpbnQgQUROX0NBUEFCSUxJVFlfSUQgPSAxMjsKICAgICBzdGF0aWMgZmluYWwgaW50IEFETl9FWFRFTlNJT05fSUQgPSAxMzsKIApAQCAtMTUyLDE3ICsxNTEsMzEgQEAKICAgICB9CiAKICAgICBwdWJsaWMgYm9vbGVhbiBpc0VtcHR5KCkgewotICAgICAgICByZXR1cm4gYWxwaGFUYWcuZXF1YWxzKCIiKSAmJiBudW1iZXIuZXF1YWxzKCIiKSAmJiBlbWFpbHMgPT0gbnVsbDsKKyAgICAgICAgcmV0dXJuIFRleHRVdGlscy5pc0VtcHR5KGFscGhhVGFnKSAmJiBUZXh0VXRpbHMuaXNFbXB0eShudW1iZXIpICYmIGVtYWlscyA9PSBudWxsOwogICAgIH0KIAogICAgIHB1YmxpYyBib29sZWFuIGhhc0V4dGVuZGVkUmVjb3JkKCkgewogICAgICAgICByZXR1cm4gZXh0UmVjb3JkICE9IDAgJiYgZXh0UmVjb3JkICE9IDB4ZmY7CiAgICAgfQogCisgICAgLyoqIEhlbHBlciBmdW5jdGlvbiBmb3Ige0BsaW5rICNpc0VxdWFsfS4gKi8KKyAgICBwcml2YXRlIHN0YXRpYyBib29sZWFuIHN0cmluZ0NvbXBhcmVOdWxsRXF1YWxzRW1wdHkoU3RyaW5nIHMxLCBTdHJpbmcgczIpIHsKKyAgICAgICAgaWYgKHMxID09IHMyKSB7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBpZiAoczEgPT0gbnVsbCkgeworICAgICAgICAgICAgczEgPSAiIjsKKyAgICAgICAgfQorICAgICAgICBpZiAoczIgPT0gbnVsbCkgeworICAgICAgICAgICAgczIgPSAiIjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gKHMxLmVxdWFscyhzMikpOworICAgIH0KKwogICAgIHB1YmxpYyBib29sZWFuIGlzRXF1YWwoQWRuUmVjb3JkIGFkbikgewotICAgICAgICByZXR1cm4gKCBhbHBoYVRhZy5lcXVhbHMoYWRuLmdldEFscGhhVGFnKCkpICYmCi0gICAgICAgICAgICAgICAgbnVtYmVyLmVxdWFscyhhZG4uZ2V0TnVtYmVyKCkpICYmCi0gICAgICAgICAgICAgICAgQXJyYXlzLmVxdWFscyhlbWFpbHMsIGFkbi5nZXRFbWFpbHMoKSkpOworICAgICAgICByZXR1cm4gKCBzdHJpbmdDb21wYXJlTnVsbEVxdWFsc0VtcHR5KGFscGhhVGFnLCBhZG4uYWxwaGFUYWcpICYmCisgICAgICAgICAgICAgICAgc3RyaW5nQ29tcGFyZU51bGxFcXVhbHNFbXB0eShudW1iZXIsIGFkbi5udW1iZXIpICYmCisgICAgICAgICAgICAgICAgQXJyYXlzLmVxdWFscyhlbWFpbHMsIGFkbi5lbWFpbHMpKTsKICAgICB9CiAgICAgLy8qKioqKiBQYXJjZWxhYmxlIEltcGxlbWVudGF0aW9uCiAKQEAgLTE4NCwzNiArMTk3LDMzIEBACiAgICAgICoKICAgICAgKiBAcGFyYW0gcmVjb3JkU2l6ZSBpcyB0aGUgc2l6ZSBYIG9mIEVGIHJlY29yZAogICAgICAqIEByZXR1cm4gaGV4IGJ5dGVbcmVjb3JkU2l6ZV0gdG8gYmUgd3JpdHRlbiB0byBFRiByZWNvcmQKLSAgICAgKiAgICAgICAgICByZXR1cm4gbnVsbGwgZm9yIHdyb25nIGZvcm1hdCBvZiBkaWFsaW5nIG51Ym1lciBvciB0YWcKKyAgICAgKiAgICAgICAgICByZXR1cm4gbnVsbCBmb3Igd3JvbmcgZm9ybWF0IG9mIGRpYWxpbmcgbnVtYmVyIG9yIHRhZwogICAgICAqLwogICAgIHB1YmxpYyBieXRlW10gYnVpbGRBZG5TdHJpbmcoaW50IHJlY29yZFNpemUpIHsKICAgICAgICAgYnl0ZVtdIGJjZE51bWJlcjsKICAgICAgICAgYnl0ZVtdIGJ5dGVUYWc7Ci0gICAgICAgIGJ5dGVbXSBhZG5TdHJpbmcgPSBudWxsOworICAgICAgICBieXRlW10gYWRuU3RyaW5nOwogICAgICAgICBpbnQgZm9vdGVyT2Zmc2V0ID0gcmVjb3JkU2l6ZSAtIEZPT1RFUl9TSVpFX0JZVEVTOwogCi0gICAgICAgIGlmIChudW1iZXIgPT0gbnVsbCB8fCBudW1iZXIuZXF1YWxzKCIiKSB8fAotICAgICAgICAgICAgICAgIGFscGhhVGFnID09IG51bGwgfHwgYWxwaGFUYWcuZXF1YWxzKCIiKSkgeworICAgICAgICAvLyBjcmVhdGUgYW4gZW1wdHkgcmVjb3JkCisgICAgICAgIGFkblN0cmluZyA9IG5ldyBieXRlW3JlY29yZFNpemVdOworICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJlY29yZFNpemU7IGkrKykgeworICAgICAgICAgICAgYWRuU3RyaW5nW2ldID0gKGJ5dGUpIDB4RkY7CisgICAgICAgIH0KIAotICAgICAgICAgICAgTG9nLncoTE9HX1RBRywgIltidWlsZEFkblN0cmluZ10gRW1wdHkgYWxwaGEgdGFnIG9yIG51bWJlciIpOwotICAgICAgICAgICAgYWRuU3RyaW5nID0gbmV3IGJ5dGVbcmVjb3JkU2l6ZV07Ci0gICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IHJlY29yZFNpemU7IGkrKykgewotICAgICAgICAgICAgICAgIGFkblN0cmluZ1tpXSA9IChieXRlKSAweEZGOwotICAgICAgICAgICAgfQorICAgICAgICBpZiAoVGV4dFV0aWxzLmlzRW1wdHkobnVtYmVyKSkgeworICAgICAgICAgICAgTG9nLncoTE9HX1RBRywgIltidWlsZEFkblN0cmluZ10gRW1wdHkgZGlhbGluZyBudW1iZXIiKTsKKyAgICAgICAgICAgIHJldHVybiBhZG5TdHJpbmc7ICAgLy8gcmV0dXJuIHRoZSBlbXB0eSByZWNvcmQgKGZvciBkZWxldGUpCiAgICAgICAgIH0gZWxzZSBpZiAobnVtYmVyLmxlbmd0aCgpCi0gICAgICAgICAgICAgICAgPiAoQUROX0RBSUxJTkdfTlVNQkVSX0VORCAtIEFETl9EQUlMSU5HX05VTUJFUl9TVEFSVCArIDEpICogMikgeworICAgICAgICAgICAgICAgID4gKEFETl9ESUFMSU5HX05VTUJFUl9FTkQgLSBBRE5fRElBTElOR19OVU1CRVJfU1RBUlQgKyAxKSAqIDIpIHsKICAgICAgICAgICAgIExvZy53KExPR19UQUcsCi0gICAgICAgICAgICAgICAgICAgICJbYnVpbGRBZG5TdHJpbmddIE1heCBsZW5ndGggb2YgZGFpbGluZyBudW1iZXIgaXMgMjAiKTsKLSAgICAgICAgfSBlbHNlIGlmIChhbHBoYVRhZy5sZW5ndGgoKSA+IGZvb3Rlck9mZnNldCkgeworICAgICAgICAgICAgICAgICAgICAiW2J1aWxkQWRuU3RyaW5nXSBNYXggbGVuZ3RoIG9mIGRpYWxpbmcgbnVtYmVyIGlzIDIwIik7CisgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfSBlbHNlIGlmIChhbHBoYVRhZyAhPSBudWxsICYmIGFscGhhVGFnLmxlbmd0aCgpID4gZm9vdGVyT2Zmc2V0KSB7CiAgICAgICAgICAgICBMb2cudyhMT0dfVEFHLAogICAgICAgICAgICAgICAgICAgICAiW2J1aWxkQWRuU3RyaW5nXSBNYXggbGVuZ3RoIG9mIHRhZyBpcyAiICsgZm9vdGVyT2Zmc2V0KTsKKyAgICAgICAgICAgIHJldHVybiBudWxsOwogICAgICAgICB9IGVsc2UgewotCi0gICAgICAgICAgICBhZG5TdHJpbmcgPSBuZXcgYnl0ZVtyZWNvcmRTaXplXTsKLSAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgcmVjb3JkU2l6ZTsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgYWRuU3RyaW5nW2ldID0gKGJ5dGUpIDB4RkY7Ci0gICAgICAgICAgICB9Ci0KICAgICAgICAgICAgIGJjZE51bWJlciA9IFBob25lTnVtYmVyVXRpbHMubnVtYmVyVG9DYWxsZWRQYXJ0eUJDRChudW1iZXIpOwogCiAgICAgICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KGJjZE51bWJlciwgMCwgYWRuU3RyaW5nLApAQCAtMjIyLDE2ICsyMzIsMTcgQEAKICAgICAgICAgICAgIGFkblN0cmluZ1tmb290ZXJPZmZzZXQgKyBBRE5fQkNEX05VTUJFUl9MRU5HVEhdCiAgICAgICAgICAgICAgICAgICAgID0gKGJ5dGUpIChiY2ROdW1iZXIubGVuZ3RoKTsKICAgICAgICAgICAgIGFkblN0cmluZ1tmb290ZXJPZmZzZXQgKyBBRE5fQ0FQQUJJTElUWV9JRF0KLSAgICAgICAgICAgICAgICAgICAgPSAoYnl0ZSkgMHhGRjsgLy8gQ2FwYWNpbGl0eSBJZAorICAgICAgICAgICAgICAgICAgICA9IChieXRlKSAweEZGOyAvLyBDYXBhYmlsaXR5IElkCiAgICAgICAgICAgICBhZG5TdHJpbmdbZm9vdGVyT2Zmc2V0ICsgQUROX0VYVEVOU0lPTl9JRF0KICAgICAgICAgICAgICAgICAgICAgPSAoYnl0ZSkgMHhGRjsgLy8gRXh0ZW5zaW9uIFJlY29yZCBJZAogCi0gICAgICAgICAgICBieXRlVGFnID0gR3NtQWxwaGFiZXQuc3RyaW5nVG9Hc204Qml0UGFja2VkKGFscGhhVGFnKTsKLSAgICAgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoYnl0ZVRhZywgMCwgYWRuU3RyaW5nLCAwLCBieXRlVGFnLmxlbmd0aCk7CisgICAgICAgICAgICBpZiAoIVRleHRVdGlscy5pc0VtcHR5KGFscGhhVGFnKSkgeworICAgICAgICAgICAgICAgIGJ5dGVUYWcgPSBHc21BbHBoYWJldC5zdHJpbmdUb0dzbThCaXRQYWNrZWQoYWxwaGFUYWcpOworICAgICAgICAgICAgICAgIFN5c3RlbS5hcnJheWNvcHkoYnl0ZVRhZywgMCwgYWRuU3RyaW5nLCAwLCBieXRlVGFnLmxlbmd0aCk7CisgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIHJldHVybiBhZG5TdHJpbmc7CiAgICAgICAgIH0KLQotICAgICAgICByZXR1cm4gYWRuU3RyaW5nOwogICAgIH0KIAogICAgIC8qKgpkaWZmIC0tZ2l0IGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L0FkblJlY29yZExvYWRlci5qYXZhIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L0FkblJlY29yZExvYWRlci5qYXZhCmluZGV4IGNmYjVhYWEuLjU1YmRjMDYgMTAwNjQ0Ci0tLSBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9BZG5SZWNvcmRMb2FkZXIuamF2YQorKysgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvQWRuUmVjb3JkTG9hZGVyLmphdmEKQEAgLTEwNiw3ICsxMDYsNyBAQAogICAgICAqIEl0IHdpbGwgZ2V0IHRoZSByZWNvcmQgc2l6ZSBvZiBFRiByZWNvcmQgYW5kIGNvbXBvc2UgaGV4IGFkbiBhcnJheQogICAgICAqIHRoZW4gd3JpdGUgdGhlIGhleCBhcnJheSB0byBFRiByZWNvcmQKICAgICAgKgotICAgICAqIEBwYXJhbSBhZG4gaXMgc2V0IHdpdGggYWxwaGFUYWcgYW5kIHBob25lTnVibWVyCisgICAgICogQHBhcmFtIGFkbiBpcyBzZXQgd2l0aCBhbHBoYVRhZyBhbmQgcGhvbmUgbnVtYmVyCiAgICAgICogQHBhcmFtIGVmIEVGIGZpbGVpZAogICAgICAqIEBwYXJhbSBleHRlbnNpb25FRiBleHRlbnNpb24gRUYgZmlsZWlkCiAgICAgICogQHBhcmFtIHJlY29yZE51bWJlciAxLWJhc2VkIHJlY29yZCBpbmRleApAQCAtMTU5LDcgKzE1OSw3IEBACiAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBhZG4uYnVpbGRBZG5TdHJpbmcocmVjb3JkU2l6ZVswXSk7CiAKICAgICAgICAgICAgICAgICAgICAgaWYoZGF0YSA9PSBudWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigid29yb25nIEFETiBmb3JtYXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIndyb25nIEFETiBmb3JtYXQiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhci5leGNlcHRpb24pOwogICAgICAgICAgICAgICAgICAgICB9CiAKQEAgLTIxOCw3ICsyMTgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oImxvYWQgZmFpbGVkIiwgYXIuZXhjZXB0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgICAgIExvZy5kKExPR19UQUcsIkFETiBleHRlbnRpb24gRUY6IDB4IgorICAgICAgICAgICAgICAgICAgICBMb2cuZChMT0dfVEFHLCJBRE4gZXh0ZW5zaW9uIEVGOiAweCIKICAgICAgICAgICAgICAgICAgICAgICAgICsgSW50ZWdlci50b0hleFN0cmluZyhleHRlbnNpb25FRikKICAgICAgICAgICAgICAgICAgICAgICAgICsgIjoiICsgYWRuLmV4dFJlY29yZAogICAgICAgICAgICAgICAgICAgICAgICAgKyAiXG4iICsgSWNjVXRpbHMuYnl0ZXNUb0hleFN0cmluZyhkYXRhKSk7CmRpZmYgLS1naXQgYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvQ2FsbGVySW5mb0FzeW5jUXVlcnkuamF2YSBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9DYWxsZXJJbmZvQXN5bmNRdWVyeS5qYXZhCmluZGV4IDgwMmU3OWIuLjc5OGE1YTUgMTAwNjQ0Ci0tLSBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9DYWxsZXJJbmZvQXN5bmNRdWVyeS5qYXZhCisrKyBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9DYWxsZXJJbmZvQXN5bmNRdWVyeS5qYXZhCkBAIC0yODQsNyArMjg0LDcgQEAKICAgICAgKi8KICAgICBwdWJsaWMgc3RhdGljIENhbGxlckluZm9Bc3luY1F1ZXJ5IHN0YXJ0UXVlcnkoaW50IHRva2VuLCBDb250ZXh0IGNvbnRleHQsIFN0cmluZyBudW1iZXIsCiAgICAgICAgICAgICBPblF1ZXJ5Q29tcGxldGVMaXN0ZW5lciBsaXN0ZW5lciwgT2JqZWN0IGNvb2tpZSkgewotICAgICAgICAvL2NvbnRydWN0IHRoZSBVUkkgb2JqZWN0IGFuZCBzdGFydCBRdWVyeS4KKyAgICAgICAgLy9jb25zdHJ1Y3QgdGhlIFVSSSBvYmplY3QgYW5kIHN0YXJ0IFF1ZXJ5LgogICAgICAgICBVcmkgY29udGFjdFJlZiA9IFVyaS53aXRoQXBwZW5kZWRQYXRoKFBob25lTG9va3VwLkNPTlRFTlRfRklMVEVSX1VSSSwgVXJpLmVuY29kZShudW1iZXIpKTsKIAogICAgICAgICBDYWxsZXJJbmZvQXN5bmNRdWVyeSBjID0gbmV3IENhbGxlckluZm9Bc3luY1F1ZXJ5KCk7CmRpZmYgLS1naXQgYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvQ29tbWFuZEV4Y2VwdGlvbi5qYXZhIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L0NvbW1hbmRFeGNlcHRpb24uamF2YQppbmRleCBlYjBhNDQwLi45NGM1NDRlIDEwMDY0NAotLS0gYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvQ29tbWFuZEV4Y2VwdGlvbi5qYXZhCisrKyBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9Db21tYW5kRXhjZXB0aW9uLmphdmEKQEAgLTM3LDYgKzM3LDEwIEBACiAgICAgICAgIE9QX05PVF9BTExPV0VEX0RVUklOR19WT0lDRV9DQUxMLAogICAgICAgICBPUF9OT1RfQUxMT1dFRF9CRUZPUkVfUkVHX05XLAogICAgICAgICBTTVNfRkFJTF9SRVRSWSwKKyAgICAgICAgU0lNX0FCU0VOVCwKKyAgICAgICAgU1VCU0NSSVBUSU9OX05PVF9BVkFJTEFCTEUsCisgICAgICAgIE1PREVfTk9UX1NVUFBPUlRFRCwKKyAgICAgICAgRkROX0NIRUNLX0ZBSUxVUkUsCiAgICAgICAgIElMTEVHQUxfU0lNX09SX01FLAogICAgIH0KIApAQCAtNjksNiArNzMsMTQgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENvbW1hbmRFeGNlcHRpb24oRXJyb3IuT1BfTk9UX0FMTE9XRURfQkVGT1JFX1JFR19OVyk7CiAgICAgICAgICAgICBjYXNlIFJJTENvbnN0YW50cy5TTVNfU0VORF9GQUlMX1JFVFJZOgogICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ29tbWFuZEV4Y2VwdGlvbihFcnJvci5TTVNfRkFJTF9SRVRSWSk7CisgICAgICAgICAgICBjYXNlIFJJTENvbnN0YW50cy5TSU1fQUJTRU5UOgorICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ29tbWFuZEV4Y2VwdGlvbihFcnJvci5TSU1fQUJTRU5UKTsKKyAgICAgICAgICAgIGNhc2UgUklMQ29uc3RhbnRzLlNVQlNDUklQVElPTl9OT1RfQVZBSUxBQkxFOgorICAgICAgICAgICAgICAgIHJldHVybiBuZXcgQ29tbWFuZEV4Y2VwdGlvbihFcnJvci5TVUJTQ1JJUFRJT05fTk9UX0FWQUlMQUJMRSk7CisgICAgICAgICAgICBjYXNlIFJJTENvbnN0YW50cy5NT0RFX05PVF9TVVBQT1JURUQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDb21tYW5kRXhjZXB0aW9uKEVycm9yLk1PREVfTk9UX1NVUFBPUlRFRCk7CisgICAgICAgICAgICBjYXNlIFJJTENvbnN0YW50cy5GRE5fQ0hFQ0tfRkFJTFVSRToKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3IENvbW1hbmRFeGNlcHRpb24oRXJyb3IuRkROX0NIRUNLX0ZBSUxVUkUpOwogICAgICAgICAgICAgY2FzZSBSSUxDb25zdGFudHMuSUxMRUdBTF9TSU1fT1JfTUU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBDb21tYW5kRXhjZXB0aW9uKEVycm9yLklMTEVHQUxfU0lNX09SX01FKTsKICAgICAgICAgICAgIGRlZmF1bHQ6CmRpZmYgLS1naXQgYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvQ29tbWFuZHNJbnRlcmZhY2UuamF2YSBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9Db21tYW5kc0ludGVyZmFjZS5qYXZhCmluZGV4IGQ5MGMzMDUuLjhlMDNjNWEgMTAwNjQ0Ci0tLSBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9Db21tYW5kc0ludGVyZmFjZS5qYXZhCisrKyBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9Db21tYW5kc0ludGVyZmFjZS5qYXZhCkBAIC02NjQsNiArNjY0LDE5IEBACiAgICAgICogIHJldE1zZy5vYmogPSBBc3luY1Jlc3VsdCBhcgogICAgICAqICBhci5leGNlcHRpb24gY2FycmllcyBleGNlcHRpb24gb24gZmFpbHVyZQogICAgICAqICBhci51c2VyT2JqZWN0IGNvbnRhaW5zIHRoZSBvcmlnbmFsIHZhbHVlIG9mIHJlc3VsdC5vYmoKKyAgICAgKiAgYXIucmVzdWx0IGlzIG51bGwgb24gc3VjY2VzcyBhbmQgZmFpbHVyZQorICAgICAqCisgICAgICogQ0xJUl9ERUZBVUxUICAgICA9PSBvbiAidXNlIHN1YnNjcmlwdGlvbiBkZWZhdWx0IHZhbHVlIgorICAgICAqIENMSVJfU1VQUFJFU1NJT04gPT0gb24gIkNMSVIgc3VwcHJlc3Npb24iIChhbGxvdyBDTEkgcHJlc2VudGF0aW9uKQorICAgICAqIENMSVJfSU5WT0NBVElPTiAgPT0gb24gIkNMSVIgaW52b2NhdGlvbiIgKHJlc3RyaWN0IENMSSBwcmVzZW50YXRpb24pCisgICAgICovCisgICAgdm9pZCBkaWFsKFN0cmluZyBhZGRyZXNzLCBpbnQgY2xpck1vZGUsIFVVU0luZm8gdXVzSW5mbywgTWVzc2FnZSByZXN1bHQpOworCisgICAgLyoqCisgICAgICogIHJldHVybmVkIG1lc3NhZ2UKKyAgICAgKiAgcmV0TXNnLm9iaiA9IEFzeW5jUmVzdWx0IGFyCisgICAgICogIGFyLmV4Y2VwdGlvbiBjYXJyaWVzIGV4Y2VwdGlvbiBvbiBmYWlsdXJlCisgICAgICogIGFyLnVzZXJPYmplY3QgY29udGFpbnMgdGhlIG9yaWduYWwgdmFsdWUgb2YgcmVzdWx0Lm9iagogICAgICAqICBhci5yZXN1bHQgaXMgU3RyaW5nIGNvbnRhaW5pbmcgSU1TSSBvbiBzdWNjZXNzCiAgICAgICovCiAgICAgdm9pZCBnZXRJTVNJKE1lc3NhZ2UgcmVzdWx0KTsKZGlmZiAtLWdpdCBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9Db25uZWN0aW9uLmphdmEgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvQ29ubmVjdGlvbi5qYXZhCmluZGV4IDM3ZThhOTkuLjExZDBiMWIgMTAwNjQ0Ci0tLSBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9Db25uZWN0aW9uLmphdmEKKysrIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L0Nvbm5lY3Rpb24uamF2YQpAQCAtNDUsMTcgKzQ1LDE4IEBACiAgICAgICAgIFBPV0VSX09GRiwgICAgICAgICAgICAgICAgICAgICAgLyogcmFkaW8gaXMgdHVybmVkIG9mZiBleHBsaWNpdGx5ICovCiAgICAgICAgIE9VVF9PRl9TRVJWSUNFLCAgICAgICAgICAgICAgICAgLyogb3V0IG9mIHNlcnZpY2UgKi8KICAgICAgICAgSUNDX0VSUk9SLCAgICAgICAgICAgICAgICAgICAgICAvKiBObyBJQ0MsIElDQyBsb2NrZWQsIG9yIG90aGVyIElDQyBlcnJvciAqLwotICAgICAgICBDQUxMX0JBUlJFRCwgICAgICAgICAgICAgICAgICAgIC8qIGNhbGwgd2FzIGJsb2NrZWQgYnkgY2FsbCBiYXJycmluZyAqLworICAgICAgICBDQUxMX0JBUlJFRCwgICAgICAgICAgICAgICAgICAgIC8qIGNhbGwgd2FzIGJsb2NrZWQgYnkgY2FsbCBiYXJyaW5nICovCiAgICAgICAgIEZETl9CTE9DS0VELCAgICAgICAgICAgICAgICAgICAgLyogY2FsbCB3YXMgYmxvY2tlZCBieSBmaXhlZCBkaWFsIG51bWJlciAqLwogICAgICAgICBDU19SRVNUUklDVEVELCAgICAgICAgICAgICAgICAgIC8qIGNhbGwgd2FzIGJsb2NrZWQgYnkgcmVzdHJpY3RlZCBhbGwgdm9pY2UgYWNjZXNzICovCiAgICAgICAgIENTX1JFU1RSSUNURURfTk9STUFMLCAgICAgICAgICAgLyogY2FsbCB3YXMgYmxvY2tlZCBieSByZXN0cmljdGVkIG5vcm1hbCB2b2ljZSBhY2Nlc3MgKi8KICAgICAgICAgQ1NfUkVTVFJJQ1RFRF9FTUVSR0VOQ1ksICAgICAgICAvKiBjYWxsIHdhcyBibG9ja2VkIGJ5IHJlc3RyaWN0ZWQgZW1lcmdlbmN5IHZvaWNlIGFjY2VzcyAqLworICAgICAgICBVTk9CVEFJTkFCTEVfTlVNQkVSLCAgICAgICAgICAgIC8qIFVuYXNzaWduZWQgbnVtYmVyICgzR1BQIFRTIDI0LjAwOCB0YWJsZSAxMC41LjEyMykgKi8KICAgICAgICAgQ0RNQV9MT0NLRURfVU5USUxfUE9XRVJfQ1lDTEUsICAvKiBNUyBpcyBsb2NrZWQgdW50aWwgbmV4dCBwb3dlciBjeWNsZSAqLwogICAgICAgICBDRE1BX0RST1AsCiAgICAgICAgIENETUFfSU5URVJDRVBULCAgICAgICAgICAgICAgICAgLyogSU5URVJDRVBUIG9yZGVyIHJlY2VpdmVkLCBNUyBzdGF0ZSBpZGxlIGVudGVyZWQgKi8KICAgICAgICAgQ0RNQV9SRU9SREVSLCAgICAgICAgICAgICAgICAgICAvKiBNUyBoYXMgYmVlbiByZWRpcmVjdGVkLCBjYWxsIGlzIGNhbmNlbGxlZCAqLwogICAgICAgICBDRE1BX1NPX1JFSkVDVCwgICAgICAgICAgICAgICAgIC8qIHNlcnZpY2Ugb3B0aW9uIHJlamVjdGlvbiAqLwotICAgICAgICBDRE1BX1JFVFJZX09SREVSLCAgICAgICAgICAgICAgIC8qIHJlcXVlc2V0ZWQgc2VydmljZSBpcyByZWplY3RlZCwgcmV0cnkgZGVsYXkgaXMgc2V0ICovCisgICAgICAgIENETUFfUkVUUllfT1JERVIsICAgICAgICAgICAgICAgLyogcmVxdWVzdGVkIHNlcnZpY2UgaXMgcmVqZWN0ZWQsIHJldHJ5IGRlbGF5IGlzIHNldCAqLwogICAgICAgICBDRE1BX0FDQ0VTU19GQUlMVVJFLAogICAgICAgICBDRE1BX1BSRUVNUFRFRCwKICAgICAgICAgQ0RNQV9OT1RfRU1FUkdFTkNZLCAgICAgICAgICAgICAgLyogbm90IGFuIGVtZXJnZW5jeSBjYWxsICovCkBAIC02OCw4ICs2OSw4IEBACiAgICAgLyogSW5zdGFuY2UgTWV0aG9kcyAqLwogCiAgICAgLyoqCi0gICAgICogR2V0cyBhZGRyZXNzIChlLmcuLCBwaG9uZSBudW1iZXIpIGFzc29jaWF0ZWQgd2l0aCBjb25uZWN0aW9uCi0gICAgICogVE9ETzogZGlzdGluZ3Vpc2ggcmVhc29ucyBmb3IgdW5hdmFpbGFibGl0eQorICAgICAqIEdldHMgYWRkcmVzcyAoZS5nLiBwaG9uZSBudW1iZXIpIGFzc29jaWF0ZWQgd2l0aCBjb25uZWN0aW9uLgorICAgICAqIFRPRE86IGRpc3Rpbmd1aXNoIHJlYXNvbnMgZm9yIHVuYXZhaWxhYmlsaXR5CiAgICAgICoKICAgICAgKiBAcmV0dXJuIGFkZHJlc3Mgb3IgbnVsbCBpZiB1bmF2YWlsYWJsZQogICAgICAqLwpAQCAtNzcsNyArNzgsNyBAQAogICAgIHB1YmxpYyBhYnN0cmFjdCBTdHJpbmcgZ2V0QWRkcmVzcygpOwogCiAgICAgLyoqCi0gICAgICogR2V0cyBjZG1hIENOQVAgbmFtZSAgYXNzb2NpYXRlZCB3aXRoIGNvbm5lY3Rpb24KKyAgICAgKiBHZXRzIENETUEgQ05BUCBuYW1lIGFzc29jaWF0ZWQgd2l0aCBjb25uZWN0aW9uLgogICAgICAqIEByZXR1cm4gY25hcCBuYW1lIG9yIG51bGwgaWYgdW5hdmFpbGFibGUKICAgICAgKi8KICAgICBwdWJsaWMgU3RyaW5nIGdldENuYXBOYW1lKCkgewpAQCAtODUsMTUgKzg2LDE1IEBACiAgICAgfQogCiAgICAgLyoqCi0gICAgICogR2V0IG9yaWduYWwgZGlhbCBzdHJpbmcKLSAgICAgKiBAcmV0dXJuIG9yaWduYWwgZGlhbCBzdHJpbmcgb3IgbnVsbCBpZiB1bmF2YWlsYWJsZQorICAgICAqIEdldCBvcmlnaW5hbCBkaWFsIHN0cmluZy4KKyAgICAgKiBAcmV0dXJuIG9yaWdpbmFsIGRpYWwgc3RyaW5nIG9yIG51bGwgaWYgdW5hdmFpbGFibGUKICAgICAgKi8KICAgICBwdWJsaWMgU3RyaW5nIGdldE9yaWdEaWFsU3RyaW5nKCl7CiAgICAgICAgIHJldHVybiBudWxsOwogICAgIH0KIAogICAgIC8qKgotICAgICAqIEdldHMgY2RtYSBDTkFQIHByZXNlbnRhdGlvbiBhc3NvY2lhdGVkIHdpdGggY29ubmVjdGlvbgorICAgICAqIEdldHMgQ0RNQSBDTkFQIHByZXNlbnRhdGlvbiBhc3NvY2lhdGVkIHdpdGggY29ubmVjdGlvbi4KICAgICAgKiBAcmV0dXJuIGNuYXAgbmFtZSBvciBudWxsIGlmIHVuYXZhaWxhYmxlCiAgICAgICovCiAKQEAgLTExNSw0NSArMTE2LDQ1IEBACiAgICAgcHVibGljIGFic3RyYWN0IGxvbmcgZ2V0Q3JlYXRlVGltZSgpOwogCiAgICAgLyoqCi0gICAgICogQ29ubmVjdGlvbiBjb25uZWN0IHRpbWUgaW4gY3VycmVudFRpbWVNaWxsaXMoKSBmb3JtYXQKLSAgICAgKiBGb3Igb3V0Z29pbmcgY2FsbHM6IEJlZ2lucyBhdCAoRElBTElOR3xBTEVSVElORykgLT4gQUNUSVZFIHRyYW5zaXRpb24KLSAgICAgKiBGb3IgaW5jb21pbmcgY2FsbHM6IEJlZ2lucyBhdCAoSU5DT01JTkd8V0FJVElORykgLT4gQUNUSVZFIHRyYW5zaXRpb24KLSAgICAgKiBSZXR1cm5zIDAgYmVmb3JlIHRoZW4KKyAgICAgKiBDb25uZWN0aW9uIGNvbm5lY3QgdGltZSBpbiBjdXJyZW50VGltZU1pbGxpcygpIGZvcm1hdC4KKyAgICAgKiBGb3Igb3V0Z29pbmcgY2FsbHM6IEJlZ2lucyBhdCAoRElBTElOR3xBTEVSVElORykgLT4gQUNUSVZFIHRyYW5zaXRpb24uCisgICAgICogRm9yIGluY29taW5nIGNhbGxzOiBCZWdpbnMgYXQgKElOQ09NSU5HfFdBSVRJTkcpIC0+IEFDVElWRSB0cmFuc2l0aW9uLgorICAgICAqIFJldHVybnMgMCBiZWZvcmUgdGhlbi4KICAgICAgKi8KICAgICBwdWJsaWMgYWJzdHJhY3QgbG9uZyBnZXRDb25uZWN0VGltZSgpOwogCiAgICAgLyoqCi0gICAgICogRGlzY29ubmVjdCB0aW1lIGluIGN1cnJlbnRUaW1lTWlsbGlzKCkgZm9ybWF0Ci0gICAgICogVGhlIHRpbWUgd2hlbiB0aGlzIENvbm5lY3Rpb24gbWFrZXMgYSB0cmFuc2l0aW9uIGludG8gRU5ERUQgb3IgRkFJTAotICAgICAqIFJldHVybnMgMCBiZWZvcmUgdGhlbgorICAgICAqIERpc2Nvbm5lY3QgdGltZSBpbiBjdXJyZW50VGltZU1pbGxpcygpIGZvcm1hdC4KKyAgICAgKiBUaGUgdGltZSB3aGVuIHRoaXMgQ29ubmVjdGlvbiBtYWtlcyBhIHRyYW5zaXRpb24gaW50byBFTkRFRCBvciBGQUlMLgorICAgICAqIFJldHVybnMgMCBiZWZvcmUgdGhlbi4KICAgICAgKi8KICAgICBwdWJsaWMgYWJzdHJhY3QgbG9uZyBnZXREaXNjb25uZWN0VGltZSgpOwogCiAgICAgLyoqCi0gICAgICogcmV0dXJucyB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0aGUgY2FsbCBoYXMgYmVlbiBjb25uZWN0ZWQsCisgICAgICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0aGUgY2FsbCBoYXMgYmVlbiBjb25uZWN0ZWQsCiAgICAgICogb3IgMCBpZiB0aGUgY2FsbCBoYXMgbmV2ZXIgY29ubmVjdGVkLgogICAgICAqIElmIHRoZSBjYWxsIGlzIHN0aWxsIGNvbm5lY3RlZCwgdGhlbiByZXR1cm5zIHRoZSBlbGFwc2VkCi0gICAgICogdGltZSBzaW5jZSBjb25uZWN0CisgICAgICogdGltZSBzaW5jZSBjb25uZWN0LgogICAgICAqLwogICAgIHB1YmxpYyBhYnN0cmFjdCBsb25nIGdldER1cmF0aW9uTWlsbGlzKCk7CiAKICAgICAvKioKICAgICAgKiBJZiB0aGlzIGNvbm5lY3Rpb24gaXMgSE9MRElORywgcmV0dXJuIHRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzCi0gICAgICogdGhhdCBpdCBoYXMgYmVlbiBvbiBob2xkIGZvciAoYXBwcm94aW1lbnRseSkKLSAgICAgKiBJZiB0aGlzIGNvbm5lY3Rpb24gaXMgaW4gYW55IG90aGVyIHN0YXRlLCByZXR1cm4gMAorICAgICAqIHRoYXQgaXQgaGFzIGJlZW4gb24gaG9sZCBmb3IgKGFwcHJveGltYXRlbHkpLgorICAgICAqIElmIHRoaXMgY29ubmVjdGlvbiBpcyBpbiBhbnkgb3RoZXIgc3RhdGUsIHJldHVybiAwLgogICAgICAqLwogCiAgICAgcHVibGljIGFic3RyYWN0IGxvbmcgZ2V0SG9sZER1cmF0aW9uTWlsbGlzKCk7CiAKICAgICAvKioKLSAgICAgKiBSZXR1cm5zICJOT1RfRElTQ09OTkVDVEVEIiBpZiBub3QgeWV0IGRpc2Nvbm5lY3RlZAorICAgICAqIFJldHVybnMgIk5PVF9ESVNDT05ORUNURUQiIGlmIG5vdCB5ZXQgZGlzY29ubmVjdGVkLgogICAgICAqLwogICAgIHB1YmxpYyBhYnN0cmFjdCBEaXNjb25uZWN0Q2F1c2UgZ2V0RGlzY29ubmVjdENhdXNlKCk7CiAKICAgICAvKioKICAgICAgKiBSZXR1cm5zIHRydWUgb2YgdGhpcyBjb25uZWN0aW9uIG9yaWdpbmF0ZWQgZWxzZXdoZXJlCiAgICAgICogKCJNVCIgb3IgbW9iaWxlIHRlcm1pbmF0ZWQ7IGFub3RoZXIgcGFydHkgY2FsbGVkIHRoaXMgdGVybWluYWwpCi0gICAgICogb3IgZmFsc2UgaWYgdGhpcyBjYWxsIG9yaWdpbmF0ZWQgaGVyZSAoTU8gb3IgbW9iaWxlIG9yaWdpbmF0ZWQpCisgICAgICogb3IgZmFsc2UgaWYgdGhpcyBjYWxsIG9yaWdpbmF0ZWQgaGVyZSAoTU8gb3IgbW9iaWxlIG9yaWdpbmF0ZWQpLgogICAgICAqLwogICAgIHB1YmxpYyBhYnN0cmFjdCBib29sZWFuIGlzSW5jb21pbmcoKTsKIApAQCAtMjczLDYgKzI3NCwxMyBAQAogICAgIHB1YmxpYyBhYnN0cmFjdCBpbnQgZ2V0TnVtYmVyUHJlc2VudGF0aW9uKCk7CiAKICAgICAvKioKKyAgICAgKiBSZXR1cm5zIHRoZSBVc2VyIHRvIFVzZXIgU2lnbmFsaW5nIChVVVMpIGluZm9ybWF0aW9uIGFzc29jaWF0ZWQgd2l0aAorICAgICAqIGluY29taW5nIGFuZCB3YWl0aW5nIGNhbGxzCisgICAgICogQHJldHVybiBVVVNJbmZvIGNvbnRhaW5pbmcgdGhlIFVVUyB1c2VyZGF0YS4KKyAgICAgKi8KKyAgICBwdWJsaWMgYWJzdHJhY3QgVVVTSW5mbyBnZXRVVVNJbmZvKCk7CisKKyAgICAvKioKICAgICAgKiBCdWlsZCBhIGh1bWFuIHJlcHJlc2VudGF0aW9uIG9mIGEgY29ubmVjdGlvbiBpbnN0YW5jZSwgc3VpdGFibGUgZm9yIGRlYnVnZ2luZy4KICAgICAgKiBEb24ndCBsb2cgcGVyc29uYWwgc3R1ZmYgdW5sZXNzIGluIGRlYnVnIG1vZGUuCiAgICAgICogQHJldHVybiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGludGVybmFsIHN0YXRlIG9mIHRoaXMgY29ubmVjdGlvbi4KZGlmZiAtLWdpdCBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9EYXRhQ29ubmVjdGlvbi5qYXZhIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L0RhdGFDb25uZWN0aW9uLmphdmEKaW5kZXggMWY4YmJjZi4uNjYzNDAxNyAxMDA2NDQKLS0tIGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L0RhdGFDb25uZWN0aW9uLmphdmEKKysrIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L0RhdGFDb25uZWN0aW9uLmphdmEKQEAgLTE2NCw3ICsxNjQsNyBAQAogICAgICAgICBOT05FLAogICAgICAgICBPUEVSQVRPUl9CQVJSRUQsCiAgICAgICAgIElOU1VGRklDSUVOVF9SRVNPVVJDRVMsCi0gICAgICAgIE1JU1NJTkdfVUtOT1dOX0FQTiwKKyAgICAgICAgTUlTU0lOR19VTktOT1dOX0FQTiwKICAgICAgICAgVU5LTk9XTl9QRFBfQUREUkVTUywKICAgICAgICAgVVNFUl9BVVRIRU5USUNBVElPTiwKICAgICAgICAgQUNUSVZBVElPTl9SRUpFQ1RfR0dTTiwKQEAgLTE4MSw3ICsxODEsNyBAQAogICAgICAgICBSQURJT19OT1RfQVZBSUxBQkxFOwogCiAgICAgICAgIHB1YmxpYyBib29sZWFuIGlzUGVybWFuZW50RmFpbCgpIHsKLSAgICAgICAgICAgIHJldHVybiAodGhpcyA9PSBPUEVSQVRPUl9CQVJSRUQpIHx8ICh0aGlzID09IE1JU1NJTkdfVUtOT1dOX0FQTikgfHwKKyAgICAgICAgICAgIHJldHVybiAodGhpcyA9PSBPUEVSQVRPUl9CQVJSRUQpIHx8ICh0aGlzID09IE1JU1NJTkdfVU5LTk9XTl9BUE4pIHx8CiAgICAgICAgICAgICAgICAgICAgKHRoaXMgPT0gVU5LTk9XTl9QRFBfQUREUkVTUykgfHwgKHRoaXMgPT0gVVNFUl9BVVRIRU5USUNBVElPTikgfHwKICAgICAgICAgICAgICAgICAgICAodGhpcyA9PSBBQ1RJVkFUSU9OX1JFSkVDVF9HR1NOKSB8fCAodGhpcyA9PSBBQ1RJVkFUSU9OX1JFSkVDVF9VTlNQRUNJRklFRCkgfHwKICAgICAgICAgICAgICAgICAgICAodGhpcyA9PSBTRVJWSUNFX09QVElPTl9OT1RfU1VQUE9SVEVEKSB8fApAQCAtMjA4LDEyICsyMDgsMTIgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gIk9wZXJhdG9yIEJhcnJlZCI7CiAgICAgICAgICAgICBjYXNlIElOU1VGRklDSUVOVF9SRVNPVVJDRVM6CiAgICAgICAgICAgICAgICAgcmV0dXJuICJJbnN1ZmZpY2llbnQgUmVzb3VyY2VzIjsKLSAgICAgICAgICAgIGNhc2UgTUlTU0lOR19VS05PV05fQVBOOgorICAgICAgICAgICAgY2FzZSBNSVNTSU5HX1VOS05PV05fQVBOOgogICAgICAgICAgICAgICAgIHJldHVybiAiTWlzc2luZyAvIFVua25vd24gQVBOIjsKICAgICAgICAgICAgIGNhc2UgVU5LTk9XTl9QRFBfQUREUkVTUzoKICAgICAgICAgICAgICAgICByZXR1cm4gIlVua25vd24gUERQIEFkZHJlc3MiOwogICAgICAgICAgICAgY2FzZSBVU0VSX0FVVEhFTlRJQ0FUSU9OOgotICAgICAgICAgICAgICAgIHJldHVybiAiRXJyb3IgVXNlciBBdXRlbnRpY2F0aW9uIjsKKyAgICAgICAgICAgICAgICByZXR1cm4gIkVycm9yIFVzZXIgQXV0aGVudGljYXRpb24iOwogICAgICAgICAgICAgY2FzZSBBQ1RJVkFUSU9OX1JFSkVDVF9HR1NOOgogICAgICAgICAgICAgICAgIHJldHVybiAiQWN0aXZhdGlvbiBSZWplY3QgR0dTTiI7CiAgICAgICAgICAgICBjYXNlIEFDVElWQVRJT05fUkVKRUNUX1VOU1BFQ0lGSUVEOgpkaWZmIC0tZ2l0IGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L0RyaXZlckNhbGwuamF2YSBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9Ecml2ZXJDYWxsLmphdmEKaW5kZXggNjZmNmI5Yy4uNjYzYzI4NCAxMDA2NDQKLS0tIGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L0RyaXZlckNhbGwuamF2YQorKysgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvRHJpdmVyQ2FsbC5qYXZhCkBAIC00OSw2ICs0OSw3IEBACiAgICAgcHVibGljIGludCBudW1iZXJQcmVzZW50YXRpb247CiAgICAgcHVibGljIFN0cmluZyBuYW1lOwogICAgIHB1YmxpYyBpbnQgbmFtZVByZXNlbnRhdGlvbjsKKyAgICBwdWJsaWMgVVVTSW5mbyB1dXNJbmZvOwogCiAgICAgLyoqIHJldHVybnMgbnVsbCBvbiBlcnJvciAqLwogICAgIHN0YXRpYyBEcml2ZXJDYWxsCmRpZmYgLS1naXQgYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvSWNjUHJvdmlkZXIuamF2YSBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9JY2NQcm92aWRlci5qYXZhCmluZGV4IGZhOTE0NTcuLjM0NzFlYzIgMTAwNjQ0Ci0tLSBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9JY2NQcm92aWRlci5qYXZhCisrKyBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9JY2NQcm92aWRlci5qYXZhCkBAIC00MTcsMTEgKzQxNywxMSBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKFRleHRVdGlscy5pc0VtcHR5KHRhZykpIHsKKyAgICAgICAgaWYgKFRleHRVdGlscy5pc0VtcHR5KG51bWJlcikpIHsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGVmVHlwZSA9PSBGRE4gJiYgVGV4dFV0aWxzLmlzRW1wdHkocGluMikpIHsKKyAgICAgICAgaWYgKGVmVHlwZSA9PSBJY2NDb25zdGFudHMuRUZfRkROICYmIFRleHRVdGlscy5pc0VtcHR5KHBpbjIpKSB7CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogCmRpZmYgLS1naXQgYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvUGhvbmUuamF2YSBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9QaG9uZS5qYXZhCmluZGV4IDcxNzliZWYuLjIzMzI1ZjYgMTAwNjQ0Ci0tLSBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9QaG9uZS5qYXZhCisrKyBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9QaG9uZS5qYXZhCkBAIC0yNDMsMTUgKzI0MywxNCBAQAogICAgIC8qKgogICAgICAqIEdldCB0aGUgY3VycmVudCBEYXRhU3RhdGUuIE5vIGNoYW5nZSBub3RpZmljYXRpb24gZXhpc3RzIGF0IHRoaXMKICAgICAgKiBpbnRlcmZhY2UgLS0gdXNlCi0gICAgICoge0BsaW5rIGNvbS5hbmRyb2lkLnRlbGVwaG9ueS5QaG9uZVN0YXRlTGlzdGVuZXIgUGhvbmVTdGF0ZUxpc3RlbmVyfQotICAgICAqIGluc3RlYWQuCisgICAgICoge0BsaW5rIGFuZHJvaWQudGVsZXBob255LlBob25lU3RhdGVMaXN0ZW5lcn0gaW5zdGVhZC4KICAgICAgKi8KICAgICBEYXRhU3RhdGUgZ2V0RGF0YUNvbm5lY3Rpb25TdGF0ZSgpOwogCiAgICAgLyoqCiAgICAgICogR2V0IHRoZSBjdXJyZW50IERhdGFBY3Rpdml0eVN0YXRlLiBObyBjaGFuZ2Ugbm90aWZpY2F0aW9uIGV4aXN0cyBhdCB0aGlzCiAgICAgICogaW50ZXJmYWNlIC0tIHVzZQotICAgICAqIHtAbGluayBUZWxlcGhvbnlNYW5hZ2VyfSBpbnN0ZWFkLgorICAgICAqIHtAbGluayBhbmRyb2lkLnRlbGVwaG9ueS5UZWxlcGhvbnlNYW5hZ2VyfSBpbnN0ZWFkLgogICAgICAqLwogICAgIERhdGFBY3Rpdml0eVN0YXRlIGdldERhdGFBY3Rpdml0eVN0YXRlKCk7CiAKQEAgLTc4OSw2ICs3ODgsMTkgQEAKICAgICBDb25uZWN0aW9uIGRpYWwoU3RyaW5nIGRpYWxTdHJpbmcpIHRocm93cyBDYWxsU3RhdGVFeGNlcHRpb247CiAKICAgICAvKioKKyAgICAgKiBJbml0aWF0ZSBhIG5ldyB2b2ljZSBjb25uZWN0aW9uIHdpdGggc3VwcGxlbWVudGFyeSBVc2VyIHRvIFVzZXIKKyAgICAgKiBJbmZvcm1hdGlvbi4gVGhpcyBoYXBwZW5zIGFzeW5jaHJvbm91c2x5LCBzbyB5b3UgY2Fubm90IGFzc3VtZSB0aGUgYXVkaW8KKyAgICAgKiBwYXRoIGlzIGNvbm5lY3RlZCAob3IgYSBjYWxsIGluZGV4IGhhcyBiZWVuIGFzc2lnbmVkKSB1bnRpbAorICAgICAqIFBob25lU3RhdGVDaGFuZ2VkIG5vdGlmaWNhdGlvbiBoYXMgb2NjdXJyZWQuCisgICAgICoKKyAgICAgKiBAZXhjZXB0aW9uIENhbGxTdGF0ZUV4Y2VwdGlvbiBpZiBhIG5ldyBvdXRnb2luZyBjYWxsIGlzIG5vdCBjdXJyZW50bHkKKyAgICAgKiAgICAgICAgICAgICAgICBwb3NzaWJsZSBiZWNhdXNlIG5vIG1vcmUgY2FsbCBzbG90cyBleGlzdCBvciBhIGNhbGwgZXhpc3RzCisgICAgICogICAgICAgICAgICAgICAgdGhhdCBpcyBkaWFsaW5nLCBhbGVydGluZywgcmluZ2luZywgb3Igd2FpdGluZy4gT3RoZXIKKyAgICAgKiAgICAgICAgICAgICAgICBlcnJvcnMgYXJlIGhhbmRsZWQgYXN5bmNocm9ub3VzbHkuCisgICAgICovCisgICAgQ29ubmVjdGlvbiBkaWFsKFN0cmluZyBkaWFsU3RyaW5nLCBVVVNJbmZvIHV1c0luZm8pIHRocm93cyBDYWxsU3RhdGVFeGNlcHRpb247CisKKyAgICAvKioKICAgICAgKiBIYW5kbGVzIFBJTiBNTUkgY29tbWFuZHMgKFBJTi9QSU4yL1BVSy9QVUsyKSwgd2hpY2ggYXJlIGluaXRpYXRlZAogICAgICAqIHdpdGhvdXQgU0VORCAoc28gPGNvZGU+ZGlhbDwvY29kZT4gaXMgbm90IGFwcHJvcHJpYXRlKS4KICAgICAgKgpAQCAtODQwLDcgKzg1Miw3IEBACiAgICAgICogQHBhcmFtIGR0bWZTdHJpbmcgaXMgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgZGlhbGluZyBkaWdpdChzKSBpbiB0aGUgYWN0aXZlIGNhbGwKICAgICAgKiBAcGFyYW0gb24gdGhlIERUTUYgT04gbGVuZ3RoIGluIG1pbGxpc2Vjb25kcywgb3IgMCBmb3IgZGVmYXVsdAogICAgICAqIEBwYXJhbSBvZmYgdGhlIERUTUYgT0ZGIGxlbmd0aCBpbiBtaWxsaXNlY29uZHMsIG9yIDAgZm9yIGRlZmF1bHQKLSAgICAgKiBAcGFyYW0gb25Db21wZWx0ZSBpcyB0aGUgY2FsbGJhY2sgbWVzc2FnZSB3aGVuIHRoZSBhY3Rpb24gaXMgcHJvY2Vzc2VkIGJ5IEJQCisgICAgICogQHBhcmFtIG9uQ29tcGxldGUgaXMgdGhlIGNhbGxiYWNrIG1lc3NhZ2Ugd2hlbiB0aGUgYWN0aW9uIGlzIHByb2Nlc3NlZCBieSBCUAogICAgICAqCiAgICAgICovCiAgICAgdm9pZCBzZW5kQnVyc3REdG1mKFN0cmluZyBkdG1mU3RyaW5nLCBpbnQgb24sIGludCBvZmYsIE1lc3NhZ2Ugb25Db21wbGV0ZSk7CkBAIC05ODAsNyArOTkyLDcgQEAKICAgICAgKiAoKEFzeW5jUmVzdWx0KW9uQ29tcGxldGUub2JqKSBpcyBhbiBhcnJheSBvZiBpbnQsIHdpdGggYSBsZW5ndGggb2YgMi4KICAgICAgKgogICAgICAqIEBwYXJhbSBvbkNvbXBsZXRlIGEgY2FsbGJhY2sgbWVzc2FnZSB3aGVuIHRoZSBhY3Rpb24gaXMgY29tcGxldGVkLgotICAgICAqICAgICAgICBAc2VlIGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5Db21tYW5kc0ludGVyZmFjZS5nZXRDTElSIGZvciBkZXRhaWxzLgorICAgICAqICAgICAgICBAc2VlIGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5Db21tYW5kc0ludGVyZmFjZSNnZXRDTElSIGZvciBkZXRhaWxzLgogICAgICAqLwogICAgIHZvaWQgZ2V0T3V0Z29pbmdDYWxsZXJJZERpc3BsYXkoTWVzc2FnZSBvbkNvbXBsZXRlKTsKIApAQCAtMTAwMiw3ICsxMDE0LDcgQEAKICAgICAgKiAoKEFzeW5jUmVzdWx0KW9uQ29tcGxldGUub2JqKSBpcyBhbiBhcnJheSBvZiBpbnQsIHdpdGggYSBsZW5ndGggb2YgMS4KICAgICAgKgogICAgICAqIEBwYXJhbSBvbkNvbXBsZXRlIGEgY2FsbGJhY2sgbWVzc2FnZSB3aGVuIHRoZSBhY3Rpb24gaXMgY29tcGxldGVkLgotICAgICAqICAgICAgICBAc2VlIGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5Db21tYW5kc0ludGVyZmFjZS5xdWVyeUNhbGxXYWl0aW5nIGZvciBkZXRhaWxzLgorICAgICAqICAgICAgICBAc2VlIGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5Db21tYW5kc0ludGVyZmFjZSNxdWVyeUNhbGxXYWl0aW5nIGZvciBkZXRhaWxzLgogICAgICAqLwogICAgIHZvaWQgZ2V0Q2FsbFdhaXRpbmcoTWVzc2FnZSBvbkNvbXBsZXRlKTsKIApAQCAtMTQ0NSw3ICsxNDU3LDcgQEAKICAgICAgKiBzZXRUVFlNb2RlCiAgICAgICogc2V0cyBhIFRUWSBtb2RlIG9wdGlvbi4KICAgICAgKgotICAgICAqIEBwYXJhbSBlbmFibGUgaXMgYSBib29sZWFuIHJlcHJlc2VudGluZyB0aGUgc3RhdGUgdGhhdCB5b3UgYXJlCisgICAgICogQHBhcmFtIHR0eU1vZGUgaXMgYSBib29sZWFuIHJlcHJlc2VudGluZyB0aGUgc3RhdGUgdGhhdCB5b3UgYXJlCiAgICAgICogICAgICAgIHJlcXVlc3RpbmcsIHRydWUgZm9yIGVuYWJsZWQsIGZhbHNlIGZvciBkaXNhYmxlZC4KICAgICAgKiBAcGFyYW0gb25Db21wbGV0ZSBhIGNhbGxiYWNrIG1lc3NhZ2Ugd2hlbiB0aGUgYWN0aW9uIGlzIGNvbXBsZXRlZAogICAgICAqLwpkaWZmIC0tZ2l0IGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L1Bob25lQmFzZS5qYXZhIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L1Bob25lQmFzZS5qYXZhCmluZGV4IGE4ZjQxNDMuLjc0NjAxZTYgMTAwNjQ0Ci0tLSBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9QaG9uZUJhc2UuamF2YQorKysgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvUGhvbmVCYXNlLmphdmEKQEAgLTU0Myw3ICs1NDMsNyBAQAogICAgIHByaXZhdGUgdm9pZCBzZXRQcm9wZXJ0aWVzQnlDYXJyaWVyKCkgewogICAgICAgICBTdHJpbmcgY2FycmllciA9IFN5c3RlbVByb3BlcnRpZXMuZ2V0KCJyby5jYXJyaWVyIik7CiAKLSAgICAgICAgaWYgKG51bGwgPT0gY2FycmllciB8fCAwID09IGNhcnJpZXIubGVuZ3RoKCkpIHsKKyAgICAgICAgaWYgKG51bGwgPT0gY2FycmllciB8fCAwID09IGNhcnJpZXIubGVuZ3RoKCkgfHwgInVua25vd24iLmVxdWFscyhjYXJyaWVyKSkgewogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9QaG9uZUZhY3RvcnkuamF2YSBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9QaG9uZUZhY3RvcnkuamF2YQppbmRleCBjZDcyNzUyLi44MDNiNzM2IDEwMDY0NAotLS0gYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvUGhvbmVGYWN0b3J5LmphdmEKKysrIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L1Bob25lRmFjdG9yeS5qYXZhCkBAIC0xMDksMTMgKzEwOSwxMyBAQAogCiAgICAgICAgICAgICAgICAgaW50IHBob25lVHlwZSA9IGdldFBob25lVHlwZShuZXR3b3JrTW9kZSk7CiAgICAgICAgICAgICAgICAgaWYgKHBob25lVHlwZSA9PSBQaG9uZS5QSE9ORV9UWVBFX0dTTSkgeworICAgICAgICAgICAgICAgICAgICBMb2cuaShMT0dfVEFHLCAiQ3JlYXRpbmcgR1NNUGhvbmUiKTsKICAgICAgICAgICAgICAgICAgICAgc1Byb3h5UGhvbmUgPSBuZXcgUGhvbmVQcm94eShuZXcgR1NNUGhvbmUoY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzQ29tbWFuZHNJbnRlcmZhY2UsIHNQaG9uZU5vdGlmaWVyKSk7Ci0gICAgICAgICAgICAgICAgICAgIExvZy5pKExPR19UQUcsICJDcmVhdGluZyBHU01QaG9uZSIpOwogICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocGhvbmVUeXBlID09IFBob25lLlBIT05FX1RZUEVfQ0RNQSkgeworICAgICAgICAgICAgICAgICAgICBMb2cuaShMT0dfVEFHLCAiQ3JlYXRpbmcgQ0RNQVBob25lIik7CiAgICAgICAgICAgICAgICAgICAgIHNQcm94eVBob25lID0gbmV3IFBob25lUHJveHkobmV3IENETUFQaG9uZShjb250ZXh0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNDb21tYW5kc0ludGVyZmFjZSwgc1Bob25lTm90aWZpZXIpKTsKLSAgICAgICAgICAgICAgICAgICAgTG9nLmkoTE9HX1RBRywgIkNyZWF0aW5nIENETUFQaG9uZSIpOwogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIHNNYWRlRGVmYXVsdHMgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L1Bob25lUHJveHkuamF2YSBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9QaG9uZVByb3h5LmphdmEKaW5kZXggNmQzNzk4ZS4uZTE1MTFlNiAxMDA2NDQKLS0tIGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L1Bob25lUHJveHkuamF2YQorKysgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvUGhvbmVQcm94eS5qYXZhCkBAIC00MjMsNiArNDIzLDEwIEBACiAgICAgICAgIHJldHVybiBtQWN0aXZlUGhvbmUuZGlhbChkaWFsU3RyaW5nKTsKICAgICB9CiAKKyAgICBwdWJsaWMgQ29ubmVjdGlvbiBkaWFsKFN0cmluZyBkaWFsU3RyaW5nLCBVVVNJbmZvIHV1c0luZm8pIHRocm93cyBDYWxsU3RhdGVFeGNlcHRpb24geworICAgICAgICByZXR1cm4gbUFjdGl2ZVBob25lLmRpYWwoZGlhbFN0cmluZywgdXVzSW5mbyk7CisgICAgfQorCiAgICAgcHVibGljIGJvb2xlYW4gaGFuZGxlUGluTW1pKFN0cmluZyBkaWFsU3RyaW5nKSB7CiAgICAgICAgIHJldHVybiBtQWN0aXZlUGhvbmUuaGFuZGxlUGluTW1pKGRpYWxTdHJpbmcpOwogICAgIH0KZGlmZiAtLWdpdCBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9QaG9uZVN1YkluZm8uamF2YSBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9QaG9uZVN1YkluZm8uamF2YQppbmRleCAxYWMyZGEzLi40ZjcxYmIxIDEwMDY0NAotLS0gYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvUGhvbmVTdWJJbmZvLmphdmEKKysrIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L1Bob25lU3ViSW5mby5qYXZhCkBAIC02NSw3ICs2NSw3IEBACiAgICAgfQogCiAgICAgLyoqCi0gICAgICogUmV0cmlldmVzIHRoZSB1bmlxdWUgc2J1c2NyaWJlciBJRCwgZS5nLiwgSU1TSSBmb3IgR1NNIHBob25lcy4KKyAgICAgKiBSZXRyaWV2ZXMgdGhlIHVuaXF1ZSBzdWJzY3JpYmVyIElELCBlLmcuLCBJTVNJIGZvciBHU00gcGhvbmVzLgogICAgICAqLwogICAgIHB1YmxpYyBTdHJpbmcgZ2V0U3Vic2NyaWJlcklkKCkgewogICAgICAgICBtQ29udGV4dC5lbmZvcmNlQ2FsbGluZ09yU2VsZlBlcm1pc3Npb24oUkVBRF9QSE9ORV9TVEFURSwgIlJlcXVpcmVzIFJFQURfUEhPTkVfU1RBVEUiKTsKZGlmZiAtLWdpdCBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9QaG9uZVN1YkluZm9Qcm94eS5qYXZhIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L1Bob25lU3ViSW5mb1Byb3h5LmphdmEKaW5kZXggYWRmYmUyMC4uMjAyZGVkMiAxMDA2NDQKLS0tIGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L1Bob25lU3ViSW5mb1Byb3h5LmphdmEKKysrIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L1Bob25lU3ViSW5mb1Byb3h5LmphdmEKQEAgLTQ3LDcgKzQ3LDcgQEAKICAgICB9CiAKICAgICAvKioKLSAgICAgKiBSZXRyaWV2ZXMgdGhlIHVuaXF1ZSBzYnVzY3JpYmVyIElELCBlLmcuLCBJTVNJIGZvciBHU00gcGhvbmVzLgorICAgICAqIFJldHJpZXZlcyB0aGUgdW5pcXVlIHN1YnNjcmliZXIgSUQsIGUuZy4sIElNU0kgZm9yIEdTTSBwaG9uZXMuCiAgICAgICovCiAgICAgcHVibGljIFN0cmluZyBnZXRTdWJzY3JpYmVySWQoKSB7CiAgICAgICAgIHJldHVybiBtUGhvbmVTdWJJbmZvLmdldFN1YnNjcmliZXJJZCgpOwpkaWZmIC0tZ2l0IGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L1JJTC5qYXZhIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L1JJTC5qYXZhCmluZGV4IGQ4ZTMxM2E3Li4zZDQxMGZkIDEwMDY0NAotLS0gYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvUklMLmphdmEKKysrIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L1JJTC5qYXZhCkBAIC03OTYsMTIgKzc5NiwyNiBAQAogCiAgICAgcHVibGljIHZvaWQKICAgICBkaWFsIChTdHJpbmcgYWRkcmVzcywgaW50IGNsaXJNb2RlLCBNZXNzYWdlIHJlc3VsdCkgeworICAgICAgICBkaWFsKGFkZHJlc3MsIGNsaXJNb2RlLCBudWxsLCByZXN1bHQpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkCisgICAgZGlhbChTdHJpbmcgYWRkcmVzcywgaW50IGNsaXJNb2RlLCBVVVNJbmZvIHV1c0luZm8sIE1lc3NhZ2UgcmVzdWx0KSB7CiAgICAgICAgIFJJTFJlcXVlc3QgcnIgPSBSSUxSZXF1ZXN0Lm9idGFpbihSSUxfUkVRVUVTVF9ESUFMLCByZXN1bHQpOwogCiAgICAgICAgIHJyLm1wLndyaXRlU3RyaW5nKGFkZHJlc3MpOwogICAgICAgICByci5tcC53cml0ZUludChjbGlyTW9kZSk7CiAgICAgICAgIHJyLm1wLndyaXRlSW50KDApOyAvLyBVVVMgaW5mb3JtYXRpb24gaXMgYWJzZW50CiAKKyAgICAgICAgaWYgKHV1c0luZm8gPT0gbnVsbCkgeworICAgICAgICAgICAgcnIubXAud3JpdGVJbnQoMCk7IC8vIFVVUyBpbmZvcm1hdGlvbiBpcyBhYnNlbnQKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJyLm1wLndyaXRlSW50KDEpOyAvLyBVVVMgaW5mb3JtYXRpb24gaXMgcHJlc2VudAorICAgICAgICAgICAgcnIubXAud3JpdGVJbnQodXVzSW5mby5nZXRUeXBlKCkpOworICAgICAgICAgICAgcnIubXAud3JpdGVJbnQodXVzSW5mby5nZXREY3MoKSk7CisgICAgICAgICAgICByci5tcC53cml0ZUJ5dGVBcnJheSh1dXNJbmZvLmdldFVzZXJEYXRhKCkpOworICAgICAgICB9CisKICAgICAgICAgaWYgKFJJTEpfTE9HRCkgcmlsakxvZyhyci5zZXJpYWxTdHJpbmcoKSArICI+ICIgKyByZXF1ZXN0VG9TdHJpbmcocnIubVJlcXVlc3QpKTsKIAogICAgICAgICBzZW5kKHJyKTsKQEAgLTI4MzcsMTAgKzI4NTEsMjEgQEAKICAgICAgICAgICAgIGRjLm5hbWVQcmVzZW50YXRpb24gPSBwLnJlYWRJbnQoKTsKICAgICAgICAgICAgIGludCB1dXNJbmZvUHJlc2VudCA9IHAucmVhZEludCgpOwogICAgICAgICAgICAgaWYgKHV1c0luZm9QcmVzZW50ID09IDEpIHsKLSAgICAgICAgICAgICAgICAvLyBUT0RPOiBDb3B5IHRoZSBkYXRhIHRvIGRjIHRvIGZvcndhcmQgdG8gdGhlIGFwcHMuCi0gICAgICAgICAgICAgICAgcC5yZWFkSW50KCk7Ci0gICAgICAgICAgICAgICAgcC5yZWFkSW50KCk7Ci0gICAgICAgICAgICAgICAgcC5jcmVhdGVCeXRlQXJyYXkoKTsKKyAgICAgICAgICAgICAgICBkYy51dXNJbmZvID0gbmV3IFVVU0luZm8oKTsKKyAgICAgICAgICAgICAgICBkYy51dXNJbmZvLnNldFR5cGUocC5yZWFkSW50KCkpOworICAgICAgICAgICAgICAgIGRjLnV1c0luZm8uc2V0RGNzKHAucmVhZEludCgpKTsKKyAgICAgICAgICAgICAgICBieXRlW10gdXNlckRhdGEgPSBwLmNyZWF0ZUJ5dGVBcnJheSgpOworICAgICAgICAgICAgICAgIGRjLnV1c0luZm8uc2V0VXNlckRhdGEodXNlckRhdGEpOworICAgICAgICAgICAgICAgIExvZworICAgICAgICAgICAgICAgICAgICAgICAgLnYoTE9HX1RBRywgU3RyaW5nLmZvcm1hdCgiSW5jb21pbmcgVVVTIDogdHlwZT0lZCwgZGNzPSVkLCBsZW5ndGg9JWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYy51dXNJbmZvLmdldFR5cGUoKSwgZGMudXVzSW5mby5nZXREY3MoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGMudXVzSW5mby5nZXRVc2VyRGF0YSgpLmxlbmd0aCkpOworICAgICAgICAgICAgICAgIExvZy52KExPR19UQUcsICJJbmNvbWluZyBVVVMgOiBkYXRhIChzdHJpbmcpPSIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgbmV3IFN0cmluZyhkYy51dXNJbmZvLmdldFVzZXJEYXRhKCkpKTsKKyAgICAgICAgICAgICAgICBMb2cudihMT0dfVEFHLCAiSW5jb21pbmcgVVVTIDogZGF0YSAoaGV4KTogIgorICAgICAgICAgICAgICAgICAgICAgICAgKyBJY2NVdGlscy5ieXRlc1RvSGV4U3RyaW5nKGRjLnV1c0luZm8uZ2V0VXNlckRhdGEoKSkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBMb2cudihMT0dfVEFHLCAiSW5jb21pbmcgVVVTIDogTk9UIHByZXNlbnQhIik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8vIE1ha2Ugc3VyZSB0aGVyZSdzIGEgbGVhZGluZyArIG9uIGFkZHJlc3NlcyB3aXRoIGEgVE9BIG9mIDE0NQpkaWZmIC0tZ2l0IGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L1JJTENvbnN0YW50cy5qYXZhIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L1JJTENvbnN0YW50cy5qYXZhCmluZGV4IDAxZjRhYjIuLjcxYTgwZTAgMTAwNjQ0Ci0tLSBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9SSUxDb25zdGFudHMuamF2YQorKysgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvUklMQ29uc3RhbnRzLmphdmEKQEAgLTQ1LDYgKzQ1LDExIEBACiAgICAgaW50IE9QX05PVF9BTExPV0VEX0JFRk9SRV9SRUdfTlcgPSA5OyAgICAgLyogcmVxdWVzdCBpcyBub3QgYWxsb3dlZCBiZWZvcmUgZGV2aWNlIHJlZ2lzdGVycyB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldHdvcmsgKi8KICAgICBpbnQgU01TX1NFTkRfRkFJTF9SRVRSWSA9IDEwOyAgICAgICAgICAgICAvKiBzZW5kIHNtcyBmYWlsIGFuZCBuZWVkIHJldHJ5ICovCisgICAgaW50IFNJTV9BQlNFTlQgPSAxMTsgICAgICAgICAgICAgICAgICAgICAgLyogSUNDIGNhcmQgaXMgYWJzZW50ICovCisgICAgaW50IFNVQlNDUklQVElPTl9OT1RfQVZBSUxBQkxFID0gMTI7ICAgICAgLyogZmFpbCB0byBmaW5kIENETUEgc3Vic2NyaXB0aW9uIGZyb20gc3BlY2lmaWVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24gKi8KKyAgICBpbnQgTU9ERV9OT1RfU1VQUE9SVEVEID0gMTM7ICAgICAgICAgICAgICAvKiBIVyBkb2VzIG5vdCBzdXBwb3J0IHByZWZlcnJlZCBuZXR3b3JrIHR5cGUgKi8KKyAgICBpbnQgRkROX0NIRUNLX0ZBSUxVUkUgPSAxNDsgICAgICAgICAgICAgICAvKiBzZW5kIG9wZXJhdGlvbiBiYXJyZWQgZXJyb3Igd2hlbiBGRE4gaXMgZW5hYmxlZCAqLwogICAgIGludCBJTExFR0FMX1NJTV9PUl9NRSA9IDE1OyAgICAgICAgICAgICAgIC8qIG5ldHdvcmsgc2VsZWN0aW9uIGZhaWx1cmUgZHVlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gd3JvbmcgU0lNL01FIGFuZCBubwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHJpZXMgbmVlZGVkICovCmRpZmYgLS1naXQgYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvUmV0cnlNYW5hZ2VyLmphdmEgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvUmV0cnlNYW5hZ2VyLmphdmEKaW5kZXggNzc5ZjM1OC4uYjEwNDlhMiAxMDA2NDQKLS0tIGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L1JldHJ5TWFuYWdlci5qYXZhCisrKyBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9SZXRyeU1hbmFnZXIuamF2YQpAQCAtMjUsNyArMjUsNyBAQAogCiAvKioKICAqIFJldHJ5IG1hbmFnZXIgYWxsb3dzIGEgc2ltcGxlIHdheSB0byBkZWNsYXJlIGEgc2VyaWVzIG9mCi0gKiByZXRpcmVzIHRpbWVvdXRzLiBBZnRlciBjcmVhdGluZyBhIFJldHJ5TWFuYWdlciB0aGUgY29uZmlndXJlCisgKiByZXRyeSB0aW1lb3V0cy4gQWZ0ZXIgY3JlYXRpbmcgYSBSZXRyeU1hbmFnZXIgdGhlIGNvbmZpZ3VyZQogICogbWV0aG9kIGlzIHVzZWQgdG8gZGVmaW5lIHRoZSBzZXF1ZW5jZS4gQSBzaW1wbGUgbGluZWFyIHNlcmllcwogICogbWF5IGJlIGluaXRpYWxpemVkIHVzaW5nIGNvbmZpZ3VyZSB3aXRoIHRocmVlIGludGVnZXIgcGFyYW1ldGVycwogICogVGhlIG90aGVyIGNvbmZpZ3VyZSBtZXRob2QgYWxsb3dzIGEgc2VyaWVzIHRvIGJlIGRlY2xhcmVkIHVzaW5nCkBAIC01NCwxOCArNTQsMTggQEAKICAqPHA+CiAgKiBFeGFtcGxlczoKICAqIDx1bD4KLSAqIDxsaT4zIHJldGlyZXMgd2l0aCBubyByYW5kb21pemF0aW9uIHZhbHVlIHdoaWNoIG1lYW5zIGl0cyAwOgorICogPGxpPjMgcmV0cmllcyB3aXRoIG5vIHJhbmRvbWl6YXRpb24gdmFsdWUgd2hpY2ggbWVhbnMgaXRzIDA6CiAgKiA8dWw+PGxpPjxjb2RlPiIxMDAwLCAyMDAwLCAzMDAwIjwvY29kZT48L3VsPgogICoKLSAqIDxsaT4xMCByZXRpcmVzIHdpdGggYSA1MDAgZGVmYXVsdCByYW5kb21pemF0aW9uIHZhbHVlIGZvciBlYWNoIGFuZAorICogPGxpPjEwIHJldHJpZXMgd2l0aCBhIDUwMCBkZWZhdWx0IHJhbmRvbWl6YXRpb24gdmFsdWUgZm9yIGVhY2ggYW5kCiAgKiB0aGUgNC4uMTAgcmV0cmllcyBhbGwgdXNpbmcgMzAwMCBhcyB0aGUgZGVsYXk6CiAgKiA8dWw+PGxpPjxjb2RlPiJtYXhfcmV0cmllcz0xMCwgZGVmYXVsdF9yYW5kb21pemF0aW9uPTUwMCwgMTAwMCwgMjAwMCwgMzAwMCI8L2NvZGU+PC91bD4KICAqCi0gKiA8bGk+NCByZXRpcmVzIHdpdGggYSAxMDAgYXMgdGhlIGRlZmF1bHQgcmFuZG9taXphdGlvbiB2YWx1ZSBmb3IgdGhlIGZpcnN0IDIgdmFsdWVzIGFuZAorICogPGxpPjQgcmV0cmllcyB3aXRoIGEgMTAwIGFzIHRoZSBkZWZhdWx0IHJhbmRvbWl6YXRpb24gdmFsdWUgZm9yIHRoZSBmaXJzdCAyIHZhbHVlcyBhbmQKICAqIHRoZSBvdGhlciB0d28gaGF2aW5nIHNwZWNpZmllZCB2YWx1ZXMgb2YgNTAwOgogICogPHVsPjxsaT48Y29kZT4iZGVmYXVsdF9yYW5kb21pemF0aW9uPTEwMCwgMTAwMCwgMjAwMCwgNDAwMDo1MDAsIDUwMDA6NTAwIjwvY29kZT48L3VsPgogICoKLSAqIDxsaT5JbmZpbml0ZSBudW1iZXIgb2YgcmV0aXJlcyB3aXRoIHRoZSBmaXJzdCBvbmUgYXQgMTAwMCwgdGhlIHNlY29uZCBhdCAyMDAwIGFsbAorICogPGxpPkluZmluaXRlIG51bWJlciBvZiByZXRyaWVzIHdpdGggdGhlIGZpcnN0IG9uZSBhdCAxMDAwLCB0aGUgc2Vjb25kIGF0IDIwMDAgYWxsCiAgKiBvdGhlcnMgd2lsbCBiZSBhdCAzMDAwLgogICogPHVsPjxsaT48Y29kZT4ibWF4X3JldHJpZXM9aW5maW5pdGUsMTAwMCwyMDAwLDMwMDA8L2NvZGU+PC91bD4KICAqIDwvdWw+CkBAIC03NSw5ICs3NSw2IEBACiBwdWJsaWMgY2xhc3MgUmV0cnlNYW5hZ2VyIHsKICAgICBzdGF0aWMgcHVibGljIGZpbmFsIFN0cmluZyBMT0dfVEFHID0gIlJldHJ5TWFuYWdlciI7CiAgICAgc3RhdGljIHB1YmxpYyBmaW5hbCBib29sZWFuIERCRyA9IGZhbHNlOwotICAgIHN0YXRpYyBwdWJsaWMgZmluYWwgaW50IFJFVFJZSUVTX05PVF9TVEFSVEVEID0gMDsKLSAgICBzdGF0aWMgcHVibGljIGZpbmFsIGludCBSRVRSWUlFU19PTl9HT0lORyA9IDE7Ci0gICAgc3RhdGljIHB1YmxpYyBmaW5hbCBpbnQgUkVUUllJRVNfQ09NUExFVEVEID0gMjsKIAogICAgIC8qKgogICAgICAqIFJldHJ5IHJlY29yZCB3aXRoIHRpbWVzIGluIG1pbGxpLXNlY29uZHMKQEAgLTEwNCw3ICsxMDEsNyBAQAogICAgICAqLwogICAgIHByaXZhdGUgaW50IG1NYXhSZXRyeUNvdW50OwogCi0gICAgLyoqIFRoZSBjdXJyZW50IG51bWJlciBvZiByZXRpcmVzICovCisgICAgLyoqIFRoZSBjdXJyZW50IG51bWJlciBvZiByZXRyaWVzICovCiAgICAgcHJpdmF0ZSBpbnQgbVJldHJ5Q291bnQ7CiAKICAgICAvKiogUmFuZG9tIG51bWJlciBnZW5lcmF0b3IgKi8KQEAgLTEyNSw3ICsxMjIsNyBAQAogICAgICAqIEBwYXJhbSByYW5kb21pemF0aW9uVGltZSBhIHJhbmRvbSB2YWx1ZSBiZXR3ZWVuIDAgYW5kCiAgICAgICogICAgICAgIHJhbmRvbWl6YXRpb25UaW1lIHdpbGwgYmUgYWRkZWQgdG8gcmV0cnlUaW1lLiB0aGlzCiAgICAgICogICAgICAgIHBhcmFtZXRlciBtYXkgYmUgMC4KLSAgICAgKiBAcmV0dXJuIHRydWUgaWYgc3VjY2Vzc2Z1bGwKKyAgICAgKiBAcmV0dXJuIHRydWUgaWYgc3VjY2Vzc2Z1bAogICAgICAqLwogICAgIHB1YmxpYyBib29sZWFuIGNvbmZpZ3VyZShpbnQgbWF4UmV0cnlDb3VudCwgaW50IHJldHJ5VGltZSwgaW50IHJhbmRvbWl6YXRpb25UaW1lKSB7CiAgICAgICAgIFBhaXI8Qm9vbGVhbiwgSW50ZWdlcj4gdmFsdWU7CkBAIC0yNDIsNyArMjM5LDcgQEAKICAgICAvKioKICAgICAgKiBSZXBvcnQgd2hldGhlciBkYXRhIHJlY29ubmVjdGlvbiBzaG91bGQgYmUgcmV0cmllZAogICAgICAqCi0gICAgICogQHJldHVybiB7QGNvZGUgdHJ1ZX0gaWYgdGhlIG1heCByZXRpcmVzIGhhcyBub3QgYmVlbiByZWFjaGVkLiB7QGNvZGUKKyAgICAgKiBAcmV0dXJuIHtAY29kZSB0cnVlfSBpZiB0aGUgbWF4IHJldHJpZXMgaGFzIG5vdCBiZWVuIHJlYWNoZWQuIHtAY29kZQogICAgICAqICAgICAgICAgZmFsc2V9IG90aGVyd2lzZS4KICAgICAgKi8KICAgICBwdWJsaWMgYm9vbGVhbiBpc1JldHJ5TmVlZGVkKCkgewpAQCAtMjg5LDcgKzI4Niw3IEBACiAgICAgICAgIGlmIChtUmV0cnlDb3VudCA+IG1NYXhSZXRyeUNvdW50KSB7CiAgICAgICAgICAgICBtUmV0cnlDb3VudCA9IG1NYXhSZXRyeUNvdW50OwogICAgICAgICB9Ci0gICAgICAgIGlmIChEQkcpIGxvZygiaW5jcmVzZVJldHJ5Q291bnQ6ICIgKyBtUmV0cnlDb3VudCk7CisgICAgICAgIGlmIChEQkcpIGxvZygiaW5jcmVhc2VSZXRyeUNvdW50OiAiICsgbVJldHJ5Q291bnQpOwogICAgIH0KIAogICAgIC8qKgpkaWZmIC0tZ2l0IGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L1NNU0Rpc3BhdGNoZXIuamF2YSBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9TTVNEaXNwYXRjaGVyLmphdmEKaW5kZXggNzY0ZDEyZS4uY2E1MjZhNSAxMDA2NDQKLS0tIGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L1NNU0Rpc3BhdGNoZXIuamF2YQorKysgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvU01TRGlzcGF0Y2hlci5qYXZhCkBAIC02Miw2ICs2Miw3IEBACiBpbXBvcnQgc3RhdGljIGFuZHJvaWQudGVsZXBob255LlNtc01hbmFnZXIuUkVTVUxUX0VSUk9SX05VTExfUERVOwogaW1wb3J0IHN0YXRpYyBhbmRyb2lkLnRlbGVwaG9ueS5TbXNNYW5hZ2VyLlJFU1VMVF9FUlJPUl9SQURJT19PRkY7CiBpbXBvcnQgc3RhdGljIGFuZHJvaWQudGVsZXBob255LlNtc01hbmFnZXIuUkVTVUxUX0VSUk9SX0xJTUlUX0VYQ0VFREVEOworaW1wb3J0IHN0YXRpYyBhbmRyb2lkLnRlbGVwaG9ueS5TbXNNYW5hZ2VyLlJFU1VMVF9FUlJPUl9GRE5fQ0hFQ0tfRkFJTFVSRTsKIAogCiBwdWJsaWMgYWJzdHJhY3QgY2xhc3MgU01TRGlzcGF0Y2hlciBleHRlbmRzIEhhbmRsZXIgewpAQCAtNDk5LDEzICs1MDAsMjAgQEAKICAgICAgICAgICAgICAgICBNZXNzYWdlIHJldHJ5TXNnID0gb2J0YWluTWVzc2FnZShFVkVOVF9TRU5EX1JFVFJZLCB0cmFja2VyKTsKICAgICAgICAgICAgICAgICBzZW5kTWVzc2FnZURlbGF5ZWQocmV0cnlNc2csIFNFTkRfUkVUUllfREVMQVkpOwogICAgICAgICAgICAgfSBlbHNlIGlmICh0cmFja2VyLm1TZW50SW50ZW50ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBpbnQgZXJyb3IgPSBSRVNVTFRfRVJST1JfR0VORVJJQ19GQUlMVVJFOworCisgICAgICAgICAgICAgICAgaWYgKCgoQ29tbWFuZEV4Y2VwdGlvbikoYXIuZXhjZXB0aW9uKSkuZ2V0Q29tbWFuZEVycm9yKCkKKyAgICAgICAgICAgICAgICAgICAgICAgID09IENvbW1hbmRFeGNlcHRpb24uRXJyb3IuRkROX0NIRUNLX0ZBSUxVUkUpIHsKKyAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBSRVNVTFRfRVJST1JfRkROX0NIRUNLX0ZBSUxVUkU7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIC8vIERvbmUgcmV0cnlpbmc7IHJldHVybiBhbiBlcnJvciB0byB0aGUgYXBwLgogICAgICAgICAgICAgICAgIHRyeSB7CiAgICAgICAgICAgICAgICAgICAgIEludGVudCBmaWxsSW4gPSBuZXcgSW50ZW50KCk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChhci5yZXN1bHQgIT0gbnVsbCkgewogICAgICAgICAgICAgICAgICAgICAgICAgZmlsbEluLnB1dEV4dHJhKCJlcnJvckNvZGUiLCAoKFNtc1Jlc3BvbnNlKWFyLnJlc3VsdCkuZXJyb3JDb2RlKTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB0cmFja2VyLm1TZW50SW50ZW50LnNlbmQobUNvbnRleHQsIFJFU1VMVF9FUlJPUl9HRU5FUklDX0ZBSUxVUkUsIGZpbGxJbik7CisgICAgICAgICAgICAgICAgICAgIHRyYWNrZXIubVNlbnRJbnRlbnQuc2VuZChtQ29udGV4dCwgZXJyb3IsIGZpbGxJbik7CisKICAgICAgICAgICAgICAgICB9IGNhdGNoIChDYW5jZWxlZEV4Y2VwdGlvbiBleCkge30KICAgICAgICAgICAgIH0KICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L1NlcnZpY2VTdGF0ZVRyYWNrZXIuamF2YSBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9TZXJ2aWNlU3RhdGVUcmFja2VyLmphdmEKaW5kZXggNzM4MzY0OS4uZThiYmU1ZSAxMDA2NDQKLS0tIGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L1NlcnZpY2VTdGF0ZVRyYWNrZXIuamF2YQorKysgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvU2VydmljZVN0YXRlVHJhY2tlci5qYXZhCkBAIC00NCw2ICs0NCw3IEBACiAgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgREFUQV9BQ0NFU1NfSFNEUEEgPSA5OwogICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgaW50IERBVEFfQUNDRVNTX0hTVVBBID0gMTA7CiAgICAgcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBpbnQgREFUQV9BQ0NFU1NfSFNQQSA9IDExOworICAgIHByb3RlY3RlZCBzdGF0aWMgZmluYWwgaW50IERBVEFfQUNDRVNTX0NETUFfRXZEb19CID0gMTI7CiAKICAgICBwcm90ZWN0ZWQgQ29tbWFuZHNJbnRlcmZhY2UgY207CiAKQEAgLTIwNiw4ICsyMDcsOCBAQAogICAgIH0KIAogICAgIC8qKgotICAgICAqIFJlcmVnaXN0ZXIgbmV0d29yayB0aHJvdWdoIHRvZ2dsZSBwZXJmZXJyZWQgbmV0d29yayB0eXBlCi0gICAgICogVGhpcyBpcyBhIHdvcmsgYW9ydW5kIHRvIGRlcmVnaXN0ZXIgYW5kIHJlZ2lzdGVyIG5ldHdvcmsgc2luY2UgdGhlcmUgaXMKKyAgICAgKiBSZS1yZWdpc3RlciBuZXR3b3JrIGJ5IHRvZ2dsaW5nIHByZWZlcnJlZCBuZXR3b3JrIHR5cGUuCisgICAgICogVGhpcyBpcyBhIHdvcmstYXJvdW5kIHRvIGRlcmVnaXN0ZXIgYW5kIHJlZ2lzdGVyIG5ldHdvcmsgc2luY2UgdGhlcmUgaXMKICAgICAgKiBubyByaWwgYXBpIHRvIHNldCBDT1BTPTIgKGRlcmVnaXN0ZXIpIG9ubHkuCiAgICAgICoKICAgICAgKiBAcGFyYW0gb25Db21wbGV0ZSBpcyBkaXNwYXRjaGVkIHdoZW4gdGhpcyBpcyBjb21wbGV0ZS4gIGl0IHdpbGwgYmUKQEAgLTIyOSw3ICsyMzAsNyBAQAogICAgIC8qKgogICAgICAqIFRoZXNlIHR3byBmbGFncyBtYW5hZ2UgdGhlIGJlaGF2aW9yIG9mIHRoZSBjZWxsIGxvY2sgLS0gdGhlCiAgICAgICogbG9jayBzaG91bGQgYmUgaGVsZCBpZiBlaXRoZXIgZmxhZyBpcyB0cnVlLiAgVGhlIGludGVudGlvbiBpcwotICAgICAqIHRvIGFsbG93IHRlbXBvcmFyeSBhcXVpc2l0aW9uIG9mIHRoZSBsb2NrIHRvIGdldCBhIHNpbmdsZQorICAgICAqIHRvIGFsbG93IHRlbXBvcmFyeSBhY3F1aXNpdGlvbiBvZiB0aGUgbG9jayB0byBnZXQgYSBzaW5nbGUKICAgICAgKiB1cGRhdGUuICBTdWNoIGEgbG9jayBncmFiIGFuZCByZWxlYXNlIGNhbiB0aHVzIGJlIG1hZGUgdG8gbm90CiAgICAgICogaW50ZXJmZXJlIHdpdGggbW9yZSBwZXJtYW5lbnQgbG9jayBob2xkcyAtLSBpbiBvdGhlciB3b3JkcywgdGhlCiAgICAgICogbG9jayB3aWxsIG9ubHkgYmUgcmVsZWFzZWQgaWYgYm90aCBmbGFncyBhcmUgZmFsc2UsIGFuZCBzbwpkaWZmIC0tZ2l0IGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L1VVU0luZm8uamF2YSBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9VVVNJbmZvLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODAxYjg0NQotLS0gL2Rldi9udWxsCisrKyBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9VVVNJbmZvLmphdmEKQEAgLTAsMCArMSwxMDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworCitwYWNrYWdlIGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueTsKKworcHVibGljIGNsYXNzIFVVU0luZm8geworCisgICAgLyoKKyAgICAgKiBVc2VyLXRvLVVzZXIgc2lnbmFsaW5nIEluZm8gYWN0aXZhdGlvbiB0eXBlcyBkZXJpdmVkIGZyb20gM0dQUCAyMy4wODcKKyAgICAgKiB2OC4wCisgICAgICovCisKKyAgICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBVVVNfVFlQRTFfSU1QTElDSVQgPSAwOworCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVVVTX1RZUEUxX1JFUVVJUkVEID0gMTsKKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFVVU19UWVBFMV9OT1RfUkVRVUlSRUQgPSAyOworCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVVVTX1RZUEUyX1JFUVVJUkVEID0gMzsKKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFVVU19UWVBFMl9OT1RfUkVRVUlSRUQgPSA0OworCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVVVTX1RZUEUzX1JFUVVJUkVEID0gNTsKKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFVVU19UWVBFM19OT1RfUkVRVUlSRUQgPSA2OworCisgICAgLyoKKyAgICAgKiBVc2VyLXRvLVVzZXIgU2lnbmFsaW5nIEluZm9ybWF0aW9uIGRhdGEgY29kaW5nIHNjaGVtZXMuIFBvc3NpYmxlIHZhbHVlcworICAgICAqIGZvciBPY3RldCAzIChQcm90b2NvbCBEaXNjcmltaW5hdG9yIGZpZWxkKSBpbiB0aGUgVVVJRS4gVGhlIHZhbHVlcyBoYXZlCisgICAgICogYmVlbiBzcGVjaWZpZWQgaW4gc2VjdGlvbiAxMC41LjQuMjUgb2YgM0dQUCBUUyAyNC4wMDgKKyAgICAgKi8KKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFVVU19EQ1NfVVNQID0gMDsgLyogVXNlciBzcGVjaWZpZWQgcHJvdG9jb2wgKi8KKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFVVU19EQ1NfT1NJSExQID0gMTsgLyogT1NJIGhpZ2hlciBsYXllciBwcm90b2NvbCAqLworCisgICAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVVVTX0RDU19YMjQ0ID0gMjsgLyogWC4yNDQgKi8KKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFVVU19EQ1NfUk1DRiA9IDM7IC8qCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogUmVzZXJ2ZWQgZm9yIHN5c3RlbSBtYW5hZ2VtZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICogY29udmVyZ2VuY2UgZnVuY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKworICAgIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFVVU19EQ1NfSUE1YyA9IDQ7IC8qIElBNSBjaGFyYWN0ZXJzICovCisKKyAgICBwcml2YXRlIGludCB1dXNUeXBlOworCisgICAgcHJpdmF0ZSBpbnQgdXVzRGNzOworCisgICAgcHJpdmF0ZSBieXRlW10gdXVzRGF0YTsKKworICAgIHB1YmxpYyBVVVNJbmZvKCkgeworICAgICAgICB0aGlzLnV1c1R5cGUgPSBVVVNfVFlQRTFfSU1QTElDSVQ7CisgICAgICAgIHRoaXMudXVzRGNzID0gVVVTX0RDU19JQTVjOworICAgICAgICB0aGlzLnV1c0RhdGEgPSBudWxsOworICAgIH0KKworICAgIHB1YmxpYyBVVVNJbmZvKGludCB1dXNUeXBlLCBpbnQgdXVzRGNzLCBieXRlW10gdXVzRGF0YSkgeworICAgICAgICB0aGlzLnV1c1R5cGUgPSB1dXNUeXBlOworICAgICAgICB0aGlzLnV1c0RjcyA9IHV1c0RjczsKKyAgICAgICAgdGhpcy51dXNEYXRhID0gdXVzRGF0YTsKKyAgICB9CisKKyAgICBwdWJsaWMgaW50IGdldERjcygpIHsKKyAgICAgICAgcmV0dXJuIHV1c0RjczsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXREY3MoaW50IHV1c0RjcykgeworICAgICAgICB0aGlzLnV1c0RjcyA9IHV1c0RjczsKKyAgICB9CisKKyAgICBwdWJsaWMgaW50IGdldFR5cGUoKSB7CisgICAgICAgIHJldHVybiB1dXNUeXBlOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldFR5cGUoaW50IHV1c1R5cGUpIHsKKyAgICAgICAgdGhpcy51dXNUeXBlID0gdXVzVHlwZTsKKyAgICB9CisKKyAgICBwdWJsaWMgYnl0ZVtdIGdldFVzZXJEYXRhKCkgeworICAgICAgICByZXR1cm4gdXVzRGF0YTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRVc2VyRGF0YShieXRlW10gdXVzRGF0YSkgeworICAgICAgICB0aGlzLnV1c0RhdGEgPSB1dXNEYXRhOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9jZG1hL0NETUFQaG9uZS5qYXZhIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2NkbWEvQ0RNQVBob25lLmphdmEKaW5kZXggMWY1YWNjZi4uMGM1OTFlNCAxMDA3NTUKLS0tIGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2NkbWEvQ0RNQVBob25lLmphdmEKKysrIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2NkbWEvQ0RNQVBob25lLmphdmEKQEAgLTYyLDExICs2MiwxMyBAQAogaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5QaG9uZVN1YkluZm87CiBpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LlRlbGVwaG9ueUludGVudHM7CiBpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LlRlbGVwaG9ueVByb3BlcnRpZXM7CitpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LlVVU0luZm87CiAKIGltcG9ydCBzdGF0aWMgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LlRlbGVwaG9ueVByb3BlcnRpZXMuUFJPUEVSVFlfSUNDX09QRVJBVE9SX0FMUEhBOwogaW1wb3J0IHN0YXRpYyBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuVGVsZXBob255UHJvcGVydGllcy5QUk9QRVJUWV9JQ0NfT1BFUkFUT1JfTlVNRVJJQzsKIGltcG9ydCBzdGF0aWMgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LlRlbGVwaG9ueVByb3BlcnRpZXMuUFJPUEVSVFlfSUNDX09QRVJBVE9SX0lTT19DT1VOVFJZOwogCitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKIGltcG9ydCBqYXZhLnV0aWwuTGlzdDsKIAogCkBAIC0xMDEsNiArMTAzLDcgQEAKICAgICBSdWltRmlsZUhhbmRsZXIgbVJ1aW1GaWxlSGFuZGxlcjsKICAgICBSdWltUmVjb3JkcyBtUnVpbVJlY29yZHM7CiAgICAgUnVpbUNhcmQgbVJ1aW1DYXJkOworICAgIEFycmF5TGlzdCA8Q2RtYU1taUNvZGU+IG1QZW5kaW5nTW1pcyA9IG5ldyBBcnJheUxpc3Q8Q2RtYU1taUNvZGU+KCk7CiAgICAgUnVpbVBob25lQm9va0ludGVyZmFjZU1hbmFnZXIgbVJ1aW1QaG9uZUJvb2tJbnRlcmZhY2VNYW5hZ2VyOwogICAgIFJ1aW1TbXNJbnRlcmZhY2VNYW5hZ2VyIG1SdWltU21zSW50ZXJmYWNlTWFuYWdlcjsKICAgICBQaG9uZVN1YkluZm8gbVN1YkluZm87CkBAIC0yMTksNiArMjIyLDggQEAKICAgICAgICAgICAgIG1TU1QudW5yZWdpc3RlckZvck5ldHdvcmtBdHRhY2godGhpcyk7IC8vRVZFTlRfUkVHSVNURVJFRF9UT19ORVRXT1JLCiAgICAgICAgICAgICBtQ00udW5TZXRPblN1cHBTZXJ2aWNlTm90aWZpY2F0aW9uKHRoaXMpOwogCisgICAgICAgICAgICBtUGVuZGluZ01taXMuY2xlYXIoKTsKKwogICAgICAgICAgICAgLy9Gb3JjZSBhbGwgcmVmZXJlbmNlZCBjbGFzc2VzIHRvIHVucmVnaXN0ZXIgdGhlaXIgZm9ybWVyIHJlZ2lzdGVyZWQgZXZlbnRzCiAgICAgICAgICAgICBtQ1QuZGlzcG9zZSgpOwogICAgICAgICAgICAgbURhdGFDb25uZWN0aW9uLmRpc3Bvc2UoKTsKQEAgLTM0NCw2ICszNDksMTAgQEAKICAgICAgICAgcmV0dXJuIG1DVC5kaWFsKG5ld0RpYWxTdHJpbmcpOwogICAgIH0KIAorICAgIHB1YmxpYyBDb25uZWN0aW9uIGRpYWwoU3RyaW5nIGRpYWxTdHJpbmcsIFVVU0luZm8gdXVzSW5mbykgdGhyb3dzIENhbGxTdGF0ZUV4Y2VwdGlvbiB7CisgICAgICAgIHRocm93IG5ldyBDYWxsU3RhdGVFeGNlcHRpb24oIlNlbmRpbmcgVVVTIGluZm9ybWF0aW9uIE5PVCBzdXBwb3J0ZWQgaW4gQ0RNQSEiKTsKKyAgICB9CisKICAgICBwdWJsaWMgU2lnbmFsU3RyZW5ndGggZ2V0U2lnbmFsU3RyZW5ndGgoKSB7CiAgICAgICAgIHJldHVybiBtU1NULm1TaWduYWxTdHJlbmd0aDsKICAgICB9CkBAIC0zNTUsOCArMzY0LDcgQEAKIAogICAgIHB1YmxpYyBMaXN0PD8gZXh0ZW5kcyBNbWlDb2RlPgogICAgIGdldFBlbmRpbmdNbWlDb2RlcygpIHsKLSAgICAgICAgTG9nLmUoTE9HX1RBRywgIm1ldGhvZCBnZXRQZW5kaW5nTW1pQ29kZXMgaXMgTk9UIHN1cHBvcnRlZCBpbiBDRE1BISIpOwotICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgcmV0dXJuIG1QZW5kaW5nTW1pczsKICAgICB9CiAKICAgICBwdWJsaWMgdm9pZCByZWdpc3RlckZvclN1cHBTZXJ2aWNlTm90aWZpY2F0aW9uKApAQCAtMzczLDYgKzM4MSwxNSBAQAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCisgICAgYm9vbGVhbiBpc0luQ2FsbCgpIHsKKyAgICAgICAgQ2RtYUNhbGwuU3RhdGUgZm9yZWdyb3VuZENhbGxTdGF0ZSA9IGdldEZvcmVncm91bmRDYWxsKCkuZ2V0U3RhdGUoKTsKKyAgICAgICAgQ2RtYUNhbGwuU3RhdGUgYmFja2dyb3VuZENhbGxTdGF0ZSA9IGdldEJhY2tncm91bmRDYWxsKCkuZ2V0U3RhdGUoKTsKKyAgICAgICAgQ2RtYUNhbGwuU3RhdGUgcmluZ2luZ0NhbGxTdGF0ZSA9IGdldFJpbmdpbmdDYWxsKCkuZ2V0U3RhdGUoKTsKKworICAgICAgICByZXR1cm4gKGZvcmVncm91bmRDYWxsU3RhdGUuaXNBbGl2ZSgpIHx8IGJhY2tncm91bmRDYWxsU3RhdGUuaXNBbGl2ZSgpIHx8IHJpbmdpbmdDYWxsU3RhdGUKKyAgICAgICAgICAgICAgICAuaXNBbGl2ZSgpKTsKKyAgICB9CisKICAgICBwdWJsaWMgdm9pZAogICAgIHNldE5ldHdvcmtTZWxlY3Rpb25Nb2RlQXV0b21hdGljKE1lc3NhZ2UgcmVzcG9uc2UpIHsKICAgICAgICAgTG9nLmUoTE9HX1RBRywgIm1ldGhvZCBzZXROZXR3b3JrU2VsZWN0aW9uTW9kZUF1dG9tYXRpYyBpcyBOT1Qgc3VwcG9ydGVkIGluIENETUEhIik7CkBAIC00NzIsNyArNDg5LDE4IEBACiAgICAgfQogCiAgICAgcHVibGljIGJvb2xlYW4gaGFuZGxlUGluTW1pKFN0cmluZyBkaWFsU3RyaW5nKSB7Ci0gICAgICAgIExvZy5lKExPR19UQUcsICJtZXRob2QgaGFuZGxlUGluTW1pIGlzIE5PVCBzdXBwb3J0ZWQgaW4gQ0RNQSEiKTsKKyAgICAgICAgQ2RtYU1taUNvZGUgbW1pID0gQ2RtYU1taUNvZGUubmV3RnJvbURpYWxTdHJpbmcoZGlhbFN0cmluZywgdGhpcyk7CisKKyAgICAgICAgaWYgKG1taSA9PSBudWxsKSB7CisgICAgICAgICAgICBMb2cuZShMT0dfVEFHLCAiTW1pIGlzIE5VTEwhIik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0gZWxzZSBpZiAobW1pLmlzUHVrQ29tbWFuZCgpKSB7CisgICAgICAgICAgICBtUGVuZGluZ01taXMuYWRkKG1taSk7CisgICAgICAgICAgICBtTW1pUmVnaXN0cmFudHMubm90aWZ5UmVnaXN0cmFudHMobmV3IEFzeW5jUmVzdWx0KG51bGwsIG1taSwgbnVsbCkpOworICAgICAgICAgICAgbW1pLnByb2Nlc3NDb2RlKCk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICBMb2cuZShMT0dfVEFHLCAiVW5yZWNvZ25pemVkIG1taSEiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNDg0LDYgKzUxMiwyMiBAQAogICAgICAgICAgICAgICAgIChtRGF0YUNvbm5lY3Rpb24uZ2V0RGF0YU9uUm9hbWluZ0VuYWJsZWQoKSB8fCAhZ2V0U2VydmljZVN0YXRlKCkuZ2V0Um9hbWluZygpKTsKICAgICB9CiAKKyAgICAvKioKKyAgICAgKiBSZW1vdmVzIHRoZSBnaXZlbiBNTUkgZnJvbSB0aGUgcGVuZGluZyBsaXN0IGFuZCBub3RpZmllcyByZWdpc3RyYW50cyB0aGF0CisgICAgICogaXQgaXMgY29tcGxldGUuCisgICAgICoKKyAgICAgKiBAcGFyYW0gbW1pIE1NSSB0aGF0IGlzIGRvbmUKKyAgICAgKi8KKyAgICB2b2lkIG9uTU1JRG9uZShDZG1hTW1pQ29kZSBtbWkpIHsKKyAgICAgICAgLyoKKyAgICAgICAgICogT25seSBub3RpZnkgY29tcGxldGUgaWYgaXQncyBvbiB0aGUgcGVuZGluZyBsaXN0LiBPdGhlcndpc2UsIGl0J3MKKyAgICAgICAgICogYWxyZWFkeSBiZWVuIGhhbmRsZWQgKGVnLCBwcmV2aW91c2x5IGNhbmNlbGVkKS4KKyAgICAgICAgICovCisgICAgICAgIGlmIChtUGVuZGluZ01taXMucmVtb3ZlKG1taSkpIHsKKyAgICAgICAgICAgIG1NbWlDb21wbGV0ZVJlZ2lzdHJhbnRzLm5vdGlmeVJlZ2lzdHJhbnRzKG5ldyBBc3luY1Jlc3VsdChudWxsLCBtbWksIG51bGwpKTsKKyAgICAgICAgfQorICAgIH0KKwogICAgIHB1YmxpYyB2b2lkIHNldExpbmUxTnVtYmVyKFN0cmluZyBhbHBoYVRhZywgU3RyaW5nIG51bWJlciwgTWVzc2FnZSBvbkNvbXBsZXRlKSB7CiAgICAgICAgIExvZy5lKExPR19UQUcsICJzZXRMaW5lMU51bWJlcjogbm90IHBvc3NpYmxlIGluIENETUEiKTsKICAgICB9CkBAIC0xNDA1LDUgKzE0NDksNCBAQAogICAgICAgICB9CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9Ci0KIH0KZGlmZiAtLWdpdCBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9jZG1hL0NkbWFDYWxsVHJhY2tlci5qYXZhIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2NkbWEvQ2RtYUNhbGxUcmFja2VyLmphdmEKaW5kZXggMTAwNWQyMC4uMzY2OWU2MCAxMDA2NDQKLS0tIGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2NkbWEvQ2RtYUNhbGxUcmFja2VyLmphdmEKKysrIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2NkbWEvQ2RtYUNhbGxUcmFja2VyLmphdmEKQEAgLTYxLDcgKzYxLDcgQEAKICAgICBSZWdpc3RyYW50TGlzdCBjYWxsV2FpdGluZ1JlZ2lzdHJhbnRzID0gIG5ldyBSZWdpc3RyYW50TGlzdCgpOwogCiAKLSAgICAvLyBjb25uZWN0aW9ucyBkcm9wcGVkIGR1cmluIGxhc3QgcG9sbAorICAgIC8vIGNvbm5lY3Rpb25zIGRyb3BwZWQgZHVyaW5nIGxhc3QgcG9sbAogICAgIEFycmF5TGlzdDxDZG1hQ29ubmVjdGlvbj4gZHJvcHBlZER1cmluZ1BvbGwKICAgICAgICAgPSBuZXcgQXJyYXlMaXN0PENkbWFDb25uZWN0aW9uPihNQVhfQ09OTkVDVElPTlMpOwogCmRpZmYgLS1naXQgYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvY2RtYS9DZG1hQ29ubmVjdGlvbi5qYXZhIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2NkbWEvQ2RtYUNvbm5lY3Rpb24uamF2YQppbmRleCAxODgxNDViLi5mYmU0NTVlIDEwMDc1NQotLS0gYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvY2RtYS9DZG1hQ29ubmVjdGlvbi5qYXZhCisrKyBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9jZG1hL0NkbWFDb25uZWN0aW9uLmphdmEKQEAgLTk0NSw0ICs5NDUsMTAgQEAKICAgICBwdWJsaWMgaW50IGdldE51bWJlclByZXNlbnRhdGlvbigpIHsKICAgICAgICAgcmV0dXJuIG51bWJlclByZXNlbnRhdGlvbjsKICAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgVVVTSW5mbyBnZXRVVVNJbmZvKCkgeworICAgICAgICAvLyBVVVMgaW5mb3JtYXRpb24gbm90IHN1cHBvcnRlZCBpbiBDRE1BCisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KIH0KZGlmZiAtLWdpdCBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9jZG1hL0NkbWFEYXRhQ29ubmVjdGlvblRyYWNrZXIuamF2YSBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9jZG1hL0NkbWFEYXRhQ29ubmVjdGlvblRyYWNrZXIuamF2YQppbmRleCAyMTdlMWU4Li45ZjJhNDRiIDEwMDY0NAotLS0gYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvY2RtYS9DZG1hRGF0YUNvbm5lY3Rpb25UcmFja2VyLmphdmEKKysrIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2NkbWEvQ2RtYURhdGFDb25uZWN0aW9uVHJhY2tlci5qYXZhCkBAIC0xMTQsNyArMTE0LDcgQEAKICAgICAvLyBpZiB3ZSBoYXZlIG5vIGFjdGl2ZSBBcG4gdGhpcyBpcyBudWxsCiAgICAgcHJvdGVjdGVkIEFwblNldHRpbmcgbUFjdGl2ZUFwbjsKIAotICAgIC8vIFBvc3NpYmx5IHByb21vYXRlIHRvIGJhc2UgY2xhc3MsIHRoZSBvbmx5IGRpZmZlcmVuY2UgaXMKKyAgICAvLyBQb3NzaWJseSBwcm9tb3RlIHRvIGJhc2UgY2xhc3MsIHRoZSBvbmx5IGRpZmZlcmVuY2UgaXMKICAgICAvLyB0aGUgSU5URU5UX1JFQ09OTkVDVF9BTEFSTSBhY3Rpb24gaXMgYSBkaWZmZXJlbnQgc3RyaW5nLgogICAgIC8vIERvIGNvbnNpZGVyIHRlY2hub2xvZ3kgY2hhbmdlcyBpZiBpdCBpcyBwcm9tb3RlZC4KICAgICBCcm9hZGNhc3RSZWNlaXZlciBtSW50ZW50UmVjZWl2ZXIgPSBuZXcgQnJvYWRjYXN0UmVjZWl2ZXIgKCkKQEAgLTQyMCw3ICs0MjAsNyBAQAogICAgICAgICBDZG1hRGF0YUNvbm5lY3Rpb24gY29ubiA9IGZpbmRGcmVlRGF0YUNvbm5lY3Rpb24oKTsKIAogICAgICAgICBpZiAoY29ubiA9PSBudWxsKSB7Ci0gICAgICAgICAgICBpZiAoREJHKSBsb2coInNldHVwRGF0YTogTm8gZnJlZSBDZG1hRGF0YUNvbm5lY3Rpb25mb3VuZCEiKTsKKyAgICAgICAgICAgIGlmIChEQkcpIGxvZygic2V0dXBEYXRhOiBObyBmcmVlIENkbWFEYXRhQ29ubmVjdGlvbiBmb3VuZCEiKTsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCkBAIC02NDYsNyArNjQ2LDcgQEAKICAgICB9CiAKICAgICAvKioKLSAgICAgKiBAb3ZlcnJpZGUgY29tLmFuZHJvaWQuaW50ZW5yYWwudGVsZXBob255LkRhdGFDb25uZWN0aW9uVHJhY2tlcgorICAgICAqIEBvdmVycmlkZSBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuRGF0YUNvbm5lY3Rpb25UcmFja2VyCiAgICAgICovCiAgICAgQE92ZXJyaWRlCiAgICAgcHJvdGVjdGVkIHZvaWQgb25FbmFibGVOZXdBcG4oKSB7CmRpZmYgLS1naXQgYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvY2RtYS9DZG1hTW1pQ29kZS5qYXZhIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2NkbWEvQ2RtYU1taUNvZGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZGQ4YzJlCi0tLSAvZGV2L251bGwKKysrIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2NkbWEvQ2RtYU1taUNvZGUuamF2YQpAQCAtMCwwICsxLDI5NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAwNiBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisgKgorICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisKK3BhY2thZ2UgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LmNkbWE7CisKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKKworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5Db21tYW5kRXhjZXB0aW9uOworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5NbWlDb2RlOworCitpbXBvcnQgYW5kcm9pZC5vcy5Bc3luY1Jlc3VsdDsKK2ltcG9ydCBhbmRyb2lkLm9zLkhhbmRsZXI7CitpbXBvcnQgYW5kcm9pZC5vcy5NZXNzYWdlOworaW1wb3J0IGFuZHJvaWQudXRpbC5Mb2c7CisKK2ltcG9ydCBqYXZhLnV0aWwucmVnZXguUGF0dGVybjsKK2ltcG9ydCBqYXZhLnV0aWwucmVnZXguTWF0Y2hlcjsKKworLyoqCisgKiBUaGlzIGNsYXNzIGNhbiBoYW5kbGUgUHVrIGNvZGUgTW1pCisgKgorICoge0BoaWRlfQorICoKKyAqLworcHVibGljIGZpbmFsIGNsYXNzIENkbWFNbWlDb2RlICBleHRlbmRzIEhhbmRsZXIgaW1wbGVtZW50cyBNbWlDb2RlIHsKKyAgICBzdGF0aWMgZmluYWwgU3RyaW5nIExPR19UQUcgPSAiQ0RNQV9NTUkiOworCisgICAgLy8gQ29uc3RhbnRzCisKKyAgICAvLyBGcm9tIFRTIDIyLjAzMCA2LjUuMgorICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQUNUSU9OX1JFR0lTVEVSID0gIioqIjsKKworICAgIC8vIFN1cHAgU2VydmljZSBjb2RlcyBmcm9tIFRTIDIyLjAzMCBBbm5leCBCCisgICAgc3RhdGljIGZpbmFsIFN0cmluZyBTQ19QVUsgICAgICAgICAgPSAiMDUiOworCisgICAgLy8gRXZlbnQgQ29uc3RhbnQKKworICAgIHN0YXRpYyBmaW5hbCBpbnQgRVZFTlRfU0VUX0NPTVBMRVRFID0gMTsKKworICAgIC8vIEluc3RhbmNlIFZhcmlhYmxlcworCisgICAgQ0RNQVBob25lIHBob25lOworICAgIENvbnRleHQgY29udGV4dDsKKworICAgIFN0cmluZyBhY3Rpb247ICAgICAgICAgICAgICAvLyBBQ1RJT05fUkVHSVNURVIKKyAgICBTdHJpbmcgc2M7ICAgICAgICAgICAgICAgICAgLy8gU2VydmljZSBDb2RlCisgICAgU3RyaW5nIHNpYSwgc2liLCBzaWM7ICAgICAgIC8vIFNlcnZpY2UgSW5mbyBhLGIsYworICAgIFN0cmluZyBwb3VuZFN0cmluZzsgICAgICAgICAvLyBFbnRpcmUgTU1JIHN0cmluZyB1cCB0byBhbmQgaW5jbHVkaW5nICMKKyAgICBTdHJpbmcgZGlhbGluZ051bWJlcjsKKyAgICBTdHJpbmcgcHdkOyAgICAgICAgICAgICAgICAgLy8gRm9yIHBhc3N3b3JkIHJlZ2lzdHJhdGlvbgorCisgICAgU3RhdGUgc3RhdGUgPSBTdGF0ZS5QRU5ESU5HOworICAgIENoYXJTZXF1ZW5jZSBtZXNzYWdlOworCisgICAgLy8gQ2xhc3MgVmFyaWFibGVzCisKKyAgICBzdGF0aWMgUGF0dGVybiBzUGF0dGVyblN1cHBTZXJ2aWNlID0gUGF0dGVybi5jb21waWxlKAorICAgICAgICAiKChcXCp8I3xcXCojfFxcKlxcKnwjIykoXFxkezIsM30pKFxcKihbXiojXSopKFxcKihbXiojXSopKFxcKihbXiojXSopKFxcKihbXiojXSopKT8pPyk/KT8jKSguKikiKTsKKy8qICAgICAgIDEgIDIgICAgICAgICAgICAgICAgICAgIDMgICAgICAgICAgNCAgNSAgICAgICA2ICAgNyAgICAgICAgIDggICAgOSAgICAgMTAgIDExICAgICAgICAgICAgIDEyCisKKyAgICAgICAgIDEgPSBGdWxsIHN0cmluZyB1cCB0byBhbmQgaW5jbHVkaW5nICMKKyAgICAgICAgIDIgPSBhY3Rpb24KKyAgICAgICAgIDMgPSBzZXJ2aWNlIGNvZGUKKyAgICAgICAgIDUgPSBTSUEKKyAgICAgICAgIDcgPSBTSUIKKyAgICAgICAgIDkgPSBTSUMKKyAgICAgICAgIDEwID0gZGlhbGluZyBudW1iZXIKKyovCisKKyAgICBzdGF0aWMgZmluYWwgaW50IE1BVENIX0dST1VQX1BPVU5EX1NUUklORyA9IDE7CisgICAgc3RhdGljIGZpbmFsIGludCBNQVRDSF9HUk9VUF9BQ1RJT04gPSAyOworICAgIHN0YXRpYyBmaW5hbCBpbnQgTUFUQ0hfR1JPVVBfU0VSVklDRV9DT0RFID0gMzsKKyAgICBzdGF0aWMgZmluYWwgaW50IE1BVENIX0dST1VQX1NJQSA9IDU7CisgICAgc3RhdGljIGZpbmFsIGludCBNQVRDSF9HUk9VUF9TSUIgPSA3OworICAgIHN0YXRpYyBmaW5hbCBpbnQgTUFUQ0hfR1JPVVBfU0lDID0gOTsKKyAgICBzdGF0aWMgZmluYWwgaW50IE1BVENIX0dST1VQX1BXRF9DT05GSVJNID0gMTE7CisgICAgc3RhdGljIGZpbmFsIGludCBNQVRDSF9HUk9VUF9ESUFMSU5HX05VTUJFUiA9IDEyOworCisKKyAgICAvLyBQdWJsaWMgQ2xhc3MgbWV0aG9kcworCisgICAgLyoqCisgICAgICogQ2hlY2sgaWYgcHJvdmlkZWQgc3RyaW5nIGNvbnRhaW5zIE1taSBjb2RlIGluIGl0IGFuZCBjcmVhdGUgY29ycmVzcG9uZGluZworICAgICAqIE1taSBpZiBpdCBkb2VzCisgICAgICovCisKKyAgICBwdWJsaWMgc3RhdGljIENkbWFNbWlDb2RlCisgICAgbmV3RnJvbURpYWxTdHJpbmcoU3RyaW5nIGRpYWxTdHJpbmcsIENETUFQaG9uZSBwaG9uZSkgeworICAgICAgICBNYXRjaGVyIG07CisgICAgICAgIENkbWFNbWlDb2RlIHJldCA9IG51bGw7CisKKyAgICAgICAgbSA9IHNQYXR0ZXJuU3VwcFNlcnZpY2UubWF0Y2hlcihkaWFsU3RyaW5nKTsKKworICAgICAgICAvLyBJcyB0aGlzIGZvcm1hdHRlZCBsaWtlIGEgc3RhbmRhcmQgc3VwcGxlbWVudGFyeSBzZXJ2aWNlIGNvZGU/CisgICAgICAgIGlmIChtLm1hdGNoZXMoKSkgeworICAgICAgICAgICAgcmV0ID0gbmV3IENkbWFNbWlDb2RlKHBob25lKTsKKyAgICAgICAgICAgIHJldC5wb3VuZFN0cmluZyA9IG1ha2VFbXB0eU51bGwobS5ncm91cChNQVRDSF9HUk9VUF9QT1VORF9TVFJJTkcpKTsKKyAgICAgICAgICAgIHJldC5hY3Rpb24gPSBtYWtlRW1wdHlOdWxsKG0uZ3JvdXAoTUFUQ0hfR1JPVVBfQUNUSU9OKSk7CisgICAgICAgICAgICByZXQuc2MgPSBtYWtlRW1wdHlOdWxsKG0uZ3JvdXAoTUFUQ0hfR1JPVVBfU0VSVklDRV9DT0RFKSk7CisgICAgICAgICAgICByZXQuc2lhID0gbWFrZUVtcHR5TnVsbChtLmdyb3VwKE1BVENIX0dST1VQX1NJQSkpOworICAgICAgICAgICAgcmV0LnNpYiA9IG1ha2VFbXB0eU51bGwobS5ncm91cChNQVRDSF9HUk9VUF9TSUIpKTsKKyAgICAgICAgICAgIHJldC5zaWMgPSBtYWtlRW1wdHlOdWxsKG0uZ3JvdXAoTUFUQ0hfR1JPVVBfU0lDKSk7CisgICAgICAgICAgICByZXQucHdkID0gbWFrZUVtcHR5TnVsbChtLmdyb3VwKE1BVENIX0dST1VQX1BXRF9DT05GSVJNKSk7CisgICAgICAgICAgICByZXQuZGlhbGluZ051bWJlciA9IG1ha2VFbXB0eU51bGwobS5ncm91cChNQVRDSF9HUk9VUF9ESUFMSU5HX05VTUJFUikpOworCisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gcmV0OworICAgIH0KKworICAgIC8vIFByaXZhdGUgQ2xhc3MgbWV0aG9kcworCisgICAgLyoqIG1ha2UgZW1wdHkgc3RyaW5ncyBiZSBudWxsLgorICAgICAqICBSZWdleHAgcmV0dXJucyBlbXB0eSBzdHJpbmdzIGZvciBlbXB0eSBncm91cHMKKyAgICAgKi8KKyAgICBwcml2YXRlIHN0YXRpYyBTdHJpbmcKKyAgICBtYWtlRW1wdHlOdWxsIChTdHJpbmcgcykgeworICAgICAgICBpZiAocyAhPSBudWxsICYmIHMubGVuZ3RoKCkgPT0gMCkgcmV0dXJuIG51bGw7CisKKyAgICAgICAgcmV0dXJuIHM7CisgICAgfQorCisgICAgLy8gQ29uc3RydWN0b3IKKworICAgIENkbWFNbWlDb2RlIChDRE1BUGhvbmUgcGhvbmUpIHsKKyAgICAgICAgc3VwZXIocGhvbmUuZ2V0SGFuZGxlcigpLmdldExvb3BlcigpKTsKKyAgICAgICAgdGhpcy5waG9uZSA9IHBob25lOworICAgICAgICB0aGlzLmNvbnRleHQgPSBwaG9uZS5nZXRDb250ZXh0KCk7CisgICAgfQorCisgICAgLy8gTW1pQ29kZSBpbXBsZW1lbnRhdGlvbgorCisgICAgcHVibGljIFN0YXRlCisgICAgZ2V0U3RhdGUoKSB7CisgICAgICAgIHJldHVybiBzdGF0ZTsKKyAgICB9CisKKyAgICBwdWJsaWMgQ2hhclNlcXVlbmNlCisgICAgZ2V0TWVzc2FnZSgpIHsKKyAgICAgICAgcmV0dXJuIG1lc3NhZ2U7CisgICAgfQorCisgICAgLy8gaW5oZXJpdGVkIGphdmFkb2Mgc3VmZmljZXMKKyAgICBwdWJsaWMgdm9pZAorICAgIGNhbmNlbCgpIHsKKyAgICAgICAgLy8gQ29tcGxldGUgb3IgZmFpbGVkIGNhbm5vdCBiZSBjYW5jZWxsZWQKKyAgICAgICAgaWYgKHN0YXRlID09IFN0YXRlLkNPTVBMRVRFIHx8IHN0YXRlID09IFN0YXRlLkZBSUxFRCkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgc3RhdGUgPSBTdGF0ZS5DQU5DRUxMRUQ7CisgICAgICAgIHBob25lLm9uTU1JRG9uZSAodGhpcyk7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gaXNDYW5jZWxhYmxlKCkgeworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLy8gSW5zdGFuY2UgTWV0aG9kcworCisgICAgLyoqCisgICAgICogQHJldHVybiB0cnVlIGlmIHRoZSBTZXJ2aWNlIENvZGUgaXMgUElOL1BJTjIvUFVLL1BVSzItcmVsYXRlZAorICAgICAqLworICAgIGJvb2xlYW4gaXNQdWtDb21tYW5kKCkgeworICAgICAgICByZXR1cm4gc2MgIT0gbnVsbCAmJiBzYy5lcXVhbHMoU0NfUFVLKTsKKyAgICAgfQorCisgICAgYm9vbGVhbiBpc1JlZ2lzdGVyKCkgeworICAgICAgICByZXR1cm4gYWN0aW9uICE9IG51bGwgJiYgYWN0aW9uLmVxdWFscyhBQ1RJT05fUkVHSVNURVIpOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGlzVXNzZFJlcXVlc3QoKSB7CisgICAgICAgIExvZy53KExPR19UQUcsICJpc1Vzc2RSZXF1ZXN0IGlzIG5vdCBpbXBsZW1lbnRlZCBpbiBDZG1hTW1pQ29kZSIpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorCisgICAgLyoqIFByb2Nlc3MgYSBNTUkgUFVLIGNvZGUgKi8KKyAgICB2b2lkCisgICAgcHJvY2Vzc0NvZGUgKCkgeworICAgICAgICB0cnkgeworICAgICAgICAgICAgaWYgKGlzUHVrQ29tbWFuZCgpKSB7CisgICAgICAgICAgICAgICAgLy8gc2lhID0gb2xkIFBVSworICAgICAgICAgICAgICAgIC8vIHNpYiA9IG5ldyBQSU4KKyAgICAgICAgICAgICAgICAvLyBzaWMgPSBuZXcgUElOCisgICAgICAgICAgICAgICAgU3RyaW5nIG9sZFBpbk9yUHVrID0gc2lhOworICAgICAgICAgICAgICAgIFN0cmluZyBuZXdQaW4gPSBzaWI7CisgICAgICAgICAgICAgICAgaW50IHBpbkxlbiA9IG5ld1Bpbi5sZW5ndGgoKTsKKyAgICAgICAgICAgICAgICBpZiAoaXNSZWdpc3RlcigpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghbmV3UGluLmVxdWFscyhzaWMpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYXNzd29yZCBtaXNtYXRjaDsgcmV0dXJuIGVycm9yCisgICAgICAgICAgICAgICAgICAgICAgICBoYW5kbGVQYXNzd29yZEVycm9yKGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLm1pc21hdGNoUGluKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwaW5MZW4gPCA0IHx8IHBpbkxlbiA+IDggKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnZhbGlkIGxlbmd0aAorICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlUGFzc3dvcmRFcnJvcihjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy5pbnZhbGlkUGluKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBob25lLm1DTS5zdXBwbHlJY2NQdWsob2xkUGluT3JQdWssIG5ld1BpbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2J0YWluTWVzc2FnZShFVkVOVF9TRVRfQ09NUExFVEUsIHRoaXMpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uICgiSW52YWxpZCBvciBVbnN1cHBvcnRlZCBNTUkgQ29kZSIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24gKCJJbnZhbGlkIG9yIFVuc3VwcG9ydGVkIE1NSSBDb2RlIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0gY2F0Y2ggKFJ1bnRpbWVFeGNlcHRpb24gZXhjKSB7CisgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlLkZBSUxFRDsKKyAgICAgICAgICAgIG1lc3NhZ2UgPSBjb250ZXh0LmdldFRleHQoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcubW1pRXJyb3IpOworICAgICAgICAgICAgcGhvbmUub25NTUlEb25lKHRoaXMpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGhhbmRsZVBhc3N3b3JkRXJyb3IoaW50IHJlcykgeworICAgICAgICBzdGF0ZSA9IFN0YXRlLkZBSUxFRDsKKyAgICAgICAgU3RyaW5nQnVpbGRlciBzYiA9IG5ldyBTdHJpbmdCdWlsZGVyKGdldFNjU3RyaW5nKCkpOworICAgICAgICBzYi5hcHBlbmQoIlxuIik7CisgICAgICAgIHNiLmFwcGVuZChjb250ZXh0LmdldFRleHQocmVzKSk7CisgICAgICAgIG1lc3NhZ2UgPSBzYjsKKyAgICAgICAgcGhvbmUub25NTUlEb25lKHRoaXMpOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkCisgICAgaGFuZGxlTWVzc2FnZSAoTWVzc2FnZSBtc2cpIHsKKyAgICAgICAgQXN5bmNSZXN1bHQgYXI7CisKKyAgICAgICAgaWYgKG1zZy53aGF0ID09IEVWRU5UX1NFVF9DT01QTEVURSkgeworICAgICAgICAgICAgYXIgPSAoQXN5bmNSZXN1bHQpIChtc2cub2JqKTsKKyAgICAgICAgICAgIG9uU2V0Q29tcGxldGUoYXIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgTG9nLmUoTE9HX1RBRywgIlVuZXhwZWN0ZWQgcmVwbHkiKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAvLyBQcml2YXRlIGluc3RhbmNlIG1ldGhvZHMKKworICAgIHByaXZhdGUgQ2hhclNlcXVlbmNlIGdldFNjU3RyaW5nKCkgeworICAgICAgICBpZiAoc2MgIT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKGlzUHVrQ29tbWFuZCgpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbnRleHQuZ2V0VGV4dChjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy5QaW5NbWkpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuICIiOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZAorICAgIG9uU2V0Q29tcGxldGUoQXN5bmNSZXN1bHQgYXIpeworICAgICAgICBTdHJpbmdCdWlsZGVyIHNiID0gbmV3IFN0cmluZ0J1aWxkZXIoZ2V0U2NTdHJpbmcoKSk7CisgICAgICAgIHNiLmFwcGVuZCgiXG4iKTsKKworICAgICAgICBpZiAoYXIuZXhjZXB0aW9uICE9IG51bGwpIHsKKyAgICAgICAgICAgIHN0YXRlID0gU3RhdGUuRkFJTEVEOworICAgICAgICAgICAgaWYgKGFyLmV4Y2VwdGlvbiBpbnN0YW5jZW9mIENvbW1hbmRFeGNlcHRpb24pIHsKKyAgICAgICAgICAgICAgICBDb21tYW5kRXhjZXB0aW9uLkVycm9yIGVyciA9ICgoQ29tbWFuZEV4Y2VwdGlvbikoYXIuZXhjZXB0aW9uKSkuZ2V0Q29tbWFuZEVycm9yKCk7CisgICAgICAgICAgICAgICAgaWYgKGVyciA9PSBDb21tYW5kRXhjZXB0aW9uLkVycm9yLlBBU1NXT1JEX0lOQ09SUkVDVCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoaXNQdWtDb21tYW5kKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHNiLmFwcGVuZChjb250ZXh0LmdldFRleHQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLmJhZFB1aykpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgc2IuYXBwZW5kKGNvbnRleHQuZ2V0VGV4dCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcucGFzc3dvcmRJbmNvcnJlY3QpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHNiLmFwcGVuZChjb250ZXh0LmdldFRleHQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcubW1pRXJyb3IpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHNiLmFwcGVuZChjb250ZXh0LmdldFRleHQoCisgICAgICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy5tbWlFcnJvcikpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgaWYgKGlzUmVnaXN0ZXIoKSkgeworICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZS5DT01QTEVURTsKKyAgICAgICAgICAgIHNiLmFwcGVuZChjb250ZXh0LmdldFRleHQoCisgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLnNlcnZpY2VSZWdpc3RlcmVkKSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlLkZBSUxFRDsKKyAgICAgICAgICAgIHNiLmFwcGVuZChjb250ZXh0LmdldFRleHQoCisgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLm1taUVycm9yKSk7CisgICAgICAgIH0KKworICAgICAgICBtZXNzYWdlID0gc2I7CisgICAgICAgIHBob25lLm9uTU1JRG9uZSh0aGlzKTsKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9jZG1hL0NkbWFTZXJ2aWNlU3RhdGVUcmFja2VyLmphdmEgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvY2RtYS9DZG1hU2VydmljZVN0YXRlVHJhY2tlci5qYXZhCmluZGV4IDM5ZmUwMDcuLjJjYWQ2Y2MgMTAwNjQ0Ci0tLSBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9jZG1hL0NkbWFTZXJ2aWNlU3RhdGVUcmFja2VyLmphdmEKKysrIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2NkbWEvQ2RtYVNlcnZpY2VTdGF0ZVRyYWNrZXIuamF2YQpAQCAtNjYsNyArNjYsNyBAQAogICAgIENkbWFDZWxsTG9jYXRpb24gY2VsbExvYzsKICAgICBDZG1hQ2VsbExvY2F0aW9uIG5ld0NlbGxMb2M7CiAKLSAgICAgLyoqIGlmIHRpbWUgYmV0d2VlbiBOVElaIHVwZGF0ZXMgaXMgbGVzcyB0aGFuIG1OaXR6VXBkYXRlU3BhY2luZyB0aGUgdXBkYXRlIG1heSBiZSBpZ25vcmVkLiAqLworICAgICAvKiogaWYgdGltZSBiZXR3ZWVuIE5JVFogdXBkYXRlcyBpcyBsZXNzIHRoYW4gbU5pdHpVcGRhdGVTcGFjaW5nIHRoZSB1cGRhdGUgbWF5IGJlIGlnbm9yZWQuICovCiAgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE5JVFpfVVBEQVRFX1NQQUNJTkdfREVGQVVMVCA9IDEwMDAgKiA2MCAqIDEwOwogICAgIHByaXZhdGUgaW50IG1OaXR6VXBkYXRlU3BhY2luZyA9IFN5c3RlbVByb3BlcnRpZXMuZ2V0SW50KCJyby5uaXR6X3VwZGF0ZV9zcGFjaW5nIiwKICAgICAgICAgICAgIE5JVFpfVVBEQVRFX1NQQUNJTkdfREVGQVVMVCk7CkBAIC0zOTUsNyArMzk1LDcgQEAKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLy8gUmVsZWFzZSBhbnkgdGVtcG9yYXJ5IGNlbGwgbG9jaywgd2hpY2ggY291bGQgaGF2ZSBiZWVuCi0gICAgICAgICAgICAvLyBhcXVpcmVkIHRvIGFsbG93IGEgc2luZ2xlLXNob3QgbG9jYXRpb24gdXBkYXRlLgorICAgICAgICAgICAgLy8gYWNxdWlyZWQgdG8gYWxsb3cgYSBzaW5nbGUtc2hvdCBsb2NhdGlvbiB1cGRhdGUuCiAgICAgICAgICAgICBkaXNhYmxlU2luZ2xlTG9jYXRpb25VcGRhdGUoKTsKICAgICAgICAgICAgIGJyZWFrOwogCkBAIC01OTEsNyArNTkxLDcgQEAKICAgICAgICAgYm9vbGVhbiBzaG93UGxtbiA9IGZhbHNlOwogICAgICAgICBpbnQgcnVsZSA9IDA7CiAgICAgICAgIGlmIChjbS5nZXRSYWRpb1N0YXRlKCkuaXNSVUlNUmVhZHkoKSkgewotICAgICAgICAgICAgLy8gVE9ETyBSVUlNIFNQTiBpcyBub3QgaW1wbGVtbnRlZCwgRUZfU1BOIGhhcyB0byBiZSByZWFkIGFuZCBEaXNwbGF5IENvbmRpdGlvbgorICAgICAgICAgICAgLy8gVE9ETyBSVUlNIFNQTiBpcyBub3QgaW1wbGVtZW50ZWQsIEVGX1NQTiBoYXMgdG8gYmUgcmVhZCBhbmQgRGlzcGxheSBDb25kaXRpb24KICAgICAgICAgICAgIC8vICAgQ2hhcmFjdGVyIEVuY29kaW5nLCBMYW5ndWFnZSBJbmRpY2F0b3IgYW5kIFNQTiBoYXMgdG8gYmUgc2V0CiAgICAgICAgICAgICAvLyBydWxlID0gcGhvbmUubVJ1aW1SZWNvcmRzLmdldERpc3BsYXlSdWxlKHNzLmdldE9wZXJhdG9yTnVtZXJpYygpKTsKICAgICAgICAgICAgIC8vIHNwbiA9IHBob25lLm1TSU1SZWNvcmRzLmdldFNlcnZpY2VQcm92aWRlTmFtZSgpOwpAQCAtODcyLDcgKzg3Miw2IEBACiAgICAgICogYW5kIHN0YXJ0IG92ZXIgYWdhaW4gaWYgdGhlIHJhZGlvIG5vdGlmaWVzIHVzIHRoYXQgc29tZQogICAgICAqIGV2ZW50IGhhcyBjaGFuZ2VkCiAgICAgICovCi0KICAgICBwcml2YXRlIHZvaWQKICAgICBwb2xsU3RhdGUoKSB7CiAgICAgICAgIHBvbGxpbmdDb250ZXh0ID0gbmV3IGludFsxXTsKQEAgLTk0NSw2ICs5NDQsOSBAQAogICAgICAgICBjYXNlIERBVEFfQUNDRVNTX0NETUFfRXZEb19BOgogICAgICAgICAgICAgcmV0ID0gIkNETUEgLSBFdkRvIHJldi4gQSI7CiAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEQVRBX0FDQ0VTU19DRE1BX0V2RG9fQjoKKyAgICAgICAgICAgIHJldCA9ICJDRE1BIC0gRXZEbyByZXYuIEIiOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBpZiAoREJHKSB7CiAgICAgICAgICAgICAgICAgTG9nLmUoTE9HX1RBRywgIldyb25nIG5ldHdvcmsuIENhbiBub3QgcmV0dXJuIGEgc3RyaW5nLiIpOwpAQCAtMTIzNyw2ICsxMjM5LDcgQEAKICAgICAgICAgY2FzZSA2OiAvLyBSQURJT19URUNITk9MT0dZXzF4UlRUCiAgICAgICAgIGNhc2UgNzogLy8gUkFESU9fVEVDSE5PTE9HWV9FVkRPXzAKICAgICAgICAgY2FzZSA4OiAvLyBSQURJT19URUNITk9MT0dZX0VWRE9fQQorICAgICAgICBjYXNlIDEyOiAvLyBSQURJT19URUNITk9MT0dZX0VWRE9fQgogICAgICAgICAgICAgcmV0VmFsID0gU2VydmljZVN0YXRlLlNUQVRFX0lOX1NFUlZJQ0U7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgZGVmYXVsdDoKQEAgLTEyNTYsNyArMTI1OSw3IEBACiAgICAgICAgICAgICByZXR1cm4gU2VydmljZVN0YXRlLlNUQVRFX0lOX1NFUlZJQ0U7CiAgICAgICAgIGNhc2UgMjogLy8gMiBpcyAic2VhcmNoaW5nIiwgZmFsbCB0aHJvdWdoCiAgICAgICAgIGNhc2UgMzogLy8gMyBpcyAicmVnaXN0cmF0aW9uIGRlbmllZCIsIGZhbGwgdGhyb3VnaAotICAgICAgICBjYXNlIDQ6IC8vIDQgaXMgInVua25vd24iIG5vIHZhaWxkIGluIGN1cnJlbnQgYmFzZWJhbmQKKyAgICAgICAgY2FzZSA0OiAvLyA0IGlzICJ1bmtub3duIiwgbm90IHZhbGlkIGluIGN1cnJlbnQgYmFzZWJhbmQKICAgICAgICAgICAgIHJldHVybiBTZXJ2aWNlU3RhdGUuU1RBVEVfT1VUX09GX1NFUlZJQ0U7CiAgICAgICAgIGNhc2UgNTovLyA1IGlzICJSZWdpc3RlcmVkLCByb2FtaW5nIgogICAgICAgICAgICAgcmV0dXJuIFNlcnZpY2VTdGF0ZS5TVEFURV9JTl9TRVJWSUNFOwpAQCAtMTI5NSwxMiArMTI5OCwxMiBAQAogICAgICAqLwogICAgIHByaXZhdGUgYm9vbGVhbiBpc1JvYW1JbmRGb3JIb21lU3lzdGVtKFN0cmluZyByb2FtSW5kKSB7CiAgICAgICAgIC8vIHJldHJpZXZlIHRoZSBjYXJyaWVyLXNwZWNpZmllZCBsaXN0IG9mIEVSSXMgZm9yIGhvbWUgc3lzdGVtCi0gICAgICAgIFN0cmluZyBob21lUm9hbUluZGNhdG9ycyA9IFN5c3RlbVByb3BlcnRpZXMuZ2V0KCJyby5jZG1hLmhvbWVzeXN0ZW0iKTsKKyAgICAgICAgU3RyaW5nIGhvbWVSb2FtSW5kaWNhdG9ycyA9IFN5c3RlbVByb3BlcnRpZXMuZ2V0KCJyby5jZG1hLmhvbWVzeXN0ZW0iKTsKIAotICAgICAgICBpZiAoIVRleHRVdGlscy5pc0VtcHR5KGhvbWVSb2FtSW5kY2F0b3JzKSkgeworICAgICAgICBpZiAoIVRleHRVdGlscy5pc0VtcHR5KGhvbWVSb2FtSW5kaWNhdG9ycykpIHsKICAgICAgICAgICAgIC8vIHNlYXJjaGVzIHRocm91Z2ggdGhlIGNvbW1hLXNlcGFyYXRlZCBsaXN0IGZvciBhIG1hdGNoLAogICAgICAgICAgICAgLy8gcmV0dXJuIHRydWUgaWYgb25lIGlzIGZvdW5kLgotICAgICAgICAgICAgZm9yIChTdHJpbmcgaG9tZVJvYW1JbmQgOiBob21lUm9hbUluZGNhdG9ycy5zcGxpdCgiLCIpKSB7CisgICAgICAgICAgICBmb3IgKFN0cmluZyBob21lUm9hbUluZCA6IGhvbWVSb2FtSW5kaWNhdG9ycy5zcGxpdCgiLCIpKSB7CiAgICAgICAgICAgICAgICAgaWYgKGhvbWVSb2FtSW5kLmVxdWFscyhyb2FtSW5kKSkgewogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvY2RtYS9TbXNNZXNzYWdlLmphdmEgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvY2RtYS9TbXNNZXNzYWdlLmphdmEKaW5kZXggNDAzYjdhMS4uYjUwNTAyYyAxMDA3NTUKLS0tIGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2NkbWEvU21zTWVzc2FnZS5qYXZhCisrKyBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9jZG1hL1Ntc01lc3NhZ2UuamF2YQpAQCAtMzEzLDcgKzMxMyw3IEBACiAgICAgfQogCiAgICAgLyoqCi0gICAgICogR2V0IGFuIFNNUy1TVUJNSVQgUERVIGZvciBhIGRhdGEgbWVzc2FnZSB0byBhIGRlc3RpbmF0aW9uIGFkZHJlc3MgJmFtcDsgcG9ydAorICAgICAqIEdldCBhbiBTTVMtU1VCTUlUIFBEVSBmb3IgYSBkYXRhIG1lc3NhZ2UgdG8gYSBkZXN0aW5hdGlvbiBhZGRyZXNzIGFuZCBwb3J0LgogICAgICAqCiAgICAgICogQHBhcmFtIHNjQWRkciBTZXJ2aWNlIENlbnRyZSBhZGRyZXNzLiBudWxsID09IHVzZSBkZWZhdWx0CiAgICAgICogQHBhcmFtIGRlc3RBZGRyIHRoZSBhZGRyZXNzIG9mIHRoZSBkZXN0aW5hdGlvbiBmb3IgdGhlIG1lc3NhZ2UKZGlmZiAtLWdpdCBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9jZG1hL1R0eUludGVudC5qYXZhIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2NkbWEvVHR5SW50ZW50LmphdmEKaW5kZXggMzgxM2IxZC4uNDkwN2FhOSAxMDA2NDQKLS0tIGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2NkbWEvVHR5SW50ZW50LmphdmEKKysrIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2NkbWEvVHR5SW50ZW50LmphdmEKQEAgLTU2LDEwICs1NiwxMCBAQAogICAgIC8qKgogICAgICAqIFRoZSBsb29rdXAga2V5IGZvciBhbiBpbnQgdGhhdCBpbmRpY2F0ZXMgcHJlZmVycmVkIFRUWSBtb2RlLgogICAgICAqIFZhbGlkIG1vZGVzIGFyZToKLSAgICAgKiAtIHtAbGluayBQaG9uZS5UVFlfTU9ERV9PRkZ9Ci0gICAgICogLSB7QGxpbmsgUGhvbmUuVFRZX01PREVfRlVMTH0KLSAgICAgKiAtIHtAbGluayBQaG9uZS5UVFlfTU9ERV9IQ099Ci0gICAgICogLSB7QGxpbmsgUGhvbmUuVFRZX01PREVfVkNPfQorICAgICAqIC0ge0BsaW5rIGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5QaG9uZSNUVFlfTU9ERV9PRkZ9CisgICAgICogLSB7QGxpbmsgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LlBob25lI1RUWV9NT0RFX0ZVTEx9CisgICAgICogLSB7QGxpbmsgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LlBob25lI1RUWV9NT0RFX0hDT30KKyAgICAgKiAtIHtAbGluayBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuUGhvbmUjVFRZX01PREVfVkNPfQogICAgICAqCiAgICAgICoge0BoaWRlfQogICAgICAqLwpkaWZmIC0tZ2l0IGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2dzbS9DYWxsRmFpbENhdXNlLmphdmEgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvZ3NtL0NhbGxGYWlsQ2F1c2UuamF2YQppbmRleCBlN2ZiZjZiLi5hZjJhZDQ4IDEwMDY0NAotLS0gYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvZ3NtL0NhbGxGYWlsQ2F1c2UuamF2YQorKysgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvZ3NtL0NhbGxGYWlsQ2F1c2UuamF2YQpAQCAtMjUsNiArMjUsOSBAQAogICoKICAqLwogcHVibGljIGludGVyZmFjZSBDYWxsRmFpbENhdXNlIHsKKyAgICAvLyBVbmFzc2lnbmVkL1Vub2J0YWluYWJsZSBudW1iZXIKKyAgICBzdGF0aWMgZmluYWwgaW50IFVOT0JUQUlOQUJMRV9OVU1CRVIgPSAxOworCiAgICAgc3RhdGljIGZpbmFsIGludCBOT1JNQUxfQ0xFQVJJTkcgICAgID0gMTY7CiAgICAgLy8gQnVzeSBUb25lCiAgICAgc3RhdGljIGZpbmFsIGludCBVU0VSX0JVU1kgICAgICAgICAgID0gMTc7CmRpZmYgLS1naXQgYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvZ3NtL0dTTVBob25lLmphdmEgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvZ3NtL0dTTVBob25lLmphdmEKb2xkIG1vZGUgMTAwNzU1Cm5ldyBtb2RlIDEwMDY0NAppbmRleCAyYmI3OTY4Li5jN2IxZTVjCi0tLSBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9nc20vR1NNUGhvbmUuamF2YQorKysgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvZ3NtL0dTTVBob25lLmphdmEKQEAgLTY3LDYgKzY3LDcgQEAKIGltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuUGhvbmVQcm94eTsKIGltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuUGhvbmVTdWJJbmZvOwogaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5UZWxlcGhvbnlQcm9wZXJ0aWVzOworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5VVVNJbmZvOwogaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5nc20uc3RrLlN0a1NlcnZpY2U7CiBpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LnRlc3QuU2ltdWxhdGVkUmFkaW9Db250cm9sOwogaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5JY2NWbU5vdFN1cHBvcnRlZEV4Y2VwdGlvbjsKQEAgLTcxMSw3ICs3MTIsMTIgQEAKICAgICB9CiAKICAgICBwdWJsaWMgQ29ubmVjdGlvbgotICAgIGRpYWwgKFN0cmluZyBkaWFsU3RyaW5nKSB0aHJvd3MgQ2FsbFN0YXRlRXhjZXB0aW9uIHsKKyAgICBkaWFsKFN0cmluZyBkaWFsU3RyaW5nKSB0aHJvd3MgQ2FsbFN0YXRlRXhjZXB0aW9uIHsKKyAgICAgICAgcmV0dXJuIGRpYWwoZGlhbFN0cmluZywgbnVsbCk7CisgICAgfQorCisgICAgcHVibGljIENvbm5lY3Rpb24KKyAgICBkaWFsIChTdHJpbmcgZGlhbFN0cmluZywgVVVTSW5mbyB1dXNJbmZvKSB0aHJvd3MgQ2FsbFN0YXRlRXhjZXB0aW9uIHsKICAgICAgICAgLy8gTmVlZCB0byBtYWtlIHN1cmUgZGlhbFN0cmluZyBnZXRzIHBhcnNlZCBwcm9wZXJseQogICAgICAgICBTdHJpbmcgbmV3RGlhbFN0cmluZyA9IFBob25lTnVtYmVyVXRpbHMuc3RyaXBTZXBhcmF0b3JzKGRpYWxTdHJpbmcpOwogCkBAIC03MjcsOSArNzMzLDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGlhbGluZyB3LyBtbWkgJyIgKyBtbWkgKyAiJy4uLiIpOwogCiAgICAgICAgIGlmIChtbWkgPT0gbnVsbCkgewotICAgICAgICAgICAgcmV0dXJuIG1DVC5kaWFsKG5ld0RpYWxTdHJpbmcpOworICAgICAgICAgICAgcmV0dXJuIG1DVC5kaWFsKG5ld0RpYWxTdHJpbmcsIHV1c0luZm8pOwogICAgICAgICB9IGVsc2UgaWYgKG1taS5pc1RlbXBvcmFyeU1vZGVDTElSKCkpIHsKLSAgICAgICAgICAgIHJldHVybiBtQ1QuZGlhbChtbWkuZGlhbGluZ051bWJlciwgbW1pLmdldENMSVJNb2RlKCkpOworICAgICAgICAgICAgcmV0dXJuIG1DVC5kaWFsKG1taS5kaWFsaW5nTnVtYmVyLCBtbWkuZ2V0Q0xJUk1vZGUoKSwgdXVzSW5mbyk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBtUGVuZGluZ01NSXMuYWRkKG1taSk7CiAgICAgICAgICAgICBtTW1pUmVnaXN0cmFudHMubm90aWZ5UmVnaXN0cmFudHMobmV3IEFzeW5jUmVzdWx0KG51bGwsIG1taSwgbnVsbCkpOwpkaWZmIC0tZ2l0IGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2dzbS9Hc21DYWxsVHJhY2tlci5qYXZhIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2dzbS9Hc21DYWxsVHJhY2tlci5qYXZhCmluZGV4IDg3NTMwZTQuLjA2ZjMxMGMgMTAwNjQ0Ci0tLSBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9nc20vR3NtQ2FsbFRyYWNrZXIuamF2YQorKysgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvZ3NtL0dzbUNhbGxUcmFja2VyLmphdmEKQEAgLTM3LDYgKzM3LDcgQEAKIGltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuRXZlbnRMb2dUYWdzOwogaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5QaG9uZTsKIGltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuVGVsZXBob255UHJvcGVydGllczsKK2ltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuVVVTSW5mbzsKIGltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuZ3NtLkNhbGxGYWlsQ2F1c2U7CiBpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LmdzbS5HU01QaG9uZTsKIGltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuZ3NtLkdzbUNhbGw7CkBAIC02NSw3ICs2Niw3IEBACiAgICAgUmVnaXN0cmFudExpc3Qgdm9pY2VDYWxsU3RhcnRlZFJlZ2lzdHJhbnRzID0gbmV3IFJlZ2lzdHJhbnRMaXN0KCk7CiAKIAotICAgIC8vIGNvbm5lY3Rpb25zIGRyb3BwZWQgZHVyaW4gbGFzdCBwb2xsCisgICAgLy8gY29ubmVjdGlvbnMgZHJvcHBlZCBkdXJpbmcgbGFzdCBwb2xsCiAgICAgQXJyYXlMaXN0PEdzbUNvbm5lY3Rpb24+IGRyb3BwZWREdXJpbmdQb2xsCiAgICAgICAgID0gbmV3IEFycmF5TGlzdDxHc21Db25uZWN0aW9uPihNQVhfQ09OTkVDVElPTlMpOwogCkBAIC0xNjcsNyArMTY4LDcgQEAKICAgICAgKiBjbGlyTW9kZSBpcyBvbmUgb2YgdGhlIENMSVJfIGNvbnN0YW50cwogICAgICAqLwogICAgIENvbm5lY3Rpb24KLSAgICBkaWFsIChTdHJpbmcgZGlhbFN0cmluZywgaW50IGNsaXJNb2RlKSB0aHJvd3MgQ2FsbFN0YXRlRXhjZXB0aW9uIHsKKyAgICBkaWFsIChTdHJpbmcgZGlhbFN0cmluZywgaW50IGNsaXJNb2RlLCBVVVNJbmZvIHV1c0luZm8pIHRocm93cyBDYWxsU3RhdGVFeGNlcHRpb24gewogICAgICAgICAvLyBub3RlIHRoYXQgdGhpcyB0cmlnZ2VycyBjYWxsIHN0YXRlIGNoYW5nZWQgbm90aWYKICAgICAgICAgY2xlYXJEaXNjb25uZWN0ZWQoKTsKIApAQCAtMjEzLDcgKzIxNCw3IEBACiAgICAgICAgICAgICAvLyBBbHdheXMgdW5tdXRlIHdoZW4gaW5pdGlhdGluZyBhIG5ldyBjYWxsCiAgICAgICAgICAgICBzZXRNdXRlKGZhbHNlKTsKIAotICAgICAgICAgICAgY20uZGlhbChwZW5kaW5nTU8uYWRkcmVzcywgY2xpck1vZGUsIG9idGFpbkNvbXBsZXRlTWVzc2FnZSgpKTsKKyAgICAgICAgICAgIGNtLmRpYWwocGVuZGluZ01PLmFkZHJlc3MsIGNsaXJNb2RlLCB1dXNJbmZvLCBvYnRhaW5Db21wbGV0ZU1lc3NhZ2UoKSk7CiAgICAgICAgIH0KIAogICAgICAgICB1cGRhdGVQaG9uZVN0YXRlKCk7CkBAIC0yMjIsMTAgKzIyMywxOSBAQAogICAgICAgICByZXR1cm4gcGVuZGluZ01POwogICAgIH0KIAorICAgIENvbm5lY3Rpb24KKyAgICBkaWFsKFN0cmluZyBkaWFsU3RyaW5nKSB0aHJvd3MgQ2FsbFN0YXRlRXhjZXB0aW9uIHsKKyAgICAgICAgcmV0dXJuIGRpYWwoZGlhbFN0cmluZywgQ29tbWFuZHNJbnRlcmZhY2UuQ0xJUl9ERUZBVUxULCBudWxsKTsKKyAgICB9CiAKICAgICBDb25uZWN0aW9uCi0gICAgZGlhbCAoU3RyaW5nIGRpYWxTdHJpbmcpIHRocm93cyBDYWxsU3RhdGVFeGNlcHRpb24gewotICAgICAgICByZXR1cm4gZGlhbChkaWFsU3RyaW5nLCBDb21tYW5kc0ludGVyZmFjZS5DTElSX0RFRkFVTFQpOworICAgIGRpYWwoU3RyaW5nIGRpYWxTdHJpbmcsIFVVU0luZm8gdXVzSW5mbykgdGhyb3dzIENhbGxTdGF0ZUV4Y2VwdGlvbiB7CisgICAgICAgIHJldHVybiBkaWFsKGRpYWxTdHJpbmcsIENvbW1hbmRzSW50ZXJmYWNlLkNMSVJfREVGQVVMVCwgdXVzSW5mbyk7CisgICAgfQorCisgICAgQ29ubmVjdGlvbgorICAgIGRpYWwoU3RyaW5nIGRpYWxTdHJpbmcsIGludCBjbGlyTW9kZSkgdGhyb3dzIENhbGxTdGF0ZUV4Y2VwdGlvbiB7CisgICAgICAgIHJldHVybiBkaWFsKGRpYWxTdHJpbmcsIGNsaXJNb2RlLCBudWxsKTsKICAgICB9CiAKICAgICB2b2lkCmRpZmYgLS1naXQgYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvZ3NtL0dzbUNvbm5lY3Rpb24uamF2YSBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9nc20vR3NtQ29ubmVjdGlvbi5qYXZhCmluZGV4IDQ3ODhhMDEuLjdkYzI1MDQgMTAwNjQ0Ci0tLSBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9nc20vR3NtQ29ubmVjdGlvbi5qYXZhCisrKyBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9nc20vR3NtQ29ubmVjdGlvbi5qYXZhCkBAIC03Myw2ICs3Myw3IEBACiAgICAgRGlzY29ubmVjdENhdXNlIGNhdXNlID0gRGlzY29ubmVjdENhdXNlLk5PVF9ESVNDT05ORUNURUQ7CiAgICAgUG9zdERpYWxTdGF0ZSBwb3N0RGlhbFN0YXRlID0gUG9zdERpYWxTdGF0ZS5OT1RfU1RBUlRFRDsKICAgICBpbnQgbnVtYmVyUHJlc2VudGF0aW9uID0gQ29ubmVjdGlvbi5QUkVTRU5UQVRJT05fQUxMT1dFRDsKKyAgICBVVVNJbmZvIHV1c0luZm87CiAKICAgICBIYW5kbGVyIGg7CiAKQEAgLTEyNiw2ICsxMjcsNyBAQAogICAgICAgICBpc0luY29taW5nID0gZGMuaXNNVDsKICAgICAgICAgY3JlYXRlVGltZSA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOwogICAgICAgICBudW1iZXJQcmVzZW50YXRpb24gPSBkYy5udW1iZXJQcmVzZW50YXRpb247CisgICAgICAgIHV1c0luZm8gPSBkYy51dXNJbmZvOwogCiAgICAgICAgIHRoaXMuaW5kZXggPSBpbmRleDsKIApAQCAtMzU2LDYgKzM1OCw5IEBACiAgICAgICAgICAgICBjYXNlIENhbGxGYWlsQ2F1c2UuRkROX0JMT0NLRUQ6CiAgICAgICAgICAgICAgICAgcmV0dXJuIERpc2Nvbm5lY3RDYXVzZS5GRE5fQkxPQ0tFRDsKIAorICAgICAgICAgICAgY2FzZSBDYWxsRmFpbENhdXNlLlVOT0JUQUlOQUJMRV9OVU1CRVI6CisgICAgICAgICAgICAgICAgcmV0dXJuIERpc2Nvbm5lY3RDYXVzZS5VTk9CVEFJTkFCTEVfTlVNQkVSOworCiAgICAgICAgICAgICBjYXNlIENhbGxGYWlsQ2F1c2UuRVJST1JfVU5TUEVDSUZJRUQ6CiAgICAgICAgICAgICBjYXNlIENhbGxGYWlsQ2F1c2UuTk9STUFMX0NMRUFSSU5HOgogICAgICAgICAgICAgZGVmYXVsdDoKQEAgLTcyOCw0ICs3MzMsOSBAQAogICAgIHB1YmxpYyBpbnQgZ2V0TnVtYmVyUHJlc2VudGF0aW9uKCkgewogICAgICAgICByZXR1cm4gbnVtYmVyUHJlc2VudGF0aW9uOwogICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyBVVVNJbmZvIGdldFVVU0luZm8oKSB7CisgICAgICAgIHJldHVybiB1dXNJbmZvOworICAgIH0KIH0KZGlmZiAtLWdpdCBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9nc20vR3NtRGF0YUNvbm5lY3Rpb24uamF2YSBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9nc20vR3NtRGF0YUNvbm5lY3Rpb24uamF2YQppbmRleCBkODkzZWM0Li4wOWQ0NmRkIDEwMDY0NAotLS0gYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvZ3NtL0dzbURhdGFDb25uZWN0aW9uLmphdmEKKysrIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2dzbS9Hc21EYXRhQ29ubmVjdGlvbi5qYXZhCkBAIC0xMzQsNyArMTM0LDcgQEAKICAgICAgICAgICAgICAgICBjYXVzZSA9IEZhaWxDYXVzZS5JTlNVRkZJQ0lFTlRfUkVTT1VSQ0VTOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBQRFBfRkFJTF9NSVNTSU5HX1VLTk9XTl9BUE46Ci0gICAgICAgICAgICAgICAgY2F1c2UgPSBGYWlsQ2F1c2UuTUlTU0lOR19VS05PV05fQVBOOworICAgICAgICAgICAgICAgIGNhdXNlID0gRmFpbENhdXNlLk1JU1NJTkdfVU5LTk9XTl9BUE47CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFBEUF9GQUlMX1VOS05PV05fUERQX0FERFJFU1NfVFlQRToKICAgICAgICAgICAgICAgICBjYXVzZSA9IEZhaWxDYXVzZS5VTktOT1dOX1BEUF9BRERSRVNTOwpkaWZmIC0tZ2l0IGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2dzbS9Hc21EYXRhQ29ubmVjdGlvblRyYWNrZXIuamF2YSBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9nc20vR3NtRGF0YUNvbm5lY3Rpb25UcmFja2VyLmphdmEKaW5kZXggNjI3ZDk0ZC4uZjZkNDQ5MSAxMDA2NDQKLS0tIGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2dzbS9Hc21EYXRhQ29ubmVjdGlvblRyYWNrZXIuamF2YQorKysgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvZ3NtL0dzbURhdGFDb25uZWN0aW9uVHJhY2tlci5qYXZhCkBAIC00NSw3ICs0NSw2IEBACiBpbXBvcnQgYW5kcm9pZC50ZWxlcGhvbnkuU2VydmljZVN0YXRlOwogaW1wb3J0IGFuZHJvaWQudGVsZXBob255LlRlbGVwaG9ueU1hbmFnZXI7CiBpbXBvcnQgYW5kcm9pZC50ZWxlcGhvbnkuZ3NtLkdzbUNlbGxMb2NhdGlvbjsKLWltcG9ydCBhbmRyb2lkLnRleHQuVGV4dFV0aWxzOwogaW1wb3J0IGFuZHJvaWQudXRpbC5FdmVudExvZzsKIGltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOwogCkBAIC0xNTEsOSArMTUwLDkgQEAKICAgICBzdGF0aWMgZmluYWwgU3RyaW5nIEFQTl9JRCA9ICJhcG5faWQiOwogICAgIHByaXZhdGUgYm9vbGVhbiBjYW5TZXRQcmVmZXJBcG4gPSBmYWxzZTsKIAotICAgIC8vIGZvciB0cmFja2luZyByZXRyeXMgb24gdGhlIGRlZmF1bHQgQVBOCisgICAgLy8gZm9yIHRyYWNraW5nIHJldHJpZXMgb24gdGhlIGRlZmF1bHQgQVBOCiAgICAgcHJpdmF0ZSBSZXRyeU1hbmFnZXIgbURlZmF1bHRSZXRyeU1hbmFnZXI7Ci0gICAgLy8gZm9yIHRyYWNraW5nIHJldHJ5cyBvbiBhIHNlY29uZGFyeSBBUE4KKyAgICAvLyBmb3IgdHJhY2tpbmcgcmV0cmllcyBvbiBhIHNlY29uZGFyeSBBUE4KICAgICBwcml2YXRlIFJldHJ5TWFuYWdlciBtU2Vjb25kYXJ5UmV0cnlNYW5hZ2VyOwogCiAgICAgQnJvYWRjYXN0UmVjZWl2ZXIgbUludGVudFJlY2VpdmVyID0gbmV3IEJyb2FkY2FzdFJlY2VpdmVyICgpCkBAIC0xOTAsOCArMTg5LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFdpZmlNYW5hZ2VyLldJRklfU1RBVEVfVU5LTk9XTikgPT0gV2lmaU1hbmFnZXIuV0lGSV9TVEFURV9FTkFCTEVEOwogCiAgICAgICAgICAgICAgICAgaWYgKCFlbmFibGVkKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gd2lmaSBnb3QgZGlzYWJlbGVkLCB0aGUgTkVUV09SS19TVEFURV9DSEFOR0VEX0FDVElPTgotICAgICAgICAgICAgICAgICAgICAvLyBxdWl0IGFuZCB3b250IHJlcG9ydCBkaXNjb25uZWN0ZWQgdGlsIG5leHQgZW5hbGJpbmcuCisgICAgICAgICAgICAgICAgICAgIC8vIHdoZW4gd2lmaSBnb3QgZGlzYWJsZWQsIHRoZSBORVRXT1JLX1NUQVRFX0NIQU5HRURfQUNUSU9OCisgICAgICAgICAgICAgICAgICAgIC8vIHF1aXQgYW5kIHdvbid0IHJlcG9ydCBkaXNjb25uZWN0ZWQgdGlsIG5leHQgZW5hYmxpbmcuCiAgICAgICAgICAgICAgICAgICAgIG1Jc1dpZmlDb25uZWN0ZWQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC00NTIsNyArNDUxLDcgQEAKICAgICAgICAgICAgICAgICB3YWl0aW5nQXBucyA9IGJ1aWxkV2FpdGluZ0FwbnMoKTsKICAgICAgICAgICAgICAgICBpZiAod2FpdGluZ0FwbnMuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChEQkcpIGxvZygiTm8gQVBOIGZvdW5kIik7Ci0gICAgICAgICAgICAgICAgICAgIG5vdGlmeU5vRGF0YShHc21EYXRhQ29ubmVjdGlvbi5GYWlsQ2F1c2UuTUlTU0lOR19VS05PV05fQVBOKTsKKyAgICAgICAgICAgICAgICAgICAgbm90aWZ5Tm9EYXRhKEdzbURhdGFDb25uZWN0aW9uLkZhaWxDYXVzZS5NSVNTSU5HX1VOS05PV05fQVBOKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgIGxvZyAoIkNyZWF0ZSBmcm9tIGFsbEFwbnMgOiAiICsgYXBuTGlzdFRvU3RyaW5nKGFsbEFwbnMpKTsKQEAgLTExMzAsNyArMTEyOSw3IEBACiAgICAgICAgICAgICBpZiAoaXNBcG5UeXBlQWN0aXZlKFBob25lLkFQTl9UWVBFX0RFRkFVTFQpKSB7CiAgICAgICAgICAgICAgICAgU3lzdGVtUHJvcGVydGllcy5zZXQoImdzbS5kZWZhdWx0cGRwY29udGV4dC5hY3RpdmUiLCAidHJ1ZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhblNldFByZWZlckFwbiAmJiBwcmVmZXJyZWRBcG4gPT0gbnVsbCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZy5kKExPR19UQUcsICJQUkVGRVJFRCBBUE4gaXMgbnVsbCIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvZy5kKExPR19UQUcsICJQUkVGRVJSRUQgQVBOIGlzIG51bGwiKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmZXJyZWRBcG4gPSBtQWN0aXZlQXBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNldFByZWZlcnJlZEFwbihwcmVmZXJyZWRBcG4uaWQpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMTI4MCw3ICsxMjc5LDcgQEAKICAgICAgICAgaWYgKGFsbEFwbnMuaXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBpZiAoREJHKSBsb2coIk5vIEFQTiBmb3VuZCBmb3IgY2FycmllcjogIiArIG9wZXJhdG9yKTsKICAgICAgICAgICAgIHByZWZlcnJlZEFwbiA9IG51bGw7Ci0gICAgICAgICAgICBub3RpZnlOb0RhdGEoR3NtRGF0YUNvbm5lY3Rpb24uRmFpbENhdXNlLk1JU1NJTkdfVUtOT1dOX0FQTik7CisgICAgICAgICAgICBub3RpZnlOb0RhdGEoR3NtRGF0YUNvbm5lY3Rpb24uRmFpbENhdXNlLk1JU1NJTkdfVU5LTk9XTl9BUE4pOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcHJlZmVycmVkQXBuID0gZ2V0UHJlZmVycmVkQXBuKCk7CiAgICAgICAgICAgICBMb2cuZChMT0dfVEFHLCAiR2V0IFByZWZlcnJlZEFQTiIpOwpkaWZmIC0tZ2l0IGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2dzbS9Hc21NbWlDb2RlLmphdmEgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvZ3NtL0dzbU1taUNvZGUuamF2YQppbmRleCBiY2JkMTI3Li5hYTE2ZmEzIDEwMDY0NAotLS0gYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvZ3NtL0dzbU1taUNvZGUuamF2YQorKysgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvZ3NtL0dzbU1taUNvZGUuamF2YQpAQCAtMzksNyArMzksNyBAQAogICoge0BoaWRlfQogICoKICAqLwotcHVibGljIGZpbmFsIGNsYXNzIEdzbU1taUNvZGUgIGV4dGVuZHMgSGFuZGxlciBpbXBsZW1lbnRzIE1taUNvZGUgeworcHVibGljIGZpbmFsIGNsYXNzIEdzbU1taUNvZGUgZXh0ZW5kcyBIYW5kbGVyIGltcGxlbWVudHMgTW1pQ29kZSB7CiAgICAgc3RhdGljIGZpbmFsIFN0cmluZyBMT0dfVEFHID0gIkdTTSI7CiAKICAgICAvLyoqKioqIENvbnN0YW50cwpAQCAtNTEsNyArNTEsNyBAQAogICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgQUNUSU9OX1JFR0lTVEVSID0gIioqIjsKICAgICBzdGF0aWMgZmluYWwgU3RyaW5nIEFDVElPTl9FUkFTVVJFID0gIiMjIjsKIAotICAgIC8vIFN1cHAgU2VydmljZSBjb2NkZXMgZnJvbSBUUyAyMi4wMzAgQW5uZXggQgorICAgIC8vIFN1cHAgU2VydmljZSBjb2RlcyBmcm9tIFRTIDIyLjAzMCBBbm5leCBCCiAKICAgICAvL0NhbGxlZCBsaW5lIHByZXNlbnRhdGlvbgogICAgIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0NfQ0xJUCAgICA9ICIzMCI7CkBAIC0xNTQsNyArMTU0LDcgQEAKIAogICAgIC8qKgogICAgICAqIFNvbWUgZGlhbCBzdHJpbmdzIGluIEdTTSBhcmUgZGVmaW5lZCB0byBkbyBub24tY2FsbCBzZXR1cAotICAgICAqIHRoaW5ncywgc3VjaCBhcyBtb2RpZnkgb3IgcXVlcnkgc3VwcGxlbWVudHJ5IHNlcnZpY2Ugc2V0dGluZ3MgKGVnLCBjYWxsCisgICAgICogdGhpbmdzLCBzdWNoIGFzIG1vZGlmeSBvciBxdWVyeSBzdXBwbGVtZW50YXJ5IHNlcnZpY2Ugc2V0dGluZ3MgKGVnLCBjYWxsCiAgICAgICogZm9yd2FyZGluZykuIFRoZXNlIGFyZSBnZW5lcmFsbHkgcmVmZXJyZWQgdG8gYXMgIk1NSSBjb2RlcyIuCiAgICAgICogV2UgbG9vayB0byBzZWUgaWYgdGhlIGRpYWwgc3RyaW5nIGNvbnRhaW5zIGEgdmFsaWQgTU1JIGNvZGUgKHBvdGVudGlhbGx5CiAgICAgICogd2l0aCBhIGRpYWwgc3RyaW5nIGF0IHRoZSBlbmQgYXMgd2VsbCkgYW5kIHJldHVybiBpbmZvIGhlcmUuCkBAIC00NTcsMTIgKzQ1NywxMyBAQAogICAgICAgICAgICAgICAgICYmICFQaG9uZU51bWJlclV0aWxzLmlzRW1lcmdlbmN5TnVtYmVyKGRpYWxTdHJpbmcpCiAgICAgICAgICAgICAgICAgJiYgKHBob25lLmlzSW5DYWxsKCkKICAgICAgICAgICAgICAgICAgICAgfHwgISgoZGlhbFN0cmluZy5sZW5ndGgoKSA9PSAyICYmIGRpYWxTdHJpbmcuY2hhckF0KDApID09ICcxJykKLSAgICAgICAgICAgICAgICAgICAgICAgICAvKiBXaGlsZSBjb250cmFyeSB0byBUUyAyMi4wMzAsIHRoZXJlIGlzIHN0cm9uZyBwcmVjZW5kZW5jZQorICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFdoaWxlIGNvbnRyYXJ5IHRvIFRTIDIyLjAzMCwgdGhlcmUgaXMgc3Ryb25nIHByZWNlZGVuY2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBmb3IgdHJlYXRpbmcgIjAiIGFuZCAiMDAiIGFzIGNhbGwgc2V0dXAgc3RyaW5ncy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBkaWFsU3RyaW5nLmVxdWFscygiMCIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgZGlhbFN0cmluZy5lcXVhbHMoIjAwIikpKSk7CiAgICAgfQorCiAgICAgLyoqCiAgICAgICogQHJldHVybiB0cnVlIGlmIHRoZSBTZXJ2aWNlIENvZGUgaXMgUElOL1BJTjIvUFVLL1BVSzItcmVsYXRlZAogICAgICAqLwpAQCAtNDcyLDEzICs0NzMsMTIgQEAKICAgICAgfQogCiAgICAgLyoqCi0gICAgICogKlNlZSBUUyAyMi4wMzAgQW5uZXggQgorICAgICAqIFNlZSBUUyAyMi4wMzAgQW5uZXggQi4KICAgICAgKiBJbiB0ZW1wb3JhcnkgbW9kZSwgdG8gc3VwcHJlc3MgQ0xJUiBmb3IgYSBzaW5nbGUgY2FsbCwgZW50ZXI6Ci0gICAgICogICAgICAiICogMzEgIyA8Y2FsbGVkIG51bWJlcj4gU0VORCAiCisgICAgICogICAgICAiICogMzEgIyBbY2FsbGVkIG51bWJlcl0gU0VORCAiCiAgICAgICogIEluIHRlbXBvcmFyeSBtb2RlLCB0byBpbnZva2UgQ0xJUiBmb3IgYSBzaW5nbGUgY2FsbCBlbnRlcjoKLSAgICAgKiAgICAgICAiICMgMzEgIyA8Y2FsbGVkIG51bWJlcj4gU0VORCAiCisgICAgICogICAgICAgIiAjIDMxICMgW2NhbGxlZCBudW1iZXJdIFNFTkQgIgogICAgICAqLwotCiAgICAgYm9vbGVhbgogICAgIGlzVGVtcG9yYXJ5TW9kZUNMSVIoKSB7CiAgICAgICAgIHJldHVybiBzYyAhPSBudWxsICYmIHNjLmVxdWFscyhTQ19DTElSKSAmJiBkaWFsaW5nTnVtYmVyICE9IG51bGwKQEAgLTc3OSw3ICs3NzksNyBAQAogICAgICAgICAvLyBOb3RlIHRoYXQgdW5saWtlIG1vc3QgZXZlcnl0aGluZyBlbHNlLCB0aGUgVVNTRCBjb21wbGV0ZQogICAgICAgICAvLyByZXNwb25zZSBkb2VzIG5vdCBjb21wbGV0ZSB0aGlzIE1NSSBjb2RlLi4ud2Ugd2FpdCBmb3IKICAgICAgICAgLy8gYW4gdW5zb2xpY2l0ZWQgVVNTRCAiTm90aWZ5IiBvciAiUmVxdWVzdCIuCi0gICAgICAgIC8vIFRoZSBtYXRjaGluZyB1cCBvZiB0aGlzIGlzIGRvZW5lIGluIEdTTVBob25lLgorICAgICAgICAvLyBUaGUgbWF0Y2hpbmcgdXAgb2YgdGhpcyBpcyBkb25lIGluIEdTTVBob25lLgogCiAgICAgICAgIHBob25lLm1DTS5zZW5kVVNTRCh1c3NkTWVzc2FnZSwKICAgICAgICAgICAgIG9idGFpbk1lc3NhZ2UoRVZFTlRfVVNTRF9DT01QTEVURSwgdGhpcykpOwpAQCAtODMyLDggKzgzMiw3IEBACiAKICAgICAgICAgICAgICAgICBpZiAoYXIuZXhjZXB0aW9uICE9IG51bGwpIHsKICAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZS5GQUlMRUQ7Ci0gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBjb250ZXh0LmdldFRleHQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLm1taUVycm9yKTsKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9IGdldEVycm9yTWVzc2FnZShhcik7CiAKICAgICAgICAgICAgICAgICAgICAgcGhvbmUub25NTUlEb25lKHRoaXMpOwogICAgICAgICAgICAgICAgIH0KQEAgLTg1Miw2ICs4NTEsMTkgQEAKICAgICB9CiAgICAgLy8qKioqKiBQcml2YXRlIGluc3RhbmNlIG1ldGhvZHMKIAorICAgIHByaXZhdGUgQ2hhclNlcXVlbmNlIGdldEVycm9yTWVzc2FnZShBc3luY1Jlc3VsdCBhcikgeworCisgICAgICAgIGlmIChhci5leGNlcHRpb24gaW5zdGFuY2VvZiBDb21tYW5kRXhjZXB0aW9uKSB7CisgICAgICAgICAgICBDb21tYW5kRXhjZXB0aW9uLkVycm9yIGVyciA9ICgoQ29tbWFuZEV4Y2VwdGlvbikoYXIuZXhjZXB0aW9uKSkuZ2V0Q29tbWFuZEVycm9yKCk7CisgICAgICAgICAgICBpZiAoZXJyID09IENvbW1hbmRFeGNlcHRpb24uRXJyb3IuRkROX0NIRUNLX0ZBSUxVUkUpIHsKKyAgICAgICAgICAgICAgICBMb2cuaShMT0dfVEFHLCAiRkROX0NIRUNLX0ZBSUxVUkUiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gY29udGV4dC5nZXRUZXh0KGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLm1taUZkbkVycm9yKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJldHVybiBjb250ZXh0LmdldFRleHQoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcubW1pRXJyb3IpOworICAgIH0KKwogICAgIHByaXZhdGUgQ2hhclNlcXVlbmNlIGdldFNjU3RyaW5nKCkgewogICAgICAgICBpZiAoc2MgIT0gbnVsbCkgewogICAgICAgICAgICAgaWYgKGlzU2VydmljZUNvZGVDYWxsQmFycmluZyhzYykpIHsKQEAgLTkwNCw2ICs5MTYsOSBAQAogICAgICAgICAgICAgICAgICAgICBzYi5hcHBlbmQoIlxuIik7CiAgICAgICAgICAgICAgICAgICAgIHNiLmFwcGVuZChjb250ZXh0LmdldFRleHQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcubmVlZFB1azIpKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVyciA9PSBDb21tYW5kRXhjZXB0aW9uLkVycm9yLkZETl9DSEVDS19GQUlMVVJFKSB7CisgICAgICAgICAgICAgICAgICAgIExvZy5pKExPR19UQUcsICJGRE5fQ0hFQ0tfRkFJTFVSRSIpOworICAgICAgICAgICAgICAgICAgICBzYi5hcHBlbmQoY29udGV4dC5nZXRUZXh0KGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLm1taUZkbkVycm9yKSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgc2IuYXBwZW5kKGNvbnRleHQuZ2V0VGV4dCgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy5tbWlFcnJvcikpOwpAQCAtOTUzLDcgKzk2OCw3IEBACiAKICAgICAgICAgaWYgKGFyLmV4Y2VwdGlvbiAhPSBudWxsKSB7CiAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlLkZBSUxFRDsKLSAgICAgICAgICAgIHNiLmFwcGVuZChjb250ZXh0LmdldFRleHQoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcubW1pRXJyb3IpKTsKKyAgICAgICAgICAgIHNiLmFwcGVuZChnZXRFcnJvck1lc3NhZ2UoYXIpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGludCBjbGlyQXJnc1tdOwogCkBAIC0xMTIzLDcgKzExMzgsNyBAQAogCiAgICAgICAgIGlmIChhci5leGNlcHRpb24gIT0gbnVsbCkgewogICAgICAgICAgICAgc3RhdGUgPSBTdGF0ZS5GQUlMRUQ7Ci0gICAgICAgICAgICBzYi5hcHBlbmQoY29udGV4dC5nZXRUZXh0KGNvbS5hbmRyb2lkLmludGVybmFsLlIuc3RyaW5nLm1taUVycm9yKSk7CisgICAgICAgICAgICBzYi5hcHBlbmQoZ2V0RXJyb3JNZXNzYWdlKGFyKSk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBDYWxsRm9yd2FyZEluZm8gaW5mb3NbXTsKIApAQCAtMTE0MSw3ICsxMTU2LDcgQEAKIAogICAgICAgICAgICAgICAgIC8vIEVhY2ggYml0IGluIHRoZSBzZXJ2aWNlIGNsYXNzIGdldHMgaXRzIG93biByZXN1bHQgbGluZQogICAgICAgICAgICAgICAgIC8vIFRoZSBzZXJ2aWNlIGNsYXNzZXMgbWF5IGJlIHNwbGl0IHVwIG92ZXIgbXVsdGlwbGUKLSAgICAgICAgICAgICAgICAvLyBDYWxsRm9yd2FyZEluZm9zLiBTbywgZm9yIGVhY2ggc2VydmljZSBjbGFzc3MsIGZpbmQgb3V0CisgICAgICAgICAgICAgICAgLy8gQ2FsbEZvcndhcmRJbmZvcy4gU28sIGZvciBlYWNoIHNlcnZpY2UgY2xhc3MsIGZpbmQgb3V0CiAgICAgICAgICAgICAgICAgLy8gd2hpY2ggQ2FsbEZvcndhcmRJbmZvIHJlcHJlc2VudHMgaXQgYW5kIHRoZW4gYnVpbGQKICAgICAgICAgICAgICAgICAvLyB0aGUgcmVzcG9uc2UgdGV4dCBiYXNlZCBvbiB0aGF0CiAKQEAgLTExNzUsNyArMTE5MCw3IEBACiAKICAgICAgICAgaWYgKGFyLmV4Y2VwdGlvbiAhPSBudWxsKSB7CiAgICAgICAgICAgICBzdGF0ZSA9IFN0YXRlLkZBSUxFRDsKLSAgICAgICAgICAgIHNiLmFwcGVuZChjb250ZXh0LmdldFRleHQoY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcubW1pRXJyb3IpKTsKKyAgICAgICAgICAgIHNiLmFwcGVuZChnZXRFcnJvck1lc3NhZ2UoYXIpKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIGludFtdIGludHMgPSAoaW50W10pYXIucmVzdWx0OwogCmRpZmYgLS1naXQgYS90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvZ3NtL0dzbVNNU0Rpc3BhdGNoZXIuamF2YSBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9nc20vR3NtU01TRGlzcGF0Y2hlci5qYXZhCmluZGV4IDZhZTMxNmQuLmQ3MjA1MTYgMTAwNjQ0Ci0tLSBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9nc20vR3NtU01TRGlzcGF0Y2hlci5qYXZhCisrKyBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9nc20vR3NtU01TRGlzcGF0Y2hlci5qYXZhCkBAIC05NCw2ICs5NCwxMyBAQAogICAgICAgICBTbXNNZXNzYWdlIHNtcyA9IChTbXNNZXNzYWdlKSBzbXNiOwogICAgICAgICBib29sZWFuIGhhbmRsZWQgPSBmYWxzZTsKIAorICAgICAgICBpZiAoc21zLmlzVHlwZVplcm8oKSkgeworICAgICAgICAgICAgLy8gQXMgcGVyIDNHUFAgVFMgMjMuMDQwIDkuMi4zLjksIFR5cGUgWmVybyBtZXNzYWdlcyBzaG91bGQgbm90IGJlCisgICAgICAgICAgICAvLyBEaXNwbGF5ZWQvU3RvcmVkL05vdGlmaWVkLiBUaGV5IHNob3VsZCBvbmx5IGJlIGFja25vd2xlZGdlZC4KKyAgICAgICAgICAgIExvZy5kKFRBRywgIlJlY2VpdmVkIHNob3J0IG1lc3NhZ2UgdHlwZSAwLCBEb250IGRpc3BsYXkgb3Igc3RvcmUgaXQuIFNlbmQgQWNrIik7CisgICAgICAgICAgICByZXR1cm4gSW50ZW50cy5SRVNVTFRfU01TX0hBTkRMRUQ7CisgICAgICAgIH0KKwogICAgICAgICAvLyBTcGVjaWFsIGNhc2UgdGhlIG1lc3NhZ2Ugd2FpdGluZyBpbmRpY2F0b3IgbWVzc2FnZXMKICAgICAgICAgaWYgKHNtcy5pc01XSVNldE1lc3NhZ2UoKSkgewogICAgICAgICAgICAgbUdzbVBob25lLnVwZGF0ZU1lc3NhZ2VXYWl0aW5nSW5kaWNhdG9yKHRydWUpOwpkaWZmIC0tZ2l0IGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2dzbS9Hc21TZXJ2aWNlU3RhdGVUcmFja2VyLmphdmEgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvZ3NtL0dzbVNlcnZpY2VTdGF0ZVRyYWNrZXIuamF2YQppbmRleCA1MGI4ZWJhLi5kNTM5ZjZmMSAxMDA2NDQKLS0tIGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2dzbS9Hc21TZXJ2aWNlU3RhdGVUcmFja2VyLmphdmEKKysrIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2dzbS9Hc21TZXJ2aWNlU3RhdGVUcmFja2VyLmphdmEKQEAgLTQwLDcgKzQwLDYgQEAKIGltcG9ydCBhbmRyb2lkLnByb3ZpZGVyLlRlbGVwaG9ueS5JbnRlbnRzOwogaW1wb3J0IGFuZHJvaWQudGVsZXBob255LlNlcnZpY2VTdGF0ZTsKIGltcG9ydCBhbmRyb2lkLnRlbGVwaG9ueS5TaWduYWxTdHJlbmd0aDsKLWltcG9ydCBhbmRyb2lkLnRlbGVwaG9ueS5UZWxlcGhvbnlNYW5hZ2VyOwogaW1wb3J0IGFuZHJvaWQudGVsZXBob255LmdzbS5Hc21DZWxsTG9jYXRpb247CiBpbXBvcnQgYW5kcm9pZC50ZXh0LlRleHRVdGlsczsKIGltcG9ydCBhbmRyb2lkLnV0aWwuQ29uZmlnOwpAQCAtMTMwLDcgKzEyOSw3IEBACiAgICAgICovCiAgICAgcHJpdmF0ZSBib29sZWFuIG1OZWVkVG9SZWdGb3JTaW1Mb2FkZWQ7CiAKLSAgICAvKiogU3RhcnRlZCB0aGUgcmVjaGVjayBwcm9jZXNzIGFmdGVyIGZpbmRpbmcgZ3BycyBzaG91bGQgcmVnaXN0ZXJkIGJ1dCBub3QuICovCisgICAgLyoqIFN0YXJ0ZWQgdGhlIHJlY2hlY2sgcHJvY2VzcyBhZnRlciBmaW5kaW5nIGdwcnMgc2hvdWxkIHJlZ2lzdGVyZWQgYnV0IG5vdC4gKi8KICAgICBwcml2YXRlIGJvb2xlYW4gbVN0YXJ0ZWRHcHJzUmVnQ2hlY2sgPSBmYWxzZTsKIAogICAgIC8qKiBBbHJlYWR5IHNlbnQgdGhlIGV2ZW50LWxvZyBmb3Igbm8gZ3BycyByZWdpc3Rlci4gKi8KQEAgLTQxNSw3ICs0MTQsNyBAQAogICAgICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgICAgIC8vIFJlbGVhc2UgYW55IHRlbXBvcmFyeSBjZWxsIGxvY2ssIHdoaWNoIGNvdWxkIGhhdmUgYmVlbgotICAgICAgICAgICAgICAgIC8vIGFxdWlyZWQgdG8gYWxsb3cgYSBzaW5nbGUtc2hvdCBsb2NhdGlvbiB1cGRhdGUuCisgICAgICAgICAgICAgICAgLy8gYWNxdWlyZWQgdG8gYWxsb3cgYSBzaW5nbGUtc2hvdCBsb2NhdGlvbiB1cGRhdGUuCiAgICAgICAgICAgICAgICAgZGlzYWJsZVNpbmdsZUxvY2F0aW9uVXBkYXRlKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKQEAgLTUwMCw5ICs0OTksOSBAQAogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBjYXNlIEVWRU5UX0NIRUNLX1JFUE9SVF9HUFJTOgotICAgICAgICAgICAgICAgIGlmIChzcyAhPSBudWxsICYmICFpc0dwcnNDb25zaXN0YW50KGdwcnNTdGF0ZSwgc3MuZ2V0U3RhdGUoKSkpIHsKKyAgICAgICAgICAgICAgICBpZiAoc3MgIT0gbnVsbCAmJiAhaXNHcHJzQ29uc2lzdGVudChncHJzU3RhdGUsIHNzLmdldFN0YXRlKCkpKSB7CiAKLSAgICAgICAgICAgICAgICAgICAgLy8gQ2FuJ3QgcmVnaXN0ZXIgZGF0YSBzZXZpY2Ugd2hpbGUgdm9pY2Ugc2VydmljZSBpcyBvaworICAgICAgICAgICAgICAgICAgICAvLyBDYW4ndCByZWdpc3RlciBkYXRhIHNlcnZpY2Ugd2hpbGUgdm9pY2Ugc2VydmljZSBpcyBvawogICAgICAgICAgICAgICAgICAgICAvLyBpLmUuIENSRUcgaXMgb2sgd2hpbGUgQ0dSRUcgaXMgbm90CiAgICAgICAgICAgICAgICAgICAgIC8vIHBvc3NpYmxlIGEgbmV0d29yayBvciBiYXNlYmFuZCBzaWRlIGVycm9yCiAgICAgICAgICAgICAgICAgICAgIEdzbUNlbGxMb2NhdGlvbiBsb2MgPSAoKEdzbUNlbGxMb2NhdGlvbilwaG9uZS5nZXRDZWxsTG9jYXRpb24oKSk7CkBAIC0xMDI3LDcgKzEwMjYsNyBAQAogICAgICAgICAgICAgcGhvbmUubm90aWZ5TG9jYXRpb25DaGFuZ2VkKCk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoISBpc0dwcnNDb25zaXN0YW50KGdwcnNTdGF0ZSwgc3MuZ2V0U3RhdGUoKSkpIHsKKyAgICAgICAgaWYgKCEgaXNHcHJzQ29uc2lzdGVudChncHJzU3RhdGUsIHNzLmdldFN0YXRlKCkpKSB7CiAgICAgICAgICAgICBpZiAoIW1TdGFydGVkR3Byc1JlZ0NoZWNrICYmICFtUmVwb3J0ZWRHcHJzTm9SZWcpIHsKICAgICAgICAgICAgICAgICBtU3RhcnRlZEdwcnNSZWdDaGVjayA9IHRydWU7CiAKQEAgLTEwNDQsMTMgKzEwNDMsMTMgQEAKICAgICB9CiAKICAgICAvKioKLSAgICAgKiBDaGVjayBpZiBHUFJTIGdvdCByZWdpc3RyZWQgd2hpbGUgdm9pY2UgaXMgcmVnaXN0ZXJlZAorICAgICAqIENoZWNrIGlmIEdQUlMgZ290IHJlZ2lzdGVyZWQgd2hpbGUgdm9pY2UgaXMgcmVnaXN0ZXJlZC4KICAgICAgKgogICAgICAqIEBwYXJhbSBncHJzU3RhdGUgZm9yIEdQUlMgcmVnaXN0cmF0aW9uIHN0YXRlLCBpLmUuIENHUkVHIGluIEdTTQogICAgICAqIEBwYXJhbSBzZXJ2aWNlU3RhdGUgZm9yIHZvaWNlIHJlZ2lzdHJhdGlvbiBzdGF0ZSwgaS5lLiBDUkVHIGluIEdTTQogICAgICAqIEByZXR1cm4gZmFsc2UgaWYgZGV2aWNlIG9ubHkgcmVnaXN0ZXIgdG8gdm9pY2UgYnV0IG5vdCBncHJzCiAgICAgICovCi0gICAgcHJpdmF0ZSBib29sZWFuIGlzR3Byc0NvbnNpc3RhbnQgKGludCBncHJzU3RhdGUsIGludCBzZXJ2aWNlU3RhdGUpIHsKKyAgICBwcml2YXRlIGJvb2xlYW4gaXNHcHJzQ29uc2lzdGVudChpbnQgZ3Byc1N0YXRlLCBpbnQgc2VydmljZVN0YXRlKSB7CiAgICAgICAgIHJldHVybiAhKChzZXJ2aWNlU3RhdGUgPT0gU2VydmljZVN0YXRlLlNUQVRFX0lOX1NFUlZJQ0UpICYmCiAgICAgICAgICAgICAgICAgKGdwcnNTdGF0ZSAhPSBTZXJ2aWNlU3RhdGUuU1RBVEVfSU5fU0VSVklDRSkpOwogICAgIH0KQEAgLTExMDUsMTMgKzExMDQsMTMgQEAKIAogICAgICAgICBsb25nIG5leHRUaW1lOwogCi0gICAgICAgIC8vIFRPRE8gRG9uZSd0IHBvbGwgc2lnbmFsIHN0cmVuZ3RoIGlmIHNjcmVlbiBpcyBvZmYKKyAgICAgICAgLy8gVE9ETyBEb24ndCBwb2xsIHNpZ25hbCBzdHJlbmd0aCBpZiBzY3JlZW4gaXMgb2ZmCiAgICAgICAgIHNlbmRNZXNzYWdlRGVsYXllZChtc2csIFBPTExfUEVSSU9EX01JTExJUyk7CiAgICAgfQogCiAgICAgLyoqCi0gICAgICogIHNlbmQgc2lnbmFsLXN0cmVuZ3RoLWNoYW5nZWQgbm90aWZpY2F0aW9uIGlmIGNoYW5nZWQKLSAgICAgKiAgQ2FsbGVkIGJvdGggZm9yIHNvbGljaXRlZCBhbmQgdW5zb2xpY2l0ZWQgc2lnbmFsIHN0ZW5ndGggdXBkYXRlcworICAgICAqICBTZW5kIHNpZ25hbC1zdHJlbmd0aC1jaGFuZ2VkIG5vdGlmaWNhdGlvbiBpZiBjaGFuZ2VkLgorICAgICAqICBDYWxsZWQgYm90aCBmb3Igc29saWNpdGVkIGFuZCB1bnNvbGljaXRlZCBzaWduYWwgc3RyZW5ndGggdXBkYXRlcy4KICAgICAgKi8KICAgICBwcml2YXRlIHZvaWQgb25TaWduYWxTdHJlbmd0aFJlc3VsdChBc3luY1Jlc3VsdCBhcikgewogICAgICAgICBTaWduYWxTdHJlbmd0aCBvbGRTaWduYWxTdHJlbmd0aCA9IG1TaWduYWxTdHJlbmd0aDsKQEAgLTEzMzIsNyArMTMzMSw3IEBACiAKICAgICAvKioKICAgICAgKiBAcmV0dXJuIHRydWUgaWYgcGhvbmUgaXMgY2FtcGluZyBvbiBhIHRlY2hub2xvZ3kgKGVnIFVNVFMpCi0gICAgICogdGhhdCBjb3VsZCBzdXBwb3J0IHZvaWNlIGFuZCBkYXRhIHNpbXVsdGFuaW91c2x5LgorICAgICAqIHRoYXQgY291bGQgc3VwcG9ydCB2b2ljZSBhbmQgZGF0YSBzaW11bHRhbmVvdXNseS4KICAgICAgKi8KICAgICBib29sZWFuIGlzQ29uY3VycmVudFZvaWNlQW5kRGF0YSgpIHsKICAgICAgICAgcmV0dXJuIChuZXR3b3JrVHlwZSA+PSBEQVRBX0FDQ0VTU19VTVRTKTsKZGlmZiAtLWdpdCBhL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9nc20vU21zTWVzc2FnZS5qYXZhIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2dzbS9TbXNNZXNzYWdlLmphdmEKaW5kZXggZDYyN2JhZi4uMTJjNmI4OCAxMDA2NDQKLS0tIGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2dzbS9TbXNNZXNzYWdlLmphdmEKKysrIGIvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L2dzbS9TbXNNZXNzYWdlLmphdmEKQEAgLTExMSw2ICsxMTEsMTQgQEAKICAgICB9CiAKICAgICAvKioKKyAgICAgKiAzR1BQIFRTIDIzLjA0MCA5LjIuMy45IHNwZWNpZmllcyB0aGF0IFR5cGUgWmVybyBtZXNzYWdlcyBhcmUgaW5kaWNhdGVkCisgICAgICogYnkgVFBfUElEIGZpZWxkIHNldCB0byB2YWx1ZSAweDQwCisgICAgICovCisgICAgcHVibGljIGJvb2xlYW4gaXNUeXBlWmVybygpIHsKKyAgICAgICAgcmV0dXJuIChwcm90b2NvbElkZW50aWZpZXIgPT0gMHg0MCk7CisgICAgfQorCisgICAgLyoqCiAgICAgICogVFMgMjcuMDA1IDMuNC4xIGxpbmVzWzBdIGFuZCBsaW5lc1sxXSBhcmUgdGhlIHR3byBsaW5lcyByZWFkIGZyb20gdGhlCiAgICAgICogK0NNVCB1bnNvbGljaXRlZCByZXNwb25zZSAoUERVIG1vZGUsIG9mIGNvdXJzZSkKICAgICAgKiAgK0NNVDogWyZsdDthbHBoYT5dLDxsZW5ndGg+PENSPjxMRj48cGR1PgpkaWZmIC0tZ2l0IGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L3Rlc3QvU2ltdWxhdGVkQ29tbWFuZHMuamF2YSBiL3RlbGVwaG9ueS9qYXZhL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS90ZXN0L1NpbXVsYXRlZENvbW1hbmRzLmphdmEKaW5kZXggMTFiM2ZkNi4uYTEyMGY1MiAxMDA2NDQKLS0tIGEvdGVsZXBob255L2phdmEvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L3Rlc3QvU2ltdWxhdGVkQ29tbWFuZHMuamF2YQorKysgYi90ZWxlcGhvbnkvamF2YS9jb20vYW5kcm9pZC9pbnRlcm5hbC90ZWxlcGhvbnkvdGVzdC9TaW11bGF0ZWRDb21tYW5kcy5qYXZhCkBAIC0yOSw2ICsyOSw3IEBACiBpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LkRhdGFDYWxsU3RhdGU7CiBpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LkljY0NhcmQ7CiBpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LlBob25lOworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5VVVNJbmZvOwogaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5nc20uQ2FsbEZhaWxDYXVzZTsKIGltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuZ3NtLlNtc0Jyb2FkY2FzdENvbmZpZ0luZm87CiBpbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwudGVsZXBob255LmdzbS5TdXBwU2VydmljZU5vdGlmaWNhdGlvbjsKQEAgLTQ5Niw2ICs0OTcsMjMgQEAKICAgICAgKiAgcmV0TXNnLm9iaiA9IEFzeW5jUmVzdWx0IGFyCiAgICAgICogIGFyLmV4Y2VwdGlvbiBjYXJyaWVzIGV4Y2VwdGlvbiBvbiBmYWlsdXJlCiAgICAgICogIGFyLnVzZXJPYmplY3QgY29udGFpbnMgdGhlIG9yaWduYWwgdmFsdWUgb2YgcmVzdWx0Lm9iagorICAgICAqICBhci5yZXN1bHQgaXMgbnVsbCBvbiBzdWNjZXNzIGFuZCBmYWlsdXJlCisgICAgICoKKyAgICAgKiBDTElSX0RFRkFVTFQgICAgID09IG9uICJ1c2Ugc3Vic2NyaXB0aW9uIGRlZmF1bHQgdmFsdWUiCisgICAgICogQ0xJUl9TVVBQUkVTU0lPTiA9PSBvbiAiQ0xJUiBzdXBwcmVzc2lvbiIgKGFsbG93IENMSSBwcmVzZW50YXRpb24pCisgICAgICogQ0xJUl9JTlZPQ0FUSU9OICA9PSBvbiAiQ0xJUiBpbnZvY2F0aW9uIiAocmVzdHJpY3QgQ0xJIHByZXNlbnRhdGlvbikKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCBkaWFsKFN0cmluZyBhZGRyZXNzLCBpbnQgY2xpck1vZGUsIFVVU0luZm8gdXVzSW5mbywgTWVzc2FnZSByZXN1bHQpIHsKKyAgICAgICAgc2ltdWxhdGVkQ2FsbFN0YXRlLm9uRGlhbChhZGRyZXNzKTsKKworICAgICAgICByZXN1bHRTdWNjZXNzKHJlc3VsdCwgbnVsbCk7CisgICAgfQorCisgICAgLyoqCisgICAgICogIHJldHVybmVkIG1lc3NhZ2UKKyAgICAgKiAgcmV0TXNnLm9iaiA9IEFzeW5jUmVzdWx0IGFyCisgICAgICogIGFyLmV4Y2VwdGlvbiBjYXJyaWVzIGV4Y2VwdGlvbiBvbiBmYWlsdXJlCisgICAgICogIGFyLnVzZXJPYmplY3QgY29udGFpbnMgdGhlIG9yaWduYWwgdmFsdWUgb2YgcmVzdWx0Lm9iagogICAgICAqICBhci5yZXN1bHQgaXMgU3RyaW5nIGNvbnRhaW5pbmcgSU1TSSBvbiBzdWNjZXNzCiAgICAgICovCiAgICAgcHVibGljIHZvaWQgZ2V0SU1TSShNZXNzYWdlIHJlc3VsdCkgewpkaWZmIC0tZ2l0IGEvdGVsZXBob255L3Rlc3RzL3RlbGVwaG9ueXRlc3RzL3NyYy9hbmRyb2lkL3RlbGVwaG9ueS9QaG9uZU51bWJlclV0aWxzVGVzdC5qYXZhIGIvdGVsZXBob255L3Rlc3RzL3RlbGVwaG9ueXRlc3RzL3NyYy9hbmRyb2lkL3RlbGVwaG9ueS9QaG9uZU51bWJlclV0aWxzVGVzdC5qYXZhCmluZGV4IDAyNTkwZDMuLmRlNTliODEgMTAwNjQ0Ci0tLSBhL3RlbGVwaG9ueS90ZXN0cy90ZWxlcGhvbnl0ZXN0cy9zcmMvYW5kcm9pZC90ZWxlcGhvbnkvUGhvbmVOdW1iZXJVdGlsc1Rlc3QuamF2YQorKysgYi90ZWxlcGhvbnkvdGVzdHMvdGVsZXBob255dGVzdHMvc3JjL2FuZHJvaWQvdGVsZXBob255L1Bob25lTnVtYmVyVXRpbHNUZXN0LmphdmEKQEAgLTE2LDEzICsxNiwxNiBAQAogCiBwYWNrYWdlIGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueTsKIAoraW1wb3J0IGFuZHJvaWQudGVzdC5BbmRyb2lkVGVzdENhc2U7CiBpbXBvcnQgYW5kcm9pZC50ZXN0LnN1aXRlYnVpbGRlci5hbm5vdGF0aW9uLlNtYWxsVGVzdDsKIGltcG9ydCBhbmRyb2lkLnRleHQuU3Bhbm5hYmxlU3RyaW5nQnVpbGRlcjsKIGltcG9ydCBhbmRyb2lkLnRlbGVwaG9ueS5QaG9uZU51bWJlclV0aWxzOworaW1wb3J0IGFuZHJvaWQudGVsZXBob255LlRlbGVwaG9ueU1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CiAKIGltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2U7CiAKLXB1YmxpYyBjbGFzcyBQaG9uZU51bWJlclV0aWxzVGVzdCBleHRlbmRzIFRlc3RDYXNlIHsKK3B1YmxpYyBjbGFzcyBQaG9uZU51bWJlclV0aWxzVGVzdCBleHRlbmRzIEFuZHJvaWRUZXN0Q2FzZSB7CiAKICAgICBAU21hbGxUZXN0CiAgICAgcHVibGljIHZvaWQgdGVzdEV4dHJhY3ROZXR3b3JrUG9ydGlvbigpIHRocm93cyBFeGNlcHRpb24gewpAQCAtODIsNiArODUsMTYgQEAKICAgICAgICAgYXNzZXJ0RXF1YWxzKCIxNzAwNTU1MDAyMCIsCiAgICAgICAgICAgICBQaG9uZU51bWJlclV0aWxzLmNhbGxlZFBhcnR5QkNEVG9TdHJpbmcoYiwgMCwgNykpOwogCisgICAgICAgIGJbMF0gPSAoYnl0ZSkgMHg4MDsgYlsxXSA9IChieXRlKSAweDcxOyBiWzJdID0gKGJ5dGUpIDB4MDA7IGJbM10gPSAoYnl0ZSkgMHg1NTsKKyAgICAgICAgYls0XSA9IChieXRlKSAweDA1OyBiWzVdID0gKGJ5dGUpIDB4MjA7IGJbNl0gPSAoYnl0ZSkgMHhGMDsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKCIxNzAwNTU1MDAyMCIsCisgICAgICAgICAgICBQaG9uZU51bWJlclV0aWxzLmNhbGxlZFBhcnR5QkNEVG9TdHJpbmcoYiwgMCwgNykpOworCisgICAgICAgIGJbMF0gPSAoYnl0ZSkgMHg5MDsgYlsxXSA9IChieXRlKSAweDcxOyBiWzJdID0gKGJ5dGUpIDB4MDA7IGJbM10gPSAoYnl0ZSkgMHg1NTsKKyAgICAgICAgYls0XSA9IChieXRlKSAweDA1OyBiWzVdID0gKGJ5dGUpIDB4MjA7IGJbNl0gPSAoYnl0ZSkgMHhGMDsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKCIrMTcwMDU1NTAwMjAiLAorICAgICAgICAgICAgUGhvbmVOdW1iZXJVdGlscy5jYWxsZWRQYXJ0eUJDRFRvU3RyaW5nKGIsIDAsIDcpKTsKKwogICAgICAgICBiWzBdID0gKGJ5dGUpIDB4OTE7IGJbMV0gPSAoYnl0ZSkgMHg3MTsgYlsyXSA9IChieXRlKSAweDAwOyBiWzNdID0gKGJ5dGUpIDB4NTU7CiAgICAgICAgIGJbNF0gPSAoYnl0ZSkgMHgwNTsgYls1XSA9IChieXRlKSAweDIwOyBiWzZdID0gKGJ5dGUpIDB4RjA7CiAgICAgICAgIGFzc2VydEVxdWFscygiKzE3MDA1NTUwMDIwIiwKQEAgLTQ3Miw0ICs0ODUsMjIgQEAKICAgICAgICAgICAgICAgICBQaG9uZU51bWJlclV0aWxzLmNkbWFDaGVja0FuZFByb2Nlc3NQbHVzQ29kZUJ5TnVtYmVyRm9ybWF0KCIrMTg0NzU3OTcwMDAiLAogICAgICAgICAgICAgICAgIFBob25lTnVtYmVyVXRpbHMuRk9STUFUX1VOS05PV04sUGhvbmVOdW1iZXJVdGlscy5GT1JNQVRfVU5LTk9XTikpOwogICAgIH0KKworICAgIC8qKgorICAgICAqIEJhc2ljIGNoZWNrcyBmb3IgdGhlIFZvaWNlTWFpbCBudW1iZXIuCisgICAgICovCisgICAgQFNtYWxsVGVzdAorICAgIHB1YmxpYyB2b2lkIHRlc3RXaXRoTnVtYmVyTm90RXF1YWxUb1ZvaWNlTWFpbCgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBhc3NlcnRGYWxzZShQaG9uZU51bWJlclV0aWxzLmlzVm9pY2VNYWlsTnVtYmVyKCI5MTEiKSk7CisgICAgICAgIGFzc2VydEZhbHNlKFBob25lTnVtYmVyVXRpbHMuaXNWb2ljZU1haWxOdW1iZXIoInRlbDo5MTEiKSk7CisgICAgICAgIGFzc2VydEZhbHNlKFBob25lTnVtYmVyVXRpbHMuaXNWb2ljZU1haWxOdW1iZXIoIisxODAwMTIzNDU2NyIpKTsKKyAgICAgICAgYXNzZXJ0RmFsc2UoUGhvbmVOdW1iZXJVdGlscy5pc1ZvaWNlTWFpbE51bWJlcigiIikpOworICAgICAgICBhc3NlcnRGYWxzZShQaG9uZU51bWJlclV0aWxzLmlzVm9pY2VNYWlsTnVtYmVyKG51bGwpKTsKKyAgICAgICAgLy8gVGhpcyB0ZXN0IGZhaWxzIG9uIGEgZGV2aWNlIHdpdGhvdXQgYSBzaW0gY2FyZAorICAgICAgICAvKlRlbGVwaG9ueU1hbmFnZXIgbVRlbGVwaG9ueU1hbmFnZXIgPQorICAgICAgICAgICAgKFRlbGVwaG9ueU1hbmFnZXIpZ2V0Q29udGV4dCgpLmdldFN5c3RlbVNlcnZpY2UoQ29udGV4dC5URUxFUEhPTllfU0VSVklDRSk7CisgICAgICAgIFN0cmluZyBtVm9pY2VNYWlsTnVtYmVyID0gbVRlbGVwaG9ueU1hbmFnZXIuZ2V0RGVmYXVsdCgpLmdldFZvaWNlTWFpbE51bWJlcigpOworICAgICAgICBhc3NlcnRUcnVlKFBob25lTnVtYmVyVXRpbHMuaXNWb2ljZU1haWxOdW1iZXIobVZvaWNlTWFpbE51bWJlcikpOworICAgICAgICAqLworICAgIH0KIH0KZGlmZiAtLWdpdCBhL3RlbGVwaG9ueS90ZXN0cy90ZWxlcGhvbnl0ZXN0cy9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvdGVsZXBob255L0NhbGxlckluZm9UZXN0LmphdmEgYi90ZWxlcGhvbnkvdGVzdHMvdGVsZXBob255dGVzdHMvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9DYWxsZXJJbmZvVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlNWRhZmIKLS0tIC9kZXYvbnVsbAorKysgYi90ZWxlcGhvbnkvdGVzdHMvdGVsZXBob255dGVzdHMvc3JjL2NvbS9hbmRyb2lkL2ludGVybmFsL3RlbGVwaG9ueS9DYWxsZXJJbmZvVGVzdC5qYXZhCkBAIC0wLDAgKzEsMjQxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnk7CisKK2ltcG9ydCBhbmRyb2lkLnRlc3QuQW5kcm9pZFRlc3RDYXNlOworaW1wb3J0IGFuZHJvaWQudGVzdC5zdWl0ZWJ1aWxkZXIuYW5ub3RhdGlvbi5TbWFsbFRlc3Q7CisKK2ltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGVudFJlc29sdmVyOworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5yZXMuUmVzb3VyY2VzOworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5DYWxsZXJJbmZvOworaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5DYWxsZXJJbmZvQXN5bmNRdWVyeTsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOworaW1wb3J0IGFuZHJvaWQub3MuTG9vcGVyOworaW1wb3J0IGFuZHJvaWQudGVzdC5BY3Rpdml0eUluc3RydW1lbnRhdGlvblRlc3RDYXNlOworaW1wb3J0IGFuZHJvaWQudXRpbC5TdHJpbmdCdWlsZGVyUHJpbnRlcjsKKworLyoKKyAqIENoZWNrIHRoZSBDYWxsZXJJbmZvIHV0aWxpdHkgY2xhc3Mgd29ya3MgYXMgZXhwZWN0ZWQuCisgKgorICovCisKK3B1YmxpYyBjbGFzcyBDYWxsZXJJbmZvVGVzdCBleHRlbmRzIEFuZHJvaWRUZXN0Q2FzZSB7CisgICAgcHJpdmF0ZSBDYWxsZXJJbmZvIG1JbmZvOworICAgIHByaXZhdGUgQ29udGV4dCBtQ29udGV4dDsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBrRW1lcmdlbmN5TnVtYmVyID0gIkVtZXJnZW5jeSBOdW1iZXIiOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBrVG9rZW4gPSAweGRlYWRiZWVmOworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBUQUcgPSAiQ2FsbGVySW5mb1VuaXRUZXN0IjsKKworICAgIEBPdmVycmlkZQorICAgIHByb3RlY3RlZCB2b2lkIHNldFVwKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIHN1cGVyLnNldFVwKCk7CisgICAgICAgIG1Db250ZXh0ID0gbmV3IE1vY2tDb250ZXh0KCk7CisgICAgICAgIG1JbmZvID0gbmV3IENhbGxlckluZm8oKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwcm90ZWN0ZWQgdm9pZCB0ZWFyRG93bigpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBzdXBlci50ZWFyRG93bigpOworICAgIH0KKworICAgIC8qKgorICAgICAqIENoZWNrcyB0aGUgY2FsbGVyIGluZm8gaW5zdGFuY2UgaXMgZmxhZ2dlZCBhcyBhbiBlbWVyZ2VuY3kgaWYKKyAgICAgKiB0aGUgbnVtYmVyIGlzIGFuIGVtZXJnZW5jeSBvbmUuIFRoZXJlIGlzIG5vIHRlc3QgZm9yIHRoZQorICAgICAqIGNvbnRhY3QgYmFzZWQgY29uc3RydWN0b3JzIGJlY2F1c2UgZW1lcmdlbmN5IG51bWJlciBhcmUgbm90IGluCisgICAgICogdGhlIGNvbnRhY3QgREIuCisgICAgICovCisgICAgQFNtYWxsVGVzdAorICAgIHB1YmxpYyB2b2lkIHRlc3RFbWVyZ2VuY3lJc1Byb3Blcmx5U2V0KCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIGFzc2VydEZhbHNlKG1JbmZvLmlzRW1lcmdlbmN5TnVtYmVyKCkpOworCisgICAgICAgIG1JbmZvID0gQ2FsbGVySW5mby5nZXRDYWxsZXJJbmZvKG1Db250ZXh0LCAiOTExIik7CisgICAgICAgIGFzc2VydElzVmFsaWRFbWVyZ2VuY3lDYWxsZXJJbmZvKCk7CisKKyAgICAgICAgbUluZm8gPSBDYWxsZXJJbmZvLmdldENhbGxlckluZm8obUNvbnRleHQsICJ0ZWw6OTExIik7CisgICAgICAgIGFzc2VydElzVmFsaWRFbWVyZ2VuY3lDYWxsZXJJbmZvKCk7CisKKworICAgICAgICAvLyBUaGlzIG9uZSBoaXRzIHRoZSBjb250ZW50IHJlc29sdmVyLgorICAgICAgICBtSW5mbyA9IENhbGxlckluZm8uZ2V0Q2FsbGVySW5mbyhtQ29udGV4dCwgIjE4MDAxMjM0NTY3Iik7CisgICAgICAgIGFzc2VydEZhbHNlKG1JbmZvLmlzRW1lcmdlbmN5TnVtYmVyKCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIFNhbWUgYXMgdGVzdEVtZXJnZW5jeUlzUHJvcGVybHlTZXQgYnV0IHVzZXMgdGhlIGFzeW5jIHF1ZXJ5IGFwaS4KKyAgICAgKi8KKyAgICBAU21hbGxUZXN0CisgICAgcHVibGljIHZvaWQgdGVzdEVtZXJnZW5jeUlzUHJvcGVybHlTZXRVc2luZ0FzeW5jUXVlcnkoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgUXVlcnlSdW5uZXIgcXVlcnk7CisKKyAgICAgICAgcXVlcnkgPSBuZXcgUXVlcnlSdW5uZXIoIjkxMSIpOworICAgICAgICBxdWVyeS5ydW5BbmRDaGVja0NvbXBsZXRpb24oKTsKKyAgICAgICAgYXNzZXJ0SXNWYWxpZEVtZXJnZW5jeUNhbGxlckluZm8oKTsKKworICAgICAgICBxdWVyeSA9IG5ldyBRdWVyeVJ1bm5lcigidGVsOjkxMSIpOworICAgICAgICBxdWVyeS5ydW5BbmRDaGVja0NvbXBsZXRpb24oKTsKKyAgICAgICAgYXNzZXJ0SXNWYWxpZEVtZXJnZW5jeUNhbGxlckluZm8oKTsKKworICAgICAgICBxdWVyeSA9IG5ldyBRdWVyeVJ1bm5lcigiMTgwMDEyMzQ1NjciKTsKKyAgICAgICAgcXVlcnkucnVuQW5kQ2hlY2tDb21wbGV0aW9uKCk7CisgICAgICAgIGFzc2VydEZhbHNlKG1JbmZvLmlzRW1lcmdlbmN5TnVtYmVyKCkpOworICAgIH0KKworICAgIC8qKgorICAgICAqIEZvciBlbWVyZ2VuY3kgY2FsbGVyIGluZm8sIHBob25lTnVtYmVyIHNob3VsZCBiZSBzZXQgdG8gdGhlCisgICAgICogc3RyaW5nIGVtZXJnZW5jeV9jYWxsX2RpYWxvZ19udW1iZXJfZm9yX2Rpc3BsYXkgYW5kIHRoZQorICAgICAqIHBob3RvUmVzb3VyY2Ugc2hvdWxkIGJlIHNldCB0byB0aGUgcGljdHVyZV9lbWVyZ2VuY3kgZHJhd2FibGUuCisgICAgICovCisgICAgQFNtYWxsVGVzdAorICAgIHB1YmxpYyB2b2lkIHRlc3RFbWVyZ2VuY3lOdW1iZXJBbmRQaG90b0FyZVNldCgpIHRocm93cyBFeGNlcHRpb24geworICAgICAgICBtSW5mbyA9IENhbGxlckluZm8uZ2V0Q2FsbGVySW5mbyhtQ29udGV4dCwgIjkxMSIpOworCisgICAgICAgIGFzc2VydElzVmFsaWRFbWVyZ2VuY3lDYWxsZXJJbmZvKCk7CisgICAgfQorCisgICAgLy8gVE9ETzogQWRkIG1vcmUgdGVzdHM6CisgICAgLyoqCisgICAgICogQ2hlY2sgaWYgdGhlIHZvaWNlIG1haWwgbnVtYmVyIGNhbm5vdCBiZSByZXRyaWV2ZWQgdGhhdCB0aGUKKyAgICAgKiBvcmlnaW5hbCBwaG9uZSBudW1iZXIgaXMgcHJlc2VydmVkLgorICAgICAqLworICAgIC8qKgorICAgICAqIENoZWNrIHRoZSBtYXJrQXMqIG1ldGhvZHMgd29yay4KKyAgICAgKi8KKworCisgICAgLy8KKyAgICAvLyBIZWxwZXJzCisgICAgLy8KKworICAgIC8vIFBhcnRpYWwgaW1wbGVtZW50YXRpb24gb2YgTW9ja1Jlc291cmNlcy4KKyAgICBwdWJsaWMgY2xhc3MgTW9ja1Jlc291cmNlcyBleHRlbmRzIGFuZHJvaWQudGVzdC5tb2NrLk1vY2tSZXNvdXJjZXMKKyAgICB7CisgICAgICAgIEBPdmVycmlkZQorICAgICAgICBwdWJsaWMgU3RyaW5nIGdldFN0cmluZyhpbnQgcmVzSWQpIHRocm93cyBSZXNvdXJjZXMuTm90Rm91bmRFeGNlcHRpb24geworICAgICAgICAgICAgc3dpdGNoIChyZXNJZCkgeworICAgICAgICAgICAgICAgIGNhc2UgY29tLmFuZHJvaWQuaW50ZXJuYWwuUi5zdHJpbmcuZW1lcmdlbmN5X2NhbGxfZGlhbG9nX251bWJlcl9mb3JfZGlzcGxheToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGtFbWVyZ2VuY3lOdW1iZXI7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKCJNaXNzaW5nIGhhbmRsaW5nIGZvciByZXNpZCAiICsgcmVzSWQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgLy8gUGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBNb2NrQ29udGV4dC4KKyAgICBwdWJsaWMgY2xhc3MgTW9ja0NvbnRleHQgZXh0ZW5kcyBhbmRyb2lkLnRlc3QubW9jay5Nb2NrQ29udGV4dCB7CisgICAgICAgIHByaXZhdGUgQ29udGVudFJlc29sdmVyIG1SZXNvbHZlcjsKKyAgICAgICAgcHJpdmF0ZSBSZXNvdXJjZXMgbVJlc291cmNlczsKKworICAgICAgICBwdWJsaWMgTW9ja0NvbnRleHQoKSB7CisgICAgICAgICAgICBtUmVzb2x2ZXIgPSBuZXcgYW5kcm9pZC50ZXN0Lm1vY2suTW9ja0NvbnRlbnRSZXNvbHZlcigpOworICAgICAgICAgICAgbVJlc291cmNlcyA9IG5ldyBNb2NrUmVzb3VyY2VzKCk7CisgICAgICAgIH0KKworICAgICAgICBAT3ZlcnJpZGUKKyAgICAgICAgcHVibGljIENvbnRlbnRSZXNvbHZlciBnZXRDb250ZW50UmVzb2x2ZXIoKSB7CisgICAgICAgICAgICByZXR1cm4gbVJlc29sdmVyOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyBSZXNvdXJjZXMgZ2V0UmVzb3VyY2VzKCkgeworICAgICAgICAgICAgcmV0dXJuIG1SZXNvdXJjZXM7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBDbGFzcyB0byBydW4gYSBDYWxsZXJJbmZvQXN5bmNRdWVyeSBpbiBhIHNlcGFyYXRlIHRocmVhZCwgd2l0aAorICAgICAqIGl0cyBvd24gTG9vcGVyLiBXZSBjYW5ub3QgdXNlIHRoZSBtYWluIExvb3BlciBiZWNhdXNlIG9uIHRoZQorICAgICAqIDFzdCBxdWl0IHRoZSB0aHJlYWQgaXMgbWFrZWQgZGVhZCwgaWUgbm8gZnVydGhlciB0ZXN0IGNhbiB1c2UKKyAgICAgKiBpdC4gQWxzbyB0aGVyZSBpcyBub3Qgd2F5IHRvIGluamVjdCBhIExvb3BlciBpbnN0YW5jZSBpbiB0aGUKKyAgICAgKiBxdWVyeSwgc28gd2UgaGF2ZSB0byB1c2UgYSB0aHJlYWQgd2l0aCBpdHMgb3duIGxvb3Blci4KKyAgICAgKi8KKyAgICBwcml2YXRlIGNsYXNzIFF1ZXJ5UnVubmVyIGV4dGVuZHMgVGhyZWFkCisgICAgICAgICAgICBpbXBsZW1lbnRzIENhbGxlckluZm9Bc3luY1F1ZXJ5Lk9uUXVlcnlDb21wbGV0ZUxpc3RlbmVyIHsKKyAgICAgICAgcHJpdmF0ZSBMb29wZXIgbUxvb3BlcjsKKyAgICAgICAgcHJpdmF0ZSBTdHJpbmcgbU51bWJlcjsKKyAgICAgICAgcHJpdmF0ZSBib29sZWFuIG1Bc3luY0NvbXBsZXRlZDsKKworICAgICAgICBwdWJsaWMgUXVlcnlSdW5uZXIoU3RyaW5nIG51bWJlcikgeworICAgICAgICAgICAgc3VwZXIoKTsKKyAgICAgICAgICAgIG1OdW1iZXIgPSBudW1iZXI7CisgICAgICAgIH0KKworICAgICAgICAvLyBSdW4gdGhlIHF1ZXJ5IGluIHRoZSB0aHJlYWQsIHdhaXQgZm9yIGNvbXBsZXRpb24uCisgICAgICAgIHB1YmxpYyB2b2lkIHJ1bkFuZENoZWNrQ29tcGxldGlvbigpIHRocm93cyBJbnRlcnJ1cHRlZEV4Y2VwdGlvbiB7CisgICAgICAgICAgICBzdGFydCgpOworICAgICAgICAgICAgam9pbigpOworICAgICAgICAgICAgYXNzZXJ0VHJ1ZShtQXN5bmNDb21wbGV0ZWQpOworICAgICAgICB9CisKKyAgICAgICAgQE92ZXJyaWRlCisgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgIExvb3Blci5wcmVwYXJlKCk7CisgICAgICAgICAgICBtTG9vcGVyID0gTG9vcGVyLm15TG9vcGVyKCk7CisgICAgICAgICAgICBtQXN5bmNDb21wbGV0ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIC8vIFRoZSBxdWVyeSB3aWxsIHBpY2sgdGhlIHRocmVhZCBsb2NhbCBsb29wZXIgd2UndmUganVzdCBwcmVwYXJlZC4KKyAgICAgICAgICAgIENhbGxlckluZm9Bc3luY1F1ZXJ5LnN0YXJ0UXVlcnkoa1Rva2VuLCBtQ29udGV4dCwgbU51bWJlciwgdGhpcywgbnVsbCk7CisgICAgICAgICAgICBtTG9vcGVyLmxvb3AoKTsKKyAgICAgICAgfQorCisgICAgICAgIC8vIFF1aXQgdGhlIExvb3BlciBvbiB0aGUgMXN0IGNhbGxiYWNrCisgICAgICAgIC8vIChFVkVOVF9FTUVSR0VOQ1lfTlVNQkVSKS4gVGhlcmUgaXMgYW5vdGhlciBtZXNzYWdlCisgICAgICAgIC8vIChFVkVOVF9FTkRfT0ZfUVVFVUUpIHRoYXQgd2lsbCBuZXZlciBiZSBkZWxpdmVyZWQgYmVjYXVzZQorICAgICAgICAvLyB0aGUgdGVzdCBoYXMgZXhpdGVkLiBUaGUgY29ycmVzcG9uZGluZyBzdGFjayB0cmFjZQorICAgICAgICAvLyAiSGFuZGxlcnt4eHh4eH0gc2VuZGluZyBtZXNzYWdlIHRvIGEgSGFuZGxlciBvbiBhIGRlYWQKKyAgICAgICAgLy8gdGhyZWFkIiBjYW4gYmUgaWdub3JlZC4KKyAgICAgICAgcHVibGljIHZvaWQgb25RdWVyeUNvbXBsZXRlKGludCB0b2tlbiwgT2JqZWN0IGNvb2tpZSwgQ2FsbGVySW5mbyBpbmZvKSB7CisgICAgICAgICAgICBtQXN5bmNDb21wbGV0ZWQgPSB0cnVlOworICAgICAgICAgICAgbUluZm8gPSBpbmZvOworICAgICAgICAgICAgbUxvb3Blci5xdWl0KCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBGYWlsIGlmIG1JbmZvIGRvZXMgbm90IGNvbnRhaW4gYSB2YWxpZCBlbWVyZ2VuY3kgQ2FsbGVySW5mbyBpbnN0YW5jZS4KKyAgICAgKi8KKyAgICBwcml2YXRlIHZvaWQgYXNzZXJ0SXNWYWxpZEVtZXJnZW5jeUNhbGxlckluZm8oKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgYXNzZXJ0VHJ1ZShtSW5mby5pc0VtZXJnZW5jeU51bWJlcigpKTsKKworICAgICAgICAvLyBGb3IgZW1lcmdlbmN5IGNhbGxlciBpbmZvLCBwaG9uZU51bWJlciBzaG91bGQgYmUgc2V0IHRvIHRoZQorICAgICAgICAvLyBzdHJpbmcgZW1lcmdlbmN5X2NhbGxfZGlhbG9nX251bWJlcl9mb3JfZGlzcGxheSBhbmQgdGhlCisgICAgICAgIC8vIHBob3RvUmVzb3VyY2Ugc2hvdWxkIGJlIHNldCB0byB0aGUgcGljdHVyZV9lbWVyZ2VuY3kgZHJhd2FibGUuCisgICAgICAgIGFzc2VydEVxdWFscyhrRW1lcmdlbmN5TnVtYmVyLCBtSW5mby5waG9uZU51bWJlcik7CisgICAgICAgIGFzc2VydEVxdWFscyhjb20uYW5kcm9pZC5pbnRlcm5hbC5SLmRyYXdhYmxlLnBpY3R1cmVfZW1lcmdlbmN5LCBtSW5mby5waG90b1Jlc291cmNlKTsKKworICAgICAgICAvLyBUaGUgbmFtZSBzaG91bGQgYmUgbnVsbAorICAgICAgICBhc3NlcnROdWxsKG1JbmZvLm5hbWUpOworICAgICAgICBhc3NlcnRFcXVhbHMoMCwgbUluZm8ubmFtZVByZXNlbnRhdGlvbik7CisgICAgICAgIGFzc2VydE51bGwobUluZm8uY25hcE5hbWUpOworICAgICAgICBhc3NlcnRFcXVhbHMoMCwgbUluZm8ubnVtYmVyUHJlc2VudGF0aW9uKTsKKworICAgICAgICBhc3NlcnRGYWxzZShtSW5mby5jb250YWN0RXhpc3RzKTsKKyAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIG1JbmZvLnBlcnNvbl9pZCk7CisgICAgICAgIGFzc2VydEZhbHNlKG1JbmZvLm5lZWRVcGRhdGUpOworICAgICAgICBhc3NlcnROdWxsKG1JbmZvLmNvbnRhY3RSZWZVcmkpOworCisgICAgICAgIGFzc2VydE51bGwobUluZm8ucGhvbmVMYWJlbCk7CisgICAgICAgIGFzc2VydEVxdWFscygwLCBtSW5mby5udW1iZXJUeXBlKTsKKyAgICAgICAgYXNzZXJ0TnVsbChtSW5mby5udW1iZXJMYWJlbCk7CisKKyAgICAgICAgYXNzZXJ0TnVsbChtSW5mby5jb250YWN0UmluZ3RvbmVVcmkpOworICAgICAgICBhc3NlcnRGYWxzZShtSW5mby5zaG91bGRTZW5kVG9Wb2ljZW1haWwpOworCisgICAgICAgIGFzc2VydE51bGwobUluZm8uY2FjaGVkUGhvdG8pOworICAgICAgICBhc3NlcnRGYWxzZShtSW5mby5pc0NhY2hlZFBob3RvQ3VycmVudCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvdGVsZXBob255L3Rlc3RzL3RlbGVwaG9ueXRlc3RzL3NyYy9jb20vYW5kcm9pZC90ZWxlcGhvbnl0ZXN0L3VuaXQvQ2FsbGVySW5mb1VuaXRUZXN0LmphdmEgYi90ZWxlcGhvbnkvdGVzdHMvdGVsZXBob255dGVzdHMvc3JjL2NvbS9hbmRyb2lkL3RlbGVwaG9ueXRlc3QvdW5pdC9DYWxsZXJJbmZvVW5pdFRlc3QuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGYyNGYxNS4uMDAwMDAwMAotLS0gYS90ZWxlcGhvbnkvdGVzdHMvdGVsZXBob255dGVzdHMvc3JjL2NvbS9hbmRyb2lkL3RlbGVwaG9ueXRlc3QvdW5pdC9DYWxsZXJJbmZvVW5pdFRlc3QuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDI0MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA5IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotcGFja2FnZSBjb20uYW5kcm9pZC50ZWxlcGhvbnl0ZXN0LnVuaXQ7Ci1pbXBvcnQgYW5kcm9pZC50ZXN0LkFuZHJvaWRUZXN0Q2FzZTsKLWltcG9ydCBhbmRyb2lkLnRlc3Quc3VpdGVidWlsZGVyLmFubm90YXRpb24uU21hbGxUZXN0OwotCi1pbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRlbnRSZXNvbHZlcjsKLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dDsKLWltcG9ydCBhbmRyb2lkLmNvbnRlbnQucmVzLlJlc291cmNlczsKLWltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuQ2FsbGVySW5mbzsKLWltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC50ZWxlcGhvbnkuQ2FsbGVySW5mb0FzeW5jUXVlcnk7Ci1pbXBvcnQgYW5kcm9pZC51dGlsLkxvZzsKLWltcG9ydCBhbmRyb2lkLm9zLkxvb3BlcjsKLWltcG9ydCBhbmRyb2lkLnRlc3QuQWN0aXZpdHlJbnN0cnVtZW50YXRpb25UZXN0Q2FzZTsKLWltcG9ydCBhbmRyb2lkLnV0aWwuU3RyaW5nQnVpbGRlclByaW50ZXI7Ci0KLS8qCi0gKiBDaGVjayB0aGUgQ2FsbGVySW5mbyB1dGlsaXR5IGNsYXNzIHdvcmtzIGFzIGV4cGVjdGVkLgotICoKLSAqLwotCi1wdWJsaWMgY2xhc3MgQ2FsbGVySW5mb1VuaXRUZXN0IGV4dGVuZHMgQW5kcm9pZFRlc3RDYXNlIHsKLSAgICBwcml2YXRlIENhbGxlckluZm8gbUluZm87Ci0gICAgcHJpdmF0ZSBDb250ZXh0IG1Db250ZXh0OwotCi0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIGtFbWVyZ2VuY3lOdW1iZXIgPSAiRW1lcmdlbmN5IE51bWJlciI7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IGtUb2tlbiA9IDB4ZGVhZGJlZWY7Ci0gICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFRBRyA9ICJDYWxsZXJJbmZvVW5pdFRlc3QiOwotCi0gICAgQE92ZXJyaWRlCi0gICAgcHJvdGVjdGVkIHZvaWQgc2V0VXAoKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICAgICAgc3VwZXIuc2V0VXAoKTsKLSAgICAgICAgbUNvbnRleHQgPSBuZXcgTW9ja0NvbnRleHQoKTsKLSAgICAgICAgbUluZm8gPSBuZXcgQ2FsbGVySW5mbygpOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHByb3RlY3RlZCB2b2lkIHRlYXJEb3duKCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0gICAgICAgIHN1cGVyLnRlYXJEb3duKCk7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogQ2hlY2tzIHRoZSBjYWxsZXIgaW5mbyBpbnN0YW5jZSBpcyBmbGFnZ2VkIGFzIGFuIGVtZXJnZW5jeSBpZgotICAgICAqIHRoZSBudW1iZXIgaXMgYW4gZW1lcmdlbmN5IG9uZS4gVGhlcmUgaXMgbm8gdGVzdCBmb3IgdGhlCi0gICAgICogY29udGFjdCBiYXNlZCBjb25zdHJ1Y3RvcnMgYmVjYXVzZSBlbWVyZ2VuY3kgbnVtYmVyIGFyZSBub3QgaW4KLSAgICAgKiB0aGUgY29udGFjdCBEQi4KLSAgICAgKi8KLSAgICBAU21hbGxUZXN0Ci0gICAgcHVibGljIHZvaWQgdGVzdEVtZXJnZW5jeUlzUHJvcGVybHlTZXQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICAgICAgYXNzZXJ0RmFsc2UobUluZm8uaXNFbWVyZ2VuY3lOdW1iZXIoKSk7Ci0KLSAgICAgICAgbUluZm8gPSBDYWxsZXJJbmZvLmdldENhbGxlckluZm8obUNvbnRleHQsICI5MTEiKTsKLSAgICAgICAgYXNzZXJ0SXNWYWxpZEVtZXJnZW5jeUNhbGxlckluZm8oKTsKLQotICAgICAgICBtSW5mbyA9IENhbGxlckluZm8uZ2V0Q2FsbGVySW5mbyhtQ29udGV4dCwgInRlbDo5MTEiKTsKLSAgICAgICAgYXNzZXJ0SXNWYWxpZEVtZXJnZW5jeUNhbGxlckluZm8oKTsKLQotCi0gICAgICAgIC8vIFRoaXMgb25lIGhpdHMgdGhlIGNvbnRlbnQgcmVzb2x2ZXIuCi0gICAgICAgIG1JbmZvID0gQ2FsbGVySW5mby5nZXRDYWxsZXJJbmZvKG1Db250ZXh0LCAiMTgwMDEyMzQ1NjciKTsKLSAgICAgICAgYXNzZXJ0RmFsc2UobUluZm8uaXNFbWVyZ2VuY3lOdW1iZXIoKSk7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogU2FtZSBhcyB0ZXN0RW1lcmdlbmN5SXNQcm9wZXJseVNldCBidXQgdXNlcyB0aGUgYXN5bmMgcXVlcnkgYXBpLgotICAgICAqLwotICAgIEBTbWFsbFRlc3QKLSAgICBwdWJsaWMgdm9pZCB0ZXN0RW1lcmdlbmN5SXNQcm9wZXJseVNldFVzaW5nQXN5bmNRdWVyeSgpIHRocm93cyBFeGNlcHRpb24gewotICAgICAgICBRdWVyeVJ1bm5lciBxdWVyeTsKLQotICAgICAgICBxdWVyeSA9IG5ldyBRdWVyeVJ1bm5lcigiOTExIik7Ci0gICAgICAgIHF1ZXJ5LnJ1bkFuZENoZWNrQ29tcGxldGlvbigpOwotICAgICAgICBhc3NlcnRJc1ZhbGlkRW1lcmdlbmN5Q2FsbGVySW5mbygpOwotCi0gICAgICAgIHF1ZXJ5ID0gbmV3IFF1ZXJ5UnVubmVyKCJ0ZWw6OTExIik7Ci0gICAgICAgIHF1ZXJ5LnJ1bkFuZENoZWNrQ29tcGxldGlvbigpOwotICAgICAgICBhc3NlcnRJc1ZhbGlkRW1lcmdlbmN5Q2FsbGVySW5mbygpOwotCi0gICAgICAgIHF1ZXJ5ID0gbmV3IFF1ZXJ5UnVubmVyKCIxODAwMTIzNDU2NyIpOwotICAgICAgICBxdWVyeS5ydW5BbmRDaGVja0NvbXBsZXRpb24oKTsKLSAgICAgICAgYXNzZXJ0RmFsc2UobUluZm8uaXNFbWVyZ2VuY3lOdW1iZXIoKSk7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogRm9yIGVtZXJnZW5jeSBjYWxsZXIgaW5mbywgcGhvbmVOdW1iZXIgc2hvdWxkIGJlIHNldCB0byB0aGUKLSAgICAgKiBzdHJpbmcgZW1lcmdlbmN5X2NhbGxfZGlhbG9nX251bWJlcl9mb3JfZGlzcGxheSBhbmQgdGhlCi0gICAgICogcGhvdG9SZXNvdXJjZSBzaG91bGQgYmUgc2V0IHRvIHRoZSBwaWN0dXJlX2VtZXJnZW5jeSBkcmF3YWJsZS4KLSAgICAgKi8KLSAgICBAU21hbGxUZXN0Ci0gICAgcHVibGljIHZvaWQgdGVzdEVtZXJnZW5jeU51bWJlckFuZFBob3RvQXJlU2V0KCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0gICAgICAgIG1JbmZvID0gQ2FsbGVySW5mby5nZXRDYWxsZXJJbmZvKG1Db250ZXh0LCAiOTExIik7Ci0KLSAgICAgICAgYXNzZXJ0SXNWYWxpZEVtZXJnZW5jeUNhbGxlckluZm8oKTsKLSAgICB9Ci0KLSAgICAvLyBUT0RPOiBBZGQgbW9yZSB0ZXN0czoKLSAgICAvKioKLSAgICAgKiBDaGVjayBpZiB0aGUgdm9pY2UgbWFpbCBudW1iZXIgY2Fubm90IGJlIHJldHJpZXZlZCB0aGF0IHRoZQotICAgICAqIG9yaWdpbmFsIHBob25lIG51bWJlciBpcyBwcmVzZXJ2ZWQuCi0gICAgICovCi0gICAgLyoqCi0gICAgICogQ2hlY2sgdGhlIG1hcmtBcyogbWV0aG9kcyB3b3JrLgotICAgICAqLwotCi0KLSAgICAvLwotICAgIC8vIEhlbHBlcnMKLSAgICAvLwotCi0gICAgLy8gUGFydGlhbCBpbXBsZW1lbnRhdGlvbiBvZiBNb2NrUmVzb3VyY2VzLgotICAgIHB1YmxpYyBjbGFzcyBNb2NrUmVzb3VyY2VzIGV4dGVuZHMgYW5kcm9pZC50ZXN0Lm1vY2suTW9ja1Jlc291cmNlcwotICAgIHsKLSAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIHB1YmxpYyBTdHJpbmcgZ2V0U3RyaW5nKGludCByZXNJZCkgdGhyb3dzIFJlc291cmNlcy5Ob3RGb3VuZEV4Y2VwdGlvbiB7Ci0gICAgICAgICAgICBzd2l0Y2ggKHJlc0lkKSB7Ci0gICAgICAgICAgICAgICAgY2FzZSBjb20uYW5kcm9pZC5pbnRlcm5hbC5SLnN0cmluZy5lbWVyZ2VuY3lfY2FsbF9kaWFsb2dfbnVtYmVyX2Zvcl9kaXNwbGF5OgotICAgICAgICAgICAgICAgICAgICByZXR1cm4ga0VtZXJnZW5jeU51bWJlcjsKLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oIk1pc3NpbmcgaGFuZGxpbmcgZm9yIHJlc2lkICIgKyByZXNJZCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvLyBQYXJ0aWFsIGltcGxlbWVudGF0aW9uIG9mIE1vY2tDb250ZXh0LgotICAgIHB1YmxpYyBjbGFzcyBNb2NrQ29udGV4dCBleHRlbmRzIGFuZHJvaWQudGVzdC5tb2NrLk1vY2tDb250ZXh0IHsKLSAgICAgICAgcHJpdmF0ZSBDb250ZW50UmVzb2x2ZXIgbVJlc29sdmVyOwotICAgICAgICBwcml2YXRlIFJlc291cmNlcyBtUmVzb3VyY2VzOwotCi0gICAgICAgIHB1YmxpYyBNb2NrQ29udGV4dCgpIHsKLSAgICAgICAgICAgIG1SZXNvbHZlciA9IG5ldyBhbmRyb2lkLnRlc3QubW9jay5Nb2NrQ29udGVudFJlc29sdmVyKCk7Ci0gICAgICAgICAgICBtUmVzb3VyY2VzID0gbmV3IE1vY2tSZXNvdXJjZXMoKTsKLSAgICAgICAgfQotCi0gICAgICAgIEBPdmVycmlkZQotICAgICAgICBwdWJsaWMgQ29udGVudFJlc29sdmVyIGdldENvbnRlbnRSZXNvbHZlcigpIHsKLSAgICAgICAgICAgIHJldHVybiBtUmVzb2x2ZXI7Ci0gICAgICAgIH0KLQotICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIFJlc291cmNlcyBnZXRSZXNvdXJjZXMoKSB7Ci0gICAgICAgICAgICByZXR1cm4gbVJlc291cmNlczsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8qKgotICAgICAqIENsYXNzIHRvIHJ1biBhIENhbGxlckluZm9Bc3luY1F1ZXJ5IGluIGEgc2VwYXJhdGUgdGhyZWFkLCB3aXRoCi0gICAgICogaXRzIG93biBMb29wZXIuIFdlIGNhbm5vdCB1c2UgdGhlIG1haW4gTG9vcGVyIGJlY2F1c2Ugb24gdGhlCi0gICAgICogMXN0IHF1aXQgdGhlIHRocmVhZCBpcyBtYWtlZCBkZWFkLCBpZSBubyBmdXJ0aGVyIHRlc3QgY2FuIHVzZQotICAgICAqIGl0LiBBbHNvIHRoZXJlIGlzIG5vdCB3YXkgdG8gaW5qZWN0IGEgTG9vcGVyIGluc3RhbmNlIGluIHRoZQotICAgICAqIHF1ZXJ5LCBzbyB3ZSBoYXZlIHRvIHVzZSBhIHRocmVhZCB3aXRoIGl0cyBvd24gbG9vcGVyLgotICAgICAqLwotICAgIHByaXZhdGUgY2xhc3MgUXVlcnlSdW5uZXIgZXh0ZW5kcyBUaHJlYWQKLSAgICAgICAgICAgIGltcGxlbWVudHMgQ2FsbGVySW5mb0FzeW5jUXVlcnkuT25RdWVyeUNvbXBsZXRlTGlzdGVuZXIgewotICAgICAgICBwcml2YXRlIExvb3BlciBtTG9vcGVyOwotICAgICAgICBwcml2YXRlIFN0cmluZyBtTnVtYmVyOwotICAgICAgICBwcml2YXRlIGJvb2xlYW4gbUFzeW5jQ29tcGxldGVkOwotCi0gICAgICAgIHB1YmxpYyBRdWVyeVJ1bm5lcihTdHJpbmcgbnVtYmVyKSB7Ci0gICAgICAgICAgICBzdXBlcigpOwotICAgICAgICAgICAgbU51bWJlciA9IG51bWJlcjsKLSAgICAgICAgfQotCi0gICAgICAgIC8vIFJ1biB0aGUgcXVlcnkgaW4gdGhlIHRocmVhZCwgd2FpdCBmb3IgY29tcGxldGlvbi4KLSAgICAgICAgcHVibGljIHZvaWQgcnVuQW5kQ2hlY2tDb21wbGV0aW9uKCkgdGhyb3dzIEludGVycnVwdGVkRXhjZXB0aW9uIHsKLSAgICAgICAgICAgIHN0YXJ0KCk7Ci0gICAgICAgICAgICBqb2luKCk7Ci0gICAgICAgICAgICBhc3NlcnRUcnVlKG1Bc3luY0NvbXBsZXRlZCk7Ci0gICAgICAgIH0KLQotICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgewotICAgICAgICAgICAgTG9vcGVyLnByZXBhcmUoKTsKLSAgICAgICAgICAgIG1Mb29wZXIgPSBMb29wZXIubXlMb29wZXIoKTsKLSAgICAgICAgICAgIG1Bc3luY0NvbXBsZXRlZCA9IGZhbHNlOwotICAgICAgICAgICAgLy8gVGhlIHF1ZXJ5IHdpbGwgcGljayB0aGUgdGhyZWFkIGxvY2FsIGxvb3BlciB3ZSd2ZSBqdXN0IHByZXBhcmVkLgotICAgICAgICAgICAgQ2FsbGVySW5mb0FzeW5jUXVlcnkuc3RhcnRRdWVyeShrVG9rZW4sIG1Db250ZXh0LCBtTnVtYmVyLCB0aGlzLCBudWxsKTsKLSAgICAgICAgICAgIG1Mb29wZXIubG9vcCgpOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gUXVpdCB0aGUgTG9vcGVyIG9uIHRoZSAxc3QgY2FsbGJhY2sKLSAgICAgICAgLy8gKEVWRU5UX0VNRVJHRU5DWV9OVU1CRVIpLiBUaGVyZSBpcyBhbm90aGVyIG1lc3NhZ2UKLSAgICAgICAgLy8gKEVWRU5UX0VORF9PRl9RVUVVRSkgdGhhdCB3aWxsIG5ldmVyIGJlIGRlbGl2ZXJlZCBiZWNhdXNlCi0gICAgICAgIC8vIHRoZSB0ZXN0IGhhcyBleGl0ZWQuIFRoZSBjb3JyZXNwb25kaW5nIHN0YWNrIHRyYWNlCi0gICAgICAgIC8vICJIYW5kbGVye3h4eHh4fSBzZW5kaW5nIG1lc3NhZ2UgdG8gYSBIYW5kbGVyIG9uIGEgZGVhZAotICAgICAgICAvLyB0aHJlYWQiIGNhbiBiZSBpZ25vcmVkLgotICAgICAgICBwdWJsaWMgdm9pZCBvblF1ZXJ5Q29tcGxldGUoaW50IHRva2VuLCBPYmplY3QgY29va2llLCBDYWxsZXJJbmZvIGluZm8pIHsKLSAgICAgICAgICAgIG1Bc3luY0NvbXBsZXRlZCA9IHRydWU7Ci0gICAgICAgICAgICBtSW5mbyA9IGluZm87Ci0gICAgICAgICAgICBtTG9vcGVyLnF1aXQoKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8qKgotICAgICAqIEZhaWwgaWYgbUluZm8gZG9lcyBub3QgY29udGFpbiBhIHZhbGlkIGVtZXJnZW5jeSBDYWxsZXJJbmZvIGluc3RhbmNlLgotICAgICAqLwotICAgIHByaXZhdGUgdm9pZCBhc3NlcnRJc1ZhbGlkRW1lcmdlbmN5Q2FsbGVySW5mbygpIHRocm93cyBFeGNlcHRpb24gewotICAgICAgICBhc3NlcnRUcnVlKG1JbmZvLmlzRW1lcmdlbmN5TnVtYmVyKCkpOwotCi0gICAgICAgIC8vIEZvciBlbWVyZ2VuY3kgY2FsbGVyIGluZm8sIHBob25lTnVtYmVyIHNob3VsZCBiZSBzZXQgdG8gdGhlCi0gICAgICAgIC8vIHN0cmluZyBlbWVyZ2VuY3lfY2FsbF9kaWFsb2dfbnVtYmVyX2Zvcl9kaXNwbGF5IGFuZCB0aGUKLSAgICAgICAgLy8gcGhvdG9SZXNvdXJjZSBzaG91bGQgYmUgc2V0IHRvIHRoZSBwaWN0dXJlX2VtZXJnZW5jeSBkcmF3YWJsZS4KLSAgICAgICAgYXNzZXJ0RXF1YWxzKGtFbWVyZ2VuY3lOdW1iZXIsIG1JbmZvLnBob25lTnVtYmVyKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKGNvbS5hbmRyb2lkLmludGVybmFsLlIuZHJhd2FibGUucGljdHVyZV9lbWVyZ2VuY3ksIG1JbmZvLnBob3RvUmVzb3VyY2UpOwotCi0gICAgICAgIC8vIFRoZSBuYW1lIHNob3VsZCBiZSBudWxsCi0gICAgICAgIGFzc2VydE51bGwobUluZm8ubmFtZSk7Ci0gICAgICAgIGFzc2VydEVxdWFscygwLCBtSW5mby5uYW1lUHJlc2VudGF0aW9uKTsKLSAgICAgICAgYXNzZXJ0TnVsbChtSW5mby5jbmFwTmFtZSk7Ci0gICAgICAgIGFzc2VydEVxdWFscygwLCBtSW5mby5udW1iZXJQcmVzZW50YXRpb24pOwotCi0gICAgICAgIGFzc2VydEZhbHNlKG1JbmZvLmNvbnRhY3RFeGlzdHMpOwotICAgICAgICBhc3NlcnRFcXVhbHMoMCwgbUluZm8ucGVyc29uX2lkKTsKLSAgICAgICAgYXNzZXJ0RmFsc2UobUluZm8ubmVlZFVwZGF0ZSk7Ci0gICAgICAgIGFzc2VydE51bGwobUluZm8uY29udGFjdFJlZlVyaSk7Ci0KLSAgICAgICAgYXNzZXJ0TnVsbChtSW5mby5waG9uZUxhYmVsKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIG1JbmZvLm51bWJlclR5cGUpOwotICAgICAgICBhc3NlcnROdWxsKG1JbmZvLm51bWJlckxhYmVsKTsKLQotICAgICAgICBhc3NlcnROdWxsKG1JbmZvLmNvbnRhY3RSaW5ndG9uZVVyaSk7Ci0gICAgICAgIGFzc2VydEZhbHNlKG1JbmZvLnNob3VsZFNlbmRUb1ZvaWNlbWFpbCk7Ci0KLSAgICAgICAgYXNzZXJ0TnVsbChtSW5mby5jYWNoZWRQaG90byk7Ci0gICAgICAgIGFzc2VydEZhbHNlKG1JbmZvLmlzQ2FjaGVkUGhvdG9DdXJyZW50KTsKLSAgICB9Ci19CmRpZmYgLS1naXQgYS90ZWxlcGhvbnkvdGVzdHMvdGVsZXBob255dGVzdHMvc3JjL2NvbS9hbmRyb2lkL3RlbGVwaG9ueXRlc3QvdW5pdC9QaG9uZU51bWJlclV0aWxzVW5pdFRlc3QuamF2YSBiL3RlbGVwaG9ueS90ZXN0cy90ZWxlcGhvbnl0ZXN0cy9zcmMvY29tL2FuZHJvaWQvdGVsZXBob255dGVzdC91bml0L1Bob25lTnVtYmVyVXRpbHNVbml0VGVzdC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZDNjNTQ4Li4wMDAwMDAwCi0tLSBhL3RlbGVwaG9ueS90ZXN0cy90ZWxlcGhvbnl0ZXN0cy9zcmMvY29tL2FuZHJvaWQvdGVsZXBob255dGVzdC91bml0L1Bob25lTnVtYmVyVXRpbHNVbml0VGVzdC5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwOSBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0Ci0gKgotICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCi0gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKLSAqCi0gKiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAotICoKLSAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKLSAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KLSAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKLSAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotICovCi0KLXBhY2thZ2UgY29tLmFuZHJvaWQudGVsZXBob255dGVzdC51bml0OwotaW1wb3J0IGFuZHJvaWQudGVzdC5BbmRyb2lkVGVzdENhc2U7Ci1pbXBvcnQgYW5kcm9pZC50ZXN0LnN1aXRlYnVpbGRlci5hbm5vdGF0aW9uLlNtYWxsVGVzdDsKLWltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOwotCi1pbXBvcnQgYW5kcm9pZC50ZWxlcGhvbnkuUGhvbmVOdW1iZXJVdGlsczsKLWltcG9ydCBhbmRyb2lkLnRlbGVwaG9ueS5UZWxlcGhvbnlNYW5hZ2VyOwotCi0vKgotICogQ2hlY2sgdGhlIFBob25lTnVtYmVyVXRpbHMgdXRpbGl0eSBjbGFzcyB3b3JrcyBhcyBleHBlY3RlZC4KLSAqCi0gKi8KLQotcHVibGljIGNsYXNzIFBob25lTnVtYmVyVXRpbHNVbml0VGVzdCBleHRlbmRzIEFuZHJvaWRUZXN0Q2FzZSB7Ci0gICAgcHJpdmF0ZSBTdHJpbmcgbVZvaWNlTWFpbE51bWJlcjsKLSAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVEFHID0gIlBob25lTnVtYmVyVXRpbHNVbml0VGVzdCI7Ci0KLSAgICBAT3ZlcnJpZGUKLSAgICBwcm90ZWN0ZWQgdm9pZCBzZXRVcCgpIHRocm93cyBFeGNlcHRpb24gewotICAgICAgICBzdXBlci5zZXRVcCgpOwotICAgICAgICAvLyBGSVhNRTogV2h5IGFyZSB3ZSBnZXR0aW5nIGEgc2VjdXJpdHkgZXhjZXB0aW9uIGhlcmU/IFRoZQotICAgICAgICAvLyBwZXJtaXNzaW9uIGlzIGRlY2xhcmVkIGluIHRoZSBtYW5pZmVzdC4uLi4KLSAgICAgICAgLy8gbVZvaWNlTWFpbE51bWJlciA9IFRlbGVwaG9ueU1hbmFnZXIuZ2V0RGVmYXVsdCgpLmdldFZvaWNlTWFpbE51bWJlcigpOwotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHByb3RlY3RlZCB2b2lkIHRlYXJEb3duKCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0gICAgICAgIHN1cGVyLnRlYXJEb3duKCk7Ci0gICAgfQotCi0gICAgLyoqCi0gICAgICogQmFzaWMgY2hlY2tzIGZvciB0aGUgVm9pY2VNYWlsIG51bWJlci4KLSAgICAgKiBBc3N1bWVzIFJFQURfUEhPTkVfU1RBVEUgcGVybWlzc2lvbiBhbmQgd2UgZG9uJ3QgaGF2ZSBpdC4KLSAgICAgKi8KLSAgICAvLyBUT0RPOiBGaWd1cmUgb3V0IHdoeSB3ZSBkb24ndCBoYXZlIHRoZSBwZXJtaXNzaW9uIGRlY2xhcmVkIGluIHRoZSBtYW5pZmVzdC4KLSAgICBAU21hbGxUZXN0Ci0gICAgcHVibGljIHZvaWQgdGVzdFdpdGhOdW1iZXJOb3RFcXVhbFRvVm9pY2VNYWlsKCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0gICAgICAgIGFzc2VydEZhbHNlKFBob25lTnVtYmVyVXRpbHMuaXNWb2ljZU1haWxOdW1iZXIoIjkxMSIpKTsKLSAgICAgICAgYXNzZXJ0RmFsc2UoUGhvbmVOdW1iZXJVdGlscy5pc1ZvaWNlTWFpbE51bWJlcigidGVsOjkxMSIpKTsKLSAgICAgICAgYXNzZXJ0RmFsc2UoUGhvbmVOdW1iZXJVdGlscy5pc1ZvaWNlTWFpbE51bWJlcigiKzE4MDAxMjM0NTY3IikpOwotICAgICAgICBhc3NlcnRGYWxzZShQaG9uZU51bWJlclV0aWxzLmlzVm9pY2VNYWlsTnVtYmVyKCIiKSk7Ci0gICAgICAgIGFzc2VydEZhbHNlKFBob25lTnVtYmVyVXRpbHMuaXNWb2ljZU1haWxOdW1iZXIobnVsbCkpOwotICAgICAgICAvLyBGSVhNRToKLSAgICAgICAgLy8gYXNzZXJ0VHJ1ZShQaG9uZU51bWJlclV0aWxzLmlzVm9pY2VNYWlsTnVtYmVyKG1Wb2ljZU1haWxOdW1iZXIpKTsKLSAgICB9Ci0KLX0KZGlmZiAtLWdpdCBhL3Rlc3QtcnVubmVyL3NyYy9hbmRyb2lkL3Rlc3QvSW5zdHJ1bWVudGF0aW9uVGVzdFJ1bm5lci5qYXZhIGIvdGVzdC1ydW5uZXIvc3JjL2FuZHJvaWQvdGVzdC9JbnN0cnVtZW50YXRpb25UZXN0UnVubmVyLmphdmEKaW5kZXggNjNkNTBjNy4uNzBkMTY0MyAxMDA2NDQKLS0tIGEvdGVzdC1ydW5uZXIvc3JjL2FuZHJvaWQvdGVzdC9JbnN0cnVtZW50YXRpb25UZXN0UnVubmVyLmphdmEKKysrIGIvdGVzdC1ydW5uZXIvc3JjL2FuZHJvaWQvdGVzdC9JbnN0cnVtZW50YXRpb25UZXN0UnVubmVyLmphdmEKQEAgLTQ5Niw5ICs0OTYsMTggQEAKICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgfQogCisgICAgLyoqCisgICAgICogSW5pdGlhbGl6ZSB0aGUgY3VycmVudCB0aHJlYWQgYXMgYSBsb29wZXIuCisgICAgICogPHAvPgorICAgICAqIEV4cG9zZWQgZm9yIHVuaXQgdGVzdGluZy4KKyAgICAgKi8KKyAgICB2b2lkIHByZXBhcmVMb29wZXIoKSB7CisgICAgICAgIExvb3Blci5wcmVwYXJlKCk7CisgICAgfQorCiAgICAgQE92ZXJyaWRlCiAgICAgcHVibGljIHZvaWQgb25TdGFydCgpIHsKLSAgICAgICAgTG9vcGVyLnByZXBhcmUoKTsKKyAgICAgICAgcHJlcGFyZUxvb3BlcigpOwogCiAgICAgICAgIGlmIChtSnVzdENvdW50KSB7CiAgICAgICAgICAgICBtUmVzdWx0cy5wdXRTdHJpbmcoSW5zdHJ1bWVudGF0aW9uLlJFUE9SVF9LRVlfSURFTlRJRklFUiwgUkVQT1JUX1ZBTFVFX0lEKTsKQEAgLTUyMSw2ICs1MzAsMTEgQEAKICAgICAgICAgICAgICAgICBsb25nIHJ1blRpbWUgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKSAtIHN0YXJ0VGltZTsKIAogICAgICAgICAgICAgICAgIHJlc3VsdFByaW50ZXIucHJpbnQobVRlc3RSdW5uZXIuZ2V0VGVzdFJlc3VsdCgpLCBydW5UaW1lKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKFRocm93YWJsZSB0KSB7CisgICAgICAgICAgICAgICAgLy8gY2F0Y2ggYWxsIGV4Y2VwdGlvbnMgc28gYSBtb3JlIHZlcmJvc2UgZXJyb3IgbWVzc2FnZSBjYW4gYmUgb3V0cHV0dGVkCisgICAgICAgICAgICAgICAgd3JpdGVyLnByaW50bG4oU3RyaW5nLmZvcm1hdCgiVGVzdCBydW4gYWJvcnRlZCBkdWUgdG8gdW5leHBlY3RlZCBleGNlcHRpb246ICVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5nZXRNZXNzYWdlKCkpKTsKKyAgICAgICAgICAgICAgICB0LnByaW50U3RhY2tUcmFjZSh3cml0ZXIpOwogICAgICAgICAgICAgfSBmaW5hbGx5IHsKICAgICAgICAgICAgICAgICBtUmVzdWx0cy5wdXRTdHJpbmcoSW5zdHJ1bWVudGF0aW9uLlJFUE9SVF9LRVlfU1RSRUFNUkVTVUxULAogICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nLmZvcm1hdCgiXG5UZXN0IHJlc3VsdHMgZm9yICVzPSVzIiwKQEAgLTc2Miw5ICs3NzYsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaW1lZFRlc3QuY2xhc3MpLmluY2x1ZGVEZXRhaWxlZFN0YXRzKCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfSBjYXRjaCAoU2VjdXJpdHlFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oZSk7CisgICAgICAgICAgICAgICAgLy8gaWdub3JlIC0gdGhlIHRlc3Qgd2l0aCBnaXZlbiBuYW1lIGNhbm5vdCBiZSBhY2Nlc3NlZC4gV2lsbCBiZSBoYW5kbGVkIGR1cmluZworICAgICAgICAgICAgICAgIC8vIHRlc3QgZXhlY3V0aW9uCiAgICAgICAgICAgICB9IGNhdGNoIChOb1N1Y2hNZXRob2RFeGNlcHRpb24gZSkgewotICAgICAgICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oZSk7CisgICAgICAgICAgICAgICAgLy8gaWdub3JlLSB0aGUgdGVzdCB3aXRoIGdpdmVuIG5hbWUgZG9lcyBub3QgZXhpc3QuIFdpbGwgYmUgaGFuZGxlZCBkdXJpbmcgdGVzdAorICAgICAgICAgICAgICAgIC8vIGV4ZWN1dGlvbgogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAobUlzVGltZWRUZXN0ICYmIG1JbmNsdWRlRGV0YWlsZWRTdGF0cykgewpkaWZmIC0tZ2l0IGEvdGVzdC1ydW5uZXIvc3JjL2FuZHJvaWQvdGVzdC9TZXJ2aWNlVGVzdENhc2UuamF2YSBiL3Rlc3QtcnVubmVyL3NyYy9hbmRyb2lkL3Rlc3QvU2VydmljZVRlc3RDYXNlLmphdmEKaW5kZXggZmNiOWQ1NS4uZDkyNjJmNiAxMDA2NDQKLS0tIGEvdGVzdC1ydW5uZXIvc3JjL2FuZHJvaWQvdGVzdC9TZXJ2aWNlVGVzdENhc2UuamF2YQorKysgYi90ZXN0LXJ1bm5lci9zcmMvYW5kcm9pZC90ZXN0L1NlcnZpY2VUZXN0Q2FzZS5qYXZhCkBAIC0xNDcsOSArMTQ3LDYgQEAKICAgICAgKiBAcGFyYW0gaW50ZW50IFRoZSBJbnRlbnQgYXMgaWYgc3VwcGxpZWQgdG8ge0BsaW5rIGFuZHJvaWQuY29udGVudC5Db250ZXh0I3N0YXJ0U2VydmljZX0uCiAgICAgICovCiAgICAgcHJvdGVjdGVkIHZvaWQgc3RhcnRTZXJ2aWNlKEludGVudCBpbnRlbnQpIHsKLSAgICAgICAgYXNzZXJ0RmFsc2UobVNlcnZpY2VTdGFydGVkKTsKLSAgICAgICAgYXNzZXJ0RmFsc2UobVNlcnZpY2VCb3VuZCk7Ci0gICAgICAgIAogICAgICAgICBpZiAoIW1TZXJ2aWNlQXR0YWNoZWQpIHsKICAgICAgICAgICAgIHNldHVwU2VydmljZSgpOwogICAgICAgICB9CkBAIC0xNTksNyArMTU2LDcgQEAKICAgICAgICAgICAgIG1TZXJ2aWNlLm9uQ3JlYXRlKCk7CiAgICAgICAgICAgICBtU2VydmljZUNyZWF0ZWQgPSB0cnVlOwogICAgICAgICB9Ci0gICAgICAgIG1TZXJ2aWNlLm9uU3RhcnQoaW50ZW50LCBtU2VydmljZUlkKTsKKyAgICAgICAgbVNlcnZpY2Uub25TdGFydENvbW1hbmQoaW50ZW50LCAwLCBtU2VydmljZUlkKTsKICAgICAgICAgCiAgICAgICAgIG1TZXJ2aWNlU3RhcnRlZCA9IHRydWU7CiAgICAgfQpAQCAtMTgzLDkgKzE4MCw2IEBACiAgICAgICogQHJldHVybiBSZXR1cm4gYW4gSUJpbmRlciBmb3IgbWFraW5nIGZ1cnRoZXIgY2FsbHMgaW50byB0aGUgU2VydmljZS4KICAgICAgKi8KICAgICBwcm90ZWN0ZWQgSUJpbmRlciBiaW5kU2VydmljZShJbnRlbnQgaW50ZW50KSB7Ci0gICAgICAgIGFzc2VydEZhbHNlKG1TZXJ2aWNlU3RhcnRlZCk7Ci0gICAgICAgIGFzc2VydEZhbHNlKG1TZXJ2aWNlQm91bmQpOwotICAgICAgICAKICAgICAgICAgaWYgKCFtU2VydmljZUF0dGFjaGVkKSB7CiAgICAgICAgICAgICBzZXR1cFNlcnZpY2UoKTsKICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvdGVzdC1ydW5uZXIvc3JjL2FuZHJvaWQvdGVzdC9tb2NrL01vY2tQYWNrYWdlTWFuYWdlci5qYXZhIGIvdGVzdC1ydW5uZXIvc3JjL2FuZHJvaWQvdGVzdC9tb2NrL01vY2tQYWNrYWdlTWFuYWdlci5qYXZhCmluZGV4IDQ5NjRmMDMuLmU5NjE3M2IgMTAwNjQ0Ci0tLSBhL3Rlc3QtcnVubmVyL3NyYy9hbmRyb2lkL3Rlc3QvbW9jay9Nb2NrUGFja2FnZU1hbmFnZXIuamF2YQorKysgYi90ZXN0LXJ1bm5lci9zcmMvYW5kcm9pZC90ZXN0L21vY2svTW9ja1BhY2thZ2VNYW5hZ2VyLmphdmEKQEAgLTI2Nyw2ICsyNjcsMjYgQEAKICAgICBwdWJsaWMgRHJhd2FibGUgZ2V0QXBwbGljYXRpb25JY29uKFN0cmluZyBwYWNrYWdlTmFtZSkgdGhyb3dzIE5hbWVOb3RGb3VuZEV4Y2VwdGlvbiB7CiAgICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigpOwogICAgIH0KKyAgICAKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgRHJhd2FibGUgZ2V0QWN0aXZpdHlMb2dvKENvbXBvbmVudE5hbWUgYWN0aXZpdHlOYW1lKSB0aHJvd3MgTmFtZU5vdEZvdW5kRXhjZXB0aW9uIHsKKyAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIERyYXdhYmxlIGdldEFjdGl2aXR5TG9nbyhJbnRlbnQgaW50ZW50KSB0aHJvd3MgTmFtZU5vdEZvdW5kRXhjZXB0aW9uIHsKKyAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIERyYXdhYmxlIGdldEFwcGxpY2F0aW9uTG9nbyhBcHBsaWNhdGlvbkluZm8gaW5mbykgeworICAgICAgICB0aHJvdyBuZXcgVW5zdXBwb3J0ZWRPcGVyYXRpb25FeGNlcHRpb24oKTsKKyAgICB9CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgRHJhd2FibGUgZ2V0QXBwbGljYXRpb25Mb2dvKFN0cmluZyBwYWNrYWdlTmFtZSkgdGhyb3dzIE5hbWVOb3RGb3VuZEV4Y2VwdGlvbiB7CisgICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigpOworICAgIH0KIAogICAgIEBPdmVycmlkZQogICAgIHB1YmxpYyBDaGFyU2VxdWVuY2UgZ2V0VGV4dChTdHJpbmcgcGFja2FnZU5hbWUsIGludCByZXNpZCwgQXBwbGljYXRpb25JbmZvIGFwcEluZm8pIHsKQEAgLTQ2Myw0ICs0ODMsOSBAQAogICAgIHB1YmxpYyBib29sZWFuIGlzU2FmZU1vZGUoKSB7CiAgICAgICAgIHRocm93IG5ldyBVbnN1cHBvcnRlZE9wZXJhdGlvbkV4Y2VwdGlvbigpOwogICAgIH0KKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIHNldFBhY2thZ2VPYmJQYXRoKFN0cmluZyBwYWNrYWdlTmFtZSwgU3RyaW5nIHBhdGgpIHsKKyAgICAgICAgdGhyb3cgbmV3IFVuc3VwcG9ydGVkT3BlcmF0aW9uRXhjZXB0aW9uKCk7CisgICAgfQogfQpkaWZmIC0tZ2l0IGEvdGVzdC1ydW5uZXIvdGVzdHMvc3JjL2FuZHJvaWQvdGVzdC9JbnN0cnVtZW50YXRpb25UZXN0UnVubmVyVGVzdC5qYXZhIGIvdGVzdC1ydW5uZXIvdGVzdHMvc3JjL2FuZHJvaWQvdGVzdC9JbnN0cnVtZW50YXRpb25UZXN0UnVubmVyVGVzdC5qYXZhCmluZGV4IDZkYjcyYWQuLmQ5OGIyMTcgMTAwNjQ0Ci0tLSBhL3Rlc3QtcnVubmVyL3Rlc3RzL3NyYy9hbmRyb2lkL3Rlc3QvSW5zdHJ1bWVudGF0aW9uVGVzdFJ1bm5lclRlc3QuamF2YQorKysgYi90ZXN0LXJ1bm5lci90ZXN0cy9zcmMvYW5kcm9pZC90ZXN0L0luc3RydW1lbnRhdGlvblRlc3RSdW5uZXJUZXN0LmphdmEKQEAgLTE2LDYgKzE2LDcgQEAKIAogcGFja2FnZSBhbmRyb2lkLnRlc3Q7CiAKK2ltcG9ydCBhbmRyb2lkLmFwcC5JbnN0cnVtZW50YXRpb247CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkNvbnRleHQ7CiBpbXBvcnQgYW5kcm9pZC5vcy5CdW5kbGU7CiBpbXBvcnQgYW5kcm9pZC50ZXN0Lm1vY2suTW9ja0NvbnRleHQ7CkBAIC04OSw2ICs5MCw0MiBAQAogICAgICAgICAKICAgICB9CiAKKyAgICAvKioKKyAgICAgKiBUZXN0IHRoYXQgcnVudGltZSBleGNlcHRpb25zIGR1cmluZyBydW5UZXN0IGFyZSBoYW5kbGVkIGdyYWNlZnVsbHkKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCB0ZXN0VW5oYW5kbGVkRXhjZXB0aW9uKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisgICAgICAgIFN0dWJBbmRyb2lkVGVzdFJ1bm5lciBzdHViQW5kcm9pZFRlc3RSdW5uZXIgPSBuZXcgU3R1YkFuZHJvaWRUZXN0UnVubmVyKCkgeworICAgICAgICAgICAgQE92ZXJyaWRlCisgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW5UZXN0KCkgeworICAgICAgICAgICAgICAgIHRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH07CisgICAgICAgIFN0dWJJbnN0cnVtZW50YXRpb25UZXN0UnVubmVyIGluc3RydW1lbnRhdGlvblRlc3RSdW5uZXIgPSBuZXcgU3R1Ykluc3RydW1lbnRhdGlvblRlc3RSdW5uZXIoCisgICAgICAgICAgICAgICAgbmV3IFN0dWJDb250ZXh0KCJjb20uZ29vZ2xlLmZvby50ZXN0cyIpLAorICAgICAgICAgICAgICAgIG5ldyBTdHViQ29udGV4dChtVGFyZ2V0Q29udGV4dFBhY2thZ2VOYW1lKSwgc3R1YkFuZHJvaWRUZXN0UnVubmVyKTsKKyAgICAgICAgaW5zdHJ1bWVudGF0aW9uVGVzdFJ1bm5lci5vbkNyZWF0ZShuZXcgQnVuZGxlKCkpOworICAgICAgICBpbnN0cnVtZW50YXRpb25UZXN0UnVubmVyLm9uU3RhcnQoKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZSgiSW5zdHJ1bWVudGF0aW9uIGRpZCBub3QgZmluaXNoIiwgaW5zdHJ1bWVudGF0aW9uVGVzdFJ1bm5lci5pc0ZpbmlzaGVkKCkpOworICAgICAgICAvLyBlbnN1cmUgYSBtZWFuaW5nZnVsIGVycm9yIG1lc3NhZ2UgcGxhY2VkIGluIHJlc3VsdHMKKyAgICAgICAgU3RyaW5nIHJlc3VsdHNEYXRhID0gaW5zdHJ1bWVudGF0aW9uVGVzdFJ1bm5lci5tUmVzdWx0cy5nZXRTdHJpbmcoCisgICAgICAgICAgICAgICAgSW5zdHJ1bWVudGF0aW9uLlJFUE9SVF9LRVlfU1RSRUFNUkVTVUxUKTsKKyAgICAgICAgYXNzZXJ0VHJ1ZSgiSW5zdHJ1bWVudGF0aW9uIHJlc3VsdHMgaXMgbWlzc2luZyBSdW50aW1lRXhjZXB0aW9uIiwKKyAgICAgICAgICAgICAgICByZXN1bHRzRGF0YS5jb250YWlucygiUnVudGltZUV4Y2VwdGlvbiIpKTsKKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBUZXN0IHRoYXQgc3BlY2lmeWluZyBhIG1ldGhvZCB3aGljaCBkb2VzIG5vdCBleGlzdCBpcyBoYW5kbGVkIGdyYWNlZnVsbHkKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCB0ZXN0QmFkTWV0aG9kQXJndW1lbnQoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKyAgICAgICAgU3RyaW5nIHRlc3RDbGFzc05hbWUgPSBQbGFjZUhvbGRlclRlc3QuY2xhc3MuZ2V0TmFtZSgpOworICAgICAgICBTdHJpbmcgaW52YWxpZE1ldGhvZE5hbWUgPSAidGVzdE5vRXhpc3QiOworICAgICAgICBTdHJpbmcgY2xhc3NBbmRNZXRob2QgPSB0ZXN0Q2xhc3NOYW1lICsgIiMiICsgaW52YWxpZE1ldGhvZE5hbWU7CisgICAgICAgIG1JbnN0cnVtZW50YXRpb25UZXN0UnVubmVyLm9uQ3JlYXRlKGNyZWF0ZUJ1bmRsZSgKKyAgICAgICAgICAgICAgICBJbnN0cnVtZW50YXRpb25UZXN0UnVubmVyLkFSR1VNRU5UX1RFU1RfQ0xBU1MsIGNsYXNzQW5kTWV0aG9kKSk7CisgICAgICAgIGFzc2VydFRlc3RSdW5uZXJDYWxsZWRXaXRoRXhwZWN0ZWRQYXJhbWV0ZXJzKHRlc3RDbGFzc05hbWUsCisgICAgICAgICAgICAgICAgaW52YWxpZE1ldGhvZE5hbWUpOworICAgIH0KKwogICAgIHB1YmxpYyB2b2lkIHRlc3REZWxheVBhcmFtZXRlcigpIHRocm93cyBFeGNlcHRpb24gewogICAgICAgICBpbnQgZGVsYXlNc2VjID0gMTAwMDsKICAgICAgICAgQnVuZGxlIGFyZ3MgPSBuZXcgQnVuZGxlKCk7CkBAIC0xNzAsNiArMjA3LDcgQEAKICAgICAgICAgcHJpdmF0ZSBUZXN0U3VpdGUgbVRlc3RTdWl0ZTsKICAgICAgICAgcHJpdmF0ZSBUZXN0U3VpdGUgbURlZmF1bHRUZXN0U3VpdGU7CiAgICAgICAgIHByaXZhdGUgU3RyaW5nIG1QYWNrYWdlTmFtZUZvckRlZmF1bHRUZXN0czsKKyAgICAgICAgcHJpdmF0ZSBCdW5kbGUgbVJlc3VsdHM7CiAKICAgICAgICAgcHVibGljIFN0dWJJbnN0cnVtZW50YXRpb25UZXN0UnVubmVyKENvbnRleHQgY29udGV4dCwgQ29udGV4dCB0YXJnZXRDb250ZXh0LAogICAgICAgICAgICAgICAgIEFuZHJvaWRUZXN0UnVubmVyIGFuZHJvaWRUZXN0UnVubmVyKSB7CkBAIC0yMDAsNiArMjM4LDcgQEAKIAogICAgICAgICBwdWJsaWMgdm9pZCBmaW5pc2goaW50IHJlc3VsdENvZGUsIEJ1bmRsZSByZXN1bHRzKSB7CiAgICAgICAgICAgICBtRmluaXNoZWQgPSB0cnVlOworICAgICAgICAgICAgbVJlc3VsdHMgPSByZXN1bHRzOwogICAgICAgICB9CiAKICAgICAgICAgcHVibGljIGJvb2xlYW4gaXNTdGFydGVkKCkgewpAQCAtMjIxLDYgKzI2MCwxMSBAQAogICAgICAgICBwdWJsaWMgU3RyaW5nIGdldFBhY2thZ2VOYW1lRm9yRGVmYXVsdFRlc3RzKCkgewogICAgICAgICAgICAgcmV0dXJuIG1QYWNrYWdlTmFtZUZvckRlZmF1bHRUZXN0czsKICAgICAgICAgfQorCisgICAgICAgIEBPdmVycmlkZQorICAgICAgICB2b2lkIHByZXBhcmVMb29wZXIoKSB7CisgICAgICAgICAgICAvLyBpZ25vcmUKKyAgICAgICAgfQogICAgIH0KIAogICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIFN0dWJDb250ZXh0IGV4dGVuZHMgTW9ja0NvbnRleHQgewpkaWZmIC0tZ2l0IGEvdGVzdHMvRHBpVGVzdC9BbmRyb2lkLm1rIGIvdGVzdHMvRHBpVGVzdC9BbmRyb2lkLm1rCmluZGV4IDM1OTZjMzkuLjU0NjNhMTcgMTAwNjQ0Ci0tLSBhL3Rlc3RzL0RwaVRlc3QvQW5kcm9pZC5taworKysgYi90ZXN0cy9EcGlUZXN0L0FuZHJvaWQubWsKQEAgLTcsNCArNyw2IEBACiAKIExPQ0FMX01PRFVMRV9UQUdTIDo9IHRlc3RzCiAKK0xPQ0FMX0FBUFRfRkxBR1MgPSAtYyAxMjBkcGkgLWMgMjQwZHBpIC1jIDE2MGRwaQorCiBpbmNsdWRlICQoQlVJTERfUEFDS0FHRSkKZGlmZiAtLWdpdCBhL3Rlc3RzL0RwaVRlc3QvcmVzL3ZhbHVlcy14bGFyZ2UtbG9uZy9zdHJpbmdzLnhtbCBiL3Rlc3RzL0RwaVRlc3QvcmVzL3ZhbHVlcy14bGFyZ2UtbG9uZy9zdHJpbmdzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NmFiNjYwCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvRHBpVGVzdC9yZXMvdmFsdWVzLXhsYXJnZS1sb25nL3N0cmluZ3MueG1sCkBAIC0wLDAgKzEsMTkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAKKyAgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy0tPgorCis8cmVzb3VyY2VzPgorICAgIDxzdHJpbmcgbmFtZT0iYWN0X3RpdGxlIj5EcGlUZXN0OiBYTGFyZ2UgTG9uZzwvc3RyaW5nPgorPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS90ZXN0cy9EcGlUZXN0L3Jlcy92YWx1ZXMteGxhcmdlLW5vdGxvbmcvc3RyaW5ncy54bWwgYi90ZXN0cy9EcGlUZXN0L3Jlcy92YWx1ZXMteGxhcmdlLW5vdGxvbmcvc3RyaW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWVlYmJmNAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL0RwaVRlc3QvcmVzL3ZhbHVlcy14bGFyZ2Utbm90bG9uZy9zdHJpbmdzLnhtbApAQCAtMCwwICsxLDE5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLSBDb3B5cmlnaHQgKEMpIDIwMDcgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorCisgICAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgCisgICAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworPHJlc291cmNlcz4KKyAgICA8c3RyaW5nIG5hbWU9ImFjdF90aXRsZSI+RHBpVGVzdDogWExhcmdlIE5vdExvbmc8L3N0cmluZz4KKzwvcmVzb3VyY2VzPgpkaWZmIC0tZ2l0IGEvdGVzdHMvRHBpVGVzdC9yZXMvdmFsdWVzLXhsYXJnZS9zdHJpbmdzLnhtbCBiL3Rlc3RzL0RwaVRlc3QvcmVzL3ZhbHVlcy14bGFyZ2Uvc3RyaW5ncy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2U1ZDRiMAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL0RwaVRlc3QvcmVzL3ZhbHVlcy14bGFyZ2Uvc3RyaW5ncy54bWwKQEAgLTAsMCArMSwxOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0gQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgIAorICAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKzxyZXNvdXJjZXM+CisgICAgPHN0cmluZyBuYW1lPSJhY3RfdGl0bGUiPkRwaVRlc3Q6IFhMYXJnZTwvc3RyaW5nPgorPC9yZXNvdXJjZXM+CmRpZmYgLS1naXQgYS90ZXN0cy9EcGlUZXN0L3NyYy9jb20vZ29vZ2xlL2FuZHJvaWQvdGVzdC9kcGkvRHBpVGVzdEFjdGl2aXR5LmphdmEgYi90ZXN0cy9EcGlUZXN0L3NyYy9jb20vZ29vZ2xlL2FuZHJvaWQvdGVzdC9kcGkvRHBpVGVzdEFjdGl2aXR5LmphdmEKaW5kZXggY2RlMmM3MS4uNjE5MmEzYyAxMDA2NDQKLS0tIGEvdGVzdHMvRHBpVGVzdC9zcmMvY29tL2dvb2dsZS9hbmRyb2lkL3Rlc3QvZHBpL0RwaVRlc3RBY3Rpdml0eS5qYXZhCisrKyBiL3Rlc3RzL0RwaVRlc3Qvc3JjL2NvbS9nb29nbGUvYW5kcm9pZC90ZXN0L2RwaS9EcGlUZXN0QWN0aXZpdHkuamF2YQpAQCAtNTYsNyArNTYsOCBAQAogICAgICAgICAgICAgQXBwbGljYXRpb25JbmZvIGFpID0gYXBwLmdldFBhY2thZ2VNYW5hZ2VyKCkuZ2V0QXBwbGljYXRpb25JbmZvKAogICAgICAgICAgICAgICAgICAgICAiY29tLmdvb2dsZS5hbmRyb2lkLnRlc3QuZHBpIiwgMCk7CiAgICAgICAgICAgICBpZiAobm9Db21wYXQpIHsKLSAgICAgICAgICAgICAgICBhaS5mbGFncyB8PSBBcHBsaWNhdGlvbkluZm8uRkxBR19TVVBQT1JUU19MQVJHRV9TQ1JFRU5TCisgICAgICAgICAgICAgICAgYWkuZmxhZ3MgfD0gQXBwbGljYXRpb25JbmZvLkZMQUdfU1VQUE9SVFNfWExBUkdFX1NDUkVFTlMKKyAgICAgICAgICAgICAgICAgICAgfCBBcHBsaWNhdGlvbkluZm8uRkxBR19TVVBQT1JUU19MQVJHRV9TQ1JFRU5TCiAgICAgICAgICAgICAgICAgICAgIHwgQXBwbGljYXRpb25JbmZvLkZMQUdfU1VQUE9SVFNfTk9STUFMX1NDUkVFTlMKICAgICAgICAgICAgICAgICAgICAgfCBBcHBsaWNhdGlvbkluZm8uRkxBR19TVVBQT1JUU19TTUFMTF9TQ1JFRU5TCiAgICAgICAgICAgICAgICAgICAgIHwgQXBwbGljYXRpb25JbmZvLkZMQUdfUkVTSVpFQUJMRV9GT1JfU0NSRUVOUwpkaWZmIC0tZ2l0IGEvdGVzdHMvRml4VmlicmF0ZVNldHRpbmcvQW5kcm9pZC5tayBiL3Rlc3RzL0ZpeFZpYnJhdGVTZXR0aW5nL0FuZHJvaWQubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmE4OGU1YQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL0ZpeFZpYnJhdGVTZXR0aW5nL0FuZHJvaWQubWsKQEAgLTAsMCArMSwxMSBAQAorTE9DQUxfUEFUSDo9ICQoY2FsbCBteS1kaXIpCitpbmNsdWRlICQoQ0xFQVJfVkFSUykKKworTE9DQUxfTU9EVUxFX1RBR1MgOj0gb3B0aW9uYWwKKworTE9DQUxfU1JDX0ZJTEVTIDo9ICQoY2FsbCBhbGwtc3ViZGlyLWphdmEtZmlsZXMpCisKK0xPQ0FMX1BBQ0tBR0VfTkFNRSA6PSBGaXhWaWJyYXRlU2V0dGluZworTE9DQUxfQ0VSVElGSUNBVEUgOj0gcGxhdGZvcm0KKworaW5jbHVkZSAkKEJVSUxEX1BBQ0tBR0UpCmRpZmYgLS1naXQgYS90ZXN0cy9GaXhWaWJyYXRlU2V0dGluZy9BbmRyb2lkTWFuaWZlc3QueG1sIGIvdGVzdHMvRml4VmlicmF0ZVNldHRpbmcvQW5kcm9pZE1hbmlmZXN0LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDdkNjgyCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvRml4VmlicmF0ZVNldHRpbmcvQW5kcm9pZE1hbmlmZXN0LnhtbApAQCAtMCwwICsxLDE0IEBACis8bWFuaWZlc3QgeG1sbnM6YW5kcm9pZD0iaHR0cDovL3NjaGVtYXMuYW5kcm9pZC5jb20vYXBrL3Jlcy9hbmRyb2lkIgorICAgICAgICBwYWNrYWdlPSJjb20uYW5kcm9pZC5maXh2aWJyYXRlc2V0dGluZyI+CisgICAgPHVzZXMtcGVybWlzc2lvbiBhbmRyb2lkOm5hbWU9ImFuZHJvaWQucGVybWlzc2lvbi5WSUJSQVRFIiAvPgorCisgICAgPGFwcGxpY2F0aW9uPgorICAgICAgICA8YWN0aXZpdHkgYW5kcm9pZDpuYW1lPSJGaXhWaWJyYXRlU2V0dGluZyIgYW5kcm9pZDpsYWJlbD0iQHN0cmluZy9hcHBfbGFiZWwiPgorICAgICAgICAgICAgPGludGVudC1maWx0ZXI+CisgICAgICAgICAgICAgICAgPGFjdGlvbiBhbmRyb2lkOm5hbWU9ImFuZHJvaWQuaW50ZW50LmFjdGlvbi5NQUlOIiAvPgorICAgICAgICAgICAgICAgIDxjYXRlZ29yeSBhbmRyb2lkOm5hbWU9ImFuZHJvaWQuaW50ZW50LmNhdGVnb3J5LkRFRkFVTFQiIC8+CisgICAgICAgICAgICAgICAgPGNhdGVnb3J5IGFuZHJvaWQ6bmFtZT0iYW5kcm9pZC5pbnRlbnQuY2F0ZWdvcnkuTEFVTkNIRVIiIC8+CisgICAgICAgICAgICA8L2ludGVudC1maWx0ZXI+CisgICAgICAgIDwvYWN0aXZpdHk+CisgICAgPC9hcHBsaWNhdGlvbj4KKzwvbWFuaWZlc3Q+CmRpZmYgLS1naXQgYS90ZXN0cy9GaXhWaWJyYXRlU2V0dGluZy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c193YXJuaW5nLnBuZyBiL3Rlc3RzL0ZpeFZpYnJhdGVTZXR0aW5nL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3dhcm5pbmcucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3Yzg4NTMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9GaXhWaWJyYXRlU2V0dGluZy9yZXMvZHJhd2FibGUtaGRwaS9zdGF0X3N5c193YXJuaW5nLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0cy9GaXhWaWJyYXRlU2V0dGluZy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c193YXJuaW5nLnBuZyBiL3Rlc3RzL0ZpeFZpYnJhdGVTZXR0aW5nL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3dhcm5pbmcucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlMDBmNDcKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9GaXhWaWJyYXRlU2V0dGluZy9yZXMvZHJhd2FibGUtbWRwaS9zdGF0X3N5c193YXJuaW5nLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0cy9GaXhWaWJyYXRlU2V0dGluZy9yZXMvbGF5b3V0L2ZpeF92aWJyYXRlLnhtbCBiL3Rlc3RzL0ZpeFZpYnJhdGVTZXR0aW5nL3Jlcy9sYXlvdXQvZml4X3ZpYnJhdGUueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1MDVlNjUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9GaXhWaWJyYXRlU2V0dGluZy9yZXMvbGF5b3V0L2ZpeF92aWJyYXRlLnhtbApAQCAtMCwwICsxLDQ2IEBACis8TGluZWFyTGF5b3V0IHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgorICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0ibWF0Y2hfcGFyZW50IgorICAgIGFuZHJvaWQ6b3JpZW50YXRpb249InZlcnRpY2FsIgorICAgID4KKworICAgIDxUZXh0VmlldyBhbmRyb2lkOmlkPSJAK2lkL2N1cnJlbnRfc2V0dGluZyIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IndyYXBfY29udGVudCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2dyYXZpdHk9ImxlZnQiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X21hcmdpblRvcD0iMzBkcCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfbWFyZ2luQm90dG9tPSI1MGRwIgorICAgICAgICBhbmRyb2lkOnBhZGRpbmdMZWZ0PSI4ZHAiCisgICAgICAgIGFuZHJvaWQ6cGFkZGluZ1RvcD0iNGRwIgorICAgICAgICBhbmRyb2lkOnRleHRTaXplPSIyMHNwIgorICAgICAgICBhbmRyb2lkOnRleHRDb2xvcj0iI2ZmZmZmZmZmIgorICAgICAgICAvPgorCisgICAgPExpbmVhckxheW91dCB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgICAgICBhbmRyb2lkOmdyYXZpdHk9ImNlbnRlciIKKyAgICAgICAgYW5kcm9pZDpvcmllbnRhdGlvbj0iaG9yaXpvbnRhbCIKKyAgICAgICAgPgorICAgICAgICA8QnV0dG9uIGFuZHJvaWQ6aWQ9IkAraWQvZml4IgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IndyYXBfY29udGVudCIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgICAgICAgICAgYW5kcm9pZDp0ZXh0PSJAc3RyaW5nL2ZpeCIKKyAgICAgICAgICAgIC8+CisKKyAgICAgICAgPEJ1dHRvbiBhbmRyb2lkOmlkPSJAK2lkL3VuZml4IgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IndyYXBfY29udGVudCIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0id3JhcF9jb250ZW50IgorICAgICAgICAgICAgYW5kcm9pZDp0ZXh0PSJAc3RyaW5nL3VuZml4IgorICAgICAgICAgICAgLz4KKyAgICA8L0xpbmVhckxheW91dD4KKworICAgIDxCdXR0b24gYW5kcm9pZDppZD0iQCtpZC90ZXN0IgorICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0id3JhcF9jb250ZW50IgorICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfZ3Jhdml0eT0iY2VudGVyIgorICAgICAgICBhbmRyb2lkOnRleHQ9IkBzdHJpbmcvdGVzdCIKKyAgICAgICAgLz4KKworPC9MaW5lYXJMYXlvdXQ+CisKZGlmZiAtLWdpdCBhL3Rlc3RzL0ZpeFZpYnJhdGVTZXR0aW5nL3Jlcy92YWx1ZXMvc3RyaW5ncy54bWwgYi90ZXN0cy9GaXhWaWJyYXRlU2V0dGluZy9yZXMvdmFsdWVzL3N0cmluZ3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2OWNlZjMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9GaXhWaWJyYXRlU2V0dGluZy9yZXMvdmFsdWVzL3N0cmluZ3MueG1sCkBAIC0wLDAgKzEsMjUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8IS0tIENvcHlyaWdodCAoQykgMjAwNyBUaGUgQW5kcm9pZCBPcGVuIFNvdXJjZSBQcm9qZWN0CisKKyAgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAKKyAgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy0tPgorCis8cmVzb3VyY2VzPgorICAgIDxzdHJpbmcgbmFtZT0iYXBwX2xhYmVsIj5GaXggVmlicmF0ZTwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idGl0bGUiPkZpeCB2aWJyYXRlIHNldHRpbmc8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9ImN1cnJlbnRfc2V0dGluZyI+IlJpbmdlcjogJTEkc1xuTm90aWZpY2F0aW9uOiAlMiRzIjwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0iZml4Ij5GaXggdGhlIHNldHRpbmc8L3N0cmluZz4KKyAgICA8c3RyaW5nIG5hbWU9InVuZml4Ij5CcmVhayB0aGUgc2V0dGluZzwvc3RyaW5nPgorICAgIDxzdHJpbmcgbmFtZT0idGVzdCI+VGVzdCB0aGUgc2V0dGluZzwvc3RyaW5nPgorPC9yZXNvdXJjZXM+CisKZGlmZiAtLWdpdCBhL3Rlc3RzL0ZpeFZpYnJhdGVTZXR0aW5nL3NyYy9jb20vYW5kcm9pZC9maXh2aWJyYXRlc2V0dGluZy9GaXhWaWJyYXRlU2V0dGluZy5qYXZhIGIvdGVzdHMvRml4VmlicmF0ZVNldHRpbmcvc3JjL2NvbS9hbmRyb2lkL2ZpeHZpYnJhdGVzZXR0aW5nL0ZpeFZpYnJhdGVTZXR0aW5nLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQ3ZWE3OAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL0ZpeFZpYnJhdGVTZXR0aW5nL3NyYy9jb20vYW5kcm9pZC9maXh2aWJyYXRlc2V0dGluZy9GaXhWaWJyYXRlU2V0dGluZy5qYXZhCkBAIC0wLDAgKzEsMTIzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKyAqCisgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KKworcGFja2FnZSBjb20uYW5kcm9pZC5maXh2aWJyYXRlc2V0dGluZzsKKworaW1wb3J0IGFuZHJvaWQuYXBwLkFjdGl2aXR5OworaW1wb3J0IGFuZHJvaWQuYXBwLk5vdGlmaWNhdGlvbjsKK2ltcG9ydCBhbmRyb2lkLmFwcC5Ob3RpZmljYXRpb25NYW5hZ2VyOworaW1wb3J0IGFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQ7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKK2ltcG9ydCBhbmRyb2lkLm1lZGlhLkF1ZGlvTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OworaW1wb3J0IGFuZHJvaWQud2lkZ2V0LlRleHRWaWV3OworaW1wb3J0IGFuZHJvaWQub3MuQnVuZGxlOworCitwdWJsaWMgY2xhc3MgRml4VmlicmF0ZVNldHRpbmcgZXh0ZW5kcyBBY3Rpdml0eSBpbXBsZW1lbnRzIFZpZXcuT25DbGlja0xpc3RlbmVyCit7CisgICAgQXVkaW9NYW5hZ2VyIG1BdWRpb01hbmFnZXI7CisgICAgTm90aWZpY2F0aW9uTWFuYWdlciBtTm90aWZpY2F0aW9uTWFuYWdlcjsKKyAgICBUZXh0VmlldyBtQ3VycmVudFNldHRpbmc7CisgICAgVmlldyBtRml4OworICAgIFZpZXcgbVVuZml4OworICAgIFZpZXcgbVRlc3Q7CisKKyAgICBAT3ZlcnJpZGUKKyAgICBwdWJsaWMgdm9pZCBvbkNyZWF0ZShCdW5kbGUgaWNpY2xlKSB7CisgICAgICAgIHN1cGVyLm9uQ3JlYXRlKGljaWNsZSk7CisKKyAgICAgICAgc2V0Q29udGVudFZpZXcoUi5sYXlvdXQuZml4X3ZpYnJhdGUpOworCisgICAgICAgIG1BdWRpb01hbmFnZXIgPSAoQXVkaW9NYW5hZ2VyKWdldFN5c3RlbVNlcnZpY2UoQVVESU9fU0VSVklDRSk7CisgICAgICAgIG1Ob3RpZmljYXRpb25NYW5hZ2VyID0gKE5vdGlmaWNhdGlvbk1hbmFnZXIpZ2V0U3lzdGVtU2VydmljZShOT1RJRklDQVRJT05fU0VSVklDRSk7CisKKyAgICAgICAgbUN1cnJlbnRTZXR0aW5nID0gKFRleHRWaWV3KWZpbmRWaWV3QnlJZChSLmlkLmN1cnJlbnRfc2V0dGluZyk7CisKKyAgICAgICAgbUZpeCA9IGZpbmRWaWV3QnlJZChSLmlkLmZpeCk7CisgICAgICAgIG1GaXguc2V0T25DbGlja0xpc3RlbmVyKHRoaXMpOworCisgICAgICAgIG1VbmZpeCA9IGZpbmRWaWV3QnlJZChSLmlkLnVuZml4KTsKKyAgICAgICAgbVVuZml4LnNldE9uQ2xpY2tMaXN0ZW5lcih0aGlzKTsKKworICAgICAgICBtVGVzdCA9IGZpbmRWaWV3QnlJZChSLmlkLnRlc3QpOworICAgICAgICBtVGVzdC5zZXRPbkNsaWNrTGlzdGVuZXIodGhpcyk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgb25SZXN1bWUoKSB7CisgICAgICAgIHN1cGVyLm9uUmVzdW1lKCk7CisKKyAgICAgICAgdXBkYXRlKCk7CisgICAgfQorCisgICAgcHJpdmF0ZSBTdHJpbmcgZ2V0U2V0dGluZ1ZhbHVlKGludCB2aWJyYXRlVHlwZSkgeworICAgICAgICBpbnQgc2V0dGluZyA9IG1BdWRpb01hbmFnZXIuZ2V0VmlicmF0ZVNldHRpbmcodmlicmF0ZVR5cGUpOworICAgICAgICBzd2l0Y2ggKHNldHRpbmcpIHsKKyAgICAgICAgICAgIGNhc2UgQXVkaW9NYW5hZ2VyLlZJQlJBVEVfU0VUVElOR19PRkY6CisgICAgICAgICAgICAgICAgcmV0dXJuICJvZmYiOworICAgICAgICAgICAgY2FzZSBBdWRpb01hbmFnZXIuVklCUkFURV9TRVRUSU5HX09OOgorICAgICAgICAgICAgICAgIHJldHVybiAib24iOworICAgICAgICAgICAgY2FzZSBBdWRpb01hbmFnZXIuVklCUkFURV9TRVRUSU5HX09OTFlfU0lMRU5UOgorICAgICAgICAgICAgICAgIHJldHVybiAic2lsZW50LW9ubHkiOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXR1cm4gInVua25vd24iOworICAgICAgICB9CisgICAgfQorCisgICAgcHVibGljIHZvaWQgb25DbGljayhWaWV3IHYpIHsKKyAgICAgICAgaWYgKHYgPT0gbUZpeCkgeworICAgICAgICAgICAgZml4KCk7CisgICAgICAgICAgICB1cGRhdGUoKTsKKyAgICAgICAgfSBlbHNlIGlmICh2ID09IG1VbmZpeCkgeworICAgICAgICAgICAgdW5maXgoKTsKKyAgICAgICAgICAgIHVwZGF0ZSgpOworICAgICAgICB9IGVsc2UgaWYgKHYgPT0gbVRlc3QpIHsKKyAgICAgICAgICAgIHRlc3QoKTsKKyAgICAgICAgICAgIHVwZGF0ZSgpOworICAgICAgICB9CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIHVwZGF0ZSgpIHsKKyAgICAgICAgU3RyaW5nIHJpbmdlciA9IGdldFNldHRpbmdWYWx1ZShBdWRpb01hbmFnZXIuVklCUkFURV9UWVBFX1JJTkdFUik7CisgICAgICAgIFN0cmluZyBub3RpZmljYXRpb24gPSBnZXRTZXR0aW5nVmFsdWUoQXVkaW9NYW5hZ2VyLlZJQlJBVEVfVFlQRV9OT1RJRklDQVRJT04pOworICAgICAgICBTdHJpbmcgdGV4dCA9IGdldFN0cmluZyhSLnN0cmluZy5jdXJyZW50X3NldHRpbmcsIHJpbmdlciwgbm90aWZpY2F0aW9uKTsKKyAgICAgICAgbUN1cnJlbnRTZXR0aW5nLnNldFRleHQodGV4dCk7CisgICAgfQorCisgICAgcHJpdmF0ZSB2b2lkIGZpeCgpIHsKKyAgICAgICAgbUF1ZGlvTWFuYWdlci5zZXRWaWJyYXRlU2V0dGluZyhBdWRpb01hbmFnZXIuVklCUkFURV9UWVBFX05PVElGSUNBVElPTiwKKyAgICAgICAgICAgICAgICBBdWRpb01hbmFnZXIuVklCUkFURV9TRVRUSU5HX09OKTsKKyAgICB9CisKKyAgICBwcml2YXRlIHZvaWQgdW5maXgoKSB7CisgICAgICAgIG1BdWRpb01hbmFnZXIuc2V0VmlicmF0ZVNldHRpbmcoQXVkaW9NYW5hZ2VyLlZJQlJBVEVfVFlQRV9OT1RJRklDQVRJT04sCisgICAgICAgICAgICAgICAgQXVkaW9NYW5hZ2VyLlZJQlJBVEVfU0VUVElOR19PRkYpOworICAgIH0KKworICAgIHByaXZhdGUgdm9pZCB0ZXN0KCkgeworICAgICAgICBOb3RpZmljYXRpb24gbiA9IG5ldyBOb3RpZmljYXRpb24oUi5kcmF3YWJsZS5zdGF0X3N5c193YXJuaW5nLCAiVGVzdCBub3RpZmljYXRpb24iLAorICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCkpOworICAgICAgICBJbnRlbnQgaW50ZW50ID0gbmV3IEludGVudCh0aGlzLCBGaXhWaWJyYXRlU2V0dGluZy5jbGFzcyk7CisgICAgICAgIFBlbmRpbmdJbnRlbnQgcGVuZGluZyA9IFBlbmRpbmdJbnRlbnQuZ2V0QWN0aXZpdHkodGhpcywgMCwgaW50ZW50LCAwKTsKKyAgICAgICAgbi5zZXRMYXRlc3RFdmVudEluZm8odGhpcywgIlRlc3Qgbm90aWZpY2F0aW9uIiwgIlRlc3Qgbm90aWZpY2F0aW9uIiwgcGVuZGluZyk7CisKKyAgICAgICAgbi52aWJyYXRlID0gbmV3IGxvbmdbXSB7IDAsIDcwMCwgNTAwLCAxMDAwIH07CisgICAgICAgIG4uZmxhZ3MgfD0gTm90aWZpY2F0aW9uLkZMQUdfQVVUT19DQU5DRUw7CisgICAgICAgIG1Ob3RpZmljYXRpb25NYW5hZ2VyLm5vdGlmeSgxLCBuKTsKKyAgICB9Cit9CisKZGlmZiAtLWdpdCBhL3Rlc3RzL1N0YXR1c0Jhci9BbmRyb2lkLm1rIGIvdGVzdHMvU3RhdHVzQmFyL0FuZHJvaWQubWsKaW5kZXggMThmY2FkMC4uNTAyNjU3ZiAxMDA2NDQKLS0tIGEvdGVzdHMvU3RhdHVzQmFyL0FuZHJvaWQubWsKKysrIGIvdGVzdHMvU3RhdHVzQmFyL0FuZHJvaWQubWsKQEAgLTgsNCArOCw2IEBACiBMT0NBTF9QQUNLQUdFX05BTUUgOj0gU3RhdHVzQmFyVGVzdAogTE9DQUxfQ0VSVElGSUNBVEUgOj0gcGxhdGZvcm0KIAorTE9DQUxfUFJPR1VBUkRfRU5BQkxFRCA6PSBkaXNhYmxlZAorCiBpbmNsdWRlICQoQlVJTERfUEFDS0FHRSkKZGlmZiAtLWdpdCBhL3Rlc3RzL1N0YXR1c0Jhci9BbmRyb2lkTWFuaWZlc3QueG1sIGIvdGVzdHMvU3RhdHVzQmFyL0FuZHJvaWRNYW5pZmVzdC54bWwKaW5kZXggMjFmYjk1MS4uYzFjYTYxOCAxMDA2NDQKLS0tIGEvdGVzdHMvU3RhdHVzQmFyL0FuZHJvaWRNYW5pZmVzdC54bWwKKysrIGIvdGVzdHMvU3RhdHVzQmFyL0FuZHJvaWRNYW5pZmVzdC54bWwKQEAgLTM1LDUgKzM1LDcgQEAKICAgICAgICAgICAgICAgICA8Y2F0ZWdvcnkgYW5kcm9pZDpuYW1lPSJhbmRyb2lkLmludGVudC5jYXRlZ29yeS5MQVVOQ0hFUiIgLz4KICAgICAgICAgICAgIDwvaW50ZW50LWZpbHRlcj4KICAgICAgICAgPC9hY3Rpdml0eT4KKyAgICAgICAgPGFjdGl2aXR5IGFuZHJvaWQ6bmFtZT0iVGVzdEFsZXJ0QWN0aXZpdHkiIGFuZHJvaWQ6dGhlbWU9IkBhbmRyb2lkOnN0eWxlL1RoZW1lLkRpYWxvZyI+CisgICAgICAgIDwvYWN0aXZpdHk+CiAgICAgPC9hcHBsaWNhdGlvbj4KIDwvbWFuaWZlc3Q+CmRpZmYgLS1naXQgYS90ZXN0cy9TdGF0dXNCYXIvcmVzL2RyYXdhYmxlLWhkcGkvc3RhdF9zeXNfcGhvbmUucG5nIGIvdGVzdHMvU3RhdHVzQmFyL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3Bob25lLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODE1NTUzCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvU3RhdHVzQmFyL3Jlcy9kcmF3YWJsZS1oZHBpL3N0YXRfc3lzX3Bob25lLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0cy9TdGF0dXNCYXIvcmVzL2RyYXdhYmxlLW1kcGkvc3RhdF9zeXNfcGhvbmUucG5nIGIvdGVzdHMvU3RhdHVzQmFyL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3Bob25lLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDJhYmM3Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvU3RhdHVzQmFyL3Jlcy9kcmF3YWJsZS1tZHBpL3N0YXRfc3lzX3Bob25lLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0cy9TdGF0dXNCYXIvcmVzL2xheW91dC90ZXN0X2FsZXJ0LnhtbCBiL3Rlc3RzL1N0YXR1c0Jhci9yZXMvbGF5b3V0L3Rlc3RfYWxlcnQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyNTE0NmMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9TdGF0dXNCYXIvcmVzL2xheW91dC90ZXN0X2FsZXJ0LnhtbApAQCAtMCwwICsxLDU3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPExpbmVhckxheW91dAorICAgIHhtbG5zOmFuZHJvaWQ9Imh0dHA6Ly9zY2hlbWFzLmFuZHJvaWQuY29tL2Fway9yZXMvYW5kcm9pZCIKKyAgICBhbmRyb2lkOmxheW91dF93aWR0aD0ibWF0Y2hfcGFyZW50IgorICAgIGFuZHJvaWQ6bGF5b3V0X2hlaWdodD0ibWF0Y2hfcGFyZW50IgorICAgIGFuZHJvaWQ6Z3Jhdml0eT0iY2VudGVyIj4KKworICAgIDxMaW5lYXJMYXlvdXQKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2lkdGg9IndyYXBfY29udGVudCIKKyAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisgICAgICAgIGFuZHJvaWQ6bGF5b3V0X2dyYXZpdHk9ImNlbnRlciIKKyAgICAgICAgYW5kcm9pZDpncmF2aXR5PSJjZW50ZXJfaG9yaXpvbnRhbCIKKyAgICAgICAgYW5kcm9pZDpvcmllbnRhdGlvbj0idmVydGljYWwiCisgICAgICAgID4KKworICAgICAgICA8VGV4dFZpZXcgYW5kcm9pZDppZD0iQCtpZC9hbGVydFRpdGxlIgorICAgICAgICAgICAgc3R5bGU9Ij9hbmRyb2lkOmF0dHIvdGV4dEFwcGVhcmFuY2VMYXJnZSIKKyAgICAgICAgICAgIGFuZHJvaWQ6cGFkZGluZz0iNWRpcCIKKyAgICAgICAgICAgIGFuZHJvaWQ6c2luZ2xlTGluZT0idHJ1ZSIKKyAgICAgICAgICAgIGFuZHJvaWQ6ZWxsaXBzaXplPSJlbmQiCisgICAgICAgICAgICBhbmRyb2lkOmdyYXZpdHk9ImNlbnRlciIKKyAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJtYXRjaF9wYXJlbnQiCisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IndyYXBfY29udGVudCIgLz4KKworICAgICAgICA8TGluZWFyTGF5b3V0CisgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0id3JhcF9jb250ZW50IgorICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisgICAgICAgICAgICBzdHlsZT0iQGFuZHJvaWQ6c3R5bGUvQnV0dG9uQmFyIj4KKworICAgICAgICAgICAgPEJ1dHRvbgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6aWQ9IkAraWQvc25vb3plIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJ3cmFwX2NvbnRlbnQiCisgICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisgICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2VpZ2h0PSIzIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6b25DbGljaz0iZGlzbWlzcyIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOnRleHQ9IlNub296ZSIgLz4KKworICAgICAgICAgICAgPCEtLSBibGFuayBzdHJldGNoYWJsZSB2aWV3IC0tPgorICAgICAgICAgICAgPFZpZXcKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF93aWR0aD0iMmRpcCIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOmxheW91dF9oZWlnaHQ9IjJkaXAiCisgICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfZ3Jhdml0eT0iZmlsbF9ob3Jpem9udGFsIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dlaWdodD0iMSIvPgorCisgICAgICAgICAgICA8QnV0dG9uCisgICAgICAgICAgICAgICAgYW5kcm9pZDppZD0iQCtpZC9kaXNtaXNzIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6bGF5b3V0X3dpZHRoPSJ3cmFwX2NvbnRlbnQiCisgICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSJ3cmFwX2NvbnRlbnQiCisgICAgICAgICAgICAgICAgYW5kcm9pZDpsYXlvdXRfd2VpZ2h0PSIzIgorICAgICAgICAgICAgICAgIGFuZHJvaWQ6b25DbGljaz0iZGlzbWlzcyIKKyAgICAgICAgICAgICAgICBhbmRyb2lkOnRleHQ9IkRpc21pc3MiIC8+CisKKyAgICAgICAgPC9MaW5lYXJMYXlvdXQ+CisKKyAgICA8L0xpbmVhckxheW91dD4KKworPC9MaW5lYXJMYXlvdXQ+CmRpZmYgLS1naXQgYS90ZXN0cy9TdGF0dXNCYXIvc3JjL2NvbS9hbmRyb2lkL3N0YXR1c2JhcnRlc3QvTm90aWZpY2F0aW9uVGVzdExpc3QuamF2YSBiL3Rlc3RzL1N0YXR1c0Jhci9zcmMvY29tL2FuZHJvaWQvc3RhdHVzYmFydGVzdC9Ob3RpZmljYXRpb25UZXN0TGlzdC5qYXZhCmluZGV4IGY1NDgxNDUuLjRkMDcxZTMgMTAwNjQ0Ci0tLSBhL3Rlc3RzL1N0YXR1c0Jhci9zcmMvY29tL2FuZHJvaWQvc3RhdHVzYmFydGVzdC9Ob3RpZmljYXRpb25UZXN0TGlzdC5qYXZhCisrKyBiL3Rlc3RzL1N0YXR1c0Jhci9zcmMvY29tL2FuZHJvaWQvc3RhdHVzYmFydGVzdC9Ob3RpZmljYXRpb25UZXN0TGlzdC5qYXZhCkBAIC0yMSw2ICsyMSw3IEBACiBpbXBvcnQgYW5kcm9pZC53aWRnZXQuQXJyYXlBZGFwdGVyOwogaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OwogaW1wb3J0IGFuZHJvaWQud2lkZ2V0Lkxpc3RWaWV3OworaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OwogaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZW50UmVzb2x2ZXI7CiBpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKIGltcG9ydCBhbmRyb2lkLmFwcC5Ob3RpZmljYXRpb247CkBAIC00Myw2ICs0NCw3IEBACiAgICAgVmlicmF0b3IgbVZpYnJhdG9yID0gbmV3IFZpYnJhdG9yKCk7CiAgICAgSGFuZGxlciBtSGFuZGxlciA9IG5ldyBIYW5kbGVyKCk7CiAKKyAgICBsb25nIG1BY3Rpdml0eUNyZWF0ZVRpbWUgPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKTsKICAgICBsb25nIG1DaHJvbm9tZXRlckJhc2UgPSAwOwogCiAgICAgQE92ZXJyaWRlCkBAIC02MCw3ICs2Miw3IEBACiAgICAgcHJpdmF0ZSBUZXN0W10gbVRlc3RzID0gbmV3IFRlc3RbXSB7CiAgICAgICAgIG5ldyBUZXN0KCJPZmYgYW5kIHNvdW5kIikgewogICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgewotICAgICAgICAgICAgICAgIFBvd2VyTWFuYWdlciBwbSA9IChQb3dlck1hbmFnZXIpTm90aWZpY2F0aW9uVGVzdExpc3QudGhpcy5nZXRTeXN0ZW1TZXJ2aWNlKCJwb3dlciIpOworICAgICAgICAgICAgICAgIFBvd2VyTWFuYWdlciBwbSA9IChQb3dlck1hbmFnZXIpTm90aWZpY2F0aW9uVGVzdExpc3QudGhpcy5nZXRTeXN0ZW1TZXJ2aWNlKENvbnRleHQuUE9XRVJfU0VSVklDRSk7CiAgICAgICAgICAgICAgICAgUG93ZXJNYW5hZ2VyLldha2VMb2NrIHdsID0gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG0ubmV3V2FrZUxvY2soUG93ZXJNYW5hZ2VyLlBBUlRJQUxfV0FLRV9MT0NLLCAic291bmQiKTsKICAgICAgICAgICAgICAgICB3bC5hY3F1aXJlKCk7CkBAIC0xMjEsMTkgKzEyMyw0OSBAQAogICAgICAgICAgICAgfQogICAgICAgICB9LAogCi0gICAgICAgIG5ldyBUZXN0KCJCYWQgcmVzb3VyY2UgIzIiKSB7Ci0gICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvbiBuID0gbmV3IE5vdGlmaWNhdGlvbihOb3RpZmljYXRpb25UZXN0TGlzdC50aGlzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIuZHJhd2FibGUuaWNfc3RhdHVzYmFyX21pc3NlZGNhbGwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbCwgU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCktKDEwMDAqNjAqNjAqMjQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICIoNDUzKSAxMjMtMjMyOCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIsIG51bGwpOwotICAgICAgICAgICAgICAgIG4uY29udGVudFZpZXcuc2V0SW50KDEgLypib2d1cyovLCAiYm9ndXMgbWV0aG9kIiwgNjY2KTsKLSAgICAgICAgICAgICAgICBtTk0ubm90aWZ5KDIsIG4pOworICAgICAgICBuZXcgVGVzdCgiQmFkIEljb24gIzEgKHdoZW49Y3JlYXRlKSIpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICBOb3RpZmljYXRpb24gbiA9IG5ldyBOb3RpZmljYXRpb24oUi5sYXlvdXQuY2hyb25vX25vdGlmaWNhdGlvbiAvKiBub3QgYW4gaWNvbiAqLywKKyAgICAgICAgICAgICAgICAgICAgICAgIG51bGwsIG1BY3Rpdml0eUNyZWF0ZVRpbWUpOworICAgICAgICAgICAgICAgIG4uc2V0TGF0ZXN0RXZlbnRJbmZvKE5vdGlmaWNhdGlvblRlc3RMaXN0LnRoaXMsICJQZXJzaXN0ZW50ICMxIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhpcyBpcyB0aGUgc2FtZSBub3RpZmljYXRpb24hISEiLCBtYWtlSW50ZW50KCkpOworICAgICAgICAgICAgICAgIG1OTS5ub3RpZnkoMSwgbik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCiAKKyAgICAgICAgbmV3IFRlc3QoIkJhZCBJY29uICMxICh3aGVuPW5vdykiKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uIG4gPSBuZXcgTm90aWZpY2F0aW9uKFIubGF5b3V0LmNocm9ub19ub3RpZmljYXRpb24gLyogbm90IGFuIGljb24gKi8sCisgICAgICAgICAgICAgICAgICAgICAgICBudWxsLCBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKSk7CisgICAgICAgICAgICAgICAgbi5zZXRMYXRlc3RFdmVudEluZm8oTm90aWZpY2F0aW9uVGVzdExpc3QudGhpcywgIlBlcnNpc3RlbnQgIzEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGlzIGlzIHRoZSBzYW1lIG5vdGlmaWNhdGlvbiEhISIsIG1ha2VJbnRlbnQoKSk7CisgICAgICAgICAgICAgICAgbU5NLm5vdGlmeSgxLCBuKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKworICAgICAgICBuZXcgVGVzdCgiQmFkIHJlc291cmNlICMxICh3aGVuPWNyZWF0ZSkiKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uIG4gPSBuZXcgTm90aWZpY2F0aW9uKFIuZHJhd2FibGUuaWNvbjIsCisgICAgICAgICAgICAgICAgICAgICAgICBudWxsLCBtQWN0aXZpdHlDcmVhdGVUaW1lKTsKKyAgICAgICAgICAgICAgICBuLnNldExhdGVzdEV2ZW50SW5mbyhOb3RpZmljYXRpb25UZXN0TGlzdC50aGlzLCAiUGVyc2lzdGVudCAjMSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoaXMgaXMgdGhlIHNhbWUgbm90aWZpY2F0aW9uISEhIiwgbWFrZUludGVudCgpKTsKKyAgICAgICAgICAgICAgICBuLmNvbnRlbnRWaWV3LnNldEludCgxIC8qYm9ndXMqLywgImJvZ3VzIG1ldGhvZCIsIDY2Nik7CisgICAgICAgICAgICAgICAgbU5NLm5vdGlmeSgxLCBuKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKworICAgICAgICBuZXcgVGVzdCgiQmFkIHJlc291cmNlICMxICh3aGVuPW5vdykiKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uIG4gPSBuZXcgTm90aWZpY2F0aW9uKFIuZHJhd2FibGUuaWNvbjIsCisgICAgICAgICAgICAgICAgICAgICAgICBudWxsLCBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKSk7CisgICAgICAgICAgICAgICAgbi5zZXRMYXRlc3RFdmVudEluZm8oTm90aWZpY2F0aW9uVGVzdExpc3QudGhpcywgIlBlcnNpc3RlbnQgIzEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGlzIGlzIHRoZSBzYW1lIG5vdGlmaWNhdGlvbiEhISIsIG1ha2VJbnRlbnQoKSk7CisgICAgICAgICAgICAgICAgbi5jb250ZW50Vmlldy5zZXRJbnQoMSAvKmJvZ3VzKi8sICJib2d1cyBtZXRob2QiLCA2NjYpOworICAgICAgICAgICAgICAgIG1OTS5ub3RpZnkoMSwgbik7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisKKwogICAgICAgICBuZXcgVGVzdCgiQmFkIHJlc291cmNlICMzIikgewogICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkKICAgICAgICAgICAgIHsKQEAgLTE4MCw3ICsyMTIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSLmRyYXdhYmxlLmljb240LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudWxsLCBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKSwgIlN0cmVzcyAtIExhdGVzdCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJOb3RpZnkgbWUhISEiLCBudWxsKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG4uZmxhZ3MgfD0gTm90aWZpY2F0aW9uLkZMQUdfT05HT0lOR19FVkVOVDsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vbi5mbGFncyB8PSBOb3RpZmljYXRpb24uRkxBR19PTkdPSU5HX0VWRU5UOwogICAgICAgICAgICAgICAgICAgICAgICAgbU5NLm5vdGlmeSgxLCBuKTsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KQEAgLTIwNSw2ICsyMzcsOCBAQAogICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvbiBuID0gbmV3IE5vdGlmaWNhdGlvbigpOwogICAgICAgICAgICAgICAgIG4uZmxhZ3MgfD0gTm90aWZpY2F0aW9uLkZMQUdfU0hPV19MSUdIVFM7CiAgICAgICAgICAgICAgICAgbi5sZWRBUkdCID0gMHhmZjAwMDBmZjsKKyAgICAgICAgICAgICAgICBuLmxlZE9uTVMgPSAxOworICAgICAgICAgICAgICAgIG4ubGVkT2ZmTVMgPSAwOwogICAgICAgICAgICAgICAgIG1OTS5ub3RpZnkoMSwgbik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCkBAIC0yMTUsNiArMjQ5LDggQEAKICAgICAgICAgICAgICAgICBOb3RpZmljYXRpb24gbiA9IG5ldyBOb3RpZmljYXRpb24oKTsKICAgICAgICAgICAgICAgICBuLmZsYWdzIHw9IE5vdGlmaWNhdGlvbi5GTEFHX1NIT1dfTElHSFRTOwogICAgICAgICAgICAgICAgIG4ubGVkQVJHQiA9IDB4ZmZmZjAwMDA7CisgICAgICAgICAgICAgICAgbi5sZWRPbk1TID0gMTsKKyAgICAgICAgICAgICAgICBuLmxlZE9mZk1TID0gMDsKICAgICAgICAgICAgICAgICBtTk0ubm90aWZ5KDEsIG4pOwogICAgICAgICAgICAgfQogICAgICAgICB9LApAQCAtMjI1LDYgKzI2MSwyMCBAQAogICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvbiBuID0gbmV3IE5vdGlmaWNhdGlvbigpOwogICAgICAgICAgICAgICAgIG4uZmxhZ3MgfD0gTm90aWZpY2F0aW9uLkZMQUdfU0hPV19MSUdIVFM7CiAgICAgICAgICAgICAgICAgbi5sZWRBUkdCID0gMHhmZmZmZmYwMDsKKyAgICAgICAgICAgICAgICBuLmxlZE9uTVMgPSAxOworICAgICAgICAgICAgICAgIG4ubGVkT2ZmTVMgPSAwOworICAgICAgICAgICAgICAgIG1OTS5ub3RpZnkoMSwgbik7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisKKyAgICAgICAgbmV3IFRlc3QoIkxpZ2h0cyBvZmYiKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvbiBuID0gbmV3IE5vdGlmaWNhdGlvbigpOworICAgICAgICAgICAgICAgIG4uZmxhZ3MgfD0gTm90aWZpY2F0aW9uLkZMQUdfU0hPV19MSUdIVFM7CisgICAgICAgICAgICAgICAgbi5sZWRBUkdCID0gMHgwMDAwMDAwMDsKKyAgICAgICAgICAgICAgICBuLmxlZE9uTVMgPSAwOworICAgICAgICAgICAgICAgIG4ubGVkT2ZmTVMgPSAwOwogICAgICAgICAgICAgICAgIG1OTS5ub3RpZnkoMSwgbik7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCkBAIC0yMzQsNyArMjg0LDcgQEAKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBOb3RpZmljYXRpb24gbiA9IG5ldyBOb3RpZmljYXRpb24oKTsKICAgICAgICAgICAgICAgICBuLmZsYWdzIHw9IE5vdGlmaWNhdGlvbi5GTEFHX1NIT1dfTElHSFRTOwotICAgICAgICAgICAgICAgIG4ubGVkQVJHQiA9IDB4ZmZmZmZmMDA7CisgICAgICAgICAgICAgICAgbi5sZWRBUkdCID0gMHhmZjAwMDBmZjsKICAgICAgICAgICAgICAgICBuLmxlZE9uTVMgPSAxMzAwOwogICAgICAgICAgICAgICAgIG4ubGVkT2ZmTVMgPSAxMzAwOwogICAgICAgICAgICAgICAgIG1OTS5ub3RpZnkoMSwgbik7CkBAIC0yNDYsNyArMjk2LDcgQEAKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBOb3RpZmljYXRpb24gbiA9IG5ldyBOb3RpZmljYXRpb24oKTsKICAgICAgICAgICAgICAgICBuLmZsYWdzIHw9IE5vdGlmaWNhdGlvbi5GTEFHX1NIT1dfTElHSFRTOwotICAgICAgICAgICAgICAgIG4ubGVkQVJHQiA9IDB4ZmZmZmZmMDA7CisgICAgICAgICAgICAgICAgbi5sZWRBUkdCID0gMHhmZjAwMDBmZjsKICAgICAgICAgICAgICAgICBuLmxlZE9uTVMgPSAzMDA7CiAgICAgICAgICAgICAgICAgbi5sZWRPZmZNUyA9IDMwMDsKICAgICAgICAgICAgICAgICBtTk0ubm90aWZ5KDEsIG4pOwpAQCAtMzkyLDcgKzQ0Miw3IEBACiAgICAgICAgIG5ldyBUZXN0KCJQZXJzaXN0ZW50ICMxIikgewogICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgewogICAgICAgICAgICAgICAgIE5vdGlmaWNhdGlvbiBuID0gbmV3IE5vdGlmaWNhdGlvbihSLmRyYXdhYmxlLmljb24xLCAidGljayB0aWNrIHRpY2siLAotICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgbUFjdGl2aXR5Q3JlYXRlVGltZSk7CiAgICAgICAgICAgICAgICAgbi5zZXRMYXRlc3RFdmVudEluZm8oTm90aWZpY2F0aW9uVGVzdExpc3QudGhpcywgIlBlcnNpc3RlbnQgIzEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGlzIGlzIGEgbm90aWZpY2F0aW9uISEhIiwgbWFrZUludGVudCgpKTsKICAgICAgICAgICAgICAgICBtTk0ubm90aWZ5KDEsIG4pOwpAQCAtNDUyLDYgKzUwMiwxNiBAQAogICAgICAgICAgICAgfQogICAgICAgICB9LAogCisgICAgICAgIG5ldyBUZXN0KCJQZXJzaXN0ZW50ICMxIC0gZGlmZmVyZW50IGljb24iKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAgICAgTm90aWZpY2F0aW9uIG4gPSBuZXcgTm90aWZpY2F0aW9uKFIuZHJhd2FibGUuaWNvbjIsIG51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICBtQWN0aXZpdHlDcmVhdGVUaW1lKTsKKyAgICAgICAgICAgICAgICBuLnNldExhdGVzdEV2ZW50SW5mbyhOb3RpZmljYXRpb25UZXN0TGlzdC50aGlzLCAiUGVyc2lzdGVudCAjMSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoaXMgaXMgdGhlIHNhbWUgbm90aWZpY2F0aW9uISEhIiwgbWFrZUludGVudCgpKTsKKyAgICAgICAgICAgICAgICBtTk0ubm90aWZ5KDEsIG4pOworICAgICAgICAgICAgfQorICAgICAgICB9LAorCiAgICAgICAgIG5ldyBUZXN0KCJDaHJvbm9tZXRlciBTdGFydCIpIHsKICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKICAgICAgICAgICAgICAgICBOb3RpZmljYXRpb24gbiA9IG5ldyBOb3RpZmljYXRpb24oUi5kcmF3YWJsZS5pY29uMiwgIm1lIG1lIG1lIG1lIiwKQEAgLTU4MSw3ICs2NDEsNyBAQAogICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBQb3dlck1hbmFnZXIuV2FrZUxvY2sgd2wKLSAgICAgICAgICAgICAgICAgICAgICAgID0gKChQb3dlck1hbmFnZXIpTm90aWZpY2F0aW9uVGVzdExpc3QudGhpcy5nZXRTeXN0ZW1TZXJ2aWNlKCJwb3dlciIpKQorICAgICAgICAgICAgICAgICAgICAgICAgPSAoKFBvd2VyTWFuYWdlcilOb3RpZmljYXRpb25UZXN0TGlzdC50aGlzLmdldFN5c3RlbVNlcnZpY2UoQ29udGV4dC5QT1dFUl9TRVJWSUNFKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubmV3V2FrZUxvY2soUG93ZXJNYW5hZ2VyLlBBUlRJQUxfV0FLRV9MT0NLLCAiY3Jhc2hlciIpOwogICAgICAgICAgICAgICAgIHdsLmFjcXVpcmUoKTsKICAgICAgICAgICAgICAgICBtSGFuZGxlci5wb3N0RGVsYXllZChuZXcgUnVubmFibGUoKSB7CkBAIC02MDQsOSArNjY0LDcgQEAKIAogICAgIHByaXZhdGUgUGVuZGluZ0ludGVudCBtYWtlSW50ZW50KCkgewogICAgICAgICBJbnRlbnQgaW50ZW50ID0gbmV3IEludGVudChJbnRlbnQuQUNUSU9OX01BSU4pOwotICAgICAgICBpbnRlbnQuc2V0Q29tcG9uZW50KG5ldyBhbmRyb2lkLmNvbnRlbnQuQ29tcG9uZW50TmFtZSgKLSAgICAgICAgICAgICAgICAgICAgImNvbS5hbmRyb2lkLmNvbnRhY3RzIiwKLSAgICAgICAgICAgICAgICAgICAgImNvbS5hbmRyb2lkLmNvbnRhY3RzLkNvbnRhY3RzQWN0aXZpdHkiKSk7CisgICAgICAgIGludGVudC5hZGRDYXRlZ29yeShJbnRlbnQuQ0FURUdPUllfSE9NRSk7CiAgICAgICAgIHJldHVybiBQZW5kaW5nSW50ZW50LmdldEFjdGl2aXR5KHRoaXMsIDAsIGludGVudCwgMCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS90ZXN0cy9TdGF0dXNCYXIvc3JjL2NvbS9hbmRyb2lkL3N0YXR1c2JhcnRlc3QvU3RhdHVzQmFyVGVzdC5qYXZhIGIvdGVzdHMvU3RhdHVzQmFyL3NyYy9jb20vYW5kcm9pZC9zdGF0dXNiYXJ0ZXN0L1N0YXR1c0JhclRlc3QuamF2YQppbmRleCAwNjUwNmZiLi5iNjY1ZDJmIDEwMDY0NAotLS0gYS90ZXN0cy9TdGF0dXNCYXIvc3JjL2NvbS9hbmRyb2lkL3N0YXR1c2JhcnRlc3QvU3RhdHVzQmFyVGVzdC5qYXZhCisrKyBiL3Rlc3RzL1N0YXR1c0Jhci9zcmMvY29tL2FuZHJvaWQvc3RhdHVzYmFydGVzdC9TdGF0dXNCYXJUZXN0LmphdmEKQEAgLTIzLDYgKzIzLDcgQEAKIGltcG9ydCBhbmRyb2lkLnZpZXcuVmlldzsKIGltcG9ydCBhbmRyb2lkLndpZGdldC5MaXN0VmlldzsKIGltcG9ydCBhbmRyb2lkLmNvbnRlbnQuSW50ZW50OworaW1wb3J0IGFuZHJvaWQuYXBwLlBlbmRpbmdJbnRlbnQ7CiBpbXBvcnQgYW5kcm9pZC5hcHAuTm90aWZpY2F0aW9uOwogaW1wb3J0IGFuZHJvaWQuYXBwLk5vdGlmaWNhdGlvbk1hbmFnZXI7CiBpbXBvcnQgYW5kcm9pZC5hcHAuU3RhdHVzQmFyTWFuYWdlcjsKQEAgLTM1LDYgKzM2LDggQEAKIGltcG9ydCBhbmRyb2lkLndpZGdldC5SZW1vdGVWaWV3czsKIGltcG9ydCBhbmRyb2lkLndpZGdldC5Ub2FzdDsKIGltcG9ydCBhbmRyb2lkLm9zLlBvd2VyTWFuYWdlcjsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuV2luZG93OworaW1wb3J0IGFuZHJvaWQudmlldy5XaW5kb3dNYW5hZ2VyOwogCiBwdWJsaWMgY2xhc3MgU3RhdHVzQmFyVGVzdCBleHRlbmRzIFRlc3RBY3Rpdml0eQogewpAQCAtNTcsNiArNjAsNTYgQEAKICAgICB9CiAKICAgICBwcml2YXRlIFRlc3RbXSBtVGVzdHMgPSBuZXcgVGVzdFtdIHsKKyAgICAgICAgbmV3IFRlc3QoIkhpZGUiKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAgICAgV2luZG93IHdpbiA9IGdldFdpbmRvdygpOworICAgICAgICAgICAgICAgIFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zIHdpblBhcmFtcyA9IHdpbi5nZXRBdHRyaWJ1dGVzKCk7CisgICAgICAgICAgICAgICAgd2luUGFyYW1zLmZsYWdzIHw9IFdpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfRlVMTFNDUkVFTjsKKyAgICAgICAgICAgICAgICB3aW4uc2V0QXR0cmlidXRlcyh3aW5QYXJhbXMpOworICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICBuZXcgVGVzdCgiU2hvdyIpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICBXaW5kb3cgd2luID0gZ2V0V2luZG93KCk7CisgICAgICAgICAgICAgICAgV2luZG93TWFuYWdlci5MYXlvdXRQYXJhbXMgd2luUGFyYW1zID0gd2luLmdldEF0dHJpYnV0ZXMoKTsKKyAgICAgICAgICAgICAgICB3aW5QYXJhbXMuZmxhZ3MgJj0gfldpbmRvd01hbmFnZXIuTGF5b3V0UGFyYW1zLkZMQUdfRlVMTFNDUkVFTjsKKyAgICAgICAgICAgICAgICB3aW4uc2V0QXR0cmlidXRlcyh3aW5QYXJhbXMpOworICAgICAgICAgICAgfQorICAgICAgICB9LAorICAgICAgICBuZXcgVGVzdCgiSW1tZXJzaXZlOiBFbnRlciIpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICBzZXRJbW1lcnNpdmUodHJ1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgIG5ldyBUZXN0KCJJbW1lcnNpdmU6IEV4aXQiKSB7CisgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7CisgICAgICAgICAgICAgICAgc2V0SW1tZXJzaXZlKGZhbHNlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgbmV3IFRlc3QoIlByaW9yaXR5IG5vdGlmaWNhdGlvbiIpIHsKKyAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKKyAgICAgICAgICAgICAgICBOb3RpZmljYXRpb24gbm90ID0gbmV3IE5vdGlmaWNhdGlvbihTdGF0dXNCYXJUZXN0LnRoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFIuZHJhd2FibGUuc3RhdF9zeXNfcGhvbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbmNvbWluZyBjYWxsIGZyb206IEltcGVyaW91cyBMZWFkZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKS0oMTAwMCo2MCo2MCoyNCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbXBlcmlvdXMgTGVhZGVyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIig4ODgpIDU1NS01MDM4IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVsbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgIG5vdC5mbGFncyB8PSBOb3RpZmljYXRpb24uRkxBR19ISUdIX1BSSU9SSVRZOworICAgICAgICAgICAgICAgIEludGVudCBmdWxsU2NyZWVuSW50ZW50ID0gbmV3IEludGVudChTdGF0dXNCYXJUZXN0LnRoaXMsIFRlc3RBbGVydEFjdGl2aXR5LmNsYXNzKTsKKyAgICAgICAgICAgICAgICBpbnQgaWQgPSAoaW50KVN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOyAvLyBYWFggSEFYCisgICAgICAgICAgICAgICAgZnVsbFNjcmVlbkludGVudC5wdXRFeHRyYSgiaWQiLCBpZCk7CisgICAgICAgICAgICAgICAgbm90LmZ1bGxTY3JlZW5JbnRlbnQgPSBQZW5kaW5nSW50ZW50LmdldEFjdGl2aXR5KAorICAgICAgICAgICAgICAgICAgICBTdGF0dXNCYXJUZXN0LnRoaXMsCisgICAgICAgICAgICAgICAgICAgIDAsCisgICAgICAgICAgICAgICAgICAgIGZ1bGxTY3JlZW5JbnRlbnQsCisgICAgICAgICAgICAgICAgICAgIFBlbmRpbmdJbnRlbnQuRkxBR19DQU5DRUxfQ1VSUkVOVCk7CisgICAgICAgICAgICAgICAgLy8gaWYgeW91IHRhcCBvbiBpdCB5b3Ugc2hvdWxkIGdldCB0aGUgb3JpZ2luYWwgYWxlcnQgYm94CisgICAgICAgICAgICAgICAgbm90LmNvbnRlbnRJbnRlbnQgPSBub3QuZnVsbFNjcmVlbkludGVudDsKKyAgICAgICAgICAgICAgICBtTm90aWZpY2F0aW9uTWFuYWdlci5ub3RpZnkoaWQsIG5vdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0sCiAgICAgICAgIG5ldyBUZXN0KCJEaXNhYmxlIEFsZXJ0cyIpIHsKICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKICAgICAgICAgICAgICAgICBtU3RhdHVzQmFyTWFuYWdlci5kaXNhYmxlKFN0YXR1c0Jhck1hbmFnZXIuRElTQUJMRV9OT1RJRklDQVRJT05fQUxFUlRTKTsKQEAgLTEzNCwxMyArMTg3LDkgQEAKICAgICAgICAgICAgICAgICAgICAgfSwgMzAwMCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAgICAgIG5ldyBUZXN0KCJFeHBhbmQgaW4gMyBzZWMuIikgeworICAgICAgICBuZXcgVGVzdCgiRXhwYW5kIikgewogICAgICAgICAgICAgcHVibGljIHZvaWQgcnVuKCkgewotICAgICAgICAgICAgICAgIG1IYW5kbGVyLnBvc3REZWxheWVkKG5ldyBSdW5uYWJsZSgpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtU3RhdHVzQmFyTWFuYWdlci5leHBhbmQoKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgfSwgMzAwMCk7CisgICAgICAgICAgICAgICAgbVN0YXR1c0Jhck1hbmFnZXIuZXhwYW5kKCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCiAgICAgICAgIG5ldyBUZXN0KCJFeHBhbmQgaW4gMyBzZWMuIikgewpAQCAtMTYxLDEzICsyMTAsMjEgQEAKICAgICAgICAgICAgICAgICAgICAgfSwgMzAwMCk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCi0gICAgICAgIG5ldyBUZXN0KCJUb2dnbGUgaW4gMyBzZWMuIikgeworICAgICAgICBuZXcgVGVzdCgiTW9yZSBpY29ucyIpIHsKICAgICAgICAgICAgIHB1YmxpYyB2b2lkIHJ1bigpIHsKLSAgICAgICAgICAgICAgICBtSGFuZGxlci5wb3N0RGVsYXllZChuZXcgUnVubmFibGUoKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgdm9pZCBydW4oKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbVN0YXR1c0Jhck1hbmFnZXIudG9nZ2xlKCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0sIDMwMDApOworICAgICAgICAgICAgICAgIGZvciAoU3RyaW5nIHNsb3Q6IG5ldyBTdHJpbmdbXSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN5bmNfZmFpbGluZyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdwcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJsdWV0b290aCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR0eSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNwZWFrZXJwaG9uZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm11dGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3aWZpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWxhcm1fY2xvY2siLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZWN1cmUiLAorICAgICAgICAgICAgICAgICAgICAgICAgfSkgeworICAgICAgICAgICAgICAgICAgICBtU3RhdHVzQmFyTWFuYWdlci5zZXRJY29uVmlzaWJpbGl0eShzbG90LCB0cnVlKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0sCiAgICAgfTsKZGlmZiAtLWdpdCBhL3Rlc3RzL1N0YXR1c0Jhci9zcmMvY29tL2FuZHJvaWQvc3RhdHVzYmFydGVzdC9UZXN0QWxlcnRBY3Rpdml0eS5qYXZhIGIvdGVzdHMvU3RhdHVzQmFyL3NyYy9jb20vYW5kcm9pZC9zdGF0dXNiYXJ0ZXN0L1Rlc3RBbGVydEFjdGl2aXR5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjU4NzZkMAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL1N0YXR1c0Jhci9zcmMvY29tL2FuZHJvaWQvc3RhdHVzYmFydGVzdC9UZXN0QWxlcnRBY3Rpdml0eS5qYXZhCkBAIC0wLDAgKzEsMzcgQEAKK3BhY2thZ2UgY29tLmFuZHJvaWQuc3RhdHVzYmFydGVzdDsKKworaW1wb3J0IGFuZHJvaWQuYXBwLkFjdGl2aXR5OworaW1wb3J0IGFuZHJvaWQuYXBwLk5vdGlmaWNhdGlvbk1hbmFnZXI7CitpbXBvcnQgYW5kcm9pZC5jb250ZW50LkludGVudDsKK2ltcG9ydCBhbmRyb2lkLm9zLkJ1bmRsZTsKK2ltcG9ydCBhbmRyb2lkLnV0aWwuTG9nOworaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OworCitwdWJsaWMgY2xhc3MgVGVzdEFsZXJ0QWN0aXZpdHkgZXh0ZW5kcyBBY3Rpdml0eSB7CisgICAgaW50IG1JZDsKKworICAgIEBPdmVycmlkZQorICAgIHB1YmxpYyB2b2lkIG9uUmVzdW1lKCkgeworICAgICAgICBzdXBlci5vblJlc3VtZSgpOworICAgICAgICBMb2cuZCgiU3RhdHVzQmFyVGVzdCIsICJUZXN0QWxlcnRBY3Rpdml0eS5vblJlc3VtZSIpOworICAgICAgICBJbnRlbnQgaW50ZW50ID0gZ2V0SW50ZW50KCk7CisgICAgICAgIG1JZCA9IGludGVudC5nZXRJbnRFeHRyYSgiaWQiLCAtMSk7CisgICAgICAgIExvZy5kKCJTdGF0dXNCYXJUZXN0IiwgIlJlbWVtYmVyaW5nIG5vdGlmaWNhdGlvbiBpZD0iICsgbUlkKTsKKyAgICAgICAgc2V0Q29udGVudFZpZXcoUi5sYXlvdXQudGVzdF9hbGVydCk7CisgICAgfQorCisgICAgQE92ZXJyaWRlCisgICAgcHVibGljIHZvaWQgb25QYXVzZSgpIHsKKyAgICAgICAgc3VwZXIub25QYXVzZSgpOworICAgICAgICBMb2cuZCgiU3RhdHVzQmFyVGVzdCIsICJvblBhdXNlOiBDYW5jZWxpbmcgbm90aWZpY2F0aW9uIGlkPSIgKyBtSWQpOworICAgICAgICBOb3RpZmljYXRpb25NYW5hZ2VyIG5tID0gKE5vdGlmaWNhdGlvbk1hbmFnZXIpIGdldFN5c3RlbVNlcnZpY2UoTk9USUZJQ0FUSU9OX1NFUlZJQ0UpOworICAgICAgICBubS5jYW5jZWwobUlkKTsKKyAgICAgICAgZmluaXNoKCk7CisgICAgfQorCisgICAgQFN1cHByZXNzV2FybmluZ3MoeyJVbnVzZWREZWNsYXJhdGlvbiJ9KQorICAgIHB1YmxpYyB2b2lkIGRpc21pc3MoVmlldyB2KSB7CisgICAgICAgIExvZy5kKCJTdGF0dXNCYXJUZXN0IiwgIlRlc3RBbGVydEFjdGl2aXR5LmRpc21pc3MiKTsKKyAgICAgICAgZmluaXNoKCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvdGVzdHMvYXBwd2lkZ2V0cy9BcHBXaWRnZXRQcm92aWRlclRlc3QvcmVzL2xheW91dC90ZXN0X2FwcHdpZGdldDIueG1sIGIvdGVzdHMvYXBwd2lkZ2V0cy9BcHBXaWRnZXRQcm92aWRlclRlc3QvcmVzL2xheW91dC90ZXN0X2FwcHdpZGdldDIueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiYzZmNTkKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9hcHB3aWRnZXRzL0FwcFdpZGdldFByb3ZpZGVyVGVzdC9yZXMvbGF5b3V0L3Rlc3RfYXBwd2lkZ2V0Mi54bWwKQEAgLTAsMCArMSwyNiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzwhLS0gQ29weXJpZ2h0IChDKSAyMDA2IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKworICAgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgIAorICAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKzxUZXh0VmlldyB4bWxuczphbmRyb2lkPSJodHRwOi8vc2NoZW1hcy5hbmRyb2lkLmNvbS9hcGsvcmVzL2FuZHJvaWQiCisgICAgYW5kcm9pZDppZD0iQCtpZC9vaF9oYWlfdGV4dCIKKyAgICBhbmRyb2lkOmxheW91dF93aWR0aD0iMTUwZHAiCisgICAgYW5kcm9pZDpsYXlvdXRfaGVpZ2h0PSIxNTBkcCIKKyAgICBhbmRyb2lkOnRleHQ9IkBzdHJpbmcvYXBwd2lkZ2V0X3ZpZXdfdGl0bGUiCisgICAgYW5kcm9pZDpiYWNrZ3JvdW5kPSIjOGZmZiIKKyAgICBhbmRyb2lkOnRleHRDb2xvcj0iIzAwMCIKKyAgICBhbmRyb2lkOnRleHRTdHlsZT0iYm9sZCIKKy8+CisKZGlmZiAtLWdpdCBhL3Rlc3RzL2FwcHdpZGdldHMvQXBwV2lkZ2V0UHJvdmlkZXJUZXN0L3NyYy9jb20vYW5kcm9pZC90ZXN0cy9hcHB3aWRnZXRwcm92aWRlci9UZXN0QXBwV2lkZ2V0UHJvdmlkZXIuamF2YSBiL3Rlc3RzL2FwcHdpZGdldHMvQXBwV2lkZ2V0UHJvdmlkZXJUZXN0L3NyYy9jb20vYW5kcm9pZC90ZXN0cy9hcHB3aWRnZXRwcm92aWRlci9UZXN0QXBwV2lkZ2V0UHJvdmlkZXIuamF2YQppbmRleCA0MThiZTY1Li5kOWMwMTEwIDEwMDY0NAotLS0gYS90ZXN0cy9hcHB3aWRnZXRzL0FwcFdpZGdldFByb3ZpZGVyVGVzdC9zcmMvY29tL2FuZHJvaWQvdGVzdHMvYXBwd2lkZ2V0cHJvdmlkZXIvVGVzdEFwcFdpZGdldFByb3ZpZGVyLmphdmEKKysrIGIvdGVzdHMvYXBwd2lkZ2V0cy9BcHBXaWRnZXRQcm92aWRlclRlc3Qvc3JjL2NvbS9hbmRyb2lkL3Rlc3RzL2FwcHdpZGdldHByb3ZpZGVyL1Rlc3RBcHBXaWRnZXRQcm92aWRlci5qYXZhCkBAIC00MSw2ICs0MSw3IEBACiAgICAgICAgICAgICBMb2cuZChUQUcsICJESVNBQkxFRCIpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKEFwcFdpZGdldE1hbmFnZXIuQUNUSU9OX0FQUFdJREdFVF9VUERBVEUuZXF1YWxzKGFjdGlvbikpIHsKKyAgICAgICAgICAgIGlmICh0cnVlKSByZXR1cm47CiAgICAgICAgICAgICBMb2cuZChUQUcsICJVUERBVEUiKTsKICAgICAgICAgICAgIEJ1bmRsZSBleHRyYXMgPSBpbnRlbnQuZ2V0RXh0cmFzKCk7CiAgICAgICAgICAgICBpbnRbXSBhcHBXaWRnZXRJZHMgPSBleHRyYXMuZ2V0SW50QXJyYXkoQXBwV2lkZ2V0TWFuYWdlci5FWFRSQV9BUFBXSURHRVRfSURTKTsKZGlmZiAtLWdpdCBhL3Rlc3RzL2ZyYW1ld29yay10ZXN0cy9SRUFETUUgYi90ZXN0cy9mcmFtZXdvcmstdGVzdHMvUkVBRE1FCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjQ2YjI1Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL2ZyYW1ld29yay10ZXN0cy9SRUFETUUKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLVRoaXMgcGFja2FnZSBjb250YWlucyB0ZXN0cyB3aGljaCBuZWVkIHRvIGFjY2VzcyBwYWNrYWdlLXByaXZhdGUgbWVtYmVycyBpbiB0aGUgZnJhbWV3b3JrIGNvZGUuCi1UbyBkbyB0aGlzLCB0aGUgdGVzdHMgbXVzdCBiZSBsb2FkZWQgaW4gdGhlIHNhbWUgY2xhc3MgbG9hZGVyIGFzIHRoZSBjbGFzc2VzIHdoaWNoIHRoZXkgYXJlCi10ZXN0aW5nLiBUaGlzIHBhY2thZ2UgaXMgbG9hZGVkIGluIHRoZSBib290IGNsYXNzcGF0aC4KLQotUnVuIHRoZXNlIHRlc3RzIHZpYSBBbmRyb2lkVGVzdHMgLT4gRnJhbWV3b3JrVGVzdHMuCmRpZmYgLS1naXQgYS90ZXN0cy9mcmFtZXdvcmstdGVzdHMvc3JjL0FuZHJvaWQubWsgYi90ZXN0cy9mcmFtZXdvcmstdGVzdHMvc3JjL0FuZHJvaWQubWsKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0ZTMzYTQuLjAwMDAwMDAKLS0tIGEvdGVzdHMvZnJhbWV3b3JrLXRlc3RzL3NyYy9BbmRyb2lkLm1rCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotTE9DQUxfUEFUSCA6PSAkKGNhbGwgbXktZGlyKQotaW5jbHVkZSAkKENMRUFSX1ZBUlMpCi0KLUxPQ0FMX1NSQ19GSUxFUyA6PSAkKGNhbGwgYWxsLXN1YmRpci1qYXZhLWZpbGVzKQotCi1MT0NBTF9NT0RVTEUgOj0gZnJhbWV3b3JrLXRlc3RzCi0KLUxPQ0FMX0pBVkFfTElCUkFSSUVTIDo9IGFuZHJvaWQucG9saWN5X3Bob25lIGFuZHJvaWQudGVzdC5ydW5uZXIKLQotaW5jbHVkZSAkKEJVSUxEX0pBVkFfTElCUkFSWSkKZGlmZiAtLWdpdCBhL3Rlc3RzL2ZyYW1ld29yay10ZXN0cy9zcmMvYW5kcm9pZC90ZXN0L0ZyYW1ld29ya1Rlc3RzLmphdmEgYi90ZXN0cy9mcmFtZXdvcmstdGVzdHMvc3JjL2FuZHJvaWQvdGVzdC9GcmFtZXdvcmtUZXN0cy5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYjNmNDkzLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL2ZyYW1ld29yay10ZXN0cy9zcmMvYW5kcm9pZC90ZXN0L0ZyYW1ld29ya1Rlc3RzLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotcGFja2FnZSBhbmRyb2lkLnRlc3Q7Ci0KLWltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5vcy5Mb2dnaW5nUHJpbnRTdHJlYW1UZXN0OwotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0U3VpdGU7Ci1pbXBvcnQgY29tLmFuZHJvaWQuaW50ZXJuYWwuaHR0cC5tdWx0aXBhcnQuTXVsdGlwYXJ0VGVzdDsKLWltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC5wb2xpY3kuaW1wbC5Mb2NrUGF0dGVybktleWd1YXJkVmlld1Rlc3Q7Ci0KLS8qKgotICogVGVzdHMgdGhhdCBhcmUgbG9hZGVkIGluIHRoZSBib290IGNsYXNzcGF0aCBhbG9uZyB3aXRoIHRoZSBBbmRyb2lkIGZyYW1ld29yawotICogY2xhc3Nlcy4gVGhpcyBlbmFibGVzIHlvdSB0byBhY2Nlc3MgcGFja2FnZS1wcml2YXRlIG1lbWJlcnMgaW4gdGhlIGZyYW1ld29yawotICogY2xhc3NlczsgZG9pbmcgc28gaXMgbm90IHBvc3NpYmxlIHdoZW4gdGhlIHRlc3QgY2xhc3NlcyBhcmUgbG9hZGVkIGluIGFuCi0gKiBhcHBsaWNhdGlvbiBjbGFzc2xvYWRlci4KLSAqLwotcHVibGljIGNsYXNzIEZyYW1ld29ya1Rlc3RzIHsKLSAgICBwdWJsaWMgc3RhdGljIFRlc3RTdWl0ZSBzdWl0ZSgpIHsKLSAgICAgICAgVGVzdFN1aXRlIHN1aXRlID0gbmV3IFRlc3RTdWl0ZShGcmFtZXdvcmtUZXN0cy5jbGFzcy5nZXROYW1lKCkpOwotCi0gICAgICAgIHN1aXRlLmFkZFRlc3RTdWl0ZShNdWx0aXBhcnRUZXN0LmNsYXNzKTsKLSAgICAgICAgc3VpdGUuYWRkVGVzdFN1aXRlKExvZ2dpbmdQcmludFN0cmVhbVRlc3QuY2xhc3MpOwotICAgICAgICBzdWl0ZS5hZGRUZXN0U3VpdGUoTG9ja1BhdHRlcm5LZXlndWFyZFZpZXdUZXN0LmNsYXNzKTsKLQotICAgICAgICByZXR1cm4gc3VpdGU7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvZnJhbWV3b3JrLXRlc3RzL3NyYy9hbmRyb2lkL3RleHQvUGFja2VkSW50VmVjdG9yVGVzdC5qYXZhIGIvdGVzdHMvZnJhbWV3b3JrLXRlc3RzL3NyYy9hbmRyb2lkL3RleHQvUGFja2VkSW50VmVjdG9yVGVzdC5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OGNkZWU5Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL2ZyYW1ld29yay10ZXN0cy9zcmMvYW5kcm9pZC90ZXh0L1BhY2tlZEludFZlY3RvclRlc3QuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDE1OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA3IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotcGFja2FnZSBhbmRyb2lkLnRleHQ7Ci0KLWltcG9ydCBhbmRyb2lkLnRleHQuUGFja2VkSW50VmVjdG9yOwotaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZTsKLQotLyoqCi0gKiBQYWNrZWRJbnRWZWN0b3JUZXN0IHRlc3RzIHRoZSBmZWF0dXJlcyBvZiBhbmRyb2lkLnV0aWwuUGFja2VkSW50VmVjdG9yLgotICovCi1wdWJsaWMgY2xhc3MgUGFja2VkSW50VmVjdG9yVGVzdCBleHRlbmRzIFRlc3RDYXNlIHsKLSAKLSAgICBwdWJsaWMgdm9pZCB0ZXN0QmFzaWMoKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICAgICAgZm9yIChpbnQgd2lkdGggPSAwOyB3aWR0aCA8IDEwOyB3aWR0aCsrKSB7Ci0gICAgICAgICAgICBQYWNrZWRJbnRWZWN0b3IgcCA9IG5ldyBQYWNrZWRJbnRWZWN0b3Iod2lkdGgpOwotICAgICAgICAgICAgaW50W10gaW5zID0gbmV3IGludFt3aWR0aF07Ci0KLSAgICAgICAgICAgIGZvciAoaW50IGhlaWdodCA9IHdpZHRoICogMjsgaGVpZ2h0IDwgd2lkdGggKiA0OyBoZWlnaHQrKykgewotICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyhwLndpZHRoKCksIHdpZHRoKTsKLQotICAgICAgICAgICAgICAgIC8vIFRlc3QgYWRkaW5nIHJvd3MuCi0KLSAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGhlaWdodDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIGludCBhdDsKLQotICAgICAgICAgICAgICAgICAgICBpZiAoaSAlIDIgPT0gMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgYXQgPSBpOwotICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgYXQgPSBwLnNpemUoKSAtIGk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHdpZHRoOyBqKyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIGluc1tqXSA9IGkgKyBqOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKGkgPT0gaGVpZ2h0IC8gMikgewotICAgICAgICAgICAgICAgICAgICAgICAgcC5pbnNlcnRBdChhdCwgbnVsbCk7Ci0gICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBwLmluc2VydEF0KGF0LCBpbnMpOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKHAuc2l6ZSgpLCBpICsgMSk7Ci0KLSAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCB3aWR0aDsgaisrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA9PSBoZWlnaHQgLyAyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIHAuZ2V0VmFsdWUoYXQsIGopKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKHAuZ2V0VmFsdWUoYXQsIGopLCBpICsgaik7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAvLyBUZXN0IHNldHRpbmcgdmFsdWVzLgotCi0gICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBoZWlnaHQ7IGkrKykgewotICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHdpZHRoOyBqKyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHAuc2V0VmFsdWUoaSwgaiwgaSAqIGopOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMocC5nZXRWYWx1ZShpLCBqKSwgaSAqIGopOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gVGVzdCBvZmZzZXR0aW5nIHZhbHVlcy4KLQotICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgd2lkdGg7IGorKykgewotICAgICAgICAgICAgICAgICAgICBwLmFkanVzdFZhbHVlc0JlbG93KGogKiAyLCBqLCBqICsgMjcpOwotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgaGVpZ2h0OyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCB3aWR0aDsgaisrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbnQgZXhwZWN0ID0gaSAqIGo7Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpID49IGogKiAyKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ICs9IGogKyAyNzsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKHAuZ2V0VmFsdWUoaSwgaiksIGV4cGVjdCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHdpZHRoOyBqKyspIHsKLSAgICAgICAgICAgICAgICAgICAgcC5hZGp1c3RWYWx1ZXNCZWxvdyhqLCBqLCBqICogaiArIDE0KTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGhlaWdodDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgd2lkdGg7IGorKykgewotICAgICAgICAgICAgICAgICAgICAgICAgaW50IGV4cGVjdCA9IGkgKiBqOwotCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA+PSBqICogMikgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdCArPSBqICsgMjc7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSA+PSBqKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ICs9IGogKiBqICsgMTQ7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydEVxdWFscyhwLmdldFZhbHVlKGksIGopLCBleHBlY3QpOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgLy8gVGVzdCB1bmRvaW5nIG9mZnNldHMuCi0KLSAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHdpZHRoOyBqKyspIHsKLSAgICAgICAgICAgICAgICAgICAgcC5hZGp1c3RWYWx1ZXNCZWxvdyhqICogMiwgaiwgLShqICsgMjcpKTsKLSAgICAgICAgICAgICAgICAgICAgcC5hZGp1c3RWYWx1ZXNCZWxvdyhqLCBqLCAtKGogKiBqICsgMTQpKTsKLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGhlaWdodDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgd2lkdGg7IGorKykgewotICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKHAuZ2V0VmFsdWUoaSwgaiksIGkgKiBqKTsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgICAgIC8vIFRlc3QgZGVsZXRpbmcgcm93cy4KLQotICAgICAgICAgICAgICAgIHdoaWxlIChwLnNpemUoKSA+IDApIHsKLSAgICAgICAgICAgICAgICAgICAgaW50IG9zaXplID0gcC5zaXplKCk7Ci0gICAgICAgICAgICAgICAgICAgIGludCBkZWwgPSBvc2l6ZSAvIDM7Ci0KLSAgICAgICAgICAgICAgICAgICAgaWYgKGRlbCA9PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBkZWwgPSAxOwotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgaW50IGF0ID0gKG9zaXplIC0gZGVsKSAvIDI7Ci0gICAgICAgICAgICAgICAgICAgIHAuZGVsZXRlQXQoYXQsIGRlbCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKHAuc2l6ZSgpLCBvc2l6ZSAtIGRlbCk7Ci0KLSAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBhdDsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHdpZHRoOyBqKyspIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMocC5nZXRWYWx1ZShpLCBqKSwgaSAqIGopOwotICAgICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IGF0OyBpIDwgcC5zaXplKCk7IGkrKykgewotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCB3aWR0aDsgaisrKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0RXF1YWxzKHAuZ2V0VmFsdWUoaSwgaiksIChpICsgaGVpZ2h0IC0gcC5zaXplKCkpICogaik7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgICAgICBhc3NlcnRFcXVhbHMoMCwgcC5zaXplKCkpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvdGVzdHMvZnJhbWV3b3JrLXRlc3RzL3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9Mb2NrUGF0dGVybktleWd1YXJkVmlld1Rlc3QuamF2YSBiL3Rlc3RzL2ZyYW1ld29yay10ZXN0cy9zcmMvY29tL2FuZHJvaWQvaW50ZXJuYWwvcG9saWN5L2ltcGwvTG9ja1BhdHRlcm5LZXlndWFyZFZpZXdUZXN0LmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlNTdiZDIuLjAwMDAwMDAKLS0tIGEvdGVzdHMvZnJhbWV3b3JrLXRlc3RzL3NyYy9jb20vYW5kcm9pZC9pbnRlcm5hbC9wb2xpY3kvaW1wbC9Mb2NrUGF0dGVybktleWd1YXJkVmlld1Rlc3QuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM1MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDA4IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKLSAqCi0gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKLSAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KLSAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotICoKLSAqICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCi0gKgotICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKLSAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgotICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCi0gKi8KLQotcGFja2FnZSBjb20uYW5kcm9pZC5pbnRlcm5hbC5wb2xpY3kuaW1wbDsKLQotaW1wb3J0IGFuZHJvaWQuY29udGVudC5Db250ZXh0OwotaW1wb3J0IGNvbS5hbmRyb2lkLmludGVybmFsLnRlbGVwaG9ueS5JY2NDYXJkOwotaW1wb3J0IGFuZHJvaWQuY29udGVudC5yZXMuQ29uZmlndXJhdGlvbjsKLWltcG9ydCBhbmRyb2lkLnRlc3QuQW5kcm9pZFRlc3RDYXNlOwotaW1wb3J0IGFuZHJvaWQudmlldy5WaWV3OwotaW1wb3J0IGFuZHJvaWQudmlldy5LZXlFdmVudDsKLWltcG9ydCBjb20uYW5kcm9pZC5pbnRlcm5hbC53aWRnZXQuTG9ja1BhdHRlcm5VdGlsczsKLWltcG9ydCBjb20uZ29vZ2xlLmFuZHJvaWQuY29sbGVjdC5MaXN0czsKLQotaW1wb3J0IGphdmEudXRpbC5MaXN0OwotCi0vKioKLSAqIFRlc3RzIGZvciB7QGxpbmsgY29tLmFuZHJvaWQuaW50ZXJuYWwucG9saWN5LmltcGwuTG9ja1BhdHRlcm5LZXlndWFyZFZpZXd9LAotICogd2hpY2ggaGFuZGxlcyB0aGUgbWFuYWdlbWVudCBvZiBzY3JlZW5zIHdoaWxlIHRoZSBrZXlndWFyZCBpcyBzaG93aW5nLgotICovCi1wdWJsaWMgY2xhc3MgTG9ja1BhdHRlcm5LZXlndWFyZFZpZXdUZXN0IGV4dGVuZHMgQW5kcm9pZFRlc3RDYXNlIHsKLSAgICBwcml2YXRlIE1vY2tVcGRhdGVNb25pdG9yIG1VcGRhdGVNb25pdG9yOwotICAgIHByaXZhdGUgTG9ja1BhdHRlcm5VdGlscyBtTG9ja1BhdHRlcm5VdGlsczsKLSAgICBwcml2YXRlIFRlc3RhYmxlTG9ja1BhdHRlcm5LZXlndWFyZFZpZXcgbUxQS1Y7Ci0gICAgcHJpdmF0ZSBNb2NrS2V5Z3VhcmRDYWxsYmFjayBtS2V5Z3VhcmRWaWV3Q2FsbGJhY2s7Ci0KLSAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBNb2NrVXBkYXRlTW9uaXRvciBleHRlbmRzIEtleWd1YXJkVXBkYXRlTW9uaXRvciB7Ci0KLSAgICAgICAgcHVibGljIEljY0NhcmQuU3RhdGUgc2ltU3RhdGUgPSBJY2NDYXJkLlN0YXRlLlJFQURZOwotCi0gICAgICAgIHByaXZhdGUgTW9ja1VwZGF0ZU1vbml0b3IoQ29udGV4dCBjb250ZXh0KSB7Ci0gICAgICAgICAgICBzdXBlcihjb250ZXh0KTsKLSAgICAgICAgfQotCi0gICAgICAgIEBPdmVycmlkZQotICAgICAgICBwdWJsaWMgSWNjQ2FyZC5TdGF0ZSBnZXRTaW1TdGF0ZSgpIHsKLSAgICAgICAgICAgIHJldHVybiBzaW1TdGF0ZTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIHByaXZhdGUgc3RhdGljIGNsYXNzIE1vY2tMb2NrUGF0dGVyblV0aWxzIGV4dGVuZHMgTG9ja1BhdHRlcm5VdGlscyB7Ci0gICAgICAgIGJvb2xlYW4gaXNMb2NrUGF0dGVybkVuYWJsZWQgPSB0cnVlOwotICAgICAgICBwdWJsaWMgYm9vbGVhbiBpc1Blcm1hbmVudGx5TG9ja2VkID0gZmFsc2U7Ci0KLSAgICAgICAgcHVibGljIE1vY2tMb2NrUGF0dGVyblV0aWxzKCkgewotICAgICAgICAgICAgc3VwZXIobnVsbCk7Ci0gICAgICAgIH0KLQotICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIGJvb2xlYW4gaXNMb2NrUGF0dGVybkVuYWJsZWQoKSB7Ci0gICAgICAgICAgICByZXR1cm4gaXNMb2NrUGF0dGVybkVuYWJsZWQ7Ci0gICAgICAgIH0KLQotICAgICAgICBAT3ZlcnJpZGUKLSAgICAgICAgcHVibGljIHZvaWQgc2V0TG9ja1BhdHRlcm5FbmFibGVkKGJvb2xlYW4gbG9ja1BhdHRlcm5FbmFibGVkKSB7Ci0gICAgICAgICAgICBpc0xvY2tQYXR0ZXJuRW5hYmxlZCA9IGxvY2tQYXR0ZXJuRW5hYmxlZDsKLSAgICAgICAgfQotCi0gICAgICAgIEBPdmVycmlkZQotICAgICAgICBwdWJsaWMgYm9vbGVhbiBpc1Blcm1hbmVudGx5TG9ja2VkKCkgewotICAgICAgICAgICAgcmV0dXJuIGlzUGVybWFuZW50bHlMb2NrZWQ7Ci0gICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgdm9pZCBzZXRQZXJtYW5lbnRseUxvY2tlZChib29sZWFuIHBlcm1hbmVudGx5TG9ja2VkKSB7Ci0gICAgICAgICAgICBpc1Blcm1hbmVudGx5TG9ja2VkID0gcGVybWFuZW50bHlMb2NrZWQ7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBwcml2YXRlIHN0YXRpYyBjbGFzcyBNb2NrS2V5Z3VhcmRTY3JlZW4gZXh0ZW5kcyBWaWV3IGltcGxlbWVudHMgS2V5Z3VhcmRTY3JlZW4gewotCi0gICAgICAgIHByaXZhdGUgaW50IG1PblBhdXNlQ291bnQgPSAwOwotICAgICAgICBwcml2YXRlIGludCBtT25SZXN1bWVDb3VudCA9IDA7Ci0gICAgICAgIHByaXZhdGUgaW50IG1DbGVhbnVwQ291bnQgPSAwOwotCi0gICAgICAgIHByaXZhdGUgTW9ja0tleWd1YXJkU2NyZWVuKENvbnRleHQgY29udGV4dCkgewotICAgICAgICAgICAgc3VwZXIoY29udGV4dCk7Ci0gICAgICAgICAgICBzZXRGb2N1c2FibGUodHJ1ZSk7Ci0gICAgICAgIH0KLQotICAgICAgICAvKioge0Bpbmhlcml0RG9jfSAqLwotICAgICAgICBwdWJsaWMgYm9vbGVhbiBuZWVkc0lucHV0KCkgewotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9Ci0KLSAgICAgICAgLyoqIHtAaW5oZXJpdERvY30gKi8KLSAgICAgICAgcHVibGljIHZvaWQgb25QYXVzZSgpIHsKLSAgICAgICAgICAgIG1PblBhdXNlQ291bnQrKzsKLSAgICAgICAgfQotCi0gICAgICAgIC8qKiB7QGluaGVyaXREb2N9ICovCi0gICAgICAgIHB1YmxpYyB2b2lkIG9uUmVzdW1lKCkgewotICAgICAgICAgICAgbU9uUmVzdW1lQ291bnQrKzsKLSAgICAgICAgfQotCi0gICAgICAgIC8qKiB7QGluaGVyaXREb2N9ICovCi0gICAgICAgIHB1YmxpYyB2b2lkIGNsZWFuVXAoKSB7Ci0gICAgICAgICAgICBtQ2xlYW51cENvdW50Kys7Ci0gICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgaW50IGdldE9uUGF1c2VDb3VudCgpIHsKLSAgICAgICAgICAgIHJldHVybiBtT25QYXVzZUNvdW50OwotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIGludCBnZXRPblJlc3VtZUNvdW50KCkgewotICAgICAgICAgICAgcmV0dXJuIG1PblJlc3VtZUNvdW50OwotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIGludCBnZXRDbGVhbnVwQ291bnQoKSB7Ci0gICAgICAgICAgICByZXR1cm4gbUNsZWFudXBDb3VudDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8qKgotICAgICAqIEFsbG93cyB1cyB0byBpbmplY3QgdGhlIGxvY2sgYW5kIHVubG9jayB2aWV3cyB0byBzaW11bGF0ZSB0aGVpciBiZWhhdmlvcgotICAgICAqIGFuZCBkZXRlY3QgdGhlaXIgY3JlYXRpb24uCi0gICAgICovCi0gICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgVGVzdGFibGVMb2NrUGF0dGVybktleWd1YXJkVmlldyBleHRlbmRzIExvY2tQYXR0ZXJuS2V5Z3VhcmRWaWV3IHsKLSAgICAgICAgcHJpdmF0ZSBMaXN0PE1vY2tLZXlndWFyZFNjcmVlbj4gbUluamVjdGVkTG9ja1NjcmVlbnM7Ci0gICAgICAgIHByaXZhdGUgTGlzdDxNb2NrS2V5Z3VhcmRTY3JlZW4+IG1JbmplY3RlZFVubG9ja1NjcmVlbnM7Ci0KLQotCi0gICAgICAgIHByaXZhdGUgVGVzdGFibGVMb2NrUGF0dGVybktleWd1YXJkVmlldyhDb250ZXh0IGNvbnRleHQsIEtleWd1YXJkVXBkYXRlTW9uaXRvciB1cGRhdGVNb25pdG9yLAotICAgICAgICAgICAgICAgIExvY2tQYXR0ZXJuVXRpbHMgbG9ja1BhdHRlcm5VdGlscywgS2V5Z3VhcmRXaW5kb3dDb250cm9sbGVyIGNvbnRyb2xsZXIpIHsKLSAgICAgICAgICAgIHN1cGVyKGNvbnRleHQsIHVwZGF0ZU1vbml0b3IsIGxvY2tQYXR0ZXJuVXRpbHMsIGNvbnRyb2xsZXIpOwotICAgICAgICB9Ci0KLSAgICAgICAgQE92ZXJyaWRlCi0gICAgICAgIFZpZXcgY3JlYXRlTG9ja1NjcmVlbigpIHsKLSAgICAgICAgICAgIGZpbmFsIE1vY2tLZXlndWFyZFNjcmVlbiBuZXdWaWV3ID0gbmV3IE1vY2tLZXlndWFyZFNjcmVlbihnZXRDb250ZXh0KCkpOwotICAgICAgICAgICAgaWYgKG1JbmplY3RlZExvY2tTY3JlZW5zID09IG51bGwpIG1JbmplY3RlZExvY2tTY3JlZW5zID0gTGlzdHMubmV3QXJyYXlMaXN0KCk7Ci0gICAgICAgICAgICBtSW5qZWN0ZWRMb2NrU2NyZWVucy5hZGQobmV3Vmlldyk7Ci0gICAgICAgICAgICByZXR1cm4gbmV3VmlldzsKLSAgICAgICAgfQotCi0gICAgICAgIEBPdmVycmlkZQotICAgICAgICBWaWV3IGNyZWF0ZVVubG9ja1NjcmVlbkZvcihVbmxvY2tNb2RlIHVubG9ja01vZGUpIHsKLSAgICAgICAgICAgIGZpbmFsIE1vY2tLZXlndWFyZFNjcmVlbiBuZXdWaWV3ID0gbmV3IE1vY2tLZXlndWFyZFNjcmVlbihnZXRDb250ZXh0KCkpOwotICAgICAgICAgICAgaWYgKG1JbmplY3RlZFVubG9ja1NjcmVlbnMgPT0gbnVsbCkgIG1JbmplY3RlZFVubG9ja1NjcmVlbnMgPSBMaXN0cy5uZXdBcnJheUxpc3QoKTsKLSAgICAgICAgICAgIG1JbmplY3RlZFVubG9ja1NjcmVlbnMuYWRkKG5ld1ZpZXcpOwotICAgICAgICAgICAgcmV0dXJuIG5ld1ZpZXc7Ci0gICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgTGlzdDxNb2NrS2V5Z3VhcmRTY3JlZW4+IGdldEluamVjdGVkTG9ja1NjcmVlbnMoKSB7Ci0gICAgICAgICAgICByZXR1cm4gbUluamVjdGVkTG9ja1NjcmVlbnM7Ci0gICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgTGlzdDxNb2NrS2V5Z3VhcmRTY3JlZW4+IGdldEluamVjdGVkVW5sb2NrU2NyZWVucygpIHsKLSAgICAgICAgICAgIHJldHVybiBtSW5qZWN0ZWRVbmxvY2tTY3JlZW5zOwotICAgICAgICB9Ci0gICAgfQotCi0gICAgcHJpdmF0ZSBzdGF0aWMgY2xhc3MgTW9ja0tleWd1YXJkQ2FsbGJhY2sgaW1wbGVtZW50cyBLZXlndWFyZFZpZXdDYWxsYmFjayB7Ci0KLSAgICAgICAgcHJpdmF0ZSBpbnQgbVBva2VXYWtlbG9ja0NvdW50ID0gMDsKLSAgICAgICAgcHJpdmF0ZSBpbnQgbUtleWd1YXJkRG9uZUNvdW50ID0gMDsKLQotICAgICAgICBwdWJsaWMgdm9pZCBwb2tlV2FrZWxvY2soKSB7Ci0gICAgICAgICAgICBtUG9rZVdha2Vsb2NrQ291bnQrKzsKLSAgICAgICAgfQotCi0gICAgICAgIHB1YmxpYyB2b2lkIHBva2VXYWtlbG9jayhpbnQgbWlsbGlzKSB7Ci0gICAgICAgICAgICBtUG9rZVdha2Vsb2NrQ291bnQrKzsKLSAgICAgICAgfQotCi0gICAgICAgIHB1YmxpYyB2b2lkIGtleWd1YXJkRG9uZShib29sZWFuIGF1dGhlbnRpY2F0ZWQpIHsKLSAgICAgICAgICAgIG1LZXlndWFyZERvbmVDb3VudCsrOwotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIHZvaWQga2V5Z3VhcmREb25lRHJhd2luZygpIHsKLQotICAgICAgICB9Ci0KLSAgICAgICAgcHVibGljIGludCBnZXRQb2tlV2FrZWxvY2tDb3VudCgpIHsKLSAgICAgICAgICAgIHJldHVybiBtUG9rZVdha2Vsb2NrQ291bnQ7Ci0gICAgICAgIH0KLQotICAgICAgICBwdWJsaWMgaW50IGdldEtleWd1YXJkRG9uZUNvdW50KCkgewotICAgICAgICAgICAgcmV0dXJuIG1LZXlndWFyZERvbmVDb3VudDsKLSAgICAgICAgfQotICAgIH0KLQotICAgIEBPdmVycmlkZQotICAgIHByb3RlY3RlZCB2b2lkIHNldFVwKCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0gICAgICAgIHN1cGVyLnNldFVwKCk7Ci0gICAgICAgIG1VcGRhdGVNb25pdG9yID0gbmV3IE1vY2tVcGRhdGVNb25pdG9yKGdldENvbnRleHQoKSk7Ci0gICAgICAgIG1Mb2NrUGF0dGVyblV0aWxzID0gbmV3IE1vY2tMb2NrUGF0dGVyblV0aWxzKCk7Ci0KLSAgICAgICAgbUxQS1YgPSBuZXcgVGVzdGFibGVMb2NrUGF0dGVybktleWd1YXJkVmlldyhnZXRDb250ZXh0KCksIG1VcGRhdGVNb25pdG9yLAotICAgICAgICAgICAgICAgIG1Mb2NrUGF0dGVyblV0aWxzLCBuZXcgS2V5Z3VhcmRXaW5kb3dDb250cm9sbGVyKCkgewotICAgICAgICAgICAgcHVibGljIHZvaWQgc2V0TmVlZHNJbnB1dChib29sZWFuIG5lZWRzSW5wdXQpIHsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSk7Ci0gICAgICAgIG1LZXlndWFyZFZpZXdDYWxsYmFjayA9IG5ldyBNb2NrS2V5Z3VhcmRDYWxsYmFjaygpOwotICAgICAgICBtTFBLVi5zZXRDYWxsYmFjayhtS2V5Z3VhcmRWaWV3Q2FsbGJhY2spOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHRlc3RTdGF0ZUFmdGVyQ3JlYXRlZFdoaWxlU2NyZWVuT2ZmKCkgewotCi0gICAgICAgIGFzc2VydEVxdWFscygxLCBtTFBLVi5nZXRJbmplY3RlZExvY2tTY3JlZW5zKCkuc2l6ZSgpKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIG1MUEtWLmdldEluamVjdGVkVW5sb2NrU2NyZWVucygpLnNpemUoKSk7Ci0KLSAgICAgICAgTW9ja0tleWd1YXJkU2NyZWVuIGxvY2tTY3JlZW4gPSBtTFBLVi5nZXRJbmplY3RlZExvY2tTY3JlZW5zKCkuZ2V0KDApOwotICAgICAgICBNb2NrS2V5Z3VhcmRTY3JlZW4gdW5sb2NrU2NyZWVuID0gbUxQS1YuZ2V0SW5qZWN0ZWRVbmxvY2tTY3JlZW5zKCkuZ2V0KDApOwotCi0gICAgICAgIGFzc2VydEVxdWFscygwLCBsb2NrU2NyZWVuLmdldE9uUGF1c2VDb3VudCgpKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIGxvY2tTY3JlZW4uZ2V0T25SZXN1bWVDb3VudCgpKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIGxvY2tTY3JlZW4uZ2V0Q2xlYW51cENvdW50KCkpOwotCi0gICAgICAgIGFzc2VydEVxdWFscygwLCB1bmxvY2tTY3JlZW4uZ2V0T25QYXVzZUNvdW50KCkpOwotICAgICAgICBhc3NlcnRFcXVhbHMoMCwgdW5sb2NrU2NyZWVuLmdldE9uUmVzdW1lQ291bnQoKSk7Ci0gICAgICAgIGFzc2VydEVxdWFscygwLCB1bmxvY2tTY3JlZW4uZ2V0Q2xlYW51cENvdW50KCkpOwotCi0gICAgICAgIGFzc2VydEVxdWFscygwLCBtS2V5Z3VhcmRWaWV3Q2FsbGJhY2suZ2V0UG9rZVdha2Vsb2NrQ291bnQoKSk7Ci0gICAgICAgIGFzc2VydEVxdWFscygwLCBtS2V5Z3VhcmRWaWV3Q2FsbGJhY2suZ2V0S2V5Z3VhcmREb25lQ291bnQoKSk7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgdGVzdFdva2VuQnlOb25NZW51S2V5KCkgewotICAgICAgICBtTFBLVi53YWtlV2hlblJlYWR5VHEoMCk7Ci0KLSAgICAgICAgLy8gc2hvdWxkIGhhdmUgcG9rZWQgdGhlIHdha2Vsb2NrIHRvIHR1cm4gb24gdGhlIHNjcmVlbgotICAgICAgICBhc3NlcnRFcXVhbHMoMSwgbUtleWd1YXJkVmlld0NhbGxiYWNrLmdldFBva2VXYWtlbG9ja0NvdW50KCkpOwotCi0gICAgICAgIC8vIHNob3VsZG4ndCBiZSBhbnkgYWRkaXRpb25hbCB2aWV3cyBjcmVhdGVkCi0gICAgICAgIGFzc2VydEVxdWFscygxLCBtTFBLVi5nZXRJbmplY3RlZExvY2tTY3JlZW5zKCkuc2l6ZSgpKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIG1MUEtWLmdldEluamVjdGVkVW5sb2NrU2NyZWVucygpLnNpemUoKSk7Ci0gICAgICAgIE1vY2tLZXlndWFyZFNjcmVlbiBsb2NrU2NyZWVuID0gbUxQS1YuZ2V0SW5qZWN0ZWRMb2NrU2NyZWVucygpLmdldCgwKTsKLSAgICAgICAgTW9ja0tleWd1YXJkU2NyZWVuIHVubG9ja1NjcmVlbiA9IG1MUEtWLmdldEluamVjdGVkVW5sb2NrU2NyZWVucygpLmdldCgwKTsKLQotICAgICAgICAvLyBsb2NrIHNjcmVlbiBzaG91bGQgYmUgb25seSB2aXNpYmxlIG9uZQotICAgICAgICBhc3NlcnRFcXVhbHMoVmlldy5WSVNJQkxFLCBsb2NrU2NyZWVuLmdldFZpc2liaWxpdHkoKSk7Ci0gICAgICAgIGFzc2VydEVxdWFscyhWaWV3LkdPTkUsIHVubG9ja1NjcmVlbi5nZXRWaXNpYmlsaXR5KCkpOwotCi0gICAgICAgIC8vIG9uIHJlc3VtZSBub3QgY2FsbGVkIHVudGlsIHNjcmVlbiB0dXJucyBvbgotICAgICAgICBhc3NlcnRFcXVhbHMoMCwgbG9ja1NjcmVlbi5nZXRPblBhdXNlQ291bnQoKSk7Ci0gICAgICAgIGFzc2VydEVxdWFscygwLCBsb2NrU2NyZWVuLmdldE9uUmVzdW1lQ291bnQoKSk7Ci0gICAgICAgIGFzc2VydEVxdWFscygwLCBsb2NrU2NyZWVuLmdldENsZWFudXBDb3VudCgpKTsKLQotICAgICAgICBhc3NlcnRFcXVhbHMoMCwgdW5sb2NrU2NyZWVuLmdldE9uUGF1c2VDb3VudCgpKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIHVubG9ja1NjcmVlbi5nZXRPblJlc3VtZUNvdW50KCkpOwotICAgICAgICBhc3NlcnRFcXVhbHMoMCwgdW5sb2NrU2NyZWVuLmdldENsZWFudXBDb3VudCgpKTsKLQotICAgICAgICAvLyBzaW11bGF0ZSBzY3JlZW4gdHVybmluZyBvbgotICAgICAgICBtTFBLVi5vblNjcmVlblR1cm5lZE9uKCk7Ci0KLSAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIGxvY2tTY3JlZW4uZ2V0T25QYXVzZUNvdW50KCkpOwotICAgICAgICBhc3NlcnRFcXVhbHMoMSwgbG9ja1NjcmVlbi5nZXRPblJlc3VtZUNvdW50KCkpOwotICAgICAgICBhc3NlcnRFcXVhbHMoMCwgbG9ja1NjcmVlbi5nZXRDbGVhbnVwQ291bnQoKSk7Ci0KLSAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIHVubG9ja1NjcmVlbi5nZXRPblBhdXNlQ291bnQoKSk7Ci0gICAgICAgIGFzc2VydEVxdWFscygwLCB1bmxvY2tTY3JlZW4uZ2V0T25SZXN1bWVDb3VudCgpKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIHVubG9ja1NjcmVlbi5nZXRDbGVhbnVwQ291bnQoKSk7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgdGVzdFdva2VuQnlNZW51S2V5V2hlblBhdHRlcm5TZXQoKSB7Ci0gICAgICAgIGFzc2VydEVxdWFscyh0cnVlLCBtTG9ja1BhdHRlcm5VdGlscy5pc0xvY2tQYXR0ZXJuRW5hYmxlZCgpKTsKLQotICAgICAgICBtTFBLVi53YWtlV2hlblJlYWR5VHEoS2V5RXZlbnQuS0VZQ09ERV9NRU5VKTsKLQotICAgICAgICAvLyBzaG91bGQgaGF2ZSBwb2tlZCB0aGUgd2FrZWxvY2sgdG8gdHVybiBvbiB0aGUgc2NyZWVuCi0gICAgICAgIGFzc2VydEVxdWFscygxLCBtS2V5Z3VhcmRWaWV3Q2FsbGJhY2suZ2V0UG9rZVdha2Vsb2NrQ291bnQoKSk7Ci0KLSAgICAgICAgLy8gc2hvdWxkbid0IGJlIGFueSBhZGRpdGlvbmFsIHZpZXdzIGNyZWF0ZWQKLSAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIG1MUEtWLmdldEluamVjdGVkTG9ja1NjcmVlbnMoKS5zaXplKCkpOwotICAgICAgICBhc3NlcnRFcXVhbHMoMSwgbUxQS1YuZ2V0SW5qZWN0ZWRVbmxvY2tTY3JlZW5zKCkuc2l6ZSgpKTsKLSAgICAgICAgTW9ja0tleWd1YXJkU2NyZWVuIGxvY2tTY3JlZW4gPSBtTFBLVi5nZXRJbmplY3RlZExvY2tTY3JlZW5zKCkuZ2V0KDApOwotICAgICAgICBNb2NrS2V5Z3VhcmRTY3JlZW4gdW5sb2NrU2NyZWVuID0gbUxQS1YuZ2V0SW5qZWN0ZWRVbmxvY2tTY3JlZW5zKCkuZ2V0KDApOwotCi0gICAgICAgIC8vIHVubG9jayBzY3JlZW4gc2hvdWxkIGJlIG9ubHkgdmlzaWJsZSBvbmUKLSAgICAgICAgYXNzZXJ0RXF1YWxzKFZpZXcuR09ORSwgbG9ja1NjcmVlbi5nZXRWaXNpYmlsaXR5KCkpOwotICAgICAgICBhc3NlcnRFcXVhbHMoVmlldy5WSVNJQkxFLCB1bmxvY2tTY3JlZW4uZ2V0VmlzaWJpbGl0eSgpKTsKLSAgICB9Ci0KLSAgICBwdWJsaWMgdm9pZCB0ZXN0U2NyZWVuUmVxdWVzdHNSZWNyZWF0aW9uKCkgewotICAgICAgICBtTFBLVi53YWtlV2hlblJlYWR5VHEoMCk7Ci0gICAgICAgIG1MUEtWLm9uU2NyZWVuVHVybmVkT24oKTsKLQotICAgICAgICBhc3NlcnRFcXVhbHMoMSwgbUxQS1YuZ2V0SW5qZWN0ZWRMb2NrU2NyZWVucygpLnNpemUoKSk7Ci0gICAgICAgIGFzc2VydEVxdWFscygxLCBtTFBLVi5nZXRJbmplY3RlZFVubG9ja1NjcmVlbnMoKS5zaXplKCkpOwotICAgICAgICBNb2NrS2V5Z3VhcmRTY3JlZW4gbG9ja1NjcmVlbiA9IG1MUEtWLmdldEluamVjdGVkTG9ja1NjcmVlbnMoKS5nZXQoMCk7Ci0KLSAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIGxvY2tTY3JlZW4uZ2V0T25QYXVzZUNvdW50KCkpOwotICAgICAgICBhc3NlcnRFcXVhbHMoMSwgbG9ja1NjcmVlbi5nZXRPblJlc3VtZUNvdW50KCkpOwotCi0gICAgICAgIC8vIHNpbXVsYXRlIHNjcmVlbiBhc2tpbmcgdG8gYmUgcmVjcmVhdGVkCi0gICAgICAgIG1MUEtWLm1LZXlndWFyZFNjcmVlbkNhbGxiYWNrLnJlY3JlYXRlTWUobmV3IENvbmZpZ3VyYXRpb24oKSk7Ci0KLSAgICAgICAgLy8gc2hvdWxkIGhhdmUgYmVlbiByZWNyZWF0ZWQKLSAgICAgICAgYXNzZXJ0RXF1YWxzKDIsIG1MUEtWLmdldEluamVjdGVkTG9ja1NjcmVlbnMoKS5zaXplKCkpOwotICAgICAgICBhc3NlcnRFcXVhbHMoMiwgbUxQS1YuZ2V0SW5qZWN0ZWRVbmxvY2tTY3JlZW5zKCkuc2l6ZSgpKTsKLQotICAgICAgICAvLyBib3RoIG9sZCBzY3JlZW5zIHNob3VsZCBoYXZlIGJlZW4gY2xlYW5lZCB1cAotICAgICAgICBhc3NlcnRFcXVhbHMoMSwgbUxQS1YuZ2V0SW5qZWN0ZWRMb2NrU2NyZWVucygpLmdldCgwKS5nZXRDbGVhbnVwQ291bnQoKSk7Ci0gICAgICAgIGFzc2VydEVxdWFscygxLCBtTFBLVi5nZXRJbmplY3RlZFVubG9ja1NjcmVlbnMoKS5nZXQoMCkuZ2V0Q2xlYW51cENvdW50KCkpOwotCi0gICAgICAgIC8vIG9sZCBsb2NrIHNjcmVlbiBzaG91bGQgaGF2ZSBiZWVuIHBhdXNlZAotICAgICAgICBhc3NlcnRFcXVhbHMoMSwgbUxQS1YuZ2V0SW5qZWN0ZWRMb2NrU2NyZWVucygpLmdldCgwKS5nZXRPblBhdXNlQ291bnQoKSk7Ci0gICAgICAgIGFzc2VydEVxdWFscygwLCBtTFBLVi5nZXRJbmplY3RlZFVubG9ja1NjcmVlbnMoKS5nZXQoMCkuZ2V0T25QYXVzZUNvdW50KCkpOwotCi0gICAgICAgIC8vIG5ldyBsb2NrIHNjcmVlbiBzaG91bGQgaGF2ZSBiZWVuIHJlc3VtZWQKLSAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIG1MUEtWLmdldEluamVjdGVkTG9ja1NjcmVlbnMoKS5nZXQoMSkuZ2V0T25SZXN1bWVDb3VudCgpKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKDAsIG1MUEtWLmdldEluamVjdGVkVW5sb2NrU2NyZWVucygpLmdldCgxKS5nZXRPblJlc3VtZUNvdW50KCkpOwotICAgIH0KLQotICAgIHB1YmxpYyB2b2lkIHRlc3RNZW51RG9lc250R29Ub1VubG9ja1NjcmVlbk9uV2FrZVdoZW5QdWtMb2NrZWQoKSB7Ci0gICAgICAgIC8vIFBVSyBsb2NrZWQKLSAgICAgICAgbVVwZGF0ZU1vbml0b3Iuc2ltU3RhdGUgPSBJY2NDYXJkLlN0YXRlLlBVS19SRVFVSVJFRDsKLQotICAgICAgICAvLyB3YWtlIGJ5IG1lbnUKLSAgICAgICAgbUxQS1Yud2FrZVdoZW5SZWFkeVRxKEtleUV2ZW50LktFWUNPREVfTUVOVSk7Ci0KLSAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIG1MUEtWLmdldEluamVjdGVkTG9ja1NjcmVlbnMoKS5zaXplKCkpOwotICAgICAgICBhc3NlcnRFcXVhbHMoMSwgbUxQS1YuZ2V0SW5qZWN0ZWRVbmxvY2tTY3JlZW5zKCkuc2l6ZSgpKTsKLSAgICAgICAgTW9ja0tleWd1YXJkU2NyZWVuIGxvY2tTY3JlZW4gPSBtTFBLVi5nZXRJbmplY3RlZExvY2tTY3JlZW5zKCkuZ2V0KDApOwotICAgICAgICBNb2NrS2V5Z3VhcmRTY3JlZW4gdW5sb2NrU2NyZWVuID0gbUxQS1YuZ2V0SW5qZWN0ZWRVbmxvY2tTY3JlZW5zKCkuZ2V0KDApOwotCi0gICAgICAgIC8vIGxvY2sgc2NyZWVuIHNob3VsZCBiZSBvbmx5IHZpc2libGUgb25lCi0gICAgICAgIGFzc2VydEVxdWFscyhWaWV3LlZJU0lCTEUsIGxvY2tTY3JlZW4uZ2V0VmlzaWJpbGl0eSgpKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKFZpZXcuR09ORSwgdW5sb2NrU2NyZWVuLmdldFZpc2liaWxpdHkoKSk7Ci0gICAgfQotCi0gICAgcHVibGljIHZvaWQgdGVzdE1lbnVHb2VzVG9Mb2NrU2NyZWVuV2hlbkRldmljZU5vdFNlY3VyZSgpIHsKLSAgICAgICAgbUxvY2tQYXR0ZXJuVXRpbHMuc2V0TG9ja1BhdHRlcm5FbmFibGVkKGZhbHNlKTsKLQotICAgICAgICAvLyB3YWtlIGJ5IG1lbnUKLSAgICAgICAgbUxQS1Yud2FrZVdoZW5SZWFkeVRxKEtleUV2ZW50LktFWUNPREVfTUVOVSk7Ci0KLSAgICAgICAgYXNzZXJ0RXF1YWxzKDEsIG1MUEtWLmdldEluamVjdGVkTG9ja1NjcmVlbnMoKS5zaXplKCkpOwotICAgICAgICBhc3NlcnRFcXVhbHMoMSwgbUxQS1YuZ2V0SW5qZWN0ZWRVbmxvY2tTY3JlZW5zKCkuc2l6ZSgpKTsKLSAgICAgICAgTW9ja0tleWd1YXJkU2NyZWVuIGxvY2tTY3JlZW4gPSBtTFBLVi5nZXRJbmplY3RlZExvY2tTY3JlZW5zKCkuZ2V0KDApOwotICAgICAgICBNb2NrS2V5Z3VhcmRTY3JlZW4gdW5sb2NrU2NyZWVuID0gbUxQS1YuZ2V0SW5qZWN0ZWRVbmxvY2tTY3JlZW5zKCkuZ2V0KDApOwotCi0gICAgICAgIC8vIGxvY2sgc2NyZWVuIHNob3VsZCBiZSBvbmx5IHZpc2libGUgb25lCi0gICAgICAgIGFzc2VydEVxdWFscyhWaWV3LlZJU0lCTEUsIGxvY2tTY3JlZW4uZ2V0VmlzaWJpbGl0eSgpKTsKLSAgICAgICAgYXNzZXJ0RXF1YWxzKFZpZXcuR09ORSwgdW5sb2NrU2NyZWVuLmdldFZpc2liaWxpdHkoKSk7Ci0gICAgfQotfQpkaWZmIC0tZ2l0IGEvdG9vbHMvYWFwdC9BYXB0QXNzZXRzLmNwcCBiL3Rvb2xzL2FhcHQvQWFwdEFzc2V0cy5jcHAKaW5kZXggZWZjOTYxOS4uZDZjZmIxMiAxMDA2NDQKLS0tIGEvdG9vbHMvYWFwdC9BYXB0QXNzZXRzLmNwcAorKysgYi90b29scy9hYXB0L0FhcHRBc3NldHMuY3BwCkBAIC03NjYsNiArNzY2LDExIEBACiAgICAgICAgICAgICAgICAgKG91dC0+c2NyZWVuTGF5b3V0Jn5SZXNUYWJsZV9jb25maWc6Ok1BU0tfU0NSRUVOU0laRSkKICAgICAgICAgICAgICAgICB8IFJlc1RhYmxlX2NvbmZpZzo6U0NSRUVOU0laRV9MQVJHRTsKICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfSBlbHNlIGlmIChzdHJjbXAobmFtZSwgInhsYXJnZSIpID09IDApIHsKKyAgICAgICAgaWYgKG91dCkgb3V0LT5zY3JlZW5MYXlvdXQgPQorICAgICAgICAgICAgICAgIChvdXQtPnNjcmVlbkxheW91dCZ+UmVzVGFibGVfY29uZmlnOjpNQVNLX1NDUkVFTlNJWkUpCisgICAgICAgICAgICAgICAgfCBSZXNUYWJsZV9jb25maWc6OlNDUkVFTlNJWkVfWExBUkdFOworICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICByZXR1cm4gZmFsc2U7CmRpZmYgLS1naXQgYS90b29scy9hYXB0L1Jlc291cmNlVGFibGUuY3BwIGIvdG9vbHMvYWFwdC9SZXNvdXJjZVRhYmxlLmNwcAppbmRleCBhMmYwODVhLi43NTViOTNiIDEwMDY0NAotLS0gYS90b29scy9hYXB0L1Jlc291cmNlVGFibGUuY3BwCisrKyBiL3Rvb2xzL2FhcHQvUmVzb3VyY2VUYWJsZS5jcHAKQEAgLTU3Myw2ICs1NzMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nMTYmIHBhcmVudElkZW50LAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nMTYmIGl0ZW1JZGVudCwKICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgY3VyRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0Zvcm1hdHRlZCwKICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHNldWRvbG9jYWxpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBib29sIG92ZXJ3cml0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlVGFibGUqIG91dFRhYmxlKQpAQCAtNTgzLDcgKzU4NCw3IEBACiAgICAgU3RyaW5nMTYgc3RyOwogICAgIFZlY3RvcjxTdHJpbmdQb29sOjplbnRyeV9zdHlsZV9zcGFuPiBzcGFuczsKICAgICBlcnIgPSBwYXJzZVN0eWxlZFN0cmluZyhidW5kbGUsIGluLT5nZXRQcmludGFibGVTb3VyY2UoKS5zdHJpbmcoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9jaywgaXRlbTE2LCAmc3RyLCAmc3BhbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2ssIGl0ZW0xNiwgJnN0ciwgJnNwYW5zLCBpc0Zvcm1hdHRlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwc2V1ZG9sb2NhbGl6ZSk7CiAgICAgaWYgKGVyciAhPSBOT19FUlJPUikgewogICAgICAgICByZXR1cm4gZXJyOwpAQCAtNjE2LDYgKzYxNyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcxNiYgY3VyVGFnLAogICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjdXJJc1N0eWxlZCwKICAgICAgICAgICAgICAgICAgICAgICAgIGludDMyX3QgY3VyRm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0Zvcm1hdHRlZCwKICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHNldWRvbG9jYWxpemUsCiAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBib29sIG92ZXJ3cml0ZSwKICAgICAgICAgICAgICAgICAgICAgICAgIFJlc291cmNlVGFibGUqIG91dFRhYmxlKQpAQCAtNjI2LDcgKzYyOCw3IEBACiAgICAgVmVjdG9yPFN0cmluZ1Bvb2w6OmVudHJ5X3N0eWxlX3NwYW4+IHNwYW5zOwogICAgIGVyciA9IHBhcnNlU3R5bGVkU3RyaW5nKGJ1bmRsZSwgaW4tPmdldFByaW50YWJsZVNvdXJjZSgpLnN0cmluZygpLCBibG9jaywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJUYWcsICZzdHIsIGN1cklzU3R5bGVkID8gJnNwYW5zIDogTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwc2V1ZG9sb2NhbGl6ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNGb3JtYXR0ZWQsIHBzZXVkb2xvY2FsaXplKTsKIAogICAgIGlmIChlcnIgPCBOT19FUlJPUikgeyAKICAgICAgICAgcmV0dXJuIGVycjsKQEAgLTcwOSwxMiArNzExLDE4IEBACiAgICAgLy8gdXNlZnVsIGF0dHJpYnV0ZSBuYW1lcyBhbmQgc3BlY2lhbCB2YWx1ZXMKICAgICBjb25zdCBTdHJpbmcxNiBuYW1lMTYoIm5hbWUiKTsKICAgICBjb25zdCBTdHJpbmcxNiB0cmFuc2xhdGFibGUxNigidHJhbnNsYXRhYmxlIik7CisgICAgY29uc3QgU3RyaW5nMTYgZm9ybWF0dGVkMTYoImZvcm1hdHRlZCIpOwogICAgIGNvbnN0IFN0cmluZzE2IGZhbHNlMTYoImZhbHNlIik7CiAKICAgICBjb25zdCBTdHJpbmcxNiBteVBhY2thZ2UoYXNzZXRzLT5nZXRQYWNrYWdlKCkpOwogCiAgICAgYm9vbCBoYXNFcnJvcnMgPSBmYWxzZTsKLSAgICAKKworICAgIGJvb2wgZmlsZUlzVHJhbnNsYXRhYmxlID0gdHJ1ZTsKKyAgICBpZiAoc3Ryc3RyKGluLT5nZXRQcmludGFibGVTb3VyY2UoKS5zdHJpbmcoKSwgImRvbm90dHJhbnNsYXRlIikgIT0gTlVMTCkgeworICAgICAgICBmaWxlSXNUcmFuc2xhdGFibGUgPSBmYWxzZTsKKyAgICB9CisKICAgICBEZWZhdWx0S2V5ZWRWZWN0b3I8U3RyaW5nMTYsIHVpbnQzMl90PiBuZXh0UHVibGljSWQoMCk7CiAKICAgICBSZXNYTUxUcmVlOjpldmVudF9jb2RlX3QgY29kZTsKQEAgLTc1MSw2ICs3NTksNyBAQAogICAgICAgICAgICAgYm9vbCBjdXJJc0JhZ1JlcGxhY2VPbk92ZXJ3cml0ZSA9IGZhbHNlOwogICAgICAgICAgICAgYm9vbCBjdXJJc1N0eWxlZCA9IGZhbHNlOwogICAgICAgICAgICAgYm9vbCBjdXJJc1BzZXVkb2xvY2FsaXphYmxlID0gZmFsc2U7CisgICAgICAgICAgICBib29sIGN1cklzRm9ybWF0dGVkID0gZmlsZUlzVHJhbnNsYXRhYmxlOwogICAgICAgICAgICAgYm9vbCBsb2NhbEhhc0Vycm9ycyA9IGZhbHNlOwogCiAgICAgICAgICAgICBpZiAoc3RyY21wMTYoYmxvY2suZ2V0RWxlbWVudE5hbWUoJmxlbiksIHNraXAxNi5zdHJpbmcoKSkgPT0gMCkgewpAQCAtMTEzNiw2ICsxMTQ1LDcgQEAKICAgICAgICAgICAgICAgICBTdHJpbmc4IGxvY2FsZShyYXdMb2NhbGUpOwogICAgICAgICAgICAgICAgIFN0cmluZzE2IG5hbWU7CiAgICAgICAgICAgICAgICAgU3RyaW5nMTYgdHJhbnNsYXRhYmxlOworICAgICAgICAgICAgICAgIFN0cmluZzE2IGZvcm1hdHRlZDsKIAogICAgICAgICAgICAgICAgIHNpemVfdCBuID0gYmxvY2suZ2V0QXR0cmlidXRlQ291bnQoKTsKICAgICAgICAgICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG47IGkrKykgewpAQCAtMTE0NSwxMSArMTE1NSwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgbmFtZS5zZXRUbyhibG9jay5nZXRBdHRyaWJ1dGVTdHJpbmdWYWx1ZShpLCAmbGVuZ3RoKSk7CiAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RyY21wMTYoYXR0ciwgdHJhbnNsYXRhYmxlMTYuc3RyaW5nKCkpID09IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0YWJsZS5zZXRUbyhibG9jay5nZXRBdHRyaWJ1dGVTdHJpbmdWYWx1ZShpLCAmbGVuZ3RoKSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RyY21wMTYoYXR0ciwgZm9ybWF0dGVkMTYuc3RyaW5nKCkpID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZC5zZXRUbyhibG9jay5nZXRBdHRyaWJ1dGVTdHJpbmdWYWx1ZShpLCAmbGVuZ3RoKSk7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgaWYgKG5hbWUuc2l6ZSgpID4gMCkgewogICAgICAgICAgICAgICAgICAgICBpZiAodHJhbnNsYXRhYmxlID09IGZhbHNlMTYpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGN1cklzRm9ybWF0dGVkID0gZmFsc2U7CiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBVbnRyYW5zbGF0YWJsZSBzdHJpbmdzIG11c3Qgb25seSBleGlzdCBpbiB0aGUgZGVmYXVsdCBbZW1wdHldIGxvY2FsZQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGxvY2FsZS5zaXplKCkgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJhYXB0OiB3YXJuaW5nOiBzdHJpbmcgJyVzJyBpbiAlcyBtYXJrZWQgdW50cmFuc2xhdGFibGUgYnV0IGV4aXN0cyIKQEAgLTExNjcsNiArMTE4MCwxMCBAQAogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgb3V0VGFibGUtPmFkZExvY2FsaXphdGlvbihuYW1lLCBsb2NhbGUpOwogICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGZvcm1hdHRlZCA9PSBmYWxzZTE2KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjdXJJc0Zvcm1hdHRlZCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgY3VyVGFnID0gJnN0cmluZzE2OwpAQCAtMTM1Niw3ICsxMzczLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLmdldFBvc2l0aW9uKCZwYXJzZXJQb3NpdGlvbik7CiAKICAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9IHBhcnNlQW5kQWRkQmFnKGJ1bmRsZSwgaW4sICZibG9jaywgY3VyUGFyYW1zLCBteVBhY2thZ2UsIGN1clR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlkZW50LCBwYXJlbnRJZGVudCwgaXRlbUlkZW50LCBjdXJGb3JtYXQsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZGVudCwgcGFyZW50SWRlbnQsIGl0ZW1JZGVudCwgY3VyRm9ybWF0LCBjdXJJc0Zvcm1hdHRlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIG92ZXJ3cml0ZSwgb3V0VGFibGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVyciA9PSBOT19FUlJPUikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjdXJJc1BzZXVkb2xvY2FsaXphYmxlICYmIGxvY2FsZUlzRGVmaW5lZChjdXJQYXJhbXMpCkBAIC0xMzY1LDggKzEzODIsOCBAQAogI2lmIDEKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxvY2suc2V0UG9zaXRpb24ocGFyc2VyUG9zaXRpb24pOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSBwYXJzZUFuZEFkZEJhZyhidW5kbGUsIGluLCAmYmxvY2ssIHBzZXVkb1BhcmFtcywgbXlQYWNrYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1clR5cGUsIGlkZW50LCBwYXJlbnRJZGVudCwgaXRlbUlkZW50LCBjdXJGb3JtYXQsIHRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3ZlcndyaXRlLCBvdXRUYWJsZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyVHlwZSwgaWRlbnQsIHBhcmVudElkZW50LCBpdGVtSWRlbnQsIGN1ckZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJJc0Zvcm1hdHRlZCwgdHJ1ZSwgb3ZlcndyaXRlLCBvdXRUYWJsZSk7CiAjZW5kaWYKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICB9IApAQCAtMTM4OSw3ICsxNDA2LDggQEAKICAgICAgICAgICAgICAgICBibG9jay5nZXRQb3NpdGlvbigmcGFyc2VyUG9zaXRpb24pOwogCiAgICAgICAgICAgICAgICAgZXJyID0gcGFyc2VBbmRBZGRFbnRyeShidW5kbGUsIGluLCAmYmxvY2ssIGN1clBhcmFtcywgbXlQYWNrYWdlLCBjdXJUeXBlLCBpZGVudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICpjdXJUYWcsIGN1cklzU3R5bGVkLCBjdXJGb3JtYXQsIGZhbHNlLCBvdmVyd3JpdGUsIG91dFRhYmxlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICpjdXJUYWcsIGN1cklzU3R5bGVkLCBjdXJGb3JtYXQsIGN1cklzRm9ybWF0dGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgZmFsc2UsIG92ZXJ3cml0ZSwgb3V0VGFibGUpOwogCiAgICAgICAgICAgICAgICAgaWYgKGVyciA8IE5PX0VSUk9SKSB7IC8vIFdoeSBlcnIgPCBOT19FUlJPUiBpbnN0ZWFkIG9mIGVyciAhPSBOT19FUlJPUj8KICAgICAgICAgICAgICAgICAgICAgaGFzRXJyb3JzID0gbG9jYWxIYXNFcnJvcnMgPSB0cnVlOwpAQCAtMTQwMCw3ICsxNDE4LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIHBzZXVkb2xvY2FsaXplIGhlcmUKICAgICAgICAgICAgICAgICAgICAgICAgIGJsb2NrLnNldFBvc2l0aW9uKHBhcnNlclBvc2l0aW9uKTsKICAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9IHBhcnNlQW5kQWRkRW50cnkoYnVuZGxlLCBpbiwgJmJsb2NrLCBwc2V1ZG9QYXJhbXMsIG15UGFja2FnZSwgY3VyVHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnQsICpjdXJUYWcsIGN1cklzU3R5bGVkLCBjdXJGb3JtYXQsIHRydWUsIG92ZXJ3cml0ZSwgb3V0VGFibGUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZGVudCwgKmN1clRhZywgY3VySXNTdHlsZWQsIGN1ckZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VySXNGb3JtYXR0ZWQsIHRydWUsIG92ZXJ3cml0ZSwgb3V0VGFibGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGVyciAhPSBOT19FUlJPUikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc0Vycm9ycyA9IGxvY2FsSGFzRXJyb3JzID0gdHJ1ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL3Rvb2xzL2FhcHQvWE1MTm9kZS5jcHAgYi90b29scy9hYXB0L1hNTE5vZGUuY3BwCmluZGV4IDRjNTkyODguLjU3ZmY0N2EgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2FhcHQvWE1MTm9kZS5jcHAKKysrIGIvdG9vbHMvYWFwdC9YTUxOb2RlLmNwcApAQCAtNjgsMTIgKzY4LDExOCBAQAogICAgIHJldHVybiBTdHJpbmcxNihuYW1lc3BhY2VVcmksIG5hbWVzcGFjZVVyaS5zaXplKCktcHJlZml4U2l6ZSwgcHJlZml4U2l6ZSk7CiB9CiAKK3N0YXR1c190IGhhc1N1YnN0aXR1dGlvbkVycm9ycyhjb25zdCBjaGFyKiBmaWxlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZXNYTUxUcmVlKiBpblhtbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcxNiBzdHIxNikKK3sKKyAgICBjb25zdCBjaGFyMTZfdCogc3RyID0gc3RyMTYuc3RyaW5nKCk7CisgICAgY29uc3QgY2hhcjE2X3QqIHAgPSBzdHI7CisgICAgY29uc3QgY2hhcjE2X3QqIGVuZCA9IHN0ciArIHN0cjE2LnNpemUoKTsKKworICAgIGJvb2wgbm9ucG9zaXRpb25hbCA9IGZhbHNlOworICAgIGludCBhcmdDb3VudCA9IDA7CisKKyAgICB3aGlsZSAocCA8IGVuZCkgeworICAgICAgICAvKgorICAgICAgICAgKiBMb29rIGZvciB0aGUgc3RhcnQgb2YgYSBKYXZhLXN0eWxlIHN1YnN0aXR1dGlvbiBzZXF1ZW5jZS4KKyAgICAgICAgICovCisgICAgICAgIGlmICgqcCA9PSAnJScgJiYgcCArIDEgPCBlbmQpIHsKKyAgICAgICAgICAgIHArKzsKKworICAgICAgICAgICAgLy8gQSBsaXRlcmFsIHBlcmNlbnQgc2lnbiByZXByZXNlbnRlZCBieSAlJQorICAgICAgICAgICAgaWYgKCpwID09ICclJykgeworICAgICAgICAgICAgICAgIHArKzsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYXJnQ291bnQrKzsKKworICAgICAgICAgICAgaWYgKCpwID49ICcwJyAmJiAqcCA8PSAnOScpIHsKKyAgICAgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgICAgIHArKzsKKyAgICAgICAgICAgICAgICB9IHdoaWxlICgqcCA+PSAnMCcgJiYgKnAgPD0gJzknKTsKKyAgICAgICAgICAgICAgICBpZiAoKnAgIT0gJyQnKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRoaXMgbXVzdCBiZSBhIHNpemUgc3BlY2lmaWNhdGlvbiBpbnN0ZWFkIG9mIHBvc2l0aW9uLgorICAgICAgICAgICAgICAgICAgICBub25wb3NpdGlvbmFsID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgaWYgKCpwID09ICc8JykgeworICAgICAgICAgICAgICAgIC8vIFJldXNpbmcgbGFzdCBhcmd1bWVudDsgYmFkIGlkZWEgc2luY2UgaXQgY2FuIGJlIHJlLWFycmFuZ2VkLgorICAgICAgICAgICAgICAgIG5vbnBvc2l0aW9uYWwgPSB0cnVlOworICAgICAgICAgICAgICAgIHArKzsKKworICAgICAgICAgICAgICAgIC8vIE9wdGlvbmFsbHkgJyQnIGNhbiBiZSBzcGVjaWZpZWQgYXQgdGhlIGVuZC4KKyAgICAgICAgICAgICAgICBpZiAocCA8IGVuZCAmJiAqcCA9PSAnJCcpIHsKKyAgICAgICAgICAgICAgICAgICAgcCsrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbm9ucG9zaXRpb25hbCA9IHRydWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIElnbm9yZSBmbGFncyBhbmQgd2lkdGhzCisgICAgICAgICAgICB3aGlsZSAocCA8IGVuZCAmJiAoKnAgPT0gJy0nIHx8CisgICAgICAgICAgICAgICAgICAgICpwID09ICcjJyB8fAorICAgICAgICAgICAgICAgICAgICAqcCA9PSAnKycgfHwKKyAgICAgICAgICAgICAgICAgICAgKnAgPT0gJyAnIHx8CisgICAgICAgICAgICAgICAgICAgICpwID09ICcsJyB8fAorICAgICAgICAgICAgICAgICAgICAqcCA9PSAnKCcgfHwKKyAgICAgICAgICAgICAgICAgICAgKCpwID49ICcwJyAmJiAqcCA8PSAnOScpKSkgeworICAgICAgICAgICAgICAgIHArKzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAqIFRoaXMgaXMgYSBzaG9ydGN1dCB0byBkZXRlY3Qgc3RyaW5ncyB0aGF0IGFyZSBnb2luZyB0byBUaW1lLmZvcm1hdCgpCisgICAgICAgICAgICAgKiBpbnN0ZWFkIG9mIFN0cmluZy5mb3JtYXQoKQorICAgICAgICAgICAgICoKKyAgICAgICAgICAgICAqIENvbXBhcmlzb24gb2YgU3RyaW5nLmZvcm1hdCgpIGFuZCBUaW1lLmZvcm1hdCgpIGFyZ3M6CisgICAgICAgICAgICAgKgorICAgICAgICAgICAgICogU3RyaW5nOiBBQkMgRSBHSCAgU1QgWCBhYmNkZWZnaCAgbm9zdCB4CisgICAgICAgICAgICAgKiAgIFRpbWU6ICAgIERFRkdIS01TIFcgWmEgIGQgICBoa20gIHMgdyB5egorICAgICAgICAgICAgICoKKyAgICAgICAgICAgICAqIFRoZXJlZm9yZSB3ZSBrbm93IGl0J3MgZGVmaW5pdGVseSBUaW1lIGlmIHdlIGhhdmU6CisgICAgICAgICAgICAgKiAgICAgREZLTVdaa213eXoKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgaWYgKHAgPCBlbmQpIHsKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKCpwKSB7CisgICAgICAgICAgICAgICAgY2FzZSAnRCc6CisgICAgICAgICAgICAgICAgY2FzZSAnRic6CisgICAgICAgICAgICAgICAgY2FzZSAnSyc6CisgICAgICAgICAgICAgICAgY2FzZSAnTSc6CisgICAgICAgICAgICAgICAgY2FzZSAnVyc6CisgICAgICAgICAgICAgICAgY2FzZSAnWic6CisgICAgICAgICAgICAgICAgY2FzZSAnayc6CisgICAgICAgICAgICAgICAgY2FzZSAnbSc6CisgICAgICAgICAgICAgICAgY2FzZSAndyc6CisgICAgICAgICAgICAgICAgY2FzZSAneSc6CisgICAgICAgICAgICAgICAgY2FzZSAneic6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOT19FUlJPUjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBwKys7CisgICAgfQorCisgICAgLyoKKyAgICAgKiBJZiB3ZSBoYXZlIG1vcmUgdGhhbiBvbmUgc3Vic3RpdHV0aW9uIGluIHRoaXMgc3RyaW5nIGFuZCBhbnkgb2YgdGhlbQorICAgICAqIGFyZSBub3QgaW4gcG9zaXRpb25hbCBmb3JtLCBnaXZlIHRoZSB1c2VyIGFuIGVycm9yLgorICAgICAqLworICAgIGlmIChhcmdDb3VudCA+IDEgJiYgbm9ucG9zaXRpb25hbCkgeworICAgICAgICBTb3VyY2VQb3MoU3RyaW5nOChmaWxlTmFtZSksIGluWG1sLT5nZXRMaW5lTnVtYmVyKCkpLmVycm9yKAorICAgICAgICAgICAgICAgICJNdWx0aXBsZSBzdWJzdGl0dXRpb25zIHNwZWNpZmllZCBpbiBub24tcG9zaXRpb25hbCBmb3JtYXQ7ICIKKyAgICAgICAgICAgICAgICAiZGlkIHlvdSBtZWFuIHRvIGFkZCB0aGUgZm9ybWF0dGVkPVwidHJ1ZVwiIGF0dHJpYnV0ZT9cbiIpOworICAgICAgICByZXR1cm4gTk9UX0VOT1VHSF9EQVRBOworICAgIH0KKworICAgIHJldHVybiBOT19FUlJPUjsKK30KKwogc3RhdHVzX3QgcGFyc2VTdHlsZWRTdHJpbmcoQnVuZGxlKiBidW5kbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmaWxlTmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlc1hNTFRyZWUqIGluWG1sLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nMTYmIGVuZFRhZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZzE2KiBvdXRTdHJpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZWN0b3I8U3RyaW5nUG9vbDo6ZW50cnlfc3R5bGVfc3Bhbj4qIG91dFNwYW5zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc0Zvcm1hdHRlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgcHNldWRvbG9jYWxpemUpCiB7CiAgICAgVmVjdG9yPFN0cmluZ1Bvb2w6OmVudHJ5X3N0eWxlX3NwYW4+IHNwYW5TdGFjazsKQEAgLTEwMSw3ICsyMDcsMTEgQEAKICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZyBwc2V1ZG8gPSBwc2V1ZG9sb2NhbGl6ZV9zdHJpbmcob3JpZyk7CiAgICAgICAgICAgICAgICAgY3VyU3RyaW5nLmFwcGVuZChTdHJpbmcxNihTdHJpbmc4KHBzZXVkby5jX3N0cigpKSkpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBjdXJTdHJpbmcuYXBwZW5kKHRleHQpOworICAgICAgICAgICAgICAgIGlmIChpc0Zvcm1hdHRlZCAmJiBoYXNTdWJzdGl0dXRpb25FcnJvcnMoZmlsZU5hbWUsIGluWG1sLCB0ZXh0KSAhPSBOT19FUlJPUikgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gVU5LTk9XTl9FUlJPUjsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBjdXJTdHJpbmcuYXBwZW5kKHRleHQpOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlmIChjb2RlID09IFJlc1hNTFRyZWU6OlNUQVJUX1RBRykgewogICAgICAgICAgICAgY29uc3QgU3RyaW5nMTYgZWxlbWVudDE2KGluWG1sLT5nZXRFbGVtZW50TmFtZSgmbGVuKSk7CmRpZmYgLS1naXQgYS90b29scy9hYXB0L1hNTE5vZGUuaCBiL3Rvb2xzL2FhcHQvWE1MTm9kZS5oCmluZGV4IGU5YTI2M2IuLjA1NjI0YjcgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2FhcHQvWE1MTm9kZS5oCisrKyBiL3Rvb2xzL2FhcHQvWE1MTm9kZS5oCkBAIC0yNSw2ICsyNSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcxNiYgZW5kVGFnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nMTYqIG91dFN0cmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlY3RvcjxTdHJpbmdQb29sOjplbnRyeV9zdHlsZV9zcGFuPiogb3V0U3BhbnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlzRm9ybWF0dGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBpc1BzZXVkb2xvY2FsaXphYmxlKTsKIAogdm9pZCBwcmludFhNTEJsb2NrKFJlc1hNTFRyZWUqIGJsb2NrKTsKZGlmZiAtLWdpdCBhL3Rvb2xzL2FpZGwvYWlkbC5jcHAgYi90b29scy9haWRsL2FpZGwuY3BwCmluZGV4IGZjNjU4ZjUuLmYxN2Y2NmIgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2FpZGwvYWlkbC5jcHAKKysrIGIvdG9vbHMvYWlkbC9haWRsLmNwcApAQCAtNTUsNyArNTUsNyBAQAogICAgICAgICAgICAgcHJpbnRmKCJwYXJjZWxhYmxlICVzICVzO1xuIiwgYi0+cGFja2FnZSwgYi0+bmFtZS5kYXRhKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIHByaW50ZigiVU5LTk9XTiBkPTB4JTA4eCBkLT5pdGVtX3R5cGU9JWxkXG4iLCAobG9uZylkLCBkLT5pdGVtX3R5cGUpOworICAgICAgICAgICAgcHJpbnRmKCJVTktOT1dOIGQ9MHglMDhseCBkLT5pdGVtX3R5cGU9JWRcbiIsIChsb25nKWQsIGQtPml0ZW1fdHlwZSk7CiAgICAgICAgIH0KICAgICAgICAgZCA9IGQtPm5leHQ7CiAgICAgfQpkaWZmIC0tZ2l0IGEvdG9vbHMvbGF5b3V0bGliL2JyaWRnZS9zcmMvY29tL2FuZHJvaWQvbGF5b3V0bGliL2JyaWRnZS9CcmlkZ2UuamF2YSBiL3Rvb2xzL2xheW91dGxpYi9icmlkZ2Uvc3JjL2NvbS9hbmRyb2lkL2xheW91dGxpYi9icmlkZ2UvQnJpZGdlLmphdmEKaW5kZXggNDIwMWU4MC4uZjkxZjYwMSAxMDA2NDQKLS0tIGEvdG9vbHMvbGF5b3V0bGliL2JyaWRnZS9zcmMvY29tL2FuZHJvaWQvbGF5b3V0bGliL2JyaWRnZS9CcmlkZ2UuamF2YQorKysgYi90b29scy9sYXlvdXRsaWIvYnJpZGdlL3NyYy9jb20vYW5kcm9pZC9sYXlvdXRsaWIvYnJpZGdlL0JyaWRnZS5qYXZhCkBAIC00Niw2ICs0Niw3IEBACiBpbXBvcnQgYW5kcm9pZC51dGlsLkRpc3BsYXlNZXRyaWNzOwogaW1wb3J0IGFuZHJvaWQudXRpbC5UeXBlZFZhbHVlOwogaW1wb3J0IGFuZHJvaWQudmlldy5CcmlkZ2VJbmZsYXRlcjsKK2ltcG9ydCBhbmRyb2lkLnZpZXcuSW5wdXRDaGFubmVsOwogaW1wb3J0IGFuZHJvaWQudmlldy5JV2luZG93OwogaW1wb3J0IGFuZHJvaWQudmlldy5JV2luZG93U2Vzc2lvbjsKIGltcG9ydCBhbmRyb2lkLnZpZXcuS2V5RXZlbnQ7CkBAIC05OTAsMTMgKzk5MSwyMSBAQAogICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGNsYXNzIFdpbmRvd1Nlc3Npb24gaW1wbGVtZW50cyBJV2luZG93U2Vzc2lvbiB7CiAKICAgICAgICAgQFN1cHByZXNzV2FybmluZ3MoInVudXNlZCIpCi0gICAgICAgIHB1YmxpYyBpbnQgYWRkKElXaW5kb3cgYXJnMCwgTGF5b3V0UGFyYW1zIGFyZzEsIGludCBhcmcyLCBSZWN0IGFyZzMpCisgICAgICAgIHB1YmxpYyBpbnQgYWRkKElXaW5kb3cgYXJnMCwgTGF5b3V0UGFyYW1zIGFyZzEsIGludCBhcmcyLCBSZWN0IGFyZzMsCisgICAgICAgICAgICAgICAgSW5wdXRDaGFubmVsIG91dElucHV0Y2hhbm5lbCkKICAgICAgICAgICAgICAgICB0aHJvd3MgUmVtb3RlRXhjZXB0aW9uIHsKICAgICAgICAgICAgIC8vIHBhc3MgZm9yIG5vdy4KICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAKICAgICAgICAgQFN1cHByZXNzV2FybmluZ3MoInVudXNlZCIpCisgICAgICAgIHB1YmxpYyBpbnQgYWRkV2l0aG91dElucHV0Q2hhbm5lbChJV2luZG93IGFyZzAsIExheW91dFBhcmFtcyBhcmcxLCBpbnQgYXJnMiwgUmVjdCBhcmczKQorICAgICAgICAgICAgICAgIHRocm93cyBSZW1vdGVFeGNlcHRpb24geworICAgICAgICAgICAgLy8gcGFzcyBmb3Igbm93LgorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIEBTdXBwcmVzc1dhcm5pbmdzKCJ1bnVzZWQiKQogICAgICAgICBwdWJsaWMgdm9pZCBmaW5pc2hEcmF3aW5nKElXaW5kb3cgYXJnMCkgdGhyb3dzIFJlbW90ZUV4Y2VwdGlvbiB7CiAgICAgICAgICAgICAvLyBwYXNzIGZvciBub3cuCiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL3Zwbi9qYXZhL2FuZHJvaWQvbmV0L3Zwbi9WcG5NYW5hZ2VyLmphdmEgYi92cG4vamF2YS9hbmRyb2lkL25ldC92cG4vVnBuTWFuYWdlci5qYXZhCmluZGV4IGNlNTIyYzguLmNlNDBiNWQgMTAwNjQ0Ci0tLSBhL3Zwbi9qYXZhL2FuZHJvaWQvbmV0L3Zwbi9WcG5NYW5hZ2VyLmphdmEKKysrIGIvdnBuL2phdmEvYW5kcm9pZC9uZXQvdnBuL1Zwbk1hbmFnZXIuamF2YQpAQCAtODUsNyArODUsOCBAQAogCiAgICAgLy8gVE9ETyhvYW0pOiBUZXN0IFZQTiB3aGVuIEVGUyBpcyBlbmFibGVkICh3aWxsIGRvIGxhdGVyKS4uLgogICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldFByb2ZpbGVQYXRoKCkgewotICAgICAgICByZXR1cm4gRW52aXJvbm1lbnQuZ2V0RGF0YURpcmVjdG9yeSgpLmdldFBhdGgoKSArIFBST0ZJTEVTX1BBVEg7CisgICAgICAgIC8vIFRoaXMgY2FsbCB3aWxsIHJldHVybiB0aGUgY29ycmVjdCBwYXRoIGlmIEVuY3J5cHRlZCBGUyBpcyBlbmFibGVkIG9yIG5vdC4KKyAgICAgICAgcmV0dXJuIEVudmlyb25tZW50LmdldFNlY3VyZURhdGFEaXJlY3RvcnkoKS5nZXRQYXRoKCkgKyBQUk9GSUxFU19QQVRIOwogICAgIH0KIAogICAgIC8qKgpkaWZmIC0tZ2l0IGEvd2lmaS9qYXZhL2FuZHJvaWQvbmV0L3dpZmkvSVdpZmlNYW5hZ2VyLmFpZGwgYi93aWZpL2phdmEvYW5kcm9pZC9uZXQvd2lmaS9JV2lmaU1hbmFnZXIuYWlkbAppbmRleCA1ZmQ0NGIxLi42ZTBiYzlkIDEwMDY0NAotLS0gYS93aWZpL2phdmEvYW5kcm9pZC9uZXQvd2lmaS9JV2lmaU1hbmFnZXIuYWlkbAorKysgYi93aWZpL2phdmEvYW5kcm9pZC9uZXQvd2lmaS9JV2lmaU1hbmFnZXIuYWlkbApAQCAtODMsNSArODMsNyBAQAogICAgIGludCBnZXRXaWZpQXBFbmFibGVkU3RhdGUoKTsKIAogICAgIFdpZmlDb25maWd1cmF0aW9uIGdldFdpZmlBcENvbmZpZ3VyYXRpb24oKTsKKworICAgIHZvaWQgc2V0V2lmaUFwQ29uZmlndXJhdGlvbihpbiBXaWZpQ29uZmlndXJhdGlvbiB3aWZpQ29uZmlnKTsKIH0KIApkaWZmIC0tZ2l0IGEvd2lmaS9qYXZhL2FuZHJvaWQvbmV0L3dpZmkvV2lmaU1hbmFnZXIuamF2YSBiL3dpZmkvamF2YS9hbmRyb2lkL25ldC93aWZpL1dpZmlNYW5hZ2VyLmphdmEKaW5kZXggOTcwZDVmYy4uNGEyMmI2OCAxMDA2NDQKLS0tIGEvd2lmaS9qYXZhL2FuZHJvaWQvbmV0L3dpZmkvV2lmaU1hbmFnZXIuamF2YQorKysgYi93aWZpL2phdmEvYW5kcm9pZC9uZXQvd2lmaS9XaWZpTWFuYWdlci5qYXZhCkBAIC04MjQsNiArODI0LDIxIEBACiAgICAgfQogCiAgICAgLyoqCisgICAgICogU2V0cyB0aGUgV2ktRmkgQVAgQ29uZmlndXJhdGlvbi4KKyAgICAgKiBAcmV0dXJuIHtAY29kZSB0cnVlfSBpZiB0aGUgb3BlcmF0aW9uIHN1Y2NlZWRlZCwge0Bjb2RlIGZhbHNlfSBvdGhlcndpc2UKKyAgICAgKgorICAgICAqIEBoaWRlIERvbnQgb3BlbiB5ZXQKKyAgICAgKi8KKyAgICBwdWJsaWMgYm9vbGVhbiBzZXRXaWZpQXBDb25maWd1cmF0aW9uKFdpZmlDb25maWd1cmF0aW9uIHdpZmlDb25maWcpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG1TZXJ2aWNlLnNldFdpZmlBcENvbmZpZ3VyYXRpb24od2lmaUNvbmZpZyk7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfSBjYXRjaCAoUmVtb3RlRXhjZXB0aW9uIGUpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgogICAgICAqIEFsbG93cyBhbiBhcHBsaWNhdGlvbiB0byBrZWVwIHRoZSBXaS1GaSByYWRpbyBhd2FrZS4KICAgICAgKiBOb3JtYWxseSB0aGUgV2ktRmkgcmFkaW8gbWF5IHR1cm4gb2ZmIHdoZW4gdGhlIHVzZXIgaGFzIG5vdCB1c2VkIHRoZSBkZXZpY2UgaW4gYSB3aGlsZS4KICAgICAgKiBBY3F1aXJpbmcgYSBXaWZpTG9jayB3aWxsIGtlZXAgdGhlIHJhZGlvIG9uIHVudGlsIHRoZSBsb2NrIGlzIHJlbGVhc2VkLiAgTXVsdGlwbGUgCmRpZmYgLS1naXQgYS93aWZpL2phdmEvYW5kcm9pZC9uZXQvd2lmaS9XaWZpU3RhdGVUcmFja2VyLmphdmEgYi93aWZpL2phdmEvYW5kcm9pZC9uZXQvd2lmaS9XaWZpU3RhdGVUcmFja2VyLmphdmEKaW5kZXggMzgxMzAxNS4uOGIyY2ZjNiAxMDA2NDQKLS0tIGEvd2lmaS9qYXZhL2FuZHJvaWQvbmV0L3dpZmkvV2lmaVN0YXRlVHJhY2tlci5qYXZhCisrKyBiL3dpZmkvamF2YS9hbmRyb2lkL25ldC93aWZpL1dpZmlTdGF0ZVRyYWNrZXIuamF2YQpAQCAtMTQ4MywxOCArMTQ4MywxOSBAQAogICAgICAqIGRpc2Nvbm5lY3Qgb3Igc3RvcCBjb21tYW5kIHdhcyBpbml0aWF0ZWQuCiAgICAgICovCiAgICAgcHVibGljIHN5bmNocm9uaXplZCBib29sZWFuIGRpc2Nvbm5lY3RBbmRTdG9wKCkgeworICAgICAgICBib29sZWFuIHJldCA9IHRydWU7OwogICAgICAgICBpZiAobVJ1blN0YXRlICE9IFJVTl9TVEFURV9TVE9QUElORyAmJiBtUnVuU3RhdGUgIT0gUlVOX1NUQVRFX1NUT1BQRUQpIHsKICAgICAgICAgICAgIC8vIFRha2UgZG93biBhbnkgb3BlbiBuZXR3b3JrIG5vdGlmaWNhdGlvbnMKICAgICAgICAgICAgIHNldE5vdGlmaWNhdGlvblZpc2libGUoZmFsc2UsIDAsIGZhbHNlLCAwKTsKIAotICAgICAgICAgICAgbVJ1blN0YXRlID0gUlVOX1NUQVRFX1NUT1BQSU5HOwogICAgICAgICAgICAgaWYgKG1XaWZpSW5mby5nZXRTdXBwbGljYW50U3RhdGUoKSA9PSBTdXBwbGljYW50U3RhdGUuRE9STUFOVCkgewotICAgICAgICAgICAgICAgIHJldHVybiBzdG9wRHJpdmVyKCk7CisgICAgICAgICAgICAgICAgcmV0ID0gc3RvcERyaXZlcigpOwogICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gZGlzY29ubmVjdCgpOworICAgICAgICAgICAgICAgIHJldCA9IGRpc2Nvbm5lY3QoKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIG1SdW5TdGF0ZSA9IFJVTl9TVEFURV9TVE9QUElORzsKICAgICAgICAgfQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgcmV0dXJuIHJldDsKICAgICB9CiAKICAgICBwdWJsaWMgc3luY2hyb25pemVkIGJvb2xlYW4gcmVzdGFydCgpIHsKQEAgLTE2MDUsNyArMTYwNiw3IEBACiAgICAgICogQHJldHVybiB7QGNvZGUgdHJ1ZX0gaWYgdGhlIG9wZXJhdGlvbiBzdWNjZWVkcywge0Bjb2RlIGZhbHNlfSBvdGhlcndpc2UKICAgICAgKi8KICAgICBwdWJsaWMgc3luY2hyb25pemVkIGJvb2xlYW4gc2Nhbihib29sZWFuIGZvcmNlQWN0aXZlKSB7Ci0gICAgICAgIGlmIChtV2lmaVN0YXRlLmdldCgpICE9IFdJRklfU1RBVEVfRU5BQkxFRCAmJiAhaXNEcml2ZXJTdG9wcGVkKCkpIHsKKyAgICAgICAgaWYgKG1XaWZpU3RhdGUuZ2V0KCkgIT0gV0lGSV9TVEFURV9FTkFCTEVEIHx8IGlzRHJpdmVyU3RvcHBlZCgpKSB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFdpZmlOYXRpdmUuc2NhbkNvbW1hbmQoZm9yY2VBY3RpdmUpOwpAQCAtMTYyMSw3ICsxNjIyLDcgQEAKICAgICAgKiBAcmV0dXJuIHtAY29kZSB0cnVlfSBpZiB0aGUgb3BlcmF0aW9uIHN1Y2NlZWRzLCB7QGNvZGUgZmFsc2V9IG90aGVyd2lzZQogICAgICAqLwogICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgYm9vbGVhbiBzZXRTY2FuUmVzdWx0SGFuZGxpbmcoaW50IG1vZGUpIHsKLSAgICAgICAgaWYgKG1XaWZpU3RhdGUuZ2V0KCkgIT0gV0lGSV9TVEFURV9FTkFCTEVEICYmICFpc0RyaXZlclN0b3BwZWQoKSkgeworICAgICAgICBpZiAobVdpZmlTdGF0ZS5nZXQoKSAhPSBXSUZJX1NUQVRFX0VOQUJMRUQpIHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gV2lmaU5hdGl2ZS5zZXRTY2FuUmVzdWx0SGFuZGxpbmdDb21tYW5kKG1vZGUpOwpAQCAtMTYzNSw3ICsxNjM2LDcgQEAKICAgICAgKiAwMDpiYjpjYzpkZDpjYzpmZiAgICAgICAyNDEyICAgIDE2NSAgICAgW1dQQS1FQVAtVEtJUF1bV1BBMi1FQVAtQ0NNUF0gICBOZXQyCiAgICAgICovCiAgICAgcHVibGljIHN5bmNocm9uaXplZCBTdHJpbmcgc2NhblJlc3VsdHMoKSB7Ci0gICAgICAgIGlmIChtV2lmaVN0YXRlLmdldCgpICE9IFdJRklfU1RBVEVfRU5BQkxFRCAmJiAhaXNEcml2ZXJTdG9wcGVkKCkpIHsKKyAgICAgICAgaWYgKG1XaWZpU3RhdGUuZ2V0KCkgIT0gV0lGSV9TVEFURV9FTkFCTEVEIHx8IGlzRHJpdmVyU3RvcHBlZCgpKSB7CiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gV2lmaU5hdGl2ZS5zY2FuUmVzdWx0c0NvbW1hbmQoKTsKQEAgLTE2NDcsNyArMTY0OCw3IEBACiAgICAgICogQHJldHVybiB7QGNvZGUgdHJ1ZX0gaWYgdGhlIG9wZXJhdGlvbiBzdWNjZWVkcywge0Bjb2RlIGZhbHNlfSBvdGhlcndpc2UKICAgICAgKi8KICAgICBwdWJsaWMgc3luY2hyb25pemVkIGJvb2xlYW4gc2V0U2Nhbk1vZGUoYm9vbGVhbiBpc1NjYW5Nb2RlQWN0aXZlKSB7Ci0gICAgICAgIGlmIChtV2lmaVN0YXRlLmdldCgpICE9IFdJRklfU1RBVEVfRU5BQkxFRCAmJiAhaXNEcml2ZXJTdG9wcGVkKCkpIHsKKyAgICAgICAgaWYgKG1XaWZpU3RhdGUuZ2V0KCkgIT0gV0lGSV9TVEFURV9FTkFCTEVEIHx8IGlzRHJpdmVyU3RvcHBlZCgpKSB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgaWYgKG1Jc1NjYW5Nb2RlQWN0aXZlICE9IGlzU2Nhbk1vZGVBY3RpdmUpIHsKQEAgLTE2NjIsNyArMTY2Myw3IEBACiAgICAgICogQHJldHVybiB7QGNvZGUgdHJ1ZX0gaWYgdGhlIG9wZXJhdGlvbiBzdWNjZWVkcywge0Bjb2RlIGZhbHNlfSBvdGhlcndpc2UKICAgICAgKi8KICAgICBwdWJsaWMgc3luY2hyb25pemVkIGJvb2xlYW4gZGlzY29ubmVjdCgpIHsKLSAgICAgICAgaWYgKG1XaWZpU3RhdGUuZ2V0KCkgIT0gV0lGSV9TVEFURV9FTkFCTEVEICYmICFpc0RyaXZlclN0b3BwZWQoKSkgeworICAgICAgICBpZiAobVdpZmlTdGF0ZS5nZXQoKSAhPSBXSUZJX1NUQVRFX0VOQUJMRUQgfHwgaXNEcml2ZXJTdG9wcGVkKCkpIHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gV2lmaU5hdGl2ZS5kaXNjb25uZWN0Q29tbWFuZCgpOwpAQCAtMTY3NCw3ICsxNjc1LDcgQEAKICAgICAgKiBAcmV0dXJuIHtAY29kZSB0cnVlfSBpZiB0aGUgb3BlcmF0aW9uIHN1Y2NlZWRzLCB7QGNvZGUgZmFsc2V9IG90aGVyd2lzZQogICAgICAqLwogICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgYm9vbGVhbiByZWNvbm5lY3RDb21tYW5kKCkgewotICAgICAgICBpZiAobVdpZmlTdGF0ZS5nZXQoKSAhPSBXSUZJX1NUQVRFX0VOQUJMRUQgJiYgIWlzRHJpdmVyU3RvcHBlZCgpKSB7CisgICAgICAgIGlmIChtV2lmaVN0YXRlLmdldCgpICE9IFdJRklfU1RBVEVfRU5BQkxFRCB8fCBpc0RyaXZlclN0b3BwZWQoKSkgewogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBXaWZpTmF0aXZlLnJlY29ubmVjdENvbW1hbmQoKTsKQEAgLTE3MzgsNyArMTczOSw3IEBACiAgICAgICogQHJldHVybiB7QGNvZGUgdHJ1ZX0gaWYgdGhlIG9wZXJhdGlvbiBzdWNjZWVkcywge0Bjb2RlIGZhbHNlfSBvdGhlcndpc2UKICAgICAgKi8KICAgICBwdWJsaWMgc3luY2hyb25pemVkIGJvb2xlYW4gcmVhc3NvY2lhdGUoKSB7Ci0gICAgICAgIGlmIChtV2lmaVN0YXRlLmdldCgpICE9IFdJRklfU1RBVEVfRU5BQkxFRCAmJiAhaXNEcml2ZXJTdG9wcGVkKCkpIHsKKyAgICAgICAgaWYgKG1XaWZpU3RhdGUuZ2V0KCkgIT0gV0lGSV9TVEFURV9FTkFCTEVEIHx8IGlzRHJpdmVyU3RvcHBlZCgpKSB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFdpZmlOYXRpdmUucmVhc3NvY2lhdGVDb21tYW5kKCk7CkBAIC0xODM3LDcgKzE4MzgsNyBAQAogICAgICAqIEByZXR1cm4gUlNTSSB2YWx1ZSwgLTEgb24gZmFpbHVyZQogICAgICAqLwogICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgaW50IGdldFJzc2koKSB7Ci0gICAgICAgIGlmIChtV2lmaVN0YXRlLmdldCgpICE9IFdJRklfU1RBVEVfRU5BQkxFRCAmJiAhaXNEcml2ZXJTdG9wcGVkKCkpIHsKKyAgICAgICAgaWYgKG1XaWZpU3RhdGUuZ2V0KCkgIT0gV0lGSV9TVEFURV9FTkFCTEVEIHx8IGlzRHJpdmVyU3RvcHBlZCgpKSB7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFdpZmlOYXRpdmUuZ2V0UnNzaUFwcHJveENvbW1hbmQoKTsKQEAgLTE4NDksNyArMTg1MCw3IEBACiAgICAgICogQHJldHVybiBSU1NJIHZhbHVlLCAtMSBvbiBmYWlsdXJlCiAgICAgICovCiAgICAgcHVibGljIHN5bmNocm9uaXplZCBpbnQgZ2V0UnNzaUFwcHJveCgpIHsKLSAgICAgICAgaWYgKG1XaWZpU3RhdGUuZ2V0KCkgIT0gV0lGSV9TVEFURV9FTkFCTEVEICYmICFpc0RyaXZlclN0b3BwZWQoKSkgeworICAgICAgICBpZiAobVdpZmlTdGF0ZS5nZXQoKSAhPSBXSUZJX1NUQVRFX0VOQUJMRUQgfHwgaXNEcml2ZXJTdG9wcGVkKCkpIHsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gV2lmaU5hdGl2ZS5nZXRSc3NpQXBwcm94Q29tbWFuZCgpOwpAQCAtMTg2MSw3ICsxODYyLDcgQEAKICAgICAgKiBAcmV0dXJuIGxpbmsgc3BlZWQsIC0xIG9uIGZhaWx1cmUKICAgICAgKi8KICAgICBwdWJsaWMgc3luY2hyb25pemVkIGludCBnZXRMaW5rU3BlZWQoKSB7Ci0gICAgICAgIGlmIChtV2lmaVN0YXRlLmdldCgpICE9IFdJRklfU1RBVEVfRU5BQkxFRCAmJiAhaXNEcml2ZXJTdG9wcGVkKCkpIHsKKyAgICAgICAgaWYgKG1XaWZpU3RhdGUuZ2V0KCkgIT0gV0lGSV9TVEFURV9FTkFCTEVEIHx8IGlzRHJpdmVyU3RvcHBlZCgpKSB7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFdpZmlOYXRpdmUuZ2V0TGlua1NwZWVkQ29tbWFuZCgpOwpAQCAtMTg3Myw3ICsxODc0LDcgQEAKICAgICAgKiBAcmV0dXJuIE1BQyBhZGRyZXNzLCBudWxsIG9uIGZhaWx1cmUKICAgICAgKi8KICAgICBwdWJsaWMgc3luY2hyb25pemVkIFN0cmluZyBnZXRNYWNBZGRyZXNzKCkgewotICAgICAgICBpZiAobVdpZmlTdGF0ZS5nZXQoKSAhPSBXSUZJX1NUQVRFX0VOQUJMRUQgJiYgIWlzRHJpdmVyU3RvcHBlZCgpKSB7CisgICAgICAgIGlmIChtV2lmaVN0YXRlLmdldCgpICE9IFdJRklfU1RBVEVfRU5BQkxFRCB8fCBpc0RyaXZlclN0b3BwZWQoKSkgewogICAgICAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFdpZmlOYXRpdmUuZ2V0TWFjQWRkcmVzc0NvbW1hbmQoKTsKQEAgLTE4OTcsNyArMTg5OCw5IEBACiAgICAgICogQHJldHVybiB7QGNvZGUgdHJ1ZX0gaWYgdGhlIG9wZXJhdGlvbiBzdWNjZWVkcywge0Bjb2RlIGZhbHNlfSBvdGhlcndpc2UKICAgICAgKi8KICAgICBwdWJsaWMgc3luY2hyb25pemVkIGJvb2xlYW4gc3RvcERyaXZlcigpIHsKLSAgICAgICAgaWYgKG1XaWZpU3RhdGUuZ2V0KCkgIT0gV0lGSV9TVEFURV9FTkFCTEVEKSB7CisgICAgICAgIC8qIERyaXZlciBzdG9wIHNob3VsZCBub3QgaGFwcGVuIG9ubHkgd2hlbiBzdXBwbGljYW50IGV2ZW50CisgICAgICAgICAqIERSSVZFUl9TVE9QUEVEIGhhcyBhbHJlYWR5IGJlZW4gaGFuZGxlZCAqLworICAgICAgICBpZiAobVdpZmlTdGF0ZS5nZXQoKSAhPSBXSUZJX1NUQVRFX0VOQUJMRUQgfHwgbVJ1blN0YXRlID09IFJVTl9TVEFURV9TVE9QUEVEKSB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFdpZmlOYXRpdmUuc3RvcERyaXZlckNvbW1hbmQoKTsKQEAgLTE5MDksNyArMTkxMiw3IEBACiAgICAgICogQHJldHVybiB7QGNvZGUgdHJ1ZX0gaWYgdGhlIG9wZXJhdGlvbiBzdWNjZWVkcywge0Bjb2RlIGZhbHNlfSBvdGhlcndpc2UKICAgICAgKi8KICAgICBwdWJsaWMgc3luY2hyb25pemVkIGJvb2xlYW4gc3RhcnRQYWNrZXRGaWx0ZXJpbmcoKSB7Ci0gICAgICAgIGlmIChtV2lmaVN0YXRlLmdldCgpICE9IFdJRklfU1RBVEVfRU5BQkxFRCAmJiAhaXNEcml2ZXJTdG9wcGVkKCkpIHsKKyAgICAgICAgaWYgKG1XaWZpU3RhdGUuZ2V0KCkgIT0gV0lGSV9TVEFURV9FTkFCTEVEIHx8IGlzRHJpdmVyU3RvcHBlZCgpKSB7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIFdpZmlOYXRpdmUuc3RhcnRQYWNrZXRGaWx0ZXJpbmcoKTsKQEAgLTE5MjEsNyArMTkyNCw3IEBACiAgICAgICogQHJldHVybiB7QGNvZGUgdHJ1ZX0gaWYgdGhlIG9wZXJhdGlvbiBzdWNjZWVkcywge0Bjb2RlIGZhbHNlfSBvdGhlcndpc2UKICAgICAgKi8KICAgICBwdWJsaWMgc3luY2hyb25pemVkIGJvb2xlYW4gc3RvcFBhY2tldEZpbHRlcmluZygpIHsKLSAgICAgICAgaWYgKG1XaWZpU3RhdGUuZ2V0KCkgIT0gV0lGSV9TVEFURV9FTkFCTEVEICYmICFpc0RyaXZlclN0b3BwZWQoKSkgeworICAgICAgICBpZiAobVdpZmlTdGF0ZS5nZXQoKSAhPSBXSUZJX1NUQVRFX0VOQUJMRUQgfHwgaXNEcml2ZXJTdG9wcGVkKCkpIHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gV2lmaU5hdGl2ZS5zdG9wUGFja2V0RmlsdGVyaW5nKCk7CkBAIC0xOTM1LDcgKzE5MzgsNyBAQAogICAgICAqIEByZXR1cm4ge0Bjb2RlIHRydWV9IGlmIHRoZSBvcGVyYXRpb24gc3VjY2VlZHMsIHtAY29kZSBmYWxzZX0gb3RoZXJ3aXNlCiAgICAgICovCiAgICAgcHVibGljIHN5bmNocm9uaXplZCBib29sZWFuIHNldFBvd2VyTW9kZShpbnQgbW9kZSkgewotICAgICAgICBpZiAobVdpZmlTdGF0ZS5nZXQoKSAhPSBXSUZJX1NUQVRFX0VOQUJMRUQgJiYgIWlzRHJpdmVyU3RvcHBlZCgpKSB7CisgICAgICAgIGlmIChtV2lmaVN0YXRlLmdldCgpICE9IFdJRklfU1RBVEVfRU5BQkxFRCB8fCBpc0RyaXZlclN0b3BwZWQoKSkgewogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBXaWZpTmF0aXZlLnNldFBvd2VyTW9kZUNvbW1hbmQobW9kZSk7CkBAIC0xOTQ4LDcgKzE5NTEsNyBAQAogICAgICAqIHRoZSBudW1iZXIgb2YgY2hhbm5lbHMgaXMgaW52YWxpZC4KICAgICAgKi8KICAgICBwdWJsaWMgc3luY2hyb25pemVkIGJvb2xlYW4gc2V0TnVtQWxsb3dlZENoYW5uZWxzKCkgewotICAgICAgICBpZiAobVdpZmlTdGF0ZS5nZXQoKSAhPSBXSUZJX1NUQVRFX0VOQUJMRUQgJiYgIWlzRHJpdmVyU3RvcHBlZCgpKSB7CisgICAgICAgIGlmIChtV2lmaVN0YXRlLmdldCgpICE9IFdJRklfU1RBVEVfRU5BQkxFRCB8fCBpc0RyaXZlclN0b3BwZWQoKSkgewogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIHRyeSB7CkBAIC0xOTczLDcgKzE5NzYsNyBAQAogICAgICAqIHtAY29kZSBudW1DaGFubmVsc30gaXMgb3V0c2lkZSB0aGUgdmFsaWQgcmFuZ2UuCiAgICAgICovCiAgICAgcHVibGljIHN5bmNocm9uaXplZCBib29sZWFuIHNldE51bUFsbG93ZWRDaGFubmVscyhpbnQgbnVtQ2hhbm5lbHMpIHsKLSAgICAgICAgaWYgKG1XaWZpU3RhdGUuZ2V0KCkgIT0gV0lGSV9TVEFURV9FTkFCTEVEICYmICFpc0RyaXZlclN0b3BwZWQoKSkgeworICAgICAgICBpZiAobVdpZmlTdGF0ZS5nZXQoKSAhPSBXSUZJX1NUQVRFX0VOQUJMRUQgfHwgaXNEcml2ZXJTdG9wcGVkKCkpIHsKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBtTnVtQWxsb3dlZENoYW5uZWxzID0gbnVtQ2hhbm5lbHM7CkBAIC0xOTg2LDcgKzE5ODksNyBAQAogICAgICAqIEByZXR1cm4gY2hhbm5lbCBjb3VudCwgLTEgb24gZmFpbHVyZQogICAgICAqLwogICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgaW50IGdldE51bUFsbG93ZWRDaGFubmVscygpIHsKLSAgICAgICAgaWYgKG1XaWZpU3RhdGUuZ2V0KCkgIT0gV0lGSV9TVEFURV9FTkFCTEVEICYmICFpc0RyaXZlclN0b3BwZWQoKSkgeworICAgICAgICBpZiAobVdpZmlTdGF0ZS5nZXQoKSAhPSBXSUZJX1NUQVRFX0VOQUJMRUQgfHwgaXNEcml2ZXJTdG9wcGVkKCkpIHsKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gV2lmaU5hdGl2ZS5nZXROdW1BbGxvd2VkQ2hhbm5lbHNDb21tYW5kKCk7CkBAIC0yMDAyLDcgKzIwMDUsNyBAQAogICAgICAqIEByZXR1cm4ge0Bjb2RlIHRydWV9IGlmIHRoZSBvcGVyYXRpb24gc3VjY2VlZHMsIHtAY29kZSBmYWxzZX0gb3RoZXJ3aXNlCiAgICAgICovCiAgICAgcHVibGljIHN5bmNocm9uaXplZCBib29sZWFuIHNldEJsdWV0b290aENvZXhpc3RlbmNlTW9kZShpbnQgbW9kZSkgewotICAgICAgICBpZiAobVdpZmlTdGF0ZS5nZXQoKSAhPSBXSUZJX1NUQVRFX0VOQUJMRUQgJiYgIWlzRHJpdmVyU3RvcHBlZCgpKSB7CisgICAgICAgIGlmIChtV2lmaVN0YXRlLmdldCgpICE9IFdJRklfU1RBVEVfRU5BQkxFRCB8fCBpc0RyaXZlclN0b3BwZWQoKSkgewogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBXaWZpTmF0aXZlLnNldEJsdWV0b290aENvZXhpc3RlbmNlTW9kZUNvbW1hbmQobW9kZSk7CkBAIC0yMDE2LDcgKzIwMTksNyBAQAogICAgICAqIEBwYXJhbSBpc0JsdWV0b290aFBsYXlpbmcgd2hldGhlciB0byBlbmFibGUgb3IgZGlzYWJsZSB0aGlzIG1vZGUKICAgICAgKi8KICAgICBwdWJsaWMgc3luY2hyb25pemVkIHZvaWQgc2V0Qmx1ZXRvb3RoU2Nhbk1vZGUoYm9vbGVhbiBpc0JsdWV0b290aFBsYXlpbmcpIHsKLSAgICAgICAgaWYgKG1XaWZpU3RhdGUuZ2V0KCkgIT0gV0lGSV9TVEFURV9FTkFCTEVEICYmICFpc0RyaXZlclN0b3BwZWQoKSkgeworICAgICAgICBpZiAobVdpZmlTdGF0ZS5nZXQoKSAhPSBXSUZJX1NUQVRFX0VOQUJMRUQgfHwgaXNEcml2ZXJTdG9wcGVkKCkpIHsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICBXaWZpTmF0aXZlLnNldEJsdWV0b290aENvZXhpc3RlbmNlU2Nhbk1vZGVDb21tYW5kKGlzQmx1ZXRvb3RoUGxheWluZyk7CkBAIC0yMzIzLDcgKzIzMjYsNyBAQAogICAgICAgICAgKiBAcmV0dXJuIFdoZXRoZXIgdG8gZGlzYWJsZSBjb2V4aXN0ZW5jZSBtb2RlLgogICAgICAgICAgKi8KICAgICAgICAgcHJpdmF0ZSBib29sZWFuIHNob3VsZERpc2FibGVDb2V4aXN0ZW5jZU1vZGUoKSB7Ci0gICAgICAgICAgICBpbnQgc3RhdGUgPSBtQmx1ZXRvb3RoSGVhZHNldC5nZXRTdGF0ZSgpOworICAgICAgICAgICAgaW50IHN0YXRlID0gbUJsdWV0b290aEhlYWRzZXQuZ2V0U3RhdGUobUJsdWV0b290aEhlYWRzZXQuZ2V0Q3VycmVudEhlYWRzZXQoKSk7CiAgICAgICAgICAgICByZXR1cm4gc3RhdGUgPT0gQmx1ZXRvb3RoSGVhZHNldC5TVEFURV9ESVNDT05ORUNURUQ7CiAgICAgICAgIH0KICAgICB9Cg==